summaryrefslogtreecommitdiffstats
path: root/Tools
diff options
context:
space:
mode:
authorKonstantin Tokarev <annulen@yandex.ru>2016-08-25 19:20:41 +0300
committerKonstantin Tokarev <annulen@yandex.ru>2017-02-02 12:30:55 +0000
commit6882a04fb36642862b11efe514251d32070c3d65 (patch)
treeb7959826000b061fd5ccc7512035c7478742f7b0 /Tools
parentab6df191029eeeb0b0f16f127d553265659f739e (diff)
Imported QtWebKit TP3 (git b57bc6801f1876c3220d5a4bfea33d620d477443)
Change-Id: I3b1d8a2808782c9f34d50240000e20cb38d3680f Reviewed-by: Konstantin Tokarev <annulen@yandex.ru>
Diffstat (limited to 'Tools')
-rwxr-xr-xTools/BuildSlaveSupport/build-launcher-app120
-rwxr-xr-xTools/BuildSlaveSupport/build-launcher-dmg118
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/Makefile19
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/README2
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac22
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth.py115
-rwxr-xr-xTools/BuildSlaveSupport/build.webkit.org-config/committer_auth_unittest.py220
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/config.json319
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser.py54
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py91
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg954
-rwxr-xr-xTools/BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py415
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js65
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js47
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js110
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js34
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css91
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js202
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js81
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js66
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js97
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html81
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon.icobin766 -> 0 bytes
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html72
-rwxr-xr-xTools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-green.pngbin781 -> 0 bytes
-rwxr-xr-xTools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-red.pngbin701 -> 0 bytes
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/partytime.gifbin37561 -> 0 bytes
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html61
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html46
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html103
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js91
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js80
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot_unittests.js35
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder.js240
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder_unittests.js269
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js121
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm_unittests.js160
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector.js115
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector_unittests.js168
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm.js64
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm_unittests.js87
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestHistoryAnalyzer.js180
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js145
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NRWTResultsParser.js99
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm.js66
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js81
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ORWTResultsParser.js86
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/PersistentCache.js88
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm.js71
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm_unittests.js94
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Trac.js174
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js178
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities_unittests.js127
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js432
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBugzilla.js56
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBuildbot.js42
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js464
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js474
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/bugzilla_unittests.js233
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js190
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js1197
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js95
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js90
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js180
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js345
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js40
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js106
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js153
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js247
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js254
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js97
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net_unittests.js71
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js168
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js679
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js608
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js164
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/trac_unittests.js345
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js296
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js124
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js76
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js157
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js145
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js262
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js337
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js166
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js180
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js474
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js207
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js203
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/TestFailures.css119
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css103
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css80
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/main.css333
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css234
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css72
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css49
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/pixelzoomer.css63
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css204
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html56
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css382
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/default.css538
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt13
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/templates/builder.html118
-rwxr-xr-xTools/BuildSlaveSupport/build.webkit.org-config/templates/root.html30
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild.py129
-rw-r--r--Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py70
-rw-r--r--Tools/BuildSlaveSupport/built-product-archive207
-rwxr-xr-xTools/BuildSlaveSupport/delete-stale-build-files87
-rw-r--r--Tools/BuildSlaveSupport/download-built-product56
-rw-r--r--Tools/BuildSlaveSupport/gtk/README48
-rwxr-xr-xTools/BuildSlaveSupport/gtk/buildbot/log/run38
-rwxr-xr-xTools/BuildSlaveSupport/gtk/buildbot/run77
-rw-r--r--Tools/BuildSlaveSupport/gtk/daemontools-buildbot.conf45
-rwxr-xr-xTools/BuildSlaveSupport/gtk/pulseaudio/run24
-rwxr-xr-xTools/BuildSlaveSupport/kill-old-processes119
-rw-r--r--Tools/BuildSlaveSupport/test-result-archive90
-rwxr-xr-xTools/BuildSlaveSupport/wait-for-SVN-server.py68
-rwxr-xr-xTools/BuildSlaveSupport/win/kill-old-processes58
-rw-r--r--Tools/CLWrapper/CLWrapper.cpp52
-rw-r--r--Tools/CLWrapper/CLWrapper.sln20
-rw-r--r--Tools/CLWrapper/CLWrapper.vcproj201
-rw-r--r--Tools/CMakeLists.txt45
-rw-r--r--Tools/CSSTestSuiteHarness/harness/harness.css308
-rw-r--r--Tools/CSSTestSuiteHarness/harness/harness.html262
-rw-r--r--Tools/CSSTestSuiteHarness/harness/harness.js1902
-rw-r--r--Tools/ChangeLog-2009-06-1625221
-rw-r--r--Tools/ChangeLog-2010-05-2435303
-rw-r--r--Tools/ChangeLog-2011-02-1632779
-rw-r--r--Tools/ChangeLog-2012-05-2272869
-rw-r--r--Tools/ChangeLog-2012-10-0228362
-rw-r--r--Tools/ChangeLog-2013-04-2439024
-rw-r--r--Tools/CodeCoverage/results-template.html358
-rw-r--r--Tools/CygwinDownloader/cygwin-downloader.py158
-rw-r--r--Tools/CygwinDownloader/cygwin-downloader.zipbin2978720 -> 0 bytes
-rwxr-xr-xTools/CygwinDownloader/make-zip.sh30
-rw-r--r--Tools/CygwinDownloader/setup.py4
-rw-r--r--Tools/DumpRenderTree/AccessibilityController.cpp27
-rw-r--r--Tools/DumpRenderTree/AccessibilityController.h16
-rw-r--r--Tools/DumpRenderTree/AccessibilityTextMarker.h8
-rw-r--r--Tools/DumpRenderTree/AccessibilityUIElement.cpp656
-rw-r--r--Tools/DumpRenderTree/AccessibilityUIElement.h79
-rw-r--r--Tools/DumpRenderTree/CMakeLists.txt129
-rw-r--r--Tools/DumpRenderTree/DefaultPolicyDelegate.m34
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.h6
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln56
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj282
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters197
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeApple.props11
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeCommon.props16
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebug.props10
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props17
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj230
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props17
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherDebug.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherProduction.props12
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePostBuild.cmd1
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePreBuild.cmd20
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeProduction.props14
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props10
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props17
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj191
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommon.props14
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommonWinCairo.props14
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebug.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebugWinCairo.props9
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj172
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props17
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherDebug.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherProduction.props12
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPostBuild.cmd1
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPreBuild.cmd6
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffProduction.props12
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffReleaseWinCairo.props9
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.def4
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.rc102
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj225
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters139
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props16
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginDebug.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPostBuild.cmd1
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPreBuild.cmd6
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginProduction.props12
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props8
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/resource.h14
-rw-r--r--Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj1327
-rw-r--r--Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h4
-rw-r--r--Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m38
-rw-r--r--Tools/DumpRenderTree/DumpRenderTreePrefix.h22
-rw-r--r--Tools/DumpRenderTree/ForwardingHeaders/runtime/ArrayBufferView.h1
-rw-r--r--Tools/DumpRenderTree/ForwardingHeaders/runtime/JSArrayBufferView.h1
-rw-r--r--[-rwxr-xr-x]Tools/DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h0
-rw-r--r--Tools/DumpRenderTree/ForwardingHeaders/runtime/TypedArrayInlines.h1
-rw-r--r--Tools/DumpRenderTree/GCController.cpp2
-rw-r--r--Tools/DumpRenderTree/GCController.h4
-rw-r--r--Tools/DumpRenderTree/JavaScriptThreading.cpp36
-rw-r--r--Tools/DumpRenderTree/JavaScriptThreading.h2
-rw-r--r--Tools/DumpRenderTree/Makefile9
-rw-r--r--Tools/DumpRenderTree/PixelDumpSupport.cpp4
-rw-r--r--Tools/DumpRenderTree/PixelDumpSupport.h2
-rw-r--r--Tools/DumpRenderTree/PlatformQt.cmake55
-rw-r--r--Tools/DumpRenderTree/StorageTrackerDelegate.h37
-rw-r--r--Tools/DumpRenderTree/StorageTrackerDelegate.mm82
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt18
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h (renamed from Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npapi.h)0
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h (renamed from Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npfunctions.h)0
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h (renamed from Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npruntime.h)0
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp44
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h2
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm100
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp19
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h7
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp1
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp2
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp1
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/URLRedirect.cpp167
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp107
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp82
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/SupportsCarbonEventModel.cpp62
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/CallJSThatDestroysPlugin.cpp112
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DrawsGradient.cpp118
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DumpWindowRect.cpp66
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp73
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp188
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp78
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp98
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowlessPaintRectCoordinates.cpp83
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist69
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp58
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.cpp130
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.h61
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp76
-rw-r--r--Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h51
-rw-r--r--Tools/DumpRenderTree/TestRunner.cpp300
-rw-r--r--Tools/DumpRenderTree/TestRunner.h65
-rw-r--r--Tools/DumpRenderTree/WorkQueue.cpp7
-rw-r--r--Tools/DumpRenderTree/WorkQueue.h8
-rw-r--r--Tools/DumpRenderTree/WorkQueueItem.h6
-rw-r--r--Tools/DumpRenderTree/atk/AccessibilityCallbacks.h35
-rw-r--r--Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp170
-rw-r--r--Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp121
-rw-r--r--Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp1070
-rw-r--r--Tools/DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp84
-rw-r--r--Tools/DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp651
-rw-r--r--Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp987
-rw-r--r--Tools/DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h158
-rw-r--r--Tools/DumpRenderTree/blackberry/EventSender.cpp451
-rw-r--r--Tools/DumpRenderTree/blackberry/EventSender.h29
-rw-r--r--Tools/DumpRenderTree/blackberry/GCControllerBlackBerry.cpp39
-rw-r--r--Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp145
-rw-r--r--Tools/DumpRenderTree/blackberry/PNGImageEncoder.h26
-rw-r--r--Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp105
-rw-r--r--Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h52
-rw-r--r--Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp713
-rw-r--r--Tools/DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp91
-rwxr-xr-xTools/DumpRenderTree/blackberry/build12
-rw-r--r--Tools/DumpRenderTree/blackberry/src.pro16
-rw-r--r--Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp93
-rw-r--r--Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h81
-rw-r--r--Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp211
-rw-r--r--Tools/DumpRenderTree/cf/WebArchiveDumpSupport.h41
-rw-r--r--Tools/DumpRenderTree/cg/ImageDiffCG.cpp265
-rw-r--r--Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp113
-rw-r--r--Tools/DumpRenderTree/cg/PixelDumpSupportCG.h84
-rw-r--r--Tools/DumpRenderTree/config.h52
-rw-r--r--Tools/DumpRenderTree/efl/AccessibilityControllerEfl.cpp77
-rw-r--r--Tools/DumpRenderTree/efl/AccessibilityUIElementEfl.cpp54
-rw-r--r--Tools/DumpRenderTree/efl/CMakeLists.txt143
-rw-r--r--Tools/DumpRenderTree/efl/DumpHistoryItem.cpp134
-rw-r--r--Tools/DumpRenderTree/efl/DumpHistoryItem.h33
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTree.cpp484
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp873
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h148
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeEfl.h45
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp236
-rw-r--r--Tools/DumpRenderTree/efl/DumpRenderTreeView.h32
-rw-r--r--Tools/DumpRenderTree/efl/EditingCallbacks.cpp187
-rw-r--r--Tools/DumpRenderTree/efl/EditingCallbacks.h37
-rw-r--r--Tools/DumpRenderTree/efl/EventSender.cpp1035
-rw-r--r--Tools/DumpRenderTree/efl/EventSender.h41
-rw-r--r--Tools/DumpRenderTree/efl/FontManagement.cpp140
-rw-r--r--Tools/DumpRenderTree/efl/FontManagement.h31
-rw-r--r--Tools/DumpRenderTree/efl/GCControllerEfl.cpp49
-rw-r--r--Tools/DumpRenderTree/efl/JSStringUtils.cpp38
-rw-r--r--Tools/DumpRenderTree/efl/JSStringUtils.h38
-rw-r--r--Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp97
-rw-r--r--Tools/DumpRenderTree/efl/TestRunnerEfl.cpp850
-rw-r--r--Tools/DumpRenderTree/efl/TextInputController.cpp178
-rw-r--r--Tools/DumpRenderTree/efl/TextInputController.h37
-rw-r--r--Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp79
-rw-r--r--Tools/DumpRenderTree/fonts/SampleFont.sfont223
-rw-r--r--Tools/DumpRenderTree/fonts/WebKit Layout Tests 2.ttfbin28812 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKit Layout Tests.ttfbin28780 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttfbin28512 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttfbin28512 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttfbin28440 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttfbin28424 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttfbin28460 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttfbin28384 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp74
-rw-r--r--Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp50
-rw-r--r--Tools/DumpRenderTree/gtk/DumpRenderTree.cpp1535
-rw-r--r--Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h48
-rw-r--r--Tools/DumpRenderTree/gtk/EditingCallbacks.cpp202
-rw-r--r--Tools/DumpRenderTree/gtk/EditingCallbacks.h35
-rw-r--r--Tools/DumpRenderTree/gtk/EventSender.cpp999
-rw-r--r--Tools/DumpRenderTree/gtk/EventSender.h42
-rw-r--r--Tools/DumpRenderTree/gtk/GCControllerGtk.cpp50
-rw-r--r--Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp115
-rw-r--r--Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp78
-rw-r--r--Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h51
-rw-r--r--Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp942
-rw-r--r--Tools/DumpRenderTree/gtk/TextInputController.cpp215
-rw-r--r--Tools/DumpRenderTree/gtk/TextInputController.h37
-rw-r--r--Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp102
-rw-r--r--Tools/DumpRenderTree/gtk/fonts/AHEM____.TTFbin12480 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fonbin8368 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/gtk/fonts/fonts.conf419
-rw-r--r--Tools/DumpRenderTree/ios/AccessibilityControllerIOS.mm128
-rw-r--r--Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm811
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityCommonMac.h47
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityCommonMac.mm52
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm143
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.h48
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.mm131
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityTextMarkerMac.mm81
-rw-r--r--Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm1577
-rw-r--r--Tools/DumpRenderTree/mac/AppleScriptController.h39
-rw-r--r--Tools/DumpRenderTree/mac/AppleScriptController.m127
-rw-r--r--Tools/DumpRenderTree/mac/CheckedMalloc.cpp92
-rw-r--r--Tools/DumpRenderTree/mac/CheckedMalloc.h31
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/Base.xcconfig56
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig41
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig28
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig24
-rw-r--r--Tools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig29
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTree.mm1488
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h53
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm146
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreeMac.h72
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.h38
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m211
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreeWindow.h52
-rw-r--r--Tools/DumpRenderTree/mac/DumpRenderTreeWindow.mm128
-rw-r--r--Tools/DumpRenderTree/mac/EditingDelegate.h38
-rw-r--r--Tools/DumpRenderTree/mac/EditingDelegate.mm192
-rw-r--r--Tools/DumpRenderTree/mac/EventSendingController.h55
-rw-r--r--Tools/DumpRenderTree/mac/EventSendingController.mm962
-rw-r--r--Tools/DumpRenderTree/mac/FrameLoadDelegate.h42
-rw-r--r--Tools/DumpRenderTree/mac/FrameLoadDelegate.mm466
-rw-r--r--Tools/DumpRenderTree/mac/GCControllerMac.mm49
-rw-r--r--Tools/DumpRenderTree/mac/HistoryDelegate.h32
-rw-r--r--Tools/DumpRenderTree/mac/HistoryDelegate.mm81
-rw-r--r--Tools/DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h1
-rw-r--r--Tools/DumpRenderTree/mac/LayoutTestHelper.m211
-rw-r--r--Tools/DumpRenderTree/mac/MockGeolocationProvider.h49
-rw-r--r--Tools/DumpRenderTree/mac/MockGeolocationProvider.mm111
-rw-r--r--Tools/DumpRenderTree/mac/MockWebNotificationProvider.h58
-rw-r--r--Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm151
-rw-r--r--Tools/DumpRenderTree/mac/NavigationController.h39
-rw-r--r--Tools/DumpRenderTree/mac/NavigationController.m112
-rw-r--r--Tools/DumpRenderTree/mac/ObjCController.h38
-rw-r--r--Tools/DumpRenderTree/mac/ObjCController.m296
-rw-r--r--Tools/DumpRenderTree/mac/ObjCPlugin.h36
-rw-r--r--Tools/DumpRenderTree/mac/ObjCPlugin.m232
-rw-r--r--Tools/DumpRenderTree/mac/ObjCPluginFunction.h34
-rw-r--r--Tools/DumpRenderTree/mac/ObjCPluginFunction.m37
-rw-r--r--Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c42
-rw-r--r--Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm54
-rw-r--r--Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c1167
-rw-r--r--Tools/DumpRenderTree/mac/PerlSupport/Makefile82
-rw-r--r--Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm196
-rw-r--r--Tools/DumpRenderTree/mac/PolicyDelegate.h41
-rw-r--r--Tools/DumpRenderTree/mac/PolicyDelegate.mm141
-rw-r--r--Tools/DumpRenderTree/mac/ResourceLoadDelegate.h35
-rw-r--r--Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm276
-rw-r--r--Tools/DumpRenderTree/mac/TestRunnerMac.mm1119
-rw-r--r--Tools/DumpRenderTree/mac/TextInputController.h42
-rw-r--r--Tools/DumpRenderTree/mac/TextInputController.m459
-rw-r--r--Tools/DumpRenderTree/mac/UIDelegate.h42
-rw-r--r--Tools/DumpRenderTree/mac/UIDelegate.mm321
-rw-r--r--Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm77
-rw-r--r--Tools/DumpRenderTree/mac/WorkQueueItemMac.mm97
-rw-r--r--Tools/DumpRenderTree/qt/DumpRenderTree.pro60
-rw-r--r--Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp2
-rwxr-xr-xTools/DumpRenderTree/qt/DumpRenderTreeQt.cpp33
-rw-r--r--Tools/DumpRenderTree/qt/EventSenderQt.h2
-rw-r--r--Tools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro62
-rw-r--r--Tools/DumpRenderTree/qt/TestRunnerQt.cpp71
-rw-r--r--Tools/DumpRenderTree/qt/TestRunnerQt.h2
-rw-r--r--Tools/DumpRenderTree/qt/fonts/AHEM____.TTFbin12480 -> 0 bytes
-rw-r--r--Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp391
-rw-r--r--Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp835
-rw-r--r--Tools/DumpRenderTree/win/DRTDataObject.cpp381
-rw-r--r--Tools/DumpRenderTree/win/DRTDataObject.h71
-rw-r--r--Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp145
-rw-r--r--Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.h66
-rw-r--r--Tools/DumpRenderTree/win/DRTDropSource.cpp86
-rw-r--r--Tools/DumpRenderTree/win/DRTDropSource.h48
-rw-r--r--Tools/DumpRenderTree/win/DraggingInfo.h67
-rw-r--r--Tools/DumpRenderTree/win/DumpRenderTree.cpp1445
-rw-r--r--Tools/DumpRenderTree/win/DumpRenderTreeWin.h71
-rw-r--r--Tools/DumpRenderTree/win/EditingDelegate.cpp424
-rw-r--r--Tools/DumpRenderTree/win/EditingDelegate.h176
-rw-r--r--Tools/DumpRenderTree/win/EventSender.cpp809
-rw-r--r--Tools/DumpRenderTree/win/EventSender.h43
-rw-r--r--Tools/DumpRenderTree/win/FrameLoadDelegate.cpp443
-rw-r--r--Tools/DumpRenderTree/win/FrameLoadDelegate.h177
-rw-r--r--Tools/DumpRenderTree/win/GCControllerWin.cpp61
-rw-r--r--Tools/DumpRenderTree/win/HistoryDelegate.cpp221
-rw-r--r--Tools/DumpRenderTree/win/HistoryDelegate.h72
-rw-r--r--Tools/DumpRenderTree/win/ImageDiffCairo.cpp260
-rw-r--r--Tools/DumpRenderTree/win/ImageDiffWin.cpp33
-rw-r--r--Tools/DumpRenderTree/win/MD5.cpp78
-rw-r--r--Tools/DumpRenderTree/win/MD5.h45
-rw-r--r--Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp99
-rw-r--r--Tools/DumpRenderTree/win/PolicyDelegate.cpp187
-rw-r--r--Tools/DumpRenderTree/win/PolicyDelegate.h82
-rw-r--r--Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp372
-rw-r--r--Tools/DumpRenderTree/win/ResourceLoadDelegate.h119
-rw-r--r--Tools/DumpRenderTree/win/TestRunnerWin.cpp1214
-rwxr-xr-xTools/DumpRenderTree/win/TextInputController.cpp212
-rwxr-xr-xTools/DumpRenderTree/win/TextInputController.h59
-rwxr-xr-xTools/DumpRenderTree/win/TextInputControllerWin.cpp170
-rw-r--r--Tools/DumpRenderTree/win/UIDelegate.cpp667
-rw-r--r--Tools/DumpRenderTree/win/UIDelegate.h415
-rw-r--r--Tools/DumpRenderTree/win/WorkQueueItemWin.cpp168
-rwxr-xr-xTools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh60
-rwxr-xr-xTools/EWSTools/GoogleComputeEngine/build-commit-queue.sh64
-rwxr-xr-xTools/EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh61
-rwxr-xr-xTools/EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh68
-rwxr-xr-xTools/EWSTools/GoogleComputeEngine/findzone.sh5
-rwxr-xr-xTools/EWSTools/boot.sh35
-rwxr-xr-xTools/EWSTools/build-boot-cmd.sh35
-rwxr-xr-xTools/EWSTools/build-repo.sh61
-rwxr-xr-xTools/EWSTools/build-vm.sh63
-rwxr-xr-xTools/EWSTools/configure-clang-linux.sh34
-rwxr-xr-xTools/EWSTools/configure-git-svn.sh42
-rwxr-xr-xTools/EWSTools/configure-git-user.sh45
-rwxr-xr-xTools/EWSTools/configure-svn-auth.sh56
-rwxr-xr-xTools/EWSTools/configure-svn-config.sh27
-rw-r--r--Tools/EWSTools/screen-config4
-rwxr-xr-xTools/EWSTools/setup-commit-queue.sh56
-rwxr-xr-xTools/EWSTools/start-queue-mac.sh74
-rwxr-xr-xTools/EWSTools/start-queue-win.sh52
-rwxr-xr-xTools/EWSTools/start-queue.sh86
-rw-r--r--Tools/EWSTools/ubuntu-ews-packages61
-rw-r--r--Tools/EWebLauncher/CMakeLists.txt47
-rw-r--r--Tools/EWebLauncher/ControlTheme/CMakeLists.txt11
-rw-r--r--Tools/EWebLauncher/ControlTheme/entry.edc143
-rw-r--r--Tools/EWebLauncher/main.c1050
-rw-r--r--Tools/EWebLauncher/url_bar.c150
-rw-r--r--Tools/EWebLauncher/url_bar.h51
-rw-r--r--Tools/EWebLauncher/url_utils.c62
-rw-r--r--Tools/EWebLauncher/url_utils.h42
-rw-r--r--Tools/GNUmakefile.am432
-rw-r--r--Tools/GtkLauncher/LauncherInspectorWindow.c108
-rw-r--r--Tools/GtkLauncher/LauncherInspectorWindow.h51
-rw-r--r--Tools/GtkLauncher/main.c560
-rw-r--r--Tools/GtkLauncher/simple.svg15
-rw-r--r--Tools/GtkLauncher/text.html9
-rw-r--r--Tools/ImageDiff/CMakeLists.txt5
-rw-r--r--Tools/ImageDiff/ImageDiff.pro14
-rw-r--r--Tools/ImageDiff/PlatformEfl.cmake19
-rw-r--r--Tools/ImageDiff/PlatformQt.cmake11
-rw-r--r--Tools/ImageDiff/efl/ImageDiff.cpp368
-rw-r--r--Tools/ImageDiff/gtk/ImageDiff.cpp236
-rw-r--r--Tools/ImageDiff/qt/ImageDiff.cpp2
-rw-r--r--Tools/MIDLWrapper/MIDLWrapper.cpp86
-rw-r--r--Tools/MIDLWrapper/MIDLWrapper.sln20
-rw-r--r--Tools/MIDLWrapper/MIDLWrapper.vcproj201
-rw-r--r--Tools/Makefile23
-rw-r--r--Tools/MiniBrowser/Configurations/Base.xcconfig49
-rw-r--r--Tools/MiniBrowser/Configurations/DebugRelease.xcconfig33
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowser.xcconfig26
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserCFLite.vsprops11
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserCommon.vsprops16
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops11
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserDebug.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops13
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops8
-rw-r--r--Tools/MiniBrowser/Configurations/WebBundle.xcconfig26
-rw-r--r--Tools/MiniBrowser/MBToolbarItem.m35
-rw-r--r--Tools/MiniBrowser/Makefile21
-rw-r--r--Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj399
-rw-r--r--Tools/MiniBrowser/MiniBrowserWebProcessPlugIn.h34
-rw-r--r--Tools/MiniBrowser/efl/CMakeLists.txt63
-rw-r--r--Tools/MiniBrowser/efl/main.c1998
-rw-r--r--Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c346
-rw-r--r--Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h49
-rw-r--r--Tools/MiniBrowser/gtk/BrowserDownloadsBar.c276
-rw-r--r--Tools/MiniBrowser/gtk/BrowserDownloadsBar.h51
-rw-r--r--Tools/MiniBrowser/gtk/BrowserSettingsDialog.c190
-rw-r--r--Tools/MiniBrowser/gtk/BrowserSettingsDialog.h50
-rw-r--r--Tools/MiniBrowser/gtk/BrowserWindow.c685
-rw-r--r--Tools/MiniBrowser/gtk/BrowserWindow.h52
-rw-r--r--Tools/MiniBrowser/gtk/CMakeLists.txt51
-rw-r--r--Tools/MiniBrowser/gtk/GNUmakefile.am73
-rw-r--r--Tools/MiniBrowser/gtk/browser-marshal.list1
-rw-r--r--Tools/MiniBrowser/gtk/main.c286
-rw-r--r--Tools/MiniBrowser/mac/AppDelegate.h34
-rw-r--r--Tools/MiniBrowser/mac/AppDelegate.m242
-rw-r--r--Tools/MiniBrowser/mac/BrowserWindow.xib1558
-rw-r--r--Tools/MiniBrowser/mac/BrowserWindowController.h79
-rw-r--r--Tools/MiniBrowser/mac/BrowserWindowController.m69
-rw-r--r--Tools/MiniBrowser/mac/Info.plist32
-rw-r--r--Tools/MiniBrowser/mac/MainMenu.xib2790
-rw-r--r--Tools/MiniBrowser/mac/MiniBrowser_Prefix.pch38
-rw-r--r--Tools/MiniBrowser/mac/WK1BrowserWindowController.h35
-rw-r--r--Tools/MiniBrowser/mac/WK1BrowserWindowController.m294
-rw-r--r--Tools/MiniBrowser/mac/WK2BrowserWindowController.h36
-rw-r--r--Tools/MiniBrowser/mac/WK2BrowserWindowController.m847
-rw-r--r--Tools/MiniBrowser/mac/WebBundle/Info.plist22
-rw-r--r--Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m106
-rw-r--r--Tools/MiniBrowser/mac/main.m31
-rw-r--r--Tools/MiniBrowser/qt/MiniBrowser.pro38
-rw-r--r--Tools/MiniBrowser/qt/raw/DerivedSources.pri6
-rw-r--r--Tools/MiniBrowser/qt/raw/MiniBrowserRaw.pro9
-rw-r--r--Tools/MiniBrowser/qt/raw/Target.pri14
-rw-r--r--Tools/QtTestBrowser/CMakeLists.txt68
-rw-r--r--Tools/QtTestBrowser/QtTestBrowser.pro57
-rw-r--r--Tools/QtTestBrowser/launcherwindow.cpp80
-rw-r--r--Tools/QtTestBrowser/launcherwindow.h87
-rw-r--r--Tools/QtTestBrowser/locationedit.h2
-rw-r--r--Tools/QtTestBrowser/mainwindow.h8
-rw-r--r--Tools/QtTestBrowser/qttestbrowser.cpp19
-rw-r--r--Tools/QtTestBrowser/urlloader.h2
-rw-r--r--Tools/QtTestBrowser/utils.cpp2
-rw-r--r--Tools/QtTestBrowser/utils.h2
-rw-r--r--Tools/QtTestBrowser/webpage.cpp10
-rw-r--r--Tools/QtTestBrowser/webpage.h16
-rw-r--r--Tools/QtTestBrowser/webview.h8
-rw-r--r--Tools/QueueStatusServer/__init__.py1
-rw-r--r--Tools/QueueStatusServer/app.yaml15
-rw-r--r--Tools/QueueStatusServer/config/__init__.py1
-rw-r--r--Tools/QueueStatusServer/config/charts.py61
-rw-r--r--Tools/QueueStatusServer/config/logging.py30
-rw-r--r--Tools/QueueStatusServer/config/messages.py33
-rw-r--r--Tools/QueueStatusServer/config/queues.py42
-rw-r--r--Tools/QueueStatusServer/cron.yaml8
-rw-r--r--Tools/QueueStatusServer/filters/__init__.py1
-rw-r--r--Tools/QueueStatusServer/filters/webkit_extras.py75
-rw-r--r--Tools/QueueStatusServer/handlers/__init__.py3
-rw-r--r--Tools/QueueStatusServer/handlers/activebots.py56
-rw-r--r--Tools/QueueStatusServer/handlers/dashboard.py64
-rw-r--r--Tools/QueueStatusServer/handlers/gc.py44
-rw-r--r--Tools/QueueStatusServer/handlers/nextpatch.py61
-rw-r--r--Tools/QueueStatusServer/handlers/patch.py53
-rw-r--r--Tools/QueueStatusServer/handlers/patchstatus.py40
-rw-r--r--Tools/QueueStatusServer/handlers/queuecharts.py151
-rw-r--r--Tools/QueueStatusServer/handlers/queuestatus.py117
-rw-r--r--Tools/QueueStatusServer/handlers/queuestatus_unittest.py62
-rw-r--r--Tools/QueueStatusServer/handlers/recentstatus.py94
-rw-r--r--Tools/QueueStatusServer/handlers/releasepatch.py66
-rw-r--r--Tools/QueueStatusServer/handlers/showresults.py41
-rw-r--r--Tools/QueueStatusServer/handlers/statusbubble.py85
-rw-r--r--Tools/QueueStatusServer/handlers/statusbubble_unittest.py62
-rw-r--r--Tools/QueueStatusServer/handlers/submittoews.py68
-rw-r--r--Tools/QueueStatusServer/handlers/svnrevision.py40
-rw-r--r--Tools/QueueStatusServer/handlers/syncqueuelogs.py42
-rw-r--r--Tools/QueueStatusServer/handlers/updatebase.py41
-rw-r--r--Tools/QueueStatusServer/handlers/updatestatus.py70
-rw-r--r--Tools/QueueStatusServer/handlers/updatesvnrevision.py53
-rw-r--r--Tools/QueueStatusServer/handlers/updateworkitems.py87
-rw-r--r--Tools/QueueStatusServer/index.yaml74
-rw-r--r--Tools/QueueStatusServer/loggers/__init__.py1
-rw-r--r--Tools/QueueStatusServer/loggers/recordbotevent.py39
-rw-r--r--Tools/QueueStatusServer/loggers/recordpatchevent.py114
-rw-r--r--Tools/QueueStatusServer/main.py86
-rw-r--r--Tools/QueueStatusServer/model/__init__.py3
-rw-r--r--Tools/QueueStatusServer/model/activeworkitems.py97
-rw-r--r--Tools/QueueStatusServer/model/activeworkitems_unittest.py64
-rw-r--r--Tools/QueueStatusServer/model/attachment.py123
-rw-r--r--Tools/QueueStatusServer/model/patchlog.py70
-rw-r--r--Tools/QueueStatusServer/model/queuelog.py88
-rw-r--r--Tools/QueueStatusServer/model/queuepropertymixin.py39
-rw-r--r--Tools/QueueStatusServer/model/queuepropertymixin_unittest.py52
-rw-r--r--Tools/QueueStatusServer/model/queues.py93
-rw-r--r--Tools/QueueStatusServer/model/queues_unittest.py77
-rw-r--r--Tools/QueueStatusServer/model/queuestatus.py45
-rw-r--r--Tools/QueueStatusServer/model/svnrevision.py35
-rw-r--r--Tools/QueueStatusServer/model/warninglog.py47
-rw-r--r--Tools/QueueStatusServer/model/workitems.py77
-rw-r--r--Tools/QueueStatusServer/model/workitems_unittest.py45
-rw-r--r--Tools/QueueStatusServer/stylesheets/charts.css8
-rw-r--r--Tools/QueueStatusServer/stylesheets/dashboard.css127
-rw-r--r--Tools/QueueStatusServer/stylesheets/main.css26
-rw-r--r--Tools/QueueStatusServer/templates/activebots.html33
-rw-r--r--Tools/QueueStatusServer/templates/dashboard.html44
-rw-r--r--Tools/QueueStatusServer/templates/includes/singlequeuestatus.html9
-rw-r--r--Tools/QueueStatusServer/templates/patch.html21
-rw-r--r--Tools/QueueStatusServer/templates/queuecharts.html284
-rw-r--r--Tools/QueueStatusServer/templates/queuestatus.html79
-rw-r--r--Tools/QueueStatusServer/templates/recentstatus.html30
-rw-r--r--Tools/QueueStatusServer/templates/releasepatch.html3
-rw-r--r--Tools/QueueStatusServer/templates/statusbubble.html96
-rw-r--r--Tools/QueueStatusServer/templates/submittoews.html3
-rw-r--r--Tools/QueueStatusServer/templates/updatestatus.html21
-rw-r--r--Tools/QueueStatusServer/templates/updatesvnrevision.html8
-rw-r--r--Tools/QueueStatusServer/templates/updateworkitems.html8
-rw-r--r--Tools/Scripts/SpacingHeuristics.pm101
-rw-r--r--Tools/Scripts/VCSUtils.pm187
-rwxr-xr-xTools/Scripts/add-include135
-rwxr-xr-xTools/Scripts/bencher2098
-rwxr-xr-xTools/Scripts/bisect-builds451
-rwxr-xr-xTools/Scripts/build-api-tests74
-rwxr-xr-xTools/Scripts/build-dumprendertree80
-rwxr-xr-xTools/Scripts/build-jsc97
-rwxr-xr-xTools/Scripts/build-webkit272
-rwxr-xr-xTools/Scripts/build-webkittestrunner73
-rwxr-xr-xTools/Scripts/check-Xcode-source-file-types168
-rwxr-xr-xTools/Scripts/check-dom-results141
-rwxr-xr-xTools/Scripts/check-for-exit-time-destructors152
-rwxr-xr-xTools/Scripts/check-for-global-initializers167
-rwxr-xr-xTools/Scripts/check-for-inappropriate-files-in-framework70
-rwxr-xr-xTools/Scripts/check-for-inappropriate-macros-in-external-headers77
-rwxr-xr-xTools/Scripts/check-for-inappropriate-objc-class-names114
-rwxr-xr-xTools/Scripts/check-for-weak-vtables-and-externals120
-rwxr-xr-xTools/Scripts/check-for-webkit-framework-include-consistency104
-rwxr-xr-xTools/Scripts/check-inspector-strings170
-rwxr-xr-xTools/Scripts/check-webkit-style48
-rwxr-xr-xTools/Scripts/clean-header-guards53
-rwxr-xr-xTools/Scripts/commit-log-editor371
-rwxr-xr-xTools/Scripts/compare-timing-files88
-rwxr-xr-xTools/Scripts/configure-github-as-upstream35
-rwxr-xr-xTools/Scripts/convert-test-expectations19
-rwxr-xr-xTools/Scripts/copy-webkitlibraries-to-product-directory68
-rwxr-xr-xTools/Scripts/create-exports5
-rwxr-xr-xTools/Scripts/debug-minibrowser40
-rwxr-xr-xTools/Scripts/debug-safari40
-rwxr-xr-xTools/Scripts/debug-test-runner37
-rwxr-xr-xTools/Scripts/display-profiler-output938
-rwxr-xr-xTools/Scripts/do-file-rename116
-rwxr-xr-xTools/Scripts/do-webcore-rename245
-rwxr-xr-xTools/Scripts/dump-webkit-tests-run52
-rwxr-xr-xTools/Scripts/ensure-valid-python70
-rwxr-xr-xTools/Scripts/execAppWithEnv38
-rwxr-xr-xTools/Scripts/export-w3c-performance-wg-tests80
-rwxr-xr-xTools/Scripts/extract-localizable-js-strings158
-rwxr-xr-xTools/Scripts/extract-localizable-strings393
-rwxr-xr-xTools/Scripts/filter-build-webkit237
-rwxr-xr-xTools/Scripts/find-extra-includes102
-rwxr-xr-xTools/Scripts/find-included-framework-headers30
-rwxr-xr-xTools/Scripts/generate-coverage-data182
-rwxr-xr-xTools/Scripts/generate-qt-inspector-resource53
-rwxr-xr-xTools/Scripts/generate-win32-export-forwards53
-rwxr-xr-xTools/Scripts/git-add-reviewer387
-rwxr-xr-xTools/Scripts/import-w3c-performance-wg-tests84
-rwxr-xr-xTools/Scripts/import-w3c-tests35
-rwxr-xr-xTools/Scripts/lint-test-expectations37
-rwxr-xr-xTools/Scripts/lint-webkitpy34
-rwxr-xr-xTools/Scripts/make-new-script-test120
-rwxr-xr-xTools/Scripts/make-script-test-wrappers136
-rwxr-xr-xTools/Scripts/malloc-tree210
-rwxr-xr-xTools/Scripts/new-run-webkit-httpd99
-rwxr-xr-xTools/Scripts/new-run-webkit-tests33
-rwxr-xr-xTools/Scripts/new-run-webkit-websocketserver120
-rwxr-xr-xTools/Scripts/num-cpus6
-rwxr-xr-xTools/Scripts/old-run-webkit-tests2893
-rwxr-xr-xTools/Scripts/parallelcl224
-rwxr-xr-xTools/Scripts/parse-malloc-history177
-rwxr-xr-xTools/Scripts/prepare-ChangeLog2013
-rwxr-xr-xTools/Scripts/read-checksum-from-png39
-rwxr-xr-xTools/Scripts/report-include-statistics114
-rwxr-xr-xTools/Scripts/resolve-ChangeLogs496
-rwxr-xr-xTools/Scripts/roll-over-ChangeLogs47
-rwxr-xr-xTools/Scripts/run-api-tests339
-rwxr-xr-xTools/Scripts/run-bindings-tests57
-rwxr-xr-xTools/Scripts/run-efl-tests64
-rwxr-xr-xTools/Scripts/run-fast-jsc161
-rwxr-xr-xTools/Scripts/run-gtk-tests233
-rwxr-xr-xTools/Scripts/run-iexploder-tests142
-rwxr-xr-xTools/Scripts/run-inspector-perf-tests.py41
-rwxr-xr-xTools/Scripts/run-javascriptcore-tests214
-rwxr-xr-xTools/Scripts/run-jsc58
-rwxr-xr-xTools/Scripts/run-launcher90
-rwxr-xr-xTools/Scripts/run-leaks218
-rwxr-xr-xTools/Scripts/run-mangleme-tests176
-rwxr-xr-xTools/Scripts/run-minibrowser40
-rwxr-xr-xTools/Scripts/run-pageloadtest92
-rwxr-xr-xTools/Scripts/run-perf-tests40
-rwxr-xr-xTools/Scripts/run-qtwebkit-tests437
-rwxr-xr-xTools/Scripts/run-regexp-tests126
-rwxr-xr-xTools/Scripts/run-safari43
-rwxr-xr-xTools/Scripts/run-sunspider126
-rwxr-xr-xTools/Scripts/run-test-runner37
-rwxr-xr-xTools/Scripts/run-test-webkit-api40
-rwxr-xr-xTools/Scripts/run-webkit-app46
-rwxr-xr-xTools/Scripts/run-webkit-httpd97
-rwxr-xr-xTools/Scripts/run-webkit-tests100
-rwxr-xr-xTools/Scripts/run-webkit-websocketserver88
-rwxr-xr-xTools/Scripts/sampstat98
-rwxr-xr-xTools/Scripts/set-webkit-configuration79
-rwxr-xr-xTools/Scripts/show-pretty-diff79
-rwxr-xr-xTools/Scripts/sort-Xcode-project-file172
-rwxr-xr-xTools/Scripts/split-file-by-class159
-rwxr-xr-xTools/Scripts/sunspider-compare-results133
-rwxr-xr-xTools/Scripts/svn-apply475
-rwxr-xr-xTools/Scripts/svn-create-patch429
-rwxr-xr-xTools/Scripts/svn-unapply283
-rwxr-xr-xTools/Scripts/sync-master-with-upstream46
-rwxr-xr-xTools/Scripts/test-webkit-scripts86
-rwxr-xr-xTools/Scripts/test-webkitperl59
-rwxr-xr-xTools/Scripts/test-webkitpy32
-rwxr-xr-xTools/Scripts/test-webkitruby34
-rwxr-xr-xTools/Scripts/update-iexploder-cssproperties129
-rwxr-xr-xTools/Scripts/update-javascriptcore-test-results73
-rw-r--r--Tools/Scripts/update-qtwebkit-win-libs41
-rwxr-xr-xTools/Scripts/update-webgl-conformance-tests36
-rwxr-xr-xTools/Scripts/update-webkit130
-rwxr-xr-xTools/Scripts/update-webkit-auxiliary-libs40
-rwxr-xr-xTools/Scripts/update-webkit-dependency77
-rwxr-xr-xTools/Scripts/update-webkit-libs-jhbuild130
-rwxr-xr-xTools/Scripts/update-webkit-localizable-strings49
-rwxr-xr-xTools/Scripts/update-webkit-support-libs149
-rwxr-xr-xTools/Scripts/update-webkit-wincairo-libs41
-rwxr-xr-xTools/Scripts/update-webkitefl-libs23
-rwxr-xr-xTools/Scripts/update-webkitgtk-libs24
-rwxr-xr-xTools/Scripts/validate-committer-lists289
-rwxr-xr-xTools/Scripts/webkit-build-directory15
-rwxr-xr-xTools/Scripts/webkit-patch86
-rwxr-xr-xTools/Scripts/webkit-tools-completion.sh114
-rwxr-xr-xTools/Scripts/webkitdirs.pm2278
-rw-r--r--Tools/Scripts/webkitperl/FeatureList.pm276
-rw-r--r--Tools/Scripts/webkitperl/LoadAsModule.pm80
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl525
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl92
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl87
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl336
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl267
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl1277
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl121
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl486
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl63
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl674
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl94
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl443
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl288
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl805
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl257
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl136
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl56
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl75
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl92
-rw-r--r--Tools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl128
-rw-r--r--Tools/Scripts/webkitperl/features.pm96
-rw-r--r--Tools/Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl120
-rw-r--r--Tools/Scripts/webkitperl/httpd.pm347
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl131
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt221
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp389
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt96
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css85
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt59
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css47
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt321
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests.java168
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt136
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js150
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt86
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl143
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt131
-rw-r--r--Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py97
-rw-r--r--Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl162
-rw-r--r--Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl126
-rw-r--r--Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl76
-rw-r--r--Tools/Scripts/webkitpy/__init__.py13
-rw-r--r--Tools/Scripts/webkitpy/bindings/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/bindings/main.py187
-rw-r--r--Tools/Scripts/webkitpy/common/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/__init__.py3
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py274
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py162
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/changelog.py459
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py667
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/checkout.py173
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/checkout_mock.py113
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py260
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/commitinfo.py100
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/commitinfo_unittest.py61
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/diff_parser.py193
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/diff_parser_unittest.py175
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/diff_test_data.py80
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/__init__.py8
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/commitmessage.py62
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/detection.py83
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/detection_unittest.py51
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/git.py514
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/scm.py249
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py135
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py1600
-rw-r--r--Tools/Scripts/webkitpy/common/checkout/scm/svn.py380
-rw-r--r--Tools/Scripts/webkitpy/common/checksvnconfigfile.py65
-rw-r--r--Tools/Scripts/webkitpy/common/config/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/config/committers.py273
-rw-r--r--Tools/Scripts/webkitpy/common/config/committers_unittest.py365
-rw-r--r--Tools/Scripts/webkitpy/common/config/committervalidator.py97
-rw-r--r--Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py44
-rw-r--r--Tools/Scripts/webkitpy/common/config/contributionareas.py212
-rw-r--r--Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py61
-rw-r--r--Tools/Scripts/webkitpy/common/config/contributors.json4184
-rw-r--r--Tools/Scripts/webkitpy/common/config/ews.json56
-rw-r--r--Tools/Scripts/webkitpy/common/config/irc.py31
-rw-r--r--Tools/Scripts/webkitpy/common/config/orderfile8
-rw-r--r--Tools/Scripts/webkitpy/common/config/ports.py232
-rw-r--r--Tools/Scripts/webkitpy/common/config/ports_mock.py62
-rw-r--r--Tools/Scripts/webkitpy/common/config/ports_unittest.py69
-rw-r--r--Tools/Scripts/webkitpy/common/config/urls.py75
-rw-r--r--Tools/Scripts/webkitpy/common/config/urls_unittest.py61
-rw-r--r--Tools/Scripts/webkitpy/common/config/watchlist402
-rw-r--r--Tools/Scripts/webkitpy/common/editdistance.py47
-rw-r--r--Tools/Scripts/webkitpy/common/editdistance_unittest.py43
-rw-r--r--Tools/Scripts/webkitpy/common/find_files.py84
-rw-r--r--Tools/Scripts/webkitpy/common/find_files_unittest.py61
-rw-r--r--Tools/Scripts/webkitpy/common/host.py100
-rw-r--r--Tools/Scripts/webkitpy/common/host_mock.py77
-rw-r--r--Tools/Scripts/webkitpy/common/lru_cache.py134
-rw-r--r--Tools/Scripts/webkitpy/common/lru_cache_unittest.py93
-rw-r--r--Tools/Scripts/webkitpy/common/memoized.py55
-rw-r--r--Tools/Scripts/webkitpy/common/memoized_unittest.py65
-rw-r--r--Tools/Scripts/webkitpy/common/message_pool.py324
-rw-r--r--Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py70
-rw-r--r--Tools/Scripts/webkitpy/common/net/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/__init__.py7
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/attachment.py121
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/bug.py136
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/bug_unittest.py83
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py848
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py432
-rw-r--r--Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py558
-rw-r--r--Tools/Scripts/webkitpy/common/net/buildbot/__init__.py5
-rw-r--r--Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py489
-rw-r--r--Tools/Scripts/webkitpy/common/net/buildbot/buildbot_mock.py113
-rw-r--r--Tools/Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py475
-rw-r--r--Tools/Scripts/webkitpy/common/net/credentials.py163
-rw-r--r--Tools/Scripts/webkitpy/common/net/credentials_unittest.py208
-rw-r--r--Tools/Scripts/webkitpy/common/net/failuremap.py88
-rw-r--r--Tools/Scripts/webkitpy/common/net/failuremap_unittest.py80
-rw-r--r--Tools/Scripts/webkitpy/common/net/file_uploader.py107
-rw-r--r--Tools/Scripts/webkitpy/common/net/irc/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/net/irc/irc_mock.py39
-rw-r--r--Tools/Scripts/webkitpy/common/net/irc/ircbot.py108
-rw-r--r--Tools/Scripts/webkitpy/common/net/irc/ircproxy.py64
-rw-r--r--Tools/Scripts/webkitpy/common/net/irc/ircproxy_unittest.py43
-rw-r--r--Tools/Scripts/webkitpy/common/net/layouttestresults.py91
-rw-r--r--Tools/Scripts/webkitpy/common/net/layouttestresults_unittest.py47
-rw-r--r--Tools/Scripts/webkitpy/common/net/networktransaction.py68
-rw-r--r--Tools/Scripts/webkitpy/common/net/networktransaction_unittest.py94
-rw-r--r--Tools/Scripts/webkitpy/common/net/regressionwindow.py52
-rw-r--r--Tools/Scripts/webkitpy/common/net/resultsjsonparser.py155
-rw-r--r--Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py93
-rw-r--r--Tools/Scripts/webkitpy/common/net/statusserver.py169
-rw-r--r--Tools/Scripts/webkitpy/common/net/statusserver_mock.py70
-rw-r--r--Tools/Scripts/webkitpy/common/net/statusserver_unittest.py43
-rw-r--r--Tools/Scripts/webkitpy/common/net/unittestresults.py51
-rw-r--r--Tools/Scripts/webkitpy/common/net/unittestresults_unittest.py94
-rw-r--r--Tools/Scripts/webkitpy/common/net/web.py36
-rw-r--r--Tools/Scripts/webkitpy/common/net/web_mock.py58
-rw-r--r--Tools/Scripts/webkitpy/common/newstringio.py39
-rw-r--r--Tools/Scripts/webkitpy/common/newstringio_unittest.py40
-rw-r--r--Tools/Scripts/webkitpy/common/prettypatch.py67
-rw-r--r--Tools/Scripts/webkitpy/common/prettypatch_unittest.py88
-rw-r--r--Tools/Scripts/webkitpy/common/read_checksum_from_png.py39
-rw-r--r--Tools/Scripts/webkitpy/common/read_checksum_from_png_unittest.py39
-rw-r--r--Tools/Scripts/webkitpy/common/system/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/system/autoinstall.py433
-rw-r--r--Tools/Scripts/webkitpy/common/system/crashlogs.py113
-rw-r--r--Tools/Scripts/webkitpy/common/system/crashlogs_unittest.py316
-rw-r--r--Tools/Scripts/webkitpy/common/system/environment.py41
-rw-r--r--Tools/Scripts/webkitpy/common/system/environment_unittest.py39
-rw-r--r--Tools/Scripts/webkitpy/common/system/executive.py522
-rw-r--r--Tools/Scripts/webkitpy/common/system/executive_mock.py192
-rw-r--r--Tools/Scripts/webkitpy/common/system/executive_unittest.py270
-rw-r--r--Tools/Scripts/webkitpy/common/system/file_lock.py84
-rw-r--r--Tools/Scripts/webkitpy/common/system/file_lock_integrationtest.py60
-rw-r--r--Tools/Scripts/webkitpy/common/system/file_lock_mock.py35
-rw-r--r--Tools/Scripts/webkitpy/common/system/fileset.py64
-rw-r--r--Tools/Scripts/webkitpy/common/system/filesystem.py269
-rw-r--r--Tools/Scripts/webkitpy/common/system/filesystem_mock.py474
-rw-r--r--Tools/Scripts/webkitpy/common/system/filesystem_mock_unittest.py84
-rw-r--r--Tools/Scripts/webkitpy/common/system/filesystem_unittest.py264
-rw-r--r--Tools/Scripts/webkitpy/common/system/logtesting.py258
-rw-r--r--Tools/Scripts/webkitpy/common/system/logutils.py211
-rw-r--r--Tools/Scripts/webkitpy/common/system/logutils_unittest.py158
-rw-r--r--Tools/Scripts/webkitpy/common/system/outputcapture.py128
-rw-r--r--Tools/Scripts/webkitpy/common/system/outputcapture_unittest.py59
-rw-r--r--Tools/Scripts/webkitpy/common/system/outputtee.py79
-rw-r--r--Tools/Scripts/webkitpy/common/system/outputtee_unittest.py43
-rw-r--r--Tools/Scripts/webkitpy/common/system/path.py135
-rw-r--r--Tools/Scripts/webkitpy/common/system/path_unittest.py80
-rw-r--r--Tools/Scripts/webkitpy/common/system/platforminfo.py161
-rw-r--r--Tools/Scripts/webkitpy/common/system/platforminfo_mock.py57
-rw-r--r--Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py181
-rw-r--r--Tools/Scripts/webkitpy/common/system/profiler.py210
-rw-r--r--Tools/Scripts/webkitpy/common/system/profiler_unittest.py103
-rw-r--r--Tools/Scripts/webkitpy/common/system/stack_utils.py67
-rw-r--r--Tools/Scripts/webkitpy/common/system/stack_utils_unittest.py72
-rw-r--r--Tools/Scripts/webkitpy/common/system/systemhost.py48
-rw-r--r--Tools/Scripts/webkitpy/common/system/systemhost_mock.py56
-rw-r--r--Tools/Scripts/webkitpy/common/system/urlfetcher.py55
-rw-r--r--Tools/Scripts/webkitpy/common/system/urlfetcher_mock.py46
-rw-r--r--Tools/Scripts/webkitpy/common/system/user.py175
-rw-r--r--Tools/Scripts/webkitpy/common/system/user_mock.py68
-rw-r--r--Tools/Scripts/webkitpy/common/system/user_unittest.py139
-rw-r--r--Tools/Scripts/webkitpy/common/system/workspace.py73
-rw-r--r--Tools/Scripts/webkitpy/common/system/workspace_mock.py37
-rw-r--r--Tools/Scripts/webkitpy/common/system/workspace_unittest.py72
-rw-r--r--Tools/Scripts/webkitpy/common/system/zip_mock.py55
-rw-r--r--Tools/Scripts/webkitpy/common/system/zipfileset.py71
-rw-r--r--Tools/Scripts/webkitpy/common/system/zipfileset_mock.py51
-rw-r--r--Tools/Scripts/webkitpy/common/system/zipfileset_unittest.py94
-rw-r--r--Tools/Scripts/webkitpy/common/thread/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/thread/messagepump.py59
-rw-r--r--Tools/Scripts/webkitpy/common/thread/messagepump_unittest.py83
-rw-r--r--Tools/Scripts/webkitpy/common/thread/threadedmessagequeue.py52
-rw-r--r--Tools/Scripts/webkitpy/common/thread/threadedmessagequeue_unittest.py53
-rw-r--r--Tools/Scripts/webkitpy/common/version_check.py33
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern.py70
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py70
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/changedlinepattern.py41
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py68
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/filenamepattern.py35
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py52
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlist.py75
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlist_mock.py37
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlist_unittest.py277
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py181
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py276
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlistrule.py46
-rw-r--r--Tools/Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py62
-rw-r--r--Tools/Scripts/webkitpy/common/webkit_finder.py65
-rw-r--r--Tools/Scripts/webkitpy/common/webkitunittest.py49
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py175
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py582
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py334
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/manager.py387
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py90
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py342
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py274
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py55
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/layout_package/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py174
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py643
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py231
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py111
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py157
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py306
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py369
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py1022
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py707
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_failures.py223
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py73
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_input.py45
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_results.py74
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_results_unittest.py52
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py260
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py135
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py63
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py80
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py384
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py968
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py192
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py70
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/http_server.py228
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py217
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py58
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py145
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/http_server_unittest.py101
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/httpd2.pem41
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf89
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/servers/websocket_server.py176
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py167
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py99
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py135
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py153
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/printing.py393
-rw-r--r--Tools/Scripts/webkitpy/layout_tests/views/printing_unittest.py187
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/perftest.py433
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py472
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py354
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py562
-rw-r--r--Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py231
-rw-r--r--Tools/Scripts/webkitpy/port/__init__.py35
-rw-r--r--Tools/Scripts/webkitpy/port/apple.py108
-rw-r--r--Tools/Scripts/webkitpy/port/base.py1547
-rw-r--r--Tools/Scripts/webkitpy/port/base_unittest.py507
-rw-r--r--Tools/Scripts/webkitpy/port/builders.py134
-rw-r--r--Tools/Scripts/webkitpy/port/builders_unittest.py41
-rw-r--r--Tools/Scripts/webkitpy/port/config.py141
-rw-r--r--Tools/Scripts/webkitpy/port/config_standalone.py69
-rw-r--r--Tools/Scripts/webkitpy/port/config_unittest.py158
-rw-r--r--Tools/Scripts/webkitpy/port/driver.py562
-rw-r--r--Tools/Scripts/webkitpy/port/driver_unittest.py269
-rw-r--r--Tools/Scripts/webkitpy/port/efl.py136
-rw-r--r--Tools/Scripts/webkitpy/port/efl_unittest.py50
-rw-r--r--Tools/Scripts/webkitpy/port/factory.py128
-rw-r--r--Tools/Scripts/webkitpy/port/factory_unittest.py82
-rw-r--r--Tools/Scripts/webkitpy/port/gtk.py179
-rw-r--r--Tools/Scripts/webkitpy/port/gtk_unittest.py110
-rw-r--r--Tools/Scripts/webkitpy/port/http_lock.py137
-rw-r--r--Tools/Scripts/webkitpy/port/http_lock_unittest.py120
-rw-r--r--Tools/Scripts/webkitpy/port/image_diff.py118
-rw-r--r--Tools/Scripts/webkitpy/port/image_diff_unittest.py57
-rw-r--r--Tools/Scripts/webkitpy/port/leakdetector.py153
-rw-r--r--Tools/Scripts/webkitpy/port/leakdetector_unittest.py152
-rw-r--r--Tools/Scripts/webkitpy/port/mac.py305
-rw-r--r--Tools/Scripts/webkitpy/port/mac_unittest.py257
-rw-r--r--Tools/Scripts/webkitpy/port/mock_drt.py299
-rw-r--r--Tools/Scripts/webkitpy/port/mock_drt_unittest.py267
-rw-r--r--Tools/Scripts/webkitpy/port/port_testcase.py630
-rw-r--r--Tools/Scripts/webkitpy/port/pulseaudio_sanitizer.py85
-rw-r--r--Tools/Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py35
-rw-r--r--Tools/Scripts/webkitpy/port/qt.py190
-rw-r--r--Tools/Scripts/webkitpy/port/qt_unittest.py126
-rw-r--r--Tools/Scripts/webkitpy/port/server_process.py380
-rw-r--r--Tools/Scripts/webkitpy/port/server_process_mock.py77
-rw-r--r--Tools/Scripts/webkitpy/port/server_process_unittest.py152
-rw-r--r--Tools/Scripts/webkitpy/port/test.py610
-rw-r--r--Tools/Scripts/webkitpy/port/win.py284
-rw-r--r--Tools/Scripts/webkitpy/port/win_unittest.py118
-rw-r--r--Tools/Scripts/webkitpy/port/xvfbdriver.py113
-rw-r--r--Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py135
-rw-r--r--Tools/Scripts/webkitpy/pylintrc312
-rw-r--r--Tools/Scripts/webkitpy/style/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/style/checker.py895
-rw-r--r--Tools/Scripts/webkitpy/style/checker_unittest.py893
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/changelog.py94
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py182
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/cmake.py150
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/cmake_unittest.py90
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/common.py74
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/common_unittest.py121
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/cpp.py3761
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py4857
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/jsonchecker.py49
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py111
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/png.py75
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/png_unittest.py131
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/python.py129
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/python_unittest.py80
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/python_unittest_falsepositives.py16
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/python_unittest_input.py4
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/test_expectations.py98
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/test_expectations_unittest.py122
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/text.py51
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/text_unittest.py89
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/watchlist.py51
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/watchlist_unittest.py65
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/xcodeproj.py59
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/xcodeproj_unittest.py69
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/xml.py45
-rw-r--r--Tools/Scripts/webkitpy/style/checkers/xml_unittest.py87
-rw-r--r--Tools/Scripts/webkitpy/style/error_handlers.py164
-rw-r--r--Tools/Scripts/webkitpy/style/error_handlers_unittest.py196
-rw-r--r--Tools/Scripts/webkitpy/style/filereader.py154
-rw-r--r--Tools/Scripts/webkitpy/style/filereader_unittest.py155
-rw-r--r--Tools/Scripts/webkitpy/style/filter.py278
-rw-r--r--Tools/Scripts/webkitpy/style/filter_unittest.py256
-rw-r--r--Tools/Scripts/webkitpy/style/main.py162
-rw-r--r--Tools/Scripts/webkitpy/style/main_unittest.py75
-rw-r--r--Tools/Scripts/webkitpy/style/optparser.py457
-rw-r--r--Tools/Scripts/webkitpy/style/optparser_unittest.py258
-rw-r--r--Tools/Scripts/webkitpy/style/patchreader.py83
-rw-r--r--Tools/Scripts/webkitpy/style/patchreader_unittest.py101
-rw-r--r--Tools/Scripts/webkitpy/test/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/test/finder.py173
-rw-r--r--Tools/Scripts/webkitpy/test/finder_unittest.py126
-rw-r--r--Tools/Scripts/webkitpy/test/main.py237
-rw-r--r--Tools/Scripts/webkitpy/test/main_unittest.py117
-rw-r--r--Tools/Scripts/webkitpy/test/printer.py214
-rw-r--r--Tools/Scripts/webkitpy/test/runner.py82
-rw-r--r--Tools/Scripts/webkitpy/test/runner_unittest.py97
-rw-r--r--Tools/Scripts/webkitpy/test/skip.py52
-rw-r--r--Tools/Scripts/webkitpy/test/skip_unittest.py74
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py2014
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/__init__.py189
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/__init___unittest.py69
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mock.py309
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING28
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py197
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py181
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py229
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py887
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py307
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py393
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py894
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py110
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py182
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py435
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py293
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py254
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py263
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py99
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py219
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py1889
-rwxr-xr-xTools/Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py1139
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py57
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py409
-rw-r--r--Tools/Scripts/webkitpy/thirdparty/ordered_dict.py89
-rw-r--r--Tools/Scripts/webkitpy/to_be_moved/__init__.py10
-rw-r--r--Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py157
-rw-r--r--Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py97
-rw-r--r--Tools/Scripts/webkitpy/tool/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/botinfo.py40
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/botinfo_unittest.py42
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py95
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py583
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/earlywarningsystemtask.py66
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/expectedfailures.py60
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/expectedfailures_unittest.py95
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/feeders.py98
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/feeders_unittest.py80
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py196
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py169
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/irc_command.py319
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py143
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/ircbot.py105
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py158
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py97
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py120
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py253
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/queueengine.py165
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/queueengine_unittest.py183
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/sheriff.py105
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/sheriff_unittest.py89
-rw-r--r--Tools/Scripts/webkitpy/tool/bot/stylequeuetask.py75
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/__init__.py24
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/abstractlocalservercommand.py57
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/adduserstogroups.py65
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/analyzechangelog.py206
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py185
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal.py50
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py55
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/bugfortest.py48
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/bugsearch.py49
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/commandtest.py49
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/data/summary.html455
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/download.py496
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/download_unittest.py357
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py157
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py91
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/findusers.py44
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/gardenomatic.py59
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/newcommitbot.py172
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/newcommitbot_unittest.py129
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/openbugs.py65
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/openbugs_unittest.py50
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/perfalizer.py218
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/perfalizer_unittest.py112
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/prettydiff.py39
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/queries.py611
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/queries_unittest.py299
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/queues.py490
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/queues_unittest.py510
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/queuestest.py107
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/rebaseline.py496
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py401
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/rebaselineserver.py98
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/sheriffbot.py77
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/sheriffbot_unittest.py47
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/stepsequence.py86
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/suggestnominations.py305
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/suggestnominations_unittest.py103
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/upload.py521
-rw-r--r--Tools/Scripts/webkitpy/tool/commands/upload_unittest.py151
-rw-r--r--Tools/Scripts/webkitpy/tool/comments.py42
-rwxr-xr-xTools/Scripts/webkitpy/tool/gcovr1029
-rw-r--r--Tools/Scripts/webkitpy/tool/grammar.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/grammar_unittest.py38
-rw-r--r--Tools/Scripts/webkitpy/tool/main.py108
-rw-r--r--Tools/Scripts/webkitpy/tool/mocktool.py85
-rw-r--r--Tools/Scripts/webkitpy/tool/mocktool_unittest.py55
-rw-r--r--Tools/Scripts/webkitpy/tool/multicommandtool.py311
-rw-r--r--Tools/Scripts/webkitpy/tool/multicommandtool_unittest.py180
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/index.html182
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/loupe.js144
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.css313
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.js577
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/queue.js186
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/util.js104
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/gardeningserver.py117
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py112
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/rebaselineserver.py289
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py311
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py144
-rw-r--r--Tools/Scripts/webkitpy/tool/servers/reflectionhandler_unittest.py70
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/__init__.py64
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/abstractstep.py78
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py80
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py58
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/applypatch.py46
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py43
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/applywatchlist.py67
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/applywatchlist_unittest.py51
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/attachtobug.py49
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/build.py63
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/checkstyle.py67
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py50
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py68
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/closebug.py56
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff.py61
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py40
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/closepatch.py36
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/commit.py108
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/commit_unittest.py68
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/confirmdiff.py77
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/createbug.py56
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/discardlocalchanges.py52
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/discardlocalchanges_unittest.py97
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/editchangelog.py36
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/ensurebugisopenandassigned.py41
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py48
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/haslanded.py120
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py299
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/metastep.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/obsoletepatches.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/options.py60
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/postdiff.py52
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/postdiffforcommit.py39
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/postdiffforrevert.py49
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/preparechangelog.py134
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/preparechangelog_unittest.py133
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert.py58
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py120
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/promptforbugortitle.py45
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/reopenbugafterrollout.py47
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/revertrevision.py35
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/runtests.py114
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/runtests_unittest.py61
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/steps_unittest.py117
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/suggestreviewers.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py46
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/update.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/update_unittest.py60
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py54
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py79
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py92
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py69
-rw-r--r--Tools/Scripts/webkitpy/tool/steps/validatereviewer.py60
-rw-r--r--Tools/Scripts/webkitpy/w3c/__init__.py1
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_converter.py193
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_converter_unittest.py319
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_importer.py450
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_importer_unittest.py79
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_parser.py162
-rw-r--r--Tools/Scripts/webkitpy/w3c/test_parser_unittest.py217
-rw-r--r--Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/fake-data-failing-expected.txt11
-rw-r--r--Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/pass-expected.txt0
-rw-r--r--Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Fail.h29
-rw-r--r--Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Pass.h6
-rwxr-xr-xTools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb74
-rw-r--r--Tools/TestResultServer/app.yaml18
-rw-r--r--Tools/TestResultServer/generate_builders_json.py111
-rw-r--r--Tools/TestResultServer/generate_builders_json_unittest.py109
-rw-r--r--Tools/TestResultServer/handlers/__init__.py1
-rw-r--r--Tools/TestResultServer/handlers/menu.py68
-rw-r--r--Tools/TestResultServer/handlers/testfilehandler.py279
-rw-r--r--Tools/TestResultServer/index.yaml65
-rw-r--r--Tools/TestResultServer/main.py54
-rw-r--r--Tools/TestResultServer/model/__init__.py1
-rwxr-xr-xTools/TestResultServer/model/datastorefile.py150
-rwxr-xr-xTools/TestResultServer/model/jsonresults.py362
-rwxr-xr-xTools/TestResultServer/model/jsonresults_unittest.py698
-rw-r--r--Tools/TestResultServer/model/testfile.py111
-rw-r--r--Tools/TestResultServer/static-dashboards/LICENSE.dygraph.txt22
-rw-r--r--Tools/TestResultServer/static-dashboards/README.dygraph.txt55
-rw-r--r--Tools/TestResultServer/static-dashboards/README.webtreemap.txt63
-rw-r--r--Tools/TestResultServer/static-dashboards/aggregate_results.html62
-rw-r--r--Tools/TestResultServer/static-dashboards/aggregate_results.js273
-rw-r--r--Tools/TestResultServer/static-dashboards/builders.js160
-rw-r--r--Tools/TestResultServer/static-dashboards/builders.jsonp35
-rw-r--r--Tools/TestResultServer/static-dashboards/builders_unittests.js41
-rw-r--r--Tools/TestResultServer/static-dashboards/dashboard_base.js157
-rw-r--r--Tools/TestResultServer/static-dashboards/dygraph-combined.js1
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard.css71
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard.html39
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard.js2511
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded.html83
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js40
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css273
-rw-r--r--Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js637
-rw-r--r--Tools/TestResultServer/static-dashboards/history.js307
-rw-r--r--Tools/TestResultServer/static-dashboards/history_unittests.js65
-rw-r--r--Tools/TestResultServer/static-dashboards/loader.js259
-rw-r--r--Tools/TestResultServer/static-dashboards/loader_unittests.js169
-rw-r--r--Tools/TestResultServer/static-dashboards/run-embedded-unittests.html72
-rw-r--r--Tools/TestResultServer/static-dashboards/run-unittests.html64
-rw-r--r--Tools/TestResultServer/static-dashboards/string.js69
-rw-r--r--Tools/TestResultServer/static-dashboards/timeline_explorer.html116
-rw-r--r--Tools/TestResultServer/static-dashboards/timeline_explorer.js480
-rw-r--r--Tools/TestResultServer/static-dashboards/treemap.html121
-rw-r--r--Tools/TestResultServer/static-dashboards/treemap.js287
-rw-r--r--Tools/TestResultServer/static-dashboards/ui.js225
-rw-r--r--Tools/TestResultServer/static-dashboards/webtreemap.css78
-rw-r--r--Tools/TestResultServer/static-dashboards/webtreemap.js243
-rw-r--r--Tools/TestResultServer/stylesheets/form.css26
-rw-r--r--Tools/TestResultServer/stylesheets/menu.css9
-rw-r--r--Tools/TestResultServer/stylesheets/testfile.css30
-rw-r--r--Tools/TestResultServer/templates/menu.html35
-rw-r--r--Tools/TestResultServer/templates/showfilelist.html58
-rw-r--r--Tools/TestResultServer/templates/showfilelist.jsonp3
-rw-r--r--Tools/TestResultServer/templates/uploadform.html33
-rw-r--r--Tools/TestWebKitAPI/CMakeLists.txt292
-rw-r--r--Tools/TestWebKitAPI/Configurations/Base.xcconfig74
-rw-r--r--Tools/TestWebKitAPI/Configurations/DebugRelease.xcconfig35
-rw-r--r--Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig24
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig30
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops11
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops11
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops16
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops11
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops8
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops8
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops8
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops11
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops8
-rw-r--r--Tools/TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops8
-rw-r--r--Tools/TestWebKitAPI/Counters.cpp34
-rw-r--r--Tools/TestWebKitAPI/Counters.h88
-rw-r--r--Tools/TestWebKitAPI/DerivedSources.pri12
-rw-r--r--Tools/TestWebKitAPI/GNUmakefile.am375
-rw-r--r--Tools/TestWebKitAPI/InjectedBundle-Info.plist22
-rw-r--r--Tools/TestWebKitAPI/InjectedBundle.pri56
-rw-r--r--Tools/TestWebKitAPI/InjectedBundleController.cpp14
-rw-r--r--Tools/TestWebKitAPI/InjectedBundleController.h4
-rw-r--r--Tools/TestWebKitAPI/InjectedBundleMain.cpp9
-rw-r--r--Tools/TestWebKitAPI/InjectedBundleTest.h2
-rw-r--r--Tools/TestWebKitAPI/JavaScriptTest.cpp13
-rw-r--r--Tools/TestWebKitAPI/JavaScriptTest.h13
-rw-r--r--Tools/TestWebKitAPI/Makefile21
-rw-r--r--Tools/TestWebKitAPI/PlatformEfl.cmake130
-rw-r--r--Tools/TestWebKitAPI/PlatformQt.cmake53
-rw-r--r--Tools/TestWebKitAPI/PlatformUtilities.cpp22
-rw-r--r--Tools/TestWebKitAPI/PlatformUtilities.h29
-rw-r--r--Tools/TestWebKitAPI/PlatformWebView.h43
-rw-r--r--Tools/TestWebKitAPI/Test.h16
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.pri22
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.pro11
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.sln29
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj314
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters98
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommon.props17
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommonWinCairo.props17
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebug.props13
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props15
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPostBuild.cmd1
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPreBuild.cmd6
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIProduction.props13
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIRelease.props13
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props15
-rw-r--r--Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj1359
-rw-r--r--Tools/TestWebKitAPI/Tests.pri3
-rw-r--r--Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm69
-rw-r--r--Tools/TestWebKitAPI/Tests/JavaScriptCore/JavaScriptCore.pro8
-rw-r--r--Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp689
-rw-r--r--Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm84
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp11
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/BloomFilter.cpp250
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp554
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Condition.cpp257
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp208
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Deque.cpp89
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp468
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp622
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp277
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp122
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Lock.cpp189
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/MD5.cpp6
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp79
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp6
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/MoveOnly.h98
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/NakedPtr.cpp238
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp271
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Optional.cpp150
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/ParkingLot.cpp275
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp2
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Ref.cpp161
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/RefCounter.cpp158
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/RefLogger.h56
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp406
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp57
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp25
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp2
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp463
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/StringView.cpp736
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/Vector.cpp538
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/VectorBasic.cpp39
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/VectorReverse.cpp55
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/WTF.pro32
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp140
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp187
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp203
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp42
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp91
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp66
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp195
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp71
-rw-r--r--Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm42
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/CSSParser.cpp88
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp283
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp2795
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/DFACombiner.cpp121
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/DFAHelpers.h67
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/DFAMinimizer.cpp121
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/FileSystem.cpp96
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp82
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp42
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp98
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp78
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp119
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp293
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/URL.cpp82
-rw-r--r--Tools/TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp59
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp178
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/Ahem.ttf (renamed from Tools/TestWebKitAPI/Tests/mac/Ahem.ttf)bin12480 -> 12480 bytes
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp87
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CloseThenTerminate.cpp12
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp131
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp52
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp129
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward1.html5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward2.html1
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp27
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp27
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls.cpp11
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp25
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DidNotHandleKeyDown.cpp83
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp23
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp83
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp21
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm168
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/Geolocation.cpp356
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp23
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp19
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp25
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp25
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootOpen_Bundle.cpp65
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen.cpp72
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp71
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp43
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp34
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp17
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp149
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ModalAlertsSPI.cpp123
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp17
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp50
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp109
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp17
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm76
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp26
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp162
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp48
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp20
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp21
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp24
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp31
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp26
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp17
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp163
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp50
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad.cpp83
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad_bundle.cpp81
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing.cpp131
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp76
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp84
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp29
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle.cpp86
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle_Bundle.cpp99
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKConnection.cpp116
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp60
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKImageCreateCGImageCrash.cpp41
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp132
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKPageCopySessionStateWithFiltering.cpp136
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp22
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKPageIsPlayingAudio.cpp152
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp37
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKRetainPtr.cpp58
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp4
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp22
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp9
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WebKit2.pro63
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp32
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp39
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp11
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp17
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html1
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/bundle-file.html16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/close-from-within-create-page.html16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html2
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp125
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp56
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/file-with-mse.html46
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/file-with-video.html18
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPosition.html3
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPositionWithHighAccuracy.html3
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPosition.html3
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPositionWithHighAccuracy.html3
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/getUserMedia.html14
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/input-focus-blur.html18
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm69
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm94
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm69
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp72
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/mouse-button-listener.html30
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/open-and-close-window.html11
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/should-open-external-schemes.html21
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/simple2.html5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/simple3.html5
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/test-mse.mp4bin0 -> 80933 bytes
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/test.mp4bin0 -> 192844 bytes
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/webfont.html15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp85
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp40
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp85
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp124
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp90
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp56
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp45
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.h28
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.html6
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-1.html46
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-2.html32
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-1.html35
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-2.html22
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RemoteObjectRegistry.h48
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/AccessibilityTestServer.cpp58
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/AutocleanupsTest.cpp72
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt135
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp221
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp204
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp300
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp124
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp131
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp80
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/InspectorTestServer.cpp58
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAuthentication.cpp304
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutocleanups.cpp64
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestBackForwardList.cpp417
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp158
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp1043
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp326
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMDOMWindow.cpp152
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp98
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp55
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp52
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp633
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestEditor.cpp42
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp59
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspector.cpp369
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspectorServer.cpp292
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp551
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp284
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestPrinting.cpp304
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp877
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp434
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp1062
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp232
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitAccessibility.cpp224
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp250
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFindController.cpp335
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp268
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp379
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp388
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitVersion.cpp50
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp655
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp894
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebViewEditor.cpp470
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp406
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp121
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h39
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/blank.icobin0 -> 198 bytes
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/boring.html1
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/link-title.js1
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-cert.pem13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-key.pem16
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/webkit2gtk-tests.gresource.xml7
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm58
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp15
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm54
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm57
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp13
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm230
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm55
-rw-r--r--Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm229
-rw-r--r--Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp310
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/0.pngbin1163 -> 0 bytes
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm77
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/AttributedString.mm93
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm72
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.html8
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm82
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/CloseNewWindowInNavigationPolicyDelegate.mm84
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html4
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm115
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm77
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellElementCellAbove.html30
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm61
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.html9
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm92
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm79
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm109
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm90
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/ElementAtPointInWebFrame.mm73
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.html9
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm80
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html9
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm75
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm87
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache1.html10
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache2.html10
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/JSWrapperForNodeInWebFrame.mm96
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html14
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm90
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.html14
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm100
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/OpenNewWindow.html7
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html6
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm160
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm79
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm75
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm103
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.html8
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm121
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm111
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.html1
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.mm73
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm71
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/SubresourceErrorCrash.mm37
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/TypingStyleCrash.mm37
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteURL.mm54
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteZeroPng.mm48
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm287
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm83
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm74
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.html13
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm86
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/acceptsFirstMouse.html23
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/attributedStringCustomFont.html15
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/devicePixelRatio.html23
-rw-r--r--Tools/TestWebKitAPI/Tests/mac/verboseMarkup.html19
-rw-r--r--Tools/TestWebKitAPI/TestsController.cpp33
-rw-r--r--Tools/TestWebKitAPI/TestsController.h6
-rw-r--r--Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h34
-rw-r--r--Tools/TestWebKitAPI/config.h36
-rw-r--r--Tools/TestWebKitAPI/efl/InjectedBundleController.cpp38
-rw-r--r--Tools/TestWebKitAPI/efl/PlatformUtilities.cpp74
-rw-r--r--Tools/TestWebKitAPI/efl/PlatformWebView.cpp124
-rw-r--r--Tools/TestWebKitAPI/efl/main.cpp68
-rw-r--r--Tools/TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp35
-rw-r--r--Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp96
-rw-r--r--Tools/TestWebKitAPI/gtk/PlatformWebViewGtk.cpp148
-rw-r--r--Tools/TestWebKitAPI/gtk/main.cpp36
-rw-r--r--Tools/TestWebKitAPI/ios/mainIOS.mm38
-rw-r--r--Tools/TestWebKitAPI/mac/InjectedBundleControllerMac.mm58
-rw-r--r--Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.h46
-rw-r--r--Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.mm42
-rw-r--r--Tools/TestWebKitAPI/mac/JavaScriptTestMac.mm45
-rw-r--r--Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm92
-rw-r--r--Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm155
-rw-r--r--Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.h30
-rw-r--r--Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m56
-rw-r--r--Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h39
-rw-r--r--Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm48
-rw-r--r--Tools/TestWebKitAPI/mac/TestProtocol.h34
-rw-r--r--Tools/TestWebKitAPI/mac/TestProtocol.mm69
-rw-r--r--Tools/TestWebKitAPI/mac/WebKitAgnosticTest.h69
-rw-r--r--Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm141
-rw-r--r--Tools/TestWebKitAPI/mac/mainMac.mm40
-rw-r--r--Tools/TestWebKitAPI/qt/main.cpp6
-rw-r--r--Tools/TestWebKitAPI/win/HostWindow.cpp84
-rw-r--r--Tools/TestWebKitAPI/win/HostWindow.h52
-rw-r--r--Tools/TestWebKitAPI/win/main.cpp59
-rw-r--r--Tools/Tools.pro51
-rw-r--r--Tools/WebKitLauncher/Configurations/Base.xcconfig37
-rw-r--r--Tools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig26
-rw-r--r--Tools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig29
-rw-r--r--Tools/WebKitLauncher/Info.plist489
-rw-r--r--Tools/WebKitLauncher/Makefile3
-rw-r--r--Tools/WebKitLauncher/VERSION1
-rw-r--r--Tools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj455
-rw-r--r--Tools/WebKitLauncher/WebKitLauncherURLProtocol.h33
-rw-r--r--Tools/WebKitLauncher/WebKitLauncherURLProtocol.m155
-rw-r--r--Tools/WebKitLauncher/WebKitNightlyEnabler.h31
-rw-r--r--Tools/WebKitLauncher/WebKitNightlyEnabler.m236
-rw-r--r--Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.h30
-rw-r--r--Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.m143
-rw-r--r--Tools/WebKitLauncher/main.m274
-rw-r--r--Tools/WebKitLauncher/nightly.webkit.org.public.pem20
-rw-r--r--Tools/WebKitLauncher/start.html17
-rw-r--r--Tools/WebKitLauncher/webkit.icnsbin319035 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/CMakeLists.txt47
-rw-r--r--Tools/WebKitTestRunner/Configurations/Base.xcconfig64
-rw-r--r--Tools/WebKitTestRunner/Configurations/DebugRelease.xcconfig43
-rw-r--r--Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig29
-rw-r--r--Tools/WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops12
-rw-r--r--Tools/WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops12
-rw-r--r--Tools/WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops12
-rw-r--r--Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig28
-rw-r--r--Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops11
-rw-r--r--Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops21
-rw-r--r--Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops11
-rw-r--r--Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops11
-rw-r--r--Tools/WebKitTestRunner/DerivedSources.make15
-rw-r--r--Tools/WebKitTestRunner/DerivedSources.pri12
-rw-r--r--Tools/WebKitTestRunner/EventSenderProxy.h57
-rw-r--r--Tools/WebKitTestRunner/FontWithFeatures.otfbin0 -> 14452 bytes
-rw-r--r--Tools/WebKitTestRunner/FontWithFeatures.ttfbin0 -> 12324 bytes
-rw-r--r--Tools/WebKitTestRunner/GNUmakefile.am174
-rw-r--r--Tools/WebKitTestRunner/GeolocationProviderMock.cpp18
-rw-r--r--Tools/WebKitTestRunner/GeolocationProviderMock.h4
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle-Info.plist22
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp54
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h21
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp2
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h6
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp2
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h6
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp76
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h97
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl4
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl75
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm2
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl12
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl36
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/DerivedSources.pri39
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp530
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h30
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/GCController.cpp8
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp304
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h30
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.pro16
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp8
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp657
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h9
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/Target.pri72
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp449
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/TestRunner.h81
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp10
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp158
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp262
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h60
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp1397
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp32
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp32
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp92
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp157
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp52
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp52
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h40
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp86
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h47
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm52
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm112
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h49
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm146
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerMac.mm36
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerRangeMac.mm36
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm1572
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm276
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm66
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm93
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm70
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp1
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp108
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp58
-rw-r--r--Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp73
-rw-r--r--Tools/WebKitTestRunner/Makefile21
-rw-r--r--Tools/WebKitTestRunner/Options.cpp192
-rw-r--r--Tools/WebKitTestRunner/Options.h79
-rw-r--r--Tools/WebKitTestRunner/PixelDumpSupport.cpp2
-rw-r--r--Tools/WebKitTestRunner/PixelDumpSupport.h2
-rw-r--r--Tools/WebKitTestRunner/PlatformEfl.cmake81
-rw-r--r--Tools/WebKitTestRunner/PlatformWebView.h69
-rw-r--r--Tools/WebKitTestRunner/StringFunctions.h17
-rw-r--r--Tools/WebKitTestRunner/Target.pri45
-rw-r--r--Tools/WebKitTestRunner/TestController.cpp1343
-rw-r--r--Tools/WebKitTestRunner/TestController.h170
-rw-r--r--Tools/WebKitTestRunner/TestInvocation.cpp522
-rw-r--r--Tools/WebKitTestRunner/TestInvocation.h69
-rw-r--r--Tools/WebKitTestRunner/TestOptions.cpp72
-rw-r--r--Tools/WebKitTestRunner/TestOptions.h51
-rw-r--r--Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl60
-rw-r--r--Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp202
-rw-r--r--Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h100
-rw-r--r--Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp200
-rw-r--r--Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h101
-rw-r--r--Tools/WebKitTestRunner/WebKitTestRunner.pro21
-rw-r--r--Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj806
-rw-r--r--Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h15
-rw-r--r--Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h16
-rw-r--r--Tools/WebKitTestRunner/WebNotificationProvider.cpp99
-rw-r--r--Tools/WebKitTestRunner/WebNotificationProvider.h14
-rw-r--r--Tools/WebKitTestRunner/WorkQueueManager.cpp22
-rw-r--r--Tools/WebKitTestRunner/WorkQueueManager.h5
-rw-r--r--Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp152
-rw-r--r--Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp212
-rw-r--r--Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h41
-rw-r--r--Tools/WebKitTestRunner/cg/TestInvocationCG.cpp182
-rw-r--r--Tools/WebKitTestRunner/config.h27
-rw-r--r--Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp561
-rw-r--r--Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp152
-rw-r--r--Tools/WebKitTestRunner/efl/TestControllerEfl.cpp114
-rw-r--r--Tools/WebKitTestRunner/efl/main.cpp59
-rw-r--r--Tools/WebKitTestRunner/fonts/AHEM____.TTFbin12480 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/ColorBits-A.pngbin585 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/SampleFont.sfont223
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKit Layout Tests 2.ttfbin28812 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKit Layout Tests.ttfbin28780 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher100.ttfbin28512 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher200.ttfbin28512 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher300.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher400.ttfbin28440 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher500.ttfbin28424 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher600.ttfbin28460 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher700.ttfbin28384 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher800.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/fonts/WebKitWeightWatcher900.ttfbin28492 -> 0 bytes
-rw-r--r--Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp445
-rw-r--r--Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp129
-rw-r--r--Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp113
-rw-r--r--Tools/WebKitTestRunner/gtk/main.cpp37
-rw-r--r--Tools/WebKitTestRunner/mac/EventSenderProxy.mm443
-rw-r--r--Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm238
-rw-r--r--Tools/WebKitTestRunner/mac/TestControllerMac.mm83
-rw-r--r--Tools/WebKitTestRunner/mac/WebArchiveDumpSupportMac.mm77
-rw-r--r--Tools/WebKitTestRunner/mac/main.mm44
-rw-r--r--Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp4
-rw-r--r--Tools/WebKitTestRunner/qt/TestInvocationQt.cpp22
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundle.vcproj992
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleDebug.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleDebugAll.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops8
-rwxr-xr-xTools/WebKitTestRunner/win/InjectedBundleGenerated.vcproj87
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops15
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundlePostBuild.cmd1
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundlePreBuild.cmd6
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleProduction.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleRelease.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp125
-rw-r--r--Tools/WebKitTestRunner/win/TestControllerWin.cpp225
-rw-r--r--Tools/WebKitTestRunner/win/TestInvocationWin.cpp37
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj540
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncher.vcproj396
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops18
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd36
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd6
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops8
-rw-r--r--Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops8
-rwxr-xr-xTools/WebKitTestRunner/win/build-generated-files.sh42
-rw-r--r--Tools/WebKitTestRunner/win/main.cpp37
-rw-r--r--Tools/WinCELauncher/CMakeLists.txt27
-rw-r--r--Tools/WinCELauncher/main.cpp133
-rw-r--r--Tools/WinLauncher/AccessibilityDelegate.cpp73
-rw-r--r--Tools/WinLauncher/AccessibilityDelegate.h44
-rw-r--r--Tools/WinLauncher/DOMDefaultImpl.h156
-rw-r--r--Tools/WinLauncher/PrintWebUIDelegate.cpp193
-rw-r--r--Tools/WinLauncher/PrintWebUIDelegate.h109
-rw-r--r--Tools/WinLauncher/WinLauncher.cpp712
-rw-r--r--Tools/WinLauncher/WinLauncher.h119
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.exe.manifest45
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.icobin23558 -> 0 bytes
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.rc76
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj183
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters33
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props12
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props12
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props12
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props8
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc137
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj217
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters66
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props16
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props8
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd1
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd6
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props12
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props8
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h28
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd1
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd6
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props12
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props8
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h20
-rw-r--r--Tools/WinLauncher/WinLauncher.vcxproj/small.icobin23558 -> 0 bytes
-rw-r--r--Tools/WinLauncher/resource.h28
-rw-r--r--Tools/WinLauncher/stdafx.cpp33
-rw-r--r--Tools/WinLauncher/stdafx.h69
-rw-r--r--Tools/clang/ReportMemoryUsagePlugin/CMakeLists.txt15
-rw-r--r--Tools/clang/ReportMemoryUsagePlugin/Makefile51
-rw-r--r--Tools/clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp231
-rw-r--r--Tools/clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp151
-rw-r--r--Tools/efl/common.py31
-rwxr-xr-xTools/efl/install-dependencies75
-rw-r--r--Tools/efl/jhbuild.modules346
-rw-r--r--Tools/efl/jhbuildrc80
-rw-r--r--Tools/gdb/webkit.py350
-rw-r--r--Tools/gtk/common.py144
-rwxr-xr-xTools/gtk/find-make-dist-errors108
-rwxr-xr-xTools/gtk/generate-feature-defines-files58
-rwxr-xr-xTools/gtk/generate-gtkdoc212
-rw-r--r--Tools/gtk/gtkdoc.py416
-rwxr-xr-xTools/gtk/install-dependencies188
-rw-r--r--Tools/gtk/jhbuild-optional.modules19
-rw-r--r--Tools/gtk/jhbuild.modules335
-rw-r--r--Tools/gtk/jhbuildrc64
-rw-r--r--Tools/gtk/patches/at-spi2-atk-2.8.0-null-check-after-cleanup.patch22
-rw-r--r--Tools/gtk/patches/libxml2-2.9.0-dtd.patch27
-rw-r--r--Tools/gtk/patches/make-3.82-arg-list-length.patch104
-rw-r--r--Tools/gtk/patches/make-3.82-parallel-build.patch26
-rw-r--r--Tools/gtk/patches/xserver-fix-glx-init.patch14
-rw-r--r--Tools/gtk/patches/xserver-remove-bogus-dependencies.patch43
-rw-r--r--Tools/iExploder/iexploder-1.3.2/CHANGELOG.txt328
-rw-r--r--Tools/iExploder/iexploder-1.3.2/LICENSE.txt20
-rw-r--r--Tools/iExploder/iexploder-1.3.2/README.txt149
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/config.rb6
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/cssproperties.in426
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/cssvalues.in339
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/htmlattrs.in373
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/htmltags.in154
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/htmlvalues.in35
-rwxr-xr-xTools/iExploder/iexploder-1.3.2/htdocs/iexploder.cgi45
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/iexploder.rb337
-rw-r--r--Tools/iExploder/iexploder-1.3.2/htdocs/index.html34
-rwxr-xr-xTools/iExploder/iexploder-1.3.2/htdocs/webserver.rb75
-rwxr-xr-xTools/iExploder/iexploder-1.3.2/tools/lasthit.rb53
-rwxr-xr-xTools/iExploder/iexploder-1.3.2/tools/osx_last_crash.rb48
-rwxr-xr-xTools/iExploder/iexploder-1.3.2/tools/showtest.rb43
-rw-r--r--Tools/iExploder/iexploder-1.7.2/ChangeLog.txt890
-rw-r--r--Tools/iExploder/iexploder-1.7.2/LICENSE.txt202
-rw-r--r--Tools/iExploder/iexploder-1.7.2/README.txt174
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/src/browser_harness.rb389
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/config.yaml54
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-atrules/mozilla6
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-atrules/webkit14
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-properties/dillo98
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-properties/gtkhtml16
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-properties/internet_explorer629
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-properties/mozilla275
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-properties/webkit256
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-pseudo/mozilla60
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-pseudo/webkit100
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-values/dillo93
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-values/gtkhtml18
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-values/mozilla558
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-values/other20
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/css-values/webkit478
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/headers/dillo9
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/headers/gtkhtml0
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/headers/mozilla70
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/headers/webkit30
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/dillo51
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/gtkhtml64
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/internet_explorer618
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/mozilla694
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/other36
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-attrs/webkit284
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-tags/dillo73
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-tags/gtkhtml46
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-tags/mozilla119
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-tags/other8
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-tags/webkit132
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-values/dillo30
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-values/gtkhtml9
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-values/mozilla44
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-values/other16
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/html-values/webkit88
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/src/iexploder.cgi48
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/iexploder.rb792
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/index.html105
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/blank.oggbin3976 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/blank.sndbin16044 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/blank.wavbin80956 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.bmpbin65658 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.gifbin6371 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.icobin67646 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.jngbin9357 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.jpgbin6371 -> 0 bytes
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/src/media/bug.pngbin18668 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.svg16389
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.tiffbin20654 -> 0 bytes
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.xbm174
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/media/bug.xpm390
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/mime-types/dillo14
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/mime-types/mozilla122
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/mime-types/webkit157
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/protocols/dillo4
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/protocols/gtkhtml3
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/protocols/mozilla30
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/protocols/webkit16
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/scanner.rb154
-rw-r--r--Tools/iExploder/iexploder-1.7.2/src/version.rb1
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/src/webserver.rb161
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html47
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-Opera-9.80_Linux_x86_64_en_Presto-2.6.30_Version-10.61-16704-3_108,3.html6
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_Chrome-7.0.529.0-TEST-611-3_36,9.html8
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html11
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-120813-8_72,56,24,8,0.html6
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-121240-3_81,3.html11
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html13
-rw-r--r--Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html14
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/tools/lasthit.rb74
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/tools/osx_last_crash.rb63
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/tools/release_src.sh28
-rwxr-xr-xTools/iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh125
-rwxr-xr-xTools/jhbuild/jhbuild-wrapper122
-rw-r--r--Tools/jhbuild/jhbuildutils.py19
-rw-r--r--Tools/lldb/lldb_webkit.py265
-rw-r--r--Tools/mangleme/LICENSE504
-rw-r--r--Tools/mangleme/Makefile16
-rw-r--r--Tools/mangleme/README20
-rw-r--r--Tools/mangleme/mangle.cgi.c122
-rw-r--r--Tools/mangleme/remangle.cgi.c125
-rw-r--r--Tools/mangleme/tags.h76
-rw-r--r--Tools/qmake/.qmake.cache0
-rw-r--r--Tools/qmake/.qmake.conf2
-rw-r--r--Tools/qmake/README78
-rw-r--r--Tools/qmake/config.tests/README4
-rw-r--r--Tools/qmake/config.tests/fontconfig/fontconfig.cpp31
-rw-r--r--Tools/qmake/config.tests/fontconfig/fontconfig.pro4
-rw-r--r--Tools/qmake/config.tests/gccdepends/empty.cpp0
-rw-r--r--Tools/qmake/config.tests/gccdepends/gccdepends.pro34
-rw-r--r--Tools/qmake/config.tests/glx/glx.cpp36
-rw-r--r--Tools/qmake/config.tests/glx/glx.pro4
-rw-r--r--Tools/qmake/config.tests/gnuld/gnuld.pro4
-rw-r--r--Tools/qmake/config.tests/gnuld/main.cpp5
-rw-r--r--Tools/qmake/config.tests/icu/icu.cpp46
-rw-r--r--Tools/qmake/config.tests/icu/icu.pro22
-rw-r--r--Tools/qmake/config.tests/leveldb/leveldb.cpp28
-rw-r--r--Tools/qmake/config.tests/leveldb/leveldb.pro5
-rw-r--r--Tools/qmake/config.tests/libXcomposite/libXcomposite.cpp36
-rw-r--r--Tools/qmake/config.tests/libXcomposite/libXcomposite.pro3
-rw-r--r--Tools/qmake/config.tests/libXrender/libXrender.cpp37
-rw-r--r--Tools/qmake/config.tests/libXrender/libXrender.pro3
-rw-r--r--Tools/qmake/config.tests/libsqlite3/libsqlite3.cpp34
-rw-r--r--Tools/qmake/config.tests/libsqlite3/libsqlite3.pro5
-rw-r--r--Tools/qmake/config.tests/libwebp/libwebp.cpp33
-rw-r--r--Tools/qmake/config.tests/libwebp/libwebp.pro5
-rw-r--r--Tools/qmake/config.tests/libxml2/libxml2.cpp33
-rw-r--r--Tools/qmake/config.tests/libxml2/libxml2.pro9
-rw-r--r--Tools/qmake/config.tests/libxslt/libxslt.cpp33
-rw-r--r--Tools/qmake/config.tests/libxslt/libxslt.pro9
-rw-r--r--Tools/qmake/config.tests/libzlib/libzlib.cpp32
-rw-r--r--Tools/qmake/config.tests/libzlib/libzlib.pro10
-rw-r--r--Tools/qmake/dump-features.pl27
-rw-r--r--Tools/qmake/mkspecs/features/configure.prf296
-rw-r--r--Tools/qmake/mkspecs/features/default_post.prf320
-rw-r--r--Tools/qmake/mkspecs/features/default_pre.prf113
-rw-r--r--Tools/qmake/mkspecs/features/features.prf189
-rw-r--r--Tools/qmake/mkspecs/features/features.pri129
-rw-r--r--Tools/qmake/mkspecs/features/force_static_libs_as_shared.prf22
-rw-r--r--Tools/qmake/mkspecs/features/functions.prf405
-rw-r--r--Tools/qmake/mkspecs/features/gprof.prf11
-rw-r--r--Tools/qmake/mkspecs/features/icc.prf8
-rw-r--r--Tools/qmake/mkspecs/features/mac/default_post.prf10
-rw-r--r--Tools/qmake/mkspecs/features/mac/default_pre.prf12
-rw-r--r--Tools/qmake/mkspecs/features/minimal_qt.prf32
-rw-r--r--Tools/qmake/mkspecs/features/production_build.prf17
-rw-r--r--Tools/qmake/mkspecs/features/rpath.prf25
-rw-r--r--Tools/qmake/mkspecs/features/unix/default_post.prf71
-rw-r--r--Tools/qmake/mkspecs/features/unix/default_pre.prf18
-rw-r--r--Tools/qmake/mkspecs/features/use_all_in_one_files.prf28
-rw-r--r--Tools/qmake/mkspecs/features/valgrind.prf11
-rw-r--r--Tools/qmake/mkspecs/features/webkit_modules.prf51
-rw-r--r--Tools/qmake/mkspecs/features/win32/default_post.prf45
-rw-r--r--Tools/qmake/mkspecs/features/win32/default_pre.prf10
-rw-r--r--Tools/qmake/mkspecs/modules/angle.prf9
-rw-r--r--Tools/qmake/mkspecs/modules/javascriptcore.prf10
-rw-r--r--Tools/qmake/mkspecs/modules/leveldb.prf9
-rw-r--r--Tools/qmake/mkspecs/modules/webcore.prf9
-rw-r--r--Tools/qmake/mkspecs/modules/webkit1.prf9
-rw-r--r--Tools/qmake/mkspecs/modules/webkit2.prf9
-rw-r--r--Tools/qmake/mkspecs/modules/wtf.prf9
-rwxr-xr-xTools/qt/generate-inspector-qrc.pl137
-rwxr-xr-xTools/qt/generate-version-script.pl63
-rwxr-xr-xTools/qt/install-dependencies104
-rw-r--r--Tools/qt/jhbuild-qt-5.4.modules79
-rw-r--r--Tools/qt/jhbuild-qt-5.6.modules85
-rw-r--r--Tools/qt/jhbuild.modules261
-rw-r--r--Tools/qt/jhbuildrc24
-rw-r--r--Tools/qt/manifest.txt132
-rw-r--r--Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch10
-rw-r--r--Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch (renamed from Tools/gtk/patches/freetype6-2.4.11-truetype-font-height-fix.patch)0
-rw-r--r--Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch133
-rw-r--r--Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch146
-rw-r--r--Tools/qt/patches/icudata-stdlibs.patch15
-rw-r--r--Tools/qt/patches/openwebrtc-no-gtk-doc.patch60
-rw-r--r--Tools/qt/patches/qt-5.4-fontconfig-fix.patch56
-rw-r--r--Tools/qt/patches/qt-fontconfig-fix.patch56
-rw-r--r--Tools/svn-config11
-rwxr-xr-xTools/vcbin/cl.exebin6656 -> 0 bytes
-rwxr-xr-xTools/vcbin/midl.exebin7168 -> 0 bytes
-rw-r--r--Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj131
-rw-r--r--Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj.filters7
-rwxr-xr-xTools/win/AssembleBuildLogs/AssembleLogs.cmd174
-rw-r--r--Tools/win/AssembleBuildLogs/README10
-rw-r--r--Tools/win/DLLLauncher/DLLLauncherMain.cpp213
-rw-r--r--Tools/win/record-memory/main.cpp213
-rw-r--r--Tools/win/record-memory/record-memory.vcxproj275
-rw-r--r--Tools/win/record-memory/record-memory.vcxproj.filters6
-rw-r--r--Tools/win/record-memory/record-memoryCommon.props13
-rw-r--r--Tools/win/record-memory/record-memoryDebug.props13
-rw-r--r--Tools/win/record-memory/record-memoryDebugWinCairo.props13
-rw-r--r--Tools/win/record-memory/record-memoryProduction.props13
-rw-r--r--Tools/win/record-memory/record-memoryRelease.props13
-rw-r--r--Tools/win/record-memory/record-memoryReleaseWinCairo.props13
2186 files changed, 41243 insertions, 525824 deletions
diff --git a/Tools/BuildSlaveSupport/build-launcher-app b/Tools/BuildSlaveSupport/build-launcher-app
deleted file mode 100755
index 35520c5d8..000000000
--- a/Tools/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", "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/Tools/BuildSlaveSupport/build-launcher-dmg b/Tools/BuildSlaveSupport/build-launcher-dmg
deleted file mode 100755
index 4dce7fbdd..000000000
--- a/Tools/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/Tools/BuildSlaveSupport/build.webkit.org-config/Makefile b/Tools/BuildSlaveSupport/build.webkit.org-config/Makefile
deleted file mode 100644
index bd5e74933..000000000
--- a/Tools/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:
- /opt/local/bin/twistd2.5 --no_save -y buildbot.tac
-
-stop:
- kill `cat twistd.pid`
-
-reconfig:
- kill -HUP `cat twistd.pid`
-
-log:
- tail -f twistd.log
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/README b/Tools/BuildSlaveSupport/build.webkit.org-config/README
deleted file mode 100644
index 3ba8a229a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/README
+++ /dev/null
@@ -1,2 +0,0 @@
-Note: This directory is *not* automatically synchronized with Subversion via a post-commit hook.
-Any changes made to code within this directory will need to be manually pushed to build.webkit.org.
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac b/Tools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac
deleted file mode 100644
index e5b45a913..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/buildbot.tac
+++ /dev/null
@@ -1,22 +0,0 @@
-
-from twisted.application import service
-from buildbot.master import BuildMaster
-
-basedir = r'/var/buildbot'
-configfile = r'master.cfg'
-rotateLength = 10000000
-maxRotatedFiles = 100
-umask = 022
-
-application = service.Application('buildmaster')
-try:
- from twisted.python.logfile import LogFile
- from twisted.python.log import ILogObserver, FileLogObserver
- logfile = LogFile.fromFullPath("twistd.log", rotateLength=rotateLength,
- maxRotatedFiles=maxRotatedFiles)
- application.setComponent(ILogObserver, FileLogObserver(logfile).emit)
-except ImportError:
- # probably not yet twisted 8.2.0 and beyond, can't set log yet
- pass
-BuildMaster(basedir, configfile).setServiceParent(application)
-
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth.py b/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth.py
deleted file mode 100644
index cf123a283..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth.py
+++ /dev/null
@@ -1,115 +0,0 @@
-# Copyright (C) 2011 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. 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 INC. 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.
-
-"""An implementation of buildbot.status.web.auth.IAuth for authenticating WebKit committers"""
-
-import ConfigParser
-import buildbot.status.web.auth
-import json
-import zope.interface
-
-from htdigestparser import HTDigestParser
-
-
-class Error(Exception):
- pass
-
-
-class CommitterAuth(buildbot.status.web.auth.AuthBase):
- zope.interface.implements(buildbot.status.web.auth.IAuth)
-
- def __init__(self, auth_json_filename):
- self._auth_json_filename = auth_json_filename
-
- def auth_json(self):
- try:
- with self.open_auth_json_file() as f:
- return json.load(f)
- except IOError, e:
- raise Error('Error opening auth.json file: {0}'.format(e.strerror))
- except ValueError, e:
- raise Error('Error parsing auth.json file: {0}'.format(e.message))
-
- def auth_json_filename(self):
- return self._auth_json_filename
-
- def authenticate(self, username, password):
- try:
- return self.is_webkit_committer(username) and self.is_webkit_trac_user(username, password)
- except Error, e:
- self.err = e.message
- return False
-
- def is_webkit_committer(self, username):
- try:
- if username not in self.webkit_committers():
- self.err = 'Invalid username/password'
- return False
- return True
- except ConfigParser.Error:
- raise Error('Error parsing WebKit committers file')
- except IOError, e:
- raise Error('Error opening WebKit committers file: {0}'.format(e.strerror))
-
- def is_webkit_trac_user(self, username, password):
- try:
- with self.open_trac_credentials_file() as f:
- htdigest = HTDigestParser(f)
- except IOError, e:
- raise Error('Error opening Trac credentials file: {0}'.format(e.strerror))
-
- if not htdigest.entries():
- raise Error('Error parsing Trac credentials file')
-
- if not htdigest.authenticate(username, 'Mac OS Forge', password):
- self.err = 'Invalid username/password'
- return False
-
- return True
-
- # These three methods exist for ease of testing.
- def open_auth_json_file(self):
- return open(self.auth_json_filename())
-
- def open_trac_credentials_file(self):
- return open(self.trac_credentials_filename())
-
- def open_webkit_committers_file(self):
- return open(self.webkit_committers_filename())
-
- def trac_credentials_filename(self):
- try:
- return self.auth_json()['trac_credentials']
- except KeyError:
- raise Error('auth.json file is missing "trac_credentials" key')
-
- def webkit_committers(self):
- config = ConfigParser.RawConfigParser()
- with self.open_webkit_committers_file() as f:
- config.readfp(f)
- return config.get('groups', 'webkit').split(',')
-
- def webkit_committers_filename(self):
- try:
- return self.auth_json()['webkit_committers']
- except KeyError:
- raise Error('auth.json file is missing "webkit_committers" key')
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth_unittest.py b/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth_unittest.py
deleted file mode 100755
index f9e169a4a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/committer_auth_unittest.py
+++ /dev/null
@@ -1,220 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011 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. 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 INC. 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 StringIO
-import __builtin__
-import buildbot.status.web.auth
-import contextlib
-import os
-import unittest
-
-from committer_auth import CommitterAuth
-
-
-# This subclass of StringIO supports the context manager protocol so it works
-# with "with" statements, just like real files.
-class CMStringIO(StringIO.StringIO):
- def __enter__(self):
- return self
-
- def __exit__(self, exception, value, traceback):
- self.close()
-
-
-@contextlib.contextmanager
-def open_override(func):
- original_open = __builtin__.open
- __builtin__.open = func
- yield
- __builtin__.open = original_open
-
-
-class CommitterAuthTest(unittest.TestCase):
- def setUp(self):
- self.auth = CommitterAuth('path/to/auth.json')
- self.auth.open_auth_json_file = self.fake_auth_json_file
- self.auth.open_webkit_committers_file = self.fake_committers_file
- self.auth.open_trac_credentials_file = self.fake_htdigest_file
-
- def fake_open_function(self, expected_filename):
- def fake_open(name, mode='r'):
- self.fake_open_was_called = True
- self.assertEqual(expected_filename, name)
- return fake_open
-
- def test_authentication_success(self):
- self.assertTrue(self.auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('', self.auth.errmsg())
- self.assertTrue(self.auth.authenticate('committer2@example.com', 'committer2password'))
- self.assertEqual('', self.auth.errmsg())
-
- def test_committer_without_trac_credentials_fails(self):
- self.assertFalse(self.auth.authenticate('committer3@webkit.org', 'committer3password'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_fail_to_open_auth_json_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/auth.json')
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = raise_IOError
- self.assertFalse(auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error opening auth.json file: No such file or directory', auth.errmsg())
-
- def test_fail_to_open_trac_credentials_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/trac/credentials')
- self.auth.open_trac_credentials_file = raise_IOError
- self.assertFalse(self.auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error opening Trac credentials file: No such file or directory', self.auth.errmsg())
-
- def test_fail_to_open_webkit_committers_file(self):
- def raise_IOError():
- raise IOError(2, 'No such file or directory', 'path/to/webkit/committers')
- self.auth.open_webkit_committers_file = raise_IOError
- self.assertFalse(self.auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error opening WebKit committers file: No such file or directory', self.auth.errmsg())
-
- def test_implements_IAuth(self):
- self.assertTrue(buildbot.status.web.auth.IAuth.implementedBy(CommitterAuth))
-
- def test_invalid_auth_json_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = self.invalid_auth_json_file
- self.assertFalse(auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error parsing auth.json file: No JSON object could be decoded', auth.errmsg())
-
- def test_invalid_committers_file(self):
- self.auth.open_webkit_committers_file = self.invalid_committers_file
- self.assertFalse(self.auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error parsing WebKit committers file', self.auth.errmsg())
-
- def test_invalid_trac_credentials_file(self):
- self.auth.open_trac_credentials_file = self.invalid_htdigest_file
- self.assertFalse(self.auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('Error parsing Trac credentials file', self.auth.errmsg())
-
- def test_missing_auth_json_keys(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.open_auth_json_file = lambda: CMStringIO('{ "trac_credentials": "path/to/trac/credentials" }')
- self.assertFalse(auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('auth.json file is missing "webkit_committers" key', auth.errmsg())
-
- auth.open_auth_json_file = lambda: CMStringIO('{ "webkit_committers": "path/to/webkit/committers" }')
- auth.open_webkit_committers_file = self.fake_committers_file
- self.assertFalse(auth.authenticate('committer@webkit.org', 'committerpassword'))
- self.assertEqual('auth.json file is missing "trac_credentials" key', auth.errmsg())
-
- def test_open_auth_json_file(self):
- auth = CommitterAuth('path/to/auth.json')
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.auth_json_filename())):
- auth.open_auth_json_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_open_trac_credentials_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.trac_credentials_filename = lambda: 'trac credentials filename'
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.trac_credentials_filename())):
- auth.open_trac_credentials_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_open_webkit_committers_file(self):
- auth = CommitterAuth('path/to/auth.json')
- auth.webkit_committers_filename = lambda: 'webkit committers filename'
- self.fake_open_was_called = False
- with open_override(self.fake_open_function(auth.webkit_committers_filename())):
- auth.open_webkit_committers_file()
- self.assertTrue(self.fake_open_was_called)
-
- def test_non_committer_fails(self):
- self.assertFalse(self.auth.authenticate('noncommitter@example.com', 'noncommitterpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_trac_credentials_filename(self):
- self.assertEqual('path/to/trac/credentials', self.auth.trac_credentials_filename())
-
- def test_unknown_user_fails(self):
- self.assertFalse(self.auth.authenticate('nobody@example.com', 'nobodypassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_username_is_prefix_of_valid_user(self):
- self.assertFalse(self.auth.authenticate('committer@webkit.orgg', 'committerpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def test_webkit_committers(self):
- self.assertEqual(['committer@webkit.org', 'committer2@example.com', 'committer3@webkit.org'], self.auth.webkit_committers())
-
- def test_webkit_committers_filename(self):
- self.assertEqual('path/to/webkit/committers', self.auth.webkit_committers_filename())
-
- def test_wrong_password_fails(self):
- self.assertFalse(self.auth.authenticate('committer@webkit.org', 'wrongpassword'))
- self.assertEqual('Invalid username/password', self.auth.errmsg())
-
- def fake_auth_json_file(self):
- return CMStringIO("""{
- "trac_credentials": "path/to/trac/credentials",
- "webkit_committers": "path/to/webkit/committers"
-}""")
-
- def invalid_auth_json_file(self):
- return CMStringIO('~!@#$%^&*()_+')
-
- def fake_committers_file(self):
- return CMStringIO("""[groups]
-group1 = user@example.com,user2@example.com
-group2 = user3@example.com
-
-group3 =
-group4 =
-
-webkit = committer@webkit.org,committer2@example.com,committer3@webkit.org
-
-[service:/]
-* = r
-""")
-
- def invalid_committers_file(self):
- return CMStringIO("""[groups]
-
-[[groups2]
-""")
-
- def fake_htdigest_file(self):
- return CMStringIO("""committer@webkit.org:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
-committer2@example.com:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
-noncommitter@example.com:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
-""")
-
- def invalid_htdigest_file(self):
- return CMStringIO("""committer@webkit.org:Mac OS Forge:761c8dcb7d9b5908007ed142f62fe73a
-committer2@example.com:Mac OS Forge:faeee69acc2e49af3a0dbb15bd593ef4
-noncommitter@example.com:Mac OS Forge:b99aa7ad32306a654ca4d57839fde9c1
-committer4@example.com:Mac OS Forge:::
-""")
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/config.json b/Tools/BuildSlaveSupport/build.webkit.org-config/config.json
deleted file mode 100644
index 841feeead..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/config.json
+++ /dev/null
@@ -1,319 +0,0 @@
-{
- "slaves": [ { "name": "test-slave", "platform": "*" },
-
- { "name": "apple-macpro-4", "platform": "mac-lion" },
- { "name": "apple-macpro-5", "platform": "mac-lion" },
- { "name": "apple-macpro-6", "platform": "mac-lion" },
- { "name": "apple-macpro-8", "platform": "mac-lion" },
- { "name": "apple-xserve-2", "platform": "mac-lion" },
- { "name": "apple-xserve-3", "platform": "mac-lion" },
- { "name": "apple-xserve-10", "platform": "mac-lion" },
- { "name": "apple-xserve-11", "platform": "mac-lion" },
-
- { "name": "apple-mini-201", "platform": "mac-mountainlion"},
- { "name": "apple-mini-202", "platform": "mac-mountainlion"},
- { "name": "apple-mini-203", "platform": "mac-mountainlion"},
- { "name": "apple-mini-204", "platform": "mac-mountainlion"},
- { "name": "apple-mini-205", "platform": "mac-mountainlion"},
- { "name": "apple-mini-206", "platform": "mac-mountainlion"},
- { "name": "apple-mini-207", "platform": "mac-mountainlion"},
- { "name": "apple-mini-208", "platform": "mac-mountainlion"},
- { "name": "apple-mini-209", "platform": "mac-mountainlion"},
- { "name": "apple-mini-210", "platform": "mac-mountainlion"},
- { "name": "apple-mini-218", "platform": "mac-mountainlion"},
-
- { "name": "apple-windows-1", "platform": "win"},
- { "name": "apple-windows-2", "platform": "win"},
- { "name": "apple-windows-3", "platform": "win"},
- { "name": "apple-windows-4", "platform": "win"},
- { "name": "apple-windows-5", "platform": "win"},
- { "name": "apple-windows-6", "platform": "win"},
-
- { "name": "gtk-linux-slave-1", "platform": "gtk"},
- { "name": "gtk-linux-slave-2", "platform": "gtk"},
- { "name": "gtk-linux-slave-3", "platform": "gtk"},
- { "name": "gtk-linux-slave-4", "platform": "gtk"},
-
- { "name": "szeged-linux-1", "platform": "qt-5.0-wk1"},
- { "name": "szeged-linux-2", "platform": "qt-5.0-wk1"},
- { "name": "szeged-linux-3", "platform": "qt-5.0-wk1"},
- { "name": "szeged-linux-4", "platform": "qt-arm"},
- { "name": "szeged-linux-5", "platform": "qt-5.0-wk2"},
-
- { "name": "szeged-windows-1", "platform": "qt-win"},
- { "name": "szeged-windows-2", "platform": "qt-win"},
-
- { "name": "oslo-mountainlion", "platform": "qt-5.0-mac-wk2"},
-
- { "name": "wincairo-1", "platform": "wincairo" },
-
- { "name": "wince-1", "platform": "wince" },
-
- { "name": "efl-linux-slave-1", "platform": "efl" },
- { "name": "efl-linux-slave-2", "platform": "efl" },
- { "name": "efl-linux-slave-3", "platform": "efl" },
-
- { "name": "mips-1", "platform": "qt-mipsel"},
-
- { "name": "sh4-linux-1", "platform": "qt-sh4"}
- ],
-
- "builders": [ { "name": "Apple Lion Debug (Build)", "type": "Build", "builddir": "lion-debug",
- "platform": "mac-lion", "configuration": "debug", "architectures": ["x86_64"],
- "triggers": ["lion-debug-tests-wk1", "lion-debug-tests-wk2"],
- "slavenames": ["apple-xserve-2", "apple-xserve-10"]
- },
- { "name": "Apple Lion Release (Build)", "type": "Build", "builddir": "lion-release",
- "platform": "mac-lion", "configuration": "release", "architectures": ["x86_64"],
- "triggers": ["lion-release-tests-wk1", "lion-release-tests-wk2", "lion-release-perf"],
- "slavenames": ["apple-xserve-3"]
- },
- { "name": "Apple Lion Debug WK1 (Tests)", "type": "Test", "builddir": "lion-debug-tests-wk1",
- "platform": "mac-lion", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-macpro-4"]
- },
- { "name": "Apple Lion Debug WK2 (Tests)", "type": "TestWebKit2", "builddir": "lion-debug-tests-wk2",
- "platform": "mac-lion", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-macpro-8"]
- },
- { "name": "Apple Lion Release WK1 (Tests)", "type": "Test", "builddir": "lion-release-tests-wk1",
- "platform": "mac-lion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-macpro-5"]
- },
- { "name": "Apple Lion Release WK2 (Tests)", "type": "TestWebKit2", "builddir": "lion-release-tests-wk2",
- "platform": "mac-lion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-macpro-6"]
- },
- {
- "name": "Apple Lion Release (Perf)", "type": "DownloadAndPerfTest", "builddir": "lion-release-perf-tests",
- "platform": "mac-lion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-xserve-11"]
- },
- { "name": "Apple MountainLion (Leaks)", "type": "TestLeaks", "builddir": "mountainlion-leaks",
- "platform": "mac-mountainlion", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-201"]
- },
- { "name": "Apple MountainLion Debug (Build)", "type": "Build", "builddir": "mountainlion-debug",
- "platform": "mac-mountainlion", "configuration": "debug", "architectures": ["x86_64"],
- "triggers": ["mountainlion-debug-tests-wk1", "mountainlion-debug-tests-wk2", "mountainlion-leaks"],
- "slavenames": ["apple-mini-202", "apple-mini-203"]
- },
- { "name": "Apple MountainLion Release (Build)", "type": "Build", "builddir": "mountainlion-release",
- "platform": "mac-mountainlion", "configuration": "release", "architectures": ["x86_64"],
- "triggers": ["mountainlion-release-tests-wk1", "mountainlion-release-tests-wk2", "mountainlion-release-perf"],
- "slavenames": ["apple-mini-204"]
- },
- { "name": "Apple MountainLion Release (32-bit Build)", "type": "Build", "builddir": "mountainlion-32bit-release",
- "platform": "mac-mountainlion", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["apple-mini-218"]
- },
- { "name": "Apple MountainLion Debug WK1 (Tests)", "type": "Test", "builddir": "mountainlion-debug-tests-wk1",
- "platform": "mac-mountainlion", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-205"]
- },
- { "name": "Apple MountainLion Debug WK2 (Tests)", "type": "TestWebKit2", "builddir": "mountainlion-debug-tests-wk2",
- "platform": "mac-mountainlion", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-206", "apple-mini-207"]
- },
- { "name": "Apple MountainLion Release WK1 (Tests)", "type": "Test", "builddir": "mountainlion-release-tests-wk1",
- "platform": "mac-mountainlion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-208"]
- },
- { "name": "Apple MountainLion Release WK2 (Tests)", "type": "TestWebKit2", "builddir": "mountainlion-release-tests-wk2",
- "platform": "mac-mountainlion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-209"]
- },
- {
- "name": "Apple MountainLion Release (Perf)", "type": "DownloadAndPerfTest", "builddir": "mountainlion-release-perf-tests",
- "platform": "mac-mountainlion", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-mini-210"]
- },
- {
- "name": "Apple Win Release (Build)", "type": "Build", "builddir": "win-release",
- "platform": "win", "configuration": "release", "architectures": ["i386"],
- "triggers": ["win-release-tests"],
- "slavenames": ["apple-windows-2"]
- },
- {
- "name": "Apple Win 7 Release (Tests)", "type": "Test", "builddir": "win-release-tests",
- "platform": "win", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["apple-windows-5", "apple-windows-6"]
- },
- {
- "name": "Apple Win Debug (Build)", "type": "Build", "builddir": "win-debug",
- "platform": "win", "configuration": "debug", "architectures": ["i386"],
- "triggers": ["win-debug-tests"],
- "slavenames": ["apple-windows-1"]
- },
- {
- "name": "Apple Win 7 Debug (Tests)", "type": "Test", "builddir": "win-debug-tests",
- "platform": "win", "configuration": "debug", "architectures": ["i386"],
- "slavenames": ["apple-windows-3", "apple-windows-4"]
- },
- {
- "name": "GTK Linux 32-bit Release", "type": "BuildAndAPITest", "builddir": "gtk-linux-32-release",
- "platform": "gtk", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["gtk-linux-slave-1"]
- },
- {
- "name": "GTK Linux 64-bit Release", "type": "BuildAndTest", "builddir": "gtk-linux-64-release",
- "platform": "gtk", "configuration": "release", "architectures": ["x86_64"],
- "triggers": ["gtk-linux-64-release-tests-wk2"],
- "slavenames": ["gtk-linux-slave-2"]
- },
- {
- "name": "GTK Linux 64-bit Debug WK1", "type": "BuildAndTestWebKit1Only", "builddir": "gtk-linux-64-debug-wk1",
- "platform": "gtk", "configuration": "debug", "architectures": ["x86_64"],
- "slavenames": ["gtk-linux-slave-3"]
- },
- {
- "name": "GTK Linux 64-bit Release WK2 (Tests)", "type": "TestWebKit2", "builddir": "gtk-linux-64-release-tests-wk2",
- "platform": "gtk", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["gtk-linux-slave-4"]
- },
- {
- "name": "Qt Linux Release", "type": "BuildAndTest", "builddir": "qt-linux-release",
- "platform": "qt-5.0-wk1", "configuration": "release", "architectures": ["i386"],
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "slavenames": ["szeged-linux-1"]
- },
- {
- "name": "Qt Linux Release minimal", "type": "Build", "builddir": "qt-linux-release-minimal",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "platform": "qt-5.0-wk1", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["szeged-linux-2"]
- },
- {
- "name": "Qt Linux 64-bit Release (Perf)", "type": "BuildAndPerfTest", "builddir": "qt-linux-64-release-perf-tests",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "platform": "qt-5.0-wk1", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["szeged-linux-3"]
- },
- {
- "name": "Qt Linux 64-bit Release (WebKit2 Perf)", "type": "BuildAndPerfTestWebKit2", "builddir": "qt-linux-64-release-wk2-perf-tests",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "platform": "qt-5.0-wk2", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["szeged-linux-5"]
- },
- {
- "name": "Qt Linux ARMv7 Release", "type": "Build", "builddir": "qt-linux-armv7-release",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit:3389/",
- "platform": "qt-arm", "configuration": "release", "architectures": ["armv7"],
- "slavenames": ["szeged-linux-4"]
- },
- {
- "name": "Qt Linux MIPS32R2 LE Release", "type": "Build", "builddir": "qt-linux-mipsel-mips32r2-release",
- "platform": "qt-mipsel", "configuration": "release", "architectures": ["mipsel"],
- "slavenames": ["mips-1"]
- },
- {
- "name": "Qt Linux SH4 Release", "type": "Build", "builddir": "qt-linux-sh4-release",
- "platform": "qt-sh4", "configuration": "release", "architectures": ["sh4"],
- "slavenames": ["sh4-linux-1"]
- },
- {
- "name": "Qt Windows 32-bit Release", "type": "Build", "builddir": "qt-windows-32bit-release",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "platform": "qt-win", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["szeged-windows-1"]
- },
- {
- "name": "Qt Windows 32-bit Debug", "type": "Build", "builddir": "qt-windows-32bit-debug",
- "SVNMirror": "svn://webkit.inf.u-szeged.hu/webkit/",
- "platform": "qt-win", "configuration": "debug", "architectures": ["i386"],
- "slavenames": ["szeged-windows-2"]
- },
- {
- "name": "Qt Mountain Lion Release", "type": "BuildAndTestWebKit2", "builddir": "qt-mountainlion-release",
- "platform": "qt-5.0-mac-wk2", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["oslo-mountainlion"]
- },
- {
- "name": "WinCairo Release", "type": "BuildAndTest", "builddir": "win-cairo-release",
- "platform": "wincairo", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["wincairo-1"]
- },
- {
- "name": "WinCE Release (Build)", "type": "Build", "builddir": "wince-release",
- "platform": "wince", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["wince-1"]
- },
- {
- "name": "EFL Linux 64-bit Release WK1", "type": "BuildAndTestWebKit1Only", "builddir": "efl-linux-64-release-wk1",
- "platform": "efl", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["efl-linux-slave-1"]
- },
- {
- "name": "EFL Linux 64-bit Release WK2", "type": "BuildAndTestWebKit2Only", "builddir": "efl-linux-64-release-wk2",
- "platform": "efl", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["efl-linux-slave-2"]
- },
- {
- "name": "EFL Linux 32-bit Release (Build)", "type": "Build", "builddir": "efl-linux-32-release",
- "platform": "efl", "configuration": "release", "architectures": ["i386"],
- "slavenames": ["efl-linux-slave-3"]
- }
- ],
-
- "schedulers": [ { "type": "AnyBranchScheduler", "name": "trunk", "change_filter": "trunk_filter", "treeStableTimer": 45.0,
- "builderNames": ["GTK Linux 32-bit Release", "GTK Linux 64-bit Release", "GTK Linux 64-bit Debug WK1",
- "Qt Linux Release", "Qt Linux Release minimal", "Qt Linux 64-bit Release (Perf)",
- "Qt Linux 64-bit Release (WebKit2 Perf)", "Qt Linux ARMv7 Release", "Qt Linux MIPS32R2 LE Release",
- "Qt Linux SH4 Release",
- "Qt Windows 32-bit Release", "Qt Windows 32-bit Debug", "Qt Mountain Lion Release",
- "EFL Linux 64-bit Release WK1", "EFL Linux 64-bit Release WK2", "EFL Linux 32-bit Release (Build)",
- "WinCairo Release", "WinCE Release (Build)"]
- },
- { "type": "PlatformSpecificScheduler", "platform": "mac-lion", "branch": "trunk", "treeStableTimer": 45.0,
- "builderNames": ["Apple Lion Release (Build)", "Apple Lion Debug (Build)"]
- },
- { "type": "PlatformSpecificScheduler", "platform": "mac-mountainlion", "branch": "trunk", "treeStableTimer": 45.0,
- "builderNames": ["Apple MountainLion Release (Build)", "Apple MountainLion Debug (Build)", "Apple MountainLion Release (32-bit Build)"]
- },
- { "type": "PlatformSpecificScheduler", "platform": "win", "branch": "trunk", "treeStableTimer": 45.0,
- "builderNames": ["Apple Win Release (Build)", "Apple Win Debug (Build)"]
- },
- { "type": "Triggerable", "name": "lion-release-tests-wk1",
- "builderNames": ["Apple Lion Release WK1 (Tests)"]
- },
- { "type": "Triggerable", "name": "lion-release-tests-wk2",
- "builderNames": ["Apple Lion Release WK2 (Tests)"]
- },
- { "type": "Triggerable", "name": "lion-release-perf",
- "builderNames": ["Apple Lion Release (Perf)"]
- },
- { "type": "Triggerable", "name": "lion-debug-tests-wk1",
- "builderNames": ["Apple Lion Debug WK1 (Tests)"]
- },
- { "type": "Triggerable", "name": "lion-debug-tests-wk2",
- "builderNames": ["Apple Lion Debug WK2 (Tests)"]
- },
- { "type": "Triggerable", "name": "mountainlion-release-tests-wk1",
- "builderNames": ["Apple MountainLion Release WK1 (Tests)"]
- },
- { "type": "Triggerable", "name": "mountainlion-release-tests-wk2",
- "builderNames": ["Apple MountainLion Release WK2 (Tests)"]
- },
- { "type": "Triggerable", "name": "mountainlion-release-perf",
- "builderNames": ["Apple MountainLion Release (Perf)"]
- },
- { "type": "Triggerable", "name": "mountainlion-debug-tests-wk1",
- "builderNames": ["Apple MountainLion Debug WK1 (Tests)"]
- },
- { "type": "Triggerable", "name": "mountainlion-debug-tests-wk2",
- "builderNames": ["Apple MountainLion Debug WK2 (Tests)"]
- },
- { "type": "Triggerable", "name": "mountainlion-leaks",
- "builderNames": ["Apple MountainLion (Leaks)"]
- },
- { "type": "Triggerable", "name": "win-release-tests",
- "builderNames": ["Apple Win 7 Release (Tests)"]
- },
- { "type": "Triggerable", "name": "win-debug-tests",
- "builderNames": ["Apple Win 7 Debug (Tests)"]
- },
- { "type": "Triggerable", "name": "gtk-linux-64-release-tests-wk2",
- "builderNames": ["GTK Linux 64-bit Release WK2 (Tests)"]
- }
- ]
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser.py b/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser.py
deleted file mode 100644
index ee7d5405d..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2011 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. 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 INC. 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.
-
-"""htdigestparser - a parser for htdigest files"""
-
-import hashlib
-import string
-
-
-class HTDigestParser(object):
- def __init__(self, digest_file):
- self._entries = self.parse_file(digest_file)
-
- def authenticate(self, username, realm, password):
- hashed_password = hashlib.md5(':'.join((username, realm, password))).hexdigest()
- return [username, realm, hashed_password] in self.entries()
-
- def entries(self):
- return self._entries
-
- def parse_file(self, digest_file):
- entries = [line.rstrip().split(':') for line in digest_file]
-
- # Perform some sanity-checking to ensure the file is valid.
- valid_characters = set(string.hexdigits)
- for entry in entries:
- if len(entry) != 3:
- return []
- hashed_password = entry[-1]
- if len(hashed_password) != 32:
- return []
- if not set(hashed_password).issubset(valid_characters):
- return []
-
- return entries
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py b/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py
deleted file mode 100644
index c689273cb..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (C) 2011 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. 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 INC. 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 StringIO
-import os
-import unittest2 as unittest
-
-from htdigestparser import HTDigestParser
-
-
-class HTDigestParserTest(unittest.TestCase):
- def assertEntriesEqual(self, entries, additional_content=None):
- digest_file = self.fake_htdigest_file()
- if additional_content is not None:
- digest_file.seek(pos=0, mode=os.SEEK_END)
- digest_file.write(additional_content)
- digest_file.seek(pos=0, mode=os.SEEK_SET)
- self.assertEqual(entries, HTDigestParser(digest_file).entries())
-
- def test_authenticate(self):
- htdigest = HTDigestParser(self.fake_htdigest_file())
- self.assertTrue(htdigest.authenticate('user1', 'realm 1', 'password1'))
- self.assertTrue(htdigest.authenticate('user2', 'realm 2', 'password2'))
- self.assertTrue(htdigest.authenticate('user3', 'realm 1', 'password3'))
- self.assertTrue(htdigest.authenticate('user3', 'realm 3', 'password3'))
-
- self.assertFalse(htdigest.authenticate('user1', 'realm', 'password1'))
- self.assertFalse(htdigest.authenticate('user1', 'realm 2', 'password1'))
- self.assertFalse(htdigest.authenticate('user2', 'realm 2', 'password1'))
- self.assertFalse(htdigest.authenticate('user2', 'realm 1', 'password1'))
- self.assertFalse(htdigest.authenticate('', '', ''))
-
- def test_entries(self):
- entries = [
- ['user1', 'realm 1', '36b8aa27fa5e9051095d37b619f92762'],
- ['user2', 'realm 2', '14f827686fa97778f02fe1314a3337c8'],
- ['user3', 'realm 1', '1817fc8a24119cc57fbafc8a630ea5a5'],
- ['user3', 'realm 3', 'a05f5a2335e9d87bbe75bbe5e53248f0'],
- ]
- self.assertEntriesEqual(entries)
- self.assertEntriesEqual(entries, additional_content='')
-
- def test_empty_file(self):
- self.assertEqual([], HTDigestParser(StringIO.StringIO()).entries())
-
- def test_too_few_colons(self):
- self.assertEntriesEqual([], additional_content='user1:realm 1\n')
-
- def test_too_many_colons(self):
- self.assertEntriesEqual([], additional_content='user1:realm 1:36b8aa27fa5e9051095d37b619f92762:garbage\n')
-
- def test_invalid_hash(self):
- self.assertEntriesEqual([], additional_content='user1:realm 1:36b8aa27fa5e9051095d37b619f92762000000\n')
- self.assertEntriesEqual([], additional_content='user1:realm 1:36b8aa27fa5e9051095d37b619f9276\n')
- self.assertEntriesEqual([], additional_content='user1:realm 1:36b8aa27fa5e9051095d37b619f9276z\n')
- self.assertEntriesEqual([], additional_content='user1:realm 1: 36b8aa27fa5e9051095d37b619f92762\n')
-
- def fake_htdigest_file(self):
- return StringIO.StringIO("""user1:realm 1:36b8aa27fa5e9051095d37b619f92762
-user2:realm 2:14f827686fa97778f02fe1314a3337c8
-user3:realm 1:1817fc8a24119cc57fbafc8a630ea5a5
-user3:realm 3:a05f5a2335e9d87bbe75bbe5e53248f0
-""")
-
-
-# FIXME: We should run this file as part of test-rm .
-# Unfortunately test-rm currently requires that unittests
-# be located in a directory with a valid module name.
-# 'build.webkit.org-config' is not a valid module name (due to '.' and '-')
-# so for now this is a stand-alone test harness.
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg b/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg
deleted file mode 100644
index a3ebf2a2e..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg
+++ /dev/null
@@ -1,954 +0,0 @@
-# -*- python -*-
-# ex: set syntax=python:
-
-from buildbot.buildslave import BuildSlave
-from buildbot.changes.pb import PBChangeSource
-from buildbot.scheduler import AnyBranchScheduler, Triggerable
-from buildbot.schedulers.forcesched import FixedParameter, ForceScheduler, StringParameter
-from buildbot.schedulers.filter import ChangeFilter
-from buildbot.status import html
-from buildbot.status.web.authz import Authz
-from buildbot.process import buildstep, factory, properties
-from buildbot.steps import master, shell, source, transfer, trigger
-from buildbot.status.builder import SUCCESS, FAILURE, WARNINGS, SKIPPED
-
-from twisted.internet import defer
-
-import os
-import re
-import json
-import operator
-import urllib
-
-from committer_auth import CommitterAuth
-import wkbuild
-
-
-c = BuildmasterConfig = {}
-
-c['change_source'] = PBChangeSource()
-
-# permissions for WebStatus
-authz = Authz(
- auth=CommitterAuth('auth.json'),
- forceBuild='auth',
- forceAllBuilds='auth',
- pingBuilder=True,
- gracefulShutdown=False,
- stopBuild='auth',
- stopAllBuilds='auth',
- cancelPendingBuild='auth',
- stopChange=True,
- cleanShutdown=False)
-
-c['status'] = []
-c['status'].append(html.WebStatus(http_port=8710,
- revlink="http://trac.webkit.org/changeset/%s",
- changecommentlink=(r"(https://bugs\.webkit\.org/show_bug\.cgi\?id=|webkit\.org/b/)(\d+)", r"https://bugs.webkit.org/show_bug.cgi?id=\2"),
- authz=authz))
-
-c['slavePortnum'] = 17000
-c['projectName'] = "WebKit"
-c['projectURL'] = "http://webkit.org"
-c['buildbotURL'] = "http://build.webkit.org/"
-
-c['buildHorizon'] = 1000
-c['logHorizon'] = 500
-c['eventHorizon'] = 200
-c['buildCacheSize'] = 60
-
-WithProperties = properties.WithProperties
-
-
-class TestWithFailureCount(shell.Test):
- failedTestsFormatString = "%d tests failed"
-
- def countFailures(self, cmd):
- return 0
-
- def commandComplete(self, cmd):
- shell.Test.commandComplete(self, cmd)
- self.failedTestCount = self.countFailures(cmd)
-
- def evaluateCommand(self, cmd):
- if self.failedTestCount:
- return FAILURE
-
- if cmd.rc != 0:
- return FAILURE
-
- return SUCCESS
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.failedTestCount:
- return [self.failedTestsFormatString % self.failedTestCount]
-
- return [self.name]
-
-
-class ConfigureBuild(buildstep.BuildStep):
- name = "configure build"
- description = ["configuring build"]
- descriptionDone = ["configured build"]
- def __init__(self, platform, configuration, architecture, buildOnly, SVNMirror, *args, **kwargs):
- buildstep.BuildStep.__init__(self, *args, **kwargs)
- self.platform = platform.split('-', 1)[0]
- self.fullPlatform = platform
- self.configuration = configuration
- self.architecture = architecture
- self.buildOnly = buildOnly
- self.SVNMirror = SVNMirror
- self.addFactoryArguments(platform=platform, configuration=configuration, architecture=architecture, buildOnly=buildOnly, SVNMirror=SVNMirror)
-
- def start(self):
- self.setProperty("platform", self.platform)
- self.setProperty("fullPlatform", self.fullPlatform)
- self.setProperty("configuration", self.configuration)
- self.setProperty("architecture", self.architecture)
- self.setProperty("buildOnly", self.buildOnly)
- self.setProperty("shouldAbortEarly", True)
- self.setProperty("SVNMirror", self.SVNMirror)
- self.finished(SUCCESS)
- return defer.succeed(None)
-
-
-class CheckOutSource(source.SVN):
- mode = "update"
- def __init__(self, SVNMirror, **kwargs):
- kwargs['baseURL'] = SVNMirror or "http://svn.webkit.org/repository/webkit/"
- kwargs['defaultBranch'] = "trunk"
- kwargs['mode'] = self.mode
- source.SVN.__init__(self, **kwargs)
- self.addFactoryArguments(SVNMirror=SVNMirror)
-
-class WaitForSVNServer(shell.ShellCommand):
- name = "wait-for-svn-server"
- command = ["python", "./Tools/BuildSlaveSupport/wait-for-SVN-server.py", "-r", WithProperties("%(revision)s"), "-s", WithProperties("%(SVNMirror)s")]
- description = ["waiting for SVN server"]
- descriptionDone = ["SVN server is ready"]
- haltOnFailure = True
-
-class InstallWin32Dependencies(shell.Compile):
- description = ["installing dependencies"]
- descriptionDone = ["installed dependencies"]
- command = ["perl", "./Tools/Scripts/update-webkit-auxiliary-libs"]
-
-class KillOldProcesses(shell.Compile):
- name = "kill old processes"
- description = ["killing old processes"]
- descriptionDone = ["killed old processes"]
- command = ["python", "./Tools/BuildSlaveSupport/kill-old-processes"]
-
-class DeleteStaleBuildFiles(shell.Compile):
- name = "delete stale build files"
- description = ["deleting stale build files"]
- descriptionDone = ["delete stale build files"]
- command = ["python", "./Tools/BuildSlaveSupport/delete-stale-build-files", WithProperties("--platform=%(fullPlatform)s"), WithProperties("--%(configuration)s")]
-
-class InstallEflDependencies(shell.ShellCommand):
- name = "jhbuild"
- description = ["updating efl dependencies"]
- descriptionDone = ["updated efl dependencies"]
- command = ["perl", "./Tools/Scripts/update-webkitefl-libs"]
- haltOnFailure = True
-
-class InstallGtkDependencies(shell.ShellCommand):
- name = "jhbuild"
- description = ["updating gtk dependencies"]
- descriptionDone = ["updated gtk dependencies"]
- command = ["perl", "./Tools/Scripts/update-webkitgtk-libs"]
- haltOnFailure = True
-
-def appendCustomBuildFlags(step, platform, fullPlatform=""):
- if platform in ('efl', 'gtk', 'qt', 'wincairo', 'wince', 'wx'):
- step.setCommand(step.command + ['--' + platform])
-
-class CompileWebKit(shell.Compile):
- command = ["perl", "./Tools/Scripts/build-webkit", WithProperties("--%(configuration)s")]
- env = {'MFLAGS':''}
- name = "compile-webkit"
- description = ["compiling"]
- descriptionDone = ["compiled"]
- warningPattern = ".*arning: .*"
-
- def start(self):
- platform = self.getProperty('platform')
- buildOnly = self.getProperty('buildOnly')
- architecture = self.getProperty('architecture')
- if platform == 'mac' and architecture == 'i386':
- self.setCommand(self.command + ['--32-bit'])
- if platform == 'mac' and buildOnly:
- self.setCommand(self.command + ['DEBUG_INFORMATION_FORMAT=dwarf-with-dsym'])
-
- appendCustomBuildFlags(self, platform, self.getProperty('fullPlatform'))
-
- return shell.Compile.start(self)
-
-
-class CompileWebKit1Only(CompileWebKit):
- command = ["perl", "./Tools/Scripts/build-webkit", "--no-webkit2", WithProperties("--%(configuration)s")]
-
-
-class CompileWebKit2Only(CompileWebKit):
- command = ["perl", "./Tools/Scripts/build-webkit", "--no-webkit1", WithProperties("--%(configuration)s")]
-
-
-class ArchiveBuiltProduct(shell.ShellCommand):
- command = ["python", "./Tools/BuildSlaveSupport/built-product-archive",
- WithProperties("--platform=%(fullPlatform)s"), WithProperties("--%(configuration)s"), "archive"]
- name = "archive-built-product"
- description = ["archiving built product"]
- descriptionDone = ["archived built product"]
- haltOnFailure = True
-
-
-class ExtractBuiltProduct(shell.ShellCommand):
- command = ["python", "./Tools/BuildSlaveSupport/built-product-archive",
- WithProperties("--platform=%(fullPlatform)s"), WithProperties("--%(configuration)s"), "extract"]
- name = "extract-built-product"
- description = ["extracting built product"]
- descriptionDone = ["extracted built product"]
- haltOnFailure = True
-
-
-class UploadBuiltProduct(transfer.FileUpload):
- slavesrc = WithProperties("WebKitBuild/%(configuration)s.zip")
- masterdest = WithProperties("archives/%(fullPlatform)s-%(architecture)s-%(configuration)s/%(got_revision)s.zip")
- haltOnFailure = True
-
- def __init__(self, **kwargs):
- kwargs['slavesrc'] = self.slavesrc
- kwargs['masterdest'] = self.masterdest
- kwargs['mode'] = 0644
- transfer.FileUpload.__init__(self, **kwargs)
-
-
-class DownloadBuiltProduct(shell.ShellCommand):
- command = ["python", "./Tools/BuildSlaveSupport/download-built-product",
- WithProperties("--platform=%(platform)s"), WithProperties("--%(configuration)s"),
- WithProperties(c["buildbotURL"] + "archives/%(fullPlatform)s-%(architecture)s-%(configuration)s/%(got_revision)s.zip")]
- name = "download-built-product"
- description = ["downloading built product"]
- descriptionDone = ["downloaded built product"]
- haltOnFailure = True
- flunkOnFailure = True
-
-
-class RunJavaScriptCoreTests(shell.Test):
- name = "jscore-test"
- description = ["jscore-tests running"]
- descriptionDone = ["jscore-tests"]
- command = ["perl", "./Tools/Scripts/run-javascriptcore-tests", WithProperties("--%(configuration)s")]
- logfiles = {'actual.html (source)': 'Source/JavaScriptCore/tests/mozilla/actual.html'}
-
- def __init__(self, buildJSCTool=True, *args, **kwargs):
- self.buildJSCTool = buildJSCTool
- shell.Test.__init__(self, *args, **kwargs)
- self.addFactoryArguments(buildJSCTool=buildJSCTool)
-
- def start(self):
- appendCustomBuildFlags(self, self.getProperty('platform'))
- if not self.buildJSCTool:
- self.setCommand(self.command + ['--no-build'])
- return shell.Test.start(self)
-
- def commandComplete(self, cmd):
- shell.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
-
- if 'actual.html (source)' in cmd.logs:
- self.addHTMLLog('actual.html', cmd.logs['actual.html (source)'].getText())
-
- def evaluateCommand(self, cmd):
- if self.regressionLine:
- return FAILURE
-
- if cmd.rc != 0:
- 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 RunWebKitTests(shell.Test):
- name = "layout-test"
- description = ["layout-tests running"]
- descriptionDone = ["layout-tests"]
- command = ["perl", "./Tools/Scripts/run-webkit-tests",
- "--no-show-results",
- "--no-new-test-results",
- "--no-sample-on-timeout",
- "--results-directory", "layout-test-results",
- "--builder-name", WithProperties("%(buildername)s"),
- "--build-number", WithProperties("%(buildnumber)s"),
- "--master-name", "webkit.org",
- "--test-results-server", "webkit-test-results.appspot.com",
- WithProperties("--%(configuration)s")]
-
- def __init__(self, buildJSCTool=True, *args, **kwargs):
- self.buildJSCTool = buildJSCTool
- shell.Test.__init__(self, *args, **kwargs)
- self.addFactoryArguments(buildJSCTool=buildJSCTool)
-
- def start(self):
- platform = self.getProperty('platform')
- shouldAbortEarly = self.getProperty('shouldAbortEarly')
- appendCustomBuildFlags(self, platform, self.getProperty('fullPlatform'))
- if platform.startswith('mac'):
- self.setCommand(self.command + ['--no-build'])
- if shouldAbortEarly:
- self.setCommand(self.command + ["--exit-after-n-crashes-or-timeouts", "50", "--exit-after-n-failures", "500"])
- if platform == "win":
- rootArgument = ['--root=' + os.path.join("WebKitBuild", self.getProperty('configuration'), "bin32")]
- self.setCommand(self.command + ['--no-build'])
- else:
- rootArgument = ['--root=WebKitBuild/bin']
- if not self.buildJSCTool:
- self.setCommand(self.command + rootArgument)
- return shell.Test.start(self)
-
- def _parseOldRunWebKitTestsOutput(self, logText):
- incorrectLayoutLines = []
- for line in logText.splitlines():
- if line.find('had incorrect layout') >= 0 or line.find('were new') >= 0 or line.find('was new') >= 0:
- incorrectLayoutLines.append(line)
- elif line.find('test case') >= 0 and (line.find(' crashed') >= 0 or line.find(' timed out') >= 0):
- incorrectLayoutLines.append(line)
- elif line.startswith("WARNING:") and line.find(' leak') >= 0:
- incorrectLayoutLines.append(line.replace('WARNING: ', ''))
- elif line.find('Exiting early') >= 0:
- incorrectLayoutLines.append(line)
-
- # FIXME: Detect and summarize leaks of RefCounted objects
-
- self.incorrectLayoutLines = incorrectLayoutLines
-
- # FIXME: This will break if new-run-webkit-tests changes its default log formatter.
- nrwt_log_message_regexp = re.compile(r'\d{2}:\d{2}:\d{2}(\.\d+)?\s+\d+\s+(?P<message>.*)')
-
- def _strip_python_logging_prefix(self, line):
- match_object = self.nrwt_log_message_regexp.match(line)
- if match_object:
- return match_object.group('message')
- return line
-
- def _parseNewRunWebKitTestsOutput(self, logText):
- incorrectLayoutLines = []
- expressions = [
- ('flakes', re.compile(r'Unexpected flakiness.+\((\d+)\)')),
- ('new passes', re.compile(r'Expected to .+, but passed:\s+\((\d+)\)')),
- ('missing results', re.compile(r'Regressions: Unexpected missing results\s+\((\d+)\)')),
- ('failures', re.compile(r'Regressions: Unexpected.+\((\d+)\)')),
- ]
- testFailures = {}
-
- for line in logText.splitlines():
- if line.find('Exiting early') >= 0 or line.find('leaks found') >= 0:
- incorrectLayoutLines.append(self._strip_python_logging_prefix(line))
- continue
- for name, expression in expressions:
- match = expression.search(line)
-
- if match:
- testFailures[name] = testFailures.get(name, 0) + int(match.group(1))
- break
-
- # FIXME: Parse file names and put them in results
-
- for name in testFailures:
- incorrectLayoutLines.append(str(testFailures[name]) + ' ' + name)
-
- self.incorrectLayoutLines = incorrectLayoutLines
-
- def commandComplete(self, cmd):
- shell.Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
- if logText.find("Collecting tests ...") >= 0:
- self._parseNewRunWebKitTestsOutput(logText)
- else:
- self._parseOldRunWebKitTestsOutput(logText)
-
- def evaluateCommand(self, cmd):
- result = SUCCESS
-
- if self.incorrectLayoutLines:
- if len(self.incorrectLayoutLines) == 1:
- line = self.incorrectLayoutLines[0]
- if line.find('were new') >= 0 or line.find('was new') >= 0 or line.find(' leak') >= 0:
- return WARNINGS
-
- for line in self.incorrectLayoutLines:
- if line.find('flakes') >= 0 or line.find('new passes') >= 0 or line.find('missing results') >= 0:
- result = WARNINGS
- else:
- return FAILURE
-
- if cmd.rc != 0:
- return FAILURE
-
- return result
-
- 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 RunUnitTests(TestWithFailureCount):
- name = "run-api-tests"
- description = ["unit tests running"]
- descriptionDone = ["unit-tests"]
- command = ["perl", "./Tools/Scripts/run-api-tests", WithProperties("--%(configuration)s"), "--verbose"]
- failedTestsFormatString = "%d unit tests failed or timed out"
-
- def start(self):
- platform = self.getProperty('fullPlatform')
- if platform.startswith('win'):
- self.setCommand(self.command + ['--no-build'])
- if platform.startswith('mac'):
- self.setCommand(self.command + ['--no-build'])
- return shell.Test.start(self)
-
- def countFailures(self, cmd):
- log_text = cmd.logs['stdio'].getText()
- count = 0
-
- split = re.split(r'\sTests that timed out:\s', log_text)
- if len(split) > 1:
- count += len(re.findall(r'^\s+\S+$', split[1], flags=re.MULTILINE))
-
- split = re.split(r'\sTests that failed:\s', split[0])
- if len(split) > 1:
- count += len(re.findall(r'^\s+\S+$', split[1], flags=re.MULTILINE))
-
- return count
-
-
-class RunPythonTests(TestWithFailureCount):
- name = "webkitpy-test"
- description = ["python-tests running"]
- descriptionDone = ["python-tests"]
- command = ["python", "./Tools/Scripts/test-webkitpy"]
- failedTestsFormatString = "%d python tests failed"
-
- def start(self):
- platform = self.getProperty('platform')
- # Python tests are flaky on the GTK builders, running them serially
- # helps and does not significantly prolong the cycle time.
- if platform == 'gtk':
- self.setCommand(self.command + ['--child-processes', '1'])
- # Python tests fail on windows bots when running more than one child process
- # https://bugs.webkit.org/show_bug.cgi?id=97465
- if platform == 'win':
- self.setCommand(self.command + ['--child-processes', '1'])
- return shell.Test.start(self)
-
- def countFailures(self, cmd):
- logText = cmd.logs['stdio'].getText()
- # We're looking for the line that looks like this: FAILED (failures=2, errors=1)
- regex = re.compile(r'^FAILED \((?P<counts>[^)]+)\)')
- for line in logText.splitlines():
- match = regex.match(line)
- if not match:
- continue
- return sum(int(component.split('=')[1]) for component in match.group('counts').split(', '))
- return 0
-
-
-class RunPerlTests(TestWithFailureCount):
- name = "webkitperl-test"
- description = ["perl-tests running"]
- descriptionDone = ["perl-tests"]
- command = ["perl", "./Tools/Scripts/test-webkitperl"]
- failedTestsFormatString = "%d perl tests failed"
-
- def countFailures(self, cmd):
- logText = cmd.logs['stdio'].getText()
- # We're looking for the line that looks like this: Failed 2/19 test programs. 5/363 subtests failed.
- regex = re.compile(r'^Failed \d+/\d+ test programs\. (?P<count>\d+)/\d+ subtests failed\.')
- for line in logText.splitlines():
- match = regex.match(line)
- if not match:
- continue
- return int(match.group('count'))
- return 0
-
-
-class RunBindingsTests(shell.Test):
- name = "bindings-generation-tests"
- description = ["bindings-tests running"]
- descriptionDone = ["bindings-tests"]
- command = ["python", "./Tools/Scripts/run-bindings-tests"]
-
-
-class RunEflAPITests(shell.Test):
- name = "API tests"
- description = ["API tests running"]
- descriptionDone = ["API tests"]
- command = ["perl", "./Tools/Scripts/run-efl-tests", WithProperties("--%(configuration)s")]
-
-
-class RunGtkAPITests(shell.Test):
- name = "API tests"
- description = ["API tests running"]
- descriptionDone = ["API tests"]
- command = ["python", "./Tools/Scripts/run-gtk-tests", "--verbose", WithProperties("--%(configuration)s")]
-
- def commandComplete(self, cmd):
- shell.Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
-
- self.incorrectTests = 0
- self.timedOutTests = 0
- self.skippedTests = 0
- self.statusLine = []
-
- foundItems = re.findall("Tests failed \((\d+)\):", logText)
- if (foundItems):
- self.incorrectTests = int(foundItems[0])
-
- foundItems = re.findall("Tests that timed out \((\d+)\):", logText)
- if (foundItems):
- self.timedOutTests = int(foundItems[0])
-
- foundItems = re.findall("Tests skipped \((\d+)\):", logText)
- if (foundItems):
- self.skippedTests = int(foundItems[0])
-
- self.totalFailedTests = self.incorrectTests + self.timedOutTests
-
- if self.totalFailedTests > 0:
- self.statusLine = [
- "%d API tests failed, %d timed out, %d skipped" %
- (self.incorrectTests, self.timedOutTests, self.skippedTests)
- ]
-
- def evaluateCommand(self, cmd):
- if self.totalFailedTests > 0:
- return FAILURE
-
- if cmd.rc != 0:
- return FAILURE
-
- return SUCCESS
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.totalFailedTests > 0:
- return self.statusLine
-
- return [self.name]
-
-class RunQtAPITests(shell.Test):
- name = "API tests"
- description = ["API tests running"]
- descriptionDone = ["API tests"]
-
- def start(self):
- self.setCommand( ["python", "./Tools/Scripts/run-qtwebkit-tests", "--output-file=qt-unit-tests.html", "--do-not-open-results", "--timeout=120", "--%s" % self.getProperty('configuration')] )
- if self.getProperty('fullPlatform').endswith("-wk2"):
- self.setCommand(self.command + ['--webkit2'])
- return shell.Test.start(self)
-
- def commandComplete(self, cmd):
- shell.Test.commandComplete(self, cmd)
-
- logText = cmd.logs['stdio'].getText()
- foundItems = re.findall("TOTALS: (?P<passed>\d+) passed, (?P<failed>\d+) failed, (?P<skipped>\d+) skipped, (?P<crashed>\d+) crashed", logText)
-
- self.incorrectTests = 0
- self.crashedTests = 0
- self.statusLine = []
-
- if foundItems:
- self.incorrectTests = int(foundItems[0][1])
- self.crashedTests = int(foundItems[0][3])
-
- if self.incorrectTests > 0 or self.crashedTests > 0:
- self.statusLine = [
- "%s passed, %s failed, %s skipped, %s crashed" % (foundItems[0][0], foundItems[0][1], foundItems[0][2], foundItems[0][3])
- ]
-
- def evaluateCommand(self, cmd):
- if self.crashedTests:
- return FAILURE
-
- if re.findall("Timeout, process", cmd.logs['stdio'].getText()):
- self.statusLine = ["Failure: timeout occured during testing"]
- return FAILURE
-
- if self.incorrectTests:
- return WARNINGS
-
- if cmd.rc != 0:
- return FAILURE
-
- return SUCCESS
-
- def getText(self, cmd, results):
- return self.getText2(cmd, results)
-
- def getText2(self, cmd, results):
- if results != SUCCESS and self.incorrectTests:
- return self.statusLine
-
- return [self.name]
-
-class RunWebKitLeakTests(RunWebKitTests):
- warnOnWarnings = True
- def start(self):
- self.setCommand(self.command + ["--leaks"])
- return RunWebKitTests.start(self)
-
-
-class RunWebKit2Tests(RunWebKitTests):
- def start(self):
- self.setProperty("shouldAbortEarly", False)
- self.setCommand(self.command + ["--webkit-test-runner"])
- if self.getProperty('buildername') == "Qt Mountain Lion Release":
- self.setCommand(self.command + ["-p"])
-
- return RunWebKitTests.start(self)
-
-
-class RunAndUploadPerfTests(shell.Test):
- name = "perf-test"
- description = ["perf-tests running"]
- descriptionDone = ["perf-tests"]
- command = ["python", "./Tools/Scripts/run-perf-tests",
- "--output-json-path", "perf-test-results.json",
- "--slave-config-json-path", "../../perf-test-config.json",
- "--no-show-results",
- "--reset-results",
- "--test-results-server", "perf.webkit.org",
- "--builder-name", WithProperties("%(buildername)s"),
- "--build-number", WithProperties("%(buildnumber)s"),
- "--platform", WithProperties("%(fullPlatform)s"),
- WithProperties("--%(configuration)s")]
-
- def start(self):
- self.setCommand(self.command)
- return shell.Test.start(self)
-
-
-class RunAndUploadPerfTestsWebKit2(RunAndUploadPerfTests):
- def start(self):
- self.setCommand(self.command + ["--webkit-test-runner"])
- return RunAndUploadPerfTests.start(self)
-
-
-class ArchiveTestResults(shell.ShellCommand):
- command = ["python", "./Tools/BuildSlaveSupport/test-result-archive",
- WithProperties("--platform=%(platform)s"), WithProperties("--%(configuration)s"), "archive"]
- name = "archive-test-results"
- description = ["archiving test results"]
- descriptionDone = ["archived test results"]
- haltOnFailure = True
-
-
-class UploadTestResults(transfer.FileUpload):
- slavesrc = "layout-test-results.zip"
- masterdest = WithProperties("public_html/results/%(buildername)s/r%(got_revision)s (%(buildnumber)s).zip")
-
- def __init__(self, **kwargs):
- kwargs['slavesrc'] = self.slavesrc
- kwargs['masterdest'] = self.masterdest
- kwargs['mode'] = 0644
- transfer.FileUpload.__init__(self, **kwargs)
-
-
-class ExtractTestResults(master.MasterShellCommand):
- zipFile = WithProperties("public_html/results/%(buildername)s/r%(got_revision)s (%(buildnumber)s).zip")
- resultDirectory = WithProperties("public_html/results/%(buildername)s/r%(got_revision)s (%(buildnumber)s)")
- descriptionDone = ["uploaded results"]
-
- def __init__(self, **kwargs):
- kwargs['command'] = ""
- master.MasterShellCommand.__init__(self, **kwargs)
-
- def resultDirectoryURL(self):
- return self.build.getProperties().render(self.resultDirectory).replace("public_html/", "/") + "/"
-
- def start(self):
- self.command = ["unzip", self.build.getProperties().render(self.zipFile), "-d", self.build.getProperties().render(self.resultDirectory)]
- return master.MasterShellCommand.start(self)
-
- def addCustomURLs(self):
- url = self.resultDirectoryURL() + "results.html"
- self.addURL("view results", url)
-
- def finished(self, result):
- self.addCustomURLs()
- return master.MasterShellCommand.finished(self, result)
-
-
-class ExtractTestResultsAndLeaks(ExtractTestResults):
- def addCustomURLs(self):
- ExtractTestResults.addCustomURLs(self)
- url = "/LeaksViewer/?url=" + urllib.quote(self.resultDirectoryURL(), safe="")
- self.addURL("view leaks", url)
-
-
-class Factory(factory.BuildFactory):
- def __init__(self, platform, configuration, architectures, buildOnly, SVNMirror):
- factory.BuildFactory.__init__(self)
- self.addStep(ConfigureBuild(platform=platform, configuration=configuration, architecture=" ".join(architectures), buildOnly=buildOnly, SVNMirror=SVNMirror))
- if SVNMirror:
- self.addStep(WaitForSVNServer())
- self.addStep(CheckOutSource(SVNMirror=SVNMirror))
- # There are multiple Qt slaves running on same machines, so buildslaves shouldn't kill the processes of other slaves.
- if not platform.startswith("qt"):
- self.addStep(KillOldProcesses())
- self.addStep(DeleteStaleBuildFiles())
- if platform == "win":
- self.addStep(InstallWin32Dependencies())
- if platform == "gtk":
- self.addStep(InstallGtkDependencies())
- if platform == "efl":
- self.addStep(InstallEflDependencies())
-
-
-class BuildFactory(Factory):
- def __init__(self, platform, configuration, architectures, triggers=None, SVNMirror=None):
- Factory.__init__(self, platform, configuration, architectures, True, SVNMirror)
- self.addStep(CompileWebKit())
- if triggers:
- self.addStep(ArchiveBuiltProduct())
- self.addStep(UploadBuiltProduct())
- self.addStep(trigger.Trigger(schedulerNames=triggers))
-
-class BuildAndAPITestFactory(Factory):
- def __init__(self, platform, configuration, architectures, triggers=None, SVNMirror=None):
- Factory.__init__(self, platform, configuration, architectures, True, SVNMirror)
- self.addStep(CompileWebKit())
- if triggers:
- self.addStep(ArchiveBuiltProduct())
- self.addStep(UploadBuiltProduct())
- self.addStep(trigger.Trigger(schedulerNames=triggers))
- if platform == "efl":
- self.addStep(RunEflAPITests)
- if platform == "gtk":
- self.addStep(RunGtkAPITests())
- if platform.startswith("qt"):
- self.addStep(RunQtAPITests)
-
-def unitTestsSupported(configuration, platform):
- if platform.startswith('mac') and configuration == "release":
- return False; # https://bugs.webkit.org/show_bug.cgi?id=82652
- return platform == 'win' or platform.startswith('mac')
-
-def pickLatestBuild(builder, requests):
- return max(requests, key=operator.attrgetter("submittedAt"))
-
-class TestFactory(Factory):
- TestClass = RunWebKitTests
- ExtractTestResultsClass = ExtractTestResults
- def __init__(self, platform, configuration, architectures, SVNMirror=None):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror)
- self.addStep(DownloadBuiltProduct())
- self.addStep(ExtractBuiltProduct())
- self.addStep(RunJavaScriptCoreTests(buildJSCTool=False))
- self.addStep(self.TestClass(buildJSCTool=(platform != 'win')))
-
- if unitTestsSupported(configuration, platform):
- self.addStep(RunUnitTests())
- self.addStep(RunPythonTests())
- self.addStep(RunPerlTests())
- self.addStep(RunBindingsTests())
- self.addStep(ArchiveTestResults())
- self.addStep(UploadTestResults())
- self.addStep(self.ExtractTestResultsClass())
- if platform == "efl":
- self.addStep(RunEflAPITests)
- if platform == "gtk":
- self.addStep(RunGtkAPITests())
- if platform.startswith("qt"):
- self.addStep(RunQtAPITests)
-
-class BuildAndTestFactory(Factory):
- CompileClass = CompileWebKit
- TestClass = RunWebKitTests
- ExtractTestResultsClass = ExtractTestResults
- def __init__(self, platform, configuration, architectures, triggers=None, SVNMirror=None, **kwargs):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror, **kwargs)
- self.addStep(self.CompileClass())
- self.addStep(RunJavaScriptCoreTests())
- self.addStep(self.TestClass())
- if unitTestsSupported(configuration, platform):
- self.addStep(RunUnitTests())
- self.addStep(RunPythonTests())
- self.addStep(RunPerlTests())
- self.addStep(RunBindingsTests())
- self.addStep(ArchiveTestResults())
- self.addStep(UploadTestResults())
- self.addStep(self.ExtractTestResultsClass())
- if platform == "efl":
- self.addStep(RunEflAPITests())
- if platform == "gtk":
- self.addStep(RunGtkAPITests())
- if platform.startswith("qt"):
- self.addStep(RunQtAPITests())
- if triggers:
- self.addStep(ArchiveBuiltProduct())
- self.addStep(UploadBuiltProduct())
- self.addStep(trigger.Trigger(schedulerNames=triggers))
-
-class BuildAndTestWebKit2Factory(BuildAndTestFactory):
- CompileClass = CompileWebKit
- TestClass = RunWebKit2Tests
-
-class BuildAndTestWebKit1OnlyFactory(BuildAndTestFactory):
- CompileClass = CompileWebKit1Only
-
-class BuildAndTestWebKit2OnlyFactory(BuildAndTestFactory):
- CompileClass = CompileWebKit2Only
- TestClass = RunWebKit2Tests
-
-class TestLeaksFactory(TestFactory):
- TestClass = RunWebKitLeakTests
- ExtractTestResultsClass = ExtractTestResultsAndLeaks
-
-
-class TestWebKit2Factory(TestFactory):
- TestClass = RunWebKit2Tests
-
-class BuildAndPerfTestFactory(Factory):
- def __init__(self, platform, configuration, architectures, SVNMirror=None, **kwargs):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror, **kwargs)
- self.addStep(CompileWebKit())
- self.addStep(RunAndUploadPerfTests())
-
-class BuildAndPerfTestWebKit2Factory(Factory):
- def __init__(self, platform, configuration, architectures, SVNMirror=None, **kwargs):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror, **kwargs)
- self.addStep(CompileWebKit())
- self.addStep(RunAndUploadPerfTestsWebKit2())
-
-class DownloadAndPerfTestFactory(Factory):
- def __init__(self, platform, configuration, architectures, SVNMirror=None, **kwargs):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror, **kwargs)
- self.addStep(DownloadBuiltProduct())
- self.addStep(ExtractBuiltProduct())
- self.addStep(RunAndUploadPerfTests())
-
-class DownloadAndPerfTestWebKit2Factory(Factory):
- def __init__(self, platform, configuration, architectures, SVNMirror=None, **kwargs):
- Factory.__init__(self, platform, configuration, architectures, False, SVNMirror, **kwargs)
- self.addStep(DownloadBuiltProduct())
- self.addStep(ExtractBuiltProduct())
- self.addStep(RunAndUploadPerfTestsWebKit2())
-
-class PlatformSpecificScheduler(AnyBranchScheduler):
- def __init__(self, platform, branch, **kwargs):
- self.platform = platform
- filter = ChangeFilter(branch=[branch, None], filter_fn=self.filter)
- AnyBranchScheduler.__init__(self, name=platform, change_filter=filter, **kwargs)
-
- def filter(self, change):
- return wkbuild.should_build(self.platform, change.files)
-
-trunk_filter = ChangeFilter(branch=["trunk", None])
-
-def loadBuilderConfig(c):
- # FIXME: These file handles are leaked.
- passwords = json.load(open('passwords.json'))
- config = json.load(open('config.json'))
-
- c['slaves'] = [BuildSlave(slave['name'], passwords[slave['name']], max_builds=1) for slave in config['slaves']]
-
- c['schedulers'] = []
- for scheduler in config['schedulers']:
- if "change_filter" in scheduler:
- scheduler["change_filter"] = globals()[scheduler["change_filter"]]
- kls = globals()[scheduler.pop('type')]
- # Python 2.6 can't handle unicode keys as keyword arguments:
- # http://bugs.python.org/issue2646. Modern versions of json return
- # unicode strings from json.load, so we map all keys to str objects.
- scheduler = dict(map(lambda key_value_pair: (str(key_value_pair[0]), key_value_pair[1]), scheduler.items()))
-
- c['schedulers'].append(kls(**scheduler))
-
- forceScheduler = ForceScheduler(
- name="force",
- builderNames=[builder['name'] for builder in config['builders']],
- reason=StringParameter(name="reason", default="", size=40),
-
- # Validate SVN revision: number or emtpy string
- revision=StringParameter(name="revision", default="", regex=re.compile(r'^(\d*)$')),
-
- # Disable default enabled input fields: branch, repository, project, additional properties
- branch=FixedParameter(name="branch"),
- repository=FixedParameter(name="repository"),
- project=FixedParameter(name="project"),
- properties=[]
- )
- c['schedulers'].append(forceScheduler)
-
- c['builders'] = []
- for builder in config['builders']:
- for slaveName in builder['slavenames']:
- for slave in config['slaves']:
- if slave['name'] != slaveName or slave['platform'] == '*':
- continue
-
- if slave['platform'] != builder['platform']:
- raise Exception, "Builder %r is for platform %r but has slave %r for platform %r!" % (builder['name'], builder['platform'], slave['name'], slave['platform'])
-
- break
-
- platform = builder['platform']
-
- builderType = builder.pop('type')
- factory = globals()["%sFactory" % builderType]
- factorykwargs = {}
- for key in "platform", "configuration", "architectures", "triggers", "SVNMirror":
- value = builder.pop(key, None)
- if value:
- factorykwargs[key] = value
-
- builder["factory"] = factory(**factorykwargs)
-
- if platform.startswith('mac'):
- builder["category"] = 'AppleMac'
- elif platform == 'win':
- builder["category"] = 'AppleWin'
- elif platform.startswith('gtk'):
- builder["category"] = 'GTK'
- elif platform.startswith('qt'):
- builder["category"] = 'Qt'
- elif platform.startswith('efl'):
- builder["category"] = "EFL"
- else:
- builder["category"] = 'misc'
-
- if (builder['category'] == 'AppleMac' or builder['category'] == 'AppleWin') and builderType != 'Build':
- builder['nextBuild'] = pickLatestBuild
-
- c['builders'].append(builder)
-
-loadBuilderConfig(c)
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py b/Tools/BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py
deleted file mode 100755
index 3f86e751c..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py
+++ /dev/null
@@ -1,415 +0,0 @@
-#! /usr/bin/python
-
-import sys
-import os
-import StringIO
-import unittest
-
-# Show DepricationWarnings come from buildbot - it isn't default with Python 2.7 or newer.
-# See https://bugs.webkit.org/show_bug.cgi?id=90161 for details.
-import warnings
-warnings.simplefilter('default')
-
-class BuildBotConfigLoader(object):
- def _add_webkitpy_to_sys_path(self):
- # When files are passed to the python interpreter on the command line (e.g. python test.py) __file__ is a relative path.
- absolute_file_path = os.path.abspath(__file__)
- webkit_org_config_dir = os.path.dirname(absolute_file_path)
- build_slave_support_dir = os.path.dirname(webkit_org_config_dir)
- webkit_tools_dir = os.path.dirname(build_slave_support_dir)
- scripts_dir = os.path.join(webkit_tools_dir, 'Scripts')
- sys.path.append(scripts_dir)
-
- def _create_mock_passwords_dict(self):
- config_dict = json.load(open('config.json'))
- return dict([(slave['name'], '1234') for slave in config_dict['slaves']])
-
- def _mock_open(self, filename):
- if filename == 'passwords.json':
- return StringIO.StringIO(json.dumps(self._create_mock_passwords_dict()))
- return __builtins__.open(filename)
-
- def _add_dependant_modules_to_sys_modules(self):
- from webkitpy.thirdparty.autoinstalled import buildbot
- sys.modules['buildbot'] = buildbot
-
- def load_config(self, master_cfg_path):
- # Before we can use webkitpy.thirdparty, we need to fix our path to include webkitpy.
- # FIXME: If we're ever run by test-webkitpy we won't need this step.
- self._add_webkitpy_to_sys_path()
- # master.cfg expects the buildbot module to be in sys.path.
- self._add_dependant_modules_to_sys_modules()
-
- # master.cfg expects a passwords.json file which is not checked in. Fake it by mocking open().
- globals()['open'] = self._mock_open
- # Because the master_cfg_path may have '.' in its name, we can't just use import, we have to use execfile.
- # We pass globals() as both the globals and locals to mimic exectuting in the global scope, so
- # that globals defined in master.cfg will be global to this file too.
- execfile(master_cfg_path, globals(), globals())
- globals()['open'] = __builtins__.open # Stop mocking open().
-
-
-class MasterCfgTest(unittest.TestCase):
- def test_nrwt_leaks_parsing(self):
- run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
- log_text = """
-12:44:24.295 77706 13981 total leaks found for a total of 197,936 bytes!
-12:44:24.295 77706 1 unique leaks found!
-"""
- expected_incorrect_lines = [
- '13981 total leaks found for a total of 197,936 bytes!',
- '1 unique leaks found!',
- ]
- run_webkit_tests._parseNewRunWebKitTestsOutput(log_text)
- self.assertEqual(run_webkit_tests.incorrectLayoutLines, expected_incorrect_lines)
-
- def test_nrwt_missing_results(self):
- run_webkit_tests = RunWebKitTests() # pylint is confused by the way we import the module ... pylint: disable-msg=E0602
- log_text = """
-Expected to fail, but passed: (2)
- animations/additive-transform-animations.html
- animations/cross-fade-webkit-mask-box-image.html
-
-Unexpected flakiness: text-only failures (2)
- fast/events/touch/touch-inside-iframe.html [ Failure Pass ]
- http/tests/inspector-enabled/console-clear-arguments-on-frame-navigation.html [ Failure Pass ]
-
-Unexpected flakiness: timeouts (1)
- svg/text/foreignObject-repaint.xml [ Timeout Pass ]
-
-Regressions: Unexpected missing results (1)
- svg/custom/zero-path-square-cap-rendering2.svg [ Missing ]
-
-Regressions: Unexpected text-only failures (1)
- svg/custom/zero-path-square-cap-rendering2.svg [ Failure ]
-"""
- run_webkit_tests._parseNewRunWebKitTestsOutput(log_text)
- self.assertEqual(set(run_webkit_tests.incorrectLayoutLines),
- set(['2 new passes', '3 flakes', '1 missing results', '1 failures']))
-
-class StubStdio(object):
- def __init__(self, stdio):
- self._stdio = stdio
-
- def getText(self):
- return self._stdio
-
-
-class StubRemoteCommand(object):
- def __init__(self, rc, stdio):
- self.rc = rc
- self.logs = {'stdio': StubStdio(stdio)}
-
-
-class RunQtAPITestsTest(unittest.TestCase):
- def assertResults(self, expected_result, expected_text, stdio):
- rc = 0
- cmd = StubRemoteCommand(rc, stdio)
- step = RunQtAPITests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_text = str(step.getText2(cmd, actual_results)[0])
-
- self.assertEqual(expected_result, actual_results)
- self.assertEqual(actual_text, expected_text)
-
- def test_timeout(self):
- self.assertResults(FAILURE, "API tests", """INFO:Exec:Running... WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview
-INFO:Exec:Running... WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests
-Qml debugging is enabled. Only use this in a safe environment!
-INFO:Exec:Finished WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview
-ERROR:Exec:Timeout, process 'WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests' (2336) was terminated
-INFO:Exec:Finished WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests
-********* Start testing of tst_QQuickWebView *********
-Config: Using QTest library 5.0.0, Qt 5.0.0
-PASS : tst_QQuickWebView::initTestCase()
-QWARN : tst_QQuickWebView::accessPage() QQuickCanvas: platform does not support threaded rendering!
-.
-.
-.
-
-**********************************************************************
-** TOTALS: 16 passed, 0 failed, 0 skipped, 0 crashed **
-**********************************************************************""")
-
- def test_success(self):
- self.assertResults(SUCCESS, "API tests", """INFO:Exec:Running... WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview
-INFO:Exec:Running... WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qmltests/tst_qmltests
-Qml debugging is enabled. Only use this in a safe environment!
-INFO:Exec:Finished WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview
-********* Start testing of tst_QQuickWebView *********
-Config: Using QTest library 5.0.0, Qt 5.0.0
-PASS : tst_QQuickWebView::initTestCase()
-QWARN : tst_QQuickWebView::accessPage() QQuickCanvas: platform does not support threaded rendering!
-.
-.
-.
-
-**********************************************************************
-** TOTALS: 16 passed, 0 failed, 0 skipped, 0 crashed **
-**********************************************************************""")
-
- def test_failure(self):
- self.assertResults(WARNINGS, "16 passed, 1 failed, 0 skipped, 0 crashed", """********* Start testing of tst_QDeclarativeWebView *********
-PASS : tst_QDeclarativeWebView::pressGrabTime()
-PASS : tst_QDeclarativeWebView::renderingEnabled()
-PASS : tst_QDeclarativeWebView::setHtml()
-PASS : tst_QDeclarativeWebView::settings()
-FAIL! : tst_QDeclarativeWebView::backgroundColor() Compared values are not the same
- Loc: [/ramdisk/qt-linux-release/build/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp(532)]
-PASS : tst_QDeclarativeWebView::cleanupTestCase()
-.
-.
-.
-
-**********************************************************************
-** TOTALS: 16 passed, 1 failed, 0 skipped, 0 crashed **
-**********************************************************************""")
-
- def test_timeout_and_failure(self):
- self.assertResults(FAILURE, "Failure: timeout occured during testing", """INFO:Exec:Finished WebKitBuild/Release/Source/WebKit/qt/tests/benchmarks/painting/tst_painting
-ERROR:Exec:Timeout, process 'WebKitBuild/Release/Source/WebKit/qt/tests/qwebpage/tst_qwebpage' (13000) was terminated
-INFO:Exec:Finished WebKitBuild/Release/Source/WebKit/qt/tests/qwebpage/tst_qwebpage
-********* Start testing of tst_Loading *********
-Config: Using QTest library 4.8.0, Qt 4.8.0
-PASS : tst_Loading::initTestCase()
-QDEBUG : tst_Loading::load(amazon) loaded the Generic plugin
-RESULT : tst_Loading::load():"amazon":
- 1,843 msecs per iteration (total: 1,843, iterations: 1)
-RESULT : tst_Loading::load():"kde":
- 139 msecs per iteration (total: 139, iterations: 1)
-RESULT : tst_Loading::load():"apple":
- 740 msecs per iteration (total: 740, iterations: 1)
-PASS : tst_Loading::load()
-PASS : tst_Loading::cleanupTestCase()
-Totals: 3 passed, 0 failed, 0 skipped
-********* Finished testing of tst_Loading *********
-.
-.
-.
-PASS : tst_QDeclarativeWebView::renderingEnabled()
-PASS : tst_QDeclarativeWebView::setHtml()
-PASS : tst_QDeclarativeWebView::settings()
-FAIL! : tst_QDeclarativeWebView::backgroundColor() Compared values are not the same
- Loc: [/ramdisk/qt-linux-release/build/Source/WebKit/qt/tests/qdeclarativewebview/tst_qdeclarativewebview.cpp(532)]
-PASS : tst_QDeclarativeWebView::cleanupTestCase()
-Totals: 16 passed, 3 failed, 1 skipped
-.
-.
-.
-**********************************************************************
-** TOTALS: 73 passed, 3 failed, 1 skipped, 0 crashed **
-**********************************************************************""")
-
- def test_crash(self):
- self.assertResults(FAILURE, "API tests", """********* Start testing of tst_QQuickWebView *********
-Config: Using QTest library 5.0.0, Qt 5.0.0
-PASS : tst_QQuickWebView::initTestCase()
-PASS : tst_QQuickWebView::accessPage()
-
-CRASHED: WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_qquickwebview
-
-CRASHED: WebKitBuild/Release/Source/WebKit2/UIProcess/API/qt/tests/qquickwebview/tst_hello
-
-********* Start testing of tst_publicapi *********
-Config: Using QTest library 5.0.0, Qt 5.0.0
-PASS : tst_publicapi::initTestCase()
-PASS : tst_publicapi::publicAPI()
-PASS : tst_publicapi::cleanupTestCase()
-Totals: 3 passed, 0 failed, 0 skipped
-********* Finished testing of tst_publicapi *********
-**********************************************************************
-** TOTALS: 92 passed, 0 failed, 0 skipped, 2 crashed **
-**********************************************************************""")
-
-
-
-class RunUnitTestsTest(unittest.TestCase):
- def assertFailures(self, expected_failure_count, stdio):
- if expected_failure_count:
- rc = 1
- expected_results = FAILURE
- expected_text = '{0} unit tests failed or timed out'.format(expected_failure_count)
- else:
- rc = 0
- expected_results = SUCCESS
- expected_text = 'run-api-tests'
-
- cmd = StubRemoteCommand(rc, stdio)
- step = RunUnitTests()
- step.commandComplete(cmd)
- actual_results = step.evaluateCommand(cmd)
- actual_failure_count = step.failedTestCount
- actual_text = step.getText(cmd, actual_results)[0]
-
- self.assertEqual(expected_results, actual_results)
- self.assertEqual(expected_failure_count, actual_failure_count)
- self.assertEqual(expected_text, actual_text)
-
- def test_no_failures_or_timeouts(self):
- self.assertFailures(0, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-""")
-
- def test_one_failure(self):
- self.assertFailures(1, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-Tests that failed:
- WebKit2.WebKit2.CanHandleRequest
-""")
-
- def test_multiple_failures(self):
- self.assertFailures(4, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-Tests that failed:
- WebKit2.WebKit2.CanHandleRequest
- WebKit2.WebKit2.DocumentStartUserScriptAlertCrashTest
- WebKit2.WebKit2.HitTestResultNodeHandle
- WebKit2.WebKit2.InjectedBundleBasic
-""")
-
- def test_one_timeout(self):
- self.assertFailures(1, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-Tests that timed out:
- WebKit2.WebKit2.CanHandleRequest
-""")
-
- def test_multiple_timeouts(self):
- self.assertFailures(4, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-Tests that timed out:
- WebKit2.WebKit2.CanHandleRequest
- WebKit2.WebKit2.DocumentStartUserScriptAlertCrashTest
- WebKit2.WebKit2.HitTestResultNodeHandle
- WebKit2.WebKit2.InjectedBundleBasic
-""")
-
- def test_multiple_failures_and_timeouts(self):
- self.assertFailures(8, """Note: Google Test filter = WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[==========] Running 1 test from 1 test case.
-[----------] Global test environment set-up.
-[----------] 1 test from WebViewDestructionWithHostWindow
-[ RUN ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose
-[ OK ] WebViewDestructionWithHostWindow.DestroyViewWindowWithoutClose (127 ms)
-[----------] 1 test from WebViewDestructionWithHostWindow (127 ms total)
-
-[----------] Global test environment tear-down
-[==========] 1 test from 1 test case ran. (127 ms total)
-[ PASSED ] 1 test.
-Tests that failed:
- WebKit2.WebKit2.CanHandleRequest
- WebKit2.WebKit2.DocumentStartUserScriptAlertCrashTest
- WebKit2.WebKit2.HitTestResultNodeHandle
-Tests that timed out:
- WebKit2.WebKit2.InjectedBundleBasic
- WebKit2.WebKit2.LoadCanceledNoServerRedirectCallback
- WebKit2.WebKit2.MouseMoveAfterCrash
- WebKit2.WebKit2.ResponsivenessTimerDoesntFireEarly
- WebKit2.WebKit2.WebArchive
-""")
-
-
-class SVNMirrorTest(unittest.TestCase):
- def setUp(self):
- self.config = json.load(open('config.json'))
-
- def get_SVNMirrorFromConfig(self, builderName):
- SVNMirror = None
- for builder in self.config['builders']:
- if builder['name'] == builderName:
- SVNMirror = builder.pop('SVNMirror', 'http://svn.webkit.org/repository/webkit/')
- return SVNMirror
-
- def test_CheckOutSource(self):
- # SVN mirror feature isn't unittestable now with source.oldsource.SVN(==source.SVN) , only with source.svn.SVN(==SVN)
- # https://bugs.webkit.org/show_bug.cgi?id=85887
- if issubclass(CheckOutSource, source.SVN):
- return
-
- # Compare CheckOutSource.baseURL with SVNMirror (or with the default URL) in config.json for all builders
- for builder in c['builders']:
- for buildStepFactory, kwargs in builder['factory'].steps:
- if str(buildStepFactory).split('.')[-1] == 'CheckOutSource':
- CheckOutSourceInstance = buildStepFactory(**kwargs)
- self.assertEqual(CheckOutSourceInstance.baseURL, self.get_SVNMirrorFromConfig(builder['name']))
-
-
-class BuildStepsConstructorTest(unittest.TestCase):
- # "Passing a BuildStep subclass to factory.addStep is deprecated. Please pass a BuildStep instance instead. Support will be dropped in v0.8.7."
- # It checks if all builder's all buildsteps can be insantiated after migration.
- # https://bugs.webkit.org/show_bug.cgi?id=89001
- # http://buildbot.net/buildbot/docs/0.8.6p1/manual/customization.html#writing-buildstep-constructors
-
- @staticmethod
- def generateTests():
- for builderNumber, builder in enumerate(c['builders']):
- for stepNumber, step in enumerate(builder['factory'].steps):
- builderName = builder['name'].encode('ascii', 'ignore')
- setattr(BuildStepsConstructorTest, 'test_builder%02d_step%02d' % (builderNumber, stepNumber), BuildStepsConstructorTest.createTest(builderName, step))
-
- @staticmethod
- def createTest(builderName, step):
- def doTest(self):
- try:
- buildStepFactory, kwargs = step
- buildStepFactory(**kwargs)
- except TypeError as e:
- buildStepName = str(buildStepFactory).split('.')[-1]
- self.fail("Error during instantiation %s buildstep for %s builder: %s\n" % (buildStepName, builderName, e))
- return doTest
-
-# FIXME: We should run this file as part of test-webkitpy.
-# Unfortunately test-webkitpy currently requires that unittests
-# be located in a directory with a valid module name.
-# 'build.webkit.org-config' is not a valid module name (due to '.' and '-')
-# so for now this is a stand-alone test harness.
-if __name__ == '__main__':
- BuildBotConfigLoader().load_config('master.cfg')
- BuildStepsConstructorTest.generateTests()
- unittest.main()
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js
deleted file mode 100644
index e559e7381..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function LeaksLoader(didCountLeaksFilesCallback, didLoadLeaksFileCallback) {
- this._didCountLeaksFilesCallback = didCountLeaksFilesCallback;
- this._didLoadLeaksFileCallback = didLoadLeaksFileCallback;
-}
-
-LeaksLoader.prototype = {
- start: function(url) {
- if (/\.txt$/.test(url))
- this._loadLeaksFiles([url]);
- else
- this._loadLeaksFromResultsPage(url);
- },
-
- _loadLeaksFiles: function(urls) {
- this._didCountLeaksFilesCallback(urls.length);
-
- var self = this;
- var pendingURLs = urls.length;
- urls.forEach(function(url) {
- getResource(url, function(xhr) {
- self._didLoadLeaksFileCallback(xhr.responseText);
- });
- });
- },
-
- _loadLeaksFromResultsPage: function(url) {
- var self = this;
- getResource(url, function(xhr) {
- var root = document.createElement("html");
- root.innerHTML = xhr.responseText;
-
- // Strip off everything after the last /.
- var baseURL = url.substring(0, url.lastIndexOf("/") + 1);
-
- var urls = Array.prototype.map.call(root.querySelectorAll("tr.file > td > a[href$='-leaks.txt']"), function(link) { return baseURL + link.getAttribute("href"); });
-
- self._loadLeaksFiles(urls);
- });
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js
deleted file mode 100644
index bd12851e1..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function LeaksParser(didParseLeaksFileCallback) {
- this._didParseLeaksFileCallback = didParseLeaksFileCallback;
-
- if (workersSupportCyclicStructures()) {
- this._worker = new Worker("LeaksParserWorker.js");
-
- var self = this;
- this._worker.onmessage = function(e) {
- self._didParseLeaksFileCallback(e.data);
- };
- } else
- this._parserImpl = new LeaksParserImpl(this._didParseLeaksFileCallback);
-}
-
-LeaksParser.prototype = {
- addLeaksFile: function(leaksText) {
- if (this._worker)
- this._worker.postMessage(leaksText);
- else
- this._parserImpl.addLeaksFile(leaksText);
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js
deleted file mode 100644
index c0243d897..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function LeaksParserImpl(didParseLeaksCallback) {
- this._didParseLeaksCallback = didParseLeaksCallback;
- this._profile = this._createNode("top level");
-}
-
-LeaksParserImpl.prototype = {
- addLeaksFile: function(leaksText) {
- this._incorporateLeaks(this._parseLeaks(leaksText));
- this._didParseLeaksCallback(this._profile);
- },
-
- _parseLeaks: function(text) {
- var leaks = [];
- var currentSize = 0;
- text.split("\n").forEach(function(line) {
- var match = /^Leak:.*\ssize=(\d+)\s/.exec(line);
- if (match) {
- currentSize = parseInt(match[1], 10);
- return;
- }
- if (!/^\s+Call stack:/.test(line))
- return;
-
- // The first frame is not really a frame at all ("Call stack: thread 0xNNNNN:"), so we omit it.
- leaks.push({ size: currentSize, stack: line.split(" | ").slice(1).map(function(str) { return str.trim(); }) });
- currentSize = 0;
- });
- return leaks;
- },
-
- _createNode: function(functionName) {
- var url;
- var lineNumber;
- var match = /(.*) (\S+):(\d+)$/.exec(functionName);
- if (match) {
- functionName = match[1];
- // FIXME: It would be nice to be able to link straight to the right line in Trac, but to
- // do that we'd have to have some way of translating from filenames to Trac URLs.
- // <http://webkit.org/b/72509>
- url = match[2];
- lineNumber = match[3];
- }
-
- return {
- functionName: functionName,
- selfTime: 0,
- totalTime: 0,
- averageTime: 0,
- numberOfCalls: 0,
- children: [],
- childrenByName: {},
- callUID: functionName,
- url: url,
- lineNumber: lineNumber,
- };
- },
-
- // This function creates a fake "profile" from a set of leak stacks. "selfTime" is the number of
- // stacks in which this function was at the top (in theory, only functions like malloc should have a
- // non-zero selfTime). "totalTime" is the number of stacks which contain this function (and thus is
- // the number of leaks that occurred in or beneath this function).
- // FIXME: This is expensive! Can we parallelize it?
- _incorporateLeaks: function(leaks) {
- var self = this;
- leaks.forEach(function(leak) {
- leak.stack.reduce(function(node, frame, index, array) {
- var childNode;
- if (frame in node.childrenByName)
- childNode = node.childrenByName[frame];
- else {
- childNode = self._createNode(frame);
- childNode.head = self._profile;
- node.childrenByName[frame] = childNode;
- node.children.push(childNode);
- }
- if (index === array.length - 1)
- childNode.selfTime += leak.size;
- childNode.totalTime += leak.size;
- ++childNode.numberOfCalls;
- return childNode;
- }, self._profile);
- });
- self._profile.totalTime = self._profile.children.reduce(function(sum, child) { return sum + child.totalTime; }, 0);
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js
deleted file mode 100644
index 4b0b4f647..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-importScripts("LeaksParserImpl.js");
-
-var parser = new LeaksParserImpl(function(profile) {
- postMessage(profile);
-});
-
-onmessage = function(e) {
- parser.addLeaksFile(e.data);
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css
deleted file mode 100644
index 76d71a81f..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-#url-prompt-container {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- background-color: rgba(0, 0, 0, 0.5);
- z-index: 50000;
-}
-
-#url-prompt {
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
- width: 400px;
- height: 300px;
- margin: auto;
- background-color: white;
- -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.8);
- padding: 50px 0;
- text-align: center;
-}
-
-#loading-indicator {
- position: absolute;
- right: 20px;
- width: 150px;
- margin-top: 5px;
-}
-
-#spinner {
- float: left;
- margin-top: -1px;
-}
-
-#loading-indicator-label {
- margin-left: 5px;
-}
-
-#recent-builds-loading-indicator {
- color: gray;
-}
-
-#recent-builds-list {
- list-style: none;
- margin: 0;
- padding: 0;
-}
-
-/* Inspector style overrides */
-
-.percent-time-status-bar-item {
- /* We always show leak counts as real values, not percentages, so this button isn't useful. */
- display: none !important;
-}
-
-.data-grid .data-container {
- overflow-x: visible;
- overflow-y: auto;
-}
-
-.data-grid td > div, .data-grid th > div {
- overflow: visible;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js
deleted file mode 100644
index a2b225a70..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-var LeaksViewer = {
- loaded: function() {
- this._loader = new LeaksLoader(this._didCountLeaksFiles.bind(this), this._didLoadLeaksFile.bind(this));
- this._parser = new LeaksParser(this._didParseLeaksFile.bind(this));
-
- this._loadingIndicator = document.getElementById("loading-indicator");
- this._loadingIndicatorLabel = document.getElementById("loading-indicator-label");
-
- this._profileView = new WebInspector.CPUProfileView({});
- document.getElementById("main-panels").appendChild(this._profileView.element);
- this._profileView.show();
-
- // From WebInspector.Panel.prototype.show
- var statusBarItems = this._profileView.statusBarItems;
- if (statusBarItems) {
- this._statusBarItemContainer = document.createElement("div");
- for (var i = 0; i < statusBarItems.length; ++i)
- this._statusBarItemContainer.appendChild(statusBarItems[i]);
- document.getElementById("main-status-bar").appendChild(this._statusBarItemContainer);
- }
-
- var url;
- var match = /url=([^&]+)/.exec(location.search);
- if (match)
- url = decodeURIComponent(match[1]);
-
- if (url)
- this._loadLeaksFromURL(url)
- else
- this._displayURLPrompt();
- },
-
- get filesLeftToParse() {
- if (!('_filesLeftToParse' in this))
- this._filesLeftToParse = 0;
- return this._filesLeftToParse;
- },
-
- set filesLeftToParse(x) {
- if (this._filesLeftToParse === x)
- return;
- this._filesLeftToParse = x;
- this._loadingStatusChanged();
- },
-
- get loading() {
- return this._isLoading;
- },
-
- set loading(x) {
- if (this._isLoading === x)
- return;
- this._isLoading = x;
- this._loadingStatusChanged();
- },
-
- get url() {
- return this._url;
- },
-
- set url(x) {
- if (this._url === x)
- return;
-
- this._url = x;
- this._updateTitle();
- },
-
- urlPromptButtonClicked: function(e) {
- this._urlChosenFromPrompt(document.getElementById("url").value);
- },
-
- _didCountLeaksFiles: function(fileCount) {
- this._fileCount = fileCount;
- this.filesLeftToParse = fileCount;
- },
-
- _didLoadLeaksFile: function(leaksText) {
- this._parser.addLeaksFile(leaksText);
- },
-
- _didLoadRecentBuilds: function(builds) {
- this._recentBuilds = builds;
- this._updateURLPrompt();
- },
-
- _didParseLeaksFile: function(profile) {
- if (--this.filesLeftToParse)
- return;
- ProfilerAgent.profileReady(profile);
- this.loading = false;
- },
-
- _displayURLPrompt: function() {
- document.getElementById("url-prompt-container").removeStyleClass("hidden");
- document.getElementById("url").focus();
- var loader = new RecentBuildsLoader(this._didLoadRecentBuilds.bind(this));
- loader.start("Lion Leaks", this._numberOfRecentBuildsToLoad);
- },
-
- _loadLeaksFromURL: function(url) {
- this.url = url;
- this.loading = true;
-
- this._loader.start(this.url);
- },
-
- _loadingIndicatorText: function() {
- var text = "Loading";
- if (this.filesLeftToParse)
- text += " " + (this._fileCount - this.filesLeftToParse + 1) + "/" + this._fileCount + " files";
- text += "\u2026";
- return text;
- },
-
- _loadingStatusChanged: function() {
- this._setLoadingIndicatorHidden(!this.loading);
- this._updateLoadingIndicatorLabel();
- this._updateTitle();
- },
-
- _numberOfRecentBuildsToLoad: 10,
-
- _setLoadingIndicatorHidden: function(hidden) {
- if (hidden)
- this._loadingIndicator.addStyleClass("hidden");
- else
- this._loadingIndicator.removeStyleClass("hidden");
- },
-
- _updateLoadingIndicatorLabel: function() {
- this._loadingIndicatorLabel.innerText = this._loadingIndicatorText();
- },
-
- _updateTitle: function() {
- var title = "Leaks Viewer \u2014 ";
- if (this.loading)
- title += "(" + this._loadingIndicatorText() + ") ";
- title += this.url;
- document.title = title;
- },
-
- _updateURLPrompt: function() {
- var recentBuildsContainer = document.getElementById("recent-builds-container");
- recentBuildsContainer.removeChildren();
- if (this._recentBuilds && this._recentBuilds.length) {
- var list = document.createElement("ol");
- list.id = "recent-builds-list";
-
- var self = this;
- this._recentBuilds.forEach(function(build) {
- var link = document.createElement("a");
- link.href = document.location.href + "?url=" + encodeURIComponent(build.url);
- link.addEventListener("click", function(e) {
- self._urlChosenFromPrompt(build.url);
- e.preventDefault();
- });
- link.appendChild(document.createTextNode("r" + build.revision + ": " + build.leakCount + " leaks"));
- var item = document.createElement("li");
- item.appendChild(link);
-
- list.appendChild(item);
- });
-
- recentBuildsContainer.appendChild(list);
- } else
- recentBuildsContainer.appendChild(document.createTextNode("No recent leaky builds found."));
- },
-
- _urlChosenFromPrompt: function(url) {
- this._loadLeaksFromURL(url);
- document.getElementById("url-prompt-container").addStyleClass("hidden");
- },
-
-};
-
-addEventListener("load", LeaksViewer.loaded.bind(LeaksViewer));
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js
deleted file mode 100644
index 33fd00c10..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function RecentBuildsLoader(didLoadRecentBuildsCallback) {
- this._didLoadRecentBuildsCallback = didLoadRecentBuildsCallback;
-}
-
-RecentBuildsLoader.prototype = {
- start: function(builderName, maximumNumberOfBuilds) {
- var url = this._buildbotBaseURL + "/json/builders/" + builderName + "/builds/?";
- url += range(maximumNumberOfBuilds).map(function(n) { return "select=-" + (n + 1); }).join("&");
- var self = this;
- getResource(url, function(xhr) {
- var data = JSON.parse(xhr.responseText);
- var builds = [];
- Object.keys(data).forEach(function(buildNumber) {
- var build = data[buildNumber];
-
- var buildInfo = {
- revision: parseInt(build.properties.first(function(property) { return property[0] === "got_revision"; })[1], 10),
- leakCount: 0,
- url: null,
- };
- for (var stepIndex = 0; stepIndex < build.steps.length; ++stepIndex) {
- var step = build.steps[stepIndex];
- if (step.name === "layout-test") {
- if (!("text" in step))
- continue;
- var strings = step.text;
- for (var stringIndex = 0; stringIndex < strings.length; ++stringIndex) {
- var match = /^(\d+) total leaks found/.exec(strings[stringIndex]);
- if (!match)
- continue;
- buildInfo.leakCount = parseInt(match[1], 10);
- break;
- }
- } else if (step.name === "MasterShellCommand") {
- if (!("urls" in step))
- return;
- if (!("view results" in step.urls))
- return;
- var url = step.urls["view results"];
- buildInfo.url = self._buildbotBaseURL + url.replace(/\/results\.html$/, "") + "/";
- }
-
- if (buildInfo.leakCount && buildInfo.url) {
- builds.push(buildInfo);
- break;
- }
- }
- });
- // Sort descending by revision.
- builds.sort(function(a, b) { return b.revision - a.revision; });
- self._didLoadRecentBuildsCallback(builds);
- });
- },
-
- _buildbotBaseURL: "http://build.webkit.org/",
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js
deleted file mode 100644
index 32fe7cb93..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function getResource(url, callback) {
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- // Allow a status of 0 for easier testing with local files.
- if (this.readyState == 4 && (!this.status || this.status == 200))
- callback(this);
- };
- xhr.open("GET", url);
- xhr.send();
-}
-
-function range(n) {
- var result = new Array(n);
- for (var i = 0; i < n; ++i)
- result[i] = i;
- return result;
-}
-
-function workersSupportCyclicStructures() {
- var worker = new Worker("Utilities.js");
- var supportsCyclicStructures = true;
-
- try {
- var cyclicStructure = { cycle: null };
- cyclicStructure.cycle = cyclicStructure;
-
- worker.postMessage(cyclicStructure);
- } catch(e) {
- supportsCyclicStructures = false;
- }
-
- return supportsCyclicStructures;
-}
-
-Array.prototype.first = function(predicate) {
- for (var i = 0; i < this.length; ++i) {
- if (predicate(this[i]))
- return this[i];
- }
- return null;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js
deleted file mode 100644
index d7c13095f..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 file contains definitions that are needed to satisfy the Web Inspector JavaScript files we
-// import.
-
-var WebInspector = {
- displayNameForURL: function(url) {
- return url;
- },
-
- linkifyURLAsNode: function(url, linkText, classes, tooltipText) {
- if (!linkText)
- linkText = url;
- classes = (classes ? classes + " " : "");
-
- // FIXME: Create an <a> element here once we actually have somewhere useful to link to.
- // <http://webkit.org/b/72509>
- var a = document.createElement("span");
- a.href = url;
- a.className = classes;
- if (typeof tooltipText === "undefined")
- a.title = url;
- else if (typeof tooltipText !== "string" || tooltipText.length)
- a.title = tooltipText;
- a.textContent = linkText;
-
- return a;
- },
-
- linkifyResourceAsNode: function(url, preferredPanel, lineNumber, classes, tooltipText) {
- var linkText = WebInspector.displayNameForURL(url);
- if (lineNumber)
- linkText += ":" + lineNumber;
- return WebInspector.linkifyURLAsNode(url, linkText, classes, tooltipText);
- },
-
- UIString: function(string) {
- return String.vsprintf(string, Array.prototype.slice.call(arguments, 1));
- },
-};
-
-var Preferences = {
- // Setting this to false causes the "Average" and "Calls" columns to be shown.
- samplingCPUProfiler: false,
-};
-
-var ProfilerAgent = {
- getProfile: function(typeId, uid, callback) {
- this._callback = callback;
- },
-
- profileReady: function(head) {
- this._callback({ head: head });
- },
-};
-
-// This function makes any required changes to objects imported from the Web Inspector JavaScript
-// files.
-function monkeyPatchInspectorObjects() {
- var originalGetter = WebInspector.ProfileDataGridNode.prototype.__lookupGetter__("data");
- WebInspector.ProfileDataGridNode.prototype.__defineGetter__("data", function() {
- var data = originalGetter.call(this);
-
- // ProfileDataGridNode formats values as milliseconds, but we are instead measuring bytes.
- if (!this.profileView.showSelfTimeAsPercent)
- data.self = Number.bytesToString(this.selfTime);
- if (!this.profileView.showTotalTimeAsPercent)
- data.total = Number.bytesToString(this.totalTime);
- if (!this.profileView.showAverageTimeAsPercent)
- data.average = Number.bytesToString(this.averageTime);
-
- return data;
- });
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html
deleted file mode 100644
index 914e74f60..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<!--
-Copyright (C) 2011 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. 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 INC. 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.
--->
-
-<!DOCTYPE html>
-<html>
-<head>
- <title>Leaks Viewer</title>
- <link rel=stylesheet href="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/inspector.css">
- <link rel=stylesheet href=LeaksViewer.css>
-
- <script src=WebInspectorShims.js></script>
-
- <!-- The order here matches inspector.html. -->
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/utilities.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/treeoutline.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/Object.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/View.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/Panel.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/DataGrid.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/SidebarTreeElement.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/StatusBarButton.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/ProfilesPanel.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/ProfileDataGridTree.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/BottomUpProfileDataGridTree.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/TopDownProfileDataGridTree.js"></script>
- <script src="http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/ProfileView.js"></script>
-
- <script>
- // Now that all the Inspector files have loaded we can apply our monkey patches.
- monkeyPatchInspectorObjects();
- </script>
-
- <script src=LeaksLoader.js></script>
- <script src=LeaksParser.js></script>
- <script src=LeaksParserImpl.js></script>
- <script src=LeaksViewer.js></script>
- <script src=RecentBuildsLoader.js></script>
- <script src=Utilities.js></script>
-</head>
-<body>
- <div id=main-panels></div>
- <div id=main-status-bar class=status-bar>
- <div id=loading-indicator class=hidden>
- <img id=spinner src=http://svn.webkit.org/repository/webkit/!svn/bc/80565/trunk/Source/WebCore/inspector/front-end/Images/spinner.gif>
- <span id=loading-indicator-label>Loading&hellip;</span>
- </div>
- </div>
- <div id=url-prompt-container class=hidden>
- <div id=url-prompt>
- <p>Enter the URL of a build results page or leaks file:</p>
- <input id=url type=url><button onclick='LeaksViewer.urlPromptButtonClicked(event)'>Fetch leaks</button>
- <p>Or choose a recent build:</p>
- <div id=recent-builds-container>
- <p id=recent-builds-loading-indicator>Loading builds&hellip;</p>
- </div>
- </div>
- </div>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon.ico b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon.ico
deleted file mode 100644
index d988dfc51..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html
deleted file mode 100644
index 26151fff7..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2011 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:
-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. 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 INC. 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.
-
-The favicons are from the awesome famfamfam.com, which is the website of Mark
-James, a web developer from Birmingham, UK.
--->
-<html>
-<head>
-<meta http-equiv="X-WebKit-CSP" content="default-src 'none';
- script-src 'self' file: https://ajax.googleapis.com;
- style-src 'self' 'unsafe-inline' file: https://ajax.googleapis.com http://fonts.googleapis.com;
- font-src http://themes.googleusercontent.com;
- img-src 'self' https://ajax.googleapis.com http://build.webkit.org;
- media-src 'self' http://build.webkit.org;
- frame-src 'self' http://build.webkit.org http://webkit-test-results.appspot.com;
- connect-src 'self' http://trac.webkit.org http://build.webkit.org">
-<title>Garden-O-Matic</title>
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700">
-<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.css">
-<link rel="stylesheet" href="styles/common.css">
-<link rel="stylesheet" href="styles/onebar.css">
-<link rel="stylesheet" href="styles/failures.css">
-<link rel="stylesheet" href="styles/results.css">
-<link rel="stylesheet" href="styles/notifications.css">
-<link rel="stylesheet" href="styles/perf.css">
-<link rel="stylesheet" href="styles/pixelzoomer.css">
-</head>
-<body>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
-<script src="scripts/base.js"></script>
-<script src="scripts/config.js"></script>
-<script src="scripts/net.js"></script>
-<script src="scripts/Trac.js"></script>
-<script src="scripts/Bugzilla.js"></script>
-<script src="scripts/builders.js"></script>
-<script src="scripts/checkout.js"></script>
-<script src="scripts/results.js"></script>
-<script src="scripts/ui.js"></script>
-<script src="scripts/model.js"></script>
-<script src="scripts/ui/actions.js"></script>
-<script src="scripts/ui/failures.js"></script>
-<script src="scripts/ui/notifications.js"></script>
-<script src="scripts/ui/perf.js"></script>
-<script src="scripts/ui/results.js"></script>
-<script src="scripts/controllers.js"></script>
-<script src="scripts/pixelzoomer.js"></script>
-<script src="scripts/garden-o-matic.js"></script>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-green.png b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-green.png
deleted file mode 100755
index 89c8129a4..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-green.png
+++ /dev/null
Binary files differ
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-red.png b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-red.png
deleted file mode 100755
index c37bd062e..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-red.png
+++ /dev/null
Binary files differ
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/partytime.gif b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/partytime.gif
deleted file mode 100644
index 1793d9b4a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/partytime.gif
+++ /dev/null
Binary files differ
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html
deleted file mode 100644
index 9e4ce7575..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html
+++ /dev/null
@@ -1,61 +0,0 @@
-<!--
-Copyright (C) 2011 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. 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 INC. 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.
--->
-
-<!DOCTYPE html>
-<html>
-<head>
- <link rel="stylesheet" href="styles/TestFailures.css"></link>
- <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-
- <script src="scripts/config.js"></script>
- <script src="scripts/base.js"></script>
- <script src="scripts/net.js"></script>
- <script src="scripts/Trac.js"></script>
-
- <script src="scripts/Utilities.js"></script>
- <script src="scripts/NewBugForm.js"></script>
- <script src="scripts/TestRelatedBugForm.js"></script>
- <script src="scripts/FailingTestsBugForm.js"></script>
- <script src="scripts/FlakyTestBugForm.js"></script>
-
- <script src="scripts/Bugzilla.js"></script>
- <script src="scripts/Buildbot.js"></script>
- <script src="scripts/Builder.js"></script>
- <script src="scripts/FlakyLayoutTestDetector.js"></script>
- <script src="scripts/LayoutTestHistoryAnalyzer.js"></script>
- <script src="scripts/LayoutTestResultsLoader.js"></script>
- <script src="scripts/NRWTResultsParser.js"></script>
- <script src="scripts/ORWTResultsParser.js"></script>
- <script src="scripts/PersistentCache.js"></script>
- <script src="scripts/ViewController.js"></script>
- <script src="scripts/WebKitBugzilla.js"></script>
- <script src="scripts/WebKitBuildbot.js"></script>
- <script>
- var viewController = new ViewController(new WebKitBuildbot());
- </script>
-</head>
-<body>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html
deleted file mode 100644
index 5119a4b27..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html
+++ /dev/null
@@ -1,46 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2011 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:
-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. 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 INC. 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>
-<head>
-<title>Garden-O-Matic Rebaseline</title>
-<link rel="stylesheet" href="styles/main.css">
-<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/themes/base/jquery-ui.css">
-</head>
-<body>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
-<script src="scripts/config.js"></script>
-<script src="scripts/base.js"></script>
-<script src="scripts/net.js"></script>
-<script src="scripts/checkout.js"></script>
-<script src="scripts/results.js"></script>
-<script src="scripts/ui.js"></script>
-<script src="scripts/ui/results.js"></script>
-<script src="scripts/model.js"></script>
-<script src="scripts/controllers.js"></script>
-<script src="scripts/controllers/rebaseline.js"></script>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html
deleted file mode 100644
index 2ce6e71d3..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html
+++ /dev/null
@@ -1,103 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2011 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:
-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. 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 INC. 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>
-<head>
-<link rel="stylesheet" href="../../../../../Source/ThirdParty/qunit/qunit/qunit.css">
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
-<script src="../../../../../Source/ThirdParty/qunit/qunit/qunit.js"></script>
-</head>
-<body>
-<h1 id="qunit-header">TestFailures JavaScript Unit Tests</h1>
-<h2 id="qunit-banner"></h2>
-<div id="qunit-testrunner-toolbar"></div>
-<h2 id="qunit-userAgent"></h2>
-<ol id="qunit-tests"></ol>
-
-<link rel="stylesheet" href="styles/results.css">
-
-<script src="scripts/base.js"></script>
-<script src="scripts/config.js"></script>
-<script src="scripts/base_unittests.js"></script>
-<script src="scripts/net.js"></script>
-<script src="scripts/net_unittests.js"></script>
-<script src="scripts/Trac.js"></script>
-<script src="scripts/trac_unittests.js"></script>
-<script src="scripts/Bugzilla.js"></script>
-<script src="scripts/bugzilla_unittests.js"></script>
-<script src="scripts/builders.js"></script>
-<script src="scripts/builders_unittests.js"></script>
-<script src="scripts/checkout.js"></script>
-<script src="scripts/checkout_unittests.js"></script>
-<script src="scripts/results.js"></script>
-<script src="scripts/results_unittests.js"></script>
-<script src="scripts/ui.js"></script>
-<script src="scripts/ui/actions.js"></script>
-<script src="scripts/ui/actions_unittests.js"></script>
-<script src="scripts/ui/failures.js"></script>
-<script src="scripts/ui/failures_unittests.js"></script>
-<script src="scripts/ui/results.js"></script>
-<script src="scripts/controllers.js"></script> <!-- This script is slightly of order. -->
-<script src="scripts/ui/results_unittests.js"></script>
-<script src="scripts/ui_unittests.js"></script>
-<script src="scripts/model.js"></script>
-<script src="scripts/model_unittests.js"></script>
-<script src="scripts/ui/notifications.js"></script>
-<script src="scripts/ui/notifications_unittests.js"></script>
-<script src="scripts/ui/perf.js"></script>
-<script src="scripts/ui/perf_unittests.js"></script>
-<script src="scripts/controllers_unittests.js"></script>
-
-<!-- FIXME: We should have tests for these files! -->
-<script src="scripts/Bugzilla.js"></script>
-<script src="scripts/WebKitBugzilla.js"></script>
-
-<script src="scripts/Utilities.js"></script>
-<script src="scripts/Utilities_unittests.js"></script>
-
-<script src="scripts/NewBugForm.js"></script>
-<script src="scripts/NewBugForm_unittests.js"></script>
-
-<script src="scripts/TestRelatedBugForm.js"></script>
-<script src="scripts/TestRelatedBugForm_unittests.js"></script>
-
-<script src="scripts/FailingTestsBugForm.js"></script>
-<script src="scripts/FailingTestsBugForm_unittests.js"></script>
-
-<script src="scripts/FlakyTestBugForm.js"></script>
-<script src="scripts/FlakyTestBugForm_unittests.js"></script>
-
-<script src="scripts/FlakyLayoutTestDetector.js"></script>
-<script src="scripts/FlakyLayoutTestDetector_unittests.js"></script>
-
-<script src="scripts/Buildbot.js"></script>
-<script src="scripts/Buildbot_unittests.js"></script>
-
-<script src="scripts/Builder.js"></script>
-<script src="scripts/Builder_unittests.js"></script>
-
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js
deleted file mode 100644
index 2c441fb59..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-var bugzilla = bugzilla || {};
-
-(function() {
-
-var kOpenStatuses = {
- UNCONFIRMED: true,
- NEW: true,
- ASSIGNED: true,
- REOPENED: true,
-};
-
-function createDetachedFragment(htmlFragment)
-{
- // Step 1: Create a detached Document to perform the parsing.
- var detachedDocument = document.implementation.createHTMLDocument();
-
- // Step 2: Create a detached Element associated with the detached Document.
- var container = detachedDocument.createElement('div');
-
- // Step 3: Pull the trigger.
- container.innerHTML = htmlFragment;
- return container;
-}
-
-var g_searchCache = new base.AsynchronousCache(function(query, callback) {
- var url = config.kBugzillaURL + '/buglist.cgi?' + $.param({
- ctype: 'rss',
- order: 'bugs.bug_id desc',
- quicksearch: query,
- });
-
- net.get(url, function(responseXML) {
- var entries = responseXML.getElementsByTagName('entry');
- var results = Array.prototype.map.call(entries, function(entry) {
- var htmlFragment = entry.getElementsByTagName('summary')[0].textContent;
- var fragment = createDetachedFragment(htmlFragment);
- var statusRow = fragment.querySelector('tr.bz_feed_bug_status');
- return {
- title: entry.getElementsByTagName('title')[0].textContent,
- url: entry.getElementsByTagName('id')[0].textContent,
- status: statusRow.cells[1].textContent,
- };
- });
- callback(results);
- });
-});
-
-bugzilla.bugURL = function(bugNumber)
-{
- return config.kBugzillaURL + '/show_bug.cgi?id=' + bugNumber;
-};
-
-bugzilla.quickSearch = function(query, callback)
-{
- g_searchCache.get(query, callback);
-};
-
-bugzilla.isOpenStatus = function(status)
-{
- return status in kOpenStatuses;
-};
-
-// This value is built-in to all Bugzilla installations. See <http://webkit.org/b/61660>.
-bugzilla.kMaximumBugTitleLength = 255;
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js
deleted file mode 100644
index c500a5dd3..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function Buildbot(baseURL) {
- this.baseURL = baseURL;
- this._cache = {};
-}
-
-Buildbot.prototype = {
- _builders: {},
- _resultsDirectory: 'results/',
-
- buildURL: function(builderName, buildName) {
- return this.baseURL + 'builders/' + builderName + '/builds/' + buildName;
- },
-
- builderNamed: function(name) {
- if (!(name in this._builders))
- this._builders[name] = new Builder(name, this);
- return this._builders[name];
- },
-
- getTesters: function(callback) {
- var cacheKey = 'getTesters';
- if (cacheKey in this._cache) {
- callback(this._buildersForNames(this._cache[cacheKey]));
- return;
- }
-
- var self = this;
- getResource(this.baseURL + this._resultsDirectory, function(xhr) {
- var root = document.createElement('html');
- root.innerHTML = xhr.responseText;
- var names = Array.prototype.map.call(root.querySelectorAll('td:first-child > a > b'), function(elem) {
- return elem.innerText.replace(/\/$/, '');
- });
-
- self._cache[cacheKey] = names;
- callback(self._buildersForNames(names));
- });
- },
-
- // Returns an object with at least the following properties:
- // revision: source revision number for this build (integer)
- // buildNumber: number of this build (integer)
- parseBuildName: function(buildName) {
- throw "Derived classes must implement";
- },
-
- resultsDirectoryURL: function(builderName, buildName) {
- return this.baseURL + this._resultsDirectory + encodeURIComponent(builderName) + '/' + encodeURIComponent(buildName) + '/';
- },
-
- _buildersForNames: function(names) {
- var self = this;
- return names.map(function(name) { return self.builderNamed(name) });
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot_unittests.js
deleted file mode 100644
index 5b48fcecb..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot_unittests.js
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('Buildbot');
-
-test('resultsDirectoryURL is URI-encoded', 1, function() {
- var buildbot = new Buildbot('http://build.example.com/');
- equal(buildbot.resultsDirectoryURL('Windows 7 Release (Tests)', 'r10 (5)'), 'http://build.example.com/results/Windows%207%20Release%20(Tests)/r10%20(5)/');
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder.js
deleted file mode 100644
index 0e7bc4591..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder.js
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function Builder(name, buildbot) {
- this.name = name;
- this.buildbot = buildbot;
- this._cache = {};
-}
-
-Builder.prototype = {
- buildURL: function(buildName) {
- return this.buildbot.buildURL(this.name, buildName);
- },
-
- failureDiagnosisTextAndURL: function(buildName, testName, testResult) {
- var urlStem = this.resultsDirectoryURL(buildName) + testName.replace(/\.[^.]+$/, '');
- var diagnosticInfo = {
- fail: {
- text: 'pretty diff',
- url: urlStem + '-pretty-diff.html',
- },
- flaky: {
- text: 'pretty diff (flaky)',
- url: urlStem + '-pretty-diff.html',
- },
- timeout: {
- text: 'timed out',
- },
- crash: {
- text: 'crash log',
- url: urlStem + '-crash-log.txt',
- },
- 'webprocess crash': {
- text: 'web process crash log',
- url: urlStem + '-crash-log.txt',
- },
- };
-
- return diagnosticInfo[testResult.failureType];
- },
-
- getBuildNames: function(callback) {
- this._getBuildNamesFromResultsDirectory(this.buildbot.baseURL + 'results/' + this.name, callback);
- },
-
- getMostRecentCompletedBuildNumber: function(callback) {
- var cacheKey = 'getMostRecentCompletedBuildNumber';
- if (cacheKey in this._cache) {
- callback(this._cache[cacheKey]);
- return;
- }
-
- var self = this;
- getResource(self.buildbot.baseURL + 'json/builders/' + self.name, function(xhr) {
- var data = JSON.parse(xhr.responseText);
-
- var currentBuilds = {};
- if ('currentBuilds' in data)
- data.currentBuilds.forEach(function(buildNumber) { currentBuilds[buildNumber] = true });
-
- for (var i = data.cachedBuilds.length - 1; i >= 0; --i) {
- if (data.cachedBuilds[i] in currentBuilds)
- continue;
-
- self._cache[cacheKey] = data.cachedBuilds[i];
- callback(data.cachedBuilds[i]);
- return;
- }
-
- self._cache[cacheKey] = -1;
- callback(self._cache[cacheKey]);
- },
- function(xhr) {
- self._cache[cacheKey] = -1;
- callback(self._cache[cacheKey]);
- });
- },
-
- getNumberOfFailingTests: function(buildNumber, callback) {
- var cacheKey = this.name + '_getNumberOfFailingTests_' + buildNumber;
- const currentCachedDataVersion = 3;
- if (PersistentCache.contains(cacheKey)) {
- var cachedData = PersistentCache.get(cacheKey);
- if (cachedData.version === currentCachedDataVersion) {
- callback(cachedData.failureCount, cachedData.tooManyFailures);
- return;
- }
- }
-
- var result = { failureCount: -1, tooManyFailures: false, version: currentCachedDataVersion };
-
- var self = this;
- self._getBuildJSON(buildNumber, function(data) {
- var layoutTestStep = data.steps.findFirst(function(step) { return step.name === 'layout-test'; });
- if (!layoutTestStep) {
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- return;
- }
-
- if (!('isFinished' in layoutTestStep)) {
- // run-webkit-tests never even ran, or didn't finish running.
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- return;
- }
-
- if (!('results' in layoutTestStep) || layoutTestStep.results[0] === 0) {
- if (!('times' in layoutTestStep) || layoutTestStep.times.length < 2 || layoutTestStep.times[1] - layoutTestStep.times[0] < self._minimumSuccessfulLayoutTestStepRunTime) {
- // Either something caused the start/stop times not to be recorded, or
- // run-webkit-tests ran so quickly that we can't believe there wasn't an error
- // (e.g., a bug in the script that made it not find any tests to run).
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- return;
- }
-
- // All tests passed.
- result.failureCount = 0;
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- return;
- }
-
- if (layoutTestStep.results[0] === 4) {
- // This build step was interrupted (perhaps due to the build slave restarting).
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- return;
- }
-
- if (/Exiting early/.test(layoutTestStep.results[1][0]))
- result.tooManyFailures = true;
-
- result.failureCount = layoutTestStep.results[1].reduce(function(sum, outputLine) {
- var match = /^(\d+)\s/.exec(outputLine);
- if (!match)
- return sum;
- // Don't count leaks, new tests, or passes as failures.
- if (outputLine.contains('leak') || outputLine.contains('were new') || outputLine.contains('new passes'))
- return sum;
- return sum + parseInt(match[1], 10);
- }, 0);
-
- if (!result.failureCount) {
- // run-webkit-tests exited with a non-zero exit status, but we
- // didn't find any output about the number of failed tests.
- // Something must have gone wrong (e.g., run-webkit-tests timed
- // out and was killed by buildbot).
- result.failureCount = -1;
- }
-
- PersistentCache.set(cacheKey, result);
- callback(result.failureCount, result.tooManyFailures);
- });
- },
-
- getOldBuildNames: function(callback) {
- this._getBuildNamesFromResultsDirectory(this.buildbot.baseURL + 'old-results/' + this.name, callback);
- },
-
- resultsDirectoryURL: function(buildName) {
- return this.buildbot.resultsDirectoryURL(this.name, buildName);
- },
-
- resultsPageURL: function(buildName) {
- return this.resultsDirectoryURL(buildName) + 'results.html';
- },
-
- _getBuildJSON: function(buildNumber, callback) {
- var cacheKey = 'getBuildJSON_' + buildNumber;
- if (cacheKey in this._cache) {
- callback(this._cache[cacheKey]);
- return;
- }
-
- var self = this;
- getResource(self.buildbot.baseURL + 'json/builders/' + self.name + '/builds/' + buildNumber, function(xhr) {
- var data = JSON.parse(xhr.responseText);
- self._cache[cacheKey] = data;
- callback(data);
- });
- },
-
- _getBuildNamesFromResultsDirectory: function(directoryURL, callback) {
- var cacheKey = '_getBuildNamesFromResultsDirectory.' + directoryURL;
- if (cacheKey in this._cache) {
- callback(this._cache[cacheKey]);
- return;
- }
-
- var self = this;
-
- function buildNamesFromDirectoryXHR(xhr) {
- var root = document.createElement('html');
- root.innerHTML = xhr.responseText;
-
- var buildNames = Array.prototype.map.call(root.querySelectorAll('td:first-child > a > b'), function(elem) {
- return elem.innerText.replace(/\/$/, '');
- }).filter(function(filename) {
- return self.buildbot.parseBuildName(filename);
- });
- buildNames.reverse();
-
- return buildNames;
- }
-
- getResource(directoryURL, function(xhr) {
- var buildNames = buildNamesFromDirectoryXHR(xhr);
- self._cache[cacheKey] = buildNames;
- callback(buildNames);
- });
- },
-
- // Any successful runs of run-webkit-tests that took less than this number of seconds are
- // assumed to be errors.
- _minimumSuccessfulLayoutTestStepRunTime: 20,
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder_unittests.js
deleted file mode 100644
index 0b980ab90..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder_unittests.js
+++ /dev/null
@@ -1,269 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module("Builder");
-
-function runGetNumberOfFailingTestsTest(jsonData, callback) {
- var mockBuildbot = {};
- mockBuildbot.baseURL = 'http://example.com/';
-
- var builder = new Builder('test builder', mockBuildbot);
-
- var realGetResource = window.getResource;
- window.getResource = function(url, successCallback, errorCallback) {
- var mockXHR = {};
- mockXHR.responseText = JSON.stringify(jsonData);
-
- // FIXME: It would be better for this callback to happen
- // asynchronously, to match what happens for real requests.
- successCallback(mockXHR);
- };
-
- // FIXME: It's lame to be modifying singletons like this. We should get rid
- // of our singleton usage entirely!
- ok(!("PersistentCache" in window));
- window.PersistentCache = {
- contains: function() { return false; },
- set: function() { },
- get: function() { },
- };
-
- builder.getNumberOfFailingTests(1, callback);
-
- window.getResource = realGetResource;
- equal(window.getResource, realGetResource);
- delete window.PersistentCache;
-}
-
-test("getNumberOfFailingTests shouldn't include leaks", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: 'layout-test',
- results: [
- 2,
- [
- "2178 total leaks found!",
- "2 test cases (<1%) had incorrect layout",
- "2 test cases (<1%) crashed",
- ],
- ],
- times: [
- 1310599204.1231229,
- 1310600152.973659,
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, 4);
- equal(tooManyFailures, false);
- });
-});
-
-test("getNumberOfFailingTests detects spurious run-webkit-tests failures", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: "layout-test",
- results: [
- 2,
- [
- "layout-test"
- ]
- ],
- step_number: 7,
- text: [
- "layout-test"
- ],
- times: [
- 1310437736.00494,
- 1310440118.038023
- ],
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, -1);
- equal(tooManyFailures, false);
- });
-});
-
-test("getNumberOfFailingTests understands NRWT exiting early due to too many failures", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: "layout-test",
- results: [
- 2,
- [
- "2011-07-13 04:38:46,315 11247 manager.py:780 WARNING Exiting early after 20 crashes and 0 timeouts. 2251 tests run.",
- "20 failed"
- ]
- ],
- step_number: 4,
- text: [
- "2011-07-13 04:38:46,315 11247 manager.py:780 WARNING Exiting early after 20 crashes and 0 timeouts. 2251 tests run.",
- "20 failed"
- ],
- times: [
- 1310557115.793082,
- 1310557129.832104
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, 20);
- equal(tooManyFailures, true);
- });
-});
-
-test("getNumberOfFailingTests treats build step interruptions as errors", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: "layout-test",
- results: [
- 4,
- [
- "interrupted",
- ]
- ],
- step_number: 5,
- text: [
- "layout-test",
- "interrupted",
- ],
- times: [
- 1310599204.1231229,
- 1310600152.973659,
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, -1);
- equal(tooManyFailures, false);
- });
-});
-
-test("getNumberOfFailingTests treats unfinished test runs as errors", 4, function() {
- const jsonData = {
- steps: [
- {
- isStarted: true,
- name: "layout-test",
- step_number: 5,
- text: [
- "layout-tests running"
- ],
- times: [
- 1312989295.518481,
- null
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, -1);
- equal(tooManyFailures, false);
- });
-});
-
-test("getNumberOfFailingTests treats successful but unbelievably short test runs as errors", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: "layout-test",
- step_number: 7,
- text: [
- "layout-test"
- ],
- times: [
- 1311288797.7207019,
- 1311288802.7791941
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, -1);
- equal(tooManyFailures, false);
- });
-});
-
-test("getNumberOfFailingTests doesn't care if a failing run is unbelievably short", 4, function() {
- const jsonData = {
- steps: [
- {
- isFinished: true,
- isStarted: true,
- name: "layout-test",
- results: [
- 2,
- [
- "2011-07-13 04:38:46,315 11247 manager.py:780 WARNING Exiting early after 20 crashes and 0 timeouts. 2251 tests run.",
- "20 failed"
- ]
- ],
- step_number: 4,
- text: [
- "2011-07-13 04:38:46,315 11247 manager.py:780 WARNING Exiting early after 20 crashes and 0 timeouts. 2251 tests run.",
- "20 failed"
- ],
- times: [
- 1310557115.793082,
- 1310557119.832104
- ]
- },
- ],
- };
-
- runGetNumberOfFailingTestsTest(jsonData, function(failureCount, tooManyFailures) {
- equal(failureCount, 20);
- equal(tooManyFailures, true);
- });
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js
deleted file mode 100644
index e2836a946..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function FailingTestsBugForm(tester, failingBuildName, passingBuildName, failingTests) {
- TestRelatedBugForm.call(this, tester);
-
- this._failingBuildName = failingBuildName;
- this._passingBuildName = passingBuildName;
- this._failingTests = failingTests;
-
- this.description = this._createBugDescription();
- // FIXME: When a newly-added test has been failing since its introduction, it isn't really a
- // "regression". We should use different keywords in that case. <http://webkit.org/b/61645>
- this.keywords += ', ' + WebKitBugzilla.Keyword.Regression;
- this.title = this._createBugTitle();
- this.url = this._failingResultsHTMLURL();
-}
-
-FailingTestsBugForm.prototype = {
- _createBugDescription: function() {
- var firstSuspectRevision = this._passingRevision() ? this._passingRevision() + 1 : this._failingRevision();
- var lastSuspectRevision = this._failingRevision();
-
- var endOfFirstSentence;
- if (this._passingBuildName) {
- endOfFirstSentence = 'started failing on ' + this._tester.name;
- if (firstSuspectRevision === lastSuspectRevision)
- endOfFirstSentence += ' in r' + firstSuspectRevision + ' <' + trac.changesetURL(firstSuspectRevision) + '>';
- else
- endOfFirstSentence += ' between r' + firstSuspectRevision + ' and r' + lastSuspectRevision + ' (inclusive)';
- } else
- endOfFirstSentence = (this._failingTests.length === 1 ? 'has' : 'have') + ' been failing on ' + this._tester.name + ' since at least r' + firstSuspectRevision + ' <' + trac.changesetURL(firstSuspectRevision) + '>';
- var description;
- if (this._failingTests.length === 1)
- description = this._failingTests[0] + ' ' + endOfFirstSentence + '.\n\n';
- else if (this._failingTests.length === 2)
- description = this._failingTests.join(' and ') + ' ' + endOfFirstSentence + '.\n\n';
- else {
- description = 'The following tests ' + endOfFirstSentence + ':\n\n'
- + this._failingTests.map(function(test) { return ' ' + test }).join('\n')
- + '\n\n';
- }
- if (firstSuspectRevision !== lastSuspectRevision)
- description += trac.logURL('trunk', firstSuspectRevision, lastSuspectRevision) + '\n\n';
- if (this._passingBuildName)
- description += this._tester.resultsPageURL(this._passingBuildName) + ' passed\n';
- description += this._failingResultsHTMLURL() + ' failed\n';
-
- return description;
- },
-
- _createBugTitle: function() {
- // FIXME: When a newly-added test has been failing since its introduction, it isn't really a
- // "regression". We should use a different title in that case. <http://webkit.org/b/61645>
-
- var titlePrefix = 'REGRESSION (' + this._regressionRangeString() + '): ';
- var titleSuffix = ' failing on ' + this._tester.name;
- var title = titlePrefix + this._failingTests.join(', ') + titleSuffix;
-
- if (title.length <= bugzilla.kMaximumBugTitleLength)
- return title;
-
- var pathPrefix = longestCommonPathPrefix(this._failingTests);
- if (pathPrefix) {
- title = titlePrefix + this._failingTests.length + ' ' + pathPrefix + ' tests' + titleSuffix;
- if (title.length <= bugzilla.kMaximumBugTitleLength)
- return title;
- }
-
- title = titlePrefix + this._failingTests.length + ' tests' + titleSuffix;
-
- console.assert(title.length <= bugzilla.kMaximumBugTitleLength);
- return title;
- },
-
- _failingResultsHTMLURL: function() {
- return this._tester.resultsPageURL(this._failingBuildName);
- },
-
- _failingRevision: function() {
- return this._tester.buildbot.parseBuildName(this._failingBuildName).revision;
- },
-
- _passingRevision: function() {
- if (!this._passingBuildName)
- return null;
- return this._tester.buildbot.parseBuildName(this._passingBuildName).revision;
- },
-
- _regressionRangeString: function() {
- var failingRevision = this._failingRevision();
- var passingRevision = this._passingRevision();
- if (!passingRevision || failingRevision - passingRevision <= 1)
- return 'r' + failingRevision;
- return 'r' + passingRevision + '-r' + failingRevision;
- },
-};
-
-FailingTestsBugForm.prototype.__proto__ = TestRelatedBugForm.prototype;
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm_unittests.js
deleted file mode 100644
index 72ebf56a0..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm_unittests.js
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('FailingTestsBugForm');
-
-function createTestForm(testerName, failingBuildName, passingBuildName, failingTests) {
- var mockBuildbot = {};
- mockBuildbot.parseBuildName = function(buildName) {
- var match = /(\d+)/.exec(buildName);
- return {
- revision: parseInt(match[1], 10),
- buildNumber: parseInt(match[2], 10),
- };
- };
-
- var mockBuilder = {};
- mockBuilder.name = testerName;
- mockBuilder.buildbot = mockBuildbot;
- mockBuilder.resultsPageURL = function(buildName) {
- return '[RESULTS PAGE URL ' + this.name + ', ' + buildName + ']';
- }
-
- return new FailingTestsBugForm(mockBuilder, failingBuildName, passingBuildName, failingTests);
-}
-
-test('keywords are set', 1, function() {
- var form = createTestForm('Windows 7 Release (Tests)', 'r10 (5)', 'r8 (2)', ['css1/basic/class_as_selector.html']);
-
- deepEqual(form.keywords.split(', '), [WebKitBugzilla.Keyword.LayoutTestFailure, WebKitBugzilla.Keyword.MakingBotsRed, WebKitBugzilla.Keyword.Regression]);
-});
-
-const testCases = [
- {
- failingBuildName: 'r10 (5)',
- failingTests: [
- 'css1/basic/class_as_selector.html',
- ],
- expectedDescription: 'css1/basic/class_as_selector.html has been failing on Windows 7 Release (Tests) since at least r10 <http://trac.webkit.org/changeset/10>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
- expectedTitle: 'REGRESSION (r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r9 (3)',
- failingTests: [
- 'css1/basic/class_as_selector.html',
- ],
- expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) in r10 <http://trac.webkit.org/changeset/10>.\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r9 (3)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
- expectedTitle: 'REGRESSION (r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r8 (2)',
- failingTests: [
- 'css1/basic/class_as_selector.html',
- ],
- expectedDescription: 'css1/basic/class_as_selector.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9&limit=3\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
- expectedTitle: 'REGRESSION (r8-r10): css1/basic/class_as_selector.html failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r8 (2)',
- failingTests: [
- 'css1/basic/class_as_selector.html',
- 'fast/css/ex-after-font-variant.html',
- ],
- expectedDescription: 'css1/basic/class_as_selector.html and fast/css/ex-after-font-variant.html started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive).\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9&limit=3\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
- expectedTitle: 'REGRESSION (r8-r10): css1/basic/class_as_selector.html, fast/css/ex-after-font-variant.html failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r8 (2)',
- failingTests: [
- 'css1/basic/class_as_selector1.html',
- 'css1/basic/class_as_selector2.html',
- 'css1/basic/class_as_selector3.html',
- 'css1/basic/class_as_selector4.html',
- 'css1/basic/class_as_selector5.html',
- 'css1/basic/class_as_selector6.html',
- 'css1/basic/class_as_selector7.html',
- 'css1/basic/class_as_selector8.html',
- ],
- expectedDescription: 'The following tests started failing on Windows 7 Release (Tests) between r9 and r10 (inclusive):\n\n css1/basic/class_as_selector1.html\n css1/basic/class_as_selector2.html\n css1/basic/class_as_selector3.html\n css1/basic/class_as_selector4.html\n css1/basic/class_as_selector5.html\n css1/basic/class_as_selector6.html\n css1/basic/class_as_selector7.html\n css1/basic/class_as_selector8.html\n\nhttp://trac.webkit.org/log/trunk?rev=10&stop_rev=9&limit=3\n\n[RESULTS PAGE URL Windows 7 Release (Tests), r8 (2)] passed\n[RESULTS PAGE URL Windows 7 Release (Tests), r10 (5)] failed\n',
- expectedTitle: 'REGRESSION (r8-r10): 8 css1/basic tests failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r8 (2)',
- failingTests: [
- 'css1/basic/class_as_selector1.html',
- 'css1/basic/class_as_selector2.html',
- 'css1/basic/class_as_selector3.html',
- 'css1/basic/class_as_selector4.html',
- 'css1/basic/class_as_selector5.html',
- 'css1/basic/class_as_selector6.html',
- 'css1/basic/class_as_selector7.html',
- 'css1/basic/class_as_selector8.html',
- 'css1/class_as_selector9.html',
- ],
- expectedTitle: 'REGRESSION (r8-r10): 9 css1 tests failing on Windows 7 Release (Tests)',
- },
- {
- failingBuildName: 'r10 (5)',
- passingBuildName: 'r8 (2)',
- failingTests: [
- 'css1/basic/class_as_selector1.html',
- 'css1/basic/class_as_selector2.html',
- 'css1/basic/class_as_selector3.html',
- 'css1/basic/class_as_selector4.html',
- 'css1/basic/class_as_selector5.html',
- 'css1/basic/class_as_selector6.html',
- 'css1/basic/class_as_selector7.html',
- 'css1/basic/class_as_selector8.html',
- 'css1/class_as_selector9.html',
- 'fast/css/ex-after-font-variant.html',
- ],
- expectedTitle: 'REGRESSION (r8-r10): 10 tests failing on Windows 7 Release (Tests)',
- },
-];
-
-test('titles', 7, function() {
- for (var i = 0; i < testCases.length; ++i) {
- var form = createTestForm('Windows 7 Release (Tests)', testCases[i].failingBuildName, testCases[i].passingBuildName, testCases[i].failingTests);
- equal(form.title, testCases[i].expectedTitle);
- }
-});
-
-test('descriptions', 5, function() {
- for (var i = 0; i < testCases.length; ++i) {
- if (!('expectedDescription' in testCases[i]))
- continue;
- var form = createTestForm('Windows 7 Release (Tests)', testCases[i].failingBuildName, testCases[i].passingBuildName, testCases[i].failingTests);
- equal(form.description, testCases[i].expectedDescription);
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector.js
deleted file mode 100644
index b814741ba..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector.js
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function FlakyLayoutTestDetector() {
- this._tests = {};
- this._buildCount = 0;
-}
-
-FlakyLayoutTestDetector.prototype = {
- incorporateTestResults: function(buildName, failingTests, tooManyFailures) {
- var newFlakyTests = [];
-
- if (tooManyFailures) {
- // Something was going horribly wrong during this test run. We shouldn't assume that any
- // passes/failures are due to flakiness.
- return newFlakyTests;
- }
-
- ++this._buildCount;
-
- // Record failing tests.
- for (var testName in failingTests) {
- if (!(testName in this._tests)) {
- if (this._buildCount > this._maximumFailOrPassCount) {
- // This test hasn't failed in the _maximumFailOrPassCount most recent builds, so
- // don't consider it to be flaky. In fact, we don't have to track it at all!
- continue;
- }
-
- this._tests[testName] = {
- state: this._states.LastSeenFailing,
- count: 0,
- history: [],
- };
- }
-
- var testData = this._tests[testName];
- testData.history.push({ build: buildName, result: failingTests[testName] });
-
- if (testData.state === this._states.LastSeenFailing) {
- ++testData.count;
- if (testData.count > this._maximumFailOrPassCount)
- testData.state = this._states.NotFlaky;
- } else if (testData.state === this._states.LastSeenPassing) {
- testData.state = this._states.PossiblyFlaky;
- newFlakyTests.push(testName);
- }
- }
-
- // Record passing tests.
- for (var testName in this._tests) {
- if (testName in failingTests)
- continue;
-
- var testData = this._tests[testName];
- testData.history.push({ build: buildName, result: { failureType: 'pass' } });
-
- if (testData.state === this._states.LastSeenPassing) {
- ++testData.count;
- if (testData.count > this._maximumFailOrPassCount)
- testData.state = this._states.NotFlaky;
- } else if (testData.state === this._states.LastSeenFailing) {
- testData.state = this._states.LastSeenPassing;
- testData.count = 1;
- }
- }
-
- return newFlakyTests;
- },
-
- allFailures: function(testName) {
- if (!(testName in this._tests))
- return null;
-
- return this._tests[testName].history.filter(function(historyItem) { return historyItem.result.failureType !== 'pass' });
- },
-
- get possiblyFlakyTests() {
- var self = this;
- return Object.keys(self._tests).filter(function(testName) { return self._tests[testName].state === self._states.PossiblyFlaky });
- },
-
- // If a test has recently failed or passed more than this number of times in a row we don't
- // consider it to be flaky.
- _maximumFailOrPassCount: 9,
-
- _states: {
- LastSeenFailing: 0,
- LastSeenPassing: 1,
- PossiblyFlaky: 2,
- NotFlaky: 3,
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector_unittests.js
deleted file mode 100644
index bec4e58c9..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector_unittests.js
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('FlakyLayoutTestDetector');
-
-const runs = [
- {
- buildName: 'build6',
- failingTests: {
- b: 'fail',
- },
- tooManyFailures: false,
- },
- {
- buildName: 'build5',
- failingTests: {
- a: 'fail',
- b: 'fail',
- },
- tooManyFailures: false,
- },
- {
- buildName: 'build4',
- failingTests: {
- b: 'fail',
- },
- tooManyFailures: false,
- },
- {
- buildName: 'build3',
- failingTests: {
- a: 'crash',
- b: 'fail',
- },
- tooManyFailures: false,
- },
- {
- buildName: 'build2',
- failingTests: {
- a: 'fail',
- },
- tooManyFailures: false,
- },
- {
- buildName: 'build1',
- failingTests: {},
- tooManyFailures: false,
- },
-];
-
-test('possiblyFlakyTests', 1, function() {
- var detector = new FlakyLayoutTestDetector();
- runs.forEach(function(run) { detector.incorporateTestResults(run.buildName, run.failingTests, run.tooManyFailures) });
-
- deepEqual(detector.possiblyFlakyTests, ['a']);
-});
-
-test('allFailures', 3, function() {
- var detector = new FlakyLayoutTestDetector();
- runs.forEach(function(run) { detector.incorporateTestResults(run.buildName, run.failingTests, run.tooManyFailures) });
-
- deepEqual(detector.allFailures('a'), [
- { build: 'build5', result: 'fail' },
- { build: 'build3', result: 'crash' },
- { build: 'build2', result: 'fail' },
- ]);
-
- deepEqual(detector.allFailures('b'), [
- { build: 'build6', result: 'fail' },
- { build: 'build5', result: 'fail' },
- { build: 'build4', result: 'fail' },
- { build: 'build3', result: 'fail' },
- ]);
-
- equal(detector.allFailures('c'), null);
-});
-
-test('failing many times in a row should not count as flaky', 3, function() {
- var detector = new FlakyLayoutTestDetector();
- for (var i = 0; i < 10; ++i)
- detector.incorporateTestResults('build', { a: 'fail' }, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-
- for (var i = 0; i < 3; ++i)
- detector.incorporateTestResults('build', {}, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-
- detector.incorporateTestResults('build', { a: 'fail' }, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-});
-
-test('failing after passing many times in a row should not count as flaky', 3, function() {
- var detector = new FlakyLayoutTestDetector();
- detector.incorporateTestResults('build', { a: 'fail' }, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-
- for (var i = 0; i < 10; ++i)
- detector.incorporateTestResults('build', {}, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-
- detector.incorporateTestResults('build', { a: 'fail' }, false);
-
- deepEqual(detector.possiblyFlakyTests, []);
-});
-
-test('flaking now should override many past failures', 1, function() {
- var detector = new FlakyLayoutTestDetector();
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- for (var i = 0; i < 10; ++i)
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- deepEqual(detector.possiblyFlakyTests, ['a']);
-});
-
-test('passing now should override past flakiness', 1, function() {
- var detector = new FlakyLayoutTestDetector();
- for (var i = 0; i < 10; ++i)
- detector.incorporateTestResults('build', {}, false);
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- deepEqual(detector.possiblyFlakyTests, []);
-});
-
-test('too many failures now should not override past flakiness', 1, function() {
- var detector = new FlakyLayoutTestDetector();
- for (var i = 0; i < 10; ++i)
- detector.incorporateTestResults('build', {}, true);
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- detector.incorporateTestResults('build', { a: 'fail' }, false);
- detector.incorporateTestResults('build', {}, false);
- deepEqual(detector.possiblyFlakyTests, ['a']);
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm.js
deleted file mode 100644
index 530e918df..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm.js
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function FlakyTestBugForm(tester, failingBuildNames, failingTest, oldestAnalyzedBuild, newestAnalyzedBuild, analyzedBuildCount) {
- TestRelatedBugForm.call(this, tester);
-
- this._failingBuildNames = failingBuildNames;
- this._failingTest = failingTest;
- this._oldestAnalyzedBuild = oldestAnalyzedBuild;
- this._newestAnalyzedBuild = newestAnalyzedBuild;
- this._analyzedBuildCount = analyzedBuildCount;
-
- this.description = this._createBugDescription();
- this.title = this._createBugTitle();
- this.url = this._tester.resultsPageURL(this._failingBuildNames[0]);
-}
-
-FlakyTestBugForm.prototype = {
- _createBugDescription: function() {
- var self = this;
-
- var result = self._failingTest
- + ' failed ' + self._failingBuildNames.length + ' out of ' + self._analyzedBuildCount + ' times'
- + ' on ' + self._tester.name
- + ' between r' + self._tester.buildbot.parseBuildName(self._oldestAnalyzedBuild).revision
- + ' and r' + self._tester.buildbot.parseBuildName(self._newestAnalyzedBuild).revision
- + ' (inclusive).\n\n';
-
- result += 'Failures:\n\n';
- result += self._failingBuildNames.map(function(buildName) {
- return self._tester.resultsPageURL(buildName) + '\n';
- }).join('');
-
- return result;
- },
-
- _createBugTitle: function() {
- return this._failingTest + ' sometimes fails on ' + this._tester.name;
- },
-};
-
-FlakyTestBugForm.prototype.__proto__ = TestRelatedBugForm.prototype;
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm_unittests.js
deleted file mode 100644
index 60e7af0bd..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm_unittests.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('FlakyTestBugForm');
-
-function createTestForm(failingBuildNames, failingTest, oldestAnalyzedBuild, newestAnalyzedBuild, analyzedBuildCount) {
- var mockBuildbot = {};
- mockBuildbot.parseBuildName = function(buildName) {
- var match = /(\d+)/.exec(buildName);
- return {
- revision: parseInt(match[1], 10),
- buildNumber: parseInt(match[2], 10),
- };
- };
-
- var mockBuilder = {};
- mockBuilder.name = '[BUILDER NAME]';
- mockBuilder.buildbot = mockBuildbot;
- mockBuilder.resultsPageURL = function(buildName) {
- return '[RESULTS PAGE URL ' + this.name + ', ' + buildName + ']';
- }
-
- return new FlakyTestBugForm(mockBuilder, failingBuildNames, failingTest, oldestAnalyzedBuild, newestAnalyzedBuild, analyzedBuildCount);
-}
-
-const testCases = [
- {
- oldestAnalyzedBuild: 'r1 (1)',
- newestAnalyzedBuild: 'r15 (8)',
- analyzedBuildCount: 8,
- failingBuildNames: [
- 'r10 (5)',
- 'r8 (2)',
- ],
- failingTest: 'css1/basic/class_as_selector.html',
- expectedDescription: 'css1/basic/class_as_selector.html failed 2 out of 8 times on [BUILDER NAME] between r1 and r15 (inclusive).\n\nFailures:\n\n[RESULTS PAGE URL [BUILDER NAME], r10 (5)]\n[RESULTS PAGE URL [BUILDER NAME], r8 (2)]\n',
- expectedTitle: 'css1/basic/class_as_selector.html sometimes fails on [BUILDER NAME]',
- expectedURL: '[RESULTS PAGE URL [BUILDER NAME], r10 (5)]',
- },
-];
-
-test('titles', 1, function() {
- testCases.forEach(function(testCase) {
- var form = createTestForm(testCase.failingBuildNames, testCase.failingTest, testCase.oldestAnalyzedBuild, testCase.newestAnalyzedBuild, testCase.analyzedBuildCount);
- equal(form.title, testCase.expectedTitle);
- });
-});
-
-test('descriptions', 1, function() {
- testCases.forEach(function(testCase) {
- var form = createTestForm(testCase.failingBuildNames, testCase.failingTest, testCase.oldestAnalyzedBuild, testCase.newestAnalyzedBuild, testCase.analyzedBuildCount);
- equal(form.description, testCase.expectedDescription);
- });
-});
-
-test('URLs', 1, function() {
- testCases.forEach(function(testCase) {
- var form = createTestForm(testCase.failingBuildNames, testCase.failingTest, testCase.oldestAnalyzedBuild, testCase.newestAnalyzedBuild, testCase.analyzedBuildCount);
- equal(form.url, testCase.expectedURL);
- });
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestHistoryAnalyzer.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestHistoryAnalyzer.js
deleted file mode 100644
index a6628d7b5..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestHistoryAnalyzer.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function LayoutTestHistoryAnalyzer(builder) {
- this._builder = builder;
- this._flakinessDetector = new FlakyLayoutTestDetector();
- this._history = {};
- this._loader = new LayoutTestResultsLoader(builder);
- this._testRunsSinceLastInterestingChange = 0;
-}
-
-LayoutTestHistoryAnalyzer.prototype = {
- /*
- * Periodically calls callback until all current failures have been explained. Callback is
- * passed an object like the following:
- * {
- * 'history': {
- * 'r12347 (681)': {
- * 'tooManyFailures': false,
- * 'tests': {
- * 'css1/basic/class_as_selector2.html': 'fail',
- * },
- * },
- * 'r12346 (680)': {
- * 'tooManyFailures': false,
- * 'tests': {},
- * },
- * 'r12345 (679)': {
- * 'tooManyFailures': false,
- * 'tests': {
- * 'css1/basic/class_as_selector.html': 'crash',
- * },
- * },
- * },
- * 'possiblyFlaky': {
- * 'fast/workers/worker-test.html': [
- * { 'build': 'r12344 (678)', 'result': 'fail' },
- * { 'build': 'r12340 (676)', 'result': 'crash' },
- * ],
- * },
- * }
- * Each build contains just the failures that a) are still occurring on the bots, and b) were new
- * in that build.
- */
- start: function(callback) {
- var self = this;
- self._builder.getBuildNames(function(buildNames) {
- self._analyzeBuilds(buildNames, callback, function() {
- self._builder.getOldBuildNames(function(oldBuildNames) {
- self._analyzeBuilds(oldBuildNames, callback);
- });
- });
- });
- },
-
- _analyzeBuilds: function(buildNames, callback, analyzedAllBuildsCallback) {
- var self = this;
- function inner(buildIndex) {
- self._incorporateBuildHistory(buildNames, buildIndex, function(callAgain) {
- var data = {
- history: self._history,
- possiblyFlaky: {},
- };
- self._flakinessDetector.possiblyFlakyTests.forEach(function(testName) {
- data.possiblyFlaky[testName] = self._flakinessDetector.allFailures(testName);
- });
-
- var nextIndex = buildIndex + 1;
- var analyzedAllBuilds = nextIndex >= buildNames.length;
- var haveMoreDataToFetch = !analyzedAllBuilds || analyzedAllBuildsCallback;
-
- var callbackRequestedStop = !callback(data, haveMoreDataToFetch);
- if (callbackRequestedStop)
- return;
-
- if (!callAgain)
- return;
-
- if (analyzedAllBuilds) {
- if (analyzedAllBuildsCallback)
- analyzedAllBuildsCallback();
- return;
- }
-
- setTimeout(function() { inner(nextIndex) }, 0);
- });
- }
- inner(0);
- },
-
- _incorporateBuildHistory: function(buildNames, buildIndex, callback) {
- var previousBuildName = Object.keys(this._history).last();
- var nextBuildName = buildNames[buildIndex];
-
- var self = this;
- self._loader.start(nextBuildName, function(tests, tooManyFailures) {
- if (tooManyFailures) {
- var firstBuildName = Object.keys(self._history)[0];
- // If the first (i.e., current or most recent) build exited early due to too many
- // failures, we want to process other too-many-failures builds normally to try to
- // figure out when the too-many-failures started occurring. If the first/current
- // build did not exit due to too many failures, then too-many-failures builds will
- // only confuse our analysis (since they run a semi-arbitrary subset of tests), so
- // we should just skip them entirely.
- if (firstBuildName && !self._history[firstBuildName].tooManyFailures) {
- callback(true);
- return;
- }
- }
-
- ++self._testRunsSinceLastInterestingChange;
-
- var historyItem = {
- tooManyFailures: tooManyFailures,
- tests: {},
- };
- self._history[nextBuildName] = historyItem;
-
- var previousHistoryItem;
- if (previousBuildName)
- previousHistoryItem = self._history[previousBuildName];
-
- var newFlakyTests = self._flakinessDetector.incorporateTestResults(nextBuildName, tests, tooManyFailures);
- if (newFlakyTests.length) {
- self._testRunsSinceLastInterestingChange = 0;
- // Remove all possibly flaky tests from the failure history, since when they failed
- // is no longer meaningful.
- newFlakyTests.forEach(function(testName) {
- for (var buildName in self._history)
- delete self._history[buildName].tests[testName];
- });
- }
-
- for (var testName in tests) {
- if (previousHistoryItem) {
- if (!(testName in previousHistoryItem.tests))
- continue;
- delete previousHistoryItem.tests[testName];
- }
- historyItem.tests[testName] = tests[testName];
- }
-
- var previousUnexplainedFailuresCount = previousBuildName ? Object.keys(self._history[previousBuildName].tests).length : 0;
- var unexplainedFailuresCount = Object.keys(self._history[nextBuildName].tests).length;
-
- if (previousUnexplainedFailuresCount && !unexplainedFailuresCount)
- self._testRunsSinceLastInterestingChange = 0;
-
- const minimumRequiredTestRunsWithoutInterestingChanges = 5;
- callback(unexplainedFailuresCount || self._testRunsSinceLastInterestingChange < minimumRequiredTestRunsWithoutInterestingChanges);
- },
- function(tests) {
- // Some tests failed, but we couldn't fetch results.html (perhaps because the test
- // run aborted early for some reason). Just skip this build entirely.
- callback(true);
- });
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js
deleted file mode 100644
index f24a702ec..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function LayoutTestResultsLoader(builder) {
- this._builder = builder;
-}
-
-LayoutTestResultsLoader.prototype = {
- start: function(buildName, callback, errorCallback) {
- var cacheKey = 'LayoutTestResultsLoader.' + this._builder.name + '.' + buildName;
- const currentCachedDataVersion = 8;
- if (PersistentCache.contains(cacheKey)) {
- var cachedData = PersistentCache.get(cacheKey);
- if (cachedData.version === currentCachedDataVersion) {
- if (cachedData.error)
- errorCallback(cachedData.tests, cachedData.tooManyFailures);
- else
- callback(cachedData.tests, cachedData.tooManyFailures);
- return;
- }
- }
-
- var result = { tests: {}, tooManyFailures: false, error: false, version: currentCachedDataVersion };
-
- function cacheParseResultsAndCallCallback(parseResult) {
- result.tests = parseResult.tests;
- result.tooManyFailures = parseResult.tooManyFailures;
-
- PersistentCache.set(cacheKey, result);
- callback(result.tests, result.tooManyFailures);
- }
-
- var self = this;
- self._fetchAndParseNRWTResults(buildName, cacheParseResultsAndCallCallback, function() {
- self._fetchAndParseORWTResults(buildName, cacheParseResultsAndCallCallback, function() {
- // We couldn't fetch results for this build.
- result.error = true;
- PersistentCache.set(cacheKey, result);
- errorCallback(result.tests, result.tooManyFailures);
- });
- });
- },
-
- _fetchAndParseNRWTResults: function(buildName, successCallback, errorCallback) {
- getResource(this._builder.resultsDirectoryURL(buildName) + 'full_results.json', function(xhr) {
- successCallback((new NRWTResultsParser()).parse(xhr.responseText));
- },
- function(xhr) {
- errorCallback();
- });
- },
-
- _fetchAndParseORWTResults: function(buildName, successCallback, errorCallback) {
- var parsedBuildName = this._builder.buildbot.parseBuildName(buildName);
-
- // http://webkit.org/b/62380 was fixed in r89610.
- var resultsHTMLSupportsTooManyFailuresInfo = parsedBuildName.revision >= 89610;
-
- var result = { tests: {}, tooManyFailures: false };
-
- var self = this;
-
- function fetchAndParseResultsHTML(successCallback, errorCallback) {
- getResource(self._builder.resultsPageURL(buildName), function(xhr) {
- var parseResult = (new ORWTResultsParser()).parse(xhr.responseText);
- result.tests = parseResult.tests;
- if (resultsHTMLSupportsTooManyFailuresInfo)
- result.tooManyFailures = parseResult.tooManyFailures;
- successCallback();
- },
- function(xhr) {
- // We failed to fetch results.html.
- errorCallback();
- });
- }
-
- function fetchNumberOfFailingTests(successCallback, errorCallback) {
- self._builder.getNumberOfFailingTests(parsedBuildName.buildNumber, function(failingTestCount, tooManyFailures) {
- result.tooManyFailures = tooManyFailures;
-
- if (failingTestCount < 0) {
- // The number of failing tests couldn't be determined.
- errorCallback();
- return;
- }
-
- successCallback(failingTestCount);
- });
- }
-
- if (resultsHTMLSupportsTooManyFailuresInfo) {
- fetchAndParseResultsHTML(function() {
- successCallback(result);
- },
- function() {
- fetchNumberOfFailingTests(function(failingTestCount) {
- if (!failingTestCount) {
- // All tests passed, so no results.html was generated.
- successCallback(result);
- return;
- }
-
- // Something went wrong with fetching results.
- errorCallback();
- }, errorCallback);
- });
- return;
- }
-
- fetchNumberOfFailingTests(function(failingTestCount) {
- if (!failingTestCount) {
- // All tests passed.
- successCallback(result);
- return;
- }
-
- // Find out which tests failed.
- fetchAndParseResultsHTML(function() {
- successCallback(result);
- }, errorCallback);
- }, errorCallback);
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NRWTResultsParser.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NRWTResultsParser.js
deleted file mode 100644
index b02e06c96..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NRWTResultsParser.js
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function NRWTResultsParser() {
-}
-
-NRWTResultsParser.prototype = {
- parse: function(unexpectedResultsJS) {
- var data;
- function ADD_RESULTS(x) {
- data = x;
- }
-
- eval(unexpectedResultsJS);
- console.assert(data);
-
- var result = { tests: {}, tooManyFailures: data.interrupted };
-
- function forEachTest(tree, handler, opt_prefix) {
- var prefix = opt_prefix || '';
-
- for (var key in tree) {
- var newPrefix = prefix ? (prefix + '/' + key) : key;
- if ('actual' in tree[key]) {
- var testObject = tree[key];
- testObject.name = newPrefix;
- handler(testObject);
- } else
- forEachTest(tree[key], handler, newPrefix);
- }
- }
-
- function isFailureExpected(expected, actual) {
- if (actual === 'SKIP')
- return true;
-
- var expectedArray = expected.split(' ');
- var actualArray = actual.split(' ');
- for (var i = 0; i < actualArray.length; i++) {
- var actualValue = actualArray[i];
- if (expectedArray.contains(actualValue))
- continue;
- if (expectedArray.contains('FAIL') && ['IMAGE', 'TEXT', 'IMAGE+TEXT'].contains(actualValue))
- continue;
- return false;
- }
-
- return true;
- }
-
- function convertNRWTResultString(nrwtResult) {
- const translations = {
- CRASH: 'crash',
- 'IMAGE+TEXT': 'fail',
- IMAGE: 'fail',
- TEXT: 'fail',
- TIMEOUT: 'timeout',
- };
-
- if (nrwtResult in translations)
- return translations[nrwtResult];
-
- if (nrwtResult.contains(' '))
- return 'flaky';
-
- return 'unknown failure type ' + nrwtResult;
- }
-
- forEachTest(data.tests, function(test) {
- if (isFailureExpected(test.expected, test.actual))
- return;
- result.tests[test.name] = { failureType: convertNRWTResultString(test.actual) };
- });
-
- return result;
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm.js
deleted file mode 100644
index 94cca846b..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function NewBugForm() {
-}
-
-NewBugForm.prototype = {
- domElement: function() {
- var formData = {};
-
- if (this.component)
- formData.component = this.component;
- if (this.description)
- formData.comment = this.description;
- if (this.keywords)
- formData.keywords = this.keywords;
- if (this.operatingSystem)
- formData.op_sys = this.operatingSystem;
- if (this.platform)
- formData.rep_platform = this.platform;
- if (this.product)
- formData.product = this.product;
- if (this.title)
- formData.short_desc = this.title;
- if (this.url)
- formData.bug_file_loc = this.url;
- if (this.version)
- formData.version = this.version;
-
- var form = document.createElement('form');
- form.method = 'POST';
- form.action = config.kBugzillaURL + '/enter_bug.cgi';
-
- for (var key in formData) {
- var input = document.createElement('input');
- input.type = 'hidden';
- input.name = key;
- input.value = formData[key];
- form.appendChild(input);
- }
-
- return form;
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js
deleted file mode 100644
index db960203a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('NewBugForm');
-
-const testFormData = {
- component: { formName: 'component', value: 'Tools / Tests' },
- description: { formName: 'comment', value: 'This is a description\n\nwith\nnewlines' },
- keywords: { formName: 'keywords', value: 'Qt, PlatformOnly' },
- operatingSystem: { formName: 'op_sys', value: 'Windows 7' },
- platform: { formName: 'rep_platform', value: 'PC' },
- product: { formName: 'product', value: 'WebKit' },
- title: { formName: 'short_desc', value: 'This is a bug title' },
- url: { formName: 'bug_file_loc', value: 'http://example.com/path?query=foo#anchor' },
- version: { formName: 'version', value: '528+ (Nightly Build)' },
-};
-
-function createTestForm() {
- var form = new NewBugForm();
- for (var key in testFormData) {
- form[key] = testFormData[key].value;
- }
- return form;
-}
-
-test('properties are set', 9, function() {
- var form = createTestForm();
-
- for (var key in testFormData) {
- equal(form[key], testFormData[key].value);
- }
-});
-
-test('domElement() posts to enter_bug.cgi', 3, function() {
- var formElement = createTestForm().domElement();
- equal(formElement.tagName, 'FORM');
- equal(formElement.method, 'post');
- equal(formElement.action, 'https://bugs.webkit.org/enter_bug.cgi');
-});
-
-test('domElement() contains only hidden input elements', 9, function() {
- var elements = createTestForm().domElement().elements;
- for (var i = 0; i < elements.length; ++i) {
- equal(elements[i].type, 'hidden');
- }
-});
-
-test('domElement() contains all form values', 9, function() {
- var formElement = createTestForm().domElement();
-
- for (var key in testFormData) {
- var data = testFormData[key];
- equal(formElement[data.formName].value, data.value, key);
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ORWTResultsParser.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ORWTResultsParser.js
deleted file mode 100644
index 68170a850..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ORWTResultsParser.js
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function ORWTResultsParser() {
-}
-
-ORWTResultsParser.prototype = {
- parse: function(resultsHTMLString) {
- var result = { tests: {}, tooManyFailures: false };
-
- var root = document.createElement('html');
- root.innerHTML = resultsHTMLString;
-
- // Note that some old results.html files won't contain this element even if we had to stop
- // running early due to too many failures. Our caller will have to figure that out
- // themselves.
- result.tooManyFailures = root.getElementsByClassName('stopped-running-early-message').length > 0;
-
- function parseResultTable(regex) {
- var paragraph = Array.prototype.findFirst.call(root.querySelectorAll('p'), function(paragraph) {
- return regex.test(paragraph.innerText);
- });
- if (!paragraph)
- return [];
- var table = paragraph.nextElementSibling;
- console.assert(table.nodeName === 'TABLE');
- return Array.prototype.map.call(table.rows, function(row) {
- var links = row.getElementsByTagName('a');
- var result = {
- name: links[0].innerText,
- };
- for (var i = 1; i < links.length; ++i) {
- var match = /^crash log \((.*)\)$/.exec(links[i].innerText);
- if (!match)
- continue;
- result.crashingSymbol = match[1];
- break;
- }
- return result;
- });
- }
-
- parseResultTable(/did not match expected results/).forEach(function(testData) {
- result.tests[testData.name] = { failureType: 'fail' };
- });
- parseResultTable(/timed out/).forEach(function(testData) {
- result.tests[testData.name] = { failureType: 'timeout' };
- });
- parseResultTable(/tool to crash/).forEach(function(testData) {
- result.tests[testData.name] = {
- failureType: 'crash',
- crashingSymbol: testData.crashingSymbol,
- };
- });
- parseResultTable(/Web process to crash/).forEach(function(testData) {
- result.tests[testData.name] = {
- failureType: 'webprocess crash',
- crashingSymbol: testData.crashingSymbol,
- };
- });
-
- return result;
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/PersistentCache.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/PersistentCache.js
deleted file mode 100644
index ab9e98931..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/PersistentCache.js
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-var PersistentCache = {
- contains: function(key) {
- return key in localStorage;
- },
-
- get: function(key) {
- var string = localStorage[key];
- if (!string)
- return string;
-
- // FIXME: We could update the date stored with the value here to make this more of an MRU
- // cache (instead of most-recently-stored), but that would result in extra disk access that
- // might not be so great.
- return JSON.parse(this._parseDateAndJSONFromString(string).json);
- },
-
- set: function(key, value) {
- try {
- localStorage[key] = this._addDateToJSONString(JSON.stringify(value));
- } catch (e) {
- if (e.code !== 22) // QUOTA_EXCEEDED_ERR
- throw e;
-
- // We've run out of space in localStorage. Let's just throw away everything and try
- // again.
- this._emptyCache();
- this.set(key, value);
- }
- },
-
- prune: function() {
- var now = Date.now();
- for (var key in localStorage) {
- var date = this._parseDateAndJSONFromString(localStorage[key]).date;
- if (now - date <= this._dataAgeLimitMS)
- continue;
- delete localStorage[key];
- }
-
- this.set(this._lastPruneDateKey, now);
- },
-
- _addDateToJSONString: function(jsonString) {
- return Date.now() + this._dateAndJSONSeparator + jsonString;
- },
-
- _dataAgeLimitMS: 1000 * 60 * 60 * 24 * 1.1, // Just over one day
-
- _dateAndJSONSeparator: ': ',
-
- _emptyCache: function() {
- for (var key in localStorage)
- delete localStorage[key];
- },
-
- _parseDateAndJSONFromString: function(string) {
- var separatorIndex = string.indexOf(this._dateAndJSONSeparator);
- return {
- date: new Date(parseInt(string.substring(0, separatorIndex), 10)),
- json: string.substring(separatorIndex + this._dateAndJSONSeparator.length),
- };
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm.js
deleted file mode 100644
index 96f0ee901..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function TestRelatedBugForm(tester) {
- NewBugForm.call(this);
-
- this._tester = tester;
-
- this.component = WebKitBugzilla.Component.ToolsTests;
- this.keywords = [
- WebKitBugzilla.Keyword.LayoutTestFailure,
- WebKitBugzilla.Keyword.MakingBotsRed,
- ].join(', ');
- this.operatingSystem = this._computeOperatingSystem();
- this.platform = this._computePlatform();
- this.product = WebKitBugzilla.Product.WebKit;
- this.version = WebKitBugzilla.Version.Nightly;
-}
-
-TestRelatedBugForm.prototype = {
- domElement: function() {
- var form = NewBugForm.prototype.domElement.call(this);
- form.className = 'new-bug-form';
- form.target = '_blank';
- return form;
- },
-
- _computeOperatingSystem: function() {
- if (/Windows 7/.test(this._tester.name))
- return WebKitBugzilla.OperatingSystem.Windows7;
- if (/Windows XP/.test(this._tester.name))
- return WebKitBugzilla.OperatingSystem.WindowsXP;
- if (/SnowLeopard/.test(this._tester.name))
- return WebKitBugzilla.OperatingSystem.SnowLeopard;
- if (/Leopard/.test(this._tester.name))
- return WebKitBugzilla.OperatingSystem.Leopard;
- return '';
- },
-
- _computePlatform: function() {
- if (/Windows/.test(this._tester.name))
- return WebKitBugzilla.Platform.PC;
- if (/Leopard/.test(this._tester.name))
- return WebKitBugzilla.Platform.Macintosh;
- return '';
- },
-};
-
-TestRelatedBugForm.prototype.__proto__ = NewBugForm.prototype;
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm_unittests.js
deleted file mode 100644
index 311dab071..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm_unittests.js
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('TestRelatedBugForm');
-
-function createTestForm(testerName) {
- var mockBuildbot = {};
- mockBuildbot.parseBuildName = function(buildName) {
- var match = /(\d+)/.exec(buildName);
- return {
- revision: parseInt(match[1], 10),
- buildNumber: parseInt(match[2], 10),
- };
- };
-
- var mockBuilder = {};
- mockBuilder.name = testerName;
- mockBuilder.buildbot = mockBuildbot;
- mockBuilder.resultsPageURL = function(buildName) {
- return '[RESULTS PAGE URL ' + this.name + ', ' + buildName + ']';
- }
-
- return new TestRelatedBugForm(mockBuilder);
-}
-
-test('component and keywords are set', 2, function() {
- var form = createTestForm('Windows 7 Release (Tests)');
-
- equal(form.component, WebKitBugzilla.Component.ToolsTests);
- deepEqual(form.keywords.split(', '), [WebKitBugzilla.Keyword.LayoutTestFailure, WebKitBugzilla.Keyword.MakingBotsRed]);
-});
-
-const testers = {
- 'GTK Linux 32-bit Release': {
- operatingSystem: '',
- platform: '',
- },
- 'Leopard Intel Release (Tests)': {
- operatingSystem: WebKitBugzilla.OperatingSystem.Leopard,
- platform: WebKitBugzilla.Platform.Macintosh,
- },
- 'SnowLeopard Intel Release (Tests)': {
- operatingSystem: WebKitBugzilla.OperatingSystem.SnowLeopard,
- platform: WebKitBugzilla.Platform.Macintosh,
- },
- 'Windows 7 Release (Tests)': {
- operatingSystem: WebKitBugzilla.OperatingSystem.Windows7,
- platform: WebKitBugzilla.Platform.PC,
- },
- 'Windows XP Debug (Tests)': {
- operatingSystem: WebKitBugzilla.OperatingSystem.WindowsXP,
- platform: WebKitBugzilla.Platform.PC,
- },
-};
-
-test('operating system is deduced', 5, function() {
- for (var name in testers) {
- var form = createTestForm(name);
- equal(form.operatingSystem, testers[name].operatingSystem);
- }
-});
-
-test('platform is deduced', 5, function() {
- for (var name in testers) {
- var form = createTestForm(name);
- equal(form.platform, testers[name].platform);
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Trac.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Trac.js
deleted file mode 100644
index 81b5714b2..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Trac.js
+++ /dev/null
@@ -1,174 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-var trac = trac || {};
-
-(function() {
-
-function findUsingRegExp(string, regexp)
-{
- var match = regexp.exec(string);
- if (match)
- return match[1];
- return null;
-}
-
-function findReviewer(message)
-{
- var regexp = /Reviewed by ([^.]+)/;
- return findUsingRegExp(message, regexp);
-}
-
-function findAuthor(message)
-{
- var regexp = /Patch by ([^<]+) </;
- return findUsingRegExp(message, regexp);
-}
-
-function findBugID(message)
-{
- var regexp = /\/show_bug.cgi\?id=(\d+)/;
- return parseInt(findUsingRegExp(message, regexp), 10);
-}
-
-function findRevision(title)
-{
- var regexp = /^Revision (\d+):/;
- return parseInt(findUsingRegExp(title, regexp), 10);
-}
-
-function findSummary(message)
-{
- var lines = message.split('\n');
- for (var i = 0; i < lines.length; ++i) {
- var line = lines[i]
- if (findBugID(line))
- continue;
- if (findReviewer(line))
- continue;
- // Old-style commit message.
- if (/^\d\d\d\d-\d\d-\d\d/.exec(line))
- continue;
- if (line.length > 0)
- return line;
- }
-}
-
-function findRevert(message)
-{
- var regexp = /rolling out r(\d+)\./;
- var revision = findUsingRegExp(message, regexp);
- if (!revision)
- return undefined;
- return parseInt(revision, 10);
-}
-
-// FIXME: Consider exposing this method for unit testing.
-function parseCommitData(responseXML)
-{
- var commits = Array.prototype.map.call(responseXML.getElementsByTagName('item'), function(item) {
- var title = item.getElementsByTagName('title')[0].textContent;
- var author = item.getElementsByTagName('author')[0].textContent;
- var time = item.getElementsByTagName('pubDate')[0].textContent;
-
- // FIXME: This isn't a very high-fidelity reproduction of the commit message,
- // but it's good enough for our purposes.
- var container = document.createElement('div');
- container.innerHTML = item.getElementsByTagName('description')[0].textContent;
- var message = container.innerText;
-
- return {
- 'revision': findRevision(title),
- 'title': title,
- 'time': time,
- 'summary': findSummary(message),
- 'author': findAuthor(message) || author,
- 'reviewer': findReviewer(message),
- 'bugID': findBugID(message),
- 'message': message,
- 'revertedRevision': findRevert(message),
- };
- });
-
- return commits;
-}
-
-var g_cache = new base.AsynchronousCache(function(key, callback) {
- var explodedKey = key.split('\n');
-
- var path = explodedKey[0];
- var startRevision = explodedKey[1];
- var endRevision = explodedKey[2];
-
- var url = trac.logURL(path, startRevision, endRevision, true, true);
-
- net.get(url, function(commitData) {
- callback(parseCommitData(commitData));
- });
-});
-
-trac.changesetURL = function(revision)
-{
- return config.kTracURL + '/changeset/' + revision;
-};
-
-trac.logURL = function(path, startRevision, endRevision, showFullCommitLogs, formatAsRSS)
-{
- var queryParameters = {
- rev: endRevision,
- stop_rev: startRevision,
- // Trac requires limit to be 1 more than the number of revisions we actually want to show.
- // See <http://trac.edgewall.org/ticket/10317>.
- limit: endRevision - startRevision + 2,
- };
-
- if (showFullCommitLogs)
- queryParameters.verbose = 'on';
- if (formatAsRSS)
- queryParameters.format = 'rss';
-
- return config.kTracURL + '/log/' + path + '?' + $.param(queryParameters);
-};
-
-trac.recentCommitData = function(path, limit, callback)
-{
- var url = config.kTracURL + '/log/' + path + '?' + $.param({
- 'verbose': 'on',
- 'format': 'rss',
- 'limit': limit,
- });
-
- net.get(url, function(commitData) {
- callback(parseCommitData(commitData));
- });
-};
-
-trac.commitDataForRevisionRange = function(path, startRevision, endRevision, callback)
-{
- var key = [path, startRevision, endRevision].join('\n');
- g_cache.get(key, callback);
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js
deleted file mode 100644
index f800b3932..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function createDescriptionList(items) {
- var list = document.createElement('dl');
- items.forEach(function(pair) {
- var dt = document.createElement('dt');
- dt.appendChild(pair[0]);
- var dd = document.createElement('dd');
- dd.appendChild(pair[1]);
- list.appendChild(dt);
- list.appendChild(dd);
- });
- return list;
-}
-
-function fetchResource(url, method, queryParameters, callback, errorCallback) {
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function() {
- if (this.readyState !== 4)
- return;
- // Allow a status of 0 for easier testing with local files.
- if (!this.status || this.status === 200)
- callback(this);
- else if (errorCallback)
- errorCallback(this);
- };
-
- if (method === 'GET' && queryParameters)
- url = addQueryParametersToURL(url, queryParameters);
-
- xhr.open(method, url);
-
- if (method === 'GET') {
- xhr.send();
- return;
- }
-
- var data = urlEncodeQueryParameters(queryParameters);
- xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
- xhr.send(data);
-}
-
-function getResource(url, callback, errorCallback) {
- fetchResource(url, 'GET', null, callback, errorCallback);
-}
-
-function urlEncodeQueryParameters(queryParameters) {
- var encodedParameters = Object.keys(queryParameters).map(function(key) {
- return key + '=' + encodeURIComponent(queryParameters[key]);
- });
- return encodedParameters.join('&');
-}
-
-function addQueryParametersToURL(url, queryParameters) {
- if (url.indexOf('?') < 0)
- url += '?';
- else
- url += '&';
-
- return url + urlEncodeQueryParameters(queryParameters);
-}
-
-function longestCommonPathPrefix(paths) {
- const separator = '/';
-
- var splitPaths = paths.map(function(path) { return path.split(separator) });
- var firstSplitPath = splitPaths.shift();
-
- var result = [];
- for (var i = 0; i < firstSplitPath.length; ++i) {
- if (!splitPaths.every(function(splitPath) { return splitPath[i] === firstSplitPath[i] }))
- break;
- result.push(firstSplitPath[i]);
- }
-
- if (!result.length)
- return null;
- return result.join(separator);
-}
-
-function removePathExtension(string) {
- var dotIndex = string.lastIndexOf('.');
- if (dotIndex < 0)
- return string;
- return string.substring(0, dotIndex);
-}
-
-function sorted(array, sortFunction) {
- var newArray = array.slice();
- newArray.sort(sortFunction);
- return newArray;
-}
-
-Array.prototype.contains = function(value) {
- return this.indexOf(value) >= 0;
-}
-
-Array.prototype.findFirst = function(predicate) {
- for (var i = 0; i < this.length; ++i) {
- if (predicate(this[i]))
- return this[i];
- }
- return null;
-}
-
-Array.prototype.findLast = function(predicate) {
- for (var i = this.length - 1; i >= 0; --i) {
- if (predicate(this[i]))
- return this[i];
- }
- return null;
-}
-
-Array.prototype.last = function() {
- if (!this.length)
- return undefined;
- return this[this.length - 1];
-}
-
-Element.prototype.hasStyleClass = function(klass) {
- var regex = new RegExp('\\b' + klass + '\\b');
- return regex.test(this.className);
-}
-
-Element.prototype.addStyleClass = function(klass) {
- if (this.hasStyleClass(klass))
- return;
- this.className += ' ' + klass;
-}
-
-Element.prototype.removeStyleClass = function(klass) {
- var regex = new RegExp('\\b' + klass + '\\b', 'g');
- this.className = this.className.replace(regex, '');
-}
-
-Element.prototype.toggleStyleClass = function(klass) {
- if (this.hasStyleClass(klass))
- this.removeStyleClass(klass);
- else
- this.addStyleClass(klass);
-}
-
-Node.prototype.appendChildren = function(children) {
- for (var i = 0; i < children.length; ++i)
- this.appendChild(children[i]);
-}
-
-Node.prototype.removeAllChildren = function() {
- while (this.firstChild)
- this.removeChild(this.firstChild);
-}
-
-String.prototype.contains = function(substring) {
- return this.indexOf(substring) >= 0;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities_unittests.js
deleted file mode 100644
index 4c19a4fcb..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities_unittests.js
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-(function() {
-
-module('Utilities');
-
-test('hasStyleClass', 11, function() {
- var element = document.createElement('div');
-
- ok(!element.hasStyleClass('foo'));
- ok(!element.hasStyleClass('bar'));
-
- element.className = 'foo';
- ok(element.hasStyleClass('foo'))
- ok(!element.hasStyleClass('bar'));
-
- element.className = 'foo foo';
- ok(element.hasStyleClass('foo'))
- ok(!element.hasStyleClass('bar'));
-
- element.className = 'foo bar';
- ok(element.hasStyleClass('foo'))
- ok(element.hasStyleClass('bar'));
- ok(!element.hasStyleClass('baz'));
-
- element.className = 'food';
- ok(!element.hasStyleClass('foo'));
- ok(element.hasStyleClass('food'));
-});
-
-test('addStyleClass', 4, function() {
- var element = document.createElement('div');
-
- element.addStyleClass('foo');
- equal(element.className, ' foo');
-
- element.addStyleClass('foo');
- equal(element.className, ' foo');
-
- element.addStyleClass('bar');
- equal(element.className, ' foo bar');
-
- element.addStyleClass('foo');
- equal(element.className, ' foo bar');
-});
-
-test('removeStyleClass', 8, function() {
- var element = document.createElement('div');
-
- element.removeStyleClass('foo');
- equal(element.className, '');
-
- element.className = 'foo';
- element.removeStyleClass('foo');
- equal(element.className, '');
-
- element.className = ' foo';
- element.removeStyleClass('foo');
- equal(element.className, ' ');
-
- element.className = 'foo foo';
- element.removeStyleClass('foo');
- equal(element.className, ' ');
-
- element.className = 'foo bar';
- element.removeStyleClass('foo');
- equal(element.className, ' bar');
-
- element.className = 'foo bar foo bar';
- element.removeStyleClass('bar');
- equal(element.className, 'foo foo ');
-
- element.className = 'food';
- element.removeStyleClass('foo');
- equal(element.className, 'food');
-
- element.className = 'foo';
- element.removeStyleClass('food');
- equal(element.className, 'foo');
-});
-
-test('toggleStyleClass', 5, function() {
- var element = document.createElement('div');
-
- element.toggleStyleClass('foo');
- equal(element.className, ' foo');
-
- element.toggleStyleClass('foo');
- equal(element.className, ' ');
-
- element.className = 'bar';
- element.toggleStyleClass('foo');
- equal(element.className, 'bar foo');
-
- element.className = 'food';
- element.toggleStyleClass('foo');
- equal(element.className, 'food foo');
-
- element.className = 'foo';
- element.toggleStyleClass('food');
- equal(element.className, 'foo food');
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js
deleted file mode 100644
index c7740fbaf..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js
+++ /dev/null
@@ -1,432 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function ViewController(buildbot) {
- this._buildbot = buildbot;
- this._navigationID = 0;
-
- var self = this;
- addEventListener('load', function() { self.loaded() }, false);
- addEventListener('hashchange', function() { self.parseHash(location.hash) }, false);
-}
-
-ViewController.prototype = {
- loaded: function() {
- this._header = document.createElement('h1');
- document.body.appendChild(this._header);
- this._mainContentElement = document.createElement('div');
- document.body.appendChild(this._mainContentElement);
- document.body.appendChild(this._domForAuxiliaryUIElements());
-
- this.parseHash(location.hash);
- },
-
- parseHash: function(hash) {
- ++this._navigationID;
-
- var match = /#\/(.*)/.exec(hash);
- if (match)
- this._displayBuilder(this._buildbot.builderNamed(decodeURIComponent(match[1])));
- else
- this._displayTesters();
- },
-
- _displayBuilder: function(builder) {
- this._setTitle(builder.name);
- this._mainContentElement.removeAllChildren();
-
- var navigationID = this._navigationID;
-
- var self = this;
- (new LayoutTestHistoryAnalyzer(builder)).start(function(data, stillFetchingData) {
- if (self._navigationID !== navigationID) {
- // The user has navigated somewhere else. Stop loading data about this tester.
- return false;
- }
-
- var list = document.createElement('ol');
- list.id = 'failure-history';
-
- var buildNames = Object.keys(data.history)
- buildNames.forEach(function(buildName, buildIndex, buildNameArray) {
- var failingTestNames = Object.keys(data.history[buildName].tests);
- if (!failingTestNames.length)
- return;
-
- var item = document.createElement('li');
- list.appendChild(item);
-
- var testList = document.createElement('ol');
- item.appendChild(testList);
-
- testList.className = 'test-list';
- for (var testName in data.history[buildName].tests) {
- var testItem = document.createElement('li');
- testItem.appendChild(self._domForFailedTest(builder, buildName, testName, data.history[buildName].tests[testName]));
- testList.appendChild(testItem);
- }
-
- if (data.history[buildName].tooManyFailures) {
- var p = document.createElement('p');
- p.className = 'info';
- p.appendChild(document.createTextNode('run-webkit-tests exited early due to too many failures/crashes/timeouts'));
- item.appendChild(p);
- }
-
- var passingBuildName;
- if (buildIndex + 1 < buildNameArray.length)
- passingBuildName = buildNameArray[buildIndex + 1];
-
- item.appendChild(self._domForRegressionRange(builder, buildName, passingBuildName, failingTestNames));
-
- if (passingBuildName || !stillFetchingData) {
- var bugForm = new FailingTestsBugForm(builder, buildName, passingBuildName, failingTestNames);
- item.appendChild(self._domForNewAndExistingBugs(builder, failingTestNames, bugForm))
- }
- });
-
- self._mainContentElement.removeAllChildren();
- self._mainContentElement.appendChild(list);
- self._mainContentElement.appendChild(self._domForPossiblyFlakyTests(builder, data.possiblyFlaky, buildNames));
-
- if (!stillFetchingData)
- PersistentCache.prune();
-
- return true;
- });
- },
-
- _displayTesters: function() {
- this._setTitle('Testers');
- this._mainContentElement.removeAllChildren();
-
- var list = document.createElement('ul');
- this._mainContentElement.appendChild(list);
-
- var latestBuildInfos = [];
- var navigationID = this._navigationID;
-
- function updateList() {
- latestBuildInfos.sort(function(a, b) { return a.tester.name.localeCompare(b.tester.name) });
- list.removeAllChildren();
- latestBuildInfos.forEach(function(buildInfo) {
- var link = base.createLinkNode('#/' + buildInfo.tester.name, buildInfo.tester.name)
- var item = document.createElement('li');
- item.appendChild(link);
- if (buildInfo.tooManyFailures)
- item.appendChild(document.createTextNode(' (too many failures/crashes/timeouts)'));
- else
- item.appendChild(document.createTextNode(' (' + buildInfo.failureCount + ' failing test' + (buildInfo.failureCount > 1 ? 's' : '') + ')'));
- list.appendChild(item);
- });
- }
-
- var self = this;
- this._buildbot.getTesters(function(testers) {
- if (self._navigationID !== navigationID) {
- // The user has navigated somewhere else.
- return;
- }
- testers.forEach(function(tester) {
- tester.getMostRecentCompletedBuildNumber(function(buildNumber) {
- if (self._navigationID !== navigationID)
- return;
- if (buildNumber < 0)
- return;
- tester.getNumberOfFailingTests(buildNumber, function(failureCount, tooManyFailures) {
- if (self._navigationID !== navigationID)
- return;
- if (failureCount <= 0)
- return;
- latestBuildInfos.push({ tester: tester, failureCount: failureCount, tooManyFailures: tooManyFailures });
- updateList();
- });
- });
- });
- });
- },
-
- _domForRegressionRange: function(builder, failingBuildName, passingBuildName, failingTestNames) {
- var result = document.createDocumentFragment();
-
- var dlItems = [
- [document.createTextNode('Failed'), this._domForBuildName(builder, failingBuildName)],
- ];
- if (passingBuildName)
- dlItems.push([document.createTextNode('Passed'), this._domForBuildName(builder, passingBuildName)]);
- result.appendChild(createDescriptionList(dlItems));
-
- if (!passingBuildName)
- return result;
-
- var firstSuspectRevision = this._buildbot.parseBuildName(passingBuildName).revision + 1;
- var lastSuspectRevision = this._buildbot.parseBuildName(failingBuildName).revision;
-
- if (firstSuspectRevision === lastSuspectRevision)
- return result;
-
- var suspectsContainer = document.createElement('div');
- result.appendChild(suspectsContainer);
-
- var link = base.createLinkNode(trac.logURL('trunk', firstSuspectRevision, lastSuspectRevision, true), 'View regression range in Trac');
- result.appendChild(link);
-
- suspectsContainer.appendChild(document.createTextNode('Searching for suspect revisions\u2026'));
-
- // FIXME: Maybe some of this code should go in LayoutTestHistoryAnalyzer, or some other class?
- var self = this;
- trac.commitDataForRevisionRange('trunk', firstSuspectRevision, lastSuspectRevision, function(commits) {
- var failingTestNamesWithoutExtensions = failingTestNames.map(removePathExtension);
- var suspectCommits = commits.filter(function(commit) {
- return failingTestNamesWithoutExtensions.some(function(testName) {
- return commit.message.contains(testName);
- });
- });
-
- suspectsContainer.removeAllChildren();
-
- if (!suspectCommits.length)
- return;
-
- var title = 'Suspect revision' + (suspectCommits.length > 1 ? 's' : '') + ':';
- suspectsContainer.appendChild(document.createTextNode(title));
-
- var list = document.createElement('ul');
- suspectsContainer.appendChild(list);
- list.className = 'suspect-revisions-list';
-
- function compareCommits(a, b) {
- return b.revision - a.revision;
- }
-
- list.appendChildren(sorted(suspectCommits, compareCommits).map(function(commit) {
- var item = document.createElement('li');
- item.appendChild(base.createLinkNode(trac.changesetURL(commit.revision), commit.title));
- return item;
- }));
- });
-
- return result;
- },
-
- _domForAuxiliaryUIElements: function() {
- var aside = document.createElement('aside');
- aside.appendChild(document.createTextNode('Something not working? Have an idea to improve this page? '));
- var queryParameters = {
- product: 'WebKit',
- component: 'Tools / Tests',
- version: '528+ (Nightly build)',
- bug_file_loc: location.href,
- cc: 'aroben@apple.com',
- short_desc: 'TestFailures page needs more unicorns!',
- };
- aside.appendChild(base.createLinkNode(addQueryParametersToURL(config.kBugzillaURL + '/enter_bug.cgi', queryParameters), 'File a bug!', '_blank'));
- return aside;
- },
-
- _domForBuildName: function(builder, buildName) {
- var parsed = this._buildbot.parseBuildName(buildName);
-
- var sourceLink = base.createLinkNode('http://trac.webkit.org/changeset/' + parsed.revision, 'r' + parsed.revision);
- var buildLink = base.createLinkNode(builder.buildURL(parsed.buildNumber), parsed.buildNumber);
- var resultsLink = base.createLinkNode(builder.resultsPageURL(buildName), 'results.html');
-
- var result = document.createDocumentFragment();
- result.appendChild(sourceLink);
- result.appendChild(document.createTextNode(' ('));
- result.appendChild(buildLink);
- result.appendChild(document.createTextNode(') ('));
- result.appendChild(resultsLink);
- result.appendChild(document.createTextNode(')'));
-
- return result;
- },
-
- _domForFailedTest: function(builder, buildName, testName, testResult) {
- var result = document.createDocumentFragment();
- result.appendChild(document.createTextNode(testName + ': '));
- result.appendChild(this._domForFailureDiagnosis(builder, buildName, testName, testResult));
- return result;
- },
-
- _domForFailureDiagnosis: function(builder, buildName, testName, testResult) {
- var diagnosticInfo = builder.failureDiagnosisTextAndURL(buildName, testName, testResult);
- if (!diagnosticInfo)
- return document.createTextNode(testResult.failureType);
-
- var textAndCrashingSymbol = document.createDocumentFragment();
- textAndCrashingSymbol.appendChild(document.createTextNode(diagnosticInfo.text));
- if (testResult.crashingSymbol) {
- var code = document.createElement('code');
- code.appendChild(document.createTextNode(testResult.crashingSymbol));
- textAndCrashingSymbol.appendChild(document.createTextNode(' ('));
- textAndCrashingSymbol.appendChild(code);
- textAndCrashingSymbol.appendChild(document.createTextNode(')'));
- }
-
- if (!('url' in diagnosticInfo))
- return textAndCrashingSymbol;
-
- return base.createLinkNode(diagnosticInfo.url, textAndCrashingSymbol);
- },
-
- _domForNewAndExistingBugs: function(tester, failingTests, bugForm) {
- var result = document.createDocumentFragment();
-
- var container = document.createElement('p');
- result.appendChild(container);
-
- container.className = 'existing-and-new-bugs';
-
- var bugsContainer = document.createElement('div');
- container.appendChild(bugsContainer);
-
- bugsContainer.appendChild(document.createTextNode('Searching for bugs related to ' + (failingTests.length > 1 ? 'these tests' : 'this test') + '\u2026'));
-
- bugzilla.quickSearch('ALL ' + failingTests.join('|'), function(bugs) {
- if (!bugs.length) {
- bugsContainer.parentNode.removeChild(bugsContainer);
- return;
- }
-
- while (bugsContainer.firstChild)
- bugsContainer.removeChild(bugsContainer.firstChild);
-
- bugsContainer.appendChild(document.createTextNode('Existing bugs related to ' + (failingTests.length > 1 ? 'these tests' : 'this test') + ':'));
-
- var list = document.createElement('ul');
- bugsContainer.appendChild(list);
-
- list.className = 'existing-bugs-list';
-
- function bugToListItem(bug) {
- var link = base.createLinkNode(bug.url, bug.title);
- var item = document.createElement('li');
- item.appendChild(link);
-
- return item;
- }
-
- var openBugs = bugs.filter(function(bug) { return bugzilla.isOpenStatus(bug.status) });
- var closedBugs = bugs.filter(function(bug) { return !bugzilla.isOpenStatus(bug.status) });
-
- list.appendChildren(openBugs.map(bugToListItem));
-
- if (!closedBugs.length)
- return;
-
- var item = document.createElement('li');
- list.appendChild(item);
-
- item.appendChild(document.createTextNode('Closed bugs:'));
-
- var closedList = document.createElement('ul');
- item.appendChild(closedList);
-
- closedList.appendChildren(closedBugs.map(bugToListItem));
- });
-
- var form = bugForm.domElement();
- result.appendChild(form);
-
- var linkText = 'File bug for ' + (failingTests.length > 1 ? 'these failures' : 'this failure');
- var link = base.createLinkNode('#', linkText);
- link.addEventListener('click', function(event) { form.submit(); event.preventDefault(); });
-
- container.appendChild(link);
- return result;
- },
-
- _domForPossiblyFlakyTests: function(builder, possiblyFlakyTestData, allBuilds) {
- var result = document.createDocumentFragment();
- var flakyTests = Object.keys(possiblyFlakyTestData);
- if (!flakyTests.length)
- return result;
-
- var flakyHeader = document.createElement('h2');
- result.appendChild(flakyHeader);
- flakyHeader.appendChild(document.createTextNode('Possibly Flaky Tests'));
-
- var flakyList = document.createElement('ol');
- result.appendChild(flakyList);
-
- flakyList.id = 'possibly-flaky-tests';
-
- var self = this;
- flakyList.appendChildren(sorted(flakyTests).map(function(testName) {
- var item = document.createElement('li');
-
- var disclosureTriangle = document.createElement('span');
- item.appendChild(disclosureTriangle);
-
- disclosureTriangle.className = 'disclosure-triangle';
- const blackRightPointingSmallTriangle = '\u25b8';
- disclosureTriangle.appendChild(document.createTextNode(blackRightPointingSmallTriangle));
-
- var failures = possiblyFlakyTestData[testName];
-
- item.appendChild(document.createTextNode(testName + ' (failed ' + failures.length + ' out of ' + allBuilds.length + ' times)'));
-
- var container = document.createElement('div');
- item.appendChild(container);
-
- container.className = 'expandable';
-
- disclosureTriangle.addEventListener('click', function() {
- item.toggleStyleClass('expanded');
- if (!item.hasStyleClass('expanded'))
- return;
-
- if (!container.firstChild) {
- var failureList = document.createElement('ol');
- container.appendChild(failureList);
-
- failureList.className = 'flakiness-examples-list';
-
- failureList.appendChildren(failures.map(function(historyItem) {
- var item = document.createElement('li');
- item.appendChild(self._domForBuildName(builder, historyItem.build));
- item.appendChild(document.createTextNode(': '));
- item.appendChild(self._domForFailureDiagnosis(builder, historyItem.build, testName, historyItem.result));
- return item;
- }));
-
- var failingBuildNames = failures.map(function(historyItem) { return historyItem.build });
- var bugForm = new FlakyTestBugForm(builder, failingBuildNames, testName, allBuilds.last(), allBuilds[0], allBuilds.length);
- container.appendChild(self._domForNewAndExistingBugs(builder, [testName], bugForm));
- }
- });
-
- return item;
- }));
-
- return result;
- },
-
- _setTitle: function(title) {
- document.title = title;
- this._header.textContent = title;
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBugzilla.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBugzilla.js
deleted file mode 100644
index 1f2db660c..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBugzilla.js
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-const WebKitBugzilla = {
- Component: {
- ToolsTests: 'Tools / Tests',
- },
-
- Keyword: {
- LayoutTestFailure: 'LayoutTestFailure',
- MakingBotsRed: 'MakingBotsRed',
- Regression: 'Regression',
- },
-
- OperatingSystem: {
- Leopard: 'Mac OS X 10.5',
- SnowLeopard: 'Mac OS X 10.6',
- Windows7: 'Windows 7',
- WindowsXP: 'Windows XP',
- },
-
- Platform: {
- Macintosh: 'Macintosh',
- PC: 'PC',
- },
-
- Product: {
- WebKit: 'WebKit',
- },
-
- Version: {
- Nightly: '528+ (Nightly build)',
- },
-};
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBuildbot.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBuildbot.js
deleted file mode 100644
index c0fab46f9..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBuildbot.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-function WebKitBuildbot() {
- Buildbot.call(this, 'http://build.webkit.org/');
-}
-
-WebKitBuildbot.prototype = {
- parseBuildName: function(buildName) {
- var match = /^r(\d+) \((\d+)\)$/.exec(buildName);
- if (!match)
- return null;
- return {
- revision: parseInt(match[1], 10),
- buildNumber: parseInt(match[2], 10),
- };
- },
-};
-
-WebKitBuildbot.prototype.__proto__ = Buildbot.prototype;
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js
deleted file mode 100644
index d77e8991f..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js
+++ /dev/null
@@ -1,464 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var base = base || {};
-
-(function(){
-
-// Safari 5.1 lacks Function.prototype.bind.
-if (!('bind' in Function.prototype)) {
- Function.prototype.bind = function(thisObject) {
- var method = this;
- var boundArguments = [];
- for (var i = 1; i < arguments.length; ++i) {
- boundArguments.push(arguments[i]);
- }
- return function() {
- var actualParameters = [];
- for (var i = 0; i < boundArguments.length; ++i) {
- actualParameters.push(boundArguments[i]);
- }
- for (var i = 0; i < arguments.length; ++i) {
- actualParameters.push(arguments[i]);
- }
- return method.apply(thisObject, actualParameters);
- }
- }
-}
-
-base.asInteger = function(stringOrInteger)
-{
- if (typeof stringOrInteger == 'string')
- return parseInt(stringOrInteger);
- return stringOrInteger;
-};
-
-base.endsWith = function(string, suffix)
-{
- if (suffix.length > string.length)
- return false;
- var expectedIndex = string.length - suffix.length;
- return string.lastIndexOf(suffix) == expectedIndex;
-};
-
-base.repeatString = function(string, count)
-{
- return new Array(count + 1).join(string);
-};
-
-base.joinPath = function(parent, child)
-{
- if (parent.length == 0)
- return child;
- return parent + '/' + child;
-};
-
-base.dirName = function(path)
-{
- var directoryIndex = path.lastIndexOf('/');
- if (directoryIndex == -1)
- return path;
- return path.substr(0, directoryIndex);
-};
-
-base.trimExtension = function(url)
-{
- var index = url.lastIndexOf('.');
- if (index == -1)
- return url;
- return url.substr(0, index);
-}
-
-base.uniquifyArray = function(array)
-{
- var seen = {};
- var result = [];
- $.each(array, function(index, value) {
- if (seen[value])
- return;
- seen[value] = true;
- result.push(value);
- });
- return result;
-};
-
-base.flattenArray = function(arrayOfArrays)
-{
- if (!arrayOfArrays.length)
- return [];
- return arrayOfArrays.reduce(function(left, right) {
- return left.concat(right);
- });
-};
-
-base.filterDictionary = function(dictionary, predicate)
-{
- var result = {};
-
- for (var key in dictionary) {
- if (predicate(key))
- result[key] = dictionary[key];
- }
-
- return result;
-};
-
-base.mapDictionary = function(dictionary, functor)
-{
- var result = {};
-
- for (var key in dictionary) {
- var value = functor(dictionary[key]);
- if (typeof value !== 'undefined')
- result[key] = value;
- }
-
- return result;
-};
-
-base.filterTree = function(tree, isLeaf, predicate)
-{
- var filteredTree = {};
-
- function walkSubtree(subtree, directory)
- {
- for (var childName in subtree) {
- var child = subtree[childName];
- var childPath = base.joinPath(directory, childName);
- if (isLeaf(child)) {
- if (predicate(child))
- filteredTree[childPath] = child;
- continue;
- }
- walkSubtree(child, childPath);
- }
- }
-
- walkSubtree(tree, '');
- return filteredTree;
-};
-
-base.forEachDirectory = function(pathList, callback)
-{
- var pathsByDirectory = {};
- pathList.forEach(function(path) {
- var directory = base.dirName(path);
- pathsByDirectory[directory] = pathsByDirectory[directory] || [];
- pathsByDirectory[directory].push(path);
- });
- Object.keys(pathsByDirectory).sort().forEach(function(directory) {
- var paths = pathsByDirectory[directory];
- callback(directory + ' (' + paths.length + ' tests)', paths);
- });
-};
-
-base.parseJSONP = function(jsonp)
-{
- var startIndex = jsonp.indexOf('(') + 1;
- var endIndex = jsonp.lastIndexOf(')');
- if (startIndex == 0 || endIndex == -1)
- return {};
- return JSON.parse(jsonp.substr(startIndex, endIndex - startIndex));
-};
-
-base.RequestTracker = function(requestsInFlight, callback, args)
-{
- this._requestsInFlight = requestsInFlight;
- this._callback = callback;
- this._args = args || [];
- this._tryCallback();
-};
-
-base.RequestTracker.prototype = {
- _tryCallback: function()
- {
- if (!this._requestsInFlight && this._callback)
- this._callback.apply(null, this._args);
- },
- requestComplete: function()
- {
- --this._requestsInFlight;
- this._tryCallback();
- }
-}
-
-base.callInParallel = function(functionList, callback)
-{
- var requestTracker = new base.RequestTracker(functionList.length, callback);
-
- $.each(functionList, function(index, func) {
- func(function() {
- requestTracker.requestComplete();
- });
- });
-};
-
-base.callInSequence = function(func, argumentList, callback)
-{
- var nextIndex = 0;
-
- function callNext()
- {
- if (nextIndex >= argumentList.length) {
- callback();
- return;
- }
-
- func(argumentList[nextIndex++], callNext);
- }
-
- callNext();
-};
-
-base.CallbackIterator = function(callback, listOfArgumentArrays)
-{
- this._callback = callback;
- this._nextIndex = 0;
- this._listOfArgumentArrays = listOfArgumentArrays;
-};
-
-base.CallbackIterator.prototype.hasNext = function()
-{
- return this._nextIndex < this._listOfArgumentArrays.length;
-};
-
-base.CallbackIterator.prototype.hasPrevious = function()
-{
- return this._nextIndex - 2 >= 0;
-};
-
-base.CallbackIterator.prototype.callNext = function()
-{
- if (!this.hasNext())
- return;
- var args = this._listOfArgumentArrays[this._nextIndex];
- this._nextIndex++;
- this._callback.apply(null, args);
-};
-
-base.CallbackIterator.prototype.callPrevious = function()
-{
- if (!this.hasPrevious())
- return;
- var args = this._listOfArgumentArrays[this._nextIndex - 2];
- this._nextIndex--;
- this._callback.apply(null, args);
-};
-
-base.AsynchronousCache = function(fetch)
-{
- this._fetch = fetch;
- this._dataCache = {};
- this._callbackCache = {};
-};
-
-base.AsynchronousCache.prototype.get = function(key, callback)
-{
- var self = this;
-
- if (self._dataCache[key]) {
- // FIXME: Consider always calling callback asynchronously.
- callback(self._dataCache[key]);
- return;
- }
-
- if (key in self._callbackCache) {
- self._callbackCache[key].push(callback);
- return;
- }
-
- self._callbackCache[key] = [callback];
-
- self._fetch.call(null, key, function(data) {
- self._dataCache[key] = data;
-
- var callbackList = self._callbackCache[key];
- delete self._callbackCache[key];
-
- callbackList.forEach(function(cachedCallback) {
- cachedCallback(data);
- });
- });
-};
-
-base.AsynchronousCache.prototype.clear = function()
-{
- this._dataCache = {};
- this._callbackCache = {};
-}
-
-/*
- Maintains a dictionary of items, tracking their updates and removing items that haven't been updated.
- An "update" is a call to the "update" method.
- To remove stale items, call the "remove" method. It will remove all
- items that have not been been updated since the last call of "remove".
-*/
-base.UpdateTracker = function()
-{
- this._items = {};
- this._updated = {};
-}
-
-base.UpdateTracker.prototype = {
- /*
- Update an {key}/{item} pair. You can make the dictionary act as a set and
- skip the {item}, in which case the {key} is also the {item}.
- */
- update: function(key, object)
- {
- object = object || key;
- this._items[key] = object;
- this._updated[key] = 1;
- },
- exists: function(key)
- {
- return !!this.get(key);
- },
- get: function(key)
- {
- return this._items[key];
- },
- length: function()
- {
- return Object.keys(this._items).length;
- },
- /*
- Callback parameters are:
- - item
- - key
- - updated, which is true if the item was updated after last purge() call.
- */
- forEach: function(callback, thisObject)
- {
- if (!callback)
- return;
-
- Object.keys(this._items).sort().forEach(function(key) {
- var item = this._items[key];
- callback.call(thisObject || item, item, key, !!this._updated[key]);
- }, this);
- },
- purge: function(removeCallback, thisObject) {
- removeCallback = removeCallback || function() {};
- this.forEach(function(item, key, updated) {
- if (updated)
- return;
- removeCallback.call(thisObject || item, item);
- delete this._items[key];
- }, this);
- this._updated = {};
- }
-}
-
-// Based on http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/resources/shared/js/cr/ui.js
-base.extends = function(base, prototype)
-{
- var extended = function() {
- var element = typeof base == 'string' ? document.createElement(base) : base.call(this);
- extended.prototype.__proto__ = element.__proto__;
- element.__proto__ = extended.prototype;
- var singleton = element.init && element.init.apply(element, arguments);
- if (singleton)
- return singleton;
- return element;
- }
-
- extended.prototype = prototype;
- return extended;
-}
-
-function createRelativeTimeDescriptor(divisorInMilliseconds, unit)
-{
- return function(delta) {
- var deltaInUnits = delta / divisorInMilliseconds;
- return (deltaInUnits).toFixed(0) + ' ' + unit + (deltaInUnits >= 1.5 ? 's' : '') + ' ago';
- }
-}
-
-var kMinuteInMilliseconds = 60 * 1000;
-var kRelativeTimeSlots = [
- {
- maxMilliseconds: kMinuteInMilliseconds,
- describe: function(delta) { return 'Just now'; }
- },
- {
- maxMilliseconds: 60 * kMinuteInMilliseconds,
- describe: createRelativeTimeDescriptor(kMinuteInMilliseconds, 'minute')
- },
- {
- maxMilliseconds: 24 * 60 * kMinuteInMilliseconds,
- describe: createRelativeTimeDescriptor(60 * kMinuteInMilliseconds, 'hour')
- },
- {
- maxMilliseconds: Number.MAX_VALUE,
- describe: createRelativeTimeDescriptor(24 * 60 * kMinuteInMilliseconds, 'day')
- }
-];
-
-/*
- Represent time as descriptive text, relative to now and gradually decreasing in precision:
- delta < 1 minutes => Just Now
- delta < 60 minutes => X minute[s] ago
- delta < 24 hours => X hour[s] ago
- delta < inf => X day[s] ago
-*/
-base.relativizeTime = function(time)
-{
- var result;
- var delta = new Date().getTime() - time;
- kRelativeTimeSlots.some(function(slot) {
- if (delta >= slot.maxMilliseconds)
- return false;
-
- result = slot.describe(delta);
- return true;
- });
- return result;
-}
-
-base.getURLParameter = function(name)
-{
- var match = RegExp(name + '=' + '(.+?)(&|$)').exec(location.search);
- if (!match)
- return null;
- return decodeURI(match[1])
-}
-
-base.underscoredBuilderName = function(builderName)
-{
- return builderName.replace(/[ .()]/g, '_');
-}
-
-base.createLinkNode = function(url, textContent, opt_target)
-{
- var link = document.createElement('a');
- link.href = url;
- if (opt_target)
- link.target = opt_target;
- link.appendChild(document.createTextNode(textContent));
- return link;
-}
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js
deleted file mode 100644
index 2106e68c6..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("base");
-
-test("bind", 3, function() {
- function func(a, b) {
- equals(this.prop, 5);
- equals(a, "banana");
- deepEqual(b, [2, 3, 4]);
- }
-
- var thisObject = {
- "prop": 5
- };
-
- var bound = func.bind(thisObject, "banana");
- bound([2, 3, 4]);
-});
-
-
-test("joinPath", 1, function() {
- var value = base.joinPath("path/to", "test.html");
- equals(value, "path/to/test.html");
-});
-
-test("endsWith", 9, function() {
- ok(base.endsWith("xyz", ""));
- ok(base.endsWith("xyz", "z"));
- ok(base.endsWith("xyz", "yz"));
- ok(base.endsWith("xyz", "xyz"));
- ok(!base.endsWith("xyz", "wxyz"));
- ok(!base.endsWith("xyz", "gwxyz"));
- ok(base.endsWith("", ""));
- ok(!base.endsWith("", "z"));
- ok(!base.endsWith("xyxy", "yx"));
-});
-
-test("trimExtension", 6, function() {
- equals(base.trimExtension("xyz"), "xyz");
- equals(base.trimExtension("xy.z"), "xy");
- equals(base.trimExtension("x.yz"), "x");
- equals(base.trimExtension("x.y.z"), "x.y");
- equals(base.trimExtension(".xyz"), "");
- equals(base.trimExtension(""), "");
-});
-
-test("joinPath with empty parent", 1, function() {
- var value = base.joinPath("", "test.html");
- equals(value, "test.html");
-});
-
-test("dirName", 3, function() {
- equals(base.dirName("foo.html"), "foo.html");
- equals(base.dirName("foo/bar.html"), "foo");
- equals(base.dirName("foo/bar/baz.html"), "foo/bar");
-});
-
-test("uniquifyArray", 5, function() {
- deepEqual(base.uniquifyArray([]), []);
- deepEqual(base.uniquifyArray(["a"]), ["a"]);
- deepEqual(base.uniquifyArray(["a", "b"]), ["a", "b"]);
- deepEqual(base.uniquifyArray(["a", "b", "b"]), ["a", "b"]);
- deepEqual(base.uniquifyArray(["a", "b", "b", "a"]), ["a", "b"]);
-});
-
-test("flattenArray", 5, function() {
- deepEqual(base.flattenArray([]), []);
- deepEqual(base.flattenArray([["a"]]), ["a"]);
- deepEqual(base.flattenArray([["a"], ["b"]]), ["a", "b"]);
- deepEqual(base.flattenArray([["a"], ["b", "c"]]), ["a", "b", "c"]);
- deepEqual(base.flattenArray([["a"], [], ["b"]]), ["a", "b"]);
-});
-
-test("callInParallel", 4, function() {
- var expectedCall = [true, true, true];
- var expectCompletionCallback = true;
-
- base.callInParallel([
- function(callback) {
- ok(expectedCall[0]);
- expectedCall[0] = false;
- callback();
- },
- function(callback) {
- ok(expectedCall[1]);
- expectedCall[1] = false;
- callback();
- },
- function(callback) {
- ok(expectedCall[2]);
- expectedCall[2] = false;
- callback();
- },
- ], function() {
- ok(expectCompletionCallback);
- expectCompletionCallback = false;
- })
-});
-
-test("callInSequence", 7, function() {
- var expectedArg = 42;
- var expectCompletionCallback = true;
-
- base.callInSequence(function(arg, callback) {
- ok(arg < 45);
- equals(arg, expectedArg++);
- callback();
- }, [42, 43, 44], function() {
- ok(expectCompletionCallback);
- expectCompletionCallback = false;
- })
-});
-
-test("RequestTracker", 5, function() {
- var ready = false;
- var tracker = new base.RequestTracker(1, function() {
- ok(ready);
- });
- ready = true;
- tracker.requestComplete();
- ready = false;
-
- tracker = new base.RequestTracker(2, function(parameter) {
- ok(ready);
- equals(parameter, 'argument');
- }, ['argument']);
- tracker.requestComplete();
- ready = true;
- tracker.requestComplete();
- ready = false;
-
- tracker = new base.RequestTracker(0, function() {
- ok(true);
- });
- tracker.requestComplete();
-
- tracker = new base.RequestTracker(0);
- tracker.requestComplete();
- // Should not barf.
- ok(true);
-});
-
-test("CallbackIterator", 22, function() {
- var expected = 0;
- var iterator = new base.CallbackIterator(function(a, b) {
- equals(a, 'ArgA' + expected);
- equals(b, 'ArgB' + expected);
- ++expected;
- }, [
- ['ArgA0', 'ArgB0'],
- ['ArgA1', 'ArgB1'],
- ['ArgA2', 'ArgB2'],
- ]);
- ok(iterator.hasNext())
- ok(!iterator.hasPrevious())
- iterator.callNext();
- ok(iterator.hasNext())
- ok(!iterator.hasPrevious())
- iterator.callNext();
- ok(iterator.hasNext())
- ok(iterator.hasPrevious())
- iterator.callNext();
- ok(!iterator.hasNext())
- ok(iterator.hasPrevious())
- expected = 1;
- iterator.callPrevious();
- ok(iterator.hasNext())
- ok(iterator.hasPrevious())
- expected = 0;
- iterator.callPrevious();
- ok(iterator.hasNext())
- ok(!iterator.hasPrevious())
-});
-
-test("filterDictionary", 3, function() {
- var dictionary = {
- 'foo': 43,
- 'bar': 11
- };
- deepEqual(base.filterDictionary(dictionary, function() { return true; }), {
- "foo": 43,
- "bar": 11
- });
- deepEqual(base.filterDictionary(dictionary, function() { return false; }), { });
- deepEqual(base.filterDictionary(dictionary, function(key) { return key == 'foo'; }), {
- "foo": 43
- });
-});
-
-test("mapDictionary", 3, function() {
- deepEqual(base.mapDictionary({}, function(value) { return value - 10; }), {});
- var dictionary = {
- 'foo': 43,
- 'bar': 11
- };
- deepEqual(base.mapDictionary(dictionary, function(value) { return value - 10; }), {
- "foo": 33,
- "bar": 1
- });
- deepEqual(base.mapDictionary(dictionary, function(value) {
- if (value > 20)
- return value - 20;
- }), {
- "foo": 23,
- });
-});
-
-test("filterTree", 2, function() {
- var tree = {
- 'path': {
- 'to': {
- 'test.html': {
- 'actual': 'PASS',
- 'expected': 'FAIL'
- }
- },
- 'another.html': {
- 'actual': 'TEXT',
- 'expected': 'PASS'
- }
- }
- }
-
- function isLeaf(node)
- {
- return !!node.actual;
- }
-
- function actualIsText(node)
- {
- return node.actual == 'TEXT';
- }
-
- var all = base.filterTree(tree, isLeaf, function() { return true });
- deepEqual(all, {
- 'path/to/test.html': {
- 'actual': 'PASS',
- 'expected': 'FAIL'
- },
- 'path/another.html': {
- 'actual': 'TEXT',
- 'expected': 'PASS'
- }
- });
-
- var text = base.filterTree(tree, isLeaf, actualIsText);
- deepEqual(text, {
- 'path/another.html': {
- 'actual': 'TEXT',
- 'expected': 'PASS'
- }
- });
-});
-
-test("UpdateTracker", 20, function() {
- var dict;
-
- function dumpKeys()
- {
- var updates = []
- dict.forEach(function(item, key, updated) {
- updates.push(key);
- });
- return updates;
- }
-
- function dumpUpdatedKeys()
- {
- var updates = []
- dict.forEach(function(item, key, updated) {
- updated && updates.push(key);
- });
- return updates;
- }
-
-
- dict = new base.UpdateTracker();
- dict.update("5", {});
- deepEqual(dumpUpdatedKeys(), ["5"]);
- dict.update("6", {});
- dict.update("7", {});
- deepEqual(dumpUpdatedKeys(), ["5", "6", "7"]);
- deepEqual(dict.get("6"), {});
- ok(dict.exists("7"));
- dict.purge();
- deepEqual(dumpUpdatedKeys(), []);
- deepEqual(dumpKeys(), ["5", "6", "7"]);
- dict.update("5", {});
- deepEqual(dumpUpdatedKeys(), ["5"]);
- dict.update("4", {});
- deepEqual(dumpUpdatedKeys(), ["4", "5"]);
- deepEqual(dumpKeys(), ["4", "5", "6", "7"]);
- dict.purge();
- deepEqual(dumpKeys(), ["4", "5"]);
- deepEqual(dumpUpdatedKeys(), []);
- dict.purge();
- deepEqual(dumpKeys(), []);
-
- var removeCount = 0;
- dict.update("one");
- deepEqual(dumpUpdatedKeys(), ["one"]);
- dict.update("two");
- deepEqual(dumpUpdatedKeys(), ["one", "two"]);
- dict.update("three");
- dict.purge();
- deepEqual(dumpKeys(), ["one", "three", "two"]);
- dict.update("two");
- dict.purge(function() {
- removeCount++;
- });
- deepEqual(dumpKeys(), ["two"]);
- equal(removeCount, 2);
- dict.update("four");
- var removeCounter = { count: 0 };
- dict.purge(function() {
- this.count++;
- }, removeCounter);
- equal(removeCounter.count, 1);
- dict.purge(function() {
- equal(String(this), "four");
- });
-
- dict = new base.UpdateTracker();
- dict.update("one");
- var thisObject = {}
- dict.forEach(function(item) {
- equal(this, thisObject);
- }, thisObject);
-
-});
-
-test("extends", 14, function() {
-
- var LikeDiv = base.extends("div", {
- init: function() {
- this.textContent = "awesome";
- },
- method: function(msg) {
- return 42;
- }
- });
-
- var LikeLikeDiv = base.extends(LikeDiv, {
- init: function() {
- this.className = "like";
- }
- });
-
- var LikeP = base.extends("p", {
- init: function(content) {
- this.textContent = content
- }
- });
-
- var LikeProgress = base.extends("progress", {
- init: function() {
- this.max = 100;
- this.value = 10;
- }
- });
-
- var LikeLikeProgress = base.extends(LikeProgress, {
- completed: function() {
- this.value = 100;
- }
- });
-
- document.body.appendChild(new LikeDiv());
- equals(document.body.lastChild.tagName, "DIV");
- equals(document.body.lastChild.innerHTML, "awesome");
- equals(document.body.lastChild.method(), 42);
- document.body.removeChild(document.body.lastChild);
-
- document.body.appendChild(new LikeLikeDiv());
- equals(document.body.lastChild.tagName, "DIV");
- equals(document.body.lastChild.innerHTML, "awesome");
- equals(document.body.lastChild.method(), 42);
- equals(document.body.lastChild.className, "like");
- document.body.removeChild(document.body.lastChild);
-
- document.body.appendChild(new LikeP("super"));
- equals(document.body.lastChild.tagName, "P");
- equals(document.body.lastChild.innerHTML, "super");
- raises(function() {
- document.body.lastChild.method();
- });
- document.body.removeChild(document.body.lastChild);
-
- document.body.appendChild(new LikeProgress());
- equals(document.body.lastChild.tagName, "PROGRESS");
- // Safari 5.1 lacks the <progress> element.
- // equals(document.body.lastChild.position, 0.1);
- equals(document.body.lastChild.innerHTML, "");
- raises(function() {
- document.body.lastChild.method();
- });
- document.body.removeChild(document.body.lastChild);
-
- document.body.appendChild(new LikeLikeProgress());
- equals(document.body.lastChild.tagName, "PROGRESS");
- // Safari 5.1 lacks the <progress> element.
- // equals(document.body.lastChild.position, 0.1);
- document.body.lastChild.completed();
- // Safari 5.1 lacks the <progress> element.
- // equals(document.body.lastChild.position, 1);
- document.body.removeChild(document.body.lastChild);
-});
-
-test("relativizeTime", 14, function() {
- var time = new Date();
- equals(base.relativizeTime(time), "Just now");
- time.setMinutes(time.getMinutes() - 1);
- equals(base.relativizeTime(time), "1 minute ago");
- time.setMinutes(time.getMinutes() - 1);
- equals(base.relativizeTime(time), "2 minutes ago");
- time.setMinutes(time.getMinutes() - 1);
- equals(base.relativizeTime(time), "3 minutes ago");
- time.setMinutes(time.getMinutes() - 56);
- equals(base.relativizeTime(time), "59 minutes ago");
- time.setMinutes(time.getMinutes() - 1);
- equals(base.relativizeTime(time), "1 hour ago");
- time.setMinutes(time.getMinutes() - 29);
- equals(base.relativizeTime(time), "1 hour ago");
- time.setMinutes(time.getMinutes() - 2);
- equals(base.relativizeTime(time), "2 hours ago");
- time.setMinutes(time.getMinutes() - 29);
- equals(base.relativizeTime(time), "2 hours ago");
- time.setHours(time.getHours() - 1);
- equals(base.relativizeTime(time), "3 hours ago");
- time.setHours(time.getHours() - 20);
- equals(base.relativizeTime(time), "23 hours ago");
- time.setHours(time.getHours() - 1);
- equals(base.relativizeTime(time), "1 day ago");
- time.setDate(time.getDate() - 1);
- equals(base.relativizeTime(time), "2 days ago");
- time.setDate(time.getDate() - 998);
- equals(base.relativizeTime(time), "1000 days ago");
-});
-
-test("getURLParameter", 1, function() {
- ok(!base.getURLParameter('non-existant'));
-});
-
-test("parseJSONP", 2, function() {
- deepEqual(base.parseJSONP(""), {});
- deepEqual(base.parseJSONP('p({"key": "value"})'), {"key": "value"});
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/bugzilla_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/bugzilla_unittests.js
deleted file mode 100644
index 84019f0cb..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/bugzilla_unittests.js
+++ /dev/null
@@ -1,233 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("bugzilla");
-
-var kExampleResponseXML =
- '<?xml version="1.0" encoding="UTF-8"?>' +
- '<feed xmlns="http://www.w3.org/2005/Atom">' +
- ' <title>Bugzilla Bugs</title>' +
- ' <link rel="alternate" type="text/html"' +
- ' href="https://bugs.webkit.org/buglist.cgi?bug_status=REOPENED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=UNCONFIRMED&amp;field-1-0-0=bug_status&amp;field0-0-0=product&amp;field0-0-1=component&amp;field0-0-2=short_desc&amp;field0-0-3=status_whiteboard&amp;field0-0-4=longdesc&amp;query_format=advanced&amp;remaction=&amp;type-1-0-0=anyexact&amp;type0-0-0=substring&amp;type0-0-1=substring&amp;type0-0-2=substring&amp;type0-0-3=substring&amp;type0-0-4=substring&amp;value-1-0-0=REOPENED%2CNEW%2CASSIGNED%2CUNCONFIRMED&amp;value0-0-0=garden-o-matic&amp;value0-0-1=garden-o-matic&amp;value0-0-2=garden-o-matic&amp;value0-0-3=garden-o-matic&amp;value0-0-4=garden-o-matic"/>' +
- ' <link rel="self" type="application/atom+xml"' +
- ' href="https://bugs.webkit.org/buglist.cgi?bug_status=REOPENED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=UNCONFIRMED&amp;ctype=atom&amp;field-1-0-0=bug_status&amp;field0-0-0=product&amp;field0-0-1=component&amp;field0-0-2=short_desc&amp;field0-0-3=status_whiteboard&amp;field0-0-4=longdesc&amp;query_format=advanced&amp;remaction=&amp;type-1-0-0=anyexact&amp;type0-0-0=substring&amp;type0-0-1=substring&amp;type0-0-2=substring&amp;type0-0-3=substring&amp;type0-0-4=substring&amp;value-1-0-0=REOPENED%2CNEW%2CASSIGNED%2CUNCONFIRMED&amp;value0-0-0=garden-o-matic&amp;value0-0-1=garden-o-matic&amp;value0-0-2=garden-o-matic&amp;value0-0-3=garden-o-matic&amp;value0-0-4=garden-o-matic"/>' +
- ' <updated>2011-08-04T00:22:49Z</updated>' +
- ' <id>https://bugs.webkit.org/buglist.cgi?bug_status=REOPENED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=UNCONFIRMED&amp;ctype=atom&amp;field-1-0-0=bug_status&amp;field0-0-0=product&amp;field0-0-1=component&amp;field0-0-2=short_desc&amp;field0-0-3=status_whiteboard&amp;field0-0-4=longdesc&amp;query_format=advanced&amp;remaction=&amp;type-1-0-0=anyexact&amp;type0-0-0=substring&amp;type0-0-1=substring&amp;type0-0-2=substring&amp;type0-0-3=substring&amp;type0-0-4=substring&amp;value-1-0-0=REOPENED%2CNEW%2CASSIGNED%2CUNCONFIRMED&amp;value0-0-0=garden-o-matic&amp;value0-0-1=garden-o-matic&amp;value0-0-2=garden-o-matic&amp;value0-0-3=garden-o-matic&amp;value0-0-4=garden-o-matic</id>' +
- '' +
- ' <entry>' +
- ' <title>[Bug 65654] Add missing license blocks to garden-o-matic</title>' +
- ' <link rel="alternate" type="text/html"' +
- ' href="https://bugs.webkit.org/show_bug.cgi?id=65654"/>' +
- ' <id>https://bugs.webkit.org/show_bug.cgi?id=65654</id>' +
- ' <author>' +
- ' <name>Adam Barth</name>' +
- ' </author>' +
- ' <updated>2011-08-04T00:22:26Z</updated> ' +
- ' <summary type="html">' +
- ' ' +
- ' &lt;table&gt;' +
- ' &lt;tr&gt;' +
- ' &lt;th&gt;Field&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_product&quot;&gt;' +
- ' &lt;td&gt;Product&lt;/td&gt;' +
- ' &lt;td&gt;WebKit&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_component&quot;&gt;' +
- ' &lt;td&gt;Component&lt;/td&gt;' +
- ' &lt;td&gt;New Bugs&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_assignee&quot;&gt;' +
- ' &lt;td&gt;Assignee&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_reporter&quot;&gt;' +
- ' &lt;td&gt;Reporter&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_bug_status&quot;&gt;' +
- ' &lt;td&gt;Status&lt;/td&gt;' +
- ' &lt;td&gt;NEW&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_resolution&quot;&gt;' +
- ' &lt;td&gt;Resolution &lt;/td&gt;' +
- ' &lt;td&gt;&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_priority&quot;&gt;' +
- ' &lt;td&gt;Priority&lt;/td&gt;' +
- ' &lt;td&gt;P2&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_severity&quot;&gt;' +
- ' &lt;td&gt;Severity &lt;/td&gt;' +
- ' &lt;td&gt;Normal&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_creation_date&quot;&gt;' +
- ' &lt;td&gt;Opened&lt;/td&gt;' +
- ' &lt;td&gt;16:21:52&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_changed_date&quot;&gt;' +
- ' &lt;td&gt;Changed&lt;/td&gt;' +
- ' &lt;td&gt;16:22:26&lt;/td&gt;' +
- ' &lt;/tr&gt;' +
- ' &lt;/table&gt;' +
- ' </summary>' +
- ' </entry>' +
- ' <entry>' +
- ' <title>[Bug 65653] garden-o-matic needs a way to mock out the network</title>' +
- ' <link rel="alternate" type="text/html"' +
- ' href="https://bugs.webkit.org/show_bug.cgi?id=65653"/>' +
- ' <id>https://bugs.webkit.org/show_bug.cgi?id=65653</id>' +
- ' <author>' +
- ' <name>Adam Barth</name>' +
- ' </author>' +
- ' <updated>2011-08-04T00:22:49Z</updated> ' +
- ' <summary type="html">' +
- ' ' +
- ' &lt;table&gt;' +
- ' &lt;tr&gt;' +
- ' &lt;th&gt;Field&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_product&quot;&gt;' +
- ' &lt;td&gt;Product&lt;/td&gt;' +
- ' &lt;td&gt;WebKit&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_component&quot;&gt;' +
- ' &lt;td&gt;Component&lt;/td&gt;' +
- ' &lt;td&gt;New Bugs&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_assignee&quot;&gt;' +
- ' &lt;td&gt;Assignee&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_reporter&quot;&gt;' +
- ' &lt;td&gt;Reporter&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_bug_status&quot;&gt;' +
- ' &lt;td&gt;Status&lt;/td&gt;' +
- ' &lt;td&gt;NEW&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_resolution&quot;&gt;' +
- ' &lt;td&gt;Resolution &lt;/td&gt;' +
- ' &lt;td&gt;&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_priority&quot;&gt;' +
- ' &lt;td&gt;Priority&lt;/td&gt;' +
- ' &lt;td&gt;P2&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_severity&quot;&gt;' +
- ' &lt;td&gt;Severity &lt;/td&gt;' +
- ' &lt;td&gt;Normal&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_creation_date&quot;&gt;' +
- ' &lt;td&gt;Opened&lt;/td&gt;' +
- ' &lt;td&gt;16:16:44&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_changed_date&quot;&gt;' +
- ' &lt;td&gt;Changed&lt;/td&gt;' +
- ' &lt;td&gt;16:22:49&lt;/td&gt;' +
- ' &lt;/tr&gt;' +
- ' &lt;/table&gt;' +
- ' </summary>' +
- ' </entry>' +
- ' <entry>' +
- ' <title>[Bug 65650] Use failureInfo more pervasively in garden-o-matic</title>' +
- ' <link rel="alternate" type="text/html"' +
- ' href="https://bugs.webkit.org/show_bug.cgi?id=65650"/>' +
- ' <id>https://bugs.webkit.org/show_bug.cgi?id=65650</id>' +
- ' <author>' +
- ' <name>Adam Barth</name>' +
- ' </author>' +
- ' <updated>2011-08-03T23:40:34Z</updated> ' +
- ' <summary type="html">' +
- ' ' +
- ' &lt;table&gt;' +
- ' &lt;tr&gt;' +
- ' &lt;th&gt;Field&lt;/th&gt;&lt;th&gt;Value&lt;/th&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_product&quot;&gt;' +
- ' &lt;td&gt;Product&lt;/td&gt;' +
- ' &lt;td&gt;WebKit&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_component&quot;&gt;' +
- ' &lt;td&gt;Component&lt;/td&gt;' +
- ' &lt;td&gt;New Bugs&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_assignee&quot;&gt;' +
- ' &lt;td&gt;Assignee&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_reporter&quot;&gt;' +
- ' &lt;td&gt;Reporter&lt;/td&gt;' +
- ' &lt;td&gt;Adam Barth&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_bug_status&quot;&gt;' +
- ' &lt;td&gt;Status&lt;/td&gt;' +
- ' &lt;td&gt;NEW&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_resolution&quot;&gt;' +
- ' &lt;td&gt;Resolution &lt;/td&gt;' +
- ' &lt;td&gt;&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_priority&quot;&gt;' +
- ' &lt;td&gt;Priority&lt;/td&gt;' +
- ' &lt;td&gt;P2&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_severity&quot;&gt;' +
- ' &lt;td&gt;Severity &lt;/td&gt;' +
- ' &lt;td&gt;Normal&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_creation_date&quot;&gt;' +
- ' &lt;td&gt;Opened&lt;/td&gt;' +
- ' &lt;td&gt;15:35:55&lt;/td&gt;' +
- ' &lt;/tr&gt;&lt;tr class=&quot;bz_feed_changed_date&quot;&gt;' +
- ' &lt;td&gt;Changed&lt;/td&gt;' +
- ' &lt;td&gt;15:40:34&lt;/td&gt;' +
- ' &lt;/tr&gt;' +
- ' &lt;/table&gt;' +
- ' </summary>' +
- ' </entry>' +
- '</feed>'
-
-test("quickSearch", 3, function() {
- var simulator = new NetworkSimulator();
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- var parser = new DOMParser();
- var responseDOM = parser.parseFromString(kExampleResponseXML, "application/xml");
- callback(responseDOM);
- });
- };
-
- simulator.runTest(function() {
- bugzilla.quickSearch('garden-o-matic', function(bugs) {
- deepEqual(bugs, [{
- "title": "[Bug 65654] Add missing license blocks to garden-o-matic",
- "url": "https://bugs.webkit.org/show_bug.cgi?id=65654",
- "status": "NEW"
- }, {
- "title": "[Bug 65653] garden-o-matic needs a way to mock out the network",
- "url": "https://bugs.webkit.org/show_bug.cgi?id=65653",
- "status": "NEW"
- }, {
- "title": "[Bug 65650] Use failureInfo more pervasively in garden-o-matic",
- "url": "https://bugs.webkit.org/show_bug.cgi?id=65650",
- "status": "NEW"
- }]);
- });
- });
-
- deepEqual(requestedURLs, [
- "https://bugs.webkit.org/buglist.cgi?ctype=rss&order=bugs.bug_id+desc&quicksearch=garden-o-matic",
- ]);
-});
-
-test("isOpenStatus", 6, function() {
- ok(bugzilla.isOpenStatus('UNCONFIRMED'));
- ok(bugzilla.isOpenStatus('NEW'));
- ok(bugzilla.isOpenStatus('ASSIGNED'));
- ok(bugzilla.isOpenStatus('REOPENED'));
- ok(!bugzilla.isOpenStatus('FIXED'));
- ok(!bugzilla.isOpenStatus('VERIFIED'));
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js
deleted file mode 100644
index 7f5b36c21..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var builders = builders || {};
-
-(function() {
-
-var kUpdateStepName = 'update';
-var kUpdateScriptsStepName = 'update_scripts';
-var kCompileStepName = 'compile';
-var kWebKitTestsStepNames = ['webkit_tests', 'layout-test'];
-
-var kCrashedOrHungOutputMarker = 'crashed or hung';
-
-function buildBotURL(platform)
-{
- return config.kPlatforms[platform].buildConsoleURL;
-}
-
-function urlForBuilderInfo(platform, builderName)
-{
- return buildBotURL(platform) + '/json/builders/' + encodeURIComponent(builderName) + '/';
-}
-
-function urlForBuildInfo(platform, builderName, buildNumber)
-{
- return buildBotURL(platform) + '/json/builders/' + encodeURIComponent(builderName) + '/builds/' + encodeURIComponent(buildNumber);
-}
-
-function didFail(step)
-{
- if (kWebKitTestsStepNames.indexOf(step.name) != -1) {
- // run-webkit-tests fails to generate test coverage when it crashes or hangs.
- // FIXME: Do build.webkit.org bots output this marker when the tests fail to run?
- return step.text.indexOf(kCrashedOrHungOutputMarker) != -1;
- }
- // The first item in step.results is the success of the step:
- // 0 == pass, 1 == warning, 2 == fail
- return step.results[0] == 2;
-}
-
-function failingSteps(buildInfo)
-{
- return buildInfo.steps.filter(didFail);
-}
-
-function mostRecentCompletedBuildNumber(individualBuilderStatus)
-{
- if (!individualBuilderStatus)
- return null;
-
- for (var i = individualBuilderStatus.cachedBuilds.length - 1; i >= 0; --i) {
- var buildNumber = individualBuilderStatus.cachedBuilds[i];
- if (individualBuilderStatus.currentBuilds.indexOf(buildNumber) == -1)
- return buildNumber;
- }
-
- return null;
-}
-
-var g_buildInfoCache = new base.AsynchronousCache(function(key, callback) {
- var explodedKey = key.split('\n');
- net.get(urlForBuildInfo(explodedKey[0], explodedKey[1], explodedKey[2]), callback);
-});
-
-builders.clearBuildInfoCache = function()
-{
- g_buildInfoCache.clear();
-}
-
-function fetchMostRecentBuildInfoByBuilder(platform, callback)
-{
- net.get(buildBotURL(platform) + '/json/builders', function(builderStatus) {
- var buildInfoByBuilder = {};
- var builderNames = Object.keys(builderStatus);
- var requestTracker = new base.RequestTracker(builderNames.length, callback, [buildInfoByBuilder]);
- builderNames.forEach(function(builderName) {
- if (!config.builderApplies(builderName)) {
- requestTracker.requestComplete();
- return;
- }
-
- var buildNumber = mostRecentCompletedBuildNumber(builderStatus[builderName]);
- if (!buildNumber) {
- buildInfoByBuilder[builderName] = null;
- requestTracker.requestComplete();
- return;
- }
-
- g_buildInfoCache.get(platform + '\n' + builderName + '\n' + buildNumber, function(buildInfo) {
- buildInfoByBuilder[builderName] = buildInfo;
- requestTracker.requestComplete();
- });
- });
- });
-}
-
-builders.builderInfo = function(platform, builderName, callback)
-{
- var builderInfoURL = urlForBuilderInfo(platform, builderName);
- net.get(builderInfoURL, callback);
-};
-
-builders.cachedBuildInfos = function(platform, builderName, callback)
-{
- var builderInfoURL = urlForBuilderInfo(platform, builderName);
- net.get(builderInfoURL, function(builderInfo) {
- var selectURL = urlForBuilderInfo(platform, builderName) + 'builds';
- var start = Math.max(0, builderInfo.cachedBuilds.length - config.kBuildNumberLimit);
- var selectParams = { select : builderInfo.cachedBuilds.slice(start) };
- var traditionalEncoding = true;
- selectURL += '?' + $.param(selectParams, traditionalEncoding);
- net.get(selectURL, callback);
- });
-}
-
-builders.recentBuildInfos = function(callback)
-{
- fetchMostRecentBuildInfoByBuilder(config.currentPlatform, function(buildInfoByBuilder) {
- var buildInfo = {};
- $.each(buildInfoByBuilder, function(builderName, thisBuildInfo) {
- if (!buildInfo)
- return;
-
- buildInfo[builderName] = thisBuildInfo;
- });
- callback(buildInfo);
- });
-};
-
-builders.buildersFailingNonLayoutTests = function(callback)
-{
- fetchMostRecentBuildInfoByBuilder(config.currentPlatform, function(buildInfoByBuilder) {
- var failureList = {};
- $.each(buildInfoByBuilder, function(builderName, buildInfo) {
- if (!buildInfo)
- return;
- var failures = failingSteps(buildInfo);
- if (failures.length)
- failureList[builderName] = failures.map(function(failure) { return failure.name; });
- });
- callback(failureList);
- });
-};
-
-builders.perfBuilders = function(callback)
-{
- fetchMostRecentBuildInfoByBuilder(config.currentPlatform, function(buildInfoByBuilder) {
- var perfTestMap = {};
- $.each(buildInfoByBuilder, function(builderName, buildInfo) {
- if (!buildInfo || builderName.indexOf('Perf') == -1)
- return;
-
- buildInfo.steps.forEach(function(step) {
- // FIXME: If the compile is broken, grab an older build.
- // If the compile/update is broken, no steps will have a results url.
- if (!step.urls.results)
- return;
- if (!perfTestMap[step.name])
- perfTestMap[step.name] = [];
- perfTestMap[step.name].push({ builder: builderName, url: step.urls.results });
- });
- });
- callback(perfTestMap);
- });
-}
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js
deleted file mode 100644
index fd92ddd05..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js
+++ /dev/null
@@ -1,1197 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("builders");
-
-var kExampleBuilderStatusJSON = {
- "WebKit Linux": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
- "WebKit Mac10.6": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11461, 11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
- "WebKit ASAN": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11461, 11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
-};
-
-var kExampleWebKitDotOrgBuilderStatusJSON = {
- "Apple Lion Release WK2 (Tests)": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
- "GTK Linux 64-bit Debug": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11461, 11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
- "Qt Linux Release": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11461, 11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
-};
-
-var kExampleBuildInfoJSON = {
- "blame": ["abarth@webkit.org"],
- "builderName": "WebKit Linux",
- "changes": ["Files:\n Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js\n Tools/ChangeLog\nAt: Thu 04 Aug 2011 00:50:38\nChanged By: abarth@webkit.org\nComments: Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:Properties: \n\n\n", "Files:\n LayoutTests/ChangeLog\n LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png\nAt: Thu 04 Aug 2011 00:50:38\nChanged By: abarth@webkit.org\nComments: Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:Properties: \n\n\n"],
- "currentStep": null,
- "eta": null,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update_scripts/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/compile/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/test_shell_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_unit_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_results/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_gpu_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "number": 11461,
- "properties": [
- ["blamelist", ["abarth@webkit.org"], "Build"],
- ["branch", "trunk", "Build"],
- ["buildername", "WebKit Linux", "Build"],
- ["buildnumber", 11461, "Build"],
- ["got_revision", "95395", "Source"],
- ["got_webkit_revision", "92358", "Source"],
- ["gtest_filter", null, "Factory"],
- ["mastername", "chromium.webkit", "master.cfg"],
- ["revision", "92358", "Build"],
- ["scheduler", "s6_webkit_rel", "Scheduler"],
- ["slavename", "vm124-m1", "BuildSlave"]
- ],
- "reason": "",
- "requests": [{
- "builderName": "WebKit Linux",
- "builds": [11461],
- "source": {
- "branch": "trunk",
- "changes": [{
- "branch": "trunk",
- "category": null,
- "comments": "Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:",
- "files": ["Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js", "Tools/ChangeLog"],
- "number": 43707,
- "properties": [],
- "repository": "",
- "revision": "92357",
- "revlink": "http://trac.webkit.org/changeset/92357",
- "when": 1312444238.855081,
- "who": "abarth@webkit.org"
- }, {
- "branch": "trunk",
- "category": null,
- "comments": "Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:",
- "files": ["LayoutTests/ChangeLog", "LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png"],
- "number": 43708,
- "properties": [],
- "repository": "",
- "revision": "92358",
- "revlink": "http://trac.webkit.org/changeset/92358",
- "when": 1312444238.855538,
- "who": "abarth@webkit.org"
- }],
- "hasPatch": false,
- "revision": "92358"
- },
- "submittedAt": 1312444298.989818
- }],
- "results": 2,
- "slave": "vm124-m1",
- "sourceStamp": {
- "branch": "trunk",
- "changes": [{
- "branch": "trunk",
- "category": null,
- "comments": "Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:",
- "files": ["Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js", "Tools/ChangeLog"],
- "number": 43707,
- "properties": [],
- "repository": "",
- "revision": "92357",
- "revlink": "http://trac.webkit.org/changeset/92357",
- "when": 1312444238.855081,
- "who": "abarth@webkit.org"
- }, {
- "branch": "trunk",
- "category": null,
- "comments": "Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:",
- "files": ["LayoutTests/ChangeLog", "LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png"],
- "number": 43708,
- "properties": [],
- "repository": "",
- "revision": "92358",
- "revlink": "http://trac.webkit.org/changeset/92358",
- "when": 1312444238.855538,
- "who": "abarth@webkit.org"
- }],
- "hasPatch": false,
- "revision": "92358"
- },
- "steps": [{
- "eta": null,
- "expectations": [
- ["output", 2297, 2300.6571014083784]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update_scripts/logs/stdio"]
- ],
- "name": "update_scripts",
- "results": [0, []],
- "statistics": {},
- "step_number": 0,
- "text": ["update_scripts"],
- "times": [1312444299.102834, 1312444309.270324],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 20453, 17580.5002389645]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update/logs/stdio"] ],
- "name": "update",
- "results": [0, []],
- "statistics": {},
- "step_number": 1,
- "text": ["update", "r95395", "webkit r92358"],
- "times": [1312444309.270763, 1312444398.468139],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 17316, 2652.4850499589456]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/compile/logs/stdio"]
- ],
- "name": "compile",
- "results": [0, []],
- "statistics": {},
- "step_number": 2,
- "text": ["compile"],
- "times": [1312444398.46855, 1312444441.68838],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 91980, 92002.12628325251]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/test_shell_tests/logs/stdio"]
- ],
- "name": "test_shell_tests",
- "results": [0, []],
- "statistics": {},
- "step_number": 3,
- "text": ["test_shell_tests", "1 disabled", "2 flaky"],
- "times": [1312444441.688756, 1312444451.74908],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 20772, 20772.638503443086]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_unit_tests/logs/stdio"]
- ],
- "name": "webkit_unit_tests",
- "results": [0, []],
- "statistics": {},
- "step_number": 4,
- "text": ["webkit_unit_tests", "1 disabled"],
- "times": [1312444451.749574, 1312444452.306143],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2477406, 2498915.6146275494]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_tests/logs/stdio"]
- ],
- "name": "webkit_tests",
- "results": [2, ["webkit_tests"]],
- "statistics": {},
- "step_number": 5,
- "text": ["webkit_tests", "2014 fixable", "(370 skipped)", "failed 1", "<div class=\"BuildResultInfo\">", "<a href=\"http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&tests=fast/box-shadow/box-shadow-clipped-slices.html\">", "<abbr title=\"fast/box-shadow/box-shadow-clipped-slices.html\">box-shadow-clipped-slices.html</abbr>", "</a>", "</div>"],
- "times": [1312444452.306695, 1312444768.888266],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2668845, 2672746.372363254]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_results/logs/stdio"]
- ],
- "name": "archive_webkit_tests_results",
- "results": [0, []],
- "statistics": {},
- "step_number": 6,
- "text": ["archived webkit_tests results"],
- "times": [1312444768.888746, 1312444781.444399],
- "urls": {
- "layout test results": "http://build.chromium.org/buildbot/layout_test_results/WebKit_Linux\r/95395\rNone"
- }
- }, {
- "eta": null,
- "expectations": [
- ["output", 210958, 208138.4965182993]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_gpu_tests/logs/stdio"]
- ],
- "name": "webkit_gpu_tests",
- "results": [2, ["webkit_gpu_tests"]],
- "statistics": {},
- "step_number": 7,
- "text": ["webkit_gpu_tests", "148 fixable", "(24 skipped)", "failed 1", "<div class=\"BuildResultInfo\">", "<a href=\"http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&tests=compositing/scaling/tiled-layer-recursion.html\">", "<abbr title=\"compositing/scaling/tiled-layer-recursion.html\">tiled-layer-recursion.html</abbr>", "</a>", "</div>"],
- "times": [1312444781.444903, 1312444966.856074],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 148825, 147822.1074277072]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "name": "archive_webkit_tests_gpu_results",
- "results": [0, []],
- "statistics": {},
- "step_number": 8,
- "text": ["archived webkit_tests gpu results"],
- "times": [1312444966.856575, 1312444970.458655],
- "urls": {
- "layout test gpu results": "http://build.chromium.org/buildbot/layout_test_results/WebKit_Linux_-_GPU\r/95395\rNone"
- }
- }],
- "text": ["failed", "webkit_tests", "webkit_gpu_tests"],
- "times": [1312444299.10216, 1312444970.459138]
-};
-
-var kExampleBuildInfoWithWebKitTestCrashJSON = {
- "blame": ["asvitkine@chromium.org", "derat@chromium.org", "nirnimesh@chromium.org"],
- "builderName": "WebKit Win (deps)(dbg)(2)",
- "currentStep": null,
- "eta": null,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/svnkill/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/update_scripts/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/taskkill/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/update/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/extract_build/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/webkit_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/archive_webkit_tests_results/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/webkit_gpu_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "number": 7653,
- "properties": [
- ["blamelist", ["asvitkine@chromium.org", "derat@chromium.org", "nirnimesh@chromium.org"], "Build"],
- ["branch", "src", "Build"],
- ["buildername", "WebKit Win (deps)(dbg)(2)", "Builder"],
- ["buildnumber", 7653, "Build"],
- ["got_revision", "104939", "Source"],
- ["gtest_filter", null, "Factory"],
- ["mastername", "chromium.webkit", "master.cfg"],
- ["project", "", "Build"],
- ["repository", "svn://svn-mirror.golo.chromium.org/chrome/trunk", "Build"],
- ["revision", "104939", "Build"],
- ["scheduler", "s1_chromium_dbg_dep", "Scheduler"],
- ["slavename", "vm114-m1", "BuildSlave"]
- ],
- "reason": "downstream",
- "results": 2,
- "slave": "vm114-m1",
- "sourceStamp": {
- "branch": "src",
- "changes": [{
- "at": "Tue 11 Oct 2011 12:18:40",
- "branch": "src",
- "category": null,
- "comments": "Disable prefs.PrefsTest.testGeolocationPref on win\n\nTBR=dennisjeffrey@chromium.org\nBUG=99865\nTEST=\n\nReview URL: http://codereview.chromium.org/8234007",
- "files": [{
- "name": "chrome/test/functional/PYAUTO_TESTS",
- "url": null
- }],
- "number": 1397,
- "project": "",
- "properties": [],
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "rev": "104936",
- "revision": "104936",
- "revlink": "http://src.chromium.org/viewvc/chrome?view=rev&revision=104936",
- "when": 1318360720,
- "who": "nirnimesh@chromium.org"
- }, {
- "at": "Tue 11 Oct 2011 12:23:11",
- "branch": "src",
- "category": null,
- "comments": "aura: Get rid of some unneeded stubs.\n\nMost of these are for dialogs that already had WebUI\nimplementations.\n\nBUG=99718\nTEST=built with use_aura=1\n\nReview URL: http://codereview.chromium.org/8218027",
- "files": [{
- "name": "chrome/browser/ui/login/login_prompt_ui.cc",
- "url": null
- }, {
- "name": "chrome/browser/ui/views/stubs_aura.cc",
- "url": null
- }, {
- "name": "chrome/chrome_browser.gypi",
- "url": null
- }, {
- "name": "chrome/common/url_constants.cc",
- "url": null
- }, {
- "name": "chrome/common/url_constants.h",
- "url": null
- }],
- "number": 1398,
- "project": "",
- "properties": [],
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "rev": "104937",
- "revision": "104937",
- "revlink": "http://src.chromium.org/viewvc/chrome?view=rev&revision=104937",
- "when": 1318360991,
- "who": "derat@chromium.org"
- }, {
- "at": "Tue 11 Oct 2011 12:34:10",
- "branch": "src",
- "category": null,
- "comments": "Add Windows manifest for views_examples.\n\nThis allows views_examples to use themed controls and fixes\na problem with combo box drop down menus not being shown.\n\nManifest file copied from chrome/app/chrome.exe.manifest.\n\nBUG=none\nTEST=manual\n\nReview URL: http://codereview.chromium.org/8227017",
- "files": [{
- "name": "views/examples/views_examples.exe.manifest",
- "url": null
- }, {
- "name": "views/views.gyp",
- "url": null
- }],
- "number": 1400,
- "project": "",
- "properties": [],
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "rev": "104939",
- "revision": "104939",
- "revlink": "http://src.chromium.org/viewvc/chrome?view=rev&revision=104939",
- "when": 1318361650,
- "who": "asvitkine@chromium.org"
- }],
- "hasPatch": false,
- "project": "",
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "revision": "104939"
- },
- "steps": [{
- "eta": null,
- "expectations": [
- ["output", 1444, 1444.0]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/svnkill/logs/stdio"]
- ],
- "name": "svnkill",
- "results": [0, []],
- "statistics": {},
- "step_number": 0,
- "text": ["svnkill"],
- "times": [1318364210.0697701, 1318364210.463649],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2916, 2757.1580967830819]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/update_scripts/logs/stdio"]
- ],
- "name": "update_scripts",
- "results": [0, []],
- "statistics": {},
- "step_number": 1,
- "text": ["update_scripts"],
- "times": [1318364210.464299, 1318364234.741575],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 4544, 4543.9687499691299]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/taskkill/logs/stdio"]
- ],
- "name": "taskkill",
- "results": [0, []],
- "statistics": {},
- "step_number": 2,
- "text": ["taskkill"],
- "times": [1318364234.742265, 1318364245.842006],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 1019773, 22826.104572568838]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/update/logs/stdio"]
- ],
- "name": "update",
- "results": [0, []],
- "statistics": {},
- "step_number": 3,
- "text": ["update", "r104939"],
- "times": [1318364245.843008, 1318366370.946759],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 19829, 19620.437500003842]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/extract_build/logs/stdio"]
- ],
- "name": "extract_build",
- "results": [1, []],
- "statistics": {},
- "step_number": 4,
- "text": ["extract_build", "warnings"],
- "times": [1318366370.94771, 1318366404.552783],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2685, 1320624.4817683753]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/webkit_tests/logs/stdio"]
- ],
- "name": "webkit_tests",
- "results": [2, ["webkit_tests"]],
- "statistics": {},
- "step_number": 5,
- "text": ["webkit_tests", "?? fixable", "(0 skipped)", "crashed or hung"],
- "times": [1318366404.5537021, 1318366405.2564809],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 3736, 606747.58321854263]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/archive_webkit_tests_results/logs/stdio"]
- ],
- "name": "archive_webkit_tests_results",
- "results": [2, ["archive_webkit_tests_results"]],
- "statistics": {},
- "step_number": 6,
- "text": ["archived webkit_tests results", "failed"],
- "times": [1318366405.2573731, 1318366406.505815],
- "urls": {
- "layout test results": "http://build.chromium.org/buildbot/layout_test_results/WebKit_Win__deps__dbg__2_\r/0\rNone"
- }
- }, {
- "eta": null,
- "expectations": [
- ["output", 2751, 124434.9266140602]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/webkit_gpu_tests/logs/stdio"]
- ],
- "name": "webkit_gpu_tests",
- "results": [2, ["webkit_gpu_tests"]],
- "statistics": {},
- "step_number": 7,
- "text": ["webkit_gpu_tests", "?? fixable", "(0 skipped)", "crashed or hung"],
- "times": [1318366406.506711, 1318366407.179585],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 3760, 35709.407800958375]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "name": "archive_webkit_tests_gpu_results",
- "results": [2, ["archive_webkit_tests_gpu_results"]],
- "statistics": {},
- "step_number": 8,
- "text": ["archived webkit_tests gpu results", "failed"],
- "times": [1318366407.1804891, 1318366408.071501],
- "urls": {
- "layout test gpu results": "http://build.chromium.org/buildbot/layout_test_results/WebKit_Win__deps__dbg__2__-_GPU\r/0\rNone"
- }
- }],
- "text": ["failed", "webkit_tests", "archive_webkit_tests_results", "webkit_gpu_tests", "archive_webkit_tests_gpu_results"],
- "times": [1318364210.066524, 1318366408.0732119]
-};
-
-var kExampleBuildInfoWithTaskKillWarning = {
- "blame": ["asvitkine@chromium.org", "derat@chromium.org", "nirnimesh@chromium.org"],
- "builderName": "WebKit Win (deps)(dbg)(2)",
- "currentStep": null,
- "eta": null,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Win%20%28deps%29%28dbg%29%282%29/builds/7653/steps/svnkill/logs/stdio"],
- ],
- "number": 7653,
- "properties": [
- ["blamelist", ["asvitkine@chromium.org", "derat@chromium.org", "nirnimesh@chromium.org"], "Build"],
- ["branch", "src", "Build"],
- ["buildername", "WebKit Win (deps)(dbg)(2)", "Builder"],
- ["buildnumber", 7653, "Build"],
- ["got_revision", "104939", "Source"],
- ["gtest_filter", null, "Factory"],
- ["mastername", "chromium.webkit", "master.cfg"],
- ["project", "", "Build"],
- ["repository", "svn://svn-mirror.golo.chromium.org/chrome/trunk", "Build"],
- ["revision", "104939", "Build"],
- ["scheduler", "s1_chromium_dbg_dep", "Scheduler"],
- ["slavename", "vm114-m1", "BuildSlave"]
- ],
- "reason": "downstream",
- "results": 2,
- "slave": "vm114-m1",
- "sourceStamp": {
- "branch": "src",
- "changes": [{
- "at": "Tue 11 Oct 2011 12:18:40",
- "branch": "src",
- "category": null,
- "comments": "Disable prefs.PrefsTest.testGeolocationPref on win\n\nTBR=dennisjeffrey@chromium.org\nBUG=99865\nTEST=\n\nReview URL: http://codereview.chromium.org/8234007",
- "files": [{
- "name": "chrome/test/functional/PYAUTO_TESTS",
- "url": null
- }],
- "number": 1397,
- "project": "",
- "properties": [],
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "rev": "104936",
- "revision": "104936",
- "revlink": "http://src.chromium.org/viewvc/chrome?view=rev&revision=104936",
- "when": 1318360720,
- "who": "nirnimesh@chromium.org"
- }],
- "hasPatch": false,
- "project": "",
- "repository": "svn://svn-mirror.golo.chromium.org/chrome/trunk",
- "revision": "104939"
- },
- "steps": [{
- "eta": null,
- "expectations": [["output",1776,1534.0625014267862]],
- "isFinished": true,
- "isStarted": true,
- "logs": [["stdio","http://build.chromium.org/p/chromium.webkitbuilders/XP%20Perf/builds/10268/steps/taskkill/logs/stdio"]],
- "name": "taskkill",
- "results": [1,[]],
- "statistics": {},
- "step_number": 2,
- "text": ["taskkill","warning"],
- "times": [1339438214.177362,1339438222.555572],
- "urls": {}
- }],
- "text": ["failed", "webkit_tests", "archive_webkit_tests_results", "webkit_gpu_tests", "archive_webkit_tests_gpu_results"],
- "times": [1318364210.066524, 1318366408.0732119]
-};
-
-
-var kExamplePerfBuilderStatusJSON = {
- "WebKit Linux": {
- "basedir": "WebKit_Linux",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
- "Mac10.6 Perf": {
- "basedir": "Mac10_6_Perf",
- "cachedBuilds": [11459, 11460, 11461, 11462],
- "category": "6webkit linux latest",
- "currentBuilds": [11461, 11462],
- "pendingBuilds": 0,
- "slaves": ["vm124-m1"],
- "state": "building"
- },
-};
-
-var kExamplePerfBuildInfoJSON = {
- "blame": ["abarth@webkit.org"],
- "builderName": "Mac10.6 Perf",
- "changes": ["Files:\n Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js\n Tools/ChangeLog\nAt: Thu 04 Aug 2011 00:50:38\nChanged By: abarth@webkit.org\nComments: Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:Properties: \n\n\n", "Files:\n LayoutTests/ChangeLog\n LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png\n LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png\nAt: Thu 04 Aug 2011 00:50:38\nChanged By: abarth@webkit.org\nComments: Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:Properties: \n\n\n"],
- "currentStep": null,
- "eta": null,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update_scripts/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/compile/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/test_shell_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_unit_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_results/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_gpu_tests/logs/stdio"],
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "number": 11461,
- "properties": [
- ["blamelist", ["abarth@webkit.org"], "Build"],
- ["branch", "trunk", "Build"],
- ["buildername", "WebKit Linux", "Build"],
- ["buildnumber", 11461, "Build"],
- ["got_revision", "95395", "Source"],
- ["got_webkit_revision", "92358", "Source"],
- ["gtest_filter", null, "Factory"],
- ["mastername", "chromium.webkit", "master.cfg"],
- ["revision", "92358", "Build"],
- ["scheduler", "s6_webkit_rel", "Scheduler"],
- ["slavename", "vm124-m1", "BuildSlave"]
- ],
- "reason": "",
- "requests": [{
- "builderName": "WebKit Linux",
- "builds": [11461],
- "source": {
- "branch": "trunk",
- "changes": [{
- "branch": "trunk",
- "category": null,
- "comments": "Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:",
- "files": ["Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js", "Tools/ChangeLog"],
- "number": 43707,
- "properties": [],
- "repository": "",
- "revision": "92357",
- "revlink": "http://trac.webkit.org/changeset/92357",
- "when": 1312444238.855081,
- "who": "abarth@webkit.org"
- }, {
- "branch": "trunk",
- "category": null,
- "comments": "Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:",
- "files": ["LayoutTests/ChangeLog", "LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png"],
- "number": 43708,
- "properties": [],
- "repository": "",
- "revision": "92358",
- "revlink": "http://trac.webkit.org/changeset/92358",
- "when": 1312444238.855538,
- "who": "abarth@webkit.org"
- }],
- "hasPatch": false,
- "revision": "92358"
- },
- "submittedAt": 1312444298.989818
- }],
- "results": 2,
- "slave": "vm124-m1",
- "sourceStamp": {
- "branch": "trunk",
- "changes": [{
- "branch": "trunk",
- "category": null,
- "comments": "Fix types. Sadly, main.js has no test coverage. (I need to think\nabout how to test this part of the code.)\n\n* BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:",
- "files": ["Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js", "Tools/ChangeLog"],
- "number": 43707,
- "properties": [],
- "repository": "",
- "revision": "92357",
- "revlink": "http://trac.webkit.org/changeset/92357",
- "when": 1312444238.855081,
- "who": "abarth@webkit.org"
- }, {
- "branch": "trunk",
- "category": null,
- "comments": "Update baselines after <http://trac.webkit.org/changeset/92340>.\n\n* platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png:\n* platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png:",
- "files": ["LayoutTests/ChangeLog", "LayoutTests/platform/chromium-mac/fast/box-shadow/inset-box-shadows-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-horizontal-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-strict-vertical-expected.png", "LayoutTests/platform/chromium-mac/fast/repaint/shadow-multiple-vertical-expected.png"],
- "number": 43708,
- "properties": [],
- "repository": "",
- "revision": "92358",
- "revlink": "http://trac.webkit.org/changeset/92358",
- "when": 1312444238.855538,
- "who": "abarth@webkit.org"
- }],
- "hasPatch": false,
- "revision": "92358"
- },
- "steps": [{
- "eta": null,
- "expectations": [
- ["output", 2297, 2300.6571014083784]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update_scripts/logs/stdio"]
- ],
- "name": "update_scripts",
- "results": [0, []],
- "statistics": {},
- "step_number": 0,
- "text": ["update_scripts"],
- "times": [1312444299.102834, 1312444309.270324],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 20453, 17580.5002389645]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/update/logs/stdio"]
- ],
- "name": "update",
- "results": [0, []],
- "statistics": {},
- "step_number": 1,
- "text": ["update", "r95395", "webkit r92358"],
- "times": [1312444309.270763, 1312444398.468139],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 17316, 2652.4850499589456]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/compile/logs/stdio"]
- ],
- "name": "compile",
- "results": [0, []],
- "statistics": {},
- "step_number": 2,
- "text": ["compile"],
- "times": [1312444398.46855, 1312444441.68838],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 91980, 92002.12628325251]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/test_shell_tests/logs/stdio"]
- ],
- "name": "test_shell_tests",
- "results": [0, []],
- "statistics": {},
- "step_number": 3,
- "text": ["test_shell_tests", "1 disabled", "2 flaky"],
- "times": [1312444441.688756, 1312444451.74908],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 20772, 20772.638503443086]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_unit_tests/logs/stdio"]
- ],
- "name": "webkit_unit_tests",
- "results": [0, []],
- "statistics": {},
- "step_number": 4,
- "text": ["webkit_unit_tests", "1 disabled"],
- "times": [1312444451.749574, 1312444452.306143],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2477406, 2498915.6146275494]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_tests/logs/stdio"]
- ],
- "name": "webkit_tests",
- "results": [2, ["webkit_tests"]],
- "statistics": {},
- "step_number": 5,
- "text": ["webkit_tests", "2014 fixable", "(370 skipped)", "failed 1", "<div class=\"BuildResultInfo\">", "<a href=\"http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&tests=fast/box-shadow/box-shadow-clipped-slices.html\">", "<abbr title=\"fast/box-shadow/box-shadow-clipped-slices.html\">box-shadow-clipped-slices.html</abbr>", "</a>", "</div>"],
- "times": [1312444452.306695, 1312444768.888266],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 2668845, 2672746.372363254]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_results/logs/stdio"]
- ],
- "name": "dummy_perf_test_1",
- "results": [0, []],
- "statistics": {},
- "step_number": 6,
- "text": ["archived webkit_tests results"],
- "times": [1312444768.888746, 1312444781.444399],
- "urls": {
- "results": "http://dummyurl1"
- }
- }, {
- "eta": null,
- "expectations": [
- ["output", 210958, 208138.4965182993]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/webkit_gpu_tests/logs/stdio"]
- ],
- "name": "webkit_gpu_tests",
- "results": [2, ["webkit_gpu_tests"]],
- "statistics": {},
- "step_number": 7,
- "text": ["webkit_gpu_tests", "148 fixable", "(24 skipped)", "failed 1", "<div class=\"BuildResultInfo\">", "<a href=\"http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#master=ChromiumWebkit&tests=compositing/scaling/tiled-layer-recursion.html\">", "<abbr title=\"compositing/scaling/tiled-layer-recursion.html\">tiled-layer-recursion.html</abbr>", "</a>", "</div>"],
- "times": [1312444781.444903, 1312444966.856074],
- "urls": {}
- }, {
- "eta": null,
- "expectations": [
- ["output", 148825, 147822.1074277072]
- ],
- "isFinished": true,
- "isStarted": true,
- "logs": [
- ["stdio", "http://build.chromium.org/p/chromium.webkitbuilders/WebKit%20Linux/builds/11461/steps/archive_webkit_tests_gpu_results/logs/stdio"]
- ],
- "name": "dummy_perf_test_2",
- "results": [0, []],
- "statistics": {},
- "step_number": 8,
- "text": ["archived webkit_tests gpu results"],
- "times": [1312444966.856575, 1312444970.458655],
- "urls": {
- "results": "http://dummyurl2"
- }
- }],
- "text": ["failed", "webkit_tests", "webkit_gpu_tests"],
- "times": [1312444299.10216, 1312444970.459138]
-};
-
-test("buildersFailing", 3, function() {
- var simulator = new NetworkSimulator();
- builders.clearBuildInfoCache();
-
- var failingBuildInfoJSON = JSON.parse(JSON.stringify(kExampleBuildInfoJSON));
- failingBuildInfoJSON.number = 11460;
- failingBuildInfoJSON.steps[2].results[0] = 1;
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- if (/\/json\/builders$/.exec(url))
- callback(kExampleBuilderStatusJSON);
- else if (/WebKit%20Linux/.exec(url))
- callback(kExampleBuildInfoJSON);
- else if (/WebKit%20Mac10\.6/.exec(url))
- callback(failingBuildInfoJSON);
- else if (/WebKit%20ASAN/.exec(url))
- callback(failingBuildInfoJSON);
- else {
- ok(false, "Unexpected URL: " + url);
- callback();
- }
- });
- };
-
- simulator.runTest(function() {
- builders.buildersFailingNonLayoutTests(function(builderNameList) {
- deepEqual(builderNameList, {
- "WebKit Linux": [
- "webkit_gpu_tests"
- ],
- "WebKit Mac10.6": [
- "webkit_gpu_tests"
- ]
- });
- });
- });
-
- deepEqual(requestedURLs, [
- "http://build.chromium.org/p/chromium.webkit/json/builders",
- "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/11461",
- "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Mac10.6/builds/11460",
- ]);
-});
-
-test("buildersFailing (Apple)", 3, function() {
- var simulator = new NetworkSimulator();
- builders.clearBuildInfoCache();
-
- config.currentPlatform = 'apple';
-
- var failingBuildInfoJSON = JSON.parse(JSON.stringify(kExampleBuildInfoJSON));
- failingBuildInfoJSON.number = 11460;
- failingBuildInfoJSON.steps[2].results[0] = 1;
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- if (/\/json\/builders$/.exec(url))
- callback(kExampleWebKitDotOrgBuilderStatusJSON);
- else if (/Apple%20Lion%20Release%20WK2%20\(Tests\)/.exec(url))
- callback(kExampleBuildInfoJSON);
- else {
- ok(false, "Unexpected URL: " + url);
- callback();
- }
- });
- };
-
- simulator.runTest(function() {
- builders.buildersFailingNonLayoutTests(function(builderNameList) {
- deepEqual(builderNameList, {
- "Apple Lion Release WK2 (Tests)": [
- "webkit_gpu_tests"
- ]
- });
- });
- });
-
- deepEqual(requestedURLs, [
- "http://build.webkit.org/json/builders",
- "http://build.webkit.org/json/builders/Apple%20Lion%20Release%20WK2%20(Tests)/builds/11461"
- ]);
-
- config.currentPlatform = 'chromium';
-});
-
-
-test("buildersFailing (run-webkit-tests crash)", 3, function() {
- var simulator = new NetworkSimulator();
- builders.clearBuildInfoCache();
-
- var builderStatusJSON = JSON.parse(JSON.stringify(kExampleBuilderStatusJSON));
- delete builderStatusJSON['WebKit Mac10.6'];
- builderStatusJSON['WebKit Linux'].cachedBuilds = [21460];
- builderStatusJSON['WebKit Linux'].currentBuilds = [];
-
- var failingBuildInfoJSON = JSON.parse(JSON.stringify(kExampleBuildInfoWithWebKitTestCrashJSON));
- failingBuildInfoJSON.number = 21460;
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- if (/\/json\/builders$/.exec(url))
- callback(builderStatusJSON);
- else if (/WebKit%20Linux/.exec(url))
- callback(failingBuildInfoJSON);
- else {
- ok(false, "Unexpected URL: " + url);
- callback();
- }
- });
- };
-
- simulator.runTest(function() {
- builders.buildersFailingNonLayoutTests(function(builderNameList) {
- deepEqual(builderNameList, {
- "WebKit Linux": [
- "webkit_tests",
- "archive_webkit_tests_results",
- "webkit_gpu_tests",
- "archive_webkit_tests_gpu_results"
- ]
- });
- });
- });
-
- deepEqual(requestedURLs, [
- "http://build.chromium.org/p/chromium.webkit/json/builders",
- "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/21460",
- ]);
-});
-
-test("buildersFailing (taskkill warning)", 3, function() {
- var simulator = new NetworkSimulator();
- builders.clearBuildInfoCache();
-
- var builderStatusJSON = JSON.parse(JSON.stringify(kExampleBuilderStatusJSON));
- delete builderStatusJSON['WebKit Mac10.6'];
- builderStatusJSON['WebKit Linux'].cachedBuilds = [21460];
- builderStatusJSON['WebKit Linux'].currentBuilds = [];
-
- var failingBuildInfoJSON = JSON.parse(JSON.stringify(kExampleBuildInfoWithTaskKillWarning));
- failingBuildInfoJSON.number = 21460;
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- if (/\/json\/builders$/.exec(url))
- callback(builderStatusJSON);
- else if (/WebKit%20Linux/.exec(url))
- callback(failingBuildInfoJSON);
- else {
- ok(false, "Unexpected URL: " + url);
- callback();
- }
- });
- };
-
- simulator.runTest(function() {
- builders.buildersFailingNonLayoutTests(function(builderNameList) {
- deepEqual(builderNameList, {});
- });
- });
-
- deepEqual(requestedURLs, [
- "http://build.chromium.org/p/chromium.webkit/json/builders",
- "http://build.chromium.org/p/chromium.webkit/json/builders/WebKit%20Linux/builds/21460",
- ]);
-});
-
-test("builders.perfBuilders", 2, function() {
- var simulator = new NetworkSimulator();
- builders.clearBuildInfoCache();
-
- var builderStatusJSON = JSON.parse(JSON.stringify(kExamplePerfBuilderStatusJSON));
- var failingBuildInfoJSON = JSON.parse(JSON.stringify(kExamplePerfBuildInfoJSON));
-
- var requestedURLs = [];
- simulator.get = function(url, callback)
- {
- requestedURLs.push(url);
- simulator.scheduleCallback(function() {
- if (/\/json\/builders$/.exec(url))
- callback(builderStatusJSON);
- else if (/Mac10.6%20Perf/.exec(url))
- callback(failingBuildInfoJSON);
- else
- callback();
- });
- };
-
- simulator.runTest(function() {
- builders.perfBuilders(function(builderNameList) {
- deepEqual(builderNameList, {
- "dummy_perf_test_1": [
- {
- "builder": "Mac10.6 Perf",
- "url": "http://dummyurl1"
- }
- ],
- "dummy_perf_test_2": [
- {
- "builder": "Mac10.6 Perf",
- "url": "http://dummyurl2"
- }
- ]
- });
- });
- });
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js
deleted file mode 100644
index 10ea1ec53..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js
+++ /dev/null
@@ -1,95 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var checkout = checkout || {};
-
-(function() {
-
-var kWebKitTrunk = 'http://svn.webkit.org/repository/webkit/trunk/';
-
-var g_haveSeenCheckoutAvailable = false;
-
-function callIfCheckoutAvailable(callback, checkoutUnavailable)
-{
- if (g_haveSeenCheckoutAvailable) {
- callback();
- return;
- }
- checkout.isAvailable(function(isAvailable) {
- if (isAvailable) {
- g_haveSeenCheckoutAvailable = true;
- callback();
- return;
- }
- if (checkoutUnavailable)
- checkoutUnavailable();
- });
-}
-
-checkout.subversionURLForTest = function(testName)
-{
- return kWebKitTrunk + 'LayoutTests/' + testName;
-};
-
-checkout.isAvailable = function(callback)
-{
- net.ajax({
- url: '/ping',
- success: function() {
- callback(true);
- },
- error: function() {
- callback(false);
- },
- });
-};
-
-checkout.rollout = function(revision, reason, callback, checkoutUnavailable)
-{
- callIfCheckoutAvailable(function() {
- net.post('/rollout?' + $.param({
- 'revision': revision,
- 'reason': reason
- }), function() {
- callback();
- });
- }, checkoutUnavailable);
-};
-
-checkout.rebaseline = function(failureInfoList, callback, progressCallback, checkoutUnavailable)
-{
- callIfCheckoutAvailable(function() {
- var tests = {};
- for (var i = 0; i < failureInfoList.length; i++) {
- var failureInfo = failureInfoList[i];
- tests[failureInfo.testName] = tests[failureInfo.testName] || {};
- tests[failureInfo.testName][failureInfo.builderName] =
- base.uniquifyArray(base.flattenArray(failureInfo.failureTypeList.map(results.failureTypeToExtensionList)));
- }
- net.post('/rebaselineall', JSON.stringify(tests), function() { callback() });
- }, checkoutUnavailable);
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js
deleted file mode 100644
index 6d65ba232..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("checkout");
-
-test("subversionURLForTest", 1, function() {
- equals(checkout.subversionURLForTest("path/to/test.html"), "http://svn.webkit.org/repository/webkit/trunk/LayoutTests/path/to/test.html");
-});
-
-test("rebaseline", 3, function() {
- var simulator = new NetworkSimulator();
-
- var requests = [];
- simulator.post = function(url, body, callback)
- {
- requests.push([url, body]);
- simulator.scheduleCallback(callback);
- };
- simulator.ajax = function(options)
- {
- if (options.url.indexOf('/ping') == -1)
- ok(false, 'Received non-ping ajax request: ' + options.url);
- simulator.scheduleCallback(options.success);
- };
-
- var kExpectedTestNameProgressStack = [
- 'fast/test.html',
- 'another/test.svg',
- 'another/test.svg', // This is the first one.
- ];
-
- simulator.runTest(function() {
- checkout.rebaseline([{
- 'builderName': 'WebKit Linux',
- 'testName': 'another/test.svg',
- 'failureTypeList': ['IMAGE'],
- }, {
- 'builderName': 'WebKit Mac10.6',
- 'testName': 'another/test.svg',
- 'failureTypeList': ['IMAGE', 'TEXT', 'IMAGE+TEXT'],
- }, {
- 'builderName': 'Webkit Win7',
- 'testName': 'fast/test.html',
- 'failureTypeList': ['IMAGE+TEXT'],
- }], function() {
- ok(true);
- }, function(failureInfo) {
- equals(failureInfo.testName, kExpectedTestNameProgressStack.pop());
- }, function() {
- ok(false, 'Checkout should be available.');
- });
- });
-
- deepEqual(requests, [
- ["/rebaselineall",
- JSON.stringify({
- "another/test.svg": {
- "WebKit Linux": ["png"],
- "WebKit Mac10.6": ["png","txt"]},
- "fast/test.html": {
- "Webkit Win7": ["txt","png"]
- }})]
- ]);
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js
deleted file mode 100644
index 14cf7c377..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var config = config || {};
-
-(function() {
-
-config.kBuildNumberLimit = 20;
-
-config.kPlatforms = {
- 'apple' : {
- label : 'Apple',
- buildConsoleURL: 'http://build.webkit.org',
- layoutTestResultsURL: 'http://build.webkit.org/results',
- waterfallURL: 'http://build.webkit.org/waterfall',
- builders: {
- 'Apple Lion Release WK1 (Tests)' : {version: 'lion' },
- 'Apple Lion Debug WK1 (Tests)' : {version: 'lion', debug: true},
- 'Apple Lion Release WK2 (Tests)' : {version: 'lion' },
- 'Apple Lion Debug WK2 (Tests)' : {version: 'lion', debug: true},
- 'Apple MountainLion Release WK1 (Tests)' : {version: 'mountainlion' },
- 'Apple MountainLion Debug WK1 (Tests)' : {version: 'mountainlion', debug: true},
- 'Apple MountainLion Release WK2 (Tests)' : {version: 'mountainlion' },
- 'Apple MountainLion Debug WK2 (Tests)' : {version: 'mountainlion', debug: true},
- // 'Apple Win XP Debug (Tests)' : {version: 'xp',debug: true},
- // 'Apple Win 7 Release (Tests)' : {version: 'win7'},
- },
- haveBuilderAccumulatedResults : false,
- useDirectoryListingForOldBuilds: false,
- useFlakinessDashboard: false,
- resultsDirectoryNameFromBuilderName: function(builderName) {
- return encodeURIComponent(builderName);
- },
- resultsDirectoryForBuildNumber: function(buildNumber, revision) {
- return encodeURIComponent('r' + revision + ' (' + buildNumber + ')');
- },
- _builderApplies: function(builderName) {
- return builderName.indexOf('Apple') != -1;
- },
- },
- 'gtk' : {
- label : 'GTK',
- buildConsoleURL: 'http://build.webkit.org',
- layoutTestResultsURL: 'http://build.webkit.org/results',
- waterfallURL: 'http://build.webkit.org/waterfall',
- builders: {
- 'GTK Linux 32-bit Release' : {version: '32-bit release'},
- 'GTK Linux 64-bit Release' : {version: '64-bit release'},
- 'GTK Linux 64-bit Debug' : {version: '64-bit debug', debug: true},
- },
- haveBuilderAccumulatedResults : false,
- useDirectoryListingForOldBuilds: false,
- useFlakinessDashboard: false,
- resultsDirectoryNameFromBuilderName: function(builderName) {
- return encodeURIComponent(builderName);
- },
- resultsDirectoryForBuildNumber: function(buildNumber, revision) {
- return encodeURIComponent('r' + revision + ' (' + buildNumber + ')');
- },
- _builderApplies: function(builderName) {
- return builderName.indexOf('GTK') != -1;
- },
- },
- 'qt' : {
- label : 'Qt',
- buildConsoleURL: 'http://build.webkit.org',
- layoutTestResultsURL: 'http://build.webkit.org/results',
- waterfallURL: 'http://build.webkit.org/waterfall',
- builders: {
- 'Qt Linux Release' : {version : '32-bit release'},
- },
- haveBuilderAccumulatedResults : false,
- useDirectoryListingForOldBuilds: false,
- useFlakinessDashboard: false,
- resultsDirectoryNameFromBuilderName: function(builderName) {
- return encodeURIComponent(builderName);
- },
- resultsDirectoryForBuildNumber: function(buildNumber, revision) {
- return encodeURIComponent('r' + revision + ' (' + buildNumber + ')');
- },
- _builderApplies: function(builderName) {
- return builderName.indexOf('Qt') != -1;
- },
- },
- 'efl' : {
- label : 'EFL',
- buildConsoleURL: 'http://build.webkit.org',
- layoutTestResultsURL: 'http://build.webkit.org/results',
- waterfallURL: 'http://build.webkit.org/waterfall',
- builders: {
- 'EFL Linux 64-bit Debug WK2' : {version : '64-bit WK2', debug: true},
- 'EFL Linux 64-bit Release WK2' : {version: '64-bit WK2'},
- 'EFL Linux 64-bit Release' : {version: '64-bit'},
- },
- haveBuilderAccumulatedResults : false,
- useDirectoryListingForOldBuilds: false,
- useFlakinessDashboard: false,
- resultsDirectoryNameFromBuilderName: function(builderName) {
- return encodeURIComponent(builderName);
- },
- resultsDirectoryForBuildNumber: function(buildNumber, revision) {
- return encodeURIComponent('r' + revision + ' (' + buildNumber + ')');
- },
- _builderApplies: function(builderName) {
- return builderName.indexOf('EFL') != -1;
- },
- },
-};
-
-config.kTracURL = 'http://trac.webkit.org';
-config.kBugzillaURL = 'https://bugs.webkit.org';
-
-config.kRevisionAttr = 'data-revision';
-config.kTestNameAttr = 'data-test-name';
-config.kBuilderNameAttr = 'data-builder-name';
-config.kFailureCountAttr = 'data-failure-count';
-config.kFailureTypesAttr = 'data-failure-types';
-config.kInfobarTypeAttr = 'data-infobar-type';
-
-var kTenMinutesInMilliseconds = 10 * 60 * 1000;
-config.kUpdateFrequency = kTenMinutesInMilliseconds;
-config.kRelativeTimeUpdateFrequency = 1000 * 60;
-
-config.kExperimentalFeatures = window.location.search.search('enableExperiments=1') != -1;
-
-config.currentPlatform = base.getURLParameter('platform') || 'apple';
-
-// FIXME: We should add a way to restrict the results to a subset of the builders
-// (or maybe just a single builder) in the UI as well as via an URL parameter.
-config.currentBuilder = base.getURLParameter('builder');
-
-config.currentBuilders = function() {
- var current_builders = {};
- if (config.currentBuilder) {
- current_builders[config.currentBuilder] = config.kPlatforms[config.currentPlatform].builders[config.currentBuilder];
- return current_builders;
- } else {
- return config.kPlatforms[config.currentPlatform].builders;
- }
-};
-
-config.builderApplies = function(builderName) {
- if (config.currentBuilder)
- return builderName == config.currentBuilder;
- return config.kPlatforms[config.currentPlatform]._builderApplies(builderName);
-};
-
-config.setPlatform = function(platform) {
- if (!this.kPlatforms[platform]) {
- window.console.log(platform + ' is not a recognized platform');
- return;
- }
- config.currentPlatform = platform;
-};
-
-config.useLocalResults = Boolean(base.getURLParameter('useLocalResults')) || false;
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
deleted file mode 100644
index 94e16d7b9..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var controllers = controllers || {};
-
-(function(){
-
-var kCheckoutUnavailableMessage = 'Failed! Garden-o-matic needs a local server to modify your working copy. Please run "webkit-patch garden-o-matic" start the local server.';
-
-// FIXME: Where should this function go?
-function rebaselineWithStatusUpdates(failureInfoList, resultsByTest)
-{
- var statusView = new ui.StatusArea('Rebaseline');
- var id = statusView.newId();
-
- var failuresToRebaseline = [];
- var testNamesLogged = [];
- failureInfoList.forEach(function(failureInfo) {
- if (isAnyReftest(failureInfo.testName, resultsByTest)) {
- if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
- statusView.addMessage(id, failureInfo.testName + ' is a ref test, skipping');
- testNamesLogged.push(failureInfo.testName);
- }
- } else {
- failuresToRebaseline.push(failureInfo);
- if (testNamesLogged.indexOf(failureInfo.testName) == -1) {
- statusView.addMessage(id, 'Rebaselining ' + failureInfo.testName + '...');
- testNamesLogged.push(failureInfo.testName);
- }
- }
- });
-
- if (failuresToRebaseline.length) {
- checkout.rebaseline(failuresToRebaseline, function() {
- statusView.addFinalMessage(id, 'Rebaseline done! Please land with "webkit-patch land-cowhand".');
- }, function(failureInfo) {
- statusView.addMessage(id, failureInfo.testName + ' on ' + ui.displayNameForBuilder(failureInfo.builderName));
- }, function() {
- statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
- });
- } else {
- statusView.addFinalMessage(id, 'No non-reftests left to rebaseline!')
- }
-}
-
-// FIXME: This is duplicated from ui/results.js :(.
-function isAnyReftest(testName, resultsByTest)
-{
- return Object.keys(resultsByTest[testName]).map(function(builder) {
- return resultsByTest[testName][builder];
- }).some(function(resultNode) {
- return resultNode.reftest_type && resultNode.reftest_type.length;
- });
-}
-
-// FIXME: Where should this function go?
-function updateExpectationsWithStatusUpdates(failureInfoList)
-{
- var statusView = new ui.StatusArea('Expectations Update');
- var id = statusView.newId();
-
- var testNames = base.uniquifyArray(failureInfoList.map(function(failureInfo) { return failureInfo.testName; }));
- var testName = testNames.length == 1 ? testNames[0] : testNames.length + ' tests';
- statusView.addMessage(id, 'Updating expectations of ' + testName + '...');
-
- checkout.updateExpectations(failureInfoList, function() {
- statusView.addFinalMessage(id, 'Expectations update done! Please land with "webkit-patch land-cowhand".');
- }, function() {
- statusView.addFinalMessage(id, kCheckoutUnavailableMessage);
- });
-}
-
-controllers.ResultsDetails = base.extends(Object, {
- init: function(view, resultsByTest)
- {
- this._view = view;
- this._resultsByTest = resultsByTest;
- this._view.setResultsByTest(resultsByTest);
-
- this._view.firstResult();
-
- $(this._view).bind('next', this.onNext.bind(this));
- $(this._view).bind('previous', this.onPrevious.bind(this));
- $(this._view).bind('rebaseline', this.onRebaseline.bind(this));
- $(this._view).bind('expectfailure', this.onUpdateExpectations.bind(this));
- },
- onNext: function()
- {
- this._view.nextResult();
- },
- onPrevious: function()
- {
- this._view.previousResult();
- },
- _failureInfoList: function()
- {
- var testName = this._view.currentTestName();
- return Object.keys(this._resultsByTest[testName]).map(function(builderName) {
- return results.failureInfoForTestAndBuilder(this._resultsByTest, testName, builderName);
- }.bind(this));
- },
- onRebaseline: function()
- {
- rebaselineWithStatusUpdates(this._failureInfoList(), this._resultsByTest);
- this._view.nextTest();
- },
- onUpdateExpectations: function()
- {
- updateExpectationsWithStatusUpdates(this._failureInfoList());
- }
-});
-
-controllers.ExpectedFailures = base.extends(Object, {
- init: function(model, view, delegate)
- {
- this._model = model;
- this._view = view;
- this._delegate = delegate;
- },
- update: function()
- {
- var expectedFailures = results.expectedFailuresByTest(this._model.resultsByBuilder);
- var failingTestsList = Object.keys(expectedFailures);
-
- $(this._view).empty();
- base.forEachDirectory(failingTestsList, function(label, testsFailingInDirectory) {
- var listItem = new ui.failures.ListItem(label, testsFailingInDirectory);
- this._view.appendChild(listItem);
- $(listItem).bind('examine', function() {
- this.onExamine(testsFailingInDirectory);
- }.bind(this));
- }.bind(this));
- },
- onExamine: function(failingTestsList)
- {
- var resultsView = new ui.results.View({
- fetchResultsURLs: results.fetchResultsURLs
- });
- var failuresByTest = base.filterDictionary(
- results.expectedFailuresByTest(this._model.resultsByBuilder),
- function(key) {
- return failingTestsList.indexOf(key) != -1;
- });
- var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
- this._delegate.showResults(resultsView);
- }
-});
-
-var FailureStreamController = base.extends(Object, {
- _resultsFilter: null,
- _keyFor: function(failureAnalysis) { throw "Not implemented!"; },
- _createFailureView: function(failureAnalysis) { throw "Not implemented!"; },
-
- init: function(model, view, delegate)
- {
- this._model = model;
- this._view = view;
- this._delegate = delegate;
- this._testFailures = new base.UpdateTracker();
- },
- update: function(failureAnalysis)
- {
- var key = this._keyFor(failureAnalysis);
- var failure = this._testFailures.get(key);
- if (!failure) {
- failure = this._createFailureView(failureAnalysis);
- this._view.add(failure);
- $(failure).bind('examine', function() {
- this.onExamine(failure);
- }.bind(this));
- $(failure).bind('rebaseline', function() {
- this.onRebaseline(failure);
- }.bind(this));
- $(failure).bind('expectfailure', function() {
- this.onUpdateExpectations(failure);
- }.bind(this));
- }
- failure.addFailureAnalysis(failureAnalysis);
- this._testFailures.update(key, failure);
- return failure;
- },
- purge: function() {
- this._testFailures.purge(function(failure) {
- failure.dismiss();
- });
- this._testFailures.forEach(function(failure) {
- failure.purge();
- });
- },
- onExamine: function(failures)
- {
- var resultsView = new ui.results.View({
- fetchResultsURLs: results.fetchResultsURLs
- });
-
- var testNameList = failures.testNameList();
- var failuresByTest = base.filterDictionary(
- this._resultsFilter(this._model.resultsByBuilder),
- function(key) {
- return testNameList.indexOf(key) != -1;
- });
-
- var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
- this._delegate.showResults(resultsView);
- },
- _toFailureInfoList: function(failures)
- {
- return base.flattenArray(failures.testNameList().map(model.unexpectedFailureInfoForTestName));
- },
- onRebaseline: function(failures)
- {
- var testNameList = failures.testNameList();
- var failuresByTest = base.filterDictionary(
- this._resultsFilter(this._model.resultsByBuilder),
- function(key) {
- return testNameList.indexOf(key) != -1;
- });
-
- rebaselineWithStatusUpdates(this._toFailureInfoList(failures), failuresByTest);
- },
- onUpdateExpectations: function(failures)
- {
- updateExpectationsWithStatusUpdates(this._toFailureInfoList(failures));
- }
-});
-
-controllers.UnexpectedFailures = base.extends(FailureStreamController, {
- _resultsFilter: results.unexpectedFailuresByTest,
-
- _impliedFirstFailingRevision: function(failureAnalysis)
- {
- return failureAnalysis.newestPassingRevision + 1;
- },
- _keyFor: function(failureAnalysis)
- {
- return failureAnalysis.newestPassingRevision + "+" + failureAnalysis.oldestFailingRevision;
- },
- _createFailureView: function(failureAnalysis)
- {
- var failure = new ui.notifications.FailingTestsSummary();
- model.commitDataListForRevisionRange(this._impliedFirstFailingRevision(failureAnalysis), failureAnalysis.oldestFailingRevision).forEach(function(commitData) {
- var suspiciousCommit = failure.addCommitData(commitData);
- $(suspiciousCommit).bind('rollout', function() {
- this.onRollout(commitData.revision, failure.testNameList());
- }.bind(this));
- $(failure).bind('blame', function() {
- this.onBlame(failure, commitData);
- }.bind(this));
- }, this);
-
- return failure;
- },
- update: function(failureAnalysis)
- {
- var failure = FailureStreamController.prototype.update.call(this, failureAnalysis);
- failure.updateBuilderResults(model.buildersInFlightForRevision(this._impliedFirstFailingRevision(failureAnalysis)));
- },
- length: function()
- {
- return this._testFailures.length();
- },
- onBlame: function(failure, commitData)
- {
- failure.pinToCommitData(commitData);
- $('.action', failure).each(function() {
- // FIXME: This isn't the right way of finding and disabling this action.
- if (this.textContent == 'Blame')
- this.disabled = true;
- });
- },
- onRollout: function(revision, testNameList)
- {
- checkout.rollout(revision, ui.rolloutReasonForTestNameList(testNameList), $.noop, function() {
- // FIXME: We should have a better error UI.
- alert(kCheckoutUnavailableMessage);
- });
- }
-});
-
-controllers.Failures = base.extends(FailureStreamController, {
- _resultsFilter: results.expectedFailuresByTest,
-
- _keyFor: function(failureAnalysis)
- {
- return base.dirName(failureAnalysis.testName);
- },
- _createFailureView: function(failureAnalysis)
- {
- return new ui.notifications.FailingTests();
- },
-});
-
-controllers.FailingBuilders = base.extends(Object, {
- init: function(view, message)
- {
- this._view = view;
- this._message = message;
- this._notification = null;
- },
- hasFailures: function()
- {
- return !!this._notification;
- },
- update: function(failuresList)
- {
- if (Object.keys(failuresList).length == 0) {
- if (this._notification) {
- this._notification.dismiss();
- this._notification = null;
- }
- return;
- }
- if (!this._notification) {
- this._notification = new ui.notifications.BuildersFailing(this._message);
- this._view.add(this._notification);
- }
- // FIXME: We should provide regression ranges for the failing builders.
- // This doesn't seem to happen often enough to worry too much about that, however.
- this._notification.setFailingBuilders(failuresList);
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js
deleted file mode 100644
index dffcc9ad7..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function() {
-
-$(function() {
- model.updateResultsByBuilder(function() {
- var resultsView = new ui.results.View({
- fetchResultsURLs: results.fetchResultsURLs
- });
-
- var failuresByTest = results.expectedFailuresByTest(model.state.resultsByBuilder);
- var controller = new controllers.ResultsDetails(resultsView, failuresByTest);
- document.body.appendChild(resultsView);
- });
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js
deleted file mode 100644
index 89f4c939f..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-var kExampleResultsByBuilder = {
- "Mock Builder": unittest.kExampleResultsJSON,
-};
-
-module("controllers");
-
-test("UnexpectedFailures", 3, function() {
- var simulator = new NetworkSimulator();
-
- simulator.probe = function() {
- };
-
- simulator.runTest(function() {
- var mockView = {};
- var mockState = {
- resultsByBuilder: kExampleResultsByBuilder
- };
- var expectedResultsByTest = null;
- var mockDelegate = {
- showResults: function(resultsView)
- {
- deepEqual(resultsView._resultsByTest, expectedResultsByTest);
- }
- }
- var controller = controllers.UnexpectedFailures(mockState, mockView, mockDelegate);
-
- var testNameList = null;
- var mockFailures = {
- testNameList: function() { return testNameList; }
- };
-
- testNameList = ["scrollbars/custom-scrollbar-with-incomplete-style.html"];
- expectedResultsByTest = {};
- controller.onExamine(mockFailures);
-
- testNameList = ["userscripts/another-test.html"];
- expectedResultsByTest = {
- "userscripts/another-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- }
- };
- controller.onExamine(mockFailures);
- });
-});
-
-test("controllers.FailingBuilders", 3, function() {
- var MockView = base.extends('div', {
- add: function(node) {
- this.appendChild(node);
- }
- })
- var view = new MockView();
- var failingBuilders = new controllers.FailingBuilders(view, 'dummy message');
- ok(!failingBuilders.hasFailures());
-
- failingBuilders.update({'DummyBuilder': ['webkit_tests']});
- ok(failingBuilders.hasFailures());
-
- equal(view.outerHTML, '<div>' +
- '<li style="opacity: 0; ">' +
- '<div class="how"><time class="relative"></time></div>' +
- '<div class="what">' +
- '<div class="problem">dummy message:' +
- '<ul class="effects">' +
- '<li class="builder"><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=DummyBuilder">' +
- '<span class="version">DummyBuilder</span><span class="failures"> webkit_tests</span></a>' +
- '</li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>' +
- '</li>' +
- '</div>')
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js
deleted file mode 100644
index ebd4d5d32..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js
+++ /dev/null
@@ -1,153 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function() {
-
-var g_info = null;
-var g_revisionHint = null;
-
-var g_updateTimerId = 0;
-var g_buildersFailing = null;
-
-var g_unexpectedFailuresController = null;
-var g_failuresController = null;
-
-var g_nonLayoutTestFailureBuilders = null;
-
-function updatePartyTime()
-{
- if (!g_unexpectedFailuresController.length() && !g_nonLayoutTestFailureBuilders.hasFailures())
- $('#onebar').addClass('partytime');
- else
- $('#onebar').removeClass('partytime');
-}
-
-function update()
-{
- if (g_revisionHint)
- g_revisionHint.dismiss();
-
- var gtestIframe = document.querySelector('#chromium-gtests iframe');
- if (gtestIframe)
- gtestIframe.src = gtestIframe.src;
-
- // FIXME: This should be a button with a progress element.
- var numberOfTestsAnalyzed = 0;
- var updating = new ui.notifications.Info('Loading commit data ...');
-
- g_info.add(updating);
-
- builders.buildersFailingNonLayoutTests(function(failuresList) {
- g_nonLayoutTestFailureBuilders.update(failuresList);
- updatePartyTime();
- });
-
- base.callInParallel([model.updateRecentCommits, model.updateResultsByBuilder], function() {
- if (g_failuresController)
- g_failuresController.update();
-
- updating.update('Analyzing test failures ...');
-
- model.analyzeUnexpectedFailures(function(failureAnalysis) {
- updating.update('Analyzing test failures ... ' + ++numberOfTestsAnalyzed + ' tests analyzed.');
- g_unexpectedFailuresController.update(failureAnalysis);
- }, function() {
- updatePartyTime();
- g_unexpectedFailuresController.purge();
-
- Object.keys(config.currentBuilders()).forEach(function(builderName) {
- if (!model.state.resultsByBuilder[builderName])
- g_info.add(new ui.notifications.Info('Could not find test results for ' + builderName + ' in the last ' + config.kBuildNumberLimit + ' runs.'));
- });
-
- updating.dismiss();
-
- g_revisionHint = new ui.notifications.Info('');
-
- var latestRevisionSpan = document.createElement('span');
- latestRevisionSpan.appendChild(document.createTextNode('Latest revision processed by every bot: '));
-
- var latestRevision = model.latestRevisionWithNoBuildersInFlight();
- latestRevisionSpan.appendChild(base.createLinkNode(trac.changesetURL(latestRevision), latestRevision));
-
- var totRevision = model.latestRevision();
- latestRevisionSpan.appendChild(document.createTextNode(' (trunk is at '));
- latestRevisionSpan.appendChild(base.createLinkNode(trac.changesetURL(totRevision), totRevision));
- latestRevisionSpan.appendChild(document.createTextNode(')'));
-
- g_revisionHint.updateWithNode(latestRevisionSpan);
-
- g_info.add(g_revisionHint);
- });
- });
-}
-
-$(document).ready(function() {
- g_updateTimerId = window.setInterval(update, config.kUpdateFrequency);
-
- pixelzoomer.installEventListeners();
-
- onebar = new ui.onebar();
- onebar.attach();
-
- // FIXME: This doesn't belong here.
- var onebarController = {
- showResults: function(resultsView)
- {
- var resultsContainer = onebar.results();
- $(resultsContainer).empty().append(resultsView);
- onebar.select('results');
- }
- };
-
- var unexpectedFailuresView = new ui.notifications.Stream();
- g_unexpectedFailuresController = new controllers.UnexpectedFailures(model.state, unexpectedFailuresView, onebarController);
-
- g_info = new ui.notifications.Stream();
- g_nonLayoutTestFailureBuilders = new controllers.FailingBuilders(g_info, 'Non-layout test failures');
-
- // FIXME: This should be an Action object.
- var updateButton = document.body.insertBefore(document.createElement('button'), document.body.firstChild);
- updateButton.addEventListener("click", update);
- updateButton.textContent = 'update';
-
- var unexpected = onebar.unexpected();
- unexpected.appendChild(updateButton);
- unexpected.appendChild(g_info);
- unexpected.appendChild(unexpectedFailuresView);
-
- var expected = onebar.expected();
- if (expected) {
- var failuresView = new ui.failures.List();
- g_failuresController = new controllers.ExpectedFailures(model.state, failuresView, onebarController);
- expected.appendChild(failuresView);
- }
-
- onebar.perf().appendChild(new ui.perf.View());
-
- update();
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js
deleted file mode 100644
index 3c3f85243..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var model = model || {};
-
-(function () {
-
-var kCommitLogLength = 50;
-
-model.state = {};
-model.state.failureAnalysisByTest = {};
-model.state.rebaselineQueue = [];
-model.state.expectationsUpdateQueue = [];
-
-function findAndMarkRevertedRevisions(commitDataList)
-{
- var revertedRevisions = {};
- $.each(commitDataList, function(index, commitData) {
- if (commitData.revertedRevision)
- revertedRevisions[commitData.revertedRevision] = true;
- });
- $.each(commitDataList, function(index, commitData) {
- if (commitData.revision in revertedRevisions)
- commitData.wasReverted = true;
- });
-}
-
-function fuzzyFind(testName, commitData)
-{
- var indexOfLastDot = testName.lastIndexOf('.');
- var stem = indexOfLastDot == -1 ? testName : testName.substr(0, indexOfLastDot);
- return commitData.message.indexOf(stem) != -1;
-}
-
-function heuristicallyNarrowRegressionRange(failureAnalysis)
-{
- var commitDataList = model.state.recentCommits;
- var commitDataIndex = commitDataList.length - 1;
-
- for(var revision = failureAnalysis.newestPassingRevision + 1; revision <= failureAnalysis.oldestFailingRevision; ++revision) {
- while (commitDataIndex >= 0 && commitDataList[commitDataIndex].revision < revision)
- --commitDataIndex;
- var commitData = commitDataList[commitDataIndex];
- if (commitData.revision != revision)
- continue;
- if (fuzzyFind(failureAnalysis.testName, commitData)) {
- failureAnalysis.oldestFailingRevision = revision;
- failureAnalysis.newestPassingRevision = revision - 1;
- return;
- }
- }
-}
-
-model.queueForRebaseline = function(failureInfo)
-{
- model.state.rebaselineQueue.push(failureInfo);
-};
-
-model.takeRebaselineQueue = function()
-{
- var queue = model.state.rebaselineQueue;
- model.state.rebaselineQueue = [];
- return queue;
-};
-
-model.queueForExpectationUpdate = function(failureInfo)
-{
- model.state.expectationsUpdateQueue.push(failureInfo);
-};
-
-model.takeExpectationUpdateQueue = function()
-{
- var queue = model.state.expectationsUpdateQueue;
- model.state.expectationsUpdateQueue = [];
- return queue;
-};
-
-var g_commitIndex = {};
-
-model.updateRecentCommits = function(callback)
-{
- trac.recentCommitData('trunk', kCommitLogLength, function(commitDataList) {
- model.state.recentCommits = commitDataList;
- updateCommitIndex();
- findAndMarkRevertedRevisions(model.state.recentCommits);
- callback();
- });
-};
-
-function updateCommitIndex()
-{
- model.state.recentCommits.forEach(function(commitData) {
- g_commitIndex[commitData.revision] = commitData;
- });
-}
-
-model.commitDataListForRevisionRange = function(fromRevision, toRevision)
-{
- var result = [];
- for (var revision = fromRevision; revision <= toRevision; ++revision) {
- var commitData = g_commitIndex[revision];
- if (commitData)
- result.push(commitData);
- }
- return result;
-};
-
-model.buildersInFlightForRevision = function(revision)
-{
- var builders = {};
- Object.keys(model.state.resultsByBuilder).forEach(function(builderName) {
- var results = model.state.resultsByBuilder[builderName];
- if (parseInt(results.revision) < revision)
- builders[builderName] = { actual: 'BUILDING' };
- });
- return builders;
-};
-
-model.latestRevision = function()
-{
- return model.state.recentCommits[0].revision;
-}
-
-model.latestRevisionWithNoBuildersInFlight = function()
-{
- var revision = 0;
- Object.keys(model.state.resultsByBuilder).forEach(function(builderName) {
- var results = model.state.resultsByBuilder[builderName];
- if (!results.revision)
- return;
- var testedRevision = parseInt(results.revision);
- revision = revision ? Math.min(revision, testedRevision) : testedRevision;
- });
- return revision;
-}
-
-model.updateResultsByBuilder = function(callback)
-{
- var platformBuilders = config.currentBuilders();
- results.fetchResultsByBuilder(Object.keys(platformBuilders), function(resultsByBuilder) {
- model.state.resultsByBuilder = resultsByBuilder;
- callback();
- });
-};
-
-model.analyzeUnexpectedFailures = function(callback, completionCallback)
-{
- var unexpectedFailures = results.unexpectedFailuresByTest(model.state.resultsByBuilder);
-
- $.each(model.state.failureAnalysisByTest, function(testName, failureAnalysis) {
- if (!(testName in unexpectedFailures))
- delete model.state.failureAnalysisByTest[testName];
- });
-
- var tracker = new base.RequestTracker(Object.keys(unexpectedFailures).length, completionCallback);
- $.each(unexpectedFailures, function(testName, resultNodesByBuilder) {
- var builderNameList = Object.keys(resultNodesByBuilder);
- results.unifyRegressionRanges(builderNameList, testName, function(oldestFailingRevision, newestPassingRevision) {
- var failureAnalysis = {
- 'testName': testName,
- 'resultNodesByBuilder': resultNodesByBuilder,
- 'oldestFailingRevision': oldestFailingRevision,
- 'newestPassingRevision': newestPassingRevision,
- };
-
- heuristicallyNarrowRegressionRange(failureAnalysis);
-
- var previousFailureAnalysis = model.state.failureAnalysisByTest[testName];
- if (previousFailureAnalysis
- && previousFailureAnalysis.oldestFailingRevision <= failureAnalysis.oldestFailingRevision
- && previousFailureAnalysis.newestPassingRevision >= failureAnalysis.newestPassingRevision) {
- failureAnalysis.oldestFailingRevision = previousFailureAnalysis.oldestFailingRevision;
- failureAnalysis.newestPassingRevision = previousFailureAnalysis.newestPassingRevision;
- }
-
- model.state.failureAnalysisByTest[testName] = failureAnalysis;
-
- callback(failureAnalysis);
- tracker.requestComplete();
- });
- });
-};
-
-model.unexpectedFailureInfoForTestName = function(testName)
-{
- var resultsByTest = results.unexpectedFailuresByTest(model.state.resultsByBuilder);
-
- return Object.keys(resultsByTest[testName]).map(function(builderName) {
- return results.failureInfoForTestAndBuilder(resultsByTest, testName, builderName);
- });
-};
-
-model.analyzeUnexpectedSuccesses = function(callback)
-{
- var unexpectedSuccesses = results.unexpectedSuccessesByTest(model.state.resultsByBuilder);
- $.each(unexpectedSuccesses, function(testName, resultNodesByBuilder) {
- var successAnalysis = {
- 'testName': testName,
- 'resultNodesByBuilder': resultNodesByBuilder,
- };
-
- // FIXME: Consider looking at the history to see how long this test
- // has been unexpectedly passing.
-
- callback(successAnalysis);
- });
-};
-
-model.analyzeexpectedFailures = function(callback)
-{
- var expectedFailures = results.expectedFailuresByTest(model.state.resultsByBuilder);
- $.each(expectedFailures, function(testName, resultNodesByBuilder) {
- var failureAnalysis = {
- 'testName': testName,
- 'resultNodesByBuilder': resultNodesByBuilder,
- };
-
- // FIXME: Consider looking at the history to see how long this test
- // has been failing.
-
- callback(failureAnalysis);
- });
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js
deleted file mode 100644
index ab040d7fb..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("model");
-
-var kExampleCommitDataXML =
- '<?xml version="1.0"?>\n\n' +
- '<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">\n\n' +
- ' \n\n' +
- '\n\n' +
- ' <channel>\n\n' +
- ' <title>Revisions of /trunk</title>\n\n' +
- ' <link>http://trac.webkit.org/log/trunk?rev=92362</link>\n\n' +
- ' <description>Trac Log - Revisions of /trunk</description>\n\n' +
- ' <language>en-US</language>\n\n' +
- ' <generator>Trac 0.11.7</generator>\n\n' +
- ' <image>\n\n' +
- ' <title>WebKit</title>\n\n' +
- ' <url>http://trac.webkit.org/chrome/site/icon.png</url>\n\n' +
- ' <link>http://trac.webkit.org/log/trunk?rev=92362</link>\n\n' +
- ' </image>\n\n' +
- ' <item>\n' +
- ' <author>commit-queue@webkit.org</author>\n' +
- ' <pubDate>Wed, 03 Aug 2011 04:26:52 GMT</pubDate>\n' +
- ' <title>Revision 92259: Unreviewed, rolling out r92256.\n' +
- 'http://trac.webkit.org/changeset/92256 ...</title>\n' +
- ' <link>http://trac.webkit.org/changeset/92259/trunk</link>\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92259/trunk</guid>\n' +
- ' <description>&lt;p&gt;\n' +
- 'Unreviewed, rolling out &lt;a class="changeset" href="http://trac.webkit.org/changeset/92256" title="Make EventDispatchMediator RefCounted. ..."&gt;r92256&lt;/a&gt;.\n' +
- '&lt;a class="ext-link" href="http://trac.webkit.org/changeset/92256"&gt;&lt;span class="icon"&gt; &lt;/span&gt;http://trac.webkit.org/changeset/92256&lt;/a&gt;\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=65593"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=65593&lt;/a&gt;\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Causing tons of crashes on the chromium win bots (Requested by\n' +
- 'jamesr on #webkit).\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Patch by Sheriff Bot &amp;lt;&lt;a class="mail-link" href="mailto:webkit.review.bot@gmail.com"&gt;&lt;span class="icon"&gt; &lt;/span&gt;webkit.review.bot@gmail.com&lt;/a&gt;&amp;gt; on 2011-08-02\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- '* dom/Event.cpp:\n' +
- '* dom/Event.h:\n' +
- '* dom/EventDispatcher.cpp:\n' +
- '(WebCore::EventDispatcher::dispatchEvent):\n' +
- '* dom/EventDispatcher.h:\n' +
- '* dom/KeyboardEvent.cpp:\n' +
- '* dom/KeyboardEvent.h:\n' +
- '* dom/MouseEvent.cpp:\n' +
- '* dom/MouseEvent.h:\n' +
- '* dom/Node.cpp:\n' +
- '(WebCore::Node::dispatchEvent):\n' +
- '(WebCore::Node::dispatchKeyEvent):\n' +
- '(WebCore::Node::dispatchMouseEvent):\n' +
- '(WebCore::Node::dispatchWheelEvent):\n' +
- '* dom/WheelEvent.cpp:\n' +
- '* dom/WheelEvent.h:\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item><item>\n' +
- ' <author>macpherson@chromium.org</author>\n\n' +
- ' <pubDate>Thu, 04 Aug 2011 02:09:19 GMT</pubDate>\n\n' +
- ' <title>Revision 92256: Support cast between CSSPrimitiveValue and EBoxSizing, use in ...</title>\n\n' +
- ' <link>http://trac.webkit.org/changeset/92256/trunk</link>\n\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92256/trunk</guid>\n\n' +
- ' <description>&lt;p&gt;\n\n' +
- 'Support cast between CSSPrimitiveValue and EBoxSizing, use in CSSStyleSelector.\n\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=65657"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=65657&lt;/a&gt;\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- 'Reviewed by Simon Fraser.\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- 'No new tests / refactoring only.\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- '* css/CSSPrimitiveValueMappings.h:\n\n' +
- '(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):\n\n' +
- 'Implement cast from EBoxSizing.\n' +
- '(WebCore::CSSPrimitiveValue::operator EBoxSizing):\n' +
- 'Implement cast to EBoxSizing.\n' +
- '* css/CSSStyleSelector.cpp:\n' +
- '(WebCore::CSSStyleSelector::applyProperty):\n' +
- 'Use appropriate macro to simplify code using cast.\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item>\n' +
- ' </channel>\n' +
- '</rss>\n'
-
-test("rebaselineQueue", 3, function() {
- var queue = model.takeRebaselineQueue();
- deepEqual(queue, []);
- model.queueForRebaseline('failureInfo1');
- model.queueForRebaseline('failureInfo2');
- var queue = model.takeRebaselineQueue();
- deepEqual(queue, ['failureInfo1', 'failureInfo2']);
- var queue = model.takeRebaselineQueue();
- deepEqual(queue, []);
-});
-
-test("rebaselineQueue", 3, function() {
- var queue = model.takeExpectationUpdateQueue();
- deepEqual(queue, []);
- model.queueForExpectationUpdate('failureInfo1');
- model.queueForExpectationUpdate('failureInfo2');
- var queue = model.takeExpectationUpdateQueue();
- deepEqual(queue, ['failureInfo1', 'failureInfo2']);
- var queue = model.takeExpectationUpdateQueue();
- deepEqual(queue, []);
-});
-
-test("updateRecentCommits", 2, function() {
- var simulator = new NetworkSimulator();
-
- simulator.get = function(url, callback)
- {
- simulator.scheduleCallback(function() {
- var parser = new DOMParser();
- var responseDOM = parser.parseFromString(kExampleCommitDataXML, "application/xml");
- callback(responseDOM);
- });
- };
-
- simulator.runTest(function() {
- model.updateRecentCommits(function() {
- var recentCommits = model.state.recentCommits;
- delete model.state.recentCommits;
- $.each(recentCommits, function(index, commitData) {
- delete commitData.message;
- });
- deepEqual(recentCommits, [{
- "revision": 92259,
- "title": "Revision 92259: Unreviewed, rolling out r92256.\nhttp://trac.webkit.org/changeset/92256 ...",
- "time": "Wed, 03 Aug 2011 04:26:52 GMT",
- "summary": "Unreviewed, rolling out r92256.",
- "author": "Sheriff Bot",
- "reviewer": null,
- "bugID": 65593,
- "revertedRevision": 92256
- }, {
- "revision": 92256,
- "title": "Revision 92256: Support cast between CSSPrimitiveValue and EBoxSizing, use in ...",
- "time": "Thu, 04 Aug 2011 02:09:19 GMT",
- "summary": "Support cast between CSSPrimitiveValue and EBoxSizing, use in CSSStyleSelector.",
- "author": "macpherson@chromium.org",
- "reviewer": "Simon Fraser",
- "bugID": 65657,
- "revertedRevision": undefined,
- "wasReverted": true
- }]);
- });
- });
-});
-
-test("commitDataListForRevisionRange", 6, function() {
- var simulator = new NetworkSimulator();
-
- simulator.get = function(url, callback)
- {
- simulator.scheduleCallback(function() {
- var parser = new DOMParser();
- var responseDOM = parser.parseFromString(kExampleCommitDataXML, "application/xml");
- callback(responseDOM);
- });
- };
-
- simulator.runTest(function() {
- model.updateRecentCommits(function() {
- function extractBugIDs(commitData)
- {
- return commitData.bugID;
- }
-
- deepEqual(model.commitDataListForRevisionRange(92259, 92259).map(extractBugIDs), [65593]);
- deepEqual(model.commitDataListForRevisionRange(92256, 92259).map(extractBugIDs), [65657, 65593]);
- deepEqual(model.commitDataListForRevisionRange(92259, 92256).map(extractBugIDs), []);
- deepEqual(model.commitDataListForRevisionRange(0, 92256).map(extractBugIDs), [65657]);
- deepEqual(model.commitDataListForRevisionRange(92256, 0).map(extractBugIDs), []);
- delete model.state.recentCommits;
- });
- });
-});
-
-test("buildersInFlightForRevision", 3, function() {
- var unmock = model.state.resultsByBuilder;
- model.state.resultsByBuilder = {
- 'Mr. Beasley': {revision: '5'},
- 'Mr Dixon': {revision: '1'},
- 'Mr. Sabatini': {revision: '4'},
- 'Bob': {revision: '6'}
- };
- deepEqual(model.buildersInFlightForRevision(1), {});
- deepEqual(model.buildersInFlightForRevision(3), {
- "Mr Dixon": {
- "actual": "BUILDING"
- }
- });
- deepEqual(model.buildersInFlightForRevision(10), {
- "Mr. Beasley": {
- "actual": "BUILDING"
- },
- "Mr Dixon": {
- "actual": "BUILDING"
- },
- "Mr. Sabatini": {
- "actual": "BUILDING"
- },
- "Bob": {
- "actual": "BUILDING"
- }
- });
- model.state.resultsByBuilder = unmock;
-});
-
-test("latestRevisionWithNoBuildersInFlight", 1, function() {
- var unmock = model.state.resultsByBuilder;
- model.state.resultsByBuilder = {
- 'Mr. Beasley': { },
- 'Mr Dixon': {revision: '2'},
- 'Mr. Sabatini': {revision: '4'},
- 'Bob': {revision: '6'}
- };
- equals(model.latestRevisionWithNoBuildersInFlight(), 2);
- model.state.resultsByBuilder = unmock;
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js
deleted file mode 100644
index a5fa5643a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var net = net || {};
-
-(function () {
-
-// FIXME: Excise this last bit of jquery ajax code.
-// There are callers that depend on automatically parsing the content as JSON or XML
-// based off the content-type. Instead we should add net.json and net.xml for those cases.
-net.get = function(url, success)
-{
- $.get(url, success);
-};
-
-net.ajax = function(options)
-{
- var xhr = new XMLHttpRequest();
- var method = options.type || 'GET';
- var async = true;
- xhr.open(method, options.url, async);
- xhr.onload = function() {
- if (xhr.status == 200 && options.success)
- options.success(xhr.responseText);
- else if (xhr.status != 200 && options.error)
- options.error();
- };
- xhr.onerror = function() {
- if (options.error)
- options.error();
- };
- var data = options.data || null;
- if (data)
- xhr.setRequestHeader("content-type","application/x-www-form-urlencoded");
- xhr.send(data);
-};
-
-net.post = function(url, data, success)
-{
- net.ajax({
- url: url,
- type: 'POST',
- data: data,
- success: success,
- });
-
-};
-
-net.probe = function(url, options)
-{
- net.ajax({
- url: url,
- type: 'HEAD',
- success: options.success,
- error: options.error,
- });
-};
-
-// We use XMLHttpRequest and CORS to fetch JSONP rather than using script tags.
-// That's better for security and performance, but we need the server to cooperate
-// by setting CORS headers.
-net.jsonp = function(url, callback)
-{
- net.ajax({
- url: url,
- success: function(jsonp) {
- callback(base.parseJSONP(jsonp));
- },
- error: function() {
- callback({});
- },
- });
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net_unittests.js
deleted file mode 100644
index 8fcc9cb45..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net_unittests.js
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-// Export NetworkSimulator for use by other unittests.
-function NetworkSimulator()
-{
- this._pendingCallbacks = [];
-};
-
-NetworkSimulator.prototype.scheduleCallback = function(callback)
-{
- this._pendingCallbacks.push(callback);
-};
-
-NetworkSimulator.prototype.runTest = function(testCase)
-{
- var self = this;
- var realNet = window.net;
-
- window.net = {};
- if (self.probe)
- net.probe = self.probe;
- if (self.jsonp)
- net.jsonp = self.jsonp;
- if (self.get)
- net.get = self.get;
- if (self.post)
- net.post = self.post;
- if (self.ajax)
- net.ajax = self.ajax;
-
- testCase();
-
- while (this._pendingCallbacks.length) {
- var callback = this._pendingCallbacks.shift();
- callback();
- }
-
- window.net = realNet;
- equal(window.net, realNet, "Failed to restore real base!");
-};
-
-(function () {
-
-module("net");
-
-// No unit tests yet!
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js
deleted file mode 100644
index a88e22a0a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-// pixelzoomer is shared with LayoutTests/fast/harness/results.html
-// Unfortuantely, there's no good way to share code between these two uses.
-
-var pixelzoomer = pixelzoomer || {};
-
-(function() {
-
-var kZoomFactor = 6;
-var kDelayTimeoutMS = 400;
-
-var kResultWidth = 800;
-var kResultHeight = 600;
-
-var kZoomedResultWidth = kResultWidth * kZoomFactor;
-var kZoomedResultHeight = kResultHeight * kZoomFactor;
-
-function matchesSelector(node, selector)
-{
- if (node.webkitMatchesSelector)
- return node.webkitMatchesSelector(selector);
-
- if (node.mozMatchesSelector)
- return node.mozMatchesSelector(selector);
-}
-
-function parentOfType(node, selector)
-{
- while (node = node.parentNode) {
- if (matchesSelector(node, selector))
- return node;
- }
- return null;
-}
-
-function zoomImageContainer(url)
-{
- var container = document.createElement('div');
- container.className = 'zoom-image-container';
-
- var title = url.match(/\-([^\-]*)\.png/)[1];
-
- var label = document.createElement('div');
- label.className = 'label';
- label.appendChild(document.createTextNode(title));
- container.appendChild(label);
-
- var imageContainer = document.createElement('div');
- imageContainer.className = 'scaled-image-container';
-
- var image = new Image();
- image.src = url;
- image.style.width = kZoomedResultWidth + 'px';
- image.style.height = kZoomedResultHeight + 'px';
- image.style.border = '1px solid black';
- imageContainer.appendChild(image);
- container.appendChild(imageContainer);
-
- return container;
-}
-
-function createContainer(e)
-{
- var tbody = parentOfType(e.target, 'tbody');
- var row = tbody.querySelector('tr');
- var images = row.querySelectorAll('img[src$=".png"]');
-
- var container = document.createElement('div');
- container.className = 'pixel-zoom-container';
-
- for (var i = 0; i < images.length; i++)
- container.appendChild(zoomImageContainer(images[i].src));
-
- document.body.appendChild(container);
- drawAll();
-}
-
-function draw(imageContainer)
-{
- var image = imageContainer.querySelector('img');
- var containerBounds = imageContainer.getBoundingClientRect();
- image.style.left = (containerBounds.width / 2 - pixelzoomer._percentX * kZoomedResultWidth) + 'px';
- image.style.top = (containerBounds.height / 2 - pixelzoomer._percentY * kZoomedResultHeight) + 'px';
-}
-
-function drawAll()
-{
- Array.prototype.forEach.call(document.querySelectorAll('.pixel-zoom-container .scaled-image-container'), draw);
-}
-
-function handleMouseOut(e)
-{
- if (e.relatedTarget && e.relatedTarget.tagName != 'IFRAME')
- return;
-
- // If e.relatedTarget is null, we've moused out of the document.
- $('pixel-zoom-container').detach();
-}
-
-function handleMouseMove(e)
-{
- if (pixelzoomer._mouseMoveTimeout)
- clearTimeout(pixelzoomer._mouseMoveTimeout);
-
- if (parentOfType(e.target, '.pixel-zoom-container'))
- return;
-
- var container = document.querySelector('.pixel-zoom-container');
-
- var resultContainer = (e.target.className == 'result-container') ?
- e.target : parentOfType(e.target, '.result-container');
- if (!resultContainer || !resultContainer.querySelector('img')) {
- $(container).detach();
- return;
- }
-
- var targetLocation = e.target.getBoundingClientRect();
- pixelzoomer._percentX = (e.clientX - targetLocation.left) / targetLocation.width;
- pixelzoomer._percentY = (e.clientY - targetLocation.top) / targetLocation.height;
-
- if (!container) {
- if (pixelzoomer.showOnDelay) {
- pixelzoomer._mouseMoveTimeout = setTimeout(function() {
- createContainer(e);
- }, kDelayTimeoutMS);
- return;
- }
-
- createContainer(e);
- return;
- }
-
- drawAll();
-}
-
-pixelzoomer.showOnDelay = true;
-
-pixelzoomer.installEventListeners = function()
-{
- document.addEventListener('mousemove', handleMouseMove, false);
- document.addEventListener('mouseout', handleMouseOut, false);
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js
deleted file mode 100644
index 2dd55a838..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js
+++ /dev/null
@@ -1,679 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var results = results || {};
-
-(function() {
-
-var kResultsName = 'full_results.json';
-
-var kBuildLinkRegexp = /a href="\d+\/"/g;
-var kBuildNumberRegexp = /\d+/;
-
-var PASS = 'PASS';
-var TIMEOUT = 'TIMEOUT';
-var TEXT = 'TEXT';
-var CRASH = 'CRASH';
-var IMAGE = 'IMAGE';
-var IMAGE_TEXT = 'IMAGE+TEXT';
-var AUDIO = 'AUDIO';
-var MISSING = 'MISSING';
-
-var kFailingResults = [TEXT, IMAGE_TEXT, AUDIO];
-
-var kExpectedImageSuffix = '-expected.png';
-var kActualImageSuffix = '-actual.png';
-var kImageDiffSuffix = '-diff.png';
-var kExpectedAudioSuffix = '-expected.wav';
-var kActualAudioSuffix = '-actual.wav';
-var kExpectedTextSuffix = '-expected.txt';
-var kActualTextSuffix = '-actual.txt';
-var kDiffTextSuffix = '-diff.txt';
-var kCrashLogSuffix = '-crash-log.txt';
-
-var kPNGExtension = 'png';
-var kTXTExtension = 'txt';
-var kWAVExtension = 'wav';
-
-var kPreferredSuffixOrder = [
- kExpectedImageSuffix,
- kActualImageSuffix,
- kImageDiffSuffix,
- kExpectedTextSuffix,
- kActualTextSuffix,
- kDiffTextSuffix,
- kCrashLogSuffix,
- kExpectedAudioSuffix,
- kActualAudioSuffix,
- // FIXME: Add support for the rest of the result types.
-];
-
-// Kinds of results.
-results.kActualKind = 'actual';
-results.kExpectedKind = 'expected';
-results.kDiffKind = 'diff';
-results.kUnknownKind = 'unknown';
-
-// Types of tests.
-results.kImageType = 'image'
-results.kAudioType = 'audio'
-results.kTextType = 'text'
-// FIXME: There are more types of tests.
-
-function layoutTestResultsURL(platform)
-{
- return config.kPlatforms[platform].layoutTestResultsURL;
-}
-
-function possibleSuffixListFor(failureTypeList)
-{
- var suffixList = [];
-
- function pushImageSuffixes()
- {
- suffixList.push(kExpectedImageSuffix);
- suffixList.push(kActualImageSuffix);
- suffixList.push(kImageDiffSuffix);
- }
-
- function pushAudioSuffixes()
- {
- suffixList.push(kExpectedAudioSuffix);
- suffixList.push(kActualAudioSuffix);
- }
-
- function pushTextSuffixes()
- {
- suffixList.push(kActualTextSuffix);
- suffixList.push(kExpectedTextSuffix);
- suffixList.push(kDiffTextSuffix);
- // '-wdiff.html',
- // '-pretty-diff.html',
- }
-
- $.each(failureTypeList, function(index, failureType) {
- switch(failureType) {
- case IMAGE:
- pushImageSuffixes();
- break;
- case TEXT:
- pushTextSuffixes();
- break;
- case AUDIO:
- pushAudioSuffixes();
- break;
- case IMAGE_TEXT:
- pushImageSuffixes();
- pushTextSuffixes();
- break;
- case CRASH:
- suffixList.push(kCrashLogSuffix);
- break;
- case MISSING:
- pushImageSuffixes();
- pushTextSuffixes();
- break;
- default:
- // FIXME: Add support for the rest of the result types.
- // '-expected.html',
- // '-expected-mismatch.html',
- // ... and possibly more.
- break;
- }
- });
-
- return base.uniquifyArray(suffixList);
-}
-
-results.failureTypeToExtensionList = function(failureType)
-{
- switch(failureType) {
- case IMAGE:
- return [kPNGExtension];
- case AUDIO:
- return [kWAVExtension];
- case TEXT:
- return [kTXTExtension];
- case MISSING:
- case IMAGE_TEXT:
- return [kTXTExtension, kPNGExtension];
- default:
- // FIXME: Add support for the rest of the result types.
- // '-expected.html',
- // '-expected-mismatch.html',
- // ... and possibly more.
- return [];
- }
-};
-
-results.failureTypeList = function(failureBlob)
-{
- return failureBlob.split(' ');
-};
-
-results.canRebaseline = function(failureTypeList)
-{
- return failureTypeList.some(function(element) {
- return results.failureTypeToExtensionList(element).length > 0;
- });
-};
-
-results.directoryForBuilder = function(builderName)
-{
- return config.kPlatforms[config.currentPlatform].resultsDirectoryNameFromBuilderName(builderName);
-}
-
-function resultsDirectoryURL(platform, builderName)
-{
- if (config.useLocalResults)
- return '/localresult?path=';
- return resultsDirectoryListingURL(platform, builderName) + 'results/layout-test-results/';
-}
-
-function resultsDirectoryListingURL(platform, builderName)
-{
- return layoutTestResultsURL(platform) + '/' + results.directoryForBuilder(builderName) + '/';
-}
-
-function resultsDirectoryURLForBuildNumber(platform, builderName, buildNumber, revision)
-{
- return resultsDirectoryListingURL(platform, builderName) + config.kPlatforms[platform].resultsDirectoryForBuildNumber(buildNumber, revision) + '/';
-}
-
-function resultsSummaryURL(platform, builderName)
-{
- return resultsDirectoryURL(platform, builderName) + kResultsName;
-}
-
-function resultsSummaryURLForBuildNumber(platform, builderName, buildNumber, revision)
-{
- return resultsDirectoryURLForBuildNumber(platform, builderName, buildNumber, revision) + kResultsName;
-}
-
-var g_resultsCache = new base.AsynchronousCache(function (key, callback) {
- net.jsonp(key, callback);
-});
-
-results.ResultAnalyzer = base.extends(Object, {
- init: function(resultNode)
- {
- this._actual = resultNode ? results.failureTypeList(resultNode.actual) : [];
- this._expected = resultNode ? this._addImpliedExpectations(results.failureTypeList(resultNode.expected)) : [];
- this._wontfix = resultNode ? resultNode.wontfix : false;
- },
- _addImpliedExpectations: function(resultsList)
- {
- if (resultsList.indexOf('FAIL') == -1)
- return resultsList;
- return resultsList.concat(kFailingResults);
- },
- _hasPass: function(results)
- {
- return results.indexOf(PASS) != -1;
- },
- unexpectedResults: function()
- {
- return this._actual.filter(function(result) {
- return this._expected.indexOf(result) == -1;
- }, this);
- },
- succeeded: function()
- {
- return this._hasPass(this._actual);
- },
- expectedToSucceed: function()
- {
- return this._hasPass(this._expected);
- },
- flaky: function()
- {
- return this._actual.length > 1;
- },
- wontfix: function()
- {
- return this._wontfix;
- },
- hasUnexpectedFailures: function()
- {
- var difference = {};
- this._actual.forEach(function(actual) {
- difference[actual] = actual !== PASS;
- });
- this._expected.forEach(function(expected) {
- if (expected !== PASS)
- delete difference[expected];
- });
- return Object.keys(difference).some(function(key) {
- return difference[key];
- });
- }
-})
-
-function isExpectedFailure(resultNode)
-{
- var analyzer = new results.ResultAnalyzer(resultNode);
- return !analyzer.hasUnexpectedFailures() && !analyzer.succeeded() && !analyzer.flaky() && !analyzer.wontfix();
-}
-
-function isUnexpectedFailure(resultNode)
-{
- var analyzer = new results.ResultAnalyzer(resultNode);
- return analyzer.hasUnexpectedFailures() && !analyzer.succeeded() && !analyzer.flaky() && !analyzer.wontfix();
-}
-
-function isResultNode(node)
-{
- return !!node.actual;
-}
-
-results.expectedFailures = function(resultsTree)
-{
- return base.filterTree(resultsTree.tests, isResultNode, isExpectedFailure);
-};
-
-results.unexpectedFailures = function(resultsTree)
-{
- return base.filterTree(resultsTree.tests, isResultNode, isUnexpectedFailure);
-};
-
-results.unexpectedSuccesses = function(resultsTree)
-{
- return base.filterTree(resultsTree.tests, isResultNode, function(resultNode) {
- var analyzer = new results.ResultAnalyzer(resultNode);
- return !analyzer.expectedToSucceed() && analyzer.succeeded() && !analyzer.flaky();
- });
-};
-
-function resultsByTest(resultsByBuilder, filter)
-{
- var resultsByTest = {};
-
- $.each(resultsByBuilder, function(builderName, resultsTree) {
- $.each(filter(resultsTree), function(testName, resultNode) {
- resultsByTest[testName] = resultsByTest[testName] || {};
- if (!config.kPlatforms[config.currentPlatform].haveBuilderAccumulatedResults)
- resultNode._buildLocation = resultsTree._buildLocation;
- resultsByTest[testName][builderName] = resultNode;
- });
- });
-
- return resultsByTest;
-}
-
-results.expectedFailuresByTest = function(resultsByBuilder)
-{
- return resultsByTest(resultsByBuilder, results.expectedFailures);
-};
-
-results.unexpectedFailuresByTest = function(resultsByBuilder)
-{
- return resultsByTest(resultsByBuilder, results.unexpectedFailures);
-};
-
-results.unexpectedSuccessesByTest = function(resultsByBuilder)
-{
- return resultsByTest(resultsByBuilder, results.unexpectedSuccesses);
-};
-
-results.failureInfoForTestAndBuilder = function(resultsByTest, testName, builderName)
-{
- var failureInfoForTest = {
- 'testName': testName,
- 'builderName': builderName,
- 'failureTypeList': results.failureTypeList(resultsByTest[testName][builderName].actual),
- };
-
- if (!config.kPlatforms[config.currentPlatform].haveBuilderAccumulatedResults)
- failureInfoForTest.buildLocation = resultsByTest[testName][builderName]._buildLocation;
-
- return failureInfoForTest;
-};
-
-results.collectUnexpectedResults = function(dictionaryOfResultNodes)
-{
- var collectedResults = [];
- $.each(dictionaryOfResultNodes, function(key, resultNode) {
- var analyzer = new results.ResultAnalyzer(resultNode);
- collectedResults = collectedResults.concat(analyzer.unexpectedResults());
- });
- return base.uniquifyArray(collectedResults);
-};
-
-// Callback data is [{ buildNumber:, revision:, url: }]
-function historicalResultsLocations(platform, builderName, callback)
-{
- if (config.kPlatforms[platform].useDirectoryListingForOldBuilds) {
- var listingURL = resultsDirectoryListingURL(platform, builderName);
- net.get(listingURL, function(directoryListing) {
- var historicalResultsData = directoryListing.match(kBuildLinkRegexp).map(function(buildLink) {
- var buildNumber = parseInt(buildLink.match(kBuildNumberRegexp)[0]);
- var revision = 0; // unused for Chromium.
- var resultsData = {
- 'buildNumber': buildNumber,
- 'revision': revision,
- 'url': resultsSummaryURLForBuildNumber(platform, builderName, buildNumber, revision)
- };
- return resultsData;
- }).reverse();
-
- callback(historicalResultsData);
- });
- } else {
- var historicalResultsData = [];
- builders.cachedBuildInfos(platform, builderName, function(cachedBuildInfos) {
- $.each(cachedBuildInfos, function(buildNumber, buildInfo) {
- var resultsData = {
- 'buildNumber': buildNumber,
- 'revision': buildInfo.sourceStamp.revision,
- 'url': resultsSummaryURLForBuildNumber(platform, builderName, buildNumber, buildInfo.sourceStamp.revision),
- }
- historicalResultsData.push(resultsData);
- });
-
- callback(historicalResultsData.reverse());
- });
- }
-}
-
-function walkHistory(platform, builderName, testName, callback)
-{
- var indexOfNextKeyToFetch = 0;
- var keyList = [];
-
- function continueWalk()
- {
- if (indexOfNextKeyToFetch >= keyList.length) {
- processResultNode(0, null);
- return;
- }
-
- var resultsURL = keyList[indexOfNextKeyToFetch].url;
- ++indexOfNextKeyToFetch;
- g_resultsCache.get(resultsURL, function(resultsTree) {
- if ($.isEmptyObject(resultsTree)) {
- continueWalk();
- return;
- }
- var resultNode = results.resultNodeForTest(resultsTree, testName);
- var revision = parseInt(resultsTree['revision'])
- if (isNaN(revision))
- revision = 0;
- processResultNode(revision, resultNode);
- });
- }
-
- function processResultNode(revision, resultNode)
- {
- var shouldContinue = callback(revision, resultNode);
- if (!shouldContinue)
- return;
- continueWalk();
- }
-
- historicalResultsLocations(platform, builderName, function(resultsLocations) {
- keyList = resultsLocations;
- continueWalk();
- });
-}
-
-results.regressionRangeForFailure = function(builderName, testName, callback)
-{
- var oldestFailingRevision = 0;
- var newestPassingRevision = 0;
-
- // FIXME: should treat {platform, builderName} as a tuple
- walkHistory(config.currentPlatform, builderName, testName, function(revision, resultNode) {
- if (!revision) {
- callback(oldestFailingRevision, newestPassingRevision);
- return false;
- }
- if (!resultNode) {
- newestPassingRevision = revision;
- callback(oldestFailingRevision, newestPassingRevision);
- return false;
- }
- if (isUnexpectedFailure(resultNode)) {
- oldestFailingRevision = revision;
- return true;
- }
- if (!oldestFailingRevision)
- return true; // We need to keep looking for a failing revision.
- newestPassingRevision = revision;
- callback(oldestFailingRevision, newestPassingRevision);
- return false;
- });
-};
-
-function mergeRegressionRanges(regressionRanges)
-{
- var mergedRange = {};
-
- mergedRange.oldestFailingRevision = 0;
- mergedRange.newestPassingRevision = 0;
-
- $.each(regressionRanges, function(builderName, range) {
- if (!range.oldestFailingRevision && !range.newestPassingRevision)
- return
-
- if (!mergedRange.oldestFailingRevision)
- mergedRange.oldestFailingRevision = range.oldestFailingRevision;
- if (!mergedRange.newestPassingRevision)
- mergedRange.newestPassingRevision = range.newestPassingRevision;
-
- if (range.oldestFailingRevision && range.oldestFailingRevision < mergedRange.oldestFailingRevision)
- mergedRange.oldestFailingRevision = range.oldestFailingRevision;
- if (range.newestPassingRevision > mergedRange.newestPassingRevision)
- mergedRange.newestPassingRevision = range.newestPassingRevision;
- });
-
- return mergedRange;
-}
-
-results.unifyRegressionRanges = function(builderNameList, testName, callback)
-{
- var regressionRanges = {};
-
- var tracker = new base.RequestTracker(builderNameList.length, function() {
- var mergedRange = mergeRegressionRanges(regressionRanges);
- callback(mergedRange.oldestFailingRevision, mergedRange.newestPassingRevision);
- });
-
- $.each(builderNameList, function(index, builderName) {
- results.regressionRangeForFailure(builderName, testName, function(oldestFailingRevision, newestPassingRevision) {
- var range = {};
- range.oldestFailingRevision = oldestFailingRevision;
- range.newestPassingRevision = newestPassingRevision;
- regressionRanges[builderName] = range;
- tracker.requestComplete();
- });
- });
-};
-
-results.countFailureOccurences = function(builderNameList, testName, callback)
-{
- var failureCount = 0;
-
- var tracker = new base.RequestTracker(builderNameList.length, function() {
- callback(failureCount);
- });
-
- $.each(builderNameList, function(index, builderName) {
- walkHistory(config.currentPlatform, builderName, testName, function(revision, resultNode) {
- if (isUnexpectedFailure(resultNode)) {
- ++failureCount;
- return true;
- }
- tracker.requestComplete();
- return false;
- });
- });
-};
-
-results.resultNodeForTest = function(resultsTree, testName)
-{
- var testNamePath = testName.split('/');
- var currentNode = resultsTree['tests'];
- $.each(testNamePath, function(index, segmentName) {
- if (!currentNode)
- return;
- currentNode = (segmentName in currentNode) ? currentNode[segmentName] : null;
- });
- return currentNode;
-};
-
-results.resultKind = function(url)
-{
- if (/-actual\.[a-z]+$/.test(url))
- return results.kActualKind;
- else if (/-expected\.[a-z]+$/.test(url))
- return results.kExpectedKind;
- else if (/diff\.[a-z]+$/.test(url))
- return results.kDiffKind;
- return results.kUnknownKind;
-}
-
-results.resultType = function(url)
-{
- if (/\.png$/.test(url))
- return results.kImageType;
- if (/\.wav$/.test(url))
- return results.kAudioType;
- return results.kTextType;
-}
-
-function sortResultURLsBySuffix(urls)
-{
- var sortedURLs = [];
- $.each(kPreferredSuffixOrder, function(i, suffix) {
- $.each(urls, function(j, url) {
- if (!base.endsWith(url, suffix))
- return;
- sortedURLs.push(url);
- });
- });
- if (sortedURLs.length != urls.length)
- throw "sortResultURLsBySuffix failed to return the same number of URLs."
- return sortedURLs;
-}
-
-results.fetchResultsURLs = function(failureInfo, callback)
-{
- var testNameStem = base.trimExtension(failureInfo.testName);
- var urlStem;
-
- if (config.kPlatforms[config.currentPlatform].haveBuilderAccumulatedResults)
- urlStem = resultsDirectoryURL(config.currentPlatform, failureInfo.builderName);
- else
- urlStem = failureInfo.buildLocation.url.replace(kResultsName, '');
-
- var suffixList = possibleSuffixListFor(failureInfo.failureTypeList);
- var resultURLs = [];
- var tracker = new base.RequestTracker(suffixList.length, function() {
- callback(sortResultURLsBySuffix(resultURLs));
- });
- $.each(suffixList, function(index, suffix) {
- var url = urlStem + testNameStem + suffix;
- net.probe(url, {
- success: function() {
- resultURLs.push(url);
- tracker.requestComplete();
- },
- error: function() {
- tracker.requestComplete();
- },
- });
- });
-};
-
-results.fetchResultsForBuilder = function(builderName, callback)
-{
- var resultsURL = resultsSummaryURL(config.currentPlatform, builderName);
- net.jsonp(resultsURL, callback);
-};
-
-results.fetchResultsForBuildOnBuilder = function(builderName, buildNumber, revision, callback)
-{
- var resultsURL = resultsSummaryURLForBuildNumber(config.currentPlatform, builderName, buildNumber, revision);
- net.jsonp(resultsURL, callback);
-};
-
-// Look for the most recent completed build that has full results.
-results.fetchResultsForMostRecentCompletedBuildOnBuilder = function(builderName, callback)
-{
- historicalResultsLocations(config.currentPlatform, builderName, function(buildLocations) {
- var currentIndex = 0;
- var resultsCallback = function(buildResults) {
- if ($.isEmptyObject(buildResults)) {
- ++currentIndex;
- if (currentIndex >= buildLocations.length) {
- callback(null);
- return;
- }
-
- net.jsonp(buildLocations[currentIndex].url, resultsCallback);
- return;
- }
- if (!config.kPlatforms[config.currentPlatform].haveBuilderAccumulatedResults)
- buildResults._buildLocation = buildLocations[currentIndex];
- callback(buildResults);
- };
- net.jsonp(buildLocations[currentIndex].url, resultsCallback);
- });
-};
-
-results.fetchResultsByBuilder = function(builderNameList, callback)
-{
- var resultsByBuilder = {};
- if (config.kPlatforms[config.currentPlatform].haveBuilderAccumulatedResults) {
- var tracker = new base.RequestTracker(builderNameList.length, function() {
- callback(resultsByBuilder);
- });
- $.each(builderNameList, function(index, builderName) {
- results.fetchResultsForBuilder(builderName, function(resultsTree) {
- resultsByBuilder[builderName] = resultsTree;
- tracker.requestComplete();
- });
- });
- } else {
- builders.recentBuildInfos(function(recentBuildInfos) {
- var requestsInFlight = 0;
- $.each(builderNameList, function(index, builderName) {
- if (recentBuildInfos[builderName]) {
- // FIXME: use RequestTracker
- ++requestsInFlight;
- results.fetchResultsForMostRecentCompletedBuildOnBuilder(builderName, function(resultsTree) {
- if (resultsTree)
- resultsByBuilder[builderName] = resultsTree;
- --requestsInFlight;
- if (!requestsInFlight)
- callback(resultsByBuilder);
- });
- }
- });
- });
- }
-};
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js
deleted file mode 100644
index e15e73982..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js
+++ /dev/null
@@ -1,608 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var unittest = unittest || {};
-
-(function () {
-
-module("results");
-
-unittest.kExampleResultsJSON = {
- "tests": {
- "scrollbars": {
- "custom-scrollbar-with-incomplete-style.html": {
- "expected": "IMAGE",
- "actual": "IMAGE"
- },
- "expected-wontfix": {
- "expected": "IMAGE",
- "actual": "IMAGE",
- "wontfix": true
- },
- "unexpected-wontfix": {
- "expected": "IMAGE",
- "actual": "TEXT",
- "wontfix": true
- },
- "flaky-scrollbar.html": {
- "expected": "PASS",
- "actual": "PASS TEXT"
- },
- "unexpected-failing-flaky-scrollbar.html": {
- "expected": "TEXT",
- "actual": "TIMEOUT TEXT"
- },
- "unexpected-pass.html": {
- "expected": "FAIL",
- "actual": "PASS"
- }
- },
- "userscripts": {
- "user-script-video-document.html": {
- "expected": "FAIL",
- "actual": "TEXT"
- },
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "skipped": 339,
- "num_regressions": 14,
- "interrupted": false,
- "layout_tests_dir": "\/mnt\/data\/b\/build\/slave\/Webkit_Linux\/build\/src\/third_party\/WebKit\/LayoutTests",
- "version": 3,
- "num_passes": 15566,
- "has_pretty_patch": false,
- "fixable": 1233,
- "num_flaky":1,
- "uses_expectations_file": true,
- "has_wdiff": true,
- "revision": "90430"
-};
-
-test("ResultAnalyzer", 55, function() {
- var analyzer;
-
- analyzer = new results.ResultAnalyzer({expected: 'PASS', actual: 'TEXT'});
- ok(analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['TEXT']);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'TEXT'});
- ok(analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['TEXT']);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'TEXT', actual: 'TEXT TIMEOUT'});
- ok(!analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['TIMEOUT']);
- ok(!analyzer.succeeded());
- ok(analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'PASS', actual: 'TEXT TIMEOUT'});
- ok(analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['TEXT', 'TIMEOUT']);
- ok(!analyzer.succeeded());
- ok(analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'PASS TIMEOUT'});
- ok(analyzer.expectedToSucceed());
- ok(!analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), []);
- ok(analyzer.succeeded());
- ok(analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'PASS TIMEOUT', actual: 'TIMEOUT PASS'});
- ok(analyzer.expectedToSucceed());
- ok(!analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), []);
- ok(analyzer.succeeded());
- ok(analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'TIMEOUT'});
- ok(!analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['TIMEOUT']);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'IMAGE'});
- ok(!analyzer.expectedToSucceed());
- ok(analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), ['IMAGE']);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'AUDIO'});
- ok(!analyzer.expectedToSucceed());
- ok(!analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), []);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'TEXT'});
- ok(!analyzer.expectedToSucceed());
- ok(!analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), []);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-
- analyzer = new results.ResultAnalyzer({expected: 'FAIL', actual: 'IMAGE+TEXT'});
- ok(!analyzer.expectedToSucceed());
- ok(!analyzer.hasUnexpectedFailures());
- deepEqual(analyzer.unexpectedResults(), []);
- ok(!analyzer.succeeded());
- ok(!analyzer.flaky());
-});
-
-test("expectedFailures", 1, function() {
- var expectedFailures = results.expectedFailures(unittest.kExampleResultsJSON);
- deepEqual(expectedFailures, {
- "scrollbars/custom-scrollbar-with-incomplete-style.html": {
- "expected": "IMAGE",
- "actual": "IMAGE"
- },
- "userscripts/user-script-video-document.html": {
- "expected": "FAIL",
- "actual": "TEXT"
- }
- });
-});
-
-test("unexpectedFailures", 1, function() {
- var unexpectedFailures = results.unexpectedFailures(unittest.kExampleResultsJSON);
- deepEqual(unexpectedFailures, {
- "userscripts/another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- });
-});
-
-test("unexpectedFailuresByTest", 1, function() {
- var unexpectedFailuresByTest = results.unexpectedFailuresByTest({
- "Mock Builder": unittest.kExampleResultsJSON
- });
- deepEqual(unexpectedFailuresByTest, {
- "userscripts/another-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- }
- });
-});
-
-test("unexpectedSuccessesByTest", 1, function() {
- var unexpectedFailuresByTest = results.unexpectedSuccessesByTest({
- "Mock Builder": unittest.kExampleResultsJSON
- });
- deepEqual(unexpectedFailuresByTest, {
- "scrollbars/unexpected-pass.html": {
- "Mock Builder": {
- "expected": "FAIL",
- "actual": "PASS"
- }
- }
- });
-});
-
-test("failureInfoForTestAndBuilder", 1, function() {
- var unexpectedFailuresByTest = results.unexpectedFailuresByTest({
- "Mock Builder": unittest.kExampleResultsJSON
- });
- var failureInfo = results.failureInfoForTestAndBuilder(unexpectedFailuresByTest, "userscripts/another-test.html", "Mock Builder");
- deepEqual(failureInfo, {
- "testName": "userscripts/another-test.html",
- "builderName": "Mock Builder",
- "failureTypeList": ["TEXT"],
- });
-});
-
-test("resultKind", 12, function() {
- equals(results.resultKind("http://example.com/foo-actual.txt"), "actual");
- equals(results.resultKind("http://example.com/foo-expected.txt"), "expected");
- equals(results.resultKind("http://example.com/foo-diff.txt"), "diff");
- equals(results.resultKind("http://example.com/foo.bar-actual.txt"), "actual");
- equals(results.resultKind("http://example.com/foo.bar-expected.txt"), "expected");
- equals(results.resultKind("http://example.com/foo.bar-diff.txt"), "diff");
- equals(results.resultKind("http://example.com/foo-actual.png"), "actual");
- equals(results.resultKind("http://example.com/foo-expected.png"), "expected");
- equals(results.resultKind("http://example.com/foo-diff.png"), "diff");
- equals(results.resultKind("http://example.com/foo-pretty-diff.html"), "diff");
- equals(results.resultKind("http://example.com/foo-wdiff.html"), "diff");
- equals(results.resultKind("http://example.com/foo-xyz.html"), "unknown");
-});
-
-test("resultType", 12, function() {
- equals(results.resultType("http://example.com/foo-actual.txt"), "text");
- equals(results.resultType("http://example.com/foo-expected.txt"), "text");
- equals(results.resultType("http://example.com/foo-diff.txt"), "text");
- equals(results.resultType("http://example.com/foo.bar-actual.txt"), "text");
- equals(results.resultType("http://example.com/foo.bar-expected.txt"), "text");
- equals(results.resultType("http://example.com/foo.bar-diff.txt"), "text");
- equals(results.resultType("http://example.com/foo-actual.png"), "image");
- equals(results.resultType("http://example.com/foo-expected.png"), "image");
- equals(results.resultType("http://example.com/foo-diff.png"), "image");
- equals(results.resultType("http://example.com/foo-pretty-diff.html"), "text");
- equals(results.resultType("http://example.com/foo-wdiff.html"), "text");
- equals(results.resultType("http://example.com/foo.xyz"), "text");
-});
-
-test("resultNodeForTest", 4, function() {
- deepEqual(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscripts/another-test.html"), {
- "expected": "PASS",
- "actual": "TEXT"
- });
- equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "foo.html"), null);
- equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscripts/foo.html"), null);
- equals(results.resultNodeForTest(unittest.kExampleResultsJSON, "userscripts/foo/bar.html"), null);
-});
-
-test("walkHistory", 6, function() {
- var simulator = new NetworkSimulator();
-
- var keyMap = {
- "Mock_Builder": {
- "11108": {
- "tests": {
- "userscripts": {
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "revision": "90430"
- },
- "11107":{
- "tests": {
- "userscripts": {
- "user-script-video-document.html": {
- "expected": "FAIL",
- "actual": "TEXT"
- },
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "revision": "90429"
- },
- "11106":{
- "tests": {
- "userscripts": {
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "revision": "90426"
- },
- "11105":{
- "tests": {
- "userscripts": {
- "user-script-video-document.html": {
- "expected": "FAIL",
- "actual": "TEXT"
- },
- },
- },
- "revision": "90424"
- },
- },
- "Another_Builder": {
- "22202":{
- "tests": {
- "userscripts": {
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "revision": "90426"
- },
- "22201":{
- "tests": {
- },
- "revision": "90425"
- },
- },
- };
-
- simulator.jsonp = function(url, callback) {
- simulator.scheduleCallback(function() {
- var result = keyMap[/[^/]+_Builder/.exec(url)][/\d+/.exec(url)];
- callback(result ? result : {});
- });
- };
-
- simulator.get = function(url, callback) {
- simulator.scheduleCallback(function() {
- if (/Mock_Builder/.test(url))
- callback('<a href="11101/"></a><a href="11102/"></a><a href="11103/"></a><a href="11104/"></a><a href="11105/"></a><a href="11106/"></a><a href="11107/"></a><a href="11108/"></a>');
- else if (/Another_Builder/.test(url))
- callback('<a href="22201/"></a><a href="22202/"></a>');
- else
- ok(false, 'Unexpected URL: ' + url);
- });
- };
-
- simulator.runTest(function() {
- results.regressionRangeForFailure("Mock Builder", "userscripts/another-test.html", function(oldestFailingRevision, newestPassingRevision) {
- equals(oldestFailingRevision, 90426);
- equals(newestPassingRevision, 90424);
- });
-
- results.unifyRegressionRanges(["Mock Builder", "Another Builder"], "userscripts/another-test.html", function(oldestFailingRevision, newestPassingRevision) {
- equals(oldestFailingRevision, 90426);
- equals(newestPassingRevision, 90425);
- });
-
- results.countFailureOccurences(["Mock Builder", "Another Builder"], "userscripts/another-test.html", function(failureCount) {
- equals(failureCount, 4);
- });
- });
-});
-
-test("walkHistory (no revision)", 3, function() {
- var simulator = new NetworkSimulator();
-
- var keyMap = {
- "Mock_Builder": {
- "11103": {
- "tests": {
- "userscripts": {
- "another-test.html": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- },
- },
- "revision": ""
- },
- "11102":{
- "tests": {
- },
- "revision": ""
- },
- },
- };
-
- simulator.jsonp = function(url, callback) {
- simulator.scheduleCallback(function() {
- var result = keyMap[/[^/]+_Builder/.exec(url)][/\d+/.exec(url)];
- callback(result ? result : {});
- });
- };
-
- simulator.get = function(url, callback) {
- simulator.scheduleCallback(function() {
- callback('<a href="11101/"></a><a href="11102/"></a><a href="11103/"></a>');
- });
- };
-
-
- simulator.runTest(function() {
- results.regressionRangeForFailure("Mock Builder", "userscripts/another-test.html", function(oldestFailingRevision, newestPassingRevision) {
- equals(oldestFailingRevision, 0);
- equals(newestPassingRevision, 0);
- });
- });
-});
-
-test("collectUnexpectedResults", 1, function() {
- var dictionaryOfResultNodes = {
- "foo": {
- "expected": "IMAGE",
- "actual": "IMAGE"
- },
- "bar": {
- "expected": "PASS",
- "actual": "PASS TEXT"
- },
- "baz": {
- "expected": "TEXT",
- "actual": "IMAGE"
- },
- "qux": {
- "expected": "PASS",
- "actual": "TEXT"
- },
- "taco": {
- "expected": "PASS",
- "actual": "TEXT"
- },
- };
-
- var collectedResults = results.collectUnexpectedResults(dictionaryOfResultNodes);
- deepEqual(collectedResults, ["TEXT", "IMAGE"]);
-});
-
-test("failureTypeToExtensionList", 5, function() {
- deepEqual(results.failureTypeToExtensionList('TEXT'), ['txt']);
- deepEqual(results.failureTypeToExtensionList('IMAGE+TEXT'), ['txt', 'png']);
- deepEqual(results.failureTypeToExtensionList('IMAGE'), ['png']);
- deepEqual(results.failureTypeToExtensionList('CRASH'), []);
- deepEqual(results.failureTypeToExtensionList('TIMEOUT'), []);
-});
-
-test("canRebaseline", 6, function() {
- ok(results.canRebaseline(['TEXT']));
- ok(results.canRebaseline(['IMAGE+TEXT', 'CRASH']));
- ok(results.canRebaseline(['IMAGE']));
- ok(!results.canRebaseline(['CRASH']));
- ok(!results.canRebaseline(['TIMEOUT']));
- ok(!results.canRebaseline([]));
-});
-
-test("fetchResultsURLs", 5, function() {
- var simulator = new NetworkSimulator();
-
- var probedURLs = [];
- simulator.probe = function(url, options)
- {
- simulator.scheduleCallback(function() {
- probedURLs.push(url);
- if (base.endsWith(url, '.txt'))
- options.success.call();
- else if (/taco.+png$/.test(url))
- options.success.call();
- else
- options.error.call();
- });
- };
-
- simulator.runTest(function() {
- results.fetchResultsURLs({
- 'builderName': "Mock Builder",
- 'testName': "userscripts/another-test.html",
- 'failureTypeList': ['IMAGE', 'CRASH'],
- }, function(resultURLs) {
- deepEqual(resultURLs, [
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt"
- ]);
- });
- results.fetchResultsURLs({
- 'builderName': "Mock Builder",
- 'testName': "userscripts/another-test.html",
- 'failureTypeList': ['TIMEOUT'],
- }, function(resultURLs) {
- deepEqual(resultURLs, []);
- });
- results.fetchResultsURLs({
- 'builderName': "Mock Builder",
- 'testName': "userscripts/taco.html",
- 'failureTypeList': ['IMAGE', 'IMAGE+TEXT'],
- }, function(resultURLs) {
- deepEqual(resultURLs, [
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-expected.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-actual.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-diff.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-expected.txt",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-actual.txt",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-diff.txt",
- ]);
- });
- });
-
- deepEqual(probedURLs, [
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-expected.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-actual.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-diff.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/another-test-crash-log.txt",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-expected.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-actual.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-diff.png",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-actual.txt",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-expected.txt",
- "http://build.chromium.org/f/chromium/layout_test_results/Mock_Builder/results/layout-test-results/userscripts/taco-diff.txt",
- ]);
-});
-
-test("fetchResultsByBuilder", 5, function() {
- var simulator = new NetworkSimulator();
-
- var probedURLs = [];
- simulator.jsonp = function(url, callback)
- {
- simulator.scheduleCallback(function() {
- probedURLs.push(url);
- if (base.endsWith(url, 'MockBuilder2/r1%20(1)/full_results.json'))
- callback({'MockBuildResults': true});
- else
- callback({});
- });
- };
-
- config.currentPlatform = 'gtk';
-
- var oldCachedBuildInfos = builders.cachedBuildInfos;
- builders.cachedBuildInfos = function(platform, builderName, callback) {
- callback(
- {
- 1: {
- sourceStamp: {
- revision: 1
- }
- },
- 2: {
- sourceStamp: {
- revision: 2
- }
- }
-
- });
- };
-
- var oldRecentBuildInfos = builders.recentBuildInfos;
- builders.recentBuildInfos = function(callback) {
- callback({
- 'MockBuilder1': true,
- 'MockBuilder2': true
- });
- };
-
- simulator.runTest(function() {
- results.fetchResultsByBuilder(['MockBuilder1', 'MockBuilder2'], function(resultsByBuilder) {
- deepEqual(resultsByBuilder, {
- "MockBuilder2": {
- "MockBuildResults": true,
- "_buildLocation": {
- "buildNumber": "1",
- "revision": 1,
- "url": "http://build.webkit.org/results/MockBuilder2/r1%20(1)/full_results.json"
- }
- }
- });
- });
- });
-
- deepEqual(probedURLs, [
- "http://build.webkit.org/results/MockBuilder1/r2%20(2)/full_results.json",
- "http://build.webkit.org/results/MockBuilder2/r2%20(2)/full_results.json",
- "http://build.webkit.org/results/MockBuilder1/r1%20(1)/full_results.json",
- "http://build.webkit.org/results/MockBuilder2/r1%20(1)/full_results.json"
- ]);
-
- builders.cachedBuildInfos = oldCachedBuildInfos;
- equal(builders.cachedBuildInfos, oldCachedBuildInfos, "Failed to restore real base!");
-
- builders.recentBuildInfos = oldRecentBuildInfos;
- equal(builders.recentBuildInfos, oldRecentBuildInfos, "Failed to restore real base!");
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js
deleted file mode 100644
index eb3c2a2a1..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function() {
-
-function minutesAgo(minutes)
-{
- var time = new Date();
- time.setMinutes(time.getMinutes() - minutes);
- return time;
-}
-
-function Cycler(items, repeat)
-{
- this._index = 0;
- this._repeat = repeat || 1;
- this._repeated = 0;
- this._items = items;
-}
-
-Cycler.prototype = {
- _updateRepeat: function()
- {
- if (++this._repeated >= this._repeat) {
- this._repeated = this._repeat;
- return false;
- }
- return true;
- },
- _updateIndex: function()
- {
- if (this._updateRepeat())
- return;
- if (++this._index >= this._items.length)
- this._index = 0;
- },
- cycle: function()
- {
- var result = this._items[this._index];
- this._updateIndex();
- return result;
- }
-}
-
-var people = new Cycler([
- 'Eustace Bagge',
- 'Dick Dastardly',
- 'Major Glory',
- 'Barney Rubble',
- 'Bunny Bravo',
- 'Race Bannon',
-]);
-
-var bugTitles = new Cycler([
- 'Unreviewed. Chromium rebaselines for r93794. * ...',
- 'Fix build when GCC 4.2 is not installed. * ... ',
- '[Qt] Unreviewed gardening. * platform/qt/Skipped: Skip new tests until ...',
- 'garden-o-matic needs a way to report where and how tests are failing in ... ',
- 'REGRESSION(r90971): Fix an assertion failure with textarea placeholder. ...',
- 'Incorrect layout of :before and :after content, with display table, ...',
- ' JSHTMLImageElement (and associated Node) is abandoned when image load is ... '
-]);
-
-var testNames = new Cycler([
- 'fast/ruby/text-emphasis.html',
- 'plugins/destroy-during-npp-new.html',
- 'tables/mozilla/bugs/bug60749.html',
- 'tables/mozilla/bugs/bug51727.html',
- 'tables/mozilla/bugs/bug33855.html',
- 'tables/mozilla/bugs/bug52506.htm',
- 'tables/mozilla/bugs/bug18359.html',
- 'tables/mozilla/bugs/bug46368-1.html',
- 'tables/mozilla/bugs/bug46368-2.html',
- 'tables/mozilla/bugs/bug52505.html'
-]);
-
-var builders = new Cycler(Object.keys(config.currentBuilders()), 3);
-
-var expectations = new Cycler([
- 'TEXT',
- 'IMAGE+TEXT',
- 'TIMEOUT',
- 'CRASH'
-], 4);
-
-function createResultNodesByBuilder(builderFailureCount)
-{
- var result = {};
- for(var i = 0; i < builderFailureCount; ++i)
- result[builders.cycle()] = { actual: expectations.cycle() };
- return result;
-}
-
-var currentRevision = 66666;
-var currentMinutesAgo = 0;
-
-function createFailingTestsSummary(commitDataCount, failureAnalysisCount, builderFailureCount)
-{
- var failingTestsSummary = new ui.notifications.FailingTestsSummary();
- for (var i = 0; i < commitDataCount; ++i)
- failingTestsSummary.addCommitData({
- time: minutesAgo(currentMinutesAgo++),
- revision: currentRevision++,
- summary: bugTitles.cycle(),
- author: people.cycle(),
- reviewer: people.cycle()
- });
- for (var i = 0; i < failureAnalysisCount; ++i)
- failingTestsSummary.addFailureAnalysis({
- testName: testNames.cycle(),
- resultNodesByBuilder: createResultNodesByBuilder(builderFailureCount)
- });
- return failingTestsSummary;
-}
-
-function createBuildersFailing(failingBuilderCount)
-{
- var buildersFailing = new ui.notifications.BuildersFailing();
- builderNameList = [];
- for (var i = 0; i < failingBuilderCount; ++i)
- builderNameList.push(builders.cycle());
- buildersFailing.setFailingBuilders(builderNameList);
- return buildersFailing
-}
-
-$(document).ready(function() {
-
- var actions = new ui.notifications.Stream();
- document.body.insertBefore(actions, document.body.firstChild);
-
- // FIXME: This should be an Action object.
- var button = document.body.insertBefore(document.createElement('button'), document.body.firstChild);
- button.textContent = 'update';
-
- actions.add(createFailingTestsSummary(3, 4, 1));
- actions.add(createFailingTestsSummary(3, 1, 3));
- actions.add(createFailingTestsSummary(1, 20, 1));
- actions.add(createBuildersFailing(1));
- actions.add(createBuildersFailing(8));
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/trac_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/trac_unittests.js
deleted file mode 100644
index 89a20252e..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/trac_unittests.js
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("trac");
-
-var kExampleCommitDataXML =
- '<?xml version="1.0"?>\n\n' +
- '<rss xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">\n\n' +
- ' \n\n' +
- '\n\n' +
- ' <channel>\n\n' +
- ' <title>Revisions of /trunk</title>\n\n' +
- ' <link>http://trac.webkit.org/log/trunk?rev=92362</link>\n\n' +
- ' <description>Trac Log - Revisions of /trunk</description>\n\n' +
- ' <language>en-US</language>\n\n' +
- ' <generator>Trac 0.11.7</generator>\n\n' +
- ' <image>\n\n' +
- ' <title>WebKit</title>\n\n' +
- ' <url>http://trac.webkit.org/chrome/site/icon.png</url>\n\n' +
- ' <link>http://trac.webkit.org/log/trunk?rev=92362</link>\n\n' +
- ' </image>\n\n' +
- ' <item>\n\n' +
- ' <author>macpherson@chromium.org</author>\n\n' +
- ' <pubDate>Thu, 04 Aug 2011 02:09:19 GMT</pubDate>\n\n' +
- ' <title>Revision 92342: Support cast between CSSPrimitiveValue and EBoxSizing, use in ...</title>\n\n' +
- ' <link>http://trac.webkit.org/changeset/92342/trunk</link>\n\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92342/trunk</guid>\n\n' +
- ' <description>&lt;p&gt;\n\n' +
- 'Support cast between CSSPrimitiveValue and EBoxSizing, use in CSSStyleSelector.\n\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=65657"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=65657&lt;/a&gt;\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- 'Reviewed by Simon Fraser.\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- 'No new tests / refactoring only.\n\n' +
- '&lt;/p&gt;\n\n' +
- '&lt;p&gt;\n\n' +
- '* css/CSSPrimitiveValueMappings.h:\n\n' +
- '(WebCore::CSSPrimitiveValue::CSSPrimitiveValue):\n\n' +
- 'Implement cast from EBoxSizing.\n' +
- '(WebCore::CSSPrimitiveValue::operator EBoxSizing):\n' +
- 'Implement cast to EBoxSizing.\n' +
- '* css/CSSStyleSelector.cpp:\n' +
- '(WebCore::CSSStyleSelector::applyProperty):\n' +
- 'Use appropriate macro to simplify code using cast.\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item><item>\n' +
- ' <author>commit-queue@webkit.org</author>\n' +
- ' <pubDate>Thu, 04 Aug 2011 02:01:31 GMT</pubDate>\n' +
- ' <title>Revision 92341: Implement EventSender.scalePageBy() ...</title>\n' +
- ' <link>http://trac.webkit.org/changeset/92341/trunk</link>\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92341/trunk</guid>\n' +
- ' <description>&lt;p&gt;\n' +
- 'Implement EventSender.scalePageBy()\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=58013"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=58013&lt;/a&gt;\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Patch by Kentaro Hara &amp;lt;&lt;a class="mail-link" href="mailto:haraken@google.com"&gt;&lt;span class="icon"&gt; &lt;/span&gt;haraken@google.com&lt;/a&gt;&amp;gt; on 2011-08-03\n' +
- 'Reviewed by Darin Fisher.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Implemented EventSender.scalePageBy(f, x, y), which scales a page by a factor of f\n' +
- 'and then sets a scroll position to (x, y). Enabled the tests that had been waiting\n' +
- 'for the implementation of EventSender.scalePageBy(f, x, y).\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Source/WebKit/chromium:\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Tests: compositing/scaling/tiled-layer-recursion.html\n' +
- '&lt;/p&gt;\n' +
- '&lt;blockquote&gt;\n' +
- '&lt;p&gt;\n' +
- 'fast/repaint/scale-page-shrink.html\n' +
- 'fast/dom/Element/scale-page-client-rects.html\n' +
- 'fast/dom/Range/scale-page-client-rects.html\n' +
- 'fast/events/scroll-in-scaled-page-with-overflow-hidden.html\n' +
- 'fast/dom/Element/scale-page-bounding-client-rect.html\n' +
- 'fast/dom/Range/scale-page-bounding-client-rect.html\n' +
- '&lt;/p&gt;\n' +
- '&lt;/blockquote&gt;\n' +
- '&lt;p&gt;\n' +
- '* public/WebView.h:\n' +
- '* src/WebViewImpl.cpp:\n' +
- '(WebKit::WebViewImpl::scalePage): A wrapper method for scalePage() in WebCore.\n' +
- '* src/WebViewImpl.h:\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Tools:\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Tests: compositing/scaling/tiled-layer-recursion.html\n' +
- '&lt;/p&gt;\n' +
- '&lt;blockquote&gt;\n' +
- '&lt;p&gt;\n' +
- 'fast/repaint/scale-page-shrink.html\n' +
- 'fast/dom/Element/scale-page-client-rects.html\n' +
- 'fast/dom/Range/scale-page-client-rects.html\n' +
- 'fast/events/scroll-in-scaled-page-with-overflow-hidden.html\n' +
- 'fast/dom/Element/scale-page-bounding-client-rect.html\n' +
- 'fast/dom/Range/scale-page-bounding-client-rect.html\n' +
- '&lt;/p&gt;\n' +
- '&lt;/blockquote&gt;\n' +
- '&lt;p&gt;\n' +
- '* DumpRenderTree/chromium/EventSender.cpp:\n' +
- '(EventSender::EventSender): Added bindings for scalePageBy().\n' +
- '(EventSender::scalePageBy): A wrapper method for scalePage() in WebView.\n' +
- '* DumpRenderTree/chromium/EventSender.h:\n' +
- '* DumpRenderTree/chromium/TestShell.cpp:\n' +
- '(TestShell::resetTestController): Resets the scale factor to 1.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'LayoutTests:\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- '* platform/chromium-linux/compositing/scaling/tiled-layer-recursion-expected.png: Added.\n' +
- '* platform/chromium-linux/fast/repaint/scale-page-shrink-expected.png: Added.\n' +
- '* platform/chromium-linux/fast/repaint/scale-page-shrink-expected.txt: Added.\n' +
- '* platform/chromium-mac/fast/dom/Element/scale-page-bounding-client-rect-expected.txt: Removed.\n' +
- '* platform/chromium-mac/fast/dom/Range/scale-page-bounding-client-rect-expected.txt: Removed.\n' +
- '* platform/chromium-win/fast/dom/Element/scale-page-bounding-client-rect-expected.txt: Removed.\n' +
- '* platform/chromium-win/fast/dom/Element/scale-page-client-rects-expected.txt: Removed.\n' +
- '* platform/chromium-win/fast/dom/Range/scale-page-bounding-client-rect-expected.txt: Removed.\n' +
- '* platform/chromium-win/fast/dom/Range/scale-page-client-rects-expected.txt: Removed.\n' +
- '* platform/chromium/test_expectations.txt: Enabled one test. Enabled two tests for chromium-linux.\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item><item>\n' +
- ' <author>rniwa@webkit.org</author>\n' +
- ' <pubDate>Thu, 04 Aug 2011 01:41:29 GMT</pubDate>\n' +
- ' <title>Revision 92338: Revert an erroneous rebaseline from r92315.\n' +
- '* ...</title>\n' +
- ' <link>http://trac.webkit.org/changeset/92338/trunk</link>\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92338/trunk</guid>\n' +
- ' <description>&lt;p&gt;\n' +
- 'Revert an erroneous rebaseline from &lt;a class="changeset" href="http://trac.webkit.org/changeset/92315" title="Remove LegacyDefaultOptionalArguments flag from navigator IDL files ..."&gt;r92315&lt;/a&gt;.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- '* fast/dom/navigator-detached-no-crash-expected.txt:\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item><item>\n' +
- ' <author>noam.rosenthal@nokia.com</author>\n' +
- ' <pubDate>Thu, 04 Aug 2011 00:22:21 GMT</pubDate>\n' +
- ' <title>Revision 92337: [Qt][Texmap][REGRESSION] http://webkit.org/blog-files/transform-style.html ...</title>\n' +
- ' <link>http://trac.webkit.org/changeset/92337/trunk</link>\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92337/trunk</guid>\n' +
- ' <description>&lt;p&gt;\n' +
- '[Qt][Texmap][REGRESSION] &lt;a class="ext-link" href="http://webkit.org/blog-files/transform-style.html"&gt;&lt;span class="icon"&gt; &lt;/span&gt;http://webkit.org/blog-files/transform-style.html&lt;/a&gt; doesn\'t show composited content\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=65629"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=65629&lt;/a&gt;\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Reviewed by Benjamin Poulain.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Some non-ES2 initialization was wrongfully #ifdefed in CPU(X86) and thus compiled-out.\n' +
- 'When put it in the correct #ifdef, composited layers which require an intermediate buffer\n' +
- 'work again.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'No new tests. Existing opacity tests in LayoutTests/compositing test this.\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- '* platform/graphics/opengl/TextureMapperGL.cpp:\n' +
- '(WebCore::BitmapTextureGL::bind):\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item><item>\n' +
- ' <author>commit-queue@webkit.org</author>\n' +
- ' <pubDate>Wed, 03 Aug 2011 04:26:52 GMT</pubDate>\n' +
- ' <title>Revision 92259: Unreviewed, rolling out r92256.\n' +
- 'http://trac.webkit.org/changeset/92256 ...</title>\n' +
- ' <link>http://trac.webkit.org/changeset/92259/trunk</link>\n' +
- ' <guid isPermaLink="false">http://trac.webkit.org/changeset/92259/trunk</guid>\n' +
- ' <description>&lt;p&gt;\n' +
- 'Unreviewed, rolling out &lt;a class="changeset" href="http://trac.webkit.org/changeset/92256" title="Make EventDispatchMediator RefCounted. ..."&gt;r92256&lt;/a&gt;.\n' +
- '&lt;a class="ext-link" href="http://trac.webkit.org/changeset/92256"&gt;&lt;span class="icon"&gt; &lt;/span&gt;http://trac.webkit.org/changeset/92256&lt;/a&gt;\n' +
- '&lt;a class="ext-link" href="https://bugs.webkit.org/show_bug.cgi?id=65593"&gt;&lt;span class="icon"&gt; &lt;/span&gt;https://bugs.webkit.org/show_bug.cgi?id=65593&lt;/a&gt;\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Causing tons of crashes on the chromium win bots (Requested by\n' +
- 'jamesr on #webkit).\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- 'Patch by Sheriff Bot &amp;lt;&lt;a class="mail-link" href="mailto:webkit.review.bot@gmail.com"&gt;&lt;span class="icon"&gt; &lt;/span&gt;webkit.review.bot@gmail.com&lt;/a&gt;&amp;gt; on 2011-08-02\n' +
- '&lt;/p&gt;\n' +
- '&lt;p&gt;\n' +
- '* dom/Event.cpp:\n' +
- '* dom/Event.h:\n' +
- '* dom/EventDispatcher.cpp:\n' +
- '(WebCore::EventDispatcher::dispatchEvent):\n' +
- '* dom/EventDispatcher.h:\n' +
- '* dom/KeyboardEvent.cpp:\n' +
- '* dom/KeyboardEvent.h:\n' +
- '* dom/MouseEvent.cpp:\n' +
- '* dom/MouseEvent.h:\n' +
- '* dom/Node.cpp:\n' +
- '(WebCore::Node::dispatchEvent):\n' +
- '(WebCore::Node::dispatchKeyEvent):\n' +
- '(WebCore::Node::dispatchMouseEvent):\n' +
- '(WebCore::Node::dispatchWheelEvent):\n' +
- '* dom/WheelEvent.cpp:\n' +
- '* dom/WheelEvent.h:\n' +
- '&lt;/p&gt;\n' +
- '</description>\n' +
- ' <category>Log</category>\n' +
- ' </item>\n' +
- ' </channel>\n' +
- '</rss>\n'
-
-var kExampleCommitDataList = [{
- "revision": 92342,
- "title": "Revision 92342: Support cast between CSSPrimitiveValue and EBoxSizing, use in ...",
- "time": "Thu, 04 Aug 2011 02:09:19 GMT",
- "summary": "Support cast between CSSPrimitiveValue and EBoxSizing, use in CSSStyleSelector.",
- "author": "macpherson@chromium.org",
- "reviewer": "Simon Fraser",
- "bugID": 65657,
- "revertedRevision": undefined
-}, {
- "revision": 92341,
- "title": "Revision 92341: Implement EventSender.scalePageBy() ...",
- "time": "Thu, 04 Aug 2011 02:01:31 GMT",
- "summary": "Implement EventSender.scalePageBy()",
- "author": "Kentaro Hara",
- "reviewer": "Darin Fisher",
- "bugID": 58013,
- "revertedRevision": undefined
-}, {
- "revision": 92338,
- "title": "Revision 92338: Revert an erroneous rebaseline from r92315.\n* ...",
- "time": "Thu, 04 Aug 2011 01:41:29 GMT",
- "summary": "Revert an erroneous rebaseline from r92315.",
- "author": "rniwa@webkit.org",
- "reviewer": null,
- "bugID": NaN,
- "revertedRevision": undefined
-}, {
- "revision": 92337,
- "title": "Revision 92337: [Qt][Texmap][REGRESSION] http://webkit.org/blog-files/transform-style.html ...",
- "time": "Thu, 04 Aug 2011 00:22:21 GMT",
- "summary": "[Qt][Texmap][REGRESSION] http://webkit.org/blog-files/transform-style.html doesn't show composited content",
- "author": "noam.rosenthal@nokia.com",
- "reviewer": "Benjamin Poulain",
- "bugID": 65629,
- "revertedRevision": undefined
-}, {
- "revision": 92259,
- "title": "Revision 92259: Unreviewed, rolling out r92256.\nhttp://trac.webkit.org/changeset/92256 ...",
- "time": "Wed, 03 Aug 2011 04:26:52 GMT",
- "summary": "Unreviewed, rolling out r92256.",
- "author": "Sheriff Bot",
- "reviewer": null,
- "bugID": 65593,
- "revertedRevision": 92256
-}];
-
-test("changesetURL", 1, function() {
- equals(trac.changesetURL(1234), "http://trac.webkit.org/changeset/1234");
-});
-
-test("logURL", 4, function() {
- equals(trac.logURL('trunk', 1234, 1236, false, false), "http://trac.webkit.org/log/trunk?rev=1236&stop_rev=1234&limit=4");
- equals(trac.logURL('trunk', 1234, 1234, true, false), "http://trac.webkit.org/log/trunk?rev=1234&stop_rev=1234&limit=2&verbose=on");
- equals(trac.logURL('trunk', 1236, 1236, false, true), "http://trac.webkit.org/log/trunk?rev=1236&stop_rev=1236&limit=2&format=rss");
- equals(trac.logURL('trunk', 1234, 1236, true, true), "http://trac.webkit.org/log/trunk?rev=1236&stop_rev=1234&limit=4&verbose=on&format=rss");
-});
-
-test("recentCommitData", 3, function() {
- var simulator = new NetworkSimulator();
- simulator.get = function(url, callback)
- {
- equals(url, 'http://trac.webkit.org/log/trunk?verbose=on&format=rss&limit=10');
- simulator.scheduleCallback(function() {
- var parser = new DOMParser();
- var responseDOM = parser.parseFromString(kExampleCommitDataXML, "application/xml");
- callback(responseDOM);
- });
- };
-
- simulator.runTest(function() {
- trac.recentCommitData('trunk', 10, function(commitDataList) {
- $.each(commitDataList, function(index, commitData) {
- // Including the entire message makes the deepEqual below to unwieldy.
- delete commitData.message;
- });
- deepEqual(commitDataList, kExampleCommitDataList);
- });
- });
-});
-
-test("commitDataForRevisionRange", 3, function() {
- var simulator = new NetworkSimulator();
- simulator.get = function(url, callback)
- {
- equals(url, 'http://trac.webkit.org/log/trunk?rev=12365&stop_rev=12345&limit=22&verbose=on&format=rss');
- simulator.scheduleCallback(function() {
- var parser = new DOMParser();
- var responseDOM = parser.parseFromString(kExampleCommitDataXML, "application/xml");
- callback(responseDOM);
- });
- };
-
- simulator.runTest(function() {
- trac.commitDataForRevisionRange('trunk', 12345, 12365, function(commitDataList) {
- $.each(commitDataList, function(index, commitData) {
- // Including the entire message makes the deepEqual below to unwieldy.
- delete commitData.message;
- });
- deepEqual(commitDataList, kExampleCommitDataList);
- });
- });
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js
deleted file mode 100644
index c74b82c3c..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-
-(function () {
-
-ui.displayURLForBuilder = function(builderName)
-{
- return config.kPlatforms[config.currentPlatform].waterfallURL + '?' + $.param({
- 'builder': builderName
- });
-}
-
-ui.displayNameForBuilder = function(builderName)
-{
- return builderName.replace(/Webkit /, '');
-}
-
-ui.urlForTest = function(testName)
-{
- return 'http://trac.webkit.org/browser/trunk/LayoutTests/' + testName;
-}
-
-ui.urlForFlakinessDashboard = function(opt_testNameList)
-{
- var testsParameter = opt_testNameList ? opt_testNameList.join(',') : '';
- return 'http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=' + encodeURIComponent(testsParameter);
-}
-
-ui.urlForEmbeddedFlakinessDashboard = function(opt_testNameList)
-{
- if (config.kPlatforms[config.currentPlatform].useFlakinessDashboard)
- return ui.urlForFlakinessDashboard(opt_testNameList) + '&showChrome=false';
-
- return 'about:blank';
-}
-
-ui.rolloutReasonForTestNameList = function(testNameList)
-{
- return 'Broke:\n' + testNameList.map(function(testName) {
- return '* ' + testName;
- }).join('\n');
-}
-
-ui.onebar = base.extends('div', {
- init: function()
- {
- this.id = 'onebar';
- this.innerHTML =
- '<div><select id="platform-picker"></select></div>' +
- '<ul>' +
- '<li><a href="#unexpected">Unexpected Failures</a></li>' +
- '<li><a href="#expected">Expected Failures</a></li>' +
- '<li><a href="#results">Results</a></li>' +
- '<li><a href="#perf">perf</a></li>' +
- '</ul>' +
- '<div id="unexpected"></div>' +
- '<div id="expected"></div>' +
- '<div id="results"></div>' +
- '<div id="perf"></div>';
- this._tabNames = [
- 'unexpected',
- 'expected',
- 'results',
- 'perf',
- ]
-
- this._tabIndexToSavedScrollOffset = {};
- this._tabs = $(this).tabs({
- disabled: [2],
- show: function(event, ui) { this._restoreScrollOffset(ui.index); },
- });
- },
- _buildPlatformsPopup: function() {
- // FIXME: find a better place to do this.
- var urlPlatform = base.getURLParameter('platform');
- if (urlPlatform)
- config.setPlatform(urlPlatform);
-
- var platformSelect = document.getElementById('platform-picker');
- var currentPlatformIndex = 0;
- Object.keys(config.kPlatforms).sort().forEach(function(platformName) {
- var option = document.createElement('option');
- option.innerText = config.kPlatforms[platformName].label;
- option._platform = platformName;
- if (platformName == config.currentPlatform)
- currentPlatformIndex = platformSelect.childNodes.length;
- platformSelect.appendChild(option);
- });
-
- platformSelect.addEventListener('change', function() {
- window.location.search = '?platform=' + platformSelect.options[platformSelect.selectedIndex]._platform;
- });
-
- platformSelect.selectedIndex = currentPlatformIndex;
- },
- _saveScrollOffset: function() {
- var tabIndex = this._tabs.tabs('option', 'selected');
- this._tabIndexToSavedScrollOffset[tabIndex] = document.body.scrollTop;
- },
- _restoreScrollOffset: function(tabIndex)
- {
- document.body.scrollTop = this._tabIndexToSavedScrollOffset[tabIndex] || 0;
- },
- _setupHistoryHandlers: function()
- {
- function currentHash() {
- var hash = window.location.hash;
- return (!hash || hash == '#') ? '#unexpected' : hash;
- }
-
- var self = this;
- $('.ui-tabs-nav a').bind('mouseup', function(event) {
- var href = event.target.getAttribute('href');
- var hash = currentHash();
- if (href != hash) {
- self._saveScrollOffset();
- window.location = href
- }
- });
-
- window.onhashchange = function(event) {
- var tabName = currentHash().substring(1);
- self._selectInternal(tabName);
- };
-
- // When navigating from the browser chrome, we'll
- // scroll to the #tabname contents. popstate fires before
- // we scroll, so we can save the scroll offset first.
- window.onpopstate = function() {
- self._saveScrollOffset();
- };
- },
- attach: function()
- {
- document.body.insertBefore(this, document.body.firstChild);
- this._setupHistoryHandlers();
- this._buildPlatformsPopup();
- },
- tabNamed: function(tabName)
- {
- if (this._tabNames.indexOf(tabName) == -1)
- return null;
- tab = document.getElementById(tabName);
- // We perform this sanity check below to make sure getElementById
- // hasn't given us a node in some other unrelated part of the document.
- // that shouldn't happen normally, but it could happen if an attacker
- // has somehow sneakily added a node to our document.
- if (tab.parentNode != this)
- return null;
- return tab;
- },
- unexpected: function()
- {
- return this.tabNamed('unexpected');
- },
- expected: function()
- {
- return this.tabNamed('expected');
- },
- results: function()
- {
- return this.tabNamed('results');
- },
- perf: function()
- {
- return this.tabNamed('perf');
- },
- _selectInternal: function(tabName) {
- var tabIndex = this._tabNames.indexOf(tabName);
- this._tabs.tabs('enable', tabIndex);
- this._tabs.tabs('select', tabIndex);
- },
- select: function(tabName)
- {
- this._saveScrollOffset();
- this._selectInternal(tabName);
- window.location = '#' + tabName;
- }
-});
-
-// FIXME: Loading a module shouldn't set off a timer. The controller should kick this off.
-setInterval(function() {
- Array.prototype.forEach.call(document.querySelectorAll("time.relative"), function(time) {
- time.update && time.update();
- });
-}, config.kRelativeTimeUpdateFrequency);
-
-ui.RelativeTime = base.extends('time', {
- init: function()
- {
- this.className = 'relative';
- },
- date: function()
- {
- return this._date;
- },
- update: function()
- {
- this.textContent = this._date ? base.relativizeTime(this._date) : '';
- },
- setDate: function(date)
- {
- this._date = date;
- this.update();
- }
-});
-
-ui.StatusArea = base.extends('div', {
- init: function()
- {
- // This is a Singleton.
- if (ui.StatusArea._instance)
- return ui.StatusArea._instance;
- ui.StatusArea._instance = this;
-
- this.className = 'status';
- document.body.appendChild(this);
- this._currentId = 0;
- this._unfinishedIds = {};
-
- this.appendChild(new ui.actions.List([new ui.actions.Close()]));
- $(this).bind('close', this.close.bind(this));
-
- var processing = document.createElement('progress');
- processing.className = 'process-text';
- processing.textContent = 'Processing...';
- this.appendChild(processing);
- },
- close: function()
- {
- this.style.visibility = 'hidden';
- Array.prototype.forEach.call(this.querySelectorAll('.status-content'), function(node) {
- node.parentNode.removeChild(node);
- });
- },
- addMessage: function(id, message)
- {
- this.style.visibility = 'visible';
- $(this).addClass('processing');
-
- var element = document.createElement('div');
- $(element).addClass('message').text(message);
-
- var content = this.querySelector('#' + id);
- if (!content) {
- content = document.createElement('div');
- content.id = id;
- content.className = 'status-content';
- this.appendChild(content);
- }
-
- content.appendChild(element);
- if (element.offsetTop < this.scrollTop || element.offsetTop + element.offsetHeight > this.scrollTop + this.offsetHeight)
- this.scrollTop = element.offsetTop;
- },
- // FIXME: It's unclear whether this code could live here or in a controller.
- addFinalMessage: function(id, message)
- {
- this.addMessage(id, message);
-
- delete this._unfinishedIds[id];
- if (!Object.keys(this._unfinishedIds).length)
- $(this).removeClass('processing');
- },
- newId: function() {
- var id = 'status-content-' + ++this._currentId;
- this._unfinishedIds[id] = 1;
- return id;
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js
deleted file mode 100644
index 6eb40410f..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-ui.actions = ui.actions || {};
-
-(function() {
-
-var Action = base.extends('button', {
- init: function() {
- this._eventName = null;
- $(this).addClass('action');
- this.addEventListener('click', function(event) {
- if (this._eventName) {
- $(this).trigger(this._eventName);
- event.stopPropagation();
- }
- }.bind(this));
- },
- makeDefault: function() {
- $(this).addClass('default');
- return this;
- }
-});
-
-ui.actions.Blame = base.extends(Action, {
- init: function() {
- this.textContent = 'Blame';
- this._eventName = 'blame';
- this.title = 'Blames this failure on this revision.'
- }
-});
-
-ui.actions.Close = base.extends(Action, {
- init: function() {
- this.textContent = 'Close';
- this._eventName = 'close';
- }
-});
-
-ui.actions.Rollout = base.extends(Action, {
- init: function() {
- this.textContent = 'Roll out';
- this._eventName = 'rollout';
- this.title = 'Rolls out this revision.'
- }
-});
-
-ui.actions.Examine = base.extends(Action, {
- init: function() {
- this.textContent = 'Examine';
- this._eventName = 'examine';
- this.title = 'Examine these failures in detail.'
- }
-});
-
-ui.actions.Rebaseline = base.extends(Action, {
- init: function() {
- this.textContent = 'Rebaseline';
- this._eventName = 'rebaseline';
- }
-});
-
-ui.actions.ExpectFailure = base.extends(Action, {
- init: function() {
- this.textContent = 'Expect Failure';
- this._eventName = 'expectfailure';
- }
-});
-
-ui.actions.Next = base.extends(Action, {
- init: function() {
- this.innerHTML = '&#9654;';
- this._eventName = 'next';
- $(this).addClass('next');
- }
-});
-
-ui.actions.Previous = base.extends(Action, {
- init: function() {
- this.innerHTML = '&#9664;';
- this._eventName = 'previous';
- $(this).addClass('previous');
- }
-});
-
-ui.actions.List = base.extends('ul', {
- init: function(actions) {
- this.className = 'actions';
- if (!actions)
- return;
- actions.forEach(this.add.bind(this));
- },
- add: function(action)
- {
- var item = document.createElement('li');
- item.appendChild(action);
- $(this).append(item);
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js
deleted file mode 100644
index a59a4ddad..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module('ui.actions');
-
-test('Buttons', 6, function() {
- var buttonInfos = [{
- view: new ui.actions.Rollout(),
- text: 'Roll out',
- event: 'rollout'
- }, {
- view: new ui.actions.Examine(),
- text: 'Examine',
- event: 'examine'
- }, {
- view: new ui.actions.Rebaseline(),
- text: 'Rebaseline',
- event: 'rebaseline'
- }];
- buttonInfos.forEach(function(buttonInfo) {
- equal(buttonInfo.view.textContent, buttonInfo.text);
- equal(buttonInfo.view._eventName, buttonInfo.event);
- });
-});
-
-test('click', 1, function() {
- var examine = new ui.actions.Examine();
- $(examine).bind('examine', function() {
- ok('Examine triggered.');
- });
- $(examine).trigger('click');
-});
-
-test('default', 2, function() {
- var next = new ui.actions.Next();
- equal(next.makeDefault(), next);
- equal(next.className, 'action next default');
-});
-
-test('List', 1, function() {
- var list = new ui.actions.List([
- new ui.actions.Rebaseline(),
- new ui.actions.Previous(),
- new ui.actions.Next()
- ]);
- equal(list.innerHTML,
- '<li><button class="action">Rebaseline</button></li>' +
- '<li><button class="action previous">\u25C0</button></li>' +
- '<li><button class="action next">\u25B6</button></li>');
-});
-
-}());
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js
deleted file mode 100644
index b4948b28c..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-ui.failures = ui.failures || {};
-
-(function(){
-
-var kBuildingResult = 'BUILDING';
-
-ui.failures.Builder = base.extends('a', {
- init: function(builderName, failures)
- {
- var platformBuilders = config.currentBuilders();
- var configuration = platformBuilders[builderName];
- if (configuration) {
- if (configuration.version)
- this._addSpan('version', configuration.version);
- if (configuration.is64bit)
- this._addSpan('architecture', '64-bit');
- this._configuration = configuration;
- } else
- this._addSpan('version', builderName);
-
- this.className = 'failing-builder';
- this.target = '_blank';
- this.href = ui.displayURLForBuilder(builderName);
- if (failures)
- this._addSpan('failures', ' ' + failures.join(', '));
- },
- _addSpan: function(className, text)
- {
- var span = this.appendChild(document.createElement('span'));
- span.className = className;
- span.textContent = text;
- },
- equals: function(configuration)
- {
- return this._configuration && this._configuration.is64bit == configuration.is64bit && this._configuration.version == configuration.version;
- }
-});
-
-function cellContainsConfiguration(cell, configuration)
-{
- return Array.prototype.some.call(cell.children, function(configurationElement) {
- return configurationElement.equals && configurationElement.equals(configuration);
- });
-}
-
-function cellByBuildType(row, configuration)
-{
- return row.cells[configuration.debug ? 2 : 1];
-}
-
-ui.failures.FailureGrid = base.extends('table', {
- init: function()
- {
- this.className = 'failures';
- var titles = this.createTHead().insertRow();
- titles.insertCell().textContent = 'debug';
- titles.insertCell().textContent = 'release';
- titles.insertCell().textContent = 'type';
- this._body = this.appendChild(document.createElement('tbody'));
- this._reset();
- },
- _rowByResult: function(result)
- {
- var row = this._resultRows[result];
- $(row).show();
- if (row)
- return row;
-
- row = this._resultRows[result] = this._body.insertRow(0);
- row.className = result;
- row.insertCell();
- row.insertCell();
- var titleCell = row.insertCell();
- titleCell.appendChild(document.createElement('span')).textContent = result;
- return row;
- },
- update: function(resultsByBuilder)
- {
- if (this._pendingReset)
- this._reset();
-
- if (!resultsByBuilder)
- return;
-
- Object.keys(resultsByBuilder).forEach(function(builderName) {
- var configuration = config.kPlatforms[config.currentPlatform].builders[builderName];
- if (!configuration)
- throw "Unknown builder name: " + builderName;
- var row = this._rowByResult(resultsByBuilder[builderName].actual);
- var cell = cellByBuildType(row, configuration);
- if (cellContainsConfiguration(cell, configuration))
- return;
- cell.appendChild(new ui.failures.Builder(builderName));
- }, this);
- },
- purge: function()
- {
- this._pendingReset = true;
- },
- _reset: function()
- {
- this._pendingReset = false;
- this._resultRows = {};
- $(this._body).empty();
- // Add the BUILDING row eagerly so that it appears last.
- this._rowByResult(kBuildingResult);
- $(this._resultRows[kBuildingResult]).hide();
- }
-});
-
-ui.failures.ListItem = base.extends('li', {
- init: function(groupName, failingTestsList)
- {
- this._failingTestsList = failingTestsList;
- this.appendChild(new ui.actions.List([
- new ui.actions.Examine().makeDefault(),
- ]));
- var label = this.appendChild(document.createElement('label'))
- label.textContent = failingTestsList.length == 1 ? failingTestsList[0] : groupName;
- },
-});
-
-ui.failures.List = base.extends('ul', {
- init: function()
- {
- this.className = 'failures';
- this.textContent = 'Loading...';
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js
deleted file mode 100644
index 0d14c28a5..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module('ui.failures');
-
-test('Builder', 6, function() {
- var configuration;
- configuration = new ui.failures.Builder("Webkit Linux", ["update", "webkit_tests"]);
- deepEqual(Object.getOwnPropertyNames(configuration.__proto__).sort(), [
- '_addSpan',
- 'equals',
- 'init',
- ]);
- equal(configuration.outerHTML, '<a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux"><span class="version">lucid</span><span class="architecture">64-bit</span><span class="failures"> update, webkit_tests</span></a>');
- configuration = new ui.failures.Builder("Webkit Win");
- equal(configuration.outerHTML, '<a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Win"><span class="version">xp</span></a>');
- configuration._addSpan('foo', 'bar');
- equal(configuration.outerHTML, '<a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Win"><span class="version">xp</span><span class="foo">bar</span></a>');
- ok(configuration.equals({version: 'xp'}));
- ok(!configuration.equals({version: 'lucid', is64bit: true}));
-});
-
-test('FailureGrid', 10, function() {
- var grid = new ui.failures.FailureGrid();
- deepEqual(Object.getOwnPropertyNames(grid.__proto__).sort(), [
- "_reset",
- "_rowByResult",
- "init",
- "purge",
- "update"
- ]);
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>');
- var row = grid._rowByResult('TEXT');
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT">' +
- '<td><span>TEXT</span></td><td></td><td></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
- equal(row.outerHTML, '<tr class="TEXT"><td><span>TEXT</span></td><td></td><td></td></tr>');
- grid.update({});
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT">' +
- '<td><span>TEXT</span></td><td></td><td></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
- raises(function() {
- grid.update({'Atari': {}})
- });
- grid.update({'Webkit Linux (dbg)': { actual: 'TEXT'}});
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT" style="">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
- grid.update({'Webkit Mac10.6': { actual: 'IMAGE+TEXT'}});
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="IMAGE+TEXT">' +
- '<td><span>IMAGE+TEXT</span></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Mac10.6"><span class="version">snowleopard</span></a></td>' +
- '<td></td>' +
- '</tr>' +
- '<tr class="TEXT" style="">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
- grid.update({'Webkit Mac10.6': { actual: 'IMAGE+TEXT'}});
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="IMAGE+TEXT" style="">' +
- '<td><span>IMAGE+TEXT</span></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Mac10.6"><span class="version">snowleopard</span></a></td>' +
- '<td></td>' +
- '</tr>' +
- '<tr class="TEXT" style="">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
- grid.purge();
- grid.update({'Webkit Linux (dbg)': { actual: 'TEXT'}});
- equal(grid.outerHTML, '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>');
-});
-
-}());
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js
deleted file mode 100644
index 77d2cea28..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-ui.notifications = ui.notifications || {};
-
-(function(){
-
-var kMaxTestsPerGroup = 3;
-
-ui.notifications.Stream = base.extends('ol', {
- init: function()
- {
- this.className = 'notifications';
- },
- add: function(notification)
- {
- var insertBefore = null;
- Array.prototype.some.call(this.children, function(existingNotification) {
- if (existingNotification.index() < notification.index()) {
- insertBefore = existingNotification;
- return true;
- }
- });
- this.insertBefore(notification, insertBefore);
- return notification;
- }
-});
-
-ui.notifications.Notification = base.extends('li', {
- init: function()
- {
- this._how = this.appendChild(document.createElement('div'));
- this._how.className = 'how';
- this._what = this.appendChild(document.createElement('div'));
- this._what.className = 'what';
- this._index = 0;
- $(this).hide().fadeIn('fast');
- },
- index: function()
- {
- return this._index;
- },
- setIndex: function(index)
- {
- this._index = index;
- },
- dismiss: function()
- {
- // FIXME: These fade in/out effects are lame.
- $(this).fadeOut(function()
- {
- this.parentNode && this.parentNode.removeChild(this);
- });
- },
-});
-
-ui.notifications.Info = base.extends(ui.notifications.Notification, {
- init: function(message)
- {
- this.update(message);
- },
- update: function(message)
- {
- this._what.textContent = message;
- },
- updateWithNode: function(node)
- {
- $(this._what).empty();
- this._what.appendChild(node);
- }
-});
-
-ui.notifications.FailingTestGroup = base.extends('li', {
- init: function(groupName, testNameList)
- {
- this.appendChild(base.createLinkNode(ui.urlForFlakinessDashboard(testNameList), groupName, '_blank'));
- }
-});
-
-var Cause = base.extends('li', {
- init: function()
- {
- this._description = this.appendChild(document.createElement('div'));
- this._description.className = 'description';
- }
-});
-
-ui.notifications.SuspiciousCommit = base.extends(Cause, {
- init: function(commitData)
- {
- this._revision = commitData.revision;
- this._description.appendChild(base.createLinkNode(trac.changesetURL(commitData.revision), commitData.revision, '_blank'));
- this._details = this._description.appendChild(document.createElement('span'));
- this._addDetail('summary', commitData);
- this._addDetail('author', commitData);
- this._addDetail('reviewer', commitData);
- this._addDetail('bugID', commitData, bugzilla.bugURL);
- },
- hasRevision: function(revision)
- {
- return this._revision == revision;
- },
- _addDetail: function(part, commitData, linkFunction)
- {
- var content = commitData[part];
- if (!content)
- return;
-
- var span = this._details.appendChild(document.createElement('span'));
- span.className = part;
-
- if (linkFunction) {
- var link = base.createLinkNode(linkFunction(content), content, '_blank');
- span.appendChild(link);
- } else
- span.textContent = content;
- }
-});
-
-ui.notifications.Failure = base.extends(ui.notifications.Notification, {
- init: function()
- {
- this._time = this._how.appendChild(new ui.RelativeTime());
- this._problem = this._what.appendChild(document.createElement('div'));
- this._problem.className = 'problem';
- this._effects = this._problem.appendChild(document.createElement('ul'));
- this._effects.className = 'effects';
- this._causes = this._what.appendChild(document.createElement('ul'));
- this._causes.className = 'causes';
- },
- date: function()
- {
- return this._time.date;
- }
-});
-
-ui.notifications.FailingTests = base.extends(ui.notifications.Failure, {
- init: function() {
- // FIXME: Convert actions to a link from test!
- this._problem.appendChild(new ui.actions.List([
- new ui.actions.Examine().makeDefault(),
- new ui.actions.Rebaseline(),
- ]));
- this._testNameList = [];
- },
- testNameList: function()
- {
- return this._testNameList;
- },
- containsFailureAnalysis: function(failureAnalysis)
- {
- return this._testNameList.indexOf(failureAnalysis.testName) != -1;
- },
- addFailureAnalysis: function(failureAnalysis)
- {
- if (this.containsFailureAnalysis(failureAnalysis))
- return false;
- this._testNameList.push(failureAnalysis.testName);
- $(this._effects).empty();
- this._forEachTestGroup(function(groupName, testNameList) {
- this._effects.appendChild(new ui.notifications.FailingTestGroup(groupName, testNameList))
- }.bind(this));
- return true;
- },
- _forEachTestGroup: function(callback)
- {
- var individualTests = [];
- base.forEachDirectory(this._testNameList, function(groupLabel, testsInDirectory) {
- if (testsInDirectory.length <= kMaxTestsPerGroup) {
- individualTests = individualTests.concat(testsInDirectory);
- return;
- }
- callback(groupLabel, testsInDirectory);
- });
- individualTests.forEach(function(testName) {
- callback(testName, [testName]);
- });
- }
-});
-
-ui.notifications.FailingTestsSummary = base.extends(ui.notifications.FailingTests, {
- init: function() {
- this._where = this._how.appendChild(new ui.failures.FailureGrid());
- this._commitDataPinned = false;
- },
- purge: function() {
- this._where.purge();
- },
- updateBuilderResults: function(resultNodesByBuilder)
- {
- this._where.update(resultNodesByBuilder);
- },
- addFailureAnalysis: function(failureAnalysis)
- {
- this.updateBuilderResults(failureAnalysis.resultNodesByBuilder);
- if (!ui.notifications.FailingTests.prototype.addFailureAnalysis.call(this, failureAnalysis))
- return false;
- },
- pinToCommitData: function(commitData)
- {
- if (this._commitDataPinned)
- return;
- this._commitDataPinned = true;
- $(this._causes).children().each(function() {
- if (this.hasRevision(commitData.revision))
- return;
- $(this).detach();
- });
- },
- addCommitData: function(commitData)
- {
- if (this._commitDataPinned)
- return null;
- var commitDataDate = new Date(commitData.time);
- if (this._time.date > commitDataDate); {
- this.setIndex(commitDataDate.getTime());
- this._time.setDate(commitDataDate);
- }
- return this._causes.appendChild(new ui.notifications.SuspiciousCommit(commitData));
- }
-});
-
-ui.notifications.BuildersFailing = base.extends(ui.notifications.Failure, {
- init: function(message)
- {
- this._problem.insertBefore(document.createTextNode(message + ':'), this._problem.firstChild);
- },
- setFailingBuilders: function(failuresList)
- {
- $(this._effects).empty().append(Object.keys(failuresList).map(function(builderName) {
- var effect = document.createElement('li');
- effect.className = 'builder';
- effect.appendChild(new ui.failures.Builder(builderName, failuresList[builderName]));
- return effect;
- }));
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js
deleted file mode 100644
index 43f5e295a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js
+++ /dev/null
@@ -1,337 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module('ui.notifications');
-
-test('Notification', 5, function() {
- var notification = new ui.notifications.Notification();
- equal(notification.tagName, 'LI');
- equal(notification.innerHTML, '<div class="how"></div><div class="what"></div>');
- equal(notification.index(), 0);
- notification.setIndex(1);
- equal(notification.index(), 1);
- // FIXME: Really need to figure out how to mock/test animated removal.
- ok(notification.dismiss);
-});
-
-test('Stream', 11, function() {
- var stream = new ui.notifications.Stream();
- equal(stream.tagName, 'OL');
- equal(stream.className, 'notifications');
- equal(stream.childElementCount, 0);
-
- var notification;
-
- notification = new ui.notifications.Info('-o-matic');
- notification.setIndex(2);
- stream.add(notification);
- equal(stream.childElementCount, 1);
- equal(stream.textContent, '-o-matic');
-
- notification = new ui.notifications.Info('garden');
- notification.setIndex(3);
- stream.add(notification);
- equal(stream.childElementCount, 2);
- equal(stream.textContent, 'garden-o-matic');
-
- notification = new ui.notifications.Info(' is ');
- notification.setIndex(1);
- stream.add(notification);
- equal(stream.childElementCount, 3);
- equal(stream.textContent, 'garden-o-matic is ');
-
- notification = new ui.notifications.Info('awesome!');
- stream.add(notification);
- equal(stream.childElementCount, 4);
- equal(stream.textContent, 'garden-o-matic is awesome!');
-});
-
-test('Info', 2, function() {
- var info = new ui.notifications.Info('info');
- equal(info.tagName, 'LI');
- equal(info.innerHTML, '<div class="how"></div><div class="what">info</div>');
-});
-
-test('FailingTestGroup', 2, function() {
- var failingTest = new ui.notifications.FailingTestGroup('test', ['test.html']);
- equal(failingTest.tagName, 'LI');
- equal(failingTest.innerHTML, '<a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test.html" target="_blank">test</a>');
-});
-
-test('SuspiciousCommit', 2, function() {
- var suspiciousCommit = new ui.notifications.SuspiciousCommit({revision: 1, summary: "summary", author: "author", reviewer: "reviewer"});
- equal(suspiciousCommit.tagName, 'LI');
- equal(suspiciousCommit.innerHTML,
- '<div class="description">' +
- '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
- '<span>' +
- '<span class="summary">summary</span>' +
- '<span class="author">author</span>' +
- '<span class="reviewer">reviewer</span>' +
- '</span>' +
- '</div>');
-});
-
-test('FailingTestsSummary', 12, function() {
- var testFailures = new ui.notifications.FailingTestsSummary();
- equal(testFailures.tagName, 'LI');
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative"></time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects"></ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>');
- testFailures.addFailureAnalysis({testName: 'test', resultNodesByBuilder: {}});
- equal(testFailures.index(), 0);
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative"></time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>');
- ok(testFailures.containsFailureAnalysis({testName: 'test'}));
- ok(!testFailures.containsFailureAnalysis({testName: 'foo'}));
- testFailures.addFailureAnalysis({testName: 'test'});
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative"></time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>');
- deepEqual(testFailures.testNameList(), ['test']);
- var time = new Date();
- time.setMinutes(time.getMinutes() - 10);
- testFailures.addCommitData({revision: 1, time: time, summary: "summary", author: "author", reviewer: "reviewer"});
- equal(testFailures.index(), time.getTime());
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative">10 minutes ago</time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes">' +
- '<li>' +
- '<div class="description">' +
- '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
- '<span>' +
- '<span class="summary">summary</span>' +
- '<span class="author">author</span>' +
- '<span class="reviewer">reviewer</span>' +
- '</span>' +
- '</div>' +
- '</li>' +
- '</ul>' +
- '</div>');
-
- testFailures.addFailureAnalysis({testName: 'foo', resultNodesByBuilder: {'Webkit Linux (dbg)': { actual: 'TEXT'}}});
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative">10 minutes ago</time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr>' +
- '</tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=foo" target="_blank">foo</a></li>' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes">' +
- '<li>' +
- '<div class="description">' +
- '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
- '<span>' +
- '<span class="summary">summary</span>' +
- '<span class="author">author</span>' +
- '<span class="reviewer">reviewer</span>' +
- '</span>' +
- '</div>' +
- '</li>' +
- '</ul>' +
- '</div>');
-
- testFailures.updateBuilderResults({'Webkit Mac10.6': { actual: 'BUILDING'}});
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative">10 minutes ago</time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody>' +
- '<tr class="TEXT">' +
- '<td><span>TEXT</span></td>' +
- '<td></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux+(dbg)"><span class="version">lucid</span><span class="architecture">64-bit</span></a></td>' +
- '</tr>' +
- '<tr class="BUILDING" style="">' +
- '<td><span>BUILDING</span></td>' +
- '<td><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Mac10.6"><span class="version">snowleopard</span></a></td>' +
- '<td></td>' +
- '</tr>' +
- '</tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=foo" target="_blank">foo</a></li>' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=test" target="_blank">test</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes">' +
- '<li>' +
- '<div class="description">' +
- '<a href="http://trac.webkit.org/changeset/1" target="_blank">1</a>' +
- '<span>' +
- '<span class="summary">summary</span>' +
- '<span class="author">author</span>' +
- '<span class="reviewer">reviewer</span>' +
- '</span>' +
- '</div>' +
- '</li>' +
- '</ul>' +
- '</div>');
-});
-
-test('FailingTestsSummary (grouping)', 1, function() {
- var testFailures = new ui.notifications.FailingTestsSummary();
- testFailures.addFailureAnalysis({testName: 'path/to/test1.html', resultNodesByBuilder: {}});
- testFailures.addFailureAnalysis({testName: 'path/to/test2.html', resultNodesByBuilder: {}});
- testFailures.addFailureAnalysis({testName: 'path/to/test3.html', resultNodesByBuilder: {}});
- testFailures.addFailureAnalysis({testName: 'path/to/test4.html', resultNodesByBuilder: {}});
- testFailures.addFailureAnalysis({testName: 'path/another/test.html', resultNodesByBuilder: {}});
- equal(testFailures.innerHTML,
- '<div class="how">' +
- '<time class="relative"></time>' +
- '<table class="failures">' +
- '<thead><tr><td>type</td><td>release</td><td>debug</td></tr></thead>' +
- '<tbody><tr class="BUILDING" style="display: none; "><td><span>BUILDING</span></td><td></td><td></td></tr></tbody>' +
- '</table>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">' +
- '<ul class="effects">' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=path%2Fto%2Ftest1.html%2Cpath%2Fto%2Ftest2.html%2Cpath%2Fto%2Ftest3.html%2Cpath%2Fto%2Ftest4.html" target="_blank">path/to (4 tests)</a></li>' +
- '<li><a href="http://webkit-test-results.appspot.com/dashboards/flakiness_dashboard.html#tests=path%2Fanother%2Ftest.html" target="_blank">path/another/test.html</a></li>' +
- '</ul>' +
- '<ul class="actions">' +
- '<li><button class="action default" title="Examine these failures in detail.">Examine</button></li>' +
- '<li><button class="action">Rebaseline</button></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>');
-});
-
-test('BuildersFailing', 1, function() {
- var builderFailing = new ui.notifications.BuildersFailing('Disasterifying');
- builderFailing.setFailingBuilders({'Webkit Linux': ['compile'], 'Webkit Win7': ['webkit_tests', 'update']});
- equal(builderFailing.innerHTML,
- '<div class="how">' +
- '<time class="relative"></time>' +
- '</div>' +
- '<div class="what">' +
- '<div class="problem">Disasterifying:' +
- '<ul class="effects">' +
- '<li class="builder"><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Linux"><span class="version">lucid</span><span class="architecture">64-bit</span><span class="failures"> compile</span></a></li>' +
- '<li class="builder"><a class="failing-builder" target="_blank" href="http://build.chromium.org/p/chromium.webkit/waterfall?builder=Webkit+Win7"><span class="version">win7</span><span class="failures"> webkit_tests, update</span></a></li>' +
- '</ul>' +
- '</div>' +
- '<ul class="causes"></ul>' +
- '</div>');
-});
-
-}());
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js
deleted file mode 100644
index ab7a26baf..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-ui.perf = ui.perf || {};
-
-(function(){
-
-ui.perf.Picker = base.extends('select', {
- init: function(items, onChange, opt_values)
- {
- this.onchange = onChange;
- this._values = opt_values;
- items.forEach(this._appendItem.bind(this));
- },
- _appendItem: function(item, index)
- {
- var option = document.createElement('option');
- option.innerHTML = item;
- if (this._values)
- option.value = this._values[index];
- this.appendChild(option);
- }
-});
-
-ui.perf.View = base.extends('div', {
- init: function()
- {
- this.id = 'perf-view';
- builders.perfBuilders(this.loadGraphs.bind(this));
-
- var stream = new ui.notifications.Stream();
- var notifications = document.createElement()
- this._notification = ui.notifications.Info("Loading list of perf dashboards...");
- stream.appendChild(this._notification);
- this.appendChild(stream);
- },
- loadGraphs: function(graphData)
- {
- this._notification.dismiss();
-
- // FIXME: Add next/previous buttons for easy navigation through all the graphs.
- // FIXME: Also, show the list of failing perf builders along with which steps are failing.
- this._data = graphData;
-
- this._titleBar = document.createElement('div');
- this._titleBar.className = 'title-bar';
- this.appendChild(this._titleBar);
-
- var testSuites = Object.keys(graphData);
- var suitePicker = new ui.perf.Picker(testSuites, this._onChangeSuite.bind(this));
- this._titleBar.appendChild(suitePicker);
-
- this._titleBar.appendChild(new ui.actions.List([new ui.actions.Previous(), new ui.actions.Next()]));
-
- $(this).bind('next', this._nextGraph.bind(this));
- $(this).bind('previous', this._previousGraph.bind(this));
-
- this._suitePicker = suitePicker;
- this._onChangeSuite();
- },
- _onChangeSuite: function()
- {
- this._updateBuilderPicker();
- this._displayGraph();
- },
- _updateBuilderPicker: function()
- {
- if (this._builderPicker)
- this._titleBar.removeChild(this._builderPicker);
-
- if (!this._suitePicker.length)
- return;
- var selectedSuite = this._suitePicker[this._suitePicker.selectedIndex].text;
- var builders = [];
- var urls = [];
- this._data[selectedSuite].forEach(function(config) {
- builders.push(config.builder);
- urls.push(config.url);
- });
- this._builderPicker = new ui.perf.Picker(builders, this._displayGraph.bind(this), urls);
- this._titleBar.appendChild(this._builderPicker);
- },
- _displayGraph: function()
- {
- var popOutLink = this.querySelector('.pop-out');
- if (!popOutLink) {
- popOutLink = document.createElement('a');
- popOutLink.className = 'pop-out';
- popOutLink.textContent = 'Pop out';
- popOutLink.target = '_blank';
- this._titleBar.appendChild(popOutLink);
- }
-
- var graph = this.querySelector('iframe');
- if (!graph) {
- graph = document.createElement('iframe');
- this.appendChild(graph);
- }
-
- if (!this._builderPicker || !this._builderPicker.length)
- return;
-
- var url = this._builderPicker[this._builderPicker.selectedIndex].value;
- popOutLink.href = url;
- graph.src = url;
- },
- _nextGraph: function()
- {
- if (!this._builderPicker)
- return;
-
- if (this._builderPicker.selectedIndex < this._builderPicker.length - 1) {
- this._builderPicker.selectedIndex++;
- this._displayGraph();
- return;
- }
-
- if (this._suitePicker.selectedIndex < this._suitePicker.length - 1) {
- this._suitePicker.selectedIndex++;
- this._onChangeSuite();
- }
- },
- _previousGraph: function()
- {
- if (!this._builderPicker)
- return;
-
- if (this._builderPicker.selectedIndex > 0) {
- this._builderPicker.selectedIndex--;
- this._displayGraph();
- return;
- }
-
- if (this._suitePicker.selectedIndex > 0) {
- this._suitePicker.selectedIndex--;
- this._updateBuilderPicker();
- this._builderPicker.selectedIndex = this._builderPicker.length - 1;
- this._displayGraph();
- }
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js
deleted file mode 100644
index 8a966ad81..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module('ui.perf');
-
-var kDummyPerfGraphData = {
- "dummy_perf_test_1": [
- {
- "builder": "Mac10.6 Perf",
- "url": "http://dummyurl1"
- }
- ],
- "dummy_perf_test_2": [
- {
- "builder": "Mac10.6 Perf",
- "url": "http://dummyurl2"
- },
- {
- "builder": "Linux Perf",
- "url": "http://dummyurl3"
- }
- ]
-};
-
-asyncTest("View", 7, function() {
- var oldPerfBuilders = builders.perfBuilders;
- builders.perfBuilders = function(callback) {
- setTimeout(function() { callback(kDummyPerfGraphData) }, 0);
- }
-
- var view = new ui.perf.View();
-
- setTimeout(function() {
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<select><option value="http://dummyurl1">Mac10.6 Perf</option></select>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl1">Pop out</a>' +
- '</div>' +
- '<iframe src="http://dummyurl1"></iframe>' +
- '</div>');
-
- view._nextGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl2">Pop out</a>' +
- '<select><option value="http://dummyurl2">Mac10.6 Perf</option><option value="http://dummyurl3">Linux Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl2"></iframe>' +
- '</div>');
-
- view._nextGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl3">Pop out</a>' +
- '<select><option value="http://dummyurl2">Mac10.6 Perf</option><option value="http://dummyurl3">Linux Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl3"></iframe>' +
- '</div>');
-
- view._nextGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl3">Pop out</a>' +
- '<select><option value="http://dummyurl2">Mac10.6 Perf</option><option value="http://dummyurl3">Linux Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl3"></iframe>' +
- '</div>');
-
- view._previousGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl2">Pop out</a>' +
- '<select><option value="http://dummyurl2">Mac10.6 Perf</option><option value="http://dummyurl3">Linux Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl2"></iframe>' +
- '</div>');
-
- view._previousGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl1">Pop out</a>' +
- '<select><option value="http://dummyurl1">Mac10.6 Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl1"></iframe>' +
- '</div>');
-
- view._previousGraph();
-
- equal(view.outerHTML, '<div id="perf-view">' +
- '<ol class="notifications">' +
- '<li style="opacity: 0; ">' +
- '<div class="how"></div><div class="what">Loading list of perf dashboards...</div>' +
- '</li>' +
- '</ol>' +
- '<div class="title-bar">' +
- '<select><option>dummy_perf_test_1</option><option>dummy_perf_test_2</option></select>' +
- '<ul class="actions"><li><button class="action previous">\u25C0</button></li><li><button class="action next">\u25B6</button></li></ul>' +
- '<a class="pop-out" target="_blank" href="http://dummyurl1">Pop out</a>' +
- '<select><option value="http://dummyurl1">Mac10.6 Perf</option></select>' +
- '</div>' +
- '<iframe src="http://dummyurl1"></iframe>' +
- '</div>');
-
- builders.perfBuilders = oldPerfBuilders;
- start();
- }, 0);
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js
deleted file mode 100644
index 67ef8d094..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js
+++ /dev/null
@@ -1,474 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-var ui = ui || {};
-ui.results = ui.results || {};
-
-(function(){
-
-var kResultsPrefetchDelayMS = 500;
-
-// FIXME: Rather than using table, should we be using something fancier?
-ui.results.Comparison = base.extends('table', {
- init: function()
- {
- this.className = 'comparison';
- this.innerHTML = '<thead><tr><th>Expected</th><th>Actual</th><th>Diff</th></tr></thead>' +
- '<tbody><tr><td class="expected result-container"></td><td class="actual result-container"></td><td class="diff result-container"></td></tr></tbody>';
- },
- _selectorForKind: function(kind)
- {
- switch (kind) {
- case results.kExpectedKind:
- return '.expected';
- case results.kActualKind:
- return '.actual';
- case results.kDiffKind:
- return '.diff';
- }
- return '.unknown';
- },
- update: function(kind, result)
- {
- var selector = this._selectorForKind(kind);
- $(selector, this).empty().append(result);
- return result;
- },
-});
-
-// We'd really like TextResult and ImageResult to extend a common Result base
-// class, but we can't seem to do that because they inherit from different
-// HTMLElements. We could have them inherit from <div>, but that seems lame.
-
-ui.results.TextResult = base.extends('iframe', {
- init: function(url)
- {
- this.className = 'text-result';
- this.src = url;
- }
-});
-
-ui.results.ImageResult = base.extends('img', {
- init: function(url)
- {
- this.className = 'image-result';
- this.src = url;
- }
-});
-
-ui.results.AudioResult = base.extends('audio', {
- init: function(url)
- {
- this.className = 'audio-result';
- this.src = url;
- this.controls = 'controls';
- }
-});
-
-function constructorForResultType(type)
-{
- if (type == results.kImageType)
- return ui.results.ImageResult;
- if (type == results.kAudioType)
- return ui.results.AudioResult;
- return ui.results.TextResult;
-}
-
-ui.results.ResultsGrid = base.extends('div', {
- init: function()
- {
- this.className = 'results-grid';
- },
- _addResult: function(comparison, constructor, resultsURLsByKind, kind)
- {
- var url = resultsURLsByKind[kind];
- if (!url)
- return;
- comparison.update(kind, new constructor(url));
- },
- addComparison: function(resultType, resultsURLsByKind)
- {
- var comparison = new ui.results.Comparison();
- var constructor = constructorForResultType(resultType);
-
- this._addResult(comparison, constructor, resultsURLsByKind, results.kExpectedKind);
- this._addResult(comparison, constructor, resultsURLsByKind, results.kActualKind);
- this._addResult(comparison, constructor, resultsURLsByKind, results.kDiffKind);
-
- this.appendChild(comparison);
- return comparison;
- },
- addRow: function(resultType, url)
- {
- var constructor = constructorForResultType(resultType);
- var view = new constructor(url);
- this.appendChild(view);
- return view;
- },
- addResults: function(resultsURLs)
- {
- var resultsURLsByTypeAndKind = {};
-
- resultsURLsByTypeAndKind[results.kImageType] = {};
- resultsURLsByTypeAndKind[results.kAudioType] = {};
- resultsURLsByTypeAndKind[results.kTextType] = {};
-
- resultsURLs.forEach(function(url) {
- resultsURLsByTypeAndKind[results.resultType(url)][results.resultKind(url)] = url;
- });
-
- $.each(resultsURLsByTypeAndKind, function(resultType, resultsURLsByKind) {
- if ($.isEmptyObject(resultsURLsByKind))
- return;
- if (results.kUnknownKind in resultsURLsByKind) {
- // This is something like "crash" that isn't a comparison.
- this.addRow(resultType, resultsURLsByKind[results.kUnknownKind]);
- return;
- }
- this.addComparison(resultType, resultsURLsByKind);
- }.bind(this));
-
- if (!this.children.length)
- this.textContent = 'No results to display.'
- }
-});
-
-ui.results.ResultsDetails = base.extends('div', {
- init: function(delegate, failureInfo)
- {
- this.className = 'results-detail';
- this._delegate = delegate;
- this._failureInfo = failureInfo;
- this._haveShownOnce = false;
- },
- show: function() {
- if (this._haveShownOnce)
- return;
- this._haveShownOnce = true;
- this._delegate.fetchResultsURLs(this._failureInfo, function(resultsURLs) {
- var resultsGrid = new ui.results.ResultsGrid();
- resultsGrid.addResults(resultsURLs);
-
- $(this).empty().append(
- new ui.actions.List([
- new ui.actions.Previous(),
- new ui.actions.Next()
- ])).append(resultsGrid);
-
-
- }.bind(this));
- },
-});
-
-function isAnyReftest(testName, resultsByTest)
-{
- return Object.keys(resultsByTest[testName]).map(function(builder) {
- return resultsByTest[testName][builder];
- }).some(function(resultNode) {
- return resultNode.reftest_type && resultNode.reftest_type.length;
- });
-}
-
-ui.results.FlakinessData = base.extends('iframe', {
- init: function()
- {
- this.className = 'flakiness-iframe';
- this.src = ui.urlForEmbeddedFlakinessDashboard();
- this.addEventListener('load', function() {
- window.addEventListener('message', this._handleMessage.bind(this));
- });
- },
- _handleMessage: function(event) {
- if (!this.contentWindow)
- return;
-
- // Check for null event.origin so that the unittests can get past this point.
- // FIXME: Is this safe? In practice, there's no meaningful harm that can come from
- // a malicious page sending us heightChanged commands, so it doesn't really matter.
- if (event.origin !== 'null' && event.origin != 'http://webkit-test-results.appspot.com') {
- console.log('Invalid origin: ' + event.origin);
- return;
- }
-
- if (event.data.command != 'heightChanged') {
- console.log('Unknown postMessage command: ' + event.data);
- return;
- }
-
- this.style.height = event.data.height + 'px';
- }
-});
-
-ui.results.TestSelector = base.extends('div', {
- init: function(delegate, resultsByTest)
- {
- this.className = 'test-selector';
- this._delegate = delegate;
-
- var topPanel = document.createElement('div');
- topPanel.className = 'top-panel';
- this.appendChild(topPanel);
-
- this._appendResizeHandle();
-
- var bottomPanel = document.createElement('div');
- bottomPanel.className = 'bottom-panel';
- this.appendChild(bottomPanel);
-
- this._flakinessData = new ui.results.FlakinessData();
- this.appendChild(this._flakinessData);
-
- var testNames = Object.keys(resultsByTest);
- testNames.sort().forEach(function(testName) {
- var nonLinkTitle = document.createElement('a');
- nonLinkTitle.classList.add('non-link-title');
- nonLinkTitle.textContent = testName;
-
- var linkTitle = document.createElement('a');
- linkTitle.classList.add('link-title');
- linkTitle.setAttribute('href', ui.urlForFlakinessDashboard([testName]))
- linkTitle.textContent = testName;
-
- var header = document.createElement('h3');
- header.appendChild(nonLinkTitle);
- header.appendChild(linkTitle);
- header.addEventListener('click', this._showResults.bind(this, header, false));
- topPanel.appendChild(header);
- }, this);
-
- // If we have a small amount of content, don't show the resize handler.
- // Otherwise, set the minHeight so that the percentage height of the
- // topPanel is not too small.
- if (testNames.length <= 4)
- this.removeChild(this.querySelector('.resize-handle'));
- else
- topPanel.style.minHeight = '100px';
- },
- _appendResizeHandle: function()
- {
- var resizeHandle = document.createElement('div');
- resizeHandle.className = 'resize-handle';
- this.appendChild(resizeHandle);
-
- resizeHandle.addEventListener('mousedown', function(event) {
- this._is_resizing = true;
- event.preventDefault();
- }.bind(this));
-
- var cancelResize = function(event) { this._is_resizing = false; }.bind(this);
- this.addEventListener('mouseup', cancelResize);
- // FIXME: Use addEventListener once WebKit adds support for mouseleave/mouseenter.
- $(window).bind('mouseleave', cancelResize);
-
- this.addEventListener('mousemove', function(event) {
- if (!this._is_resizing)
- return;
- var mouseY = event.clientY + document.body.scrollTop - this.offsetTop;
- var percentage = 100 * mouseY / this.offsetHeight;
- document.querySelector('.top-panel').style.maxHeight = percentage + '%';
- }.bind(this))
- },
- _showResults: function(header, scrollInfoView)
- {
- if (!header)
- return false;
-
- var activeHeader = this.querySelector('.active')
- if (activeHeader)
- activeHeader.classList.remove('active');
- header.classList.add('active');
-
- var testName = this.currentTestName();
- this._flakinessData.src = ui.urlForEmbeddedFlakinessDashboard([testName]);
-
- var bottomPanel = this.querySelector('.bottom-panel')
- bottomPanel.innerHTML = '';
- bottomPanel.appendChild(this._delegate.contentForTest(testName));
-
- var topPanel = this.querySelector('.top-panel');
- if (scrollInfoView) {
- topPanel.scrollTop = header.offsetTop;
- if (header.offsetTop - topPanel.scrollTop < header.offsetHeight)
- topPanel.scrollTop = topPanel.scrollTop - header.offsetHeight;
- }
-
- var resultsDetails = this.querySelectorAll('.results-detail');
- if (resultsDetails.length)
- resultsDetails[0].show();
- setTimeout(function() {
- Array.prototype.forEach.call(resultsDetails, function(resultsDetail) {
- resultsDetail.show();
- });
- }, kResultsPrefetchDelayMS);
-
- return true;
- },
- nextResult: function()
- {
- if (this.querySelector('.builder-selector').nextResult())
- return true;
- return this.nextTest();
- },
- previousResult: function()
- {
- if (this.querySelector('.builder-selector').previousResult())
- return true;
- return this.previousTest();
- },
- nextTest: function()
- {
- return this._showResults(this.querySelector('.active').nextSibling, true);
- },
- previousTest: function()
- {
- var succeeded = this._showResults(this.querySelector('.active').previousSibling, true);
- if (succeeded)
- this.querySelector('.builder-selector').lastResult();
- return succeeded;
- },
- firstResult: function()
- {
- this._showResults(this.querySelector('h3'), true);
- },
- currentTestName: function()
- {
- return this.querySelector('.active .non-link-title').textContent;
- }
-});
-
-ui.results.BuilderSelector = base.extends('div', {
- init: function(delegate, testName, resultsByBuilder)
- {
- this.className = 'builder-selector';
- this._delegate = delegate;
-
- var tabStrip = this.appendChild(document.createElement('ul'));
-
- Object.keys(resultsByBuilder).sort().forEach(function(builderName) {
- var builderHash = base.underscoredBuilderName(builderName);
-
- var link = document.createElement('a');
- $(link).attr('href', "#" + builderHash).text(ui.displayNameForBuilder(builderName));
- tabStrip.appendChild(document.createElement('li')).appendChild(link);
-
- var content = this._delegate.contentForTestAndBuilder(testName, builderName);
- content.id = builderHash;
- this.appendChild(content);
- }, this);
-
- $(this).tabs();
- },
- nextResult: function()
- {
- var nextIndex = $(this).tabs('option', 'selected') + 1;
- if (nextIndex >= $(this).tabs('length'))
- return false
- $(this).tabs('option', 'selected', nextIndex);
- return true;
- },
- previousResult: function()
- {
- var previousIndex = $(this).tabs('option', 'selected') - 1;
- if (previousIndex < 0)
- return false;
- $(this).tabs('option', 'selected', previousIndex);
- return true;
- },
- firstResult: function()
- {
- $(this).tabs('option', 'selected', 0);
- },
- lastResult: function()
- {
- $(this).tabs('option', 'selected', $(this).tabs('length') - 1);
- }
-});
-
-ui.results.View = base.extends('div', {
- init: function(delegate)
- {
- this.className = 'results-view';
- this._delegate = delegate;
- },
- contentForTest: function(testName)
- {
- var rebaselineAction;
- if (isAnyReftest(testName, this._resultsByTest))
- rebaselineAction = $('<div class="non-action-button">Reftests cannot be rebaselined. Email webkit-gardening@chromium.org if unsure how to fix this.</div>');
- else
- rebaselineAction = new ui.actions.List([new ui.actions.Rebaseline().makeDefault()]);
- $(rebaselineAction).addClass('rebaseline-action');
-
- var builderSelector = new ui.results.BuilderSelector(this, testName, this._resultsByTest[testName]);
- $(builderSelector).append(rebaselineAction).append($('<br style="clear:both">'));
- $(builderSelector).bind('tabsselect', function(event, ui) {
- // We will probably have pre-fetched the tab already, but we need to make sure.
- ui.panel.show();
- });
- return builderSelector;
- },
- contentForTestAndBuilder: function(testName, builderName)
- {
- var failureInfo = results.failureInfoForTestAndBuilder(this._resultsByTest, testName, builderName);
- return new ui.results.ResultsDetails(this, failureInfo);
- },
- setResultsByTest: function(resultsByTest)
- {
- $(this).empty();
- this._resultsByTest = resultsByTest;
- this._testSelector = new ui.results.TestSelector(this, resultsByTest);
- this.appendChild(this._testSelector);
- },
- fetchResultsURLs: function(failureInfo, callback)
- {
- this._delegate.fetchResultsURLs(failureInfo, callback)
- },
- nextResult: function()
- {
- return this._testSelector.nextResult();
- },
- previousResult: function()
- {
- return this._testSelector.previousResult();
- },
- nextTest: function()
- {
- return this._testSelector.nextTest();
- },
- previousTest: function()
- {
- return this._testSelector.previousTest();
- },
- firstResult: function()
- {
- this._testSelector.firstResult()
- },
- currentTestName: function()
- {
- return this._testSelector.currentTestName()
- }
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js
deleted file mode 100644
index 2457ac4bd..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module('ui.results');
-
-asyncTest('FlakinessData', 1, function() {
- var dashboard = new ui.results.FlakinessData();
- dashboard.addEventListener('load', function() {
- // setTimeout to be after the FlakinessData's load handler.
- setTimeout(function() {
- window.postMessage({command: 'heightChanged', height: 15}, '*');
- // setTimeout to be after the postMessage has been handled.
- setTimeout(function() {
- equals(dashboard.offsetHeight, 15);
- $(dashboard).detach();
- start();
- }, 0);
- }, 0);
- });
- document.body.appendChild(dashboard);
-});
-
-var kExampleResultsByTest = {
- "scrollbars/custom-scrollbar-with-incomplete-style.html": {
- "Mock Builder": {
- "expected": "IMAGE",
- "actual": "CRASH"
- },
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "userscripts/another-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- }
-};
-
-var kExampleReftestResults = {
- "reftest.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "IMAGE",
- "reftest_type": ["=="]
- }
- },
- "mismatch-reftest.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "IMAGE",
- "reftest_type": ["!="]
- }
- }
-};
-
-var kExampleResultsWithTimeoutByTest = {
- "fast/not-fast-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TIMEOUT"
- }
- }
-};
-
-var kExampleGreaterThanFourResultsByTest = {
- "scrollbars/custom-scrollbar-with-incomplete-style.html": {
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "scrollbars/1.html": {
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "scrollbars/2.html": {
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "scrollbars/3.html": {
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "userscripts/another-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- }
-};
-
-test('View', 18, function() {
- var delegate = {
- fetchResultsURLs: function(failureInfo, callback) { return; }
- };
-
- var view = new ui.results.View(delegate);
- view.setResultsByTest(kExampleResultsByTest);
-
- view.firstResult();
- var testSelector = view.querySelector('.test-selector');
- var topPanel = testSelector.querySelector('.top-panel');
- equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
-
- view.nextResult();
- equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
- equals(view.currentTestName(), 'scrollbars/custom-scrollbar-with-incomplete-style.html');
-
- view.nextResult();
- equals(topPanel.childNodes[1], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
- equals(view.currentTestName(), 'userscripts/another-test.html');
-
- view.previousResult();
- equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
-
- view.nextTest();
- equals(topPanel.childNodes[1], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 0);
- equals(view.currentTestName(), 'userscripts/another-test.html');
-
- view.previousTest();
- equals(topPanel.childNodes[0], topPanel.querySelector('.active'));;
- equals($($('.builder-selector', view)[0]).tabs('option', 'selected'), 1);
- equals(view.currentTestName(), 'scrollbars/custom-scrollbar-with-incomplete-style.html');
-
- ok(!testSelector.querySelector('.resize-handle'));
- equals(topPanel.style.minHeight, '');
-});
-
-test('View with more than four tests', 2, function() {
- var delegate = {
- fetchResultsURLs: function(failureInfo, callback) { return; }
- };
-
- var view = new ui.results.View(delegate);
- view.setResultsByTest(kExampleGreaterThanFourResultsByTest);
-
- var testSelector = view.querySelector('.test-selector');
- var topPanel = testSelector.querySelector('.top-panel');
-
- ok(testSelector.querySelector('.resize-handle'));
- equals(topPanel.style.minHeight, '100px');
-});
-
-test('View with reftests', 2, function() {
- var delegate = {
- fetchResultsURLs: function(failureInfo, callback) { return; }
- };
-
- var view = new ui.results.View(delegate);
- view.setResultsByTest(kExampleReftestResults);
- view.firstResult();
-
- equals($('.non-action-button', view).length, 1);
- equals($('.action', view).length, 0);
-});
-
-test('View of timeouts', 1, function() {
- var delegate = {
- fetchResultsURLs: function(failureInfo, callback) { callback([]); }
- };
-
- var view = new ui.results.View(delegate);
- view.setResultsByTest(kExampleResultsWithTimeoutByTest);
- view.firstResult();
-
- equals($('.results-grid', view).html(), 'No results to display.');
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js
deleted file mode 100644
index 66f7ac914..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-(function () {
-
-module("ui");
-
-var kExampleResultsByTest = {
- "scrollbars/custom-scrollbar-with-incomplete-style.html": {
- "Mock Builder": {
- "expected": "IMAGE",
- "actual": "CRASH"
- },
- "Mock Linux": {
- "expected": "TEXT",
- "actual": "CRASH"
- }
- },
- "userscripts/another-test.html": {
- "Mock Builder": {
- "expected": "PASS",
- "actual": "TEXT"
- }
- }
-}
-
-test("ui.onebar", 3, function() {
- if (window.location.hash) {
- window.location.hash = '';
- }
-
- onebar = new ui.onebar();
- onebar.attach();
- equal(onebar.innerHTML,
- '<div><select id="platform-picker"><option>Apple</option><option>Chromium</option><option>GTK</option><option>Qt</option></select></div>' +
- '<ul class="ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all">' +
- '<li class="ui-state-default ui-corner-top ui-tabs-selected ui-state-active"><a href="#unexpected">Unexpected Failures</a></li>' +
- '<li class="ui-state-default ui-corner-top"><a href="#expected">Expected Failures</a></li>' +
- '<li class="ui-state-default ui-corner-top ui-state-disabled"><a href="#results">Results</a></li>' +
- '<li class="ui-state-default ui-corner-top"><a href="#perf">perf</a></li>' +
- '</ul>' +
- '<div id="unexpected" class="ui-tabs-panel ui-widget-content ui-corner-bottom"></div>' +
- '<div id="expected" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>' +
- '<div id="results" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>' +
- '<div id="perf" class="ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"></div>');
-
- onebar.select('expected');
- equal(window.location.hash, '#expected');
- onebar.select('unexpected');
- equal(window.location.hash, '#unexpected');
-
- $(onebar).detach();
-});
-
-test("results.ResultsGrid", 1, function() {
- var grid = new ui.results.ResultsGrid()
- grid.addResults([
- 'http://example.com/layout-test-results/foo-bar-diff.txt',
- 'http://example.com/layout-test-results/foo-bar-expected.png',
- 'http://example.com/layout-test-results/foo-bar-actual.png',
- 'http://example.com/layout-test-results/foo-bar-diff.png',
- ]);
- equal(grid.innerHTML,
- '<table class="comparison">' +
- '<thead>' +
- '<tr>' +
- '<th>Expected</th>' +
- '<th>Actual</th>' +
- '<th>Diff</th>' +
- '</tr>' +
- '</thead>' +
- '<tbody>' +
- '<tr>' +
- '<td class="expected result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-expected.png"></td>' +
- '<td class="actual result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-actual.png"></td>' +
- '<td class="diff result-container"><img class="image-result" src="http://example.com/layout-test-results/foo-bar-diff.png"></td>' +
- '</tr>' +
- '</tbody>' +
- '</table>' +
- '<table class="comparison">' +
- '<thead>' +
- '<tr>' +
- '<th>Expected</th>' +
- '<th>Actual</th>' +
- '<th>Diff</th>' +
- '</tr>' +
- '</thead>' +
- '<tbody>' +
- '<tr>' +
- '<td class="expected result-container"></td>' +
- '<td class="actual result-container"></td>' +
- '<td class="diff result-container"><iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-diff.txt"></iframe></td>' +
- '</tr>' +
- '</tbody>' +
- '</table>');
-});
-
-test("results.ResultsGrid (crashlog)", 1, function() {
- var grid = new ui.results.ResultsGrid()
- grid.addResults(['http://example.com/layout-test-results/foo-bar-crash-log.txt']);
- equal(grid.innerHTML, '<iframe class="text-result" src="http://example.com/layout-test-results/foo-bar-crash-log.txt"></iframe>');
-});
-
-test("results.ResultsGrid (empty)", 1, function() {
- var grid = new ui.results.ResultsGrid()
- grid.addResults([]);
- equal(grid.innerHTML, 'No results to display.');
-});
-
-test("time", 6, function() {
- var time = new ui.RelativeTime();
- equal(time.tagName, 'TIME');
- equal(time.className, 'relative');
- deepEqual(Object.getOwnPropertyNames(time.__proto__).sort(), [
- 'date',
- 'init',
- 'setDate',
- 'update',
- ]);
- equal(time.outerHTML, '<time class="relative"></time>');
- var tenMinutesAgo = new Date();
- tenMinutesAgo.setMinutes(tenMinutesAgo.getMinutes() - 10);
- time.setDate(tenMinutesAgo);
- equal(time.outerHTML, '<time class="relative">10 minutes ago</time>');
- equal(time.date().getTime(), tenMinutesAgo.getTime());
-});
-
-test("StatusArea", 3, function() {
- var statusArea = new ui.StatusArea();
- var id = statusArea.newId();
- statusArea.addMessage(id, 'First Message');
- statusArea.addMessage(id, 'Second Message');
- equal(statusArea.outerHTML,
- '<div class="status processing" style="visibility: visible; ">' +
- '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
- '<progress class="process-text">Processing...</progress>' +
- '<div id="status-content-1" class="status-content">' +
- '<div class="message">First Message</div>' +
- '<div class="message">Second Message</div>' +
- '</div>' +
- '</div>');
-
- var secondStatusArea = new ui.StatusArea();
- var secondId = secondStatusArea.newId();
- secondStatusArea.addMessage(secondId, 'First Message second id');
-
- equal(statusArea.outerHTML,
- '<div class="status processing" style="visibility: visible; ">' +
- '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
- '<progress class="process-text">Processing...</progress>' +
- '<div id="status-content-1" class="status-content">' +
- '<div class="message">First Message</div>' +
- '<div class="message">Second Message</div>' +
- '</div>' +
- '<div id="status-content-2" class="status-content">' +
- '<div class="message">First Message second id</div>' +
- '</div>' +
- '</div>');
-
- statusArea.addFinalMessage(id, 'Final Message 1');
- statusArea.addFinalMessage(secondId, 'Final Message 2');
-
- equal(statusArea.outerHTML,
- '<div class="status" style="visibility: visible; ">' +
- '<ul class="actions"><li><button class="action">Close</button></li></ul>' +
- '<progress class="process-text">Processing...</progress>' +
- '<div id="status-content-1" class="status-content">' +
- '<div class="message">First Message</div>' +
- '<div class="message">Second Message</div>' +
- '<div class="message">Final Message 1</div>' +
- '</div>' +
- '<div id="status-content-2" class="status-content">' +
- '<div class="message">First Message second id</div>' +
- '<div class="message">Final Message 2</div>' +
- '</div>' +
- '</div>');
-
- statusArea.close();
-});
-
-})();
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/TestFailures.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/TestFailures.css
deleted file mode 100644
index c185e60be..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/TestFailures.css
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-aside {
- position: absolute;
- top: 3px;
- right: 5px;
- color: #888;
- font-size: 0.9em;
-}
-
-code {
- font-size: 0.9em;
-}
-
-ol {
- list-style-type: none;
-}
-
-dt {
- float: left;
- font-weight: bold;
- margin-right: 3px;
-}
-
-dt::after {
- content: ':';
-}
-
-#failure-history, #possibly-flaky-tests {
- margin: 0;
- padding: 0 0 0 15px;
-}
-
-#failure-history > li {
- margin-bottom: 10px;
- padding: 10px;
-}
-
-#possibly-flaky-tests > li {
- padding: 1px 0px;
-}
-
-#failure-history > li, #possibly-flaky-tests > li {
- background-color: #f0f0f0;
- padding-left: 50px;
-}
-
-#possibly-flaky-tests > li > :first-child {
- margin-left: -50px;
-}
-
-.flakiness-examples-list {
- padding: 0;
-}
-
-.test-list {
- margin: 0 0 0 -40px;
- padding: 0;
-}
-
-.info {
- font-style: italic;
-}
-
-.existing-and-new-bugs {
- margin-bottom: 0;
-}
-
-.existing-bugs-list, .suspect-revisions-list, .flakiness-examples-list {
- font-size: smaller;
-}
-
-.new-bug-form {
- display: none;
-}
-
-.disclosure-triangle {
- -webkit-transition: -webkit-transform 0.1s;
- -webkit-user-select: none;
- cursor: default;
- display: inline-block;
- padding: 0px 3px;
-}
-
-.expanded > .disclosure-triangle {
- -webkit-transform: rotateZ(90deg);
-}
-
-.expandable {
- height: 0px;
- overflow: hidden;
-}
-
-.expanded > .expandable {
- height: auto;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css
deleted file mode 100644
index 9f7e8c081..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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 {
- overflow-y: scroll;
-}
-
-body {
- font-family: 'Open Sans';
- font-size: 14px;
- margin: 0px;
-}
-
-a {
- color: #333;
-}
-
-.ui-widget-content {
- font-family: 'Open Sans';
-}
-
-.ui-widget button, button {
- font-family: 'Open Sans';
- border-radius: 2px;
- background-image: -webkit-linear-gradient(top,#f5f5f5,#f1f1f1);
- border: 1px solid rgba(0, 0, 0, 0.1);
- border-radius: 2px;
- color: #666;
- cursor: pointer;
- font-size: 11px;
- font-weight: bold;
- height: 29px;
- line-height: 27px;
- min-width: 54px;
- padding: 0 8px;
- text-align: center
-}
-
-button.next {
- margin-left: 0px;
-}
-
-button.previous {
- margin-right: 0px;
-}
-
-button[disabled] {
- visibility: hidden;
-}
-
-button:hover {
- background-image: -webkit-linear-gradient(top,#f8f8f8,#f1f1f1);
- -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1);
- background-color: #f8f8f8;
- background-image: linear-gradient(top,#f8f8f8,#f1f1f1);
- border: 1px solid #c6c6c6;
- box-shadow: 0 1px 1px rgba(0,0,0,0.1);
- color: #333
-}
-
-button:focus {
- border: 1px solid #4d90fe;
- outline: none
-}
-
-button.default {
- border: 1px solid #3079ED;
- color: white;
- background-image: -webkit-linear-gradient(top,#4d90fe,#4787ed);
-}
-
-button.default:hover {
- border: 1px solid #2f5bb7;
- color: white;
- background-color: #357ae8;
- background-image: -webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#357ae8));
-}
-
-.clear {
- clear: both;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css
deleted file mode 100644
index fe818c6b3..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-.failures .BUILDING {
- opacity: 0.5;
-}
-
-a.failing-builder {
- display: inline-block;
- border: 1px solid Gray;
- margin: 0 0 2px 0;
- padding: 1px;
- color: Black;
- font-size: 11px;
- text-decoration: none;
-}
-
- a.failing-builder>span.version {
- text-transform: uppercase;
- background-color: #555;
- color: White;
- padding: 0 2px;
- }
-
- a.failing-builder>span.architecture {
- padding: 0 2px;
- }
-
- .effects a.failing-builder>span.architecture {
- background-color: #555;
- color: White;
- }
-
- a.failing-builder>span.graphics {
- padding: 0 2px;
- }
-
-
-ul.failures {
- padding: 0px;
-}
-
- ul.failures>li {
- display: -webkit-box;
- }
-
- ul.failures>li label {
- margin-left: 10px;
- }
-
- ul.failures>li ul.actions {
- padding: 0px;
- visibility: hidden;
- }
-
- ul.failures>li:hover ul.actions {
- visibility: visible;
- }
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/main.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/main.css
deleted file mode 100644
index 6c54507c9..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/main.css
+++ /dev/null
@@ -1,333 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-body {
- font-family: Tahoma, sans-serif;
- font-size: 11px;
- margin: 0;
- padding: 0;
-}
-
-a {
- color: Black;
-}
-
-table {
- table-layout: fixed;
- width: 100%;
- border-collapse: collapse;
-}
-
-td, th {
- overflow: hidden;
- vertical-align: top;
- /* border-right: 1px solid #c6c6c6; */
-}
-
-td:last-of-type, th:last-of-type {
- /* border-right: 0px; */
-}
-
-th {
- /* border-bottom: 1px solid #c6c6c6; */
-}
-
-button {
- border-radius: 2px;
- background-image: -webkit-linear-gradient(top,#f5f5f5,#f1f1f1);
- border: 1px solid rgba(0, 0, 0, 0.1);
- border-radius: 2px;
- color: #666;
- cursor: pointer;
- font-size: 11px;
- font-weight: bold;
- height: 29px;
- line-height: 27px;
- margin: 11px 6px;
- min-width: 54px;
- padding: 0 8px;
- text-align: center
-}
-
-button.next {
- margin-left: 0px;
-}
-
-button.previous {
- margin-right: 0px;
-}
-
-button[disabled] {
- visibility: hidden;
-}
-
-button:hover {
- background-image: -webkit-linear-gradient(top,#f8f8f8,#f1f1f1);
- -webkit-box-shadow: 0 1px 1px rgba(0,0,0,0.1);
- background-color: #f8f8f8;
- background-image: linear-gradient(top,#f8f8f8,#f1f1f1);
- border: 1px solid #c6c6c6;
- box-shadow: 0 1px 1px rgba(0,0,0,0.1);
- color: #333
-}
-
-button:focus {
- border: 1px solid #4d90fe;
- outline: none
-}
-
-button.default {
- border: 1px solid #3079ED;
- color: white;
- background-image: -webkit-linear-gradient(top,#4d90fe,#4787ed);
-}
-
-button.default:hover {
- border: 1px solid #2f5bb7;
- color: white;
- background-color: #357ae8;
- background-image: -webkit-gradient(linear,left top,left bottom,from(#4d90fe),to(#357ae8));
-}
-
-.clear {
- clear: both;
-}
-
-/*** butterbar ***/
-
-.butterbar {
- background-color: #f5f5f5;
- padding: 5px;
- position: fixed;
- top: 0px;
- right: 0px;
-}
-
-.butterbar .hide {
- margin-left: 20px;
-}
-
-/*** infobar ***/
-
-.infobar {
- display: none;
- background-color: Cornsilk;
- border: 5px solid Tomato;
- padding: 10px;
- margin: 5px auto;
- font-size: 15px;
- width: 100%;
- text-align: center;
-}
-
-.infobar .status a {
- font-weight: normal;
-}
-
-.infobar .status ul {
- margin: 0;
- padding: 0;
- list-style: none;
- display: inline-block;
- padding: 0 0 0 10px;
-}
-
-.infobar .status li {
- display: inline-block;
- margin: 0px 5px;
-}
-
-/*** recent-history ***/
-
-.recent-history {
-}
-
-.recent-history .builder {
- width: 5px;
- border-right: 1px solid #f5f5f5;
-}
-
-.recent-history .built {
- background-color: #c6c6c6;
-}
-
-.recent-history td[data-failure-types] {
- background-color: Black;
-}
-
-.changelog .result {
- padding: 4px 0px;
- border-top: 2px solid white;
- border-bottom: 2px solid white;
-}
-
-.changelog .test {
- padding-left: 3px;
-}
-
-.changelog .entry {
- padding: 4px 0px 4px 3px;
-}
-
-.changelog .reverted {
- text-decoration: line-through;
-}
-
-.changelog .possible-regression {
- background-color: PapayaWhip;
-}
-
-.changelog .details, .changelog .details a {
- color: #555;
-}
-
-.changelog .summary {
- color: Black;
-}
-
-.changelog .author {
- font-style: italic;
-}
-
-.test-name.IMAGE\+TEXT::after {
- content: 'IMAGE+TEXT';
- font-weight: normal;
- text-decoration: none;
- color: white;
- background-color: Indigo;
- font-size: 10px;
- padding: 1px 2px;
- margin: 0 0 0 3px;
- border-radius: 4px;
-}
-
-.test-name.IMAGE::after {
- content: 'IMAGE';
- font-weight: normal;
- text-decoration: none;
- color: white;
- background-color: MidnightBlue;
- font-size: 10px;
- padding: 1px 2px;
- margin: 0 0 0 3px;
- border-radius: 4px;
-}
-
-.test-name.TIMEOUT::after {
- content: 'TIMEOUT';
- font-weight: normal;
- text-decoration: none;
- color: white;
- background-color: DarkGoldenRod;
- font-size: 10px;
- padding: 1px 2px;
- margin: 0 0 0 3px;
- border-radius: 4px;
-}
-
-.test-name.TEXT::after {
- content: 'TEXT';
- font-weight: normal;
- text-decoration: none;
- color: white;
- background-color: DodgerBlue;
- font-size: 10px;
- padding: 1px 2px;
- margin: 0 0 0 3px;
- border-radius: 4px;
-}
-
-.test-name.CRASH::after {
- content: 'CRASH';
- font-weight: normal;
- text-decoration: none;
- color: white;
- background-color: Tomato;
- font-size: 10px;
- padding: 1px 2px;
- margin: 0 0 0 3px;
- border-radius: 4px;
-}
-
-/*** results-view ***/
-
-/* FIXME: Remove this once garden-o-matic switches to the new results view. */
-.old-results-view {
- display: none;
- position: fixed;
- left: 0px;
- right: 0px;
- top: 25%;
- bottom: 0px;
-}
-
-.results-view {
- background-color: #f5f5f5;
-}
-
-.results-view .toolbar {
- border-top: 1px solid #c6c6c6;
- border-bottom: 1px solid #c6c6c6;
-}
-
-.results-view .toolbar .selector {
- font-size: 11px;
- font-weight: bold;
- height: 29px;
- line-height: 27px;
- margin: 11px 6px;
- padding: 0 8px;
-}
-
-.results-view .test-selector {
- width: 400px;
- margin-right: 6px;
-}
-
-.results-view .toolbar .actions {
- float: right;
-}
-
-.results-detail td {
- background-color: white;
-}
-
-.text-result {
- border: none;
- width: 100%;
- height: 400px; /* FIXME: How do we get a reasonable height here? */
-}
-
-.image-result {
- width: 100%;
- height: auto;
-}
-
-/*** partytime ***/
-
-.partytime {
- display: none;
- text-align: center;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css
deleted file mode 100644
index eede1896a..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-/* FIXME: This should really be in actions.css. */
-ul.actions>li {
- display: inline-block;
-}
-
-ol.notifications {
- list-style: none;
- padding: 0;
-}
-
-ol.notifications ul {
- list-style: none;
- padding: 0;
-}
-
-ol.notifications>li {
- display: -webkit-box;
- width: 100%;
- padding: 10px;
- box-sizing: border-box;
- border-top: 1px solid Gray;
-}
-
-ol.notifications div.how {
- width: 350px;
-}
-
-ol.notifications time {
- display: block;
- color: #888;
- padding: 0 0 20px 0;
-}
-
-ol.notifications div.what {
- display: -webkit-box;
- -webkit-box-orient: vertical;
- padding: 0 0 0 10px;
- -webkit-box-flex: 1;
-}
-
- ol.notifications>li div.what ul.effects>li.builder {
- display: inline;
- padding-left: 5px;
- }
-
-ol.notifications ul.causes>li, ol.notifications div.problem {
- display: -webkit-box;
-}
-
-ol.notifications ul.causes div.description, ol.notifications div.problem ul.effects {
- -webkit-box-flex: 1;
-}
-
-ol.notifications>li div.problem {
- padding-bottom: 10px;
-}
-
- ol.notifications>li div.problem>ul.actions {
- visibility: hidden;
- }
-
- ol.notifications>li:hover div.problem>ul.actions {
- visibility: visible;
- }
-
- ol.notifications>li table.failures {
- opacity: 0.2;
- -webkit-transition: opacity 0.5s;
- }
-
- ol.notifications>li:hover table.failures {
- opacity: 1;
- }
-
-ol.notifications>li ul.causes>li>ul.actions {
-}
-
- ol.notifications>li ul.causes>li>div.description {
- padding: 0 10px 5px 0;
- display: -webkit-box;
- }
-
- ol.notifications>li ul.causes>li>div.description>a {
- padding: 5px 10px 5px 10px;
- margin: -5px 10px -2px 0;
- border-radius: 4px;
- display: inline-block;
- }
-
- ol.notifications>li ul.causes>li:hover>div.description>a {
- background-color: #555;
- color: White;
- }
-
- ol.notifications>li ul.causes>li:hover>div.description>a::after {
- content: '';
- width: 0;
- height: 0;
- margin-top: 5px;
- position: absolute;
- margin-left: 10px;
- border-top: 5px solid White;
- border-left: 5px solid #555;
- border-bottom: 5px solid White;
- }
-
- ol.notifications>li ul.causes>li>div.description>span {
- padding: 0 10px 0 0;
- display: block;
- cursor: default;
- pointer-events: none;
- -webkit-box-flex: 1;
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.author {
- padding: 0 0 0 5px;
- font-style: italic;
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.reviewer {
- color: Gray;
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.bugID::before {
- content: 'bug ';
- padding-left: 8px;
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.bugID>a {
- cursor: hand;
- pointer-events: auto;
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.reviewer::before {
- content: ' (';
- }
-
- ol.notifications>li ul.causes>li>div.description>span>span.reviewer::after {
- content: ')';
- }
-
- ol.notifications>li ul.causes>li>ul.actions {
- visibility: hidden;
- }
-
- ol.notifications>li ul.causes>li:hover>ul.actions {
- visibility: visible;
- }
-
- ol.notifications>li ul.causes>li li {
- padding: 10px 0 0 0;
- display: inline;
- }
-
-ol.notifications table.failures {
- border-collapse: collapse;
- table-layout: fixed;
- font-size: 11px;
- width: 350px;
-}
-
- ol.notifications table.failures thead tr td:first-child {
- visibility: hidden;
- }
-
- ol.notifications table.failures tbody tr {
- border-top: 1px solid #eee;
- }
-
- ol.notifications table.failures tbody td:first-child {
- width: 20%;
- }
-
- ol.notifications table.failures tbody td {
- width: 40%;
- padding: 2px;
- }
-
- ol.notifications table.failures tbody tr td:first-child {
- vertical-align: top;
- }
-
- ol.notifications table.failures tbody tr td:first-child span {
- padding: 0 2px;
- }
-
- ol.notifications table.failures tbody tr.TIMEOUT td:first-child span {
- background-color: #fffc6c;
- }
-
- ol.notifications table.failures tbody tr.TEXT td:first-child span {
- background-color: #e98080;
- }
-
- ol.notifications table.failures tbody tr.CRASH td:first-child span {
- background-color: #ffc343;
- }
-
- ol.notifications table.failures tbody tr.AUDIO td:first-child span {
- background-color: #bfdfff;
- }
-
- ol.notifications table.failures tbody tr.IMAGE td:first-child span {
- background-color: #69f;
- }
-
- ol.notifications table.failures tbody tr.IMAGE\+TEXT td:first-child span {
- background-color: #96f;
- }
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css
deleted file mode 100644
index ca6b59511..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-/*
- * We mostly use the styles from jQuery UI, but we clear some of them to
- * make the UI slightly tighter.
- */
-
-#onebar {
- border: none;
- padding: 0px;
- margin-bottom: 100px;
-}
-
-#onebar .ui-widget-header {
- border-top: none;
- border-right: none;
- border-left: none;
- border-radius: 0px;
-}
-
-#onebar #platform-picker {
- float: right;
- margin-top: 8px;
- margin-right: 8px;
- font-size: larger;
-}
-
-#unexpected {
- min-height: 550px;
-}
-
-#onebar.partytime #unexpected {
- background: url(../images/partytime.gif) center center no-repeat;
-}
-
-#chromium-gtests iframe {
- border: 0;
- height: 20px;
-}
-
-#chromium-gtests {
- position: absolute;
- top: 10px;
- right: 5px;
-}
-
-#gtest-label {
- vertical-align: top;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css
deleted file mode 100644
index 4221f4360..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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.
- */
-
-#perf-view {
- height: 100%;
-}
-
-#perf-view > .title-bar {
- height: 2em;
-}
-
-#perf-view > .notifications {
- margin: 0;
-}
-
-#perf-view .actions,
-#perf-view .pop-out {
- float: right;
- margin: 0;
-}
-
-#perf-view > iframe {
- width: 100%;
- border: 0;
- /* FIXME: Add perf-dashboard-side postMessage calls so the iframe can size to it's contents. */
- height: -webkit-calc(100% - 2em);
-} \ No newline at end of file
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/pixelzoomer.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/pixelzoomer.css
deleted file mode 100644
index b38867e5d..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/pixelzoomer.css
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-.pixel-zoom-container {
- position: fixed;
- top: 0;
- left: 0;
- width: 96%;
- margin: 10px;
- padding: 10px;
- display: -webkit-box;
- display: -moz-box;
- pointer-events: none;
- background-color: silver;
- border-radius: 20px;
- border: 1px solid gray;
- box-shadow: 0 0 5px rgba(0, 0, 0, 0.75);
-}
-
-.pixel-zoom-container > * {
- -webkit-box-flex: 1;
- -moz-box-flex: 1;
- border: 1px solid black;
- margin: 4px;
- overflow: hidden;
- background-color: white;
-}
-
-.pixel-zoom-container .scaled-image-container {
- position: relative;
- overflow: hidden;
- width: 100%;
- height: 400px;
-}
-
-.scaled-image-container > img {
- position: absolute;
- top: 0;
- left: 0;
- image-rendering: -webkit-optimize-contrast;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css
deleted file mode 100644
index 28cfd09ce..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (C) 2011 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:
- * 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. 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 INC. 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.
- */
-
-.non-action-button, .results-view ul.actions, .ui-dialog ul.actions {
- float: right;
- margin: 0;
- padding: 5px 0px;
- list-style: none;
- display: inline-block;
-}
-
-.non-action-button {
- padding: 5px;
-}
-
-.results-view ul.actions.rebaseline-action {
- float: none;
- position: absolute;
- right: 4px;
- top: 7px;
- padding: 0;
-}
-
-.results-view ul.actions li, .ui-dialog ul.actions li {
- display: inline-block;
-}
-
-.results-view h3 ul.actions {
- padding: 2px 0px;
-}
-
-.results-view h3 ul.actions {
- visibility: hidden;
-}
-
-.results-view h3.ui-state-active ul.actions {
- visibility: visible;
-}
-
-.ui-tabs .ui-tabs-panel.results-detail {
- padding: 0px;
-}
-
-.results-grid table {
- table-layout: fixed;
- width: 100%;
- border-collapse: collapse;
-}
-
-.results-grid table td, .results-view table th {
- overflow: hidden;
- vertical-align: top;
-}
-
-.results-grid table th {
- padding: 3px;
- border-top: 1px solid #DDD;
- border-bottom: 1px solid #DDD;
-}
-
-.results-grid .text-result {
- border: none;
- width: 100%;
- height: 400px; /* FIXME: How do we get a reasonable height here? */
-}
-
-.results-grid .image-result {
- width: 100%;
- height: auto;
-}
-
-.results-view .top-panel {
- max-height: 20%;
- overflow: auto;
- position: relative;
- border: 1px solid #EEE;
-}
-
-.results-view .resize-handle {
- height: 5px;
- text-align: center;
- -webkit-user-select: none;
- line-height: 5px;
- cursor: ns-resize;
- font-size: 5px;
- font-weight: bold;
- padding: 1px;
-}
-
-.results-view .resize-handle:before {
- content: '|||';
-}
-
-.results-view .link-title,
-.results-view .active .non-link-title {
- display: none;
-}
-
-.results-view .non-link-title,
-.results-view .active .link-title {
- display: inline-block;
-}
-
-.results-view h3 {
- font-size: 14px;
- font-weight: normal;
- border-top: 1px solid #DDD;
- margin: 0;
- cursor: pointer;
-}
-
-.results-view h3:not(.active):hover {
- background-color: #EEE;
-}
-
-.results-view .active {
- background-color: #CCC;
-}
-
-/* CSS percentages in standards-mode are dumb. You need to have a percentage or fixed height
- all the way up the tree in order to have percentages resolve. */
-html, body, #onebar, .results-view, .test-selector {
- height: 100%;
-}
-
-#results, #perf {
- /* FIXME: We really should use flexbox so we don't have to do this. But that requires restructuring the DOM a bit. */;
- height: -webkit-calc(100% - 39px);
- box-sizing: border-box;
- /* Position relative so that nested percentages size to this element. */
- position: relative;
-}
-
-/*** status console ***/
-.status {
- position: fixed;
- bottom: 0;
- left: 0;
- right: 0;
- height: 100px;
- background-color: white;
- border-top: 1px solid gray;
- -webkit-box-shadow: 0px -2px 10px gray;
- overflow: auto;
- white-space: nowrap;
- padding: 4px;
-}
-
-.status .actions, .status .process-text {
- position: fixed;
- bottom: 0;
- right: 20px;
- margin: 4px;
-}
-
-.processing .actions {
- display: none;
-}
-
-.processing .process-text {
- display: block;
-}
-
-.process-text {
- display: none;
-}
-
-.status-content {
- border-bottom: 1px dashed;
- margin-bottom: 1em;
-}
-
-.status-content:last-child {
- border-bottom: 0;
- margin-bottom: 0;
-}
-
-.flakiness-iframe, .flakiness-iframe-placeholder {
- border: none;
- height: 0;
- width: 100%;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html
deleted file mode 100644
index 510545cef..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html
+++ /dev/null
@@ -1,56 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2011 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:
-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. 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 INC. 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.
-
-The favicons are from the awesome famfamfam.com, which is the website of Mark
-James, a web developer from Birmingham, UK.
--->
-<html>
-<head>
-<title>Mock Summary View</title>
-<link rel="stylesheet" href="http://fonts.googleapis.com/css?family=Open+Sans:400,700">
-<link rel="stylesheet" href="styles/common.css">
-<link rel="stylesheet" href="styles/results.css">
-<link rel="stylesheet" href="styles/notifications.css">
-</head>
-<body>
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="scripts/config.js"></script>
-<script src="scripts/base.js"></script>
-<script src="scripts/net.js"></script>
-<script src="scripts/Trac.js"></script>
-<script src="scripts/Bugzilla.js"></script>
-<script src="scripts/builders.js"></script>
-<script src="scripts/checkout.js"></script>
-<script src="scripts/results.js"></script>
-<script src="scripts/ui.js"></script>
-<script src="scripts/model.js"></script>
-<script src="scripts/ui/actions.js"></script>
-<script src="scripts/ui/failures.js"></script>
-<script src="scripts/ui/notifications.js"></script>
-<script src="scripts/ui/results.js"></script>
-<script src="scripts/controllers.js"></script>
-<script src="scripts/summary-mock.js"></script>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css
deleted file mode 100644
index a71c81f01..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css
+++ /dev/null
@@ -1,382 +0,0 @@
-body {
- margin-bottom:50px;
-}
-
-body, td {
- font-family: Verdana, Cursor;
- font-size: 10px;
- font-weight: bold;
-}
-
-a:link,a:visited,a:active {
- color: #444;
-}
-
-a:hover {
- color: #000000;
-}
-
-table {
- border-spacing: 1px 1px;
-}
-
-table td {
- padding: 3px 0px 3px 0px;
- text-align: center;
-}
-
-.Project {
- width: 100px;
-}
-
-.LastBuild, .Activity {
- padding: 0 0 0 4px;
-}
-
-.LastBuild, .Activity, .Builder, .BuildStep {
- width: 155px;
- max-width: 155px;
-}
-
-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;
- -moz-border-radius: 5px;
-}
-td.Event {
- color: #777;
- background-color: #ddd;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Activity {
- border-top-left-radius: 10px;
- -webkit-border-top-left-radius: 10px;
- -moz-border-radius-topleft: 10px;
- min-height: 20px;
- padding: 2px 0 2px 0;
-}
-
-td.idle, td.waiting, td.offline, td.building {
- border-top-left-radius: 0px;
- -webkit-border-top-left-radius: 0px;
- -moz-border-radius-topleft: 0px;
-}
-
-.LastBuild {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-/* Console view styles */
-
-td.DevRev {
- padding: 4px 8px 4px 8px;
- color: #333333;
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- background-color: #eee;
- width: 1%;
-}
-
-td.DevRevCollapse {
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.DevName {
- padding: 4px 8px 4px 8px;
- color: #333333;
- background-color: #eee;
- width: 1%;
- text-align: left;
-}
-
-td.DevStatus {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.DevSlave {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.first {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
-}
-
-td.last {
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-td.DevStatusCategory {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-width:1px;
- border-style:solid;
-}
-
-td.DevStatusCollapse {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
-}
-
-td.DevDetails {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevComment {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
- background-color: #eee;
- text-align: left;
-}
-
-td.Alt {
- background-color: #CCCCCC;
-}
-
-.legend {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- width: 100px;
- max-width: 100px;
- text-align:center;
- padding: 2px 2px 2px 2px;
- height:14px;
- white-space:nowrap;
-}
-
-.DevStatusBox {
- text-align:center;
- height:20px;
- padding:0 2px;
- line-height:0;
- white-space:nowrap;
-}
-
-.DevStatusBox a {
- opacity: 0.85;
- border-width:1px;
- border-style:solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display:block;
- width:90%;
- height:20px;
- line-height:20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-.DevSlaveBox {
- text-align:center;
- height:10px;
- padding:0 2px;
- line-height:0;
- white-space:nowrap;
-}
-
-.DevSlaveBox a {
- opacity: 0.85;
- border-width:1px;
- border-style:solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display:block;
- width:90%;
- height:10px;
- line-height:20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-a.noround {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- position: relative;
- margin-top: -8px;
- margin-bottom: -8px;
- height: 36px;
- border-top-width: 0;
- border-bottom-width: 0;
-}
-
-a.begin {
- border-top-width:1px;
- position: relative;
- margin-top: 0px;
- margin-bottom: -7px;
- height: 27px;
- border-top-left-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
-}
-
-a.end {
- border-bottom-width:1px;
- position: relative;
- margin-top: -7px;
- margin-bottom: 0px;
- height: 27px;
- border-bottom-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
-}
-
-.center_align {
- text-align: center;
-}
-
-.right_align {
- text-align: right;
-}
-
-.left_align {
- text-align: left;
-}
-
-div.BuildWaterfall {
- border-radius: 7px;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- position: absolute;
- left: 0px;
- top: 0px;
- background-color: #FFFFFF;
- padding: 4px 4px 4px 4px;
- float: left;
- display: none;
- border-width: 1px;
- border-style: solid;
-}
-
-/* LastBuild, BuildStep states */
-.success {
- color: #FFFFFF;
- background-color: #8fdf5f;
- border-color: #4F8530;
-}
-
-.failure {
- color: #FFFFFF;
- background-color: #e98080;
- border-color: #A77272;
-}
-
-.warnings {
- color: #FFFFFF;
- background-color: #ffc343;
- border-color: #C29D46;
-}
-
-.exception, td.offline {
- color: #FFFFFF;
- background-color: #e0b0ff;
- border-color: #ACA0B3;
-}
-
-.start,.running, td.building {
- color: #666666;
- background-color: #fffc6c;
- border-color: #C5C56D;
-}
-
-.start {
- border-bottom-left-radius: 10px;
- -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- border-bottom-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
- -moz-border-radius-bottomright: 10px;
-}
-
-.notstarted {
- border-width:1px;
- border-style:solid;
- border-color:#aaa;
-}
-
-td.Project a:hover, td.start a:hover {
- color: #000;
-}
-
-/* grid styles */
-
-table.Grid {
- border-collapse: collapse;
-}
-
-table.Grid tr td {
- padding: 0.2em;
- margin: 0px;
- text-align: center;
-}
-
-table.Grid tr td.title {
- font-size: 90%;
- border-right: 1px gray solid;
- border-bottom: 1px gray solid;
-}
-
-table.Grid tr td.sourcestamp {
- font-size: 90%;
-}
-
-table.Grid tr td.builder {
- text-align: right;
- font-size: 90%;
-}
-
-table.Grid tr td.build {
- border: 1px gray solid;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/default.css b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/default.css
deleted file mode 100644
index f493a8e07..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/default.css
+++ /dev/null
@@ -1,538 +0,0 @@
-body > hr { display: none; }
-div.content h1 { display: none; }
-
-body.interface {
- margin-top: 20px;
- background: url(bg_gradient.jpg) repeat-x;
- font-family: Verdana, Cursor;
- font-size: 10px;
- font-weight: bold;
- background-color: #fff;
- color: #333;
-}
-
-small {
- font-size: 9px;
-}
-
-.auth {
- position: absolute;
- top: 5px;
- right: 40px;
-}
-
-a:link,a:visited,a:active {
- color: #333;
-}
-
-a:visited {
- color: #557;
-}
-
-table {
- border-spacing: 1px 1px;
-}
-
-table td {
- padding: 3px 2px 3px 2px;
-}
-
-.Project {
- min-width: 6em;
-}
-
-.LastBuild,.Activity {
- padding: 0 0 0 4px;
-}
-
-/* Chromium Specific styles */
-div.BuildResultInfo {
- color: #444;
-}
-
-div.Announcement {
- margin-bottom: 1em;
-}
-
-div.Announcement>a:hover {
- color: black;
-}
-
-div.Announcement>div.Notice {
- background-color: #afdaff;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Open {
- border: 3px solid #8fdf5f;
- padding: 0.5em;
- font-size: 16px;
- text-align: center;
-}
-
-div.Announcement>div.Closed {
- border: 5px solid #e98080;
- padding: 0.5em;
- font-size: 24px;
- font-weight: bold;
- text-align: center;
-}
-
-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;
- -moz-border-radius: 5px;
-}
-
-td.Event {
- color: #777;
- background-color: #ddd;
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-
-td.Activity {
- border-top-left-radius: 10px;
- -webkit-border-top-left-radius: 10px;
- -moz-border-radius-topleft: 10px;
- min-height: 20px;
- padding: 2px 0 2px 0;
-}
-
-td.idle,td.waiting,td.offline,td.building {
- border-top-left-radius: 0px;
- -webkit-border-top-left-radius: 0px;
- -moz-border-radius-topleft: 0px;
-}
-
-.LastBuild {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-/* Console view styles */
-td.DevRev {
- padding: 4px 8px 4px 8px;
- color: #333333;
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
- background-color: #eee;
- width: 1%;
-}
-
-td.DevRevCollapse {
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
-}
-
-td.DevName {
- padding: 4px 8px 4px 8px;
- color: #333333;
- background-color: #eee;
- width: 1%;
- text-align: left;
-}
-
-td.DevStatus {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.DevSlave {
- padding: 4px 4px 4px 4px;
- color: #333333;
- background-color: #eee;
-}
-
-td.first {
- border-top-left-radius: 5px;
- -webkit-border-top-left-radius: 5px;
- -moz-border-radius-topleft: 5px;
-}
-
-td.last {
- border-top-right-radius: 5px;
- -webkit-border-top-right-radius: 5px;
- -moz-border-radius-topright: 5px;
-}
-
-td.DevStatusCategory {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-width: 1px;
- border-style: solid;
-}
-
-td.DevStatusCollapse {
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
-}
-
-td.DevDetails {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- background-color: #eee;
- text-align: left;
-}
-
-td.DevComment {
- font-weight: normal;
- padding: 8px 8px 8px 8px;
- color: #333333;
- border-bottom-right-radius: 5px;
- -webkit-border-bottom-right-radius: 5px;
- -moz-border-radius-bottomright: 5px;
- border-bottom-left-radius: 5px;
- -webkit-border-bottom-left-radius: 5px;
- -moz-border-radius-bottomleft: 5px;
- background-color: #eee;
- text-align: left;
-}
-
-td.Alt {
- background-color: #ddd;
-}
-
-.legend {
- border-radius: 5px;
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- width: 100px;
- max-width: 100px;
- text-align: center;
- padding: 2px 2px 2px 2px;
- height: 14px;
- white-space: nowrap;
-}
-
-.DevStatusBox {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevStatusBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 20px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-.DevSlaveBox {
- text-align: center;
- height: 10px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.DevSlaveBox a {
- opacity: 0.85;
- border-width: 1px;
- border-style: solid;
- border-radius: 4px;
- -webkit-border-radius: 4px;
- -moz-border-radius: 4px;
- display: block;
- width: 90%;
- height: 10px;
- line-height: 20px;
- margin-left: auto;
- margin-right: auto;
-}
-
-a.noround {
- border-radius: 0px;
- -webkit-border-radius: 0px;
- -moz-border-radius: 0px;
- position: relative;
- margin-top: -8px;
- margin-bottom: -8px;
- height: 36px;
- border-top-width: 0;
- border-bottom-width: 0;
-}
-
-a.begin {
- border-top-width: 1px;
- position: relative;
- margin-top: 0px;
- margin-bottom: -7px;
- height: 27px;
- border-top-left-radius: 4px;
- -webkit-border-top-left-radius: 4px;
- -moz-border-radius-topleft: 4px;
- border-top-right-radius: 4px;
- -webkit-border-top-right-radius: 4px;
- -moz-border-radius-topright: 4px;
-}
-
-a.end {
- border-bottom-width: 1px;
- position: relative;
- margin-top: -7px;
- margin-bottom: 0px;
- height: 27px;
- border-bottom-left-radius: 4px;
- -webkit-border-bottom-left-radius: 4px;
- -moz-border-radius-bottomleft: 4px;
- border-bottom-right-radius: 4px;
- -webkit-border-bottom-right-radius: 4px;
- -moz-border-radius-bottomright: 4px;
-}
-
-.center_align {
- text-align: center;
-}
-
-.right_align {
- text-align: right;
-}
-
-.left_align {
- text-align: left;
-}
-
-div.BuildWaterfall {
- border-radius: 7px;
- -webkit-border-radius: 7px;
- -moz-border-radius: 7px;
- position: absolute;
- left: 0px;
- top: 0px;
- background-color: #FFFFFF;
- padding: 4px 4px 4px 4px;
- float: left;
- display: none;
- border-width: 1px;
- border-style: solid;
-}
-
-/* LastBuild, BuildStep states */
-.success {
- color: #FFFFFF;
- background-color: #8FDF5F;
- border-color: #4F8530;
-}
-
-.failure {
- color: #FFFFFF;
- background-color: #E98080;
- border-color: #A77272;
-}
-
-.warnings {
- color: #FFFFFF;
- background-color: #FFC343;
- border-color: #C29D46;
-}
-
-.exception {
- color: #FFFFFF;
- background-color: #E0B0FF;
- border-color: #ACA0B3;
-}
-
-.start,.running,td.building {
- color: #666666;
- background-color: #FFFC6C;
- border-color: #C5C56D;
-}
-
-.offline,td.offline {
- color: #FFFFFF;
- background-color: #E0B0FF;
- border-color: #dddddd;
-}
-
-
-.start {
- border-bottom-left-radius: 10px;
- -webkit-border-bottom-left-radius: 10px;
- -moz-border-radius-bottomleft: 10px;
- border-bottom-right-radius: 10px;
- -webkit-border-bottom-right-radius: 10px;
- -moz-border-radius-bottomright: 10px;
-}
-
-.notstarted {
- border-width: 1px;
- border-style: solid;
- border-color: #aaa;
- background-color: #fff;
-}
-
-.closed {
- background-color: #ff0000;
-}
-
-.closed .large {
- font-size: 1.5em;
- font-weight: bolder;
-}
-
-td.Project a:hover,td.start a:hover {
- color: #000;
-}
-
-.mini-box {
- text-align: center;
- height: 20px;
- padding: 0 2px;
- line-height: 0;
- white-space: nowrap;
-}
-
-.mini-box a {
- border-radius: 0;
- -webkit-border-radius: 0;
- -moz-border-radius: 0;
- display: block;
- width: 100%;
- height: 20px;
- line-height: 20px;
- margin-top: -30px;
-}
-
-.mini-closed {
- -box-sizing: border-box;
- -webkit-box-sizing: border-box;
- border: 4px solid red;
-}
-
-/* grid styles */
-table.Grid {
- border-collapse: collapse;
-}
-
-table.Grid tr td {
- padding: 0.2em;
- margin: 0px;
- text-align: center;
-}
-
-table.Grid tr td.title {
- font-size: 90%;
- border-right: 1px gray solid;
- border-bottom: 1px gray solid;
-}
-
-table.Grid tr td.sourcestamp {
- font-size: 90%;
-}
-
-table.Grid tr td.builder {
- text-align: right;
- font-size: 90%;
-}
-
-table.Grid tr td.build {
- border: 1px gray solid;
-}
-
-/* column container */
-div.column {
- margin: 0 2em 2em 0;
- float: left;
-}
-
-/* info tables */
-table.info {
- border-spacing: 1px;
-}
-
-table.info td {
- padding: 0.1em 1em 0.1em 1em;
- text-align: center;
-}
-
-table.info th {
- padding: 0.2em 1.5em 0.2em 1.5em;
- text-align: center;
-}
-
-table.info td.left {
- text-align: left
-}
-
-.alt {
- background-color: #d6d6d6;
-}
-
-li {
- padding: 0.1em 1em 0.1em 1em;
-}
-
-.result {
- padding: 0.3em 1em 0.3em 1em;
-}
-
-/* log view */
-.log * {
- vlink: #800080;
- font-family: "Courier New", courier, monotype;
-}
-
-span.stdout {
- color: black;
-}
-
-span.stderr {
- color: red;
-}
-
-span.header {
- color: blue;
-}
-
-/* revision & email */
-.revision .full {
- display: none;
-}
-
-.user .email {
- display: none;
-}
-
-/* change comments (use regular colors here) */
-pre.comments>a:link,pre.comments>a:visited {
- color: blue;
-}
-
-pre.comments>a:active {
- color: purple;
-}
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt b/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt
deleted file mode 100644
index 579297cf8..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-User-agent: *
-Disallow: /waterfall
-Disallow: /builders
-Disallow: /changes
-Disallow: /buildslaves
-Disallow: /schedulers
-Disallow: /one_line_per_build
-Disallow: /one_box_per_builder
-Disallow: /xmlrpc
-Disallow: /grid
-Disallow: /tgrid
-Disallow: /console
-Disallow: /results
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/templates/builder.html b/Tools/BuildSlaveSupport/build.webkit.org-config/templates/builder.html
deleted file mode 100644
index f8cf4b8c5..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/templates/builder.html
+++ /dev/null
@@ -1,118 +0,0 @@
-{% from 'build_line.html' import build_table %}
-{% import 'forms.html' as forms %}
-
-{% extends "layout.html" %}
-{% block content %}
-
-<h1>Builder {{ name }}</h1>
-
-<p>(<a href="{{ path_to_root }}waterfall?show={{ name }}">view in waterfall</a>)</p>
-
-<div class="column">
-
-{% if current %}
- <h2>Current Builds:</h2>
- <ul>
- {% for b in current %}
- <li><a href="{{ b.link }}">{{ b.num }}</a>
- {% if b.when %}
- ETA: {{ b.when_time }} [{{ b.when }}]
- {% endif %}
-
- {{ b.current_step }}
-
- {% if authz.advertiseAction('stopBuild', request) %}
- {{ forms.stop_build(b.stop_url, authz, on_all=False, short=True, label='Build') }}
- {% endif %}
- </li>
- {% endfor %}
- </ul>
-{% else %}
- <h2>No current builds</h2>
-{% endif %}
-
-{% if pending %}
- <h2>Pending Build Requests:</h2>
- <ul>
- {% for b in pending %}
- <li><small>({{ b.when }}, waiting {{ b.delay }})</small>
-
- {% if authz.advertiseAction('cancelPendingBuild', request) %}
- {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=True, id=b.id) }}
- {% endif %}
-
- {% if b.num_changes < 4 %}
- {% for c in b.changes %}{{ c.revision|shortrev(c.repo) }}
- (<a href="{{ c.url }}">{{ c.who }}</a>){% if not loop.last %},{% endif %}
- {% endfor %}
- {% else %}
- ({{ b.num_changes }} changes)
- {% endif %}
-
- {% if 'owner' in b.properties %}
- <b>Forced build</b>
- by {{b.properties['owner'][0]}}
- <small>{{b.properties['reason'][0]}}</small>
- {% endif %}
- </li>
- {% endfor %}
- </ul>
-
- {% if authz.advertiseAction('cancelPendingBuild', request) %}
- {{ forms.cancel_pending_build(builder_url+"/cancelbuild", authz, short=False, id='all') }}
- {% endif %}
-
-{% else %}
- <h2>No Pending Build Requests</h2>
-{% endif %}
-
-<h2>Recent Builds:</h2>
-
-{{ build_table(recent) }}
-( Show: <a href="{{ builder_url }}">default</a>
-{% for count in [25, 50, 100, 200] %}
-<a href="{{ builder_url }}?numbuilds={{ count }}">{{ count }}</a>
-{% endfor %})
-
-</div>
-<div class="column">
-
-<h2>Buildslaves:</h2>
-<table class="info">
-{% if slaves %}
-<tr>
- <th>Name</th>
- <th>Status</th>
- <th>Admin</th>
-</tr>
-{% endif %}
-{% for s in slaves %}
- <tr class="{{ loop.cycle('alt', '') }}">
- <td><b><a href="{{ s.link|e }}">{{ s.name|e }}</a></b></td>
- {% if s.connected %}
- <td class="idle">connected</td>
- <td>{{ s.admin|email if s.admin else ""}}</td>
- {% else %}
- <td class="offline">offline</td>
- <td/>
- {% endif %}
- </tr>
-{% else %}
- <td>no slaves attached</td>
-{% endfor %}
-</table>
-
-{% if authz.advertiseAction('pingBuilder', request) %}
- <h2>Ping slaves</h2>
- {{ forms.ping_builder(builder_url+"/ping", authz) }}
-{% endif %}
-
-{% if authz.advertiseAction('forceBuild', request) and force_schedulers != {} %}
- <h2>Force build</h2>
- {{ forms.force_build(builder_url+"/force", authz, request, False, force_schedulers=force_schedulers,default_props=default_props) }}
-{% endif %}
-
-</div>
-
-{% endblock %}
-
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/templates/root.html b/Tools/BuildSlaveSupport/build.webkit.org-config/templates/root.html
deleted file mode 100755
index 6dc51f2f4..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/templates/root.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<title>Welcome to the Buildbot</title>
-</head>
-
-<body>
-<h1>Welcome to the Buildbot!</h1>
-
-<ul>
- <li><a href="console">Console</a> - <a href="console?category=AppleMac">Apple Mac</a>, <a href="console?category=AppleWin">Apple Windows</a>,
- <a href="console?category=GTK">GTK+</a>, <a href="console?category=Qt">Qt</a>, <a href="console?category=EFL">EFL</a>
- and <a href="console?category=misc">miscellaneous</a></li>
- <li><a href="waterfall">Waterfall Display</a>, a time-oriented summary of recent buildbot activity
- - <a href="waterfall?category=AppleMac">Apple Mac</a>, <a href="waterfall?category=AppleWin">Apple Windows</a>,
- <a href="waterfall?category=GTK">GTK+</a>, <a href="waterfall?category=Qt">Qt</a>, <a href="waterfall?category=EFL">EFL</a>
- and <a href="waterfall?category=misc">miscellaneous</a></li>
- <li><a href="one_box_per_builder">Latest Build</a> for each builder is here.</li>
- <li><a href="one_line_per_build">Recent Builds</a> are summarized here, one per line.</li>
- <li><a href="buildslaves">Buildslave</a> information</li>
- <li><a href="http://webkit-queues.appspot.com/">Early Warning System and Commit Queue Status</a> (External site)</li>
- <li><a href="changes">ChangeSource</a> information.</li>
- <li><a href="results">Test Results</a></li>
- <li><a href="LeaksViewer">Leaks Viewer</a></li>
- <li><a href="TestFailures">Test Failures</a></li>
- <li><a href="http://perf.webkit.org/">WebKit Perf Monitor</a> results submitted by <a href="http://build.webkit.org/waterfall?show=Apple%20Lion%20Release%20%28Perf%29&show=Apple%20MountainLion%20Release%20%28Perf%29&show=Qt%20Linux%2064-bit%20Release%20%28Perf%29&show=Qt%20Linux%2064-bit%20Release%20%28WebKit2%20Perf%29&show=EFL%20Linux%2064-bit%20Release%20WK2%20%28Perf%29">performance bots</a></li>
-</ul>
-</body>
-</html>
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild.py b/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild.py
deleted file mode 100644
index de94d0029..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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.
-
-"""Functions relating to building WebKit"""
-
-import re
-
-
-def _should_file_trigger_build(target_platform, file):
- # The directories and patterns lists below map directory names or
- # regexp patterns to the bot platforms for which they should trigger a
- # build. Mapping to the empty list means that no builds should be
- # triggered on any platforms. Earlier directories/patterns take
- # precendence over later ones.
-
- # FIXME: The patterns below have only been verified to be correct on
- # the platforms listed below. We should implement this for other platforms
- # and start using it for their bots. Someone familiar with each platform
- # will have to figure out what the right set of directories/patterns is for
- # that platform.
- assert(target_platform in ("mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard", "win"))
-
- directories = [
- # Directories that shouldn't trigger builds on any bots.
- ("Examples", []),
- ("PerformanceTests", []),
- ("ManualTests", []),
- ("Tools/BuildSlaveSupport/build.webkit.org-config/public_html", []),
- ("Websites", []),
- ("efl", []),
- ("iphone", []),
- ("opengl", []),
- ("opentype", []),
- ("openvg", []),
- ("wince", []),
- ("wx", []),
-
- # Directories that should trigger builds on only some bots.
- ("LayoutTests/platform/mac", ["mac", "win"]),
- ("cairo", ["gtk", "wincairo"]),
- ("cf", ["mac", "qt", "win"]),
- ("cocoa", ["mac"]),
- ("curl", ["gtk", "wincairo"]),
- ("gobject", ["gtk"]),
- ("gpu", ["mac"]),
- ("gstreamer", ["gtk"]),
- ("gtk", ["gtk"]),
- ("mac", ["mac"]),
- ("mac-leopard", ["mac-leopard"]),
- ("mac-lion", ["mac-leopard", "mac-lion", "mac-snowleopard", "win"]),
- ("mac-snowleopard", ["mac-leopard", "mac-snowleopard"]),
- ("mac-wk2", ["mac-lion", "mac-snowleopard", "mac-mountainlion", "win"]),
- ("objc", ["mac"]),
- ("qt", ["qt"]),
- ("soup", ["gtk"]),
- ("win", ["win"]),
- ]
- patterns = [
- # Patterns that shouldn't trigger builds on any bots.
- (r"(?:^|/)ChangeLog.*$", []),
- (r"(?:^|/)Makefile$", []),
- (r"/ARM", []),
- (r"/CMake.*", []),
- (r"/LICENSE[^/]+$", []),
- (r"ARM(?:v7)?\.(?:cpp|h)$", []),
- (r"MIPS\.(?:cpp|h)$", []),
- (r"WinCE\.(?:cpp|h|mm)$", []),
- (r"\.(?:bkl|mk)$", []),
-
- # Patterns that should trigger builds on only some bots.
- (r"(?:^|/)GNUmakefile\.am$", ["gtk"]),
- (r"Mac\.(?:cpp|h|mm)$", ["mac"]),
- (r"\.(?:vcproj|vsprops|sln|vcxproj|props|filters)$", ["win"]),
- (r"\.exp(?:\.in)?$", ["mac"]),
- (r"\.order$", ["mac"]),
- (r"\.pr[io]$", ["qt"]),
- (r"\.(?:vcproj|vcxproj)/", ["win"]),
- (r"\.xcconfig$", ["mac"]),
- (r"\.xcodeproj/", ["mac"]),
- ]
-
- base_platform = target_platform.split("-")[0]
-
- # See if the file is in one of the known directories.
- for directory, platforms in directories:
- if re.search(r"(?:^|/)%s/" % directory, file):
- return target_platform in platforms or base_platform in platforms
-
- # See if the file matches a known pattern.
- for pattern, platforms in patterns:
- if re.search(pattern, file):
- return target_platform in platforms or base_platform in platforms
-
- # See if the file is a platform-specific test result.
- match = re.match("LayoutTests/platform/(?P<platform>[^/]+)/", file)
- if match:
- # See if the file is a test result for this platform, our base
- # platform, or one of our sub-platforms.
- return match.group("platform") in (target_platform, base_platform) or match.group("platform").startswith("%s-" % target_platform)
-
- # The file isn't one we know about specifically, so we should assume we
- # have to build.
- return True
-
-
-def should_build(target_platform, changed_files):
- """Returns true if the changed files affect the given platform, and
- thus a build should be performed. target_platform should be one of the
- platforms used in the build.webkit.org master's config.json file."""
- return any(_should_file_trigger_build(target_platform, file) for file in changed_files)
diff --git a/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py b/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py
deleted file mode 100644
index 220b59052..000000000
--- a/Tools/BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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 unittest
-import wkbuild
-
-
-class ShouldBuildTest(unittest.TestCase):
- _should_build_tests = [
- (["ChangeLog", "Source/WebCore/ChangeLog", "Source/WebKit2/ChangeLog-2011-02-11"], []),
- (["GNUmakefile.am", "Source/WebCore/GNUmakefile.am"], ["gtk"]),
- (["Websites/bugs.webkit.org/foo", "Source/WebCore/bar"], ["*"]),
- (["Websites/bugs.webkit.org/foo"], []),
- (["Source/JavaScriptCore/JavaScriptCore.xcodeproj/foo"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard"]),
- (["Source/JavaScriptCore/JavaScriptCore.vcproj/foo", "Source/WebKit2/win/WebKit2.vcproj", "Source/WebKit/win/WebKit.sln", "Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops"], ["win"]),
- (["LayoutTests/platform/mac/foo", "Source/WebCore/bar"], ["*"]),
- (["LayoutTests/foo"], ["*"]),
- (["LayoutTests/canvas/philip/tests/size.attributes.parse.exp-expected.txt", "LayoutTests/canvas/philip/tests/size.attributes.parse.exp.html"], ["*"]),
- (["LayoutTests/platform/mac-leopard/foo"], ["mac-leopard"]),
- (["LayoutTests/platform/mac-lion/foo"], ["mac-leopard", "mac-lion", "mac-snowleopard", "win"]),
- (["LayoutTests/platform/mac-snowleopard/foo"], ["mac-leopard", "mac-snowleopard"]),
- (["LayoutTests/platform/mac-wk2/Skipped"], ["mac-lion", "mac-mountainlion", "mac-snowleopard", "win"]),
- (["LayoutTests/platform/mac/foo"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard", "win"]),
- (["LayoutTests/platform/win-xp/foo"], ["win"]),
- (["LayoutTests/platform/win-wk2/foo"], ["win"]),
- (["LayoutTests/platform/win/foo"], ["win"]),
- (["Source/WebCore.exp.in", "Source/WebKit/mac/WebKit.exp"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard"]),
- (["Source/WebCore/mac/foo"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard"]),
- (["Source/WebCore/win/foo"], ["win"]),
- (["Source/WebCore/platform/graphics/gpu/foo"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard"]),
- (["Source/WebCore/platform/wx/wxcode/win/foo"], []),
- (["Source/WebCore/rendering/RenderThemeMac.mm", "Source/WebCore/rendering/RenderThemeMac.h"], ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard"]),
- (["Source/WebCore/rendering/RenderThemeWinCE.h"], []),
- (["Tools/BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js"], []),
- ]
-
- def test_should_build(self):
- for files, platforms in self._should_build_tests:
- # FIXME: We should test more platforms here once
- # wkbuild._should_file_trigger_build is implemented for them.
- for platform in ["mac-leopard", "mac-lion", "mac-mountainlion", "mac-snowleopard", "win"]:
- should_build = platform in platforms or "*" in platforms
- self.assertEqual(wkbuild.should_build(platform, files), should_build, "%s should%s have built but did%s (files: %s)" % (platform, "" if should_build else "n't", "n't" if should_build else "", str(files)))
-
-# FIXME: We should run this file as part of test-rm .
-# Unfortunately test-rm currently requires that unittests
-# be located in a directory with a valid module name.
-# 'build.webkit.org-config' is not a valid module name (due to '.' and '-')
-# so for now this is a stand-alone test harness.
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/BuildSlaveSupport/built-product-archive b/Tools/BuildSlaveSupport/built-product-archive
deleted file mode 100644
index 57f235638..000000000
--- a/Tools/BuildSlaveSupport/built-product-archive
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2012 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:
-#
-# 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 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 optparse
-import os
-import shutil
-import subprocess
-import sys
-import zipfile
-
-_buildDirectory = None
-
-
-def main():
- parser = optparse.OptionParser("usage: %prog [options] [action]")
- parser.add_option("--platform", dest="platform")
- parser.add_option("--debug", action="store_const", const="debug", dest="configuration")
- parser.add_option("--release", action="store_const", const="release", dest="configuration")
-
- options, (action, ) = parser.parse_args()
- if not options.platform:
- parser.error("Platform is required")
- return 1
- if not options.configuration:
- parser.error("Configuration is required")
- return 1
- if action not in ('archive', 'extract'):
- parser.error("Action is required")
- return 1
-
- genericPlatform = options.platform.split('-', 1)[0]
- if not determineWebKitBuildDirectory(genericPlatform, options.configuration):
- print >> sys.stderr, "Could not determine build directory"
- return 1
-
- if action == 'archive':
- return archiveBuiltProduct(options.configuration, genericPlatform, options.platform)
- else:
- return extractBuiltProduct(options.configuration, genericPlatform)
-
-
-def determineWebKitBuildDirectory(platform, configuration):
- global _buildDirectory
- _buildDirectory = subprocess.Popen(['perl', os.path.join(os.path.dirname(__file__), "..", "Scripts", "webkit-build-directory"),
- "--" + platform, "--" + configuration, '--top-level'], stdout=subprocess.PIPE).communicate()[0].strip()
- return _buildDirectory
-
-
-def removeDirectoryIfExists(thinDirectory):
- if os.path.isdir(thinDirectory):
- shutil.rmtree(thinDirectory)
-
-
-def copyBuildFiles(source, destination, patterns):
- shutil.copytree(source, destination, ignore=shutil.ignore_patterns(*patterns))
-
-
-def createZipManually(directoryToZip, archiveFile):
- archiveZip = zipfile.ZipFile(archiveFile, "w")
-
- for path, dirNames, fileNames in os.walk(directoryToZip):
- relativePath = os.path.relpath(path, directoryToZip)
- for fileName in fileNames:
- archiveZip.write(os.path.join(path, fileName), os.path.join(relativePath, fileName))
-
- archiveZip.close()
-
-
-def createZip(directoryToZip, configuration, archiveConfigurationOnMac=False):
- archiveDir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "WebKitBuild"))
- archiveFile = os.path.join(archiveDir, configuration + ".zip")
-
- try:
- os.unlink(archiveFile)
- except OSError, e:
- if e.errno != 2:
- raise
-
- if sys.platform == 'darwin':
- if archiveConfigurationOnMac:
- return subprocess.call(["ditto", "-c", "-k", "--keepParent", "--sequesterRsrc", directoryToZip, archiveFile])
- return subprocess.call(["ditto", "-c", "-k", "--sequesterRsrc", directoryToZip, archiveFile])
- elif sys.platform == 'cygwin':
- return subprocess.call(["zip", "-r", archiveFile, "bin32"], cwd=directoryToZip)
- elif sys.platform == 'win32':
- createZipManually(directoryToZip, archiveFile)
- return 0
- elif sys.platform.startswith('linux'):
- return subprocess.call(["zip", "-y", "-r", archiveFile, "."], cwd=directoryToZip)
-
-
-def archiveBuiltProduct(configuration, platform, fullPlatform):
- assert platform in ('mac', 'win', 'qt', 'gtk', 'efl')
-
- configurationBuildDirectory = os.path.join(_buildDirectory, configuration.title())
-
- if platform == 'mac':
- return createZip(configurationBuildDirectory, configuration, archiveConfigurationOnMac=True)
- elif platform == 'win':
- binDirectory = os.path.join(configurationBuildDirectory, "bin32")
- thinDirectory = os.path.join(configurationBuildDirectory, "thin")
- thinBinDirectory = os.path.join(thinDirectory, "bin32")
-
- removeDirectoryIfExists(thinDirectory)
- copyBuildFiles(binDirectory, thinBinDirectory, ['*.ilk'])
- if createZip(thinDirectory, configuration):
- return 1
-
- shutil.rmtree(thinDirectory)
-
- elif platform == 'qt' or platform == 'gtk' or platform == 'efl':
- thinDirectory = os.path.join(configurationBuildDirectory, "thin")
-
- removeDirectoryIfExists(thinDirectory)
- os.mkdir(thinDirectory)
-
- if platform == 'qt' or platform == 'efl':
- neededDirectories = ["bin", "lib"]
- elif platform == 'gtk':
- neededDirectories = ["Programs", ".libs", "Libraries", "TestNetscapePlugin"]
-
- for dirname in neededDirectories:
- fromDir = os.path.join(configurationBuildDirectory, dirname, ".")
- toDir = os.path.join(thinDirectory, dirname)
- os.makedirs(toDir)
- if subprocess.call('cp -R %s %s' % (fromDir, toDir), shell=True):
- return 1
-
- for root, dirs, files in os.walk(thinDirectory, topdown=False):
- for name in files:
- if name.endswith(".o"):
- os.remove(os.path.join(root, name))
-
- if createZip(thinDirectory, configuration):
- return 1
-
-def unzipArchive(directoryToExtractTo, configuration):
- archiveDir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "WebKitBuild"))
- assert os.path.isdir(archiveDir)
- archiveFile = os.path.join(archiveDir, configuration + ".zip")
-
- if sys.platform == 'darwin':
- if subprocess.call(["ditto", "-x", "-k", archiveFile, directoryToExtractTo]):
- return 1
- elif sys.platform == 'cygwin' or sys.platform.startswith('linux'):
- if subprocess.call(["unzip", "-o", archiveFile], cwd=directoryToExtractTo):
- return 1
- elif sys.platform == 'win32':
- archive = zipfile.ZipFile(archiveFile, "r")
- archive.extractall(directoryToExtractTo)
- archive.close()
-
- os.unlink(archiveFile)
-
-
-def extractBuiltProduct(configuration, platform):
- assert platform in ('mac', 'win', 'qt', 'gtk', 'efl')
-
- archiveFile = os.path.join(_buildDirectory, configuration + ".zip")
- configurationBuildDirectory = os.path.join(_buildDirectory, configuration.title())
-
- removeDirectoryIfExists(configurationBuildDirectory)
- os.makedirs(configurationBuildDirectory)
-
- if platform == 'mac':
- return unzipArchive(_buildDirectory, configuration)
- elif platform == 'win':
- binDirectory = os.path.join(configurationBuildDirectory, "bin32")
- os.makedirs(binDirectory)
-
- safariPath = subprocess.Popen('cygpath -w "$PROGRAMFILES"/Safari',
- shell=True, stdout=subprocess.PIPE).communicate()[0].strip()
-
- if subprocess.call('cp -R "%s"/*.dll "%s"/*.resources %s' % (safariPath, safariPath, binDirectory), shell=True):
- return 1
-
- return unzipArchive(configurationBuildDirectory, configuration)
- elif platform == 'qt' or platform == 'gtk' or platform == 'efl':
- print "Extracting", configurationBuildDirectory
- return unzipArchive(configurationBuildDirectory, configuration)
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/BuildSlaveSupport/delete-stale-build-files b/Tools/BuildSlaveSupport/delete-stale-build-files
deleted file mode 100755
index d4c50d727..000000000
--- a/Tools/BuildSlaveSupport/delete-stale-build-files
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2013 Apple Inc. All rights reserved.
-# Copyright (C) 2012 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:
-#
-# 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 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 optparse
-import os
-import subprocess
-import sys
-
-
-def main():
- parser = optparse.OptionParser("usage: %prog [options]")
- parser.add_option("--platform")
- parser.add_option("--build-directory")
- parser.add_option("--debug", action="store_const", const="debug", dest="configuration")
- parser.add_option("--release", action="store_const", const="release", dest="configuration")
-
- options, parameters = parser.parse_args()
- if not options.platform:
- parser.error("Platform is required")
- return -1
- if not options.configuration:
- parser.error("Configuration is required")
- return -2
-
- genericPlatform = options.platform.split('-', 1)[0]
- if genericPlatform != 'mac':
- print 'Exited without removing any files.'
- return 0
-
- if options.build_directory:
- buildDirectory = options.build_directory
- else:
- buildDirectory = webkitBuildDirectory(genericPlatform, options.configuration)
-
- exit_code = 0
-
- for root, _, files in os.walk(buildDirectory):
- for name in files:
- full_path = os.path.join(root, name)
- ext = os.path.splitext(full_path)[1]
-
- try:
- if ext not in ('.o', '.d') or os.path.getsize(full_path):
- continue
- except OSError as exception:
- print exception
- continue
-
- try:
- os.remove(full_path)
- print 'Removed', full_path
- except OSError as exception:
- print exception
- exit_code += 1
-
- return exit_code
-
-
-def webkitBuildDirectory(platform, configuration):
- return subprocess.Popen(['perl', os.path.join(os.path.dirname(__file__), "..", "Scripts", "webkit-build-directory"),
- "--" + platform, "--" + configuration, '--top-level'], stdout=subprocess.PIPE).communicate()[0].strip()
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/BuildSlaveSupport/download-built-product b/Tools/BuildSlaveSupport/download-built-product
deleted file mode 100644
index 4be30a11a..000000000
--- a/Tools/BuildSlaveSupport/download-built-product
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2012 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:
-#
-# 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 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 optparse
-import os
-import subprocess
-import sys
-import urllib
-
-
-def main():
- parser = optparse.OptionParser("usage: %prog [options] [url]")
- parser.add_option("--platform", dest="platform")
- parser.add_option("--debug", action="store_const", const="debug", dest="configuration")
- parser.add_option("--release", action="store_const", const="release", dest="configuration")
-
- options, (url, ) = parser.parse_args()
-
- archiveDir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..", "WebKitBuild"))
- if not os.path.isdir(archiveDir):
- os.makedirs(archiveDir)
- archivePath = os.path.join(archiveDir, "%s.zip" % options.configuration)
-
- if sys.platform == 'win32': # curl is not availble on Windows (outside of cygwin)
- urllib.urlretrieve(url, archivePath)
- return 0
-
- return subprocess.call(["curl", "--fail", "--output", archivePath, url])
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/BuildSlaveSupport/gtk/README b/Tools/BuildSlaveSupport/gtk/README
deleted file mode 100644
index 16fa9e75b..000000000
--- a/Tools/BuildSlaveSupport/gtk/README
+++ /dev/null
@@ -1,48 +0,0 @@
-==============================================
- Running a GTK+ build slave under daemontools
-==============================================
-
-This directory contains several scripts which can be used to run a WebKitGTK+
-build slave under daemontools [1]. This is convenient because daemontools
-will automatically restart services when they die, and that means less human
-intervention is needed.
-
-
-Dependencies
-============
-
-In order to use the provided service control files, you will need the
-following:
-
-* The GNU Bash shell (the scripts contain some bash-isms)
-
-* The daemontools package (or one of its drop-in replacements, like runit
- or freedt; but only daemontools has been tested so far).
-
-In short, in a Debian-based system you can ensure you have the needed bits
-with the following command:
-
- apt-get install daemontools-run
-
-
-Setup
-=====
-
-1. Follow the instructions at http://trac.webkit.org/wiki/BuildBot
-
-2. Install the dependencies outlined above.
-
-3. Copy "daemontools-buildbot.conf" to "/etc/daemontools-buildbot.conf"
-
-4. Edit the configuration file to suit your needs, the comments should
- be self-explanatory.
-
-5. Drop the "buildbot" and "pulseaudio" directories to the service control directory of
- daemontools; for Debian-based setups that would be "/etc/service"
-
-
-References
-==========
-
-[1] http://cr.yp.to/daemontools.html
-
diff --git a/Tools/BuildSlaveSupport/gtk/buildbot/log/run b/Tools/BuildSlaveSupport/gtk/buildbot/log/run
deleted file mode 100755
index cc2c87e20..000000000
--- a/Tools/BuildSlaveSupport/gtk/buildbot/log/run
+++ /dev/null
@@ -1,38 +0,0 @@
-#! /bin/bash
-#
-# Copyright (C) 2010 Igalia S.L. All rights reserved.
-#
-# 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.
-
-: ${BUILDBOT_CONFIG:=/etc/daemontools-buildbot.conf}
-
-# Read configuration file
-[ -r "${BUILDBOT_CONFIG}" ] && . "${BUILDBOT_CONFIG}"
-
-: ${buildbot_user:=${HOME}}
-: ${buildbot_log_path:=/var/log/buildbot}
-
-# Expand all "env_*" environment variables
-for varname in ${!env_*} ; do
- eval "export ${varname#env_}=\${${varname}}"
-done
-
-mkdir -p "${buildbot_log_path}"
-chown "${buildbot_user}" "${buildbot_log_path}"
-
-exec /usr/bin/setuidgid "${buildbot_user}" \
- /usr/bin/multilog t "${buildbot_log_path}"
-
diff --git a/Tools/BuildSlaveSupport/gtk/buildbot/run b/Tools/BuildSlaveSupport/gtk/buildbot/run
deleted file mode 100755
index b26fe5888..000000000
--- a/Tools/BuildSlaveSupport/gtk/buildbot/run
+++ /dev/null
@@ -1,77 +0,0 @@
-#! /bin/bash
-#
-# Copyright (C) 2010 Igalia S.L. All rights reserved.
-#
-# 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.
-
-exec 2>&1
-
-: ${BUILDBOT_CONFIG:=/etc/daemontools-buildbot.conf}
-
-# Read configuration file
-[ -r "${BUILDBOT_CONFIG}" ] && . "${BUILDBOT_CONFIG}"
-
-# Expand all "env_*" environment variables
-for varname in ${!env_*} ; do
- eval "export ${varname#env_}=\${${varname}}"
-done
-
-
-if ! [ "${buildbot_path}" ] ; then
- echo "No \${buildbot_path} defined! (will sleep for 5 minutes)"
- sleep 300
- exit 111
-fi
-
-
-if ! [ "${WEBKIT_TESTFONTS}" ] ; then
- echo "No \${WEBKIT_TESTFONTS} environment variable! (will sleep for 5 minutes)"
- sleep 300
- exit 111
-fi
-
-
-if [ "${coredump_output:=''}" ] ; then
- # Ensure that the output directory exists.
- if [[ ! -d ${crashmon_output} ]] ; then
- mkdir -p "${crashmon_output}"
- fi
-
- ulimit -c "${crashmon_max_size:=unlimited}"
-fi
-
-
-if [ "${ccache_path}" ] ; then
- export PATH="${ccache_path}:${PATH}"
-fi
-
-: ${buildbot_user:=${USER}}
-
-cd "${buildbot_path}"
-exec /usr/bin/env - \
- TERM=dumb \
- TZ=PST8PDT \
- PATH="${PATH}" \
- SHELL=/bin/bash \
- LANG=en_US.UTF-8 \
- USER="${buildbot_user}" \
- LOGNAME="${buildbot_user}" \
- HOME="/home/${buildbot_user}" \
- DISPLAY="${xvfb_display:-':10'}" \
- MAIL="/var/mail/${buildbot_user}" \
- /usr/bin/setuidgid "${buildbot_user}" \
- /usr/bin/twistd -noy buildbot.tac
-
diff --git a/Tools/BuildSlaveSupport/gtk/daemontools-buildbot.conf b/Tools/BuildSlaveSupport/gtk/daemontools-buildbot.conf
deleted file mode 100644
index 06af29f7b..000000000
--- a/Tools/BuildSlaveSupport/gtk/daemontools-buildbot.conf
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2010 Igalia S.L. All rights reserved.
-#
-# 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.
-
-
-# Path to the Buildbot slave directory
-#
-buildbot_path="/home/slave/webkitgtk"
-
-# User account used to run Buildbot.
-#
-buildbot_user="slave"
-
-# Path to a directory where to log Buildbot output
-#
-buildbot_log_path="/var/log/buildbot"
-
-
-# If you want to use ccache, set a path to where synlinks with tool
-# names pointing to ccache are installed. In Debian systems this
-# would be /usr/lib/ccache. Set to empty to disable.
-#
-ccache_path="/usr/lib/ccache"
-
-
-# Environment variables. Prefix them with "env_".
-#
-env_CFLAGS="-pipe"
-env_CXXFLAGS="-pipe"
-env_LDFLAGS="-no-install -no-fast-install"
-env_WEBKIT_TESTFONTS="/home/${buildbot_user}/testfonts"
-
diff --git a/Tools/BuildSlaveSupport/gtk/pulseaudio/run b/Tools/BuildSlaveSupport/gtk/pulseaudio/run
deleted file mode 100755
index 37ba0de08..000000000
--- a/Tools/BuildSlaveSupport/gtk/pulseaudio/run
+++ /dev/null
@@ -1,24 +0,0 @@
-#! /bin/bash
-#
-# Copyright (C) 2010 Igalia S.L. All rights reserved.
-#
-# 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.
-
-exec 2>&1
-exec /usr/bin/pulseaudio --system \
- --disallow-exit --disallow-module-loading \
- --log-target=syslog
-
diff --git a/Tools/BuildSlaveSupport/kill-old-processes b/Tools/BuildSlaveSupport/kill-old-processes
deleted file mode 100755
index 359967fe9..000000000
--- a/Tools/BuildSlaveSupport/kill-old-processes
+++ /dev/null
@@ -1,119 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2010 Apple Inc. All rights reserved.
-# Copyright (C) 2011 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:
-#
-# 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 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
-
-
-def main():
- tasksToKillWin = [
- "cl.exe",
- "devenv.com",
- "devenv.exe",
- "DumpRenderTree.exe",
- "DumpRenderTree_debug.exe",
- "httpd.exe",
- "imagediff.exe",
- "imagediff_debug.exe",
- "jsc.exe",
- "jsc_debug.exe",
- "LightTPD.exe",
- "link.exe",
- "midl.exe",
- "perl.exe",
- "Safari.exe",
- "svn.exe",
- "testapi.exe",
- "testapi_debug.exe",
- "VcBuildHelper.exe",
- "wdiff.exe",
- "WebKit2WebProcess.exe",
- "WebKit2WebProcess_debug.exe",
- "WebKitTestRunner.exe",
- "WebKitTestRunner_debug.exe",
- ]
-
- tasksToKillMac = [
- "apache2",
- "cc1plus",
- "cc1objplus",
- "clang",
- r"clang\\+\\+",
- "gcc-4.2",
- "httpd",
- "i686-apple-darwin10-gcc-4.2.1",
- "jsc",
- "make",
- "pboard", # FIXME: https://bugs.webkit.org/show_bug.cgi?id=81012
- "per5.12",
- "perl",
- "Problem Reporter",
- "ruby",
- "Safari Web Content",
- "Safari",
- "svn",
- "DumpRenderTree",
- "TestWebKitAPI Web Content",
- "TestWebKitAPI",
- "WebKitPluginAgen", # FIXME: Why no 't'?
- "WebKitTestRunner Web Content",
- "WebKitTestRunner",
- "WebProcess",
- "xcodebuild",
- ]
-
- taskToKillUnix = [
- "apache2",
- "cc1plus",
- "DumpRenderTree",
- "gold",
- "httpd",
- "ld",
- "make",
- "ruby",
- "svn",
- "webkit_unit_tests",
- "WebKitTestRunner",
- "Xvfb",
- ]
-
- if sys.platform == 'darwin':
- for task in tasksToKillMac:
- os.system("killall -9 -v -m " + task)
- # Kill all instances of python executing run-webkit-tests
- os.system("ps aux | grep -E '.+/Python .+(run_webkit_tests|run-webkit-tests)' | grep -v grep | awk '{print $2}' | xargs kill")
- elif sys.platform == 'cygwin' or sys.platform == 'win32':
- for task in tasksToKillWin:
- os.system("taskkill /t /f /im " + task)
- elif sys.platform.startswith('linux'):
- for task in taskToKillUnix:
- os.system("killall -9 -v " + task)
- os.system("ps aux | grep -P '.+/python .+(run_webkit_tests|run-webkit-tests)' | grep -v grep | awk '{print $2}' | xargs kill")
- else:
- sys.exit()
- # FIXME: Should we return an exit code based on how the kills went?
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/BuildSlaveSupport/test-result-archive b/Tools/BuildSlaveSupport/test-result-archive
deleted file mode 100644
index 402df6574..000000000
--- a/Tools/BuildSlaveSupport/test-result-archive
+++ /dev/null
@@ -1,90 +0,0 @@
-#!/usr/bin/python
-
-# 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 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 optparse, os, shutil, subprocess, sys
-
-sourceRootDirectory = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
-archiveFile = os.path.join(sourceRootDirectory, "layout-test-results.zip")
-
-def main():
- parser = optparse.OptionParser("usage: %prog [options] [action]")
- parser.add_option("--platform", dest="platform")
- parser.add_option("--debug", action="store_const", const="debug", dest="configuration")
- parser.add_option("--release", action="store_const", const="release", dest="configuration")
-
- options, (action, ) = parser.parse_args()
- if not options.platform:
- parser.error("Platform is required")
- if not options.configuration:
- parser.error("Configuration is required")
- if action not in ('archive'):
- parser.error("Action is required")
-
- layoutTestResultsDir = os.path.abspath(os.path.join(sourceRootDirectory, "layout-test-results"))
- return archiveTestResults(options.configuration, options.platform, layoutTestResultsDir)
-
-def archiveTestResults(configuration, platform, layoutTestResultsDir):
- assert platform in ('mac', 'win', 'wincairo', 'gtk', 'qt', 'efl')
-
- try:
- os.unlink(archiveFile)
- except OSError, e:
- if e.errno != 2:
- raise
-
- try:
- # Ensure that layoutTestResultsDir exists since we cannot archive a directory that does not exist
- os.makedirs(layoutTestResultsDir)
- except OSError, e:
- if e.errno != 17:
- raise
-
- open(os.path.join(layoutTestResultsDir, '.placeholder'), 'w').close()
-
- if platform == 'mac':
- if subprocess.call(["ditto", "-c", "-k", "--sequesterRsrc", layoutTestResultsDir, archiveFile]):
- return 1
- elif platform in ('win', 'wincairo', 'gtk', 'qt', 'efl'):
- if subprocess.call(["zip", "-r", archiveFile, "."], cwd=layoutTestResultsDir):
- return 1
-
- try:
- shutil.rmtree(layoutTestResultsDir)
- except OSError, e:
-
- # Python in Cygwin throws a mysterious exception with errno of 90
- # when removing the layout test result directory after successfully
- # deleting its contents, claiming "Directory not empty".
- # We can safely ignore this since it was the directory contents that
- # we are most interested in deleting.
- # Python in Cygwin will also sometimes throw errno 2 if a process is
- # holding a file open. There's no point in failing to create the
- # archive just because some other process is behaving badly. See
- # <http://webkit.org/b/55581>.
- if e.errno != 90 and e.errno != 2:
- raise
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/BuildSlaveSupport/wait-for-SVN-server.py b/Tools/BuildSlaveSupport/wait-for-SVN-server.py
deleted file mode 100755
index f093024a1..000000000
--- a/Tools/BuildSlaveSupport/wait-for-SVN-server.py
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2006 John Pye
-# Copyright (C) 2012 University of Szeged
-#
-# This script 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
-
-from optparse import OptionParser
-import exceptions
-import sys
-import time
-import xml.dom.minidom
-import os
-import subprocess
-
-
-def getLatestSVNRevision(SVNServer):
- try:
- p = subprocess.Popen(["svn", "log", "--non-interactive", "--verbose", "--xml", "--limit=1", SVNServer], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
- response = p.communicate()[0]
- doc = xml.dom.minidom.parseString(response)
- el = doc.getElementsByTagName("logentry")[0]
- return el.getAttribute("revision")
- except xml.parsers.expat.ExpatError, e:
- print "FAILED TO PARSE 'svn log' XML:"
- print str(e)
- print "----"
- print "RECEIVED TEXT:"
- print response
- sys.exit(1)
-
-
-def waitForSVNRevision(SVNServer, revision):
- if not revision or not revision.isdigit():
- latestRevision = int(getLatestSVNRevision(SVNServer))
- print "Latest SVN revision on %s is r%d. Don't wait, because revision argument isn't a valid SVN revision." % (SVNServer, latestRevision)
- return
-
- revision = int(revision)
- while True:
- latestRevision = int(getLatestSVNRevision(SVNServer))
- if latestRevision < revision:
- print "Latest SVN revision on %s is r%d, but we are waiting for r%d. Sleeping for 5 seconds." % (SVNServer, latestRevision, revision)
- time.sleep(5)
- else:
- print "Latest SVN revision on %s is r%d, which is newer or equal than r%d." % (SVNServer, latestRevision, revision)
- break
-
-
-if __name__ == '__main__':
- parser = OptionParser()
- parser.add_option("-r", "--revision", dest="revision", help="SVN revision number")
- parser.add_option("-s", "--svn-server", dest="SVNServer", help="SVN server")
- options, args = parser.parse_args()
- waitForSVNRevision(options.SVNServer, options.revision)
diff --git a/Tools/BuildSlaveSupport/win/kill-old-processes b/Tools/BuildSlaveSupport/win/kill-old-processes
deleted file mode 100755
index d04b990cf..000000000
--- a/Tools/BuildSlaveSupport/win/kill-old-processes
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/python
-
-# Copyright (C) 2010 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 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
-
-def main():
- tasksToKill = [ "cl.exe",
- "devenv.com",
- "devenv.exe",
- "DumpRenderTree.exe",
- "DumpRenderTree_debug.exe",
- "httpd.exe",
- "imagediff.exe",
- "imagediff_debug.exe",
- "jsc.exe",
- "jsc_debug.exe",
- "LightTPD.exe",
- "link.exe",
- "midl.exe",
- "perl.exe",
- "Safari.exe",
- "svn.exe",
- "testapi.exe",
- "testapi_debug.exe",
- "VcBuildHelper.exe",
- "wdiff.exe",
- "WebKit2WebProcess.exe",
- "WebKit2WebProcess_debug.exe",
- "WebKitTestRunner.exe",
- "WebKitTestRunner_debug.exe"]
-
- for task in tasksToKill:
- os.system("taskkill /t /f /im " + task)
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/CLWrapper/CLWrapper.cpp b/Tools/CLWrapper/CLWrapper.cpp
deleted file mode 100644
index 7d41f2b71..000000000
--- a/Tools/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/Tools/CLWrapper/CLWrapper.sln b/Tools/CLWrapper/CLWrapper.sln
deleted file mode 100644
index add042399..000000000
--- a/Tools/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/Tools/CLWrapper/CLWrapper.vcproj b/Tools/CLWrapper/CLWrapper.vcproj
deleted file mode 100644
index db1c14bb1..000000000
--- a/Tools/CLWrapper/CLWrapper.vcproj
+++ /dev/null
@@ -1,201 +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"
- AdditionalOptions="/SAFESEH"
- 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"
- AdditionalOptions="/SAFESEH"
- 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/Tools/CMakeLists.txt b/Tools/CMakeLists.txt
index 5ce79a9fc..8598a4da7 100644
--- a/Tools/CMakeLists.txt
+++ b/Tools/CMakeLists.txt
@@ -1,26 +1,41 @@
-if (ENABLE_WEBKIT2 AND NOT("${PORT}" STREQUAL "GTK"))
- add_subdirectory(WebKitTestRunner)
-endif ()
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
if ("${PORT}" STREQUAL "Efl")
- add_subdirectory(ImageDiff)
- add_subdirectory(EWebLauncher/ControlTheme)
-
- if (ENABLE_WEBKIT)
- add_subdirectory(DumpRenderTree/efl)
- add_subdirectory(EWebLauncher)
+ if (DEVELOPER_MODE)
+ add_subdirectory(WebKitTestRunner)
+ add_subdirectory(ImageDiff)
+ if (ENABLE_X11_TARGET)
+ add_subdirectory(DumpRenderTree/TestNetscapePlugIn)
+ endif ()
endif ()
- if (ENABLE_WEBKIT2)
- add_subdirectory(MiniBrowser/efl)
+ if (ENABLE_MINIBROWSER)
+ add_subdirectory(MiniBrowser/efl)
endif ()
- add_subdirectory(DumpRenderTree/TestNetscapePlugIn)
elseif ("${PORT}" STREQUAL "GTK")
- if (ENABLE_WEBKIT2)
+ if (DEVELOPER_MODE)
+ add_subdirectory(WebKitTestRunner)
+ add_subdirectory(ImageDiff)
+ if (ENABLE_API_TESTS)
+ add_subdirectory(TestWebKitAPI/Tests/WebKit2Gtk)
+ endif ()
+ if (ENABLE_X11_TARGET)
+ add_subdirectory(DumpRenderTree/TestNetscapePlugIn)
+ endif ()
+ endif ()
+
+ if (ENABLE_MINIBROWSER)
add_subdirectory(MiniBrowser/gtk)
endif ()
-elseif ("${PORT}" STREQUAL "WinCE")
- add_subdirectory(WinCELauncher)
+endif ()
+
+if (WIN32)
+ #add_subdirectory(DumpRenderTree)
+ # TODO: Enable when Qt port ready
+ if (NOT "${PORT}" STREQUAL "Qt")
+ add_subdirectory(TestWebKitAPI)
+ add_subdirectory(MiniBrowser/win)
+ endif ()
endif ()
if (ENABLE_WEBKIT2 AND ENABLE_API_TESTS)
diff --git a/Tools/CSSTestSuiteHarness/harness/harness.css b/Tools/CSSTestSuiteHarness/harness/harness.css
deleted file mode 100644
index 3f4c97d71..000000000
--- a/Tools/CSSTestSuiteHarness/harness/harness.css
+++ /dev/null
@@ -1,308 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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.
- */
-
-body {
- font-family: Helvetica, sans-serif;
- background-color: #DDD;
-}
-
-.controls {
- border: 1px solid black;
- width: 300px;
- height: 660px;
- float: left;
- font-size: smaller;
- padding: 4px;
-}
-
-.controls div {
- margin: 4px;
-}
-
-.controls select {
- width: 100%;
-}
-
-.details > div {
- margin: 4px 0;
-}
-
-.test-type {
- float: left;
-}
-
-.name > button {
- margin-top: 20px;
- float: right;
-}
-
-.actions {
- margin-left: 320px;
- border: 1px solid black;
- font-size: smaller;
- height: 30px;
- padding: 4px;
- margin-bottom: 8px;
-}
-
-.actions button {
- font-size: 13px;
- width: 5em;
-}
-
-.note {
- display: inline-block;
- font-size: 10px;
- margin-left: 5px;
- color: gray;
-}
-.action-buttons {
- float: right;
-}
-
-#test-content {
- margin-left: 320px;
- height: 612px;
- border: 1px solid black;
- padding: 4px;
- background-color: white;
-}
-
-.info > div {
- margin: 6px 0;
-}
-
-.info .title {
- font-size: larger;
- font-weight: bold;
-}
-
-.info .url {
- font-family: monospace;
-}
-
-.info .assertion, .info .flags {
- font-size: smaller;
-}
-
-#warning {
- padding-left: 1em;
- color: red;
- display: none;
-}
-
-#print-button {
- float: right;
- display: none;
-}
-
-#test-content.print {
-}
-
-#test-content.print #print-button {
- display: inline;
-}
-
-#test-content.warn #warning {
- display: inline;
-}
-
-#test-content iframe {
- border: 1px solid gray;
- margin: 2px;
-}
-
-#test-content h2 {
- font-size: 11pt;
- margin: 2px 0 2px 0;
- color: darkgray;
-}
-
-#test-list > option.untested {
-}
-
-#test-list > option.pass {
- color: rgba(0, 128, 0, 0.6);
-}
-
-#test-list > option.fail {
- color: rgba(255, 0, 0, 0.6);
-}
-
-#test-list > option.skipped {
- color: rgba(255, 128, 0, 0.6);
-}
-
-#test-content.with-ref {
-}
-
-.frame-wrapper {
-
-}
-
-.frame-wrapper iframe {
- width: 98%;
- height: 460px;
-}
-
-.frame-wrapper {
- height: 500px;
- width: 99%;
- display: inline-block;
-}
-
-.with-ref > .frame-wrapper {
- width: 49%;
-}
-
-#ref-wrapper {
- height: 500px;
- width: 49%;
- display: none;
-}
-
-.with-ref > #ref-wrapper {
- display: inline-block;
-}
-
-.results {
- border: 1px solid black;
- padding: 4px;
- margin-top: 6px;
-}
-
-#output {
- border: 1px solid black;
- font-size: smaller;
- height: 220px;
- margin: 4px;
- padding: 4px;
- overflow-y: auto;
- background-color: white;
-}
-
-#output > p {
- margin: 0;
-}
-#output .pass {
- color: green;
-}
-
-#output .fail {
- color: red;
-}
-
-#output .skipped {
- color: orange;
-}
-
-#output .invalid {
- background: red;
-}
-
-.output-options {
- float: right;
- border: 1px solid black;
- width: 200px;
- height: 220px;
- margin: 4px;
- padding: 4px;
- font-size: smaller;
-}
-
-.output-options select {
- width: 90%;
-}
-
-.summary {
- font-size: smaller;
- margin: 4px;
-}
-
-.summary .label {
- display: inline-block;
- min-width: 5em;
- margin: 0;
-}
-
-.summary span {
- display: inline-block;
- min-width: 3em;
- text-align: right;
- margin: 0;
-}
-
-.summary td {
- text-align: right;
- padding: 4px;
-}
-
-.custom button {
- display: block;
- margin: 12px 0;
-}
-
-/* Overlay */
-
-#overlay {
- position: fixed;
- top: 0;
- left: 0;
- bottom: 0;
- right: 0;
- background-color: rgba(0, 0, 0, 0.6);
- display: none;
-}
-
-#overlay.visible {
- display: block;
-}
-
-.overlay-contents {
- position: relative;
- background-color: white;
- margin: 50px auto;
- width: 1000px;
- padding: 20px;
-}
-
-.overlay-contents textarea {
- width: 90em;
- height: 50em;
-}
-.overlay-contents .buttons {
- text-align: right;
-}
-
-.overlay-contents .note {
- float: left;
-}
-
-.overlay-contents .buttons button {
- font-size: 13px;
- width: 6em;
- margin: 12px 8px;
-}
-
diff --git a/Tools/CSSTestSuiteHarness/harness/harness.html b/Tools/CSSTestSuiteHarness/harness/harness.html
deleted file mode 100644
index 3877f497b..000000000
--- a/Tools/CSSTestSuiteHarness/harness/harness.html
+++ /dev/null
@@ -1,262 +0,0 @@
-<!--
-/*
- * Copyright (C) 2010 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. 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 INC. 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.
- */
--->
-
-<!DOCTYPE html>
-<html>
- <head>
- <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
- <title>CSS 2.1 Test Harness</title>
- <link rel="stylesheet" href="harness.css" type="text/css" media="screen" charset="utf-8">
-
- <script src="http://code.jquery.com/jquery-1.4.2.min.js" type="text/javascript" charset="utf-8"></script>
- <script src="harness.js" type="text/javascript" charset="utf-8"></script>
-
- <script type="text/javascript" charset="utf-8">
- var gTestSuite;
- function setupTests()
- {
- gTestSuite = new TestSuite();
- }
-
- window.addEventListener('load', setupTests, false);
-
- function skipTest()
- {
- gTestSuite.skipTest(document.getElementById('skip-reason').value);
- }
-
- function invalidTest()
- {
- gTestSuite.invalidTest();
- }
-
- function failTest()
- {
- gTestSuite.failTest();
- }
-
- function passTest()
- {
- gTestSuite.passTest();
- }
-
- function goToNextUntested()
- {
- gTestSuite.goToNextIncompleteTest();
- }
-
- function goToTest()
- {
- var testName = prompt('Go to test:', '');
-
- // This accepts any of the following:
- // at-charset-010
- // at-charset-010.xht
- // xhtml1/at-charset-010
- // xhtml1/at-charset-010.xht
- // and will choose the format if specified.
- if (!gTestSuite.goToTestByName(testName))
- alert('Failed to find test ' + testName);
- }
-
- function formatChanged()
- {
- var newFormat;
- if (document.harness.format.html4.checked)
- newFormat = 'html4';
- else
- newFormat = 'xhtml1';
- gTestSuite.formatChanged(newFormat);
- }
-
- function testSelected()
- {
- var list = document.getElementById('test-list')
- if (list.selectedIndex >= 0)
- gTestSuite.goToTestIndex(list.selectedIndex);
- else
- gTestSuite.clearTest();
- }
-
- function resultsPopupChanged(popup)
- {
- gTestSuite.resultsPopupChanged(popup.selectedIndex);
- }
-
- function doExport()
- {
- gTestSuite.exportResults(document.getElementById('results-popup').selectedIndex);
- }
-
- function printTestIframe()
- {
- var testFrame = document.getElementById('test-frame');
- testFrame.contentWindow.print();
- }
-
- var gOverlayConfirmCallback;
- function showOverlay(overlayConfirmCallback)
- {
- document.getElementById('overlay-data').value = '';
- gOverlayConfirmCallback = overlayConfirmCallback;
- $('#overlay').addClass('visible');
- }
-
- function overlayCancel()
- {
- $('#overlay').removeClass('visible');
- }
-
- function overlayConfirm()
- {
- var data = document.getElementById('overlay-data').value;
- gOverlayConfirmCallback(data);
- $('#overlay').removeClass('visible');
- }
-
- function doImport()
- {
- document.getElementById('overlay-action').innerText = 'Enter results to import (in the same format as the exported results):';
- showOverlay(function(data) {
- gTestSuite.importResults(data);
- });
- }
-
- function doClear()
- {
- document.getElementById('overlay-action').innerText = 'Enter list of tests for which to clear results (so they can be re-tested):';
- showOverlay(function(data) {
- gTestSuite.clearResults(data);
- });
- }
- </script>
-
-</head>
-<body>
-
- <div class="controls">
- <form name="harness" onsubmit="return false;">
- <select id="chapters">
- <option>Test category</option>
- </select>
- <div class="progress">
- <div><span id="test-index">1</span> of <span id="chapter-test-count">200</span> unique tests</div>
- </div>
- <div class="details">
- <div class="name">
- <div class="test-type">
- <input type="radio" name="format" id="html4" onchange="formatChanged()" checked><label for="html4">HTML4</label><br>
- <input type="radio" name="format" id="xhtml1" onchange="formatChanged()"><label for="xhtml1">XHTML1</label>
- </div>
- <button onclick="goToNextUntested()" accesskey="n"><strong>N</strong>ext Untested</button>
- <button onclick="goToTest()" accesskey="g">Go to Test...</button>
- </div>
- </div>
-
- <div>
- <select id="test-list" size="40" onchange="testSelected()"></select>
- </div>
- </form>
- </div>
-
- <div class="actions">
- <span>Skip reason:</span> <input type="text" id="skip-reason" size="50">
- <button onclick="skipTest()" accesskey="s"><strong>S</strong>kip</button>
- <div class="note">Use <i>Control-Option-letter</i> to<br> trigger buttons via the keyboard.</div>
- <div class="action-buttons">
- <button onclick="invalidTest()" accesskey="i">Invalid</button>
- <button onclick="failTest()" accesskey="f"><strong>F</strong>ail</button>
- <button onclick="passTest()" accesskey="p"><strong>P</strong>ass</button>
- </div>
- </div>
- <div id="test-content">
- <div class="info">
- <div class="title">Title: <span id="test-title"></span></div>
- <div class="url">URL: <span id="test-url"></span></div>
- <div class="assertion">Assertion: <span id="test-assertion"></span></div>
- <div class="flags">Flags: <span id="test-flags"></span>
- <span id="warning">This test must be run over HTTP.</span>
- <button id="print-button" onclick="printTestIframe()">Print Preview</button>
- </div>
- </div>
-
- <div id="test-wrapper" class="frame-wrapper">
- <h2>Test</h2>
- <iframe id="test-frame"></iframe>
- </div>
- <div id="ref-wrapper" class="frame-wrapper">
- <h2>Reference</h2>
- <iframe id="ref-frame"></iframe>
- </div>
- </div>
-
- <div class="results">
-
- <div class="output-options">
- <p>Show results for:</p>
- <select id="results-popup" onchange="resultsPopupChanged(this)">
- </select>
- <div>
- <button id="export-button" onclick="doExport()">Export...</button>
- </div>
-
- <div class="custom">
- <button id="import-button" onclick="doImport()">Import...</button>
- <button id="import-button" onclick="doClear()">Clear Results...</button>
- </div>
- </div>
-
- <div id="output"></div>
- <div class="summary">
- <table>
- <tr>
- <th></th><th>Passed</th><th>Failed</th><th>Skipped</th><th>Invalid</th><th>Tested</th><th>Total</th><th>% done</th>
- </tr>
- <tr>
- <td class="label">HTML4:</td><td id="h-passed"></td><td id="h-failed"></td><td id="h-skipped"></td><td id="h-invalid"></td><td id="h-tested"></td><td id="h-total"></td><td id="h-percent"></td>
- </tr>
- <tr>
- <td class="label">XHTML1:</td><td id="x-passed"></td><td id="x-failed"></td><td id="x-skipped"></td><td id="x-invalid"></td><td id="x-tested"></td><td id="x-total"></td><td id="x-percent"></td>
- </tr>
- </table>
- </div>
- </div>
-
- <div id="overlay">
-
- <div class="overlay-contents">
- <p id="overlay-action"></p>
- <textarea id="overlay-data"></textarea>
- <p class="note">Pasting many lines of text here can be very slow in Safari 5. You can quit Safari and use a <a href="http://nightly.webkit.org/" title="WebKit Nightly Builds">WebKit nightly build</a> for importing or clearing.</p>
- <div class="buttons">
- <button onclick="overlayCancel()">Cancel</button><button onclick="overlayConfirm()">OK</button>
- </div>
- </div>
-
- </div>
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/CSSTestSuiteHarness/harness/harness.js b/Tools/CSSTestSuiteHarness/harness/harness.js
deleted file mode 100644
index ed7cb7d35..000000000
--- a/Tools/CSSTestSuiteHarness/harness/harness.js
+++ /dev/null
@@ -1,1902 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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.
- */
-
-// requires jQuery
-
-const kTestSuiteVersion = '20101001';
-const kTestSuiteHome = '../' + kTestSuiteVersion + '/';
-const kTestInfoDataFile = 'testinfo.data';
-
-const kChapterData = [
- {
- 'file' : 'about.html',
- 'title' : 'About the CSS 2.1 Specification',
- },
- {
- 'file' : 'intro.html',
- 'title' : 'Introduction to CSS 2.1',
- },
- {
- 'file' : 'conform.html',
- 'title' : 'Conformance: Requirements and Recommendations',
- },
- {
- 'file' : "syndata.html",
- 'title' : 'Syntax and basic data types',
- },
- {
- 'file' : 'selector.html' ,
- 'title' : 'Selectors',
- },
- {
- 'file' : 'cascade.html',
- 'title' : 'Assigning property values, Cascading, and Inheritance',
- },
- {
- 'file' : 'media.html',
- 'title' : 'Media types',
- },
- {
- 'file' : 'box.html' ,
- 'title' : 'Box model',
- },
- {
- 'file' : 'visuren.html',
- 'title' : 'Visual formatting model',
- },
- {
- 'file' :'visudet.html',
- 'title' : 'Visual formatting model details',
- },
- {
- 'file' : 'visufx.html',
- 'title' : 'Visual effects',
- },
- {
- 'file' : 'generate.html',
- 'title' : 'Generated content, automatic numbering, and lists',
- },
- {
- 'file' : 'page.html',
- 'title' : 'Paged media',
- },
- {
- 'file' : 'colors.html',
- 'title' : 'Colors and Backgrounds',
- },
- {
- 'file' : 'fonts.html',
- 'title' : 'Fonts',
- },
- {
- 'file' : 'text.html',
- 'title' : 'Text',
- },
- {
- 'file' : 'tables.html',
- 'title' : 'Tables',
- },
- {
- 'file' : 'ui.html',
- 'title' : 'User interface',
- },
- {
- 'file' : 'aural.html',
- 'title' : 'Appendix A. Aural style sheets',
- },
- {
- 'file' : 'refs.html',
- 'title' : 'Appendix B. Bibliography',
- },
- {
- 'file' : 'changes.html',
- 'title' : 'Appendix C. Changes',
- },
- {
- 'file' : 'sample.html',
- 'title' : 'Appendix D. Default style sheet for HTML 4',
- },
- {
- 'file' : 'zindex.html',
- 'title' : 'Appendix E. Elaborate description of Stacking Contexts',
- },
- {
- 'file' : 'propidx.html',
- 'title' : 'Appendix F. Full property table',
- },
- {
- 'file' : 'grammar.html',
- 'title' : 'Appendix G. Grammar of CSS',
- },
- {
- 'file' : 'other.html',
- 'title' : 'Other',
- },
-];
-
-
-const kHTML4Data = {
- 'path' : 'html4',
- 'suffix' : '.htm'
-};
-
-const kXHTML1Data = {
- 'path' : 'xhtml1',
- 'suffix' : '.xht'
-};
-
-// Results popup
-const kResultsSelector = [
- {
- 'name': 'All Tests',
- 'handler' : function(self) { self.showResultsForAllTests(); },
- 'exporter' : function(self) { self.exportResultsForAllTests(); }
- },
- {
- 'name': 'Completed Tests',
- 'handler' : function(self) { self.showResultsForCompletedTests(); },
- 'exporter' : function(self) { self.exportResultsForCompletedTests(); }
- },
- {
- 'name': 'Passing Tests',
- 'handler' : function(self) { self.showResultsForTestsWithStatus('pass'); },
- 'exporter' : function(self) { self.exportResultsForTestsWithStatus('pass'); }
- },
- {
- 'name': 'Failing Tests',
- 'handler' : function(self) { self.showResultsForTestsWithStatus('fail'); },
- 'exporter' : function(self) { self.exportResultsForTestsWithStatus('fail'); }
- },
- {
- 'name': 'Skipped Tests',
- 'handler' : function(self) { self.showResultsForTestsWithStatus('skipped'); },
- 'exporter' : function(self) { self.exportResultsForTestsWithStatus('skipped'); }
- },
- {
- 'name': 'Invalid Tests',
- 'handler' : function(self) { self.showResultsForTestsWithStatus('invalid'); },
- 'exporter' : function(self) { self.exportResultsForTestsWithStatus('invalid'); }
- },
- {
- 'name': 'Tests where HTML4 and XHTML1 results differ',
- 'handler' : function(self) { self.showResultsForTestsWithMismatchedResults(); },
- 'exporter' : function(self) { self.exportResultsForTestsWithMismatchedResults(); }
- },
- {
- 'name': 'Tests Not Run',
- 'handler' : function(self) { self.showResultsForTestsNotRun(); },
- 'exporter' : function(self) { self.exportResultsForTestsNotRun(); }
- }
-];
-
-function Test(testInfoLine)
-{
- var fields = testInfoLine.split('\t');
-
- this.id = fields[0];
- this.reference = fields[1];
- this.title = fields[2];
- this.flags = fields[3];
- this.links = fields[4];
- this.assertion = fields[5];
-
- this.paged = false;
- this.testHTML = true;
- this.testXHTML = true;
-
- if (this.flags) {
- this.paged = this.flags.indexOf('paged') != -1;
-
- if (this.flags.indexOf('nonHTML') != -1)
- this.testHTML = false;
-
- if (this.flags.indexOf('HTMLonly') != -1)
- this.testXHTML = false;
- }
-
- this.completedHTML = false; // true if this test has a result (pass, fail or skip)
- this.completedXHTML = false; // true if this test has a result (pass, fail or skip)
-
- this.statusHTML = '';
- this.statusXHTML = '';
-
- if (!this.links)
- this.links = "other.html"
-}
-
-Test.prototype.runForFormat = function(format)
-{
- if (format == 'html4')
- return this.testHTML;
-
- if (format == 'xhtml1')
- return this.testXHTML;
-
- return true;
-}
-
-Test.prototype.completedForFormat = function(format)
-{
- if (format == 'html4')
- return this.completedHTML;
-
- if (format == 'xhtml1')
- return this.completedXHTML;
-
- return true;
-}
-
-Test.prototype.statusForFormat = function(format)
-{
- if (format == 'html4')
- return this.statusHTML;
-
- if (format == 'xhtml1')
- return this.statusXHTML;
-
- return true;
-}
-
-function ChapterSection(link)
-{
- var result= link.match(/^([.\w]+)(#.+)?$/);
- if (result != null) {
- this.file = result[1];
- this.anchor = result[2];
- }
-
- this.testCountHTML = 0;
- this.testCountXHTML = 0;
-
- this.tests = [];
-}
-
-ChapterSection.prototype.countTests = function()
-{
- this.testCountHTML = 0;
- this.testCountXHTML = 0;
-
- for (var i = 0; i < this.tests.length; ++i) {
- var currTest = this.tests[i];
-
- if (currTest.testHTML)
- ++this.testCountHTML;
-
- if (currTest.testXHTML)
- ++this.testCountXHTML;
- }
-}
-
-function Chapter(chapterInfo)
-{
- this.file = chapterInfo.file;
- this.title = chapterInfo.title;
- this.testCountHTML = 0;
- this.testCountXHTML = 0;
- this.sections = []; // array of ChapterSection
-}
-
-Chapter.prototype.description = function(format)
-{
-
-
- return this.title + ' (' + this.testCount(format) + ' tests, ' + this.untestedCount(format) + ' untested)';
-}
-
-Chapter.prototype.countTests = function()
-{
- this.testCountHTML = 0;
- this.testCountXHTML = 0;
-
- for (var i = 0; i < this.sections.length; ++i) {
- var currSection = this.sections[i];
-
- currSection.countTests();
-
- this.testCountHTML += currSection.testCountHTML;
- this.testCountXHTML += currSection.testCountXHTML;
- }
-}
-
-Chapter.prototype.testCount = function(format)
-{
- if (format == 'html4')
- return this.testCountHTML;
-
- if (format == 'xhtml1')
- return this.testCountXHTML;
-
- return 0;
-}
-
-Chapter.prototype.untestedCount = function(format)
-{
- var completedProperty = format == 'html4' ? 'completedHTML' : 'completedXHTML';
-
- var count = 0;
- for (var i = 0; i < this.sections.length; ++i) {
- var currSection = this.sections[i];
- for (var j = 0; j < currSection.tests.length; ++j) {
- count += currSection.tests[j].completedForFormat(format) ? 0 : 1;
- }
- }
- return count;
-
-}
-
-// Utils
-String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); }
-
-function TestSuite()
-{
- this.chapterSections = {}; // map of links to ChapterSections
- this.tests = {}; // map of test id to test info
-
- this.chapters = {}; // map of file name to chapter
- this.currentChapter = null;
-
- this.currentChapterTests = []; // array of tests for the current chapter.
- this.currChapterTestIndex = -1; // index of test in the current chapter
-
- this.format = '';
- this.formatChanged('html4');
-
- this.testInfoLoaded = false;
-
- this.populatingDatabase = false;
-
- var testInfoPath = kTestSuiteHome + kTestInfoDataFile;
- this.loadTestInfo(testInfoPath);
-}
-
-TestSuite.prototype.loadTestInfo = function(testInfoPath)
-{
- var _self = this;
- this.asyncLoad(testInfoPath, 'data', function(data, status) {
- _self.testInfoDataLoaded(data, status);
- });
-}
-
-TestSuite.prototype.testInfoDataLoaded = function(data, status)
-{
- if (status != 'success') {
- alert("Failed to load testinfo.data. Database of tests will not be initialized.");
- return;
- }
-
- this.parseTests(data);
- this.buildChapters();
-
- this.testInfoLoaded = true;
-
- this.fillChapterPopup();
-
- this.initializeControls();
-
- this.openDatabase();
-}
-
-TestSuite.prototype.parseTests = function(data)
-{
- var lines = data.split('\n');
-
- // First line is column labels
- for (var i = 1; i < lines.length; ++i) {
- var test = new Test(lines[i]);
- if (test.id.length > 0)
- this.tests[test.id] = test;
- }
-}
-
-TestSuite.prototype.buildChapters = function()
-{
- for (var testID in this.tests) {
- var currTest = this.tests[testID];
-
- // FIXME: tests with more than one link will be presented to the user
- // twice. Be smarter about avoiding this.
- var testLinks = currTest.links.split(',');
- for (var i = 0; i < testLinks.length; ++i) {
- var link = testLinks[i];
- var section = this.chapterSections[link];
- if (!section) {
- section = new ChapterSection(link);
- this.chapterSections[link] = section;
- }
-
- section.tests.push(currTest);
- }
- }
-
- for (var i = 0; i < kChapterData.length; ++i) {
- var chapter = new Chapter(kChapterData[i]);
- chapter.index = i;
- this.chapters[chapter.file] = chapter;
- }
-
- for (var sectionName in this.chapterSections) {
- var section = this.chapterSections[sectionName];
-
- var file = section.file;
- var chapter = this.chapters[file];
- if (!chapter)
- window.console.log('failed to find chapter ' + file + ' in chapter data.');
- chapter.sections.push(section);
- }
-
- for (var chapterName in this.chapters) {
- var currChapter = this.chapters[chapterName];
- currChapter.sections.sort();
- currChapter.countTests();
- }
-}
-
-TestSuite.prototype.indexOfChapter = function(chapter)
-{
- for (var i = 0; i < kChapterData.length; ++i) {
- if (kChapterData[i].file == chapter.file)
- return i;
- }
-
- window.console.log('indexOfChapter for ' + chapter.file + ' failed');
- return -1;
-}
-
-TestSuite.prototype.chapterAtIndex = function(index)
-{
- if (index < 0 || index >= kChapterData.length)
- return null;
-
- return this.chapters[kChapterData[index].file];
-}
-
-TestSuite.prototype.fillChapterPopup = function()
-{
- var select = document.getElementById('chapters')
- select.innerHTML = ''; // Remove all children.
-
- for (var i = 0; i < kChapterData.length; ++i) {
- var chapterData = kChapterData[i];
- var chapter = this.chapters[chapterData.file];
-
- var option = document.createElement('option');
- option.innerText = chapter.description(this.format);
- option._chapter = chapter;
-
- select.appendChild(option);
- }
-}
-
-TestSuite.prototype.updateChapterPopup = function()
-{
- var select = document.getElementById('chapters')
- var currOption = select.firstChild;
-
- for (var i = 0; i < kChapterData.length; ++i) {
- var chapterData = kChapterData[i];
- var chapter = this.chapters[chapterData.file];
- if (!chapter)
- continue;
- currOption.innerText = chapter.description(this.format);
- currOption = currOption.nextSibling;
- }
-}
-
-TestSuite.prototype.buildTestListForChapter = function(chapter)
-{
- this.currentChapterTests = this.testListForChapter(chapter);
-}
-
-TestSuite.prototype.testListForChapter = function(chapter)
-{
- var testList = [];
-
- for (var i in chapter.sections) {
- var currSection = chapter.sections[i];
-
- for (var j = 0; j < currSection.tests.length; ++j) {
- var currTest = currSection.tests[j];
- if (currTest.runForFormat(this.format))
- testList.push(currTest);
- }
- }
-
- // FIXME: test may occur more than once.
- testList.sort(function(a, b) {
- return a.id.localeCompare(b.id);
- });
-
- return testList;
-}
-
-TestSuite.prototype.initializeControls = function()
-{
- var chaptersPopup = document.getElementById('chapters');
-
- var _self = this;
- chaptersPopup.addEventListener('change', function() {
- _self.chapterPopupChanged();
- }, false);
-
- this.chapterPopupChanged();
-
- // Results popup
- var resultsPopup = document.getElementById('results-popup');
- resultsPopup.innerHTML = '';
-
- for (var i = 0; i < kResultsSelector.length; ++i) {
- var option = document.createElement('option');
- option.innerText = kResultsSelector[i].name;
-
- resultsPopup.appendChild(option);
- }
-}
-
-TestSuite.prototype.chapterPopupChanged = function()
-{
- var chaptersPopup = document.getElementById('chapters');
- var selectedChapter = chaptersPopup.options[chaptersPopup.selectedIndex]._chapter;
-
- this.setSelectedChapter(selectedChapter);
-}
-
-TestSuite.prototype.fillTestList = function()
-{
- var statusProperty = this.format == 'html4' ? 'statusHTML' : 'statusXHTML';
-
- var testList = document.getElementById('test-list');
- testList.innerHTML = '';
-
- for (var i = 0; i < this.currentChapterTests.length; ++i) {
- var currTest = this.currentChapterTests[i];
-
- var option = document.createElement('option');
- option.innerText = currTest.id;
- option.className = currTest[statusProperty];
- option._test = currTest;
- testList.appendChild(option);
- }
-}
-
-TestSuite.prototype.updateTestList = function()
-{
- var statusProperty = this.format == 'html4' ? 'statusHTML' : 'statusXHTML';
- var testList = document.getElementById('test-list');
-
- var options = testList.getElementsByTagName('option');
- for (var i = 0; i < options.length; ++i) {
- var currOption = options[i];
- currOption.className = currOption._test[statusProperty];
- }
-}
-
-TestSuite.prototype.setSelectedChapter = function(chapter)
-{
- this.currentChapter = chapter;
- this.buildTestListForChapter(this.currentChapter);
- this.currChapterTestIndex = -1;
-
- this.fillTestList();
- this.goToTestIndex(0);
-
- var chaptersPopup = document.getElementById('chapters');
- chaptersPopup.selectedIndex = this.indexOfChapter(chapter);
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.passTest = function()
-{
- this.recordResult(this.currentTestName(), 'pass');
- this.nextTest();
-}
-
-TestSuite.prototype.failTest = function()
-{
- this.recordResult(this.currentTestName(), 'fail');
- this.nextTest();
-}
-
-TestSuite.prototype.invalidTest = function()
-{
- this.recordResult(this.currentTestName(), 'invalid');
- this.nextTest();
-}
-
-TestSuite.prototype.skipTest = function(reason)
-{
- this.recordResult(this.currentTestName(), 'skipped', reason);
- this.nextTest();
-}
-
-TestSuite.prototype.nextTest = function()
-{
- if (this.currChapterTestIndex < this.currentChapterTests.length - 1)
- this.goToTestIndex(this.currChapterTestIndex + 1);
- else {
- var currChapterIndex = this.indexOfChapter(this.currentChapter);
- this.goToChapterIndex(currChapterIndex + 1);
- }
-}
-
-TestSuite.prototype.previousTest = function()
-{
- if (this.currChapterTestIndex > 0)
- this.goToTestIndex(this.currChapterTestIndex - 1);
- else {
- var currChapterIndex = this.indexOfChapter(this.currentChapter);
- if (currChapterIndex > 0)
- this.goToChapterIndex(currChapterIndex - 1);
- }
-}
-
-TestSuite.prototype.goToNextIncompleteTest = function()
-{
- var completedProperty = this.format == 'html4' ? 'completedHTML' : 'completedXHTML';
-
- // Look to the end of this chapter.
- for (var i = this.currChapterTestIndex + 1; i < this.currentChapterTests.length; ++i) {
- if (!this.currentChapterTests[i][completedProperty]) {
- this.goToTestIndex(i);
- return;
- }
- }
-
- // Start looking through later chapter
- var currChapterIndex = this.indexOfChapter(this.currentChapter);
- for (var c = currChapterIndex + 1; c < kChapterData.length; ++c) {
- var chapterData = this.chapterAtIndex(c);
-
- var testIndex = this.firstIncompleteTestIndex(chapterData);
- if (testIndex != -1) {
- this.goToChapterIndex(c);
- this.goToTestIndex(testIndex);
- break;
- }
- }
-}
-
-TestSuite.prototype.firstIncompleteTestIndex = function(chapter)
-{
- var completedProperty = this.format == 'html4' ? 'completedHTML' : 'completedXHTML';
-
- var chapterTests = this.testListForChapter(chapter);
- for (var i = 0; i < chapterTests.length; ++i) {
- if (!chapterTests[i][completedProperty])
- return i;
- }
-
- return -1;
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.goToTestByName = function(testName)
-{
- var match = testName.match(/^(?:(html4|xhtml1)\/)?([\w-_]+)(\.xht|\.htm)?/);
- if (!match)
- return false;
-
- var prefix = match[1];
- var testId = match[2];
- var extension = match[3];
-
- var format = this.format;
- if (prefix)
- format = prefix;
- else if (extension) {
- if (extension == kXHTML1Data.suffix)
- format = kXHTML1Data.path;
- else if (extension == kHTML4Data.suffix)
- format = kHTML4Data.path;
- }
-
- this.switchToFormat(format);
-
- var test = this.tests[testId];
- if (!test)
- return false;
-
- // Find the first chapter.
- var links = test.links.split(',');
- if (links.length == 0) {
- window.console.log('test ' + test.id + 'had no links.');
- return false;
- }
-
- var firstLink = links[0];
- var result = firstLink.match(/^([.\w]+)(#.+)?$/);
- if (result)
- firstLink = result[1];
-
- // Find the chapter and index of the test.
- for (var i = 0; i < kChapterData.length; ++i) {
- var chapterData = kChapterData[i];
- if (chapterData.file == firstLink) {
-
- this.goToChapterIndex(i);
-
- for (var j = 0; j < this.currentChapterTests.length; ++j) {
- var currTest = this.currentChapterTests[j];
- if (currTest.id == testId) {
- this.goToTestIndex(j);
- return true;
- }
- }
- }
- }
-
- return false;
-}
-
-TestSuite.prototype.goToTestIndex = function(index)
-{
- if (index >= 0 && index < this.currentChapterTests.length) {
- this.currChapterTestIndex = index;
- this.loadCurrentTest();
- }
-}
-
-TestSuite.prototype.goToChapterIndex = function(chapterIndex)
-{
- if (chapterIndex >= 0 && chapterIndex < kChapterData.length) {
- var chapterFile = kChapterData[chapterIndex].file;
- this.setSelectedChapter(this.chapters[chapterFile]);
- }
-}
-
-TestSuite.prototype.currentTestName = function()
-{
- if (this.currChapterTestIndex < 0 || this.currChapterTestIndex >= this.currentChapterTests.length)
- return undefined;
-
- return this.currentChapterTests[this.currChapterTestIndex].id;
-}
-
-TestSuite.prototype.loadCurrentTest = function()
-{
- var theTest = this.currentChapterTests[this.currChapterTestIndex];
- if (!theTest) {
- this.configureForManualTest();
- this.clearTest();
- return;
- }
-
- if (theTest.reference) {
- this.configureForRefTest();
- this.loadRef(theTest);
- } else {
- this.configureForManualTest();
- }
-
- this.loadTest(theTest);
-
- this.updateProgressLabel();
-
- document.getElementById('test-list').selectedIndex = this.currChapterTestIndex;
-}
-
-TestSuite.prototype.updateProgressLabel = function()
-{
- document.getElementById('test-index').innerText = this.currChapterTestIndex + 1;
- document.getElementById('chapter-test-count').innerText = this.currentChapterTests.length;
-}
-
-TestSuite.prototype.configureForRefTest = function()
-{
- $('#test-content').addClass('with-ref');
-}
-
-TestSuite.prototype.configureForManualTest = function()
-{
- $('#test-content').removeClass('with-ref');
-}
-
-TestSuite.prototype.loadTest = function(test)
-{
- var iframe = document.getElementById('test-frame');
- iframe.src = 'about:blank';
-
- var url = this.urlForTest(test.id);
- window.setTimeout(function() {
- iframe.src = url;
- }, 0);
-
- document.getElementById('test-title').innerText = test.title;
- document.getElementById('test-url').innerText = this.pathForTest(test.id);
- document.getElementById('test-assertion').innerText = test.assertion;
- document.getElementById('test-flags').innerText = test.flags;
-
- this.processFlags(test);
-}
-
-TestSuite.prototype.processFlags = function(test)
-{
- if (test.paged)
- $('#test-content').addClass('print');
- else
- $('#test-content').removeClass('print');
-
- var showWarning = false;
- var warning = '';
- if (test.flags.indexOf('font') != -1)
- warning = 'Requires a specific font to be installed.';
-
- if (test.flags.indexOf('http') != -1) {
- if (warning != '')
- warning += ' ';
- warning += 'Must be tested over HTTP, with custom HTTP headers.';
- }
-
- if (test.paged) {
- if (warning != '')
- warning += ' ';
- warning += 'Test via the browser\'s Print Preview.';
- }
-
- document.getElementById('warning').innerText = warning;
-
- if (warning.length > 0)
- $('#test-content').addClass('warn');
- else
- $('#test-content').removeClass('warn');
-
-}
-
-TestSuite.prototype.clearTest = function()
-{
- var iframe = document.getElementById('test-frame');
- iframe.src = 'about:blank';
-
- document.getElementById('test-title').innerText = '';
- document.getElementById('test-url').innerText = '';
- document.getElementById('test-assertion').innerText = '';
- document.getElementById('test-flags').innerText = '';
-
- $('#test-content').removeClass('print');
- $('#test-content').removeClass('warn');
- document.getElementById('warning').innerText = '';
-}
-
-TestSuite.prototype.loadRef = function(test)
-{
- // Suites 20101001 and earlier used .xht refs, even for HTML tests, so strip off
- // the extension and use the same format as the test.
- var ref = test.reference.replace(/(\.xht)?$/, '');
-
- var iframe = document.getElementById('ref-frame');
- iframe.src = this.urlForTest(ref);
-}
-
-TestSuite.prototype.pathForTest = function(testName)
-{
- var prefix = this.formatInfo.path;
- var suffix = this.formatInfo.suffix;
-
- return prefix + '/' + testName + suffix;
-}
-
-TestSuite.prototype.urlForTest = function(testName)
-{
- return kTestSuiteHome + this.pathForTest(testName);
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.recordResult = function(testName, resolution, comment)
-{
- if (!testName)
- return;
-
- this.beginAppendingOutput();
- this.appendResultToOutput(this.formatInfo, testName, resolution, comment);
- this.endAppendingOutput();
-
- if (comment == undefined)
- comment = '';
-
- this.storeTestResult(testName, this.format, resolution, comment, navigator.userAgent);
-
- var htmlStatus = null;
- var xhtmlStatus = null;
- if (this.format == 'html4')
- htmlStatus = resolution;
- if (this.format == 'xhtml1')
- xhtmlStatus = resolution;
-
- this.markTestCompleted(testName, htmlStatus, xhtmlStatus);
- this.updateTestList();
-
- this.updateSummaryData();
- this.updateChapterPopup();
-}
-
-TestSuite.prototype.beginAppendingOutput = function()
-{
-}
-
-TestSuite.prototype.endAppendingOutput = function()
-{
- var output = document.getElementById('output');
- output.scrollTop = output.scrollHeight;
-}
-
-TestSuite.prototype.appendResultToOutput = function(formatData, testName, resolution, comment)
-{
- var output = document.getElementById('output');
-
- var result = formatData.path + '/' + testName + formatData.suffix + '\t' + resolution;
- if (comment)
- result += '\t(' + comment + ')';
-
- var line = document.createElement('p');
- line.className = resolution;
- line.appendChild(document.createTextNode(result));
- output.appendChild(line);
-}
-
-TestSuite.prototype.clearOutput = function()
-{
- document.getElementById('output').innerHTML = '';
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.switchToFormat = function(formatString)
-{
- if (formatString == 'html4')
- document.harness.format.html4.checked = true;
- else
- document.harness.format.xhtml1.checked = true;
-
- this.formatChanged(formatString);
-}
-
-TestSuite.prototype.formatChanged = function(formatString)
-{
- if (this.format == formatString)
- return;
-
- this.format = formatString;
-
- if (formatString == 'html4')
- this.formatInfo = kHTML4Data;
- else
- this.formatInfo = kXHTML1Data;
-
- // try to keep the current test selected
- var selectedTestName;
- if (this.currChapterTestIndex >= 0 && this.currChapterTestIndex < this.currentChapterTests.length)
- selectedTestName = this.currentChapterTests[this.currChapterTestIndex].id;
-
- if (this.currentChapter) {
- this.buildTestListForChapter(this.currentChapter);
- this.fillTestList();
- this.goToTestByName(selectedTestName);
- }
-
- this.updateChapterPopup();
- this.updateTestList();
- this.updateProgressLabel();
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.asyncLoad = function(url, type, handler)
-{
- $.get(url, handler, type);
-}
-
-/* ------------------------------------------------------- */
-
-TestSuite.prototype.exportResults = function(resultTypeIndex)
-{
- var resultInfo = kResultsSelector[resultTypeIndex];
- if (!resultInfo)
- return;
-
- resultInfo.exporter(this);
-}
-
-TestSuite.prototype.exportHeader = function()
-{
- var result = '# Safari 5.0.2' + ' ' + navigator.platform + '\n';
- result += '# ' + navigator.userAgent + '\n';
- result += '# http://test.csswg.org/suites/css2.1/' + kTestSuiteVersion + '/\n';
- result += 'testname\tresult\n';
-
- return result;
-}
-
-TestSuite.prototype.createExportLine = function(formatData, testName, resolution, comment)
-{
- var result = formatData.path + '/' + testName + '\t' + resolution;
- if (comment)
- result += '\t(' + comment + ')';
- return result;
-}
-
-TestSuite.prototype.exportQueryComplete = function(data)
-{
- window.open("data:text/plain," + escape(data))
-}
-
-TestSuite.prototype.resultsPopupChanged = function(index)
-{
- var resultInfo = kResultsSelector[index];
- if (!resultInfo)
- return;
-
- this.clearOutput();
- resultInfo.handler(this);
-
- var enableExport = resultInfo.exporter != undefined;
- document.getElementById('export-button').disabled = !enableExport;
-}
-
-/* ------------------------- Import ------------------------------- */
-/*
- Import format is the same as the export format, namely:
-
- testname<tab>result
-
- with optional trailing <tab>comment.
-
-html4/absolute-non-replaced-height-002<tab>pass
-xhtml1/absolute-non-replaced-height-002<tab>?
-
- Lines starting with # are ignored.
- The "testname<tab>result" line is ignored.
-*/
-TestSuite.prototype.importResults = function(data)
-{
- var testsToImport = [];
-
- var lines = data.split('\n');
- for (var i = 0; i < lines.length; ++i) {
- var currLine = lines[i];
- if (currLine.length == 0 || currLine.charAt(0) == '#')
- continue;
-
- var match = currLine.match(/^(html4|xhtml1)\/([\w-_]+)\t([\w?]+)\t?(.+)?$/);
- if (match) {
- var test = { 'id' : match[2] };
- test.format = match[1];
- test.result = match[3];
- test.comment = match[4];
-
- if (test.result != '?')
- testsToImport.push(test);
- } else {
- window.console.log('failed to match line \'' + currLine + '\'');
- }
- }
-
- this.importTestResults(testsToImport);
-
- this.resetTestStatus();
- this.updateSummaryData();
-}
-
-
-
-/* --------------------- Clear Results --------------------------- */
-/*
- Clear results format is either same as the export format, or
- a list of bare test IDs (e.g. absolute-non-replaced-height-001)
- in which case both HTML4 and XHTML1 results are cleared.
-*/
-TestSuite.prototype.clearResults = function(data)
-{
- var testsToClear = [];
-
- var lines = data.split('\n');
- for (var i = 0; i < lines.length; ++i) {
- var currLine = lines[i];
- if (currLine.length == 0 || currLine.charAt(0) == '#')
- continue;
-
- // Look for format/test with possible extension
- var result = currLine.match(/^((html4|xhtml1)?)\/?([\w-_]+)/);
- if (result) {
- var testId = result[3];
- var format = result[1];
-
- var clearHTML = format.length == 0 || format == 'html4';
- var clearXHTML = format.length == 0 || format == 'xhtml1';
-
- var result = { 'id' : testId };
- result.clearHTML = clearHTML;
- result.clearXHTML = clearXHTML;
-
- testsToClear.push(result);
- } else {
- window.console.log('failed to match line ' + currLine);
- }
- }
-
- this.clearTestResults(testsToClear);
-
- this.resetTestStatus();
- this.updateSummaryData();
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.exportResultsCompletion = function(exportTests)
-{
- // Lame workaround for ORDER BY not working
- exportTests.sort(function(a, b) {
- return a.test.localeCompare(b.test);
- });
-
- var exportLines = [];
- for (var i = 0; i < exportTests.length; ++i) {
- var currTest = exportTests[i];
- if (currTest.html4 != '')
- exportLines.push(currTest.html4);
- if (currTest.xhtml1 != '')
- exportLines.push(currTest.xhtml1);
- }
-
- var exportString = this.exportHeader() + exportLines.join('\n');
- this.exportQueryComplete(exportString);
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.showResultsForCompletedTests = function()
-{
- this.beginAppendingOutput();
-
- var _self = this;
- this.queryDatabaseForCompletedTests(
- function(item) {
- if (item.hstatus)
- _self.appendResultToOutput(kHTML4Data, item.test, item.hstatus, item.hcomment);
-
- if (item.xstatus)
- _self.appendResultToOutput(kXHTML1Data, item.test, item.xstatus, item.xcomment);
- },
- function() {
- _self.endAppendingOutput();
- }
- );
-}
-
-TestSuite.prototype.exportResultsForCompletedTests = function()
-{
- var exportTests = []; // each test will have html and xhtml items on it
-
- var _self = this;
- this.queryDatabaseForCompletedTests(
- function(item) {
- var htmlLine = '';
- if (item.hstatus)
- htmlLine= _self.createExportLine(kHTML4Data, item.test, item.hstatus, item.hcomment);
-
- var xhtmlLine = '';
- if (item.xstatus)
- xhtmlLine = _self.createExportLine(kXHTML1Data, item.test, item.xstatus, item.xcomment);
-
- exportTests.push({
- 'test' : item.test,
- 'html4' : htmlLine,
- 'xhtml1' : xhtmlLine });
- },
- function() {
- _self.exportResultsCompletion(exportTests);
- }
- );
-}
-
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.showResultsForAllTests = function()
-{
- this.beginAppendingOutput();
-
- var _self = this;
- this.queryDatabaseForAllTests('test',
- function(item) {
- _self.appendResultToOutput(kHTML4Data, item.test, item.hstatus, item.hcomment);
- _self.appendResultToOutput(kXHTML1Data, item.test, item.xstatus, item.xcomment);
- },
- function() {
- _self.endAppendingOutput();
- });
-}
-
-TestSuite.prototype.exportResultsForAllTests = function()
-{
- var exportTests = [];
-
- var _self = this;
- this.queryDatabaseForAllTests('test',
- function(item) {
- var htmlLine= _self.createExportLine(kHTML4Data, item.test, item.hstatus ? item.hstatus : '?', item.hcomment);
- var xhtmlLine = _self.createExportLine(kXHTML1Data, item.test, item.xstatus ? item.xstatus : '?', item.xcomment);
- exportTests.push({
- 'test' : item.test,
- 'html4' : htmlLine,
- 'xhtml1' : xhtmlLine });
- },
- function() {
- _self.exportResultsCompletion(exportTests);
- }
- );
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.showResultsForTestsNotRun = function()
-{
- this.beginAppendingOutput();
-
- var _self = this;
- this.queryDatabaseForTestsNotRun(
- function(item) {
- if (!item.hstatus)
- _self.appendResultToOutput(kHTML4Data, item.test, '?', item.hcomment);
- if (!item.xstatus)
- _self.appendResultToOutput(kXHTML1Data, item.test, '?', item.xcomment);
- },
- function() {
- _self.endAppendingOutput();
- }
- );
-}
-
-TestSuite.prototype.exportResultsForTestsNotRun = function()
-{
- var exportTests = [];
-
- var _self = this;
- this.queryDatabaseForTestsNotRun(
- function(item) {
- var htmlLine = '';
- if (!item.hstatus)
- htmlLine= _self.createExportLine(kHTML4Data, item.test, '?', item.hcomment);
-
- var xhtmlLine = '';
- if (!item.xstatus)
- xhtmlLine = _self.createExportLine(kXHTML1Data, item.test, '?', item.xcomment);
-
- exportTests.push({
- 'test' : item.test,
- 'html4' : htmlLine,
- 'xhtml1' : xhtmlLine });
- },
- function() {
- _self.exportResultsCompletion(exportTests);
- }
- );
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.showResultsForTestsWithStatus = function(status)
-{
- this.beginAppendingOutput();
-
- var _self = this;
- this.queryDatabaseForTestsWithStatus(status,
- function(item) {
- if (item.hstatus == status)
- _self.appendResultToOutput(kHTML4Data, item.test, item.hstatus, item.hcomment);
- if (item.xstatus == status)
- _self.appendResultToOutput(kXHTML1Data, item.test, item.xstatus, item.xcomment);
- },
- function() {
- _self.endAppendingOutput();
- }
- );
-}
-
-TestSuite.prototype.exportResultsForTestsWithStatus = function(status)
-{
- var exportTests = [];
-
- var _self = this;
- this.queryDatabaseForTestsWithStatus(status,
- function(item) {
- var htmlLine = '';
- if (item.hstatus == status)
- htmlLine= _self.createExportLine(kHTML4Data, item.test, item.hstatus, item.hcomment);
-
- var xhtmlLine = '';
- if (item.xstatus == status)
- xhtmlLine = _self.createExportLine(kXHTML1Data, item.test, item.xstatus, item.xcomment);
-
- exportTests.push({
- 'test' : item.test,
- 'html4' : htmlLine,
- 'xhtml1' : xhtmlLine });
- },
- function() {
- _self.exportResultsCompletion(exportTests);
- }
- );
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.showResultsForTestsWithMismatchedResults = function()
-{
- this.beginAppendingOutput();
-
- var _self = this;
- this.queryDatabaseForTestsWithMixedStatus(
- function(item) {
- _self.appendResultToOutput(kHTML4Data, item.test, item.hstatus, item.hcomment);
- _self.appendResultToOutput(kXHTML1Data, item.test, item.xstatus, item.xcomment);
- },
- function() {
- _self.endAppendingOutput();
- }
- );
-}
-
-TestSuite.prototype.exportResultsForTestsWithMismatchedResults = function()
-{
- var exportTests = [];
-
- var _self = this;
- this.queryDatabaseForTestsWithMixedStatus(
- function(item) {
- var htmlLine= _self.createExportLine(kHTML4Data, item.test, item.hstatus ? item.hstatus : '?', item.hcomment);
- var xhtmlLine = _self.createExportLine(kXHTML1Data, item.test, item.xstatus ? item.xstatus : '?', item.xcomment);
- exportTests.push({
- 'test' : item.test,
- 'html4' : htmlLine,
- 'xhtml1' : xhtmlLine });
- },
- function() {
- _self.exportResultsCompletion(exportTests);
- }
- );
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.markTestCompleted = function(testID, htmlStatus, xhtmlStatus)
-{
- var test = this.tests[testID];
- if (!test) {
- window.console.log('markTestCompleted failed to find test ' + testID);
- return;
- }
-
- if (htmlStatus) {
- test.completedHTML = true;
- test.statusHTML = htmlStatus;
- }
- if (xhtmlStatus) {
- test.completedXHTML = true;
- test.statusXHTML = xhtmlStatus;
- }
-}
-
-TestSuite.prototype.testCompletionStateChanged = function()
-{
- this.updateTestList();
- this.updateChapterPopup();
-}
-
-TestSuite.prototype.loadTestStatus = function()
-{
- var _self = this;
- this.queryDatabaseForCompletedTests(
- function(item) {
- _self.markTestCompleted(item.test, item.hstatus, item.xstatus);
- },
- function() {
- _self.testCompletionStateChanged();
- }
- );
-
- this.updateChapterPopup();
-}
-
-TestSuite.prototype.resetTestStatus = function()
-{
- for (var testID in this.tests) {
- var currTest = this.tests[testID];
- currTest.completedHTML = false;
- currTest.completedXHTML = false;
- }
- this.loadTestStatus();
-}
-
-/* -------------------------------------------------------- */
-
-TestSuite.prototype.updateSummaryData = function()
-{
- this.queryDatabaseForSummary(
- function(results) {
-
- var hTotal, xTotal;
- var hDone, xDone;
-
- for (var i = 0; i < results.length; ++i) {
- var result = results[i];
-
- switch (result.name) {
- case 'h-total': hTotal = result.count; break;
- case 'x-total': xTotal = result.count; break;
- case 'h-tested': hDone = result.count; break;
- case 'x-tested': xDone = result.count; break;
- }
-
- document.getElementById(result.name).innerText = result.count;
- }
-
- // We should get these all together.
- if (hTotal) {
- document.getElementById('h-percent').innerText = Math.round(100.0 * hDone / hTotal);
- document.getElementById('x-percent').innerText = Math.round(100.0 * xDone / xTotal);
- }
- }
- );
-}
-
-/* ------------------------------------------------------- */
-// Database stuff
-
-function errorHandler(transaction, error)
-{
- alert('Database error: ' + error.message);
- window.console.log('Database error: ' + error.message);
-}
-
-TestSuite.prototype.openDatabase = function()
-{
- if (!'openDatabase' in window) {
- alert('Your browser does not support client-side SQL databases, so results will not be stored.');
- return;
- }
-
- var _self = this;
- this.db = window.openDatabase('css21testsuite', '', 'CSS 2.1 test suite results', 10 * 1024 * 1024);
-
- // Migration handling. We assume migration will happen whenever the suite version changes,
- // so that we can check for new or obsoleted tests.
- function creation(tx) {
- _self.databaseCreated(tx);
- }
-
- function migration1_0To1_1(tx) {
- window.console.log('updating 1.0 to 1.1');
- // We'll use the 'seen' column to cross-check with testinfo.data.
- tx.executeSql('ALTER TABLE tests ADD COLUMN seen BOOLEAN DEFAULT \"FALSE\"', null, function() {
- _self.syncDatabaseWithTestInfoData();
- }, errorHandler);
- }
-
- if (this.db.version == '') {
- _self.db.changeVersion('', '1.0', creation, null, function() {
- _self.db.changeVersion('1.0', '1.1', migration1_0To1_1, null, function() {
- _self.databaseReady();
- }, errorHandler);
- }, errorHandler);
-
- return;
- }
-
- if (this.db.version == '1.0') {
- _self.db.changeVersion('1.0', '1.1', migration1_0To1_1, null, function() {
- window.console.log('ready')
- _self.databaseReady();
- }, errorHandler);
- return;
- }
-
- this.databaseReady();
-}
-
-TestSuite.prototype.databaseCreated = function(tx)
-{
- window.console.log('databaseCreated');
- this.populatingDatabase = true;
-
- // hstatus: HTML4 result
- // xstatus: XHTML1 result
- var _self = this;
- tx.executeSql('CREATE TABLE tests (test PRIMARY KEY UNIQUE, ref, title, flags, links, assertion, hstatus, hcomment, xstatus, xcomment)', null,
- function(tx, results) {
- _self.populateDatabaseFromTestInfoData();
- }, errorHandler);
-}
-
-TestSuite.prototype.databaseReady = function()
-{
- this.updateSummaryData();
- this.loadTestStatus();
-}
-
-TestSuite.prototype.storeTestResult = function(test, format, result, comment, useragent)
-{
- if (!this.db)
- return;
-
- this.db.transaction(function (tx) {
- if (format == 'html4')
- tx.executeSql('UPDATE tests SET hstatus=?, hcomment=? WHERE test=?\n', [result, comment, test], null, errorHandler);
- else if (format == 'xhtml1')
- tx.executeSql('UPDATE tests SET xstatus=?, xcomment=? WHERE test=?\n', [result, comment, test], null, errorHandler);
- });
-}
-
-TestSuite.prototype.importTestResults = function(results)
-{
- if (!this.db)
- return;
-
- this.db.transaction(function (tx) {
-
- for (var i = 0; i < results.length; ++i) {
- var currResult = results[i];
-
- var query;
- if (currResult.format == 'html4')
- query = 'UPDATE tests SET hstatus=?, hcomment=? WHERE test=?\n';
- else if (currResult.format == 'xhtml1')
- query = 'UPDATE tests SET xstatus=?, xcomment=? WHERE test=?\n';
-
- tx.executeSql(query, [currResult.result, currResult.comment, currResult.id], null, errorHandler);
- }
- });
-}
-
-TestSuite.prototype.clearTestResults = function(results)
-{
- if (!this.db)
- return;
-
- this.db.transaction(function (tx) {
-
- for (var i = 0; i < results.length; ++i) {
- var currResult = results[i];
-
- if (currResult.clearHTML)
- tx.executeSql('UPDATE tests SET hstatus=NULL, hcomment=NULL WHERE test=?\n', [currResult.id], null, errorHandler);
-
- if (currResult.clearXHTML)
- tx.executeSql('UPDATE tests SET xstatus=NULL, xcomment=NULL WHERE test=?\n', [currResult.id], null, errorHandler);
-
- }
- });
-}
-
-TestSuite.prototype.populateDatabaseFromTestInfoData = function()
-{
- if (!this.testInfoLoaded) {
- window.console.log('Tring to populate database before testinfo.data has been loaded');
- return;
- }
-
- window.console.log('populateDatabaseFromTestInfoData')
- var _self = this;
- this.db.transaction(function (tx) {
- for (var testID in _self.tests) {
- var test = _self.tests[testID];
- // Version 1.0, so no 'seen' column.
- tx.executeSql('INSERT INTO tests (test, ref, title, flags, links, assertion) VALUES (?, ?, ?, ?, ?, ?)',
- [test.id, test.reference, test.title, test.flags, test.links, test.assertion], null, errorHandler);
- }
- _self.populatingDatabase = false;
- });
-
-}
-
-TestSuite.prototype.insertTest = function(tx, test)
-{
- tx.executeSql('INSERT INTO tests (test, ref, title, flags, links, assertion, seen) VALUES (?, ?, ?, ?, ?, ?, ?)',
- [test.id, test.reference, test.title, test.flags, test.links, test.assertion, 'TRUE'], null, errorHandler);
-}
-
-// Deal with removed/renamed tests in a new version of the suite.
-// self.tests is canonical; the database may contain stale entries.
-TestSuite.prototype.syncDatabaseWithTestInfoData = function()
-{
- if (!this.testInfoLoaded) {
- window.console.log('Trying to sync database before testinfo.data has been loaded');
- return;
- }
-
- // Make an object with all tests that we'll use to track new tests.
- var testsToInsert = {};
- for (var testId in this.tests) {
- var currTest = this.tests[testId];
- testsToInsert[currTest.id] = currTest;
- }
-
- var _self = this;
- this.db.transaction(function (tx) {
- // Find tests that are not in the database yet.
- // (Wasn't able to get INSERT ... IF NOT working.)
- tx.executeSql('SELECT * FROM tests', [], function(tx, results) {
- var len = results.rows.length;
- for (var i = 0; i < len; ++i) {
- var item = results.rows.item(i);
- delete testsToInsert[item.test];
- }
- }, errorHandler);
- });
-
- this.db.transaction(function (tx) {
- for (var testId in testsToInsert) {
- var currTest = testsToInsert[testId];
- window.console.log(currTest.id + ' is new; inserting');
- _self.insertTest(tx, currTest);
- }
- });
-
- this.db.transaction(function (tx) {
- for (var testID in _self.tests)
- tx.executeSql('UPDATE tests SET seen=\"TRUE\" WHERE test=?\n', [testID], null, errorHandler);
-
- tx.executeSql('SELECT * FROM tests WHERE seen=\"FALSE\"', [], function(tx, results) {
- var len = results.rows.length;
- for (var i = 0; i < len; ++i) {
- var item = results.rows.item(i);
- window.console.log('Test ' + item.test + ' was in the database but is no longer in the suite; deleting.');
- }
- }, errorHandler);
-
- // Delete rows for disappeared tests.
- tx.executeSql('DELETE FROM tests WHERE seen=\"FALSE\"', [], function(tx, results) {
- _self.populatingDatabase = false;
- _self.databaseReady();
- }, errorHandler);
- });
-}
-
-TestSuite.prototype.queryDatabaseForAllTests = function(sortKey, perRowHandler, completionHandler)
-{
- if (this.populatingDatabase)
- return;
-
- var _self = this;
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
- var query;
- var args = [];
- if (sortKey != '') {
- query = 'SELECT * FROM tests ORDER BY ? ASC'; // ORDER BY doesn't seem to work
- args.push(sortKey);
- }
- else
- query = 'SELECT * FROM tests';
-
- tx.executeSql(query, args, function(tx, results) {
-
- var len = results.rows.length;
- for (var i = 0; i < len; ++i)
- perRowHandler(results.rows.item(i));
-
- completionHandler();
- }, errorHandler);
- });
-}
-
-TestSuite.prototype.queryDatabaseForTestsWithStatus = function(status, perRowHandler, completionHandler)
-{
- if (this.populatingDatabase)
- return;
-
- var _self = this;
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
- tx.executeSql('SELECT * FROM tests WHERE hstatus=? OR xstatus=?', [status, status], function(tx, results) {
-
- var len = results.rows.length;
- for (var i = 0; i < len; ++i)
- perRowHandler(results.rows.item(i));
-
- completionHandler();
- }, errorHandler);
- });
-}
-
-TestSuite.prototype.queryDatabaseForTestsWithMixedStatus = function(perRowHandler, completionHandler)
-{
- if (this.populatingDatabase)
- return;
-
- var _self = this;
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
- tx.executeSql('SELECT * FROM tests WHERE hstatus IS NOT NULL AND xstatus IS NOT NULL AND hstatus <> xstatus', [], function(tx, results) {
-
- var len = results.rows.length;
- for (var i = 0; i < len; ++i)
- perRowHandler(results.rows.item(i));
-
- completionHandler();
- }, errorHandler);
- });
-}
-
-TestSuite.prototype.queryDatabaseForCompletedTests = function(perRowHandler, completionHandler)
-{
- if (this.populatingDatabase)
- return;
-
- var _self = this;
- this.db.transaction(function (tx) {
-
- if (_self.populatingDatabase)
- return;
-
- tx.executeSql('SELECT * FROM tests WHERE hstatus IS NOT NULL OR xstatus IS NOT NULL', [], function(tx, results) {
- var len = results.rows.length;
- for (var i = 0; i < len; ++i)
- perRowHandler(results.rows.item(i));
-
- completionHandler();
- }, errorHandler);
- });
-}
-
-TestSuite.prototype.queryDatabaseForTestsNotRun = function(perRowHandler, completionHandler)
-{
- if (this.populatingDatabase)
- return;
-
- var _self = this;
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
-
- tx.executeSql('SELECT * FROM tests WHERE hstatus IS NULL OR xstatus IS NULL', [], function(tx, results) {
-
- var len = results.rows.length;
- for (var i = 0; i < len; ++i)
- perRowHandler(results.rows.item(i));
-
- completionHandler();
- }, errorHandler);
- });
-}
-
-/*
-
- completionHandler gets called an array of results,
- which may be some or all of:
-
- data = [
- { 'name' : ,
- 'count' :
- },
- ]
-
- where name is one of:
-
- 'h-total'
- 'h-tested'
- 'h-passed'
- 'h-failed'
- 'h-skipped'
-
- 'x-total'
- 'x-tested'
- 'x-passed'
- 'x-failed'
- 'x-skipped'
-
- */
-
-
-TestSuite.prototype.countTestsWithColumnValue = function(tx, completionHandler, column, value, label)
-{
- var allRowsCount = 'COUNT(*)';
-
- tx.executeSql('SELECT COUNT(*) FROM tests WHERE ' + column + '=?', [value], function(tx, results) {
- var data = [];
- if (results.rows.length > 0)
- data.push({ 'name' : label, 'count' : results.rows.item(0)[allRowsCount] })
- completionHandler(data);
- }, errorHandler);
-}
-
-TestSuite.prototype.countTestsWithFlag = function(tx, completionHandler, flag)
-{
- var allRowsCount = 'COUNT(*)';
-
- tx.executeSql('SELECT COUNT(*) FROM tests WHERE flags LIKE \"%' + flag + '%\"', [], function(tx, results) {
- var rowCount = 0;
- if (results.rows.length > 0)
- rowCount = results.rows.item(0)[allRowsCount];
- completionHandler(rowCount);
- }, errorHandler);
-}
-
-TestSuite.prototype.queryDatabaseForSummary = function(completionHandler)
-{
- if (!this.db || this.populatingDatabase)
- return;
-
- var _self = this;
-
- var htmlOnlyTestCount = 0;
- var xHtmlOnlyTestCount = 0;
-
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
-
- var allRowsCount = 'COUNT(*)';
-
- _self.countTestsWithFlag(tx, function(count) {
- htmlOnlyTestCount = count;
- }, 'htmlOnly');
-
- _self.countTestsWithFlag(tx, function(count) {
- xHtmlOnlyTestCount = count;
- }, 'nonHTML');
- });
-
- this.db.transaction(function (tx) {
- if (_self.populatingDatabase)
- return;
-
- var allRowsCount = 'COUNT(*)';
- var html4RowsCount = 'COUNT(hstatus)';
- var xhtml1RowsCount = 'COUNT(xstatus)';
-
- tx.executeSql('SELECT COUNT(*), COUNT(hstatus), COUNT(xstatus) FROM tests', [], function(tx, results) {
-
- var data = [];
- if (results.rows.length > 0) {
- var rowItem = results.rows.item(0);
- data.push({ 'name' : 'h-total' , 'count' : rowItem[allRowsCount] - xHtmlOnlyTestCount })
- data.push({ 'name' : 'x-total' , 'count' : rowItem[allRowsCount] - htmlOnlyTestCount })
- data.push({ 'name' : 'h-tested', 'count' : rowItem[html4RowsCount] })
- data.push({ 'name' : 'x-tested', 'count' : rowItem[xhtml1RowsCount] })
- }
- completionHandler(data);
-
- }, errorHandler);
-
-
- _self.countTestsWithColumnValue(tx, completionHandler, 'hstatus', 'pass', 'h-passed');
- _self.countTestsWithColumnValue(tx, completionHandler, 'xstatus', 'pass', 'x-passed');
-
- _self.countTestsWithColumnValue(tx, completionHandler, 'hstatus', 'fail', 'h-failed');
- _self.countTestsWithColumnValue(tx, completionHandler, 'xstatus', 'fail', 'x-failed');
-
- _self.countTestsWithColumnValue(tx, completionHandler, 'hstatus', 'skipped', 'h-skipped');
- _self.countTestsWithColumnValue(tx, completionHandler, 'xstatus', 'skipped', 'x-skipped');
-
- _self.countTestsWithColumnValue(tx, completionHandler, 'hstatus', 'invalid', 'h-invalid');
- _self.countTestsWithColumnValue(tx, completionHandler, 'xstatus', 'invalid', 'x-invalid');
- });
-}
-
diff --git a/Tools/ChangeLog-2009-06-16 b/Tools/ChangeLog-2009-06-16
deleted file mode 100644
index 534b2e6c6..000000000
--- a/Tools/ChangeLog-2009-06-16
+++ /dev/null
@@ -1,25221 +0,0 @@
-2009-06-15 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add a script to automate the rolling over of ChangeLog files when they grow too large.
-
- * Scripts/roll-over-ChangeLogs: Added.
-
-2009-06-15 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/6974857>
-
- Build with ENABLE_3D_RENDERING turned on by default on SnowLeopard.
-
- * Scripts/build-webkit:
-
-2009-06-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Mark Rowe.
- Reviewed by Simon Hausmann.
-
- Refactor handling of options in the build-webkit script
-
- Options are now defined in one place, and then reused when creating
- the usage help text, the arguments to GetOptions(), and when passing
- the options on to the underlying port-dependent build systems.
-
- This allows the Qt port to read the defaults for the options from the
- pro file (dynamically), and to pass the options on to qmake at build.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2009-06-15 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Fix <https://bugs.webkit.org/show_bug.cgi?id=26312>.
- Bug 26312: Multiple copies of Safari opened with WebKit nightly and Safari 3.2.3
-
- Skip the trampoline detection for versions of Safari < 4.0 as they don't play these
- tricks, and having WebKitNightlyEnabler assume that we were in the trampoline was
- preventing our LaunchServices trickery from being run. This led to fresh copies of
- WebKit.app being launched when a URL or file was opened from an external application
- rather than the existing instance being reused.
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (insideSafari4OnTigerTrampoline):
- (enableWebKitNightlyBehaviour):
-
-2009-06-13 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Mark "Snowy" Rowe.
-
- Update iExploder/htdocs/cssproperties.in by running update-iexploder-cssproperties.
-
- * iExploder/htdocs/cssproperties.in:
-
-2009-06-13 John Abd-El-Malek <jam@chromium.org>
-
- Reviewed by Eric Seidel. Landed by Adam Barth.
-
- Removed dead file.
- https://bugs.webkit.org/show_bug.cgi?id=26308
-
- * DumpRenderTree/win/TestNetscapePlugin/main.c: Removed.
-
-2009-06-12 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha.
-
- [Gtk] use strlen instead of g_utf8_strlen so we can enable more tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpHistoryItem):
-
-2009-06-12 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Jan Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=25599
- [GTK] Enable more tests
-
- Implement dumping of status callback.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewStatusBarTextChanged):
- (main):
-
-2009-06-11 John Abd-El-Malek <jam@chromium.org>
-
- Reviewed by Steve Falkenburg.
-
- https://bugs.webkit.org/show_bug.cgi?id=26306
-
- Revert 42565 as it leads to DumpRenderTree crashing on startup because
- Windows can't find CFURLCacheCopySharedURLCache in CoreNetwork.dll.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
-
-2009-06-10 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Jan Alonzo.
-
- [gtk] Change DumpRenderTree to use a GtkScrolledWindow instead of GtkFixed
-
- Change the code to use GtkScrolledWindow and resize the GtkScrolledWindow
- to pass more tests. Make sure the content is bigger than a thumbnail.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- (main):
-
-2009-06-10 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha.
-
- Clear the frame name before we run each tests so we don't get
- "someFloaString" or "3" in the target frame name.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-06-10 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adele Peterson.
-
- - add a LayoutTestController method for temporarily changing the WebKit
- cache model
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setCacheModelCallback): Added. Calls
- LayoutTestController::setCacheModel() with the first argument as an
- integer.
- (LayoutTestController::staticFunctions): Added setCacheModel.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCacheModel):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting): Reset the cache model to
- WebCacheModelDocumentBrowser.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setCacheModel): Added. Calls -[WebPreferences
- setCacheModel:].
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCacheModel):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setCacheModel):
-
-2009-06-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Have sunspider-compare-results use the system version of the jsc
- command line binary as there's no good reason to rebuild from source
- to simply compare results.
-
- * Scripts/sunspider-compare-results:
-
-2009-06-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- Removed setUseFixedLayout and renamed setFixedLayoutSize to
- setFixedContentsSize.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::setFixedContentsSize):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-06-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- Fix the Qt build, add missing function declaration.
-
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-06-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix <https://bugs.webkit.org/show_bug.cgi?id=24642>.
- Bug 24642: REGRESSION: Nightly builds sometimes erroneously display a message about failing to launch successfully
-
- Safari 4 on Tiger plays some shenanigans during launch that can confuse the nightly launcher application
- in to running its initialization code too soon.
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (insideSafariOnTigerTrampoline): Detect these shenanigans.
- (enableWebKitNightlyBehaviour): Delay initialization when needed.
-
-2009-06-08 Brady Eidson <beidson@apple.com>
-
- Reviewed by Antti Koivisto
-
- Add dispatchPendingLoadRequests() to test fix for <rdar://problem/6727495>
-
- * DumpRenderTree/LayoutTestController.cpp:
- (dispatchPendingLoadRequestsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::dispatchPendingLoadRequests): Implement using [WebView _dispatchPendingLoadRequests] SPI
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::dispatchPendingLoadRequests): Need implementations.
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::dispatchPendingLoadRequests): Ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::dispatchPendingLoadRequests): Ditto.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::dispatchPendingLoadRequests): Ditto.
-
-2009-06-07 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Cameron Zwarich.
-
- Delete the AccessibilityController that we allocated in -init.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate dealloc]):
-
-2009-06-06 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Factor out the code to check whether a library contains a given symbol in to a helper function.
-
- * Scripts/webkitdirs.pm:
-
-2009-06-06 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Detect when XHTML MP and WCSS are disabled and skip their associated regression tests.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-06-06 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Brady Eidson.
-
- <rdar://problem/6778101> Four SSL-related test failures
-
- With newer versions of CFNetwork we receive a NSURLErrorServerCertificateUntrusted error
- code rather than the more specific NSURLErrorServerCertificateHasUnknownRoot that DumpRenderTree
- was looking for. Update DumpRenderTree to accommodate the different error code.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
-
-2009-06-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Simon Hausmann.
-
- [Qt] Fix Perl warning when calling chdir with an empty/undefined path
-
- This happened when the included makespec was in the same directory as
- the parent makespec, so the relative path between the two was empty.
-
- * Scripts/webkitdirs.pm:
-
-2009-06-04 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- Fix crashes due to unbalanced start/stop observer calls.
-
- * DumpRenderTree/mac/DumpRenderTreeWindow.h: Added observingWebView.
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow startObservingWebView]): Call stopObservingWebView
- in case we're already observing some other WebView. Set observingWebView.
- (-[DumpRenderTreeWindow stopObservingWebView]): Do nothing if
- observingWebView is already NO. Clear observingWebView.
-
-2009-06-03 David Hyatt <hyatt@apple.com>
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMainFrameIsFirstResponder):
- Remove explicit calls to _updateFocusedActiveState when the view is made first responder.
- Focused state already properly updates when views become first responders, so these calls
- are unnecessary.
-
- (LayoutTestController::setWindowIsKey):
- Explicitly call _updateActiveState when our window becomes key, since we're just faking it
- and the notification won't be sent.
-
-2009-06-02 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Add "replace" behavior so that it shows the addition part of the
- replacement of the file first, and then shows the changes.
-
- Future: Add in showing the removal part of the replacement.
-
- * Scripts/svn-create-patch:
-
-2009-06-02 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Update WinLauncher for WebKitCreateInstance.
- https://bugs.webkit.org/show_bug.cgi?id=26136
-
- * WinLauncher/WinLauncher.cpp: Revise implementation to
- use WebKitCreateInstance (rather than CoCreateInstance).
- * WinLauncher/WinLauncher.h: Modify include path for
- WebKit.h to match DumpRenderTree style.
- * WinLauncher/WinLauncher.vcproj: Remove unnecessary
- WebKit.tlb and EmbeddedIDL flags from build.
-
-2009-06-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Adam Roben.
-
- [Qt] Fix Perl warning about uninitialized value (passedConfiguration())
-
- * Scripts/webkitdirs.pm:
-
-2009-06-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Simon Hausmann.
-
- Use File::Spec->tmpdir instead of hardcoded paths for tempfile() dir
-
- This fixes the Windows-build if the user does not have a /tmp directory.
-
- * Scripts/bisect-builds:
-
-2009-06-01 Yongjun Zhang <yongjun.zhang@nokia.com>>
-
- Reviewed by Holger Freyther. Landed by Adam Barth.
-
- <https://bugs.webkit.org/show_bug.cgi?id=26070>
-
- [Qt] EventSender.keyDown doesn't support Arrow Up and Down keys.
- Add Down and Up key support.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
-
-2009-06-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- svn-create-patch displays confusing "Broken pipe" errors from Subversion
- when files have been renamed in local working copy. This was happening
- because we invoke 'svn info' to determine the URL that the file was copied
- from, but we were closing the pipe to the subprocess before SVN had finished
- writing its output.
-
- * Scripts/prepare-ChangeLog: Consume all 'svn info' output before closing the file handle.
- * Scripts/svn-create-patch: Ditto.
-
-2009-05-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- - implement LayoutTestController::clearAllDatabases() on
- Windows.
-
- Needed for storage/transaction-error-callback.html.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::clearAllDatabases):
-
-2009-05-28 Dirk Schulze <krit@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- Added new build flag --filters. More details in WebCore/ChangeLog.
-
- * Scripts/build-webkit:
-
-2009-05-28 Olivier DOLE <odole@pleyo.com>
-
- Reviewed by Maciej.
-
- Add options to sunspider-compare-results to know which test suite to
- compare (see bug #15941).
-
- * Scripts/sunspider-compare-results:
-
-2009-05-27 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Update build-webkit to handle a new version of WebKitSystemInterface.
-
- * Scripts/build-webkit:
-
-2009-05-27 Fridrich Strba <fridrich.strba@bluewin.ch>
-
- Reviewed by Maciej Stachowiak.
-
- When building with MinGW, don't use the __declspec(dl{import,export})
- decorations and rely on the linker to use its nifty auto-import feature.
- It is extremely hard to get the decorations right with MinGW in general
- and impossible in WebKit, where the resulting shared library is linking
- together some static libraries.
-
- * DumpRenderTree/config.h:
-
-2009-05-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Land the updated version of WebKitLauncher that the nightly builds have been using.
-
- Changes include:
- 1) Support for self-updating via Sparkle.
- 2) Now respects the "Open using Rosetta" preference.
- 3) Passes environment variables through to the spawned Safari process.
- 4) Logs a list of extensions that are detected to the system console.
- 5) Disables extensions that are known to cause crashes too early in the
- launch process to be detected by the extension-detection code.
-
- * WebKitLauncher/Configurations/Base.xcconfig: Added.
- * WebKitLauncher/Configurations/WebKitLauncher.xcconfig: Added.
- * WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig: Added.
- * WebKitLauncher/Info.plist:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitNightlyEnabler.h: Added.
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (myBundleDidLoad):
- (myApplicationWillFinishLaunching):
- (poseAsWebKitApp):
- (webKitLauncherBundle):
- (enableWebKitNightlyBehaviour):
- * WebKitLauncher/WebKitNightlyEnablerSparkle.h: Added.
- * WebKitLauncher/WebKitNightlyEnablerSparkle.m: Added.
- (initializeSparkle):
- (updatePermissionPromptDescription):
- (skipSignatureVerificationInDownloadDidFinish):
- (updateAlertPanel):
- (updateAlertInitForAlertPanel):
- (-[NSAlert webKitHandleButtonPress:]):
- (setMethodImplementation):
- * WebKitLauncher/main.m:
- (displayErrorAndQuit):
- (getLastVersionShown):
- (saveLastVersionShown):
- (getPathForStartPage):
- (getCurrentVersion):
- (getShowStartPageVersion):
- (startPageDisabled):
- (addStartPageToArgumentsIfNeeded):
- (preferredArchitecture):
- (myExecve):
- (locateSafariBundle):
- (currentMacOSXVersion):
- (checkFrameworkPath):
- (main):
-
-2009-05-23 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha and Xan Lopez.
-
- [Gtk] Enable database and localStorage support
- https://bugs.webkit.org/show_bug.cgi?id=25629
-
- Enable database and localStorage for running the storage/ tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-05-23 David Kilzer <ddkilzer@apple.com>
-
- Part 1 of 2: Bug 25495: Implement PassOwnPtr and replace uses of std::auto_ptr
-
- <https://bugs.webkit.org/show_bug.cgi?id=25495>
-
- Reviewed by Oliver Hunt.
-
- * DumpRenderTree/ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/PassOwnPtr.h: Added.
-
-2009-05-23 David Kilzer <ddkilzer@apple.com>
-
- resolve-ChangeLogs: Add missing newline to status message
-
- * Scripts/resolve-ChangeLogs: Added newline to status message
- that is printed when the -c|--continue switch is used but there
- are unmerged files remaining in the git working directory.
-
-2009-05-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add an error message to a die statement in run-webkit-tests
- I hit this die when two users tried to run-webkit-tests at the same time. :(
-
- * Scripts/run-webkit-tests:
-
-2009-05-22 Andre Pedralho <andre.pedralho@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Fixed --makeargs usage in Qt build.
-
- * Scripts/build-webkit:
-
-2009-05-22 Zoltan Horvath <horvath.zoltan.6@stud.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Correcting error message on missing WEBKIT_TESTFONTS
- environment varible in Qt-port.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-05-21 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Antti Koivisto.
-
- Make it possible to write js-only http tests by exposing a /js-test-resources alias.
- https://bugs.webkit.org/show_bug.cgi?id=25915
-
- Second attempt at landing, now using -c instead of -C to make sure
- that mod_alias is loaded on Apache 1.x instances before using Alias.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2009-05-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Xan Lopez.
-
- Default to running HTTP tests for GTK+.
-
- * Scripts/run-webkit-tests:
-
-2009-05-21 Darin Adler <darin@apple.com>
-
- Rolled the httpd changes out, since many machines (including the bots)
- have an older version of Apache that does not support the Alias command.
- Or maybe it's something else, but the bots are failing.
-
- * Scripts/run-webkit-httpd: Rolled back.
- * Scripts/run-webkit-tests: Ditto.
-
-2009-05-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Make it possible to write js-only http tests by exposing a /js-test-resources alias.
- https://bugs.webkit.org/show_bug.cgi?id=25915
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2009-05-21 Andre Pedralho <andre.pedralho@openbossa.org>
-
- Reviewed by Gustavo Noronha.
-
- Added --makeargs flag to the build script.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2009-05-14 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Anders Carlsson.
-
- https://bugs.webkit.org/show_bug.cgi?id=24510 where
-
- Add testHasProperty and testHasMethod to the existing functions
- of the PluginObject to be able to test the browser hasproperty
- and hasmethod implementation. Invoke them from pluginInvoke.
-
- Change the defines to an enum to avoid manually updating
- NUM_METHOD_IDENTIFIERS and assigning numbers.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testHasProperty): test hasproperty
- (testHasMethod): test hasmethod
- (pluginInvoke): invoke the two
-
-2009-05-20 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by George Staikos.
-
- BUG 25843: [Qt] Remove qt-port build flag
- <https://bugs.webkit.org/show_bug.cgi?id=25843>
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * Scripts/webkitdirs.pm:
-
-2009-05-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Remove layoutTestController.addFileToPasteboardOnDrag and add eventSender.beginDragWithFiles
- https://bugs.webkit.org/show_bug.cgi?id=25852
-
- This allows us to now test multi-file file drags in DumpRenderTree per:
- https://bugs.webkit.org/show_bug.cgi?id=25862
-
- I removed the existing tests using addFileToPasteboardOnDrag()
- and replaced them with a new test (editing/pasteboard/file-input-files-access)
- which covers several more drag-drop cases.
-
- I added a DumpRenderTreeFileDraggingSource class to avoid
- the hack of if (!draggingSource) in [DumpRenderTreeDraggingInfo draggingSourceOperationMask]
-
- New Test: editing/pasteboard/file-input-files-access.html
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeFileDraggingSource.h: Added.
- * DumpRenderTree/DumpRenderTreeFileDraggingSource.m: Added.
- (-[DumpRenderTreeFileDraggingSource draggingSourceOperationMaskForLocal:]):
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::staticValues): removed addFileToPasteboardOnDrag support
- (LayoutTestController::staticFunctions): removed addFileToPasteboardOnDrag support
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest): ASSERT that draggingInfo has been cleared
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]): Sorted selectors.
- (+[EventSendingController webScriptNameForSelector:]): Sorted selectors.
- (-[EventSendingController beginDragWithFiles:]):
- (-[EventSendingController mouseMoveToX:Y:]):
- (-[EventSendingController keyDown:withModifiers:]):
- (-[EventSendingController fireKeyboardEventsToElement:]): removed spurious { }
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]): removed addFileToPasteboardOnDrag support
-
-2009-05-19 Kevin Ollivier <kevino@theolliviers.com>
-
- wxMSW build fixes for DRT.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (runTest):
- * DumpRenderTree/wx/WorkQueueItemWx.cpp:
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
-
-2009-05-18 Julien Chaffraix <jchaffraix@webkit.org>
-
- Bug 24569: Add some cookies tests
-
- <https://bugs.webkit.org/show_bug.cgi?id=24569>
-
- Patch by David Kilzer.
-
- * Scripts/make-js-test-wrappers: Added regex to skip
- cookies-test-(post|pre).js files.
-
-2009-05-18 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Use python-config to get Python linking info on Unix OSes.
-
- * wx/build-wxwebkit:
-
-2009-05-18 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, initialize variable that doesn't get set on Windows.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (MyApp::OnInit):
-
-2009-05-18 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Xan Lopez.
-
- [Gtk] Various autotools build refactoring and fixes
- https://bugs.webkit.org/show_bug.cgi?id=25286
-
- Add -no-install and -no-fast-install to programs and tests that we
- don't install. Also remove -O2 since this is already handled at
- configure time.
-
- * GNUmakefile.am:
-
-2009-05-18 Julie Parent <jparent@google.com>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=25846
- Make eventSender dispatch a drag over event.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:dragImage:at:offset:event:pasteboard:source:slideBack:forView:]):
-
-2009-05-18 Julie Parent <jparent@google.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=25716
-
- * Scripts/make-js-test-wrappers: Added exception to avoid overwriting a custom-written test.
-
-2009-05-18 Julie Parent <jparent@google.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=25716
-
- * Scripts/make-js-test-wrappers: Added exception to avoid overwriting a custom-written test.
-
-2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Jan Michael Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=25787
-
- Merge r41819 into Gtk. Do not use printf but send messages
- through the log command.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (log):
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2009-05-11 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Jan Michael Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=25787
-
- Forward port r39877 from main.c of OSX to TestNetscapePlugin
- of Gtk.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
-
-2009-05-15 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Don't parse args using getopt since it isn't available on Windows.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (MyApp::OnInit):
-
-2009-05-15 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [GTK] Implement layoutTestController.waitForPolicyDelegate
- https://bugs.webkit.org/show_bug.cgi?id=25036
-
- Connect to 'navigation-policy-decision-requested' and handle
- waitForPolicy in the callback.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (invalidateAnyPreviousWaitToDumpWatchdog):
- (webViewNavigationPolicyDecisionRequested):
- (main):
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::notifyDone):
- (LayoutTestController::waitForPolicyDelegate):
-
-2009-05-14 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=24704
-
- Make paths where data is saved be scoped to the ~ directory,
- so that one can run independent instances by setting CFFIXED_USER_HOME.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (libraryPath):
- (setDefaultsToConsistentValuesForTesting):
- (dumpFrameAsPDF):
-
-2009-05-13 David Kilzer <ddkilzer@apple.com>
-
- Fix resolve-ChangeLogs when used with Subversion
-
- Reviewed by Darin Adler.
-
- Fixes the following issue when run on a Subversion repository:
-
- $ ./WebKitTools/Scripts/resolve-ChangeLogs
- ERROR: --continue may only be used with a git repository
-
- * Scripts/resolve-ChangeLogs: Check for the boolean value of
- $gitRebaseContinue, not whether it's defined, when validating
- command-line switches.
-
-2009-05-12 David Kilzer <ddkilzer@apple.com>
-
- Bug 21418: resolve-ChangeLogs should have a --continue option which does git rebase --continue
-
- <https://bugs.webkit.org/show_bug.cgi?id=21418>
-
- Reviewed by Darin Adler.
-
- * Scripts/resolve-ChangeLogs: Added -c|--continue switch that
- runs "git rebase --continue" before exiting the script.
- (hasGitUnmergedFiles): Added. Returns true if there are
- unmerged files in the git repository.
-
-2009-05-11 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Holger Freyther.
-
- [Qt] Make sure that public APIs are properly exported on all Qt platforms
- https://bugs.webkit.org/show_bug.cgi?id=25601
-
- * Scripts/webkitdirs.pm: Remove QT_SHARED define from Qt builds, define QT_MAKEDLL in WebCore.pro instead
-
-2009-05-07 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes for Python extension and DRT.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (MyApp::OnInit):
- * wx/build-wxwebkit:
-
-2009-05-07 Steve Falkenburg <sfalken@apple.com>
-
- Remove manifest fixup from r42729 to fix clean builds.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2009-05-06 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, fixes for wx trunk builds.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (MyApp::OnInit):
- * wx/build-wxwebkit:
-
-2009-05-06 Steve Falkenburg <sfalken@apple.com>
-
- Explicitly set WebKitPaintNativeControls to false to allow Windows results to match Mac.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-05-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Build QtWebKit as a framework on Mac
-
- This implies both debug and release build by default, unless
- one of the --debug or --release config options are passed to
- the build-webkit script.
-
- Frameworks can be disabled by passing CONFIG+=webkit_no_framework
- to the build-webkit script.
-
- To be able to build both debug and release targets in parallel
- we have to use separate output directories for the generated
- sources, which is not optimal, but required to avoid race conditions.
-
- An optimization would be to only require this spit-up on Mac.
-
- * Scripts/webkitdirs.pm:
-
-2009-05-05 Darin Adler <darin@apple.com>
-
- Try to fix Mac build.
-
- * DumpRenderTree/AccessibilityUIElement.cpp: (elementAtPointCallback): Initialize x and y.
-
-2009-05-05 Maclolm MacLeod <mmacleod@webmail.co.za>
-
- Reviewed by Kevin Ollivier.
-
- Have wxWebkit make use of gcc(4 and greater) hidden visibility feature
-
- https://bugs.webkit.org/show_bug.cgi?id=24345
-
- * wx/build-wxwebkit:
-
-2009-05-05 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Bug 25574: AXImageMap children links don't respond properly to accessibilityHitTest:
- https://bugs.webkit.org/show_bug.cgi?id=25574
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (elementAtPointCallback):
- (getXCallback):
- (getYCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (descriptionOfValue):
- (AccessibilityUIElement::elementAtPoint):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::supportsPressAction):
- (AccessibilityUIElement::lineForIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::elementAtPoint):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
-
-2009-05-06 Christian Dywan <christian@twotoasts.de>
-
- Reviewed by Gustavo Noronha.
-
- http://bugs.webkit.org/show_bug.cgi?id=17066
- [GTK] Improve frameloader signals
-
- Update GtkLauncher to use the new load-status and progress properties
- instead of the previous loading signals.
-
- * GtkLauncher/main.c:
- (update_title):
- (notify_load_status_cb):
- (notify_progress_cb):
- (create_browser):
- (create_window):
-
-2009-05-05 Adam Roben <aroben@apple.com>
-
- Don't use pdevenv when building with VC++ Express
-
- Fixes Bug 25308: REGRESSION (r42182): Build fails after following
- build instructions on webkit.org fail when using VC++ Express
- <https://bugs.webkit.org/show_bug.cgi?id=25308>
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitdirs.pm:
- (setupCygwinEnv): When Visual Studio is installed, set $vcBuildPath to
- point to pdevenv. When VC++ Express is installed, set $vcBuildPath to
- point to VC++ Express, as before.
- (buildVisualStudioProject): Use $vcBuildPath to build instead of
- hard-coding pdevenv.
-
-2009-05-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Simon Hausmann.
-
- Mention --qt as an option in the build-webkit help
-
- * Scripts/build-webkit:
-
-2009-05-04 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Alexey Proskuryakov.
-
- Enable spell-checking in DumpRenderTree.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-05-04 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Eric Seidel.
-
- Initial DRT implementation for wx.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/wx: Added.
- * DumpRenderTree/wx/DumpRenderTree.bkl: Added.
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp: Added.
- (LayoutWebViewEventHandler::LayoutWebViewEventHandler):
- (LayoutWebViewEventHandler::bindEvents):
- (LayoutWebViewEventHandler::OnLoadEvent):
- (LayoutWebViewEventHandler::OnAlertEvent):
- (LayoutWebViewEventHandler::OnConfirmEvent):
- (LayoutWebViewEventHandler::OnPromptEvent):
- (LayoutWebViewEventHandler::OnConsoleMessageEvent):
- (LayoutWebViewEventHandler::OnReceivedTitleEvent):
- (LayoutWebViewEventHandler::OnWindowObjectClearedEvent):
- (notifyDoneFired):
- (dumpFramesAsText):
- (dump):
- (runTest):
- (MyApp::OnInit):
- * DumpRenderTree/wx/DumpRenderTreeWx.h: Added.
- * DumpRenderTree/wx/GCControllerWx.cpp: Added.
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: Added.
- (LayoutTestController::~LayoutTestController):
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::copyDecodedHostName):
- (LayoutTestController::copyEncodedHostName):
- (LayoutTestController::display):
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::notifyDone):
- (LayoutTestController::pathToLocalResource):
- (LayoutTestController::queueLoad):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setTabKeyCyclesThroughElements):
- (LayoutTestController::setUseDashboardCompatibilityMode):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setWindowIsKey):
- (LayoutTestController::setSmartInsertDeleteEnabled):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setWaitToDump):
- (LayoutTestController::windowCount):
- (LayoutTestController::setPrivateBrowsingEnabled):
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
- (LayoutTestController::execCommand):
- (LayoutTestController::setPersistentUserStyleSheetLocation):
- (LayoutTestController::clearPersistentUserStyleSheet):
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::setDatabaseQuota):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::setIconDatabaseEnabled):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::isCommandEnabled):
- (LayoutTestController::webHistoryItemCount):
- (LayoutTestController::waitForPolicyDelegate):
- * DumpRenderTree/wx/WorkQueueItemWx.cpp: Added.
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- * Scripts/build-dumprendertree:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
- * wx/build-wxwebkit:
-
-2009-05-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Don't pass an exception parameter if we don't care about the value.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2009-05-02 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Another cut at getting tests passing on Windows again.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didStartProvisionalLoadForFrame): Tweak formatting.
- (FrameLoadDelegate::didFailProvisionalLoadWithError): Ditto.
- (FrameLoadDelegate::didCommitLoadForFrame): Ditto.
- (FrameLoadDelegate::didFinishLoadForFrame): Ditto.
- (FrameLoadDelegate::didFailLoadWithError): Added missing logging.
-
-2009-05-02 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Try to get tests passing on Windows again.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldLogFrameLoadDelegates): Allow either "/" or "\" as a path
- separator. Also require separator before as well as after path name.
-
-2009-04-30 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, define ENABLE_JAVASCRIPT_DEBUGGER.
-
- * wx/build-wxwebkit:
-
-2009-04-30 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- https://bugs.webkit.org/show_bug.cgi?id=25470
- Extend the cover of ENABLE_JAVASCRIPT_DEBUGGER to profiler.
-
- * Scripts/build-webkit: Added ENABLE_JAVASCRIPT_DEBUGGER define.
-
-2009-04-29 Mark Rowe <mrowe@apple.com>
-
- Update build.webkit.org configuration for the addition of the new GTK buildbot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-04-29 Mark Rowe <mrowe@apple.com>
-
- Ignore the --use-remote-links-to-tests option for GTK as it leads to
- perl errors being spewed at the end of run-webkit-tests.
-
- * Scripts/run-webkit-tests:
-
-2009-04-29 Mark Rowe <mrowe@apple.com>
-
- Implement test-result-archive for GTK.
-
- * BuildSlaveSupport/test-result-archive:
-
-2009-04-28 Pierre d'Herbemont <pdherbemont@apple.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=25462
-
- Make sure "--pixel --add-platform-exceptions" produces platform
- specific pixel test results.
-
- * Scripts/run-webkit-tests: Support "--pixel
- --add-platform-exceptions"
-
-2009-04-28 Steve Falkenburg <sfalken@apple.com>
-
- Fix link warnings building TestNetscapePlugin on Windows due to mismatched
- DLL name vs. LIBRARY directive name.
-
- Reviewed by Jon Honeycutt.
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def: Added.
-
-2009-04-28 Steve Falkenburg <sfalken@apple.com>
-
- Fix warnings about PRODUCTION and ARCHIVE_BUILD on Windows builds
- of ImageDiff and DumpRenderTree.
-
- Rubber stamped by Adam Roben.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2009-04-28 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Add ability to get the children count of an AX element.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getChildrenCountCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::childrenCount):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::childrenCount):
-
-2009-04-27 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Make layout tests / jsc tests usable without build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=21784
-
- This requires WEBKITOUTPUTDIR to be set to the build directory.
- Set the location of the product dir to the location pointed to by
- WEBKITOUTPUTDIR.
-
- * Scripts/webkitdirs.pm:
-
-2009-04-27 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Adam Roben.
-
- Use libsoup's facilities to resolve relative URLs, instead, since
- it is a more robust method.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::queueLoad):
-
-2009-04-26 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Xan Lopez.
-
- Resolve relative URLs when queueing loads. This fixes
- post-goback-same-url.html timing out.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::queueLoad):
-
-2009-04-24 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Switching JSCore from a static lib to a dynamic lib
- to match the Apple build and fix symbol exports.
-
- * wx/build-wxwebkit:
-
-2009-04-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add PrettyPatch support to run-webkit-tests
-
- * Scripts/run-webkit-tests:
-
-2009-04-24 Steve Falkenburg <sfalken@apple.com>
-
- Fix nightly for Windows x64 users.
- Installed browser location is written to a slightly different registry key in that case.
-
- * FindSafari/FindSafari.cpp:
- (getInstalledWebKitDirectory):
-
-2009-04-23 Mark Rowe <mrowe@apple.com>
-
- Fix the Windows DRT build.
-
- * DumpRenderTree/win/PolicyDelegate.h:
-
-2009-04-23 Brady Eidson <beidson@apple.com>
-
- Fix Windows DRT build.
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::unableToImplementPolicyWithError):
-
-2009-04-22 Brady Eidson <beidson@apple.com>
-
- Reviewed by Maciej Stachowiak
-
- Add additional support for test:
- <rdar://problem/5689748> - Cannot redirect to protocols handled by external applications.
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:unableToImplementPolicyWithError:frame:]): Dump formatted information when
- a policy cannot be implemented.
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::unableToImplementPolicyWithError): Ditto.
- * DumpRenderTree/win/PolicyDelegate.h:
-
-2009-04-22 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- Fix for <rdar://problem/6816957>
- Turn off Geolocation by default
-
- * Scripts/build-webkit:
-
-2009-04-21 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- - dump the node in the element dictionary in the action information
- passed to the policy delegate
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (dumpPath):
- (PolicyDelegate::decidePolicyForNavigationAction):
-
-2009-04-21 Adam Roben <aroben@apple.com>
-
- Windows build fix after r42726
-
- * DumpRenderTree/win/DumpRenderTree.cpp: Touched to force a rebuild.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Delete any pre-r42726
- manifest files during the pre-build event.
-
-2009-04-21 Steve Falkenburg <sfalken@apple.com>
-
- Use new WebKitCreateInstance API instead of CoCreateInstance
- or COMPtr's createInstance to instantiate WebKit COM objects.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize):
- (runTest):
- (createWebViewAndOffscreenWindow):
- (main):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/GCControllerWin.cpp:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::webHistoryItemCount):
- (LayoutTestController::setIconDatabaseEnabled):
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- (LoadItem::invoke):
-
-2009-04-20 Timothy Hatcher <timothy@apple.com>
-
- Stop using the fullDocumentTeardownEnabled WebPreference methods.
- Just set the WebKitEnableFullDocumentTeardownPreferenceKey default.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-04-21 Geoffrey Garen <ggaren@apple.com>
-
- Rubber-stamped by Adam Roben.
-
- Disabled one more Mozilla JS test because it fails intermittently on Windows.
- (See https://bugs.webkit.org/show_bug.cgi?id=25160.)
-
- * Scripts/run-javascriptcore-tests:
-
-2009-04-21 Adam Roben <aroben@apple.com>
-
- Fix running run-safari and run-webkit-tests from the paths recommended
- on webkit.org
-
- Reviewed by Steve Falkenburg and Sam Weinig.
-
- * Scripts/run-webkit-nightly.cmd: Moved quotes from variable
- definitions to variable uses. Otherwise cmd.exe can get confused about
- the quoting.
- * Scripts/run-webkit-tests: Changed to use an absolute path to
- execAppWithEnv so that run-webkit-tests will work when run from
- outside the source tree.
-
-2009-04-21 Adam Roben <aroben@apple.com>
-
- Rename JavaScriptCore_debug.dll to JavaScriptCore.dll in the Debug
- configuration
-
- This matches the naming scheme for WebKit.dll, and will be necessary
- once Safari links against JavaScriptCore.dll. This change also causes
- run-safari not to fail (because the launcher printed by FindSafari was
- always looking for JavaScriptCore.dll, never
- JavaScriptCore_debug.dll).
-
- Part of Bug 25305: can't run safari or drt on windows
- <https://bugs.webkit.org/show_bug.cgi?id=25305>
-
- Reviewed by Steve Falkenburg and Sam Weinig.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Use
- $(WebKitDLLConfigSuffix) for naming JavaScriptCore.{dll,lib}.
-
-2009-04-21 Steve Falkenburg <sfalken@apple.com>
-
- Update FindSafari for JavaScriptCore DLL changes.
- Also removed code previously needed to support running nightlies against Safari 3 on Windows.
-
- Reviewed by Mark Rowe.
-
- * FindSafari/FindSafari.cpp:
- (getStringValue):
- (getInstalledWebKitDirectory):
- (_tmain):
-
-2009-04-20 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added PlainTextController.h
- and PlainTextController.mm.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didClearWindowObject:forFrame:]): Added PlainTextController
- as "window.plainText".
-
- * DumpRenderTree/mac/PlainTextController.h: Added.
- * DumpRenderTree/mac/PlainTextController.mm: Added.
-
-2009-04-20 Steve Falkenburg <sfalken@apple.com>
-
- Separate JavaScriptCore.dll from WebKit.dll.
- Slight performance improvement or no change on benchmarks.
-
- Allows us to break a circular dependency between CFNetwork and WebKit on Windows,
- and simplifies standalone JavaScriptCore builds.
-
- Reviewed by Oliver Hunt.
-
- * DumpRenderTree/config.h: Specify JS, WebKit exported data as __declspec(dllimport)
- * DumpRenderTree/win/DumpRenderTree.vcproj: Link against JavaScriptCore.dll
-
-2009-04-20 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Tim Hatcher.
-
- Add licenses for xcconfig files.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
- * DumpRenderTree/mac/Configurations/ImageDiff.xcconfig:
- * DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig:
-
-2009-04-19 David Kilzer <ddkilzer@apple.com>
-
- Make FEATURE_DEFINES completely dynamic
-
- Reviewed by Darin Adler.
-
- Make FEATURE_DEFINES depend on individual ENABLE_FEATURE_NAME
- variables for each feature, making it possible to remove all
- knowledge of FEATURE_DEFINES from build-webkit.
-
- * Scripts/build-webkit: Define individual ENABLE_FEATURE_NAME
- variables instead of the whole FEATURE_DEFINES string when
- building with Xcode. Miscellaneous clean up:
- - Reordered/sorted command-line switch variables.
- - Reordered/sorted command-line switches in $usage.
- - Reordered/sorted command-line switches in GetOptions().
- - Defined $svgSupport to true if any --svg-feature switch is
- set in order to match "Implies SVG Support" claim.
- - Build JavaScriptGlue after JavaScriptCore again!
- - Fixed --[no-]geolocation for GTK+ port and sorted GTK+
- command-line switches.
- - Added "exit 0" statement at the end of the script.
-
-2009-04-17 David Kilzer <ddkilzer@apple.com>
-
- Simplify FEATURE_DEFINES definition
-
- Reviewed by Darin Adler.
-
- This moves FEATURE_DEFINES and its related ENABLE_FEATURE_NAME
- variables to their own FeatureDefines.xcconfig file. It also
- extracts a new ENABLE_GEOLOCATION variable so that
- FEATURE_DEFINES only needs to be defined once.
-
- * Scripts/build-webkit: Realphabetized code related to enabling
- Geolation features for WebKit. Also set ENABLE_GEOLOCATION
- variable for xcodebuild.
-
-2009-04-16 Darin Fisher <darin@chromium.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=25223
- REGRESSION: Back button after form submission to the same URL fails to navigate.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate processWork:]): Need to defer processing the work
- queue if a navigation started between locationChangeDone and our
- delayed processWork call. This can happen when using queueLoadingScript
- to load script that simulates a click on a link or submit button since
- those clicks happen asynchronously.
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::processWork): Same as above.
-
-2009-04-16 Geoffrey Garen <ggaren@apple.com>
-
- Build fix: updated check-for-global-initializers to account for code motion.
-
- * Scripts/check-for-global-initializers:
-
-2009-04-16 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Adam Roben.
-
- Compare test's response mime type and dump test as text properly.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
-
-
-2009-04-16 Adam Roben <aroben@apple.com>
-
- Skip yet another JavaScriptCore test that sometimes fails on Windows
-
- See Bug 25160: Various ecma/Date tests sometimes fail on Windows (but
- not Mac)
- <https://bugs.webkit.org/show_bug.cgi?id=25160>
-
- * Scripts/run-javascriptcore-tests: Skip ecma/Date/15.9.2.2-6.js.
-
-2009-04-15 Steve Falkenburg <sfalken@apple.com>
-
- Redo last build fix in a more straightforward way.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (sharedCFURLCache):
-
-2009-04-15 Steve Falkenburg <sfalken@apple.com>
-
- Fix Windows build of DumpRenderTree.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (sharedCFURLCache):
- (main):
-
-2009-04-15 Adam Roben <aroben@apple.com>
-
- Skip yet another JavaScriptCore test that sometimes fails on Windows
-
- See Bug 25160: Various ecma/Date tests sometimes fail on Windows (but
- not Mac)
- <https://bugs.webkit.org/show_bug.cgi?id=25160>
-
- * Scripts/run-javascriptcore-tests: Skip ecma/Date/15.9.2.2-2.js (who
- didn't see it coming?).
-
-2009-04-14 Adam Roben <aroben@apple.com>
-
- Skip another JavaScriptCore test that sometimes fails on Windows
-
- See Bug 25160: Various ecma/Date tests sometimes fail on Windows (but
- not Mac)
- <https://bugs.webkit.org/show_bug.cgi?id=25160>
-
- Rubber-stamped by Geoff Garen.
-
- * Scripts/run-javascriptcore-tests: Skip ecma/Date/15.9.2.2-3.js.
-
-2009-04-14 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Move the DerivedSources.make calls into build-wxwebkit so that
- the FEATURE_DEFINES are parsed properly.
-
- * wx/build-wxwebkit:
-
-2009-04-14 Adam Roben <aroben@apple.com>
-
- Small run-javascriptcore-tests cleanup
-
- Reviewed by Cameron Zwarich.
-
- * Scripts/run-javascriptcore-tests: Move the list of tests to skip
- into its own variable, annotated with the bugs that are filed about
- the various failures.
-
-2009-04-14 Adam Roben <aroben@apple.com>
-
- Skip another sometimes-failing ecma/Date test on Windows
-
- These failing tests are covered by Bug 25160: Various ecma/Date tests
- sometimes fail on Windows (but not Mac)
- <https://bugs.webkit.org/show_bug.cgi?id=25160>
-
- Reviewed by Cameron Zwarich.
-
- * Scripts/run-javascriptcore-tests: Added ecma/Date/15.9.2.1.js to the
- list of tests to skip.
-
-2009-04-14 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] disable soup auth dialog when running DRT
- https://bugs.webkit.org/show_bug.cgi?id=24598
-
- Disable soup's auth dialog when running the tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
- * GNUmakefile.am:
-
-2009-04-13 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- * Scripts/check-for-exit-time-destructors: Add ERROR: and WARNING: prefixes to
- make these scripts work better with the build window in new versions of Xcode.
- * Scripts/check-for-global-initializers: Ditto.
- * Scripts/check-for-weak-vtables: Ditto.
-
-2009-04-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Disabled another JavaScriptCore test because it fails on Windows but
- not Mac, so it makes the bots red.
-
- * Scripts/run-javascriptcore-tests:
-
-2009-04-13 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Disabled two JavaScriptCore tests because they fail on Window or Mac but
- not both, so they make the bots red.
-
- * Scripts/run-javascriptcore-tests:
-
-2009-04-13 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Added another exception.
-
-2009-04-10 Adam Roben <aroben@apple.com>
-
- Add our new test font to the list that DRT knows about
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (initialize): Added WebKit Layout Tests 2.ttf.
-
-2009-04-09 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Unreviewed Gtk build fix for undefined reference: g_thread_init.
- Add GLIB_LIBS to DRT and GtkLauncher build config.
-
- * GNUmakefile.am:
-
-2009-04-09 David Kilzer <ddkilzer@apple.com>
-
- Reinstating <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
-
- Rolled r42345 back in. The build failure was caused by an
- internal script which had not been updated the same way that
- build-webkit was updated.
-
- * Scripts/build-webkit:
-
-2009-04-09 David Levin <levin@chromium.org>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=25101
-
- Launch DumpRenderTree and the image diff tool in a way that will work from perl threads.
- This is a workaround due to a perl limitation. When perl does open* calls on a thread, it ignores
- the environment of the current thread and simply uses the environment of the main thread instead.
-
- * Scripts/execAppWithEnv: Added.
- * Scripts/run-webkit-tests:
-
-2009-04-09 Alexey Proskuryakov <ap@webkit.org>
-
- Reverting <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings.
- It broke Mac build, and I don't know how to fix it.
-
- * Scripts/build-webkit:
-
-2009-04-08 David Kilzer <ddkilzer@apple.com>
-
- <rdar://problem/6718589> Option to turn off SVG DOM Objective-C bindings
-
- Reviewed by Darin Adler and Maciej Stachowiak.
-
- Introduce the ENABLE_SVG_DOM_OBJC_BINDINGS feature define so
- that SVG DOM Objective-C bindings may be optionally disabled.
-
- * Scripts/build-webkit: Added --[no-]svg-dom-objc-bindings
- command-line argument. Set special ENABLE_SVG_DOM_OBJC_BINDINGS
- Xcode variable required by WebCore.xcconfig.
-
-2009-04-07 Adam Roben <aroben@apple.com>
-
- Print the number of files being compiled when using pdevenv
-
- * Scripts/parallelcl:
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Land the current build.webkit.org configuration for safekeeping.
-
- * BuildSlaveSupport/build.webkit.org-config/README: Added.
- * BuildSlaveSupport/build.webkit.org-config/Makefile:
- * BuildSlaveSupport/build.webkit.org-config/buildbot.tac:
- * BuildSlaveSupport/build.webkit.org-config/config.json: Added.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/build.webkit.org-config/public_html/buildbot.css: Renamed from BuildSlaveSupport/build.webkit.org-config/buildbot.css.
- * BuildSlaveSupport/build.webkit.org-config/public_html/index.html: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/robots.txt: Added.
- * BuildSlaveSupport/build.webkit.org-config/webkit/__init__.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/auth.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/basesteps.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/builders.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/factories.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/schedulers.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/status.py: Removed.
- * BuildSlaveSupport/build.webkit.org-config/webkit/steps.py: Removed.
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Ignore the mysterious exception that Cygwin's Python is throwing when attempting
- to remove the layout-test-results directory.
-
- * BuildSlaveSupport/test-result-archive:
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Change the working directory before removing the test result directory
- in the hopes of making the Windows build slaves happier.
-
- * BuildSlaveSupport/test-result-archive:
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adam Roben.
-
- Make the links to tests in the uploaded results.html files on build.webkit.org point to the test files.
-
- * Scripts/VCSUtils.pm: Add a function that will return the location of a file relative to the root of the working copy.
- * Scripts/run-webkit-tests: Convert the path in to a remote URL if the path is below the layout tests directory.
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Remove the layout-test-results directory after we have archived it so that
- log files and results are reset between runs of the tests.
-
- * BuildSlaveSupport/test-result-archive:
-
-2009-04-07 Mark Rowe <mrowe@apple.com>
-
- Helper script for uploading layout test results for display on build.webkit.org.
-
- * BuildSlaveSupport/test-result-archive: Copied from WebKitTools/BuildSlaveSupport/built-product-archive.
-
-2009-04-11 Brian Weinstein <bweinstein@gmail.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=24908
-
- Allows timeout to be set in run-webkit-tests as a command line argument.
-
- * Scripts/run-webkit-tests:
-
-2009-04-06 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Rubber-stamped by Tor Arne Vestbø.
-
- Add /Programs to the productDir for GTK+, instead of adding
- /JavaScriptCore, when running jsc.
-
- * Scripts/run-sunspider:
-
-2009-04-04 Kevin Ollivier <kevino@theolliviers.com>
-
- Build fixes for wxMac/Tiger and PPC builds.
-
- * wx/build-wxwebkit:
-
-2009-04-04 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Update the version of ICU dlls.
-
- * wx/build-wxwebkit:
-
-2009-04-03 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix running DumpRenderTree with a root.
-
- * Scripts/run-webkit-tests:
-
-2009-04-02 Adam Roben <aroben@apple.com>
-
- Build fix for Windows machines that don't have WebKitTools/Scipts in
- their PATH
-
- * Scripts/pdevenv: Add WebKitTools/Scripts to PATH when launching
- Visual Studio/VC++ Express.
-
-2009-04-02 Adam Roben <aroben@apple.com>
-
- Use pdevenv when building .vcproj files via our scripts
-
- Reviewed by Mark Rowe.
-
- * Scripts/webkitdirs.pm:
- (sub buildVisualStudioProject): Use pdevenv instead of invoking Visual
- Studio/VC++ Express directly.
-
-2009-04-01 Mark Rowe <mrowe@apple.com>
-
- Windows support for built-product-archive.
-
- * BuildSlaveSupport/built-product-archive:
-
-2009-03-31 Adam Roben <aroben@apple.com>
-
- Make resolve-ChangeLogs -f work when the working tree has spaces in
- its path
-
- Reviewed by Mark Rowe and David Kilzer.
-
- * Scripts/resolve-ChangeLogs:
- (sub fixMergedChangeLogs): Quote the path to resolve-ChangeLogs in
- case it contains spaces.
-
-2009-03-31 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=24777
- WebKit tools are broken on Tiger
-
- * Scripts/webkitdirs.pm: Don't use arch command with options on Tiger.
-
-2009-03-31 Darin Adler <darin@apple.com>
-
- * Scripts/add-include: Added.
-
-2009-03-31 Mark Rowe <mrowe@apple.com>
-
- Fix use of incorrect constant.
-
- * BuildSlaveSupport/built-product-archive:
-
-2009-03-30 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Stephanie Lewis.
-
- Add a script in support of the new build.webkit.org configuration.
-
- * BuildSlaveSupport/built-product-archive: Added.
-
-2009-03-30 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make policy-delegate logging work even for local files by processing the URLs as we
- do for other delegates.
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
- Use _drt_descriptionSuitableForTestResult on the URL.
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::decidePolicyForNavigationAction): Use urlSuitableForTestResult on the URL.
-
-2009-03-30 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::waitForPolicyDelegate): Added this empty stub.
-
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- (LoadItem::invoke):
- (ScriptItem::invoke):
- Changed to use data members instead of removed member functions.
-
-2009-03-30 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk DRT build fix per changeset
- http://trac.webkit.org/changeset/42082. Not reviewed.
-
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (LoadItem::invoke):
- (ScriptItem::invoke):
-
-2009-03-29 Darin Adler <darin@apple.com>
-
- * DumpRenderTree/qt/jsobjects.cpp: Rolled out changes to this file. Maybe this will fix
- Qt building of DumpRenderTree.
-
-2009-03-29 Darin Adler <darin@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Bug 24922: change WorkQueue-based navigation tests to not depend on synchronous form submission
- https://bugs.webkit.org/show_bug.cgi?id=24922
-
- Don't rely on delegate methods to guess whether a queued step starts a load or not, because
- script-triggered loads can't be detected that way. Instead have the steps themselves indicate
- whether or not a load was triggered.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (queueLoadingScriptCallback): Added. Version for scripts that perform loads.
- (queueNonLoadingScriptCallback): Added. Version for scripts that do not perform loads.
- (LayoutTestController::staticFunctions): Replaced queueScript with queueLoadingScript and
- queueNonLoadingScript.
- (LayoutTestController::queueBackNavigation): Moved here since it's platform-independent now.
- (LayoutTestController::queueForwardNavigation): Ditto.
- (LayoutTestController::queueLoadingScript): Replacement for queueScript. Here since it's
- platform-independent.
- (LayoutTestController::queueNonLoadingScript): Ditto.
- (LayoutTestController::queueReload): Moved here since it's platform-independent now.
- * DumpRenderTree/LayoutTestController.h: Ditto.
-
- * DumpRenderTree/WorkQueue.cpp:
- (WorkQueue::processWork): Added. Shared by the different platform's work queue implementations.
- * DumpRenderTree/WorkQueue.h: Ditto.
-
- * DumpRenderTree/WorkQueueItem.h: Changed the invoke function to return true if the item
- started a load. Removed unused getter functions. Made invoke functions private.
- Added LoadingScriptItem and NonLoadingScriptItem, making ScriptItem an abstract base.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (processWork): Use the new WorkQueue::processWork function to implement the new rule.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Removed queue functions that are now
- platform-independent and in LayoutTestController.cpp.
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (LoadItem::invoke): Return true.
- (ReloadItem::invoke): Ditto.
- (ScriptItem::invoke): Ditto.
- (BackForwardItem::invoke): Ditto.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate processWork:]): Use the new WorkQueue::processWork function to implement
- the new rule.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Removed queue functions that are now
- platform-independent and in LayoutTestController.cpp.
- * DumpRenderTree/mac/WorkQueueItemMac.mm:
- (LoadItem::invoke): Return true.
- (ReloadItem::invoke): Ditto.
- (ScriptItem::invoke): Ditto.
- (BackForwardItem::invoke): Ditto.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::processWork): Use the new WorkQueue::processWork function to implement
- the new rule. Removed queue functions that are now platform-independent and in
- LayoutTestController.cpp.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::processWork): Use the new WorkQueue::processWork function to implement
- the new rule.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Removed queue functions that are now
- platform-independent and in LayoutTestController.cpp.
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- (LoadItem::invoke): Return false when we fail, true when we succeed.
- (ReloadItem::invoke): Ditto.
- (ScriptItem::invoke): Ditto.
- (BackForwardItem::invoke): Ditto.
-
-2009-03-28 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Eric Seidel.
-
- Always use wxGraphicsContext on Mac to ensure path, matrix, etc. support.
-
- * wx/build-wxwebkit:
-
-2009-03-27 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- * Scripts/extract-localizable-strings: Fixed version check for perl 5.10 compatibility.
-
-2009-03-27 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added waitForPolicyDelegate, a more-reliable way to make our mailto form submission
- tests work.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (getFocusedElementCallback): Use static_cast instead of reinterpret_cast because there's
- no reason to use reinterpret_cast just to get from void* to a specific type.
- (getRootElementCallback): Ditto.
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (toAXElement): Ditto.
- * DumpRenderTree/GCController.cpp:
- (collectCallback): Ditto.
- (collectOnAlternateThreadCallback): Ditto.
- (getJSObjectCountCallback): Ditto.
- * DumpRenderTree/LayoutTestController.cpp:
- (many functions): Ditto.
- (waitForPolicyDelegateCallback): Added.
- (LayoutTestController::staticFunctions): Sorted functions by name.
- Added waitForPolicyDelegate.
-
- * DumpRenderTree/LayoutTestController.h: Sorted functions by name.
- Added waitForPolicyDelegate.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting): Added code to reset the state of the
- policy delegate.
- (runTest): Added an additional call to resetWebViewToConsistentStateBeforeTesting just
- before loading an empty page. This prevents extra policy delegate calls from being logged.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::waitForPolicyDelegate): Added. Puts us into wait mode, and then
- tells the policy delegate to notify when done, then points the web view at the policy delegate.
-
- * DumpRenderTree/mac/PolicyDelegate.h: Added setControllerToNotifyDone: method.
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
- Added code to do notifyDone if controllerToNotifyDone is set.
- (-[PolicyDelegate setControllerToNotifyDone:]): Added.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): Added code to reset the state of the
- policy delegate. Also moved the call to resetUndoManager in here.
- (runTest): Removed the call to resetUndoManager (see above). Added an additional call to
- resetWebViewToConsistentStateBeforeTesting to match the Mac code.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate): 0, not NULL.
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::PolicyDelegate): Initialize m_controllerToNotifyDone to 0.
- (PolicyDelegate::decidePolicyForNavigationAction): Added code to do notifyDone if
- m_controllerToNotifyDone is set.
-
- * DumpRenderTree/win/PolicyDelegate.h: Added setControllerToNotifyDone and
- m_controllerToNotifyDone.
-
-2009-03-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=24765
- prepare-ChangeLog and svn-create-patch doesn't work with svn 1.6
-
- * Scripts/prepare-ChangeLog:
- * Scripts/svn-create-patch:
-
-2009-03-26 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- * Scripts/do-webcore-rename:Update for rename of JSUnprotectedEventListener to
- JSEventListener.
-
-2009-03-26 Darin Adler <darin@apple.com>
-
- Reviewed by Geoff Garen.
-
- * Scripts/do-webcore-rename: Update for rename of JSEventListener to
- JSProtectedEventListener. This includes all the related renames, but
- not that one because that one renames the file.
-
-2009-03-26 Adam Roben <aroben@apple.com>
-
- Reduce run-webkit-tests's time out limit to 15 seconds (or 2.5 minutes
- under GuardMalloc)
-
- The previous limit was 60 seconds (or 10 minutes under GuardMalloc).
- There's no evidence that we need the limit to be this long, and having
- it be so long just makes timed-out tests take forever to complete.
- DRT's watchdog timer is 10 seconds, so still has time to fire before
- run-webkit-tests will cut it off.
-
- Reviewed by Simon Fraser.
-
- * Scripts/run-webkit-tests:
- (sub readFromDumpToolWithTimer): Reduced the limit to 15 seconds (or
- 2.5 mintues under GuardMalloc).
-
-2009-03-26 Adam Roben <aroben@apple.com>
-
- Make DRT's watchdog timer actually work on Windows
-
- We were previously trying to use a CFRunLoopTimer for the watchdog
- timer on Windows. This doesn't work because we don't use a CFRunLoop
- on the main thread on Windows.
-
- This patch changes the watchdog timer on Windows be a normal Windows
- timer.
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/DumpRenderTree.h: Moved declaration of
- waitToDumpWatchdog from here...
- * DumpRenderTree/mac/DumpRenderTreeMac.h: ...to here.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (invalidateAnyPreviousWaitToDumpWatchdog): Added. This function
- cancels an existing watchdog timer.
- (dump): Call invalidateAnyPreviousWaitToDumpWatchdog. This will
- prevent watchdogs from previous tests firing during subsequent ones.
- This matches Mac's behavior.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Added a declaration of
- waitToDumpWatchdog.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (waitUntilDoneWatchdogFired): Converted this to be a Windows
- TIMERPROC.
- (LayoutTestController::setWaitToDump): Changed to use SetTimer instead
- of CFRunLoopAddTimer.
-
-2009-03-25 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Steve Falkenburg.
-
- Update test result search path for Windows now that it has updated versions of ICU, libxml2, and friends.
-
- * Scripts/run-webkit-tests:
-
-2009-03-24 Mark Rowe <mrowe@apple.com>
-
- Fix the Tiger build some more.
-
- * DumpRenderTree/mac/TextInputController.m:
-
-2009-03-24 Mark Rowe <mrowe@apple.com>
-
- Fix the Tiger build.
-
- * DumpRenderTree/mac/TextInputController.m:
-
-2009-03-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Jon "The Most Boring Man in the World" Honeycutt.
-
- Explicitly map NSNotFound to -1 so that the result of-characterIndexForPointX:Y: does
- not differ between 32- and 64-bit.
-
- * DumpRenderTree/mac/TextInputController.m:
- (-[TextInputController characterIndexForPointX:Y:]):
-
-2009-03-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Use a different platform search path for tests and skip lists, so that Tiger doesn't end up
- using the Leopard skip list. Tests and skip lists are now looked for in the directory for
- the current OS and the generic "mac" directory. Tests and skip lists for newer OS versions are
- ignored.
-
- * Scripts/run-webkit-tests:
-
-2009-03-23 Stephanie <slewis@apple.com>
-
- Fix root build.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2009-03-23 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- Add production configuration for creating roots of WebKitTools.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2009-03-23 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen.
-
- Make testapi run as part of the standard JavaScriptCore tests.
-
- We only run testapi on the mac as currently windows webkit doesn't
- place all the necessary files for testapi, and we also test the
- JSC/CF APIs as well.
-
- * Scripts/run-javascriptcore-tests:
-
-2009-03-21 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Mark Rowe.
-
- Make build-jsc build testapi and minidom in addition to jsc itself.
-
- * Scripts/build-jsc:
-
-2009-03-20 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler.
-
- Only release the result NPVariant if the call to NPN_Invoke was successful.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testNPRuntime):
-
-2009-03-19 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Mark Rowe.
-
- Make determinePassedArchitecture always consume the --32-bit
- option, also in non-AppleMacWebkit platforms. Solution pointed out
- by Mark Rowe.
-
- * Scripts/webkitdirs.pm:
-
-2009-03-19 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Work around <rdar://problem/6698023> by activating fonts from disk.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Copy fonts into DumpRenderTree.resources
- in the built products directory.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (activateFonts): Activate the fonts from disk.
-
-2009-03-18 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- <rdar://problem/6693300> Don't rely on printf from TestNetscapePlugIn appearing in test results
-
- Switch from using printf to using the NPAPI to invoke console.log so that plug-in messages appear
- in test results even when the plug-in's stdout differs from DumpRenderTree's stdout.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (log): Invoke console.log via the NPAPI.
- (NPP_Destroy): Call log instead of printf.
- (NPP_SetWindow): Ditto.
- (handleEventCarbon): Ditto.
- (handleEventCocoa): Ditto.
- (NPP_HandleEvent): Pass the instance in to the event handler.
-
-2009-03-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Use the normal search rules for tests inside the platform directory.
-
- This allows tests inside the platform directory to have different results
- on different versions of Mac OS X.
-
- * Scripts/run-webkit-tests:
-
-2009-03-17 David Kilzer <ddkilzer@apple.com>
-
- resolve-ChangeLogs should not die on unmerged non-ChangeLog files
-
- Reviewed by Adam Roben.
-
- Fixes the following bug in resolve-ChangeLogs:
-
- Use of uninitialized value in -e at ./WebKitTools/Scripts/resolve-ChangeLogs line 132.
- Died at ./WebKitTools/Scripts/resolve-ChangeLogs line 164.
-
- * Scripts/resolve-ChangeLogs:
- (findUnmergedChangeLogs): Check the result of findChangeLog() to
- make sure we don't add undef values to the list of files being
- returned.
-
-2009-03-17 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Simon Fraser.
-
- Fix the usage of the $architecture variable for non-Apple-Mac
- ports.
-
- * Scripts/webkitdirs.pm:
-
-2009-03-17 David Kilzer <ddkilzer@apple.com>
-
- Bug 24645: bisect-builds script doesn't work with Safari 4 Public Beta (version string)
-
- <https://bugs.webkit.org/show_bug.cgi?id=24645>
-
- Reviewed by Mark Rowe.
-
- * Scripts/bisect-builds:
- (makeNightlyList): Added checks for Safari 4 Public Beta on
- Tiger and Leopard.
-
-2009-03-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler
-
- https://bugs.webkit.org/show_bug.cgi?id=24396
-
- Change the terminology from '3D transforms' to '3D rendering'.
-
- * Scripts/build-webkit:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-03-17 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Mark Rowe.
-
- Enable HTML5 media elements support by default also for the GTK+
- port.
-
- * Scripts/build-webkit:
-
-2009-03-17 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Mark Rowe.
-
- Tweak the BUILDING_ON_* defines so that they work with the default values set by
- AvailabilityMacros.h.
-
- https://bugs.webkit.org/show_bug.cgi?id=24630
-
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
-
-2009-03-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Make coverage testing more reliable by ensuring --coverage does not
- clobber configuration settings, and by removing the unnecessary
- dependency on matplotlib.
-
- * CodeCoverage/regenerate-coverage-display:
- * Scripts/webkitdirs.pm:
-
-2009-03-16 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler and John Sullivan.
-
- When a plug-in instance is torn down, all plug-in objects will first be invalidated and then deallocated.
- Since objects can be deallocated in any order, it is not safe to call NPN_ReleaseObject on member variables.
-
- Instead, just zero out the member variable in invalidate.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvalidate):
- (pluginDeallocate):
-
-2009-03-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Sam Weinig.
-
- REGRESSION: undo-iframe-location-change.html is failing on the buildbots
- https://bugs.webkit.org/show_bug.cgi?id=24626
-
- Added a call to [[webview undoManager] removeAllActions]
- to make sure anything left on the undo stack after one test
- will not affect any later test.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-03-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Change the layout test result search policy for Mac OS X to fit better with the idea of
- newer OS versions improving on previous OS versions.
-
- The results for the latest version of Mac OS X are placed in the "mac" directory. The
- results for older versions of Mac OS X are structured as a series of overlays. When
- running on Leopard, the results in "mac-leopard" are searched before those in "mac".
- When running on Tiger, the results in "mac-tiger" are searched before those in
- "mac-leopard" and "mac".
-
- * Scripts/run-webkit-tests:
-
-2009-03-13 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Take advantage of the ability of recent versions of Xcode to easily switch the active
- architecture.
-
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
-
-2009-03-13 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Timothy Hatcher.
-
- Remove the --64-bit argument from scripts in favor of them detecting when 64-bit should be preferred.
-
- The scripts will automatically target 64-bit if the system and hardware support it. This can be
- overridden by passing --32-bit to individual scripts, or using set-webkit-configuration --32-bit
- to make the override persistent.
-
- * Scripts/build-webkit: Remove architecture-related code.
- * Scripts/gdb-safari: Remove architecture-related code, and clean up how the environment variables are passed to gdb.
- * Scripts/run-javascriptcore-tests: Remove architecture-related code.
- * Scripts/run-safari: Ditto.
- * Scripts/run-webkit-tests: Ditto.
- * Scripts/set-webkit-configuration: Handle the --32-bit and --64-bit arguments. The --32-bit argument will set the
- architecture preference to the 32-bit architecture of the machine. The --64-bit argument will remove any architecture
- override that is in effect so that 64-bit support will be automatically detected.
- * Scripts/webkitdirs.pm: Add auto-detection of the best architecture for the machine, and the ability to override the
- auto-detection.
-
-2009-03-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Dan Bernstein.
-
- <rdar://problem/6610666> Revise the Cocoa event model text API
-
- Add a case statement for NPCocoaEventTextInput.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (handleEventCocoa):
-
-2009-03-12 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Let DerivedSources.make know we want database APIs.
-
- * wx/build-wxwebkit:
-
-2009-03-12 David Kilzer <ddkilzer@apple.com>
-
- Bug 24378: resolve-ChangeLogs should use git status or svn status to find and fix unmerged ChangeLogs
-
- <https://bugs.webkit.org/show_bug.cgi?id=24378>
-
- Reviewed by Adam Roben.
-
- * Scripts/resolve-ChangeLogs: If -f|--fix-merged is not passed
- and no file or directory names are specified on the command-line
- then try to find unmerged ChangeLog files based on 'svn stat' or
- 'git diff'. Added global $isGit and $isSVN variables so that
- isGit() and isSVN() only have to be called once.
- (findUnmergedChangeLogs): Added.
-
-2009-03-11 David Kilzer <ddkilzer@apple.com>
-
- Clarify comments regarding order of FEATURE_DEFINES
-
- Rubber-stamped by Mark Rowe.
-
- * Scripts/build-webkit: Added warning about keeping
- FEATURE_DEFINES in order and the consequences when they are not.
-
-2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Gtk] Implement LayoutTestControllerGtk::setPrivateBrowsingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=24487
-
- Also reset WebSettings to its default state for JavaScript
- profiling, Developer Extras and Private Browsing before running
- the test (can be after each test but we want to be consistent with
- other ports in this regard)
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- (runTest):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setPrivateBrowsingEnabled):
-
-2009-03-11 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [GTK]DumpRenderTree doesn't compile for non-X11 GTK ports anymore
- https://bugs.webkit.org/show_bug.cgi?id=2260
-
- Add plugin support only for X11 builds
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
- * GNUmakefile.am:
-
-2009-03-08 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- Implement setJavaScriptProfilingEnabled by enabling the Developer
- Extras and the JavaScript profiling on the WebKitWebInspector. After
- this change we pass the three enabled tests in fast/profiler.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): Reset setJavaScriptProfilingEnabled after each test run
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
-
-2009-03-07 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] Enable http history tests
- https://bugs.webkit.org/show_bug.cgi?id=24394
-
- Get the index of the current item from the list of (history) items
- to print before adding the back history items to the list. This
- will make the 'curr' pointer point to the correct item in the
- actual results, therefore, passing some of the http/tests/history
- tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpBackForwardListForWebView):
-
-2009-03-06 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by George Staikos.
-
- When building QtWebKit in release mode make sure that QT_SHARED is defined
- otherwise none of the public API will be exported. This leads to missing
- symbols and link errors if hidden-visibility is used.
-
- * Scripts/webkitdirs.pm:
-
-2009-03-06 Adam Roben <aroben@apple.com>
-
- Change the isCygwin check in update-webkit to isAppleWinWebKit
-
- This matches a similar check in build-webkit, and is more correct.
-
- Reviewed by Alexey Proskuryakov.
-
- * Scripts/update-webkit: Only call update-webkit-auxiliary-libs if
- isAppleWinWebKit is true.
-
-2009-03-06 Adam Roben <aroben@apple.com>
-
- Make update-webkit-support-libs fail if WebKitSupportLibrary.zip is
- present but out of date
-
- Reviewed by Alexey Proskuryakov.
-
- * Scripts/update-webkit-support-libs: Changed to use
- dieAndInstructToDownload when the zip file doesn't exist. Added an MD5
- check to make sure the file is up-to-date. If it is out of date, print
- an error message and quit.
- (sub dieAndInstructToDownload): Added. Prints an error message and
- quits with an error.
-
-2009-03-03 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- https://bugs.webkit.org/show_bug.cgi?id=22884
- <rdar://problem/6449783>
- modified layout test crashes Safari
-
- Add destroyNullStream test function to the test plug-in.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (destroyNullStream):
- (pluginInvoke):
-
-2009-03-03 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler
-
- Support layout test covering <rdar://problem/6616664>
-
- Change NSURLRequest/IWebURLRequest dumping to include the mainDocumentURL
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSURLRequest _drt_descriptionSuitableForTestResult]): Return both the request URL and the
- mainDocumentURL.
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (descriptionSuitableForTestResult): Return both the request URL and the mainDocumentURL.
-
-2009-03-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Enable Geolocation (except on Tiger and Leopard).
-
- * Scripts/build-webkit:
-
-2009-03-02 Kevin Ollivier <kevino@theolliviers.com>
-
- Build fixes for wxWidgets Mac trunk build.
-
- * wx/build-wxwebkit:
-
-2009-03-02 Timothy Hatcher <timothy@apple.com>
-
- Allow for multiline quoted text in JavaScript files when looking for function names.
-
- https://bugs.webkit.org/show_bug.cgi?id=24296
-
- Reviewed by David Kilzer.
-
- * Scripts/prepare-ChangeLog:
-
-2009-03-02 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Eric Seidel.
-
- Add three new drt helper functions that enable all of the tests in
- LayoutTests/animation/* and LayoutTests/transitions/* to now pass.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::numberOfActiveAnimations):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-03-02 Adam Roben <aroben@apple.com>
-
- Windows build fix after r41349
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::getChildrenWithRange):
-
-2009-03-01 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Bug 24282: AX Palindrome error when asking for a specific index of the AXChildren array
-
- Change getChildAtIndex() to get a range of children instead of all the children.
- This exercises code in WebCore that returns elements when asked for from a range.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::getChildAtIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::getChildrenWithRange):
-
-2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] get the HTTP layout tests going
- https://bugs.webkit.org/show_bug.cgi?id=24259
-
- Determine the frame's response and decide whether to dump as text
- or the render tree
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
-
-2009-03-01 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] get the HTTP layout tests going
- https://bugs.webkit.org/show_bug.cgi?id=24259
-
- Implement dumping of WebKitWebBackForwardList and its history
- items.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (compareHistoryItems):
- (dumpHistoryItem):
- (dumpBackForwardListForWebView):
- (dump):
- (runTest):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::clearBackForwardList):
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (BackForwardItem::invoke):
-
-2009-02-28 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Holger Freyther.
-
- Set the resolution for the default screen to 72.0.
- This way, setting font sizes results in expected values.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
-
-2009-02-28 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Holger Freyther.
-
- Adds a WebKitMakeArguments environment variable to enable passing
- of arguments such as '-j2' to make for the autotools build.
-
- * Scripts/webkitdirs.pm:
-
-2009-02-28 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Holger Freyther.
-
- Add a GTK+-only option to enable GNOME Keyring when building.
-
- * Scripts/build-webkit:
-
-2009-02-28 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] webkitdirs.pm modify path in when detecting 3D transforms and accelerated compositing
- https://bugs.webkit.org/show_bug.cgi?id=24076
-
- Refactor gtk lib detection and put it in builtDylibPathForName
-
- * Scripts/webkitdirs.pm:
-
-2009-02-28 Christian Dywan <christian@twotoasts.de>
-
- Rubber-stamped by Holger Freyther.
-
- * GtkLauncher/main.c:
- (activate_uri_entry_cb):
- (main): Use the new webkit_web_view_load_uri to open URIs.
-
-2009-02-27 Xan Lopez <xan@gnome.org>
-
- Rubber-stamped by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=24222
- [GTK] Remove checks for old glib versions
-
- libsoup, which is a hard dependency, needs at least glib 2.15.3,
- so remove all glib checks for versions older than that.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setWaitToDump):
-
-2009-02-25 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Eric Seidel
-
- Fix spew about a WebView being deallocated while key value observers are
- still registered with it by making sure that we always stop observing
- _isUsingAcceleratedCompositing in -[DumpRenderTreeWindow close].
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow close]):
-
-2009-02-25 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Do not queue the calls to 'DumpRenderTree::dump()' as this can result
- in more than one call as a test that calls 'notifyDone()' can then be
- subsequently fully loaded and initiate a second dump. Also make sure
- to stop any existing page load that is happening before running the next
- test. Combined this serves to produce 217 more passing tests for the
- Qt port or roughly 5% at this point.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
-
-2009-02-25 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein
-
- https://bugs.webkit.org/show_bug.cgi?id=23854
-
- Have the DumpRenderTreeWindow observe the -_isUsingAcceleratedCompositing
- property of the WebView, and use that to turn -autodisplay on and off.
- This is necessary so that accelerated animations start correctly.
- We can thus remove the -display hack in createBitmapContextFromWebView().
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (dumpRenderTree):
- * DumpRenderTree/mac/DumpRenderTreeWindow.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow close]):
- (-[DumpRenderTreeWindow webView]):
- (-[DumpRenderTreeWindow startObservingWebView]):
- (-[DumpRenderTreeWindow stopObservingWebView]):
- (-[DumpRenderTreeWindow observeValueForKeyPath:ofObject:change:context:]):
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
-2009-02-25 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Zack Rusin.
-
- https://bugs.webkit.org/show_bug.cgi?id=24158
- Implement the queue*() methods of the layoutTestController and begin
- implementing the dump of the back/forward list. This results in 2% more
- tests passing as well as 23 currently skipped tests now passing.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dumpBackForwardList):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/jsobjects.cpp:
- (findFrameNamed):
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- (LayoutTestController::reset):
- (LayoutTestController::processWork):
- (LayoutTestController::maybeDump):
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
- (LayoutTestController::queueLoad):
- (LayoutTestController::queueReload):
- (LayoutTestController::queueScript):
- * DumpRenderTree/qt/jsobjects.h:
- (LayoutTestController::shouldDumpBackForwardList):
- (LayoutTestController::dumpBackForwardList):
-
-2009-02-24 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Don't print out that you are generating new results if you are not in fact
- generating new results and disable generating new results by default for
- the all ports other than the canonical Apple Mac port since this can litter
- the source directory with hundreds of new results since other ports
- are not as up to date.
-
- * Scripts/run-webkit-tests:
-
-2009-02-24 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Cameron Zwarich.
-
- The Qt port does not support these yet nor does the nm check work with
- QMake based build.
-
- * Scripts/webkitdirs.pm:
-
-2009-02-24 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- [Gtk] add options for 3D transforms and HTML5 channel messaging to the build
- https://bugs.webkit.org/show_bug.cgi?id=24072
-
- Allow toggling of 3D transforms and HTML5 channel messaging
- support for the Autotools (Gtk) build.
-
- Also add '--gtk' in the build-webkit help doc and fix autotools
- option for web-workers support.
-
- * Scripts/build-webkit:
-
-2009-02-23 Xan Lopez <xan@gnome.org>
-
- Reviewed by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=22624
- [SOUP][GTK] Need API to get SoupSession from WebKit.
-
- Add soup flags now that dependency is explicit.
-
- * GNUmakefile.am:
-
-2009-02-22 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix assertion failures in editing/pasteboard/paste-RTFD.html and editing/pasteboard/paste-TIFF.html in 64-bit.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (swizzleAllMethods): When adding a new method to a class, use the implementation and type of the new method rather
- than of an arbitrary existing method on the class.
-
-2009-02-13 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Alexey Proskuryakov.
-
- Add a few ignores to make-js-test-wrappers.
-
- * Scripts/make-js-test-wrappers:
-
-2009-02-17 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Prepend file:// to the test result filename to make
- GtkLauncher display the result page.
-
- * Scripts/run-webkit-tests:
-
-2009-02-16 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Adam Roben
-
- Actually use the installation prefix defined in WebKitInstallationPrefix,
- in autotools builds.
-
- * Scripts/webkitdirs.pm:
-
-2009-02-12 Simon Fraser <simon.fraser@apple.com>
-
- No review.
-
- Remove debugging code which was committed by mistake.
-
- * Scripts/run-webkit-tests:
-
-2009-02-12 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Adam Roben
-
- https://bugs.webkit.org/show_bug.cgi?id=23928
-
- Add detection of accelerated compositing and 3d transforms,
- and add various directories to $ignoredDirectories when these
- features are off.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-02-12 Adam Roben <aroben@apple.com>
-
- Fix Bug 23922: Warning message from run-webkit-tests when Skipped file
- contains non-existent tests is confusing and is given for disabled
- tests
-
- <https://bugs.webkit.org/show_bug.cgi?id=23922>
-
- We now no longer warn about disabled tests. The warning now reads:
-
- Skipped list contained '$item', but no file of that name could be
- found
-
- Reviewed by John Sullivan.
-
- * Scripts/run-webkit-tests:
- (top level): Pass the list name to processIgnoreTests so it can print
- out a reasonable warning message.
- (processIgnoreTests): Take a list name as a second parameter and use
- it to display a better warning message. Also check for a "-disabled"
- version of the test before warning about it not existing.
-
-2009-02-11 Adam Roben <aroben@apple.com>
-
- Windows fix for Bug 22239: Implement missing animation & transition
- APIs on LayoutTestController for non-mac platforms
-
- <https://bugs.webkit.org/show_bug.cgi?id=22239>
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::numberOfActiveAnimations):
- Implemented these by calling through to IWebFramePrivate.
-
-2009-02-10 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- * Scripts/build-webkit:
-
- https://bugs.webkit.org/show_bug.cgi?id=23883
-
- Added support --3d-transforms. Defaults to off
-
-2009-02-11 Adam Roben <aroben@apple.com>
-
- Fix crashes in http/tests/history/redirect-301.pl and friends on
- Windows
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::webHistoryItemCount): Null-check the shared
- WebHistory instance before dereferencing it.
-
-2009-02-10 Adam Roben <aroben@apple.com>
-
- Fix Bug 23869: Pixel tests can't be run on Windows
-
- <https://bugs.webkit.org/show_bug.cgi?id=23869>
-
- This patch gets the pixel tests limping along on Windows again.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/DumpRenderTree.sln: Changed to use the new
- Debug_Internal configuration of ImageDiff in the Debug_Internal
- configuration of this solution.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (printPNG): Changed to call fwrite in a loop, since this call was
- failing due to the buffer being too large on Windows.
- (dumpWebViewAsPixelsAndCompareWithExpected): Removed an unnecessary
- #if PLATFORM(MAC)/#endif.
-
- * DumpRenderTree/win/ImageDiff.vcproj: Added a Debug_Internal
- configuration that matches the Debug configuration but also references
- debug_internal.vsprops.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView): Renamed from
- getBitmapContextFromWebView to match the name used in the
- cross-platform code.
-
-2009-02-10 Adam Roben <aroben@apple.com>
-
- Robustify DumpRenderTree/win a little
-
- DumpRenderTree was previously not holding a ref to the WebViews it
- created via window.open. It was getting away with this because
- WebViews get reffed by being preference notification observers and by
- registering for drag-n-drop messages. Now DRT does hold a ref, in case
- this situation changes in the future.
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dumpBackForwardListForAllWindows): Added a .get().
- (windowToWebViewMap): Changed to use the WindowToWebViewMap typedef.
- * DumpRenderTree/win/DumpRenderTreeWin.h: Changed the
- windowToWebViewMap() to hold a ref to the WebViews it contains.
-
-2009-02-05 Simon Fraser <simon.fraser@apple.com>
-
- Fix the #include file order, per review comments.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
-
-2009-02-05 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein
-
- https://bugs.webkit.org/show_bug.cgi?id=23362
-
- If the WebHTMLView uses accelerated compositing, we need for force
- the on-screen capture path and also force animations to start with -display
- since the DRT window has autodisplay disabled.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
-2009-02-03 miggilin <mr.diggilin@gmail.com>
-
- Reviewed by Darin Adler.
-
- Change the way wxWidgets build gets arguments.
- Change "checkForArgumentAndRemoveFromARGV" in build-webkit to check if the
- argument passed matches one in ARGV exactly (allows, ie, --wx-args not to be
- removed when --wx is checked for).
-
- https://bugs.webkit.org/show_bug.cgi?id=23701
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2009-01-30 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Catch exceptions thrown by AppKit when accessing an attribute than an element
- doesn't return.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (attributesOfElement):
-
-2009-01-29 David Kilzer <ddkilzer@apple.com>
-
- Remove semi-colons from the end of ObjC method implementations
-
- Rubber-stamped by Adam Roben.
-
- $ find WebKitTools -name \*.m -o -name \*.mm -exec perl -e 'undef $/; $s = <>; while ($s =~ m/[\n\r][-+].*;[\s\r\n]+\{/g) { print "$ARGV: $&\n"; }' {} \;
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
- (-[FrameLoadDelegate webView:didFinishDocumentLoadForFrame:]):
- (-[FrameLoadDelegate webView:didHandleOnloadEventsForFrame:]):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webViewFrame:]):
-
-2009-01-28 Geoffrey Garen <ggaren@apple.com>
-
- Build fix for GTK.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::webHistoryItemCount):
-
-2009-01-28 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added support for querying how many history items were created during a
- layout test.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (getWebHistoryItemCountCallback):
- (LayoutTestController::staticValues):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::webHistoryItemCount):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::webHistoryItemCount):
-
-2009-01-26 Pierre-Olivier Latour <pol@apple.com>
-
- Tweaked again earlier fix, this time just to print a warning and not abort if
- attempting to generate pixel results and Perian is installed.
-
- https://bugs.webkit.org/show_bug.cgi?id=22615
-
- * Scripts/run-webkit-tests:
-
-2009-01-26 Christian Dywan <christian@twotoasts.de>
-
- Rubber stamped by Holger Freyther.
-
- * GtkLauncher/main.c:
- (main): Initialize threads, which is required for libSoup.
-
-2009-01-23 David Kilzer <ddkilzer@apple.com>
-
- * Scripts/do-webcore-rename: Removed 10 header guard renames that
- had already been fixed, and updated 4 renames whose original values
- had changed.
-
-2009-01-22 Anders Carlsson <andersca@apple.com>
-
- Fix Windows build.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
-
-2009-01-22 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Clean up the test plug-in code. We now always use the CG drawing model and the
- Cocoa event model. It is however possible to revert to the old Carbon event model by
- specifying forcecarbon=true in the embed/object tag.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (handleEventCarbon):
- (handleEventCocoa):
- (NPP_HandleEvent):
-
-2009-01-21 Pierre-Olivier Latour <pol@apple.com>
-
- Tweaked earlier fix to only print a warning when Perian is installed,
- and fail completely only if attempting to generate new pixel test results.
-
- https://bugs.webkit.org/show_bug.cgi?id=23392
-
- * Scripts/run-webkit-tests:
-
-2009-01-20 Darin Adler <darin@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Bug 23450: string leaks seen in DumpRenderTree accessibility test code
- https://bugs.webkit.org/show_bug.cgi?id=23450
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isAttributeSettableCallback): Add the missing JSStringRelease call.
- (attributeValueCallback): Ditto.
-
-2009-01-20 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Darin Adler.
-
- Print warning regarding display color profile change in run-webkit-tests instead of DRT.
-
- https://bugs.webkit.org/show_bug.cgi?id=23392
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (setupMainDisplayColorProfile):
- * Scripts/run-webkit-tests:
-
-2009-01-20 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Darin Adler.
-
- Changed run-webkit-tests to abort on the Mac if pixel tests are enabled and Perian is installed,
- in order to avoid result differences in some media tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=22615
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-01-19 Sam Weinig <sam@webkit.org>
-
- * Scripts/do-webcore-rename: Add JSValuePtr and ProtectedJSValuePtr.
-
-2009-01-16 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitdirs.pm: Added '--makeargs' parameter which can pass additional
- parameters to make command in QMake projects.
-
-2009-01-16 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Add AX methods to retrieve the parent of an element.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (parentElementCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::parentElement):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::parentElement):
-
-2009-01-16 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Set the count to the right number of elements.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- (testEnumerate):
-
-2009-01-14 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Use COM API on Windows in LayoutTestController::setIconDatabaseEnabled()
-
- Rubber-stamped by Alice Liu.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setIconDatabaseEnabled): Use COM API
- to get the shared WebIconDatabase.
-
-2009-01-14 Jeremy Moskovich <jeremy@chromium.org>
-
- Reviewed by Eric Seidel.
-
- <https://bugs.webkit.org/show_bug.cgi?id=16829>
- Implement NPN_SetException()
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- (initializeIdentifiers):
- (testHasMethod):
- (testInvoke):
-
-2009-01-13 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=23304
- Fix svn-apply to match svn-unapply to recognize added files in 'git diff' patches.
-
- * Scripts/svn-apply: Added a check (similar to svn-unapply) to recognize added files.
-
-2009-01-14 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Implement LayoutTestController::setIconDatabaseEnabled(bool) for GTK
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): Added call to reset the icon database to match Mac
- and Windows ports.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setIconDatabaseEnabled): Implemented
- stub method.
-
-2009-01-14 David Kilzer <ddkilzer@apple.com>
-
- Bug 22795: favicons should be saved to webarchives
-
- <https://bugs.webkit.org/show_bug.cgi?id=22795>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setIconDatabaseEnabledCallback): Added.
- (setJavaScriptProfilingEnabledCallback): Realphabetized.
- (LayoutTestController::staticFunctions): Added entry for calling
- LayoutTestController.setIconDatabaseEnabled(bool) from JavaScript.
- * DumpRenderTree/LayoutTestController.h:
- (setIconDatabaseEnabledCallback): Added declaration.
- (setJavaScriptProfilingEnabledCallback): Realphabetized.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest): Disable the icon database before each test.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setIconDatabaseEnabled): Added.
- (LayoutTestController::setJavaScriptProfilingEnabled): Realphabetized.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Disable the icon database before each test.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setIconDatabaseEnabled): Added.
-
-2009-01-14 Steve Falkenburg <sfalken@apple.com>
-
- Update copyright year in version resources.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc:
-
-2009-01-14 Dan Bernstein <mitz@apple.com>
-
- Reviewed by John Sullivan.
-
- - update copyright
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist:
- * WebKitLauncher/Info.plist:
-
-2009-01-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add NPRuntime test.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testNPRuntime):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_GetValue):
-
-2009-01-12 Mark Rowe <mrowe@apple.com>
-
- Use the modern spelling of WebKit.
-
- * Scripts/find-extra-includes:
- * Scripts/report-include-statistics:
- * Scripts/run-webkit-app:
- * Scripts/svn-unapply:
- * Scripts/update-webkit:
-
-2009-01-11 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Updated so it won't overwrite tests in the svg/dom
- directory that aren't using standard wrappers.
-
-2009-01-11 Robert Blaut <webkit@blaut.biz>
-
- Reviewed by Eric Seidel.
-
- <https://bugs.webkit.org/show_bug.cgi?id=23134>
- Update bisect-builds for Safari 3.2 to prevent crashes
-
- * Scripts/bisect-builds: Added Safari 3.2 and the corresponding minimal revision, r37348.
-
-2009-01-08 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Simon Hausmann.
-
- Explicitly set these so that the layout tests do not break.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
-
-2009-01-07 Glenn Wilson <gwilson@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Changed DumpRenderTree to re-enable Javascript in web preferences on every test.
- This fixes the case when a user mistakenly disables Javascript, and all layout tests crash.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (testStringByEvaluatingJavaScriptFromString):
- (setDefaultsToConsistentValuesForTesting):
-
-2009-01-07 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Maciej Stachowiak.
-
- Implement numberOfActiveAnimations to fix the build
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfActiveAnimations):
-
-2009-01-07 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by George Staikos.
-
- Fix unused variable warnings
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::javaScriptAlert):
- (WebCore::WebPage::javaScriptConfirm):
- (WebCore::WebPage::javaScriptPrompt):
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::maybeDump):
- * DumpRenderTree/qt/main.cpp:
- (get_backtrace):
- * DumpRenderTree/qt/testplugin.cpp:
- (TestPlugin::create):
-
-2009-01-06 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Darin Adler.
-
- Added new JS API numberOfActiveAnimations() that returns the number of active CSS transitions & animations.
- This effectively exposes the new AnimationController::numberOfActiveAnimations() API from WebCore.
-
- https://bugs.webkit.org/show_bug.cgi?id=23126
-
- * DumpRenderTree/LayoutTestController.cpp:
- (numberOfActiveAnimationsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::numberOfActiveAnimations):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::numberOfActiveAnimations):
-
-2009-01-04 David Kilzer <ddkilzer@apple.com>
-
- Don't install internal headers in WebKit framework
-
- Reviewed by Darin Adler.
-
- Since WebHTMLRepresentationInternal.h and WebTypesInternal.h are
- no longer installed in WebKit.framework/PrivateHeaders, use the
- special relationship of DumpRenderTree within the WebKit source
- tree to include the internal headers through relative paths.
- Created the concept of mac/InternalHeaders to hide the ugly
- paths.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig: Added
- mac/InternalHeaders to HEADER_SEARCH_PATHS.
- * DumpRenderTree/mac/InternalHeaders/WebKit/WebHTMLRepresentationInternal.h: Added.
- * DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h: Added.
-
-2009-01-02 Adam Treat <treat@kde.org>
-
- Reviewed by George Staikos.
-
- Add support for fixedLayoutSize to the qt DRT
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::setFixedLayoutSize):
- (LayoutTestController::setUseFixedLayout):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-01-03 David D. Kilzer <ddkilzer@webkit.org>
-
- Bug 23091: Some webarchive http tests intermittently fail due to Connection/Keep-Alive header differences
-
- <https://bugs.webkit.org/show_bug.cgi?id=23091>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (normalizeHTTPResponseHeaderFields): Remove Keep-Alive and
- Connection headers from webarchive results.
-
-2008-12-31 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=22812
-
- Prevent TestNetscapePlugin from installing system-wide.
-
- * GNUmakefile.am:
-
-2008-12-31 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=22842
-
- Move WebKitWebView's size allocation into a proper place.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- (runTest):
-
-2008-12-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Timothy Hatcher.
-
- Move the guts of determineCurrentSVNRevision to VCSUtils as svnRevisionForDirectory,
- and make it work for git too.
-
- * Scripts/VCSUtils.pm:
- * Scripts/webkitdirs.pm:
-
-2008-12-22 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by George Staikos.
-
- Ignore http/tests/wml, if no WML support is present.
- Add http/tests/wml to list of HTTP tests, allowed to access local resources.
-
- * Scripts/run-webkit-tests:
-
-2008-12-19 David Levin <levin@chromium.org>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=22930
-
- Make the git diff command used for preparing the change log avoid using any external diff tools.
-
- * Scripts/prepare-ChangeLog:
-
-2008-12-19 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=22686
-
- Added files which were missing from the TestNetscapePlugin
- directory to the SOURCES variable, so that they will be
- distributed in a make dist.
-
- * GNUMakefile.am:
-
-2008-12-18 Cameron Zwarich <zwarich@apple.com>
-
- Reviewed by Geoff Garen.
-
- Add tests for bug 21855: REGRESSION (r37323): Gmail complains about popup blocking when opening a link
- <https://bugs.webkit.org/show_bug.cgi?id=21855>
- <rdar://problem/6278244>
-
- Add support for scheduling asynchronous clicks to DumpRenderTree, but
- only on the Mac.
-
- * DumpRenderTree/mac/EventSendingController.h:
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]): Expose
- scheduleAsynchronousClick to JavaScript.
- (-[EventSendingController scheduleAsynchronousClick]): Add.
-
-2008-12-15 Darin Adler <darin@apple.com>
-
- * Scripts/make-js-test-wrappers: Added another exception to avoid overwriting
- a custom-written test.
-
-2008-12-15 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Implement setJavaScriptProfilingEnabled in the Qt DRT to pass fast/profiler.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
- * DumpRenderTree/qt/jsobjects.h:
-
-2008-12-13 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22039
-
- Implement animation and transition pausing.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
-
-2008-12-12 Brent Fulgham <bfulgham@gmail.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=22809
-
- Increase timeout in call to initWithURL so that people actually see
- new web pages when they type URLs rather than a blank screen.
-
- * WinLauncher/WinLauncher.cpp:
- (loadURL): Increase timeout in initWithURL from 0 to 60 seconds.
-
-2008-12-12 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Add a renaming idea.
-
-2008-12-12 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon Hausmann.
-
- Update the WebKit.qrc and add a script to automatically generate the file.
-
- With the way rcc and qmake work this can not be done at build time
- as the WebKit.qrc must sit inside the directory that contains the files
- and at build time we may not change the content of the source directory.
-
- * Scripts/generate-qt-inspector-resource: Added.
-
-2008-12-11 Cameron Zwarich <zwarich@apple.com>
-
- Rubber-stamped by Mark Rowe.
-
- Roll out r39212 due to assertion failures during layout tests, multiple
- layout test failures, memory leaks, and obvious incorrectness.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
-
-2008-12-10 Glenn Wilson <gwilson@google.com>
-
- Reviewed by Adam Roben.
-
- Changed LayoutTestController and DumpRenderTree to allow for manual
- overriding of default preferences at test time. Also added support for
- resetting the preferences after each test.
- https://bugs.webkit.org/show_bug.cgi?id=20534
-
- * DumpRenderTree/LayoutTestController.cpp: Added callback method for overriding preferences
- * DumpRenderTree/LayoutTestController.h: Added signature for callback
- * DumpRenderTree/win/DumpRenderTree.cpp: Added calls to reset preferences after each test if necessary
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Added JS override function
- * DumpRenderTree/mac/DumpRenderTree.mm: Added calls to reset preferences after each test if necessary
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Added JS override function
-
-2008-12-10 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- Implement the new policy delegate (including navigation type and permissive mode) for DRT/win
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/DumpRenderTreeWin.h:
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
-
- * DumpRenderTree/win/PolicyDelegate.cpp:
- (PolicyDelegate::PolicyDelegate):
- (PolicyDelegate::decidePolicyForNavigationAction):
- * DumpRenderTree/win/PolicyDelegate.h:
- (PolicyDelegate::setPermissive):
-
-2008-12-10 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin
-
- Change the custom policy delegate to actually allow navigation for tests that need it.
- The new behavior is opt-in and doesn't require any changes in old tests.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setCustomPolicyDelegateCallback): Allow for a second boolean argument to set the permissive flag on the custom
- policy delegate, which will be false by default to maintain original behavior.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setCustomPolicyDelegate):
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate): Partially stubbed out for now.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCustomPolicyDelegate): Still stubbed out, but with new param.
-
- * DumpRenderTree/mac/PolicyDelegate.h:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]): If the permissive flag
- is set, allow the navigation.
- (-[PolicyDelegate setPermissive:]): Change the behavior between "use" and "ignore" - allowing navigation or not.
-
-2008-12-09 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Ada Chan.
-
- Fix gdb-safari on Tiger.
-
- gdb on Tiger does not take the -arch flag, so do not pass it.
-
- * Scripts/gdb-safari:
-
-2008-12-09 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Ignore WML tests, if no WML support available.
-
- * Scripts/run-webkit-tests:
-
-2008-12-08 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Added a shortcut for --jsDriver-args, which I use a lot.
-
- * Scripts/run-javascriptcore-tests:
-
-2008-12-08 Stephanie Lewis <slewis@apple.com>
-
- Fix Tiger build.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
-
-2008-12-08 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- - test machinery for https://bugs.webkit.org/show_bug.cgi?id=22409
- REGRESSION: cmd-shift-left/right don't switch tabs, instead select text
-
- * DumpRenderTree/LayoutTestController.cpp:
- (isCommandEnabledCallback): Added.
- (LayoutTestController::staticFunctions): Added "isCommandEnabled".
- * DumpRenderTree/LayoutTestController.h: Ditto.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::isCommandEnabled): Ditto.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (-[CommandValidationTarget initWithAction:]): Added. Used to get the
- command validation system to tell us if a comment is enabled.
- (-[CommandValidationTarget action]): Ditto.
- (-[CommandValidationTarget tag]): Ditto.
- (LayoutTestController::isCommandEnabled): Ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::isCommandEnabled): Ditto.
-
-2008-12-08 David Kilzer <ddkilzer@apple.com>
-
- Bug 22555: Sort "children" sections in Xcode project files
-
- <https://bugs.webkit.org/show_bug.cgi?id=22555>
-
- Reviewed by Eric Seidel.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj: Sorted.
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Sorted.
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: Sorted.
-
-2008-12-08 David Kilzer <ddkilzer@apple.com>
-
- Bug 22555: Sort "children" sections in Xcode project files
-
- <https://bugs.webkit.org/show_bug.cgi?id=22555>
-
- Reviewed by Timothy Hatcher.
-
- * Scripts/sort-Xcode-project-file: By popular request, don't sort
- the mainGroup in the project (the list of items below the top-level
- project file).
-
-2008-12-05 David Kilzer <ddkilzer@apple.com>
-
- Bug 22555: Sort "children" sections in Xcode project files
-
- <https://bugs.webkit.org/show_bug.cgi?id=22555>
-
- Reviewed by Darin Adler.
-
- Sort "children" sections alphabetically, moving groups (folders) to
- the top of each of the lists. Files are assumed to have extensions,
- so %isFile is used to override this behavior.
-
- * Scripts/sort-Xcode-project-file:
- (sortChildrenByFileName): Added.
- (sortFilesByFileName): Renamed from sortByFileName().
-
-2008-12-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Geoff Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=22683
- Fix gtk and qt builds which depend on --qt and --gtk being removed from ARGV
- Add a new argumentsForConfiguration() function and clean up some old code to use it.
- Rename checkArgV to checkForArgumentAndRemoveFromARGV to be more self-documenting.
-
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-launcher:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-12-03 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by Cameron Zwarich.
-
- Further preparations for WML layout tests.
- Ignore WMLTestCase.js, that's going to be in trunk soon.
-
- * Scripts/make-js-test-wrappers:
-
-2008-12-03 Eric Seidel <eric@webkit.org>
-
- Build fix for --gtk and --chromium, no review.
-
- Fix run-javascriptcore-tests to pass --gtk, --qt, --chromium, etc.
- through to build-jsc.
-
- * Scripts/build-jsc:
- * Scripts/webkitdirs.pm:
-
-2008-12-03 Eric Seidel <eric@webkit.org>
-
- Build fix only, no review.
-
- Remove support for build-webkit --svg-experimental.
- All of the "experimental" svg features have their own toggles anyway.
- I broke --svg-experimental in my last commit (which then broke clean builds)
- I can't find any use of --svg-experimental in our source tree, so removing it.
-
- * Scripts/build-webkit:
-
-2008-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Hyatt (and Mark Rowe).
-
- Move --coverage support from build-webkit to webkitdirs.pm to share it with build-jsc
- Move --coverage support out of run-javascriptcore-tests and into build-jsc
-
- Finally add a buildXCodeProject function to webkitdirs.pm and move --clean support
- there from build-webkit (to allow future sharing with other build-* scripts)
-
- Change run-javascriptcore-tests to expect a --jsDriver-args= argument instead of
- picking through ARGV with a blacklist of what arguments weren't jsDriver args
- this makes run-javascriptcore-tests transparently support all arguments which
- webkitdirs.pm gives it support for.
-
- Make run-javascriptcore-tests actually print what commands it's running before running them.
-
- Add --help support to build-jsc and run-javascriptcore-tests!
-
- Make code to support --svg-experimental defaults take up half as many lines.
-
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/run-javascriptcore-tests:
- * Scripts/webkitdirs.pm:
-
-2008-12-03 Adam Roben <aroben@apple.com>
-
- Fix a leak in WinLauncher shutdown
-
- Reviewed by Sam Weinig.
-
- * WinLauncher/WinLauncher.cpp:
- (_tWinMain): Replaced a delete with a Release. We can't delete the
- WebView properly since we only have a pointer to one of its
- interfaces. We also shouldn't be deleting COM objects directly anyway,
- for a number of reasons.
-
-2008-12-03 Adam Roben <aroben@apple.com>
-
- Fix a crash on exit in WinLauncher
-
- Reviewed by Sam Weinig.
-
- * WinLauncher/WinLauncher.cpp:
- (_tWinMain): Call shutDownWebKit before exiting.
-
-2008-12-03 Adam Roben <aroben@apple.com>
-
- Add a Debug_Internal configuration to WinLauncher
-
- This matches our other projects.
-
- Reviewed by Sam Weinig.
-
- * WinLauncher/WinLauncher.vcproj: Added a Debug_Internal
- configuration, which is identical to Debug except that it also
- references debug_internal.vsprops. Also removed some settings that we
- should be picking up from the .vsprops files.
-
-2008-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- Hack build-webkit --chromium to use Win32 python instead
- of using the default cygwin python. Scons + CYGWIN tries
- to build with GCC by default, we force MSVC in our file
- but that just results in errors from Scons. Until we can fix
- this latest round of errors, at least make build-webkit --chromium
- actually "work" under CYGWIN instead of forcing users to use
- a cmd shell directly.
-
- This is working around a Scons bug:
- http://scons.tigris.org/issues/show_bug.cgi?id=2266
-
- * Scripts/webkitdirs.pm:
-
-2008-12-01 David Kilzer <ddkilzer@apple.com>
-
- Bug 22466: REGRESSION (35867): Many resources missing when saving webarchive of webkit.org
-
- <https://bugs.webkit.org/show_bug.cgi?id=22466>
- <rdar://problem/6403593>
-
- Reviewed by Brady Eidson.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (normalizeHTTPResponseHeaderFields): Added. Normalizes Date, Etag,
- Keep-Alive, Last-Modified and Server header fields to prevent false
- positive test failures.
- (convertWebResourceResponseToDictionary): Call
- normalizeHTTPResponseHeaderFields() to noramlize HTTP response
- header fields.
-
-2008-12-01 David D. Kilzer <ddkilzer@webkit.org>
-
- Bug 22559: Report builds left to test in bisect-builds (like git-bisect)
-
- <https://bugs.webkit.org/show_bug.cgi?id=22559>
-
- Reviewed by Adam Roben.
-
- * Scripts/bisect-builds: Updated status message to report the
- maximum number of builds left to test after the current one.
- (max): Added.
-
-2008-11-27 Alp Toker <alp@nuanti.com>
-
- Build GtkLauncher and minidom with the '-ansi' compiler flag to detect
- API header breakage at build time.
-
- * GNUmakefile.am:
-
-2008-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann and Mark Rowe.
-
- Add support for build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=22515
- More cleanups changing isCygwin calls to isAppleWinWebKit and deploying isAppleWebKit where necessary.
-
- * Scripts/build-dumprendertree:
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/gdb-safari:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- Add support for build-webkit --chromium (tested on mac)
- https://bugs.webkit.org/show_bug.cgi?id=22515
- Also simplified some code using checkArgv
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2008-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- More pre-work for adding a build-webkit --chromium which works on Mac and Windows
- https://bugs.webkit.org/show_bug.cgi?id=22515
- Change a few calls to isCygwin to isAppleWinWebKit and a few calls to isAppleMacWebKit to isDarwin
- in preparation for having a chromium cygwin and chromium mac build
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2008-11-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- Pre-work for getting build-webkit --chromium to work
- https://bugs.webkit.org/show_bug.cgi?id=22515
- Rename isOSX to isAppleMacWebKit to match what the code does, and add isChromium()
-
- * Scripts/build-dumprendertree:
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/gdb-safari:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-11-26 David Kilzer <ddkilzer@apple.com>
-
- Bug 22488: Make DRT smarter about charset encoding when post-processing webarchive content
-
- <https://bugs.webkit.org/show_bug.cgi?id=22488>
-
- Reviewed by Brady Eidson.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (convertWebResourceDataToString): If an IANA charset encoding string
- is provided, convert it to a CFStringEncoding value and then to an
- NSStringEncoding value, else fall back to NSUTF8StringEncoding. We
- also nil-check dataAsString, so the worst-case scenario is that the
- data won't be decoded to a string (versus crashing DumpRenderTree).
-
-2008-11-26 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Gtk] add/remove tests from Skipped and fix netscape plugin test
- https://bugs.webkit.org/show_bug.cgi?id=22484
-
- Remove print'ing to stderr
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (NP_Initialize):
- (NP_Shutdown):
-
-2008-11-25 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * DumpRenderTree/cg/PixelDumpSupportCG.h:
-
-2008-11-25 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
-
-2008-11-24 Darin Fisher <darin@chromium.org>
-
- Fix bustage.
-
- https://bugs.webkit.org/show_bug.cgi?id=15643
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
-
-2008-11-24 Glenn Wilson <gwilson@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- http://bugs.webkit.org/show_bug.cgi?id=15643
-
- Added support for changing the "trailing whitespace" work-around
- in LayoutTestController (so layout tests can verify this functionality)
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setSelectTrailingWhitespaceEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
-
-2008-11-24 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler
-
- https://bugs.webkit.org/show_bug.cgi?id=22433
-
- Add script that attempts to detect virtual methods
- whose signatures differ only by constness (which can
- indicate a programming error).
-
- * Scripts/detect-mismatched-virtual-const: Added.
-
-2008-11-24 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=22039
-
- [Gtk+] Implement TestNetscapePlugin for Gtk+ port and add it to the
- build.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
- * DumpRenderTree/gtk/TestNetscapePlugin/ForwardingHeaders/WebKit/npapi.h: Added.
- * DumpRenderTree/gtk/TestNetscapePlugin/ForwardingHeaders/WebKit/npfunctions.h: Added.
- * DumpRenderTree/gtk/TestNetscapePlugin/ForwardingHeaders/WebKit/npruntime.h: Added.
- * GNUmakefile.am:
-
-2008-11-24 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Mark Rowe.
-
- [Gtk+] Add configure option to enable Web Workers and enable it by default
-
- Add --enable-workers to the buildsystem (used by build-webkit) add
- the to be build files to the GNUmakefile.am and change build-webkit
- to enable Web Workers by default.
-
- * Scripts/build-webkit:
-
-2008-11-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Let gdb-safari accept the --debug and --release options once more.
-
- * Scripts/gdb-safari:
-
-2008-11-23 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Holger Freyther. Landed by Jan Alonzo.
-
- Get SVG tests tested on GTK port.
-
- * Scripts/webkitdirs.pm:
-
-2008-11-19 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=21810
- Remove use of static C++ objects that are destroyed at exit time (destructors)
-
- All static C++ objects that create atexit calls are gone. Update script
- to indicate how to fix the problem should a new one appear.
-
- * Scripts/check-for-exit-time-destructors:
-
-2008-11-18 Alexey Proskuryakov <ap@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22337
- Enable workers by default
-
- * Scripts/build-webkit: Changed the default to enabled.
-
-2008-11-18 Alexey Proskuryakov <ap@webkit.org>
-
- Rubber-stamped by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=22306
- Disable channel messaging support
-
- * Scripts/build-webkit: Add an option to enable channel messaging.
-
-2008-11-17 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Reviewed by George Staikos.
-
- Add --(no-)wml build flags.
-
- * Scripts/build-webkit:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2008-11-17 Geoffrey Garen <ggaren@apple.com>
-
- Not reviewed.
-
- Try to fix gtk build.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
-
-2008-11-17 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Maciej.
-
- Pixel tests should use a default tolerance of 0.1% on Leopard and 1.0%
- on Tiger.
-
- https://bugs.webkit.org/show_bug.cgi?id=22271
-
- * Scripts/run-webkit-tests:
-
-2008-11-17 Pierre-Olivier Latour <pol@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added new JavaScript API on LayoutController to pause a running
- CSS transition or animation at a given time.
-
- https://bugs.webkit.org/show_bug.cgi?id=21261
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pauseAnimationAtTimeOnElementWithIdCallback):
- (pauseTransitionAtTimeOnElementWithIdCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
-
-2008-11-17 Gabor Loki <loki@inf.u-szeged.hu>
-
- Reviewed by Darin Adler.
-
- <https://bugs.webkit.org/show_bug.cgi?id=22309>
- Pass the remaining options to build system on Qt-port
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2008-11-16 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=21810
- Remove use of static C++ objects that are destroyed at exit time (destructors)
-
- Remove .o files from the exclude list that have had their exit-time destructors removed.
- Handle case when there is no current symbol.
-
- * Scripts/check-for-exit-time-destructors:
-
-2008-11-16 Sam Weinig <sam@webkit.org>
-
- * Scripts/do-webcore-rename: Remove now fixed renames.
-
-2008-11-16 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Plan some future renames.
-
-2008-11-15 Darin Adler <darin@apple.com>
-
- Rubber stamped by Geoff Garen.
-
- - do the long-planned StructureID -> Structure rename
-
- * Scripts/check-for-global-initializers: Update name of StructureID.o.
- * Scripts/do-webcore-rename: Renaming script that I used.
-
-2008-11-15 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=21810
- Remove use of static C++ objects that are destroyed at exit time (destructors)
-
- Create DEFINE_STATIC_LOCAL macro. Change static local objects to leak to avoid
- exit-time destructor. Update code that was changed to fix this issue that ran
- into a gcc bug (<rdar://problem/6354696> Codegen issue with C++ static reference
- in gcc build 5465). Also typdefs for template types needed to be added in some
- cases so the type could make it through the macro successfully.
-
- Basically code of the form:
- static T m;
- becomes:
- DEFINE_STATIC_LOCAL(T, m, ());
-
- Also any code of the form:
- static T& m = *new T;
- also becomes:
- DEFINE_STATIC_LOCAL(T, m, ());
-
- Remove .o files from the exclude list that have had their exit-time destructors removed.
-
- * Scripts/check-for-exit-time-destructors:
-
-2008-11-14 Kevin Ollivier <kevino@theolliviers.com>
-
- wx mac buildbot fix. Also, make sure we don't keep hitting this problem.
-
- * wx/install-unix-extras:
-
-2008-11-14 Alp Toker <alp@nuanti.com>
-
- GTK DRT build fix for gcc 4.4 snapshot. Add missing stdio include.
-
- Fixes Debian bug #505723
- http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505723
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
-
-2008-11-14 Krishna <krishnamurty.podipireddy@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Fix hanging DRT with Qt.
-
- https://bugs.webkit.org/show_bug.cgi?id=22209
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dump):
- Send empty pixel test data 'block', which is now
- expected by run-layout-tests.
-
-2008-11-12 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=22216
-
- * Scripts/build-webkit:
- Addes ENABLE_WORKERS to build-webkit so it's possible to build with workers enabled.
-
-2008-11-06 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Backed out r38189 (and r38203) for Xcode 3.0.
-
- Apparently older versions of gcc have issues with this patch.
- Backing out a second time until the issues are resolved.
-
-2008-11-06 David Kilzer <ddkilzer@apple.com>
-
- BUILD WAS NOT BROKEN: Rolling r38189 back in.
-
- Please perform a clean build if you see crashes.
-
-2008-11-06 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Backed out r38189 since it apparently broke the world.
-
-2008-11-06 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Add ability to query an attribute's settable status and the
- ability to retrieve a single attribute from an AXObject
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isAttributeSettableCallback):
- (attributeValueCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (+[NSString stringWithJSStringRef:]):
- (AccessibilityUIElement::attributeValue):
- (AccessibilityUIElement::isAttributeSettable):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::attributeValue):
- (AccessibilityUIElement::isAttributeSettable):
-
-2008-11-06 Greg Bolsinga <bolsinga@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 21810: Remove use of static C++ objects that are destroyed at exit time (destructors)
- https://bugs.webkit.org/show_bug.cgi?id=21810
-
- Remove .o files from the exclude list that have had their exit-time destructors removed.
-
- * Scripts/check-for-exit-time-destructors:
-
-2008-11-05 Alp Toker <alp@nuanti.com>
-
- GTK build script tweak.
-
- Make the path relative since it will appear in all -I compiler flags.
- Long argument lists cause bizarre slowdowns in libtool and result
- in huge build logs.
-
- * Scripts/webkitdirs.pm:
-
-2008-11-05 Anders Carlsson <andersca@apple.com>
-
- Fix 64-bit build.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
-
-2008-11-04 Simon Fraser <simon.fraser@apple.com>
-
- Add AccessibilityObject.o to the exclude list for the
- check for global destructors.
-
- * Scripts/check-for-exit-time-destructors:
-
-2008-11-04 Darin Adler <darin@apple.com>
-
- * Scripts/check-for-exit-time-destructors: Fix failures seen on the
- bot, but for some reason not on my computer.
-
-2008-11-03 Darin Adler <darin@apple.com>
-
- Reviewed by Tim Hatcher.
-
- - https://bugs.webkit.org/show_bug.cgi?id=22061
- create script to check for exit-time destructors
-
- * Scripts/check-for-exit-time-destructors: Added.
- Started as a copy of check-for-global-initializers.
-
- * Scripts/check-for-global-initializers: Added code to make
- this script rerun any time it's modified, and also to properly
- run again after the first time it reports an error.
-
-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/Tools/ChangeLog-2010-05-24 b/Tools/ChangeLog-2010-05-24
deleted file mode 100644
index f3f21b2c3..000000000
--- a/Tools/ChangeLog-2010-05-24
+++ /dev/null
@@ -1,35303 +0,0 @@
-2010-05-24 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add tests to ensure that --git-commit ranges are exclusive of the start of the range
- https://bugs.webkit.org/show_bug.cgi?id=39612
-
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-05-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add a temporary script for testing the html5 parser until it can run more layout tests
- https://bugs.webkit.org/show_bug.cgi?id=39611
-
- * Scripts/test-html5-parser: Added.
-
-2010-05-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Chris Jerdonek.
-
- webkit-patch needs --verbose flag to enable DEBUG logging
- https://bugs.webkit.org/show_bug.cgi?id=39208
-
- I also added some code to print out how long commands take to run.
-
- * Scripts/webkit-patch:
- - Add hackish -v/--verbose parsing (similar to check-webkit-style)
- * Scripts/webkitpy/common/system/executive.py:
- - Log how long commands take to run.
- * Scripts/webkitpy/tool/main.py:
- - Add -v/--verbose option to global options.
-
-2010-05-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Split PatchReader out into its own file
- https://bugs.webkit.org/show_bug.cgi?id=39576
-
- This is in preparation for making check-webkit-style
- support being passed paths to patch files on the command line.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/patchreader.py: Added.
- * Scripts/webkitpy/style/patchreader_unittest.py: Added.
- * Scripts/webkitpy/style_references.py:
-
-2010-05-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Daniel Bates.
-
- webkit-patch should let you add a comment when uploading a patch
- https://bugs.webkit.org/show_bug.cgi?id=39552
-
- As requested by Dan "the man" Bates.
-
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2010-05-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch should assign newly created bugs to their creator
- https://bugs.webkit.org/show_bug.cgi?id=39548
-
- As requested on webkit-dev.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-05-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Hide prepare and post commands for webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=39539
-
- It turns out these commands aren't very popular and they confuse new
- users. They'll still be there for advanced users, however.
-
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2010-05-23 Jesus Sanchez-Palencia <jesus@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] QtTestBrowser has two graphicsview options that aren't enabled correctly
- https://bugs.webkit.org/show_bug.cgi?id=39491
-
- Making toggleResizesToContents and toggleTiledBackingStore checkable when
- QtTestBrowser is started on graphics view mode.
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::createChrome):
-
-2010-05-23 Jesus Sanchez-Palencia <jesus@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] QtTestBrowser is still called QtLauncher in the code
- https://bugs.webkit.org/show_bug.cgi?id=39488
-
- Finish the name change of QtLauncher to QtTestBrowser.
-
- * QtTestBrowser/main.cpp:
- (LauncherApplication::LauncherApplication):
- (LauncherApplication::handleUserOptions):
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::MainWindow):
- * QtTestBrowser/useragentlist.txt:
-
-2010-05-23 Marcus Bulach <bulach@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] Adds Geolocation support to DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=39440
-
- Existing LayoutTests/fast/dom/Geolocation/* should pass.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::geolocationService):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-05-22 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Re-order Yong's email addresses because his gmail account is the one he
- uses for bugs.webkit.org.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-22 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- Add infrastructure to parse SVN property changes
- https://bugs.webkit.org/show_bug.cgi?id=38885
-
- Adds function VCSUtils::parseSvnDiffFooter to parse an SVN footer
- that consists of one or more properties.
-
- Note, the first line of an SVN footer begins with "Property changes on".
-
- * Scripts/VCSUtils.pm:
- - Added function parseSvnDiffFooter. Will use this function
- towards resolving Bug #39409 <https://bugs.webkit.org/show_bug.cgi?id=39409>.
- - Removed FIXME comment above function parseSvnProperty, since
- it is being used by parseSvnDiffFooter.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl: Added.
- - Added unit tests.
-
-2010-05-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing test results only.
-
- Disable compositing tests on the commit-queue as a workaround for bug 38912
- https://bugs.webkit.org/show_bug.cgi?id=39067
-
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Update test results after my previous change.
-
-2010-05-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Disable compositing tests on the commit-queue as a workaround for bug 38912
- https://bugs.webkit.org/show_bug.cgi?id=39067
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- - Disable all of compositing, not just compositing/iframes
-
-2010-05-22 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Link resources and load Ahem font for Windows
- https://bugs.webkit.org/show_bug.cgi?id=39473
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main): Call platformInit().
- * DumpRenderTree/chromium/TestShell.h:
- Declare platformInit(). It is not related to TestShell class, but the
- implementation of paltformInit() is placed at TestShell*.{cpp,mm}.
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (platformInit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- - Make stdout/stderr binary mode
- - Load Ahem font
-
-2010-05-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, EWS build fix only.
-
- QueueStatusServer returns 500 error when EWS bots post empty queues
- https://bugs.webkit.org/show_bug.cgi?id=39523
-
- Mac python seems to have some built-in timezone support
- however other python installs don't. So we need to ignore
- timezones in our parsing.
-
- Date parsing is tested by existing unit tests.
-
- * QueueStatusServer/handlers/updateworkitems.py:
- - Fix typo causing exception on server.
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Fix exception due to python's lack of timezone support.
-
-2010-05-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- QueueStatusServer returns 500 error when EWS bots post empty queues
- https://bugs.webkit.org/show_bug.cgi?id=39523
-
- updateworkitems handler was raising an exception because
- int() couldn't convert "" to a number.
-
- I attempted to unit test this but we don't yet have a system by
- which to load unit tests for appengine classes which depend on
- google.appengine libraries which are not in the python default install.
-
- We'll need to write a wrapper script to load those into the python path
- and then run the unit test files.
-
- * QueueStatusServer/handlers/statusbubble.py:
- - Hide cr-win-ews since we're not currently running this bot.
- * QueueStatusServer/handlers/updateworkitems.py:
- - Fix the parsing logic to be able to understand "".
- * Scripts/webkitpy/common/net/statusserver.py:
- - Only log the work items posted to the server to the debug log channel.
-
-2010-05-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing the commit-queue to run again.
-
- Make the EWSes report queue position in white bubbles
- https://bugs.webkit.org/show_bug.cgi?id=39519
-
- * Scripts/webkitpy/common/net/statusserver.py:
- - Fix exception in _post_work_items_to_server when passed
- integers. Unfortunately we have no good way to mock
- the Browser object yet, and after several attempts I was
- not able to create a good one, so no tests. :(
-
-2010-05-14 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch land --squash commits too much if branch is not up to date
- https://bugs.webkit.org/show_bug.cgi?id=38852
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-05-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make the EWSes report queue position in white bubbles
- https://bugs.webkit.org/show_bug.cgi?id=39519
-
- This also fixes sorting of commit-queue patches
- to be in order of patch attachment.
- https://bugs.webkit.org/show_bug.cgi?id=33395
-
- This makes the various Queues post what patches they are about to process
- so that we can display a list of patches on status server pages, as well
- as report queue position in status bubbles.
-
- This is the first step towards creating a control-channel for the queues.
- Next step will be to have them read back the patches in order from the server
- and finally we will add the ability for the server to control that order.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Teach bugzilla how to parse attach_date for attachments.
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- - Test that we're parsing dates correctly.
- This may have timezone issues for non-PST contributers, unsure.
- * Scripts/webkitpy/common/net/statusserver.py:
- - Post work items to the status server for display.
- * Scripts/webkitpy/tool/bot/patchcollection.py:
- - Call StatusServer.update_work_items
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- - Update unit test results now that we're posting work item list.
- * Scripts/webkitpy/tool/commands/queues.py:
- - Call StatusSever.update_work_items
- - Sort patches so that the server's list understands
- that the commit-queue gives priority to rollout patches.
- - I also fixed patch sorting per bug 33395 while I was here.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Update results after update_work_items changes.
- - Test attachment sorting.
- * Scripts/webkitpy/tool/mocktool.py:
- - Add mock for update_work_items
-
-2010-05-21 Robin Cao <robin.cao@torchmobile.com.cn>
-
- Reviewed by Adam Roben.
-
- fast/dom/HTMLObjectElement/children-changed.html times out on Windows run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=31315
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didFailProvisionalLoadWithError): Need to invoke locationChangeDone here as mac port does.
-
-2010-05-20 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- <rdar://problem/7848154> Remove the dependency on Foundation's private __COCOA_FORMAL_PROTOCOLS_2__ define.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
-
-2010-05-20 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Daniel Bates.
-
- Look in /proc/registry64 for the Platform SDK on 64-bit Windows.
- https://bugs.webkit.org/show_bug.cgi?id=39296
-
- The build-webkit script failed for me on Vista 64. A web search turned
- up this blog post with a patch that worked for me:
- http://www.nicholaswilson.me.uk/2010/04/hacking-webkit-fail/
-
- * Scripts/webkitdirs.pm:
-
-2010-05-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- ThreadedMessageQueue should use with_statement for exception safety
- https://bugs.webkit.org/show_bug.cgi?id=39233
-
- * Scripts/webkitpy/common/thread/threadedmessagequeue.py:
-
-2010-05-20 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser does not support websites which requires HTTP Authentication via dialogs
- https://bugs.webkit.org/show_bug.cgi?id=38456
-
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::authenticationRequired):
- * QtTestBrowser/webpage.h:
-
-2010-05-20 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- editingBehavior settings needs to be set back to a reasonable default between tests
- https://bugs.webkit.org/show_bug.cgi?id=39433
-
- For now, hard code the default setting during reset, so that the serialized
- version of the setting stays in sync with expectations.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Reset editing behavior to the appropriate platform default.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Ditto.
-
-2010-05-20 Brent Fulgham <bfulgham@webkit.org>
-
- Build fix. No review.
-
- The WebKitAPITest targets do not use the "_debug" suffix needed
- by the WinCairo port. Added Debug_Cairo target to correct this.
-
- * WebKitAPITest/WebKitAPITest.vcproj:
-
-2010-05-20 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Ojan Vafai.
-
- editing/selection/extend-selection-after-double-click.html crashes on the Leopard Intel release bot
- https://bugs.webkit.org/show_bug.cgi?id=39431
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setEditingBehavior):
- Prevent a double-free by not having this variable be in the auto-release pool.
-
-2010-05-20 Martin Robinson <mrobinson@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Expose the editing behavior setting in DRT to test all editing code paths
- https://bugs.webkit.org/show_bug.cgi?id=38603
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setEditingBehaviorCallback): Added.
- (LayoutTestController::staticFunctions): Expose the setEditingBehaviorCallback function.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp: Add callback method for setting editing behavior.
- * DumpRenderTree/chromium/LayoutTestController.h: Declaration for this method.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setEditingBehavior): Implementation of editing behavior control.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setEditingBehavior): Ditto
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setEditingBehavior): Added stub implementation of editing behavior control.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::setEditingBehavior): Add slot for controlling editor behavior.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setEditingBehavior): Implementation of editing behavior control.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setEditingBehavior): Added stub implementation of editing behavior control.
-
-2010-05-20 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [DRT/Chromium] Increase the time out value
- https://bugs.webkit.org/show_bug.cgi?id=39203
-
- Change the time out value of Chromium DRT to 30 seconds, which is
- the same as other ports.
- If a DRT process exits before new-run-webkit-tests detects time
- out, new-run-webkit-tests assumes the DRT process crashed.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::layoutTestTimeout):
- Change the time out value from 10 seconds to 30 seconds.
-
-2010-05-20 Chris Evans <cevans@google.com>
-
- Unreviewed.
-
- Marking myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py: Add cevans@google.com.
-
-2010-05-20 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbo.
-
- [Qt] Weekly binary builds on Mac OS X don't work when launched in the Finder
- https://bugs.webkit.org/show_bug.cgi?id=37273
-
- * QtTestBrowser/QtTestBrowser.pro: Build QtLauncher as bundle in package builds
-
-2010-05-20 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix for websocket test failures.
-
- * Scripts/new-run-webkit-websocketserver:
- options is named parameter for factory.get().
-
-2010-05-20 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Chromium: Add --chromium option to new-run-webkit-websocketserver
- https://bugs.webkit.org/show_bug.cgi?id=37664
-
- Missed to pass options to factory.get() in r59595
-
- * Scripts/new-run-webkit-websocketserver:
- Pass options to factory.get().
-
-2010-05-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- WinEWS should build Debug instead of Release
- https://bugs.webkit.org/show_bug.cgi?id=39242
-
- This is a workaround for
- https://bugs.webkit.org/show_bug.cgi?id=39197
- Adam Roben and Brian Weinstein believe this may
- also make building faster since Debug builds
- take less time to link.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2010-05-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::show):
-
-2010-05-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- user.py throws exception when readline module is missing
- https://bugs.webkit.org/show_bug.cgi?id=39239
-
- * Scripts/webkitpy/common/system/user.py:
- - The error handling path requires the "sys" module,
- so added an import sys at the top of the file.
-
-2010-05-18 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix a repaint issue and textarea tests
- https://bugs.webkit.org/show_bug.cgi?id=39054
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::canvas): Remove m_paintRect initialization in canvas().
- This line updated m_paintRect unexpectedly during paintRect().
- We don't need to initialize m_paintRect because show() does it.
-
-2010-05-18 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] new-run-webkit-tests --use-drt should run on Linux
- https://bugs.webkit.org/show_bug.cgi?id=37845
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-05-18 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix some initialization/reset issues
- https://bugs.webkit.org/show_bug.cgi?id=39281
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset): Reset m_userStyleSheetLocation.
- * DumpRenderTree/chromium/LayoutTestController.h:
- Remove unused variable, m_workQueueFrozen.
- (LayoutTestController::WorkQueue::WorkQueue): Initialize m_frozen.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController): Reset WebSettings too.
-
-2010-05-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: implement '--reset-results' flag to complement
- the '--new-baseline' flag. '--new-baseline' will always write the
- results into the platform directory; '--reset-results' will update the
- existing baseline wherever it happens to be. Both sets of behavior
- are useful in different circumstances.
-
- https://bugs.webkit.org/show_bug.cgi?id=38879
-
- * Scripts/webkitpy/layout_tests/data/image/canvas-bg.html: Added.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom.html: Added.
- * Scripts/webkitpy/layout_tests/data/misc/crash-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/misc/crash.html: Added.
- * Scripts/webkitpy/layout_tests/data/misc/missing-expectation.html: Added.
- * Scripts/webkitpy/layout_tests/data/misc/passing-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/misc/passing.html: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt: Added.
- * Scripts/webkitpy/layout_tests/data/text/article-element-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/text/article-element.html: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
-
-2010-05-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add an --html5-parser option to DumpRenderTree to allow testing the new HTML5Lexer
- https://bugs.webkit.org/show_bug.cgi?id=39311
-
- This flag allows us to run the new HTML5Lexer code.
- Right now all documents parse as empty documents, but
- now that we're able to run the code we can fix that.
-
- Once we're able to lex a few basic documents I'll add
- an --html5-parser flag to run-webkit-tests so that we test
- running all of the layout tests with the HTML5 parser.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (initializeGlobalsFromCommandLineOptions):
-
-2010-05-08 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix http/tests/xmlhttprequest/cross-origin-no-authorization.html
- and http/tests/xmlhttprequest/cross-origin-authorization.html
-
- QHttpNetworkRequest adds Authorization and Cookie headers to XHRs
- without knowing if this is valid behaviour or not. In order to allow
- Qt to decide whether Cookie/Authorization headers should be added
- to an XHR QtWebKit needs to use an attribute added to QNetworkRequest.
- These new attributes are: QNetworkRequest::CookieLoadControlAttribute,
- QNetworkRequest::CookieSaveControlAttribute,and
- QNetworkRequest::AuthenticationReuseControlAttribute.
-
- In order to properly support the tests, Qt's DRT needs to use one
- NetworkAccessManager for all pages. This allows it to use cached
- credentials where appropriate.
-
- The tests now pass when run individually but there seems to be a problem with
- leaking the results of requests across tests when run with the others in
- http/tests. This will be addressed in a separate patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=32967
-
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-
-2010-05-18 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- run_webkit_tests_unittest fails on SnowLeopard
- https://bugs.webkit.org/show_bug.cgi?id=39279
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- Return copy of os.environ.
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- Check os.environ was not modified.
-
-2010-05-18 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Chromium: new-run-webkit-httpd fails to setup_mount
- https://bugs.webkit.org/show_bug.cgi?id=39257
-
- * Scripts/webkitpy/common/system/executive.py:
- Assert type of args in run_command.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- Add test_run_command_args_type
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- Executive.run_command takes array for command line.
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- Test if setup_environ_for_server() run setup_mount.bat.
-
-2010-05-17 Kent Tamura <tkent@chromium.org>
-
- Reviewed by David Levin.
-
- Chromium Windows build system does not rebuild correctly when
- enabling/disabling a feature
- https://bugs.webkit.org/show_bug.cgi?id=38926
-
- Add a workaround of this issue.
-
- * Scripts/update-webkit:
- Chromium-Windows only: If WebKit/chromium/features.gyp has been
- updated, remove WebKit/chromium/Debug and WebKit/chromium/Release.
-
-2010-05-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r59631.
- http://trac.webkit.org/changeset/59631
- https://bugs.webkit.org/show_bug.cgi?id=39255
-
- chromium canaries can no longer run webkit_tests, suspect this
- change. (Requested by atwilson on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Attempt to make new-run-webkit-tests --help more sane
- https://bugs.webkit.org/show_bug.cgi?id=37836
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Add a FIXME about options.singly and options.batch_size being different.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Add support for hidden options.
- - Add option groupings to attempt to simplify --help.
- - Fix a bunch of option helps to start with a capitalized verb.
- - Hide a bunch of options which make no sense to users.
- - Sort options in --help.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- - Add tests for option sorting.
-
-2010-05-17 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Disable Icon Database by default in Qt DRT
-
- Unskip:
- http/tests/misc/favicon-loads-with-images-disabled.html
- http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-in-body.html
- http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag-parent-same-origin-deny.html
- http/tests/security/XFrameOptions/x-frame-options-deny-meta-tag.html
-
- https://bugs.webkit.org/show_bug.cgi?id=37382
-
- Add support for layoutTestController.setIconDatabaseEnabled and layoutTestController.disableImageLoading().
- The XFrameOptions tests were failing because of an extra resource load callback for favicon.ico requests.
- These extra callbacks are removed by supporting both of the above layoutTestContoller commands.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::drtStoragePath):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::disableImageLoading):
- (LayoutTestController::setIconDatabaseEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-05-17 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Chromium: Add --chromium option to new-run-webkit-websocketserver
- https://bugs.webkit.org/show_bug.cgi?id=37664
-
- os.environ setup and setup_mount for cygwin are moved in ChromiumWinPort.setup_environ_for_server.
-
- * Scripts/new-run-webkit-httpd:
- Remove passing register_cygwin.
- * Scripts/new-run-webkit-websocketserver:
- Add --chromium flag.
- Remove passing register_cygwin.
- Create port object using options.
- * Scripts/webkitpy/layout_tests/port/base.py:
- Add setup_environ_for_server().
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- Ditto.
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- Remove register_cygwin_parameter.
- Call setup_environ_for_server().
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- Ditto.
-
-2010-05-16 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- https://bugs.webkit.org/show_bug.cgi?id=39184
-
- Adds function VCSUtils::parseSvnProperty to parse an SVN property with
- either a single-line or multi-line value change.
-
- * Scripts/VCSUtils.pm:
- - Added function parseSvnProperty. We will use this function
- towards resolving Bug #38885 <https://bugs.webkit.org/show_bug.cgi?id=38885>.
- - Removed FIXME comment above function parseSvnPropertyValue, since
- it is being used by parseSvnProperty.
- - Modified function parseSvnPropertyValue to break out of "while (<$fileHandle>)"
- loop when it encounters the start of the next property so that it can be
- processed by its caller, parseSvnPropertyValue. We reference this bullet below
- by (*).
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl: Added.
- - Added unit tests.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
- - Changed the name of the unit test "simple multi-line '-' change" to
- "single-line '-' change followed by empty line" since the former was an
- incorrect description of this test.
- - Added unit test "single-line '-' change followed by the next property", and
- "multi-line '-' change followed by the next property" to test (*) above.
-
-2010-05-16 Tony Chang <tony@chromium.org>
-
- Not reviewed, fixing layout test.
-
- Don't output Inspect Element since this is not enabled on the bots,
- but most developers probably have it installed.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController contextClick:]):
-
-2010-05-12 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Adler.
-
- Spellcheck disabling does not disable context menu
- https://bugs.webkit.org/show_bug.cgi?id=25639
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController contextClick:]): add a bool parameter that
- when true, dumps the context menu items to stdout.
-
-2010-05-16 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Unskip fast/loader/main-document-url-for-non-http-loads.html
-
- Update Qt DRT to use frame loader, editor client and notification presenter
- functions in DumpRenderTreeSupportQt.
-
- https://bugs.webkit.org/show_bug.cgi?id=38867
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::dumpFrameLoadCallbacks):
- (LayoutTestController::dumpResourceLoadCallbacks):
- (LayoutTestController::setWillSendRequestReturnsNullOnRedirect):
- (LayoutTestController::setWillSendRequestReturnsNull):
- (LayoutTestController::setWillSendRequestClearHeader):
-
-2010-05-16 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r59571.
- http://trac.webkit.org/changeset/59571
- https://bugs.webkit.org/show_bug.cgi?id=39054
-
- Broke Cr Win, but we didn't notice immediately due to
- https://bugs.webkit.org/show_bug.cgi?id=38926. It's possible
- that this didn't actually break Cr Win, but rather that bug
- 38926 necessitates a clean compile after this and sucessive
- checkins only produced a partial recompile and thus failed to
- build.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::canvas):
-
-2010-05-16 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt]Unskip security/set-form-autocomplete-attribute.html
-
- Add support for layoutTestController.elementDoesAutoCompleteForElementWithId().
-
- https://bugs.webkit.org/show_bug.cgi?id=38859
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-05-16 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix repaint, WebGL, textarea tests
- https://bugs.webkit.org/show_bug.cgi?id=39054
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::canvas): Remove m_paintRect initialization in canvas().
- This line updated m_paintRect unexpectedly during paintRect().
- We don't need to initialize m_paintRect because show() does it.
-
-2010-05-16 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadStatusNotified):
- (createWebView): added connection to notify::load-status and
- signal callback
-
-2010-05-15 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- https://bugs.webkit.org/show_bug.cgi?id=39170
-
- Add function parseSvnPropertyValue to parse single-line and multi-line
- property values of an SVN property change.
-
- * Scripts/VCSUtils.pm:
- Added function parseSvnPropertyValue. We will use this as part of
- Bug #38885 <https://bugs.webkit.org/show_bug.cgi?id=38885>.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl: Added.
-
-2010-05-15 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Add allowDatabase method to TestWebWorker.
- https://bugs.webkit.org/show_bug.cgi?id=38742
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::allowDatabase):
-
-2010-05-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Antti Koivisto.
-
- [Qt] Rename QtLauncher to QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=37665
-
- Forgot to remove the original directory after the rename.
-
- * QtLauncher: Removed.
-
-2010-05-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r59544.
- http://trac.webkit.org/changeset/59544
- https://bugs.webkit.org/show_bug.cgi?id=39165
-
- Cased LayoutTest to start crashing (Requested by abarth on
- #webkit).
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-15 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Ensure DRT loads GAIL (Gtk+ module), for a11y tests
- https://bugs.webkit.org/show_bug.cgi?id=38648
-
- Add the GTK_MODULES envvar (set to "gail") to the clean
- environment when running DRT for the Gtk+ port
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Add script to check for minimum python version and install if missing on Tiger
- https://bugs.webkit.org/show_bug.cgi?id=38886
-
- Per Maciej's request on webkit-dev:
- https://lists.webkit.org/pipermail/webkit-dev/2010-May/012785.html
- provide a script which can automatically install Python on Tiger where
- the system provided version is too old to be of use.
-
- Note this uses the official Mac Python installer from python.org.
- This installs a copy of Python in /Library/Frameworks/Python.framework.
- It also makes symlinks from /usr/local/bin to the Python.framework/bin.
-
- I have tested this script on Leopard and it worked fine. I have not
- tested it on Tiger as I do not have access to a Tiger machine. In
- either case this should provide a great starting point for someone
- wishing to upgrade their copy of Python on Tiger.
-
- Future patches can make our scripts depend on a success return from this
- script and then they can either skip tests/sections for which python is
- insufficient, or they can fail themselves.
-
- * Scripts/ensure-valid-python: Added.
-
-2010-05-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Display queue position inside EWS bubbles
- https://bugs.webkit.org/show_bug.cgi?id=38979
-
- This ended up being a lot of clean-up to our status server code.
-
- Added a new WorkItems model, a form with which to fill it,
- and taught the Attachment class how to calculate the current queue
- postion for an attachment using the data in WorkItems.
-
- I also finally made statusbubble.* and dashboard.* not use copy-paste code.
-
- The Attachment class has this summary() method which is very
- controller/view-like and does not belong in a model class.
- This patch got rid of all direct uses of summary().
-
- * QueueStatusServer/handlers/dashboard.py:
- - Build row objects to hand off to the view instead of handing off a
- summary object and expecting the view to process it directly.
- * QueueStatusServer/handlers/statusbubble.py:
- - Build bubble object and hand them off to the view.
- * QueueStatusServer/handlers/updatestatus.py:
- - Code cleanup. Just move some code into _queue_status_from_request
- to make the main put() handler easier to read.
- * QueueStatusServer/handlers/updateworkitems.py: Added.
- - Controller to handle storing WorkItems model objects.
- * QueueStatusServer/main.py:
- - Add route for /update-work-items
- * QueueStatusServer/model/attachment.py:
- - Add new methods to replace direct summary() access.
- - Teach attachment how to calculate queue positions from WorkItems data.
- * QueueStatusServer/model/queues.py:
- - Move name_with_underscores here for easier re-use.
- * QueueStatusServer/model/workitems.py: Added.
- - New model for storing what items are currently queue for any bot.
- * QueueStatusServer/templates/dashboard.html:
- - Kill the copy/paste code!
- * QueueStatusServer/templates/statusbubble.html:
- - Kill the copy/paste code!
- * QueueStatusServer/templates/updateworkitems.html: Added.
- - Simple form for updating a queue's current work items.
-
-2010-05-15 Joanmarie Diggs <joanmarie.diggs@gmail.com>
-
- Reviewed by Xan Lopez.
-
- https://bugs.webkit.org/show_bug.cgi?id=30500
- [Gtk] Find a way for WebKit to "announce" itself so that ATs can readily distinguish it from true Gtk/Gail
-
- The "announcement" is now made in the form of an object attribute
- associated with the AtkObject.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::allAttributes):
- (attributeSetToString):
-
-2010-05-15 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Accessibility: Implement isSelected in DRT for GTK
- https://bugs.webkit.org/show_bug.cgi?id=31018
-
- Implement AccessibilityUIElement::isSelected() for Gtk
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isSelected):
-
-2010-05-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- scm.py should use self.run instead of run_command
- https://bugs.webkit.org/show_bug.cgi?id=38957
-
- We've wanted to do this for a while, but it's a prerequiste for running
- SVN from the cwd instead of the checkout_root.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-05-14 Anton Muhin <antonm@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] Consider implementing addOriginAccessWhitelistEntry method
- https://bugs.webkit.org/show_bug.cgi?id=37578
-
- Remove deprecated methods.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp
- * DumpRenderTree/chromium/LayoutTestController.h
-
-2010-05-14 Kenneth Russell <kbr@google.com>
-
- Reviewed by Darin Adler.
-
- Rename WebGLArray types to TypedArray types
- https://bugs.webkit.org/show_bug.cgi?id=39091
-
- Extended functionality of do-webcore-rename script and used it to
- rename the WebGLArray types to the TypedArray naming convention.
- The only source files which were touched by hand, and which are
- being manually reviewed, are:
- WebCore/page/DOMWindow.idl
- WebCore/bindings/generic/RuntimeEnabledFeatures.h (script's changes undone)
- WebKit/WebCore/bindings/js/JSDOMWindowCustom.cpp
- WebKit/WebCore/bindings/v8/custom/V8DOMWindowCustom.cpp
- These only needed to be touched to update the aliases between the
- WebGLArray and TypedArray names introduced in bug 39036. (It was
- not feasible to have do-webcore-rename handle this as it would
- introduce circular renamings.) These aliases will be removed in
- roughly a month once existing WebGL content has been updated.
-
- No new tests; covered under existing WebGL tests. Updated
- constructed-objects-prototypes and prototype-inheritance-2 tests.
- Ran all layout tests in Safari and all WebGL tests in Chromium.
-
- * Scripts/do-webcore-rename:
- Handle the case where some renames are substrings of others.
- Support renaming files containing custom JS bindings. If
- isDOMTypeRename is non-zero, expand the regexp which rewrites
- the file's contents in order to support custom JS bindings.
-
-2010-05-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch rollout throws exception if bug is already open
- https://bugs.webkit.org/show_bug.cgi?id=38803
-
- This was caused by someone incorrectly wrapping the code. :p
- I'm going to have to start demanding unit tests for wrapping changes...
-
- I also fixed the code to be able to reopen bugs which were never confirmed.
- Before it regressed, the code would just log in that case. Now it actually
- will reopen the bug, but there is a FIXME about how the logic is a bit backwards.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- - Yay testing!
-
-2010-05-14 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Antti Koivisto.
-
- [Qt] Rename QtLauncher to QtTestBrowser
-
- * QtTestBrowser: Copied from WebKitTools/QtLauncher.
- * QtTestBrowser/QtLauncher.pro: Removed.
- * QtTestBrowser/QtLauncher.qrc: Removed.
- * QtTestBrowser/QtTestBrowser.pro: Copied from WebKitTools/QtLauncher/QtLauncher.pro.
- * QtTestBrowser/QtTestBrowser.qrc: Copied from WebKitTools/QtLauncher/QtLauncher.qrc.
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
-
-2010-05-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Stop CCing webkit-bot-watchers
- https://bugs.webkit.org/show_bug.cgi?id=39020
-
- webkit-bot-watchers is somewhat of a failed experiment. No one
- subscribed to the list (not even me). Removing it from the code
- because wms says it bounces email sometimes.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2010-05-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION: webkit-patch commit-message throws exception
- https://bugs.webkit.org/show_bug.cgi?id=38997
-
- * Scripts/webkitpy/tool/commands/upload.py:
- - Fix to respect and pass the --squash and --git-commit options.
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- - Fix the unit test to use the central MockCheckout instead of
- its own custom Mock which didn't require enough parameters.
-
-2010-05-13 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Improve QtLauncher user agent dialog resize
- https://bugs.webkit.org/show_bug.cgi?id=39062
-
- * QtLauncher/main.cpp:
- (LauncherWindow::showUserAgentDialog):
-
-2010-05-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Disable compositing/iframes tests on the commit-queue as a workaround for bug 38912
- https://bugs.webkit.org/show_bug.cgi?id=39067
-
- Fix yet another typo in my original hack.
- I also added another unit test for this fix.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2010-05-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Disable compositing/iframes tests on the commit-queue as a workaround for bug 38912
- https://bugs.webkit.org/show_bug.cgi?id=39067
-
- My previous (unreviewed) hack didn't actually work due to checking "mac" instead of "Mac".
- This change fixes my hack, and unit tests it.
-
- * Scripts/webkitpy/tool/mocktool.py:
- - Make it possible to make run_command log too.
- * Scripts/webkitpy/tool/steps/runtests.py:
- - Fix my hack to actually work.
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Test my hack (and basic RunTests behavior as well).
-
-2010-05-13 Antonio Gomes <tonikitoo@webkit.org>, Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] Add LayoutTestController interface: computedStyleIncludingVisitedInfo
- https://bugs.webkit.org/show_bug.cgi?id=37759
-
- WebKitTools:
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-05-10 Adam Roben <aroben@apple.com>
-
- Convert status bar text to UTF-8 before logging it on Windows
-
- We were previously logging the text using printf("%S", bstr). This
- converts the UTF-16 BSTR to a multibyte string using wctomb, which
- uses the codepage for the current locale to perform the conversion.
- The conversion was failing, causing printf to bail and truncate the
- string. By converting to UTF-8 manually before logging, we avoid this
- issue (and also end up with UTF-8 output, which is what the expected
- results contain). We may have to do this in other places in DRT,
- eventually.
-
- Fixes <http://webkit.org/b/38849> REGRESSION (r59016):
- plugins/set-status.html fails on Windows
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (toUTF8): Moved this here from FrameLoadDelegate. Renamed from
- BSTRtoString.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Added declaration of toUTF8.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp: Removed BSTRtoString.
- (descriptionSuitableForTestResult): Updated for rename.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::setStatusText): Convert the status bar text to UTF-8
- before logging it so that Windows won't try (and fail) to convert it
- to the current locale's codepage.
-
-2010-05-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed hack, attempting to get the commit-queue running again.
-
- Disable compositing/iframes tests on the commit-queue as a workaround for bug 38912
- https://bugs.webkit.org/show_bug.cgi?id=39067
-
- I had this hack locally on the commit-queue, but it's fragile
- and broke this morning. It will work much better if committed
- to the repository. In either case it's temporary while we
- work up a real fix for bug 38912.
-
- * Scripts/webkitpy/common/config/ports.py:
- - Expose an is_leopard() method.
- * Scripts/webkitpy/tool/steps/runtests.py:
- - Don't run compositing/iframes tests on the commit-queue under leopard.
-
-2010-05-13 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix. Revert previous change.
-
- Even if with-statments are changed in websocket_server.py, it also claims syntax error for with statement in http_server.py.
- Until python 2.5 is installed on tiger bot, skips websocket/tests on tiger.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: use with statement
-
-2010-05-13 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- On tiger bot, it claims syntax error for with statement.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: rewrite with statement with try-finally.
-
-2010-05-13 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- WebSocket: pywebsocket 0.5
- https://bugs.webkit.org/show_bug.cgi?id=38034
-
- Remove pywebsocket from webkitpy/thirdparty.
- Make pywebsocket autoinstalled.
-
- * Scripts/new-run-webkit-websocketserver:
- Add --output-dir option.
- * Scripts/old-run-webkit-tests:
- Use new-run-webkit-websocketserver, rather than directly run pywebsocket's standalone.py
- * Scripts/run-webkit-websocketserver:
- Ditto.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- Use autoinstalled pywebsocket.
- * Scripts/webkitpy/thirdparty/__init__.py:
- Autoinstall pywebsocket
- * Scripts/webkitpy/thirdparty/pywebsocket: Removed.
-
-2010-05-12 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Fixed a bug in svn-apply whereby the reviewer would not get set if
- the portion of the patch for the ChangeLog contains "NOBODY (**PS!)"
- in the leading junk.
-
- https://bugs.webkit.org/show_bug.cgi?id=38998
-
- * Scripts/VCSUtils.pm:
- - Added the $changeLogTimeZone variable from svn-apply.
- - Added setChangeLogDateAndReviewer() from svn-apply.
- - Added a localTimeInProjectTimeZone() subroutine.
- - In setChangeLogDateAndReviewer():
- - Added an $epochTime parameter to make the subroutine more testable.
- - Made the "NOBODY (**PS!)" regular expression more specific so that
- it will not apply to text in the leading junk.
- - Updated to call localTimeInProjectTimeZone().
- * Scripts/svn-apply:
- - Removed the $changeLogTimeZone file variable.
- - Added an $epochTime file variable to represent the current time.
- - Removed the setChangeLogDateAndReviewer() subroutine.
- - Updated patch() to use the new setChangeLogDateAndReviewer() syntax.
- * Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl: Added.
- - Added unit tests.
-
-2010-05-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy fails on windows due to lack of readline module
- https://bugs.webkit.org/show_bug.cgi?id=38884
-
- Win32 Python does not have a readline module, so we should
- not exit(1) if the import fails.
-
- Also the failure message is mac-specific and doesn't need to be.
- Only print the mac-specific install instructions on mac.
-
- * Scripts/webkitpy/common/system/user.py:
-
-2010-05-12 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Nate Chapin.
-
- [DRT/Chromium] Add a missing Sans-serif font setting
- https://bugs.webkit.org/show_bug.cgi?id=38981
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- Set "Helvetica" for Sans-serif. It is the same as the default setting of test_shell.
-
-2010-05-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch upload --fancy-review now uses the bugzilla bug ID as the rietveld ID
- https://bugs.webkit.org/show_bug.cgi?id=38866
-
- wkrietveld.appspot.com has already been updated to allow you to
- pass --issue for the issue creation as well as subsequent uploads.
-
- Also, remove the extra code for trying to read out the issue ID
- from the changelog description since we just use the bugzilla ID now.
-
- * Scripts/webkitpy/common/config/__init__.py:
- * Scripts/webkitpy/common/net/rietveld.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2010-05-12 Ojan Vafai <ojan@chromium.org>
-
- No review needed.
-
- Marking myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: add a --print default option so that you can
- easily get the default output plus something (e.g., you can say
- '--print default,config' instead of '--print misc,one-line-progress,
- one-line-summary,unexpected,unexpected-results,updates,config'.
-
- Also, add more unit tests for --verbose, --print everything, etc.
-
- https://bugs.webkit.org/show_bug.cgi?id=38877
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2010-05-12 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Adam Barth.
-
- Qt build failures cause SheriffBot false positives
- https://bugs.webkit.org/show_bug.cgi?id=38969
-
- Add Qt bots back to the core builders, because bug fixed by r59261.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-05-12 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Slave losts cause build break on bots
- https://bugs.webkit.org/show_bug.cgi?id=38980
-
- * Scripts/build-webkit: Remove 0 byte sized files from productDir before build.
-
-2010-05-12 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed trivial fix after r59254.
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-12 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Eric Seidel.
-
- run-webkit-tests --exit-after-N-failures should not count new tests as failures
- https://bugs.webkit.org/show_bug.cgi?id=31829
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-12 James Robinson <jamesr@chromium.org>
-
- Reviewed by Simon Fraser.
-
- Disable smooth scrolling on OS X when running tests
- https://bugs.webkit.org/show_bug.cgi?id=38964
-
- Some tests (like fast/repaint/fixed-move-after-keyboard-scroll.html)
- depend on smooth scrolling behavior. Since this is off by default
- in Leopard and on by default in Snow Leopard, DRT should turn it
- off always to ensure a consistent test environment.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-05-10 Rodrigo Belem <rodrigo.belem@openbossa.org>
-
- Reviewed by Kenneth Christiansen , Simon Hausmann and Gustavo Noronha.
-
- [Qt, Gtk] Allows build-webkit script to receive an install prefix as parameter
- https://bugs.webkit.org/show_bug.cgi?id=26224
-
- Added more parameters to build-webkit script, the --prefix for gkt
- and --install-libs, --install-headers for qt. Now it is possible
- to change the install prefix for gtk and install path for qt.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2010-05-12 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, added my IRC nickname.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-11 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fixed two FIXME's in svn-apply: eliminated the unnecessary %copiedFiles
- variable and changed gitKnowsOfFile() to use exitStatus().
-
- https://bugs.webkit.org/show_bug.cgi?id=38862
-
- * Scripts/svn-apply:
-
-2010-05-11 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing python typo.
-
- EWS bots should poll more often than every 5 minutes
- https://bugs.webkit.org/show_bug.cgi?id=38968
-
- Typo in _now(), add a unittest to prove I fixed it.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
-
-2010-05-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Qt build failures cause SheriffBot false positives
- https://bugs.webkit.org/show_bug.cgi?id=38969
-
- The Qt buildbot randomly fails to compile occasionally because its
- network connection causes SVn to leave zero-byte files around. These
- compile failures confuse SheriffBot into thinking someone's patch
- caused a build break.
-
- In this patch, I've temporarily removed Qt from the list of core
- builders. Ossy is working on a script to clean up the zero byte files.
- Once that goes in, we can add Qt back to the core builders.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-05-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- sheriffbot is spammy.
- https://bugs.webkit.org/show_bug.cgi?id=38936
-
- Reduce sheriffbot spam by not warning about new blameworthy revisions
- that can be explained by previously blamed revisions. This might cause
- us to not warn about some real failures, but we're getting too much
- spam from slow builders that have large blamelists (and we've already
- poked the responsible folks using data from a fast builder).
-
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- - Removed unneeded import
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- - The logic change
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- - Tests of the change
- * Scripts/webkitpy/tool/mocktool.py:
- - Merged two declarations of MockBuilder
-
-2010-05-11 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] detect num processors to pass to make -j on Linux
- https://bugs.webkit.org/show_bug.cgi?id=38833
-
- * Scripts/webkitdirs.pm:
-
-2010-05-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS bots should poll more often than every 5 minutes
- https://bugs.webkit.org/show_bug.cgi?id=38968
-
- We'll make them poll every 2 minutes to start with.
- I'm going to re-write how polling works soon, so this is
- a stop-gap to try and make the bots more responsive.
-
- If Bill notices any additional load on bugzilla we'll drop
- the polling frequency back to 5 minutes. He's historically said
- that the EWS bots appear to be a drop in the bucket and thus
- should be able to poll much more frequently w/o causing trouble.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- - Add a test for sleep_message
-
-2010-05-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should commit rollouts without running tests
- https://bugs.webkit.org/show_bug.cgi?id=38940
-
- Most of this change is improving our test coverage for the commit-queue.
- The only functional change is removing the --test flag when the commit-queue
- is running in rollouts mode.
-
- I added test coverage for status updates, and updated the commit-queue status
- messages to distinguish rollout vs. normal landing mode in its empty queue
- and land patch messages.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- - Got rid of a bunch of copy/paste code using _default_expected_stderr
- * Scripts/webkitpy/tool/commands/queues.py:
- - Moved rollout patch filtering out of _validate_patches_in_commit_queue
- so that we only have to check if the builders are green in one place.
- - Make the "empty queue" message note which queue it is referring to.
- - Don't pass --text to land-attachment when in rollout mode.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Update results now that we're testing status updates.
- - Test _can_build_and_test since I made a typo in that call while
- writing this change and the unit tests failed to catch it!
- * Scripts/webkitpy/tool/mocktool.py:
- - Log status updates to make them testable in our unit tests.
-
-2010-05-11 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Apply recent changes of test_shell to DRT
- https://bugs.webkit.org/show_bug.cgi?id=38895
-
- Port the changes to test_shell during (r40492, r46810] of Chromium.
- Highlights:
- - Introduce NotificationPresenter
- - Fix parameter mismatch of WebViewClient::startDragging()
-
- This change fixes dozens of unexpected behaviors.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- Add NotificationPresenter.{cpp,h}
- * DumpRenderTree/chromium/EventSender.cpp:
- (applyKeyModifier):
- (EventSender::EventSender):
- (EventSender::reset):
- (EventSender::webview):
- (EventSender::doDragDrop):
- (EventSender::keyDown):
- (EventSender::addTouchPoint):
- (EventSender::clearTouchPoints):
- (EventSender::releaseTouchPoint):
- (EventSender::setTouchModifier):
- (EventSender::updateTouchPoint):
- (EventSender::cancelTouchPoint):
- (EventSender::sendCurrentTouchEvent):
- (EventSender::touchEnd):
- (EventSender::touchMove):
- (EventSender::touchStart):
- (EventSender::touchCancel):
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- (LayoutTestController::setScrollbarPolicy):
- (LayoutTestController::setWillSendRequestClearHeader):
- (LayoutTestController::callShouldCloseOnWebView):
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::removeOriginAccessWhitelistEntry):
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/NotificationPresenter.cpp: Added.
- * DumpRenderTree/chromium/NotificationPresenter.h: Added.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::resetTestController):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::eventSender):
- (TestShell::notificationPresenter):
- (TestShell::showDevTools):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
- (WebViewHost::createPopupMenu):
- (WebViewHost::startDragging):
- (WebViewHost::notificationPresenter):
- (WebViewHost::createApplicationCacheHost):
- (WebViewHost::willSendRequest):
- (WebViewHost::updateAddressBar):
- (WebViewHost::updateURL):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::addClearHeader):
- (WebViewHost::clearHeaders):
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: fix a path-handling bug that was breaking the
- dryrun ports on windows, and add a comment about why we don't run
- the chromium dryrun tests by default on every port.
-
- https://bugs.webkit.org/show_bug.cgi?id=38796
-
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-11 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- <http://webkit.org/b/38941> build-webkit shouldn't always override ENABLE_FOO Xcode configuration settings
-
- * Scripts/build-webkit: Don't pass the ENABLE setting to xcodebuild if the value matches the default.
- This will lead to xcodebuild picking up the settings from FeatureDefines.xcconfig, and will aid in
- revealing problems that are due to inconsistent values for settings across projects.
-
-2010-05-11 Mark Rowe <mrowe@apple.com>
-
- Build fix.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
-
-2010-05-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by David Levin.
-
- CheckStyle was eating script errors when there were local-commits and working copy changes
- https://bugs.webkit.org/show_bug.cgi?id=38880
-
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/checkstyle_unittest.py: Added.
-
-2010-05-11 Jian Li <jianli@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Expose FileReader interface.
- https://bugs.webkit.org/show_bug.cgi?id=38609
-
- * Scripts/build-webkit: turn on building FileReader for Apple's WebKit.
-
-2010-05-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] Build DRT when running build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=38730
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Removed.
- * Scripts/build-dumprendertree: This does nothing now.
-
-2010-05-10 Jon Honeycutt <jhoneycutt@apple.com>
-
- REGRESSION(r59100): Added test is broken on many platforms.
- https://bugs.webkit.org/show_bug.cgi?id=38881
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_Destroy):
- Use pluginLog, rather than printf, to match other platforms.
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix a build failure caused by assuming the default platform in
- a unit test for new-run-webkit-tests instead of specifying
- --platform test.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build-fix
-
- new-run-webkit-tests: fix test failure caused by me failing to update
- the expected output. Also, run '--platform test' instead of
- 'platform dryrun' since the former is guaranteed to work and the
- latter isn't.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- new-run-webkit-tests: looks like the unicode conversion broke
- --print-last-failures and --retest-last-failures. Fixing.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- Re-attempt to fix 38616 - newline handling in new-run-webkit-tests.
- I didn't handle some cases correctly before and the solution was
- confusing. The new patch assumes all calls to the printing module
- don't have newlines, and will append newlines where necessary, just
- like logging does.
-
- https://bugs.webkit.org/show_bug.cgi?id=38790
-
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-10 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Adam Barth.
-
- Make tkent a reviewer
- https://bugs.webkit.org/show_bug.cgi?id=38875
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-07 Jon Honeycutt <jhoneycutt@apple.com>
-
- Crash closing window containing Flash plug-in
- https://bugs.webkit.org/show_bug.cgi?id=38797
- <rdar://problem/7935266>
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginAllocate):
- Initialize new member to false.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- Added a new member.
-
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New):
- Check whether the element has the "testGetURLOnDestroy" attribute, and
- record that.
- (NPP_Destroy):
- If "testGetURLOnDestroy" is set, perform a load while destroying the
- plug-in.
-
-2010-05-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Executive.kill_* do not work with windows python
- https://bugs.webkit.org/show_bug.cgi?id=38872
-
- http://trac.webkit.org/changeset/57444 is where the original
- breakage occurred.
- http://trac.webkit.org/changeset/58314 is where the regression
- started affecting chromium.
-
- I have since learned that sys.platform has no "windows" value.
- "win32" is always the value, under 32 or 64 bit windows
-
- The tests for this code are not run anywhere because
- test-webkitpy does not yet work on "win32". Mostly due to
- depending on unixisms like "cat" and "yes".
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2010-05-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix a bug in rebaseline-chromium-webkit-tests where we would crash
- instead of logging an error and exiting if it couldn't find either a
- debug or a release build of the image diff binary.
-
- https://bugs.webkit.org/show_bug.cgi?id=38692
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py: Added.
-
-2010-05-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests fails when run under sys.platform == "windows" due to undefined signal.SIGKILL
- https://bugs.webkit.org/show_bug.cgi?id=38861
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2010-05-10 Jer Noble <jer.noble@apple.com>
-
- Unreviewed.
-
- Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-10 Hans Wennborg <hans@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- [Chromium] Add quota parameter to WebViewClient::createSessionStorageNamespace()
- https://bugs.webkit.org/show_bug.cgi?id=38750
-
- Put a per-origin quota on session storage since it is using memory in
- the browser process, and should not be allowed to grow arbitrarily
- large. See also http://trac.webkit.org/changeset/58828.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createSessionStorageNamespace):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-05-10 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Simon Hausmann.
-
- [Qt] Roll-out r59020 and r59021, because the Qt part of these changes
- haven't been landed in Qt trunk yet. Should be rolled-in again after the merge.
-
- https://bugs.webkit.org/show_bug.cgi?id=32967
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-2010-05-09 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- https://bugs.webkit.org/show_bug.cgi?id=38812
-
- Make the regular expressions for parsing the start of an SVN
- and Git header global variables since they are used throughout
- VCSUtils.pm.
-
- * Scripts/VCSUtils.pm:
-
-2010-05-09 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Finished moving the header-parsing logic from svn-apply and -unapply
- to VCSUtils.pm's parsing methods.
-
- https://bugs.webkit.org/show_bug.cgi?id=38802
-
- * Scripts/VCSUtils.pm:
- - Added to parseGitDiffHeader() the ability to parse and store
- whether a file is new or deleted.
- - Also reordered in parseGitDiffHeader() some of the else statements
- to a more readable ordering.
- - Added to parseSvnDiffHeader() the ability to parse and store
- whether a file is new.
- * Scripts/svn-apply:
- - Changed handleGitBinaryChange() to use the new "isNew" and "isDeletion"
- diffHash key-values.
- - Changed patch() to use the new "isNew" diffHash key-value.
- * Scripts/svn-unapply:
- - Changed patch() to use the new "isNew" and "isDeletion" diffHash key-values.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Added unit tests for new and deleted files.
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Updated the unit tests as necessary.
- - Added a unit test for a deleted file.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Updated the unit tests as necessary.
-
-2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Added to svn-apply support for git renames and copies with similarity
- index less than 100%.
-
- https://bugs.webkit.org/show_bug.cgi?id=32834
-
- * Scripts/VCSUtils.pm:
- - Added to parseGitDiffHeader() support for renames and similarity
- index less than 100%.
- - Added to parseDiff() support for processing renames, renames with
- changes, and copies with changes.
- - Added to parsePatch() the ability to process multiple return
- values from parseDiff().
- * Scripts/svn-apply:
- - Added to patch() the ability to process diff hashes with the
- isDeletion key-value set.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated the unit tests as necessary.
- - Added unit tests for rename with similarity index 100%,
- rename with similarity index < 100%, and rename with a change
- to the executable bit.
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Added unit tests for rename with similarity index 100%,
- rename with similarity index < 100%, and rename with a change
- to the executable bit.
- * Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl:
- - Updated the unit tests as necessary.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Simplified the carriage-return unit test to more narrowly test
- only carriage returns.
-
-2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- This revision suppresses the misleading "error: pathspec..." messages
- when using svn-apply to add a binary file from a Git diff.
-
- https://bugs.webkit.org/show_bug.cgi?id=38047
-
- When adding a new binary file from a Git diff, svn-apply prints
- a misleading error of the form -- "error: pathspec '<filename>' did
- not match any file(s) known to git. Did you forget to 'git add'?"
- This patch suppresses these messages since they are normal.
-
- * Scripts/VCSUtils.pm:
- Added the callSilently() subroutine from runPatchCommand.pl, which
- executes a Perl function while suppressing STDERR.
- * Scripts/svn-apply:
- Refactored the Git portion of scmKnowsOfFile() into a
- gitKnowsOfFile(), and called this new subroutine using callSilently().
- * Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl:
- Removed callSilently() since it was moved to VCSUtils.pm in this patch.
-
-2010-05-08 Victor Wang <victorw@chromium.org>
-
- Reviewed by Adam Barth.
-
- [chromium]: Upload test results json files to app engine server
- Add an option to run_webkit_tests.py to upload generated
- JSON files to app engine server. These JSON files will be used
- by chromium layout test falkiness dashboard.
-
- https://bugs.webkit.org/show_bug.cgi?id=36063
-
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py: Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-05-08 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Build the ImageDiff tool for all platforms including Windows and Symbian
- https://bugs.webkit.org/show_bug.cgi?id=38706
-
- Use qmath.h instead of math.h to make it portable.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2010-05-08 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix http/tests/xmlhttprequest/cross-origin-no-authorization.html
- and http/tests/xmlhttprequest/cross-origin-authorization.html
-
- QHttpNetworkRequest adds Authorization and Cookie headers to XHRs
- without knowing if this is valid behaviour or not. In order to allow
- Qt to decide whether Cookie/Authorization headers should be added
- to an XHR QtWebKit needs to use an attribute added to QNetworkRequest.
- These new attributes are: QNetworkRequest::CookieLoadControlAttribute,
- QNetworkRequest::CookieSaveControlAttribute,and
- QNetworkRequest::AuthenticationReuseControlAttribute.
-
- In order to properly support the tests, Qt's DRT needs to use one
- NetworkAccessManager for all pages. This allows it to use cached
- credentials where appropriate.
-
- The tests now pass when run individually but there seems to be a problem with
- leaking the results of requests across tests when run with the others in
- http/tests. This will be addressed in a separate patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=32967
-
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-
-2010-05-04 Robert Hogan <robert@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [Qt] unskip http/tests/plugins/npapi-response-headers.html
-
- Turns out this failed because run-webkit-tests was eating the first occurrence
- of 'Content-Type: text/plain' in the test output as a header. Strange but true.
- So do as Chromium does and preface all text dumps with the
- 'Content-Type: text/plain' header.
-
- https://bugs.webkit.org/show_bug.cgi?id=38541
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2010-05-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- test-webkitpy fails under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=38718
-
- * Scripts/webkitpy/common/system/executive.py:
- - Add _KILL_PROCESS_KILLED_PROCESS_EXIT_CODE and
- _KILL_ALL_KILLED_PROCESS_EXIT_CODE to store the expected
- exit codes of processes killed by kill_process and kill_all.
- These two constants are only used by the unit tests but are
- stored in executive.py so they can be right next to the platform ifs.
- - Remove unnecessary str() conversion, run_command does that for us.
- - Make os.kill retry on cygwin on EAGAIN. It's unclear why CYGWIN
- throws EAGAIN, but it only does so sometimes. 3 may not be enough
- retries, but we'll try it to start with.
- - Add _windows_image_name to automatically convert "yes" to "yes.exe"
- for use with taskkill.exe /im. Various callers to kill_all could
- be updated to remove the .exe, but that can be done in another patch.
- - Use taskkill.exe for killall on cygwin.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Use the new *_KILLED_PROCESS_EXIT_CODE constants which are correctly
- set to 0 on windows/cygwin systems where taskkill.exe is used.
- - Test _windows_image_name
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Add FIXME about including mac-snowleopard in baseline_search_path.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Make default_configuration actually read from the Configuration file.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added.
- - Test default_configuration
- * Scripts/webkitpy/layout_tests/port/win.py:
- - Need a basic baseline_search_path if --platform dryrun is to work.
-
-2010-05-08 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just reverting commit.
-
- REGRESSION(59000): r59000 contained all sorts of changes it should not have, needs revert.
- https://bugs.webkit.org/show_bug.cgi?id=38798
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
-
-2010-05-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- test-webkitpy fails under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=38718
-
- * Scripts/webkitpy/common/system/executive.py:
- - Add _KILL_PROCESS_KILLED_PROCESS_EXIT_CODE and
- _KILL_ALL_KILLED_PROCESS_EXIT_CODE to store the expected
- exit codes of processes killed by kill_process and kill_all.
- These two constants are only used by the unit tests but are
- stored in executive.py so they can be right next to the platform ifs.
- - Remove unnecessary str() conversion, run_command does that for us.
- - Make os.kill retry on cygwin on EAGAIN. It's unclear why CYGWIN
- throws EAGAIN, but it only does so sometimes. 3 may not be enough
- retries, but we'll try it to start with.
- - Add _windows_image_name to automatically convert "yes" to "yes.exe"
- for use with taskkill.exe /im. Various callers to kill_all could
- be updated to remove the .exe, but that can be done in another patch.
- - Use taskkill.exe for killall on cygwin.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Use the new *_KILLED_PROCESS_EXIT_CODE constants which are correctly
- set to 0 on windows/cygwin systems where taskkill.exe is used.
- - Test _windows_image_name
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Add FIXME about including mac-snowleopard in baseline_search_path.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Make default_configuration actually read from the Configuration file.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added.
- - Test default_configuration
- * Scripts/webkitpy/layout_tests/port/win.py:
- - Need a basic baseline_search_path if --platform dryrun is to work.
-
- 2010-05-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- DryrunTest fails on every platform other than mac
- https://bugs.webkit.org/show_bug.cgi?id=38796
-
- The test uses the port detection logic to find a suitable
- port to use results from. However that detection logic assumes
- chromium on linux, which requires a chromium checkout which the
- bots don't have. The test is broken and we'll need to fix it.
- For now I'm just going to disable the test on all platforms besides mac.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
- 2010-05-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Clean up baseline_search_path to use map to reduce copy/paste code
- https://bugs.webkit.org/show_bug.cgi?id=38792
-
- Reading which portnames a port falls back to is easier if
- we convert port names to paths with map instead of using copy/paste code.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
- 2010-05-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- rollout commands fail when commit is missing bug number
- https://bugs.webkit.org/show_bug.cgi?id=38791
-
- * Scripts/webkitpy/tool/commands/download.py:
- - _commit_info failed to actually return the CommitInfo in the no-bug-id case.
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- - Test that the fix worked.
-
-2010-05-07 Darin Fisher <darin@chromium.org>
-
- Fix build bustage: toElement<T> should be to<T>.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
-
-2010-05-07 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Refactored VCSUtils.pm's parse-related methods to leave inapplicable
- hash values unset instead of setting them to "undef".
-
- https://bugs.webkit.org/show_bug.cgi?id=38724
-
- Preferring "not set" over "undef" keeps the unit tests smaller and
- easier to maintain. Otherwise, we would have to update every unit
- test case each time we add support for a new key-value pair --
- instead of just the relevant ones.
-
- * Scripts/VCSUtils.pm:
- - In parseGitDiffHeader(), adjusted the handling of these key-values:
- executableBitDelta and isBinary.
- - In parseSvnDiffHeader(), adjusted the handling of these key-values:
- copiedFromPath, isBinary, and sourceRevision.
- - In parseDiffHeader(), adjusted the handling of these key-values:
- isGit and isSvn.
- - In parseDiff(), adjusted the handling of these key-values:
- isBinary, isGit, isSvn, and sourceRevision.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Updated the unit tests as necessary.
-
-2010-05-06 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Exclude leaks due to <rdar://problem/7815391> from the output.
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r58933.
- http://trac.webkit.org/changeset/58933
- https://bugs.webkit.org/show_bug.cgi?id=38717
-
- "Broke all websocket tests on Tiger" (Requested by eseidel on
- #webkit).
-
- * Scripts/new-run-webkit-websocketserver:
- * Scripts/old-run-webkit-tests:
- * Scripts/run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/thirdparty/__init__.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/COPYING: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/MANIFEST.in: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/README: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/README.webkit: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/example/echo_client.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/example/echo_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/example/handler_map.txt: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/__init__.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/dispatch.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/handshake.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/headerparserhandler.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/memorizingfile.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/msgutil.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/standalone.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/util.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/setup.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/config.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/mock.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/run_all.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_dispatch.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_handshake.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_memorizingfile.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_mock.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_msgutil.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_util.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/README: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/blank_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/origin_check_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/exception_in_transfer_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/no_wsh_at_the_end.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/non_callable_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/plain_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/wrong_handshake_sig_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/handlers/sub/wrong_transfer_sig_wsh.py: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/hello.pl: Added.
-
-2010-05-06 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- WebSocket: pywebsocket 0.5
- https://bugs.webkit.org/show_bug.cgi?id=38034
-
- Remove pywebsocket from webkitpy/thirdparty.
- Make pywebsocket autoinstalled.
-
- * Scripts/new-run-webkit-websocketserver:
- Add --output-dir option.
- * Scripts/old-run-webkit-tests:
- Use new-run-webkit-websocketserver, rather than directly run pywebsocket's standalone.py
- * Scripts/run-webkit-websocketserver:
- Ditto.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- Use autoinstalled pywebsocket.
- * Scripts/webkitpy/thirdparty/__init__.py:
- Autoinstall pywebsocket
- * Scripts/webkitpy/thirdparty/pywebsocket: Removed.
-
-2010-05-06 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- svn-apply now understands the Git diff "copy from" syntax when the
- similarity index is 100%.
-
- https://bugs.webkit.org/show_bug.cgi?id=38628
-
- * Scripts/VCSUtils.pm:
- - Adjusted parseGitDiffHeader() to parse the "copy from" and
- "similarity index" lines.
-
- * Scripts/svn-unapply:
- - Adjusted the patch() subroutine so that copies are recognized
- as file additions.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Added unit tests for the cases of a copy with similarity index
- 100% and less than 100%.
-
-2010-05-06 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Removed the need for svn-apply and -unapply to re-parse whether
- a diff is binary or not.
-
- https://bugs.webkit.org/show_bug.cgi?id=38320
-
- * Scripts/VCSUtils.pm:
- - Adjusted parseGitDiffHeader() to set the isBinary key.
- - Adjusted parseSvnDiffHeader() to set the isBinary key.
- - Adjusted parseDiffHeader() to set the isBinary key.
- - Changed the scmFormat key set by parseDiffHeader() to
- isGit and isSvn keys.
- - Adjusted parseDiff() to set the isBinary, isGit, and isSvn keys.
-
- * Scripts/svn-apply:
- - Updated the patch() method to use the isBinary, isGit, and
- isSvn keys.
-
- * Scripts/svn-unapply:
- - Updated the patch() method to use the isBinary and isSvn keys.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated the unit tests as necessary.
- - Added a test case to test that the isBinary key is getting set properly.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Updated the unit tests as necessary.
-
-2010-05-06 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add support for resources on Mac
- https://bugs.webkit.org/show_bug.cgi?id=38637
-
- Repack webkit_chromium_resources.pak, webkit_strings_en-US.pak,
- and webkit_resources.pak, and put them as Mac bundle resource.
- The 'actions' section is almost same as a part of test_shell.gypi.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2010-05-06 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed buildfix after r58917.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.h: Missing function declaration added.
-
-2010-05-06 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler and Dan Bernstein..
-
- REGRESSION (r51617): when plugins are disabled, plugins show up as garbage characters
- https://bugs.webkit.org/show_bug.cgi?id=38698
- <rdar://problem/7942075>
-
- Add a 'setPluginsEnabled' layoutTestController function for disabling plug-ins. This is only implemented on Mac currently
- because the bug that needs this functionality is mac specific.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setPluginsEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setPluginsEnabled):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setPluginsEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setPluginsEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setPluginsEnabled):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setPluginsEnabled):
-
-2010-05-06 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Make ImageDiff depend on WebKit. When compiled from within Chromium, WTF is not a standalone dynamic library but depends on WebKit.
- https://bugs.webkit.org/show_bug.cgi?id=38632
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2010-05-06 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Replace public inspector url with private property for QtLauncher
- https://bugs.webkit.org/show_bug.cgi?id=35340
-
- Replace the public API with a private dynamic property until this feature
- is ready.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::init):
-
-2010-05-05 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: build-webkit --inspector-frontend Should Exclude *.re2js
- https://bugs.webkit.org/show_bug.cgi?id=38449
-
- * Scripts/webkitdirs.pm:
-
-2010-05-05 Charles Wei <charles.wei@torchmobile.com.cn>
-
- Reviewed by George Staikos
-
- This patch adds WCSS -wap-input-format and -wap-input-required support to WebKit
- Make the test cases in fast/wcss optionional only when WCSS is enabled.
-
- https://bugs.webkit.org/show_bug.cgi?id=37848
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitperl/features.pm:
-
-2010-05-05 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [DRT/Chromium] Remove InitWebCoreSystemInterface() call
- https://bugs.webkit.org/show_bug.cgi?id=38624
-
- Chromium r45167 <http://src.chromium.org/viewvc/chrome?view=rev&revision=45167>
- added InitWebCoreSystemInterface() to webkit/support/platform_support_mac.mm.
- So we don't need to call it from DumpRenderTree.cpp anymore.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main): Remove InitWebCoreSystemInterface().
-
-2010-05-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: clean up newline handling in printing
-
- The new printing module seems to handle newlines somewhat
- inconsistently, especially in --verbose mode. This change cleans up
- the code to make things more consistent and adds a bunch of unit tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=38616
-
- * Scripts/webkitpy/common/array_stream.py: Added.
- * Scripts/webkitpy/common/array_stream_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-05-05 James Robinson <jamesr@chromium.org>
-
- Reviewed by Adam Barth.
-
- Ban the single letter 'l' as an identifier name
- http://trac.webkit.org/changeset/58844
-
- Add a lint rule to ban the single letter 'l' as an identifier name
- since it is very easy to confuse with the numeral '1', especially
- in code like WebCore/css/CSSHelper.cpp.
-
- See http://trac.webkit.org/changeset/58844 as an example of a bug
- caused by confusing short variable names.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-05-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- PrettyPatch.pretty_diff("") should not hang
- https://bugs.webkit.org/show_bug.cgi?id=38552
-
- Also found a bug in PrettyPatch.pretty_diff where it would
- hang when passed "" as input.
-
- I suspect there may be bugs in prettify.rb (or our use there-of)
- where it can hang, which would then cause the testing thread to hang.
-
- * Scripts/webkitpy/common/prettypatch.py:
- - Don't hang when passed ""
- * Scripts/webkitpy/common/prettypatch_unittest.py:
- - Test that we don't hang when passed ""
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Add a FIXME that we should share code with prettypatch.rb
-
-2010-05-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: turn off threading on the Chromium Mac port until
- we can stabilize the port more and figure out why it is hanging so
- frequently.
-
- https://bugs.webkit.org/show_bug.cgi?id=38553
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- - override default_child_processes() and log a warning
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - fix a typo that caused us to print a method object instead of the
- value the method object returns in the case where there is only
- one child process.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- - Add unit tests for the output of run_webkit_tests - in this case,
- the handling of --child-processes and --print config
-
-2010-05-04 Timothy Hatcher <timothy@apple.com>
-
- Fix the find command in extract-localizable-strings so skip
- directories are correctly skipped and header files are searched.
-
- https://bugs.webkit.org/show_bug.cgi?id=38545
- rdar://problem/7941295
-
- Reviewed by Darin Adler.
-
- * Scripts/extract-localizable-strings: Append -o after each -prune
- so -and isn't implied. Surround all the -name arguments so they get
- an implied -print action. Removed check for "icu". Skip any header that
- ends in LocalizableStrings.h, so SafariLocalizableStrings.h is skipped.
- * Scripts/update-webkit-localizable-strings: Add the two icu directories
- to the skip list.
-
-2010-05-04 Jesus Sanchez-Palencia <jesus@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Wrong documentation on 'webkit-patch help land'.
- https://bugs.webkit.org/show_bug.cgi?id=37871
-
- Small fix on the help documentation for webkit-patch
- land.
-
- * Scripts/webkitpy/tool/commands/download.py:
-
-2010-05-04 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QWebPage viewMode property
- https://bugs.webkit.org/show_bug.cgi?id=38119
-
- Rename the property from wrt_viewMode to _q_viewMode.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setViewModeMediaFeature):
-
-2010-05-04 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Fix typo in run_webkit_tests.py: s/_print\./_printer./
- https://bugs.webkit.org/show_bug.cgi?id=38515
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-05-04 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- This revision completes the terminology change from "processor" to
- "checker" for the CarriageReturnProcessor, CppProcessor,
- PythonProcessor, and TextProcessor classes, etc.
-
- https://bugs.webkit.org/show_bug.cgi?id=38262
-
- The word "processor" currently has two uses in our code. This
- revision renames the lower-level use to "checker" and preserves the
- word "processor" for higher-level, more general uses. This
- revision also makes whatever other name changes that logically
- followed from this change.
-
- * Scripts/check-webkit-style:
- - Updated references to PatchChecker.
-
- * Scripts/webkitpy/style/checker.py:
- - Renamed the StyleCheckerConfiguration class to
- StyleProcessorConfiguration.
- - Renamed the ProcessorDispatcher class to CheckerDispatcher, and
- made similar changes for the class's method names.
- - Renamed the PatchChecker class to PatchReader.
- - Updated the file as necessary to accommodate the other class
- renames in this patch.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the unit test code as necessary.
-
- * Scripts/webkitpy/style/checkers/common.py:
- - Renamed the CarriageReturnProcessor class to CarriageReturnChecker,
- and changed its process() method to check().
-
- * Scripts/webkitpy/style/checkers/common_unittest.py:
- - Updated the unit test code as necessary.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- - Renamed the CppProcessor class to CppChecker, and renamed its
- process() method to check().
-
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- - Updated the unit test code as necessary.
-
- * Scripts/webkitpy/style/checkers/python.py:
- - Renamed the PythonProcessor class to PythonChecker, and renamed
- its process() method to check().
-
- * Scripts/webkitpy/style/checkers/python_unittest.py:
- - Updated the unit test code as necessary.
-
- * Scripts/webkitpy/style/checkers/text.py:
- - Renamed the TextProcessor class to TextChecker, and renamed
- its process() method to check().
-
- * Scripts/webkitpy/style/checkers/text_unittest.py:
- - Updated the unit test code as necessary.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Updated the code as necessary.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Updated the unit test code as necessary.
-
-2010-05-04 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Adjusted svn-apply and -unapply to accept git diffs generated
- using the --no-prefix flag.
-
- https://bugs.webkit.org/show_bug.cgi?id=32438
-
- * Scripts/VCSUtils.pm:
- - Loosened the regular expression for the "diff --git" line to
- match when the --no-prefix flag is used with "git diff".
- - Also refactored the code parsing the first line so that the
- script exits with an error message if the first line cannot
- be parsed.
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl:
- - Added a unit test case for the --no-prefix case.
-
-2010-05-04 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Changed VCSUtils.pm's parseDiffHeader() to call the new
- parseGitDiffHeader() method.
-
- https://bugs.webkit.org/show_bug.cgi?id=38454
-
- This revision makes more progress towards adding executable-bit
- support to svn-apply and svn-unapply. It also makes more progress
- towards refactoring the code into a more maintainable form.
-
- * Scripts/VCSUtils.pm:
- - Removed gitdiff2svndiff().
- - Removed the Git-specific logic from parseDiffHeader() and
- renamed it parseSvnDiffHeader().
- - Added a new parseDiffHeader() subroutine which calls
- parseSvnDiffHeader() or parseGitDiffHeader() depending on
- the format of the first header line.
-
- * Scripts/webkitperl/VCSUtils_unittest/gitdiff2svndiff.pl: Removed.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Removed most of the test cases since these cases are now
- covered by the unit tests for parseSvnDiffHeader() and
- parseGitDiffHeader().
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl: Added.
- - Copied the SVN unit tests from parseDiffHeader.pl and updated
- them as necessary.
-
-2010-05-03 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Builders should run the perl and python unit tests on every commit
- https://bugs.webkit.org/show_bug.cgi?id=37976
-
- The unit tests take a few seconds to run, so they should not
- have any noticable effect on builder speed.
-
- We're running the tests everywhere but Tiger as Tiger's
- Python version is ancient.
- I would have rather have detected the python version of the
- slave but I couldn't find any API to do that, and I didn't want
- to hack version detection into test-webkitpy (at least not yet).
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-05-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Fixed a recent REGRESSION that caused svn-apply and -unapply to
- skip over changes to the first file in a diff if leading junk was
- present (like in an e-mail diff) and if the --force option was used.
-
- https://bugs.webkit.org/show_bug.cgi?id=38507
-
- * Scripts/svn-apply:
- - Removed the bit of code at the beginning of the patch()
- subroutine that checks for the "Index:" line at the beginning
- of a file diff (since the parsePatch() subroutine already
- checks this).
-
- * Scripts/svn-unapply:
- - Removed the bit of code at the beginning of the patch()
- subroutine that checks for the "Index:" line at the beginning
- of a file diff (since the parsePatch() subroutine already
- checks this).
-
-2010-05-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Adjusted the ChangeLog entry below for r58732 (bug 35804) to reflect
- the fact that the change will not become active until the patch
- for bug 38454 lands.
-
-2010-05-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Added code for svn-apply and -unapply to display an instructive error
- message if the --binary flag is left off the "git diff" command
- for diffs containing binary file differences.
-
- https://bugs.webkit.org/show_bug.cgi?id=35804
-
- This change will become active when parseDiffHeader() is modified
- to call parseGitDiffHeader (see bug 38454).
-
- * Scripts/VCSUtils.pm:
- - Adjusted parseDiffHeader() to exit with an appropriate error message
- if it encounters a line of the form "Binary files <path1> and
- <path2> differ".
-
-2010-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- new-run-webkit-tests: r58728 broke the buildbot logic for parsing the
- output of the log; specifying --verbose should basically be equivalent
- to --print everything, but instead it was equivalent to not specifying
- --print and getting the default set. Now, --verbose acts as if
- --print everything was implicitly specified as the default (you can
- still override it if you specify both; this is a somewhat debatable
- call).
-
- https://bugs.webkit.org/show_bug.cgi?id=38504
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2010-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- new-run-webkit-tests: Fix minor precedence bug introduced in r58728 where we printed
- "-\n" 78 times instead of "-" 78 times followed by a single "\n".
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2010-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: refactor a large chunk of the printing/logging
- code out of run-webkit-tests py (almost 300 lines out of 1900).
-
- This change also renames --log to --print (to be slightly more
- descriptive). I've also added better help messages for printing.
-
- The new code has unit tests!
-
- There is still more code to be moved, but this patch is big enough as
- it is. Namely, still to move are the printing of the actual results
- and the timing statistics, which should move another 300-400 lines
- out of the file.
-
- Notable changes to run_webkit_tests.py beyond code simply moving:
- * MeteredStream is now hidden under the new printing.Printer class.
- All the references to self._meter now point to self._printer.
- * All logging configuration is done in printing.configure_logging()
- * Instead of using write() lambdas to control what is and isn't
- printed, we use separate methods on the printer object. This will
- make it easier to grep which print statements are printed
- under protection of each flag.
- * The print_results flag I added a few revs back to suppress printing
- in the unit tests has been replaced with --print nothing.
- * The ResultSummary class now stores the entire TestResult for each
- test, not just the actual result type.
- * summarize_unexpected_results() got moved from a method on TestRunner
- to a standalone function. This should move into a separate file
- along with the ResultSummary class and the TestResult class
- * The --trace option added recently has been replaced by
- '--print trace-everything' and '--print trace-unexpected'
-
- https://bugs.webkit.org/show_bug.cgi?id=38018
-
- * Scripts/new-run-webkit-tests:
- - update to new entry points in run_webkit_tests.py
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- - fix a minor nit where we were printing an empty string where
- we didn't need to
- * Scripts/webkitpy/layout_tests/layout_package/printing.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py: Added
- * Scripts/webkitpy/layout_tests/port/test.py:
- - implement relative_test_filename() and expected_filename() so
- we can test printing unexpected results in a platform-neutral
- way
- * Scripts/webkitpy/run_webkit_test.py:
- - move a lot of the printing code into printing.py
- - change the signatures of the exported entry points for easier
- unit testing
- * Scripts/webkitpy/run_webkit_tests_unittest.py:
- - update w/ changes to run_webkit_tests entry points.
-
-2010-05-03 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Build and use Mac's ComplexTextController to support complex text in wx.
- https://bugs.webkit.org/show_bug.cgi?id=38482
-
- * wx/build/settings.py:
-
-2010-05-03 Abhishek Arya <inferno@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add support for controlling clipboard access from javascript.
- Clipboard access from javascript is enabled in test framework.
- https://bugs.webkit.org/show_bug.cgi?id=27751
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setJavaScriptCanAccessClipboardCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
-
-2010-05-03 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Maui MiniBrowser: Add an option to show/hide the web view
- https://bugs.webkit.org/show_bug.cgi?id=38486
-
- * MiniBrowser/win/BrowserWindow.cpp:
- (BrowserWindow::createWindow):
- Set the background brush to something other than null.
-
- (BrowserWindow::onCommand):
- Show and hide the web view accordingly.
-
- * MiniBrowser/win/MiniBrowser.rc:
- * MiniBrowser/win/resource.h:
- Add new menu item.
-
-2010-05-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Added a parseGitDiffHeader() subroutine to VCSUtils.pm that
- parses any changes to the executable bit in a Git diff.
-
- https://bugs.webkit.org/show_bug.cgi?id=38425
-
- This revision is more preparation towards adding "executable bit"
- support to svn-apply and svn-unapply. No code is going "live" in
- this change except for the new unit tests in test-webkitperl.
-
- * Scripts/VCSUtils.pm:
- - Added isExecutable() to determine whether a file mode has the
- executable bit set or not.
- - Added parseGitDiffHeader() to parse the header of a Git diff.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl: Added.
- - Added unit tests for parseGitDiffHeader().
-
-2010-05-03 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- https://bugs.webkit.org/show_bug.cgi?id=38447
-
- Refactor the unit tests in VCSUtils_unittest/parseDiff.pl to use
- Test::More::is_deeply like we do in VCSUtils_unittest/parseDiffHeader.pl.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
-
-2010-05-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Corrected a file path in the ChangeLog entry for r58663 (bug 38319) below.
-
-2010-05-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=38319
-
- * Scripts/VCSUtils.pm:
- - In parseDiffHeader()--
- - Added an "scmFormat" hash key to the return value to represent
- whether the diff is Git or SVN formatted.
- - Adjusted the code so the value of "copiedFromPath" will
- be undef rather than "does not exist" if the file was not
- copied.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Added a FIXME to refactor these unit tests to use is_deeply().
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Updated the unit tests to test the "scmFormat" value.
- - Simplified the unit tests by refactoring them to use is_deeply().
-
-2010-05-01 Daniel Bates <dbates@rim.com>
-
- Reviewed by Chris Jerdonek.
-
- https://bugs.webkit.org/show_bug.cgi?id=38423
-
- Adds infrastructure to change the file mode of a file using
- the appropriate SCM-specific routines.
-
- No functionality was changed, so no new tests.
-
- * Scripts/VCSUtils.pm: Added subroutines scmToggleExecutableBit,
- scmAddExecutableBit, and scmRemoveExecutableBit.
- * Scripts/svn-apply: Check for the hash key executableBitDelta
- and toggle the executable bit.
- * Scripts/svn-unapply: Ditto.
-
-2010-04-30 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Enabled accelerated compositing in DRT for Windows
- https://bugs.webkit.org/show_bug.cgi?id=38404
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2010-04-30 Anders Carlsson <andersca@apple.com>
-
- Try to fix GTK+ build.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_stream):
-
-2010-04-30 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
-
-2010-04-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Timothy Hatcher.
-
- Next step towards fixing
-
- https://bugs.webkit.org/show_bug.cgi?id=20784
- move npapi.h to C99 integer types
-
- Use the C99 types everywhere. The "old" types are still around but will be removed
- in a subsequent commit.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (int32VariantToIdentifier):
- (doubleVariantToIdentifier):
- (testIdentifierToInt):
- (testGetIntIdentifier):
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_NewStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_HandleEvent):
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New):
- (NPP_NewStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_HandleEvent):
-
-2010-04-30 Steve Block <steveblock@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Changed Steve Block from committer to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch doesn't work if a git repo is tracking multiple svn repos
- https://bugs.webkit.org/show_bug.cgi?id=38290
-
- Getting the tests to pass required getting our SVN repo to more closely
- match the real svn.webkit.org repo by having a trunk directory.
- That involved adding an extra commit at the beginning and thus changing
- all the commit numbers in the tests.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-04-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests can deadlock with Chromium's TestShell
- https://bugs.webkit.org/show_bug.cgi?id=38298
-
- Fix _write_command_and_read_line to never send unicode() to
- test_shell, instead to always encode as utf-8. This was causing
- random hangs because if test_shell ever encounters a \0 in the
- stream it can deadlock with NRWT.
-
- There is still a deadlock bug to fix in NRWT/test_shell design, however
- this fix should make the deadlock occur less often.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-04-29 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Refactored svn-apply and svn-unapply to use the new
- parsePatch() subroutine.
-
- https://bugs.webkit.org/show_bug.cgi?id=34033
-
- * Scripts/VCSUtils.pm:
- - Consolidated %diffHash documentation.
- - Added prepareParsedPatch().
-
- * Scripts/svn-apply:
- - Replaced main while loop with calls to parsePatch() and
- prepareParsedPatch().
-
- * Scripts/svn-unapply:
- - Replaced main while loop with calls to parsePatch() and
- prepareParsedPatch().
-
- * Scripts/test-webkitperl:
- - Changed to render relative test paths rather than absolute
- test paths.
-
- * Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl: Added.
- - Added unit tests for prepareParsedPatch().
-
-2010-04-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Added to VCSUtils's parseDiffHeader() support for binary patches.
-
- https://bugs.webkit.org/show_bug.cgi?id=38094
-
- The parseDiffHeader() function is part of new patch-parsing code
- for svn-apply and svn-unapply that will go live in a subsequent
- revision.
-
- * Scripts/VCSUtils.pm:
- - Added logic to parseDiffHeader() to recognize the ending of
- the header portion of a binary diff.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Added unit test cases for SVN and Git binary diffs.
-
-2010-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Document that subprocess.poll/wait are not threadsafe
- https://bugs.webkit.org/show_bug.cgi?id=38289
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-04-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Removed the dividing line (i.e. "====...") logic from the code
- called by svn-apply and svn-unapply.
-
- https://bugs.webkit.org/show_bug.cgi?id=38093
-
- The dividing line logic is unnecessary. Removing it simplifies the
- code and makes some subsequent changes easier.
-
- * Scripts/VCSUtils.pm:
- - Removed the logic in gitdiff2svndiff() to convert the git
- "index" line to an SVN dividing line.
- - Adjusted the logic similarly in parseDiffHeader().
-
- * Scripts/webkitperl/VCSUtils_unittest/gitdiff2svndiff.pl:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated the unit tests as necessary.
- - Corrected an error in the unit tests whereby all elements
- of an array were referencing the same element rather than
- distinct elements -- causing unit test failures to be masked.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Updated the unit tests as necessary.
- - Made the same unit test correction as above for parseDiff.pl.
-
-2010-04-28 Evan Stade <estade@chromium.org>
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py: adding myself as a committer
-
-2010-04-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add MiniBrowser to the lists of modules to build and only build it on
- SnowLeopard and later.
-
- * Makefile:
- * MiniBrowser/Makefile:
-
-2010-04-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Make running MiniBrowser.app without explicitly setting DYLD_FRAMEWORK_PATH.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/make-launchable.sh: Added.
-
-2010-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Audit all uses of subprocess in webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=38284
-
- After further discussions with Jeffrey Yasskin
- about http://bugs.python.org/issue2320
- and related issues of using subprocess from
- multiple threads, I have learned that subprocess
- is known to be non-threadsafe through recent
- Python 2.7 builds.
-
- I'm attempting to lessen our exposure to these
- subprocess bugs by auditing each use of subprocess
- in webkitpy. I did not find any unsafe calls
- in my audit, but I did remove numerous unneeded
- import subprocess lines.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/system/deprecated_logging_unittest.py:
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2010-04-28 Darin Adler <darin@apple.com>
-
- Ignore a directory the Python tools creates.
-
- * Scripts/webkitpy/style: Modified property svn:ignore.
-
-2010-04-28 Darin Adler <darin@apple.com>
-
- * Scripts/extract-localizable-strings: Fix minor mistake in
- argument checking.
-
-2010-04-28 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QWebPage viewMode property
- https://bugs.webkit.org/show_bug.cgi?id=38119
-
- Replacing method qt_wrt_setViewMode by wrt_viewMode property.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setViewModeMediaFeature):
-
-2010-04-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Adjusted check-webkit-style so that files with file type NONE
- are automatically skipped without warning.
-
- https://bugs.webkit.org/show_bug.cgi?id=38197
-
- This change simplifies configuring which files to skip. It also
- addresses an issue whereby check-webkit-style was unintentionally
- checking .vcproj files for carriage returns.
-
- * Scripts/webkitpy/style/checker.py:
- - Moved the C++, Python, and text file extensions to new
- module-level configuration variables.
- - Removed .pyc from the _SKIPPED_FILES_WITHOUT_WARNING configuration
- variable.
- - Changed the numeric values of the FileType enum so that
- FileType.NONE evaluates to False.
- - For ProcessorDispatcher.should_skip_without_warning():
- - Changed the method to return True for FileType.NONE files.
- - Made ChangeLog files an exception to getting skipped.
- - Changed the StyleProcessor.process() method to raise an
- exception if given a file path that should not be processed.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the unit tests and added more test cases as necessary.
-
-2010-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Jeremy Orlow.
-
- webkitpy: ScriptError('Failed to run "[u\'taskkill.exe\', u\'/f\', u\'/im\', u\'httpd.exe\']" exit_code: 128',)
- https://bugs.webkit.org/show_bug.cgi?id=38248
-
- The previous code did not check the return code of taskkill.
- When I moved that callsite from using subprocess.call to
- Executive.run_command having a non-zero return code became an error.
-
- In this change I've centralized our killall handling in executive,
- and added tests for it to make sure it works.
-
- Currently kill_process and kill_all swallow exceptions in the cases
- where the process(es) to be killed do(es) not exist.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2010-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- wdiff_text throws ScriptError because wdiff returns non-zero when files differ
- https://bugs.webkit.org/show_bug.cgi?id=38246
-
- wdiff returns 0 when files are the same, 1 when they differ.
- run_command by default raises ScriptError if the return code is non-zero.
- Fixed this by adding a custom error handler which only raises if the
- return code is not 1.
-
- I broke up the huge wdiff_text() method into little pieces
- for easier unit testing. There is only one functional change here
- and that is the addition of the custom error handler.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2010-04-28 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed build fix.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage): format '%u' expects type 'unsigned int', but argument 2 has type 'size_t'.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest): too few arguments for format.
-
-2010-04-27 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler and Eric Seidel.
-
- Add layoutTestController.setPrinting()
- https://bugs.webkit.org/show_bug.cgi?id=37203
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setPrintingCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::isPrinting):
- (LayoutTestController::setIsPrinting):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
-
-2010-04-27 Michael Nordman <michaeln@google.com>
-
- Reviewed by Dmitry Titov.
-
- [Chromium] Add two things to the webkit API to support appcaches in workers.
- 1) WebURLRequest TargetTypes for worker and shared worker main resources.
- 2) Factory method on class WebCommonWorkerClient to
- createApplicationCacheHost() for the associated worker.
-
- https://bugs.webkit.org/show_bug.cgi?id=38147
-
- * DumpRenderTree/chromium/TestWebWorker.h add a stub impl of the factory method
- (TestWebWorker::createApplicationCacheHost):
-
-2010-04-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- run-bindings-tests doesn't work in an SVN checkout
- https://bugs.webkit.org/show_bug.cgi?id=38225
-
- Previously detect_scm_system needed an absolute path for SVN. Now we
- accept a relative path.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-04-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Stephanie Lewis.
-
- Always build WebKit2 when building on SnowLeopard and later.
-
- * Scripts/build-webkit:
-
-2010-04-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=38238
- Allow both WebKit and WebKit2 to link to the same WebCore.framework
-
- * Scripts/build-webkit: Remove the UMBRELLA_LDFLAGS override when building
- WebCore for WebKit2, it is no longer necessary.
-
-2010-04-27 James Robinson <jamesr@chromium.org>
-
- Reviewed by David Levin.
-
- Fix a typo in chromium.py that causes NRWT to fail in --verbose
- mode in a Chromium checkout.
- https://bugs.webkit.org/show_bug.cgi?id=38234
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-27 Darin Fisher <darin@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [Chromium] Remove deprecated form of didChangeLocationWithinPage
- https://bugs.webkit.org/show_bug.cgi?id=38178
-
- Switch over to implementing didNavigateWithinPage.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (TestWebViewDelegate::didNavigateWithinPage):
- (WebViewHost::didChangeLocationWithinPage):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-04-27 Evan Martin <evan@chromium.org>
-
- Unreviewed.
-
- Adding myself to commmitters list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- run-bindings-tests should use --reset-results instead of --overwrite
- https://bugs.webkit.org/show_bug.cgi?id=38200
-
- As requested by Ojan.
-
- * Scripts/run-bindings-tests:
-
-2010-04-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION(r58261): webkit-patch edit-changelogs is broken
- https://bugs.webkit.org/show_bug.cgi?id=38204
-
- In 58261, we added code to abstract step that interrogates the squash
- and git_commit options, but it doesn't declare that it uses those
- options. That means any command that doesn't happen to declare those
- options might be broken if it uses the cached_lookup mechanism.
-
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/applypatch.py:
- * Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py:
- * Scripts/webkitpy/tool/steps/build.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff.py:
- * Scripts/webkitpy/tool/steps/commit.py:
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
- * Scripts/webkitpy/tool/steps/createbug.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
- * Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py:
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/update.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-04-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- prepare-ChangeLog --bug fails on some CYGWIN installs due to missing certs
- https://bugs.webkit.org/show_bug.cgi?id=38212
-
- * Scripts/prepare-ChangeLog:
- - Pass --insecure to curl to work around CYGWIN missing certs.
-
-2010-04-27 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Beth Dakin.
-
- It is no longer necessary to set ENABLE_EXPERIMENTAL_SINGLE_VIEW_MODE
- or WTF_USE_WEB_THREAD. Remove them.
-
- * Scripts/build-webkit:
-
-2010-04-27 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by David Levin.
-
- Changed Chris Jerdonek from committer to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-27 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QGraphicsWebView: Arrow keys scroll the graphics-view instead of the web-page
- https://bugs.webkit.org/show_bug.cgi?id=35834
-
- The scene should always have the size of the web view otherwhise it is
- possible to scroll the graphics view.
-
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::resizeEvent):
-
-2010-04-27 Diego Gonzalez <diegohcg@webkit.org>
-
- Unreviewed.
-
- Adding myself to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- [chromium] new-run-webkit-tests hangs on Chromium Bots (OS X and Linux)
- https://bugs.webkit.org/show_bug.cgi?id=37987
-
- After further research, I believe the hang is caused by:
- http://bugs.python.org/issue2320
- Basically Popen() is not reentrant.
- The workaround is to pass close_fds=True to Popen() on Mac/Linux.
-
- I fixed our main Popen wrapper "Executive.run_command" to use close_fds=True
- when appropriate.
-
- I audited all places we call Popen() and either moved them to run_command
- or left a FIXME that they are not thread safe. A few places I added the
- close_fds workaround there and left an explanitory note.
-
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Added note that this Popen use is not threadsafe.
- * Scripts/webkitpy/common/system/executive.py:
- - Fixed our Executive.run_* to workaround python bug 2320.
- * Scripts/webkitpy/common/system/user.py:
- _ Added note that this Popen use is not threadsafe.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: ditto.
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py: ditto.
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Change wdiff back to using run_command now that we believe it
- to be threadsafe.
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - Fix to use Executive in places.
- - Pass self._executive down to the Driver for easier unit testing.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Re-factor to use a _kill_all method.
- - Made the _kill_all method use run_command to be threadsafe.
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- - Add FIXME about using Executive.
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- - Use Executive to be threadsafe.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Pass self._executive down to the Driver.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - Add note about Popen not being threadsafe.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - Move one caller to run_command add notes about moving others.
-
-2010-04-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- REGRESSION(r58261): webkit-patch upload does not work in an SVN checkout.
- https://bugs.webkit.org/show_bug.cgi?id=38186
-
- Unfortunately, we don't have a good way of testing this change because
- our test coverage of the scm.py API is poor...
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2010-04-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove unused code from text_diff.py
- https://bugs.webkit.org/show_bug.cgi?id=38170
-
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- - Remove is_render_tree_dump which appears unused.
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch pretty-diff is broken
- https://bugs.webkit.org/show_bug.cgi?id=38172
-
- We need to register for these options because they're used when we look
- up the diff.
-
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add ObjC and GObject to run-bindings-test
- https://bugs.webkit.org/show_bug.cgi?id=38168
-
- * Scripts/run-bindings-tests:
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add testing infrastructure for JSC bindings generator
- https://bugs.webkit.org/show_bug.cgi?id=38167
-
- Add support for testing more than one bindings. Also, converted the
- script to PEP8 style.
-
- * Scripts/run-bindings-tests:
-
-2010-04-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Refactor results.html generation out into a new method and test it
- https://bugs.webkit.org/show_bug.cgi?id=38164
-
- Hopefully this results in no change in functionality.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed, rolling out r58265.
- http://trac.webkit.org/changeset/58265
- https://bugs.webkit.org/show_bug.cgi?id=38021
-
- This change prevents me from uploading patches. It also breaks sheriff-bot.
-
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-04-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- [chromium] new-run-webkit-tests hangs on Chromium Bots (OS X and Linux)
- https://bugs.webkit.org/show_bug.cgi?id=37987
-
- Rolled out:
- http://trac.webkit.org/changeset/58062
- http://trac.webkit.org/changeset/58060
- http://trac.webkit.org/changeset/58059
- http://trac.webkit.org/changeset/58055
- http://trac.webkit.org/changeset/58054
- and parts of:
- http://trac.webkit.org/changeset/58050
-
- I also wrote some new comments and a tiny amount of new
- code to help make ChromiumDriver.run_test easier to read.
-
- In order to unit-test my new code, I had to change ChromiumDriver
- to not automatically start itself when created. That ended up
- being a lot of plumbing, but is hopefully easier to understand now.
-
- There are no tests for the (restored) wdiff code. wdiff does not
- exist on all systems, so for now we will assume it worked since
- it is just old code being reverted.
-
- * Scripts/webkitpy/layout_tests/driver_test.py:
- - Use create_driver instead of start_driver, and be sure to call .stop()
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Use create_driver instead of start_driver
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Added a comment to explain that diffs are binary files.
- - Various patch reverts relating to wdiff
- - Add Driver._command_wrapper to share code between WebKitDriver and ChromiumDriver.
- - Made _command_wrapper use shlex.split to get rid of the FIXME.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py: Added.
- - test the new _command_wrapper
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - Use _command_wrapper to get rid of a bunch of ugly code.
- - Make __init__ stop auto-starting.
- - Rename create_driver to start_driver.
- - Added _write_command_and_read_line to make it possible to
- put a FIXME next to read_line() w/o having to put it in two places.
- - Moved test_shell command building into _test_shell_command and tested it.
- - Fix comments to say test_shell since ChromiumDriver is test_shell only.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: Added.
- - Test the new test_shell_command method.
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- - Rename create_driver to start_driver.
- * Scripts/webkitpy/layout_tests/port/test.py:
- - Rename create_driver to start_driver.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Rename create_driver to start_driver.
- - Treat output as binary arrays.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - Treat diff files as binary.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- - Treat diff files as binary.
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move bindings test directory into the scripts directory
- https://bugs.webkit.org/show_bug.cgi?id=38161
-
- Change script to point to the new location of these data files.
-
- * Scripts/run-bindings-tests:
-
-2010-04-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Mark run-bindings-tests executable so we can execute it.
-
- * Scripts/run-bindings-tests:
-
-2010-04-26 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] build-webkit --chromium should build release by default
- https://bugs.webkit.org/show_bug.cgi?id=38028
-
- * Scripts/build-dumprendertree: Also should build release by default
- * Scripts/build-webkit: Make sure to pass command line args through
- * Scripts/webkitdirs.pm: Build the right configuration
-
-2010-04-26 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- complete rietveld bugzilla integration
- https://bugs.webkit.org/show_bug.cgi?id=38021
-
- Makes --fancy-review the default. All this means is that the patch will
- be uploaded to rietveld in addition to bugs.webkit.org.
-
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-04-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- For check-webkit-style, renamed the style/processors/ directory
- to style/checkers/.
-
- https://bugs.webkit.org/show_bug.cgi?id=38122
-
- * Scripts/webkitpy/style/checker.py:
- - Updated import statements.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated import statements.
-
- * Scripts/webkitpy/style/checkers: Copied from WebKitTools/Scripts/webkitpy/style/processors.
- * Scripts/webkitpy/style/processors: Removed.
- * Scripts/webkitpy/style/processors/__init__.py: Removed.
- * Scripts/webkitpy/style/processors/common.py: Removed.
- * Scripts/webkitpy/style/processors/common_unittest.py: Removed.
- * Scripts/webkitpy/style/processors/cpp.py: Removed.
- * Scripts/webkitpy/style/processors/cpp_unittest.py: Removed.
- * Scripts/webkitpy/style/processors/python.py: Removed.
- * Scripts/webkitpy/style/processors/python_unittest.py: Removed.
- * Scripts/webkitpy/style/processors/python_unittest_input.py: Removed.
- * Scripts/webkitpy/style/processors/text.py: Removed.
- * Scripts/webkitpy/style/processors/text_unittest.py: Removed.
-
-2010-04-06 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- Include git commits in the diff for webkit-patch upload/land.
- https://bugs.webkit.org/show_bug.cgi?id=36394
-
- Adds --squash, --no-squash and --git-commit.
-
- --git-commit will use a specific local commit for land/upload.
- If a commit-range is specified, then that range is treated as
- a single squashed commit.
-
- --squash will squash all local changes including working copy changes
- into a single patch.
-
- --no-squash is the legacy behavior (upload only considers the working copy,
- land commits the working copy and then each local commit separately to SVN)
-
- If neither is specified, then an informative error is raised if there is
- more than one local commit or when there are local commit(s) and working
- copy changes.
-
- If the webkit-patch.squash git config parameter is set, then
- that will be respected instead of raising an error.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/style/optparser.py:
- --git-since is removed and --git-commit no longer implies commit_id..
- Instead, it treats that individual commit, but also supports commit ranges
- (e.g. commit_id..) as arguments.
- * Scripts/webkitpy/style/optparser_unittest.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/commit.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-04-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Deleted the StyleChecker-related classes that are no longer
- being used.
-
- https://bugs.webkit.org/show_bug.cgi?id=38118
-
- * Scripts/webkitpy/style/checker.py:
- - Deleted the DeprecatedStyleChecker class.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Deleted the StyleCheckerTest, StyleCheckerCheckFileBase,
- StyleCheckerCheckFileTest, and StyleCheckerCheckPathsTest classes.
-
-2010-04-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Changed the StyleChecker class to use the new TextFileReader class.
-
- https://bugs.webkit.org/show_bug.cgi?id=37066
-
- This revision separates the code responsible for reading and iterating
- over text files from the rest of check-webkit-style.
-
- * Scripts/check-webkit-style:
- - Changed the script to use the new StyleProcessor and
- TextFileReader classes instead of the StyleChecker class.
-
- * Scripts/webkitpy/style/checker.py:
- - Added a FIXME to rename many of uses of the word "processor" to
- "checker". We did this to clarify the difference between
- ProcessorBase instances passed to the TextFileReader and
- classes that process and check lines for style.
- - Added a FIXME to remove FileType.NONE as a possible return value
- of ProcessorDispatcher._file_type(). This will better consolidate
- the logic of which files should be skipped.
- - Added a FIXME to delete the StyleChecker class.
- - Added the StyleProcessor class which implements ProcessorBase.
- This class is responsible for processing lines to check style
- (but not for reading files). For each file, this class creates
- creates both a carriage-return checker and a format-specific
- style checker (e.g. one of C++, Python, etc).
- - Updated the PatchChecker class to use a TextFileReader instance
- instead of a StyleChecker.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added the StyleProcessor_EndToEndTest class to do "end-to-end"
- tests of the StyleProcessor class.
- - Added the StyleProcessor_CodeCoverageTest to test the
- StyleProcessor class with more complete code coverage.
- Unlike the StyleProcessor_EndToEndTest class, this class makes
- heavy use of mock parameters.
- - Added FIXME's to delete the unit test classes that are no
- longer needed.
- - Updated the PatchCheckerTest class to use a MockTextFileReader
- instead of a MockStyleChecker.
-
- * Scripts/webkitpy/style/filereader.py:
- - Updated the TextFileReader class to use the preferred logic
- of checking file existence at the beginning of the process_file()
- method instead of in the except block, per
- https://bugs.webkit.org/show_bug.cgi?id=37122
-
- * Scripts/webkitpy/style/filereader_unittest.py:
- - In the TextFileReaderTest class:
- - Moved the test_process_file__should_not_process() method.
- - Added a test_process_file__file_stdin() method to test
- the file path "-".
-
-2010-04-20 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add more support for textInputController
-
- Add support for selectedRange(), setMarkedText(), insertText(),
- and firstRectForCharacterRange().
-
- Unskip tests:
-
- fast/forms/input-maxlength-ime-preedit.html
- fast/forms/input-maxlength-ime-completed.html
- fast/text/international/thai-cursor-position.html
- fast/events/ime-composition-events-001.html
- editing/selection/5825350-1.html
- editing/selection/5825350-2.html
- editing/selection/mixed-editability-10.html
-
- https://bugs.webkit.org/show_bug.cgi?id=35702
-
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- (TextInputController::setMarkedText):
- (TextInputController::insertText):
- (TextInputController::selectedRange):
- (TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/qt/TextInputControllerQt.h:
-
-2010-04-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style complains about non-utf8 data in layout test result
- https://bugs.webkit.org/show_bug.cgi?id=38027
-
- The problem was we were assuming patch files/diff output as utf-8.
- Turns out they're not. We have to treat them as binary data because
- a single patch may have multiple text files in it with conflicting encodings!
-
- * Scripts/webkitpy/common/checkout/api.py:
- - contents_at_revision returns a byte array, so decode it to unicode
- before passing it to parse_latest_entry_from_file
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - Update our mock mock_contents_at_revision to match the encoding
- semantics of the real one.
- * Scripts/webkitpy/common/checkout/scm.py:
- - Be careful not to decode output which may contain file contents
- (like diff, cat or show) as the encoding for that content is unknown.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Update our tests to use both latin1 and utf-8 encoded data.
- * Scripts/webkitpy/common/net/bugzilla.py:
- - _fill_attachment_form should not assume unicode data. Callers
- may wish to attach other types of files to bugs.
- * Scripts/webkitpy/common/prettypatch.py:
- - Diffs are byte arrays, deal with them as such.
- * Scripts/webkitpy/common/prettypatch_unittest.py:
- - Test to make sure we handle diffs with multiple conflicting encodings.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Make sure that our unicode support does not break our
- byte array input support for run_command.
-
-2010-04-23 Sam Weinig <sam@webkit.org>
-
- Reviewed by David Levin.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=38060
- Split up Threading.h
-
- Add necessary forwarding headers.
-
- * DumpRenderTree/ForwardingHeaders/wtf/Atomics.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeShared.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadingPrimitives.h: Added.
-
-2010-04-23 Xiaomei Ji <xji@chromium.org>
-
- No need to review.
-
- Add xji as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-23 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add platform stub for new LayoutTestController method.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::markerTextForListItem):
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests: add a "--retry-failures" flag and a
- "--no-retry-failures" flag (the former is the default). Also, rename
- "--print-unexpected-results" and "--retry-unexpected-results" to
- "--print-last-failures" and "--retry-last-failures" because the
- retry flag was confusing. The new flag names aren't great, but
- hopefully they're less confusing.
-
- https://bugs.webkit.org/show_bug.cgi?id=37838
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=38022
- Move isMainThread predicate function to MainThread.h
-
- Added forwarding header for MainThread.h
-
- * DumpRenderTree/ForwardingHeaders/wtf/MainThread.h: Added.
-
-2010-04-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Disable Netscape plugin support for minimal configuration
- https://bugs.webkit.org/show_bug.cgi?id=38026
-
- Pass the minimal configuration option to Qt build system
- as part of the CONFIG variable.
-
- * Scripts/build-webkit:
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: fix NameError: global name 'f' is not defined.
-
-2010-04-22 James Robinson <jamesr@chromium.org>
-
- Reviewed by Adam Barth.
-
- Revert 58077 and follow-ups. It's broken.
- https://bugs.webkit.org/show_bug.cgi?id=37664
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/new-run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-04-22 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Adam Barth.
-
- Integrate v8 testing utility with webkit tests
- https://bugs.webkit.org/show_bug.cgi?id=37731
-
- * Scripts/run-bindings-tests: Added.
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- new-run-webkit-tests --verbose shows ever-increasing #EOF lines
- https://bugs.webkit.org/show_bug.cgi?id=37794
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Remove the assert() since our ServerProcess code does not always
- seem to be reading the full stderr output (or we're not waiting for it to).
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add code to help debug new-run-webkit-test hangs on the Chromium bots
- https://bugs.webkit.org/show_bug.cgi?id=38011
-
- I can see no reasonable way to test this change.
- Stubbing out sys._current_frames() and traceback.extract_stack
- seems folly. Dumping real data would have line number
- (and possibly other call stack) variance between runs.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Add _dump_thread_states and _dump_thread_states_if_necessary
- to have our main thread dump the states of all threads every
- 60 seconds when running in verbose mode.
- - Better document what is going on in our main loop.
-
-2010-04-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=38002
- Add rudimentary statistics gathering for WebKit2
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate newWindow:]):
- (-[BrowserAppDelegate getCurrentPageNamespace]):
- (-[BrowserAppDelegate _setProcessModel:]):
- (-[BrowserAppDelegate showStatisticsWindow:]):
- (-[BrowserAppDelegate applicationWillTerminate:]):
- * MiniBrowser/mac/BrowserStatisticsWindow.xib: Added.
- * MiniBrowser/mac/BrowserStatisticsWindowController.h: Added.
- * MiniBrowser/mac/BrowserStatisticsWindowController.m: Added.
- (-[BrowserStatisticsWindowController initWithThreadedWKContextRef:processWKContextRef:]):
- (-[BrowserStatisticsWindowController dealloc]):
- (-[BrowserStatisticsWindowController windowDidLoad]):
- (-[BrowserStatisticsWindowController refreshStatistics:]):
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/English.lproj/MainMenu.xib:
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
-
-2010-04-22 Dave Moore <davemoore@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add test support for icon changes.
-
- https://bugs.webkit.org/show_bug.cgi?id=33812
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpIconChangesCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpIconChanges):
- (LayoutTestController::setDumpIconChanges):
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didChangeIcons):
- * DumpRenderTree/win/FrameLoadDelegate.h:
- * WinLauncher/WinLauncher.h:
- (WinLauncherWebHost::didChangeIcons):
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Script fix. Will ask dpranke to look tomorrow.
-
- new-run-webkit-tests --verbose shows ever-increasing #EOF lines
- https://bugs.webkit.org/show_bug.cgi?id=37794
-
- The bots are seeing cases where .error is sometimes empty.
- Lets make the code not crash in that case for now.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: fix NameError: global name 'f' is not defined.
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- * Scripts/new-run-webkit-websocketserver: PyWebSocket no longer takes keyword argument 'register_cygwin'.
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Restore the Leopard bots to using
- old-run-webkit-tests for now.
-
- * Scripts/run-webkit-tests:
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- * Scripts/webkitpy/layout_tests/port/http_server.py: fix NameError: global name 'env' is not defined.
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed fix.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: fix NameError: global name 'env' is not defined.
-
-2010-04-22 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Adam Barth.
-
- Chromium: Add --chromium option to new-run-webkit-websocketserver
- https://bugs.webkit.org/show_bug.cgi?id=37664
-
- Move cygwin setup logic in chromium_win.py.
-
- * Scripts/new-run-webkit-httpd: remove register_cygwin parameter to pass http_server.
- * Scripts/new-run-webkit-websocketserver: add --chromium flag
- * Scripts/webkitpy/layout_tests/port/chromium_win.py: setup for cygwin
- * Scripts/webkitpy/layout_tests/port/http_server.py: remove cygwin setup logic
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: remove cygwin setup logic
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests --verbose shows ever-increasing #EOF lines
- https://bugs.webkit.org/show_bug.cgi?id=37794
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Fix the log message to explain that this is stderr output, not test output.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Be sure to reset the server_process.error after reading (seems like the wrong
- place to do this, but at least this fixes the bug and dpranke and I can talk
- about better designs later).
- - Also remove the #EOF from the stderr output before returning it.
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fixing new-run-webkit-tests on the bots.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Fixing _compat_shim_option to take variable keyword args.
- - Turns out that nargs + callback is ignored unless type is specified.
- So I added the type so that the option was properly consumed.
- This was why new-run-webkit-tests couldn't find any tests, it
- was looking for them under "20" because that was the argument
- which should have been consumed by --exit-after-n-failures.
-
-2010-04-22 Tony Chang <tony@chromium.org>
-
- Not reviewed, build fix for chromium Windows.
-
- [chromium] fix ImageDiff compile on windows
- https://bugs.webkit.org/show_bug.cgi?id=37979
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
-
-2010-04-22 Adam Barth <abarth@webkit.org>
-
- Unreviewed, rolling out r58069.
- http://trac.webkit.org/changeset/58069
- https://bugs.webkit.org/show_bug.cgi?id=27751
-
- Broke compile on Windows.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2010-04-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Just adding logging.
-
- Adding logging to help debug why the Leopard Bot
- can't find any tests to run.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Make it a fatal error to have no tests to run.
-
-2010-04-22 Abhishek Arya <inferno@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add support for controlling clipboard access from javascript.
- Clipboard access from javascript is enabled in test framework.
- https://bugs.webkit.org/show_bug.cgi?id=27751
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setJavaScriptCanAccessClipboardCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
-
-2010-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch can't fetch attachments on security bugs
- https://bugs.webkit.org/show_bug.cgi?id=37975
-
- Instead of calling CURL, we just need to use our Mechanize object,
- which understand bugs.webkit.org authentication.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Temporary commit, will roll-out before morning.
-
- Turning on new-run-webkit-tests for the Leopard build bot
- for testing of the harness.
- Users should not noctice (except for the results.html difference).
-
- * Scripts/run-webkit-tests:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fix typo in my previous fix attempt.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- More on-the-bot debugging, sigh. I wish I had a local build.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fix typo in my previous fix attempt.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Add self. to class variable access.
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Another attempt to fix NRWT for chromium.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- - wdiff_text was returning a byte array instead of a
- unicode string. The simple fix was to just decode
- the result. However, seeing so much duplicated code
- with Executive made me cry, so I re-wrote the function
- to be more like pretty_patch_text and use run_command
- (which already knows how to handle unicode).
-
-2010-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Windows tests buildbots are too slow to be core builders
- https://bugs.webkit.org/show_bug.cgi?id=37970
-
- It's 10:45. The Windows test bots are still hours behind. They're too
- slow to be core builders. When they get fast, we can add them back.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Attempt one more time to fix NRWT for chromium.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- I'm debugging in the blind because I don't have a chromium
- build on this laptop.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - Apply the previous fix to a second caller.
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Attempt one more time to fix NRWT for chromium.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - Fix handling of test_shell output so that we always
- decode it as utf-8.
- Unlike DumpRenderTree test_shell does not ever return
- pixel data. It spits out the pixel dumps in a separate
- file, thus all output over stdout is utf-8 text.
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Attempt one more time to fix NRWT for chromium.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- - Pass encoding to _save_baseline_data and write_output_files
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - Make _save_baseline_data and write_output_files take an encoding.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- - Pass encoding to _save_baseline_data and write_output_files
-
-2010-04-21 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtLauncher: make FPS measurement accurate
- https://bugs.webkit.org/show_bug.cgi?id=37934
-
- Instead of counting paints, which are not interchangeable with frames that
- the user sees, we now set an arbitrary timer for FPS measurements. The idea is
- that if the main thread is delayed for any reason, that timer would be delayed
- as well.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/fpstimer.cpp: Added.
- (FpsTimer::FpsTimer):
- (FpsTimer::numFrames):
- (FpsTimer::start):
- (FpsTimer::stop):
- (FpsTimer::timerEvent):
- * QtLauncher/fpstimer.h: Added.
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
- (WebViewGraphicsBased::updateFrameRate):
- (WebViewGraphicsBased::paintEvent):
- * QtLauncher/webview.h:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just adding missing ":" in python file.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- new-run-webkit-tests --chromium was borked.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- Third time is the charm. I've fixed all the
- new-run-webkit-tests regressions from previous attempts.
-
- I fixed the queue to not ignore Tor as a reviwer in r57531,
- but instead it throws an exception every time his name is in a patch.
-
- This fixes our Executive.run_command code to work around a Popen
- bug http://bugs.python.org/issue5290 whereby python versions before 2.6
- do not correctly handle unicode objects as input or output to
- Popen.communicate.
-
- Following the advice of:
- http://farmdev.com/talks/unicode/
- I have changed all of webkitpy to use unicode() objects as strings
- instead of str objects (which in Python 3 are renamed "bytes").
-
- String literals were left as "foo" instead of converting to u"foo"
- as u"foo" is only required if the string has a non-ascii code point.
- Python is smart about comparing str() and unicode() values and will
- log an error to the console if the comparison is ever invalid.
-
- Executive.run* now correctly accept and return unicode() objects.
- I attempted to fix all the places that we call .write() to make sure we
- encode any unicode() objects into utf-8.
-
- I removed several uses of StringIO. StringIO should generally always be
- passed a unicode() value.
-
- Likewise I replaced most calls to open() with codecs.open().
- codecs.open() matches Python 3 open semantics in requiring an encoding
- parameter. Files opened with codecs.open() with a unicode-compatible
- encoding will vend unicode() objects from their read() calls, like how
- StringIO created with a unicode() object will do.
-
- I also deployed "with" statements wider (now that the project has
- settled on Python 2.5) to close a bunch of file descriptor leaks.
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - Read/write utf-8 files instead of ascii.
- - Update the tests to use test for proper unicode() handling.
- * Scripts/webkitpy/common/checkout/changelog.py:
- - Document that parse_latest_entry_from_file expects
- file-like objects which return unicode strings.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- - Use unicode() strings instead of str() byte arrays.
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- - Remove unneeded import.
- * Scripts/webkitpy/common/checkout/scm.py:
- - Remove use of str().
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Read/write utf-8 files and use unicode() strings in testing.
- * Scripts/webkitpy/common/config/committers.py:
- - Use \u instead of \x to make slightly clearer what we're doing.
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Add a new _string_contents() method and explain why
- we have to call unicode() on the result of soup.string
- and why it's safe to do so w/o needing to pass a codec name.
- - Remove the (unused) support for passing a file object to add_patch_to_bug().
- * Scripts/webkitpy/common/net/buildbot.py:
- - Use unicode() instead of str() when needing to coax a
- NavigableString object into a unicode() object.
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- - Add a test which contains a unicode builder name.
- * Scripts/webkitpy/common/net/statusserver.py:
- - Remove use of str()
- * Scripts/webkitpy/common/prettypatch.py:
- - Write out the patch file as utf-8.
- * Scripts/webkitpy/common/system/autoinstall.py:
- - Write out files with a explicit encodings.
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- - Write out log files as utf-8.
- * Scripts/webkitpy/common/system/executive.py:
- - Make run* properly take and return unicode() objects.
- - Cleaned up input handling in run_command a little by adding
- a _compute_input() method which can return early instead of having
- such a long/cluttered if-block.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Added a unit test to make sure we don't break Tor again!
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Write out the test list as utf-8.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- - Write out json files as utf-8.
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Add Executive.py FIXME.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py: ditto.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py: ditto.
- * Scripts/webkitpy/layout_tests/port/gtk.py: ditto.
- * Scripts/webkitpy/layout_tests/port/mac.py: ditto.
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- - Make the skipped file parsing test unicode.
- * Scripts/webkitpy/layout_tests/port/qt.py: Add Executive.py FIXME.
- * Scripts/webkitpy/layout_tests/port/server_process.py: ditto.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - Make explicit the encodings of log files and pid files.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - Make encodings explicit and deploy "with".
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py: ditto.
- * Scripts/webkitpy/style/filereader_unittest.py: ditto.
- * Scripts/webkitpy/thirdparty/__init__.py: ditto.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- - Removed extra import.
- * Scripts/webkitpy/tool/commands/queues.py:
- - No need to map args to strings now that run_command does.
- - Update test results to match args changes.
- - Document our global argument hacks.
- * Scripts/webkitpy/tool/commands/upload.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/mocktool.py:
- - Rename add_patch_to_bug argument to match bugzilla.py
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- - Executive.run_* now require lists instead of strings.
- The lack of this change was what broke webkit-patch
- for svn users the first time this was landed.
- * Scripts/webkitpy/tool/steps/postdiff.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py: ditto
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py: ditto
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Fixed spurious logging seen when running test-webkitpy
-
-2010-04-21 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- aria-liveregion-notifications.html fails on leopard release bot
- https://bugs.webkit.org/show_bug.cgi?id=37112
-
- Change the way that notifications are listened for by forcing clients
- to call a remove listener as well to match the add listener. DRT will
- assert if those are not done in the correct order.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (removeNotificationListenerCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::removeNotificationListener):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (-[AccessibilityNotificationHandler initWithPlatformElement:]):
- (-[AccessibilityNotificationHandler dealloc]):
- (-[AccessibilityNotificationHandler _notificationReceived:]):
- (-[AccessibilityNotificationHandler setCallback:]):
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (AccessibilityUIElement::addNotificationListener):
- (AccessibilityUIElement::removeNotificationListener):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::removeNotificationListener):
-
-2010-04-21 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add debug menu items to show/hide the Web View.
- https://bugs.webkit.org/show_bug.cgi?id=37958
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController showHideWebView:]):
- (-[BrowserWindowController removeReinsertWebView:]):
- (-[BrowserWindowController validateMenuItem:]):
- * MiniBrowser/mac/English.lproj/MainMenu.xib:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Rolling out unicode() changes as they broke NRWT for chromium.
- Rolling out:
- http://trac.webkit.org/changeset/58014
- http://trac.webkit.org/changeset/58016
- http://trac.webkit.org/changeset/58020
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbo
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/common/prettypatch.py:
- * Scripts/webkitpy/common/system/autoinstall.py:
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- * Scripts/webkitpy/style/filereader_unittest.py:
- * Scripts/webkitpy/thirdparty/__init__.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py:
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing NRWT for real this time.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - Add a hack to fix new-run-webkit-tests
- my understanding of codecs.open(encoding=None)
- must have been wrong.
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing exception seen on builders.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - Pass and encoding to _write_into_file_at_path
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- I fixed the queue to not ignore Tor as a reviwer in r57531,
- but instead it throws an exception every time his name is in a patch.
-
- This fixes our Executive.run_command code to work around a Popen
- bug http://bugs.python.org/issue5290 whereby python versions before 2.6
- do not correctly handle unicode objects as input or output to
- Popen.communicate.
-
- Following the advice of:
- http://farmdev.com/talks/unicode/
- I have changed all of webkitpy to use unicode() objects as strings
- instead of str objects (which in Python 3 are renamed "bytes").
-
- String literals were left as "foo" instead of converting to u"foo"
- as u"foo" is only required if the string has a non-ascii code point.
- Python is smart about comparing str() and unicode() values and will
- log an error to the console if the comparison is ever invalid.
-
- Executive.run* now correctly accept and return unicode() objects.
- I attempted to fix all the places that we call .write() to make sure we
- encode any unicode() objects into utf-8.
-
- I removed several uses of StringIO. StringIO should generally always be
- passed a unicode() value.
-
- Likewise I replaced most calls to open() with codecs.open().
- codecs.open() matches Python 3 open semantics in requiring an encoding
- parameter. Files opened with codecs.open() with a unicode-compatible
- encoding will vend unicode() objects from their read() calls, like how
- StringIO created with a unicode() object will do.
-
- I also deployed "with" statements wider (now that the project has
- settled on Python 2.5) to close a bunch of file descriptor leaks.
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - Read/write utf-8 files instead of ascii.
- - Update the tests to use test for proper unicode() handling.
- * Scripts/webkitpy/common/checkout/changelog.py:
- - Document that parse_latest_entry_from_file expects
- file-like objects which return unicode strings.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- - Use unicode() strings instead of str() byte arrays.
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- - Remove unneeded import.
- * Scripts/webkitpy/common/checkout/scm.py:
- - Remove use of str().
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Read/write utf-8 files and use unicode() strings in testing.
- * Scripts/webkitpy/common/config/committers.py:
- - Use \u instead of \x to make slightly clearer what we're doing.
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Add a new _string_contents() method and explain why
- we have to call unicode() on the result of soup.string
- and why it's safe to do so w/o needing to pass a codec name.
- - Remove the (unused) support for passing a file object to add_patch_to_bug().
- * Scripts/webkitpy/common/net/buildbot.py:
- - Use unicode() instead of str() when needing to coax a
- NavigableString object into a unicode() object.
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- - Add a test which contains a unicode builder name.
- * Scripts/webkitpy/common/net/statusserver.py:
- - Remove use of str()
- * Scripts/webkitpy/common/prettypatch.py:
- - Write out the patch file as utf-8.
- * Scripts/webkitpy/common/system/autoinstall.py:
- - Write out files with a explicit encodings.
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- - Write out log files as utf-8.
- * Scripts/webkitpy/common/system/executive.py:
- - Make run* properly take and return unicode() objects.
- - Cleaned up input handling in run_command a little by adding
- a _compute_input() method which can return early instead of having
- such a long/cluttered if-block.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Added a unit test to make sure we don't break Tor again!
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Write out the test list as utf-8.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- - Write out json files as utf-8.
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Add Executive.py FIXME.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py: ditto.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py: ditto.
- * Scripts/webkitpy/layout_tests/port/gtk.py: ditto.
- * Scripts/webkitpy/layout_tests/port/mac.py: ditto.
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- - Make the skipped file parsing test unicode.
- * Scripts/webkitpy/layout_tests/port/qt.py: Add Executive.py FIXME.
- * Scripts/webkitpy/layout_tests/port/server_process.py: ditto.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Deploy "with" to close file descriptor leaks.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - Make explicit the encodings of log files and pid files.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - Make encodings explicit and deploy "with".
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: ditto.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py: ditto.
- * Scripts/webkitpy/style/filereader_unittest.py: ditto.
- * Scripts/webkitpy/thirdparty/__init__.py: ditto.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- - Removed extra import.
- * Scripts/webkitpy/tool/commands/queues.py:
- - No need to map args to strings now that run_command does.
- - Update test results to match args changes.
- - Document our global argument hacks.
- * Scripts/webkitpy/tool/commands/upload.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/mocktool.py:
- - Rename add_patch_to_bug argument to match bugzilla.py
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- - Executive.run_* now require lists instead of strings.
- The lack of this change was what broke webkit-patch
- for svn users the first time this was landed.
- * Scripts/webkitpy/tool/steps/postdiff.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py: ditto
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py: ditto
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Fixed spurious logging seen when running test-webkitpy
-
-2010-04-21 Kinuko Yasuda <kinuko@chromium.org>
-
- Unreviewed.
-
- Add myself in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- new-run-webkit-tests: fix a bug in the Chromium port where we would
- try to talk to a crashed test_shell and raise exceptions that weren't
- being caught.
-
- https://bugs.webkit.org/show_bug.cgi?id=37941
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-21 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Unreviewed.
-
- [Qt] [Symbian] Build fix.
-
- Work around a Qt quirk. Some versions of Symbian port Qt
- QFontDatabase::removeAllApplicationFonts symbol is not available.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
-
-2010-04-21 Alexey Proskuryakov <ap@apple.com>
-
- Unreviewed.
-
- https://bugs.webkit.org/show_bug.cgi?id=37933
- <rdar://problem/7719540> XMLHttpRequest.withCredentials should be better enforced.
-
- Adding stub implementation of authenticateSession(). Depending on platform loader behavior,
- a real implementation may or may not be necessary for the one test that currently uses it
- to pass.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::authenticateSession):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-21 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Brady Eidson.
-
- https://bugs.webkit.org/show_bug.cgi?id=37933
- <rdar://problem/7719540> XMLHttpRequest.withCredentials should be better enforced.
-
- Adding authenticateSession() method that adds credentials to per-process credential storage
- (for platforms that even have such). No Windows implementation, because writing another
- loader for DRT is painful.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (authenticateSessionCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (-[SynchronousLoader dealloc]):
- (-[SynchronousLoader connectionShouldUseCredentialStorage:]):
- (-[SynchronousLoader connection:didReceiveAuthenticationChallenge:]):
- (-[SynchronousLoader connection:didFailWithError:]):
- (-[SynchronousLoader connectionDidFinishLoading:]):
- (+[SynchronousLoader makeRequest:withUsername:password:]):
- (LayoutTestController::authenticateSession):
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::authenticateSession):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::authenticateSession):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::authenticateSession):
- Stub implementations.
-
-2010-04-21 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Make DRT compilable in Chromium tree
- https://bugs.webkit.org/show_bug.cgi?id=37923
-
- We need to use different GYPs in a case of WebKit-only checkout
- and a case of whole Chromium checkout because the relative paths
- from webkit/ to WebKit/chromium/features.gypi are different in
- these cases and we can't use 'conditions' for 'includes' in GYPs.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2010-04-21 Jakub Wieczorek <jwieczorek@webkit.org>
-
- Reviewed by Darin Adler.
-
- List item markers are not always updated after changes in the DOM.
- https://bugs.webkit.org/show_bug.cgi?id=37060
-
- * DumpRenderTree/LayoutTestController.cpp:
- (markerTextForListItemCallback): A function that returns the marker text for a given list item.
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::markerTextForListItem): Implement it in the GTK port.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::markerTextForListItem): Add a stub.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::markerTextForListItem): Implement it in the Qt port.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::markerTextForListItem): Add a stub.
-
-2010-04-21 Adam Roben <aroben@apple.com>
-
- Exclude leaks in CGGradientCreateWithColorComponents from
- run-webkit-tests leaks output
-
- The leak in CG is covered by <rdar://problem/7888492>.
-
- Fixes <http://webkit.org/b/37927>.
-
- Reviewed by Eric Carlson.
-
- * Scripts/old-run-webkit-tests:
- (sub countAndPrintLeaks): Exclude leaks in
- CGGradientCreateWithColorComponents on certain OSs.
-
-2010-04-21 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [DRT/Chromium] Import MockSpellCheck from Chromium
- https://bugs.webkit.org/show_bug.cgi?id=37910
-
- Import webkit/tools/test_shell/mock_spellcheck.{cc,h} rev.37241 of Chromium.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- Add ICU explicitly because WTFString.h includes ICU headers.
- Add MockSpellCheck.{cpp,h}.
- * DumpRenderTree/chromium/MockSpellCheck.cpp: Added.
- * DumpRenderTree/chromium/MockSpellCheck.h: Added.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::spellCheck):
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/chromium/config.h: Define JS_EXPORTDATA, which is used
- by wtf/text/AtomicString.h included by wtf/text/WTFString.h.
-
-2010-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add webkit-patch pretty-diff
- https://bugs.webkit.org/show_bug.cgi?id=37892
-
- This is slightly lame because it asks you whether the diff is correct,
- but it's a starting point.
-
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/prettydiff.py: Added.
- * Scripts/webkitpy/tool/main.py:
-
-2010-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Remove mention of non-existant --no-build option
- https://bugs.webkit.org/show_bug.cgi?id=37893
-
- The option doesn't exist!
-
- * Scripts/webkitpy/tool/commands/stepsequence.py:
-
-2010-04-21 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Interrupting JavaScript is cumbersome when you use QtLaucher for testing or profiling.
- https://bugs.webkit.org/show_bug.cgi?id=37198
-
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleInterruptingJavaScriptEnabled):
- (LauncherWindow::newWindow):
- (LauncherWindow::cloneWindow):
- (LauncherWindow::createChrome):
- (main):
- * QtLauncher/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::shouldInterruptJavaScript):
- * QtLauncher/webpage.h:
- (WebPage::setInterruptingJavaScriptEnabled):
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r57963.
- http://trac.webkit.org/changeset/57963
- https://bugs.webkit.org/show_bug.cgi?id=37759
-
- Three tests started crashing on the Qt bot.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-21 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Make new-run-webkit-tests work for the Qt port
- https://bugs.webkit.org/show_bug.cgi?id=37588
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2010-04-21 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: try to detect alternate apache path
- https://bugs.webkit.org/show_bug.cgi?id=37587
-
- _check_port_build() also needs to return true in the
- base implementation to not fail the check_build step.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-21 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add LayoutTestController interface: computedStyleIncludingVisitedInfo
- https://bugs.webkit.org/show_bug.cgi?id=37759
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed, test fix only.
-
- new-run-webkit-tests: implement a --log trace message to be able to display detailed output of an individual test run
- https://bugs.webkit.org/show_bug.cgi?id=37726
-
- This change seems to have broken a test.
- Attempting to handle the case where we don't have any
- timing information. Dirk may have to correct this change.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests has much higher startup latency than run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=37643
-
- I got rid of the -expected.checksum reads during startup.
- This makes startup noticably better on my laptop.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Use image_hash() instead of .image_hash now that expected.checksum
- file reads are done lazily.
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- - Add debug logging for this sleep call.
- In my testing I never saw this sleep() hit.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - Sleep a shorter interval to make websocket server
- startup more responsive. On my machine startup was
- taking around 1 second.
- - Remove the unconditional .5s delay on startup.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Make image_hash file reads done lazily in a new image_hash() function.
- - Add a "Starting testing ..." meter update after DRT threads have
- been started, but before we get updates from the first one.
- - Rename variable "t" to a full english name to match WebKit style.
-
-2010-04-20 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=37748
-
- Make Sheriffbot more inspirational.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-20 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Import Chromium image_diff as ImageDiff
- https://bugs.webkit.org/show_bug.cgi?id=37790
-
- ImageDiff.cpp is based on tools/imagediff/image_diff.cc r41911 of Chromium.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/ImageDiff.cpp: Added.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2010-04-20 Dirk Pranke <dpranke@chromium.org>
-
- This patch to new-run-webkit-tests adds a --log 'trace' option
- that prints out detailed info about a given test as it executes
- (where the baselines are, what the expectation is, what we got,
- how long it took).
-
- https://bugs.webkit.org/show_bug.cgi?id=37726
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - use the newly exposed TestResult class and implement
- --log trace
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_thread.py:
- - rename TestStats to TestResult and make it more public, resulting
- in cleaner code
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- - add expectation_to_string() as a separate callable function
-
-2010-04-20 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r57907.
- http://trac.webkit.org/changeset/57907
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- Appears to have broken MacEWS and possibly webkit-patch upload
- for svn users. Needs further investigation.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/common/prettypatch.py:
- * Scripts/webkitpy/common/system/autoinstall.py:
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py:
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2010-04-20 Nate Chapin <japhet@chromium.org>
-
- Unreviewed.
-
- Update my irc handle in committers.py (natechapin -> japhet).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(57531): the commit-queue still hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37765
-
- I fixed the queue to not ignore Tor as a reviwer in r57531,
- but instead it throws an exception every time his name is in a patch.
-
- This fixes our Executive.run_command code to work around a Popen
- bug http://bugs.python.org/issue5290 whereby python versions before 2.6
- do not correctly handle unicode objects as input or output to
- Popen.communicate.
-
- Following the advice of:
- http://farmdev.com/talks/unicode/
- I'm attempting to take the python unicode plunge and use unicode()
- objects as strings instead of str() objects everywhere in webkitpy.
-
- We do not have to use u"" instead of "" because u"a" == "a" as expected
- in Python. Python will generate a warning to the console in cases where
- a unicode() == str() operation cannot be performed.
-
- I also cleaned up the input handling in run_command a little by adding
- a new _compute_input() method which can return early instead of having
- such a long/cluttered if-block.
-
- Executive.run* now correctly accept and return unicode() objects.
- I attempted to fix all the places that we call .write() to make sure we
- encode any unicode() objects into utf-8.
-
- All places which use StringIO need to be sure to pass StringIO a
- pre-encoded byte-array (str object) instead of unicode so that
- clients which read from the StringIO don't have encoding exceptions.
- To make this easier, I removed the patch_file_object support from
- add_patch_to_bug, and changed the 4 places which previously used
- StringIO to create a fake patch file.
-
- I attempted to document any places where we are not correctly converting
- to/from bytes (str() objects) to strings (unicode() objects).
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - Read/write utf-8 files instead of ascii.
- - Update the tests to use test for proper unicode() handling.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- - Use unicode() strings instead of str() byte arrays.
- * Scripts/webkitpy/common/checkout/scm.py:
- - Remove use of str().
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Read/write utf-8 files and use unicode() strings in testing.
- * Scripts/webkitpy/common/config/committers.py:
- - Use \u instead of \x to make slightly clearer what we're doing.
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Add a new _string_contents() method and explain why
- we have to call unicode() on the result of soup.string
- and why it's safe to do so w/o needing to pass a codec name.
- - Remove the (unused) support for passing a file object to add_patch_to_bug().
- * Scripts/webkitpy/common/net/buildbot.py:
- - Use unicode() instead of str() when needing to coax a
- NavigableString object into a unicode() object.
- * Scripts/webkitpy/common/net/statusserver.py:
- - Remove use of str()
- * Scripts/webkitpy/common/prettypatch.py:
- - Write out the patch file as utf-8.
- * Scripts/webkitpy/common/system/autoinstall.py:
- - Add a FIXME about encoding.
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- - Document that tee() works on bytes, not strings.
- * Scripts/webkitpy/common/system/executive.py:
- - Make run* properly take and return unicode() objects.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- - Added a unit test to make sure we don't break Tor again!
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - Write out the test list as utf-8.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- - Write out json files as utf-8.
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- - Add FIXME about encoding handling.
- * Scripts/webkitpy/tool/commands/upload.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/mocktool.py:
- - Rename add_patch_to_bug argument to match bugzilla.py
- * Scripts/webkitpy/tool/steps/postdiff.py:
- - Pass the diff directly to add_patch_to_bug instead of creating a StringIO file wrapper.
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py: ditto.
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py: ditto.
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Fixed spurious logging seen when running test-webkitpy
-
-2010-04-20 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- For check-webkit-style, implemented __eq__() and __ne__() (the
- built-in equality and inequality methods) for the
- DefaultStyleErrorHandler class.
-
- https://bugs.webkit.org/show_bug.cgi?id=37850
-
- This will facilitate unit-testing for a subsequent patch,
- namely for https://bugs.webkit.org/show_bug.cgi?id=37850
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Added __eq__() and __ne__() to the DefaultStyleErrorHandler
- class.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Added unit tests for __eq__() and __ne__().
- - Also included a minor clean-up refactoring of combining the
- StyleErrorHandlerTestBase class (which has not needed to
- be separate due to previous changes) into the
- DefaultStyleErrorHandlerTest class.
-
-2010-04-20 Jakub Wieczorek <jwieczorek@webkit.org>
-
- Unreviewed.
-
- Add my IRC nick to the committers.py list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-20 Kim Grönholm <kim.gronholm@nomovok.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Multitouch mocking in QtLauncher doesn't work with QGraphicsView
- https://bugs.webkit.org/show_bug.cgi?id=37816
-
- Fix multi-touch mocking in QtLauncher when using QGraphicsView.
- Test: https://bug-32434-attachments.webkit.org/attachment.cgi?id=44955
-
- * QtLauncher/main.cpp:
- (LauncherWindow::eventFilter):
- (LauncherWindow::initializeView):
-
-2010-04-20 MORITA Hajime <morrita@google.com>
-
- Unreviewed, add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-20 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [DRT/Chromium] Fix some unexpected results of editing
- https://bugs.webkit.org/show_bug.cgi?id=37843
-
- This change fixes about 70 unexpected results.
- The original test_webview_delegate.cc doesn't have this bug.
- The bug was introduced when I ported it to WebKit tree.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (printRangeDescription): Replace the latter startContainer() with endContainer().
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Turn off some unit tests for now - the new-run-webkit-tests dryrun
- tests for chromium won't work if you don't have a chromium checkout.
-
- https://bugs.webkit.org/show_bug.cgi?id=37841
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- (Re-)add dryrun.py; this was renamed from passing.py in the previous
- CL but apparently somehow didn't get checked in.
-
- https://bugs.webkit.org/show_bug.cgi?id=37841
-
- * Scripts/webkitpy/layout_tests/port/dryrun.py: Added.
-
-2010-04-19 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- check-webkit-style: exits when encountering a deleted file
- https://bugs.webkit.org/show_bug.cgi?id=37122
-
- This reverts the quick fix done by r57119 and makes check_patch
- not call check_file for deleted files.
-
- Also this change fixes the behavior for "-", which should mean
- stdin. Before this change, the style checker just ignored "-"
- with a warning message.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-04-19 Daniel Bates <dbates@rim.com>
-
- No review, rolling out 57868.
- http://trac.webkit.org/changeset/57868
- https://bugs.webkit.org/show_bug.cgi?id=37748
-
- Sheriffbot wasn't very inspirational after this patch.
- Instead, he was silent when you said hi :-(. Rolling
- out this patch so that I can debug/test this some more.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-19 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=37748
-
- Make Sheriffbot more inspirational.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-19 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add missing header.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests - repurpose the "Passing" port as "Dryrun" port
- that can be used to test platforms other than the one you are running
- on. This can be useful for checking baselines and testing code
- coverage.
-
- Note that running the code on the "wrong" port requires each
- port-specific implementation to actually not require any
- platform-specific python code (e.g., the chromium-win port must
- test for the existence of windows functions before calling them).
-
- https://bugs.webkit.org/show_bug.cgi?id=37782
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py: Renamed from WebKitTools/Scripts/webkitpy/layout_tests/port/passing.py.
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: add --build (default) and --no-build
- options to make that step optional. This flag modifies what happens
- in port.check_build().
-
- https://bugs.webkit.org/show_bug.cgi?id=37786
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- new-run-webkit-tests - fix a typo in r57480 that caused us to stop
- logging the actual list of unexpected results.
-
- https://bugs.webkit.org/show_bug.cgi?id=37831
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- From a patch by Tor Arne Vestbo <tor.arne.vestbo@nokia.com>
-
- new-run-webkit-tests: make the retry step more explicit
- https://bugs.webkit.org/show_bug.cgi?id=37606
-
- It might be confusing to see the test and percent counters
- reset without any notice of what's going on, so we make the
- message that a retry-run is started explicit.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Sam Weinig <weinig@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Add support for opening a new window (File->New Window) to
- Windows MiniBrowser. Accelerator doesn't work.
-
- * MiniBrowser/win/BrowserView.cpp:
- (createNewPage): Use BrowserView::create.
- * MiniBrowser/win/BrowserWindow.cpp:
- (BrowserWindow::onCommand): Respond to ID_FILE_NEW_WINDOW
- by creating a new window.
- * MiniBrowser/win/BrowserWindow.h:
- (BrowserWindow::create): Added. Don't allow creating
- BrowserWindows on the stack by making constructor
- private and exposing the create function.
- * MiniBrowser/win/MiniBrowser.cpp:
- (MiniBrowser::createNewWindow): Move new window creation
- logic here.
- * MiniBrowser/win/MiniBrowser.h:
- * MiniBrowser/win/MiniBrowser.rc:
- * MiniBrowser/win/main.cpp:
- (_tWinMain): Use the new MiniBrowser::createNewWindow().
-
-2010-04-19 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- AX: aria-haspopup needs to be exposed
- https://bugs.webkit.org/show_bug.cgi?id=37808
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::hasPopup):
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Submit a better workaround for r57806 than the one in r57831 - log
- an error and exit if you try to run new-run-webkit-tests with --use-drt
- on Windows.
-
- https://bugs.webkit.org/show_bug.cgi?id=37822
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-19 Jesus Sanchez-Palencia <jesus@webkit.org>
-
- Unreviewed.
-
- Just adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add slightly better logging to the websocket python wrapper script,
- including a --verbose flag for debug output.
-
- https://bugs.webkit.org/show_bug.cgi?id=37233
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/new-run-webkit-websocketserver:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: add a way (--print-unexpected-results) to
- (re-)print out the tests that produced unexpected results in the
- last run. Also add a way (--retry-unexpected-results) to
- automatically re-test them.
-
- https://bugs.webkit.org/show_bug.cgi?id=37783
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Restructure the logging in new-run-webkit-tests so that many of log
- messages that were logged to the MeteredStream also get logged in
- --verbose mode.
-
- https://bugs.webkit.org/show_bug.cgi?id=37780
-
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: add 'summary' and 'unexpected-results' options
- to the --log flag. Also add a 'progress' flag to enable the regular
- progress bar (as opposed to 'detailed-progress', which enables the
- dots). Also add a 'nothing' flag to allow you to be explicit that
- you don't want any logging on the command line.
-
- The default is
- '--log detailed-progress,summary,unexpected,unexpected-results'
-
- (The default logging is unchanged by this patch, this just makes things
- properly configurable).
-
- Note that 'nothing' doesn't work properly yet; I need a couple other
- patches to land to avoid rewriting things several different ways.
-
- https://bugs.webkit.org/show_bug.cgi?id=37785
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-19 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Make the URL change on committed load.
-
- * QtLauncher/mainwindow.cpp:
- (MainWindow::buildUI):
- (MainWindow::setAddressUrl):
- * QtLauncher/mainwindow.h:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix a typo in the rebaselining tool that causes us to use "debug"
- instead of "Debug" in a directory path, which fails on platforms with
- case-sensitive filesystems.
-
- https://bugs.webkit.org/show_bug.cgi?id=37819
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-04-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix breakage of chromium-win canary bots caused by r57806. That patch
- introduced the option of using Chrome's new port of DumpRenderTree,
- but unfortunately that port relies on the webkit.py class
- implementation which uses non-blocking I/O that isn't available on
- Windows. This patch turns off that option and doesn't import the
- class if we're running on Windows.
-
- https://bugs.webkit.org/show_bug.cgi?id=37817
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-19 James Robinson <jamesr@chromium.org>
-
- Reviewed by abarth.
-
- Fix a typo
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-04-19 Adam Roben <aroben@apple.com>
-
- Fix run-webkit-tests when there are spaces in the path
-
- Fixes <http://webkit.org/b/37809>
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests: Use an "indirect object" to specify the
- path to the harness to exec(). According to perldoc, this usage will
- prohibit perl from parsing the arguments to exec() via the shell,
- which would incorrectly split paths with spaces in them, etc.
-
-2010-04-19 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Adam Roben.
-
- WinLauncher.h should use LF line-endings and use native line-endings style.
- https://bugs.webkit.org/show_bug.cgi?id=37807
-
- * WinLauncher/WinLauncher.h: Added property svn:eol-style, converted to LF line-endings.
-
-2010-04-19 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [DRT/Chromium] Fix a test initialization problem
- https://bugs.webkit.org/show_bug.cgi?id=37791
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest): Call resetTestController() before runFileTest(). Some
- controllers initialize their fields in reset() and not in their
- constructors.
-
-2010-04-19 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Chromium] new-run-webkit-tests should use WebKitDriver for --use-drt
- https://bugs.webkit.org/show_bug.cgi?id=37793
-
- We need to use WebKitDriver instead of ChromiumDriver for Chromium
- DRT because its interface is different from test_shell.
-
- Chromium DRT has no UI. So we can't use it to show test results.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-04-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make failure-reason more forgiving
- https://bugs.webkit.org/show_bug.cgi?id=37525
-
- Removed search_limit, which wasn't very useful anyway.
- Added a log about the long load time loading from the builders.
- Prompt the user for what revision to start walking from (makes it easy to restart upon failure).
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-04-18 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Created a class for check-webkit-style that encapsulates iterating
- over text files and reading them.
-
- https://bugs.webkit.org/show_bug.cgi?id=37754
-
- This revision is an intermediate step towards separating our
- style-checking code from the logic of iterating over files and
- reading them.
-
- * Scripts/webkitpy/common/system/logtesting.py:
- - Added a logMessages() method to the LoggingTestCase class.
- This method provides unit tests with access to the raw list
- of log messages in case the tester needs to do something more
- than simply assert the list of existing messages.
-
- * Scripts/webkitpy/style/checker.py:
- - Added a ProcessorBase class that processors of lists of lines
- should eventually inherit from.
- - Also added a FIXME to use the ProcessorBase class and the
- TextFileReader class added below.
-
- * Scripts/webkitpy/style/filereader.py: Added.
- - Created a TextFileReader class that encapsulates reading
- and iterating over text files.
-
- * Scripts/webkitpy/style/filereader_unittest.py: Added.
- - Added a TextFileReaderTest class to unit-test the
- new TextFileReader class.
-
-2010-04-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- [chromium] new-run-webkit-tests should be able to use chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=37645
-
- Make sure that the lack of a chromium checkout doesn't cause the script to
- fail.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py: Fix up a few paths
- to be relative to an upstream output dir.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Add --use-drt flag.
-
-2010-04-18 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing the Qt bot.
-
- Add a layer of indirection when calling run-webkit-tests to allow testing new-run-webkit-tests on various platforms
- https://bugs.webkit.org/show_bug.cgi?id=37632
-
- * Scripts/run-webkit-tests:
- - Exit non-zero of launching the harness fails.
-
-2010-04-18 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing the Qt bot.
-
- Add a layer of indirection when calling run-webkit-tests to allow testing new-run-webkit-tests on various platforms
- https://bugs.webkit.org/show_bug.cgi?id=37632
-
- * Scripts/run-webkit-tests:
- - Fix the wrapper to work for users who do not
- have WebKitTools/Scripts in their path.
-
-2010-04-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add a layer of indirection when calling run-webkit-tests to
- allow testing new-run-webkit-tests on various platforms.
- https://bugs.webkit.org/show_bug.cgi?id=37632
-
- This will let us test and fix bugs in new-run-webkit-tests
- without needing to restart the buildbot master between tests.
-
- Currently this change leaves run-webkit-tests as-is, but once
- its landed we will easily be able to turn on/off
- new-run-webkit-tests for various ports/configurations.
-
- I will send a note out to webkit-dev about how we will
- be using this launcher script to test on the bots.
-
- * Scripts/old-run-webkit-tests: Copied from WebKitTools/Scripts/run-webkit-tests.
- * Scripts/run-webkit-tests:
- - A new script which decides whether to run new- or old-
- run-webkit-tests based on the platform.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Add some dummy argument handling for arguments which
- old-run-webkit-tests supports but new-run-webkit-tests
- does not yet.
-
-2010-04-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add Gtk bots to the list of "core builders" (builders which stop the commit-queue when they turn red)
- https://bugs.webkit.org/show_bug.cgi?id=33295
-
- The Gtk builders have been green every time I've looked
- at them in the last 5 days or so. It would appear webkit
- is now keeping them green and we should update the core
- builder list to match reality.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-04-18 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add support for LayoutTestController commands:
- setSmartInsertDeleteEnabled
- setSelectTrailingWhitespaceEnabled
- execCommand
- isCommandEnabled
-
- https://bugs.webkit.org/show_bug.cgi?id=35844
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setSmartInsertDeleteEnabled):
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
- (LayoutTestController::execCommand):
- (LayoutTestController::isCommandEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove steps_references and commands_references
- https://bugs.webkit.org/show_bug.cgi?id=37758
-
- We tried using the mumble_references convention to manage our
- dependencies, but it doesn't seem to be providing much value for the
- steps and commands module because these modules are small pieces of the
- larger tool module. In this patch, I've removed the references file
- for these modules.
-
- I've left the style_references file for the style module because that
- module seems better isolated from the rest of webkitpy and the
- style_references file appears to be providing some value.
-
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/commands_references.py: Removed.
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
- * Scripts/webkitpy/tool/steps/validatereviewer_unittest.py:
- * Scripts/webkitpy/tool/steps_references.py: Removed.
-
-2010-04-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- WebKit needs a Chromium Mac EWS Builder
- https://bugs.webkit.org/show_bug.cgi?id=37742
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2010-04-17 Adam Barth <abarth@webkit.org>
-
- Fix expected results for unit test broken by
- http://trac.webkit.org/changeset/57772
-
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-04-17 Sam Weinig <weinig@apple.com>
-
- Reviewed by Adam Roben.
-
- Teach windows MiniBrowser how to work with window.open()
- and targeted links.
-
- * MiniBrowser/win/BrowserView.cpp:
- (createNewPage): Create a new BrowserWindow and return its page.
- (showPage): Show the page.
- (closePage): Empty implementation.
- (runJavaScriptAlert): Empty implementation.
- (BrowserView::create): Register a UIClient.
- * MiniBrowser/win/BrowserView.h:
- (BrowserView::webView): Added.
- Change create to take a BrowserWindow instead of an HWND.
-
- * MiniBrowser/win/BrowserWindow.cpp:
- (BrowserWindow::wndProc): Respond to WM_NCDESTROY.
- (BrowserWindow::goToURL): Added. Forwards to BrowserView.
- (BrowserWindow::onCreate): Don't always go to the default
- url. Let the caller do this.
- (BrowserWindow::onNCDestroy): Delete the window.
- * MiniBrowser/win/BrowserWindow.h:
- (BrowserWindow::view): Added.
- (BrowserWindow::window): Added.
-
- * MiniBrowser/win/main.cpp:
- (_tWinMain):
- Go to the default URL for the initial page. Allocate the initial
- window on the heap for correctness.
-
-2010-04-16 Adam Roben <aroben@apple.com>
-
- Add the Windows Debug (Test) builder to the list of core builders
-
- It's been green for a few days now, and all the known Windows
- flakiness is Release-only.
-
- Rubber-stamped by Mark Rowe.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- (BuildBot.core_builder_name_regexps): Added a regular expression to
- match the "Windows Debug (Test)" builder.
-
-2010-04-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix window.open() and targeted links.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_createNewPage): Use the correct initializer to and load the window.
-
-2010-04-16 Adam Roben <aroben@apple.com>
-
- Fix links to layout test results from build status pages
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ExtractTestResults.finished): Prepend "/" on the URL of the test
- results page so that it is treated as an absolute URL.
-
-2010-04-16 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] build DRT on Linux
- https://bugs.webkit.org/show_bug.cgi?id=37690
-
- * Scripts/build-dumprendertree: Add support for win and linux
-
-2010-04-16 Sam Weinig <weinig@apple.com>
-
- Reviewed by Adam Roben.
-
- Use the threaded process model for MiniBrowser if holding down
- the shift key on startup.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2010-04-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] Add TestShellGtk.cpp so we can link on Linux
- https://bugs.webkit.org/show_bug.cgi?id=37561
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Add new file and
- add platform file exceptions.
- * DumpRenderTree/chromium/TestShellGtk.cpp: Added.
- (AlarmHandler):
- (TestShell::waitTestFinished):
-
-2010-04-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- build DRT on chromium mac
- https://bugs.webkit.org/show_bug.cgi?id=37639
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * Scripts/build-dumprendertree: enable build-dumprendertree --chromium
-
-2010-04-15 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add LayoutTestHelper for Mac
- https://bugs.webkit.org/show_bug.cgi?id=37668
-
- LayouTestHelper.mm is based on webkit/tools/test_shell/mac/layout_test_helper.mm
- of Chromium.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/LayoutTestHelper.mm: Added.
-
-2010-04-15 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Geoff Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=37494
- <rdar://problem/7857060> REGRESSION (r57340): fast/events/mouse-drag-from-frame-to-other-frame.html
- fails on Windows
-
- * DumpRenderTree/win/EventSender.cpp: (makeEventSender):
- * DumpRenderTree/win/EventSender.h:
- Tell EventSender if it's being created for a top frame.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld): We only want to reset
- EventSender machinery when a new test is loaded, not when an iframe (or just its global
- object) is created.
-
-2010-04-15 Adam Roben <aroben@apple.com>
-
- Fix Windows WebKit2 build.
-
- * MiniBrowser/win/MiniBrowser.cpp:
-
-2010-04-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- Include codereview issue number in patch description
- https://bugs.webkit.org/show_bug.cgi?id=37677
-
- This lets us know which rietveld issue this patch is tied to.
-
- Also, make it so that --fancy-review overrides --no-review.
-
- * Scripts/webkitpy/tool/steps/postcodereview.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2010-04-15 Adam Roben <aroben@apple.com>
-
- Make --exit-after-n-failures work when all tests are timing out or crashing
-
- Fixes <http://webkit.org/b/37679>.
-
- Reviewed by Jon Honeycutt.
-
- * Scripts/run-webkit-tests:
- (top level): When a test crashes or times out, break out of the main loop if
- stopRunningTestsEarlyIfNeeded returns true. Moved some code from the bottom of the main loop
- from here...
- (stopRunningTestsEarlyIfNeeded): ...to here.
-
-2010-04-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add WebHistoryClient support.
- https://bugs.webkit.org/show_bug.cgi?id=37671
-
- Add HistoryClient logging.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_didNavigateWithNavigationData):
- (_didPerformClientRedirect):
- (_didPerformServerRedirect):
- (_didUpdateHistoryTitle):
- (-[BrowserWindowController awakeFromNib]):
-
-2010-04-15 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Start the mini browser in threaded mode if shift is pressed during startup.
- https://bugs.webkit.org/show_bug.cgi?id=37670
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
-
-2010-04-15 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- AXHelp is being appended from ancestors incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=37659
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getHelpTextCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::helpText):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::helpText):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::helpText):
-
-2010-04-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Re-format run-webkit-tests to fit in 80-columns for PEP-8 compliance.
- (broken by r57463 and r57381, at least). I've also filed bug 37477
- to fix check-webkit-style to catch these things.
-
- https://bugs.webkit.org/show_bug.cgi?id=38586
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add a way to override the user-visible name for the test binary since
- some ports don't call it DumpRenderTree (e.g., Chromium Win uses
- test_shell, Chromium Mac uses TestShell) by adding a driver_name()
- method to the Port interface.
-
- https://bugs.webkit.org/show_bug.cgi?id=37631
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Add "Force Repaint" to debug menu.
- https://bugs.webkit.org/show_bug.cgi?id=37627
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController forceRepaint:]):
- * MiniBrowser/mac/English.lproj/MainMenu.xib:
-
-2010-04-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add debug-minibrowser script.
-
- * Scripts/debug-minibrowser: Copied from Scripts/run-minibrowser.
- * Scripts/webkitdirs.pm:
-
-2010-04-15 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Bug 37636 - [DRT/Chromium] Implement DRT/Chromium for Windows
- https://bugs.webkit.org/show_bug.cgi?id=37636
-
- Second patch: add Windows-specific implementation parts
- of TestShell.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::finishedEvent):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (watchDogThread):
- (TestShell::waitTestFinished):
-
-2010-04-15 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Bug 37636 - [DRT/Chromium] Implement DRT/Chromium for Windows
- https://bugs.webkit.org/show_bug.cgi?id=37636
-
- First patch: fix compiler errors.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::reset):
- (EventSender::dispatchMessage):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::pathToLocalResource):
- * DumpRenderTree/chromium/TestWebWorker.h:
- * DumpRenderTree/chromium/TextInputController.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2010-04-14 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Moving setViewMode from DumpRenderTreeSupportQt to qwebpage.cpp
- https://bugs.webkit.org/show_bug.cgi?id=37622
-
- Method qt_wrt_setViewMode was removed from qwebpage.cpp by mistake in r57433
- (bug 35844). Moving it back.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setViewModeMediaFeature):
-
-2010-04-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add some very minimal unit tests for new-run-webkit-tests. This should
- be enough to catch egregious brokenness like syntax errors and import
- declaration issues.
-
- https://bugs.webkit.org/show_bug.cgi?id=37432
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: Added.
-
-2010-04-14 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- Add a way for the buildbot to kill any old processes that are running. This
- is useful because the Windows bots can get in states where a process remains
- running (httpd.exe, DumpRenderTree.exe), which causes the bots to get in a red
- state, and the processes must be killed manually.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: If we are on Windows, kill
- the old processes that might be running.
- * BuildSlaveSupport/win/kill-old-processes: Added.
-
-2010-04-14 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Tear down WebKit more completely on window closing and application
- termination. We still don't block application termination for pending
- close, but this is a step in the right direction.
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate applicationWillTerminate:]):
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController dealloc]):
- (-[BrowserWindowController windowWillClose:]):
- (-[BrowserWindowController applicationTerminating]):
-
-2010-04-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Use pretty patch for confirming webkit-patch diffs
- https://bugs.webkit.org/show_bug.cgi?id=37489
-
- * Scripts/webkitpy/common/prettypatch.py: Added.
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
-
-2010-04-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach webkit-patch how to handle revisions missing ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=37519
-
- Make commit_info_for_revision return None when revision
- is missing a ChangeLog. Previously we would throw an array index
- exception.
- Teach callers how to handle None.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-04-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add Qt Bot to the list of "core builders" (builders which block the commit-queue when red)
- https://bugs.webkit.org/show_bug.cgi?id=33297
-
- This is an experiment. The bots have been green for
- a while. We'll see if adding them under sheriff-bot protection
- will keep them green.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-04-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing a constant in the Rietveld unit test.
-
- * Scripts/webkitpy/common/net/rietveld_unittest.py
-
-2010-04-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just adding missing Mock to fix python tests.
-
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-13 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by David Levin.
-
- Add experimental prototype Rietveld integration to webkit-patch upload
- https://bugs.webkit.org/show_bug.cgi?id=37418
-
- This patch adds bare-bones integration with Rietveld for code reviews.
- The behavior is hidden behind the --fancy-review command line flag.
- Currently, there's no support for uploading more than one patch per
- issue (which is a nice feature of Rietveld). The plan is to play with
- this for a bit and see if it's useful.
-
- Modified from Adam's original patch to autoinstall the rietveld upload script.
-
- * Scripts/webkitpy/common/config/__init__.py:
- * Scripts/webkitpy/common/net/rietveld.py: Added.
- * Scripts/webkitpy/common/net/rietveld_unitttest.py: Added.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py: Added.
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2010-04-13 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Mark Rowe.
-
- Add Makefile to MiniBrowser.
-
- * MiniBrowser/Makefile: Added.
-
-2010-04-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just adding a sanity check.
-
- Add check to make sure commit-queue can never commit too short a message
- https://bugs.webkit.org/show_bug.cgi?id=37528
-
- The commit-queue made bogus messages here:
- http://trac.webkit.org/changeset/57532
- http://trac.webkit.org/changeset/57534
-
- This was a regression caused by adding unicode parsing for
- our ChangeLog files. Popen does not seem to play nice with
- unicode strings.
-
- I'm also adding an "assert" to make sure short ChangeLogs never happen again.
-
- * Scripts/webkitpy/common/system/executive.py:
- - Cast input to strings before passing to POpen
- * Scripts/webkitpy/tool/steps/commit.py:
- - Validate that commit messages are not to short.
-
-2010-04-13 Adam Roben <aroben@apple.com>
-
- Robustify new-run-webkit-tests against paths with spaces in them
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- (LayoutTestApacheHttpd.__init__): Quote all paths that we pass to
- Apache to ensure that paths with spaces in them are interpreted
- correctly.
-
-2010-04-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed buildfix after r57537.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.h: Declaration of removeOriginAccessWhitelistEntry() added.
-
-2010-04-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Make building new webkit API and MiniBrowser a little easier.
-
- * Scripts/build-webkit: Make building with --webkit2 build the
- MiniBrowser as well and tell you how to use it.
- * Scripts/run-minibrowser: Copied from Scripts/run-safari.
- * Scripts/webkitdirs.pm: Add runMiniBrowser function.
-
-2010-04-12 Timothy Hatcher <timothy@apple.com>
-
- SecurityOrigin needs a way to remove individual OriginAccessEntries
- https://bugs.webkit.org/show_bug.cgi?id=37449
-
- Reviewed by Dave Hyatt.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (removeOriginAccessWhitelistEntryCallback): Added. Call LayoutTestController::removeOriginAccessWhitelistEntry.
- (LayoutTestController::staticFunctions): Added removeOriginAccessWhitelistEntry.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::removeOriginAccessWhitelistEntry): Added. FIXME to implement.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::removeOriginAccessWhitelistEntry): Added.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::removeOriginAccessWhitelistEntry): Added. FIXME to implement.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::removeOriginAccessWhitelistEntry): Added.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::whiteListAccessFromOrigin): FIXME to implement.
- (LayoutTestController::removeOriginAccessWhitelistEntry): Added. FIXME to implement.
-
-2010-04-13 Timothy Hatcher <timothy@apple.com>
-
- Rename SecurityOrigin::whiteListAccessFromOrigin to addOriginAccessWhitelistEntry.
- And LayoutTestController.whiteListAccessFromOrigin to addOriginAccessWhitelistEntry.
- And SecurityOrigin::resetOriginAccessWhiteLists to resetOriginAccessWhitelists.
-
- SecurityOrigin needs a way to remove individual OriginAccessEntries
- https://bugs.webkit.org/show_bug.cgi?id=37449
-
- Reviewed by Dave Hyatt.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (addOriginAccessWhitelistEntryCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::addOriginAccessWhitelistEntry):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
-
-2010-04-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Remove duplicate function for new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=37517
-
- The version() function was already implemented.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- the commit-queue hates Tor Arne Vestbø
- https://bugs.webkit.org/show_bug.cgi?id=37511
-
- We were failing to read reviewers out of ChangeLogs
- when the reviewer has unicode characters in his/her name.
- I fixed this by explicitly decoding from utf8 every time we
- read in a ChangeLog file (they are always UTF8).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2010-04-13 Adam Roben <aroben@apple.com>
-
- Fix run-webkit-tests on Windows with spaces in the path
-
- Fixes <http://webkit.org/b/37509>.
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/run-webkit-tests:
- (convertPathUsingCygpath): Remove spaces from the path before passing
- them to cygpath, then add them back in after conversion, as some
- versions of cygpath seem to convert spaces into newlines.
-
-2010-04-13 Adam Barth <abarth@webkit.org>
-
- Unreviewed, but approved by Dumitru Daniliuc. (This patch is intended
- to fix the downstream Chromium build bots. Hopefully it will work!)
-
- Add a driver script for the new websocket server
- https://bugs.webkit.org/show_bug.cgi?id=37495
-
- websocket_server.py can't be run directly because its a module and not
- a standalone script. This used to work by accident because it didn't
- depend on any other modules.
-
- * Scripts/new-run-webkit-websocketserver: Added.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-04-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make new-run-webkit-test PrettyPatch failure reporting more awesome
- https://bugs.webkit.org/show_bug.cgi?id=37487
-
- I also fixed an Executive/executive typo.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-04-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests should only build java support files on Mac
- https://bugs.webkit.org/show_bug.cgi?id=37482
-
- Only the mac needs java support files, so I pushed _build_java
- down into the Mac port using a new hook "_check_port_build".
- In the process I noticed a bunch of code which could be shared
- between all ports and thus got rid of _tests_for_disabled_features
- and version() copy/paste between all webkit ports.
- I also made check_build only bother to check for ImageDiff if we're
- using pixel tests.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2010-04-12 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, trying to make scripts work on machines without
- Ruby...
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-04-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Add stub files for running new-run-webkit-tests for the Qt port
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/qt.py: Added.
-
-2010-04-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Modify run_webkit_tests.py to not call sys.exit() at the end of test
- run; doing so makes it more difficult to embed the routine for,
- among other things, unit tests. We push the exit calling up into
- new-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=37464
-
- * Scripts/new-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-12 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Add stub Gtk implementation for new-run-webkit-tests.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py: Added.
-
-2010-04-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests fails with exception on systems missing ruby
- https://bugs.webkit.org/show_bug.cgi?id=37441
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Catch failures similar to how wdiff code path does.
- - After one failure, stop trying.
-
-2010-04-12 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix how we import simplejson based on how it's used in this file.
- This fixes exceptions raised when trying to write the simplejson output.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-11 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored check-webkit-style so that the StyleChecker class
- has no dependencies on patch-related concepts.
-
- https://bugs.webkit.org/show_bug.cgi?id=37065
-
- This patch is an intermediate step towards making the StyleChecker
- class a generalized file processor that can do arbitary operations
- on the files corresponding to a list of paths. This patch
- also simplifies the unit-testing of patch-checking code.
-
- * Scripts/check-webkit-style:
- - Updated to use the new PatchChecker class.
-
- * Scripts/webkitpy/style/checker.py:
- - Refactored the StyleChecker.check_patch() method into the
- check() method of a new PatchChecker class.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Refactored the unit tests as necessary, changing the
- StyleCheckerCheckPatchTest class to a PatchCheckerTest class.
-
-2010-04-11 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Fix new-run-webkit-tests regressions cased by Eric's option parsing patch
- https://bugs.webkit.org/show_bug.cgi?id=37430
-
- We need some basic unit testing of this script, or we're going to keep
- breaking it like this. Added missing namespace qualifiers and
- propagated renaming of an option.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/layout_tests/driver_test.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Break new-run-webkit-tests options into groups for easier re-use and possible relocation
- https://bugs.webkit.org/show_bug.cgi?id=37408
-
- new-run-webkit-tests currently has one huge function for
- dealing with all options-parsing.
- This patch is a first attempt at trying to split that large
- function down into smaller (hopefully more readable?) chunks
- dealing with the different areas of options.
- For example, it would make sense to move configuration
- options off into some module which deals with the vagries of
- WebKit's configuration system. It would also make sense to move
- Chromium options off onto the Chromium port object (where they are used).
- It may make sense to move results.json options over to the results.json code.
- This change is a first iteration, and we will certainly need more
- refinement to this code over time. Hopefully I didn't make things
- harder to read here.
-
- * Scripts/webkitpy/layout_tests/driver_test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- create-rollout copy needs to be updated to reflect removal of --no-build
- https://bugs.webkit.org/show_bug.cgi?id=37425
-
- Removed --no-build and --no-test from the instructions because these
- don't exist anymore.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- - Updated the expected results to reflect the new copy.
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
-
-2010-04-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r57460.
- http://trac.webkit.org/changeset/57460
- https://bugs.webkit.org/show_bug.cgi?id=37424
-
- broke chromium builders (Requested by tony^work on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2010-04-11 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [chromium] update chromium DEPS for upstream compile
- https://bugs.webkit.org/show_bug.cgi?id=36578
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Small fix to avoid a circular dependency between
- WebKit.gyp and webkit.gyp.
-
-2010-04-11 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Eric Seidel.
-
- svn-apply errors out when removing directories in git
- https://bugs.webkit.org/show_bug.cgi?id=34871
-
- * Scripts/svn-apply:
- (isDirectoryEmptyForRemoval): early break if the directory doesn't exist
- (scmRemove): have git ignore unmatched files
-
-2010-04-11 Daniel Bates <dbates@rim.com>
-
- No review, rolling out 57440.
- http://trac.webkit.org/changeset/57440
- https://bugs.webkit.org/show_bug.cgi?id=27204
-
- Did not handle Git patches that included both file and property
- changes to the same file. Rolling this change out while I look
- into this.
-
- * Scripts/VCSUtils.pm:
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
- * Scripts/webkitperl/VCSUtils_unittest/appendSVNExecutableBitChangeToPatch.pl: Removed.
- * Scripts/webkitperl/VCSUtils_unittest/parseGitFileMode.pl: Removed.
- * Scripts/webkitperl/VCSUtils_unittest/parseStartOfPatchOrPropertyChangeAndEndOfPropertyChange.pl: Removed.
-
-2010-04-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix typo in log path for AbstractQueue
- https://bugs.webkit.org/show_bug.cgi?id=37414
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-04-11 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add missing import statement.
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-04-11 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add setWillSendRequestReturnsNull and setWillSendRequestClearHeader
-
- https://bugs.webkit.org/show_bug.cgi?id=37410
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setWillSendRequestReturnsNull):
- (LayoutTestController::setWillSendRequestClearHeader):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-11 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed buildfix for --debug build after r57433.
-
- Refactor Qt DRT support in QtWebKit
- https://bugs.webkit.org/show_bug.cgi?id=35844
-
- * QtLauncher/main.cpp: qt_drt_garbageCollector_collect(); renamed to DumpRenderTreeSupportQt::garbageCollectorCollect();
- (launcherMain):
-
-2010-04-11 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Make commit-log-editor Rubber-stamp aware. And other minor cleanups.
- https://bugs.webkit.org/show_bug.cgi?id=37407
-
- * Scripts/commit-log-editor:
-
-2010-04-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add PrettyPatch links to new-run-webkit-tests output
- https://bugs.webkit.org/show_bug.cgi?id=37406
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - We're leaking a file handle here, add a FIXME.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- - Add pretty diff links.
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Add support for generating pretty diffs using PrettyPatch.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - We're leaking another file handle here, another FIXME.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- - Update write_output_files signature.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - Remove unused arguments from write_output_files.
- - Add support for dumping pretty diffs to write_output_files.
- - Fix a bunch of file descriptor leaks in this file.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- - Update write_output_files signature.
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- kill_process is copy/pasted in five places
- https://bugs.webkit.org/show_bug.cgi?id=37405
-
- We shouldn't replicate the kill_process logic in every port. Instead,
- we should move the process interaction to Executive.
-
- Dirk mentioned that he wanted this abstraction to make it easier to
- mock things out for testing. It turns out this function is only used
- in one place where it can't be used as a mock point for testing because
- the corresponding create process actually creates a real process. In
- the long term, we should indirect both these calls through a non-static
- Executive as a mock point. However, we should wait on that until we
- actually want to write the test.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests shouldn't alter its path to import packages
- https://bugs.webkit.org/show_bug.cgi?id=37404
-
- * Scripts/new-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- * Scripts/webkitpy/thirdparty/simplejson/decoder.py:
-
-2010-04-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests should store results to a directory under the build tree
- https://bugs.webkit.org/show_bug.cgi?id=37380
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-10 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=27204
-
- Implement support for changing the executable bit of a file.
- The executable bit is among the most changed file properties.
- Future support can include other property changes.
-
- Currently, if a patch changes the executable bit of a file
- it is not respected by svn-apply or svn-unapply. Since the
- commit-queue bot uses these tools as part of its workflow,
- such patches cannot be committed by it. That is, such patches
- need to be committed by hand. Instead, we should add support
- for the executable bit so that such patches can be committed
- by the commit-queue bot.
-
- * Scripts/VCSUtils.pm: Also change reference to Apple Computer, Inc.
- in copyright to Apple, Inc.
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
- * Scripts/webkitperl/VCSUtils_unittest/appendSVNExecutableBitChangeToPatch.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/parseGitFileMode.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/parseStartOfPatchOrPropertyChangeAndEndOfPropertyChange.pl: Added.
-
-2010-04-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- WinEWS bot fails to svn update because scm.clean_working_directory leaves files around
- https://bugs.webkit.org/show_bug.cgi?id=37401
-
- The Git-based bots don't have this trouble because
- Git.clean_working_directory fully removes files that were
- marked as "add". SVN.clean_working_directory previously just
- called "svn revert" which would leave added files in the
- working directory untracked. This patch makes
- SVN.clean_working_directory function more like
- Git.clean_working_directory by removing added files after revert.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- - Add SCM.absolute_path for easy conversion between
- repository-relative paths and absolute paths.
- - Add SCM.add and SCM.added_files
- - Make SVN.clean_working_directory remove any added_files after svn revert.
- - The new unit tests found a bug in Git.status_command, change to use git diff --name-status instead.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Add tests for added code.
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests can't find ImageDiff on Windows
- https://bugs.webkit.org/show_bug.cgi?id=37403
-
- It turns out the build directory on Windows is structured differently
- than it is on other platforms. Instead of assuming the normal
- structure, we should just ask perl to figure it out for us.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Change "Gathering files" status line to "Collecting tests". Gathering
- the files sounds silly to me.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix bugs to make new-run-webkit-tests almost run on windows
- https://bugs.webkit.org/show_bug.cgi?id=37400
-
- Fix some minor bugs that prevent new-run-webkit-tests from being run on
- Windows. I still haven't run it to completion, but I'm getting
- further.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-04-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Refactor Qt DRT support in QtWebKit
-
- Update Qt DRT to use new DumpRenderTreeSupportQt static class.
-
- https://bugs.webkit.org/show_bug.cgi?id=35844
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::dumpFramesAsText):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/GCControllerQt.cpp:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/qt/GCControllerQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::counterValueForElementById):
- (LayoutTestController::setViewModeMediaFeature):
- (LayoutTestController::setMediaType):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- (LayoutTestController::setFrameFlatteningEnabled):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setTimelineProfilingEnabled):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::whiteListAccessFromOrigin):
- (LayoutTestController::setCaretBrowsingEnabled):
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- (LayoutTestController::workerThreadCount):
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move global queue log to the logs directory so it survives git clean -f
- https://bugs.webkit.org/show_bug.cgi?id=37395
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- SheriffBot should spam when it encounters errors
- https://bugs.webkit.org/show_bug.cgi?id=37329
-
- We need to always update the status server so we don't get stuck in a
- spam loop. I tried writing a test for this change, but it kind of
- got out of control. We need a better way to do failure injection.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Unreviewed attempt to fix the Chromium Mac canary.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Add the Apache bits to win.py for new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=37397
-
- I still have run this yet, but I looked around to figure out what the
- various paths appear to be. I'll figure out a way to remove the
- copy/paste code in a future patch.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Sketch out the win port for new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=37393
-
- I haven't tried running this yet, but we've got to start somewhere.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py: Added.
-
-2010-04-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land should not build and test by default
- https://bugs.webkit.org/show_bug.cgi?id=33631
-
- Reverse the sense of --no-build and --no-test to be --build and --test.
- Also, decoupled the build and test options so you can test without
- building.
-
- (Patch manngled by Adam Barth. All bugs are his fault.)
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Factor WebKitPort out of MacPort to allow for WinPort
- https://bugs.webkit.org/show_bug.cgi?id=37388
-
- The split is a bit of a guess. We might have to adjust things once we
- actually have a second port to work with.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py: Added.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-04-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- run_webkit_tests.py shouldn't have platform-specific logic
- https://bugs.webkit.org/show_bug.cgi?id=37387
-
- Dirk Pranke pointed out that my last patch was wrong because I
- introduced platform-specific logic into run_webkit_tests.py, limiting
- the parallelism in Chromium to work around a bug in the main Mac port.
-
- * Scripts/webkitpy/common/system/executive.py:
- - Fix a typo pointed out by Chris Jerdonek.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-10 Robert Hogan <robert@webkit.org>
-
- Unreviewed fix to regressions in r57416.
-
- [Qt] Fix regressions in http/tests/navigation from r57416
-
- Reset willSendRequestReturnsNullOnRedirect after each test to
- prevent it leaking to subsequent tests.
-
- Error pointed out by Jakub Wieczorek.
-
- https://bugs.webkit.org/show_bug.cgi?id=37237
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
-
-2010-04-11 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Update layoutTestController.DumpResourceLoadCallbacks to match other ports.
-
- Add support for layoutTestController.setWillSendRequestReturnsNullOnRedirect to Qt DRT.
- Prevent dumping resource load callbacks once layout test has dumped.
-
- https://bugs.webkit.org/show_bug.cgi?id=37237
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setWillSendRequestReturnsNullOnRedirect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-10 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement Desktop Notifications API for QtWebKit
- https://bugs.webkit.org/show_bug.cgi?id=35503
-
- DRT stubs for notification. Enables to run and pass
- 3 (currently disabled) tests.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::checkDesktopNotificationPermission):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-04-09 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, another change to executive.py to make it run with
- python 2.4.
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-04-09 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, attempting to make executive.py run with python 2.4
- (which is still used on Chromium's Windows canary bot).
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-04-09 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [wx] Basic implementation of SVG support for wx port.
-
- * wx/build/settings.py:
-
-2010-04-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't reinvent Executive.cpu_count for every port
- https://bugs.webkit.org/show_bug.cgi?id=37377
-
- mac.py and chromium_mac.py had some copy/paste code. This code doesn't
- actually have anything to do with WebKit ports. It's really just
- something in the multiprocessing package. The lame bit is that package
- isn't available in older versions of Python, so we need to implement a
- fallback. However, we already have the fallback in common. We don't
- need to reinvent it specificly for layout_tests.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests --release fails to build release DRT when global configuration is Debug
- https://bugs.webkit.org/show_bug.cgi?id=37376
-
- We need to explicitly pass the --release flag. I bet there are more
- instances of this bug.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-04-09 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [chromium] DRT compile fix on win/linux
- https://bugs.webkit.org/show_bug.cgi?id=37314
-
- Looks like this was missed when upstreaming.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (applyKeyModifier):
-
-2010-04-09 Adam Barth <abarth@webkit.org>
-
- Unreviewed, but approved by Dirk Pranke.
-
- rename test_expectations_test.py to test_expectations_unittest.py so it actually gets run
- https://bugs.webkit.org/show_bug.cgi?id=37372
-
- We need to end unit tests with _unittest.py for them to be autodetected
- by the test harness. +6 tests.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py: Renamed from WebKitTools/Scripts/webkitpy/layout_tests/layout_package/test_expectations_test.py.
-
-2010-04-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests should talk about DumpRenderTree not test_shell
- https://bugs.webkit.org/show_bug.cgi?id=37371
-
- test_shell is some strange Chromium thing.
- DumpRenderTree (tm) is the real deal.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-09 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Fix 2 issues (what were introduced in r56524) in svn-create-patch's generateDiff()
- https://bugs.webkit.org/show_bug.cgi?id=32582
-
- Add missing return variable. Initialize $patch variable and remove unnecessary condition.
-
- * Scripts/svn-create-patch:
-
-2010-04-09 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after addition of LayoutTestController method.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
-
-2010-04-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=37368
- Add MiniBrowser.
-
- * MiniBrowser: Added.
- * MiniBrowser/MiniBrowser.vcproj: Added.
- * MiniBrowser/MiniBrowser.xcodeproj: Added.
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj: Added.
- * MiniBrowser/mac: Added.
- * MiniBrowser/mac/AppDelegate.h: Added.
- * MiniBrowser/mac/AppDelegate.m: Added.
- * MiniBrowser/mac/BrowserWindowController.h: Added.
- * MiniBrowser/mac/BrowserWindowController.m: Added.
- * MiniBrowser/mac/English.lproj: Added.
- * MiniBrowser/mac/English.lproj/BrowserWindow.xib: Added.
- * MiniBrowser/mac/English.lproj/InfoPlist.strings: Added.
- * MiniBrowser/mac/English.lproj/MainMenu.xib: Added.
- * MiniBrowser/mac/MiniBrowser-Info.plist: Added.
- * MiniBrowser/mac/MiniBrowser_Prefix.pch: Added.
- * MiniBrowser/mac/main.m: Added.
- * MiniBrowser/win: Added.
- * MiniBrowser/win/BrowserView.cpp: Added.
- * MiniBrowser/win/BrowserView.h: Added.
- * MiniBrowser/win/BrowserWindow.cpp: Added.
- * MiniBrowser/win/BrowserWindow.h: Added.
- * MiniBrowser/win/MiniBrowser.cpp: Added.
- * MiniBrowser/win/MiniBrowser.h: Added.
- * MiniBrowser/win/MiniBrowser.rc: Added.
- * MiniBrowser/win/Resources: Added.
- * MiniBrowser/win/main.cpp: Added.
- * MiniBrowser/win/resource.h: Added.
- * MiniBrowser/win/stdafx.cpp: Added.
- * MiniBrowser/win/stdafx.h: Added.
-
-2010-04-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch attached my patch to the wrong bug
- https://bugs.webkit.org/show_bug.cgi?id=37015
-
- The problem here is that SVN was violating SCM's implicit
- contract of always returning paths relative to the repository root.
- That can easily be fixed by telling SVN that the CWD is the repository root.
-
- When fixing this I realized there are a large number of places in SCM.py where
- we want to consider explicitly passing self.checkout_root as the CWD.
- That would allow scm methods to be executed even when the CWD is not inside
- the scm tree at all, and would also make sure (in the case of SVN) that paths
- returned are relative to the root. Git (almost always) returns paths relative
- to the repository root.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- - Explicitly pass self.checkout_root as cwd in run_status_and_extract_filenames
- - Add a ton of FIXMEs about the need to go back and decide which methods require cwd=self.checkout_root
- and which do not. We'll probably add a helper function to scm (likely SCM._run) which
- always passes cwd=self.checkout_root to Executive.run_command
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Add a test for this change.
- * Scripts/webkitpy/tool/commands/upload.py:
- - Removed the explicit os.chdir to the repository root, since scm.py methods
- should be robust against the cwd not being equal to the root.
-
-2010-04-09 Adam Roben <aroben@apple.com>
-
- Don't return 0 as a JSValueRef
-
- That is an illegal use of the JSC API.
-
- Fixes <http://webkit.org/b/37333> REGRESSION (r57292): :visited tests
- are asserting on debug Windows and GTK builds
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
- Return an "undefined" JSValueRef instead of 0.
-
-2010-04-09 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make DumpRenderTree parallelizable
- https://bugs.webkit.org/show_bug.cgi?id=36899
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (libraryPathForDumpRenderTree): Use DUMPRENDERTREE_TEMP if exist.
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Use DUMPRENDERTREE_TEMP if exist.
- * Scripts/run-webkit-tests:
- - Create a unique temporary directory and pass its path to
- DumpRenderTree with DUMPRENDERTREE_TEMP environment variable.
-
-2010-04-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- <http://webkit.org/b/37326> IDL files are being copied in to the WebCore framework again
-
- Add a script to detect the presence of inappropriate files in the frameworks. At present
- it only looks for .css, .idl and .in files in the top level of WebCore.framework/Resources,
- as these are the only cases we've encountered recently. It can be extended to check the
- other frameworks or for other inappropriate files in the future.
-
- * Scripts/check-for-inappropriate-files-in-framework: Added.
-
-2010-04-08 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add option to build WebKit2 to build-webkit.
-
- * Scripts/build-webkit:
-
-2010-04-08 Darin Adler <darin@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- run-webkit-tests should respect argument order
- https://bugs.webkit.org/show_bug.cgi?id=37257
-
- * Scripts/run-webkit-tests: Changed so that sorting is done only
- on the results of iterating directories. Test order is based on
- what's passed on the command line. Removed code that aimed to
- eliminate duplicates since it can be useful to run the same test
- more than once.
-
-2010-04-07 David Hyatt <hyatt@apple.com>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=24300, don't expose history info via CSS. Add a new method for
- obtaining computed style with :visited info included. This allows layout tests to actually tell that
- :visited is in effect.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (computedStyleIncludingVisitedInfoCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
-
-2010-04-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Enable rebaseline-chromium-webkit-tests to run from a webkit-only
- checkout (i.e., you don't need anything from the Chromium tree checked
- out). This requires us to introduce the concept of a "target"
- port/platform that we use to get configuration information from as well
- as the "running" port that we use to make directories and diff images
- and the "rebaselining" port we use to actually manage baselines.
-
- https://bugs.webkit.org/show_bug.cgi?id=37238
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-04-05 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect.
- https://bugs.webkit.org/show_bug.cgi?id=29431
-
- Added stubs for Mac, win, gtk and wx DRTs to implement setScrollbarPolicy method.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setScrollbarPolicyCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setScrollbarPolicy):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setScrollbarPolicy):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setScrollbarPolicy):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setScrollbarPolicy):
-
-2010-04-01 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by David Hyatt.
-
- [Qt] REGRESSION:(r50665) QWebFrame::setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff) has no effect.
- https://bugs.webkit.org/show_bug.cgi?id=29431
-
- Make possible to DRT to set scrollbar policies (on, off or auto).
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setScrollbarPolicy):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleScrollbars):
- (LauncherWindow::createChrome):
-
-2010-04-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests should give a percent complete indication
- https://bugs.webkit.org/show_bug.cgi?id=37258
-
- Because it's awesome.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-08 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Add back the --target option because it's needed by the downstream
- Chromium bots.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests should understand set-webkit-configuration
- https://bugs.webkit.org/show_bug.cgi?id=37252
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename target to configuration in new-run-webkit-tests to match the rest of WebKit
- https://bugs.webkit.org/show_bug.cgi?id=37251
-
- The rest of our tools call --debug or --release the configuration.
- It's confusing to call it target in this script.
-
- * Scripts/webkitpy/layout_tests/driver_test.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-04-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove depricated op.popen2 call in new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=37249
-
- Python complains that this API is depricated. We already solved this
- problem in executive.py.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-04-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests crashes when run on a 64-bit machine
- https://bugs.webkit.org/show_bug.cgi?id=37248
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - The code was trying to always run the 32-bit intel version
- of the DumpRenderTree binary. DRT does not build 32-bit on 64-bit
- machines so that makes no sense. This may have made sense for test_shell
- at some point, but I think we should just remove this for DRT.
-
-2010-04-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- WebKit Apache configs only listen on IPv4 addresses, causing random timeouts
- https://bugs.webkit.org/show_bug.cgi?id=37104
-
- Add warnings that the partial support for specifying what port numbers
- apache should bind to is even more broken after this fix.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2010-04-07 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- LayoutTestController::m_handlesAuthenticationChallenges isn't initialized
- https://bugs.webkit.org/show_bug.cgi?id=37190
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
-
-2010-03-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add webkit-patch command to crawl buildbot history and find when tests
- started to fail.
- https://bugs.webkit.org/show_bug.cgi?id=36911
-
- This is a very bare-bones implementation, which works, but isn't pretty.
- We will need further re-factoring and improvement to this code, but
- after long discussions with Adam, I think it's best that we land this
- and iterate from there.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- - Add revision_build_pairs_with_results for cleaner code and possible
- optimization of this command.
- - Return None if a build number can't be found for a revision in
- build_for_revision
- - Separate out suspect_revisions_for_transition for re-use by
- FailureReason
- - Add LayoutTestResults.failing_tests() and make our parsing code
- explict about what tables it accepts.
- * Scripts/webkitpy/tool/commands/queries.py:
- - Move _print_blame_information_for_commit out of WhatBroke for re-use
- by FailureReason.
- - Add FailureReason command which can crawl a given builder and explain
- why it is currently red on a per-test basis.
-
-2010-04-06 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add DumpRenderTree.gyp, and some small fixes
- https://bugs.webkit.org/show_bug.cgi?id=37137
-
- - Add DumpRenderTree.gyp
- - Remove some dependencies to base/string_util.h,
- base/compiler_specific.h, base/file_path.h, base/file_util.h,
- base/message_loop.h, base/sys_string_conversions.h,
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Added.
- * DumpRenderTree/chromium/CppVariant.cpp:
- (CppVariant::toStringVector):
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::keyDown):
- (EventSender::scheduleAsynchronousClick):
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::pathToLocalResource):
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::markedRange):
- (TextInputController::selectedRange):
-
-2010-04-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Write stack traces into the results directory for new-run-webkit-tests,
- instead of writing them alongside the test file.
-
- https://bugs.webkit.org/show_bug.cgi?id=36504
-
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
-
-2010-04-06 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed build fix.
-
- Enable pixel tests by default in new-run-webkit-tests unless
- explicitly set by the port or by the command line. This was broken in
- the fix for bug 36801 (rev. 57173).
-
- https://bugs.webkit.org/show_bug.cgi?id=37184
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Disable pixel tests on the mac port by default.
-
- Also, revamp the way we check for pixel tests being enabled or
- disabled. We now look for options.pixel_tests instead of
- options.no_pixel_tests, and we have the "--pixel-tests" (force enable)
- and "--no-pixel-tests" (force disable) flags.
-
- https://bugs.webkit.org/show_bug.cgi?id=36801
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_test.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-04-06 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Added the iPhone and iPad latest user agent in QtLauncher UA switcher
- https://bugs.webkit.org/show_bug.cgi?id=37159
-
- * QtLauncher/useragentlist.txt:
-
-2010-04-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add current user-agent string for Symbian for QtLauncher
- https://bugs.webkit.org/show_bug.cgi?id=37131
-
- * QtLauncher/useragentlist.txt:
-
-2010-04-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Explain how to handle rollout patches
- https://bugs.webkit.org/show_bug.cgi?id=37139
-
- We need to set expectations for how long landing rollout patches with
- the commit-queue takes. The commit-queue is optimized for safety, not
- performance. Also, give folks an alternative way to land patches
- quickly.
-
- In addition, improve our testing of add_patch_to_bug by having
- MockBugzilla log. This caused me to tighten a bunch of tests and
- notice that one of our tests wasn't being run.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
-
-2010-04-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Turns out commit_info.committer() can be None
- https://bugs.webkit.org/show_bug.cgi?id=37106
-
- When the committer isn't in committers.py, the committer() property on
- commit_info can be None. We need to handle that case gracefully.
-
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-04-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] [Symbian] Build fix for Dumprendertree if Qt printing is not supported
- https://bugs.webkit.org/show_bug.cgi?id=37082
-
- Use the QT_NO_PRINTER guard to flag QPrinter dependent code.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dryRunPrint):
-
-2010-04-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- SheriffBot should force_build builders that are idle and have failed exactly once
- https://bugs.webkit.org/show_bug.cgi?id=37059
-
- We can get into a deadlocked state where the commit-queue is stopped
- because the builders are red but the SheriffBot hasn't taken action
- because the builder has failed only once. The SheriffBot should force
- build idle builders that have failed exactly once to either turn the
- tree green again (if the test was flaky) or trigger the "failed twice"
- remedies (IRC and bug posts).
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-05 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Fixed check-webkit-style issue where the script was prematurely
- exiting when encountering deleted files in patches.
-
- https://bugs.webkit.org/show_bug.cgi?id=37122
-
- * Scripts/webkitpy/style/checker.py:
- - Changed non-existent file message from ERROR to WARN.
- - StyleChecker.check_file() no longer raises an exception when
- a file is not found.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated unit tests as necessary.
-
-2010-04-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- SheriffBot should include blamelist when posting to bugs
- https://bugs.webkit.org/show_bug.cgi?id=37113
-
- When posting on bugs, we should include the full list of SVN revisions
- that caused the regression to folks have a better sense of whether they
- are to blame.
-
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-05 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed after discussion with Adam, Darin, and Eric.
-
- Deleted the auto-install directory since it is no longer needed in
- source control (it is auto-generated).
-
- Also added webkitpy/thirdparty/autoinstalled to webkitpy/thirdparty's
- svn:ignore property.
-
- * Scripts/webkitpy/thirdparty/autoinstalled: Removed.
-
-2010-04-05 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adele Peterson.
-
- Test case for <http://webkit.org/b/37115> / <rdar://problem/7829331>.
- REGRESSION(r56989): Crash in Mail in WebCore::Position::isCandidate when deleting block using block deletion UI
-
- Add a JavaScript hook in DRT to call through to WebView's -setEditable:. This is required in order to reproduce
- the crash.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setWebViewEditableCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setWebViewEditable):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setWebViewEditable):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setWebViewEditable):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setWebViewEditable):
- (LayoutTestController::layerTreeAsText):
-
-2010-04-05 Darin Adler <darin@apple.com>
-
- Ignore more files the Python tools strew about the working directory.
-
- * Scripts/webkitpy: Added property svn:ignore.
- * Scripts/webkitpy/common: Added property svn:ignore.
- * Scripts/webkitpy/common/checkout: Added property svn:ignore.
- * Scripts/webkitpy/common/config: Added property svn:ignore.
- * Scripts/webkitpy/common/net: Added property svn:ignore.
- * Scripts/webkitpy/common/thread: Added property svn:ignore.
- * Scripts/webkitpy/python24: Added property svn:ignore.
- * Scripts/webkitpy/thirdparty/autoinstalled: Modified property svn:ignore.
- * Scripts/webkitpy/tool/bot: Added property svn:ignore.
-
-2010-04-05 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add Vitaly Repeshko as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-05 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Update kenne's IRC nick to his registered nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-05 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- assorted helper functions and cleanup of git utilities
- https://bugs.webkit.org/show_bug.cgi?id=37103
-
- * Scripts/webkitpy/common/checkout/scm.py:
- No code currently uses the optional dry_run argument. So removing it.
- Change all uses of "trunk" to read the correct value out of the git config.
- Made the dcommit call actually get called when dry_run==true.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/net/credentials.py:
- Move the git config call into scm.
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/system/executive.py:
- If return_exit_code==true, don't error out, just return the exit_code.
-
-2010-04-05 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- prepare-ChangeLog should take a merge-base for which git branch to diff against.
- https://bugs.webkit.org/show_bug.cgi?id=36394
-
- * Scripts/prepare-ChangeLog:
-
-2010-04-05 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Removed the PatchStyleErrorHandler class and incorporated its
- functionality into the DefaultStyleErrorHandler class.
-
- https://bugs.webkit.org/show_bug.cgi?id=37067
-
- * Scripts/webkitpy/style/checker.py:
- - In the StyleChecker class:
- - Added a line_number parameter to the check_file() method.
- - Renamed the handle_style_error parameter to
- mock_handle_style_error to be consistent with the other mock_*
- parameter names.
- - Added a mock_check_file parameter to the check_patch() method
- to facilitate unit testing the changes in this patch.
- - Rewrote the check_patch() method with the patch-parsing logic
- taken from the PatchStyleErrorHandler class.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added a StyleCheckerCheckFileBase class and sub-classed the
- existing StyleCheckerCheckFileTest class from it.
- - Added a StyleCheckerCheckPatchTest class to unit-test the
- rewritten check_patch() method.
- - Removed the vestigial __main__ code at the bottom of the file.
- This is left over from when check-webkit-style was implemented
- as a module and a wrapper module.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Added an optional line_numbers parameter to the
- DefaultStyleErrorHandler class constructor and adjusted the
- __call__() method as necessary.
- - Removed the PatchStyleErrorHandler class.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Removed the PatchStyleErrorHandlerTest class which unit-tested
- the PatchStyleErrorHandler class which is being removed in this
- patch.
- - Added a test_line_numbers() test method to the
- DefaultStyleErrorHandlerTest class to test use of the
- DefaultStyleErrorHandler's new line_numbers attribute.
-
-2010-04-05 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Tighten SheriffBot's flaky test detector
- https://bugs.webkit.org/show_bug.cgi?id=37063
-
- Instead of just looking for two sequential red builds, look for two
- sequential failures of the same test. This should reduce sheriffbot
- false positive substantially.
-
- I'm landing this change unreviewed because I've noticed SheriffBot
- triggering a lot more false positives now that we've expanded the set
- of core builders. I've tried to take Eric's comments on Bug 37063 into
- account. I'm happy to iterate on this patch tomorrow once Eric wakes
- up.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-04-04 John Gregg <johnnyg@google.com>
-
- Unreviewed, add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-04 Robert Hogan <robert@webkit.org>
-
- Unreviewed, add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-04 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, adding my IRC nickname to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-04 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored check-webkit-style's option-parsing code.
-
- https://bugs.webkit.org/show_bug.cgi?id=37064
-
- * Scripts/check-webkit-style:
- - Moved the "WebKit checkout not found" check from
- ArgumentParser.parse() to the calling code.
- - Moved the --git-commit argument validation from the calling
- code to ArgumentParser.parse().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated a unit test as necessary.
-
- * Scripts/webkitpy/style/optparser.py:
- - Renamed ArgumentParser._exit_with_help() to _parse_error()
- and made its error_message parameter required.
- - Removed the found_checkout parameter from ArgumentParser.parse().
- - Removed the "WebKit checkout not found" check and moved it
- to the calling code.
- - Added --git-commit argument checking.
-
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Adjusted the import statements to be fully qualified.
- - Changed the ArgumentParserTest class to inherit from
- LoggingTestCase, and updated the class as necessary.
- - Added a unit-test for the --git-commit validation.
- - Added unit tests for the --git-diff and --git-since variants
- of --git-commit.
-
-2010-04-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- The check-webkit-style script now logs an ERROR and exits when
- encountering a file path that does not exist. Previously, it failed
- silently on such paths.
-
- https://bugs.webkit.org/show_bug.cgi?id=36957
-
- * Scripts/webkitpy/common/system/logtesting.py:
- - Added a FIXME to rename the LoggingTestCase class to
- LoggingTestCaseBase.
-
- * Scripts/webkitpy/style/checker.py:
- - In the StyleChecker.check_file() method:
- - Added a mock_os_path_exists parameter.
- - Renamed the process_file parameter to mock_process_file.
- - Added logic to log an error and exist if the given path does
- not exist.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Refactored the StyleCheckerCheckFileTest class slightly to
- inherit from LoggingTestCase.
- - Added a test method to unit-test the case of a file that
- does not exist.
- - Adjusted the other test methods as necessary.
-
-2010-04-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add Tiger Bot to the list of "core builders" (builders which block the commit-queue when red)
- https://bugs.webkit.org/show_bug.cgi?id=33289
-
- Add Tiger and SnowLeopard Tests to the core builders. This is a bit of
- an experiment now that the bots are green. Hopefully we can keep them
- on the list and have the tree stay greener.
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Have Eric and Adam watch the SheriffBot
- https://bugs.webkit.org/show_bug.cgi?id=37054
-
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- commit-queue should ignore builders when landing rollouts
- https://bugs.webkit.org/show_bug.cgi?id=37051
-
- When we moved the "builders are red" check into the master process, we
- forgot about rollouts. I thought we had a test covering this case, but
- looking at the test, it was a bit too loose. I added a new test and
- introduced some new logging technology into MockTool to make the test
- tighter.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-04-02 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- sherrifbot should ensure that the rollout reason doesn't start with - (and fix webkit-patch upload).
- https://bugs.webkit.org/show_bug.cgi?id=37030
-
- * Scripts/webkitpy/tool/bot/sheriff.py: Ensure that the rollout reason doesn't
- start with -.
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: A test with a rollout
- reason which starts with -.
- * Scripts/webkitpy/tool/steps/createbug.py: Fix webkit-patch upload.
-
-2010-04-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Fixed check-webkit-style to recognize the short form of the
- --verbose option, as stated in --help.
-
- * Scripts/check-webkit-style:
- - Tweaked one line.
-
-2010-04-02 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix for DumpRenderTree after addition of layerTreeAsText.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::layerTreeAsText):
-
-2010-04-02 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Accept XHTML-MP content type as XHTML content
- https://bugs.webkit.org/show_bug.cgi?id=34262
-
- Register xhtmlmp file extension as the new type
- for XHTML-MP test content.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/port/lighttpd.conf:
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- create-rollout doesn't fill out ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=37010
-
- The contract between apply_reverse_diff and PrepareChangeLogForRevert
- was unclear. I broke filling out the ChangeLog during rollout earlier
- when I changed apply_reverse_diff to revert the ChangeLogs because
- PrepareChangeLogForRevert thought that it was supposed to do that.
- I've now taught PrepareChangeLogsForRevert the new contract.
-
- It's unclear to me how to test this change because it's essentially an
- integration issue that requires the file system. At some point we
- should think about a testing strategy for integration. As the system
- becomes larger, we're running into more of these issues.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add cr-win-ews to QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=37004
-
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-04-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Unit-test networktransaction.py's log messages, and add a base
- class to make unit-testing log messages even easier.
-
- https://bugs.webkit.org/show_bug.cgi?id=36958
-
- The purpose of this patch is also to provide a mini-tutorial on
- how to unit-test Python logging.py messages.
-
- * Scripts/webkitpy/common/net/networktransaction_unittest.py:
- - Unit-tested the log messages in test_retry().
-
- * Scripts/webkitpy/common/system/logtesting.py:
- - Adjusted the LogTesting class by moving the code that clears
- the array of log messages into a finally block. This prevents
- redundant AssertionErrors from getting rendered to the screen
- while running unit tests.
- - Added a LoggingTestCase class so the setUp() and tearDown()
- methods do not need to be implemented in order to test logging.
- Rather, TestCase classes can simply inherit from this class.
-
-2010-04-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Re-wrote check-webkit-style's argument parsing code to use
- Python's optparser module and more uniform error-handling logic.
-
- https://bugs.webkit.org/show_bug.cgi?id=34676
-
- * Scripts/webkitpy/style/optparser.py:
- - Removed "option help" from check-webkit-style's usage string
- since that is provided separately by the OptionParser class.
- - Also changed the usage string from a function to a constant
- string _USAGE.
- - Added an _EPILOG string which renders after OptionParser's
- usage string and option help.
- - In the ArgumentParser class:
- - Changed the constructor's stderr_write parameter to a
- mock_stderr since the OptionParser accepts a sys.stderr
- substitute rather than a sys.stderr.write substitute.
- - Changed the constructor to set a _parser data attribute with
- an OptionParser instance.
- - Added a _create_option_parser() method which instantiates
- the OptionParser.
- - Updated _exit_with_help() to interact with the OptionParser's
- help method.
- - Updated the parse() method as necessary. Also changed the
- raising of ValueErrors to calls to _exit_with_help().
-
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Removed the CreateUsageTest class since the create_usage method
- was replaced by a constant string.
- - Added a _MockStdErr class to the ArgumentParserTest class.
- - Updated the unit tests as necessary.
-
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The master commit-queue process should take responsibility for checking that the builders are green
- https://bugs.webkit.org/show_bug.cgi?id=37009
-
- We had a failure where the child process noticed that the builders were
- red. We've always had this race condition, but the new optimistic
- design made it easier to trigger.
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Tweak rollout changelog to pass ValidateReviewer check
- https://bugs.webkit.org/show_bug.cgi?id=37019
-
- We need to use the magic word "unreviewed" to make the commit-queue
- happy when landing rollouts.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2010-04-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Removed duplicate ChangeLog entry.
-
-2010-04-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- To the Python 2.4 error message, added a link to the wiki page
- that contains instructions on how to upgrade.
-
- * Scripts/test-webkitpy:
- - Eliminated a use of the ternary operator in configure_logging()
- to let the version warning display in case of Python 2.4.
-
- * Scripts/webkitpy/python24/versioning.py:
- - Added this link to the error text:
- http://trac.webkit.org/wiki/PythonGuidelines
-
- * Scripts/webkitpy/python24/versioning_unittest.py:
- - Updated unit test text.
-
-2010-04-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Record the IRC nick of folks who request rollouts
- https://bugs.webkit.org/show_bug.cgi?id=36999
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add cr-win-ews
- https://bugs.webkit.org/show_bug.cgi?id=36974
-
- Adds support for an Early Warning System for Chromium on Linux. The
- interface to the Chromium port is the same on every platform, so we
- don't need to create a new Port object for this queue.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Using a failure exit code when failing to load a required import
- https://bugs.webkit.org/show_bug.cgi?id=37000
-
- Well spotted by Mark Rowe.
-
- * Scripts/webkitpy/common/system/user.py:
-
-2010-04-01 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rewrote the revision (r56942) to disable the 79 character line
- length limit Python/PEP8 style check.
-
- https://bugs.webkit.org/show_bug.cgi?id=33639#c39
-
- This rewrite puts the disabling not in the PythonProcessor but
- in the calling code's default filter rule configuration. This
- allows the user to check line-length style from the command-line
- if desired.
-
- * Scripts/webkitpy/style/checker.py:
- - Added "-pep8/E501" to the _BASE_FILTER_RULES configuration
- variable to disable the line-length check.
- - Added "-pep8/E501" to the list of recognized style categories
- to permit the category to be checked from the command line.
-
- * Scripts/webkitpy/style/processors/python.py:
- - Reverted r56942: http://trac.webkit.org/changeset/56942
-
-2010-04-01 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Add FileThread for async file operation support in FileReader and FileWriter
- https://bugs.webkit.org/show_bug.cgi?id=36896
-
- Add options to enable FILE_READER and FILE_WRITER support.
-
- * Scripts/build-webkit:
-
-2010-04-01 Kent Tamura <tkent@chromium.org>
-
- Unreviewed. Add missing license header.
-
- * DumpRenderTree/chromium/TestShellMac.mm:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Improve the error handling in rollout a bit
- https://bugs.webkit.org/show_bug.cgi?id=36995
-
- This patch does a few things to make the error handling in rollout a
- bit more robust.
-
- * Scripts/webkitpy/common/checkout/api.py:
- The old logic here was wrong. We don't want to resolve the
- ChangeLogs (that would remove the old ChangeLog entry). Instead,
- we want to revert the ChangeLogs so we can fill them with the new
- message.
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- Update test expectations because we're using a different mock object.
- * Scripts/webkitpy/tool/commands/download.py:
- - Added an update command to make updating from the SheriffBot more
- robust.
- - Now that we have CommitInfo, we can automatically CC the
- responsible parties on the bug we create.
- - Re-ordered the steps in create-rollout. Our original thinking
- was that we always wanted to create the bug, but that's not
- really true given how things appear to be playing out. If we
- fail to apply the reverse diff, we don't want to create the bug.
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- - Use the new, more robust update command.
- * Scripts/webkitpy/tool/steps/createbug.py:
- Allow commands to pre-load who they want to be CCed on a new bug.
-
-2010-04-01 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add TestShell and WebViewHost class, main(), and so on
- https://bugs.webkit.org/show_bug.cgi?id=36814
-
- This change introduces:
- - WebViewHost class
- It's an implementation of some delegates required by Chromium
- WebKit API, and manages painting of a WebView. It's base on
- src/webkit/tools/test_shell/test_webview_delegate.{cc,h} of
- Chromium rev.40492.
- - TestShell class
- The TestShell instance holds global states of DumpRenderTree process.
- Unlike TestShell class of Chromium test_shell, TestShell instance is
- created just once.
- - DumpRenderTree.cpp
- The program entry.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp: Added.
- * DumpRenderTree/chromium/TestShell.cpp: Added.
- * DumpRenderTree/chromium/TestShell.h: Added.
- * DumpRenderTree/chromium/TestShellMac.mm: Added.
- * DumpRenderTree/chromium/WebViewHost.cpp: Added.
- * DumpRenderTree/chromium/WebViewHost.h: Added.
- * DumpRenderTree/chromium/config.h: Added.
-
-2010-04-01 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- sheriffbot rollout should verify that the svn revision is a number.
- https://bugs.webkit.org/show_bug.cgi?id=37001
-
- * Scripts/webkitpy/common/net/bugzilla.py: Allow for the message to be None.
- * Scripts/webkitpy/tool/bot/sheriff.py: Did verification that svn revision
- is a number. Fixed the imports (since the files uses ScriptError and log)
- and a typo.
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: Added a test to verify
- the behavior.
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Print an error message for readline bogosity in MacPorts
- https://bugs.webkit.org/show_bug.cgi?id=36979
-
- * Scripts/webkitpy/common/system/user.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't pass --non-interactive to create-rollout
- https://bugs.webkit.org/show_bug.cgi?id=36989
-
- It turns out you can't pass --non-interactive to create-rollout. Also,
- improve our error reporting slighly to catch the case where we error
- out after creating the rollout bug.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
-
-2010-04-01 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch can incorrectly think the working directory is modified
- https://bugs.webkit.org/show_bug.cgi?id=36985
-
- If a file's modification time is modified, but the contents are not,
- then diff-index will think the file has been modified unless you do
- some crazy update-index call. Instead, call diff --name-only, which
- has the index update builtin.
-
- Tried to write a test, but could not reproduce this in a unittest.
- To test manually:
- touch file-in-repo
- git diff-index HEAD
- git diff HEAD --name-only
-
- The diff-index call incorrectly shows file-in-repo as modified.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add rollout command to sheriffbot
- https://bugs.webkit.org/show_bug.cgi?id=36986
-
- This IRC command creates a new bug an attaches a rollout patch. To
- actually commit the rollout, a committer needs to mark the patch
- commit-queue+ in bugs.webkit.org.
-
- Also, factored out some of the logic from the queue into a separate
- object for easier testing.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py: Added.
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py: Added.
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2010-04-01 Eric Seidel <eric@webkit.org>
-
- Unreviewed, only ignoring chatty style errors.
-
- check-webkit-style: WebKit needs a python style checker
- https://bugs.webkit.org/show_bug.cgi?id=33639
-
- Remove the 79 char line limit by ignoring
- pep8/E501. Because we have our own report_error
- implementation we have to ignore E501 by hand
- instead of passing --ignore=E501.
-
- Right now over 1400 lines of our existing python
- fail E501 so this rule just generates needless noise.
- The rest of WebKit has no wrapping rule so it makes
- little sense for our Python to differ here.
-
- * Scripts/webkitpy/style/processors/python.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add cmarrin's IRC nickname.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- EWS spins hot when unable to build
- https://bugs.webkit.org/show_bug.cgi?id=36981
-
- The problem is that the queue engine things we have more work to do,
- but the bot isn't actually able to do anything. After this change, we
- back off the usual amount.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-04-01 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Added layerTreeAsText function to DRT (for Mac)
- https://bugs.webkit.org/show_bug.cgi?id=36782
-
- This is the DRT side. It exposes the call to JavaScript
- through the LayoutTestController.
-
- * DumpRenderTree/LayoutTestController.cpp:Platform independent JavaScript shim
- (layerTreeAsTextCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:Mac specific plumbing to WebKit
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:Windows specific plumbing to WebKit
- (LayoutTestController::layerTreeAsText):
-
-2010-04-01 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after addition of JavaScriptCore/wtf/text directory.
-
- * wx/build/settings.py:
-
-2010-04-01 Jian Li <jianli@chromium.org>
-
- Rubber-stamped by David Levin.
-
- Add myself to the reviewers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Turns out the Chromium Windows bots don't have pdevenv installed.
-
- * Scripts/webkitdirs.pm:
-
-2010-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- Let Chromium Windows build with Visual Studio Express
- https://bugs.webkit.org/show_bug.cgi?id=36919
-
- This is horrible, horrible copy/paste code, but that seems to be the
- way of webkitdirs.pm. :(
-
- Someone needs to go through an cleanup this code, but I don't have the
- heart to do it in this patch.
-
- * Scripts/webkitdirs.pm:
-
-2010-04-01 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Add myself to the committers list.
- https://bugs.webkit.org/show_bug.cgi?id=36953
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-04-01 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Add Snow Leopard Release bot to the list of "core builders" (builders which stop the commit-queue when they turn red)
- https://bugs.webkit.org/show_bug.cgi?id=33292
-
- Just adding the "Build" builder for now.
- We'll add the "Test" builders when the tests
- are less flaky.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-04-01 Yury Semikhatsky <yurys@chromium.org>
-
- Reviewed by David Levin.
-
- Add myself to the reviewers list.
-
- https://bugs.webkit.org/show_bug.cgi?id=36935
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Dave Levin.
-
- Added Python style checking to check-webkit-style using
- the third-party pep8 module (via autoinstall).
-
- https://bugs.webkit.org/show_bug.cgi?id=33639
-
- * Scripts/webkitpy/style/checker.py:
- - Added PYTHON to FileType.
- - Updated ProcessorDispatcher to return a PythonProcessor
- for *.py files.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the ProcessorDispatcher unit tests for *.py files.
-
- * Scripts/webkitpy/style/processors/python.py: Added.
- - Added PythonProcessor class.
-
- * Scripts/webkitpy/style/processors/python_unittest.py: Added.
- - Added PythonProcessor unit tests.
-
- * Scripts/webkitpy/style/processors/python_unittest_input.py: Added.
- - Added a sample Python file to test the PythonProcessor.process()
- code path (since pep8 accepts a file path).
-
- * Scripts/webkitpy/style/unittests.py:
- - Updated the style unit test file to import python_unittest.py.
-
- * Scripts/webkitpy/style_references.py:
- - Adjusted style references to import pep8.
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Dave Levin.
-
- Rewrote autoinstall.py to support unzipping *.zip files after
- download, unzipping and extracting *.tar.gz files after download,
- and copying installed files to a given destination directory.
-
- https://bugs.webkit.org/show_bug.cgi?id=35163
-
- These changes will let us autoinstall pep8.py from the web and put
- our third-party autoinstalled code in an explicit directory like
- webkitpy/thirdparty/autoinstalled. These changes should also speed
- up the execution of autoinstalled *.zip packages slightly since
- *.pyc files cannot be generated when importing from zipped
- packages using the current autoinstall.
-
- * Scripts/test-webkitpy:
- - Addressed the FIXME to enable auto-install logging once
- autoinstall was rewritten not to log as verbosely.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- - Updated ircbot and irclib import statements.
-
- * Scripts/webkitpy/common/net/networktransaction.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/common/net/networktransaction_unittest.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/common/system/autoinstall.py: Added.
- - Added AutoInstaller class.
- - Added sample/testing usage to the __main__ block.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- - Updated the autoinstall lines to use the new autoinstall methods.
- - Added pep8.py to the list of auto-installed packages.
- - Added a README file to the target autoinstallation directory
- so users know that the directory is safe to delete.
-
- * Scripts/webkitpy/thirdparty/autoinstall.py: Removed.
- - This is replaced by the rewritten autoinstall
- webkitpy/common/system/autoinstall.py.
-
- * Scripts/webkitpy/thirdparty/autoinstalled/__init__.py: Removed.
- - The target autoinstallation directory is now auto-generated.
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Tweak webkitpy's logtesting.LogTesting class to get more mileage out
- of our unit tests that test log messages.
-
- https://bugs.webkit.org/show_bug.cgi?id=36886
-
- This patch adds to the LogTesting class's tearDown() method a line
- asserting that the array of remaining log messages is empty. This
- ensures that no extra log messages are getting logged that the caller
- might not be aware of or may have forgotten to check for.
-
- * Scripts/webkitpy/common/system/logtesting.py:
- - Modified the tearDown() method as described above.
- - Also modified the assertMessages() method to clear the array
- of log messages after asserting.
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Added support for a --verbose-logging flag to test-webkitpy.
-
- https://bugs.webkit.org/show_bug.cgi?id=36429
-
- Verbose logging is useful for debugging test-webkitpy code that
- runs before the actual unit tests -- things like autoinstalling and
- unit-test auto-detection logic. This is different from verbose
- logging of the unit tests themselves (which corresponds to the
- unittest module's --verbose flag).
-
- * Scripts/test-webkitpy:
- - In the configure_logging() method--
- - Added an is_verbose_logging parameter that sets the logging
- level to logging.DEBUG instead of logging.INFO.
- - Changed the method to throttle the logging level on the
- root logger's handler instead of directly on the root logger
- itself.
- - Enabled logging of the autoinstall module when the flag is set.
-
- * Scripts/webkitpy/thirdparty/autoinstalled/__init__.py:
- - Added a work-around for a bug in Python 2.6's logging module
- that was discovered while working on this patch.
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Enabled Python's logging module for webkit-patch, and replaced
- deprecated_logging with Python logging in networktransaction.py.
- This eliminates some spurious output when running test-webkitpy.
-
- https://bugs.webkit.org/show_bug.cgi?id=36725
-
- * Scripts/webkit-patch:
- - Replaced the configure_logging() function with a call to
- the new logutils.configure_logging() function.
-
- * Scripts/webkitpy/common/net/networktransaction.py:
- - Replaced the use of deprecated_logging with Python logging.
-
- * Scripts/webkitpy/common/system/logutils.py:
- - Added _default_handlers() which creates the default logging
- handler for webkitpy.
- - Added configure_logging() which configures default logging
- for webkitpy.
-
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- - Added unit tests for logutils.configure_logging().
-
- * Scripts/webkitpy/style/checker.py:
- - Refactored check-webkit-style's configure_logging() method
- to call the new logutils.configure_logging().
-
- * Scripts/webkitpy/style_references.py:
- - Updated references as necessary.
-
-2010-03-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land fails if not run from the root directory
- https://bugs.webkit.org/show_bug.cgi?id=35822
-
- The root of the problem was that ChangeLog.__init__ expects a path
- relative to the current working directory, and SCM expects to
- return paths relative to the SCM root. Fix it by converting from
- SCM-relative to absolute paths in Checkout.modified_changelogs
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add more tests for webkitpy.common.checkout
- https://bugs.webkit.org/show_bug.cgi?id=36926
-
- We don't have a great way of testing checkout, sadly.
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION: EWS crashes on failure
- https://bugs.webkit.org/show_bug.cgi?id=36924
-
- Turns out we need to pass one more argument. My test is kind of lame,
- but at least it's there.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Fixed typo in WebKitTools/ChangeLog: opsys -> ospath.
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make the EWS go faster by being optimistic
- https://bugs.webkit.org/show_bug.cgi?id=36916
-
- Have the EWS be optimistic that a patch will correctly build. This
- should speed up the common case by not requiring two builds for every
- patch.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add the ability to restart sheriffbot from IRC
- https://bugs.webkit.org/show_bug.cgi?id=36909
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add win-ews to QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=36876
-
- The win-ews is still experimental, but it seems to be more or less
- running. We should show its results to the people.
-
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-03-30 Victor Wang <victorw@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Update rebaseline tool to check the release image diff binary and
- fallback to debug if the release version does not exist.
-
- https://bugs.webkit.org/show_bug.cgi?id=36245
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-03-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach buildbot.py how to parse builder activity from /one_box_per_builder
- https://bugs.webkit.org/show_bug.cgi?id=36898
-
- I also removed some obsolete FIXMEs and
- refactored one_box_per_builder parsing into multiple
- methods for easier reading.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-03-31 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix logging in new-run-webkit-tests so that we don't report IMAGE
- expected failures as unexpected passes when we run with pixel tests
- disabled.
-
- This change splits some of the logic embedded into the TestExpectations
- classes out into separate pure functions (result_was_expected,
- remove_image_failures) to make them easier to test. This also adds
- a parameter to matches_an_expected_result() to indicate whether or
- not pixel test results should be included in the expectations.
-
- https://bugs.webkit.org/show_bug.cgi?id=36771
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-03-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- In webkitpy, refactored two calls to os.path.relpath() replacements
- to use a common method.
-
- https://bugs.webkit.org/show_bug.cgi?id=36891
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- - Replaced the relpath implementation with a call to
- webkitpy.common.system.ospath.relpath().
-
- * Scripts/webkitpy/common/system/ospath.py: Added.
- - Moved the relpath() implementation from style/main.py.
-
- * Scripts/webkitpy/common/system/ospath_unittest.py: Added.
- - Moved the relpath() unit tests from style/main_unittest.py.
-
- * Scripts/webkitpy/style/main.py:
- - Replaced the relpath implementation with a call to
- webkitpy.common.system.ospath.relpath().
-
- * Scripts/webkitpy/style/main_unittest.py:
- - Moved the relpath unit tests to ospath_unittest.py.
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a Builder.force_build method
- https://bugs.webkit.org/show_bug.cgi?id=36875
-
- We plan to eventually use this in SheriffBot to break deadlocks created
- by flaky tests.
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch reads wrong bug url from unified diff context
- https://bugs.webkit.org/show_bug.cgi?id=36477
-
- Instead of trying to figure out the bug_id from the diff, we should
- just get the information from the Checkout object, which understands
- these concepts.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-03-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch commit-queue should land patches optimistically
- https://bugs.webkit.org/show_bug.cgi?id=34187
-
- This patch adds an optimistic path to commit-queue and a "fail twice"
- requirement for rejecting patches. That means we'll land good patches
- faster (via the optmistic first run) and we'll reject many fewer
- patches due to flaky tests.
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-03-31 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Custom user agent for user agent switcher
- https://bugs.webkit.org/show_bug.cgi?id=36757
-
- * QtLauncher/main.cpp:
- (LauncherWindow::showUserAgentDialog):
-
-2010-03-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- path to committers.py in commit-queue rejection message is wrong
- https://bugs.webkit.org/show_bug.cgi?id=36865
-
- This fix would have only been 3 lines long if we had
- 1. Had access to an SCM object or tool to give us the checkout root
- 2. Been able to depend on Python 2.6
- Instead I've added a bunch of hack code, but at least now
- we should never have to update this string again as the location
- of committers.py is fully dynamically discovered. :p
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
-
-2010-03-31 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed test fix for r56809.
-
- webkit-patch what-broke throws exception
- https://bugs.webkit.org/show_bug.cgi?id=36852
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
-
-2010-03-30 Chris Jerdonek <cjerdonek@webkit.org>
-
- Rubber stamped by Dave Levin.
-
- Made check-webkit-style less chatty.
-
- Examples include:
- - https://bugs.webkit.org/show_bug.cgi?id=36866#c4
- - https://bugs.webkit.org/show_bug.cgi?id=36472#c9
-
- * Scripts/webkitpy/style/checker.py:
- - Changed unrecognized file type log message from info to debug.
-
-2010-03-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after new method added.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
-
-2010-03-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch what-broke throws exception
- https://bugs.webkit.org/show_bug.cgi?id=36852
-
- * Scripts/webkitpy/common/checkout/api.py: Add missing import StringIO.
- * Scripts/webkitpy/common/checkout/api_unittest.py: Test the function which previously threw and exception.
-
-2010-03-30 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=36616
- Dvorak-Qwerty keyboard layout gives unexpected results in javascript keydown
-
- https://bugs.webkit.org/show_bug.cgi?id=36797
- For non-Roman layouts, keydown Event.keyCode is always 0
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:withLocation:]): Generate a correct keyCode
- for keys used in tests (we used to always pass 0 for 'A').
-
-2010-03-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement win-ews
- https://bugs.webkit.org/show_bug.cgi?id=36809
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2010-03-30 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Adjusted test-webkitpy to delete all orphaned *.pyc files
- from webkitpy/ prior to importing any modules from webkitpy.
- This ensures that no import statements in webkitpy falsely
- succeed because of leftover *.pyc files.
-
- https://bugs.webkit.org/show_bug.cgi?id=36599
-
- * Scripts/test-webkitpy:
- - Added _clean_pyc_files() to delete orphaned *.pyc files
- from a directory.
- - Added _clean_webkitpy_with_test() to call and test
- _clean_pyc_files().
- - Moved the "import webkitpy.python24.versioning" statement
- from the top of the module to the init() method -- immediately
- after the call to _clean_webkitpy_with_test().
-
-2010-03-30 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [Chromium-Win] subprocess.call should be called with stdin=open(os.devnull,'r')
- https://bugs.webkit.org/show_bug.cgi?id=36811
-
- subproess.Popen() on Python 2.4/Windows with stdout,stdout, but no stdin will fail, because it uses return value of GetStdHandle(STD_INPUT_HANDLE), but DuplicateHandle requires integer, not the handle.
- We don't need stdin, so use devnull as stdin.
- Same as https://bugs.webkit.org/show_bug.cgi?id=36586
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py: open os.devnull for stdin
-
-2010-03-29 Eric Seidel <eric@webkit.org>
-
- Unreviewed, build fix only.
-
- * Scripts/webkitpy/tool/steps/validatereviewer.py: Add missing import.
-
-2010-03-29 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Remove '_flymake' suffix from base part of file name so that
- check-webkit-style uses a correct header guard name when it is called from Emacs's flymake.
-
- https://bugs.webkit.org/show_bug.cgi?id=36573
-
- * Scripts/webkitpy/style/processors/cpp.py:
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
-
-2010-03-29 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Get the following test-webkitpy unit test working again:
- scm_unittest.SVNTest.test_svn_apply().
-
- https://bugs.webkit.org/show_bug.cgi?id=36696
-
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Add leading spaces to the empty lines of the ChangeLog strings.
- - Manually set the _reviewer attribute on the Attachment object
- to get the tests to pass.
-
-2010-03-29 Martin Robinson <mrobinson@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [GTK] suppress (un)desired launcher output that can make layout test to fail with stderr
- https://bugs.webkit.org/show_bug.cgi?id=36390
-
- Suppress debugging messages sent to the GLib logger during DRT runs.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (logHandler): Added.
- (main): Use logHandler as the default GLib log message handler.
-
-2010-03-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- sheriff-bot should comment on bugs when builders break
- https://bugs.webkit.org/show_bug.cgi?id=36786
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- - Add a new _post_blame_comment_to_bug and all it from process_work_item
- - Move commit-queue logic into _post_rollout_patch to make its api match the other _post commands.
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- - Test the new _post_blame_comment_to_bug call
-
-2010-03-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- sheriff-bot fails to get information about certain builds
- https://bugs.webkit.org/show_bug.cgi?id=36768
-
- This seems to be caused by:
- http://buildbot.net/trac/ticket/753
- I have no work-around, but for now at least we're logging
- the error better. I also added allow_none to our ServerProxy
- creation in case that fixes things for other versions of python.
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-03-29 Victor Wang <victorw@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add sign in/out link to TestResults appengine
-
- Add a link to main menu for sign in/out to this appengine.
- People signed in with admin privilege could perform
- actions that are only allowed to admins like deleting files.
-
- https://bugs.webkit.org/show_bug.cgi?id=36767
-
- * TestResultServer/handlers/menu.py:
- * TestResultServer/stylesheets/menu.css:
- (.sign):
- * TestResultServer/templates/menu.html:
-
-2010-03-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- ValidateReviewer step is draconian and un-tested
- https://bugs.webkit.org/show_bug.cgi?id=36792
-
- ValidateReviewer logic was commented out in
- http://trac.webkit.org/changeset/56744
- That was a symptom of the fact that validatereviewer.py
- is too inflexible to be used when real humans are driving webkit-patch.
- For now we just disable ValidateReviewer when humans are at the keyboard.
-
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- - Only run when in non-interactive mode.
- * Scripts/webkitpy/tool/steps/validatereviewer_unittest.py: Added.
- - Test our validation logic to make sure it's sane.
-
-2010-03-29 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Eliminate explicit slash characters from check-webkit-style's
- _rel_path() method to make its implementation more platform
- independent.
-
- https://bugs.webkit.org/show_bug.cgi?id=36759
-
- * Scripts/webkitpy/style/main.py:
- - Changed to use os.sep instead of slash_chars "/\\". This can
- be done since os.path.abspath() converts slashes to os.sep.
-
-2010-03-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Change new-run-webkit-tests to not use more than four threads by
- default on the mac port until
- https://bugs.webkit.org/show_bug.cgi?id=36622 is fixed.
-
- https://bugs.webkit.org/show_bug.cgi?id=36687
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Reformat port/mac.py to fit witin 80 columns for PEP-8 compliance.
-
- https://bugs.webkit.org/show_bug.cgi?id=36691
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests fails java/lc3 on a clean checkout
- https://bugs.webkit.org/show_bug.cgi?id=36078
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Build the java support files in check_build
- - Unwrap a line which would still fit under 80col
-
-2010-02-26 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Fraser.
-
- Add support for Widgets 1.0: View Mode Media Feature
- https://bugs.webkit.org/show_bug.cgi?id=35446
-
- Add hooks to the Qt DRT for testing the view mode media feature.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setViewModeMediaFeature):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-03-29 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Update expected results for unit tests.
-
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2010-03-29 Adam Barth <abarth@webkit.org>
-
- Unreviewed. I think Eric meant svn_revision.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-03-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch commit-queue should notice if it breaks builders (and roll out its own changes)
- https://bugs.webkit.org/show_bug.cgi?id=29311
-
- Now that we have sheriff-bot watching the tree, it can post
- rollout patches on behalf of the commit queue.
-
- * Scripts/webkitpy/common/checkout/commitinfo.py: add responsible_parties()
- * Scripts/webkitpy/common/checkout/commitinfo_unittest.py: test responsible_parties()
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- - Break IRC logic out into _post_irc_warning for easier testing.
- - Add _post_rollout_patch for posting rollout patches to bugzilla.
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- - Test _rollout_reason
- * Scripts/webkitpy/tool/grammar.py:
- - Fix join_with_separators to not add Adam's "oxford comma" for two item lists.
- * Scripts/webkitpy/tool/grammar_unittest.py:
- - Test join_with_separators
-
-2010-03-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Sheriffbot should actually run commands
- https://bugs.webkit.org/show_bug.cgi?id=36776
-
- Some minor changes to Sheriffbot:
-
- 1) We should actually run commands (by giving control back to the
- command processing object.
-
- 2) Use URLs instead of just numbers to represent SVN revisions (making
- it easier to folks in IRC ot followup).
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2010-03-26 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Antti Koivisto.
-
- Renaming of frame flattening LayoutTestController method
- to setFrameFlatteningEnabled(bool)
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setFrameFlatteningEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setFrameFlatteningEnabled):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setFrameFlatteningEnabled):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setFrameFlatteningEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setFrameFlatteningEnabled):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setFrameFlatteningEnabled):
-
-2010-03-28 Gustavo Noronha Silva <gns@gnome.org>
-
- No review, rolling out r56679.
- http://trac.webkit.org/changeset/56679
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- Lots of tests broken.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView):
-
-2010-03-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Fixed typo in deprecated_logging_unittest.py, which is masking
- sys.stderr while running test-webkitpy.
-
- See also-- https://bugs.webkit.org/show_bug.cgi?id=36725#c3
-
- * Scripts/webkitpy/common/system/deprecated_logging_unittest.py:
-
-2010-03-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Renamed check-webkit-style's --debug flag to --verbose to be more
- in line with other WebKit scripts. Also renamed the current
- --verbose flag to --min-confidence to allow the --debug rename.
-
- https://bugs.webkit.org/show_bug.cgi?id=36521
-
- We also renamed the internal "verbose" variables to "confidence" or
- "min_confidence," as appropriate, to avoid confusion with the
- --verbose flag, and because the new names are more accurate.
-
- * Scripts/check-webkit-style:
- - Renamed is_debug to is_verbose.
-
- * Scripts/webkitpy/style/checker.py:
- - Renamed _DEFAULT_VERBOSITY to _DEFAULT_CONFIDENCE.
- - Renamed "verbosity" parameters to "min_confidence" throughout.
- - Renamed configure_logging()'s is_debug parameter to is_verbose.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Updated the call to StyleCheckerConfiguration.write_style_error().
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitpy/style/optparser.py:
- - Updated the usage string with the new flag names.
- - Renamed the verbosity parameter to min_confidence throughout.
- - Renamed the is_debug parameter to is_verbose throughout.
-
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Updated the unit tests as necessary.
-
- * Scripts/webkitpy/style/processors/cpp.py:
- - Renamed the verbosity parameter to min_confidence throughout.
-
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
- - Updated the unit tests as necessary.
-
-2010-03-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Added back a line that accidentally got deleted in r56690.
-
- * Scripts/check-webkit-style:
-
-2010-03-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Add to check-webkit-style support for checking directories.
-
- https://bugs.webkit.org/show_bug.cgi?id=35234
-
- * Scripts/check-webkit-style:
- - Replaced the call to check_file() with a call to check_paths().
-
- * Scripts/webkitpy/style/checker.py:
- - In the StyleChecker class:
- - Added a check_paths() method that accepts a list of paths
- to files and directories.
- - Added a _check_directory() method that checks the files
- in a directory.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added a StyleCheckerCheckPathsTest to unit-test the new
- check_paths() method.
-
- * Scripts/webkitpy/style/optparser.py:
- - Updated the usage string.
-
-2010-03-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Changed check-webkit-style to convert paths to paths relative to
- the checkout root when invoking check-webkit-style with path
- arguments. Also added warning messages where appropriate.
-
- https://bugs.webkit.org/show_bug.cgi?id=35498
-
- Converting paths to paths relative to the checkout root ensures
- that style checking will behave as expected (since path-specific
- rules assume input paths are relative to a source root).
-
- * Scripts/check-webkit-style:
- - Added debug logging of whether the current directory was found
- to be in a WebKit checkout.
- - Added the found_checkout parameter to the call to parser.parse().
- - Renamed the files variable to paths.
- - Added a call to change_directory() prior to checking style.
-
- * Scripts/webkitpy/style/checker.py:
- - For StyleChecker.check_file():
- - Updated the docstring.
- - Added two log messages.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated a call to parser.parse() with the found_checkout parameter.
-
- * Scripts/webkitpy/style/main.py: Added.
- - Added a new file so the code in this patch could be unit-tested,
- as opposed to adding new code to check-webkit-style.
- - Added the method _rel_path() as a substitute for os.path.relpath(),
- which is available only in Python 2.6.
- - Added the method change_directory(), which contains most of the
- new functionality in this patch.
-
- * Scripts/webkitpy/style/main_unittest.py: Added.
- - Added RelPathTest to test main._rel_path().
- - Added ChangeDirectoryTest to test main.change_directory().
-
- * Scripts/webkitpy/style/optparser.py:
- - Updated check-webkit-style's usage string.
- - For the ArgumentParser.parse() method:
- - Added a found_checkout parameter.
- - Renamed filenames to paths.
- - Added logic so that an error is raised if no paths are passed
- if found_checkout is False.
-
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Updated the ArgumentParser.parse() unit tests to include
- coverage for the new found_checkout parameter.
-
- * Scripts/webkitpy/style/unittests.py:
- - Added an import statement for main_unittest.
-
- * Scripts/webkitpy/style_references.py:
- - Renamed SimpleScm to WebKitCheckout.
- - Added a detect_checkout() function to allow returning None
- instead of a WebKitCheckout instance if no checkout is found.
- - Renamed checkout_root to root_path.
-
-2010-03-27 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Print didHandleOnloadEventsForFrame in the callback of
- onload-event signal comming from frame loader
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewOnloadEvent):
- (createWebView): added connection to signal::onload-event and
- signal callback
-
-2010-03-27 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Print didCommitLoadForFrame in the callback of signal::load-committed
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadCommitted):
- (createWebView): added connection to sinal::load-committed and
- signal callback
-
-2010-03-27 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Print didStartProvisionalLoadForFrame in the callback of
- notify::load-status property change notification
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webInspectorCloseWindow):
- (webInspectorInspectWebView):
- (createWebView): added connection to notify::load-status and
- signal callback
-
-2010-03-27 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In webkitpy/, deleted the /unittests.py files since test-webkitpy
- now auto-detects all *_unittest.py files.
-
- https://bugs.webkit.org/show_bug.cgi?id=36712
-
- * Scripts/webkitpy/common/net/irc/unittests.py: Removed.
- * Scripts/webkitpy/common/system/unittests.py: Removed.
- * Scripts/webkitpy/common/thread/unittests.py: Removed.
- * Scripts/webkitpy/common/unittests.py: Removed.
- * Scripts/webkitpy/python24/unittests.py: Removed.
- * Scripts/webkitpy/style/unittests.py: Removed.
- * Scripts/webkitpy/tool/unittests.py: Removed.
- * Scripts/webkitpy/unittests.py: Removed.
-
-2010-03-27 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Add a CR after printing didFinishDocumentLoadForFrame
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadFinished):
-
-2010-03-27 Chris Jerdonek <cjerdonek@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Fixed the name of a unit test file in webkitpy.
-
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py: Copied from WebKitTools/Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py.
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py: Removed.
-
-2010-03-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- The test-webkitpy script now automatically detects all unit-test
- files in webkitpy/. This lets us eliminate the need to have and
- maintain all of the unittests.py files.
-
- https://bugs.webkit.org/show_bug.cgi?id=36591
-
- * Scripts/test-webkitpy:
- - Replaced the "from webkitpy.unittests import *" with a call
- to webkitpy.test.main.Tester().run_tests().
-
- * Scripts/webkitpy/test/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
- - Required file for the new webkitpy/test/ directory.
-
- * Scripts/webkitpy/test/main.py: Added.
- - Added a Tester class that contains the following methods:
- - _find_unittest_files() to detect all the unit-test files.
- - _modules_from_paths() to convert the paths to the unit-test
- files to fully-qualified module names.
- - run_tests() which calls the above two methods and then passes
- the module names to Python's unittest module.
-
-2010-03-27 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Fraser.
-
- [Qt/Win] Add support to unix and windows NS plugin for executing scripts on setWindow.
-
- https://bugs.webkit.org/show_bug.cgi?id=36701
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance): Add onSetWindow.
- (webkit_test_plugin_destroy_instance): Add onSetWindow.
- (webkit_test_plugin_set_window): Add onSetWindow.
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New): Add onSetWindow.
- (NPP_Destroy): Add onSetWindow.
- (NPP_SetWindow): Add onSetWindow.
-
-2010-03-26 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Simon Hausmann.
-
- Allow plugins implemented by the application, such as mimetype 'x-qt-plugin',
- when pluginsEnabled is false.
-
- Add support for LayoutTestController.WebKitPluginsEnabled
-
- https://bugs.webkit.org/show_bug.cgi?id=32196
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (copyWebSettingKey):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add some basic IRC commands to sheriffbot
- https://bugs.webkit.org/show_bug.cgi?id=36684
-
- Adds support for sheriffbot to respond to a "hi" command and a
- "last-green-revision" command. It's lame that we're rebuilding
- MultiCommandTool, but as discussed in person we'll intergrate the two
- once we see what the requirements are.
-
- * Scripts/webkitpy/tool/bot/irc_command.py: Added.
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/unittests.py:
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed. More errors in the IRC module. I have no idea how to test
- ircbot.py, which is too bad. Hopefully we've abstracted it away enough
- that we don't have to touch it very much after this patch.
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add a missing "_".
-
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- * Scripts/webkitpy/common/net/irc/ircproxy_unittest.py: Added.
- * Scripts/webkitpy/common/net/irc/unittests.py:
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix a the commit queue after my recent change.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
-
-2010-03-26 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed fix.
-
- Fix the return value for port/base.diff_image (changed from 1/0 to
- True/False in bug 34826.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-03-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Change the Mac port of new-run-webkit-tests to look for a
- test_expectations.txt file in addition to the Skipped files, so we
- can track pixel failures.
-
- https://bugs.webkit.org/show_bug.cgi?id=36619
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Implement pixel tests (image diff) properly on the Mac port.
-
- This change introduces a new "ServerPocess" class that can be used
- to manage processes that the run-webkit-tests harness forks off and
- expects to stay up for longer than a single request/response session.
- Both DumpRenderTree and ImageDiff use this style of communication,
- although the current code forks off a new ImageDiff for each diff
- (We need to restructure other parts of the code to be able to do this
- safely in a multi-threaded environment).
-
- Also, now that the ServerProcess abstraction exists, we can probably
- clean up and simplify some of the thread management logic in
- test_shell_thread as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=34826
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
-
-2010-03-26 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Print didFinishLoadForFrame outcome in DRT
-
- [GTK] Improve reporting of frame loader callbacks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36454
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadCommitted):
-
-2010-03-26 Eric Seidel <eric@webkit.org>
-
- Unreviewed test fix.
- My change conflicted with one of Adam's causing test-webkitpy to fail.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - modified_changelogs is now on Checkout instead of scm.
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Refactor IRCBot controller logic to allow for commands
- https://bugs.webkit.org/show_bug.cgi?id=36676
-
- We need to move the controller logic into the tool package so it can
- know about commands. The changes to queueengine could go in a
- different patch, but we're going to need it anyway.
-
- * Scripts/webkitpy/common/config/irc.py: Added.
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py: Added.
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Move the threading code into its own module. (It has nothing to do with IRC.)
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- * Scripts/webkitpy/common/net/irc/messagepump.py: Removed.
- * Scripts/webkitpy/common/net/irc/messagepump_unittest.py: Removed.
- * Scripts/webkitpy/common/net/irc/threadedmessagequeue.py: Removed.
- * Scripts/webkitpy/common/net/irc/threadedmessagequeue_unittest.py: Removed.
- * Scripts/webkitpy/common/net/irc/unittests.py:
- * Scripts/webkitpy/common/thread: Added.
- * Scripts/webkitpy/common/thread/__init__.py: Added.
- * Scripts/webkitpy/common/thread/messagepump.py: Copied from Scripts/webkitpy/common/net/irc/messagepump.py.
- * Scripts/webkitpy/common/thread/messagepump_unittest.py: Copied from Scripts/webkitpy/common/net/irc/messagepump_unittest.py.
- * Scripts/webkitpy/common/thread/threadedmessagequeue.py: Copied from Scripts/webkitpy/common/net/irc/threadedmessagequeue.py.
- * Scripts/webkitpy/common/thread/threadedmessagequeue_unittest.py: Copied from Scripts/webkitpy/common/net/irc/threadedmessagequeue_unittest.py.
- * Scripts/webkitpy/common/thread/unittests.py: Added.
- * Scripts/webkitpy/common/unittests.py:
-
-2010-03-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- Finally add some basic unit testing for Checkout.commit_message_for_this_commit
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py: Added.
- * Scripts/webkitpy/common/unittests.py:
-
-2010-03-26 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- [Qt] User Agent Switcher on QtLauncher
- https://bugs.webkit.org/show_bug.cgi?id=36451
-
- Patch by Diego Gonzalez <diego.gonzalez@openbossa.org> on 2010-03-26
- Reviewed by Simon Hausmann.
-
- Make possible to change the QtLauncher user agent via
- a predefined list.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/QtLauncher.qrc: Added.
- * QtLauncher/main.cpp:
- (LauncherWindow::showUserAgentDialog):
- (LauncherWindow::createChrome):
- * QtLauncher/useragentlist.txt: Added.
- * QtLauncher/webpage.cpp:
- (WebPage::userAgentForUrl):
- * QtLauncher/webpage.h:
- (WebPage::setUserAgent):
-
-2010-03-26 Victor Wang <victorw@chromium.org>
-
- Reviewed by Adam Barth.
-
- Host layout test flakiness dashboard in TestResultServer appengine.
-
- Flakiness dashboard is a tool to monitor layout test status and
- help layout test regression diagnostics.
-
- https://bugs.webkit.org/show_bug.cgi?id=36195
-
- * TestResultServer/handlers/dashboardhandler.py: Added.
- - New handler to handle dashboard request
- * TestResultServer/handlers/menu.py:
- - Add new dashboard links
- * TestResultServer/handlers/testfilehandler.py:
- - Request routes refactory
- * TestResultServer/index.yaml:
- * TestResultServer/main.py:
- - Add new dashboard request routes and refactor test result file rountes.
- * TestResultServer/model/dashboardfile.py: Added.
- - Model to access datastore for dashboard files
- * TestResultServer/model/testfile.py:
- * TestResultServer/stylesheets/dashboardfile.css: Added.
- * TestResultServer/templates/dashboardfilelist.html: Added.
- * TestResultServer/templates/showfilelist.html:
-
-2010-03-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove some evil statics from CommitInfo
- https://bugs.webkit.org/show_bug.cgi?id=36637
-
- These methods should really be on checkout. You can tell because they
- know about ChangeLogs and take an SCM as an argument. :)
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-03-23 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Add an option to QtLauncher to enable/disable a QGLWidget as Viewport
- of the QGraphicsView when the launcher is running on graphicsview mode.
-
- [Qt] QtLauncher needs an option to Enable/Disable a QGLWidget as Viewport
- https://bugs.webkit.org/show_bug.cgi?id=36270
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleQGLWidgetViewport):
- (LauncherWindow::createChrome):
-
-2010-03-26 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [Chromium-Win] websocket_server.py failed to start
- https://bugs.webkit.org/show_bug.cgi?id=36586
-
- subproess.Popen() on Python 2.4/Windows with stdout,stdout, but no stdin will fail, because it uses return value of GetStdHandle(STD_INPUT_HANDLE), but DuplicateHandle requires integer, not the handle.
- We don't need stdin, so use devnull as stdin.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: open os.devnull for stdin
-
-2010-03-26 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add TestNavigationController and TestWebWorker
- https://bugs.webkit.org/show_bug.cgi?id=36520
-
- Add LayoutTestController class, which is going to be used by
- DumpRenderTree Chromium port. These files are based on:
- - src/webkit/tools/test_shell/layout_test_controller.cc
- - src/webkit/tools/test_shell/layout_test_controller.h
- of Chromium rev.40492.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp: Added.
- * DumpRenderTree/chromium/LayoutTestController.h: Added.
-
-2010-03-25 Charlie Reis <creis@chromium.org>
-
- Reviewed by Adam Barth.
-
- onbeforeunload not called at window close + frame or iframe focused
- https://bugs.webkit.org/show_bug.cgi?id=27481
-
- Adds a callShouldCloseOnWebView method to LayoutTestController,
- to allow automated testing for bug 27481.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (callShouldCloseOnWebViewCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::callShouldCloseOnWebView):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
-
-2010-03-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add webkit-patch lkgr for finding last known good revision
- https://bugs.webkit.org/show_bug.cgi?id=36626
-
- This is rather slow for now because the command
- has to compute this information from the buildbot.
- A better long-term solution would be to have a server
- somewhere store a pre-computed LKGR and then any
- script (like webkit-patch) could just fetch it.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move modified_changelogs (and friends) from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36636
-
- These functions know about ChangeLogs, which is forbidden knowledge in
- scm.py.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/revertrevision.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move apply_patch from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36635
-
- SCM shouldn't have any knowledge of WebKit scripts.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/applypatch.py:
-
-2010-03-25 Eric Seidel <eric@webkit.org>
-
- Unreviewed build fix to un-break webkit-patch land.
- Test-case coming in follow-up commit.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- * Scripts/webkitpy/common/checkout/api.py: import scm.CommitMessage
-
-2010-03-25 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/7728903> Support color bitmap fonts
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added ColorBits.ttf
- and ColorBits-A.png.
- * DumpRenderTree/fonts/ColorBits-A.png: Copied from WebCore/inspector/front-end/Images/successGreenDot.png.
- * DumpRenderTree/fonts/ColorBits.ttf: Added.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (activateFonts): Activate ColorBits.ttf.
-
-2010-03-25 Mark Rowe <mrowe@apple.com>
-
- Remove a printf that was causing commit-log-editor to spew the name of the editor
- to the terminal many times during a commit.
-
- * Scripts/commit-log-editor:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- This function requires knowledge of ChangeLogs, but scm shouldn't know
- about ChangeLogs.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py:
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION: webkit-patch land can't land "rubber-stamped" patches
- https://bugs.webkit.org/show_bug.cgi?id=36582
-
- Allow a "-" in rubber stamped.
-
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix some copyright lines to remove extraneous comma and
- python directive.
-
- * Scripts/webkitpy/tool/bot/patchcollection.py:
- * Scripts/webkitpy/tool/bot/patchcollection_unittest.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/comments.py:
- * Scripts/webkitpy/tool/grammar.py:
- * Scripts/webkitpy/tool/multicommandtool.py:
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
-
-2010-03-25 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler, Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=36631
- Allow the test plugin to run scripts in response to NPP_SetWindow calls
-
- Hook up the ability for the TestNetscapePlugIn to run JavaScript in
- response to NPP_SetWindow.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
-
-2010-03-25 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Unreviewed, build fix.
-
- [Qt] Fix QtLauncher guards.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::showFPS):
- (LauncherWindow::updateFPS):
-
-2010-03-25 Yury Semikhatsky <yurys@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Allow running tests with enabled developer extras and closed Web Inspector. Tests that have inspector-enabled/ in their path/url will have developer extras enabled.
-
- https://bugs.webkit.org/show_bug.cgi?id=36610
-
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (shouldEnableDeveloperExtras):
- (runTest):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setDeveloperExtrasEnabled):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (shouldEnableDeveloperExtras):
- (runTest):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setDeveloperExtrasEnabled):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::shouldEnableDeveloperExtras):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::setDeveloperExtrasEnabled):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldEnableDeveloperExtras):
- (runTest):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setDeveloperExtrasEnabled):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Tweaks to sheriffbot to improve latency by keeping the working copy up
- to date even when there's no build break. Also, officially move
- sheriffbot to #webkit.
-
- (Also teach ValidateReviewer to understand rubber stamps.)
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-03-22 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Not displaying FPS info on the terminal. On S60 and Maemo the
- Window title will be used and Status bar will used on desktop.
-
- [Qt] QtLauncher's FPS info should not be displayed on the terminal
- https://bugs.webkit.org/show_bug.cgi?id=36244
-
- * QtLauncher/main.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::showFPS):
- (LauncherWindow::updateFPS):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
- (WebViewGraphicsBased::updateFrameRate):
- * QtLauncher/webview.h:
- (WebViewGraphicsBased::frameRateMeasurementEnabled):
-
-2010-03-25 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Christiansen.
-
- Added missing frame flattening activation on
- fast/frames/flattening/frameset-flattening-grid.html;
- removed unnecessary CONSOLE MESSAGE from the expected file;
- reset the setFrameSetFlatteningEnabled for each test.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved deprecated_logging unit test import statement from
- webkitpy/unittests.py to webkitpy/common/system/unittests.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/webkitpy/common/system/unittests.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved webkit_logging.py to common/system/deprecated_logging.py
- inside webkitpy.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/validate-committer-lists:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/credentials.py:
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/common/system/deprecated_logging.py: Copied from WebKitTools/Scripts/webkitpy/webkit_logging.py.
- * Scripts/webkitpy/common/system/deprecated_logging_unittest.py: Copied from WebKitTools/Scripts/webkitpy/webkit_logging_unittest.py.
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/openbugs.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/multicommandtool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/applypatch.py:
- * Scripts/webkitpy/tool/steps/build.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff.py:
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
- * Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py:
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/update.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- * Scripts/webkitpy/unittests.py:
- * Scripts/webkitpy/webkit_logging.py: Removed.
- * Scripts/webkitpy/webkit_logging_unittest.py: Removed.
-
-2010-03-25 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- commit-log-editor can call itself in an infinite loop
- https://bugs.webkit.org/show_bug.cgi?id=35291
-
- if $editor ends up being commit-log-editor, the script will exec itself
- in an infinite loop.
-
- To avoid this, we now check that the $editor variable is not
- commit-log-editor to avoid this case.
-
- * Scripts/commit-log-editor: Added an isCommitLogEditor method and
- reworked the $editor setting to add this check.
-
-2010-03-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add a Toggle Frame Flattening option to QtLauncher.
- It will be enabled by default on Maemo5 and S60 platforms.
-
- [Qt] Add enable/disable Frame Flattening option to QtLauncher
- https://bugs.webkit.org/show_bug.cgi?id=36558
-
- * QtLauncher/main.cpp:
- (LauncherWindow::applyPrefs):
- (LauncherWindow::toggleFrameFlattening):
- (LauncherWindow::createChrome):
-
-2010-03-25 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Eric Seidel.
-
- svn-create-patch prints a warning for large patches
- https://bugs.webkit.org/show_bug.cgi?id=32582
-
- svn-create-patch prints a warning message for larger patches than 20k.
-
- * Scripts/svn-create-patch:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Renamed early_warning_system.py to earlywarningsystem.py.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/tool/commands/early_warning_system.py: Removed.
- * Scripts/webkitpy/tool/commands/early_warning_system_unittest.py: Removed.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py: Copied from Scripts/webkitpy/tool/commands/early_warning_system.py.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py: Copied from Scripts/webkitpy/tool/commands/early_warning_system_unittest.py.
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/unittests.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In webkitpy, pushed the unit test import statements in
- webkitpy/unittests.py into appropriate unittests.py files in the
- new root-level packages beneath webkitpy.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/webkitpy/common/system/unittests.py:
- * Scripts/webkitpy/common/unittests.py: Added.
- * Scripts/webkitpy/python24/unittests.py: Added.
- * Scripts/webkitpy/tool/unittests.py: Added.
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move WebKitCheckout into the webkitpy.common.checkout
- package.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/common/checkout/api.py: Copied from Scripts/webkitpy/webkitcheckout.py.
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/webkitcheckout.py: Removed.
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move OutputCapture to webkitpy.common.system.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/system/outputcapture.py: Copied from Scripts/webkitpy/outputcapture.py.
- * Scripts/webkitpy/outputcapture.py: Removed.
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move user.py to webkitpy.common.system.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/credentials.py:
- * Scripts/webkitpy/common/system/user.py: Copied from Scripts/webkitpy/user.py.
- * Scripts/webkitpy/common/system/user_unittest.py: Copied from Scripts/webkitpy/user_unittest.py.
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/unittests.py:
- * Scripts/webkitpy/user.py: Removed.
- * Scripts/webkitpy/user_unittest.py: Removed.
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move executive.py to webkitpy.common.system.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
- * Scripts/webkitpy/common/net/credentials.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/system/executive.py: Copied from Scripts/webkitpy/executive.py.
- * Scripts/webkitpy/common/system/executive_unittest.py: Copied from Scripts/webkitpy/executive_unittest.py.
- * Scripts/webkitpy/executive.py: Removed.
- * Scripts/webkitpy/executive_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/early_warning_system.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/unittests.py:
- * Scripts/webkitpy/webkit_logging_unittest.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move grammary.py into webkitpy.tool.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/grammar.py: Removed.
- * Scripts/webkitpy/grammar_unittest.py: Removed.
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/grammar.py: Copied from Scripts/webkitpy/grammar.py.
- * Scripts/webkitpy/tool/grammar_unittest.py: Copied from Scripts/webkitpy/grammar_unittest.py.
- * Scripts/webkitpy/tool/multicommandtool.py:
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In webkitpy, moved init/ to common/system/.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/webkitpy/common/system: Copied from WebKitTools/Scripts/webkitpy/init.
- * Scripts/webkitpy/common/system/logutils.py:
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- * Scripts/webkitpy/init: Removed.
- * Scripts/webkitpy/init/__init__.py: Removed.
- * Scripts/webkitpy/init/logtesting.py: Removed.
- * Scripts/webkitpy/init/logutils.py: Removed.
- * Scripts/webkitpy/init/logutils_unittest.py: Removed.
- * Scripts/webkitpy/init/unittests.py: Removed.
- * Scripts/webkitpy/python24/versioning_unittest.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move stepsequence to webkitpy.tool.commands.
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/stepsequence.py: Removed.
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py: Copied from Scripts/webkitpy/stepsequence.py.
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Create webkitpy.common.checkout as described in
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/changelogs.py: Removed.
- * Scripts/webkitpy/changelogs_unittest.py: Removed.
- * Scripts/webkitpy/commitinfo.py: Removed.
- * Scripts/webkitpy/commitinfo_unittest.py: Removed.
- * Scripts/webkitpy/common/checkout: Added.
- * Scripts/webkitpy/common/checkout/__init__.py: Copied from Scripts/webkitpy/common/__init__.py.
- * Scripts/webkitpy/common/checkout/changelog.py: Copied from Scripts/webkitpy/changelogs.py.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: Copied from Scripts/webkitpy/changelogs_unittest.py.
- * Scripts/webkitpy/common/checkout/commitinfo.py: Copied from Scripts/webkitpy/commitinfo.py.
- * Scripts/webkitpy/common/checkout/commitinfo_unittest.py: Copied from Scripts/webkitpy/commitinfo_unittest.py.
- * Scripts/webkitpy/common/checkout/diff_parser.py: Copied from Scripts/webkitpy/diff_parser.py.
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py: Copied from Scripts/webkitpy/diff_parser_unittest.py.
- * Scripts/webkitpy/common/checkout/scm.py: Copied from Scripts/webkitpy/scm.py.
- * Scripts/webkitpy/common/checkout/scm_unittest.py: Copied from Scripts/webkitpy/scm_unittest.py.
- * Scripts/webkitpy/common/net/credentials.py:
- * Scripts/webkitpy/diff_parser.py: Removed.
- * Scripts/webkitpy/diff_parser_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/scm.py: Removed.
- * Scripts/webkitpy/scm_unittest.py: Removed.
- * Scripts/webkitpy/stepsequence.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/comments.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- * Scripts/webkitpy/unittests.py:
- * Scripts/webkitpy/webkitcheckout.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In webkitpy, moved init/versioning.py to python24/.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/test-webkitpy:
- * Scripts/webkit-patch:
- * Scripts/webkitpy/init/unittests.py:
- * Scripts/webkitpy/init/versioning.py: Removed.
- * Scripts/webkitpy/init/versioning_unittest.py: Removed.
- * Scripts/webkitpy/python24: Added.
- * Scripts/webkitpy/python24/__init__.py: Copied from WebKitTools/Scripts/webkitpy/tool/__init__.py.
- * Scripts/webkitpy/python24/versioning.py: Copied from WebKitTools/Scripts/webkitpy/init/versioning.py.
- * Scripts/webkitpy/python24/versioning_unittest.py: Copied from WebKitTools/Scripts/webkitpy/init/versioning_unittest.py.
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Create webkitpy.common.net as described in
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/bugzilla.py: Removed.
- * Scripts/webkitpy/bugzilla_unittest.py: Removed.
- * Scripts/webkitpy/buildbot.py: Removed.
- * Scripts/webkitpy/buildbot_unittest.py: Removed.
- * Scripts/webkitpy/commitinfo.py:
- * Scripts/webkitpy/common/net: Added.
- * Scripts/webkitpy/common/net/__init__.py: Added.
- * Scripts/webkitpy/common/net/bugzilla.py: Copied from Scripts/webkitpy/bugzilla.py.
- * Scripts/webkitpy/common/net/bugzilla_unittest.py: Copied from Scripts/webkitpy/bugzilla_unittest.py.
- * Scripts/webkitpy/common/net/buildbot.py: Copied from Scripts/webkitpy/buildbot.py.
- * Scripts/webkitpy/common/net/buildbot_unittest.py: Copied from Scripts/webkitpy/buildbot_unittest.py.
- * Scripts/webkitpy/common/net/credentials.py: Copied from Scripts/webkitpy/credentials.py.
- * Scripts/webkitpy/common/net/credentials_unittest.py: Copied from Scripts/webkitpy/credentials_unittest.py.
- * Scripts/webkitpy/common/net/irc: Copied from Scripts/webkitpy/irc.
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- * Scripts/webkitpy/common/net/irc/messagepump_unittest.py:
- * Scripts/webkitpy/common/net/irc/threadedmessagequeue_unittest.py:
- * Scripts/webkitpy/common/net/irc/unittests.py:
- * Scripts/webkitpy/common/net/networktransaction.py: Copied from Scripts/webkitpy/networktransaction.py.
- * Scripts/webkitpy/common/net/networktransaction_unittest.py: Copied from Scripts/webkitpy/networktransaction_unittest.py.
- * Scripts/webkitpy/common/net/statusserver.py: Copied from Scripts/webkitpy/statusserver.py.
- * Scripts/webkitpy/credentials.py: Removed.
- * Scripts/webkitpy/credentials_unittest.py: Removed.
- * Scripts/webkitpy/irc: Removed.
- * Scripts/webkitpy/irc/__init__.py: Removed.
- * Scripts/webkitpy/irc/ircbot.py: Removed.
- * Scripts/webkitpy/irc/ircproxy.py: Removed.
- * Scripts/webkitpy/irc/messagepump.py: Removed.
- * Scripts/webkitpy/irc/messagepump_unittest.py: Removed.
- * Scripts/webkitpy/irc/threadedmessagequeue.py: Removed.
- * Scripts/webkitpy/irc/threadedmessagequeue_unittest.py: Removed.
- * Scripts/webkitpy/irc/unittests.py: Removed.
- * Scripts/webkitpy/networktransaction.py: Removed.
- * Scripts/webkitpy/networktransaction_unittest.py: Removed.
- * Scripts/webkitpy/scm_unittest.py:
- * Scripts/webkitpy/statusserver.py: Removed.
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In webkitpy, renamed MockBugzillaTool to MockTool.
-
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py:
-
-2010-03-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In Scripts/webkitpy, moved webkitport.py and committers.py into
- common/config/ (also creating common/config/).
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- This is part of the master bug to reorganize webkitpy.
-
- * Scripts/validate-committer-lists:
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/bugzilla_unittest.py:
- * Scripts/webkitpy/changelogs.py:
- * Scripts/webkitpy/commitinfo.py:
- * Scripts/webkitpy/commitinfo_unittest.py:
- * Scripts/webkitpy/committers.py: Removed.
- * Scripts/webkitpy/committers_unittest.py: Removed.
- * Scripts/webkitpy/common: Added.
- * Scripts/webkitpy/common/__init__.py: Copied from WebKitTools/Scripts/webkitpy/style/__init__.py.
- * Scripts/webkitpy/common/config: Added.
- * Scripts/webkitpy/common/config/__init__.py: Copied from WebKitTools/Scripts/webkitpy/style/__init__.py.
- * Scripts/webkitpy/common/config/committers.py: Copied from WebKitTools/Scripts/webkitpy/committers.py.
- * Scripts/webkitpy/common/config/committers_unittest.py: Copied from WebKitTools/Scripts/webkitpy/committers_unittest.py.
- * Scripts/webkitpy/common/config/ports.py: Copied from WebKitTools/Scripts/webkitpy/webkitport.py.
- * Scripts/webkitpy/common/config/ports_unittest.py: Copied from WebKitTools/Scripts/webkitpy/webkitport_unittest.py.
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/tool/commands/early_warning_system.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/unittests.py:
- * Scripts/webkitpy/webkitport.py: Removed.
- * Scripts/webkitpy/webkitport_unittest.py: Removed.
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move mock_bugzillatool.py to tool/mocktool.py.
-
- * Scripts/webkitpy/mock_bugzillatool.py: Removed.
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py: Copied from Scripts/webkitpy/mock_bugzillatool.py.
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py:
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move comments.py and multicommandtool.py to their new
- home.
-
- * Scripts/webkitpy/comments.py: Removed.
- * Scripts/webkitpy/multicommandtool.py: Removed.
- * Scripts/webkitpy/multicommandtool_unittest.py: Removed.
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/openbugs.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/comments.py: Copied from Scripts/webkitpy/comments.py.
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/multicommandtool.py: Copied from Scripts/webkitpy/multicommandtool.py.
- * Scripts/webkitpy/tool/multicommandtool_unittest.py: Copied from Scripts/webkitpy/multicommandtool_unittest.py.
- * Scripts/webkitpy/tool/steps/closebugforlanddiff.py:
- * Scripts/webkitpy/tool/steps/closepatch.py:
- * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fixup one import statement I didn't find because the .pyc
- masked the error.
-
- * Scripts/webkitpy/stepsequence.py:
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move queueengine.py to its new home.
-
- * Scripts/webkitpy/queueengine.py: Removed.
- * Scripts/webkitpy/queueengine_unittest.py: Removed.
- * Scripts/webkitpy/tool/bot/queueengine.py: Copied from Scripts/webkitpy/queueengine.py.
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py: Copied from Scripts/webkitpy/queueengine_unittest.py.
- * Scripts/webkitpy/tool/commands/early_warning_system.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move patchcollection.py to its new home.
-
- * Scripts/webkitpy/patchcollection.py: Removed.
- * Scripts/webkitpy/patchcollection_unittest.py: Removed.
- * Scripts/webkitpy/tool/bot: Added.
- * Scripts/webkitpy/tool/bot/__init__.py: Added.
- * Scripts/webkitpy/tool/bot/patchcollection.py: Copied from WebKitTools/Scripts/webkitpy/patchcollection.py.
- * Scripts/webkitpy/tool/bot/patchcollection_unittest.py: Copied from WebKitTools/Scripts/webkitpy/patchcollection_unittest.py.
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-24 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In Scripts/webkitpy, moved steps_references.py and the steps
- folder into webkitpy/patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=36093
-
- * Scripts/webkitpy/steps: Removed.
- * Scripts/webkitpy/steps/__init__.py: Removed.
- * Scripts/webkitpy/steps/abstractstep.py: Removed.
- * Scripts/webkitpy/steps/applypatch.py: Removed.
- * Scripts/webkitpy/steps/applypatchwithlocalcommit.py: Removed.
- * Scripts/webkitpy/steps/build.py: Removed.
- * Scripts/webkitpy/steps/checkstyle.py: Removed.
- * Scripts/webkitpy/steps/cleanworkingdirectory.py: Removed.
- * Scripts/webkitpy/steps/cleanworkingdirectorywithlocalcommits.py: Removed.
- * Scripts/webkitpy/steps/closebug.py: Removed.
- * Scripts/webkitpy/steps/closebugforlanddiff.py: Removed.
- * Scripts/webkitpy/steps/closebugforlanddiff_unittest.py: Removed.
- * Scripts/webkitpy/steps/closepatch.py: Removed.
- * Scripts/webkitpy/steps/commit.py: Removed.
- * Scripts/webkitpy/steps/confirmdiff.py: Removed.
- * Scripts/webkitpy/steps/createbug.py: Removed.
- * Scripts/webkitpy/steps/editchangelog.py: Removed.
- * Scripts/webkitpy/steps/ensurebuildersaregreen.py: Removed.
- * Scripts/webkitpy/steps/ensurelocalcommitifneeded.py: Removed.
- * Scripts/webkitpy/steps/metastep.py: Removed.
- * Scripts/webkitpy/steps/obsoletepatches.py: Removed.
- * Scripts/webkitpy/steps/options.py: Removed.
- * Scripts/webkitpy/steps/postdiff.py: Removed.
- * Scripts/webkitpy/steps/postdiffforcommit.py: Removed.
- * Scripts/webkitpy/steps/postdiffforrevert.py: Removed.
- * Scripts/webkitpy/steps/preparechangelog.py: Removed.
- * Scripts/webkitpy/steps/preparechangelogforrevert.py: Removed.
- * Scripts/webkitpy/steps/promptforbugortitle.py: Removed.
- * Scripts/webkitpy/steps/reopenbugafterrollout.py: Removed.
- * Scripts/webkitpy/steps/revertrevision.py: Removed.
- * Scripts/webkitpy/steps/runtests.py: Removed.
- * Scripts/webkitpy/steps/steps_unittest.py: Removed.
- * Scripts/webkitpy/steps/update.py: Removed.
- * Scripts/webkitpy/steps/updatechangelogswithreview_unittests.py: Removed.
- * Scripts/webkitpy/steps/updatechangelogswithreviewer.py: Removed.
- * Scripts/webkitpy/steps/validatereviewer.py: Removed.
- * Scripts/webkitpy/steps_references.py: Removed.
- * Scripts/webkitpy/stepsequence.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/steps: Copied from WebKitTools/Scripts/webkitpy/steps.
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/applypatch.py:
- * Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py:
- * Scripts/webkitpy/tool/steps/build.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectorywithlocalcommits.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/closepatch.py:
- * Scripts/webkitpy/tool/steps/commit.py:
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
- * Scripts/webkitpy/tool/steps/createbug.py:
- * Scripts/webkitpy/tool/steps/editchangelog.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
- * Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py:
- * Scripts/webkitpy/tool/steps/metastep.py:
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py:
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/promptforbugortitle.py:
- * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
- * Scripts/webkitpy/tool/steps/revertrevision.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/update.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittests.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- * Scripts/webkitpy/tool/steps_references.py: Copied from WebKitTools/Scripts/webkitpy/steps_references.py.
- * Scripts/webkitpy/unittests.py:
-
-2010-03-24 Eric Seidel <eric@webkit.org>
-
- Unreviewed, build fix only.
-
- Abstract LayoutTestResults logic for easier reuse
- https://bugs.webkit.org/show_bug.cgi?id=36579
-
- * Scripts/webkitpy/buildbot_unittest.py: Add a missing import.
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix a stray comma to test landing an patch without review.
-
- * Scripts/webkitpy/commitinfo.py:
-
-2010-03-24 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- In Scripts/webkitpy, moved commands_references.py and the commands
- folder into webkitpy/patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=36483
-
- This is part of master bug 36093 to organize webkitpy.
-
- * Scripts/webkitpy/commands: Removed.
- * Scripts/webkitpy/commands/__init__.py: Removed.
- * Scripts/webkitpy/commands/abstractsequencedcommand.py: Removed.
- * Scripts/webkitpy/commands/commandtest.py: Removed.
- * Scripts/webkitpy/commands/download.py: Removed.
- * Scripts/webkitpy/commands/download_unittest.py: Removed.
- * Scripts/webkitpy/commands/early_warning_system.py: Removed.
- * Scripts/webkitpy/commands/early_warning_system_unittest.py: Removed.
- * Scripts/webkitpy/commands/openbugs.py: Removed.
- * Scripts/webkitpy/commands/openbugs_unittest.py: Removed.
- * Scripts/webkitpy/commands/queries.py: Removed.
- * Scripts/webkitpy/commands/queries_unittest.py: Removed.
- * Scripts/webkitpy/commands/queues.py: Removed.
- * Scripts/webkitpy/commands/queues_unittest.py: Removed.
- * Scripts/webkitpy/commands/queuestest.py: Removed.
- * Scripts/webkitpy/commands/sheriffbot.py: Removed.
- * Scripts/webkitpy/commands/sheriffbot_unittest.py: Removed.
- * Scripts/webkitpy/commands/upload.py: Removed.
- * Scripts/webkitpy/commands/upload_unittest.py: Removed.
- * Scripts/webkitpy/commands_references.py: Removed.
- * Scripts/webkitpy/tool/commands: Copied from WebKitTools/Scripts/webkitpy/commands.
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/early_warning_system.py:
- * Scripts/webkitpy/tool/commands/early_warning_system_unittest.py:
- * Scripts/webkitpy/tool/commands/openbugs_unittest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/commands_references.py: Copied from WebKitTools/Scripts/webkitpy/commands_references.py.
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/unittests.py:
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename webkitpy.patch to webkitpy.tool
- https://bugs.webkit.org/show_bug.cgi?id=36580
-
- This is in preparation for the great webkitpy naming cleanup.
-
- * Scripts/webkit-patch:
- * Scripts/webkitpy/patch: Removed.
- * Scripts/webkitpy/patch/__init__.py: Removed.
- * Scripts/webkitpy/patch/patcher.py: Removed.
- * Scripts/webkitpy/tool: Copied from WebKitTools/Scripts/webkitpy/patch.
- * Scripts/webkitpy/tool/main.py: Copied from WebKitTools/Scripts/webkitpy/patch/patcher.py.
- * Scripts/webkitpy/tool/patcher.py: Removed.
-
-2010-03-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Abstract LayoutTestResults logic for easier reuse
- https://bugs.webkit.org/show_bug.cgi?id=36579
-
- * Scripts/webkitpy/buildbot.py:
- - Split out logic into new LayoutTestResults class.
- * Scripts/webkitpy/buildbot_unittest.py:
- - Rename the testing class to match.
- * Scripts/webkitpy/commands/queries.py:
- - Use the new LayoutTestResults class.
-
-2010-03-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move Bugzilla.prompt_for_component to User.prompt_with_list for re-use
- https://bugs.webkit.org/show_bug.cgi?id=36577
-
- * Scripts/webkitpy/bugzilla.py:
- - Move prompt_for_component to User
- * Scripts/webkitpy/commands/queries.py:
- - Add a missing argument_names declaration.
- * Scripts/webkitpy/user.py:
- - Add prompt_with_list
- - Make staticmethods classmethods for easier mocking
-
-2010-03-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/36572> commit-log-editor: thinks mergeChangeLogs.pl is a ChangeLog file
-
- Reviewed by Eric Seidel.
-
- Fixes the following error when committing a file with
- "ChangeLog" in the name that isn't a ChangeLog (like
- mergeChangeLogs.pl from r56471 and r56472):
-
- $ git commit .
- Can't open WebKitTools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLog at commit-log-editor line 132.
- error: There was a problem with the editor 'commit-log-editor'.
- Please supply the message using either -m or -F option.
-
- * Scripts/commit-log-editor: Added '$' to anchor "ChangeLog" to
- the end of the file name when searching for ChangeLog files in a
- commit.
-
-2010-03-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/36570> resolve-ChangeLogs: fall back to git-merge-file if ChangeLog can't be merged
-
- Reviewed by Eric Seidel.
-
- * Scripts/resolve-ChangeLogs: Switched to exec git-merge-file if
- the merge attempt fails.
-
-2010-03-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch or pre-commit hook should validate reviewer lines before committing
- https://bugs.webkit.org/show_bug.cgi?id=26927
-
- Validate that patches have valid reivewers listed in their ChangeLogs
- before landing. For patches without reviewers can be landed if their
- ChangeLogs state that they are unreviewed.
-
- * Scripts/webkitpy/changelogs.py:
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commitinfo.py:
- * Scripts/webkitpy/commitinfo_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/steps/__init__.py:
- * Scripts/webkitpy/steps/validatereviewer.py: Added.
-
-2010-03-19 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by David Levin.
-
- Undefined names reported by pyflakes in python scripts
- https://bugs.webkit.org/show_bug.cgi?id=36403
-
- Attempt to use names that exist or can exist in the lexical
- scope instead of not being available at all.
-
- * Scripts/webkitpy/changelogs.py: Use self._content.
- * Scripts/webkitpy/layout_tests/port/base.py: Use os.stat
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py: Use self._port
- * Scripts/webkitpy/style/processors/cpp_unittest.py: Use expected_message_re
-
-2010-03-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/36560> resolve-ChangeLogs: git-rebase fails when resolve-ChangeLogs can't merge
-
- Reviewed by Eric Seidel.
-
- When resolve-ChangeLogs fails to merge a patch while running as
- a git merge driver, it deletes the original file, which causes
- an internal failure and stops git mid-merge:
-
- fatal: Failed to execute internal merge
-
- The fix is to use the --force switch with patch so that it will
- always attempt to apply the patch. (The change in
- mergeChangeLogs() for the previous commit also fixed this, but
- adding --force also prevents any potential user interaction that
- patch may want to display.)
-
- * Scripts/VCSUtils.pm:
- (mergeChangeLogs): Added --force switch to patch command. Also
- changed to use the exit status from the patch command to
- determine the return value for this method.
- * Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl: Added
- test to cover this bug.
-
-2010-03-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/36560> resolve-ChangeLogs: move mergeChanges() into VCSUtils package
-
- Reviewed by Eric Seidel.
-
- * Scripts/VCSUtils.pm:
- (mergeChangeLogs): Copied from mergeChanges() in
- resolve-ChangeLogs and renamed. Added method documentation.
- Fixed bug found by new tests where the original file to be
- patched was deleted when cleaning up after a traditinal rejected
- patch failed to apply.
- * Scripts/resolve-ChangeLogs: Switched to using
- mergeChangeLogs().
- (mergeChanges): Moved to VCSUtils.pm and renamed to
- mergeChangeLogs().
- * Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl: Added.
-
-2010-03-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add support for qt's unassigned list to webkit-patch assign-to-committer
- https://bugs.webkit.org/show_bug.cgi?id=36559
-
- * Scripts/webkitpy/bugzilla.py:
- - Move Bugzilla.unassigned_email into Bug and make it a set.
- * Scripts/webkitpy/bugzilla_unittest.py:
- - Test the new Bug.is_unassigned method
- * Scripts/webkitpy/commands/upload.py:
- - Use the new Bug.is_unassigned method instead of an explicit ==
- * Scripts/webkitpy/mock_bugzillatool.py:
- - Bugzilla.unassigned_email no longer needs mocking
-
-2010-03-24 Kent Hansen <kent.hansen@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Rename QWebSettings::XSSAuditorEnabled to XSSAuditingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=36522
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setXSSAuditorEnabled): Use the new name.
-
-2010-03-24 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Added to check-webkit-style support for a --debug flag.
-
- https://bugs.webkit.org/show_bug.cgi?id=36100
-
- The --debug flag adjusts the logging level to DEBUG and
- includes the logger name and level in each log message.
-
- * Scripts/check-webkit-style:
- - Changed the code to check for the --debug flag and pass
- the result to the configure_logging() method.
- * Scripts/webkitpy/style/checker.py:
- - Added an is_debug parameter to configure_logging().
- - Refactored configure_logging() by adding calls to
- the following two methods: _create_log_handlers() and
- _create_debug_log_handlers().
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added unit tests for configure_logging() with is_debug True
- by splitting the ConfigureLoggingTest class into
- ConfigureLoggingTest and ConfigureLoggingTestBase, and
- adding ConfigureLoggingDebugTest.
- * Scripts/webkitpy/style/optparser.py:
- - Updated the usage string.
- - Added an is_debug data attribute to the CommandOptionValues
- class.
- - Added support for the --debug flag to the ArgumentParser.parse()
- method.
- - Also added extra error information to the parse() method in
- the case of an invalid flag.
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Updated the unit tests as necessary.
- - Also fixed an issue with the CommandOptionValuesTest.test_eq()
- unit test.
-
-2010-03-23 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add TestNavigationController and TestWebWorker
- https://bugs.webkit.org/show_bug.cgi?id=36489
-
- Add TestNavigationController and TestWebWorker classes, which are
- going to be used by DumpRenderTree Chromium port. These files are
- based on:
- - src/webkit/tools/test_shell/test_navigation_controller.{cc,h}
- - src/webkit/tools/test_shell/test_web_worker.h
- of Chromium rev.40492.
-
- TestNavigationController has non-style changes.
- - Change ContentState type: binary string -> WebHistoryItem
- - Remove TestShell dependency by introducing NavigationHost interface.
-
- * DumpRenderTree/chromium/TestNavigationController.cpp: Added.
- * DumpRenderTree/chromium/TestNavigationController.h: Added.
- * DumpRenderTree/chromium/TestWebWorker.h: Added.
-
-2010-03-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add support for revision -> build lookup in buildbot.py and layout test result parsing
- https://bugs.webkit.org/show_bug.cgi?id=36474
-
- * Scripts/webkitpy/bugzilla_unittest.py: Added a FIXME about sharing code.
- * Scripts/webkitpy/buildbot.py:
- - Add support for looking up builds by revision number.
- - Add support for fetching and parsing results.html files from buildbot.
- - build_for_revision has an allow_failed_lookups option to work around the fact that
- our buildbot's xmlrpc calls return failure on old revision numbers.
- - Add parsing support for twisted directory listings.
- * Scripts/webkitpy/buildbot_unittest.py:
- - Unit test all the new code.
- * Scripts/webkitpy/commands/queries.py:
- - Add a new results-for command which prints all the results for a given revision (very slow due to slow revision lookup)
-
-2010-03-23 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=36048
-
- Detect if the Windows Platform SDK is missing when building with
- Visual C++ Express Edition and inform the user to download it.
-
- * Scripts/webkitdirs.pm:
-
-2010-03-23 Darin Adler <darin@apple.com>
-
- Tell Subversion about more directories that expect to have .pyc files.
-
- * Scripts/webkitpy: Modified property svn:ignore.
- * Scripts/webkitpy/irc: Added property svn:ignore.
-
-2010-03-23 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=36149
-
- Import the GNU readline interface to modify the behavior
- of raw_input so as to provide line editing support. In
- particular this will prevent "delete" characters from
- appearing in the returned value for function raw_input.
-
- * Scripts/webkitpy/user.py:
-
-2010-03-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Remove support for Qt v4.4
- https://bugs.webkit.org/show_bug.cgi?id=36389
-
- * DumpRenderTree/qt/main.cpp:
- (main):
- * QtLauncher/mainwindow.cpp:
- (MainWindow::MainWindow):
-
-2010-03-22 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make build_webkit_command() pass MAKEFLAGS environment variable to make.
- https://bugs.webkit.org/show_bug.cgi?id=36440
-
- * Scripts/webkitpy/webkitport.py:
- * Scripts/webkitpy/webkitport_unittest.py:
-
-2010-03-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Change baseline_path() to point to the upstream locations for the
- Chromium ports. Also change the reabselining scripts to use the
- correct functions to get the baseline directories, and fix the
- script's sys.path to pull in simplejson correctly.
-
- https://bugs.webkit.org/show_bug.cgi?id=36417
-
- * Scripts/rebaseline-chromium-webkit-tests:
- - fix sys.path to pick up simplejson properly
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - change baseline_path() to use webkit_baseline_path()
- - error out correctly if we can't find the chromium base dir
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - call baseline_path(), not chromium_baseline_path()
-
-2010-03-22 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Refactored the cpu_count() code in executive.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=36437
-
- * Scripts/webkitpy/executive.py:
- - Moved the import of the multiprocessing module to the top
- of the file rather than importing from within a function.
-
-2010-03-22 Antonio Gomes <tonikitoo@webkit.org>
-
- Unreviewed.
-
- Rolling out r56183: http://trac.webkit.org/changeset/56183
-
- https://bugs.webkit.org/show_bug.cgi?id=36244
-
- Need to roll out because this patch will be re-worked by the author
- and other reviewers agreed on it.
-
-2010-03-22 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Created a function for getting a module-specific logging.logger
- based on the __file__ value of the module.
-
- https://bugs.webkit.org/show_bug.cgi?id=35821
-
- This function allows us to get the module-specific logger for
- a module without having to hard-code the fully-qualified name
- of the module in the module itself. The code can be the same
- in every case: "_log = logutils.get_logger(__file__)".
-
- * Scripts/webkitpy/init/logutils.py: Added.
- - Added a module with a get_logger() function to return
- a module-specific logger based on the module's __file__
- variable.
-
- * Scripts/webkitpy/init/logutils_unittest.py: Added.
- - Added unit tests for logutils.py.
-
- * Scripts/webkitpy/init/unittests.py:
- - Added logutils_unittest to the list of imports.
-
-2010-03-22 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] REGRESSION (r56209): fast/media/print-restores-previous-mediatype.htm crashes
- https://bugs.webkit.org/show_bug.cgi?id=36386
-
- Fix the regression by implementing a null printer for Qt DRT.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::NullPrinter::NullPaintEngine::begin):
- (WebCore::NullPrinter::NullPaintEngine::end):
- (WebCore::NullPrinter::NullPaintEngine::type):
- (WebCore::NullPrinter::NullPaintEngine::drawPixmap):
- (WebCore::NullPrinter::NullPaintEngine::updateState):
- (WebCore::NullPrinter::paintEngine):
- (WebCore::DumpRenderTree::dryRunPrint):
-
-2010-03-20 Martin Robinson <mrobinson@webkit.org>
-
- Reviewed by Xan Lopez.
-
- [GTK] eventSender.zoomPageOut() bug?
- https://bugs.webkit.org/show_bug.cgi?id=30575
-
- Make zoomPage{In/Out}Callback respect the 1.2f zoom factor that DRT should be using.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (zoomIn): Added.
- (zoomOut): Added.
- (textZoomInCallback): Use zoomIn helper function.
- (textZoomOutCallback): Use zoomOut helper function.
- (zoomPageInCallback): Use zoomIn helper function, which respects zoom factor.
- (zoomPageOutCallback): Use zoomOut helper function, which respects zoom factor.
-
-2010-03-20 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after recent database API change.
-
- * wx/browser/browser.cpp:
- (MyApp::OnInit):
-
-2010-03-20 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Renamed UnitTestLogStream to TestLogStream in webkitpy.
-
- https://bugs.webkit.org/show_bug.cgi?id=36099
-
- TestLogStream is more concise and more consistent with the name of
- the module (logtesting rather than logunittesting) and its main
- class (LogTesting rather than LogUnitTesting).
-
- * Scripts/webkitpy/init/logtesting.py:
- - Renamings.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Renamings.
-
- * Scripts/webkitpy/style_references.py:
- - Renamings.
-
-2010-03-20 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fixes for new method in LayoutTestController.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setSpatialNavigationEnabled):
- * wx/build/settings.py:
-
-2010-03-20 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, tool fix.
-
- Remove vestiges of downstream directory names to unbreak rebaselining tool.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Changed paths to use WebKit repo.
-
-2010-03-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Re-enable the downstream test_expectations overrides file that was
- disabled in bug 36396 / r56287.
-
- https://bugs.chromium.org/show_bug.cgi?id=36401
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Disable the downstream override expectations temporarily to allow
- us to test that we've upstreamed everything correctly. Also, stop
- looking at the downstream baselines at all (now you will only be
- able to update baselines upstream). In theory this should work, but
- if we need to we can always add the downstream dirs back in.
-
- https://bugs.webkit.org/show_bug.cgi?id=36396
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- fix typo in chromium test expectations overrides routine
- https://bugs.webkit.org/show_bug.cgi?id=36397
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Flip the Chromium ports to look first for the test expectations
- in LayoutTests/platform/chromium and only afterwards look in the
- Chromium repo downstream for overrides.
-
- https://bugs.webkit.org/show_bug.cgi?id=36326
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-03-19 James Hawkins <jhawkins@chromium.org>
-
- Unreviewed.
-
- Add myself to the committers list.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Fix SheriffBot exception lock when we can't retrieve the first build
- from buildbot. (I'll ask Eric to review this change after the fact,
- but he's at lunch and I want to get the bot unlocked.)
-
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/buildbot_unittest.py:
-
-2010-03-19 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=36380
- websocket/tests/frame-lengths.html times out on Tiger bot
-
- https://bugs.webkit.org/show_bug.cgi?id=35041
- websocket/tests/frame-lengths.html / websocket/tests/simple-stress.html fail on Windows bot
-
- Double the timeout (from 15 seconds to 30 seconds). We can increase it more, if necessary -
- sampling the DRT process on Mac OS X takes much longer anyway, so it's better to avoid
- timing out than to detect it early.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setWaitToDump):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::waitUntilDone):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * Scripts/run-webkit-tests:
-
-2010-03-19 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Unreviewed.
-
- Buildfix for Qt v4.5.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::applyZoom):
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Operational tweaks to SheriffBot
- https://bugs.webkit.org/show_bug.cgi?id=36385
-
- These changes aren't pretty, but they're helpful to make SheriffBot
- work operationally. I plan to iterate in these areas, but I wanted to
- get this patch landed so I could be running the bot against TOT.
-
- * Scripts/webkitpy/commands/sheriffbot.py:
- * Scripts/webkitpy/irc/ircbot.py:
- * Scripts/webkitpy/thirdparty/autoinstalled/__init__.py:
-
-2010-03-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Help sheriff-bot avoid warning about flaky tests (and add more unit testing)
- https://bugs.webkit.org/show_bug.cgi?id=36354
-
- * Scripts/webkitpy/buildbot.py:
- - Make Build creation easier to Mock and test
- * Scripts/webkitpy/buildbot_unittest.py:
- - Test finding green to red transitions and suspect revisions
- * Scripts/webkitpy/commands/queries.py:
- - Make what-broke note when builders have only failed once.
-
-2010-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix the rebaselining tool, which was broken by r36324 when I
- added the concept of overridding expectations.
-
- https://bugs.webkit.org/show_bug.cgi?id=36374
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Misc bug fixes to make the SheriffBot actually work
- https://bugs.webkit.org/show_bug.cgi?id=36355
-
- With these changes, I can actually run the sheriff-bot from start to
- finish.
-
- * Scripts/webkitpy/irc/ircproxy.py:
- * Scripts/webkitpy/patch/patcher.py:
- * Scripts/webkitpy/statusserver.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Actually import the sheriff-bot command so we can run it. Also, move
- the bot to #webkit-test so it doesn't cause a ruckus while we test it.
-
- * Scripts/webkitpy/patch/patcher.py:
- * Scripts/webkitpy/irc/ircbot.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Second cut at SheriffBot
- https://bugs.webkit.org/show_bug.cgi?id=36353
-
- This patch should contain a complete SheriffBot that's capable of
- saying reasonable things on IRC. I had to refactor the use of
- CommitInfo to make the SheriffBot testable, but I did the minimum
- necessary. We should grow webkitcheckout over time to contain the
- knowledge of ChangeLogs from scm.
-
- * Scripts/webkitpy/commands/sheriffbot.py:
- * Scripts/webkitpy/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/patch/patcher.py:
- * Scripts/webkitpy/webkitcheckout.py: Added.
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Fix Hyatt's IRC nickname.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Add IRC nicknames for the non-reviewer committers.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- More reviewer IRC nicknames.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Add a bunch of IRC nicknames for reviewers.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-19 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Added USE_SYSTEM_MALLOC flag to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=21272
-
- Add system-alloc flag to build-webkit. It makes easy to switch
- between system allocator and TCmalloc.
-
- * Scripts/build-webkit:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix.
-
- Of course, I caused a regression in the file that isn't tested. :(
-
- * Scripts/webkitpy/statusserver.py:
-
-2010-03-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add basic "who-broke-it" command and revision -> broken builder association code
- https://bugs.webkit.org/show_bug.cgi?id=36352
-
- The "what-broke" command prints builders and what revisions we suspect
- broke them. who-broke-it prints revisions and what builders we suspect
- they broke. The sheriff-bot needs this revision to broken builder mapping
- so this change adds it!
-
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/commands/queries.py:
-
-2010-03-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Simplify BuildBot core builder code for easier re-use
- https://bugs.webkit.org/show_bug.cgi?id=36350
-
- I simply couldn't see anything through all this Yak-hair.
-
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/commands/queries.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- committers.py should know IRC nicknames
- https://bugs.webkit.org/show_bug.cgi?id=36349
-
- I'll add the actual nicknames in another patch.
-
- * Scripts/webkitpy/committers.py:
- * Scripts/webkitpy/committers_unittest.py:
-
-2010-03-18 Anders Bakken <agbakken@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=36318
-
- QtLauncher runs as a GuiClient by default in Qt Embedded which will
- make it try to connect to an existing GuiServer. This patch makes it
- run like a stand-alone app.
-
- * QtLauncher/main.cpp:
- (LauncherApplication::LauncherApplication):
-
-2010-03-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move find_green_to_red_transition out of "what-broke" onto Builder for easier re-use
- https://bugs.webkit.org/show_bug.cgi?id=36345
-
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/commands/queries.py:
-
-2010-03-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Adam Barth.
-
- Actually pass the IRC password to the IRC object
- https://bugs.webkit.org/show_bug.cgi?id=36346
-
- I wanted to do this before, but both patches were in flight. This
- patch finally closes the loop and makes the IRCProxy system complete.
-
- * Scripts/webkitpy/patch/patcher.py:
-
-2010-03-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a StatusServer front end to the SVNRevision table on QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=36344
-
- No test because Browser was too hard to mock. :( I couldn't figure
- out how to make Mock be a dictionary as well as an object.
-
- * Scripts/webkitpy/statusserver.py:
-
-2010-03-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split out CommitInfo class and add unit tests
- https://bugs.webkit.org/show_bug.cgi?id=36343
-
- Move more logic out of "what-broke" into a shared CommitInfo
- class so that it can be used by other commands and unit tested.
-
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commitinfo.py: Added.
- * Scripts/webkitpy/commitinfo_unittest.py: Added.
- * Scripts/webkitpy/unittests.py:
-
-2010-03-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Fix LayoutTests/http/tests/appcache/max-size.html
- https://bugs.webkit.org/show_bug.cgi?id=36207
-
- Implement setAppCacheMaximumSize() for Qt.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAppCacheMaximumSize):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-03-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- QueueStatusServer should be able to log broken bots
- https://bugs.webkit.org/show_bug.cgi?id=36341
-
- We need to add a new table to the QueueStatusServer to store persistent
- information for the SheriffBot. The new table will keep track of which
- bots each SVN revision broke.
-
- * QueueStatusServer/handlers/__init__.py:
- * QueueStatusServer/handlers/svnrevision.py: Added.
- * QueueStatusServer/handlers/updatebase.py: Added.
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/handlers/updatesvnrevision.py: Added.
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/__init__.py:
- * QueueStatusServer/model/svnrevision.py: Added.
- * QueueStatusServer/templates/updatesvnrevision.html: Added.
-
-2010-03-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add a new method to the Qt LayoutTestController for
- changing media type and make the DRT support dry-run printing.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::dryRunPrint):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMediaType):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-03-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add upstream LayoutTests/platform/chromium* directories to the
- baseline search path for new-run-webkit-tests in preparation for
- upstreaming all of the Chromium baselines. Note that this does
- not actually create the directories themselves, but that's okay.
-
- https://bugs.webkit.org/show_bug.cgi?id=36324
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-03-18 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Anders Carlsson.
-
- https://bugs.webkit.org/show_bug.cgi?id=36327
- Test that a plug-in can override Node methods of its element
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (normalizeOverride):
- (pluginInvoke):
- Override "normalize", and call back to let a test know that the plug-in was called.
-
-2010-03-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add the concept of an "overrides" file for expectations so that we
- can store test_expectations both upstream and downstream for a port
- that runs both in webkit.org and in a separate repository (like
- Chromium). Also add some unit tests for the expectations module.
-
- https://bugs.webkit.org/show_bug.cgi?id=36249
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_test.py: Added.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-03-18 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add an overlay QGraphicsTextItem to QtLauncher so we can display FPS info
- on the launcher and not on the terminal anymore.
-
- [Qt] QtLauncher's FPS info should be displayed on an overlay text item
- https://bugs.webkit.org/show_bug.cgi?id=36244
-
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
- (WebViewGraphicsBased::updateFrameRate):
- * QtLauncher/webview.h:
-
-2010-03-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- First cut at SheriffBot
- https://bugs.webkit.org/show_bug.cgi?id=36253
-
- This patch contains a first attempt at writing a sheriff bot.
- Currently, we're missing the logic that actually finds the SVN revision
- numbers to complain about, but once we have that, we'll have the rest
- of the infrustructure to ping IRC and to file bugs.
-
- There's a lot to fill in for the SheriffBot, but this patch give us the
- framework in which to do it.
-
- This patch required a bit of refactoring of AbstractQueue because
- SheriffBot is the first bot that doesn't process patches (it processes
- SVN revisions). Accordingly, I've factored out AbstractPatchQueue to
- hold the parts of AbstractQueue that are specific to dealing with
- patches. Some of the choices here might not be obvious yet, but we can
- tweak them as our needs become clearer.
-
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/commands/sheriffbot.py: Added.
- * Scripts/webkitpy/commands/sheriffbot_unittest.py: Added.
- * Scripts/webkitpy/mock_bugzillatool.py:
- Added a MockIRC object to the mock tool.
- * Scripts/webkitpy/multicommandtool.py:
- Added a finalize method so the tool can disconnect from IRC
- cleanly instead of just droping the socket.
- * Scripts/webkitpy/multicommandtool_unittest.py:
- * Scripts/webkitpy/patch/patcher.py:
- Added support for talking to IRC.
- * Scripts/webkitpy/unittests.py:
- We should add a commands/unittests.py file at some point to make
- the commands module more self-contained.
-
-2010-03-18 Antti Koivisto <koivisto@iki.fi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- https://bugs.webkit.org/show_bug.cgi?id=36102
- [Qt] Scaling control API for tiled backing store
-
- Add animated smooth zooming to Qt launcher when in tiled mode.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::zoomAnimationFinished):
- (LauncherWindow::applyZoom):
- (LauncherWindow::zoomIn):
- (LauncherWindow::zoomOut):
- * QtLauncher/webview.h:
- (WebViewGraphicsBased::graphicsWebView):
-
-2010-03-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Support using IRC accounts with a password
- https://bugs.webkit.org/show_bug.cgi?id=36287
-
- Add a global option to specify an IRC password so we can use the
- sheriffbot account (which needs a password).
-
- * Scripts/webkitpy/irc/ircbot.py:
- * Scripts/webkitpy/irc/ircproxy.py:
- * Scripts/webkitpy/patch/patcher.py:
-
-2010-03-18 Eric Seidel <eric@webkit.org>
-
- Just fixing missing parenthesis typo, no review.
-
- * Scripts/webkitpy/commands/queries.py: '%' has higher precedence than 'or', use parentheses.
-
-2010-03-18 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Adam Roben and Anders Carlsson.
-
- https://bugs.webkit.org/show_bug.cgi?id=36210
- plugins/resize-from-plugin.html fails on some platforms
-
- Turns out that most platforms don't use "cross-platform" main.cpp. Copied code added for
- the test to their versions of the file.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_set_window):
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_SetWindow):
-
-2010-03-18 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support to run-launcher to open the EFL example browser.
- http://webkit.org/b/36181
-
- * Scripts/webkitdirs.pm:
- * Scripts/run-launcher:
-
-2010-03-18 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Failing tests http/tests/misc/image-blocked-src-change.html
- & http/tests/misc/image-blocked-src-no-change.html
- https://bugs.webkit.org/show_bug.cgi?id=36227
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewConsoleMessage): print only the file name instead of the
- whole URI when printing messages with local URI's
-
-2010-03-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach what-broke how to look up reviewer and author Committer objects by name
- https://bugs.webkit.org/show_bug.cgi?id=36264
-
- * Scripts/webkitpy/commands/queries.py:
- - Add committer_by_name lookups for both reviewer and author
- - Improve printing in the cases where lookups fail.
- * Scripts/webkitpy/committers.py:
- - Add committer_by_name
- * Scripts/webkitpy/committers_unittest.py:
- - Test committer_by_name
-
-2010-03-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- create-rollout should actually fill out the description
- https://bugs.webkit.org/show_bug.cgi?id=36261
-
- * Scripts/webkitpy/commands/download.py:
- The % operator was applied to the wrong string.
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- Add support for seeing what we actually do with create_bug.
-
-2010-03-17 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Accelerated Compositing is now default on QtWebKit so the option
- in QtLauncher must be true as default.
-
- [Qt] QtLauncher's Accelerated Compositing option must be true as default
- https://bugs.webkit.org/show_bug.cgi?id=36234
-
- * QtLauncher/main.cpp:
- (LauncherWindow::applyPrefs):
- (LauncherWindow::toggleAcceleratedCompositing):
- (LauncherApplication::handleUserOptions):
-
-2010-03-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Commit queue should ignore (probably red) builders when landing rollouts
- https://bugs.webkit.org/show_bug.cgi?id=36169
-
- When landing a rollout, the builders are probably red, so we need to
- ignore them in the subprocess too. Also, we might as well update the
- working copy because we haven't validated anything about the current
- revision prior to trying to land.
-
- This change is testable, but it requires changing the mock executive to
- log its arguments. That will generate a lot of expectation changes, so
- I'd like to do that in a separate patch.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-03-17 Chang Shu <chang.shu@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- https://bugs.webkit.org/show_bug.cgi?id=36139
- [Qt] Clean up cache each time DumpRenderTree starts. This behavior
- matches other platforms, such as mac and gtk.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2010-03-17 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Turns out this needs to be a string.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-03-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add more infrastructure for sheriff-bot, including making what-broke more awesome
- https://bugs.webkit.org/show_bug.cgi?id=36254
-
- * Scripts/webkitpy/bugzilla.py:
- - Made the various URL methods return None when passed None.
- * Scripts/webkitpy/bugzilla_unittest.py:
- - Test that the url methods work as expected.
- * Scripts/webkitpy/buildbot.py:
- - Add a static Build.build_url so that its possible to generate a build url without a Build object.
- - Give users a URL in _fetch_xmlrpc_build_dictionary error message.
- * Scripts/webkitpy/changelogs.py:
- - Add a new ChangeLogEntry class to encapsulate entry-parsing logic.
- - Add is_path_to_changelog to greatly simplify SCM.modified_changelogs code.
- - Make ChangeLog.parse_latest_entry_from_file a public method.
- * Scripts/webkitpy/changelogs_unittest.py:
- - Add tests for new ChangeLog entry parsing.
- * Scripts/webkitpy/commands/queries.py:
- - Make "what-broke" not print "ok" builders, only failing ones.
- - Print much more information on failing builders, including links and authorship/reviewer information.
- * Scripts/webkitpy/commands/queues_unittest.py:
- - Use a fake_checkout path since fixing the cwd (as part of fixing scm_unittests.py) was breaking tests.
- * Scripts/webkitpy/mock_bugzillatool.py:
- - Move MockSCM away from using os.getcwd() as that was fragile (and wrong).
- * Scripts/webkitpy/patch/patcher.py:
- - Remove code which was broken now that this file has moved.
- - Code was also redundant now that SCM.find_checkout_root() exists.
- * Scripts/webkitpy/scm.py:
- - Greatly simplify modified_changelogs now that I understand list comprehensions.
- - Expect ChangeLogEntry objects instead of raw strings.
- - Add changed_files_for_revision, committer_email_for_revision and contents_at_revision
- - Add commit_with_message argument to all sites since someone half-added it before. :(
- - Get rid of copy/paste code using _status_regexp()
- * Scripts/webkitpy/scm_unittest.py:
- - Fix these tests!
- - Add new tests for new scm code.
- - Fix spelling of "awsome" to "awesome".
-
-2010-03-17 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by David Levin.
-
- Add myself to the list of reviewers.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Change post-rollout to create-rollout and have it make a new bug
- instead of posting the rollout to the old bug.
- https://bugs.webkit.org/show_bug.cgi?id=36250
-
- The new bug blocks the old bug instead of adding more complexity to the
- old bug. One tricky question is whether to create the bug if we're
- unable to create a rollout patch. In this patch, we do create the bug,
- but we might revist this question in the future.
-
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/steps/createbug.py:
-
-2010-03-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a way for the bots to send messages to IRC
- https://bugs.webkit.org/show_bug.cgi?id=36235
-
- We'll use these classes to notify #webkit about bad SVN revisions.
- This patch just has some skeleton code for us to play with.
-
- * Scripts/webkitpy/irc/__init__.py: Added.
- * Scripts/webkitpy/irc/ircbot.py: Added.
- A bot that knows how to talk to IRC.
- * Scripts/webkitpy/irc/ircproxy.py: Added.
- We need to run the bot on its own thread because the irclib needs
- its own mainloop. This class provides an abstraction of the
- threading.
- * Scripts/webkitpy/irc/messagepump.py: Added.
- * Scripts/webkitpy/irc/messagepump_unittest.py: Added.
- * Scripts/webkitpy/irc/threadedmessagequeue.py: Added.
- A thread-safe message queue for sending messages from the main
- thread to the IRC thread.
- * Scripts/webkitpy/irc/threadedmessagequeue_unittest.py: Added.
- * Scripts/webkitpy/irc/unittests.py: Added.
- * Scripts/webkitpy/thirdparty/autoinstalled/__init__.py:
- Autoinstall irclib
- * Scripts/webkitpy/unittests.py:
-
-2010-03-17 Victor Wang <victorw@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix image_diff syntax in webkitpy/port/base.py.
- The syntax is wrong if diff_filename is specified.
-
- https://bugs.webkit.org/show_bug.cgi?id=36230
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-03-16 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Christiansen.
-
- Provide to QtLauncher a way to change the ViewportUpdateMode
- when it's in graphics based mode.
-
- [Qt] Make QtLaucher able to select the ViewportUpdateMode
- https://bugs.webkit.org/show_bug.cgi?id=36175
-
- * QtLauncher/main.cpp:
- (LauncherWindow::selectViewportUpdateMode):
- (LauncherWindow::createChrome):
-
-2010-03-17 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Darin Adler.
-
- Ambiguous error message when building for unspecified platform
- https://bugs.webkit.org/show_bug.cgi?id=30203
-
- Add an extra line information to the error message.
-
- * Scripts/webkitdirs.pm:
-
-2010-03-16 Adam Barth <abarth@webkit.org>
-
- No review, rolling out r56044.
- http://trac.webkit.org/changeset/56044
- https://bugs.webkit.org/show_bug.cgi?id=36048
-
- This patch broke Windows Debug (Tests)
-
- * Scripts/webkitdirs.pm:
-
-2010-03-16 John Abd-El-Malek <jam@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Give keyboard focus to PluginDocuments by default
- https://bugs.webkit.org/show_bug.cgi?id=36147
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_SetWindow):
- (handleEventCarbon):
- (handleEventCocoa):
-
-2010-03-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Fix run-webkit-httpd on Windows.
-
- * Scripts/webkitperl/httpd.pm:
-
-2010-03-16 Alexey Proskuryakov <ap@apple.com>
-
- Tiger build fix.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: (pluginGetProperty):
- Added more type casts to shut down warnings.
-
-2010-03-16 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=36184
- YouTube video resizing doesn't work with OOP plug-ins
-
- Added a resizeTo() method, which calls resizePlugin() in JS with the same arguments,
- and a lastSetWindowArguments property, which returns a string describing the last NPWindow
- passed to NPN_SetWindow.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginGetProperty):
- (testResizeTo):
- (pluginInvoke):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_SetWindow):
-
-2010-03-16 Joanmarie Diggs <joanmarie.diggs@gmail.com>
-
- Reviewed by Xan Lopez.
-
- https://bugs.webkit.org/show_bug.cgi?id=35504
- [Gtk] Evaluate and fix AtkTable for layout tables
-
- Implements rowCount and columnCount for Gtk in DRT.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
-
-2010-03-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add "what-broke" command for debugging when the tree broke
- https://bugs.webkit.org/show_bug.cgi?id=36157
-
- This is another step towards automated sheriffing of the webkit tree.
- With this logic our scripts are able to determine what revision broke the
- tree. Buildbot should do this for us, but unfortunately buildbot doesn't
- expose this kind of aggregate information.
-
- * Scripts/webkitpy/buildbot.py:
- - Add new Builder and Build classes (which will eventually replace the custom dictionaries previously used).
- - Split out more network logic into _fetch methods which will eventually be their own class for mocking.
- - Use XMLRPC to communicate with the buildbot master instead of scraping build pages.
- * Scripts/webkitpy/buildbot_unittest.py:
- - Test the newly added buildbot classes.
- * Scripts/webkitpy/commands/queries.py:
- - Add an experimental what-broke command.
-
-2010-03-15 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=36048
-
- Detect if the Windows Platform SDK is missing when building with
- Visual C++ Express Edition and inform the user to download it.
-
- * Scripts/webkitdirs.pm:
-
-2010-03-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Let commit-queue land rollout patches even when the tree is red
- https://bugs.webkit.org/show_bug.cgi?id=36155
-
- Now the commit-queue will land patches whose name begins with "ROLLOUT "
- even if the tree is red. The patches still go through the usual build
- and test process, but they can be landed while the tree is on fire.
-
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/commands/queuestest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
-
-2010-03-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add webkit-patch post-rollout to upload rollouts to bugs.webkit.org for easy committing
- https://bugs.webkit.org/show_bug.cgi?id=36154
-
- This new command is a mashup of prepare-rollout and post. This command
- will be used by an experimental bot to post rollouts of patches that
- break things to bugs.webkit.org where they can be landed with the
- greatest of ease.
-
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/steps/__init__.py:
- * Scripts/webkitpy/steps/postdiffforrevert.py: Added.
-
-2010-03-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch rollout should error out on conflicts
- https://bugs.webkit.org/show_bug.cgi?id=36151
-
- Instead of blindingly plowing ahead, we now throw an exception if there
- are conflicts after applying a reverse diff.
-
- * Scripts/webkitpy/scm.py:
-
-2010-03-15 Chris Fleizach <cfleizach@apple.com>
-
- Unreviewed layout test fix.
-
- VO not able to perform a VO-spacebar on facebook links
- https://bugs.webkit.org/show_bug.cgi?id=36132
-
- GTK needs to implement press for this test to work.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::press):
-
-2010-03-15 Chris Fleizach <cfleizach@apple.com>
-
- Unreviewed layout test fix.
-
- VO not able to perform a VO-spacebar on facebook links
- https://bugs.webkit.org/show_bug.cgi?id=36132
-
- Windows needs to implement press in DRT.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::press):
-
-2010-03-15 Chris Fleizach <cfleizach@apple.com>
-
- Unreviewed. Fix break of layout tests on win and gtk.
-
- VO not able to perform a VO-spacebar on facebook links
- https://bugs.webkit.org/show_bug.cgi?id=36132
-
- Attempting to implement press action for windows and gtk.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::press):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::press):
-
-2010-03-15 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- VO not able to perform a VO-spacebar on facebook links
- https://bugs.webkit.org/show_bug.cgi?id=36132
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (pressCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::press):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::press):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::press):
-
-2010-03-15 Mark Rowe <mrowe@apple.com>
-
- Add a new build slave to replace the existing SnowLeopard Leaks build slave which
- appears to be suffering a slow and painful death at the hands of its graphics hardware.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-03-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Fix a minor case where we'd deference a null pointer if we tried
- to run new-run-webkit-tests on an unsupported platform (e.g.
- Cygwin's python version).
-
- https://bugs.webkit.org/show_bug.cgi?id=36076
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
-
-2010-03-15 Darin Adler <darin@apple.com>
-
- Tell Subversion about more directories that expect to have .pyc files.
-
- * Scripts/webkitpy/layout_tests: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/port: Added property svn:ignore.
-
-2010-03-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Operational scripts from running the EWS
- https://bugs.webkit.org/show_bug.cgi?id=36097
-
- These are the scripts I use to manage the EWS on EC2. If someone other
- than me wants to run the EWS, these scripts might be helpful.
-
- * EWSTools/boot.sh: Added.
- * EWSTools/create-webkit-git: Added.
- * EWSTools/screen-config: Added.
- * EWSTools/start-queue.sh: Added.
-
-2010-03-14 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Fix the webkit-patch bots. Turns out they need the path of the main
- script to run properly.
-
- * Scripts/webkit-patch:
- * Scripts/webkitpy/patch/patcher.py:
-
-2010-03-14 Darin Adler <darin@apple.com>
-
- Tell Subversion about more directories that expect to have .pyc files.
-
- * Scripts/webkitpy/init: Added property svn:ignore.
- * Scripts/webkitpy/patch: Added property svn:ignore.
- * Scripts/webkitpy/thirdparty: Added property svn:ignore.
- * Scripts/webkitpy/thirdparty/autoinstalled: Added property svn:ignore.
-
-2010-03-14 Antti Koivisto <koivisto@iki.fi>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=35146
- Support tiled backing store
-
- QtLauncher support and build flag in build-webkit.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::applyPrefs):
- (LauncherWindow::toggleTiledBackingStore):
- (LauncherWindow::toggleResizesToContents):
- (LauncherWindow::createChrome):
- (LauncherApplication::handleUserOptions):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::setResizesToContents):
- (WebViewGraphicsBased::resizeEvent):
- * QtLauncher/webview.h:
- * Scripts/build-webkit:
-
-2010-03-13 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- The webkit-patch script now displays a warning if run using
- a version of Python less than 2.5. This will help users
- understand why webkit-patch is erroring out if they are
- using Python 2.4, for example.
-
- https://bugs.webkit.org/show_bug.cgi?id=31533
-
- * Scripts/webkit-patch:
- - Moved most of the file contents to webkitpy/patch/patcher.py
- so the Python version can be checked before interpreting
- any code that can cause the script to error out.
- - Added a configure_logging() method to enable any version
- warnings to show up.
- - Added a main() method with calls to configure_logging(),
- check_version(), and the main webkit patch method.
-
- * Scripts/webkitpy/patch/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
- - This file is required to make a folder a package.
-
- * Scripts/webkitpy/patch/patcher.py: Added.
- - Moved code from Scripts/webkit-patch.
-
-2010-03-13 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Changed test-webkitpy so that messages logged as a side-effect
- of unit-testing code do not get displayed to the screen. These
- messages clutter up the unit test results if not filtered out.
-
- https://bugs.webkit.org/show_bug.cgi?id=35835
-
- * Scripts/test-webkitpy:
- - Adjusted the configure_logging() method to filter out any
- log messages from webkitpy.
- - Also added an INFO message stating that most console logging
- is getting suppressed.
-
- * Scripts/webkitpy/init/versioning.py:
- - Added a log parameter to the check_version() method.
-
- * Scripts/webkitpy/init/versioning_unittest.py:
- - Qualified a call to check_version() with the parameter names.
-
-2010-03-13 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- The test-webkitpy script now warns the user if the script is
- being run using a Python version different from the minimum
- version the webkitpy package was meant to support.
-
- https://bugs.webkit.org/show_bug.cgi?id=35788
-
- Warning developers if their Python version is too low will help
- them understand why test-webkitpy is failing. Secondly, warning
- developers if their Python version is higher than the minimum will
- help them understand that their changes may not be okay for the
- minimum supported version, even if test-webkitpy is passing.
-
- * Scripts/test-webkitpy:
- - Moved the "from ..._unittest import *" lines to the new
- file Scripts/webkitpy/unittests.py. This will allow the
- version-check warning to be displayed even if an error occurs
- while interpreting (i.e. importing) the unit test code.
- - Added configure_logging() to configur logging for test-webkitpy.
- - Added an init() method to configure logging and check the
- current Python version.
-
- * Scripts/webkitpy/init/unittests.py: Added.
- - Added a file to import all unit test modules in the
- webkitpy.init package.
-
- * Scripts/webkitpy/init/versioning.py: Added.
- - Added a _MINIMUM_SUPPORTED_PYTHON_VERSION variable and set
- it equal to 2.5.
- - Added a compare_version() method to compare the current Python
- version against a target version.
- - Added a check_version() method to check the current Python
- version against the current minimum supported version, and to
- log a warning message if the check fails.
-
- * Scripts/webkitpy/init/versioning_unittest.py: Added.
- - Added unit tests for the functions in versioning.py.
-
- * Scripts/webkitpy/style/unittests.py:
- - Fixed/updated a code comment.
-
- * Scripts/webkitpy/unittests.py: Added.
- - Moved the "from ..._unittest import *" lines from test-webkitpy.
-
-2010-03-13 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved all code in webkitpy/__init__.py to another location.
-
- https://bugs.webkit.org/show_bug.cgi?id=35828
-
- Keeping webkitpy/__init__.py free of non-trivial code allows
- calling code to import initialization code from webkitpy
- before any errors or log messages occur due to code in
- __init__.py. Such initialization code can include things like
- version checking code and logging configuration code. This
- also lets us move the autoinstall initialization code to a
- location where it only executes if it is needed -- something
- we have done in this patch.
-
- * Scripts/webkitpy/__init__.py:
- - Moved all executable code to the following location:
- webkitpy/thirdparty/autoinstalled/__init__.py
- - Added a code comment to keep this file free of non-trivial
- code.
-
- * Scripts/webkitpy/bugzilla.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/networktransaction.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/networktransaction_unittest.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/statusserver.py:
- - Updated mechanize import statement.
-
- * Scripts/webkitpy/thirdparty/autoinstalled/__init__.py: Added.
- - Copied the code from webkitpy/__init__.py and updated it
- as necessary.
-
-2010-03-13 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved webkitpy/mock.py into webkitpy/thirdparty since it is
- third-party code.
-
- https://bugs.webkit.org/show_bug.cgi?id=35499
-
- Updated the import statement in all of the below except where noted.
-
- * Scripts/webkitpy/bugzilla_unittest.py:
- * Scripts/webkitpy/commands/commandtest.py:
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/commands/early_warning_system_unittest.py:
- * Scripts/webkitpy/commands/queries_unittest.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/commands/queuestest.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/commands_references.py: Added.
- - Added a file containing an absolute import of Mock so that
- the imports in the commands folder can import from this file
- (similar to style_references.py). This helps limit the
- number of affected files in future refactorings.
-
- * Scripts/webkitpy/credentials_unittest.py:
- * Scripts/webkitpy/mock.py: Removed.
- - Moved to Scripts/webkitpy/thirdparty.
-
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/patchcollection_unittest.py:
- * Scripts/webkitpy/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/steps/steps_unittest.py:
- * Scripts/webkitpy/steps/updatechangelogswithreview_unittests.py:
- * Scripts/webkitpy/steps_references.py: Added.
- - Added a file containing an absolute import of Mock so that
- the imports in the steps folder can import from this file
- (similar to style_references.py). This helps limit the
- number of affected files in future refactorings.
-
- * Scripts/webkitpy/thirdparty/mock.py: Copied from WebKitTools/Scripts/webkitpy/mock.py.
- - Also eliminated trailing white space and carriage returns.
-
-2010-03-12 Robert Hogan <robert@webkit.org>
-
- Reviewed by Adam Barth.
-
- Amend incorrect typo patch for QtLauncher.
-
- https://bugs.webkit.org/show_bug.cgi?id=35877
-
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
-
-2010-03-13 Victor Wang <victorw@chromium.org>
-
- Add appengine app to host and serve webkit layout test results.
-
- The app allows you post test result files (json) and serve them up.
- Chromium flakiness dashboard will first use this app to host results.json
- and expectations.json, but the files hosted by this app are not limited
- to chromium results or json files. It can be used to host other files if needed.
-
- https://bugs.webkit.org/show_bug.cgi?id=35944
-
- * TestResultServer: Added.
- * TestResultServer/app.yaml: Added.
- * TestResultServer/handlers: Added.
- * TestResultServer/handlers/__init__.py: Added.
- * TestResultServer/handlers/menu.py: Added.
- * TestResultServer/handlers/testfilehandler.py: Added.
- * TestResultServer/index.yaml: Added.
- * TestResultServer/main.py: Added.
- * TestResultServer/model: Added.
- * TestResultServer/model/__init__.py: Added.
- * TestResultServer/model/testfile.py: Added.
- * TestResultServer/stylesheets: Added.
- * TestResultServer/stylesheets/form.css: Added.
- * TestResultServer/stylesheets/menu.css: Added.
- * TestResultServer/stylesheets/testfile.css: Added.
- * TestResultServer/templates: Added.
- * TestResultServer/templates/menu.html: Added.
- * TestResultServer/templates/showfilelist.html: Added.
- * TestResultServer/templates/uploadform.html: Added.
-
-2010-03-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by David Levin.
-
- new-run-webkit-tests fails with --debug option.
- https://bugs.webkit.org/show_bug.cgi?id=36067
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-13 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add "Show FPS" menu option to QtLauncher.
-
- [Qt] QtLauncher need a menu option to show/hide FPS
- https://bugs.webkit.org/show_bug.cgi?id=35794
-
- * QtLauncher/main.cpp:
- (LauncherWindow::showFPS):
- (LauncherWindow::createChrome):
-
-2010-03-13 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add a "Toggle FullScreen" option to QtLauncher Menu.
-
- [Qt] QtLauncher needs an option to toggle FullScreen Mode
- https://bugs.webkit.org/show_bug.cgi?id=35755
-
- * QtLauncher/main.cpp:
- (LauncherWindow::init):
- (LauncherWindow::eventFilter):
- (LauncherWindow::initializeView):
- (LauncherWindow::toggleFullScreenMode):
- (LauncherWindow::createChrome):
-
-2010-03-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix typo in websocket_server (path_from_base instead of
- path_from_chromium_base).
-
- https://bugs.webkit.org/show_bug.cgi?id=36074
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-03-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests --new-baseline doesn't work at all.
-
- It attempts to call a method that isn't defined. To fix it, I
- removed the unnecessary and unnecessarily confusing 'platform'
- argument to the test_type constructor and use the Port object that
- is passed in instead, since we are only ever generating a baseline
- from the port that is currently executing.
-
- https://bugs.webkit.org/show_bug.cgi?id=36046
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
-
-2010-03-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix new-run-webkit-tests --run-singly
-
- This script option is currently broken - the script attempts to
- dereference methods and variables that don't exist, which causes
- the Chromium Linux valgrind bot to be quite unhappy. This has been
- broken since r54449 when I renamed Port.start_test_driver to
- Port.start_driver.
-
- https://bugs.webkit.org/show_bug.cgi?id=36042
-
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
-
-2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Fix critical being printed to stderr on every test. This is
- because the jar is only being created when soup hits the HTTP
- path. We should reconsider the time of its creation.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-03-12 Adam Roben <aroben@apple.com>
-
- Teach prepare-ChangeLog to find modified selectors in CSS files
-
- Reviewed by Tim Hatcher.
-
- Fixes <http://webkit.org/b/36064> prepare-ChangeLog should extract
- modified selectors from CSS files
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges): Call get_selector_line_ranges_for_css for
- .css files.
- (get_selector_line_ranges_for_css): Added. Finds selectors and their
- line ranges and returns them.
-
-2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Build fix (for EWS). Make sure the new code builds on older soup.
-
- Thanks to Dan Winship.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAlwaysAcceptCookies):
-
-2010-03-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Eric Carlson.
-
- [GTK] DRT does not handle cookie policy setting
- https://bugs.webkit.org/show_bug.cgi?id=36056
-
- Implement cookie accept policy setting for GTK+'s LayoutTestController.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAlwaysAcceptCookies):
-
-2010-03-12 Adam Langley <agl@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium]: update Linux layout test scripts for RedHat like systems.
-
- (Tested on Fedora 12.)
-
- https://bugs.webkit.org/show_bug.cgi?id=35867
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2010-03-12 Adam Roben <aroben@apple.com>
-
- Make svn-create-patch's diffs of ObjC header files more readable
-
- Fixes <http://webkit.org/b/36055>.
-
- Reviewed by John Sullivan.
-
- * Scripts/svn-create-patch:
- (diffOptionsForFile): Added. Returns the options that should be passed
- to diff for the given file. All the options are the same for all
- files, except for the option to specify which lines should be used as
- hunk headers.
- (generateDiff): Use diffOptionsForFile to get the options to pass to
- diff.
- (hunkHeaderLineRegExForFile): Added. Returns the regular expression
- that should be used by diff to identify lines that should be included
- after the "@@" in the hunk header lines of the diff. For ObjC[++]
- source files, we use any lines starting with -, +, or
- @implementation/@interface/@protocol. For ObjC[++] header files (which
- we assume to be any .h files in a mac/ or objc/ directory), we use any
- lines starting with @implementation/@interface/@protocol.
-
-2010-03-12 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Introduce setWillSendRequestClearHeader to LayoutTestController to selectively remove headers in willSendRequest. Used in http/tests/security/no-referrer.html
- https://bugs.webkit.org/show_bug.cgi?id=35920
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setWillSendRequestClearHeaderCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::willSendRequestClearHeaders):
- (LayoutTestController::setWillSendRequestClearHeader):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::willSendRequest):
-
-2010-03-11 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed.
-
- Fix typo in websocket_server.py
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-03-11 Garret Kelly <gdk@chromium.org>
-
- Reviewed by Darin Adler.
-
- Fixing minor typo in the commit queue status page.
- https://bugs.webkit.org/show_bug.cgi?id=35979
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-03-11 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed.
-
- Fix for WebSocket layout test runner on chromium/win port.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: register_cygwin and set CYGWIN_PATH
-
-2010-03-11 Mark Rowe <mrowe@apple.com>
-
- Reviewed by David Kilzer.
-
- <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
-
- Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2010-03-11 Victor Wang <victorw@chromium.org>
-
- Reviewed by dglazkov@chromium.org.
-
- rebaseline_chromium_webkit_tests can generate new baselines for
- all platforms so it needs to know two ports in order to work correctly:
- the port that the script is running on and the port that it generates
- new baselines for. Update rebaselining tool to handle both port correctly.
-
- https://bugs.webkit.org/show_bug.cgi?id=36032
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-03-11 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Tim Hatcher.
-
- <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version
-
- Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted. It defaults to the
- current Mac OS X version unless otherwise specified.
-
- Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR.
-
- Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice
- may not be usable when targetting a different Mac OS X version.
-
- Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off
- MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * DumpRenderTree/mac/DumpRenderTree.mm: Wrap the include of mach-o/getsect.h in 'extern "C"' as some versions of the
- header in older SDKs do not do this inside the header.
-
-2010-03-11 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Geoff Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=35965
- <rdar://problem/7742771> Crash when passing an object returned from plug-in back to the plug-in
-
- Made rememberedObject a member of PluginObject. A plug-in must not use its references
- to browser NPObjects after being destroyed, but this wasn't the case with static variable.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
- (pluginInvalidate):
- (pluginAllocate):
- (pluginDeallocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
-
-2010-03-11 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=35905
- REGRESSION(55699?): media/video-no-autoplay.html times out on Leopard Commit Bot
-
- Make sure we reset the WebGL preference, so that WebGL doesn't get left
- on after being enabled via layoutTestController.overridePreference(),
- which in turn causes accelerated compositing to be enabled on Leopard
- when we don't want it to be.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-03-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- rebaseline_chromium_webkit_tests doesn't handle other plaforms
- correctly (e.g., if you run on the Mac platform and try to
- rebaseline the WIN results, the result gets written into
- platform/mac instead of platform/chromium-win). Also, this script
- doesn't work on non-Chromium ports, so we need to fix that at some
- point.
-
- https://bugs.webkit.org/show_bug.cgi?id=35982
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-03-10 Daniel Bates <dbates@rim.com>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=35840
-
- Updates the subroutine builtDylibPathForName() so that it adds the "d" suffix to
- the QtWebKit library name on Windows. This change makes run-launcher work again
- under Windows. Moreover, this change corresponds to the change made in change-
- set 53924 <http://trac.webkit.org/changeset/53924>.
-
- * Scripts/webkitdirs.pm:
-
-2010-03-10 Adam Roben <aroben@apple.com>
-
- Roll out the prepare-ChangeLog part of r55870
-
- This change wasn't needed (prepare-ChangeLog calls svn-create-patch
- when it's asked to print out diffs for the user) and was screwing up
- its ability to find changed function names.
-
- * Scripts/prepare-ChangeLog:
- (diffCommand): Change the options we pass to svn-diff back to their
- pre-r55870 form.
-
-2010-03-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Add Support for WebKitEnableCaretBrowsing to Qt DRT
-
- Unskip test fast/events/multiline-link-arrow-navigation.html
-
- https://bugs.webkit.org/show_bug.cgi?id=35593
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
- (LayoutTestController::setCaretBrowsingEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-03-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Holger Freyther.
-
- QtLauncher: Fix typo in conditional statement in
- WebViewGraphicsBased::setFrameRateMeasurementEnabled.
-
- '=' should be '=='!
-
- https://bugs.webkit.org/show_bug.cgi?id=35877
-
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
-
-2010-03-10 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored and cleaned up the code for unit-testing logging.
-
- https://bugs.webkit.org/show_bug.cgi?id=35845
-
- * Scripts/webkitpy/init/logtesting.py:
- - Added more information to the module docstring.
- - Added an assertMessages() method to the UnitTestLogStream
- class. This simplifies the calling code.
- - Renamed the UnitTestLog class to LogTesting, and reformulated
- it as follows:
- - Moved the logging configuration code from the __init__
- method to a new static setUp() method.
- - Documented the __init__ method to be private.
- - Improved the code so that the root logger does not have
- its logging level changed. Instead we set the handler's
- level. This makes the unit testing more unintrusive.
- - Updated the assertMessages() method to call the
- UnitTestLogStream class's assertMessages() method.
- - More fully documented the class.
-
- * Scripts/webkitpy/style/checker.py:
- - Added a logger parameter to the configure_logging() method.
- This allows us to prevent test messages from being sent
- to the root logger during unit testing, which may be
- rendering to the screen, etc.
- - Simplified the code by removing the _LevelLoggingFilter class.
- - Replaced the _LevelLoggingFilter class with a one-line lambda
- expression in configure_logging().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Changed relative imports to absolute to comply more with PEP8.
- - In the ConfigureLoggingTest class:
- - Changed the setUp() method to prevent test messages from
- being propagated to the root logger.
- - Changed the _log() method to a data attribute.
- - Updated to accommodate changes to logtesting.py.
-
- * Scripts/webkitpy/style_references.py:
- - Updated an import statement.
-
-2010-03-10 Evan Martin <evan@chromium.org>
-
- Reviewed by Darin Adler.
-
- Python code for GDB 7 to support native printing of some WebCore types.
-
- * gdb/webcore.py: Added.
-
-2010-03-10 Adam Roben <aroben@apple.com>
-
- Make svn-create-patch and prepare-ChangeLog show better section
- headings for ObjC files
-
- This makes the text at the end of each "@@" line in a diff actually
- show the ObjC method or interface that contains the change, rather
- than whatever the most-recently-defined C function was.
-
- Fixes <http://webkit.org/b/35970>.
-
- Reviewed by John Sullivan.
-
- * Scripts/svn-create-patch: Pass -F'^[-+@]' to diff so that it will
- treat any lines starting with -, +, or @ as section heading lines.
- This works well for ObjC files, and shouldn't affect other types of
- files.
-
- * Scripts/prepare-ChangeLog: Changed the options passed to diff to
- match those used in svn-create-patch.
-
-2010-03-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- Link QtLauncher against the WebKit library using a relative rpath.
-
- This makes the launcher and the lib relocatable.
-
- * QtLauncher/QtLauncher.pro:
-
-2010-03-10 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Rubber-stamped by Simon Hausmann.
-
- [iExploder] Add new CSS Properties and HTML Attributes
-
- The update-iexploder-cssproperties script was used to update
- the various input files. The autobuffer HTML Attribute was removed
- from WebKit and I manually added it back to the htmlattrs.in like
- we have done it for other attributes in the past.
-
- * iExploder/htdocs/cssproperties.in:
- * iExploder/htdocs/htmlattrs.in:
- * iExploder/htdocs/htmltags.in:
-
-2010-03-09 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed.
-
- Obvious fix for --cgi-paths of pywebsocket.
-
- * Scripts/run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-03-09 Jakub Wieczorek <jwieczorek@webkit.org>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/committers.py:
-
-2010-03-09 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Nate Chapin.
-
- Fix --clobber-old-results in new-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=35778
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-03-09 Andy Estes <aestes@apple.com>
-
- Reviewed by Adele Peterson.
-
- Add the ability to dispatch scroll wheel events in DRT. This was
- necessary in order to write a test for
- https://bugs.webkit.org/show_bug.cgi?id=34700.
-
- * DumpRenderTree/mac/EventSendingController.mm: Add support for two
- new methods to EventSender: mouseScrollBy(x, y) and
- continuousMouseScrollBy(x, y). The API to generate scroll events on
- the mac was added in 10.5, so these methods are NOOPs on Tiger.
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- Regiester mouseScrollByX:andY: and continuousMouseScrollByX:andY:
- (+[EventSendingController webScriptNameForSelector:]): Map JavaScript
- method names to ObjC selectors.
- (-[EventSendingController mouseScrollByX:andY:continuously:]): Generate
- a scroll wheel event using CGEventCreateScrollWheelEvent() and dispatch
- it to WebKit.
- (-[EventSendingController continuousMouseScrollByX:andY:]): Generate a
- continuous scrolling event by x and y pixels.
- (-[EventSendingController mouseScrollByX:andY:]): Generate a notchy
- scrolling event by x and y lines.
-
-2010-03-09 Chris Fleizach <cfleizach@apple.com>
-
- DRT build fix for Tiger. No review.
-
- AX: hit testing a list box doesn't work anymore
- https://bugs.webkit.org/show_bug.cgi?id=35893
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::elementAtPoint):
-
-2010-03-09 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: hit testing a list box doesn't work anymore
- https://bugs.webkit.org/show_bug.cgi?id=35893
-
- * DumpRenderTree/AccessibilityController.cpp:
- (getElementAtPointCallback):
- (AccessibilityController::getJSClass):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::elementAtPoint):
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::elementAtPoint):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::elementAtPoint):
-
-2010-03-03 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- pywebsocket should support html and cgi in the same directory.
- https://bugs.webkit.org/show_bug.cgi?id=34879
-
- Import pywebsocket 0.4.9.2
- Specify --server-host 127.0.0.1, so that it only binds listening socket
- to 127.0.0.1 to prevent access from non-localhost.
- Change --cgi-paths from /websocket/tests/cookies to /websocket/tests,
- because pywebsocket 0.4.9.2 supports html and cgi in the same directory
- and only executable (httponly-cookies.pl) will be handled as cgi
- script.
-
- * Scripts/run-webkit-tests:
- * Scripts/run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/README.webkit:
- * Scripts/webkitpy/thirdparty/pywebsocket/example/echo_client.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/example/handler_map.txt: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/standalone.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/mod_pywebsocket/util.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/setup.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/test/test_util.py:
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/README: Added.
- * Scripts/webkitpy/thirdparty/pywebsocket/test/testdata/hello.pl: Added.
-
-2010-03-09 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Simplified check-webkit-style's argument parsing code by removing
- support for the vestigial "extra flag values" parameter.
-
- https://bugs.webkit.org/show_bug.cgi?id=34677
-
- The "extra flag values" parameter was needed before WebKit
- forked check-webkit-style from Google. It was used to pass
- through the option parser those command-line flags that WebKit
- required but that Google's parser did not support (the --git-commit
- flag in particular).
- We can remove the parameter now because it is no longer
- needed and unnecessarily clutters the argument-parsing code.
-
- * Scripts/webkitpy/style/optparser.py:
- - Removed the extra_flag_values parameter from the
- CommandOptionValues class's constructor.
- - Removed the extra_flags parameter from the ArgumentParser
- class's parse() method.
-
- * Scripts/webkitpy/style/optparser_unittest.py:
- - Removed from the unit tests all references to the
- extra_flag_values variable.
-
-2010-03-08 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add EventSender
- https://bugs.webkit.org/show_bug.cgi?id=35859
-
- Add EventSender classes, which are going to be used by
- DumpRenderTree Chromium port. These files are based on:
- - src/webkit/tools/test_shell/event_sending_controller.cc
- - src/webkit/tools/test_shell/event_sending_controller.h
- of Chromium rev.40492.
-
- * DumpRenderTree/chromium/EventSender.cpp: Added.
- * DumpRenderTree/chromium/EventSender.h: Added.
-
-2010-03-08 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add PlainTextController and TextInputController
- https://bugs.webkit.org/show_bug.cgi?id=35852
-
- Add PlainTextController and TextInputController classes, which are going
- to be used by DumpRenderTree Chromium port. These files are based on:
- - src/webkit/tools/test_shell/plain_text_controller.{cc,h} and
- - src/webkit/tools/test_shell/text_input_controller.{cc,h}
- of Chromium rev.40492.
-
- * DumpRenderTree/chromium/PlainTextController.cpp: Added.
- * DumpRenderTree/chromium/PlainTextController.h: Added.
- * DumpRenderTree/chromium/TextInputController.cpp: Added.
- * DumpRenderTree/chromium/TextInputController.h: Added.
-
-2010-03-08 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, Chromium build fix.
-
- Reverting r55689.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-03-08 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix webkit-patch post and land to work well with security bug
- https://bugs.webkit.org/show_bug.cgi?id=35733
-
- Bugzilla requires authentication to access security bug page,
- so call authenticate() if it failed to fetch bug page.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-03-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitry Glazkov.
-
- Fix --clobber-old-results in new-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=35778
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-03-08 Brady Eidson <beidson@apple.com>
-
- Reviewed by NOBODY (but suggested by Steve Falkenburg and fixing a boneheaded mistake on my part last week)
-
- Followup to https://bugs.webkit.org/show_bug.cgi?id=35532
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::apiTestGoToCurrentBackForwardItem): Can't pass in a null BOOL to WebKit APIs.
-
-2010-03-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Fixed incorrect import statement in validate-committer-lists:
- webkitpy.BeautifulSoup -> webkitpy.thirdparty.BeautifulSoup.
-
- * Scripts/validate-committer-lists:
-
-2010-03-08 Jian Li <jianli@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Blob.slice support.
- https://bugs.webkit.org/show_bug.cgi?id=32993
-
- Add ENABLE_BLOB_SLICE feature define and flag for build-webkit. It is
- currently only turned on for Mac.
-
- * Scripts/build-webkit:
-
-2010-03-08 Gustavo Noronha Silva <gns@gnome.org>
-
- No review, rolling out r55662.
- http://trac.webkit.org/changeset/55662
- https://bugs.webkit.org/show_bug.cgi?id=35863
-
- Need to be coordinated with bots setup
-
- * Scripts/run-webkit-tests:
-
-2010-03-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Holger Freyther.
-
- [GTK] Tests fail when running with ipv6 addresses available, on Debian systems
- https://bugs.webkit.org/show_bug.cgi?id=35863
-
- If running on a Debian-based system, also listen on the ipv6 address.
-
- * Scripts/run-webkit-tests:
-
-2010-03-08 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Darin Adler.
-
- [iexploder] Automatically update htmltags.in and htmlattrs.in too
- https://bugs.webkit.org/show_bug.cgi?id=33755
-
- Change the update-iexploder-cssproperites script to update
- the htmlattrs.in and htmltags.in of WebKitTools/iExploder/htdocs
- automatically as well.
-
- Change the reading and writing code to work with parameters
- and extend the method that is parsing the .in files to handle
- the HTMLTagNames.in and the HTMLAttributeNames.in files.
-
- Remove custom code to determine the revision of files with a
- utility of VCUtils.pm to determine the revision of the directory
- these files are located in. This will also work with git checkout.
-
- * Scripts/update-iexploder-cssproperties:
-
-2010-03-07 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: false positive for empty loop
- https://bugs.webkit.org/show_bug.cgi?id=35717
-
- * Scripts/webkitpy/style/processors/cpp.py:
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
-
-2010-03-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add AccessibilityController and AccessibilityUIElement
- https://bugs.webkit.org/show_bug.cgi?id=35774
-
- Add AccessibilityController and AccessibilityUIElement classes,
- which are going to be used by DumpRenderTree Chromium port. These
- files are based on:
- - src/webkit/tools/test_shell/accessibility_controller.{cc,h} and
- - src/webkit/tools/test_shell/accessibility_ui_element.{cc,h}
- of Chromium rev.40492.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp: Added.
- * DumpRenderTree/chromium/AccessibilityController.h: Added.
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp: Added.
- * DumpRenderTree/chromium/AccessibilityUIElement.h: Added.
-
-2010-03-06 Hironori Bono <hbono@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Chromium] Typing into Flash with wmode = opaque|transparent and
- non-latin language active outputs as if US keyboard layout active
-
- https://bugs.webkit.org/show_bug.cgi?id=34936
-
- To test keyboard events on the test plugin, this change implements
- NPCocoaEventKeyDown and NPCocoaEventKeyUp handlers so the plugin
- can write log messages.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (handleEventCocoa): Implemented the event handlers for NPCocoaKeyDown
- and NPCocoaEventKeyUp.
-
-2010-03-05 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Eric Seidel.
-
- Fix Print option on QtLauncher by calling print directly from QWebFrame.
-
- [Qt] QtLauncher Print option is not working on QGraphicsView mode
- https://bugs.webkit.org/show_bug.cgi?id=35769
-
- * QtLauncher/main.cpp:
- (LauncherWindow::print):
-
-2010-03-05 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Changed the logging code for new-run-webkit-tests to use
- module-specific loggers rather than the root logger. This is
- a standard practice that allows logging specific to a package
- to be configured independently of other modules.
-
- https://bugs.webkit.org/show_bug.cgi?id=35194
-
- Added a line of the form "_log = logging.getLogger(<module>)"
- to each module below, where <module> is the fully-qualified
- name of the module, and updated the log lines to use the new
- _log logger.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-03-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Split the command-line invocation of the Chromium/python LigHTTPd
- server implementation out into its own top level script to make it
- a more "public" interface and to resolve some awkward layering
- issues. This script will be called directly by other test scripts in
- the Chromium tree.
-
- At some point this script should be made to work with Apache-based
- implementations and on other ports. I have filed
- https://bugs.webkit.org/show_bug.cgi?id=35820 for this.
-
- Also fix a bug in port/factory where options.chromium could be
- dereferenced even if it wasn't set, raising an exception.
-
- https://bugs.webkit.org/show_bug.cgi?id=35812
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/new-run-webkit-httpd: Added
-
-2010-03-02 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Holger Freyther
- Patch by Antonio Gomes <tonikitoo@webkit.org>
-
- [Gtk] Implement setSpatialNavigationEnabled in DRT.
- https://bugs.webkit.org/show_bug.cgi?id=35705
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSpatialNavigationEnabled):
-
-2010-02-23 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
- Patch by Antonio Gomes <tonikitoo@webkit.org>
-
- Add toggle on/off stub methods for Spatial Navigation in win, gtk and mac LayoutTestController class implementations.
- https://bugs.webkit.org/show_bug.cgi?id=35699
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setSpatialNavigationEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSpatialNavigationEnabled):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setSpatialNavigationEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setSpatialNavigationEnabled):
-
-2010-02-18 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
- Patch by Antonio Gomes <tonikitoo@webkit.org>
-
- Add toggle on/off mechanism for Spatial Navigation in QtLauncher.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleSpatialNavigation):
- (LauncherWindow::setupUI):
-
-2010-03-02 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Simon Hausmann.
- Patch by Antonio Gomes <tonikitoo@webkit.org>
-
- [Qt] Add setSpatialNavigationEnabled method DRT
- https://bugs.webkit.org/show_bug.cgi?id=33715
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setSpatialNavigationEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
- Unskipped fast/events/spatialnavigation/
-
-2010-03-04 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Alice Liu.
-
- Find the framework relative to TARGET_BUILD_DIR as that has a more obvious value during production builds.
-
- * Scripts/check-for-webkit-framework-include-consistency:
-
-2010-03-04 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add CppVariant and CppBoundClass
- https://bugs.webkit.org/show_bug.cgi?id=35634
-
- Add CppVariant and CppBoundClass classes, which are going to be
- used by DumpRenderTree Chromium port. These files are based on:
- - src/webkit/glue/cpp_variant.{cc,h} and
- - src/webkit/glue/cpp_bound_class.{cc,h}
- of Chromium rev.40492.
-
- * DumpRenderTree/chromium/CppBoundClass.cpp: Added.
- * DumpRenderTree/chromium/CppBoundClass.h: Added.
- * DumpRenderTree/chromium/CppVariant.cpp: Added.
- * DumpRenderTree/chromium/CppVariant.h: Added.
-
-2010-03-04 Mark Rowe <mrowe@apple.com>
-
- Build fix for older versions of Ruby.
-
- * Scripts/check-for-webkit-framework-include-consistency:
-
-2010-03-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add a script to verify that WebKit framework headers are internally consistent.
-
- This script detects the following problematic situations:
- * An exported WebKit header that includes a header from WebCore.
- * An exported WebKit header that includes a header that does not exist in the WebKit framework.
- * A public WebKit header that includes a private WebKit header.
-
- * Scripts/check-for-webkit-framework-include-consistency: Added.
-
-2010-03-04 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Adam Roben.
-
- Making sure that the correct path is set before invoking
- DumpRenderTree on cygwin.
-
- https://bugs.webkit.org/show_bug.cgi?id=35768
-
- * Scripts/run-webkit-tests:
-
-2010-03-04 Simon Fraser <simon.fraser@apple.com>
-
- Revert the exceptions I just added, and make the error clearer.
-
- * Scripts/check-for-global-initializers:
-
-2010-03-04 Simon Fraser <simon.fraser@apple.com>
-
- Build fix: add exceptions to the check-for-global-initializers script
- for FocusController and SpatialNavigation, and improve the script
- to actually print out the globals found.
-
- * Scripts/check-for-global-initializers:
-
-2010-03-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix dangling reference to "port" instead of "self._port_obj" that
- was preventing the http_server from starting on Windows.
-
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2010-03-04 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Make Qt DumpRenderTree EventSender able to send double click events
-
- LayoutTests:
- fast/events/dblclick-addEventListener.html
-
- [Qt] DRT: Send double click event from EventSender
- https://bugs.webkit.org/show_bug.cgi?id=35255
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::mouseDown):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender::resetClickCount):
-
-2010-03-04 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic.
-
- This also allows shadow builds relying only on qmake to work properly.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * QtLauncher/QtLauncher.pro:
-
-2010-03-04 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable to use built-product-archive on Qt platform.
-
- * BuildSlaveSupport/built-product-archive:
-
-2010-03-03 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Add a missing 'm_' to class variables names.
-
- [Qt] QtLauncher is not respecting class variable names
- https://bugs.webkit.org/show_bug.cgi?id=35542
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::init):
- (LauncherWindow::sendTouchEvent):
- (LauncherWindow::eventFilter):
- (LauncherWindow::zoomIn):
- (LauncherWindow::zoomOut):
- (LauncherWindow::resetZoom):
- (LauncherWindow::setEditable):
- (LauncherWindow::setTouchMocking):
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
-
-2010-03-03 Alexey Proskuryakov <ap@apple.com>
-
- Rubber-stamped by Mark Rowe.
-
- Exclude leaks in Java that build bot complains about.
-
- * Scripts/run-webkit-tests:
-
-2010-03-03 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Additional change to separate Accelerated Compositing test from 3D Rendering test
- https://bugs.webkit.org/show_bug.cgi?id=35610
-
- I am now using #if ENABLED(3D_RENDERING) to emit the 3DRendering string from
- DRT or not. This allows these flags to set independently. I also improved
- the code flow in run-webkit-tests a bit.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
- * Scripts/run-webkit-tests:
-
-2010-03-03 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Added ability to print supported features to console to DRT
- https://bugs.webkit.org/show_bug.cgi?id=35610
-
- This currently only prints whether or not Accelerated Compositing
- and 3D Rendering are supported, which is the only way to tell if you
- can run the compositing LayoutTests on Windows. But it can be expanded
- to give more information as needed. Currently it prints that both
- AcceleratedCompositing and 3DRendering are available if accelerated compositing
- is enabled since both have to be turned on together. This allows me to maintain
- separate checks for them.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:Added --print-supported-features flag
- (main):
- * Scripts/run-webkit-tests:Runs DRT and enabled compositing tests if HW comp is available on Windows
-
-2010-03-03 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Refactor QtLauncher so it respects command line arguments
- and inherits settings when you clone or create a new window.
-
- Implemented with help of Kenneth Rohde Christiansen.
-
- [Qt] QtLauncher must be refactored to fix command line arguments usage
- https://bugs.webkit.org/show_bug.cgi?id=35536
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::init):
- (LauncherWindow::isGraphicsBased):
- (applySetting):
- (LauncherWindow::applyPrefs):
- (LauncherWindow::initializeView):
- (LauncherWindow::newWindow):
- (LauncherWindow::cloneWindow):
- (LauncherWindow::createChrome):
- (main):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::setFrameRateMeasurementEnabled):
- * QtLauncher/webview.h:
- (WebViewGraphicsBased::itemCacheMode):
- (WebViewGraphicsBased::frameRateMeasurementEnabled):
-
-2010-03-02 Arno Renevier <arno@renevier.net>
-
- Reviewed by Gustavo Noronha Silva.
-
- [Gtk] implements ChromeClient::requestGeolocationPermissionForFrame
- https://bugs.webkit.org/show_bug.cgi?id=35210
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (geolocationPolicyDecisionRequested):
- (createWebView):
-
-2010-03-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- Revert r55339 - the Chromium codebase downstream had a temporary
- need for WebKitTools/pywebsocket to still exist after Chris Jerdonek
- had moved it (scripts still referenced the old location). Those
- scripts have been updated to the new location, so it should be safe
- to delete this now.
-
- https://bugs.webkit.org/show_bug.cgi?id=35614
-
- * pywebsocket/mod_pywebsocket/standalone.py: Removed.
-
-2010-03-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- new-run-webkit-tests on chromium-linux tests to see if
- layout_test_helper exists, but we don't use layout_test_helper on
- linux. The test derefences a None object, and we crash. This fixes
- that.
-
- https://bugs.webkit.org/show_bug.cgi?id=35602
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
- 2010-03-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- r55388 (bug 35553) worked around a bug in Python's subprocess.Popen()
- that was causing DRT to hang on exit in new-run-webkit-tests.
- Unfortunately, that workaround doesn't work on chromium-win
- (and the script fails completely). The good news is that the check
- isn't actually necessary, and so this change makes it conditional.
-
- https://bugs.webkit.org/show_bug.cgi?id=35601
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-03-02 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 35576: WebKit should tell plug-in instances when private browsing state changes
- <http://webkit.org/b/35576>
-
- TestNetscapePlugin is another bit of plug-in code where copy-paste was heavily used
- when porting. Update the Windows and UNIX implementations of NPP_New and NPP_SetValue
- to provide the expected behavior related to NPNVprivateModeBool. Hopefully this code
- duplication can be cleaned up in the future.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_value):
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New):
- (NPP_SetValue):
-
-2010-03-02 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Alexey Proskuryakov.
-
- Test plugin still has issues with releasing objects, and variants
- https://bugs.webkit.org/show_bug.cgi?id=35587
-
- Fix the conditions for releasing the variants after calling
- invoke, and avoid having a number of objects leak.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testDocumentOpen):
- (testWindowOpen):
-
-2010-03-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored the StyleChecker class's file-processing method
- _process_file(). This will make it easier to add new
- file-processing capabilities to check-webkit-style.
-
- https://bugs.webkit.org/show_bug.cgi?id=35490
-
- * Scripts/webkitpy/style/checker.py:
- - Added a _read_lines() method to the StyleChecker class
- that extracts the lines from a file.
- - Replaced part of _process_file() with a call to the new
- _read_lines() method.
- - Replaced another part of _process_file() with a call
- to the new CarriageReturnProcessor.process() method.
-
- * Scripts/webkitpy/style/processors/common.py:
- - Replaced the check_no_carriage_return() function with a
- new CarriageReturnProcessor class.
-
- * Scripts/webkitpy/style/processors/common_unittest.py:
- - Renamed the CarriageReturnTest class to
- CarriageReturnProcessorTest and updated it as necessary.
-
-2010-03-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Started using the logging module in check-webkit-style.
- This provides more options for debugging and a more flexible,
- uniform way to report messages to the end-user.
-
- https://bugs.webkit.org/show_bug.cgi?id=35484
-
- Also included classes in a central location to facilitate
- the unit testing of logging code (setUp and tearDown of unit
- test logging configurations, etc).
-
- * Scripts/check-webkit-style:
- - Added a call to configure_logging() in the beginning of main().
- - Replaced two calls to sys.stderr.write() with appropriate
- logging calls.
-
- * Scripts/webkitpy/init/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
-
- * Scripts/webkitpy/init/logtesting.py: Added.
- - Added a UnitTestLogStream class to capture log output
- during unit tests.
- - Added a UnitTestLog class that provides convenience methods
- for unit-testing logging code.
-
- * Scripts/webkitpy/style/checker.py:
- - Added a configure_logging() method.
- - Added a _LevelLoggingFilter class to filter out log messages
- above a certain logging level.
- - Removed the _stderr_write() method from the StyleChecker class
- and replaced its use with appropriate logging calls.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added a ConfigureLoggingTest class to unit test the
- configure_logging() method.
- - Updated the StyleCheckerCheckFileTest class as necessary.
-
- * Scripts/webkitpy/style_references.py:
- - Added references to logtesting.UnitTestLog and
- logtesting.UnitTestLogStream.
-
-2010-03-01 Chris Fleizach <cfleizach@apple.com>
-
- Fixing broken DRT on Leopard/Tiger. Second try.
-
- AX: changes to WAI-ARIA grid aren't perceived correctly by VoiceOver
- https://bugs.webkit.org/show_bug.cgi?id=35514
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
-
-2010-03-01 Chris Fleizach <cfleizach@apple.com>
-
- Fixing broken DRT on Leopard/Tiger.
-
- AX: changes to WAI-ARIA grid aren't perceived correctly by VoiceOver
- https://bugs.webkit.org/show_bug.cgi?id=35514
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
-
-2010-03-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Eric Seidel.
-
- [GTK] plugins/setProperty.html fails on 64bit Release
- https://bugs.webkit.org/show_bug.cgi?id=35425
-
- Check invoke's return code before releasing the variant, since
- there's a chance it won't be properly initialized, leading to
- memory corruption, in some cases.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testCallback):
- (testEnumerate):
- (testDocumentOpen):
- (testWindowOpen):
- (handleCallback):
-
-2010-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by nobody. Build bustage :(
-
- Fix stupid typo that I committed even after David Levin pointed
- it out to me :(
-
- https://bugs.webkit.org/show_bug.cgi?id=35553
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-01 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: changes to WAI-ARIA grid aren't perceived correctly by VoiceOver
- https://bugs.webkit.org/show_bug.cgi?id=35514
-
- Add rowCount, columnCount for tables.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (rowCountCallback):
- (columnCountCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
-
-2010-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Work around a bug in Python's subprocess.Popen() that keeps us from
- cleaning up DumpRenderTree / test_shell properly when we finish the
- tests in new-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=35553
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-03-01 Arno Renevier <arno@renevier.net>
-
- Reviewed by Xan Lopez.
-
- webkit-build could pass unknown arguments to autogen.sh
- https://bugs.webkit.org/show_bug.cgi?id=35454
-
- * Scripts/build-webkit:
-
-2010-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Rubber-stamped by Dimitri Glazkov.
-
- Fix breakage from r55372.
-
- https://bugs.webkit.org/show_bug.cgi?id=35549
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-03-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- EWS can hang for five hours when compile output is too big
- https://bugs.webkit.org/show_bug.cgi?id=35545
-
- * Scripts/webkitpy/commands/queues.py: Limit uploads to 1MB instead of
- 5MB. AppEngine seems to not like 5MB uploads. I'm not sure what the
- limit is. Let's try 1MB for a while and see how it goes.
- * Scripts/webkitpy/networktransaction.py: Tune the default parameters
- to our exponential backoff. I'm not sure why I picked five hours as
- the retry limit. That seems way too large.
-
-2010-03-01 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- REGRESSION: Telling a WebView to go to its current WebHistoryItem is broken.
- <rdar://problem/7699371> and https://bugs.webkit.org/show_bug.cgi?id=35532
-
- * DumpRenderTree/LayoutTestController.cpp:
- (apiTestGoToCurrentBackForwardItemCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::apiTestGoToCurrentBackForwardItem):
-
- Stubs for now:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::apiTestGoToCurrentBackForwardItem):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::apiTestGoToCurrentBackForwardItem):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::apiTestGoToCurrentBackForwardItem):
-
-2010-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- General cleanup of error handling in new-run-webkit-tests.
-
- Add Port.check_build() call that is separate from Port.check_sys_deps()
- (and add a --nocheck-build flag to skip). This breaks a circular
- dependency where you would start the layout test helper before
- checking sys deps, but checking sys deps was the thing that told
- you if your binaries where there.
-
- Also, made Port.check_sys_deps(), start_helper() and stop_helper()
- optional by providing default implementations in the base class
- rather than requiring ports to implement the routines regardless
- of whether or not they were needed.
-
- Lastly, tweak a bunch of log messages to be cleaner, including
- changing messages in thirdparty/autoinstall.py to be silent at
- the default log level.
-
- http://bugs.webkit.org/show_bug.cgi?id=35416
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/passing.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/thirdparty/autoinstall.py
-
-2010-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- new-chromium-webkit-tests --platform=mac-leopard diffs are backwards
- https://bugs.webkit.org/show_bug.cgi?id=35265
-
- Some parts of the code passed arguments as
- "actual, expected" and some passed as "expected, actual".
- As you might imagine, this lead to great confusion and wrongness.
- Standardize on "expected, actual" as that's the order which is
- passed to the underlying diff tool.
-
- Based on a patch by Eric Siedel <eric@webkit.org>.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py
-
-2010-03-01 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Rolling out: http://trac.webkit.org/changeset/55348
-
- https://bugs.webkit.org/show_bug.cgi?id=35163
-
- Rolling out since the changes to autoinstall do not work
- with Python 2.4. In particular, ZipFile.extractall() was
- added in Python 2.6.
-
- * Scripts/webkitpy/__init__.py:
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/init/__init__.py: Removed.
- * Scripts/webkitpy/init/autoinstall.py: Removed.
- * Scripts/webkitpy/networktransaction.py:
- * Scripts/webkitpy/networktransaction_unittest.py:
- * Scripts/webkitpy/statusserver.py:
- * Scripts/webkitpy/thirdparty/autoinstall.py: Added.
-
-2010-03-01 Chris Jerdonek <cjerdonek@webkit.org>
-
- Unreviewed.
-
- Rolling out r55350: http://trac.webkit.org/changeset/55350
-
- https://bugs.webkit.org/show_bug.cgi?id=33639
-
- Need to roll out because this patch (pep8) depends on the newly
- rewritten autoinstall.py (r55348), which is breaking for people
- with Python 2.4:
-
- https://bugs.webkit.org/show_bug.cgi?id=35163#c21
-
- That revision also needs to be rolled out and will be rolled out next.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/processors/python.py: Removed.
- * Scripts/webkitpy/style/processors/python_unittest.py: Removed.
- * Scripts/webkitpy/style/processors/python_unittest_input.py: Removed.
- * Scripts/webkitpy/style/unittests.py:
- * Scripts/webkitpy/style_references.py:
-
-2010-02-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Exempted WebKitTools/Scripts/webkitpy/thirdparty from all
- style checks except for the whitespace/carriage_return check
- and the pep8 tab and trailing white space checks.
-
- https://bugs.webkit.org/show_bug.cgi?id=35497
-
- * Scripts/webkitpy/style/checker.py:
- - Adjusted the _PATH_RULES_SPECIFIER configuration as necessary.
- - Added enough pep8 categories to _all_categories() for the
- unit tests to pass.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the test_path_rules_specifier() unit test.
-
-2010-02-27 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by David Levin.
-
- Added Python style checking to check-webkit-style using
- the third-party pep8 module (via autoinstall).
-
- https://bugs.webkit.org/show_bug.cgi?id=33639
-
- * Scripts/webkitpy/style/checker.py:
- - Added PYTHON to FileType.
- - Updated ProcessorDispatcher to return a PythonProcessor
- for *.py files.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the ProcessorDispatcher unit tests for *.py files.
-
- * Scripts/webkitpy/style/processors/python.py: Added.
- - Added PythonProcessor class.
-
- * Scripts/webkitpy/style/processors/python_unittest.py: Added.
- - Added PythonProcessor unit tests.
-
- * Scripts/webkitpy/style/processors/python_unittest_input.py: Added.
- - Added a sample Python file to test the PythonProcessor.process()
- code path (since pep8 accepts a file path).
-
- * Scripts/webkitpy/style/unittests.py:
- - Updated the style unit test file to import python_unittest.py.
-
- * Scripts/webkitpy/style_references.py:
- - Adjusted style references to import pep8.
-
-2010-02-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by David Levin.
-
- Rewrote autoinstall.py to support unzipping *.zip files after
- download, unzipping and extracting *.tar.gz files after download,
- and copying installed files to a destination directory.
-
- https://bugs.webkit.org/show_bug.cgi?id=35163
-
- These changes will allow us to autoinstall pep8.py from the web
- and to put our third-party autoinstalled code in an explicit
- directory like webkitpy/thirdparty/autoinstalled. They should
- also speed up imports from autoinstalled *.zip packages slightly
- since *.pyc files cannot be generated when importing from
- zipped packages.
-
- * Scripts/webkitpy/__init__.py:
- - Updated the autoinstall lines to use the new autoinstall methods.
- - Added pep8.py to the list of auto-installed packages.
-
- * Scripts/webkitpy/bugzilla.py:
- - Updated mechanize import path.
-
- * Scripts/webkitpy/init/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
-
- * Scripts/webkitpy/init/autoinstall.py: Added.
- - Added AutoInstaller class.
- - Added sample testing usage to __main__.
-
- * Scripts/webkitpy/networktransaction.py:
- - Updated mechanize import path.
-
- * Scripts/webkitpy/networktransaction_unittest.py:
- - Updated mechanize import path.
-
- * Scripts/webkitpy/statusserver.py:
- - Updated mechanize import path.
-
- * Scripts/webkitpy/thirdparty/autoinstall.py: Removed.
- - Replaced with rewritten autoinstall in init/autoinstall.py.
-
-2010-02-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Change the default port for new-run-webkit-tests when running on
- a Mac from 'chromium-mac' to 'mac'. Add a '--chromium' switch to
- pick up the default platform-specific version of chromium instead.
-
- https://bugs.webkit.org/show_bug.cgi?id=35462
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-02-26 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix
-
- third time's the charm getting this path right?
-
- * pywebsocket/mod_pywebsocket/standalone.py:
-
-2010-02-26 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, build fix.
-
- * pywebsocket/mod_pywebsocket/standalone.py:
-
-2010-02-26 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Moving the script to the right location.
-
- * pywebsocket/mod_pywebsocket: Added.
- * pywebsocket/mod_pywebsocket/standalone.py: Copied from WebKitTools/pywebsocket/standalone.py.
- * pywebsocket/standalone.py: Removed.
-
-2010-02-26 Dumitru Daniliuc <dumi@chromium.org>
-
- Unreviewed, fixing the license.
-
- * pywebsocket/standalone.py:
-
-2010-02-26 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Adam Barth.
-
- Adding pywebsocket/standalone.py back to fix the Chromium webkit
- canaries. Once all layout tests pass, we can get in the patch that
- moves this directorty to WebKitTools/Scripts, update all Chromium
- scripts, and revert this patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=35464
-
- * pywebsocket: Added.
- * pywebsocket/standalone.py: Added.
-
-2010-02-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Xan Lopez.
-
- [GTK] Needs proper reporting of frame loader callbacks, in DRT
- https://bugs.webkit.org/show_bug.cgi?id=32170
-
- Fix reporting of unload handlers, so that it is emitted where
- needed, not after it.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadFinished):
- (webViewDocumentLoadFinished):
- (createWebView):
-
-2010-02-26 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Gustavo Noronha.
- Patch by Antonio Gomes <tonikitoo@webkit.org>
-
- [Gtk] Make DRT EventSender::keyDown to consider 'hardware_keycode' field when synthesizing an event.
- https://bugs.webkit.org/show_bug.cgi?id=35432
-
- When a directional key-press event (arrow keys, End, Home, PageUp,
- PageDown, etc) is synthesized by DRT's EventSender and it targets
- an editor (e.g. <input type=text>, <textare>, etc), event is processed
- by WebCore::EventHandler. On the other hand, if event target is not
- an editor, event is bubbled up to Gtk+ for processing. In such cases,
- if 'hardware_keycode' is not provided at event synthesize time
- its processing fails (at some point in gtk_bindings_activate_event),
- and no scroll action is performed.
-
- Unskip fast/events/node-event-anchor-lock.html
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
- * platform/gtk/Skipped:
-
-2010-02-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by David Levin.
-
- new-webkit-run-tests: Extraneous parenthesis in websocket_server.py
- https://bugs.webkit.org/show_bug.cgi?id=35436
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: Removed extra paren.
-
-2010-02-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by David Levin.
-
- Moved pywebsocket into the webkitpy/thirdparty directory and added
- an associated README.webkit file to the pywebsocket directory.
- This makes pywebsocket more consistent with the other third-party
- Python code in our repository.
-
- https://bugs.webkit.org/show_bug.cgi?id=35198
-
- * Scripts/run-webkit-tests:
- - Updated paths to pywebsocket.
-
- * Scripts/run-webkit-websocketserver:
- - Updated paths to pywebsocket.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - Updated paths to pywebsocket.
-
- * Scripts/webkitpy/thirdparty/pywebsocket: Copied from WebKitTools/pywebsocket.
- * Scripts/webkitpy/thirdparty/pywebsocket/README.webkit: Added.
- - Added a file containing information about the contents
- of the pywebsocket directory. This will make it easier to
- understand where the third-party code came from and what
- local changes have been made.
-
- * pywebsocket: Removed.
- * pywebsocket/COPYING: Removed.
- * pywebsocket/MANIFEST.in: Removed.
- * pywebsocket/README: Removed.
- * pywebsocket/example: Removed.
- * pywebsocket/example/echo_client.py: Removed.
- * pywebsocket/example/echo_wsh.py: Removed.
- * pywebsocket/mod_pywebsocket: Removed.
- * pywebsocket/mod_pywebsocket/__init__.py: Removed.
- * pywebsocket/mod_pywebsocket/dispatch.py: Removed.
- * pywebsocket/mod_pywebsocket/handshake.py: Removed.
- * pywebsocket/mod_pywebsocket/headerparserhandler.py: Removed.
- * pywebsocket/mod_pywebsocket/memorizingfile.py: Removed.
- * pywebsocket/mod_pywebsocket/msgutil.py: Removed.
- * pywebsocket/mod_pywebsocket/standalone.py: Removed.
- * pywebsocket/mod_pywebsocket/util.py: Removed.
- * pywebsocket/setup.py: Removed.
- * pywebsocket/test: Removed.
- * pywebsocket/test/config.py: Removed.
- * pywebsocket/test/mock.py: Removed.
- * pywebsocket/test/run_all.py: Removed.
- * pywebsocket/test/test_dispatch.py: Removed.
- * pywebsocket/test/test_handshake.py: Removed.
- * pywebsocket/test/test_memorizingfile.py: Removed.
- * pywebsocket/test/test_mock.py: Removed.
- * pywebsocket/test/test_msgutil.py: Removed.
- * pywebsocket/test/test_util.py: Removed.
- * pywebsocket/test/testdata: Removed.
- * pywebsocket/test/testdata/handlers: Removed.
- * pywebsocket/test/testdata/handlers/blank_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/origin_check_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/sub: Removed.
- * pywebsocket/test/testdata/handlers/sub/exception_in_transfer_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/sub/no_wsh_at_the_end.py: Removed.
- * pywebsocket/test/testdata/handlers/sub/non_callable_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/sub/plain_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/sub/wrong_handshake_sig_wsh.py: Removed.
- * pywebsocket/test/testdata/handlers/sub/wrong_transfer_sig_wsh.py: Removed.
-
-2010-02-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Changed the diff_parser module to log to a module-specific
- logging.logger rather than the root logger.
-
- https://bugs.webkit.org/show_bug.cgi?id=35391
-
- * Scripts/webkitpy/diff_parser.py:
-
-2010-02-26 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] LayoutTestController.numberOfPages() should have default parameters
- https://bugs.webkit.org/show_bug.cgi?id=35428
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp: maxViewWidth and maxViewHeight moved to
- LayoutTestController to converge to platform independent implementation.
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Initialization of maxViewWidth and maxViewHeight added.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- - Default parameters for LayoutTestController.numberOfPages() added.
- - maxViewWidth and maxViewHeight members added.
-
-2010-02-26 Jamey Hicks <jamey.hicks@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] added QWebSettings::setInspectorUrl() and QWebSettings::inspectorUrl()
-
- Enables the use of alternate Web Inspector frontends by changing
- the location of the frontend. The location is specified by providing
- -inspector-url url
- as an argument to QtLauncher.
-
- This is required so that the Web Inspector may be run from an
- external process or an external tool such as Eclipse or Aptana may
- be used instead of the in-process Web Inspector UI.
-
- https://bugs.webkit.org/show_bug.cgi?id=35340
-
- * QtLauncher/main.cpp:
- (LauncherWindow::init):
- (LauncherApplication::handleUserOptions):
-
-2010-02-25 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add a 'passing' port implementation to new-run-webkit-tests that
- acts as a wrapper around an existing implementation but stubs out
- the actual test invocations (instead, the expected results are echoed
- back to the harness). This is useful for coverage and perf testing
- of the harness (especially perf testing as it essentially provides
- a lower bound on how fast the harness can run).
-
- Also added a --nostart-helper flag to new-run-webkit-tests so that
- you can skip starting the layout_test_helper and actually run the
- harness even if you don't have a build of that port.
-
- Also fix a bug in the 'test' port implementation to actually
- create the results directory under /tmp instead of /.
-
- https://bugs.webkit.org/show_bug.cgi?id=35370
-
- * Scripts/webkitpy/layout_tests/port/factory.py: Modified.
- * Scripts/webkitpy/layout_tests/port/passing.py: Added.
- * Scripts/webkitpy/layout_tests/port/test.py: Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Modified.
-
-2010-02-25 Eric Seidel <eric@webkit.org>
-
- Fix typo in my last change. No review.
-
- Rename run-chromium-webkit-tests to new-run-webkit-tests to stop confusion
- https://bugs.webkit.org/show_bug.cgi?id=35408
-
- * Scripts/new-run-webkit-tests:
-
-2010-02-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename run-chromium-webkit-tests to new-run-webkit-tests to stop confusion
- https://bugs.webkit.org/show_bug.cgi?id=35408
-
- * Scripts/new-run-webkit-tests: Added.
- * Scripts/run-chromium-webkit-tests: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Renamed from WebKitTools/Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py.
-
-2010-02-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- EWS leaks memory slowly
- https://bugs.webkit.org/show_bug.cgi?id=35395
-
- The EWS bots leak memory very slowly. If you run them for about a
- month, each one will take up around 1 GB of virutal memory. If you run
- several of them on one machine, you'll eventually exhaust all available
- memory and grind the bots to a halt.
-
- This patch introduces a --exit-after-iteration option to the queues so
- that we run them for a finite amount of time. Once they exit and
- restart, they'll reclaim the leaked memory. I'm not sure how many
- iterations I'll end up running them for. I'll need to sort that out
- operationally, but my initial guess is around 1000.
-
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
-
-2010-02-25 Jarkko Sakkinen <jarkko.sakkinen@tieto.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Qt WebGL support
-
- Adds toggling of WebGL support to QtLauncher.
- https://bugs.webkit.org/show_bug.cgi?id=35153
-
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleWebGL):
- (LauncherWindow::setupUI):
-
-2010-02-25 Ben Murdoch <benm@google.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- The target element of a Touch should be the target where that touch originated, not where it is now.
- https://bugs.webkit.org/show_bug.cgi?id=34585
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint): Fix a bug where touch points were not being given unique ids.
-
-2010-02-24 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtLauncher has a border when running on QGraphicsView mode
- https://bugs.webkit.org/show_bug.cgi?id=35352
-
- Fix 2-pixels frame on each border of QtLauncher when running on QGraphicsView mode.
-
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
-
-2010-02-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- When the run-chromium-webkit-tests code was landed and the code was
- refactored into the 'port' package, I accidentally broke using
- http_server.py or websocket_server.py as command-line scripts
- (the constructors needed a port object they weren't getting). This
- change fixes them so that --server start|stop actually works.
-
- As a part of this, the two files need to be able to call port.get(),
- but doing that is awkward from a file inside the package, so I moved
- get() into factory.py and imported that into __init__.py so that
- http_server.py and websocket_server.py can just import factory.
-
- https://bugs.webkit.org/show_bug.cgi?id=35316
-
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-02-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- Fix the function signature for check_sys_deps on the mac port, and
- fix the ordering of port_obj.check_sys_deps() and
- port_obj.start_helper() (helper needs to be started before we check
- the system configuration).
-
- http://bugs.webkit.org/show_bug.cgi?id=35367
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
-
-2010-02-24 James Robinson <jamesr@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Provide default username parameter to SVN.commit_with_message().
-
- * Scripts/webkitpy/scm.py:
-
-2010-02-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Check the proper directory for a WebKit SVN version (Chromium does
- not check out the entire WebKit tree directly, but rather pulls
- individual subdirectories. So, checking for the SVN version in
- WebKit/WebCore rather than just in WebKit works more reliably across
- different ports).
-
- http://bugs.webkit.org/show_bug.cgi?id=35321
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-02-24 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=35357
- Two editing tests fail after DumpRenderTree run loop changes
-
- AppKit decided that it wanted to group all editing commands for some reason (and thus undo
- reverted them all at once).
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Reverted the change that made DumpRenderTree use -[NSApplication run].
- (runTest): Ditto.
- (-[DumpRenderTreeApplication isRunning]): Override isRunning with a function that always
- returns YES. This is another way to make the Java plug-in work.
-
-2010-02-23 Adam Roben <aroben@apple.com>
-
- Make commit-log-editor find just-added ChangeLog files
-
- Fixes <http://webkit.org/b/35294> commit-log-editor doesn't find
- just-added ChangeLog files
-
- Reviewed by Dave Levin.
-
- * Scripts/commit-log-editor:
- (top level): Modified the regular expression that's used to find
- modified ChangeLog files to also look for just-added ChangeLog files.
-
-2010-02-24 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- check-webkit-style false positive for WebCore forwarding header
- https://bugs.webkit.org/show_bug.cgi?id=34604
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-02-23 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=22602
- Enable Java in DumpRenderTree (on Mac)
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (exitApplicationRunLoop):
- (dump):
- (runTest):
- DumpRenderTree now runs an NSApplication, not just an event loop. This way, the Java plug-in
- can start without freezing.
-
- * Scripts/run-webkit-tests: Compile java sources in LayputTests/java.
-
-2010-02-23 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Need a final integration between QtLauncher and QGVLauncher
- https://bugs.webkit.org/show_bug.cgi?id=35292
-
- WebKit coding style fixes.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::resetZoom):
-
-2010-02-23 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Need a final integration between QtLauncher and QGVLauncher
- https://bugs.webkit.org/show_bug.cgi?id=35292
-
- Add cloneWindow feature to QtLauncher, when running on QGraphicsView mode.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::init):
- (LauncherWindow::cloneWindow):
- (LauncherWindow::setupUI):
-
-2010-02-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix handling of check_wdiff_install when wdiff isn't installed.
-
- http://bugs.webkit.org/show_bug.cgi?id=35304
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2010-02-23 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by NOBODY.
-
- Fix false positives for 'delete *pointer' statements.
- http://webkit.org/b/35235
-
- * WebKitTools/Scripts/webkitpy/style/processors/cpp.py:
-
-2010-02-23 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Gtk] Implement layoutTestController.numberOfPages
- https://bugs.webkit.org/show_bug.cgi?id=35228
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfPages):
-
-2010-02-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtLauncher should not use internal JavaScriptCore and WebCore interfaces
- https://bugs.webkit.org/show_bug.cgi?id=35248
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/utils.h:
-
-2010-02-23 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=34439
-
- Prompts a person for their SVN username if not already cached (by Subversion).
-
- Currently, webkit-patch is unable to commit to the SVN repo. unless the
- WebKit SVN username is already cached (from of a prior commit by hand)
- because "svn commit" (called by webkit-patch) defaults to using the system
- login name unless the username is already cached or specified on the
- command line.
-
- * Scripts/webkitpy/scm.py: Added methods SVN.has_authorization_for_realm and
- modified SVN.commit_with_message to call it. Added optional username parameter
- to method SVN.commit_with_message.
- * Scripts/webkitpy/scm_unittest.py: Added unit test methods: SVNTest.test_commit_with_username,
- SVNTest.test_has_authorization_for_realm, and SVNTest.test_not_have_authorization_for_realm.
-
-2010-02-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Add more checking for missing binaries and packages to check_sys_deps()
-
- https://bugs.webkit.org/show_bug.cgi?id=35062
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
-
-2010-02-22 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- [Gtk] check-webkit-style: GTK style should be allowed in WebKitTools/DumpRenderTree/gtk
- https://bugs.webkit.org/show_bug.cgi?id=35229
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-02-22 James Robinson <jamesr@chromium.org>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-22 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler.
-
- Remove DRT hack that turns off hardware acceleration with older QuickTimes
- https://bugs.webkit.org/show_bug.cgi?id=35275
-
- Now that WebKit does a version check to avoid a QuickTime-related
- crash (r55100), DumpRenderTree does not need to.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-02-22 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Build the DRT in debug on Mac OS X
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2010-02-22 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add support for layout tests on Symbian
- https://bugs.webkit.org/show_bug.cgi?id=31589
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2010-02-20 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved simplejson into webkitpy/thirdparty directory.
-
- https://bugs.webkit.org/show_bug.cgi?id=35196
-
- * Scripts/run-chromium-webkit-tests:
- - Added webkitpy/thirdparty to the script's search path.
-
- * Scripts/webkitpy/thirdparty/simplejson: Copied from WebKitTools/simplejson.
- - Copied simplejson directory.
-
- * simplejson: Removed.
- * simplejson/LICENSE.txt: Removed.
- * simplejson/README.txt: Removed.
- * simplejson/__init__.py: Removed.
- * simplejson/_speedups.c: Removed.
- * simplejson/decoder.py: Removed.
- * simplejson/encoder.py: Removed.
- * simplejson/jsonfilter.py: Removed.
- * simplejson/scanner.py: Removed.
-
-2010-02-20 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Moved BeautifulSoup to webkitpy/thirdparty directory.
-
- https://bugs.webkit.org/show_bug.cgi?id=35195
-
- * Scripts/webkitpy/BeautifulSoup.py: Removed.
- - Moved to webkitpy/thirdparty.
-
- * Scripts/webkitpy/bugzilla.py:
- - Updated import statement.
-
- * Scripts/webkitpy/bugzilla_unittest.py:
- - Updated import statement.
-
- * Scripts/webkitpy/buildbot.py:
- - Updated import statement.
-
- * Scripts/webkitpy/buildbot_unittest.py:
- - Updated import statement.
-
- * Scripts/webkitpy/statusserver.py:
- - Updated import statement.
-
- * Scripts/webkitpy/thirdparty/BeautifulSoup.py: Copied from WebKitTools/Scripts/webkitpy/BeautifulSoup.py.
-
-2010-02-20 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Created a directory for third-party Python code, and moved
- autoinstall.py into it.
-
- https://bugs.webkit.org/show_bug.cgi?id=34540
-
- * Scripts/webkitpy/__init__.py:
- - Updated "import autoinstall" statement.
-
- * Scripts/webkitpy/autoinstall.py: Removed.
- - Moved to thirdparty/autoinstall.py.
-
- * Scripts/webkitpy/thirdparty: Added.
- * Scripts/webkitpy/thirdparty/__init__.py: Added.
- * Scripts/webkitpy/thirdparty/autoinstall.py: Copied from WebKitTools/Scripts/webkitpy/autoinstall.py.
-
-2010-02-20 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed, obvious fix for the python failure in our new buildbot
- step:
-
- http://build.webkit.org/builders/GTK Linux 32-bit Release/builds/9075/steps/API tests/logs/err.text
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-02-19 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by David Levin.
-
- Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases
- https://bugs.webkit.org/show_bug.cgi?id=35147
-
- * Scripts/build-webkit: Handle new flag.
-
-2010-02-19 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Shinichiro Hamaji.
-
- [style-queue] should not complain about identifier names with underscores under WebKit/efl/ewk/
- https://bugs.webkit.org/show_bug.cgi?id=35091
-
- White list unix_hacker_style names in WebKit/efl/ewk because these
- are used in the EFL API.
-
- * Scripts/webkitpy/style/checker.py:
- - Filter out readability/naming on WebKit/efl/ewk.
-
-2010-02-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split out "prepare-rollout" from "rollout" and make --complete-rollout default
- https://bugs.webkit.org/show_bug.cgi?id=33745
-
- * Scripts/webkitpy/commands/download.py:
- - Add a new AbstractRolloutPrepCommand to share code between PrepareRollout and Rollout
- - Add PrepareRollout
- * Scripts/webkitpy/commands/download_unittest.py: Test PrepareRollout, remove CompleteRollout tests.
- * Scripts/webkitpy/steps/__init__.py: include ReopenBugAfterRollout step.
- * Scripts/webkitpy/steps/completerollout.py: Removed.
- * Scripts/webkitpy/steps/options.py: remove complete_rollout
- * Scripts/webkitpy/steps/reopenbugafterrollout.py: Added.
-
-2010-02-19 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Need a final integration between QtLauncher and QGVLauncher
- https://bugs.webkit.org/show_bug.cgi?id=35161
-
- Add animated flip support to QtLauncher when running on QGraphicsView mode.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::setupUI):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::animatedFlip):
- (WebViewGraphicsBased::animatedYFlip):
- * QtLauncher/webview.h:
- (WebViewGraphicsBased::setYRotation):
- (WebViewGraphicsBased::yRotation):
-
-2010-02-19 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement textZoomIn() and textZoomOut() in DRT's EventSender, add results
- for passing new tests and unskip the passing ones from the Skipped list.
- https://bugs.webkit.org/show_bug.cgi?id=35159
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::textZoomIn):
- (EventSender::textZoomOut):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-02-19 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] Clean-up the handling of HTML5 persistent data for LayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=35004
-
- DumpRenderTreeQt.cpp calls QWebSettings::enablePersistentStorage which sets up
- and enables all HTML5 persistent data. All the other calls for setting the
- persistent path or enabling the persistent feature are redundant.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage): No need to enable AppCache again.
- * DumpRenderTree/qt/main.cpp:
- (main): No need to setup and enable HTML5 LocalStorage again.
-
-2010-02-19 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Send the context menu event from contextClick() of EventSender
- and do not show context menu in DRT.
-
- LayoutTests:
- fast/events/contextmenu-scrolled-page-with-frame.html
-
- [Qt] DRT: Send context menu event from EventSender
- https://bugs.webkit.org/show_bug.cgi?id=35131
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::contextClick):
-
-2010-02-18 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Moved parsing-related code to a separate file. Also increased
- the unit test coverage in some affected areas.
-
- https://bugs.webkit.org/show_bug.cgi?id=34675
-
- This revision contains no new functionality.
-
- * Scripts/check-webkit-style:
- - Adjusted to call check_webkit_style_parser().
-
- * Scripts/webkitpy/style/checker.py:
- - Added check_webkit_style_parser() to pass checker.py
- configuration settings to optparser.py.
- - Moved _create_usage() and the CommandOptionValues,
- DefaultCommandOptionValues, ArgumentPrinter, and
- ArgumentParser classes to optparser.py.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Moved the ProcessorOptionsTest, ArgumentPrinterTest, and
- ArgumentParserTest classes to optparser.py.
- - Added the CheckWebKitStyleFunctionTest class to check
- the check_webkit_style_configuration() and
- check_webkit_style_parser() code paths.
-
- * Scripts/webkitpy/style/optparser.py: Added.
- - From checker.py, added _create_usage() and the
- CommandOptionValues, DefaultCommandOptionValues,
- ArgumentPrinter, and ArgumentParser classes.
- - In the ArgumentParser constructor--
- - Added all_categories as a required parameter.
- - Removed the default value from the default_options parameter.
-
- * Scripts/webkitpy/style/optparser_unittest.py: Added.
- - From checker_unittest.py, added the ProcessorOptionsTest,
- ArgumentPrinterTest, and ArgumentParserTest classes.
- - Added the CreateUsageTest class to test _create_usage().
-
- * Scripts/webkitpy/style/unittests.py:
- - Added optparser_unittest import.
-
-2010-02-18 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=35134
- <rdar://problem/7246280> Crash when a plugin calls NPN_SetStatus(0)
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testSetStatus):
- (pluginInvoke):
- Added a setStatus() method.
-
-2010-02-18 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Particularly constructed WebFrames can try to access a null HistoryItem
- <rdar://problem/7638892> and https://bugs.webkit.org/show_bug.cgi?id=35063
-
- Add the specific ability to test this API pattern.
-
- For now only on Mac, perhaps on the main Windows port later, probably not relevant for other ports.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (apiTestNewWindowDataLoadBaseURLCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (-[APITestDelegate initWithCompletionCondition:]):
- (-[APITestDelegate webView:didFailLoadWithError:forFrame:]):
- (-[APITestDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[APITestDelegate webView:didFinishLoadForFrame:]):
- (LayoutTestController::apiTestNewWindowDataLoadBaseURL): Create a WebView, do a loadData: in its
- mainFrame, and synchronously wait for main load completion.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::apiTestNewWindowDataLoadBaseURL):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::apiTestNewWindowDataLoadBaseURL):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::apiTestNewWindowDataLoadBaseURL):
-
-2010-02-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Teach resolve-ChangeLogs to act as a merge-driver for Git
-
- https://bugs.webkit.org/show_bug.cgi?id=28721
-
- To enable automatic merging of ChangeLog files, use the following command:
-
- git config merge.changelog.driver "resolve-ChangeLogs --merge-driver %O %A %B"
-
- The driver always works in "downstream" merge mode, meaning
- it will always put the user's changelog entries on top.
-
- * Scripts/resolve-ChangeLogs:
-
-2009-12-05 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Eric Seidel.
-
- Enable running of GTK+ API tests.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-gtk-tests: Added.
-
-2010-02-18 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Adam Barth.
-
- debug-safari doesn't pass --debug option to gdb-safari on MacOSX
- https://bugs.webkit.org/show_bug.cgi?id=34411
-
- * Scripts/webkitdirs.pm:
-
-2010-02-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run-chromium-webkit-tests --platform=mac-leopard needs to run build-dumprendertree
- https://bugs.webkit.org/show_bug.cgi?id=35053
-
- * Scripts/webkitpy/layout_tests/port/base.py: Add script_path() function for finding scripts.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Remove unused argument.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Make sure that calling webkit-build-directory works even if Scripts/ is not in the user's path.
- - Call build-dumprendertree (and make sure it succeeds) before running the tests.
-
-2010-02-16 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored check-webkit-style's ProcessorOptions class into two
- classes. This revision contains no new functionality.
-
- https://bugs.webkit.org/show_bug.cgi?id=34674
-
- Divided the ProcessorOptions class into a CommandOptionValues
- class (the result of parsing the command-line options) and
- a StyleCheckerConfiguration class (which configures the main
- StyleChecker).
-
- * Scripts/check-webkit-style:
- - Updated main() to convert the parsed command option values
- to a StyleCheckConfiguration instance prior to constructing
- a StyleChecker.
-
- * Scripts/webkitpy/style/checker.py:
- - Added check_webkit_style_configuration() to convert a
- CommandOptionValues instance into a StyleCheckerConfiguration
- instance.
- - Renamed the ProcessorOptions class to CommandOptionValues.
- - In the CommandOptionValues class--
- - Replaced the filter_configuration attribute with the
- simpler filter_rules attribute.
- - Removed the max_reports_per_error attribute.
- - Moved the is_reportable() method to the new
- StyleCheckerConfiguration class.
- - Removed the base_filter_rules attribute from the
- DefaultCommandOptionValues class.
- - In the ArgumentParser class--
- - Added base_filter_rules to the constructor.
- - Changed the parse() method to return a CommandOptionValues
- instance instead of a ProcessorOptions instance.
- - Created a StyleCheckerConfiguration class.
- - Added the data attributes max_reports_per_category,
- stderr_write, and verbosity.
- - Added is_reportable() (moved from the ProcessorOptions
- class) and write_style_error() (moved from the
- DefaultStyleErrorHandler class).
- - In the StyleChecker class--
- - Replaced the ProcessorOptions options attribute with the
- StyleCheckerConfiguration _configuration attribute.
- - Removed the _stderr_write attribute.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the existing unit test classes as necessary.
- - Added a StyleCheckerConfigurationTest class.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Updated the DefaultStyleErrorHandler class to accept a
- StyleCheckerConfiguration instance instead of a ProcessorOptions
- instance and an stderr_write method.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Updated the unit test classes as necessary.
-
- * Scripts/webkitpy/style/filter.py:
- - Addressed the FIXME in the FilterConfiguration class to change
- the user_rules attribute to _user_rules (since it is now
- accessed only internally).
-
- * Scripts/webkitpy/style/filter_unittest.py:
- - Updated to reflect the change from user_rules to _user_rules.
-
-2010-02-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Share the DRT values maxViewWidth/Height among ports
- https://bugs.webkit.org/show_bug.cgi?id=34474
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pageNumberForElementByIdCallback):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::maxViewWidth):
- (LayoutTestController::maxViewHeight):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (sizeWebViewForCurrentTest):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (createWebViewAndOffscreenWindow):
-
-2010-02-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Win] Implement test functions for printing
- https://bugs.webkit.org/show_bug.cgi?id=34570
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
-
-2010-02-17 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- websocket/tests/cookies/httponly-cookie.pl fails every time under run-chromium-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=35001
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: add -x flag to run pywebsocket.
-
-2010-02-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: Misses variables that contain underscores.
- https://bugs.webkit.org/show_bug.cgi?id=33724
-
- - Check identifiers whose types are unsigned.
- - Check bitfields properly.
-
- * Scripts/webkitpy/style/processors/cpp.py:
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
-
-2010-02-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style should report the number of files checked
- https://bugs.webkit.org/show_bug.cgi?id=34971
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-02-17 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Ariya Hidayat.
-
- Make possible Qt DRT to get total number of pages to be printed
-
- LayoutTests:
- printing/numberOfPages.html
-
- [Qt] DRT: Get total number of pages to be printed
- https://bugs.webkit.org/show_bug.cgi?id=34955
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-02-17 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Update to use new property name.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-02-17 Julien Chaffraix <jchaffraix@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Remove some warnings seen when building Qt
- https://bugs.webkit.org/show_bug.cgi?id=35017
-
- Using a machine without the needed tools to build WebKit leads to
- several errors and warnings.
-
- * Scripts/webkitdirs.pm: Refactored the code testing the command's
- presence into a commandExists routine. While doing so removed, stderr
- output as it usually does not give anything more than our message. Also
- added a Qt check for qmake that was missing.
-
-2010-02-17 Xan Lopez <xlopez@igalia.com>
-
- Rubber-stamped by Gustavo Noronha.
-
- Disable Java by default in DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-02-15 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Some minor check-webkit-style code clean-ups. This revision
- contains no new functionality.
-
- https://bugs.webkit.org/show_bug.cgi?id=34932
-
- * Scripts/check-webkit-style:
- - Replaced the call to webkit_argument_defaults() with a
- default parameter in the ArgumentParser constructor.
-
- * Scripts/webkitpy/style/checker.py:
- - Removed the WEBKIT prefix from the default global variables.
- - Prefixed several of the global variables with an underscore
- to reflect that they are used internally.
- - Renamed _DEFAULT_FILTER_RULES to _BASE_FILTER_RULES.
- - Addressed a FIXME by changing the _PATH_RULES_SPECIFIER
- configuration from list-tuple pairs to list-list pairs.
- - Renamed style_categories() to _all_categories().
- - Renamed webkit_argument_defaults() to _check_webkit_style_defaults().
- - Renamed the ArgumentDefaults class to DefaultCommandOptionValues.
- - In the ArgumentParser class--
- - Renamed the doc_print attribute to stderr_write.
- - Other minor updates.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated the import statements and unit test classes as necessary.
- - Added assertions to test _PATH_RULES_SPECIFIER more fully.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Updated the unit test classes as necessary.
- - Changed StyleErrorHandlerTestBase to store a list of error
- messages rather than just the last one.
-
- * Scripts/webkitpy/style/filter.py:
- - Altered FilterConfiguration._path_rules_from_path()
- to convert the path_rules list to a tuple.
-
- * Scripts/webkitpy/style/filter_unittest.py:
- - Updated the unit tests to reflect the change from tuples to
- lists in the _PATH_RULES_SPECIFIER configuration variable.
-
-2010-02-16 Mark Rowe <mrowe@apple.com>
-
- Let's not check garbage in to common build scripts and hose the world now eh guys?
-
- * Scripts/webkitdirs.pm:
-
-2010-02-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- re-factor Skipped list parsing code into multiple functions and unit test it
- https://bugs.webkit.org/show_bug.cgi?id=34986
-
- * Scripts/test-webkitpy: Add new unit test.
- * Scripts/webkitpy/layout_tests/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
- * Scripts/webkitpy/layout_tests/port/mac.py: Split parsing function into multiple functions for testing.
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py: Added.
-
-2010-02-16 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Enable 'auto-resize-window' in our DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-02-15 Martin Robinson <mrobinson@webkit.org>
-
- Reviewed by Darin Adler.
-
- check-webkit-style should not complain about NULL sentinel in calls to g_strconcat and g_strjoin
- https://bugs.webkit.org/show_bug.cgi?id=34834
-
- * Scripts/webkitpy/style/processors/cpp.py:
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
-
-2010-02-12 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Kevin Decker.
-
- <rdar://problem/7130641> Browser objects identity is not preserved by Safari
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke): Added methods for checking object identity (via refcount).
-
-2010-02-15 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Simon Hausmann.
-
- [Qt] DRT: Support evaluateInWebInspector(), setTimelineProfilingEnabled().
-
- Support LayoutTestController.evaluateInWebInspector(), setTimelineProfilingEnabled() in Qt DRT.
-
- https://bugs.webkit.org/show_bug.cgi?id=33096
-
- This allows the following tests to pass:
-
- inspector/console-format-collections.html
- inspector/styles-iframe.html
- inspector/syntax-highlight-css.html
- inspector/syntax-highlight-javascript.html
- inspector/timeline-enum-stability.html
- inspector/timeline-layout.html
- inspector/timeline-mark-timeline.html
- inspector/timeline-paint.html
- inspector/timeline-parse-html.html
- inspector/timeline-recalculate-styles.html
- inspector/timeline-script-tag-1.html
- inspector/timeline-script-tag-2.html
- inspector/timeline-trivial.html
- inspector/cookie-resource-match.html
- inspector/elements-img-tooltip.html
- inspector/elements-panel-selection-on-refresh.html
- inspector/inspected-objects-not-overriden.html
- inspector/timeline-event-dispatch.html
- inspector/timeline-network-resource.html
- inspector/elements-panel-rewrite-href.html
- inspector/console-dir.html
- inspector/console-dirxml.html
- inspector/console-format.html
- inspector/console-tests.html
- inspector/elements-panel-structure.html
- inspector/evaluate-in-frontend.html
- inspector/console-clear.html
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::isWebInspectorTest):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::display):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- (LayoutTestController::setTimelineProfilingEnabled):
- (LayoutTestController::display):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Update rebaseline-chromium-webkit-tests to work with the new code
- structure (port objects instead of path_utils and platform_utils).
-
- Added a path_to_test_expectations_file() to the Port interface.
-
- Fixed a bug in the chromium_* platform implementations where the
- 'target' option was assumed to be set.
-
- * Scripts/rebaseline-chromium-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-02-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- webkit-build-directory misuses terms
- https://bugs.webkit.org/show_bug.cgi?id=34822
-
- * Scripts/webkit-build-directory:
- - Add --top-level and --configuration options and make using one of them required.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Use --top-level instead of --base.
-
-2010-02-14 Chang Shu <Chang.Shu@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Enable appcache feature.
- https://bugs.webkit.org/show_bug.cgi?id=34713
-
- Re-land r54543 without the change in DumpRenderTree/qt/main.cpp.
- Persistent storage for AppCache is already initialized in
- DumpRenderTreeQt.cpp.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
-
-2010-02-12 Chang Shu <Chang.Shu@nokia.com>
-
- Not Reviewed.
-
- Change case of my email address as a work-around for the following bug.
- https://bugs.webkit.org/show_bug.cgi?id=34717
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-12 Darin Adler <darin@apple.com>
-
- Ignore compiled Python in more of webkitpy.
-
- * Scripts/webkitpy/style/processors: Added property svn:ignore.
-
-2010-02-12 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Qt DRT now dump the frame loader callbacks when LayoutTestController()
- method is called.
-
- LayoutTests:
- http/tests/security/mixedContent/data-url-script-in-iframe.html
- http/tests/security/mixedContent/empty-url-plugin-in-frame.html
- http/tests/security/mixedContent/insecure-css-in-iframe.html
- http/tests/security/mixedContent/insecure-iframe-in-iframe.html
- http/tests/security/mixedContent/insecure-image-in-iframe.html
- http/tests/security/mixedContent/insecure-plugin-in-iframe.html
- http/tests/security/mixedContent/insecure-script-in-iframe.html
- http/tests/security/mixedContent/redirect-http-to-https-script-in-iframe.html
- http/tests/security/mixedContent/redirect-https-to-http-script-in-iframe.html
-
- [Qt] Make possible Qt DRT dump frame load callbacks
- https://bugs.webkit.org/show_bug.cgi?id=34702
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpFrameLoadCallbacks):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-02-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Antti Koivisto.
-
- Make QtLauncher somewhat useable on S60.
-
- Show the window fullscreen to make scrollbars appear, resize
- the toolbar buttons to 16x16 to give more screen space to
- web content and moved the location lineedit into a separate
- line.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- * QtLauncher/mainwindow.cpp:
- (MainWindow::buildUI):
-
-2010-02-12 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Support frameset flattening
- https://bugs.webkit.org/show_bug.cgi?id=32717
-
- Add FrameSet Flattening support to Mac DRT.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setFrameSetFlatteningEnabled):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setFrameSetFlatteningEnabled):
- * DumpRenderTree/LayoutTestController.cpp:
- (setFrameSetFlatteningEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setFrameSetFlatteningEnabled):
-
-2010-02-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix typos in driver_test.py
-
- https://bugs.webkit.org/show_bug.cgi?id=34810
-
- * Scripts/webkitpy/layout_tests/driver_test.py:
-
-2010-02-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Make it possible to toggle the use of QGraphicsView in QtLauncher at run-time
- https://bugs.webkit.org/show_bug.cgi?id=34844
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::initializeView):
- (LauncherWindow::setupUI):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
-
-2010-02-11 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- WebSocket ignores HttpOnly cookies, but should use in Handshake.
- https://bugs.webkit.org/show_bug.cgi?id=34289
-
- Update pywebsocket to 0.4.8, which supports cgi directories.
- run-webkit-tests and run-webkit-websocketserver will run
- pywebsocket, specifying /websocket/test/cookies as cgi directory.
-
- * Scripts/run-webkit-tests:
- * Scripts/run-webkit-websocketserver:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
-
-2010-02-11 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Dan Bernstein.
-
- [Mac] Duplicated setXSSAuditorEnabled preference at Mac DRT
- https://bugs.webkit.org/show_bug.cgi?id=34798
-
- Remove duplicated setXSSAuditorEnabled preference at Mac DRT
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-02-11 Eric Seidel <eric@webkit.org>
-
- No review, build fix only.
-
- webkitdirs.pm has a crazy amount of duplicated feature detection code
- https://bugs.webkit.org/show_bug.cgi?id=34869
-
- * Scripts/build-webkit: Fix typo which broke bots.
-
-2010-02-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkitdirs.pm has a crazy amount of duplicated feature detection code
- https://bugs.webkit.org/show_bug.cgi?id=34869
-
- * Scripts/build-webkit: Use the new hotness.
- * Scripts/run-webkit-tests: ditto
- * Scripts/webkitdirs.pm: Remove a bunch of bad duplicate code.
- * Scripts/webkitperl/features.pm: Added.
- - Simplified the 10 methods in webkitdirs.pm into 2 exported methods in this new file.
-
-2010-02-11 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=34830
-
- Makes method User.prompt static and adds the parameter repeat
- to prompt the user up to repeat times.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/bugzilla.py: Substituted method User.prompt for method raw_input.
- * Scripts/webkitpy/commands/upload.py: Ditto
- * Scripts/webkitpy/credentials.py: Ditto
- * Scripts/mock_bugzillatool.py: Updated prototype of MockUser.prompt to match User.prompt.
- * Scripts/webkitpy/user.py: Made method prompt static and added parameter repeat.
- * Scripts/webkitpy/user_unittest.py: Added.
-
-2010-02-10 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Darin Adler.
-
- Allow underscored identifiers in CSSParser.cpp
-
- Flex (http://flex.sourceforge.net/) uses identifiers named as yy_*.
- WebCore/css/CSSParser.cpp needs to handle some such identifiers.
- We should relax the style rule for the file to allow underscored identifiers.
-
- https://bugs.webkit.org/show_bug.cgi?id=34787
-
- * Scripts/webkitpy/style/checker.py:
-
-2010-02-11 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Remove DrawTest, the application I used when bringing up SVG support on the Mac.
- The code hasn't been touched (or used) in years. No sense in keeping it in trunk.
-
- * Scripts/build-drawtest: Removed.
- * Scripts/run-drawtest: Removed.
- * DrawTest: Removed.
-
-2010-02-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Need a command to clear r+ on obsolete patches in the pending-commit queue.
- https://bugs.webkit.org/show_bug.cgi?id=34863
-
- Unfortunately our http://webkit.org/pending-commit bugzilla query is not
- smart enough to ignore obsolete patches, so bugs show up there which are
- still open, but do not have patches ready for landing on them.
- This new command "clean-pending-commit" will remove r+ from obsolete patches
- in the pending-commit list.
-
- * Scripts/test-webkitpy: Add grammar_unittest
- * Scripts/webkitpy/commands/upload.py: Add clean-pending-commit and make assign-to-committer ignore cq+'d patches.
- * Scripts/webkitpy/grammar.py: Add join_with_separators
- * Scripts/webkitpy/grammar_unittest.py: Added.
-
-2010-02-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run-chromium-webkit-tests fails random pixel tests on Mac
- https://bugs.webkit.org/show_bug.cgi?id=34862
-
- This is due to the fact that the Mac port has an
- invalid path to the image diff tool. Currently it points
- to image_diff even though ImageDiff would be correct. We
- can't change it to the right path yet without causing the
- script to hang. ImageDiff expects to be long-running and
- be passed image data over stdin. image_diff (chromium's fork)
- expects to be passed command line arguments.
- This fix works around the random failures by disabling pixel
- tests on mac and logging if the user was trying to run with pixel
- tests enabled.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2010-02-11 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by Adam Roben.
- Try to fix build breakage from r54665.
-
- * Scripts/check-for-global-initializers:
-
-2010-02-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- Make it possible to toggle accelerated compositing from the menu
- at run-time.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::toggleAcceleratedCompositing):
- (LauncherWindow::setupUI):
-
-2010-02-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose.
- https://bugs.webkit.org/show_bug.cgi?id=34698
-
- * Scripts/build-webkit:
-
-2010-02-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix various minor bugs keeping run-chromium-webkit-tests from actually
- working on the linux and win ports of Chromium.
-
- https://bugs.webkit.org/show_bug.cgi?id=34739
-
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-02-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- run-chromium-webkit-tests --platform=mac-leopard crashes when using a custom build directory
- https://bugs.webkit.org/show_bug.cgi?id=34817
-
- This doesn't fix the root cause of us not
- correctly failing when support binaries are missing.
- This only causes the DumpRenderTree binary not to be
- missing in the custom build directory case.
- Later patches will make us correctly fail fast when
- support binaries (like DumpRenderTree or ImageDiff) are missing.
-
- * Scripts/webkit-build-directory: Added.
- - Need a way to re-use the perl logic for finding build directories in non-perl scripts.
- * Scripts/webkitpy/layout_tests/port/base.py: Add a FIXME.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Call webkit-build-directory to find the build directory instead of assuming "WebKitBuild"
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py: Add FIXMEs.
-
-2010-02-10 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Add Windows complex text support.
-
- https://bugs.webkit.org/show_bug.cgi?id=34759
-
- * wx/build/settings.py:
-
-2010-02-10 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix. Add stub for new LayoutTestController method.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::numberOfPages):
-
-2010-02-10 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed. Roll out r54626, because it broke GTK and Win build.
- https://bugs.webkit.org/show_bug.cgi?id=32717
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
-
-2010-02-10 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Support frameset flattening
- https://bugs.webkit.org/show_bug.cgi?id=32717
-
- Add FrameSet Flattening support to Mac DRT.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setFrameSetFlatteningEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setFrameSetFlatteningEnabled):
-
-2010-02-08 Jon Honeycutt <jhoneycutt@apple.com>
-
- <rdar://problem/7436875> Crash in Flash when visiting
- http://www.cctv.com/default.shtml (WER ID 819298200) [watson 2502260]
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (executeScript):
- Moved to an earlier point in the file.
- (NPP_New):
- If the plug-in has an onDestroy attribute, store its value.
- (NPP_Destroy):
- If the plug-in has code to run on destruction, run it and free it.
-
-2010-02-10 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement pageNumberForElementById() method in Qt DRT LayoutTestController,
- to make Qt DRT able to get page number.
-
- LayoutTests:
- printing/page-break-always.html
- printing/pageNumerForElementById.html
- printing/css2.1/page-break-before-000.html
- printing/css2.1/page-break-after-000.html
- printing/css2.1/page-break-after-004.html
- printing/css2.1/page-break-before-001.html
- printing/css2.1/page-break-after-001.html
- printing/css2.1/page-break-after-002.html
- printing/css2.1/page-break-before-002.html
- printing/css2.1/page-break-inside-000.html
-
- [Qt] Make possible Qt DRT get a page number for element by ID
- https://bugs.webkit.org/show_bug.cgi?id=34777
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::pageNumberForElementById):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-02-10 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make run-iexploder-tests work on Linux.
- https://bugs.webkit.org/show_bug.cgi?id=34748
-
- Extract the platform dependant Apache configuration checking code in httpd.pm to a separate function
- called getHTTPDConfigPathForTestDirectory and use run-launcher instead of run-safari if run on Linux.
-
- * Scripts/run-iexploder-tests:
- * Scripts/webkitperl/httpd.pm:
-
-2010-02-09 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed. Roll-out r54543, because layout tests crash in debug mode.
- https://bugs.webkit.org/show_bug.cgi?id=34713
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2010-02-09 Alejandro G. Castro <alex@igalia.com>
-
- Unreviewed; added myself to committers
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-09 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Webkit in Qt does not have window.showModalDialog
- https://bugs.webkit.org/show_bug.cgi?id=25585
-
- Set the modality flag when createWindow is called with window type WebWindowDialog.
-
- * QtLauncher/main.cpp:
- (WebPage::createWindow):
-
-2010-02-09 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed trivial warning fix.
-
- * Scripts/build-webkit:
-
-2010-02-09 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- Add possibility of passing parameters to build-webkit by environment variable,
- because the buildbot slaves can't control the arguments.
-
- * Scripts/build-webkit:
-
-2010-02-09 Chang Shu <Chang.Shu@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Enable appcache feature.
- https://bugs.webkit.org/show_bug.cgi?id=34713
-
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2010-02-09 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- Provide a way to get total number of pages to be printed
- https://bugs.webkit.org/show_bug.cgi?id=34699
-
- * DumpRenderTree/LayoutTestController.cpp:
- (parsePageParameters):
- (pageNumberForElementByIdCallback):
- (numberOfPagesCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::numberOfPages):
-
-2010-02-08 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=34727
- Assertion crashes and freezes when plug-in property access results in an exception
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginGetProperty): Raise an exception when accessing a particular property.
- (pluginSetProperty): Ditto.
- (pluginInvoke): Added methods to get and set host object properties.
-
-2010-02-08 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Backport No'am Rosenthal's frame rate measurement
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherApplication::handleUserOptions):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::enableFrameRateMeasurement):
- (WebViewGraphicsBased::updateFrameRate):
- (WebViewGraphicsBased::paintEvent):
- * QtLauncher/webview.h:
-
-2010-02-08 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Make overridePreference complain when it does not
- support the preference given.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2010-02-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Set stdout/stderr to binary mode for DRT on Windows
-
- This makes sure we don't end up with lots of CRLFs in the
- DRT output, which breaks tons of results. Matches what
- the Windows DRT does.
-
- * DumpRenderTree/qt/main.cpp:
-
-2010-02-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Build fix for Qt on Windows.
-
- Don't use noreturn directly since it's a gcc attribute.
- Instead use the NO_RETURN macro from AlwaysInline.h
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/utils.h:
-
-2010-02-05 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Suppressed check-webkit-style's underscore check in Qt's autotests.
- Also made the path-specific filter check case-insensitive.
-
- https://bugs.webkit.org/show_bug.cgi?id=34574
-
- * Scripts/webkitpy/style/checker.py:
- - Added a list element to _PATH_RULES_SPECIFIER for
- directories that should be excluded from the
- "readability/naming" category (the category that relates to
- underscores in identifiers, for example).
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added an "end-to-end" test for "WebKit/qt/tests/".
-
- * Scripts/webkitpy/style/filter.py:
- - Altered FilterConfiguration's should_check() method to
- check for path substring matches case-insensitively.
-
- * Scripts/webkitpy/style/filter_unittest.py:
- - Added a test to check case-insensitive path substring matching.
-
- * Scripts/webkitpy/style/processors/cpp.py:
- - Removed the hard-coded "WebKit/gtk/webkit/" path reference
- since this is now taken care of by the _PATH_RULES_SPECIFIER
- configuration variable.
-
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
- - Removed the unit test for the GTK directory since this
- is now taken care of by the checker._PATH_RULES_SPECIFIER
- end-to-end tests.
-
-2010-02-08 Leith Bade <leith@leithalweapon.geek.nz>
-
- Reviewed by Darin Adler.
-
- Fixes: https://bugs.webkit.org/show_bug.cgi?id=34637
- Corrects the newline inserted into WebKitOutputDir, and WebKitLibrariesDir Windows
- environemnt variables when there is a space in the user's /home path.
-
- * Scripts/webkitdirs.pm:
- - Added missing quotes around $sourceDir in argument list of cygpath in determineWindowsSourceDir().
-
-2010-02-05 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Oliver Hunt.
-
- https://bugs.webkit.org/show_bug.cgi?id=34670
- TestNetscapePlugin should work with Firefox
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp: (NPP_New): Default to Carbon if
- browser doesn't tell what it supports.
-
-2010-02-05 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Gustavo Noronha Silva.
-
- [Gtk] Implement layoutTestController.pageNumberForElementById
- https://bugs.webkit.org/show_bug.cgi?id=34572
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pageNumberForElementById):
-
-2010-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add a simple test implementation and the WebKit Mac implementation
- for the layout_tests/port package. Also add a simple test driver of
- that interface.
-
- https://bugs.webkit.org/show_bug.cgi?id=34511
-
- * Scripts/webkitpy/layout_tests/driver_test.py: Added.
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/mac.py: Added.
- * Scripts/webkitpy/layout_tests/port/test.py: Added.
-
-2010-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Refactor the port package into an object-oriented style and merge
- path_utils into it. We add a 'base' and a 'chromium' object to the
- port package; this will allow us to easily add new ports (like
- WebKit Mac).
-
- https://bugs.webkit.org/show_bug.cgi?id=34511
-
- * Scripts/rebaseline-chromium-webkit-tests:
- * Scripts/run-chromium-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/base.py: Added.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Added.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/path_utils.py: Removed.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-01-19 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Dave Hyatt.
-
- Implement flattening of framesets
- https://bugs.webkit.org/show_bug.cgi?id=32717
-
- Add support for testing frame flattening with the Qt DRT
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setFrameSetFlatteningEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-02-03 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Provided a way in check-webkit-style to specify filter rules
- on a per file or folder basis, via a configuration variable.
-
- https://bugs.webkit.org/show_bug.cgi?id=33684
-
- * Scripts/webkitpy/style/checker.py:
- - Added _PATH_RULES_SPECIFIER configuration variable.
- - In ProcessorOptions class--
- - Changed the CategoryFilter attribute to FilterConfiguration.
- - Added path parameter to is_reportable().
- - Renamed ArgumentDefaults filter_rules attribute to
- base_filter_rules.
- - Updated ArgumentPrinter class.
- - Added filter rule validation to ArgumentParser (instead of
- in CategoryFilter constructor).
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated unit tests as necessary.
- - Added unit tests for PATH_RULES_SPECIFIER.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Updated DefaultStyleErrorHandler to use file path when
- calling is_reportable().
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Updated unit tests as necessary.
-
- * Scripts/webkitpy/style/filter.py:
- - Marked CategoryFilter internal with an underscore.
- - Removed argument validation from CategoryFilter.
- - Added FilterConfiguration class.
-
- * Scripts/webkitpy/style/filter_unittest.py:
- - Updated CategoryFilterTest class.
- - Added FilterConfigurationTest unit tests.
-
- * Scripts/webkitpy/style/processors/cpp.py:
- - Removed _is_test_filename() code.
- - Removed hard-coded path checks from check_include_line().
-
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
- - Removed three unit tests related to exempted files.
-
-2010-02-05 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Apply the command line options as settings to the
- graphics system.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (requiresGraphicsView):
- (LauncherApplication::handleUserOptions):
- * QtLauncher/webview.h:
- (WebViewGraphicsBased::setItemCacheMode):
-
-2010-02-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Notify user that run-webkit-tests has to be run under Cygwin
-
- The script will bail out if run under Windows shell or Msys.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2010-02-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Generate convenience headers (QWebView, etc) using qmake
-
- In Qt this is done using syncqt, but we use a pro-file instead
- that generates makefile-rules for each of the extra headers.
-
- These extra headers are installed alongside the normal headers.
-
- * Scripts/webkitdirs.pm: Run qmake and make on new API-DerivedSources
-
-2010-02-05 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed typo fix.
-
- Fix wrong whitespace alignment introduced in r54342.
-
- * Scripts/run-webkit-tests:
-
-2010-02-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Timothy Hatcher.
-
- Build fix. Remove a symbol corresponding to an inline function from the linker export
- file to prevent a weak external failure.
-
- * Scripts/check-for-weak-vtables-and-externals: Renamed from WebKitTools/Scripts/check-for-weak-vtables.
- Teach the script how to detect weak external symbols so that these errors can be caught immediately
- in the future.
-
-2010-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Oliver Hunt.
-
- [Qt] Make it possible to choose whether the launcher should
- use the traditional QWidget based QWebView or the newer
- QGraphics based QGraphicsWebView on a QGraphicsView.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::eventFilter):
- (LauncherWindow::loadStarted):
- (LauncherWindow::print):
- (LauncherWindow::screenshot):
- (LauncherWindow::setEditable):
- (LauncherWindow::setupUI):
- (main):
- * QtLauncher/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::resizeEvent):
- (GraphicsWebView::mousePressEvent):
- (GraphicsWebView::contextMenuEvent):
- * QtLauncher/webview.h:
- (WebViewTraditional::WebViewTraditional):
- (GraphicsWebView::GraphicsWebView):
- (WebViewGraphicsBased::setPage):
-
-2010-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Oliver Hunt.
-
- [Qt] QtLauncher cleanup.
-
- Refactor option handling out in utility functions and make the
- arguments more Qt compatible.
-
- * QtLauncher/main.cpp:
- (requiresGraphicsView):
- (LauncherApplication::handleUserOptions):
- * QtLauncher/utils.cpp:
- (takeOptionValue):
- (formatKeys):
- (enumToKeys):
- (appQuit):
- * QtLauncher/utils.h:
-
-2010-02-04 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- Implement a locking and scheduling mechanism for http testing sessions to be able
- to run multiple instances of run-webkit-tests parallel on the same machine.
- If a test session wants to run http tests and this feature is enabled, the pending
- sessions create lockfiles with sequential lock numbers. These locks are used to schedule
- the running test sessions in first come first served order. An exclusive lock ensures
- that the lock numbers are sequential to avoid deadlocks and starvation.
- Because the buildbot master specifies the flags used by slaves we need an environment
- variable too to be able to use the feature per-slave.
- Exporting WEBKIT_WAIT_FOR_HTTPD=1 before testing or using the --wait-for-httpd
- flag enables this feature, otherwise this patch has no effect on the testing whatsoever.
-
- https://bugs.webkit.org/show_bug.cgi?id=33153
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitperl/httpd.pm:
-
-2010-01-22 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Make run-webkit-tests work under Cygwin for the Qt port
-
- setPathForRunningWebKitApp() is implemented for the Qt port
- by using qmake to query for the location of the Qt libraries.
-
- This requires the original environment (%ENV) to be untouched,
- so launchWithCurrentEnv() was refactored to launchWithEnv(),
- and the code in openDumpTool() to not use %ENV but a %CLEAN_ENV
- instead. This has the added benefit of getting rid of the temp
- variables used for storing the current env.
-
- openDumpTool() is also refactored a bit into platform-spesific,
- port-spesific, and generic environment variables.
-
- Checks for undef was added a few places to fix Perl concat
- warnings when run-webkit-tests is aborted.
-
- https://bugs.webkit.org/show_bug.cgi?id=33895
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2010-02-04 Yuzo Fujishima <yuzo@google.com>
-
- Unreviewed.
-
- Add Yuzo to the committers list.
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Rubber-stamped by Eric Seidel.
-
- Change "the Chromium name" to "the name of Google Inc." in the licenses
-
- https://bugs.webkit.org/show_bug.cgi?id=34511
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/path_utils.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Rubber-stamped by Eric Siedel.
-
- Rename files as part of refactoring the layout_tests package. All
- the platform_utils* module, the path_utils.py module, and
- the http server and web socket server modules are moved into a new
- port/ package.
-
- https://bugs.webkit.org/show_bug.cgi?id=34511
-
- * Scripts/webkitpy/layout_tests/layout_package/apache_http_server.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/http_server.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/http_server_base.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/httpd2.pem: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/lighttpd.conf: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/path_utils.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_linux.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_mac.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_win.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/websocket_server.py: Removed.
- * Scripts/webkitpy/layout_tests/port: Added.
- * Scripts/webkitpy/layout_tests/port/__init__.py: Copied from Scripts/webkitpy/layout_tests/layout_package/platform_utils.py.
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py: Copied from Scripts/webkitpy/layout_tests/layout_package/apache_http_server.py.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py: Copied from Scripts/webkitpy/layout_tests/layout_package/platform_utils_linux.py.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py: Copied from Scripts/webkitpy/layout_tests/layout_package/platform_utils_mac.py.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py: Copied from Scripts/webkitpy/layout_tests/layout_package/platform_utils_win.py.
- * Scripts/webkitpy/layout_tests/port/http_server.py: Copied from Scripts/webkitpy/layout_tests/layout_package/http_server.py.
- * Scripts/webkitpy/layout_tests/port/http_server_base.py: Copied from Scripts/webkitpy/layout_tests/layout_package/http_server_base.py.
- * Scripts/webkitpy/layout_tests/port/httpd2.pem: Copied from Scripts/webkitpy/layout_tests/layout_package/httpd2.pem.
- * Scripts/webkitpy/layout_tests/port/lighttpd.conf: Copied from Scripts/webkitpy/layout_tests/layout_package/lighttpd.conf.
- * Scripts/webkitpy/layout_tests/port/path_utils.py: Copied from Scripts/webkitpy/layout_tests/layout_package/path_utils.py.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: Copied from Scripts/webkitpy/layout_tests/layout_package/websocket_server.py.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-
-2010-02-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Roll back r53559 and r54084 again, because roll out didn't solve flakeyness on the Windows Test bots
- https://bugs.webkit.org/show_bug.cgi?id=34399
-
- * Scripts/run-iexploder-tests:
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
- * Scripts/webkitperl/httpd.pm: Added.
-
-2010-02-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Roll out r53559 and r54084, because it might caused flakeyness on the Windows Test bots
-
- * Scripts/run-iexploder-tests:
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
- * Scripts/webkitperl/httpd.pm: Removed.
-
-2010-02-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Ariya Hidayat.
-
- Roll back r53889 again, because roll out didn't solve flakeyness on the Windows Test bots
- https://bugs.webkit.org/show_bug.cgi?id=34399
-
- * DumpRenderTree/win/EventSender.cpp:
- (buildModifierFlags):
- (mouseDownCallback):
- (mouseUpCallback):
- (keyDownCallback):
-
-2010-02-03 Eric Seidel <eric@webkit.org>
-
- No review, just fixing copyrights.
-
- Concerns were expressed about "The Chromium Authors" being
- a valid legal entity for copyright assignment in the WebKit repository,
- so this change removes all "The Chromium Authors".
-
- I looked at the svn logs in src.chromium.org and failed to find any
- non-google contributions to these files, so they are all now
- marked as copyright "Google Inc" as all Google contributers assign
- copyright to "Google Inc" as part of their employment agreement.
-
- * Scripts/rebaseline-chromium-webkit-tests:
- * Scripts/run-chromium-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/layout_package/http_server.py:
- * Scripts/webkitpy/layout_tests/layout_package/http_server_base.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/layout_package/path_utils.py:
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils.py:
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_linux.py:
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_mac.py:
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_win.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/websocket_server.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-02-03 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtLauncher, refactor argument handling in preparation of merge
- with QGVLauncher
-
- * QtLauncher/main.cpp:
- (LauncherApplication::urls):
- (LauncherApplication::isRobotized):
- (LauncherApplication::applyDefaultSettings):
- (LauncherApplication::LauncherApplication):
- (LauncherApplication::formatKeys):
- (LauncherApplication::enumToKeys):
- (fail):
- (LauncherApplication::handleUserOptions):
- (main):
-
-2010-02-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Rubber-stamped by Ariya Hidayat.
-
- Rolling out r53889, because it might caused flakeyness on the Windows Test bots
- https://bugs.webkit.org/show_bug.cgi?id=34399
-
- * DumpRenderTree/win/EventSender.cpp:
- (mouseDownCallback):
- (mouseUpCallback):
- (keyDownCallback):
-
-2010-02-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Fix pixel tests support.
- https://bugs.webkit.org/show_bug.cgi?id=27813
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::processLine):
- - Hash processing mechanism moved from DumpRenderTree::open to DumpRenderTree::processLine.
- (WebCore::DumpRenderTree::dump): Fixed and renamed variables.
-
-2010-02-03 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Enable JIT compilation for wx.
-
- https://bugs.webkit.org/show_bug.cgi?id=34536
-
- * wx/build/settings.py:
-
-2010-02-02 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after introduction of pageNumberForElementById.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::pageNumberForElementById):
-
-2010-02-02 Shu Chang <Chang.Shu@nokia.com>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-02 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Moved filter-related check-webkit-style code into a separate
- filter module.
-
- https://bugs.webkit.org/show_bug.cgi?id=34408
-
- This is preparatory refactoring for Bug 33684, which will allow
- file and folder-specific filter rules.
-
- * Scripts/webkitpy/style/checker.py:
- - Removed CategoryFilter class (moved to filter.py).
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Removed CategoryFilter unit tests (moved to filter_unittest.py).
-
- * Scripts/webkitpy/style/filter.py: Added.
- - Added CategoryFilter class (moved from checker.py).
-
- * Scripts/webkitpy/style/filter_unittest.py: Added.
- - Added CategoryFilter unit tests (moved from checker_unittest.py).
-
- * Scripts/webkitpy/style/unittests.py:
- - Added reference to filter_unittest.py.
-
-2010-02-01 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Addressed FIXME in check-webkit-style so that the carriage-return
- check will work for patches.
-
- https://bugs.webkit.org/show_bug.cgi?id=34260
-
- Also added support for limiting the number of errors reported
- per category, per file.
-
- * Scripts/webkitpy/style/checker.py:
- - Added new "whitespace/carriage_return" category from common.py.
- - Added MAX_REPORTS_PER_CATEGORY dictionary.
- - Added max_reports_per_category attribute to ProcessorOptions class.
- - Refactored StyleChecker._process_file().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Updated ProcessorOptionsTest tests.
- - Added test to check MAX_REPORTS_PER_CATEGORY.
-
- * Scripts/webkitpy/style/error_handlers.py:
- - Added support for suppressing the display of errors after
- reaching a per-category maximum (from max_reports_per_category).
-
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- - Added test for suppressing error display.
-
- * Scripts/webkitpy/style/processors/common.py: Added.
- - Moved carriage-return check to new file.
-
- * Scripts/webkitpy/style/processors/common_unittest.py: Added.
- - Added unit tests for carriage-return check.
-
- * Scripts/webkitpy/style/unittests.py:
- - Added reference to common_unittest.py.
-
-2010-02-01 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Provide a way to get page number with layoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=33840
-
- * DumpRenderTree/LayoutTestController.cpp:
- (pageNumberForElementByIdCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pageNumberForElementById):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pageNumberForElementById):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pageNumberForElementById):
-
-2010-02-01 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed fix for an invalid function call.
-
- check-webkit-style: Remove filename parameter from all functions where no longer used
- https://bugs.webkit.org/show_bug.cgi?id=34249
-
- * Scripts/webkitpy/style/checker.py:
-
-2010-02-01 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT Provide global flag ability
- https://bugs.webkit.org/show_bug.cgi?id=34418
-
- Add the globalFlag property to the Qt LayoutTestController to allow
- cross-domain indications.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::globalFlag):
- (LayoutTestController::setGlobalFlag):
-
-2010-02-01 Brady Eidson <beidson@apple.com>
-
- Reviewed by Adele Peterson.
-
- Crash in Safari opening new tabs to "same page"
- <rdar://problem/7593857> and https://bugs.webkit.org/show_bug.cgi?id=34444
-
- Add a mode (Mac-only for now) that exercises the WebView SPI _loadBackForwardListFromOtherView:
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setNewWindowsCopyBackForwardListCallback):
- (LayoutTestController::staticFunctions):
-
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::newWindowsCopyBackForwardList):
- (LayoutTestController::setNewWindowsCopyBackForwardList):
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:createWebViewWithRequest:]):
-
-2010-02-01 Carol Szabo <carol.szabo@nokia.com>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/webkitpy/committers.py:
-
-2010-02-01 Nate Chapin <japhet@chromium.org>
-
- Rubber-stamped by David Levin.
-
- Add myself to reviewer list.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-31 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Moved style error handler code to their own classes, and
- related refactoring. Increased unit test code coverage of
- style error handling.
-
- https://bugs.webkit.org/show_bug.cgi?id=34379
-
- * Scripts/check-webkit-style:
- - Minor change: added error_count variable.
-
- * Scripts/webkitpy/style/checker.py:
- - Renamed ProcessorOptions.should_report_error() to is_reportable().
- - In the StyleChecker class--
- - Removed _default_style_error_handler().
- - Added _increment_error_count().
- - Refactored to use DefaultStyleErrorHandler and
- PatchStyleErrorHandler constructors.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - In the StyleStyleCheckerTest class--
- - Removed write_sample_error().
- - Removed test_default_style_error_handler().
-
- * Scripts/webkitpy/style/error_handlers.py: Added.
- - Added DefaultStyleErrorHandler class.
- - Added PatchStyleErrorHandler class.
-
- * Scripts/webkitpy/style/error_handlers_unittest.py: Added.
- - Added unit tests for DefaultStyleErrorHandler and
- PatchStyleErrorHandler.
-
- * Scripts/webkitpy/style/unittests.py:
- - Added error_handlers unit tests.
-
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Stephanie Lewis.
-
- Fix run-leaks with newer versions of the leaks tool.
-
- * Scripts/run-leaks:
-
-2010-01-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Top-level test drivers for running the Chromium port of run-webkit-tests
- and being able to rebaseline test results from the test bots. The
- files in the Scripts directory are simply wrappers around the files
- in webkitpy/layout_tests for convenience.
-
- https://bugs.webkit.org/show_bug.cgi?id=31498
-
- * Scripts/rebaseline-chromium-webkit-tests: Added.
- * Scripts/run-chromium-webkit-tests: Added.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py: Added.
- * Scripts/webkitpy/layout_tests/run_chromium_webkit_tests.py: Added.
-
-2010-01-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Add in the second block of python code for the Chromium port
- of run-webkit-tests. These files execute different diffs to classify
- the various types of failures from a test.
-
- * Scripts/webkitpy/layout_tests/test_types: Added.
- * Scripts/webkitpy/layout_tests/test_types/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py: Added.
-
-2010-01-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- Check in the first part of the Chromium Python port of the
- run-webkit-tests test driver. The files under
- layout_tests/layout_layout constitute most of the implementation;
- they can be roughly divided into code that parses the
- "test_expectations.txt" file that describes how we expect tests to
- pass or fail, platform-specific hooks for the different Chromium
- ports (in platform_utils*), code for parsing the output of the
- tests and generating results files and HTML and JSON for the
- dashboards, auxiliary scripts for starting and stopping HTTP and
- Web Socket servers, and then one of the actual driver files
- (test_shell_thread). Code for actually parsing test output for
- failures and the top-level driver scripts will follow shortly.
-
- https://bugs.webkit.org/show_bug.cgi?id=31498
-
- * Scripts/webkitpy/layout_tests: Added.
- * Scripts/webkitpy/layout_tests/layout_package: Added.
- * Scripts/webkitpy/layout_tests/layout_package/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/apache_http_server.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/http_server.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/http_server_base.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/httpd2.pem: Added.
- - scripts to start and stop apache. Note that the apache file
- generates a conf file dynamically, and we should switch to
- using the same static conf file that the regular run-webkit-tests
- uses, and we can also use the same httpd2.pem file.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: Added.
- - scripts to generate the JSON layout test dashboard and the
- flakiness dashboard
- * Scripts/webkitpy/layout_tests/layout_package/lighttpd.conf: Added.
- - default configuration for LigHTTPd (used on Windows)
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py: Added.
- - utility class that implements progress bars on the console to
- be displayed while the tests are running
- * Scripts/webkitpy/layout_tests/layout_package/path_utils.py: Added.
- - various routines for manipulating paths and URIs
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_linux.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_mac.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/platform_utils_win.py: Added.
- - platform-specific aspects of the drivers (binary names, paths,
- process control, etc.)
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py: Added.
- - code for parsing the 'test_expectations.txt' file to determine
- which tests are expected to fail (and how) on which platforms
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py: Added.
- - code for handling different kinds of failures (generating output
- in the results, etc.)
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py: Added.
- - code to gather the lists of tests
- * Scripts/webkitpy/layout_tests/layout_package/test_shell_thread.py: Added.
- - code to actually execute tests via TestShell and process
- the output
- * Scripts/webkitpy/layout_tests/layout_package/websocket_server.py: Added.
- - scripts to start and stop the pywebsocket server
-
-2010-01-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Check in a copy of the simplejson library; it will be used by
- the Chromium port of run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=31498
-
- * simplejson: Added.
- * simplejson/LICENSE.txt: Added.
- * simplejson/README.txt: Added.
- * simplejson/__init__.py: Added.
- * simplejson/_speedups.c: Added.
- (ascii_escape_char):
- (ascii_escape_unicode):
- (ascii_escape_str):
- (py_encode_basestring_ascii):
- (init_speedups):
- * simplejson/decoder.py: Added.
- * simplejson/encoder.py: Added.
- * simplejson/jsonfilter.py: Added.
- * simplejson/scanner.py: Added.
-
-2010-01-29 Dirk Pranke <dpranke@chromium.org>
-
- No review
-
- Add myself to the committers list
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-29 Jeremy Orlow <jorlow@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- A first step towards the Indexed Database API
- https://bugs.webkit.org/show_bug.cgi?id=34342
-
- Add indexed database API.
-
- * Scripts/build-webkit:
-
-2010-01-29 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Correct openHTTPD() to print requests to stdout if run-webkit-httpd is used.
- This fixes a regression introduced in r53559.
-
- https://bugs.webkit.org/show_bug.cgi?id=34336
-
- * Scripts/webkitperl/httpd.pm:
-
-2010-01-28 Jon Honeycutt <jhoneycutt@apple.com>
-
- MSAA: Crash when posting a notification for a detached object
-
- https://bugs.webkit.org/show_bug.cgi?id=34309
- <rdar://problem/7409759>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/AccessibilityController.h:
- Declare new functions. Add new members to store the event hook and the
- mapping of accessibility elements to their JS callbacks.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::notificationReceived):
- Stubbed.
- (AccessibilityController::addNotificationListener):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::notificationReceived):
- Stubbed.
- (AccessibilityController::addNotificationListener):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- Initialize the event hook.
- (AccessibilityController::~AccessibilityController):
- Remove the event hook. Unprotect all of the JS functions that are stored
- in the map.
- (logEventProc):
- Clean-up a variable.
- (stringEvent):
- Return a string description of the MSAA event code.
- (notificationListenerProc):
- Get the accessible object from the event, and query it for IAccessible.
- Call the AccessibilityController's notificationReceived().
- (comparableObject):
- Use QueryService to obtain the IAccessibleComparable for the
- IServiceProvider.
- (AccessibilityController::notificationReceived):
- Iterate the map of objects that have registered for notification
- callbacks. Query each for IServiceProvider, then use comparableObject()
- to get an IAccessibleComparable. If we find an object matching the
- notified object, call its callback, passing the event that was received.
- (AccessibilityController::addNotificationListener):
- If we have not created the event hook, create it. Protect the JS
- callback function object, and add the object and its callback to our
- map.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::addNotificationListener):
- Call through to the AccessibilityController's addNotificationListener().
-
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- Add an extern declaration for the shared FrameLoadDelegate extern, so we
- can access it from AccessibilityController.
-
- * DumpRenderTree/win/FrameLoadDelegate.h:
- (FrameLoadDelegate::accessibilityController):
- Return the AccessibilityController.
-
-2010-01-29 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- prepare-ChangeLog outputs useless messages for a nonexistent bug ID
- https://bugs.webkit.org/show_bug.cgi?id=34313
-
- * Scripts/prepare-ChangeLog:
-
-2010-01-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] Separate implementation from class definition.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::webView):
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::keyPressEvent):
- (LauncherWindow::grabZoomKeys):
- (LauncherWindow::sendTouchEvent):
- (LauncherWindow::eventFilter):
- (LauncherWindow::loadStarted):
- (LauncherWindow::loadFinished):
- (LauncherWindow::showLinkHover):
- (LauncherWindow::zoomIn):
- (LauncherWindow::zoomOut):
- (LauncherWindow::resetZoom):
- (LauncherWindow::toggleZoomTextOnly):
- (LauncherWindow::print):
- (LauncherWindow::screenshot):
- (LauncherWindow::setEditable):
- (LauncherWindow::dumpHtml):
- (LauncherWindow::selectElements):
- (LauncherWindow::setTouchMocking):
- (LauncherWindow::newWindow):
- (LauncherWindow::setupUI):
-
-2010-01-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] On Maemo5, a click/touch in the location bar (when unfocused)
- should result in all text selected.
-
- * QtLauncher/locationedit.cpp:
- (LocationEdit::focusInEvent):
- * QtLauncher/locationedit.h:
-
-2010-01-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Show progress reaching 100% for loads.
-
- * QtLauncher/locationedit.cpp:
- (LocationEdit::LocationEdit):
- (LocationEdit::setProgress):
- (LocationEdit::reset):
- (LocationEdit::paintEvent):
- * QtLauncher/locationedit.h:
-
-2010-01-29 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Disable the QtLauncher statusbar on Maemo
-
- https://bugs.webkit.org/show_bug.cgi?id=34330
-
- * QtLauncher/main.cpp:
- (LauncherWindow::showLinkHover):
- (LauncherWindow::selectElements):
-
-2010-01-29 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Display page loading progress inside the QtLauncher location bar
-
- https://bugs.webkit.org/show_bug.cgi?id=34210
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/locationedit.cpp: Added.
- (LocationEdit::LocationEdit):
- (LocationEdit::setProgress):
- (LocationEdit::paintEvent):
- * QtLauncher/locationedit.h: Added.
- * QtLauncher/mainwindow.cpp:
- (MainWindow::buildUI):
- * QtLauncher/mainwindow.h:
-
-2010-01-29 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add support for Maemo zoom keys in QtLauncher
-
- https://bugs.webkit.org/show_bug.cgi?id=34160
-
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::keyPressEvent):
- (LauncherWindow::grabZoomKeys):
-
-2010-01-29 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement the display() method of the layout test controller
- https://bugs.webkit.org/show_bug.cgi?id=34258
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::showPage):
- (WebCore::DumpRenderTree::hidePage):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::display):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation
- implements pthread_t in a way that makes it impossible to check its validity,
- which is needed by ThreadingPthreads.cpp.
-
- * DumpRenderTree/wscript:
- * wx/build/settings.py:
-
-2010-01-28 Andras Becsi <abecsi@webkit.org>
-
- Adding myself to the committer list. No review needed.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-28 Hayato Ito <hayato@chromium.org>
-
- Reviewed by David Levin.
-
- Remove NULL char from input JS file because 'grep' fails if the file contains NULL char.
-
- https://bugs.webkit.org/show_bug.cgi?id=34252
-
- * Scripts/make-script-test-wrappers:
-
-2010-01-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after removal of the zlib image decoder.
-
- * wx/build/settings.py:
-
-2010-01-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed, roll out r54000.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::display):
-
-2010-01-28 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement the display() method of the layout test controller
- https://bugs.webkit.org/show_bug.cgi?id=34258
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::showPage):
- (WebCore::DumpRenderTree::hidePage):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::display):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Eliminated the filename parameter from functions in
- check-webkit-style's cpp.py where it is no longer used.
-
- https://bugs.webkit.org/show_bug.cgi?id=34249
-
- * Scripts/webkitpy/style/processors/cpp.py:
- - Reduced number of occurrences of "filename" variable from
- approximately 200 to 120.
-
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
- - Refactored unit tests as necessary to accommodate changes to cpp.py.
- - Fixed bug in CppStyleTestBase.perform_include_what_you_use()
- where the incorrect file extension was getting passed to
- cpp_style.check_language().
-
-2010-01-28 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- In check-webkit-style, eliminated the dependency of
- processors/cpp_unittest.py on checker.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=34205
-
- * Scripts/webkitpy/style/checker.py:
- - Addressed FIXME by removing STYLE_CATEGORIES data.
- - Added style_categories().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Minor changes.
-
- * Scripts/webkitpy/style/processors/cpp.py:
- - Added categories attribute to CppProcessor class (data
- was originally checker.STYLE_CATEGORIES).
-
- * Scripts/webkitpy/style/processors/cpp_unittest.py:
- - Addressed FIXME by eliminating "import" from checker.py.
-
-2010-01-28 Anton Muhin <antonm@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Improve treatment of conditions and rest of the line for if, else, switch and alikes
- https://bugs.webkit.org/show_bug.cgi?id=34173
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-28 Joe Mason <jmason@rim.com>
-
- Reviewed by Adam Barth.
-
- Limit login retries to 5
- https://bugs.webkit.org/show_bug.cgi?id=34193
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-27 Martin Robinson <mrobinson@webkit.org>
-
- Adding myself to the committer list. No review necessary.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-27 George Wright <gwright@rim.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=34216
-
- Add missing include for wtf/Platform.h
-
- * DumpRenderTree/AccessibilityController.h:
-
-2010-01-27 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT Provide worker thread ability to track counters
- https://bugs.webkit.org/show_bug.cgi?id=34221
-
- Implement workerThreadCount() in LayoutTestController of Qt DRT
-
- Tests:
- fast/workers/dedicated-worker-lifecycle.html
- fast/workers/shared-worker-frame-lifecycle.html
- fast/workers/shared-worker-lifecycle.html
- fast/workers/worker-lifecycle.html
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::workerThreadCount):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] QtLauncher refactoring:
-
- Make the LauncherWindow depend less on the view, so that more
- code can be shared in near future.
-
- * QtLauncher/main.cpp:
- (LauncherWindow::sendTouchEvent):
- (LauncherWindow::loadFinished):
- (LauncherWindow::zoomIn):
- (LauncherWindow::zoomOut):
- (LauncherWindow::resetZoom):
- (LauncherWindow::toggleZoomTextOnly):
- (LauncherWindow::dumpHtml):
- (LauncherWindow::selectElements):
- (LauncherWindow::setupUI):
-
-2010-01-27 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Correctly handle the KeyLocation argument that has been introduced
- recently to test location-dependent key events in EventSender.keyDown.
- http://bugs.webkit.org/show_bug.cgi?id=28247
-
- Test: fast/events/keydown-numpad-keys.html
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback):
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] QtLauncher refactoring:
-
- Move out code from the MainWindow (renamed to LauncherWindow)
- that is not depending on the view, and add it to a new class
- called MainWindow.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/main.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::eventFilter):
- (LauncherWindow::loadStarted):
- (LauncherWindow::loadFinished):
- (LauncherWindow::newWindow):
- (LauncherWindow::setupUI):
- (WebPage::createWindow):
- (main):
- * QtLauncher/mainwindow.cpp: Added.
- (MainWindow::MainWindow):
- (MainWindow::buildUI):
- (MainWindow::page):
- (MainWindow::setAddressUrl):
- (MainWindow::addCompleterEntry):
- (MainWindow::load):
- (MainWindow::changeLocation):
- (MainWindow::openFile):
- * QtLauncher/mainwindow.h: Added.
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] QtLauncher, coding style fixes.
-
- * QtLauncher/main.cpp:
- (MainWindow::MainWindow):
- (MainWindow::sendTouchEvent):
- (MainWindow::eventFilter):
- (MainWindow::loadURL):
- (MainWindow::setupUI):
- (WebPage::createPlugin):
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] QtLauncher refactoring, separating the webview and
- adding a QGraphicsWebView based version.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/main.cpp:
- (MainWindow::MainWindow):
- * QtLauncher/webpage.h:
- * QtLauncher/webview.cpp: Added.
- (createContextMenu):
- (WebViewGraphicsBased::mousePressEvent):
- (WebViewTraditional::mousePressEvent):
- (WebViewGraphicsBased::contextMenuEvent):
- (WebViewTraditional::contextMenuEvent):
- * QtLauncher/webview.h: Added.
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewTraditional::WebViewTraditional):
-
-2010-01-27 Alexander Pavlov <apavlov@chromium.org>
-
- Adding myself as committer. No review necessary.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- webkit-patch needs an open-bugs command
- https://bugs.webkit.org/show_bug.cgi?id=30793
-
- * Scripts/test-webkitpy: import OpenBugsTest
- * Scripts/webkit-patch: import OpenBugs
- * Scripts/webkitpy/commands/download_unittest.py: don't import unittest
- * Scripts/webkitpy/commands/early_warning_system_unittest.py: ditto
- * Scripts/webkitpy/commands/queries_unittest.py: ditto
- * Scripts/webkitpy/commands/queues_unittest.py: ditto
- * Scripts/webkitpy/commands/upload_unittest.py: ditto
- * Scripts/webkitpy/mock_bugzillatool.py: log when user.open_url is called.
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann
-
- [Qt] QtLauncher refactoring, separating utility methods.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/main.cpp:
- * QtLauncher/utils.cpp: Added.
- (urlFromUserInput):
- * QtLauncher/utils.h: Added.
-
-2010-01-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann
-
- [Qt] Refactor the code in the QtLauncher dealing with HTTP proxy.
-
- * QtLauncher/main.cpp:
- (MainWindow::MainWindow):
- * QtLauncher/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::applyProxy):
- * QtLauncher/webpage.h:
-
-2010-01-26 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Corrects debug build of DumpRenderTree on Windows.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2010-01-26 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=34070
-
- Moves the try/catch for OSError exceptions in Executive.run_command
- to Credentials.read_credentials() so that the unit test
- webkitpy.scm_unittest.SCMClassTests.test_error_handlers can
- assert that Executive.run_command throws an OSError exception.
-
- * Scripts/webkitpy/credentials.py:
- * Scripts/webkitpy/executive.py: Moved try/catch for OSError to
- method Credentials.read_credentials().
- * Scripts/webkitpy/executive_unittest.py: Removed tests that no longer
- apply: test_run_command_with_bad_command_check_return_code and
- test_run_command_with_bad_command_check_calls_error_handler. Added new
- test to assert that run_command throws OSError exceptions.
-
-2010-01-26 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT WebHistory support
- https://bugs.webkit.org/show_bug.cgi?id=34167
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::webHistoryItemCount):
- (LayoutTestController::keepWebHistory):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-26 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Win] Add modifiers parameter support to Windows DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=34068
-
- Add support for functional name modifiers; "addSelectionKey" and
- "rangeSelectionKey", and modifiers parameter to eventSender.mouseDown()
- and eventSender.mouseUp().
- This change is similar to r53498 for Mac.
-
- * DumpRenderTree/win/EventSender.cpp:
- (buildModifierFlags): New function to set MK_CONTROL or MK_SHIFT to WPARAM.
- (mouseDownCallback): Call buidlModifiersFlags().
- (mouseUpCallback): ditto.
- (keyDownCallback): Add support for "addSelectionkey" and "rangeSelectionKey".
-
-2010-01-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The Python autoinstall cache directory now only gets created
- in the directory containing autoinstall.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=33365
-
- * Scripts/webkitpy/autoinstall.py:
- - Also added a README file to the cache directory saying
- where it came from.
-
-2010-01-26 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Moved the check-webkit-style processors into a new
- webkitpy/style/processors directory.
-
- https://bugs.webkit.org/show_bug.cgi?id=34060
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/cpp_style.py: Removed.
- * Scripts/webkitpy/style/cpp_style_unittest.py: Removed.
- * Scripts/webkitpy/style/processors: Added.
- * Scripts/webkitpy/style/processors/__init__.py: Added.
- * Scripts/webkitpy/style/processors/cpp.py: Copied from WebKitTools/Scripts/webkitpy/style/cpp_style.py.
- * Scripts/webkitpy/style/processors/cpp_unittest.py: Copied from WebKitTools/Scripts/webkitpy/style/cpp_style_unittest.py.
- * Scripts/webkitpy/style/processors/text.py: Copied from WebKitTools/Scripts/webkitpy/style/text_style.py.
- * Scripts/webkitpy/style/processors/text_unittest.py: Copied from WebKitTools/Scripts/webkitpy/style/text_style_unittest.py.
- * Scripts/webkitpy/style/text_style.py: Removed.
- * Scripts/webkitpy/style/text_style_unittest.py: Removed.
- * Scripts/webkitpy/style/unittests.py:
-
-2010-01-26 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, make sure stub function returns a value.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::counterValueForElementById):
-
-2010-01-26 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Windows build references non-existent include paths
- https://bugs.webkit.org/show_bug.cgi?id=34175
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2010-01-26 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Separating out the UrlLoader from the QtLauncher in it's
- own implementation and header file.
-
- * QtLauncher/main.cpp:
- (main):
- * QtLauncher/urlloader.cpp: Added.
- (UrlLoader::UrlLoader):
- (UrlLoader::loadNext):
- (UrlLoader::init):
- (UrlLoader::getUrl):
- * QtLauncher/urlloader.h: Added.
-
-2010-01-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored check-webkit-style by removing the file path
- parameter from the style error handler functions.
-
- https://bugs.webkit.org/show_bug.cgi?id=34031
-
- * Scripts/webkitpy/style/checker.py:
- - Added _default_style_error_handler() to StyleChecker class.
- - Moved handle_style_error() to inside _default_style_error_handler().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Removed file path from calls to error handler.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Removed file path from calls to error handler.
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Removed file path from calls to error handler.
-
- * Scripts/webkitpy/style/text_style.py:
- - Removed file path from calls to error handler.
-
- * Scripts/webkitpy/style/text_style_unittest.py:
- - Removed file path from calls to error handler.
-
-2010-01-25 Jeremy Orlow <jorlow@chromium.org>
-
- Adding myself as reviewer. No review necessary.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-25 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Improved prepare-ChangeLog so that it preserves the relative
- indentation of a git commit message.
-
- https://bugs.webkit.org/show_bug.cgi?id=34058
-
- * Scripts/prepare-ChangeLog:
- - Also adjusted the script so that it does not add white
- space characters to empty lines.
-
-2010-01-24 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r53763.
- http://trac.webkit.org/changeset/53763
- https://bugs.webkit.org/show_bug.cgi?id=33895
-
- Broke 20+ tests on Windows.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2010-01-24 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- More pep8 compliance.
-
- * Scripts/webkitpy/mock_bugzillatool.py:
-
-2010-01-24 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- More pep8 compliance.
-
- * Scripts/webkitpy/executive.py:
- * Scripts/webkitpy/grammar.py:
-
-2010-01-24 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- More pep8 compliance.
-
- * Scripts/webkitpy/comments.py:
- * Scripts/webkitpy/committers.py:
- * Scripts/webkitpy/credentials.py:
-
-2010-01-24 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Make changelogs.py pass pep8.
-
- * Scripts/webkitpy/changelogs.py:
-
-2010-01-23 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Unreviewed build fix
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/webinspector.h:
-
-2010-01-23 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- [Qt] Move the WebInspector class to it's own header file.
-
- * QtLauncher/main.cpp:
- * QtLauncher/webinspector.h: Added.
- (WebInspector::WebInspector):
- (WebInspector::showEvent):
- (WebInspector::hideEvent):
-
-2010-01-23 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Qt DRT: respect window.close() and window.closed()
-
- Qt DRT needs to maintain a correct count of open windows
- for windowCount(). It also needs to delete windows that
- have been closed by window.close().
-
- This fixes the following tests:
-
- plugins/destroy-during-npp-new.html
- fast/dom/Document/early-document-access.html
- fast/dom/Window/window-early-properties.html
- fast/events/open-window-from-another-frame.html
- fast/events/popup-blocking-click-in-iframe.html
-
- https://bugs.webkit.org/show_bug.cgi?id=32953
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::createWindow):
- (WebCore::DumpRenderTree::windowCloseRequested):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::maybeDump):
-
-2010-01-23 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- Added a user default for specifying a fallback frameworks path in case
- the bundle does not contain frameworks for the current Mac OS X version.
-
- * WebKitLauncher/main.m:
- (fallbackMacOSXVersion): Added. Looks up the fallback version in a dictionary
- keyed by the FallbackSystemVersions user default and returns it.
- (main): If a frameworks directory for the current system version is not found,
- try the fallback.
-
-2010-01-22 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Make run-webkit-tests work under Cygwin for the Qt port
-
- setPathForRunningWebKitApp() is implemented for the Qt port
- by using qmake to query for the location of the Qt libraries.
-
- This requires the original environment (%ENV) to be untouched,
- so launchWithCurrentEnv() was refactored to launchWithEnv(),
- and the code in openDumpTool() to not use %ENV but a %CLEAN_ENV
- instead. This has the added benefit of getting rid of the temp
- variables used for storing the current env.
-
- openDumpTool() is also refactored a bit into platform-spesific,
- port-spesific, and generic environment variables.
-
- Checks for undef was added a few places to fix Perl concat
- warnings when run-webkit-tests is aborted.
-
- https://bugs.webkit.org/show_bug.cgi?id=33895
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2010-01-22 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Remove the Bakefile build system, which is no longer being used.
-
- https://bugs.webkit.org/show_bug.cgi?id=34022
-
- * DumpRenderTree/wx/DumpRenderTree.bkl: Removed.
- * wx/browser/browser.bkl: Removed.
- * wx/build-wxwebkit: Removed.
-
-2010-01-22 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Simon Fraser.
-
- Reset zoom level to 1.0 when resetting view state. This is causing
- many tests to fail after svg/custom/text-zoom.xhtml changes the
- zoom level.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-01-22 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=34025
- Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets.
-
- * Scripts/build-webkit:
-
-2010-01-22 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Arg. Someone renamed limit to output_limit on me.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-22 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Make __init__.py and buildbot.py pass pep8 style checker.
-
- * Scripts/webkitpy/__init__.py:
- * Scripts/webkitpy/buildbot.py:
-
-2010-01-21 Joe Mason <jmason@rim.com>
-
- Reviewed by Adam Barth.
-
- webkit-patch should retry on invalid password
- https://bugs.webkit.org/show_bug.cgi?id=33955
-
- Ask for bugs.webkit.org authentication in a loop.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-22 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Don't call seek on a NoneType.
-
- * Scripts/webkitpy/statusserver.py:
-
-2010-01-22 Petri Latvala <petri.latvala@nomovok.com>
-
- Reviewed by David Levin.
-
- check-webkit-style breaks on files with unknown types
- https://bugs.webkit.org/show_bug.cgi?id=34001
-
- For files with type FileType.NONE, dispatch_processor returns None.
-
- * Scripts/webkitpy/style/checker.py: Don't call process_file with a processor of value None.
-
-2010-01-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make bugzilla.py and webkitport.py conform to pep8
- https://bugs.webkit.org/show_bug.cgi?id=34015
-
- This patch makes webkitport.py and bugzilla.py mostly conform to PEP8
- style as enforced by pep8.py. I wasn't able to get rid of all the
- errors because I'm not sure how to wrap some lines properly. Also,
- there are a few deprication errors that I couldn't resolve easily.
- However, this is a massive improvement in compliance.
-
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/webkitport.py:
-
-2010-01-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Limit length of EWS results to 5MB
- https://bugs.webkit.org/show_bug.cgi?id=34016
-
- Hopefully this will fix the bug where the results link doesn't appear.
- Our current theory is that the results blob is too big and the server
- is rejecting the request with a 500 error. That causes us to re-try
- the post, but when we re-try the StringIO buffer has its seek pointer
- at the end.
-
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/statusserver.py:
-
-2010-01-22 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Made check-webkit-style able to check patches when script not
- run from source root. Also consolidated external references
- to a single file.
-
- https://bugs.webkit.org/show_bug.cgi?id=33791
-
- * Scripts/check-webkit-style:
- - Changed to import style_references.py.
-
- * Scripts/webkitpy/style/__init__.py:
- - Removed __path__ hack that allowed searching Scripts/ directory.
-
- * Scripts/webkitpy/style/checker.py:
- - Changed to import style_references.py.
-
- * Scripts/webkitpy/style_references.py: Added.
-
-2010-01-22 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- Fix the leak of ThreadIdentifiers in threadMap across threads.
- https://bugs.webkit.org/show_bug.cgi?id=32689
-
- Add a new test to verify the ThreadIdentifiers are not reused across threads.
- The test runs in the beginning of DumpRenderTree and spawns 2 non-WTF treads sequentially,
- waiting for the previous thread to terminate before starting the next.
- The treads use WTF::currentThread() in their thread function. Without a fix, this
- causes both threads to have the same ThreadIdentifier which triggers ASSERT in thread function.
- It also starts another thread using WTF. Without the fix, this finds pthread handle from previous
- threads in the WTF threadMap and asserts in WTF::establishIdentifierForPthreadHandle().
- The test practically does not affect the DRT run time because the threads end immediately.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runThread): Test thread function.
- (testThreadIdentifierMap):
- (dumpRenderTree):
-
-2010-01-22 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- Fix a bug that mouseDown:withModifiers: is never called.
- https://bugs.webkit.org/show_bug.cgi?id=33989
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
-
-2010-01-22 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Antti Koivisto.
-
- [Qt] Separate out the WebPage class into it's own
- cpp/header files. Also, removed the assumption that
- the view is a QWebView, in preparation of a merger
- of the two Qt WebKit launchers.
-
- * QtLauncher/QtLauncher.pro:
- * QtLauncher/main.cpp:
- (WebView::mousePressEvent):
- * QtLauncher/webpage.cpp: Added.
- (WebPage::supportsExtension):
- (WebPage::extension):
- (WebPage::acceptNavigationRequest):
- (WebPage::openUrlInDefaultBrowser):
- * QtLauncher/webpage.h: Added.
- (WebPage::WebPage):
-
-2010-01-21 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Refactored to move file name and file-reading related code
- from cpp_style.py and text_style.py to checker.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=33775
-
- * Scripts/check-webkit-style:
- - Updates caused by changes to checker.py.
-
- * Scripts/webkitpy/style/checker.py:
- - Added SKIPPED_FILES_WITH_WARNING list.
- - Added SKIPPED_FILES_WITHOUT_WARNING list.
- - Added FileType class.
- - Added ProcessorDispatcher class.
- - In StyleChecker class:
- - Renamed process_patch() to check_patch().
- - Renamed process_file() to check_file().
- - Added _process_file().
- - Related refactoring.
- - Addressed check_patch() FIXME to share code with process_file().
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added ProcessorDispatcherSkipTest class.
- - Added ProcessorDispatcherDispatchTest class.
- - Added StyleCheckerCheckFileTest class.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Renamed process_file_data() to _process_lines.
- - Removed process_file() (moved logic to checker.py).
- - Removed can_handle() (moved logic to checker.py).
- - Added CppProcessor class.
- - Removed is_exempt() (moved logic to checker.py).
- - Added process_file_data() back as a wrapper function.
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Removed test_can_handle().
- - Removed test_is_exempt().
- - Added CppProcessorTest class.
-
- * Scripts/webkitpy/style/text_style.py:
- - Added TextProcessor class.
- - Removed process_file().
- - Removed can_handle().
-
- * Scripts/webkitpy/style/text_style_unittest.py:
- - Removed test_can_handle().
- - Added TextProcessorTest class.
-
-2010-01-21 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by David Kilzer.
-
- Create a unit-tested subroutine to parse patch files created
- by svn-create-patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=33475
-
- * Scripts/VCSUtils.pm:
- - Added parseDiff().
- - Added parsePatch().
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl: Added.
- - Added unit tests for parseDiff().
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Total number of tests now computed dynamically.
-
- * Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl: Added.
- - Added unit tests for parsePatch().
-
-2010-01-21 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add new directory to dir list.
-
- * wx/build/settings.py:
-
-2010-01-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make the EWS transactional
- https://bugs.webkit.org/show_bug.cgi?id=33978
-
- Now if the EWS gets interrupted in the middle of processing a patch,
- the bots will re-process the patch.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/patchcollection.py:
- * Scripts/webkitpy/patchcollection_unittest.py: Added.
-
-2010-01-21 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add missing "ago" for style in the status bubble.
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-01-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- [style-queue] should not complain about identifier names with underscores under WebKit/gtk/webkit/
- https://bugs.webkit.org/show_bug.cgi?id=33356
-
- White list unix_hacker_style names in WebKit/gtk/webkit because these
- are used in the GTK+ API.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-21 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] add setDomainRelaxationForbiddenForURLScheme in Qt DRT
- https://bugs.webkit.org/show_bug.cgi?id=33945
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-21 Simon Hausmann <simon.hausmann@nokia.com>
-
- No review, rolling out 53615 as it causes two
- crashes on the bot.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::maybeDump):
-
-2010-01-21 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Simon Hausmann.
-
- Qt DRT: respect window.close() and window.closed()
-
- Qt DRT needs to maintain a correct count of open windows
- for windowCount(). It also needs to delete windows that
- have been closed by window.close().
-
- This fixes the following tests:
-
- plugins/destroy-during-npp-new.html
- fast/dom/Document/early-document-access.html
- fast/dom/Window/window-early-properties.html
- fast/events/open-window-from-another-frame.html
- fast/events/popup-blocking-click-in-iframe.html
-
- https://bugs.webkit.org/show_bug.cgi?id=32953
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::createWindow):
- (WebCore::DumpRenderTree::windowCloseRequested):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::maybeDump):
-
-2010-01-20 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r53593.
- http://trac.webkit.org/changeset/53593
- https://bugs.webkit.org/show_bug.cgi?id=33496
-
- Re-rollout this patch, the commit-queue should not have landed
- it again, but it did due to land-diff and rollout both not
- clearing flags.
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/queueengine.py:
- * Scripts/webkitpy/scm.py:
- * Scripts/webkitpy/scm_unittest.py:
-
-2010-01-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-commit-queue status page is confusing
- https://bugs.webkit.org/show_bug.cgi?id=33496
-
- This should improve the status page by removing more Fail messages.
- To do this, I re-factored the CommitQueue and the AbstractReviewQueues
- to behave more like one another. This meant moving where the failure reporting was done.
- Previously the AbstractReviewQueue always used the parent process to report the error,
- while CommitQueue used the subprocess when possible, and the parent only reported errors
- that we didn't know how to handle (bugs in the commit-queue itself).
- Now the AbstractReviewQueue follow's the commit-queue's model. This got rid of a try-block
- in both implementations and required teaching handle_script_error in each to post Fail messages
- to the status server instead of calling exit(1).
-
- This will also make the style-queue share more bug posting logic with other queues:
- https://bugs.webkit.org/show_bug.cgi?id=33871
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- - Don't exit(1) as that will cause the calling queue to also report Fail to the status server.
- Implementors of handle_script_error are expected to update the status server if needed, but only exit if the error could not be handled.
- So we instead pass patch_has_failed_this_queue=True to _update_status_for_script_error in the case that this was a real failure.
- _update_status_for_script_error knows how to post the Fail message to the status server.
- - Teach _update_status_for_script_error how to post Fail messages to the status server.
- * Scripts/webkitpy/commands/queues.py:
- - Remove the try block from process_work_item since the caller already has one.
- - Only CC watchers on failure to cut down on commit-queue generated mail.
- - handle_unexpected_error needs to mark _did_fail now that the try block is gone from process_work_item.
- - Abstract _format_script_error_output_for_bug to share code between all queues.
- - The new _format_script_error_output_for_bug allows the style-queue to share the posting limit with other queues, as well as support linking to the full output.
- - Rename _can_build_and_test to _current_checkout_builds_and_passes_tests to better explain what revision it's testing.
- - Move logging out of _can_build_and_test and make the logs explain what revision we're testing.
- - handle_script_error now posts Fail instead of the try block in process_work_item handling it.
- * Scripts/webkitpy/queueengine.py:
- - QueueEngine is no longer used just by the commit-queue, update the logging to say "processing" instead of landing.
- * Scripts/webkitpy/scm.py:
- - Add new checkout_revision function.
- * Scripts/webkitpy/scm_unittest.py:
- - Test our new checkout_revision function.
-
-2010-01-20 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- WebSocket: Missing Request-URI, when no tralling slash in host
- https://bugs.webkit.org/show_bug.cgi?id=33689
-
- Update pywebsocket to 0.4.7.1, which supports alias for resource
- name, so that we could test for ws://127.0.0.1:8880
-
- * Scripts/run-webkit-tests:
- * Scripts/run-webkit-websocketserver:
- * pywebsocket/mod_pywebsocket/dispatch.py:
- * pywebsocket/mod_pywebsocket/handshake.py:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_dispatch.py:
- * pywebsocket/test/test_handshake.py:
-
-2010-01-20 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r53537.
- http://trac.webkit.org/changeset/53537
- https://bugs.webkit.org/show_bug.cgi?id=33496
-
- Added a failure condition to the commit-queue and looks to
- have broken the EWS bots
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/queueengine.py:
- * Scripts/webkitpy/scm.py:
- * Scripts/webkitpy/scm_unittest.py:
-
-2010-01-20 Jon Honeycutt <jhoneycutt@apple.com>
-
- MSAA: accSelect() is not implemented
-
- https://bugs.webkit.org/show_bug.cgi?id=33918
- <rdar://problem/7436861>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (takeFocusCallback):
- Call the object's takeFocus() function.
- (takeSelectionCallback):
- Call its takeSelection() function.
- (addSelectionCallback):
- Call its addSelection() function.
- (removeSelectionCallback):
- Call its removeSelection() function.
- (AccessibilityUIElement::getJSClass):
- Add new functions to the JS class definition.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- Declare new functions.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::takeFocus):
- Stubbed.
- (AccessibilityUIElement::takeSelection):
- Stubbed.
- (AccessibilityUIElement::addSelection):
- Stubbed.
- (AccessibilityUIElement::removeSelection):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::takeFocus):
- Stubbed.
- (AccessibilityUIElement::takeSelection):
- Stubbed.
- (AccessibilityUIElement::addSelection):
- Stubbed.
- (AccessibilityUIElement::removeSelection):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::takeFocus):
- Call the object's accSelect() function, passing the appropriate flag.
- (AccessibilityUIElement::takeSelection):
- Ditto.
- (AccessibilityUIElement::addSelection):
- Ditto.
- (AccessibilityUIElement::removeSelection):
- Ditto.
-
-2010-01-20 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Alexey Proskuryakov.
-
- Extract Apache handling to httpd.pm module and use the provided functionality
- in scripts where Apache is needed.
- The module httpd.pm stores the PID of Apache in a variable and cleans up
- the PID directory after Apache properly shut down. Catching INT and TERM
- signals allows the scripts to close Apache and clean up its PID directory
- even if the testing was interrupted.
-
- https://bugs.webkit.org/show_bug.cgi?id=33153
-
- * Scripts/webkitperl/httpd.pm: Added.
- * Scripts/run-iexploder-tests:
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
-
-2010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Make DumpRenderTree build on Windows
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/main.cpp:
-
-2010-01-20 Steve Block <steveblock@google.com>
-
- Reviewed by Eric Seidel.
-
- Fix commit bot to land patches in order of the bug last modification date.
- https://bugs.webkit.org/show_bug.cgi?id=33395
-
- * Scripts/webkitpy/bugzilla.py: Modified. Added 'order=Last+Changed' to bugzilla commit queue URL.
-
-2010-01-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Teach check-webkit-style about WebKit/gtk/tests
- https://bugs.webkit.org/show_bug.cgi?id=33892
-
- Removes false positives found in
- https://bugs.webkit.org/show_bug.cgi?id=30883
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Teach check-webkit-style about QGVLauncher
- https://bugs.webkit.org/show_bug.cgi?id=33890
-
- Remove false positives found in
- https://bugs.webkit.org/show_bug.cgi?id=33708
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-commit-queue status page is confusing
- https://bugs.webkit.org/show_bug.cgi?id=33496
-
- This should improve the status page by removing more Fail messages.
- To do this, I re-factored the CommitQueue and the AbstractReviewQueues
- to behave more like one another. This meant moving where the failure reporting was done.
- Previously the AbstractReviewQueue always used the parent process to report the error,
- while CommitQueue used the subprocess when possible, and the parent only reported errors
- that we didn't know how to handle (bugs in the commit-queue itself).
- Now the AbstractReviewQueue follow's the commit-queue's model. This got rid of a try-block
- in both implementations and required teaching handle_script_error in each to post Fail messages
- to the status server instead of calling exit(1).
-
- This will also make the style-queue share more bug posting logic with other queues:
- https://bugs.webkit.org/show_bug.cgi?id=33871
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- - Don't exit(1) as that will cause the calling queue to also report Fail to the status server.
- Implementors of handle_script_error are expected to update the status server if needed, but only exit if the error could not be handled.
- So we instead pass patch_has_failed_this_queue=True to _update_status_for_script_error in the case that this was a real failure.
- _update_status_for_script_error knows how to post the Fail message to the status server.
- - Teach _update_status_for_script_error how to post Fail messages to the status server.
- * Scripts/webkitpy/commands/queues.py:
- - Remove the try block from process_work_item since the caller already has one.
- - Only CC watchers on failure to cut down on commit-queue generated mail.
- - handle_unexpected_error needs to mark _did_fail now that the try block is gone from process_work_item.
- - Abstract _format_script_error_output_for_bug to share code between all queues.
- - The new _format_script_error_output_for_bug allows the style-queue to share the posting limit with other queues, as well as support linking to the full output.
- - Rename _can_build_and_test to _current_checkout_builds_and_passes_tests to better explain what revision it's testing.
- - Move logging out of _can_build_and_test and make the logs explain what revision we're testing.
- - handle_script_error now posts Fail instead of the try block in process_work_item handling it.
- * Scripts/webkitpy/queueengine.py:
- - QueueEngine is no longer used just by the commit-queue, update the logging to say "processing" instead of landing.
- * Scripts/webkitpy/scm.py:
- - Add new checkout_revision function.
- * Scripts/webkitpy/scm_unittest.py:
- - Test our new checkout_revision function.
-
-2010-01-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Exempt JavaScriptCore/qt/api from style checks
- https://bugs.webkit.org/show_bug.cgi?id=33879
-
- Apparently there is a JavaScriptCore API for Qt as well as a WebKit
- API.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-19 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Don't use QSocketNotifier in the DRT for reading stdin
-
- QSocketNotifier is not available on Windows. Instead we read
- stdin synchronously after each test using signals and slots.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/main.cpp:
-
-2010-01-19 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Move chromium-ews back to building release only to make the EWS faster.
-
- * Scripts/webkitpy/commands/early_warning_system.py:
-
-2010-01-17 Jon Honeycutt <jhoneycutt@apple.com>
-
- MSAA: The child <option> elements of a non-multiple <select> are not
- exposed
-
- https://bugs.webkit.org/show_bug.cgi?id=33773
- <rdar://problem/7550556>
-
- Reviewed by Alice Liu.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsVisibleCallback):
- Call the object's isVisible() function.
- (getIsOffScreenCallback):
- Ditto, for isOffScreen().
- (getIsCollapsedCallback):
- Ditto, for isCollapsed().
- (getHasPopupCallback):
- Ditto, for hasPopup().
- (AccessibilityUIElement::getJSClass):
- Add isVisible and isOffScreen attributes.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- Declare new functions.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isVisible):
- Stubbed.
- (AccessibilityUIElement::isOffScreen):
- Stubbed.
- (AccessibilityUIElement::isCollapsed):
- Stubbed.
- (AccessibilityUIElement::hasPopup):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isVisible):
- Stubbed.
- (AccessibilityUIElement::isOffScreen):
- Stubbed.
- (AccessibilityUIElement::isCollapsed):
- Stubbed.
- (AccessibilityUIElement::hasPopup):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::showMenu):
- Call the object's accDoDefaultAction() to show its popup menu.
- (AccessibilityUIElement::isEnabled):
- Check that the object does not have the "unavailable" state.
- (AccessibilityUIElement::isVisible):
- Check that the object does not have the "invisible" state.
- (AccessibilityUIElement::isOffScreen):
- Check whether the object has the "offscreen" state.
- (AccessibilityUIElement::isCollapsed):
- Check whether the object has the "collapsed" state.
- (AccessibilityUIElement::hasPopup):
- Check whether the object has the "has popup" state.
-
-2010-01-19 Victor Wang <victorw@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Correct committer name.
- https://bugs.webkit.org/show_bug.cgi?id=33868
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-19 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Darin Adler.
-
- [DRT][Mac] Add modifiers parameter to eventSender.mouseDown() and eventSender.mouseUp()
- https://bugs.webkit.org/show_bug.cgi?id=33783
-
- Some listbox tests check selection behavior by click events with
- "meta" or "shift" keys. Behaviors for such modifier keys are
- platform-dependent. The new parameter of mouseDown() and mouseUp()
- allows to specify not only concrete modifier keys such as
- "shiftKey" "metaKey", but also functional names like
- "addSelectionKey" "rangeSelectionKey".
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (buildModifierFlags):
- (-[EventSendingController mouseDown:withModifiers:]):
- (-[EventSendingController mouseDown:]):
- (-[EventSendingController mouseUp:withModifiers:]):
- (-[EventSendingController mouseUp:]):
- (-[EventSendingController keyDown:withModifiers:withLocation:]):
-
-2010-01-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Unbreak --request-commit
- https://bugs.webkit.org/show_bug.cgi?id=33832
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- validate-committer-lists throws exception and committers.py needs a refresh
- https://bugs.webkit.org/show_bug.cgi?id=33831
-
- * Scripts/validate-committer-lists: use webkit_logging
- * Scripts/webkitpy/committers.py: Add recently minted committers. Fix Simon Hausmanns email address list to include his webkit-committers@lists address.
-
-2010-01-18 Adam Roben <aroben@apple.com>
-
- Add LayoutTestController support for calling new WebKit SPI to
- disallow setting document.domain
-
- DRT part of fixing <http://webkit.org/b/33806>
- <rdar://problem/7552837> Would like API to disallow setting of
- document.domain for pages with certain URL schemes
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setDomainRelaxationForbiddenForURLSchemeCallback): Added. Calls
- through to LayoutTestController.
- (LayoutTestController::staticFunctions): Added
- setDomainRelaxationForbiddenForURLScheme.
-
- * DumpRenderTree/LayoutTestController.h: Added
- setDomainRelaxationForbiddenForURLScheme.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- Added. Calls through to WebKit.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- Stubbed out.
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Adam Roben.
-
- Rename patches-to-commit to patches-in-commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=33789
-
- The command really lists the patches in the commit-queue not all the
- patches that are pending-commit (as the FIXME commands).
-
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commands/queries_unittest.py:
-
-2010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Force qmake to generate a single makefile for DerivedSources.pro
-
- * Scripts/webkitdirs.pm:
-
-2010-01-18 Adam Roben <aroben@apple.com>
-
- Clean up use of /useenv when invoking Visual C++
-
- This change reverts things to their pre-r49485 state. That revision
- (and, subsequently, r49664 and r51788) started passing /useenv to
- Visual C++, even in cases where we don't want to do so (such as when
- invoking Visual C++ Express), in the name of making the Chromium build
- work. Now that Chromium isn't using buildVisualStudioProject or
- pdevenv, we can put things back they way they were.
-
- Fixes <http://webkit.org/b/33797> build-webkit fails with VC++ Express
- (due to /useenv flag)
-
- Reviewed by Sam Weinig.
-
- * Scripts/pdevenv: Always pass /useenv. Chromium doesn't use this
- script anymore.
- * Scripts/webkitdirs.pm:
- (buildVisualStudioProject): Never pass /useenv anymore. pdevenv takes
- care of this itself, and we don't want to pass /useenv when not using
- pdevenv (e.g., when using VC++ Express, because that will cause it to
- ignore the Platform SDK).
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch land-safely should obsolete old patches
- https://bugs.webkit.org/show_bug.cgi?id=33788
-
- When posting a commit-queue+ patch with land-safely, we should
- obsolete the old patches on the bug. They're really confusing
- because the main use case is to address reviewer feedback on a
- previous patch.
-
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- webkit-patch should authenticate more often
- https://bugs.webkit.org/show_bug.cgi?id=33701
-
- This makes it easier to work with security patches.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- style checker needs to know about GObject-specific requirements
- inside WebCore/bindings/gobject/
- https://bugs.webkit.org/show_bug.cgi?id=33606
-
- Add an exception to the underscore rule for certain
- GObject-specific names.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [check-webkit-style] does understand ResourceHandleWin.h
- https://bugs.webkit.org/show_bug.cgi?id=32975
-
- I'm not 100% convinced this fix is correct, but without more examples,
- it's hard to generalize. We can always generalize the fix in the
- future.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-18 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Actually make land-safely mark commit-queue+ as
- discussed with Eric.
-
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/steps/postdiffforcommit.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- style-queue complains about one-line macros that include multiple statements
- https://bugs.webkit.org/show_bug.cgi?id=33173
-
- Add an exception for multiple statements on a line that starts a macro.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- [check-webkit-style] qt unit testing false positives
- https://bugs.webkit.org/show_bug.cgi?id=32833
-
- Exempt the Qt API and unit tests from the style checker.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- style-check script reports loads of errors on gtk2drawing.c
- https://bugs.webkit.org/show_bug.cgi?id=33771
-
- Exempt WebCore/platform/gtk/gtk2drawing.c and
- WebCore/platform/gtk/gtk2drawing.h from style checks.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-17 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Finished eliminating _cpp_style_state global state variable from
- check-webkit-style code and eliminating _CppStyleState class.
-
- https://bugs.webkit.org/show_bug.cgi?id=33764
-
- * Scripts/webkitpy/style/checker.py:
- - Minor updates caused by changes to cpp_style.py.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Removed _CppStyleState class.
- - Removed verbose_level functions.
- - Added verbosity as a parameter to _FunctionState constructor.
- - Added verbosity as a parameter to process_file().
- - Added verbosity as a parameter to process_file_data().
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Added helper functions to set verbosity while running tests.
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style underscore check should be disabled for Qt methods starting with qt_
- https://bugs.webkit.org/show_bug.cgi?id=33663
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- style-queue complains about missing #include of config.h for non-WebCore projects
- https://bugs.webkit.org/show_bug.cgi?id=33170
-
- WebKitAPITests are consumers of the WebKit API and therefore do not
- need to follow the same include discipline as the rest of WebKit. This
- patch exempts them from the include checks.
-
- * Scripts/webkitpy/style/cpp_style.py:
- * Scripts/webkitpy/style/cpp_style_unittest.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- EWS (Early Warning Systems) should build both debug and release
- https://bugs.webkit.org/show_bug.cgi?id=33681
-
- Build both debug and release for chromium-ews.
-
- * Scripts/webkitpy/commands/early_warning_system.py:
-
-2010-01-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- style-queue should include instructions for how to file bugs against check-webkit-style
- https://bugs.webkit.org/show_bug.cgi?id=32345
-
- Added some text to the error message asking folks to file bugs against
- false positives.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-17 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Adam Barth.
-
- Eliminated the error_count global variable and related
- check-webkit-style refactoring.
-
- https://bugs.webkit.org/show_bug.cgi?id=33678
-
- * Scripts/check-webkit-style:
- - Updated to use webkit_argument_defaults().
- - Renamed styleChecker to style_checker.
-
- * Scripts/webkitpy/style/checker.py:
- - Prefixed the three default arguments with WEBKIT_DEFAULT.
- - Added webkit_argument_defaults().
- - Added default filter_rules parameter to CategoryFilter constructor.
- - Added __ne__() to CategoryFilter class.
- - Added __eq__() and __ne__() to ProcessorOptions class.
- - Added error_count and _write_error attributes to StyleChecker class.
- - Made StyleChecker._handle_error() increment the error count.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Improved CategoryFilterTest.test_eq().
- - Added CategoryFilterTest.test_ne().
- - Added test_eq() and test_ne() to ProcessorOptionsTest class.
- - Updated unit tests to use webkit_argument_defaults().
- - Added StyleCheckerTest class.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Removed references to global error_count.
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Removed CppStyleStateTest class.
-
-2010-01-15 Jon Honeycutt <jhoneycutt@apple.com>
-
- get_accParent should try to retrieve parent AccessibilityObject, before
- calling upon window
-
- https://bugs.webkit.org/show_bug.cgi?id=22893
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::parentElement):
- Get the object's parent. Query it for IAccessible, and return it.
-
-2010-01-16 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/7529519> DumpRenderTree crashes in makeLargeMallocFailSilently()
-
- * DumpRenderTree/mac/CheckedMalloc.cpp:
- (makeLargeMallocFailSilently): Temporarily allow writing to the default
- malloc zone structure while modifying it.
-
-2010-01-16 David Kilzer <ddkilzer@apple.com>
-
- Added back removed properties to iExploder input files
-
- While the update-iexploder-cssproperties script works great to
- add new properties, it has the side-effect of removing old
- properties that once were parsed.
-
- * iExploder/htdocs/cssproperties.in: Added back removed
- properties into their own section.
- * iExploder/htdocs/htmlattrs.in: Ditto.
-
-2010-01-16 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by David Kilzer.
-
- Update iExploder/htdocs/*.in by running update-iexploder-cssproperties
- https://bugs.webkit.org/show_bug.cgi?id=33756
-
- * iExploder/htdocs/cssproperties.in: New CSS attributes
- * iExploder/htdocs/htmlattrs.in: New HTML attributes
- * iExploder/htdocs/htmltags.in: New HTML tags
-
-2010-01-15 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Altered parseDiffHeader() to skip unrecognized lines and
- other minor clean-ups.
-
- https://bugs.webkit.org/show_bug.cgi?id=33476
-
- * Scripts/VCSUtils.pm:
- - Changed parseDiffHeader() as follows:
- - Skips over unrecognized lines.
- - Addressed FIXME to remove substitution for "diff" line.
- - Renamed "version" header hash key to "sourceRevision".
- - Eliminated "copiedFromVersion" header hash key.
- - Included "sourceRevision" also for copied files.
- - Checks that copy revision number matches "sourceRevision".
- - No longer returns $foundHeaderEnding.
- - Dies if header ending not found.
- - Diff header dividing line now always added.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl:
- - Made necessary changes in parseDiffHeader() unit tests.
- - Shortened the file paths in some test cases.
-
-2010-01-14 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Update pywebsocket to 0.4.6
- https://bugs.webkit.org/show_bug.cgi?id=32299
- The newer pywebsocket can handle more simultaneous connections.
-
- * pywebsocket/mod_pywebsocket/handshake.py:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_handshake.py:
-
-2010-01-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(53133): commit-queue no longer rejects patches with invalid committers, instead it hangs
- https://bugs.webkit.org/show_bug.cgi?id=33638
-
- * Scripts/webkitpy/bugzilla.py:
- - Add Bug.id() to match Attachment.id()
- - Give Bug.reviewed_patches and commit_queued_patches the option to return patches with invalid committers/reviewers.
- - Add back a missing variable to _validate_setter_email found by the new unit tests!
- * Scripts/webkitpy/commands/queries.py:
- - Add FIXMEs about the commands being confusingly named.
- * Scripts/webkitpy/commands/queries_unittest.py:
- - Update results to reflect the newly restructured mock bug cache.
- * Scripts/webkitpy/commands/queues.py:
- - Add a new _validate_patches_in_commit_queue method (this is what fixes the regression).
- - Add a FIXME about eventually sorting the patches into some order.
- * Scripts/webkitpy/commands/queues_unittest.py:
- - Update results now that with the newly restructure mock bug cache we're testing cq+'d patches with an invalid committer.
- * Scripts/webkitpy/commands/upload_unittest.py:
- - Update results to match the newly restructured mock bug cache.
- * Scripts/webkitpy/mock_bugzillatool.py:
- - Restructure fetch_ methods to not use a manual list of ids, but rather use Bug and Attachment classes to make real queries from all of the Bugs.
- - Add a few more attachments and bug dictionaries for use by the tests.
-
-2010-01-13 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] DRT missing setUserStyleSheetLocation and setUserStyleSheetEnabled in LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=33617
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setUserStyleSheetEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-14 Adam Roben <aroben@apple.com>
-
- Add LayoutTestController API to force
- -webView:resource:willSendRequest:: to return null
-
- Enables tests for <rdar://problem/7533333> <http://webkit.org/b/33533>
- window.onload never fires if page contains an <iframe> with a bad
- scheme or whose load is cancelled by returning null from resource load
- delegate's willSendRequest
-
- Reviewed by Brady Eidson.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Initialize new member.
- (setWillSendRequestReturnsNullCallback): Call through to
- LayoutTestController.
- (LayoutTestController::staticFunctions): Added new function.
-
- * DumpRenderTree/LayoutTestController.h: Added
- m_willSendRequestReturnsNull.
- (LayoutTestController::willSendRequestReturnsNull):
- (LayoutTestController::setWillSendRequestReturnsNull):
- Added standard accessors.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::willSendRequest):
- Return null if LayoutTestController says to.
-
-2010-01-14 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after removal of XBM support.
-
- * wx/build/settings.py:
-
-2010-01-14 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Add support for partial building on Symbian.
-
- The build happens in the source directory as out of source builds are
- not supported by qmake for Symbian.
-
- Also the actual build isn't started but it is left to the developer
- to choose the architecture/configuration.
-
- * Scripts/webkitdirs.pm:
-
-2010-01-14 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for "detecting" Symbian environments by either
- looking for the EPOCROOT environment variable or via --symbian
- being passed on the commandline.
-
- * Scripts/webkitdirs.pm:
-
-2010-01-14 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Unreviewed.
-
- [Qt] Use a different Makefile names for sources generation and compilation.
- This prevents Makefile overwriting when running build-webkit twice.
-
- * Scripts/webkitdirs.pm:
-
-2010-01-14 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add an "alien_QLabel" classId for manual testing of alien widgets.
-
- https://bugs.webkit.org/show_bug.cgi?id=33373
-
- * QtLauncher/main.cpp:
- (WebPage::createPlugin):
-
-2010-01-14 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r53249.
- http://trac.webkit.org/changeset/53249
- https://bugs.webkit.org/show_bug.cgi?id=33617
-
- This caused http/tests/security/local-user-CSS-from-
- remote.html to fail on the Qt Release Build Bot.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-14 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Moved error() from cpp_style.py to checker.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=33620
-
- * Scripts/check-webkit-style:
- - Addressed FIXME to not set global state.
-
- * Scripts/webkitpy/style/checker.py:
- - Added argument validation to ProcessorOptions constructor.
- - Added should_report_error() to ProcessorOptions class.
- - Removed set_options().
- - Added StyleChecker class.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added unit test class for ProcessorOptions class.
- - Added unit test to check that parse() strips white space.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Removed "filter" and "output_format" methods.
- - Removed should_print_error() and error() functions.
- - Removed default parameter value from process_file().
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Removed call to cpp_style._should_print_error().
- - Removed test_filter() and test_filter_appending().
-
- * Scripts/webkitpy/style/text_style.py:
- - Removed default parameter value from process_file().
-
-2010-01-14 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT missing setUserStyleSheetLocation and setUserStyleSheetEnabled in LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=33617
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setUserStyleSheetEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix CloseBugForLandDiff unittest to actually run
- https://bugs.webkit.org/show_bug.cgi?id=33640
-
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/steps/closebugforlanddiff_unittest.py:
-
-2010-01-12 Jon Honeycutt <jhoneycutt@apple.com>
-
- MSAA: selected, selectable, extended selectable, and multiple
- selectable states are not reported
-
- https://bugs.webkit.org/show_bug.cgi?id=33574
- <rdar://problem/7536826>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsSelectableCallback):
- Return the result of calling isSelectable().
- (getIsMultiSelectableCallback):
- Return the result of calling isMultiSelectable().
- (AccessibilityUIElement::getJSClass):
- Add isSelected and isMultiSelectable properties to the JSClass
- definition.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- Declare isSelectable() and isMultiSelectable().
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isSelectable):
- Stubbed.
- (AccessibilityUIElement::isMultiSelectable):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isSelectable):
- Stubbed.
- (AccessibilityUIElement::isMultiSelectable):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (accessibilityState):
- Get the object's state, and return it.
- (AccessibilityUIElement::isSelected):
- Check the object's selected state.
- (AccessibilityUIElement::isSelectable):
- Check the object's selectable state.
- (AccessibilityUIElement::isMultiSelectable):
- Check the object's extended/multiple selectable state.
-
-2010-01-13 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Repeat the below for CloseBugForLandDiff.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/steps/closebugforlanddiff.py:
- * Scripts/webkitpy/steps/closebugforlanddiff_unittest.py: Added.
-
-2010-01-13 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Turn the mac-ews status bubbles back on now that this bot
- is running again.
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-01-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- REGRESSION(53133): webkit-patch land dies if it can't find a bug id.
- https://bugs.webkit.org/show_bug.cgi?id=33634
-
- Deal with the case of no bug patch object in the state.
-
- * Scripts/webkitpy/steps/updatechangelogswithreview_unittests.py:
- * Scripts/webkitpy/steps/updatechangelogswithreviewer.py:
-
-2010-01-13 Kenneth Russell <kbr@google.com>
-
- Unreviewed; added myself to the committers list.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-13 Darin Adler <darin@apple.com>
-
- Ignore compiled Python in more of webkitpy.
-
- * Scripts/webkitpy/commands: Added property svn:ignore.
- * Scripts/webkitpy/steps: Added property svn:ignore.
- * Scripts/webkitpy/style: Added property svn:ignore.
-
-2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix build problem related to the pushd command
-
- * Scripts/webkitdirs.pm:
-
-2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Split the build process in two different .pro files.
- This allows qmake to be run once all source files are available.
-
- * Scripts/webkitdirs.pm: Add calls to make DerivedSources.pro in JSC and WC.
-
-2010-01-13 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed tiny typo fix in docstrings.
-
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-01-13 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Created a CategoryFilter class to encapsulate the logic of
- filter rules.
-
- https://bugs.webkit.org/show_bug.cgi?id=33454
-
- * Scripts/webkitpy/style/checker.py:
- - Added CategoryFilter class.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- - Added CategoryFilter unit tests.
-
- * Scripts/webkitpy/style/cpp_style.py:
- - Updated filter methods to use CategoryFilter.
-
- * Scripts/webkitpy/style/cpp_style_unittest.py:
- - Updated references to filters.
-
-2010-01-12 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed. Now I can review :)
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-12 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Darin Adler.
-
- Extend WinLauncher example with better printing features.
-
- * WinLauncher/PrintWebUIDelegate.cpp:
- (PrintWebUIDelegate::webViewPrintingMarginRect): Provide slightly
- larger margins.
- (PrintWebUIDelegate::webViewHeaderHeight): Compute header height based
- on text metrics.
- (PrintWebUIDelegate::webViewFooterHeight): Compute footer height based
- on text metrics.
- (PrintWebUIDelegate::drawHeaderInRect): Write useful header, along
- with separating line.
- (PrintWebUIDelegate::drawFooterInRect):
- * WinLauncher/PrintWebUIDelegate.h: Remove stubs.
- * WinLauncher/WinLauncher.cpp:
- (PrintView): Correct loop used to print individual pages.
- Previously it started at 0, which is a wild-card to print all
- pages at once.
-
-2010-01-12 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=33540
- Make it possible to build in debug mode with assertions disabled
-
- * DumpRenderTree/mac/ObjCController.m: (-[ObjCController accessStoredWebScriptObject]):
-
-2010-01-11 Darin Fisher <darin@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [Chromium] "build-webkit --chromium" should run "make all" on Linux
- https://bugs.webkit.org/show_bug.cgi?id=33500
-
- * Scripts/webkitdirs.pm:
-
-2010-01-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- AssignToCommitter does not need to fetch bugs twice
- https://bugs.webkit.org/show_bug.cgi?id=33530
-
- This is a no-brainer patch now that we've added Bug.reviewed_patches
-
- * Scripts/webkitpy/commands/upload.py:
-
-2010-01-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla.py should have an Attachment object instead of passing around dictionaries
- https://bugs.webkit.org/show_bug.cgi?id=31594
-
- * Scripts/webkitpy/bugzilla.py:
- - Add a new Attachment class, with accessor methods for all the necessary properties.
- - Update Bug to carry a pointer back to bugzilla (attachments need to access Bugzilla for committer validation and url())
- - Move reviewed_patches and commit_queued_patches out of Bugzilla custom methods and onto Bug
- - Move committer validation logic into its own class.
- - Committer rejection is only used in one place. Make the new Bug reviewed_patches and commit_queued_patches
- handle the common case (of returning "reviewer" or "committer" as None), and let CommitterValidation handle
- the case where we want to reject patches in bugzilla.
- - Simplify fetch_patches_from_commit_queue now that committer validation is simpler.
- - Make all self.bugzilla.fetch_bug access go through BugzillaQueries._fetch_bug.
- - Mark set_flag_on_attachment as non-private to denote that CommitterValidation depends on it.
- - Move fetch_reviewed_patches_from_bug and fetch_commit_queue_patches_from_bug logic onto the Bug class.
- * Scripts/webkitpy/bugzilla_unittest.py:
- - Move test_flag_permission_rejection_message into a new CommitterValidationTest class.
- * Scripts/webkitpy/commands/download.py:
- - Store "bug_id" in state instead of making a fake patch object.
- - Update to use Attachment and Bug objects.
- * Scripts/webkitpy/commands/download_unittest.py:
- - Update expected results now that our testing framework covers more code.
- * Scripts/webkitpy/commands/early_warning_system.py: Update to use new Attachment class.
- * Scripts/webkitpy/commands/queries.py: Remove unused ReviewedPatches class.
- * Scripts/webkitpy/commands/queries_unittest.py: ditto.
- * Scripts/webkitpy/commands/queues.py: Update to use new Attachment and CommitterValidator classes.
- * Scripts/webkitpy/commands/queuestest.py: ditto.
- * Scripts/webkitpy/commands/upload.py: ditto.
- * Scripts/webkitpy/mock_bugzillatool.py:
- - Now that more logic has moved into Attachment and Bug, we have to actually
- provide real reviewer emails as well as real reviewer flags.
- - Update mock methods to return Attachment objects.
- * Scripts/webkitpy/scm.py: Update to use Attachment class.
- * Scripts/webkitpy/scm_unittest.py: Update to use Attachment class.
- * Scripts/webkitpy/statusserver.py: ditto.
- * Scripts/webkitpy/steps/applypatch.py: ditto.
- * Scripts/webkitpy/steps/applypatchwithlocalcommit.py: ditto.
- * Scripts/webkitpy/steps/closebug.py: ditto.
- * Scripts/webkitpy/steps/closebugforlanddiff.py: Handle either state["bug_id"] or state["patch"].bug_id()
- * Scripts/webkitpy/steps/closepatch.py: Update to use Attachment class.
- * Scripts/webkitpy/steps/obsoletepatches.py: ditto.
- * Scripts/webkitpy/steps/updatechangelogswithreviewer.py: ditto.
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Unreviewed typo fix. :(
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add "error" to the right part of the message.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- EWS should show purple when svn-apply fails
- https://bugs.webkit.org/show_bug.cgi?id=33527
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove copy/paste code from subclasses of AbstractReviewQueue
- https://bugs.webkit.org/show_bug.cgi?id=33525
-
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add Gustavo and Xan as gtk-ews watchers
- https://bugs.webkit.org/show_bug.cgi?id=33519
-
- * Scripts/webkitpy/commands/early_warning_system.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch shouldn't waste my time for with a component prompt
- https://bugs.webkit.org/show_bug.cgi?id=33521
-
- The component field isn't very useful for bugs created with
- webkit-patch because they're likely to be resolved quickly. Instead of
- always prompting for a component, we should just default to the "New
- Bugs" component. If the bug stays around for more than five minutes,
- we can assign it a proper component.
-
- * Scripts/webkitpy/bugzilla.py:
-
-2010-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add experimental "land-safely" command to webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=33518
-
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/steps/__init__.py:
- * Scripts/webkitpy/steps/postdiffforcommit.py: Added.
-
-2010-01-11 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after introduction of JS_NO_EXPORT
-
- * wx/build/settings.py:
-
-2010-01-11 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r53079.
- http://trac.webkit.org/changeset/53079
- https://bugs.webkit.org/show_bug.cgi?id=33197
-
- Adam doens't think this actually works, and believe it caused
- a regression https://bugs.webkit.org/show_bug.cgi?id=33488 so
- rolling this out.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/commands/abstractdiffcommand.py: Removed.
- * Scripts/webkitpy/commands/abstractdiffcommand_unittest.py: Removed.
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
-
-2010-01-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Kilzer.
-
- bugzilla-tool submit-patch mistakenly picks up bug URLs in non-ChangeLog files
- https://bugs.webkit.org/show_bug.cgi?id=33197
-
- We should just search for bug numbers in the ChangeLogs instead of in
- the whole diff.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/commands/abstractdiffcommand.py: Added.
- * Scripts/webkitpy/commands/abstractdiffcommand_unittest.py: Added.
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
-
-2010-01-11 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Created a unit-tested function to parse the header block of
- a Git or SVN diff -- for future refactoring of svn-apply and
- svn-unapply.
-
- https://bugs.webkit.org/show_bug.cgi?id=33447
-
- * Scripts/VCSUtils.pm:
- - Added parseDiffHeader().
- - Removed irrelevant comment from gitdiff2svndiff().
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl: Added.
- - Added 48 unit tests for parseDiffHeader().
-
-2010-01-10 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by David Kilzer.
-
- bugzilla-tool submit-patch mistakenly picks up bug URLs in non-ChangeLog files
- https://bugs.webkit.org/show_bug.cgi?id=33197
-
- Fix a typo: Commmand -> Command.
-
- * Scripts/webkitpy/commands/abstractsequencedcommand.py:
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/multicommandtool.py:
-
-2010-01-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Let webkit-patch work with options in $EDITOR
- https://bugs.webkit.org/show_bug.cgi?id=33414
-
- The $EDITOR evironment variable might have command line options like
- bbedit -w. This patch lets us run those $EDITORs.
-
- * Scripts/webkitpy/user.py:
-
-2010-01-10 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Adam Barth.
-
- [Qt] Add enableXSSAuditor support to QWebSettings and DRT.
-
- https://bugs.webkit.org/show_bug.cgi?id=33419
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-10 Adam Barth <abarth@webkit.org>
-
- Unreviewed cosmetic change. Remove the status bubble for mac-ews
- because we don't have hardware for it at the moment.
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-01-09 Daniel Bates <dbates@webkit.org>
-
- No review, rolling out r53044.
- http://trac.webkit.org/changeset/53044
- https://bugs.webkit.org/show_bug.cgi?id=33419
-
- We need to look into this some more because the Qt
- bot is failing the XSSAuditor tests. See bug #33419
- for more details.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-09 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=33419
-
- Adds support for the XSSAuditor to the Qt DRT.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-01-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Retry writes to QueueStatusServer when we get 500 errors
- https://bugs.webkit.org/show_bug.cgi?id=33412
-
- This prevents the queues from failing to mark a patch as "pass" or
- "fail" when AppEngine throws 500 errors.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/networktransaction.py: Added.
- * Scripts/webkitpy/networktransaction_unittest.py: Added.
- * Scripts/webkitpy/statusserver.py:
- * Scripts/webkitpy/steps/closebugformarkbugfixed.py: Added.
- * Scripts/webkitpy/steps/closebugregardlessofpatches.py: Added.
- * Scripts/webkitpy/steps/findbugidfromsvnrevision.py: Added.
-
-2010-01-09 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/33430> Fix rounded borders in queue status on older Firefox and Safari browsers
-
- Reviewed by Eric Seidel.
-
- * QueueStatusServer/templates/statusbubble.html: Added
- -moz-border-radius and -webkit-border-radius to provide rounded
- borders in older Firefox and Safari browsers.
-
-2010-01-09 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Modified VCSUtils::gitdiff2svndiff() to accept strings that
- end in vertical white space.
-
- https://bugs.webkit.org/show_bug.cgi?id=33415
-
- * Scripts/VCSUtils.pm:
- * Scripts/webkitperl/VCSUtils_unittest/gitdiff2svndiff.pl:
-
-2010-01-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run-javascriptcore-tests needs a --quiet flag
- https://bugs.webkit.org/show_bug.cgi?id=33399
-
- Until run-javascriptcore-tests has a --quiet flag, lets just stiffle the output in webkit-patch.
-
- * Scripts/webkitpy/steps/runtests.py:
-
-2010-01-08 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Alexey Proskuryakov.
-
- Only run http and websocket tests as last if no argument is given to be able to explicitly control the test order.
-
- To be able to run multiple instances of run-webkit-tests besides each other on the same machine we need to minimize
- the time when Apache and WebSocketServer is locked by tests.
- Because closeHTTPD() and closeWebSocketServer() is only called at the end of the testing,
- we need to run http and websocket tests after all other tests.
- If one however explicitly specifies the tests to run in the argument list of run-webkit-tests
- we need to preserve the given order.
-
- * Scripts/run-webkit-tests:
-
-2010-01-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't post style-queue pass messages to bugs
- https://bugs.webkit.org/show_bug.cgi?id=33404
-
- These messages aren't needed any more now that we have the status
- bubble reporting pass events passively.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Optimize the number of CPUs used for building Qt and Gtk
- https://bugs.webkit.org/show_bug.cgi?id=33394
-
- Instead of hardcoding the number 8, we should read the number of CPUs
- from the environment.
-
- * Scripts/webkitpy/executive.py:
- * Scripts/webkitpy/webkitport.py:
- * Scripts/webkitpy/webkitport_unittest.py:
-
-2010-01-08 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Eric Seidel.
-
- REGRESSION(52819?): AXLoadComplete and AXLayoutComplete causes 4 tests fail on Snow Leopard Debug bot
- https://bugs.webkit.org/show_bug.cgi?id=33300
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (_accessibilityNotificationCallback):
- (AccessibilityUIElement::addNotificationListener):
-
-2010-01-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- commit-queue should run run-javascriptcore-tests
- https://bugs.webkit.org/show_bug.cgi?id=33376
-
- I also made it run the python and perl unit tests.
-
- * Scripts/webkitpy/steps/runtests.py:
- * Scripts/webkitpy/webkitport.py:
-
-2010-01-07 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Darin Adler.
-
- Run the http and websocket tests after all other tests.
- https://bugs.webkit.org/show_bug.cgi?id=33153
-
- * Scripts/run-webkit-tests:
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix some test-webkitpy expectations
- https://bugs.webkit.org/show_bug.cgi?id=33345
-
- I forgot to change these when I added the CheckStyle step.
-
- * Scripts/webkitpy/commands/upload_unittest.py:
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch edit-changelogs (or upload) will open blank files if run outside the root
- https://bugs.webkit.org/show_bug.cgi?id=33341
-
- Fix this by moving to the root directory before editing ChangeLogs.
- There is a related bug with CheckStyle.
-
- * Scripts/webkitpy/steps/checkstyle.py:
- * Scripts/webkitpy/steps/editchangelog.py:
-
-2010-01-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- media/unsupported-tracks.html is failing on Snow Leopard Release bot
- https://bugs.webkit.org/show_bug.cgi?id=32339
-
- This is a speculative fix. I do not have a Snow Leopard machine to test on
- and I've not seen mention of someone being able to reproduce this locally.
-
- Prevent watchdog timer from firing after a test completes but before
- the next one starts, causing the error to appear in the next test.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Stop the watchdog before printing #EOF for the test content.
- We only need to care about the JavaScript of the test running too long
- or some hang in WebCore. Any other failures will be covered by the calling
- script's own watchdog timer.
-
-2010-01-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue is stuck spinning due to exception
- https://bugs.webkit.org/show_bug.cgi?id=33358
-
- * Scripts/webkitpy/commands/queues.py:
- - Don't try to stringify the exception.
-
-2010-01-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- Don't leak a JSStringRef within _accessibilityNotificationCallback.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (_accessibilityNotificationCallback): Have a JSRetainPtr adopt the JSStringRef so that it will be cleaned up
- when it goes out of scope.
-
-2010-01-07 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler.
-
- Add proposed rename of HTMLPlugInImageElement to HTMLEmbeddedObjectElement.
-
- * Scripts/do-webcore-rename:
-
-2010-01-07 Kim Grönholm <kim.gronholm@nomovok.com>
-
- Reviewed by Antti Koivisto.
-
- Wrong state and TouchLists in TouchEvents
- https://bugs.webkit.org/show_bug.cgi?id=32878
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::touchStart):
- (EventSender::touchEnd):
- (EventSender::clearTouchPoints):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-01-07 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Adam Barth.
-
- Created a module that runs the style package unit tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=32973
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/style/unittests.py: Added.
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Don't print a redundant message when confirming a diff
- https://bugs.webkit.org/show_bug.cgi?id=33315
-
- Instead of saying "ERROR: User declined" we should just exit because
- the use knows they just declined!
-
- * Scripts/webkitpy/steps/confirmdiff.py:
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Check style before uploading a patch
- https://bugs.webkit.org/show_bug.cgi?id=33314
-
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/steps/checkstyle.py:
- * Scripts/webkitpy/steps/options.py:
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Add prepare and post to webkit-patch main help
- https://bugs.webkit.org/show_bug.cgi?id=33313
-
- * Scripts/webkitpy/commands/upload.py:
-
-2010-01-07 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add Chromium bots to the list of "core builders" (builders which stop the commit-queue when they turn red)
- https://bugs.webkit.org/show_bug.cgi?id=33290
-
- Add the Chromium builders to our list of core builders and test that our regexps work.
- I also updated our regexp testing to make sure we cover all known builders at build.webkit.org.
-
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/buildbot_unittest.py:
-
-2010-01-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool needs a new name
- https://bugs.webkit.org/show_bug.cgi?id=28459
-
- Rename bugzilla-tool to webkit-patch. Also, rename some commands to
- make more sense with the new name.
-
- * Scripts/bugzilla-tool: Removed.
- * Scripts/webkit-patch: Added.
- * Scripts/webkit-tools-completion.sh:
- * Scripts/webkitpy/bugzilla_unittest.py:
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/queueengine.py:
- * Scripts/webkitpy/steps/completerollout.py:
-
-2010-01-07 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Eric Seidel.
-
- Moved style-related modules to webkitpy.style sub-package.
-
- https://bugs.webkit.org/show_bug.cgi?id=32971
-
- * Scripts/check-webkit-style:
- - Updated import statement.
-
- * Scripts/test-webkitpy:
- - Updated import statements.
-
- * Scripts/webkitpy/cpp_style.py: Removed.
- - Moved to webkitpy/style.
-
- * Scripts/webkitpy/cpp_style_unittest.py: Removed.
- - Moved to webkitpy/style.
-
- * Scripts/webkitpy/style.py: Removed.
- - Moved to webkitpy/style/checker.py.
-
- * Scripts/webkitpy/style/__init__.py: Added.
- - Added containing webkitpy directory to package search path.
-
- * Scripts/webkitpy/style/checker.py: Copied from Scripts/webkitpy/style.py.
- * Scripts/webkitpy/style/checker_unittest.py: Copied from Scripts/webkitpy/style_unittest.py.
- - Updated import statement.
-
- * Scripts/webkitpy/style/cpp_style.py: Copied from Scripts/webkitpy/cpp_style.py.
- * Scripts/webkitpy/style/cpp_style_unittest.py: Copied from Scripts/webkitpy/cpp_style_unittest.py.
- - Update import statement.
-
- * Scripts/webkitpy/style/text_style.py: Copied from Scripts/webkitpy/text_style.py.
- * Scripts/webkitpy/style/text_style_unittest.py: Copied from Scripts/webkitpy/text_style_unittest.py.
- * Scripts/webkitpy/style_unittest.py: Removed.
- - Moved to webkitpy/style/checker_unittest.py.
-
- * Scripts/webkitpy/text_style.py: Removed.
- - Moved to webkitpy/style.
-
- * Scripts/webkitpy/text_style_unittest.py: Removed.
- - Moved to webkitpy/style.
-
-2010-01-06 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Qt] Support the 3rd argument of EventSender.keyDown that
- has been recently added to report keyLocation
- (see also: https://bugs.webkit.org/show_bug.cgi?id=28247).
- https://bugs.webkit.org/show_bug.cgi?id=33250
-
- Test: fast/events/keydown-numpad-keys.html
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add long_help for all common commands.
- https://bugs.webkit.org/show_bug.cgi?id=33261
-
- For now these long_helps are pretty basic.
- These were all written to just explain the steps
- that each command runs. This style long_help could
- be made easier by using:
- https://bugs.webkit.org/show_bug.cgi?id=33257
-
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/queries.py:
-
-2010-01-06 Diego Gonzalez <diego.gonzalez@openbossa.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] Add page zooming support to Qt DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=32898
-
- Patch by Kim Grönholm <kim.gronholm@nomovok.com>,
- Diego Gonzalez <diego.gonzalez@openbossa.org> and
- Afonso Costa <afonso.costa@openbossa.org>
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::zoomPageIn):
- (EventSender::zoomPageOut):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-01-06 Eric Seidel <eric@webkit.org>
-
- No review, just adding Mike Belshe's new bugzilla email at his request.
-
- * Scripts/webkitpy/committers.py:
-
-2010-01-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Rolling out r52869 and r52853 due to bot
- and local run-webkit-test failures
-
- REGRESSION(52854?) fast/workers/shared-worker-constructor.html failed on Leopard Build Bot
- https://bugs.webkit.org/show_bug.cgi?id=33256
-
- The original bug was https://bugs.webkit.org/show_bug.cgi?id=33153
-
- * Scripts/run-webkit-tests:
-
-2010-01-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed "build" fix. Just adding missing include.
-
- bugzilla-tool rollout --complete-rollout should make a nicer bug comment
- https://bugs.webkit.org/show_bug.cgi?id=29212
-
- * Scripts/webkitpy/steps/completerollout.py:
-
-2010-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool rollout --complete-rollout should make a nicer bug comment
- https://bugs.webkit.org/show_bug.cgi?id=29212
-
- * Scripts/webkitpy/bugzilla.py:
- - Make reopen_bug robust against the bug already being open.
- * Scripts/webkitpy/commands/download.py:
- - Remove dead code from Rollout.
- * Scripts/webkitpy/steps/completerollout.py:
- - Improve the rollout comment.
-
-2010-01-06 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Darin Adler.
-
- Set isHttpdOpen to 0 if pidfile does not exist for some reason.
- Speculative fix for https://bugs.webkit.org/show_bug.cgi?id=33256.
-
- * Scripts/run-webkit-tests:
-
-2010-01-06 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Darin Adler.
-
- Change hardcoded /tmp in run-webkit-tests to File::Spec->tmpdir(),
- and remove the httpd's pidfile directory if httpd terminated.
-
- * Scripts/run-webkit-tests:
-
-2010-01-05 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Levin.
-
- Refactored check-webkit-style's argument parser to not rely
- on global state, and improved its error handling and unit
- test coverage.
-
- https://bugs.webkit.org/show_bug.cgi?id=32966
-
- * Scripts/check-webkit-style:
- - Adjusted to use new argument parser.
-
- * Scripts/webkitpy/cpp_style.py:
- - Changed _CppStyleState to accept an array of filter rules
- instead of a comma-delimited string.
- - Eliminated cpp_style._DEFAULT_FILTER_RULES.
- - Eliminated cpp_style._USAGE.
-
- * Scripts/webkitpy/cpp_style_unittest.py:
- - Updated test_filter() and test_default_filter().
-
- * Scripts/webkitpy/style.py:
- - Converted style._USAGE to create_usage().
- - Corrected usage instructions by removing 0 as a valid
- --verbose flag value.
- - Removed use_webkit_styles().
- - Added ProcessorOptions class.
- - Added ArgumentDefaults class.
- - Added ArgumentPrinter class.
- - Removed parse_arguments and added ArgumentParser class.
- - Moved exit_with_usage() and exit_with_categories() into
- ArgumentParser.
- - Refactored parse_arguments() as ArgumentParser.parse().
- - Improved parser error handling.
-
- * Scripts/webkitpy/style_unittest.py:
- - Added DefaultArgumentsTest class.
- - Addressed FIXME to check style.WEBKIT_FILTER_RULES
- against style.STYLE_CATEGORIES.
- - Added ArgumentPrinterTest class.
- - Added ArgumentParserTest class and rewrote parser unit tests.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Test that it's safe to call IWebView::close when
- IWebView::initWithFrame hasn't been called
-
- Part of <http://webkit.org/b/32827> Crash when calling
- IWebView::close, then releasing the WebView, without calling
- DestroyWindow
-
- Reviewed by Steve Falkenburg.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- (WebKitAPITest::CloseWithoutInitWithFrame): Calls IWebView::close
- without ever calling IWebView::initWithFrame and tests that we don't
- crash or leak.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Add more WebViewDestruction tests
-
- Fixes <http://webkit.org/b/33216>.
-
- Reviewed by Eric Seidel.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- (WebKitAPITest::NoInitWithFrame):
- (WebKitAPITest::CloseThenDestroyViewWindow):
- (WebKitAPITest::DestroyViewWindowThenClose):
- (WebKitAPITest::DestroyHostWindow):
- (WebKitAPITest::DestroyHostWindowThenClose):
- (WebKitAPITest::CloseThenDestroyHostWindow):
- Added these tests that exercise tearing down a WebView in various
- ways, all of which we eventually want to have work. Some of them
- currently crash or leak.
-
-2010-01-05 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Eric Seidel.
-
- [Qt] fix DRT link failures on --no-svg builds when only making changes to DRT
-
- If you're working from a --minimal or --no-svg build and make changes to the
- DRT, then recompile, the build will fail.
-
- This is because the current behavior at build time is to assume that the
- previous Qt build supported SVG and consequently delete libQtWebKit.so.
- Unfortunately, just deleting libQtWebKit.so will not cause the library to
- re-link. Instead the build will see libQtWebKit.so.4 and co., pass over the
- linking phase, and attempt to link the DRT with libQtWebKit.so absent. This
- results in a link failure on the DRT.
-
- Since re-linking libQtWebKit can take up to ten minutes and should be avoided
- in cases where not actually required, remove the assumption that
- the previous Qt build supported SVG, and amend the symbol detection to look for
- a symbol name that is not present in SVG builds. Currently webkitdirs.pm looks
- for 'SVGElement' but even non-SVG builds contain the symbol 'isSVGElement'.
-
- https://bugs.webkit.org/show_bug.cgi?id=32992
-
- * Scripts/webkitdirs.pm:
-
-2010-01-05 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Switched to generating list of Perl unit test files dynamically,
- instead of explicitly.
-
- https://bugs.webkit.org/show_bug.cgi?id=33200
-
- * Scripts/test-webkitperl:
-
-2010-01-05 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Reimplement EventSender::leapForward
- https://bugs.webkit.org/show_bug.cgi?id=33114
-
- Follow Windows implementation of leapForward. When leapForward is called,
- messages are queued and posted after the timeout. A new event loop is created to
- handle those messages and the additional messages that are created as a result.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::leapForward):
- (EventSender::sendOrQueueEvent):
- (EventSender::replaySavedEvents):
- (EventSender::eventFilter):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-01-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Fix obscure queue crash in queueengine
- https://bugs.webkit.org/show_bug.cgi?id=33196
-
- Sometimes we get an exception that can't be stringified. For example:
-
- AttributeError: 'ParseError' object has no attribute 'msg'
-
- In these cases, the whole queue dies because we're in the global
- exception handler. Instead of dieing here, we should just print a less
- informative message to the console. We're already printing the whole
- backtrace anyway, so there's not much point to stringifying the
- exception anyway.
-
- * Scripts/webkitpy/queueengine.py:
-
-2010-01-05 Dominic Mazzoni <dmazzoni@google.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=32571
-
- For an object with an aria role of "checkbox" or "radiobutton",
- use the "aria-checked" attribute to determine if it's checked.
- These changes add an isChecked() method to AccessibilityUIElement
- so that we can check for this property from a layout test.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsCheckedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isChecked):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isChecked):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isChecked):
-
-2010-01-05 David Levin <levin@chromium.org>
-
- Reviewed by Darin Adler.
-
- Having a comment for the #endif for a header guard is not required WebKit style.
- https://bugs.webkit.org/show_bug.cgi?id=33214
-
- * Scripts/webkitpy/cpp_style.py: removed the check and made the loop exit
- early when it has all the needed information to continue.
- * Scripts/webkitpy/cpp_style_unittest.py: removed the corresponding tests.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Share more code in the WebViewDestruction tests
-
- Part of <http://webkit.org/b/33212> Small fixes/improvements to
- WebKitAPITest
-
- Reviewed by Sam Weinig.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- (WebKitAPITest::createAndInitializeWebView): Renamed from
- createWebView. Now initializes the HostWindow and returns the
- WebView's HWND via an out-parameter.
- (WebKitAPITest::finishWebViewDestructionTest): Added. Code came from
- the CloseWithoutDestroyWindow test.
- (WebKitAPITest::CloseWithoutDestroyViewWindow): Renamed from
- CloseWithoutDestroyWindow and changed to use the new functions.
- (WebKitAPITest::MainFrameAfterClose): Changed to use the new
- functions.
- (WebKitAPITest::NoCloseOrDestroyViewWindow): Renamed from
- NoCloseOrDestroyWindow and changed to use the new functions.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Don't show HostWindows by default
-
- This was making WebKitAPITest very flashy as windows appeared and
- disappeared.
-
- Part of <http://webkit.org/b/33212> Small fixes/improvements to
- WebKitAPITest
-
- Reviewed by Sam Weinig.
-
- * WebKitAPITest/HostWindow.cpp:
- (WebKitAPITest::HostWindow::initialize): Removed the WS_VISIBLE style
- from the window.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Don't hang in WebKitAPITest if no messages have been posted
-
- Part of <http://webkit.org/b/33212> Small fixes/improvements to
- WebKitAPITest
-
- Reviewed by Sam Weinig.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- (WebKitAPITest::runMessagePump): Use PeekMessage instead of GetMessage
- to avoid hanging if no messages have been posted.
-
-2010-01-05 Adam Roben <aroben@apple.com>
-
- Fix WebKitCreateInstance helper
-
- Part of <http://webkit.org/b/33212> Small fixes/improvements to
- WebKitAPITest
-
- Reviewed by Sam Weinig.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- (WebKitAPITest::WebKitCreateInstance): Pass the pointer straight
- through, instead of taking its address.
-
-2010-01-04 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Fisher.
-
- Reorganize, document and rename OS() platform macros.
- https://bugs.webkit.org/show_bug.cgi?id=33198
-
- Adapt to name changes.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/config.h:
-
-2010-01-05 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Eric Seidel.
-
- Minor improvements to test-webkit-scripts, as suggested
- by an earlier review.
-
- https://bugs.webkit.org/show_bug.cgi?id=33125
-
- * Scripts/test-webkit-scripts:
- - Used OptionParser class instead of getopt.getopt().
- - Created main() method for __main__ block.
- - Enclosed functions in a class.
-
-2010-01-05 Chris Fleizach <cfleizach@apple.com>
-
- No review. Fix DRT breakage on Tiger/Leopard.
-
- Add ARIA "Live Region" support
- https://bugs.webkit.org/show_bug.cgi?id=33117
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
-
-2010-01-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Add ARIA "Live Region" support
- https://bugs.webkit.org/show_bug.cgi?id=33117
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (indexOfChildCallback):
- (boolAttributeValueCallback):
- (stringAttributeValueCallback):
- (addNotificationListenerCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::indexOfChild):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::boolAttributeValue):
- (AccessibilityUIElement::addNotificationListener):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::indexOfChild):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::boolAttributeValue):
- (_accessibilityNotificationCallback):
- (AccessibilityUIElement::addNotificationListener):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::indexOfChild):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::boolAttributeValue):
- (AccessibilityUIElement::addNotificationListener):
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool rollout should require a reason
- https://bugs.webkit.org/show_bug.cgi?id=30810
-
- * Scripts/webkitpy/changelogs.py: Add support for a reason, add auto-wrapping logic.
- * Scripts/webkitpy/changelogs_unittest.py: Test reason support.
- * Scripts/webkitpy/commands/download.py: rollout now requires a reason, remove unused BUGID argument
- * Scripts/webkitpy/commands/download_unittest.py: pass required reason
- * Scripts/webkitpy/steps/preparechangelogforrevert.py: pass reason to update_for_revert
-
-2010-01-04 Jon Honeycutt <jhoneycutt@apple.com>
-
- MSAA: <select> elements should broadcast value change events
-
- https://bugs.webkit.org/show_bug.cgi?id=33088
-
- <rdar://problem/7332364>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (logValueChangeEventsCallback):
- Start logging value change events.
- (AccessibilityController::getJSClass):
- Add a "logValueChangeEvents" to the AccessibilityController's JS class
- definition.
- (AccessibilityController::resetToConsistentState):
- Disable logging of value change events.
-
- * DumpRenderTree/AccessibilityController.h:
- Declare setLogValueChangeEvents(), and add a member variable for the
- value change event hook.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::setLogValueChangeEvents):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::setLogValueChangeEvents):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- Initialize new member var.
- (AccessibilityController::~AccessibilityController):
- Disable logging of value change events.
- (logEventProc):
- When we receive an EVENT_OBJECT_VALUECHANGE, log the name of the object
- and its value.
- (AccessibilityController::setLogValueChangeEvents):
- If disabling logging, unhook the event, and clear the event hook
- member var. Otherwise, query for the root element to enable
- accessibility, and hook EVENT_OBJECT_VALUECHANGE.
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- long_help for submit-patch
- https://bugs.webkit.org/show_bug.cgi?id=33184
-
- * Scripts/webkitpy/commands/upload.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue can wrongly reject patches if the buildbots are behind
- https://bugs.webkit.org/show_bug.cgi?id=30098
-
- Check to make sure we can currently build and test before trying to
- land a patch.
-
- * Scripts/webkitpy/commands/queues.py:
-
-2010-01-04 Adam Roben <aroben@apple.com>
-
- Add a test harness for the Windows WebKit API, and a few tests
-
- We currently only have tests for a handful of bugs regarding WebView
- destruction, but more tests can easily be added later. Eventually
- we'll run these tests as part of run-webkit-tests.
-
- Fixes <http://webkit.org/b/33167>.
-
- Reviewed by Sam Weinig.
-
- * WebKitAPITest/HostWindow.cpp: Added.
- (WebKitAPITest::HostWindow::HostWindow): Initialize m_window.
- (WebKitAPITest::HostWindow::~HostWindow): Destroy our window if
- needed.
- (WebKitAPITest::HostWindow::initialize): Create our window.
- (WebKitAPITest::HostWindow::clientRect): Return our window's client
- rect.
- (WebKitAPITest::HostWindow::registerWindowClass): Does what it says.
- (WebKitAPITest::HostWindow::wndProc): Just call through to
- DefWindowProcW.
-
- * WebKitAPITest/HostWindow.h: Added.
- (WebKitAPITest::HostWindow::window): Simple getter.
-
- * WebKitAPITest/Test.h: Added. This file defines some macros useful
- for writing tests.
-
- * WebKitAPITest/TestsController.cpp: Added.
- (WebKitAPITest::TestsController::TestsController): Initialize our
- members.
- (WebKitAPITest::TestsController::shared): Return the shared instance.
- (WebKitAPITest::TestsController::runAllTests): Run a message pump
- until a WM_QUIT message is received, then return whether all tests
- succeeded.
- (WebKitAPITest::TestsController::addTest): Add the test to m_tests and
- start running tests soon.
- (WebKitAPITest::TestsController::testFailed): Record the failure and
- print a message about it to stdout.
- (WebKitAPITest::TestsController::runNextTest): If we don't have any
- tests to run, post a WM_QUIT message to stop the message pump.
- Otherwise, run the test and print whether it passed, then schedule the
- next test.
- (WebKitAPITest::TestsController::runNextTestSoon): Set a 0-delay timer
- to run the next test.
- (WebKitAPITest::TestsController::registerWindowClass): Does what it
- says.
- (WebKitAPITest::TestsController::wndProc): If the runNextTestTimer
- fired, call runNextTest(). Pass everything else through to
- DefWindowProcW.
-
- * WebKitAPITest/TestsController.h: Added.
-
- * WebKitAPITest/WebKitAPITest.vcproj: Added.
-
- * WebKitAPITest/WebKitAPITestCommon.vsprops: Added.
-
- * WebKitAPITest/main.cpp: Added.
- (main): (Mostly) just calls TestsController::runAllTests.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp: Added.
- (WebKitAPITest::WebKitCreateInstance): Helper function template to
- call through to the real WebKitCreateInstance.
- (WebKitAPITest::webViewCount): Helper function to call through to
- IWebKitStatistics::webViewCount.
- (WebKitAPITest::createWebView): Helper function to create a WebView
- and put it inside a HostWindow.
- (WebKitAPITest::runMessagePump): Helper function to run a message pump
- for a specified number of milliseconds, or until a WM_QUIT message is
- received.
- (WebKitAPITest::CloseWithoutDestroyWindow): Test for
- <http://webkit.org/b/32827>.
- (WebKitAPITest::MainFrameAfterClose): Test for
- <http://webkit.org/b/32868>.
- (WebKitAPITest::NoCloseOrDestroyWindow): Test for
- <http://webkit.org/b/33162>.
-
-2010-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by David Kilzer.
-
- Add support for Git's "diff.mnemonicprefix" config option to WebKitTools
-
- https://bugs.webkit.org/show_bug.cgi?id=32820
-
- * Scripts/VCSUtils.pm:
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
- * Scripts/test-webkitperl: Run gitdiff2svndiff test
- * Scripts/webkitperl/VCSUtils_unittest/gitdiff2svndiff.pl: Added.
- * Scripts/webkitpy/diff_parser.py:
- * Scripts/webkitpy/diff_parser_unittest.py:
-
-2010-01-04 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Divided the Perl unit tests into separate files and put
- them in a separate directory, and renamed test-webkit-perl
- to test-webkitperl.
-
- https://bugs.webkit.org/show_bug.cgi?id=33124
-
- * Scripts/VCSUtils.pm:
- - Renamed generateRunPatchCommand() to generatePatchCommand().
-
- * Scripts/VCSUtils_unittest.pl: Removed.
- - Divided into three files in Scripts/webkitperl/VCSUtils_unittest.
-
- * Scripts/test-webkit-perl: Removed.
- - Renamed to test-webkitperl.
-
- * Scripts/test-webkit-scripts:
- - Updated paths to test-webkitpy and test-webkitperl.
-
- * Scripts/test-webkitperl: Copied from Scripts/test-webkit-perl.
- - Added paths to new test files.
-
- * Scripts/webkitperl: Added.
- * Scripts/webkitperl/VCSUtils_unittest: Added.
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl: Copied from Scripts/VCSUtils_unittest.pl.
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make bugzilla-tool rollout include a bug link in the ChangeLog entry
- https://bugs.webkit.org/show_bug.cgi?id=33146
-
- One more step towards better rollouts.
-
- * Scripts/webkitpy/changelogs.py:
- * Scripts/webkitpy/changelogs_unittest.py:
- * Scripts/webkitpy/steps/preparechangelogforrevert.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Sort the step options
- https://bugs.webkit.org/show_bug.cgi?id=33144
-
- * Scripts/webkitpy/steps/options.py:
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Need support for longer text in per-command help
- https://bugs.webkit.org/show_bug.cgi?id=33143
-
- Add some minimal additional help to land-diff and
- pave the way for adding better help to all commands.
-
- * Scripts/webkitpy/commands/download.py: Add small amount of additional help to land-diff
- * Scripts/webkitpy/multicommandtool.py: support long_help
- * Scripts/webkitpy/multicommandtool_unittest.py: test long_help
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add unit test for MarkBugFixed
- https://bugs.webkit.org/show_bug.cgi?id=33142
-
- MarkBugFixed is way behind in command technology, but it still needs a
- unit test, as the FIXME commands.
-
- Also, remove mark-bug-fixed and create-bug from main help since we have
- more modern commands to replace them.
-
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add missing unit test for CommitMessageForCurrentDiff
- https://bugs.webkit.org/show_bug.cgi?id=33141
-
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove raw_input from queues in favor of user.prompt
- https://bugs.webkit.org/show_bug.cgi?id=33140
-
- This lets up properly mock out the user interaction instead of hacking
- around it with the options.
-
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queuestest.py:
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool should not require users to install mechanize
- https://bugs.webkit.org/show_bug.cgi?id=32635
-
- * Scripts/webkitpy/__init__.py: Add missing declaration for ClientForm (which mechanize requires).
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool should not require users to install mechanize
- https://bugs.webkit.org/show_bug.cgi?id=32635
-
- Use the nifty "autoinstall" module from Daniel Krech:
- http://pypi.python.org/pypi/autoinstall/0.2
- http://code.google.com/p/pyautoinstall/
- It's available under a WebKit-compatible BSD license.
-
- * Scripts/webkitpy/__init__.py:
- - bind "mechanize" to an autoinstall importer which will
- auto-download mechanize if necessary.
- * Scripts/webkitpy/autoinstall.py: Added.
- * Scripts/webkitpy/bugzilla.py: use "mechanize" instead of webkit_mechanize
- * Scripts/webkitpy/statusbot.py: ditto.
- * Scripts/webkitpy/webkit_mechanize.py: Removed.
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Move AbstractSequencedCommand to a more general location
- https://bugs.webkit.org/show_bug.cgi?id=33137
-
- I do what the FIXME tell me to do.
-
- * Scripts/webkitpy/commands/abstractsequencedcommand.py: Added.
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/upload.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename StatusBot to StatusServer
- https://bugs.webkit.org/show_bug.cgi?id=33139
-
- It's not a bot. It's a server.
-
- * Scripts/bugzilla-tool:
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/queueengine.py:
- * Scripts/webkitpy/statusbot.py: Removed.
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] submit-pach should have a -o/--open option to open the bug after submit
- https://bugs.webkit.org/show_bug.cgi?id=33136
-
- Python makes this very easy.
-
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/steps/options.py:
- * Scripts/webkitpy/steps/postdiff.py:
- * Scripts/webkitpy/user.py:
-
-2010-01-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Move steps to a submodule
- https://bugs.webkit.org/show_bug.cgi?id=33135
-
- For great victory. This will probably introduce some regressions
- because our test coverage isn't perfect, but I've tried to be careful.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/buildsteps.py: Removed.
- * Scripts/webkitpy/buildsteps_unittest.py: Removed.
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/steps/__init__.py: Added.
- * Scripts/webkitpy/steps/abstractstep.py: Added.
- * Scripts/webkitpy/steps/applypatch.py: Added.
- * Scripts/webkitpy/steps/applypatchwithlocalcommit.py: Added.
- * Scripts/webkitpy/steps/build.py: Added.
- * Scripts/webkitpy/steps/checkstyle.py: Added.
- * Scripts/webkitpy/steps/cleanworkingdirectory.py: Added.
- * Scripts/webkitpy/steps/cleanworkingdirectorywithlocalcommits.py: Added.
- * Scripts/webkitpy/steps/closebug.py: Added.
- * Scripts/webkitpy/steps/closebugforlanddiff.py: Added.
- * Scripts/webkitpy/steps/closepatch.py: Added.
- * Scripts/webkitpy/steps/commit.py: Added.
- * Scripts/webkitpy/steps/completerollout.py: Added.
- * Scripts/webkitpy/steps/confirmdiff.py: Added.
- * Scripts/webkitpy/steps/createbug.py: Added.
- * Scripts/webkitpy/steps/editchangelog.py: Added.
- * Scripts/webkitpy/steps/ensurebuildersaregreen.py: Added.
- * Scripts/webkitpy/steps/ensurelocalcommitifneeded.py: Added.
- * Scripts/webkitpy/steps/metastep.py: Added.
- * Scripts/webkitpy/steps/obsoletepatches.py: Added.
- * Scripts/webkitpy/steps/options.py: Added.
- * Scripts/webkitpy/steps/postdiff.py: Added.
- * Scripts/webkitpy/steps/preparechangelog.py: Added.
- * Scripts/webkitpy/steps/preparechangelogforrevert.py: Added.
- * Scripts/webkitpy/steps/promptforbugortitle.py: Added.
- * Scripts/webkitpy/steps/revertrevision.py: Added.
- * Scripts/webkitpy/steps/runtests.py: Added.
- * Scripts/webkitpy/steps/steps_unittest.py: Added.
- * Scripts/webkitpy/steps/update.py: Added.
- * Scripts/webkitpy/steps/updatechangelogswithreview_unittests.py: Added.
- * Scripts/webkitpy/steps/updatechangelogswithreviewer.py: Added.
- * Scripts/webkitpy/stepsequence.py:
-
-2010-01-04 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=33097
-
- Cleans up the File menu to better conform to the File menu in Safari
- both in terms of options and keyboard shortcuts. Adds a "Quit" menu
- options to close all open windows. Also, renames the Tools menu to
- Develop.
-
- * QtLauncher/main.cpp:
- (MainWindow::setupUI):
-
-2010-01-04 Daniel Bates <dbates@webkit.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=33039
-
- Unreviewed fix.
-
- * Scripts/webkitpy/credentials.py:
- * Scripts/webkitpy/credentials_unittest.py:
-
-2010-01-04 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=33039
-
- [bzt] Second attempt to fix an issue where bugzilla-tool dies
- when the keychain lookup fails to find an entry for bugs.webkit.org.
-
- * Scripts/webkitpy/credentials.py:
- * Scripts/webkitpy/credentials_unittest.py:
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make Rollout an AbstractSequencedCommmand
- https://bugs.webkit.org/show_bug.cgi?id=33133
-
- As suggested by Adam in:
- https://bugs.webkit.org/show_bug.cgi?id=33131#c2
-
- * Scripts/webkitpy/commands/download.py:
-
-2010-01-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make all commands AbstractDeclarativeCommmands instead of direct Command subclasses
- https://bugs.webkit.org/show_bug.cgi?id=33131
-
- Evenetually we'll probably roll AbstractDeclarativeCommmand directly into Command
- but for now we just deploy it everywhere and don't try to fix up the few valid uses
- of Command.
-
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/multicommandtool.py:
-
-2010-01-03 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. Need to import ScriptError.
-
- * Scripts/webkitpy/buildsteps.py:
-
-2010-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Make it easier to run submit-patch when previous run cancelled
- https://bugs.webkit.org/show_bug.cgi?id=33070
-
- This patch renames create-review to submit-patch (as requested by
- Maciej).
-
- This patch makes it easier to run submit-patch after the user has
- already cancelled a previous run of submit-patch by detecting when we
- already have ChangeLogs and reading the bug number from them (and not
- attempting to recreate them). Aside from performance and the extra
- edit step, this command should not subsume post-dif.
-
- Also, added a --email command line argument so that the output of
- prepare-ChangeLog makes sense when it can't find the user's email
- address.
-
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/buildsteps.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/user.py:
-
-2010-01-03 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename Scripts/modules to Scripts/webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=33128
-
- Just search-replace and svn mv commands.
-
- * Scripts/bugzilla-tool:
- * Scripts/check-webkit-style:
- * Scripts/modules: Removed.
- * Scripts/modules/BeautifulSoup.py: Removed.
- * Scripts/modules/__init__.py: Removed.
- * Scripts/modules/bugzilla.py: Removed.
- * Scripts/modules/bugzilla_unittest.py: Removed.
- * Scripts/modules/buildbot.py: Removed.
- * Scripts/modules/buildbot_unittest.py: Removed.
- * Scripts/modules/buildsteps.py: Removed.
- * Scripts/modules/buildsteps_unittest.py: Removed.
- * Scripts/modules/changelogs.py: Removed.
- * Scripts/modules/changelogs_unittest.py: Removed.
- * Scripts/modules/commands: Removed.
- * Scripts/modules/commands/__init__.py: Removed.
- * Scripts/modules/commands/commandtest.py: Removed.
- * Scripts/modules/commands/download.py: Removed.
- * Scripts/modules/commands/download_unittest.py: Removed.
- * Scripts/modules/commands/early_warning_system.py: Removed.
- * Scripts/modules/commands/early_warning_system_unittest.py: Removed.
- * Scripts/modules/commands/queries.py: Removed.
- * Scripts/modules/commands/queries_unittest.py: Removed.
- * Scripts/modules/commands/queues.py: Removed.
- * Scripts/modules/commands/queues_unittest.py: Removed.
- * Scripts/modules/commands/queuestest.py: Removed.
- * Scripts/modules/commands/upload.py: Removed.
- * Scripts/modules/commands/upload_unittest.py: Removed.
- * Scripts/modules/comments.py: Removed.
- * Scripts/modules/committers.py: Removed.
- * Scripts/modules/committers_unittest.py: Removed.
- * Scripts/modules/cpp_style.py: Removed.
- * Scripts/modules/cpp_style_unittest.py: Removed.
- * Scripts/modules/credentials.py: Removed.
- * Scripts/modules/credentials_unittest.py: Removed.
- * Scripts/modules/diff_parser.py: Removed.
- * Scripts/modules/diff_parser_unittest.py: Removed.
- * Scripts/modules/executive.py: Removed.
- * Scripts/modules/executive_unittest.py: Removed.
- * Scripts/modules/grammar.py: Removed.
- * Scripts/modules/mock.py: Removed.
- * Scripts/modules/mock_bugzillatool.py: Removed.
- * Scripts/modules/multicommandtool.py: Removed.
- * Scripts/modules/multicommandtool_unittest.py: Removed.
- * Scripts/modules/outputcapture.py: Removed.
- * Scripts/modules/patchcollection.py: Removed.
- * Scripts/modules/queueengine.py: Removed.
- * Scripts/modules/queueengine_unittest.py: Removed.
- * Scripts/modules/scm.py: Removed.
- * Scripts/modules/scm_unittest.py: Removed.
- * Scripts/modules/statusbot.py: Removed.
- * Scripts/modules/stepsequence.py: Removed.
- * Scripts/modules/style: Removed.
- * Scripts/modules/style.py: Removed.
- * Scripts/modules/style_unittest.py: Removed.
- * Scripts/modules/text_style.py: Removed.
- * Scripts/modules/text_style_unittest.py: Removed.
- * Scripts/modules/user.py: Removed.
- * Scripts/modules/webkit_logging.py: Removed.
- * Scripts/modules/webkit_logging_unittest.py: Removed.
- * Scripts/modules/webkit_mechanize.py: Removed.
- * Scripts/modules/webkitport.py: Removed.
- * Scripts/modules/webkitport_unittest.py: Removed.
- * Scripts/test-webkit-python: Removed.
- * Scripts/test-webkitpy: Copied from WebKitTools/Scripts/test-webkit-python.
- * Scripts/validate-committer-lists:
- * Scripts/webkitpy: Copied from WebKitTools/Scripts/modules.
- * Scripts/webkitpy/bugzilla.py:
- * Scripts/webkitpy/bugzilla_unittest.py:
- * Scripts/webkitpy/buildbot.py:
- * Scripts/webkitpy/buildbot_unittest.py:
- * Scripts/webkitpy/buildsteps.py:
- * Scripts/webkitpy/buildsteps_unittest.py:
- * Scripts/webkitpy/commands/commandtest.py:
- * Scripts/webkitpy/commands/download.py:
- * Scripts/webkitpy/commands/download_unittest.py:
- * Scripts/webkitpy/commands/early_warning_system.py:
- * Scripts/webkitpy/commands/early_warning_system_unittest.py:
- * Scripts/webkitpy/commands/queries.py:
- * Scripts/webkitpy/commands/queries_unittest.py:
- * Scripts/webkitpy/commands/queues.py:
- * Scripts/webkitpy/commands/queues_unittest.py:
- * Scripts/webkitpy/commands/queuestest.py:
- * Scripts/webkitpy/commands/upload.py:
- * Scripts/webkitpy/commands/upload_unittest.py:
- * Scripts/webkitpy/comments.py:
- * Scripts/webkitpy/credentials.py:
- * Scripts/webkitpy/credentials_unittest.py:
- * Scripts/webkitpy/executive.py:
- * Scripts/webkitpy/executive_unittest.py:
- * Scripts/webkitpy/mock_bugzillatool.py:
- * Scripts/webkitpy/multicommandtool.py:
- * Scripts/webkitpy/multicommandtool_unittest.py:
- * Scripts/webkitpy/queueengine.py:
- * Scripts/webkitpy/queueengine_unittest.py:
- * Scripts/webkitpy/scm.py:
- * Scripts/webkitpy/scm_unittest.py:
- * Scripts/webkitpy/statusbot.py:
- * Scripts/webkitpy/stepsequence.py:
- * Scripts/webkitpy/webkit_logging_unittest.py:
- * Scripts/webkitpy/webkitport_unittest.py:
-
-2010-01-03 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Eric Seidel.
-
- Added script to test both Perl and Python, and renamed
- run-webkit-unittests to test-webkit-python.
-
- https://bugs.webkit.org/show_bug.cgi?id=33045
-
- * Scripts/VCSUtils_unittest.pl:
- - Tweaked so it can be run from outside Scripts directory.
-
- * Scripts/run-webkit-unittests: Removed.
- - Renamed to test-webkit-python.
-
- * Scripts/test-webkit-perl:
- - Tweaked so it can be run from outside Scripts directory.
-
- * Scripts/test-webkit-python: Copied from Scripts/run-webkit-unittests.
-
- * Scripts/test-webkit-scripts: Added.
- - Runs both test-webkit-perl and test-webkit-python.
-
-2010-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue/bugzilla-tool should build both Debug and Release
- https://bugs.webkit.org/show_bug.cgi?id=28450
-
- Add a --build-style command that lets the master process tell the child
- process to build both debug and release. Eventually we want to teach
- the test step to understand this option too, but that's a patch for
- another day.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/webkitport.py:
- * Scripts/modules/webkitport_unittest.py:
-
-2010-01-03 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] EventSender: add support for Enter key events
- https://bugs.webkit.org/show_bug.cgi?id=33064
-
- Unskip 5 tests that are fixed now.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown):
-
-2010-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Add test for previous typo fix
- https://bugs.webkit.org/show_bug.cgi?id=33083
-
- A trivial test for a trivial fix, as requested by Eric.
-
- * Scripts/modules/bugzilla_unittest.py:
-
-2010-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement mac-ews
- https://bugs.webkit.org/show_bug.cgi?id=33072
-
- The mac-ews is slightly different than the other early warning systems
- because we can't run Mac OS X inside a VM. For that reason, we only
- process patches that were uploaded by committers. This isn't as much
- coverage as the other EWS bots, but it's better than nothing.
-
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/early_warning_system_unittest.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/queuestest.py:
- * Scripts/modules/mock_bugzillatool.py:
-
-2010-01-03 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Refactored svn-apply and svn-unapply to use a common "patch"
- command method, and added unit tests for this new method.
-
- https://bugs.webkit.org/show_bug.cgi?id=33098
-
- * Scripts/VCSUtils.pm:
- - Added generateRunPatchCommand().
- - Added runPatchCommand().
- - Added exitStatus() from webkitdirs.pm to address FIXME.
-
- * Scripts/VCSUtils_unittest.pl:
- - Added 10 unit tests for generateRunPatchCommand().
- - Added 4 unit tests for runPatchCommand().
- - Added callSilently() method.
-
- * Scripts/svn-apply:
- - Refactored applyPatch().
- - Removed $pathScriptWasRunFrom global variable.
- - Addressed issue where "--force" option was getting added twice.
-
- * Scripts/svn-unapply:
- - Refactored applyPatch().
- - Removed $pathScriptWasRunFrom global variable.
- - Added support for --force option.
- - Enhanced to return meaningful exit status.
-
- * Scripts/webkitdirs.pm:
- - Moved exitStatus() implementation to VCSUtils.pm.
-
-2009-12-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Implement build-and-test
- https://bugs.webkit.org/show_bug.cgi?id=33073
-
- Some of the early warning system bots want to use build-and-test so
- they can cover LayoutTests in addition to just compilation.
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/download_unittest.py:
-
-2009-12-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Show mac-ews status on QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=33076
-
- Also make error status purple.
-
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/statusbubble.html:
-
-2009-12-31 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- [bzt] REGRESSION: Bugzila is a typo
- https://bugs.webkit.org/show_bug.cgi?id=33074
-
- Eric should test his code before landing! :)
-
- * Scripts/modules/bugzilla.py:
-
-2009-12-31 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix the unit tests!
-
- * Scripts/run-webkit-unittests:
-
-2009-12-30 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Alter a couple of default settings in the test app.
-
- https://bugs.webkit.org/show_bug.cgi?id=32956
-
- * wx/browser/browser.cpp:
- (MyApp::OnInit):
-
-2009-12-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- logging.py should be renamed to webkit_logging.py and eventually die
- https://bugs.webkit.org/show_bug.cgi?id=33058
-
- Change all imports of "logging" to webkit_logging,
- except the ones which came from Google's cpp_lint.py and diff_parser.py
- which clearly are assuming python's logging.py.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/buildbot.py:
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/queries.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/credentials.py:
- * Scripts/modules/executive.py:
- * Scripts/modules/multicommandtool.py:
- * Scripts/modules/queueengine.py:
- * Scripts/modules/scm.py:
- * Scripts/modules/statusbot.py:
- * Scripts/modules/stepsequence.py:
- * Scripts/modules/webkit_logging.py: Renamed from WebKitTools/Scripts/modules/logging.py.
- * Scripts/modules/webkit_logging_unittest.py: Renamed from WebKitTools/Scripts/modules/logging_unittest.py.
-
-2009-12-30 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] layoutTestController.pathToLocalResource() should return a path, not an URL
- https://bugs.webkit.org/show_bug.cgi?id=33051
-
- Moreover, its primary function is to normalize the path in regard of platform
- specific directory separators. Therefore, it can simply make use of the
- QDir::toNativeSeparators function.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2009-12-30 David D. Kilzer <ddkilzer@webkit.org>
-
- Fix executable bits for r52646
-
- * Scripts/VCSUtils_unittest.pl: Added property svn:executable.
- * Scripts/test-webkit-perl: Ditto.
-
-2009-12-29 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Fixed a bug in fixChangeLogPatch, made it work correctly in
- more circumstances, and added unit tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=32919
-
- * Scripts/VCSUtils.pm:
- Rewrote fixChangeLogPatch.
-
- * Scripts/VCSUtils_unittest.pl: Added.
- Added 7 unit tests for fixChangeLogPatch.
-
- * Scripts/test-webkit-perl: Added.
- Added test harness for unit tests of Perl code.
-
-2009-12-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split out BugzillaQueries class from Bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=33042
-
- * Scripts/modules/bugzilla.py:
- - Split out BugzillaQueries from Bugzilla.
- - Try to isolate self.bugzilla usage into helper functions whenever possible.
- - Add a bunch of FIXMEs.
- - Rename fetch_bug_ids_from_needs_commit_list to fetch_bug_ids_from_pending_commit_list
- * Scripts/modules/bugzilla_unittest.py:
- - Create a new BugzillaQueriesTest testcase and move logic there.
- * Scripts/modules/buildsteps_unittest.py:
- - Use Bug 75 instead of 1 since bug 1 doesn't actually exist.
- * Scripts/modules/commands/queries.py:
- - Update to use bugzilla.queries
- * Scripts/modules/commands/queues.py:
- - Ditto.
- * Scripts/modules/commands/upload.py:
- - Ditto.
- * Scripts/modules/mock_bugzillatool.py:
- - Add a MockBugzillaQueries.
- - Make patches and bugs global privates.
- - Let _id_to_object_dictionary take a variable argument list instead of an array.
-
-2009-12-29 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=33041
-
- Speed up the test method test_read_credentials_with_SVN by not actually
- creating an SVN repository to test against (by default). Instead, it is
- sufficient to create a temporary directory that does not contain a Git
- repository.
-
- Also, renamed method test_read_credentials_with_SVN to
- test_read_credentials_without_git_repo, to better reflect what it is
- testing.
-
- * Scripts/modules/credentials_unittest.py:
-
-2009-12-29 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=33039
-
- [bzt] Fixes an issue where bugzilla-tool dies when the keychain lookup
- fails to find an entry for bugs.webkit.org.
-
- Under Mac OS X, bugzilla-tool tries to query the keychain and Security
- framework (via /usr/sbin/security) for an internet-password entry for
- bugs.webkit.org so that it can use it to login to bugs.webkit.org.
- However, if no such entry exists then bugzilla-tool dies with an error.
-
- * Scripts/modules/credentials.py: Modified method _parse_security_tool_output to return
- [None, None] if /usr/sbin/security cannot find keychain entry for bugs.webkit.org.
- * Scripts/modules/credentials_unittest.py: Added method test_security_output_parse_entry_not_found.
-
-2009-12-29 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Remove unused BugzillaException.
-
- * Scripts/modules/bugzilla.py:
-
-2009-12-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Need a script to assign bugs with r+ patches to committers for landing
- https://bugs.webkit.org/show_bug.cgi?id=33009
-
- This is just one more small tool to help in the fight against our
- ever-growing list of to-be-committed patches.
-
- * Scripts/modules/bugzilla.py:
- - Rename assign_to_email to assigned_to_email (typo).
- - Add assigned_to_email() method on Bug.
- - Add reassign_bug method.
- - Add Bugzilla.unassigned_email, eventually should move to some webkit_config.py module.
- * Scripts/modules/bugzilla_unittest.py:
- - Update test after assigned_to_email rename.
- * Scripts/modules/commands/commandtest.py:
- - Call bind_to_tool to that self.tool works in Command testing.
- * Scripts/modules/commands/download.py:
- - Move AbstractDeclarativeCommmand multicommandtool.py, it should be part of Command.
- * Scripts/modules/commands/queries_unittest.py:
- - One of the test patches is now posted by "eric@webkit.org" which is a committer.
- - Eventually we'll mock out CommitterList and be able to better control what's a committer and what's not.
- * Scripts/modules/commands/upload.py:
- - Add new assign-to-committer command.
- * Scripts/modules/commands/upload_unittest.py:
- - Add basic assign-to-committer test.
- * Scripts/modules/committers.py:
- - Add bugzilla_email() accessor.
- * Scripts/modules/committers_unittest.py:
- - Test our assumption that bugzilla_email is the first email.
- * Scripts/modules/mock_bugzillatool.py:
- - Add _id_to_object_dictionary for generating bug_cache from list of bugs.
- - Remove unused fetch_attachments_from_bug.
- - Add fetch_bug support and a bug_cache.
- * Scripts/modules/multicommandtool.py:
- - Move AbstractDeclarativeCommmand here from download.py
-
-2009-12-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Don't crash if user types a number during PromptForBugOrTitleStep
- https://bugs.webkit.org/show_bug.cgi?id=33038
-
- Simple fix with test.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/buildsteps_unittest.py:
-
-2009-12-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] post-diff requires reading to the end
- https://bugs.webkit.org/show_bug.cgi?id=33036
-
- Catch the IOError caused by not reading to the end of the diff. We
- don't have a good way to test this currently.
-
- * Scripts/modules/user.py:
-
-2009-12-29 Chang Shu <Chang.Shu@nokia.com>
-
- Reviewed by Adam Barth.
-
- [Qt] Move logic that handles Qt headers before primary headers
- so that Qt headers won't be treated as primary headers by mistake.
- https://bugs.webkit.org/show_bug.cgi?id=32991
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add the start of a Bug object for bugzilla.py
- https://bugs.webkit.org/show_bug.cgi?id=32995
-
- This allowed us to get rid of some duplicated "is_obsolete" checks.
-
- * Scripts/modules/bugzilla.py:
- - Add a new Bug class, and move patches/unreviewed_patches filtering logic there.
- - Add _fetch_bug_page for possible future mocking.
- (I did not try to test fetch_*_from_bug now due to difficulties with our current validate_reviewer logic.)
- - Rename fetch_bug to fetch_bug_dictionary and add a new fetch_bug which returns a Bug object.
- - Use fetch_bug and attachments(), patches(), etc. instead of custom fetch_*_from_bug methods.
- - Reduce code in fetch_patches_from_pending_commit_list and fetch_patches_from_review_queue
- using list comprehensions. Use a sum(list, []) trick to flatten a list of lists into a single list.
- * Scripts/modules/bugzilla_unittest.py:
- - Remove an unneeded unicode string marker.
- * Scripts/modules/buildsteps.py:
- - define __all__ to include just the BuildSteps
- * Scripts/modules/commands/download.py:
- - import * now that we have an __all__ defined.
- * Scripts/modules/commands/upload.py:
- - Use fetch_bug_dictionary instead of fetch_bug.
-
-2009-12-29 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- https://bugs.webkit.org/show_bug.cgi?id=32925
-
- Adds an Open File dialog to make it convenient to open a file
- to view in the browser.
-
- Currently a person must either specify the path to a file as a
- command-line argument or type a file URL. Instead, we should
- have a file dialog to allow a person to open a file without
- memorizing its path.
-
- * QtLauncher/main.cpp:
- (MainWindow::MainWindow): Changed urlEdit->setText(qurl.toEncoded())
- to urlEdit->setText(qurl.toString()).
- (MainWindow::openFile): Added.
- (MainWindow::changeLocation): Moved code to load URL into method
- MainWindow::loadURL.
- (MainWindow::loadURL): Added.
- (MainWindow::setupUI): Added menu item Open File.
-
-2009-12-29 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Holger Freyther.
-
- [GTK] fails fast/harness/use-page-cache.html
- https://bugs.webkit.org/show_bug.cgi?id=33013
-
- Make sure settings are forwarded to child WebViews.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView):
-
-2009-12-29 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=32778
-
- Changes $diffPercentage to be a number to resolve Perl
- warning about comparing a string to a number.
-
- * Scripts/run-webkit-tests:
-
-2009-12-29 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] DRT: Frame loader callbacks differ from the Mac port
- https://bugs.webkit.org/show_bug.cgi?id=32989
-
- Remove messages from the callbacks that should not dump them to match
- the expected results for the http/loading tests.
-
- Unskip some http/loading tests which succeed now.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2009-12-29 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Eric Seidel.
-
- [Qt] fix fast/dom/Window/window-onFocus.html
-
- Add support for layouttestcontroller.windowIsKey to Qt DRT and fix issue where
- window.onblur was getting dispatched twice from QtWebKit.
-
- https://bugs.webkit.org/show_bug.cgi?id=32990
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::switchFocus):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setWindowIsKey):
- (LayoutTestController::setMainFrameIsFirstResponder):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-12-28 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- Extended EventSender.keyDown method to take another (3rd) argument
- for indicating the keyLocation to make numeric pad key events testable.
- Expected values for the argument is one of the KeyLocationCode
- specified in DOM Level 3
- (http://www.w3.org/TR/DOM-Level-3-Events/#events-keyboardevents).
- https://bugs.webkit.org/show_bug.cgi?id=28247
-
- Test: fast/events/keydown-numpad-keys.html
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController keyDown:withModifiers:withLocation:]):
-
-2009-12-28 Ariya Hidayat <ariya.hidayat@gmail.com>
-
- Unreviewed, update my email address.
-
- * Scripts/modules/committers.py:
-
-2009-12-28 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Adam Barth.
-
- [Qt] Fix build break for Qt 4.4
- https://bugs.webkit.org/show_bug.cgi?id=30327
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp: Include QLocale
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Ditto.
- * QtLauncher/main.cpp:
- (MainWindow::MainWindow): Qt::WA_TranslucentBackground was
- introduced in Qt version 4.5
-
-2009-12-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Add an edit-changelog command
- https://bugs.webkit.org/show_bug.cgi?id=32986
-
- This command makes it easier to edit ChangeLogs. It's similar to
- prepare-ChangeLog -o, except it works with already existing ChangeLogs.
-
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
-
-2009-12-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Create an ASAD command for uploading a patch
- https://bugs.webkit.org/show_bug.cgi?id=32979
-
- The create-review command goes through the whole process of preparing a
- code review, including creating a bug, editing the ChangeLogs, and
- uploading the patch. It is indeed the All Sing, All Dance upload
- command.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/modules/user.py:
-
-2009-12-28 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix (with test!).
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/bugzilla_unittest.py:
-
-2009-12-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add more awesome bug-parsing logic to bugzilla.py in preparation for assign-to-committer command
- https://bugs.webkit.org/show_bug.cgi?id=32980
-
- * Scripts/modules/bugzilla.py:
- - Add a new _parse_bug_page function and use it in fetch_attachments_from_bug
- - Replace fetch_title_from_bug with a new fetch_bug call instead.
- - Use list comprehensions where possible to reduce code duplication.
- * Scripts/modules/bugzilla_unittest.py:
- - Add a minimal bug parsing test.
- - Share code between bug parsing and attachment parsing tests with _assert_dictionaries_equal
- * Scripts/modules/commands/upload.py:
- - Use fetch_bug(bug_id)["title"] instead of fetch_title_from_bug
-
-2009-12-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Status bubble shouldn't be transparent for bots that haven't run yet
- https://bugs.webkit.org/show_bug.cgi?id=32977
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2009-12-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [QueueStatusServer] Run gc cron job less often
- https://bugs.webkit.org/show_bug.cgi?id=32958
-
- Now that we've cleaned out the backlog of idle messages, we don't need
- to run the gc job every half hour. We could also stop logging the idle
- messages, but this seems easier for the time being.
-
- * QueueStatusServer/cron.yaml:
-
-2009-12-27 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=32896
-
- Fixes an issue where bugzilla-tool tries to read the username and password from
- Git regardless of whether Git is installed. In particular, if Git is not
- installed then bugzilla-tool dies (with a trace) when it attempts to query Git
- for the authentication credentials to log into bugs.webkit.org.
-
- Moreover, modifies Executive.run_command to catch and pass OSError exceptions to
- the specified error handler. For instance, the specified error handler will now
- be called when the command does not exist (i.e. OSError errno 2).
-
- * Scripts/modules/credentials.py: Added check for Git.
- * Scripts/modules/credentials_unittest.py: Added test method
- test_read_credentials_with_SVN.
- * Scripts/modules/executive.py: Modified method run_command to catch
- OSError exceptions (i.e [Errno 2] No such file or directory) and call
- the specified error handler.
- * Scripts/modules/executive_unittest.py: Added.
- * Scripts/run-webkit-unittests: Added import executive_unittest.py.
-
-2009-12-27 Daniel Bates <dbates@webkit.org>
-
- Unreviewed. Added missing file style_unittest.py that wasn't committed
- in change set 52541 (http://trac.webkit.org/changeset/52541) as part of
- the patch for bug #32592.
-
- * Scripts/modules/style_unittest.py: Added.
-
-2009-12-27 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=32964
-
- [bzt] Updated the unit test based on the change made in bug #32951.
-
- The change made in bug #32951 added the command-line argument:
- --makeargs="-j8" to the build-webkit command. However, the associated
- unit test was not updated.
-
- * Scripts/modules/webkitport_unittest.py:
-
-2009-12-27 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Darin Adler.
-
- check-webkit-style should not mark moc files inclusion as errors
- https://bugs.webkit.org/show_bug.cgi?id=32669
-
- Add a new header type for moc files, and skip them when checking the order of header files.
-
- * Scripts/modules/cpp_style.py:
-
-2009-12-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Make the qt build go fast
- https://bugs.webkit.org/show_bug.cgi?id=32951
-
- Make use of multiple cores, if available.
-
- * Scripts/modules/webkitport.py:
-
-2009-12-25 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=32682
-
- Fixes an issue where checkFrameworks always dies with an error under Windows
- since the clause "unless (-x $path)" is always satisfied because files under
- Windows do not have an explict executable bit.
-
- * Scripts/webkitdirs.pm:
-
-2009-12-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool should accept global options anywhere
- https://bugs.webkit.org/show_bug.cgi?id=26912
-
- * Scripts/bugzilla-tool:
- - Use the new global_options class property.
- - Add a handle_global_options callback to avoid needing callbacks for each global option.
- * Scripts/modules/multicommandtool.py:
- - Make the code use one combined option parser.
- This allows us to accept global options anywhere and
- individual command options before commands.
- - Add a handle_global_options callback to avoid needing callbacks for each global option.
- - Make the Command hold the option parser, but allow the tool to override it.
- - The default option parser is used for help printing and when Commands are run stand alone,
- but are otherwise not used.
- - Add Command.main to codify the idea that Commands should support being run stand-alone.
- - Change _split_args to _split_command_name_from_args now that args are unified.
- * Scripts/modules/multicommandtool_unittest.py:
- - Test that "tool" and "tool help" show the same help.
- - Test that args are accepted before commands
-
-2009-12-20 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Levin.
-
- Moved some sections of code in preparation to refactor
- check-webkit-style's argument parser to avoid setting
- global variables.
-
- https://bugs.webkit.org/show_bug.cgi?id=32592
-
- * Scripts/check-webkit-style:
- - Moved _USAGE string to style.py.
- - Addressed FIXME by eliminating dependencies on cpp_style.py.
-
- * Scripts/modules/cpp_style.py:
- - Moved default arguments and style categories to style.py.
- - Moved exit_with_usage(), exit_with_categories(), and
- parse_arguments() to style.py.
- - Removed references in _CppStyleState to the global
- variables now in style.py.
-
- * Scripts/modules/cpp_style_unittest.py:
- - Moved parse_arguments() unit tests to style_unittest.py.
-
- * Scripts/modules/style.py:
- - Added _USAGE string from check-webkit-style.
- - Added default arguments and style categories from cpp_style.py.
- - Added exit_with_usage(), exit_with_categories(), and
- parse_arguments() from cpp_sstyle.py.
-
- * Scripts/modules/style_unittest.py: Added.
- - Added parse_arguments() unit tests from cpp_style_unittest.py.
-
- * Scripts/run-webkit-unittests:
- - Added unit tests from style_unittest.py.
-
-2009-12-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should mention bug 30084 when rejecting patches until it can be fixed
- https://bugs.webkit.org/show_bug.cgi?id=32911
-
- * Scripts/modules/bugzilla.py: Make the message even more fancy.
- * Scripts/modules/bugzilla_unittest.py: Test our new fancy message.
-
-2009-12-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Not reviewed, adding myself to the reviewers list.
-
- * Scripts/modules/committers.py:
-
-2009-12-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Create a prepare-diff command that creates a bug and a ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=32895
-
- The workflow Maciej and I discussed is as follows:
-
- 1) Write code.
- 2) bugzilla-tool prepare-diff
- 3) Edit ChangeLogs
- 4) bugzilla-tool post-diff
-
- We might want to experimenting with combining 2-4 into a single
- command, but that might be stressful to edit the ChangeLogs modally.
-
- Removed submit-patch since it has the modal ChangeLog editing but none
- oof the bug creating fun.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
-
-2009-12-23 Gabor Loki <loki@webkit.org>
-
- Unreviewed; added myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-12-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- [bzt] Don't call create-patch twice during post-diff
- https://bugs.webkit.org/show_bug.cgi?id=32893
-
- If we call create-patch to get the bug number, cache the diff in the
- state so we don't need to call it again.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/upload.py:
-
-2009-12-22 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=32680
-
- Fixes an issue in builtDylibPathForName so that it returns the correct
- path to the built QtWebKit library on the Qt Windows port. Currently,
- it returns the path to the file named QtWebKit.dll but this file does
- not exist on the Qt Windows build. Instead, the file is named
- QtWebKit4.dll.
-
- * Scripts/webkitdirs.pm:
-
-2009-12-22 Marc-Antoine Ruel <maruel@chromium.org>
-
- Reviewed by Adam Roben.
-
- Remove the only dependency on perl-libwin32 in cygwin
-
- * Scripts/num-cpus:
-
-2009-12-22 Darin Adler <darin@apple.com>
-
- * pywebsocket/mod_pywebsocket: Added property svn:ignore to ignore
- generated ".pyc" files.
-
-2009-12-22 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Turn off datagrid by default, at least for all platforms Apple ships.
- The datagrid implementation isn't ready for general web use yet.
-
- * Scripts/build-webkit: Turn off datagrid by default.
-
-2009-12-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- validate-committer-lists fails when run from an SVN checkout
- https://bugs.webkit.org/show_bug.cgi?id=31974
-
- * Scripts/validate-committer-lists:
- - Make it print a warning message instead of throwing
- an exception when running from an SVN checkout.
-
-2009-12-22 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Adam Barth.
-
- check-webkit-style should not warn about NULL usage in g_object_{get,set}
- https://bugs.webkit.org/show_bug.cgi?id=32858
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-22 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Holger Freyther.
-
- Moved QtLauncher from WebKit/qt.
-
- * QtLauncher: Copied from WebKit/qt/QtLauncher.
- * QtLauncher/QtLauncher.pro:
-
-2009-12-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Automate the process of calling prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=32816
-
- This patch automates the process of creating a bug and patch and
- uploading it to bugzilla. The first cut just calls
- prepare-ChangeLog.
-
- This patch required some refactoring of upload.py to the Step
- model, but that's worth doing anyway.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
- * Scripts/modules/mock_bugzillatool.py:
-
-2009-12-21 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Did a rename, so checking in the
- version of the script I used.
-
-2009-12-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Update status-bubble to show all the queues
- https://bugs.webkit.org/show_bug.cgi?id=32838
-
- Also, move statusbubble over to use memcache.
-
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/templates/statusbubble.html:
-
-2009-12-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Delete the boring "Empty queue" status messages in QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=32818
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/cron.yaml:
- * QueueStatusServer/handlers/gc.py:
- * QueueStatusServer/main.py:
-
-2009-12-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Exception on queue status server
- https://bugs.webkit.org/show_bug.cgi?id=32812
-
- Turns out we need to pass the id to the filter.
-
- * QueueStatusServer/filters/webkit_extras.py:
- * QueueStatusServer/templates/patch.html:
- * QueueStatusServer/templates/recentstatus.html:
-
-2009-12-20 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by Eric Seidel.
-
- Created "style" folder for code supporting check-webkit-style.
-
- * Scripts/modules/style: Added.
-
-2009-12-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION: error when running commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=32806
-
- Fix typo and add test!
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/bugzilla_unittest.py:
-
-2009-12-20 Adam Barth <abarth@webkit.org>
-
- [bzt] Optimize status updates for new dashboard
- https://bugs.webkit.org/show_bug.cgi?id=32797
-
- This patch makes the queues slightly more chatty with the web service.
- Also, this patch introduces some testing for the queues!
-
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/early_warning_system_unittest.py: Added.
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/queues_unittest.py:
- * Scripts/modules/commands/queuestest.py: Added.
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/modules/patchcollection.py:
- * Scripts/modules/queueengine.py:
- * Scripts/run-webkit-unittests:
-
-2009-12-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Prepare QueueStatusServer for new status messages
- https://bugs.webkit.org/show_bug.cgi?id=32805
-
- * QueueStatusServer/handlers/recentstatus.py:
- * QueueStatusServer/index.html: Removed.
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/model/queues.py: Added.
- * QueueStatusServer/templates/recentstatus.html: Added.
-
-2009-12-20 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Adam Barth.
-
- [check-webkit-style] static_cast is not misnamed!
- https://bugs.webkit.org/show_bug.cgi?id=32796
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-20 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Failing test platform/gtk/editing/pasteboard/middle-button-paste.html
- https://bugs.webkit.org/show_bug.cgi?id=32788
-
- Do not increase the click count if we are using a different button.
-
- * DumpRenderTree/gtk/EventSender.cpp:
-
-2009-12-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [QueueStatusServer] Add a per-patch details page
- https://bugs.webkit.org/show_bug.cgi?id=32784
-
- This is a first cut at a per-patch details page. I'm sure we'll have
- to iterate.
-
- * QueueStatusServer/filters/webkit_extras.py:
- * QueueStatusServer/handlers/patch.py: Added.
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/stylesheets/dashboard.css:
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/patch.html: Added.
-
-2009-12-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Use memcache to make dashboard to fast
- https://bugs.webkit.org/show_bug.cgi?id=32780
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/handlers/dashboard.py:
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/model/attachment.py: Added.
-
-2009-12-19 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Provide an example implementation for printing under Windows.
- http://bugs.webkit.org/show_bug.cgi?id=32504.`
-
- * WinLauncher/PrintWebUIDelegate.cpp: Added.
- (PrintWebUIDelegate::QueryInterface):
- (PrintWebUIDelegate::AddRef):
- (PrintWebUIDelegate::Release):
- (PrintWebUIDelegate::webViewPrintingMarginRect):
- * WinLauncher/PrintWebUIDelegate.h: Added.
- (PrintWebUIDelegate::PrintWebUIDelegate):
- (PrintWebUIDelegate::createWebViewWithRequest):
- (PrintWebUIDelegate::webViewShow):
- (PrintWebUIDelegate::webViewClose):
- (PrintWebUIDelegate::webViewFocus):
- (PrintWebUIDelegate::webViewUnfocus):
- (PrintWebUIDelegate::webViewFirstResponder):
- (PrintWebUIDelegate::makeFirstResponder):
- (PrintWebUIDelegate::setStatusText):
- (PrintWebUIDelegate::webViewStatusText):
- (PrintWebUIDelegate::webViewAreToolbarsVisible):
- (PrintWebUIDelegate::setToolbarsVisible):
- (PrintWebUIDelegate::webViewIsStatusBarVisible):
- (PrintWebUIDelegate::setStatusBarVisible):
- (PrintWebUIDelegate::webViewIsResizable):
- (PrintWebUIDelegate::setResizable):
- (PrintWebUIDelegate::setFrame):
- (PrintWebUIDelegate::webViewFrame):
- (PrintWebUIDelegate::setContentRect):
- (PrintWebUIDelegate::webViewContentRect):
- (PrintWebUIDelegate::runJavaScriptAlertPanelWithMessage):
- (PrintWebUIDelegate::runJavaScriptConfirmPanelWithMessage):
- (PrintWebUIDelegate::runJavaScriptTextInputPanelWithPrompt):
- (PrintWebUIDelegate::runBeforeUnloadConfirmPanelWithMessage):
- (PrintWebUIDelegate::runOpenPanelForFileButtonWithResultListener):
- (PrintWebUIDelegate::mouseDidMoveOverElement):
- (PrintWebUIDelegate::contextMenuItemsForElement):
- (PrintWebUIDelegate::validateUserInterfaceItem):
- (PrintWebUIDelegate::shouldPerformAction):
- (PrintWebUIDelegate::dragDestinationActionMaskForDraggingInfo):
- (PrintWebUIDelegate::willPerformDragDestinationAction):
- (PrintWebUIDelegate::dragSourceActionMaskForPoint):
- (PrintWebUIDelegate::willPerformDragSourceAction):
- (PrintWebUIDelegate::contextMenuItemSelected):
- (PrintWebUIDelegate::hasCustomMenuImplementation):
- (PrintWebUIDelegate::trackCustomPopupMenu):
- (PrintWebUIDelegate::measureCustomMenuItem):
- (PrintWebUIDelegate::drawCustomMenuItem):
- (PrintWebUIDelegate::addCustomMenuDrawingData):
- (PrintWebUIDelegate::cleanUpCustomMenuDrawingData):
- (PrintWebUIDelegate::canTakeFocus):
- (PrintWebUIDelegate::takeFocus):
- (PrintWebUIDelegate::registerUndoWithTarget):
- (PrintWebUIDelegate::removeAllActionsWithTarget):
- (PrintWebUIDelegate::setActionTitle):
- (PrintWebUIDelegate::undo):
- (PrintWebUIDelegate::redo):
- (PrintWebUIDelegate::canUndo):
- (PrintWebUIDelegate::canRedo):
- (PrintWebUIDelegate::printFrame):
- (PrintWebUIDelegate::ftpDirectoryTemplatePath):
- (PrintWebUIDelegate::webViewHeaderHeight):
- (PrintWebUIDelegate::webViewFooterHeight):
- (PrintWebUIDelegate::drawHeaderInRect):
- (PrintWebUIDelegate::drawFooterInRect):
- (PrintWebUIDelegate::canRunModal):
- (PrintWebUIDelegate::createModalDialog):
- (PrintWebUIDelegate::runModal):
- (PrintWebUIDelegate::isMenuBarVisible):
- (PrintWebUIDelegate::setMenuBarVisible):
- (PrintWebUIDelegate::runDatabaseSizeLimitPrompt):
- (PrintWebUIDelegate::paintCustomScrollbar):
- (PrintWebUIDelegate::paintCustomScrollCorner):
- * WinLauncher/WinLauncher.cpp: Add new UI delegate for print support.
- (WinLauncherWebHost::updateAddressBar): check-webkit-style fixes.
- (WinLauncherWebHost::QueryInterface): check-webkit-style fixes.
- (WinLauncherWebHost::AddRef): check-webkit-style fixes.
- (WinLauncherWebHost::Release): check-webkit-style fixes.
- (resizeSubViews): check-webkit-style fixes.
- (_tWinMain): check-webkit-style fixes.
- (MyRegisterClass): check-webkit-style fixes.
- (InitInstance): check-webkit-style fixes.
- (AbortProc): New print support function.
- (getPrinterDC): New print support function.
- (initDocStruct): New print support function.
- (PrintView): New printing implementation.
- (WndProc): Add support for printing.
- (MyEditProc): check-webkit-style fixes.
- (About): check-webkit-style fixes.
- (loadURL): check-webkit-style fixes.
- * WinLauncher/WinLauncher.h:
- (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.rc: Add menu entry for printing.
- * WinLauncher/WinLauncher.vcproj: Add new files.
- * WinLauncher/resource.h: Add menu entry for printing.
-
-2009-12-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Tweak the CSS to make the dashboard prettier.
-
- * QueueStatusServer/stylesheets/dashboard.css:
- * QueueStatusServer/templates/dashboard.html:
-
-2009-12-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- QueueStatusServer needs a human readable dashboard
- https://bugs.webkit.org/show_bug.cgi?id=32769
-
- Here is a first cut at the dashboard. There's a lot left to do.
-
- * QueueStatusServer/filters/webkit_extras.py:
- * QueueStatusServer/handlers/dashboard.py: Added.
- * QueueStatusServer/handlers/patchstatus.py:
- * QueueStatusServer/handlers/recentstatus.py:
- * QueueStatusServer/handlers/showresults.py:
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
- * QueueStatusServer/model/queuestatus.py: Renamed from WebKitTools/QueueStatusServer/model.py.
- * QueueStatusServer/stylesheets/dashboard.css: Added.
- * QueueStatusServer/templates/dashboard.html: Added.
- * QueueStatusServer/templates/statusbubble.html: Renamed from WebKitTools/QueueStatusServer/status_bubble.html.
- * QueueStatusServer/templates/updatestatus.html: Renamed from WebKitTools/QueueStatusServer/update_status.html.
-
-2009-12-19 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Timothy Hatcher.
-
- https://bugs.webkit.org/show_bug.cgi?id=32462
-
- Added --inspector-frontend flag to build-webkit to copy any changes
- to the inspector front-end files to the built WebCore framework. This
- will make inspector development more consistent with the rest of
- WebKit development.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2009-12-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed fixes for me being terrible at python.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/run-webkit-unittests:
-
-2009-12-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Split QueueStatus server into modules
- https://bugs.webkit.org/show_bug.cgi?id=32768
-
- One monolithic file is no good.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/handlers/__init__.py: Copied from WebKitTools/QueueStatusServer/filters/__init__.py.
- * QueueStatusServer/handlers/patchstatus.py: Added.
- * QueueStatusServer/handlers/recentstatus.py: Added.
- * QueueStatusServer/handlers/showresults.py: Added.
- * QueueStatusServer/handlers/statusbubble.py: Added.
- * QueueStatusServer/handlers/updatestatus.py: Added.
- * QueueStatusServer/main.py: Added.
- * QueueStatusServer/model.py: Added.
- * QueueStatusServer/queue_status.py: Removed.
-
-2009-12-18 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Renamed WorkQueue to QueueEngine. WorkQueue is not a queue.
-
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/queueengine.py: Added.
- * Scripts/modules/queueengine_unittest.py: Added.
- * Scripts/modules/stepsequence.py:
- * Scripts/modules/workqueue.py: Removed.
- * Scripts/modules/workqueue_unittest.py: Removed.
-
-2009-12-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add watches for EWS
- https://bugs.webkit.org/show_bug.cgi?id=32767
-
- dglazkov wanted to be added.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/queues.py:
-
-2009-12-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- move bugzilla.py off of urllib2
- https://bugs.webkit.org/show_bug.cgi?id=32729
-
- * Scripts/modules/bugzilla.py: use mechanize for all url fetching.
-
-2009-12-18 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Rubber-stamped by Xan Lopez.
-
- [GTK] New events (pageshow and pagehide) tests failing
- https://bugs.webkit.org/show_bug.cgi?id=28823
-
- Original patch by Jan Michael Alonzo.
-
- Disable page cache for tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (copyWebSettingKey):
- (LayoutTestController::overridePreference):
-
-2009-12-18 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- Check one space before end of line comments.
- https://bugs.webkit.org/show_bug.cgi?id=32597
-
- Fix to check one space before end of line comments in whitespace and build/header_guard.
- Also fix build/header_guard to use WebKit header guard defines.
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-17 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add BUILDING_ON_SNOW_LEOPARD #define.
-
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
-
-2009-12-17 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Update pywebsocket to 0.4.5 and make handshake checking stricter
- https://bugs.webkit.org/show_bug.cgi?id=32249
-
- * Scripts/run-webkit-tests:
- * pywebsocket/mod_pywebsocket/handshake.py:
- * pywebsocket/mod_pywebsocket/memorizingfile.py: Added.
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_handshake.py:
- * pywebsocket/test/test_memorizingfile.py: Added.
-
-2009-12-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Command.show_in_main_help should default to False
- https://bugs.webkit.org/show_bug.cgi?id=32686
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/queries.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/multicommandtool.py:
-
-2009-12-17 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Added the key WebKitEnableCaretBrowsing to the
- layoutTestController.overridePreference in order to activate caret
- browsing.
- https://bugs.webkit.org/show_bug.cgi?id=32612
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Added the reset value of
- the setting.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Inserted the new
- key in the keytable.
-
-2009-12-17 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by David Kilzer.
-
- AX: DRT needs to support URL for accessibility
- https://bugs.webkit.org/show_bug.cgi?id=32666
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getURLCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::url):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::url):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::url):
-
-2009-12-17 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed; added myself to committers
-
- * Scripts/modules/committers.py:
-
-2009-12-17 Benjamin Otte <otte@gnome.org>
-
- Unreviewed; added myself to committers
-
- * Scripts/modules/committers.py:
-
-2009-12-17 Adam Barth <abarth@webkit.org>
-
- Rubber stamp by Seidel.
-
- Clean up exception handling in WorkQueue. Basically, a bunch of the
- delegate messages can throw exceptions because of network errors. We
- want the queues to keep on ticking instead of erroring out. That means
- we want to catch generic exceptions and continue looping.
-
- Also, cleaned up the exception handling in the EWS to properly log
- failures.
-
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/workqueue.py:
-
-2009-12-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Make UpdateStep quiet
- https://bugs.webkit.org/show_bug.cgi?id=32599
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/buildsteps_unittest.py:
-
-2009-12-16 Evan Martin <evan@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add Gtk to the early warning system WebKit port list.
-
- https://bugs.webkit.org/show_bug.cgi?id=32629
-
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/webkitport.py:
- * Scripts/modules/webkitport_unittest.py:
-
-2009-12-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- post-diff is failing with exception under guess_reviewer_from_bug
- https://bugs.webkit.org/show_bug.cgi?id=32642
-
- Also refactor output capturing code into
- OutputCapture.assert_outputs to share more code between tests.
-
- * Scripts/modules/buildsteps.py:
- - Add the missing include.
- - Give guess_reviewer_from_bug a private underscore.
- * Scripts/modules/buildsteps_unittest.py: Added.
- - Test to make sure _guess_reviewer_from_bug works as expected.
- * Scripts/modules/commands/commandtest.py:
- - Custom code is now obsoleted by OutputCapture.assert_outputs
- * Scripts/modules/commands/queues_unittest.py:
- - ditto
- * Scripts/modules/credentials_unittest.py:
- - ditto
- * Scripts/modules/mock_bugzillatool.py:
- - fetch_reviewed_patches_from_bug can never return None
- * Scripts/modules/multicommandtool_unittest.py:
- - Custom code is now obsoleted by OutputCapture.assert_outputs
- * Scripts/modules/outputcapture.py:
- - Add assert_outputs to share more code between tests.
- * Scripts/run-webkit-unittests:
- - Add buildsteps_unittest.py
-
-2009-12-16 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Added a default argument to _update_status so that callers
- don't have to explictly pass None when they don't have a patch object.
-
- * Scripts/modules/commands/queues.py:
-
-2009-12-16 Kent Tamura <tkent@chromium.org>
-
- Reviewed by David Levin.
-
- check-webkit-style supports for TAB check against text files.
- https://bugs.webkit.org/show_bug.cgi?id=32538
-
- * Scripts/check-webkit-style:
- Move process_patch() to style.py.
- * Scripts/modules/cpp_style.py:
- Add can_handle().
- * Scripts/modules/cpp_style_unittest.py:
- Add tests for can_handle().
- * Scripts/modules/style.py:
- Added. This is a front-end of cpp_style and text_style. It dispatches
- files to an appropriate linter.
- * Scripts/modules/text_style.py:
- Added. This is a linter module for generic text files. It supports
- only for TAB checking at this moment.
- * Scripts/modules/text_style_unittest.py:
- Added. Tests for text_style.py.
- * Scripts/run-webkit-unittests:
- Add text_style_unittest.
-
-2009-12-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- bugzilla-tool should not require users to install mechanize
- https://bugs.webkit.org/show_bug.cgi?id=32635
-
- Centralize our import logic.
-
- * Scripts/modules/bugzilla.py: use webkit_mechanize
- * Scripts/modules/statusbot.py: use webkit_mechanize
- * Scripts/modules/webkit_mechanize.py: Added.
-
-2009-12-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Generalize commit-queue recent status page for all queues
- https://bugs.webkit.org/show_bug.cgi?id=32633
-
- * QueueStatusServer/index.html:
- - Generalize to support other queues.
- * QueueStatusServer/queue_status.py:
- - Generalize MainPage to support other queues.
-
-2009-12-16 Evan Martin <evan@chromium.org>
-
- Reviewed by Adam Barth.
-
- Early warning system server should display output as UTF-8.
-
- https://bugs.webkit.org/show_bug.cgi?id=32625
-
- * QueueStatusServer/queue_status.py:
-
-2009-12-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Add error handling to the early warning system
- https://bugs.webkit.org/show_bug.cgi?id=32594
-
- This should be the last step in making the EWS operational. When we
- have a build error, we post the log to QueueStatusServer and add a link
- to the bug.
-
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/executive.py:
-
-2009-12-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Holger Freyther.
-
- Fix crash with tests that use custom font faces.
-
- https://bugs.webkit.org/show_bug.cgi?id=32600
-
- In the DRT we call QApplication::removeAllApplicationFonts(), to make sure
- that custom font faces between tests don't influence each other. Calling this
- function in Qt however also invalidates all existing handles with QFontDatabase.
-
- In order to make sure that WebCore also drops these handles we call QWebSettings::clearMemoryCaches(),
- which implies a call to WebCore::FontCache::fontCache()->invalidate().
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
-
-2009-12-16 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Maintain button state between mouse events.
-
- This allows eventSender to generate drag events.
-
- https://bugs.webkit.org/show_bug.cgi?id=32601
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2009-12-15 Chris Jerdonek <chris.jerdonek@gmail.com>
-
- Reviewed by David Levin.
-
- Code clean-up in check-webkit-style as described below.
- The only functional changes are minor improvements to the
- script's help output.
-
- https://bugs.webkit.org/show_bug.cgi?id=32487
-
- * Scripts/check-webkit-style:
- - Added the module docstring from cpp_style.py.
- - Improved wording of the --help output and added some of the
- default values as substitution strings.
- - Called cpp_style.exit_with_usage instead of sys.stderr.write
- in main function.
- - Made changes caused by changes to cpp_style.py.
-
- * Scripts/modules/cpp_style.py:
- - Removed module docstring, as well as redundant _USAGE string
- and main() function obsoleted by check-webkit-style.
- - Moved specification of default script values from within a
- function definition to global variables.
- - Moved the default webkit filter rules to be near the other
- global variables.
- - Renamed "FILTER" global variables to "FILTER_RULES" to
- establish unambiguous terminology.
- - Renamed _ERROR_CATEGORIES to _STYLE_CATEGORIES.
- - Changed _STYLE_CATEGORIES from a string to a list.
- - Added default webkit filter rules to --filter= output.
- - Renamed "print_" methods to "exit_with_" since they exist
- and added a temporary display_help parameter.
- - Added a temporary display_help parameter to parse_arguments.
-
- * Scripts/modules/cpp_style_unittest.py:
- - Made changes caused by changes to cpp_style.py.
- - Lower-cased ErrorCollector's ERROR_CATEGORIES instance
- variables since they are not global.
-
-2009-12-15 Adam Barth <abarth@webkit.org>
-
- Unreviewed fix for the style-queue.
- Typo: _updates_status -> _update_status
-
- We need to improve our testing infrastructure for the queues.
-
- * Scripts/modules/commands/queues.py:
-
-2009-12-15 Adam Barth <abarth@webkit.org>
-
- Unreviewed fix for the style-queue. I suspect this is a recent
- regression from Eric's change below.
-
- * Scripts/modules/commands/queues.py:
-
-2009-12-15 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Darin Fisher.
-
- update-webkit-chromium to auto-install gclient
-
- https://bugs.webkit.org/show_bug.cgi?id=32587
-
- * Scripts/update-webkit-chromium:
-
-2009-12-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool / commit-queue should add results links to bugs when more results are available on the status bot
- https://bugs.webkit.org/show_bug.cgi?id=32546
-
- You can see an example of this working in:
- https://bugs.webkit.org/show_bug.cgi?id=32585#c3
-
- * QueueStatusServer/queue_status.py:
- - Output the id of the newly created status.
- * Scripts/modules/commands/queues.py:
- - Tweak the commit-queue logging to include a full status link.
- * Scripts/modules/statusbot.py:
- - update_status should return the newly created status id.
-
-2009-12-15 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Rename Qt DRT components to match other ports' naming convention and to be more understandable.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp: Removed.
- * DumpRenderTree/qt/DumpRenderTree.h: Removed.
- * DumpRenderTree/qt/DumpRenderTree.pro: Updated.
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp: Copied from WebKitTools/DumpRenderTree/qt/DumpRenderTree.cpp.
- * DumpRenderTree/qt/DumpRenderTreeQt.h: Copied from WebKitTools/DumpRenderTree/qt/DumpRenderTree.h.
- * DumpRenderTree/qt/GCControllerQt.cpp: Copied from WebKitTools/DumpRenderTree/qt/jsobjects.cpp.
- (GCController::GCController):
- * DumpRenderTree/qt/GCControllerQt.h: Copied from WebKitTools/DumpRenderTree/qt/jsobjects.h.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/WorkQueueItem.h: Removed.
- * DumpRenderTree/qt/WorkQueueItemQt.cpp: Updated includes.
- * DumpRenderTree/qt/WorkQueueItemQt.h: Copied from WebKitTools/DumpRenderTree/qt/WorkQueueItem.h.
- * DumpRenderTree/qt/jsobjects.cpp: Removed.
- * DumpRenderTree/qt/jsobjects.h: Removed.
- * DumpRenderTree/qt/main.cpp: Updated includes.
-
-2009-12-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- We have two mark-fixed commands
- https://bugs.webkit.org/show_bug.cgi?id=32073
-
- * Scripts/mark-bug-fixed: Removed.
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
-
-2009-12-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool/commit-queue needs to upload failure logs when patches are rejected
- https://bugs.webkit.org/show_bug.cgi?id=28286
-
- * QueueStatusServer/index.html:
- - Show [results] links if a results log was uploaded.
- * QueueStatusServer/queue_status.py:
- - Empty file uploads appear as u"" and Blob does not handle unicode, so convert to str().
- * Scripts/modules/commands/queues.py:
- - Post to the status bot when a patch fails and include the failure log as a results file.
-
-2009-12-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queue sub-commands need --status-host so they can report status
- https://bugs.webkit.org/show_bug.cgi?id=32313
-
- Make --status-bot a global option and make
- run_bugzilla_tool pass --status-bot to sub-commands.
-
- * Scripts/bugzilla-tool:
- - Rename _status to status_bot and make it non-lazy.
- * Scripts/modules/commands/queues.py:
- - Move status updates out of WorkQueue and into individual queues.
- * Scripts/modules/commands/queues_unittest.py:
- - Test that --status-host is passed to bugzilla-tool when run as subcommand.
- * Scripts/modules/mock_bugzillatool.py:
- - Add a MockStatusBot
- * Scripts/modules/workqueue.py:
- - Remove status_host and work_work_logs_directory callbacks.
- - Add new work_item_log_path callback so that WorkQueue doesn't need to know about patches!
- * Scripts/modules/workqueue_unittest.py:
- - Update unit tests to reflect new callbacks.
-
-2009-12-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- scm_unittest.py is too slow
- https://bugs.webkit.org/show_bug.cgi?id=31818
-
- Now we don't run the SCM unit tests unless we get the --all flag on the
- command line. Eric and I were commenting out this test because it was
- too painful to run.
-
- * Scripts/run-webkit-unittests:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix failing unittest.
-
- * Scripts/modules/bugzilla_unittest.py:
-
-2009-12-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move Credential handling out into a separate module
- https://bugs.webkit.org/show_bug.cgi?id=32531
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/credentials.py: Added.
- * Scripts/modules/credentials_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Kill _create_step_sequence
- https://bugs.webkit.org/show_bug.cgi?id=32539
-
- It's cleaner to represent not having these sequences as an empty
- sequence instead of None.
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/stepsequence.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Address reviewer comments from an earlier patch. I didn't
- do this earlier because I was worried about conflicts in dependent
- patches.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Make download commands declarative
- https://bugs.webkit.org/show_bug.cgi?id=32469
-
- This patch "properly" factors most of the download commands. These
- commands are now largely declarative, which is the final step of this
- grand refactoring.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Add AbstractPatchSequencingCommand to remove redundant code
- https://bugs.webkit.org/show_bug.cgi?id=32468
-
- Redundant code is bad. This patch moves us towards more declarative
- commands.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitApplyingScripts
- https://bugs.webkit.org/show_bug.cgi?id=32467
-
- Ah! I've been wanting to do this for a long time. This patch brings
- the applying commands into the patch processing fold.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/download_unittest.py:
- * Scripts/modules/mock_bugzillatool.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Convert rollout to StepSequence
- https://bugs.webkit.org/show_bug.cgi?id=32406
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/download_unittest.py:
- * Scripts/modules/mock_bugzillatool.py:
-
-2009-12-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill LandingSequence
- https://bugs.webkit.org/show_bug.cgi?id=32464
-
- Removes LandingSequence in favor of StepSequence. This required
- changing the Step API slightly to carry a general notion of state
- instead of carrying patches specifically.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/landingsequence.py: Removed.
- * Scripts/modules/stepsequence.py:
-
-2009-12-14 Robert Hogan <robert@roberthogan.net>
-
- Reviewed by Eric Seidel.
-
- [Qt] Fix https://bugs.webkit.org/show_bug.cgi?id=32437
-
- Amend the behaviour of DRT::notifyDone to dump only when
- the page has finished loading.
-
- This fix permits removal of the following tests from the Qt skipped list:
- fast/forms/textarea-linewrap-dynamic.html
- fast/forms/textarea-setvalue-submit.html
- fast/forms/textarea-hard-linewrap-empty.html
- fast/forms/submit-to-url-fragment.html
- http/tests/misc/percent-sign-in-form-field-name.html
- http/tests/security/escape-form-data-field-names.html
-
- However it also requires the following two to be added to the skipped list:
-
- http/tests/xmlhttprequest/access-control-basic-denied-preflight-cache.html
- svg/custom/use-instanceRoot-as-event-target.xhtml
-
- It appears the behaviour of notifyDone was masking problems with these two
- tests.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::processWork):
- (LayoutTestController::maybeDump):
- (LayoutTestController::notifyDone):
- (LayoutTestController::provisionalLoad):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::resetLoadFinished):
-
-2009-12-14 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Qt] Add support for keyboard modifiers to Qt DRT's EventSender for touch events
-
- https://bugs.webkit.org/show_bug.cgi?id=32482
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::setTouchModifier):
- (EventSender::clearTouchPoints):
- (EventSender::sendTouchEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2009-12-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Gavin Barraclaugh.
-
- Fix minor problem in sunspider-compare-results which left it broken.
-
- * Scripts/sunspider-compare-results: Declare $parseonly
-
-2009-12-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Give command-line sunspider the ability to handle multiple suites and versions
- https://bugs.webkit.org/show_bug.cgi?id=32477
-
- * Scripts/run-sunspider: Updated for changes to command-line parameters.
- * Scripts/sunspider-compare-results: ditto
-
-2009-12-12 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed, fixing previous comment.
-
- Remove accidental change to sunspider-compare-results
-
- * Scripts/sunspider-compare-results:
-
-2009-12-11 Yael Aharon <yael.aharon@nokia.com>
-
- Unreviewed build fix for Qt versions < 4.6.
- Guard every slot individually with #ifdef.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint):
- (EventSender::updateTouchPoint):
- (EventSender::touchStart):
- (EventSender::touchMove):
- (EventSender::touchEnd):
- (EventSender::clearTouchPoints):
- (EventSender::releaseTouchPoint):
- (EventSender::sendTouchEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2009-12-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- CommandsTest.assert_execute_outputs doesn't check stderr
- https://bugs.webkit.org/show_bug.cgi?id=32352
-
- Fix assert_execute_outputs to check stderr
- and then fix all the unit tests which needed to
- pass stderr output.
-
- * Scripts/modules/commands/commandtest.py:
- * Scripts/modules/commands/download_unittest.py:
- * Scripts/modules/commands/upload_unittest.py:
-
-2009-12-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [check-webkit-style] False positive for tst_QWebFrame
- https://bugs.webkit.org/show_bug.cgi?id=32436
-
- Add an exception for function names that start with "tst_". These are
- used by the Qt unit testing framework.
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-11 Simon Hausmann <hausmann@webkit.org>, Kim Grönholm <kim.gronholm@nomovok.com>
-
- Reviewed by Antti Koivisto.
-
- Added support for creating synthetic touch events with EventSender
- in Qt's DumpRenderTree.
-
- https://bugs.webkit.org/show_bug.cgi?id=32114
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint):
- (EventSender::updateTouchPoint):
- (EventSender::touchStart):
- (EventSender::touchMove):
- (EventSender::touchEnd):
- (EventSender::clearTouchPoints):
- (EventSender::releaseTouchPoint):
- (EventSender::sendTouchEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2009-12-11 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Darin Adler.
-
- The values of RuntimeArray are not enumerable
- https://bugs.webkit.org/show_bug.cgi?id=29005
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController arrayOfString]):
-
-2009-12-10 Eric Seidel <eric@webkit.org>
-
- No review, just updating unit tests to match recent checkins.
-
- * Scripts/modules/mock_bugzillatool.py:
- - Add missing red_core_builders_names method causing exception.
- * Scripts/modules/workqueue_unittest.py:
- - processutils is dead, use executive.py instead.
-
-2009-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move run_command onto Executive to make code which uses run_command testable
- https://bugs.webkit.org/show_bug.cgi?id=32396
-
- * Scripts/modules/executive.py:
- - Move run_command and error handlers onto Executive.
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-12-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs a command to list patches needing cq+
- https://bugs.webkit.org/show_bug.cgi?id=32351
-
- * Scripts/modules/bugzilla.py:
- - Parse attacher_email from attachment xml.
- * Scripts/modules/bugzilla_unittest.py:
- - Test new attacher_email parsing.
- * Scripts/modules/commands/queries.py:
- - Add PatchesToCommitQueue
- * Scripts/modules/commands/queries_unittest.py:
- - Tests for PatchesToCommitQueue
- * Scripts/modules/mock_bugzillatool.py:
- - Add necessary mock methods for running PatchesToCommitQueue
-
-2009-12-10 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Turns out every StepSequence command needs a --quiet
- option.
-
- * Scripts/modules/stepsequence.py:
-
-2009-12-10 Eric Z. Ayers <zundel@google.com>
-
- Reviewed by Pavel Feldman.
-
- Implements displayWebView() to force an invalidation and repaint.
- This fixes a problem running the timeline-paint.html unit test.
-
- https://bugs.webkit.org/show_bug.cgi?id=31729
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (displayWebView):
-
-2009-12-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Convert more commands to StepSequences
- https://bugs.webkit.org/show_bug.cgi?id=32362
-
- We should eventually convert all the commands, but I'm starting with
- the easy ones.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-10 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- [GTK] editing/selection/shrink-selection-after-shift-pagedown.html failing
- https://bugs.webkit.org/show_bug.cgi?id=31103
-
- Give focus to the webviews when we create them, since some tests expect this.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
-
-2009-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool "builders are red" error should tell you which builders
- https://bugs.webkit.org/show_bug.cgi?id=32211
-
- * Scripts/modules/buildsteps.py:
-
-2009-12-09 Marwan Al Jubeh <marwan.aljubeh@gmail.com>
-
- Reviewed by Adam Roben.
-
- Fixes: https://bugs.webkit.org/show_bug.cgi?id=31228
- Set the WebKitOutputDir, WebKitLibrariesDir and Cygwin environment variables automatically
- in Windows as part of running update_webkit.
-
- * Scripts/update-webkit:
- - Run setupAppleWinEnv() on Apple's Windows port.
- * Scripts/webkitdirs.pm:
- - Added functions that return the source directory, libraries directory and default build directory on Windows.
- - Added isWindowsNT() which tests if the current Windows version is from the Windows NT family.
- - Implemented setupAppleWinEnv() which sets the environment variables WebKitOutputDir, WebKitLibrariesDir
- and Cygwin to their desired values.
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- exception thrown when running apply-patches
- https://bugs.webkit.org/show_bug.cgi?id=32344
-
- The update step now takes a port option. Once we finish the Steps
- refactoring, we won't have to worry about this kind of bug again.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix ScriptError includes. I don't understand why these
- didn't throw during unit testing...
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/logging_unittest.py:
- * Scripts/modules/workqueue.py:
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Remove unused PatchCollection class
- https://bugs.webkit.org/show_bug.cgi?id=32312
-
- It's dead code.
-
- * Scripts/modules/patchcollection.py:
- * Scripts/modules/patchcollection_unittest.py: Removed.
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. CheckStyle needs a --no-upate option.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Convert Build to use Sequence
- https://bugs.webkit.org/show_bug.cgi?id=32310
-
- So much prettier.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/stepsequence.py: Added.
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Add missing file.
-
- * Scripts/modules/executive.py: Added.
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix.
-
- * Scripts/modules/landingsequence.py:
-
-2009-12-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Implement abstract Steps
- https://bugs.webkit.org/show_bug.cgi?id=32212
-
- This is a fairly disruptive change that refactors how we build
- commands. Instead of using a landing sequence, we can now assemble a
- sequence of steps directly. We still use the landing sequence in the
- interim, but this will be removed soon.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/queues_unittest.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/modules/processutils.py: Removed.
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
- * Scripts/modules/webkitport.py:
-
-2009-12-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run_command and ScriptError should move into processutils.py
- https://bugs.webkit.org/show_bug.cgi?id=32305
-
- Turns out there are a zillion callers to run_command.
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/early_warning_system.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/logging_unittest.py:
- * Scripts/modules/processutils.py:
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
- * Scripts/modules/workqueue.py:
- * Scripts/modules/workqueue_unittest.py:
-
-2009-12-08 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Mac plugins support.
-
- https://bugs.webkit.org/show_bug.cgi?id=32236
-
- * wx/browser/wscript:
-
-2009-12-08 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- [check-webkit-style] False positive for DEFINE_OPCODE(op_jtrue) {
- https://bugs.webkit.org/show_bug.cgi?id=32193
-
- * Scripts/modules/cpp_style.py: For the function { rule, if there is space
- at the beginning of line, ignore lines which then have a macro.
- * Scripts/modules/cpp_style_unittest.py: Add tests to verify the
- new behavior.
-
-2009-12-08 Dmitry Titov <dimich@chromium.org>
-
- Rubber-stamped by David Levin.
-
- Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread."
- It may have caused massive increase of reported leaks on the bots.
- https://bugs.webkit.org/show_bug.cgi?id=31639
-
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadVerifier.h: Removed.
-
-2009-12-08 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add asserts to RefCounted to make sure ref/deref happens on the right thread.
- https://bugs.webkit.org/show_bug.cgi?id=31639
-
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadVerifier.h: Added.
-
-2009-12-08 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- [check-webkit-style] False positive for camel case of JSC op codes
- https://bugs.webkit.org/show_bug.cgi?id=32192
-
- * Scripts/modules/cpp_style.py: Added an exception for the JSC op
- code functions and const_iterator as well since I noticed a false
- positive there when testing the fix.
- * Scripts/modules/cpp_style_unittest.py: Added tests for these
- changes.
-
-2009-12-08 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Turn on (SVG) Filters for Win.
- https://bugs.webkit.org/show_bug.cgi?id=32224
-
- * Scripts/webkitdirs.pm:
-
-2009-12-08 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Turn on (SVG) Filters for Gtk.
- https://bugs.webkit.org/show_bug.cgi?id=32224
-
- * Scripts/build-webkit:
-
-2009-12-07 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- [check-webkit-style] S_OK is a fine identifier
- https://bugs.webkit.org/show_bug.cgi?id=32225
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Turn on (SVG) Filters for Qt.
- https://bugs.webkit.org/show_bug.cgi?id=32224
-
- * Scripts/build-webkit:
-
-2009-12-07 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Make run-webkit-websocketserver log to stderr rather than to a file.
- https://bugs.webkit.org/show_bug.cgi?id=32234
-
- * Scripts/run-webkit-websocketserver:
-
-2009-12-07 Dmitry Titov <dimich@chromium.org>
-
- Rubber-stamped by Darin Adler.
-
- Remove ENABLE_SHARED_SCRIPT flags
- https://bugs.webkit.org/show_bug.cgi?id=32245
- This patch was obtained by "git revert" command and then un-reverting of ChangeLog files.
-
- * Scripts/build-webkit:
-
-2009-12-07 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/7450481> One compositing test keeps DRT in "compositing mode", breaks repaint tests
-
- The counter that WebView used to keep track of the number of enclosed WebHTMLViews using
- accelerated compositing was hard to manage, and maintained incorrectly in a number of cases.
- This caused one compositing test make DumpRenderTree think that all subsequent tests
- were compositing too.
-
- Replace this counter with notifications, which are only fired if a client (DRT) requests them. The
- notification informs the client that a WebHTMLView entered compositing mode (or an already-
- compositing WebHTML was added); it does not say when a view becomes uncomposited, or all
- compositing subviews were removed, since this is tricky to get right.
-
- DumpRenderTreeWindow listens for this notification, and uses it to turn on window
- autodisplay, which is necessary to kick-start Core Animation rendering and animations.
- We ensure that window autodisplay is turned off before every test.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/DumpRenderTreeWindow.h:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow close]):
- (-[DumpRenderTreeWindow startListeningForAcceleratedCompositingChanges]):
- (-[DumpRenderTreeWindow webViewStartedAcceleratedCompositing:]):
-
-2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by Holger Hans Peter Freyther.
-
- Turn on (SVG) Filters support, by default.
- https://bugs.webkit.org/show_bug.cgi?id=32224
-
- For now only enable FILTERS build flag on WebKit/mac. Other platforms will follow soon.
-
- * Scripts/build-webkit:
-
-2009-12-07 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Chromium buildbots are not red when they fail
- https://bugs.webkit.org/show_bug.cgi?id=32235
-
- * Scripts/build-webkit:
-
-2009-12-07 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Typo in chromium linux builder
- https://bugs.webkit.org/show_bug.cgi?id=32238
-
- * Scripts/webkitdirs.pm:
-
-2009-12-07 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Darin Fisher.
-
- fixes to build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=32179
-
- * Scripts/webkitdirs.pm:
-
-2009-12-07 Eric Seidel <eric@webkit.org>
-
- No review, just adding two recently approved committers.
-
- * Scripts/modules/committers.py:
-
-2009-12-07 Alexey Proskuryakov <ap@apple.com>
-
- * Scripts/run-webkit-websocketserver: Added property svn:executable.
-
-2009-12-07 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Add run-webkit-websocketserver
-
- https://bugs.webkit.org/show_bug.cgi?id=31390
-
- * Scripts/run-webkit-websocketserver: Added.
-
-2009-12-07 Steve Falkenburg <sfalken@apple.com>
-
- Build fix. Be flexible about which version of ICU is used on Windows.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Add optional xcopy commands to copy ICU 4.2.
-
-2009-12-07 Dirk Schulze <krit@webkit.org>
-
- Not reviewed, adding myself to the reviewers list.
-
- * Scripts/modules/committers.py:
-
-2009-12-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add an API for uploading results files to StatusBot
- https://bugs.webkit.org/show_bug.cgi?id=32210
-
- Add Content-Type: plain/text which was forgotten
- from the previous commit when I landed with land-patches
- instead of land-diff.
-
- * QueueStatusServer/queue_status.py:
-
-2009-12-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Status Server needs a way to handle uploaded results
- https://bugs.webkit.org/show_bug.cgi?id=32209
-
- * QueueStatusServer/queue_status.py: Add a ShowResults (results/*) command
- * QueueStatusServer/update_status.html: Add file upload.
-
-2009-12-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add an API for uploading results files to StatusBot
- https://bugs.webkit.org/show_bug.cgi?id=32210
-
- * Scripts/modules/statusbot.py:
-
-2009-12-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Status Server needs a way to handle uploaded results
- https://bugs.webkit.org/show_bug.cgi?id=32209
-
- * QueueStatusServer/queue_status.py: Add a ShowResults (results/*) command
- * QueueStatusServer/update_status.html: Add file upload.
-
-2009-12-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] BuildAttachment should not check the builders
- https://bugs.webkit.org/show_bug.cgi?id=32207
-
- This is code that got copied here by accident when the class was created.
-
- * Scripts/modules/commands/download.py:
-
-2009-12-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Make LandingSequence.update aware of ports
- https://bugs.webkit.org/show_bug.cgi?id=32208
-
- This is required to make build work on the Chromium port because
- Chromium has a custom update-webkit.
-
- * Scripts/modules/landingsequence.py:
-
-2009-12-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add early warning system commands to bugzilla-tool.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitport.py:
-
-2009-12-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Implement Qt EarlyWarningSystem and Chromium EarlyWarningSystem
- https://bugs.webkit.org/show_bug.cgi?id=32205
-
- * Scripts/modules/commands/early_warning_system.py: Added.
- * Scripts/modules/commands/queues.py:
-
-2009-12-06 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adele Peterson.
-
- REGRESSION (r51728): update-webkit fails when the current directory is
- not inside a Subversion working copy
- https://bugs.webkit.org/show_bug.cgi?id=32204
-
- * Scripts/update-webkit: Invoke isSVN() in the correct working
- directory.
-
-2009-12-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Rename AbstractTryQueue to AbstractReviewQueue
- https://bugs.webkit.org/show_bug.cgi?id=32202
-
- * Scripts/modules/commands/queues.py:
-
-2009-12-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Implement ChromiumPort
- https://bugs.webkit.org/show_bug.cgi?id=32182
-
- * Scripts/modules/webkitport.py:
- * Scripts/modules/webkitport_unittest.py:
-
-2009-12-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move update-webkit into BuildSteps
- https://bugs.webkit.org/show_bug.cgi?id=32181
-
- We need to move update-webkit out of SCM.py because SCM isn't supposed to know
- that WebKit exists. The proper place for the knowledge of the existence of
- update-webkit is in WebKitPort because some ports have specialized update
- scripts (analogous to build-webkit).
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/scm.py:
- * Scripts/modules/webkitport.py:
-
-2009-12-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- update-webkit should call git svn rebase and resolve-ChangeLogs -f
- https://bugs.webkit.org/show_bug.cgi?id=27162
-
- Teach update-webkit about Git. I didn't add the call to
- resolve-ChangeLogs -f because sometimes that script goes bananas. We
- can iterate from here, however.
-
- * Scripts/update-webkit:
-
-2009-12-04 Yael Aharon <yael.aharon@nokia.com>
-
- Unreviewed build fix.
-
- [Qt] build fix after r51634 removed unused QBoxLayout include which included limits.h.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
-
-2009-12-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Adam Treat.
-
- Add some missing methods for showing and hiding the
- Web Inspector.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::~WebPage):
- (WebCore::WebPage::webInspector):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::hideWebInspector):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-12-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Adam Treat.
-
- Implement the setAllowUniversalAccessFromFileURLs method
- for the Qt LayoutTestController.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-12-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- REGRESSION: AX: buttons now extremely repetitive
- https://bugs.webkit.org/show_bug.cgi?id=32164
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isAttributeSupportedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isAttributeSupported):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isAttributeSupported):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isAttributeSupported):
-
-2009-12-03 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- check-webkit-style should check for camelCase variable names
- https://bugs.webkit.org/show_bug.cgi?id=32051
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-12-03 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Eric Seidel.
-
- AX: VO just says "term" on many web sites
- https://bugs.webkit.org/show_bug.cgi?id=32139
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getRoleDescriptionCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::roleDescription):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::roleDescription):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::roleDescription):
-
-2009-12-03 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Implement WAI-ARIA scrollbar role and related property aria-orientation
- https://bugs.webkit.org/show_bug.cgi?id=32126
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getOrientationCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::orientation):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::orientation):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::orientation):
-
-2009-12-03 Eric Carlson <eric.carlson@apple.com>
-
- Reviewed by Adam Roben.
-
- Minor correction to r51663.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (addQTDirToPATH):
- GetEnvironmentVariable -> GetEnvironmentVariableW.
-
-2009-12-03 Eric Carlson <eric.carlson@apple.com>
-
- Reviewed by Adam Roben.
-
- ~96 regression tests fail when using QuickTime 7.6 (they pass with QuickTime 7.3)
- https://bugs.webkit.org/show_bug.cgi?id=30256
-
- Add the QuickTime dll directory to the PATH environment variable so
- inialization can succeed.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (addQTDirToPATH):
- (initialize):
-
-2009-12-03 Shu Chang <Chang.Shu@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] After revision 32643, sender() is of type QWebPage instead of QWebFrame.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::maybeDump):
-
-2009-12-03 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Eric Seidel.
-
- Update pywebsocket to 0.4.3
- This version logs friendlier and higher-level messages in WARN level, which is used for LayoutTests.
- Stack trace is logged now in INFO level.
- https://bugs.webkit.org/show_bug.cgi?id=32097
-
- * pywebsocket/mod_pywebsocket/dispatch.py:
- * pywebsocket/mod_pywebsocket/msgutil.py:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/mod_pywebsocket/util.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_dispatch.py:
- * pywebsocket/test/test_util.py:
-
-2009-12-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- Fix JSClassRef leak.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (AccessibilityController::makeWindowObject):
- * DumpRenderTree/GCController.cpp:
- (GCController::makeWindowObject):
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::makeWindowObject):
-
-2009-12-03 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/7214236> and http://webkit.org/b/32052 - Implement HTML5 state object history API
-
- Keep DRT-win building...
-
- * DumpRenderTree/win/FrameLoadDelegate.h:
- (FrameLoadDelegate::didPushStateWithinPageForFrame):
- (FrameLoadDelegate::didReplaceStateWithinPageForFrame):
- (FrameLoadDelegate::didPopStateWithinPageForFrame):
-
-2009-12-03 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Unreviewed build fix.
-
- [Qt] ARM-Linux build fix after r51634 removed unused QBoxLayout include which included limits.h on ARM.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
-
-2009-12-03 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Refactor DRT to not crash on tests which open child windows from javascript.
- Prevent DRT from showing the main view if these childs get deleted.
- This fixes https://bugs.webkit.org/show_bug.cgi?id=31591.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::closeRemainingWindows):
- (WebCore::DumpRenderTree::createWindow):
- (WebCore::DumpRenderTree::windowCount):
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2009-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(51595): commit-queue is throwing exceptions
- https://bugs.webkit.org/show_bug.cgi?id=32083
-
- * Scripts/modules/commands/queues.py:
- - Don't use default value of [] as it ends up getting shared.
- - Make log_progress accept arrays of ints as well as strings.
- - Return an exit code from execute()
- * Scripts/modules/commands/queues_unittest.py: Added.
- - Test to make sure log_progress will accept ints.
- - Test to make sure run_bugzilla_tool will accept ints.
- * Scripts/modules/workqueue.py:
- - Print the stack trace on unexpected exceptions for easier debugging.
- * Scripts/run-webkit-unittests:
- - Add queues_unittest.
-
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/commands/queues_unittest.py: Copied from WebKitTools/Scripts/modules/commands/commandtest.py.
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/modules/workqueue.py:
- * Scripts/run-webkit-unittests:
-
-2009-12-02 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style is too noisy about namespace indenting issues.
- https://bugs.webkit.org/show_bug.cgi?id=32096
-
- * Scripts/modules/cpp_style.py:
- Added a _FileState object to be able to track file level information. In this
- case, it simply tracks whether the error has already been given, so that it isn't
- done again.
- * Scripts/modules/cpp_style_unittest.py:
- Modified test cases to pass in the _FileState object and fix a test that expected
- to see the namespace error twice (now it only occurs once). No new tests because
- existing tests cover the change in functionality.
-
-2009-12-01 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Eric Seidel.
-
- [wx] Get DumpRenderTree building after waf switch.
-
- https://bugs.webkit.org/show_bug.cgi?id=32041
-
- * DumpRenderTree/wscript: Added.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setTimelineProfilingEnabled):
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- (LayoutTestController::disableImageLoading):
- (LayoutTestController::whiteListAccessFromOrigin):
- (LayoutTestController::counterValueForElementById):
- * Scripts/build-webkit:
-
-2009-12-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] build-attachment shouldn't check whether the builders are red
- https://bugs.webkit.org/show_bug.cgi?id=32062
-
- build-attachment doesn't touch the remote repository, so there isn't a
- need to hold off when the builders are red.
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/landingsequence.py:
-
-2009-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(51590): style-queue and build-queue think their empty when they are not
- https://bugs.webkit.org/show_bug.cgi?id=32061
-
- * Scripts/modules/bugzilla.py: make all id lookups return ints instead of strings.
- * Scripts/modules/bugzilla_unittest.py: Add and update unit tests to use ints.
-
-2009-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- build-queue is throwing exceptions and complaining about
- lack of --no-update on build-attachment. Make it stop.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
-
-2009-12-02 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. Forgot to declare my variables. :(
-
- * QueueStatusServer/queue_status.py:
-
-2009-12-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Implement status bubble view
- https://bugs.webkit.org/show_bug.cgi?id=32057
-
- The status bubble is a compact representation of the queue status for a
- given patch. This will eventually help us reduce the comment spam from
- the queues.
-
- * QueueStatusServer/index.html: Added HTML5 doctype for sanity.
- * QueueStatusServer/queue_status.py:
- * QueueStatusServer/status_bubble.html: Added.
-
-2009-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- trim commands/*.py includes now that commands are unit tested
- https://bugs.webkit.org/show_bug.cgi?id=32056
-
- In the course of ensuring that the unit tests still
- passed after this change, I had to actually make them
- pass in the first place.
-
- * Scripts/modules/bugzilla.py:
- - Fix _parse_attachment_ids_request_query to return ints instead of strings.
- * Scripts/modules/commands/download.py: Remove unneeded imports.
- * Scripts/modules/commands/queries.py: Ditto.
- * Scripts/modules/commands/queues.py: Ditto.
- * Scripts/modules/commands/upload.py: Ditto.
- * Scripts/modules/scm_unittest.py:
- - Fix to expect the \n after the path since echo adds an \n.
-
-2009-12-01 Yaar Schnitman <yaar@chromium.org>
-
- build-webkit: Remove flex,bison,gperf check for chromium
- https://bugs.webkit.org/show_bug.cgi?id=32043
-
- * Scripts/webkitdirs.pm:
-
-2009-12-01 Chris Fleizach <cfleizach@apple.com>
-
- Build fixage for Windows/GTK for DumpRenderTree.
-
- WAI-ARIA: implement support for ARIA drag and drop
- https://bugs.webkit.org/show_bug.cgi?id=32007
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
-
-2009-12-01 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- WAI-ARIA: implement support for ARIA drag and drop
- https://bugs.webkit.org/show_bug.cgi?id=32007
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getARIADropEffectsCallback):
- (getARIAIsGrabbedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
-
-2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Not reviewed. GTK DRT try 2.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
-
-2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Not reviewed. Try to fix gtk DRT build.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
-
-2009-12-01 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style does not understand (Prefix)Foo(Custom|Gtk|CG|Mac).cpp including Foo.h
- https://bugs.webkit.org/show_bug.cgi?id=32033
-
- * Scripts/modules/cpp_style.py: Changed check for a possible primary header to use find
- instead of startswith.
- * Scripts/modules/cpp_style_unittest.py: Added a unit test for the new behavior.
-
-2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Not reviewed. Qt build almost fixed, DumpRenderTree should compile now as well.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.h: Update old function signature.
-
-2009-12-01 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by Simon Fraser.
-
- Add SVG animation test framework with 'snapshot' functionality
- https://bugs.webkit.org/show_bug.cgi?id=31897
-
- Add new 'sampleSVGAnimationForElementAtTime' DRT method,
- used by the new SVG animation testing framework, implemented
- for qt/gtk/win/mac.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (sampleSVGAnimationForElementAtTimeCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
-
-2009-12-01 Adam Roben <aroben@apple.com>
-
- Remove user content before running each test on Windows
-
- Fixes <http://webkit.org/b/31479> Make websocket tests work on Windows
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): Remove all user content
- before each test, which matches Mac.
-
-2009-12-01 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Make pywebsocket log errors to a file
- https://bugs.webkit.org/show_bug.cgi?id=31604
-
- * Scripts/run-webkit-tests: Log output to a pywebsocket_log.txt file in results directory
- (by passing the path to the server via a recently added -l option).
-
-2009-12-01 Adam Roben <aroben@apple.com>
-
- Fix tests that use the TestNetscapePlugin in Debug_Internal builds
-
- Reviewed by Ada Chan.
-
- Fixes <http://webkit.org/b/32027> REGRESSION (r49705): Tests that use
- TestNetscapePlugin fail in Debug_Internal builds
-
- * DumpRenderTree/win/DumpRenderTree.cpp: Use the "_Debug" plugin
- directory in Debug and Debug_All builds, but not in Debug_Internal
- builds.
-
-2009-12-01 Adam Roben <aroben@apple.com>
-
- Re-enable DRT's watchdog timer on Windows
-
- It was accidentally disabled in r50907.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setWaitToDump): Remove a "false &&" that snuck
- into an if condition.
-
-2009-12-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style complains about #imports with / in them
- https://bugs.webkit.org/show_bug.cgi?id=32022
-
- We need to exclude #import directives in addition to #include from the
- binary operator whitespace checks.
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-11-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style is slightly too verbose
- https://bugs.webkit.org/show_bug.cgi?id=32010
-
- check-webkit-style prints out a bunch of "done" lines that seem redundant,
- especially for the style-queue.
-
- * Scripts/modules/cpp_style.py:
-
-2009-11-30 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] Moved the functions that are closing the result log of the
- tests to the last line of the runTest function, this avoids
- reporting crashes in the wrong test if there is a problem when
- reseting the state after the test.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- (runTest):
-
-2009-11-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=31286
- fast/js/date-proto-generic-invocation breaks another test
-
- Don't cache JSClassRefs, a change to the prototype chain will
- last between tests.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (AccessibilityController::getJSClass):
- * DumpRenderTree/GCController.cpp:
- (GCController::getJSClass):
- * DumpRenderTree/GCController.h:
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::getJSClass):
-
-2009-11-30 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Update pywebsocket to 0.4.2.1.
- This is to fix a bug that some messages are logged to stderr even when the log file is specified.
- https://bugs.webkit.org/show_bug.cgi?id=31976
-
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
-
-2009-11-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Generate pass messages for style-queue
- https://bugs.webkit.org/show_bug.cgi?id=31995
-
- With this change, the style-queue posts "pass" messages to bugs as
- well. Also, added more information to the state store w.r.t. passing
- and failing.
-
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/patchcollection.py:
-
-2009-11-30 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Simon Fraser.
-
- Check for WEBKIT_TESTFONTS environment variable in
- run-webkit-tests, for GTK+, to have a more prominent error
- message.
-
- * Scripts/run-webkit-tests:
-
-2009-11-30 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- update-webkit --chromium forces gclient sync
-
- https://bugs.webkit.org/show_bug.cgi?id=31967
-
- * Scripts/update-webkit-chromium:
-
-2009-11-29 Eric Seidel <eric@webkit.org>
-
- Add Erik Arvidsson to committers.py since by r51326 he clear has commit rights.
-
- * Scripts/modules/committers.py:
-
-2009-11-29 Eric Seidel <eric@webkit.org>
-
- No review, just adding missing svn property.
-
- Set svn:executable property on new scripts.
- These were added by commit-queue commits, but the executable
- property was lost due to a bug in svn-apply:
- https://bugs.webkit.org/show_bug.cgi?id=27204
-
- * Scripts/update-webkit-chromium: Added property svn:executable.
- * Scripts/validate-committer-lists: Added property svn:executable.
-
-2009-11-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Need a way to validate that committers.py includes all committers/reviewers
- https://bugs.webkit.org/show_bug.cgi?id=30970
-
- Add a script which knows how to compare our public committer/reviewer
- lists and show discrepancies between them.
-
- Validates mailing lists vs. committers.py:
- - committers.py committers missing from webkit-committers@lists
- - webkit-committers@lists members missing from committers.py
- - committers.py reviewers missing from webkit-reviewers@lists
- - webkit-reviewers@lists members missing from committers.py
- - webkit-reviewers@lists members missing from committers.py reviewer list
-
- Validates committers.py vs. trunk/ SVN history:
- - committers who have not committed in over a year
- - SVN committers missing from committers.py
- - committers.py members who have no record in SVN.
-
- All of these lists still show "false positives" until a few more committers.py updates are made, like:
- https://bugs.webkit.org/show_bug.cgi?id=31366
-
- * Scripts/validate-committer-lists: Added.
-
-2009-11-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] style-queue sends ~100 requests to QueueStatusServer every 5 minutes
- https://bugs.webkit.org/show_bug.cgi?id=31950
-
- Now we cache the last status that we get back from QueueStatusServer.
- Eventually we'll have to do something more fancy if we want to support
- a "try again" button on QueueStatusServer, but we can cross that bridge
- when we come to it.
-
- * Scripts/modules/patchcollection.py:
-
-2009-11-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- StyleQueue scans ~100 bug pages every 5 minutes
- https://bugs.webkit.org/show_bug.cgi?id=31947
-
- Instead of getting the pending-review attachment ids by scanning each
- bug (which results in a network request), we should just get them all
- from webkit.org/pending-review in one shot.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/bugzilla_unittest.py:
- * Scripts/modules/commands/queries.py:
- * Scripts/modules/commands/queries_unittest.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/modules/patchcollection.py:
-
-2009-11-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] CC webkit-bot-watchers whenever the bots touch bugs
- https://bugs.webkit.org/show_bug.cgi?id=31952
-
- The mailing list is open for anyone to subscribe.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/commands/queues.py:
-
-2009-11-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] style-queue should report style errors to bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=31945
-
- Currently, we're just logging the style errors locally. With this
- patch we'll actually log the errors to bugzilla. Note: I plan to run
- with the "local-only" logging during development.
-
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/scm.py:
-
-2009-11-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] style-queue shouldn't reject patches from the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=31944
-
- Currently the style-queue subprocess gets confused and thinks its the
- commit-queue. If the patch has an error, it rejects it from the
- commit-queue. Instead, we should have style-queue specific logic.
- This patch doesn't add that logic, but it gives us a callback we can
- use to add that logic.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/landingsequence.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Rename CommitQueueStatus to QueueStatusServer to allow for more queues.
-
- * CommitQueueStatus: Removed.
- * CommitQueueStatus/app.yaml: Removed.
- * CommitQueueStatus/filters: Removed.
- * CommitQueueStatus/filters/__init__.py: Removed.
- * CommitQueueStatus/filters/webkit_extras.py: Removed.
- * CommitQueueStatus/index.html: Removed.
- * CommitQueueStatus/index.yaml: Removed.
- * CommitQueueStatus/queue_status.py: Removed.
- * CommitQueueStatus/stylesheets: Removed.
- * CommitQueueStatus/stylesheets/main.css: Removed.
- * CommitQueueStatus/update_status.html: Removed.
- * QueueStatusServer: Copied from WebKitTools/CommitQueueStatus.
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- style-queue should only process each patch once
- https://bugs.webkit.org/show_bug.cgi?id=31939
-
- Actually address reviewer comments!
-
- * Scripts/bugzilla-tool:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] style-queue fails to apply a bunch of patches for no reason
- https://bugs.webkit.org/show_bug.cgi?id=31942
-
- By passing --non-interactive to check-style, we convince check-style
- to pass --force to svn-apply, which lets it apply more patches.
-
- * Scripts/modules/commands/queues.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Support --status-host in style-queue
- https://bugs.webkit.org/show_bug.cgi?id=31941
-
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/statusbot.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- style-queue should only process each patch once
- https://bugs.webkit.org/show_bug.cgi?id=31939
-
- Before processing a patch, the try-queues now ask the web service
- whether they have already processed the patch. This is an initial cut
- of this functionality. I expect we're make it richer over time.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/commands/queues.py:
- * Scripts/modules/patchcollection.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- PatchStatus does not return status
- https://bugs.webkit.org/show_bug.cgi?id=31938
-
- We need to parse attachment_id as an int. Otherwise, we can't find
- anything in the datastore.
-
- * CommitQueueStatus/queue_status.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make commit-queue status not throw an exception where there is not
- status
- https://bugs.webkit.org/show_bug.cgi?id=31936
-
- We need to actually fetch the results of the query to see what's in the
- datastore.
-
- * CommitQueueStatus/queue_status.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] unit test ApplyPatches and ApplyAttachment
- https://bugs.webkit.org/show_bug.cgi?id=31935
-
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/download_unittest.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Unit test download commands
- https://bugs.webkit.org/show_bug.cgi?id=31923
-
- Adds download_unittest and fixes a bug found while testing.
-
- * Scripts/modules/commands/commandtest.py:
- * Scripts/modules/commands/download.py:
- Fixed a bug where we'd throw an error because [].append returns
- None.
- * Scripts/modules/commands/download_unittest.py: Added.
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/run-webkit-unittests:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix found while writing unit tests.
-
- * Scripts/modules/commands/download.py:
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 6: Kill the rest.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/commands/queries.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/scm.py:
- * Scripts/modules/webkitlandingscripts.py: Removed.
-
-2009-11-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Unit test upload commands
- https://bugs.webkit.org/show_bug.cgi?id=31903
-
- Adds unit tests for all but two of the upload commands. The two
- remaining ones are more difficult. I'll return to them later. The
- goal of these tests is just to run the commands. We can test more
- detailed behavior later.
-
- * Scripts/modules/commands/commandtest.py:
- * Scripts/modules/commands/upload.py:
- * Scripts/modules/commands/upload_unittest.py:
- * Scripts/modules/mock.py: Added.
- * Scripts/modules/mock_bugzillatool.py:
-
-2009-11-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 5: Kill run_and_throw_if_fail.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/processutils.py: Added.
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 4: Kill run_webkit_script.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 3: Kill build_webkit.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 2: Kill ensure_builders_are_green.
-
- * Scripts/modules/buildsteps.py:
- * Scripts/modules/commands/download.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [bzt] Kill WebKitLandingScripts
- https://bugs.webkit.org/show_bug.cgi?id=31904
-
- Step 1: Kill prepare_clean_working_directory and run_webkit_tests.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildsteps.py: Added.
- * Scripts/modules/commands/download.py:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-26 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove directory prefixes from linux commands
-
- SCM unittests can cause errors on some systems if we use absolute reference to
- the commands, so directory prefixes have been removed.
-
- * Scripts/modules/scm_unittest.py:
-
-2009-11-21 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Link DumpRenderTree to the Qt Ui Tools
- https://bugs.webkit.org/show_bug.cgi?id=31203
-
- Implement QWebPage::createPlugin using the Qt Ui Tools
- to be able to create classes like QProgressBar from within
- the <object></object> tags This is required for the
- new automatic test of Qt Plugins.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::createPlugin):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2009-11-25 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Eric Seidel.
-
- Update pywebsocket to 0.4.2
-
- Update pywebsocket to 0.4.2
- https://bugs.webkit.org/show_bug.cgi?id=31861
-
- * pywebsocket/example/echo_client.py:
- * pywebsocket/example/echo_wsh.py:
- * pywebsocket/mod_pywebsocket/__init__.py:
- * pywebsocket/mod_pywebsocket/dispatch.py:
- * pywebsocket/mod_pywebsocket/msgutil.py:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_dispatch.py:
- * pywebsocket/test/test_msgutil.py:
-
-2009-11-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add unit test for mark-fixed
- https://bugs.webkit.org/show_bug.cgi?id=31896
-
- * Scripts/modules/commands/commandtest.py: Added.
- * Scripts/modules/commands/queries_unittest.py:
- * Scripts/modules/commands/upload_unittest.py: Added.
- * Scripts/modules/mock_bugzillatool.py:
- * Scripts/run-webkit-unittests:
-
-2009-11-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool should have a mark-fixed command
- https://bugs.webkit.org/show_bug.cgi?id=31853
-
- Pretty simple stuff.
-
- * Scripts/modules/commands/upload.py:
-
-2009-11-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- 'bugzilla-tool help' should only show common commands like how 'git help' does
- https://bugs.webkit.org/show_bug.cgi?id=31772
-
- I also took this opportunity to make 'help' a real Command.
- Making 'help' a real command required adding Command.tool (which we've wanted to do for a while).
-
- * Scripts/bugzilla-tool:
- - change should_show_command_help to should_show_in_main_help
- * Scripts/modules/commands/download.py:
- - Mark commands as being shown in main help or not.
- - show_in_main_help = False is not required (default is false),
- but it seemed to make the commands more self-documenting.
- * Scripts/modules/commands/queries.py: ditto
- * Scripts/modules/commands/queues.py: ditto
- * Scripts/modules/commands/upload.py: ditto
- * Scripts/modules/multicommandtool.py:
- - Make Command hold a pointer to tool in self.tool. Most Command
- subclasses do not take advantage of this yet, but it was required
- for HelpCommand to be able to reach the tool from _help_epilog().
- - Move MultiCommandTool._standalone_help_for_command to Command.standalone_help
- - Move MultiCommandTool._help_epilog to Command._help_epilog
- - Move "help" logic into HelpCommand.execute()
- - Change should_show_command_help to should_show_in_main_help and add a default implementation.
- * Scripts/modules/multicommandtool_unittest.py:
- - Test hiding of Commands in --help, and that all commands are shown in 'help --all-commands'
-
-2009-11-25 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Patch by Mark Rowe.
-
- The buildbots are failing on Windows because when they were upgraded
- to 4.0.4, Apple Application Support was not in their path. Add it to
- the path to fix the buildots.
-
- * Scripts/webkitdirs.pm:
-
-2009-11-25 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by David Kilzer.
-
- run-webkit-tests doesn't accept directories/files with --skipped=only parameter
- https://bugs.webkit.org/show_bug.cgi?id=31799
-
- * Scripts/run-webkit-tests: Fixed.
-
-2009-11-25 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Change run_command to give back stderr by default
- https://bugs.webkit.org/show_bug.cgi?id=31734
-
- Change run_command to give back stderr by default.
- Set run_commands's 'svn-create-patch' calling to put only the stdout into the patches.
- Change the related unittest call.
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-11-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Centralize required argument parsing in Command
- https://bugs.webkit.org/show_bug.cgi?id=31872
-
- * Scripts/modules/commands/download.py: remove custom required arg message.
- * Scripts/modules/commands/upload.py: ditto.
- * Scripts/modules/multicommandtool.py:
- - Add _parse_required_arguments.
- - Pass program name off to OptionParser.
- - Add name() for access to tool name.
- - Add check_arguments_and_execute and make it return a return code.
- - Replace a couple uses of + with %.
- * Scripts/modules/multicommandtool_unittest.py: test _parse_required_arguments
-
-2009-11-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Abstract out capturing stdout/stderr into a new OutputCapture class for re-use among the various unit tests.
- https://bugs.webkit.org/show_bug.cgi?id=31870
-
- * Scripts/modules/commands/queries_unittest.py: Use the new class.
- * Scripts/modules/multicommandtool_unittest.py: Ditto.
- * Scripts/modules/outputcapture.py: Added.
-
-2009-11-24 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=31444
-
- * Scripts/build-webkit:
-
-2009-11-24 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Changes the way 3D_RENDERING and ACCELERATED_COMPOSITING related tests are excluded
- https://bugs.webkit.org/show_bug.cgi?id=27314
-
- Now the script allows the directories with these tests to be included on all
- platforms but Mac, where they behave the same as always. For all other platforms
- the tests need to be excluded using the Skipped files, which is currently done
- for all platforms (including win since we're not turned on yet)
-
- * Scripts/webkitdirs.pm:
-
-2009-11-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queries_unittest.py should test command output
- https://bugs.webkit.org/show_bug.cgi?id=31845
-
- * Scripts/modules/commands/queries_unittest.py:
- - Capture stdout and stderr and compare with expected strings.
-
-2009-11-24 Simon Fraser <simon.fraser@apple.com>
-
- No Review.
-
- Fix spelling error ("depenedencies").
-
- * Scripts/build-webkit:
-
-2009-11-24 Mark Rowe <mrowe@apple.com>
-
- Land the configuration that includes the two debug GTK Linux builders.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-11-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/31840> bisect-builds broke after r50080
-
- Reviewed by Dan Bernstein.
-
- * Scripts/bisect-builds:
- (mountAndRunNightly): Switched back to using backticks to run
- the hdiutil command since exec() will terminate the existing
- script, which is not what we want. Store the output of
- File::Spec->devnull() in a variable for use in the hdiutil
- detach commands.
-
-2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Include "config.h" to meet Coding Style Guidelines
- https://bugs.webkit.org/show_bug.cgi?id=31792
-
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp:
- * DumpRenderTree/qt/jsobjects.cpp:
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
-
-2009-11-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Oliver Hunt.
-
- Implement new required function to pass test we used to pass. This
- change is required since r51294.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
-
-2009-11-23 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT: dumpBackForwardList() does not work properly with non-file URLs.
- https://bugs.webkit.org/show_bug.cgi?id=31775
-
- LayoutTestController::dumpBackForwardList() should work with local URLs
- as well as with normal URLs (in http tests for instance).
- Currently it does not output the latter properly.
-
- Unskip a bunch of passing http/navigation tests.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::dumpHistoryItem):
-
-2009-11-22 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- ARIA: support aria-flowto
- https://bugs.webkit.org/show_bug.cgi?id=31762
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (ariaFlowToElementAtIndexCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
-
-2009-11-22 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] fast/history/back-forward-reset-after-error-handling.html failing due to WorkQueue not being un-frozen
- https://bugs.webkit.org/show_bug.cgi?id=31638
-
- Unfreeze WorkQueue after each test execution.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-11-22 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Adam Barth.
-
- [Qt] DumpRenderTree should explicitly ignore any SSL certificate errors
- for localhost and 127.0.0.1.
- https://bugs.webkit.org/show_bug.cgi?id=31783
-
- Unskip the http/tests/ssl/verify-ssl-enabled.php test, which is passing now.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::NetworkAccessManager::NetworkAccessManager):
- (WebCore::NetworkAccessManager::sslErrorsEncountered):
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2009-11-22 Chris Evans <cevans@chromium.org>
-
- Reviewed by Adam Barth.
-
- Disable access to file:/// directory listings
- https://bugs.webkit.org/show_bug.cgi?id=31329
-
- Implemented setAllowUniversalAccessFromFileURLs to support testing of
- file URL security.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAllowUniversalAccessFromFileURLsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
-
-2009-11-22 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Fix the timeout of fast/frames/frame-navigation.html
- https://bugs.webkit.org/show_bug.cgi?id=31638
-
- The test is timeouting, because it uses the WorkQueue to load a document in one
- of the child frames and once the loading is finished, the DRT does not dump the
- tree. This is because it waits for the QWebFrame::loadFinished() signal from
- the main frame, while it should connect to QWebPage::loadFinished().
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2009-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool --help spews way too much text
- https://bugs.webkit.org/show_bug.cgi?id=31771
-
- * Scripts/bugzilla-tool:
- - Remove self.cached_scm initialization hack.
- * Scripts/modules/buildbot.py:
- - Make default_host accessible to callers.
- * Scripts/modules/commands/download.py:
- - Phrase help for all commands consistently and remove spurious help text punctuation.
- * Scripts/modules/commands/queries.py: Ditto.
- * Scripts/modules/commands/queues.py: Ditto.
- * Scripts/modules/commands/upload.py: Ditto.
- * Scripts/modules/multicommandtool.py:
- - Add HelpPrintingOptionParser.format_epilog to replace
- NonWrappingEpilogIndentedHelpFormatter and allow us to lazily initialize
- per-command help (thus removing the need for the cached_scm hack in BugzillaTool).
- - Make --help only show a list of commands like "svn help" and "git help" do --
- previously --help was listing all commands and options.
- - Sort list of commands alphabetically.
-
-2009-11-21 Eric Seidel <eric@webkit.org>
-
- No review. Fixing a typo from the previous patch for bug 31767.
-
- AbstractQueue.run_bugzilla_tool throws an exception
- https://bugs.webkit.org/show_bug.cgi?id=31769
-
- * Scripts/modules/commands/queues.py:
-
-2009-11-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue fails to run with "permissions error" due to bad bugzilla-tool path
- https://bugs.webkit.org/show_bug.cgi?id=31767
-
- What we really want to test is BugzillaTool.path() instead of TrivialTool.path().
- Since we don't have a good way to test BugzillaTool pieces, I've
- left out a test for now.
-
- * Scripts/bugzilla-tool:
- - Add a path() implementation to expose bugzilla-tool's __file__ path to commit-queue.
- * Scripts/modules/commands/queues.py:
- - Use tool.path() instead of __file__.
- * Scripts/modules/multicommandtool.py:
- - Add a new path() method to MultiComandTool.
- * Scripts/modules/multicommandtool_unittest.py:
- - Provide a path() method. Little point in testing this mock implementation.
-
-2009-11-21 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. Turns out I was testing the wrong copy of
- WebKitTools.
-
- * Scripts/modules/commands/download.py:
-
-2009-11-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Convert check-style to use LandingSequence
- https://bugs.webkit.org/show_bug.cgi?id=31763
-
- Instead of manipulating the working copy by hand, we should use the
- LandingSequence in CheckStyle. This will make this code eaiser to
- test.
-
- * Scripts/modules/commands/download.py:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Unit test query commands
- https://bugs.webkit.org/show_bug.cgi?id=31755
-
- These tests are pretty rough, but hopefully they'll grow.
-
- * Scripts/modules/commands/queries_unittest.py: Added.
- * Scripts/modules/mock_bugzillatool.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Fix a bunch of unit test regressions from our recent bugzilla-toll hacking
- https://bugs.webkit.org/show_bug.cgi?id=31758
-
- * Scripts/modules/multicommandtool.py:
- - Allow passing of explicit commands to MultiCommandTool.__init__
- * Scripts/modules/multicommandtool_unittest.py:
- - Use new Command.name naming system.
- - Test Command auto-discovery.
- * Scripts/modules/workqueue.py:
- - bug_id no longer exists, use patch['bug_id'] instead.
- * Scripts/modules/workqueue_unittest.py:
- - WorkQueues require names now.
- - should_proceed_with_work_item must return a patch object.
-
-2009-11-20 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- WAI-ARIA: add support for aria-owns
- https://bugs.webkit.org/show_bug.cgi?id=31702
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (ariaOwnsElementAtIndexCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Fix exception thrown when running the commit-queue.
-
- * Scripts/modules/statusbot.py: patch is optional.
- * Scripts/modules/workqueue.py: WorkQUeue requires a name.
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach the StatusBot how to support more than just the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=31754
-
- * Scripts/modules/workqueue.py: Another typo.
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach the StatusBot how to support more than just the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=31754
-
- * Scripts/modules/commands/queues.py: Fix silly typo.
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach the StatusBot how to support more than just the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=31754
-
- * CommitQueueStatus/index.yaml:
- - Add indices required for the new queries.
- * CommitQueueStatus/queue_status.py:
- - Add a patch-status page and move update_status to update-status.
- - Only display "commit-queue" status records for the commit-queue.
- - Add support for a queue_name property on status records.
- - Fix _int_from_request to actually work.
- * CommitQueueStatus/update_status.html:
- - Add support for a queue_name on status records.
- - Remove unused list of bug ids.
- * Scripts/modules/commands/queues.py
- - Make the queues pass the patch instead of the bug_id to StatusBot.
- * Scripts/modules/statusbot.py:
- - Support passing the queue_name to the status updates.
- - Support fetching patch status with patch_status().
- * Scripts/modules/workqueue.py:
- - Pass the patch to the StatusBot instead of the bug_id.
- - Let WorkQueues have a name.
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move bugzilla-tool commands into their own file
- https://bugs.webkit.org/show_bug.cgi?id=31752
-
- This will let us write unit tests.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/commands/__init__.py: Added.
- * Scripts/modules/commands/download.py: Added.
- * Scripts/modules/commands/queries.py: Added.
- * Scripts/modules/commands/queues.py: Added.
- * Scripts/modules/commands/upload.py: Added.
- * Scripts/modules/grammar.py: Added.
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- BuildQueue should check if the tree is currently buildable
- https://bugs.webkit.org/show_bug.cgi?id=31744
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move prepare_clean_working_directory into the LandingSequence
- https://bugs.webkit.org/show_bug.cgi?id=31743
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py:
-
-2009-11-20 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- NPN_ReloadPlugins does not reload the page even if reloadPages is true.
- https://bugs.webkit.org/show_bug.cgi?id=30460
-
- Added code for calling NPN_ReloadPlugins with reloadPages true and false.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginInvoke):
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Pass the port information to the child process
- https://bugs.webkit.org/show_bug.cgi?id=31736
-
- We need to do this so the child process knows what to build!
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitport.py:
- * Scripts/modules/webkitport_unittest.py:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Support Qt port in build-queue
- https://bugs.webkit.org/show_bug.cgi?id=31733
-
- * Scripts/bugzilla-tool:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement a build-queue
- https://bugs.webkit.org/show_bug.cgi?id=31725
-
- Currently this just builds the first 10 patches in the review queue.
- We'll want to do something smarter soon.
-
- * Scripts/bugzilla-tool:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make commit-queue and style-queue show up in help
- https://bugs.webkit.org/show_bug.cgi?id=31724
-
- We need to store their names on their class to make these commands
- properly register themselves with MultiCommandTool.
-
- * Scripts/bugzilla-tool:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement bugzilla-tool build-attachment
- https://bugs.webkit.org/show_bug.cgi?id=31722
-
- This command builds an attachment from bugzilla. It leaves the built
- patch in the working copy.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py:
- * Scripts/modules/webkitlandingscripts.py:
-
-2009-11-20 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] DRT release event does not create the state correctly
- https://bugs.webkit.org/show_bug.cgi?id=31717
-
- * WebKitTools/DumpRenderTree/gtk/EventSender.cpp:
-
-2009-11-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- MultiCommandTool should find Command objects automatically instead of with a manual list
- https://bugs.webkit.org/show_bug.cgi?id=31710
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/multicommandtool.py:
- - Use some wild python-fu to crawl all the known subclasses of Command.
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. Added missing import.
-
- * Scripts/bugzilla-tool:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Unreviewed "build" fix. I failed to update LandingSequence.test
- properly.
-
- * Scripts/modules/landingsequence.py:
-
-2009-11-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Create LandingSequence as the all-sing, all-dance landing class
- https://bugs.webkit.org/show_bug.cgi?id=31709
-
- Client can inherit from this class to carefully control exactly which
- steps they wish to have happen in the landing sequence.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/landingsequence.py: Added.
- * Scripts/modules/webkitlandingscripts.py: Added.
-
-2009-11-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Abstract AbstractPatchProcessingCommand from AbstractPatchLandingCommand
- https://bugs.webkit.org/show_bug.cgi?id=31707
-
- This is to help when we implement build-attachment.
-
- * Scripts/bugzilla-tool:
-
-2009-11-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Support Qt port in bugzilla-tool
- https://bugs.webkit.org/show_bug.cgi?id=31701
-
- Now we support building with Qt!
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/webkitport.py: Added.
- * Scripts/modules/webkitport_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-11-19 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove inserting stderr into patch in bugzilla-tool
- https://bugs.webkit.org/show_bug.cgi?id=29914
-
- Modify SCM python module's run_command function to avoid return of stderr
- by default, so stderr won't be inserted into the patches.
- Modify the related unit test.
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs per-command help
- https://bugs.webkit.org/show_bug.cgi?id=31697
-
- Added support for "bugzilla-tool help command-name"
- and a unit test to make sure it works.
-
- * Scripts/modules/multicommandtool.py:
- * Scripts/modules/multicommandtool_unittest.py:
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move MultiCommandTool and Command into a separate file and add some basic unit tests
- https://bugs.webkit.org/show_bug.cgi?id=31695
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/multicommandtool.py: Added.
- * Scripts/modules/multicommandtool_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- No review, just adding a FIXME.
-
- Split out command parsing and help printing from BugzillaTool
- https://bugs.webkit.org/show_bug.cgi?id=31688
-
- * Scripts/bugzilla-tool: Add an extra comment about current design failures.
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split out command parsing and help printing from BugzillaTool
- https://bugs.webkit.org/show_bug.cgi?id=31688
-
- * Scripts/bugzilla-tool:
- - Add new MultiCommandTool class to contain option parsing and help printing logic.
- - Rename private methods to use _ pattern.
- - MultiCommandTool has two abstract methods should_show_command_help and should_execute_command.
- -
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Re-factor help printing to use modern python idioms
- https://bugs.webkit.org/show_bug.cgi?id=31685
-
- * Scripts/bugzilla-tool:
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- commit-queue empty queue logs twice
- https://bugs.webkit.org/show_bug.cgi?id=31679
-
- * Scripts/bugzilla-tool:
-
-2009-11-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- bugzilla-tool's reviewer/committer rejection message should be clearer
- https://bugs.webkit.org/show_bug.cgi?id=31126
-
- Add more explanatory prose to bugzilla-tool's flag permission rejection message.
-
- * Scripts/modules/bugzilla.py:
-
-2009-11-19 Eric Z. Ayers <zundel@google.com>
-
- Reviewed by Pavel Feldman.
-
- Forces a WM_PAINT event on calling layoutTestController.display()
- in order to enable the timeline-paint.html test on Windows.
- ::UpdateWindow() does not force an event becaue the window is
- not visible.
-
- https://bugs.webkit.org/show_bug.cgi?id=31402
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (displayWebView):
-
-2009-11-19 Michelangelo De Simone <michelangelo@webkit.org>
-
- No review needed.
-
- Added myself to committers list.
-
- * Scripts/modules/committers.py:
-
-2009-11-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Bugzilla-tool command classes should match command names
- https://bugs.webkit.org/show_bug.cgi?id=31666
-
- I renamed all the commands except CommitMessageForCurrentDiff because
- the new name would conflict with an existing class.
-
- * Scripts/bugzilla-tool:
-
-2009-11-19 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Gustavo Noronha Silva.
-
- Web Inspector: Implement "show inspector" in WebKit GTK
- API and enable console tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=31669
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::showWebInspector):
-
-2009-11-19 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Minor refactoring + more documentation.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::clearHistory):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-11-19 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Ignore websocket tests when --no-http is specified.
- https://bugs.webkit.org/show_bug.cgi?id=31662
-
- * Scripts/run-webkit-tests:
-
-2009-11-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Normalize ' and " in bugzilla-tool
- https://bugs.webkit.org/show_bug.cgi?id=31655
-
- We decided " is better than ' and we should be consistent.
-
- * Scripts/bugzilla-tool:
-
-2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Remove support for Qt v4.3 or older versions
- https://bugs.webkit.org/show_bug.cgi?id=29469
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
-
-2009-11-18 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- GitTest.test_create_binary_patch fails if /tmp is symlink
- https://bugs.webkit.org/show_bug.cgi?id=31536
-
- * Scripts/modules/scm_unittest.py:
-
-2009-11-18 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Darin Adler.
-
- Configuration for Chromium Build Slaves.
-
- https://bugs.webkit.org/show_bug.cgi?id=31442
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-11-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- workqueue.py results in totally broken commit-queue UI
- https://bugs.webkit.org/show_bug.cgi?id=31645
-
- * Scripts/bugzilla-tool:
- - Remove unneeded use of PatchCollection.
- - Grab a new copy of the cq'd patches every run of the queue.
-
-2009-11-18 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Make the Mac Geolocation API async.
-
- Update DRT to use the new async Mac Geolocation API.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForGeolocationRequestFromOrigin:frame:listener:]):
-
-2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add and option to toggle HTML5 datalist support to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=31599
-
- * Scripts/build-webkit:
-
-2009-11-18 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- Enable wx plugin support using the Windows implementation as a base.
-
- https://bugs.webkit.org/show_bug.cgi?id=31636
-
- * wx/build/settings.py:
-
-2009-11-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Change the initialization order so that the controllers
- will be created before exporting them to the JS DOM window.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2009-11-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Fix a code copy and paste error. m_page should be page.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::createWindow):
-
-2009-11-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <http://webkit.org/b/31603> WebSocket server is confused if WebKit tests run from within /tmp on Mac OS X
-
- * pywebsocket/mod_pywebsocket/dispatch.py: Use os.path.realpath as it returns the canonical path of a file.
- This prevents symlinks from confusing the descendant check.
-
-2009-11-17 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <http://webkit.org/b/31602> Failing to start the WebSocket server shouldn’t terminate entire test run
-
- If the WebSocket server fails to start have DRT load an error page in place of tests that require the
- server to be up rather than having run-webkit-tests abort immediately.
-
- * Scripts/run-webkit-tests:
-
-2009-11-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- commit-queue is failing to set reviewer in ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=31592
-
- * Scripts/bugzilla-tool: Clarify the "applying" log message.
- * Scripts/modules/bugzilla.py:
- - Add a new _validate_committer_and_reviewer function as a
- temporary solution until we can make a real Attachment object
- which knows how to fill in its committer/reviewer fields automatically.
-
-2009-11-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed buildbot fix.
-
- Revert part of earlier patch and add comment, as it
- was causing timeouts on the buildbot.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::notifyDone):
-
-2009-11-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Make the timeout 15 sec as for the other DRT's and make
- it print out the same output when a test timeout.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::timerEvent):
-
-2009-11-17 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Timothy Hatcher.
-
- Fixed typos in comments.
-
- * Scripts/modules/committers.py:
-
-2009-11-17 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Web Inspector: Make DRT show web inspector for tests in inspector/ folder.
- - Updated DRT to show/close inspector for all tests under /inspector
- - Introduced LayoutTestController::setTimelineProfilingEnabled and
- WebInspector::setTimelineProfilingEnabled beside setJavaScriptProfilingEnabled
- - Removed reload on each inspector test
- - Renamed fast/inspector to fast/inspector-support in order not to trigger
- inspector for those.
- - Reimplemented timeline tests in order to get rid of reload there.
- - Moved tests that don't require harness into the fast group.
-
- https://bugs.webkit.org/show_bug.cgi?id=31472
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setTimelineProfilingEnabledCallback):
- (closeWebInspectorCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (shouldOpenWebInspector):
- (runTest):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setTimelineProfilingEnabled):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (shouldOpenWebInspector):
- (runTest):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setTimelineProfilingEnabled):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldOpenWebInspector):
- (runTest):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setTimelineProfilingEnabled):
-
-2009-11-17 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Incorrect use of JavaScriptCore API in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=31577
-
- Return undefined rather than a literal null.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (setSelectedTextRangeCallback):
- (incrementCallback):
- (decrementCallback):
- (showMenuCallback):
-
-2009-11-16 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- AX: aria-labelledby duplicates some of its WAI-ARIA label
- https://bugs.webkit.org/show_bug.cgi?id=31565
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (titleUIElementCallback):
- (getIsValidCallback):
- (AccessibilityUIElement::getJSClass):
-
-2009-11-16 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- r50942 broke output from created windows. Make the
- m_enableTextOutput a member of the DRT and not the
- WebPage.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::javaScriptAlert):
- (WebCore::WebPage::javaScriptConsoleMessage):
- (WebCore::WebPage::javaScriptConfirm):
- (WebCore::WebPage::javaScriptPrompt):
- (WebCore::WebPage::acceptNavigationRequest):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTree.h:
- (WebCore::DumpRenderTree::setTextOutputEnabled):
- (WebCore::DumpRenderTree::isTextOutputEnabled):
- (WebCore::WebPage::shouldInterruptJavaScript):
- (WebCore::WebPage::isTextOutputEnabled):
- (WebCore::WebPage::setViewGeometry):
-
-2009-11-16 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Gustavo Noronha Silva.
-
- Moved DumpRenderTree/gtk/TestNetscapePlugin to DumpRenderTree/unix/TestNetscapePlugin
- as the implementation is being used by at least Qt and Gtk+.
-
- Update buildsystems as well.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npapi.h:
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npfunctions.h:
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npruntime.h:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- * GNUmakefile.am:
-
-2009-11-16 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Disable wss until all platforms support pyOpenSSL
-
- https://bugs.webkit.org/show_bug.cgi?id=31479
-
- * Scripts/run-webkit-tests:
-
-2009-11-14 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] Implement load error pages support for Qt's DRT.
- https://bugs.webkit.org/show_bug.cgi?id=31509
-
- For now, it will not be a default feature, and layout tests
- that want to make use of this have to explicitily call
- 'handleErrorPages();' for the test source.
-
- Any of the other DumpRenderTree's (mac, win and gtk)
- support handling error pages. Qt's will be the first.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::supportsExtension):
- (WebCore::WebPage::extension):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::shouldHandleErrorPages):
- (LayoutTestController::handleErrorPages):
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename the --commit-queue flag on land-* now that the commit-queue needs no special treatment
- https://bugs.webkit.org/show_bug.cgi?id=31549
-
- Renamed --commit-queue to --non-interactive in most places
- and remove the code in land-patches which is no longer needed.
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- The commit-queue should use land-attachment
- https://bugs.webkit.org/show_bug.cgi?id=31548
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Convert CommitQueue over to PatchCollection
- https://bugs.webkit.org/show_bug.cgi?id=31547
-
- Also fixes a bug in workqueue and adds a test!
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/workqueue.py:
- * Scripts/modules/workqueue_unittest.py:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move StyleQueue over to using PatchCollection
- https://bugs.webkit.org/show_bug.cgi?id=31544
-
- That's what the class it's for.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/patchcollection.py:
- * Scripts/modules/patchcollection_unittest.py:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs a land-attachment command
- https://bugs.webkit.org/show_bug.cgi?id=31546
-
- * Scripts/bugzilla-tool:
- - Move all the logic into AbstractLandingCommand and
- add a new LandAttachment command subclass.
- - Split out _collect_patches_by_bug logging from _fetch_list_of_patches_to_land.
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move more patch-landing code into WebKitLandingScripts in preparation for land-attachment
- https://bugs.webkit.org/show_bug.cgi?id=31543
-
- Just moving code and updating the one caller to use WebKitLandingScripts instead of 'self'.
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Disable the style queue from posting to the commit queue status page.
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement PatchCollection
- https://bugs.webkit.org/show_bug.cgi?id=31541
-
- This class holds a set of patches and lets clients iterate through
- them. Optionally, clients can install a filter.
-
- * Scripts/modules/patchcollection.py: Added.
- * Scripts/modules/patchcollection_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool land-patches will close bugs with patches r=?
- https://bugs.webkit.org/show_bug.cgi?id=28230
-
- The commit-queue shouldn't close patches with outstanding reviews on them,
- even if many reviewers seem to be against multi-patch bugs.
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool check-style should work with attachment ids instead of bug ids
- https://bugs.webkit.org/show_bug.cgi?id=31540
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- WorkQueue is the only place that should know about special exit codes
- https://bugs.webkit.org/show_bug.cgi?id=31534
-
- Move LandPatchesFromBugs.handled_error to WorkQueue.exit_after_handled_error
- and add tests for handling exit codes.
- I also cleaned up workqueue_unittest.py more.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/workqueue.py:
- * Scripts/modules/workqueue_unittest.py:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Re-factor workqueue_unittest to allow for more than one test.
- https://bugs.webkit.org/show_bug.cgi?id=31535
-
- * Scripts/modules/workqueue_unittest.py:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- land-patches needs to be re-factored into smaller chunks
- https://bugs.webkit.org/show_bug.cgi?id=31532
-
- * Scripts/bugzilla-tool: fix a couple obvious typos.
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- land-patches needs to be re-factored into smaller chunks
- https://bugs.webkit.org/show_bug.cgi?id=31532
-
- The next patch will move these methods into WebKitLandingScripts.
-
- * Scripts/bugzilla-tool:
- - Split out _land_patch and _close_bug_if_no_active_patches.
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix silly copy-and-paste code. I am a terrible coder.
-
- * Scripts/modules/bugzilla.py:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement a StyleQueue
- https://bugs.webkit.org/show_bug.cgi?id=31537
-
- The first iteration of the style queue only produces output locally.
- There is also a limit of 10 patches because it's not that useful to
- iterate through the entire review queue at this point. We can remove
- the limit later.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Unit test WorkQueue
- https://bugs.webkit.org/show_bug.cgi?id=31531
-
- Adds basic unit testing for WorkQueue. Just runs through one cycle.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/statusbot.py:
- * Scripts/modules/workqueue.py:
- * Scripts/modules/workqueue_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool land-diff should know how to parse bug ids out of ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=31530
-
- * Scripts/bugzilla-tool:
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs apply-attachment
- https://bugs.webkit.org/show_bug.cgi?id=31528
-
- * Scripts/bugzilla-tool:
- - Add ApplyAttachment command.
- - Abstract applying code into WebKitApplyingScripts.
- - Rename setup_for_landing to prepare_clean_working_directory and make local_commit checking optional.
- * Scripts/modules/bugzilla.py:
- - Add fetch_attachment and bug_id_for_attachment_id.
- * Scripts/modules/bugzilla_unittest.py:
- - Add test for new parsing.
- - Fix previous parsing test which broke with Adam's check-style patch (bug 31515).
-
-2009-11-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Document check-style's use of force_clean.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move WorkQueue to its own file
- https://bugs.webkit.org/show_bug.cgi?id=31529
-
- WorkQueue and WorkQueueDelegate are separate concerns from
- bugzilla-tool. Also added a missing include to logging.py.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/logging.py:
- * Scripts/modules/workqueue.py:
-
-2009-11-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move OutputTee to logging.py.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/logging.py:
-
-2009-11-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Refactor bugzilla-tool to allow for multiple queues
- https://bugs.webkit.org/show_bug.cgi?id=31513
-
- Divide the commit queue class into three class to make creating
- additional queues easier.
-
- * Scripts/bugzilla-tool:
-
-2009-11-15 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- svn-apply may not handle git patches created by bugzilla-tool
- https://bugs.webkit.org/show_bug.cgi?id=31457
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-11-15 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool should post git binary diff
- https://bugs.webkit.org/show_bug.cgi?id=31458
-
- Add --binary option to Git.create_patch.
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-11-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add bugzilla-tool check-style
- https://bugs.webkit.org/show_bug.cgi?id=31515
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
-
-2009-11-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Make the Qt Linux only --valgrind feature, suppress errors
- defined in the SuppressedValgrindErrors file.
-
- * Scripts/run-webkit-tests:
-
-2009-11-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Set the locale to C and not to the current one in use on the system.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-11-13 Adam Roben <aroben@apple.com>
-
- Add support for
- http/tests/security/isolatedWorld/didClearWindowObject.html
-
- Fixes <http://webkit.org/b/31124> Tell the WebFrameLoadDelegate when
- window objects in isolated worlds are cleared
-
- Reviewed by Dave Hyatt.
-
- * DumpRenderTree/mac/DumpRenderTreeMac.h: Declared worldIDForWorld.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):
- Added. Moved code here from -webView:didClearWindowObject:forFrame:.
- (-[FrameLoadDelegate didClearWindowObjectForFrame:inIsolatedWorld:]):
- Added. Sets a __worldID property on the global object whose value is
- the ID of this world.
- (-[FrameLoadDelegate webView:didClearWindowObjectForFrame:inScriptWorld:]):
- Respond to this new delegate callback by calling through to one of the
- above new methods.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (worldMap): Added. Returns a HashMap containing all the worlds we've
- created.
- (worldIDForWorld): Added. Returns the ID for this world, or 0 if we
- haven't kept track of this world.
- (LayoutTestController::evaluateScriptInIsolatedWorld): Use worldMap()
- instead of declaring our own.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Declared worldIDForWorld.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didClearWindowObject): Moved code from hear to
- didClearWindowObjectForFrameInStandardWorld.
- (FrameLoadDelegate::didClearWindowObjectForFrameInScriptWorld):
- Respond to this new delegate callback by calling through to one of the
- below new methods.
- (FrameLoadDelegate::didClearWindowObjectForFrameInIsolatedWorld):
- Added. Sets a __worldID property on the gobal object whose value is
- the ID of this world.
- (FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld):
- Added. Moved code here from didClearWindowObject.
-
- * DumpRenderTree/win/FrameLoadDelegate.h: Added the
- didClearWindowObjectForFrame* functions.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (worldMap): Added. Returns a HashMap containing all the worlds we've
- created.
- (worldIDForWorld): Added. Returns the ID of this world, or 0 if we
- haven't kept track of this world.
- (LayoutTestController::evaluateScriptInIsolatedWorld): Use worldMap()
- instead of declaring our own.
-
-2009-11-13 Adam Roben <aroben@apple.com>
-
- Finish replacing worldIDs with world objects
-
- The only remaining use of worldIDs was in a method only used by DRT
- for the isolated worlds tests.
-
- Fixes <http://webkit.org/b/31414> Replace worldIDs with world objects
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- Updated for changes to WebFrame. Now holds the map of worldID -> world
- at this level instead of making WebKit do it.
-
-2009-11-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Ensure the DRT does not output anything until first test is run
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2009-11-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Clear the undo stack in before each new test run.
-
- Locally fixes 3 incorrect layouts, 9 timeouts and 7 crashes.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-11-13 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add WebKitUsesPageCachePreferenceKey overriding support to DRT's LayoutTestController.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2009-11-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Update committers.py based on svn records
- https://bugs.webkit.org/show_bug.cgi?id=31366
-
- This list was generated using validate-committer-lists from
- https://bugs.webkit.org/show_bug.cgi?id=30970
- and makes committers.py current for committers who have
- committed in the last 3 years.
-
- * Scripts/modules/committers.py:
-
-2009-11-12 Anantanarayanan G Iyengar <ananta@chromium.org>
-
- Reviewed by Adam Barth.
-
- The document-open.html test was flaky at times. The test invokes the layout test plugin
- which in its destroy stream handler opens a new document. This basically tears down the
- stream and the associated plugin instance. The pluginLog function in the layout test
- plugin attempts to retrieve the window script object on a torn down plugin instance
- which crashed consistently on windows in the debugger. The functions which issue
- these logs already have a valid window script object. We now have variants of the pluginLog
- function which take in a window script object with and without variable arguments.
-
- https://bugs.webkit.org/show_bug.cgi?id=31067
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginLogWithWindowObject):
- (pluginLogWithWindowObjectVariableArgs):
- (pluginLog):
- (notifyTestCompletion):
- (testDocumentOpen):
- (testWindowOpen):
-
-2009-11-12 Joanmarie Diggs <joanmarie.diggs@gmail.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- https://bugs.webkit.org/show_bug.cgi?id=30997
- [Gtk] Implemment AtkDocument
-
- Added testing support.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- * DumpRenderTree/AccessibilityUIElement.h:
- (getDocumentEncodingCallback):
- (getDocumentURICallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::documentEncoding):
- (AccessibilityUIElement::documentURI):
-
-2009-11-12 Adam Roben <aroben@apple.com>
-
- Replace worldIDs with world objects
-
- Part of <http://webkit.org/b/31414> Implement new SPI for dealing with
- user scripts/stylesheets and isolated worlds
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- Changed these functions to create a new WebJSWorld each time they're
- called and to pass that world to WebKit.
-
-2009-11-11 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- need to implement aria tree roles
- https://bugs.webkit.org/show_bug.cgi?id=31284
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (disclosedRowAtIndexCallback):
- (selectedRowAtIndexCallback):
- (isEqualCallback):
- (isAttributeSettableCallback):
- (isActionSupportedCallback):
- (disclosedByRowCallback):
- (hierarchicalLevelCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement::isEqual):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::hierarchicalLevel):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::disclosedByRow):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::titleUIElement):
- (AccessibilityUIElement::parentElement):
- (AccessibilityUIElement::disclosedByRow):
- (AccessibilityUIElement::hierarchicalLevel):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::hierarchicalLevel):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::disclosedByRow):
-
-2009-11-11 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- svn-apply can not handle git binary diffs
- https://bugs.webkit.org/show_bug.cgi?id=26830
-
- Support "literal" type git binary diffs.
-
- * Scripts/VCSUtils.pm:
- * Scripts/modules/scm_unittest.py:
- * Scripts/svn-apply:
-
-2009-11-11 Dmitry Titov <dimich@chromium.org>
-
- Not reviewed, removing duplicate entry for myself in committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-11-11 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler and Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=31200
- Tests in http/tests/security/mixedContent start to fail when new tests are added
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (dumpRenderTree): Added a workaround for Tiger bug.
-
-2009-11-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Jan Alonzo.
-
- Create, and display a window for the inspector, for inspector
- tests.
-
- Need to also show/hide the inspector window to avoid having
- problems with code assuming it is realized
- https://bugs.webkit.org/show_bug.cgi?id=31347
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webInspectorShowWindow):
- (webInspectorCloseWindow):
- (webInspectorInspectWebView):
- (createWebView):
-
-2009-11-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed Qt buildbot fix.
-
- My previous fix was wrong, so revert that change and fix it by
- returning when the document of the frame has no document element.
- Idea is borrowed from mac and win DRT.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dumpFramesAsText):
-
-2009-11-11 Eric Seidel <eric@webkit.org>
-
- Reviewed byg Kenneth Rohde Christiansen.
-
- Update Kenneth's committer record to include the email he
- uses on lists.webkit.org.
-
- * Scripts/modules/committers.py:
-
-2009-11-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Gustavo Noronha Silva.
-
- Several committers use separate email addresses for bugzilla and svn.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=31364
-
- Update records for existing committers to include email addresses
- used in svn.webkit.org and lists.webkit.org.
- Most committers use the same email address in all 3 places, but some use
- separate addresses. committers.py needs record of each of these addresses.
-
- * Scripts/modules/committers.py:
-
-2009-11-11 Eric Seidel <eric@webkit.org>
-
- No review, adding second email address for an existing committer.
-
- Add Yong Li's second bugzilla account to his committer record.
- See: https://bugs.webkit.org/show_bug.cgi?id=27371#c27
-
- * Scripts/modules/committers.py:
-
-2009-11-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- If the frame has no innerText don't append it, and
- do not add a newline which breaks some cross platform
- results.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dumpFramesAsText):
-
-2009-11-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Implement missing functionality in the Gtk/Qt TestNetscapePlugin.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_instance):
- (webkit_test_plugin_destroy_stream):
-
-2009-11-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Implement the functionality needed by plugins/window-open.html
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_window):
-
-2009-11-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Force -graphicssystem raster and -style windows when running DRT
-
- * DumpRenderTree/qt/main.cpp:
- * Scripts/run-webkit-tests:
-
-2009-11-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Compute correct library paths for Qt
-
- * Scripts/webkitdirs.pm:
-
-2009-11-10 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- <http://webkit.org/b/31200> Tests in http/tests/security/mixedContent start to fail when new tests are added
-
- The first request to an HTTPS URL results in didFailProvisionalLoadWithError being called with an error
- about the validity of the self-signed certificates used in the regression tests. We would then add the
- host to the ignore list for SSL certificate errors and retry the request. If this happened during a test
- that had enabled frame load delegate logging this would result in extra log messages being generated,
- causing the test to fail.
-
- We address this by explicitly ignoring SSL certificate errors for localhost and 127.0.0.1 before running any
- tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
-
-2009-11-10 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Remove obsolete scrollbar policy settings from DRT constructor.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2009-11-10 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- [GTK] Remove WebSocket configuration from WebKitWebSettings
- https://bugs.webkit.org/show_bug.cgi?id=31244
-
- Follow-up of r50724. Don't set the enable-web-socket property
- anymore.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-11-10 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Rename 3D Canvas related classes to use WebGL prefix
- https://bugs.webkit.org/show_bug.cgi?id=29095
-
- Checkin new version of do-webcore-rename used to do the WebGL type rename,
- and upate webkitdirs script to new method of testing for WebGL.
-
- * Scripts/do-webcore-rename:
- * Scripts/webkitdirs.pm:
-
-2009-11-09 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Geoff Garen.
-
- Make do-webcore-rename work with git.
-
- * Scripts/do-webcore-rename:
-
-2009-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- Adding Kenneth to the reviewers list.
-
- * Scripts/modules/committers.py:
-
-2009-11-09 Martin Robinson <martin.james.robinson@gmail.com>
-
- Reviewed by Jan Alonzo.
-
- [GTK] Expose Page::tabKeyCyclesThroughElements in the API
- https://bugs.webkit.org/show_bug.cgi?id=30482
-
- LayoutTestControllerGtk now uses the exposed
- Page::tabKeyCyclesThroughElements API
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setTabKeyCyclesThroughElements):
-
-2009-11-08 Shu Chang <Chang.Shu@nokia.com>
-
- Reviewed by Holger Freyther.
-
- [Qt] Added support for key code 8 (backspace) in EventSenderQt.
- This helps to pass the test case below. Also replaced hardcoded
- code numbers with defined constants.
- https://bugs.webkit.org/show_bug.cgi?id=31185
-
- Test: editing/undo/undo-deleteWord.html
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown):
-
-2009-11-07 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Qt] [DRT] Fix wrong logic in LayoutTestController processWork
- https://bugs.webkit.org/show_bug.cgi?id=31164
-
- Fixed wrong logic to assume WorkQueue is done in QT's DRT.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::processWork):
-
-2009-11-05 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Qt][DRT] Replace queueScript by queueNonLoadingScript and queueLoadingScript method
- https://bugs.webkit.org/show_bug.cgi?id=31158
-
- By invoking a script queue'd by queueScript(), 'true' was beeing returned
- always, which from WorkQueue prospective means that a load has been started
- and the queue processing should stop and wait for the load to finish.
- Spinning it off into a loading and a non-loading variants was the solution
- adopted by Mac's DRT to work around this problem. The former keeps returning
- 'true' while the later executes the script synchronously and returns 'false'
- making it possible to the WorkQueue to proceed right away.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::processWork):
- (LayoutTestController::queueLoadingScript):
- (LayoutTestController::queueNonLoadingScript):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/WorkQueueItem.h:
- (LoadingScriptItem::LoadingScriptItem):
- (LoadingScriptItem::invoke):
- (NonLoadingScriptItem::NonLoadingScriptItem):
- (NonLoadingScriptItem::invoke):
-
-2009-11-07 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Cameron Zwarich.
-
- Invoke prepare-ChangeLog via an absolute path rather than assuming it can be found in PATH.
-
- * Scripts/commit-log-editor:
-
-2009-11-07 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix <https://bugs.webkit.org/show_bug.cgi?id=28168>.
- commit-log-editor does not support all the email address configurations that prepare-Changelog supports
-
- Move logic for determining the name and email address to use in a ChangeLog entry from
- prepare-ChangeLog to VCSUtils so that commit-log-editor can use it. It wants to check
- whether the author of the patch matches committer, and therefore needs access to the
- email address that would be used in a ChangeLog entry.
-
- Based on a patch by Pierre d'Herbemont.
-
- * Scripts/VCSUtils.pm:
- * Scripts/commit-log-editor:
- * Scripts/prepare-ChangeLog:
- * Scripts/webkitdirs.pm:
-
-2009-11-06 Anantanarayanan G Iyengar <ananta@chromium.org>
-
- Reviewed by Adam Barth.
-
- Added functionality to the layout test plugin to invoke document.open and
- window.open with default arguments. The associated webkit bug is
- https://bugs.webkit.org/show_bug.cgi?id=31067, which affects Chromium. Basically
- window.open and document.open calls issued by NPAPI plugins via NPN_Invoke don't
- work in Chromium (V8) if there is no calling javascript context. To achieve this
- effect we invoke these functions in the layout test plugin in the NPP_SetWindow
- for the window.open test case and in NPP_DestroyStream for the document.open test case.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (testDocumentOpen):
- (testWindowOpen):
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_SetWindow):
- (NPP_DestroyStream):
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New):
- (NPP_SetWindow):
- (NPP_NewStream):
- (NPP_DestroyStream):
-
-2009-11-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool crashed with exception
- https://bugs.webkit.org/show_bug.cgi?id=31092
-
- * Scripts/modules/bugzilla.py: Change a ',' to a '%' to fix the error.
-
-2009-11-04 Eric Seidel <eric@webkit.org>
-
- No review, just add a line which got left out of the patch uploaded for commit.
-
- commit-queue is crashing when trying to reject patches after unknown failures
- https://bugs.webkit.org/show_bug.cgi?id=31091
-
- * Scripts/bugzilla-tool: Set bug_log = None after closing to we don't re-close and crash.
-
-2009-11-04 Adam Roben <aroben@apple.com>
-
- Remove bogus else clause in bugzilla-tool
-
- Fixes <http://webkit.org/b/31125> REGRESSION (r47121): bugzilla-tool
- create-bug raises exception after entering bug description
-
- Reviewed by David Kilzer.
-
- * Scripts/bugzilla-tool:
- (CreateBug): else clauses are only hit if no exception is raised, so
- it makes no sense to try to re-raise the exception in an else clause.
- The exception will automatically be re-raised if it doesn't match any
- of the except clauses, so we don't have to do anything special here at
- all to get the desired behavior.
-
-2009-11-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- svn-apply's fixChangeLogPatch function seems broken
- https://bugs.webkit.org/show_bug.cgi?id=30683
-
- Update fixChangeLogPatch to be able to handle patches which
- don't start at line 1.
- Add unit tests for svn-apply to scm_unittest.py.
-
- * Scripts/VCSUtils.pm:
- * Scripts/modules/scm_unittest.py:
-
-2009-11-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Need to implement ARIA role="combobox"
- https://bugs.webkit.org/show_bug.cgi?id=31096
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (showMenuCallback):
- (getIsExpandedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::showMenu):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::showMenu):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isSelected):
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::showMenu):
-
-2009-11-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue is crashing when trying to reject patches after unknown failures
- https://bugs.webkit.org/show_bug.cgi?id=31091
-
- * Scripts/bugzilla-tool:
- - patch['id'] was a copy/paste mistake. This code has no 'patch' variable
- so we have to find out what the current patch is by asking bugzilla again.
- - Discovered that this code was also leaking file descriptors, so fixed that.
-
-2009-11-04 Adam Roben <aroben@apple.com>
-
- Make run-webkit-tests work for the Debug_Internal Windows
- configuration
-
- In Debug_Internal, DumpRenderTree.exe and ImageDiff.exe have no _debug
- suffix.
-
- Fixes <http://webkit.org/b/31123>.
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-webkit-tests: Don't add the _debug suffix in
- Debug_Internal, either.
-
-2009-11-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- committers.py needs a way to store non-bugzilla email addresses
- https://bugs.webkit.org/show_bug.cgi?id=31037
-
- Make Committer and Reviewer constructors take a single email or a list of emails.
- Change committer_by_bugzilla_email functions to committer_by_email to support lookup by any email.
- Expose reviewers(), used by validate-committer-lists on bug 30970.
-
- * Scripts/modules/committers.py:
- * Scripts/modules/committers_unittest.py: Added tests for the new code.
-
-2009-11-03 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by David Levin.
-
- Start/Stop Web Socket and Web Socket Secure servers for layout tests.
- https://bugs.webkit.org/show_bug.cgi?id=27491
-
- The test path determination logic is changed to handle websocket and websocket/ssl cases.
- The logic for non-http (and now also non-websocket) tests is moved toward the end of the if-elsif statement.
-
- Functions to start or stop Web Socket servers are added.
-
- * Scripts/run-webkit-tests:
-
-2009-11-03 Eric Seidel <eric@webkit.org>
-
- No review, just changing wording of log message.
-
- Change log string to say "failed" instead of "rejected"
- when a commit fails due to an out of date checkout.
- This makes grepping the commit-queue log for rejected patches easier.
-
- * Scripts/bugzilla-tool:
-
-2009-11-03 Eric Seidel <eric@webkit.org>
-
- No review, adding commonly known committers missing from the file.
-
- * Scripts/modules/committers.py: Add committers found by looking at SVN records.
-
-2009-11-03 Eric Seidel <eric@webkit.org>
-
- No review, just sort-order cleanup.
-
- * Scripts/modules/committers.py: Sort committers/reviewers alphabetically.
-
-2009-11-03 Stephen White <senorblanco@chromium.org>
-
- (Unreviewed).
-
- Add myself to committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-11-03 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollviier.
-
- Add packaging scripts for Debian-based Linux distros.
-
- https://bugs.webkit.org/show_bug.cgi?id=31075
-
- * wx/packaging/build-debian-installer.py: Added.
- * wx/packaging/debian: Added.
-
-2009-11-03 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson and Beth Dakin.
-
- https://bugs.webkit.org/show_bug.cgi?id=31070
-
- Added an 'ondestroy' parameter to the test plug-in. When the plug-in is
- destroyed, it executes the value of the 'ondestroy' parameter as a
- script.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginAllocate): Initialize onDestroy.
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h: Define
- onDestroy.
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New): Set onDestroy to the value of the 'ondestroy' parameter, if
- specified.
- (NPP_Destroy): Execute the value of 'ondestroy' as a script.
-
-2009-11-02 Joanmarie Diggs <joanmarie.diggs@gmail.com>
-
- Reviewed by Xan Lopez.
-
- https://bugs.webkit.org/show_bug.cgi?id=31035
- [GTK] some accessibility tests hitting assertion in debug builds
-
- Get the correct Gtk+ object before attempting to turn it into an AtkObject.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::rootElement):
-
-2009-11-02 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Support ARIA "tab" roles
- https://bugs.webkit.org/show_bug.cgi?id=30842
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
-
-2009-11-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- buildbots should use --exit-after-N-failures
- https://bugs.webkit.org/show_bug.cgi?id=30809
-
- Make the bots exit after 20 failures to prevent never-ending
- test runs where every test spends a minute crashing.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-11-01 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Turn on warnings for QtWebKit for gcc
- https://bugs.webkit.org/show_bug.cgi?id=30958
-
- * DumpRenderTree/qt/main.cpp:
- (crashHandler): Mark function NO_RETURN
-
-2009-11-01 Jessie Berlin <jberlin@webkit.org>
-
- Adding myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-30 Jon Honeycutt <jhoneycutt@apple.com>
-
- Fix an issue that Adam noticed in DRT.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::role):
- Get the length of the role text, and create a buffer dynamically.
-
-2009-10-30 Eric Seidel <eric@webkit.org>
-
- No review, rolling out r50105.
- http://trac.webkit.org/changeset/50105
-
- This commit was causing:
- https://bugs.webkit.org/show_bug.cgi?id=30869
- We'll re-implement the feature a different way.
-
- * Scripts/bugzilla-tool:
-
-2009-10-29 Jon Honeycutt <jhoneycutt@apple.com>
-
- Test for MSAA: Accessibility of headings is not correct
-
- https://bugs.webkit.org/show_bug.cgi?id=30937
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::role):
- Allow the role returned to be a BSTR.
- (AccessibilityUIElement::description):
- Fix a copy/paste error.
-
-2009-10-29 Jon Honeycutt <jhoneycutt@apple.com>
-
- Test for MSAA: Accessibility of links is wrong
-
- https://bugs.webkit.org/show_bug.cgi?id=30928
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getAccessibilityValueCallback):
- Return the accessibility value.
- (AccessibilityUIElement::getJSClass):
- Added "accessibilityValue" value.
-
- * DumpRenderTree/AccessibilityUIElement.h:
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::accessibilityValue):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::accessibilityValue):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::accessibilityValue):
- Get the object's value, and return it as a JS string.
-
-2009-10-30 Kevin Ollivier <kevino@theolliviers.com>
-
- Fix typo in command name used by wx build system.
-
- * wx/build/build_utils.py:
-
-2009-10-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Patch v1 is a dumb default name for patches
- https://bugs.webkit.org/show_bug.cgi?id=30952
-
- Let's use "Patch" instead.
-
- * Scripts/bugzilla-tool:
-
-2009-10-30 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Unreviewed trivial buildfix.
-
- [Qt] Buildfix for r50333.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2009-10-30 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Holger Freyther.
-
- [Qt] Remove qt/WorkQueue.cpp|h in favor of platform independent WorkQueue
- https://bugs.webkit.org/show_bug.cgi?id=30953
-
- DumpRenderTree/WorkQueue and DumpRenderTree/qt/WorkQueue share mostly the
- same implementation. Some Q_ASSERTs differ from ASSERTs basically. Patch
- makes qt DRT to share this implementation (as gtk and mac ports do).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/WorkQueue.cpp: Removed.
- * DumpRenderTree/qt/WorkQueue.h: Removed.
-
-2009-10-30 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed potential buildbot fix.
-
- Second try: Reset page history before running each test.
-
- Apparently the QWebHistory::clear() keeps the current page
- in history which is not what we want, so we not additionally
- sets the history capacity to 0 (forces removing everything)
- and then sets it back to its original value.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-10-30 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed potential buildbot fix.
-
- Reset page history before running each test.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2009-10-30 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak.
-
- Bug 28420 - Implement HTML5 <ruby> rendering
- (https://bugs.webkit.org/show_bug.cgi?id=28420)
-
- No new tests (no functional change).
-
- * Scripts/build-webkit:
-
-2009-10-29 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix “Undefined subroutine” errors in svn-*apply by moving the removeEOL subroutine
- from the two scripts that define it but don’t use it to the script that uses it but doesn’t
- define it.
-
- * Scripts/VCSUtils.pm:
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
-
-2009-10-29 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Use the GTK+ main loop instead of rolling our own mini-version of
- it.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- (runTest):
- (webViewLoadFinished):
-
-2009-10-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Implement the Qt version of DRT dumpBackForwardList().
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::dumpHistoryItem):
- (WebCore::DumpRenderTree::dumpBackForwardList):
-
-2009-10-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Adam Roben.
-
- Implement DRT functionality for Qt introduced in
- r28690 and r28705.
-
- - Implemented pathToLocalResource which exposes the functionality of
- converting a given unix path to the correct location on Windows.
- - Implemented a way to remove machine-dependent information from paths
- in layout test results.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::urlSuitableForTestResult):
- (WebCore::WebPage::javaScriptConsoleMessage):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::pathToLocalResource):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-10-28 Roland Steiner <rolandsteiner@chromium.org>
-
- Adding myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-28 Chris Fleizach <cfleizach@apple.com>
-
- Adding myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-28 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Jan Alonzo.
-
- [GTK] API to start inspector for a WebView
- https://bugs.webkit.org/show_bug.cgi?id=22551
-
- Use the new inspector API to implement the LayoutTestController
- interfaces used to test the inspector.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webInspectorInspectWebView):
- (createWebView):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
-
-2009-10-28 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Qt] WebFrame::counterValueForElementById must not be exposed
- https://bugs.webkit.org/show_bug.cgi?id=30882
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::counterValueForElementById):
-
-2009-10-28 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Oliver Hunt.
-
- Fix the warning:
-
- "warning: ignoring return value of 'char* getcwd(char*, size_t)',
- declared with attribute warn_unused_result".
-
- by actually checking the result. In the case it is null, an
- error has occoured, so treat it as the other fatal errors.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::initializeFonts):
-
-2009-10-27 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- Provide a way to get counter values with layoutTestContoller
- https://bugs.webkit.org/show_bug.cgi?id=30555
-
- Define layoutTestContoller.counterValueForElementById.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (counterValueForElementByIdCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::counterValueForElementById):
-
-2009-10-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Oliver Hunt.
-
- Change two methods to be internal for DRT use only.
-
- Part of [Qt] Review all new API in Qt 4.6
- https://bugs.webkit.org/show_bug.cgi?id=29843#c11
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::whiteListAccessFromOrigin):
-
-2009-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION: svn-apply exits(1) when applying a patch with a file add
- https://bugs.webkit.org/show_bug.cgi?id=30826
-
- * Scripts/svn-apply:
- - Add () around all system() calls.
- - Use the correct system() == 0 or die instead of system() or die
- - Add descriptive messages to all die statements.
-
-2009-10-27 Steve Block <steveblock@google.com>
-
- Reviewed by NOBODY.
-
- Adds steveblock@google.com to list of committers.
-
- * Scripts/modules/committers.py: Adds steveblock@google.com to list of committers.
-
-2009-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- svn-apply can exit(0) even on patch failure
- https://bugs.webkit.org/show_bug.cgi?id=29622
-
- * Scripts/svn-apply:
- - Add a bunch of "or die" statements, hopefully catching all
- possible cases where failure could still exit(0).
-
-2009-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- svn-* scripts should share code through VCSUtils.pm
- https://bugs.webkit.org/show_bug.cgi?id=30791
-
- Just moving code into a shared location.
-
- * Scripts/VCSUtils.pm:
- * Scripts/prepare-ChangeLog:
- * Scripts/resolve-ChangeLogs:
- * Scripts/svn-apply:
- * Scripts/svn-create-patch:
- * Scripts/svn-unapply:
- * Scripts/update-webkit:
-
-2009-10-27 Vadim Zeitlin <vadim@wxwidgets.org>
-
- Suppress a huge number of MSVC warnings when building wxWebKit.
-
- * wx/build/settings.py:
-
-2009-10-26 Eric Seidel <eric@webkit.org>
-
- No review, just adding Mike Belshe to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Darin Adler.
-
- Make .rc files compile on Windows without depending on MFC headers
- https://bugs.webkit.org/show_bug.cgi?id=30750
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc: Use
- windows.h instead of afxres.h because it exists even when MFC is not
- installed, and is all that's needed here.
-
- * FindSafari/FindSafari.rc: Ditto
-
-2009-10-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool post-diff should know how to mark commit-queue=?
- https://bugs.webkit.org/show_bug.cgi?id=29202
-
- * Scripts/bugzilla-tool:
- - Add --commit-queue option to post-diff, post-commits and create-bug.
- * Scripts/modules/bugzilla.py:
- - Added support for --commit-queue to add_patch_to_bug and create_bug_with_patch.
- - Added _fill_attachment_form to share code between add_patch_to_bug and create_bug_with_patch.
-
-2009-10-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool commit-queue does not notice modifications to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=30084
-
- * Scripts/bugzilla-tool:
- - Make commit-queue re-exec itself instead of using while(1).
- - Add a --is-relaunch parameter to commit-queue to bypass initialization on re-launch.
- - Add a _next_patch() method which calls exec() (and could eventually call update-webkit too).
-
-2009-10-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue will get stuck on patches if land-patches terminates unexpectedly
- https://bugs.webkit.org/show_bug.cgi?id=30634
-
- * Scripts/bugzilla-tool:
- - Add a way for land-patches to exit(2) to indicate an error, but one it has handled.
- - Make commit-queue auto cq- any patch where land-patches exited anything other than '0' or '2'.
-
-2009-10-26 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Eric Seidel.
-
- Upgrade pywebsocket to 0.4.1. This will make reusing LayoutTests/fast/js/resources easier, for example.
-
- https://bugs.webkit.org/show_bug.cgi?id=30763
-
- * pywebsocket/mod_pywebsocket/__init__.py:
- * pywebsocket/mod_pywebsocket/dispatch.py:
- * pywebsocket/mod_pywebsocket/headerparserhandler.py:
- * pywebsocket/mod_pywebsocket/standalone.py:
- * pywebsocket/setup.py:
- * pywebsocket/test/test_dispatch.py:
-
-2009-10-26 Carol Szabo <carol.szabo@nokia.com>
-
- Reviewed by David Levin.
-
- REGRESSION: 2 failures in run-webkit-unittests
- https://bugs.webkit.org/show_bug.cgi?id=30645
-
- * Scripts/modules/cpp_style_unittest.py:
- Fixed a few test scenarios which apparently lost some spaces from
- text literals.
-
-2009-10-26 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Make sure isQt() doesn't return true if --wx was passed to build-webkit.
-
- * Scripts/webkitdirs.pm:
-
-2009-10-26 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Darin Adler.
-
- Unification of using null device in perl scripts.
- https://bugs.webkit.org/show_bug.cgi?id=30572
-
- * Scripts/VCSUtils.pm:
- * Scripts/bisect-builds:
- * Scripts/resolve-ChangeLogs:
- * Scripts/run-iexploder-tests:
- * Scripts/run-jsc:
- * Scripts/run-mangleme-tests:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
- Using File::Spec->devnull() instead of hard coded /dev/null.
-
-2009-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Reviewers are missing from committers.py
- https://bugs.webkit.org/show_bug.cgi?id=30733
-
- * Scripts/modules/committers.py:
-
-2009-10-23 Eric Seidel <eric@webkit.org>
-
- No review, only adding Alice to the list of reviewers.
-
- * Scripts/modules/committers.py:
-
-2009-10-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Eric Carlson.
-
- fast/media/mq-transform-02.html failed on Leopard Commit Bot
- https://bugs.webkit.org/show_bug.cgi?id=30700
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Update QuickTime version check.
-
-2009-10-23 Kevin Ollivier <kevino@theolliviers.com>
-
- wxMac 10.4 build fix, needs to link against WebKitSystemInterfaceTiger to get
- character measurement APIs that are private on Tiger.
-
- * wx/build/settings.py:
-
-2009-10-22 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by NOBODY (build fix).
- Build fix following bug #30696.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
-
-2009-10-22 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig & Geoff Garen.
-
- https://bugs.webkit.org/show_bug.cgi?id=30696
- Enable isolated-worlds tests on mac.
-
- Add private interface for DRT to invoke execution in a given world.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (evaluateScriptInIsolatedWorldCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
-
-2009-10-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool's "patch failed to download an apply" error should give more information
- https://bugs.webkit.org/show_bug.cgi?id=30632
-
- * Scripts/modules/scm.py:
- - Use the common run_command method instead of custom POpen code.
- - Make run_command know how to take pipes as input.
- * Scripts/modules/scm_unittest.py:
- - Add new tests to cover change.
- - Also move test_error_handlers into new SCMClassTests so we don't run it 3 times.
-
-2009-10-21 Kent Tamura <tkent@chromium.org>
-
- Unreviewed. Adding myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-21 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Update the Windows installer builder to work with Vista / Win 7 and with git.
-
- https://bugs.webkit.org/show_bug.cgi?id=30649
-
- * wx/build/build_utils.py:
- * wx/packaging/build-mac-installer.py:
- * wx/packaging/build-win-installer.py:
- * wx/packaging/wxWebKitInstaller.iss.in:
-
-2009-10-21 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Added conditional code to avoid using
- gdk_window_get_root_coords if we do not have a gtk+ release newer
- than 2.17.3.
- https://bugs.webkit.org/show_bug.cgi?id=30636
-
- * WebKitTools/DumpRenderTree/gtk/EventSender.cpp:
-
-2009-10-21 Shu Chang <Chang.Shu@nokia.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] Added dummy implementation for keepWebHistory()
- https://bugs.webkit.org/show_bug.cgi?id=30592
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::keepWebHistory):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-10-21 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Fixed the double click condition, it is not double click if
- we move in just in one direction.
- https://bugs.webkit.org/show_bug.cgi?id=30636
-
- * WebKitTools/DumpRenderTree/gtk/EventSender.cpp:
-
-2009-10-21 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Initialize the events completly before emitting them.
- https://bugs.webkit.org/show_bug.cgi?id=30633
-
- * WebKitTools/DumpRenderTree/gtk/EventSender.cpp:
-
-2009-10-21 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Fix for when linking using --as-needed with gcc.
-
- * wx/browser/wscript:
-
-2009-10-21 Kevin Ollivier <kevino@theolliviers.com>
-
- wxMac 10.4 build fix. Build and link against a version of libcurl new enough
- to support all the features used by CURL backend.
-
- * wx/build/settings.py:
- * wx/install-unix-extras:
-
-2009-10-20 Anton Muhin <antonm@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add {ager,antonm,yurys}@chromium.org into committers.py
- https://bugs.webkit.org/show_bug.cgi?id=30560
-
- * Scripts/modules/committers.py:
-
-2009-10-20 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Make the Netscape Test plugin available to the Qt launcher.
-
- * Scripts/run-launcher:
-
-2009-10-20 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- Removed WebSocket runtime settings.
- https://bugs.webkit.org/show_bug.cgi?id=29896
-
- WebSocket runtime configuration is supported by chromium/v8 only.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-10-19 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add testFail() to test plugin so we can test our handling of a
- plugin invoke call returning false.
-
- https://bugs.webkit.org/show_bug.cgi?id=30239
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: Add testFail().
- (pluginInvoke):
- (testIdentifierToString): Always return true, since returning false will now cause an exception to be thrown.
-
-2009-10-19 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Gustavo Noronha.
-
- Enable DOM pasting when running layout tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-10-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Use the setPreferredContentsSize method instead
- of setFixedContentsSize, as the method has been renamed.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setFixedContentsSize):
-
-2009-10-16 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=30456
- Fixes for new Debug_All Windows build configuration.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (sharedCFURLCache): Use new DEBUG_ALL preprocessor define for library naming.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Remove unused DEBUG_WEBKIT_HAS_SUFFIX.
-
-2009-10-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue status bot should list which buildbot is blocking the queue
- https://bugs.webkit.org/show_bug.cgi?id=30452
-
- Add new methods and testing.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildbot.py:
- * Scripts/modules/buildbot_unittest.py:
-
-2009-10-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run-webkit-tests fails when CWD is not inside a WebKit checkout
- https://bugs.webkit.org/show_bug.cgi?id=30451
-
- * Scripts/modules/scm.py: in_working_directory shouldn't throw exceptions on failure.
- * Scripts/modules/scm_unittest.py:
- - Remove use of original_path (we don't need to restore the CWD).
- - Don't use '.' to find the webkit checkout, use __file__ instead.
-
-2009-10-16 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Add a Debug_All configuration to build entire stack as debug.
- Change Debug_Internal to:
- - stop using _debug suffix for all WebKit/Safari binaries
- - not use _debug as a DLL naming suffix
- - use non-debug C runtime lib.
-
- * DumpRenderTree/DumpRenderTree.sln: Add Debug_All configuration.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Add Debug_All configuration.
- * DumpRenderTree/win/ImageDiff.vcproj: Add Debug_All configuration.
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- Add missing debug.vsprops inherited property sheet.
- Add Debug_All configuration.
- * FindSafari/FindSafari.vcproj: Renamed single configuration from "Release" to "all".
- * WinLauncher/WinLauncher.vcproj:
- Removed extraneous definitions inherited from vsprops.
- Add Debug_All configuration.
-
-2009-10-16 Carol Szabo <carol.szabo@nokia.com>
-
- Reviewed by David Levin.
-
- check-webkit-style is wrong about indent checking in namespaces
- in header files and a few other things
- https://bugs.webkit.org/show_bug.cgi?id=30362
-
- The few other things include:
- + check-webkit-style does not require spaces around the equal sign
- inside 'if' statements and around binary operators that take
- numeric literals.
- + check-webkit-style reports false errors for the / operator
- when part of a filename in the #include directive.
-
- * Scripts/modules/cpp_style.py:
- Improved indentation checking and space checking around
- binary operators. While the checks are still not perfect,
- they are clearly better than before.
- * Scripts/modules/cpp_style_unittest.py:
- Added test cases for the newly supported checks and modified old
- test cases to match the new guidelines
-
-2009-10-16 Kevin Ollivier <kevino@theolliviers.com>
-
- wxMSW build fix. Link to MSW library needed by PluginPackageWin.cpp.
-
- * wx/build/settings.py:
-
-2009-10-15 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by David Levin.
-
- Add mod_pywebsocket to test Web Sockets.
- http://code.google.com/p/pywebsocket/
- https://bugs.webkit.org/show_bug.cgi?id=27490
-
- * pywebsocket/COPYING: Added.
- * pywebsocket/MANIFEST.in: Added.
- * pywebsocket/README: Added.
- * pywebsocket/example/echo_client.py: Added.
- * pywebsocket/example/echo_wsh.py: Added.
- * pywebsocket/mod_pywebsocket/__init__.py: Added.
- * pywebsocket/mod_pywebsocket/dispatch.py: Added.
- * pywebsocket/mod_pywebsocket/handshake.py: Added.
- * pywebsocket/mod_pywebsocket/headerparserhandler.py: Added.
- * pywebsocket/mod_pywebsocket/msgutil.py: Added.
- * pywebsocket/mod_pywebsocket/standalone.py: Added.
- * pywebsocket/mod_pywebsocket/util.py: Added.
- * pywebsocket/setup.py: Added.
- * pywebsocket/test/config.py: Added.
- * pywebsocket/test/mock.py: Added.
- * pywebsocket/test/run_all.py: Added.
- * pywebsocket/test/test_dispatch.py: Added.
- * pywebsocket/test/test_handshake.py: Added.
- * pywebsocket/test/test_mock.py: Added.
- * pywebsocket/test/test_msgutil.py: Added.
- * pywebsocket/test/test_util.py: Added.
- * pywebsocket/test/testdata/handlers/blank_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/origin_check_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/sub/exception_in_transfer_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/sub/no_wsh_at_the_end.py: Added.
- * pywebsocket/test/testdata/handlers/sub/non_callable_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/sub/plain_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/sub/wrong_handshake_sig_wsh.py: Added.
- * pywebsocket/test/testdata/handlers/sub/wrong_transfer_sig_wsh.py: Added.
-
-2009-10-15 James Robinson <jamesr@google.com>
-
- Reviewed by David Levin.
-
- Updates check-webkit-style to reflect that code inside a namespace should not be indented, even in a header file.
-
- https://bugs.webkit.org/show_bug.cgi?id=30426
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-10-15 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- Fixes <http://webkit.org/b/30411>.
- REGRESSION(49485): pdevenv doesn't compile in parallel for non-chromium builds on Windows.
-
- Added a check for isChromium() in pdevenv, and pass /useenv if we are not
- building Chromium.
-
- * Scripts/pdevenv:
-
-2009-10-15 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Add Mac package building scripts for wx.
-
- https://bugs.webkit.org/show_bug.cgi?id=30405
-
- * wx/build/build_utils.py:
- * wx/build/settings.py:
- * wx/packaging/build-mac-installer.py: Added.
-
-2009-10-15 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Gustavo Noronha.
-
- Enable Web Sockets support when running layout tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-10-15 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Need to initialize event.button.button, since in most cases a
- button number is not passed as an argument.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseDownCallback):
- (mouseUpCallback):
-
-2009-10-15 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. More SDK fixes for Mac, make sure we use the SDK corresponding to
- the OS if none was explicitly set.
-
- * wx/build/settings.py:
-
-2009-10-14 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Web Inspector: enable developers extras within inspector layout tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=30014
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
-
-2009-10-14 José Millán Soto <jmillan@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- GtkLauncher is using a deprecated signal
- https://bugs.webkit.org/show_bug.cgi?id=30364
-
- Modified GtkLauncher to use notify::title signal instead of
- deprecated title-changed signal
-
- * GtkLauncher/main.c:
- (notify_title_cb):
- (create_browser):
-
-2009-10-14 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Don't set the history delegate on new windows that are opened during a test, as the history delegate:
- 1 - Disables WebHistory
- 2 - Doesn't make sense in that context anyway.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (createWebViewAndOffscreenWindow):
-
-2009-10-14 Kevin Ollivier <kevino@theolliviers.com>
-
- wxMac build fix. Ensure 10.4 compatibility for deps, and allow the user to specify
- the SDK to use since Python overrides any user-set value of MACOSX_DEPLOYMENT_TARGET.
-
- * wx/build/settings.py:
- * wx/install-unix-extras:
-
-2009-10-14 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKit Win API should provide a delegate interface for global history.
- https://bugs.webkit.org/show_bug.cgi?id=29905
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpHistoryDelegateCallbacks):
- (LayoutTestController::setDumpHistoryDelegateCallbacks):
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldLogHistoryDelegates):
- (runTest):
- (createWebViewAndOffscreenWindow):
- (main):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
- Add the IWebHistoryDelegate to DRT Windows:
- * DumpRenderTree/win/HistoryDelegate.cpp: Added.
- (wstringFromBSTR):
- (HistoryDelegate::HistoryDelegate):
- (HistoryDelegate::~HistoryDelegate):
- (HistoryDelegate::QueryInterface):
- (HistoryDelegate::AddRef):
- (HistoryDelegate::Release):
- (HistoryDelegate::didNavigateWithNavigationData):
- (HistoryDelegate::didPerformClientRedirectFromURL):
- (HistoryDelegate::didPerformServerRedirectFromURL):
- (HistoryDelegate::updateHistoryTitle):
- (HistoryDelegate::populateVisitedLinksForWebView):
- * DumpRenderTree/win/HistoryDelegate.h: Added.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::removeAllVisitedLinks):
-
-2009-10-14 Shu Chang <Chang.Shu@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement support for setPOSIXLocale on Qt.
- https://bugs.webkit.org/show_bug.cgi?id=30268
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setPOSIXLocale):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2009-10-13 Stephanie Lewis <slewis@apple.com>
-
- Unreviewed, adding myself to reviewers list.
-
- * Scripts/modules/committers.py:
-
-2009-10-13 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- Fix null assignment so root tests work again.
-
- * Scripts/webkitdirs.pm:
-
-2009-10-13 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Refactor LayoutTestController, EventSender, TextInputController and WorkQueueItem classes
- out of jsobjects into separate files to get a more structured DumpRenderTree implementation.
- This is done in preparation of implementing missing features in DRT.
- No functionality changes made yet.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/EventSenderQt.cpp: Added.
- (EventSender::EventSender):
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::leapForward):
- (EventSender::keyDown):
- (EventSender::contextClick):
- (EventSender::scheduleAsynchronousClick):
- (EventSender::frameUnderMouse):
- * DumpRenderTree/qt/EventSenderQt.h: Added.
- (EventSender::clearKillRing):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Added.
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::processWork):
- (LayoutTestController::maybeDump):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::windowCount):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::dumpEditingCallbacks):
- (LayoutTestController::dumpResourceLoadCallbacks):
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
- (LayoutTestController::queueLoad):
- (LayoutTestController::queueReload):
- (LayoutTestController::queueScript):
- (LayoutTestController::provisionalLoad):
- (LayoutTestController::timerEvent):
- (LayoutTestController::encodeHostName):
- (LayoutTestController::decodeHostName):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setFixedContentsSize):
- (LayoutTestController::setPrivateBrowsingEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::disableImageLoading):
- (LayoutTestController::dispatchPendingLoadRequests):
- (LayoutTestController::setDatabaseQuota):
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::whiteListAccessFromOrigin):
- (LayoutTestController::waitForPolicyDelegate):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/qt/LayoutTestControllerQt.h: Added.
- (LayoutTestController::isLoading):
- (LayoutTestController::setLoading):
- (LayoutTestController::shouldDumpAsText):
- (LayoutTestController::shouldDumpBackForwardList):
- (LayoutTestController::shouldDumpChildrenAsText):
- (LayoutTestController::shouldDumpDatabaseCallbacks):
- (LayoutTestController::shouldDumpStatusCallbacks):
- (LayoutTestController::shouldWaitUntilDone):
- (LayoutTestController::canOpenWindows):
- (LayoutTestController::shouldDumpTitleChanges):
- (LayoutTestController::waitForPolicy):
- (LayoutTestController::dumpAsText):
- (LayoutTestController::dumpChildFramesAsText):
- (LayoutTestController::dumpDatabaseCallbacks):
- (LayoutTestController::dumpStatusCallbacks):
- (LayoutTestController::setCanOpenWindows):
- (LayoutTestController::dumpBackForwardList):
- (LayoutTestController::setCloseRemainingWindowsWhenComplete):
- (LayoutTestController::display):
- (LayoutTestController::dumpTitleChanges):
- (LayoutTestController::dumpSelectionRect):
- * DumpRenderTree/qt/TextInputControllerQt.cpp: Added.
- (TextInputController::TextInputController):
- (TextInputController::doCommand):
- * DumpRenderTree/qt/TextInputControllerQt.h: Added.
- * DumpRenderTree/qt/WorkQueue.cpp:
- * DumpRenderTree/qt/WorkQueue.h:
- * DumpRenderTree/qt/WorkQueueItem.h:
- * DumpRenderTree/qt/WorkQueueItemQt.cpp: Added.
- (findFrameNamed):
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- * DumpRenderTree/qt/jsobjects.cpp: Move all the above classes into separate files
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-10-13 Dmitry Titov <dimich@chromium.org>
-
- Not reviewed, adding myself to the list of reviewers.
-
- * Scripts/modules/committers.py:
-
-2009-10-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- <rdar://problem/6660507> Add "privacy mode" to Netscape Plug-in API
-
- Make the private browsing mode testable by the test plug-in.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginGetProperty):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_SetValue):
-
-2009-10-13 Pavel Feldman <pfeldman@chromium.org>
-
- No review, just adding self to the list of reviewers.
-
- * Scripts/modules/committers.py:
-
-2009-10-12 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Adam Roben.
-
- Web Inspector: Use proper web view in inspector layout
- tests for windows.
-
- https://bugs.webkit.org/show_bug.cgi?id=30298
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
-
-2009-10-12 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Sam Weinig.
-
- Enable experimentalWebSocket in DumpRenderTree for LayoutTest.
- https://bugs.webkit.org/show_bug.cgi?id=29841
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-10-12 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Chromium Port - Windows
- https://bugs.webkit.org/show_bug.cgi?id=29969
-
- * Scripts/pdevenv: removed msvc's /useenv for chromium builds
- * Scripts/webkitdirs.pm:
-
-2009-10-12 Csaba Osztrogonac <ossy@webkit.org>
-
- Reviewed by Darin Adler.
-
- jsc scripts cleanup and Qt/GTK fix
- https://bugs.webkit.org/show_bug.cgi?id=30288
-
- Duplicated jscPath() moved to webkitdirs.pm.
- New jscProductDir() added to webkitdirs.pm instead of duplicated codes.
- Configuration added (release/debug) to path for Qt-port on Windows.
-
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-jsc:
- * Scripts/run-sunspider:
- * Scripts/sunspider-compare-results:
- * Scripts/webkitdirs.pm:
-
-2009-10-11 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Add Collin to committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-10-11 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, add bindings to source/include dirs now that there are sources there.
-
- * wx/build/settings.py:
-
-2009-10-09 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Brady Eidson.
-
- Enable plug-in halting in DumpRenderTree.
-
- We drop the plug-in halting delay to 1 second and opt in the delegate method to never halt plug-ins.
- This is sufficient to ensure that the crash covered by <rdar://problem/7290671> no longer occurs.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:shouldHaltPlugin:]):
-
-2009-10-08 Brady Eidson <beidson@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Ask the History Delegate to populate the visited links hash.
- <rdar://problem/7285293> and https://webkit.org/b/29904
-
- Add the ability for LayoutTestController to clear all visited links.
- Also lets the History Delegate dump visited links, but only if this test specifically cleared them.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (removeAllVisitedLinksCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::removeAllVisitedLinks):
-
- * DumpRenderTree/mac/HistoryDelegate.mm:
- (-[HistoryDelegate populateVisitedLinksForWebView:]):
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::removeAllVisitedLinks):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::removeAllVisitedLinks):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::removeAllVisitedLinks):
-
-
-2009-10-08 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=30175
-
- The Windows DRT equivalent of DoDragDrop (i.e. UIDelegate::doDragDrop) does not return
- the OLE drag-and-drop return value like the function it emulates. Currently,
- UIDelegate::doDragDrop returns a hard-coded S_OK. Hence, the caller cannot determine
- whether the drag-and-drop operation was successful or was cancelled.
-
- This patch fixes this issue by having UIDelegate::doDragDrop return the OLE drag-and-drop
- return value according to whether the drop operation was successful or not.
-
- * DumpRenderTree/win/EventSender.cpp:
- (doMouseUp): Added parameter oleDragAndDropReturnValue.
- (replaySavedEvents): Ditto.
- * DumpRenderTree/win/EventSender.h:
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::doDragDrop): Modified to return OLE drag-and-drop return value.
-
-2009-10-08 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Added support for a parameter setting the button that was
- pressed in the mouseDown function.
- https://bugs.webkit.org/show_bug.cgi?id=30220
-
- * WebKitTools/DumpRenderTree/gtk/EventSender.cpp:
-
-2009-10-08 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Added a line to the bottom of the expected result to match
- the output of the test.
- https://bugs.webkit.org/show_bug.cgi?id=30220
-
- * LayoutTests/platform/gtk/editing/pasteboard/middle-click-onpaste-
- expected.txt:
-
-2009-10-08 Adam Roben <aroben@apple.com>
-
- Use QueryInterface to get IWebInspectorPrivate
-
- Fixes <http://webkit.org/b/30215> Make IWebInspectorPrivate be
- accessed in a more standard way
-
- Reviewed by John Sullivan and Tim Hatcher.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::evaluateInWebInspector): Get the IWebInspector
- by calling IWebViewPrivate::inspector, then use QueryInterface to get
- to the IWebInspectorPrivate interface.
-
-2009-10-07 Adam Roben <aroben@apple.com>
-
- Implement DRT support for origin whitelisting
-
- Fixes <http://webkit.org/b/30185>.
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting): Reset any origin
- whitelist, to match Mac DRT.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::whiteListAccessFromOrigin): Call through to
- IWebViewPrivate::whiteListAccessFromOrigin.
-
-2009-10-07 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- Send title changes to the global history delegate.
- <rdar://problem/7285293> and https://webkit.org/b/29904
-
- * DumpRenderTree/mac/HistoryDelegate.mm:
- (-[HistoryDelegate webView:updateHistoryTitle:forURL:]):
-
-2009-10-07 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Remove some folks from committers.py who were listed on
- the WebKit Team wiki page but who weren't actually listed as commit+.
- At some point, we should coorelate this list with the committers
- mailing list.
-
- * Scripts/modules/committers.py:
-
-2009-10-07 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Import a bunch of committers from the WebKit Team page on
- the wiki into committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-10-07 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Added Aaron Boodman to committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-10-07 Evan Martin <evan@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add API to LayoutTestController for re/setting the system locale.
- https://bugs.webkit.org/show_bug.cgi?id=18994
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setLocaleCallback):
- (LayoutTestController::staticFunctions):
- (LayoutTestController::setLocale):
- * DumpRenderTree/LayoutTestController.h:
-
-2009-10-06 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Jan Alonzo.
-
- [Layout tests] [Gtk] Gtk DumpRenderTree should use WebKit test fonts
- https://bugs.webkit.org/show_bug.cgi?id=29689
-
- Build fix by adding -lfontconfig for DumpRenderTree.
-
- * GNUmakefile.am:
-
-2009-10-07 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Re-enable use-remote-links-to-tests for Qt. Disabled in r46416.
-
- * Scripts/run-webkit-tests:
-
-2009-10-07 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- "delete" in EventSender is the backspace key, not the delete one.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback):
-
-2009-10-07 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- getChildrenWithRange expects as last parameter the end index, not
- the length of the range. Correct this and clarify the variable
- names to reflect how the code works.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::getChildAtIndex):
-
-2009-10-06 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Simon Fraser.
-
- <http://webkit.org/b/30138> update-webkit-localizable-strings assumes that WebKitTools/Scripts is in the PATH
-
- * Scripts/update-webkit-localizable-strings: Use an explicit path to extract-localizable-strings based on the
- the fact we have already changed the working directory to the top of the open source tree.
-
-2009-10-06 Julie Parent <jparent@chromium.org>
-
- Unreviewed. Fixing the entry for myself in committers.py to use my bugzilla email,
- rather than my committer email.
-
- * Scripts/modules/committers.py:
-
-2009-10-06 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] LayoutTestController: Reset m_dumpStatusCallbacks to false in reset().
-
- r49189 added support for the 'dumpStatusCallbacks' setting but didn't reset
- it after each layout test as it should do, making the DRT dump additional output
- for all of the subsequent layout tests.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
-
-2009-10-06 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement layoutTestController.dumpStatusCallbacks() and unskip the
- fast/dom/assign-to-window-status.html test, which is passing as a result.
-
- https://bugs.webkit.org/show_bug.cgi?id=30127
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::statusBarMessage):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.h:
- (LayoutTestController::shouldDumpStatusCallbacks):
- (LayoutTestController::dumpStatusCallbacks):
-
-2009-10-06 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] The implementation of EventSender::mouseUp() and EventSender::mouseDown()
- ignores the argument indicating which mouse button to trigger.
- https://bugs.webkit.org/show_bug.cgi?id=30048
-
- This affects the fast/events/mouse-click-events.html layout test.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-10-06 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix the EventSender::keyDown() implementation
- https://bugs.webkit.org/show_bug.cgi?id=30043
-
- It should post both a key press event and a key release event,
- just like other ports do.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
-
-2009-10-05 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Add jpeg to the list of libs to link against.
-
- * wx/build/settings.py:
-
-2009-10-05 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] EventSender::keyDown() cannot send function-key events.
- https://bugs.webkit.org/show_bug.cgi?id=30044
-
- This affects the fast/events/keydown-function-keys.html layout test.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
-
-2009-10-05 Vadim Zeitlin <vadim@wxwidgets.org>
-
- Added --wx-compiler-prefix waf option to allow building wxWebKit with
- wxWidgets built using "nmake COMPILER_PREFIX=something-non-default".
-
- * wx/build/settings.py:
- * wx/build/wxpresets.py:
-
-2009-10-05 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Web Inspector: add testing harness for Web Inspector.
-
- https://bugs.webkit.org/show_bug.cgi?id=30010
-
- * DumpRenderTree/LayoutTestController.cpp:
- (showWebInspectorCallback):
- (closeWebInspectorCallback):
- (evaluateInWebInspectorCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
-
-2009-10-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Ariyha Hidayat.
-
- Pass arguments to system() as a string instead of array
-
- When passed as an array entries with a space fail to translate
- to two arguments to the child process, so instead of manually
- splitting all the entries in @buildArgs we pass the whole thing
- as a string instead.
-
- * Scripts/webkitdirs.pm:
-
-2009-10-04 Carol Szabo <carol.szabo@nokia.com>
-
- Reviewed by David Levin.
-
- check-webkit-style misses whitespace errors for operators:
- <<, >>, <<=, >>=, &=, |=, +=, -=, *=, /=, /, |, &&, ||.
- https://bugs.webkit.org/show_bug.cgi?id=30021
-
- * Scripts/modules/cpp_style.py:
- Added the operators mentioned above to the same list as == and !=.
-
-2009-10-02 Julie Parent <jparent@chromium.org>
-
- Unreviewed.
-
- Adding myself and Ojan Vafai as committers, because we are committers.
-
- * Scripts/modules/committers.py:
-
-2009-10-02 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- svn-create-patch should have an --ignore-changelogs to not add ChangeLogs to the diff,
- this will help the patch merging process when TryBots are used.
-
- * Scripts/svn-create-patch:
-
-2009-10-02 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement layoutTestController.overridePreference().
- https://bugs.webkit.org/show_bug.cgi?id=29970
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setPrivateBrowsingEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-10-01 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Turn on ENABLE_3D_CANVAS in TOT
- https://bugs.webkit.org/show_bug.cgi?id=29906
-
- * Scripts/build-webkit:
-
-2009-10-01 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Rubberstamped by Simon Hausmann.
-
- Enable HTTP tests for Qt
-
- * Scripts/run-webkit-tests:
-
-2009-10-01 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- build-webkit --chromium now also works on cygwin.
-
- https://bugs.webkit.org/show_bug.cgi?id=29973
-
- * Scripts/webkitdirs.pm:
-
-2009-10-01 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Don't use TCmalloc in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=27029
-
- Add USE_SYSTEM_MALLOC macro to the DRT's profile to avoid using TCmalloc in Qt's DRT.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2009-10-01 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement eventSender.scheduleAsynchronousClick().
-
- https://bugs.webkit.org/show_bug.cgi?id=29931
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::scheduleAsynchronousClick):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-10-01 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement setPopupBlockingEnabled() in the LayoutTestController and remove
- fast/events/open-window-from-another-frame.html from the Skipped list.
-
- https://bugs.webkit.org/show_bug.cgi?id=29930
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::setPopupBlockingEnabled):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-09-30 Cameron McCormack <cam@mcc.id.au>
-
- Unreviewed.
-
- Added myself to the list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-09-30 Eric Seidel <eric@webkit.org>
-
- No review, just adding Geoff to the list of reviewers.
-
- * Scripts/modules/committers.py:
-
-2009-09-30 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added the WebKit Layout Tests fonts that are referenced in
- LayoutTests/platform/win/css2.1/resources/Mac-compatible-font-fallback.css
-
- * DumpRenderTree/fonts/WebKit Layout Tests 2.ttf: Added.
- * DumpRenderTree/fonts/WebKit Layout Tests.ttf: Added.
-
-2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by David Kilzer.
-
- Make sunspider scripts work on Windows platform.
- https://bugs.webkit.org/show_bug.cgi?id=29656
-
- * Scripts/run-sunspider: Perl scripts invoked with same Perl interpreter.
- * Scripts/sunspider-compare-results: Perl scripts invoked with same Perl interpreter.
- * Scripts/webkitdirs.pm: currentPerlPath() added.
-
-2009-09-29 Brady Eidson <beidson@apple.com>
-
- Rubberstamped by Dan Bernstein.
-
- Fix license and some sorting in new files.
-
- * DumpRenderTree/mac/HistoryDelegate.h:
- * DumpRenderTree/mac/HistoryDelegate.mm:
-
-2009-09-29 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by David Kilzer.
-
- Fixed how error codes are handled.
- https://bugs.webkit.org/show_bug.cgi?id=29898
-
- * Scripts/update-webkit:
- * Scripts/update-webkit-chromium:
-
-2009-09-29 Brady Eidson <beidson@apple.com>
-
- Reviewed by John Sullivan.
-
- Updated way-out-of-date sorting throughout the dump methods/flags.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpAsPDFCallback):
- (dumpAsTextCallback):
- (dumpFrameLoadCallbacksCallback):
- (dumpResourceLoadCallbacksCallback):
- (LayoutTestController::staticFunctions):
-
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpAsText):
- (LayoutTestController::setDumpAsText):
- (LayoutTestController::dumpFrameLoadCallbacks):
- (LayoutTestController::setDumpFrameLoadCallbacks):
- (LayoutTestController::dumpSelectionRect):
- (LayoutTestController::setDumpSelectionRect):
- (LayoutTestController::dumpSourceAsWebArchive):
- (LayoutTestController::setDumpSourceAsWebArchive):
- (LayoutTestController::dumpStatusCallbacks):
- (LayoutTestController::setDumpStatusCallbacks):
- (LayoutTestController::dumpTitleChanges):
- (LayoutTestController::setDumpTitleChanges):
- (LayoutTestController::dumpWillCacheResponse):
- (LayoutTestController::setDumpWillCacheResponse):
-
-2009-09-29 Brady Eidson <beidson@apple.com>
-
- Reviewed by John Sullivan.
-
- WebKit Mac API should provide a delegate interface for global history.
- <rdar://problem/7042773> and https://webkit.org/b/29904
-
- Adding the dumping of global history delegate callbacks.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
- Automatically dump history delegate callbacks for tests with "globalhistory/" in their URL:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (allocateGlobalControllers):
- (shouldLogFrameLoadDelegates):
- (shouldLogHistoryDelegates):
- (runTest):
-
- Dump history delegate callbacks:
- * DumpRenderTree/mac/HistoryDelegate.h: Added.
- * DumpRenderTree/mac/HistoryDelegate.mm: Added.
- (-[HistoryDelegate webView:didNavigateWithNavigationData:inFrame:]):
- (-[HistoryDelegate webView:didPerformClientRedirectFromURL:toURL:inFrame:]):
- (-[HistoryDelegate webView:didPerformServerRedirectFromURL:toURL:inFrame:]):
-
-2009-09-29 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=28902
-
- Fixes an issue where the drop effect returned by Window Dump Render Tree
- was always DROPEFFECT_NONE (since it was hard coded to do so).
-
- This patch corrects this issue by determining the actual drop effect
- performed by the corresponding drag-and-drop operation so that we can
- return it.
-
- * DumpRenderTree/win/DraggingInfo.h: Added field m_dropEffect to store performed drop effect.
- (DraggingInfo::DraggingInfo):
- (DraggingInfo::performedDropEffect): Added method.
- (DraggingInfo::setPerformedDropEffect): Added method.
- * DumpRenderTree/win/EventSender.cpp:
- (doMouseUp): Calls method DraggingInfo::setPerformedDropEffect with performed drop effect.
- Moved delete draggingInfo to UIDelegate::doDragDrop.
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::doDragDrop): Sets performedDropEffect to DraggingInfo::performedDropEffect().
-
-2009-09-29 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- Remove copying of unnecessary or nonexistent files from the ImageDiff
- post-build event.
-
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2009-09-29 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by David Kilzer.
-
- [Qt] Make build-webkit script work on Windows
- https://bugs.webkit.org/show_bug.cgi?id=29802
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
- - Removed unnecessary -p switch for mkdir on Windows.
- - Use canonical path, which uses slashes or backslashes depends on platform.
- - isWindows() only test for Windows and not for Cyqwin.
-
-2009-09-29 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Fix time measurement in build-webkit after refactoring done in r48853.
-
- * Scripts/build-webkit:
-
-2009-09-29 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Default font size reconciliation to 16px/13px to match other platform's de-facto standard.
- This fixes https://bugs.webkit.org/show_bug.cgi?id=19674.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
-
-2009-09-29 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement eventSender.contextClick().
- https://bugs.webkit.org/show_bug.cgi?id=29821
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::contextClick):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-09-28 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add experimentalWebSocketsEnabled in WebPreferences.
- https://bugs.webkit.org/show_bug.cgi?id=28941
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-09-28 Yaar Schnitman <yaar@chromium.org>
-
- Reviewed by David Kilzer.
-
- Integrated chromium port building into webkit tools update-webkit and
- build-webkit.
-
- https://bugs.webkit.org/show_bug.cgi?id=29749
-
- * Scripts/build-webkit: When --chromium is specified, will build
- the chromium port (currently only Mac is supported).
- * Scripts/update-webkit: When --chromium is specified, delegates to
- update-webkit-chromium.
- * Scripts/webkitdirs.pm: Added chromium specific defs.
- * Scripts/update-webkit-chromium: Uses gclient and gyp to fetch
- chromium port's dependencies and update its project files.
-
-2009-09-28 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-09-27 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Darin Adler.
-
- run-webkit-tests: Do not strip the metrics when there is no expected result for a test.
- https://bugs.webkit.org/show_bug.cgi?id=29771
-
- * Scripts/run-webkit-tests:
-
-2009-09-27 Jakub Wieczorek <faw217@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Implement layoutTestController.waitForPolicyDelegate.
- https://bugs.webkit.org/show_bug.cgi?id=25037
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::acceptNavigationRequest):
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::notifyDone):
- (LayoutTestController::waitForPolicyDelegate):
- * DumpRenderTree/qt/jsobjects.h:
- (LayoutTestController::waitForPolicy):
-
-2009-09-26 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29764> mark-bug-fixed: add -o|--open switch
-
- Reviewed by Eric Seidel.
-
- The -o|--open switch uses the open(1) command on Mac OS X to
- open the bug URL in the default web browser. If there are
- similar mechanisms on other platforms, they may be added later.
-
- * Scripts/mark-bug-fixed:
- (MarkBugFixed.__init__): Added -o|--open switch to list of parse
- options.
- (MarkBugFixed._determine_bug_id_and_svn_revision): Moved logging
- code into main() and extracted prompting code into
- _prompt_user_for_correctness().
- (MarkBugFixed._open_bug_in_web_browser): Added.
- (MarkBugFixed._prompt_user_for_correctness): Added.
- (MarkBugFixed.main): Added logging code from
- _determine_bug_id_and_svn_revision(). Added code to call
- _open_bug_in_web_browser() if the switch is set. Added code to
- call _prompt_user_for_correctness() when needed.
- * Scripts/modules/bugzilla.py:
- (Bugzilla.short_bug_url_for_bug_id): Added.
-
-2009-09-26 David Kilzer <ddkilzer@apple.com>
-
- svn-unapply and svn-apply don't work when used outside multiple svn working directories
-
- <http://webkit.org/b/29744>
- <rdar://problem/7252905>
-
- Reviewed by Eric Seidel.
-
- Some users have a workflow where svn-create-patch, svn-apply and
- svn-unapply are used outside of multiple svn working
- directories. Instead of aborting the scripts in these cases,
- print a warning and assume that Subversion is being used.
-
- * Scripts/VCSUtils.pm:
- (determineVCSRoot): Call warn() instead of die() if both isGit()
- and isSVN() initially return false. Set $VCSUtils::isSVN to 1
- to enforce the assumption about Subversion, then return
- determineSVNRoot().
- * Scripts/svn-apply: Switch to using isGit() and isSVN() from
- VCSUtils.pm. They both already cache their values and checking
- here is redundant since determineVCSRoot() is called later.
-
-2009-09-26 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Gustavo Noronha.
-
- [Layout tests] [Gtk] Gtk DumpRenderTree should use WebKit test fonts
- https://bugs.webkit.org/show_bug.cgi?id=29689
-
- Load test fonts through FontConfig before each test.
- This ensures a more proper rendering of the tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts):
- (runTest):
- (main):
- * DumpRenderTree/gtk/fonts.conf: Copied from WebKitTools/DumpRenderTree/qt/fonts.conf.
- * GNUmakefile.am:
-
-2009-09-25 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29718> mark-bug-fixed: add -u|--update-only switch
-
- Reviewed by Eric Seidel.
-
- * Scripts/mark-bug-fixed:
- (MarkBugFixed.__init__): Added -u|--update-only switch to list
- of parse options.
- (MarkBugFixed.main): When -u|--update-only is specified, add a
- comment to the bug without marking it Resolved/Fixed.
-
-2009-09-25 Darin Adler <darin@apple.com>
-
- Reviewed by Geoffrey Garen.
-
- * Scripts/prepare-ChangeLog: Leave files from the script-tests directory
- out, just as we do for the resources directory.
-
-2009-09-25 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Added Tony to committers.py because he's a
- committer now.
-
- * Scripts/modules/committers.py:
-
-2009-09-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Simon Fraser.
-
- REGRESSION: media/video-pause-empty-events.html is occasionally timing out on bots
- https://bugs.webkit.org/show_bug.cgi?id=28624
-
- Disable hardware compositing on Leopard for versions of QuickTime 7.6.4 and older.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2009-09-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should auto-retry patches which fail to commit due to out of date files
- https://bugs.webkit.org/show_bug.cgi?id=28316
-
- * Scripts/bugzilla-tool:
- - Handle new CheckoutNeedsUpdate exception.
- * Scripts/modules/logging_unittest.py:
- - Call the ScriptError constructor correctly (this test had regressed).
- * Scripts/modules/scm.py:
- - Added the ability to define custom error handlers for run_command
- and added a commit_error_handler which throws CheckoutNeedsUpdate
- instead of ScriptError.
- - Re-ordered ScriptError constructor arguments to make ScriptError("message text") usage possible.
- * Scripts/modules/scm_unittest.py:
- - Added tests of new error handlers.
-
-2009-09-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should give better feedback when failing a patch
- https://bugs.webkit.org/show_bug.cgi?id=29316
-
- * Scripts/bugzilla-tool:
- - Update ScriptError uses to the new constructor format.
- - Move CommitQueue._run_command to WebKitLandingScripts.run_command_with_teed_output
- so that we can print to both stdout as well as an output buffer for error reporting.
- - Update run_and_throw_if_fail to use teed output so that it can report the "output" as part of ScriptError.
- - Use e.message_with_output() when failing a patch (this is the real fix here).
- I also removed use of "This patch will require manual commit." as that's not always true.
- - Add missing word "bug" from log message.
- * Scripts/modules/scm.py:
- - Make ScriptError save a bunch more data so that error messages can be nicer.
- - Update ScriptError callers.
-
-2009-09-24 John Gregg <johnnyg@google.com>
-
- Reviewed by Eric Seidel.
-
- Enable switch for notifications (experimental) in Page Settings
- https://bugs.webkit.org/show_bug.cgi?id=28930
-
- Now that desktop notifications are controlled by run-time switch,
- set that switch to true for DumpRenderTree.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::QueryInterface):
-
-2009-09-24 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. SnowLeopard fixes for Mac dependencies.
-
- * wx/build/build_utils.py:
- * wx/build/settings.py:
- * wx/install-unix-extras:
-
-2009-09-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Oliver Hunt.
-
- Add support for DRT to send mouse wheel events.
-
- https://bugs.webkit.org/show_bug.cgi?id=29348
- [Gtk] Scrollwheel on horizontal scrollbars should slide horizontally
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseWheelToCallback):
-
-2009-09-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue needs web-based status reporting
- https://bugs.webkit.org/show_bug.cgi?id=29307
-
- Add a first-pass web-based status for the commit-queue.
- The bot is currently reachable at:
- http://webkit-commit-queue.appspot.com/
-
- * CommitQueueStatus/app.yaml: Added.
- - Application description file required by App Engine.
- * CommitQueueStatus/filters/__init__.py: Added.
- - Required by python to treat 'filters' as a module.
- * CommitQueueStatus/filters/webkit_extras.py: Added.
- - Support for turning 'bug 123' and 'patch 123' into links.
- This lets us use plain text strings in our logs yet display nice HTML (help prevent XSS attacks on the page).
- * CommitQueueStatus/index.html: Added.
- * CommitQueueStatus/index.yaml: Added.
- - Some auto-generated file from app engine.
- * CommitQueueStatus/queue_status.py: Added.
- - The core logic of this bot. We could eventually split this file out into pieces.
- * CommitQueueStatus/stylesheets/main.css: Added.
- - Some basic lame-o CSS to make the page look less awful.
- * CommitQueueStatus/update_status.html: Added.
- - The form that the commit-queue (or a human) can use to update the status.
- * Scripts/bugzilla-tool:
- - Add some very basic update_status calls.
- * Scripts/modules/statusbot.py: Added.
- - Knows how to post to the CommitQueueStatus web application.
-
-2009-09-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29712> mark-bug-fixed: add -m|--comment switch
-
- Reviewed by Adam Roben.
-
- * Scripts/mark-bug-fixed:
- (MarkBugFixed.__init__): Added -m|--comment switch to list of
- parse options.
- (MarkBugFixed.main): When specified, prepend comment from
- -m|--comment command-line switch to the bug comment.
-
-2009-09-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Jan Alonzo.
-
- [GTK] DRT must display window instead of just realizing, to enable synthesizing events correctly
- https://bugs.webkit.org/show_bug.cgi?id=29693
-
- Show the window, to be able to synthesize events correctly.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- (main):
-
-2009-09-24 Oliver Hunt <oliver@apple.com>
-
- Reviewed by NOBODY(rollout)
-
- Roll out r48712 as it is incorrect.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
-
-2009-09-24 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=29005
- The indices of RuntimeArray should be enumerated like for a regular array.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController arrayOfString]):
-
-2009-09-23 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28910> Move bugzilla-tool mark-fixed to standalone mark-bug-fixed tool
-
- Reviewed by Darin Adler.
-
- Also fixed a bug where specifying a revision on the command-line
- as 'r12345' would fail. See <http://webkit.org/b/29699>.
-
- * Scripts/bugzilla-tool: Updated module import statements.
- (parse_bug_id): Removed. Moved to bugzilla.py.
- (bug_comment_from_svn_revision): Removed. Moved to comments.py.
- (bug_comment_from_commit_text): Removed. Moved to comments.py.
- (MarkBugFixed): Removed. Code moved to mark-bug-fixed.
- (BugzillaTool.__init__): Removed mark-fixed subcommand.
- * Scripts/mark-bug-fixed: Added.
- * Scripts/modules/bugzilla.py:
- (parse_bug_id): Added. Moved from bugzilla-tool.
- * Scripts/modules/comments.py: Added.
- (bug_comment_from_svn_revision): Added. Moved from bugzilla-tool.
- (bug_comment_from_commit_text): Added. Moved from bugzilla-tool.
-
-2009-09-23 Marshall Culpepper <mculpepper@appcelerator.com>
-
- Reviewed by Eric Seidel.
-
- jpeg.lib is now libjpeg.lib in DRT Cairo dependencies. return
- "false" in non-implemented stub for setAlwaysAcceptCookies.
- https://bugs.webkit.org/show_bug.cgi?id=29661
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTree.cpp:
-
-2009-09-23 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Xan Lopez.
-
- [GTK] need to dump number of pending unload handlers
- https://bugs.webkit.org/show_bug.cgi?id=29685
-
- Implement dumping of the number of pending unload handlers.
-
- The following tests will pass:
-
- fast/loader/unload-form-about-blank.html
- fast/loader/unload-form-post-about-blank.html
- fast/loader/unload-form-post.html
- fast/loader/unload-form.html
- fast/loader/unload-hyperlink.html
- fast/loader/unload-javascript-url.html
- fast/loader/unload-reload.html
- fast/loader/unload-window-location.html
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (getFrameNameSuitableForTestResult):
- (webViewLoadFinished):
-
-2009-09-22 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- js tests should move into jstests subdirectory instead of resources/
- https://bugs.webkit.org/show_bug.cgi?id=25880
-
- Remove support of resources directory.
-
- * Scripts/make-script-test-wrappers:
-
-2009-09-22 Eric Seidel <eric@webkit.org>
-
- No review, only fixing typo (missing space character).
-
- Fix typo from https://bugs.webkit.org/show_bug.cgi?id=29220
-
- * Scripts/run-webkit-tests:
-
-2009-09-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- run-webkit-tests needs a --repeat-each=N option (AAABBBCCC instead of ABCABCABC)
- https://bugs.webkit.org/show_bug.cgi?id=29220
-
- * Scripts/run-webkit-tests:
-
-2009-09-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- svn-apply can't handle single-line binary file additions
- https://bugs.webkit.org/show_bug.cgi?id=29100
-
- Fixed the regexp and added a unit test.
-
- * Scripts/modules/scm_unittest.py:
- * Scripts/svn-apply:
-
-2009-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- post-diff and post-commits should be able to find bug urls in ChangeLogs.
- https://bugs.webkit.org/show_bug.cgi?id=29206
-
- * Scripts/bugzilla-tool:
- - Share common options by adding a PostDiffAsPatchToBug.posting_options() method.
- - Rename --no-comment to --add-log-as-comment and reverse behavior.
- Comments tend to just be noise. I'll eventually remove this argument if no one uses it.
- - Split out code into helper functions to try and make execute() more legible.
- - Make post-diff find the bug url in the ChangeLogs if not passed as an argument.
- - Fallback to bug urls in commit diffs, instead of just in commit messages,
- meaning post-commits will now find bug urls in ChangeLogs.
-
-2009-09-21 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Maciej Stachowiak.
-
- --parse-only parameter wasn't passed to SunSpider/sunspider script.
- https://bugs.webkit.org/show_bug.cgi?id=29611
-
- * Scripts/run-sunspider: Missing parameter passing added.
-
-2009-09-20 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29521> run-webkit-tests: use require instead eval to load DumpRenderTreeSupport module
-
- Reviewed by Mark Rowe.
-
- The require statement is like the use statement, except that it
- is run during script execution instead of during the 'BEGIN'
- phase. This makes it possible to change @INC before the require
- statement is run. See 'require' and 'use' in the perlfunc(1)
- manpage and 'BEGIN' in perlmod(1) manpage.
-
- * Scripts/run-webkit-tests: Replace eval statement with require
- statement.
-
-2009-09-18 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes. Fix the config name under git and allow users to specify
- their own waf install for experimenting with new versions.
-
- * Scripts/webkitdirs.pm:
- * wx/build/settings.py:
-
-2009-09-18 Alex Milowski <alex@milowski.com>
-
- Reviewed by Maciej Stachowiak.
-
- Added checkWebCoreMathMLSupport and hasMathMLSupport to support
- checking for whether MathML tests should be run
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-08-28 Darin Adler <darin@apple.com>
-
- Reviewed by Mark Rowe.
-
- Break more of run-webkit-tests into separate functions
- https://bugs.webkit.org/show_bug.cgi?id=29497
-
- Some small steps toward improving run-webkit-tests. My goal is to
- refactor much more of the script into functions. Later we can add
- parallel test running to the tool. But better structure may help
- even if someone decides to translate this into another scripting
- language instead.
-
- * Scripts/run-webkit-tests: Break more pieces of the script into
- seprate functions. Added readSkippedFiles, findTestsToRun, and
- printResults functions. Removed custom code to skip results.html
- and instead just put it into the ignoredFiles hash. Fixed some
- indentation. Sorted function declarations, global variables,
- and options at the top of the file alphabetically so they're not
- in a semi-random order.
-
-2009-09-17 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, add missing dependency.
-
- * wx/browser/wscript:
-
-2009-09-16 Mark Rowe <mrowe@apple.com>
-
- Split the SnowLeopard build across a few machines.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-09-16 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix to support monolithic builds on Windows.
-
- * wx/build/wxpresets.py:
-
-2009-09-16 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, improve debug support and 2.9 support on MSW.
-
- * wx/build/settings.py:
- * wx/build/wxpresets.py:
-
-2009-09-16 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Blind try at fixing new test failure on Windows.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didReceiveTitle):
-
-2009-09-15 Alex Milowski <alex@milowski.com>
-
- Reviewed by Tor Arne Vestbø.
-
- Added mathml toggle
-
- * Scripts/build-webkit:
-
-2009-09-15 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Allow waf build to support Python < 2.6.
-
- * wx/build/waf_extensions.py:
-
-2009-09-14 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add LayoutTests infrastructure to enable and disable webgl tests.
- https://bugs.webkit.org/show_bug.cgi?id=29254
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-09-14 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Darin Adler.
-
- Add --iterations option to run-webkit-tests to repeat the tests N times
- https://bugs.webkit.org/show_bug.cgi?id=29263
-
- When run with --iterations N, run-webkit-tests will repeat the tests N times.
-
- * Scripts/run-webkit-tests:
-
-2009-09-14 Brady Eidson <beidson@apple.com>
-
- Not reviewed, maybe should've been:
-
- Cleaning up more Windows-specific fallout from the fix for:
- <rdar://problem/7174050> and https://bugs.webkit.org/show_bug.cgi?id=29160
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge): Correct printf() formatter,
- and call the correct method to get the Sender.
-
-2009-09-14 Jon Honeycutt <jhoneycutt@apple.com>
-
- GTK build fix.
-
- Unreviewed.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::setLogScrollingStartEvents):
-
-2009-09-11 Jon Honeycutt <jhoneycutt@apple.com>
-
- DRT/test part of
- <rdar://problem/7197644> WebKit should broadcast an MSAA event when
- jumping to a named anchor
-
- https://bugs.webkit.org/show_bug.cgi?id=28899
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (logScrollingStartEventsCallback):
- Turn on logging of scrolling start events.
- (AccessibilityController::getJSClass):
- Add a "logScrollingStartEvents" to the AccessibilityController's JS
- class definition.
- (AccessibilityController::resetToConsistentState):
- Turn off logging of scrolling start events.
-
- * DumpRenderTree/AccessibilityController.h:
- Declare setLogScrollingStartEvents(). Add a member for the scrolling
- start event hook.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.cpp:
- (AccessibilityController::setLogScrollingStartEvents):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- Initialize the handle to 0.
- (logEventProc):
- Renamed from logFocusEventProc; now logs scrolling start events, too.
- Removed the assertion that the event is a focus event. Added a switch
- to print a message for focus, scrolling start, and other, unknown
- events.
- (AccessibilityController::setLogFocusEvents):
- Changed to use logEventProc.
- (AccessibilityController::setLogScrollingStartEvents):
- If turning logging off, unhook the scrolling start event hook, and clear
- the member holding the handle. If turning on, query for the root
- accessible, so that accessibility is enabled for the WebView, and call
- SetWinEventHook to setup an event hook using logEventProc as the
- callback function.
-
-2009-09-14 Brady Eidson <beidson@apple.com>
-
- Windows build fix.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAuthenticationPasswordCallback):
- (setAuthenticationUsernameCallback):
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
-
-2009-09-14 Brady Eidson <beidson@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Safari 4 cannot be used to update firmware on Linksys routers.
- <rdar://problem/7174050> and https://bugs.webkit.org/show_bug.cgi?id=29160
-
- Add the ability for DRT to handle authentication challenges.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAuthenticationPasswordCallback):
- (setAuthenticationUsernameCallback):
- (setHandlesAuthenticationChallengesCallback):
- (LayoutTestController::staticFunctions):
-
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::handlesAuthenticationChallenges):
- (LayoutTestController::setHandlesAuthenticationChallenges):
- (LayoutTestController::authenticationUsername):
- (LayoutTestController::setAuthenticationUsername):
- (LayoutTestController::authenticationPassword):
- (LayoutTestController::setAuthenticationPassword):
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:didReceiveAuthenticationChallenge:fromDataSource:]):
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
- * DumpRenderTree/win/ResourceLoadDelegate.h:
-
-2009-09-12 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Test for <rdar://problem/6954546> and <rdar://problem/7090444>.
-
- Add a flag on the test plug-in that asks it to clear the document during the call to NPP_New.
- This is the trigger for both <rdar://problem/6954546> and <rdar://problem/7090444>.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
-
-2009-09-14 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix for non-wxPython builds and a fix for errors when updating swig.py.
-
- * wx/build/build_utils.py:
- * wx/build/settings.py:
-
-2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Build fix for windows build.
-
- * Scripts/bisect-builds: Add missing paranthesis for tmpdir function.
-
-2009-09-13 Kevin Ollivier <kevino@theolliviers.com>
-
- Fix typo accidently landed in last commit.
-
- * wx/build/settings.py:
-
-2009-09-13 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix, error out if using the wrong Python.
-
- * wx/build/settings.py:
-
-2009-09-13 Xan Lopez <xlopez@igalia.com>
-
- Build fix for GTK+ < 2.14.
-
- Do not use gtk_widget_get_window, access the window directly
- through the struct.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (keyDownCallback):
-
-2009-09-13 Martin Robinson <martin.james.robinson@gmail.com>
-
- Reviewed by Xan Lopez and Jan Alonzo.
-
- [GTK] EventSender does not set 'window' property on synthesized GDK events
- https://bugs.webkit.org/show_bug.cgi?id=29169
-
- Set the window property on synthesized GDK events in the GTK+ EventSender.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (keyDownCallback):
-
-2009-09-12 Drew Wilson <atwilson@google.com>
-
- Reviewed by Mark Rowe.
-
- run-webkit-tests has a timeout value that is too low
- https://bugs.webkit.org/show_bug.cgi?id=29223
-
- * Scripts/run-webkit-tests:
- Changed timeout value to 20 seconds to avoid timing out too early.
-
-2009-09-11 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Mark dependencies as mandatory and declare which MSVC versions and
- architectures are supported for building wxWebKit.
-
- * wx/build/settings.py:
-
-2009-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- bugzilla-tool rollout threw exception under svn
- https://bugs.webkit.org/show_bug.cgi?id=29211
-
- * Scripts/modules/scm.py: add missing return, and convert number arguments to strings.
- * Scripts/modules/scm_unittest.py: add testing for this fix.
-
-2009-09-11 Brian Weinstein <bweinstein@apple.com>
-
- Add myself to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool land-patches should only fail-fast in --commit-queue mode
- https://bugs.webkit.org/show_bug.cgi?id=29201
-
- * Scripts/bugzilla-tool:
-
-2009-09-11 Adam Roben <aroben@apple.com>
-
- Make commit-log-editor move common prefixes to the top of the log
-
- Fies <http://webkit.org/b/29190> commit-log-editor should move common
- prefixes to the top of the commit log
-
- Reviewed by Darin Adler.
-
- * Scripts/commit-log-editor: Find and remove the longest common prefix
- ending in a double newline from each ChangeLog entry, then put that
- common prefix at the top of the commit log.
- (removeLongestCommonPrefixEndingInDoubleNewline): Added. Finds,
- removes, and returns the longest common prefix ending in a double
- newline from a hash of strings
-
-2009-09-11 Eric Seidel <eric@webkit.org>
-
- Fix obvious typo in previous commit, no review.
-
- bugzilla-tool should automate rollouts
- https://bugs.webkit.org/show_bug.cgi?id=26715
-
- * Scripts/bugzilla-tool: add back missing "scm" argument.
-
-2009-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool should automate rollouts
- https://bugs.webkit.org/show_bug.cgi?id=26715
-
- bugzilla-tool rollout will do the rollout locally and leave the diff for you to verify and commit.
- The --complete-rollout option will automatically land and update the bug.
- Eventually --complete-rollout will be default, but that will require more testing.
-
- This first pass is good enough for others to try and file bugs about.
-
- * Scripts/bugzilla-tool:
- - Move modified_changelogs into scm.py.
- - Move svn_revision_from_commit_text logic into scm.py.
- - Add RolloutCommit command.
- * Scripts/modules/bugzilla.py:
- - Add reopen_bug command used by RolloutCommit.
- * Scripts/modules/scm.py:
- - Add functions to support RolloutCommit.
- - Abstract find_uuid into value_from_svn_info so it can be re-used for _repository_url (needed by svn merge).
- - Add a str() call so that svn_commit_log can take a numeric argument.
- - Remove a bunch of very slow code from last_svn_commit_log and used the built-in 'BASE' alias instead.
- - Made dry_run commits return something that svn_revision_from_commit_text can parse.
- * Scripts/modules/scm_unittest.py:
- - Add read_from_path for easy file reading.
- - Put test4 on a new line to make reverts work w/o conflict.
- - Add an "svn update" call so that the checkout revision matches the server revision.
- - Add tests for svn_revision_from_commit_text.
- - Add a simple test for apply_reverse_diff.
- - Add a new self.scm member and use it in the new tests (eventually other tests can use it too).
- - Add test for svn_commit_log to make sure my 'BASE' change above worked as expected.
-
-2009-09-11 Adam Roben <aroben@apple.com>
-
- Get user script/stylesheet tests running on Windows
-
- Fixes <http://webkit.org/b/29181> User script/stylesheet tests are
- skipped on Windows
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Link all configurations
- against comsuppw.lib so we can use _bstr_t.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Fixed #include
- order, added #include of comutil.h for _bstr_t.
-
- (bstrT): Helper function to convert a JSStringRef to a _bstr_t.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- Implemented. Implementations were based on those in
- LayoutTestControllerMac.mm.
-
-2009-09-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29147> run-webkit-tests: make -h show help
-
- Reviewed by Mark Rowe.
-
- * Scripts/run-webkit-tests: Updated to make -h switch show help.
-
-2009-09-10 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Add WebCore/websockets directory in wx build system.
- https://bugs.webkit.org/show_bug.cgi?id=28038
-
- * wx/build/settings.py:
-
-2009-09-10 Martin Robinson <martin.james.robinson@gmail.com>
-
- [GTK] EventSender does not properly convert some keyDown strings
- https://bugs.webkit.org/show_bug.cgi?id=29119
-
- Add more keyDown string to character code conversions for GTK+ EventSender.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback):
-
-2009-09-09 Steve Block <steveblock@google.com>
-
- Reviewed by Maciej Stachowiak.
-
- Geolocation Coordinates::toString() prints bogus values for unspecified properties.
- https://bugs.webkit.org/show_bug.cgi?id=29080
-
- * Scripts/make-script-test-wrappers: Modified. Adds asynchronous Geolocation tests to exclusion list.
-
-2009-09-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Eric Carlson.
-
- reviewer/committer lookups are backwards
- https://bugs.webkit.org/show_bug.cgi?id=29113
-
- I also moved Eric Carlson from the committer list to the reviewer list now that he is one.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/committers.py:
-
-2009-09-09 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Eric Seidel.
-
- svn-unapply doesn't revert directories correctly
- https://bugs.webkit.org/show_bug.cgi?id=29065
-
- * Scripts/svn-unapply: Make svnStatus consistently return status
- lines including a newline.
- * Scripts/svn-apply: Keep svnStatus in sync with the one in
- svn-unapply, in lieu of moving it to a common file.
-
-2009-09-09 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Eric Seidel.
-
- svn-apply doesn't handle changes to files copied to new directories properly
- https://bugs.webkit.org/show_bug.cgi?id=29059
-
- * Scripts/svn-apply: Don't treat "--- revision 0" patches as being
- additions if we know that we've just copied a file to this name.
-
-2009-09-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue hangs if a builder has never built
- https://bugs.webkit.org/show_bug.cgi?id=29091
-
- * Scripts/modules/buildbot.py:
- * Scripts/modules/buildbot_unittest.py:
-
-2009-09-09 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] DumpRenderTree needs eventSender object and implementation
- https://bugs.webkit.org/show_bug.cgi?id=25990
-
- Implements most of the EventSender object's functionality for
- the DumpRenderTree tool. Implementation still lacks support
- for drag and drop tests and forward leaps.
-
- Based on work by Holger Hans Peter Freyther.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): Focus on the view before loading a new test.
- (webViewWindowObjectCleared):
- * DumpRenderTree/gtk/EventSender.cpp: Added.
- (getDragModeCallback):
- (setDragModeCallback):
- (leapForwardCallback):
- (contextClickCallback):
- (updateClickCount):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (beginDragWithFilesCallback):
- (replaySavedEvents):
- (keyDownCallback):
- (textZoomInCallback):
- (textZoomOutCallback):
- (zoomPageInCallback):
- (zoomPageOutCallback):
- (getClass):
- (makeEventSender):
- * DumpRenderTree/gtk/EventSender.h: Added.
- * GNUmakefile.am: Add build rules for EventSender.
-
-2009-09-09 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=28953
-
- Added pre- and post- build events so that on build failure, the file
- buildfailed is written to the directory $(WebKitOutputDir).
-
- * WinLauncher/WinLauncher.vcproj:
-
-2009-09-09 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-09-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue gets stuck if a non-committer sets commit-queue+ or review+
- https://bugs.webkit.org/show_bug.cgi?id=28605
- https://bugs.webkit.org/show_bug.cgi?id=28916
-
- * Scripts/bugzilla-tool:
- - Fix comment and adjust reject_patch_from_commit_queue call to pass "manual commit"
- comment now that it's used for rejecting patches for invalid committers too.
- - Pass reject_invalid_patches=True for commit-queue calls, normally we just ignore patches with invalid reviewers, the commit-queue rejects them.
- - Make the commit queue print patches count instead of bugs count, this also fixes https://bugs.webkit.org/show_bug.cgi?id=28916.
- * Scripts/modules/bugzilla.py:
- - Make _parse_attachment_element not validate reviewer/committer.
- - Share flag parsing code in _parse_attachment_flag.
- - Add _validate* methods for validating reviewers and committers and updating bugs when validation fails.
- - Add reject_invalid_patches argument so the commit-queue can update bugs on failed validation and other "read only" commands will not.
- - Add reject_patch_from_review_queue using a new _set_flag_on_attachment abstraction.
- * Scripts/modules/bugzilla_unittest.py:
- - Update this test to no longer expect committer/reviewer validation.
- * Scripts/modules/committers.py:
- - Return None on failed lookups instead of raising Exceptions.
- * Scripts/modules/committers_unittest.py:
- - Update tests to expect None returns instead of exceptions.
-
-2009-09-09 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/29061> Fix obvious copy-paste error in AccessibilityUIElement::clickPointY()
-
- Reviewed by Mark Rowe.
-
- No change to layout test results.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::clickPointY): Changed to return y value
- instead of x value.
-
-2009-09-08 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Mark Rowe.
-
- Reduce dglazkov's boboiness by properly concatenating revision value.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Used substitution
- rather than "+".
-
-2009-09-08 Kevin Ollivier <kevino@theolliviers.com>
-
- wxWebKit Python extension build fix - get swig.py if it doesn't exist.
-
- * wx/build/build_utils.py:
-
-2009-09-08 Mark Rowe <mrowe@apple.com>
-
- Fix an incorrect variable name in UpdateChromiumSource.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-09-08 Mark Rowe <mrowe@apple.com>
-
- Don't check for leaks on the release SnowLeopard builder.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-09-08 Mark Rowe <mrowe@apple.com>
-
- Add a SnowLeopard release builder.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-09-08 David Levin <levin@chromium.org>
-
- Reviewed by Darin Adler.
-
- Remove end of line whitespace check from check-webkit-style.
- https://bugs.webkit.org/show_bug.cgi?id=29053
-
- * Scripts/modules/cpp_style.py:
-
-2009-09-08 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Darin Adler.
-
- Fix DumpRenderTree build from clean tree on Tiger
- https://bugs.webkit.org/show_bug.cgi?id=28927
-
- * DumpRenderTree/mac/PerlSupport/Makefile: Ensure the
- DerivedSources/DumpRenderTree directory exists when
- building on Tiger.
-
-2009-09-08 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix after introduction of platform/mock directory.
-
- * wx/build/settings.py:
-
-2009-09-08 Yael Aharon <yael.aharon@nokia.com>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-09-08 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Darin Adler.
-
- prepare-ChangeLog too chatty on file additions
- https://bugs.webkit.org/show_bug.cgi?id=29019
-
- * Scripts/prepare-ChangeLog: Omit description of added properties
- on newly added files.
-
-2009-09-08 Steve Block <steveblock@google.com>
-
- Reviewed by Adam Barth.
-
- Adds a LayoutTestController method to set the permission state for Geolocation.
- This is required to use the mock Geolocation service for testing.
- https://bugs.webkit.org/show_bug.cgi?id=29027
-
- * DumpRenderTree/LayoutTestController.cpp: Modified.
- (setDatabaseQuotaCallback): Modified. Style fix.
- (setGeolocationPermissionCallback): Added. Sets the Geolocation permission state.
- (LayoutTestController::staticFunctions): Modified. Registers the above function on the LayoutTestController.
- * DumpRenderTree/LayoutTestController.h: Modified.
- (LayoutTestController::setGeolocationPermission): Added. Sets the Geolocation permission state.
- (LayoutTestController::isGeolocationPermissionSet): Added. Returns whether the Geolocation permission has been set.
- (LayoutTestController::geolocationPermission): Added. Returns the Geolocation permission state.
- * DumpRenderTree/mac/UIDelegate.mm: Modified.
- (-[UIDelegate webView:frame:requestGeolocationPermission:securityOrigin:]): Added. Implement chrome method to respond to request for Geolocation permission state. Response is made using above methods to access permission state.
-
-2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] QtWebKit single API to enable persistency
- https://bugs.webkit.org/show_bug.cgi?id=28682
-
- Use the new enablePersistentStorage API instead
- of enabling all persistent features one-by-one.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2009-09-07 Andras Becsi <becsi.andras@stud.u-szeged.hu>
-
- Reviewed by Tor Arne Vestbø.
-
- Refactor --strict switch to --ignore-metrics and correct the
- implementation to make the feature usable on all platforms.
- https://bugs.webkit.org/show_bug.cgi?id=28907
-
- run-webkit-tests --ignore-metrics strips the font related metrics from
- the actual and expected data before comparing them.
- In this way the render trees can be checked for obvious differences but
- a successful test implies by no means that the layout is actually correct.
-
- * Scripts/run-webkit-tests:
-
-2009-09-07 Steve Block <steveblock@google.com>
-
- Reviewed by Adam Barth.
-
- Adds a mock Geolocation service. This will be used to provide predictable behavior of the
- Geolocation API for use in LayoutTests. Later changes will integrate the the mock
- Geolocation service with DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=28264
-
- * DumpRenderTree/LayoutTestController.cpp: Modified.
- (setMockGeolocationPositionCallback): Added. Configures the mock Geolocation service.
- (setMockGeolocationErrorCallback): Added. Configures the mock Geolocation service.
- (LayoutTestController::staticFunctions): Added. Registers the above functions on the LayoutTestController.
- * DumpRenderTree/LayoutTestController.h: Modified.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Modified.
- (LayoutTestController::setMockGeolocationPosition): Added. Configures the mock Geolocation service.
- (LayoutTestController::setMockGeolocationError): Added. Configures the mock Geolocation service.
-
-2009-09-07 Drew Wilson <atwilson@google.com>
-
- Reviewed by David Levin.
-
- Enable SHARED_WORKERS by default
- https://bugs.webkit.org/show_bug.cgi?id=28959
-
- * Scripts/build-webkit:
-
-2009-09-07 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fixes for wx SVN trunk.
-
- * wx/build/settings.py:
-
-2009-09-04 Kevin Ollivier <kevino@theolliviers.com>
-
- wx build fix. Switch USE_ defines over to the compiler so that they can be
- checked by files not including config.h (like WebCorePrefix.h).
-
- * wx/build/settings.py:
-
-2009-09-04 Adam Barth <abarth@webkit.org>
-
- Unreviewed build fix.
-
- Update declaration of FrameLoadDelegate to reflect that
- IWebFrameLoadDelegatePrivate2 inherits from
- IWebFrameLoadDelegatePrivate.
-
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2009-09-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=24696
-
- Add testing instrumentation for mixed content.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:]):
- (-[FrameLoadDelegate webView:didRunInsecureContent:]):
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (descriptionSuitableForTestResult):
- (FrameLoadDelegate::QueryInterface):
- (FrameLoadDelegate::didDisplayInsecureContent):
- (FrameLoadDelegate::didRunInsecureContent):
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2009-09-03 Kevin Watters <kevinwatters@gmail.com>
-
- Reviewed by Kevin Ollivier.
-
- [wx] Frames support
- https://bugs.webkit.org/show_bug.cgi?id=19041
-
- * wx/build-wxwebkit:
-
-2009-09-02 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28880> svn-apply --force doesn't actually work
-
- Reviewed by Eric Seidel.
-
- This fixes "svn-apply --force" and adds unit tests for the
- scm.apply_patch() method which uses this script.
-
- * Scripts/svn-apply: Created $globalExitCode variable that
- defaults to 0. Exit with a value of $globalExitCode when the
- script is finished.
- (applyPatch): Ignore a non-zero $exitCode if $force is true, but
- set $globalExitCode to $exitCode so that svn-apply exits with a
- non-zero status if any patches did not apply cleanly. Also
- print out the actual patch command if $force was not true.
-
- * Scripts/modules/scm.py:
- (scripts_directory): Added. Extracted from script_path().
- (script_path): Extracted scripts_directory().
- * Scripts/modules/scm_unittest.py: Import urllib.
- (SVNTestRepository.setup): Save the original working directory
- in test_object since this represents the WebKit repository from
- where the unit tests are run.
- (SCMTest): Created new super class to hold utility methods.
- (SCMTest._create_patch): Creates a patch file on disk and a
- dictionary for use with scm.svn_apply().
- (SCMTest._setup_webkittools_scripts_symlink): Sets up a symlink
- back to WebKitTools/Scripts in the test repository so that
- scm.apply_patch() is able to find the svn-apply script.
- (SVNTest): Inherit from SCMTest instead of unittest.TestCase.
- (SVNTest.tearDown): Make sure to change directories back to the
- original_path before the next test.
- (SVNTest.test_apply_svn_patch): New test case for applying an
- svn patch with scm.apply_patch().
- (SVNTest.test_apply_svn_patch_force): New test case for applying
- an svn patch with scm.apply_patch() that conflicts.
- (GitTest): Inherit from SCMTest instead of unittest.TestCase.
- (GitTest.tearDown): Make sure to change directories back to the
- original_path before the next test.
- (GitTest.test_apply_git_patch): New test case for applying a git
- patch with scm.apply_patch().
- (GitTest.test_apply_git_patch_force): New test case for applying
- a git patch with scm.apply_patch() that conflicts.
-
-2009-09-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Mark Rowe.
-
- [Qt] Add support for platform-spesific layout-test results
-
- For the Qt port we use the qt-[mac|linux|win] directories and then fall
- back to the generic qt directory for both test results and skipped list.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-09-02 Laurent Cerveau <lcerveau@me.com>
-
- Reviewed by David Kilzer.
-
- <http://webkit.org/b/25517> build-webkit script should print build time at end
-
- * Scripts/build-webkit:
- Added startTime and endTime variable so that the build time is computed and printed as
- part of the build message; display formatting has been separated in a dedicated subroutine.
-
-2009-09-02 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28881> svn-create-patch should check if the repo path is the same when trying to find the root
-
- Reviewed by Eric Seidel.
-
- * Scripts/VCSUtils.pm:
- (determineSvnRoot): Added back check for repository root that
- was removed in r46134 when this code lived in svn-create-patch.
- It's necessary to check both the repository root and the
- repository UUID in case two different working directories are
- checked out from the same repository.
-
-2009-09-02 Timothy Hatcher <timothy@apple.com>
-
- Use new 512x512 icons for nightly builds.
-
- Rubber-stamped by Mark Rowe.
-
- * WebKitLauncher/webkit.icns:
-
-2009-09-02 Kevin Ollivier <kevino@theolliviers.com>
-
- waf build fix. Remove local variable shadowing global.
-
- * wx/build/settings.py:
-
-2009-09-02 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by David Kilzer.
-
- Calls exitStatus function from the main package where it is also defined.
-
- * Scripts/VCSUtils.pm:
-
-2009-09-02 Kevin Ollivier <kevino@theolliviers.com>
-
- waf build fixes for Windows/MSVC and Mac/Snow Leopard.
-
- * wx/browser/wscript:
- * wx/build/build_utils.py:
- * wx/build/settings.py:
-
-2009-08-10 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Eric Seidel.
-
- Changes needed for build-webkit to support the waf build system for the wx port.
-
- https://bugs.webkit.org/show_bug.cgi?id=27619
-
- * Scripts/build-webkit:
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
-
-2009-09-02 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27168> With Subversion 1.6, update-webkit prompts on conflicts
-
- Reviewed by Eric Seidel.
-
- * Scripts/update-webkit: Added "--accept postpone" to
- @svnOptions when running with svn-1.6 or newer.
-
-2009-09-02 David Kilzer <ddkilzer@apple.com>
-
- Moved svn 1.6 version check into VCSUtils::isSVNVersion16OrNewer()
-
- Reviewed by Eric Seidel.
-
- * Scripts/VCSUtils.pm:
- (@EXPORT): Added &isSVNVersion16OrNewer.
- (svnVersion): Added. Internal method that gets the SVN version
- and caches it.
- (isSVNVersion16OrNewer): Added. Method that does the SVN 1.6
- version check.
- * Scripts/prepare-ChangeLog: Switched to use new
- isSVNVersion16OrNewer() method.
- * Scripts/resolve-ChangeLogs: Ditto.
- * Scripts/svn-create-patch: Ditto.
-
-2009-09-02 David Kilzer <ddkilzer@apple.com>
-
- Clean up VCSUtils.pm
-
- Reviewed by Eric Seidel.
-
- * Scripts/VCSUtils.pm: Added proper package statement. Fixed
- indentation of BEGIN block. Listed each exported method on a
- line by itself. Added methods to the export list after adding
- the package statement. Sorted module variables. Moved
- definiton of $gitRoot next to other module variables.
-
-2009-09-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Simon Hausmann.
-
- [Qt] Fix layout-test plugins/plugin-javascript-access.html
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2009-09-02 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- js tests should move into jstests subdirectory instead of resources/
- https://bugs.webkit.org/show_bug.cgi?id=25880
-
- make-script-wrappers supports both resources and script-tests directories.
- run-webkit-tests ignores files in script-tests.
- Move script tests of animations to check the new script is working.
-
- * Scripts/make-script-test-wrappers:
- * Scripts/run-webkit-tests:
-
-2009-09-02 Szabo Carol <carol.szabo@nokia.com>
-
- Reviewed by David Levin.
-
- check-webkit-style uses python from /usr/bin instead of the PATH
- https://bugs.webkit.org/show_bug.cgi?id=28225
-
- * Scripts/bugzilla-tool:
- * Scripts/check-webkit-style:
- * Scripts/run-webkit-unittests:
- * Scripts/update-sources-list.py:
- Changed the first line from
- #!/usr/bin/python
- to
- #!/usr/bin/env python
- which causes python to be invoked from the path location returned
- by "which python" when any of these scripts are launched.
- these are currently all the python scripts in WebKitTools/Scripts.
-
-2009-09-01 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28601> bugzilla-tool post-commits posts commits backwards
-
- Reviewed by Adam Barth.
-
- * Scripts/modules/scm.py:
- (Git.commit_ids_from_commitish_arguments): Reverse the list of
- commits returned from git-rev-list since we always want to post
- the oldest patches first to bugs.webkit.org.
- * Scripts/modules/scm_unittest.py:
- (run): Added return statement to return the output now that we
- want it sometimes.
- (SVNTestRepository._setup_test_commits): Added a fourth commit
- so the GitTest.test_commitish_order() test has more commits to
- work with.
- (GitTest.test_commitish_order): Added unit test for change to
- Git.commit_ids_from_commitish_arguments() in scm.py.
-
-2009-09-01 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28877> Implement bugzilla-tool mark-fixed
-
- Reviewed by David Levin.
-
- The mark-fixed subcommand is for those times when you don't use
- bugzilla-tool to commit a patch, but you want to use it to close
- the bug with a committed-revision message.
-
- * Scripts/bugzilla-tool:
- (bug_comment_from_svn_revision): Added. Extracted from
- bug_comment_from_commit_text().
- (bug_comment_from_commit_text): Extracted
- bug_comment_from_svn_revision() from this method.
- (MarkBugFixed.__init__): Added.
- (MarkBugFixed._fetch_commit_log): Added. Retrieves the commit
- log from the last commit if no svn revision is specified, else
- the commit log for the specified svn revision.
- (MarkBugFixed._determine_bug_id_and_svn_revision): Added.
- Attempts to determine the bug id and svn revision if one or both
- were not defined on the command line.
- (MarkBugFixed.execute): Added. Adds a comment about the
- revision that fixed the bug and closes the bug.
- (BugzillaTool.__init__): Added mark-fixed subcommand.
- * Scripts/modules/bugzilla.py:
- (Bugzilla.fetch_title_from_bug): Added. Returns the title of a
- bug given a bug id.
- * Scripts/modules/scm.py:
- (SCM.strip_r_from_svn_revision): Added. Utility method to strip
- the leading 'r' from an svn revision.
- (SCM.svn_commit_log): Added. Subclasses must override.
- (SCM.last_svn_commit_log): Added. Subclasses must override.
- (SVN.svn_commit_log): Added. Returns svn log for a given
- revision.
- (SVN.last_svn_commit_log): Added. Uses svnversion to find the
- last commit in an svn working directory and then runs svn log.
- (Git.svn_commit_log): Added. Returns svn log for a given
- revision.
- (Git.last_svn_commit_log): Added. Runs git-svn-log with a limit
- of one log message.
-
-2009-09-01 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28880> svn-apply --force doesn't actually work
-
- Reviewed by Brady Eidson.
-
- * Scripts/svn-apply:
- (applyPatch): Add "--force" to $options arrayref if $force is
- set.
-
-2009-09-01 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28725> resolve-ChangeLogs: determineVCSRoot() returns incorrect repository root during git filter-branch
-
- Reviewed by Adam Roben.
-
- When git-filter-branch has been invoked to rewrite ChangeLog
- files on series of git commits, it changes directories into
- .git-rewrite/t before re-running resolve-ChangeLogs. This
- causes determineVCSRoot() in VCSUtils.pm to return
- ".git-rewrite/t", which causes that path to be prepended to all
- ChangeLog paths, which results in an error like this:
-
- error: pathspec '.git-rewrite/t/ChangeLog' did not match any file(s) known to git.
- Died at WebKitTools/Scripts/resolve-ChangeLogs line 376.
-
- The correct way to fix this is not to try to find the repository
- root when invoked by git-filter-branch.
-
- * Scripts/resolve-ChangeLogs: If isInGitFilterBranch() is true,
- set $relativePath to '.' instead of calling
- chdirReturningRelativePath(determineVCSRoot()).
- (isInGitFilterBranch): Added. Checks for the existence of the
- MAPPED_PREVIOUS_COMMIT environment variable.
-
-2009-09-01 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Add support for Fedora distros in the http tests
- https://bugs.webkit.org/show_bug.cgi?id=28263
-
- Add detection code for Fedora distribution, and use the proper
- httpd conf file when needed.
-
- * Scripts/run-webkit-httpd:
- * Scripts/run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2009-09-01 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [Gtk] DRT needs implementation of overridePreference
- https://bugs.webkit.org/show_bug.cgi?id=28830
-
- Implement overridePreference.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- (setDefaultsToConsistentStateValuesForTesting):
- (runTest):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (toWebSettingKey):
- (LayoutTestController::overridePreference):
-
-2009-09-01 Joseph Pecoraro <joepeck@webkit.org>
-
- <http://webkit.org/b/28623> svn-[un]apply should change directories to the repository root before [un]applying
-
- Reviewed by Eric Seidel.
-
- Jump back and forth between the repository root directory (to apply) and the
- directory the script was run from (to find the patch).
-
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
-
-2009-08-31 Adam Roben <aroben@apple.com>
-
- Fall back to a Release version of Safari if a Debug one doesn't exist
-
- <http://webkit.org/b/28849>
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitdirs.pm:
- (safariPath): If the user is working with a Debug build, but there's
- no Debug version of Safari present, fall back to using a Release
- version of Safari.
-
-2009-08-31 Adam Roben <aroben@apple.com>
-
- Make safariPath() work for Debug builds of Safari on Windows
-
- <http://webkit.org/b/28849>
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitdirs.pm:
- (safariPath): If the user is working with a Debug build, add the
- _debug suffix to Safari.exe.
-
-2009-08-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue needs a master process
- https://bugs.webkit.org/show_bug.cgi?id=28040
-
- Add a bugzilla-tool commit-queue command
- Keeps per-bug logs, but doesn't yet upload them anywhere.
-
- * Scripts/bugzilla-tool: Add LandPatchesFromCommitQueue to handle 'commit-queue'
- * Scripts/modules/buildbot.py: remove noisy log message
- * Scripts/modules/logging.py: add a 'tee()' call for splitting outputs in python
-
-2009-08-28 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Geolocation needs permission API before being enabled by default
-
- Build the Gtk port with geolocation enabled. This option is only
- enabled for the buildbot. The autotools option will be enabled by
- default once the permissions API is implemented.
-
- * Scripts/build-webkit:
-
-2009-08-26 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by David Kilzer.
-
- Make prepare-ChangeLog notice property changes
- https://bugs.webkit.org/show_bug.cgi?id=28675
-
- Make the generated ChangeLog entry include a short description of
- property changes if there were such changes. Also make
- prepare-ChangeLog not bail if the only changes are property changes.
-
- * Scripts/prepare-ChangeLog:
-
-2009-08-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Oliver Hunt.
-
- Don't let local files access web URLs
- https://bugs.webkit.org/show_bug.cgi?id=28480
-
- A bunch of our LayoutTests rely on our old behavior, so we explicitly
- grant local files universal access during testing. Mainly, these tests
- involve making XMLHttpRequests for data URLs.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-08-26 John Gregg <johnnyg@google.com>
-
- Reviewed by David Levin.
-
- Minor style correction and include fix for notifications
- https://bugs.webkit.org/show_bug.cgi?id=28745
-
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
- change to correct EnumStyle
- (DRTDesktopNotificationPresenter::checkNotificationPermission):
-
-2009-08-26 David Levin <levin@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- XMLHttpRequest.withCredentials=false shouldn't save cookies.
- https://bugs.webkit.org/show_bug.cgi?id=28743
-
- Added the support to the layout test controller on OSX and
- Windows (for CFNETWORK) to allow for changing the accept cookie
- policy.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Added a bool
- to track the state of accepting cookies.
- (setAlwaysAcceptCookiesCallback): Standard wrapper method
- to go from js to a C++ method.
- (LayoutTestController::staticFunctions): Added the
- setAlwaysAcceptCookies method to the js layoutTestController.
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::alwaysAcceptCookies): Returns the value.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAlwaysAcceptCookies): Stub out method.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Reset the accept cookie to
- its default.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAlwaysAcceptCookies): Does the work for
- OSX to change the cookie accept policy.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (setAlwaysAcceptCookies): Method to handle all the calls necessary
- to change the accept cookie policy on Windows.
- (resetDefaultsToConsistentValues): Reset the accept cookie to
- its default.
- * DumpRenderTree/win/DumpRenderTreeWin.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAlwaysAcceptCookies): Stub out method.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAlwaysAcceptCookies): Stub out method.
-
-2009-08-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed.
-
- Remove accidentally left in clobber option.
- https://bugs.webkit.org/show_bug.cgi?id=28400
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Removed clobber option.
-
-2009-08-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Mark Rowe.
-
- Add canary-style Chromium WebKit build slave to the waterfall.
- https://bugs.webkit.org/show_bug.cgi?id=28400
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Added one Chromium/Windows slave
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added support for Chromium slave commands.
-
-2009-08-25 Cameron McCormack <cam@mcc.id.au>
-
- Reviewed by Darin Adler.
-
- make-script-test-wrappers should be executable
- https://bugs.webkit.org/show_bug.cgi?id=28669
-
- Make make-script-test-wrappers and update-sources-list.py both be
- executable.
-
- * Scripts/update-sources-list.py:
- * Scripts/make-script-test-wrappers:
-
-2009-08-25 Brent Fulgham <bfulgham@webkit.org>
-
- Build fix
-
- Revise Debug_Cairo targets to point inherit from the
- debug_wincairo.vsprops property sheet so that they link
- against the proper libraries in Debug build.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
- * WinLauncher/WinLauncher.vcproj:
-
-2009-08-25 David Levin <levin@chromium.org>
-
- Reviewed by Adam Roben.
-
- PLATFORM(CFNETWORK) should be USE(CFNETWORK).
- https://bugs.webkit.org/show_bug.cgi?id=28713
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-08-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- [Qt/Mac] Use CONFIG+=build_all only when building libraries
-
- If no configuration is specified when building WebKit we pass the
- debug_and_release option to QMake which results in Makefiles for
- both configurations being generated.
-
- Previously we built both of these configurations by default, for
- all targets (both the QtWebKit framework/dyldlib and the various
- executables such as QtLauncher and tests). This makes sense for
- the libraries, which get the _debug suffix and can be loaded on
- demand by setting the DYLD_IMAGE_SUFFIX, but for executables we
- ended up building the same executable twice.
-
- We now only build one instance of each executable, and since this
- is a developer build we build the debug-version. Passing either
- --debug or --release to build-webkit will override this, and
- even in the default case the release version can still be built
- by running 'make release' in the the build directory of each
- target.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * Scripts/webkitdirs.pm:
-
-2009-08-24 Hironori Bono <hbono@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix Bug 27827 "[Chromium] Functions Keys don't work in google spreadsheet".
- <https://bugs.webkit.org/show_bug.cgi?id=27827>.
-
- Because of the lack of mappings from GDK key-codes to WebKit key-codes,
- Chromium cannot send valid key-codes to JavaScript when a user types
- function keys. This change just copies the mappings from 'KeyEventGtk.cpp'.
-
- To write layout tests for this issue, added mappings from function-key
- names to platform-specific key-codes to EventSendingController objects
- so that eventSender.keyDown() can send function-key events without using
- platform-specific key codes. (Unfortunately, this eventSender.keyDown() change
- is only for Mac. So this change adds this new test to Skipped tests for other
- platforms to prevent this change from crashing the build trees.)
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:]):
-
-2009-08-23 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Xan Lopez.
-
- [Gtk] API for disabling local file access to web URLs
- https://bugs.webkit.org/show_bug.cgi?id=28663
-
- Enable this setting for DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-08-22 Adam Barth <abarth@webkit.org>
-
- Revert 47684. We're going to do this later once clients have had a
- chance to opt into the setting they like.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-08-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't let local files access web URLs
- https://bugs.webkit.org/show_bug.cgi?id=28480
-
- A bunch of our LayoutTests rely on our old behavior, so we explicitly
- grant local files universal access during testing. Mainly, these tests
- involve making XMLHttpRequests for data URLs.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2009-08-22 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Anders Carlsson.
-
- Bring signed updates to the Mac nightly builds.
-
- * WebKitLauncher/Info.plist:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitNightlyEnablerSparkle.m:
- (initializeSparkle):
- * WebKitLauncher/nightly.webkit.org.public.pem: Added.
-
-2009-08-21 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Rubberstamped by Simon Fraser.
-
- Remove GNOME keyring support in build-webkit. This dependency's
- already been removed in the Gtk port.
-
- * Scripts/build-webkit:
-
-2009-08-20 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
- Based on original patch by Stephanie Lewis.
-
- Added support of the Windows malloc history format to parse-malloc history, so we can
- read and parse it.
-
- * Scripts/parse-malloc-history:
-
-2009-08-20 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Enable various "grouping" ARIA roles
- https://bugs.webkit.org/show_bug.cgi?id=28486
-
- Expose the ability to retrieve the subrole through accessibility for DRT.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
-
-2009-08-20 Joseph Pecoraro <joepeck@webkit.org>
-
- Unreviewed.
-
- Added myself as a committer.
-
- * Scripts/modules/committers.py:
-
-2009-08-20 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Fix memory leaks.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::whiteListAccessFromOrigin):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
-
-2009-08-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool post-diff can post partial diffs from SVN checkouts.
- https://bugs.webkit.org/show_bug.cgi?id=28445
-
- Pass the checkout root as the cwd. Also wrote a test to ensure this.
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-08-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adele Peterson.
-
- Don't leak the JSStringRef returned by AccessibilityUIElement::attributeValue.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (attributeValueCallback):
-
-2009-08-20 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Unreviewed, build fix.
-
- [Qt] The template-based qMax() compares two qreals.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2009-08-20 David Levin <levin@chromium.org>
-
- Reviewed by David Kilzer.
-
- bugzilla-tool patch retrieval should handle 302 redirects.
- https://bugs.webkit.org/show_bug.cgi?id=28485
-
- * Scripts/modules/scm.py: Pass the --location parameter to curl
- so that 302's are followed.
-
-2009-08-20 Aaron Boodman <aa@chromium.org>
-
- One more speculative build for gtk.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
-
-2009-08-20 Aaron Boodman <aa@chromium.org>
-
- Speculative build for gtk.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::whiteListAccessFromOrigin):
-
-2009-08-20 Mark Rowe <mrowe@apple.com>
-
- Ignore some leaks that are known to originate from ImageIO.
-
- * Scripts/run-webkit-tests:
-
-2009-08-20 Aaron Boodman <aa@chromium.org>
-
- With David Levin.
-
- Speculative build fix for qt.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::whiteListAccessFromOrigin):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-08-19 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix <http://webkit.org/b/28484> Plug-in-related leaks seen on the build bot
-
- Update check-for-global-initializers to accommodate the new uses of RefCountedLeakCounter in WebKit.
-
- * Scripts/check-for-global-initializers:
-
-2009-08-19 Aaron Boodman <aa@chromium.org>
-
- Reviewed by David Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=24853: Provide a way for WebKit clients to
- specify a more granular policy for cross-origin XHR access.
-
- * DumpRenderTree/LayoutTestController.cpp: Expose whiteListAccessFromOrigin() to layout tests.
- (whiteListAccessFromOriginCallback): Ditto.
- (LayoutTestController::staticFunctions): Ditto.
- * DumpRenderTree/LayoutTestController.h: Ditto.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Ditto.
- (LayoutTestController::whiteListAccessToOrigin): Ditto.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Ditto.
- (LayoutTestController::whiteListAccessFromOrigin): Ditto.
- * DumpRenderTree/qt/jsobjects.cpp: Ditto.
- (LayoutTestController::whiteListAccessFromOrigin): Ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Stub out whiteListAccessFromOrigin().
- (LayoutTestController::whiteListAccessFromOrigin): Ditto.
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Reset origin access lists before each test.
- (resetWebViewToConsistentStateBeforeTesting): Ditto.
- * DumpRenderTree/mac/DumpRenderTree.mm: Ditto.
- (resetWebViewToConsistentStateBeforeTesting): Ditto.
- * DumpRenderTree/qt/DumpRenderTree.cpp: Ditto.
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting): Ditto.
-
-2009-08-19 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Ignore some leaks that are known to originate from QTKit.
-
- * Scripts/run-webkit-tests:
-
-2009-08-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue/bugzilla-tool can get wedged if git is mid-rebase
- https://bugs.webkit.org/show_bug.cgi?id=28436
-
- Make clean_working_directory cancel rebases too (even though that's a bit of a hack).
- This code will only ever be run when --force-clean is passed.
-
- I also added a new unit test to make sure this code actually works. :)
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py:
-
-2009-08-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- WebKit needs a changelogs.py to hold changelog-related code
- https://bugs.webkit.org/show_bug.cgi?id=28477
-
- This is moving code and adding tests. There was only one functional
- change (which was removing a trailing newline from the last_entry() result).
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/changelogs.py: Added.
- * Scripts/modules/changelogs_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-08-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs a way to ask build.webkit.org if the bots are passing
- https://bugs.webkit.org/show_bug.cgi?id=28222
-
- Basic support for now. This has been in testing for 24 hours now and worked great!
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/buildbot.py: Added.
- * Scripts/modules/buildbot_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-08-19 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha.
-
- [Gtk] Bump waitToDumpWatchdog interval to 15 seconds to match the
- default timeout used by run-webkit-tests. Mac and Win ports were
- recently bumped in http://trac.webkit.org/changeset/r47465.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setWaitToDump):
-
-2009-08-19 David D. Kilzer <ddkilzer@webkit.org>
-
- DumpRenderTreeSupport.pm: provide pre-generated swig source for Tiger
-
- Reviewed by Mark Rowe.
-
- Provide pre-generated swig source files for Tiger so it may
- benefit from the faster run-webkit-tests.
-
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm:
- Generated by swig.
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapTiger.c: Added.
- Generated by swig.
- (swig_type_info::SWIG_TypeNameComp):
- (swig_type_info::SWIG_TypeEquiv):
- (swig_type_info::SWIG_TypeRegisterTL):
- (swig_type_info::SWIG_TypeCheck):
- (swig_type_info::SWIG_TypeCast):
- (swig_type_info::SWIG_TypeDynamicCast):
- (swig_type_info::SWIG_TypeName):
- (swig_type_info::SWIG_TypePrettyName):
- (swig_type_info::SWIG_TypeQueryTL):
- (swig_type_info::SWIG_TypeClientDataTL):
- (swig_type_info::SWIG_PackData):
- (swig_type_info::SWIG_UnpackData):
- (swig_type_info::SWIG_PropagateClientDataTL):
- (swig_type_info::SWIG_PackVoidPtr):
- (swig_type_info::SWIG_UnpackVoidPtr):
- (swig_type_info::SWIG_PackDataName):
- (swig_type_info::SWIG_UnpackDataName):
- * DumpRenderTree/mac/PerlSupport/Makefile: Updated to build on
- Tiger using pre-generated files.
-
-2009-08-18 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Kilzer.
-
- run-webkit-tests hangs when WebCore tries to log too much
- https://bugs.webkit.org/show_bug.cgi?id=15743
-
- Read stdout and stderr in parallel.
-
- * Scripts/run-webkit-tests:
-
-2009-08-18 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Oliver Hunt.
-
- Add a new build configuration that checks for leaks during the layout tests,
- and hook a new machine up to it.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-08-18 Aaron Boodman <aa@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- https://bugs.webkit.org/show_bug.cgi?id=28412: Leak of WebCore::XMLHttpRequest object during layout tests.
-
- No new tests: Already covered by existing tests.
-
- * Scripts/check-for-global-initializers: Allow global initialization of WTF::RefCountedLeakCounter for XMLHttpRequest.
-
-2009-08-18 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- Bump waitToDumpWatchdogInterval to 15 seconds to match the time-out used by run-webkit-tests.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
-
-2009-08-18 Brian Weinstein <bweinstein@apple.com>
-
- Rubber-stamped by Adam Roben.
-
- Changed use of CComBSTR in exceededDatabaseQuota to BSTRs, and free them,
- and removed include to fix building on VC++ Express.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::exceededDatabaseQuota):
-
-2009-08-18 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Fix of <https://bugs.webkit.org/show_bug.cgi?id=28326> DRT on Windows doesn't support
- LayoutTestController::setQuota or print a callback on UIDelegate::exceededDatabaseQuota.
-
- Implemenent setDatabaseQuota and added a new function to the IWebDatabaseManager interface.
- Also added a console output on UIDelegate::exceededDatabaseQuota to match the mac.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setDatabaseQuota):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::exceededDatabaseQuota):
-
-2009-08-18 Peter Kasting <pkasting@google.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=28415
- Set svn:eol-style CRLF on all .sln and .vcproj files that don't already
- have it.
-
- * record-memory-win/record-memory-win.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * FindSafari/FindSafari.vcproj:
-
-2009-08-18 Drew Wilson <atwilson@google.com>
-
- Reviewed by Eric Seidel.
-
- Need to extend DumpRenderTree to expose number of worker threads
- https://bugs.webkit.org/show_bug.cgi?id=28292
-
- Added layoutTestController.workerThreadCount, and implementations on various platforms that call into WebKit.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (getWorkerThreadCountCallback):
- (LayoutTestController::staticValues):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::workerThreadCount):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::workerThreadCount):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::workerThreadCount):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::workerThreadCount):
-
-2009-08-18 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- Initialize x and y in the GtkAllocation structure to shut up
- valgrind.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
-
-2009-08-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- Some HTMLs are modified by make-script-test-wrappers
- https://bugs.webkit.org/show_bug.cgi?id=28213
-
- Add fast/js/const.js and fast/canvas/canvas-2d-imageData-create-nonfinite.js into
- the exclude list, modified fast/dom/Geolocation/resources/TEMPLATE.html, and
- re-generated wml/* and Geolocation/* .
-
- * Scripts/make-script-test-wrappers:
-
-2009-08-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- -webkit-box-orient:horizontal doesn't work on <button> tag
- https://bugs.webkit.org/show_bug.cgi?id=34445
-
- Make a flexible button's anonymous child flexible and pass the
- parent's box-orient to the anonymous child.
-
- Also, added a renderName for anonymous flexible boxes.
-
- * Scripts/make-script-test-wrappers:
-
-2009-08-17 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- Can no longer --reset-results of a layout test directory
- https://bugs.webkit.org/show_bug.cgi?id=28336
-
- --reset-results and --exit-after-n-failures are incompatible.
-
- * Scripts/run-webkit-tests:
-
-2009-08-17 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/26920> bugzilla-tool dumps too much junk the the commit comment from git
-
- Reviewed by Adam Roben.
-
- New commit message:
- Committed r12345: <http://trac.webkit.org/changeset/12345>
-
- * Scripts/bugzilla-tool:
- (bug_comment_from_commit_text): Print out a compact,
- standardized commit message for both git and svn.
-
-2009-08-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by Steve Falkenburg.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Only add Cygwin to the path when it isn't already there. This avoids
- causing problems for people who purposefully have non-Cygwin versions of
- executables like svn in front of the Cygwin ones in their paths.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2009-08-17 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28393> check-webkit-style: add check for use of std::max()/std::min() instead of MAX()/MIN()
-
- Reviewed by David Levin.
-
- * Scripts/modules/cpp_style.py:
- (_ERROR_CATEGORIES): Added 'runtime/max_min_macros'.
- (check_max_min_macros): Added. Returns level 4 error when MAX()
- and MIN() macros are used in header files and C++ source files.
- (check_style): Added call to check_max_min_macros().
- * Scripts/modules/cpp_style_unittest.py: Added unit tests.
- (test_max_macro): Added.
- (test_min_macro): Added.
-
-2009-08-13 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Eric Seidel.
-
- Move adjustLineToPixelBoundaries overlapping function to GraphicsContext.cpp
- and remove from GraphicsContextCairo.cpp and GraphicsContextQt.cpp.
-
- https://bugs.webkit.org/show_bug.cgi?id=28268
-
- * platform/graphics/GraphicsContext.cpp:
- (WebCore::GraphicsContext::adjustLineToPixelBoundaries):
- * platform/graphics/GraphicsContext.h:
- * platform/graphics/cairo/GraphicsContextCairo.cpp:
- * platform/graphics/qt/GraphicsContextQt.cpp:
-
-2009-08-10 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Style fixes for DumpRenderTree/qt/jsobjects.cpp based on cpp_style.py and
- WebKit style guide.
-
- https://bugs.webkit.org/show_bug.cgi?id=28161
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (findFrameNamed):
- (LoadItem::invoke):
- (LayoutTestController::provisionalLoad):
- (LayoutTestController::timerEvent):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::numberOfActiveAnimations):
- (EventSender::keyDown):
- (EventSender::frameUnderMouse):
- (TextInputController::doCommand):
-
-2009-08-16 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28370> check-webkit-style: add check for 'using std::foo;' statements
-
- Reviewed by David Levin.
-
- In <http://webkit.org/b/28355#c1>, it was noted that new source
- files use 'using namespace std;' instead of individual
- 'using std::foo;' statements. This adds a level 4 check for
- such statements.
-
- * Scripts/modules/cpp_style.py:
- (_ERROR_CATEGORIES): Added 'build/using_std'.
- (check_using_std): Added.
- (check_style): Added call to check_using_std().
- * Scripts/modules/cpp_style_unittest.py:
- (WebKitStyleTest.test_using_std): Added unit test.
-
-2009-08-16 David Kilzer <ddkilzer@apple.com>
-
- Backed out r47343 which was mistakenly committed
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-08-16 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28367> bugzilla.py: replace ScriptError class with BugzillaError class
-
- Reviewed by David Levin.
-
- The ScriptError class doesn't exist in bugzilla.py, so any
- errors print error messages about ScriptError instead of the
- actual error:
-
- NameError: global name 'ScriptError' is not defined
-
- * Scripts/modules/bugzilla.py:
- (BugzillaError): Added class. Modeled after ScriptError class
- in scm.py.
- (Bugzilla.authenticate): Changed to use BugzillaError instead of
- ScriptError.
- (Bugzilla._check_create_bug_response): Ditto.
-
-2009-08-14 Adam Bergkvist <adam.bergkvist@ericsson.com>
-
- Reviewed by Sam Weinig.
-
- Added EventSource to the build script (default on).
- https://bugs.webkit.org/show_bug.cgi?id=14997
-
- * Scripts/build-webkit:
-
-2009-08-15 Ryosuke Niwa <rniwa@webkit.org>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-08-15 Jon Honeycutt <jhoneycutt@apple.com>
-
- Fix layout test failures after r47312.
-
- Reviewed by Cameron Zwarich.
-
- * DumpRenderTree/AccessibilityController.h:
- Replaced logFocusEvents() with setLogFocusEvents(), which takes a
- boolean argument to turn logging of focus events on or off.
- Added a function to reset the AccessibilityController to a consistent
- state.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (logFocusEventsCallback):
- Call setLogFocusEvents() to enable logging.
- (AccessibilityController::resetToConsistentState):
- Call setLogFocusEvents() to disable logging.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::setLogFocusEvents):
- Update stub.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::setLogFocusEvents):
- Update stub.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- Call the FrameLoadDelegate's resetToConsistentState method.
-
- * DumpRenderTree/mac/FrameLoadDelegate.h:
- Declare the resetToConsistentState method.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate resetToConsistentState]):
- Call the AccessibilityController's resetToConsistentState() function.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- Turn off focus event logging when the controller is destroyed.
- (AccessibilityController::setLogFocusEvents):
- If the caller passes false, unhook the focus event, and clear
- m_focusEventHook.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- Call the FrameLoadDelegate's resetToConsistentState function.
-
- * DumpRenderTree/win/FrameLoadDelegate.h:
- Declare the resetToConsistentState() function.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::resetToConsistentState):
- Call the AccessibilityController's resetToConsistentState() function.
-
-
-2009-08-14 Jon Honeycutt <jhoneycutt@apple.com>
-
- Add a mechanism for logging MSAA focus events.
-
- Part of <rdar://problem/6218721> No MSAA focus events fired for Webkit
- nightly (20866)
-
- https://bugs.webkit.org/show_bug.cgi?id=20866
-
- Reviewed by Oliver Hunt.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (logFocusEventsCallback):
- Call the AccessibilityController's logFocusEvents() function.
- (AccessibilityController::getJSClass):
- Add a "logFocusEvents" function to the AccessibilityController's JS
- class definition.
-
- * DumpRenderTree/AccessibilityController.h:
- On Windows, include windows.h, and add a member variable to hold the
- handle to the event hook for focus events. Add a declaration for a
- function that enables logging of focus events.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::logFocusEvents):
- Stubbed.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::logFocusEvents):
- Stubbed.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- If we hooked the focus event, unhook it.
- (logFocusEventProc):
- When we receive a focus event, get the accessible object for the event,
- and log its name to stdout.
- (AccessibilityController::logFocusEvents):
- Setup the focus event hook to listen for events in the current process.
-
-2009-08-14 Eric Seidel <eric@webkit.org>
-
- No review. Fix 5-space indent to be 4-spaces.
-
- * Scripts/bugzilla-tool:
-
-2009-08-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Public API to configure the storage path for HTML5 localStorage
- https://bugs.webkit.org/show_bug.cgi?id=28036
-
- Turn on LocalStorage support for Qt DumpRenderTree since
- LocalStorage is now disabled by defult for QtWebkit.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
-
-2009-08-14 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- Do not unref the main webview, it's owned by its parent
- container. Instead destroy the container, which should take care
- of everything (not terribly important since we exit right after
- that, but still).
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
-
-2009-08-13 Eric Seidel <eric@webkit.org>
-
- No review, correcting obvious python error seen in the commit queue.
-
- args can be a string or an array. Assuming args is always an array results in
- double-spaced text in error logs.
-
- * Scripts/bugzilla-tool:
-
-2009-08-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Unreviewed build fix. Include stdio.h for using stdout, stderr,
- and fprintf.
-
- * DumpRenderTree/LayoutTestController.cpp:
-
-2009-08-13 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- rename make-js-test-wrappers to make-script-test-wrappers
- https://bugs.webkit.org/show_bug.cgi?id=28212
-
- * Scripts/make-script-test-wrappers: Renamed from WebKitTools/Scripts/make-js-test-wrappers.
-
-2009-08-13 Drew Wilson <atwilson@chromium.org>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 John Sullivan <sullivan@apple.com>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Eric Seidel <eric@webkit.org>
-
- Correct spelling error in file name. No review.
-
- * Scripts/modules/committers_unittest.py: Renamed from WebKitTools/Scripts/modules/commiters_unittest.py.
- * Scripts/run-webkit-unittests:
-
-2009-08-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Simon Fraser.
-
- REGRESSION(r47175): error running run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=28261
-
- Fix "Use of uninitialized value in concatenation (.) or string at
- WebKitTools/Scripts/run-webkit-tests line 191." by setting
- $testsPerDumpTool to 1000 by default.
-
- * Scripts/run-webkit-tests:
-
-2009-08-13 Nate Chapin <japhet@chromium.org>
-
- Unreviewed.
-
- Add myself to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed.
-
- Add 'Brent Fulgham' to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Adam Langley <agl@chromium.org>
-
- Review not required.
-
- * Scripts/modules/committers.py:
- Adding myself to this list because Eric told me to.
-
-2009-08-13 Greg Bolsinga <bolsinga@apple.com>
-
- Unreviewed.
-
- Add 'Greg Bolsinga' to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Adam Roben <aroben@apple.com>
-
- Fix off-by-one result comparisons in media tests on Windows Debug
- builds
-
- media/video-played.html seems always to time out in Windows Debug
- builds. A race condition between media/video-test.js's "hang" timer and
- DumpRenderTree's built-in "watchdog" timer was causing results for
- media/video-played.html to be printed twice, causing all future media
- tests to be compared to the previous test's results.
-
- The fix is to make the watchdog timer got through the same code path
- as calling notifyDone manually, so that the results will only get
- printed once. A subsequent patch will remove video-test.js's hang
- timer entirely, since it is redundant.
-
- Fixes <http://webkit.org/b/28265>.
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::waitToDumpWatchdogTimerFired): Added. Code came
- from Gtk/Mac/Win's watchdog timer handlers, but we now call
- notifyDone() instead of dump() so that a subsequent call to
- notifyDone() won't print the results out again.
-
- * DumpRenderTree/LayoutTestController.h: Added
- waitToDumpWatchdogTimerFired.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (waitToDumpWatchdogFired):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (waitUntilDoneWatchdogFired):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (waitUntilDoneWatchdogFired):
- Changed to call waitToDumpWatchdogTimerFired.
-
-2009-08-13 Eric Carlson <eric.carlson@apple.com>
-
- Unreviewed.
-
- Added 'Eric Carlson' to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Dirk Schulze <krit@webkit.org>
-
- Unreviewed.
- Added 'Dirk Schulze' to the committers list.
-
- * Scripts/modules/committers.py:
-
-2009-08-13 Adam Roben <aroben@apple.com>
-
- Enable running testapi in run-javascriptcore-tests on Windows
-
- Fixes <http://webkit.org/b/24856> run-javascriptcore-tests should run
- testapi on Windows
-
- Reviewed by Mark Rowe.
-
- * Scripts/run-javascriptcore-tests: Allow testapi to run if we're in
- the AppleWinWebKit configuration.
-
-2009-08-13 Adam Roben <aroben@apple.com>
-
- Re-enable testapi in run-javascriptcore-tests on Mac
-
- This seems to have been mistakenly disabled in r47089.
-
- Rubber-stamped by Mark Rowe.
-
- * Scripts/run-javascriptcore-tests: Removed comment markers that were
- preventing running testapi.
-
-2009-08-12 George Staikos <george.staikos@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Enable WCSS and XHTML-MP flags for build-webkit.
-
- * Scripts/build-webkit:
-
-2009-08-12 David Kilzer <ddkilzer@apple.com>
-
- run-webkit-tests: document --nthly flag in help message
-
- Reviewed by Simon Fraser.
-
- * Scripts/run-webkit-tests: Added --nthly flag to $usage string.
- Also noted that -1|--singly implies --nthly 1.
-
-2009-08-12 Eric Seidel <eric@webkit.org>
-
- No review, just fixing mismerged ChangeLogs.
-
-2009-08-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- run-webkit-tests needs a --exit-after-failures=N option
- https://bugs.webkit.org/show_bug.cgi?id=28192
-
- Added the option and deployed it to bugzilla-tool.
-
- * Scripts/bugzilla-tool:
- * Scripts/run-webkit-tests:
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- bugzilla-tool : various improvements for running the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=28199
-
- Make run_and_throw_if_fail silence STDERR as well as STDIN.
- I also changed run_and_throw_if_fail to use the /dev/null trick instead of .communicate() to avoid ever buffering the output (per abarth's suggestion).
- Change a few "print" statements to "log" so they appear in the output.
- Changed all string + uses to use string formatting instead (this is less error prone as it will automatically convert non-string objects).
- Added a little more logging so that --quiet mode is easier to understand.
- Changed clear_attachment_review_flag to clear_attachment_flags and made it clear the commit-queue flag as well.
- Added the ability for bugzilla-tool to reject patches from the commit-queue when they fail to compile/apply/etc.
- Added _find_select_element_for_flag to make the code for finding flag <select> elements clearer.
- Made curl call (downloading patch files) quieter.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-08-12 Peter Kasting <pkasting@google.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Change pattern that strips all trailing whitespace to just remove EOL
- chars (\r, \n), to make it clear that varying EOL chars is the primary
- problem being solved.
-
- * Scripts/prepare-ChangeLog:
- * Scripts/resolve-ChangeLogs:
- * Scripts/svn-create-patch:
- * Scripts/update-webkit:
-
-2009-08-12 Kevin Ollivier <kevino@theolliviers.com>
-
- wx waf build fix, add new directories to the build.
-
- * wx/build/settings.py:
-
-2009-08-11 Adam Roben <aroben@apple.com>
-
- Update DumpRenderTree for IWebUIDelegatePrivate changes
-
- Reviewed by Dave Hyatt.
-
- * DumpRenderTree/win/UIDelegate.h: Updated to match
- IWebUIDelegatePrivate.
-
-2009-08-12 Adam Roben <aroben@apple.com>
-
- Don't try to seek to the end of stdin on Cygwin
-
- Doing so seems to always cause an exception (for unknown reasons).
-
- Fixes <http://webkit.org/b/28159> create-bug throws an exception in
- Cygwin
-
- Reviewed by Dave Kilzer.
-
- * Scripts/bugzilla-tool:
- (CreateBug.prompt_for_bug_title_and_comments): Ignore IOErrors
- generated by calling sys.stdin.seek, since these seem to be generated
- for no good reason on Cygwin.
-
-2009-08-12 Adam Roben <aroben@apple.com>
-
- Don't raise an exception when --cc is not passed to create-bug
-
- Fixes <http://webkit.org/b/28158> create-bug throws an exception if
- --cc is not specified
-
- Reviewed by Dave Kilzer.
-
- * Scripts/modules/bugzilla.py:
- (Bugzilla.create_bug_with_patch): Only set the "cc" field if a CC
- string was specified. Otherwise we'll generate an exception about the
- "cc" variable not being a string.
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool : various improvements for running the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=28199
-
- Make run_and_throw_if_fail silence STDERR as well as STDIN.
- I also changed run_and_throw_if_fail to use the /dev/null trick instead of .communicate() to avoid ever buffering the out
- Change a few "print" statements to "log" so they appear in the output.
- Changed all string + uses to use string formatting instead (this is less error prone as it will automatically convert non
- Added a little more logging so that --quiet mode is easier to understand.
- Changed clear_attachment_review_flag to clear_attachment_flags and made it clear the commit-queue flag as well.
- Added the ability for bugzilla-tool to reject patches from the commit-queue when they fail to compile/apply/etc.
- Added _find_select_element_for_flag to make the code for finding flag <select> elements clearer.
- Made curl call (downloading patch files) quieter.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- No review, script regression fix only.
-
- run-webkit-tests --quiet hangs
- https://bugs.webkit.org/show_bug.cgi?id=28202
-
- Do a huge dance to get open3 to pipe to /dev/null w/o blocking.
- This was what I came up with after discussions in #perl.
-
- * Scripts/run-webkit-tests:
-
-2009-08-11 John Gregg <johnnyg@google.com>
-
- Reviewed by Maciej Stachowiak.
-
- Switch DumpRenderTree to contain a WebUIDelegate2, which extends
- WebUIDelegate, so that the notifications tests will still work.
- https://bugs.webkit.org/show_bug.cgi?id=28198
-
- * DumpRenderTree/win/UIDelegate.h:
-
-2009-08-11 Darin Adler <darin@apple.com>
-
- Try to fix GTK build.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::stringForRange): Added.
-
-2009-08-10 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Add processing for string constants used by the tests to trigger
- common actions like up, down, left, right, etc. for the Qt
- implementation of DumpRenderTree.
-
- Note this allows fast/forms/textarea-arrow-navigation.html to pass
- correctly.
-
- https://bugs.webkit.org/show_bug.cgi?id=28161
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (EventSender::keyDown):
-
-2009-08-11 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 28200 - ListMarker should be included as part of the text value to parse
- https://bugs.webkit.org/show_bug.cgi?id=28200
-
- Add the ability to retrieve a string given a plain NSRange.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (stringForRangeCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::valueDescription):
- (AccessibilityUIElement::stringForRange):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::stringForRange):
-
-2009-08-11 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by NOBODY (Speculative fix for the layout test failure).
-
- Fix fast/dom/prototype-inheritance.html
- and fast/dom/prototype-inheritance-2.html
- broken on Windows by http://trac.webkit.org/changeset/47018
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): enable app cache in Windows DRT.
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool: Re-factor shared landing logic into helper class to share more code
- https://bugs.webkit.org/show_bug.cgi?id=28193
-
- Added new WebKitLandingScripts class to hold this shared logic.
- Also added a view_source_url function to move more webkit-specific urls out of bugzilla-tool core.
-
- * Scripts/bugzilla-tool:
-
-2009-08-11 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Adam Treat.
-
- Fix the current failures on the buildbot.
-
- As Qt hooks up the maybeDump to loadFinished, we need to make
- sure that calling dump() will not call maybeDump on loadFinished.
-
- As dump is called my emitting done() which calls dump() and then
- setting m_isLoading to false. So in the case m_isLoading is false,
- do not dump again.
-
- The current code is confusing, and should be made more clear
- in another commit.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::maybeDump):
- (LayoutTestController::notifyDone):
-
-2009-08-11 John Gregg <johnnyg@google.com>
-
- Reviewed by Maciej Stachowiak.
-
- Add support for desktop notifications API to DumpRenderTree,
- and support for ENABLE_NOTIFICATIONS flag to build-webkit.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (grantDesktopNotificationPermissionCallback):
- (LayoutTestController::staticFunctions):
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::checkDesktopNotificationPermission):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp: Added.
- (DRTDesktopNotificationPresenter::DRTDesktopNotificationPresenter):
- (DRTDesktopNotificationPresenter::QueryInterface):
- (DRTDesktopNotificationPresenter::AddRef):
- (DRTDesktopNotificationPresenter::Release):
- (DRTDesktopNotificationPresenter::showDesktopNotification):
- (DRTDesktopNotificationPresenter::cancelDesktopNotification):
- (DRTDesktopNotificationPresenter::notificationDestroyed):
- (DRTDesktopNotificationPresenter::checkNotificationPermission):
- (DRTDesktopNotificationPresenter::requestNotificationPermission):
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.h: Added.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::UIDelegate):
- (UIDelegate::desktopNotificationsDelegate):
- * DumpRenderTree/win/UIDelegate.h:
- * Scripts/build-webkit:
-
-2009-08-11 Peter Kasting <pkasting@google.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Handle arbitrary line endings when manufacturing patches for additions
- with history.
-
- * Scripts/svn-create-patch:
-
-2009-08-11 Peter Kasting <pkasting@google.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=28183
- Support VS2008 as well as VS2005 in a few scripts.
-
- * Scripts/pdevenv: Check both $VS80COMNTOOLS and $VS90COMNTOOLS.
- * Scripts/webkitdirs.pm: Use $VSINSTALLDIR if available instead of hardcoding the VS2005 dir.
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- run-webkit-tests --quiet should not output build-dumprendertree output
- https://bugs.webkit.org/show_bug.cgi?id=28189
-
- * Scripts/run-webkit-tests:
-
-2009-08-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Darin Adler.
-
- Exception in land-patches
- https://bugs.webkit.org/show_bug.cgi?id=27962
-
- Use ("%s" % object) instead of ("" + object).
- Added unit tests for logging.py.
-
- * Scripts/modules/logging.py:
- * Scripts/modules/logging_unittest.py: Added.
- * Scripts/run-webkit-unittests:
-
-2009-08-11 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by NOBODY (Windows layout tests fix).
-
- Fix for layout tests failures. Need to initialize some preferences early
- because WebView on Windows uses them during create time.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-08-11 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by Adam Roben.
-
- Originally implemented by Glenn Wilson <gwilson@chromium.org>.
-
- Added support for overriding default preferences per-test.
- See https://bugs.webkit.org/show_bug.cgi?id=20534
-
- * DumpRenderTree/LayoutTestController.cpp:
- (overridePreferenceCallback): add wiring for layoutTestController.overridePreference.
- (LayoutTestController::staticFunctions): same.
- * DumpRenderTree/LayoutTestController.h: same.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): added empty overridePreference method.
- * DumpRenderTree/mac/DumpRenderTree.mm: implemented preference override.
- (resetDefaultsToConsistentValues): new method, resets preferences to same set of value before every test.
- (setDefaultsToConsistentValuesForTesting): new method, sets other details of testing environment, every time DRT starts.
- (resetWebViewToConsistentStateBeforeTesting): move some preference setting from here to new resetDefaultsToConsistentValues().
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): new method, resets preferences to same set of value before every test.
- (resetWebViewToConsistentStateBeforeTesting): move some preference setting from here to new resetDefaultsToConsistentValues().
- (createWebViewAndOffscreenWindow): same.
- (main): same.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::overridePreference):
-
-2009-08-11 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Sam Weinig.
-
- Added support for DRT to support arguments for eventSender.mouseDown and eventSender.mouseUp for Windows.
- https://bugs.webkit.org/show_bug.cgi?id=28166.
-
- This is a step towards fixing fast/events/mouse-click-events.html on Windows.
-
- * DumpRenderTree/win/EventSender.cpp:
- (mouseDownCallback):
- (mouseUpCallback):
- (replaySavedEvents):
-
-2009-08-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Build the TestNetscapePlugin on Qt/Mac
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2009-08-11 Dmitry Titov <dimich@chromium.org>
-
- Reviewed by NOBODY (build fix).
-
- Attempt to fix the Windows test bot. Reverted r47015 caused one of the Windows
- bots that runs Layout Tests to save "JS disabled" and "default font 24pt"
- preferences permanently. Since these preferences are not initialized explicitly in DRT,
- almost all Layout tests are failing. Attempt to fix by explicit
- initialization of these into defaults (enabled, 16pt) at the beginning of the DRT.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main): see above.
-
-2009-08-10 Steve Falkenburg <sfalken@apple.com>
-
- Windows nightly fix.
-
- Reviewed by Ada Chan.
-
- * FindSafari/FindSafari.cpp:
- (_tmain): Copy Safari.dll if it exists.
-
-2009-08-10 David Levin <levin@chromium.org>
-
- Reviewed by David Kilzer.
-
- check-webkit-style doesn't catch braces around single line statements when followed by else.
- https://bugs.webkit.org/show_bug.cgi?id=28164
-
- * Scripts/modules/cpp_style.py: Added else to the regex that finds ending }'s when
- checking the no braces for "single lines" rule.
- * Scripts/modules/cpp_style_unittest.py: Added test case.
-
-2009-08-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/28163> bugzilla-tool: scm module should not import bugzilla module
-
- Reviewed by David Levin.
-
- * Scripts/bugzilla-tool:
- (parse_bug_id): Added. Moved from CommitMessage.parse_bug_id()
- in scm module.
- * Scripts/modules/scm.py: Removed import of bugzilla module.
- (CommitMessage.parse_bug_id): Deleted.
-
-2009-08-10 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=18599
- Work around apparent bug in abs2rel() with symlinked directories.
-
- * Scripts/resolve-ChangeLogs:
-
-2009-08-10 Dan Bernstein <mitz@apple.com>
-
- Build fix
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
-
-2009-08-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Fix a bunch of build warnings in TestNetscapePlugin
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp:
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
-
-2009-08-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Adam Roben.
-
- Allow TestNetscapePlugIn to fall back to the Carbon event model
-
- Previously the plugin would fail, even though the Carbon event
- model was available. The only way to get the Carbon event model
- was to pass the "forcecarbon" argument in the test markup, but no
- tests were using this.
-
- Now the plugin uses carbon either if it's forced, or if the Cocoa
- event model is not supported.
-
- This helps us run most of the plugin tests on Qt/Mac, which still
- does not support the Cocoa event model.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
-
-2009-08-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool needs a --quiet option
- https://bugs.webkit.org/show_bug.cgi?id=28060
-
- A first pass at a --quiet option. This doesn't do all the excting
- things we might want, but it addresses 80% of the use case.
-
- * Scripts/bugzilla-tool:
-
-2009-08-08 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Xan Lopez.
-
- [Gtk] Enable accessibility in Gtk DRT
- https://bugs.webkit.org/show_bug.cgi?id=25989
-
- Add Accessibility support to the GTK DRT.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp: Added.
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp: Added.
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::childrenCount):
- (AccessibilityUIElement::elementAtPoint):
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::allAttributes):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfDocumentLinks):
- (AccessibilityUIElement::titleUIElement):
- (AccessibilityUIElement::parentElement):
- (AccessibilityUIElement::attributesOfChildren):
- (AccessibilityUIElement::parameterizedAttributeNames):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::language):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (AccessibilityUIElement::valueDescription):
- (AccessibilityUIElement::isEnabled):
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::isActionSupported):
- (AccessibilityUIElement::isRequired):
- (AccessibilityUIElement::attributesOfColumnHeaders):
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfColumns):
- (AccessibilityUIElement::attributesOfRows):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::attributesOfHeader):
- (AccessibilityUIElement::indexInTable):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::lineForIndex):
- (AccessibilityUIElement::boundsForRange):
- (AccessibilityUIElement::cellForColumnAndRow):
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::setSelectedTextRange):
- (AccessibilityUIElement::attributeValue):
- (AccessibilityUIElement::isAttributeSettable):
- (AccessibilityUIElement::increment):
- (AccessibilityUIElement::decrement):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared):
- (main):
- * GNUmakefile.am:
-
-2009-08-07 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Unreviewed Gtk build fix.
-
- DRT needs internal WTF symbols so we link to libJavaScriptCore.la
- too. Also don't force Gtk to use USE_SYSTEM_MALLOC.
-
- * GNUmakefile.am:
-
-2009-08-07 Darin Adler <darin@apple.com>
-
- * Scripts/commit-log-editor: Fix unchecked access to environment
- variable that may not be there.
-
-2009-08-07 Mark Rowe <mrowe@apple.com>
-
- Handle the case where only a single test is missing results.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-08-07 George Wright <george.wright@torchmobile.com>
-
- Reviewed by Adam Treat
-
- Fix DumpRenderTree for the Qt port to always dump the PNG data unless
- the expected and actual hashes match.
-
- https://bugs.webkit.org/show_bug.cgi?id=28077
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2009-08-07 Pierre d'Herbemont <pdherbemont@apple.com>
-
- Reviewed by Eric Seidel.
-
- commit-log-editor does not produce a git commit log that is git friendly.
- https://bugs.webkit.org/show_bug.cgi?id=27754
-
- We make sure we end up with:
- - A first paragraph describing the bug. It is eventually prefixed by
- "WebKit: <line>" or "WebCore: <line>". This used to be
- "WebCore:\n\n<line>".
- - The Reviewed By line.
- - An eventual Patch By line if author and committer doesn't match.
- - The rest of the commit.
-
- * Scripts/commit-log-editor:
-
-2009-08-07 Adam Barth <abarth@webkit.org>
-
- Unreviewed. (Darin Adler indicated he'd prefer if we landed these
- kinds of changes unreviewed, like editing the WebKit Team wiki page.)
-
- Added Pierre d'Herbemont to list of committers.
-
- * Scripts/modules/committers.py:
-
-2009-08-07 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Adele Peterson.
-
- Cannot scroll for box-reflect:right
- https://bugs.webkit.org/show_bug.cgi?id=27979
-
- Update m_overflowLeft an m_overflowWidth for reflection just like
- m_overflowTop and m_overflowHeight.
-
- * Scripts/make-js-test-wrappers: Added regexp to skip box-shadow-overflo
-w-scroll.js
-
-2009-08-06 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Adam Barth.
-
- box-shadow's spread is ignored with <table>
- https://bugs.webkit.org/show_bug.cgi?id=28017
-
- Use RenderStyle::getBoxShadowExtent just like RenderBlock.
-
- * Scripts/make-js-test-wrappers: Added regexp to skip box-shadow-overflow-scroll.js
-
-2009-08-06 Eric Seidel <eric@webkit.org>
-
- No review, only changing make-js-test-wrappers.
-
- Fix make-js-test-wrappers to ignore a few more js tests
- with custom templates.
-
- * Scripts/make-js-test-wrappers:
-
-2009-08-06 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by David Hyatt.
-
- Added ENABLE_3D_CANVAS flag to build, default to off
-
- * Scripts/build-webkit:
-
-2009-08-05 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- Win DRT's resource load delegate is missing didReceiveResponse
- https://bugs.webkit.org/show_bug.cgi?id=28033
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- Added:
- (FrameLoadDelegate::didReceiveServerRedirectForProvisionalLoadForFrame):
- (FrameLoadDelegate::willPerformClientRedirectToURL):
- (FrameLoadDelegate::didCancelClientRedirectForFrame):
-
- Minor style cleanup:
- (FrameLoadDelegate::didStartProvisionalLoadForFrame):
- (FrameLoadDelegate::didReceiveTitle):
- (FrameLoadDelegate::didFinishLoadForFrame):
- (FrameLoadDelegate::willCloseFrame):
- (FrameLoadDelegate::didClearWindowObject):
- * DumpRenderTree/win/FrameLoadDelegate.h:
-
-2009-08-05 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- Win DRT's resource load delegate is missing didReceiveResponse
- https://bugs.webkit.org/show_bug.cgi?id=28033
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveResponse):
- * DumpRenderTree/win/ResourceLoadDelegate.h:
-
-2009-08-05 Darin Fisher <darin@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add layoutTestController.dumpWillCacheResponse
- https://bugs.webkit.org/show_bug.cgi?id=28010
-
- willCacheResponse is only interesting for embedders of mainline WebKit on Mac.
- Splitting off a new dumpWillCacheResponse allows a number of existings tests
- to run across platforms.
-
- The test that was specifically verifying willCacheResponse now calls
- dumpWillCacheResponse.
-
- * DumpRenderTree/LayoutTestController.cpp: Add dumpWillCacheResponse
- (LayoutTestController::LayoutTestController):
- (dumpWillCacheResponseCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpWillCacheResponse):
- (LayoutTestController::setDumpWillCacheResponse):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm: Inspect dumpWillCacheResponse
- instead of dumpResourceLoadCallbacks.
- (-[ResourceLoadDelegate webView:resource:willCacheResponse:fromDataSource:]):
-
-2009-08-05 Jeremy Orlow <jorlow@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add my name to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=28013
-
- Add my name to committers.py.
-
- * Scripts/modules/committers.py:
-
-2009-08-05 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- A minor refactoring of the Qt DRT to be a bit more similar to
- the other DRTs, as well as more understandable.
-
- Splitting up resetJSObjects into a LayoutTestController->reset()
- plus a new closeRemainingWindows() method.
-
- Added a resetToConsistentStateBeforeTesting() method to keep
- the code in one place, making it easier to verify that we are
- doing things properly.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::closeRemainingWindows):
- * DumpRenderTree/qt/DumpRenderTree.h:
-
-2009-08-05 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Make the Qt DRT WorkQueue work similarily to the cross platform
- one. This means that all items return true if they started
- loading.
-
- This change paves the way for unforking the WorkQueue, if we [Qt]
- would like that.
-
- * DumpRenderTree/qt/WorkQueue.cpp:
- (WorkQueue::processWork):
- * DumpRenderTree/qt/WorkQueue.h:
- * DumpRenderTree/qt/WorkQueueItem.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LoadItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- (LayoutTestController::processWork):
- (LayoutTestController::maybeDump):
-
-2009-08-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- If load of a test fails, don't dump as it will be dumped
- in the preceding test, resulting in a invalid incorrect layout.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::maybeDump):
-
-2009-08-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Make the Qt DumpRenderTree more similar to the mac one.
-
- Changes include:
- 1) Reset zoom factor before each test
- 2) Only dump the backforward list when we got other dump result
- 3) When we dump the render tree, and got zero result print out:
- [mainFrame renderTreeAsExternalRepresentation]
- and not:
- [frame renderTreeAsExternalRepresentation]
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::methodNameStringForFailedTest):
- (WebCore::DumpRenderTree::dump):
-
-2009-08-05 chris fleizach <cfleizach@apple.com>
-
- Fix Tiger build breakage.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
-
-2009-08-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 27994 - WAI-ARIA: aria-valuetext needs to be implemented
- https://bugs.webkit.org/show_bug.cgi?id=27994
-
- Expose valueDescription for accessibility.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getValueDescriptionCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::valueDescription):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::valueDescription):
-
-2009-08-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- REGRESSION: run-webkit-tests crashes if you have non-system perl in PATH
- https://bugs.webkit.org/show_bug.cgi?id=28006
-
- Hard-code perl to /usr/bin/perl and swig to /usr/bin/swig
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2009-08-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add pkasting to bugzilla-tool as a committer
- https://bugs.webkit.org/show_bug.cgi?id=28002
-
- * Scripts/modules/committers.py:
-
-2009-08-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 27993 - AXSliders are missing required attributes and actions
- https://bugs.webkit.org/show_bug.cgi?id=27993
-
- Add ability to check if any arbitrary action is supported.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isActionSupportedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isActionSupported):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isActionSupported):
-
-2009-08-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool unit tests need a test harness
- https://bugs.webkit.org/show_bug.cgi?id=27977
-
- * Scripts/run-webkit-unittests: Added.
-
-2009-08-04 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Gavin "Gavvy" Barraclough.
-
- Ensure that DumpRenderTreeSupport is regenerated when switching between OS versions
- by listing the DumpRenderTree binary as a dependency. Xcode has the smarts to rebuild
- DumpRenderTree itself when switching OS versions so this dependency removes the need
- for any smarts in the Makefile.
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2009-08-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool needs unit tests
- https://bugs.webkit.org/show_bug.cgi?id=26916
-
- Add some basic unit testing for scm.py.
-
- * Scripts/modules/scm.py:
- * Scripts/modules/scm_unittest.py: Added.
-
-2009-08-04 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Fix --skipped=only mode to honor flags such as --no-http and platform ignored directories by checking
- to make sure the Skipped entries are not in the $ignoredDirectories array. Directories commonly included
- are (http, media, compositing, wml, wcss).
-
- https://bugs.webkit.org/show_bug.cgi?id=27893
-
- * Scripts/run-webkit-tests:
-
-2009-08-03 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- Bug 27958 - WAI-ARIA: Implement 'aria-required' attribute.
- https://bugs.webkit.org/show_bug.cgi?id=27958
-
- Exposed isRequired to DumpRenderTree for accessibility.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsRequiredCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isRequired):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isRequired):
-
-2009-08-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool --commit-queue should validate commit-queue setter is a committer
- https://bugs.webkit.org/show_bug.cgi?id=27974
-
- With a test!
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/bugzilla_unittest.py:
-
-2009-08-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(r46700): bugzilla-tool land-diff double-spaces ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=27973
-
- The trailing comma (suppresses newlines) was lost in r46700.
-
- * Scripts/bugzilla-tool:
-
-2009-08-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool has too many fatal errors
- https://bugs.webkit.org/show_bug.cgi?id=27969
-
- Replace several fatal errors with ScriptError exceptions.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-08-04 Eric Seidel <eric@webkit.org>
-
- No review, ChangeLog fix only.
-
- Fix a ChangeLog line-spacing disaster caused by:
- https://bugs.webkit.org/show_bug.cgi?id=27973
-
- Still unsure what the fix for bugzilla-tool will be.
-
-2009-08-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool --commit-queue should only land commit-queue+ patches
- https://bugs.webkit.org/show_bug.cgi?id=27970
-
- commit-queue mode for bugzilla-tool
- https://bugs.webkit.org/show_bug.cgi?id=27918
-
- Make bugzilla tool smart enough to find the commit-queue+ flags and
- land those patches.
- When we call land-patches with --commit-queue, we should filter the
- patches we land to only those that have the commit-queue+ flag set.
- That way, when we call bugzilla-tool from a main commit queue process,
- we won't land the wrong patches.
-
- * Scripts/bugzilla-tool:
-
-2009-08-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- committer logic should be split out of bugzilla.py into its own module
-
- https://bugs.webkit.org/show_bug.cgi?id=27972
-
- I also added unit tests for the functionality I added.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/bugzilla_unittest.py: Added.
- * Scripts/modules/commiters_unittest.py: Added.
- * Scripts/modules/committers.py: Added.
-
-2009-08-03 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Handle any kind of line endings in svn-apply and svn-unapply, instead
- of assuming LF.
-
- * Scripts/svn-apply:
- * Scripts/svn-unapply:
-
-2009-08-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool land-patches needs --queue mode
- https://bugs.webkit.org/show_bug.cgi?id=27961
-
- Add a --commit-queue command line option to suppress user interaction.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-08-03 Mark Rowe <mrowe@apple.com>
-
- Build fix. Add installsrc, installhdrs and install targets.
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2009-08-03 Eric Carlson <eric.carlson@apple.com>
-
- Reviewed by Eric Seidel.
-
- HTMLInputElement is not controllable by assistive technologies
- https://bugs.webkit.org/show_bug.cgi?id=27941
-
- Accessibility control of a slider required adding increment() and decrement()
- methods to AccessibilityObject, so expose thos methods on AccessibilityUIElement.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (incrementCallback): New, call UI element increment method.
- (decrementCallback): New, call UI element decrement method.
- (AccessibilityUIElement::getJSClass): Expose increment and decrement methods.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::increment): New, send NSAccessibilityIncrementAction to Mac wrapper.
- (AccessibilityUIElement::decrement): New, send NSAccessibilityDecrementAction to Mac wrapper.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::increment): New, do nothing.
- (AccessibilityUIElement::decrement): New, do nothing.
-
-2009-08-02 David D. Kilzer <ddkilzer@webkit.org>
-
- <http://webkit.org/b/27930> bugzilla-tool hates Tor Arne Vestbø
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/bugzilla-tool:
- (set_reviewer_in_changelog): Made sure reviewer is properly
- encoded when calling replace().
-
-2009-08-02 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by David Levin.
-
- Script for building the wxBrowser sample app for wx.
- https://bugs.webkit.org/show_bug.cgi?id=27619
-
- * wx/browser/wscript: Added.
-
-2009-08-02 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Jan Alonzo.
-
- Scripts needed for the waf build.
- https://bugs.webkit.org/show_bug.cgi?id=27619
-
- * wx/build: Added.
- * wx/build/build_utils.py: Added.
- * wx/build/settings.py: Added.
- * wx/build/waf_extensions.py: Added.
- * wx/build/wxpresets.py: Added.
-
-2009-08-01 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- Make pixel test results more consistent across Mac OS X versions
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (createDifferenceImage): Avoid color correction when rendering the
- images into graphics contexts, so that the actual color values are
- compared, regardless of how the images are tagged.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Set the window’s color space to the
- main screen’s color space, even though the window is off-screen.
-
-2009-08-01 Mark Rowe <mrowe@apple.com>
-
- Try again to make the Qt build bot happy.
-
- * BuildSlaveSupport/test-result-archive: Create a placeholder file inside the newly-created
- directory to prevent 'zip' from failing due to the directory containing no files.
-
-2009-08-01 Mark Rowe <mrowe@apple.com>
-
- Try and make the Qt build bot happy.
-
- * BuildSlaveSupport/test-result-archive: Handle the case where run-webkit-tests generates
- no output files at all and thus does not create the layout-test-results directory.
-
-2009-08-01 Mark Rowe <mrowe@apple.com>
-
- Move the include of DumpRenderTreeSupport to after DumpRenderTree has been built.
-
- * Scripts/run-webkit-tests:
-
-2009-08-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig and David D. Kilzer.
-
- Fix <https://bugs.webkit.org/show_bug.cgi?id=27923>.
- Bug 27923: run-webkit-tests should not invoke "ps" repeatedly on Mac OS X
-
- run-webkit-tests invokes "ps" after each test on Mac OS X to determine whether DumpRenderTree is
- in the process of crashing. We can do the same test more efficiently with a simple call to sysctl.
- I couldn't find any built-in way of doing this directly from perl, so we do it from a simple C module
- instead. This speeds up run-webkit-tests by around 8%.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c: Added.
- (processIsCrashing):
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm: Added. Tiger does not have the SWIG tool
- that is used to generate the Perl binding to the C code, so we fall back to the old implementation on Tiger.
- * DumpRenderTree/mac/PerlSupport/Makefile: Added.
- * Scripts/run-webkit-tests:
-
-2009-08-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by David D. Kilzer.
-
- Display the reminder once rather than once per ChangeLog.
-
- * Scripts/prepare-ChangeLog:
-
-2009-08-01 David Kilzer <ddkilzer@apple.com>
-
- resolve-ChangeLogs: add error checking to git ls-files command on close()
-
- Reviewed by Eric Seidel.
-
- Item 2 of <https://bugs.webkit.org/show_bug.cgi?id=18599#c0>.
-
- * Scripts/resolve-ChangeLogs: Added error checking to close()
- after running git ls-files. Added error checking to all
- system() calls by checking for a non-zero WEXITSTATUS($?).
- Changed "|| die;" expressions to "or die $!;".
-
-2009-08-01 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths
-
- Reviewed by Eric Seidel.
-
- * Scripts/resolve-ChangeLogs: Used chdirReturningRelativePath()
- and determineVCSRoot() to change directories to the root of the
- project before running the command and to provide a path for
- removeChangeLogArguments() to make sure any ChangeLog arguments
- on the command line are still found.
- (canonicalRelativePath): Added. Returns a canonical path (e.g.,
- stripping 'dir/../' from the path) relative to the current
- directory.
- (removeChangeLogArguments): Added argument which contains a
- relative path that must be prepended to any ChangeLog arguments.
- Used canonicalRelativePath() and File::Spec->catfile() to
- construct a normalized, relative path to each file.
-
-2009-08-01 David Kilzer <ddkilzer@apple.com>
-
- Implement VCSUtils::chdirReturningRelativePath()
-
- Reviewed by Eric Seidel.
-
- Step 2 to fix:
- <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths
-
- * Scripts/VCSUtils.pm:
- (VCSUtils::chdirReturningRelativePath): Moved here from
- chdirAndGetDifference() in svn-create-patch.
- * Scripts/svn-create-patch: Switched to use
- chdirReturningRelativePath() instead of chdirAndGetDifference().
- (chdirAndGetDifference): Removed.
-
-2009-08-01 David Kilzer <ddkilzer@apple.com>
-
- Implement VCSUtils::determineVCSRoot()
-
- Reviewed by Eric Seidel.
-
- Step 1 to fix:
- <http://webkit.org/b/18599> resolve-ChangeLogs doesn't work with relative paths
-
- * Scripts/VCSUtils.pm: Removed reference to webkitdirs module.
- (VCSUtils::EXPORT): Added &determineVCSRoot. Realphabetized.
- (VCSUtils::determineGitRoot): Added. Based on code in
- commit-log-editor.
- (VCSUtils::determineVCSRoot): Implemented using
- determineGitRoot() and determineSVNRoot().
- * Scripts/commit-log-editor: Replaced use of
- topLevelSourceDirectory() with determineVCSRoot(). Resorted
- use statements.
- (topLevelSourceDirectory): Removed.
-
-2009-07-31 Daniel Bates <dbates@intudata.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=27757
-
- Resolves Perl redefinition warnings about functions tmpfile and tmpnam which are
- defined in both File::Temp and POSIX.
-
- This stops the warnings by preventing the "import" method of File::Temp from being called,
- which would otherwise add these functions into the primary namespace. Note, "use POSIX"
- will import these functions into the primary namespace anyway. We only need one instance
- of these functions in our namespace (or we get redefinition warnings), so lets use the
- one's in the POSIX package.
-
- * Scripts/update-webkit-auxiliary-libs: Changed "use File::Temp" to "use File::Temp ()".
- * Scripts/update-webkit-support-libs: ditto
-
-2009-07-31 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Add a top level build option to control datagrid support
- https://bugs.webkit.org/show_bug.cgi?id=27915
-
- * Scripts/build-webkit:
-
-2009-07-31 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- check-webkit-style --git-commit has bugs if you select a commit in the past
- https://bugs.webkit.org/show_bug.cgi?id=27908
-
- * Scripts/check-webkit-style:
- (main): Made the git-commit command only select the first commit
- if a range is given (and print a warning).
- * Scripts/modules/scm.py:
- (SCM::create_patch_from_local_commit):
- (SCM::create_patch_since_local_commit):
- (SCM::commit_locally_with_message):
- (SCM::discard_local_commits):
- Added an error messages in case these aren't overriden.
-
- (Git::create_patch_since_local_commit):
- Added this command to allow doing a diff of everything after a given commit.
-
-2009-07-31 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Speculative Qt build fix. Not reviewed.
-
- Add LayoutTestController::disableImageLoading() in jsobjects.h.
-
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-07-31 Brady Eidson <beidson@apple.com>
-
- Reviewed by John Sullivan.
-
- <rdar://problem/6973106> and https://bugs.webkit.org/show_bug.cgi?id=27896
- Favicons are still loaded when automatic image loading is disabled.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (disableImageLoadingCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::disableImageLoading):
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::disableImageLoading):
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::disableImageLoading): Stubbed for now.
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::disableImageLoading): Ditto.
-
-2009-07-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- bugzilla-tool post-commits trunk..head errors out
- https://bugs.webkit.org/show_bug.cgi?id=27847
-
- Rename commit_ids_from_range_arguments to commit_ids_from_commitish_arguments
- and make it handle the new arguments format proposed in the bug.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-07-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- clean up build-webkit to use less copy/paste code and remove unneeded SVG warning
- https://bugs.webkit.org/show_bug.cgi?id=27857
-
- * Scripts/build-webkit:
-
-2009-07-31 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27894> bugzilla-tool: Bugzilla.clear_attachment_review_flag() fails with ClientForm-0.2.10 and python-2.5
-
- Reviewed by Eric Seidel.
-
- * Scripts/modules/bugzilla.py:
- (Bugzilla.clear_attachment_review_flag): Specify which 'comment'
- form field to use when setting its value.
-
-2009-07-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- bugzilla-tool post-commits obsoletes its own work :(
- https://bugs.webkit.org/show_bug.cgi?id=27849
-
- Simple fix. Use .add() instead of .update()
-
- * Scripts/bugzilla-tool:
-
-2009-07-31 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Anders Carlsson.
-
- Improve platform-detection in run-webkit-tests
-
- This prevents miss-detection of mac-* over Qt/Mac.
-
- * Scripts/run-webkit-tests:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Cameron Zwarich.
-
- Teach buildbot to detect test cases that are missing results.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Things work better when you create the correct directories.
-
- * Scripts/run-webkit-tests:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Include some information about the error when we die.
-
- * Scripts/run-webkit-tests:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Ensure that the path exists before writing results to it.
- Hopefully this will make the Windows build bot happy.
-
- * Scripts/run-webkit-tests:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adam Treat and Jon Honeycutt.
-
- Teach run-webkit-tests to always store the actual results in the results directory for new tests.
- This allows us to give a working link to the results from the result summary page, even if we're
- not generating new results in to the tree.
-
- * Scripts/run-webkit-tests:
-
-2009-07-30 Mark Rowe <mrowe@apple.com>
-
- Add a Qt Linux build bot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-07-30 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Roben.
-
- Add --minimal option to webkit-build.
- https://bugs.webkit.org/show_bug.cgi?id=27852
-
- This option disables all optional build features unless
- they are explicitly enabled.
-
- * Scripts/build-webkit:
-
-2009-07-30 Jakub Wieczorek <faw217@gmail.com>
-
- [Qt] Fix build with GCC 4.4.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
-
-2009-07-29 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=27813
-
- [Qt] Support pixel tests in DumpRenderTree for the Qt port.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::setDumpPixels):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-29 Ariya Hidayat <ariya.hidayat@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=27813
-
- [Qt] Implement ImageDiff.
-
- * DumpRenderTree/qt/ImageDiff.cpp: Added.
- * DumpRenderTree/qt/ImageDiff.pro: Added.
-
-2009-07-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- build-webkit: Reorder logic for determining the baseProductDir
-
- https://bugs.webkit.org/show_bug.cgi?id=27699
-
- We now do port-spesific probing for the product dir first, and then
- fall back to either the generic WEBKITOUTPUTDIR (which now also works
- on Mac), or WebKitBuild.
-
- Then we add the git branch if the git branch build option is enabled.
-
- Finally we massage the product dir based on the port. For example the
- Mac port will now always set the SYMROOT and OBJROOT configuration for
- XCode.
-
- Note that isAppleWinWebkit() and isCygwin() is not mutually exclusive,
- hence the normal if and not elsif in the last two blocks.
-
- * Scripts/webkitdirs.pm:
-
-2009-07-29 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27082> bugzilla-tool: Add --no-close switch to land-patches
-
- Reviewed by David Levin.
-
- * Scripts/bugzilla-tool:
- (LandPatchesFromBugs.__init__): Added --no-close switch.
- (LandPatchesFromBugs.land_patches): Don't close the bug if the
- --no-close switch was used. Always clear the review+ flag on
- every landed patch using the commit_text message when cleared.
- This prevents patches from showing up in the commit queue if
- reopened and provides consistency with all landed patches.
- * Scripts/modules/bugzilla.py:
- (Bugzilla.clear_attachment_review_flag): Added.
-
-2009-07-29 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27815> bugzilla-tool: add -m/--description to post-commits command
-
- Reviewed by Eric Seidel.
-
- * Scripts/bugzilla-tool:
- (PostDiffAsPatchToBug.execute): Changed default patch name from
- "patch" to "Patch v1".
- (PostCommitsAsPatchesToBug.__init__): Added -m/--description
- switch.
- (PostCommitsAsPatchesToBug.execute): Use description provided by
- -m/--description switch first, else fall back to the commit
- message.
-
-2009-07-29 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Dave Levin.
-
- Make check-webkit-style support files as arguments.
- https://bugs.webkit.org/show_bug.cgi?id=27549
-
- * Scripts/check-webkit-style:
- Support files as argument. Change documentation and use basename
- on the binary name when used in the documentation. Also do not
- die when printing something containing non-ASCII characters.
-
-2009-08-06 Mike Fenton <mike.fenton@torchmobile.com>
-
- Reviewed by David Levin.
-
- Add validation for pointer and reference declaration as defined by webkit style guidelines to cpp_style.py.
- Add unit tests for validation and update existing c style cast test to be run explicitly as c validation.
-
- https://bugs.webkit.org/show_bug.cgi?id=27984
-
- * Scripts/modules/cpp_style.py:
- * Scripts/modules/cpp_style_unittest.py:
-
-2009-07-29 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27119> bugzilla-tool: Add create-bug command
-
- Reviewed by David Levin.
-
- Implement "create-bug" command for bugzilla-tool.
-
- * Scripts/bugzilla-tool: Added CreateBug class.
- (CreateBug.__init__): Added.
- (CreateBug.create_bug_from_commit): Added.
- (CreateBug.create_bug_from_patch): Added.
- (CreateBug.prompt_for_bug_title_and_comment): Added.
- (CreateBug.execute): Added.
- (BugzillaTool.__init__): Added create-bug command.
- * Scripts/modules/bugzilla.py:
- (Bugzilla.prompt_for_component): Added.
- (Bugzilla.check_create_bug_response_returning_bug_id_on_success): Added.
- (Bugzilla.create_bug_with_patch): Added.
-
-2009-07-29 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Eric Seidel and Xan Lopez.
-
- [Gtk] Enable http/tests/appcache tests
- https://bugs.webkit.org/show_bug.cgi?id=27674
-
- Add support for testing http/tests/appcache tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAppCacheMaximumSize):
-
-2009-07-28 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Prevent nightly builds of WebKit from launching against old Safari versions that we no longer work with.
-
- * WebKitLauncher/main.m:
- (checkSafariVersion): Add a minimum required Safari version of 4.0. This matches the requirement on Windows.
- (main): If the minimum version requirement is not met, display an alert and bail out.
-
-2009-07-28 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- cpplint* should be named cpp_style*
- https://bugs.webkit.org/show_bug.cgi?id=27752
-
- The files were renamed. A few renames were done:
- CppLint -> CppStyle
- cpplint -> cpp_style
-
- * Scripts/check-webkit-style:
- * Scripts/modules/cpp_style.py: Copied from cpplint.py and
- did name fix ups.
- * Scripts/modules/cpp_style_unittest.py: Copied from cpplint_unittest.py and
- did name fix ups.
- * Scripts/modules/cpplint.py: Removed.
- * Scripts/modules/cpplint_unittest.py: Removed.
-
-2009-07-28 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Holger Freyther.
-
- Add Steve Falkenburg to bugzilla-tools' reviewers list
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-28 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Implement test result archive support for the Qt port.
-
- * BuildSlaveSupport/test-result-archive:
-
-2009-07-27 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=27755
- Layout tests that dump resource load delegate calls should dump the request method and the response status code.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSURLResponse _drt_descriptionSuitableForTestResult]):
- (-[NSURLRequest _drt_descriptionSuitableForTestResult]):
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (descriptionSuitableForTestResult):
-
-2009-07-27 Pierre d'Herbemont <pdherbemont@apple.com>
-
- Reviewed by David Levin.
-
- "bugzilla-tool post-commit head" doesn't work because it can't find the bug id from the commit load.
- https://bugs.webkit.org/show_bug.cgi?id=27747
-
- modules.bugzilla is not found because not included.
-
- * Scripts/modules/scm.py: Properly import modules.bugzilla.
-
-2009-07-24 Pierre d'Herbemont <pdherbemont@apple.com>
-
- Reviewed by David Kilzer.
-
- commit-log-editor should allow git commit --amend to regenerate the commit log based on the modifed ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=27664
-
- * Scripts/commit-log-editor: Add --regenerate-log option.
- The user is asked if he wants to suppress previous ChangeLog and regenerate it,
- if this option is enabled.
-
-2009-07-27 Gabor Rapcsanyi <rapcsanyi.gabor@stud.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Generating remote links causes a lot of unnecessary spew on Qt build bot too
-
- * Scripts/run-webkit-tests:
-
-2009-07-25 Kwang Yul Seo <skyul@company100.net>
-
- Reviewed by Darin Adler.
-
- Windows build break due to warning C4819
- https://bugs.webkit.org/show_bug.cgi?id=27416
-
- Disable C4819 warning to fix build.
-
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2009-07-24 Nikolas Zimmermann <nikolas.zimmermann@torchmobile.com>
-
- Not reviewed. Add Kevin McCullough as reviewer in bugzilla.py
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-24 Eli Fidler <eli.fidler@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Improve git workflow by populating commit messages with ChangeLog entries.
- https://bugs.webkit.org/show_bug.cgi?id=27605
-
- If the user doesn't manually modify the ChangeLog files, use
- prepare-ChangeLog to populate the git commit message. This behaviour
- can be disabled by the 'webkitGenerateCommitMessage' git configuration option.
-
- * Scripts/commit-log-editor:
-
-2009-07-24 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- cpplint crash when there is a duplicate header followed by another header.
- https://bugs.webkit.org/show_bug.cgi?id=27625
-
- * Scripts/modules/cpplint.py: Ensure that include_state.header_types is updated even
- there is a duplicate header, which resulted in some code rearrangement. Also,
- changed some if's in this function to return early. This avoids having nearly the
- whole function content being indented.
- * Scripts/modules/cpplint_unittest.py: Added a test which would have exposed the crash.
-
-2009-07-24 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Filetype support changes for cpplint and check_webkit_style
- https://bugs.webkit.org/show_bug.cgi?id=27653
-
- Introduce .c support for check_webkit_style, and remove support for
- .cc files in favor of .cpp.
-
- * Scripts/check-webkit-style:
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-24 Eli Fidler <eli.fidler@torchmobile.com>
-
- Reviewed by David Levin.
-
- Improve git workflow by populating commit messages with ChangeLog entries.
- https://bugs.webkit.org/show_bug.cgi?id=27605
-
- add --[no-]write prepare-ChangeLog options to bash completion
-
- * Scripts/webkit-tools-completion.sh:
-
-2009-07-24 Andrei Popescu <andreip@google.com>
-
- Reviewed by Anders Carlsson.
-
- ApplicationCache should have size limit
- https://bugs.webkit.org/show_bug.cgi?id=22700
-
- Adds a new method on the LayoutTestController that
- allows a JS unit test to configure the maximum size
- of the Application Cache.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAppCacheMaximumSizeCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAppCacheMaximumSize):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAppCacheMaximumSize):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAppCacheMaximumSize):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAppCacheMaximumSize):
-
-2009-07-24 Adam Barth <abarth@webkit.org>
-
- Rubber stamped by Eric Seidel.
-
- Added andersca to list of reviewers.
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Xan Lopez.
-
- Fix dozens of "Deallocation of a pointer not malloced" messages seen while running
- layout tests on the build bot.
-
- Memory allocated via FastMalloc was being deleted via the system memory allocator
- due to an inconsistent including of FastMalloc.h. We address this by including it
- from config.h and including config.h from every implementation file, as in our other
- projects.
-
- * DumpRenderTree/ForwardingHeaders/wtf/FastMalloc.h: Copied from JavaScriptGlue/ForwardingHeaders/wtf/FastMalloc.h.
- * DumpRenderTree/config.h:
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/mac/AppleScriptController.m:
- * DumpRenderTree/mac/CheckedMalloc.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/EditingDelegate.mm:
- * DumpRenderTree/mac/EventSendingController.mm:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * DumpRenderTree/mac/GCControllerMac.mm:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/mac/NavigationController.m:
- * DumpRenderTree/mac/ObjCController.m:
- * DumpRenderTree/mac/ObjCPlugin.m:
- * DumpRenderTree/mac/ObjCPluginFunction.m:
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- * DumpRenderTree/mac/PlainTextController.mm:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- * DumpRenderTree/mac/TextInputController.m:
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/mac/WorkQueueItemMac.mm:
-
-2009-07-24 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Simon Hausmann.
-
- Add a command line option to run-javascriptcore-tests to explicitly opt out of attempting to rebuild JavaScriptCore.
- This is primarily useful to speed up the build bots where one machine builds JavaScriptCore and a second runs the tests,
- leading to situations where the build system unnecessarily feels that the need to recompile.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-javascriptcore-tests:
-
-2009-07-23 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [Gtk] Add implementation of GCController for DRT
- https://bugs.webkit.org/show_bug.cgi?id=27636
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared):
- (main):
- * DumpRenderTree/gtk/GCControllerGtk.cpp:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
-
-2009-07-23 Mark Rowe <mrowe@apple.com>
-
- Update build.webkit.org config for new machine.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2009-07-23 Brady Eidson <beidson@apple.com>
-
- Remove accidentally checked in code.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (waitUntilDoneWatchdogFired):
- (LayoutTestController::setWaitToDump):
-
-2009-07-23 Brady Eidson <beidson@apple.com>
-
- Reviewed by Geoff Garen.
-
- WebCore has a few places that don't gracefully handle a null request returned from willSendRequest.
- https://bugs.webkit.org/show_bug.cgi?id=27595
-
- Add the ability to tell the LayoutTestController to return a null request for willSendRequest
- redirect callbacks.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setWillSendRequestReturnsNullOnRedirectCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::willSendRequestReturnsNullOnRedirect):
- (LayoutTestController::setWillSendRequestReturnsNullOnRedirect):
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::willSendRequest):
-
-2009-07-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed Oliver Hunt.
-
- Fix DumpRenderTree to not fail an assertion on launch on a new machine.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting): Disable the XSS auditor. It being enabled
- breaks all of the JavaScript tests within testStringByEvaluatingJavaScriptFromString,
- which causes us to exit due to an assertion failure. It's not clear why the XSS auditor
- decides to interfere with these tests.
-
-2009-07-23 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Update default state of the XSS auditor in GTK DumpRenderTree to match Mac and Windows
- in hopes of fixing some layout test failures seen on the build bot.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Fix false positives for switch statement indentation check in cpplint.
- https://bugs.webkit.org/show_bug.cgi?id=27615
-
- Makes one-line case statements (e.g. "case foo: bar();") work.
- Also a few general improvements to the robustness and readability of
- the check, and more test cases.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Add check for line-breaking rule #3 to cpplint.
- https://bugs.webkit.org/show_bug.cgi?id=27610
-
- "An else if statement should be written as an if statement when
- the prior if concludes with a return statement."
-
- Implemented by a multi-line (kind of back-tracking) algorithm.
- Comes with loads of unit tests. Fixes the check for label indentation
- to be not so overzealous, as it didn't allow for completely unindented
- goto labels (at the very start of a line).
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-23 Eli Fidler <eli.fidler@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Improve git workflow by populating commit messages with ChangeLog entries.
- https://bugs.webkit.org/show_bug.cgi?id=27605
-
- add --[no-]write option to optionally output new ChangeLog entries to
- stdout instead of modifying ChangeLog files
-
- fix Torch Mobile copyright
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-23 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Enable cpplint for .c files.
- https://bugs.webkit.org/show_bug.cgi?id=27604
-
- Also make sure that the check for NULL does not apply to .c files.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-22 Steve Falkenburg <sfalken@apple.com>
-
- Checkpoint new Windows nightly launcher.
-
- Reviewed by Mark Rowe.
-
- * WebKitLauncherWin: Added.
- * WebKitLauncherWin/Resource.h: Added.
- * WebKitLauncherWin/WebKitLauncherWin.cpp: Added.
- (getStringValue): Retrieve a string registry value.
- (applePathFromRegistry): Get an Apple-related path out of the registry.
- (copyEnvironmentVariable): Copy an environment variable.
- (safariInstallDir): Helper function to get the install directory for Safari.
- (safariBrowserExe): Helper function to get the full path of the Safari executable.
- (_tWinMain): Locate Safari and launch it after setting up an environment variable.
- * WebKitLauncherWin/WebKitLauncherWin.h: Added.
- * WebKitLauncherWin/WebKitLauncherWin.rc: Added.
- * WebKitLauncherWin/WebKitLauncherWin.vcproj: Added.
- * WebKitLauncherWin/webkit.ico: Added.
-
-2009-07-22 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- run-webkit-lint should be named check-webkit-style
- https://bugs.webkit.org/show_bug.cgi?id=27568
-
- This name better reflects the fact that it is about checking the style of files.
-
- * Scripts/check-webkit-style: Renamed from WebKitTools/Scripts/run-webkit-lint.
-
-2009-07-22 Takeshi Yoshino <tyoshino@google.com>
-
- Reviewed by Darin Adler.
-
- VC++ 2005 Express failed to build WebKit due to raw UTF-8 string in WebKit/win/WebCoreLocalizedStrings.cpp
- https://bugs.webkit.org/show_bug.cgi?id=26375
-
- Make it able to use hexadecimal escape sequences in .*UI_STRING(_KEY)? macros. Now,
- the extract-localizable-strings script unescapes hexadecimal escape sequences in string literals
- in the macros before writing out them into the file to update.
-
- By this fix, we can eliminate raw UTF-8 strings in source code while using raw UTF-16 big endian
- strings in the Localizable.strings file.
-
- Bonus: There's no longer extract-webkit-localizable-strings script. Fix usage message to guide
- users to update-webkit-localizable-strings.
-
- * Scripts/extract-localizable-strings:
-
-2009-07-22 Shinichiro Hamaji <hamaji@google.com>
-
- Reviewed by David Levin.
-
- Tiny typo fixes for cpplint.py
- https://bugs.webkit.org/show_bug.cgi?id=27530
-
- * Scripts/modules/cpplint.py:
-
-2009-07-22 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- run-webkit-lint checks code which are not changed
- https://bugs.webkit.org/show_bug.cgi?id=27529
-
- Add check if the line is newly added.
-
- * Scripts/run-webkit-lint:
-
-2009-07-22 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- run-webkit-lint should have --git-commit option
- https://bugs.webkit.org/show_bug.cgi?id=27528
-
- * Scripts/modules/cpplint.py:
- * Scripts/run-webkit-lint:
-
-2009-07-22 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Factor svn-create-patch's "determineSvnRoot()" into a function in
- VCSUtils.pm so commit-log-editor can use it too.
-
- * Scripts/VCSUtils.pm: Add determineSVNRoot().
- * Scripts/commit-log-editor: Use determineSVNRoot() instead of old
- code (which didn't work as well).
- * Scripts/svn-create-patch: Remove determineSvnRoot() (moved).
-
-2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Fix false positives in namespace indentation checks.
- https://bugs.webkit.org/show_bug.cgi?id=27567
-
- The regular expression detecting goto labels (in order
- to skip those) was too permissive, which caused other
- code like "Foo::Bar()" to be treated as a label too,
- thereby not stopping the processing loop as expected.
-
- Now comes with a stricter regexp, and more demanding
- test cases to check for these issues.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Fix cpplint generating false positives for
- "primary" includes in headers.
- https://bugs.webkit.org/show_bug.cgi?id=27553
-
- Doing so by only flagging includes in header files
- as primary when the include filename exactly matches
- the header filename.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-22 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- cpplint generates false positives for primary includes
- https://bugs.webkit.org/show_bug.cgi?id=27544
-
- Fix false positives for instances when cpplint would
- normally classify multiple includes as primary: After
- the first primary include, classify subsequent ones as
- "other" includes even if they look like primary ones.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-22 Gabor Rapcsanyi <rapcsanyi.gabor@stud.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- Pass XAUTHORITY environment variable to $dumpTool as well.
-
- * Scripts/run-webkit-tests:
-
-2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- Add check for correct wtf includes to cpplint.
- https://bugs.webkit.org/show_bug.cgi?id=27524
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by David Levin.
-
- Add checks for multi-line boolean operator placement.
- https://bugs.webkit.org/show_bug.cgi?id=27496
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by David Levin.
-
- We can't match implementation file and primary header exactly
- since we have so many files in WebKit where the port suffix
- is appended to the filename.
-
- Example: FooQt.cpp and the primary header is Foo.h.
-
- * Scripts/modules/cpplint.py:
-
-2009-07-21 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by David Levin.
-
- Add checks for switch statement indentation to cpplint.
- https://bugs.webkit.org/show_bug.cgi?id=27508
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Adam Treat.
-
- Feature request: cpplint should check for braces - rule 2
- https://bugs.webkit.org/show_bug.cgi?id=27497
-
- Add the requested feature: Make sure { is on the same line
- as the foreach "keyword".
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-20 Jakob Petsovits <jakob.petsovits@torchmobile.com>
-
- Reviewed by David Levin.
-
- Add checks for namespace indentation to cpplint.
- https://bugs.webkit.org/show_bug.cgi?id=27461
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-20 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by David Levin.
-
- Add cpplint check for proper include order
- https://bugs.webkit.org/show_bug.cgi?id=27462
-
- Add a new check to cpplint to flag cases where the include section of a file
- does not match the mandated include order and style of the Webkit coding style
- guidelines.
-
- Add associated tests.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- Support lint for patches
- https://bugs.webkit.org/show_bug.cgi?id=27291
-
- Add run-webkit-lint script, which lints recent changes in local
- repository. Also, modified cpplint.py so that we don't need to
- specify verbose level for process_file().
-
- * Scripts/modules/cpplint.py:
- * Scripts/run-webkit-lint: Added.
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- diff_parser should accept lines without trailing \n
- https://bugs.webkit.org/show_bug.cgi?id=27483
-
- Normalize the input lines by removing a trailing newline.
- Also, add a case for unittest for newly added files.
-
- * Scripts/modules/diff_parser.py:
- * Scripts/modules/diff_parser_unittest.py:
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- cpplint.py's process_file() should accept customized error function
- https://bugs.webkit.org/show_bug.cgi?id=27487
-
- * Scripts/modules/cpplint.py:
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- cpplint.py should have an interface to get global error count
- https://bugs.webkit.org/show_bug.cgi?id=27486
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- cpplint's parse_argument should not exit even if no files are specified
- https://bugs.webkit.org/show_bug.cgi?id=27489
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-21 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- diff_parser: s/add_deleted_line/add_old_line/g
- https://bugs.webkit.org/show_bug.cgi?id=27484
-
- * Scripts/modules/diff_parser.py:
-
-2009-07-21 Roland Steiner <rolandsteiner@google.com>
-
- Reviewed by David Levin.
-
- Add ENABLE_RUBY to list of build options
- https://bugs.webkit.org/show_bug.cgi?id=27324
-
- * Scripts/build-webkit: Added flag ENABLE_RUBY.
-
-2009-07-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by David D. Kilzer.
-
- Fix <https://bugs.webkit.org/show_bug.cgi?id=27482>.
- Bug 27482: svn-apply cannot apply patch generated by Windows SVN
-
- A regexp in svn-apply was treating everything prior to a \n as part of the
- file name. The native Windows SVN client uses \r\n for line endings which
- meant that the \r was being included in the file name. This defeated the
- special-case logic for ChangeLogs to apply them with an increased fuzz factor,
- meaning that the ChangeLog portions of such patches would fail to apply.
-
- Also updated two other regexps that look like they would hit similar problems
- with line-endings so that they will correctly handle patches from Windows SVN.
-
- * Scripts/svn-apply:
-
-2009-07-20 Peter Kasting <pkasting@google.com>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=27468
- Back out r46060, which caused problems for some Apple developers.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2009-07-20 Peter Kasting <pkasting@google.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Use shorter, more correct code for determining the current directory,
- which works better with symbolic links on some systems. Also switch
- from checking repository root to checking UUID, to match scm.py.
-
- * Scripts/svn-create-patch:
-
-2009-07-20 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Work around <rdar://problem/7075373> by ensuring that the URL is absolute before handing it off to CoreText.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (activateFonts):
-
-2009-07-20 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- Enable filename completion for run-webkit-test (added "-o default").
-
- * Scripts/webkit-tools-completion.sh:
-
-2009-07-20 Simon Hausmann <simon.hausmann@nokia.com>
-
- No review, just adding Gavin Barraclough as reviewer.
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-20 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by David Levin.
-
- Add support for Qt's foreach to cpplint
- https://bugs.webkit.org/show_bug.cgi?id=27386
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-18 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=27145
- [Gtk][REGRESSION] subframe-navigate-during-main-frame-load.html fails after r45615
-
- Reviewed by Gustavo Noronha.
-
- Normalize file URLs.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpHistoryItem):
-
-2009-07-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Further improve non-Cygwin SVN support.
-
- * Scripts/prepare-ChangeLog: Harmless change to be consistent with other
- places that consume whitespace at the end of svn output.
- * Scripts/resolve-ChangeLogs: Add support for SVN 1.6. Slightly
- optimize svn info parsing based on technique in svn-create-patch.
- Normalize paths and consume whitespace in the same way as
- prepare-ChangeLog, for Windows systems with a non-Cygwin SVN. Force
- diff and patch to run in binary mode so that they won't
- "intelligently" screw up line endings.
-
-2009-07-18 Simon Fraser <simon.fraser@apple.com>
-
- Fix Tiger DRT build.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
-
-2009-07-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein.
-
- DRT doesn't reliably snapshot composited layers
- https://bugs.webkit.org/show_bug.cgi?id=27399
-
- If we're doing an "onscreen" pixel capture, it means that we're snapshotting a view
- with composited content. In that case we need to force the view to display so that
- the composited layers are rendered to the screen.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
-2009-07-17 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- bugzilla-tool does not understand nested SVN repos
- https://bugs.webkit.org/show_bug.cgi?id=27404
-
- Determine the root of the working copy by looking at SVN's UUIDs.
-
- * Scripts/modules/scm.py:
-
-2009-07-17 David Levin <levin@chromium.org>
-
- Reviewed by Mark Rowe.
-
- webkit-tools-completion.sh has two typos and sorting issues.
- https://bugs.webkit.org/show_bug.cgi?id=27401
-
- * Scripts/webkit-tools-completion.sh: Fix two typos "--dif" and "-clean".
- Also, sort all lists including items in the case statement and flags for
- the commands.
-
-2009-07-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Tweak some regexes for correctness.
-
- * Scripts/prepare-ChangeLog: Allow 1-character filenames (my previous
- change here didn't quite get things right).
- * Scripts/update-webkit: Detect conflicting ChangeLogs correctly by not
- including any trailing whitespace in the name "ChangeLog", and by
- normalizing paths before calling basename() to avoid confusing it.
- (normalizePath() copied from prepare-ChangeLog.)
-
-2009-07-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by Steve Falkenburg.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Only add Cygwin to the path when it isn't already there. This avoids
- causing problems for people who purposefully have non-Cygwin versions of
- executables like svn in front of the Cygwin ones in their paths.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-
-2009-07-17 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- WebKit should have a bash completion script to aid with common commands.
- https://bugs.webkit.org/show_bug.cgi?id=27374
-
- * Scripts/webkit-tools-completion.sh: The script which enables option completion
- for several WebKit command line scripts.
-
-2009-07-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Avoid error spew on Macs, and fix a few other tiny details.
-
- * Scripts/svn-create-patch:
-
-2009-07-17 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Dave Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=27377
- This makes cpplint complain about this for instance:
-
- if (true)
- {
- int foo;
- }
-
- Add the appropriate unit tests.
-
- * Scripts/modules/cpplint.py:
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-17 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Dave Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=27377
- Don't filter whitespace at the end of the line. This is not
- explicitly a rule of webkit coding style, but there is no reason
- not to warn of this common style problem.
-
- Don't filter whitespace newline. Now, cpplint will complain
- about the following situation:
-
- if (true) {
- doSomething();
- doSomethingAgain();
- }
- else
- doSomething();
-
- Which is a webkit coding style rule violation.
-
- * Scripts/modules/cpplint.py:
-
-2009-07-17 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Dave Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=27377
- Move this comment to where it belongs.
-
- * Scripts/modules/cpplint_unittest.py:
-
-2009-07-17 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Correct crash in WinLauncher due to improper mixing of BSTR
- and TCHAR types.
- https://bugs.webkit.org/show_bug.cgi?id=27381
-
- * WinLauncher/WinLauncher.cpp:
- (loadURL): Perform SysReAllocString to update the BSTR with
- the contents of the TCHAR string.
-
-2009-07-17 David Levin <levin@chromium.org>
-
- Reviewed by Adam Treat.
-
- cpplint should flag usages of NULL.
- https://bugs.webkit.org/show_bug.cgi?id=27341
-
- * Scripts/modules/cpplint.py: Add the check for NULL test and call it.
- Make the collapse_strings method public.
- * Scripts/modules/cpplint_unittest.py: Add several tests to verify
- the check for NULL behavior. Adjust existing tests due to the
- new NULL check:
- 1. Several had NULL removed (or were just removed completely).
- 2. Two tests now do an assert that allows the caller to check
- that a particular error is one of several that was returned.
-
-2009-07-17 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- Add a parser of patches for linter.
- https://bugs.webkit.org/show_bug.cgi?id=27363
-
- Adds a simple parser for unified diff format.
-
- * Scripts/modules/diff_parser.py: Added.
- * Scripts/modules/diff_parser_unittest.py: Added.
-
-2009-06-30 Holger Hans Peter Freyther <zecke@selfish.org>
-
- Reviewed by Simon Hausmann.
-
- [GTK+] Remove check to be loadable in firefox
- https://bugs.webkit.org/show_bug.cgi?id=27345
-
- if (aMozillaVTable->size < sizeof (NPNetscapeFuncs))
- fails in firefox but no other example in the mozilla tree is
- doing that check. Remove and be happy.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (NP_Initialize):
-
-2009-07-17 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Simon Hausmann.
-
- Something about having a single TAB in a style checking tool like this
- is equivalent to nails on a chalk board to me...
-
- * Scripts/modules/cpplint.py:
-
-2009-07-17 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- Overwrite the plugin directories for the DRT.
- Part of https://bugs.webkit.org/show_bug.cgi?id=27215
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2009-07-16 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- Add --web-sockets flag and ENABLE_WEB_SOCKETS define.
- https://bugs.webkit.org/show_bug.cgi?id=27206
-
- Add --web-sockets flag.
-
- * Scripts/build-webkit: add --web-sockets flag.
-
-2009-07-16 Adam Treat <adam.treat@torchmobile.com>
-
- Reviewed by Dave Levin.
-
- cpplint should check for one line control clauses that are surrounded
- by braces
- https://bugs.webkit.org/show_bug.cgi?id=27354
-
- * Scripts/modules/cpplint.py: Added the new lint check.
- * Scripts/modules/cpplint_unittest.py: Add tests for the new lint check
- and fix the other tests as they were not passing this new lint check.
-
-2009-07-16 Peter Kasting <pkasting@google.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Improve support for WebKit checkouts hosted inside other checkouts
- (possible for some ports, e.g. Chromium).
-
- * Scripts/svn-create-patch: Determine SVN root by looking for Repository
- Root string and aborting when it's missing or different than what
- we've already seen.
-
-2009-07-16 Peter Kasting <pkasting@google.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Improve support for non-Cygwin SVNs on Windows.
-
- * Scripts/commit-log-editor: Modify regex so that trailing whitespace
- (e.g. \r) isn't included in filenames.
- * Scripts/prepare-ChangeLog: Fix a case of adding "\n" to the ChangeLog
- without normalizing. Normalize file paths early instead of late so
- all stages of the script work. Modify regexes so that trailing
- whitespace (e.g. \r) isn't included in filenames.
- * Scripts/svn-create-patch: Use a regex instead of chomp so we cut off
- line endings even if they don't match Perl's.
-
-2009-07-16 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by Darin Adler.
-
- WebKitTools/Scripts/svn-create-patch is broken
- https://bugs.webkit.org/show_bug.cgi?id=27328
-
- * Scripts/svn-create-patch: one line fix for unusual perl behavior
-
-2009-07-16 David Levin <levin@chromium.org>
-
- Reviewed by David Kilzer.
-
- cpplint should check for equality comparisons to 0/true/false
- https://bugs.webkit.org/show_bug.cgi?id=27333
-
- * Scripts/modules/cpplint.py: Added the new lint check.
- * Scripts/modules/cpplint_unittest.py: Add tests for the new lint check
- and fix a regex that in another unit test that caused it to fail when
- you have a directory with a number in it (like WebKit-2)
-
-2009-07-16 David D. Kilzer <ddkilzer@webkit.org>
-
- <http://webkit.org/b/27241> bugzilla-tool post-commits silently fails with bad args
-
- Reviewed by Eric Seidel.
-
- * Scripts/bugzilla-tool:
- (PostCommitsAsPatchesToBug.execute): Added more error checking
- when consuming arguments.
-
-2009-07-16 David D. Kilzer <ddkilzer@webkit.org>
-
- TOOL FIX: scm.py: CommitMessage.message is ambiguous
-
- Fixes this error when running bugzilla-tool apply-patches
- --local-commit:
-
- File "bugzilla-tool", line 188, in apply_patches
- scm.commit_locally_with_message(commit_message.message() or patch['name'])
- TypeError: 'list' object is not callable
-
- * Scripts/modules/scm.py: After r45940 (and r45971), rename
- CommitMessage.message attribute to CommitMessage.message_lines.
- (CommitMessage.__init__):
- (CommitMessage.body):
- (CommitMessage.description):
- (CommitMessage.message):
- (CommitMessage.parse_bug_id):
-
-2009-07-16 David D. Kilzer <ddkilzer@webkit.org>
-
- TOOL FIX: bugzilla-tool: import CommitMessage class
-
- * Scripts/bugzilla-tool: After r45940, the CommitMessage class
- needs to be imported for commit_message_for_this_commit().
-
-2009-07-16 David Levin <levin@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- prepare-ChangeLog should display the --bug option in its help text.
- https://bugs.webkit.org/show_bug.cgi?id=27334
-
- * Scripts/prepare-ChangeLog: Added the help text.
-
-2009-07-15 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: Check in the version used to
- rename parseURL to deprecatedParseURL.
-
-2009-07-10 David Kilzer <ddkilzer@apple.com>
-
- bugzilla-tool: create CommitMessage class
-
- Reviewed by Eric Seidel.
-
- Create a CommitMessage class to encapsulate related code.
-
- * Scripts/bugzilla-tool:
- (bug_id_from_commit_message): Moved to
- CommitMessage.parse_bug_id().
- (commit_message_for_this_commit): Return a CommitMessage.
- (ApplyPatchesFromBug.apply_patches): Use CommitMessage.message().
- (LandPatchesFromBugs.build_and_commit): Ditto.
- (CommitMessageForCurrentDiff.execute): Ditto.
- (PostCommitsAsPatchesToBug.execute): Switched from
- Git.commit_message_for_commit() to
- Git.commit_message_for_local_commit(). Switched from
- bug_id_from_commit_message() to CommitMessage.parse_bug_id().
-
- * Scripts/modules/scm.py:
- (first_non_empty_line_after_index): Added.
- (CommitMessage.__init__): Added.
- (CommitMessage.body): Added.
- (CommitMessage.description): Added.
- (CommitMessage.message): Added.
- (CommitMessage.parse_bug_id): Added. Moved from
- bug_id_from_commit_message() in bugzilla-tool.
- (Git.commit_message_for_local_commit): Renamed from
- commit_message_for_commit(). Return a CommitMessage.
-
-2009-07-15 Joseph Pecoraro <joepeck02@gmail.com>
-
- Reviewed by David Kilzer.
-
- bugzilla-tool/svn-apply can't handle patches made from a non-root directory
- https://bugs.webkit.org/show_bug.cgi?id=26999
-
- * Scripts/svn-create-patch:
-
-2009-07-15 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- Move cpplint.py to module directory
- https://bugs.webkit.org/show_bug.cgi?id=27302
-
- * Scripts/modules/cpplint.py: Renamed from WebKitTools/Scripts/cpplint.py.
- * Scripts/modules/cpplint_unittest.py: Renamed from WebKitTools/Scripts/cpplint_unittest.py.
-
-2009-07-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=27295
-
- Re-implement QWebPage::shouldInterruptJavaScript to disable
- js interruption and avoid showing a messagebox during Qt DRT
- runs when script execution takes a bit longer.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::shouldInterruptJavaScript): Return false
- in re-implemented slot.
-
-2009-07-15 Zoltan Horvath <hzoltan@inf.u-szeged.hu>
-
- Reviewed by Jan Alonzo.
-
- Fix the DumpRenderTree GTK+ build
- https://bugs.webkit.org/show_bug.cgi?id=27290
-
- Set USE_SYSTEM_MALLOC macro for the DumpRenderTree build to
- disable using TCmalloc in DumpRenderTree.
-
- * GNUmakefile.am:
-
-2009-07-14 Steve Falkenburg <sfalken@apple.com>
-
- Reorganize JavaScriptCore headers into:
- API: include/JavaScriptCore/
- Private: include/private/JavaScriptCore/
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2009-07-14 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by David Levin.
-
- WebKit needs a style linting tool
- https://bugs.webkit.org/show_bug.cgi?id=25884
-
- Modifies cpplint (http://google-styleguide.googlecode.com/svn/trunk/cpplint/)
- based on WebKit's style guide.
-
- * Scripts/cpplint.py: Added.
- * Scripts/cpplint_unittest.py: Added.
-
-2009-07-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] DumpRenderTree no longer builds with Qt4.4
- https://bugs.webkit.org/show_bug.cgi?id=27257
-
- Flag Qt 4.5 dependency to allow building with Qt 4.4.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-13 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add new configuration flag for redistributable Windows build.
- https://bugs.webkit.org/show_bug.cgi=27087
-
- * DumpRenderTree/config.h: Check for presence of WIN_CAIRO and
- select appropriate configuration. Defaults to standard Apple build.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Add new WinCairo.vsprops
- to Debug_Cairo and Release_Cairo targets.
-
-2009-07-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- Always run the Qt DRT with the raster graphicssystem on X11, for
- increased stability in the image based tests, in particular canvas.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- Fix test netscape plugin usage with the Qt DRT.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage): Enable plugins in the settings.
- * Scripts/run-webkit-tests: Set the QT_WEBKIT_PLUGIN path to the correct build
- directory to make Qt DRT find the test netscape plugin.
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Make sure to disable the fixed contents size when resetting the page/view
- state between test runs, to avoid side-effects.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open): Call setFixedContentsSize() with an invalid
- QSize to disable the fixed layout.
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- When creating new windows, don't forget to connect the new
- page's main frame. This ensures that for example the layoutTestController
- is also available there.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::createWindow):
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Added support for LayoutTestController.setPrivateBrowsingEnabled.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setPrivateBrowsingEnabled):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Added support for database callbacks, storage quota setting,
- and clearing of all databases.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::dumpDatabaseQuota):
- * DumpRenderTree/qt/DumpRenderTree.h:
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setDatabaseQuota):
- (LayoutTestController::clearAllDatabases):
- * DumpRenderTree/qt/jsobjects.h:
- (LayoutTestController::shouldDumpDatabaseCallbacks):
- (LayoutTestController::dumpDatabaseCallbacks):
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Setup the path in the Qt DRT for HTML 5 Databases, to enable some of
- the storage layout tests.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Make the test output more robust by dumping only when the main
- frame finishes loading, instead of when _any_ frame finishes.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Connect to the
- main frame's loadFinished() signal instead of the page's one.
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Implement the GCController DRT interface.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Allocate the GCController.
- (WebCore::DumpRenderTree::initJSObjects): Register the interface with the JS engine.
- * DumpRenderTree/qt/DumpRenderTree.h: Declare m_gcController.
- * DumpRenderTree/qt/jsobjects.cpp: Implement GCController.
- (GCController::GCController):
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/qt/jsobjects.h: Declare GCController.
-
-2009-07-13 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Implement the GCController DRT interface in the Qt DRT.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Allocate the GCController.
- (WebCore::DumpRenderTree::initJSObjects): Register the interface with the JS engine.
- * DumpRenderTree/qt/DumpRenderTree.h: Declare m_gcController.
- * DumpRenderTree/qt/jsobjects.cpp: Implement GCController.
- (GCController::GCController):
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/qt/jsobjects.h: Declare GCController.
-
-2009-07-13 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=26718 [Gtk] Add support for javascript windows for DRT
-
- Reviewed by Gustavo Noronha and Xan Lopez.
-
- Support running of tests that open and close JS windows automatically.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (dumpBackForwardListForAllWebViews):
- (resetWebViewToConsistentStateBeforeTesting):
- (dump):
- (runTest):
- (webViewClose):
- (createWebView):
- (webViewCreate):
- (main):
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::windowCount):
- (LayoutTestController::setPopupBlockingEnabled):
-
-2009-07-13 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Maciej Stachowiak.
-
- prepare-ChangeLog should decode HTML entities in short description
- https://bugs.webkit.org/show_bug.cgi?id=27122
-
- Decode the short description by adding a function which decodes HTML
- entities. It can decode &, <, >, ", and ' . They may be sufficient
- as the description seems to be encoded by xml_quote in
- http://mxr.mozilla.org/bugzilla/source/Bugzilla/Util.pm
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-13 Drew Wilson <atwilson@google.com>
-
- Reviewed by David Levin.
-
- Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs
- https://bugs.webkit.org/show_bug.cgi?id=26932
-
- Added support for --shared-workers (turned off by default)
-
- * Scripts/build-webkit:
-
-2009-07-12 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- https://bugs.webkit.org/show_bug.cgi?id=27196
- Update check-for-global-initializers for the renaming for bidi.cpp to
- RenderBlockLineLayout.cpp
-
- * Scripts/check-for-global-initializers:
-
-2009-07-11 Simon Fraser <simon.fraser@apple.com>
-
- Enable support for accelerated compositing and 3d transforms on Leopard.
- <https://bugs.webkit.org/show_bug.cgi?id=20166>
- <rdar://problem/6120614>
-
- Reviewed by Oliver Hunt.
-
- * Configurations/FeatureDefines.xcconfig:
- * wtf/Platform.h:
-
-2009-07-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27173> svn-apply: Fix typo in git command used to find deleted files
-
- Reviewed by Eric Seidel.
-
- * Scripts/svn-apply:
- (scmWillDeleteFile): Changed 'head' to 'HEAD'.
-
-2009-07-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27167> bugzilla-tool: hide help for unsupported commands
-
- Reviewed by Eric Seidel.
-
- When bugzilla-tool -h|--help is invoked in an svn working
- directory, don't print help for commands that are only supported
- on git working directories.
-
- * Scripts/bugzilla-tool:
- (Command.__init__): Added requires_local_commits argument with a
- default of False. Set self.requires_local_commits attribute.
- (PostCommitsAsPatchesToBug.execute): Removed
- SCM.supports_local_commits() check since this is now handled by
- BugzillaTool.main().
- (PostCommitsAsPatchesToBug.__init__): Added
- requires_local_commits=True argument to Command.__init__().
- (BugzillaTool.commands_usage): Don't print help for commands if
- they require local commits and the current SCM doesn't support
- them.
- (BugzillaTool.main): If command_object requires local commits
- and the current SCM doesn't, exit with an error message.
-
-2009-07-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27117> bugzilla-tool: use Mac OS X keychain for authentication
-
- Reviewed by Eric Seidel.
-
- Try reading credentials from git config first, then keychain if
- running on Mac OS X, else prompt at the command-line.
-
- * Scripts/modules/bugzilla.py: Added "import platform".
- (credentials_from_git): Added.
- (credentials_from_keychain): Added.
- (is_mac_os_x): Added.
- (read_credentials): Added.
- (Bugzilla.__init__): Moved instance attribute bug_server to a
- static attribute named bug-server_url.
- (Bugzilla.bug_server_host): Added. Extracted host name from
- bug_server_url.
- (Bugzilla.bug_server_regex): Updated to be created using
- bug_server_host.
- (Bugzilla.bug_server_url): Renamed from bug_server.
- (Bugzilla.bug_url_for_bug_id): Updated for renaming of
- bug_server to bug_server_url.
- (Bugzilla.attachment_url_for_id): Ditto.
- (Bugzilla.fetch_bug_ids_from_commit_queue): Ditto.
- (Bugzilla.authenticate): Ditto. Updated to use
- read_credentials().
- (Bugzilla.add_patch_to_bug): Ditto.
-
-2009-07-10 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27115> bugzilla-tool: extract duplicate logging methods into a module
-
- Reviewed by Adam Roben.
-
- * Scripts/bugzilla-tool: Removed error() and log() methods and
- added import of new logging module.
- * Scripts/modules/bugzilla.py: Ditto. Removed "import sys".
- * Scripts/modules/scm.py: Ditto.
-
- * Scripts/modules/logging.py: Added.
- (log): Added.
- (error): Added. Prefix error messages with "ERROR: ".
-
-2009-07-10 Adam Roben <aroben@apple.com>
-
- Sort all our Xcode projects
-
- Accomplished using sort-Xcode-project-file.
-
- Requested by Dave Kilzer.
-
- * DrawTest/DrawTest.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
-
-2009-07-10 Adam Roben <aroben@apple.com>
-
- Print prepare-ChangeLog's reminders to STDERR so they don't end up in
- the diff output
-
- Fixes REGRESSION (r45647): prepare-ChangeLog -d puts non-diff lines
- into the diff
- <https://bugs.webkit.org/show_bug.cgi?id=27150>
-
- Reviewed by Maciej Stachowiak.
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-08 Adam Roben <aroben@apple.com>
-
- Use case-insensitive comparisons when sorting Xcode project files
-
- This matches the sorting used in Xcode's files list.
-
- Fixes Bug 27079: sort-Xcode-project-file should sort
- case-insensitively, to match Xcode's files list
- <https://bugs.webkit.org/show_bug.cgi?id=27079>
-
- Reviewed by Dave Kilzer.
-
- * Scripts/sort-Xcode-project-file:
- (sortChildrenByFileName):
- (sortFilesByFileName):
- Lowercase the strings before comparing them so that the comparison
- will be case-insensitive.
-
-2009-07-08 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger Freyther.
-
- https://bugs.webkit.org/show_bug.cgi?id=27109
-
- Fix side-effects in the Qt DRT with tests using application fonts.
-
- Detect if a test used application fonts and re-initialize the fontconfig
- application fontset accordingly.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open): call initializeFonts and remove all application fonts
- after running a testcase.
- (WebCore::DumpRenderTree::initializeFonts): Moved fontconfig initialization code
- here from main.
- * DumpRenderTree/qt/DumpRenderTree.h: Declare initializeFonts.
- * DumpRenderTree/qt/main.cpp:
- (main): Moved fontconfig initialization code to DRT::initializeFonts.
-
-2009-07-10 Antonio Gomes <antonio.gomes@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- [QT] [ARM] Add pkg-config entry for FontConfig on DRT.pro
- https://bugs.webkit.org/show_bug.cgi?id=26990
-
- Missing pkg-config entry for FontConfig in DRT.pro causes some compilers to
- not link fine against FontConfig bits.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2009-07-09 Drew Wilson <atwilson@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- https://bugs.webkit.org/show_bug.cgi?id=26903
-
- Turned on CHANNEL_MESSAGING by default because the MessageChannel API
- can now be implemented for Web Workers and is reasonably stable.
-
- * Scripts/build-webkit:
-
-2009-07-09 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/27114> bugzilla-tool: Parse short bug URL from commit log messages
-
- Reviewed by Adam Roben.
-
- * Scripts/bugzilla-tool:
- (bug_id_from_commit_message): Check for the short bug URL before
- checking for the longer bugs.webkit.org URL.
-
-2009-07-08 David Kilzer <ddkilzer@apple.com>
-
- Bug 27062: bugzilla-tool: post-commits should read bug id from commit log and actually work
-
- <https://bugs.webkit.org/show_bug.cgi?id=27062>
-
- Reviewed by Eric Seidel.
-
- Removed the required BUGID argument from the "post-commits"
- command and replaced it with a -b|--bug-id switch or parsing the
- commit log message for the bug URL. Fixed a bug in the
- "post-commits" that would ignore the COMMITISH used and post a
- patch of local changes against HEAD. Added --no-commit switch
- to disable using the bulk of the ChangeLog entry as the comment
- for the new patch.
-
- * Scripts/bugzilla-tool:
- (bug_id_from_commit_message): Added. Returns a bug id from the
- commit log message, thus enforcing the need for a bug URL in the
- message.
- (PostCommitsAsPatchesToBug.__init__): Updated help description
- to match new behavior of pulling bug ids from commit log
- messages instead of from the command line. Added -b|--bug-id
- switch and --no-comment switch.
- (PostCommitsAsPatchesToBug.execute): Updated to use
- bug_id_from_commit_message() to pull bug ids from commit log
- messages. Also switched from SCM.create_patch() to use
- SCM.create_patch_from_local_commit() to fix a bug where local
- repository changes were posted as a patch instead of the
- specific COMMITISH. Fall back to -b|--bug-id if no URL is found
- in the commit log message. Don't specify a comment for the
- patch if --no-comment is used. Set cherry_pick argument to True
- for Git.commit_ids_from_range_arguments() since we don't want
- implicit commit range behavior for this command.
-
- * Scripts/modules/bugzilla.py: Import datetime module.
- (timestamp): Added. Returns a timestamp in the form of
- "YYYYMMDDhhmmss".
- (Bugzilla.bug_server_regex): Added static attribute.
- (Bugzilla.add_patch_to_bug): Construct a more meaningful patch
- file name using the bug_id and timestamp().
-
- * Scripts/modules/scm.py:
- (SCM.create_patch_from_local_commit): Added.
- (Git.create_patch_from_local_commit): Added. Runs "git diff" to
- return a patch for the given commit_id.
-
-2009-07-08 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark Rowe.
-
- Make prepare-ChangeLog less shouty
- https://bugs.webkit.org/show_bug.cgi?id=27098
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-08 David Kilzer <ddkilzer@apple.com>
-
- Bug 27083: bugzilla.py: Clean up bug_server use
-
- <https://bugs.webkit.org/show_bug.cgi?id=27083>
-
- Reviewed by Darin Adler.
-
- * Scripts/modules/bugzilla.py:
- (Bugzilla.fetch_bug_ids_from_commit_queue): Use bug_server
- instead of hard-coding the URL.
- (Bugzilla.authenticate): Remove extra '/' before URL path.
- (Bugzilla.add_patch_to_bug): Ditto.
-
-2009-07-08 Brent Fulgham <bfulgham@webkit.org>
-
- Build fix for Windows Cairo.
-
- Cairo build was incorrectly #including the PixelDumpSupportCG.h
- instead of PixelDumpSupportCairo.h
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp: Correct #include
-
-2009-07-08 David Faure <faure@kde.org>
-
- Reviewed by Ariya Hidayat.
-
- Small documentation improvement for build-webkit --help
-
- * Scripts/build-webkit: mention --debug option
-
-2009-07-07 Brady Eidson <beidson@apple.com>
-
- Tiger build fix, work around missing NSString API.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpHistoryItem):
-
-2009-07-07 Brady Eidson <beidson@apple.com>
-
- Reviewed by Mark Rowe.
-
- https://bugs.webkit.org/show_bug.cgi?id=27049 - In dumpBackForwardList() mode, DRT should normalize file urls.
-
- Make the dump of a history item agnostic to the layout of filesystem on the testing machine.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpHistoryItem):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dumpHistoryItem):
-
-2009-07-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Rubber-stamped by Simon Hausmann.
-
- Correct git url of the Qt test-fonts.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2009-07-07 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Clear the main frame's name between loading pages, like in r36652. This
- reduces the side-effects between test cases.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
-
-2009-07-06 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Holger Freyther.
-
- Fix various layout tests with Qt's DRT.
-
- Remember to set the focus on the web page before
- loading.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::DumpRenderTree::open):
-
-2009-07-07 Simon Hausmann <hausmann@webkit.org>
-
- Reviewed by Tor Arne Vestbø and Holger Freyther.
-
- Fix timeout timer handling in Qt DRT.
-
- Use QBasicTimer instead of startTimer/killTimer, to fix the
- problem that starting the timeout timer did not stop a
- previously started timer, causing multiple emissions of timeout.
- The timerEvent() implementation now also checks the timer id, to
- protect against double timeouts.
-
- * DumpRenderTree/qt/jsobjects.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::timerEvent):
- * DumpRenderTree/qt/jsobjects.h:
-
-2009-07-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- bugzilla-tool fails to close bugs with bugzilla 3.0
- https://bugs.webkit.org/show_bug.cgi?id=27008
-
- Update bugzilla.py to match changes in the bug page "changeform"
- Update scm.py to add bug_ids to attachments to make error reporting nicer.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-07-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric Seidel.
-
- bugzilla-tool forgot how to obsolete patches
- https://bugs.webkit.org/show_bug.cgi?id=26951
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-02 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build fix (Cairo this time) for DumpRenderTree.
- Put Cairo code back in, but use original include order
- for the CG stuff to avoid compile issues.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView):
-
-2009-07-02 Eric Seidel <eric@webkit.org>
-
- Correct blatant typo (missing []), no review.
-
- * Scripts/modules/scm.py:
-
-2009-07-02 Brent Fulgham <bfulgham@webkit.org>
-
- Windows build fix, no review.
-
-
- Reverting PixelDumpSupportWin.cpp change to avoid strange
- error on the build-bot.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView):
-
-2009-07-02 Brent Fulgham <bfulgham@webkit.org>
-
- Build fix, no review.
-
- * DumpRenderTree/config.h:
-
-2009-07-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- bugzilla-tool needs to handle login failure
- https://bugs.webkit.org/show_bug.cgi?id=26913
-
- We now exit(1) on login failure.
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-30 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add build support for a Windows Cairo version of
- DumpRenderTree. Share as much logic between the
- CG and Cairo builds as possible.
- https://bugs.webkit.org/show_bug.cgi?id=26457
-
- * DumpRenderTree/PixelDumpSupport.cpp: Added.
- (dumpWebViewAsPixelsAndCompareWithExpected): Moved common logic
- from CG-specific file.
- (printPNG): Moved common logic from CG-specific file.
- * DumpRenderTree/PixelDumpSupport.h: Add declaration for new
- common printPNG function.
- * DumpRenderTree/cairo: Added.
- * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp: Added.
- Implement cairo-specific logic for dealing with Cairo surfaces.
- (writeFunction):
- (printPNG): Cairo-specific PNG handling logic.
- (computeMD5HashStringForBitmapContext): New Cairo routine using
- the generic BitmapContext signature.
- (dumpBitmap): New function containing Cairo-specific portions of
- the dumping routine.
- * DumpRenderTree/cairo/PixelDumpSupportCairo.h: Added.
- Provide Cairo version of the BitmapContext structure so that
- dumping routines can work on an abstract type.
- (BitmapContext::createByAdoptingBitmapAndContext):
- (BitmapContext::~BitmapContext):
- (BitmapContext::cairoContext):
- (BitmapContext::BitmapContext):
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (printPNG): CG-specific PNG handling logic.
- (computeMD5HashStringForBitmapContext): Revised to use generic
- BitmapContext signature.
- (dumpBitmap): New function containing CG-specific portions of
- the dumping routine.
- * DumpRenderTree/cg/PixelDumpSupportCG.h: Add new signatures.
- * DumpRenderTree/win/DumpRenderTree.cpp: Disable CFNetwork logic
- when building the non-CFNetwork version.
- (main):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView): Provide parallel Cairo implementation
- of CG bitmap/context setup.
-
-2009-07-02 Eric Seidel <eric@webkit.org>
-
- No review, just adding Antti as a reviewer.
-
- * Scripts/modules/bugzilla.py:
-
-2009-07-02 Antonio Gomes <antonio.gomes@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- https://bugs.webkit.org/show_bug.cgi?id=26896
-
- [Qt] Set DRT's default fontsize to 13.
-
- * DumpRenderTree/qt/DumpRenderTree.cpp:
- (WebCore::WebPage::WebPage):
-
-2009-07-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- bugzilla-tool fails for SVN users
- https://bugs.webkit.org/show_bug.cgi?id=26914
-
- To fix this I moved svn from -F - to using -m
- In order for -m to work I had to move us off of shell=True
- To move off of shell=True all call sites for run_command
- which take args, need to pass their args as an list instead of a string.
-
- In order for the final bug update to work correctly, I had to
- abstract the way that we parse out revision numbers from the commit text.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-07-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- prepare-ChangeLog should have a --bug= argument and use it for url autofill
- https://bugs.webkit.org/show_bug.cgi?id=26383
-
- prepare-ChangeLog now knows how to grab the bug title from bugs.webkit.org
- I also added a bit more template text in an effort to get better ChangeLogs
- from casual contributers.
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- prepare-ChangeLog should fail when EMAIL_ADDRESS or REAL_NAME are missing:
- https://bugs.webkit.org/show_bug.cgi?id=26692
-
- I also made prepare-ChangeLog sanity-check names and email addresses a little.
- Names must contain a space, and email addresses must contain '@'
-
- Also "fixed" $email_address to $emailAddress. This script uses mixed variable name styles.
-
- * Scripts/prepare-ChangeLog:
-
-2009-07-01 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Bug 26900: AX: Manual spell check with Command-; does not bring up suggestions
- https://bugs.webkit.org/show_bug.cgi?id=26900
-
- Expose the ability to get the click point of an element through accessibility.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getClickPointXCallback):
- (getClickPointYCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
-
-2009-07-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Simon Fraser.
-
- Change how WebKitNightlyEnabler.dylib lies about Safari's identity to LaunchServices.
- This makes WebKit.app behave as expected when set as the default web browser on a wider
- range of OS versions.
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (poseAsWebKitApp):
- (enableWebKitNightlyBehaviour):
-
-2009-07-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Simon Fraser.
-
- Shuffle some code around in preparation for a change to how poseAsWebKitApp works.
-
- * WebKitLauncher/WebKitNightlyEnabler.m:
- (systemVersion):
- (webKitLauncherBundle):
- (insideSafari4OnTigerTrampoline):
-
-2009-06-30 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=26877
- [GTK] DRT fixes to pass new plugin test
-
- Silence compiler warnings.
-
- Newer GCC don't like using or returning a static string where a
- 'char*' is expected. Ideally we'd change the function signatures
- to return or take 'const char*' I suppose, but since we can't do
- that just cast the strings to 'char*'.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_get_value):
-
-2009-06-30 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=26877
- [GTK] DRT fixes to pass new plugin test
-
- Use the common pluginLog function instead of a local copy.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2009-06-30 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Jan Alonzo.
-
- https://bugs.webkit.org/show_bug.cgi?id=26877
- [GTK] DRT fixes to pass new plugin test
-
- Modify our DRT as done in bug #15457 to log logSrc as src in order
- to pass test plugins/netscape-plugin-map-data-to-src.html.
-
- * DumpRenderTree/gtk/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
-
-2009-06-30 Adrien Nader <camaradetux@gmail.com>
-
- Reviewed by Jan Alonzo.
-
- [GTK] GtkLauncher depends on gtk+2-2.15 because of gtk_orientable_set_orientation()
- https://bugs.webkit.org/show_bug.cgi?id=26835
-
- * GtkLauncher/main.c:
- (create_toolbar):
-
-2009-06-30 Eric Seidel <eric@webkit.org>
-
- Typo fix only, no review.
-
- Fix typo causing failure during land-diff
-
- * Scripts/bugzilla-tool:
-
-2009-06-30 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Fix drawing of view background in pixel snapshots when using compositing.
- We still need to call -displayIfNeeded to ensure that the NSView drawing
- has happened.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
-2009-06-30 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Mark Rowe.
-
- createBitmapContextFromWebView() incorrectly used #ifdef BUILDING_ON_LEOPARD,
- and thus failed on SnowLeopard.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
-2009-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Nikolas Zimmermann.
-
- Make bugzilla tool print a message explaining how to get help on failure:
- https://bugs.webkit.org/show_bug.cgi?id=26861
-
- % bugzilla-tool
- Usage: bugzilla-tool [options] command [command-options] [command-arguments]
-
- bugzilla-tool: error: No command specified
-
- Type 'bugzilla-tool --help' to see usage.
-
- * Scripts/bugzilla-tool:
-
-2009-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Include a built copy of BeautifulSoup 3.1.0.1 so that
- bugzilla-tool users do not need to install it manually.
- https://bugs.webkit.org/show_bug.cgi?id=26833
-
- BeautifulSoup is BSD-licensed (thus WebKit compatible) and available from:
- http://www.crummy.com/software/BeautifulSoup
-
- * Scripts/bugzilla-tool: fixed a typo in a log message.
- * Scripts/modules/BeautifulSoup.py: Added.
- * Scripts/modules/bugzilla.py:
-
-2009-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- Fix our create_patch handling to not
- hang when creating large patches.
- https://bugs.webkit.org/show_bug.cgi?id=26834
-
- We're now using StringIO to make an in-memory buffer for the patch
- instead of piping from the patch command directly to the upload.
- The previous hang was caused by calling wait() when the process had already
- filed the stdout buffer.
-
- * Scripts/modules/scm.py:
-
-2009-06-29 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Remove more unused scons support.
-
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2009-06-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Rename land-and-update to land-diff and make it awesome.
- https://bugs.webkit.org/show_bug.cgi?id=26734
-
- Renamed land-and-update to land-diff
- Made the BUGID argument optional.
- Added optional support for building and testing before landing.
-
- land-diff [options] [BUGID] Lands the current working directory diff and updates the bug if provided.
- Options:
- -r REVIEWER, --reviewer=REVIEWER
- Update ChangeLogs to say Reviewed by REVIEWER.
- --no-close Leave bug open after landing.
- --no-build Commit without building first, implies --no-test.
- --no-test Commit without running run-webkit-tests.
-
- * Scripts/bugzilla-tool:
-
-2009-06-28 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Gtk build fix - include stdarg.h for va_start/va_end.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
-
-2009-06-28 John Abd-El-Malek <jam@chromium.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=15457
-
- Modify NPAPI test plugin to verify that "src" paramater is added when
- it's missing but "data" is present.
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginLog):
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- (NPP_Destroy):
- (NPP_SetWindow):
- (handleEventCarbon):
- (handleEventCocoa):
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_New):
-
-2009-06-27 Emilio Pozuelo Monfort <pochu27@gmail.com>
-
- Reviewed by Jan Alonzo.
-
- [GTK] Don't use deprecated GTK+ symbols.
- https://bugs.webkit.org/show_bug.cgi?id=26583
-
- * GtkLauncher/main.c:
- (create_toolbar):
-
-2009-06-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make SVN work (again?).
-
- * Scripts/modules/scm.py:
-
-2009-06-26 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add ability to query isEnabled
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsEnabledCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isEnabled):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isEnabled):
-
-2009-06-26 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig
-
- <rdar://problem/6961578> REGRESSION (r43511): Opening .fdf files from Acrobat Professional fails
-
- Add a dumpResourceResponseMIMETypes() mode so the ResourceLoadDelegate will dump the mime type from
- the NSURLResponse. Needed for the test for this bug fix.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpResourceResponseMIMETypesCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpResourceResponseMIMETypes):
- (LayoutTestController::setDumpResourceResponseMIMETypes):
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:didReceiveResponse:fromDataSource:]):
-
-2009-06-26 David Kilzer <ddkilzer@apple.com>
-
- Update build-dumprendertree to use buildXCodeProject()
-
- Reviewed by Adam Roben.
-
- * Scripts/build-dumprendertree: Updated to use
- buildXCodeProject() when building for isAppleMacWebKit(). This
- provides additional command-line switch parsing for free. Also
- added --clean and --help switches. Updated copyright.
-
-2009-06-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Remove non-sense --update option to land-patches
- and make land-patches update before every patch application.
- This makes it slightly less likely that multi-patch landings will fail.
-
- Also updated git diff command to include staged modifications.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Jan Alonzo.
-
- Fix obsolete_attachment to work when passed a comment.
- https://bugs.webkit.org/show_bug.cgi?id=26745
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-25 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Mark Rowe.
-
- bugzilla-tool apply-patch throws exception in Linux
- https://bugs.webkit.org/show_bug.cgi?id=26738
-
- HEAD is case-sensitive in Linux. Convert uses of head to HEAD in
- the scm module.
-
- * Scripts/modules/scm.py:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Jan Alonzo.
-
- bugzilla-tool post-diff needs to obsolete old patches before posting
- https://bugs.webkit.org/show_bug.cgi?id=26740
-
- I've also added a --no-obsolete to disable this behavior.
-
- I also finally updated the bug page parsing to use XML. So much less code!
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Call WebKitTools/Scripts scripts by their absolute paths
- https://bugs.webkit.org/show_bug.cgi?id=26704
-
- bugzilla-tool used to use whatever build-webkit was in your path.
- That could end up building the wrong copy of WebKit.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Dave Levin.
-
- Use unicode() instead of str when reading from bugzilla.
- Also add Simon Fraser as a reviewer.
- https://bugs.webkit.org/show_bug.cgi?id=26719
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Use Q_ASSERT in Qt's DumpRenderTree instead of JSC's ASSERT
-
- The WTFReportAssertionFailure function in JSC is not exported when
- building QtWebKit in both debug and release on Mac, so DRT fails to
- link.
-
- We can revert this patch once the Qt port builds JSC as a separate
- library, and we add the proper export macros to Assertions.cpp
-
- * DumpRenderTree/qt/WorkQueue.cpp:
- (WorkQueue::queue):
- (WorkQueue::dequeue):
-
-2009-06-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Jan Alonzo.
-
- bugzilla-tool: Add Simon Hausmann as reviewer
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dave Levin.
-
- Support local commits during apply-patches
- and let land-patches take multiple bug ids.
- https://bugs.webkit.org/show_bug.cgi?id=26703
-
- I also restructured parts of land-patches into
- class methods and static methods in preparation
- for future code sharing with other commands.
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Make svn-apply work with Git too
- https://bugs.webkit.org/show_bug.cgi?id=26299
-
- Add an --force option to svn-apply and otherwise make svn-apply
- exit non-zero when patch application fails.
- https://bugs.webkit.org/show_bug.cgi?id=26300
-
- I did not update svn-unapply, because it makes no sense in a Git world.
- You don't roll in and out patch files. You make commits and deal with those.
- Git users can just git reset --hard to get the same functionality.
-
- * Scripts/svn-apply:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Remove use of os.system to fix reviewers with unicode chars in their names
- https://bugs.webkit.org/show_bug.cgi?id=26713
-
- Also change to latin1 encoding of ø to make python happy.
-
- * Scripts/modules/bugzilla.py:
- * Scripts/modules/scm.py:
-
-2009-06-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Add Adam Roben and Tor Arne Vestbø to the reviewers list.
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-24 Chris Fleizach <cfleizach@apple.com>
-
- Windows build fix.
-
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::language):
-
-2009-06-24 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Bug 26668: AX: need a way to retrieve the language for an element
- Support ability to retrieve AXLanguage for testing
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getLanguageCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::language):
-
-2009-06-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Spell Maciej's name right and add Brady Eidson.
-
- * Scripts/modules/bugzilla.py:
-
-2009-06-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dave Levin.
-
- Fix missing comment message during land-patches and SVN.commit_with_message respecting --dry-run
- https://bugs.webkit.org/show_bug.cgi?id=26669
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-06-23 Takeshi Yoshino <tyoshino@google.com>
-
- Reviewed by Mark Rowe.
-
- Bug 26537: Builds from command-line fail if custom build product directory is set and ~/Library/Preferences/xcodebuild.plist exists
- https://bugs.webkit.org/show_bug.cgi?id=26537
-
- Let determineBaseProductDir subroutine remove
- ~/Library/Preferences/xcodebuild.plist. It can prevent xcodebuild from
- respecting global settings such as a custom build products directory
- (<rdar://problem/5585899>).
-
- * Scripts/webkitdirs.pm:
-
-2009-06-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dave Levin.
-
- Make SCM.run_command smarter, and make all previous
- os.system and subprocess.popen use SCM.run_command instead.
- https://bugs.webkit.org/show_bug.cgi?id=26666
-
- This makes it easier to handle errors in a standard way throughout all the code.
- Since this new code raises by default when the exit_code != 0,
- we should prevent future problems of bugzilla-tool continuing after
- a git or svn command failed.
-
- * Scripts/modules/scm.py:
-
-2009-06-23 Joe Mason <joe.mason@torchmobile.com>
-
- Reviewed by Adam Treat.
-
- https://bugs.webkit.org/show_bug.cgi?id=26664
- * Scripts/prepare-ChangeLog: Added --git-index mode to list only the
- changes which are already staged in the index. Useful to create an
- entry for what you're about to commit while ignoring unstaged changes.
-
-2009-06-23 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler.
-
- Update for WebKit changes.
-
- * DumpRenderTree/win/UIDelegate.h:
- (UIDelegate::willPerformDragSourceAction):
-
-2009-06-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- * Scripts/modules/scm.py: Fix commit_with_message to return the commit output.
-
-2009-06-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mark Rowe.
-
- * Scripts/modules/scm.py: Fix error seen when commiting r44979.
-
-2009-06-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dave Levin.
-
- WebKit needs a script to interact with bugzilla and automate
- parts of the patch posting and commit processes.
- https://bugs.webkit.org/show_bug.cgi?id=26283
-
- This is really a first-draft tool.
- It's to the point where it's useful to more people than just me now though.
- Git support works. SVN support is written, but mostly untested.
-
- This tool requires BeautifulSoup and mechanize python modules to run:
- sudo easy_install BeautifulSoup
- sudo easy_install mechanize
-
- More important than the tool itself are the Bugzilla, Git and SVN class abstractions
- which I hope will allow easy writing of future tools.
-
- The tool currently implements 10 commands, described below.
-
- Helpers for scripting dealing with the commit queue:
- bugs-to-commit Bugs in the commit queue
- patches-to-commit Patches attached to bugs in the commit queue
-
- Dealing with bugzilla:
- reviewed-patches BUGID r+'d patches on a bug
- apply-patches BUGID Applies all patches on a bug to the local working directory without committing.
- land-and-update BUGID Lands the current working directory diff and updates the bug.
- land-patches [options] BUGID Lands all patches on a bug optionally testing them first
- obsolete-attachments BUGID Marks all attachments on a bug as obsolete.
- commit-message Prints a commit message suitable for the uncommitted changes.
-
- These effectively replace git-send-bugzilla:
- post-diff BUGID Attaches the current working directory diff to a bug as a patch file.
- post-commits BUGID COMMITISH Attaches a range of local commits to a bug as patch files.
-
- post-diff works for SVN and Git, post-commits only works for SCMs with local-commit support (like Git)
-
- land-* commands in a Git environment only work with simple patches due to svn-apply bugs:
- https://bugs.webkit.org/show_bug.cgi?id=26299
- https://bugs.webkit.org/show_bug.cgi?id=26300
-
- This script follows python style (similar to how for Obj-C we follow AppKit style)
- http://www.python.org/doc/essays/styleguide.html
- The Python community has a strong style culture and the WebKit style guide is silent re: Python.
-
- I've filed a bug to update the WebKit style guide to mention python:
- https://bugs.webkit.org/show_bug.cgi?id=26524
-
- * Scripts/bugzilla-tool: Added.
-
-2009-06-22 Steve Falkenburg <sfalken@apple.com>
-
- Remove errant line of code mistakenly checked in.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-06-22 Steve Falkenburg <sfalken@apple.com>
-
- Pass correct value to setShouldPaintNativeControls.
-
- Rubber stamped by Mark Rowe.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-06-22 Steve Falkenburg <sfalken@apple.com>
-
- Fix last DumpRenderTree change to correctly set preferences flag without crashing.
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-06-21 Steve Falkenburg <sfalken@apple.com>
-
- Set up global native controls flag before creating the first WebView.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
-
-2009-06-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Set a sensible user agent string for the HTTP requests that Sparkle makes (checking for and downloading updates).
-
- * WebKitLauncher/WebKitNightlyEnablerSparkle.m:
- (userAgentStringForSparkle):
- (initializeSparkle):
-
-2009-06-21 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add a hook to the WebKit launcher application to allow a link on the nightly build start page to
- trigger an update via the built-in software update mechanism.
-
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitLauncherURLProtocol.h: Added.
- * WebKitLauncher/WebKitLauncherURLProtocol.m: Added.
- (+[WebKitLauncherURLProtocol load]):
- (+[WebKitLauncherURLProtocol canInitWithRequest:]): Only allow use of the x-webkit-launcher scheme from .webkit.org subdomains.
- (+[WebKitLauncherURLProtocol canonicalRequestForRequest:]):
- (-[WebKitLauncherURLProtocol startLoading]):
- (-[WebKitLauncherURLProtocol stopLoading]):
- (-[WebKitLauncherURLProtocol handleIsWebKitLauncherAvailableJS]): Return a brief JavaScript snippet that can be used to programatically
- determine whether the x-webkit-launcher is available and working.
- (-[WebKitLauncherURLProtocol handleCheckForUpdates]): Trigger a software update on the main thread.
- (-[WebKitLauncherURLProtocol resourceNotFound]): Fail with a generic "File does not exist" error.
-
-2009-06-20 Jan Michael Alonzo <jmalonzo@webkit.org>
-
- Reviewed by Gustavo Noronha and Xan Lopez.
-
- [Gtk] Implement DRT XSS auditor support
- https://bugs.webkit.org/show_bug.cgi?id=26571
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
-
-2009-06-19 Darin Adler <darin@apple.com>
-
- * Scripts/do-webcore-rename: More renaming ideas.
-
-2009-06-15 Andre Pedralho <andre.pedralho@openbossa.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Only pass --makeargs along if an argument is given.
-
- * Scripts/build-webkit:
-
-2009-06-19 Adam Barth <abarth@webkit.org>
-
- Unreviewed attempt to fix Windows build.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
-
-2009-06-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=26199
-
- Add support for testing the XSSAuditor.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setXSSAuditorEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setXSSAuditorEnabled):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
-
-2009-06-18 Darin Adler <darin@apple.com>
-
- Rubber stamped by Mark Rowe.
-
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow close]): Resolved crashes seen during regression
- tests. The close method can be called on a window that's already closed
- so we can't assert here.
-
-2009-06-17 Steve Falkenburg <sfalken@apple.com>
-
- Updated for consolidated WebKit COM interfaces.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.h:
- * DumpRenderTree/win/UIDelegate.cpp:
- * DumpRenderTree/win/UIDelegate.h:
- * WinLauncher/WinLauncher.h:
-
-2009-06-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=26437
-
- Make the commit-log-editor match the ambient line endings in commit
- messages.
-
- * Scripts/commit-log-editor:
-
-2009-06-16 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Update GtkLauncher to recent API changes in the progress property,
- which now goes from 0.0 to 1.0.
-
- * GtkLauncher/main.c:
-
-2009-06-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=26000
-
- Teach prepare-ChangeLog to match the line ends that are already present
- in ChangeLog files. This helps folks whose use cygwin perl with CR LF
- line endings on Windows.
-
- Also, teach prepare-ChangeLog to normalize backslashes in paths. This
- helps folks who use Windows SVN prepare correct ChangeLogs.
-
- * Scripts/prepare-ChangeLog:
-
-== Rolled over to ChangeLog-2009-06-16 ==
diff --git a/Tools/ChangeLog-2011-02-16 b/Tools/ChangeLog-2011-02-16
deleted file mode 100644
index c736f7697..000000000
--- a/Tools/ChangeLog-2011-02-16
+++ /dev/null
@@ -1,32779 +0,0 @@
-2011-02-16 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Assertion failure in DrawingAreaImpl::display when calling WKPageForceRepaint on a page that uses accelerated compositing
- https://bugs.webkit.org/show_bug.cgi?id=54575
- <rdar://problem/8979594>
-
- Add test.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp: Added.
- (TestWebKitAPI::didForceRepaint):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/simple-accelerated-compositing.html: Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
-
-2011-02-16 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Add support for layoutTestController.setWillSendRequestClearHeader
- https://bugs.webkit.org/show_bug.cgi?id=54537
-
- Added handler for resource-request-starting emitted in
- FrameLoader's willSendRequest(). The current implementation
- removes the headers set in setWillSendRequestClearHeader.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback):
- (createWebView):
-
-2011-02-16 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Qt build system can't handle removing headers from tree
- https://bugs.webkit.org/show_bug.cgi?id=54466
-
- * Scripts/build-webkit: Remove Qt makefiles from productDir before build.
-
-2011-02-16 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: chromium: DRT is crashing on the tests in inspector-enabled folder.
- https://bugs.webkit.org/show_bug.cgi?id=54548
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2011-02-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r77898.
- http://trac.webkit.org/changeset/77898
- https://bugs.webkit.org/show_bug.cgi?id=54541
-
- Leopard Debug hasn't compiled for a long time (Requested by
- abarth on #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-15 Xianzhu Wang <wangxianzhu@google.com>
-
- Reviewed by Kent Tamura.
-
- Fixed a small bug about --no-timeout option.
- https://bugs.webkit.org/show_bug.cgi?id=52873
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
-
-2011-02-15 Kenneth Russell <kbr@google.com>
-
- Reviewed by Darin Fisher.
-
- Allow controlling minimum DOMTimer interval on a per-page basis
- https://bugs.webkit.org/show_bug.cgi?id=54312
-
- Implemented new method setMinimumTimerInterval in
- LayoutTestController for all ports.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMinimumTimerIntervalCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setMinimumTimerInterval):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMinimumTimerInterval):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMinimumTimerInterval):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMinimumTimerInterval):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMinimumTimerInterval):
-
-2011-02-15 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Freetype] Better map CSS font weight to Fontconfig font weight
- https://bugs.webkit.org/show_bug.cgi?id=54323
-
- Add the WeightWatcher fonts to the list of sourced fonts when intializing
- DRT. This will allow us to pass tests that use WeightWatcher.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Source the WebkitWeightWatcher fonts.
-
-2011-02-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Make new-run-webkit-tests --processes work under Windows' weird
- multiprocessing model. This requires us to be running a Python
- file that can be imported as a module, so I've modified the
- new-run-webkit-tests script to spawn a subprocess runing
- webkitpy.layout_tests.run_webkit_tests.py. I've also modified
- the manager_worker_broker tests because you can't pickle a
- nested class. This requires us to use globals to pass queues
- back and forth for testing, but the alternative is to pass extra
- arguments to start_worker() and that feels like a bad tradeoff
- just for testing.
-
- https://bugs.webkit.org/show_bug.cgi?id=54431
-
- * Scripts/new-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
-
-2011-02-15 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/9002047> and https://bugs.webkit.org/show_bug.cgi?id=54426
- WebFrameLoaderClient::shouldGoToHistoryItem needs implementation
-
- Add dummy implementations to keep our tools building.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2011-02-15 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style should do some detection for valid uses of WEBKIT_API (in chromium public api).
- https://bugs.webkit.org/show_bug.cgi?id=52271
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added the check for WEBKIT_API usage.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests.
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix minor regression introduced in r78522. For some reason, Python
- provides a platform.mac_ver() routine on Linux, so we need to
- check to make sure it's returning something in addition to
- checking for its existence.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Clean up the way we handle platform names in
- new-run-webkit-tests. Previously, if you specified
- '--platform mac' or '--platform chromium-mac' on the command
- line, it would use that platform name to determine baseline search
- paths, etc. This is almost never the right thing to do, because
- it ignores the existence of version-specific baselines.
-
- So, I changed this so that ports that support versions must
- always use a version, and the version should default to the
- version of the operating system that the port is being run on
- (e.g., if you're running on Leopard, then passing '--platform
- mac' will default to the 'mac-leopard' port). This means that
- port.name() should always include a version-specific suffix if
- the port supports versions.
-
- However, we still support things like '--platform mac' as input
- so that the user doesn't have to explicitly specify a version,
- both for convenience and so we don't have to make buildbot
- configs more complicated than they already are.
-
- Also, I cleaned up how the baselines were being searched
- on the chromium-mac port (this is one of the two bugs that
- prompted this refactoring), and made the logic easier to follow
- and more consistent across the mac and chromium ports
-
- Lastly, I added a port.get_all_names() method that could be used
- to get the names of all of the ports to search, rather than having
- to guess (incorrectly) from the list of directories under
- LayoutTests/platform (this last thing was necessary because the
- deduplicate_tests unittest broke as the fallback dirs changed).
-
- https://bugs.webkit.org/show_bug.cgi?id=54248
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- update-webkit hangs in a git-only checkout
-
- Previously it would hang forever trying to do a 'git svn
- rebase'. Now, it will default to a 'git pull' if the
- svn-remote.svn.fetch variable isn't set, and bail out if it
- doesn't know where to pull from.
-
- https://bugs.webkit.org/show_bug.cgi?id=54265
-
- * Scripts/update-webkit:
- * Scripts/VCSUtils.pm:
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- This patch modifies NRWT's Worker clas to use the new
- WorkerMixin class to actually run tests. With this patch, the
- multiprocess version of NRWT is fully functional and just needs
- the values for --worker-model and --child-processes to be corrected
- in the port/* classes to start using the new code by default.
-
- https://bugs.webkit.org/show_bug.cgi?id=54082
-
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- This patch shuffles code out of dump_render_tree_thread and
- single_test_runner and into a new worker_mixin class that will
- be shared by both TestShellThread and Worker. This change
- restores single_test_runner to its state as of r77606 - it is
- stateless again. It also prunes TestShellThread to pretty much
- just the logic used for the original shared-memory access.
-
- https://bugs.webkit.org/show_bug.cgi?id=54079
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py: Added.
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- This patch updates NRWT to add per-worker and per-shard test stats
- into TestRunner2, bringing it to parity with TestRunner.
-
- https://bugs.webkit.org/show_bug.cgi?id=54074
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt multiprocessing: add code to handle interrupts and wedged
- threads.
- https://bugs.webkit.org/show_bug.cgi?id=54072
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- Adds the cancel(), is_alive(), join(), and log_wedged_worker()
- methods to the WorkerConnection class
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- Adds the cancel() method to the Worker class
-
-2011-02-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- update the NRWT multiprocessing code to spawn multiple workers
- instead of just using one.
-
- https://bugs.webkit.org/show_bug.cgi?id=54071
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
-
-2011-02-12 Chang Shu <cshu@webkit.org>
-
- Unreviewed.
-
- Update my own email addresses and IRC nickname.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-02-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This patch adds to NRWT most of the support needed to run the new
- message-based workers in separate threads or processes. The code
- isn't fully complete yet because we don't support cancel() or
- is_alive().
-
- https://bugs.webkit.org/show_bug.cgi?id=54070
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-11 Sailesh Agrawal <sail@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- plugins/invalidate_rect.html fails on chromium-mac
- https://bugs.webkit.org/show_bug.cgi?id=54051
-
- This change fixes the invalidate_rect.html test failure on Windows.
-
- There were two problems. First, the test specified that the plugin was window less by doing <embed ... windowedPlugin="false"></embed>. The windowedPlugin parameter was never being read by the plugin. Fix was to simply set the NPPVpluginWindowBool variable based on the parameter.
-
- The second problem was that the plugin never handled paint events on Windows. Fix was to simply copy the Mac code to handle paint events.
-
- This change also updates the build path in chromium_win.py to use the new Source directory.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (invalidateRect):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (handleEventWin):
- (NPP_HandleEvent):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-02-11 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Increase the timeout of Qt API tests to 120 seconds.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-02-10 Zhenyao Mo <zmo@google.com>
-
- Unreviewed, build fix.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This patch adds the bulk of the remaining functionality for
- the NRWT message-passing implementation. The patch adds a new
- Worker class that will eventually replace the TestShellThread
- class in dump_render_tree_thread.py, and implements enough of
- TestRunner2 and the inline version of the manager_worker_broker
- to actually be able to send a full set of messages back and
- forth. The Worker stubs do not actually run tests, and there's
- lots of error handling and stats needed, but this is the core
- logic.
-
- https://bugs.webkit.org/show_bug.cgi?id=54068
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py: Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-10 Zhenyao Mo <zmo@google.com>
-
- Unreviewed, build fix.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Zhenyao Mo <zmo@google.com>
-
- Unreviewed, build fix.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Zhenyao Mo <zmo@google.com>
-
- Unreviewed, attempt to fix crashing plugin tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Zhenyao Mo <zmo@google.com>
-
- Unreviewed, build fix.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Sam Weinig <sam@webkit.org>
-
- Try and fix some crashing tests on the chromium build bot.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2011-02-10 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Log an error if a plug-in test can't be found
- https://bugs.webkit.org/show_bug.cgi?id=54252
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::create):
- Return null if the test wasn't found.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- Report an error if PluginTest::create returns null.
-
-2011-02-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Return menu items from eventSender.contextMenu()
- https://bugs.webkit.org/show_bug.cgi?id=53039
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::contextClick):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2011-02-10 Adam Roben <aroben@apple.com>
-
- Test showing and hiding the find indicator on Windows
-
- Test for <http://webkit.org/b/54213> <rdar://problem/8983261> REGRESSION (r78198): Crash in
- FindIndicator::contentImage when scrolling page
-
- Reviewed by Steve Falkenburg.
-
- * TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame): Record that the load finished.
- (TestWebKitAPI::findIndicatorCallback): Record that the callback was called, and save the
- bitmap.
- (TestWebKitAPI::initialize): Hook up our callbacks.
- (TestWebKitAPI::TEST): Test showing then hiding the find indicator to see if we crash.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::page):
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::page):
- Made page a const member function.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added the new test.
-
-2011-02-10 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Log signals from AtkDocument interface also in AccessibilityController
- https://bugs.webkit.org/show_bug.cgi?id=54198
-
- Trace AtkDocument's signals emission through AccessibilityController.
-
- Also, taken the code related to adding and removing global
- listeners for ATK signals out to a separate file, for the sake of
- clarity and to ease future additions.
-
- * DumpRenderTree/gtk/AccessibilityCallbacks.h: Added.
- * DumpRenderTree/gtk/AccessibilityCallbacks.cpp: Added
- (printAccessibilityEvent): Print information about an event.
- (axObjectEventListener): Global listener for AtkObject's signals.
- (axDocumentEventListener): Global listener for AtkDocument's signals.
- (connectAccessibilityCallbacks): Connect all global listeners.
- (disconnectAccessibilityCallbacks): Disconnect all global listeners.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::setLogAccessibilityEvents): Call to
- connectAccessibilityCallbacks and disconnectAccessibilityCallbacks.
-
- * GNUmakefile.am: Added new files.
-
-2011-02-09 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Default error page is interfering with tests which require failed loads
- https://bugs.webkit.org/show_bug.cgi?id=54157
-
- Disable the default error page during DRT runs. This prevents unexpected loads
- from interfering with tests that have planned failed loads.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadError): Added, disable default handler.
- (createWebView): Connect the new load-error handler.
-
-2011-02-10 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add UrlLoader and command line argument handling to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=54192
-
- Copy and modify files from QtTestBrowser's implementation.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::newWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp: Copied from QtTestBrowser/launcherwindow.cpp
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h: Copied from QtTestBrowser/launcherwindow.h
- (WindowOptions::WindowOptions):
- (MiniBrowserApplication::urls):
- (MiniBrowserApplication::isRobotized):
- (MiniBrowserApplication::robotTimeout):
- (MiniBrowserApplication::robotExtraTime):
- * MiniBrowser/qt/UrlLoader.cpp: Copied from QtTestBrowser/urlloader.cpp
- (UrlLoader::UrlLoader):
- (UrlLoader::loadNext):
- (UrlLoader::checkIfFinished):
- (UrlLoader::frameLoadStarted):
- (UrlLoader::frameLoadFinished):
- (UrlLoader::loadUrlList):
- (UrlLoader::getUrl):
- * MiniBrowser/qt/UrlLoader.h: Copied from QtTestBrowser/urlloader.h
- * MiniBrowser/qt/main.cpp:
- (main):
- * MiniBrowser/qt/utils.cpp: Copied from QtTestBrowser/utils.cpp
- (takeOptionValue):
- (formatKeys):
- (enumToKeys):
- (appQuit):
- (urlFromUserInput):
- * MiniBrowser/qt/utils.h: Copied from QtTestBrowser/utils.h
-
-2011-02-10 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- check-webkit-style: Add -build/include exemption for Tools/MiniBrowser/qt
- https://bugs.webkit.org/show_bug.cgi?id=54200
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-02-10 Peter Varga <pvarga@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Remove PCRE source from trunk
- https://bugs.webkit.org/show_bug.cgi?id=54188
-
- * wx/build/settings.py:
-
-2011-02-10 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style should be able to figure out function modifiers and return type.
- https://bugs.webkit.org/show_bug.cgi?id=54124
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_rfind_in_lines): A way to search backwards in lines.
- (_FunctionState.modifiers_and_return_type):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests for the new functionality.
-
-2011-02-09 Adam Roben <aroben@apple.com>
-
- Test that WM_PRINT doesn't trigger an assertion
-
- Test for <http://webkit.org/b/54145> <rdar://problem/8979559> WM_PRINT doesn't work with new
- drawing area (assertion failure in DrawingAreaProxyImpl in Debug builds)
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp: Added.
- (TestWebKitAPI::TEST): Send a WM_PRINT message to a WKView.
-
-2011-02-09 Adam Roben <aroben@apple.com>
-
- Test that having a WKView paint after being resized while hidden doesn't cause a crash
-
- Test for <http://webkit.org/b/54142> <rdar://problem/8979365> Crash in
- DrawingAreaProxyImpl::paint when WKView paints after being resized while hidden
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp:
- (TestWebKitAPI::TEST): Force the WKView to paint after resizing it while hidden.
-
-2011-02-09 Adam Roben <aroben@apple.com>
-
- Add a test that resizes a WKView while it's hidden
-
- Test for <http://webkit.org/b/54141> <rdar://problem/8979195> WKView draws at wrong size,
- performs badly if is resized while hidden (assertion fails in
- BackingStore::incorporateUpdate in Debug builds)
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame): Record that the load finished.
- (TestWebKitAPI::setPageLoaderClient): Hook up our didFinishLoadForFrame callback.
- (TestWebKitAPI::flushMessages): Load a URL and wait for the load to complete. This ensures
- that all pending messages have been handled by the UI and web process.
- (TestWebKitAPI::timerCallback): Kill the timer and record that it fired.
- (TestWebKitAPI::runForDuration): Set a timer and run the run loop until it fires.
- (TestWebKitAPI::waitForBackingStoreUpdate): Wait for half a second to give the web process a
- chance to display, then flush all pending messages.
- (TestWebKitAPI::TEST): Resize the WKView while it's hidden, then show it again and wait for
- the backing store to update. This triggers the assertion from bug 54141.
-
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::resizeTo): Implemented.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added new test.
-
-2011-02-10 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK build fix after roll out of r78157...
-
- * GNUmakefile.am:
-
-2011-02-10 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r78157.
- http://trac.webkit.org/changeset/78157
- https://bugs.webkit.org/show_bug.cgi?id=54150
-
- Fails on a bunch of bots
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSDestroyingPluginFromDestroyStream.cpp: Removed.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2011-02-10 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Reset GTK' DRT's AccessibilityController to consistent value before every test
- https://bugs.webkit.org/show_bug.cgi?id=54185
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2011-02-10 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed GTK build fix.
-
- Adding
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSDestroyingPluginFromDestroyStream.cpp
- in the build, fixing the
- plugins/npruntime/evaluate-js-destroying-plugin-from-destroy-stream.html
- test.
-
- * GNUmakefile.am:
-
-2011-02-10 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Chris Fleizach.
-
- [GTK] Add support in DRT to log "accessibility events"
- https://bugs.webkit.org/show_bug.cgi?id=54116
-
- Added a way to log accessibility related events, in a
- platform-dependant way.
-
- Add new function to AccessibilityController.
-
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/AccessibilityController.cpp:
- (logAccessibilityEventsCallback): New callback.
- (AccessibilityController::getJSClass): Added new function.
- (AccessibilityController::resetToConsistentState): Initialized
- calling setLogAccessibilityEvents(false).
-
- Provided implementation for the GTK port.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (accessibility_event_listener): Common listener for logging
- information about all the signals emitted by any AtkObject.
- (AccessibilityController::setLogAccessibilityEvents): Add or
- remove listeners for signals, as specified by the parameter.
-
- Provide dummy implementations for mac and win ports.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::setLogAccessibilityEvents):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::setLogAccessibilityEvents):
-
-2011-02-09 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- [NRWT] Remove encoding parameters where we can assume data can be
- written in binary mode.
-
- https://bugs.webkit.org/show_bug.cgi?id=54066
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-02-09 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt multiprocessing: minor cleanup prior to implementing the new worker
-
- This patch renames AbstractManager to ManagerConnection and
- changes some argument names to be more consistent between
- manager_worker_broker and message_broker. It also fixes a couple
- of typos in message_broker. These changes will be tested by code
- introduced in the next patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=54067
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker2.py:
-
-2011-02-09 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Repro crash with Sony Google TV ad at Gizmodo
- https://bugs.webkit.org/show_bug.cgi?id=54150
- <rdar://problem/8782346>
-
- Add a new plug-in test that runs JavaScript that destroys the plug-in from within its NPN_DestroyStream callback.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSDestroyingPluginFromDestroyStream.cpp: Added.
- (EvaluateJSDestroyingPluginFromDestroyStream::EvaluateJSDestroyingPluginFromDestroyStream):
- (EvaluateJSDestroyingPluginFromDestroyStream::NPP_Destroy):
- (EvaluateJSDestroyingPluginFromDestroyStream::NPP_DestroyStream):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2011-02-09 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: The error message about NULL should be more clear for comments.
- https://bugs.webkit.org/show_bug.cgi?id=53786
-
- * Scripts/webkitpy/style/checkers/cpp.py: Clarified the error message.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Fixed the corresponding test.
-
-2011-02-09 Nebojsa Ciric <cira@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Implements Locale object of JavaScript internationalization API proposal, as an
- v8 extension. Extension code is hosted in v8 project (src/extensions/experimental/i18n-extension.{cc,h})
- and in this patch we just provide flags, tests and build rules for chromium port.
- https://bugs.webkit.org/show_bug.cgi?id=49414
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-02-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Remove UiTools dependency from MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=54096
-
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2011-02-08 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- [NRWT] Pull up rebaseline code from compare_output() function defined
- in text_diff.py and image_diff.py into a SingleTestRunner.
-
- This patch is a first step for eliminating test_type/* classes.
-
- https://bugs.webkit.org/show_bug.cgi?id=53071
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-02-07 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- stop generating results.json files
- https://bugs.webkit.org/show_bug.cgi?id=53977
-
- We've only used incremental_results.json for a while now
- and there are plans to start generating a results.json file that matches
- the format of unexpected_results.json.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-02-08 Sailesh Agrawal <sail@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Invalidate rect doesn't work for windowless plugins on Chromium
- https://bugs.webkit.org/show_bug.cgi?id=53117
-
- Added two new utility methods.
- - layoutTestController.displayInvalidatedRegion() does a paint of any area that has been invalidated. This is different from layoutTestController.display() which explicitly invalidates the entire page then paints.
- - plugin.invalidateRect(left, top, right, bottom) - invalidates the given rect
- This is used to test that invalidating a rect correctly causes a repaint of the plugin.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (displayInvalidatedRegionCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (invalidateRect):
- (pluginInvoke):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::displayInvalidatedRegion):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: move the logic that starts and stops the
- servers from dump_render_tree_thread into single_test_runner
- so that we can reuse it in the new multiprocessing worker class
- as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=53840
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: split out thread stack logging code into a sharable module
-
- This patch splits out the code used to find and log thread
- stacks from NRWT-specific packages to something generic and
- shareable by other python modules. It will be shared in the near
- future by the manager_worker_broker module, for example.
-
- https://bugs.webkit.org/show_bug.cgi?id=53656
-
- * Scripts/webkitpy/common/system/stack_utils.py: Added.
- * Scripts/webkitpy/common/system/stack_utils_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: move a bunch of testing logic out of
- dump_render_tree_thread and into single_test_runner so that we
- will be able to reuse it in the new multiprocessing worker class as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=53838
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
-
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: remove no longer needed WatchableThread
- class.
-
- https://bugs.webkit.org/show_bug.cgi?id=53839
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add stubs for the Manager objects that
- will abstract the concurrency implementation (inline / threads /
- processes). These classes do nothing yet and are not wired up to
- anything.
-
- https://bugs.webkit.org/show_bug.cgi?id=53477
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py: Added.
-
-2011-02-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add simplified message broker for new-style
- messaging. This change adds a very simple message broker that
- will be used to shuttle messages between the TestRunner2 manager
- thread and the Worker threads. For now the class is not used by
- anything, but the eventual usage can be seen in the patches
- attached to bug 49566.
-
- https://bugs.webkit.org/show_bug.cgi?id=53158
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker2.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker2_unittest.py: Added.
-
-2011-02-08 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- chromium-win builder shouldn't run python or perl tests
- https://bugs.webkit.org/show_bug.cgi?id=54032
-
- These tests don't pass on this builder because the builder isn't
- running in cygwin. There isn't really any point in running them and
- making the bot red forever.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-02-08 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- <rdar://problem/8972913> and https://bugs.webkit.org/show_bug.cgi?id=54036
- didChangeBackForwardList should include some context about what changed
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didChangeBackForwardList):
-
-2011-02-08 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WK2: Add ability to pass context to policy delegate methods
- https://bugs.webkit.org/show_bug.cgi?id=54031
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (decidePolicyForNavigationAction):
- (decidePolicyForNewWindowAction):
- (decidePolicyForMIMEType):
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::decidePolicyForNavigationAction):
- (TestWebKitAPI::decidePolicyForNewWindowAction):
- (TestWebKitAPI::decidePolicyForMIMEType):
- Update policy client for new API.
-
-2011-02-08 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] DRT needs an implementation of LayoutTestController.setIconDatabaseEnabled
- https://bugs.webkit.org/show_bug.cgi?id=54033
-
- Add an implementation of LayoutTestController.setIconDatabaseEnabled that just
- call DumpRenderTreeSupportGtk. Turn off the icon database between tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Turn off the icon database.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setIconDatabaseEnabled): Call the appropriate DumpRenderTreeSupportGtk
- method.
-
-2011-02-08 Kundu Suchismita <suchi.kundu@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- Local Storage settings can be enable/disable from "Develop" menu
- https://bugs.webkit.org/show_bug.cgi?id=52296
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleLocalStorage):
- (LauncherWindow::toggleOfflineStorageDatabase):
- (LauncherWindow::toggleOfflineWebApplicationCache):
- (LauncherWindow::setOfflineStorageDefaultQuota):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-02-08 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] EventSender.keyDown does not support non-array modifier arguments
- https://bugs.webkit.org/show_bug.cgi?id=53962
-
- Support handling either an array or a string for the modifier argument
- to EventSender.keyDown.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gdkModifierFromJSValue): Added this helper which factors out the
- string comparison bits.
- (gdkModifersFromJSValue): Test up front whether the value is a string,
- to handle it specially.
-
-2011-02-08 Benjamin Poulain <ikipou@gmail.com>
-
- Reviewed by Csaba Osztrogonác.
-
- openDatabaseSync() stop responding after too many call
- https://bugs.webkit.org/show_bug.cgi?id=53945
-
- Reset the database quota to a known state between each test.
-
- Define a quota for the known origins at each test run and delete
- all the databases.
- This way, the database related test do not depend on previous
- allocations.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::dumpDatabaseQuota):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
-
-2011-02-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] DRT's TextInputController is unimplemented on GTK
- https://bugs.webkit.org/show_bug.cgi?id=52997
-
- Initial implementation of TextInputController for GTK port.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared):
- * DumpRenderTree/gtk/TextInputController.cpp: Added.
- (setMarkedTextCallback):
- (insertTextCallback):
- (unmarkTextCallback):
- (firstRectForCharacterRangeCallback):
- (selectedRangeCallback):
- (getClass):
- (makeTextInputController):
- * DumpRenderTree/gtk/TextInputController.h: Added.
- * GNUmakefile.am:
-
-2011-02-07 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- clean up python imports
- https://bugs.webkit.org/show_bug.cgi?id=53966
-
- Convert "import A.B.C.D as D" to "from A.B.C import D" and
- make some imports absolute as required by PEP-8
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- * Scripts/webkitpy/common/system/logutils.py:
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/mac.py: Remove some unused imports
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/prettydiff.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/roll.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/main.py:
-
-2011-02-07 James Robinson <jamesr@chromium.org>
-
- Reviewed by Adam Barth.
-
- Teach do-webcore-rename about the WebKit move to Source/
- https://bugs.webkit.org/show_bug.cgi?id=53967
-
- * Scripts/do-webcore-rename:
-
-2011-02-07 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Add resource load client for injected bundle and move willSendRequest there
- https://bugs.webkit.org/show_bug.cgi?id=53972
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didCreatePage):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didInitiateLoadForResource):
- (WTR::InjectedBundlePage::didReceiveResponseForResource):
- (WTR::InjectedBundlePage::didReceiveContentLengthForResource):
- (WTR::InjectedBundlePage::didFinishLoadForResource):
- (WTR::InjectedBundlePage::didFailLoadForResource):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2011-02-07 Adam Barth <abarth@webkit.org>
-
- Add Leopard Debug back to the core builders.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-07 Adam Klein <adamk@chromium.org>
-
- Reviewed by Jian Li.
-
- [chromium] Remove deprecated method WebNotification::dir
- https://bugs.webkit.org/show_bug.cgi?id=53735
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::show):
-
-2011-02-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove Leopard Debug as a core builder
- https://bugs.webkit.org/show_bug.cgi?id=53971
-
- The Leopard Debug builder has been failing to compile for several days.
- My understanding is that folks are working on fixing the build, but for
- the time being we should probably remove it from the list of core
- builders so that the core waterfall can be green. We can certainly add
- it back once the build is fixed.
-
- Also, I've removed the Tiger builders because those no longer appear to
- be attached to the buildbot master.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-01 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Roben.
-
- include svn revisions in git diffs for the code review tool to use
- https://bugs.webkit.org/show_bug.cgi?id=53569
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2011-02-03 MORITA Hajime <morrita@google.com>
-
- Reviewed by Darin Fisher.
-
- [Chromium] Should implement EditorClientImpl::requestCheckingOfString()
- https://bugs.webkit.org/show_bug.cgi?id=51013
-
- Gave DRT implementation for requestTextCheck().
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled): Implemented.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (invokeFinishLastTextCheck): Added.
- (WebViewHost::requestTextCheck): Added.
- (WebViewHost::finishLastTextCheck): Added.
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-02-07 Joone Hur <joone.hur@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Implement layoutTestController.findString
- https://bugs.webkit.org/show_bug.cgi?id=50237
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::findString):
-
-2011-02-07 Chang Shu <chang.shu@nokia.com>
-
- Reviewed by Darin Adler.
-
- We should disable spatial navigation explicitly during the initialization
- of DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=53928
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2011-02-07 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed.
-
- Fix WebKitTestRunner build on the SL bot.
-
- * WebKitTestRunner/Configurations/Base.xcconfig: Look for the JSC copy
- of ICU headers.
-
-2011-02-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed.
-
- [Qt][WK2] Buildfix after r77794.
-
- WebKitTestRunner does not block remote resources or complain about them
- https://bugs.webkit.org/show_bug.cgi?id=42139
- <rdar://problem/8183942>
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Add missing includepaths.
-
-2011-02-07 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed.
-
- More bot appeasement.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-02-07 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed.
-
- Remove accidental references to directories on my laptop.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-02-07 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Antti Koivisto.
-
- WebKitTestRunner does not block remote resources or complain about them
- https://bugs.webkit.org/show_bug.cgi?id=42139
- <rdar://problem/8183942>
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame): Implement the required
- checks (using KURL, to avoid need to invent a whole URL API).
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Link WebCore
- directly to get at KURL symbols.
-
-2011-02-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Daniel Bates.
-
- Add WebKit2 bot to list of expected builders in Python regression test results.
- https://bugs.webkit.org/show_bug.cgi?id=53905
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Ryosuke Niwa.
-
- Update test expectations for new core builder
- https://bugs.webkit.org/show_bug.cgi?id=53904
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by David Levin.
-
- Add WebKit2 test bot to core builders
- https://bugs.webkit.org/show_bug.cgi?id=53901
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
-
-2011-02-06 Ryosuke Niwa <rniwa@webkit.org>
-
- Another unreviewed Chromium build fix.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2011-02-06 Ryosuke Niwa <rniwa@webkit.org>
-
- Unreviewed Chromium build fix.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2011-02-06 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Darin Adler.
-
- OwnArraryPtr.h uses deleteOwnedPtr but doesn’t include OwnPtrCommon.h
- https://bugs.webkit.org/show_bug.cgi?id=52867
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (Image::craeteFromStdin): Call adoptArrayPtr.
-
-2011-02-06 James Kozianski <koz@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add classes for representing test outputs.
- https://bugs.webkit.org/show_bug.cgi?id=52136
-
- These classes will make it easier to write scripts that deal with test
- outputs such as rebaselining and deduping scripts. The intent is that
- eventually we will be have buildbot return TestOutputs for a
- particular build which can be compared with TestOutputs derived from a
- local LayoutTests directory.
-
- * Scripts/webkitpy/common/net/testoutput.py: Added.
- * Scripts/webkitpy/common/net/testoutput_unittest.py: Added.
- * Scripts/webkitpy/common/net/testoutputset.py: Added.
- * Scripts/webkitpy/common/net/testoutputset_unittest.py: Added.
- * Scripts/webkitpy/common/system/zip_mock.py: Added.
-
-2011-02-06 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Clear page's groupName even when not in DRT
- https://bugs.webkit.org/show_bug.cgi?id=53874
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::windowCloseRequested):
-
-2011-02-06 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [CMake] Add dependencies for Visual Studio projects
- https://bugs.webkit.org/show_bug.cgi?id=53773
-
- Add a WebKit dependecy to WinCELauncher, so CMake can
- generate the correct build order for the solution.
-
- * CMakeListsWinCE.txt:
-
-2011-02-06 Andreas Kling <kling@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] MiniBrowser: Clean up handling of titleChanged() signal
- https://bugs.webkit.org/show_bug.cgi?id=53869
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView): Remove unnecessary titleChanged() handling.
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow): Connect titleChanged() directly to setWindowTitle().
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-02-06 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- WebKitTestRunner needs layoutTestController.setWillSendRequestReturnsNull
- https://bugs.webkit.org/show_bug.cgi?id=42690
- <rdar://problem/8213851>
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::willSendRequestReturnsNull):
- (WTR::LayoutTestController::setWillSendRequestReturnsNull):
-
-2011-02-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r77720.
- http://trac.webkit.org/changeset/77720
- https://bugs.webkit.org/show_bug.cgi?id=53854
-
- "Broke nrwt on Chromium win." (Requested by dglazkov|away on
- #webkit).
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-02-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r77725.
- http://trac.webkit.org/changeset/77725
- https://bugs.webkit.org/show_bug.cgi?id=53844
-
- It broke Qt minimal build (Requested by Ossy_ on #webkit).
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-02-04 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Adam Barth.
-
- [GTK] plugins/plugin-document-back-forward.html fails
- https://bugs.webkit.org/show_bug.cgi?id=53833
-
- Add the new "alert on load" functionality for the Unix version of the
- test plugin. This functionality was originally introduced in r77706.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance): Add new plugin fuctionality.
-
-2011-02-04 Kundu Suchismita <suchi.kundu@nokia.com>
-
- Reviewed by Andreas Kling.
-
- Local Storage settings can be enable/disable from "Develop" menu
- https://bugs.webkit.org/show_bug.cgi?id=52296
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleLocalStorage):
- (LauncherWindow::toggleOfflineStorageDatabase):
- (LauncherWindow::toggleOfflineWebApplicationCache):
- (LauncherWindow::setOfflineStorageDefaultQuota):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-02-04 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- get test-webkitpy running on win32 python
- https://bugs.webkit.org/show_bug.cgi?id=53822
-
- The test harness crashes with a WindowsError because it can't find
- 'svn' when using subprocess.Popen. This gets us past the error
- so we can see the failing tests on the Chromium Win Release Tests
- bot.
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-02-04 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] fast/events/pagehide-timeout.html fails
- https://bugs.webkit.org/show_bug.cgi?id=53771
-
- Add knowledge of the document browser cache model the DRT. When resetting
- WebKit settings to consistent values between tests, default to the document
- browser cache model.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Reset the cache model to the document browser
- cache model between tests.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCacheModel): An int value of 2 here corresponds to the
- document browser cache model.
-
-2011-02-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- PluginDocuments don't create widgets for plugins on back/forward
- https://bugs.webkit.org/show_bug.cgi?id=53474
-
- Teach the test plugin how to call alert on load.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
-
-2011-02-04 Adam Roben <aroben@apple.com>
-
- Add a test case for encode/decode of FormData/FormDataElement
-
- If the fix made in r77401 is broken, this new test will crash.
-
- Fixes <http://webkit.org/b/53616> <rdar://problem/8949883>.
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/Test.h: Moved the bulk of TEST_ASSERT into a new _TEST_ASSERT_HELPER macro.
- Added a new TEST_ASSERT_RETURN macro that can be used in functions with a return value.
-
- * TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame): Record that the load is finished.
- (TestWebKitAPI::setPageLoaderClient): Hook up the loader client.
- (TestWebKitAPI::createSessionStateContainingFormData): Load simple-form.html, submit the
- form, an return the session state data.
- (TestWebKitAPI::TEST): Create some session state that contains form data from one WKPage,
- and restore it into another WKPage.
-
- * TestWebKitAPI/Tests/WebKit2/simple-form.html: Added.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
- Added new files.
-
-2011-02-04 Adam Roben <aroben@apple.com>
-
- Move code to run JavaScript tests into its own files
-
- This will allow other tests to use this mechanism.
-
- Fixes <http://webkit.org/b/53806> SpacebarScrolling should share its JavaScript-fu with the
- world
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/JavaScriptTest.cpp: Added.
- * TestWebKitAPI/JavaScriptTest.h: Added.
- Moved code here...
-
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp: ...from here.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Added the new files.
-
-2011-02-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- merge test expectations for chromium, chromium-gpu. The
- chromium-gpu port will no longer maintain its own
- test expectations file.
-
- Also add in a graphics_type() call on the port object to
- determine what graphics type to use in the test configuration,
- and log the configuration as a config setting.
-
- https://bugs.webkit.org/show_bug.cgi?id=53562
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2011-02-04 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: fix processing Unicode literals from .js sources in check-inspector-strings.
- https://bugs.webkit.org/show_bug.cgi?id=53781
-
- * Scripts/check-inspector-strings:
-
-2011-02-04 Adam Roben <aroben@apple.com>
-
- Include the crashing function in the link to a crash log on Mac
-
- Fixes <http://webkit.org/b/53780> Crash log links in results.html should include the
- function that crashed on Mac
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (crashLocation): Moved all the Windows code inside an if instead of using an early return,
- but didn't otherwise change it. Added an if for Mac that parses the crashing function out of
- the crash log.
-
-2011-02-04 Adam Roben <aroben@apple.com>
-
- Link to Mac crash logs from results.html
-
- Fixes <http://webkit.org/b/14861> run-webkit-tests should link to Mac crash logs in
- results.html
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (captureSavedCrashLog): Added a case for Apple's Mac port. We get the crash log out of
- ~/Library/Logs/CrashReporter, and wait for ReportCrash to exit before trying to get the log.
-
-2011-02-03 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- WebKit2: Need WebKit2 equivalent of WebResourceLoadDelegate::willSendRequest in the Bundle
- https://bugs.webkit.org/show_bug.cgi?id=52897
- <rdar://problem/8898294>
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2011-02-03 Ivan Krstić <ike@apple.com>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-02-03 James Kozianski <koz@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add navigator.registerProtocolHandler behind a flag.
- https://bugs.webkit.org/show_bug.cgi?id=52609
-
- * Scripts/build-webkit:
-
-2011-02-03 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [NRWT] Remove TestArgs class, which is wrongly used.
-
- https://bugs.webkit.org/show_bug.cgi?id=53063
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-02-03 Andrew Wason <rectalogic@rectalogic.com>
-
- Reviewed by Kenneth Russell.
-
- Change ENABLE_3D_CANVAS to ENABLE_WEBGL
- https://bugs.webkit.org/show_bug.cgi?id=53714
-
- * Scripts/build-webkit: change --3d-canvas build option
- to set ENABLE_WEBGL
-
-2011-02-03 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- [NRWT] Introduces Input/Output class used by base.Driver into port/base.py and
- move _run_single_test() and _process_output() functions from
- dump_render_tree_thread.py to a single_test_runner.py as an individual module.
-
- This is clean up and acts as a preparation for elimination of test_types/*
- classes. These classes will move to the single_test_runner module introduced
- in this patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=53004
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_input.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_output.py: Removed.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Delete a line that was accidentally missed in r77586; without it
- there is still a race between the two threads.
-
- https://bugs.webkit.org/show_bug.cgi?id=51572
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: handle "broken pipe" notifications from DRT more cleanly.
-
- https://bugs.webkit.org/show_bug.cgi?id=52927
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Update, resubmit change to bug 51572. I think the race that was
- fixed in r76703 caused the hang that caused us to roll this
- patch out before, so I'd like to try again.
-
- https://bugs.webkit.org/show_bug.cgi?id=51572
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
-
-2011-02-03 Daniel Cheng <dcheng@chromium.org>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-02-03 Adam Roben <aroben@apple.com>
-
- Include the crashing function in the link to a crash log
-
- Fixes <http://webkit.org/b/53739> Crash log links in results.html should include the
- function that crashed
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (crashLocation): Added. Returns the location of the crash.
- (linksForErrorTest): Include the crash location in the link text for the crash log, if one
- could be determined.
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Actually make the changes suggested by Mihai in his review
- of bug 53720 :(
-
- https://bugs.webkit.org/show_bug.cgi?id=53720
-
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: Fix bug introduced in r77434 that was
- causing us to run the canvas GPU tests on the Mac GPU port. This
- bug revealed that we were not setting the port.name() field
- properly in many cases, so I've cleaned up all of that code, and
- removed a few comments about "version-specific" GPU ports that
- don't exist and just confused things.
-
- Testing also revealed that port.abspath_for_test() wasn't
- normalizing paths on Windows properly, so I fixed that as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=53719
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2011-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: fix normalization of paths on windows when gathering files
-
- r77434 introduced a bug that was causing the test expectations
- for the GPU ports to not be treated properly. It turns out that
- when we gathered the list of test files on Windows, we would
- return paths of the form "c:\LayoutTests/fast/canvas", and the
- mixture of backslashes and forward slashes was confusing things.
-
- This patch normalizes all of the filenames returned from
- test_files.find(), and adds better tests for this (fixing a
- couple of other bugs found in the meantime).
-
- https://bugs.webkit.org/show_bug.cgi?id=53720
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
-
-2011-02-03 Adam Roben <aroben@apple.com>
-
- Add links to Windows crash logs in results.html
-
- Fixes <http://webkit.org/b/53718> run-webkit-tests should link to Windows crash logs in
- results.html
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (top level): Added $crashLogTag and $windowsCrashLogFilePrefix (which came from
- createDebuggerCommandFile).
- (testCrashedOrTimedOut): If the test crashed, capture any saved crash log after the dump
- tool has exited.
- (captureSavedCrashLog): Added. Finds the crash log for the test that just crashed and moves
- it into the test results directory tree. Only implemented for Cygwin currently.
- (findNewestFileMatchingGlob): Added. Does what it says.
- (htmlForResultsSection): Only link to files that exist.
- (linksForErrorTest): Add a link to the crash log.
- (deleteExpectedAndActualResults): Delete any old crash log for this test.
- (createDebuggerCommandFile): Use the new $windowsCrashLogFilePrefix constant instead of
- hardcoding it here.
-
-2011-02-03 Adam Roben <aroben@apple.com>
-
- Tell the debugger the path to the WebKit source tree when saving a crash log
-
- This allows the debugger to include the crashing line of code in the log.
-
- Fixes <http://webkit.org/b/53678> Crash logs from buildslaves don't show the crashing line
- of code
-
- Reviewed by Sam Weinig.
-
- * Scripts/old-run-webkit-tests:
- (createDebuggerCommandFile): Added. Saves commands that we'd like the debugger to run to a
- file and returns the path to that file. The commands we pass came from
- setUpWindowsCrashLogSaving, but I've added a .srcpath command to tell the debugger where the
- WebKit source code lives.
- (setUpWindowsCrashLogSaving): Instead of specifying the commands directly on the command
- line using -c, save them to a file and specify the path to that file using -cf. This works
- around what is presumably a bug in Windows's command line parsing, where having multiple
- quoted paths in the debugger commands causes the post-mortem debugger not to be invoked at
- all. Also pulled the options we pass to the debugger out into a list that is then join()ed
- together to make them easier to modify in the future.
-
-2011-02-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add notification of the end of a rubber band.
- <rdar://problem/8940648>
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- Stub out the new WKUIClient function.
-
-2011-02-03 Gabor Rapcsanyi <rgabor@webkit.org>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-02-03 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] MiniBrowser's window size should be 800x600
- https://bugs.webkit.org/show_bug.cgi?id=53670
-
- Make layout test failure debugging easier.
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
-
-2011-02-02 Andy Estes <aestes@apple.com>
-
- Reviewed by Mark Rowe.
-
- 'update-webkit' should handle OpenSource and Internal using different
- VCSs.
-
- * Scripts/update-webkit: Re-check the VCS type when updating Apple's
- Internal directory.
-
-2011-02-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: hardcode the directories to scan for tests
- for GPU bots instead of SKIPping them. See bug 53562 for some
- context, but we will now hard-code the list of directories to
- use by default instead of skipping over directories in the
- expectations file. We do this so that we will be able to merge
- the expectations files without getting conflicting SKIP
- directives. Note that this change will reduce the # of tests
- being run on the Mac GPU bots, because we're accidentally
- including some today.
-
- https://bugs.webkit.org/show_bug.cgi?id=53631
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2011-02-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Beth Dakin.
-
- Add ChromeClient function to paint custom overhang areas.
- https://bugs.webkit.org/show_bug.cgi?id=53639
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- Stub out new callback.
-
-2011-02-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: support chromium code paths in mock_drt
-
- https://bugs.webkit.org/show_bug.cgi?id=53471
-
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
-
-2011-02-02 Adam Klein <adamk@chromium.org>
-
- Reviewed by Tony Chang.
-
- Update new-run-webkit-tests --chromium to put output under Source/...
- https://bugs.webkit.org/show_bug.cgi?id=53612
-
- * BuildSlaveSupport/test-result-archive:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-01-28 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [chromium] remove --use-test-shell from NRWT
- https://bugs.webkit.org/show_bug.cgi?id=53346
-
- I've already started removing some of the bindings like eventSender so
- this already doesn't work isn't useful. Also updated some comments to
- refer to DRT instead of test_shell.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-02-02 Steve Lacey <sjl@chromium.org>
-
- Reviewed by Eric Carlson.
-
- Implement basic media statistics on media elements.
- https://bugs.webkit.org/show_bug.cgi?id=53322
-
- * Scripts/build-webkit:
-
-2011-02-02 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fixes for wxWebKit.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setSerializeHTTPLoads):
- * wx/browser/wscript:
- * wx/build/build_utils.py:
- * wx/build/settings.py:
-
-2011-02-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: stop skipping so many tests
-
- r77163 introduced a regression where we weren't resetting test
- expectations properly and were skipping too many tests as a
- result. This patch fixes that and adds a test for it.
-
- https://bugs.webkit.org/show_bug.cgi?id=53551
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
-
-2011-02-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add first stub of test_runner2. This
- will add support for the 'inline', 'threads', and 'processes'
- flags to --worker-model, but for now the implementatios just
- fall back on the old ones.
-
- https://bugs.webkit.org/show_bug.cgi?id=53157
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-01 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by James Robinson.
-
- [Chromium] run-chromium-webkit-unit-tests looks for binaries in the wrong place
- https://bugs.webkit.org/show_bug.cgi?id=53522
-
- * Scripts/run-chromium-webkit-unit-tests:
-
-2011-02-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- Using Control-C to cancel webkit-patch or other python tools causes
- unpleasant traceback console spew
- https://bugs.webkit.org/show_bug.cgi?id=53462
-
- Catch the exception and don't print the stack trace.
-
- * Scripts/webkit-patch:
-
-2011-02-01 Scott Cameron <sccameron@rim.com>
-
- Reviewed by Daniel Bates.
-
- Use Windows format for MinGW HTTPD path.
- https://bugs.webkit.org/show_bug.cgi?id=53503
-
- * Scripts/webkitperl/httpd.pm:
- - Use single-quotes around MySys value for $httpdPath in getHTTPDPath()
- so that we don't have to escape the space characters in the path. Also,
- changed path to Windows-style path and removed FIXME comment.
-
-2011-02-01 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Add a way to use shared process model in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=53090
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView): Removed the m_context member.
- From now the context is guaranteed to be non-null and we
- don't need to store that in the object.
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- Added static bool to determine that new windows need to be
- created with their own context or not. Use the same context
- and web process by default to be inilne with the other ports.
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::newWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/main.cpp:
- (main): Added command line switch to be able to use the
- non-shared process model. Simplify the handling of the command line
- switches a little bit.
-
-2011-02-01 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add Window menu and Toggle FullScreen action to MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=53491
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::toggleFullScreenMode):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-02-01 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add Toggle Frame Flattening, Auto Load Images and Disable JavaScript actions to MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=53489
-
- Add Toggle Frame Flattening action to Develop menu. Add Auto Load Images and Disable JavaScript actions
- to Settings menu.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::toggleFrameFlattening):
- (BrowserWindow::toggleDisableJavaScript):
- (BrowserWindow::toggleAutoLoadImages):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-31 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- [Chromium] Switch chromium-mac to use ChromiumDriver
- https://bugs.webkit.org/show_bug.cgi?id=53461
-
- For the sake of consistency with the other Chromium platforms (and so
- that chromium-mac picks up special flags like --enable-hardware-gpu),
- switch chromium-mac from the WebKitDriver to ChromiumDriver.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-01-31 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- The current modifier parsing code in test_expectations is
- fragile and hard-coded, so it's not easy to understand the logic
- or easily add new types of modifiers (like GPU vs. CPU testing
- for graphics tests, or 32-bit vs. 64-bit differences).
-
- This is the first of two patches that will add in more generic
- support and then eliminate the GPU-specific test expectations
- files for Chromium.
-
- This patch adds two standalone objects for handling modifiers. The
- rules for interpreting modifiers, precedence, and conflicts are
- given in the docstring to the ModifierMatcher class, which
- returns ModifierMatchResult objects.
-
- This patch also adds routines to the Port interface and a
- default set of values in the base object, in order to obtain the
- values needed on a given test run. These values are then passed
- to the expectation parser. This also allows us to clean up the
- logic used to lint all of the different configurations in a
- single test_expectations.txt file.
-
- The next patch will merge in the separate GPU expectations file.
-
- https://bugs.webkit.org/show_bug.cgi?id=51222
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Tools/Scripts/webkitpy/style/checkers/test_expectations.py:
- * Tools/Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2011-01-31 Scott Cameron <sccameron@rim.com>
-
- Reviewed by Daniel Bates.
-
- update run-webkit-httpd to be able to launch Apache2.2 in a MSYS environment
- https://bugs.webkit.org/show_bug.cgi?id=50036
-
- This will add an Apache2.2 configuration file and modifies scripts to allow
- running an httpd server in an MSYS environment.
-
- The default Apache2.2 installation path has been preserved and PHP5 modules disabled
- in order to allow for simple installation/execution. Simply install the latest
- Apache2.2 version with OpenSSL from http://httpd.apache.org/download.cgi#apache22 to
- be able to execute run-webkit-httpd.
-
-
- * Scripts/run-webkit-httpd:
- * Scripts/webkitperl/httpd.pm:
-
-2011-01-31 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- mac DRT should report RTL scroll offset relative to top right corner
- https://bugs.webkit.org/show_bug.cgi?id=53324
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpFrameScrollPosition):
-
-2011-01-31 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add Take Screen Shot action to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=53422
-
- Add Take Screen Shot action to MiniBrowser's view menu.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::screenshot):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-31 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Xan Lopez.
-
- [GTK] REGRESSION: http/tests/media/video-{cookie,referer}.html failing
- https://bugs.webkit.org/show_bug.cgi?id=53379
-
- Remove left over #ifdef's. I thought all of the conditional code
- had been freed from the condition, but I forgot to check DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAlwaysAcceptCookies):
-
-2011-01-30 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix regression introduced in r77093 - path.rsplit() doesn't
- take keyword arguments.
-
- https://bugs.webkit.org/show_bug.cgi?id=53326
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
-
-2011-01-30 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Add more unit tests for rebaseline-chromium-webkit-tests. This
- change involves restructuring a bunch of r-c-w-t code to make it
- more testable as well. We also add wrapper classes for handling
- testing zip files and fetching URLs.
-
- https://bugs.webkit.org/show_bug.cgi?id=53040
-
- * Scripts/webkitpy/common/system/urlfetcher.py:
- * Scripts/webkitpy/common/system/urlfetcher_mock.py:
- * Scripts/webkitpy/common/system/zipfileset_mock.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-01-30 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Clean up of the filesystem-related modules used in webkitpy.
- I've added relpath() to the filesystem interface, modified
- ospath.relpath() so that it could work with the filesystem
- interface, and modified the fileset* routines to use the
- filesystem interface consistently.
-
- This patch also adds a close() routine to the fileset routines
- to indicate that the caller is done with the fileset. This
- allows zipfileset to clean up after itself when it creates
- tempfiles to store downloads.
-
- https://bugs.webkit.org/show_bug.cgi?id=53326
-
- * Scripts/webkitpy/common/system/directoryfileset.py:
- * Scripts/webkitpy/common/system/fileset.py:
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- * Scripts/webkitpy/common/system/ospath.py:
- * Scripts/webkitpy/common/system/zipfileset.py:
- * Scripts/webkitpy/common/system/zipfileset_unittest.py:
-
-2011-01-30 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2]REGRESSION (r76991): Fix build errors
- https://bugs.webkit.org/show_bug.cgi?id=53400
-
- Revert the temporary build fix (http://trac.webkit.org/changeset/77088)
- and remove WebKit2Prefix.h from the build.
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2011-01-30 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed.
-
- [Qt][WK2] Buildfix.
-
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2011-01-28 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Adam Roben.
-
- define NOMINMAX when building ImageDiff, as we do elsewhere.
-
- Add various clampToInt() methods to MathExtras.h
- https://bugs.webkit.org/show_bug.cgi?id=52910
-
- * DumpRenderTree/win/ImageDiffCommon.vsprops:
-
-2011-01-28 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.setPOSIXLocale
- https://bugs.webkit.org/show_bug.cgi?id=42682
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::resetLocalSettings):
- (WTR::InjectedBundle::didReceiveMessage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPOSIXLocale):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- test-webkitpy: fix webkitpy.layout_tests.port.mac_unittest.MacTest.test_skipped_file_paths
-
- This patch re-enables this test and changes it to
- handle all of the mac platform versions, not just the one
- it is running on.
-
- https://bugs.webkit.org/show_bug.cgi?id=53356
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Take two. The fix in 77023 didn't work, because we were
- still calling path.abspath_to_uri, which calls _cygpath under
- the covers, and it appears the cygpath on the bots does
- something different than it does on my machine. This patch
- removes the calls to path.abspath_to_uri, so it should be safe.
- If it doesn't work, I'll roll it out along with r76982 and 77023.
-
- https://bugs.webkit.org/show_bug.cgi?id=53126
-
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-01-28 David Kilzer <ddkilzer@apple.com>
-
- <rdar://problem/8930699> build-webkit gives a bogus warning with newer versions of Xcode
- <http://webkit.org/b/53353>
-
- Reviewed by Mark Rowe.
-
- * Scripts/webkitdirs.pm:
- (checkRequiredSystemConfig): Check the Xcode marketing version
- in addition to the DevCoreTools build version before complaining
- about an old version of Xcode. Also make the Mac OS X version
- check use Perl's built-in version string comparitor.
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Work around breakage on Win 7 Release bot caused by r76982
- and the fact that windows ports use "file:////" instead of
- "file:///". Ideally the test code should be isolated from
- this, but it isn't yet. Will fix properly in a bit.
-
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: change worker model values to
- "old-inline", "old-threads" in preparation for test_runner2 /
- multiprocessing changes.
-
- https://bugs.webkit.org/show_bug.cgi?id=53156
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- committers.py - add an IRC nickname for dpranke
- https://bugs.webkit.org/show_bug.cgi?id=53335
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add a "mock DRT" port implementation
- and a separate class that emulates what we expect the
- DumpRenderTree behavior to be.
-
- This will eventually replace port/dryrun.py and allow us to get
- better test coverage of the new-run-webkit-tests code as well as
- a reference for what new-run-webkit-tests expects from DRT.
-
- This is the first attempt at this, and it is pretty bare-boned. It
- really only has been tested on the 'mac' port (and a little on
- the 'chromium-mac' port.
-
- https://bugs.webkit.org/show_bug.cgi?id=53126
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py: Added.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-01-28 Pratik Solanki <psolanki@apple.com>
-
- Unreviewed. Removing .swp file checked in by mistake.
-
- * Scripts/.webkitdirs.pm.swp: Removed.
-
-2011-01-28 Pratik Solanki <psolanki@apple.com>
-
- Reviewed by David Kilzer.
-
- Space not necessary for undefined feature
- https://bugs.webkit.org/show_bug.cgi?id=53317
-
- * Scripts/build-webkit:
-
-2011-01-28 Chang Shu <chang.shu@nokia.com>
-
- Reviewed by Andreas Kling.
-
- Reset NetworkAccessManager to clean up credentials from previous tests.
- This change causes no performance overhead either.
- https://bugs.webkit.org/show_bug.cgi?id=36688
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-2011-01-28 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add Zoom Text Only action to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=53297
-
- Add Zoom Text Only action to MiniBrowser's view menu, change zoom levels to avoid unnecessary divides.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::zoomIn):
- (BrowserWindow::zoomOut):
- (BrowserWindow::resetZoom):
- (BrowserWindow::toggleZoomTextOnly):
- (BrowserWindow::applyZoom):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add webkit-patch roll-chromium-deps
- https://bugs.webkit.org/show_bug.cgi?id=53288
-
- This command updates the Source/WebKit/chromium/DEPS file with the
- last-known good revision of Chromium (or a revision specified on the
- command line). I'd eventually like to turn this into a SheriffBot
- command, but this is the first step.
-
- This patch somewhat sprawled because I needed to move a bunch of code
- out of ChangeLog that should never have been there in the first place.
- Also, I had to fix a bug in MockUser in order to test the new command.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/deps.py: Added.
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/roll.py: Added.
- * Scripts/webkitpy/tool/commands/roll_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py: Added.
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py: Added.
- * Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechromiumdeps.py: Added.
- * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py:
-
-2011-01-27 Greg Coletta <greg.coletta@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- Get rid of prefix header dependency for WebKit2 build system
- https://bugs.webkit.org/show_bug.cgi?id=50174
-
- Change the style checker so that it enforces config.h include for
- WebKit2.
-
- * Scripts/webkitpy/style/checker.py:
-
-2011-01-27 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- execCommand("Paste") doesn't work in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=52785
-
- Enable both of the settings needed to allow paste.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2011-01-27 Jacob Dinu <dinu.jacob@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser: User input lost when toggling use of QGraphicsView
- https://bugs.webkit.org/show_bug.cgi?id=48440
-
- Preserve user input when toggling use of QGraphicsView
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::loadFinished):
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::addressUrl):
- * QtTestBrowser/mainwindow.h:
-
-2011-01-27 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: turn off pixel tests correctly by default
- for webkit-based ports. r70013 (bug 47510) used
- port.set_option_default() to attempt to set default values, but
- that didn't work correctly. I have removed set_option_default
- for now since it was only being used in two places and in three
- useless unit tests. There is a separate bug open to fix the
- option parsing (48095), so this workaround is fine for now.
-
- https://bugs.webkit.org/show_bug.cgi?id=53217
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2011-01-27 Balazs Kelemen <kbalazs@webkit.org>
-
- Rubber-stamped by Ariya Hidayat.
-
- Trivial crash fix in WTR.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Increase the size
- of the vector by one to be able to store the null character.
-
-2011-01-27 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] WTR should be initialized in the same way as DRT
- https://bugs.webkit.org/show_bug.cgi?id=53240
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts): Added missing initialization steps.
-
-2011-01-27 Joone Hur <joone.hur@collabora.co.uk>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-27 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] [Symbian] Move project files into Source
- https://bugs.webkit.org/show_bug.cgi?id=52891
-
- Fix the Symbian build after the project files
- are moved to Source directory. On Symbian qmake
- needs to run in the same directory where the main
- pro files (WebKit.pro, Tools.pro) are located.
-
- * Scripts/webkitdirs.pm: Change to the directory where the pro file
- is located before running qmake for Symbian. Qmake on Symbian
- does not properly honor the "-o" option, work it around by setting
- the name of the Makefile to bld.inf.
-
-2011-01-27 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add simple zooming features to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=53231
-
- Add View menu and Zoom In, Zoom Out, Zoom Reset actions to MiniBrowser.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::zoomIn):
- (BrowserWindow::zoomOut):
- (BrowserWindow::resetZoom):
- (BrowserWindow::updateUserAgentList):
- (BrowserWindow::applyZoom):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-26 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- WebKitTestRunner needs to support layoutTestController.evaluateInWebInspector
- https://bugs.webkit.org/show_bug.cgi?id=42319
-
- Add evaluateInWebInspector and other APIs needed for inspector tests to run.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::showWebInspector):
- (WTR::LayoutTestController::closeWebInspector):
- (WTR::LayoutTestController::evaluateInWebInspector):
- (WTR::LayoutTestController::setTimelineProfilingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldOpenWebInspector):
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/WebKitTestRunnerPrefix.h:
-
-2011-01-26 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Pixel dumps do not include scrollbars in output images
- https://bugs.webkit.org/show_bug.cgi?id=53216
-
- Show scrollbars in pixel dumps. This will fix pixel dumps for tests
- that have scrollbars.
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView): Take the snapshot of the containing GtkScrolledWindow
- instead of the web view itself.
-
-2011-01-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Fix regression introduced in r76322 ... new-run-webkit-tests
- was attempting to save the image diff output as a UTF-8-encoded
- file.
-
- https://bugs.webkit.org/show_bug.cgi?id=53210
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-01-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r76709.
- http://trac.webkit.org/changeset/76709
- https://bugs.webkit.org/show_bug.cgi?id=53194
-
- "broke python tests on non-snowleopard platforms" (Requested
- by dpranke on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py: Removed.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py: Removed.
-
-2011-01-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add a "mock DRT" port implementation
- and a separate class that emulates what we expect the
- DumpRenderTree behavior to be.
-
- This will eventually replace port/dryrun.py and allow us to get
- better test coverage of the new-run-webkit-tests code as well as
- a reference for what new-run-webkit-tests expects from DRT.
-
- This is the first attempt at this, and it is pretty bare-boned. It
- really only has been tested on the 'mac' port (and a little on
- the 'chromium-mac' port.
-
- https://bugs.webkit.org/show_bug.cgi?id=53126
-
- * Scripts/webkitpy/layout_tests/port/mock_drt.py: Added.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/factory.py:
-
-2011-01-26 Xianzhu Wang <wangxianzhu@google.com>
-
- Reviewed by Tony Chang.
-
- Add '--no-timeout' option to Chromium DRT to ease debugging.
- https://bugs.webkit.org/show_bug.cgi?id=52873
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
-
-2011-01-26 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix qt_minimal build
- https://bugs.webkit.org/show_bug.cgi?id=53172
-
- * QtTestBrowser/locationedit.h:
-
-2011-01-26 Mansi Mithal <mansi.mithal@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- QtTestBrowser should have a UI Setting to disable plugins
- https://bugs.webkit.org/show_bug.cgi?id=52408
-
- Added a new action item named "Disable Plugins"
- under the "Settings" menu.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::togglePlugins):
- * QtTestBrowser/launcherwindow.h:
-
-2011-01-25 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move main CMakeLists.txt into Source directory
- https://bugs.webkit.org/show_bug.cgi?id=52888
-
- * Scripts/webkitdirs.pm:
-
-2011-01-25 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Improve label text in submit-to-ews
- https://bugs.webkit.org/show_bug.cgi?id=53130
-
- * QueueStatusServer/templates/submittoews.html:
-
-2011-01-25 Mansi Mithal <mansi.mithal@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- QtTestBrowser should have a UI Settings to prevent loading images
- https://bugs.webkit.org/show_bug.cgi?id=52409
-
- Added a new action item named "DisableAutoLoadImages"
- under the "Settings" menu
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleAutoLoadImages):
- * QtTestBrowser/launcherwindow.h:
-
-2011-01-25 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Minor bug fixes and cleanup for filesystem wrappers, port/* test
- classes, test_expectations.py. This change adds "test-win" and
- "test-mac" variants to the test port so that we can better test
- rebaselining, and adds a MockUser() object for reuse in testing.
-
- https://bugs.webkit.org/show_bug.cgi?id=53036
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-01-25 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] remove unused layoutTestController callback
- https://bugs.webkit.org/show_bug.cgi?id=53103
-
- This method is used by a test_shell_test, but not needed by DRT.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-01-25 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Andreas Kling.
-
- [GTK] Remove 64 bits release bot from the buildbot master
- https://bugs.webkit.org/show_bug.cgi?id=52899
-
- Removes the 64 bits release slave from the buildbot configuration,
- so that we can use it as an EWS.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-01-24 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Implement database quota callback to fix storage tests on WebKit2 bot
- https://bugs.webkit.org/show_bug.cgi?id=53064
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::exceededDatabaseQuota):
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-01-24 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Use designated temp directory for the database for WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=53052
-
- Adopt the new WK2 API for this.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::libraryPathForTesting):
- (WTR::TestController::initialize):
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformLibraryPathForTesting):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::platformLibraryPathForTesting):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformLibraryPathForTesting):
-
-2011-01-24 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Add a new Leopard test bot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-01-24 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Adam Barth.
-
- Add EFL Builder to core waterfall
- https://bugs.webkit.org/show_bug.cgi?id=52704
-
- Add EFL Builder to the core waterfall again.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-01-24 Xianzhu Wang <wangxianzhu@google.com>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests fails to start HTTP server if there are proxy settings
- https://bugs.webkit.org/show_bug.cgi?id=52872
-
- Force disabling proxy to resolve the problem.
-
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-01-24 Andreas Kling <kling@webkit.org>
-
- Reviewed by Darin Adler.
-
- check-webkit-style: Update exemptions following Source/ move.
- https://bugs.webkit.org/show_bug.cgi?id=53017
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-01-24 Andras Becsi <abecsi@webkit.org>
-
- Rubber-stamped by Csaba Osztrogonác.
-
- [Qt] Move project files into Source
- https://bugs.webkit.org/show_bug.cgi?id=52891
-
- * DumpRenderTree/qt/ImageDiff.pro: Add missing "Source" to WebKit.pri path
-
-2011-01-24 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: Find duplicate strings in localizedStrings.js
-
- https://bugs.webkit.org/show_bug.cgi?id=53005
-
- * Scripts/check-inspector-strings:
-
-2011-01-24 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Regroup MiniBrowser's menubar and add open file action
- https://bugs.webkit.org/show_bug.cgi?id=53000
-
- Add File and Develop menu to MiniBrowser's menubar and add open file action to File menu.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::openFile):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-24 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed fix after r76496
-
- [Qt] Move project files into Source
- https://bugs.webkit.org/show_bug.cgi?id=52891
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Remove unnecessary "Source" from the path.
- * BuildSlaveSupport/built-product-archive: Remove unnecessary "Source" from the path.
- * Scripts/webkitdirs.pm: Add the accidentally removed slash to the path.
-
-2011-01-24 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Move project files into Source
- https://bugs.webkit.org/show_bug.cgi?id=52891
-
- * DerivedSources.pro: Renamed from DerivedSources.pro.
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * MiniBrowser/DerivedSources.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitdirs.pm:
- * Tools.pro: Added.
- * WebKitTestRunner/DerivedSources.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-01-22 Geoffrey Garen <ggaren@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Beefed up --threaded mode to catch even more kinds of errors.
- https://bugs.webkit.org/show_bug.cgi?id=52971
-
- * DumpRenderTree/pthreads/JavaScriptThreadingPthreads.cpp: Use a shared
- context group to force JSC to mark multiple threads. (This used to be
- the default, but it changed in SnowLeopard.)
- (runJavaScriptThread): Do more locking and unlocking, and more allocation,
- to give threading mistakes more chances to show themselves.
- (startJavaScriptThreads):
- (stopJavaScriptThreads):
-
-2011-01-22 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Support layoutTestController.addURLToRedirect()
- https://bugs.webkit.org/show_bug.cgi?id=52956
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::addURLToRedirect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-01-22 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] REGRESSION (r72360): http/tests/security/aboutBlank/xss-DENIED-* tests fail
- https://bugs.webkit.org/show_bug.cgi?id=49802
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::open):
-
-2011-01-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Disable mac_unittest.py that fails on some of the Mac bots
- https://bugs.webkit.org/show_bug.cgi?id=52947
-
- As noted in the comment, this test does not appear to be correct
- because the function this test is testing returns different results
- depending on which flavor of Mac the test is run on. This patch
- disable the test. Hopefully we can re-enable the test once we've
- probably insulated the test from its environment.
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-01-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Fix bug introduced in r76322 that caused NRWT to not actually
- read the Skipped files properly.
-
- https://bugs.webkit.org/show_bug.cgi?id=52771
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-01-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Sean Garen and Mark Rowe.
-
- WebKitTestRunner needs the HOME environment variable to be set.
- <rdar://problem/8896573>
-
- * Scripts/old-run-webkit-tests: Set the HOME environment variable if
- it exists.
-
-2011-01-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Suppress a few remaining integration tests so that none of the
- layout_test unit tests ever read from the filesystem or launch
- subprocesses that aren't part of the unit tests.
-
- Also fix a minor bug in the printing unit tests that was
- incorrectly relying on sys.argv.
-
- https://bugs.webkit.org/show_bug.cgi?id=52863
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-01-21 Darin Adler <darin@apple.com>
-
- Fix Mac build.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Pass 0 for runModal function.
-
-2011-01-20 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- WebKit2: Implement showModalDialog
- https://bugs.webkit.org/show_bug.cgi?id=52855
-
- This fixes WebKitTestRunner to compile, but more work is probably
- needed to get it to pass the tests.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runModal): Added. Calls through to the
- platform-specific version of runModal.
- (WTR::TestController::createOtherPage): Changed to be a private
- static member function so it can refer to runModal, which is
- a private static member function.
- (WTR::TestController::initialize): Pass 0 for the runModal
- function since we don't need to run the main window modal.
- I suspect this is wrong and will need to change.
- * WebKitTestRunner/TestController.h: Added declarations for
- the functions added above.
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::runModal): Added. Untested implementation.
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::runModal): Added.
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::runModal): Added.
-
-2011-01-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split Host object off from WebKitPatch for easier re-use
- https://bugs.webkit.org/show_bug.cgi?id=52284
-
- new-run-webkit-tests and other tools are eventually going to want one of these.
- Basically you need to inherit from this class if you want to pretend to be a
- self.tool object for Steps/Commands.
-
- * Scripts/webkitpy/common/host.py: Added.
- * Scripts/webkitpy/tool/main.py:
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Disable the tests that start and stop the http server and web
- server, so that we don't have to worry about port collisions on
- the bots.
-
- https://bugs.webkit.org/show_bug.cgi?id=52861
-
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- nrwt: rewrite google_chrome_unittest to use mock filesystem.
-
- https://bugs.webkit.org/show_bug.cgi?id=52772
-
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- nrwt: clean up almost all remaining port references, remove
- unnecessary import clauses. The only remaining references are
- in places where a mock filesystem makes no sense or can't be
- used, and in one routine in port/google_chrome_unittest that
- I'll rewrite in a separate patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=52771
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- remove fs refs from run_webkit_tests, rebaseline_chromium_webkit_tests
-
- https://bugs.webkit.org/show_bug.cgi?id=52762
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-01-20 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] fix the paths used for the rebaseline tool
- https://bugs.webkit.org/show_bug.cgi?id=52857
-
- Some of the bots were renamed so the path to grab the results zip
- file has changed.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Fix bug introduced in r72688 / bug 52768 that broke the
- generation of the output filename links in the results.html
- output. Apparently none of the unit tests actually checked to
- make sure the generated links were correct :(
-
- https://bugs.webkit.org/show_bug.cgi?id=52854
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
-
-2011-01-20 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=52849
- Make window.print work with WebKit2
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
- Added zeroes to WKPageUIClient structures to avoid build failures.
-
-2011-01-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- nrwt: remove fs refs from printing, test_failures, test_expectations, text_diff
-
- https://bugs.webkit.org/show_bug.cgi?id=52756
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-01-20 Mansi Mithal <mansi.mithal@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- QtTestBrowser should have a seperate menu for Settings
- https://bugs.webkit.org/show_bug.cgi?id=52817
-
- Added a new menu item named "Settings"
- and moved the "Enable interrupting js scripts" and "Enable js pop up windows" under the "Settings" menu
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
-
-2011-01-20 Sam Weinig <sam@webkit.org>
-
- Reviewed by John Sullivan.
-
- Update update-webkit-localizable-strings with new path to WebKit.
-
- * Scripts/update-webkit-localizable-strings:
-
-2011-01-20 James Robinson <jamesr@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Implement mozilla's requestAnimationFrame API
- https://bugs.webkit.org/show_bug.cgi?id=51218
-
- Chromium DumpRenderTree support for window.webkitRequestAnimationFrame.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (invokeScheduleComposite):
- (WebViewHost::scheduleAnimation):
- (WebViewHost::paintInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-20 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKitTestRunner needs to support layoutTestController.evaluateScriptInIsolatedWorld
- https://bugs.webkit.org/show_bug.cgi?id=42327
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm: Add support
- for methods that take their normal arguments but also a JSContextRef.
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: IDL definition
- for evaluateScriptInIsolatedWorld.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame): Set a magic variable only if
- this call is for an isolated world.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::worldMap): Helper to create a world map.
- (WTR::LayoutTestController::worldIDForWorld): Map from an ID to a world.
- (WTR::LayoutTestController::evaluateScriptInIsolatedWorld): The newly
- added LayoutTestController API.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-01-19 Adam Roben <aroben@apple.com>
-
- Convert paths in environment variables back to msys-style inside commit-log-editor
-
- When this script gets run from inside git commit, msys-style paths in the environment will
- have been turned into Windows-style paths with forward slashes. This screws up functions
- like File::Spec->rel2abs, which seem to rely on $PWD having an msys-style path. We convert
- the paths back to msys-style before doing anything else.
-
- Fixes <http://webkit.org/b/48527> commit-log-editor uses full paths for section headers when
- using msysgit's Perl and multiple ChangeLogs have been edited
-
- Reviewed by David Kilzer.
-
- * Scripts/commit-log-editor: Call fixEnvironment before doing anything else.
- (fixEnvironment): Added. When run in msys in conjunction with git (i.e., when invoked from
- inside git commit), convert Windows-style paths in the environment back to msys-style paths.
-
-2011-01-20 Zoltan Horvath <zoltan@webkit.org>
-
- [Win] Unreviewed build fix after r76248.
-
- * DumpRenderTree/ForwardingHeaders/wtf/FastAllocBase.h: Added.
-
-2011-01-20 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Refactoring of the custom allocation framework
- https://bugs.webkit.org/show_bug.cgi?id=49897
-
- Inheriting from FastAllocBase can result in objects getting larger (bug #33896, #46589).
- The modification replaces Noncopyable and FastAllocBase classes and these inherits with their
- equivalent macro implementation at the necessary places.
-2011-01-20 Yi Shen <yi.4.shen@nokia.com>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Tony Chang.
-
- Chromium builders don't delete unversioned directories when DEPS change
- https://bugs.webkit.org/show_bug.cgi?id=52745
-
- If we pass this option to gclient sync, gclient will delete directories
- that are no longer part of DEPS instead of leaving them around to
- confuse us later. Apparently, the downstream buildbots use this option
- already.
-
- * Scripts/update-webkit-chromium:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix - I pulled this patch in to fix an issue
- revealed by r76195 running on some new bots). Also fix a couple
- of other issues revealed in testing.
-
- nrwt: remove fs refs from layout_package/json*
-
- https://bugs.webkit.org/show_bug.cgi?id=52754
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix a couple of minor bugs discovered while bringing up new bots
- for testing.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-01-19 James Robinson <jamesr@chromium.org>
-
- Unreviewed, rolling out r76194.
- http://trac.webkit.org/changeset/76194
- https://bugs.webkit.org/show_bug.cgi?id=51218
-
- Caused mysterious compile failure on the chromium win
- build.webkit.org bots
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- remove fs refs from test_runner, dump_render_tree_thread
-
- https://bugs.webkit.org/show_bug.cgi?id=52753
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-01-19 James Robinson <jamesr@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Implement mozilla's requestAnimationFrame API
- https://bugs.webkit.org/show_bug.cgi?id=51218
-
- Chromium DumpRenderTree support for window.webkitRequestAnimationFrame.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (invokeScheduleComposite):
- (WebViewHost::scheduleAnimation):
- (WebViewHost::paintInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix a few incorrect "self._filesystem" references introduced in
- r76184.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- add a .sep property, abspath(), isabs(), mtime(), and
- open_text_file_for_writing() to filesystem modules. Some of
- these properties are not needed in this patch but will be needed
- in subsequent patches (I'm doing this to avoid having to track
- multiple versions of a single file).
-
- Also, change most of the port/* modules to use the filesystem
- objects instead of referencing the filesystem directly.
-
- https://bugs.webkit.org/show_bug.cgi?id=52748
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
-
-2011-01-19 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders Carlsson.
-
- If resetting between tests times out, treat it as a WebProcess crash
- https://bugs.webkit.org/show_bug.cgi?id=52757
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runTest):
-
-2011-01-19 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=52739
- Make it possible for a WebKit2 client to print headers and footers
-
- Added dummy implementations for new printing UIClient calls.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Change webkitpy/layout_tests/port/test.py to use the
- in-memory filesystem for cleaner unit testing. This
- change allows us to kill a lot of code that was
- specific to the test port, at the cost of being a
- little less clear about how things would work if
- you didn't have a filesystem.
-
- https://bugs.webkit.org/show_bug.cgi?id=52605
-
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix test failure caused by committing attachment 79368 instead
- of attachment 79461 on bug 52604.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: remove use of os.walk, use mock filesystem for better
- unit testing. os.walk() is too much of a hassle to implement on
- top of the in-memory mock filesystem and adding the necessary
- interface to files_under() gives clients a cleaner API anyway
- (for this particular usage model).
-
- https://bugs.webkit.org/show_bug.cgi?id=52691
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
-
-2011-01-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Change more modules in the layout-tests code to use the
- filesystem wrapper for cleaner unit testing.
-
- This patch also adds the glob() wrapper to the filesystem
- abstraction.
-
- https://bugs.webkit.org/show_bug.cgi?id=52604
-
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
-
-2011-01-19 Levi Weintraub <leviw@chromium.org>
-
- Unreviewed.
-
- Updating my email addresses and irc nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-19 Tony Chang <tony@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- [chromium] [linux] if check-sys-deps fails, output the failure reason
- https://bugs.webkit.org/show_bug.cgi?id=52671
-
- * Scripts/webkitpy/common/system/executive_mock.py: Add support for
- error handler functions.
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- output the error text from --check-sys-deps
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-01-19 Aparna Nandyal <aparna.nand@wipro.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser crashes when closing if Facebook is opened
- https://bugs.webkit.org/show_bug.cgi?id=52554
-
- QtNetworkAccessManager is created in a thread and set as
- member variable in QWebPage. When the thread is destroyed
- the object is still used. So fix will set the object to
- NULL once the thread is destroyed.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::~LauncherWindow):
-
-2011-01-18 Maciej Stachowiak <mjs@apple.com>
-
- Rubber stamped by Csaba Osztrogonac
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: Removed unncessary inculde of WKStringCF.h
-
-2011-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add a --build-directory command line argument
-
- Official Google Chrome builds use a non-standard build directory
- location. This patch adds a --build-directory argument that
- allows that location to be specified on the command line. Only
- Chromium-based builds will use this flag for now, but anyone can
- in the future.
-
- There are no unit tests for this since it's difficult to test
- until mock filesystems are fully supported in the code. This was
- tested by hand for now.
-
- https://bugs.webkit.org/show_bug.cgi?id=52694
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-01-18 Maciej Stachowiak <mjs@apple.com>
-
- Not reviewed. Bot fix.
-
- Remove an inadvertently committed debugging print.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::notifyDone):
-
-2011-01-18 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner should track loading more like DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=52692
-
- Change load tracking to track the current top loading frame, in the manner of DumpRenderTree.
- This makes some tests that call notifyDone multiple times pass.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::topLoadingFrame):
- (WTR::InjectedBundle::setTopLoadingFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::stopLoading):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::notifyDone):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveMessageFromInjectedBundle):
-
-2011-01-18 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] NRWT looking for DRT binary in the wrong path on Mac
- https://bugs.webkit.org/show_bug.cgi?id=52678
-
- Update path now that WebKit is inside Source.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2011-01-18 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] http/tests/incremental/slow-utf8-text.pl fails
- https://bugs.webkit.org/show_bug.cgi?id=44282
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2011-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Fix a small race condition that could cause the unit tests for
- new-run-webkit-tests to fail in a multithreaded environment.
- There was a small window in the code where one thread would
- check to see if a thread had raised an exception, do something,
- and then check to see if the thread was alive. If the other
- thread raised an exception and exited in between these two
- steps, the exception would be lost. Flipping the order of the
- two checks fixes the race, since we will now always check for an
- exception on the thread before exiting.
-
- https://bugs.webkit.org/show_bug.cgi?id=51579
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
-
-2011-01-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue dies when test archiving fails
- https://bugs.webkit.org/show_bug.cgi?id=52617
-
- I looked at the machine and it had 10 archives already
- thus find_unused_name was returning None. I've upped
- the limit to 100 (per bug) and tested the case where
- find_unused_name returns None (making archive return None).
-
- * Scripts/webkitpy/common/system/workspace.py:
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Update rebaseline-chromium-webkit-tests unit tests to use a mock
- filesystem. Also fix a couple of "with" statements missed by
- r76050.
-
- https://bugs.webkit.org/show_bug.cgi?id=52487
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-01-18 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Build fixes for gtk3 build
- https://bugs.webkit.org/show_bug.cgi?id=52648
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (beginDragWithFilesCallback):
-
-2011-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Update rebaseline-chromium-webkit-tests to use filesystem objects
- instead of direct references to os.path, shutil, tempfile, etc.
-
- This patch doesn't change anything, but will allow subsequent
- patches to change the unit tests to no longer use the real
- filesystem.
-
- This patch adds a bunch more methods to the filesystem object as
- well.
-
- https://bugs.webkit.org/show_bug.cgi?id=52482
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests shouldn't crash when you try to run a
- directory containing only skipped files.
-
- https://bugs.webkit.org/show_bug.cgi?id=52478
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-01-18 Adam Bergkvist <adam.bergkvist@ericsson.com> and Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] The GTK+ EventSender needs support for beginDragWithFiles
- https://bugs.webkit.org/show_bug.cgi?id=40833
-
- * DumpRenderTree/gtk/EventSender.cpp: Add a beginDragWithFiles implementation for the
- GTK+ event sender.
- (dragWithFilesDragDataGetCallback): Added.
- (dragWithFilesDragEndCallback): Added.
- (beginDragWithFilesCallback): Added.
-
-2011-01-18 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Adam Barth.
-
- ews: Add additional watcher to efl ews
- https://bugs.webkit.org/show_bug.cgi?id=52613
-
- Add gyuyoung.kim@samsung.com to watcher list of efl-ews.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-01-17 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Fix some headers with missing or misspelled #ifndef guards
- https://bugs.webkit.org/show_bug.cgi?id=52545
-
- * DumpRenderTree/chromium/TestEventPrinter.h:
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-01-17 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Anders Carlsson.
-
- REGRESSION: Assertion failure in FrameLoader::continueLoadAfterWillSubmitForm() when
- navigating back to an unreachable URL
- https://bugs.webkit.org/show_bug.cgi?id=52388
-
- Add a third parameter (unreachableURL) to queueLoadHTMLString.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (queueLoadHTMLStringCallback):
- (LayoutTestController::queueLoadHTMLString):
- (LayoutTestController::queueLoadAlternateHTMLString):
- * DumpRenderTree/LayoutTestController.h:
-
- * DumpRenderTree/WorkQueueItem.h:
- (LoadHTMLStringItem::LoadHTMLStringItem):
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (WorkItemLoadHTMLString::WorkItemLoadHTMLString):
- (WorkItemLoadHTMLString::run):
- (LayoutTestController::queueLoadHTMLString):
-
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/mac/WorkQueueItemMac.mm:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- (LoadHTMLStringItem::invoke):
-
-2011-01-17 Dan Bernstein <mitz@apple.com>
-
- Rubber-stamped by Mark Rowe.
-
- Update xcodeproj svn:ignore to include xcuserdata.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj: Modified property svn:ignore.
- * MiniBrowser/MiniBrowser.xcodeproj: Modified property svn:ignore.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj: Modified property svn:ignore.
- * WebKitLauncher/WebKitLauncher.xcodeproj: Modified property svn:ignore.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj: Modified property svn:ignore.
-
-2011-01-17 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed fix after r75908.
-
- Move WebKit into Source
- https://bugs.webkit.org/show_bug.cgi?id=52530
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add Source to the path for Qt API tests.
-
-2011-01-17 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed.
-
- Remove accidentally committed debug printing after r75908.
-
- * Scripts/webkitdirs.pm:
-
-2011-01-17 John Knottenbelt <jknotten@chromium.org>
-
- Unreviewed.
-
- Add myself to committers list
- https://bugs.webkit.org/show_bug.cgi?id=52566
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-17 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- GeolocationController should call stopUpdating on destruction
- https://bugs.webkit.org/show_bug.cgi?id=52216
-
- fast/dom/Geolocation/window-close-crash.html requires that a
- Geolocation watch be started in a secondary window. Consequently,
- we need to allow geolocation permission and provide a mock
- geolocation position for the secondary window's
- GeolocationClientMock.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::windowList):
-
-2011-01-16 Adam Barth <abarth@webkit.org>
-
- Update more include paths to reflect WebKit move.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- (EventSender::needsShiftModifier):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
-
-2011-01-16 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, Chromium build fix.
-
- * Scripts/update-webkit-chromium: Webkit/chromium -> Source/WebKit/chromium
-
-2011-01-16 Martin Robinson <mrobinson@igalia.com>
-
- Build fix for GTK+ after source directory movement.
-
- * GNUmakefile.am: Correct include paths.
-
-2011-01-16 Adam Barth <abarth@webkit.org>
-
- Teach svn-apply about WebKit move.
-
- * Scripts/VCSUtils.pm:
-
-2011-01-16 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move WebKit into Source
- https://bugs.webkit.org/show_bug.cgi?id=52530
-
- * DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/GCControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/PlainTextControllerQt.cpp:
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- * DumpRenderTree/wscript:
- * QtTestBrowser/launcherwindow.h:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2011-01-15 Adam Barth <abarth@webkit.org>
-
- Teach svn-apply about WebKit2 move.
-
- * Scripts/VCSUtils.pm:
-
-2011-01-15 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move WebKit2 into Source
- https://bugs.webkit.org/show_bug.cgi?id=52438
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/test-webkitpy:
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/style/checker.py:
- * WebKitTestRunner/DerivedSources.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-01-15 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] remove obsolete createView method
- https://bugs.webkit.org/show_bug.cgi?id=52437
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-14 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Geoff Garen.
-
- ShouldLoadResourceForFrame should use strings, not URLs.
- https://bugs.webkit.org/show_bug.cgi?id=52476
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::shouldLoadResourceForFrame): Update to use a WKStringRef.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2011-01-14 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by David Levin.
-
- Add Tony Gentilcore as a reviewer
- https://bugs.webkit.org/show_bug.cgi?id=52480
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-14 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: _FunctionState should keep track of where the function name starts.
- https://bugs.webkit.org/show_bug.cgi?id=52454
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added function_name_start_position to
- _FunctionState and logic for setting it correctly.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests.
-
-2011-01-14 Vincent Scheib <scheib@chromium.org>
-
- Reviewed by David Levin.
-
- Add support to DumpRenderTree to use the GPU rather than software renderer
- https://bugs.webkit.org/show_bug.cgi?id=52333
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-01-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] update fonts.conf to fix 6 linux tests in drt
- https://bugs.webkit.org/show_bug.cgi?id=52411
-
- * DumpRenderTree/chromium/fonts.conf: Update to match the copy in
- chromium's src/webkit/tools/test_shell/resources/fonts.conf
-
-2011-01-14 Eric Seidel <eric@webkit.org>
-
- Original patch from Peter Gal <galpater@inf.u-szeged.hu>
-
- Reviewed by Adam Barth.
-
- Fix when running Tools/Scripts/check-webkit-style without arguments.
- https://bugs.webkit.org/show_bug.cgi?id=52261#c16
-
- * Scripts/webkitpy/common/checkout/scm.py: Handle None for changed_files argument better in Git.create_patch method.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2011-01-04 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by David Levin.
-
- Store the tempdir object in a variable so it doesn't get deleted too early.
- https://bugs.webkit.org/show_bug.cgi?id=51875
-
- * Scripts/update-webkit-auxiliary-libs:
- * Scripts/update-webkit-support-libs:
-
-2011-01-14 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Make it work in python 2.5.
-
- webkit-patch suggest-reviewers dies when ChangeLogs are missing
- https://bugs.webkit.org/show_bug.cgi?id=49158
-
- * Scripts/webkitpy/common/checkout/api_unittest.py:
-
-2011-01-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r75774.
- http://trac.webkit.org/changeset/75774
- https://bugs.webkit.org/show_bug.cgi?id=52431
-
- gtk builds were broken (Requested by loislo2 on #webkit).
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-01-14 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style: _FunctionState should detect pure functions.
- https://bugs.webkit.org/show_bug.cgi?id=52428
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added detection for if a function declaration
- is a pure virtual function.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests for verifying that pure
- virtual functions are correctly detected.
-
-2011-01-13 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Just small fix for problem with check-webkit-style.
- It just didn't work for this patch.
- Old code can't concatenate a list of strings with None.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-01-13 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style: _FunctionState should use Position to know where items are.
- https://bugs.webkit.org/show_bug.cgi?id=52424
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_FunctionState.*): Changed _FunctionState to use Position instead of line numbers.
- (detect_functions): Changed to pass Position's to _FunctionState.begin and
- did some minor clean-up.
- (*): Other changes are simply about converting to use the Position's in_FunctionState
- instead of line numbers.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Changed the test code
- to verify the positions stored in _FunctionState.
-
-2011-01-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- webkit-patch suggest-reviewers dies when ChangeLogs are missing
- https://bugs.webkit.org/show_bug.cgi?id=49158
-
- This is not the most elegant, but it is a very safe fix to this bug.
- One advantage of catching ScriptError like this instead of adding a
- new added_or_modified_files or fixing all changed_files callers
- to use a more specific change_files variant, is that we catch
- all kinds of ScriptErrors which might cause our (non-essential)
- suggest-reviewers code to fail out. This should make passing
- --suggest-reviewers to webkit-patch upload much more robust
- and may even make it possible for us to make it default.
-
- The root of the problem here is that SCM.changed_files includes
- deleted ChangeLog paths (from moves, etc) which then when we ask
- SVN/Git for the contents of the file at that revision, the command
- errors out and Executive.run_command raises a ScriptError.
-
- In the future we might fix this differently by making all current
- callers of chagned_files use a more specific method for requesting
- what types of changes they're interested in (adds, modifies, deletes, etc.)
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
-
-2011-01-13 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <rdar://problem/8827065> REGRESSION (r71884): Cross-origin XHR fails if willSendRequest changes the URL
- https://bugs.webkit.org/show_bug.cgi?id=52419
-
- Allow to further control the behavior of the willSendRequest delegate callback by making it
- set a different URL in the new request.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (addURLToRedirectCallback): Added.
- (LayoutTestController::staticFunctions): Added addURLToRedirect.
- (LayoutTestController::addURLToRedirect): Added. Adds the redirection to the map.
- (LayoutTestController::redirectionDestinationForURL): Added this getter.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]): Check
- if there is a redirection for the request’s URL, established by addURLToRedirect(), and if so,
- change the URL in the new request to the redirect destination.
-
-2011-01-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- webkit-patch suggest-reviewers fails due to invalid utf8 in ChangeLog files
- https://bugs.webkit.org/show_bug.cgi?id=52416
-
- Example: webkit-patch suggest-reviewers -g ca3890fe74d94d85d6bfa48f9ea497b094d8e717
- UnicodeDecodeError: 'utf8' codec can't decode bytes in position 536-538: invalid data
-
- I also added FIXMEs about the changed_files returning deleted files problem
- which is causing the other most common exception for suggest-reviewers
- (and is probably breaking sheriff-bots blame detection).
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-01-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- results archives from commit-queue are too large to upload
- https://bugs.webkit.org/show_bug.cgi?id=52405
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-01-13 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [gtk] Zero-sized font does not yet work
- https://bugs.webkit.org/show_bug.cgi?id=49793
-
- Set minimum-font-size to 0 for the DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2011-01-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Darin Adler.
-
- Make old-run-webkit-tests more robust on buildbots
- https://bugs.webkit.org/show_bug.cgi?id=52364
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Pass --exit-after-n-failures 500 to old-run-webkit-tests script.
-
-2011-01-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Darin Adler.
-
- Make old-run-webkit-tests more robust on buildbots
- https://bugs.webkit.org/show_bug.cgi?id=52364
-
- * Scripts/old-run-webkit-tests: Ensure that testResultsDirectory is empty.
-
-2011-01-13 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] fix plugins/plugin-javascript-access.html on Linux and Mac
- https://bugs.webkit.org/show_bug.cgi?id=52332
-
- Forked Info.plist is not longer needed.
-
- * DumpRenderTree/chromium/TestNetscapePlugIn/Info.plist: Removed.
-
-2011-01-13 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Web Inspector: Cleanup after r75613 -- make all UI-facing strings
- to be passed directly to WebInspector.UIString
-
- https://bugs.webkit.org/show_bug.cgi?id=52365
-
- * Scripts/check-inspector-strings:
-
-2011-01-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r74881.
- http://trac.webkit.org/changeset/74881
- https://bugs.webkit.org/show_bug.cgi?id=52357
-
- The EFL builder has been red for days (Requested by abarth on
- #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-01-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by David Levin.
-
- Add beforeunload support to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=52353
-
- This makes a number of currently failing tests pass.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::runBeforeUnloadConfirmPanel):
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-01-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam Weinig.
-
- Detect, identify and recover from WebProcess crashes in run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=52330
-
- * Scripts/old-run-webkit-tests: Detect when the regression test tool reports
- a web process crash.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Set up a processDidCrash
- callback.
- (WTR::TestController::processDidCrash): Report that the Web process
- crashed.
- * WebKitTestRunner/TestController.h:
-
-2011-01-12 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style -- close_expression function doesn't work correctly.
- https://bugs.webkit.org/show_bug.cgi?id=52272
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (Position.__str__): Added a way to convert it to a string which is useful in tests.
- (Position.__cmp__): Added a way to compare Position which is useful in tests and
- generally useful (for upcoming code changes).
- (close_expression): Changed to use Position for input and output.
- Also, fixed many bugs such as only working correctly for parenthesis,
- not working correctly if given an offset in a line and not finding
- the real closing element if there were multiple closing elements in
- the same line.
- (detect_functions): Adjusted due to the change in arguments for
- close_expression.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTestBase.assert_positions_equal): Added a way to verify that
- two positions are the same.
- (CppStyleTest.test_position): Added tests for the __str_ and __cmp__ methods.
- (CppStyleTest.test_close_expression): Added tests to catch the issues
- that were fixed.
-
-2011-01-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r75576.
- http://trac.webkit.org/changeset/75576
- https://bugs.webkit.org/show_bug.cgi?id=52304
-
- broke rebaseline-chromium-webkit-test (Requested by thakis on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2011-01-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Darin Adler.
-
- Add a no-build option to run-webkit-tests, to avoid building DRT/WKTR
- https://bugs.webkit.org/show_bug.cgi?id=52307
-
- * Scripts/old-run-webkit-tests:
-
-2011-01-12 Koan-Sin Tan <koansin.tan@gmail.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] WebKitGtk+ doesn't build on Mac OS X 10.6
- https://bugs.webkit.org/show_bug.cgi?id=50867
-
- Fixed library extention for Mac in webkitdirs.pm and type conflict in
- TestNetscapePlugin.cpp
-
- * GNUmakefile.am: Don't use AppKit when compiling TestNetscapePlugin for GTK+
- * Scripts/webkitdirs.pm:
-
-2011-01-12 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Add check-inspector-strings script.
-
- https://bugs.webkit.org/show_bug.cgi?id=52295
-
- * Scripts/check-inspector-strings: Added.
-
-2011-01-12 Adam Roben <aroben@apple.com>
-
- Advertise the .testnetscape file extension on Windows
-
- Fixes <http://webkit.org/b/52298>
- plugins/no-mime-with-valid-extension.html fails on Windows
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Added a
- FileExtents field to map the .testnetscape file extension to the
- application/x-webkit-test-netscape MIME type, just as we do on Mac.
-
-2011-01-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make webkit-patch support subdirectories for SVN checkouts
- https://bugs.webkit.org/show_bug.cgi?id=52261
-
- os.relpath does not exist on Python 2.5, so we need to call our version
- of the API.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-01-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Eric Seidel.
-
- Close additional pages opened during a test once the test completes.
- https://bugs.webkit.org/show_bug.cgi?id=52276
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done):
-
-2011-01-11 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Errors should be separated from the command line in bot messages.
- https://bugs.webkit.org/show_bug.cgi?id=52275
-
- * Scripts/webkitpy/common/system/executive.py:
- (ScriptError.message_with_output): Added a newline to separate the command
- line from the errors.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ScriptErrorTest.test_message_with_output): Added tests for the various code
- paths in message_with_output.
-
-2011-01-11 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- commit-queue should know how to upload archived results (for test flakes or general failures)
- https://bugs.webkit.org/show_bug.cgi?id=52048
-
- The zips are mostly empty due to forgetting -r.
- Expected diffs were not being pulled from the archive due
- to the archive having longer paths than I realized.
-
- * Scripts/webkitpy/common/system/workspace.py:
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
-
-2011-01-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- The current modifier parsing code in test_expectations is
- fragile and hard-coded, so it's not easy to understand the logic
- or easily add new types of modifiers (like GPU vs. CPU testing
- for graphics tests, or 32-bit vs. 64-bit differences).
-
- This is the first of two patches that will add in more generic
- support and then eliminate the GPU-specific test expectations
- files for Chromium.
-
- This patch adds two standalone objects for handling modifiers. The
- rules for interpreting modifiers, precedence, and conflicts are
- given in the docstring to the ModifierMatcher class, which
- returns ModifierMatchResult objects.
-
- This patch also adds routines to the Port interface and a
- default set of values in the base object, in order to obtain the
- values needed on a given test run. These values are then passed
- to the expectation parser. This also allows us to clean up the
- logic used to lint all of the different configurations in a
- single test_expectations.txt file.
-
- The next patch will merge in the separate GPU expectations file.
-
- https://bugs.webkit.org/show_bug.cgi?id=51222
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-01-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Barth.
-
- Make webkit-patch support subdirectories for SVN checkouts
- https://bugs.webkit.org/show_bug.cgi?id=52261
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2011-01-11 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- commit-queue should know how to upload archived results (for test flakes or general failures)
- https://bugs.webkit.org/show_bug.cgi?id=52048
-
- I changed the API for archive_last_layout_test_results w/o updating the implementation. Oops.
- This fixes an exception seen on the commit-queue when attempting to report flaky tests.
-
- * Scripts/webkitpy/common/system/workspace.py:
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-01-11 Sam Weinig <sam@webkit.org>
-
- Roll r75474 back in.
-
-2011-01-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Remove uses of QFuture since it isn't supported on all platforms.
- https://bugs.webkit.org/show_bug.cgi?id=51204
-
- * QtTestBrowser/webpage.h:
- (QtNAMThread::QtNAMThread):
- (QtNAMThread::networkAccessManager):
- (QtNAMThread::run):
-
-2011-01-11 Peter Varga <pvarga@webkit.org>
-
- Unreviewed.
-
- Add myself to committers' list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should know how to upload archived results (for test flakes or general failures)
- https://bugs.webkit.org/show_bug.cgi?id=52048
-
- Now the queue will always upload results. Either the entire zip, or just
- the diffs.txt in the case of text failures.
-
- This should make understanding flakes much easier, and paves the way
- for having the EWS run layout tests (and upload failures).
-
- In order to upload .zip files I had to teach bugzilla.py to autodetect
- mime types from the filename. Since mimetypes.py doesn't include a mapping
- for .patch files, I have it add one before calling guess_type.
-
- We may find that always uploading the whole zip instead of just the -diffs.txt
- file is preferable, but for now I'm keeping the old behavior because it makes
- quickly understanding text failures easy.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/system/workspace.py: Added.
- * Scripts/webkitpy/common/system/workspace_unittest.py: Added.
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-01-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r75464.
- http://trac.webkit.org/changeset/75464
- https://bugs.webkit.org/show_bug.cgi?id=52193
-
- Followup rollout for 75474 (Requested by Ossy on #webkit).
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-01-10 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Baseline qt_minimal configuration
- https://bugs.webkit.org/show_bug.cgi?id=51313
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting): Add
- QT_NO_UNDOSTACK guard.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome): Add QT_NO_SHORTCUT and QT_NO_PRINTER
- guards.
- (LauncherWindow::applyZoom): Add QT_NO_ANIMATION guard.
- (LauncherWindow::screenshot): Add QT_NO_FILEDIALOG guard.
- (LauncherWindow::selectElements): Add QT_NO_INPUTDIALOG guard.
- (LauncherWindow::showUserAgentDialog): Add QT_NO_COMBOBOX guard.
-
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/locationedit.cpp: Add QT_NO_INPUTDIALOG guard.
- * QtTestBrowser/locationedit.h: Ditto.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI): Add QT_NO_INPUTDIALOG, QT_NO_SHORTCUT and
- QT_NO_UNDOSTACK guards.
- (MainWindow::setAddressUrl): Add QT_NO_INPUTDIALOG guard.
- (MainWindow::changeLocation): Ditto.
- (MainWindow::openFile): Add QT_NO_FILEDIALOG guard.
- (MainWindow::openLocation): Add QT_NO_INPUTDIALOG guard.
-
- * QtTestBrowser/webpage.cpp:
- (WebPage::openUrlInDefaultBrowser): Add QT_NO_DESKTOPSERVICES guard.
- (WebPage::authenticationRequired): Add QT_NO_LINEEDIT guard.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::animatedFlip): Add QT_NO_ANIMATION guard.
- (WebViewGraphicsBased::animatedYFlip): Ditto.
-
-2011-01-10 Sam Weinig <sam@webkit.org>
-
- Fix build.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-01-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- style-queue messages are way too long for big patches
- https://bugs.webkit.org/show_bug.cgi?id=52161
-
- We definitely could build much fancier list-to-string-with-limit functions
- but this should be sufficient for our needs at the moment.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2011-01-10 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r75398.
- http://trac.webkit.org/changeset/75398
- https://bugs.webkit.org/show_bug.cgi?id=52008
-
- Some layout tests are crashing on Chromium Win.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updatePaintRect):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-10 Adam Roben <aroben@apple.com>
-
- Roll out r75392
-
- It isn't needed now that r75289 has been rolled out.
-
- * Scripts/run-javascriptcore-tests:
-
-2011-01-10 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders Carlsson.
-
- WebKitTestRunner uses crazy amounts of CPU, making layout tests slow and flaky
- https://bugs.webkit.org/show_bug.cgi?id=52160
-
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformRunUntil): Instead of busy-looping, wait for the timeout.
- Anything that can make runUntil() conditions turn true will happen on a run loop cycle
- anyway.
-
-2011-01-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- [chromium] fix for animated gif layout tests
- https://bugs.webkit.org/show_bug.cgi?id=52008
-
- * DumpRenderTree/chromium/WebViewHost.cpp: Schedule a paint when we update the paint rect
- to trigger gif animations.
- (WebViewHostPaintTask::WebViewHostPaintTask):
- (WebViewHostPaintTask::runIfValid):
- (WebViewHost::updatePaintRect):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::taskList):
-
-2011-01-10 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Fix gtk2 compilation for master
- https://bugs.webkit.org/show_bug.cgi?id=51885
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView): Replaced the old
- gdk_drawable_get_size with gdk_pixmap_get_size.
-
-2011-01-10 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [WINCE] Reenable NPAPI after r75203
- https://bugs.webkit.org/show_bug.cgi?id=52109
-
- Remove the !isWinCE() check for ENABLE_NETSCAPE_PLUGIN_API and replace
- it with !isEfl(), because EFL port does not support NPAPI (yet).
-
- * Scripts/build-webkit:
-
-2011-01-10 Adam Roben <aroben@apple.com>
-
- Skip some asserting JS tests
-
- See <http://webkit.org/b/52156>.
-
- * Scripts/run-javascriptcore-tests:
-
-2011-01-10 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] build-webkit disable Blob support via arguments passed to automake
- https://bugs.webkit.org/show_bug.cgi?id=52097
-
- * Scripts/build-webkit: Enable Blob support when building WebKitGTK+ via
- build-webkit.
-
-2011-01-10 Adam Roben <aroben@apple.com>
-
- Use the same name and description for TestNetscapePlugin on Windows and
- Mac
-
- Fixes <http://webkit.org/b/52151>
- fast/frames/iframe-reparenting-plugins.html fails on Windows
-
- Reviewed by Steve Falkenburg.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Copied
- the name and description from Mac's Info.plist.
-
-2011-01-10 Siddharth Mathur <siddharth.mathur@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt][WK2] Guard gcc-specific syntax
-
- Non-gcc based compliers choke on the "-include"
- syntax for preinclude, place guard around it.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-01-10 Andreas Kling <kling@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] [WK2] MiniBrowser does not load pages opened in new windows
- https://bugs.webkit.org/show_bug.cgi?id=52111
-
- When getting a createNewPage() callback from QWKPage, create the
- new page with the same QWKContext as the page that is passed to
- the callback.
-
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (newPageFunction):
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-01-10 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] MiniBrowser: Remove superfluous createNewPage() callback
-
- BrowserView set its own useless createNewPage() callback on QWKPage.
- This was immediately overridden by BrowserWindow anyway, so remove
- the BrowserView one.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView):
-
-2011-01-10 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- [Chromium] Remove non-client-based Geolocation code
- https://bugs.webkit.org/show_bug.cgi?id=50921
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::geolocationClientMock):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-01-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Commit bot tried to land r? cq+ patch
- https://bugs.webkit.org/show_bug.cgi?id=36638
-
- It should now be possible to post a patch with r? and cq+ and the
- commit-queue will correctly wait for the r+ before attempting to land the patch.
- (This was a feature requested by several users.)
-
- One caveat: We don't actually reject r-, cq+ patches from the queue
- (we just ignore them), but I think that's OK for now.
-
- I also noticed that setting r- once a commit-queue node had grabbed
- a patch would not properly cancel the landing. That's fixed and
- tested in this patch.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/feeders.py:
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
-
-2011-01-08 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtWebKit crashes when using XMLHttpRequest from the unload event
- https://bugs.webkit.org/show_bug.cgi?id=51934
-
- When accessing the network from the destructor of QWebPage, the network access manager
- was already deleted because the object WebPage was already destructed.
-
- This solve the problem by linking the lifetime of the network access manager to WebPage's QObject.
- The object is now destructed in the destructor of QObject.
-
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::setQnamThreaded):
- * QtTestBrowser/webpage.h:
- (QtNAMThread::QtNAMThread):
-
-2011-01-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- test_failures.py should not mention TestShell (long live DumpRenderTree!)
- https://bugs.webkit.org/show_bug.cgi?id=52067
-
- I ran test-webkitpy, but didn't bother adding a unit test for this string change.
- https://bugs.webkit.org/show_bug.cgi?id=51138#c3 is an example of why this is needed.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
-
-2011-01-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- commit-queue hangs when the ChangeLog diff is bad
- https://bugs.webkit.org/show_bug.cgi?id=52072
-
- * Scripts/webkitpy/tool/steps/validatechangelogs.py:
- * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py:
-
-2011-01-08 Adam Barth <abarth@webkit.org>
-
- Teach svn-apply how to re-write WebCore to Source/WebCore.
-
- * Scripts/VCSUtils.pm:
-
-2011-01-07 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move WebCore to Source
- https://bugs.webkit.org/show_bug.cgi?id=52050
-
- Update the tools to understand WebCore's new location.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * DumpRenderTree/wscript:
- * GNUmakefile.am:
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/generate-qt-inspector-resource:
- * Scripts/prepare-ChangeLog:
- * Scripts/run-bindings-tests:
- * Scripts/update-iexploder-cssproperties:
- * Scripts/update-sources-list.py:
- * Scripts/update-webkit-localizable-strings:
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * WebKitTestRunner/DerivedSources.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh:
- * wx/browser/wscript:
- * wx/build/settings.py:
-
-2011-01-07 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make WebKitTestRunner rest between loads more robust to avoid test crashes
- https://bugs.webkit.org/show_bug.cgi?id=52086
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::notifyDone):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::run):
-
-2011-01-07 James Robinson <jamesr@chromium.org>
-
- Revert "Implement mozilla's animationTime property"
- https://bugs.webkit.org/show_bug.cgi?id=51952
-
- This approach isn't quite right.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2011-01-07 Adam Roben <aroben@apple.com>
-
- Build master fix
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests.start): Don't try to concatenate a list and a string.
-
-2011-01-07 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- run-qtwebkit-tests should be able to kill a testsuite.
-
- Add new option in the script that can setup a timeout for a test.
- If the test execution takes more then specified time then the test
- would be terminated.
-
- [Qt] run-qtwebkit-tests needs timeout
- https://bugs.webkit.org/show_bug.cgi?id=51894
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-qtwebkit-tests:
-
-2011-01-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed fix after r75233.
-
- Based on idea from Eric Seidel.
-
- Add remote zip file handling to webkitpy.
- https://bugs.webkit.org/show_bug.cgi?id=50901
-
- * Scripts/webkitpy/common/system/fileset.py: Make python 2.5 happy.
-
-2011-01-07 Shane Stephens <shanestephens@google.com>
-
- Reviewed by Eric Seidel.
-
- svn-apply: should support git binary delta diffs
- https://bugs.webkit.org/show_bug.cgi?id=38864
-
- * Scripts/VCSUtils.pm:
- * Scripts/svn-apply:
-
-2011-01-06 Julie Parent <jparent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Test Result Server not removing old results.
- https://bugs.webkit.org/show_bug.cgi?id=52012
-
- * TestResultServer/model/jsonresults.py:
- Fix off-by-one: Truncate if >= num_runs, not just >.
- * TestResultServer/model/jsonresults_unittest.py:
- Add unit test to test that merging in a new result with the same value
- as the last result causes previous result to fall off.
-
-2011-01-06 James Kozianski <koz@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Add classes to provide a consistent interface to a set of files.
- https://bugs.webkit.org/show_bug.cgi?id=50901
-
- These classes allow us to write code that is agnostic to whether a
- particular set of files resides in a local directory or in a zip file
- on a remote machine.
-
- * Scripts/webkitpy/common/system/directoryfileset.py: Added.
- * Scripts/webkitpy/common/system/directoryfileset_unittest.py: Added.
- * Scripts/webkitpy/common/system/fileset.py: Added.
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/zipfileset.py: Added.
- * Scripts/webkitpy/common/system/zipfileset_unittest.py: Added.
-
-2011-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- NetworkTransaction should log the url it is retrying
- https://bugs.webkit.org/show_bug.cgi?id=52043
-
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/networktransaction_unittest.py:
-
-2011-01-06 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
- Import os before using it.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- StyleQueue fails to report errors when patches have many files
- https://bugs.webkit.org/show_bug.cgi?id=52042
-
- This is one of at least two errors preventing style error reporting at the moment.
- When we moved to passing the list of files to check explicitly,
- we started to exceed the 500 character TEXT field limit for our AppEngine model object.
- We could change the type of the QueueStatus.message type, or we could
- just teach statusserver.py how to clamp values (and warn when it does).
- I chose the latter path.
-
- * Scripts/webkitpy/common/net/statusserver.py:
-
-2011-01-06 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Fix syntax error in script.
-
- Windows bots need to archive/unarchive builds to/from configuration-specific directories
- https://bugs.webkit.org/show_bug.cgi?id=51996
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-01-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Unreviewed, fixing WinCE build after r75196.
-
- WinCE port does not (yet) support NPAPI.
-
- * Scripts/build-webkit:
-
-2011-01-06 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Darin Adler.
-
- File::Spec->rel2abs in sunspider-compare-results mangles parameters
- https://bugs.webkit.org/show_bug.cgi?id=52015
-
- * Scripts/sunspider-compare-results: call rel2abs on our arguments
- after the platform has been detected, otherwise the script will
- mangle things like '--gtk' into '/a/path/--gtk', breaking the
- detection.
-
-2011-01-06 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Add ENABLE_NETSCAPE_PLUGIN_API, ENABLE_ORIENTATION_EVENTS and ENABLE_TOUCH_EVENTS flags to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=51346
-
- * Scripts/build-webkit:
-
-2011-01-06 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Windows bots need to archive/unarchive builds to/from configuration-specific directories
- https://bugs.webkit.org/show_bug.cgi?id=51996
-
- After the configuration directory change, we were archiving the incorrect directory for
- build product, so we were running tests on the wrong binaries.
-
- This change archives the correct directory, and also unarchives it into a configuration-
- specific directory.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Use a configuration-specific directory on Windows.
- * BuildSlaveSupport/built-product-archive: Unarchive/archive to/from proper directory.
-
-2011-01-06 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- commit-queue mentions "Text diff mismatch" 4 times instead of once per failure
- https://bugs.webkit.org/show_bug.cgi?id=52002
-
- See an example of this here:
- https://bugs.webkit.org/show_bug.cgi?id=51314#c2
-
- It's due to the fact that we pass around TestFailure() instance
- objects and yet expect them to all compare to be the same.
-
- This is bad. We should either have shared instances of these values
- or we should just pass around the class names. There are already hacks
- in place to make TestFailure objects pass equality tests, I just added
- a __hash__ implementation so they can be used in sets as expected.
-
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
-
-2011-01-06 Evan Martin <evan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [gdb] handle inaccessible memory and UChar*
- https://bugs.webkit.org/show_bug.cgi?id=52003
-
- To pretty-print a UChar*, we just grope around in the memory
- looking for a terminating NUL. We need to handle the exception
- that can occur when we poke into an invalid location.
-
- Additionally, the logic for choosing which pretty-printer would
- early return before hitting the point where we'd use the UChar*
- printer. (Did this ever work? How did it regress?)
-
- * gdb/webkit.py:
-
-2011-01-05 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Ada Chan.
-
- WebKit2: Should be able to call into injected bundle to ask if we should allow resource loads
- https://bugs.webkit.org/show_bug.cgi?id=51969
-
- Add shouldLoadResourceForFrame to WTR::InjectedBundlePage.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::shouldLoadResourceForFrame): Stub implementation.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2011-01-06 James Robinson <jamesr@chromium.org>
-
- Reviewed by Simon Fraser.
-
- Implement mozilla's animationTime property
- https://bugs.webkit.org/show_bug.cgi?id=51952
-
- Chromium DRT support for webkitAnimationTime.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2011-01-06 Julie Parent <jparent@chromium.org>
-
- Reviewed by Tony Chang.
-
- Test Result Server always truncates number of results to JSON_RESULTS_MAX_BUILDS
- https://bugs.webkit.org/show_bug.cgi?id=51217
-
- * TestResultServer/model/jsonresults.py:
- Pass num_runs through to _remove_items_over_max_number_of_builds, and use the value.
- Adds missing documentation.
- * TestResultServer/model/jsonresults_unittest.py:
- Add unit test to test that truncation happens at smaller value than JSON_RESULTS_MAX_BUILDS.
- Update test_merge to take a number of builds to truncate at.
-
-2011-01-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The EWS should log outside of the working directory
- https://bugs.webkit.org/show_bug.cgi?id=51986
-
- This patch prepare us for using git clean -x -d -f in the EWS wrapper
- script, which will actually clean the working copy back to a pristine
- state instead of leaving untracked directories and ignored files.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-01-05 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
- Back out attempted change to built-product-archive.
-
- * BuildSlaveSupport/built-product-archive:
-
-2011-01-05 Steve Falkenburg <sfalken@apple.com>
-
- Windows build fix.
- Include configuration name when unpacking a build archive.
-
- Needed, since we split Windows build results into configuration-specific directories
- under WebKitOutputDir.
-
- * BuildSlaveSupport/built-product-archive:
-
-2011-01-05 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Darin Adler.
-
- Debug and Release builds on Windows clobber each other
- https://bugs.webkit.org/show_bug.cgi?id=49185
-
- Changes the structure of WebKitBuild build products directory so we
- completely separate each build configuration into independent directories.
-
- Although we previously had per-configuration directories for obj, this change adds
- per-configuration directories for bin, lib, obj, and include. Each configuration's
- build products are stored within a directory inside of WebKitBuild.
-
- Most use of $(WebKitOutputDir) in the build files has been replaced by $(ConfigurationBuildDir),
- defined in common.vsprops to be $(WebKitOutputDir)\$(ConfigurationName).
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPostBuild.cmd:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPreBuild.cmd:
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops:
- * DumpRenderTree/win/DumpRenderTreePostBuild.cmd:
- * DumpRenderTree/win/DumpRenderTreePreBuild.cmd:
- * DumpRenderTree/win/ImageDiffCommon.vsprops:
- * DumpRenderTree/win/ImageDiffPostBuild.cmd:
- * DumpRenderTree/win/ImageDiffPreBuild.cmd:
- * FindSafari/FindSafari.vcproj:
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops:
- * MiniBrowser/MiniBrowserPostBuild.cmd:
- * MiniBrowser/MiniBrowserPreBuild.cmd:
- * Scripts/webkitdirs.pm:
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops:
- * TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd:
- * TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd:
- * TestWebKitAPI/win/copy-resources.cmd:
- * WebKitAPITest/WebKitAPITestCommon.vsprops:
- * WebKitAPITest/WebKitAPITestPostBuild.cmd:
- * WebKitAPITest/WebKitAPITestPreBuild.cmd:
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops:
- * WebKitTestRunner/win/InjectedBundlePostBuild.cmd:
- * WebKitTestRunner/win/InjectedBundlePreBuild.cmd:
- * WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd:
- * WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd:
- * WinLauncher/WinLauncherCommon.vsprops:
- * WinLauncher/WinLauncherPostBuild.cmd:
- * WinLauncher/WinLauncherPreBuild.cmd:
-
-2011-01-05 Jan Erik Hanssen <jhanssen@sencha.com>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] TestNetscapePlugin doesn't link on OS X
- https://bugs.webkit.org/show_bug.cgi?id=51948
-
- Only add a dependency on libX11 on X11 systems
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2011-01-05 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Adam Roben.
-
- check-webkit-style should allow unnecessary parameter names in WebKit2 APIs because we're matching CF's header style
- https://bugs.webkit.org/show_bug.cgi?id=51970
-
- * Scripts/webkitpy/style/checker.py:
- Add -readability/naming for WebKit2 C API directories.
-
-2011-01-05 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing one more log error from my previous python patch.
-
- Move LayoutTestResults over to new-run-webkit-tests TestResult architecture
- https://bugs.webkit.org/show_bug.cgi?id=51802
-
- webkit-patch failure-reason was logging about parsing errors
- due to my misunderstanding of how BeautifulSoup.findAll worked.
-
- Fixed, and added a unit test.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
-
-2011-01-05 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] [WK2] Add the possibility to open window from the WebProcess in Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=51951
-
- Set a function to QWKPage::setCreateNewPageFunction() in Minibrowser so there is a way
- to create new window from WebKit.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (newPageFunction):
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::page): Added to avoid the indirect access to QWKPage spread in the class
- (BrowserWindow::newWindow):
- (BrowserWindow::updateUserAgentList):
- (BrowserWindow::showUserAgentDialog):
- * MiniBrowser/qt/BrowserWindow.h: Add the global variable backingStoreTypeForNewWindow to
- define the type of the backing store used for new windows.
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2011-01-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- commit-queue should report failure type when reporting flaky tests
- https://bugs.webkit.org/show_bug.cgi?id=51900
-
- This patch was a ridiculous amount of plumbing. In the end I like
- the NRWT-style TestResult class even less. But now we're passing
- a list of TestResult objects from the queue to the FlakyTestReporter.
- Thus the FlakyTestReporter can more easily report what type of failure
- occurred.
-
- In the process, I found that I was not alone in finding TestResult
- cumbersome to use. A bunch of code was trying to create a TestResult
- object with default values. However since the constructor didn't make
- this easy, some places were getting it wrong (including the TestResult unit test)!
- I've fixed the TestResult constructor to have default values for non-essential
- arguments.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-01-05 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Move LayoutTestResults over to new-run-webkit-tests TestResult architecture
- https://bugs.webkit.org/show_bug.cgi?id=51802
-
- Add another unit test to cover a previously missing import.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
-
-2011-01-05 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by David Levin.
-
- Add mihaip@chromium.org as a reviewer
- https://bugs.webkit.org/show_bug.cgi?id=51966
-
- Add myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-05 James Simonsen <simonjam@chromium.org>
-
- Unreviewed. Adding myself to the list of committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-05 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Move LayoutTestResults over to new-run-webkit-tests TestResult architecture
- https://bugs.webkit.org/show_bug.cgi?id=51802
-
- Fix two exceptions seen on the bots after my original commit.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
-
-2011-01-05 Kundu Suchismita <suchi.kundu@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt]Add local storage settings to QtTestBrowser command line arguments
- https://bugs.webkit.org/show_bug.cgi?id=51750
-
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
- Local storage settings can be enable form command line arguments for
- QtTestBrowser.
-
-2011-01-05 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Martin Robinson.
-
- GTK: AX: DRT needs to use correct root object method.
- https://bugs.webkit.org/show_bug.cgi?id=51911
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::rootElement):
-
-2011-01-05 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Rubber-stamped by Csaba Osztrogonác.
-
- Based on idea from Péter Gál.
-
- * Scripts/webkitpy/tool/bot/sheriff.py: Remove unnecessary apostrophes around revision numbers.
-
-2011-01-05 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Adam Barth.
-
- sheriff-bot should be able to do multi-revision rollouts
- https://bugs.webkit.org/show_bug.cgi?id=51176
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-01-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queues.webkit.org should have per-bot status pages
- https://bugs.webkit.org/show_bug.cgi?id=51906
-
- Just adds a /queue-status/QUEUE_NAME/bots/BOT_ID page to show
- statuses from a single queue. Now that we have many bots servicing
- some queues (commit-queue, win-ews, etc.) its easy to have the messages
- you care about scroll off the end of the 15-message limit on the main page.
-
- Eventually we should probably rename /queue-status to /queue or /queues,
- but that's fodder for another patch.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/main.py:
- * QueueStatusServer/templates/includes/singlequeuestatus.html:
- - This probably should use a custom filter instead of hard-coding
- the URL scheme here, but I couldn't figure out how to easily
- create such a filter. Most filters work with "strings" so we can't
- pass the status object. We could add a method to the status
- object and call that, but that seemed a bit strange too.
- * QueueStatusServer/templates/queuestatus.html:
-
-2011-01-05 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Adding myself to the list of committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-04 Koan-Sin Tan <koansin.tan@gmail.com>
-
- Reviewed by David Levin.
-
- check-webkit-style treated some macros with parentheses after #elif as function calls
- https://bugs.webkit.org/show_bug.cgi?id=51695
-
- Ingore function call space checking in any preprocessor directives
- (things starting with #). Change search() to match() because
- preprocessor directives are supposed to be in the beginning of lines.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: make sure there is no false positives for #elif cases
-
-2011-01-04 Søren Gjesse <sgjesse@chromium.org>
-
- Reviewed by Tony Chang.
-
- Change the --multi-load test option to --stress-opt
- https://bugs.webkit.org/show_bug.cgi?id=50751
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::stressOpt):
- (TestShell::setStressOpt):
- (TestShell::stressDeopt):
- (TestShell::setStressDeopt):
- (TestShell::javaScriptFlags):
- (TestShell::setJavaScriptFlags):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-01-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Sam Weinig.
-
- WK2: Support Accessibility
- https://bugs.webkit.org/show_bug.cgi?id=51859
-
- Use rootObject() method to get top of accessibility tree.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
-
-2011-01-03 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Darin Adler.
-
- Remove the last non-GObject usage of PlatformRefPtr and move the code to GRefPtr
- https://bugs.webkit.org/show_bug.cgi?id=51846
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp: Change usage of PlatformRefPtr
- back to GRefPtr.
-
-2011-01-04 Zhe Su <suzhe@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Fix insertText, setMarkedText and unmarkText methods of
- TextInputController to call corresponding methods of WebKit::WebView
- rather than WebKit::WebFrame. This change matches the behavior of
- chromium browser.
- insertText corresponds to WebView::confirmComposition(text)
- setMarkedText corresponds to WebView::setComposition(...)
- unmarkText corresponds to WebView::confirmComposition()
- https://bugs.webkit.org/show_bug.cgi?id=51693
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::insertText):
- (TextInputController::setMarkedText):
- (TextInputController::unmarkText):
-
-2011-01-04 Dihan Wickremasuriya <dihan.wickremasuriya@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] [Symbian] Do not remove 0 byte sized files from productDir
-
- On Symbian productDir points to the source directory. Removing all the
- empty files from the productDir directory corrupts the svn repository.
-
- * Scripts/build-webkit:
-
-2011-01-03 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Adam Barth.
-
- [Qt] Add SelectAll option to the context menu for the editor
- https://bugs.webkit.org/show_bug.cgi?id=50049
-
- Set shortcut for the SelectAll action.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
-
-2011-01-03 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style shouldn't consider "value" automatically to be a meaningless name.
- https://bugs.webkit.org/show_bug.cgi?id=51842
-
- * Scripts/webkitpy/style/checkers/cpp.py: Remove the check for value.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Remove the test for value.
-
-2011-01-03 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by David Kilzer.
-
- [WINCE] Adds a build slave.
- https://bugs.webkit.org/show_bug.cgi?id=50523
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add an
- entry for a release build of the WinCE port.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add platform
- flag to build the WinCE port.
-
-2011-01-03 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by David Kilzer.
-
- Add WinCE support to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=51642
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2011-01-03 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move LayoutTestResults over to new-run-webkit-tests TestResult architecture
- https://bugs.webkit.org/show_bug.cgi?id=51802
-
- I'm not the biggest fan of the test_failures or test_results classes,
- but it's better to have one shared set of classes, than separate ones
- for new vs. old run-webkit-test result handling.
-
- This moves the ORWT results class "LayoutTestResults" over to using
- TestResult and TestFailure classes, making it easy for us to
- make all our sheriff-bot and other webkitpy code NRWT ready.
-
- This also makes it a trivial patch to generate results.json information
- from ORWT results.html files (for flaky test analysis, etc.) as well
- as making it a one-liner to report test failure types when the
- commit-queue sees flaky tests.
-
- This patch tried not to add new functionality, but only to replace
- the guts of LayoutTestResults, while adding unit tests and hoping
- not to break anything.
-
- I also moved callers which assumed User.prompt* were static/class methods
- to using them as instance methods (since we'll eventually want to make them such).
-
- In the process of re-writing things, I broke the rebaseline command, so I wrote
- a unit test to catch my breakage were I do do so again in the future.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Simon Fraser.
-
- webkit-patch shouldn't waste time cleaning a working directory that's already clean
- https://bugs.webkit.org/show_bug.cgi?id=51840
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by Simon Fraser.
-
- webkit-patch should only hide update output if --quiet
- https://bugs.webkit.org/show_bug.cgi?id=51838
-
- As requested by smfr.
-
- * Scripts/webkitpy/tool/steps/update.py:
-
-2011-01-03 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue shouldn't reject patches twice if two bots process the same patch
- https://bugs.webkit.org/show_bug.cgi?id=51805
-
- Before raising an error, we first check whether the patch is still in
- the commit-queue. This check is still racy, of course, but the time
- window is much smaller.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
-
-2011-01-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Make run-api-tests less chatty.
- https://bugs.webkit.org/show_bug.cgi?id=51831
-
- - Make script quiet by default and add --verbose option (replacing --quiet).
- - When not verbose, pipe stdout and stderr to devnull.
-
- * Scripts/run-api-tests:
-
-2011-01-03 Pratik Solanki <psolanki@apple.com>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-01-03 Koan-Sin Tan <koansin.tan@gmail.com>
-
- Reviewed by Xan Lopez.
-
- "Tool/Scripts/run-launcher --gtk" stopped working after 74855
- https://bugs.webkit.org/show_bug.cgi?id=51806
-
- Originally, the $libraryName is 'JavaScriptCore'. When building release
- one, the $libraryDir was 'WebKitBuild/Release/JavaScriptCore/../.libs/'
- which doesn't exist anymore ('WebKitBuild/Release/JavaScriptCore'
- is 'WebKitBuild/Release/Source/JavaScriptCore' now), and
- 'WebKitBuild/Release/Source/JavaScriptCore/../../.libs' looks weird,
- so make it 'WebKitBuild/Release/.libs'
-
- * Scripts/webkitdirs.pm:
-
-2011-01-02 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make EFL a core builder
- https://bugs.webkit.org/show_bug.cgi?id=51804
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-01-02 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed fix after r74855 and r74875.
-
- * BuildSlaveSupport/built-product-archive:
- - Create directories explicitly.
- - Pass shell=True to subprocess.call().
-
-2011-01-02 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed fix after r74855.
-
- Move JavaScriptCore to Source
- https://bugs.webkit.org/show_bug.cgi?id=51604
-
- * BuildSlaveSupport/built-product-archive: JavaScriptCore -> Source/JavaScriptCore
-
-2011-01-02 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed run-javasriptcore-tests fix after r74855.
-
- Move JavaScriptCore to Source
- https://bugs.webkit.org/show_bug.cgi?id=51604
-
- * Scripts/webkitdirs.pm:
-
-2011-01-02 Robert Hogan <robert@webkit.org>
-
- Unreviewed, build fix.
-
- [Qt] Fix DRT build after 74855
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2011-01-01 Adam Barth <abarth@webkit.org>
-
- Remove the assumption from the Qt and Gtk builds that every project is
- in the root directory.
-
- * Scripts/build-webkit:
-
-2011-01-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Teach svn-apply how to apply patches even though JavaScriptCore has moved
- https://bugs.webkit.org/show_bug.cgi?id=51796
-
- After this change, svn-apply will magically apply patches to
- JavaScriptCore/foo to Source/JavaScriptCore/foo.
-
- * Scripts/VCSUtils.pm:
-
-2011-01-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move JavaScriptCore to Source
- https://bugs.webkit.org/show_bug.cgi?id=51604
-
- Update references to JavaScriptCore to point to the new location.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * DumpRenderTree/wscript:
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/run-javascriptcore-tests:
- * Scripts/update-javascriptcore-test-results:
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/common/config/build_unittest.py:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
- * wx/build/settings.py:
-
-2011-01-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move Sources to Source
- https://bugs.webkit.org/show_bug.cgi?id=51794
-
- Update scripts to point to the new location.
-
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
-
-2010-12-31 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [DRT/Chromium] Enable mock spell checker on non-OSX
- https://bugs.webkit.org/show_bug.cgi?id=51401
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::spellCheck):
-
-2010-12-31 Adam Barth <abarth@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- Remove Tools/Scripts/wkstyle
- https://bugs.webkit.org/show_bug.cgi?id=51774
-
- This script appears to not have been touched in a while and seems to
- have been replaced by check-webkit-style.
-
- * Scripts/wkstyle: Removed.
-
-2010-12-31 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed. Coding style fix.
-
- * DumpRenderTree/chromium/TestShell.h:
-
-2010-12-31 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: [Chromium] Inspector's tests are very slow on Win(Dbg).
-
- It was a problem with Chromium DRT. DevToolsAgent object instance was
- attached not only to the inspected page but to the DevTools window too.
- As result all the inspector files were interpreted as a content of inspected page
- and were transfered to the DevTools scripts panel for debugging etc.
-
- https://bugs.webkit.org/show_bug.cgi?id=51735
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::bindJSObjectsToWindow):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
-
-2010-12-31 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move PageLoadTests to PerformanceTests/PageLoad
- https://bugs.webkit.org/show_bug.cgi?id=51771
-
- Update references to PageLoadTests to point to the new location.
-
- * Scripts/run-pageloadtest:
- * Scripts/webkitpy/common/config/build.py:
-
-2010-12-31 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move SunSpider into PerformanceTests
- https://bugs.webkit.org/show_bug.cgi?id=51769
-
- Update these scripts to point to the new location.
-
- * Scripts/run-sunspider:
- * Scripts/sunspider-compare-results:
-
-2010-12-30 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] Add WebThemeEngineDRTMac so that Chromium DRT scrollbar rendering can match the Mac port's
- https://bugs.webkit.org/show_bug.cgi?id=51728
-
- Add implementation of the Mac WebThemeEngine that uses an NSScroller
- to render top-level scrollbars. This makes them match the Mac port's
- use of an NSScrollView, which means that we'll be able to share more
- pixel baselines.
-
- The new rendering code will not be activated until the
- USE_WEB_THEME_ENGINE_TO_PAINT_THUMB #define is fliped in
- ScrollbarThemeChromiumMac.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h: Added.
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm: Added.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebThemeEngineDRTMac::paintScrollbarThumb):
- (stateToHIEnableState):
- (WebThemeEngineDRTMac::paintHIThemeScrollbarThumb):
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
-
-2010-12-30 Konstantin Tokarev <annulen@yandex.ru>
-
- Reviewed by David Kilzer.
-
- [Qt] Don't build wtf/TCSystemAlloc.cpp if --system-malloc option is
- used
- https://bugs.webkit.org/show_bug.cgi?id=51672
-
- * DumpRenderTree/qt/DumpRenderTree.pro: Replaced USE_SYSTEM_MALLOC
- with USE_SYSTEM_MALLOC=1
- * WebKitTestRunner/qt/WebKitTestRunner.pro: Replaced USE_SYSTEM_MALLOC
- with USE_SYSTEM_MALLOC=1
-
-2010-12-30 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by David Kilzer.
-
- [Qt] [Symbian] Fix build-webkit script for Symbian
- https://bugs.webkit.org/show_bug.cgi?id=51509
-
- Set the OUTPUT_DIR for Symbian to be the same as the source
- directory.
-
- * Scripts/webkitdirs.pm:
-
-2010-12-30 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Darin Adler.
-
- check-webkit-style should ignore NULL usage in calls to gtk_widget_style_get
- https://bugs.webkit.org/show_bug.cgi?id=51758
-
- Add a check-webkit-style exception for gtk_widget_style_get and NULL usage.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Add the exception.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Add some tests for this.
-
-2010-12-29 Patrick Gansterer <paroga@webkit.org>
-
- Unreviewed WinCE buildfix.
-
- * WinCELauncher/main.cpp: Add missing include.
-
-2010-12-29 Daniel Bates <dbates@rim.com>
-
- Reviewed by Darin Adler.
-
- svn-apply updates date of wrong change log entry for a change log diff that
- contains two consecutive entries with the same author and date
- https://bugs.webkit.org/show_bug.cgi?id=46061
-
- Fixes an issue where the date of the wrong change log entry may be modified.
- Moreover, changes fixChangeLogPatch() to move entries inserted earlier
- in a ChangeLog file to the top of the file.
-
- Currently, fixChangeLogPatch() explicitly bails out and returns an unchanged
- diff when it detects that the diff inserts a change log entry earlier in a
- ChangeLog. It is unusual to land a patch that has such a deliberate ChangeLog
- change. With the advent of the commit-queue this functionality of bailing out
- and hence landing the patch as-is is harmful to the accuracy of the ChangeLog.
- Instead, we should always move the change log entry to the top of the ChangeLog file.
-
- A side-effect of this change is that setChangeLogDateAndReviewer() now updates
- the date line of the correct change log entry in a ChangeLog diff.
-
- * Scripts/VCSUtils.pm: Modified fixChangeLogPatch() to move entries inserted earlier to the top.
-
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl:
- Updated the following unit tests now that we move entries inserted earlier to the top:
- - "fixChangeLogPatch: New entry inserted in middle."
- (formerly named "fixChangeLogPatch: [no change] New entry inserted in middle.")
-
- - "fixChangeLogPatch: New entry inserted earlier in the file, but after an entry with the same author and date."
- (formerly named "fixChangeLogPatch: [no change] New entry inserted earlier in the file, but after an entry with the same author and date.")
-
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl: Added.
-
-2010-12-29 Konstantin Tokarev <annulen@yandex.ru>
-
- Reviewed by Eric Seidel.
-
- [Qt] Fixed compatibility with gold linker on X11 platforms
- https://bugs.webkit.org/show_bug.cgi?id=51700
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- Linked TestNetscapePlugin with libX11 on Unix platforms
-
-2010-12-29 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- Reviewed by Darin Adler.
-
- Circular dependency in webkitpy.common.checkout.changelog module
- https://bugs.webkit.org/show_bug.cgi?id=50475
-
- Remove automatic import of api.Checkout module when any checkout/
- submodule is imported (e.g.: when checkout.scm.Git is imported).
-
- * Scripts/webkitpy/common/checkout/__init__.py:
-
-2010-12-29 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Ojan Vafai.
-
- prepare-ChangeLog should support the -g option for specifying the git-commit
- https://bugs.webkit.org/show_bug.cgi?id=51708
-
- Add a -g shortcut for the --git-commit prepare-ChangeLog option. This matches
- webkit-patch, though the exact meaning of the two options remain different.
-
- * Scripts/prepare-ChangeLog: Add -g.
-
-2010-12-29 Kent Hansen <kent.hansen@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix compilation with Qt in namespace
- https://bugs.webkit.org/show_bug.cgi?id=51701
-
- * QtTestBrowser/webview.h:
-
-2010-12-28 Daniel Bates <dbates@rim.com>
-
- Reviewed by Sam Weinig.
-
- Substitute // MARK: for compiler-specific #pragma mark
- https://bugs.webkit.org/show_bug.cgi?id=51657
-
- Fix future compilation warnings about "#pragma mark" on GTK+ bots by
- substituting "// MARK:" for "#pragma mark", which provides
- analogous code-bookmarking functionality under Xcode.
-
- Also, for consistency, we should substitute "// MARK:" for compiler-
- specific "#pragma mark" in the source files for the Mac port.
-
- * DumpRenderTree/AccessibilityTextMarker.cpp:
- * DumpRenderTree/cf/WebArchiveDumpSupport.h:
- * DumpRenderTree/mac/AccessibilityTextMarkerMac.mm:
- * DumpRenderTree/mac/ObjCController.m:
- * MiniBrowser/mac/AppDelegate.m:
- * MiniBrowser/mac/BrowserWindowController.m:
-
-2010-12-28 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Eric Seidel.
-
- Add --no-build option to run-sunspider
- https://bugs.webkit.org/show_bug.cgi?id=51658
-
- * Scripts/run-sunspider: add --no-build flag to skip building
- phase.
-
-2010-12-27 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Martin Robinson.
-
- Append the directory Tools/DumpRenderTree to the list of directories that
- do-webcore-rename should search so that it can rename DRT files and
- source code.
-
- * Scripts/do-webcore-rename:
-
-2010-12-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- build-webkit should detect missing Java SDK and explain how to install it
- https://bugs.webkit.org/show_bug.cgi?id=51651
-
- * Scripts/build-webkit:
-
-2010-12-26 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Daniel Bates.
-
- [GTK] Add support for build-jsc
- https://bugs.webkit.org/show_bug.cgi?id=51625
-
- Add GTK+ support to build-jsc now that building the jsc executable as
- a standalone target is easy.
-
- * Scripts/build-jsc: Call buildGtkProject for the GTK+ case now.
- * Scripts/build-webkit: Pass in the proper target name to buildGtkProject.
- * Scripts/webkitdirs.pm: Actually process the project parameter in buildGtkProject
- and pass it along to buildAutotoolsProject.
-
-2010-12-27 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style check for meaningless variable names in function declarations.
- https://bugs.webkit.org/show_bug.cgi?id=51523
-
- * Scripts/webkitpy/style/checker.py: Exempted JavaScriptCore/jit/JITStubs.cpp
- from the new check and whitespace/parens because the syntax is unusual and
- produced a fair number of positives for these checks.
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_convert_to_lower_with_underscores): Used as a canonical form for type names
- and parameter names when determining if the parameter name is useless.
- (_create_acronym): Used to check for redundant variable names in cases like "ExceptionCode ec"
- (Parameter.lower_with_underscores_name): Gives back the parameter name in a lower_with_underscore
- format.
- (_check_parameter_name_against_text): Checks to see if the parameter name is in the
- text or an acronym of it.
- (check_function_definition): Checks function definitions for meaningless variable names.
- (process_line): Added call to check_function_definition.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppFunctionsTest.test_convert_to_lower_with_underscores): Test for _convert_to_lower_with_underscores.
- (CppFunctionsTest.test_create_acronym): Test for _create_acronym.
- (CppFunctionsTest.test_check_parameter_against_text): Test for _check_parameter_against_text.
- (CppStyleTestBase.perform_single_line_lint): Removed the parameter name check
- because when only checking a snippet, there are a lot of bogus functions.
- (CppStyleTestBase.perform_multi_line_lint): Ditto and removed a bogus filter
- that I put there previously and just noticed.
- (WebKitStyleTest.test_parameter_names): Tests for the functionality -- both
- check_function_definition and process_line.
-
-2010-12-27 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Disable flash plugin in GtkLauncher when using gtk3
- https://bugs.webkit.org/show_bug.cgi?id=51591
-
- Flash plugin uses gtk2 that is incompatible with gtk3 making
- webkit crash when it's built with gtk3.
-
- * GtkLauncher/main.c:
- (main):
-
-2010-12-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move ANGLE to Sources/ThirdParty
- https://bugs.webkit.org/show_bug.cgi?id=51605
-
- * Scripts/build-webkit:
- - Point to the new ANGLE location.
-
-2010-12-26 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style should be able to parse function declaration parameters.
- https://bugs.webkit.org/show_bug.cgi?id=51451
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (Position.__init__): Holds simple position information (row, column).
- (Parameter.__init__): Holds information about a parameter.
- (SingleLineView.__init): Converts multiple lines into a single line for simpler searches.
- (SingleLineView.convert_column_to_row): Returns the original row given a column.
- (create_skeleton_parameters): Simplifies a parameter list for easier searching.
- (find_parameter_name_index): Finds where the parameter name is.
- (parameter_list): Generates the list of parameters for a function.
- (_FunctionState.begin): Added information to allow determining the parameters
- on demand.
- (_FunctionState.get_parameter_list): Returns a tuple of function parameters.
- (detect_functions): Improve function detection for operator functions and
- determine where the parameters end and pass that to _FunctionState.begin.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppFunctionsTest.test_parameter): Verifies Parameter functionality.
- (CppFunctionsTest.test_single_line_view): Verifies SingleLineView functionality.
- (CppFunctionsTest.test_create_skeleton_parameters): Verifies create_skeleton_parameters.
- (CppFunctionsTest.test_find_parameter_name_index): Verifies find_parameter_name_index.
- (CppFunctionsTest.test_parameter_list): Does some minimal verification for parameter list.
- Much more thorough verification is done as part of FunctionDetectionTest.test_parameter_list.
- (FunctionDetectionTest.perform_function_detection): Added support for verifying
- the parameters found.
- (FunctionDetectionTest.test_function_declaration_detection): Added more function
- detection test to verify that we catch the operator functions.
- (FunctionDetectionTest.test_ignore_macros): Verify that function detection ignores macros.
- (FunctionDetectionTest.test_parameter_list): Added tests to verify the parameter parsing.
- (CheckForFunctionLengthsTest.test_function_length_check_definition_severity1_for_bad_test_doesnt_break): Removed
- because the error. The test is about the bad function name. Fixing the name makes the test exactly like
- test_function_length_check_definition_severity1_for_test.
-
-2010-12-25 Patrick Gansterer <paroga@webkit.org>
-
- Unreviewed WinCE buildfix after r74334.
-
- * CMakeListsWinCE.txt:
-
-2010-12-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r74632.
- http://trac.webkit.org/changeset/74632
- https://bugs.webkit.org/show_bug.cgi?id=51600
-
- makes test-webkitpy hang forever on GTK (Requested by philn-tp
- on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
-
-2010-12-24 Ryuan Choi <ryuan.choi@samsung.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Screen doesn't be rendered when changing size of EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=43528
-
- Remove on_resize because ewk_view_fixed_layout_size_set should not be
- called on callback of EVAS_CALLBACK_RESIZE. As it change size of
- FrameView, rendering was ignored when _ewk_view_smart_calculate was
- called.
-
- * EWebLauncher/main.c:
- (browserCreate):
-
-2010-12-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch (or a pre-commit hook) needs to prevent bad ChangeLog changes
- https://bugs.webkit.org/show_bug.cgi?id=28291
-
- This is a start. At least now webkit-patch will prompt when your ChangeLog looks questionable.
- We could do more advanced things, like parsing the ChangeLog (with changelog.py) and comparing that
- to strings with find in the diff.
- Since non-interactive always returns the default, this should cause patches with bad changelogs to fail on the commit-queue.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/validatechangelogs.py: Copied from Tools/Scripts/webkitpy/tool/steps/validatereviewer.py.
- * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py: Copied from Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py.
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-12-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Modify new-run-webkit-tests to shut up and exit when all the threads
- are wedged so that test runs complete faster and we don't end up
- w/ enormous log files.
-
- https://bugs.webkit.org/show_bug.cgi?id=51572
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
-
-2010-12-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue should better explain how it will re-open bugs and follow duplicate chains
- https://bugs.webkit.org/show_bug.cgi?id=51549
-
- I've had multiple people ask me about the commit-queue's behavior
- regarding reporting flaky tests. I figured it would be best to just
- have the queue explain itself in the bugs it files.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
-
-2010-12-24 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: should ignore "wrong" namings in JavaScriptCore/qt
- https://bugs.webkit.org/show_bug.cgi?id=51467
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2010-12-23 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Move JavaScriptGlue into Sources
- https://bugs.webkit.org/show_bug.cgi?id=51583
-
- These tools refer to JavaScriptGlue and need to be updated to its new
- location.
-
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
-
-2010-12-23 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Eric Seidel.
-
- Bug 51539 - update iexploder scripts to point to new location
-
- * Scripts/run-iexploder-tests:
- * Scripts/update-iexploder-cssproperties:
-
-2010-12-23 Evan Martin <evan@chromium.org>
-
- Reviewed by Ryosuke Niwa.
-
- [chromium] LayoutTestController warning in float->int conversion
- https://bugs.webkit.org/show_bug.cgi?id=51553
-
- Rather than reading an int, converting to a float, then getting a compiler
- warning on passing the float to something that expects an int, instead
- just pass around ints.
-
- No tests, fixes a compiler warning.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (parsePageSizeParameters):
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
-
-2010-12-23 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Darin Adler.
-
- Bug 51537 - iexploder needs cleanup
-
- * iExploder/htdocs: Removed.
- * iExploder/htdocs/config.rb: Removed.
- * iExploder/htdocs/cssproperties.in: Removed.
- * iExploder/htdocs/cssvalues.in: Removed.
- * iExploder/htdocs/htmlattrs.in: Removed.
- * iExploder/htdocs/htmltags.in: Removed.
- * iExploder/htdocs/htmlvalues.in: Removed.
- * iExploder/htdocs/iexploder.cgi: Removed.
- * iExploder/htdocs/iexploder.rb: Removed.
- * iExploder/htdocs/index.html: Removed.
- * iExploder/htdocs/webserver.rb: Removed.
- * iExploder/iexploder-1.7.2/output: Removed.
- * iExploder/tools: Removed.
- * iExploder/tools/lasthit.rb: Removed.
- * iExploder/tools/osx_last_crash.rb: Removed.
- * iExploder/tools/showtest.rb: Removed.
-
-2010-12-23 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Make 'single' the default backing store in EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=51534
-
- 'single' is the simplest backing store and the one intended to be the
- default in the test browser. By mistake the tiled backing store was
- left as default in r72617.
-
- * EWebLauncher/main.c:
- (browserCreate): ditto.
-
-2010-12-23 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Subject: [webkit 4/4] [EFL] Remove non-sense workaround
- https://bugs.webkit.org/show_bug.cgi?id=51533
-
- There's no point in concatenating env("HOME") with "blah", so remove
- option from EWebLauncher.
-
- * EWebLauncher/main.c:
- (main): ditto.
-
-2010-12-23 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Web Inspector: chromium: inspector's tests are quite slow especially at windows(Debug).
-
- Almost all inspector's tests become flaky on chromium Win(dbg) after switching to DRT.
- I just discovered that we have two additional GC runs per each WebViewHost.
- Test_shell had no such calls.
- These gc runs eat 15% of cpu time.
-
- https://bugs.webkit.org/show_bug.cgi?id=51479
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::~WebViewHost):
-
-2010-12-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- This change splits out the TestRunner class into its own file.
- When we fork the code for message passing, we will create a new
- TestRunner, and this change will allow that to be more modular.
-
- While we're at it, split out TestInput and ResultSummary into
- their own files, to reduce the size of run_webkit_tests to
- something more managable.
-
- https://bugs.webkit.org/show_bug.cgi?id=51092
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_input.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
- 2010-12-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt multiprocessing - start over, prepare to fork the code
-
- This code cleans up the signatures and implementation of the
- TestRunner class so we can easily fork it to run either the
- stable implementation or the new, unstable message-passing
- implementation. The two variants will have different
- implementations of the run_tests() method. We will switch
- between the two based on the setting for the '--worker-model'
- switch. We rename the two currently valid values to 'old-inline'
- and 'old-threads'.
-
- https://bugs.webkit.org/show_bug.cgi?id=51081
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-22 Victor Wang <victorw@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] Update chromium archive test result url in rebaseline script.
-
- https://bugs.webkit.org/show_bug.cgi?id=51503
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-12-22 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Alice Liu.
-
- <rdar://problem/8633222> record-memory-win needs to record memory used by the webprocess.
- Verified on Chrome, Safari, and IE.
- With this change, we will record memory from a parent browser window and all child processes.
-
- * record-memory-win/main.cpp:
- (ProcessArgs):
- (PrintUsage):
- (getMemoryInfo):
- (printProcessInfo):
- (evalProcesses):
- (UseImage):
- (QueryContinuously):
- (ElapsedTime):
-
-2010-12-22 Lucas Forschler <lforschler@apple.com>
-
- Unreviewed rollout r74489, because it was missing changelog.
-
- * record-memory-win/main.cpp:
-
-2010-12-22 Ryosuke Niwa <rniwa@webkit.org>
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-12-22 Andrew Scherkus <scherkus@chromium.org>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-12-22 Ariya Hidayat <ariya@sencha.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- TestNetscapePlugIn should use #if defined
- https://bugs.webkit.org/show_bug.cgi?id=51471
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_Initialize):
- (NPP_New):
-
-2010-12-22 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: [chromium] DRT inspector layout tests are flaky in debug.
-
- DevTools window should be closed explicitly because it has custom deinitialization code.
-
- https://bugs.webkit.org/show_bug.cgi?id=50722
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::closeRemainingWindows):
-
-2010-12-22 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style shouldn't complaint about underscores in variables in objective C files.
- https://bugs.webkit.org/show_bug.cgi?id=51452
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_FileState.__init__): Added the information to determine if a file is C or Objective C.
- Using the file extension if possible but falling back to the file contents if we have a header file.
- (_FileState.is_objective_c): Determine if we have an Objective C by examining the file contents if needed.
- (_FileState.is_c_or_objective_c):
- (check_using_std): Changed to using _FileState to determine the file type.
- (check_max_min_macros): Ditto.
- (check_for_null): Ditto.
- (check_style): Changed the parameters to various calls since they now need _FileState
- to determine the file type.
- (check_language): Added the file_state parameter so it could be passed
- to check_identifier_name_in_declaration.
- (check_identifier_name_in_declaration): Don't warn about underscores in variables if
- this is an Objective C file.
- (_process_lines): Added information for the _FileState constructor (and moved the
- call to a place that had the information).
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppFunctionsTest.test_is_c_or_objective_c): Changed the tests to use FileState and exercise
- its functionality.
- (WebKitStyleTest.test_names): Add tests for underscores in Objective C files.
-
-2010-12-21 Andy Estes <aestes@apple.com>
-
- Reviewed by Mark Rowe.
-
- Do not build non-Intel architectures for WebKit2-related projects.
- https://bugs.webkit.org/show_bug.cgi?id=51440
-
- * MiniBrowser/Configurations/Base.xcconfig: Only build for i386 and x86_64.
- * TestWebKitAPI/Configurations/Base.xcconfig: Ditto.
- * WebKitTestRunner/Configurations/Base.xcconfig: Ditto.
-
-2010-12-21 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] Rename WebThemeEngine/ControlDRT to WebThemeEngine/ControlDRTWin
- https://bugs.webkit.org/show_bug.cgi?id=51406
-
- Rename WebThemeControlDRT to WebThemeControlDRTWin and WebThemeEngineDRT
- to WebThemeEngineDRTWin and update references everywhere.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestShellWin.cpp:
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRT.cpp.
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRT.h.
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRT.cpp.
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRT.h.
-
-2010-12-21 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- Clicking missing plug-in text does not show a sheet
- https://bugs.webkit.org/show_bug.cgi?id=51403
-
- Update for changes to the WebPageUIClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-12-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue will report constant failures as flaky if other tests flake
- https://bugs.webkit.org/show_bug.cgi?id=51272
-
- This patch just removes functionality and adds testing.
- Previously we attempted to report flaky tests when we had
- two different tests fail in a row. However, since we stop
- running the tests at the first failure, our code was wrong in
- trying to determine flakiness from the incomplete runs.
-
- Originally I posted an alternate patch:
- https://bug-51272-attachments.webkit.org/attachment.cgi?id=77078
- which fixed our flaky logic in this case, however it was decided
- that that patch would be too difficult to maintain, so now
- I'm just removing the broken logic.
-
- This will dramatically cut-down on our flaky-test false positives
- at the (small) cost of the queues being unable to report
- any flakiness if the tree is very flaky. (With at least one test
- flaking on every run, we'll never report failures anymore.) I think
- this is a tradeoff worth making.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
-
-2010-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue wrongly rejects patches when it can't update itself
- https://bugs.webkit.org/show_bug.cgi?id=46636
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-12-20 Adam Barth <abarth@webkit.org>
-
- Move web sites to Websites directory
- https://bugs.webkit.org/show_bug.cgi?id=51323
-
- Update references to BugsSite to point to the new location.
-
- This patch was never officially reviewed (because it was too large to
- upload to bugs.webkit.org), but it was discussed on webkit-dev and Mark
- Rowe gave me the green light.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
- * Scripts/webkitpy/common/prettypatch.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/style/main.py:
-
-2010-12-20 Adrienne Walker <enne@google.com>
-
- Unreviewed. Adding myself to the list of committers.
-
- * webkitpy/common/config/committers.py:
-
-2010-12-20 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dan Bernstein.
-
- <rdar://problem/8757601> Don't install header files in to the Resources directory.
-
- * Scripts/check-for-inappropriate-files-in-framework: Don't allow .h files in the
- Resources directory.
-
-2010-12-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should include bot id when attaching failure diffs
- https://bugs.webkit.org/show_bug.cgi?id=51280
-
- This is a tiny change to include the bot id in the name of the attachment.
- Most of this diff is just changing the unit test expectations
- now that I hid the comment printing when the comment is None.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-20 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Tools/vcbin/midl.exe needs to be rebuilt
- https://bugs.webkit.org/show_bug.cgi?id=51347
-
- * vcbin/midl.exe: Rebuilt.
-
-2010-12-20 David Levin <levin@chromium.org>
-
- Reviewed by Ariya Hidayat.
-
- .gitignore and webkit-tools-completion.sh have references to WebKitTools that should be Tools.
- https://bugs.webkit.org/show_bug.cgi?id=51343
-
- Follow up from the WebKitTools -> Tools rename.
-
- * Scripts/webkit-tools-completion.sh:
-
-2010-12-20 Cosmin Truta <ctruta@chromium.org>
-
- Reviewed by James Robinson.
-
- new-run-webkit-tests ignores trailing EOL differences in text tests
- https://bugs.webkit.org/show_bug.cgi?id=36983
-
- Changed the handling of new-line characters within new-run-webkit-tests
- to match old-run-webkit-tests. Differences in leading and trailing empty
- lines in text expectation files are no longer ignored.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- Added unit tests. Removed old duplicate unit test entries.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-12-20 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style should detect function declarations (and trivial functions).
- https://bugs.webkit.org/show_bug.cgi?id=51303
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_FunctionState.begin): Add is_declaration and changed the line count
- start to begin at -1 (which will keep the results consistent, since
- the starting line number passed in is one less in this change).
- (detect_functions): changed function detection to now catch trivial
- functions and declarations.
- (check_pass_ptr_usage): Don't check for Pass*Ptr on the first line
- of the function as this may look at return values (when processing
- a declaration).
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (FunctionDetectionTest.perform_function_detection): Basic mechanics
- of testing the function detection.
- (FunctionDetectionTest.test_basic_function_detection): Test a simple
- function.
- (FunctionDetectionTest.test_function_declaration_detection): Test a
- declaration.
- (FunctionDetectionTest.test_non_functions): A test case for a case
- that caused the code to fail due to the { being in quotes.
- (PassPtrTest.test_pass_ref_ptr_return_value): Added some more test
- cases to help catch false alarms for return values.
- (PassPtrTest.test_pass_ref_ptr_member_variable): Ensure that
- we don't get false alarms for member variables either.
-
-2010-12-20 Ryuan Choi <ryuan.choi@samsung.com>
-
- Reviewed by Antonio Gomes.
-
- [CMAKE] Rename WEBKITTOOLS_DIR to TOOLS_DIR
- https://bugs.webkit.org/show_bug.cgi?id=51319
-
- * CMakeListsEfl.txt:
-
-2010-12-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Sam Weinig.
-
- Move WebKitExamplePlugins to Examples
- https://bugs.webkit.org/show_bug.cgi?id=51291
-
- * Scripts/webkitpy/common/config/build.py:
-
-2010-12-17 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed Qt buildfix after r74301.
-
- Rename WebKitTools to Tools
- https://bugs.webkit.org/show_bug.cgi?id=49861
-
- * MiniBrowser/DerivedSources.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2010-12-17 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Simon Fraser.
-
- Rename WebKitTools to Tools
- https://bugs.webkit.org/show_bug.cgi?id=49861
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * CodeCoverage/README:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::initializeFonts):
- * EWSTools/start-commit-queue.sh:
- * EWSTools/start-queue.sh:
- * GNUmakefile.am:
- * MIDLWrapper/MIDLWrapper.cpp:
- (wmain):
- * MiniBrowser/qt/MiniBrowser.pro:
- * Scripts/build-api-tests:
- * Scripts/build-dumprendertree:
- * Scripts/build-webkit:
- * Scripts/build-webkittestrunner:
- * Scripts/generate-coverage-data:
- * Scripts/old-run-webkit-tests:
- * Scripts/run-api-tests:
- * Scripts/run-iexploder-tests:
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-mangleme-tests:
- * Scripts/run-sunspider:
- * Scripts/run-webkit-websocketserver:
- * Scripts/sunspider-compare-results:
- * Scripts/test-webkitperl:
- * Scripts/test-webkitpy:
- * Scripts/update-iexploder-cssproperties:
- * Scripts/update-webkit:
- * Scripts/update-webkit-localizable-strings:
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/config/committervalidator.py:
- * Scripts/webkitpy/common/config/committervalidator_unittest.py:
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- * Scripts/webkitpy/common/system/ospath_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * WebKitTestRunner/DerivedSources.pro:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * wx/build/build_utils.py:
-
-2010-12-16 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- Settings::editingBehaviorType() incorrectly returns mac for the gtk build when running tests
- https://bugs.webkit.org/show_bug.cgi?id=51163
-
- Since GTK+'s default editing behavior was changed to UNIX in r70975 (see webkitwebsettings.cpp),
- GTK+'s DRT should also reset to UNIX after each test execution.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-12-17 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style should understand WTF #include guards
- https://bugs.webkit.org/show_bug.cgi?id=44911
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (get_header_guard_cpp_variable): modify to suggest the WTF style
- of header guard when appropriate.
- (check_for_header_guard): handle multiple return values from
- get_header_guard_cpp_variable
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTest.test_build_header_guard): Added tests for the WTF
- header style.
-
-2010-12-16 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- test-webkitpy: unittest for the xml.py checker displays a decprecation warning.
- https://bugs.webkit.org/show_bug.cgi?id=51210
-
- The error only shows up when using python 2.6 or later.
-
- * Scripts/webkitpy/style/checkers/xml.py: Replace the usage of
- the decprecated field error,message with something equivalent.
-
-2010-12-16 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add --exit-after-n-failures/crashes to NRWT
- https://bugs.webkit.org/show_bug.cgi?id=51160
-
- Abort test run (in a similar way to how control-C is handled) when
- --exit-after-n-failures/crashes-or-timeouts are passed and we've reached
- that number of unexpected failures/crashes/timeouts.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-16 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style unit tests has some duplicate boilerplate code.
- https://bugs.webkit.org/show_bug.cgi?id=49519
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (update_include_state): Replaced the "io" parameter with the global
- configuration _unit_test_config. This allowed not calling into
- functions at a low level and also not plumbing through the injection
- information through many levels of code.
- (check_for_include_what_you_use): Ditto.
- (process_file_data): Added the ability to set up the unit test config
- to allow for injection.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (ErrorCollector.__init__): Added support for having a filter for errors.
- (ErrorCollector.__call__): Ditto.
- (CppStyleTestBase.process_file_data): Added the ability to set unit_test_config.
- (CppStyleTestBase.perform_lint): Consolidated logic for the perform functions.
- (CppStyleTestBase.perform_single_line_lint): Replace specific calls to
- functions in the cpp.py with generic processing and a filter that
- indicates what errors should be kept.
- (CppStyleTestBase.perform_multi_line_lint): Ditto.
- (CppStyleTestBase.perform_language_rules_check): Ditto.
- (CppStyleTestBase.perform_function_lengths_check): Ditto.
- (CppStyleTestBase.perform_pass_ptr_check): Ditto.
- (CppStyleTestBase.perform_include_what_you_use): Ditto.
- (CppStyleTest.test_multi_line_comments): Added another
- error message which applies to the test case.
- (CppStyleTest.test_spacing_for_binary_ops): Fixed test
- to not have config.h, since it is processed as a header file.
- (CppStyleTest.test_static_or_global_stlstrings): Fixed variable name
- style and indentation in checked code.
- (OrderOfIncludesTest.test_check_preprocessor_in_include_section):
- Fixed line number.
- (NoNonVirtualDestructorsTest.test_multi_line_declaration_with_error):
- Ditto.
-
-2010-12-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r74136.
- http://trac.webkit.org/changeset/74136
- https://bugs.webkit.org/show_bug.cgi?id=51135
-
- r74136 breaks chromium canary bots because some tests are not
- rebaselined correctly to resolve EOL differences (Requested by
- jianli on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-12-15 Adam Roben <aroben@apple.com>
-
- Teach check-webkit-style to check .vcproj and .vsprops files for XML
- syntax errors
-
- Fixes <http://webkit.org/b/51103> check-webkit-style should check for
- XML syntax errors in .vcproj/.vsprops files
-
- Reviewed by Dave Levin.
-
- * Scripts/webkitpy/style/checker.py: Added lists of file extensions
- that should be treated as XML and that should be allowed to contain
- carriage returns. (These lists happen to be identical currently.)
- (FileType): Added a new XML type.
- (CheckerDispatcher.should_check_and_strip_carriage_returns): Added.
- Just does a simple file extension check.
- (CheckerDispatcher._file_type): Added a case for XML files.
- (CheckerDispatcher._create_checker): Ditto. We use XMLChecker for XML
- files (surprise!).
- (StyleProcessor.process): Ask the dispatcher whether we should pass the
- lines through the carriage checker.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherCarriageReturnTest.test_should_check_and_strip_carriage_returns):
- Added. Checks a few file names to see if carriage returns are allowed
- or not.
- (CheckerDispatcherDispatchTest.assert_checker_xml): Added. Similar to
- other assert_checker_* functions.
- (CheckerDispatcherDispatchTest.test_xml_paths): Added. Similar to other
- test_*_paths functions.
- (CheckerDispatcherDispatchTest.test_xml_paths): Added. Similar to other
- test_*_paths functions.
- (CheckerDispatcherDispatchTest.test_none_paths): Removed the vcproj
- file from this test case, as vcproj files now have a type.
- (StyleProcessor_CodeCoverageTest.MockDispatcher.should_check_and_strip_carriage_returns):
- Added. Similar to the other should_* functions.
- (StyleProcessor_CodeCoverageTest.test_process__carriage_returns_not_stripped):
- Added. Checks that carriage returns aren't checked for or stripped for
- allowed files.
-
- * Scripts/webkitpy/style/checkers/xml.py: Added.
- (XMLChecker.__init__): Simple init method.
- (XMLChecker.check): Pass each line through the expat parser, and record
- a style error for any errors thrown by the parser.
-
- * Scripts/webkitpy/style/checkers/xml_unittest.py: Added.
- (XMLCheckerTest.assert_no_error): Checks that the given XML does not
- produce a style error.
- (XMLCheckerTest.assert_error): Checks that the given XML produces an
- error of the given category on the given line.
- (XMLCheckerTest.mock_handle_style_error): Does nothing. Used for
- checking that the XMLChecker constructor works properly.
- (XMLCheckerTest.test_conflict_marker): Tests that conflict markers
- cause a style error (see, e.g., r73887).
- (XMLCheckerTest.test_extra_closing_tag): Tests that extra closing tags
- cause a style error (see, e.g., r73773).
- (XMLCheckerTest.test_init): Tests that the XMLChecker constructor works
- properly.
- (XMLCheckerTest.test_missing_closing_tag): Tests that missing closing
- tags cause a style error (see, e.g., r72795).
- (XMLCheckerTest.test_no_error): Tests that valid XML does not cause a
- style error.
-
-2010-12-15 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- https://bugs.webkit.org/show_bug.cgi?id=51117
- Add a new leopard test bot
- really really commit to trunk this time.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-12-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2: Can't add files to an <input type=file>
- https://bugs.webkit.org/show_bug.cgi?id=51087
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (runOpenPanel):
- (-[BrowserWindowController awakeFromNib]):
- Add simple implementation of runOpenPanel callback.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
- Stub out runOpenPanel callback.
-
-2010-12-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should upload failure diffs when tests flake
- https://bugs.webkit.org/show_bug.cgi?id=51051
-
- To make this testable I needed to pipe FileSystem down onto tool.
- We've wanted it there for a long time anyway.
-
- This patch is kinda a big hack. But we don't have a nice
- way to read results.html files. I think this will need further
- revision before this code actually feels clean.
-
- As part of testing this change, I had to make MockBugzilla.create_bug
- actually return an id (like it should) which required updating
- a few other unit test results (for the better).
-
- The results_matching_keys change in layouttestresults/rebasline
- was an alternate path which I decided not to use in the end, but
- I left the change as it seemed an improvement.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-15 Cosmin Truta <ctruta@chromium.org>
-
- Reviewed by James Robinson.
-
- new-run-webkit-tests ignores trailing EOL differences in text tests
- https://bugs.webkit.org/show_bug.cgi?id=36983
-
- Changed the handling of new-line characters within new-run-webkit-tests
- to match old-run-webkit-tests. Differences in leading and trailing empty
- lines in text expectation files are no longer ignored.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- Added unit tests. Removed old duplicate unit test entries.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-12-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- make status-bubble white-space:nowrap so we can measure it's width without wrapping
- https://bugs.webkit.org/show_bug.cgi?id=51149
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-12-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- have the statusbubble postMessage it's metrics so that embedders can properly size the iframe
- https://bugs.webkit.org/show_bug.cgi?id=51125
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-12-15 Darin Adler <darin@apple.com>
-
- * Scripts/webkitpy/common/net/buildbot: Added property svn:ignore.
-
-2010-12-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r74117.
- http://trac.webkit.org/changeset/74117
- https://bugs.webkit.org/show_bug.cgi?id=51113
-
- This broke the GTK1 build. (Requested by mrobinson on
- #webkit).
-
- * Scripts/webkitdirs.pm:
-
-2010-12-15 Amruth Raj <amruthraj@motorola.com> and Ravi Kasibhatla <ravi.kasibhatla@motorola.com>
-
- Reviewed by Martin Robinson.
-
- Change generate-forwarding-headers.pl for GTK port usage
- (https://bugs.webkit.org/show_bug.cgi?id=37369)
-
- * Scripts/webkitdirs.pm: Added changes to build webkit2 for GTK port using build-webkit script.
-
-2010-12-14 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Jian Li.
-
- [DRT/Chromium] Remove another unnecessary error message
- https://bugs.webkit.org/show_bug.cgi?id=51083
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didInvalidateRect):
-
-2010-12-14 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Add a new Leopard Debug Test WK2 Bot
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-12-14 Ojan Vafai <ojan@chromium.org>
-
- Fix python unittests after http://trac.webkit.org/changeset/74070.
-
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2010-12-14 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Jian Li.
-
- [DRT/Chromium] Remove a unnecessary error message
- https://bugs.webkit.org/show_bug.cgi?id=51069
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2010-12-14 Benjamin Kalman <kalman@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Using BUG/BUGWK in test_expectations is error prone, should use BUGCR/BUGWK
- https://bugs.webkit.org/show_bug.cgi?id=48926
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- Add presubmit check that BUG isn't used, either BUGCR/BUGWK/BUGV8_.
-
-2010-12-14 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] [Symbian] Do not use pkg-config on Symbian as it is not supported
- https://bugs.webkit.org/show_bug.cgi?id=50231
-
- Guard CONFIG+=link_pkgconfig with !symbian.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2010-12-14 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Ojan Vafai.
-
- [new-run-webkit-tests] expectations parsing is slow
- https://bugs.webkit.org/show_bug.cgi?id=50635
-
- Avoid expensive iteration of all the tests when checking if a test
- file is to be skipped or not.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2010-12-14 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Gtk] Implement STATE_FOCUSED, STATE_FOCUSABLE, and corresponding events for text objects
- https://bugs.webkit.org/show_bug.cgi?id=27048
-
- Add support in DRT for checking whether an accessibility UI
- element is focusable and/or focused. Implemented for GTK.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsFocusedCallback): New.
- (getIsFocusableCallback): New.
- (AccessibilityUIElement::getJSClass): Add the new available
- callbacks for isFocused and isFocusable.
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isFocused): New, implemented by checking
- whether the related AtkState value is in the object's state set.
- (AccessibilityUIElement::isFocusable): Ditto.
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isFocused): New, dummy implementation.
- (AccessibilityUIElement::isFocusable): Ditto.
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isFocused): Ditto.
- (AccessibilityUIElement::isFocusable): Ditto.
-
-2010-12-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- webkit-patch should warn users when they're using a 32-bit git on a 64-bit system
- https://bugs.webkit.org/show_bug.cgi?id=50715
-
- This patch makes webkit-patch print the following:
-
- Warning: This machine is 64-bit, but the git binary (/usr/local/git/bin/git) does not support 64-bit.
- Install a 64-bit git for better performance, see:
- https://lists.webkit.org/pipermail/webkit-dev/2010-December/015249.html
-
- I wrote this mostly because I have approximately 8 machines that I use
- and making sure each one is using a good Git install seemed folly.
- webkit-patch makes a lot of git calls, so using a fast git can shave
- several seconds in every invocation. See the webkit-dev thread for more info.
-
- This message will print twice during 'webkit-patch upload',
- once from webkit-patch and once from check-webkit-style.
-
- Unfortunately there is no good way to test this due to how machine-dependent
- the code is. I considered writing a test for the log message, but it seemed not worth it.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-12-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- FlakyTestReporter doesn't understand bots running from multiple email addresses
- https://bugs.webkit.org/show_bug.cgi?id=50960
-
- This explains at least one of the dupes of:
- https://bugs.webkit.org/show_bug.cgi?id=50863
- that we saw filed by the commit-queue this morning.
- I think the other one was explained by my previous fix to result counting code.
-
- Since this is really hard to test with a unit test, instead I
- create a new (possibly useful in the future) command
- which given a layout test path will return you
- the one bug which our tools would assume it the flaky test bug.
- If some other script wants to use bug-for-test we'll
- need to extend it with some options like --create-if-missing or similar.
-
- * Scripts/webkitpy/common/net/bugzilla/bug.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/bugfortest.py: Added.
-
-2010-12-13 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by James Robinson.
-
- Add option to build-webkit to not build WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=50988
-
- Add support for a --no-webkit2 option to build-webkit. It seems to save
- ~1 minute from clean builds and ~10 seconds from no-op builds.
-
- * Scripts/build-webkit:
-
-2010-12-13 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Dave Kilzer.
-
- Update iexploder from 1.3.2 to 1.7.2
- Move 1.3.2 into its own subdir
- Add 1.7.2 into its own subdir
- update scripts to point to new 1.3.2 location (avoid breaking existing scripts)
-
- * Scripts/run-iexploder-tests:
- * Scripts/update-iexploder-cssproperties:
- * iExploder/CHANGELOG.txt: Removed.
- * iExploder/LICENSE.txt: Removed.
- * iExploder/README.txt: Removed.
- * iExploder/htdocs: Removed.
- * iExploder/iexploder-1.3.2: Added.
- * iExploder/iexploder-1.3.2/CHANGELOG.txt: Copied from iExploder/CHANGELOG.txt.
- * iExploder/iexploder-1.3.2/LICENSE.txt: Copied from iExploder/LICENSE.txt.
- * iExploder/iexploder-1.3.2/README.txt: Copied from iExploder/README.txt.
- * iExploder/iexploder-1.3.2/htdocs: Added.
- * iExploder/iexploder-1.3.2/htdocs/config.rb: Copied from iExploder/htdocs/config.rb.
- * iExploder/iexploder-1.3.2/htdocs/cssproperties.in: Copied from iExploder/htdocs/cssproperties.in.
- * iExploder/iexploder-1.3.2/htdocs/cssvalues.in: Copied from iExploder/htdocs/cssvalues.in.
- * iExploder/iexploder-1.3.2/htdocs/htmlattrs.in: Copied from iExploder/htdocs/htmlattrs.in.
- * iExploder/iexploder-1.3.2/htdocs/htmltags.in: Copied from iExploder/htdocs/htmltags.in.
- * iExploder/iexploder-1.3.2/htdocs/htmlvalues.in: Copied from iExploder/htdocs/htmlvalues.in.
- * iExploder/iexploder-1.3.2/htdocs/iexploder.cgi: Copied from iExploder/htdocs/iexploder.cgi.
- * iExploder/iexploder-1.3.2/htdocs/iexploder.rb: Copied from iExploder/htdocs/iexploder.rb.
- * iExploder/iexploder-1.3.2/htdocs/index.html: Copied from iExploder/htdocs/index.html.
- * iExploder/iexploder-1.3.2/htdocs/webserver.rb: Copied from iExploder/htdocs/webserver.rb.
- * iExploder/iexploder-1.3.2/tools: Added.
- * iExploder/iexploder-1.3.2/tools/lasthit.rb: Copied from iExploder/tools/lasthit.rb.
- * iExploder/iexploder-1.3.2/tools/osx_last_crash.rb: Copied from iExploder/tools/osx_last_crash.rb.
- * iExploder/iexploder-1.3.2/tools/showtest.rb: Copied from iExploder/tools/showtest.rb.
- * iExploder/iexploder-1.7.2: Added.
- * iExploder/iexploder-1.7.2/ChangeLog.txt: Added.
- * iExploder/iexploder-1.7.2/LICENSE.txt: Added.
- * iExploder/iexploder-1.7.2/README.txt: Added.
- * iExploder/iexploder-1.7.2/output: Added.
- * iExploder/iexploder-1.7.2/src: Added.
- * iExploder/iexploder-1.7.2/src/browser_harness.rb: Added.
- * iExploder/iexploder-1.7.2/src/config.yaml: Added.
- * iExploder/iexploder-1.7.2/src/css-atrules: Added.
- * iExploder/iexploder-1.7.2/src/css-atrules/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/css-atrules/webkit: Added.
- * iExploder/iexploder-1.7.2/src/css-properties: Added.
- * iExploder/iexploder-1.7.2/src/css-properties/dillo: Added.
- * iExploder/iexploder-1.7.2/src/css-properties/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/css-properties/internet_explorer6: Added.
- * iExploder/iexploder-1.7.2/src/css-properties/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/css-properties/webkit: Added.
- * iExploder/iexploder-1.7.2/src/css-pseudo: Added.
- * iExploder/iexploder-1.7.2/src/css-pseudo/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/css-pseudo/webkit: Added.
- * iExploder/iexploder-1.7.2/src/css-values: Added.
- * iExploder/iexploder-1.7.2/src/css-values/dillo: Added.
- * iExploder/iexploder-1.7.2/src/css-values/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/css-values/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/css-values/other: Added.
- * iExploder/iexploder-1.7.2/src/css-values/webkit: Added.
- * iExploder/iexploder-1.7.2/src/headers: Added.
- * iExploder/iexploder-1.7.2/src/headers/dillo: Added.
- * iExploder/iexploder-1.7.2/src/headers/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/headers/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/headers/webkit: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/dillo: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/internet_explorer6: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/other: Added.
- * iExploder/iexploder-1.7.2/src/html-attrs/webkit: Added.
- * iExploder/iexploder-1.7.2/src/html-tags: Added.
- * iExploder/iexploder-1.7.2/src/html-tags/dillo: Added.
- * iExploder/iexploder-1.7.2/src/html-tags/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/html-tags/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/html-tags/other: Added.
- * iExploder/iexploder-1.7.2/src/html-tags/webkit: Added.
- * iExploder/iexploder-1.7.2/src/html-values: Added.
- * iExploder/iexploder-1.7.2/src/html-values/dillo: Added.
- * iExploder/iexploder-1.7.2/src/html-values/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/html-values/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/html-values/other: Added.
- * iExploder/iexploder-1.7.2/src/html-values/webkit: Added.
- * iExploder/iexploder-1.7.2/src/iexploder.cgi: Added.
- * iExploder/iexploder-1.7.2/src/iexploder.rb: Added.
- * iExploder/iexploder-1.7.2/src/index.html: Added.
- * iExploder/iexploder-1.7.2/src/media: Added.
- * iExploder/iexploder-1.7.2/src/media/blank.ogg: Added.
- * iExploder/iexploder-1.7.2/src/media/blank.snd: Added.
- * iExploder/iexploder-1.7.2/src/media/blank.wav: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.bmp: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.gif: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.ico: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.jng: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.jpg: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.png: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.svg: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.tiff: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.xbm: Added.
- * iExploder/iexploder-1.7.2/src/media/bug.xpm: Added.
- * iExploder/iexploder-1.7.2/src/mime-types: Added.
- * iExploder/iexploder-1.7.2/src/mime-types/dillo: Added.
- * iExploder/iexploder-1.7.2/src/mime-types/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/mime-types/webkit: Added.
- * iExploder/iexploder-1.7.2/src/protocols: Added.
- * iExploder/iexploder-1.7.2/src/protocols/dillo: Added.
- * iExploder/iexploder-1.7.2/src/protocols/gtkhtml: Added.
- * iExploder/iexploder-1.7.2/src/protocols/mozilla: Added.
- * iExploder/iexploder-1.7.2/src/protocols/webkit: Added.
- * iExploder/iexploder-1.7.2/src/scanner.rb: Added.
- * iExploder/iexploder-1.7.2/src/version.rb: Added.
- * iExploder/iexploder-1.7.2/src/webserver.rb: Added.
- * iExploder/iexploder-1.7.2/testcases: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-Opera-9.80_Linux_x86_64_en_Presto-2.6.30_Version-10.61-16704-3_108,3.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_Chrome-7.0.529.0-TEST-611-3_36,9.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-120813-8_72,56,24,8,0.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-121240-3_81,3.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html: Added.
- * iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html: Added.
- * iExploder/iexploder-1.7.2/tools: Added.
- * iExploder/iexploder-1.7.2/tools/lasthit.rb: Added.
- * iExploder/iexploder-1.7.2/tools/osx_last_crash.rb: Added.
- * iExploder/iexploder-1.7.2/tools/release_src.sh: Added.
- * iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh: Added.
- * iExploder/tools: Removed.
-
-2010-12-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Remove associated page concept from WKView constructor
- https://bugs.webkit.org/show_bug.cgi?id=50983
-
- Step 1: Remove associate page constructors from WKView and make
- all views use the shared namespace for the context.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
-
-2010-12-13 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Change the WebKit2 public API so there is no explicit WKPageNamespace object
- https://bugs.webkit.org/show_bug.cgi?id=50898
-
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- * MiniBrowser/win/BrowserView.cpp:
- Convert MiniBrowser to not use PageNamespaces.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp:
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/Find.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp:
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp:
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- Convert TestWebKitAPI to not use PageNamespaces.
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- Convert WebKitTestRunner to not use PageNamespaces.
-
-2010-12-13 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- webkit-patch rollout should be able to do multi-revision rollouts
- https://bugs.webkit.org/show_bug.cgi?id=33336
-
- Make it possible to pass more than one revision to webkit-patch.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/revertrevision.py:
-
-2010-12-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Teach webkit-patch how to search bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=50500
-
- webkit-patch bug-search fails when there is only one result.
- Turns out we needed a bit more logic in our result count parsing code.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
-
-2010-12-13 Antti Koivisto <antti@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Add setSerializeHTTPLoads function to allow testing resource load order on OS X.
- https://bugs.webkit.org/show_bug.cgi?id=50758
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setSerializeHTTPLoadsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSerializeHTTPLoads):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setSerializeHTTPLoads):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setSerializeHTTPLoads):
-
-2010-12-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Remove "use-drt" option from test step command line, since the option was removed in r73748.
- https://bugs.webkit.org/show_bug.cgi?id=50936
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Removed the option.
-
-2010-12-13 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Add revlink to BuildBot status
- https://bugs.webkit.org/show_bug.cgi?id=50914
-
- This adds a hyperlink to trac changeset on the revision numbers.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-12-13 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] Fix build if WebKitTools are not available
- https://bugs.webkit.org/show_bug.cgi?id=50242
-
- * MiniBrowser/qt/MiniBrowser.pro: Correct the comment.
- * Scripts/webkitdirs.pm: Added WebKitTools/MiniBrowser to $subdirs.
- * MiniBrowser/DerivedSources.pro: Added.
-
-2010-12-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS Queues should remove orpahned pyc files before starting
- https://bugs.webkit.org/show_bug.cgi?id=50904
-
- A previous check added a platform.py which caused
- EWS bots on some platforms to hit an import exception.
- The platform.py file was removed in a subsequent commit, but
- the EWS bots in question stayed stuck. This change will
- fix those bots once restarted (and prevent this in the future).
-
- I also went ahead and unified start-queue and start-commit-queue
- since they were nearly identical. I also added bot_id support
- to both force all EWSes to have bot ids as well as get rid of the one
- remaining reason why I had my own copies of these scripts.
- Hopefully this will be enough to get all the other bot admins
- (ahem, Adam, ahem) to move to using these checked in copies as well.
-
- * EWSTools/start-commit-queue.sh: Removed.
- * EWSTools/start-queue.sh:
-
-2010-10-28 MORITA Hajime <morrita@google.com>
-
- Reviewed by Ojan Vafai.
-
- spellcheck does not check pasted text
- https://bugs.webkit.org/show_bug.cgi?id=40092
-
- Added LayoutTestController::setAsynchronousSpellCheckingEnabled()
- to control the setting.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAsynchronousSpellCheckingEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
-
-2010-12-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix failing API test. It turns out that a pop-state event
- is sent before every fragment navigation, so we have to test
- for it in addition in PageLoadDidChangeLocationWithinPageForFrame.
-
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- (TestWebKitAPI::didSameDocumentNavigationForFrame):
-
-2010-12-12 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] Add new-run-webkit-tests support to gtk
- https://bugs.webkit.org/show_bug.cgi?id=50681
-
- Adding the basic support to run the new-run-webkit-tests.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2010-10-11 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Mock DeviceOrientation client for DRT
- https://bugs.webkit.org/show_bug.cgi?id=47490
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockDeviceOrientation):
-
-2010-12-11 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] launcher: disable the Mozilla-style fullscreen API
- https://bugs.webkit.org/show_bug.cgi?id=50874
-
- Disabling the fullscreen API until its implementation for GTK is
- mature enough. The webview setting for it is already FALSE by
- default.
-
- * GtkLauncher/main.c:
- (createWindow):
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue flaky test messages show cryptic version information for mac os x
- https://bugs.webkit.org/show_bug.cgi?id=50864
-
- Turns out platform.platform() returns kernel version information
- which isn't helpful, and just plain confusing on Mac
- (OS X 10.6.5 uses Darwin Kernel 10.5.0).
-
- So I've updated PlatformInfo.display_name() to special case
- mac. I also found a bad use of sys.platform in the process
- and fixed that. (sys.platform always returns 'darwin' on mac).
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Exception seen while reporting flaky test with commit-queue.
- Just a missing include.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
-
-2010-12-10 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [Chromium] Remove old JSONResultsGenerator script that existed for backward-compatibility
- https://bugs.webkit.org/show_bug.cgi?id=50796
-
- Also updating the test code to use JSONResultsGeneratorBase and
- to improve test coverage for incremental cases.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2010-12-10 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Darin Adler.
-
- prepare-ChangeLog --help doesn't mention --bug shorthand -b
- https://bugs.webkit.org/show_bug.cgi?id=50835
-
- * Scripts/prepare-ChangeLog: be more explicit about -b and match file style.
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Bugs created by the commit-queue should all block on a master bug
- https://bugs.webkit.org/show_bug.cgi?id=50857
-
- This makes all bugs created by the commit-queue block on:
- https://bugs.webkit.org/show_bug.cgi?id=50856
-
- In the process of testing this, I found that the existing
- create_bug code was wrong. I also found that existing
- unit tests for create-rollout used invalid values
- for options.blocks. I fixed both issues and tested.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach webkitpy how to follow duplicate chains when posting comments on flake bugs
- https://bugs.webkit.org/show_bug.cgi?id=50853
-
- I also discovered when doing this that the code was posting
- the comment on the wrong bug, but that's fixed here too.
-
- * Scripts/webkitpy/common/net/bugzilla/bug.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-10 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- Make WKContextGetStatistics gather global statistics
- https://bugs.webkit.org/show_bug.cgi?id=50850
-
- Remove the code that gets the statistics and fills in the per context
- statistics information for now.
-
- * MiniBrowser/mac/BrowserStatisticsWindowController.m:
- (-[BrowserStatisticsWindowController refreshStatistics:]):
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- commit-queue should report port/platform information when commenting on flaky test bugs
- https://bugs.webkit.org/show_bug.cgi?id=50839
-
- Renamed platform.py to platforminfo.py. This broke import platform in executive.py
- which was only used by new run webkit tests (and clearly not unit tested).
-
- * Scripts/webkitpy/common/system/platforminfo.py: Renamed from WebKitTools/Scripts/webkitpy/common/system/platform.py.
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tony Chang.
-
- commit-queue should report port/platform information when commenting on flaky test bugs
- https://bugs.webkit.org/show_bug.cgi?id=50839
-
- This was a suggestion from Tony Chang this morning.
- I added a platform.py class so I could easily mock the platform call,
- but that may not be the final solution for this mocking.
- We'll try it and see.
-
- * Scripts/webkitpy/common/system/platform.py: Added.
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-10 Krithigassree Sambamurthy <krithigassree.sambamurthy@nokia.com>
-
- Reviewed by Joseph Pecoraro.
-
- Bug 43455 - [Qt]: Implement Application Cache Quotas
- https://bugs.webkit.org/show_bug.cgi?id=43455
-
- Introduce functions to allow new appcache layout test origin-quota.html
- to work correctly under Qt.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::dumpApplicationCacheQuota):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
- Introduce functions to allow new appcache layout test origin-quota.html
- to be successful under qt. Changes required because LayoutTestControllerQt
- does not inherit from LayoutController.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::shouldDumpApplicationCacheDelegateCallbacks):
- (LayoutTestController::dumpApplicationCacheDelegateCallbacks):
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move buildbot.py into its own module so we can split it out into one-file-per-class
- https://bugs.webkit.org/show_bug.cgi?id=50806
-
- We're adding more buildbot logic these days, so it makes sense
- to give buildbot its own module.
-
- * Scripts/webkitpy/common/net/buildbot/__init__.py: Added.
- * Scripts/webkitpy/common/net/buildbot/buildbot.py: Renamed from WebKitTools/Scripts/webkitpy/common/net/buildbot.py.
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py: Renamed from WebKitTools/Scripts/webkitpy/common/net/buildbot_unittest.py.
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/regressionwindow.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2010-12-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Use FileSystem::remove when cleaning up http lock files
- https://bugs.webkit.org/show_bug.cgi?id=50830
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-12-10 Joone Hur <joone@kldp.org>
-
- Reviewed by Martin Robinson.
-
- [GTK] DRT needs layoutTestController.setCacheModel
- https://bugs.webkit.org/show_bug.cgi?id=50705
-
- webkit_set_cache_mode() is called to set the cache model.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCacheModel): Set the cache model.
-
-2010-12-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] remove --use-drt and add --use-test-shell
- https://bugs.webkit.org/show_bug.cgi?id=50701
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-12-10 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Steve Block.
-
- [Chromium] Implement mocks for client-based geolocation
- https://bugs.webkit.org/show_bug.cgi?id=46895
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::geolocationClient):
- (WebViewHost::geolocationClientMock):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-12-10 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add hasSpellingMarker support to the DRT
- https://bugs.webkit.org/show_bug.cgi?id=50739
-
- Implemented the hasSpellingMarker to support spelling tests.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::hasSpellingMarker):
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- webkit-patch: not possible to use build-and-test with local commits
- https://bugs.webkit.org/show_bug.cgi?id=33378
-
- Make --no-clean not even check if we have local commits.
- It's unclear to me why the code was originally written this way.
- I was unable to dig up a reason from svn history.
-
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py: Copied from WebKitTools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py.
-
-2010-12-10 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] AX: implement isEnabled in DRT
- https://bugs.webkit.org/show_bug.cgi?id=50814
-
- Implement AccessibilityUIElement::isEnabled() for GTK.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (checkElementState): New function to refactor common code.
- (AccessibilityUIElement::isEnabled): Implement this by checking
- the current state of the AtkObject.
- (AccessibilityUIElement::isSelected): Use the new
- checkElementState function.
-
-2010-12-10 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt][WK2] Add the QWKContext API class to wrap the WebContext.
- https://bugs.webkit.org/show_bug.cgi?id=50750
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView):
- * MiniBrowser/qt/BrowserView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::WebView):
-
-2010-12-10 Joone Hur <joone@kldp.org>
-
- Reviewed by Xan Lopez.
-
- [GTK] Unskipping some test cases in userscripts dependent on addUserStyleSheet
- https://bugs.webkit.org/show_bug.cgi?id=50808
-
- Unskipping the following test cases:
- userscripts/mixed-case-stylesheet.html
- userscripts/simple-stylesheet.html
- userscripts/user-style-all-frames.html
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::addUserStyleSheet):
-
-2010-12-10 Joone Hur <joone@kldp.org>
-
- Reviewed by Eric Seidel.
-
- [GTK] Add DRT support for pageProperty, isPageBoxVisible, pageSizeAndMarginsInPixels, and addUserStyleSheet
- https://bugs.webkit.org/show_bug.cgi?id=50783
-
- This patch allows to unskip the following test cases:
- printing/page-rule-selection.html
- printing/page-format-data.html
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pageProperty): Added.
- (LayoutTestController::isPageBoxVisible): Ditto.
- (LayoutTestController::pageSizeAndMarginsInPixels): Ditto.
- (LayoutTestController::addUserStyleSheet): Ditto.
-
-2010-12-10 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Make QtTestBrowser spawn QNAM in a secondary thread.
-
- A menu allows to switch QNAM back to the same thread.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleThreadedQnam):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::setQnamThreaded):
- * QtTestBrowser/webpage.h:
- (QnamThread::QnamThread):
- (QnamThread::~QnamThread):
- (QnamThread::networkAccessManager):
- (QnamThread::run):
-
-2010-12-10 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Gtk] style="font-family: courier" makes text disappear
- https://bugs.webkit.org/show_bug.cgi?id=47452
-
- Add a test that verifies that fonts without valid charmaps are
- never selected.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Initialize DRT with our font (derived from Ahem)
- that has no valid charmap.
- * DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon: Added.
- * DumpRenderTree/gtk/fonts/fonts.conf: Updated settings to override users'
- settings which may disable selection of bitmap fonts.
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- The commit-queue should file bugs about flaky tests it encounters
- https://bugs.webkit.org/show_bug.cgi?id=50803
-
- create_bug_for_flaky_test was insufficiently tested, thus buggy.
- Now it's tested.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
-
-2010-12-10 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Somehow this last-minute edit didn't quite get committed.
-
- The commit-queue should file bugs about flaky tests it encounters
- https://bugs.webkit.org/show_bug.cgi?id=50803
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
-
-2010-12-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- The commit-queue should file bugs about flaky tests it encounters
- https://bugs.webkit.org/show_bug.cgi?id=50803
-
- This change got a bit big. I also added a new config.urls file
- because I needed to share the view_source_url code with committervalidator.py.
-
- This adds a new class FlakyTestReporter which holds all the logic about
- reporting flaky tests to bugzilla.
-
- Right now this code knows how to look up bugs for flaky tests.
- If it can't find a bug filed from the commit-queue, it will open a new
- one, ccing the relevant people and adding information about the failure.
-
- It is not yet smart enough to chase down duplicate chains, or to include
- the actual failure diff. But those can be added in later iterations.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- * Scripts/webkitpy/common/config/committervalidator.py:
- * Scripts/webkitpy/common/config/urls.py: Copied from WebKitTools/Scripts/webkitpy/tool/comments.py.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py: Added.
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py: Copied from WebKitTools/Scripts/webkitpy/tool/comments.py.
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/comments.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2010-12-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach webkit-patch how to search bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=50500
-
- This is a step towards teaching webkitpy how to file
- new bugs for flaky tests and update them when new flakes occur.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/bugsearch.py: Added.
-
-2010-12-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- commit-queue errors out due to local commits
- https://bugs.webkit.org/show_bug.cgi?id=50766
-
- We seem to be tripping over having local commits in the working copy a
- lot recently. I don't quite fully understand what the issue is, but
- this patch attempts to solve the problem by adding an explicit clean
- step before processing a patch. Previously, we did the cleaning as
- part of the apply-attachment step, so this might not actually fix the
- problem.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-12-09 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Make new-run-webkit-tests --lint-test-files log slightly better
- messages and return -1 if lint fails. Remove the
- 'suppress_errors' keyword param to the TestExpectationsFile
- class, and clean up logging and exception raising for error
- handling. Also add more unit tests and clean up the unit test code a bit.
-
- https://bugs.webkit.org/show_bug.cgi?id=50205
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2010-12-09 Tony Chang <tony@chromium.org>
-
- Unreviewed, fix for windows code. We were catching the wrong
- exception in Windows.
-
- * Scripts/webkitpy/common/system/filesystem.py:
-
-2010-12-09 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Populate DumpRenderTreeSupportGtk (part IV)
- https://bugs.webkit.org/show_bug.cgi?id=48429
-
- Adjust call sites of webkit_thread_count to use the DumpRenderTreeSupportGtk version now.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::workerThreadCount):
-
-2010-12-06 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Support the Mozilla-style Fullscreen Javascript API
- https://bugs.webkit.org/show_bug.cgi?id=50572
-
- Enable the Javascript Fullscreen support in the GtkLauncher. Also
- make DRT update the Chrome when the WebView settings have been
- reset to consistent values.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * GtkLauncher/main.c:
- (create_window):
- * Scripts/build-webkit:
-
-2010-12-09 Koan-Sin Tan <koansin.tan@gmail.com>
-
- Reviewed by Tor Arne Vestbø
-
- [Qt] run-launcher doesn't start the browser on Mac OS X 10.6
- https://bugs.webkit.org/show_bug.cgi?id=50742
-
- check not only QtWebKit.framework/QtWebKit but also libQtWebKit.dylib
-
- * Scripts/webkitdirs.pm:
-
-2010-12-09 Joone Hur <joone@kldp.org>
-
- Reviewed by Martin Robinson.
-
- [GTK] Support for viewport meta tag
- https://bugs.webkit.org/show_bug.cgi?id=45443
-
- Add support for testing the viewport properties for WebKitGtk.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (dumpConfigurationForViewportCallback): Added this JS callback to set the size of the visible viewport.
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::dumpConfigurationForViewport): Added this function to test the viewport properties.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::dumpConfigurationForViewport): Ditto.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::dumpConfigurationForViewport): Ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::dumpConfigurationForViewport): Ditto.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::dumpConfigurationForViewport): Ditto.
-
-2010-12-08 William Siegrist <wsiegrist@apple.com>
-
- Reviewed by Eric Seidel.
-
- Migrate buildbot.py from xmlrpc to json.
- https://bugs.webkit.org/show_bug.cgi?id=50647
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-12-08 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- make starting the websocket server more reliable on windows
- https://bugs.webkit.org/show_bug.cgi?id=50712
-
- * Scripts/webkitpy/common/system/filesystem.py:
- (remove): Substitute method for os.remove to retry on error on Windows
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py: Use FileSystem.remove
-
-2010-12-08 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2: Implement WebChromeClient::exceededDatabaseQuota
- https://bugs.webkit.org/show_bug.cgi?id=50656
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- Indicate that exceededDatabaseQuota is not implemented.
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- Ditto.
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- Ditto.
- (WTR::TestController::initialize):
- Ditto.
-
-2010-12-08 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Populate DumpRenderTreeSupportGtk (part III)
- https://bugs.webkit.org/show_bug.cgi?id=48429
-
- Moved the following methods from webkitprivate.h to DumpRenderTreeSupportGtk.cpp|h:
- * webkit_gc_collect_javascript_objects;
- * webkit_gc_collect_javascript_objects_on_alternate_thread;
- * webkit_gc_count_javascript_objects;
- * webkit_web_frame_layout.
-
- These were all only used by GTK+ DRT.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (dispatchEvent):
- * DumpRenderTree/gtk/GCControllerGtk.cpp:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
-
-2010-12-07 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] force NRWT to use DRT
- https://bugs.webkit.org/show_bug.cgi?id=50359
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-12-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Generalize didChangeLocationWithinPageForFrame for all same document navigations
- https://bugs.webkit.org/show_bug.cgi?id=50584
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didSameDocumentNavigationForFrame):
- (-[BrowserWindowController awakeFromNib]):
- (-[BrowserWindowController didSameDocumentNavigationForFrame:]):
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- (TestWebKitAPI::didSameDocumentNavigationForFrame):
- (TestWebKitAPI::TEST):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didSameDocumentNavigationForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-12-06 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Make TestResultsServer return 404 for non-existing results files.
- https://bugs.webkit.org/show_bug.cgi?id=50581
-
- * TestResultServer/handlers/testfilehandler.py:
-
-2010-12-06 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] fix an assert hit in DRT
- https://bugs.webkit.org/show_bug.cgi?id=50575
-
- This class uses WTF's RefPtr, but expects chrome's base::RefPtr
- semantics.
-
- Otherwise, we hit ASSERTION FAILED: !m_adoptionIsRequired
- (third_party/WebKit/JavaScriptCore/wtf/RefCounted.h:37 void
- WTF::RefCountedBase::ref()).
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::TestWebWorker):
-
-2010-12-02 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- make webkit-patch command work when the git branch is not synced to the remote svn branch
- https://bugs.webkit.org/show_bug.cgi?id=50424
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-12-06 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [WINCE] Add build system
- https://bugs.webkit.org/show_bug.cgi?id=50522
-
- * CMakeListsWinCE.txt: Added.
-
-2010-12-03 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Allow the Chromium port to have Leopard-specific baselines
- https://bugs.webkit.org/show_bug.cgi?id=50506
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2010-12-03 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] fix 2 bugs with inspector tests in DRT
- https://bugs.webkit.org/show_bug.cgi?id=50492
-
- Tasks can outlive the tasklist (even when canceled) so this was
- causing a crash when ~WebTask() ran. Avoid this by unregistering
- when a task is canceled.
-
- Also fix an assert when closing devtool windows by copying some
- logic from test_shell.
-
- * DumpRenderTree/chromium/Task.cpp:
- (WebTask::~WebTask):
- (TaskList::revokeAll):
- * DumpRenderTree/chromium/Task.h: Canceling a task now removes it from
- the tasklist (since the task can outlive the tasklist).
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::devToolsWebView):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::~WebViewHost): Don't load about:blank when closing
- a window if the window has devtools loaded. This avoids an
- ASSERT and matches test_shell.
-
-2010-12-06 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Fix GtkLauncher.c style, use webkit style
- https://bugs.webkit.org/show_bug.cgi?id=50542
-
- * GtkLauncher/main.c:
- (activateUriEntryCb):
- (updateTitle):
- (linkHoverCb):
- (notifyTitleCb):
- (notifyLoadStatusCb):
- (notifyProgressCb):
- (destroyCb):
- (goBackCb):
- (goForwardCb):
- (create_webViewCb):
- (webViewReadyCb):
- (closeWebViewCb):
- (createBrowser):
- (createStatusbar):
- (createToolbar):
- (createWindow):
- (main):
-
-2010-12-04 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Populate DumpRenderTreeSupportGtk (Part II)
- https://bugs.webkit.org/show_bug.cgi?id=48429
-
- Moved more private method declared with WEBKIT_API to
- DumpRenderTreeSupportGtk, since they were only being used by DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- (LayoutTestController::execCommand):
- (LayoutTestController::isCommandEnabled):
-
-2010-12-04 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Andreas Kling.
-
- Removed extern webkit_web_view_set_group_name from gtk/DumpRenderTree.cpp
-
- Method was removed by http://trac.webkit.org/changeset/71604
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
-
-2010-12-05 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Fix compilation warnings reported by clang
- https://bugs.webkit.org/show_bug.cgi?id=50252
-
- * GtkLauncher/main.c:
- (create_window): The create_statusbar function does not have
- parameters.
-
-2010-12-05 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Zero-sized font does not yet work
-
- Fix fast/text/font-size-zero.html
-
- Copy other ports by setting minimumFontSize to 0 for DRT runs.
-
- https://bugs.webkit.org/show_bug.cgi?id=49759
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
-
-2010-12-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Jon Honeycutt.
-
- WebKit2: Need client functions to notify app when the url changes due to a fragment navigation
- https://bugs.webkit.org/show_bug.cgi?id=50511
-
- Update tools for new didChangeLocationWithinPageForFrame client function (and changed bundle
- signature) and added a test for the functionality (PageLoadDidChangeLocationWithinPageForFrame.cpp)
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didChangeLocationWithinPageForFrame):
- (-[BrowserWindowController awakeFromNib]):
- (-[BrowserWindowController didChangeLocationWithinPageForFrame:]):
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::toWK):
- * TestWebKitAPI/PlatformUtilities.h:
- (TestWebKitAPI::Util::adoptWK):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp: Added.
- (TestWebKitAPI::nullJavaScriptCallback):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::didChangeLocationWithinPageForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/file-with-anchor.html: Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didChangeLocationWithinPageForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-11-08 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Populate DumpRenderTreeSupportGtk
- https://bugs.webkit.org/show_bug.cgi?id=48429
-
- Made the previous calls to webkit_web_frame* functions defined as private
- APIs in webkitprivate.h go through DRTSupportGtk.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::focusedElement):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (resetDefaultsToConsistentValues):
- (dump):
- (webViewDocumentLoadFinished):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::counterValueForElementById):
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- (LayoutTestController::markerTextForListItem):
-
-2010-12-03 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: use pretty text diff output
- https://bugs.webkit.org/show_bug.cgi?id=50484
-
- Serve *-pretty-diff.html for text diff output.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r73302.
- http://trac.webkit.org/changeset/73302
- https://bugs.webkit.org/show_bug.cgi?id=50499
-
- Causes crashes in debug LayoutTests (Requested by xan_ on
- #webkit).
-
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::parentElementCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- * DumpRenderTree/chromium/CppBoundClass.h:
-
-2010-12-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Enable <a ping> for Mac/Windows/WebKit2 builds
- <rdar://problem/8504473>
- https://bugs.webkit.org/show_bug.cgi?id=50488
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST): Test that the default value of
- WKPreferencesGetHyperlinkAuditingEnabled is true.
-
-2010-12-03 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Chris Fleizach.
-
- Include the FrameView widget of a RenderWidget in the accessibility tree.
- https://bugs.webkit.org/show_bug.cgi?id=49106
-
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::parentElementCallback):
- (AccessibilityUIElement::isEqualCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- (CppBoundClass::getFromCppVariant):
- * DumpRenderTree/chromium/CppBoundClass.h:
-
-2010-12-03 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: organize tests by state, add dry run mode
- https://bugs.webkit.org/show_bug.cgi?id=50473
-
- Group tests in the menu by state, so that it's easier to see after
- processing the queue which failed.
-
- Add support for the --dry-run flag so that it's easier to test changes
- such as this (stubs out filesystem and SCM operations).
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-12-03 Brady Eidson <beidson@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Groundwork for <rdar://problem/7660733> and https://bugs.webkit.org/show_bug.cgi?id=50191
- WebKit2 Authentication Support
-
- Keep these builds working:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-12-02 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: move existing baselines
- https://bugs.webkit.org/show_bug.cgi?id=50421
-
- Implement moving of existing baselines: move all files that are about
- to be overwriten by update baselines.
-
- Also fix a typo in the UI JS.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
-
-2010-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r73211.
- http://trac.webkit.org/changeset/73211
- https://bugs.webkit.org/show_bug.cgi?id=50450
-
- Broke Chromium's "Webkit Win (dbg)(2)" bot. (Requested by
- yutak on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
-
-2010-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r73222.
- http://trac.webkit.org/changeset/73222
- https://bugs.webkit.org/show_bug.cgi?id=50449
-
- r73211 seemed to break Chromium's "Webkit Win (dbg)(2)" bot.
- (Requested by yutak on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r73228.
- http://trac.webkit.org/changeset/73228
- https://bugs.webkit.org/show_bug.cgi?id=50448
-
- r73211 seemed to break Chromium's "Webkit Win (dbg)(2)" bot.
- (Requested by yutak on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r73231.
- http://trac.webkit.org/changeset/73231
- https://bugs.webkit.org/show_bug.cgi?id=50443
-
- r73211 seemed to broke Chromium's "Webkit Win (dbg)(2)" bot.
- (Requested by yutak on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-03 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style: false positive reported for #if macro
- https://bugs.webkit.org/show_bug.cgi?id=48242
-
- * Scripts/webkitpy/style/checkers/cpp.py: Adjusted check to avoid
- all preprocessor commands.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added test.
-
-2010-12-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Update the EWSTools scripts to use modern-style git repos
- https://bugs.webkit.org/show_bug.cgi?id=50402
-
- * EWSTools/create-webkit-git:
- * EWSTools/start-commit-queue.sh:
- * EWSTools/start-queue.sh:
-
-2010-12-02 Simon Fraser <simon.fraser@apple.com>
-
- Fix Chromium Linux plugin tests by not logging
- unconditionally from the event handling code.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventX11):
-
-2010-12-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt multiprocessing - move logic back into run_webkit_tests
-
- This change moves a bunch of logic that I had put into
- message_broker back into run_webkit_tests, in a slightly
- different format. WorkerMessageBroker needed to become less aware of
- the logic the TestRunner class uses, and more generic.
- Eventually the MessageBroker will only do generic messaging and
- thread/process-pooling, and (almost) all of the
- run-webkit-tests-specific logic will be moved to
- run_webkit_tests.py and dump_render_tree_thread.py.
-
- The biggest changes are that the Broker can now start a single
- worker, but the responsibility for starting all of them is pushed
- back to the TestRunner (Manager), and the logic for checking if
- the threads are done or wedged is moved back to TestRunner. We
- also remove WorkerMessageBroker.cleanup (not needed) and
- cancel_workers (they have to be cancelled individually).
-
- The message_broker is now encapsulated inside
- TestRunner._run_tests(); it only needs to exist while actually
- running the tests.
-
- Also, delete a bunch of tests in message_broker_unittest that no
- longer make much sense.
-
- This patch depends on bug 50372.
-
- https://bugs.webkit.org/show_bug.cgi?id=50374
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-02 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Refactor test_types's compare_output() method so that it takes a
- TestInput object.
-
- compare_output() will need additional information included in a TestInput
- object to support reftests. This change is a pre-requirement of that.
-
- https://bugs.webkit.org/show_bug.cgi?id=50362
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-12-02 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Add the ability to run script on 'new' and 'paint' in the test plugin
- https://bugs.webkit.org/show_bug.cgi?id=50425
-
- Add "onnew" and "onpaintevent" attributes to the test plugin,
- so that tests can run JS at these times.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (NPP_Destroy):
- (handleEventCarbon):
- (handleEventCocoa):
- (NPP_HandleEvent):
-
-2010-12-02 Sam Weinig <sam@webkit.org>
-
- Fix Qt build.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2010-12-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2 Preferences should be held off the PageGroup, not the Context
- https://bugs.webkit.org/show_bug.cgi?id=50414
-
- Update for API changes.
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2010-12-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: minor cleanup for multiprocessing work
-
- This change:
- * moves worker naming into TestShellThread, eliminating a
- parameter to the constructor and putting the responsibility in
- the correct place.
- * eliminates the _WorkerState() class in message_broker, because
- it turns out that state really needs to be in run_webkit_tests
- * renames the Broker classes to be module-private.
- * fixes a bunch of minor commenting and whitespace issues to
- make subsequent patches a bit clearer.
- * Adds a Port hook for default_worker_model() so that we can
- accomodate the potential for different worker models on
- different ports.
- * merge in the fix from 50420 for the brokenness introduced in
- bug 50367.
-
- This patch depends on bug 50367.
-
- https://bugs.webkit.org/show_bug.cgi?id=50372
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This change is a bunch of cleanup / refactoring of the file
- below. It moves a bunch of free functions to methods on the
- TestShellThread class, and restructures other methods to be
- closer to the structure we'll need for the multiprocessing
- rewrite.
-
- It also makes the logic of --run-singly a *lot* easier to follow
- by nestling all of the separate-thread logic into a single
- routine.
-
- There should be no semantic changes in this patch, just cleanup.
-
- https://bugs.webkit.org/show_bug.cgi?id=50367
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
-
-2010-12-02 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r73164.
- http://trac.webkit.org/changeset/73164
- https://bugs.webkit.org/show_bug.cgi?id=50359
-
- broke debugger tests on win
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-30 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: add updating of baselines
- https://bugs.webkit.org/show_bug.cgi?id=50305
-
- Implements updating of baselines, where we copy -actual.* files over
- the current -expected.* files. To do this, we need a
- _get_actual_result_files method to get test results files and a
- _rebaseline_test method to actually do the file copy and SCM operation.
- _rebaseline_test logs output into a buffer, this is useful for both
- showing result in the UI and for unit tests.
-
- To make passing around of the various test environment properties
- (results directory, filesystem, SCM, etc) easier, add a TestConfig
- class for them.
-
- Moving of existing baselines is not implemented yet, this patch is big
- enough as it is.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-12-02 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build fix after vcproj updates.
-
- * DumpRenderTree/win/DumpRenderTreeCairo.vsprops: Make sure
- that WIN_CAIRO is defined for this build.
- * DumpRenderTree/win/DumpRenderTreePreBuild.cmd: Update file
- to reflect new 'Debug_Cairo_CFLite' and 'Release_Cairo_CFLite'
- (these were previously 'Debug_Cairo' and 'Release_Cairo'
-
-2010-12-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2 needs API to turn on popup blocking
- https://bugs.webkit.org/show_bug.cgi?id=50407
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2010-12-01 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] force NRWT to use DRT
- https://bugs.webkit.org/show_bug.cgi?id=50359
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-12-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] DumpRenderTree has two copies of JavaScriptCore
- https://bugs.webkit.org/show_bug.cgi?id=49877
-
- * GNUmakefile.am: Remove the second copy of JavaScriptCore from the
- LDADD list for DumpRenderTree.
-
-2010-12-02 Sergio Villar Senin <svillar@igalia.com>
-
- Unreviewed: Added myself to list of Committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-12-01 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- build-webkit --chromium always updates DEPS and re-generates project files
- https://bugs.webkit.org/show_bug.cgi?id=50340
-
- Make build-webkit --chromium invoke update-webkit-chromium only when
- --update-chromium is passed in, so that we don't add 20 seconds to all
- builds.
-
- Making all invocations update was added with r61883, with the goal of
- making EWS bots always update. The bots will switch to using this flag
- (as will all other webkit-patch build steps) so nothing should change
- for them.
-
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2010-12-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add a --dry-run / -n flag
- https://bugs.webkit.org/show_bug.cgi?id=50045
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-12-01 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- WinCairo build should not use link-time code generation (LTCG)
- https://bugs.webkit.org/show_bug.cgi?id=50353
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * FindSafari/FindSafari.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * record-memory-win/record-memory-win.vcproj:
-
-2010-12-01 Martin Robinson <mrobinson@igalia.com>
-
- Touch GetUserAgentWithNullNPPFromNPPNew.cpp in an effort to force
- a rebuild of TestNetscapePlugin.la on GTK+. It seems that simply
- adding the file to the sources list was not enough to force the rebuild.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp:
- Remove an empty line at the end of this file to force a rebuild.
-
-2010-12-01 Sam Weinig <sam@webkit.org>
-
- Fix windows build.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2010-12-01 Martin Robinson <mrobinson@igalia.com>
-
- Add missing file to the TestNetscapePlugin sources list after r73057.
-
- * GNUmakefile.am: Add missing file.
-
-2010-12-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add PageGrouping to WebKit2 API
- https://bugs.webkit.org/show_bug.cgi?id=50332
-
- - Update testing harnesses to deal with new PageGroup API.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (WKBundleInitialize):
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::initialize):
- (TestWebKitAPI::InjectedBundleController::didInitializePageGroup):
- (TestWebKitAPI::InjectedBundleController::initializeTestNamed):
- * TestWebKitAPI/InjectedBundleController.h:
- * TestWebKitAPI/InjectedBundleTest.h:
- (TestWebKitAPI::InjectedBundleTest::initialize):
- (TestWebKitAPI::InjectedBundleTest::didInitializePageGroup):
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::createContextForInjectedBundleTest):
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp:
- (TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::initialize):
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didInitializePageGroup):
- (WTR::InjectedBundle::initialize):
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::pageGroup):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::addUserScript):
- (WTR::LayoutTestController::addUserStyleSheet):
- (WTR::LayoutTestController::setXSSAuditorEnabled):
- * WebKitTestRunner/TestController.cpp:
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2010-12-01 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- vcproj changes can't be applied cleanly by the Windows EWS bot
- https://bugs.webkit.org/show_bug.cgi?id=50328
-
- * CLWrapper/CLWrapper.sln: Modified property svn:eol-style.
- * CLWrapper/CLWrapper.vcproj: Modified property svn:eol-style.
- * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTree.vcproj: Modified property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeApple.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeCFLite.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeCairo.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiff.vcproj: Modified property svn:eol-style.
- * DumpRenderTree/win/ImageDiffCommon.vsprops: Added property svn:eol-style.
- * FindSafari/FindSafari.vcproj: Modified property svn:eol-style.
- * FindSafari/FindSafariCommon.vsprops: Added property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.vcproj: Modified property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserCFLite.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops: Added property svn:eol-style.
- * MiniBrowser/MiniBrowser.vcproj: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/win/TestWebKitAPI.sln: Added property svn:eol-style.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added property svn:eol-style.
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: Added property svn:eol-style.
- * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops: Added property svn:eol-style.
- * WebKitAPITest/WebKitAPITest.vcproj: Added property svn:eol-style.
- * WebKitAPITest/WebKitAPITestCommon.vsprops: Added property svn:eol-style.
- * WebKitLauncherWin/WebKitLauncherWin.vcproj: Modified property svn:eol-style.
- * WebKitLauncherWin/WebKitLauncherWinCommon.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/WebKitTestRunner.sln: Added property svn:eol-style.
- * WebKitTestRunner/win/InjectedBundle.vcproj: Added property svn:eol-style.
- * WebKitTestRunner/win/InjectedBundleGenerated.vcproj: Added property svn:eol-style.
- * WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Added property svn:eol-style.
- * WinLauncher/WinLauncher.vcproj: Modified property svn:eol-style.
- * WinLauncher/WinLauncherCommon.vsprops: Added property svn:eol-style.
- * record-memory-win/record-memory-win-common.vsprops: Added property svn:eol-style.
- * record-memory-win/record-memory-win.vcproj: Modified property svn:eol-style.
-
-2010-12-01 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Darin Adler.
-
- Return a correct user agent if NPN_UserAgent is called with a null NPP from NPP_New.
- https://bugs.webkit.org/show_bug.cgi?id=50336
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add new test.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_New):
- Add default implementation/
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp: Added.
- (GetUserAgentWithNullNPPFromNPPNew::GetUserAgentWithNullNPPFromNPPNew):
- (GetUserAgentWithNullNPPFromNPPNew::NPP_New):
- Get the user agent.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- Call PluginTest::NPP_New.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- Add new files.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- Call PluginTest::NPP_New.
-
-2010-12-01 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fixes after recent trunk changes.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::findString):
- * wx/build/settings.py:
-
-2010-12-01 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.findString
- https://bugs.webkit.org/show_bug.cgi?id=50238
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added findString().
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::findString): Updated signature for autogenerated bindings.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Ditto.
-
-2010-12-01 Steve Falkenburg <sfalken@apple.com>
-
- Try using svn:eol-style native on a vcproj file.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Modified property svn:eol-style.
-
-2010-12-01 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Roben.
-
- [WINCE] Add WinCELauncher
- https://bugs.webkit.org/show_bug.cgi?id=50217
-
- * WinCELauncher/main.cpp: Added.
-
-2010-11-30 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement layoutTestController.findString
- https://bugs.webkit.org/show_bug.cgi?id=50236
-
- Add the missing function to the LayoutTestController.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::findString):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-11-30 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- [chromium] fix get-int-identifier-special-values.html using TestNetscapePlugIn
- https://bugs.webkit.org/show_bug.cgi?id=49036
-
- * DumpRenderTree/chromium/LayoutTestController.cpp: Use IsNumber instead of IsInt32
- for CppVariants.
- (LayoutTestController::cppVariantToBool):
- (LayoutTestController::cppVariantToInt32):
- (LayoutTestController::setDatabaseQuota):
- (LayoutTestController::evaluateInWebInspector):
- (LayoutTestController::setMockGeolocationError):
-
-2010-11-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tony Chang.
-
- update-webkit should call git fetch before git svn rebase
- https://bugs.webkit.org/show_bug.cgi?id=50273
-
- After discussion on webkit-dev, we've decided to move the "default"
- git setup to pulling updates from git.webkit.org in preference
- to rebuilding the local svn index using git svn fetch every time.
-
- This change should have no effect on people using the "old" git setup
- and should dramatically increase the speed of updates for those using
- the "new" git setup along with update-webkit. I'm about to move the
- EWS and other queues over to this setup once this lands.
-
- * Scripts/update-webkit:
-
-2010-11-30 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- GTK: AX: implement press in DRT
- https://bugs.webkit.org/show_bug.cgi?id=36146
-
- Implement AccessibilityUIElement::press() for GTK.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::press): Implemented.
-
-2010-11-29 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- config.webkit_base_dir returns a path with a trailing slash
- https://bugs.webkit.org/show_bug.cgi?id=50197
-
- config.webkit_base_dir() should return a path without a trailing slash,
- like all the other methods that return paths.
-
- Undoes MockFileSytem changes by r72640, since they're no longer
- necessary for GetBaselinesTest to pass.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2010-11-30 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: baseline display tweaks
- https://bugs.webkit.org/show_bug.cgi?id=50207
-
- Determine which baselines were used when running the tests and highlight
- them in the UI. Sort platform names alphabetically.
-
- Also makes the server URL be launched in the user's browser
- automatically.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
-
-2010-11-30 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson.
-
- <rdar://problem/8710645> WebKitTestRunner needs layoutTestController.findString
- https://bugs.webkit.org/show_bug.cgi?id=50238
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::findString): Added.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2010-11-30 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- All projects on Windows should use cmd files for build events
- https://bugs.webkit.org/show_bug.cgi?id=50213
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPostBuild.cmd: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginPreBuild.cmd: Added.
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops:
- * DumpRenderTree/win/DumpRenderTreePostBuild.cmd: Added.
- * DumpRenderTree/win/DumpRenderTreePreBuild.cmd: Added.
- * DumpRenderTree/win/ImageDiffCommon.vsprops:
- * DumpRenderTree/win/ImageDiffPostBuild.cmd: Added.
- * DumpRenderTree/win/ImageDiffPreBuild.cmd: Added.
- * MiniBrowser/Configurations/MiniBrowserCFLite.vsprops:
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops:
- * MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops:
- * MiniBrowser/MiniBrowserPostBuild.cmd: Added.
- * MiniBrowser/MiniBrowserPreBuild.cmd: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd: Added.
- * TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd: Added.
- * WebKitAPITest/WebKitAPITestCommon.vsprops:
- * WebKitAPITest/WebKitAPITestPostBuild.cmd: Added.
- * WebKitAPITest/WebKitAPITestPreBuild.cmd: Added.
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops:
- * WebKitTestRunner/win/InjectedBundlePostBuild.cmd: Added.
- * WebKitTestRunner/win/InjectedBundlePreBuild.cmd: Added.
- * WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd: Added.
- * WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd: Added.
- * WinLauncher/WinLauncherCommon.vsprops:
- * WinLauncher/WinLauncherPostBuild.cmd: Added.
- * WinLauncher/WinLauncherPreBuild.cmd: Added.
-
-2010-11-29 Dan Bernstein <mitz@apple.com>
-
- GTK DumpRenderTree build fix after r72887.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::findString):
-
-2010-11-29 Dan Bernstein <mitz@apple.com>
-
- Windows DumpRenderTree build fix after r72887.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::findString): Added empty implementation.
-
-2010-11-29 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- DumpRenderTree changes for testing the text search API.
- https://bugs.webkit.org/show_bug.cgi?id=50038
-
- * DumpRenderTree/LayoutTestController.cpp:
- (findStringCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::findString):
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController find:]):
-
-2010-11-29 Johnny Ding <jnd@chromium.org>
-
- Unreviewed: Add myself to the list of Committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-11-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adele Peterson.
-
- <rdar://problem/8694997> DumpRenderTree fails to build.
-
- * DumpRenderTree/mac/PerlSupport/Makefile: Skip generating wrappers.
-
-2010-11-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adele Peterson.
-
- <rdar://problem/8694997> DumpRenderTree fails to build.
-
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm: Renamed from WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportTiger.pm.
- * DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c: Renamed from WebKitTools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapTiger.c.
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2010-11-29 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Null-check needed in DRT's AccessibilityUIElement::allAtributes()
- https://bugs.webkit.org/show_bug.cgi?id=50154
-
- Added missing checks to allAttributes().
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::allAttributes): Added missing checks.
-
-2010-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Allow pre-generation for package builds for WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=50139
-
- Use a build variable for the generated directory path and set the
- value based on CONFIG just like for WebKit1.
-
- For non-package builds use a relative base path for the
- genrated directory just like for WebKit1.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2010-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Move some build logic from Qt to platform independent code
- https://bugs.webkit.org/show_bug.cgi?id=50134
-
- Create target directories inside generate-forwarding-headers.pl.
-
- * Scripts/generate-forwarding-headers.pl:
-
-2010-11-24 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- [GTK] Windowless plugins gets broken key input
- https://bugs.webkit.org/show_bug.cgi?id=49927
-
- Convert the XEvent::keycode to ASCII before printing it. Not
- doing this was causing false positive in
- plugins/keyboard-events.html.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (keycode_to_char):
- (webkit_test_plugin_handle_event):
-
-2010-11-24 Jan Erik Hanssen <jhanssen@sencha.com>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Html autofocus not working with QGraphicsWebView
- https://bugs.webkit.org/show_bug.cgi?id=43169
-
- Tell the scene to set the webview item as the currently
- focused item. This makes the input field with autofocus get
- focus as it should.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
-
-2010-11-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt - clean up create_driver interface and print out the
- command line used for DumpRenderTree/TestShell.
-
- This patch adds a driver_cmd_line() call to the Port class in
- order to retrive the command line to print it out (as part of
- --print config).
-
- In addition, this patch cleans up the Port.create_driver()
- signature and the Driver constructor interface to take a worker
- number and no longer require the image_path argument (Chromium's
- drivers now synthesize the image_path from the worker number
- internally).
-
- https://bugs.webkit.org/show_bug.cgi?id=49934
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-24 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] improve memory usage for test results server and store fewer runs
- https://bugs.webkit.org/show_bug.cgi?id=50035
-
- Store fewer runs and don't pass full files around when we only need bools.
- Greatly improves error rates on test-results.appspot.com.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * TestResultServer/handlers/testfilehandler.py:
- * TestResultServer/model/dashboardfile.py:
- * TestResultServer/model/jsonresults.py:
-
-2010-11-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This patch implements the first part of the manager side of the
- Broker objects - it handles creating threads, waiting for them
- to complete, and running a single-threaded loop as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=49779
-
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-24 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by David Levin.
-
- DRT should not generate pixel output for text/plain tests
- https://bugs.webkit.org/show_bug.cgi?id=50002
-
- Modify Mac, Windows and GTK DRT implementations to disable pixel output
- when encountering a text/plain response (the Chromium one already does
- this, and none of the other ports special-case text/plain output in
- the first place).
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
-
-2010-11-24 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Unreviewed.
-
- Add my other email address to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-11-24 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- Make build-webkit --minimal build with ENABLE_INSPECTOR=0
- https://bugs.webkit.org/show_bug.cgi?id=49975
-
- * Scripts/build-webkit: Add ENABLE_INSPECTOR define to features,
- to enable the script to define it 0 in case of a minimal build.
-
-2010-11-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] The WebKitWebView should expose a set of signals encapsulating the behavior of the EditorClient
- https://bugs.webkit.org/show_bug.cgi?id=49143
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView): Call the new connectEditingCallbacks function.
- * DumpRenderTree/gtk/EditingCallbacks.cpp: Added.
- (dumpNodePath):
- (dumpRange):
- (insertActionString):
- (selectionAffinityString):
- (shouldBeginEditing):
- (shouldEndEditing):
- (shouldInsertNode):
- (shouldInsertText):
- (shouldDeleteRange):
- (shouldShowDeleteInterfaceForElement):
- (shouldChangeSelectedRange):
- (shouldApplyStyle):
- (editingBegan):
- (userChangedContents):
- (editingEnded):
- (selectionChanged):
- (connectEditingCallbacks):
- * DumpRenderTree/gtk/EditingCallbacks.h: Added.
- * GNUmakefile.am: Added EditingCallbacks.{h,cpp} to the source list.
-
-2010-11-24 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Make QtTestBrowser remember the selected user agent
- https://bugs.webkit.org/show_bug.cgi?id=50021
-
- Set user agent for a new page by using the old page's
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::setPage):
-
-2010-11-24 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Remove Bakefile build system files
- https://bugs.webkit.org/show_bug.cgi?id=49983
-
- r53757 only removed the content, but not the files.
- This patch removes that empty files.
-
- * DumpRenderTree/wx/DumpRenderTree.bkl: Removed.
- * wx/browser/browser.bkl: Removed.
- * wx/build-wxwebkit: Removed.
-
-2010-11-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This patch cleans up the logic used to shard tests into groups a
- bit and adds the --worker-model flag to NRWT. The flag is only
- used at the moment to control whether to run single-threaded or
- not, but eventually will also allow toggling between threads and
- processes.
-
- Also add a minor cleanup with _test_is_slow(), which just
- eliminates some repetition and gives slightly better encapsulation.
-
- https://bugs.webkit.org/show_bug.cgi?id=49773
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-23 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: list current baselines and platforms
- https://bugs.webkit.org/show_bug.cgi?id=49991
-
- List existing baselines (with Trac links) for tests.
-
- Add dropdowns for choosing with platform baselines to target (and what
- to do with existing ones).
-
- Also fix MockFileSystem.join to behave more like os.path.join (unit
- test was ending up with two consecutive slashes in a layout test
- path).
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py: Added.
-
-2010-11-23 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- remove timeout argument to urlopen
- https://bugs.webkit.org/show_bug.cgi?id=49995
-
- Apparently the version of python we have on the bots doesn't accept a timeout argument.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:
-
-2010-11-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r72628.
- http://trac.webkit.org/changeset/72628
- https://bugs.webkit.org/show_bug.cgi?id=49994
-
- This patch is causing layout-test failtures on GTK Linux
- 64-bit Debug (Requested by ctguil on #webkit).
-
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::parentElementCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- * DumpRenderTree/chromium/CppBoundClass.h:
-
-2010-11-22 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- speculative fix for upload errors: stop using mechanize to upload to test-results.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=49944
-
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:
-
-2010-11-23 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Include the FrameView widget of a RenderWidget in the accessibility tree.
- https://bugs.webkit.org/show_bug.cgi?id=49106
-
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::parentElementCallback):
- (AccessibilityUIElement::isEqualCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- (CppBoundClass::getFromCppVariant):
- * DumpRenderTree/chromium/CppBoundClass.h:
-
-2010-11-23 Alex Grilo <abgrilo@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Add tiled backing store to EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=45777
-
- Allow EWebLauncher to choose between single and tiled backing store
-
- * EWebLauncher/main.c:
- (on_key_down):
- (browserCreate):
- (main):
-
-2010-11-23 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Review the setUserPermission & friends API
- https://bugs.webkit.org/show_bug.cgi?id=46810
-
- Renamed requestPermissionFromUser to featurePermissionRequested
- and cancelRequestsForPermission to featurePermissionRequestCanceled.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::featurePermissionRequestCanceled):
- * QtTestBrowser/webpage.h:
-
-2010-11-23 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Review the setUserPermission & friends API
- https://bugs.webkit.org/show_bug.cgi?id=46810
-
- Rename setUserPermission to setFeaturePermission
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::requestPermission):
- (WebCore::WebPage::permissionSet):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::grantDesktopNotificationPermission):
- * QtTestBrowser/webpage.cpp:
- (WebPage::requestPermission):
-
-2010-11-23 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Review the setUserPermission & friends API
- https://bugs.webkit.org/show_bug.cgi?id=46810
-
- Rename PermissionDomain to Feature, NotificationsPermissionDomain to Notifications
- and GeolocationPermissionDomain to Geolocation.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::requestPermission):
- (WebCore::WebPage::cancelPermission):
- (WebCore::WebPage::permissionSet):
- (WebCore::DumpRenderTree::geolocationPermissionSet):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::grantDesktopNotificationPermission):
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::requestPermission):
- (WebPage::cancelRequestsForPermission):
- * QtTestBrowser/webpage.h:
-
-2010-11-23 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Review the setUserPermission & friends API
- https://bugs.webkit.org/show_bug.cgi?id=46810
-
- Add a ByUser suffix to PermissionGranted/Denied. In the future
- we can add PermissionGrantedByDefault.
-
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::requestPermission):
- (WebCore::WebPage::permissionSet):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::grantDesktopNotificationPermission):
- * QtTestBrowser/webpage.cpp:
- (WebPage::requestPermission):
-
-2010-11-18 Satish Sampath <satish@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- For speech input event, send an event object containing all the recognition results and metadata.
- https://bugs.webkit.org/show_bug.cgi?id=49736
-
- Updated DRT by renaming the mock result method on all platforms to the new signature.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (addMockSpeechInputResultCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::addMockSpeechInputResult):
-
-2010-11-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Fix some spacing issues with log messages with
- new-run-webkit-tests --verbose.
-
- https://bugs.webkit.org/show_bug.cgi?id=49936
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2010-11-22 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- update scm to work with different remote branches
- https://bugs.webkit.org/show_bug.cgi?id=49949
-
- This works if there are multiple svn tracking branches
- and/or if the tracking branch is refs/remots/origin/master
- instead of refs/remotes/trunk which is the direction we're trying
- to head since that makes fetches faster.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-11-22 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Ignore reference files which will be used by reftests when collecting
- test cases.
- https://bugs.webkit.org/show_bug.cgi?id=49835
-
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
-
-2010-11-22 Adam Roben <aroben@apple.com>
-
- Use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops files
-
- Apple's Windows build allows placing header files and import libraries for WebKit's
- dependencies (CoreGraphics, CFNetwork, SQLite, etc.) outside the source tree via the
- $WebKitLibrariesDir environment variable. This is both required for production builds and
- convenient for Apple-internal developer builds. Apple's production builds also require that
- WebKit's shared .vsprops files be accessed relative to $WebKitLibrariesDir. In production
- builds, the files are copied into that directory tree by the
- WebKitLibraries/win/tools/WinTools.make file. In Apple-internal developer builds, the
- copying is done by
- JavaScriptCore/JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make.
-
- This .vsprops copying is problematic in one very important case: when a developer updates
- their source tree and then tries to build. Visual Studio only reads .vsprops files when a
- project is first loaded. So, when Visual Studio is first opened after the .vsprops files are
- updated, it reads in the old files that were already residing in $WebKitLibrariesDir. When a
- build is started, JavaScriptCoreGenerated.make copies the new .vsprops files into
- $WebKitLibrariesDir, but Visual Studio will not pick up the changes. The rest of the build
- will proceed with out-of-date .vsprops files, which will likely result in a build failure.
-
- To fix this, we now use normal relative paths to access the .vsprops files in the source
- tree rather than in $WebKitLibrariesDir, but prefix those paths with a new environment
- variable, $WebKitVSPropsRedirectionDir. In developer builds, this environment variable is
- unset, so the normal relative paths are used to read the .vsprops files out of the source
- tree directly. In production builds, this environment variable is set to a fake directory
- that will cause the .vsprops files in $WebKitLibrariesDir to be found when the relative path
- is resolved.
-
- For example, JavaScriptCore.vcproj uses this path for FeatureDefines.vsprops:
-
- $(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
-
- In developer builds, where $WebKitVSPropsRedirectionDir is unset, this will point to the
- files in WebKitLibraries\win\tools\vsprops in the source tree. In production builds,
- JavaScriptCore.make sets $WebKitVSPropsRedirectionDir to
- "$(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\", so the full path for
- FeatureDefines.vsprops becomes:
-
- $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\1\2\3\..\..\..\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
-
- which resolves to:
-
- $(SRCROOT)\AppleInternal\tools\vsprops\OpenSource\WebKitLibraries\win\tools\vsprops\FeatureDefines.vsprops
-
- (We rely on the fact that Windows doesn't care whether the directories "1", "2", and "3"
- actually exist since they are matched by an equal number of ".." path components.)
-
- Note that Visual Studio still won't pick up changes made to .vsprops files while Visual
- Studio is open, but that problem hasn't seemed to cause developers many headaches so far.
-
- Fixes <http://webkit.org/b/49181> Windows build fails mysteriously when .vsprops files are
- updated
-
- Reviewed by Dave Hyatt.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * FindSafari/FindSafari.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * record-memory-win/record-memory-win.vcproj:
- Changed to use paths relative to $WebKitVSPropsRedirectionDir to access shared .vsprops
- files.
-
-2010-11-22 Adam Roben <aroben@apple.com>
-
- Make it possible to run tests on Windows without Visual Studio or VC++
- Express installed
-
- webkitdir.pm::setupCygwinEnv dies when Visual Studio and VC++ Express
- are not installed. But this function doesn't need to be called when we
- already have a build available and are just trying to run the tests.
-
- Fixes <http://webkit.org/b/49932> New Windows 7 bot can't run tests
- because Visual Studio/VC++ Express aren't installed
-
- Reviewed by Dave Hyatt.
-
- * Scripts/webkitdirs.pm:
- (determineConfigurationForVisualStudio): Don't call setupCygwinEnv, as
- it is not needed by this function. Also added a FIXME.
-
- (usingVisualStudioExpress): Call setupCygwinEnv directly rather than
- relying on determineConfigurationForVisualStudio doing it.
-
-2010-11-19 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Simplify Driver.run_test() so that it takes only one parameter, TestInput.
-
- https://bugs.webkit.org/show_bug.cgi?id=49812
-
- * Scripts/webkitpy/layout_tests/driver_test.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-22 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- [NRWT] Retry a few times in reading a png image to avoid a race condition.
-
- https://bugs.webkit.org/show_bug.cgi?id=49924
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-11-22 João Paulo Rechi Vita <jprvita@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix EWebLauncher zoom discretization
- https://bugs.webkit.org/show_bug.cgi?id=49810
-
- * EWebLauncher/main.c:
- (nearest_zoom_level_get):
- (zoom_level_set):
- (on_load_finished):
- (on_key_down):
-
-2010-11-21 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Dan Bernstein.
-
- Fix ~300 WebKit2 tests by enabling developer extras preference.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2010-11-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Textareas should be resizable by default
- https://bugs.webkit.org/show_bug.cgi?id=49892
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp: Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Add preferences test.
-
-2010-11-19 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: checksum-only differences and prefetching
- https://bugs.webkit.org/show_bug.cgi?id=49841
-
- Add support for image test results where the only difference is in the
- checksum.
-
- Add prefetching of the image results from the next test.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
-
-2010-11-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt multiprocessing - add 'worker number' concept, move stuff to worker thread
-
- Add the 'worker number' and 'worker name' concepts to the
- TestShellThread objects, and move test_types and test_args from
- the TestRunner to the TestShellThread.
-
- https://bugs.webkit.org/show_bug.cgi?id=49768
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Do some minor cleanup and bug fixing.
-
- https://bugs.webkit.org/show_bug.cgi?id=49777
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-19 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt - config.build_directory() is busted
-
- Fixes a typo that was causing us to usually return the top level
- directory WebKitBuild instead of WebKitBuild/{Debug,Release}. The
- bug was hidden by test stubs that were too simplistic :(.
-
- https://bugs.webkit.org/show_bug.cgi?id=49815
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2010-11-19 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Add Debug_Cairo_CFLite and Release_Cairo_CFLite configurations for all vcproj files
- https://bugs.webkit.org/show_bug.cgi?id=49819
-
- * DumpRenderTree/DumpRenderTree.sln:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * FindSafari/FindSafari.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.sln:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/InjectedBundleGenerated.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * record-memory-win/record-memory-win.vcproj:
-
-2010-11-19 Adam Roben <aroben@apple.com>
-
- Add some more Windows slaves
-
- This is probably more than we will be using in the immediate future,
- but having some extra slave names makes experimenting with different
- configurations easier.
-
- Reviewed by Jon Honeycutt.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Added 5 more
- Windows slaves and distributed them among the three different Test
- builders.
-
-2010-11-19 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [Chromium] REGRESSION: Record actual test results in the JSON result summary for non-layout tests
- https://bugs.webkit.org/show_bug.cgi?id=49702
-
- Re-landing r72357 with a test fix.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2010-11-19 Avi Drissman <avi@google.com>
-
- Reviewed by Antonio Gomes.
-
- Complete support for Unix editing mode
- https://bugs.webkit.org/show_bug.cgi?id=49757
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setEditingBehaviorCallback):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setEditingBehavior):
-
-2010-11-19 Adam Roben <aroben@apple.com>
-
- Fix run-javascriptcore-tests when there's a space in the path to
- testapi
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-javascriptcore-tests: Use an indirect object when calling
- system() to force it to interpret spaces in the path correctly.
-
-2010-11-19 Adam Roben <aroben@apple.com>
-
- Update scripts for .exe name changes after r72327
-
- As of r72327, the "_debug" suffix is only used in Debug_All builds.
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-javascriptcore-tests:
- (testapiPath):
-
- * Scripts/sunspider-compare-results:
- (pathToBuiltJSC):
-
- * Scripts/webkitdirs.pm:
- (jscPath):
- (safariPath):
-
-2010-11-19 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Darin Adler.
-
- Normalize Cairo/CFLite project/solution configuration names
- https://bugs.webkit.org/show_bug.cgi?id=49818
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.sln:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * Scripts/webkitdirs.pm: Updated cairo build configs.
-
-2010-11-18 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Windows vcproj configuration names should be normalized across projects
- https://bugs.webkit.org/show_bug.cgi?id=49776
-
- * DumpRenderTree/DumpRenderTree.sln:
- * FindSafari/FindSafari.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.sln:
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops: Added.
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitAPITest/WebKitAPITestCommon.vsprops:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitTestRunner/WebKitTestRunner.sln:
- * WebKitTestRunner/win/InjectedBundleGenerated.vcproj:
- * WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops: Added.
- * record-memory-win/record-memory-win.vcproj:
-
-2010-11-18 Gavin Barraclough <barraclough@apple.com>
-
- Build fix - as per DRT-mac, always enabled developer extras,
- in win/qt/gtk DRT.
-
- This is necessary to enable rich exception messages to be generated
- following https://bugs.webkit.org/show_bug.cgi?id=49708.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (shouldEnableDeveloperExtras):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::shouldEnableDeveloperExtras):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldEnableDeveloperExtras):
-
-2010-11-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r72357.
- http://trac.webkit.org/changeset/72357
- https://bugs.webkit.org/show_bug.cgi?id=49784
-
- It broke test-webkitpy tests since the patch didn't have the
- corresponding test update (Requested by kinuko on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-11-18 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: add rebaseline queue
- https://bugs.webkit.org/show_bug.cgi?id=49763
-
- Add a UI queue (a multi-item <select>) where tests to be baselined
- can be enqueued (also supports basic removal). A queue is used instead
- of immediately doing rebaselines since SCM operations can take a while.
- It's better to go through lots of tests quickly to mark them as
- needing rebaselining and then batch the SCM operations.
-
- Also adds a simple log where results can be displayed.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/queue.js: Added.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-11-18 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Bug 49708 - Stop recompiling functions to regenerate exception info.
-
- Instead only hold info as necessary – keep divot info is the inspector
- is enabled, line number info is debugging or profiling, and handler
- info for functions with try/catch.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (shouldEnableDeveloperExtras):
- - always enable the developer tools from DRT, to ensure we
- produce rich error messages on JavaScript exceptions.
-
-2010-11-18 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [Chromium] REGRESSION: Record actual test results in the JSON result summary for non-layout tests
- https://bugs.webkit.org/show_bug.cgi?id=49702
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-11-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: create first part of 'message_broker' class for multiprocessing fixes
-
- Create the first version of the 'message_broker' package. This
- class will encapsulate all of the threading/multiprocessing and
- message-sending details for the communication between the
- 'manager' object and the 'worker' objects. For the moment, it
- just holds some routines and tests for logging thread stacks.
-
- There should be no functional changes in this patch, just moving stuff
- around.
-
- https://bugs.webkit.org/show_bug.cgi?id=49707
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-18 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Remove leftover Windows Debug_Internal configurations
- https://bugs.webkit.org/show_bug.cgi?id=49758
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
-
-2010-11-18 Adam Roben <aroben@apple.com>
-
- Add three new Windows XP build slaves
-
- Reviewed by Steve Falkenburg.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Added three
- new slaves, and added them to the Windows XP Debug (Tests) builder.
-
-2010-11-18 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Roben.
-
- update-webkit-support-libs should fall back to existing
- WebKitSupportLibrary version if there is no internet connectivity
- https://bugs.webkit.org/show_bug.cgi?id=49503
-
- Fall back to existing support libraries (if present) when there is
- no internet connection.
-
- Currently, update-webkit-support-libs dies with an "out-of-date"
- error when there is no internet connection because it cannot
- retrieve versioning information from developer.apple.com. Because
- update-webkit-support-libs fails, build-webkit fails. Instead,
- if there is no internet connection and the support libraries are
- present then we should warn the user and exit() with success so
- that build-webkit can work without an internet connection.
-
- * Scripts/update-webkit-support-libs:
-
-2010-11-18 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Debug_Internal Windows configuration is unnecessary, should be removed
- https://bugs.webkit.org/show_bug.cgi?id=49753
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * MiniBrowser/win/stdafx.h:
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- * WebKitTestRunner/win/TestControllerWin.cpp:
-
-2010-11-18 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Clean up vcproj errors
- https://bugs.webkit.org/show_bug.cgi?id=49741
-
- * MiniBrowser/MiniBrowser.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2010-11-18 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [NRWT] Fix a break of '--new-baseline' feature in pixel_test
- which is caused by r72249.
-
- https://bugs.webkit.org/show_bug.cgi?id=49751
-
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
-
-2010-11-18 Adam Roben <aroben@apple.com>
-
- Implement layoutTestController.waitForPolicyDelegate on Windows
-
- Fixes <http://webkit.org/b/25038> <rdar://problem/6790213>.
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::waitForPolicyDelegate): Implemented by porting
- code from LayoutTestControllerMac.mm.
-
-2010-11-18 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [NRWT] Fix a break of '--new-baseline' feature which is caused by r72249.
-
- https://bugs.webkit.org/show_bug.cgi?id=49740
-
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-11-18 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- run platform/chromium/plugins/refcount-leaks.html on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=49485
-
- Add PluginObject.testObjectCount which returns the number of allocated
- TestObjects. Add PluginObject.testCreateTestObject which allocates
- and returns a TestObject.
-
- Add TestObject.refCount which returns the number of refs on the
- TestObject.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginGetProperty):
- (pluginInvoke):
- * DumpRenderTree/TestNetscapePlugIn/TestObject.cpp:
- (getTestObjectCount):
- (testAllocate):
- (testDeallocate):
- (testGetProperty):
- (testScriptObjectInvoke): Release a ref to a plugin object that was
- previously leaked.
- * DumpRenderTree/TestNetscapePlugIn/TestObject.h:
-
-2010-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKitTools projects (WebKitTestRunner, record-memory-win) should use vsprops for common build settings
- https://bugs.webkit.org/show_bug.cgi?id=49711
-
- * WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops: Added.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops: Added.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * record-memory-win/record-memory-win-common.vsprops: Added.
- * record-memory-win/record-memory-win.vcproj:
-
-2010-11-18 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] Only add user agent strings to the list which aren't listed yet.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateUserAgentList):
-
-2010-11-17 Adam Roben <aroben@apple.com>
-
- Don't trigger Windows builds when chromium-win test results change
-
- Reviewed by Mark Rowe.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Changed the regular expression used to
- search for directory names to only consider full directory names,
- rather than matching directory names where the string we care about is
- a suffix of the name.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): Added a test.
-
-2010-11-17 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Remove a uri member from TestInput class.
-
- https://bugs.webkit.org/show_bug.cgi?id=49691
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-17 Adam Roben <aroben@apple.com>
-
- Move FindSafari's settings into a vsprops file
-
- Fixes <http://webkit.org/b/49699> FindSafari should use a vsprops file
-
- Reviewed by Steve Falkenburg.
-
- * FindSafari/FindSafari.vcproj:
- * FindSafari/FindSafariCommon.vsprops: Added.
-
-2010-11-17 Adam Roben <aroben@apple.com>
-
- Use a minimum font size of 0 in DRT on Windows
-
- This is the Windows equivalent of r72164.
-
- Rubber-stamped by Dave Hyatt.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-11-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Andreas Kling.
-
- webkit-patch pretty-diff shouldn't need to be run from a checkout root in git
- https://bugs.webkit.org/show_bug.cgi?id=49639
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-11-17 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: add loupe for image diffs
- https://bugs.webkit.org/show_bug.cgi?id=49692
-
- Add a loupe (magnifiying glass) for inspecting image diffs. Shows an
- enlarged area of the expected, actual and diff images side by side.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/loupe.js: Added.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKitLauncherWin should use vsprops for shared build settings
- https://bugs.webkit.org/show_bug.cgi?id=49696
-
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitLauncherWin/WebKitLauncherWinCommon.vsprops: Added.
-
-2010-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- WinLauncher should use vsprops for shared build settings
- https://bugs.webkit.org/show_bug.cgi?id=49695
-
- * WinLauncher/WinLauncher.cpp:
- (_tWinMain):
- (PrintView):
- (WndProc):
- (MyEditProc):
- * WinLauncher/WinLauncher.vcproj:
- * WinLauncher/WinLauncherCommon.vsprops: Added.
-
-2010-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Delete unused file unintentionally added in last change.
-
- * DumpRenderTree/win/DumpRenderTreeCURL.vsprops: Removed.
-
-2010-11-17 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- DumpRenderTree on Windows should use a vsprops file for shared project settings
- https://bugs.webkit.org/show_bug.cgi?id=49690
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginCommon.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTreeApple.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeCFLite.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeCURL.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeCairo.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops: Added.
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/ImageDiffCommon.vsprops: Added.
-
-2010-11-17 Hayato Ito <hayato@chromium.org>
-
- Refactor TestTypeBase.compare_output().
-
- Introduce a TestOutput class and update compare_output() of each test
- types so that they can take both actual and expected TestOutput objects.
-
- https://bugs.webkit.org/show_bug.cgi?id=49431
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_output.py: Added.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-11-17 Adam Roben <aroben@apple.com>
-
- Make each Windows Test builder use the same OS for all its slaves
-
- Currently each WebKit1 Windows Test builder has one Windows XP slave
- and one Windows 7 slave. Having different OSes in a single builder
- meant that the builders would alternate between red and green when
- there were OS-specific failures.
-
- Fixes <http://webkit.org/b/49688> Windows Test builders alternate
- between red and green because of multiple OS versions
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Renamed
- "Windows Release (Tests)" to "Windows 7 Release (Tests)", "Windows
- Debug (Tests)" to "Windows XP Debug (Tests)", and "Windows Release
- (WebKit2 Tests)" to "Windows 7 Release (WebKit2 Tests)". Updated the
- builders for the two WebKit1 builders so that they would all use the
- appropriate OS.
-
-2010-11-17 James Robinson <jamesr@chromium.org>
-
- Reviewed by Dan Bernstein.
-
- [chromium] Set minimum font size to 0 for DRT
- https://bugs.webkit.org/show_bug.cgi?id=49677
-
- Followup for http://trac.webkit.org/changeset/72141.
-
- Test: http/tests/misc/acid3.html
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
-
-2010-11-17 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed build fix.
-
- [Qt] Add missing file I forgot in r72220.
-
- * MiniBrowser/MiniBrowser.qrc: Added.
-
-2010-11-17 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Make it possible to set custom user agent strings in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=49627
-
- Add a user agent dialog and a resource file for useragentlist.txt to MiniBrowser.
-
- * MiniBrowser/MiniBrowser.qrc: Added.
- Add it here to prevent qmake from detecting it
- since it needs to be copied to the build directory.
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::updateUserAgentList):
- (BrowserWindow::showUserAgentDialog):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2010-11-17 Adam Roben <aroben@apple.com>
-
- Make changes to the Mac WebKit2 Skipped file trigger Windows builds
-
- We use that file on Windows!
-
- Fixes <http://webkit.org/b/49643> Changes to
- LayoutTests/platform/mac-wk2 should trigger a Windows build, but don't
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Added the mac-wk2 directory and make it
- trigger builds on SnowLeopard and Windows.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest.test_should_build): Added a test.
-
-2010-11-17 Satish Sampath <satish@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Clear the speech input mock explicitly before each test.
- https://bugs.webkit.org/show_bug.cgi?id=49660
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechInputController):
- (WebViewHost::reset): Invoke speech input mock's clearResults method.
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::speechInputControllerMock): Moved mock from LayoutTestController.
-
-2010-11-17 Alexander Pavlov <apavlov@chromium.org>
-
- Unreviewed, specify IRC nickname in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-11-17 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- [NRWT] Make http locking similar to perl implementation
- https://bugs.webkit.org/show_bug.cgi?id=49187
-
- * Scripts/webkitpy/common/system/file_lock.py: Added.
- * Scripts/webkitpy/common/system/file_lock_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-11-17 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- [Chromium][DRT] EventSender.contextClick() should aware spellchecking
- https://bugs.webkit.org/show_bug.cgi?id=49366
-
- - EvenSender: Checked WebContextMenuData.misspelledWord and added extra context menu entries
- according to the spellchecker suggestion
- - MockSpellCheck: add fillSuggestionList to provide fake suggestions.
-
- test_expectations.txt will be changed after this change is ported to test_shell.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (makeMenuItemStringsFor):
- (EventSender::contextClick):
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::fillSuggestionList):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/MockSpellCheck.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::mockSpellCheck):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-11-16 Dave Hyatt <hyatt@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make sure the pref for minimum font size is just explicitly set to 0 every time,
- since the bots have 1 stuck in their plist otherwise.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-11-16 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: compute diffs client-side
- https://bugs.webkit.org/show_bug.cgi?id=49640
-
- The image diff output from the DRT is pretty bad on some ports (at
- least the Mac one), so it's better to compute diffs on the client by
- using <canvas>.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
-
-2010-11-16 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: display test results
- https://bugs.webkit.org/show_bug.cgi?id=49626
-
- Adds basic result display to the rebaseline server. On the Python side
- this involves:
- - Parsing the unexpected_results.json into a dictionary.
- - Serving it as JSON under /results.json.
- (the JSON -> dict -> JSON transform isn't strictly necessary right now,
- but I'll need to have access to the parsed results on the Python side
- for follow-up changes).
-
- On the web UI side this adds:
- - Markup for display image and text results (expected, actual, diff),
- and JS for populating it.
- - Markup for breaking down test results by failure type and directory,
- and JS for populating it.
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/util.js: Added.
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- See Chromium issue http://codereview.chromium.org/5133001/ - we
- are modifying the build bots to pass in the builder name with
- the "GPU" string appended instead of appending it in the code.
-
- https://bugs.webkit.org/show_bug.cgi?id=49636
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2010-11-16 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Disable LTCG for Windows Release builds. Add new Release_LTCG configuration.
- https://bugs.webkit.org/show_bug.cgi?id=49632
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * MiniBrowser/MiniBrowser.vcproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WinLauncher/WinLauncher.vcproj:
- * record-memory-win/record-memory-win.vcproj:
-
-2010-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: rename TestInfo to TestInput, move image hash to work thread
-
- Rename the TestInfo class to TestInput to be clearer about its
- function, and move the checksum-reading code into dump_render_tree_thread
- to avoid cross-thread access.
-
- https://bugs.webkit.org/show_bug.cgi?id=49573
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-16 Dave Hyatt <hyatt@apple.com>
-
- Fix bustage. Remove the minimum font size pref setting in DumpRenderTree.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2010-11-16 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Geoff Garen.
-
- <rdar://problem/8624267> Leak creating offscreen webview running fast/dom tests
-
- Use shared DeviceOrientationProviderMock. The old allocation method created a new WebDeviceOrientationProviderMock
- for every WebView, and the WebKit API doesn't support that ownership model.
-
- I also fixed a leak in setMockDeviceOrientation by adding a missing release.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockDeviceOrientation):
-
-2010-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: log the process id in --verbose mode
-
- As part of the switch to multi-process mode, we should log the
- process id when running w/ --verbose.
-
- https://bugs.webkit.org/show_bug.cgi?id=49571
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2010-11-16 Adam Roben <aroben@apple.com>
-
- Only trigger Windows builds when files that we actually use on Windows
- are changed
-
- A new Scheduler subclass, PlatformSpecificScheduler, has been added.
- It uses the new webkitpy.common.config.build module to determine
- whether a particular change should trigger a build on a particular
- platform. The Windows builders have been switched to use a
- PlatformSpecificScheduler.
-
- The logic to determine whether or not a particular change should
- trigger a build on a given platform has only been implemented/tested
- for Windows. I tried to make it easy to add more platforms in the
- future, but I don't have enough familiarity with all platforms to be
- able to implement it for them.
-
- Fixes <http://webkit.org/b/49407> Windows builders kick off builds for
- lots irrelevant changes (e.g., rebaselining Chromium test results)
-
- Reviewed by Eric Seidel.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Use a
- PlatformSpecificScheduler for the Windows builders.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (PlatformSpecificScheduler.__init__): Added. Stores our platform, sets
- up a ChangeFilter that filters to our branch and will call through to
- our filter method, and calls up to our base class.
- (PlatformSpecificScheduler.filter): Calls through to
- build.should_build to find out whether we should trigger a build for
- this change.
-
- * Scripts/webkitpy/common/net/build.py: Added.
- (_should_file_trigger_build): Uses a set of directories and regexp
- patterns to determine whether the given file should trigger a build on
- the given platform. As mentioned earlier, this has only been
- implemented for Windows, though I did try to make some guesses about
- other platforms.
- (should_build): Returns true if any of the files should trigger a
- build on the given platform.
-
- * Scripts/webkitpy/common/net/build_unittest.py: Added.
- (ShouldBuildTest.test_should_build): Does some basic testing to make
- sure we're triggering builds for the right files. It only tests
- Windows for now, though I tried to make some guesses about other
- platforms.
-
-2010-11-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Remove synchronous QWebPage::checkPermissions signal
- https://bugs.webkit.org/show_bug.cgi?id=46810
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::grantDesktopNotificationPermission): When granting
- permission, grant it directly on the QWebPage/Frame, that will remember it.
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- * QtTestBrowser/webpage.h:
-
-
-2010-11-16 Andras Becsi <abecsi@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Add isPrinting and setPrinting methods to DRT's LayoutTestController.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::isPrinting):
- (LayoutTestController::setPrinting):
-
-2010-11-16 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Add a way to turn on tiled backing store in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=49587
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView): Added BackingStoreType
- argument to ctor. Propagating it to the QGraphicsWKView.
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::newWindow): Create the new BrowserWindow
- with the same BackingStoreType that this instance has.
- * MiniBrowser/qt/BrowserWindow.h: Added BackingStoreType member.
- * MiniBrowser/qt/main.cpp:
- (main): Use tiled backing store if got -tiled command line argument.
- Avoid redundant copy of command line args.
-
-2010-11-16 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Move DeviceOrientationClientMock from LayoutTestController to WebViewHost.
- https://bugs.webkit.org/show_bug.cgi?id=48506
-
- This ensures that there is one mock per page WebView / WebViewHost. This is a
- design constraint of the DeviceOrientationClientMock because the m_controller
- field can only store a pointer to a single instance of the corresponding
- DeviceOrientationController.
-
- Test: fast/dom/DeviceOrientation/no-page-cache.html
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- (LayoutTestController::deviceOrientationClientMock):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::deviceOrientationClientMock):
- (WebViewHost::deviceOrientationClient):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-11-15 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Avoid polling in WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=49542
-
- Make the WK2 testing session about 10-15% faster and decrease random flakiness
- resulting from timing skew by removing the millisecond polling from TestControllerQt.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didFinishLoadForFrame):
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::notifyDone): Add method stub.
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestControllerRunLoop::instance):
- (WTR::TestControllerRunLoop::start):
- (WTR::TestControllerRunLoop::stop):
- (WTR::TestControllerRunLoop::TestControllerRunLoop):
- (WTR::TestControllerRunLoop::timerEvent):
- (WTR::TestController::notifyDone):
- (WTR::TestController::platformRunUntil):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::notifyDone): Add method stub.
-
-2010-11-15 Darin Adler <darin@apple.com>
-
- * Scripts/webkitpy/common/net/bugzilla: Added property svn:ignore.
-
-2010-11-15 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] [WK2] Add Ctrl+L shortcut to Qt Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=49544
-
- Add the shortcut to BrowserWindow.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::openLocation):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2010-11-14 David Levin <levin@chromium.org>
-
- Reviewed by Daniel Bates.
-
- check-webkit-style should detect PassRefPtr usage in functions.
- https://bugs.webkit.org/show_bug.cgi?id=49513
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_function_lengths): Revert a comment change that I
- accidentally made in r71986.
- (check_pass_ptr_usage): Added the code to do the check.
- (process_line): Added the call to check_pass_ptr_usage.
- (CppChecker): Added the new error category.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTestBase::perform_pass_ptr_check): Runs the new check for
- testing purposes.
- (PassPtrTest::*): The class/functions to unit test the new
- functionality.
-
-2010-11-14 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style function detection and the line count style checks should be separate.
- https://bugs.webkit.org/show_bug.cgi?id=49512
-
- * Scripts/webkitpy/style/checkers/cpp.py: Do the separation.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Adjust the test to
- call the detection function and fix line counts in two places now that
- the code really only counts the lines in the body of the function.
-
-2010-11-14 Andreas Kling <kling@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- http/tests/plugins tests print "Unhandled variable" to stderr under Qt
- https://bugs.webkit.org/show_bug.cgi?id=33438
-
- Stifle "Unhandled variable" warning to match what the other
- TestNetscapePlugin does (NPP_GetValue in TestNetscapePlugIn/main.cpp
- simply returns NPERR_GENERIC_ERROR for unhandled variables.)
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_get_value):
-
-2010-11-13 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style function detection crashes on functions in templates.
- https://bugs.webkit.org/show_bug.cgi?id=49504
-
- For example "template <bool shouldClose(const Element*)>".
-
- * Scripts/webkitpy/style/checkers/cpp.py: If not function is detected, bail out.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Modified the complex
- function detection test to expose this issue.
-
-2010-11-12 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style function detection doesn't detect indented functions declaractions.
- https://bugs.webkit.org/show_bug.cgi?id=49446
-
- Indented function declarations occur inside class definitions, so
- they are a pretty common (and worth detecting).
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- Changed regex to allow indentation.
- Changed the function start detection to only happen when not in a
- function.
- Changed function end detection to work based on matching braces
- instead of finding a close brace at the beginning of the line.
- Fixed close_expression to do what it says when it doesn't find
- the close.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Indented function test.
-
-2010-11-12 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Nikolas Zimmermann.
-
- Make do-file-rename rename files in the directory WebKit2.
-
- This also makes the list of searched directories in do-file-rename
- consistent with the list of searched directories in the script do-webcore-rename.
-
- * Scripts/do-file-rename:
-
-2010-11-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by James Robinson.
-
- Attempt yet again to land the fix for bug 49360 (respecting
- set-webkit-configuration). We need to handle the cases where
- trying to run webkit-build-directory to find out where the
- default configuration might be fails (that shows up on some
- Chromium bots that apparently don't have perl installed).
-
- https://bugs.webkit.org/show_bug.cgi?id=49360
-
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_standalone.py: Added.
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2010-11-12 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land logs commit message twice
- https://bugs.webkit.org/show_bug.cgi?id=49482
-
- Don't log the comment that's used by bugzilla.close_bug_as_fixed, since
- that's just the commit message, which we now output following the
- actual commit.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
-
-2010-11-12 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- run platform/chromium/plugins/script-object-invoke.html on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=49280
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (testScriptObjectInvoke):
- (pluginInvoke):
-
-2010-11-12 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land-cowboy (and other commands) should display the committed SVN revision after landing a patch
- https://bugs.webkit.org/show_bug.cgi?id=49471
-
- Right now there's no indication of a successful commit.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2010-11-12 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Include detailed test modifiers in results.json and enable incremental uploading for non-layout tests
- https://bugs.webkit.org/show_bug.cgi?id=49354
-
- Also moved/integrated the upload method from run_webkit_tests.py to json_results_generator.py.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-12 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] Load a blank page when closing DRT WebViewHosts
- https://bugs.webkit.org/show_bug.cgi?id=49417
-
- In test_shell, when we close a window, we first load about:blank
- and run GC to fire the destruction logic of the page. In test_shell,
- this happens in ~TestShell. In DRT, we manage virtual windows as
- WebViewHosts, so we need to replicate this logic in ~WebViewHost.
-
- Managing focus is a bit trickier, since normally you would get window
- events to reset the focus to the right window. We do it manually
- instead.
-
- This fixes 2 plugin tests on DRT.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell): Move window close logic to ~WebViewHost.
- (TestShell::closeWindow): Move widget close() to WVH destructor and
- manage focus manually.
- (TestShell::closeRemainingWindows): Comment typo.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::closeWidget):
- (invokeCloseWidget):
- (WebViewHost::closeWidgetSoon): Close the window asynchronously (matches
- test_shell).
- (WebViewHost::~WebViewHost):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-11-12 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- cpp.py needs some tidying.
- https://bugs.webkit.org/show_bug.cgi?id=49443
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- Fix parameter ordering for iteratively_replace_matches_with_char
- to mirror other similar functions (and improved comments, etc.)
- Also, use a python-ism (for/else) to get rid of a variable that
- was there to determine if something had been found in the loop.
-
-2010-11-12 Robert Kroeger <rjkroege@chromium.org>
-
- Reviewed by James Robinson.
-
- [Chromium/DRT] Make EventSendingController send complete touch events.
- https://bugs.webkit.org/show_bug.cgi?id=49285
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::addTouchPoint):
- (EventSender::updateTouchPoint):
- (EventSender::sendCurrentTouchEvent):
-
-2010-11-12 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed rollout of r71858.
-
- Rollout out r71858 since it breaks new-run-webkit-httpd as used by the
- NaCl tests.
-
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_standalone.py: Removed.
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2010-11-12 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] TestController::runUntil doesn't honor the timeout parameter
- https://bugs.webkit.org/show_bug.cgi?id=48941
-
- Implement the missing timeout of WebKitTestRunner for Qt.
-
- A QElapsedTimer has been added to RunUntilConditionLoop in order
- to measure how long the loop has been running. When the timer
- is bigger or equal than the timeout, the loop ends even if the
- condition is not met.
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::RunUntilConditionLoop::start):
- (WTR::RunUntilConditionLoop::run):
- (WTR::RunUntilConditionLoop::timerEvent):
- (WTR::TestController::platformRunUntil):
-
-2010-11-11 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style function detection doesn't handle templates with spaces.
- https://bugs.webkit.org/show_bug.cgi?id=49427
-
- * Scripts/webkitpy/style/checkers/cpp.py: Stripped out templates when
- finding the function name.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Made the test have a
- template with a space.
-
-2010-11-11 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Enable check-webkit-style on Qt files
- https://bugs.webkit.org/show_bug.cgi?id=48322
-
- Adding exception for _q_... private slots and
- ..._data() methods in tests
-
- * Scripts/webkitpy/style/checker.py: enable Qt dirs, add exceptions
- * Scripts/webkitpy/style/checker_unittest.py: improve unittests
-
-2010-11-11 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style function detection doesn't work for templates and destructors.
- https://bugs.webkit.org/show_bug.cgi?id=49425
-
- * Scripts/webkitpy/style/checkers/cpp.py: Changed regex for templates and destructors.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Made the test hit this issue.
-
-2010-11-11 Joone Hur <joone@kldp.org>
-
- Reviewed by Antonio Gomes.
-
- [GTK][DRT] Implement LayoutTestController::nodesFromRect
- https://bugs.webkit.org/show_bug.cgi?id=46598
-
- Support nodesFromRect in DRT
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::nodesFromRect):
-
-2010-11-11 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- editing/selection/context-menu-on-text.html fails on chromium
- https://bugs.webkit.org/show_bug.cgi?id=45898
-
- Enhance Chromium's EventSender::contextClick() to return
- array of menu strings. The implementation incomplete because
- Although actual context menu is implemented by the browser,
- it reflects editability of underlying context thus makes
- context-menu-on-text.html passed.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (makeMenuItemStringsFor): Added.
- (EventSender::contextClick): Now returns array of menu strings.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::showContextMenu): Now storing given WebContextMenuData object.
- (WebViewHost::clearContextMenuData): Added.
- (WebViewHost::lastContextMenuData): Added.
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-11-11 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- fix build breakage caused by fix for bug 49380 (r71858).
-
- config_standalone needs to ensure that the packages it needs are
- in sys.path.
-
- https://bugs.webkit.org/show_bug.cgi?id=49419
-
- * Scripts/webkitpy/layout_tests/port/config_standalone.py:
-
-2010-11-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Fix NRWT to respect set-webkit-configuration again :(
-
- This change fixes a typo in config.py that was causing the wrong
- value to be read initially and us never actually looking into
- the filesystem to get the default configuration.
-
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_standalone.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2010-11-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Split out Bug, Attachment and CommitterValidator from bugzilla.py
- https://bugs.webkit.org/show_bug.cgi?id=49403
-
- CommitterValidator really had nothing to do with bugzilla.py.
- I've put it next to committers.py for now since its rather tied to that file.
-
- * Scripts/webkitpy/common/config/committervalidator.py: Added.
- * Scripts/webkitpy/common/config/committervalidator_unittest.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/__init__.py:
- * Scripts/webkitpy/common/net/bugzilla/attachment.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bug.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bug_unittest.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/bot/feeders.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-11-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix missing 'pid' argument for http lockfile checking on win32
- https://bugs.webkit.org/show_bug.cgi?id=49363
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-11-11 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Move bugzilla.py into its own module in preparation for splitting one-file-per-class
- https://bugs.webkit.org/show_bug.cgi?id=49402
-
- * Scripts/webkitpy/common/net/bugzilla/__init__.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py: Renamed from WebKitTools/Scripts/webkitpy/common/net/bugzilla.py.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py: Renamed from WebKitTools/Scripts/webkitpy/common/net/bugzilla_unittest.py.
-
-2010-11-10 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Chris Fleizach.
-
- Use IAccessibleComparable to compare accessibility objects.
- https://bugs.webkit.org/show_bug.cgi?id=49118
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::isEqual):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (comparableObject):
- (AccessibilityUIElement::isEqual):
-
-2010-11-10 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by David Hyatt.
-
- HTML5 Ruby support should be mandatory feature
- https://bugs.webkit.org/show_bug.cgi?id=49272
-
- Remove Ruby as optional feature.
-
- * Scripts/build-webkit:
-
-2010-11-10 Adam Roben <aroben@apple.com>
-
- Print VC++ Express build logs in the same order that the projects are
- built
-
- Fixes <http://webkit.org/b/49326> print-vse-failure-logs prints logs
- in an unhelpful order
-
- Reviewed by Eric Seidel.
-
- * Scripts/print-vse-failure-logs:
- (PrintVisualStudioExpressLogs._build_order): Added. Uses
- print-msvc-project-dependencies to figure out the order in which
- projects are built.
- (PrintVisualStudioExpressLogs._sort_buildlogs): Added. Sorts the logs
- based on their build order and project name.
- (PrintVisualStudioExpressLogs._obj_directory): Moved code to find the
- scripts directory from here...
- (PrintVisualStudioExpressLogs._scripts_directory): ...to here.
- (PrintVisualStudioExpressLogs.main): Sort the logs before printing
- them.
-
-2010-11-10 Adam Roben <aroben@apple.com>
-
- Only print the interesting text from VC++ Express build logs
-
- Fixes <http://webkit.org/b/49325> It's hard to find the interesting
- output from print-vse-failure-logs
-
- Reviewed by Eric Seidel.
-
- * Scripts/print-vse-failure-logs: Removed unnecessary os.path import,
- added newly-required imports. Removed a comment that was essentially a
- FIXME, and is now fixed.
- (PrintVisualStudioExpressLogs._relevant_text): Added. Uses
- BeautifulSoup to extract the relevant text from the build log.
- (PrintVisualStudioExpressLogs.main): Only print the relevant text.
-
-2010-11-09 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- [Chromium] http/tests/security/XFrameOptions fail with Chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=49286
-
- The tests in http/tests/security/XFrameOptions started to fail after
- r71297, since it changed the WebViewHost::assignIdentifierToRequest
- logic to always assign identifiers to requests, even if we're not going
- to be dumping resource load callbacks at that point. These tests
- only call LayoutTestController.dumpResourceLoadCallbacks after the
- request is started, thus their expectations have "<unknown>" as the
- identifier. Change WebViewHost to the previous behavior, which also
- match the other ports'.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::assignIdentifierToRequest):
- (WebViewHost::removeIdentifierForRequest):
-
-2010-11-08 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- run platform/chromium/plugins/return-npobject.html on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=49103
-
- This tests that we can get an NPObject returned through a method on
- an NPAPI Object.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (testCallbackReturn):
- (pluginInvoke):
-
-2010-11-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r71672.
- http://trac.webkit.org/changeset/71672
- https://bugs.webkit.org/show_bug.cgi?id=49276
-
- It doesn't work on Chromium Windows bot (Requested by Ossy on
- #webkit).
-
- * Scripts/webkitpy/common/system/file_lock.py: Removed.
- * Scripts/webkitpy/common/system/file_lock_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-11-09 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- [NRWT] Make http locking similar to perl implementation
- https://bugs.webkit.org/show_bug.cgi?id=49187
-
- * Scripts/webkitpy/common/system/file_lock.py: Added.
- * Scripts/webkitpy/common/system/file_lock_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-11-09 James Kozianski <koz@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Clean up imports for webkit-patch.
- https://bugs.webkit.org/show_bug.cgi?id=49083
-
- Move some imports from commands into main.py where they are used.
- Move command imports into the __init__ of the commands module.
-
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/main.py:
-
-2010-11-09 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt][QtTestBrowser] Don't erase incorrect url in the Url Bar
- https://bugs.webkit.org/show_bug.cgi?id=49047
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::setAddressUrl):
-
-2010-11-09 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Improve old-run-webkit-tests --verbose to show DumpTool opening/closing
- https://bugs.webkit.org/show_bug.cgi?id=49252
-
- * Scripts/old-run-webkit-tests:
-
-2010-11-09 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Tor Arne Vestbø.
-
- Output of old-run-webkit-tests is buggy in verbose mode
- https://bugs.webkit.org/show_bug.cgi?id=49249
-
- * Scripts/old-run-webkit-tests: Redundant outputs removed.
-
-2010-11-08 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- [GTK] Link with target name set does not work
- https://bugs.webkit.org/show_bug.cgi?id=48865
-
- When a new page is created with a name (target=myFrame), the new
- mainFrame could not be found because they where not stored in the
- same PageGroup. As PageGroup are not exposed externally so the
- simpliest solution is to use a global page group name. This also fixes
- issue with visited link coloration across pages. After this change the
- private function webkit_web_view_set_group_name() was no longer used
- so it was removed completly.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView):
-
-2010-11-08 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Kent Tamura.
-
- WebViewHost::reset() uses placement new.
- https://bugs.webkit.org/show_bug.cgi?id=49069
-
- WebViewHost is using placement destruction / new to simulate a fresh
- WebViewHost object at the same address. This is because the WebView remains
- open across tests and maintains a pointer to the WebViewHost.
- This change resets member variables explictly instead of the placement new dance.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::reset):
-
-2010-11-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix the webkit_base_dir logic in webkitpy/layout_tests/port/config.py.
- It turns out that NRWT can't use the code in scm.find_checkout_root()
- because the Chromium bots don't do full checkouts of the WebKit
- tree; they only check out subdirectories like WebKitTools/Scripts.
- Until we can figure out a better approach for this, I've
- restored the base_dir-detecting code from NRWT, which works in
- any directory tree, scm or no.
-
- This also restores the files modified in r71475 and r71474.
-
- https://bugs.webkit.org/show_bug.cgi?id=49151
-
- * WebKitTools/Scripts/webkitpy/layout_tests/port/config.py
- * WebKitTools/Scripts/webkitpy/layout_tests/port/config_unittest.py
-
-2010-11-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch failure-reason explodes if a build is missing
- https://bugs.webkit.org/show_bug.cgi?id=49195
-
- This is likely a recent regression. Adding a unit test for this case.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-11-08 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Darin Adler.
-
- Ignore the system scrollbar setting.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Set the scrollbar default.
-
-2010-11-05 Adam Roben <aroben@apple.com>
-
- Make webkitpy.common.system.executive_unittest pass when running under
- Win32 Python
-
- Fixes <http://webkit.org/b/49033>.
-
- Reviewed by Dave Levin and Eric Seidel.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._run_command_with_teed_output): Pass the arguments through
- encode_argument_if_needed rather than using Cygwin-specific code here.
- (Executive.run_and_throw_if_fail): Use child_process_encoding to decode
- the output.
- (Executive.run_command): Use encode_argument_if_needed to encode the
- arguments and child_process_encoding to decode the output.
- (Executive._child_process_encoding): Returns the encoding that should be
- used when communicating with child processes. On Windows we use mbcs,
- which maps to the current code page. On all other platforms we use
- UTF-8.
- (Executive._should_encode_child_process_arguments): Returns True if
- arguments to child processes need to be encoded. This is currently
- only needed on Cygwin and Win32 Python 2.x.
- (Executive._encode_argument_if_needed): Encode the argument using
- child_process_encoding if we need to encode arguments to child
- processes on this platform.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (never_ending_command): Added. Returns arguments to run a command that
- will not quit until we kill it. On Windows we use wmic, on other
- platforms we use yes.
- (ExecutiveTest.test_run_command_with_unicode): Changed to expect the
- mbcs encoding to be used and for output from the child processes to
- have been roundtripped through encode/decode on Win32 Python. When
- UTF-8 is the encoding the roundtripping is undetectable, but with mbcs
- it's possible that some characters will not be able to be converted
- and will be replaced by question marks; the round-tripping allows us
- to expect this result.
-
- (ExecutiveTest.test_kill_process):
- (ExecutiveTest.test_kill_all):
- Use never_ending_command instead of invoking "yes" directly. Expect an
- exit code of 1 when using Win32 Python, as that's what seems to happen.
-
-2010-11-08 Adam Roben <aroben@apple.com>
-
- Roll out r71532
-
- It broke the build for Cygwin 1.7 installs. Cygwin 1.7's default
- .bashrc unsets %TEMP%, which broke copy-tools.cmd.
-
- * Scripts/webkitdirs.pm:
-
-2010-11-08 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- run platform/chromium/plugins/nested-plugin-objects.html on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=49094
-
- This tests that objects created by plugins are proplery cleaned up.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (testPassTestObject):
- (pluginInvoke):
- * DumpRenderTree/TestNetscapePlugIn/TestObject.cpp:
- (testAllocate):
- (testDeallocate):
- (testGetProperty):
- (testConstruct):
-
-2010-11-08 Adam Roben <aroben@apple.com>
-
- Mark Windows builds triggered from Perl as being non-interactive
-
- This affects whether some of our scripts will show alerts vs. printing
- to the build log.
-
- Fixes <http://webkit.org/b/49181> Windows build fail mysteriously when
- .vsprops files are updated
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/webkitdirs.pm:
- (buildVisualStudioProject): Set WEBKIT_NONINTERACTIVE_BUILD to 1.
-
-2010-11-08 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- Make http locking default in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=48053
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-08 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [NRWT] If the http lock fails we shouldn't do any locking
- https://bugs.webkit.org/show_bug.cgi?id=49164
-
- If something goes wrong with the locking, the test should keep going.
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-11-08 Adam Roben <aroben@apple.com>
-
- Switch back to using kCGImageAlphaPremultipliedFirst when generating
- pixel dumps on Windows
-
- I changed this behavior in r71418 thinking that it was required for
- getting plugins to show up in pixel dumps. But it doesn't seem to be
- necessary, and was making it impossible to compare new Windows pixel
- dumps with existing Windows or Mac pixel dumps (because ImageDiff won't
- compare an image with alpha to an image without alpha).
-
- Fixes <http://webkit.org/b/49172> REGRESION (r71418): Can't compare
- new Windows pixel results to existing Windows or Mac results
-
- Reviewed by Antti Koivisto.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView): Replaced kCGImageAlphaNoneSkipFirst
- with kCGImageAlphaPremultipliedFirst.
-
-2010-11-08 Csaba Osztrogonac <ossy@webkit.org>
-
- Unreviewed, rolling out r71466.
- http://trac.webkit.org/changeset/71466
- https://bugs.webkit.org/show_bug.cgi?id=48865
-
- It broke layout tests on GTK bots.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView):
-
-2010-11-08 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- Enable running of Qt API tests on BuildBot
- https://bugs.webkit.org/show_bug.cgi?id=49004
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-11-08 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add clean-review-queue command to remove closed bugs from the webkit.org/pending-review
- https://bugs.webkit.org/show_bug.cgi?id=49160
-
- Bugzilla doesn't automatically remove r? when a bug gets closed.
- This script takes care of that for webkit.org.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2010-11-07 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed, rolling out r71474.
- http://trac.webkit.org/changeset/71474
- https://bugs.webkit.org/show_bug.cgi?id=48280
-
- breaks chromium webkit tests
- https://bugs.webkit.org/show_bug.cgi?id=49151
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-11-07 Fumitoshi Ukai <ukai@chromium.org>
-
- Unreviewed, rolling out r71475.
- http://trac.webkit.org/changeset/71475
-
- breaks chromium webkit tests
- https://bugs.webkit.org/show_bug.cgi?id=49151
-
- * Scripts/webkitpy/common/newstringio.py: Removed.
- * Scripts/webkitpy/common/newstringio_unittest.py: Removed.
- * Scripts/webkitpy/common/system/executive_mock.py: Removed.
- * Scripts/webkitpy/common/system/filesystem_mock.py: Removed.
- * Scripts/webkitpy/layout_tests/port/config_mock.py: Removed.
-
-2010-11-06 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Add files inexplicably not committed in r71474 as part of the
- fix for bug 48280.
-
- * Scripts/webkitpy/common/newstringio.py: Added.
- * Scripts/webkitpy/common/newstringio_unittest.py: Added.
- * Scripts/webkitpy/common/system/executive_mock.py: Added.
- * Scripts/webkitpy/common/system/filesystem_mock.py: Added.
- * Scripts/webkitpy/layout_tests/port/config_mock.py: Added.
-
-2010-11-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- new-run-webkit-tests: update port/base and port/webkit to use the
- new FileSystem and Config abstractions, pulling more logic out of
- the base Port classes into separate, mockable objects.
-
- Also create a MockFileSystem object, a MockConfig object, move
- MockExecutive into common/system to be next to executive, and
- update the config object to use a FileSystem.
-
- https://bugs.webkit.org/show_bug.cgi?id=48280
-
- * Scripts/webkitpy/common/newstringio.py: Added.
- * Scripts/webkitpy/common/newstringio_unittest.py: Added.
- * Scripts/webkitpy/common/system/executive_mock.py: Added.
- * Scripts/webkitpy/common/system/filesystem_mock.py: Added.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_mock.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-11-06 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build breakage.
-
- Apparently I uploaded the wrong version of the file to fix 49122
- and neither Eric or I noticed - it was missing a dirname() call.
- Fixing ...
-
- https://bugs.webkit.org/show_bug.cgi?id=49122
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-11-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkitpy/tool/* unittests change cwd and don't clean up properly
-
- https://bugs.webkit.org/show_bug.cgi?id=49122
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-11-05 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- suspendAnimations/resumeAnimations not present in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=49109
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::suspendAnimations):
- (WTR::LayoutTestController::resumeAnimations):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2010-11-05 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- cleanup style in TestNetscapePlugIn/PluginObject.cpp
- https://bugs.webkit.org/show_bug.cgi?id=49044
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (getPluginClass):
- (pluginGetProperty):
- (pluginSetProperty):
- (variantToIdentifier):
- (testCallback):
- (getURL):
- (getURLNotify):
- (testInvokeDefault):
- (testGetProperty):
- (testDocumentOpen):
- (testWindowOpen):
- (pluginInvoke):
- (handleCallback):
- (notifyStream):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
-
-2010-11-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Add QueueStatusServer/__init__.py so others can run the QueueStatusServer tests
- https://bugs.webkit.org/show_bug.cgi?id=49032
-
- I wrote this file as part of bug 47847, but I forgot to commit it.
- No one else noticed it missing because test-webkitpy knows how
- to recover in the case where it can't import QueueStatusServer
- (which generally occurs due to not having installed the AppEngine SDK).
-
- * QueueStatusServer/__init__.py: Added.
- * QueueStatusServer/model/workitems_unittest.py:
- - Remove a test which fails. This was probably landed (by me)
- from my other machine, which since this __init__.py was missing
- I never noticed the failure and landed this invalid test.
- Sadly we can't really test remove_work_item as it depends
- on .key() working. .key() will throw unless the object
- has already been saved it seems.
- This may be a mis-design in our remove_work_item implementation,
- but for now, just removing the test.
-
-2010-11-04 Adam Roben <aroben@apple.com>
-
- Teach check-webkit-style about TestNetscapePlugIn
-
- Fixes <http://webkit.org/b/49030> check-webkit-style is ignorant of
- TestNetscapePlugIn's coding conventions
-
- Reviewed by John Sullivan.
-
- * Scripts/webkitpy/style/checker.py: Lump TestNetscapePlugIn in with
- WebKitAPITest and TestWebKitAPI in having different include order and
- naming conventions than WebCore. Added some comments about why the
- exceptions exist.
-
-2010-11-04 Adam Roben <aroben@apple.com>
-
- Add a test that shows that windowed plugins are able to paint
-
- Somehow we never had a test for this before.
-
- Fixes <http://webkit.org/b/49029> Should add a test that shows
- windowed plugins can paint
-
- Reviewed by Jon Honeycutt.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/DrawsGradient.cpp: Added.
- (DrawsGradient::DrawsGradient):
- (DrawsGradient::wndProc): We handle the WM_PAINT and WM_PRINTCLIENT messages.
-
- (DrawsGradient::onPaint):
- (DrawsGradient::onPrintClient):
- These both just call through to paint.
-
- (DrawsGradient::paint): Fills our client area with some gradients.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Link
- against Msimg32.lib for ::GradientFill and added DrawsGradient.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView): Use WM_PRINT instead of
- WM_PRINTCLIENT so that ::DefWindowProc will send
- WM_PRINT/WM_PRINTCLIENT messages to the WebView's child windows.
- Replaced kCGImageAlphaPremultipledFirst with kCGImageAlphaNoneSkipFirst
- because GDI doesn't support alpha and kCGImageBitmapOrder32Little with
- kCGImageBitmapOrder32Host because, who knows, maybe someday Windows
- will run on a big-endian platform.
-
-2010-11-04 Adam Roben <aroben@apple.com>
-
- Extract much of NPNInvalidateRectInvalidatesWindow's code into a
- WindowedPluginTest base class
-
- The base class takes care of subclassing the plugin's window so that a
- custom WNDPROC is called. This will make it easier to write tests that
- need to handle window messages.
-
- Fixes <http://webkit.org/b/49028> It's hard to write a PluginTest with
- a custom WNDPROC
-
- Reviewed by Jon Honeycutt.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp:
- (NPNInvalidateRectInvalidatesWindow::NPNInvalidateRectInvalidatesWindow):
- (NPNInvalidateRectInvalidatesWindow::NPP_SetWindow):
- (NPNInvalidateRectInvalidatesWindow::wndProc):
- (NPNInvalidateRectInvalidatesWindow::testInvalidateRect):
- Moved code from here to WindowedPluginTest. Changed to use window()
- instead of m_window.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Added WindowedPluginTest and added TestNetscapePlugIn/win to the
- include path. Also reordered the include path to make a little more
- sense and simplified the entry that added TestNetscapePlugIn itself to
- the include path.
-
- * DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp: Added.
- (WindowedPluginTest::WindowedPluginTest):
- (WindowedPluginTest::NPP_SetWindow):
- (WindowedPluginTest::staticWndProc):
- * DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h: Added.
- (WindowedPluginTest::window):
- Code came from NPNInvalidateRectInvalidatesWindow.
-
-2010-11-04 Adam Roben <aroben@apple.com>
-
- Add a plugin test to show that windowed plugins are clipped correctly
-
- Fixes <http://webkit.org/b/49024> <rdar://problem/8487847> Windowed
- plugins aren't clipped in WebKit2 on Windows
-
- Reviewed by Jon Honeycutt.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp: Added.
- (WindowRegionIsSetToClipRect::WindowRegionIsSetToClipRect): Initialize members.
- (WindowRegionIsSetToClipRect::NPP_SetWindow): Check that our window
- region matches the clip rect we know we should have based on
- window-region-is-set-to-clip-rect.html, and check that our window class
- doesn't have the CS_PARENTDC style.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Added WindowRegionIsSetToClipRect.
-
-2010-11-05 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Avoid font hinting in the DRT
- https://bugs.webkit.org/show_bug.cgi?id=48548
-
- Change the settings to avoid font hinting, it was causing
- different results depending on the distribution.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings):
- * DumpRenderTree/gtk/fonts/fonts.conf:
-
-2010-11-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- build-webkit spams system.log by repeatedly checking for PBXProductDirectory in com.apple.Xcode
- https://bugs.webkit.org/show_bug.cgi?id=49051
-
- This is a speculative fix. The unit tests cover these methods, however
- I don't know if this will fully stop the system.log spam.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-11-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add basic support for showing bot id on /queue-status/ pages
- https://bugs.webkit.org/show_bug.cgi?id=49037
-
- This support is really simple. Eventually we'll want to
- show the bot id in the lock table too, but we don't have
- that information stored in the server yet.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/handlers/queuestatus_unittest.py: Added.
- * QueueStatusServer/templates/includes/singlequeuestatus.html:
-
-2010-11-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Create a filesystem wrapper that we can use to enforce
- particular conventions and use for mocking and dependency
- injection down the line.
-
- https://bugs.webkit.org/show_bug.cgi?id=48144
-
- * Scripts/webkitpy/common/system/filesystem.py: Added.
- * Scripts/webkitpy/common/system/filesystem_unittest.py: Added.
-
-2010-11-04 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- run_webkit_tests_unittest fails under Python 2.5
- https://bugs.webkit.org/show_bug.cgi?id=49043
-
- Switch from itertools.chain.from_iterable (which was added in 2.6)
- to using itertools.chain directly.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-04 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed fix to webkit-patch rebaseline-server so that it runs under
- Python 2.5 (it needs an import to use the with statement).
-
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2010-11-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests: split out webkit-specific configuration stuff into a new module
-
- The current NRWT code has webkit-specific configuration code (like
- _script_path, default configuration, etc.) mixed in with
- layout-test-specific stuff in port/base. The configuration code
- should be split out into a separate module for easier mocking,
- testing, and isolation.
-
- https://bugs.webkit.org/show_bug.cgi?id=48264
-
- * Scripts/webkitpy/layout_tests/port/config.py: Added.
- * Scripts/webkitpy/layout_tests/port/config_unittest.py: Added.
-
-2010-11-04 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Rebaseline server: initial framework
- https://bugs.webkit.org/show_bug.cgi?id=48892
-
- Adds the basic framework for the rebaseline server (details at
- http://webkit.org/b/47761). Includes the rebaseline-server webkit-patch
- command, which starts an HTTP server that can serve static files or
- invoke handler methods on a class.
-
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html: Added.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css: Added.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js: Added.
- * Scripts/webkitpy/tool/commands/rebaselineserver.py: Added.
-
-2010-11-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by James Robinson.
-
- new-run-webkit-tests wasn't using DRT by default for
- --platform chromium-gpu
-
- The default value was set to False instead of None, which meant
- that the platform specific logic wasn't firing to change the
- value to True (b/c we were afraid we'd be overriding the user
- preference).
-
- https://bugs.webkit.org/show_bug.cgi?id=49038
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-04 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- make platform/chromium/plugins/multiple-plugins.html pass on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=49026
-
- Have the testObject.bar property return the string "bar". This lets
- us run and pass platform/chromium/plugins/multiple-plugins.html on all
- platforms.
-
- * DumpRenderTree/TestNetscapePlugIn/TestObject.cpp:
- (testGetProperty):
-
-2010-11-04 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT doesn't have good test coverage for --run-chunk, --batch-size, --run-part, etc.
- https://bugs.webkit.org/show_bug.cgi?id=48878
-
- Add get_tests_run so that it's easy to see which tests get run (and with
- what batching) for a given flag combination. Flesh out the various
- test cases that have FIXMEs.
-
- Also fixes an off-by-one error (batch sizes were one larger than
- expected) and makes --run-part also have wraparound behavior, like
- --run-chunk.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-11-04 Erik Arvidsson <arv@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Support box-sizing without the vendor prefix
- https://bugs.webkit.org/show_bug.cgi?id=36713
-
- Based on patch by Peter Beverloo <peter@lvp-media.com>
-
- * iExploder/htdocs/cssproperties.in: Change -webkit-box-sizing to box-sizing.
-
-2010-11-04 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed rollout r71340, because it broke Chromium Windows bot.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-04 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- Make http locking default in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=48053
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-04 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- [NRWT] Clear invalid http locks on Windows platform as well
- https://bugs.webkit.org/show_bug.cgi?id=48515
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-11-02 Adam Roben <aroben@apple.com>
-
- Reduce our dependence on coreutils when running Python tests
-
- This patch introduces versions of the standard echo and cat utilities
- implemented in Python. They are probably missing features of their
- coreutils equivalents, but they can do what's necessary for our Python
- tests. This is useful on Windows, where these utilities typically
- aren't available.
-
- Fixes <http://webkit.org/b/48883> executive_unittest relies on echo
- and cat utilities from coreutils, which are not present on Windows
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/executive_unittest.py: Changed to use
- our Python-based echo and cat.
-
- * Scripts/webkitpy/common/system/fileutils.py: Added.
- (make_stdout_binary): On Windows, puts sys.stdout into binary mode so
- that \n won't be translated into \r\n. I couldn't think of a good way
- to test this directly without touching the filesystem, but it is tested
- indirectly by echo_unittest.
-
- * Scripts/webkitpy/test/cat.py: Added.
- (command_arguments): Returns a list for invoking cat with the given arguments.
- (main): Acts like a simplified version of the coreutils cat utility.
-
- * Scripts/webkitpy/test/cat_unittest.py: Added.
- (CatTest.assert_cat): Runs cat with the given input and ensures the
- output matches the input.
- (CatTest.test_basic): Performs a simple test of cat.
- (CatTest.test_no_newline): Tests what happens when the input string
- doesn't have a trailing newline.
- (CatTest.test_unicode): Tests passing a unicode string to cat.
- (CatTest.test_as_command): Tests running cat as a separate command.
-
- * Scripts/webkitpy/test/echo.py: Added.
- (command_arguments): Returns a list for invoking echo with the given arguments.
- (main): Acts like a simplified version of the coreutils echo utility.
-
- * Scripts/webkitpy/test/echo_unittest.py: Added.
- (EchoTest.test_basic): Performs a simple test of echo.
- (EchoTest.test_no_newline): Tests passing -n to echo to suppress the
- trailing newline.
- (EchoTest.test_unicode): Tests passing unicode and non-unicode strings
- to echo.
- (EchoTest.test_argument_order): Tests what happens when -n is not the
- first argument.
- (EchoTest.test_empty_arguments): Tests what happens when you pass [] to
- echo.main.
- (EchoTest.test_no_arguments): Tests what happens when you call
- echo.main with no arguments.
- (EchoTest.test_as_command): Tests running echo as a separate command.
-
-2010-11-04 Renata Hodovan <reni@inf.u-szeged.hu>
-
- Unreviewed: Add myself to the list of Committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-11-04 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Hook into QWebPage::scrollRequested for resizes-to-contents mode
-
- In RTC mode the QGraphicsWebView item is the size of the contents,
- scrolling works a bit differently (we need to react to scrollRequested.)
-
- Normally QGraphicsView will replay the last mouse event when scrolling,
- so to prevent WebKit from getting confused by this we temporarily make
- the QGraphicsView non-interactive.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::setPage):
- (WebViewGraphicsBased::scrollRequested):
- * QtTestBrowser/webview.h:
-
-2010-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Andreas Kling.
-
- Use OS(MAC_OS_X) rather than PLATFORM(MAC) in TestControllerQt
-
- PLATFORM(MAC) is not defined for the Qt port, as it refers to
- the Mac-port, not the Mac OS X operating system.
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::isExistingLibrary):
-
-2010-11-04 Leonid Ebril <leonid.ebril@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Adding iphone user agent string the user agent list for QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=48869
-
- * QtTestBrowser/useragentlist.txt:
-
-2010-11-03 Adam Roben <aroben@apple.com>
-
- Always use uppercase drive names in strings returned by abspath_to_uri
-
- Some versions of cygpath use lowercase drive letters while others use
- uppercase, which makes it hard to test the output of code that uses
- cygpath.
-
- Fixes <http://webkit.org/b/48914> webkitpy.common.system.path_unittest
- fails with Cygwin 1.5
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/path.py:
- (cygpath): Updated the docstring to indicate that only absolute paths
- should be passed for now (though relative paths will work fine).
- (_Cygpath.convert): Upper-case the first letter of the converted Windows path.
-
-2010-11-03 George Guo <George.Guo@Nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser : set mmp rule pageddata in Symbian
- https://bugs.webkit.org/show_bug.cgi?id=48767
-
- Paging is needd on Symbian devices to support benchmarks tests like
- dromaeo.com and Celtic Kane that need a lot of memory to run
-
- * QtTestBrowser/QtTestBrowser.pro:
-
-2010-11-03 Jenn Braithwaite <jennb@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Chromium: Update resource tracking when moving a frame between documents
- https://bugs.webkit.org/show_bug.cgi?id=48363
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::assignIdentifierToRequest):
- Always put resource id in map so we can make assumptions about its
- presence.
- (WebViewHost::removeIdentifierForRequest):
- Added.
- (WebViewHost::didFinishResourceLoad):
- (WebViewHost::didFailResourceLoad):
- Check existence of resource id before removing from map.
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-11-03 Victor Wang <victorw@chromium.org>
-
- Reviewed by Adam Barth.
-
- [Chromium] update buildbot names in chromium rebaseline tool.
-
- https://bugs.webkit.org/show_bug.cgi?id=48881
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-11-03 Darin Adler <darin@apple.com>
-
- Updated Xcode projects by opening them with Xcode 3.2.4.
- Updated svn:ignore for Xcode projects.
-
- * MiniBrowser/MiniBrowser.xcodeproj: Added property svn:ignore.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj: Added property svn:ignore.
- * WebKitLauncher/WebKitLauncher.xcodeproj: Modified property svn:ignore.
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj: Updated with Xcode 3.2.4.
-
-2010-11-03 Adam Roben <aroben@apple.com>
-
- Stop waiting for messages from the web process after a timeout elapses
-
- TestController::runUntil now takes a timeout parameter that specifies
- how long to wait for the condition to become true. WebKitTestRunner
- takes a --timeout flag that specifies how long the timeout should be.
- run-webkit-tests passes this flag to WebKitTestRunner so its timeout
- will be similar to run-webkit-tests.
-
- Fixes <http://webkit.org/b/43047> <rdar://problem/8365833>
- WebKitTestRunner waits forever if the web process crashes
-
- Reviewed by Darin Adler and Anders Carlsson.
-
- * Scripts/old-run-webkit-tests:
- (top level): Moved the GuardMalloc timeout adjustment here from
- readFromDumpToolWithTimer.
- (openDumpTool): Make WTR use a timeout similar to but slightly shorter
- than the one that was specified on the command line.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController): Initialize our timeout values.
- (WTR::TestController::initialize): Parse the --timeout flag and use it
- to modify our timeout values.
- (WTR::TestController::resetStateToConsistentValues): Changed to use a
- short timeout while waiting for the web process to reset and to return
- a boolean indicating whether we were able to reset the web process.
- Uses a 5-second timeout while waiting for the process to be reset.
- (WTR::TestController::runTest): Changed to return a boolean indicating
- whether we were able to reset the web process (and thus run the test).
- (WTR::TestController::runUntil): Call through to platformRunUntil.
-
- (WTR::TestController::runTestingServerLoop):
- (WTR::TestController::run):
- Changed to bail if any test can't be run. This will cause the process
- to exit. (Unfortunately this will make run-webkit-tests think we
- crashed; see <http://webkit.org/b/48943>.)
-
- * WebKitTestRunner/TestController.h: Added platformRunUntil,
- m_longTimeout, and m_shortTimeout.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke): Use a short timeout when waiting for the
- initial response and a long timeout when waiting for the test to
- complete. Check whether runUntil timed out and print an error message
- if so.
-
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformRunUntil): Renamed from runUntil. Pass
- [NSDate distantPast] to -[NSRunLoop runMode:beforeDate:] so that we
- won't block waiting for the run loop. Only loop until the timeout
- elapses.
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::platformRunUntil): Renamed from runUntil. Added a
- FIXME about honoring the timeout.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformRunUntil): Renamed from runUntil. Use
- ::MsgWaitForMultipleObjectsEx to implement the timeout. Changed to use
- ::PeekMessageW so that we don't block waiting for messages to become
- available.
-
-2010-11-03 Adam Roben <aroben@apple.com>
-
- Add a plugin test that evaluates JS after removing the plugin element
- from the document
-
- This test replaces platform/win/plugins/plugin-delayed-destroy.html.
- That test was made to prevent a crash very similar to this one, but
- unfortunately tested only the mechanism that prevented the crash and
- not whether the crash itself was prevented. Since WebKit2 uses a
- different mechanism to prevent the crash, the test was failing even
- though WebKit2 was not vulnerable to the crash. This new test crashes
- if there is no mechanism in place to prevent it and passes in both
- WebKit1 and WebKit2.
-
- Fixes <http://webkit.org/b/46711> <rdar://problem/8485903>
- platform/win/plugins/plugin-delayed-destroy.html fails in WebKit2
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Added new file.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginDeallocate): Make sure we delete the PluginTest object. This
- prevents a leak and also allows us to test the crash.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::executeScript): Made this into a non-static member
- function.
-
- (PluginTest::waitUntilDone):
- (PluginTest::notifyDone):
- Updated for changes to executeScript.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added executeScript.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSAfterRemovingPluginElement.cpp: Added.
- (EvaluateJSAfterRemovingPluginElement::EvaluateJSAfterRemovingPluginElement):
- Initialize ourselves and tell the test harness to wait.
- (EvaluateJSAfterRemovingPluginElement::NPP_DestroyStream): Remove our
- plugin element from the document, then execute some JavaScript. If
- WebKit does not have appropriate mechanisms in place, we'll be
- destroyed inside the first call to executeScript and crash on the
- second call.
-
-2010-11-02 Stephen White <senorblanco@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] Fix LayoutTestController UMRs.
- https://bugs.webkit.org/show_bug.cgi?id=48872
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
-
-2010-11-03 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- REGRESSION: rebaseline-chromium-webkit-tests uses non-zero tolerance for
- image dup detection
- https://bugs.webkit.org/show_bug.cgi?id=48744
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - Make a function for option parsing for ease of test
- - Set 0 to options.tolerance
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- - Add a test for this change
-
-2010-11-02 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed: Add myself to the list of Committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-11-02 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::createContextForInjectedBundleTest):
-
-2010-11-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add a way to send startup messages on the context which can be posted when a process launches
- <rdar://problem/8617928>
- https://bugs.webkit.org/show_bug.cgi?id=48838
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (WKBundleInitialize):
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::initialize):
- (TestWebKitAPI::InjectedBundleController::didReceiveMessage):
- * TestWebKitAPI/InjectedBundleController.h:
- * TestWebKitAPI/InjectedBundleMain.cpp:
- (WKBundleInitialize):
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::createContextForInjectedBundleTest):
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp:
- (WKBundleInitialize):
- Update implementations of WKBundleInitialize to take an initial userData
- argument. Change TestWebKitAPI to use the new initial userData to initialize
- each test's bundle.
-
-2010-11-02 Benjamin Kalman <kalman@google.com>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests doesn't strip "LayoutTests/" from prefix, unlike old-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=48794
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Strip the "LayoutTests/" prefix from test argument paths.
-
-2010-11-02 Adam Roben <aroben@apple.com>
-
- Skip webkitpy.layout_tests.run_webkit_tests_unittest.MainTest on Cygwin
- Python 2.5.x
-
- It is known to hang on that version of Python. See
- <http://webkit.org/b/48614>.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: Use
- skip_if to skip MainTest on Cygwin Python 2.5.x.
-
- * Scripts/webkitpy/test/skip.py: Added.
- (skip_if): If the passed-in condition is false, find all the test_*
- methods of the given class and replace them with a function that just
- logs that we're skipping these tests. This is loosely based on the
- unittest.skip_if decorator added in Python 3.1.
- (_skipped_method): Returns a function that just logs that the tests are
- being skipped. This is used in place of the actual test_* functions.
-
- * Scripts/webkitpy/test/skip_unittest.py: Added.
- (SkipTest.setUp): Create a logger for ourselves and give it a handler
- that logs to a private stream.
- (SkipTest.tearDown): Reset the logger.
- (SkipTest.create_fixture_class): Returns a class that we use to test
- skip_if. It has a single test_* method, test_foo, that just calls
- through to a callback.
- (SkipTest.foo_callback): Record that test_foo was called.
- (SkipTest.test_skip_if_false): Pass skip_if a False condition and test
- that test_foo does get called.
- (SkipTest.test_skip_if_true): Pass skip_if a True condition and test
- that test_foo does not get called and the appropriate message gets
- logged.
-
-2010-11-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch should tell check-webkit-style which files were changed so
- check-webkit-style doesn't have to stat the whole working copy again
- https://bugs.webkit.org/show_bug.cgi?id=48792
-
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
-
-2010-11-02 Robert Kroeger <rjkroege@chromium.org>
-
- Reviewed by James Robinson.
-
- [Chromium/DRT] Make EventSendingController honour leapForward for touch events.
- https://bugs.webkit.org/show_bug.cgi?id=48777
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::sendCurrentTouchEvent):
-
-2010-11-02 Adam Roben <aroben@apple.com>
-
- Only track resource identifiers in DRT when dumpResourceLoadCallbacks
- is on
-
- This reverts Windows to our pre-r71097 behavior. That patch made us
- track all resource identifiers, including the main resource, so the
- main resource's URL started appearing in test output instead of
- "<unknown>". Arguably having the main resource's URL is better, but all
- other platforms print "<unknown>" and we want to match.
-
- Fixes <http://webkit.org/b/48837> <rdar://problem/8620351> REGRESSION
- (r71097): Many http tests failing on Windows
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::identifierForInitialRequest): Don't add the
- identifier to the URL map if we're not supposed to dump resource load
- callbacks.
- (ResourceLoadDelegate::removeIdentifierForRequest): Always remove the
- identifier from the URL map even if we're already "done". There's no
- point in keeping out-of-date identifiers around.
-
-2010-11-01 Jenn Braithwaite <jennb@chromium.org>
-
- Reviewed by Adam Roben.
-
- Windows: Update resource tracking when moving a frame between documents
- https://bugs.webkit.org/show_bug.cgi?id=48364
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (createWebViewAndOffscreenWindow):
- (main):
- Give each WebView its own ResourceLoadDelegate instance in order to
- make assertions about resource ids on a particular WebView.
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::identifierForInitialRequest):
- Always add id to the map.
- (ResourceLoadDelegate::removeIdentifierForRequest):
- Added.
- (ResourceLoadDelegate::willSendRequest):
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
- (ResourceLoadDelegate::didReceiveResponse):
- (ResourceLoadDelegate::didFinishLoadingFromDataSource):
- (ResourceLoadDelegate::didFailLoadingWithError):
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- Replace static descriptionSuitableForTestResult with static member function to access identifier map.
- * DumpRenderTree/win/ResourceLoadDelegate.h:
- (ResourceLoadDelegate::urlMap):
- Moved within class so that each WebView has its own id map.
-
-2010-11-01 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- remove debug code from run_webkit_tests.py
- https://bugs.webkit.org/show_bug.cgi?id=48800
-
- Remove temporary debug code and make --master-name required
- if --test-results-server is set now that all clients set
- --master-name.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-11-01 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- add plugin event logging for linux
- https://bugs.webkit.org/show_bug.cgi?id=48779
-
- This is taken from Chromium's fork of the layout test plugin:
- http://git.chromium.org/gitweb/?p=chromium.git/.git;a=blob;f=webkit/tools/npapi_layout_test_plugin/main.cpp;h=3ebdada2f049b3624756438cff852364f86a2ede;hb=HEAD#l348
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventX11):
- (NPP_HandleEvent):
-
-2010-11-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by James Robinson.
-
- new-run-webkit-tests: use DRT, child-processes=1 for GPU tests by default
- https://bugs.webkit.org/show_bug.cgi?id=48790
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2010-11-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Teach check-webkit-style how to accept a list of files to diff on the
- command line
- https://bugs.webkit.org/show_bug.cgi?id=48784
-
- In a future patch, webkit-patch will use this option to improve
- performance. I'm landing this in two pieces to avoid causing a version
- skew problem for the style-bot.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/optparser.py:
- * Scripts/webkitpy/style/optparser_unittest.py:
- * Scripts/webkitpy/style_references.py:
-
-2010-11-01 Anders Carlsson <andersca@apple.com>
-
- Reviewed by John Sullivan.
-
- Tear down the related WebProcessProxy when a WebContext is deallocated
- https://bugs.webkit.org/show_bug.cgi?id=48769
-
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- (TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame):
- We don't support empty URLs anymore, update test to expect a null URL instead.
-
-2010-11-01 Søren Gjesse <sgjesse@chromium.org>
-
- Reviewed by Andreas Kling.
-
- Fix warning when compiling the chromium port of DumpRenderShell
- with clang.
- https://bugs.webkit.org/show_bug.cgi?id=48414
-
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::javaScriptFlagsForLoad):
-
-2010-11-01 Adam Roben <aroben@apple.com>
-
- Fix typo from r71022
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-11-01 Adam Roben <aroben@apple.com>
-
- Trigger the Windows Release WebKit2 tests when a Release build
- finishes, not when a Debug build finishes
-
- Fixes <http://webkit.org/b/48754> Windows Release WebKit2 tests are
- triggered at the wrong time
-
- Reviewed by Sam Weinig.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Fixed
- triggerable name and trigger.
-
-2010-11-01 Mario Sanchez Prada <msanchez@igalia.com>
-
- Unreviewed. Adding my IRC nickname to the list of committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-31 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] [Gtk] Plug-ins having upper case in mime type are failing to load
-
- Qt and Gtk are case-sensitive when storing the declared mime-type
- of plugins. Since plugin mime-types are lowercased prior to searching
- for them in the plugin database, ensure they are loaded with the
- mime-type in lower case too.
-
- Change the test netscape plugin to declare its mimetype in sentence
- case so that the correct behaviour is enforced.
-
- https://bugs.webkit.org/show_bug.cgi?id=36815
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (NP_GetMIMEDescription):
-
-2010-10-31 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Support nodesFromRect in DRT
-
- https://bugs.webkit.org/show_bug.cgi?id=48716
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::nodesFromRect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-10-30 Andreas Kling <kling@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] QtTestBrowser: Switching view type moves the embedded inspector
- https://bugs.webkit.org/show_bug.cgi?id=48705
-
- Reinsert the embedded inspector into the splitter after changing
- between QWebView/QGraphicsWebView.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::init):
- (LauncherWindow::initializeView):
- * QtTestBrowser/webinspector.h:
- (WebInspector::WebInspector):
-
-2010-10-28 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Ojan Vafai.
-
- Needs a "LinuxEditingBehavior", perhaps with a better name
- https://bugs.webkit.org/show_bug.cgi?id=36627
-
- Adding support to Mac's, GTK+'s, Windows' and Chromium's LayoutTestController class to test the newly introduced Unix editing behavior.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setEditingBehavior):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setEditingBehavior):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setEditingBehavior):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setEditingBehavior):
-
-2010-10-29 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser: Add keyboard shortcut to toggle full screen (F11)
- https://bugs.webkit.org/show_bug.cgi?id=48695
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
-
-2010-10-29 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser: Fix uninitialized read in FpsTimer
- https://bugs.webkit.org/show_bug.cgi?id=48675
-
- FpsTimer::m_timer was never initialized and passed to QObject::killTimer()
- on startup with in -graphicsbased mode.
-
- * QtTestBrowser/fpstimer.cpp:
- (FpsTimer::FpsTimer):
- (FpsTimer::numFrames):
- (FpsTimer::stop):
- (FpsTimer::timerEvent):
- * QtTestBrowser/fpstimer.h:
-
-2010-10-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: change TestResults to be serializable
-
- In preparation for changing new-run-webkit-tests from
- multithreaded to multiprocess, we need to make sure the data
- going between the threads is easily serialized over a socket.
-
- This change adds serialization/pickling for the TestResults and
- TestFailure objects (using cPickle).
-
- The TestFailure objects included a "has_wdiff" flag for Text
- results, but the flag wasn't being used, so I've removed it,
- simplifying the state to basically a set of enum objects with
- associated methods.
-
- https://bugs.webkit.org/show_bug.cgi?id=48616
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py:Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-10-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: need to provide separate dashboard results for GPU tests
- https://bugs.webkit.org/show_bug.cgi?id=48687
-
- Modify the steps to upload the JSON files to the dashboards so
- that the GPU tests don't conflict with the regular tests on a
- port. We do this by modifying the --builder-name parameter to
- append " - GPU", which should cause the app to treat the results
- as a completely new builder. This is a little non-obvious, but
- keeps us from having to restructure the app.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-29 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] add debug logging to help diagnose flakiness dashboard issues
- https://bugs.webkit.org/show_bug.cgi?id=48657
-
- The appengine app thinks it's getting empty files uploaded. Add some logging
- to see if new-run-webkit-tests agrees.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-29 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [Chromium/DRT] Add master-name flag to new-run-webkit-tests.
- https://bugs.webkit.org/show_bug.cgi?id=48649
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added flag.
-
-2010-10-29 Nicolas Dufresne <nicolas.dufresne@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- Enable popup window in GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=48335
-
- The GtkLauncher application does not support opening new window when
- a link with "target=_blank" is clicked or similar call to
- window.open(). Instead, GtkLauncher does nothing which breaks
- navigation of some websites.
-
- * GtkLauncher/main.c:
- (activate_uri_entry_cb):
- (update_title):
- (link_hover_cb):
- (notify_title_cb):
- (notify_load_status_cb):
- (notify_progress_cb):
- (destroy_cb):
- (go_back_cb):
- (go_forward_cb):
- (create_web_view_cb):
- (web_view_ready_cb):
- (close_web_view_cb):
- (create_browser):
- (create_statusbar):
- (create_toolbar):
- (create_window):
- (main):
-
-2010-10-29 Adam Roben <aroben@apple.com>
-
- Teach check-webkit-style about WebKit2's idiosyncracies
-
- Fixes <http://webkit.org/b/48638> Style bot complains about a number
- of WebKit2 conventions
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/style/checker.py: Excluded some rules for various
- WebKit2-related files. Also updated the excluded rules for
- WebKitAPITest to match the current code.
-
-2010-10-29 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Adam Roben and David Kilzer.
-
- Fix and cleanup of build systems
- https://bugs.webkit.org/show_bug.cgi?id=48342
-
- * Scripts/build-webkit:
- - Remove unnecessary ENABLE_SANDBOX option.
- - Add ENABLE_FULLSCREEN_API option.
-
-2010-10-28 Adam Roben <aroben@apple.com>
-
- Switch the Windows WebKit2 bot to the Release configuration
-
- We only have one machine testing WebKit2 on Windows right now, and
- Debug is just too slow for it to keep up.
-
- Fixes (hopefully!) <http://webkit.org/b/48615> Windows WebKit2 bot is
- always way behind
-
- Reviewed by Jon Honeycutt.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-10-29 Leandro Gracia Gil <leandrogracia@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Added a second parameter to setMockSpeechInputResult for
- the language used in speech input.
- https://bugs.webkit.org/show_bug.cgi?id=47089
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- (LayoutTestController::pageSizeAndMarginsInPixels):
-
-2010-10-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] add a result-small.json file for the test dashboard
- https://bugs.webkit.org/show_bug.cgi?id=48547
-
- Output both a results.json file and a results-small.json file.
- The dashboard will load results-small.json by default so it loads faster.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
- Added a bunch of sys.path hackery. Unforunately, this uses hardcoded
- paths. That obviously needs to be fixed, but at least this way it
- clearly documents what paths are necessary.
-
-2010-10-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch upload calls changed_files more often than it should
- https://bugs.webkit.org/show_bug.cgi?id=48567
-
- Passing changed_files around everywhere isn't a very elegant solution
- but it's the one we have for the moment. I think keeping an explicit
- cache on Checkout (or making StepState() a real class) is a better
- long-term option.
-
- Previously bug_id_for_this_commit was calling changed_files and the
- result was never getting cached on the state. Now we're explicitly
- caching the result on the state and passing that to the bug_id_for_this_commit call.
-
- I looked into building unit tests for this. Doing so would require
- using a real Checkout object with a MockSCM and overriding the appropriate
- calls on SCM to count how often we're stating the file system.
- That's a useful set of tests to build for a separate change.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make suggest-reviewers slightly faster
- https://bugs.webkit.org/show_bug.cgi?id=48562
-
- Add @memoized to one more common call.
-
- * Scripts/webkitpy/common/checkout/api.py:
-
-2010-10-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch suggest-reviewers -g 260550a6e30b7bf34f16bdb4a5396cf26264fc1c is still very slow
- https://bugs.webkit.org/show_bug.cgi?id=48536
-
- This patch makes it about 40 seconds faster, but it still
- takes 1:40. This will require more refinement.
-
- The suggested reviewers list appears to be the same.
-
- I think the next step may be to have it stop the search after
- 5 reviewers are found. We never want to suggest 30 people.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- - Using --remove-empty to theoretically stop lookups past
- when a file is removed. I'm not entirely clear that the option
- does what it says it does. Example:
- git log --pretty=format:%H -5 --remove-empty -- /Projects/WebKit/WebCore/platform/wx/SearchPopupMenuWx.h
- returns only one commit
- vs.
- git log --pretty=format:%H -5 -- /Projects/WebKit/WebCore/platform/wx/SearchPopupMenuWx.h
- which returns 5. I was not aware that wx files were ever removed from the repository?
-
-2010-10-28 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by David Levin.
-
- [Chromium] Support FileSystem in chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=47643
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::openFileSystem): Added.
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::openFileSystem): Added.
-
-2010-10-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WKURLRefs should be allowed to be null
- <rdar://problem/8575621>
- https://bugs.webkit.org/show_bug.cgi?id=48535
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::didStartProvisionalLoadForFrame):
- (TestWebKitAPI::didCommitLoadForFrame):
- (TestWebKitAPI::didFinishLoadForFrame):
- Test that URLs are null pointers when unset.
-
-2010-10-28 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Adele Peterson.
-
- AX: multi select group option does not handle setting of AXSelectedChildren correctly
- https://bugs.webkit.org/show_bug.cgi?id=48464
-
- Add support for querying information about selected children to DRT, including:
- selectedChildAtIndex
- selectedChildrenCount
- setSelectedChild
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (selectedChildAtIndexCallback):
- (setSelectedChildCallback):
- (selectedChildrenCountCallback):
- (AccessibilityUIElement::setSelectedChild):
- (AccessibilityUIElement::selectedChildrenCount):
- (AccessibilityUIElement::selectedChildAtIndex):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::selectedChildAtIndex):
- (AccessibilityUIElement::selectedChildrenCount):
- (AccessibilityUIElement::setSelectedChild):
-
-2010-10-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add WebKit2 API for window feature getter/setters
- <rdar://problem/8590373>
- https://bugs.webkit.org/show_bug.cgi?id=48496
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-10-28 Søren Gjesse <sgjesse@chromium.org>
-
- Reviewed by Tony Chang.
-
- Added support for the DumpRenderTree flags --multiple-loads and --js-flags to the Python test runner.
- https://bugs.webkit.org/show_bug.cgi?id=48236
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-28 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] WebKitWebFrame's load-status is not properly notified to the tests
- https://bugs.webkit.org/show_bug.cgi?id=48048
-
- DRT now listens to WebKitWebFrame load-status signals for each
- created frame instead of the load-status signal of the
- WebKitWebView that only notifies about changes in the main frame.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadFinished):
- (webFrameLoadStatusNotified):
- (frameCreatedCallback):
- (createWebView):
- (main):
-
-2010-10-28 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] fix textInputController.{selectedRange,markedRange}
- https://bugs.webkit.org/show_bug.cgi?id=48487
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::markedRange): Return arrays of ints, rather than a string
- (TextInputController::selectedRange): Ditto.
-
-2010-10-27 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] add a master-name flag to new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=48488
-
- The test results server now allows adding a master name to
- the uploaded files. This lets us distinguish bots that have
- the same name, but are on different masters.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-28 Adam Roben <aroben@apple.com>
-
- Don't append a newline to the test output if the frame has no document
- element in WebKitTestRunner
-
- Fixes <http://webkit.org/b/48526> Extra trailing newline when running
- plugins/document-open.html in WebKitTestRunner
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::toJS): Added. Turns a UTF-8 C string into a JSStringRef.
- (WTR::hasDocumentElement): Added. Uses the JSC API to figure out
- whether the frame has a document element.
- (WTR::dumpFrameText): Match DRT by bailing (rather than appending an
- empty string and a newline) if the frame has no document element.
-
-2010-10-28 Adam Roben <aroben@apple.com>
-
- Skip npn-invalidate-rect-invalidates-window.html on headless XP
- machines
-
- TestNetscapePlugIn never receives a WM_PAINT message on headless XP
- machines, so this test times out. Fixing the test is covered by
- <http://webkit.org/b/48333>.
-
- * Scripts/old-run-webkit-tests: Skip
- npn-invalidate-rect-invalidates-window.html on Windows if accelerated
- compositing support is disabled, which likely means we're on a headless
- XP machine.
-
-2010-10-28 Kimmo Kinnunen <kimmok@iki.fi>
-
- Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch suggest-reviewers -g 260550a6e30b7bf34f16bdb4a5396cf26264fc1c is very slow
- https://bugs.webkit.org/show_bug.cgi?id=48500
-
- This doesn't fix the problem, but it makes things slightly better.
- Each git svn find-rev call takes about .25 seconds on my desktop.
- This patch uses a new memoized class to avoid those calls when possible.
-
- The real slowness is still git log on some files, like:
- git log --pretty=format:%H -5 -- /Projects/WebKit/WebCore/platform/wx/SearchPopupMenuWx.h
- I'm not yet sure how to make the pathological git logs better.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/memoized.py: Added.
- * Scripts/webkitpy/common/memoized_unittest.py: Added.
-
-2010-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- EWS bots should not use --quiet when running build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=48482
-
- --quiet is only correct when the sub-process does the error reporting.
- In the case of _can_build() the parent process is reporting the error.
- We'd like the full build log at queues.webkit.org so someone can look
- at the log and understand why the EWS is failing to build trunk.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-27 Brian Weinstein <bweinstein@apple.com>
-
- More Windows build fixage. Rename a variable that was named string.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::hasPrefix):
-
-2010-10-27 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] Make the test results server store which master the bot is on
- https://bugs.webkit.org/show_bug.cgi?id=48478
-
- The chromium bots recently changed so that there are multiple slaves with
- the same name on different masters. Up till now, the test results server
- assumed slave names were unique. Adds a master field to the file in order
- to distinguish.
-
- Also, for files that currently lack a master or testtype, set them appropriately.
-
- * TestResultServer/handlers/testfilehandler.py:
- * TestResultServer/index.yaml:
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/testfile.py:
- * TestResultServer/templates/showfilelist.html:
- * TestResultServer/templates/uploadform.html:
-
-2010-10-26 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs to support layoutTestController.dumpBackForwardList
- https://bugs.webkit.org/show_bug.cgi?id=42322
- rdar://problem/8193631
-
- WebKitTestRunner needs to support layoutTestController.clearBackForwardList
- https://bugs.webkit.org/show_bug.cgi?id=42333
- rdar://problem/8193643
-
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
- Renamed the product to WebKitTestRunnerInjectedBundle to avoid
- name conflicts in the build directory.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added dumpBackForwardList and clearBackForwardList.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle): Removed initialization of m_mainPage.
- (WTR::InjectedBundle::didCreatePage): Removed unneeded underscore.
- (WTR::InjectedBundle::willDestroyPage): Ditto.
- (WTR::InjectedBundle::didReceiveMessage): Ditto.
- (WTR::InjectedBundle::initialize): Ditto.
- (WTR::InjectedBundle::didCreatePage): Changed code to use m_pages
- instead of m_mainPage and m_otherPages.
- (WTR::InjectedBundle::willDestroyPage): Ditto.
- (WTR::InjectedBundle::page): Ditto.
- (WTR::InjectedBundle::beginTesting): Ditto.
- (WTR::InjectedBundle::done): Ditto.
- (WTR::InjectedBundle::closeOtherPages): Ditto.
- (WTR::InjectedBundle::dumpBackForwardListsForAllPages): Added.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Changed
- page function to longer be inline, and pageCount function
- to use m_pages. Added dumpBackForwardListsForAllPages, and
- removed some underscores. Replaced m_mainPage and m_otherPageas
- with m_pages.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::adoptWK): Added.
- (WTR::hasPrefix): Added.
- (WTR::InjectedBundlePage::reset): Added code to set up
- m_previousTestBackForwardListItem.
- (WTR::InjectedBundlePage::dump): Added code to call
- dumpBackForwardListsForAllPages.
- (WTR::compareByTargetName): Added.
- (WTR::dumpBackForwardListItem): Added.
- (WTR::InjectedBundlePage::dumpBackForwardList): Added.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Added
- dumpBackForwardList and m_previousTestBackForwardListItem.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize
- m_shouldDumpBackForwardListsForAllWindows to false.
- (WTR::LayoutTestController::clearBackForwardList): Added.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- Added dumpBackForwardList, clearBackForwardList,
- shouldDumpBackForwardListsForAllWindows, and
- m_shouldDumpBackForwardListsForAllWindows.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Set up
- didReceiveSynchronousMessageFromInjectedBundle.
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- Added.
- * WebKitTestRunner/TestController.h: Ditto.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
- Added.
- * WebKitTestRunner/TestInvocation.h: Ditto.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- Renamed bundle to WebKitTestRunnerInjectedBundle (see above).
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::initializeInjectedBundlePath): Ditto.
-
-2010-10-27 Chris Rogers <crogers@google.com>
-
- Reviewed by Chris Marrin.
-
- Add ENABLE_WEB_AUDIO feature enable flag (initially disabled) to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=48279
-
- * Scripts/build-webkit:
-
-2010-10-27 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- build-webkit should collect Visual Studio Express logs and display them
- https://bugs.webkit.org/show_bug.cgi?id=39199
-
- It turns out my previous patch wasn't actually working on the win-ews
- machine. So I've fixed my mistakes from before.
-
- * Scripts/build-webkit:
- - Windows VSE builds change the CWD while building. Why? Who knows.
- * Scripts/print-vse-failure-logs:
- - windows VSE builds don't use Debug/Release as I expected, so I've
- moved off of --configuration to --top-level and added the /obj
- optimization while I was there.
-
-2010-10-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r70674.
- http://trac.webkit.org/changeset/70674
- https://bugs.webkit.org/show_bug.cgi?id=48053
-
- Broke Chromium Windows build.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-25 Tony Chang <tony@chromium.org>
-
- Reviewed by Anders Carlsson.
-
- compile TestNetscapePlugIn on chromium linux
- https://bugs.webkit.org/show_bug.cgi?id=48274
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_Initialize): On Linux, plugin funcs are set in initialize.
- (NPP_New): Mark the plugin as windowless.
- (NPP_GetValue): Handle mime type values.
- (NP_GetMIMEDescription):
- (NP_GetValue):
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h: define TRUE and FALSE, which are in webkit's npapi.h.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h: Pull in npapi.h to get TRUE/FALSE (matches webkit's npfunctions.h)
-
-2010-10-27 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Remove contentSizeChanged callbacks as it is no longer
- part of the public UIClient.
-
- Make WKPageContentsSizeChangedCallback be a private API
- https://bugs.webkit.org/show_bug.cgi?id=48409
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-10-27 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- Make http locking default in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=48053
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-27 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- [NRWT] Fix http lock on Windows platform
- https://bugs.webkit.org/show_bug.cgi?id=48321
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-10-27 Satish Sampath <satish@chromium.org>
-
- Unreviewed, rolling out r70665.
- http://trac.webkit.org/changeset/70665
- https://bugs.webkit.org/show_bug.cgi?id=47089
-
- Need to address Alexey's review comments.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-10-27 Leandro Gracia Gil <leandrogracia@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Added a second parameter to setMockSpeechInputResult for
- the language used in speech input.
- https://bugs.webkit.org/show_bug.cgi?id=47089
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- (LayoutTestController::pageSizeAndMarginsInPixels):
-
-2010-10-27 Adam Roben <aroben@apple.com>
-
- Reset TestNetscapePlugIn's NPP_GetValue pointer when
- NullNPPGetValuePointer finishes running
-
- Fixes <http://webkit.org/b/48435> REGRESSION (r70655): Many plugins
- tests are failing on Qt
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_Destroy):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Added a do-nothing NPP_Destroy implementation.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NullNPPGetValuePointer.cpp:
- (NullNPPGetValuePointer::NullNPPGetValuePointer): Save the original
- NPP_GetValue pointer in m_originalNPPGetValuePointer so we can restore
- it later.
- (NullNPPGetValuePointer::NPP_Destroy): Added. Restores the original
- NPP_GetValue pointer so it can be used in other tests.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_Destroy):
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_destroy_instance):
- Call through to the PluginTest when NPP_Destroy is called.
-
-2010-10-26 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2 shouldn't try to send an empty user agent
- https://bugs.webkit.org/show_bug.cgi?id=48397
-
- Add a test that when we set our custom user agent to an empty string, we don't send
- an empty user agent.
-
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp: Added.
- (TestWebKitAPI::didRunJavaScript): Make sure that the result of navigator.userAgent isn't empty.
- (TestWebKitAPI::TEST): Set our custom user agent to the empty string, and run navigator.userAgent.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add the new file.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Ditto.
-
-2010-10-27 Adam Roben <aroben@apple.com>
-
- Check in file I forgot in r70653
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (NP_Initialize): Save the NPPluginFuncs struct the browser passed to us
- so we can be naughty and modify it later.
-
-2010-10-27 Adam Roben <aroben@apple.com>
-
- Test that WebKit doesn't crash if the plugin passes 0 for its
- NPP_GetValue pointer
-
- Test for <http://webkit.org/b/48433> Crash in
- NetscapePlugin::shouldLoadSrcURL when using Shockwave Director 10.3 in
- WebKit2 on Windows
-
- Reviewed by Eric Carlson.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Added NullNPPGetValuePointer.cpp.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- Set up a place to store the NPPluginFuncs struct the browser passed to us.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NullNPPGetValuePointer.cpp: Added.
- (NullNPPGetValuePointer::NullNPPGetValuePointer): Null out the
- NPP_GetValue pointer we passed to the browser to simulate a plugin that
- doesn't implement NPP_GetValue.
- (NullNPPGetValuePointer::NPP_GetValue): Print an error message. If this
- function is called, it means that WebKit has changed in a way that
- makes this test invalid.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_GetEntryPoints): Save the NPPluginFuncs struct the browser passed
- to us so we can be naughty and modify it later.
-
-2010-10-27 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- Remove references to ancient QGVLauncher and QtLauncher
- https://bugs.webkit.org/show_bug.cgi?id=48430
-
- QtTestBrowser substitutes both and has checks enabled.
-
- * Scripts/webkitpy/style/checker.py: remove references
- * Scripts/webkitpy/style/checker_unittest.py: ditto
-
-2010-10-27 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] Don't use image hash when it's no need in single test mode.
- https://bugs.webkit.org/show_bug.cgi?id=48326
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
-
-2010-10-27 David Kilzer <ddkilzer@apple.com>
-
- Fix leak of CFMutableDictionaryRef in createXMLStringFromWebArchiveData()
-
- Reviewed by Adam Roben.
-
- Follow-up fix for: <https://bugs.webkit.org/show_bug.cgi?id=48278>
-
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp:
- (createXMLStringFromWebArchiveData): Use RetainPtr<> to fix a
- leak introduced in r70613.
-
-2010-10-27 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [NRWT] Add platform specific baseline search paths for Qt port
- https://bugs.webkit.org/show_bug.cgi?id=48428
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2010-10-27 Adam Roben <aroben@apple.com>
-
- Catch exceptions when checking if we're inside a git working directory
-
- Fixes <http://webkit.org/b/48420> REGRESSION (r70562): test-webkitpy
- fails on systems without git installed
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/net/credentials.py:
- (Credentials._credentials_from_git): Put the call to
- Git.in_working_directory inside the try/except since it, too, attempts
- to execute git and thus will throw on systems that don't have git
- installed.
-
-2010-10-27 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by David Kilzer.
-
- Convert DumpRenderTree webarchive code to CoreFoundation
- https://bugs.webkit.org/show_bug.cgi?id=48278
-
- CFPropertyListCreateWithData and CFPropertyListCreateData are only available in 10.6+.
- Replace CFPropertyListCreateWithData by a combination of CFReadStreamCreateWithBytesNoCopy and CFPropertyListCreateFromStream.
- Replace CFPropertyListCreateData by CFPropertyListCreateXMLData.
-
- These changes are wrapped in BUILDING_ON_LEOPARD, as the methods are deprecated on 10.6+.
-
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp:
- (createXMLStringFromWebArchiveData):
-
-2010-10-26 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- Remove the absolute path used to include DumpRenderTreeSupportGtk.h from LayoutTestController.h
-
- It turns out this is rather unneeded since WebKitTools/GNUMakefile.am has WebKit/gtk/ in its include
- path, and then we can just do #include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
-
-2010-10-26 David Kilzer <ddkilzer@apple.com>
-
- Rename WebArchiveDumpSupport.mm to WebArchiveDumpSupport.cpp
-
- Reviewed by Adam Roben.
-
- Part 4 of 4: <http://webkit.org/b/48278> Convert DumpRenderTree webarchive code to CoreFoundation
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Updated for file moves and renames.
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp: Renamed from DumpRenderTree/mac/WebArchiveDumpSupport.mm.
- * DumpRenderTree/cf/WebArchiveDumpSupport.h: Renamed from DumpRenderTree/mac/WebArchiveDumpSupport.h.
-
-2010-10-26 David Kilzer <ddkilzer@apple.com>
-
- Convert WebArchiveDumpSupport.mm from NS objects to CF types
-
- Reviewed by Adam Roben.
-
- Part 3 of 4: <http://webkit.org/b/48278> Convert DumpRenderTree webarchive code to CoreFoundation
-
- In order to share WebArchive code between the Mac and Windows
- ports, the code in WebArchiveDumpSupport.mm was converted from
- Cocoa to C++ using CoreFoundation (CF) types.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Renamed serializeWebArchiveToXML() to
- createXMLStringFromWebArchiveData() and added HardAutorelease()
- to prevent leaks.
- * DumpRenderTree/mac/WebArchiveDumpSupport.h:
- (createXMLStringFromWebArchiveData): Renamed from
- serializeWebArchiveToXML(). Changed to use CF types.
- (createCFURLResponseFromResponseData): Renamed from
- unarchiveNSURLResponseFromResponseData(). Changed to use CF
- types for its parameter and return type.
- * DumpRenderTree/mac/WebArchiveDumpSupport.mm: Replaced use of
- NS objects with CF types. It will be renamed to *.cpp in a
- future commit.
- (convertMIMEType): Changed to use case-insensitive string
- comparisons.
- (convertWebResourceDataToString):
- (normalizeHTTPResponseHeaderFields):
- (normalizeWebResourceURL):
- (convertWebResourceResponseToDictionary):
- (compareResourceURLs):
- (createXMLStringFromWebArchiveData):
- * DumpRenderTree/mac/WebArchiveDumpSupportMac.mm:
- (createCFURLResponseFromResponseData): Renamed from
- unarchiveNSURLResponseFromResponseData(). Changed to use CF
- types for its parameter and return type.
-
-2010-10-26 David Kilzer <ddkilzer@apple.com>
-
- Extract use of NSKeyedUnarchiver from WebArchiveDumpSupport.mm
-
- Reviewed by Adam Roben.
-
- Part 2 of 4: <http://webkit.org/b/48278> Convert DumpRenderTree webarchive code to CoreFoundation
-
- There is no equivalent to NSKeyedUnarchiver in CoreFoundation,
- so extract it into a platform-specific source file.
-
- * DumpRenderTree/mac/WebArchiveDumpSupport.h:
- (unarchiveNSURLResponseFromResponseData): Added declaration.
- * DumpRenderTree/mac/WebArchiveDumpSupport.mm:
- (convertWebResourceResponseToDictionary): Extracted code to
- unarchiveNSURLResponseFromResponseData() in
- WebArchiveDumpSupportMac.mm. Updated logic to return early if
- nil is returned from unarchiveNSURLResponseFromResponseData().
- * DumpRenderTree/mac/WebArchiveDumpSupportMac.mm:
- (unarchiveNSURLResponseFromResponseData): Added. Extracted
- code from convertWebResourceResponseToDictionary() in
- WebArchiveDumpSupport.mm.
-
-2010-10-26 David Kilzer <ddkilzer@apple.com>
-
- Extract call to -[WebHTMLRepresentation supportedNonImageMIMETypes] from WebArchiveDumpSupport.mm
-
- Reviewed by Adam Roben.
-
- Part 1 of 4: <http://webkit.org/b/48278> Convert DumpRenderTree webarchive code to CoreFoundation
-
- The call to -[WebHTMLRepresentation supportedNonImageMIMETypes]
- is not cross-platform between Mac and Windows, so extract it
- into a platform-specific source file.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added
- WebArchiveDumpSupportMac.mm to the project.
- * DumpRenderTree/mac/WebArchiveDumpSupport.h:
- (supportedNonImageMIMETypes): Added declaration.
- * DumpRenderTree/mac/WebArchiveDumpSupport.mm:
- (convertWebResourceDataToString): Replaced call to
- -[WebHTMLRepresentation supportedNonImageMIMETypes] with
- supportedNonImageMIMETypes().
- * DumpRenderTree/mac/WebArchiveDumpSupportMac.mm: Added.
- (supportedNonImageMIMETypes): Added. Extracted from
- WebArchiveDumpSupport.mm.
-
-2010-10-26 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Implement DumpRenderTreeSupportGtk (similarly to DumpRenderTreeSupportQt idea)
- https://bugs.webkit.org/show_bug.cgi?id=48199
-
- Implements support to WebKitTabToLinksPreferenceKey through LayoutTestController::overridePreference.
- The corresponding DumpRenderTreeSupportGtk method is called in the DRT context only.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- (createWebView):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference):
-
-2010-10-26 Ariya Hidayat <ariya@sencha.com>
-
- Unreviewed, change the order of my emails for bugzilla autocompletion.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- build-webkit should collect Visual Studio Express logs and display them
- https://bugs.webkit.org/show_bug.cgi?id=39199
-
- * Scripts/build-webkit:
- * Scripts/print-vse-failure-logs: Added.
- * Scripts/webkitdirs.pm:
-
-2010-10-26 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48224> build-webkit: add support for --meter-tag switch
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/build-webkit: Added support for --meter-tag switch.
- It should have been added with r60820.
-
-2010-10-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Reviewed by Dumitru Daniliuc.
-
- check-webkit-style fails on operator+=, operator-=, ... methods
- https://bugs.webkit.org/show_bug.cgi?id=48258
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added exceptions
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added unit-tests
-
-2010-10-26 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- remove DEFER support from new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=48387
-
- DEFER was needed when we were trying to ship Chrome beta.
- Now it's just extra complication.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2010-10-26 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Adding import with_statement to fix python 2.5.
-
- Teach webkit-patch how to read credentials from the environment
- https://bugs.webkit.org/show_bug.cgi?id=48275
-
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- - import with_statement to fix python 2.5.
-
-2010-10-26 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=48375
- <rdar://problem/8392724> Need delegate calls in PageLoaderClient to indicate if we have
- loaded insecure content
-
- Updated for WebKit2 changes.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didDisplayInsecureContentForFrame):
- (didRunInsecureContentForFrame):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didDisplayInsecureContentForFrame):
- (WTR::InjectedBundlePage::didRunInsecureContentForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-10-26 Adam Roben <aroben@apple.com>
-
- Clear up confusion between "3D rendering" and "accelerated compositing"
-
- WebKit has no software-based 3D rendering implementation, so 3D
- rendering can only be enabled when accelerated compositing is. But DRT
- was falsely reporting that 3D rendering was available on machines that
- don't support accelerated compositing, leading to much confusion.
-
- Reviewed by Darin Adler.
-
- Fixes <http://webkit.org/b/48370> REGRESSION (r70540): Many
- transforms/3d tests are failing on the XP bots
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main): When ENABLE(3D_RENDERING) is turned on, only report that 3D
- rendering is available when acclerated compositing is also available.
-
- * Scripts/old-run-webkit-tests: Skip tests that use the
- -webkit-transform-3d media query when 3D rendering is disabled,
- rather than when accelerated compositing is disabled.
-
-2010-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Remove rietveld code now that it's unused
- https://bugs.webkit.org/show_bug.cgi?id=48359
-
- Was cool that we added this support, but now that it's
- not used it makes little sense to keep it around.
- We can always restore this code from SVN if we need it.
-
- * Scripts/webkitpy/common/config/__init__.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/common/net/rietveld.py: Removed.
- * Scripts/webkitpy/common/net/rietveld_unittest.py: Removed.
- * Scripts/webkitpy/thirdparty/__init__.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py: Removed.
-
-2010-10-26 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- pageDidScroll callback should be on the UI process client rather than (or in addition to) the web process client
- https://bugs.webkit.org/show_bug.cgi?id=48366
- <rdar://problem/8595202>
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tony Chang.
-
- Teach webkit-patch how to read credentials from the environment
- https://bugs.webkit.org/show_bug.cgi?id=48275
-
- This makes it possible for svn users to have their bugzilla credentials
- stored in their environment instead of typing them every time.
-
- We need this for making it easy to run the win-ews bot (which currently
- uses svn instead of git).
-
- * Scripts/webkitpy/common/net/credentials.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
-
-2010-10-26 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Kent Tamura.
-
- Input Method inserts conversion candidates unexpectedly
- https://bugs.webkit.org/show_bug.cgi?id=46868
-
- Adds setComposition() to TextInputController to make DRT emulate
- an input method behavior.
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::TextInputController):
- (TextInputController::setComposition): Added.
- * DumpRenderTree/chromium/TextInputController.h:
-
-2010-10-26 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Sam Weinig.
-
- Support layoutTestController.layerTreeAsText in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=42145
-
- Implement layerTreeAsText() in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::layerTreeAsText):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2010-10-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch rollout produces incorrect patch when using svn move
- https://bugs.webkit.org/show_bug.cgi?id=48244
-
- We need to flush our caches when we modify the working copy.
-
- * Scripts/webkitpy/tool/steps/revertrevision.py:
-
-2010-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue flaky test message can list the same author more than once
- https://bugs.webkit.org/show_bug.cgi?id=48268
-
- tonikitoo reported to me over IRC this morning that he's seen
- the commit-queue report flaky tests with author lists like:
- "adam, adam and adam", suggesting we're not uniquing authors
- before writing the message.
-
- I fixed the uniquing and added a bunch more unit testing.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-26 Adam Roben <aroben@apple.com>
-
- Pull in the FeatureDefines*.vsprops files when building DRT
-
- This ensures that various ENABLE() macros will get set correctly.
- (Prior to r70320 we were picking up the ENABLE(3D_RENDERING) flag
- through wtf/Platform.h.)
-
- Fixes <http://webkit.org/b/48343> REGRESSION (r70320): DumpRenderTree
- says 3D_RENDERING is disabled even when it is enabled
-
- Reviewed by Ada Chan.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Added
- FeaturesDefines*.vsprops to all configurations.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Touched to force a rebuild.
-
-2010-10-26 Søren Gjesse <sgjesse@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Added options --multiple-loads and --js-flags to chromium DumpRenderTree. The option --multiple-loads=X
- is used to have DumpRenderTree load each test it runs X times. To be able to have more fine-grained control
- of how the JavaScript engine behaves for each load the flag --js-flags can specify a list of flag-sets like this
-
- --js-flags="--xxx,--noxxx --yyy,--noyyy"
-
- First load will run with --xxx, the second with --yyy and the third without any (the 'no' prefix is handled by
- V8 to turn off the flag).
-
- The changes to the Python test runner will be in a separate change.
-
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::testFinished):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::loadCount):
- (TestShell::setLoadCount):
- (TestShell::javaScriptFlagsForLoad):
- (TestShell::setJavaScriptFlags):
- (TestShell::setDumpWhenFinished):
-
-2010-10-26 Adam Roben <aroben@apple.com>
-
- Skip more tests that depend on accelerated compositing when accelerated
- compositing is disabled
-
- Fixes <http://webkit.org/b/48329> Some tests fail when accelerated
- compositing is disabled
-
- Reviewed by John Sullivan.
-
- * Scripts/old-run-webkit-tests: Added more tests to skip when
- accelerated compositing is disable. The tests all have output that
- changes depending on whether accelerated compositing is enabled.
-
-2010-10-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch should clean up svn locks when passed --force-clean
- https://bugs.webkit.org/show_bug.cgi?id=48269
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-10-25 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Add a pageDidScroll BundleUIClient callback
- https://bugs.webkit.org/show_bug.cgi?id=48260
- <rdar://problem/8531159>
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2010-10-25 Johnny Ding <jnd@chromium.org>
-
- Reviewed by Tony Chang.
-
- Dump the gesture status of frame in frame load callbacks in DumpRenderTree
- by adding a new method dumpUserGestureInFrameLoadCallbacks.
- Now only dump the gesture status in "DidStartProvisionalLoad" callback.
- https://bugs.webkit.org/show_bug.cgi?id=47849
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpUserGestureInFrameLoadCallbacksCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpUserGestureInFrameLoadCallbacks):
- (LayoutTestController::setDumpUserGestureInFrameLoadCallbacks):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpUserGestureInFrameLoadCallbacks):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::shouldDumpUserGestureInFrameLoadCallbacks):
- (LayoutTestController::setShouldDumpUserGestureInFrameLoadCallbacks):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::shouldDumpUserGestureInFrameLoadCallbacks):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didStartProvisionalLoad):
- (WebViewHost::printFrameUserGestureStatus):
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[WebFrame _drt_printFrameUserGestureStatus]):
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
- (-[FrameLoadDelegate webView:didCommitLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailProvisionalLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[FrameLoadDelegate webView:didFailLoadWithError:forFrame:]):
- (-[FrameLoadDelegate webView:windowScriptObjectAvailable:]):
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpUserGestureInFrameLoadCallbacks):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-10-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r70442.
- http://trac.webkit.org/changeset/70442
- https://bugs.webkit.org/show_bug.cgi?id=48248
-
- http locking doesn't work on Windows (Requested by Ossy on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-25 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- Make http locking default in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=48053
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-25 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48185> build-webkit: add support for --progress-tag switch
- (Re-landing r70413 after Qt minimal buildfix: r70440.)
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/build-webkit: Added support for --progress-tag switch.
- It should have been added with r57051.
-
-2010-10-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Kilzer.
-
- webkit-patch upload fails when the patch removes a file
- https://bugs.webkit.org/show_bug.cgi?id=48187
-
- We need to use "--" to separate file names from the rest of the
- command.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-10-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r70413.
- http://trac.webkit.org/changeset/70413
- https://bugs.webkit.org/show_bug.cgi?id=48210
-
- It broke Qt minimal build (Requested by Ossy on #webkit).
-
- * Scripts/build-webkit:
-
-2010-10-24 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt][QtTestBrowser] Toggle use of QGraphicsView messes up the menu
- https://bugs.webkit.org/show_bug.cgi?id=48141
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::init):
- (LauncherWindow::initializeView):
- (LauncherWindow::toggleWebView):
-
-2010-10-24 Daniel Bates <dbates@rim.com>
-
- Reviewed by David Kilzer.
-
- Fix Perl uninitialized warnings in VCSUtils::svnStatus()
- and VCSUtils::removeEOL().
- https://bugs.webkit.org/show_bug.cgi?id=48196
-
- VCSUtils::svnStatus() concatenates the output of svn status with
- a new line character and svn status may return no output (say for
- a file that has not been added, deleted, or modified). We should
- only concatenate the output of svn status if there is some.
-
- Also, VCSUtils::removeEOL() should ensure that its argument
- is initialized before performing a string substitution.
-
- * Scripts/VCSUtils.pm:
- - Modified removeEOL() to return "" if its argument is undefined.
- - Exported removeEOL() so that it can be tested.
- * Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl: Added.
-
-2010-10-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48185> build-webkit: add support for --progress-tag switch
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/build-webkit: Added support for --progress-tag switch.
- It should have been added with r57051.
-
-2010-10-24 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48184> build-webkit: reformat support variables for better maintainability
-
- Reviewed by Daniel Bates.
-
- * Scripts/build-webkit: Alphabetized the @features array based
- on the name of the feature. Reformatted the list of support
- variables so that they match the order of @features, and so that
- each has its own line. This makes it easy to add new variables
- in the correct order.
-
-2010-10-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS never removes invalid patch ids
- https://bugs.webkit.org/show_bug.cgi?id=48173
-
- This is just sticking another finger in the dam.
- However this adds more unit testing which will help
- us make sure we're always releasing patches once we
- redesign the release_patch API and call these from
- a more central place.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- - Added the ability to request invalid patches.
- Log a warning message to make sure we don't ever have
- tests use invalid patch fetches by mistake.
-
-2010-10-23 Dan Bernstein <mitz@apple.com>
-
- Build fix. Add stub implementations for required NSDraggingInfo methods.
-
- * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:
- (-[DumpRenderTreeDraggingInfo draggingFormation]):
- (-[DumpRenderTreeDraggingInfo setDraggingFormation:]):
- (-[DumpRenderTreeDraggingInfo animatesToDestination]):
- (-[DumpRenderTreeDraggingInfo setAnimatesToDestination:]):
- (-[DumpRenderTreeDraggingInfo numberOfValidItemsForDrop]):
- (-[DumpRenderTreeDraggingInfo setNumberOfValidItemsForDrop:]):
- (-[DumpRenderTreeDraggingInfo enumerateDraggingItemsWithOptions:forView:classes:searchOptions:usingBlock:]):
-
-2010-10-23 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48186> Remove unneeded WebHTMLRepresentationInternal.h header
-
- Reviewed by Sam Weinig.
-
- The only method defined in WebHTMLRepresentationInternal.h is
- also defined in WebHTMLRepresentation.h, so use that instead.
-
- * DumpRenderTree/mac/InternalHeaders/WebKit/WebHTMLRepresentationInternal.h: Removed.
- * DumpRenderTree/mac/WebArchiveDumpSupport.mm: Switched to use
- WebHTMLRepresentation.h.
-
-2010-10-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r70367.
- http://trac.webkit.org/changeset/70367
- https://bugs.webkit.org/show_bug.cgi?id=48176
-
- It made 8-10 tests crash on Qt bot (Requested by Ossy on
- #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setCustomPolicyDelegateCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setCustomPolicyDelegate):
- * DumpRenderTree/mac/PolicyDelegate.h:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForNavigationAction:request:frame:decisionListener:]):
- (-[PolicyDelegate setPermissive:]):
- (-[PolicyDelegate setControllerToNotifyDone:]):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
-
-2010-10-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS never releases patches which fail to apply
- https://bugs.webkit.org/show_bug.cgi?id=48171
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-10-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Make the EWS queues restart themselves more often.
- This matches the commit-queue.
-
- * EWSTools/start-queue.sh:
-
-2010-10-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should not pass --quiet to subcommands now that the parent command does the reporting
- https://bugs.webkit.org/show_bug.cgi?id=48165
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-22 Mario Sanchez Prada <msanchez@igalia.com>
-
- Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-20 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Barth and Darin Adler.
-
- Using the decidePolicyForMIMEType delegate message in an asynchronous manner does not work
- https://bugs.webkit.org/show_bug.cgi?id=48014
- <rdar://problem/8202716>
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setCustomPolicyDelegateCallback):
- Add callIgnoreInDecidePolicyForMIMETypeAfterOneSecond argument.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- Add callIgnoreInDecidePolicyForMIMETypeAfterOneSecond argument.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setCustomPolicyDelegate):
- Add callIgnoreInDecidePolicyForMIMETypeAfterOneSecond argument.
-
- * DumpRenderTree/mac/PolicyDelegate.h:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:decidePolicyForMIMEType:request:frame:decisionListener:]):
- If _callIgnoreInDecidePolicyForMIMETypeAfterOneSecond is true, call [listener ignore] after one second.
-
- (-[PolicyDelegate setCallIgnoreInDecidePolicyForMIMETypeAfterOneSecond:]):
- Update _callIgnoreInDecidePolicyForMIMETypeAfterOneSecond.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- Add callIgnoreInDecidePolicyForMIMETypeAfterOneSecond argument.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- Add callIgnoreInDecidePolicyForMIMETypeAfterOneSecond argument.
-
-2010-10-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Rename the InjectedBundle for TestWebKitAPI to InjectedBundleTestWebKitAPI.bundle
-
- * TestWebKitAPI/Configurations/InjectedBundle.xcconfig:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::createInjectedBundlePath):
-
-2010-10-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- test-webkitpy fails when passed -v (or any other option)
-
- Fix port/base_unittest to pass an explicit list of arguments
- rather than accidentally picking up sys.argv.
-
- https://bugs.webkit.org/show_bug.cgi?id=48071
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2010-10-22 Brian Weinstein <bweinstein@apple.com>
-
- Windows build fix. Update the createNewPage callback to account for the new
- arguments.
-
- * MiniBrowser/win/BrowserView.cpp:
- (createNewPage):
-
-2010-10-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2 needs to pass the current event modifier flags when requesting a new window
- https://bugs.webkit.org/show_bug.cgi?id=48140
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (createNewPage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- Update for new signature for the WKPageCreateNewPageCallback.
-
-2010-10-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Just adding a test case.
-
- The style-queue was not recognizing new patches. It turns
- out I had fixed this in an earlier change, but just not
- deployed to queues.webkit.org. As part of investigating why it
- was broken, I wrote a test for my previous change which I'm now landing.
-
- * QueueStatusServer/model/queues_unittest.py:
-
-2010-10-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS does not need to process obsolete patches
- https://bugs.webkit.org/show_bug.cgi?id=48093
-
- This was an easy change, but to test it I had to pipe
- real Attachment objects into the queue testing system.
- Doing so revealed a whole bunch of bugs in our unit tests,
- which I fixed as part of this patch.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- - This is the actual code change. This will not reduce the
- backlog in the EWS queues much, but it will make rejections
- much quicker for obsolete patches or closed bugs.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- - Test my new code.
- - Used a real attachment object and got rid of MockPatch
- - Shared code between the mac-ews and cr-mac-ews tests.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Can't use MockPatch anymore.
- - Removing MockPatch found more bugs here!
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- - MockBugzilla should not be a "Mock" object. Right now tool.bugs()
- is allowed, but wrong. Making it not a Mock will make tool.bugs() correctly fail.
-
-2010-10-22 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r70301.
- http://trac.webkit.org/changeset/70301
- https://bugs.webkit.org/show_bug.cgi?id=48126
-
- "Lang attribute layout tests failing" (Requested by satish on
- #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-10-22 Leandro Gracia Gil <leandrogracia@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Added a second parameter to setMockSpeechInputResult for
- the language used in speech input.
- https://bugs.webkit.org/show_bug.cgi?id=47089
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-10-21 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- [Win][DRT] should have LayoutTestController.hasSpellingMarker()
- https://bugs.webkit.org/show_bug.cgi?id=47885
-
- - Implemented LayoutTestController.hasSpellingMarker(),
- - Added fake spellcheck implementation.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/win/EditingDelegate.cpp:
- (indexOfFirstWordCharacter):
- (wordLength):
- (EditingDelegate::checkSpellingOfString):
- * DumpRenderTree/win/EditingDelegate.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::hasSpellingMarker):
-
-2010-10-21 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed. Re-enable test that was mistakenly disabled by r67974.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2010-10-21 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed fix for rebaseline-chromium-webkit-tests.
-
- Port.diff_image no longer has a tolerance parameter. Also, use
- get_option('tolerance') which is safer if the options object doesn't
- define a tolerance attribute (it doesn't for the one used in
- rebaseline_chromium_webkit_tests).
-
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-10-21 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add support for --tolerance in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=47959
-
- Add support for the --tolerance flag in NRWT. The Port.diff_image
- signature shouldn't need a tolerance parameter (it's not set per test),
- just have ports that use it (currently only WebKitPort) read it from
- the options object.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add --suggest-reviewers option to upload to auto-suggest reviewers for your patch
- https://bugs.webkit.org/show_bug.cgi?id=48088
-
- This is a first-pass. Works, but we'll eventually
- turn this on by default, refine the suggestion algorithm
- and possibly move it to a different place in the upload step order.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-10-21 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Chris Fleizach.
-
- [GTK] Segfault while testing accessibility/iframe-bastardization.html
- https://bugs.webkit.org/show_bug.cgi?id=30123
-
- Check m_element before actually using it to get the parent.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::parentElement): Add an extra check to
- make sure m_element points to a valid value before actually using
- it to get the parent. Also, assert ATK_IS_OBJECT(m_element).
-
-2010-10-21 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Crash evaluating JavaScript string that throws an exception
- https://bugs.webkit.org/show_bug.cgi?id=48092
- <rdar://problem/8487657>
-
- Add a test that evaluates a JavaScript string that throws an exception and check that
- the callback is called.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp: Added.
- (TestWebKitAPI::didRunJavaScript):
- (TestWebKitAPI::WebKit2_EvaluateJavaScript):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2010-10-21 Adam Roben <aroben@apple.com>
-
- Test that the plugin's HWND is invalidated when NPN_InvalidateRect is
- called
-
- Test for <http://webkit.org/b/48086> <rdar://problem/8482944>
- Silverlight doesn't repaint in WebKit2
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_InvalidateRect): Added. Calls through to the browser.
- (executeScript): Added. Asks the browser to evaluate the script.
-
- (PluginTest::waitUntilDone):
- (PluginTest::notifyDone):
- Added. Calls through to layoutTestController.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added
- * NPN_InvalidateRect and waitUntilDone/notifyDone.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp: Added.
- (TemporaryWindowMover::moveSucceeded):
- (TemporaryWindowMover::TemporaryWindowMover):
- (TemporaryWindowMover::~TemporaryWindowMover):
- This class moves a window on-screen and shows it, then moves it back and hides it.
-
- (NPNInvalidateRectInvalidatesWindow::NPNInvalidateRectInvalidatesWindow):
- Initialize our members.
- (NPNInvalidateRectInvalidatesWindow::~NPNInvalidateRectInvalidatesWindow):
- Delete our window mover if it hasn't been deleted already.
- (NPNInvalidateRectInvalidatesWindow::NPP_SetWindow): Subclass the
- plugin HWND and move the test harness window on screen.
- (NPNInvalidateRectInvalidatesWindow::wndProc): Call through to onPaint
- when we get a WM_PAINT message.
- (NPNInvalidateRectInvalidatesWindow::onPaint): Do the test and tell
- LayoutTestController we're done.
- (NPNInvalidateRectInvalidatesWindow::testInvalidateRect): Validate
- ourselves, invalidate our lower-right quadrant via NPN_InvalidateRect,
- then check that our HWND's invalid region is the rect that we
- invalidated.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * Added NPNInvalidateRectInvalidatesWindow.
-
-2010-10-21 Daniel Bates <dbates@rim.com>
-
- Add Git-support to do-file-rename
- https://bugs.webkit.org/show_bug.cgi?id=48015
-
- Fix tools. Export function scmMoveOrRenameFile so that it can be called from
- do-file-rename and do-webcore-rename. I inadvertently left this out of the patch.
-
- * Scripts/VCSUtils.pm:
-
-2010-10-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- mac-ews is not properly releasing patches
- https://bugs.webkit.org/show_bug.cgi?id=48076
-
- mac-ews overrides process_work_item, so it was not calling
- release_work_item like the default process_work_item would.
- To fix this I made all the status-reporting methods just
- release the patch. I expect we'll iterate on this design further.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-18 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] mathml flaky tests after adding SystemFonts to the theme
- https://bugs.webkit.org/show_bug.cgi?id=47727
-
- The Fontconfig setup in the GTK+ now specifically checks for and
- loads the STIX fonts for MathML tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Add hooks for loading the STIX fonts specifically.
-
-2010-10-20 Adam Roben <aroben@apple.com>
-
- Test that the UI client gets notified when WKView receives a WM_CLOSE
- message
-
- Test for <http://webkit.org/b/48044> <rdar://problem/8488446> Pressing
- Ctrl+W when viewing a full-page PDF destroys the WKView but doesn't
- close its parent window
-
- Reviewed by Jon Honeycutt.
-
- * TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp: Added.
- (TestWebKitAPI::close): Record that this function was called.
- (TestWebKitAPI::WebKit2_WMCloseCallsUIClientClose): Create a WKView,
- send it a WM_CLOSE message, and test that the UI client's close
- callback got called. Note that this will hang if the bug is
- reintroduced; <http://webkit.org/b/48043> covers making TestWebKitAPI
- able to handle hangs.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added the new test.
-
-2010-10-20 Adam Roben <aroben@apple.com>
-
- Make prepare-ChangeLog much faster when using git
-
- This change also seems to make it detect renames better in some cases.
-
- Fixes <http://webkit.org/b/48040> prepare-ChangeLog is slow when using
- git
-
- Reviewed by David Kilzer.
-
- * Scripts/prepare-ChangeLog:
- (statusCommand):
- (createPatchCommand):
- Use "-M -C" instead of "-C -C -M" to tell git-diff to detect renames
- and copies. The two "-C"s were making it read many more files than were
- necessary.
-
-2010-10-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Null frame passed when running alert from UserScript run at document start
- <rdar://problem/8573809>
- https://bugs.webkit.org/show_bug.cgi?id=48036
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::didReceiveMessage):
- (TestWebKitAPI::InjectedBundleController::initializeTestNamed):
- * TestWebKitAPI/InjectedBundleController.h:
- * TestWebKitAPI/InjectedBundleTest.h:
- (TestWebKitAPI::InjectedBundleTest::initialize):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp: Added.
- (TestWebKitAPI::runJavaScriptAlert):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp: Added.
- (TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::DocumentStartUserScriptAlertCrashTest):
- (TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::initialize):
- Add test for invoking an alert during a UserScript run at document start.
-
-2010-10-21 Andreas Kling <kling@webkit.org>
-
- Reviewed by Adam Roben.
-
- TestNetscapePlugIn: Actually call NPP_SetWindow on Unix
-
- We were just returning NPERR_NO_ERROR previously.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_set_window):
-
-2010-10-21 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48051> Move macros from DumpRenderTreeMac.h to config.h
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/config.h: Moved macros to here...
- * DumpRenderTree/mac/DumpRenderTreeMac.h: ...from here.
- Addresses a FIXME comment from r28419.
-
-2010-10-21 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/48047> Fix warnings found by check-Xcode-source-file-types
-
- Reviewed by Adam Roben.
-
- Fixes the following warnings:
-
- WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'PixelDumpSupport.cpp'.
- WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'LayoutTestController.cpp'.
- WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'WorkQueue.cpp'.
- WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'cg/PixelDumpSupportCG.cpp'.
- WARNING: Incorrect file type 'sourcecode.cpp.objcpp' for file 'GCController.cpp'.
- 5 issues found for WebKitTools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Removed explicit file type for *.cpp files above to make them
- match other C++ source files. This exposed the fact that
- DumpRenderTreeMac.h was not safe to include in C++ source, which
- caused PixelDumpSupport.cpp and PixelDumpSupportCG.cpp to fail
- to build.
- * DumpRenderTree/PixelDumpSupport.cpp: Adjusted header order.
- * DumpRenderTree/mac/DumpRenderTreeMac.h: Made safe to include
- in C++ source files. Included CoreFoundation/CoreFoundation.h
- to make sure all CF types were defined. Removed CFStringRef
- typedef.
-
-2010-10-21 Adam Roben <aroben@apple.com>
-
- Attempt to fix plugins/pass-different-npp-struct.html on GTK.
-
- See <http://webkit.org/b/47690>.
-
- * GNUmakefile.am: Added PassDifferentNPPStruct.cpp.
-
-2010-10-21 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [NRWT] Set ImageDiff path on Qt port
- https://bugs.webkit.org/show_bug.cgi?id=48052
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2010-10-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't CC authors of flaky tests
- https://bugs.webkit.org/show_bug.cgi?id=48038
-
- Some authors found this too annoying. We'll look for another way to
- close the flaky test loop.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should run run-webkit-tests with --no-new-test-results
- https://bugs.webkit.org/show_bug.cgi?id=47998
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2010-10-21 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] Get child process number from an environment variable
- https://bugs.webkit.org/show_bug.cgi?id=47981
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-20 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/47754> New script to verify explicit source file types in Xcode project files
-
- Reviewed by Darin Adler.
-
- The script parses an Xcode project file and makes sure the file
- extension matches the explicit file type set for all source
- files. Note that the majority of source files will have their
- type set by Xcode, so the script doesn't check them since there
- is no need to second-guess Xcode.
-
- * Scripts/check-Xcode-source-file-types: Added. Code borrowed
- heavily from sort-Xcode-project-file.
-
-2010-10-20 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp: Added missing #include.
-
-2010-10-20 Adam Roben <aroben@apple.com>
-
- Qt test fix
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: Added
- PassDifferentNPPStruct.cpp.
-
-2010-10-20 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add ability to test injected bundle API using TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=48027
-
- * TestWebKitAPI/InjectedBundleController.cpp: Added.
- * TestWebKitAPI/InjectedBundleController.h: Added.
- Shared main object for bundle functionality.
-
- * TestWebKitAPI/InjectedBundleMain.cpp: Added.
- Bundle entry point.
-
- * TestWebKitAPI/InjectedBundleTest.h: Added.
- Base class for which the bundle portion of a test derives from.
-
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/PlatformUtilities.cpp: Added.
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- (TestWebKitAPI::Util::createInjectedBundlePath):
- (TestWebKitAPI::Util::createURLForResource):
- (TestWebKitAPI::Util::URLForNonExistentResource):
- Add helper to create a context with the shared injected bundle,
- and send the initial message to set up the test.
-
- * TestWebKitAPI/Configurations/InjectedBundle.xcconfig: Added.
- * TestWebKitAPI/InjectedBundle-Info.plist: Added.
- Add mac configuration files.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add the new files.
-
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp: Added.
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp: Added.
- Add a simple initial bundle test.
-
-2010-10-20 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fixing /release-patch url used by the EWS bots.
-
- EWS should test patches with r+
- https://bugs.webkit.org/show_bug.cgi?id=35460
-
- * Scripts/webkitpy/common/net/statusserver.py:
- - I changed the URL during development, and 404s are
- intentionally silenced during release_patch.
-
-2010-10-14 Adam Roben <aroben@apple.com>
-
- Test that passing a different NPP struct back to the browser doesn't
- cause an assertion failure
-
- Test for <http://webkit.org/b/47690> <rdar://problem/8553020>
- Assertion failure in NetscapePlugin::fromNPP when using Shockwave in
- WebKit2
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp: Copied from WebKitTools/DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp.
- (PassDifferentNPPStruct::PassDifferentNPPStruct): Initialize our
- members.
- (PassDifferentNPPStruct::NPP_SetWindow): Pass a different NPP to the
- browser than the one it gave us in NPP_New and see if it works.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Added PassDifferentNPPStruct.
-
-2010-10-19 Adam Roben <aroben@apple.com>
-
- Gently nudge old-run-webkit-tests toward working with Win32 Perl
-
- This makes old-run-webkit-tests able to build DRT and find all the
- tests to run. It even invokes DRT and passes it the list of tests. But
- DRT ends up hung blocking on I/O.
-
- Fixes <http://webkit.org/b/47961> Get old-run-webkit-tests mostly
- working with Win32 Perl
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- - Use File::Spec instead of manually concatenating paths
- - Use dirname instead of manually stripping off the base name
- - Use isCygwin/isWindows/isAppleWinWebKit more judiciously
- - Explicitly invoke Perl when running Perl scripts
- - Quote paths when using them in regular expressions to allow them
- to include characters that have special meanings in regular
- expressions
-
- * Scripts/run-webkit-tests: Use File::Spec instead of manually
- concatenating paths.
-
- * Scripts/webkitdirs.pm:
- - Remove the unused $windowsTmpPath variable
- - Use isCygwin/isWindows/isAppleWinWebKit more judiciously
- - Only pass paths to cygpath when using Cygwin Perl
- - Only use pdevenv when using Cygwin Perl, for now
-
-2010-10-20 Daniel Bates <dbates@rim.com>
-
- Reviewed by Martin Robinson.
-
- Add Git-support to do-file-rename
- https://bugs.webkit.org/show_bug.cgi?id=48015
-
- Also, abstracts the SCM move/rename functionality in do-file-rename and
- do-webcore-rename into a common function VCSUtils::scmMoveOrRenameFile().
-
- Currently, do-file-rename is hard coded to assume the SCM is Subversion.
- Instead, we should abstract the rename logic to be SCM-independent. This
- will allow us to add Git support as well move such functionality into
- our SCM library VCSUtils, where it can be shared by do-webcore-rename.
-
- * Scripts/VCSUtils.pm:
- - Added function scmMoveOrRenameFile.
- * Scripts/do-file-rename: Modified to call VCSUtils::scmMoveOrRenameFile().
- * Scripts/do-webcore-rename: Ditto.
-
-2010-10-20 Adam Roben <aroben@apple.com>
-
- Fix old-run-webkit-tests when there's a space in the path to DRT
-
- Reviewed by Jon Honeycutt.
-
- * Scripts/old-run-webkit-tests: Quote the path to DRT before executing
- it.
-
-2010-10-20 Kenneth Russell <kbr@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Regression in chromium_gpu_unittests after r70175
- https://bugs.webkit.org/show_bug.cgi?id=48008
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2010-10-20 Kenneth Russell <kbr@google.com>
-
- Reviewed by James Robinson.
-
- chromium_gpu port of new-run-webkit-tests must do Linux -> Win expectations fallback
- https://bugs.webkit.org/show_bug.cgi?id=48005
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2010-10-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch doesn't get along with git rm
- https://bugs.webkit.org/show_bug.cgi?id=47940
-
- Turns out we need to pass "--" to tell git this is a path.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-10-20 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Fix layoutTestController.getJsObjectCount
-
- Qt Bridge doesn't know size_t so pass result as unsigned int.
-
- Unskip fast/dom/gc-10.html
-
- https://bugs.webkit.org/show_bug.cgi?id=47931
-
- * DumpRenderTree/qt/GCControllerQt.cpp:
- (GCController::getJSObjectCount):
- * DumpRenderTree/qt/GCControllerQt.h:
-
-2010-10-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r70149.
- http://trac.webkit.org/changeset/70149
- https://bugs.webkit.org/show_bug.cgi?id=47989
-
- "Build breaks in mac and win" (Requested by satish on
- #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-10-20 Leandro Gracia Gil <leandrogracia@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Added a second parameter to setMockSpeechInputResult for
- the language used in speech input.
- https://bugs.webkit.org/show_bug.cgi?id=47089
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-10-19 Adam Roben <aroben@apple.com>
-
- Teach update-webkit-support-libs about the new versioning of
- WebKitSupportLibrary
-
- Fixes <http://webkit.org/b/47915> update-webkit-support-libs should
- check version numbers instead of modification times
-
- Reviewed by Sam Weinig.
-
- * Scripts/update-webkit-support-libs: Fetch the expected version
- number from developer.apple.com, then compare with the version number
- of the extracted library and of the zipped library to see if anything
- needs to be done. Removed code that tracked the modified timestamp of
- the library, as it is no longer needed.
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS should test patches with r+
- https://bugs.webkit.org/show_bug.cgi?id=35460
-
- * QueueStatusServer/handlers/submittoews.py:
- * QueueStatusServer/model/queues.py:
- * Scripts/webkitpy/tool/bot/patchcollection.py: Removed.
- * Scripts/webkitpy/tool/bot/patchcollection_unittest.py: Removed.
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach feeder-queue how to feed the EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=47943
-
- queues.webkit.org already knew how to accept EWS submissions
- via /submit-to-ews. This teaches the feeder queue how to post
- to that page with any new r? patches it sees.
-
- * QueueStatusServer/model/activeworkitems_unitest.py: Added.
- - More unit testing is always a good thing.
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/tool/bot/feeders.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing test-webkitpy. I'm really on a roll today.
-
- commit-queue gets stuck when release-patch returns 404
- https://bugs.webkit.org/show_bug.cgi?id=47935
-
- Fix test-webkitpy and unittest NetworkTransaction.
-
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/networktransaction_unittest.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- commit-queue gets stuck when release-patch returns 404
- https://bugs.webkit.org/show_bug.cgi?id=47935
-
- Turns out ClientForm gets upset if passed an int() instead of a string type.
- Yay for untestable code.
-
- * Scripts/webkitpy/common/net/statusserver.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Will get Adam's commentary after his meeting
- for now this gets the commit-cluster back running.
-
- commit-queue gets stuck when release-patch returns 404
- https://bugs.webkit.org/show_bug.cgi?id=47935
-
- I taught NetworkTransaction the basics of 404 handling.
- We'll want to go back and teach it how to handle urllib2 404's too
- and then deploy it to the places that want it.
-
- * QueueStatusServer/handlers/releasepatch.py:
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/statusserver.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fixing typos in my previous commit.
-
- Make patch release explicit and not a magic part of "retry" status
- https://bugs.webkit.org/show_bug.cgi?id=47909
-
- All of these typos again due to our inability to unit
- test much of this code. I added one unit test where
- possible. activeworkitems_unittest.py will be in a separate patch.
-
- * QueueStatusServer/handlers/releasepatch.py:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/model/workitems.py:
- * QueueStatusServer/model/workitems_unittest.py:
- * QueueStatusServer/templates/releasepatch.html:
- * Scripts/webkitpy/common/net/statusserver.py:
-
-2010-10-19 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] Use webkit's TestNetscapePlugIn in DRT mac
- https://bugs.webkit.org/show_bug.cgi?id=47850
-
- * DumpRenderTree/chromium/TestNetscapePlugIn/Info.plist: Added. Forked
- because we're going to name our plugin WebKitTestNetscapePlugIn
- temporarily until the chromium forked plugin goes away.
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make patch release explicit and not a magic part of "retry" status
- https://bugs.webkit.org/show_bug.cgi?id=47909
-
- This moves us another step closer to running r+ patches on the EWS bots.
- Currently all bots just spam /update-work-items with their list of current
- work items. queues.webkit.org uses that data for display. As part of making
- the EWS run r+ patches, we're moving the official list of patches-to-process
- into the server, and feeding them out to bots one at a time. We need to be
- able to remove patches from the queues one at a time instead of just spamming
- /update-work-items with a new complete list. That's what this patch adds.
-
- * QueueStatusServer/handlers/nextpatch.py:
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/handlers/releasepatch.py: Added.
- * QueueStatusServer/handlers/statusbubble_unittest.py:
- - Fix a typo causing test failure. This was not caught by the bots
- because they don't have AppEngineLauncher installed and thus don't run
- the QueueStatusServer tests.
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/templates/releasepatch.html: Added.
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- cr-mac bubble has caused status bubbles to wrap
- https://bugs.webkit.org/show_bug.cgi?id=47928
-
- We now have too many EWSes to fit in the bugs.webkit.org
- status-bubble iframe when more than a couple EWS builds are pending.
- To fix this I've reduced the space taken up by queue position,
- and also moved cr-mac to the end of the list (since it's going to be
- triple-digits for a while).
-
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/templates/statusbubble.html:
-
-2010-10-19 Kenneth Russell <kbr@google.com>
-
- Reviewed by David Levin.
-
- chromium_gpu port of new-run-webkit-tests must search chromium-gpu directory for expectations
- https://bugs.webkit.org/show_bug.cgi?id=47874
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2010-10-19 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] DumpRenderTree shouldn't put '.' in include path
- https://bugs.webkit.org/show_bug.cgi?id=47877
-
- Fix include paths.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- * DumpRenderTree/chromium/CppVariant.cpp:
- * DumpRenderTree/chromium/CppVariant.h:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/EventSender.cpp:
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- * DumpRenderTree/chromium/NotificationPresenter.h:
- * DumpRenderTree/chromium/PlainTextController.cpp:
- * DumpRenderTree/chromium/Task.cpp:
- * DumpRenderTree/chromium/TestNavigationController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/TestWebWorker.h:
- * DumpRenderTree/chromium/TextInputController.cpp:
- * DumpRenderTree/chromium/WebPreferences.cpp:
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebThemeEngineDRT.cpp:
- * DumpRenderTree/chromium/WebThemeEngineDRT.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-10-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Need to include WKErrorRef in the WKPageDidFail... functions
- https://bugs.webkit.org/show_bug.cgi?id=47871
-
- Update tools for new parameter in failure callbacks.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didFailProvisionalLoadWithErrorForFrame):
- (didFailLoadWithErrorForFrame):
- (-[BrowserWindowController updateProvisionalURLForFrame:]):
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- (TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-10-19 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Antti Koivisto.
-
- [Qt] WebKit2 MacOS build fix
- https://bugs.webkit.org/show_bug.cgi?id=47897
-
- Qt WebKit2 MacOS build fix.
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/TestControllerQt.cpp:
-
-2010-10-19 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch stats the filesystem too many times
- https://bugs.webkit.org/show_bug.cgi?id=47883
-
- This patch attempts to cache the list of changed files more agressively
- and to use that list to compute the diff instead of stating the file
- system again.
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/editchangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2010-10-19 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/47741> Make sort-Xcode-project-file a little more friendly
-
- Reviewed by Darin Adler.
-
- * Scripts/sort-Xcode-project-file:
- - Don't print an error message about missing arguments when
- -h|--help is used.
- - Allow Xcode project files to be specified as Project.xcodeproj
- instead of Project.xcodeproj/project.pbxproj.
-
-2010-10-18 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser: Prevent calling load() directly from loadFinished() in robot mode.
- https://bugs.webkit.org/show_bug.cgi?id=47809
-
- Connecting a call to load from the loadFinished signal can cause
- re-entrance crashes in WebCore. This patch uses a timer to do so,
- also giving some time to subsequent frames to finish loading.
-
- * QtTestBrowser/urlloader.cpp:
- (UrlLoader::UrlLoader):
- (UrlLoader::loadNext):
- (UrlLoader::checkIfFinished):
- (UrlLoader::frameLoadStarted):
- (UrlLoader::frameLoadFinished):
- * QtTestBrowser/urlloader.h:
-
-2010-10-19 Sergio Villar Senín <svillar@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] http/history tests are failing
- https://bugs.webkit.org/show_bug.cgi?id=36173
-
- Clear the history each time a test is run. Return the actual
- history item count when calling
- LayoutTestController::webHistoryItemCount
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::webHistoryItemCount):
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add Chromium Mac EWS to the list of queues at queues.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=47878
-
- * QueueStatusServer/model/queues.py:
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queues.webkit.org/next_patch is always 404
- https://bugs.webkit.org/show_bug.cgi?id=47881
-
- With the addition of the Queue class, I changed most of the
- code to lookup WorkItems using get_or_insert with a key_name
- instead of WorkItems.all().filter(queue_name=).
- Because the new get_or_insert code uses an explicit key_name
- (which is obviously different from the previously autogenerated
- ones), there were new WorkItem records created for each queue.
- However, some parts of the code still use WorkItems.all().filter,
- thus some parts were getting the new record and some parts the old record.
-
- The same basic bug was occurring with ActiveWorkItems, because I
- changed the key_name for that class as well.
-
- To fix this I've moved more of the code over to using Queue.*work_items.
- I've also enabled the datastore_admin (new in GAE 1.3.8) so that
- we can go delete the old WorkItems records.
- I also changed remote_api to use the new builtin: syntax (also added in GAE 1.3.8).
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/handlers/recentstatus.py:
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/handlers/updateworkitems.py:
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Correct a bunch of typos in QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=47880
-
- These are all due to our complete lack of unit testing in QueueStatusServer.
- I added a couple unit tests to cover a few of these fixes, but most of these
- are still only caught by actually running the application.
-
- * QueueStatusServer/handlers/nextpatch.py:
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/handlers/statusbubble_unittest.py: Added.
- * QueueStatusServer/handlers/updateworkitems.py:
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/model/queuepropertymixin.py:
- * QueueStatusServer/model/queuepropertymixin_unittest.py:
- * QueueStatusServer/model/workitems.py:
- * QueueStatusServer/model/workitems_unittest.py: Added.
-
-2010-10-18 Adam Barth <abarth@webkit.org>
-
- Disable this test because it's failing on the bots and the authors
- aren't around to fix it.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- CC authors of flaky tests when the commit-queue hits a flaky test
- https://bugs.webkit.org/show_bug.cgi?id=47872
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make it possible to run a chromium-mac-ews builder
- https://bugs.webkit.org/show_bug.cgi?id=47876
-
- Since we can't run Mac OS X in a VM, we need to only run committer patches.
- There was a multiple inheritance problem which was holding this patch back,
- but I decided to just ignore the problem and go with a functional hack for now.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2010-10-18 Kenneth Russell <kbr@google.com>
-
- Reviewed by Tony Chang.
-
- Regression in run_webkit_tests_unittest from r70017
- https://bugs.webkit.org/show_bug.cgi?id=47875
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Implement webkit-patch suggest-reviewers
- https://bugs.webkit.org/show_bug.cgi?id=47866
-
- * Scripts/webkitpy/common/checkout/api.py:
- - The main logic. We look at the last five changes to each
- modified (non-ChangeLog) file and collect up the reviewers of
- those changes as well as the authors of those changes who are
- reviewers.
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- - Test the logic with some fun mocks.
- * Scripts/webkitpy/common/checkout/scm.py:
- - Fix a bug when you have local git commits.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Test that the bug is fixed.
- * Scripts/webkitpy/tool/commands/queries.py:
- - Add the query.
-
-2010-10-18 Kenneth Russell <kbr@google.com>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests produces corrupt PNG baselines on Windows
- https://bugs.webkit.org/show_bug.cgi?id=47867
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make it possible to submit patches to the EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=47869
-
- * QueueStatusServer/handlers/nextpatch.py:
- - Move more logic into Queue, so that it can be shared with SubmitToEWS.
- * QueueStatusServer/handlers/queuestatus.py:
- - Fix two typos from a previous commit.
- * QueueStatusServer/handlers/submittoews.py: Added.
- * QueueStatusServer/handlers/updatestatus.py:
- - Use the new is_retry_request method to share this (hacky) code with SubmitToEWS
- * QueueStatusServer/main.py:
- - Add /submit-to-ews
- * QueueStatusServer/model/queuepropertymixin.py:
- - Fix circular imports caused by adding Queue.work_items()
- * QueueStatusServer/model/queues.py:
- - Add work_items() and active_work_items()
- * QueueStatusServer/model/queuestatus.py:
- * QueueStatusServer/model/workitems.py:
- - Add transaction-safe add/remove methods.
- * QueueStatusServer/templates/submittoews.html: Added.
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Deploy Queue class in more places throughout QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=47855
-
- I also caught two typos from the previous change. Unfortunately
- I don't yet know how to unittest request handlers yet.
-
- * QueueStatusServer/handlers/dashboard.py:
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/handlers/updateworkitems.py:
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/model/queuepropertymixin.py: Added.
- * QueueStatusServer/model/queuepropertymixin_unittest.py: Added.
- * QueueStatusServer/model/queuestatus.py:
- * QueueStatusServer/model/workitems.py:
-
-2010-10-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- scm.py should be able tell us what revisions made changes to a given file
- https://bugs.webkit.org/show_bug.cgi?id=47863
-
- Look again, your SCM.py can now log files.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-10-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- new-run-webkit-tests: clean up the options-parsing code in the port
- classes.
-
- This change modifies the Port interface to have a get_option() and
- set_option_default() method for accessing the options argument
- passed to the constructor. If the constructor is not passed an
- options argument, we default to a MockOptions() argument from
- mocktool, which has the same semantics we want.
-
- Note that there is a disadvantage to port.get_option('foo') over
- port._options.foo, which is that you lose some of the checking
- for whether 'foo' is set (typos result in the default value, not
- an exception being raised. This is desired in this case, since the
- Port class is not allowed to assume that options does have any
- particular values set, and so this change ensures that all of
- the subclasses are following the same, intended, logic.
-
- Arguably this is the wrong semantics to have, and the Port
- classes should be able to assume a default set of
- attributes/arguments, but that change will need to wait for a
- different CL where we can modify new-run-webkit-tests to pull a
- list of arguments from the port factory routines.
-
- Also, add unit tests for webkitpy.tool.mocktool.MockOptions .
-
- https://bugs.webkit.org/show_bug.cgi?id=47510
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/mocktool_unittest.py: Added.
-
-2010-10-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Re-submit a revised version of r69638 - enabling new-run-webkit-tests
- under cygwin. The initial version had a bug in base:uri_to_test_name
- that was causing tests to fail. This version corrects that bug, but
- also makes the code safer by calling cygpath more reliably, and
- leaving a long-running cygpath process open.
-
- This patch also corrects a couple of minor bugs in http_lock_unittest,
- chromium_unittest, and dedpulicate_tests_unittest that showed up
- while testing this.
-
- https://bugs.webkit.org/show_bug.cgi?id=47220
-
- * Scripts/webkitpy/common/system/path.py:
- * Scripts/webkitpy/common/system/path_unittest.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add Queue class and add minimal unittesting of QueueStatusServer code
- https://bugs.webkit.org/show_bug.cgi?id=47847
-
- * QueueStatusServer/handlers/dashboard.py:
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/handlers/recentstatus.py:
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/handlers/updateworkitems.py:
- * QueueStatusServer/model/attachment.py:
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/model/queues_unittest.py: Added.
- * QueueStatusServer/model/svnrevision.py:
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/test/main.py:
-
-2010-10-18 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventCarbon):
-
-2010-10-18 Stuart Morgan <stuartmorgan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Switch to using the new Carbon NPAPI event declarations, and remove
- the old ones.
-
- https://bugs.webkit.org/show_bug.cgi?id=40784
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventCarbon):
-
-2010-10-18 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style should treat the GObject binding directory like other GTK directories.
- https://bugs.webkit.org/show_bug.cgi?id=47796
-
- * Scripts/webkitpy/style/checker.py: Added the GObject binding directory
- with the other gtk directories (and fixed typo).
-
-2010-10-18 David Levin <levin@chromium.org>
-
- Reviewed by Oliver Hunt.
-
- check-webkit-style needs to ignore underscores in opcode names and vm_throw
- https://bugs.webkit.org/show_bug.cgi?id=47789
-
- * Scripts/webkitpy/style/checker.py: Added the exception for the assembler directory.
- * Scripts/webkitpy/style/checkers/cpp.py: Added special cased names.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added unit tests for the special cases.
-
-2010-10-18 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- TextInputController.hasSpellingMarkers() should be owned by LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=47659
-
- Moved hasSpellingMarkers() from TextInputController to
- LayoutTestController. Currently the implementation is available
- only for Mac and for Chromium.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (hasSpellingMarkerCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::hasSpellingMarker):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::TextInputController):
- (TextInputController::makeAttributedString):
- * DumpRenderTree/chromium/TextInputController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::hasSpellingMarker):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::hasSpellingMarker):
- * DumpRenderTree/mac/TextInputController.m:
- (+[TextInputController isSelectorExcludedFromWebScript:]):
- (+[TextInputController webScriptNameForSelector:]):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::hasSpellingMarker):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::hasSpellingMarker):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::hasSpellingMarker):
-
-2010-10-18 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- commit-queue's flaky test notice is very Pythony
- https://bugs.webkit.org/show_bug.cgi?id=47790
-
- This patch make the list of tests delimted by \n instead of just
- converting the array to a string.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-14 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Martin Robinson and Xan Lopez.
-
- [Gtk]: DRT does not support frame flattening testing
- https://bugs.webkit.org/show_bug.cgi?id=38650
-
- Implement DRT's support for toggling on/off frame flattening
- support.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setFrameFlatteningEnabled):
-
-2010-10-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- mocktool.MockOptions is inheriting from Mock, which has the side
- effect of defaulting any attribute to another MockObject. So,
- MockOptions().foo would always evaluate to true. This was
- covering over bugs in the unit tests, and is probably the wrong
- default behavior for anything attempting to mock out the options
- argument returned from optparse.parse_args().
-
- This patch changes the default behavior. The new MockOptions()
- class takes an optional list of keyword parameters to set; this
- patch doesn't use that feature but the fix for bug 47510 will.
-
- Also, this patch just fills in the default values necessary to
- get all of the tests to pass; I didn't stare at each test by
- hand to determine the "right" values. We can either fix that in
- subsequent patches or let me know if we want to do that now (and
- give me some guidance on what those values might want to be).
-
- https://bugs.webkit.org/show_bug.cgi?id=47709
-
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
-
-2010-10-15 Simon Fraser <simon.fraser@apple.com>
-
- Fix the build; need to add new slot to PageUIClient callbacks.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-10-15 Simon Fraser <simon.fraser@apple.com>
-
- Add Matt Delaney to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] compile TestNetscapePlugIn on Chromium mac
- https://bugs.webkit.org/show_bug.cgi?id=47633
-
- * DumpRenderTree/DumpRenderTree.gypi: files to compile
- * DumpRenderTree/TestNetscapePlugIn/main.cpp: Use ifdef because gcc was complaining
- (NP_GetEntryPoints):
- (NPP_New):
- (NPP_Destroy):
- (NPP_HandleEvent):
- (NPP_GetValue):
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h: Added.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h: Added.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h: Added.
-
-2010-10-15 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Gustavo Noronha Silva.
-
- build-webkit: Should die when make fails when build a CMake project
- https://bugs.webkit.org/show_bug.cgi?id=47726
-
- * Scripts/webkitdirs.pm: If make fails, die immediately.
-
-2010-10-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r69809.
- http://trac.webkit.org/changeset/69809
- https://bugs.webkit.org/show_bug.cgi?id=47725
-
- Broke chromium mac compile (Requested by japhet on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_GetEntryPoints):
- (NPP_New):
- (NPP_Destroy):
- (NPP_HandleEvent):
- (NPP_GetValue):
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h: Removed.
-
-2010-10-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy fails on Linux
- https://bugs.webkit.org/show_bug.cgi?id=47713
-
- The old code failed on Linux because the MacPort tries to read
- something out of platform that doesn't make sense on Linux.
-
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-10-14 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] WTR is sloooow
- https://bugs.webkit.org/show_bug.cgi?id=47695
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- Change the timer interval of RunUntilConditionLoop from
- 50 milliseconds to 1 to avoid wasting time after the
- test had been finished.
-
-2010-10-14 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing an exception seen on the commit-queue.
-
- I should have unit tested this function before.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should not fail patches due to flaky tests
- https://bugs.webkit.org/show_bug.cgi?id=47647
-
- This patch makes it so that the *same* flaky test has to fail
- twice in a row to have a false negative from a flaky test.
-
- If different flaky tests fail (or if a test fails and then passes
- in a second run) then we will warn in the bug that we encountered
- a flaky test.
-
- This patch grew to include moving port off of steps onto tool
- (which Adam wrote and then I integrated), as well as removing the
- use of tool from CommitQueueTask.
-
- * Scripts/webkitpy/common/config/ports.py:
- - Added a layout_test_results_path method. This covers old-run-webkit-tests
- but doesn't cover NRWT. This is probably not the long term solution, but
- putting this knowledge on port makes more sense than in LayoutTestResults.
- * Scripts/webkitpy/common/net/buildbot.py:
- - LayoutTestResults shouldn't know how to fetch from the network, make
- the Build code do that instead.
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- - Code style fix.
- * Scripts/webkitpy/common/net/layouttestresults.py:
- - Remove code for reading from the network.
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- - Test the new entrypoint.
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- - Make the delegate interface explicit.
- - Remove the _tool member, since using the delegate for
- everything is cleaner.
- - Teach the testing logic how to deal with flaky tests.
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- - Update to match the CommitQueueTask changes.
- * Scripts/webkitpy/tool/commands/queues.py:
- - Use the new CommitQueueTaskDelegate interface.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Fix the SecondThoughtsCommitQueue test which was broken.
- - Add a new test to make sure the flaky test reporting works.
- * Scripts/webkitpy/tool/main.py:
- - Store the port on the tool object.
- * Scripts/webkitpy/tool/mocktool.py:
- - Add a port() accessor to MockTool
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- - Move port() off of Step and onto Tool.
- * Scripts/webkitpy/tool/steps/build.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- - Two tests with the same name! only the latter was being run.
- * Scripts/webkitpy/tool/steps/update.py:
-
-2010-10-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests will now handle missing Ruby installs (or
- missing PrettyPatch scripts) more cleanly - previously this
- would be detected when we actually tried to create the diff, and
- the error message was obscure. Now we'll log a warning up front
- and otherwise be silent.
-
- This change also refactors some global variables to be class or
- instance variables to be slightly more testable and more
- modular. There are no cases where we create lots of port objects
- and can't afford to test for configurations repeatedly, so
- there's no performance concern here.
-
- https://bugs.webkit.org/show_bug.cgi?id=47466
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-10-08 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Form controls do not respect GTK+ font size
- https://bugs.webkit.org/show_bug.cgi?id=47134
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings): Initialize the font control size when running
- DumpRenderTree to a standard value.
-
-2010-10-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] compile TestNetscapePlugIn on Chromium mac
- https://bugs.webkit.org/show_bug.cgi?id=47633
-
- * DumpRenderTree/DumpRenderTree.gypi: files to compile
- * DumpRenderTree/TestNetscapePlugIn/main.cpp: Use ifdef because gcc was complaining
- (NP_GetEntryPoints):
- (NPP_New):
- (NPP_Destroy):
- (NPP_HandleEvent):
- (NPP_GetValue):
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h: Added.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h: Added.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h: Added.
-
-2010-10-14 Victor Wang <victorw@chromium.org>
-
- Reviewed by Nate Chapin.
-
- [Chromium] Fix rebaseline_chromium_webkit_tests to use 0 tolerance image diff.
-
- https://bugs.webkit.org/show_bug.cgi?id=47686
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-10-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy spews Delegate terminated queue messages
- https://bugs.webkit.org/show_bug.cgi?id=47678
-
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
-
-2010-10-14 Adam Roben <aroben@apple.com>
-
- Test that pressing the Alt key generates a WM_SYSCOMMAND message
-
- Test for <http://webkit.org/b/47671> <rdar://problem/8435594> Pressing
- the Alt key when MiniBrowser's WKView is focused doesn't send focus to
- the menu bar
-
- Reviewed by Steve Falkenburg.
-
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops: Added
- TestWebKitAPI/win to the include path so that WindowMessageObserver
- can be found.
-
- * TestWebKitAPI/PlatformWebView.h: Added simulateAltKeyPress and
- Windows-specific members.
- (TestWebKitAPI::PlatformWebView::setParentWindowMessageObserver):
- Added this simple setter.
-
- * TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp: Added.
- (TestWebKitAPI::WMSysCommandObserver::WMSysCommandObserver):
- Initialize our lone data member.
- (TestWebKitAPI::WMSysCommandObserver::windowDidReceiveWMSysCommand):
- Simple getter.
- (TestWebKitAPI::WMSysCommandObserver::windowReceivedMessage): Record
- when a WM_SYSCOMMAND message is received.
- (TestWebKitAPI::didNotHandleKeyEventCallback): Record when a
- WM_SYSKEYUP message is not handled.
- (TestWebKitAPI::WebKit2_AltKeyGeneratesWMSysCommand): Simulate
- pressing the Alt key and check that a WM_SYSCOMMAND message got sent
- to the WKView's parent window.
-
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::registerWindowClass): Made this a
- member function so it could access PlatformWebView::wndProc. Use
- PlatformWebView::wndProc as the WNDPROC.
- (TestWebKitAPI::PlatformWebView::PlatformWebView): Initialize our new
- data member and pass the this pointer to CreateWindowEx so we can
- store it on the HWND.
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress): Moved some
- constants from here to the top of the file.
- (TestWebKitAPI::PlatformWebView::simulateAltKeyPress): Added. Sends
- the same messages that Notepad receives when you press the Alt key.
- (TestWebKitAPI::PlatformWebView::wndProc): Added.
- - When WM_CREATE is received, we set the PlatformWebView instance
- pointer as a property on the HWND so we can access it later.
- - For other messages, we try to get the PlatformWebView instance
- pointer from the HWND property.
- - When WM_NCDESTROY is received (which is the last message we will
- receive), we remove the PlatformWebView instance property.
- - Pass messages to the parent window's message observer, if there is
- one.
- - Pass all messages through to ::DefWindowProcW.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added WindowMessageObserver
- and AltKeyGeneratesWMSysCommand.
-
- * TestWebKitAPI/win/WindowMessageObserver.h: Added. This class can be
- used to observe messages sent to one or more windows.
-
-2010-10-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Holger Freyther.
-
- [GTK] REGRESSION: FreeType backend does not respect XSettings font settings after r68558
- https://bugs.webkit.org/show_bug.cgi?id=47033
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings): Added this method which initializes XSettings
- font settings to consistent values before running a test. For the one test
- in which we need subpixel aliasing turned on, do that.
- (initializeFonts): Accepts a testURL parameter now and delegates to initializeGtkFontSettings.
- (runTest): Pass the testURL to initializeFonts.
-
-2010-10-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- ChromiumXVFBPort.run_webkit_tests_command has infinite recursion
- https://bugs.webkit.org/show_bug.cgi?id=47655
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2010-10-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- beat diff_parser with the ugly stick
- https://bugs.webkit.org/show_bug.cgi?id=47626
-
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- * Scripts/webkitpy/style/patchreader.py:
- * Scripts/webkitpy/style/patchreader_unittest.py:
-
-2010-10-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Break LayoutTestResults out into its own file
- https://bugs.webkit.org/show_bug.cgi?id=47637
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/layouttestresults.py: Added.
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py: Added.
-
-2010-10-13 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Chromium port can't run JavaScriptCore tests
- https://bugs.webkit.org/show_bug.cgi?id=47654
-
- This lets webkit-patch build-and-test work on Chromium.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2010-10-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make --port a global option and pass the port information to the commit-queue subprocess
- https://bugs.webkit.org/show_bug.cgi?id=47650
-
- This patch paves the way to run the commit-queue on a non-Mac port.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/update.py:
-
-2010-10-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Introduce the ChromiumXVFBPort for running commit-queue on EC2
- https://bugs.webkit.org/show_bug.cgi?id=47653
-
- I'm not entirely sure this is the best way to do this, but we need to
- run the tests under XVFB on EC2 because the EC2 instances don't have a
- real monitor hooked up. This patch adds a ChromiumXVFBPort that runs
- that way. The idea is that XVFB is like a platform for the Chromium
- port, but we don't have a real notion of platform separate from port.
-
- * Scripts/webkitpy/common/config/ports.py:
-
-2010-10-13 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add HTTP caching support
- https://bugs.webkit.org/show_bug.cgi?id=44261
-
- Add include paths for the new soup HTTP cache code.
-
- * GNUmakefile.am: Add paths for the new soup HTTP cache code.
-
-2010-10-13 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- [Qt] QtTestBrowser shows two Url input fields
- https://bugs.webkit.org/show_bug.cgi?id=47613
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::MainWindow):
- (MainWindow::buildUI):
-
-2010-10-13 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Tony Chang.
-
- [gdb] Add pretty-print supports for UString, Identifier and JSString
- https://bugs.webkit.org/show_bug.cgi?id=47601
-
- * gdb/webkit.py:
-
-2010-10-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add list of Ubuntu packages needed by the EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=47628
-
- I've been copy/pasting this list between bots, but it's better to have
- this checked in.
-
- * EWSTools/ubuntu-ews-packages: Added.
-
-2010-10-13 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Csaba Osztrogonác.
-
- [EFL] Adds a build slave.
- https://bugs.webkit.org/show_bug.cgi?id=47290
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add an
- entry for a release build of the EFL port.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add platform
- flag to build the EFL port.
-
-2010-10-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- webkit-patch build shouldn't need --build to actually build!
- https://bugs.webkit.org/show_bug.cgi?id=47438
-
- Yeah, requiring --build for the build command is really dumb. We did
- this originally because the build step is usually optional in other
- commands. We don't have a good way of reversing the default for an
- option in one command. This approach is slightly hacky since --build
- still shows up as an option on the help page, but at least it makes
- progress. Passing --build is harmless, so the EWS bots shouldn't
- explode because of this change.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-10-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r69638.
- http://trac.webkit.org/changeset/69638
- https://bugs.webkit.org/show_bug.cgi?id=47595
-
- "Broke win and chromium-win bots" (Requested by dglazkov on
- #webkit).
-
- * Scripts/webkitpy/common/system/path.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-13 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Steve Block.
-
- First step towards client-based Geolocation in Chromium. Build
- fixes for CLIENT_BASED_GEOLOCATION preprocessor feature define.
- https://bugs.webkit.org/show_bug.cgi?id=47586
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-10-13 Adam Roben <aroben@apple.com>
-
- Test that pressing the spacebar in a text field does not scroll the
- document
-
- Test for <http://webkit.org/b/47544> <rdar://problem/8540645>
- REGRESSION: Pressing spacebar in a text field in WebKit2 does not
- insert a space, scrolls the page instead
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/PlatformUtilities.h: Added isKeyDown.
-
- * TestWebKitAPI/PlatformWebView.h: Added simulateSpacebarKeyPress.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
- Added new files.
-
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp: Added.
- (TestWebKitAPI::JavaScriptCallbackContext::JavaScriptCallbackContext):
- We use this to track what the result of calling into JavaScript was.
- (TestWebKitAPI::didFinishLoadForFrame): Records when the page
- finishes loading.
- (TestWebKitAPI::didNotHandleKeyEventCallback): Records when a key down
- event is not handled.
- (TestWebKitAPI::javaScriptCallback): Records that JavaScript finished
- executing and whether the result matched our expectation.
- (TestWebKitAPI::wk): Turns a UTF-8 C string into a WKStringRef.
- (TestWebKitAPI::runJSTest): Calls into JS, waits for the call to
- complete, and returns whether we got back the expected result.
- (TestWebKitAPI::WebKit2_SpacebarScrolling): Tests that pressing
- spacebar inside a text field does not scroll the document and that
- pressing it outside the text field does scroll the document.
-
- * TestWebKitAPI/Tests/WebKit2/spacebar-scrolling.html: Added.
-
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::isKeyDown): Checks the event's type.
-
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress): Copied
- code from DRT's EventSendingController.
-
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- (TestWebKitAPI::Util::isKeyDown): Checks the message's type.
-
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress): Send the
- same messages that get sent when you press spacebar in Notepad.
-
-2010-10-13 Adam Roben <aroben@apple.com>
-
- Fix a couple of issues with the TestWebKitAPI build
-
- * TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops:
- * TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops:
- Fixed a typo.
-
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: Use common.vsprops
- to set our output and intermediate directories so that we don't spew
- files into the source tree.
-
-2010-10-13 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- WTR should accept relative paths
- https://bugs.webkit.org/show_bug.cgi?id=47486
-
- * WebKitTestRunner/StringFunctions.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::createWKURL): Moved from StringFunctions.h since it is
- used only here. Extend relative paths to absolute.
-
-2010-10-12 Adam Roben <aroben@apple.com>
-
- Make TestWebKitAPI work on Windows
-
- Fixes <http://webkit.org/b/47552> <rdar://problem/8541708>.
-
- Reviewed by Sam Weinig.
-
- * Scripts/build-api-tests: Build TestWebKitAPI.sln on Windows.
-
- * Scripts/run-api-tests: Fix the PATH so that TestWebKitAPI can be
- run on Windows.
- (runTest): Added code to run TestWebKitAPI.exe on Windows and to die
- on unsupported platforms.
- (populateTests): Added code to run TestWebKitAPI.exe on Windows and to
- die on other platforms. Extracted some formerly-Mac-specific code to
- be cross-platform and made it handle any style of line-endings.
-
- * TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops: Added.
- Links against CFLite.
-
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops: Added.
- Contains most properties for the project.
-
- * TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops:
- Added. Links against CoreFoundation.
-
- * TestWebKitAPI/TestWebKitAPIPrefix.h: Added a Windows-specific
- section and moved the cross-platform section after the
- platform-specific parts.
-
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp: Added.
- (TestWebKitAPI::Util::run): Runs a normal message pump until we're
- done.
- (TestWebKitAPI::Util::cf): Turns a UTF-8 C string into a CFString.
- (TestWebKitAPI::Util::createURLForResource): Uses CFBundle to get the
- resource path.
- (TestWebKitAPI::Util::URLForNonExistentResource): Creates a bogus
- WKURL.
-
- * TestWebKitAPI/win/PlatformWebViewWin.cpp: Added.
- (TestWebKitAPI::registerWindowClass):
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::page):
- This was mostly copied from WebKitTestRunner's PlatformWebView.
-
- * TestWebKitAPI/win/TestWebKitAPI.sln: Added. Builds both
- TestWebKitAPI and TestWebKitAPIGeneratd. This is used by the
- build-api-tests script.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added. Builds
- TestWebKitAPI.exe.
-
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: Added. Just calls
- through to copy-resources.cmd.
-
- * TestWebKitAPI/win/copy-resources.cmd: Added. Copies resources into
- or deletes resources from TestWebKitAPI.resources.
-
- * TestWebKitAPI/win/main.cpp: Added.
- (main): Calls through to TestsController.
-
-2010-10-13 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Support viewport configuration and add new arguments for WebKit EFL
- https://bugs.webkit.org/show_bug.cgi?id=47084
-
- Opera spec regarding to viewport meta tag was adjusted to WebCore. So, EFL port
- needs to be modified according to the changes.
-
- * EWebLauncher/main.c:
- (on_viewport_changed):
-
-2010-10-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- This patch enables new-run-webkit-tests (in particular the
- chromium-win port) to run under Cygwin as well as Win32. Mostly
- this just required some conversions from cygwin paths to Win32
- paths when we spawn off Win32 binaries like test_shell.
-
- https://bugs.webkit.org/show_bug.cgi?id=47220
-
- * Scripts/webkitpy/common/system/path.py:
- - Expose the cygpath() function for path conversion
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - shift filename->uri conversion in the TestInfo objects to the
- dump_render_tree thread
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - use cygpath()
-
-2010-10-12 Yuta Kitamura <yutak@chromium.org>
-
- Unreviewed. Add Yuta Kitamura (yutak) to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- When a provisional load fails, the provisional URL returned
- from WKFrameCopyProvisionalURL should be empty
- <rdar://problem/8540878>
- https://bugs.webkit.org/show_bug.cgi?id=47546
-
- Add test.
-
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- (TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame):
-
-2010-10-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Start fleshing out find page overlays
- https://bugs.webkit.org/show_bug.cgi?id=47559
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController find:]):
- Pass kWKFindOptionsShowOverlay to WKPageFindString.
-
-2010-10-12 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] editing/input/emacs-ctrl-o.html
-
- ctrl-o is bound to a sequence of commands on Mac, namely:
- insertParagraphSeparator then moveLeft. In the DRT, we just interpret
- ctrl-o in EventSenderQt as '\n', i.e. insertParagraphSeparator. As a
- result we only issue one command, so don't generate the change in caret
- position that results in the extra editing delegate messages.
-
- So for the sake of not managing suspicious-looking differences, just
- make DRT issue the appropriate edit commands to pass the test.
-
- https://bugs.webkit.org/show_bug.cgi?id=47548
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown):
-
-2010-10-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add a simple Find UI to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=47553
-
- * MiniBrowser/mac/BrowserWindow.xib:
- Add Find panel.
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController performFindPanelAction:]):
- Show the find panel.
-
- (-[BrowserWindowController find:]):
- Tell the WKPageRef to find the given string.
-
-2010-10-12 Tony Chang <tony@chromium.org>
-
- Unreviewed, fixing DRT compile on Windows after r69586.
-
- * DumpRenderTree/chromium/WebThemeEngineDRT.h:
-
-2010-10-12 Tony Chang <tony@chromium.org>
-
- Unreviewed, trying to fix NRWT on Windows.
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2010-10-12 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt][WTR] Checking the path of the injected bundle is bogus
- https://bugs.webkit.org/show_bug.cgi?id=47541
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::isExistingLibrary): Added (static helper).
- Extend the path with the appropriate suffix(es) on the
- platform and check that the file exists.
- (WTR::TestController::initializeInjectedBundlePath):
- There were two bugs with the path checking:
- - the condition should have been inverted
- - QLibrary::fileName does not give back the filename
- with the library suffix so we cannot check
- that existance of the file this way.
-
-2010-10-12 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- Implement http locking in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=47072
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/http_lock.py: Added.
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-12 Mark Rowe <mrowe@apple.com>
-
- Fix the 32-bit WebKit2 build.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (getWindowFrame): Use NSRect rather than CGRect since that's what -frame returns.
- (setWindowFrame): Use NSMakeRect rather than CGRectMake since that's what -setFrame:display: expects.
-
-2010-10-11 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- change the order of mrobinson's email addresses so bugs.webkit.org suggests the right one
- https://bugs.webkit.org/show_bug.cgi?id=47513
-
- bugs.webkit.org suggests mrobinson@igalia.com as an autocomplete,
- which doesn't actually work.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-11 Prasad Tammana <prasadt@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Added support for showModalDialog on chromium port.
-
- Implement showModalDialog for Layout tests for chromium port
- https://bugs.webkit.org/show_bug.cgi?id=46759
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::closeWidgetSoon): Quit current message loop if in a modal loop.
- (WebViewHost::runModal): Start a nested message loop and remember that.
- (WebViewHost::WebViewHost): Initialize m_inModalLoop.
- * DumpRenderTree/chromium/WebViewHost.h: Add m_inModalLoop.
-
-2010-10-11 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Cleanup font selection code for the Freetype backend
- https://bugs.webkit.org/show_bug.cgi?id=47503
-
- Update DRT to set values for the cursive and fantasy font families, so
- that we can generate consistent results for tests that use these families.
- Add some missing information to fonts.conf.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Always set the fantasy and cursive font
- family names.
- * DumpRenderTree/gtk/fonts/fonts.conf: Add aliases for cursive and fantasy fonts
- to our default serif font. Eventually we may want to import or require some "real"
- fonts, but this should at least ensure consistent rendering during test runs. Also
- add aliases for some other commonly used fonts in tests (Arial and Lucida Grande).
- Finally, add a missing oblique specification for DejaVu Serif, which was resulting
- in some incorrect baselines for the synthetic oblique test.
-
-2010-10-11 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Fix sheriffbot not to crash when there are failing tests. It turns out
- Python sets don't support the + operator. We need to use union
- instead. There's a more elegant way to do this in Python 2.6, but we
- need this code to work in 2.5.
-
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/failuremap_unittest.py:
-
-2010-10-10 Robert Hogan <robert@webkit.org>
-
- Unreviewed, fix failing test from r69468.
-
- [Qt] Put all DRT-created pages in a page group
-
- Fix on r69468.
-
- Because we don't delete closed pages immediately in DRT we need
- to remove them from the page group explicitly instead.
-
- Fixes failure of fast/events/popup-blocked-from-fake-user-gesture.html
-
- https://bugs.webkit.org/show_bug.cgi?id=47469
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::windowCloseRequested):
-
-2010-10-10 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Adam Barth.
-
- commit-queue: Add EFL-EWS status bubble to Bugzilla, now that the
- EFL-EWS bot is up and running.
- https://bugs.webkit.org/show_bug.cgi?id=47277
-
- * QueueStatusServer/handlers/statusbubble.py:
-
-2010-10-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Put all DRT-created pages in a page group
-
- https://bugs.webkit.org/show_bug.cgi?id=47469
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::createWindow):
-
-2010-10-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- WKFrameGetFrameLoadState() returns kWKFrameLoadStateCommitted after the load has been stopped
- <rdar://problem/8173667>
- https://bugs.webkit.org/show_bug.cgi?id=47461
-
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/Test.h:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp: Added.
- (TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::URLForNonExistentResource):
- Adds a test for the frame load state after a failed provisional load. I wanted to test
- the frame load state after a committed load failed, but I don't believe that is possible
- to do without hooking up the http server to serve a long loading page.
-
-2010-10-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Add WebKit2 version of runBeforeUnloadConfirmPanelWithMessage
- <rdar://problem/8447690>
- https://bugs.webkit.org/show_bug.cgi?id=47459
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (runBeforeUnloadConfirmPanel):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-10-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Need implementation of ChromeClient windowRect related functions.
- <rdar://problem/8469476>
- https://bugs.webkit.org/show_bug.cgi?id=47386
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (getWindowFrame):
- (setWindowFrame):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
-
-2010-10-08 Adam Barth <abarth@webkit.org>
-
- Unreviewed (Eric is on vacation in this change is trivial).
-
- Add a "clean" command to webkit-patch to clean the working directory
- https://bugs.webkit.org/show_bug.cgi?id=47436
-
- This command is useful when using SVN because "svn revert" leaves
- unversioned files behind.
-
- * Scripts/webkitpy/tool/commands/download.py:
-
-2010-10-08 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed build fix.
-
- [Qt] Add missing limits.h include since the Qt version currently
- ran on the bot does need that.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2010-10-08 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Turn on building WTR
- https://bugs.webkit.org/show_bug.cgi?id=47349
-
- * Scripts/webkitdirs.pm:
-
-2010-10-08 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] TestController needs its platform dependent methods
- https://bugs.webkit.org/show_bug.cgi?id=47413
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::initializeInjectedBundlePath):
- If the WTR_INJECTEDBUNDLE_PATH environmental variable is
- set then use that otherwise use the path where the bundle
- lives in a normal trunk build.
- (WTR::TestController::initializeTestPluginDirectory):
- Set the bundle's value. It is not used currently.
- (WTR::TestController::platformInitializeContext):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2010-10-08 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WTR: Prevent sending the Done message twice on test timeout.
- https://bugs.webkit.org/show_bug.cgi?id=47410
-
- When InjectedBundle::done() calls stopLoading, this may trigger
- InjectedBundlePage::didFailLoadWithErrorForFrame which calls
- InjectedBundle::done() itself later in the stack.
- This would output the timeout failure message twice and confuse
- the run-webkit-tests script.
-
- This patch adds a third state, Stopping, which prevents WebCore
- errors to trigger done() when testing is over.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
-
-2010-10-08 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add an activateFonts() implementation similar to DRT's initializeFonts().
- Original code by Simon Hausmann.
- https://bugs.webkit.org/show_bug.cgi?id=47402
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp: Added.
- (WTR::activateFonts):
-
-2010-10-08 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Add support for Qt's WebKitTestRunner to old-run-webkit-tests.
- https://bugs.webkit.org/show_bug.cgi?id=47401
-
- * Scripts/build-webkittestrunner:
- * Scripts/old-run-webkit-tests:
-
-2010-10-07 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] WTR first compile: fix compile issues.
- https://bugs.webkit.org/show_bug.cgi?id=47343
-
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/TestController.cpp:
- * WebKitTestRunner/TestInvocation.cpp:
-
-2010-10-07 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Simon Fraser.
-
- [Mac] [DRT] implement setSpatialNavigationEnabled
- https://bugs.webkit.org/show_bug.cgi?id=47291
-
- Implemented LayoutTestController::setSpatialNavigationEnabled for Mac's DRT
- so it can track regression on the existing implementation and future improvements
- we are making.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setSpatialNavigationEnabled):
-
-2010-10-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- rebaseline-chromium-webkit-tests relied on the filename_to_uri()
- hook in the Port infrastructure to generate URIs for the files
- in its summary HTML report; however, that method is supposed to only
- be used for test files (and should really be renamed), so this would
- crash.
-
- This change adds a new "path" module to the system package with a
- routine called abspath_to_uri() that handles converting paths to
- file: URIs independently of anything in the layout_tests package,
- and changes the code to use this. At some point in the near future
- the layout_tests/port/* code should use this as well.
-
- This change also deletes a bunch of unused code and fixes some
- comments in rebaseline_chromium_webkit_tests.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=47319
-
- * Scripts/webkitpy/common/system/path.py: Added.
- * Scripts/webkitpy/common/system/path_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2010-10-07 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] The FreeType backend does not respect the FC_EMBOLDEN property
- https://bugs.webkit.org/show_bug.cgi?id=46216
-
- Fix my latest commit, as it contained some bad changes from a merge gone wrong.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Also initialize the DevaVu Sans font.
-
-2010-10-07 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] Minor naming cleanup in WebDragData, part 2
- https://bugs.webkit.org/show_bug.cgi?id=47227
-
- Update DRT to use the renamed methods.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (addDRTFakeFileToDataObject):
-
-2010-10-07 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add a WKPageFindClient, hook up WKPageCountStringMatches
- https://bugs.webkit.org/show_bug.cgi?id=47373
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Remove hard coded paths.
-
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- (TestWebKitAPI::TEST):
- Fix expected result.
-
- * TestWebKitAPI/Tests/WebKit2/Find.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::didCountStringMatches):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/find.html: Added.
- Add test for WKPageCountStringMatches.
-
-2010-09-21 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Chris Fleizach.
-
- [GTK] The FreeType backend does not respect the FC_EMBOLDEN property
- https://bugs.webkit.org/show_bug.cgi?id=46216
-
- * DumpRenderTree/gtk/fonts/fonts.conf: Add a setting which enables FC_EMBOLDEN
- for DejaVu Serif when there is no bold version available. This is necessary to
- properly test the property in layout tests.
-
-2010-10-07 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>, Andras Becsi <abecsi@webkit.org>, Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add WTR's InjectedBundle build files.
- https://bugs.webkit.org/show_bug.cgi?id=47333
-
- * Scripts/webkitdirs.pm:
- * WebKitTestRunner/DerivedSources.pro: Added.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Added.
- * WebKitTestRunner/WebKitTestRunner.pro: Added.
- * WebKitTestRunner/qt/DerivedSources.pro: Removed.
- Content merged in ../DerivedSources.pro
-
-2010-10-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r69315.
- http://trac.webkit.org/changeset/69315
- https://bugs.webkit.org/show_bug.cgi?id=47363
-
- Forgot to add the new files (Requested by kbalazs on #webkit).
-
- * Scripts/webkitdirs.pm:
- * WebKitTestRunner/qt/DerivedSources.pro: Added.
-
-2010-10-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Change API tester to ask the executable for the list of all
- tests instead of relying on the directory structure.
- https://bugs.webkit.org/show_bug.cgi?id=47359
-
- * Scripts/run-test-webkit-api: Added.
- * Scripts/webkitdirs.pm:
- Add additional script to just launch the api tester with the correct settings.
-
- * Scripts/run-api-tests:
- Change to use the new --dump-tests options to build the list of tests and change
- output to reflect a (suite, testcase) tuple for each test. Also adds some color.
-
- * TestWebKitAPI/Test.h:
- (TestWebKitAPI::Test::Register::Register):
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp:
- (TestWebKitAPI::TEST):
- Give each test a suite name in addition to the test name.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::dumpTestNames):
- (TestWebKitAPI::TestsController::runTestNamed):
- * TestWebKitAPI/TestsController.h:
- * TestWebKitAPI/mac/main.mm:
- (main):
- Add option to print all registered tests.
-
-2010-10-07 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>, Andras Becsi <abecsi@webkit.org>, Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add WTR's InjectedBundle build files.
- https://bugs.webkit.org/show_bug.cgi?id=47333
-
- * Scripts/webkitdirs.pm:
- * WebKitTestRunner/DerivedSources.pro: Added.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Added.
- * WebKitTestRunner/WebKitTestRunner.pro: Added.
- * WebKitTestRunner/qt/DerivedSources.pro: Removed.
- Content merged in ../DerivedSources.pro
-
-2010-10-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed. Do a renaming that was recommended by the reviewer
- (Kenneth) but I forgot to do before landing (http://trac.webkit.org/changeset/69253)
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::RunUntilConditionLoop::start):
- (WTR::RunUntilConditionLoop::RunUntilConditionLoop):
- (WTR::TestController::runUntil):
-
-2010-10-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Watchdog timer implementation for WTR
- https://bugs.webkit.org/show_bug.cgi?id=47337
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Factor out
- the definition of the timer type to a typedef.
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp: Added.
- Timer implementation with QTimer and a helper QObject class.
- (WTR::WatchdogTimerHelper::instance):
- (WTR::WatchdogTimerHelper::timerFired):
- (WTR::WatchdogTimerHelper::WatchdogTimerHelper):
- (WTR::LayoutTestController::platformInitialize):
- (WTR::LayoutTestController::invalidateWaitToDumpWatchdogTimer):
- (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):
-
-2010-10-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed buildfix for 69297 again
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::blankURL):
-
-2010-10-07 Balazs Kelemen <Balazs Kelemen>
-
- Unreviewed trivial build fix for r69297
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::blankURL):
-
-2010-10-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WebKitTestRunner should be portable
- https://bugs.webkit.org/show_bug.cgi?id=45393
-
- Use only the WebKit API for working with urls.
- * WebKitTestRunner/StringFunctions.h:
- (WTR::createWKURL):
- * WebKitTestRunner/TestController.cpp:
- (WTR::blankURL):
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::didFinishLoadForFrame):
-
-2010-10-07 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Use gtk_widget_draw() instead of gtk_widget_get_snapshot() in PixelDumpSupportGtk when building with gtk3
- https://bugs.webkit.org/show_bug.cgi?id=47332
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView):
-
-2010-10-06 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Chris Fleizach.
-
- Remove unused accessibility functions from webkit.
- https://bugs.webkit.org/attachment.cgi?bugid=46707
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-10-06 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Adam Roben.
-
- Fix the sunspider-compare-results to actually use the passed in value for $root.
-
- * Scripts/sunspider-compare-results:
-
-2010-10-06 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Runloop implementation for WTR
- https://bugs.webkit.org/show_bug.cgi?id=47280
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- Implemented TestController::runUntil by a timerEvent
- and a QEventLoop. We step into the event loop from runUntil.
- While we are waiting in the loop a timerEvent is periodically
- checking the value of the condition. Once the condition has
- becoming true the timerEvent wakes us up.
- (WTR::RunUntilLoop::start):
- (WTR::RunUntilLoop::RunUntilLoop):
- (WTR::RunUntilLoop::run):
- (WTR::RunUntilLoop::timerEvent):
- (WTR::TestController::platformInitialize):
- (WTR::TestController::runUntil):
- * WebKitTestRunner/qt/main.cpp:
- Start the main event loop first and creating the TestController later.
- (Launcher::Launcher):
- (Launcher::~Launcher):
- (Launcher::launch): Creating the TestController.
- (main): Setting up a timer for calling Launcher::launch from
- the main event loop.
-
-2010-10-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- new-run-webkit-tests: fix typo in chromium-gpu that was trying to
- enable 'accelerated-composting' instead of 'accelerated-compositing'.
-
- https://bugs.webkit.org/show_bug.cgi?id=47312
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2010-10-06 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] PlatformWebView implementation for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=47276
-
- The implementation follows the way how
- we use the API in MiniBrowser.
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::wkView):
- (WTR::WebView::~WebView):
- (WTR::WebView::WebView):
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::resizeTo):
- (WTR::PlatformWebView::page):
- (WTR::PlatformWebView::focus):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2010-10-06 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add WebKitTestRunner's build files
- https://bugs.webkit.org/show_bug.cgi?id=44155
-
- Parts was taken by Zoltan Horvath's patch.
-
- * Scripts/generate-forwarding-headers.pl: Moved from WebKit2.
- * Scripts/webkitdirs.pm: Make the generated files needed by WTR.
- * WebKitTestRunner/PlatformWebView.h: Addeed typedefs for
- PlatformWKView and PlatformWindow (void* for now).
- Buildfix the case when __APPLE__ is not defined.
- * WebKitTestRunner/qt/DerivedSources.pro: Added.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp: Added.
- Empty stub implementation.
- (WTR::registerWindowClass):
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::resizeTo):
- (WTR::PlatformWebView::page):
- (WTR::PlatformWebView::focus):
- * WebKitTestRunner/qt/TestControllerQt.cpp: Added.
- Empty stub implementation.
- (WTR::registerWindowClass):
- (WTR::TestController::runUntil):
- (WTR::TestController::platformInitialize):
- (WTR::TestController::initializeInjectedBundlePath):
- (WTR::TestController::initializeTestPluginDirectory):
- (WTR::TestController::platformInitializeContext):
- * WebKitTestRunner/qt/WebKitTestRunner.pro: Added.
- * WebKitTestRunner/qt/main.cpp: Added.
- (main):
-
-2010-10-06 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r69202.
- http://trac.webkit.org/changeset/69202
- https://bugs.webkit.org/show_bug.cgi?id=46937
-
- Broke compile of test_shell
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (addDRTFakeFileToDataObject):
-
-2010-10-06 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] Minor naming cleanup in WebDragData, part 2
- https://bugs.webkit.org/show_bug.cgi?id=46937
-
- Update DRT to use the renamed methods.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (addDRTFakeFileToDataObject):
-
-2010-10-06 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/47270> Move WebArchive serialization code into its own file
-
- Reviewed by Adam Roben.
-
- This is the first step in making webarchive tests work on
- Windows.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added
- new files to the project.
- * DumpRenderTree/mac/DumpRenderTree.mm: Removed code that moved
- to WebArchiveDumpSupport.mm.
- * DumpRenderTree/mac/WebArchiveDumpSupport.h: Added.
- * DumpRenderTree/mac/WebArchiveDumpSupport.mm: Copied from WebKitTools/DumpRenderTree/mac/DumpRenderTree.mm.
- (serializeWebArchiveToXML):
-
-2010-10-05 Daniel Bates <dbates@rim.com>
-
- Reviewed by David Kilzer.
-
- Add infrastructure to towards detecting change log diffs that aren't at the top of the ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=46058
-
- Make VCSUtils::fixChangeLogPatch() return a reference to a hash
- structure so as to support returning additional information
- about a change log diff.
-
- Currently, VCSUtils::fixChangeLogPatch() returns a string that
- represents the change log diff. Towards supporting the return
- of additional information, such as whether the change log diff
- inserts an entry at the top of the ChangeLog file, we need to
- make VCSUtils::fixChangeLogPatch() return a reference to hash
- structure.
-
- * Scripts/VCSUtils.pm:
- - Modified fixChangeLogPatch() to return a reference to a
- hash structure.
- - Added documentation to fixChangeLogPatch().
- - Modified call site in mergeChangeLogs() as necessary.
- * Scripts/svn-apply:
- - Modified call site in patch() as necessary.
- * Scripts/svn-create-patch:
- - Modified call site in generateDiff() as necessary.
- * Scripts/svn-unapply:
- - Modified call site in patch() as necessary.
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl:
- - Modified the unit tests as necessary.
-
-2010-10-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Adler.
-
- fix the link to the expected image on windows
- https://bugs.webkit.org/show_bug.cgi?id=47228
-
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: On
- windows, the file must be opened in binary mode when writing
- binary data.
-
-2010-10-05 Adam Barth <abarth@webkit.org>
-
- Update expected result of unittest to match Tony's change below.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-10-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai (over the shoulder).
-
- Paper over errors in image_diff so we don't crash the whole test run.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-10-05 Tony Chang <tony@chromium.org>
-
- Unreviewed, make shutil.rmtree more resiliant to errors
- since windows was raising WindowsError: The process cannot access the file because it
- is being used by another process.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-10-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] fix image diffing in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=47128
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Stop using
- NamedTemporaryFile since it doesn't work on Windows.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-10-05 Kenneth Russell <kbr@google.com>
-
- Reviewed by Tony Chang.
-
- [chromium] Implement layerTreeAsText in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=47216
-
- Plumbed Frame::layerTreeAsText through Chromium's WebKit API to
- make it callable from DumpRenderTree.
-
- No new tests; verified with existing compositor layout tests.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2010-10-05 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- * DumpRenderTree/win/ImageDiff.vcproj: Use WinCairo debug
- property sheet so proper libraries are linked.
-
-2010-10-05 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix url conversion in QWebHistory
-
- Converting from KURL to WFT::String to QUrl does not
- permit proper percent encoding later.
-
- https://bugs.webkit.org/show_bug.cgi?id=47048
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::dumpHistoryItem):
-
-2010-10-05 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- REGRESSION (r68966?): All dumpAsText test fail on WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=47188
- <rdar://problem/8514104>
-
- When constructing the std::string, use the real string length instead of the maximum buffer size.
-
- * TestWebKitAPI/PlatformUtilities.h:
- (TestWebKitAPI::Util::toSTD):
- * WebKitTestRunner/StringFunctions.h:
- (WTR::toSTD):
-
-2010-10-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add MIMEType accessor to WKFrame
- <rdar://problem/8347683>
- https://bugs.webkit.org/show_bug.cgi?id=47138
-
- * TestWebKitAPI/PlatformUtilities.h:
- (TestWebKitAPI::Util::toSTD):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp: Added.
- (TestWebKitAPI::didStartProvisionalLoadForFrame):
- (TestWebKitAPI::didCommitLoadForFrame):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp: Added.
- (TestWebKitAPI::didStartProvisionalLoadForFrame):
- (TestWebKitAPI::didCommitLoadForFrame):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/basic-1.html: Removed.
- * TestWebKitAPI/Tests/WebKit2/icon.png: Added.
- * TestWebKitAPI/Tests/WebKit2/simple.html: Added.
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::createURLForResource):
-
-2010-10-05 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] Rename current_dir to current_group because it's not a directory
- https://bugs.webkit.org/show_bug.cgi?id=47169
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-04 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- r69065 broke test-webkitpy by trying to create a '/tmp-X' directory,
- which can't always be done. This test uses tempfile.mkdtemp(), which
- should be safe.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-04 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Add missing "from __future__ import with_statement" that was
- breaking test-webkitpy on the Leopard bots (broke in r69040).
-
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
-
-2010-10-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r69066.
- http://trac.webkit.org/changeset/69066
- https://bugs.webkit.org/show_bug.cgi?id=47163
-
- Made NRWT reliability worse. (Requested by tkent on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-10-04 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- [NRWT] Reverse the http tests to alphabetical order.
- https://bugs.webkit.org/show_bug.cgi?id=47075
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-10-04 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix timeout on http/tests/navigation/post-goback2.html and postredirect-goback2.html
-
- We need to queue back and forward navigations in the DRT from the
- LayoutTestController so that maybeDump() knows about them.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::queueBackNavigation):
- (LayoutTestController::queueForwardNavigation):
-
-2010-10-04 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] fix image diffing in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=47128
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Flush data to the
- temp file and check the image_diff error code more carefully
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-10-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- aroben's change in r68792 actually broke new-run-webkit-tests when
- running the DRT code path. His change was intended to fix the
- way we were converting windows paths to URIs when running under
- Cygwin (the paths were getting one too many "/" on the front).
- However, the change ended up breaking the chromium_win port, which
- had slightly different logic.
-
- This patch removes the port-specific code and adds tests to make
- sure we're getting the behavior we expect. The Port object no longer
- exposes a get_absolute_path() method that can be used outside of
- of converting test filenames, because it's unreliable otherwise
- (we don't have the right context to know which conversion is intended).
-
- https://bugs.webkit.org/show_bug.cgi?id=47140
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-04 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Handle crash introduced in r69040 if we are not running in a
- Chromium checkout.
-
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
-
-2010-10-04 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Add a way for us to have test expectations that are specific to the
- official builds of Google Chrome (as opposed to Chromium). This change
- looks for an additional "test_expectations_chrome.txt" file in
- Chromium's repository (webkit/tools/layout_tests), and uses the
- concatenation of that file and the regular test_expectations.txt
- file for test overrides.
-
- https://bugs.webkit.org/show_bug.cgi?id=46854
-
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
-
-2010-10-04 Simon Fraser <simon.fraser@apple.com>
-
- Color tests in the list based on existing pass/fail result.
-
- Fix the summary data to account for htmlOnly and nonHTML tests.
-
- * CSSTestSuiteHarness/harness/harness.css:
- (#test-list > option.pass):
- (#test-list > option.fail):
- (#test-list > option.skipped):
- * CSSTestSuiteHarness/harness/harness.js:
- (Test):
- (Test.prototype.statusForFormat):
- (TestSuite.prototype.fillTestList):
- (TestSuite.prototype.updateTestList):
- (TestSuite.prototype.recordResult):
- (TestSuite.prototype.markTestCompleted):
- (TestSuite.prototype.countTestsWithFlag):
- (TestSuite.prototype.queryDatabaseForSummary.this.db.transaction):
- (TestSuite.prototype.queryDatabaseForSummary):
-
-2010-10-04 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- AX: doAXRangeForLine does not work
- https://bugs.webkit.org/show_bug.cgi?id=47101
-
- DRT support to handle NSAccessibilityRangeForLineParameterizedAttribute.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (rangeForLineCallback):
- (AccessibilityUIElement::rangeForLine):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::rangeForLine):
-
-2010-10-04 Andrey Kosyakov <caseq@chromium.org>
-
- Unreviewed. Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add ability to set the CacheModel in Webkit2
- https://bugs.webkit.org/show_bug.cgi?id=47066
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]): Opt minibrowser into
- a PrimaryWebBrowser cache model.
-
-2010-10-03 Simon Fraser <simon.fraser@apple.com>
-
- Make sure to enter all tests when creating the database
- for the first time.
-
- When migrating to a new version of the suite, be sure to
- sync up the database and testinfo.data by removing old
- tests, and inserting new ones.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.openDatabase.creation):
- (TestSuite.prototype.databaseCreated):
- (TestSuite.prototype.populateDatabaseFromTestInfoData):
- (TestSuite.prototype.insertTest):
-
-2010-10-03 Simon Fraser <simon.fraser@apple.com>
-
- More work on treating HTML4 and XHTML1 independently; when
- changing the format, rebuild the test list, and update the
- numbers in the chapter popup.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (Test):
- (Test.prototype.runForFormat):
- (Test.prototype.completedForFormat):
- (ChapterSection):
- (ChapterSection.prototype.countTests):
- (Chapter):
- (Chapter.prototype.description):
- (Chapter.prototype.countTests):
- (Chapter.prototype.testCount):
- (Chapter.prototype.untestedCount):
- (TestSuite.prototype.buildChapters):
- (TestSuite.prototype.loadCurrentTest):
- (TestSuite.prototype.updateProgressLabel):
- (TestSuite.prototype.processFlags):
- (TestSuite.prototype.formatChanged):
-
-2010-10-03 Simon Fraser <simon.fraser@apple.com>
-
- Update test suite version 20101001.
-
- Handle database migration, and delete tests from the db that are
- not present in testinfo.data.
-
- Load about:blank into the test frame before the test url, to make
- missing tests more obvious.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.loadTest):
- (TestSuite.prototype.openDatabase.creation):
- (TestSuite.prototype.openDatabase.migration1_0To1_1):
- (TestSuite.prototype.openDatabase.if.return):
- (TestSuite.prototype.databaseReady):
- (TestSuite.prototype.populateDatabaseFromTestInfoData):
- (TestSuite.prototype.syncDatabaseWithTestInfoData.this.db.transaction):
- (TestSuite.prototype.syncDatabaseWithTestInfoData):
-
-2010-10-02 Simon Fraser <simon.fraser@apple.com>
-
- Add the ability to jump to a specific test.
-
- * CSSTestSuiteHarness/harness/harness.html:
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.goToTestByName):
- (TestSuite.prototype.switchToFormat):
-
-2010-10-02 Simon Fraser <simon.fraser@apple.com>
-
- For a ref test, load the ref in the same format (HTML4 vs XHTML1)
- as the test.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.loadRef):
-
-2010-10-02 Simon Fraser <simon.fraser@apple.com>
-
- Update the UI to reflect the fact that each test needs to be tested
- in both HTML4 and XHTML1 format.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (Test):
- (Chapter.prototype.description):
- (Chapter.prototype.untestedCount):
- (TestSuite.prototype.fillChapterPopup):
- (TestSuite.prototype.updateChapterPopup):
- (TestSuite.prototype.fillTestList):
- (TestSuite.prototype.updateTestList):
- (TestSuite.prototype.goToNextIncompleteTest):
- (TestSuite.prototype.firstIncompleteTestIndex):
- (TestSuite.prototype.recordResult):
- (TestSuite.prototype.formatChanged):
- (TestSuite.prototype.markTestCompleted):
- (TestSuite.prototype.resetTestStatus):
-
-2010-10-01 Simon Fraser <simon.fraser@apple.com>
-
- Add the ability to remove results for re-testing, and
- to import results.
-
- * CSSTestSuiteHarness/harness/harness.css:
- (.custom button):
- (#overlay):
- (#overlay.visible):
- (.overlay-contents):
- (.overlay-contents textarea):
- (.overlay-contents .buttons):
- (.overlay-contents .note):
- (.overlay-contents .buttons button):
- * CSSTestSuiteHarness/harness/harness.html:
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.importResults):
- (TestSuite.prototype.clearResults):
- (TestSuite.prototype.markTestCompleted):
- (TestSuite.prototype.resetTestStatus):
- (TestSuite.prototype.storeTestResult):
- (TestSuite.prototype.importTestResults):
- (TestSuite.prototype.clearTestResults):
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Jon Honeycutt.
-
- Deploy the new WKString functions to remove most uses of CF from
- the WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/StringFunctions.h:
- (WTR::toWK):
- (WTR::toJS):
- (WTR::toSTD):
- (WTR::operator<<):
- (WTR::copyURLString):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::didFinishLoadForFrame):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2010-10-01 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed TestResultsServer change.
-
- Add files introduced by http://crrev.com/61273 to the list of dashboard
- files to update.
-
- * TestResultServer/handlers/dashboardhandler.py:
-
-2010-10-01 Brian Weinstein <bweinstein@apple.com>
-
- Build Fix for Windows.
-
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Don't copy ForwardingHeaders from
- WebKitTestRunner/ForwardingHeaders, instead, add $(WebKitOutputDir)/include/WebCore/
- ForwardingHeaders to the include path.
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add SPI to convert a WKStringRef to a JSStringRef and vice-versa.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp: Added.
- (TestWebKitAPI::TEST):
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add additional WKString API
- https://bugs.webkit.org/show_bug.cgi?id=46958
-
- Add basic WKStringRef tests.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp: Added.
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Add makefile for TestWebKitAPI and call it from the base makefile.
-
- * Makefile:
- * TestWebKitAPI/Makefile: Added.
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Remove unnecessary ForwardingHeaders from test runners.
- https://bugs.webkit.org/show_bug.cgi?id=47010
-
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/ForwardingHeaders: Removed.
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/ForwardingHeaders: Removed.
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- WebSocket tests are flaky
- https://bugs.webkit.org/show_bug.cgi?id=46956
-
- Update these tools to understand how to run the WebSocket tests off the
- Apache server.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-01 Adam Roben <aroben@apple.com>
-
- Encode Executive command arguments using UTF-8 on Cygwin
-
- Cygwin's Python's os.execv doesn't support unicode command arguments.
- Cygwin's execv expects arguments to be encoded using the current code
- page. But code pages are limited in what characters they can handle,
- and our tests include characters that the English code page can't
- handle. So for now we'll just encode everything in UTF-8 on Cygwin,
- which can handle all characters but might confuse some commands, for
- expediency's sake. I'm sure we'll run into cases where UTF-8 isn't
- good enough, but we can deal with that when the problem arises.
-
- Reviewed by Adam Barth.
-
- Fixes <http://webkit.org/b/46892> <rdar://problem/8496639>
- webkitpy.common.system.executive_unittest.ExecutiveTest.test_run_command_with_unicode
- fails on Windows
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._run_command_with_teed_output):
- (Executive.run_command):
- On Cygwin, encode arguments using UTF-8.
-
-2010-10-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add simple API tester for WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=46953
-
- This adds a very simple testing infrastructure for testing APIs exposed
- through the WebKit project. It consists of two parts: 1) a project that
- builds the all the tests 2) a script that searches the tests directory and
- calls the tester once for each test.
-
- This adds the infrastructure and two tests:
- - Tests/WTF/Vector1.cpp - A proof of concept test of WTF data-structures.
- - Tests/WebKit2/BasicTest1.cpp - A proof of concept test of WebKit2 API.
-
- This currently only works on the mac, but is designed to be easily ported
- to any platform.
-
- * Scripts/run-api-tests: Added.
- * Scripts/build-api-tests: Added.
- Scripts to build/run the tests.
-
- * TestWebKitAPI: Added.
- * TestWebKitAPI/Configurations: Added.
- * TestWebKitAPI/Configurations/Base.xcconfig: Added.
- * TestWebKitAPI/Configurations/DebugRelease.xcconfig: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig: Added.
- * TestWebKitAPI/ForwardingHeaders: Added.
- * TestWebKitAPI/ForwardingHeaders/wtf: Added.
- * TestWebKitAPI/PlatformUtilities.h: Added.
- * TestWebKitAPI/PlatformWebView.h: Added.
- (TestWebKitAPI::PlatformWebView::platformView):
- * TestWebKitAPI/StringFunctions.h: Added.
- * TestWebKitAPI/Test.h: Added.
- (TestWebKitAPI::Test::~Test):
- (TestWebKitAPI::Test::name):
- (TestWebKitAPI::Test::Register::Register):
- (TestWebKitAPI::Test::Register::create):
- (TestWebKitAPI::Test::Test):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj: Added.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added.
- * TestWebKitAPI/TestWebKitAPIPrefix.h: Added.
- * TestWebKitAPI/TestsController.cpp: Added.
- (TestWebKitAPI::TestsController::shared):
- (TestWebKitAPI::TestsController::TestsController):
- (TestWebKitAPI::TestsController::runTestNamed):
- (TestWebKitAPI::TestsController::testFailed):
- (TestWebKitAPI::TestsController::registerCreateTestFunction):
- * TestWebKitAPI/TestsController.h: Added.
- * TestWebKitAPI/mac: Added.
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm: Added.
- (TestWebKitAPI::Util::run):
- (TestWebKitAPI::Util::createURLForResource):
- * TestWebKitAPI/mac/PlatformWebViewMac.mm: Added.
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::page):
- (TestWebKitAPI::PlatformWebView::focus):
- * TestWebKitAPI/mac/main.mm: Added.
- Infrastructure.
-
- * TestWebKitAPI/Tests: Added.
- * TestWebKitAPI/Tests/WTF: Added.
- * TestWebKitAPI/Tests/WTF/Vector1.cpp: Added.
- * TestWebKitAPI/Tests/WebKit2: Added.
- * TestWebKitAPI/Tests/WebKit2/BasicTest1.cpp: Added.
- (TestWebKitAPI::State::State):
- * TestWebKitAPI/Tests/WebKit2/basic-1.html: Added.
- Proof of concept tests.
-
-2010-10-01 Adam Roben <aroben@apple.com>
-
- Don't assume AccessibleObjectFromEvent succeeds
-
- Fixes <http://webkit.org/b/44136> <rdar://problem/8321684> Crash in
- DumpRenderTree!notificationListenerProc when running
- plugins/access-after-page-destroyed.html
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (notificationListenerProc): Check both the return value of
- AccessibleObjectFromEvent and the object it returns, as MSDN
- recommends.
-
-2010-10-01 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Tony Chang.
-
- [NRWT] Put the http and websocket tests first in the test list.
- https://bugs.webkit.org/show_bug.cgi?id=46453
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-10-01 Fady Samuel <fsamuel@chromium.org>
-
- Unreviewed, adding myself to the committer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-10-01 Adam Roben <aroben@apple.com>
-
- Test NPN_GetValue(NPNVnetscapeWindow)
-
- Test for <http://webkit.org/b/46726> <rdar://problem/8486319>
- Right-clicking on windowless Flash plugin in WebKit2 makes a context
- menu appear in the bottom-right corner of the screen
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_GetValue): Added. Calls through to the browser.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added NPN_GetValue.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp: Added.
- (GetValueNetscapeWindow::GetValueNetscapeWindow): Initialize members.
- (GetValueNetscapeWindow::NPP_SetWindow): Test that
- NPN_GetValue(NPNVnetscapeWindow) returns a valid HWND and that it
- isn't our HWND.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Added GetValueNetscapeWindow.
-
-2010-10-01 Andreas Kling <andreas.kling@nokia.com>
-
- Unreviewed, adding my webkit.org identity to reviewer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The WebSocket server should flush its logs
- https://bugs.webkit.org/show_bug.cgi?id=46946
-
- The WebSocket server logs are truncated because the driver just
- terminates the child. It should run Python without buffering so we can
- see the end of the log.
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2010-09-30 Simon Fraser <simon.fraser@apple.com>
-
- Add a button to jump to the next untested test.
-
- * CSSTestSuiteHarness/harness/harness.css:
- (.test-type):
- (.name > button):
- * CSSTestSuiteHarness/harness/harness.html:
- * CSSTestSuiteHarness/harness/harness.js:
- (Chapter.prototype.description):
- (Chapter.prototype.untestedCount):
- (TestSuite.prototype.testInfoDataLoaded):
- (TestSuite.prototype.fillChapterPopup):
- (TestSuite.prototype.updateChapterPopup):
- (TestSuite.prototype.buildTestListForChapter):
- (TestSuite.prototype.goToNextIncompleteTest):
- (TestSuite.prototype.firstIncompleteTestIndex):
- (TestSuite.prototype.testCompletionStateChanged):
-
-2010-09-29 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKit2 on Windows should use Windows fonts for the various standard
- font families
- https://bugs.webkit.org/show_bug.cgi?id=43499
- <rdar://problem/8272758>
-
- Reviewed by Adam Roben.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Use the Mac fonts for running tests. This matches DRT behavior.
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Third attempt. We need a better integration test environment.
-
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/failuremap_unittest.py:
-
-2010-09-30 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Support for PlainTextController
-
- Unskip editing/text-iterator/basic-iteration.html
-
- https://bugs.webkit.org/show_bug.cgi?id=38805
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/PlainTextControllerQt.cpp: Added.
- (PlainTextController::PlainTextController):
- (PlainTextController::plainText):
- * DumpRenderTree/qt/PlainTextControllerQt.h: Added.
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Second attempt to fix sheriffbot.
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- This patch should stop the sheriffbot from throwing an exception.
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-09-30 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- The same bots shouldn't run both Windows Debug Tests and Windows Release Tests.
- https://bugs.webkit.org/show_bug.cgi?id=46926
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Have two bots running Windows
- Release Tests, and two bots running Windows Debug Tests, instead of four running both.
-
-2010-09-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch find-flaky-tests should print results URLs
- https://bugs.webkit.org/show_bug.cgi?id=46917
-
- Printing out the results URL makes find-flaky-tests more actionable
- because you can see what happens when a test fails. The output from
- the script is still pretty noisy, but it seems useful.
-
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-09-30 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- Make 2D accelerated canvas rendering build on Mac
- https://bugs.webkit.org/show_bug.cgi?id=46007
-
- Added ACCELERATED_2D_CANVAS to build-webkit
-
- * Scripts/build-webkit:
-
-2010-09-29 Kenneth Russell <kbr@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] Add accelerated compositing support to DumpRenderTree and test_shell
- https://bugs.webkit.org/show_bug.cgi?id=46849
-
- Added offscreen code path for WebGraphicsContext3DDefaultImpl which
- works with the compositor integration in both DumpRenderTree and
- test_shell, since both pass a non-null WebCanvas* to WebViewImpl::paint
- and thereby trigger the compositor's readback code path. Added support
- for --enable-accelerated-compositing to DumpRenderTree.
-
- Tested in both test_shell and DumpRenderTree on Linux, the latter by
- modifying a compositing layout test, dumping the pixels and verifying
- that they matched the output when the compositor was active.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAcceleratedCompositingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::scheduleComposite):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-09-30 Adam Roben <aroben@apple.com>
-
- Ensure that QueueEngine cleans up its log files when its delegate
- tells it to stop processing work
-
- Reviewed by Adam Barth.
-
- Fixes <http://webkit.org/b/46891> <rdar://problem/8496638> Many tests
- in webkitpy.tool.bot.queueengine_unittest.QueueEngineTest crash on
- Windows
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- (QueueEngine.run): Stop ourselves normally (including cleaning up log
- files) when the delegate tells us to stop processing work.
-
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (LoggingDelegate.__init__): Moved code here from
- RaisingDelegate.__init__.
- (LoggingDelegate.expeced_callbacks): Added the stop_work_queue
- callback.
- (LoggingDelegate.stop_work_queue): Moved here from RaisingDelegate.
- (RaisingDelegate.__init__): Removed code that LoggingDelegate takes
- care of for us now.
- (QueueEngineTest.test_trivial): Make sure we got the expected stop
- message.
- (QueueEngineTest.test_not_safe_to_proceed): Changed to explicitly
- remove the callbacks that are related to processing a single work
- item, rather than removing all callbacks after a certain point, as
- there are now more callbacks we expect to receive at the end.
-
-2010-09-30 Adam Roben <aroben@apple.com>
-
- Fix path -> URL conversion on Cygwin
-
- Reviewed by Adam Barth.
-
- Fixes <http://webkit.org/b/46890> <rdar://problem/8496637> Many tests
- in webkitpy.layout_tests.run_webkit_tests_unittest assert on Windows
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.filename_to_uri): Treat Cygwin like other UNIX-y platforms by
- assuming paths already have a leading slash.
-
-2010-09-30 Adam Roben <aroben@apple.com>
-
- Teach WindowGeometryInitializedBeforeSetWindow that NPP_SetWindow can
- be called more than once
-
- The NPP_SetWindow call made when the plugin is torn down was confusing
- us, and was causing us to spew an error into the next test.
-
- Fixes <http://webkit.org/b/46900> <rdar://problem/8496888> REGRESSION
- (r68520): plugins/access-after-page-destroyed.html failing on Windows
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp:
- (WindowGeometryInitializedBeforeSetWindow::WindowGeometryInitializedBeforeSetWindow):
- Initialize member.
- (WindowGeometryInitializedBeforeSetWindow::NPP_SetWindow): Bail if
- this isn't the first time this is called.
-
-2010-09-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch upload warns that I'm using Xcode when I'm not
- https://bugs.webkit.org/show_bug.cgi?id=46869
-
- String.find returns -1 when not found, so switched to "in".
-
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/common/system/user_unittest.py:
-
-2010-09-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch failure-reason dies if non-trunk commits are in the blame range
- https://bugs.webkit.org/show_bug.cgi?id=46866
-
- I also made failure-reason use RegressionWindow in a cleaner way.
-
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-09-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch find-flaky-tests
- https://bugs.webkit.org/show_bug.cgi?id=46876
-
- This command helps us find flaky tests so we can squash them.
-
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-09-29 Simon Fraser <simon.fraser@apple.com>
-
- Fix export to use '?' instead of 'null' for
- tests with no results.
-
- * CSSTestSuiteHarness/harness/harness.js:
-
-2010-09-29 Simon Fraser <simon.fraser@apple.com>
-
- Add a warning when a test requires special steps.
- Add a Print Preview button for 'paged' tests that
- brings up the print dialog, allowing the user to
- judge paged media tests.
-
- * CSSTestSuiteHarness/harness/harness.css:
- * CSSTestSuiteHarness/harness/harness.html:
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.loadTest):
- (TestSuite.prototype.processFlags):
-
-2010-09-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove revisions_casuing_failures
- https://bugs.webkit.org/show_bug.cgi?id=46872
-
- This function exists only to be unit tested.
-
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/failuremap_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- SheriffBot should post the list of failing tests to bugs
- https://bugs.webkit.org/show_bug.cgi?id=46871
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/regressionwindow.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-29 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Martin Robinson, Eric Seidel, and Mark Rowe.
-
- [WinCairo] Adds a build slave.
- https://bugs.webkit.org/show_bug.cgi?id=46360
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add
- entries for a debug build of the WinCairo port.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add
- platform flag to configuration for wincairo (like gtk, chromium, etc.)
- * Scripts/build-webkit: Change 'cairo-win32' labeling to 'wincairo'
- * Scripts/webkitdirs.pm: Change 'cairo-win32' labeling to 'wincairo'
-
-2010-09-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move more SheriffBot smarts into FailureMap
- https://bugs.webkit.org/show_bug.cgi?id=46703
-
- This patch pushes the FailureMap model object further into the
- SheriffBot machine. In addition, it moves a couple operations on this
- object from SheriffBot itself to the model.
-
- Eventually, FailureMap will be the canonical context object for
- SheriffBot operations. FailureMap represents a map of the current
- failures on the bots that might require remediation.
-
- * Scripts/webkitpy/common/net/failuremap.py:
- * Scripts/webkitpy/common/net/regressionwindow.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-29 Tony Chang <tony@chromium.org>
-
- Reviewed by James Robinson.
-
- [chromium] enable -Werror for DRT and webkit_unit_tests on Linux
- https://bugs.webkit.org/show_bug.cgi?id=46829
-
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::DRTDevToolsClient):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
- (WebViewHost::WebViewHost):
-
-2010-09-29 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: implement CSS3 Speech "speak"
- https://bugs.webkit.org/show_bug.cgi?id=46827
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (speakCallback):
- (AccessibilityUIElement::speak):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::speak):
-
-2010-09-29 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Record bot ID when updating queue status
- https://bugs.webkit.org/show_bug.cgi?id=46764
-
- Since we now have multiple bots handling patches from the commit queue,
- we need to differentiate status updates from them, so that we can group
- the queue status page in a less confusing way.
-
- * QueueStatusServer/handlers/updatestatus.py: Accept bot_id as input
- * QueueStatusServer/model/queuestatus.py: Add bot_id property
- * QueueStatusServer/templates/updatestatus.html: Add bot_id input
- * Scripts/webkitpy/common/net/bugzilla_unittest.py: Extract MockBrowser
- * Scripts/webkitpy/common/net/statusserver.py: Add bot_id
- * Scripts/webkitpy/common/net/statusserver_unittest.py: Added.
- * Scripts/webkitpy/tool/main.py: Add --bot-id
- * Scripts/webkitpy/tool/mocktool.py: Add MockBrowser
-
-2010-09-29 Simon Fraser <simon.fraser@apple.com>
-
- No review.
-
- References always refert to a file in .xht format, even
- for HTML tests, so fix their loading.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.loadRef):
-
-2010-09-28 Johnny Ding <jnd@chromium.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=41292
- Add a new parameter to the test plugin to allow specifying a script
- and a mouse/keyboard event. The specified script will be evaluated
- in the browser when the specified event is received by the plugin.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (handleEventCarbon):
- (handleEventCocoa):
-
-2010-09-28 Simon Fraser <simon.fraser@apple.com>
-
- Fix export by adding missing argument.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite.prototype.showResultsForAllTests):
-
-2010-09-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add missing import.
-
- * wx/packaging/build-win-installer.py:
-
-2010-09-28 Simon Fraser <simon.fraser@apple.com>
-
- No review
-
- Show which tests have been run by dimming them out in the test list.
-
- Adjust some element sizes.
-
- * CSSTestSuiteHarness/harness/harness.css:
- (#test-list > option.untested):
- (#test-list > option.completed):
- (#output):
- (.output-options):
- * CSSTestSuiteHarness/harness/harness.js:
- (Test):
- (TestSuite.prototype.fillTestList):
- (TestSuite.prototype.updateTestList):
- (TestSuite.prototype.setSelectedChapter):
- (TestSuite.prototype.recordResult):
- (TestSuite.prototype.markTestCompleted):
- (TestSuite.prototype.testCompletionStateChanged):
- (TestSuite.prototype.loadTestStatus):
-
-2010-09-28 Simon Fraser <simon.fraser@apple.com>
-
- No review.
-
- Implement export of various queries on the test database, sharing
- code with that which displays results inline.
-
- * CSSTestSuiteHarness/harness/harness.js:
- ():
- (TestSuite.prototype.exportResultsCompletion.var):
- (TestSuite.prototype.exportResultsCompletion):
- (TestSuite.prototype.showResultsForCompletedTests):
- (TestSuite.prototype.exportResultsForCompletedTests):
- (TestSuite.prototype.showResultsForAllTests):
- (TestSuite.prototype.exportResultsForAllTests):
- (TestSuite.prototype.exportResultsForTestsNotRun):
- (TestSuite.prototype.exportResultsForTestsWithStatus):
- (TestSuite.prototype.exportResultsForTestsWithMismatchedResults):
-
-2010-09-28 Simon Fraser <simon.fraser@apple.com>
-
- No review.
-
- Work around uncertainty about the order of database
- transactions when creating the database, so that we don't
- try to query the table before it has been created.
-
- * CSSTestSuiteHarness/harness/harness.js:
- (TestSuite):
- (TestSuite.prototype.databaseCreated):
- (TestSuite.prototype.storeTestResult):
- (TestSuite.prototype.populateDatabaseFromTestInfoData):
- (TestSuite.prototype.queryDatabaseForTestsWithStatus):
- (TestSuite.prototype.queryDatabaseForTestsWithMixedStatus):
- (TestSuite.prototype.queryDatabaseForCompletedTests):
- (TestSuite.prototype.queryDatabaseForTestsNotRun):
-
-2010-09-28 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add python keyring support to webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=41269
-
- * Scripts/webkitpy/common/net/credentials.py: Add the ability to read passwords using
- the python keyring module
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/system/user.py: Allow confirm() to default to no and add testing params.
- * Scripts/webkitpy/common/system/user_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-28 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [Cairo] FreeType fonts should obey FontConfig hinting/anti-aliasing settings
- https://bugs.webkit.org/show_bug.cgi?id=46740
-
- * DumpRenderTree/gtk/fonts/fonts.conf: Add specialized variants of common
- fonts which can be used to fully test FontConfig rendering settings.
-
-2010-09-28 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [gtk] Fedora has a different path for the liberation fonts
- https://bugs.webkit.org/show_bug.cgi?id=46709
-
- When searching for DRT fonts, also look in the path where those fonts
- are commonly found on Fedora systems.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Include logic for looking for Fedora-style font paths.
-
-2010-09-28 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Andreas Kling.
-
- run-webkit-tests needs an updated list of directories with webgl tests
- https://bugs.webkit.org/show_bug.cgi?id=46747
-
- Update the list of directories containing WebGL tests and a unit test
- which depends on this list.
-
- * Scripts/old-run-webkit-tests: Update the list of directories.
- * Scripts/webkitpy/layout_tests/port/webkit.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Update the expected result.
-
-2010-09-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Introduce FailureMap to summaries the failures status of all the bots
- https://bugs.webkit.org/show_bug.cgi?id=46700
-
- This patch gives the SheriffBot a handle on the list of failing tests.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/failuremap.py: Added.
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-28 Adam Roben <aroben@apple.com>
-
- Update for the addition of WKPageUIClient::didNotHandleKeyEvent
-
- Fixes <http://webkit.org/b/46660> <rdar://problem/8483465> Need API to
- tell a WebKit2 client application that a key event was not handled
-
- Reviewed by Kenneth Rohde Christiansen and Sam Weinig.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-09-28 Simon Fraser <simon.fraser@apple.com>
-
- Unreviewed.
-
- Update the CSSTestSuiteHarness to not scrape the XHTML chapter files
- for the test order, but instead use information from testinfo.data.
-
- * CSSTestSuiteHarness/harness/harness.html:
- * CSSTestSuiteHarness/harness/harness.js:
-
-2010-09-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, don't try to get the svn revision from the git repo when packaging,
- it causes the process to hang on the gitorious repo.
-
- * wx/packaging/build-mac-installer.py:
- * wx/packaging/build-win-installer.py:
-
-2010-09-28 Adam Roben <aroben@apple.com>
-
- Test that a plugin's HWND is sized/positioned before NPP_SetWindow is
- called
-
- Reviewed by Anders Carlsson.
-
- Test for <http://webkit.org/b/46716> <rdar://problem/8482014>
- Full-page Adobe Reader does not paint until window is resized
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_SetWindow): Added. Just returns NPERR_NO_ERROR at
- this level.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Declared
- NPP_SetWindow.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp: Added.
- (WindowGeometryInitializedBeforeSetWindow::NPP_SetWindow): Checks that
- the plugin's HWND has a non-zero size and that its size/position
- matches that specified in the NPWindow.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_SetWindow): Call through to the PluginTest.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Added WindowGeometryInitializedBeforeSetWindow.cpp, and let VS reorder
- the files as it saw fit.
-
-2010-09-28 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Remove support for Qt 4.5
- https://bugs.webkit.org/show_bug.cgi?id=46718
-
- Remove the code for versions of Qt prior to 4.6.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint):
- (EventSender::updateTouchPoint):
- (EventSender::setTouchModifier):
- (EventSender::touchStart):
- (EventSender::touchMove):
- (EventSender::touchEnd):
- (EventSender::clearTouchPoints):
- (EventSender::releaseTouchPoint):
- (EventSender::sendTouchEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- (TextInputController::setMarkedText):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::sendTouchEvent):
- (LauncherWindow::eventFilter):
- (LauncherWindow::applyZoom):
- (LauncherWindow::setTouchMocking):
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/utils.cpp:
- (urlFromUserInput):
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::animatedFlip):
- (WebViewGraphicsBased::animatedYFlip):
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased::setYRotation):
-
-2010-09-28 İsmail Dönmez <ismail@namtrac.org>
-
- Reviewed by Andreas Kling.
-
- Fix DRT compilation on WinCE. Introduce a WCECOMPAT variable
- which should point to wcecompat installation. Needs wcecompat
- library from http://github.com/mauricek/wcecompat .
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2010-09-28 Daniel Bates <dbates@rim.com>
-
- Rollout changeset 68493 <http://trac.webkit.org/changeset/68493>
- <https://bugs.webkit.org/show_bug.cgi?id=39136>
-
- Rollout changeset 68493 because it broke Sheriffbot's rollout feature.
- In particular, this change caused Sheriffbot to raise an exception when
- trying to parse the bug id on a bug page. We need to look into this
- some more.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
-
-2010-09-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move RegressionWindow further up the dependency chain
- https://bugs.webkit.org/show_bug.cgi?id=46698
-
- Baby steps towards pushing this information into bug posts.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/regressionwindow.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-09-27 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Barth.
-
- sheriffbot can't roll out security patches
- https://bugs.webkit.org/show_bug.cgi?id=39136
-
- Make SheriffBot determine if it's authorized to view a bug
- whose change it wants to rollout before it tries to rollout
- the change.
-
- Moreover, make both webkit-patch and Sheriffbot provide human-
- readable error messages when they are not authorized to view
- a bug and when a bug number is invalid.
-
- Currently, Sheriffbot does not parse Bugzilla bugs for
- <bug error="...">, which indicates an error when retrieving
- a bug. In particular, error="NotPermitted" if a person (or bot)
- is not authorized to view a bug. For such error="NotPermitted" bugs,
- Sheriffbot raises an exception when parsing the bug report and
- this exception does not explicitly indicate Sheriffbot's lack
- of authorization. Instead, Sheriffbot should explicitly check
- for the presence <bug error="..."> before operating on a bug
- and error with a human-readable message if it's not permitted
- to view it.
-
- * Scripts/webkitpy/common/net/bugzilla.py: Added BugzillaError class.
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- - Added unit test test_bug_parsing_for_bugzilla_not_permitted_error().
- - Added unit test test_bug_parsing_for_bugzilla_not_found_error().
- - Added unit test test_bug_parsing_for_bugzilla_invalid_bug_id_error().
- * Scripts/webkitpy/tool/bot/sheriff.py: Modified to catch BugzillaError.
- * Scripts/webkitpy/tool/commands/download.py: Ditto.
- * Scripts/webkitpy/tool/commands/queues.py: Ditto.
- * Scripts/webkitpy/tool/commands/upload.py: Ditto.
- * Scripts/webkitpy/tool/steps/closebug.py: Ditto.
- * Scripts/webkitpy/tool/steps/obsoletepatches.py: Ditto.
- * Scripts/webkitpy/tool/steps/preparechangelog.py: Ditto.
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py: Ditto.
-
-2010-09-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Expose more more failure information from Buildbot to SheriffBot
- https://bugs.webkit.org/show_bug.cgi?id=46697
-
- This patch moves the information about what tests failured closer to
- SheriffBot. There are still a couple more patches to go before
- SheriffBot can post this information to bugs, but this is a step in
- that direction. Yay for unit tests, which caught some bugs in earlier
- versions of this patch.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/regressionwindow.py: Added.
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2010-09-27 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fixing 500 error seen in the status server.
-
- It turns out that a = b = []; b.append(1); then a[0] will be 1!
- This should have been obvious to me, I guess, but it was not what I was expecting.
-
- * QueueStatusServer/model/activeworkitems.py:
-
-2010-09-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue should reject patches that fail to land
- https://bugs.webkit.org/show_bug.cgi?id=46694
-
- This can happen, for example, if there's no reviewer. Without this
- patch, we'll keep retrying the patch.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
-
-2010-09-27 Simon Fraser <simon.fraser@apple.com>
-
- Rubber-stamped by Adele Peterson.
-
- Add a harness for running the CSS 2.1 test suite.
-
- This harness assumes that you've got a local a copy of the suite
- adjacent to the 'harness' directory.
-
- The harness lets you go through the tests in chapter order,
- denoting pass/fail/skipped for each test.
-
- It uses a client-side database to store the results of testing.
-
- * CSSTestSuiteHarness/harness/harness.css: Added.
- * CSSTestSuiteHarness/harness/harness.html: Added.
- * CSSTestSuiteHarness/harness/harness.js: Added.
-
-2010-09-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Patch locks should expire if a patch is marked for retry
- https://bugs.webkit.org/show_bug.cgi?id=46682
-
- This was part Adam's original CommitQueueTask design,
- but support for it was missing from the server.
- I added the support, but triggering lock-release based on this
- special "retry" status feels a bit strange so I added a FIXME.
-
- I also changed the text in queuestatus.html to say "Lock Acquired"
- since "Last Activity" isn't really true. We only update the lock
- date when the patch is started, not on every status update.
-
- I also noticed an exception in next-patch, which I fixed by re-writing
- the unzip logic in activeworkitems.py again.
-
- * QueueStatusServer/handlers/updatestatus.py:
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/templates/queuestatus.html:
-
-2010-09-27 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] fix a warning when compiling DRT on 32-bit linux
- https://bugs.webkit.org/show_bug.cgi?id=46641
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter::handleImage):
-
-2010-09-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queue-status should report when the patch was last locked to a queue
- https://bugs.webkit.org/show_bug.cgi?id=46674
-
- This isn't necessarily the best way to expose this information
- but having this accessible via the web interface is very
- useful until we come up with a nicer way to display this.
-
- I also cleaned up the code in activeworkitems.py a little
- to use list comprehensions and to have the code work with
- pairs instead of two lists at once. Eventually I think those
- item/time pairs need to be their own little helper class.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/templates/queuestatus.html:
-
-2010-09-27 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] fix detection of missing fonts on DRT
- https://bugs.webkit.org/show_bug.cgi?id=46651
-
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (setupFontconfig): Only print an error message if lohit isn't found in both locations.
-
-2010-09-27 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- add webkit unit tests to the chromium testers
- https://bugs.webkit.org/show_bug.cgi?id=46669
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-chromium-webkit-unit-tests: Fix a bug where we weren't using the right configuration.
-
-2010-09-27 Kwang Yul Seo <skyul@company100.net>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-27 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkitpy.common.system.user_unittest.UserTest.test_prompt_with_list spams the console
- https://bugs.webkit.org/show_bug.cgi?id=46634
-
- Use OutputCapture to prevent console spam (and also check for expected
- output).
-
- * Scripts/webkitpy/common/system/user_unittest.py:
-
-2010-09-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by James Robinson.
-
- start-commit-queue should abort any rebases in progress
- https://bugs.webkit.org/show_bug.cgi?id=46640
-
- webkit-patch commit-queue would do this itself, but this just
- helps ensure that the commit-queue script is properly updated
- before we run it (in the case where a previous rebase is in
- progress the git svn rebase would not work before we run the
- commit-queue).
-
- * EWSTools/start-commit-queue.sh:
-
-2010-09-18 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Clean up the DRT fonts.conf and switch to Liberation
- https://bugs.webkit.org/show_bug.cgi?id=46038
-
- Switch to Liberation fonts for GTK+ layout tests. This will make our
- test results metric-compatible with many Windows/Chromium results. It
- also simplifies the fonts.conf that we load and prepares the way for
- fixing many font bugs.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Initialize a known list of fonts instead of loading
- every font in the WEBKIT_TESTFONTS directory.
- * DumpRenderTree/gtk/fonts.conf: Removed.
- * DumpRenderTree/gtk/fonts/AHEM____.TTF: Copied from WebKitTools/DumpRenderTree/qt/fonts/AHEM____.TTF.
- * DumpRenderTree/gtk/fonts/fonts.conf: Added.
- * GNUmakefile.am: Modify FONTS_CONF_FILE to be FONTS_CONF_DIR, so that
- we can load both fonts.conf and AHEM____.TTF from this location.
- * Scripts/old-run-webkit-tests: Remove the check for WEBKIT_TESTFONTS, since
- it is no longer used.
-
-2010-09-26 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-httpd fails if Perl is not installed
- https://bugs.webkit.org/show_bug.cgi?id=46602
-
- Make Port._read_configuration catch all exceptions, since trying to run
- perl (because of _webkit_build_directory) when it's not installed throws
- a WindowsError or OSError, not an IOError (this became an issue after
- r68268, since ChromiumPort ends up calling Port.default_configuration in
- its constructor, which means that we're ending up on this codepath in
- non-NRWT cases too, e.g. for the Chromium NaCl tests, which use
- new-run-webkit-httpd).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2010-09-26 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Antonio Gomes.
-
- [EFL] Add setting API to set a local storage database path.
- https://bugs.webkit.org/show_bug.cgi?id=45446
-
- Add a setting API to set local storage database path.
-
- * EWebLauncher/main.c:
- (on_key_down):
- (browserCreate):
- (main):
-
-2010-09-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Move shared WebKit2 API (used by both bundle and main API) to WebKit2/Shared/API
- https://bugs.webkit.org/show_bug.cgi?id=46587
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
-
-2010-09-26 Antonio Gomes <agomes@rim.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- DRT/Mac nodesFromRect support
-
- [Mac][DRT] Implement LayoutTestController::nodesFromRect
- https://bugs.webkit.org/show_bug.cgi?id=46580
-
- Implements LayoutTestController::nodesFromRect for Mac DRT, and
- adding stubs for GTK+ and Windows.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (nodesFromRectCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::LayoutTestController::nodesFromRect):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::nodesFromRect):
-
-2010-09-25 Nicolas Weber <thakis@chromium.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=46555
- Fix typo in prepare-ChangeLog's help output.
-
- * Scripts/prepare-ChangeLog:
-
-2010-09-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Implement WebKit2 callback equivalent to -[WebUIDelegate mouseDidMoveOverElement:modifierFlags:]
- <rdar://problem/8359279>
- https://bugs.webkit.org/show_bug.cgi?id=46546
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (mouseDidMoveOverElement):
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (mouseDidMoveOverElement):
- (BrowserView::create):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-09-24 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Allow rebaselines for webkit-patch rebaseline to be chosen
- https://bugs.webkit.org/show_bug.cgi?id=46407
-
- Instead of always rebaselining all failing tests, allow a subset to be
- chosen.
-
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2010-09-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Tony Chang.
-
- [chromium] Implement TextInputController::firstRectForCharacterRange
- https://bugs.webkit.org/show_bug.cgi?id=38100
-
- Implemented TextInputController::firstRectForCharacterRange for chromium platform.
- No new tests are added since we need to implement the same feature in chromium side
- in order to enable any tests that uses this function.
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::firstRectForCharacterRange): Added.
-
-2010-09-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue reports land failures as "PASS"
- https://bugs.webkit.org/show_bug.cgi?id=46530
-
- We were ignoring the return value of land instead of passing it back to
- CommitQueue. Of course, this was the one case I forgot to test!
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
-
-2010-09-24 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests prints out nothing when build-dumprendertree fails
- https://bugs.webkit.org/show_bug.cgi?id=37563
-
- Print error message when build-dumprendertree fails.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-09-24 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT doesn't respect config set with set-webkit-configuration
- https://bugs.webkit.org/show_bug.cgi?id=46278
-
- Use Port.default_configuration() instead of hardcoding Release in
- ChromiumPort configuration initialization, so that we still inherit the
- configuration set by set-webkit-configuration.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2010-09-24 Chang Shu <chang.shu@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Fix the code to check file existence.
- https://bugs.webkit.org/show_bug.cgi?id=46465
-
- * QtTestBrowser/main.cpp:
- (main):
-
-2010-09-23 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r68232.
- http://trac.webkit.org/changeset/68232
-
- Broken NRWT on the canary bots.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-09-23 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- r68008 broke new-run-webkit-tests in that the chromium ports no
- longer respect set-webkit-configuration. The correct fix for this
- is being pursued in bug 46278 (along with a bunch of unit tests),
- but in the meantime I'm reverting the particular lines that broke
- things. This was tested by hand.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-09-23 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2 API: Need way to know when a frame is removed from the hierarchy
- <rdar://problem/8414062>
- https://bugs.webkit.org/show_bug.cgi?id=46432
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didRemoveFrameFromHierarchy):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-09-23 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] implement layoutTestController.sampleSVGAnimationForElementAtTime
- https://bugs.webkit.org/show_bug.cgi?id=46426
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2010-09-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Nate Chapin.
-
- [GTK] r68199 introduced two test failures
- https://bugs.webkit.org/show_bug.cgi?id=46424
-
- Fix a regression handling preference overrides that are attached to boolean properties.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): g_strcasecmp returns 0 when strings match
- so we must check for that when converting a string to a boolean.
-
-2010-09-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by David Levin.
-
- Fix a condition check in ServerProcess, which becomes relevant when reading binary data.
- https://bugs.webkit.org/show_bug.cgi?id=46406
-
- This breaks when the method is called with specified size of data (image data), and the
- buffer hasn't yet reached this size.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py: Changed to check for values of
- index larger than 0.
-
-2010-09-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Nate Chapin.
-
- [GTK] Some tests from r68174 fail on the GTK+ bots
- https://bugs.webkit.org/show_bug.cgi?id=46396
-
- Simplify LayoutTestController::overridePreference to make it easier for
- people unfamiliar with the code to keep the list of preferences up to date.
- Add the conversion for enable-hyperlink-auditing.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): Use a simple if-else block to determine
- out the property name for overrridePreference. Also simplify the logic for setting
- string properties. Add the conversion for enable-hyperlink-auditing.
-
-2010-09-23 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] add caretBrowsingEnabled to WebSettings and DRT
- https://bugs.webkit.org/show_bug.cgi?id=46388
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2010-09-23 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Allow DRT to toggle hyperlink auditing (i.e., <a ping>).
- https://bugs.webkit.org/show_bug.cgi?id=30458
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2010-09-21 Stephen White <senorblanco@chromium.org>
-
- Reviewed by David Levin.
-
- Implement --enable-accelerated-2d-canvas flag in DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=46208
-
- This flag allows the layout tests to be run with or without accelerated
- 2D canvas rendering.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- Declare the new flag string, and check for it on startup.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- Add a boolean for the new flag, in order to preserve its value over
- preferences reset.
- (TestShell::resetWebSettings):
- Set the new flag to the stored value on reset.
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAccelerated2dCanvasEnabled):
- Add an accessor for the new flag.
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- Initialize the new flag to false.
- (WebPreferences::applyTo):
- Copy the flag's value to the WebSettings.
- * DumpRenderTree/chromium/WebPreferences.h:
- Add the new flag.
-
-2010-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Refactor QtWebKitPlatformPlugin interface
-
- Make it easier to keep source-compability for the
- QtWebKitPlatformPlugin interface, and run qmake
- on the example (but not build) for convenience.
-
- https://bugs.webkit.org/show_bug.cgi?id=46345
-
- * Scripts/webkitdirs.pm:
-
-2010-09-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Tweak some status messages that Eric thought were confusing
- https://bugs.webkit.org/show_bug.cgi?id=46342
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix comm-queue typo
- https://bugs.webkit.org/show_bug.cgi?id=46339
-
- We were missing a "self". The real problem is that we didn't have an
- integration test for the failure case.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue should log more detailed messages to the QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=46333
-
- When I created CommitQueueTask, I removed most of the previous logging.
- This patch adds back more detailed logging so folks can see their patch
- progress through the queue.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-22 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] User style layout tests don't pass on Chromium
- https://bugs.webkit.org/show_bug.cgi?id=46069
-
- Fix a typo in LayoutTestController::addUserStyleSheet that was causing a
- crash the Chromium DRT. Pass InjectInExistingDocuments to mimic DRT
- behavior from other ports.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::addUserStyleSheet):
-
-2010-09-22 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Martin Robinson.
-
- [WinCairo] Part 2: Update WebKitTestRunner and DumpRenderTree Build.
- https://bugs.webkit.org/show_bug.cgi?id=46303.
-
- * MiniBrowser/Configurations/MiniBrowserCFLite.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: Moved
- CoreFoundation-specific stuff to new MiniBrowserCoreFoundation
- property sheet.
- * MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops: Added.
- * MiniBrowser/MiniBrowser.vcproj: Updated configuration to use
- appropriate property sheet for the build types.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Updated the
- configuration to use appropriate property sheet for CoreFoundation
- and CFLite-style builds.
-
-2010-09-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Optimize commit-queue performance for green trees
- https://bugs.webkit.org/show_bug.cgi?id=46254
-
- This patch redesigns the controller logic for the commit-queue. In the
- new design, the controller exercises much finer-grained control over
- the landing process. In particular:
-
- - Patches that fail to apply now get rejected almost immediately.
- - Patches that fail to build get rejects after two builds (instead of
- three builds and one test run).
- - Patches that run into a flaky test now get accepted after one build
- and two test runs instead of three full build-and-test runs.
-
- The main cost of these optimizations is that we don't find out the tree
- has a failing test until the very end of the process, but if the tree
- has a busted test, there's not much we can do anyway. We might as well
- burn commit-queue resources spinning optimisticly.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py: Added.
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-22 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Martin Robinson.
-
- [WinCairo] Update WebKitTestRunner and DumpRenderTree Build.
- https://bugs.webkit.org/show_bug.cgi?id=46303.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Disable local MD5 sources
- for Cairo build. Copy wtf MD5 header to ForwardingHeaders for the
- WinCairo build.
- * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundle.vcproj: Update win new *_Cairo
- build targets that use the new InjectedBundleCFLite.vsprops file.
-
-2010-09-22 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix bustage of rebaseline-chromium-webkit-tests resulting from
- r67974. Really need better unit tests for this tool :(
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-09-22 Adam Roben <aroben@apple.com>
-
- Unbreak test-webkitpy
-
- * Scripts/webkitpy/test/main.py:
- (Tester.run_tests): Add a line that mysteriously got deleted.
-
-2010-09-22 Adam Roben <aroben@apple.com>
-
- Make test-webkitpy test WebKit2's scripts
-
- These scripts can't be in WebKitTools due to limitations of Apple's
- build process. But that doesn't mean we can't test them!
-
- Fixes <http://webkit.org/b/46297> test-webkitpy should test code in
- WebKit2/Scripts
-
- Reviewed by Adam Barth.
-
- * Scripts/test-webkitpy:
- (_clean_packages_with_test): Renamed from _clean_webkitpy_with_test.
- Now takes an external_package_paths parameter and cleans both webkitpy
- and any external packages.
- (init): Added an external_package_paths parameter which we pass along
- to _clean_packages_with_test.
- (top level): Add WebKit2/Scripts/webkit2 as our only external package
- and pass it along to init and Tester.run_tests.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.run_tests): Added an optional external_package_paths
- parameter. We modify sys.path so that the external packages can be
- imported, and search for unittest files inside all external packages
- in addition to inside webkitpy.
-
-2010-09-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: r68063 broke linux python tests
-
- Add a missing "from __future__ import with_statement" to this
- new file; the perils of testing only on the Mac and by review :(
-
- https://bugs.webkit.org/show_bug.cgi?id=46293
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2010-09-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Add a 'chromium-gpu' set of ports that will test the accelerated
- GPU paths. This patch adds:
-
- - support for the '--accelerated-compositing' and
- 'accelerated-2d-canvas' flags to new-run-webkit-tests (and the
- 'no-' flags)
- - adds a new set of Ports that will look under
- platform/chromium-gpu-$OS/ for baselines before looking in the
- regular chromium search path
- - adds a new test_expectations.txt file in platform/chromium-gpu
- that skips all but the tests we actually want to run with
- acceleration.
-
- This patch will allow us to run both with and without acceleration
- and to change the defaults for both the regular and -gpu options
- as the code evolves.
-
- We plan to add both --chromium-$OS and --chromium-gpu-$OS runs to
- each test bot.
-
- https://bugs.webkit.org/show_bug.cgi?id=46225
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-09-22 Jamey Hicks <jamey.hicks@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Web Inspector: Remote Web Inspector support for QtWebKit
- https://bugs.webkit.org/show_bug.cgi?id=43988
-
- Runs a web debug server on port specified by QtTestBrowser
- argument -remote-inspector-port. Property
- _q_webInspectorServerPort of the QWebPage instance will be set
- according to the argument. All pages with that property set will
- be remotely inspectable.
-
- URL for remote inspection of first QWebPage is
- http://localhost:9222/webkit/inspector/inspector.html?page=1
- where 1 is the number of the QWebPage instance.
-
- The base URL yields an index page with links to the individual inspectors:
- http://localhost:9222/
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::init):
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2010-09-22 Adam Roben <aroben@apple.com>
-
- Fix webkit-patch failure-reason now that build.webkit.org has been
- updated
-
- Fixes <http://webkit.org/b/46273> webkit-patch failure-reason crashes
- every time
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- (BuildBot._file_cell_text): Added. Travels down the firstChild chain
- looking for an element that contains text, then returns it.
- (BuildBot._parse_twisted_file_row): Use _file_cell_text to get the
- text out of the cells. This way it doesn't matter whether the cells
- have <b> children (as for cells in directory rows) or not (as for
- cells in file rows)
- (BuildBot._parse_twisted_directory_listing): Look for rows that have
- the "directory" or "file" class, rather than rows with any class,
- since header rows now have a class attribute.
-
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
- (BuildBotTest._example_directory_listing): Updated to more closely
- match the markup that build.webkit.org is producing now.
-
-2010-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- new-run-webkit-tests: fix bug introduced in r68008 where if you
- specify --chromium and no --platform, and you're running on
- windows, you use the 'chromium-win' port by default instead of the
- version-specific port. This breaks the buildbots.
-
- It will be good for this refactoring to settle down so I can
- rewrite the logic for default ports and the unit tests to be
- clearer (and the testing more comprehensive).
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Modify the Port interface to take only a series of keyword arguments
- in the constructor, and modify Port/factory.get() to accomodate that,
- and to accept user=XXX as an argument so we can pass
- webkitpy.common.system.user.User objects in.
-
- Then, modify new-run-webkit-tests and rebaseline-chromium-webkit-tests
- to use the common routine in webkitpy.common.system.user.open_url()
- to display HTML files.
-
- There was a routine in the Port interface to do the same thing,
- but I see no need for a port-specific hook for this, since it is
- something that will always be executed by the host environment
- and displaying web pages has nothing to do with running layout tests.
-
- Note that new-run-webkit-tests used to use test_shell to display
- the page; this is potentially useful so that you can actually click
- from a result to the broken page; however, since DumpRenderTree
- doesn't support this functionality, it will be going away eventually.
-
- https://bugs.webkit.org/show_bug.cgi?id=46128
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-09-21 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Get fresh theme when running EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=46210
-
- If user tried to run EWebLauncher outside of the build tree, it would
- not find the theme and fallback to the installed one. However, since
- EWebLauncher is not installed, we always want to take the theme from
- the just compiled source code. If user had never installed WebKit's
- EFL port it could even receive a segv since no theme would be found.
-
- Now EWebLauncher does not fallback to the installed theme and CMake
- gives as DATA_DIR the directory of the theme it has just built.
-
- * CMakeListsEfl.txt: Pass the build directory as DATA_DIR to
- EWebLauncher.
- * EWebLauncher/main.c: Use only the theme from build director. Do not
- fallback to others as this could hide real bugs.
- (quit):
- (browserCreate):
- (findThemePath):
- (main):
-
-2010-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Don't pass the --test-shell arg to the Chromium Mac port of DRT;
- it just confuses it.
-
- https://bugs.webkit.org/show_bug.cgi?id=46230
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-09-21 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Make a new buildbot for Leopard Debug Test
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix breakage of Chromium Mac DRT port caused by r67905.
-
- https://bugs.webkit.org/show_bug.cgi?id=46230
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Add missing import of 'tempfile'.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-09-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: pull the list of tests from the Port, and
- make it possible to run with no actual test files in the filesystem.
-
- This set of changes allows us to delete the special
- webkitpy/layout_tests/data directory and test the generic code without
- touching the filesystem (except to write results). This speeds up
- test-webkitpy substantially.
-
- This also cleans up and removes several code paths in the generic
- code and fixes some minor bugs, notably in the test_expectations
- parsing, which was previously fragile if the tests weren't present.
-
- We also change the way we diff image results to be able to do so
- in memory, without relying on files. This slows down chromium
- test_shell, which always writes images to files, but should speed
- up DRT and ImageDiff-based implementations slightly.
-
- Note that pulling the list of tests to run from the Port will allow
- ports to specify what tests to run as an inclusive list; previously
- you could only do this as an exclusive list by using a
- test_expectations file or Skipped files; nothing actually uses this
- feature yet and it's unclear if it should be used.
-
- Note that there are no functional changes -- apart from now
- always printing out the location of the checksum file when we are
- tracing test runs -- and the total number of lines of non-test code
- actually drops by two.
-
- There is some more cleanup that can be done in the Port/Driver
- interface and in some handling of filenames, but I'll save that
- for another change.
-
- https://bugs.webkit.org/show_bug.cgi?id=45801
-
- * Scripts/webkitpy/layout_tests/data/*: Removed.
- - no longer need special mock layout_tests_directory in the
- repository.
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- - add code to display missing text files, checksums when tracing
- - update to not look at the filesystem directly.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- - add more unit tests
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- - remove tests_are_present flag
- - update with changes in Port interface - no longer access
- the filesystem directly, although we still use os.path for
- filename manipulation.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- - add more unit tests
- * Scripts/webkitpy/layout_tests/layout_package/test_files.py: Removed.
- - renamed to port/test_files.py
- * Scripts/webkitpy/layout_tests/port/base.py:
- - change diff_image() to expect actual image data, not filenames
- - add expected_checksum(), expected_image(), expected_text() to
- return the content of the files so that we don't need a filesystem
- - add path_exists(), path_isdir() for filesystem-like access.
- - add test_dirs() to keep clobber-test-results from needing to
- actually look at a real layout tests dir
- - add tests() to return the list of tests to run on the port
- (calls port/test_files to do the work).
- - add update_baseline() to be able to save new baselines
- - add uri_to_test_name() from port/dryrun.py so we can easily check
- filename_to_uri()
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- - add more unit tests
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - change diff_image() to accept image content, not filenames.
- This will be slower for test_shell/image_diff, but faster
- for DRT/ImageDiff.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- - add more unit tests
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- - simplify greatly
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- - add more unit tests
- * Scripts/webkitpy/layout_tests/port/test.py:
- - massive rewrite to use in-script list of tests and expectations
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- - rename from layout_package/test_files.
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py:
- - add unit tests
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - update diff_image() to take image contents, not files. Should
- make things slightly faster.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - update with changes to diff_image()
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- - update with changes to diff_image()
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - remove tests_are_present from test_expectations
- - pull the list of tests from port.tests() instead
- of calling test_files.py directly.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- - update unit tests
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- - update with changes to
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- - update with change in Port interface
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
- - update with change in Port interface
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- - remove the tests_are_present flag
-
-2010-09-21 Anders Carlsson <andersca@apple.com>
-
- Disable logging.
-
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
-
-2010-09-21 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- add a script for running webkit_unit_tests
- https://bugs.webkit.org/show_bug.cgi?id=46014
-
- * Scripts/run-chromium-webkit-unit-tests: Added.
-
-2010-09-21 Fridrich Strba <fridrich.strba@bluewin.ch>
-
- Reviewed by Martin Robinson.
-
- Fix linking problems on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=45844
-
- * GNUmakefile.am: link the executables with winmm.dll
-
-2010-09-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- feeder-queue svn updates more often than needed
- https://bugs.webkit.org/show_bug.cgi?id=46171
-
- We don't need to poll SVN every time we feed the feeders. Rather, we
- can count on the wrapper shell script to auto-update the queue.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add robot loader timeout and extra time options.
- https://bugs.webkit.org/show_bug.cgi?id=46172
-
- [-robot-timeout <s>]: Load the next page after s seconds if the current
- page didn't finish loading.
- [-robot-extra-time <s>]: Wait s seconds after the current page finished
- loading before loading the next one. This should allow some time for the
- page's JavaScript to execute.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::applyPrefs):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::robotTimeout):
- (LauncherApplication::robotExtraTime):
- (LauncherApplication::LauncherApplication):
- (LauncherApplication::handleUserOptions):
- (main):
- * QtTestBrowser/urlloader.cpp:
- (UrlLoader::UrlLoader):
- (UrlLoader::loadNext):
- (UrlLoader::loadUrlList):
- * QtTestBrowser/urlloader.h:
-
-2010-09-21 Pavel Podivilov <podivilov@chromium.org>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-20 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Eric Carlson.
-
- [GTK] enhanced context menu for media elements
- https://bugs.webkit.org/show_bug.cgi?id=45021
-
- EventSender::contextClick() now returns an array of js
- objects. Each object has a title property and a click() method.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (getMenuItemTitleCallback):
- (setMenuItemTitleCallback):
- (menuItemClickCallback):
- (getMenuItemClass):
- (contextClickCallback):
-
-2010-09-20 Hayato Ito <hayato@chromium.org>
-
- Unreviewed.
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The tool member variable should be called _tool
- https://bugs.webkit.org/show_bug.cgi?id=46160
-
- Created by find-and-replace.
-
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/openbugs.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/multicommandtool.py:
-
-2010-09-20 Adam Barth <abarth@webkit.org>
-
- I ran the tests before landing but ignored the fact that they failed. :(
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a feeder queue that polls bugs.webkit.org for the commit-cluster
- https://bugs.webkit.org/show_bug.cgi?id=46141
-
- The feeder-queue polls bugs.webkit.org every 30 seconds and updates the
- list of work items on the status server. The individual commit-cluster
- nodes then grab the patches from the server and process them.
-
- * Scripts/webkitpy/tool/bot/feeders.py: Added.
- * Scripts/webkitpy/tool/bot/feeders_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
-
-2010-09-20 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Darin Adler.
-
- build-webkit: Add support for CMake build system
- https://bugs.webkit.org/show_bug.cgi?id=44979
-
- * Scripts/build-webkit: Add "--efl" command-line option to build the
- EFL port of WebKit.
- * Scripts/webkitdirs.pm: Define buildCMakeProject() and
- buildEflCMakeProject() subroutines.
-
-2010-09-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: refactor command line args getting passed to DRT
-
- This change cleans up some argument parsing between functions to get
- rid of some overlapping data structures. There should be no functional
- changes in this patch; it is pure refactoring in preparation for
- landing the Chrome GPU port and adding a generic way to pass
- args to DRT/TestShell.
-
- https://bugs.webkit.org/show_bug.cgi?id=46135
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- - pass the options argument explicitly to the threads and drivers,
- also consolidate the passing of options to the driver.
- - pass options directly to process_output() to remove a couple
- parameters (minor cleanup).
- * Scripts/webkitpy/layout_tests/port/base.py:
- - pass the options argument to Port.create_driver().
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- - update Port.create_driver() test
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- - pass the options argument to Port.create_driver(), and clean up
- building of the cmd line for DRT.
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- - pass the options argument to Port.create_driver()
- * Scripts/webkitpy/layout_tests/port/test.py:
- - pass the options argument to Port.create_driver()
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - pass the options argument to Port.create_driver(), and clean up
- building of the cmd line for DRT.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - consolidate args in _get_dump_render_tree_args and rename to
- _get_test_args(); move all of the command-line args to the
- Port implementations.
-
-2010-09-20 Andrew Wilson <atwilson@chromium.org>
-
- Revert change which was accidentally committed along with some expectation changes.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2010-09-20 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add explicit --force-patch flag to webkitpy tools
- https://bugs.webkit.org/show_bug.cgi?id=46103
-
- It wasn't obvious until I read the applypatch.py source code that
- --non-interfactive implies passing --force to patch. Add --force-patch
- as an alias to the flag, so that this behavior is more discoverable.
-
- * Scripts/webkitpy/tool/steps/applypatch.py:
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-09-20 Eric Seidel <eric@webkit.org>
-
- Unreviewed, adding a line which got dropped and is trivially correct (and tested).
-
- commit-queue can't land patches
- https://bugs.webkit.org/show_bug.cgi?id=46138
-
- Add a line of code I forgot in my last commit.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
-
-2010-09-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The commit-cluster bots still race to lock patch_ids
- https://bugs.webkit.org/show_bug.cgi?id=46130
-
- It turns out we need to use a transaction object to make the
- read/modify/write lock operation atomic. From reading the AppEngine
- documentation, I think this patch should do what we want. It's hard to
- test locally because the test instance isn't distributed in the same
- way the production instance is.
-
- * QueueStatusServer/handlers/nextpatch.py:
- * QueueStatusServer/model/activeworkitems.py: Added.
-
-2010-09-20 Andy Estes <aestes@apple.com>
-
- Reviewed by Adam Barth.
-
- REGRESSION (HTML5 Parser): Pages broken due to <tag<tag> parsing changes
- https://bugs.webkit.org/show_bug.cgi?id=40961
-
- Implement WebKitUsePreHTML5ParserQuirks preference.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Reset WebKitUsePreHTML5ParserQuirks
- to false after a test finishes.
-
-2010-09-20 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: Put
- $(WebKitOutputDir)\include before $(WebKitLibrariesDir)\include so
- we'll pick up the most recent versions of the headers.
-
-2010-09-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should check commit-queue+ again just before committing
- https://bugs.webkit.org/show_bug.cgi?id=32679
-
- Added a _revalidate_patch check, right before landing.
-
- Since _revalidate_patch passes the patch_id from the work item
- back to bugzilla, I had to fix all of the previous queue tests to
- use valid attachment ids (that's the majority of this change).
-
- In order to validate that the bug was still open, I had to teach
- bugzilla.Bug about open/closed states.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-20 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed.
-
- Adding myself as a comitter.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Two instances of commit-queue try to process the same patch
- https://bugs.webkit.org/show_bug.cgi?id=46113
-
- This patch makes next-patch atomic so that the server won't vend the
- same patch twice in the same hour.
-
- * QueueStatusServer/handlers/nextpatch.py:
-
-2010-09-20 Adam Roben <aroben@apple.com>
-
- Make WebKitTestRunner's wait-to-dump watchdog timer work on Windows
-
- We were previously trying to use a CFRunLoopTimer, but since Windows
- doesn't use CFRunLoop on most threads this doesn't work. Now we use a
- Windows-style timer on Windows.
-
- I also replaced all uses of "watchdog" with "watchdog timer".
-
- Fixes <http://webkit.org/b/46101> WebKitTestRunner's wait-to-dump
- watchdog timer doesn't work on Windows
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump): Updated for rename.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: Removed
- platform-specific functions.
- (WTR::LayoutTestController::LayoutTestController): Added call to
- platformInitialize.
- (WTR::LayoutTestController::waitUntilDone): Changed to call
- initializeWaitToDumpWatchdogTimerIfNeeded instead of doing the work
- right in this function.
- (WTR::LayoutTestController::waitToDumpWatchdogTimerFired): Updated for
- rename.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Added new
- members needed to support the watchdog timer abstraction. Replaced
- some "watchdog"s with "watchdog timer".
-
- * WebKitTestRunner/InjectedBundle/mac/LayoutTestControllerMac.mm:
- Added.
- (WTR::LayoutTestController::platformInitialize): Does nothing on this
- platform.
- (WTR::LayoutTestController::invalidateWaitToDumpWatchdog): Moved here
- from LayoutTestController.cpp and changed to use an early return.
- (WTR::waitUntilDoneWatchdogTimerFired): Moved here from
- LayoutTestController.cpp.
- (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):
- Moved code here from LayoutTestController::waitUntilDone and changed
- to use an early return.
-
- * WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp:
- Added.
- (WTR::LayoutTestController::platformInitialize): Initialize our
- watchdog timer.
- (WTR::LayoutTestController::invalidateWaitToDumpWatchdog): Added.
- Kills and clears the watchdog timer.
- (WTR::waitToDumpWatchdogTimerFired): Added. Calls through to the
- LayoutTestController member function of the same name.
- (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):
- Added. Sets up the timer if it isn't already set.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Added
- LayoutTestControllerMac.mm.
-
- * WebKitTestRunner/win/InjectedBundle.vcproj: Added
- LayoutTestControllerWin.cpp.
-
-2010-09-20 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Daniel Bates.
-
- [GTK] fast/forms/listbox-selection.html fails
- https://bugs.webkit.org/show_bug.cgi?id=45942
-
- Use the gdkModifersFromJSValue helper to parse all appropriate modifier
- strings in keyDownCallback.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback): Use the gdkModifersFromJSValue instead of duplicating the
- modifier parsing logic.
-
-2010-09-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKit2 decidePolicyForNavigationAction should include mouse button information
- <rdar://problem/8413165>
- https://bugs.webkit.org/show_bug.cgi?id=46060
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (decidePolicyForNavigationAction):
- (decidePolicyForNewWindowAction):
-
-2010-09-19 Daniel Bates <dbates@rim.com>
-
- Reviewed by Martin Robinson.
-
- Add unit tests for diffs that delete or modify a change log entry
- or describe changes that are far apart
- https://bugs.webkit.org/show_bug.cgi?id=46046
-
- Add additional unit tests to test change log diffs that contain
- deletions or changes that are far apart from each other in the
- ChangeLog file.
-
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl:
- - Added the following unit tests:
- "fixChangeLogPatch: [no change] In-place change."
- "fixChangeLogPatch: [no change] Remove first entry."
- "fixChangeLogPatch: [no change] Remove entry in the middle."
- "fixChangeLogPatch: [no change] Far apart changes (i.e. more than one chunk)."
-
-2010-09-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Replace WKBundleRangeRef with WKBundleRangeHandleRef.
- https://bugs.webkit.org/show_bug.cgi?id=46054
-
- The new one acts like WKBundleNodeHandleRef and allows for getting a
- wrapper in a specific world for the handle.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::propertyValue):
- (WTR::propertyValueDouble):
- (WTR::propertyValueInt):
- (WTR::numericWindowPropertyValue):
- (WTR::toStr):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-09-19 Kent Tamura <tkent@chromium.org>
-
- Unreviewed. Fix WebGL test regressions by r67809.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo): Call setExperimentalWebGLEnabled().
-
-2010-09-19 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Adam Barth.
-
- [DRT/Chromium] Fix a WebSettings handling bug
- https://bugs.webkit.org/show_bug.cgi?id=45945
-
- Before this change, Chromium DRT reset WebSettings for every new
- window. It was wrong.
- If new window is not the first one, we have to apply the same
- settings as the first window. So, we introduce WebPreference to
- store the current settings, and apply it to new windows. It's same
- as test_shell's behavior.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- Use WebPreferences instead of WebSettings.
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- (LayoutTestController::disableImageLoading):
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- (LayoutTestController::setXSSAuditorEnabled):
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- (LayoutTestController::setAllowFileAccessFromFileURLs):
- (LayoutTestController::overridePreference):
- (LayoutTestController::setEditingBehavior):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings): Use WebPreferences.
- (TestShell::runFileTest): ditto.
- (TestShell::createNewWindow): Apply existing WebPreferences to a new WebView.
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::preferences):
- (TestShell::applyPreferences):
- * DumpRenderTree/chromium/WebPreferences.cpp: Added.
- * DumpRenderTree/chromium/WebPreferences.h: Added.
-
-2010-09-18 Prasad Tammana <prasadt@chromium.org>
-
- Reviewed by David Levin.
-
- update-webkit --chromium spitting out a spurious error
- https://bugs.webkit.org/show_bug.cgi?id=45868
-
- * Scripts/update-webkit-chromium: Use commandExists() function to check for existence of gclient.
-
-2010-09-18 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Improve/unify the PageLoadClient interfaces
- https://bugs.webkit.org/show_bug.cgi?id=46043
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didStartProvisionalLoadForFrame):
- (didReceiveServerRedirectForProvisionalLoadForFrame):
- (didFailProvisionalLoadWithErrorForFrame):
- (didCommitLoadForFrame):
- (didFinishDocumentLoadForFrame):
- (didFinishLoadForFrame):
- (didFailLoadWithErrorForFrame):
- (didReceiveTitleForFrame):
- (didFirstLayoutForFrame):
- (didFirstVisuallyNonEmptyLayoutForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didCommitLoadForFrame):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveMessageFromInjectedBundle):
- (WTR::TestController::didFinishLoadForFrame):
- * WebKitTestRunner/TestController.h:
-
-2010-09-17 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Adding a shell script I use to run the
- commit-queue. Now that multiple machines run the cq,
- it makes sense to share the script between them.
-
- * EWSTools/start-commit-queue.sh: Added.
-
-2010-09-17 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- The colors on the new build.webkit.org (after upgrading the master to 0.8.1) are
- slightly harder to read, so this reverts the previous background colors for various
- states, making it easier to read.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/default.css:
- (.success):
- (.failure):
- (.warnings):
- (.exception):
- (.start,.running,td.building):
- (.offline,td.offline):
-
-2010-09-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r67692.
- http://trac.webkit.org/changeset/67692
- https://bugs.webkit.org/show_bug.cgi?id=46011
-
- broke layout test dashboard (Requested by johnny_g on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-09-17 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Oliver Hunt.
-
- Style bot complains about cairo forward declaration naming
- https://bugs.webkit.org/show_bug.cgi?id=45867
-
- Exclude Cairo forward declarations from indentifiers with underscores checks.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Add exclusion for Cairo forward-declarations.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Add some tests for this.
-
-2010-09-16 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Include detailed test modifiers (e.g. FLAKY) in results.json for failing non-layout tests
- https://bugs.webkit.org/show_bug.cgi?id=45408
-
- This change also tries to remove duplicated upload_results_json methods
- in run_webkit_tests.py and json_results_generator.py.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-09-16 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] When switching views (WebViewGraphicsBased <--> WebViewTraditional), QWebPage signals and QActions have to be re-set.
-
- Recently r67554 changed the way different views use the WebPage class: it was previously being shared between
- different views, but now for each view switch, a new WebPage class is constructed and set. Signals and QAction's
- were not being set to the new WebPage though. Patch fix that, by re constructing the toolbar, and then re-hooking
- all page specific stuff to the UI.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::MainWindow):
- (MainWindow::buildUI):
- (MainWindow::setPage):
- * QtTestBrowser/mainwindow.h:
-
-2010-09-12 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Make all accesses to m_item (GraphicsWebView) done by WebViewGraphicsBased class happen though graphicsWebView getter method.
-
- This patch is mostly a preparation for another commit, where the ownership of the m_item/GraphicsWebView
- object will move to the qgraphicsscene instead of the qgraphicsview.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::setPage):
- (WebViewGraphicsBased::setResizesToContents):
- (WebViewGraphicsBased::resizeEvent):
- (WebViewGraphicsBased::animatedFlip):
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased::setItemCacheMode):
- (WebViewGraphicsBased::itemCacheMode):
-
-2010-09-12 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Moved setYRotation method body out of the class (WebViewGraphicsBased) definition.
-
- We usually separate methods whose body are larger than a few lines from the class definition.
-
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased::yRotation):
- (WebViewGraphicsBased::setYRotation):
-
-2010-09-12 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Make initializeView method of LauncherWindow private.
-
- No one else needs to be able to call it but LauncherWindow.
- Also moving the declation of isGraphicsBased method down in the same file, in order
- to better group related methods.
-
- * QtTestBrowser/launcherwindow.h:
-
-2010-09-12 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Make the getter 'page' method of MainWindow const.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::page):
- * QtTestBrowser/mainwindow.h:
-
-2010-09-12 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Remove useless parameter from MainWindow class' constructor.
-
- The parameter defaults to an empty URL and is not being used by any caller. Apart from that it is also
- not referred in the constructor body and does not make much sense.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::MainWindow):
- * QtTestBrowser/mainwindow.h:
-
-2010-09-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] Needs DRT queueLoadHTMLString and setDeferMainResourceLoad-implementations
- https://bugs.webkit.org/show_bug.cgi?id=42151
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (WorkItemLoadHTMLString::WorkItemLoadHTMLString):
- (WorkItemLoadHTMLString::run):
- (LayoutTestController::queueLoadHTMLString):
- (LayoutTestController::reset):
- (LayoutTestController::setDeferMainResourceDataLoad):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::deferMainResourceDataLoad):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didCreateDataSource):
-
-2010-09-16 Adrienne Walker <enne@google.com>
-
- Reviewed by Kenneth Russell.
-
- Add script to synchronize WebKit and Khronos WebGL tests
- https://bugs.webkit.org/show_bug.cgi?id=42336
-
- * Scripts/update-webgl-conformance-tests: Added.
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests.py: Added.
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests_unittest.py: Added.
-
-2010-09-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add support for sending synchronous messages from the InjectedBundle to the WKContext
- <rdar://problem/8365320>
- https://bugs.webkit.org/show_bug.cgi?id=44785
-
- * MiniBrowser/mac/AppDelegate.m:
- (didReceiveSynchronousMessageFromInjectedBundle):
- (-[BrowserAppDelegate init]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didCreatePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2010-09-16 Leonid Ebril <leonid.ebril@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser: Disable creation of a new window for screenshot on Symbian platform.
- https://bugs.webkit.org/show_bug.cgi?id=45885
-
- Avoid creation of an additional window for screenshot to prevent overlapping with original window.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::screenshot):
-
-2010-09-16 Anders Carlsson <andersca@apple.com>
-
- Fix clang++ build.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController zoomIn:]):
- (-[BrowserWindowController zoomOut:]):
- (-[BrowserWindowController resetZoom:]):
- Remove trailing semicolons.
-
-2010-09-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r67628.
- http://trac.webkit.org/changeset/67628
- https://bugs.webkit.org/show_bug.cgi?id=45904
-
- broke the build (Requested by eric_carlson on #webkit).
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback):
-
-2010-09-16 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed.
-
- Adding myself as a comitter.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-15 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Eric Carlson.
-
- [GTK] enhanced context menu for media elements
- https://bugs.webkit.org/show_bug.cgi?id=45021
-
- EventSender::contextClick() now returns an array of js
- objects. Each object has a title property and a click() method.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (getMenuItemTitleCallback):
- (setMenuItemTitleCallback):
- (menuItemClickCallback):
- (getMenuItemClass):
- (contextClickCallback):
-
-2010-09-14 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Eric Carlson and Martin Robinson.
-
- [GTK] eventSender.contextClick() should return the contents of the context menu
- https://bugs.webkit.org/show_bug.cgi?id=39102
-
- Make the eventSender use the new private WebKitGtk+ API to
- retrieve the context-menu item titles and store them in an array.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback):
-
-2010-09-16 Eric Uhrhane <ericu@chromium.org>
-
- Reviewed by Jian Li.
-
- Unify FILE_SYSTEM and FILE_WRITER enables under the name FILE_SYSTEM.
- https://bugs.webkit.org/show_bug.cgi?id=45798
-
- * Scripts/build-webkit:
-
-2010-09-16 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Support globalhistory tests
- https://bugs.webkit.org/show_bug.cgi?id=45774
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::isGlobalHistoryTest):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpHistoryCallbacks):
- (LayoutTestController::removeAllVisitedLinks):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-09-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- deduplicate-tests should be runnable from any WebKit directory
- https://bugs.webkit.org/show_bug.cgi?id=44709
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-15 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] sort testing methods in DRT
- https://bugs.webkit.org/show_bug.cgi?id=45850
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::TextInputController):
-
-2010-09-15 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- CQ status shows items out of order
- https://bugs.webkit.org/show_bug.cgi?id=45846
-
- Only group consecutive status items with the same patch ID into the same
- group, so that overall item ordering is preserved.
-
- Also don't indent status items that only have a single item in their
- group.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/templates/includes/singlequeuestatus.html: Added.
- * QueueStatusServer/templates/queuestatus.html:
-
-2010-09-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add queue start/stop messages
- https://bugs.webkit.org/show_bug.cgi?id=45853
-
- I ended up needing to clean up a bunch of our unit testing
- in order to test this new code path nicely.
-
- There are also a few PEP8 changes needed to pass check-webkit-style.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2010-09-15 Simon Fraser <simon.fraser@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=45849
- WKURLCreateWithCFURL crashes with null url
-
- Fix MiniBrowser crash when the url is not parseable.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController fetch:]):
-
-2010-09-15 Patrick Gansterer <paroga@paroga.com>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make it possible to run more than one commit-queue instance
- https://bugs.webkit.org/show_bug.cgi?id=45786
-
- Mostly we need to make sure the two (or more) instances get
- different patches to work on. To do this, I re-worked
- the code responsible for getting the next work item to
- round trip through the status server. The status server only
- vends patches from the work items list, only if those patches
- have not had status reported for them in the last hour.
-
- This is another step towards making all queues go through the
- status server, thus making it possible to run more than one
- instance of various EWS bots (as requested in bug 44292).
-
- The webkitpy changes are already covered by existing unit tests.
- The QueueStatusSever sadly has no testing infrastructure yet. :(
-
- * QueueStatusServer/handlers/nextpatch.py: Added.
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/main.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-15 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT fails with UnicodeDecodeError on editing/selection/mixed-editability-10.html
- https://bugs.webkit.org/show_bug.cgi?id=45791
-
- Force filenames to be raw bytes before running difflib.unified_diff.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2010-09-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] QtTestBrowser crashes when enabling QGraphicsView mode after first loading page without it enabled
- https://bugs.webkit.org/show_bug.cgi?id=35247
-
- The main issue when changing the views is that the plugins and any other components that
- depend on view specific attributes such as the native window id are not teared down.
- Even if we had a tear-down procedure, we'd have to re-initialize the plugin after
- switching to the new view (QGraphicsWebView). This is a rather uncommon situation, so
- we decided to work around this in QtTestBrowser by making toggling between QWebView
- and QGraphicsWebView also re-create the page.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- * QtTestBrowser/mainwindow.h:
-
-2010-09-14 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Send webkit accessibility notifications to Chromium
- https://bugs.webkit.org/show_bug.cgi?id=45156
-
- Move printf inside shouldDumpAccessibilityNotifications check.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2010-09-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] fix http/tests/security/local-user-CSS-from-remote.html
- https://bugs.webkit.org/show_bug.cgi?id=45788
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setUserStyleSheetLocation): use a base64 url like in Chrome
-
-2010-09-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] Remove WebKit::areLayoutTestImagesOpaque since it's no longer needed
- https://bugs.webkit.org/show_bug.cgi?id=45768
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage): new baselines are checked in and Linux will match Windows going forward.
-
-2010-09-14 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add newly added directories to the directory list.
-
- * wx/build/settings.py:
-
-2010-09-14 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Remove WKBundleNodeRef, replacing uses with WKBundleNodeHandleRef.
- https://bugs.webkit.org/show_bug.cgi?id=45785
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::propertyValue):
- (WTR::numericWindowPropertyValue):
- (WTR::dumpPath):
- (WTR::toStr):
- (WTR::operator<<):
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-09-14 Adam Barth <abarth@webkit.org>
-
- Fix two typos in commit-queue. The first is harmless. The second
- causes the queue to reject patches when the build is broken. :(
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-14 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Chris Fleizach.
-
- Send all accessibility notifications to Chromium.
- https://bugs.webkit.org/show_bug.cgi?id=45156
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-09-14 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue is slow during the day
- https://bugs.webkit.org/show_bug.cgi?id=45780
-
- Thanks to the new logging, we've noticed that checkout-is-out-of-date
- errors in the first pass of landing don't retry the land. Instead,
- they're treated as failures and cause the commit-queue to do two more
- builds before really trying to land the patch. Worse, in the second
- build, we can get bitten by a flaky test.
-
- This patch takes a slightly different approach to the commit-queue's
- main control logic. We now use a separate subprocess for building and
- testing and for landing. This means we should very rarely see the
- checkout-is-out-of-date error, and when we do see it, we should retry
- more quickly. If my understanding is correct, this should be a big
- speed win for the commit-queue.
-
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] implement layoutTestController.setDomainRelaxationForbiddenForURLScheme
- https://bugs.webkit.org/show_bug.cgi?id=45762
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2010-09-14 Csaba Osztrogonác <ossy@webkit.org>
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-14 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Build-webkit shows a warning when WebKitBuild directory is not exist
- https://bugs.webkit.org/show_bug.cgi?id=45736
-
- Build-webkit has showed a warning when WebKitBuild didn't exist, add
- an additional condition to avoid it.
-
- * Scripts/build-webkit:
-
-2010-09-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should log when it's retrying due to checkout out of date error
- https://bugs.webkit.org/show_bug.cgi?id=45725
-
- This will allow us to better track how often we see these errors
- and how long it takes the queue to recover from them.
-
- In order to pass the tests, I had to correct an error
- from a previous change. The UnitTestPort should not have
- ever been using the base port method as that will read
- a file from disk. If the unit tests haven't passed the contents
- it should raise an IOError as though the file doesn't exist.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-13 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Upload results when cq patch landing fails
- https://bugs.webkit.org/show_bug.cgi?id=45683
-
- Include script errors when CommitQueue._land fails.
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-13 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by David Kilzer.
-
- AX: accessibilityIsIgnored is returning nil when return value expects a BOOL
- https://bugs.webkit.org/show_bug.cgi?id=45548
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isIgnoredCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isIgnored):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isIgnored):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isIgnored):
-
-2010-09-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- jscPath() is incorrect in Windows' cmd.exe shell
- https://bugs.webkit.org/show_bug.cgi?id=45651
-
- * Scripts/webkitdirs.pm: Add ".exe" suffix to $jscName on Windows.
-
-2010-09-13 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- REGRESSION (r64816-r64889): Crash in WebCore::AccessibilityRenderObject
- https://bugs.webkit.org/show_bug.cgi?id=43807
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (textMarkerForPointCallback):
- (AccessibilityUIElement::textMarkerForPoint):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::textMarkerForPoint):
-
-2010-09-13 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] build-webkit: Add --v8 option to build against V8
-
- Note that V8 is picked up from QtScript, so this currently requires building
- against the experimental qt-script-v8 branch.
-
- * Scripts/build-webkit:
-
-2010-09-13 Hans Wennborg <hans@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Add WebDeviceOrientationClientMock::create() and use it from DRT.
- https://bugs.webkit.org/show_bug.cgi?id=45650
-
- Do not use the WebDeviceOrientationClientMock constructor directly,
- but use the create() member function.
-
- This should fix the linker errors for the multi-DLL Chromium DRT build.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- (LayoutTestController::deviceOrientationClient):
-
-2010-08-27 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
-
- Reviewed by Antti Koivisto.
-
- Add support for testing the viewport meta tag algorithm,
- based on the following draft spec:
-
- http://people.opera.com/rune/TR/ED-css-viewport-20100806/
-
- Add common handling of viewport meta tag based on new Opera spec
- https://bugs.webkit.org/show_bug.cgi?id=44201
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-09-12 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Tony Chang.
-
- [DRT/Chromium] Remove dependency to base/string16.h and gfx/codec/png_codec.h
- https://bugs.webkit.org/show_bug.cgi?id=45517
-
- Use webkit_support_gfx.h for PNG encoding/decoding instead of png_codec.h
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (Image::craeteFromStdin):
- (Image::createFromFilename):
- (diffImages):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage):
-
-2010-09-10 MORITA Hajime <morrita@google.com>
-
- Reviewed by Tony Chang.
-
- [Chromium] Implement textInputController.hasSpellingMarker() for Chromium
- https://bugs.webkit.org/show_bug.cgi?id=45441
-
- Added TextInputController::hasSpellingMarker().
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::TextInputController):
- (TextInputController::hasSpellingMarker):
- * DumpRenderTree/chromium/TextInputController.h:
-
-2010-09-12 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- My last change accidentally contained a local change to the
- rebaselinig script; webkit-patch land picked it up without telling
- me and committed it :(
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-09-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Attempt to fix Windows MiniBrowser build (untested)
- https://bugs.webkit.org/show_bug.cgi?id=45609
-
- * MiniBrowser/win/BrowserView.cpp:
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
-
-2010-09-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Fix zoom related tests when testing WebKit2.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::zoomPageIn): Zoom in and zoom out are not the same.
-
-2010-09-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Implement WebKit2 callback equivalent to - [WebUIDelegate webView:setStatusText:]
- <rdar://problem/8359252>
- https://bugs.webkit.org/show_bug.cgi?id=45605
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (setStatusText):
- (contentsSizeChanged):
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
- (setStatusText):
- (contentsSizeChanged):
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage):
- (WTR::TestController::initialize):
-
-2010-09-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Add callback mechanism for the getting the source of a frame
- <rdar://problem/8364681>
- https://bugs.webkit.org/show_bug.cgi?id=45604
-
- Add ability to dump the main frame's source to the console.
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController dumpSourceToConsole:]):
- * MiniBrowser/mac/MainMenu.xib:
-
-2010-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove unneeded Empty Queue messages
- https://bugs.webkit.org/show_bug.cgi?id=45602
-
- We already have a /gc job to delete these.
- recentstatus.py is already smart enough to use the
- most recent of the workitems last update or the most recent status,
- so removing these should not change the _last_status_date() return
- value more than a few milliseconds.
-
- These messages just spam the recent status log.
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-11 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix Python exception when generating synthetic patch IDs
- https://bugs.webkit.org/show_bug.cgi?id=45592
-
- Can't concatenate strings and numbers directly.
-
- * QueueStatusServer/handlers/queuestatus.py:
-
-2010-09-11 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Group statuses in queue status by patch ID
- https://bugs.webkit.org/show_bug.cgi?id=45588
-
- Group statuses by patch ID so that the status page is easier
- to scan.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/stylesheets/dashboard.css:
- (.status-group):
- (.status-bug):
- (.status-group ul):
- (.status-group ul li):
- (.status-group ul li:hover):
- (.status-cell):
- (.status-cell:hover):
- (.status-cell.pass):
- (.status-cell.fail):
- (.status-cell.pending):
- (.status-cell.error):
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/queuestatus.html:
-
-2010-09-11 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Implement layoutTestController.dumpResourceResponseMIMETypes in Chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=45479
-
- Implement layoutTestController.dumpResourceResponseMIMETypes (modelled after
- implementation in ResourceLoadDelegate in the Mac port).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpResourceResponseMIMETypes):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setShouldDumpResourceResponseMIMETypes):
- (LayoutTestController::shouldDumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::shouldDumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveResponse):
-
-2010-09-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queues.webkit.org should expose /remote_api for data upload/download
- https://bugs.webkit.org/show_bug.cgi?id=45559
-
- * QueueStatusServer/app.yaml:
- - /remote_api is a standard app-engine service which allows use of
- the bulk uploader for data upload/download. Exposing this
- (for admin access only) allows us to use
-
-2010-09-10 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Add zoom support to WebKit2 API
- <rdar://problem/7660657>
- https://bugs.webkit.org/show_bug.cgi?id=45585
-
- - Add zoom options to MiniBrowser that mimic Safari's options using
- the new WebKit2 zoom APIs.
- - Switch uses of float for the zoom APIs to use double.
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController initWithPageNamespace:]):
- (-[BrowserWindowController validateMenuItem:]):
- (-[BrowserWindowController validateUserInterfaceItem:]):
- (-[BrowserWindowController currentZoomFactor]):
- (-[BrowserWindowController setCurrentZoomFactor:]):
- (-[BrowserWindowController canZoomIn]):
- (-[BrowserWindowController zoomIn:]):
- (-[BrowserWindowController canZoomOut]):
- (-[BrowserWindowController zoomOut:]):
- (-[BrowserWindowController canResetZoom]):
- (-[BrowserWindowController resetZoom:]):
- (-[BrowserWindowController toggleZoomMode:]):
- * MiniBrowser/mac/MainMenu.xib:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::textZoomIn):
- (WTR::EventSendingController::textZoomOut):
- (WTR::EventSendingController::zoomPageIn):
- (WTR::EventSendingController::zoomPageOut):
-
-2010-09-10 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix crash in DRT in standalone mode
-
- https://bugs.webkit.org/show_bug.cgi?id=45454
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::loadNextTestInStandAloneMode):
-
-2010-09-10 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Remove unnecessary constraint in WebCore of choosing either text zoom or full page zoom.
- Precursor to <rdar://problem/7660657>
- https://bugs.webkit.org/show_bug.cgi?id=45522
-
- Update for changes to the Bundle API to allow separate control of page and text zoom
- levels.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::textZoomIn):
- (WTR::EventSendingController::textZoomOut):
- (WTR::EventSendingController::zoomPageIn):
- (WTR::EventSendingController::zoomPageOut):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2010-09-10 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Support click event for notifications
- https://bugs.webkit.org/show_bug.cgi?id=44836
-
- Add support for simulateDesktopNotificationClick by calling
- back to DumpRenderTreeSupportQt.cpp.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::simulateDesktopNotificationClick):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-09-10 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Update queue status when patches fail their first land attempt
- https://bugs.webkit.org/show_bug.cgi?id=45583
-
- Add a few more _update_status calls to make it more obvious if a patch is
- being retried because tests failed.
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-09-10 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Andreas Kling.
-
- [Qt] MiniBrowser crashes with multiply windows when closing one of them
- https://bugs.webkit.org/show_bug.cgi?id=45536
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView): Reference the context instead of adopting it
- because it can be shared across different views.
-
-2010-09-10 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r67241.
- http://trac.webkit.org/changeset/67241
- https://bugs.webkit.org/show_bug.cgi?id=44709
-
- Accidentally committed.
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- deduplicate-tests should be runnable from any WebKit directory
- https://bugs.webkit.org/show_bug.cgi?id=44709
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-10 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r67216.
- http://trac.webkit.org/changeset/67216
- https://bugs.webkit.org/show_bug.cgi?id=44709
-
- Broke
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- deduplicate-tests should be runnable from any WebKit directory
- https://bugs.webkit.org/show_bug.cgi?id=44709
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-09 Hans Wennborg <hans@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Hook up LayoutTestController.setMockDeviceOrientation() in Chromium DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=45460
-
- This enables DumpRenderTree to run layout tests for DeviceOrientation.
-
- Also declare the LayoutTestController destructor out-of-line.
- Otherwise the implicit destructor would cause compiler errors because
- of the OwnPtr<WebKit::WebDeviceOrientationClientMock> member.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::~LayoutTestController):
- (LayoutTestController::setMockDeviceOrientation):
- (LayoutTestController::deviceOrientationClient):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::deviceOrientationClient):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-09-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r67119.
- http://trac.webkit.org/changeset/67119
- https://bugs.webkit.org/show_bug.cgi?id=45505
-
- Extra newlines in results (Requested by tony^work on #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (printResponseDescription):
- (printNodeDescription):
- (printRangeDescription):
- (WebViewHost::shouldBeginEditing):
- (WebViewHost::shouldEndEditing):
- (WebViewHost::shouldInsertNode):
- (WebViewHost::shouldChangeSelectedRange):
- (WebViewHost::shouldDeleteRange):
- (WebViewHost::shouldApplyStyle):
- (WebViewHost::didBeginEditing):
- (WebViewHost::didChangeSelection):
- (WebViewHost::didChangeContents):
- (WebViewHost::didEndEditing):
- (WebViewHost::decidePolicyForNavigation):
- (WebViewHost::didCancelClientRedirect):
- (WebViewHost::didStartProvisionalLoad):
- (WebViewHost::didReceiveServerRedirectForProvisionalLoad):
- (WebViewHost::didFailProvisionalLoad):
- (WebViewHost::didCommitProvisionalLoad):
- (WebViewHost::didFinishDocumentLoad):
- (WebViewHost::didHandleOnloadEvents):
- (WebViewHost::didFailLoad):
- (WebViewHost::didFinishLoad):
- (WebViewHost::didChangeLocationWithinPage):
- (WebViewHost::willSendRequest):
- (WebViewHost::didReceiveResponse):
- (WebViewHost::didFinishResourceLoad):
- (WebViewHost::didFailResourceLoad):
- (WebViewHost::didDisplayInsecureContent):
- (WebViewHost::didRunInsecureContent):
- (WebViewHost::printFrameDescription):
-
-2010-09-09 Michael Saboff <msaboff@apple.com>
-
- Unreviewed, adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-09 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Implement layoutTestController.dumpResourceResponseMIMETypes in Chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=45479
-
- Implement layoutTestController.dumpResourceResponseMIMETypes (modelled after
- implementation in ResourceLoadDelegate in the Mac port).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpResourceResponseMIMETypes):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setShouldDumpResourceResponseMIMETypes):
- (LayoutTestController::shouldDumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::shouldDumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveResponse):
-
-2010-09-09 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Daniel Bates.
-
- svn-apply tries to delete directories it shouldn't
- https://bugs.webkit.org/show_bug.cgi?id=45424
-
- isDirectoryEmptyForRemoval had the wrong check. If an item in the
- directory is itself a directory, then the directory is definitely
- not empty.
-
- * Scripts/svn-apply:
-
-2010-09-09 Chris Fleizach <cfleizach@apple.com>
-
- Fixing GTK and windows build failure.
-
- AX: Support AccessibilityTextMarkers in DRT
- https://bugs.webkit.org/show_bug.cgi?id=44778
-
- * DumpRenderTree/AccessibilityTextMarker.h:
- (AccessibilityTextMarker::platformTextMarker):
- (AccessibilityTextMarkerRange::platformTextMarkerRange):
- * DumpRenderTree/mac/AccessibilityTextMarkerMac.mm:
- (AccessibilityTextMarker::platformTextMarker):
- (AccessibilityTextMarkerRange::platformTextMarkerRange):
-
-2010-09-09 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by David Kilzer.
-
- AX: Support AccessibilityTextMarkers in DRT
- https://bugs.webkit.org/show_bug.cgi?id=44778
-
- Add AccessibilityTextMarker and AccessibilityTextMarkerRange which encapsulate the AXTextMarkers
- that WebCore uses when vending information about its VisiblePositions through AX.
-
- There are a few new methods in AccessibilityUIElement to retrieve and use text markers, and some basic
- methods for encapsulating and checking equality.
-
- This will allow future bug fixes in the text marker system to be adequately tested.
-
- * DumpRenderTree/AccessibilityTextMarker.cpp: Added.
- (toTextMarker):
- (isMarkerEqualCallback):
- (markerFinalize):
- (AccessibilityTextMarker::makeJSAccessibilityTextMarker):
- (AccessibilityTextMarker::getJSClass):
- (toTextMarkerRange):
- (isMarkerRangeEqualCallback):
- (markerRangeFinalize):
- (AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange):
- (AccessibilityTextMarkerRange::getJSClass):
- * DumpRenderTree/AccessibilityTextMarker.h: Added.
- (AccessibilityTextMarker::platformTextMarker):
- (AccessibilityTextMarkerRange::platformTextMarkerRange):
- (AccessibilityTextMarker::AccessibilityTextMarker):
- (AccessibilityTextMarker::~AccessibilityTextMarker):
- (AccessibilityTextMarker::isEqual):
- (AccessibilityTextMarkerRange::AccessibilityTextMarkerRange):
- (AccessibilityTextMarkerRange::~AccessibilityTextMarkerRange):
- (AccessibilityTextMarkerRange::isEqual):
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (textMarkerRangeForElementCallback):
- (textMarkerRangeLengthCallback):
- (textMarkerRangeForMarkersCallback):
- (startTextMarkerForTextMarkerRangeCallback):
- (endTextMarkerForTextMarkerRangeCallback):
- (accessibilityElementForTextMarkerCallback):
- (AccessibilityUIElement::textMarkerRangeForElement):
- (AccessibilityUIElement::textMarkerRangeLength):
- (AccessibilityUIElement::startTextMarkerForTextMarkerRange):
- (AccessibilityUIElement::endTextMarkerForTextMarkerRange):
- (AccessibilityUIElement::accessibilityElementForTextMarker):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/AccessibilityTextMarkerMac.mm: Added.
- (AccessibilityTextMarker::AccessibilityTextMarker):
- (AccessibilityTextMarker::~AccessibilityTextMarker):
- (AccessibilityTextMarker::isEqual):
- (AccessibilityTextMarkerRange::AccessibilityTextMarkerRange):
- (AccessibilityTextMarkerRange::~AccessibilityTextMarkerRange):
- (AccessibilityTextMarkerRange::isEqual):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::textMarkerRangeForElement):
- (AccessibilityUIElement::textMarkerRangeLength):
- (AccessibilityUIElement::textMarkerRangeForMarkers):
- (AccessibilityUIElement::startTextMarkerForTextMarkerRange):
- (AccessibilityUIElement::endTextMarkerForTextMarkerRange):
- (AccessibilityUIElement::accessibilityElementForTextMarker):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
-
-2010-08-25 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- don't delete duplicates needed because of intermediate results
- https://bugs.webkit.org/show_bug.cgi?id=44653
-
- Also, output the full path so we can pipe the output to rm.
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
-
-2010-09-09 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Andreas Kling.
-
- [Qt] MiniBrowser does not starts properly
- https://bugs.webkit.org/show_bug.cgi?id=45459
-
- Do not try set up the first window by calling newWindow on a
- newly created BrowserWindow since it creates a new object.
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2010-09-09 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Get ImageDiff building on Win32
- https://bugs.webkit.org/show_bug.cgi?id=45353
-
- * DumpRenderTree/gtk/ImageDiff.cpp:
- (main): Switch from using strtok to g_strsplit.
-
-2010-09-09 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Modify load method of MiniBrowser's BrowserView class
- https://bugs.webkit.org/show_bug.cgi?id=45442
-
- Modify load method to take a QString as argument, remove unnecessary QT_VERSION_CHECK.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::load):
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::load):
-
-2010-09-09 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- fix show_results in new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=45413
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-09-08 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [Chromium] Fix test results server to make sure
- it does not have corrupted data.
-
- results.json file size coulbe be >1M and we split
- the data into multiple data store entries in this
- case. This patch fixes the issue that the data may
- be corrupted if data store error happens in the middle
- of saving multiple entries.
-
- https://bugs.webkit.org/show_bug.cgi?id=45063
-
- * TestResultServer/model/datastorefile.py:
-
-2010-09-08 Peter Varga <pvarga@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix ignoring return value warning in case of gcc 4.4.4
- https://bugs.webkit.org/show_bug.cgi?id=45384
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (testPostURLFile):
- If fwrite have written zero byte then the testPostURLFile function
- returns with false as tempFile can't be opened.
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
- Put fwrite function into an if condition without body to avoid
- warning. It is safe because this function writes to the stdout.
-
-2010-09-08 Satish Sampath <satish@chromium.org>
-
- Unreviewed, adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-08 Hans Wennborg <hans@chromium.org>
-
- Unreviewed.
-
- Adding myself as a committer in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-08 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Refactor MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=45173
-
- Split BrowserWindow into two source files and headers. Remove unnecessary header includes.
-
- * MiniBrowser/qt/BrowserView.cpp: Added.
- (createNewPage):
- (BrowserView::BrowserView):
- (BrowserView::resizeEvent):
- (BrowserView::load):
- (BrowserView::view):
- * MiniBrowser/qt/BrowserView.h: Added.
- (BrowserView::~BrowserView):
- * MiniBrowser/qt/BrowserWindow.cpp:
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2010-09-08 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Rename DocLoader to CachedResourceLoader because that's what it does.
-
- * Scripts/do-webcore-rename:
-
-2010-09-07 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Enable incremental results.json generation for non-layout tests.
- https://bugs.webkit.org/show_bug.cgi?id=45315
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py: Enable generate_incremental_results=True by default. (This still keeps to generate results.json.) Also add a code to upload results json files to the app-engine server. Need a chromium change to actually start the uploading.
-
- * TestResultServer/model/jsonresults.py: Make sure we save the file with test_type for incremental cases too.
-
-
-2010-09-07 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix
-
- Missed one test in mac_unittest.py in previous change; for some
- reason the method is listed twice. I will fix both for now, but will
- figure this out in a later, not-time-sensitive patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=45357
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2010-09-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Tony Chang.
-
- test-webkitpy: Fix load error of
- webkitpy/layout_tests/port/factory_unittest.py on Win32 Python
- https://bugs.webkit.org/show_bug.cgi?id=45356 Need a short
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- Avoid to import fcntl on win32. Win32 Python doesn't have fcntl
- and we don't use server_process.py on Win32 Python. However
- unittest.py tries to load everything in a module.
-
-2010-09-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Kent Tamura.
-
- Fix regression introduced in previous change to new-run-webkit-tests
- (bug 45090) to not try to run unittests for the Mac implementation
- of the Port interface if we aren't running on a Mac.
-
- Also fix the overrides implementation mock in the chromium unittests
- to fix the case where there are overrides checked in that cause
- problems.
-
- https://bugs.webkit.org/show_bug.cgi?id=45357
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2010-09-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: still more unit tests
-
- Clean up and remove unnecessary code. Biggest notable change is
- moving the chromium-specific imagediff code from port/base to
- port/chromium.
-
- Add more unit tests for run_webkit_tests.py, port/base.py,
- port/factory.py, port/dryrun.py, and
- layout_package/dump_render_tree_thread.py
-
- This covers almost all of the generic and test code paths except for
- a few error paths involving invalid or port-specific command line
- arguments, and the code path for uploading results files to the
- buildbots.
-
- https://bugs.webkit.org/show_bug.cgi?id=45090
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/hang.html: Added.
- * Scripts/webkitpy/layout_tests/data/http/tests/passes/text-expected.txt: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text-expected.txt.
- * Scripts/webkitpy/layout_tests/data/http/tests/passes/text.html: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text.html.
- * Scripts/webkitpy/layout_tests/data/http/tests/ssl/text-expected.txt: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text-expected.txt.
- * Scripts/webkitpy/layout_tests/data/http/tests/ssl/text.html: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text.html.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/data/websocket/tests/passes/text-expected.txt: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text-expected.txt.
- * Scripts/webkitpy/layout_tests/data/websocket/tests/passes/text.html: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/passes/text.html.
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py: Added.
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-09-07 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Darin Adler.
-
- Provide a way to trigger a <select multiple> onchange event on changes
- https://bugs.webkit.org/show_bug.cgi?id=45192
-
- Adds a selector on ObjCController for testing
- -[DOMHTMLSelectElement _activateItemAtIndex:allowMultipleSelection:] and
- its different uses.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController setSelectElement:selectedIndex:allowingMultiple:]):
-
-2010-09-07 James Robinson <jamesr@chromium.org>
-
- Rubber-stamped by Dimitri Glazkov.
-
- Move myself from the committer to the reviewer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-07 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [chromium] Make a public flag for how DRT generates bitmaps on Linux
- https://bugs.webkit.org/show_bug.cgi?id=45133
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage):
-
-2010-09-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Implement --check-layout-test-sys-deps
- https://bugs.webkit.org/show_bug.cgi?id=45283
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main): Check --check-layout-test-sys-deps and call checkLayoutTestSystemDependencies().
- * DumpRenderTree/chromium/TestShell.h: Declare checkLayoutTestSystemDependencies().
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (checkLayoutTestSystemDependencies): Add an empty implementation.
- * DumpRenderTree/chromium/TestShellMac.mm:
- (checkLayoutTestSystemDependencies): Add an empty implementation.
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (checkLayoutTestSystemDependencies): Port similar function of test_shell.
-
-2010-09-07 Jessie Berlin <jberlin@apple.com>
-
- Unreviewed. Mac build fix.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didClearWindowObjectForFrame):
-
-2010-09-07 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Darin Adler.
-
- Indicate which one of the ScriptWorlds for a Frame the Window Object has been cleared for
- https://bugs.webkit.org/show_bug.cgi?id=45217
-
- Make WebKitTestRunner work with this change.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- Make sure the ScriptWorld here is the normal world, since that is no longer being done in
- WebFrameLoaderClient.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-09-07 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, build fix.
-
- webkit-patch command to find the ports covering a specific layout test
- https://bugs.webkit.org/show_bug.cgi?id=42832
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Don't assume the
- tests are present when building the expectations. This is needed
- for the unittests.
-
-2010-09-06 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Adam Barth.
-
- webkit-patch command to find the ports covering a specific layout test
- https://bugs.webkit.org/show_bug.cgi?id=42832
-
- To use it: webkit-patch skipped-ports some/layout/test.html
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-09-07 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- [NRWT] Add temp directory to all running drivers.
- https://bugs.webkit.org/show_bug.cgi?id=45261
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-09-06 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium/DRT] Empty out user stylesheet after each test run.
- https://bugs.webkit.org/show_bug.cgi?id=45282
-
- This should significantly cut down on the number of the mysterious flaky tests
- whose diffs looked like the page was blown up to a very lage size. This
- was indeed the dirty work of platform/mac/fast/loader/user-stylesheet-fast-path.html,
- which set the base body font to 100px.
-
- Since the user stylesheet was never reset, _all_ pixel tests that ran after it in
- the same thread failed.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings): Set user stylesheet to an empty URL.
-
-2010-09-06 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Do not generate pixel results for text/plain resources
- https://bugs.webkit.org/show_bug.cgi?id=45253
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump): Clear shouldGeneratePixelResults flag for text/plain.
-
-2010-09-06 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Kent Tamura.
-
- print out correct error when a DRT thread dies in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=45281
-
- Not sure why, but with the parens, python 2.6.5 on Linux
- gives an error that raise takes 5 arguments and 0 were given.
- Didn't test other platforms or python versions, but putting it
- all on one line fixes it and correctly prints the exception
- from the DRT thread.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-09-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just adding some emails from lists.webkit.org.
-
- Update committers.py to include emails from lists.webkit.org
- as found by the validate-committer-lists script.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-06 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Small code cleanup in DumpRenderTreeGtk.cpp
- https://bugs.webkit.org/show_bug.cgi?id=45213
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Made this function do nothing for non-X11 platforms, so we don't
- have to surround the invocation with #ifdefs.
- (useLongRunningServerMode): Added.
- (runTestingServerLoop): Added.
- (initializeGlobalsFromCommandLineOptions): Added.
- (runTest): Removed ifdefs.
- (main): Use new helper functions.
-
-2010-09-06 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] EventSender should support modifier keys with mouseDown and mouseUp events
- https://bugs.webkit.org/show_bug.cgi?id=45235
-
- Add support for interpreting the modifier key arguments to the mouseDown and mouseUp
- methods of the EventSender.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Allow passing in a modifier bitmask, which will be OR'd
- with the current modifiers.
- (contextClickCallback): Always send no modifiers when preparing the mouse event.
- (gdkModifersFromJSValue): Added, converts a JSValue array into a GDK modifier bitmask.
- (mouseDownCallback): Send in the requested modifiers to prepareMouseButtonEvent.
- (mouseUpCallback): Ditto.
-
-2010-09-05 Peter Kasting <pkasting@google.com>
-
- Reviewed by Adam Barth.
-
- Make Chromium/Mac generate continuous mousewheel events with the same wheelDelta values as Safari/Mac.
- https://bugs.webkit.org/show_bug.cgi?id=45155
-
- * DumpRenderTree/chromium/EventSender.cpp: Modify Chromium DRT mousewheel event generation to match new behavior on Mac.
- (EventSender::handleMouseWheel):
-
-2010-09-05 Yury Semikhatsky <yurys@chromium.org>
-
- Reviewed by Joseph Pecoraro.
-
- Web Inspector: remove WebDevToolsAgentClient::forceRepaint which is not used
- https://bugs.webkit.org/show_bug.cgi?id=45179
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2010-09-05 Andreas Kling <andreas.kling@nokia.com>
-
- Rubber-stamped by Daniel Bates.
-
- Adding myself as reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-04 Daniel Bates <dbates@rim.com>
-
- Reviewed by Martin Robinson.
-
- Teach svn-apply/unapply about svn:mergeinfo
- https://bugs.webkit.org/show_bug.cgi?id=45236
-
- Recognize the svn:mergeinfo property and ignore it for now.
-
- Currently, svn-apply/unapply recognize only '+' and '-'
- property changes within a diff. We should add support
- to recognize "Merged" and "Reverse-merged" changes as well.
- Because svn:mergeinfo is metadata that is used only by SVN
- and tends to be error-prone and/or nuisance (*), we will ignore
- it for now.
- (*) See "Parting Thoughts" of <http://www.collab.net/community/subversion/articles/merge-info.html>.
-
- * Scripts/VCSUtils.pm:
- - Modified parseSvnProperty() to recognize "Merged" and
- "Reverse-merged" as the start of a property value.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl:
- - Added the following unit tests:
- "simple: add svn:mergeinfo"
- "simple: delete svn:mergeinfo"
- "simple: modified svn:mergeinfo"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
- - Added the following unit tests:
- "simple: add svn:mergeinfo"
- "simple: delete svn:mergeinfo"
- "simple: modified svn:mergeinfo"
- "simple: modified svn:mergeinfo using SVN 1.4 syntax"
- "'Merged' change followed by 'Merged' change"
- "'Reverse-merged' change followed by 'Reverse-merged' change"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
- - Added the following unit tests:
- "'Merged' change"
- "'Reverse-merged' change"
- "'Reverse-merged' change followed by 'Merge' change"
- "'Merged' change followed by 'Merge' change"
- "'Reverse-merged' change followed by 'Reverse-merged' change"
- "'Reverse-merged' change followed by 'Reverse-merged' change followed by 'Merged' change"
-
-2010-09-04 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Move test browser to WebKitTools directory
- https://bugs.webkit.org/show_bug.cgi?id=45212
-
- Follow other ports like QT and GTK which moved the test browser to
- WebKitTools directory.
-
- * CMakeListsEfl.txt: Added.
- * EWebLauncher/main.c: Added.
- (print_history):
- (zoom_level_set):
- (on_ecore_evas_resize):
- (title_set):
- (viewport_set):
- (on_title_changed):
- (on_progress):
- (on_load_finished):
- (on_toolbars_visible_set):
- (on_toolbars_visible_get):
- (on_statusbar_visible_set):
- (on_statusbar_visible_get):
- (on_scrollbars_visible_set):
- (on_scrollbars_visible_get):
- (on_menubar_visible_set):
- (on_menubar_visible_get):
- (on_tooltip_text_set):
- (on_inputmethod_changed):
- (on_viewport_changed):
- (on_mouse_down):
- (on_focus_out):
- (on_focus_in):
- (on_resized):
- (on_key_down):
- (on_browser_del):
- (on_closeWindow):
- (quit):
- (browserCreate):
- (browserDestroy):
- (closeWindow):
- (main_signal_exit):
- (findThemePath):
- (main):
-
-2010-09-03 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Adam Roben.
-
- Set project dependencies so that they build serially. This fixes
- issues when running run-webkit-tests if DRT is not built yet.
-
- * DumpRenderTree/DumpRenderTree.sln:
-
-2010-09-03 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix reading configuraiton in NWRT to work on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=45180
-
- * Scripts/webkitpy/layout_tests/port/base.py: Added 'perl' argument, because Windows doesn't know what to do
- with the file otherwise.
-
-2010-09-03 Chris Rogers <crogers@google.com>
-
- Unreviewed
-
- Add myself to the committers list
- https://bugs.webkit.org/show_bug.cgi?id=45189
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-09-03 Andrey Kosyakov <caseq@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- http/tests/inspector/console-xhr-logging.html and http/tests/inspector/resource-har-conversion.html are failing on chromium win bot
- Changed MIME type for .js to application/x-javascript for consistency with apache used on other platforms.
- https://bugs.webkit.org/show_bug.cgi?id=45137
-
- * Scripts/webkitpy/layout_tests/port/lighttpd.conf:
-
-2010-09-03 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- Add feature detection support to NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=41842
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added.
-
-2010-09-03 Hironori Bono <hbono@chromium.org>
-
- Reviewed by Kent Tamura.
-
- Adds textInputController.hasSpellingMarker() to avoid using pixel tests for spellchecking tests
- and implements it for Mac.
- https://bugs.webkit.org/show_bug.cgi?id=41832
-
- * DumpRenderTree/mac/TextInputController.m: Added [TextInputController hasSpellingMarker:length:]
- and bind it so we can call it from JavaScript.
- (+[TextInputController isSelectorExcludedFromWebScript:]):
- (+[TextInputController webScriptNameForSelector:]):
- (-[TextInputController hasSpellingMarker:length:]):
-
-2010-09-02 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add a unit test for commit-queue retries
- https://bugs.webkit.org/show_bug.cgi?id=45162
-
- I think commit-queue retries are not correctly avoiding
- build and test on retries. So I started testing the code.
- Unfortunately this test did not find the bug. But now
- that we have the test we might as well keep it.
- I also fixed a broken import in validate-committer-lists.
-
- * Scripts/validate-committer-lists:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-09-02 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove dependency to base/task.h and base/timer.h
- https://bugs.webkit.org/show_bug.cgi?id=45091
-
- Task.{cpp,h} introduces a simpler version of Chromium
- base/task.h. It doesn't have TupleN and Method.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- Add Task.cpp and Task.h
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::DRTDevToolsAgent):
- (DRTDevToolsAgent::reset):
- (DRTDevToolsAgent::asyncCall):
- (DRTDevToolsAgent::frontendLoaded):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- (DRTDevToolsAgent::taskList): Added to use MethodTask<T>.
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::DRTDevToolsClient):
- (DRTDevToolsClient::~DRTDevToolsClient):
- (DRTDevToolsClient::reset):
- (DRTDevToolsClient::asyncCall):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- (DRTDevToolsClient::taskList): Added to use MethodTask<T>.
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::reset):
- (EventSender::scheduleAsynchronousClick):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender::taskList): Added to use MethodTask<T>.
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::WorkQueue::processWorkSoon):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::taskList): Added to use MethodTask<T>.
- (LayoutTestController::WorkQueue::taskList): Added to use MethodTask<T>.
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (deferredDisplayDispatch):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/Task.cpp: Added.
- * DumpRenderTree/chromium/Task.h: Added.
-
-2010-09-02 Steve Block <steveblock@google.com>
-
- Reviewed by Adam Barth.
-
- Hook up LayoutTestController.setMockDeviceOrientation() on Mac.
- https://bugs.webkit.org/show_bug.cgi?id=43181
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockDeviceOrientation):
-
-2010-08-31 Adam Roben <aroben@apple.com>
-
- Fix flashiness when resizing the browser window on Windows
-
- Reviewed by Sam Weinig.
-
- * MiniBrowser/win/BrowserWindow.cpp:
- (BrowserWindow::wndProc): Override WM_ERASEBKGND so Windows won't
- periodically fill the window with white.
-
-2010-09-02 Peter Kasting <pkasting@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Implement [continuous]MouseScrollBy() on Chromium, and partly on GTK.
- https://bugs.webkit.org/show_bug.cgi?id=45073
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::mouseScrollBy):
- (EventSender::continuousMouseScrollBy):
- (EventSender::sendCurrentTouchEvent):
- (EventSender::handleMouseWheel):
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseScrollByCallback):
- (continuousMouseScrollByCallback):
-
-2010-09-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Land a patched version of r66542 - change TestRunner to have an
- separate cleanup method and fix the ordering of cleanup between
- TestRunner and the printing module, and then wrap everything in a
- try/finally block to ensure reliable cleanup without needing to
- rely on stuff happening in the destructor of the TestRunner.
-
- Also refactor run_webkit_tests.run() to be much smaller and cleaner
- by creating a bunch of helper methods and moving more stuff into
- the TestRunner class.
-
- This fixes the crash at the end of the linux test run of
- new-run-webkit-tests (and undoes the rollout in 66547).
-
- https://bugs.webkit.org/show_bug.cgi?id=44902
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/exception.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/keyboard.html: Added.
- * Scripts/webkitpy/layout_tests/data/passes/error-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/passes/error.html: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-09-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adam Roben.
-
- Fix TestNetscapePlugIn to compile without access to QuickDraw private headers.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
-
-2010-09-01 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- Have kill-old-processes kill debug and release variants of WebKit2WebWebProcess
- and WebKitTestRunner.
-
- * BuildSlaveSupport/win/kill-old-processes:
-
-2010-09-01 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Remove obsolete include path from DumpRenderTree.pro
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2010-09-01 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] QWebPage::allowGeolocationRequest should be async API
- https://bugs.webkit.org/show_bug.cgi?id=41364
-
- Implements new async API for geolocation permission similar to
- Notification. WebPage maintains list of geolocation permission request
- QtWebkit and set's when LayoutTestController gets the access from test JS
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- (WebCore::WebPage::requestPermission):
- (WebCore::WebPage::cancelPermission):
- (WebCore::WebPage::permissionSet):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::geolocationPermissionSet):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setGeolocationPermissionCommon):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-09-01 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Antti Koivisto.
-
- [Qt] Auto-generate WebKit2 forwarding headers
- https://bugs.webkit.org/show_bug.cgi?id=44692
-
- * MiniBrowser/qt/BrowserWindow.h: use source style includes
- * MiniBrowser/qt/MiniBrowser.pro: add missing include paths
- * Scripts/enumerate-included-framework-headers: Removed.
-
-2010-08-31 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- Reviewed by Adam Barth.
-
- Allow Ctrl+C inside Bugzilla::fetch_bug_dictionary
- https://bugs.webkit.org/show_bug.cgi?id=44789
-
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-08-31 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Adam Barth.
-
- ews: Add support for EFL-EWS
- https://bugs.webkit.org/show_bug.cgi?id=44982
-
- * QueueStatusServer/model/queues.py: Add "efl-ews" to queues list.
- * Scripts/webkitpy/common/config/ports.py: Define a EflPort class
- and add it to the ports dict.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py: Define a
- EflEWS class.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py: Add
- a test case for the EFL EWS.
-
-2010-08-31 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=42195
- <rdar://problem/8186761> WebKitTestRunner needs to support layoutTestController.setXSSAuditorEnabled
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: (WTR::LayoutTestController::setXSSAuditorEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- Added setXSSAuditorEnabled, calling through to an WKBundle private method. Calling this method
- makes WebProcess use a different value for this preference than UIProcess thinks it uses.
-
- * WebKitTestRunner/TestController.cpp: (WTR::TestController::resetStateToConsistentValues):
- Reset xssAuditorEnabled. Even though the value doesn't change, this calls through to WebProcess,
- which forgets its override.
-
-2010-08-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Gavin Barraclough.
-
- WebKitTestRunner needs layoutTestController.addUserStyleSheet
- https://bugs.webkit.org/show_bug.cgi?id=42680
-
- WebKitTestRunner needs layoutTestController.addUserScript
- https://bugs.webkit.org/show_bug.cgi?id=42681
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::addUserScript):
- (WTR::LayoutTestController::addUserStyleSheet):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2010-08-31 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r66542.
- http://trac.webkit.org/changeset/66542
- https://bugs.webkit.org/show_bug.cgi?id=44902
-
- r66542 - the weird logging dependencies in Python stuck again ...
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/exception.html: Removed.
- * Scripts/webkitpy/layout_tests/data/failures/expected/keyboard.html: Removed.
- * Scripts/webkitpy/layout_tests/data/passes/error-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/passes/error.html: Removed.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-08-31 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Tony Chang.
-
- Implementing LayoutTestController::markerTextForListItem() in Chromium's DRT.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::markerTextForListItem):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2010-08-31 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: add more unit tests
-
- Add more unit tests for new-run-webkit-tests; we now cover all but
- the most obscure code paths in the generic code. We still need to
- add coverage for the http server and web socket paths, and add better
- coverage of the platform-specific logic. Note that the rebaselining
- tool is still not well tested.
-
- Also clean up some of the configuration logic for the printing
- module and the way it interacts with the Python logging module; that
- is a crufty interface, to be certain.
-
- https://bugs.webkit.org/show_bug.cgi?id=44902
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/exception.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/keyboard.html: Added.
- * Scripts/webkitpy/layout_tests/data/passes/error-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/passes/error.html: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-08-31 Darin Adler <darin@apple.com>
-
- Reviewed by Anders Carlsson.
-
- * Scripts/check-for-global-initializers: Add a file that ends up having global initializers
- in a debug build when built with certain compilers.
-
-2010-08-31 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Isolate all GTK+ typedefs into one file
- https://bugs.webkit.org/show_bug.cgi?id=44900
-
- * DumpRenderTree/gtk/EventSender.h: Remove GTK+ typedefs.
-
-2010-08-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Show more status on queue status pages
- https://bugs.webkit.org/show_bug.cgi?id=44938
-
- I upped the number of status lines from 6 to 15 --
- this has been bugging me for a while...
-
- I also disabled showing the chromium-win EWS queue
- since it's been down for almost 5 months now.
-
- * QueueStatusServer/handlers/dashboard.py:
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/model/queues.py:
-
-2010-08-31 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Read command line arguments and open them as URLs in new windows
- https://bugs.webkit.org/show_bug.cgi?id=44944
-
- Extend MiniBrowser to accept command line arguments and open them as URLs in new browser windows.
-
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2010-08-31 Adrian Perez <aperez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- Support scripts to run Buildbot slaves under daemontools (gtk related)
- https://bugs.webkit.org/show_bug.cgi?id=40053
-
- * BuildSlaveSupport/gtk: Added.
- * BuildSlaveSupport/gtk/README: Added.
- * BuildSlaveSupport/gtk/buildbot: Added.
- * BuildSlaveSupport/gtk/buildbot/log: Added.
- * BuildSlaveSupport/gtk/buildbot/log/run: Added.
- * BuildSlaveSupport/gtk/buildbot/run: Added.
- * BuildSlaveSupport/gtk/crashmon: Added.
- * BuildSlaveSupport/gtk/crashmon/crashmon: Added.
- * BuildSlaveSupport/gtk/crashmon/log: Added.
- * BuildSlaveSupport/gtk/crashmon/log/run: Added.
- * BuildSlaveSupport/gtk/crashmon/run: Added.
- * BuildSlaveSupport/gtk/daemontools-buildbot.conf: Added.
- * BuildSlaveSupport/gtk/pulseaudio: Added.
- * BuildSlaveSupport/gtk/pulseaudio/run: Added.
- * BuildSlaveSupport/gtk/xvfb: Added.
- * BuildSlaveSupport/gtk/xvfb/log: Added.
- * BuildSlaveSupport/gtk/xvfb/log/run: Added.
- * BuildSlaveSupport/gtk/xvfb/run: Added.
-
-2010-08-27 John Gregg <johnnyg@google.com>
-
- Reviewed by David Levin.
-
- Notifications should support a click event.
- Adds necessary hooks to chromium's DRT so that clicks on desktop notifications
- can be simulated during a layout test. Requires storing a list of active
- notifications so that they can be referred to later for clicking.
- https://bugs.webkit.org/show_bug.cgi?id=44800
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::simulateDesktopNotificationClick):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- (NotificationPresenter::cancel):
- (NotificationPresenter::objectDestroyed):
- * DumpRenderTree/chromium/NotificationPresenter.h:
-
-2010-08-30 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Darin Adler.
-
- Add missing parts of didFinishDocumentLoadForFrame
- https://bugs.webkit.org/show_bug.cgi?id=44913
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (didFinishDocumentLoadForFrame): Added
- (-[BrowserWindowController awakeFromNib]): Updated struct
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Rearranged function ptr
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Updated struct
-
-2010-08-30 Vangelis Kokkevis <vangelis@chromium.org>
-
- Unreviewed: Add myself to the list of Committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-30 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix fast/notifications/notifications-display-close-events.html failure
- https://bugs.webkit.org/show_bug.cgi?id=44585
-
- Apply http://crrev.com/48893. We should dispatch display events
- asynchronously.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (deferredDisplayDispatch):
- (NotificationPresenter::show):
-
-2010-08-30 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- allow ports with windowed plugins to support windowless plugin tests
-
- https://bugs.webkit.org/show_bug.cgi?id=40730
-
- Ports that implement plugins windowed by default need to have a way of
- supporting plugin tests that assume the plugin is windowless. Add this
- feature to the tests and support it in the webkit test plugin. Also
- add mouse and keyboard event logging to the webkit-test plugin on Unix.
-
- Unskip the following tests on Qt:
-
- plugins/mouse-events.html
- plugins/keyboard-events.html
- plugins/mouse-events-fixedpos.html
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp:
- (pluginSetProperty):
- * DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp:
- (NPP_New):
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_handle_event):
-
-2010-08-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after addition of fileapi directory in WebCore.
-
- * wx/build/settings.py:
-
-2010-08-30 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Fixed compilation error, now that we have included the
- GtkVersioning.h we have to remove some version dependent code from
- EventSender.
-
- * DumpRenderTree/gtk/EventSender.cpp:
-
-2010-08-30 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] gdk_display_get_core_pointer and gdk_device_get_core_pointer
- are deprecated
- https://bugs.webkit.org/show_bug.cgi?id=44787
-
- We have replaced GtkVersioning.cpp with GtkVersioning.c and
- created a function (getDefaultGDKPointerDevice) to get the pointer
- of the window with the new APIs. We added that function to DRT and
- copyandpaste unit test.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent):
- (mouseMoveToCallback):
- (keyDownCallback):
- * GNUmakefile.am:
-
-2010-08-30 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add new window menu to MiniBrowser
-
- Implement newWindow function and add a menu item for opening new window in MiniBrowser.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::newWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2010-08-29 James Robinson <jamesr@chromium.org>
-
- Reviewed by David Levin.
-
- Make failing the download step fail the build
- https://bugs.webkit.org/show_bug.cgi?id=44298
-
- If the download step fails on a test bot, this ensures that
- the build goes red instead of only the download step going red
- and the overall build staying green.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-08-29 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove dependency to base/keyboard_codes.h
- https://bugs.webkit.org/show_bug.cgi?id=44847
-
- * DumpRenderTree/chromium/EventSender.cpp:
- Use webkit_support::VKEY_* instead of base::VKEY_*.
-
-2010-08-29 Darin Adler <darin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=40589
-
- * Scripts/prepare-ChangeLog: Only prepend namespaces to non-empty
- function names.
-
-2010-08-26 Holger Hans Peter Freyther <holger@moiji-mobile.com>
-
- Reviewed by Darin Adler.
-
- [iExploder] Add new CSS Properties and HTML Attributes
- https://bugs.webkit.org/show_bug.cgi?id=44746
-
- Updated the files with the update-iexploder-cssproperties script
- and manually readded the -webkit-binding CSS Property to the list.
-
- * iExploder/htdocs/cssproperties.in:
- * iExploder/htdocs/htmlattrs.in:
- * iExploder/htdocs/htmltags.in:
-
-2010-08-26 Holger Hans Peter Freyther <holger@moiji-mobile.com>
-
- Reviewed by Darin Adler.
-
- Fix Coverage build after the addition of ANGLE
- https://bugs.webkit.org/show_bug.cgi?id=44744
-
- ANGLE is using libtool to build a static library and the version of
- libtool on Leopard refuses to handle the -fprofile-arcs and -ftest-coverage
- parameters. The easiest way to handle this is to not build ANGLE with
- coverage information.
-
- This is achieved by applying the XCode options for each project
- separately and exclude ANGLE.
-
- * Scripts/build-webkit: Remove -framework AppKit due link errors.
- * Scripts/webkitdirs.pm: Do not apply the XCode options for ANGLE.
-
-2010-08-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after directory addition.
-
- * wx/build/settings.py:
-
-2010-08-28 Chris Guillory <chris.guillory@google.com>
-
- Reviewed by Chris Fleizach.
-
- Add AX notification for childrenChanged
- https://bugs.webkit.org/show_bug.cgi?id=44472
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::reset):
- (AccessibilityController::getRootElement):
- (AccessibilityController::dumpAccessibilityNotifications):
- * DumpRenderTree/chromium/AccessibilityController.h:
- (AccessibilityController::shouldDumpAccessibilityNotifications):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didChangeAccessibilityObjectChildren):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2010-08-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Update commit-queue failure message
- https://bugs.webkit.org/show_bug.cgi?id=44798
-
- The commit-queue auto-restarts itself and has for a very long time.
- No need for people to email me to request a restart anymore.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-07-27 Jer Noble <jer.noble@apple.com>
-
- Reviewed by Eric Carlson.
-
- Add JavaScript API to allow a page to go fullscreen.
- rdar://problem/6867795
-
- Added basic full screen support to DumpRenderTree: when a webView requests
- that DumpRenderTree go "full screen", just call the provided callback listener object's
- will/did Enter/Exit full screen methods. Also, register a new user default which
- enables full screen support.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:supportsFullscreenForElement:]):
- (-[UIDelegate webView:enterFullscreenForElement:listener:]):
- (-[UIDelegate webView:exitFullscreenForElement:listener:]):
-
-2010-08-27 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Unreviewed. Add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-27 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- [DRT/Chromium] Fix inspector test failures
- https://bugs.webkit.org/show_bug.cgi?id=44748
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::createClientMessageLoop):
- Returns a valid WebKitClientMessageLoop instance
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2010-08-26 Jon Honeycutt <jhoneycutt@apple.com>
-
- Add Windows WebKit2 Tester to buildbot
- <rdar://problem/7887703>
-
- Reviewed by Dan Bernstein.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-08-26 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Needs DRT queueLoadHTMLString and setDeferMainResourceLoad-implementations
- https://bugs.webkit.org/show_bug.cgi?id=42152
-
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (LoadHTMLStringItem::invoke): Implementation using
- webkit_web_frame_load_string().
-
-2010-08-25 Jon Honeycutt <jhoneycutt@apple.com>
-
- <rdar://problem/8334338> run-webkit-tests sometimes hangs when using
- WebKitTestRunner (44331)
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- The hang occurs when WebKitTestRunner begins launching the WebKit2
- web process then exits before it finishes launching. Work around this by
- looking for the --print-supported-features argument and exiting without
- creating the web process.
-
-2010-08-26 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: add rebaselining tests for test_expectations
-
- This patch adds more unit tests for the rebaselining code in the
- test_expectations module. It doesn't add any tests for
- rebaseline_chromium_webkit_tests itself; that will come some other
- time.
-
- https://bugs.webkit.org/show_bug.cgi?id=44648
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
-
-2010-08-26 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add HTTP caching support
- https://bugs.webkit.org/show_bug.cgi?id=44261
-
- Ignore new soup API that we decided to merge into the soup backend
- while it is being cooked. It follows the libsoup style, and will
- be removed from WebKit as soon as it is merged into libsoup.
-
- * Scripts/webkitpy/style/checker.py:
-
-2010-08-26 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DumpRenderTree runs only one test from command mode
- https://bugs.webkit.org/show_bug.cgi?id=44012
-
- Enables support to run multiple test files and single
- folder containing html files in stand alone mode
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::processArgsLine):
- (WebCore::DumpRenderTree::loadNextTestInStandAloneMode):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::setStandAloneMode):
- (WebCore::DumpRenderTree::isStandAloneMode):
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2010-08-25 Martin Robinson <mrobinson@igalia.com>
-
- Updating webkitpy test expectations.
-
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2010-08-25 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix the always squash git config
- https://bugs.webkit.org/show_bug.cgi?id=44651
-
- Fix help text and apparently underscores are not allowed
- in git config keys.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2010-08-25 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- * Scripts/commit-log-editor: Fix perl warning for people who have no
- value for SVN_LOG_EDITOR or CVS_LOG_EDITOR.
-
-2010-08-25 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- stop blocking commits when the bots are red
- https://bugs.webkit.org/show_bug.cgi?id=44644
-
- This check currently is just annoying. It doesn't actually
- help keep the tree green. We can always add it back later
- if we decide the tree is generally more green.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
-
-2010-08-25 Eric Seidel <eric@webkit.org>
-
- Reviewed by Simon Fraser.
-
- REGRESSION: media/video-loop.html is timing out on the commit-queue Leopard Bot
- https://bugs.webkit.org/show_bug.cgi?id=38912
-
- I know of nothing else to do but skip all media tests for the cq.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2010-08-25 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: add more unit tests for test_expectations
- This adds unit tests to cover (almost?) all of the non-rebaselining
- functionality.
-
- https://bugs.webkit.org/show_bug.cgi?id=44579
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
-
-2010-08-25 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: add more unit tests
-
- This change adds more unit tests for the image_diff, test_failures,
- and test_files modules, bringing them to 100% coverage (and adds a
- couple tests to run_webkit_tests while we're at it).
-
- This test also turns on the "dryrun" port for testing when run on
- the mac, increasing coverage in a few other places.
-
- https://bugs.webkit.org/show_bug.cgi?id=44578
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/checksum-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/checksum-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/checksum-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/checksum.html: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/failures/expected/image_checksum.html.
- * Scripts/webkitpy/layout_tests/data/failures/expected/missing_check-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/missing_check-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/missing_check.html: Copied from WebKitTools/Scripts/webkitpy/layout_tests/data/failures/expected/missing_image.html.
- * Scripts/webkitpy/layout_tests/data/failures/expected/timeout.html: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/data/resources/README.txt: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-08-25 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: add more unit tests for layout_package/printing.py
-
- This change adds more unit tests to get the test coverage to 100%
- for the printing module. This code is actually pretty crufty and
- has some layering violations that need to be cleaned up but I'll
- save that for another CL after we get all the unit tests written and
- we fix the multithreading issues. At least now we'll be able to tell
- if we break things.
-
- https://bugs.webkit.org/show_bug.cgi?id=44576
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2010-08-25 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests should respect set-webkit-configuration
- https://bugs.webkit.org/show_bug.cgi?id=44633
-
- Moves the getting of the configuration into the base Port so that
- chromium ports use it as well. In the downstream chromium port,
- this should still just return Release.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-08-25 Tony Chang <tony@chromium.org>
-
- Not reviewed, changing svn props for a script.
-
- * Scripts/deduplicate-tests: Added properties svn:executable and svn:eol-style.
-
-2010-08-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove WebKit2 from core builders
- https://bugs.webkit.org/show_bug.cgi?id=44625
-
- This builder was added to the core builders by accident. It doesn't
- appear to be green enough to be a core builder yet.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-08-19 Adam Roben <aroben@apple.com>
-
- Test that NP_Initialize and NP_GetEntryPoints are called in the
- correct order
-
- The order differs between Mac and Windows (see r38858).
-
- Fixes <http://webkit.org/b/44270> <rdar://problem/8330393> Crash in
- NP_Initialize when loading QuickTime when running
- plugins/embed-attributes-setting.html in WebKit2 on Windows
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp: Added a CRASH macro and
- a boolean to record whether NP_GetEntryPoints has been called.
- (NP_Initialize): Crash on Windows if NP_GetEntryPoints hasn't been
- called yet. This matches Flash and QuickTime's behavior.
- (NP_GetEntryPoints): Crash on Mac if NP_Initialize hasn't been called
- yet. This matches Silverlight's behavior.
-
-2010-08-25 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- Cairo and EFL port shouldn't depend on glib.
- https://bugs.webkit.org/show_bug.cgi?id=44354
-
- Replace occurrences of GRefPtr and adoptGRef with PlatformRefPtr and
- adoptPlatformRef.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isSelected):
-
-2010-08-25 Ojan Vafai <ojan@chromium.org>
-
- Fix order of Timothy's email address. The script, and
- other tools all assume that the first email is the bugzilla address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-24 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- [DRT/Chromium] Fix 26 inspector test crashes
- https://bugs.webkit.org/show_bug.cgi?id=44580
-
- - DRTDevToolsAgent has a reference to the main WebView. So we
- should not clear it in closeDevTools() and should clear it in
- ~TestShell().
- - DRTDevToolsClient has a reference to a DevTools WebView and no
- way to update it. So we should delete DRTDevToolsClient instances
- in closeDevTools().
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
- (TestShell::closeDevTools):
-
-2010-08-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- unicode(Exception(\u"0x1234")) is busted in python 2.5, disable tests which hit this
- https://bugs.webkit.org/show_bug.cgi?id=44584
-
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-08-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue and EWS bots should report all failures
- https://bugs.webkit.org/show_bug.cgi?id=41820
-
- Right now commit-queue/EWS only report failures when the
- patch under testing fails. We should report all failures
- to the status server so that we can diagnose when the bots
- are wedged w/o needing to log into the machines.
-
- I also reduced the amount of data we upload since we've seen
- timeouts during status upload.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-08-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove HTML5 parser testing infrastructure now that we don't need it
- https://bugs.webkit.org/show_bug.cgi?id=44581
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (initializeGlobalsFromCommandLineOptions):
- * Scripts/old-run-webkit-tests:
- * Scripts/test-html5-parser: Removed.
-
-2010-08-24 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix 28 inspector test crashes
- https://bugs.webkit.org/show_bug.cgi?id=44574
-
- Reset DevToolsClient and DevToolsAgent before closing a DevTools
- WebView in order to avoid accessing to a deleted WebView instance.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::closeDevTools):
-
-2010-08-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: clean up code for test_types, test_failures
-
- Add a bunch of unit tests for webkitpy.layout_tests.test_types and
- webkitpy.layout_tests.layout_package.test_failures, and remove
- some dead code and otherwise clean up things.
-
- https://bugs.webkit.org/show_bug.cgi?id=44559
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-08-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: revise unit testing strategy for test failures
-
- This change revamps the way we store test data for new-run-webkit-tests.
- Previously we had a few copies of test files from the main test tree.
- Now we have a bunch of completely fake test data and use the test
- data to generate different kinds of test failures, getting
- much better coverage.
-
- https://bugs.webkit.org/show_bug.cgi?id=44556
-
- * Scripts/webkitpy/layout_tests/data/failures/expected/crash.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image_checksum-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image_checksum-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image_checksum-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/image_checksum.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/missing_image.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/missing_text.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/text-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/expected/text.html: Added.
- * Scripts/webkitpy/layout_tests/data/failures/unexpected/text-image-checksum-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/failures/unexpected/text-image-checksum-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/failures/unexpected/text-image-checksum-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/failures/unexpected/text-image-checksum.html: Added.
- * Scripts/webkitpy/layout_tests/data/image/canvas-bg.html: Removed.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.checksum: Removed.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.png: Removed.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/image/canvas-zoom.html: Removed.
- * Scripts/webkitpy/layout_tests/data/misc/crash-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/misc/crash.html: Removed.
- * Scripts/webkitpy/layout_tests/data/misc/missing-expectation.html: Removed.
- * Scripts/webkitpy/layout_tests/data/misc/passing-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/misc/passing.html: Removed.
- * Scripts/webkitpy/layout_tests/data/passes/image-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/passes/image-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/passes/image-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/passes/image.html: Added.
- * Scripts/webkitpy/layout_tests/data/passes/platform_image-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/passes/platform_image-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/passes/platform_image-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/passes/platform_image.html: Added.
- * Scripts/webkitpy/layout_tests/data/passes/text-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/passes/text.html: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.checksum: Removed.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.png: Removed.
- * Scripts/webkitpy/layout_tests/data/platform/test/image/canvas-bg-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/platform/test/passes/platform_image-expected.checksum: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/passes/platform_image-expected.png: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/passes/platform_image-expected.txt: Added.
- * Scripts/webkitpy/layout_tests/data/platform/test/test_expectations.txt:
- * Scripts/webkitpy/layout_tests/data/text/article-element-expected.txt: Removed.
- * Scripts/webkitpy/layout_tests/data/text/article-element.html: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2010-08-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- speed up new-run-webkit-tests unit tests
-
- Add a --no-record-results flag that turns off generating the JSON
- results file on every test run. Generating the file requires us to
- fetch the old results down from the bots, which can be slow. This
- flag is off by default.
-
- Reduce the sleep time in wait_for_threads_to_finish from 0.1s to 0.01s.
-
- These changes together shorten the test cycle from ~4.5s to ~1.5s
- - a 3x speedup.
-
- https://bugs.webkit.org/show_bug.cgi?id=44553
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-08-24 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [chromium] fix the platform result fallback order on mac/win
- https://bugs.webkit.org/show_bug.cgi?id=44483
-
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
-
-2010-08-24 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- Set a device to the event struct when building with GTK+ 3.x, it's
- mandatory.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback):
-
-2010-08-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
- https://bugs.webkit.org/show_bug.cgi?id=44534
-
- Fix two double-frees introduced in my previous commit.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback): Copy the event before using it again.
- (keyDownCallback): Ditto.
-
-2010-08-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] GTK3: EventSender and API tests should use gdk_event_new when synthesizing events
- https://bugs.webkit.org/show_bug.cgi?id=44534
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Use gdk_event_new and reference the reference the GdkWindow
- when setting it on the event. It is dereferenced by gdk_event_free(...).
- (contextClickCallback): Ditto.
- (mouseDownCallback): Ditto.
- (mouseUpCallback): Ditto.
- (mouseMoveToCallback): Ditto.
- (mouseWheelToCallback): Ditto.
- (sendOrQueueEvent): Take a GdkEvent* instead of a GdkEvent.
- (dispatchEvent): Ditto. Also free the event when we are done with it.
- (keyDownCallback): Use gdk_event_new and reference the GdkWindow.
-
-2010-08-24 Andras Becsi <abecsi@webkit.org>
-
- [Qt] WebKit2 build fix.
-
- * Scripts/enumerate-included-framework-headers:
- Remove stray global option form sed.
-
-2010-08-24 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- [DRT/Chromium] Support for IndexedDB tests
- https://bugs.webkit.org/show_bug.cgi?id=44490
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell): Enable IndexedDB.
-
-2010-08-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] The 64-bit Release bot is showing crashes on tests that use mouse buttons
- https://bugs.webkit.org/show_bug.cgi?id=44465
-
- Initialize the axes field of mouse button and motion events to null.
- This is the value that should be used for events originating from the
- mouse device.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Initalize button event axes field to null.
- (mouseMoveToCallback): Initialize motion event axes field to null.
-
-2010-08-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r65703.
- http://trac.webkit.org/changeset/65703
- https://bugs.webkit.org/show_bug.cgi?id=44460
-
- "Causing lots of crashes on Snow Leopard when running the
- layout tests" (Requested by eseidel2 on #webkit).
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_Initialize):
- (NP_GetEntryPoints):
-
-2010-08-23 Jon Honeycutt <jhoneycutt@apple.com>
-
- Layout tests do not run when using WebKitTestRunner in a Debug build.
- https://bugs.webkit.org/show_bug.cgi?id=44409
-
- Reviewed by Dan Bernstein.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeInjectedBundlePath):
- Use InjectedBundle_debug.dll when building Debug.
-
-2010-08-23 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] run-launcher fails if WebKitGTK+ compiled with GTK+-3.0 support
- https://bugs.webkit.org/show_bug.cgi?id=42026
-
- If a GTK+ 3.x build is present return that as the library to use,
- otherwise fallback to the GTK+ 2.x build.
-
- * Scripts/webkitdirs.pm:
-
-2010-08-23 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Find needed forwarding headers for WebKit2 automatically
- https://bugs.webkit.org/show_bug.cgi?id=44336
-
- * MiniBrowser/qt/BrowserWindow.cpp: Use normal (not framework style) includes here.
- The new script does not satisfy the needs of this file however using normal includes
- is generally better here.
- * MiniBrowser/qt/MiniBrowser.pro: Added include paths.
- * Scripts/enumerate-included-framework-headers: Enumerates headers included from the
- given frameworks by files in the current directory (and subdirectories).
- In the future this needs to be rewritten in perl for being able to use on Windows.
-
-2010-08-22 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] Qt test browser: enable a QGLWidget viewport with a command line argument
- https://bugs.webkit.org/show_bug.cgi?id=43010
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::applyPrefs):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2010-08-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Remove specialized retain/release functions in favor of a single one for WKTypeRefs
- https://bugs.webkit.org/show_bug.cgi?id=44386
-
- * MiniBrowser/mac/AppDelegate.m:
- (didRecieveMessageFromInjectedBundle):
- (didNavigateWithNavigationData):
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate applicationWillTerminate:]):
- * MiniBrowser/mac/BrowserStatisticsWindowController.m:
- (-[BrowserStatisticsWindowController initWithThreadedWKContextRef:processWKContextRef:]):
- (-[BrowserStatisticsWindowController dealloc]):
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController initWithPageNamespace:]):
- (-[BrowserWindowController fetch:]):
- (-[BrowserWindowController windowWillClose:]):
- (-[BrowserWindowController applicationTerminating]):
- (closePage):
- (runJavaScriptAlert):
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
- (-[BrowserWindowController updateProvisionalURLForFrame:]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didClearWindowObjectForFrame):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::goToURL):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::~PlatformWebView):
-
-2010-08-20 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WebKit does not build with Python 2.3
- https://bugs.webkit.org/show_bug.cgi?id=44373
-
- Replaced the function sorted() by a call to sort()
- on the entry list.
- The function sorted() has been added to Python 2.4.
- The function method sort() of List works with older
- versions of Python.
-
- * Scripts/create-html-entity-table:
-
-2010-08-20 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: Inspector tests were disabled for GTK.
- https://bugs.webkit.org/show_bug.cgi?id=43977
-
- * Scripts/old-run-webkit-tests: Set the WEBKIT_INSPECTOR_PATH to the appropriate
- path before running tests.
-
-2010-08-20 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- svn-apply doesn't detect empty line with Windows line endings
- after property value
- https://bugs.webkit.org/show_bug.cgi?id=43981
-
- Part 2 of 2
-
- Add unit tests that were not landed in the first commit.
-
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Added the following test cases:
- "SVN: binary file (isBinary true) using Windows line endings"
- "SVN: property diff, followed by file change diff using Windows line endings"
- "SVN: two consecutive property diffs using Windows line endings"
- "SVN: binary file with executable bit change usng Windows line endings"
- "SVN: binary file followed by property change on different file using Windows line endings"
- "SVN: binary file followed by file change on different file using Windows line endings"
- "SVN: file change diff with property change, followed by property change diff using Windows line endings"
- "SVN: file change diff with property change, followed by file change diff using Windows line endings"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
- - Added the following test cases:
- "add svn:executable, followed by empty line and start of next diff using Windows line endings"
- "add svn:executable, followed by empty line and start of next property diff using Windows line endings"
- "multi-line '+' change, followed by empty line and start of next diff using Windows line endings"
- "multi-line '+' change, followed by empty line and start of next property diff using Windows line endings"
- "add svn:executable, followed by empty line and start of binary patch using Windows line endings"
- "multi-line '+' change, followed by empty line and start of binary patch using Windows line endings"
- "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch using Windows line endings"
- "single-line '+' with trailing new line using Windows line endings"
- "single-line '+' with trailing new line, followed by empty line and start of binary patch using Windows line endings"
- "single-line '-' change with trailing new line, and single-line '+' change using Windows line endings"
- "multi-line '-' change with trailing new line, and multi-line '+' change using Windows line endings"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
- - Added the following test cases:
- "single-line '-' change followed by empty line with Windows line endings"
- "multi-line '+' change and start of binary patch with Windows line endings"
-
-2010-08-20 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel.
-
- svn-apply doesn't detect empty line with Windows line endings
- after property value
- https://bugs.webkit.org/show_bug.cgi?id=43981
-
- Fixes an issue where an empty line following the property value
- in an SVN property change diff would not be detected if it had
- Windows line endings (i.e. ended in CRLF). Hence it was consumed
- as if it was part of a multi-line property value.
-
- * Scripts/VCSUtils.pm:
- - Modified parseSvnPropertyValue() to detect empty line
- with Windows line endings.
- - Added toWindowsLineEndings().
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Added the following test cases:
- "SVN: binary file (isBinary true) using Windows line endings"
- "SVN: property diff, followed by file change diff using Windows line endings"
- "SVN: two consecutive property diffs using Windows line endings"
- "SVN: binary file with executable bit change usng Windows line endings"
- "SVN: binary file followed by property change on different file using Windows line endings"
- "SVN: binary file followed by file change on different file using Windows line endings"
- "SVN: file change diff with property change, followed by property change diff using Windows line endings"
- "SVN: file change diff with property change, followed by file change diff using Windows line endings"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
- - Added the following test cases:
- "add svn:executable, followed by empty line and start of next diff using Windows line endings"
- "add svn:executable, followed by empty line and start of next property diff using Windows line endings"
- "multi-line '+' change, followed by empty line and start of next diff using Windows line endings"
- "multi-line '+' change, followed by empty line and start of next property diff using Windows line endings"
- "add svn:executable, followed by empty line and start of binary patch using Windows line endings"
- "multi-line '+' change, followed by empty line and start of binary patch using Windows line endings"
- "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch using Windows line endings"
- "single-line '+' with trailing new line using Windows line endings"
- "single-line '+' with trailing new line, followed by empty line and start of binary patch using Windows line endings"
- "single-line '-' change with trailing new line, and single-line '+' change using Windows line endings"
- "multi-line '-' change with trailing new line, and multi-line '+' change using Windows line endings"
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
- - Added the following test cases:
- "single-line '-' change followed by empty line with Windows line endings"
- "multi-line '+' change and start of binary patch with Windows line endings"
-
-2010-08-19 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Fix Mac build after Windows WebKit2 changes for Netscape Plug-ins
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (decidePolicyForNavigationAction): Updated method signature.
- (decidePolicyForNewWindowAction): Updated method signature.
-
-2010-08-19 Adam Roben <aroben@apple.com>
-
- Test that NP_Initialize and NP_GetEntryPoints are called in the
- correct order
-
- The order differs between Mac and Windows (see r38858).
-
- Fixes <http://webkit.org/b/44270> <rdar://problem/8330393> Crash in
- NP_Initialize when loading QuickTime when running
- plugins/embed-attributes-setting.html in WebKit2 on Windows
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp: Added a CRASH macro and
- a boolean to record whether NP_GetEntryPoints has been called.
- (NP_Initialize): Crash on Windows if NP_GetEntryPoints hasn't been
- called yet. This matches Flash and QuickTime's behavior. Crash on Mac
- if NP_GetEntryPoints has been called already. This matches
- Silverlight's behavior.
-
-2010-08-19 Adam Roben <aroben@apple.com>
-
- Make build-webkittestrunner build TestNetscapePlugIn on Windows
-
- Fixes <http://webkit.org/b/44268> <rdar://problem/8330388>
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/WebKitTestRunner.sln: Added TestNetscapePlugIn.
- Threaded it in between ImageDiff and InjectedBundleGenerated.
-
-2010-08-19 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- install rietveld's upload script from a versioned url
- https://bugs.webkit.org/show_bug.cgi?id=44291
-
- autoinstall expects the file at a given URL to never change.
- In order to be able to update the file, we need to be able to
- change the path.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2010-08-19 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- add --webkit_patch_id to reitveld uploads
- https://bugs.webkit.org/show_bug.cgi?id=44289
-
- This is the first step in having rietveld store which
- patches have been uploaded and getting rid of the
- in-rietveld flag.
-
- * Scripts/webkitpy/common/net/rietveld.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py:
-
-2010-08-19 Kenneth Russell <kbr@google.com>
-
- Reviewed by David Levin.
-
- Adjust my status from committer to reviewer
- https://bugs.webkit.org/show_bug.cgi?id=44277
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-19 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Chromium DevTools: remove injected script fetcher from test harness.
- https://bugs.webkit.org/show_bug.cgi?id=44266
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2010-08-19 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Chromium DevTools: There is no need in resource-based InjectedScript.js source.
- Now that we populate front-end after its onload handler, we don't need
- to install injected script early. Exposing injected script source on the WebCore
- level here.
- https://bugs.webkit.org/show_bug.cgi?id=44029
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::runtimePropertyChanged):
- (DRTDevToolsAgent::delayedFrontendLoaded):
- (DRTDevToolsAgent::frontendLoaded):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2010-08-19 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Gtk] Enable view mode media feature layout test
- https://bugs.webkit.org/show_bug.cgi?id=43278
-
- Add view mode media feature testing infrastructure, and add
- placeholder methods for the other platforms'
- LayoutTestControllers.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setViewModeMediaFeatureCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setViewModeMediaFeature):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setViewModeMediaFeature):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setViewModeMediaFeature):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setViewModeMediaFeature):
-
-2010-08-18 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make it so the WebKit2 test slave runs the WebKit2 tests
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-08-18 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Make run-webkit-tests --webkit-test-runner build DumpRenderTree
- in addition to WebKitTestRunner to get the DumpRenderTreeSupport
- module and the TestNetscapePlugin.
-
- * Scripts/old-run-webkit-tests:
-
-2010-08-18 Adam Roben <aroben@apple.com>
-
- Fix hang when saving crash logs on Windows
-
- * Scripts/old-run-webkit-tests:
- (setUpWindowsCrashLogSaving):
- (END):
- Pass -s to regtool so it will write the Auto value as a string instead
- of as a number. This was causing a "do you want to debug?" dialog to
- appear.
-
-2010-08-17 Victor Wang <victorw@chromium.org>
-
- Unreviewed. Fixed chromium incremental test json upload.
- Quote builder name and test results server in url.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-08-17 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] [Symbian] Consistently use Q_OS_SYMBIAN to guard all Symbian platform dependencies
- https://bugs.webkit.org/show_bug.cgi?id=44124
-
- Q_WS_S60 is not defined for Symbian^4 devices as Q_WS_S60 used to guard
- Avkon UI framework dependencies. Use Q_OS_SYMBIAN everywhere to mark
- Symbian dependencies.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::init):
- (LauncherWindow::toggleFullScreenMode):
- (LauncherWindow::showFPS):
- (LauncherWindow::updateFPS):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
-
-2010-08-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- new-run-webkit-tests: remove --show-sources option
-
- --show-sources is pretty much obsolete with --trace everything, so
- I'm removing it.
-
- Also rename a couple of methods in the TestTextDiff class to make their
- intended visibility (private) more obvious.
-
- https://bugs.webkit.org/show_bug.cgi?id=44143
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2010-08-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- remove --fuzzy-image-diff in new-run-webkit-tests (it doesn't work)
-
- This code bit-rotted at some point more than a year ago, and nobody seems
- to miss it. old-run-webkit-tests has a --tolerance flag that new-run-webkit-tests
- should support instead, making this flag unnecessary anyway.
-
- https://bugs.webkit.org/show_bug.cgi?id=44141
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/test_types/fuzzy_image_diff.py: Removed.
-
-2010-08-17 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Update json results generator to have incremental json including
- results for tests that pass in current run but failed before.
-
- https://bugs.webkit.org/show_bug.cgi?id=44119
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-08-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix test-webkitpy, add easy way to find a checkout root
-
- test-webkitpy currently doesn't work right if run from someplace other
- than the checkout root, and it spews a bunch of debug logging because
- the deduplicate_tests tests contaminates the test environment.
-
- This patch cleans up the deduplicate_tests unit tests, and creates
- two new methods in scm.py: find_checkout_root() and default_scm(),
- both of which use a single algorithm for guessing what checkout root
- to use if you aren't explicitly told one from a path.
-
- https://bugs.webkit.org/show_bug.cgi?id=44001
-
- * Scripts/deduplicate-tests:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/main.py:
-
-2010-08-17 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add support to the test results server for downloading json that
- contains test list only.
-
- This is for json results generator to generate incremental json
- results so that it includes results not only for tests failed in
- current run, but also tests failed before.
-
- Also set the results type to "N" (no data) instead of "P" (pass)
- if test results cannot be found in incremental json file.
-
- https://bugs.webkit.org/show_bug.cgi?id=44117
-
- * TestResultServer/handlers/testfilehandler.py:
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2010-08-17 Adam Roben <aroben@apple.com>
-
- Use the right path style
-
- * Scripts/old-run-webkit-tests:
-
-2010-08-17 Adam Roben <aroben@apple.com>
-
- Fix typo
-
- * Scripts/old-run-webkit-tests:
-
-2010-08-17 Adam Roben <aroben@apple.com>
-
- Don't hang when running run-webkit-tests as a non-Administrator on
- Vista/7
-
- * Scripts/old-run-webkit-tests:
- (setUpWindowsCrashLogSaving): Use regtool to set NTSD as the
- post-mortem debugger, rather than using NTSD itself. The latter waits
- for user input when it fails to set the registry values; the former
- does not.
-
-2010-08-17 Adam Roben <aroben@apple.com>
-
- Teach run-webkit-tests, DumpRenderTree, and WebKitTestRunner how to
- save crash logs on Windows
-
- The crash logs are saved to /tmp/layout-test-results and have names
- like CrashLog_02bc_2010-08-17_14-36-20-108.txt.
-
- Unfortunately, crashes in the WebKit2 web process are recorded as
- time-outs by run-webkit-tests. Fixing this is covered by
- <http://webkit.org/b/44121>.
-
- Fixes <http://webkit.org/b/37859> <rdar://problem/7883560>
- DumpRenderTree should save a stack trace and/or dump file when it
- crashes
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (exceptionFilter):
- (main):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::exceptionFilter):
- (WTR::TestController::platformInitialize):
- These changes set up an exception filter that prints #CRASHED to
- stderr, then lets the exception propagate normally. This allows
- run-webkit-tests to detect when we've crashed even when a post-mortem
- debugger attaches to the process.
-
- * Scripts/old-run-webkit-tests:
- (top level): Declared some variables used by the crash-log-saving
- code.
- (openDumpTool): Copy _NT_SYMBOL_PATH into the clean environment so
- that the post-mortem debugger has access to it.
- (toCygwinPath): Added. This is the opposite of toWindowsPath.
- (readFromDumpToolWithTimer): If the dump tool prints #CRASHED to
- stderr, consider it a crash.
- (setUpWindowsCrashLogSaving): Added. Saves the current post-mortem
- debugger, then sets ntsd as the post-mortem debugger. ntsd is
- configured to save a crash log and then quit automatically.
- (END): Added. Restores the previous post-mortem debugger when the
- script exits.
-
-2010-08-17 Victor Wang <victorw@chromium.org>
-
- Reviewed by ojan@chromium.org.
-
- Update test results server:
- 1. Normalize test results and times after merging (prune tests where
- all runs pass or do not have data, truncate all test items to max
- number of builds)
- 2. times should be int not string.
- 3. when inserting a new test item, should keep old data regardless
- whether or not they have same item type with new one.
-
- https://bugs.webkit.org/show_bug.cgi?id=43861
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2010-08-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add WebKit2 Mac tester to buildbot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2010-08-16 Paul Sawaya <psawaya@apple.com>
-
- Reviewed by Chris Marrin.
-
- Added shader validation via ANGLE
- https://bugs.webkit.org/show_bug.cgi?id=42405
-
- Added ANGLE to webkit build
-
- * Scripts/build-webkit:
-
-2010-08-16 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, do not build WebCore as a convenience library as this leads to
- errors in the Win build w/export symbols and causes problems with DOM bindings
- debugging in gdb.
-
- * DumpRenderTree/wscript:
- * Scripts/build-webkit:
- * wx/browser/wscript:
- * wx/build/settings.py:
- * wx/build/waf_extensions.py:
-
-2010-08-16 Dan Bernstein <mitz@apple.com>
-
- Build fix.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::createOtherPage): Initialize the contentsSizeChanged member.
- (WTR::TestController::initialize): Ditto.
-
-2010-08-16 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Handle content size change in WebKit2
- Re-landing after fix.
-
- https://bugs.webkit.org/show_bug.cgi?id=43198
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Initialize WKPageUICallback::contetsSizeChanged to 0.
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create): Initialize WKPageUICallback::contetsSizeChanged to 0.
-
-2010-08-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r65419.
- http://trac.webkit.org/changeset/65419
- https://bugs.webkit.org/show_bug.cgi?id=44053
-
- Broke the Windows build (Requested by bbandix on #webkit).
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2010-08-16 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Handle content size change in WebKit2
-
- https://bugs.webkit.org/show_bug.cgi?id=43198
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Initialize WKPageUICallback::contetsSizeChanged to 0.
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create): Initialize WKPageUICallback::contetsSizeChanged to 0.
-
-2010-08-16 Ariya Hidayat <ariya@sencha.com>
-
- Add my new email address to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-16 Zoltan Horvath <zoltan@webkit.org>
-
- Add my old e-mail addresses to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-15 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebEditorClient::didBeginEditing is never called in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=42939
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/PlatformWebView.h:
- Declare focus().
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Focus the PlatformWebView.
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::focus):
- Stubbed.
-
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::focus):
- Focus the view.
-
-2010-08-15 Jon Honeycutt <jhoneycutt@apple.com>
-
- run-webkit-tests should not strip editing callbacks when using
- WebKitTestRunner on Windows
- https://bugs.webkit.org/show_bug.cgi?id=44000
-
- Reviewed by Mark Rowe.
-
- * Scripts/old-run-webkit-tests:
- Leave $stripEditingCallbacks undefined until we look for command-line
- arguments. If using WebKit2, set it to 0 if not explicity set on the
- command line. Later, set it to isCygwin() to match old behavior if it is
- not yet defined.
-
-2010-08-15 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, remove define always set to the correct value by wtf/Platform.h.
-
- * wx/build/settings.py:
-
-2010-08-14 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [GTK] autogen.sh not executed if build-webkit options change
- https://bugs.webkit.org/show_bug.cgi?id=42266
-
- Rerun autogen.sh in situations where the arguments to build-webkit have
- changed since the previous build. This will fix some issues on the bots
- where the build does not notice changes to default build-webkit arguments.
-
- * Scripts/webkitdirs.pm: Add special logic for detecting changes to build-webkit arguments.
-
-2010-08-14 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Another fix to support python 2.3.
-
- Add support for MathML entities
- https://bugs.webkit.org/show_bug.cgi?id=43949
-
- * Scripts/webkitpy/thirdparty/simplejson/decoder.py:
- - It looks like our simplejson is version 1.7.3 which
- should be python 2.3 compatible. But someone modified
- our copy slightly from the original source.
- I've removed the relative import in hopes this fixes
- the problem.
-
-2010-08-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Build fix only.
-
- Add support for MathML entities
- https://bugs.webkit.org/show_bug.cgi?id=43949
-
- * Scripts/create-html-entity-table:
- - Hack sys.path to avoid executing 2.5 dependent python
- on systems (like chromium-win and Tiger) which do not have 2.5 python.
-
-2010-08-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename some concepts in HTML entity search to be more self-documenting
- https://bugs.webkit.org/show_bug.cgi?id=44004
-
- Reflect name change in generator script.
-
- * Scripts/create-html-entity-table:
-
-2010-08-12 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add support for MathML entities
- https://bugs.webkit.org/show_bug.cgi?id=43949
-
- A script for generating the C++ state data structure describing all the
- entities from a JSON description.
-
- * Scripts/create-html-entity-table: Added.
-
-2010-08-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Rewrite new-run-webkit-test's wait_for_threads_to_finish loop to
- check for exceptions on all threads, not just the first thread.
-
- This change also changes the logging behavior for wedged threads
- to only dump the stacks of threads that are actually wedged.
-
- Refactor the thread classes in the dump_render_tree_thread module
- to make the contract between TestRunner and TestShellThread clearer.
-
- Added a bunch of unit tests.
- https://bugs.webkit.org/show_bug.cgi?id=38561
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2010-08-13 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Add test_expectations.txt syntax checker to check-webkit-style.
- https://bugs.webkit.org/show_bug.cgi?id=43899
-
- Just utilizing layout_tests/layout_package/test_expectations.py for checking
- the syntax of test_expectations.txt.
- This change also moves tab checking class from style/checkers/text.py to
- style/checkers/common.py for sharing code.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checkers/common.py:
- * Scripts/webkitpy/style/checkers/common_unittest.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py: Added.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Added.
- * Scripts/webkitpy/style/checkers/text.py:
- * Scripts/webkitpy/style_references.py:
-
-2010-08-12 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner does not correctly resize WebView for W3C SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=43945
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::sizeWebViewForCurrentTest):
- Allow for a Windows-style path.
-
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::resizeTo):
- Call SetWindowPos to resize the view window.
-
-2010-08-12 David Levin <levin@chromium.org>
-
- Build break fix.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Removed usage
- of a variable that doesn't exist in the class.
-
-2010-08-12 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner needs to run tests without using native controls
- https://bugs.webkit.org/show_bug.cgi?id=43772
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- Call platformInitializeContext().
-
- * WebKitTestRunner/TestController.h:
- Declare platformInitializeContext().
-
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformInitializeContext):
- Stubbed.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformInitializeContext):
- Call WKContextSetShouldPaintNativeControls() to disable native control
- drawing.
-
-2010-08-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- WebKitTestRunner should be more aggressive about ensuring consistent state between tests
- https://bugs.webkit.org/show_bug.cgi?id=43653
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::beginTesting):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::isTestRunning):
- (WTR::InjectedBundle::):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::stopLoading):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
- (WTR::InjectedBundlePage::willSetStatusbarText):
- (WTR::InjectedBundlePage::willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- (WTR::InjectedBundlePage::didBeginEditing):
- (WTR::InjectedBundlePage::didEndEditing):
- (WTR::InjectedBundlePage::didChange):
- (WTR::InjectedBundlePage::didChangeSelection):
- Don't do any work if we are not currently running a test.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/StringFunctions.h:
- (WTR::toCF):
- Add conversion function for WKURLRef -> CFURLRef
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::runTest):
- (WTR::TestController::didFinishLoadForFrame):
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/TestInvocation.h:
- Move resetting code to TestController.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::runUntil):
- * WebKitTestRunner/mac/TestInvocationMac.mm: Removed.
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::runUntil):
- * WebKitTestRunner/win/TestInvocationWin.cpp: Removed.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- Move runUntil to TestController.
-
-2010-08-12 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-12 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- Merge pretty printers for gdb.
- https://bugs.webkit.org/show_bug.cgi?id=43850
-
- We need to update webcore.py because basic string classes have moved to WTF from WebCore.
- It is good timing to merge webcore.py and wtf.py and name it 'webkit.py'.
- webcore.py is left for backward compatibility.
-
- * gdb/webcore.py:
- * gdb/webkit.py: Added.
- * gdb/wtf.py: Removed.
-
-2010-08-11 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] add google-chrome layout test result directories
- https://bugs.webkit.org/show_bug.cgi?id=43889
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
-
-2010-08-11 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Disable accelerated compositing
- https://bugs.webkit.org/show_bug.cgi?id=43894
-
- Disable accelerated compositing because DRT is not ready for
- it. This change fixes hundreds of test crashes on Windows and
- Linux.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
-
-2010-08-11 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk>
-
- Unreviewed. Adding my Collabora personality to the list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-11 Martin Robinson <mrobinson@igalia.com>
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-11 Daniel Bates <dbates@rim.com>
-
- Reviewed by Darin Adler.
-
- Perl warnings when running commit-log-editor
- https://bugs.webkit.org/show_bug.cgi?id=43856
-
- Fixes Perl warnings introduced by the patch for Bug #40548.
-
- Perl doesn't have symbolic names for True/False. Instead, we
- should use boolean values. Moreover, the variable installedEditorApplication
- is not be used and should be renamed builtEditorApplication so that it
- uses the existing machinery to set the commit log editor application.
-
- * Scripts/commit-log-editor:
-
-2010-08-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Trying waiting for httpd lock in the EWS
- https://bugs.webkit.org/show_bug.cgi?id=43833
-
- If this works, we can probably run the tests on the mac-ews, which
- would be very exciting. :)
-
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2010-08-11 Marcus Bulach <bulach@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Check in a script to list redundant test outputs.
- https://bugs.webkit.org/show_bug.cgi?id=37630
-
- If e.g. platform/mac-leopard is missing an expected test output, we
- fall back on platform/mac. This means it's possible to grow redundant
- test outputs, where we have the same expected data in both a platform
- directory and another platform it falls back on.
- (original patch by Evan Marting <evan@chromium.org> https://bugs.webkit.org/attachment.cgi?id=53398)
-
- * Scripts/deduplicate-tests: Added.
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py: Added.
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py: Added.
-
-2010-08-11 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser: after switching between QWebView and QGraphicsWebView, rotation actions get broken
- https://bugs.webkit.org/show_bug.cgi?id=43853
-
- LauncherWindow::createChrome is connecting menu itens to WebViewGraphicsBased's slots directly.
- It behaviors badly when user launches the QtTestBrowser in QWebView mode, since then switching to
- QGraphicsWebView mode, createChrome is not called again, and menu items end up not getting connected
- to slots at all.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::animatedFlip):
- (LauncherWindow::animatedYFlip):
- * QtTestBrowser/launcherwindow.h:
-
-2010-08-11 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] QtTestBrowser: switching between QWebView and QGraphicsWebView modes is broken
- https://bugs.webkit.org/show_bug.cgi?id=43851
-
- All window options data (including the bool holding if the view is either QWebView or
- QGraphicsWebView based) is stored in m_windowOptions, a class member of LauncherWindow.
- When toggle the view from QWebView to QGraphicsWebView based (and vice-versa), we were
- not updating LauncherWindow::WindowOptions::m_useGraphicsView bit, and then things were
- getting broken.
-
- Patch addresses this issue.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleWebView):
- (LauncherWindow::toggleAcceleratedCompositing):
-
-2010-08-10 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser: lazy instantiate "YRotation" state machine and related objects
- https://bugs.webkit.org/show_bug.cgi?id=43831
-
- Only instantiate QStateMachine and friends associated to the YRotation action on demand.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::WebViewGraphicsBased):
- (WebViewGraphicsBased::animatedYFlip):
-
-2010-08-11 Darin Adler <darin@apple.com>
-
- Reviewed by John Sullivan.
-
- Improved editor options for prepare-ChangeLog and commit-log-editor
- https://bugs.webkit.org/show_bug.cgi?id=40548
-
- * Scripts/commit-log-editor: Split editor strings on spaces so EDITOR
- values like "xed --launch --wait" work properly.
-
- * Scripts/prepare-ChangeLog: Added a new CHANGE_LOG_EDITOR so we can
- use a command line tool with the $openChangeLogs feature.
-
-2010-08-11 Yury Semikhatsky <yurys@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: remove InjectDispatch.js
- https://bugs.webkit.org/show_bug.cgi?id=43835
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2010-08-10 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch should refuse to run under Win32 Python
- https://bugs.webkit.org/show_bug.cgi?id=40962
-
- Given that there are lots of places in webkit-patch's code that
- assume unix-style filenames (forward slashes), webkit-patch fails
- with weird file-not-found errors when run under a native windows
- Python. It would be nice if we just trapped this and errored out
- at the beginning, rather than producing unpredictable errors.
-
- * Scripts/webkit-patch:
-
-2010-08-10 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, build fix.
-
- Chromium build fix for r65107.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
-
-2010-08-10 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] http/tests/media/video-cookie.html fails
- https://bugs.webkit.org/show_bug.cgi?id=42240
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAlwaysAcceptCookies): create the
- SoupCookieJar if it does not exist. Otherwise the accept policy
- won't be set.
-
-2010-08-10 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add suspendAnimations/resumeAnimation API to DRT
- https://bugs.webkit.org/show_bug.cgi?id=43733
-
- Adds suspendAnimations() and resumeAnimations() to LayoutTestController.
- Calls functions with the same names on AnimationController for the
- mainFrame.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/LayoutTestController.cpp:
- (suspendAnimationsCallback):
- (resumeAnimationsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
-
-2010-08-10 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [Chromium/DRT] Enable saving layout test results.
- https://bugs.webkit.org/show_bug.cgi?id=43796
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added more
- parameters to the new-run-webkit-tests, including the name
- of the test results server.
-
-2010-08-10 Jian Li <jianli@chromium.org>
-
- More chromium build fix.
-
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::grantPermission):
- (NotificationPresenter::show):
- (NotificationPresenter::checkPermission):
-
-2010-08-10 Jian Li <jianli@chromium.org>
-
- Chromium build fix.
-
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
-
-2010-08-10 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Update test results server merge logic so the aggregated
- results and times are updated for tests that are
- in aggragated json but not in incremental json.
-
- Also update unittest to test this case.
-
- https://bugs.webkit.org/show_bug.cgi?id=43769
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2010-08-09 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser: proper set scene rect
-
- When resizesToContents is ON scene's rect is set to the boundary of
- the mainFrame. However, navigating to other web page should keep resizing
- scene's rect according to the new document loaded. Patch addresses this issue.
-
- Now resizesToContents and scrolling properly work on QtTestBrowser.
-
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::setPage):
- (WebViewGraphicsBased::contentsSizeChanged):
- (WebViewGraphicsBased::setResizesToContents):
- (WebViewGraphicsBased::resizeEvent):
- * QtTestBrowser/webview.h:
-
-2010-08-09 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser: Clean up LauncherWindow code.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow): Moves applyPrefs methods call from the constructor to init().
- (LauncherWindow::init): Fixed comments.
- (LauncherWindow::applyPrefs): Move the method around.
- (LauncherWindow::createChrome): Move more code of this method around, for grouping, and fixing up comments.
-
-2010-08-09 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser: make reset-zooming to animate when tiled backing store is on.
-
- It gets control+0 the same visual effect as control++ or control-.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::toggleZoomTextOnly):
-
-2010-08-09 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ariya Hidayat.
-
- [Qt] QtTestBrowser:: make m_zoomLevels a static member.
-
- Not all instances of LauncherWindow need its own m_zoomLevel.
-
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/launcherwindow.h:
-
-2010-08-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- Add zoom support for injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=43759
-
- Use zoom factor SPI to implement zoom related eventSender functions.
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::textZoomIn):
- (WTR::EventSendingController::textZoomOut):
- (WTR::EventSendingController::zoomPageIn):
- (WTR::EventSendingController::zoomPageOut):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset): Reset zoom mode and level for each test.
-
-2010-08-09 Gavin Barraclough <barraclough@apple.com>
-
- Speculative chromium build fix III.
-
- * DumpRenderTree/chromium/MockSpellCheck.h:
- * DumpRenderTree/chromium/NotificationPresenter.h:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::addClearHeader):
- (WebViewHost::clearHeaders):
-
-2010-08-09 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- increase the number of test results that we save
- https://bugs.webkit.org/show_bug.cgi?id=43763
-
- Now that we do incremental uploads, we can increase the number of
- results that we save for http://test-results.appspot.com/dashboards/flakiness_dashboard.html.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-08-09 Evan Martin <evan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] DRT error print statement incorrectly tries to print a FILE*
- https://bugs.webkit.org/show_bug.cgi?id=43747
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (writeFile): pass the correct pointer.
-
-2010-08-09 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Upload incremental test results json to server by default.
-
- https://bugs.webkit.org/show_bug.cgi?id=43743
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-08-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS bots wait 2 minutes between patches
- https://bugs.webkit.org/show_bug.cgi?id=43731
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- - Don't sleep after failures. This was a hold-over from
- an earlier design.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- - EWS bots were not properly reporting true/false from process_work_item.
- They were always returning None, thus false, thus always logging
- as a failure and sleeping 2 minutes after each patch.
-
-2010-08-09 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Stub out EventSender for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=43703
-
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- Add ability to pass javascript arguments to the wrapped object.
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl: Added.
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: Added.
- (WTR::EventSendingController::create):
- (WTR::EventSendingController::EventSendingController):
- (WTR::EventSendingController::~EventSendingController):
- (WTR::EventSendingController::wrapperClass):
- (WTR::setExceptionForString):
- (WTR::EventSendingController::mouseDown):
- (WTR::EventSendingController::mouseUp):
- (WTR::EventSendingController::mouseMoveTo):
- (WTR::EventSendingController::keyDown):
- (WTR::EventSendingController::contextClick):
- (WTR::EventSendingController::leapForward):
- (WTR::EventSendingController::textZoomIn):
- (WTR::EventSendingController::textZoomOut):
- (WTR::EventSendingController::zoomPageIn):
- (WTR::EventSendingController::zoomPageOut):
- (WTR::EventSendingController::makeWindowObject):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::reset):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::eventSendingController):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- Add stubbed out EventSenderController.
-
- * WebKitTestRunner/InjectedBundle/GCController.h:
- Remove incorrect comment.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- Add new files.
-
-2010-08-08 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, trivial fix.
-
- Fix "WindowsError: [Error 32] The process cannot access the file
- because it is being used by another process" introduced by r64959.
-
- * BuildSlaveSupport/test-result-archive:
-
-2010-08-08 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Tony Chang.
-
- Chromium buildbot: Avoid "zip" command dependency
- https://bugs.webkit.org/show_bug.cgi?id=43470
-
- * BuildSlaveSupport/test-result-archive:
- For Chromium port, creates a zip archive with zipfile package of Python
- instead of external "zip" command. We'd like to avoid additional
- command installation.
-
-2010-08-08 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner should add the QuickTime dir to the PATH environment
- variable
- https://bugs.webkit.org/show_bug.cgi?id=43686
-
- Reviewed by Dan Bernstein.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::addQTDirToPATH):
- Copied from DRT.
- (WTR::TestController::platformInitialize):
- Call addQTDirToPath().
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- Link to shlwapi.lib for SHGetValue.
-
-2010-08-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- WebKitTestRunner needs layoutTestController.dumpTitleChanges
- <rdar://problem/8213861>
- https://bugs.webkit.org/show_bug.cgi?id=42683
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpTitleChanges):
- (WTR::LayoutTestController::shouldDumpTitleChanges):
-
-2010-08-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKitTestRunner needs to print onunload handler information
- <rdar://problem/8213831>
- https://bugs.webkit.org/show_bug.cgi?id=42703
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::operator<<):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
-
-2010-08-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add additional loader client functions need to complete WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=43684
-
- Remove unnecessary and jarring underscores as well.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didClearWindowObjectForFrame):
- (didCreatePage):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didCommitLoadForFrame):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- (WTR::InjectedBundlePage::didCancelClientRedirectForFrame):
- (WTR::InjectedBundlePage::willPerformClientRedirectForFrame):
- (WTR::InjectedBundlePage::didChangeLocationWithinPageForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- (WTR::InjectedBundlePage::didHandleOnloadEventsForFrame):
- (WTR::InjectedBundlePage::didDisplayInsecureContentForFrame):
- (WTR::InjectedBundlePage::didRunInsecureContentForFrame):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
- (WTR::InjectedBundlePage::willSetStatusbarText):
- (WTR::InjectedBundlePage::willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- (WTR::InjectedBundlePage::didBeginEditing):
- (WTR::InjectedBundlePage::didEndEditing):
- (WTR::InjectedBundlePage::didChange):
- (WTR::InjectedBundlePage::didChangeSelection):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-08-07 Dan Bernstein <mitz@apple.com>
-
- Build fix.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Made the references
- to JSGCController.{cpp,h} relative to the build root.
-
-2010-08-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKitTestRunner needs GCController
- <rdar://problem/8213834>
- https://bugs.webkit.org/show_bug.cgi?id=42701
-
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/InjectedBundle/Bindings/GCController.idl: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.h:
- (WTR::setProperty):
- * WebKitTestRunner/InjectedBundle/GCController.cpp: Added.
- (WTR::GCController::create):
- (WTR::GCController::GCController):
- (WTR::GCController::~GCController):
- (WTR::GCController::wrapperClass):
- (WTR::GCController::collect):
- (WTR::GCController::collectOnAlternateThread):
- (WTR::GCController::getJSObjectCount):
- (WTR::GCController::makeWindowObject):
- * WebKitTestRunner/InjectedBundle/GCController.h: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::reset):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::bundle):
- (WTR::InjectedBundle::gcController):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::keepWebHistory):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
-
-2010-08-05 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner needs to be able to set the font smoothing type
- https://bugs.webkit.org/show_bug.cgi?id=43406
-
- Reviewed by Adam Roben.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::resetPreferencesToConsistentValues):
- Set the font smoothing level to
- kWKFontSmoothingLevelNoSubpixelAntiAliasing to match DRT.
-
-2010-08-06 Jon Honeycutt <jhoneycutt@apple.com>
-
- Fix a missed variable rename.
-
- Unreviewed.
-
- * Scripts/old-run-webkit-tests:
-
-2010-08-06 Jon Honeycutt <jhoneycutt@apple.com>
-
- mac-wk2/Skipped should be used on Windows when running regression tests
- https://bugs.webkit.org/show_bug.cgi?id=43494
-
- Reviewed by Adam Roben.
-
- * Scripts/old-run-webkit-tests:
- If the platform is win-wk2, also read the mac-wk2 skipped list.
-
-2010-08-06 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Should revoke scheduled tasks
- https://bugs.webkit.org/show_bug.cgi?id=43560
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::reset): Calls RevokeAll().
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::reset): Calls RevokeAll().
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::reset): Calls RevokeAll().
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset): Calls RevokeAll().
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController): Calls DRTDevToolsAgent::reset() and DRTDevToolsClient::reset().
-
-2010-08-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Fix the DRT build on Mac OS X
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2010-08-06 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Rietvield's upload.py moved to a different location.
- https://bugs.webkit.org/show_bug.cgi?id=43613
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2010-05-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- QueueStatusServer needs better queue-status pages
- https://bugs.webkit.org/show_bug.cgi?id=39562
-
- The primary goal of this patch is to display queue
- positions somewhere on the site so that it's easier
- for commit-queue users to know when their pach will
- be landed. I also tried to improve the root page
- to be more useful than the previous wall of status text.
-
- * QueueStatusServer/handlers/recentstatus.py:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/queues.py:
- * QueueStatusServer/templates/recentstatus.html:
-
-2010-08-05 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add option to generate/upload incremental json results to test result server.
- Also refactor the json results generator unittest code to test
- incremental and aggregated json results.
-
- https://bugs.webkit.org/show_bug.cgi?id=43519
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-08-05 Jian Li <jianli@chromium.org>
-
- Reviewed by David Levin.
-
- Unify blob related feature defines to ENABLE(BLOB).
- https://bugs.webkit.org/show_bug.cgi?id=43081
-
- * Scripts/build-webkit:
-
-2010-08-05 Satish Sampath <satish@chromium.org>
-
- Reviewed by Jeremy Orlow.
-
- Add speech input controller mock in WebKit and a layout test.
- https://bugs.webkit.org/show_bug.cgi?id=43477
-
- Added LayoutTestController::setMockSpeechInputResultCallback method.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputResultCallback): Wrapper invoking the member function.
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setMockSpeechInputResult): Sets the mock result.
- (LayoutTestController::speechInputController): Creates the mock controller.
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechInputController): Creates the mock controller.
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputResult): dummy method.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputResult): dummy method.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputResult): dummy method.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: dummy method.
- (LayoutTestController::setMockSpeechInputResult):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: dummy method.
- (LayoutTestController::setMockSpeechInputResult):
-
-2010-08-04 Adam Roben <aroben@apple.com>
-
- Fix the path to TestNetscapePlugin's directory on Windows
-
- Fixes <http://webkit.org/b/43513> WebKitTestRunner on Windows fails to
- load TestNetscapePlugin
-
- Reviewed by Jon Honeycutt.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeTestPluginDirectory):
- TestNetscapePlugin is in a TestNetscapePlugin[_Debug] directory that's
- next to WebKitTestRunner.exe. Previously we were passing the directory
- that contains WebKitTestRunner.exe. Also fixed some leaks.
-
-2010-08-05 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style returns non-zero when patch is entirely minus lines.
- https://bugs.webkit.org/show_bug.cgi?id=38169
-
- * Scripts/check-webkit-style:
- Check whether a patch contains modified files that are entirely minus lines.
- * Scripts/webkitpy/style/filereader.py:
- Add a variable that holds number of files that contain only deleted lines.
- * Scripts/webkitpy/style/patchreader.py:
- Count up modified files that contain only deleted lines.
-
-2010-08-05 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- DevTools: get rid of delayed command dispatching on front-end side.
-
- https://bugs.webkit.org/show_bug.cgi?id=43479
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::detach):
- (DRTDevToolsAgent::frontendLoaded):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::~DRTDevToolsClient):
- (DRTDevToolsClient::sendFrontendLoaded):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
-
-2010-08-04 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Fixes check-webkit-style false positive on "new uint32_t."
- https://bugs.webkit.org/show_bug.cgi?id=43077
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-08-04 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove base/linked_ptr.h dependency
- https://bugs.webkit.org/show_bug.cgi?id=43472
-
- Replace linked_ptr<TestNavigationEntry> with RefPtr<TestNavigationEntry>.
- We need to use RefPtr<> because m_pendingEntry points an object in
- m_entries or not in m_entries.
-
- * DumpRenderTree/chromium/TestNavigationController.cpp:
- (TestNavigationEntry::create): Added.
- (TestNavigationController::activeEntry):
- (TestNavigationController::didNavigateToEntry):
- (TestNavigationController::discardPendingEntry):
- (TestNavigationController::insertEntry):
- (TestNavigationController::navigateToPendingEntry):
- * DumpRenderTree/chromium/TestNavigationController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::loadURLForFrame):
- Use TestNavigationEntry::create().
- (WebViewHost::updateURL):
- Use RefPtr<>.
- (WebViewHost::updateSessionHistory):
- Remove unnecessary static_cast<>.
-
-2010-08-04 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Fix a problem that "archived test results" step doesn't work on Chromium buildbots
- https://bugs.webkit.org/show_bug.cgi?id=43333
-
- * BuildSlaveSupport/test-result-archive:
- - Make layoutTestResultsDir local and pass it to archiveTestResults()
- - Adjust layoutTestResultsDir for Chromium
-
-2010-08-04 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- NRWT: websocket_server startup detection failure
- https://bugs.webkit.org/show_bug.cgi?id=43466
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- Increase timeout value: 5 second -> 10 second
-
-2010-08-04 Victor Wang <victorw@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- -. Add result.json incremental merging functionality to test results app engine.
- -. blobstore is not suitable for AE data merging and there is no API to
- programatically edit existing blob or write a new one yet, so replace blobstore
- with datastore. If file is oversize (>1000*1000 bytes), store file data in
- multiple datastore entries.
- -. Fix styles.
-
- Test: jsonresults_unittest to test merging logics.
-
- https://bugs.webkit.org/show_bug.cgi?id=38599
-
- * TestResultServer/handlers/dashboardhandler.py:
- * TestResultServer/handlers/menu.py:
- * TestResultServer/handlers/testfilehandler.py:
- * TestResultServer/main.py:
- * TestResultServer/model/dashboardfile.py:
- * TestResultServer/model/datastorefile.py: Added.
- * TestResultServer/model/jsonresults.py: Added.
- * TestResultServer/model/jsonresults_unittest.py: Added.
- * TestResultServer/model/testfile.py:
- * TestResultServer/templates/uploadform.html:
-
-2010-08-04 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] [QtTestBrowser] Remove unneeded QAction class members
- https://bugs.webkit.org/show_bug.cgi?id=43518
-
- LauncherWindow class has two totally unneeded class members: m_flopAnimated and
- m_flipYAnimated. Also, in initializeView method there are some dead code block
- trying to connect them at the wrong time, when they have not been instanciated.
-
- This patch:
-
- - removes the two cited class members in favor of local variables in createChrome method;
- - removes the dead code block.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- * QtTestBrowser/launcherwindow.h:
-
-2010-08-04 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Simon Hausmann and Kenneth Christiansen.
-
- [Qt] [QtTestBrowser] Clean up static and global menu state controls
- https://bugs.webkit.org/show_bug.cgi?id=43448
-
- After LauncherWindow class was refactored out of from main.cpp, all global variables that
- were hanging in main.cpp became temporarily public static class members of newly added
- LauncherWindow class. This design was not properly handling the initial purpose of the
- global variables: newly created launcher windows should inherit the settings of the originating
- one.
-
- In order to properly fix the problem, this patch introduces a WindowOptions class, as a POD. It
- comprises all data needed to handling the goal described above.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow): The class now receives an optional WindowOptions pointer object
- holding all user settings configured in the menus and command line.
- It also receices an optional QGraphicsScene points in case we are doing
- a "Clone Window".
- (LauncherWindow::init): Removed the usesGraphics parameter because the class member m_userData holds its
- value.
- (LauncherWindow::initializeView): Ditto.
- (LauncherWindow::createChrome): Changed all references to gXXX to m_userData.XXX
- (LauncherWindow::applyPrefs): Removed the "LauncherWindow* source" parameter. All data needed to properly
- apply the preferences is provided by m_userData.
- (LauncherWindow::toggleAcceleratedCompositing): Change gXXX by m_userData.XXX
- (LauncherWindow::toggleResizesToContents): Ditto.
- (LauncherWindow::toggleWebGL): Ditto.
- (LauncherWindow::toggleFrameFlattening): Ditto.
- (LauncherWindow::toggleQGLWidgetViewport): Ditto.
- (LauncherWindow::changeViewportUpdateMode): Ditto.
- (LauncherWindow::showFPS): Ditto.
- (LauncherWindow::newWindow): Changed to pass the userData.
- (LauncherWindow::cloneWindow): Ditto.
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (requiresGraphicsView):
- (LauncherApplication::handleUserOptions):
- (main):
-
-2010-08-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix for gcc not importing all symbols from convenience libraries.
- Works on 10.6 only for Mac until the build system is reworked.
-
- * wx/build/settings.py:
-
-2010-08-04 Markus Goetz <Markus.Goetz@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Change wording in QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=43241
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
-
-2010-08-04 Aaron Boodman <aa@chromium.org>
-
- Reviewed by Eric Seidel.
-
- prepare-ChangeLog fails mysteriously if curl doesn't support ssl
- https://bugs.webkit.org/show_bug.cgi?id=43460
-
- * Scripts/prepare-ChangeLog:
-
-2010-08-03 MORITA Hajime <morrita@google.com>
-
- Reviewed by Tony Chang.
-
- [DRT] Assertion failed when drag and move a draggable element.
- https://bugs.webkit.org/show_bug.cgi?id=41695
-
- mouseMoveToX() did call [WebHTMLView mouseDragged] even if dragging started.
- But Cocoa doesn't call mouseDragged() until dragging is done.
- Other part of DumpRenderTree also assumes Cocoa behavior and an assertion
- on UIDelegate failed when mouseDragged() is called during dragging.
- This change eliminated the mouseDragged() call when dragging begins,
- which is implicated by draggingInfo instance.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController mouseMoveToX:Y:]):
-
- Test: fast/events/dragging-mouse-moves.html
-
-2010-08-02 Steve Block <steveblock@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Adds Geolocation LayoutTests for the case where permission is not granted or denied immediately
- https://bugs.webkit.org/show_bug.cgi?id=40002
-
- The code in LayoutTestController::setGeolocationPermission() was moved to
- setGeolocationPermissionCommon() to allow each port to provide its own
- implementation of setGeolocationPermission().
-
- For the Mac port, setGeolocationPermission() notifies the UIDelegate of the
- new permission, so it can call back to WebCore if permission requests are in
- progress and are waiting for a response. A minor fix to the Mac
- MockGeolocationProvider was also required to make sure that the mock provider
- calls back to WebCore when it is first started.
-
- For other ports, LayoutTestController::setGeolocationPermission() is not
- implemented.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::setGeolocationPermissionCommon):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setGeolocationPermission):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setGeolocationPermission):
- * DumpRenderTree/mac/MockGeolocationProvider.mm:
- (-[MockGeolocationProvider registerWebView:]):
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForGeolocationRequestFromOrigin:frame:listener:]):
- (-[UIDelegate setGeolocationPermission:]):
- (-[UIDelegate dealloc]):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setGeolocationPermission):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setGeolocationPermission):
-
-2010-08-03 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Implement --testshell-startup-dialog
- https://bugs.webkit.org/show_bug.cgi?id=40616
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main): Check --testshell-startup-dialog, and call openStartUpDialog()
- if it is specfied.
- * DumpRenderTree/chromium/TestShell.h:
- Declare openStartUpDialog().
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (openStartupDialog):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (openStartupDialog):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (openStartupDialog):
-
-2010-08-03 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove dependency of base/md5.h
- https://bugs.webkit.org/show_bug.cgi?id=43403
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage): Use wtf/MD5.h
-
-2010-08-03 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by David Kilzer.
-
- Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
- https://bugs.webkit.org/show_bug.cgi?id=40627
-
- Part 6 - LayoutTest and Cleanup
-
- Allow tests to delete application caches and set application cache
- origin quotas, so they can be tested.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpApplicationCacheDelegateCallbacksCallback): JavaScript callback, delegates to the controller.
- (clearAllApplicationCachesCallback): should delete all application caches.
- (setApplicationCacheOriginQuotaCallback): should set the origin quota for the localhost tests.
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpApplicationCacheDelegateCallbacks): accessor to see if application cache callbacks should be output.
- (LayoutTestController::setDumpApplicationCacheDelegateCallbacks): enable or disable debug output when the application cache quota is reached.
-
- Mac implementation.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::clearAllApplicationCaches): delete application caches.
- (LayoutTestController::setApplicationCacheOriginQuota): set the quota for localhost.
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]): style fix.
- (-[UIDelegate webView:exceededApplicationCacheOriginQuotaForSecurityOrigin:]): reset the quota.
-
- Stub implementations for other platforms.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
-
-2010-08-03 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by David Kilzer.
-
- Limit ApplicationCache Total and Per-Origin Storage Capacity (Quotas)
- https://bugs.webkit.org/show_bug.cgi?id=40627
-
- Part 5 - Refactor Quota Management in WebSecurityOrigin into Managers
-
- Change old style calls to make use of the managers.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setDatabaseQuota):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:frame:exceededDatabaseQuotaForSecurityOrigin:database:]):
-
-2010-08-03 Mark Rowe <mrowe@apple.com>
-
- Add a new Leopard build slave to run the release tests.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-08-03 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner needs to activate the Mac font ascent hack
- https://bugs.webkit.org/show_bug.cgi?id=43404
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- Call WKBundleActivateMacFontAscentHack().
-
-2010-08-03 Alex Milowski <alex@milowski.com>
-
- Reviewed by Beth Dakin.
-
- Changed the default for MathML support so that is is enabled by default.
-
- * Scripts/build-webkit:
-
-2010-08-03 Sam Weinig <sam@webkit.org>
-
- Roll r64566 back in this time with all the overloads in place..
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::shouldInsertNode):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/StringFunctions.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::resetPreferencesToConsistentValues):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-08-03 Sam Weinig <sam@webkit.org>
-
- Rollout r64566. It broke all the WebKit2 tests.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::operator<<):
- (WTR::InjectedBundlePage::shouldInsertNode):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/StringFunctions.h: Removed.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::createWKURL):
- (WTR::WKStringToUTF8):
- (WTR::TestInvocation::resetPreferencesToConsistentValues):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-08-03 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WTR: Move all the utility functions for working with strings to a shared header.
- https://bugs.webkit.org/show_bug.cgi?id=43386
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::shouldInsertNode):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/StringFunctions.h: Added.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::resetPreferencesToConsistentValues):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-08-02 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] QtTestBrowser not setting preferredContentsSize for resizesToContents
- https://bugs.webkit.org/show_bug.cgi?id=43168
-
- QGraphicsWebView resizesToContents property has to work together with QWebPage's
- setPreferredContentsSize as stated by the docs. Patch addresses that for QtTestBrowser.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::applyPrefs):
- * QtTestBrowser/webview.cpp:
- (WebViewGraphicsBased::setResizesToContents): Properly handle scene, webview and viewport sizes
- needed when toggle resizesToContents on/off.
- (WebViewGraphicsBased::resizeEvent):
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased::setCustomLayoutSize): Setter helper.
- (WebViewGraphicsBased::customLayoutSize): Getter helper.
-
-2010-08-03 Jochen Eisinger <jochen@chromium.org>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-02 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Chromium DevTools: Get rid of DevTools RPC.
-
- https://bugs.webkit.org/show_bug.cgi?id=43335
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::sendMessageToInspectorFrontend):
- (DRTDevToolsAgent::call):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.h:
- (DRTDevToolsCallArgs::DRTDevToolsCallArgs):
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::sendMessageToBackend):
- (DRTDevToolsClient::call):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
-
-2010-08-02 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove dependencies to some Chromium headers
- https://bugs.webkit.org/show_bug.cgi?id=43396
-
- * DumpRenderTree/chromium/CppVariant.h:
- Remove base/basictypes.h because webkit_support.h contains it.
- * DumpRenderTree/chromium/EventSender.cpp:
- (getCurrentEventTimeSec): Use new wrapper function.
- * DumpRenderTree/chromium/TestNavigationController.h:
- Remove base/basictypes.h because webkit_support.h contains it.
- * DumpRenderTree/chromium/TestShell.cpp:
- (dumpHistoryItem): Use new wrapper function.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::cancelledError): Use new wrapper function.
- (WebViewHost::didFailResourceLoad): Use new wrapper function.
-
-2010-08-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] DRT implement execCommand()
- https://bugs.webkit.org/show_bug.cgi?id=35351
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::execCommand): Implement using webkit_web_view_execute_core_command_by_name.
- (LayoutTestController::isCommandEnabled): Implement using webkit_web_view_is_command_enabled.
- (LayoutTestController::setCacheModel): Move below LayoutTestController::isCommandEnabled.
-
-2010-08-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add alias for run-webkit-tests --webkit-test-runner (run-webkit-tests -2).
-
- * Scripts/old-run-webkit-tests:
-
-2010-08-02 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebKitTestRunner needs to support loading custom fonts (via the
- WEBKIT_TESTFONTS environment variable)
- https://bugs.webkit.org/show_bug.cgi?id=42782
-
- Reviewed by Adam Roben.
-
- * WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp:
- (WTR::fontsPath):
- Copied from DRT code. Removed the fallback to DumpRenderTree.resources/,
- as this directory doesn't appear to be created anymore.
- (WTR::activateFonts):
- Loop through the fonts, and call AddFontResourceExW() for each.
-
-2010-08-02 Jon Honeycutt <jhoneycutt@apple.com>
-
- Restore the WebKitTestRunner.sln that was removed, and remove the
- correct one.
-
- Rubber-stamped by Sam Weinig.
-
- * WebKitTestRunner/WebKitTestRunner.sln: Added.
- * WebKitTestRunner/win/WebKitTestRunner.sln: Removed.
-
-2010-08-02 Jon Honeycutt <jhoneycutt@apple.com>
-
- Move InjectedBundle.vcproj to where the other WebKitTestRunner vcprojs live.
-
- Remove the unused WebKitTestRunner.sln.
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj: Removed.
- * WebKitTestRunner/WebKitTestRunner.sln: Removed.
- * WebKitTestRunner/win/InjectedBundle.vcproj: Added.
- * WebKitTestRunner/win/WebKitTestRunner.sln:
-
-2010-08-02 Sam Weinig <sam@webkit.org>
-
- Fix the windows build.
-
- * WebKitTestRunner/win/main.cpp:
-
-2010-07-29 Jon Honeycutt <jhoneycutt@apple.com>
-
- Add a Skipped list on Windows, and have run-webkit-tests respect it.
-
- Part of <rdar://problem/8233237> Fill WebKit2 Windows skipped list so
- there are zero tests failing
- https://bugs.webkit.org/show_bug.cgi?id=43374
-
- Reviewed by Adam Roben.
-
- * Scripts/old-run-webkit-tests:
- If using WebKitTestRunner and Apple Windows WebKit, set the platform to
- win-wk2. When building the result hierarchy, if the platform is win-wk2,
- add it first to the list of platforms.
-
-2010-08-02 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs layoutTestController.setCanOpenWindows
- https://bugs.webkit.org/show_bug.cgi?id=42321
-
- WebKitTestRunner needs layoutTestController.setCloseRemainingWindowsWhenComplete
- https://bugs.webkit.org/show_bug.cgi?id=42779
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added
- setCanOpenWindows, setCloseRemainingWindowsWhenComplete, and windowCount
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle): Initialize m_mainPage to 0 instead of
- waiting for the first call to didCreatePage.
- (WTR::InjectedBundle::didCreatePage): Set m_mainPage only when the first page
- is created. Put other pages into a map.
- (WTR::InjectedBundle::willDestroyPage): Added code to handle the destruction
- of the main page.
- (WTR::InjectedBundle::closeOtherPages): Added. Closes all the pages other than
- the main page.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Added pageCount and
- closeOtherPages functions.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFinishLoadForFrame): Don't let pages other than
- the main page affect dumping.
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame): Ditto.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize the new
- m_shouldCloseExtraWindows member.
- (WTR::LayoutTestController::setCanOpenWindows): Added. Empty for now.
- (WTR::LayoutTestController::windowCount): Added.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- Added setCanOpenWindows, setCloseRemainingWindowsWhenComplete,
- windowCount, shouldCloseExtraWindowsAfterRunningTest, and
- m_shouldCloseExtraWindows.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::shared): Return a pointer to the shared copy, but
- don't allocate and leak it. This seemed cleaner than adding an explicit
- finalize call to go along with the explicit initialize call.
- (WTR::TestController::TestController): Added calls to the initialize and
- run function, which are now done automatically.
- (WTR::TestController::~TestController): Added, since it's called now.
- (WTR::closeOtherPage): Added. Used to close pages other than the main page.
- (WTR::createOtherPage): Added. Used to create pages other than the main page.
- (WTR::TestController::initialize): Added code to set up createOtherPage.
- (WTR::TestController::run): Removed unused return value.
- * WebKitTestRunner/TestController.h: Made constructor and destructor public,
- and initialize and run private. Changed m_mainWebView to be an OwnPtr.
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView): Added a call to setReleasedWhenClosed
- to avoid releasing the window twice. Another way to handle it would be to
- remove the release, but this approach is slightly more robust because it works
- even if some other code calls the close method an extra time.
-
- * WebKitTestRunner/mac/main.mm:
- (main): Use a stack-allocated TestController object instead of calling
- initalize and run on a globally allocated one.
-
-2010-08-02 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- add myself to the reviewers list
- https://bugs.webkit.org/show_bug.cgi?id=43366
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-08-02 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Cache JSNPObjects and fix bugs in the object map
- https://bugs.webkit.org/show_bug.cgi?id=43368
-
- Test that we correctly throw exceptions when trying to do things to a JSObject that used to
- wrap an NPObject that came from a plug-in that is now destroyed.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest::Object::getProperty):
- (PluginTest::Object::NP_GetProperty):
- (PluginTest::Object::npClass):
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp: Added.
- (NPRuntimeObjectFromDestroyedPlugin::NPRuntimeObjectFromDestroyedPlugin):
- (NPRuntimeObjectFromDestroyedPlugin::ScriptableObject::hasProperty):
- (NPRuntimeObjectFromDestroyedPlugin::ScriptableObject::getProperty):
- (NPRuntimeObjectFromDestroyedPlugin::NPP_GetValue):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2010-08-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Gtk] DOM listeners get wrong keycodes for some keys
- https://bugs.webkit.org/show_bug.cgi?id=35170
-
- Add support to all event senders for simulating keypad insert
- and print screen keys.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown): Add support for generating keypad insert and print screen.
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback): Ditto.
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:withLocation:]): Ditto.
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown): Ditto.
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback): Ditto.
-
-2010-08-02 Martin Robinson <mrobinson@igalia.com>
-
- Build fix for building against development versions of GTK+. GTK 2.22
- has not yet been released, so these function definitions must be conditionalized
- on the development version.
-
- * DumpRenderTree/gtk/EventSender.cpp: Fix GTK+ 2.21 build.
-
-2010-08-02 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] use ChromiumDriver on Linux when running webkit tests
- https://bugs.webkit.org/show_bug.cgi?id=43273
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-08-02 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Always initialize GTK
- https://bugs.webkit.org/show_bug.cgi?id=43327
-
- Call gtk_init() in order to fix plugin test crash.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main): Pass argc/argv to platformInit().
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (platformInit): Update parameters, call gtk_init().
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit): Update parameters.
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit): Update parameters.
-
-2010-08-02 Balazs Kelemen <kb@inf.u-szeged.hu>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Generate forwarding headers for WebKit2
-
- https://bugs.webkit.org/show_bug.cgi?id=43336
-
- * Scripts/webkitdirs.pm: Call make on WebKit2/Makefile.DerivedSources.
-
-2010-08-02 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Kent Tamura.
-
- WebSocket server should start with SO_REUSEADDR
- https://bugs.webkit.org/show_bug.cgi?id=43329
-
- Pulls in pywebsocket-0.5.2.
- pywebsocket-0.5.2 includes a small fix to start server with SO_REUSE_ADDR.
- http://code.google.com/p/pywebsocket/source/detail?r=273
-
- * Scripts/webkitpy/thirdparty/__init__.py: Bump pywebsocket version
-
-2010-08-01 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove string_util.h dependency
- https://bugs.webkit.org/show_bug.cgi?id=43312
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::pathToLocalResource):
- Use string::find() instead of StartsWithASCII().
- (LayoutTestController::cppVariantToInt32):
- Use strtol() instead of StringToNumber().
-
-2010-08-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add ability to reset frame names for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=43316
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::reset):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-08-01 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Implement NPN_RemoveProperty
- https://bugs.webkit.org/show_bug.cgi?id=43315
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add NPRuntimeRemoveProperty.cpp
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_GetStringIdentifier):
- (PluginTest::NPN_GetIntIdentifier):
- (PluginTest::NPN_RemoveProperty):
- Add NPN_ helpers.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Support more NPClass functions.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp: Added.
- (NPRuntimeRemoveProperty::NPRuntimeRemoveProperty):
- Test for NPN_RemoveProperty.
-
- (NPRuntimeRemoveProperty::TestObject::hasMethod):
- (NPRuntimeRemoveProperty::TestObject::invoke):
- Add a testRemoveProperty method.
-
- (NPRuntimeRemoveProperty::NPP_GetValue):
- Return the test object.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Add NPRuntimeRemoveProperty.cpp
-
-2010-07-30 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add an NPObject class template helper to TestNetscapePlugin
- https://bugs.webkit.org/show_bug.cgi?id=43288
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Add some template magic to be able to figure out if a class has a member function of a given type.
-
- (PluginTest::Object::create):
- Create an object.
-
- (PluginTest::Object::invokeDefault):
- Add dummy function, this should never be called.
-
- (PluginTest::Object::Object):
- Initialize m_pluginTest to 0.
-
- (PluginTest::Object::~Object):
- Add virtual destructor.
-
- (PluginTest::Object::NP_Allocate):
- Create a new object.
-
- (PluginTest::Object::NP_Deallocate):
- Delete the object.
-
- (PluginTest::Object::NP_InvokeDefault):
- Call invokeDefault.
-
- (PluginTest::Object::npClass):
- Initialize the NPClass struct.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/DocumentOpenInDestroyStream.cpp:
- (DocumentOpenInDestroyStream::NPP_DestroyStream):
- Move this inline.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PluginScriptableNPObjectInvokeDefault.cpp:
- (PluginScriptableNPObjectInvokeDefault::NPObjectWithInvokeDefault::invokeDefault):
- (PluginScriptableNPObjectInvokeDefault::NPP_GetValue):
- Use the PluginTest::Object class template.
-
-2010-07-31 Sam Weinig <sam@webkit.org>
-
- Reviewed by Dan Bernstein.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=43305
- Add back WKBundleFrameCopyInnerText to fix ~50 test failures
- due to SVGElements not having the innerText function.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpFrameText):
-
-2010-07-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=43290
- Add structured message passing from the injected bundle to UIProcess
-
- * MiniBrowser/mac/AppDelegate.m:
- (didRecieveMessageFromInjectedBundle):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didClearWindowForFrame):
- (didRecieveMessage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done):
- (WTR::InjectedBundle::didReceiveMessage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- (WTR::TestController::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-07-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=43275
- Make WKArrayRef more usable.
-
- Remove now unnecessary const_casts.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpDescendantFrameScrollPositions):
- (WTR::dumpDescendantFramesText):
-
-2010-07-30 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=43274
- Add first pass of structured message passing.
-
- Update Minibrowser and WebKitTestRunner to work with the new post message
- function.
-
- * MiniBrowser/mac/AppDelegate.m:
- (didRecieveMessageFromInjectedBundle):
- (-[BrowserAppDelegate init]):
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didStartProvisionalLoadForFrame):
- (didReceiveServerRedirectForProvisionalLoadForFrame):
- (didFailProvisionalLoadWithErrorForFrame):
- (didCommitLoadForFrame):
- (didFinishLoadForFrame):
- (didFailLoadWithErrorForFrame):
- (didReceiveTitleForFrame):
- (didClearWindowForFrame):
- (didCreatePage):
- (willDestroyPage):
- (didRecieveMessage):
- (WKBundleInitialize):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::_didReceiveMessage):
- (WTR::InjectedBundle::didReceiveMessage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-07-30 Anders Carlsson <andersca@apple.com>
-
- Try to fix the layout test failures.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_get_value):
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- Replace plugins/npruntime/bindings-test.html with a more sophisticated test
- https://bugs.webkit.org/show_bug.cgi?id=43232
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add PluginScriptableNPObjectInvokeDefault.cpp.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- Remove invokeDefault callback function.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::create):
- Move this to the top of the file.
-
- (PluginTest::NPP_GetValue):
- Add default implementation.
-
- (PluginTest::NPN_CreateObject):
- Add NPN_ wrapper.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest::identifier):
- Add identifier getter.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/DocumentOpenInDestroyStream.cpp:
- (DocumentOpenInDestroyStream::DocumentOpenInDestroyStream):
- Add "using namespace std".
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_GetValue):
- Give PluginTest a chance to return a value.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Add PluginScriptableNPObjectInvokeDefault.cpp.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_get_value):
- Give PluginTest a chance to return a value.
-
-2010-07-30 Steve Block <steveblock@google.com>
-
- Reviewed by Steve Block.
-
- Add LayoutTestController methods to test DeviceOrientation
- https://bugs.webkit.org/show_bug.cgi?id=39589
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockDeviceOrientationCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * Scripts/build-webkit:
-
-2010-07-29 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] QtTestBrowser: -resizes-to-contents command line parameter is broken
- https://bugs.webkit.org/show_bug.cgi?id=43209
-
- When -resizes-to-content was being passed as a command line parameter it was simply
- not being set (although the corresponding menu item was marked as ON).
- User had to toggle the menu OFF and then ON again for it to take place.
-
- Reason: LauncherWindow::applyPrefs method sets many user options passed in from
- the command line, but not resizesToContents. Patch addresses that.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::applyPrefs):
- (LauncherWindow::toggleResizesToContents):
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased::resizesToContents):
-
-2010-07-29 Antonio Gomes <tonikitoo@webkit.org>
-
- Rubber-stamped by Simon Fraser.
-
- [Qt] QtTestBrowser: more method grouping and clean ups.
-
- Moving blocks of code around. Basically grouping related methods close to each.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::changeViewportUpdateMode):
- (LauncherWindow::showFPS):
- (LauncherWindow::newWindow):
- (LauncherWindow::cloneWindow):
- * QtTestBrowser/launcherwindow.h:
-
-2010-07-30 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [QT][Symbian] QtTestBrowser missing location capabilities
- https://bugs.webkit.org/show_bug.cgi?id=43235
-
- QtTestBrowser missing capabilities to use QtMobility::QLocation.
-
- * QtTestBrowser/QtTestBrowser.pro:
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Add PluginTest.cpp
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2010-07-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Update download URLs for python irclib package; the old URLs
- pointed at a specific mirror host and not the general sourceforge
- URLs.
-
- https://bugs.webkit.org/show_bug.cgi?id=43228
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Fix typo.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Another attempt at fixing the Qt and GTK+ build.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_stream):
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Another build fix attempt.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- * GNUmakefile.am:
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Try to fix Windows and Unix builds.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_stream):
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Refactor TestNetscapePlugin so tests can be split in separate files
- https://bugs.webkit.org/show_bug.cgi?id=43220
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add PluginTest.cpp, PluginTest.h and Tests/DocumentOpenInDestroyStream.cpp.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginAllocate):
- Initialize pluginTest to 0. Remove testDocumentOpenInDestroyStream.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp: Added.
- (PluginTest::PluginTest):
- Initialize m_npp and the test identifier.
-
- (PluginTest::createTestFunctions):
- Return the map from identifiers to createTest functions.
-
- (PluginTest::registerCreateTestFunction):
- Insert the identifier and create function pair in the map.
-
- (PluginTest::create):
- Look for a createTest function. If one is found, call it. Otherwise create a vanilla PluginTest object.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added.
- (PluginTest::Register::Register):
- Helper class template for registering plug-in tests.
-
- (PluginTest::Register::create):
- Create a new test of the given type.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/DocumentOpenInDestroyStream.cpp: Added.
- (DocumentOpenInDestroyStream::DocumentOpenInDestroyStream):
- Add a test that calls testDocumentOpen from its NPP_DestroyStream callback.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- Create a PluginTest given the identifier. Remove the check for "testdocumentopenindestroystream".
-
- (NPP_DestroyStream):
- Call the plug-in test NPP_DestroyStream member function.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Add PluginTest.cpp, PluginTest.h and Tests/DocumentOpenInDestroyStream.cpp.
-
-2010-07-29 Martin Robinson <mrobinson@igalia.com>
-
- Unreviewed build fix.
-
- Add missing second argument to assert_lint in new style checker tests.
-
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-07-29 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- check-webkit-style shouldn't complain about NPAPI functions
- https://bugs.webkit.org/show_bug.cgi?id=43211
-
- Allow underscores in functions that start with NPN_, NPP_ or NP_.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-07-29 Victor Wang <victorw@chromium.org>
-
- Unreviewed, rolling out r64270.
- http://trac.webkit.org/changeset/64270
- https://bugs.webkit.org/show_bug.cgi?id=39589
-
- The patch breaks chromium webkit unittest
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * Scripts/build-webkit:
-
-2010-07-29 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] QtTestBrowser: Move WebPage class methods definitions from main.cpp to webpage.cpp
- https://bugs.webkit.org/show_bug.cgi?id=43199
-
- There is no sense in keeping WebPage method definitions in main.cpp once
- webpage.cpp already exists.
-
- No behavior change.
-
- * QtTestBrowser/main.cpp:
- * QtTestBrowser/webpage.cpp:
- (WebPage::createWindow):
- (WebPage::createPlugin):
-
-2010-07-29 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Kenneth Christiansen.
-
- [Qt] Factor out LauncherWindow class out of main.cpp (QtTestBrowser)
- https://bugs.webkit.org/show_bug.cgi?id=43170
-
- Moving LauncherWindow class out of main.cpp to its own .cpp and .h files:
- launcherwindow.{cpp|h}
-
- No behavior change.
-
- Also changed all global static variables (named "gXXX") from main.cpp to
- static public variables of the LauncherWindow class.
-
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp: Added.
- * QtTestBrowser/launcherwindow.h: Added.
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
- (main):
-
-2010-07-29 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Build fix for building against GTK+ 3.x. GSEAL requires that we
- access internals of the GdkDragContext via methods. For older versions
- of GTK+, define those methods.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gdk_drag_context_get_selected_action): Added.
- (gdk_drag_context_get_actions): Added.
- (dispatchEvent): Use the two new accessor methods.
-
-2010-07-29 Adam Roben <aroben@apple.com>
-
- Always say "plugins directory" when referring to a directory
- containing one or more plugins
-
- Fixes <http://webkit.org/b/43197> WebKit2 often says "plugin
- directory" when it means "plugins directory"
-
- Reviewed by John Sullivan.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Updated for rename.
-
-2010-07-29 Adam Roben <aroben@apple.com>
-
- Always say "directory" when referring to a plugin directory
-
- Fixes <http://webkit.org/b/43195> WebKit2 often says "plugin path"
- when it means "plugin directory"
-
- Reviewed by John Sullivan.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Updated for renames.
-
- * WebKitTestRunner/TestController.h: Renamed m_testPluginPath to
- m_testPluginDirectory.
- (WTR::TestController::testPluginDirectory): Renamed from
- testPluginPath.
-
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::initializeTestPluginDirectory):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeTestPluginDirectory):
- Renamed from initializeTestPluginPath and updated for rename.
-
-2010-07-29 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- Initialize all members of NPClass struct.
- https://bugs.webkit.org/show_bug.cgi?id=43193
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
-
-2010-07-29 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- Warning fix on platforms where XP_MACOSX is undefined.
- https://bugs.webkit.org/show_bug.cgi?id=43192
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- Use #if defined(XP_MACOSX) instead of #if XP_MACOSX .
-
-2010-07-29 Adam Roben <aroben@apple.com>
-
- Give find-included-framework-headers our standard license
-
- * Scripts/find-included-framework-headers: Used the license from
- WebCore/LICENSE-APPLE.
-
-2010-07-29 Adam Roben <aroben@apple.com>
-
- Speed up find-included-framework-headers
-
- We only do one invocation of find now, no longer pipe to grep, and
- replace uniq with sort -u.
-
- Also added a license header.
-
- * Scripts/find-included-framework-headers:
-
-2010-07-29 Steve Block <steveblock@google.com>
-
- Reviewed by Jeremy Orlow.
-
- Add LayoutTestController methods to test DeviceOrientation
- https://bugs.webkit.org/show_bug.cgi?id=39589
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockDeviceOrientationCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockDeviceOrientation):
- * Scripts/build-webkit:
-
-2010-07-28 Kenichi Ishibashi <bashi@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Fixed <https://bugs.webkit.org/show_bug.cgi?id=33814>
- check-webkit-style gives false positives in single-line functions.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-07-28 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs to support layoutTestController.execCommand
- <https://bugs.webkit.org/show_bug.cgi?id=42538>
-
- WebKitTestRunner needs layoutTestController.isCommandEnabled
- <https://bugs.webkit.org/show_bug.cgi?id=42671>
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added execCommand and isCommandEnabled.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::execCommand): Added.
- (WTR::LayoutTestController::isCommandEnabled): Added.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Ditto.
-
-2010-07-28 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Introduce drt_expectations.txt for NRWT
- https://bugs.webkit.org/show_bug.cgi?id=43123
-
- Introduce LayoutTests/platform/chromium/drt_expectations.txt,
- which overrides test expectations only for DumpRenderTree, in
- order to manage what problems are investigated.
- This change will be reverted when we switch to DRT completely.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- Add drt_expectations.txt content to the result of
- test_expectations_overrides() if --use-drt is specified.
-
-2010-07-28 Brady Eidson <beidson@apple.com>
-
- Reviewed by Darin Adler.
-
- First pass at visited link support for WK2
- https://bugs.webkit.org/show_bug.cgi?id=43157
-
- * MiniBrowser/mac/AppDelegate.m:
- (didNavigateWithNavigationData):
- (didPerformClientRedirect):
- (didPerformServerRedirect):
- (didUpdateHistoryTitle):
- (populateVisitedLinks): Added for the new version of the HistoryClient.
- (-[BrowserAppDelegate init]): Set the HistoryClient right after creating the context(s)
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
-
-2010-07-28 Robin Dunn <robin@alldunn.com>
-
- Reviewed by Kevin Ollivier.
-
- Add DOM bindings support for wx port.
-
- * DumpRenderTree/wscript:
- * wx/browser/wscript:
- * wx/build/settings.py:
-
-2010-07-28 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] cleanup temp files left by Linux DRT
- https://bugs.webkit.org/show_bug.cgi?id=43062
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Rename the chromium bots to include the OS
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: add a step on chromium-linux to delete temp files left
- by crashed DRTs
-
-2010-07-28 Antonio Gomes <tonikitoo@webkit.org>
-
- Rubber-stamped by Kenneth Christiansen.
-
- More Developer menu items reordering.
-
- Grouping related menu items together, visually and logically (in the code).
-
- No behavior change.
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::createChrome):
-
-2010-07-27 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add FILE_SYSTEM build flag for FileSystem API
- https://bugs.webkit.org/show_bug.cgi?id=42915
-
- * Scripts/build-webkit:
-
-2010-07-27 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by David Levin.
-
- Stylebot should not complain about NULL usage in calls to gdk_pixbuf_save_to
- https://bugs.webkit.org/show_bug.cgi?id=43090
-
- * Scripts/webkitpy/style/checkers/cpp.py: Add exemption for some GdkPixbuf methods.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added some tests for this behavior.
-
-2010-07-27 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, trivial typo fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- Fix a wrong method name committed by r64109.
-
-2010-07-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=43087
- Clean up handling of strings at the WebKit2 API layer.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (runJavaScriptAlert):
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
- (didNavigateWithNavigationData):
- (-[BrowserWindowController updateProvisionalURLForFrame:]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didClearWindowForFrame):
-
-2010-07-27 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch post-commits is broken: AttributeError: Values instance has no attribute 'no_squash'
- https://bugs.webkit.org/show_bug.cgi?id=42984
-
- squash and no_squash have been intentionally erroring for a couple weeks now.
- But post-commits was just broken. Just remove squash/no_squash.
-
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-07-27 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after introduction of EXECUTABLE_ALLOCATOR_DEMAND.
-
- * wx/build/settings.py:
-
-2010-07-27 Adam Roben <aroben@apple.com>
-
- Mac build fix
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (processDidExit):
- (-[BrowserWindowController awakeFromNib]):
- Added processDidExit support.
-
-2010-07-26 Antonio Gomes <tonikitoo@webkit.org>
-
- Rubber-stamped by Simon Hausmann.
-
- [Qt] Reorder some items in Developers' menu so QGraphicsView one is easier accessible.
-
- Move some less useful menu items on Developers menu from the top to the bottom, so
- QGraphicsView menu goes to the top, and becomes more quickly accessible.
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::createChrome):
-
-2010-07-26 Adam Roben <aroben@apple.com>
-
- Fix the path to InjectedBundle.dll in Debug_Internal builds
-
- Fixes <http://webkit.org/b/42994> WebKitTestRunner fails to load
- InjectedBundle.dll in the Debug_Internal configuration
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeInjectedBundlePath): Add the _debug
- suffix only in Debug_All builds.
-
-2010-07-25 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=42947
- Check for WEBKIT_TESTFONTS for qt, gtk and windows port and throw
- error. Without which dumpRenderTree crashes.
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-27 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- https://bugs.webkit.org/show_bug.cgi?id=42956
- [DRT/Chromium] Fix "out of sync" assertion error
-
- Fix an assertion error on Windows like the following:
- 100721 20:16:46 chromium.py:386 CRITICAL Test got out of sync:
- |file:///c:/WebKitBuildSlave2/chromium-win-release-tests/build/LayoutTests/http/tests/local/blob/send-data-blob.html|
- |file:///C:/WebKitBuildSlave2/chromium-win-release-tests/build/LayoutTests/http/tests/local/blob/send-data-blob.html|
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- If the url matches with "file:///[a-z]:", does case-ignore comparison.
- GURL capitalize the driver letter of a file: URL.
-
-2010-07-26 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs to support layoutTestController.counterValueForElementById
- https://bugs.webkit.org/show_bug.cgi?id=42537
-
- WebKitTestRunner needs layoutTestController.markerTextForListItem
- https://bugs.webkit.org/show_bug.cgi?id=42549
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- Fixed _paramterExpression typo. Improved support for string type as a
- return value, so we don't try to include DOMString.h and we can convert
- the string to a JSValue by calling JSValueMakeStringOrNull.
-
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h:
- Added JSValueMakeStringOrNull, used by the code generator.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added counterValueForElementById and markerTextForListItem.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- Moved constant to the top of the file.
- (WTR::toCF): Added. Converts strings to CFStringRef.
- (WTR::toWK): Added. Converts strings to WKStringRef.
- (WTR::toJS): Added. Converts strings to JSStringRef.
- (WTR::setProperty): Moved this function to the top of the file
- rather than having it down where it's used inside the class. Also
- renamed it so it's a separate function rather than an overload of
- JSObjectSetProperty.
- (WTR::propertyValue): Copied this here from InjectedBundlePage.cpp.
- Should move it somewhere we can share it.
- (WTR::propertyObject): Ditto.
- (WTR::getElementById): Added. Calls getElementById through the magic
- of JavaScript.
- (WTR::LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- Chagned to use toWK instead of four local variables.
- (WTR::LayoutTestController::counterValueForElementById): Added.
- Calls WKBundleFrameCopyCounterValue.
- (WTR::LayoutTestController::markerTextForListItem): Added.
- Calls WKBundleFrameCopyMarkerText.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- Added counterValueForElementById and markerTextForListItem.
-
-2010-07-26 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] The EventSender should support simulating drop events
- https://bugs.webkit.org/show_bug.cgi?id=39844
-
- Add initial dropping support to the GTK+ EventSender.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView): Listen for some new drag-and-drop signals.
- * DumpRenderTree/gtk/EventSender.cpp: Add currentDragSourceContext.
- (dispatchEvent):
- Detect situations where a drag is either starting or ending and massage
- GTK+ into sending the appropriate signals to the WebView.
- (replaySavedEvents): Remove comment.
- (makeEventSender): Clear the currentDragSourceContext when creating a new EventSender.
- (dragBeginCallback): Capture the new currentDragSourceContext when a drag begins.
- (dragEndCallback): Clear the currentDragSourceContext when a drag ends.
- (dragFailedCallback): Disable the GTK+ drag failed animation.
- * DumpRenderTree/gtk/EventSender.h: Add declarations for new signal callbacks.
-
-2010-07-26 Daniel Bates <dbates@rim.com>
-
- Reviewed by Darin Adler.
-
- svn-unapply warns of uninitialized variable when unapplying
- a patch that describes an svn move operation
- https://bugs.webkit.org/show_bug.cgi?id=42036
-
- Fixes Perl uninitialized variable warnings when un-applying
- a patch that moves a file.
-
- * Scripts/svn-unapply:
- - Modified patch() so that it initializes $patch to the empty
- string when we don't have svnConvertedText (such as when
- reversing a diff that represents a svn copy/move operation).
-
-2010-07-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Move some non-APIish functions into private headers.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
-
-2010-07-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=42986
- Add prompt and confirm client functions to WebKit2
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
-
-2010-07-26 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * MiniBrowser/MiniBrowser.vcproj:
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj:
- Removed empty attributes so the values will be picked up from the
- vsprops files. (Also removed a couple of attributes that accidentally
- duplicated values from the vsprops files.)
-
-2010-07-26 Brian Weinstein <bweinstein@apple.com>
-
- Rubber-stamped by Adam Roben.
-
- Touch MiniBrowser's stdafx to fix the build.
-
- * MiniBrowser/win/stdafx.h:
-
-2010-07-26 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Add pretty printer of WTF::Vector for GDB 7.
-
- https://bugs.webkit.org/show_bug.cgi?id=40909
-
- * gdb/wtf.py: Added.
-
-2010-07-26 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix feature detection regexp
-
- We were missing the last feature
-
- * Scripts/webkitdirs.pm:
-
-2010-07-25 Darin Adler <darin@apple.com>
-
- Reviewed by Dan Bernstein.
-
- WebKitTestRunner needs to support layoutTestController.dumpSelectionRect
- https://bugs.webkit.org/show_bug.cgi?id=42326
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added dumpSelectionRect.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpSelectionRect): Added. For now, this
- does nothing because its purpose is to change pixel test output and
- we do not have pixel tests implemented yet.
-
-2010-07-25 Darin Adler <darin@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- WebKitTestRunner needs to support layoutTestController.keepWebHistory
- https://bugs.webkit.org/show_bug.cgi?id=42323
-
- Added keepWebHistory and computedStyleIncludingVisitedInfo.
-
- Also fixed misspellings of the word "receive".
-
- Also tweaked the names of some of the LayoutTestController members.
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- Added support for a type named "object" that is passed and returns as
- a JSValueRef.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added keepWebHistory and computedStyleIncludingVisitedInfo. Also
- put setAcceptsEditing up nearer the top.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::_didReceiveMessage): Fixed mispellings of receive.
- (WTR::InjectedBundle::initialize): Ditto.
- (WTR::InjectedBundle::didReceiveMessage): Ditto.
- (WTR::InjectedBundle::reset): Reset the state of visited links between
- tests. Also eliminated the unused argument to the LayoutTestController
- create function.
- (WTR::InjectedBundle::setShouldTrackVisitedLinks): Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Ditto.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::shouldBeginEditing): Call shouldAllowEditing
- instead of acceptsEditing.
- (WTR::InjectedBundlePage::shouldEndEditing): Ditto.
- (WTR::InjectedBundlePage::shouldInsertNode): Ditto.
- (WTR::InjectedBundlePage::shouldInsertText): Ditto.
- (WTR::InjectedBundlePage::shouldDeleteRange): Ditto.
- (WTR::InjectedBundlePage::shouldChangeSelectedRange): Ditto.
- (WTR::InjectedBundlePage::shouldApplyStyle): Ditto.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::create): Removed uneeded argument.
- (WTR::LayoutTestController::LayoutTestController): Removed unneeded
- argument. Updated for rename of m_acceptsEditing to m_shouldAllowEditing.
- (WTR::LayoutTestController::numberOfActiveAnimations): Added some FIXMEs
- about the fact that this works on the main frame.
- (WTR::LayoutTestController::pauseAnimationAtTimeOnElementWithId): Ditto.
- (WTR::LayoutTestController::keepWebHistory): Added.
- (WTR::LayoutTestController::computedStyleIncludingVisitedInfo): Added.
- (WTR::JSObjectSetProperty): Added. Helper to make the function below
- cleaner.
- (WTR::LayoutTestController::makeWindowObject): Changed to use the
- overload of JSObjectSetProperty above.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Changes to
- match above.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Fixed mispellings of receive.
- (WTR::TestController::_didReceiveMessageFromInjectedBundle): Ditto.
- (WTR::TestController::didReceiveMessageFromInjectedBundle): Ditto.
- * WebKitTestRunner/TestController.h: Ditto.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Ditto.
- * WebKitTestRunner/TestInvocation.h: Ditto.
-
-2010-07-25 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=42193
- Support layoutTestController.dumpEditingDelegates in WebKitTestRunner
-
- Step 2 - add the rest of editing delegates.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::operator<<): Fixed to not crash when range is null.
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::_shouldEndEditing):
- (WTR::InjectedBundlePage::_shouldInsertNode):
- (WTR::InjectedBundlePage::_shouldInsertText):
- (WTR::InjectedBundlePage::_shouldDeleteRange):
- (WTR::InjectedBundlePage::_shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::_shouldApplyStyle):
- (WTR::InjectedBundlePage::_didBeginEditing):
- (WTR::InjectedBundlePage::_didEndEditing):
- (WTR::InjectedBundlePage::_didChange):
- (WTR::InjectedBundlePage::_didChangeSelection):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- (WTR::InjectedBundlePage::didBeginEditing):
- (WTR::InjectedBundlePage::didEndEditing):
- (WTR::InjectedBundlePage::didChange):
- (WTR::InjectedBundlePage::didChangeSelection):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-07-24 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by David Kilzer.
-
- AX: need a layout test testing misspelled words in attributed strings
- https://bugs.webkit.org/show_bug.cgi?id=42899
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (attributedStringForRangeCallback):
- (attributedStringRangeIsMisspelledCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::attributedStringForRange):
- (AccessibilityUIElement::attributedStringRangeIsMisspelled):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::attributedStringForRange):
- (AccessibilityUIElement::attributedStringRangeIsMisspelled):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::attributedStringForRange):
- (AccessibilityUIElement::attributedStringRangeIsMisspelled):
-
-2010-07-23 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/42911> Update ruby tools to work with shallow framework bundles
-
- Reviewed by Mark Rowe.
-
- * Scripts/check-for-inappropriate-files-in-framework: Added
- check for the SHALLOW_BUNDLE environment variable so that the
- script will work with iOS WebKit builds.
- * Scripts/check-for-webkit-framework-include-consistency: Ditto.
-
-2010-07-22 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Eliminate unneeded WKBundleFrameCopyInnerText function from WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=42847
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::operator<<): Replaced the WKStringToUTF8 function with
- a set of overloaded stream operators.
- (WTR::dumpPath): Changed to use ostringstream and return a string.
- (WTR::propertyValue): Added.
- (WTR::propertyObject): Added.
- (WTR::propertyString): Added.
- (WTR::numericWindowPropertyValue): Changed to call propertyValue.
- (WTR::dumpFrameScrollPosition): Removed now unneeded WKStringToUTF8 sequence
- since we now have suitable streaming functions.
- (WTR::dumpFrameText): Use propertyObject and propertyString instead of
- WKBundleFrameCopyInnerText.
- (WTR::dumpDescendantFramesText): Removed now unneeded WKStringToUTF8 sequence
- since we now have suitable streaming functions.
- (WTR::InjectedBundlePage::dump): Ditto.
- (WTR::InjectedBundlePage::willAddMessageToConsole): Ditto.
- (WTR::InjectedBundlePage::willSetStatusbarText): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptAlert): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt): Ditto.
-
-2010-07-22 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Sam Weinig and Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=42193
- Support layoutTestController.dumpEditingDelegates in WebKitTestRunner
-
- Step 1: Add the method, and implement one actual delegate call as proof of concept. No tests
- fixed, but this makes difference one line smaller on many editing tests.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added dumpEditingCallbacks() and setAcceptsEditing().
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpPath): Dump path to a node in a format that's compatible with DumpRenderTree.
- (WTR::operator<<): Print a range.
- (WTR::InjectedBundlePage::InjectedBundlePage): Set editor client in addition to existing
- clients.
- (WTR::InjectedBundlePage::_shouldBeginEditing): The only client method implemented so far.
- (WTR::InjectedBundlePage::shouldBeginEditing): Ditto.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Added a section for editor client
- calls.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpEditingCallbacks):
- (WTR::LayoutTestController::setAcceptsEditing):
- (WTR::LayoutTestController::acceptsEditing):
- (WTR::LayoutTestController::shouldDumpEditingCallbacks):
- Store m_acceptsEditing and m_dumpEditingCallbacks.
-
-2010-07-22 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] QtWebKit needs public API for Notifications.
- https://bugs.webkit.org/show_bug.cgi?id=41413
-
- Update DumpRenderTree and QtTestBrowser to use the new API.
- Add new DRT API to flag that notifications permission requests should be ignored.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::requestPermission):
- (WebCore::WebPage::checkPermission):
- (WebCore::WebPage::cancelRequestsForPermission):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::ignoreDesktopNotificationPermissionRequests):
- (LayoutTestController::checkDesktopNotificationPermission):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::ignoreReqestForPermission):
- * QtTestBrowser/main.cpp:
- (LauncherWindow::LauncherWindow):
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- (WebPage::requestPermission):
- (WebPage::checkPermission):
- (WebPage::cancelRequestsForPermission):
- * QtTestBrowser/webpage.h:
-
-2010-07-22 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs to support layoutTestController.dumpChildFramesAsText
- https://bugs.webkit.org/show_bug.cgi?id=42325
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added dumpChildFramesAsText.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpFrameText): Added.
- (WTR::dumpDescendantFramesText): Added.
- (WTR::InjectedBundlePage::dumpAllFramesText): Added.
- (WTR::InjectedBundlePage::dump): Changed to use the new whatToDump function
- instead of the shouldDumpAsText function, and added a case for AllFramesText.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Added dumpAllFramesText.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Replaced m_dumpAsText with
- m_whatToDump.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Added
- dumpChildFramesAsText. Removed shouldDumpAsText, shouldDumpDOMAsWebArchive,
- and shouldDumpSourceAsWebArchive. Added whatToDump.
-
-2010-07-22 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- Inspired by r63881.
-
- * MiniBrowser/MiniBrowser.vcproj:
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj:
- Removed pre- and post-build events so they will be inherited from the
- vsprops files.
-
-2010-07-21 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs layoutTestController.dumpChildFrameScrollPositions
- https://bugs.webkit.org/show_bug.cgi?id=42548
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::numericWindowPropertyValue): Renamed this and moved it up higher in the file.
- (WTR::dumpFrameScrollPosition): Added argument telling whether to dump the frame name.
- Changed to a file-internal function instead of a member function.
- (WTR::dumpDescendantFrameScrollPositions): Added.
- (WTR::InjectedBundlePage::dumpAllFrameScrollPositions): Added.
- (WTR::InjectedBundlePage::dump): Changed to call dumpAllFrameScrollPositions when
- appropriate. Also streamlined all the WKStringToUTF8 call sites.
- (WTR::InjectedBundlePage::willAddMessageToConsole): Streamlined use of WKStringToUTF8.
- (WTR::InjectedBundlePage::willSetStatusbarText): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptAlert): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm): Ditto.
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt): Ditto.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Updated for above changes.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize
- m_shouldDumpAllFrameScrollPositions.
- (WTR::LayoutTestController::shouldDumpMainFrameScrollPosition): Renamed from
- shouldDumpFrameScrollPositions.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Reorganized the file a
- bit, added dumpChildFrameScrollPositions and shouldDumpAllFrameScrollPositions,
- and renamed shouldDumpFrameScrollPositions to shouldDumpMainFrameScrollPosition.
-
-2010-07-21 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs to support dumping of scroll position
- https://bugs.webkit.org/show_bug.cgi?id=42514
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didClearWindowForFrame): Use JSGlobalContextRef instead of JSContextRef.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::_didClearWindowForFrame): Use JSGlobalContextRef
- instead of JSContextRef.
- (WTR::InjectedBundlePage::dump): Call dumpFrameScrollPosition when appropriate.
- (WTR::numericWindowProperty): Added. Helper for dumpFrameScrollPosition.
- (WTR::InjectedBundlePage::dumpFrameScrollPosition): Added.
- (WTR::InjectedBundlePage::didClearWindowForFrame): Use JSGlobalContextRef
- instead of JSContextRef.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Removed names from
- arguments that simply repeat the argument type. Added dumpFrameScrollPosition.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shouldDumpDOMAsWebArchive): Added. Currently
- returns false.
- (WTR::LayoutTestController::shouldDumpSourceAsWebArchive): Added. Currently
- returns false.
- (WTR::LayoutTestController::shouldDumpFrameScrollPositions): Added. Matches
- the logic in DumpRenderTree.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Updated for above changes.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj: Added property svn:ignore.
-
-2010-07-21 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, adding the WebCore/bindings/generic dir to the list of build dirs.
-
- * wx/build/settings.py:
-
-2010-07-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=42539
- WebKitTestRunner needs to support printing ALERT, PROMPT and CONFIRM messages
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::_willAddMessageToConsole):
- (WTR::InjectedBundlePage::_willSetStatusbarText):
- (WTR::InjectedBundlePage::_willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::_willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::_willRunJavaScriptPrompt):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
- (WTR::InjectedBundlePage::willSetStatusbarText):
- (WTR::InjectedBundlePage::willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-07-21 Adam Roben <aroben@apple.com>
-
- Give InjectedBundle our standard set of configurations (minus the
- *_Cairo variants)
-
- InjectedBundle's Debug_All configuration was the same as is Debug
- configuration, and it was missing a Debug_Internal configuration.
-
- Fixes <http://webkit.org/b/42749> InjectedBundle's build
- configurations are screwy
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj: Added
- debug_internal.vsprops and debug_all.vsprops to the Debug_All
- configuration. Added a Debug_Internal configuration.
-
- * WebKitTestRunner/WebKitTestRunner.sln: Build the Debug_Internal
- variant of InjectedBundle when we're using the Debug_Internal solution
- configuration.
-
-2010-07-21 Adam Roben <aroben@apple.com>
-
- Move InjectedBundle's settings to a vsprops file
-
- This will make it easier to change settings for all configurations,
- and to add new configurations.
-
- Fixes <http://webkit.org/b/42748> InjectedBundle should use vsprops
- files
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops: Added.
- Moved settings here...
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj: ...from
- here.
-
-2010-07-21 Adam Roben <aroben@apple.com>
-
- Give MiniBrowser our standard set of configurations (minus the *_Cairo
- variants)
-
- MiniBrowser already had a configuration called "Release", but it was
- using mostly the same settings as Debug. And its Debug configuration
- was using the settings that Debug_Internal should be using.
-
- Fixes <http://webkit.org/b/42746> MiniBrowser's build configurations
- are screwy
-
- Reviewed by Darin Adler.
-
- * MiniBrowser/MiniBrowser.vcproj: Removed debug_internal.vsprops from
- the Debug configuration. Remove debug.vsprops and
- debug_internal.vsprops from the Release configuration and replace them
- with release.vsprops. Added Debug_Internal and Debug_All
- configurations.
-
-2010-07-21 Adam Roben <aroben@apple.com>
-
- Move MiniBrowser's settings to a vsprops file
-
- This will make it easier to change settings for all configurations,
- and to add new configurations.
-
- MiniBrowser should use vsprops files
- https://bugs.webkit.org/show_bug.cgi?id=42745
-
- Reviewed by Darin Adler.
-
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops: Added. Moved
- settings here...
- * MiniBrowser/MiniBrowser.vcproj: ...from here.
-
-2010-07-21 Adam Roben <aroben@apple.com>
-
- Fix compiler warnings when building MiniBrowser
-
- Also cleaned up the .vcproj a bit.
-
- Fixes <http://webkit.org/b/42743>.
-
- Reviewed by Darin Adler.
-
- * MiniBrowser/MiniBrowser.vcproj: Removed all settings that are
- already defined in .vsprops files. This also fixes a warning about
- /EDITANDCONTINUE being incompatible with /SAFESEH.
-
- * MiniBrowser/win/MiniBrowser.rc: Replaced afxres.h with winresrc.h so
- that we stop getting warnings about ID_FILE_OPEN and ID_FILE_CLOSE
- being redefined. (I think this will also get us closer to building
- with VC++ Express.)
-
-2010-07-20 Sam Weinig <sam@webkit.org>
-
- Reviewed by Jon Honeycutt.
-
- Fix obvious typo.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::setStatusbarText): Need to call ->data() to actually get the string value.
-
-2010-07-20 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] by default, dumpAsText should disable pixel results
- https://bugs.webkit.org/show_bug.cgi?id=42715
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::dumpAsText): disable pixel results, but allow JS to override
-
-2010-07-20 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * MiniBrowser/MiniBrowser.vcproj: Link against the new, shiny
- WebKit.lib instead of the old, dusty WebKit2.lib.
-
-2010-07-20 Adam Roben <aroben@apple.com>
-
- Stop linking WebKitTestRunner against getopt
-
- Use of getopt was removed in r63700.
-
- Fixes <http://webkit.org/b/42714> WebKitTestRunner links against
- getopt, but doesn't need to
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Removed getopt.lib
- from all configurations.
-
-2010-07-20 Adam Roben <aroben@apple.com>
-
- Make run-webkit-tests --webkit-test-runner "work" on Windows
-
- WebKitTestRunner crashes on launch, but at least the scripts build and
- launch it!
-
- Fixes <http://webkit.org/b/42709> run-webkit-tests
- --webkit-test-runner bails with an error on Windows
-
- Reviewed by Anders Carlsson.
-
- * Scripts/build-webkittestrunner: Build WebKitTestRunner.sln on
- Windows.
- * WebKitTestRunner/WebKitTestRunner.sln: Added. Contains the following
- projects (from first-built to last-built): FindSafari, ImageDiff,
- InjectedBundleGenerated, InjectedBundle, WebKitTestRunner.
-
-2010-07-20 Adam Roben <aroben@apple.com>
-
- Change build-webkit back to building WebKit.sln on Windows
-
- WebKit.sln builds all the same projects as WebKit2.sln, and the latter
- is being removed.
-
- Rubber-stamped in advance by Steve Falkenburg.
-
- * Scripts/build-webkit:
-
-2010-07-20 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * MiniBrowser/win/BrowserWindow.cpp: Added missing #include.
-
-2010-07-20 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Geoffrey Garen.
-
- WebScriptObject Should Allow Safely Checking For Key Existence
- https://bugs.webkit.org/show_bug.cgi?id=42613
-
- Normal ObjCController workflow for a WebScriptObject test.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController testHasWebScriptKey:]):
-
-2010-07-20 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Simon Fraser.
-
- https://bugs.webkit.org/show_bug.cgi?id=42118
- Disable compositing/webgl tests if WebGL is not enabled
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-20 Anton Muhin <antonm@chromium.org>
-
- Reviewed by Darin Adler.
-
- Print additional information about exception if failed to connect to apache (in verbose mode).
- https://bugs.webkit.org/show_bug.cgi?id=42627
-
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
-
-2010-07-20 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] only pass --force to gclient sync if explicitly stated
- https://bugs.webkit.org/show_bug.cgi?id=42581
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: bots should
- always pass --force since it's hard to do manual cleanups
- * Scripts/update-webkit-chromium: only pass --force if --force is
- passed in
-
-2010-07-19 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- Paths of generated files should be relative to the build product.
-
-2010-07-19 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Roben.
-
- [Win] Implement LayoutTestController::markerTextForListItem()
- https://bugs.webkit.org/show_bug.cgi?id=37930
-
- Implements DRT support for markerTextForListItem in the Windows port.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::markerTextForListItem): Implemented.
-
-2010-07-19 Jessie Berlin <jberlin@apple.com>
-
- Windows build fix. Unreviewed.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeTestPluginPath):
-
-2010-07-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Jon Honeycutt.
-
- Remove dependency on getopt from WebKitTestRunner.
-
- - Simplify options parsing and eliminate unused options.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::testPluginPath):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformInitialize):
- (WTR::TestController::initializeTestPluginPath):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformInitialize):
- (WTR::TestController::initializeTestPluginPath):
-
-2010-07-19 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] MiniBrowser: Progress indication at address bar
- https://bugs.webkit.org/show_bug.cgi?id=42565
-
- Make possible to see load progress at address bar based on
- QtTestBrowser solution
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::loadProgress):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2010-07-19 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Add MiniBrowser features: urlChanged, titleChanged and from user input load
- https://bugs.webkit.org/show_bug.cgi?id=42564
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserView::load):
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::titleChanged):
- (BrowserWindow::urlChanged):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2010-07-19 Sam Weinig <weinig@apple.com>
-
- Reviewed by Adam Roben.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=42532
- Auto-generate the JS bindings for WebKitTestRunner's script objects.
-
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/DerivedSources.make: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/GetPtr.h: Added.
- * WebKitTestRunner/InjectedBundle/Bindings: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h: Added.
- (WTR::JSWrappable::~JSWrappable):
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.cpp: Added.
- (WTR::JSWrapper::wrap):
- (WTR::JSWrapper::unwrap):
- (WTR::unwrapObject):
- (WTR::JSWrapper::initialize):
- (WTR::JSWrapper::finalize):
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.h: Added.
- (WTR::toJS):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::setStatusbarText):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::wrapperClass):
- (WTR::LayoutTestController::waitUntilDone):
- (WTR::LayoutTestController::makeWindowObject):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::shouldDumpAsText):
- (WTR::LayoutTestController::dumpAsText):
- (WTR::LayoutTestController::shouldDumpStatusCallbacks):
- (WTR::LayoutTestController::dumpStatusCallbacks):
- (WTR::LayoutTestController::waitToDump):
- (WTR::LayoutTestController::testRepaint):
- (WTR::LayoutTestController::repaintSweepHorizontally):
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundleGenerated.vcproj: Added.
- * WebKitTestRunner/win/build-generated-files.sh: Added.
-
-2010-07-19 Mark Rowe <mrowe@apple.com>
-
- Clean up the buildbot configuration a little.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-07-19 Chris Marrin <cmarrin@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=42118
- Disable WebGL on Leopard for now.
-
- LayoutTests fail on some graphics hardware on Leopard because one of the features we use,
- GL_ARB_framebuffer_object, is not universally available in Leopard like it is in
- SnowLeopard. This will allow LayoutTests to pass on Leopard until we add logic to use a
- software OpenGL driver on machines without this support.
-
- * Scripts/build-webkit:
-
-2010-07-19 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Brady Eidson.
-
- Fix MiniBrowser to update URL as you browse
- https://bugs.webkit.org/show_bug.cgi?id=42591
-
- Hook up various loading notifications to update the URL bar in MiniBrowser.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_didStartProvisionalLoadForFrame):
- (_didReceiveServerRedirectForProvisionalLoadForFrame):
- (_didFailProvisionalLoadWithErrorForFrame):
- (_didCommitLoadForFrame):
- (_didFailLoadWithErrorForFrame):
- (-[BrowserWindowController updateProvisionalURLForFrame:]):
- (-[BrowserWindowController didStartProvisionalLoadForFrame:]):
- (-[BrowserWindowController didReceiveServerRedirectForProvisionalLoadForFrame:]):
- (-[BrowserWindowController didFailProvisionalLoadWithErrorForFrame:]):
- (-[BrowserWindowController didFailLoadWithErrorForFrame:]):
- (-[BrowserWindowController didCommitLoadForFrame:]):
-
-2010-07-19 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=42586
- Log all canceled authentication attempts in DumpRenderTree
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:didReceiveAuthenticationChallenge:fromDataSource:]):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
- It's important to know whether an auth sheet appeared. Added logging to "no preset credentials"
- case.
-
-2010-07-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r63671.
- http://trac.webkit.org/changeset/63671
- https://bugs.webkit.org/show_bug.cgi?id=42575
-
- broke windows (Requested by weinig on #webkit).
-
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/DerivedSources.make: Removed.
- * WebKitTestRunner/ForwardingHeaders/wtf/GetPtr.h: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.h: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Removed.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::setStatusbarText):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setWaitToDump):
- (WTR::displayCallback):
- (WTR::dumpAsTextCallback):
- (WTR::dumpStatusCallbacksCallback):
- (WTR::waitUntilDoneCallback):
- (WTR::notifyDoneCallback):
- (WTR::numberOfActiveAnimationsCallback):
- (WTR::pauseAnimationAtTimeOnElementWithIdCallback):
- (WTR::repaintSweepHorizontallyCallback):
- (WTR::testRepaintCallback):
- (WTR::layoutTestControllerObjectFinalize):
- (WTR::LayoutTestController::makeWindowObject):
- (WTR::LayoutTestController::getJSClass):
- (WTR::LayoutTestController::staticFunctions):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpAsText):
- (WTR::LayoutTestController::setDumpAsText):
- (WTR::LayoutTestController::dumpStatusCallbacks):
- (WTR::LayoutTestController::setDumpStatusCallbacks):
- (WTR::LayoutTestController::setTestRepaint):
- (WTR::LayoutTestController::setTestRepaintSweepHorizontally):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-07-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=42532
- Auto-generate the JS bindings for WebKitTestRunner's script objects.
-
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/DerivedSources.make: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/GetPtr.h: Added.
- * WebKitTestRunner/InjectedBundle/Bindings: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h: Added.
- (WTR::JSWrappable::~JSWrappable):
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.cpp: Added.
- (WTR::JSWrapper::wrap):
- (WTR::JSWrapper::unwrap):
- (WTR::unwrapObject):
- (WTR::JSWrapper::initialize):
- (WTR::JSWrapper::finalize):
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.h: Added.
- (WTR::toJS):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::setStatusbarText):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::wrapperClass):
- (WTR::LayoutTestController::waitUntilDone):
- (WTR::LayoutTestController::makeWindowObject):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::shouldDumpAsText):
- (WTR::LayoutTestController::dumpAsText):
- (WTR::LayoutTestController::shouldDumpStatusCallbacks):
- (WTR::LayoutTestController::dumpStatusCallbacks):
- (WTR::LayoutTestController::waitToDump):
- (WTR::LayoutTestController::testRepaint):
- (WTR::LayoutTestController::repaintSweepHorizontally):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-07-19 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- fix chromium linux compile on ubuntu maverick
- https://bugs.webkit.org/show_bug.cgi?id=42528
-
- * Scripts/webkitdirs.pm: add a chomp to eat a newline that breaks the make command line
-
-2010-07-19 Adam Roben <aroben@apple.com>
-
- When dumping a response's MIME type, print its URL's last path
- component rather than its suitable-for-test-result form
-
- This matches the Mac behavior.
-
- Fixes <http://webkit.org/b/42276>
- http/tests/loading/preload-slow-loading.php and
- http/tests/mime/uppercase-mime-type.html fail on Windows
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (urlSuitableForTestResult): Moved code to actually extract the last
- path component from here...
- (lastPathComponent): ...to here.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Added lastPathComponent.
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveResponse): Use the URL's last path
- component, rather than its suitable-for-test-result form, to match
- Mac.
-
-2010-07-19 Anders carlsson <andersca@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2 does not have application cache
- https://bugs.webkit.org/show_bug.cgi?id=42552
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::resetPreferencesToConsistentValues):
- Set up default preferences. Right now just enables the web application cache.
-
- (WTR::TestInvocation::invoke):
- Call resetPreferencesToConsistentValues.
-
- * WebKitTestRunner/TestInvocation.h:
-
-2010-07-19 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Adam Roben.
-
- Fix NewRunWebKitTests to work on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=41180
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- Specifying python explicitly.
-
-2010-07-18 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Add dumping of statusbar text to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=42516
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::_setStatusbarText):
- (WTR::InjectedBundlePage::setStatusbarText):
- Dump the statusbar text.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- Initialize m_dumpStatusCallbacks to false.
-
- (WTR::dumpStatusCallbacksCallback):
- Implement JSC callback.
-
- (WTR::LayoutTestController::staticFunctions):
- Add dumpStatusCallbacks.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpStatusCallbacks):
- (WTR::LayoutTestController::setDumpStatusCallbacks):
- Add setter and getter for m_dumpStatusCallbacks.
-
-2010-07-17 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- Get the test plug-in path and set it on the context.
-
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::initializeInjectedBundlePath):
- Simplify this code by using NSBundle.
-
- (WTR::TestController::testPluginPath):
- Return the test plug-in path.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::testPluginPath):
- Ditto.
-
-2010-07-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Teach webkitpy about queues.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=42492
-
- * Scripts/webkitpy/common/net/statusserver.py:
-
-2010-07-16 Ada Chan <adachan@apple.com>
-
- Reviewed by Alice Liu.
-
- Fix Windows build.
-
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj:
-
-2010-07-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=42482
- <rdar://problem/8197701>
- Add notification of when the BackForwardList changes
- to aid invalidation of Back/Forward related UI elements.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_didStartProvisionalLoadForFrame):
- (_didCommitLoadForFrame):
- (_didFailLoadWithErrorForFrame):
- (_didChangeBackForwardList):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-07-16 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] <input type=number> UI implementation for Windows
- https://bugs.webkit.org/show_bug.cgi?id=42259
-
- * DumpRenderTree/chromium/WebThemeEngineDRT.cpp:
- (WebThemeEngineDRT::paintSpinButton):
- Added. Check state consistency and use existing arrow painting code.
- * DumpRenderTree/chromium/WebThemeEngineDRT.h:
-
-2010-07-16 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=42430
- Make WebKitTestRunner on Windows actually load and run a test
-
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp: Export WKBundleInitialize.
- (WKBundleInitialize):
- * WebKitTestRunner/InjectedBundle/win/InjectedBundle.vcproj: Added. Output is a dll.
- * WebKitTestRunner/TestInvocation.cpp: Create a Windows-style path on Windows
- (WTR::createWKURL):
- * WebKitTestRunner/WebKitTestRunnerPrefix.h: Change check for Windows platform to match
- other existing checks, and avoid including Platform.h
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::registerWindowClass): Added.
- (WTR::PlatformWebView::PlatformWebView): Implemented.
- (WTR::PlatformWebView::~PlatformWebView): Implemented.
- (WTR::PlatformWebView::page): Implemented.
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::initializeInjectedBundlePath): Implemented. Provide build
- configuration specific path to InjectedBundle.dll.
- * WebKitTestRunner/win/TestInvocationWin.cpp:
- (WTR::TestInvocation::runUntil): Implemented.
- * WebKitTestRunner/win/WebKitTestRunner.sln: Added InjectedBundle project.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Cleaned up unnecessary dependencies.
-
-2010-07-16 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make revalidation of back/forward work a little better with page loads
- https://bugs.webkit.org/show_bug.cgi?id=42470
-
- * MiniBrowser/mac/BrowserWindow.xib:
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController validateToolbar]):
- (_didStartProvisionalLoadForFrame):
- (_didCommitLoadForFrame):
- (_didFailLoadWithErrorForFrame):
-
-2010-07-16 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by Dirk Schulze.
-
- Add possibility to dumpAsText and generate a pixel test result
- https://bugs.webkit.org/show_bug.cgi?id=42374
-
- Add optional parameter to setDumpAsText() to allow generating a pixel test result even if dumpAsText mode.
- setDumpAsText(true) will also generate a pixel test result now, when running run-webkit-tests --pixel-tests.
-
- This is needed for the svg/dynamic-updates tests, which don't want render tree dumps but text dumps + a pixel test result.
- At some point DRT changed to not generate pixel test results when using dumpAsText - which makes sense, but breaks the svg/dynamic-updates test.
-
- Implemented for all DRT platforms, except Qt, as it's not clear how arguments to functions like "setDumpAsText" are handled.
- (Qt always dumps pixel tests when using --pixel-tests mode, so it does not break anything)
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpAsTextAndPixelsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpAsTextAndPixels):
- (LayoutTestController::setDumpAsTextAndPixels):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpAsTextAndPixels):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::shouldDumpAsTextAndPixels):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (dump):
-
-2010-07-16 Kent Hansen <kent.hansen@nokia.com>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-16 Shinichiro Hamaji <hamaji@chromium.org>
-
- Another uneviewed attempt to fix build.
-
- Printing test results differ between machines, we should use ImageDiff instead
- https://bugs.webkit.org/show_bug.cgi?id=20011
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createPagedBitmapContext):
-
-2010-07-16 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed tiger build fix.
-
- Printing test results differ between machines, we should use ImageDiff instead
- https://bugs.webkit.org/show_bug.cgi?id=20011
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContext):
- (createBitmapContextFromWebView):
-
-2010-07-15 Shinichiro Hamaji <hamaji@chromium.org>
-
- Unreviewed build fix.
-
- Printing test results differ between machines, we should use ImageDiff instead
- https://bugs.webkit.org/show_bug.cgi?id=20011
-
- * DumpRenderTree/PixelDumpSupport.cpp:
- (dumpWebViewAsPixelsAndCompareWithExpected):
-
-2010-07-15 Shinichiro Hamaji <hamaji@chromium.org>
-
- Reviewed by Darin Adler.
-
- Printing test results differ between machines, we should use ImageDiff instead
- https://bugs.webkit.org/show_bug.cgi?id=20011
-
- * DumpRenderTree/PixelDumpSupport.cpp:
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/PixelDumpSupport.h:
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContext): This function was added to share bitmap context creation code.
- (createBitmapContextFromWebView):
- (createPagedBitmapContext):
-
-2010-07-15 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Kent Tamura.
-
- Pull in pywebsocket-0.5.1
- https://bugs.webkit.org/show_bug.cgi?id=42353
-
- pywebsocket-0.5.1 contains a small bug fix (*) that should fix a worker test
- in Chromium. There is no other functional change.
-
- (*) http://code.google.com/p/pywebsocket/source/detail?r=265
-
- * Scripts/webkitpy/thirdparty/__init__.py: Bump pywebsocket version to 0.5.1.
-
-2010-07-15 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add toolbar and toolbar item validation for MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=42422
-
- * MiniBrowser/MBToolbarItem.h: Added.
- * MiniBrowser/MBToolbarItem.m: Added.
- (-[MBToolbarItem validate]):
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController validateUserInterfaceItem:]):
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/BrowserWindow.xib:
-
-2010-07-15 Victor Wang <victorw@chromium.org>
-
- Unreviewed, add victorw irc nickname to committer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-15 Adam Roben <aroben@apple.com>
-
- Make killing Apache more reliable (on both Mac and Windows)
-
- We previously had two ways of determining whether we had succeeded in
- killing Apache:
- 1) checking the return value of kill(0, $apachePID)
- 2) checking whether Apache's PID file still exists
-
- On Cygwin, Apache doesn't always delete its PID file when it exits,
- making (2) unreliable. We unfortunately misdiagnosed this as an
- impotency of Perl's kill function, which led to r63177 and r63355.
-
- Now that we know that the real problem is that Apache doesn't always
- delete its PID file on Windows, we can make a much better fix: always
- use method (1) to determine whether we've killed Apache.
-
- Fixes <http://webkit.org/b/42415> Killing Apache is unreliable,
- leading to regression test failures (and general annoyance).
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitperl/httpd.pm:
- (openHTTPD): Moved killing code from here to killHTTPD. Added a call
- to delete the PID file in case Apache doesn't do this itself when
- killed. Our later logic relies on the PID file being deleted after
- this point.
- (closeHTTPD): Removed killing logic and changed to just call killHTTPD
- instead. killHTTPD's logic is a bit different from the logic we had
- here, for the reasons stated above.
- (killHTTPD): Added. Code came from openHTTPD.
- (handleInterrupt): Bonus fix for Mac: don't hang when pressing Ctrl-C!
- On Mac, don't try to kill Apache when we receive a signal, as Apache
- will already have been killed by this point (though for some reason
- this isn't detected by our killing logic in killHTTPD). On Cygwin, we
- still need to kill Apache manually.
-
-2010-07-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=42399
- Update MiniBrowser for WKFrameNavigationType
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_decidePolicyForNavigationAction):
- (_decidePolicyForNewWindowAction):
-
-2010-07-15 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Geoff Garen.
-
- http://bugs.webkit.org/show_bug.cgi?id=42406
- Make SunSpider work better with roots.
-
- * Scripts/sunspider-compare-results: fix argument bug
- * Scripts/webkitdirs.pm: look inside JavaScriptCore if jsc isn't top-level.
-
-2010-07-15 Brady Eidson <beidson@apple.com>
-
- Reviewed by Sam Weinig.
-
- Hook up back/forward in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=42397
-
- * MiniBrowser/mac/BrowserWindow.xib:
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController goBack:]):
- (-[BrowserWindowController goForward:]):
-
-2010-07-15 Daniel Bates <dbates@rim.com>
-
- Reviewed by Darin Adler.
-
- [Mac] Implement LayoutTestController::markerTextForListItem()
- https://bugs.webkit.org/show_bug.cgi?id=37929
-
- Implements DRT support for markerTextForListItem in the Mac port.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::markerTextForListItem): Implemented.
-
-2010-07-15 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Update the port names to be more specific. Before this patch,
- port-specific results for Mac would end up in the wrong place.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2010-07-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- WebKit needs a rebaselining tool (finally)
- https://bugs.webkit.org/show_bug.cgi?id=42339
-
- This is a very basic rebaselining tool. It's not
- quite as fancy as chromium's as it will only handle
- updating failing results. It cannot yet handle adding new
- results, or updating results where the results should not
- replace existing results.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py: Added.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py: Added.
-
-2010-07-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r63352.
- http://trac.webkit.org/changeset/63352
- https://bugs.webkit.org/show_bug.cgi?id=42341
-
- Broke plugin-initiate-popup-window.html and plugin-javascript-
- access.html on snow leopard (Requested by abarth on #webkit).
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (handleEventCarbon):
- (handleEventCocoa):
-
-2010-07-14 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Mark Rowe.
-
- Lower WebKitTestRunner notifyDone timeout to 6.0 for now, to make it easier to grind through the failures.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
-
-2010-07-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r63346.
- http://trac.webkit.org/changeset/63346
- https://bugs.webkit.org/show_bug.cgi?id=42295
-
- Broke lots of tests, some of which probably just need new
- results (Requested by aroben on #webkit).
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (urlSuitableForTestResult):
-
-2010-07-14 Adam Roben <aroben@apple.com>
-
- Speed up killing of Apache on Windows
-
- Fixes <http://webkit.org/b/42289> Killing Apache (and thus quitting
- run-webkit-tests) takes a long time on Windows
-
- Reviewed by Darin Adler and Jon Honeycutt.
-
- * Scripts/webkitperl/httpd.pm:
- (closeHTTPD): Use taskkill to kill Apache and its child processes.
- Perl's kill seems ineffectual. We were already using taskkill, but
- only after trying kill 20 times. Since kill never works, let's just
- skip it entirely.
-
-2010-07-14 Johnny Ding <jnd@chromium.org>
-
- Reviewed by Adam Barth.
-
- https://bugs.webkit.org/show_bug.cgi?id=41292
- Add a new parameter to the test plugin to allow to specify a script and a
- mouse/keyboard event. The specified script will be evaluated in the browser
- when the specified event is received by the plugin.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (handleEventCarbon):
- (handleEventCocoa):
-
-2010-07-14 Adam Roben <aroben@apple.com>
-
- Make urlSuitableForTestResult work for http: URLs, too
-
- Fixes <http://webkit.org/b/42276>
- http/tests/loading/preload-slow-loading.php and
- http/tests/mime/uppercase-mime-type.html fail on Windows.
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (urlSuitableForTestResult): Don't bail if the URL starts with http://.
- We want this function to work for those URLs, too!
-
-2010-07-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Oliver Hunt.
-
- Add placebo versions of some repaint test functions to WebKitTestRunner - good enough for non-pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=42227
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize new bool
- members.
- (WTR::LayoutTestController::display): Dummy method.
- (WTR::displayCallback): Call the dummy.
- (WTR::repaintSweepHorizontallyCallback): ditto
- (WTR::testRepaintCallback): ditto
- (WTR::LayoutTestController::staticFunctions): Expose new methods.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::setTestRepaint): Set the flag (which currently does
- nothing).
- (WTR::LayoutTestController::setTestRepaintSweepHorizontally): ditto
-
-2010-07-13 Andreas Kling <andreas.kling@nokia.com>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Darin Adler.
-
- Prevent assertion/duplicate loads for non-deferred subtitute-data loads
-
- https://bugs.webkit.org/show_bug.cgi?id=30879
-
- MainResourceLoader uses the member m_initialRequest to store requests for future
- deferred loads. When doing the actual load in handleDataLoadNow(), we therefore
- have to clear this request so that subsequent entries into the loader will not
- start yet another load.
-
- This can happen as a result of a PageGroupLoadDeferrer going out of scope when
- returning from Chrome::runJavaScriptAlert(), which calls setDeferredLoading(false),
- but only in the case of using both substitute-data and non-deferred main resource
- load together. That's why two new DRT functions were added:
-
- * queueLoadHTMLString()
- * setDeferMainResourceLoad()
-
- The change adds DRT hooks for Mac, Win and Qt for these two functions. For Mac
- and Win the hook uses new SPI in WebDataSource. For Qt a new static member was
- added to the FrameLoaderClientQt and accessed though DumpRenderTreeSupportQt.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (queueLoadHTMLStringCallback):
- (setDeferMainResourceDataLoadCallback):
- (LayoutTestController::staticFunctions):
- (LayoutTestController::queueLoadHTMLString):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::deferMainResourceDataLoad):
- (LayoutTestController::setDeferMainResourceDataLoad):
- * DumpRenderTree/WorkQueueItem.h:
- (LoadHTMLStringItem::LoadHTMLStringItem):
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- * DumpRenderTree/mac/WorkQueueItemMac.mm:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setDeferMainResourceDataLoad):
- (LayoutTestController::queueLoadHTMLString):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/WorkQueueItemQt.cpp:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/qt/WorkQueueItemQt.h:
- (LoadHTMLStringItem::LoadHTMLStringItem):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::willSendRequest):
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
- (LoadHTMLStringItem::invoke):
- * DumpRenderTree/wx/WorkQueueItemWx.cpp:
- (LoadHTMLStringItem::invoke):
-
-2010-07-13 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Nikolas Zimmermann.
-
- Activate test fonts for layout tests in WebKitTestRunner (on Mac)
- https://bugs.webkit.org/show_bug.cgi?id=42153
-
- * WebKitTestRunner/InjectedBundle/ActivateFonts.h: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize): Activate fonts on startup.
- * WebKitTestRunner/InjectedBundle/mac: Added.
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm: Added.
- (WTR::activateFonts): Activate our fonts.
- * WebKitTestRunner/InjectedBundle/win: Added.
- * WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp: Added.
- (WTR::activateFonts): Dummy version.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Copy fonts to bundle;
- add more files.
- * WebKitTestRunner/fonts: Added.
- * WebKitTestRunner/fonts/AHEM____.TTF: Added.
- * WebKitTestRunner/fonts/ColorBits-A.png: Added.
- * WebKitTestRunner/fonts/ColorBits.ttf: Added.
- * WebKitTestRunner/fonts/WebKit Layout Tests 2.ttf: Added.
- * WebKitTestRunner/fonts/WebKit Layout Tests.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher100.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher200.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher300.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher400.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher500.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher600.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher700.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher800.ttf: Added.
- * WebKitTestRunner/fonts/WebKitWeightWatcher900.ttf: Added.
-
-2010-07-13 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Remove check-header-includes, as it didn't turn out to be very useful.
- https://bugs.webkit.org/show_bug.cgi?id=41970
-
- * Scripts/check-header-includes: Removed.
-
-2010-07-12 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Make WebKit2 be built by build-webkit (so it will be built by build.webkit.org bots)
- https://bugs.webkit.org/show_bug.cgi?id=40922
-
- Always build WebKit2 on Windows. Necessary since our WebKit build on
- Windows is packaged into a DLL with WebKit2.
-
- * Scripts/build-webkit: Always build WebKit2 on Windows.
-
-2010-07-12 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Steve Falkenburg.
-
- One http test timing out on Windows can cause all future tests to time out
- https://bugs.webkit.org/show_bug.cgi?id=42146
-
- There have been multiple times on the Windows bots where one http test timing out causes all future
- http tests to time out. This is because the httpd process becomes unresponsive. When an http test
- times out, we should restart httpd on Cygwin to prevent this.
-
- * Scripts/old-run-webkit-tests: If an http test timed out on Cygwin, close httpd and restart it.
- * Scripts/webkitperl/httpd.pm: Add additional logic to closeHTTPD to teach it about taskkill if
- using kill fails.
-
-2010-07-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Remove use of auto_ptr in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=42134
-
- Replaced auto_ptr with PassOwnPtr / OwnPtr.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::WKStringToUTF8):
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::addMessageToConsole):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::WKStringToUTF8):
- (WTR::TestInvocation::didRecieveMessageFromInjectedBundle):
-
-2010-07-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Sam Weinig.
-
- Need support for a WebKit2-specific Skipped list (and initially add accessibility tests to it)
- https://bugs.webkit.org/show_bug.cgi?id=42132
-
- * Scripts/old-run-webkit-tests: In --webkit-test-runner mode, add mac-wk2 to list of
- platform directories.
-
-2010-07-12 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Make WebKitTestRunner resize the view specially for the W3C SVG tests.
- https://bugs.webkit.org/show_bug.cgi?id=42126
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation): Store the path as a C
- string for later use.
- (WTR::TestInvocation::~TestInvocation):
- (WTR::sizeWebViewForCurrentTest): Resize the WebView to the proper
- size, depending on whether this is a W3C SVG test.
- (WTR::TestInvocation::invoke): Call the size function.
- * WebKitTestRunner/TestInvocation.h:
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::resizeTo): Implement.
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::resizeTo): Placeholder.
-
-2010-07-12 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Ensure DRT loads GAIL (Gtk+ module), for a11y tests
- https://bugs.webkit.org/show_bug.cgi?id=38648
-
- Add the GTK_MODULES envvar (set to "gail") to the clean
- environment when running DRT for the Gtk+ port
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-12 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Dirk Schulze.
-
- [GTK] Support pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=31518
-
- Finish support for pixel tests on GTK+.
-
- * DumpRenderTree/PixelDumpSupport.cpp: Remove unecessary RetainPtr include (only
- works on CoreFoundation systems) and add missing cstdio include.
- * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp: Switch to using the MD5 support found
- in JSC library. MD5.cpp and MD5.h are only available for the Windows build.
- (computeMD5HashStringForBitmapContext): The number of bytes per row should be the row stride
- of the image, not the row stride multiplied by the width. Use JSC MD5 implementation to calculate
- the MD5 hash here. According to glibc manpages, using snprintf to build a string in unsupported
- by the ANSI standard and this fails on Linux, so unroll the loop here.
- * DumpRenderTree/cairo/PixelDumpSupportCairo.h: Correct some constructor misbehavior.
- (BitmapContext::BitmapContext): There is no reason to check the value of the
- m_context member in the constructor and it certainly should not be freed. Instead
- just initialize it with the incoming value.
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Fix the order of includes.
- (dump): Actually call dumpWebViewAsPixelsAndCompareWithExpected when it is time to
- dump pixels.
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp: Added.
- (createBitmapContextFromWebView):
- * GNUmakefile.am: Add new files to the build.
-
-2010-07-12 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Remove stray "raise e" that got included in a previous patch. This
- caused the EWS bots to turn red instead of purple when a patch failed
- to apply.
-
- * Scripts/webkitpy/tool/commands/stepsequence.py:
-
-2010-07-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r63101.
- http://trac.webkit.org/changeset/63101
- https://bugs.webkit.org/show_bug.cgi?id=42103
-
- Broke one API test (Requested by xan_ on #webkit).
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-12 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=13075
- XMLHttpRequest with failed authentication should set status to 401
-
- https://bugs.webkit.org/show_bug.cgi?id=6871
- <rdar://problem/3363403> 401 error page is never shown
-
- Fix crashes in Windows DumpRenderTree.
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp: (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
- If we return an error, WebKit will call continueWithoutCredentialForAuthenticationChallenge()
- again on a destroyed sender.
-
-2010-07-12 Adam Roben <aroben@apple.com>
-
- Windows failure-to-launch fix
-
- * DumpRenderTree/win/DumpRenderTree.vcproj: Copy CoreVideo.dll and
- CoreVideo.pdb into WebKitOutputDir in the post-build event, too, like
- we already do for CoreFoundation, CFNetwork, etc.
-
-2010-07-12 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Ensure DRT loads GAIL (Gtk+ module), for a11y tests
- https://bugs.webkit.org/show_bug.cgi?id=38648
-
- Add the GTK_MODULES envvar (set to "gail") to the clean
- environment when running DRT for the Gtk+ port
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-09 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=13075
- XMLHttpRequest with failed authentication should set status to 401
-
- https://bugs.webkit.org/show_bug.cgi?id=6871
- <rdar://problem/3363403> 401 error page is never shown
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:didReceiveAuthenticationChallenge:fromDataSource:]):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::didReceiveAuthenticationChallenge):
- Do respond even if handlesAuthenticationChallenges() is false. Pretend that the user pressed
- the Cancel button.
-
-2010-07-12 Andreas Kling <andreas.kling@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- [Qt] Add location bar (Ctrl+L) shortcut in QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=42082
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::createChrome):
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::openLocation):
- * QtTestBrowser/mainwindow.h:
-
-2010-07-12 Adam Roben <aroben@apple.com>
-
- Make the Python autoinstaller not use a dead SourceForge server
-
- Fixes <http://webkit.org/b/42080> webkit-patch is broken due to
- offline SourceForge server
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/thirdparty/__init__.py: Use
- surfnet.dl.sourceforge.net instead of hivelocity.dl.sourceforge.net,
- which seems to be down.
-
-2010-07-12 Adam Roben <aroben@apple.com>
-
- Make run-webkit-tests print how many tests timed out when exiting
- early
-
- The number of timed-out tests is taken into account when deciding
- whether to exit early. Leaving it out of the output just makes the
- script look buggy (because it might say something like "Exiting early
- after 0 crashes.").
-
- Fixes <http://webkit.org/b/42077> run-webkit-tests prints confusing
- messages when exiting early due to crashes and time-outs
-
- Reviewed by Anders Carlsson.
-
- * Scripts/old-run-webkit-tests:
- (stopRunningTestsEarlyIfNeeded): When stopping, print the number of
- timed-out tests, too.
-
-2010-07-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Implement animation-related methods for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=42053
-
- Implemented numberOfActiveAnimatiosn and pauseAnimationAtTimeOnElementWithId. Many
- animation tests were hanging otherwise.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::numberOfActiveAnimations):
- (WTR::LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (WTR::numberOfActiveAnimationsCallback):
- (WTR::pauseAnimationAtTimeOnElementWithIdCallback):
- (WTR::LayoutTestController::staticFunctions):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2010-07-11 Daniel Bates <dbates@rim.com>
-
- Reviewed by David Kilzer.
-
- Enable executable support for svn-apply and svn-unapply
- https://bugs.webkit.org/show_bug.cgi?id=39409
-
- Connect up the Git and SVN executable bit support in parseDiff() so that
- executable bit changes are propagated via the returned diff hash to the
- patch function in svn-apply and svn-unapply.
-
- * Scripts/VCSUtils.pm:
- - Modified parseDiff() to call parseSvnDiffProperties when
- it finds the start of an SVN property change diff.
- - Removed FIXME comment above parseSvnDiffProperties() since
- it is now being used by parseDiff().
- - Export method scmToggleExecutableBit() now that we added the
- executableBitDelta hash key. (This should have been exported
- when we added this function in Bug #38423 <https://bugs.webkit.org/show_bug.cgi?id=38423>).
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated results for:
- "rename (with executable bit change)"
- - Test value of executableBitDelta (now that we have support).
- "SVN: binary file (isBinary true)"
- - Remove the property change diff from svnConvertedText. We plan
- to remove svnConvertedText in the future. So, we decided
- against adding such support to any new code, such as the
- property parsing routines. Therefore, we do not keep SVN
- converted text for property change diffs.
- - Added unit tests:
- "SVN: file change diff with property change diff"
- "SVN: file change diff, followed by property change diff on different file"
- "SVN: property diff, followed by file change diff"
- "SVN: copied file with property change"
- "SVN: two consecutive property diffs"
- "SVN: binary file with executable bit change"
- "SVN: binary file followed by property change on different file"
- "SVN: binary file followed by file change on different file"
- "SVN: file change diff with property change, followed by property change diff"
- "SVN: file change diff with property change, followed by file change diff"
-
-2010-07-11 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Implement waitUntilDone and notifyDone for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=42049
-
- With this fix, most of the DOM tests pass.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didCreatePage): Track the main page. Not
- a great way to do it in the future case where we may get multiple
- pages - we really need a way to send it over from the ui process.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::page): A way to get the main page.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Initialize m_isLoading to false.
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame): Track that we
- are loading.
- (WTR::InjectedBundlePage::dump): Factor into a method so this can be
- called by the layout test controller. Also, cancel any pending watchdogs.
- (WTR::InjectedBundlePage::didFinishLoadForFrame): Note that we are done loading.
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame): Ditto.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (WTR::InjectedBundlePage::isLoading): A way to track if we are loading.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize m_waitToDump
- to false.
- (WTR::LayoutTestController::invalidateWaitToDumpWatchdog): Invalidate
- the watchdog.
- (WTR::waitUntilDoneWatchdogFired): Static helper for the watchdog timer.
- (WTR::LayoutTestController::setWaitToDump): Set the flag.
- (WTR::LayoutTestController::waitToDumpWatchdogTimerFired): Handle the case
- where waitUntilDone times out.
- (WTR::LayoutTestController::notifyDone): Dump, if loading is done.
- (WTR::waitUntilDoneCallback): JS glue for waitUntilDone.
- (WTR::notifyDoneCallback): JS glue for notifyDone.
- (WTR::LayoutTestController::staticFunctions): Add waitUntilDone and notifyDone
- to the layoutController.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::waitToDump): Inline method to get the wait state.
-
-2010-07-09 Brian Weinstein <bweinstein@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Windows testers running Windows 7 were hanging during test_kill_process. Changing the
- number of attempts from 3 to 10 fixes the problem on the new bots (and doesn't seem to
- slow down the tests).
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2010-07-09 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Mac build fix
- https://bugs.webkit.org/show_bug.cgi?id=41967
-
- Adding file PluginObjectMac.mm and frameworks Cocoa and QuartzCore.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2010-07-09 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] [WebKit2] Add navigation actions to MiniBrowser toolbar
- https://bugs.webkit.org/show_bug.cgi?id=41966
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
-
-2010-07-09 Leon Clarke <leonclarke@google.com>
-
- Reviewed by Adam Barth.
-
- add support for link prefetching
- https://bugs.webkit.org/show_bug.cgi?id=3652
-
- * Scripts/build-webkit:
-
-2010-07-09 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- r63004 broke some python tests
- https://bugs.webkit.org/show_bug.cgi?id=42007
-
- AbstractStep now checks options.no_squash and options.squash, so
- they needed to have real values. Mock would return an object for those,
- which would then act as if the values were True.
-
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
- * Scripts/webkitpy/tool/steps/validatereviewer_unittest.py:
-
-2010-07-09 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- --squash should go away and become the default
- https://bugs.webkit.org/show_bug.cgi?id=39624
-
- If there are local commits and working copy changes, then prompt the user
- whether to continue. Setting git config webkit-patch.commit_should_always_squash
- true bypasses the prompt.
-
- --git-commit=HEAD.. operates on working copy changes only.
- --git-commit=committish operates on a range of commits as a single commit.
- e.g. --git-commit=HEAD only operates on the HEAD commit.
- --git-commit=HEAD~4..HEAD~2 will operate on HEAD~3 and HEAD~2 as a single commit.
-
- --no-squash and --squash are left in with descriptive error messages if used.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/api_unittest.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/common/net/rietveld.py:
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/style/optparser.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/checkstyle_unittest.py: Removed.
- * Scripts/webkitpy/tool/steps/commit.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2010-07-09 Mark Rowe <mrowe@apple.com>
-
- Add two new Windows test build slaves.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2010-07-09 Albert J. Wong <ajwong@chromium.org>
-
- Reviewed by David Levin.
-
- rebaseline_chromium_webkit_tests missing --use_drt option on linux
- https://bugs.webkit.org/show_bug.cgi?id=41985
-
- This adds in the --use_drt option for rebaseline_chromium_webkit_tests
- so that it works on linux. This is essentially a "compile-fix" for the
- script.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-07-09 Nico Weber <thakis@chromium.org>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-09 David Kilzer <ddkilzer@apple.com>
-
- Revert "<http://webkit.org/b/41788> commit-log-editor: wrong ChangeLog read when invoked from subdir with git"
-
- This reverts commit r62692.
-
- * Scripts/commit-log-editor:
-
-2010-07-08 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- cleanup json_results_generator dependencies so that non-layout-tests can also use it safely
- https://bugs.webkit.org/show_bug.cgi?id=38693
-
- Introduced a new base class JSONResultsGeneratorBase that doesn't
- have any dependency on layout_tests packages.
- Turned JSONResultsGenerator into a wrapper class of the base class
- so that the old code can work with it during the cleanup.
-
- Added json_results_generator_unittest.py.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py: Added
-
-2010-07-09 Abhishek Arya <inferno@chromium.org>
-
- Unreviewed.
-
- Marking myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-09 Kenneth Rohde Christiansen <kenneth.christiansen@openbossa.org>
-
- Reviewed by Antti Koivisto.
-
- Implement MiniBrowser for Qt.
- https://bugs.webkit.org/show_bug.cgi?id=40233
-
- * MiniBrowser/qt/BrowserWindow.cpp: Added.
- (createNewPage):
- (BrowserView::BrowserView):
- (BrowserView::resizeEvent):
- (BrowserView::load):
- (BrowserView::view):
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::load):
- (BrowserWindow::changeLocation):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h: Added.
- (BrowserView::~BrowserView):
- * MiniBrowser/qt/MiniBrowser.pro: Added.
- * MiniBrowser/qt/main.cpp: Added.
- (main):
-
-2010-07-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Introduce the Qt autotest launcher.
-
- Qt autotests should be executed more frequently, ideally by the Qt
- build bot. This is the first step to provide the tests more accessible.
-
- [Qt] It should be easier to run all Qt's autotests.
- https://bugs.webkit.org/show_bug.cgi?id=31625
-
- * Scripts/run-qtwebkit-tests: Added.
-
-2010-07-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue should merge to TOT when checkout needs update
- https://bugs.webkit.org/show_bug.cgi?id=41944
-
- There are a bunch of different designs that are possible here. This
- one merges to top of tree by cleaning out the working copy and
- re-applying the patch. Once you decide to merge that way, you need to
- decide who's going to retry. In this patch, we retry in the child
- process instead of plumbing the failure reason to the master process.
-
- This patch is difficult to test end-to-end, but hopefully it will work.
- :)
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/multicommandtool.py:
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
-
-2010-07-09 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add a script to check for unnecessary includes in header files.
- https://bugs.webkit.org/show_bug.cgi?id=41894
-
- * Scripts/check-header-includes: Added.
-
-2010-07-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add --html5-treebuilder option to run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=41922
-
- We're down to one or two regressions in the HTML5lib test suite. It's
- getting to be time to look at fixing LayoutTests.
-
- * Scripts/old-run-webkit-tests:
-
-2010-07-08 Simon Fraser <simon.fraser@apple.com>
-
- Fix Tiger plugin test failures; the #ifdefs were incorrect, resulting
- in the drawing model never getting set on Tiger.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
-
-2010-07-08 Aaron Boodman <aa@chromium.org>
-
- Reviewed by Timothy Hatcher.
-
- Add the ability for user scripts and user styles to affect just the top frame.
-
- https://bugs.webkit.org/show_bug.cgi?id=41529
-
- * DumpRenderTree/LayoutTestController.h: Added new allFrames param.
- * DumpRenderTree/LayoutTestController.cpp: Ditto.
- (addUserScriptCallback):
- (addUserStyleSheetCallback):
- * DumpRenderTree/chromium/LayoutTestController.cpp: Ditto.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Ditto.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Ditto.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Ditto.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: Ditto.
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
-
-2010-07-08 Adele Peterson <adele@apple.com>
-
- Reviewed by Jon Honeycutt, Adam Roben, and Darin Adler.
-
- Test infrastructure for https://bugs.webkit.org/show_bug.cgi?id=41721
- <rdar://problem/8158561> Missing plug-in indicator should have a pressed state
-
- Log when the missing plugin button is pressed.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:didPressMissingPluginButton:]):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::QueryInterface):
- (UIDelegate::createWebViewWithRequest):
- (UIDelegate::drawBackground):
- (UIDelegate::decidePolicyForGeolocationRequest):
- (UIDelegate::didPressMissingPluginButton):
- * DumpRenderTree/win/UIDelegate.h:
-
-2010-07-08 Simon Fraser <simon.fraser@apple.com>
-
- Fix the Tiger build.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
-
-2010-07-08 Simon Fraser <simon.fraser@apple.com>
-
- Fix windows build.
-
- #ifdef code for Mac.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
-
-2010-07-08 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Allow the TestPlugin to use Core Animation rendering for testing
- https://bugs.webkit.org/show_bug.cgi?id=41872
-
- Add the ability for the TestPlugin to use the CoreAnimation rendering model
- when available, based on the "drawingmodel" attribute of the embed tag:
- drawingmodel="coreanimation"
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Add PluginObjectMac.mm
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Add some macros so we can detect
- when building on Tiger. Add a void* coreAnimationLayer member.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm: Added.
- (createCoreAnimationLayer): Obj-C method to create the CALayer.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New): Look for the drawingmodel attribute to decide which drawing
- model to use.
- (NPP_Destroy): Release the CALayer if we have one.
- (NPP_GetValue): Return the retained CALayer.
-
-2010-07-08 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Support pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=31518
-
- Convert this file from CRLF to NL line endings. It will soon
- be used on more than just the WinCairo platform.
-
- * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
- (writeFunction):
- (printPNG):
- (computeMD5HashStringForBitmapContext):
- (dumpBitmap):
-
-2010-07-08 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Darin Adler.
-
- Enable Data Execution Prevention for our test harnesses on Windows
- https://bugs.webkit.org/show_bug.cgi?id=41882
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2010-07-07 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add DRT support for pageProperty etc.
-
- https://bugs.webkit.org/show_bug.cgi?id=41584
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageSizeAndMarginsInPixels):
- (LayoutTestController::pageProperty):
- (LayoutTestController::addUserStyleSheet):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-07-08 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Remove a warnings from the ImageDiff build by using the proper
- printf format string for the gsize data type.
-
- * DumpRenderTree/gtk/ImageDiff.cpp:
- (printImage): Use the proper printf format string for the gsize data type.
-
-2010-07-08 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=41653
- Add new WebKitTestRunner project for Windows
-
- * WebKitTestRunner/WebKitTestRunnerPrefix.h:
- Similar to how it's done in DumpRenderTree, define max and min early
- on so that they don't get replaced by a macro requiring 2 arguments.
-
- * WebKitTestRunner/win: Added.
- * WebKitTestRunner/win/WebKitTestRunner.sln: Added.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Added.
- * WebKitTestRunner/win/main.cpp: Added.
- (main): Implemented
-
- Added these files with stubbed out functions:
- * WebKitTestRunner/win/PlatformWebViewWin.cpp: Added.
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::page):
- * WebKitTestRunner/win/TestControllerWin.cpp: Added.
- (WTR::TestController::initializeInjectedBundlePath):
- * WebKitTestRunner/win/TestInvocationWin.cpp: Added.
- (WTR::TestInvocation::runUntil):
-
-2010-07-07 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Implement ImageDiff and add it to the build system
- https://bugs.webkit.org/show_bug.cgi?id=41779
-
- Add the initial implementation of the ImageDiff tool for the GTK+
- port. This is an essential tool for doing pixel tests. The implementation
- is based on the Mac and Chromium ports.
-
- * DumpRenderTree/gtk/ImageDiff.cpp: Added.
- (readPixbufFromStdin): Added.
- (differenceImageFromDifferenceBuffer): Ditto.
- (calculateDifference): Ditto.
- (printImage): Ditto.
- (printImageDifferences): Ditto.
- (main): Ditto.
- * GNUmakefile.am: Add ImageDiff to the WebKitTools build scripts.
-
-2010-07-08 Jay Civelli <jcivelli@chromium.org>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-08 Adam Roben <aroben@apple.com>
-
- Make Windows stop running tests from platform/mac
-
- r62742 made a change (at my suggestion!) that caused us to start
- looking for tests in platform/mac, rather than just looking for
- expected results in platform/mac. This patch just undoes that part of
- r62742.
-
- Fixes <http://webkit.org/b/41855> REGRESSION (r62742): Windows runs
- tests from platform/mac, but shouldn't
-
- Reviewed by Antti Koivisto and Anders Carlsson.
-
- * Scripts/old-run-webkit-tests:
- (top level): Removed "mac-snowleopard" and "mac" from @winPlatforms,
- so we won't look in those directories for tests to run.
- (expectedDirectoryForTest): Added back code from pre-r62742 to look in
- platform/mac-snowleopard and platform/mac for expected results.
-
-2010-07-08 Antonio Gomes <tonikitoo@webkit.org>
-
- Unreviewed. Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Update my e-mail in committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-07-07 Daniel Bates <dbates@rim.com>
-
- Reviewed by Dumitru Daniliuc.
-
- VCSUtils.pm complains about uninitialized value $newLine
- https://bugs.webkit.org/show_bug.cgi?id=41333
-
- Fixes an issue where VCSUtils::fixChangeLogPatch() may read off the end of
- an array when fixing a change log entry that overlaps with an earlier
- entry. In particular, when a patch contains a change log entry inserted
- earlier in the change log file, but after an entry with the same author
- and date.
-
- * Scripts/VCSUtils.pm:
- - Added for-loop constraint to fixChangeLogPatch() so that it does not
- read off the end of the @overlappingLines array.
- * Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl: Added unit test.
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Comment out a part of TestNetscapePlugin that caused tests to fail on Tiger and Leopard.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
-
-2010-07-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Adam Barth.
-
- [DRT/Chromium] Support for indeterminate checkbox
- https://bugs.webkit.org/show_bug.cgi?id=41747
-
- Import http://src.chromium.org/viewvc/chrome?view=rev&revision=51499
-
- * DumpRenderTree/chromium/WebThemeControlDRT.cpp:
- (WebThemeControlDRT::draw):
- * DumpRenderTree/chromium/WebThemeControlDRT.h:
- (WebThemeControlDRT::):
- * DumpRenderTree/chromium/WebThemeEngineDRT.cpp:
- (WebThemeEngineDRT::paintButton):
-
-2010-07-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Clean up MiniBrowser Xcode project.
-
- - Use xcconfig files.
- - Rename plists to canonical Info.plist
- - Remove localizations.
-
- * MiniBrowser/Configurations: Added.
- * MiniBrowser/Configurations/Base.xcconfig: Added.
- * MiniBrowser/Configurations/DebugRelease.xcconfig: Added.
- * MiniBrowser/Configurations/MiniBrowser.xcconfig: Added.
- * MiniBrowser/Configurations/WebBundle.xcconfig: Added.
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/WebBundle-Info.plist: Removed.
- * MiniBrowser/mac/BrowserStatisticsWindowController.m:
- (-[BrowserStatisticsWindowController initWithThreadedWKContextRef:processWKContextRef:]):
- * MiniBrowser/mac/BrowserWindow.xib: Added.
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController initWithPageNamespace:]):
- * MiniBrowser/mac/English.lproj: Removed.
- * MiniBrowser/mac/English.lproj/BrowserWindow.xib: Removed.
- * MiniBrowser/mac/English.lproj/InfoPlist.strings: Removed.
- * MiniBrowser/mac/English.lproj/MainMenu.xib: Removed.
- * MiniBrowser/mac/Info.plist: Copied from MiniBrowser/mac/MiniBrowser-Info.plist.
- * MiniBrowser/mac/MainMenu.xib: Added.
- * MiniBrowser/mac/MiniBrowser-Info.plist: Removed.
- * MiniBrowser/mac/WebBundle/Info.plist: Copied from MiniBrowser/WebBundle-Info.plist.
-
-2010-07-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix two regressions
- https://bugs.webkit.org/show_bug.cgi?id=41745
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
- Repaint three times to fix svg/W3C-SVG-1.1/struct-use-01-t.svg
- and svg/custom/use-on-g-containing-foreignObject-and-image.svg
- though test_shell does it twice. Probably DRT needs it because
- DRT delays painting as possible.
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Try to fix build.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_destroy_stream):
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Try to fix the GTK+ and Qt test failures by merging the newly added code from TestNetscapePlugin/main.cpp
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_stream):
- (webkit_test_plugin_destroy_stream):
- (webkit_test_plugin_write_ready):
- (webkit_test_plugin_write):
-
-2010-07-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Don't hard code the Mac OS X 10.6 SDK for MiniBrowser.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Use the correct XP_MACOSX define instead of XP_MAC. This was causing test failures on some platforms.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (NPP_HandleEvent):
-
-2010-07-07 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- Need to have a way to specify different results for Windows XP and 7
- https://bugs.webkit.org/show_bug.cgi?id=41776
-
- Add the ability to have platform/win-xp, platform/win-vista, and platform/win-7
- subdirectories, so we can have different results for tests on Windows XP, Windows
- Vista, and Windows 7.
-
- Windows XP will try the order: win-xp, win-vista, win-7, win, mac-snowleopard, mac.
- Windows Vista will try the order: win-vista, win-7, win, mac-snowleopard, mac.
- Windows 7 will try the order: win-7, win, mac-snowleopard, mac.
-
- This matches the behavior of the mac.
-
- * Scripts/old-run-webkit-tests: Add multiple platforms for Windows, and if we are on XP
- or Vista, try looking in other win-* subdirectories before win.
- * Scripts/webkitdirs.pm: Add some helper functions to determine what version of Windows
- we are running.
-
-2010-07-07 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Remove ASSERT_NOT_REACHED in some functions
- https://bugs.webkit.org/show_bug.cgi?id=41753
-
- The original code of the following functions in
- test_shell_devtools_client.cc have NOTIMPLEMENTED(), not
- ASSERT_NOT_REACHED(). The program shouldn't stop at these
- functions.
-
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::activateWindow):
- (DRTDevToolsClient::closeWindow):
- (DRTDevToolsClient::dockWindow):
- (DRTDevToolsClient::undockWindow):
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Test that we call NPP_DestroyStream if a plug-in returns -1 from its NPP_Write function
- https://bugs.webkit.org/show_bug.cgi?id=41821
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginGetProperty):
- (pluginSetProperty):
- (pluginAllocate):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- Add and initialize the returnNegativeOneFromWrite property.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_NewStream):
- Set the stream type to NP_NORMAL so we'll get write callbacks.
-
- (NPP_DestroyStream):
- Treat the onstreamdestroy attribute as a function name and not a string.
-
- (NPP_WriteReady):
- Have this return a nonzero value.
-
- (NPP_Write):
- If returnNegativeOneFromWrite is true return -1.
-
-2010-07-07 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix for machines with both MSVC 2005 and 2008 installed. Ensures the
- latest version is selected by default, and allows the version to be specified.
-
- * wx/build/settings.py:
-
-2010-07-07 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: TextArea should return AXSelectedTextRange of 0,0 if the cursor is not in the text area
- https://bugs.webkit.org/show_bug.cgi?id=41810
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::selectedTextRange):
-
-2010-07-07 Martin Robinson <mrobinson@igalia.com>
-
- Unreviewed.
-
- Build fix after r62700.
-
- * GNUmakefile.am: Update the source list to reflect the new TestNetscapePlugIn
- source file locations.
-
-2010-07-07 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by David Levin.
-
- change --exit-after-n-crashes to --exit-after-n-crashes-or-timeouts
- https://bugs.webkit.org/show_bug.cgi?id=41814
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/old-run-webkit-tests:
-
-2010-07-07 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by David Levin.
-
- add --exit-after-n-crashes to run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=41811
-
- Change the bots at build.webkit.org to use --exit-after-n-crashes
- instead of --exit-after-n-failures since we want to be able to have
- more than 20 failures on those bots, but more than 20 crashes means
- something should be rolled out.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-07-07 Brian Weinstein <bweinstein@apple.com>
-
- Fix the Windows build by removing win/TestNetscapePlugin/main.cpp from the
- TestNetscapePlugin project, because this was removed from the tree.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Simon Fraser.
-
- Unify Mac and Windows TestNetscapePlugin main.cpp files
- https://bugs.webkit.org/show_bug.cgi?id=41798
-
- * DumpRenderTree/DumpRenderTree.sln:
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (strcasecmp):
- (NP_Initialize):
- (NP_GetEntryPoints):
- (NP_Shutdown):
- (NPP_New):
- (NPP_Destroy):
- (NPP_HandleEvent):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp: Removed.
-
-2010-07-07 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix. pageProperty needs to return a value.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::pageProperty):
-
-2010-07-07 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/41788> commit-log-editor: wrong ChangeLog read when invoked from subdir with git
-
- Reviewed by Anders Carlsson.
-
- For both svn and git, commit-log-editor is invoked from the root
- of the working directory. Unlike svn, git returns a list of
- changed files that are relative to the directory where the
- command was invoked. This caused the ChangeLog file in the root
- directory to be read instead of the ChangeLog in the current
- directory.
-
- The fix is to use $ENV{PWD} as the base directory when fixing
- the path to the ChangeLog files. With svn, this has no net
- effect since $ENV{PWD} is the root of the working directory and
- the ChangeLog paths are already relative to that directory.
- With git, $ENV{PWD} is the directory that the commit was invoked
- from, which fixes the ChangeLog paths so that the correct files
- are read when creating the commit log entry.
-
- Note that the call to makeFilePathRelative() was supposed to
- address this issue, but it doesn't because (a) it does nothing
- with svn working directories by design, and (b) it does nothing
- with git working directories because it's invoked when the
- current directory is the root of the working directory, thus
- giving no relative path.
-
- * Scripts/commit-log-editor: Removed call to
- makeFilePathRelative() since since it does nothing. Moved code
- to fix up $changeLog path so that it's fixed before trying to
- open the file, and use $ENV{PWD} as the base path. Also use
- canonicalizePath() to clean up paths with "../" in them.
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Another attempt at fixing the Qt build.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Try to fix Qt build.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2010-07-07 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Simon Fraser.
-
- Rename TestNetscapePlugin.subproj and move platform specific files to subdirectories
- https://bugs.webkit.org/show_bug.cgi?id=41781
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp.
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.h.
- * DumpRenderTree/TestNetscapePlugIn/TestObject.cpp: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.cpp.
- * DumpRenderTree/TestNetscapePlugIn/TestObject.h: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/TestObject.h.
- * DumpRenderTree/TestNetscapePlugIn/mac/Info.plist: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/Info.plist.
- * DumpRenderTree/TestNetscapePlugIn/main.cpp: Renamed from WebKitTools/DumpRenderTree/TestNetscapePlugIn.subproj/main.cpp.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.def: Renamed from WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.def.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Renamed from WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.rc.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin_debug.def: Renamed from WebKitTools/DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin_debug.def.
- * DumpRenderTree/TestNetscapePlugIn/win/resource.h: Renamed from WebKitTools/DumpRenderTree/win/TestNetscapePlugin/resource.h.
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj: Removed.
-
-2010-07-07 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed trivial fix.
-
- Remove DUMPRENDERTREE_TEMP environment variable from NRWT
- which was checked in accidentally in r62635.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-07-07 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- Pass port specific environment to server process.
- https://bugs.webkit.org/show_bug.cgi?id=41593
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2010-07-06 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Fix a wrong dup detection of rebaseline-chromium-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=41644
-
- rebaseline-chromium-webkit-tests used ImageDiff with 0.1%
- tolerance. We don't need tolerance for rebaseline.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- Add optional tolerance parameter to diff_image().
- * Scripts/webkitpy/layout_tests/port/test.py:
- Add optional tolerance parameter to diff_image().
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- Add optional tolerance parameter to diff_image(), and pass it to ImageDiff command.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- diff_files() always calls diff_image() with tolerance=0.
- diff_files() is used only by rebaseline-chromium-webkit-tests.
-
-2010-07-06 Sam Weinig <sam@webkit.org>
-
- Fix MiniBrowser build.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
-
-2010-07-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add support for dumping the contents of messages to the console to WebKitTestRunner
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::_addMessageToConsole):
- (WTR::InjectedBundlePage::addMessageToConsole):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2010-07-06 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41708
- Add dumpAsText support for WebKitTestRunner
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::reset): Reset the LayoutTestController for each test.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFinishLoadForFrame): Use the new WKBundleFrameCopyInnerText
- API to dump the main frames text.
-
-2010-07-06 Darin Adler <darin@apple.com>
-
- Fix Chromium build.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didCreateDataSource): Call leakPtr instead of release.
- (WebViewHost::didNavigateWithinPage): Ditto.
- (WebViewHost::updateURL): Ditto.
-
-2010-07-06 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] build-webkit should not run autogen.sh unconditionally
- https://bugs.webkit.org/show_bug.cgi?id=41704
-
- * Scripts/webkitdirs.pm: Only run autogen.sh during a build if GNUmakefile
- doesn't exist. Autotools should re-run autogen.sh when necessary. Also do
- some very minor cleanup.
-
-2010-07-06 Darin Adler <darin@apple.com>
-
- Try to fix Chromium build.
-
- * DumpRenderTree/chromium/WebViewHost.cpp: Added include of PassOwnPtr.h.
-
-2010-07-06 Darin Adler <darin@apple.com>
-
- Fix build.
-
- * WebKitAPITest/TestsController.cpp:
- (WebKitAPITest::TestsController::addTest): Use leakPtr instead of release.
-
-2010-07-06 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Kent Tamura.
-
- Bug 40558 - [DRT/Chromium] Upstream TestShellDevTools for Chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=40558
-
- Upstream DevTools for Chromium DRT.
- (original Chromium files rev. 51287)
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp: Added.
- (DRTDevToolsAgent::DRTDevToolsAgent):
- (DRTDevToolsAgent::setWebView):
- (DRTDevToolsAgent::sendMessageToFrontend):
- (DRTDevToolsAgent::forceRepaint):
- (DRTDevToolsAgent::runtimeFeatureStateChanged):
- (DRTDevToolsAgent::injectedScriptSource):
- (DRTDevToolsAgent::injectedScriptDispatcherSource):
- (DRTDevToolsAgent::debuggerScriptSource):
- (DRTDevToolsAgent::asyncCall):
- (DRTDevToolsAgent::call):
- (DRTDevToolsAgent::webDevToolsAgent):
- (DRTDevToolsAgent::attach):
- (DRTDevToolsAgent::detach):
- (DRTDevToolsAgent::setTimelineProfilingEnabled):
- (DRTDevToolsAgent::evaluateInWebInspector):
- (DRTDevToolsAgent::dispatchMessageLoop):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h: Added.
- (DRTDevToolsAgent::~DRTDevToolsAgent):
- (DRTDevToolsAgent::hostIdentifier):
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp:
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.h:
- (DRTDevToolsCallArgs::DRTDevToolsCallArgs):
- (DRTDevToolsCallArgs::~DRTDevToolsCallArgs):
- (DRTDevToolsCallArgs::callsCount):
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp: Added.
- (DRTDevToolsClient::DRTDevToolsClient):
- (DRTDevToolsClient::~DRTDevToolsClient):
- (DRTDevToolsClient::sendMessageToAgent):
- (DRTDevToolsClient::sendDebuggerCommandToAgent):
- (DRTDevToolsClient::activateWindow):
- (DRTDevToolsClient::closeWindow):
- (DRTDevToolsClient::dockWindow):
- (DRTDevToolsClient::undockWindow):
- (DRTDevToolsClient::asyncCall):
- (DRTDevToolsClient::call):
- (DRTDevToolsClient::allMessagesProcessed):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/EventSender.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::setTimelineProfilingEnabled):
- (LayoutTestController::evaluateInWebInspector):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::~TestShell):
- (TestShell::createDRTDevToolsClient):
- (TestShell::showDevTools):
- (TestShell::closeDevTools):
- (TestShell::runFileTest):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::drtDevToolsAgent):
- (TestShell::drtDevToolsClient):
- * DumpRenderTree/chromium/config.h:
-
-2010-07-06 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>
-
- Reviewed by Eric Seidel.
-
- Don't pass image hash to DRT when pixel tests are disabled.
- https://bugs.webkit.org/show_bug.cgi?id=41597
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
-
-2010-07-05 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION(r60652): WebKitTools/Scripts/ensure-valid-python should cleanup temporary directory
- https://bugs.webkit.org/show_bug.cgi?id=41612
-
- * Scripts/ensure-valid-python: File::Temp::tempdir call fixed.
-
-2010-07-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- We should be able to specify a bug to block for webkit-patch upload
- https://bugs.webkit.org/show_bug.cgi?id=41648
-
- This will be useful for working on the HTML5 parser.
-
- * Scripts/webkitpy/tool/steps/createbug.py:
- * Scripts/webkitpy/tool/steps/options.py:
-
-2010-07-05 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Oliver Hunt.
-
- The style checker exempts gtk2drawing.h when it should exempt gtkdrawing.h
- https://bugs.webkit.org/show_bug.cgi?id=41017
-
- * Scripts/webkitpy/style/checker.py: Exempt gtkdrawing.h instead of gtk2drawing.h
- * Scripts/webkitpy/style/checker_unittest.py: Update the unit test to reflect the change.
-
-2010-07-04 MORITA Hajime <morrita@google.com>
-
- rebaseline-chromium-webkit-tests: UnicodeDecodeError
- https://bugs.webkit.org/show_bug.cgi?id=41589
-
- * run() method can result non-utf-8 bytes, that causes utf-8
- decoding fail. Fixed to disable decoding.
- * Fixed Git.find_checkout_root() to make a test pass.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-07-03 Patrick Gansterer <paroga@paroga.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Fix DumpRenderTree userStyleSheet handling.
- https://bugs.webkit.org/show_bug.cgi?id=41570
-
- DumpRenderTree did only set the userStyleSheet at
- layoutTestController.setUserStyleSheetEnabled().
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setUserStyleSheetEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-07-03 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] support dumpChildFrameScrollPositions
-
- https://bugs.webkit.org/show_bug.cgi?id=41088
-
- Unskip:
-
- http/tests/navigation/anchor-subframeload.html
- http/tests/navigation/relativeanchor-frames.html
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpFrameScrollPosition):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::shouldDumpChildFrameScrollPositions):
- (LayoutTestController::dumpChildFrameScrollPositions):
-
-2010-07-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Rename new scripts so that they don't make autocompleting run-webkit-tests annoying.
-
- * Scripts/debug-test-runner: Copied from Scripts/debug-webkittestrunner.
- * Scripts/debug-webkittestrunner: Removed.
- * Scripts/run-test-runner: Copied from Scripts/run-webkittestrunner.
- * Scripts/run-webkittestrunner: Removed.
-
-2010-07-02 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Steve Falkenburg.
-
- Some http tests fail on Windows with Cygwin 1.7
- https://bugs.webkit.org/show_bug.cgi?id=41537
-
- With Cygwin 1.7, the registry key at SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/
- doesn't exist anymore, because the mount points are stored in /etc/fstab. However, we
- just need root mount point, which is defined in SOFTWARE\\Cygwin\\setup.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (resolveCygwinPath): Fall back to SOFTWARE\\Cygwin\\setup if
- SOFTWARE\\Cygnus Solutions\\Cygwin\\mounts v2\\/ doesn't work.
-
-2010-06-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Separate DerivedSources per-project
- https://bugs.webkit.org/show_bug.cgi?id=41109
-
- The JavaScriptCore cppflags used to include the top-level DerivedSources directory
- allowing the tools to build as a side-effect. Now that the top-level directory
- is no longer in the list of JavaScriptCore includes, include it explicitly.
-
- * GNUmakefile.am:
-
-2010-07-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Make context menus show up in the right place in QTestBrowser
-
- Context menus were shown at scene-relative coordinates for
- QGraphicsWebView while QMenu expects them to be global. The
- change to the QWidget case was to get rid of the mapToGlobal.
-
- * QtTestBrowser/webview.cpp:
-
-2010-07-01 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] dump frames in ascending alphabetical order of title
-
- https://bugs.webkit.org/show_bug.cgi?id=41261
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::dumpHistoryItem):
-
-2010-07-01 Martin Robinson <mrobinson@igalia.com>
-
- Unreviewed.
-
- Fix the GTK+ build after r62278.
-
- * Scripts/webkitdirs.pm: If the make arguments have already been specified,
- let them override the automatic CPU detection for autotools builds.
-
-2010-07-01 Martin Robinson <mrobinson@igalia.com>
-
- Unreviewed.
-
- Fix the Windows build after r62278.
-
- * Scripts/num-cpus: Use FindBin to add the Scripts directory to the list of library directories.
-
-2010-07-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] build-webkit does not detect the number of CPUs
- https://bugs.webkit.org/show_bug.cgi?id=41469
-
- Pass the appropriate -j<#> flag to make when building autotools builds.
- This causes make to spawn that many number of child processes for doing
- parallel builds.
-
- * Scripts/num-cpus: Use the newly abstracted numberOfCPUs to return the number
- of CPUs. This makes the script work across more platforms.
- * Scripts/webkitdirs.pm: Create a numberOfCPUs/determineNumberOfCPUs to determine the
- number of CPUs across several platforms. Use this new function to determine the appropriate
- arguments to pass to make for doing parallel builds with autotools build files.
-
-2010-07-01 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Laszlo Gombos.
-
- [Qt][Symbian] Bumped up the maximum heap size to 96MB
-
- * QtTestBrowser/QtTestBrowser.pro: Removed explicit heap size declaration
- and use the one from WebKit.pri instead.
-
-2010-07-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Promote webkit-patch land-safely to main help
- https://bugs.webkit.org/show_bug.cgi?id=41446
-
- I've been using this command a bunch and recommending it to folks. We
- should show it in main help as it's past the experimental phase.
-
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2010-06-28 MORITA Hajime <morrita@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- rebaseline-chromium-webkit-tests doesn't do diffs right with a Git checkout of WebKit
- https://bugs.webkit.org/show_bug.cgi?id=38775
-
- - Introduced SCM.show_head() and SCM.diff_for_file().
- - Replaced direct svn invocations with newly implement SCM methods.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-06-30 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Sam Weinig.
-
- Allow MiniBrowser to open local files
- https://bugs.webkit.org/show_bug.cgi?id=41104
-
- Wire up the openDocument: message with an NSOpenPanel, so we can open
- local files.
-
- Also change the xib so that the window remembers its size.
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate frontmostBrowserWindowController]):
- (-[BrowserAppDelegate openDocument:]):
- (-[BrowserAppDelegate openPanelDidEnd:returnCode:contextInfo:]):
- * MiniBrowser/mac/English.lproj/BrowserWindow.xib:
-
-2010-06-30 Sam Weinig <sam@webkit.org>
-
- Rubber-stamped by Anders Carlsson.
-
- Add debug-webkittestrunner and cleanup related scripts.
-
- * Scripts/debug-webkittestrunner: Added.
- * Scripts/run-webkittestrunner:
- * Scripts/webkitdirs.pm:
-
-2010-06-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after recent changes to LayoutTestController.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::pageSizeAndMarginsInPixels):
-
-2010-06-29 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41389
- Make WebKitTestRunner work with more than one test at a time.
-
- This converts WebKitTestRunner to a similar model as DumpRenderTree,
- where there is a single WKView and each test is run it, rather than
- the design I was using where each test got its own WKView.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didRecieveMessage):
- (WTR::InjectedBundle::reset):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- (WTR::TestController::_didRecieveMessageFromInjectedBundle):
- (WTR::TestController::didRecieveMessageFromInjectedBundle):
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::mainWebView):
- (WTR::TestController::pageNamespace):
- (WTR::TestController::context):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::~TestInvocation):
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::didRecieveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
-
-2010-06-30 Simon Hausmann <simon.hausmann@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt][Symbian] Only 10 websites can be loaded consecutively when using QtWebkit 2.0
- https://bugs.webkit.org/show_bug.cgi?id=40446
-
- We quickly run out of memory on Symbian when loading web pages. This is
- caused by the default heap size, which is not suited for a web browser.
-
- This change bumps the max heap size to 32MB.
-
- * QtTestBrowser/QtTestBrowser.pro:
-
-2010-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land allow the user to continue even if the builders are red
- https://bugs.webkit.org/show_bug.cgi?id=41395
-
- I don't think it's good that we've been teaching people
- to always pass --ignore-builders. At least land is now
- useable w/o --ignore-builders.
-
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
-
-2010-06-29 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] support dumpResourceResponseMIMETypes
- https://bugs.webkit.org/show_bug.cgi?id=41260
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpResourceResponseMIMETypes):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-06-29 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Resize scene when Qt DRT WebPage receives a geometry change request
- https://bugs.webkit.org/show_bug.cgi?id=41173
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::setViewGeometry):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-2010-06-29 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Deal with postEvent in case of graphics based DRT
- https://bugs.webkit.org/show_bug.cgi?id=41174
-
- QGraphicsScene does not have a postEvent method, so make scene
- send the event, in case of graphics based DRT, and delete it after that.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::scheduleAsynchronousClick):
- (EventSender::replaySavedEvents):
- (EventSender::postEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-06-29 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Make switchFocus() method works with QGraphicsWebView in Qt DRT
- https://bugs.webkit.org/show_bug.cgi?id=41172
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::switchFocus):
-
-2010-06-29 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Gtk] Make DRT more coherent with other ports to allow reusing more tests
- https://bugs.webkit.org/show_bug.cgi?id=40009
-
- Make sure "AXRole: ", "AXTitle: " and "AXDescription: " prefixes
- are used when returning those values, for coherency with other ports.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
-
-2010-06-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r62106.
- http://trac.webkit.org/changeset/62106
- https://bugs.webkit.org/show_bug.cgi?id=41346
-
- "Broke editing tests" (Requested by xan_ on #webkit).
-
- * Scripts/old-run-webkit-tests:
-
-2010-06-29 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Ensure DRT loads GAIL (Gtk+ module), for a11y tests
- https://bugs.webkit.org/show_bug.cgi?id=38648
-
- Add the GTK_MODULES envvar (set to "gail") to the clean
- environment when running DRT for the Gtk+ port
-
- * Scripts/old-run-webkit-tests:
-
-2010-06-28 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Switch test-html5-parser back to using runner.html.
-
- * Scripts/test-html5-parser:
-
-2010-06-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Restore webkit-runner.html for use with new tree builder
- https://bugs.webkit.org/show_bug.cgi?id=41317
-
- For now, we just want to run webkit-runner when we test-html5-parser.
-
- * Scripts/test-html5-parser:
-
-2010-06-23 John Gregg <johnnyg@google.com>
-
- Reviewed by Kent Tamura.
-
- add ENABLE_DIRECTORY_UPLOAD build support
- https://bugs.webkit.org/show_bug.cgi?id=41100
-
- * Scripts/build-webkit:
-
-2010-06-28 Gustavo Noronha Silva <gns@gnome.org>
-
- Rubber-stamped by Xan Lopez.
-
- Update webkitdirs's knowledge of our library's name.
-
- * Scripts/webkitdirs.pm:
-
-2010-06-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41299
- Build up WebKitTestRunner output in the InjectedBundle
-
- Simplify WebKitTestRunner by building up the output in the InjectedBundle
- and sending it over postMessage when done, instead of using the async
- WKPageRenderTreeExternalRepresentation.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done):
- (WTR::InjectedBundle::didRecieveMessage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::os):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::WKStringToUTF8):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::WKStringToUTF8):
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::initializeMainWebView):
- (WTR::TestInvocation::_didRecieveMessageFromInjectedBundle):
- (WTR::TestInvocation::didRecieveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
-
-2010-06-28 Robert Hogan <robert@webkit.org>
-
- Unreviewed, rolling out r62021.
- http://trac.webkit.org/changeset/62021
- https://bugs.webkit.org/show_bug.cgi?id=41261
-
- Broke http/navigation tests among other
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpFramesAsText):
-
-2010-06-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add run-webkittestrunner to run WebKitTestRunner with the appropriate
- environment.
-
- * Scripts/run-webkittestrunner: Added.
- * Scripts/webkitdirs.pm:
-
-2010-06-28 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] dump frames in ascending alphabetical order of title
-
- https://bugs.webkit.org/show_bug.cgi?id=41261
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpFramesAsText):
-
-2010-06-28 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] dump bf history of child windows
-
- https://bugs.webkit.org/show_bug.cgi?id=41266
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpBackForwardList):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-2010-06-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41288
- WebKit2: Add frame API for InjectedBundle code
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didClearWindowForFrame):
-
-2010-06-28 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser does not have a "Load" button ; therefore, unable to load pages on touch only symbian devices (portrait mode).
- https://bugs.webkit.org/show_bug.cgi?id=38597
-
- Fix behavior so reload button really acts as a load and a reload button.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::changeLocation):
-
-2010-06-28 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Does not compile with -DGSEAL_ENABLE
- https://bugs.webkit.org/show_bug.cgi?id=37851
-
- Fix build with GSEAL enabled.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gtk_widget_get_window):
- (prepareMouseButtonEvent):
- (mouseMoveToCallback):
- (mouseWheelToCallback):
- (keyDownCallback):
-
-2010-06-28 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- [GTK] Add support for GTK+3
- https://bugs.webkit.org/show_bug.cgi?id=41253
-
- Adapt build system for 3.x support.
-
- * GNUmakefile.am:
-
-2010-06-10 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [QT][S60] build-webkit scripts picks wrong make spec for windows build
- https://bugs.webkit.org/show_bug.cgi?id=41198
-
- Instead of checking for existence of %EPOCROOT% on windows, mandatory use of --symbian flag for symbian builds.
-
- * Scripts/webkitdirs.pm:
- (determineIsSymbian): remove check for %EPOCROOT% as one can build for windows port of QT as well
-
-2010-06-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make it possible to test the new HTML5 TreeBuilder
- https://bugs.webkit.org/show_bug.cgi?id=41276
-
- Adam was concerned that someone might make their port
- depend on this setting (I guess we had some trouble with that
- with the HTML5Parser setting), so I littered the code with warnings.
-
- test-html5-parser now tests this code path.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (initializeGlobalsFromCommandLineOptions):
- * Scripts/test-html5-parser:
-
-2010-06-27 MORITA Hajime <morrita@google.com>
-
- Unreviewed.
-
- Some never-called @staticmethods touched self.
- Fixed it to replace these self with a class.
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2010-06-27 MORITA Hajime <morrita@google.com>
-
- Unreviewed.
-
- Fixed exception raising syntax that is pointed out at
- https://bugs.webkit.org/show_bug.cgi?id=41153
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- Removed a bad line that I accidentally checked-in at last revision.
-
-2010-06-24 MORITA Hajime <morrita@google.com>
-
- Reviewed by Eric Seidel.
-
- rebaseline-chromium-webkit-tests should add or remove files to local git repository
- https://bugs.webkit.org/show_bug.cgi?id=41153
-
- - Added SCM.add() and SCM.remove()
- - Replaced "svn add" and "svn remove"
- rebaseline_chromium_webkit_tests.py: in with SCM method equivalents.
- - add "-U" and "-q" options to rebaseline_chromium_webkit_tests.py
- for debugging purpose.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2010-06-25 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Improve default value handling for page format properties.
- https://bugs.webkit.org/show_bug.cgi?id=41150
-
- * DumpRenderTree/LayoutTestController.cpp:
- (parsePageNumber):
- (parsePageNumberSizeMarings):
- (pageSizeAndMarginsInPixelsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pageSizeAndMarginsInPixels):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pageSizeAndMarginsInPixels):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pageSizeAndMarginsInPixels):
-
-2010-06-21 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT Support for setCustomPolicyDelegate
-
- https://bugs.webkit.org/show_bug.cgi?id=39564
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-06-26 Robert Hogan <robert@webkit.org>
-
- Unreviewed, Qt build fix following http://trac.webkit.org/changeset/61879
-
- Remove qwebscriptworld.h from LayoutTestControllerQt.cpp - it is no longer
- exported.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
-
-2010-06-26 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add a build-webkit option for enabling Web Timing support.
- https://bugs.webkit.org/show_bug.cgi?id=38924
-
- * Scripts/build-webkit:
-
-2010-06-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser does not have a "Load" button ; therefore, unable to load pages on touch only symbian devices (portrait mode).
- https://bugs.webkit.org/show_bug.cgi?id=38597
-
- Make the reload button act as a load button as well.
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
- (MainWindow::changeLocation):
-
-2010-06-25 Prasad Tammana <prasadt@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Add empty abortModal() method to all platforms.
- https://bugs.webkit.org/show_bug.cgi?id=40864
-
- Add an empty abortModal() stub to LayoutTestController on all platforms to get rid of platform specific #ifs in
- platform independent LayoutTestController code. Without this change, layout tests using LayoutTestController tests
- that use abortModal will become mac specific which is not desirable.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (abortModalCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::abortModal):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::abortModal):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::abortModal):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::abortModal):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::abortModal):
-
-2010-06-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41226
- Flesh out injected bundle code for WebKitTestRunner and add basic LayoutTestController.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: Added.
- (WTR::InjectedBundle::shared):
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::_didCreatePage):
- (WTR::InjectedBundle::_willDestroyPage):
- (WTR::InjectedBundle::_didRecieveMessage):
- (WTR::InjectedBundle::initialize):
- (WTR::InjectedBundle::didCreatePage):
- (WTR::InjectedBundle::willDestroyPage):
- (WTR::InjectedBundle::didRecieveMessage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Added.
- (WTR::InjectedBundle::layoutTestController):
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp:
- (WKBundleInitialize):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: Added.
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::~InjectedBundlePage):
- (WTR::InjectedBundlePage::_didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::_didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::_didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::_didCommitLoadForFrame):
- (WTR::InjectedBundlePage::_didFinishLoadForFrame):
- (WTR::InjectedBundlePage::_didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::_didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::_didClearWindowForFrame):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didCommitLoadForFrame):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h: Added.
- (WTR::InjectedBundlePage::page):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: Added.
- (WTR::LayoutTestController::create):
- (WTR::LayoutTestController::LayoutTestController):
- (WTR::LayoutTestController::~LayoutTestController):
- (WTR::dumpAsTextCallback):
- (WTR::layoutTestControllerObjectFinalize):
- (WTR::LayoutTestController::makeWindowObject):
- (WTR::LayoutTestController::getJSClass):
- (WTR::LayoutTestController::staticFunctions):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Added.
- (WTR::LayoutTestController::dumpAsText):
- (WTR::LayoutTestController::setDumpAsText):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2010-06-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Make WebKitTestRunner really work with run-webkit-tests.
-
- - Add Forwarding headers to allow some cleanup.
-
- * WebKitTestRunner/ForwardingHeaders: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/ASCIICType.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Assertions.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Atomics.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/FastMalloc.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/HashMap.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/HashSet.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/HashTraits.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Locker.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/MainThread.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/MathExtras.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Noncopyable.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/OwnPtr.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/OwnPtrCommon.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/PassOwnPtr.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/PassRefPtr.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Platform.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/RefCounted.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/RefPtr.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/RetainPtr.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/StringExtras.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/ThreadSafeShared.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Threading.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/ThreadingPrimitives.h: Added.
- * WebKitTestRunner/ForwardingHeaders/wtf/Vector.h: Added.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::dump): Dump the right number of #EOFs.
- * WebKitTestRunner/TestInvocation.h:
-
-2010-06-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add support for WebKitTestRunner to old-run-webkit-tests
-
- - Also adds a script to build WebKitTestRunner for old-run-webkit-tests to use.
-
- * Scripts/build-webkittestrunner: Added.
- * Scripts/old-run-webkit-tests:
-
-2010-06-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- Incremental build failed on Chromium ews
- https://bugs.webkit.org/show_bug.cgi?id=41011
-
- The division of responsibility between update-webkit --chromium and
- build-webkit --chromium is slightly unclear. In this patch, we make
- build-webkit --chromium also update DEPS and re-run GYP in case the
- developer has changed either since they updated.
-
- This change is also helpful for the EWS, which wants to update DEPS and
- re-run GYP after applying patches, but the EWS doesn't want to run
- update-webkit --chromium because it has a dirty working copy.
-
- * Scripts/webkitdirs.pm:
-
-2010-06-25 Robert Hogan <robert@webkit.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] Support evaluateScriptInIsolatedWorld()
-
- https://bugs.webkit.org/show_bug.cgi?id=40079
-
- Remove evaluateScriptInIsolatedWorld() from QtWebKit API.
- Remove QWebScriptWorld from exported headers.
- Confine support to DumpRenderTreeSupportQt so that the tests can pass.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-06-25 Anders Carlsson <andersca@apple.com>
-
- Revert accidental part and add a newline.
-
- * MiniBrowser/mac/AppDelegate.m:
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
-
-2010-06-25 Anders Carlsson <andersca@apple.com>
-
- Rubber-stamped by Dan Bernstein.
-
- Add a LOG macro that expands to a no-op by default.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/AppDelegate.m:
- (_didRecieveMessageFromInjectedBundle):
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController windowShouldClose:]):
- (_didStartProvisionalLoadForFrame):
- (_didReceiveServerRedirectForProvisionalLoadForFrame):
- (_didFailProvisionalLoadWithErrorForFrame):
- (_didCommitLoadForFrame):
- (_didFinishLoadForFrame):
- (_didFailLoadWithErrorForFrame):
- (_didReceiveTitleForFrame):
- (_didFirstLayoutForFrame):
- (_didFirstVisuallyNonEmptyLayoutForFrame):
- (_didBecomeUnresponsive):
- (_didBecomeResponsive):
- (_decidePolicyForNavigationAction):
- (_decidePolicyForNewWindowAction):
- (_createNewPage):
- (_showPage):
- (_closePage):
- (_didNavigateWithNavigationData):
- (_didPerformClientRedirect):
- (_didPerformServerRedirect):
- (_didUpdateHistoryTitle):
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didClearWindowForFrame):
- (_didCreatePage):
- (_willDestroyPage):
- (_didRecieveMessage):
-
-2010-06-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- commit-queue is taking too long to land patches because of red trees
- https://bugs.webkit.org/show_bug.cgi?id=41194
-
- Instead of checking for the tree to be green, we'll just spin hot
- trying to land patches. This is probably too extreme in ignoring the
- tree, but I think we should try it for a while to see if we have
- trouble. That will help us find the right balance.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2010-06-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Clean up the use of gdk_window_get_root_coords in EventSender
- https://bugs.webkit.org/show_bug.cgi?id=40843
-
- Define the version for old GTK+s in a way that is forward-compatible
- and clean up the logic a bit.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gdk_window_get_root_coords): Renamed and cleaned up.
- (prepareMouseButtonEvent): Remove #ifdefs.
- (mouseMoveToCallback): Remove #ifdefs.
-
-2010-06-24 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix NewRunWebKitTests to work on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=41180
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added "perl" as first arguments,
- because Windows fails to understand what we're asking of it.
-
-2010-06-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] The url passed to the WebView during layout tests is invalid
- https://bugs.webkit.org/show_bug.cgi?id=40832
-
- Set the test URL to the full real file URL and do a small cleanup.
- Previously a URL like file://relative/path/to/test.html was passed
- to the WebView. This malformed file URL would be returned by
- webkit_web_view_get_url and webkit_web_frame_get_url.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (shouldLogFrameLoadDelegates): Change to take a const string& as the argument.
- (shouldOpenWebInspector): Change to take a const string& as the argument.
- (shouldEnableDeveloperExtras): Change to take a const string& as the argument.
- (runTest): Pass the full file:// URL to the view. Remove the superfluous url variable.
-
-2010-06-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix WebKitTestRunner Makefile typos.
-
- * WebKitTestRunner/Makefile:
-
-2010-06-24 Adele Peterson <adele@apple.com>
-
- Reviewed by Eric Carlson.
-
- DumpRenderTree part of testing <rdar://problem/8093680> "Paste and Match Style" should fire paste events
- https://bugs.webkit.org/show_bug.cgi?id=41085
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (resetWebViewToConsistentStateBeforeTesting):
- Clear the general pasteboard in between tests so Cut,Copy, and setData on ClipboardData won't have lasting effects.
-
-2010-06-23 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=41086
- Add new WebKitTestRunner project (ie. DRT for WebKit2).
-
- - Mac only.
- - run-webkit-tests has not been modified to call it yet.
- - Only dumps the render tree at this time.
-
- * WebKitTestRunner: Added.
- * WebKitTestRunner/Configurations: Added.
- * WebKitTestRunner/Configurations/Base.xcconfig: Added.
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig: Added.
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig: Added.
- * WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Added.
- * WebKitTestRunner/InjectedBundle: Added.
- * WebKitTestRunner/InjectedBundle-Info.plist: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp: Added.
- (_didStartProvisionalLoadForFrame):
- (_didReceiveServerRedirectForProvisionalLoadForFrame):
- (_didFailProvisionalLoadWithErrorForFrame):
- (_didCommitLoadForFrame):
- (_didFinishLoadForFrame):
- (_didFailLoadWithErrorForFrame):
- (_didReceiveTitleForFrame):
- (_didClearWindow):
- (_didCreatePage):
- (_willDestroyPage):
- (_didRecieveMessage):
- (WKBundleInitialize):
- * WebKitTestRunner/Makefile: Added.
- * WebKitTestRunner/PlatformWebView.h: Added.
- (WTR::PlatformWebView::platformView):
- * WebKitTestRunner/TestController.cpp: Added.
- (WTR::TestController::shared):
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- (WTR::TestController::runTestingServerLoop):
- (WTR::TestController::run):
- * WebKitTestRunner/TestController.h: Added.
- (WTR::TestController::verbose):
- (WTR::TestController::injectedBundlePath):
- * WebKitTestRunner/TestInvocation.cpp: Added.
- (WTR::createWKURL):
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::~TestInvocation):
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump):
- (WTR::TestInvocation::initializeMainWebView):
- (WTR::TestInvocation::didStartProvisionalLoadForFrame):
- (WTR::TestInvocation::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::TestInvocation::didFailProvisionalLoadWithErrorForFrame):
- (WTR::TestInvocation::didCommitLoadForFrame):
- (WTR::TestInvocation::didFinishLoadForFrame):
- (WTR::TestInvocation::didFailLoadForFrame):
- (WTR::TestInvocation::renderTreeExternalRepresentationFunction):
- (WTR::TestInvocation::renderTreeExternalRepresentationDisposeFunction):
- * WebKitTestRunner/TestInvocation.h: Added.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj: Added.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Added.
- * WebKitTestRunner/WebKitTestRunnerPrefix.h: Added.
- * WebKitTestRunner/mac: Added.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm: Added.
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::page):
- * WebKitTestRunner/mac/TestInvocationMac.mm: Added.
- (WTR::TestInvocation::runUntil):
- * WebKitTestRunner/mac/main.mm: Added.
- (main):
-
-2010-06-24 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Unreviewed. Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-23 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, adding new LayoutTestController methods and enabling SVG_FOREIGN_OBJECT.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageAreaRectInPixels):
- (LayoutTestController::preferredPageSizeInPixels):
- * wx/build/settings.py:
-
-2010-06-23 James Robinson <jamesr@chromium.org>
-
- Unreviewed. Add my IRC handle to committers.py so the sheriffbot can yell at me.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-23 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Correct Chromium test configuration
- https://bugs.webkit.org/show_bug.cgi?id=41057
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- - Add "--use-drt" option for NRWT. It is required for Chromium and
- ignored for other platforms.
- - Skip JSC test on Chromium
- * BuildSlaveSupport/test-result-archive:
- Add Chromium support.
-
-2010-06-23 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=41073
- WebKit2: Flesh out more of the InjectedBundle client API
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didStartProvisionalLoadForFrame):
- (_didReceiveServerRedirectForProvisionalLoadForFrame):
- (_didFailProvisionalLoadWithErrorForFrame):
- (_didCommitLoadForFrame):
- (_didFinishLoadForFrame):
- (_didFailLoadWithErrorForFrame):
- (_didReceiveTitleForFrame):
- (_didClearWindowForFrame):
- (_didCreatePage):
- (_willDestroyPage):
- (WKBundleInitialize):
-
-2010-06-23 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Implement page format data programming interface.
- Add methods for testing.
- https://bugs.webkit.org/show_bug.cgi?id=37538
-
- * DumpRenderTree/LayoutTestController.cpp:
- (parsePageNumber):
- (isPageBoxVisibleCallback):
- (pageAreaRectInPixelsCallback):
- (preferredPageSizeInPixelsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageAreaRectInPixels):
- (LayoutTestController::preferredPageSizeInPixels):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageAreaRectInPixels):
- (LayoutTestController::preferredPageSizeInPixels):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageAreaRectInPixels):
- (LayoutTestController::preferredPageSizeInPixels):
-
-2010-06-23 Sam Magnuson <smagnuson@netflix.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Follow proper convention for if/switch/while as I've discovered
- them to be through my review processes.
- https://bugs.webkit.org/show_bug.cgi?id=40723
-
- Modified test so that if( foo ) is not allowed as it appears not
- to be the accepted convention.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-06-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Run clean-header-guards to fix some header guards
- https://bugs.webkit.org/show_bug.cgi?id=41044
-
- No functional changes, thus no tests.
-
- This entire change was generated by running
- clean-header-guards, and then reverting changes
- to files which shouldn't be changed. Those which
- are left all should be updated.
-
- Some of these changes are just fixing 755 permissions
- to be 644, since it seems various files have the wrong
- execute bit which don't need it. clean-header-guards
- made those (welcome) permission fixes unintentionally.
-
- * DumpRenderTree/chromium/WebThemeControlDRT.h:
- * DumpRenderTree/chromium/WebThemeEngineDRT.h:
- * QtTestBrowser/fpstimer.h:
-
-2010-06-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename HTMLDocumentParser to LegacyHTMLDocumentParser
- https://bugs.webkit.org/show_bug.cgi?id=41043
-
- Update the hash.
-
- * Scripts/do-webcore-rename:
-
-2010-06-22 Sam Magnuson <smagnuson@netflix.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Follow proper convention for variable declaration spacing.
- https://bugs.webkit.org/show_bug.cgi?id=40724
-
- Modified test so that 'int a;' is not allowed.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-06-22 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Add Tony Gentilcore now that he's a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove Gtk 64-Release bot from core since it's broken
- https://bugs.webkit.org/show_bug.cgi?id=41022
-
- This bot alone has been responsible for more than 72 hours of
- commit-queue blockage in the last week. The bot is broken -- keeps
- losing its display server or similar. Until the Gtk folks can fix the
- bot, we need to remove it from core. The WebKit community can't keep
- it green as is.
-
- * Scripts/webkitpy/common/net/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-06-21 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix the Windows build.
- https://bugs.webkit.org/show_bug.cgi?id=40972
-
- * DumpRenderTree/win/ImageDiff.vcproj:
-
-2010-06-21 Prasad Tammana <prasadt@chromium.org>
-
- Reviewed by Darin Adler, Dmitry Titov.
-
- DumpRenderTree should allow tests with modal dialogs
- https://bugs.webkit.org/show_bug.cgi?id=35350
-
- * DumpRenderTree/LayoutTestController.cpp:
- (abortModalCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::abortModal):
- Add abortModal method to LayoutTestController and make it available from script.
-
- * DumpRenderTree/mac/UIDelegate.mm: Add support for showModalDialog.
- (-[UIDelegate modalWindowWillClose:]): Observer for NSWindowWillCloseNotifications to call
- abortModal from when modal window closes.
- (-[UIDelegate webViewRunModal:]): Delegate method for showModalDialog to run the modal loop.
-
-2010-06-21 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Rename DrawingAreaProxyUpdateChunk to ChunkedUpdateDrawingArea
- https://bugs.webkit.org/show_bug.cgi?id=40948
-
- Have the script look in WebKit2.
-
- * Scripts/do-webcore-rename:
-
-2010-06-21 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Unskip plugins/get-url-that-the-resource-load-delegate-will-disallow.html
-
- It's a Mac-specific test so just add the required LayoutTestController
- function as a no-op to avoid failing. Similar approach adopted by other
- ports.
-
- https://bugs.webkit.org/show_bug.cgi?id=33344
-
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::addDisallowedURL):
-
-2010-06-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Patch for https://bugs.webkit.org/show_bug.cgi?id=40940
- Add message passing support to the WebKit2 API.
-
- - Add some test messages.
-
- * MiniBrowser/mac/AppDelegate.m:
- (_didRecieveMessageFromInjectedBundle):
- (-[BrowserAppDelegate init]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (_didClearWindow):
- (_didCreatePage):
- (_didRecieveMessage):
- (WKBundleInitialize):
-
-2010-06-21 Drew Wilson <atwilson@chromium.org>
-
- Unreviewed.
-
- Rolling back 61551 and 61555 due to test failures.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setEditingBehavior):
- * DumpRenderTree/mac/UIDelegate.mm:
-
-2010-06-21 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make DumpRenderTree build with clang++
-
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- (-[LocalPasteboard setPropertyList:forType:]):
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow keyDown:]):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
- (LayoutTestController::isCommandEnabled):
-
-2010-06-21 Satish Sampath <satish@chromium.org>
-
- Reviewed by Steve Block.
-
- Speech Input Patch 0: Added compilation argument to conditionally compile pending patches.
- https://bugs.webkit.org/show_bug.cgi?id=40878
-
- * Scripts/build-webkit:
-
-2010-06-21 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Initialization for http/tests/loading/
- https://bugs.webkit.org/show_bug.cgi?id=40902
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2010-06-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-20 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Add --allow-external-pages option
- https://bugs.webkit.org/show_bug.cgi?id=40762
-
- Add --allow-external-pages introduced by Chromium r45403.
- http://src.chromium.org/viewvc/chrome?view=rev&revision=45403
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::allowExternalPages):
- (TestShell::setAllowExternalPages):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest):
-
-2010-06-20 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Adam Barth.
-
- Sheriffbot: Should allow "r" in SVN_REVISION
- https://bugs.webkit.org/show_bug.cgi?id=40889
-
- * Scripts/webkitpy/tool/bot/irc_command.py: remove a leading "r" from SVN_REVISION if it exists
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: test an SVN_REVISION with a leading r.
-
-2010-06-20 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- Python Tests Fail after r61508
- https://bugs.webkit.org/show_bug.cgi?id=40891
-
- Test's regex list needed to be updated to match the new
- regex list in the source code. Added new bots to the
- example_buildbots list.
-
- Regex list fixed in r61512. Updated bot list.
-
- * Scripts/webkitpy/common/net/buildbot_unittest.py:
-
-2010-06-20 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, build fix.
-
- Tweak test regexp list to match the change in http://trac.webkit.org/changeset/61508.
-
- * Scripts/webkitpy/common/net/buildbot_unittest.py: Tweaked regexp.
-
-2010-06-19 Justin Schuh <jschuh@chromium.org>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-19 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=40882
- Add ability to have a WebProcess per WebContext.
-
- Move to use new shared contexts API.
-
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate getCurrentPageNamespace]):
- (-[BrowserAppDelegate validateMenuItem:]):
- (-[BrowserAppDelegate _setProcessModel:]):
- (-[BrowserAppDelegate setSharedProcessProcessModel:]):
- (-[BrowserAppDelegate setSharedThreadProcessModel:]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2010-06-02 Robert Hogan <robert@webkit.org>
-
- Reviewed by Adam Barth.
-
- [Qt] Support evaluateScriptInIsolatedWorld()
-
- https://bugs.webkit.org/show_bug.cgi?id=40079
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-06-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add three more non-core Chromium builders to start testing DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=40335
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Added 3 builders.
-
-2010-06-18 Drew Wilson <atwilson@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [Chromium] Plumbing for top-level frame names
- https://bugs.webkit.org/show_bug.cgi?id=40430
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- Changed obsolete call to clearName() to use setName(WebString()) instead.
-
-2010-06-18 Sam Weinig <weinig@apple.com>
-
- Rolling http://trac.webkit.org/changeset/61297 back in.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/WebBundle/WebBundleMain.c: Removed.
- * MiniBrowser/mac/WebBundle/WebBundleMain.m: Added.
- (_didClearWindow):
- (_didCreatePage):
- (WKBundleInitialize):
-
-2010-06-18 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=40803
- TestNetscapePlugin has an incorrect implementation of "property" property
-
- * DumpRenderTree/TestNetscapePlugIn.subproj/PluginObject.cpp: (pluginGetProperty): Don't
- pass a static string back, it's going to be released by NPAPI implementation.
-
-2010-06-18 Leandro Pereira <leandro@profusion.mobi>
-
- Unreviewed.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-17 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] cleanup redundant DEPS value and remove buildbot cleanup code
- https://bugs.webkit.org/show_bug.cgi?id=40615
-
- * Scripts/update-webkit-chromium: remove directory removal of third_party in old checkouts
-
-2010-06-17 Ada Chan <adachan@apple.com>
-
- Rolling out http://trac.webkit.org/changeset/61297 due to build errors.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/WebBundle/WebBundleMain.c: Copied from MiniBrowser/mac/WebBundle/WebBundleMain.c.
- * MiniBrowser/mac/WebBundle/WebBundleMain.m: Removed.
-
-2010-06-17 Darin Adler <darin@apple.com>
-
- One more try at fix for Chromium build.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell): Use set again instead of =.
-
-2010-06-17 Darin Adler <darin@apple.com>
-
- Fix Chromium build.
-
- I didn't realize that neither Chromium nor Qt share the DumpRenderTree
- code with all the other platforms! Wow, that should be fixed at some point.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell): Changed back to using "new".
- * DumpRenderTree/chromium/TestShell.h: Changed back to OwnPtr.
-
-2010-06-17 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed Qt build fix.
-
- LayoutTestController in the Qt DRT is not using refs :)
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2010-06-17 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Use adoptRef and create functions in more code paths
- https://bugs.webkit.org/show_bug.cgi?id=40760
-
- * DumpRenderTree/DumpRenderTree.h: Change gLayoutTestController to a RefPtr.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::create): Added.
- * DumpRenderTree/LayoutTestController.h: Declare the create function.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell): Use create instead of new.
- * DumpRenderTree/chromium/TestShell.h: Use RefPtr instead of OwnPtr.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): Use RefPtr and create instead of OwnPtr and new.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest): Use RefPtr and create instead of OwnPtr and new.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Use create and releaseRef
- instead of new.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest): Use RefPtr and create instead of OwnPtr and new.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (runTest): Use RefPtr and create instead of OwnPtr and new.
- (MyApp::OnInit): Removed unneeded code to delete the layout
- test controller. This is done during each test.
-
-2010-06-17 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [DRT/Chromium] Fix a bug of Windows pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=40763
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestShellPrinter::handleImage):
-
-2010-06-16 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [DRT/Chromium] Fix crash on Mac Release
- https://bugs.webkit.org/show_bug.cgi?id=40759
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintRect): We should not use m_canvas directly because
- it is created lazily in canvas().
-
-2010-06-16 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after new method addition.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::pageProperty):
-
-2010-06-16 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Set current working directory for each of tests
- https://bugs.webkit.org/show_bug.cgi?id=40668
-
- This change fixes tests with eventSender.beginDragWithFiles().
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
-
-2010-06-16 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] r60803 broke media/controls-drag-timebar.html
- https://bugs.webkit.org/show_bug.cgi?id=40269
-
- Only queue events while the mouse button is down, if drag mode is enabled. Some
- tests may disable drag mode, to prevent the queuing of events in this situation.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (sendOrQueueEvent): Only queue events here if dragMode is true.
-
-2010-06-16 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Remove the abuse of GDK_CURRENT_TIME in the DRT
- https://bugs.webkit.org/show_bug.cgi?id=40600
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Remove logic adding an offset to GDK_CURRENT_TIME.
-
-2010-06-16 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- Add a hidden land-cowboy command to webkit-patch to help land quick
- build fixes.
-
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2010-06-16 Adam Roben <aroben@apple.com>
-
- Convert console messages to UTF-8 before printing them
-
- Speculative fix for <http://webkit.org/b/40731> REGRESSION (r61234):
- http/tests/security/xssAuditor/embed-tag-null-char.html and
- http/tests/security/xssAuditor/object-embed-tag-null-char.html fail on
- Windows. (I can't test the fix because Apache is crashing on my
- computer.)
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (toUTF8): Extracted the code into an overload that takes a wide string
- and a length, then added an overload that takes a wstring.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Declare the new toUTF8
- overload.
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewAddMessageToConsole): Use toUTF8 to convert to
- UTF-8 instead of letting printf convert to the current code page.
-
-2010-06-16 Drew Wilson <atwilson@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] Plumbing for top-level frame names
- https://bugs.webkit.org/show_bug.cgi?id=40430
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
- Migrate to new createView() API.
- * DumpRenderTree/chromium/WebViewHost.h:
- Remove obsolete createView() methods, add new createView() API that takes a frameName parameter.
-
-2010-06-16 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Scroll wheel event support to graphics based DRT
- https://bugs.webkit.org/show_bug.cgi?id=40577
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::continuousMouseScrollBy):
- (EventSender::createGraphicsSceneWheelEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-06-16 Adam Roben <aroben@apple.com>
-
- Remove a stray newline from the Windows version of TestNetscapePlugin
-
- Reviewed by Alexey Proskuryakov.
-
- Fixes <http://webkit.org/b/40728>
- plugins/geturlnotify-during-document-teardown.html fails on Windows
-
- * DumpRenderTree/win/TestNetscapePlugin/main.cpp:
- (NPP_Destroy): Removed extra newline that the Mac version doesn't
- have.
-
-2010-06-16 Adam Roben <aroben@apple.com>
-
- Respect LayoutTestController::isPrinting on Windows
-
- This gets some printing tests closer to passing (like
- printing/page-rule-in-media-query.html).
-
- Fixes <http://webkit.org/b/40727>.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump): Pass LayoutTestController::isPrinting to
- IWebFramePrivate::renderTreeAsExternalRepresentation.
-
-2010-06-15 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Enable HTML5 lexer
- https://bugs.webkit.org/show_bug.cgi?id=40650
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
-
-2010-06-10 Yuzo Fujishima <yuzo@google.com>
-
- Reviewed by Shinichiro Hamaji.
-
- Implement render style selection for pages to support CSS3 Paged Media.
- https://bugs.webkit.org/show_bug.cgi?id=35961
-
- * DumpRenderTree/LayoutTestController.cpp:
- (parsePagePropertyParameters):
- (pagePropertyCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pageProperty):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pageProperty):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::pageProperty):
-
-2010-06-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Fix for https://bugs.webkit.org/show_bug.cgi?id=40630
- WebKit2: Add mechanism to inject code into the WebProcess on startup
-
- Add initial InjectedBundle support.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/WebBundle-Info.plist: Added.
- Add test InjectedBundle to the project.
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- Get the path to the WebBundle from the the main bundle and pass it to the new
- WKContextCreateWithInjectedBundlePath function.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (_didChangeProgress):
- Fix the build. This has been broken for a while.
-
- * MiniBrowser/mac/WebBundle: Added.
- * MiniBrowser/mac/WebBundle/WebBundleMain.c: Added.
- (_didCreatePage):
- (WKBundleInitialize):
- Add really basic InjectedBundle.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- Switch from WKContextCreateWithProcessModel to WKContextCreate and remove commented out code.
-
-2010-06-15 Dumitru Daniliuc <dumi@chromium.org>
-
- Reviewed by Darin Adler.
-
- Adding myself to the reviewers list.
- https://bugs.webkit.org/show_bug.cgi?id=40693
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-15 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Switch to using GIO methods instead of realpath in GtkLauncher to determine
- the file URI. This should remove warnings about realpath being undefined
- when compiling with '-ansi'.
-
- * GtkLauncher/main.c:
- (filenameToURL): Use GIO instead of realpath to determine file URI.
-
-2010-06-15 Adam Roben <aroben@apple.com>
-
- Remove the redundant set-apple-windows-environment-variables script
-
- Apparently update-webkit does this for you these days.
-
- Rubber-stamped by Steve Falkenburg.
-
- * Scripts/set-apple-windows-environment-variables: Removed.
-
-2010-06-14 Adam Roben <aroben@apple.com>
-
- Add a script to set the WebKitOutputDir and WebKitLibrariesDir
- environment variables
-
- Fixes <http://webkit.org/b/40595>.
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/set-apple-windows-environment-variables: Added.
- (to_windows_path): Passes the passed-in path through cygpath to
- generate a Windows-style path.
- (main): Sets the WebKitOutputDir and WebKitLibrariesDir environment
- variables to their defaults, if they aren't already set.
-
-2010-06-14 Adam Roben <aroben@apple.com>
-
- Speed up run-safari/debug-safari on Windows
-
- Fixes <http://webkit.org/b/40586>.
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/webkitdirs.pm:
- (runSafari): When debugging, set up the environment to run Safari
- using the built WebKit.dll, then use "devenv /debugexe Safari.exe" to
- actually launch the debugger. When not debugging, just run WebKit.exe
- and it will do the rest for us.
-
-2010-06-15 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT EventSender support to graphics context events
- https://bugs.webkit.org/show_bug.cgi?id=40324
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::contextClick):
-
-2010-06-14 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Fisher.
-
- [chromium] checkout chromium third_party directly
- https://bugs.webkit.org/show_bug.cgi?id=40556
-
- * Scripts/update-webkit-chromium: some migration code for the bots
-
-2010-06-14 Alexey Proskuryakov <ap@apple.com>
-
- Chromium build fix.
-
- * DumpRenderTree/chromium/EventSender.cpp: (EventSender::keyDown): Chromium uses differently
- named constants for Windows virtual key codes, replacing VK_DELETE with VKEY_DELETE.
-
-2010-06-14 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Darin Adler.
-
- https://bugs.webkit.org/show_bug.cgi?id=40529
- eventSender.keyDown("delete") incorrectly sends a backspace on some platforms
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:withLocation:]): We were sending a broken
- event for "delete" - it had virtual key code from forward delete, and text from backspace.
- Fixed "delete" to mean forward delete.
-
- * DumpRenderTree/chromium/EventSender.cpp: (EventSender::keyDown):
- * DumpRenderTree/gtk/EventSender.cpp: (keyDownCallback):
- * DumpRenderTree/win/EventSender.cpp: (keyDownCallback):
- Mac DRT confusion has propagated to other platforms, fixing those.
-
-2010-06-14 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Small GtkLauncher build fix for some systems.
-
- * GtkLauncher/main.c: Add <limit.h> include.
-
-2010-06-14 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] navigator.geolocation support for Qt port
- https://bugs.webkit.org/show_bug.cgi?id=39724
-
- Implementation for geolocation cases to DumpRenderTreeQt
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::allowGeolocationRequest):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::setMockGeolocationPosition):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::isGeolocationPermissionSet):
- (LayoutTestController::geolocationPermission):
-
-2010-06-13 Nathan Lawrence <nlawrence@apple.com>
-
- Reviewed by Darin Adler.
-
- Outside of Xcode (make or WebKitTools/Scripts), there doesn't seem to
- be a way of overwriting the Xcode system path. Making
- $WEBKITOUTPUTDIR take precedence over the system default would make
- this possible.
-
- * Scripts/webkitdirs.pm:
-
-2010-06-13 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: link won't return linked element if URL contains #
- https://bugs.webkit.org/show_bug.cgi?id=40192
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (linkedUIElementAtIndexCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::linkedUIElementAtIndex):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::linkedUIElementAtIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::linkedUIElementAtIndex):
-
-2010-06-13 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- webkit-patch should add a bug URL to ChangeLogs if they don't have one yet
- https://bugs.webkit.org/show_bug.cgi?id=39550
-
- This can cause an extra request to bugs.webkit.org durig upload, but it
- shouldn't be too bad. Also, this won't work if you remove the
- boilerplate created by prepare-ChangeLog.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py: Added.
-
-2010-06-08 Robert Hogan <robert@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [Qt] Add support for callShouldCloseOnWebView() to DRT
- https://bugs.webkit.org/show_bug.cgi?id=40330
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::setCallCloseOnWebViews):
-
-2010-06-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Daniel Bates.
-
- do-webcore-rename should have a --verbose option
- https://bugs.webkit.org/show_bug.cgi?id=40497
-
- * Scripts/do-webcore-rename:
- - Unified how we handle skipping files/directories
- this will allow us to "black list" certain files and
- directories when performing renames.
- - Made do-webcore-rename log what it's skipping when passed --verbose.
-
-2010-06-12 Darin Adler <darin@apple.com>
-
- * Scripts/run-bindings-tests: Fixed a typo in a message.
-
-2010-06-12 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [Chromium] new-run-webkit-tests --use-drt should work with Chromium checkout
- https://bugs.webkit.org/show_bug.cgi?id=40402
-
- _build_path() of each Chromium port check existence of build path
- of Chromium checkout first, then check existence of build path of
- WebKit-only checkout.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-06-12 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Back-forward list dumping is incorrect
-
- https://bugs.webkit.org/show_bug.cgi?id=36392
-
- Support dumping child history items in DRT.
-
- Unskip:
-
- fast/loader/frame-src-change-added-to-history.html
- fast/loader/frame-src-change-not-added-to-history.html
- fast/loader/frame-location-change-not-added-to-history.html
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::dumpHistoryItem):
-
-2010-06-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- upload all patches that lack in-rietveld to rietveld
- https://bugs.webkit.org/show_bug.cgi?id=40444
-
- If it's a patch, then we'll try to upload it as long as it
- doesn't have in-rietveld set. No longer set in-rietveld? since
- it's not needed.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-06-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Darin Fisher.
-
- Fix rietveld upload when message length > 100 characters
- https://bugs.webkit.org/show_bug.cgi?id=40457
-
- * Scripts/webkitpy/common/net/rietveld.py:
-
-2010-06-11 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] There should be a way to enable popups in QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=40427
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::toggleJavascriptCanOpenWindows):
- (LauncherWindow::createChrome):
-
-2010-06-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by Daniel Bates.
-
- Make SheriffBot more chatty
- https://bugs.webkit.org/show_bug.cgi?id=40463
-
- People seem to like to talk to SheriffBot, so let's make him chat back.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py: Added.
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2010-06-10 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Darin Adler.
-
- Fix the Windows buildbot when WebKitAuxiliaryLibs.zip cannot be found on our server.
-
- Robustify update-webkit-auxiliary-libs to be able to handle the case when WebKitAuxiliaryLibs.zip doesn't exist,
- and allow the script to fall back to an existing file, only failing if there is no fallback file. Also switch to checking
- WEXITSTATUS on $result instead of just comparing $result to 0.
-
- * Scripts/update-webkit-auxiliary-libs:
-
-2010-06-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- don't use Exception.message as it's deprecated in python 2.6+
- https://bugs.webkit.org/show_bug.cgi?id=40449
-
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2010-06-10 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- fix handle_script_error in rietveld upload queue and add testing for handle_script_error
- https://bugs.webkit.org/show_bug.cgi?id=40436
-
- * Scripts/webkitpy/common/system/outputcapture.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-06-10 Jarkko Sakkinen <jarkko.j.sakkinen@gmail.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] *All* WebGL layout tests fail!
- https://bugs.webkit.org/show_bug.cgi?id=40296
-
- Added test for WebKitWebGLEnabled to
- LayoutTestController::overridePreference().
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2010-06-10 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT EventSender support to graphics mouse events activation
- https://bugs.webkit.org/show_bug.cgi?id=40017
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::mouseDown):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::keyDown):
- (EventSender::contextClick):
- (EventSender::sendTouchEvent):
- (EventSender::sendOrQueueEvent):
- (EventSender::eventFilter):
- (EventSender::createGraphicsSceneMouseEvent):
- (EventSender::sendEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender::isGraphicsBased):
-
-2010-06-09 Adam Barth <abarth@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- webkit-patch upload fails for security bugs because there's no rietveld flag
- https://bugs.webkit.org/show_bug.cgi?id=40309
-
- There's probably a more elegant way of seeing whether the form control
- exists, but this seems to work.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-06-09 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- make rietveld upload faster and avoid posting to bug on errors
- https://bugs.webkit.org/show_bug.cgi?id=40389
-
- Only grab the first item of the upload queue instead of trying
- to compute the whole list upfront (which is O(n) bugzilla lookups!).
-
- Also, don't post comments to the bug when uploading fails.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-06-09 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- Rietveld upload queue fails when setting in-rietveld flag
- https://bugs.webkit.org/show_bug.cgi?id=40371
-
- Make the comment arguments to set_flag_on_attachment optional
- and add it to the MockBugzilla.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2010-06-09 Kenneth Russell <kbr@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Rename FloatArray to Float32Array
- https://bugs.webkit.org/show_bug.cgi?id=40323
-
- Used do-webcore-rename to perform renaming. Manually undid
- incorrect changes to WebCore/bridge/jni/jsc/JNIBridgeJSC.cpp,
- WebCore/manual-tests/resources/ArrayParameterTestApplet.java and
- ArrayParameterTestApplet.class. Updated LayoutTests. Built and ran
- all layout tests on Safari; built Chromium and ran selected WebGL
- tests.
-
- * Scripts/do-webcore-rename:
-
-2010-06-08 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] compile linux chromium in WebKit/out instead of WebKit/WebKit/chromium/out
- https://bugs.webkit.org/show_bug.cgi?id=40285
-
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2010-06-03 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Tamura Kent.
-
- Bug 40052 - [DRT/Chromium] Upstream test_shell_webthemeengine as WebThemeEngineDRT
- https://bugs.webkit.org/show_bug.cgi?id=40052
-
- Add WebThemeEngineDRT and WebThemeControlDRT ported from Chromium rev. 48907
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeControlDRT.cpp: Added.
- (WebKit::):
- (WebKit::WebThemeControlDRT::WebThemeControlDRT):
- (WebKit::WebThemeControlDRT::~WebThemeControlDRT):
- (WebKit::WebThemeControlDRT::box):
- (WebKit::WebThemeControlDRT::line):
- (WebKit::WebThemeControlDRT::triangle):
- (WebKit::WebThemeControlDRT::roundRect):
- (WebKit::WebThemeControlDRT::oval):
- (WebKit::WebThemeControlDRT::circle):
- (WebKit::WebThemeControlDRT::nestedBoxes):
- (WebKit::WebThemeControlDRT::markState):
- (WebKit::WebThemeControlDRT::draw):
- (WebKit::WebThemeControlDRT::drawTextField):
- (WebKit::WebThemeControlDRT::drawProgressBar):
- * DumpRenderTree/chromium/WebThemeControlDRT.h: Added.
- (WebKit::WebThemeControlDRT::):
- * DumpRenderTree/chromium/WebThemeEngineDRT.cpp: Added.
- (WebKit::):
- (WebKit::WebThemeEngineDRT::paintButton):
- (WebKit::WebThemeEngineDRT::paintMenuList):
- (WebKit::WebThemeEngineDRT::paintScrollbarArrow):
- (WebKit::WebThemeEngineDRT::paintScrollbarThumb):
- (WebKit::WebThemeEngineDRT::paintScrollbarTrack):
- (WebKit::WebThemeEngineDRT::paintTextField):
- (WebKit::WebThemeEngineDRT::paintTrackbar):
- (WebKit::WebThemeEngineDRT::paintProgressBar):
- * DumpRenderTree/chromium/WebThemeEngineDRT.h: Added.
- (WebKit::WebThemeEngineDRT::WebThemeEngineDRT):
-
-2010-06-08 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r60878.
- http://trac.webkit.org/changeset/60878
- https://bugs.webkit.org/show_bug.cgi?id=40349
-
- broke linux build (Requested by tony^work on #webkit).
-
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2010-06-08 Tony Chang <tony@chromium.org>
-
- Reviewed by David Levin.
-
- [chromium] compile linux chromium in WebKit/out instead of WebKit/WebKit/chromium/out
- https://bugs.webkit.org/show_bug.cgi?id=40285
-
- * Scripts/webkitdirs.pm:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2010-06-08 Kenneth Russell <kbr@google.com>
-
- Unreviewed, build fix.
-
- Fix build breakage from 38145
- https://bugs.webkit.org/show_bug.cgi?id=40346
-
- The fix for bug 38145 broke the Chromium Win build because
- Microsoft's cmath doesn't define log2. Suggested fix by zmo is to
- change log2(x) to log(x) / log(2). Built and ran WebGL layout
- tests in Safari on Mac OS X. Changed download mirrors for
- python-irclib to working ones.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2010-06-08 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Eric Seidel.
-
- old-run-webkit-tests should use ensure-valid-python to check if it can run the websockets tests
- https://bugs.webkit.org/show_bug.cgi?id=39058
-
- * Scripts/old-run-webkit-tests:
- use sourceDir() to find ensure-valid-python in checkPythonVersion()
-
-2010-06-08 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed buildfix after r60479.
-
- [GTK] Move the declaration of getRootCoords higher up to fix the build on GTK
- versions other than 2.17.3.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (getRootCoords):
-
-2010-06-07 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Oliver Hunt.
-
- [GTK] Mouse movement should not trigger a replay of saved events in the event sender
- https://bugs.webkit.org/show_bug.cgi?id=40267
-
- When a mouse button is down, automatically queue mouse motion events and
- do not play them back until the mouse button is released. This matches the
- behavior of other ports' EventSenders.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseMoveToCallback): Don't automatically replaySavedEvents for mouse motion.
- (sendOrQueueEvent): Add a shouldReplaySavedEvents argument defaulting to true.
-
-2010-06-07 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by Sam Weinig.
-
- Add CPP bindings generator
- https://bugs.webkit.org/show_bug.cgi?id=38279
-
- Integrate CPP bindings in run-bindings-tests.
-
- * Scripts/run-bindings-tests:
-
-2010-06-04 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Rename 'svn_merge_base' -> 'remote_merge_base'. This was left out of r60633.
- https://bugs.webkit.org/show_bug.cgi?id=40183
-
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2010-06-04 Martin Robinson <mrobinson@igalia.com>
-
- Unreviewed.
-
- Add my new email and IRC nick to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-04 Kinuko Yasuda <kinuko@chromium.org>
-
- Unreviewed.
-
- Revert changes in json_results_generator.py's _get_svn_revision.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2010-06-04 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] GtkLauncher should support relative file paths
- https://bugs.webkit.org/show_bug.cgi?id=39944
-
- Allow GtkLauncher to handle relative file paths passed via command-line arguments.
-
- * GtkLauncher/main.c:
- (filename_to_url): Added.
- (main): Try to resolve arguments as relative file URLs first.
-
-2010-06-04 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] EventSender should call gtk_main_do_event instead of invoking signal handlers directly
- https://bugs.webkit.org/show_bug.cgi?id=40182
-
- Instead of invoking signal handlers directly via g_signal_emit_by_name, call
- gtk_main_do_event. This will allow us to call gtk_get_current_event() in WebKit
- without breaking DRT.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (dispatchEvent): Use gtk_main_do_event instead of invoking signal handlers directly.
- (keyDownCallback): Use dispatchEvent here which now uses gtk_main_do_event.
-
-2010-06-04 Anders Carlsson <andersca@apple.com>
-
- Reviewed by David Hyatt.
-
- Make the editing/spelling/context-menu-suggestions.html test more robust
- https://bugs.webkit.org/show_bug.cgi?id=40178
-
- Change the contextClick method to return an array of strings describing the context menu items.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController contextClick]):
-
-2010-06-03 Kinuko Yasuda <kinuko@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- Clean up chromium-specific code from json_results_generator.py.
- https://bugs.webkit.org/show_bug.cgi?id=39665
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2010-06-04 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Adam Barth.
-
- Utilize new takeFirst() method where appropriate.
- https://bugs.webkit.org/show_bug.cgi?id=40089
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::replaySavedEvents):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::WorkQueue::processWork):
- (LayoutTestController::WorkQueue::reset):
-
-2010-06-04 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- [Qt] QtTestLauncher should allow notifications by default.
- https://bugs.webkit.org/show_bug.cgi?id=40078
-
- * QtTestBrowser/main.cpp:
- (NotificationsPermissionController::NotificationsPermissionController):
- (NotificationsPermissionController::checkPermission):
- (NotificationsPermissionController::requestPermission):
- (LauncherWindow::LauncherWindow):
-
-2010-06-04 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Adam Barth.
-
- Detect whether the user's environment can open a browser.
- https://bugs.webkit.org/show_bug.cgi?id=40136
-
- Some environments like cygwin silently fail webbrowser.open() causing
- webkit-patch upload not to display any diff. This detects environments
- where webbrowser.open() would fail by testing if webbrowser.get()
- raises an exception.
-
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
-
-2010-06-03 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by David Levin.
-
- Add dependencies required to link with VS Express 2005.
- https://bugs.webkit.org/show_bug.cgi?id=40038
-
- Visual Studio implicitly links against these libs.
- VC++ Express does not.
-
- * WebKitAPITest/WebKitAPITestCommon.vsprops:
- * WinLauncher/WinLauncher.vcproj:
-
-2010-06-03 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by David Levin.
-
- bad codecs.open in webkitpy/layout_tests/ports/websocket_server.py
- https://bugs.webkit.org/show_bug.cgi?id=40105
-
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- - kill pywebsocket process when url is not alive and the process is not
- terminated, not to leave pywebsocket server running.
- - fix codecs.open parameters.
-
-2010-06-03 Fumitoshi Ukai <ukai@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- old-run-webkit-tests should use ensure-valid-python to check if it can run the websockets tests
- https://bugs.webkit.org/show_bug.cgi?id=39058
-
- * Scripts/ensure-valid-python:
- - Perl 5.8 doesn't have File::Temp->newdir(). Use File::Temp->tempdir() instead.
- - Add --check-only and --help option.
- - --check-only option only checks python version and don't try to install Python 2.5.
- - Set executable bit.
- * Scripts/old-run-webkit-tests:
- - Check if it can run the websocket tests by calling ensure-valid-python --check-only.
-
-2010-05-14 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- add a RietveldUploadQueue to upload in-rietveld? patches to rietveld
- https://bugs.webkit.org/show_bug.cgi?id=38918
-
- Patches with in-rietveld? get uploaded to rietveld and get marked
- in-rietveld+. If the upload fails, they are marked in-rietveld-
- and an error is logged to the bug, like the commit-queue.
-
- Also, get rid of --fancy-review and the ability to upload to rietveld
- using webkit-patch upload/post.
-
- * Scripts/webkitpy/common/net/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/options.py:
- * Scripts/webkitpy/tool/steps/postcodereview.py:
-
-2010-05-24 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Chris Jerdonek.
-
- many webkit-patch commands fail in a non-svn tracking git checkout
- https://bugs.webkit.org/show_bug.cgi?id=38156
-
- If the svn-tracking-branch (trunk) doesn't exist, fallback to the git remote-tracking-branch (master).
- If neither exists, then error out. This makes webkit-patch work
- for anyone that follows the intructions at http://trac.webkit.org/wiki/UsingGitWithWebKit
- to checkout webkit. The fallback to master is for people who don't
- do the steps on that page for tracking svn.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2010-06-03 Mike Fenton <mifenton@rim.com>
-
- Unreviewed.
-
- Reverse e-mail for myself in committers.py to correspond with bugzilla account.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-06-03 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: a number of fixes that make InspectorController
- happy with null redirects.
-
- https://bugs.webkit.org/show_bug.cgi?id=40109
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
-
-2010-06-02 Tasuku Suzuki <tasuku.suzuki@nokia.com>
-
- Reviewed by Shinichiro Hamaji.
-
- [Qt] Fix compilation with QT_NO_PROPERTIES
- https://bugs.webkit.org/show_bug.cgi?id=38324
-
- * QtTestBrowser/main.cpp:
- (LauncherWindow::init):
-
-2010-06-02 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Make possible run DRT with QGraphicsWebView
- https://bugs.webkit.org/show_bug.cgi?id=40016
-
- Make possible to use a environment variable for switching backend.
- Usage: QT_DRT_WEBVIEW_MODE=graphics WebKitTools/Scripts/run-webkit-tests --qt
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebViewGraphicsBased::WebViewGraphicsBased):
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::setGraphicsBased):
- (WebCore::DumpRenderTree::isGraphicsBased):
- (WebCore::WebViewGraphicsBased::graphicsView):
- (WebCore::WebViewGraphicsBased::setPage):
- * Scripts/old-run-webkit-tests:
-
-2010-06-02 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Slave lost shouldn't be recognized as build failed.
- https://bugs.webkit.org/show_bug.cgi?id=39282
-
- * Scripts/webkitpy/common/net/buildbot.py: Treat slave lost as green.
- * Scripts/webkitpy/common/net/buildbot_unittest.py: Add unit test for slave lost.
-
-2010-06-01 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Fix the lifecycle of notification objects
- https://bugs.webkit.org/show_bug.cgi?id=40003
-
- Remove the dependency of notifications on QWebPage.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::requestPermissionCallback):
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::requestPermission):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
-
-2010-06-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r60559.
- http://trac.webkit.org/changeset/60559
- https://bugs.webkit.org/show_bug.cgi?id=40055
-
- It broke python unit test (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-06-02 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Slave lost shouldn't be recognized as build failed.
- https://bugs.webkit.org/show_bug.cgi?id=39282
-
- * Scripts/webkitpy/common/net/buildbot.py:
-
-2010-06-02 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix crash caused when assigned_to is disabled
- https://bugs.webkit.org/show_bug.cgi?id=40039
-
- * Scripts/webkitpy/common/net/bugzilla.py:
-
-2010-06-02 Sterling Swigart <sswigart@google.com>
-
- Reviewed by David Levin.
-
- Image Resizer Patch 0: Added compilation argument to conditionally compile pending patches.
- https://bugs.webkit.org/show_bug.cgi?id=39906
-
- * Scripts/build-webkit:
-
-2010-06-01 Raine Makelainen <raine.makelainen@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- Fixed tests to use QWebSettings::JavascriptCanAccessClipboard instead of QWebSettings::JavaScriptCanAccessClipboard.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
-
-2010-06-01 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Mark Rowe.
-
- A nicer Tiger build fix.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- Enable GCC_OBJC_CALL_CXX_CDTORS via .xcconfig.
-
-2010-06-01 Alexey Proskuryakov <ap@apple.com>
-
- A real Tiger build fix.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Enable GCC_OBJC_CALL_CXX_CDTORS
- for all configurations, not just debug.
-
-2010-06-01 Alexey Proskuryakov <ap@apple.com>
-
- Tiger build fix.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Enable GCC_OBJC_CALL_CXX_CDTORS.
-
-2010-06-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Get more mouse tests passing
- https://bugs.webkit.org/show_bug.cgi?id=39040
-
- Reproduce the logic from the Windows EventSender for mapping
- button numbers to GDK button numbers. Move this logic to the
- prepareMouseButtonEvent helper.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Reproduce Windows logic.
- (contextClickCallback): Move mapping logic to prepareMouseButtonEvent.
- (mouseDownCallback): Ditto.
- (mouseUpCallback): Ditto.
-
-2010-06-01 Alexey Proskuryakov <ap@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=39434
- REGRESSION (r59811): Geolocation callbacks cannot be created
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added MockGeolocationProvider.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Tell the view to use MockGeolocationProvider.
- (resetWebViewToConsistentStateBeforeTesting): Make sure that mock notifications don't leak
- into subsequent tests.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockGeolocationPosition): Changed to use MockGeolocationProvider.
- (LayoutTestController::setMockGeolocationError): Ditto.
-
- * DumpRenderTree/mac/MockGeolocationProvider.h: Added.
- * DumpRenderTree/mac/MockGeolocationProvider.mm: Added.
- (+[MockGeolocationProvider shared]):
- (-[MockGeolocationProvider dealloc]):
- (-[MockGeolocationProvider setPosition:]):
- (-[MockGeolocationProvider setError:]):
- (-[MockGeolocationProvider registerWebView:]):
- (-[MockGeolocationProvider unregisterWebView:]):
- (-[MockGeolocationProvider lastPosition]):
- (-[MockGeolocationProvider stopTimer]):
- (-[MockGeolocationProvider timerFired]):
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForGeolocationRequestFromOrigin:frame:listener:]):
- This delegate method must send a response. I'm not sure what the two-stage check is supposed
- to achieve, it seems unnecessary.
-
-2010-05-12 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Double clicks cause three button press events
- https://bugs.webkit.org/show_bug.cgi?id=38853
-
- WebKit now filters the extra GDK_BUTTON_PRESS before GDK_2BUTTON_PRESS
- and GDK_3BUTTON_PRESS via gdk_event_peek(). Since EventSender bypasses
- the GDK event queue entirely, we simply do not send the extra event.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseDownCallback): Do not send extra event. Send GDK_3BUTTON_PRESS appropriately.
- (dispatchEvent): Properly handle GDK_3BUTTON_PRESS.
-
-2010-06-01 Martin Robinson <mrobinson@igalia.com>
-
- Not reviewed. Build fix.
-
- Fix GTK+ build caused by a bad merge.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Use the GdkEvent union as a pointer here.
-
-2010-06-01 Martin Robinson <mrobinson@webkit.org>
-
- Reviewed by Xan Lopez.
-
- [GTK] Double clicks cause three button press events
- https://bugs.webkit.org/show_bug.cgi?id=38853
-
- Small EventSender cleanups. Consolidate some common code. Style fixes.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (prepareMouseButtonEvent): Added.
- (contextClickCallback): Use prepareMouseButtonEvent.
- (mouseDownCallback): Use prepareMouseButtonEvent.
- (mouseUpCallback): Use prepareMouseButtonEvent.
- (mouseMoveToCallback): Small style fix.
-
-2010-06-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Double clicks cause three button press events
- https://bugs.webkit.org/show_bug.cgi?id=38853
-
- Add rudimentary leapForward support to the GTK+ DRT. leapForward allows a test
- to pause for a specified amount of time. It is used in the processing of drag-
- -and-drop data as well as to separate distinct mouse double-clicks in some tests.
- This patch enables tests that rely on the latter behavior to pass.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared): Only initialize the EventSender when loading the top frame.
- * DumpRenderTree/gtk/EventSender.cpp:
- (leapForwardCallback): Add support for adjusting the time offset on leapForward().
- (contextClickCallback): Use sendOrQueueEvent.
- (updateClickCount): Take the time offset into account when counting clicks.
- (mouseDownCallback): Use sendOrQueueEvent.
- (getStateFlags): Change down/currentEventButton into buttonCurrentlyDown/lastClickButton.
- (mouseUpCallback): Use sendOrQueueEvent.
- (mouseMoveToCallback): Ditto.
- (mouseWheelToCallback): Ditto.
- (sendOrQueueEvent): Added.
- (dispatchEvent): Added.
- (replaySavedEvents): Pause when an event has a delay and defer to dispatchEvent.
- (makeEventSender): Only initialize the EventSender when loading the top frame.
- * DumpRenderTree/gtk/EventSender.h: Ditto.
-
-2010-06-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] css1/color_and_background/background_attachment.html fails on the 32-bit debug bot
- https://bugs.webkit.org/show_bug.cgi?id=39101
-
- Work around timing issues for render tree dumps by pumping the
- main loop before doing the dump. Resize events are asynchronous
- in GTK+, so sometimes resize requests are still pending when DRT
- dumps the tree.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump): Pump the main loop before dumping the render tree.
-
-2010-05-31 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Fix crash of a test after another test with multiple windows
- https://bugs.webkit.org/show_bug.cgi?id=39942
-
- If a test opens multiple windows, focuses on non-main window, and
- the focused window is closed, TestShell::m_focusedWidget points a
- deleted object.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::closeWindow): Clear m_focusedWidget.
-
-2010-05-30 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- new-run-webkit-tests: Support DRT on Chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=39810
-
- Add --test-shell flag to DRT/Chromium, and it changes DRT so that
- it behaves like test_shell about command analysis, printing
- format, pixel dumping, and timeout handling.
-
- chromium.py and chromium_win.py supports the --test-shell flag and
- DRT/Chromium-win binary names.
-
- * DumpRenderTree/DumpRenderTree.gypi: Add new files.
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest): Support for test_shell-style command.
- (main): Introduce --test-shell.
- * DumpRenderTree/chromium/TestEventPrinter.cpp: Added.
- * DumpRenderTree/chromium/TestEventPrinter.h: Added.
- TestEventPrinter class manages stdio output and image output.
- TestEventPrinter.cpp has two implementations; DRTPrinter and
- TestShellPrinter.
- * DumpRenderTree/chromium/TestShell.cpp:
- Some changes for TestEventPrinter.
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::testTimedOut):
- (TestShell::dump):
- (TestShell::dumpImage):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::printer):
- (TestShell::layoutTestTimeout):
- (TestShell::layoutTestTimeoutForWatchDog):
- (TestShell::setLayoutTestTimeout):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (watchDogThread): Use TestShell::layoutTestTimeoutForWatchDog().
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2010-05-30 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Enhance Qt DRT implementation to support platform scroll wheel events.
-
- https://bugs.webkit.org/show_bug.cgi?id=36004
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender): QApplication::setWheelScrollLines(2) in order to match
- Scrollbar::pixelsPerLineStep() for DRT testing.
- (EventSender::mouseScrollBy): Added
- (EventSender::continuousMouseScrollBy): Added
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2010-05-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by David Levin.
-
- webkit-patch should support CHANGE_LOG_EDIT_APPLICATION
- https://bugs.webkit.org/show_bug.cgi?id=39546
-
- One sublty is that we want to wait for the user to finish editing the
- ChangeLog before moving on to the next step. That means we want to pass
- -W to open. However, if the user is using Xcode to edit the ChangeLog,
- we don't want them to have to exit the Xcode application. For this reason,
- we create a new instance of the application with -n.
-
- Overall, xed seems like a better solution, so we recommend that too.
-
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/editchangelog.py:
-
-2010-05-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: fix handling of Ctrl-C to exit even if some
- threads are wedged. Also, the script will print the results of the
- tests completed when the interrupt occurs.
-
- https://bugs.webkit.org/show_bug.cgi?id=33238
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2010-05-28 Darin Adler <darin@apple.com>
-
- Ignore more Python messiness.
-
- * Scripts/webkitpy/layout_tests/data/platform/test: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/layout_package: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/test_types: Added property svn:ignore.
- * Scripts/webkitpy/test: Added property svn:ignore.
- * Scripts/webkitpy/thirdparty/simplejson: Added property svn:ignore.
-
-2010-05-28 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2010-05-28 Chris Fleizach <cfleizach@apple.com>
-
- Build fix. No review.
-
- AX: need to catch NSAccessibilityExceptions in DRT
- https://bugs.webkit.org/show_bug.cgi?id=39881
-
- It looks like Tiger doesn't like seeing a NSMakeRange inside a @try.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::selectedTextRange):
-
-2010-05-28 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Darin Adler.
-
- AX: need to catch NSAccessibilityExceptions in DRT
- https://bugs.webkit.org/show_bug.cgi?id=39881
-
- Normally, accessibility exceptions are caught in the AX Runtime on the Mac, but
- because DRT is its own AX client, no one is there to catch these otherwise innocuous exceptions.
-
- So DRT should wrap exception handlers around its AX related calls.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (attributesOfElement):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::titleUIElement):
- (AccessibilityUIElement::parentElement):
- (AccessibilityUIElement::disclosedByRow):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::boolAttributeValue):
- (AccessibilityUIElement::isAttributeSettable):
- (AccessibilityUIElement::isAttributeSupported):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::subrole):
- (AccessibilityUIElement::roleDescription):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::orientation):
- (AccessibilityUIElement::stringValue):
- (AccessibilityUIElement::language):
- (AccessibilityUIElement::helpText):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (AccessibilityUIElement::valueDescription):
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::isActionSupported):
- (AccessibilityUIElement::isEnabled):
- (AccessibilityUIElement::isRequired):
- (AccessibilityUIElement::isSelected):
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::hierarchicalLevel):
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
- (AccessibilityUIElement::lineForIndex):
- (AccessibilityUIElement::boundsForRange):
- (AccessibilityUIElement::stringForRange):
- (AccessibilityUIElement::attributesOfColumnHeaders):
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfColumns):
- (AccessibilityUIElement::attributesOfRows):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::attributesOfHeader):
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
- (AccessibilityUIElement::indexInTable):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::cellForColumnAndRow):
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::setSelectedTextRange):
- (AccessibilityUIElement::increment):
- (AccessibilityUIElement::decrement):
- (AccessibilityUIElement::showMenu):
- (AccessibilityUIElement::press):
- (AccessibilityUIElement::url):
- (AccessibilityUIElement::hasPopup):
-
-2010-05-28 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Pass all web notification layout tests
- https://bugs.webkit.org/show_bug.cgi?id=39146
-
- Mimic Chromium's test_shell security model in Qt's DRT.
- It makes a list of origins which were granted permission to display
- notifications, and only those origins can display notifications.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::checkPermissionCallback):
- (WebCore::requestPermissionCallback):
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::checkPermission):
- (WebCore::DumpRenderTree::requestPermission):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::checkDesktopNotificationPermission):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2010-05-27 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style complains about use of NULL in GTK function calls that require sentinels
- https://bugs.webkit.org/show_bug.cgi?id=39372
-
- Don't warn about NULL in g_*() calls. Zero can't be used instead
- for calls like g_build_filename and g_object_get/set.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-05-27 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Platform plugin example
- https://bugs.webkit.org/show_bug.cgi?id=39489
-
- Exempting directory WebKit/qt/examples/ from style guide.
-
- * Scripts/webkitpy/style/checker.py:
-
-2010-05-26 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by David Levin.
-
- [style] Allow usage of NULL in gst_*_many()
- https://bugs.webkit.org/show_bug.cgi?id=39740
-
- Don't warn if NULL is used by gst_*_many() functions. Zero can't
- be used for the reason explained in Bug 32858.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2010-05-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Update script to run the normal version of the parser tests.
-
- * Scripts/test-html5-parser:
-
-2010-05-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add HTML5 parser support to run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=39815
-
- * Scripts/old-run-webkit-tests:
-
-2010-05-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make HTML5 lexer not ASSERT when resuming partial parses
- https://bugs.webkit.org/show_bug.cgi?id=39755
-
- Add webkit-resumer.html to the HTML5 parser test suite.
-
- * Scripts/test-html5-parser:
-
-2010-05-24 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] setup fonts on chromium linux DRT
- https://bugs.webkit.org/show_bug.cgi?id=39644
-
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (setupFontconfig):
- (platformInit):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintRect): Fix a bug where in release builds, we didn't initialize m_canvas.
- * DumpRenderTree/chromium/fonts.conf: Added.
-
-2010-05-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Re-commit r58765 - it had been rolled out to see if it was causing
- a perf regression (in r59787 and r59789), but that does not seem to
- have been the case.
-
- https://bugs.webkit.org/show_bug.cgi?id=39605
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::show):
-
-2010-05-25 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Chris Jerdonek.
-
- remove suppression of rietveld logging
- https://bugs.webkit.org/show_bug.cgi?id=39693
-
- Now that we only upload to rietveld explicitly, e.g. on the bot
- or via webkit-patch post-attachment-to-rietveld, we should print
- all the rietveld logging. It was suppressed before to avoid making
- webkit-patch upload too noisy.
-
- * Scripts/webkitpy/common/net/rietveld.py:
-
-2010-05-25 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- [Qt] Expose the editing behavior setting in DRT to test all editing code paths
- https://bugs.webkit.org/show_bug.cgi?id=39680
-
- Implement LayoutTestController::setEditingBehavior in Qt's DRT.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setEditingBehavior):
-
-2010-05-25 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix after API change and addition of WebCore/platform/text/transcoder dir.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setEditingBehavior):
- * wx/build/settings.py:
-
-2010-05-24 Antonio Gomes <tonikitoo@webkit.org>
-
- Reviewed by Eric Seidel and Kent Tamura (for the Chromium part).
-
- editingBehavior settings needs to be set back to a reasonable default between tests
- https://bugs.webkit.org/show_bug.cgi?id=39433
-
- Similarly to r59861, hard code the default setting during reset for Gtk and Chromium,
- so that the serialized version of the setting stays in sync with expectations.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2010-05-24 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch land calls scm.changed_files 4 times!
- https://bugs.webkit.org/show_bug.cgi?id=39584
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- - Assert that we don't call modified_changelogs too often.
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- - Use cached changelogs list instead of calling modified_changelogs directly.
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- - ditto.
-
-2010-05-24 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Import layout_test_helper for Windows
- https://bugs.webkit.org/show_bug.cgi?id=39581
-
- Import Chromium win/layout_test_helper.cc as LayoutTestHelperWin.cpp.
- http://src.chromium.org/viewvc/chrome/trunk/src/webkit/tools/test_shell/win/layout_test_helper.cc
-
- * DumpRenderTree/chromium/LayoutTestHelperWin.cpp: Added.
-
-2010-05-24 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [DRT/Chromium] Reset frame name
- https://bugs.webkit.org/show_bug.cgi?id=39586
-
- This change fixes about 70 unexpected results.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
-
-2010-05-24 Marcus Bulach <bulach@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] Adds WebGeolocationServiceMockImpl to remove public dependency on wtf/HashMap.h
- https://bugs.webkit.org/show_bug.cgi?id=39587
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::geolocationService):
-
-2010-05-24 Robert Hogan <robert@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] DRT Support for removeOriginAccessWhitelistEntry
-
- Unskips http/tests/xmlhttprequest/origin-whitelisting-removal.html
-
- [Qt] DRT Support for removeOriginAccessWhitelistEntry
- https://bugs.webkit.org/show_bug.cgi?id=39565
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::removeOriginAccessWhitelistEntry):
-
-2010-05-24 Marcus Bulach <bulach@google.com>
-
- Reviewed by Ojan Vafai.
-
- _svn_branch_has_extra_commits needs to check for ^HEAD instead of ^head.
- https://bugs.webkit.org/show_bug.cgi?id=39603
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-== Rolled over to ChangeLog-2010-05-24 ==
diff --git a/Tools/ChangeLog-2012-05-22 b/Tools/ChangeLog-2012-05-22
deleted file mode 100644
index b77231f65..000000000
--- a/Tools/ChangeLog-2012-05-22
+++ /dev/null
@@ -1,72869 +0,0 @@
-2012-05-21 Gavin Barraclough <barraclough@apple.com>
-
- Disable private names by default in WebCore
- https://bugs.webkit.org/show_bug.cgi?id=87088
-
- Reviewed by Geoff Garen.
-
- r117859 introduced a preliminary implementation of ES6-like private name objects to JSC.
- These are probably not yet ready to be web-facing, so disabling by default in WebCore.
- Opting-in for JSC & DumpRenderTree so that we can still run the fast/js/names.html test.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- - Enable private name support in DRT.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- - Enable private name support in WKTR.
-
-2012-05-22 Martin Robinson <mrobinson@igalia.com>
-
- Fix a small syntax error in the GTK+ API test runner.
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/run-api-tests:
- (TestRunner._setup_testing_environment): When reporting the error use
- the correct Python format string syntax.
-
-2012-05-22 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [GTK][DRT] Wrong cache model is taken in LayoutTestController's setCacheModel()
- https://bugs.webkit.org/show_bug.cgi?id=86962
-
- Reviewed by Gustavo Noronha Silva.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setCacheModel): Sets WEBKIT_CACHE_MODEL_WEB_BROWSER if argument is 2.
-
-2012-05-22 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] Key modifier bit flags have enum type.
- https://bugs.webkit.org/show_bug.cgi?id=86838
-
- Reviewed by Antonio Gomes.
-
- Refactoring. Key modifier flags are unsigned int.
- Key modifier bit flags used have enum type. It caused problems as a key can have several modifiers
- at the same time and the union of modifiers (i.e. EvasKeyModifierControl | EvasKeyModifierShift)
- would have been out of EvasKeyModifier enum.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (KeyEventInfo::KeyEventInfo):
- (KeyEventInfo):
- (MouseEventInfo::MouseEventInfo):
- (MouseEventInfo):
- (setEvasModifiers):
- (modifiersFromJSValue):
- (mouseDownCallback):
- (mouseUpCallback):
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- (createKeyEventInfo):
- (sendKeyDown):
-
-2012-05-22 Takashi Sakamoto <tasak@google.com>
-
- Implement DOM_KEY_LOCATION_LEFT and RIGHT of KeyboardEvent's location property
- https://bugs.webkit.org/show_bug.cgi?id=86694
-
- Modify keyDown to create left- and right- control, shift, and alt
- keyevent for a test to check that keyLocation property can have
- DOM_KEY_LOCATION_LEFT for left-control, shift, and alt, and
- DOM_KEY_LOCATION_RIGHT for right-control, shift, and alt.
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:withLocation:]):
-
-2012-05-22 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DRT needs to print information about received Web Intents
- https://bugs.webkit.org/show_bug.cgi?id=86864
-
- Reviewed by Adam Barth.
-
- Catch "intent,new" signal in EFL's DumpRenderTree and dump information
- about the intent. This output is expected by several webintents test
- cases.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameIntentNew):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-22 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Add support to enable/disable DOM paste
- https://bugs.webkit.org/show_bug.cgi?id=85040
-
- Reviewed by Gustavo Noronha Silva.
-
- Enable JavascriptCanAccessClipboard setting on each test startup so
- that test cases which rely on clipboard can be unskipped.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-05-22 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] EventSenderProxy::keyDown doesn't use the helper functions to send events
- https://bugs.webkit.org/show_bug.cgi?id=87044
-
- Reviewed by Alexis Menard.
-
- Use sendOrQueueEvent instead of m_testController->mainWebView()->sendEvent
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::keyDown):
-
-2012-05-22 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk][LayoutTests] Repaint the complete WebKitWebView before dumping pixel results
- https://bugs.webkit.org/show_bug.cgi?id=86284
-
- Reviewed by Martin Robinson.
-
- Paint the current dirty regions of the web view once more before
- dumping pixel results.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump):
-
-2012-05-22 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- GCC 4.7 and C++11 support.
- https://bugs.webkit.org/show_bug.cgi?id=86465
-
- Reviewed by Darin Adler.
-
- Update detection of C++11 mode in GCC.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-05-22 Hao Zheng <zhenghao@chromium.org>
-
- [chromium] WebViewHost should use ENABLE guards for some features.
- https://bugs.webkit.org/show_bug.cgi?id=87087
-
- Reviewed by Kent Tamura.
-
- These features are disabled on OS(ANDROID) and so shouldn't be
- compiled when the feature is off.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-05-21 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DumpRenderTree does not print didReceiveTitle messages
- https://bugs.webkit.org/show_bug.cgi?id=85971
-
- Reviewed by Antonio Gomes.
-
- Listen for the "title,changed" signal on the frames instead of the
- view so that we get notified for other frame than the main one.
- Print out the didReceiveTitle messages which are expected if
- LayoutTestController's dumpFrameLoadCallbacks() returns true.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameTitleChanged):
- (DumpRenderTreeChrome::onFrameCreated):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-21 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Unreviewed, reverting r116461.
-
- r116461 caused a regression in the pixel tests, as scrollbars
- stopped being rendered in the PNGs.
-
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView):
-
-2012-05-21 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/11460336> and https://bugs.webkit.org/show_bug.cgi?id=87061
- WKPageGetScaleFactor can return 0.0 after a session is restored
-
- Reviewed by Beth Dakin.
-
- Loads a simple page, creates a session from it, restores that session, then
- queries the page scale factor for the appropriate value of 1.0.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::createSessionState):
- (TestWebKitAPI::TEST):
-
-2012-05-21 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [WK2] Remove a useless #if on Tools/WebKitTestRunner/TestController.cpp
- https://bugs.webkit.org/show_bug.cgi?id=87047
-
- Reviewed by Alexis Menard.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
-
-2012-05-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up the TestExpectations constructor
- https://bugs.webkit.org/show_bug.cgi?id=86926
-
- Reviewed by Ojan Vafai.
-
- The TestExpectations constructor was attempting to pretend
- it didn't need to get stuff from the Port, and as a result we
- had a complicated constructor with a bunch of arguments, and
- calling it was too complicated (although it made testing a
- little easier and simplified the style checker).
-
- This patch has the constructor pull all the data it needs from
- the port directly, and allows us to delete a bunch of code.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.parse_expectations):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_update_summary_with_result):
- (ResultSummaryTest.get_result_summary):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (parse_exp):
- (SkippedTests.check):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- (run):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations.FakePort.__init__):
- (LintTest.test_all_configurations.FakePort.test_expectations):
- (LintTest.test_all_configurations.FakePort.skipped_layout_tests):
- (LintTest.test_all_configurations.FakePort):
- (LintTest.test_all_configurations.FakePort.all_test_configurations):
- (LintTest.test_all_configurations.FakePort.configuration_specifier_macros):
- (LintTest.test_all_configurations.FakePort.path_from_webkit_base):
- (LintTest.test_all_configurations.FakePort.get_option):
- (LintTest.test_all_configurations.FakeFactory.__init__):
- (LintTest.test_all_configurations.FakeFactory.all_port_names):
- (LintTest.test_all_configurations):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_result_summary):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations._model):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._update_expectations_file):
- (RebaselineExpectations._expectations):
-
-2012-05-21 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] DRT support for layoutTestController.setSerializeHTTPLoads
- https://bugs.webkit.org/show_bug.cgi?id=86653
-
- Reviewed by Gustavo Noronha Silva.
-
- Add missing implementation setSerializeHTTPLoads to allow
- testing resource load order.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSerializeHTTPLoads):
-
-2012-05-21 Elliot Poger <epoger@chromium.org>
-
- add skia_test_expectations override file to chromium NRWT
- https://bugs.webkit.org/show_bug.cgi?id=86749
-
- Reviewed by Dirk Pranke
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_overrides_and_builder_names):
-
-2012-05-21 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- webkitdirs.pm: Fix undefined CXXFLAGS variable
- https://bugs.webkit.org/show_bug.cgi?id=87000
-
- Reviewed by Martin Robinson.
-
- Fixes a warning on Autotools and CMake buildsystem when
- CXXFLAGS is not defined.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
- (generateBuildSystemFromCMakeProject):
-
-2012-05-21 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Move setEditingBehavior() from layoutTestController to window.internals
- https://bugs.webkit.org/show_bug.cgi?id=42689
-
- Reviewed by Hajime Morita and Kenneth Rohde Christiansen.
-
- Remove code that implements setEditingBehavior() for each platform. Note that
- During the InternalsObject reset the behavior is changed back to the platform
- default.
-
- Qt and Chromium ports set a default editing behavior for running tests different
- from the platform default, so they still keep code for resetting to the desired
- editing behavior. Other ports use the their defaults, that are restored by
- internals object.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-21 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] PlatformKeyboardEventEfl is missing ESC key handling.
- https://bugs.webkit.org/show_bug.cgi?id=86837
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyNameFromJSValue): Added ESC key handling.
-
-2012-05-20 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add GCancellable parameter to all methods using gio async pattern
- https://bugs.webkit.org/show_bug.cgi?id=86843
-
- Reviewed by Gustavo Noronha Silva.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browser_window_load_uri):
-
-2012-05-20 Daniel Bates <dbates@webkit.org>
-
- svn-apply cannot apply patches to files that contain space
- characters in their path
- https://bugs.webkit.org/show_bug.cgi?id=85742
-
- Reviewed by Eric Seidel.
-
- Fixes an issue where svn-apply cannot apply a patch to a file
- if there is a space in its file path.
-
- The regular expression we were using to fix up +++/--- lines
- was too strict; it only matched file paths that contained non-
- whitespace characters. Instead, it's sufficient to match file
- paths whose characters aren't in the set {\t, \n, \r}.
-
- * Scripts/VCSUtils.pm:
- (parseSvnDiffHeader):
- (runCommand): Added.
- * Scripts/svn-apply:
- (scmWillDeleteFile): Modified to call runCommand() so as to
- handle querying git for a file whose path may contain a space
- character.
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Added test case "new file with spaces in its name".
- * Scripts/webkitperl/VCSUtils_unittest/runCommand.pl: Added.
-
-2012-05-20 Daniel Bates <dbates@webkit.org>
-
- svn-apply fails to apply a patch that moves files from directory A to A/B
- https://bugs.webkit.org/show_bug.cgi?id=86973
-
- Reviewed by Eric Seidel.
-
- Fixes an issue where svn-apply fails to apply a patch that moves files in a
- directory A to some sub-directory B in A with a Git checkout of WebKit.
-
- Currently, svn-apply only creates new directories along a file system path that
- it hasn't already processed. That is, if svn-apply creates/traverses all the
- intermediate directories along the path A/B then it will assume the directory A/B
- exists for all subsequent requests to create sub-directories in A/B (e.g. A/B/C).
- When moving a file F in directory A to directory A/B using a Git checkout, Git
- may remove directory A if F is the last file in A. Therefore, svn-apply will fail
- to create sub-directory B in A (since A no longer exists).
-
- * Scripts/svn-apply:
- (addDirectoriesIfNeeded):
-
-2012-05-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [Chromium] Print layout test result on buildbot
- https://bugs.webkit.org/show_bug.cgi?id=86965
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests: Add chrome-bot to buildbot user list.
- (runningOnBuildBot):
-
-2012-05-19 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Don't stop the build if a build system update check fails.
-
- * waf/build/build_utils.py:
- (download_if_newer):
-
-2012-05-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. Sometimes --suffixes isn't supplied.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaseline):
- (GardeningHTTPRequestHandler.optimizebaselines):
-
-2012-05-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Add "Lion" -> "mac-lion" to the builder port map.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-05-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r117675.
- http://trac.webkit.org/changeset/117675
- https://bugs.webkit.org/show_bug.cgi?id=86938
-
- Broke builds. You can't initialize members by members
- themselves (Requested by rniwa on #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printPage):
-
-2012-05-18 Kausalya Madhusudhanan <kmadhusu@chromium.org>
-
- [chromium] User overloaded printBegin() webkit API to support auto fit to page functionality.
- https://bugs.webkit.org/show_bug.cgi?id=86684
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printPage):
-
-2012-05-18 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL][DRT] Make it possible to enable CSS Grid Layout.
- https://bugs.webkit.org/show_bug.cgi?id=86921
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::overridePreference):
-
-2012-05-18 Dirk Pranke <dpranke@chromium.org>
-
- scm.add() doesn't work properly with svn 1.7
- https://bugs.webkit.org/show_bug.cgi?id=86779
-
- Reviewed by Eric Seidel.
-
- Re-land the change in r117526 with a fix to maintain
- compatibility with SVN 1.4.4 (yay Leopard!); turns out
- that "svn info foo" works correctly in 1.4.4 but
- "svn info" from the directory "foo" doesn't if foo is
- not part of a checkout. in_working_directory() and
- value_from_svn_info() were using the arguments inconsistently,
- leading to weird errors.
-
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM):
- (SCM.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN):
- (SVN.in_working_directory):
-
-2012-05-18 Levi Weintraub <leviw@chromium.org>
-
- Unreviewed. Moving myself from committer to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Buildbot output does not print result stats anymore
- https://bugs.webkit.org/show_bug.cgi?id=85366
-
- Reviewed by Ryosuke Niwa.
-
- Make run-webkit-tests pass --verbose to new-run-webkit-tests
- on EFL Debug bot.
-
- * Scripts/run-webkit-tests:
- (runningOnBuildBot):
-
-2012-05-18 Tony Chang <tony@chromium.org>
-
- remove the CSS_GRID_LAYOUT compiler define, but default grid layout to off
- https://bugs.webkit.org/show_bug.cgi?id=86767
-
- Reviewed by Ojan Vafai.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-18 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] fast/events/page-visibility-iframe-move-test.html fails
- https://bugs.webkit.org/show_bug.cgi?id=86731
-
- Reviewed by Simon Hausmann.
-
- Set the page visibility on a single page instead of on all pages
- from the page group.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPageVisibility):
- (WTR::LayoutTestController::resetPageVisibility):
-
-2012-05-18 Yi Shen <yi.4.shen@nokia.com>
-
- REGRESSION (r102553): Smart links do not work
- https://bugs.webkit.org/show_bug.cgi?id=85463
-
- Reviewed by Ryosuke Niwa.
-
- Add LayoutTestController::setAutomaticLinkDetectionEnabled().
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAutomaticLinkDetectionEnabledCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Set automatic link detection enabled.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAutomaticLinkDetectionEnabled): Not implemented.
-
-2012-05-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Add shortcut to dump Security Origin and Web Database information
- https://bugs.webkit.org/show_bug.cgi?id=86521
-
- Reviewed by Gustavo Noronha Silva.
-
- Added key combination (CTRL+s) to dump information about the
- security origin and databases of the main frame. Useful for API
- testing and debugging.
-
- * EWebLauncher/main.c:
- (on_key_down):
-
-2012-05-18 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] DRT needs an implementation of layoutTestController.setSerializeHTTPLoads
- https://bugs.webkit.org/show_bug.cgi?id=86101
-
- Reviewed by Ryosuke Niwa.
-
- Add missing implementation setSerializeHTTPLoads to allow
- testing resource load order.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setSerializeHTTPLoads):
-
-2012-05-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] plumb the frame for which a drag was initiated to the WebViewClient
-
- https://bugs.webkit.org/show_bug.cgi?id=86670
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::startDragging):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-05-18 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] appcache tests are flaky
- https://bugs.webkit.org/show_bug.cgi?id=86619
-
- Reviewed by Ryosuke Niwa.
-
- Correctly set the application cache database path in EFL's
- DumpRenderTree initialization code.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize):
-
-2012-05-17 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL][DRT] Call resetInternalsObject() after each test.
- https://bugs.webkit.org/show_bug.cgi?id=86793
-
- Reviewed by Antonio Gomes.
-
- We need to reset the internals object's settings after running
- each test so that there are no interferences between each test's
- results.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (runTest):
-
-2012-05-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r117526.
- http://trac.webkit.org/changeset/117526
- https://bugs.webkit.org/show_bug.cgi?id=86801
-
- broke Chromium Mac 10.5 layout test canaries (Requested by
- pkasting on #webkit).
-
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM):
- (SCM.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN):
- (SVN.in_working_directory):
-
-2012-05-17 Dirk Pranke <dpranke@chromium.org>
-
- scm.add() doesn't work properly with svn 1.7
- https://bugs.webkit.org/show_bug.cgi?id=86779
-
- Reviewed by Ojan Vafai.
-
- The code relied on '.svn' directories being present
- in order to tell if a directory had already been added to the
- repository; this is no longer true in SVN 1.7.
-
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM):
- (SCM.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN):
- (SVN.in_working_directory):
-
-2012-05-17 Jon Lee <jonlee@apple.com>
-
- Update Apple buildbots to prioritize latest changelists
- https://bugs.webkit.org/show_bug.cgi?id=86766
-
- Reviewed by Brady Eidson.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (pickLatestBuild): Function to get the most pick the most recent build request.
- (loadBuilderConfig): Configure builders in the AppleMac and AppleWin categories to
- use the pickLatestBuild function when choosing which request to build next.
-
-2012-05-17 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt] Fix MiniBrowser by using correct syntax for qrc URLs
- https://bugs.webkit.org/show_bug.cgi?id=86761
-
- Reviewed by Alexis Menard.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::updateVisualMockTouchPoints):
-
-2012-05-17 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Add API for Web Database handling
- https://bugs.webkit.org/show_bug.cgi?id=85178
-
- Reviewed by Antonio Gomes.
-
- Use the newly introduced Web Database API in EFL's DRT.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::clearAllDatabases):
-
-2012-05-17 Dan Bernstein <mitz@apple.com>
-
- REGRESSION (r117428): WebKit API/SPI was removed
- https://bugs.webkit.org/show_bug.cgi?id=86748
-
- Reverted r117428.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setDomainRelaxationForbiddenForURLSchemeCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
-
-2012-05-17 Li Yin <li.yin@intel.com>
-
- [chromium] run-webkit-tests can't work on ubuntu 12.04
- https://bugs.webkit.org/show_bug.cgi?id=86565
-
- Reviewed by Kent Tamura.
-
- On ubuntu 12.04, the package ttf-thai-tlwg install the Garuda.ttf
- into /usr/share/fonts/truetype/tlwg/Garuda.ttf, not /usr/share/fonts/truetype/thai/Garuda.ttf
-
- * DumpRenderTree/chromium/TestShellLinux.cpp:
- (checkAndLoadFontFile):
- (setupFontconfig):
-
-2012-05-17 Elliot Poger <epoger@chromium.org>
-
- Add setting of additional_expectations option to
- chromium_unittest.test_overrides_and_builder_names(),
- so we can test order in which the base and chromium expectations files
- are combined.
-
- https://bugs.webkit.org/show_bug.cgi?id=86642
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_overrides_and_builder_names):
-
-2012-05-17 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Web process hangs while waiting for plugin process connection during layouttests
- https://bugs.webkit.org/show_bug.cgi?id=86620
-
- Reviewed by Csaba Osztrogonác.
-
- Reenable TestNetscapePlugin with Qt 4.
-
- * Tools.pro:
-
-2012-05-17 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] fast/events/page-visibility-* tests fail
- https://bugs.webkit.org/show_bug.cgi?id=83263
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Handle "preview" state and avoid string conversion.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPageVisibility):
-
-2012-05-17 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Convert setDomainRelaxationForbiddenForURLScheme to use InternalSettings interface
- https://bugs.webkit.org/show_bug.cgi?id=86704
-
- Reviewed by Eric Seidel.
-
- Remove setDomainRelaxationForbiddenForURLScheme functions, because it is able to work in the
- cross-port way through the InternalSettings interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-17 Mariusz Grzegorczyk <mariusz.g@samsung.com>
-
- [EFL] [DRT] EFL's DumpRenderTree should support LayoutTestController's dumpEditingCallbacks()
- https://bugs.webkit.org/show_bug.cgi?id=84835
-
- Reviewed by Eric Seidel.
-
- Added editing callbacks implementation.
-
- * DumpRenderTree/efl/CMakeLists.txt: Add EditingCallbacks.cpp to compilation.
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Invoke connectEditingCallbacks.
- (DumpRenderTreeChrome::createView):
- * DumpRenderTree/efl/EditingCallbacks.cpp: Added. Dump editing callbacks.
- (dumpPath):
- (dumpRange):
- (insertActionString):
- (selectionAffinityString):
- (shouldBeginEditing):
- (shouldEndEditing):
- (shouldInsertNode):
- (shouldInsertText):
- (shouldDeleteRange):
- (shouldChangeSelectedRange):
- (shouldApplyStyle):
- (editingBegan):
- (userChangedContents):
- (editingEnded):
- (selectionChanged):
- (connectEditingCallbacks):
- * DumpRenderTree/efl/EditingCallbacks.h: Added.
-
-2012-05-17 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Roll out r117382 because of layout test crashes on EFL debug buildbot.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize):
-
-2012-05-17 Kentaro Hara <haraken@chromium.org>
-
- [Performance test] In perftest.py, do not include 'description' in 'results'
- https://bugs.webkit.org/show_bug.cgi?id=86696
-
- Reviewed by Csaba Osztrogoná.
-
- 'results' in perftest.py should not include any data that is not expected
- by the perf bot server. We do not need to send 'description' to the perf bot
- server since 'description' is always the same.
-
- Thus this patch just removes 'description' from 'results'.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.parse_output):
- (PerfTest.output_statistics):
- (ChromiumStylePerfTest.parse_output):
- (PageLoadingPerfTest.run):
-
-2012-05-17 Kentaro Hara <haraken@chromium.org>
-
- [Performance test] Always fill results['description'] in perftest.py
- https://bugs.webkit.org/show_bug.cgi?id=86696
-
- Reviewed by Ryosuke Niwa.
-
- This is a follow-up patch for r117397 to fix perf bot failures.
- This patch fills results['description'] always.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PageLoadingPerfTest.run):
-
-2012-05-16 Kentaro Hara <haraken@chromium.org>
-
- [Performance test] Support "description" for PerfTestRunner.run and PerfTestRunner.runPerSecond
- https://bugs.webkit.org/show_bug.cgi?id=86696
-
- Reviewed by Ryosuke Niwa.
-
- We want to add some description for each PerfTestRunner.run and
- PerfTestRunner.runPerSecond, so that people can know what each
- run is testing.
-
- Output example:
-
- $ ./Tools/Scripts/run-perf-tests Bindings/first-child.html
- Running Bindings/first-child.html (1 of 1)
- DESCRIPTION: Benchmark for DOM attributes that return a Node object.
- RESULT Bindings: first-child= 788.359076534 runs/s
- median= 797.508097751 runs/s, stdev= 19.0972905207 runs/s, min= 746.666666667 runs/s, max= 801.001251564 runs/s
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output):
- (PerfTest.output_statistics):
-
-2012-05-16 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] appcache tests are flaky
- https://bugs.webkit.org/show_bug.cgi?id=86619
-
- Reviewed by Gustavo Noronha Silva.
-
- Correctly set the application cache database path in EFL's
- DumpRenderTree initialization code.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize):
-
-2012-05-16 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Add new build slave for EFL port.
- https://bugs.webkit.org/show_bug.cgi?id=86567
-
- Reviewed by Ryosuke Niwa.
-
- Add a build slave for EFL 32-bit linux build.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-05-16 Kihong Kwon <kihong.kwon@samsung.com>
-
- [EFL] Support for Battery Status API on the WebKit-Efl
- https://bugs.webkit.org/show_bug.cgi?id=83254
-
- Reviewed by Chang Shu.
-
- Add e_dbus libraries to jhbuild's modules list.
-
- * efl/jhbuild.modules:
-
-2012-05-16 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Rounding errors on 32-bit machines causes tests to fail
- https://bugs.webkit.org/show_bug.cgi?id=86194
-
- Reviewed by Martin Robinson.
-
- Pass additional CXXFLAGS to CMake in an attempt to harmonize floating
- point values between 32-bit and 64-bit architectures.
- Same flags are already used by Qt and GTK ports.
-
- * Scripts/webkitdirs.pm:
- (determineArchitecture):
- (generateBuildSystemFromCMakeProject):
-
-2012-05-16 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Web process hangs while waiting for plugin process connection during layouttests
- https://bugs.webkit.org/show_bug.cgi?id=86620
-
- Reviewed by Csaba Osztrogonác.
-
- Temporary workaround not to fail layout tests.
-
- * Tools.pro: Disable TestNetscapePlugin.
-
-2012-05-16 Dinu Jacob <dinu.jacob@nokia.com>
-
- Add didFinishProgress BundleUIClient callback
- https://bugs.webkit.org/show_bug.cgi?id=86541
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added support for dumpProgressFinishedCallback.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didFinishProgress):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpProgressFinishedCallback):
- (WTR::LayoutTestController::setShouldDumpProgressFinishedCallback):
- (WTR::LayoutTestController::shouldDumpProgressFinishedCallback):
- (LayoutTestController):
-
-2012-05-15 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Enable SVG Fonts by default
- https://bugs.webkit.org/show_bug.cgi?id=86463
-
- Reviewed by Nikolas Zimmermann.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-05-16 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController does not implement setApplicationCacheOriginQuota
- https://bugs.webkit.org/show_bug.cgi?id=85585
-
- Reviewed by Gustavo Noronha Silva.
-
- Implement setApplicationCacheOriginQuota in EFL's
- LayoutTestController.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onExceededApplicationCacheQuota):
- (drtViewAdd):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setApplicationCacheOriginQuota):
-
-2012-05-16 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] EFL's LayoutTestController evaluateScriptInIsolatedWorld implementation
- https://bugs.webkit.org/show_bug.cgi?id=83776
-
- Reviewed by Tor Arne Vestbø.
-
- Added missing implementation of LayoutTestController::evaluateScriptInIsolatedWorld().
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
-
-2012-05-16 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-15 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Fix eventSender key providing
- https://bugs.webkit.org/show_bug.cgi?id=84710
-
- Reviewed by Andreas Kling.
-
- Currently eventSender doesn't provide key event correctly.
- For example, 'Right' will be visible when 'right arrow' key event is fired.
- Given circumstance, nothing has to be shown.
- Therefore, this patch fixed incorrectly provided key event.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (KeyEventInfo::KeyEventInfo):
- (KeyEventInfo):
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- (createKeyEventInfo):
- (sendKeyDown):
-
-2012-05-15 Dan Bernstein <mitz@apple.com>
-
- Fixed a typo.
-
- * Scripts/copy-webkitlibraries-to-product-directory:
-
-2012-05-15 Kihong Kwon <kihong.kwon@samsung.com>
-
- [EFL] Enable Fullscreen API
- https://bugs.webkit.org/show_bug.cgi?id=85870
-
- Reviewed by Antonio Gomes.
-
- Enable full screen api feature on the EFL port.
- There are two failed test cases under LayoutTests/fullscreen.
- They are going to be fixed with other patch.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Chromium port never sets USE(CG) so code behind it is dead
- https://bugs.webkit.org/show_bug.cgi?id=86537
-
- Reviewed by Adrienne Walker.
-
- Deletes code behind USE(CG) in chromium-specific code and removes unneeded USE(SKIA) guards.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintRect):
-
-2012-05-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove WEBKIT_USING_(SKIA|CG) #defines
- https://bugs.webkit.org/show_bug.cgi?id=86536
-
- Reviewed by Adam Barth.
-
- Deletes dead WEBKIT_USING_CG code and #ifdefs guarding it.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- (WebThemeEngineDRTMac::paintHIThemeScrollbarThumb):
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintPagesWithBoundaries):
-
-2012-05-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Unreviewed build fix.
-
- Partial revert of r117166 - it appears making DumpRenderTree depend on webkit_platform causes crashes in the
- component build, at least on linux. This restores Tools/DumpRenderTree to its pre-r117166 state.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::initialize):
-
-2012-05-15 Elliot Poger <epoger@google.com>
-
- add unit test for NRWT's --additional-expectations option
- https://bugs.webkit.org/show_bug.cgi?id=86501
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_additional_expectations):
-
-2012-05-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Move createOffscreenGraphicsContext3D() from WebKitPlatformSupport to Platform
- https://bugs.webkit.org/show_bug.cgi?id=86524
-
- Reviewed by Adam Barth.
-
- Updates TestWebPlugin to use the Platform headers and updates the build dependencies so it can.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::initialize):
-
-2012-05-15 Jessie Berlin <jberlin@apple.com>
-
- WKContextSetCacheModel(contextref, kWKCacheModelDocumentViewer) doesn't prevent pages from
- going into the PageCache.
- https://bugs.webkit.org/show_bug.cgi?id=85891
-
- Reviewed by Brady Eidson.
-
- Set the cache model in DOMWindowExtensionNoCache so that the page cache is not used. This is
- better than using pages with unload handlers because we may find a way to make pages with
- unload handlers cacheable in the future.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Remove simple-iframe-unload.html and simple-unload.html, since they are no longer used.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp:
- (TestWebKitAPI::TEST):
- Set the cache model to kWKCacheModelDocumentViewer.
-
- * TestWebKitAPI/Tests/WebKit2/simple-iframe-unload.html: Removed.
- * TestWebKitAPI/Tests/WebKit2/simple-unload.html: Removed.
-
-2012-05-15 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Add infra for testing double-tap to zoom functionality etc
- https://bugs.webkit.org/show_bug.cgi?id=86474
-
- Reviewed by Simon Hausmann.
-
- The WebViewportInfo class was renamed to QWebKitTest in preparation
- of becoming a separate module. Adapt the use API.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ViewportInfoItem.qml:
-
-2012-05-15 Csaba Osztrogonác <ossy@webkit.org>
-
- Introduce ENABLE_CSS_VARIABLES compile flag.
- https://bugs.webkit.org/show_bug.cgi?id=86338
-
- Reviewed by Hajime Morita.
-
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Unittest fix after r117028.
- (WebKitPortTest.test_skipped_directories_for_symbols):
-
-2012-05-15 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Teach webkit-patch to gracefully handle writes of raw utf-8 encoded strings to sys.stdout
-
- https://bugs.webkit.org/show_bug.cgi?id=85809
-
- webkit-patch overrides sys.stdout with a StreamWriter that ensures we write utf8
- output to stdout, but StreamWriter will by default always encode the object that's
- passed to write(). This blows up when the object is a raw string, already encoded
- as utf8, and does not match the default behavior of sys.stdout.
-
- To solve this in one place, instead of every single call-site that might write
- raw strings, we extend the stdout-wrapper to assume raw strings are utf8 before
- passing them on to StreamWriter.write(). This has the benefit of also making the
- stacktrace easy to read in the case where this assumption does not hold.
-
- The source of this particular bug was that Executive.run_and_throw_if_fail() will
- tee the output of the subprocess, and in the case of running prepare-ChangeLog this
- might produce non-ascii output, which gets written directly to sys.stdout as raw
- utf8-encoded strings.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkit-patch:
-
-2012-05-15 Tomasz Morawski <t.morawski@samsung.com>
-
- [EFL][DRT] Split ewk_private.h file to multiple private files.
- https://bugs.webkit.org/show_bug.cgi?id=84572
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
-
-2012-05-15 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt][WK2] http/tests/navigation/https-in-page-cache.html fails with timeout
- https://bugs.webkit.org/show_bug.cgi?id=83576
-
- Reviewed by Simon Hausmann.
-
- Set the PlatformWebView for the Qt port to accept all SSL certificates.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-05-14 Luke Macpherson <macpherson@chromium.org>
-
- Introduce ENABLE_CSS_VARIABLES compile flag.
- https://bugs.webkit.org/show_bug.cgi?id=86338
-
- Reviewed by Dimitri Glazkov.
-
- Add a configuration option for CSS Variables support, disabling it by default.
-
- * Scripts/webkitperl/FeatureList.pm:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._missing_symbol_to_skipped_tests):
- * qmake/mkspecs/features/features.pri:
-
-2012-05-14 Nate Chapin <japhet@chromium.org>
-
- Add end-of-life test cases for https://bugs.webkit.org/show_bug.cgi?id=86131.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (callDeletePlugin):
- (pluginHasProperty):
- (pluginHasMethod):
- (pluginGetProperty):
- (pluginSetProperty):
- (pluginInvoke):
-
-2012-05-14 Dirk Pranke <dpranke@chromium.org>
-
- Re-enable "drt mode" on chromium-mac-leopard
- https://bugs.webkit.org/show_bug.cgi?id=83076
-
- Unreviewed, build fix (change?).
-
- This change is another attempt to gather data on
- the flakiness and timeouts we're seeing on Mac SL
- now that we have another bot.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.__init__):
-
-2012-05-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116981.
- http://trac.webkit.org/changeset/116981
- https://bugs.webkit.org/show_bug.cgi?id=86402
-
- Caused compositing and mathml tests to fail. (Requested by
- rakuco on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._path_to_webcore_library):
-
-2012-05-14 Dirk Pranke <dpranke@chromium.org>
-
- Fix regressions in garden-o-matic after r116988.
-
- Unreviewed, build fix.
-
- I had a typo in a field name in checkout.js, and unfortunately
- the unittests had the same typo :(.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
-
-2012-05-14 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should specify which types of baselines to rebaseline
- https://bugs.webkit.org/show_bug.cgi?id=86242
-
- Reviewed by Adam Barth.
-
- This change modifies garden-o-matic so that we are explicit
- about whether to rebaseline the text file, the image file, or
- both. This should prevent us from pulling incorrect or
- unexpected baselines off the bots.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- (.):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (AbstractRebaseliningCommand.__init__):
- (RebaselineTest):
- (RebaselineTest._rebaseline_test_and_update_expectations):
- (RebaselineTest.execute):
- (OptimizeBaselines):
- (OptimizeBaselines._optimize_baseline):
- (OptimizeBaselines.execute):
- (AnalyzeBaselines):
- (AnalyzeBaselines._analyze_baseline):
- (AnalyzeBaselines.execute):
- (RebaselineExpectations._rebaseline_port):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaseline):
- (GardeningHTTPRequestHandler.optimizebaselines):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline):
- (GardeningServerTest.test_rebaseline_new_port):
- (GardeningServerTest.test_optimizebaselines):
-
-2012-05-14 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Fix WebCore library path
- https://bugs.webkit.org/show_bug.cgi?id=86355
-
- Reviewed by Dirk Pranke.
-
- Currently EFL DRT uses wrong WebCore library path when running DRT.
- This patch simply adjusted it.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._path_to_webcore_library):
-
-2012-05-14 Wei James <james.wei@intel.com>
-
- [Chromium] ImageDiff should be build for host on Android
- https://bugs.webkit.org/show_bug.cgi?id=82039
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-05-14 Joone Hur <joone@webkit.org>
-
- Unreviewed. Updating email for committers.py script.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-14 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck.
-
- * GNUmakefile.am: Add run-api-tests script to EXTRA_DIST.
- * gtk/run-api-tests:
- (TestRunner._lookup_atspi2_binary): Handle the case when
- pkg_config_file_variable() return None.
-
-2012-05-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116935.
- http://trac.webkit.org/changeset/116935
- https://bugs.webkit.org/show_bug.cgi?id=86373
-
- Something is still broken (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/common/checksvnconfigfile.py: Removed.
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.check):
- (PNGChecker):
- (PNGChecker._config_file_path):
- * Scripts/webkitpy/tool/commands/download.py:
- (Land):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py: Removed.
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py: Removed.
-
-2012-05-14 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Doesn't build with ENABLE_INSPECTOR=0
- https://bugs.webkit.org/show_bug.cgi?id=85056
-
- Reviewed by Tor Arne Vestbø.
-
- * WebKitTestRunner/TestInvocation.cpp: Ifdef otherwise unused static function.
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/features.pri:
-
-2012-05-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make sure dialogs have their parent and attached properties set before Component.onCompleted
- https://bugs.webkit.org/show_bug.cgi?id=86222
-
- The WebView QML api for dialogs is based on delegates for each dialog, which
- are implemented as components. Since there's no explicit API to show the dialog,
- the natural place to allow the dialog to choose how to display itself is in
- Component.onCompleted.
-
- The issue was that we were using QQmlComponent::create() when instantiating the
- component, at which point the component did not have a parent or it's attached
- WebView property set. That meant that we had to do some ugly workaround in our
- test, using a 1ms timer, to get a callback once the parent was there.
-
- We now use the QQmlComponent::beginCreate() -> QQmlComponent::completeCreate()
- pair, which allows us to set the relevant properties before triggering the
- Component.onCompleted callback. We were already doing this for the context
- menus (except for setting the parent, which we did afterwards).
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/Dialog.qml:
-
-2012-05-14 Balazs Ankes <bank@inf.u-szeged.hu>
-
- webkit-patch land should automatically add svn:mime-type for .png files
- https://bugs.webkit.org/show_bug.cgi?id=75825
- I refactored the png.py to avoid code duplication.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/common/checksvnconfigfile.py: Added.
- (check):
- (_config_file_path):
- (errorstr_autoprop):
- (errorstr_png):
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.check):
- * Scripts/webkitpy/tool/commands/download.py:
- (Land):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py: Added.
- (AddSvnMimetypeForPng):
- (AddSvnMimetypeForPng.__init__):
- (AddSvnMimetypeForPng.run):
- (AddSvnMimetypeForPng._check_pngs):
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py: Added.
- (MockSCMDetector):
- (MockSCMDetector.__init__):
- (MockSCMDetector.display_name):
- (AddSvnMimetypeForPngTest):
- (AddSvnMimetypeForPngTest.test_run):
-
-2012-05-14 David Kilzer <ddkilzer@apple.com>
-
- webkit-patch apply-attachment is very slow for big patches
- https://bugs.webkit.org/show_bug.cgi?id=74929
-
- Add "excludefield=attachmentdata" to the URL everywhere
- "ctype=xml" is used to exclude this field from the XML.
-
- Reviewed by Adam Barth.
-
- * Scripts/prepare-ChangeLog:
- (fetchBugDescriptionFromURL):
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/common/config/urls_unittest.py:
- (URLsTest.test_parse_bug_id):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.bug_url_for_bug_id):
-
-2012-05-13 Ryosuke Niwa <rniwa@webkit.org>
-
- performance tests should be able to measure runs/sec rather than time
- https://bugs.webkit.org/show_bug.cgi?id=86021
-
- Reviewed by Ojan Vafai.
-
- Allow " runs/s" or " ms" to appear after numerical values in tests.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
-
-2012-05-12 Tim Horton <timothy_horton@apple.com>
-
- run-safari and co. should support --guard-malloc command line argument
- https://bugs.webkit.org/show_bug.cgi?id=86287
-
- Reviewed by Dan Bernstein.
-
- Add setUpGuardMallocIfNeeded(), which consults the argument --guard-malloc on OS X,
- setting DYLD_INSERT_LIBRARIES="/usr/lib/libgmalloc.dylib" if it's enabled.
-
- Use setUpGuardMallocIfNeeded() before running a WebKit app (whether standalone or
- in the debugger). This will cause gmalloc to be loaded for gdb as well, but this
- tends to be harmless.
-
- Change "malloc guard" to the more common "Guard Malloc" in run-webkit-tests.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitdirs.pm:
- (appendToEnvironmentVariableList):
- (setUpGuardMallocIfNeeded):
- (printHelpAndExitForRunAndDebugWebKitAppIfNeeded):
- (runMacWebKitApp):
- (execMacWebKitAppForDebugging):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-05-11 Ojan Vafai <ojan@chromium.org>
-
- Add previous/next buttons the garden-o-matics perf panel
- https://bugs.webkit.org/show_bug.cgi?id=86280
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css:
-
-2012-05-11 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Fix memory exhausted errors from 32-bit ld on *nix.
-
- * waf/build/settings.py:
- (common_configure):
-
-2012-05-11 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline should fetch stale expectations :)
- https://bugs.webkit.org/show_bug.cgi?id=86231
-
- Unreviewed, build fix.
-
- This change reverts r115492 and goes back to fetching individual
- baselines from the layout tests directory, rather than fetching
- entire zip files. The performance hit over networks for people
- far away from the bots has turned out to be severe, so we need a
- better solution to this.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._results_url):
- (RebaselineTest._file_name_for_expected_result):
- (RebaselineTest._rebaseline_test):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_test):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
-
-2012-05-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [GTK] LayoutTests/svg/batik/text/verticalText.svg fails to display Chinese characters
- https://bugs.webkit.org/show_bug.cgi?id=86198
-
- Reviewed by Martin Robinson.
-
- Update webkitgtk-fonts package to v0.0.3 in order to get new Kochi
- Mincho / Gothic fonts to display Japanese and Chinese characters.
-
- * gtk/jhbuild.modules:
-
-2012-05-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] SVG Batik test fails to display Chinese characters
- https://bugs.webkit.org/show_bug.cgi?id=84461
-
- Reviewed by Martin Robinson.
-
- Update webkitgtk-fonts package from v0.0.1 to v0.0.3 in order to get
- new Kochi Mincho / Gothic fonts to display Japanese and Chinese
- characters.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * efl/jhbuild.modules:
-
-2012-05-11 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK 64-bit Debug bot fix attempt.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._get_gdb_output): Ignore unicode decoding errors when
- processing gdb output.
-
-2012-05-11 Gustavo Noronha Silva <gns@gnome.org>
-
- REGRESSION(r116205): [GTK]: build no longer supports thin archives
- https://bugs.webkit.org/show_bug.cgi?id=86207
-
- * GNUmakefile.am: link libWebCoreModules to DRT.
-
-2012-05-10 Ojan Vafai <ojan@chromium.org>
-
- Add a perf tab to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=86169
-
- Reviewed by Dimitri Glazkov.
-
- This is a first stab at making it easier to view the Chromium WebKit canary
- perf graphs. For now, it's just a couple select elements and an iframe.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/perf.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-05-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Move resumeAnimations to use Internals interface
- https://bugs.webkit.org/show_bug.cgi?id=86063
-
- Reviewed by Alexey Proskuryakov.
-
- Remove resumeAnimations functions, because it is able to work in the
- cross-port way through the Internals interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-05-10 Alexey Proskuryakov <ap@apple.com>
-
- Crash in 3rd party WebKit apps that disable cache at a wrong time
- https://bugs.webkit.org/show_bug.cgi?id=86027
- <rdar://problem/10615880>
-
- Reviewed by Antti Koivisto.
-
- Added a test that's very similar to MemoryCachePruneWithinResourceLoadDelegate,
- but for disabling the cache instead of triggering a prune.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html: Added.
- * TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm: Added.
- (-[MemoryCacheDisableTestResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- (-[MemoryCacheDisableTestResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- (-[MemoryCacheDisableTestResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[MemoryCacheDisableTestResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]):
- (TestWebKitAPI::TEST):
-
-2012-05-10 Anders Carlsson <andersca@apple.com>
-
- WebKit2: Add a way to blacklist specific plug-ins/plug-in versions
- https://bugs.webkit.org/show_bug.cgi?id=86164
- <rdar://problem/9551196>
-
- Reviewed by Sam Weinig.
-
- Update for WK2 API changes.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2012-05-10 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: [chromium] fix path to asan symbolize script
- https://bugs.webkit.org/show_bug.cgi?id=86161
-
- Reviewed by Abhishek Arya.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._get_crash_log):
-
-2012-05-10 Lei Zhang <thestig@chromium.org>
-
- [chromium] Set Valgrind environment variables for layout tests.
- https://bugs.webkit.org/show_bug.cgi?id=86156
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.setup_environ_for_server):
-
-2012-05-10 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [webkitpy][EFL] It should be possible to use a wrapper command for ImageDiff.
- https://bugs.webkit.org/show_bug.cgi?id=86145
-
- Reviewed by Dirk Pranke.
-
- The GTK+ and EFL ports use jhbuild to build a few base libraries
- which are then used when building the port itself. Programs such
- as DRT and ImageDiff are then supposed to be run with the
- `run-with-jhbuild' wrapper so that the libraries are properly
- found and loaded.
-
- This was already the case for DumpRenderTree (EflPort defines the
- 'wrapper' option for that), but it was not possible to do the same
- with ImageDiff so far.
-
- The code which created the ImageDiff command-line call has been
- moved to a separate method, _image_diff_command, which is then
- overridden by EflPort to add the jhbuild wrapper.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.__init__):
- (EflPort._image_diff_command):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort):
- (WebKitPort._image_diff_command):
- (WebKitPort._start_image_diff_process):
-
-2012-05-10 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] ENABLE_IFRAME_SEAMLESS support
- https://bugs.webkit.org/show_bug.cgi?id=85843
-
- Reviewed by Eric Seidel.
-
- Add the iframe-seamless option to the options list. This makes it
- possible to enable the iframe seamless support through build-webkit
- script. Enabled by default for all the ports.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-10 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL][webkitpy] Do not redefine check_build() in EflPort.
- https://bugs.webkit.org/show_bug.cgi?id=86124
-
- Reviewed by Dirk Pranke.
-
- Remove an old FIXME and do not redefine check_build in EflPort;
- once build-dumprendertree recognizes --efl, we can use the
- check_build implementation in WebKitPort.
-
- * Scripts/build-dumprendertree:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.check_build):
-
-2012-05-10 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Fix the ExtraData functionality in WebMediaStreamDescriptor
- https://bugs.webkit.org/show_bug.cgi?id=86087
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (MockExtraData):
- (WebKit):
- (WebKit::WebUserMediaClientMock::requestUserMedia):
-
-2012-05-10 Varun Jain <varunjain@google.com>
-
- [chromium] Trigger context menu for long press gesture
- https://bugs.webkit.org/show_bug.cgi?id=85919
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureLongPress):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
-
-2012-05-10 Takashi Toyoshima <toyoshim@chromium.org>
-
- don't use autoinstall to import pywebsocket but check it in WebKit directly.
- https://bugs.webkit.org/show_bug.cgi?id=86107
-
- Reviewed by Adam Barth.
-
- This change removes pywebsocket from webkitpy's autoinstall list and
- imports pywebsocket 0.7.4 directly into webkitpy/thirparty.
-
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- (PyWebSocket._prepare_config):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_irc):
- * Scripts/webkitpy/thirdparty/__init___unittest.py:
- (ThirdpartyTest.test_import_hook.MockImportHook.__init__):
- (ThirdpartyTest.test_import_hook.MockImportHook._install_eliza):
- (ThirdpartyTest):
- (ThirdpartyTest.test_import_hook):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING: Added.
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py: Added.
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py: Added.
- (ConnectionTerminatedException):
- (InvalidFrameException):
- (BadOperationException):
- (UnsupportedFrameException):
- (InvalidUTF8Exception):
- (StreamBase):
- (StreamBase.__init__):
- (StreamBase._read):
- (StreamBase._write):
- (StreamBase.receive_bytes):
- (StreamBase._read_until):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py: Added.
- (for):
- (StreamHixie75):
- (StreamHixie75.for):
- (StreamHixie75.__init__):
- (StreamHixie75.send_message):
- (StreamHixie75._read_payload_length_hixie75):
- (StreamHixie75.receive_message):
- (StreamHixie75._send_closing_handshake):
- (StreamHixie75.close_connection):
- (StreamHixie75.send_ping):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py: Added.
- (Frame):
- (Frame.__init__):
- (create_length_header):
- (create_header):
- (_build_frame):
- (_filter_and_format_frame_object):
- (create_binary_frame):
- (create_text_frame):
- (FragmentedFrameBuilder):
- (FragmentedFrameBuilder.to):
- (FragmentedFrameBuilder.__init__):
- (FragmentedFrameBuilder.build):
- (_create_control_frame):
- (create_ping_frame):
- (create_pong_frame):
- (create_close_frame):
- (StreamOptions):
- (StreamOptions.__init__):
- (Stream):
- (Stream.for):
- (Stream.__init__):
- (Stream._receive_frame):
- (Stream._receive_frame_as_frame_object):
- (Stream.send_message):
- (Stream.receive_message):
- (Stream._send_closing_handshake):
- (Stream.close_connection):
- (Stream.send_ping):
- (Stream._send_pong):
- (Stream._drain_received_data):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py: Added.
- (is_control_opcode):
- (ExtensionParameter):
- (ExtensionParameter.__init__):
- (ExtensionParameter.name):
- (ExtensionParameter.add_parameter):
- (ExtensionParameter.get_parameters):
- (ExtensionParameter.get_parameter_names):
- (ExtensionParameter.has_parameter):
- (ExtensionParameter.get_parameter_value):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py: Added.
- (DispatchException):
- (DispatchException.__init__):
- (_default_passive_closing_handshake_handler):
- (_normalize_path):
- (_create_path_to_resource_converter):
- (_create_path_to_resource_converter.converter):
- (_enumerate_handler_file_paths):
- (_HandlerSuite):
- (_HandlerSuite.__init__):
- (_source_handler_file):
- (_extract_handler):
- (Dispatcher):
- (Dispatcher.maintains):
- (Dispatcher.__init__):
- (Dispatcher.add_resource_path_alias):
- (Dispatcher.source_warnings):
- (Dispatcher.do_extra_handshake):
- (Dispatcher.transfer_data):
- (Dispatcher.passive_closing_handshake):
- (Dispatcher.get_handler_suite):
- (Dispatcher._source_handler_files_in_dir):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py: Added.
- (ExtensionProcessorInterface):
- (ExtensionProcessorInterface.get_extension_response):
- (ExtensionProcessorInterface.setup_stream_options):
- (DeflateStreamExtensionProcessor):
- (DeflateStreamExtensionProcessor.__init__):
- (DeflateStreamExtensionProcessor.get_extension_response):
- (DeflateStreamExtensionProcessor.setup_stream_options):
- (DeflateFrameExtensionProcessor):
- (DeflateFrameExtensionProcessor.__init__):
- (DeflateFrameExtensionProcessor.get_extension_response):
- (DeflateFrameExtensionProcessor.setup_stream_options):
- (DeflateFrameExtensionProcessor.setup_stream_options._OutgoingFilter):
- (DeflateFrameExtensionProcessor.setup_stream_options._OutgoingFilter.__init__):
- (DeflateFrameExtensionProcessor.setup_stream_options._OutgoingFilter.filter):
- (DeflateFrameExtensionProcessor.setup_stream_options._IncomingFilter):
- (DeflateFrameExtensionProcessor.setup_stream_options._IncomingFilter.__init__):
- (DeflateFrameExtensionProcessor.setup_stream_options._IncomingFilter.filter):
- (DeflateFrameExtensionProcessor.set_response_window_bits):
- (DeflateFrameExtensionProcessor.set_response_no_context_takeover):
- (DeflateFrameExtensionProcessor.enable_outgoing_compression):
- (DeflateFrameExtensionProcessor.disable_outgoing_compression):
- (DeflateFrameExtensionProcessor._outgoing_filter):
- (DeflateFrameExtensionProcessor._incoming_filter):
- (get_extension_processor):
- (get_extension_processor.is):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py: Added.
- (try):
- (do_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py: Added.
- (AbortedByUserException):
- (HandshakeException):
- (HandshakeException.__init__):
- (VersionException):
- (VersionException.__init__):
- (get_default_port):
- (validate_subprotocol):
- (parse_host_header):
- (format_header):
- (build_location):
- (get_mandatory_header):
- (validate_mandatory_header):
- (check_request_line):
- (check_header_lines):
- (parse_token_list):
- (_parse_extension_param):
- (_parse_extension):
- (parse_extensions):
- (format_extensions):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/draft75.py: Added.
- (Handshaker):
- (Handshaker.performs):
- (Handshaker.__init__):
- (Handshaker.do_handshake):
- (Handshaker._set_resource):
- (Handshaker._set_origin):
- (Handshaker._set_location):
- (Handshaker._set_subprotocol):
- (Handshaker._set_protocol_version):
- (Handshaker._sendall):
- (Handshaker._send_handshake):
- (Handshaker._check_header_lines):
- (Handshaker._check_first_lines):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py: Added.
- (compute_accept):
- (Handshaker):
- (Handshaker.__init__):
- (Handshaker._validate_connection_header):
- (Handshaker.do_handshake):
- (Handshaker._get_origin):
- (Handshaker._check_version):
- (Handshaker._set_protocol):
- (Handshaker._parse_extensions):
- (Handshaker._validate_key):
- (Handshaker._get_key):
- (Handshaker._send_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py: Added.
- (Handshaker):
- (Handshaker.__init__):
- (Handshaker.do_handshake):
- (Handshaker._set_resource):
- (Handshaker._set_subprotocol):
- (Handshaker._set_location):
- (Handshaker._set_origin):
- (Handshaker._set_protocol_version):
- (Handshaker._set_challenge_response):
- (Handshaker._get_key_value):
- (Handshaker._get_challenge):
- (Handshaker._send_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py: Added.
- (ApacheLogHandler):
- (ApacheLogHandler.__init__):
- (ApacheLogHandler.emit):
- (_configure_logging):
- (_parse_option):
- (_create_dispatcher):
- (headerparserhandler):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py: Added.
- (_is_char):
- (_is_ctl):
- (ParsingState):
- (ParsingState.__init__):
- (peek):
- (consume):
- (consume_string):
- (consume_lws):
- (consume_lwses):
- (consume_token):
- (consume_token_or_quoted_string):
- (quote_if_necessary):
- (parse_uri):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py: Added.
- (MemorizingFile):
- (MemorizingFile.__init__):
- (MemorizingFile.__getattribute__):
- (MemorizingFile.readline):
- (MemorizingFile.get_memorized_lines):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py: Added.
- (close_connection):
- (send_message):
- (receive_message):
- (send_ping):
- (MessageReceiver):
- (MessageReceiver.receives):
- (MessageReceiver.provides):
- (MessageReceiver.should):
- (MessageReceiver.__init__):
- (MessageReceiver.run):
- (MessageReceiver.receive):
- (MessageReceiver.receive_nowait):
- (MessageReceiver.stop):
- (MessageSender):
- (MessageSender.sends):
- (MessageSender.provides):
- (MessageSender.should):
- (MessageSender.__init__):
- (MessageSender.run):
- (MessageSender.send):
- (MessageSender.send_nowait):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py: Added.
- (_StandaloneConnection):
- (_StandaloneConnection.__init__):
- (_StandaloneConnection.get_local_addr):
- (_StandaloneConnection.get_remote_addr):
- (_StandaloneConnection.write):
- (_StandaloneConnection.read):
- (_StandaloneConnection.get_memorized_lines):
- (_StandaloneRequest):
- (_StandaloneRequest.__init__):
- (_StandaloneRequest.get_uri):
- (_StandaloneRequest.get_method):
- (_StandaloneRequest.is_https):
- (_StandaloneRequest._drain_received_data):
- (_StandaloneSSLConnection):
- (_StandaloneSSLConnection.for):
- (_StandaloneSSLConnection.__init__):
- (_StandaloneSSLConnection.__getattribute__):
- (_StandaloneSSLConnection.__setattr__):
- (_StandaloneSSLConnection.makefile):
- (WebSocketServer):
- (WebSocketServer.__init__):
- (WebSocketServer._create_sockets):
- (WebSocketServer.server_bind):
- (WebSocketServer.server_activate):
- (WebSocketServer.server_close):
- (WebSocketServer.fileno):
- (WebSocketServer.handle_error):
- (WebSocketServer.get_request):
- (WebSocketServer.serve_forever):
- (WebSocketServer.shutdown):
- (WebSocketRequestHandler):
- (WebSocketRequestHandler.setup):
- (WebSocketRequestHandler.setup.SocketServer):
- (WebSocketRequestHandler.__init__):
- (WebSocketRequestHandler.parse_request):
- (WebSocketRequestHandler.log_request):
- (WebSocketRequestHandler.log_error):
- (WebSocketRequestHandler.is_cgi):
- (_configure_logging):
- (_alias_handlers):
- (_build_option_parser):
- (ThreadMonitor):
- (ThreadMonitor.__init__):
- (ThreadMonitor.run):
- (_parse_args_and_config):
- (_main):
- (_main.if):
- (_main.if.__check_script):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py: Copied from Tools/Scripts/webkitpy/thirdparty/__init___unittest.py.
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py: Added.
- (get_stack_trace):
- (prepend_message_to_exception):
- (__translate_interp):
- (get_script_interp):
- (wrap_popen3_for_win):
- (wrap_popen3_for_win.__wrap_popen3):
- (hexify):
- (get_class_logger):
- (NoopMasker):
- (NoopMasker.__init__):
- (NoopMasker.mask):
- (RepeatedXorMasker):
- (RepeatedXorMasker.__init__):
- (RepeatedXorMasker.mask):
- (DeflateRequest):
- (DeflateRequest.for):
- (DeflateRequest.__init__):
- (DeflateRequest.__getattribute__):
- (DeflateRequest.__setattr__):
- (_Deflater):
- (_Deflater.__init__):
- (_Deflater.compress_and_flush):
- (_Inflater):
- (_Inflater.__init__):
- (_Inflater.decompress):
- (_Inflater.append):
- (_Inflater.reset):
- (_RFC1979Deflater):
- (_RFC1979Deflater.that):
- (_RFC1979Deflater.__init__):
- (_RFC1979Deflater.filter):
- (_RFC1979Inflater):
- (_RFC1979Inflater.for):
- (_RFC1979Inflater.__init__):
- (_RFC1979Inflater.filter):
- (DeflateSocket):
- (DeflateSocket.for):
- (DeflateSocket.__init__):
- (DeflateSocket.recv):
- (DeflateSocket.sendall):
- (DeflateSocket.send):
- (DeflateConnection):
- (DeflateConnection.for):
- (DeflateConnection.__init__):
- (DeflateConnection.get_remote_addr):
- (DeflateConnection.put_bytes):
- (DeflateConnection.read):
- (DeflateConnection.write):
- (_is_ewouldblock_errno):
- (drain_received_data):
-
-2012-05-10 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL][webkitpy] Define the 'wrapper' option in EflPort instead of creating a EflDriver.
- https://bugs.webkit.org/show_bug.cgi?id=86117
-
- Reviewed by Adam Barth.
-
- Simplify the code used to wrap driver calls with jhbuild: we can
- just define the 'wrapper' option instead of having to create a
- Driver class just for that.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.__init__):
- (EflPort._port_flag_for_scripts):
-
-2012-05-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116633.
- http://trac.webkit.org/changeset/116633
- https://bugs.webkit.org/show_bug.cgi?id=86093
-
- Breaks EFL tests (Requested by kov on #webkit).
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/EventSender.cpp:
- (keyDownCallback):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setTabKeyCyclesThroughElements):
-
-2012-05-10 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Memory leaks found in EFL DRT
- https://bugs.webkit.org/show_bug.cgi?id=85889
-
- Reviewed by Gustavo Noronha Silva.
-
- Fix two memory leaks in EFL's DRT by using JSRetainPtr for JSString
- created with JSStringCreateWithUTF8CString.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWindowObjectCleared):
- * DumpRenderTree/efl/EventSender.cpp:
- (modifiersFromJSValue):
-
-2012-05-10 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL] LayoutTestController needs implementation of setTabKeyCyclesThroughElements
- https://bugs.webkit.org/show_bug.cgi?id=82864
-
- Reviewed by Gustavo Noronha Silva.
-
- Add missing implementation for setTabKeyCyclesThroughElements to EFL's LayoutTestController
- in order to unskip fast/events/keypress-insert-tab.html
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyDownCallback):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setTabKeyCyclesThroughElements):
-
-2012-05-10 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL][DRT] EventSender - set delayed event information if it was not set before
- https://bugs.webkit.org/show_bug.cgi?id=85972
-
- Reviewed by Gustavo Noronha Silva.
-
- Reset delayed event information if it is missing.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (feedOrQueueMouseEvent):
-
-2012-05-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- WebPageProxy::activeURL() should return the pending API request, even when there's no main frame
- https://bugs.webkit.org/show_bug.cgi?id=85806
-
- The m_pendingAPIRequestURL member is used (presumably) to mask over the async
- nature of WebKit2, so that starting a load of a URL will reflect that URL
- immedeatly from activeURL, even if the request has not been passed over to
- the web process yet and reflected there.
-
- This works well, except in the case of the initial request, where the main
- frame creation happens on the web process side and is notified back to the
- UI process. Until we've recived the notification we don't know about the main
- frame, and this race condition will potentially give us an empty url instead
- of the pending request.
-
- To solve this we always return the pending API request if it's set, even
- when there's no mainframe yet (that we known about).
-
- Reviewed by Simon Hausmann.
-
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
-
-2012-05-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] Clear added user style sheets before a new testcase execution.
- https://bugs.webkit.org/show_bug.cgi?id=84792
-
- Reviewed Gustavo Noronha Silva.
-
- The added user style sheets from the previous testcases are cleared in order to avoid
- flaky results.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-05-09 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Move suspendAnimations to use Internals interface.
- https://bugs.webkit.org/show_bug.cgi?id=85986
-
- Reviewed by Ryosuke Niwa.
-
- Remove suspendAnimations functions, because it is able to work in the
- cross-port way through the Internals interface
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-09 Kent Tamura <tkent@chromium.org>
-
- [Chromium] Attempt to fix an Android build error.
- https://bugs.webkit.org/show_bug.cgi?id=86045
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2012-05-09 Ojan Vafai <ojan@chromium.org>
-
- Don't show partytime if there are non-layout test failures.
- https://bugs.webkit.org/show_bug.cgi?id=86056
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
-
-2012-05-09 Hayato Ito <hayato@chromium.org>
-
- Improve a warning message for a reftest having an unused expectation file.
- https://bugs.webkit.org/show_bug.cgi?id=85975
-
- Reviewed by Adam Barth.
-
- The current warning message is not intuitive. It might be better to update the message
- so that it encourage users to remove unused expectation files.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
-
-2012-05-09 Ojan Vafai <ojan@chromium.org>
-
- Change "losing test coverage" to cover all non-layout test problems in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=86043
-
- Reviewed by Adam Barth.
-
- -Get rid of the gtest iframe.
- -Cover all non-layout test problems. Before we wouldn't catch compile failures
- or gtest failures since they were not on the webkit testing bots.
- -Include the list of failing steps next to the builder name. This is a lot less
- cluttered than you'd expect and already helped me find a compile failure early.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- Delete unused map.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2012-05-09 Jessie Berlin <jberlin@apple.com>
-
- Crash using the new WKBundleDOMWindowExtensions APIs.
- https://bugs.webkit.org/show_bug.cgi?id=85888
-
- Reviewed by Brady Eidson.
-
- Cached frames can live slightly longer than the page, but most clients unregister themselves
- and do other cleanup in the willDestroyPage callback, making them miss the
- willDestroyGlobalObjectForDOMWindowExtension callbacks.
-
- The calls to willDestroyGlobalObjectForDOMWindowExtension in the DOMWindowExtensionBasic
- test were all being invoked underneath WebPage::close. This is unrealistic. Update that test
- to destroy the BundleDOMWindowExtensions in response to the willDestroyPage callback.
-
- Add a test to verify that willDestroyGlobalObjectForDOMWindowExtension is being called for
- pages that don't go into the page cache.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add DOMWindowExtensionNoCache.cpp, DOMWindowExtensionNoCache_Bundle.cpp, simple-unload.html
- and simple-iframe-unload.html
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:
- (TestWebKitAPI):
- Remove the expected messages for willDestroyGlobalObjectForDOMWindowExtension.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- Do not bother to keep track of the live extension count - all of them are expected to be
- live until the test completes.
- (TestWebKitAPI::TEST):
- Fix the calls to EXPECT to pass the expected value first, and use EXPECT_WK_STREQ so that
- message failures will be clearer.
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- Clean up the BundleDOMWindowExtensions.
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyGlobalObjectForDOMWindowExtension):
- Add an ASSERT_NOT_REACHED.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- Keep track of the messages received so they can be checked at the end of the test.
- (TestWebKitAPI::TEST):
- Navigate to uncacheable pages and back.
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp: Copied from Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp.
- (DOMWindowExtensionNoCache):
- (TestWebKitAPI::DOMWindowExtensionNoCache::DOMWindowExtensionNoCache):
- Set up all the states for each BundleDOMWindowExtension.
- (TestWebKitAPI::DOMWindowExtensionNoCache::frameLoadFinished):
- Tell the UI Process about the states of the BundleDOMWindowExtensions.
- (TestWebKitAPI::DOMWindowExtensionNoCache::sendExtensionStateMessage):
- (TestWebKitAPI::DOMWindowExtensionNoCache::initialize):
- (TestWebKitAPI::DOMWindowExtensionNoCache::didCreatePage):
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- Remvoe the remaining BundleDOMWindowExtensions, send the updated state, and finish the test.
- (TestWebKitAPI::DOMWindowExtensionNoCache::updateExtensionStateRecord):
- (TestWebKitAPI::DOMWindowExtensionNoCache::sendBundleMessage):
- (TestWebKitAPI::DOMWindowExtensionNoCache::globalObjectIsAvailableForFrame):
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDisconnectDOMWindowExtensionFromGlobalObject):
- ASSERT that these pages not going into the page cache are not getting disconnected to go into
- the page cache.
- (TestWebKitAPI::DOMWindowExtensionNoCache::didReconnectDOMWindowExtensionToGlobalObject):
- Ditto about getting reconnected when coming out of the page cache.
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyGlobalObjectForDOMWindowExtension):
- Tell the UI Process, update the state, and get rid of the BundleDOMWindowExtension.
- (TestWebKitAPI::didFinishLoadForFrameCallback):
- (TestWebKitAPI::globalObjectIsAvailableForFrameCallback):
- (TestWebKitAPI::willDisconnectDOMWindowExtensionFromGlobalObjectCallback):
- (TestWebKitAPI::didReconnectDOMWindowExtensionToGlobalObjectCallback):
- (TestWebKitAPI::willDestroyGlobalObjectForDOMWindowExtensionCallback):
-
- * TestWebKitAPI/Tests/WebKit2/simple-iframe-unload.html: Added.
- * TestWebKitAPI/Tests/WebKit2/simple-unload.html: Added.
-
-2012-05-09 Adam Barth <abarth@webkit.org>
-
- [Chromium] Android's DRT doesn't want to build WebUserMediaClientMock
- https://bugs.webkit.org/show_bug.cgi?id=86045
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2012-05-09 Adam Barth <abarth@webkit.org>
-
- [Chromium] MockWebSpeechInputController.cpp should be guarded by ENABLE(INPUT_SPEECH)
- https://bugs.webkit.org/show_bug.cgi?id=86041
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
-
-2012-05-09 Adam Barth <abarth@webkit.org>
-
- [Chromium] Android needs to swizzle pixel dumps in order to get the same hash as other platforms
- https://bugs.webkit.org/show_bug.cgi?id=86040
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage):
-
-2012-05-09 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Build fix after r116464.
-
- `ulong' is a type defined by glibc, so it is not very
- portable. Use `unsigned long' instead.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (DelayedEvent::DelayedEvent):
- (DelayedEvent):
- (leapForwardCallback):
-
-2012-05-09 Adam Barth <abarth@webkit.org>
-
- [Chromium] LayoutTestController should use ENABLE guards for some features
- https://bugs.webkit.org/show_bug.cgi?id=86030
-
- Reviewed by Eric Seidel.
-
- These features are disabled on OS(ANDROID) and so shouldn't be compiled
- when the feature is off.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2012-05-09 Tom Zakrajsek <tomz@codeaurora.org>
-
- Fix overzealous re-opened since blocked by... message
- https://bugs.webkit.org/show_bug.cgi?id=86020
-
- Reviewed by Adam Barth.
-
- Changed CreateBug behavior to only re-open a blocked bug if it
- was RESOLVED. Also had to update the test infrastructure slightly
- to allow for distinct mock commit revisions, so one could point
- to a RESOLVED bug for testing while another pointed to an OPEN bug.
-
- Also moved default created mock bug to be 60001 instead of 50004
- which already exists as a reference mock bug.
-
- * Scripts/webkitpy/common/checkout/checkout_mock.py:
- (MockCheckout.__init__):
- (MockCheckout.commit_info_for_revision):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzilla.create_bug):
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (test_create_rollout_resolved):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (FailureReasonTest.test_blame_line_for_revision):
- * Scripts/webkitpy/tool/steps/createbug.py:
- (CreateBug.run):
-
-2012-05-09 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- Use suitable viewport values on XHTML-MP pages.
- https://bugs.webkit.org/show_bug.cgi?id=85425
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable LEGACY_VIEWPORT_ADAPTION on Qt port.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-09 Jochen Eisinger <jochen@chromium.org>
-
- When creating a new page during a navigation, prime the initial document with the correct referrer policy
- https://bugs.webkit.org/show_bug.cgi?id=86001
-
- Reviewed by Adam Barth.
-
- Store the referrer policy in the request, so the network stack can comply with it.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest):
-
-2012-05-09 Vivek Galatage <vivekgalatage@gmail.com>
-
- Remove CYGWIN=tty from environment variable as its no longer supported
- https://bugs.webkit.org/show_bug.cgi?id=85791
-
- The CYGWIN=tty environment variable is no longer supported from Cygwin
- version 1.7.10. This fix avoids addition of this environment variable
- for Cygwin versions greater than 1.7.9. For supporting older versions
- i.e. 1.7.9 or older, the script takes care of retaining the environment
- variable.
-
- Reviewed by Adam Roben.
-
- * Scripts/webkitdirs.pm:
- (setupAppleWinEnv):
-
-2012-05-09 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --skip-failing-tests should also skip flaky tests
- https://bugs.webkit.org/show_bug.cgi?id=85941
-
- Reviewed by Ojan Vafai.
-
- This changes --skip-failing-tests so that we skip tests that
- are believed to pass sometimes as well as tests that are
- believed to always fail.
-
- In addition, in testing this I discovered that we had lousy
- test coverage of the details of retrying test failures and
- --clobber-old-results, so I wrote some more tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.prepare_lists_and_print_output):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (unit_test_list):
- (TestPort.__init__):
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_skip_failing_tests):
- (MainTest.test_retrying_and_flaky_tests):
-
-2012-05-09 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] EFL's DRT needs to support LayoutTestController.dumpIconChanges()
- https://bugs.webkit.org/show_bug.cgi?id=84435
-
- Reviewed by Antonio Gomes.
-
- Catch the "icon,changed" signal on the frames in EFL's DumpRenderTree
- to support LayoutTestController's dumpIconChanges().
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameIconChanged):
- (DumpRenderTreeChrome::onFrameCreated):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-09 Dominik Röttsches <dominik.rottsches@intel.com>
-
- webkit-patch upload Fails Behind Load-balancing Proxies
- https://bugs.webkit.org/show_bug.cgi?id=85980
-
- Reviewed by Adam Barth.
-
- Unchecking the login restriction to IP to allow the tool
- to function behind load-balancing proxies that use multiple
- outgoing IPs.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.authenticate):
-
-2012-05-09 Hao Zheng <zhenghao@chromium.org>
-
- [Chromium-android] Add unit test for Android layout test script (chromium_android.py)
- https://bugs.webkit.org/show_bug.cgi?id=80852
-
- Reviewed by Adam Barth.
-
- Add some tests to ensure that chromium android port works to some
- extent. Some methods is hard to test, as they rely on the actual
- behavior on device, e.g. pushing files to device.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.get_last_stacktrace): Check if dir exists.
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- (ChromiumAndroidPortTest.test_attributes):
- (ChromiumAndroidPortTest.test_get_last_stacktrace):
- (ChromiumAndroidPortTest.test_get_last_stacktrace.mock_run_command_no_dir):
- (ChromiumAndroidPortTest.test_get_last_stacktrace.mock_run_command_no_file):
- (ChromiumAndroidPortTest.test_get_last_stacktrace.mock_run_command_non_empty):
- (ChromiumAndroidDriverTest):
- (ChromiumAndroidDriverTest.setUp):
- (ChromiumAndroidDriverTest.test_get_drt_return_value):
- (ChromiumAndroidDriverTest.test_has_crash_hint):
- (ChromiumAndroidDriverTest.test_read_prompt):
- (ChromiumAndroidDriverTest.test_test_shell_command):
- (ChromiumAndroidDriverTest.test_write_command_and_read_line):
-
-2012-05-09 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] ORWT fails with Qt 5 and WK2.
- https://bugs.webkit.org/show_bug.cgi?id=85968
-
- Reviewed by Csaba Osztrogonác.
-
- The Qt5 binary does not have a -style argument, so avoid using it.
-
- * Scripts/old-run-webkit-tests:
-
-2012-05-09 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] LayoutTestController addUserScript implementation
- https://bugs.webkit.org/show_bug.cgi?id=84718
-
- Reviewed by Antonio Gomes.
-
- Added implementation of addUserScript() to LayoutTestController.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): clear added user scripts
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addUserScript): added implementation
-
-2012-05-09 Dan Bernstein <mitz@apple.com>
-
- Made build-webkit copy WebKitLibraries to the right location again after r116257
-
- Reviewed by Mark Rowe.
-
- * Scripts/build-webkit: Pass the built product directory to copy-webkitlibraries-to-product-directory.
- * Scripts/copy-webkitlibraries-to-product-directory: Use the first argument, if present, as the
- product directory.
-
-2012-05-08 Ojan Vafai <ojan@chromium.org>
-
- Show the chromium non-layout test bots in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=85903
-
- Reviewed by Eric Seidel.
-
- This is just a single-line high-level overview of the chromium non-layout test bots.
- This means that Chromium WebKit gardeners only need to keep garden-o-matic open in
- order to do their job.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- (#chromium-gtests iframe):
- (#chromium-gtests):
- (#gtest-label):
-
-2012-05-08 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Implement TextInputController.
- https://bugs.webkit.org/show_bug.cgi?id=78559
-
- Reviewed by Martin Robinson.
-
- TextInputController has been created for an input emulation purpose in DRT.
- However, not like other ports, EFL doesn't have it.
- Therefore, this patch will enable EFL port to have an input emulation in DRT.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWindowObjectCleared):
- * DumpRenderTree/efl/TextInputController.cpp: Added.
- (setMarkedTextCallback):
- (hasMarkedTextCallback):
- (markedRangeCallback):
- (insertTextCallback):
- (unmarkTextCallback):
- (firstRectForCharacterRangeCallback):
- (selectedRangeCallback):
- (makeTextInputController):
- * DumpRenderTree/efl/TextInputController.h: Added.
-
-2012-04-23 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Pass a WTF::String directly from DRT to ewebkit when possible
- https://bugs.webkit.org/show_bug.cgi?id=84634
-
- Reviewed by Gustavo Noronha Silva.
-
- Drop unnecessary const char* -> WTF::String conversions by
- creating String objects directly in LayoutTestController out of
- JSStringRef's and passing them to DumpRenderTreeSupportEfl.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::queueLoad):
- (LayoutTestController::setValueForUser):
- (LayoutTestController::findString):
- (LayoutTestController::addUserStyleSheet):
-
-2012-05-08 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL][DRT] EventSender needs implementation of leapForward function
- https://bugs.webkit.org/show_bug.cgi?id=83486
-
- Reviewed by Eric Seidel.
-
- Implemented leapForward function in Efl's DRT. This function is required
- to delay and queue event execution and simulate real user behavior.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (DelayedEvent):
- (MouseEventInfo::MouseEventInfo):
- (MouseEventInfo):
- (sendClick):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (leapForwardCallback):
- (mouseScrollByCallback):
- (feedOrQueueMouseEvent):
- (feedMouseEvent):
- (feedQueuedMouseEvents):
-
-2012-05-08 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] Memory leak in DRT EventSender.cpp
- https://bugs.webkit.org/show_bug.cgi?id=85886
-
- Reviewed by Martin Robinson.
-
- Fix a memory leak in gdkModifersFromJSValue() by using JSRetainPtr for
- JSString created with JSStringCreateWithUTF8CString.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gdkModifersFromJSValue):
-
-2012-05-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] glib dependency needs to be updated in jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=85878
-
- Reviewed by Martin Robinson.
-
- Bump glib version from 2.31.8 to 2.32.2 in jhbuild.modules. This
- addresses flakiness in media tests due to possible deadlock with the
- following output on stderr:
- GStreamer-WARNING **: wrong STREAM_LOCK count 0
-
- The bug was fixed upstream by:
- http://git.gnome.org/browse/glib/commit/?id=265f265c677bc5399dbb1cfa449cb4b915a6459f
-
- * efl/jhbuild.modules:
-
-2012-05-07 Alexis Menard <alexis.menard@openbossa.org>
-
- [Qt] Unbreak debugging of WebKit2.
- https://bugs.webkit.org/show_bug.cgi?id=85839
-
- Reviewed by Simon Hausmann.
-
- When you attach GDB to a running process, it stops it.
- http://trac.webkit.org/changeset/115958 introduced a pause()
- call to wait the debugger to be attached to then continue
- the execution of the WebProcess. Unfortunately the pause()
- function does not return unless a signal handler is called.
- This patch introduce an event handler to exit from the paused
- state when the debugger send the signal SIGCONT. The old code
- works with older version of GDB (<7.0) but not with newer
- versions where the behavior of pause() is correct.
-
- * WebKitTestRunner/qt/main.cpp:
- (sigcontHandler):
- (main):
-
-2012-05-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] EFL's DRT does not fully support page visibility
- https://bugs.webkit.org/show_bug.cgi?id=85032
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (resetPageVisibilityCallback): Fix incorrect argumentCount check.
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): Properly
- reset page visibility setting between tests.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setPageVisibility): Add support for "preview"
- visibility state.
-
-2012-05-08 Gavin Peters <gavinp@chromium.org>
-
- [webkit-patch] Return meaningful results from single-result queries.
- https://bugs.webkit.org/show_bug.cgi?id=85367
-
- Reviewed by Dirk Pranke.
-
- Sometimes a quicksearch returns a single result by just redirecting to the page for that single
- bug. This patch hacks around that by noticing the redirect target is a single page, and constructing
- a result list consisting of that one bug.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (BugzillaQueries._fetch_bugs_from_advanced_query):
-
-2012-05-08 Gavin Peters <gavinp@chromium.org>
-
- [webkit-patch] Add new chrome-channels command to track down current chrome release channels for a committed bug.
- https://bugs.webkit.org/show_bug.cgi?id=85368
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzillaQueries.fetch_bugs_matching_quicksearch):
- * Scripts/webkitpy/common/net/omahaproxy.py: Added.
- (OmahaProxy):
- (OmahaProxy.__init__):
- (OmahaProxy.set_url):
- (OmahaProxy._json_url):
- (OmahaProxy._get_json):
- (OmahaProxy.get_revisions):
- * Scripts/webkitpy/common/net/omahaproxy_unittest.py: Added.
- (MockOmahaProxy):
- (MockOmahaProxy.__init__):
- (OmahaProxyTest):
- (OmahaProxyTest.test_get_revisions):
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/bugsearch.py:
- (BugSearch):
- * Scripts/webkitpy/tool/commands/chromechannels.py: Added.
- (ChromeChannels):
- (__init__):
- (execute):
- * Scripts/webkitpy/tool/commands/chromechannels_unittest.py: Added.
- (MockOmahaProxy):
- (MockOmahaProxy.get_revisions):
- (TestableChromeChannels):
- (TestableChromeChannels.__init__):
- (ChromeChannelsTest):
- (ChromeChannelsTest.test_single_bug):
- (ChromeChannelsTest.test_with_query):
-
-2012-05-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix GTK+ unit tests.
-
- * gtk/common.py:
- (pkg_config_file_variable):
-
-2012-05-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Google tests that time out are leaked
- https://bugs.webkit.org/show_bug.cgi?id=84973
-
- Reviewed by Philippe Normand.
-
- Move Tools/Scripts/run-gtk-tests to Tools/gtk/run-api-tests
- leaving run-gtk-tests as simple wrapper that runs run-api-tests in
- a jhbuild environment when jhbuild is available.
-
- * Scripts/run-gtk-tests: Run Tools/gtk/run-api-tests directly or
- with jhbuild if present.
- * gtk/common.py:
- (pkg_config_file_variable): Generic function to get a variable
- from a pkg-config file.
- (prefix_of_pkg_config_file): Use pkg_config_file_variable with 'prefix'.
- * gtk/run-api-tests: Copied from Tools/Scripts/run-gtk-tests.
- (TestRunner.__init__): Use common.build_path() to get the programs path.
- (TestRunner._lookup_atspi2_binary): Use
- common.pkg_config_file_variable() to get the 'exec_prefix'.
- (TestRunner._start_accessibility_daemons): Use subprocess.Popen()
- directly instead of helper _create_process that has been removed.
- (TestRunner._setup_testing_environment): Use subprocess.Popen()
- directly instead of helper _create_process that has been
- removed. Use common.top_level_path() and common.build_path()
- instead of custom methods that have been removed too.
- (TestRunner._run_test_command): Use subprocess.Popen() directly
- instead of helper _create_process that has been removed.
-
-2012-05-08 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] [DRT] Clear extra views before setting a blank page
- https://bugs.webkit.org/show_bug.cgi?id=85608
-
- Reviewed by Kenneth Rohde Christiansen.
-
- We need to clear the extra views before setting a blank page,
- otherwise it will cause more events interactions and sometimes
- trigger a unload(). This was causing frame-crash-with-page-cache.html
- to leak events to the next test causing any subsequent test to
- fail.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (runTest):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::clearExtraViews):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-08 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] X11 plugins need to be reworked for Qt5+WK1
- https://bugs.webkit.org/show_bug.cgi?id=80691
-
- Reviewed by Simon Hausmann.
-
- Implement basic windowless plugin support with Qt5.
-
- * qmake/mkspecs/features/features.prf:
- Enable NPAPI plugins if X11 libraries are available.
- * qmake/mkspecs/features/functions.prf:
- Added a convenience function to determine availability
- of X11 libraries.
-
-2012-05-07 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [webkitpy] Remove Python 2.5-specific workaround from http_server_base.py.
- https://bugs.webkit.org/show_bug.cgi?id=85852
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase._is_server_running_on_all_ports): Revert the part
- of r89412 which was a workaround for an issue with Python 2.5 on
- Mac 10.5.
-
-2012-05-07 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- webkitdirs.pm: Make determineNumberOfCPUs work on FreeBSD.
- https://bugs.webkit.org/show_bug.cgi?id=81481
-
- Reviewed by Dirk Pranke.
-
- FreeBSD has the same sysctl interface present in Darwin to query
- the number of CPUs available, so use that too.
-
- * Scripts/webkitdirs.pm:
- (determineNumberOfCPUs): Share the sysctl call with Darwin.
- (isFreeBSD): Added.
-
-2012-05-07 Alexis Menard <alexis.menard@openbossa.org>
-
- Unreviewed Qt build fix in Debug.
-
- We need some system includes here for getpid() to be recognized.
-
- * WebKitTestRunner/qt/main.cpp:
-
-2012-05-07 Ojan Vafai <ojan@chromium.org>
-
- When embedding the flakiness dashboard, hide popups when the frame is blurred.
- https://bugs.webkit.org/show_bug.cgi?id=85684
-
- Reviewed by Dirk Pranke.
-
- If you show a popup, then click elsewhere in garden-o-matic, it will now
- properly hide it.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (showPopup):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (showPopupForBuild):
- (generatePageForIndividualTests.if):
- (generatePageForIndividualTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js: Added.
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/run-embedded-unittests.html: Added.
-
-2012-05-07 Ian Vollick <vollick@chromium.org>
-
- [chromium] WebViewHost should setCompositorSurfaceReady
- https://bugs.webkit.org/show_bug.cgi?id=85418
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setWebWidget):
-
-2012-05-07 Jon Lee <jonlee@apple.com>
-
- WebKitTestRunner needs layoutTestController.dumpFrameLoadCallbacks
- https://bugs.webkit.org/show_bug.cgi?id=42331
- <rdar://problem/8193641>
-
- Reviewed by Darin Adler.
-
- This patch sets up the framework for supporting dumpFrameLoadCallbacks, as well as
- outputting some of the required strings. As tests become unskipped the other callbacks
- can be supported.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Add dumpFrameLoadCallbacks()
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage): pass in the dictionary containing keys needed to initialize
- dump callbacks for the layoutTestController.
- (WTR::InjectedBundle::booleanForKey): Helper function to extract boolean value from key in WKDictionaryRef.
- Output some warning if we are trying to extract a value that is not a boolean.
- (WTR::InjectedBundle::beginTesting): Update to take in the dictionary passed in by the TestController.
- We cannot set the bits on the layoutTestController until it has been created in beginTesting().
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR):
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR):
- (WTR::dumpFrameDescriptionSuitableForTestResult): Static function similar to
- -[WebFrame _drt_descriptionSuitableForTestResult] in DumpRenderTree.
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame): Output string.
- (WTR::InjectedBundlePage::didCommitLoadForFrame): Output string.
- (WTR::InjectedBundlePage::didFinishLoadForFrame): Output string.
- (WTR::InjectedBundlePage::didReceiveTitleForFrame): Output string.
- (WTR::InjectedBundlePage::didCancelClientRedirectForFrame): Output string.
- (WTR::InjectedBundlePage::willPerformClientRedirectForFrame): Output string. In WK1 it's
- "willPerformClientRedirectToURL" so we will have to use that value here.
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame): Output string.
- (WTR::InjectedBundlePage::didHandleOnloadEventsForFrame): Output string.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize to not dump frame load callbacks.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpFrameLoadCallbacks): Change to use setShouldDumpFrameLoadCallbacks.
- (WTR::LayoutTestController::setShouldDumpFrameLoadCallbacks): Set bit.
- (WTR::LayoutTestController::shouldDumpFrameLoadCallbacks): Return bit.
- (LayoutTestController): Added m_dumpFrameLoadCallbacks to track whether to dump the output.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldLogFrameLoadDelegates): Similar to DRT.
- (WTR::TestInvocation::invoke): Based on the URL loaded, set the bit in the dictionary that gets passed
- to the injected bundle.
-
-2012-05-07 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Enhance WebUserMediaClientMock and add a test for it
- https://bugs.webkit.org/show_bug.cgi?id=85618
-
- Reviewed by Adam Barth.
-
- Adding the capability to control which MediaStreamTracks actually get created,
- and adding a test that exercises the JS api using that capability.
-
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (WebKit::WebUserMediaClientMock::requestUserMedia):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::testMediaStreamClient):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-05-07 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] WebGL feature is not built anymore through build-webkit after r116251
- https://bugs.webkit.org/show_bug.cgi?id=85788
-
- Reviewed by Martin Robinson.
-
- Enable WebGL by default for the Gtk port. The feature is already enabled by
- default in configure.ac, so there's no reason it shouldn't be enabled when
- building through build-webkit.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unittest fix after r116288, because now there are more than 5 hit for the 'Eric' word.
- We have only 2 'Gavin', so it is a better choice than 'Eric' for unit testing.
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois):
-
-2012-05-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116299, r116301, and r116303.
- http://trac.webkit.org/changeset/116299
- http://trac.webkit.org/changeset/116301
- http://trac.webkit.org/changeset/116303
- https://bugs.webkit.org/show_bug.cgi?id=85795
-
- Build is still broken (Requested by Ossy on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/main.cpp:
- (main):
- * QtTestPlatformPlugin/QtTestPlatformPlugin.pro: Removed.
- * QtTestPlatformPlugin/TestIntegration.cpp: Removed.
- * QtTestPlatformPlugin/TestIntegration.h: Removed.
- * QtTestPlatformPlugin/mac/TestFontDatabase.h: Removed.
- * QtTestPlatformPlugin/mac/TestFontDatabase.mm: Removed.
- * QtTestPlatformPlugin/mac/TestIntegrationMac.mm: Removed.
- * QtTestPlatformPlugin/main.cpp: Removed.
- * QtTestPlatformPlugin/testplatform.json: Removed.
- * Tools.pro:
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-05-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed Qt build fix.
-
- One more try to learn how to use
- const with a pointer array.
-
- * DumpRenderTree/qt/main.cpp:
- (initializeTestPlatformPlugin):
-
-2012-05-07 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed build fix after r116299.
-
- * DumpRenderTree/qt/main.cpp:
- (initializeTestPlatformPlugin):
-
-2012-05-07 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add test specific platform plugin to achieve unified layout test results
- https://bugs.webkit.org/show_bug.cgi?id=80996
-
- Reviewed by Simon Hausmann.
-
- Added QtTestPlatformPlugin as a new project under Tools.
- This is a Qt5-ish platform plugin that can be used to tweak the
- platform support interfaces in order to unify layout test results.
- For now it only overrides the font database on Mac and redirects
- everything else to the real platform plugin. The font database it
- provides mimics the way how we set up test fonts with fontconfig on Linux.
- Make DumpRenderTree and WebKitTestRunner use this platform plugin.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/main.cpp:
- (initializeTestPlatformPlugin):
- (main):
- * QtTestPlatformPlugin/QtTestPlatformPlugin.pro: Added.
- * QtTestPlatformPlugin/TestIntegration.cpp: Added.
- (TestIntegration::TestIntegration):
- (TestIntegration::fontDatabase):
- * QtTestPlatformPlugin/TestIntegration.h: Added.
- (TestIntegration):
- (TestIntegration::hasCapability):
- (TestIntegration::createPlatformPixmap):
- (TestIntegration::createPlatformWindow):
- (TestIntegration::createPlatformBackingStore):
- (TestIntegration::createPlatformOpenGLContext):
- (TestIntegration::createPlatformSharedGraphicsCache):
- (TestIntegration::guiThreadEventDispatcher):
- (TestIntegration::clipboard):
- (TestIntegration::drag):
- (TestIntegration::inputContext):
- (TestIntegration::accessibility):
- (TestIntegration::nativeInterface):
- (TestIntegration::services):
- (TestIntegration::styleHint):
- (TestIntegration::platformTheme):
- * QtTestPlatformPlugin/mac/TestFontDatabase.h: Added.
- (TestFontDatabase):
- * QtTestPlatformPlugin/mac/TestFontDatabase.mm: Added.
- (TestFontDatabase::populateFontDatabase):
- * QtTestPlatformPlugin/mac/TestIntegrationMac.mm: Added.
- (TestIntegration::fontDatabase):
- * QtTestPlatformPlugin/main.cpp: Added.
- (TestIntegrationPlugin::keys):
- (TestIntegrationPlugin::create):
- (TestIntegrationPlugin::initialize):
- * QtTestPlatformPlugin/testplatform.json: Added.
- * Tools.pro:
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-05-07 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] media/video-poster-blocked-by-willsendrequest.html is flaky
- https://bugs.webkit.org/show_bug.cgi?id=85609
-
- Reviewed by Simon Hausmann.
-
- Flakiness was caused by the fact that
- media/crash-closing-page-with-media-as-plugin-fallback.html and
- media/video-poster-blocked-by-willsendrequest.html use the same PNG
- file as poster attribute in the video tag. The PNG file gets cached
- when the first test is executed and this somehow causes the second
- test to fail.
-
- The flakiness was addressed by clearing the memory and page caches
- between tests.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-05-07 Eric Seidel <eric@webkit.org>
-
- Add values for all features to Qt's features.pri
- https://bugs.webkit.org/show_bug.cgi?id=85746
-
- Reviewed by Tor Arne Vestbø.
-
- When generate-feature-files generates features.pri it provides a value
- for every possible ENABLE_. In prepration for landing generate-feature-files
- it seems appropriate to add a value for all possible ENABLEs to the existing
- features.pri. This lets me make sure that I'm getting them all right!
-
- * qmake/mkspecs/features/features.pri:
-
-2012-05-07 Adam Bergkvist <adam.bergkvist@ericsson.com>
-
- Added myself as a committer.
-
- Not reviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-07 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL][DRT] Implement LayoutTestController::execCommand
- https://bugs.webkit.org/show_bug.cgi?id=82286
-
- Reviewed by Antonio Gomes.
-
- Add missing implementation execCommand and isCommandEnabled to EFL's
- LayoutTestController.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::execCommand):
- (LayoutTestController::isCommandEnabled):
-
-2012-05-06 Hayato Ito <hayato@chromium.org>
-
- [prepare-ChangeLog] Excludes a reference file used by reftests from test files.
- https://bugs.webkit.org/show_bug.cgi?id=74268
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/prepare-ChangeLog:
- (generateFileList):
-
-2012-05-06 Mary Wu <mary.wu@torchmobile.com.cn>
-
- Add a contributor to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=85761
-
- Reviewed by Unreviewed.
-
- Add myself to committers.py contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-06 Dan Bernstein <mitz@apple.com>
-
- Tools part of: Building and debugging WebKit in the Xcode IDE requires a lot of setup
- https://bugs.webkit.org/show_bug.cgi?id=85739
-
- Reviewed by Daniel Bates.
-
- * Scripts/build-webkit: Moved code that copies from WebKitLibraries to the product directory
- from here...
- * Scripts/copy-webkitlibraries-to-product-directory: ...to this new script.
-
-2012-05-06 Andy Estes <aestes@apple.com>
-
- Fix the build after r116246.
-
- * DumpRenderTree/LayoutTestController.cpp: Remove an unused function.
-
-2012-05-06 Eric Seidel <eric@webkit.org>
-
- Update several build-webkit options to match the #defines they toggle
- https://bugs.webkit.org/show_bug.cgi?id=85744
-
- Reviewed by Adam Barth.
-
- Most notable here is fixing --3d-canvas to be --webgl these days --
- the define was renamed 15 months ago!
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-06 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] EFL's LayoutTestController setJavaScriptCanAccessClipboard implementation
- https://bugs.webkit.org/show_bug.cgi?id=83687
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setJavaScriptCanAccessClipboard):
-
-2012-05-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Convert isPageBoxVisible to use Internals interface.
- https://bugs.webkit.org/show_bug.cgi?id=85692
-
- Reviewed by Darin Adler.
-
- Remove isPageBoxVisible functions, because it is able to work in the
- cross-port way through the Internals interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-06 Tom Zakrajsek <tomz@codeaurora.org>
-
- sheriffbot isn't reopening patches after it lands rollouts
- https://bugs.webkit.org/show_bug.cgi?id=64418
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/createbug.py:
- (CreateBug.run):
-
-2012-05-04 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Use os.pathsep instead of manually finding out the path separator in NRWT.
- https://bugs.webkit.org/show_bug.cgi?id=85697
-
- Reviewed by Eric Seidel.
-
- * Scripts/new-run-webkit-tests: Instead of manually detecting whether
- the path separator should be ':' or ';' by checking sys.platform, rely
- on os.pathsep which has exactly the same information (os.pathsep is
- ':' for Cygwin, from what I could check in Python's sources).
-
-2012-05-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116223.
- http://trac.webkit.org/changeset/116223
- https://bugs.webkit.org/show_bug.cgi?id=85718
-
- The bots need to set XDG_DATA_DIRS (Requested by rakuco on
- #webkit).
-
- * efl/jhbuildrc:
- * gtk/jhbuildrc:
-
-2012-05-05 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [jhbuild] Do not set XDG_DATA_DIRS in jhbuildrc.
- https://bugs.webkit.org/show_bug.cgi?id=85717
-
- Reviewed by Martin Robinson.
-
- After r116209, the XDG_DATA_DIRS environment variable is now
- passed by webkitpy's layout_tests code to run-with-jhbuild, so
- instead of setting a few defaults in jhbuildrc we can now rely on
- the values set and really used by each system.
-
- * efl/jhbuildrc:
- * gtk/jhbuildrc:
-
-2012-05-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Buildfix for --minimal build after r116107.
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-05 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] GtkDriver is not required anymore after r116134
- https://bugs.webkit.org/show_bug.cgi?id=85699
-
- Reviewed by Csaba Osztrogonác.
-
- Remove GtkDriver as it was replaced by the XvfbDriver and is
- no longer needed.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2012-05-05 Zan Dobersek <zandobersek@gmail.com>
-
- Increase the display ID for the Xvfb process to use if pixel_tests argument
- is true rather than if pixel_tests option is present. This fixes the
- XvfbDriver in the same way r115825 fixed the now-redundant GtkDriver.
-
- Rubber-stamped by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
-
-2012-05-04 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Preserve XDG_DATA_DIRS in the environment passed to ServerProcess.
- https://bugs.webkit.org/show_bug.cgi?id=85694
-
- Reviewed by Martin Robinson.
-
- This is sort of a follow-up to r100674: $XDG_DATA_DIRS should be
- preserved, as it is particularly useful for Linux/Unix
- environments. As a real use case, if shared-mime-info is
- installed into a non-trivial prefix, Glib and other libraries will
- have trouble to properly identify mimetypes (in ResourceResponses,
- for example) as the base freedesktop.org mimetype file will not be
- found.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.setup_environ_for_server):
-
-2012-05-04 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Simplify how libWebCoreModules is linked in, and fix WebKit2 build
- https://bugs.webkit.org/show_bug.cgi?id=85691
-
- * GNUmakefile.am: no longer link libWebCoreModules to DumpRenderTree.
-
-2012-05-04 Eric Seidel <eric@webkit.org>
-
- Make capitalization and descriptions in FeatureList.pm more consistent to make easier to autogenerate
- https://bugs.webkit.org/show_bug.cgi?id=85583
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-04 Eric Seidel <eric@webkit.org>
-
- Sort entries in FeaturesList.pm to make them easier to autogenerate
- https://bugs.webkit.org/show_bug.cgi?id=85584
-
- Reviewed by Daniel Bates.
-
- No functional changes, only sorting.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-04 Andy Estes <aestes@apple.com>
-
- REGRESSION (r115752): WebKit2.NewFirstVisuallyNonEmptyLayout API test times out
- https://bugs.webkit.org/show_bug.cgi?id=85675
-
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp:
- (TestWebKitAPI::TEST): Disable the test.
-
-2012-04-30 Jer Noble <jer.noble@apple.com>
-
- Full screen will exit during a provisional load of a non-ancestor iframe.
- https://bugs.webkit.org/show_bug.cgi?id=85230
-
- Reviewed by Maciej Stachowiak .
-
- Add support for the new UIDelegate webView:closeFullScreenWithListener: method:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:closeFullScreenWithListener:]):
-
- Add support for the new closeFullScreen injected bundle method:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::closeFullScreen):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2012-05-04 Ojan Vafai <ojan@chromium.org>
-
- Fix test naming to be camel-case like the methods they are testing.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-05-04 Ojan Vafai <ojan@chromium.org>
-
- Show the results links in the embedded flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=85660
-
- Reviewed by Adam Barth.
-
- Turns out these links don't add much visual noise and it's annoying
- to have to go to the dashboard from garden-o-matic just to view the
- results for a test.
-
- This is useful for cases where garden-o-matic doesn't properly show the
- results (e.g. missing tests). If we address all those cases, then
- we could easily hide the results links again if we wanted to.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (showUpdateInfoForTest):
- (htmlForIndividualTestOnAllBuildersWithResultsLinks):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-05-04 Dirk Pranke <dpranke@chromium.org>
-
- Revert to using chromium --test-shell mode on SL in NRWT
-
- https://bugs.webkit.org/show_bug.cgi?id=83076
-
- Unreviewed, build fix.
-
- We seem to be seeing a lot more flakiness on the bot since
- I switched NRWT to "DRT" mode. We'll try reverting back and
- see if this helps things.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.__init__):
-
-2012-05-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Implement layoutTestController.dumpResourceResponseMIMETypes
- https://bugs.webkit.org/show_bug.cgi?id=84941
-
- Reviewed by Martin Robinson.
-
- Print MIME type detection messages in EFL's DumpRenderTree if
- LayoutTestController's dumpResourceResponseMIMETypes() returns true.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onResponseReceived):
-
-2012-05-04 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] DRT needs an implementation of LayoutTestController::setDefersLoading and ::goBack
- https://bugs.webkit.org/show_bug.cgi?id=85134
-
- Reviewed by Martin Robinson.
-
- Add missing implementation setDefersLoading and goBack to GTK's
- LayoutTestController so that the test case rely on these methods
- can be enabled.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
-
-2012-05-04 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt][NRWT] Run each DRT in it's own xvfb
- https://bugs.webkit.org/show_bug.cgi?id=77335
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py: Added.
- (XvfbDriver):
- (XvfbDriver._start):
- (XvfbDriver._start.x_filter):
- (XvfbDriver.stop):
-
-2012-05-04 Zan Dobersek <zandobersek@gmail.com>
-
- Use destructuring assingment for the return values of the
- port.diff_image() method call.
-
- Rubber-stamped by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Store fewer runs by default in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=85568
-
- Reviewed by Dirk Pranke.
-
- This will greatly shrink the size of the json files we load,
- resulting in a much faster initial load. People rarely care
- about more than 100 runs. For the cases they do, they can still click
- the show all runs checkbox to show 500 runs.
-
- * TestResultServer/model/jsonresults.py:
-
-2012-05-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Frame load callbacks output is missing for redirections
- https://bugs.webkit.org/show_bug.cgi?id=85173
-
- Reviewed by Antonio Gomes.
-
- Catch the new ewk_frame signals to print the expected output in case
- of redirections, when LayoutTestController's dumpFrameLoadCallbacks()
- returns true.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onWillSendRequest):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameRedirectForProvisionalLoad):
- (DumpRenderTreeChrome::onFrameRedirectRequested):
- (DumpRenderTreeChrome::onResponseReceived):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix up warning about missing GLib/Gio/GStreamer
-
- We don't actually fall back.
-
- Rubber-stamped by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Clarify warning about missing GLib/Gio/GStreamer for media support
-
- And only print it once.
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Clean up and split features.prf into a static list of defaults
-
- The static list of feature defaults is used as a fallback for any
- feature that's not dynamically detected or overriden on the command
- line (though build-webkit or passing DEFINES+= to qmake).
-
- The static list is complete, which allows for auto-generation based
- on Features.py (see bug https://bugs.webkit.org/show_bug.cgi?id=85456)
-
- https://bugs.webkit.org/show_bug.cgi?id=85611
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit:
- * Tools.pro:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/features.pri: Added.
-
-2012-05-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r116085, r116091, and r116095.
- http://trac.webkit.org/changeset/116085
- http://trac.webkit.org/changeset/116091
- http://trac.webkit.org/changeset/116095
- https://bugs.webkit.org/show_bug.cgi?id=85628
-
- We are not ready with dependencies on all platform yet (mac) +
- problems with debug builds. (Requested by Zoltan on #webkit).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] LayoutTestController does not support overriding WebKitLoadSiteIconsKey
- https://bugs.webkit.org/show_bug.cgi?id=85171
-
- Reviewed by Andreas Kling.
-
- Implement support for overriding "WebKitLoadSiteIconsKey" setting in
- EFL's LayoutTestController.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::overridePreference):
-
-2012-05-03 Alexis Menard <alexis.menard@openbossa.org>
-
- [Qt] Enable fullscreen API for WebKit2.
- https://bugs.webkit.org/show_bug.cgi?id=85498
-
- Reviewed by Simon Hausmann.
-
- Enable the fullscreen API on the MiniBrowser and turn
- it default on WebKit2, disable it on WK1.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.prf:
-
-2012-05-04 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- REGRESSION(r116008) old-run-webkit-tests broken
- https://bugs.webkit.org/show_bug.cgi?id=85597
-
- Reviewed by Simon Hausmann.
-
- Reinstate libraryContainsSymbol.
-
- * Scripts/webkitperl/features.pm:
- (libraryContainsSymbol):
-
-2012-05-04 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Set WebCore imagedecoders as default and add fallback to QImageDecoder
- https://bugs.webkit.org/show_bug.cgi?id=80400
-
- Remove WTF_USE_QT_IMAGE_DECODER macro.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should obey layoutTestController's addURLToRedirect()
- https://bugs.webkit.org/show_bug.cgi?id=82722
-
- Reviewed by Maciej Stachowiak.
-
- Implement support for layoutTestController's addURLToRedirect()
- in EFL's DRT so that it redirects properly when indicated.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWillSendRequest):
-
-2012-05-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should support LayoutTestController's willSendRequestReturnsNullOnRedirect()
- https://bugs.webkit.org/show_bug.cgi?id=82704
-
- Reviewed by Antonio Gomes.
-
- EFL's DRT needs to obey LayoutTestController's
- willSendRequestReturnsNullOnRedirect().
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWillSendRequest):
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- git-add-reviewer: Do not put the bug title and its URL in the same line in the commit message.
- https://bugs.webkit.org/show_bug.cgi?id=85570
-
- Reviewed by Adam Roben.
-
- The standard format of commit messages and ChangeLog entries has a
- short summary in the first line, followed by the bug URL in
- Bugzilla. Passing "%s" in the pretty format line to git-rev-list
- merges these two lines into a single one separated by a space
- character, which is not what we want.
-
- Since "%s%n%n%b" is in practice "%B" (raw message), use it
- instead, as the first two lines do not end up being merged
- together.
-
- * Scripts/git-add-reviewer:
- (writeCommitMessageToFile):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Improve UI for garden-o-matic examine view when there are fewer than 5 tests.
- https://bugs.webkit.org/show_bug.cgi?id=85566
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Recognize FreeBSD as a valid platform.
- https://bugs.webkit.org/show_bug.cgi?id=81467
-
- Reviewed by Adam Barth.
-
- Add PlatformInfo.is_freebsd() so that trying to use webkit-patch
- on FreeBSD does not raise an "unrecognized platform" exception.
-
- Most of this patch contains some unit tests for the mentioned
- method, as currently platform-specific code is needed only on
- Windows.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.__init__):
- (PlatformInfo.is_freebsd):
- (PlatformInfo._determine_os_name):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_freebsd):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py:
- (fake_platform):
- (fake_platform.FakePlatformModule.release):
- (TestPlatformInfo.test_real_code):
- (TestPlatformInfo.test_os_name_and_wrappers):
- (TestPlatformInfo.test_os_version):
- (TestPlatformInfo.test_display_name):
- (TestPlatformInfo.test_total_bytes_memory):
- (TestPlatformInfo.test_free_bytes_memory):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._default_port):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Make the table headers white-space:nowrap. This decreases the vertical size,
- which makes for more minimal embedding in garden-o-matic.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.css:
- (.table-header-content *):
-
-2012-05-03 Eric Seidel <eric@webkit.org>
-
- Split build-webkit's feature option list off into its own module in preparation for autogeneration
- https://bugs.webkit.org/show_bug.cgi?id=85548
-
- Reviewed by Daniel Bates.
-
- My Perl-fu is very weak. This moves the feature option list off into a separate module
- file so that I can easily autogenerate just that file with the fancy new generate-feature-files command.
- It's a bit odd to have an array which we return out to build-webkit to modify, but it turns out
- not to matter. Also, build-webkit doesn't actually use any of the variables we're using to
- store the results from the option parse, so those end up inaccessible from build-webkit (except by reference)
- which is actually cleaner. Callers can't assume that they would get a new array every time, but someone
- with more Perl-fu than I could create something fancier than this if we need in the future.
-
- * Scripts/build-webkit:
- * Scripts/webkitperl/FeatureList.pm: Added.
- (getFeatureOptionList):
-
-2012-05-03 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION: run-webkit-tests failing on Chromium Mac
- https://bugs.webkit.org/show_bug.cgi?id=85459
-
- Unreviewed, build fix.
-
- Turns out select doesn't throw IOErrors, it has it's own kind of
- error :(. Trap that instead.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [CMake] Rewrite FindCairo.cmake.
- https://bugs.webkit.org/show_bug.cgi?id=84895
-
- Reviewed by Daniel Bates.
-
- The old approach relied on pkg-config for finding Cairo (which
- introduced a dependency on pkg-config that could be avoided), used
- the LibFindMacros code that we should probably remove in the
- future and did not use the FindPackageHandleStandardArguments
- module.
-
- Change all that by rewriting the module.
- - Use the pkg-config output optionally instead of requiring it
- like LibFindMacros did.
- - Remove the implicit dependency on FreeType which often found it
- the wrong way via pkg-config and without considering
- CMAKE_PREFIX_PATH.
- - Retrieve the Cairo version by looking at cairo-version.h instead
- of relying on pkg-config. It requires some additional code for
- checking if the desired version has been found, but that will not
- be needed once we start depending on CMake 2.8.3 or later.
-
- The only downside is that FPHSA sets <UPPERCASED_NAME>_FOUND
- instead of <Name>_FOUND, and to keep things consistent
- Cairo_LIBRARIES and Cairo_INCLUDE_DIRS have become CAIRO_LIBRARIES
- and CAIRO_INCLUDE_DIRS.
-
- * DumpRenderTree/efl/CMakeLists.txt: Use CAIRO_FOO instead of
- Cairo_FOO.
- * EWebLauncher/CMakeLists.txt: Ditto.
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Fix modifier and bug sorting on the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=85554
-
- Reviewed by Dirk Pranke.
-
- The sorting assumes that the column header name matches a field
- in the testResults object and uses that field for sorting.
- Filter the bugs out of the modifiers list and put them in a bugs field
- and only put the non-bug modifiers in the modifiers list.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (populateExpectationsData):
- (htmlForSingleTestRow):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Fix some state resetting when running unittests. HtmlForSingleTestRow
- was flaky.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (htmlForSingleTestRow):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Use PlatformInfo wherever possible in the User class.
- https://bugs.webkit.org/show_bug.cgi?id=85549
-
- Reviewed by Dirk Pranke.
-
- Instead of relying on sys.platform to detect whether the current
- platform is a Mac, use the PlatformInfo class instead.
-
- * Scripts/webkitpy/common/system/user.py:
- (User.__init__):
- (User.edit_changelog):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Remove the percent failed column from the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=85552
-
- Reviewed by Dirk Pranke.
-
- This column isn't useful enough to justify the visual noise.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (processMissingAndExtraExpectations):
- (tableHeaders):
- (htmlForSingleTestRow):
- (sortTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-05-03 Eric Seidel <eric@webkit.org>
-
- --coverage should not not use the "feature" options system in build-webkit, similarly remove special-casing for WTF_URL
- https://bugs.webkit.org/show_bug.cgi?id=85542
-
- Reviewed by Daniel Bates.
-
- Remove these last two odd-men-out, so that we can generate the default feature options
- for build-webkit using the new generate-feature-files command.
- The Mac build system has some special casing for ENABLE_ defines which gets them
- defined as -D on the build command, even though initially they start out as
- environment variables ENABLE_FOO = ENABLE_FOO. The Feature options in build-webkit
- depend on this support, but it doesn't work for WTF_USE_ defines like WTF_USE_WTF_URL.
- I'm told that WTF_URL is not actively being worked on, so just removing it for now.
- It should probably come back to life as an ENABLE_, or build-webkit or the Xcode projects
- should be made generically smarter about these USE_WTF defines.
- (There is still WTF_USE_TILED_BACKING_STORE in the feature list, but it only seems
- used by Qt. If someone tried build-webkit --tiled-backing-store on Mac today it
- would not work!)
-
- * Scripts/build-webkit:
-
-2012-05-03 Eric Seidel <eric@webkit.org>
-
- Remove the last bits of Leopard support from our perl scripts
- https://bugs.webkit.org/show_bug.cgi?id=85545
-
- Reviewed by Daniel Bates.
-
- Chromium still supports Leopard (for a little while yet), but AppleMacWebKit dropped
- Leopard support several months ago. Remove the last bits of isLeopard() branching
- in our Perl scripts, since no one is using this (Chromium has never used this Perl code).
-
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks):
- (captureSavedCrashLog):
- * Scripts/webkitdirs.pm:
- (determineArchitecture):
- (argumentsForRunAndDebugMacWebKitApp):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- [Chromium] Don't show the WebKit Linux ASAN bot on the flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=85551
-
- Reviewed by Dirk Pranke.
-
- It's not uploading results and in the short term we don't plan to have it start.
-
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumWebkitTipOfTreeTestRunner):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Show the test name in the dashboard if showChrome==false and we're showing multiple tests
- https://bugs.webkit.org/show_bug.cgi?id=85243
-
- Reviewed by Dirk Pranke.
-
- This happens for cases where a test name matches multiple tests.
- In practice, this only happens for virtual test suites (e.g. the canvas tests).
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (htmlForIndividualTestOnAllBuildersWithChrome):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (testHtmlForIndividualTestOnAllBuildersWithChromeNonexistant):
- (testHtmlForIndividualTestOnAllBuildersWithChrome):
- (testHtmlForIndividualTestOnAllBuildersWithChromeWebkitMaster):
- (testHtmlForIndividualTests):
-
-2012-05-03 Ojan Vafai <ojan@chromium.org>
-
- Port the flakiness dashboard unittests to qunit
- https://bugs.webkit.org/show_bug.cgi?id=85544
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (appendJSONScriptElements):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- (runExpectationsTest):
- (test):
- * TestResultServer/static-dashboards/run-unittests.html: Added.
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove check for readline on Mac.
- https://bugs.webkit.org/show_bug.cgi?id=85547
-
- Reviewed by Eric Seidel.
-
- Python 2.5 is not supported by the WebKit project anymore, and
- Python's readline documentation does not mention the module not
- being available in the supported versions.
-
- * Scripts/webkitpy/common/system/user.py:
-
-2012-05-03 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [NRWT] Run performance tests with lock
- https://bugs.webkit.org/show_bug.cgi?id=78628
-
- Reviewed by Tony Chang.
-
- Locking performance tests (like we do for http tests) will force them
- to run in serial. This reduces the load of the machine when running perf
- tests and minimizes the chances of the tests to fail, specially
- timeouts.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager._is_perf_test):
- (Manager._test_requires_lock):
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2012-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Attempt to fix a crash on SL ...
-
- Unreviewed, build fix.
-
- It looks like we may be getting an IOError raised during
- select() on chromium mac, and that error isn't being caught.
- Pushing it into the try/catch block will hopefully catch this
- and allow us to see why the subprocess is crashing.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
-
-2012-05-02 Jon Honeycutt <jhoneycutt@apple.com>
-
- WebFrameLoaderClient::dispatchWillSendSubmitEvent() needs to be
- implemented for WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=84304
-
- Reviewed by Jessie Berlin.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Added new files to project.
-
- * TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- Look for the "DidReceiveWillSendSubmitEvent" message. The message body
- will be the dictionary of form control names and values passed to the
- injected bundle's willSendSubmitEvent handler; look for the pairs
- "textField" -> "text field" and "passwordField" -> "password field".
- Check that "hiddenField" is not included.
- (TestWebKitAPI::setInjectedBundleClient):
- (TestWebKitAPI::TEST):
-
- * TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp: Added.
- (TestWebKitAPI::willSendSubmitEvent):
- Post a message to the TestWebKitAPI process with the dictionary of form
- control names and values that we received.
- (TestWebKitAPI::WillSendSubmitEventTest::WillSendSubmitEventTest):
- (TestWebKitAPI::WillSendSubmitEventTest::didCreatePage):
- Set up the page's form client.
-
- * TestWebKitAPI/Tests/WebKit2/auto-submitting-form.html: Added.
-
-2012-05-03 Eric Seidel <eric@webkit.org>
-
- Remove dead code from build-webkit for working around old XCode dependency bug
- https://bugs.webkit.org/show_bug.cgi?id=85535
-
- Reviewed by Adam Barth.
-
- Xcode used to have a bug whereby it didn't notice if you changed the #defines
- passed on the command line to xcodebuild. I wrote code to work around this
- while bringing up SVG support 5-6 years ago. I think we can finally remove this
- code from build-webkit, since SVG is the only feature flag to ever use it
- (modern in-progress features like MathML don't seem to be using the support)
- an I suspect the XCode bug has long been fixed.
-
- * Scripts/build-webkit:
- * Scripts/webkitperl/features.pm:
-
-2012-05-03 Andy Estes <aestes@apple.com>
-
- InjectedBundleControllerMac.mm needs to include config.h
- https://bugs.webkit.org/show_bug.cgi?id=85531
-
- Reviewed by Andreas Kling.
-
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Use PlatformInfo whenever possible in server_process.py.
- https://bugs.webkit.org/show_bug.cgi?id=85516
-
- Reviewed by Eric Seidel.
-
- Eliminate direct access to sys.platform wherever possible by using
- PlatformInfo.is_win() instead.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.__init__): Remove the executive parameter as it was
- not passed by any caller, obtain a SystemHost from port_obj
- instead.
- (ServerProcess._log): Style, remove extra empty line.
- (ServerProcess._start):
- (ServerProcess.stop):
- (ServerProcess.kill):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.__init__): Create a MockSystemHost used by
- ServerProcess.
- (TestServerProcess.test_broken_pipe): Test different platforms.
-
-2012-05-03 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- webkitpy: Style checker broken when committing a PNG
- https://bugs.webkit.org/show_bug.cgi?id=85504
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.__init__):
-
-2012-05-03 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, fix another call to join(), similar to the ones landed
- in r115975.
-
- * Scripts/webkitdirs.pm:
- (jhbuildConfigurationChanged):
-
-2012-05-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove sys.platform accesses in CrashLogs.
- https://bugs.webkit.org/show_bug.cgi?id=85436
-
- Reviewed by Dirk Pranke.
-
- Instead of directly checking for sys.platform == 'darwin', use a
- SystemHost and call PlatformInfo.is_mac().
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.__init__):
- (CrashLogs.find_newest_log):
- (CrashLogs._log_directory_darwin):
- (CrashLogs._find_newest_log_darwin):
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_log_darwin):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/tool/commands/queries.py:
- (execute):
-
-2012-05-03 Philippe Normand <pnormand@igalia.com>
-
- [GTK] join() is wrongly used in webkitdirs.pm since r115532
- https://bugs.webkit.org/show_bug.cgi?id=85501
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (getJhbuildPath):
- (buildAutotoolsProject):
-
-2012-05-03 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] ImageDiff crashes when it can't open a display
- https://bugs.webkit.org/show_bug.cgi?id=85476
-
- Reviewed by Martin Robinson.
-
- Replace gdk_init() initialization call with the g_type_init()
- call. GdkPixbufLoader doesn't actually need the current call to be
- made and this change will also remove crashes when ImageDiff
- is started in an environment without a DISPLAY env.
-
- * DumpRenderTree/gtk/ImageDiff.cpp:
- (main):
-
-2012-05-03 Zan Dobersek <zandobersek@gmail.com>
-
- ImageDiff should be run inside a properly established environment
- https://bugs.webkit.org/show_bug.cgi?id=85292
-
- Reviewed by Martin Robinson.
-
- When creating the ImageDiff server process, pass along a freshly-set-up environment
- in which the process should be executed in.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._start_image_diff_process):
-
-2012-05-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Allow the web process and WTR to be paused on startup
-
- Makes it easier to debug the web process or run-webkit-tests -2, as you
- have ample time to attach gdb to the process.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.setup_environ_for_server):
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-05-03 Csaba Osztrogonác <ossy@webkit.org>
-
- Password protect "Stop build" button
- https://bugs.webkit.org/show_bug.cgi?id=81982
-
- Reviewed by Ryosuke Niwa.
-
- Only authenticated users should be able to use stopBuild, stopAllBuilds, cancelPendingBuild
- features to prevent killing builds on build.webkit.org by SPAM bots.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2012-05-03 Dongwoo Im <dw.im@samsung.com>
-
- [DRT] Remove the name of parameter, visibility, from the setPageVisibility stub implementations.
- https://bugs.webkit.org/show_bug.cgi?id=85468
-
- Reviewed by Nikolas Zimmermann.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::setPageVisibility): Remove the name of parameter, visibility.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setPageVisibility): Remove the name of parameter, visibility.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setPageVisibility): Remove the name of parameter, visibility.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setPageVisibility): Remove the name of parameter, visibility.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setPageVisibility): Remove the name of parameter, visibility.
-
-2012-05-03 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=85450 unbounded growth of JSDOMWindowShells loading pages in the same window
- <rdar://problem/11320059> REGRESSION (r115083): PLT3 shows linear memory growth and gets slower with each run
-
- Reviewed by Brady Eidson.
-
- The API added for DOMWindowExtension, didCreateGlobalObjectForFrame, would create a global object
- for every world, even those that did not need the callback. This had the side effect of creating a
- JSDOMWindowShell that the associated world didn't necessarily know to clean up. Instead of creating
- unnecessary objects change the API to globalObjectIsAvailableForFrame and do not pass the global object
- in the API. The object can be accessed later by those worlds which require it.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI):
- (DOMWindowExtensionBasic):
- (TestWebKitAPI::DOMWindowExtensionBasic::didCreatePage):
- (TestWebKitAPI::DOMWindowExtensionBasic::globalObjectIsAvailableForFrame):
- (TestWebKitAPI::globalObjectIsAvailableForFrameCallback):
-
-2012-05-03 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Not reviewed. Fix mac build, it was missing setPageVisibility/resetPageVisibility stub implementations.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::resetPageVisibility):
- (LayoutTestController::setPageVisibility):
-
-2012-05-02 Alexander Færøy <ahf@0x90.dk>
-
- Rename deviceDPI to devicePixelRatio
- https://bugs.webkit.org/show_bug.cgi?id=85049
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Use 1.5 as device pixel ratio for the Qt MiniBrowser.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-05-03 Dongwoo Im <dw.im@samsung.com>
-
- [EFL][DRT] Implement the LayoutTestController's methods related to the Page Visibility API.
- https://bugs.webkit.org/show_bug.cgi?id=85347
-
- Reviewed by Nikolas Zimmermann.
-
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::resetPageVisibility): Not implemented.
- (LayoutTestController::setPageVisibility): Not implemented.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::resetPageVisibility): Reset the page visibility.
- (LayoutTestController::setPageVisibility): Set the page visibility.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::resetPageVisibility): Not implemented.
- (LayoutTestController::setPageVisibility): Not implemented.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::resetPageVisibility): Not implemented.
- (LayoutTestController::setPageVisibility): Not implemented.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::resetPageVisibility): Not implemented.
- (LayoutTestController::setPageVisibility): Not implemented.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::resetPageVisibility): Not implemented.
- (LayoutTestController::setPageVisibility): Not implemented.
-
-2012-05-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r115918.
- http://trac.webkit.org/changeset/115918
- https://bugs.webkit.org/show_bug.cgi?id=85452
-
- "Broke test-webkitpy on Apple Lion bots" (Requested by estes
- on #webkit).
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.__init__):
- (CrashLogs.find_newest_log):
- (CrashLogs._log_directory_darwin):
- (CrashLogs._find_newest_log_darwin):
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_log_darwin):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/tool/commands/queries.py:
- (execute):
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove sys.platform accesses in CrashLogs.
- https://bugs.webkit.org/show_bug.cgi?id=85436
-
- Reviewed by Dirk Pranke.
-
- Instead of directly checking for sys.platform == 'darwin', use a
- SystemHost and call PlatformInfo.is_mac().
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.__init__):
- (CrashLogs.find_newest_log):
- (CrashLogs._log_directory_darwin):
- (CrashLogs._find_newest_log_darwin):
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_log_darwin):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/tool/commands/queries.py:
- (execute):
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Special-case win32 calls in file_lock and executive.
- https://bugs.webkit.org/show_bug.cgi?id=85431
-
- Reviewed by Dirk Pranke.
-
- Simplify accesses to sys.platform by only checking if sys.platform
- is "win32" and removing explicit checks for the else case.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.check_running_pid):
- * Scripts/webkitpy/common/system/file_lock.py:
- (FileLock._create_lock):
- (FileLock._remove_lock):
-
-2012-05-02 Ojan Vafai <ojan@chromium.org>
-
- Remove pink from flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=85422
-
- Reviewed by Dirk Pranke.
-
- The pink indicates that the test doesn't match it's listing in test_expectations.txt.
- In practice, this just added noise and confused people.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (htmlForSingleTestRow):
- (showLegend):
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.css:
- (#legend-contents *):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (testHtmlForSingleTestRow):
-
-2012-05-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed. Fix mistake I committed when applying review comments.
-
- * jhbuild/jhbuild-wrapper: dependencies_path was getting 'Root'
- appended to its path, so jhbuild itself was being cloned and
- installed in the wrong place when using WEBKITOUTPUTDIR.
-
-2012-05-02 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make ServerProcess work on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=85333
-
- Reviewed by Ojan Vafai.
-
- This change implements a poor man's select() that will
- slow-spin doing non-blocking reads on the stdout and stderr
- named pipes connecting the worker to the driver. Seems to work
- and I have yet to see much overhead or ill effects but it
- probably needs more testing.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.__init__):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._start):
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
- (ServerProcess._wait_for_data_and_update_buffers_using_win32_apis):
- (ServerProcess):
- (ServerProcess._non_blocking_read_win32):
- (ServerProcess._read):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TestServerProcess.test_basic): Added.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Use a SystemHost instead of PlatformInfo in the PNG checker.
- https://bugs.webkit.org/show_bug.cgi?id=85426
-
- Reviewed by Dirk Pranke.
-
- r115880 replaced the direct use of sys.platform with a
- PlatformInfo object. Dirk Pranke later told me SystemHost objects
- should be preferred, as nothing out of webkitpy.common.system
- should create its own PlatformInfo instances.
-
- * Scripts/webkitpy/common/system/systemhost_mock.py:
- (MockSystemHost.__init__): Make it possible to specify a custom
- filesystem object.
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.__init__): Accept a host object instead of a
- filesystem one, which is now obtained from host.
- (PNGChecker._config_file_path): Retrieve PlatformInfo from
- SystemHost.
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_init): Adjust calls to PNGChecker to its new
- constructor signature.
- (PNGCheckerTest.test_check): Ditto.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove direct checks for sys.platform == 'darwin' in the layout test classes.
- https://bugs.webkit.org/show_bug.cgi?id=85424
-
- Reviewed by Tony Chang.
-
- We should reduce direct usage of sys.platform in webkitpy and use
- PlatformInfo instead.
-
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd._prepare_config): Call PlatformInfo.is_mac() instead of
- checking for 'darwin' directly.
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase.__init__): Ditto.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove direct sys.platform usage in run_webkit_tests_integrationtest.
- https://bugs.webkit.org/show_bug.cgi?id=85419
-
- Reviewed by Dirk Pranke.
-
- As pointed out by Dirk Pranke, a PlatformInfo is not supposed to
- be created directly, we should should a SystemHost instead.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.setUp): Create a SystemHost and obtain the PlatformInfo
- object from it instead of creating PlatformInfo directly.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove direct sys.platform usage in run_webkit_tests_integrationtest.
- https://bugs.webkit.org/show_bug.cgi?id=85419
-
- Rubber-stamped by Dirk Pranke.
-
- Follow-up patch to r115887 which fixes some capitalization problems
- pointed out in comments 2 and 4.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.setUp):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_exception_raised):
- (MainTest.test_keyboard_interrupt):
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove direct sys.platform usage in run_webkit_tests_integrationtest.
- https://bugs.webkit.org/show_bug.cgi?id=85419
-
- Reviewed by Dirk Pranke.
-
- Another part of the work towards replacing direct sys.platform
- usage with PlatformInfo.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.setUp): Move the setting of SHOULD_TEST_PROCESSES
- here. Even though it is costlier, unittest.setUpClass was
- introduced in Python 2.7.
- (MainTest.test_child_processes_2): Use self.SHOULD_TEST_PROCESSES.
- (MainTest.test_child_processes_min): Ditto.
- (MainTest.test_exception_raised): Ditto.
- (MainTest.test_keyboard_interrupt): Ditto.
- (MainTest.test_crash_log): Check for PlatformInfo.is_mac().
- (MainTest.test_web_process_crash_log): Ditto, and remove duplicate
- check at the end.
- (MainTest.test_no_http_tests): Remove check for (cygwin && Python
- 2.5.2), as we only support Python 2.6+.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove direct sys.platform usage in the PNG checker.
- https://bugs.webkit.org/show_bug.cgi?id=85407
-
- Reviewed by Tony Chang.
-
- Work towards replacing direct sys.platform usage with
- PlatformInfo.
-
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.__init__): Accept os_name and os_version as
- arguments.
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.__init__): Create a PlatformInfo object instead of
- using sys.platform when needed.
- (PNGChecker._config_file_path): Check for the current platform via
- PlatformInfo.
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_check): Update tests after the changes above.
-
-2012-05-02 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [watchlist] Update watchlist rules for EFL-related patches.
- http://bugs.webkit.org/show_bug.cgi?id=85160
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/watchlist: Monitor
- Source/WTF/wtf/efl and LayoutTests/platform/efl as well.
-
-2012-05-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Revert r115191 - "Make the web view's url property follow the active url"
-
- It uncovered/caused issues in the icon-implementation that can't be
- easily fixed, so rolling out instead.
-
- https://bugs.webkit.org/show_bug.cgi?id=77554
-
- Rubber-stamped by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::TEST):
-
-2012-05-02 Zan Dobersek <zandobersek@gmail.com>
-
- Reftest mismatches are providing undefined diff percent in results.html
- https://bugs.webkit.org/show_bug.cgi?id=85283
-
- Reviewed by Ojan Vafai.
-
- When writing test results for a reftest mismatch, also take into account the
- difference percent that is produced when generating image diff. This value is
- then used when creating test results in the form of dictionaries, stored under
- the 'image_diff_percent' key. It ultimately ends up in JSON results data,
- providing additional information about the reftest difference.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (interpret_test_failures): Store the diff percent for reftest failure under the
- 'image_diff_percent' key.
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result): Also set the new diff_percent attribute of the reftest
- mismatch failure to the value of the difference percent ImageDiff outputs.
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (FailureReftestMismatch.__init__): Add the new diff_percent attribute with the
- default value of None.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (EndToEndTest.test_reftest_with_two_notrefs): Update the test case expected results.
-
-2012-05-02 Terry Anderson <tdanderson@chromium.org>
-
- Addition of a contributor to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=85324
-
- Reviewed by Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-02 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] EFL's LayoutTestController overridePreference implementation
- https://bugs.webkit.org/show_bug.cgi?id=83007
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (toBool): aux function converting JSStringRef to bool
- (toInt): aux function converting JSStringRef to int
- (LayoutTestController::overridePreference): added implementation
-
-2012-05-01 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Fix sys.platform check in find_files_unittest.
- https://bugs.webkit.org/show_bug.cgi?id=85339
-
- Reviewed by Ryosuke Niwa.
-
- Follow-up to r101618 -- 'win' is not a valid sys.platform value,
- 'win32' should be used instead. The check always returned false
- due to this, so assert_normalize() was never called.
-
- * Scripts/webkitpy/common/find_files_unittest.py:
- (TestWinNormalize.test_win): Add the missing import for the
- FileSystem class and fix the sys.platform check.
-
-2012-05-02 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] drag&drop related failures
- https://bugs.webkit.org/show_bug.cgi?id=84675
-
- Reviewed by Philippe Normand.
-
- Rather than checking options to see whether we're running pixel tests
- the pixel_tests argument passed to GtkDriver._start should be used as
- it also covers cases when pixel tests should be run because of testing
- reftests. This again creates different Xvfb processes with proper
- display IDs for a worker that's performing both ordinary and pixel
- tests, as was the case before changes made in r114788.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
-
-2012-05-02 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Enable device orientation/motion with Qt 5
-
- Reviewed by Tor Arne Vestbø.
-
- Enable device orientation/motion features with Qt 5 if Qt Sensors is available.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-05-01 Raphael Kubo da Costa <rakuco@webkit.org>
-
- webkitpy: Remove unused platform imports.
- https://bugs.webkit.org/show_bug.cgi?id=85341
-
- Reviewed by Eric Seidel.
-
- Remove a few uses of `import platform' which were either rendered
- unneeded after r105931 or were never needed at all.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
-
-2012-05-01 Terry Anderson <tdanderson@chromium.org>
-
- [chromium] Accept four parameters when dispatching a WebInputEvent::GestureTap in chromium DRT eventSender
- https://bugs.webkit.org/show_bug.cgi?id=85289
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::gestureEvent):
- This change will allow for testing of WK85101. Currently
- no tests use the extra parameters deltaX and deltaY. Added
- a check for the size of |arguments|.
-
-2012-05-01 Eric Seidel <eric@webkit.org>
-
- Add myself to the watchlist to watch all rendering changes, as well as sort the watchers in the list
- https://bugs.webkit.org/show_bug.cgi?id=85305
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-05-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r115735.
- http://trac.webkit.org/changeset/115735
- https://bugs.webkit.org/show_bug.cgi?id=85314
-
- cause two tests to crash due to an ASSERTION failure
- (Requested by zhenyao on #webkit).
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::gestureEvent):
-
-2012-05-01 Terry Anderson <tdanderson@chromium.org>
-
- [chromium] Accept four parameters when dispatching a WebInputEvent::GestureTap in chromium DRT eventSender
- https://bugs.webkit.org/show_bug.cgi?id=85289
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::gestureEvent):
- This change will allow for testing of WK85101. Currently no tests use the extra
- parameters deltaX and deltaY.
-
-2012-05-01 Zan Dobersek <zandobersek@gmail.com>
-
- Print out stderr output of ImageDiff if it is present
- https://bugs.webkit.org/show_bug.cgi?id=85285
-
- Reviewed by Philippe Normand.
-
- Log the stderr output of ImageDiff as a warning if present. This is
- especially helpful when ImageDiff crashes and stderr data might contain
- relevant information about what caused the crash.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
-
-2012-05-01 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Add an experimental extension to set the min. contents width
- https://bugs.webkit.org/show_bug.cgi?id=85281
-
- Reviewed by Antonio Gomes.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
- Set the value of preferredMinimumContentsWidth to 980.
-
-2012-04-30 Ojan Vafai <ojan@chromium.org>
-
- Fix tests to not depend on the actual list of builders at build.chromium.org.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (testHtmlForIndividualTestOnAllBuildersWithChrome):
- (testHtmlForIndividualTestOnAllBuildersWithChromeWebkitMaster):
-
-2012-04-29 Sam Weinig <sam@webkit.org>
-
- Remove BlobBuilder
- https://bugs.webkit.org/show_bug.cgi?id=84036
-
- Reviewed by Anders Carlsson.
-
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
- Make exposing the WebKitBlobBuilder JS object conditional on a new
- ENABLE_LEGACY_WEBKIT_BLOB_BUILDER flag. Don't enable this for the Mac,
- but do for everyone else.
-
-2012-04-30 Amruth Raj Padmanabhuni <amruthraj@motorola.com>
-
- [GTK] Add glib as a dependency to build glib-networking
- https://bugs.webkit.org/show_bug.cgi?id=85181
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules:
-
-2012-04-30 Alexis Menard <alexis.menard@openbossa.org>
-
- Move myself to reviewers.
-
- Reviewed by Andreas Kling.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-30 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Unreviewed, move myself to reviewers
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-30 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck.
-
- * TestWebKitAPI/GNUmakefile.am: Add missing headers to compilation
- and resources to EXTRA_DIST.
-
-2012-04-30 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] DRT support for layoutTestController.removeOriginAccessWhitelistEntry
- https://bugs.webkit.org/show_bug.cgi?id=85156
-
- Reviewed by Martin Robinson.
-
- Add missing implementation removeOriginAccessWhitelistEntry to
- GTK's LayoutTestController.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::removeOriginAccessWhitelistEntry):
-
-2012-04-29 Maciej Stachowiak <mjs@apple.com>
-
- REGRESSION: On Lion, run-webkit-tests changes the display color profile even when not running pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=81729
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._set_up_run): Only launch LayoutTestHelper when running pixel tests.
-
-2012-04-29 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] DRT needs an implementation of layoutTestController.setDomainRelaxationForbiddenForURLScheme
- https://bugs.webkit.org/show_bug.cgi?id=85131
-
- Reviewed by Martin Robinson.
-
- Add missing implementation setDomainRelaxationForbiddenForURLScheme to
- GTK's LayoutTestController.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
-
-2012-04-28 Sam Weinig <sam@webkit.org>
-
- Smooth scrolling needs a new key
- <rdar://problem/11331632>
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
- Update for new key.
-
-2012-04-28 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2] http/tests/navigation/anchor-frames-gbk.html fails
- https://bugs.webkit.org/show_bug.cgi?id=76896
-
- Reviewed by Darin Adler.
-
- Only dump as text if currently dumping render tree. This ensures that
- calling dumpAsText in a test with dumpChildFramesAsText already being
- called doesn't override the first decision, possibly making tests fail.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::dumpAsText):
-
-2012-04-28 Dan Winship <danw@gnome.org>
-
- Unreviewed; Add me to the SoupNetwork watchlist
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-04-27 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] jhbuild cloning is not following WEBKITOUTPUTDIR.
- https://bugs.webkit.org/show_bug.cgi?id=76161
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (getJhbuildPath): New method to obtain the jhbuild base directory,
- using the product base directory
- (jhbuildConfigurationChanged): Use the new method
- (buildAutotoolsProject): Ditto.
- * efl/jhbuildrc: Use WEBKITOUTPUTDIR when calculating the path.
- * gtk/jhbuildrc: Ditto.
- * jhbuild/jhbuild-wrapper: Ditto.
-
-2012-04-27 Scott Graham <scottmg@chromium.org>
-
- [chromium] make case of npTestNetscapePlugIn.dll match case in copy rule
- https://bugs.webkit.org/show_bug.cgi?id=85083
-
- Reviewed by Dirk Pranke.
-
- Make output product_name for npTestNetscapePlugIn.dll match the case
- of the copy_TestNetscapePlugIn rule. This is required for ninja, which
- is more particular about case matching in rules than the VS build.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-04-27 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] use "drt-style" output, not "test-shell-style" output, on mac and linux DRT
- https://bugs.webkit.org/show_bug.cgi?id=84917
-
- Unreviewed, build fix.
-
- Reland the change in r115453 with a fix for chromium win.
- The logic in ChromiumDriver was busted on windows, causing DRT
- to get launched without the --test-shell flag.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver):
- (ChromiumDriver.__init__):
- (ChromiumDriver._wrapper_options):
- (ChromiumDriver.cmd_line):
- (ChromiumDriver._start):
- (ChromiumDriver.has_crashed):
- (ChromiumDriver.run_test):
- (ChromiumDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.setUp):
- (ChromiumDriverTest.test_stop):
- (ChromiumDriverTest.test_two_drivers.MockDriver.__init__):
- (ChromiumDriverTest.test_two_drivers):
-
-2012-04-27 Peter Beverloo <peter@chromium.org>
-
- Add John Grabowski as a non-committer to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=85080
-
- Reviewed by Dirk Pranke.
-
- He's being CC'ed often enough because of his involvement in the Chromium
- side of Chrome for Android upstreaming.
-
- * Scripts/webkitpy/common/config/committers.py:
- add jrg@chromium.org
-
-2012-04-27 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Fix minimal build.
- https://bugs.webkit.org/show_bug.cgi?id=85045
-
- Reviewed by Tor Arne Vestbø.
-
- Do not set conflicting values of ENABLE_XSLT.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-04-27 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL][DRT] EFL should sanitize pulseaudio module configuration too
- https://bugs.webkit.org/show_bug.cgi?id=85047
-
- Reviewed by Dirk Pranke.
-
- PulseAudio test setup sanitization shared between EFL and GTK.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort):
- (EflPort.setup_test_run):
- (EflPort.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort): Moving pulseaudio unload/restore out to shared class.
- * Scripts/webkitpy/layout_tests/port/pulseaudio_sanitizer.py: Added.
- (PulseAudioSanitizer):
- (PulseAudioSanitizer._unload_pulseaudio_module):
- (PulseAudioSanitizer._restore_pulseaudio_module):
-
-2012-04-27 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, revert r115453 - broke chromium win bots
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._path_to_image_diff):
- (ChromiumDriver):
- (ChromiumDriver.__init__):
- (ChromiumDriver._wrapper_options):
- (ChromiumDriver.cmd_line):
- (ChromiumDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.setUp):
- (ChromiumDriverTest.test_stop):
- (ChromiumDriverTest.test_two_drivers):
- (ChromiumDriverTest.test_two_drivers.MockDriver.__init__):
-
-2012-04-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Chromium Windows Perf bots timeout due to not output
- https://bugs.webkit.org/show_bug.cgi?id=84940
-
- Reviewed by Dirk Pranke.
-
- Dirk and I investigated the issue on the bot but we couldn't figure out what is going wrong.
- Since we run-perf-tests don't need any of fancy feature printer provides, just use python's
- built-in logging module instead. Printing out to stdout and stderr seem to work so hopefully
- this will fix the issue on the bot.
-
- * Scripts/run-perf-tests:
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.run):
- (PerfTest.run_failed):
- (PerfTest.parse_output):
- (PerfTest.output_statistics):
- (ChromiumStylePerfTest.parse_output):
- (PageLoadingPerfTest.run):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest):
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner.run):
- (PerfTestsRunner._upload_json):
- (PerfTestsRunner._print_status):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (test_run_test_set):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_pause_before_testing):
- (test_run_test_set_for_parser_tests):
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_run_test_set_with_multiple_repositories):
- (test_upload_json):
- (test_parse_args):
-
-2012-04-27 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] use "drt-style" output, not "test-shell-style" output, on mac and linux DRT
- https://bugs.webkit.org/show_bug.cgi?id=84917
-
- Reviewed by Ojan Vafai.
-
- This change changes the chromium new-run-webkit-tests
- implementation to use the code in WebKitDriver and ServerProcess
- by default on Mac and Linux, instead of using the old-style
- Chromium/test_shell style of output.
-
- We will still use the test_shell style on Windows for now
- and you can still get the old style of behavior with
- new-run-webkit-tests --additional-drt-flag --test-shell
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver):
- (ChromiumDriver.__init__):
- (ChromiumDriver._wrapper_options):
- (ChromiumDriver.cmd_line):
- (ChromiumDriver._start):
- (ChromiumDriver.has_crashed):
- (ChromiumDriver.run_test):
- (ChromiumDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.setUp):
- (ChromiumDriverTest.test_stop):
- (ChromiumDriverTest.test_two_drivers.MockDriver.__init__):
- (ChromiumDriverTest.test_two_drivers):
-
-2012-04-27 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix race in unit tests for manager_worker_broker
- https://bugs.webkit.org/show_bug.cgi?id=84925
-
- Reviewed by Ojan Vafai.
-
- I have been intermittently seeing hangs when running
- test-webkitpy on Mac SL; it appears that there's a bug (?) in
- the multiprocessing module where queue references are getting
- leaked or not cleaned up somehow. By explicitly closing the
- queues, things seem to be happy, so this patch adds a cleanup()
- method to the message broker and modifies the manager (and the
- unit tests) to call it. This may get rid of the intermittent
- error on shutdown on Linux I've seen as well.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_Broker.__del__):
- (_Broker):
- (_Broker.cleanup):
- (_BrokerConnection.cleanup):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestsMixin.test_name):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- (_TestsMixin.test_unknown_message):
-
-2012-04-27 Gavin Peters <gavinp@chromium.org>
-
- Add new ENABLE_LINK_PRERENDER define to control the Prerendering API
- https://bugs.webkit.org/show_bug.cgi?id=84871
-
- Reviewed by Adam Barth.
-
- Prerendering is currently covered by the ENABLE_LINK_PREFETCH macro, but the new Prerendering
- API separates it from prefetching. Having separate include guards lets ports enable prefetching,
- a relatively easy change, without needing to build the infrastructure for prerendering, which
- is considerably more complicated.
-
-2012-04-27 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skip flaky WebKit2 API test.
-
-2012-04-27 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Fix another typo. So easy to get confused by a Test
- name and the actual name of the executable...
-
-2012-04-27 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skip failing WebKit2 API test.
-
-2012-04-27 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should support LayoutTestController's dumpResourceLoadCallbacks()
- https://bugs.webkit.org/show_bug.cgi?id=81891
-
- Reviewed by Philippe Normand.
-
- Implement support for LayoutTestController's
- dumpResourceLoadCallbacks() in EFL's DumpRenderTree by catching new
- ewk_view signals about resource loading and print out the expected
- information. This allows for several test cases to be removed from the
- skip list.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (descriptionSuitableForTestResult):
- (DumpRenderTreeChrome::onResponseReceived):
- (DumpRenderTreeChrome::onResourceLoadFinished):
- (DumpRenderTreeChrome::onResourceLoadFailed):
- (DumpRenderTreeChrome::onNewResourceRequest):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-27 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK typo fix.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Fix-up skipped WebKit2 API test name TestWKConnection.
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [SOUP] Add a way to register custom uri schemes in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=84130
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_identifier_name_in_declaration): Add webkit_soup prefix to
- the list of exceptions to the underscores in identifiers rule.
-
-2012-04-26 Ryosuke Niwa <rniwa@webkit.org>
-
- Extract PerfTestFactory
- https://bugs.webkit.org/show_bug.cgi?id=83944
-
- Reviewed by Dirk Pranke.
-
- Extracted PerfTestFactory out of PerfTest. This class creates appropriate PerfTest object given
- a test name and a path. Also removed dirname from the constructors of PerfTest and its subclasses.
-
- Also added simple test cases to sanity check PerfTestFactory.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.__init__):
- (PerfTest.test_name):
- (ChromiumStylePerfTest.__init__):
- (PageLoadingPerfTest.__init__):
- (PageLoadingPerfTest.run):
- (PerfTestFactory):
- (PerfTestFactory.create_perf_test):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- (TestPerfTestFactory):
- (TestPerfTestFactory.test_regular_test):
- (TestPerfTestFactory.test_inspector_test):
- (TestPerfTestFactory.test_page_loading_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._collect_tests):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (run_test):
- (_tests_for_runner):
-
-2012-04-26 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up server process, webkit driver so chromium can use it
- https://bugs.webkit.org/show_bug.cgi?id=84910
-
- Reviewed by Ojan Vafai.
-
- This change moves the "sample a process" logic out of
- server_process.py and into a port-specific class (where really
- only the mac has an implementation), and also preemptively kills
- DRT when a test times out in WebKitDriver (rather than waiting through the
- additional delays caused by calling stop() when we would want to
- restart the driver generically in worker.py).
-
- These changes will make it possible for the chromium port to
- switch over to the stock WebKitDriver implementation, at least
- on mac and linux.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.sample_process):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.sample_process):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_helper_fails_to_stop):
- (test_sample_process):
- (test_sample_process.logging_run_command):
- (test_sample_process_throws_exception):
- (test_sample_process_throws_exception.throwing_run_command):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._log):
- (ServerProcess._handle_timeout):
- (ServerProcess.stop):
- (ServerProcess):
- (ServerProcess.kill): Here we add a method to immediately stop
- the process rather than trying to shut it down cleanly.
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.run_test): Fix an issue where we weren't passing
- along any per-test args (only needed for Chromium, but still).
- Also, kill the driver immediately if we time out a test.
-
-2012-04-26 Benjamin Poulain <bpoulain@apple.com>
-
- ObjcClass::methodsNamed() can leak if buffer is dynamically allocated
- https://bugs.webkit.org/show_bug.cgi?id=84668
-
- Reviewed by Alexey Proskuryakov.
-
- Extend ObjCPlugin to support the new layout tests of the Objective-C bridge.
-
- * DumpRenderTree/mac/ObjCPlugin.m:
- (+[ObjCPlugin isSelectorExcludedFromWebScript:]):
- (+[ObjCPlugin webScriptNameForSelector:]):
- (-[ObjCPlugin methodMappedToLongName]):
- (-[ObjCPlugin testConversionColon:]):
- (-[ObjCPlugin _:]):
-
-2012-04-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r115340.
- http://trac.webkit.org/changeset/115340
- https://bugs.webkit.org/show_bug.cgi?id=83048
-
- Does not work with Windows.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (copy_file):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._parse_reftest_list):
- (Port.reference_files):
- (Port._real_tests):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_reference_files):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_write_command_and_read_line):
-
-2012-04-26 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable VIDEO_TRACK feature
- https://bugs.webkit.org/show_bug.cgi?id=84830
-
- Reviewed by Gustavo Noronha Silva.
-
- Enable VIDEO_TRACK by default on EFL port whenever build-webkit is
- used.
-
- * Scripts/build-webkit:
-
-2012-04-08 Robert Hogan <robert@webkit.org>
-
- new-webkit-run-tests: handle ref tests from the CSS test suite
- https://bugs.webkit.org/show_bug.cgi?id=83048
-
- Reviewed by Ryosuke Niwa.
-
- This allows new-run-webkit-tests to run reference tests created for the CSS test suite. It removes a big swathe
- of pixel and text results that are no longer required now that the reference results are used and adds in the support
- files from the CSS test suite that allow the ref tests to run.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_reftest): Assert that the reference result exists. Previously the test would
- run without it and report a pass!
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (copy_file): ensure the output directory exists, it may not if the reference test is
- contained in a folder that contains nothing but reference tests.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.available_reference_files): Add as a helper. Handle embedded relative paths, e.g: some/../path
- (Port.reference_files): Only return reference results in the reftest list that actually exist on
- disk. Also, don't ignore potential reference results on disk that are not in the reftest list, and
- don't ignore them just because we have a reftest list for the test's directory.
- (Port._real_tests): ignore anything that looks like a test in a 'support' directory, this semantic
- is used by the CSS 2.1 test suite.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_reference_files_when_reftestlist_and_reference_file_present): Ensure that a test with a reference result
- on disk but no reference result listed in the directory's reftest list picks up its reference result.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_strip_uri): Test that some/test.html and some/other/../test.html are treated
- as the same file.
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix GTK+ build after r115314.
-
- For some reason it fails while bulding GtkVersioning for WTR, but
- it didn't fail neither in EWS nor in my laptop. We don't really
- need GtkVersioning in WTR since it already depends on GTK+3
- unconditionally.
-
- * WebKitTestRunner/GNUmakefile.am: Remove GtkVersioning.c from
- compilation.
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
- (WTR::EventSenderProxy::createMouseButtonEvent): Use GTK+ 3 API
- directly instead of getDefaultGDKPointerDevice() helper.
- (WTR::EventSenderProxy::keyDown): Ditto.
- (WTR::EventSenderProxy::mouseMoveTo): Ditto.
-
-2012-04-24 Ojan Vafai <ojan@chromium.org>
-
- Show flakiness dashboard data in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=83716
-
- Reviewed by Dimitri Glazkov.
-
- Put an iframe below the expected/actual results in the Results view.
- Size the iframe to it's height.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-04-26 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] LayoutTestController needs implementation of setJavaScriptProfilingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=84576
-
- Reviewed by Martin Robinson.
-
- Add missing implementation setJavaScriptProfilingEnabled to EFL's
- LayoutTestController in order to unskip tests rely on this setting.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
-
-2012-04-26 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Add Jing Zhao, Min Qin, Tien-Ren Chen and Hao Zheng into contributors list.
-
- Not reviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Test TestWebKitAPI/WebKit2/TestNewFirstVisuallyNonEmptyLayout times out
- https://bugs.webkit.org/show_bug.cgi?id=84957
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip TestNewFirstVisuallyNonEmptyLayout and
- TestNewFirstVisuallyNonEmptyLayoutForImages.
- * TestWebKitAPI/gtk/PlatformWebViewGtk.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView): Show the
- toplevel window containing the web view to make sure events are
- received.
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Add bug numbers to skipped tests.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Build and run TestWebKitAPI WebKit2 unit tests
- https://bugs.webkit.org/show_bug.cgi?id=84446
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Add TestWebKitAPI/WebKit2 to the list of directories
- containing tests. Unskip FunctionalTest.RefCountedStorage, since
- we are now using a custom main that initializes WTF threading.
- (TestRunner._setup_testing_environment): Set environment variables
- required to run WebKit2 tests.
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/JavaScriptTest.cpp: Use
- JavaScriptCore/JSContextRef.h instead of
- JavaScriptCore/JavaScriptCore.h since it includes JSStringRefCF.h
- unconditionally.
- * TestWebKitAPI/PlatformWebView.h: Define PlatformWKView and
- PlatformWindow for GTK.
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp: Remove
- unneded header that breaks the build of GTK port.
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp: Use
- JavaScriptCore/JSContextRef.h instead of
- JavaScriptCore/JavaScriptCore.h since it includes JSStringRefCF.h
- unconditionally.
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST): Add expected values for GTK+ port.
- * TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp: Added.
- (TestWebKitAPI::Util::checkTestFinished):
- (TestWebKitAPI::Util::run):
- (TestWebKitAPI::Util::sleep):
- (TestWebKitAPI::Util::getFilenameFromEnvironmentVariableAsUTF8):
- (TestWebKitAPI::Util::createInjectedBundlePath):
- (TestWebKitAPI::Util::createURLForResource):
- (TestWebKitAPI::Util::URLForNonExistentResource):
- (TestWebKitAPI::Util::isKeyDown):
- * TestWebKitAPI/gtk/PlatformWebViewGtk.cpp: Added.
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::page):
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI::doKeyStroke):
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
- (TestWebKitAPI::PlatformWebView::simulateAltKeyPress):
- (TestWebKitAPI::doMouseButtonEvent):
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- (TestWebKitAPI::PlatformWebView::simulateMouseMove):
- * TestWebKitAPI/gtk/main.cpp:
- (main):
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] run-gtk-tests: Use a timeout per test instead of a global timeout
- https://bugs.webkit.org/show_bug.cgi?id=84695
-
- Reviewed by Philippe Normand.
-
- It also adds a command line option to be able to pass a custom
- timeout value, instead of hard-coding it. The default timeout is 10
- seconds if no other value is passed to the script.
-
- * Scripts/run-gtk-tests:
- (TestTimeout): Exception raised when a test times out.
- (TestRunner._get_child_pid_from_test_output): Helper function to
- get the pid of the running test from gtester output.
- (TestRunner._kill_process): Helper funtion ot kill a process
- ignoring exceptions if the process is already died.
- (TestRunner._run_test_command): Run the test command raising
- TestTimeout exception if the test doesn't finish before the given
- timeout in seconds.
- (TestRunner._run_test_command.alarm_handler): Alarm handler that
- raises TestTimeout exception.
- (TestRunner._run_test_glib): Use _run_test_command() to run the test.
- (TestRunner._run_test_google): Ditto.
- (TestRunner.run_tests): Add current test to the list of timed out
- test if TestTimeout exception is raised. Show the list of timed
- out test at the end.
-
-2012-04-26 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] LayoutTestController needs implementation of addOriginAccessWhitelistEntry and removeOriginAccessWhitelistEntry
- https://bugs.webkit.org/show_bug.cgi?id=83880
-
- Reviewed by Antonio Gomes.
-
- Add missing implementation addOriginAccessWhitelistEntry and
- removeOriginAccessWhitelistEntry to EFL's LayoutTestController
- in order to unskip tests which rely on this.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- (LayoutTestController::removeOriginAccessWhitelistEntry):
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add downloads support to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=73662
-
- Reviewed by Philippe Normand.
-
- * MiniBrowser/gtk/BrowserDownloadsBar.c: Added.
- (browserDownloadsBarChildRemoved): Close the downloads bar if
- there aren't active downloads.
- (browserDownloadsBarResponse): Destroy the downloads bar when
- closed.
- (browser_downloads_bar_init):
- (browser_downloads_bar_class_init):
- (browser_downloads_bar_new): Create a new downloads bar.
- (actionButtonClicked): Cancel the download if cancel button was
- clicked, or open the downloaded file if the download finished.
- (browserDownloadFinalize):
- (browser_download_init):
- (browser_download_class_init):
- (downloadReceivedResponse): Update download message using the
- response URI.
- (remainingTime): Helper function to get human readable remaining
- time.
- (downloadProgress): Update downloads progress.
- (downloadReceivedData):
- (downloadFinished): Update download message and turn download
- button into open.
- (downloadFailed): Show error message or destroy the download UI if
- it was cancelled.
- (browserDownloadNew): Create a new download widget for the given
- WebKitDownload.
- (browser_downloads_bar_add_download): Add download widget to the
- downloads bar.
- * MiniBrowser/gtk/BrowserDownloadsBar.h: Added.
- * MiniBrowser/gtk/BrowserWindow.c:
- (downloadStarted): Create a download widget and add it to the
- downloads bar when a new download is started.
- (browserWindowConstructed): Connect to
- WebKitWebContext::download-started signal.
- * MiniBrowser/gtk/GNUmakefile.am: Add new files to compilation.
-
-2012-04-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip unit test failing in debug bot.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-04-26 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] "resource,request,willsend" signal needs to provide more information
- https://bugs.webkit.org/show_bug.cgi?id=84670
-
- Reviewed by Andreas Kling.
-
- Handle in EFL's DumpRenderTree the new Ewk_Frame_Resource_Messages now
- passed with the "resource,request,willsend" signal and dump
- information about the network request and the possible network
- response if LayoutTestController's dumpResourceLoadCallbacks() returns
- true.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (pathSuitableForTestResult):
- (urlSuitableForTestResult):
- (descriptionSuitableForTestResult):
- (DumpRenderTreeChrome::onWillSendRequest):
-
-2012-04-25 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Unreviewed, rolling out r113703 because of crashing tests.
- http://trac.webkit.org/changeset/113703
- https://bugs.webkit.org/show_bug.cgi?id=83024
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * Tools.pro:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-04-25 Maciej Stachowiak <mjs@apple.com>
-
- Teach LayoutTestHelper to correctly restore the color profile when it's a factory profile
- https://bugs.webkit.org/show_bug.cgi?id=84931
-
- Reviewed by Filip Pizlo.
-
- * DumpRenderTree/mac/LayoutTestHelper.m:
- (installLayoutTestColorProfile): Account for the possibility of the default
- profile being a factory profile.
-
-2012-04-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r115240.
- http://trac.webkit.org/changeset/115240
- https://bugs.webkit.org/show_bug.cgi?id=84928
-
- It broke everything (Requested by Ossy_HOME on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver):
- (GtkDriver._start):
- (GtkDriver._start.x_filter):
- (GtkDriver.stop):
- (GtkPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._build_driver):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py: Removed.
-
-2012-04-25 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] change DRT's "DRT" output to match the other ports
- https://bugs.webkit.org/show_bug.cgi?id=84904
-
- Reviewed by Kent Tamura.
-
- Since we run Chromium's DRT in --test-shell mode, the
- non-test-shell output has never been really beaten on to make
- sure it's right. This fixes a few issues and will be tested
- with upcoming NRWT changes that'll land in a separate patch.
- In particular we should never output framing text like "\n"
- or "#EOF" outside of something outside of TestEventPrinter,
- and we weren't handling audio output properly at all.
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter):
- (TestShellPrinter):
- (DRTPrinter::handleTextFooter):
- (DRTPrinter::handleAudioFooter):
- (DRTPrinter::handleTestFooter):
- (TestShellPrinter::handleAudioFooter):
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::dump):
-
-2012-04-25 Joshua Bell <jsbell@chromium.org>
-
- Unreviewed: Adding Alec Flett as a contributor (non-committer).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-25 Abhishek Arya <inferno@chromium.org>
-
- Mark myself as a reviewer.
- https://bugs.webkit.org/show_bug.cgi?id=84902
-
- Reviewed by Dimitri Glazkov.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-25 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt][NRWT] Run each DRT in it's own xvfb
- https://bugs.webkit.org/show_bug.cgi?id=77335
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py: Added.
- (XvfbDriver):
- (XvfbDriver._start):
- (XvfbDriver._start.x_filter):
- (XvfbDriver.stop):
-
-2012-04-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r115222.
- http://trac.webkit.org/changeset/115222
- https://bugs.webkit.org/show_bug.cgi?id=84874
-
- Caused test regressions on the EFL build (Requested by rakuco
- on #webkit).
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- (LayoutTestController::removeOriginAccessWhitelistEntry):
-
-2012-04-25 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] LayoutTestController needs implementation of addOriginAccessWhitelistEntry and removeOriginAccessWhitelistEntry
- https://bugs.webkit.org/show_bug.cgi?id=83880
-
- Reviewed by Antonio Gomes.
-
- Add missing implementation addOriginAccessWhitelistEntry and
- removeOriginAccessWhitelistEntry to EFL's LayoutTestController
- in order to unskip tests which rely on this.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addOriginAccessWhitelistEntry):
- (LayoutTestController::removeOriginAccessWhitelistEntry):
-
-2012-04-25 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] [DRT] Reset text zoom factor before running a test
- https://bugs.webkit.org/show_bug.cgi?id=84861
-
- Reviewed by Antonio Gomes.
-
- This fix eliminates most of the current flakiness on EFL build
- bots, although some CSS tests will now need rebasiling.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-04-25 Milian Wolff <milian.wolff@kdab.com>
-
- [Qt] add LayoutTestController::setPrinting support to Qt unit tests
- https://bugs.webkit.org/show_bug.cgi?id=84246
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2012-04-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make the web view's url property follow the active url
-
- https://bugs.webkit.org/show_bug.cgi?id=77554
-
- Update the location bar in the minibrowser to behave
- a bit more like normal browsers in terms of when the url will change
- and how active focus is handled.
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-04-25 Philippe Normand <pnormand@igalia.com>
-
- Webkit build fails due to missing gstreamer include file on Kubuntu 8.04
- https://bugs.webkit.org/show_bug.cgi?id=81913
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf: Check for gstreamer-0.10
- and gstreamer-plugins-base >= 0.10.30 just like the GTK port
- does. 0.10.27 is unfortunately not recent enough to get the media
- player working reliably.
-
-
-2012-04-25 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Run tests in '/http/tests/local' with local URI
- https://bugs.webkit.org/show_bug.cgi?id=84820
-
- Reviewed by Nikolas Zimmermann.
-
- Currently we run all tests under folder "/http/tests/" as HTTP
- tests (http://...). However in WebKit ORWT and NRWT scripts, tests in
- 'http/tests/local' are run with local path (like '/developer/LayoutTests
- /http/tests/local/absolute-url-strip-whitespace.html').
- With this patch we can keep the same behaviour as other portings.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::isHTTPTest):
-
-2012-04-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] Reset DRT settings to their default values after a testcase was executed.
- https://bugs.webkit.org/show_bug.cgi?id=84709
-
- Reviewed by Eric Seidel.
-
- Not all the settings that can be changed by layout testcases through a JS API were
- reset in DumpRenderTreeChrome::resetDefaultsToConsistentValues().
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (defaultEditingBehavior): returns editing behavior depending on current platform.
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): reset some missed DRT settings
-
-2012-04-24 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: add ASAN handling to chromium crash logs
- https://bugs.webkit.org/show_bug.cgi?id=84664
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._get_crash_log):
-
-2012-04-24 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-test is retrieving stale expectations
- https://bugs.webkit.org/show_bug.cgi?id=84762
-
- Reviewed by Ojan Vafai.
-
- webkit-patch rebaseline-expectations is fetching files directly
- from the layout-test-results directory on the buildbots, rather
- than fetching them from the archive. This is problematic because
- we don't clobber the directory after each run and so you can end
- up fetching stale failing results.
-
- This change temporarily changes the code to fetch the zip file
- instead -- making things much slower -- until I can confer w/
- abarth and ojan over the best way to fix this for the long-term.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest.__init__):
- (RebaselineTest._zip_file_set):
- (RebaselineTest):
- (RebaselineTest._fetch_baseline):
- (RebaselineTest._rebaseline_test):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.stub_rebaseline_test_command_and_tool):
- (TestRebaseline.stub_rebaseline_test_command_and_tool.FakeZipFileSet):
- (TestRebaseline.stub_rebaseline_test_command_and_tool.FakeZipFileSet.read):
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_test):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
-
-2012-04-24 Ojan Vafai <ojan@chromium.org>
-
- Improve code for embedding flakiness dashboard as an iframe
- https://bugs.webkit.org/show_bug.cgi?id=84782
-
- Reviewed by Dirk Pranke.
-
- -Include the horizontal scrollbar height in the measured height of the page.
- -Post a message everytime the height changes instead of in response to a queryContentHeight message.
- This way, the embedder doesn't need to poll.
-
- No new tests. This is hard to test because it involves postMessage and iframes.
- Once we switch the dashboard tests over to qunit, we should be able to write an
- asyncTest for this.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- (appendHTML):
- (appendExpectations):
- (postHeightChangedMessage):
- (generatePageForIndividualTests.if):
- (generatePageForIndividualTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_embedded.html: Added.
-
-2012-04-16 Ojan Vafai <ojan@chromium.org>
-
- Replace garden-o-matic accordion UI with a panel UI
- https://bugs.webkit.org/show_bug.cgi?id=84081
-
- Reviewed by Dimitri Glazkov.
-
- This is a nicer UI to work with and makes it easier to embed the flakiness dashboard,
- since we can reuse the same iframe without moving it in the DOM.
-
- Also, excise unnecessary jquery-isms.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-04-24 Peter Beverloo <peter@chromium.org>
-
- [Chromium] DumpRenderTree should depend on base.gyp:test_support_base
- https://bugs.webkit.org/show_bug.cgi?id=84729
-
- Reviewed by Dirk Pranke.
-
- This dependency is necessary for Android since it'll soon be
- calling InitAndroidOSPathStub() in it's platform support. The
- TestWebKitAPI and webkit_unit_tests already have this dependency.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-04-24 Ojan Vafai <ojan@chromium.org>
-
- Replace vague informative statement with the list of builders where the test isn't listed
- https://bugs.webkit.org/show_bug.cgi?id=84779
-
- Reviewed by Dirk Pranke.
-
- This is more informative and more likely to be noticed. With the old UI, people never
- read the line and if they did, they didn't really understand what it meant. Hopefully
- have the list of builders will be more clear.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.css:
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-04-24 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Create a new flag for PeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=84723
-
- Reviewed by Dimitri Glazkov.
-
- To allow Chrome to make the GetUserMedia functionality available by default we
- need another flag for the PeerConnection related parts. This new flag is in
- addition to the general media stream flag, and both need to be enabled for
- PeerConnection object creation.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-04-24 Joe Mason <jmason@rim.com>
-
- [BlackBerry] Revert broken changes to authentication dialog
- https://bugs.webkit.org/show_bug.cgi?id=80135
-
- Reviewed by Antonio Gomes.
-
- The previous patches from this bug caused an infinite loop when using digest auth;
- apparently they were only tested with basic.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (WebCore):
-
-2012-04-24 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultsServer] Add a unit test for changes in r114868
- https://bugs.webkit.org/show_bug.cgi?id=84713
-
- Reviewed by Ojan Vafai.
-
- Add a new unit test to test the isToTWebKit attribute of a BuilderGroup object
- that is created for either DEPS or ToT builder groups. The unit test covers changes
- made in r114868.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (testBuilderGroupIsToTWebKitAttribute.g_handleBuildersListLoaded):
- (testBuilderGroupIsToTWebKitAttribute.assertEquals):
-
-2012-04-24 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/10120155> and https://bugs.webkit.org/show_bug.cgi?id=82664
- Need DOMWindow mechanism to supplement UserScripts for page cache notifications
-
- Reviewed by Sam Weinig.
-
- Add a new bundle test that stresses the basics of the WKBundleDOMWindowExtension API.
-
- It makes sure new extensions can be added at the right times, and that all of the expected
- callbacks are made.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Record all messages sent from the bundle.
- (TestWebKitAPI::TEST): Run a page through some basic exercises, then compared messages sent from the
- bundle to a set of known expected messages.
-
- Listen to all the new client callbacks, create some extensions, and monitor their lifetimes:
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp: Added.
- (TestWebKitAPI::DOMWindowExtensionBasic::DOMWindowExtensionBasic):
- (TestWebKitAPI::DOMWindowExtensionBasic::frameLoadFinished):
- (TestWebKitAPI::DOMWindowExtensionBasic::sendExtensionStateMessage):
- (TestWebKitAPI::DOMWindowExtensionBasic::initialize):
- (TestWebKitAPI::DOMWindowExtensionBasic::didCreatePage):
- (TestWebKitAPI::DOMWindowExtensionBasic::updateExtensionStateRecord):
- (TestWebKitAPI::DOMWindowExtensionBasic::sendBundleMessage):
- (TestWebKitAPI::DOMWindowExtensionBasic::didCreateGlobalObjectForFrame):
- (TestWebKitAPI::DOMWindowExtensionBasic::willDisconnectDOMWindowExtensionFromGlobalObject):
- (TestWebKitAPI::DOMWindowExtensionBasic::didReconnectDOMWindowExtensionToGlobalObject):
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyGlobalObjectForDOMWindowExtension):
- (TestWebKitAPI::didFinishLoadForFrameCallback):
- (TestWebKitAPI::didCreateGlobalObjectForFrameCallback):
- (TestWebKitAPI::willDisconnectDOMWindowExtensionFromGlobalObjectCallback):
- (TestWebKitAPI::didReconnectDOMWindowExtensionToGlobalObjectCallback):
- (TestWebKitAPI::willDestroyGlobalObjectForDOMWindowExtensionCallback):
-
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp:
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Make this method static, as it always should have been.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2012-04-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Build and run TestWebKitAPI unit tests
- https://bugs.webkit.org/show_bug.cgi?id=84325
-
- Reviewed by Philippe Normand.
-
- We only build WTF unit tests for now. WebKit2 tests will be
- enabled in a follow up patch.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Add TestWebKitAPI/WTF to the list of directories
- containing unit tests.
- (TestRunner._run_test_glib): Run glib tests using gtester.
- (TestRunner._run_test_google): Run google tests.
- (TestRunner._run_test): Use _run_test_glib or _run_test_google
- depending on whether given test is glib or google test
- * TestWebKitAPI/GNUmakefile.am: Added.
- * TestWebKitAPI/config.h: Use #ifdef instead of # to fix a compile
- warning with -Wundef. Include WebKit2 headers only when building
- WebKit2.
-
-2012-04-24 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt][WK2] Convert touch-point area
- https://bugs.webkit.org/show_bug.cgi?id=84434
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix failing test after r114917 by also adding the new EventSender API
- to WebKitTestRunner.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::setTouchPointRadius):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::addTouchPoint):
- (WTR::EventSenderProxy::updateTouchPoint):
- (WTR::EventSenderProxy::setTouchPointRadius):
- (WTR::EventSenderProxy::clearTouchPoints):
-
-2012-04-24 Mikhail Naganov <mnaganov@chromium.org>
-
- [Chromium] Unreviewed test expectations update.
- https://bugs.webkit.org/show_bug.cgi?id=84726
-
- Mark webkitpy.layout_tests.servers.http_server_unittest.TestHttpServer.test_start_cmd as failing on Windows.
-
- * Scripts/webkitpy/test/test_finder.py:
- (TestFinder._default_names):
-
-2012-04-24 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable Web Timing
- https://bugs.webkit.org/show_bug.cgi?id=84705
-
- Reviewed by Tony Gentilcore.
-
- Enable web timing by default whenever build-webkit is used.
-
- * Scripts/build-webkit:
-
-2012-04-23 Eriq Augustine <eaugusti@chromium.org>
-
- Return value from executed script in Chromium.
- https://bugs.webkit.org/show_bug.cgi?id=79851
-
- Reviewed by Adam Barth.
-
- Adding a function to LayoutTestController that evaluates a script in
- an isolated wold an returns the result of the evaluation.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (evaluateScriptInIsolatedWorldAndReturnValue):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setXSSAuditorEnabled):
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorldAndReturnValue):
-
-2012-04-23 Dirk Pranke <dpranke@chromium.org>
-
- run-perf-tests fail intermittently with an exception
- https://bugs.webkit.org/show_bug.cgi?id=83532
-
- Reviewed by Ryosuke Niwa.
-
- This bulletproofs port.get_option('child_processes')
- against the case where the option wasn't set.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_get_crash_log):
- (test_get_crash_log.fake_time_cb):
-
-2012-04-23 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add desktop zooming support for QQuickWebView
- https://bugs.webkit.org/show_bug.cgi?id=82337
-
- Unreviewed typo fix after r114900.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow): Fix the mistyped
- value of a zoom level.
-
-2012-04-23 Hao Zheng <zhenghao@chromium.org>
-
- [chromium-android] Get rid of the trick that replaces system fallback font with DejaVuSans.
- https://bugs.webkit.org/show_bug.cgi?id=84580
-
- Reviewed by Ojan Vafai.
-
- Android's first fallback font is changed to DroidSansArabic.ttf in JB.
- Take the opportunity to get rid of the trick.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort._push_fonts):
-
-2012-04-23 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy is failing
- https://bugs.webkit.org/show_bug.cgi?id=84617
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- (HttpLockTestWithRealFileSystem.clean_all_lockfile):
-
-2012-04-23 Ojan Vafai <ojan@chromium.org>
-
- Split up flakiness_dashboard.html into multiple files. This is a step in the direction
- of making the code more maintainable (e.g. being able to use qunit for testing).
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.css: Added.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard.js: Copied from Tools/TestResultServer/static-dashboards/flakiness_dashboard.html.
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.css: Added.
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js: Renamed from Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.js.
-
-2012-04-23 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt][WK2] Convert touch-point area.
- https://bugs.webkit.org/show_bug.cgi?id=84434
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add feature to set touch-point radius for emitted touch-events.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint):
- (EventSender::updateTouchPoint):
- (EventSender::setTouchPointRadius):
- (EventSender::clearTouchPoints):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
-
-2012-04-23 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController does not implement elementDoesAutoCompleteForElementWithId
- https://bugs.webkit.org/show_bug.cgi?id=84425
-
- Reviewed by Antonio Gomes.
-
- Use the new helper in DumpRenderTreeSupportEfl to properly
- test whether an element performs autocompletion.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
-
-2012-04-23 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup, remove dead codes after r92792.
- https://bugs.webkit.org/show_bug.cgi?id=84433
-
- Relanding r114881 after typo fix in UploadBuiltProduct.
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2012-04-23 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL][DRT] Need to support requestAnimationFrame
- https://bugs.webkit.org/show_bug.cgi?id=84585
-
- Reviewed by Martin Robinson.
-
- Making requestAnimationFrame() support a default on the EFL build.
-
- * Scripts/build-webkit:
-
-2012-04-23 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add desktop zooming support for QQuickWebView
- https://bugs.webkit.org/show_bug.cgi?id=82337
-
- Reviewed by Simon Hausmann.
-
- Add zooming support for MiniBrowser to
- test the new API.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::zoomIn):
- (BrowserWindow::zoomOut):
- (BrowserWindow::keyPressEvent):
- (BrowserWindow::wheelEvent):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
-
-2012-04-23 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed rolling out r114881, because it broke upload buildstep.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ConfigureBuild.__init__):
- (ConfigureBuild.start):
- (CompileWebKit.start):
- (UploadBuiltProduct):
- (UploadBuiltProduct.determineExtraFeatures):
- (Factory.__init__):
- (BuildFactory.__init__):
- (TestFactory.__init__):
- (loadBuilderConfig):
-
-2012-04-23 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup, remove dead codes after r92792.
- https://bugs.webkit.org/show_bug.cgi?id=84433
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2012-04-23 Milian Wolff <mail@milianw.de>
-
- [Qt] Make DRT not dump pixel results if test is calling layoutTestController.dumpAsText()
- https://bugs.webkit.org/show_bug.cgi?id=84327
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2012-04-22 Sriram Neelakandan <sriram.neelakandan@gmail.com>
-
- [Gtk] Added MOZ_X11 build flag for TARGET_X11
- https://bugs.webkit.org/show_bug.cgi?id=40785
-
- Reviewed by Anders Carlsson.
-
- * GNUmakefile.am:
-
-2012-04-22 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultsServer] Impossible to inspect builds on non-Chromium builders
- https://bugs.webkit.org/show_bug.cgi?id=84544
-
- Reviewed by Ryosuke Niwa.
-
- Use the groupEnum parameter that is passed through to the onBuilderListLoad
- function rather than an undefined attribute of the BuilderGroup object. This
- makes it again possible to inspect builds on non-Chromium builders in the
- test results server by not trying to always add Chromium revision links.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2012-04-20 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Revert changes that disabled Cairo fonts metrics hinting
- https://bugs.webkit.org/show_bug.cgi?id=84502
-
- Reviewed by Daniel Bates.
-
- Re-enable Cairo metrics hinting, which seems to ensure consistent results in
- reference and pixel test results. This makes our font metrics a bit different
- than the Mac port's, but it's a decent price to pay for consistent results.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings):
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::initializeGtkSettings):
-
-2012-04-04 Jer Noble <jer.noble@apple.com>
-
- apple.com top navigation bar appears inside video during full screen exit animation
- https://bugs.webkit.org/show_bug.cgi?id=83095
-
- Reviewed by Eric Carlson.
-
- Add a new LayoutTestController function, setHasCustomFullScreenBehavior(), which allows scripts to
- disable the standard full screen behavior, and replace it with explicit callbacks to the relevant
- Document methods from within the script. This allows subtle timing bugs to be consistently reproduced
- from within LayoutTests.
-
- Add the new methods, hasCustomFullScreenBehavior() and setHasCustomFullScreenBehavior():
- * DumpRenderTree/LayoutTestController.cpp:
- (setHasCustomFullScreenBehaviorCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::setHasCustomFullScreenBehavior):
- (LayoutTestController::hasCustomFullScreenBehavior):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::enterFullScreenForElement):
- (WTR::InjectedBundlePage::exitFullScreenForElement):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::setHasCustomFullScreenBehavior):
- (WTR::LayoutTestController::hasCustomFullScreenBehavior):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setHasCustomFullScreenBehavior):
- (LayoutTestController::hasCustomFullScreenBehavior):
-
- Query the new methods before calling will/did/Enter/ExitFullScreen:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::enterFullScreenNow):
- (WebViewHost::exitFullScreenNow):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:enterFullScreenForElement:listener:]):
- (-[UIDelegate webView:exitFullScreenForElement:listener:]):
-
-2012-04-20 Nandor Huszka <hnandor@inf.u-szeged.hu>
-
- NRWT: option --skip-pixel-test-if-no-baseline support on DRT
- https://bugs.webkit.org/show_bug.cgi?id=72841
-
- Reviewed by Dirk Pranke
-
- This patch implements support for --skip-pixel-test-if-no-baseline generically in NRWT,
- instead of in every DRT and WTR implementation. We add 'should_run_pixel_test'
- and 'reference_files' fields to the TestInput objects, and use those flags
- to select the right driver to use in the DriverProxy.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
- (SingleTestRunner._driver_input):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.handle_test_list):
- (Worker._update_test_input):
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput):
- (TestInput.__init__):
- (TestInput.__repr__):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver._wrapper_options):
- (ChromiumDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crash_log):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverInput.__init__):
- (Driver.__init__):
- (DriverProxy.__init__):
- (DriverProxy.run_test):
- (DriverProxy.start):
- (DriverProxy.cmd_line):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRT.run):
- (MockDRT.input_from_line):
- (MockDRT.output_for_test):
- (MockDRT.write_test_output):
- (MockChromiumDRT.input_from_line):
- (MockChromiumDRT.output_for_test):
- (MockChromiumDRT.write_test_output):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.cmd_line):
- (WebKitDriver.run_test):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::setIsPixelTest):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
-
-2012-04-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Make it possible to define offline storage quota per origin
- https://bugs.webkit.org/show_bug.cgi?id=84170
-
- Improved LayoutTestController::setDatabaseQuota to set quota based on
- origin which was causing some tests to fail. Also align the default
- quota for testing (5MB) with others ports.
-
- When dumpDatabaseCallbacks is set to true by, also dump some database
- information when quota is exceed, which is also required by some tests.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onExceededDatabaseQuota):
- (drtViewAdd):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setDatabaseQuota):
-
-2012-04-20 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Send double click event from EventSender
- https://bugs.webkit.org/show_bug.cgi?id=82867
-
- Reviewed by Daniel Bates.
-
- Add support for EFL DumpRenderTree EventSender to send
- double click events.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (sendMouseEvent):
-
-2012-04-20 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] Enable Web Timing
- https://bugs.webkit.org/show_bug.cgi?id=42432
-
- Reviewed by Gustavo Noronha Silva.
-
- Build web timing by default whenever build-webkit is used.
-
- * Scripts/build-webkit:
-
-2012-04-20 Kamil Blank <k.blank@samsung.com>
-
- [EFL] Add missing reset for setAuthorAndUserStylesEnabled inside DRT.
- https://bugs.webkit.org/show_bug.cgi?id=84430
-
- Reviewed by Daniel Bates.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-04-20 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION(r112781): Windows build slaves are no longer including .pdb files in archives handed to testers
- https://bugs.webkit.org/show_bug.cgi?id=84424
-
- Reviewed by Mark Rowe.
-
- Let Windows and Chromium have their own list of files to copy.
-
- * BuildSlaveSupport/built-product-archive:
- (removeDirectoryIfExists):
- (copyBuildFiles):
- (archiveBuiltProduct):
-
-2012-04-20 Kamil Blank <k.blank@samsung.com>
-
- [EFL] Add setting API for author and user styles.
- https://bugs.webkit.org/show_bug.cgi?id=82860
-
- Reviewed by Daniel Bates.
-
- Implementation of setAuthorAndUserStylesEnabled.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setAuthorAndUserStylesEnabled):
-
-2012-04-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Missing keycode translation for space key
- https://bugs.webkit.org/show_bug.cgi?id=84153
-
- Reviewed by Antonio Gomes.
-
- Set keyname for space key before dispatching event.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyNameFromJSValue):
-
-2012-04-19 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Allow to use WebInspector in GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=84143
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Add new files to compilation.
- * GtkLauncher/LauncherInspectorWindow.c: Added.
- (launcherInspectorWindowFinalize):
- (launcher_inspector_window_init):
- (launcher_inspector_window_class_init):
- (inspectedURIChanged): Update the window title based on current
- inspected URI.
- (showInspectorWindow): Show inspector window.
- (closeInspectorWindow): Hide inspector window.
- (launcherInspectorWindowNew): Create an inspector window.
- (launcherInspectorWindowGetWebView): Return the inspected web view.
- * GtkLauncher/LauncherInspectorWindow.h: Added.
- * GtkLauncher/main.c:
- (inspectorInspectWebViewCb): Create an inspector window.
- (createBrowser): Connect to inspect-web-view signal of the view
- inspector.
-
-2012-04-19 Jeremy Mao <yujie.mao@intel.com>
-
- Media Stream API: Piece of code cleanup for the chromium port
- https://bugs.webkit.org/show_bug.cgi?id=84328
-
- Reviewed by Kent Tamura.
-
- WebUserMediaClientMock use an old requestUserMedia interface and
- Replace it with the new interface.
-
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (WebKit::WebUserMediaClientMock::requestUserMedia):
- Remove the old requestUserMedia and replace it with the new.
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- (WebUserMediaClientMock):
-
-2012-04-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT console messages should contain only the file name part of local URIs
- https://bugs.webkit.org/show_bug.cgi?id=84236
-
- Reviewed by Kentaro Hara.
-
- Process console messages before printing them in EFL's DumpRenderTree
- them so that they contain only the file name part of local URIs. This
- is what is expected by test cases.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (urlSuitableForTestResult):
- (onConsoleMessage):
-
-2012-04-19 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] [DRT] Should create offline storage inside DUMPRENDERTREE_TEMP
- https://bugs.webkit.org/show_bug.cgi?id=84169
-
- All databases were being created inside ~/.webkit which was causing
- flaky tests when running multiple tests in parallel, specially timeouts
- due to concurrency.
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize):
-
-2012-04-19 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [GTK] 3 fast/ layout tests failing after upgrading libsoup to 2.37.92
- https://bugs.webkit.org/show_bug.cgi?id=82484
-
- Reviewed by Martin Robinson.
-
- Bumping libsoup to version 2.38.1 which fixes the above WebKit bug.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-04-19 Lucas Forschler <lforschler@apple.com>
-
- Move apple-xserve-10 from Lion Test to SnowLeopard Debug Build
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-04-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] dispatchDidCancelClientRedirect needs implementation
- https://bugs.webkit.org/show_bug.cgi?id=83669
-
- Reviewed by Antonio Gomes.
-
- Catch the new ewk_frame "redirect,cancelled" signal in EFL's DRT and
- and print out information that is expected by several test cases if
- LayoutTestController's dumpFrameLoadCallback() returns true.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameRedirectCancelled):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-18 Hironori Bono <hbono@chromium.org>
-
- Split SpellChecker::didCheck() to SpellChecker::didCheckSucceeded() and SpellChecker::didCheckCanceled()
- https://bugs.webkit.org/show_bug.cgi?id=83748
-
- Reviewed by Ryosuke Niwa.
-
- This change replaces a call for SpellChecker::didCheck() with one for
- SpellChecker::didCheckCenceled() because didCheck() has been split into
- didCheckSucceeded() and didCheckCanceled().
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestCheckingOfText): Replaced didCheck with didCheckCanceled.
-
-2012-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Fix failure in test-webkitpy after r114583.
-
- Unreviewed, build fix.
-
- Updating the call site in r114583 w/o updating the test caused
- the test to fail. Somehow I forgot to run the unit tests :(.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crash_log):
-
-2012-04-18 Filip Pizlo <fpizlo@apple.com>
-
- JSC testing should have complete coverage over typed array types
- https://bugs.webkit.org/show_bug.cgi?id=84302
-
- Reviewed by Geoff Garen.
-
- Made run-fast-jsc print something and a newline if jsc threw an exception or
- otherwise returned with an error code, but did not crash.
-
- * Scripts/run-fast-jsc:
-
-2012-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Fix crash in chromium.py after r114877.
-
- Unreviewed, build fix.
-
- Missed updating one call site for get_crash_log() :(.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
-
-2012-04-18 Philippe Normand <pnormand@igalia.com>
-
- [GTK] NRWT bails out if more than one X server runs on the machine
- https://bugs.webkit.org/show_bug.cgi?id=84276
-
- Reviewed by Dirk Pranke.
-
- Set up GTK driver's Xvfb display number based on Xorg servers
- currently running.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
- (GtkDriver._start.x_filter):
-
-2012-04-18 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests picked up an old crash log
- https://bugs.webkit.org/show_bug.cgi?id=84196
-
- Reviewed by Ryosuke Niwa.
-
- Modify the crash log-finding code so that we can
- limit our search to logs newer than X - this prevents
- us from finding old crash logs for a given process/pid
- combination even when the PIDs might've wrapped.
-
- Also fix a bug in filesystem_mock where files_under() would
- return paths that didn't exist.
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.find_newest_log):
- (CrashLogs._find_newest_log_darwin):
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_log_darwin):
- (CrashLogsTest.test_find_log_darwin.bad_read):
- (CrashLogsTest):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.files_under):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_get_crash_log):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.run_test):
-
-2012-04-18 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: support additional test expectations files
- https://bugs.webkit.org/show_bug.cgi?id=84222
-
- Reviewed by Ojan Vafai.
-
- This patch adds an --additional-expectations flag that can be
- used to point to more files that will override the default set
- of expectations. This will allow us to remove the
- 'google_chrome' ports and eventually help to clean up override
- handling in the chromium ports and unify expectations files and
- Skipped files; this can also be used to specify overrides for
- tests that run differently on a given machine.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_additional_expectations):
-
-2012-04-18 Jer Noble <jer.noble@apple.com>
-
- Lion Production Test failing with error: "Failed to stop httpd: pid file still exists"
- https://bugs.webkit.org/show_bug.cgi?id=84177
-
- Reviewed by Dirk Pranke.
-
- Try to delete the pid file left by Apache in the case it was killed forcefully.
-
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd._stop_running_server):
-
-2012-04-18 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- Clean-up WheelEvent Conversion.
- https://bugs.webkit.org/show_bug.cgi?id=84243
-
- Reviewed by Simon Hausmann.
-
- Calculate proper wheel-delta from pixel-delta given.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::mouseScrollBy):
- (EventSender::continuousMouseScrollBy):
-
-2012-04-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r114506.
- http://trac.webkit.org/changeset/114506
- https://bugs.webkit.org/show_bug.cgi?id=84254
-
- Seems to be making gtk's DumpRenderTree crash occasionally
- (Requested by tomz on #webkit).
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-04-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [CMake] Use jsc target instead of ONLY_BUILD_JAVASCRIPTCORE
- https://bugs.webkit.org/show_bug.cgi?id=84229
-
- CMake caches ONLY_BUILD_JAVASCRIPTCORE=1 and will reuse the setting for
- subsequent builds, stopping WebCore from being built ever again.
-
- Instead of trying to emulate a build target using command line options,
- just build the existing jsc target directly.
-
- Reviewed by Rob Buis.
-
- * Scripts/build-jsc:
-
-2012-04-18 Simon Pena <spena@igalia.com>
-
- [GTK] r114021 triggered media flakyness
- https://bugs.webkit.org/show_bug.cgi?id=83874
-
- Reviewed by Philippe Normand.
-
- Now that there is gtk API to update the
- MediaPlaybackRequiresUserGesture property, set it to false from the
- DumpRenderTree tool when resetting defaults to consistent values.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-04-18 Vivek Galatage <vivekgalatage@gmail.com>
-
- Web Inspector: Disabling Inspector causes build failure on Windows
- https://bugs.webkit.org/show_bug.cgi?id=83557
-
- Reviewed by Pavel Feldman.
-
- The calls to inspector APIs are not put under ENABLE(INSPECTOR) guard.
- This change brings all such API calls under the guard.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::showWebInspector):
- (WTR::LayoutTestController::closeWebInspector):
- (WTR::LayoutTestController::evaluateInWebInspector):
- (WTR::LayoutTestController::setJavaScriptProfilingEnabled):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-04-18 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] atk/textChangedNotifications API test fails
- https://bugs.webkit.org/show_bug.cgi?id=84010
-
- Unreviewed, unskipping test after bug being fixed by r114311.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip now passing test.
-
-2012-04-17 Jacky Jiang <zhajiang@rim.com>
-
- [BlackBerry] Viewport metatag doesn't disable double-tap zoom
- https://bugs.webkit.org/show_bug.cgi?id=84199
-
- Reviewed by George Staikos.
-
- Revert a part of the change master_32/SHA:fa0f8ee9 and use
- WebPage::setUserScalable instead.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-04-17 Dirk Pranke <dpranke@chromium.org>
-
- build-webkit: make ninja work with chromium linux
- https://bugs.webkit.org/show_bug.cgi?id=84213
-
- Reviewed by Eric Seidel.
-
- Fix typos so that build-webkit will use ninja to
- build chromium if a build.ninja file exists and is up-to-date.
-
- * Scripts/webkitdirs.pm:
- (determineIsChromiumNinja):
-
-2012-04-17 Ojan Vafai <ojan@chromium.org>
-
- Add caching to the flakiness dashboard json files
- https://bugs.webkit.org/show_bug.cgi?id=84198
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/handlers/testfilehandler.py:
- (GetFile._get_file_list):
- (GetFile._get_file_content):
- (GetFile._get_file_content_from_key):
- (GetFile._get_test_list_json):
- (GetFile._serve_json):
- Add a Last-Modified header and handle If-Modified-Since headers.
- (GetFile.get):
-
-2012-04-17 Anders Carlsson <andersca@apple.com>
-
- Need a client callback for when the user tries to interact with an already unresponsive page
- https://bugs.webkit.org/show_bug.cgi?id=84201
- <rdar://problem/11140862>
-
- Reviewed by Andreas Kling.
-
- Add new client functions.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-04-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: handle stopping layout test helper after a ctrl-c cleanly on the chromium port
- https://bugs.webkit.org/show_bug.cgi?id=84190
-
- Reviewed by Ojan Vafai.
-
- LayoutTestHelper would exit when the user typed ctrl-c, but we
- would attempt to write to it to shut it down, generating an
- IOError.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.stop_helper):
-
-2012-04-17 Dirk Pranke <dpranke@chromium.org>
-
- rename --experimental-fully-parallel
- https://bugs.webkit.org/show_bug.cgi?id=84188
-
- Reviewed by Ojan Vafai.
-
- I thought this was done long ago; rename
- --experimental-fully-parallel to just --fully-parallel and
- remove the --no- switch that AFAIK no one uses.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-04-17 Christophe Dumez <christophe.dumez@intel.com>
-
- EFL's LayoutTestController does not implement callShouldCloseOnWebView
- https://bugs.webkit.org/show_bug.cgi?id=82301
-
- Reviewed by Martin Robinson.
-
- Implement callShouldCloseOnWebView in EFL's LayoutTestController by
- calling shouldClose() on the FrameLoader, allowing the related test
- to be removed from the skip list.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
-
-2012-04-17 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Add setting API to enable/disable XSSAuditor
- https://bugs.webkit.org/show_bug.cgi?id=83281
-
- Add missing implementation setXSSAuditorEnabled to EFL's LayoutTestController
- in order to unskip tests in http/tests/security/xssAuditor. Also, catch the signal
- 'xss,detected' in DRT to enable a test, which is expecting a line containing
- 'didDetectXSS' in the output when reflected XSS is encountered in the page.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onDidDetectXSS):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setXSSAuditorEnabled):
-
-2012-04-17 Nandor Huszka <hnandor@inf.u-szeged.hu>
-
- [Qt] JSC build should handle --no-webkit2 option to avoid unwanted clean-builds
- https://bugs.webkit.org/show_bug.cgi?id=77533
-
- Reviewed by Simon Hausmann.
-
- Pick up the --no-webkit2 option from BUILD_WEBKIT_ARGS and pass on
- the corresponding parameter to the buildQMakeProjects function.
-
- * Scripts/build-jsc:
-
-2012-04-17 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should support LayoutTestController's dumpFrameLoadCallbacks()
- https://bugs.webkit.org/show_bug.cgi?id=83030
-
- Reviewed by Antonio Gomes.
-
- Implement support for LayoutTestController's dumpFrameLoadCallbacks()
- in EFL's DumpRenderTree. Make use of the new frame argument passed to
- the "load,started" and "load,finished" signals.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onLoadStarted):
- (DumpRenderTreeChrome::processWork):
- (DumpRenderTreeChrome::topLoadingFrameLoadFinished):
- (DumpRenderTreeChrome::onWebViewOnloadEvent):
- (DumpRenderTreeChrome::onInsecureContentRun):
- (DumpRenderTreeChrome::onInsecureContentDisplayed):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameProvisionalLoad):
- (DumpRenderTreeChrome::onFrameLoadCommitted):
- (DumpRenderTreeChrome::onFrameLoadFinished):
- (DumpRenderTreeChrome::onFrameLoadError):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r114376.
- http://trac.webkit.org/changeset/114376
- https://bugs.webkit.org/show_bug.cgi?id=84155
-
- Wrong patch version committed, asked by the patch author.
- (Requested by rakuco on #webkit).
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::processWork):
- (DumpRenderTreeChrome::onLoadFinished):
- (DumpRenderTreeChrome::onWillSendRequest):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-17 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should support LayoutTestController's dumpFrameLoadCallbacks()
- https://bugs.webkit.org/show_bug.cgi?id=83030
-
- Reviewed by Antonio Gomes.
-
- Implement support for LayoutTestController's dumpFrameLoadCallbacks()
- in EFL's DumpRenderTree.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::processWork):
- (DumpRenderTreeChrome::topLoadingFrameLoadFinished):
- (DumpRenderTreeChrome::onWebViewOnloadEvent):
- (DumpRenderTreeChrome::onInsecureContentRun):
- (DumpRenderTreeChrome::onInsecureContentDisplayed):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameProvisionalLoad):
- (DumpRenderTreeChrome::onFrameLoadCommitted):
- (DumpRenderTreeChrome::onFrameLoadFinished):
- (DumpRenderTreeChrome::onFrameLoadError):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-17 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt] Fix builds with force_static_libs_as_shared for non-linux builds.
- https://bugs.webkit.org/show_bug.cgi?id=83035
-
- Reviewed by Simon Hausmann.
-
- The force_static_libs_as_shared feature for the Qt port will remove
- hide_symbols from Qt's CONFIG in order to make them visible to other
- libraries again.
-
- Due to an evaluation order problem in qmake, the flags for the C++ compiler
- that are set by adding hide_symbols to the CONFIG variables get applied
- to qmake's C++ compiler flags directly and hence trying to remove these
- later will not work and cause build failures when using the force_static_libs_as_shared
- feature of the Qt port.
-
- This is fixed by removing the flags that hide the exports from the compiler flags directly.
-
- * qmake/mkspecs/features/force_static_libs_as_shared.prf:
-
-2012-04-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove CreateWebKitBuildDirectory step to fix Chromium Windows Perf bot
- https://bugs.webkit.org/show_bug.cgi?id=84068
-
- Reviewed by Eric Seidel.
-
- Remove CreateWebKitBuildDirectory from master.cfg since download-built-product
- automatically creates the build directory if needed.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DownloadAndPerfTestFactory.__init__):
- (DownloadAndPerfTestWebKit2Factory.__init__):
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Use configure instead of autogen.sh for gtk+
- https://bugs.webkit.org/show_bug.cgi?id=84112
-
- Rubber-stamped by Martin Robinson.
-
- * gtk/jhbuild.modules: GTK+'s autogen requires gobject-introspection;
- we don't want to depend on that for now, so run configure instead - we
- can, since we are using a tarball
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed, rolling out r114322.
- http://trac.webkit.org/changeset/114322
- https://bugs.webkit.org/show_bug.cgi?id=84096
-
- Didn't make the debug bot happy, so back out
-
- * gtk/jhbuild.modules:
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Try to fix debug bot by adding gobject-introspection to the build
- https://bugs.webkit.org/show_bug.cgi?id=84096
-
- Unreviewed speculative build fix.
-
- * gtk/jhbuild.modules: Added gobject-introspection, since modules need
- an up-to-date introspection m4 for running autogen.
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Add pango to jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=84086
-
- Unreviewed build fix.
-
- * gtk/jhbuild.modules: Add pango's latest stable release, 1.30, to our
- jhbuild environment. It's required for latest stable GTK+ and some
- systems may lack it.
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] fonts jhbuild module needs an empty clean target
- https://bugs.webkit.org/show_bug.cgi?id=84085
-
- Rubber-stamped by Martin Robinson.
-
- * gtk/jhbuild.modules: update to webkitgtk-test-fonts 0.0.2, which
- includes a phony clean target that should make warnings and errors go
- away.
-
-2012-04-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Bump dependency on GTK+ 3.x to match reality
- https://bugs.webkit.org/show_bug.cgi?id=84060
-
- Rubber-stamped by Martin Robinson.
-
- * gtk/jhbuild.modules: Bump GTK+ to 3.4.0, plus glib and gdk-pixbuf
- to their GNOME 3.4 versions.
- * gtk/patches/gtk+-3.0.12-gtkprinter.patch: Removed. This patch
- is applied upstream.
-
-2012-04-16 Vincent Scheib <scheib@chromium.org>
-
- Adding Contributors Brian Salomon and Tom Hudson to committers.py.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-16 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
-
- [BlackBerry] Add ability for DRT to handle HTTP authentication challenges.
- https://bugs.webkit.org/show_bug.cgi?id=84031
-
- Reviewed by Rob Buis.
-
- Implemented interface function didReceiveAuthenticationChallenge in class
- DumpRenderTree.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (drtCredentialDescription):
- (BlackBerry::WebKit::DumpRenderTree::didReceiveAuthenticationChallenge):
- (WebKit):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (WebCore):
- (DumpRenderTree):
-
-2012-04-16 Philippe Normand <pnormand@igalia.com>
-
- build-webkit --gtk --no-webkit2 builds WK2
- https://bugs.webkit.org/show_bug.cgi?id=83977
-
- Reviewed by Martin Robinson.
-
- * Scripts/build-webkit: Fixup ./configure option to disable
- WebKit2 build.
-
-2012-04-16 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Feeding key events with invalid keyName
- https://bugs.webkit.org/show_bug.cgi?id=83797
-
- Keep the keyName valid within scope of KeyEventInfo to avoid
- feeding key events with invalid keyName.
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (KeyEventInfo::KeyEventInfo):
- (KeyEventInfo):
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- (createKeyEventInfo):
- (sendKeyDown):
-
-2012-04-16 Andras Piroska <pandras@inf.u-szeged.hu>
-
- [Qt] Replace QtXmlPatterns usage with libxslt dependency
- <https://bugs.webkit.org/show_bug.cgi?id=76820>
-
- Reviewed by Simon Hausmann.
-
- The features.prf file was modified, in order to use libxml and libxslt by default.
- This modification only work at Qt5.
-
- * qmake/config.tests/libxml2/libxml2.cpp: Added.
- (main):
- * qmake/config.tests/libxml2/libxml2.pro: Added.
- * qmake/config.tests/libxslt/libxslt.cpp: Added.
- (main):
- * qmake/config.tests/libxslt/libxslt.pro: Added.
- * qmake/mkspecs/features/features.prf:
- * qmake/sync.profile:
-
-2012-04-16 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL] EWebLaucher : Fix wrong parameter order in function call for multiple windows.
- https://bugs.webkit.org/show_bug.cgi?id=83862
-
- Reviewed by Kenneth Rohde Christiansen.
-
- EWebLauncher creates multiple windows, like multiple tabs when pressing F9 key.
- It doesn't work properly because of wrong parameter order in function call.
-
- * EWebLauncher/main.c:
-
-2012-04-16 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skip /webkit/atk/textChangedNotifications.
-
-2012-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Chromium perf bots should not build
- https://bugs.webkit.org/show_bug.cgi?id=83641
-
- Reviewed by Eric Seidel.
-
- Don't build on perf bots to improve the cycle time.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-04-14 Zalan Bujtas <zbujtas@gmail.com>
-
- [WK2] Set WebKitTestRunner's WebProcess cache model to DocumentBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=81945
-
- Reviewed by Dan Bernstein.
-
- WebProcess's default cache model is DocumentViewer. When DocumentViewer model is on,
- the PageCache's capacity is set to 0. Tests that are enabling 'WebKitUsesPageCachePreferenceKey' expect
- PageCache to be functional.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-04-11 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove unused compositeToTexture / compositeOffscreen setting
- https://bugs.webkit.org/show_bug.cgi?id=83733
-
- Reviewed by Adrienne Walker.
-
- Remove compositeOffscreen / compositeToTexture setting. This was an experiment that is no longer needed.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- webkitpy build fix. Revert the debug change (number of runs was 2 instead of 20),
- and also rebaseline the test results since we ignore the first run now.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PageLoadingPerfTest.run):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPageLoadingPerfTest.test_run):
-
-2012-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- Enable SVG page loading performance tests
- https://bugs.webkit.org/show_bug.cgi?id=83861
-
- Reviewed by Adam Barth.
-
- Add support for page loading tests. These are tests without any test running harnesses, and we use
- DriverOutput's test_timeout to measure the loading time.
-
- Extracted PerfTest.run and PerfTest.run_failed from PerfTestRunner._run_single_test.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.run):
- (PerfTest):
- (PerfTest.run_failed):
- (PerfTest.parse_output):
- (PerfTest.output_statistics):
- (ChromiumStylePerfTest.parse_output):
- (PageLoadingPerfTest): Added.
- (PageLoadingPerfTest.__init__):
- (PageLoadingPerfTest.run): Run the driver 20 times to get the statistics for the loading time.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py: Added.
- (MockPrinter):
- (MockPrinter.__init__):
- (MockPrinter.write):
- (MainTest):
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest):
- (TestPageLoadingPerfTest.assertWritten):
- (TestPageLoadingPerfTest.MockDriver):
- (TestPageLoadingPerfTest.MockDriver.__init__):
- (TestPageLoadingPerfTest.MockDriver.run_test):
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._collect_tests._is_test_file): Now recognizes svg tests.
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests_with_page_load_svg):
- (test_collect_tests_with_page_load_svg.add_file):
-
-2012-04-10 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/11176921> and https://bugs.webkit.org/show_bug.cgi?id=83600
- Need WebKit2 API to notify whether history loads are in the page cache
-
- Add a test ShouldGoToBackForwardListItem that exercises the new BundlePageLoaderClient
- callback as well as the new WKBundleBackForwardListItemIsInPageCache() API.
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::willGoToBackForwardListItem):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp: Added.
- (ShouldGoToBackForwardListItemTest):
- (TestWebKitAPI::shouldGoToBackForwardListItemCallback):
- (TestWebKitAPI::ShouldGoToBackForwardListItemTest::ShouldGoToBackForwardListItemTest):
- (TestWebKitAPI::ShouldGoToBackForwardListItemTest::didCreatePage):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Update for the new client.
-
-2012-04-13 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- Group EFL bots into a category on the buildbot master
- https://bugs.webkit.org/show_bug.cgi?id=82712
-
- Reviewed by Adam Roben.
-
- Creating a new category definition on the buildbot frontend.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig): Determine category for EFL bots
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html: Add links to EFL category
-
-2012-04-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r113714.
- http://trac.webkit.org/changeset/113714
- https://bugs.webkit.org/show_bug.cgi?id=83887
-
- It is behaving strange on the bots and needs more
- investigation. (Requested by jeez_ on #webkit).
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-04-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- webkit-tools-completion: Support bugzilla email completion for webkit-patch upload --cc
- https://bugs.webkit.org/show_bug.cgi?id=83690
-
- Reviewed by Tor Arne Vestbø.
-
- Typing part of an email and pressing <TAB> will bash-complete it using the list in
- Tools/Scripts/webkitpy/common/config/committers.py
-
- * Scripts/webkit-tools-completion.sh:
-
-2012-04-13 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Add API for color chooser
- https://bugs.webkit.org/show_bug.cgi?id=83692
-
- Enables INPUT_TYPE_COLOR by default on the EFL port.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/build-webkit:
-
-2012-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- Extract PerfTest class from PerfTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=83847
-
- Reviewed by Hajime Morita.
-
- Extracted PerfTest and ChromiumStylePerfTest from PerfTestRunner. This class abstracts a test
- that was previously represented by a tuple.
-
- Also moved the logic to determine whether a given test is chromium style or not from run() to
- _collect_tests(). And moved the output parsing algorithms for parser style and chromium style
- tests from PerfTestRunner to PerfTest and ChromiumStylePerfTest respectively so that we may
- add new types of tests more easily.
-
- * Scripts/webkitpy/performance_tests/perftest.py: Added.
- (PerfTest):
- (PerfTest.__init__):
- (PerfTest.test_name):
- (PerfTest.dirname):
- (PerfTest.path_or_url):
- (PerfTest._should_ignore_line_in_parser_test_result):
- (PerfTest.parse_output):
- (ChromiumStylePerfTest):
- (ChromiumStylePerfTest.__init__):
- (ChromiumStylePerfTest.parse_output):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner.run):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (run_test):
- (_tests_for_runner):
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_run_test_set_with_multiple_repositories):
- (_collect_tests_and_sort_test_name):
- (test_collect_tests):
- (test_collect_tests_with_skipped_list):
-
-2012-04-12 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Fix WebKit1 build with V8
- https://bugs.webkit.org/show_bug.cgi?id=83322
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-04-12 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy fails on metered_stream_unittest for non-US West Coast Time Zones
- https://bugs.webkit.org/show_bug.cgi?id=83583
-
- Reviewed by Philippe Normand
-
- Updated the unit test to ignore the hours and minutes of the
- localtime for time(0), since we can't easily guarantee which
- timezone we're in or what timezone rules were in effect on
- 1/1/1970; this should be mostly fine since we can trust that
- time.localtime() will work, although there is the possibility
- that we'll screw up the time formatting of which field is the
- hours and which is the minutes.
-
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (VerboseTest):
- (VerboseTest.test_basic):
- (VerboseTest.test_log_after_update):
-
-2012-04-12 Dominik Rottsches <dominik.rottsches@linux.intel.com>
-
- Add an EFL Debug Buildbot to the master configuration
- https://bugs.webkit.org/show_bug.cgi?id=82711
-
- Forgot to add EFL Linux Debug to scheduler.
-
- Reviewed by Philippe Normand.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-04-12 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- Add an EFL Debug Buildbot to the master configuration
- https://bugs.webkit.org/show_bug.cgi?id=82711
-
- Reviewed by Philippe Normand.
-
- Hooking up our EFL Linux 64bit debug configuration buildbot to the buildbot master.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: EFL Debug builder added
-
-2012-04-12 George Staikos <staikos@webkit.org>
-
- Enable the fullscreen API for BlackBerry.
- https://bugs.webkit.org/show_bug.cgi?id=83757
-
- Reviewed by Antonio Gomes.
-
- * Scripts/build-webkit:
-
-2012-04-12 Simon Pena <spena@igalia.com>
-
- [GTK] Test runner crashes without recent versions of pulseaudio-utils
- https://bugs.webkit.org/show_bug.cgi?id=83774
-
- Reviewed by Philippe Normand.
-
- Besides checking that pactl is available, check also that its output
- is the expected one, and handle gracefully when it isn't, when
- trying to unload pulseaudio modules.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._unload_pulseaudio_module):
- (GtkPort._restore_pulseaudio_module):
-
-2012-03-05 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Use QRawFont when building with Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=78001
-
- Flip the QRawFont switch for Qt 5.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-04-11 Vivek Galatage <vivekgalatage@gmail.com>
-
- Web Inspector: Disabling Inspector causes build failure on Windows
- https://bugs.webkit.org/show_bug.cgi?id=83557
-
- Reviewed by Pavel Feldman.
-
- The calls to inspector APIs are not put under ENABLE(INSPECTOR) guard.
- This change brings all such API calls under the guard.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-04-11 Dirk Pranke <dpranke@chromium.org>
-
- Fix regression introduced in r113927.
-
- Unreviewed, build fix.
-
- I failed to rename skipped_tests() to skipped_layout_tests()
- everywhere it needed to be renamed. The unit tests didn't catch
- this because the TestPort was one of the places that didn't get
- renamed :(.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.parse_expectations):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.skipped_layout_tests):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations._model):
-
-2012-04-11 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests: 'webkit-patch skipped-ports' introduced bad layering
- https://bugs.webkit.org/show_bug.cgi?id=47528
-
- Reviewed by Adam Barth.
-
- The skipped-ports command has been replaced by 'webkit-patch
- print-expectations', which offers the equivalent functionality
- via 'webkit-patch print-expectations --platform \* -t skip'
- (and other features, of course).
-
- This also allows me to fix a nasty layering violation where the
- chromium port had to know about the TestExpectations objects in
- order to implement the command properly.
-
- Lastly, this allows me to rename skipped_tests() to
- skipped_layout_tests() to more consistent with
- skipped_perf_tests().
-
- This patch removes skips_layout_test() from the Port interface,
- because that can't be implemented without the port knowing about
- Expectations objects (and skipped-ports was the only thing using it).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_layout_tests):
- (Port.skipped_perf_tests):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_configuration_notfound):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.skipped_layout_tests):
- * Scripts/webkitpy/tool/commands/queries.py:
- (execute):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (QueryCommandsTest.test_tree_status):
-
-2012-04-11 Mark Rowe <mrowe@apple.com>
-
- Remove a fprintf from LayoutTestController.
-
- This fprintf is causing 100+MB of data to be written to stderr during a single run of the tests.
- It was added for no apparent reason by Ryosuke in r113651.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::redirectionDestinationForURL):
-
-2012-04-11 Nico Weber <thakis@chromium.org>
-
- [mac] Suppress deprecation warning for GlobalToLocal in the carbon parts of the test plugin.
- https://bugs.webkit.org/show_bug.cgi?id=83709
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventCarbon):
-
-2012-04-11 Rafael Brandao <rafael.lobo@openbossa.org>
-
- Adding myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=83711
-
- Unreviewed update to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-11 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] LayoutTestController needs implementation of pageProperty
- https://bugs.webkit.org/show_bug.cgi?id=82449
-
- Add missing implementation pageProperty to EFL's LayoutTestController
- in order to unskip printing/page-rule-selection.html
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::pageProperty):
-
-2012-04-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r113836.
- http://trac.webkit.org/changeset/113836
- https://bugs.webkit.org/show_bug.cgi?id=83705
-
- Broke all the WebKit2 inspector tests (Requested by andersca
- on #webkit).
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::showWebInspector):
- (WTR::LayoutTestController::closeWebInspector):
- (WTR::LayoutTestController::evaluateInWebInspector):
- (WTR::LayoutTestController::setJavaScriptProfilingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-04-11 Vivek Galatage <vivekgalatage@gmail.com>
-
- Web Inspector: Disabling Inspector causes build failure on Windows
- https://bugs.webkit.org/show_bug.cgi?id=83557
-
- Reviewed by Pavel Feldman.
-
- The calls to inspector APIs are not put under ENABLE(INSPECTOR) guard.
- This change brings all such API calls under the guard.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-04-11 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt][WK2] Manage graphics buffers in the web process
- https://bugs.webkit.org/show_bug.cgi?id=78675
-
- Make graphics surface available only for Qt 5, attempting to fix
- the Qt-mac build.
-
- Unreviewed build fix.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-04-11 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK NRWT follow-up fix after r113849.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._unload_pulseaudio_module): Exit early if pactl is not found.
-
-2012-04-11 Simon Pena <spena@igalia.com>
-
- [GTK] media/event-attributes.html fails
- https://bugs.webkit.org/show_bug.cgi?id=71662
-
- Reviewed by Philippe Normand.
-
- PulseAudio's module "module-stream-restore" allows saving the volume
- of a stream, restoring it the next time it runs.
- This affects the tests, since DumpRenderTree's volume settings are
- saved between test runs, and tests relying on specific volume values
- would miss some volumeChange events (or get additional ones).
-
- This patch hooks on the existing GtkPort setup_test_run method and
- creates a new clean_up_test_run method, so PulseAudio's module is
- unloaded (if found) before running the tests, and restored (if it
- was there previously) after they finished, ensuring the tests run in
- the right environment.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._clean_up_run): Invoke the port implementation of
- clean_up_test_run.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.clean_up_test_run): Add an empty implementation of
- clean_up_test_run.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._unload_pulseaudio_module): Unloads the offending
- pulseaudio module, if found.
- (GtkPort):
- (GtkPort._restore_pulseaudio_module): Restores the offending
- pulseaudio module, if it was there previously.
- (GtkPort.setup_test_run): Calls _unload_pulseaudio_module.
- (GtkPort.clean_up_test_run): Calls _restore_pulseaudio_module.
-
-2012-04-11 Andras Becsi <andras.becsi@nokia.com>
-
- Fix the build with gcc 4.7.0
- https://bugs.webkit.org/show_bug.cgi?id=83584
-
- Reviewed by Alexey Proskuryakov.
-
- * qmake/mkspecs/features/unix/default_post.prf:
- The -fuse-ld=gold option is not supported with upstream gcc.
-
-2012-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Refactor PerfTestRunner to include file extensions in test names
- https://bugs.webkit.org/show_bug.cgi?id=83677
-
- Reviewed by Hajime Morita.
-
- Move the logic that extracts the test name from _process_parser_test_result to _collect_tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._process_parser_test_result): Still replace "/" by ": " to keep the output format.
- We can make the said behavior change by simply removing "test_name = re.sub(r'\.\w+$', '', test_name)" here.
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (run_test):
- (_tests_for_runner):
- (test_run_test_set):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_pause_before_testing):
- (test_run_test_set_for_parser_tests):
- (test_collect_tests):
- (test_collect_tests_with_skipped_list):
-
-2012-04-11 Vivek Galatage <vivekgalatage@gmail.com>
-
- Web Inspector: Disabling Inspector causes build failure on Windows
- https://bugs.webkit.org/show_bug.cgi?id=83557
-
- Reviewed by Pavel Feldman.
-
- The calls to inspector APIs are not put under ENABLE(INSPECTOR) guard.
- This change brings all such API calls under the guard.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-04-10 Kent Tamura <tkent@chromium.org>
-
- Unreviewed. Using tkent+wkapi@ for ChromiumPublicApi notifications.
-
- * Scripts/webkitpy/common/config/watchlist:
- * Scripts/webkitpy/common/config/committers.py: Add tkent+wkapi@ to pass the style checker.
-
-2012-04-10 Dirk Pranke <dpranke@chromium.org>
-
- If NRWT gets killed halfway through a run, it incorrectly reports tests that weren't run as passes
- https://bugs.webkit.org/show_bug.cgi?id=82799
-
- Reviewed by Ojan Vafai.
-
- The tests we were skipping in _mark_interrupted_tests_as_skipped
- had incorrectly-constructed TestResults, and so they were not
- being treated as failures. The JSON generator doesn't record
- tests that are passed or skiped in incremental_results, so you
- couldn't tell these tests were being skipped at all.
-
- This change changes _mark_interrupted_tests_as_skipped() to
- treat the skipped tests as failures; this is arguably still
- incorrect but is minimally invasive for now. We probably need to
- revisit how we are uploading information about tests that are
- skipped and passed altogether in a separate change.
-
- This change also cleans up a couple of other nits that were
- unnecessary or broken in this same code path.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._mark_interrupted_tests_as_skipped):
- (Manager._upload_json_files): Deletes the check for
- chromium-mac-leopard (as it is no longer necessary).
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator.__init__): Here we were
- recalculating the failure type unnecessarily.
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (determine_result_type):
- (FailureEarlyExit): Adds a new failure type so we can tell what
- happened.
- (FailureEarlyExit.message):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_exit_after_n_failures_upload): Add more checks to
- ensure that we are recording the SKIP correctly; this is less
- than ideal, because we can't actually test the contents of
- incremental_results.json. We should fix that at some point.
-
-2012-04-10 Dirk Pranke <dpranke@chromium.org>
-
- make chromium layout tests not depend on platform/win, platform/mac-leopard, or platform/mac-snowleopard
- https://bugs.webkit.org/show_bug.cgi?id=83401
-
- Reviewed by Adam Barth.
-
- Last patch in the series - no longer look in mac-leopard,
- mac-snowleopard, or mac-lion.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2012-04-10 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch: add a print-expectations command
- https://bugs.webkit.org/show_bug.cgi?id=83347
-
- Reviewed by Adam Barth.
-
- This command will print the expected results for a given set of
- tests on a given set of ports matching a given set of keywords.
-
- Example output (printing all the tests not expected to pass, and their
- expected results, on a Mac):
-
- $ webkit-patch print-expectations -x pass fast/html
- // For mac-snowleopard
- fast/html/details-open4.html = TEXT
- fast/html/details-open2.html = TEXT
- fast/html/details-no-summary4.html = TEXT
- fast/html/details-open-javascript.html = TEXT
- $
-
- You can also print full test-expectatons.txt lines using --full and a
- CSV-style report (which can be useful for post-processing) using --csv.
-
- It will replace the 'skipped-files' command (which will be
- removed in a subsequent patch) and is a more general (and
- cleaner and properly layered) solution.
-
- Also add an update() command to MockOptions() to make overriding keywords easier.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationSerializer.to_string):
- (TestExpectationSerializer):
- (TestExpectationSerializer.to_csv):
- (TestExpectationSerializer._format_result):
- (TestExpectationLine.create_passing_expectation):
- (TestExpectationsModel.get_test_set_for_keyword):
- (TestExpectationsModel.has_keyword):
- (TestExpectations.model):
- * Scripts/webkitpy/tool/commands/queries.py:
- (execute):
- (PrintExpectations):
- (PrintExpectations.__init__):
- (PrintExpectations.execute):
- (PrintExpectations._filter_tests):
- (PrintExpectations._format_lines):
- (PrintExpectations._model):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (TestPrintExpectations): Added.
- * Scripts/webkitpy/tool/mocktool.py:
- (MockOptions):
- (MockOptions.__init__):
- (MockOptions.update): Added.
-
-2012-04-10 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: refactor handling of --platform and related options
- https://bugs.webkit.org/show_bug.cgi?id=83525
-
- Reviewed by Adam Barth.
-
- This change moves to centralize handling of --platform, --debug,
- --gtk, and other similar flags into a central place next to the
- code that actually uses those flags in PortFactory to get the
- right Port object.
-
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (port_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintBaselines.__init__):
-
-2012-04-10 Ojan Vafai <ojan@chromium.org>
-
- Add a chromeless view to the individual tests view
- https://bugs.webkit.org/show_bug.cgi?id=83541
-
- Reviewed by Daniel Bates.
-
- This is the view suitable to inlining in other contexts (e.g. garden-o-matic).
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testHtmlForIndividualTestOnAllBuilders):
- (testHtmlForIndividualTestOnAllBuildersWithChromeNonexistant):
- (testHtmlForIndividualTestOnAllBuildersWithChrome):
- (testHtmlForIndividualTestOnAllBuildersWithChromeWebkitMaster):
- (testHtmlForIndividualTests):
- (htmlEscape):
- (runTests):
-
-2012-04-10 Dirk Pranke <dpranke@chromium.org>
-
- remove 'win' from chromium-win, chromium-linux fallback paths
- https://bugs.webkit.org/show_bug.cgi?id=83613
-
- Reviewed by Ojan Vafai.
-
- The chromium ports no longer need to look at the apple 'win'
- directory for baseline results.
-
- Also remove the old '-gpu-' entries from the flakiness dashboard
- map since I'm touching lines nearby.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2012-04-10 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt][WK2] Manage graphics buffers in the web process
- https://bugs.webkit.org/show_bug.cgi?id=78675
-
- Enable graphics surfaces on Mac for Qt.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-04-10 Patrick Gansterer <paroga@webkit.org>
-
- [CMake] Enable USE_FOLDERS property
- https://bugs.webkit.org/show_bug.cgi?id=83571
-
- Reviewed by Daniel Bates.
-
- Setting the FOLDER property on targets gives more structure
- to the generated Visual Studio solutions.
- This does not affect other CMake generators.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * EWebLauncher/CMakeLists.txt:
- * WinCELauncher/CMakeLists.txt:
-
-2012-04-10 David Dorwin <ddorwin@chromium.org>
-
- Add Encrypted Media Extensions methods to HTMLMediaElement
- https://bugs.webkit.org/show_bug.cgi?id=82971
-
- Reviewed by Adam Barth.
-
- The extensions are behind the ENABLE(ENCRYPTED_MEDIA) feature define.
- Implementation is based on v0.1 of the draft proposal at
- http://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media.html.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-04-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] Catch the "title,changed" signal
- https://bugs.webkit.org/show_bug.cgi?id=82174
-
- Reviewed by Gustavo Noronha Silva.
-
- EFL's DumpRenderTree now catches the "title,changed" signal, and
- prints out the needed information.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onTitleChanged):
-
-2012-04-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] DRT should support LayoutTestController's willSendRequestReturnsNull()
- https://bugs.webkit.org/show_bug.cgi?id=82443
-
- Reviewed by Philippe Normand.
-
- EFL's DRT needs to support LayoutTestController's
- willSendRequestReturnsNull() and return NULL when expected. This
- allows for several tests to be removed from the skip list.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWillSendRequest):
-
-2012-04-10 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] LayoutTestController needs implementation of addUserStyleSheet
- https://bugs.webkit.org/show_bug.cgi?id=82446
-
- Adding missing implementation addUserStyleSheet to EFL's LayoutTestController
- so that we can unskip related tests from the skip list.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addUserStyleSheet): Implemented.
-
-2012-04-10 Philip Rogers <pdr@google.com>
-
- Adding myself to committers.py!
-
- Unreviewed update to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-10 Dinu Jacob <dinu.jacob@nokia.com>
-
- [Qt][WK2] Title in MiniBrowser is not updated for a page with no title
- https://bugs.webkit.org/show_bug.cgi?id=82483
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Set window title to default if there is no page title.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::onTitleChanged):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
-
-2012-03-23 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] Implement PageClient::isViewWindowActive()
- https://bugs.webkit.org/show_bug.cgi?id=81143
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix the WrapperWindow from our PlatformWebView
- so it correctly creates the platform related
- stuff for QWindow, which is not created unless
- QWindow::setVisible() or QWindow::show() are called.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-04-10 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] TestNetscapePlugin is broken
- https://bugs.webkit.org/show_bug.cgi?id=83024
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- Fix X11 availability check. embedded is always true with QPA.
- * Tools.pro:
- Build the test plugin if plugins are enabled for WebKit2.
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
- Added a convenience function to determine availability
- of X11 libraries.
-
-2012-04-10 Patrick Gansterer <paroga@webkit.org>
-
- [WIN] Fix build without precompiled header.
-
- * DumpRenderTree/cg/ImageDiffCG.cpp: Define max as max as we do for min.
-
-2012-04-10 Arko Saha <arko@motorola.com>
-
- Unreviewed: adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-09 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- Unreviewed: adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r113656.
- http://trac.webkit.org/changeset/113656
- https://bugs.webkit.org/show_bug.cgi?id=83542
-
- test is broken on chromium-win (Requested by simonjam on
- #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::dispatchIntent):
-
-2012-04-09 Takashi Toyoshima <toyoshim@chromium.org>
-
- Update pywebsocket to 0.7.4.
- https://bugs.webkit.org/show_bug.cgi?id=83461
-
- Reviewed by Kent Tamura.
-
- This version supports TLS by using ssl in addition to pyOpenSSL.
- Other functional difrerences from 0.7.2 are:
- - strict Sec-WebSocket-Key validation conforming RFC 4648
- - compression ratio logging in debug
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_pywebsocket):
-
-2012-04-09 Dirk Pranke <dpranke@chromium.org>
-
- add a webkit-patch print-baselines command
- https://bugs.webkit.org/show_bug.cgi?id=83348
-
- Reviewed by Adam Barth.
-
- This adds a simple 'print-baselines' command to webkit-patch
- that can be used in one of two forms: to print where the
- baselines for a given test (or set of tests) on a single port
- will be found, or to generate a report for multiple ports.
-
- Example of the former:
-
- $ webkit-patch print-baselines fast/html/keygen.html
- // For mac-snowleopard
- platform/mac/fast/html/keygen-expected.txt
- platform/mac/fast/html/keygen-expected.png
- $
-
- The latter is most useful for finding out which fallback dirs are
- used by which ports for which tests, for example,
- 'chromium-mac-leopard' uses 100 results from 'platform/mac/leopard'.
- No example output is given because the reports are pretty wordy :).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_extensions): Added.
- (Port.expected_baseline_dict): Added.
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintBaselines):
- (PrintBaselines.__init__):
- (PrintBaselines.execute):
- (PrintBaselines._print_baselines):
- (PrintBaselines._platform_for_path):
-
-2012-04-09 Florin Malita <fmalita@chromium.org>
-
- Unreviewed: adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-09 Ming Xie <mxie@rim.com>
-
- [BlackBerry] Allow simulator to use GLES2 acceleration
- https://bugs.webkit.org/show_bug.cgi?id=81672
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments):
-
-2012-04-09 Dana Jansens <danakj@chromium.org>
-
- Mark myself as a committer
- https://bugs.webkit.org/show_bug.cgi?id=83510
-
- Reviewed by Adrienne Walker.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-09 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is failing to upload test results on the chromium-mac-leopard bots
- https://bugs.webkit.org/show_bug.cgi?id=83230
-
- Unreviewed, build fix.
-
- It looks like the change in r113399 to use the per-request
- timeout variable didn't actually work, so I am removing the
- timeout code altogether and counting on the idea that upload
- just isn't likely to take that long and the timeouts and
- retransmits are largely unused and largely unnecessary. We'll
- see if this breaks anywhere else.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.__init__):
- (FileUploader._upload_data.callback):
- (FileUploader):
-
-2012-04-09 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Cleanup LayoutTestControllerBlackBerry.cpp
- https://bugs.webkit.org/show_bug.cgi?id=83469
-
- Reviewed by Dirk Schulze.
-
- Remove WTF:: prefixes and fix a warning with the length variable.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (jsStringRefToWebCoreString):
- (LayoutTestController::execCommand):
- (LayoutTestController::isCommandEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::counterValueForElementById):
- (LayoutTestController::overridePreference):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::findString):
-
-2012-04-09 Patrick Gansterer <paroga@webkit.org>
-
- Build fix for WinCE after r113570.
-
- * Scripts/build-webkit: Do not use FastMalloc for WinCE.
-
-2012-04-09 Eric Carlson <eric.carlson@apple.com>
-
- Subscribe eric.carlson@apple.com to Media-related changes
- https://bugs.webkit.org/show_bug.cgi?id=83421
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-04-09 Martin Robinson <mrobinson@igalia.com>
-
- check-webkit-style should ignore NULL usage in gtk_style_context_get_style
- https://bugs.webkit.org/show_bug.cgi?id=83412
-
- Reviewed by David Levin.
-
- Accept NULL as an argument for gtk_style_context_get_style, because it's
- used as a sentinel in a variable argument list.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_null): Add an exception.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_null_false_zero): Add a test for the exception.
-
-2012-04-09 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: use the filesystem object properly in fileuploader
- https://bugs.webkit.org/show_bug.cgi?id=83326
-
- Reviewed by Adam Barth.
-
- We should be using the filesystem object rather than the codecs
- object.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.upload_as_multipart_form_data):
-
-2012-04-09 Eric Seidel <eric@webkit.org>
-
- Enable webkit_unit_tests for commit queue and EWS while tracking failures
- https://bugs.webkit.org/show_bug.cgi?id=83329
-
- Unreviewed. Add a missing import to unbreak all the Chromium EWS/CQ bots. :)
-
- line 62, in _create_unit_test_results
- return UnitTestResults.results_from_string(results_xml)
- NameError: global name 'UnitTestResults' is not defined
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_create_unit_test_results):
-
-2012-04-08 Adam Barth <abarth@webkit.org>
-
- The port object is missing unit_tests_results_path
- https://bugs.webkit.org/show_bug.cgi?id=83448
-
- Unreviewed.
-
- This is causing the cr-linux-ews to throw an exception.
-
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.unit_tests_results_path):
-
-2012-04-07 Patrick Gansterer <paroga@webkit.org>
-
- [CMake] Cleanup WTF include directories
- https://bugs.webkit.org/show_bug.cgi?id=82716
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * WinCELauncher/CMakeLists.txt:
-
-2012-04-07 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Add Battery Status API support
- https://bugs.webkit.org/show_bug.cgi?id=82615
-
- Reviewed by George Staikos.
-
- Enable BATTERY_STATUS.
-
- * Scripts/build-webkit:
-
-2012-04-06 Ami Fischman <fischman@chromium.org>
-
- Subscribe feature-media-reviews@c.o to Media-related changes.
- https://bugs.webkit.org/show_bug.cgi?id=83397
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-04-06 Adrienne Walker <enne@google.com>
-
- [chromium] Add virtual test suite for threaded compositing
- https://bugs.webkit.org/show_bug.cgi?id=82263
-
- Reviewed by James Robinson.
-
- Add compositing/visibility as a virtual test suites to test threaded
- compositing with. This is a reasonable smoke test of 9 tests, none of
- which have any expectations in the non-threaded case.
-
- To fix many of the remaining tests in this virtual test suite, there
- will need to be some serious refactoring to merge the conflict between
- the way CCScheduler wants to draw frames and the way DRT also wants to
- control things. So, in the short term, enable a few simple tests that
- are known to be passing.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-04-06 Enrica Casucci <enrica@apple.com>
-
- Provide Obj-C private API to simplify markup.
- https://bugs.webkit.org/show_bug.cgi?id=83334
- <rdar://problem/11033861>
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SimplifyMarkup.mm: Added.
- (-[SimplifyMarkupTest webView:didFinishLoadForFrame:]):
- * TestWebKitAPI/Tests/mac/verboseMarkup.html: Added.
-
-2012-04-06 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests: fix bugs in 'mock' drt implementation
- https://bugs.webkit.org/show_bug.cgi?id=83341
-
- Reviewed by Eric Seidel.
-
- The current implementation crashed in some circumstances for
- reference tests and files that were missing expected results.
- This patch fixes those cases and adds more unit tests; it is a
- precursor to adding unit tests each port that actually uses this
- code, in order to get better coverage of the port/*
- implementations.
-
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (parse_options):
- (MockDRT.input_from_line):
- (MockDRT.output_for_test):
- (MockDRT.run_one_test):
- (MockChromiumDRT.input_from_line):
- (MockChromiumDRT.output_for_test):
- (MockChromiumDRT.run_one_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTTest.make_input_output):
- (MockDRTTest.expected_output):
- (MockDRTTest):
- (MockDRTTest.assertTest):
- (MockDRTTest.test_missing_image):
- (MockDRTTest.test_missing_text):
- (MockDRTTest.test_reftest_match):
- (MockDRTTest.test_reftest_mismatch):
- (MockChromiumDRTTest.expected_output):
-
-2012-04-06 James Robinson <jamesr@chromium.org>
-
- Enable webkit_unit_tests for commit queue and EWS while tracking failures
- https://bugs.webkit.org/show_bug.cgi?id=83329
-
- Reviewed by Adam Barth.
-
- This adds a step to parse XML output from webkit_unit_tests and consider regressions in the PatchAnalysisTask so
- the commit queue and EWS can reject patches that cause regressions.
-
- * Scripts/webkitpy/common/config/ports.py:
- (ChromiumPort.run_webkit_unit_tests_command):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort.unit_tests_results_path):
- * Scripts/webkitpy/common/net/layouttestresults.py:
- (LayoutTestResults.__init__):
- (LayoutTestResults.failing_tests):
- (LayoutTestResults):
- (LayoutTestResults.add_unit_test_failures):
- * Scripts/webkitpy/common/net/unittestresults.py: Copied from Tools/Scripts/webkitpy/tool/steps/runtests_unittest.py.
- (UnitTestResults):
- (UnitTestResults.results_from_string):
- * Scripts/webkitpy/common/net/unittestresults_unittest.py: Added.
- (UnitTestResultsTest):
- (UnitTestResultsTest.test_nostring):
- (UnitTestResultsTest.test_emptystring):
- (UnitTestResultsTest.test_nofailures):
- (test_onefailure):
- (test_multiple_failures_per_test):
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (MockCommitQueue.test_results):
- (MockCommitQueue.archive_last_test_results):
- (FailingTestCommitQueue.test_results):
- (test_flaky_test_failure):
- (test_failed_archive):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- (LayoutTestResultsReader._create_unit_test_results):
- (LayoutTestResultsReader.results):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_missing_layout_test_results):
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- (PatchAnalysisTaskDelegate.test_results):
- (PatchAnalysisTaskDelegate.archive_last_test_results):
- (PatchAnalysisTask._test):
- (PatchAnalysisTask._build_and_test_without_patch):
- (PatchAnalysisTask._test_patch):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem.test_results):
- (AbstractEarlyWarningSystem.archive_last_test_results):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._test_testing_ews):
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue.test_results):
- (CommitQueue.archive_last_test_results):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest.test_commit_queue):
- (test_rollout):
- (test_manual_reject_during_processing):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_webkit_run_unit_tests):
-
-2012-04-06 Aaron Colwell <acolwell@chromium.org>
-
- Enable MediaSource feature for DumpRenderTree so
- MediaSource LayoutTests will pass for Chromium.
- https://bugs.webkit.org/show_bug.cgi?id=83053
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-04-06 George Staikos <staikos@webkit.org>
-
- Turn on vibration support for BlackBerry.
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit:
-
-2012-04-06 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10912476> HiDPI: Have canvas use a hidpi backing store, but downsample upon access
-
- Reviewed by Sam Weinig.
-
- * Scripts/build-webkit: Added high-dpi-canvas option to control ENABLE_HIGH_DPI_CANVAS.
-
-2012-04-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is failing to upload test results on the chromium-mac-leopard bots
- https://bugs.webkit.org/show_bug.cgi?id=83230
-
- Reviewed by Ojan Vafai.
-
- This should fix things properly; FileUploader() was setting the
- socket default timeout value, and apparently that doesn't work
- properly with urllib. Also, the class had a bad try/finally
- block that was causing the exceptions to be swallowed :(.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.__init__):
- (FileUploader._upload_data.callback):
- (FileUploader):
- (FileUploader._upload_data):
- * Scripts/webkitpy/common/net/networktransaction.py:
- (NetworkTimeout.__str__):
- (NetworkTransaction.run):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.upload_json_files):
-
-2012-04-05 Patrick Gansterer <paroga@webkit.org>
-
- [Qt] Correct <wtf/*.h> include paths.
- https://bugs.webkit.org/show_bug.cgi?id=83270
-
- Reviewed by Eric Seidel.
-
- Modify the #include declerations so that the
- wtf types are included using the full path.
-
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
-
-2012-04-05 Philippe Normand <pnormand@igalia.com>
-
- gtk_unittest.GtkPortTest.test_get_crash_log failing on windows
- https://bugs.webkit.org/show_bug.cgi?id=83176
-
- Reviewed by Tony Chang.
-
- Refactored the test to use os.path.join() to specify the
- core_pattern value of the empty crash log mock.
-
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest):
- (GtkPortTest.assertLinesEqual):
- (GtkPortTest.test_get_crash_log):
- (_mock_gdb_output):
-
-2012-04-05 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Fix includes after QtDeclarative -> QtQML renaming
- https://bugs.webkit.org/show_bug.cgi?id=82195
-
- Relanding r112651, because Qt5 is updated everywhere.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/main.cpp:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-04-05 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] WK1/WK2 layout test results are diverging
- https://bugs.webkit.org/show_bug.cgi?id=82720
-
- The resolving of default font families was altered in Qt5.
- This directly affects the font picked by DRT for layout
- tests. Since we want to keep the Qt4 and Qt5 results in line,
- we can trick DRT in picking the same font as before for now.
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- (WebKit::initializeTestFonts):
-
-2012-04-05 Kinuko Yasuda <kinuko@chromium.org>
-
- Expose DataTransferItem.getAsEntry() to allow users access dropped files as FileEntry
- https://bugs.webkit.org/show_bug.cgi?id=82592
-
- Reviewed by David Levin.
-
- Added filesystem hook support in EventSender.beginDragWithFiles() for DumpRenderTree.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::beginDragWithFiles):
-
-2012-04-04 Tim Horton <timothy_horton@apple.com>
-
- [mac] WKTR should always keep its windows offscreen
- https://bugs.webkit.org/show_bug.cgi?id=83244
- <rdar://problem/11188764>
-
- Reviewed by Simon Fraser.
-
- We don't want to allow windows onto the main display; intercept attempts to
- change WebKitTestRunnerWindow's frame origin and prevent it from happening.
-
- Also keep around and respond with a new "fake" origin, in case someone is
- expecting it to change (I couldn't find any tests that expected this, however).
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[WebKitTestRunnerWindow setFrameOrigin:]):
- (-[WebKitTestRunnerWindow setFrame:display:animate:]):
- (-[WebKitTestRunnerWindow setFrame:display:]):
- (-[WebKitTestRunnerWindow frame]):
-
-2012-04-04 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo introduced in r113271.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader._upload_data.callback):
- (FileUploader):
-
-2012-04-04 Scott Graham <scottmg@google.com>
-
- [Chromium, DRT] Bounds check indices on gamepadController
- https://bugs.webkit.org/show_bug.cgi?id=83192
-
- Invalid test data would cause bad array accesses. Add simple checks to
- ignore such invalid data.
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/GamepadController.cpp:
- (GamepadController::connect):
- (GamepadController::disconnect):
- (GamepadController::setId):
- (GamepadController::setButtonCount):
- (GamepadController::setButtonData):
- (GamepadController::setAxisCount):
- (GamepadController::setAxisData):
-
-2012-04-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is failing to upload test results on the chromium-mac-leopard bots
- https://bugs.webkit.org/show_bug.cgi?id=83230
-
- Reviewed by Ojan Vafai.
-
- More debugging info and a possible fix - stop messing with the
- default network timeout, and don't swallow URLErrors.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader._upload_data):
- * Scripts/webkitpy/common/net/networktransaction.py:
- (NetworkTransaction.run):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.upload_json_files):
-
-2012-04-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is failing to upload test results on the chromium-mac-leopard bots
- https://bugs.webkit.org/show_bug.cgi?id=83230
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.__init__):
- (FileUploader._upload_data.callback):
- (FileUploader):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._upload_json_files):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.upload_json_files):
-
-2012-04-04 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- WKTR needs to implement layoutTestController.setPageVisibility()
- https://bugs.webkit.org/show_bug.cgi?id=69554
-
- Reviewed by Simon Fraser.
-
- This patch implements the layoutTestController.setPageVisibility
- so WKTR supports the Page Visibility API implementation by using InjectedBundle
- to set the visibility state directly to Page.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPageVisibility):
- (WTR):
- (WTR::LayoutTestController::resetPageVisibility):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-04-04 Adam Barth <abarth@webkit.org>
-
- [Chromium] TestWebKitAPI links in WebCore twice
- https://bugs.webkit.org/show_bug.cgi?id=83177
-
- Reviewed by Dimitri Glazkov.
-
- This is causing link errors in the Windows component build. This patch
- moves the dependencies a bit lower down in the dependency diagram in
- the hopes of removing the duplicate symbols.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-04-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] Catch the "resource,request,willsend" signal
- https://bugs.webkit.org/show_bug.cgi?id=82192
-
- Reviewed by Gustavo Noronha Silva.
-
- EFL's DumpRenderTree now catches the "resource,request,willsend"
- signal in order to implement the "Blocked access to external URL"
- behavior and avoid potential network-related timeouts in the tests.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onWillSendRequest):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-04-04 Patrick Gansterer <paroga@webkit.org>
-
- [EFL][DRT] Correct <wtf/*.h> include paths.
- https://bugs.webkit.org/show_bug.cgi?id=83168
-
- Reviewed by Eric Seidel.
-
- Modify the #include declarations so that the
- wtf types are included using the full path.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
-
-2012-04-04 Philippe Normand <pnormand@igalia.com>
-
- gtk_unittest.GtkPortTest.test_get_crash_log failing on windows
- https://bugs.webkit.org/show_bug.cgi?id=83176
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (test_get_crash_log): Skip the test on non-linux platforms.
-
-2012-04-04 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] DRT support for computedStyleIncludingVisitedInfo
- https://bugs.webkit.org/show_bug.cgi?id=82190
-
- Adding missing implementation computedStyleIncludingVisitedInfo to EFL's
- LayoutTestController so that we can unskip related tests from the skip list.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
-
-2012-04-04 Raphael Kubo da Costa <rakuco@webkit.org>
-
- Unreviewed; update my email address once again in the committers
- and watch list.
-
- * Scripts/webkitpy/common/config/committers.py: Prefer my
- webkit.org email over my FreeBSD.org one.
- * Scripts/webkitpy/common/config/watchlist: Ditto.
-
-2012-04-04 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] QtWebKit2 should support Page Visibility API
- https://bugs.webkit.org/show_bug.cgi?id=81164
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enabling Page Visiblity API for Qt WebKit2.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-04-04 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Make the WebView a subclass of Flickable
- https://bugs.webkit.org/show_bug.cgi?id=83033
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove workaround in MiniBrowser and the ScrollIndicator
- now that the WebView is a Flickable.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ScrollIndicator.qml:
- * WebKitTestRunner/Target.pri:
-
-2012-04-04 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r113144): It made run-webkit-tests always fail
- https://bugs.webkit.org/show_bug.cgi?id=83142
-
- Unreviewed trivial fix after r113144.
-
- * Scripts/run-webkit-tests:
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- I really hope this is the last build fix. Apparently exec doesn't quite arguments with
- double quotations on Windows. Use system instead.
-
- Hopefully, this won't break anything.
-
- * Scripts/run-webkit-tests:
-
-2012-04-03 Keishi Hattori <keishi@webkit.org>
-
- Disable ENABLE_DATALIST for now
- https://bugs.webkit.org/show_bug.cgi?id=82871
-
- Reviewed by Kent Tamura.
-
- * Scripts/build-webkit: Disabled ENABLE_DATALIST.
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Sigh... this isn't going well. I can't even reproduce this issue locally.
- Another speculative fix.
-
- * Scripts/run-webkit-tests:
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- I don't know why I'm so sloppy today. Another build fix.
-
- * Scripts/run-webkit-tests:
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Hopefully the last build fix for Chromium Windows.
-
- Explicitly execute new-run-webkit-tests and old-run-webkit-tests by python and perl.
-
- * Scripts/run-webkit-tests:
-
-2012-04-03 Dirk Pranke <dpranke@chromium.org>
-
- [Chromium] Lots of timeouts causing Mac10.6 to exit early.
- https://bugs.webkit.org/show_bug.cgi?id=83076
-
- Unreviewed, build fix (slightly reviewed by Simon Fraser and Eric Seidel, but not approved).
-
- Add logic to the apple mac and chromium mac code to not use
- too many workers; it looks like the xserves (and possibly mac
- pros) count hyperthreaded cores when they really shouldn't and
- we end up using too many workers at a time; this leads to tests
- thrashing and timing out.
-
- This change is a temporary fix to make the bots happy while I
- look into more profiling and other fixes.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (ChromiumMacPort.default_child_processes):
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.default_child_processes):
-
-2012-04-03 Simon Fraser <simon.fraser@apple.com>
-
- WebKitTestRunner's EventSender is leaky
- https://bugs.webkit.org/show_bug.cgi?id=83099
-
- Reviewed by Beth Dakin.
-
- Fix leaks of WKNumbers by using the adoptWK idiom, and make
- all the code consistent.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::mouseDown):
- (WTR::EventSendingController::mouseUp):
- (WTR::EventSendingController::mouseMoveTo):
- (WTR::EventSendingController::leapForward):
- (WTR::EventSendingController::keyDown):
- (WTR::EventSendingController::mouseScrollBy):
- (WTR::EventSendingController::addTouchPoint):
- (WTR::EventSendingController::updateTouchPoint):
- (WTR::EventSendingController::setTouchModifier):
- (WTR::EventSendingController::releaseTouchPoint):
- (WTR::EventSendingController::cancelTouchPoint):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix. Don't use old-run-webkit-tests on Chromium Windows bots.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- kill-old-processes should kill apache2 and httpd
- https://bugs.webkit.org/show_bug.cgi?id=83065
-
- Reviewed by Tony Chang.
-
- Kill apache2 and httpd on Mac and Linux (Windows uses lighttpd) to free up port 8000.
-
- * BuildSlaveSupport/kill-old-processes:
-
-2012-04-03 Tony Chang <tony@chromium.org>
-
- run the same test steps on test only bots as on build-and-test bots
- https://bugs.webkit.org/show_bug.cgi?id=83090
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (TestFactory.__init__):
-
-2012-04-03 Ami Fischman <fischman@chromium.org>
-
- Add a Media watchlist.
- https://bugs.webkit.org/show_bug.cgi?id=83071
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-04-03 Simon Fraser <simon.fraser@apple.com>
-
- Fix large leak in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=83084
-
- Reviewed by Beth Dakin.
-
- Fix a leak of the bimap backing store created when doing pixel and
- ref tests. This leak was causing serious thrash on the test bots.
-
- We don't need to allocate memory for CGBitmapContextCreate(); if we
- pass NULL, it will allocate and manage its own backing store.
-
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::createCGContextFromImage):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix after r113067. Close the zipfile after extracting all files so that we can remove it.
-
- * BuildSlaveSupport/built-product-archive:
- (unzipArchive):
-
-2012-04-03 Ojan Vafai <ojan@chromium.org>
-
- Give more human friendly error message when builders fail to load or have stale data.
- https://bugs.webkit.org/show_bug.cgi?id=83058
-
- Reviewed by Eric Seidel.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (addError):
- (addBuilderLoadErrors):
- (handleLocationChange):
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Again, a build fix after r113067. Don't call r113067 twice on the configuration build directory.
-
- * BuildSlaveSupport/built-product-archive:
- (extractBuiltProduct):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Yet another build fix after r113067. Don't trigger Chromium testers right away
- since they're now triggered by builders.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix after r113067 for Mac port.
- It turned out that archiving the entire build directory doesn't work.
-
- * BuildSlaveSupport/built-product-archive:
- (createZipManually):
- (createZip):
- (archiveBuiltProduct):
-
-2012-04-03 Mike Lattanzio <mlattanzio@rim.com>
-
- [BlackBerry] Expose CaseSensitive, Wrap, and HighlightAllMatches in WebPage::findNextString()
- https://bugs.webkit.org/show_bug.cgi?id=82643
-
- Update LayoutTestController to accomodate the new find API.
- It now provides caseSensitive functionality to DRT.
-
- Internal Review by Andy Chen.
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::findString):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix after r113067. CreateWebKitBuildDirectory step is no longer needed
- because download-built-product creates the build directory as needed.
-
- This step fails on Chromium Windows due to -p option not supported by Windows' native mkdir.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (TestFactory.__init__):
-
-2012-04-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r113067. Don't delete the build directory.
-
- * BuildSlaveSupport/built-product-archive:
- (extractBuiltProduct):
-
-2012-04-02 Ojan Vafai <ojan@chromium.org>
-
- Load all builder lists from the buildbot json
- https://bugs.webkit.org/show_bug.cgi?id=82998
-
- Reviewed by Adam Barth.
-
- Also, remove an unnecessary list of test types. Now we don't hard-code
- builder names anywhere and we only have a single hard-coded list of
- test types.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderMaster.prototype.logPath):
- (BuilderMaster.prototype.builderJsonPath):
- (requestBuilderList.xhr.onload):
- (requestBuilderList.xhr.onerror):
- (isChromiumDepsFyiGpuTestRunner):
- (isChromiumTipOfTreeGpuTestRunner):
- (isChromiumDepsGTestRunner):
- (isChromiumDepsCrosGTestRunner):
- (isChromiumTipOfTreeGTestRunner):
- (onBuilderListLoad):
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseCrossDashboardParameters):
- (currentBuilderGroupCategory):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testHtmlForTestsWithExpectationsButNoFailures):
- (testGenerateChromiumTipOfTreeGpuBuildersFromBuilderList):
- (testGenerateChromiumDepsGTestBuildersFromBuilderList):
- (testGenerateChromiumDepsCrosGTestBuildersFromBuilderList):
- (testGenerateChromiumTipOfTreeGTestBuildersFromBuilderList):
- * TestResultServer/static-dashboards/timeline_explorer.html:
-
-2012-04-02 Ryosuke Niwa <rniwa@webkit.org>
-
- Chromium testers should extract builds instead of building on their own
- https://bugs.webkit.org/show_bug.cgi?id=82996
-
- Reviewed by Tony Chang.
-
- Make Chromium builders triggger Chromium testers and make testers download and extract builds
- from the buildbot master instead of building binaries on their own.
-
- Add download-built-product to wrap curl used in the download-built-product step since Windows
- does not provide "curl" natively.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add new triggerables for Chromium testers and make
- Chromium builders trigger them. Also change the type of Chromium testers from NewBuildAndTest to Test.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DownloadBuiltProduct): Call download-built-product instead of curl.
- * BuildSlaveSupport/built-product-archive:
- (createZip): Don't zip the parent configuration build directory like "release" and "debug". While Mac port
- needs this behavior for compatibility reasons, Chromium Mac port doesn't want this behavior.
- (archiveBuiltProduct): Zip the configuration build directory on Mac port.
- (unzipArchive): Extracted. Use ditto on Mac, unzip on linux and cygwin, and zipfile package on Windows.
- (extractBuiltProduct): Refactor the code to use removeDirectoryIfExists and unzipArchive. Support Chromium.
- * BuildSlaveSupport/download-built-product: Added to wrap curl which isn't available on Windows.
-
-2012-04-03 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Tools/Scripts/run-gtk-tests should not force you to use the WebKit jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=82473
-
- Reviewed by Philippe Normand.
-
- Only use jhbuild if WebKitBuild/Dependencies exists (if update-webkitgtk-libs)
- was ever run.
-
- * gtk/run-with-jhbuild: Instead of using jhbuild unconditionally, first
- check if the user has ever run update-gtk-libs and, if so, then use jhbuild.
-
-2012-04-03 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] DRT support for setInteractiveFormValidationEnabled
- https://bugs.webkit.org/show_bug.cgi?id=82050
-
- Enable interactive form validation and unskip tests from the
- skip list.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-04-03 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, another test-webkitpy fix-up after r113037.
-
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py: Adapt mock
- crash dump depending on current environment.
-
-2012-04-03 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, test-webkitpy build fix after r113037.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._get_crash_log):
-
-2012-04-03 Philippe Normand <pnormand@igalia.com>
-
- [GTK] crash log reports support
- https://bugs.webkit.org/show_bug.cgi?id=81659
-
- Reviewed by Martin Robinson.
-
- Removed the daemontools crashmon/xvfb scripts and implemented the crash
- log reporting in the NRWT Gtk port. To get proper crash logs one
- needs to set the core pattern like this:
- echo "/path/to/cores/core-pid_%p-_-process_%e" > /proc/sys/kernel/core_pattern
- Then enable coredumps with "ulimit -c unlimited" and set the WEBKIT_CORE_DUMPS_DIRECTORY
- environment variable.
-
- * BuildSlaveSupport/gtk/README:
- * BuildSlaveSupport/gtk/crashmon/crashmon: Removed.
- * BuildSlaveSupport/gtk/crashmon/log/run: Removed.
- * BuildSlaveSupport/gtk/crashmon/run: Removed.
- * BuildSlaveSupport/gtk/daemontools-buildbot.conf:
- * BuildSlaveSupport/gtk/xvfb/log/run: Removed.
- * BuildSlaveSupport/gtk/xvfb/run: Removed.
- * Scripts/new-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver.stop):
- (GtkPort.show_results_html_file):
- (GtkPort):
- (GtkPort._get_gdb_output):
- (GtkPort._get_crash_log):
- (GtkPort._get_crash_log.match_filename):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest):
- (test_show_results_html_file):
- (assertLinesEqual):
- (_mock_gdb_output):
- (test_get_crash_log):
-
-2012-04-02 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Enable and connect the WebInspectorServer with WebKit2 pages.
- https://bugs.webkit.org/show_bug.cgi?id=73094
-
- Reviewed by Simon Hausmann.
-
- Enable developer extras on pages in MiniBrowser for Qt.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-04-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] LayoutTestController needs implementation of setDefersLoading
- https://bugs.webkit.org/show_bug.cgi?id=82890
-
- Reviewed by Philippe Normand.
-
- Implement setDefersLoading() in EFL's LayoutTestController so that the
- corresponding test case can be removed from the skip list.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setDefersLoading):
-
-2012-04-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] LayoutTestController needs implementation of goBack
- https://bugs.webkit.org/show_bug.cgi?id=81914
-
- Reviewed by Philippe Normand.
-
- Implement goBack() in EFL's LayoutTestController by calling
- ewk_frame_back().
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::goBack):
-
-2012-04-03 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL] LayoutTestController needs implementation of pageSizeAndMarginsInPixels
- https://bugs.webkit.org/show_bug.cgi?id=82589
-
- Add missing implementation for pageSizeAndMarginsInPixels to EFL's LayoutTestController
- in order to unskip printing/page-format-data.html
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::pageSizeAndMarginsInPixels):
-
-2012-04-03 Simon Pena <spena@igalia.com>
-
- [GTK] DRT missing didRunInsecureContent notification
- https://bugs.webkit.org/show_bug.cgi?id=59367
-
- Reviewed by Philippe Normand.
-
- Connect DumpRenderTree to WebFrame's "insecure-content-run", in both
- the main WebFrame or any other WebFrame created later. Added
- "didRunInsecureContent" notification in the callback in order to
- get the LayoutTests passing.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Connect
- to WebFrame's "insecure-content-run" signal and add
- didRunInsecureContent notification in the callback to get the
- LayoutTests passing.
- (didRunInsecureContent):
- (createWebView):
-
-2012-04-03 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- rebaseline-server: Make it possible to not launch a browser with the server.
- https://bugs.webkit.org/show_bug.cgi?id=82999
-
- Reviewed by Adam Barth.
-
- Add the `--no-show-results' option, which lets one decide not to
- launch a web browser when running the rebaseline server. This is
- especially useful if the default browser is not the wanted one, or
- if the rebaseline server page is already open.
-
- * Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
- (AbstractLocalServerCommand.__init__):
- (AbstractLocalServerCommand.execute):
-
-2012-04-02 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- EFL's LayoutTestController disableImageLoading implementation.
- https://bugs.webkit.org/show_bug.cgi?id=82848
-
- Reviewed by Hajime Morita.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::disableImageLoading):
-
-2012-04-02 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL] LayoutTestController needs implementation of isPageBoxVisible
- https://bugs.webkit.org/show_bug.cgi?id=82591
-
- Add missing implementation to isPageBoxVisible to EFL's LayoutTestController
- in order to unskip printing/page-format-data.html
-
- Reviewed by Hajime Morita.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::isPageBoxVisible):
-
-2012-04-02 Simon Fraser <simon.fraser@apple.com>
-
- run-webkit-tests with a relative --root causes tests to fail because DYLD_LIBRARY_PATH is not set
- https://bugs.webkit.org/show_bug.cgi?id=82962
-
- Reviewed by Dirk Pranke.
-
- Ensure that _build_path() returns an absolute path.
-
- Eric Seidel also had to deploy MockConfig in a bunch of places
- in order to correct previous testing errors where we were
- pretending that "Mock Output from child process" (returned by MockExecutive.run_command)
- was a real path. The real Config object calls run_command("webkit-build-directory")
- to read the WebKit build directory from the webkitdirs.pm perl code.
- MockConfig abstracts this away and always returns "/mock-build" during
- testing. This change is much larger than one would think necessary
- because of needing to deploy this MockConfig class.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_path):
-
-2012-04-02 Ojan Vafai <ojan@chromium.org>
-
- Fix snafu in r112971. We were never calling parseParameter for builder.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2012-04-02 Ojan Vafai <ojan@chromium.org>
-
- Generate the lists of all layout test builders from the buildbot json
- https://bugs.webkit.org/show_bug.cgi?id=82924
-
- Reviewed by Mihai Parparita.
-
- In order to make this work, cleaned up a lot of existing technical debt.
- -Got rid of expectations builder. This concept is outdated and just dead code.
- -Split hash parameter parsing into two functions. One for dashboard_base
- (crossDashboardParameters) and one for the specific dashboard html file
- (dashboardSpecificParameters). In the old world, parseParameters needed to
- be called twice and depended on it's own output the first time through.
- Now we only need to parse crossDashboardParameters first and crossDashboardParameters
- doesn't depend on the output of crossDashboardParameters.
- -Lots of variable/method renames due to the above.
- -g_defaultDashboardSpecificStateValues now has to list all possible hash parameters
- for that dashboard.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup):
- (BuilderGroup.prototype.setup):
- (jsonRequest.xhr.onload):
- (jsonRequest.xhr.onerror):
- (isWebkitTestRunner):
- (isChromiumWebkitTipOfTreeTestRunner):
- (isChromiumWebkitDepsTestRunner):
- (generateBuildersFromBuilderList):
- (onLayoutTestBuilderListLoad):
- (onErrorLoadingBuilderList):
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (handleValidHashParameterWrapper):
- (queryHashAsMap):
- (parseParameter):
- (parseCrossDashboardParameters):
- (parseDashboardSpecificParameters):
- (parseParameters):
- (diffStates):
- (defaultValue):
- (isLayoutTestResults):
- (isGPUTestResults):
- (currentBuilderGroupCategory):
- (currentBuilderGroup):
- (initBuilders):
- Now that we've split parameter parseing, these methods no longer need
- to take an optional state. They can always just use the global cross-dashboard state.
-
- (pathToBuilderResultsFile):
- (appendJSONScriptElementFor):
- (appendJSONScriptElements):
- (handleResourceLoadError):
- (haveJsonFilesLoaded):
- (combinedDashboardState):
- (setQueryParameter):
- (permaLinkURLHash):
- (toggleQueryParameter):
- (queryParameterValue):
- (selectHTML):
- (htmlForTestTypeSwitcher):
- (g_handleBuildersListLoaded):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testPlatformAndBuildType):
- (testSubstringList):
- (testHtmlForTestTypeSwitcherGroup):
- (testLookupVirtualTestSuite):
- (testBaseTest):
- (generateBuildersFromBuilderListHelper):
- (testGenerateChromiumWebkitTipOfTreeBuildersFromBuilderList):
- (testGenerateChromiumWebkitDepsBuildersFromBuilderList):
- (assertObjectsDeepEqual):
- (testQueryHashAsMap):
- (testDiffStates):
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2012-04-02 Tony Chang <tony@chromium.org>
-
- check-webkit-style errors when removing .png files
- https://bugs.webkit.org/show_bug.cgi?id=82933
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/patchreader.py:
- (PatchReader.check): Make sure the file exists and pass in a FileSystem() object (for mocking).
- * Scripts/webkitpy/style/patchreader_unittest.py:
- (test_check_patch_with_png_deletion):
-
-2012-04-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r112948.
- http://trac.webkit.org/changeset/112948
- https://bugs.webkit.org/show_bug.cgi?id=82961
-
- Someone else already checked in a similar change (Requested by
- sundiamonde on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._start):
-
-2012-04-02 Adam Barth <abarth@webkit.org>
-
- garden-o-matic isn't able to rebaseline audio failures
- https://bugs.webkit.org/show_bug.cgi?id=82957
-
- Reviewed by Chris Rogers.
-
- This patch just adds "wav" to the list of test suffixes and updates the
- unit tests to show that we're rebaselining audio tests results now too.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_updates_expectations_file):
-
-2012-04-02 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should let you listen to audio failures
- https://bugs.webkit.org/show_bug.cgi?id=82953
-
- Reviewed by Chris Rogers.
-
- Now that we've actually got an audio failure on the bots, we can clean
- up the last stray bugs. This patch doesn't have any tests because I'm
- lame.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
-
-2012-04-02 Stephanie Lewis <slewis@apple.com>
-
- run-webkit-tests --root fails if /usr/local/lib/libWebCoreTestSupport.dylib is not installed.
- https://bugs.webkit.org/show_bug.cgi?id=82552
-
- Reviewed by Dirk Pranke.
-
- Use DYLD_LIBRARY_PATH so we pick up the libWebCoreTestSupport.dylib located in the root.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._start):
-
-2012-04-02 Dirk Pranke <dpranke@chromium.org>
-
- NRWT is not printing out the builder it's uploading JSON files for
- https://bugs.webkit.org/show_bug.cgi?id=82834
-
- Reviewed by Ojan Vafai.
-
- Handle log messages of the form log.info("%s", arg) properly ...
- I didn't even know you could do that :).
-
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (_LogHandler.emit):
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (RegularTest.test_log_args):
- (VerboseTest.test_log_args):
-
-2012-04-02 Tim Horton <timothy_horton@apple.com>
-
- [mac] LayoutTestHelper crashes if there is no main display
- https://bugs.webkit.org/show_bug.cgi?id=82944
- <rdar://problem/11162954>
-
- Reviewed by Simon Fraser.
-
- If there's no main display attached, ColorSyncDeviceCopyDeviceInfo returns
- a null dictionary, so we shouldn't go ahead and try to read from it.
-
- * DumpRenderTree/mac/LayoutTestHelper.m:
- (installLayoutTestColorProfile):
-
-2012-04-02 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Set up plugin process on Unix
- https://bugs.webkit.org/show_bug.cgi?id=72121
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf: Reenable plugins
- and turn on plugin process.
-
-2012-04-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r112868, r112879, and r112881.
- http://trac.webkit.org/changeset/112868
- http://trac.webkit.org/changeset/112879
- http://trac.webkit.org/changeset/112881
- https://bugs.webkit.org/show_bug.cgi?id=82901
-
- "Build fail on bots." (Requested by kbalazs on #webkit).
-
- * MiniBrowser/gtk/GNUmakefile.am:
- * qmake/mkspecs/features/features.prf:
-
-2012-04-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Enable shadow-dom in build-webkit.
-
- Rubber-stamped by Gustavo Noronha Silva.
-
- * Scripts/build-webkit: Enable shadow-dom build, this is need to
- have a working build currently.
-
-2012-04-02 Andreas Kling <kling@webkit.org>
-
- Adding Zalan Bujtas to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-04-02 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Set up plugin process on Unix
- https://bugs.webkit.org/show_bug.cgi?id=72121
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf: Reenable plugins
- and turn on plugin process.
-
-2012-04-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r112651.
- http://trac.webkit.org/changeset/112651
- https://bugs.webkit.org/show_bug.cgi?id=82887
-
- It doesn't work with older Qt5 (Requested by Ossy on #webkit).
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/main.cpp:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-04-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Fix names of failed unit tests in Tools/Scripts/run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=82877
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner.run_tests): Use replace instead of lstrip to remove
- the programs_path from the full path of unit tests.
-
-2012-04-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip flaky unit tests.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-04-02 Ryosuke Niwa <rniwa@webkit.org>
-
- webkitpy rebaseline.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
-
-2012-04-01 Ryosuke Niwa <rniwa@webkit.org>
-
- perf-o-matic should store test results' units
- https://bugs.webkit.org/show_bug.cgi?id=82852
-
- Reviewed by Kentaro Hara.
-
- Include units in the results JSON.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._process_chromium_style_test_result):
- (PerfTestsRunner._process_parser_test_result):
-
-2012-04-01 Tony Tseung <tseung@apple.com>
-
- Composite Font References is a new established standard (ISO/IEC 14496-28:2012) for specifying
- composite fonts from existing physical fonts.
- <rdar://problem/10717370>
- https://bugs.webkit.org/show_bug.cgi?id=82810
-
- A new test font of this kind as been added to the test tools for running the webkit-tests
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Added new dependency SampleFont.sfont
-
- * DumpRenderTree/fonts/SampleFont.sfont: Added.
-
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- Added the Composite Font Referene sample font "Hiragino Maru Gothic Monospaced" entry to the fonts white-list
-
- (activateTestingFonts):
- Added the registration of the Composite Font Referene sample font
-
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
- Added the Composite Font Referene sample font "Hiragino Maru Gothic Monospaced" entry to the fonts white-list
-
- (WTR::activateFonts):
- Added the registration of the Composite Font Referene sample font
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- Added new dependency SampleFont.sfont
-
- * WebKitTestRunner/fonts/SampleFont.sfont: Added.
-
-2012-04-01 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Support the Network Information API
- https://bugs.webkit.org/show_bug.cgi?id=73528
-
- Reviewed by Adam Barth.
-
- Add network information API feature to build script.
-
- * Scripts/build-webkit:
-
-2012-03-31 Ojan Vafai <ojan@chromium.org>
-
- Generate the flakiness dashboard's list of webkit.org builders from the buildbot JSON
- https://bugs.webkit.org/show_bug.cgi?id=82839
-
- Reviewed by Adam Barth.
-
- Also, update various hard-coded lists for WIN7 and Lion ports.
- This is necessary since the new list of builders grabbed off the
- buildbot includes Lion.
-
- * TestResultServer/static-dashboards/builders.js:
- (generateWebkitBuildersFromBuilderList):
- (xhr.onreadystatechange):
- Don't use dashboard_base's request method to avoid layering violation.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
- (initBuilders):
- (haveJsonFilesLoaded):
- (g_handleBuildersListLoaded):
- Block loading the JSON files for each builder until we actually have a list of builders.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testPlatformAndBuildType):
- (testGenerateWebkitBuildersFromBuilderList):
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
- Delay generating the page until the builder list has loaded.
-
-2012-03-31 Ojan Vafai <ojan@chromium.org>
-
- If NRWT gets killed halfway through a run, it incorrectly reports tests that weren't run as passes
- https://bugs.webkit.org/show_bug.cgi?id=82799
-
- Reviewed by Eric Seidel.
-
- If we don't run a test, mark it as skipped.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._mark_interrupted_tests_as_skipped):
- (Manager._interrupt_if_at_failure_limits.interrupt_if_at_failure_limit):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_interrupt_if_at_failure_limits):
-
-2012-03-31 Ryosuke Niwa <rniwa@webkit.org>
-
- One more build fix after r112781 for Chromium Windows.
- Don't copy zip .idb files.
-
- * BuildSlaveSupport/built-product-archive:
- (copyBuildFiles):
-
-2012-03-31 Ryosuke Niwa <rniwa@webkit.org>
-
- Yet another build fix after r112781 for Chromium Windows.
- Run webkit-build-directory by perl explicitly.
-
- * BuildSlaveSupport/built-product-archive:
- (determineWebKitBuildDirectory):
-
-2012-03-31 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix the syntax error in master.cfg after r112734.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (unitTestsSupported):
-
-2012-03-31 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix after r112781.
-
- * BuildSlaveSupport/built-product-archive:
- (createZip):
-
-2012-03-31 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r112781.
-
- * BuildSlaveSupport/built-product-archive:
- (createZipManually):
- (createZip):
-
-2012-03-30 Ryosuke Niwa <rniwa@webkit.org>
-
- Chromium bots should upload archived built files
- https://bugs.webkit.org/show_bug.cgi?id=82666
-
- Reviewed by Tony Chang.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/built-product-archive:
- (main):
- (determineWebKitBuildDirectory): Instead of hard-coding WebKitBuild as the build outout directory,
- call out to webkit-build-directory.
- (removeDirectoryIfExists): Extracted.
- (copyBuildFiles): Added to avoid archiving useless intermedinate files.
- (createZipManually): Used in Chromium Windows where we don't execute python scripts inside cygwin.
- (createZipManually.addToArchive):
- (createZip): Extracted. Calls out to appropraite command line scripts or createZipManually.
- (archiveBuiltProduct): Add support for Chromium port.
- * Scripts/webkit-build-directory: Add support for --platform options.
-
-2012-03-30 Dan Bernstein <mitz@apple.com>
-
- Reverted r112767, because it caused many vertical text tests to fail.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/fonts/SampleFont.sfont: Removed.
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- (activateTestingFonts):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
- (WTR::activateFonts):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/fonts/SampleFont.sfont: Removed.
-
-2012-03-30 Malcolm MacLeod <malcolm.macleod@tshwanedje.com>
-
- [wx] Move wxWebKit API into WebKit namespace.
- https://bugs.webkit.org/show_bug.cgi?id=82740
-
- Reviewed by Kevin Ollivier.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (LayoutWebViewEventHandler::LayoutWebViewEventHandler):
- (LayoutWebViewEventHandler::bindEvents):
- (LayoutWebViewEventHandler::OnLoadEvent):
- (LayoutWebViewEventHandler::OnAlertEvent):
- (LayoutWebViewEventHandler::OnConfirmEvent):
- (LayoutWebViewEventHandler::OnPromptEvent):
- (LayoutWebViewEventHandler::OnConsoleMessageEvent):
- (LayoutWebViewEventHandler::OnReceivedTitleEvent):
- (LayoutWebViewEventHandler::OnWindowObjectClearedEvent):
- (LayoutWebViewEventHandler):
- (dumpFramesAsText):
- (dump):
- (MyApp::OnInit):
- * wx/browser/browser.cpp:
- (MyApp::OnInit):
-
-2012-03-30 Eli Fidler <efidler@rim.com>
-
- Enable OpenType Sanitizer for BlackBerry port.
- https://bugs.webkit.org/show_bug.cgi?id=82782
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments): add OTS to include path
-
-2012-03-30 Simon Fraser <simon.fraser@apple.com>
-
- run-webkit-tests needs to set DYLD_LIBRARY_PATH as well
- as DYLD_FRAMEWORK_PATH, so that libWebCoreTestSupport.dylib
- is found.
-
- <rdar://problem/11158581>
-
- Reviewed by Mark Rowe.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._start):
-
-2012-03-30 Simon Fraser <simon.fraser@apple.com>
-
- Disable run-api-tests on release mac builds
- https://bugs.webkit.org/show_bug.cgi?id=82788
-
- Reviewed by Ryosuke Niwa.
-
- TestWebKitAPI crashes every time in release builds currently
- (https://bugs.webkit.org/show_bug.cgi?id=82652) so disable
- run-api-tests on mac release builders.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (unitTestsSupported):
-
-2012-03-30 Chang Shu <cshu@webkit.org>
-
- Unreviewed. Update my email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-30 Chris Fleizach <cfleizach@apple.com>
-
- AX: Crash at WebCore::renderObjectContainsPosition(WebCore::RenderObject*, WebCore::Position const&)
- https://bugs.webkit.org/show_bug.cgi?id=82745
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (rangeForPositionCallback):
- (AccessibilityUIElement::rangeForPosition):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::rangeForPosition):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::rangeForPosition):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::rangeForPosition):
- (WTR):
-
-2012-03-30 David Barr <davidbarr@chromium.org>
-
- Split up top-level .gitignore and .gitattributes
- https://bugs.webkit.org/show_bug.cgi?id=82687
-
- Reviewed by Tor Arne Vestbø.
-
- * .gitattributes: Added.
- * .gitignore: Added.
- * DumpRenderTree/DumpRenderTree.gyp/.gitignore: Added.
- * TestWebKitAPI/TestWebKitAPI.gyp/.gitignore: Added.
-
-2012-03-30 Mihai Parparita <mihaip@chromium.org>
-
- Actually remove the ChromiumOS GTK builder, like r112673 said it would.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2012-03-30 Mihai Parparita <mihaip@chromium.org>
-
- Update ChromiumOS bot names in builders.js to reflect changes made by
- http://crrev.com/129835
-
- Also removes the ChromiumOS GTK builder, which was removed by
- http://crrev.com/129835
-
- * TestResultServer/static-dashboards/builders.js:
-
-2012-03-30 Vineet Chaudhary <rgf748@motorola.com>
-
- [GTK] Disable introspection build in the at-spi2-core module.
- https://bugs.webkit.org/show_bug.cgi?id=82729
-
- Reviewed by Philippe Normand.
-
- This change is a follow-up of bug 82395 which initially disabled for other modules of the set.
-
- * gtk/jhbuild.modules: Disable introspection.
-
-2012-03-30 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- Add a "preview" state to Page Visibility API implementation
- https://bugs.webkit.org/show_bug.cgi?id=81355
-
- Reviewed by Adam Barth.
-
- Updating the Page Visibility API implementation to the current spec version.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setPageVisibility):
-
-2012-03-30 Keishi Hattori <keishi@webkit.org>
-
- Change ENABLE_INPUT_COLOR to ENABLE_INPUT_TYPE_COLOR and enable it for chromium
- https://bugs.webkit.org/show_bug.cgi?id=80972
-
- Reviewed by Kent Tamura.
-
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-29 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- [Qt] Build fix by renameing QtDeclarative to QtQml in header calls.
- https://bugs.webkit.org/show_bug.cgi?id=82195
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/main.cpp:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-03-30 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Implement LayoutTestController::setMinimumTimerInterval
- https://bugs.webkit.org/show_bug.cgi?id=81220
-
- Add missing implementation setMinimumTimerInterval to EFL's
- LayoutTestController so that we can unskip related tests from the skip list.
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setMinimumTimerInterval):
-
-2012-03-29 Dan Bernstein <mitz@apple.com>
-
- Removed “Intel” from the Lion builders’ names.
-
- Rubber-stamped by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer._displayURLPrompt):
-
-2012-03-29 Mihai Parparita <mihaip@chromium.org>
-
- [Chromium] Add sharded ChromiumOS debug bots to builders.js
- https://bugs.webkit.org/show_bug.cgi?id=82639
-
- Reviewed by Eric Seidel.
-
- The bots were sharded by http://crrev.com/129613, update builders.js
- to reflect this.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2012-03-29 Dirk Pranke <dpranke@chromium.org>
-
- remove support for junit-style xml output from test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=82279
-
- Reviewed by Eric Seidel.
-
- This was added when we were looking into integrating w/ Jenkins
- rather than buildbot, but I believe that project got shelved, so
- this is unused. We can always add it back in later as necessary.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester._run_tests):
- * Scritps/webkitpy/thirdparty/__init__.py:
-
-2012-03-29 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests: crashes when it fails to decode a stack trace
- https://bugs.webkit.org/show_bug.cgi?id=82673
-
- Unreviewed, build fix.
-
- We are assuming the stdout/stderr output from the driver is utf-8
- encoded when we get stack traces; this may not be a valid
- assumption generally, but if we do get strings that aren't valid
- utf-8, we would crash. Now we will ignore any decoding errors.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_get_crash_log):
-
-2012-03-29 Simon Fraser <simon.fraser@apple.com>
-
- Scripts fail to detect when a tool crashes
- https://bugs.webkit.org/show_bug.cgi?id=82659
-
- Reviewed by Mark Rowe.
-
- Have exitStatus() detect when the process fail to exit cleanly
- (possibly because of a crash), and return a non-zero exit code
- in that case.
-
- * Scripts/VCSUtils.pm:
- (exitStatus):
-
-2012-03-29 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [GTK][EFL] run-javascriptcore-tests should be run through jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=82581
-
- Reviewed by Martin Robinson.
-
- Running Javascriptcore tests through jhbuild
- for consistency with run-webkit-tests and in order to
- avoid confusing libraries when facing regressions.
-
- * Scripts/run-javascriptcore-tests:
-
-2012-03-29 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: add --timing
- https://bugs.webkit.org/show_bug.cgi?id=82550
-
- Reviewed by Eric Seidel.
-
- This patch adds a --timing option that will display the time
- each test takes. It also removes the --silent option, since
- probably no one ever used it, and cleans up the logging
- option parsing code to be easier to follow.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester._configure):
- * Scripts/webkitpy/test/runner.py:
- (TestRunner.write_result):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest):
- (RunnerTest.test_timing):
-
-2012-03-29 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- HashMap<>::add should return a more descriptive object
- https://bugs.webkit.org/show_bug.cgi?id=71063
-
- Reviewed by Ryosuke Niwa.
-
- Update code to use AddResult instead of a pair.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::evaluateScriptInIsolatedWorld):
-
-2012-03-29 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: chromium: DRT --no-timeout option doesn't work.
- https://bugs.webkit.org/show_bug.cgi?id=82608
-
- Initial value for m_timeout was initialized in constructor and was overwritten in DRT::main.
- This was broken by r112354 and the sequence became opposite.
-
- Reviewed by Yury Semikhatsky.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::initialize):
-
-2012-03-29 Vineet Chaudhary <rgf748@motorola.com>
-
- Remove custom bindings form Internals.idl of attribute type Array.
- https://bugs.webkit.org/show_bug.cgi?id=82319
-
- Reviewed by Kentaro Hara.
-
- Remove JSInternalsCustom.cpp and V8InternalsCustom.cpp as no longer required.
-
- * GNUmakefile.am:
-
-2012-03-28 Mark Rowe <mrowe@apple.com>
-
- Fix --no-saved-state.
-
- Ignore the flag before Lion, rather than making it specific to Lion.
-
- Rubber-stamped by Dan Bernstein.
-
- * Scripts/webkitdirs.pm:
- (argumentsForRunAndDebugMacWebKitApp):
-
-2012-03-28 Dave Tharp <dtharp@codeaurora.org>
-
- Add dtharp to contributors list
- https://bugs.webkit.org/show_bug.cgi?id=82545
-
- Reviewed by Adam Barth.
-
- Adding dtharp as Contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-28 Stuart Eichert <stuart.eichert@palm.com>
-
- build-webkit : the word "pass" is spelled incorrectly as "passs"
- https://bugs.webkit.org/show_bug.cgi?id=82532
-
- Reviewed by Julien Chaffraix.
-
- Corrected spelling of the word "pass" in build-webkit.
-
- * Scripts/build-webkit:
-
-2012-03-28 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests doesn't log correctly after retrying failures
- https://bugs.webkit.org/show_bug.cgi?id=82541
-
- Unreviewed, build fix.
-
- r112189 introduced a regression where we would accidentally
- delete the log handler after we retried any failing tests - that
- meant that any log messages around uploading the results got
- dropped.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
-
-2012-03-28 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Build fix, move WTF back into JSCore target
- until issues with JSCore not linking in all WTF symbols are resolved.
-
- * waf/build/settings.py:
-
-2012-03-28 Simon Fraser <simon.fraser@apple.com>
-
- download-built-product build step should detect 404 errors
- https://bugs.webkit.org/show_bug.cgi?id=82491
-
- Reviewed by Ryosuke Niwa.
-
- Pass --fail to curl so that it reports 404 errors.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DownloadBuiltProduct): Pass --fail to curl so that it reports errors.
- * BuildSlaveSupport/built-product-archive:
- (extractBuiltProduct): Remove trailing whitespace.
-
-2012-03-28 Dirk Pranke <dpranke@chromium.org>
-
- flakiness dashboard should only keep the last 500 runs
- https://bugs.webkit.org/show_bug.cgi?id=82530
-
- Reviewed by Ojan Vafai.
-
- If a bot has an overly large amount of failing tests, then
- storing 750 runs' worth takes a lot of memory and CPU time to
- process and we end up getting killed by AppEngine; this cases
- data corruption and confusion down the road when we have to
- retry the upload of the data and the tests show up as multiple
- runs.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults.update_file):
-
-2012-03-28 Ryosuke Niwa <rniwa@webkit.org>
-
- extract-built-product build step should fail if unzipping fails
- https://bugs.webkit.org/show_bug.cgi?id=82493
-
- Reviewed by Simon Fraser.
-
- Forward non-zero exit code from subprocesses so that the master can detect any failures
- and bail out early.
-
- * BuildSlaveSupport/built-product-archive:
- (main):
-
-2012-03-28 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy should support files, directories, and packages as command line args
- https://bugs.webkit.org/show_bug.cgi?id=76765
-
- Reviewed by Adam Barth.
-
- This patch adds support for specifying files, directories, and
- packages to test-webkitpy along with the already existing
- support for modules, test classes, and individual test names.
-
- Also, fix a bug in filesystem_mock where we wouldn't normalize a
- path containing a reference to the current directory properly,
- for example, '/foo/./bar.py'.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.normpath):
- * Scripts/webkitpy/test/main.py:
- (Tester._configure_logging):
- (Tester._run_tests):
- * Scripts/webkitpy/test/test_finder.py:
- (TestDirectoryTree.find_modules):
- (TestDirectoryTree.subpath):
- (TestFinder.is_dotted_name):
- (TestFinder.find_names):
- (TestFinder):
- (TestFinder._find_names_for_arg):
- (TestFinder._find_in_trees):
- (TestFinder._default_names):
- * Scripts/webkitpy/test/test_finder_unittest.py:
- (TestFinderTest.setUp):
- (TestFinderTest.tearDown):
- (TestFinderTest.check_names):
- (TestFinderTest.test_default_names):
- (TestFinderTest):
- (TestFinderTest.test_paths):
-
-2012-03-28 Simon Fraser <simon.fraser@apple.com>
-
- Fix inspector tests when running in internal builds.
-
- <rdar://problem/11050694>
-
- Reviewed by Tim Hatcher.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-03-28 David Kilzer <ddkilzer@apple.com>
-
- Use xcrun to find nm and ranlib on OS X builds
- <http://webkit.org/b/82466>
-
- Reviewed by Dan Bernstein.
-
- * Scripts/build-webkit: Use xcrun to find ranlib.
- * Scripts/webkitdirs.pm:
- (determineNmPath): Added. Use xcrun to find nm on OS X.
- (nmPath): Added.
- * Scripts/webkitperl/features.pm:
- (libraryContainsSymbol): Use nmPath().
-
-2012-03-28 Ojan Vafai <ojan@chromium.org>
-
- Add history navigation to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=82495
-
- Reviewed by Dimitri Glazkov.
-
- Also, maintain scroll offsets when returning to a tab. This makes addressing
- expected failures considerably easier when dealing with below-the-fold tests.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- -Store the scrollTop before switching to a new tab and restore the appropriate scrollTop after
- switching.
- -Modify window.location with the tabName in the hash. Can't use pushState because this is served
- from a file URL and Chrome puts each different file URL in it's own origin.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- Remove the href so that clicking on the accordion item does not modify window.location.hash.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-03-28 Philippe Normand <pnormand@igalia.com>
-
- [GTK] generate-gtk-doc doesn't cope with custom build directory
- https://bugs.webkit.org/show_bug.cgi?id=82448
-
- Reviewed by Martin Robinson.
-
- Pass the product directory in generate-gtkdoc arguments from
- build-webkit.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/common.py:
- (get_build_path):
-
-2012-03-28 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add --skipped command line option to Tools/Scripts/run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=82341
-
- Reviewed by Martin Robinson.
-
- Add --skipped=skip|ignore|only command line option.
-
- * Scripts/run-gtk-tests:
- (TestRunner._test_cases_to_skip): Return the list of test cases
- to skip for the given test depending on the skipped action.
- (TestRunner._should_run_test): Decide whether to run the test or
- not depending on the skipped action.
- (TestRunner.run_tests): Only show the list of skipped tests when
- skipped action is 'skip'.
-
-2012-03-28 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Use gtester -s to skip individual test cases instead of unit tests as a whole
- https://bugs.webkit.org/show_bug.cgi?id=82333
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-gtk-tests:
- (TestRunner.SkippedTest): Add SkippedTest class to store more
- information about skipped tests.
- (TestRunner._setup_testing_environment): Use SkippedTest to add
- TestWebKitAccessibility to the skipped list.
- (TestRunner._find_skipped_test): Return the SkippedTest object for
- a given test path.
- (TestRunner._test_cases_to_skip): Returns the list of test cases
- that should be skipped for a given test path.
- (TestRunner._should_run_test): Helper funtion to decide whether
- the given test path should be run or not. Tests in the skipped
- list that don't have a list of failing test cases are not run at
- all. Tests in the skipped list that contain a list of test cases
- are run with gtester -s to skip the individual test cases.
- (TestRunner._run_test): Helper funtion to run a given test.
- (TestRunner.run_tests): Build the list of tests to run based on
- _should_run_test() and use helper function _run_test() to run
- every test.
-
-2012-03-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Couple of tests have different results on 64 bit and/or in debug mode compared to 32 bit and/or release mode
- https://bugs.webkit.org/show_bug.cgi?id=52810
-
- Reviewed by Simon Hausmann.
-
- Use SSE2 floating point math on 32 bit instead of the default
- 387 to make layout test result same on 32 and on 64 bit builds.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-03-28 Sergio Villar Senin <svillar@igalia.com>
-
- [Soup] DNS prefetching spams resolver, shoots self in the foot
- https://bugs.webkit.org/show_bug.cgi?id=41630
-
- Reviewed by Martin Robinson.
-
- Bump libsoup and glib dependencies.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-03-28 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Disable introspection for jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=82395
-
- Reviewed by Philippe Normand.
-
- * efl/jhbuild.modules: add --disable-introspection to all modules
- that support it
- * gtk/jhbuild.modules: ditto.
-
-2012-03-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed, fix API tests after adding full platforms. (r111658)
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (BuildAndTestFactory.__init__):
-
-2012-03-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed typo fix after r112383.
-
- * Scripts/run-qtwebkit-tests:
- (Main.check_crash_occurences):
-
-2012-03-28 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- [Qt] run-qtwebkit-tests should report crashes
- https://bugs.webkit.org/show_bug.cgi?id=76905
-
- Added checking of crashing tests. Now final summary includes the total number of crashing tests too.
- Made unit test for this modification by János Badics <jbadics@inf.u-szeged.hu>.
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunQtAPITests.commandComplete):
- (RunQtAPITests.evaluateCommand):
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (RunQtAPITestsTest):
- (test_failure):
- (test_crash):
- * Scripts/run-qtwebkit-tests:
- (Main.announce_results_html):
- (Main):
- (Main.check_crash_occurences):
- (Main.convert_to_stdout):
- (Main.convert_to_html):
-
-2012-03-28 Kwonjin Jeong <gram@company100.net>
-
- Add support for Intel compiler on Linux QT port.
- https://bugs.webkit.org/show_bug.cgi?id=81077
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf:
- Don't hide symbols when building with Intel compiler.
- The symbols are needed when building QtWebKit tests.
-
- * qmake/mkspecs/features/unix/icc.prf:
- Added to ignore icc-specific warnings.
- This feature is used with command-line arguments for build-webkit script.
-
-2012-03-28 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, trivial update-webkit-libs-jhbuild system call fix.
-
- * Scripts/update-webkitgtk-libs: This script is written in
- Perl. Not Python. So use perl vocabulary to refer to command line arguments.
-
-2012-03-28 Ryosuke Niwa <rniwa@webkit.org>
-
- kill-old-processes doesn't do anything on linux
- https://bugs.webkit.org/show_bug.cgi?id=82388
-
- Reviewed by Tony Chang.
-
- Kill cc1plus, ld, etc... on linux. Also ps aux + grep to kill old run-webkit-tests processes.
- This should help stabilizing Chromium linux bots.
-
- * BuildSlaveSupport/kill-old-processes:
-
-2012-03-28 Philippe Normand <pnormand@igalia.com>
-
- [GTK] jhbuild wrongly tricked into clean-up
- https://bugs.webkit.org/show_bug.cgi?id=82216
-
- Reviewed by Gustavo Noronha Silva.
-
- Save jhbuild{rc,.modules}.md5sum in Dependencies instead of the
- build tree. Also when checking if the jhbuild configuration
- changed use absolute md5sum paths.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
- (jhbuildConfigurationChanged):
- (buildAutotoolsProject):
-
-2012-03-28 Csaba Osztrogonác <ossy@webkit.org>
-
- kill-old-processes doesn't do anything on linux
- https://bugs.webkit.org/show_bug.cgi?id=82388
-
- One more attempt to disable kill-old-processes on the Qt bots not to kill each others.
-
- The platform in Factory comes from config.json, accordingly platform is fullplatform,
- for example: qt-4.8, qt-5.0-wk2. We have to check only the prefix of platform.
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (Factory.__init__):
-
-2012-03-28 Hao Zheng <zhenghao@chromium.org>
-
- Make Chromium port for Android use hardware gpu path default.
- https://bugs.webkit.org/show_bug.cgi?id=82033
-
- Reviewed by Dirk Pranke.
-
- Skip canvas tests, which are run in virtual gpu test suites.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.skipped_tests):
-
-2012-03-27 Csaba Osztrogonác <ossy@webkit.org>
-
- kill-old-processes doesn't do anything on linux
- https://bugs.webkit.org/show_bug.cgi?id=82388
-
- Disable kill-old-processes on the Qt bots not to kill each others.
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (Factory.__init__):
-
-2012-03-27 Hao Zheng <zhenghao@chromium.org>
-
- Handle DRT crash caused by Android OOM.
- https://bugs.webkit.org/show_bug.cgi?id=82310
-
- Reviewed by Tony Chang.
-
- When Android is OOM, it sends a SIGKILL (137) signal to DRT. DRT
- is stopped silently and regarded as crashed. Re-run the test for
- such crash.
-
- Add some debug log to NRWT.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.get_last_stacktrace):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver.run_test):
- (ChromiumAndroidDriver._get_drt_return_value):
-
-2012-03-27 Ojan Vafai <ojan@chromium.org>
-
- Fix expected results for some unittest failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
-
-2012-03-27 Adrienne Walker <enne@google.com>
-
- [chromium] Fix --enabled-threaded-compositing flag in DRT
- https://bugs.webkit.org/show_bug.cgi?id=82405
-
- Reviewed by James Robinson.
-
- --enable-threaded-compositing wasn't working because there was no way
- to set the value before it was used in the TestShell constructor.
-
- To avoid adding yet another boolean parameter to TestShell's
- constructor, add an explicit initialize function that can operate on
- any boolean settings that are set post-constructor.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- (TestShell::setTestShellMode):
-
-2012-03-27 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests: suppress debug output from run-safari on results file
- https://bugs.webkit.org/show_bug.cgi?id=82400
-
- Reviewed by Ryosuke Niwa.
-
- Send the run-safari output to /dev/null rather than the console.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.show_results_html_file):
-
-2012-03-27 Simon Fraser <simon.fraser@apple.com>
-
- Improve error reporting in run-javascriptcore-tests
- https://bugs.webkit.org/show_bug.cgi?id=82379
-
- Reviewed by Jessie Berlin.
-
- When the script dies, have it print out the reason for dying.
-
- * Scripts/run-javascriptcore-tests:
-
-2012-03-27 Eric Seidel <eric@webkit.org>
-
- Add Dave Barton to the Contributors list so I can more easily CC him on bugs
- https://bugs.webkit.org/show_bug.cgi?id=82373
-
- Reviewed by Ryosuke Niwa.
-
- Dave's committer-status in in-progress, so until then
- list him as a Contributor so at least I can more easily CC him on bugs.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-26 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [jhbuild] Prepend jhbuildrc's directory to sys.path instead of appending.
- https://bugs.webkit.org/show_bug.cgi?id=82252
-
- Reviewed by Gustavo Noronha Silva.
-
- Appending the directory containing common.py may be problematic if
- another path in sys.path also contains either a common.py or a
- common/ module, so prepend to select our version instead. This is
- the case with fail2ban, which has a common/ directory which may
- end up being in Python's default path.
-
- * efl/jhbuildrc:
- * gtk/jhbuildrc:
-
-2012-03-27 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: prepare for better test run output
- https://bugs.webkit.org/show_bug.cgi?id=82290
-
- Reviewed by Adam Barth.
-
- This code basically re-implements the output of the TextTestRunner default
- runner code from unittest, although the implementation is quite
- different, in preparation for changing the test output to be
- metered and possibly running in parallel.
-
- The output is almost identical to before, except that instead of
- logging "test_regular (webkitpy.main.RunnerTest) passed" we log
- "webkitpy.main.RunnerTest.test_regular passed". It has always
- annoyed me that they invert the names to be harder to read and
- so that you can't copy & paste back to the input for
- test-webkitpy.
-
- This patch is provided to add a skeleton for unit tests and for
- comparison to an upcoming patch that will actually add new
- functionality.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.__init__):
- (Tester._configure_logging):
- (Tester._run_tests):
- * Scripts/webkitpy/test/runner.py: Added.
- (TestRunner):
- (TestRunner.__init__):
- (TestRunner.test_name):
- (TestRunner.all_test_names):
- (TestRunner.run):
- (TestRunner.write_result):
- (TestRunner.write_summary):
- * Scripts/webkitpy/test/runner_unittest.py: Added.
- (FakeModuleSuite):
- (FakeModuleSuite.__init__):
- (FakeModuleSuite.__str__):
- (FakeModuleSuite.run):
- (FakeTopSuite):
- (FakeTopSuite.__init__):
- (FakeLoader):
- (FakeLoader.__init__):
- (FakeLoader.top_suite):
- (FakeLoader.loadTestsFromName):
- (RunnerTest):
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
-
-2012-03-27 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Build gnutls without p11-kit support
- https://bugs.webkit.org/show_bug.cgi?id=82212
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: pass --without-p11-kit to gnutls'
- configure, to avoid requiring that dependency, which is not used
- by libsoup and WebKit anyway
-
-2012-03-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Make debug build work on 32 bit
- https://bugs.webkit.org/show_bug.cgi?id=82331
-
- Use --no-keep-memory option of ld not to cache the symbol tables of input files in
- memory to avoid memory exhaustion during the linking phase for x86-debug builds.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/unix/default_post.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
-
-2012-03-23 Balazs Ankes <bank@inf.u-szeged.hu>
-
- Add png checking to check-webkit-style
- https://bugs.webkit.org/show_bug.cgi?id=75824
-
- Reviewed by NOBODY Tony Chang.
-
- * Scripts/webkitpy/style/checker.py:
- (_all_categories):
- (FileType):
- (CheckerDispatcher._should_skip_file_path):
- (CheckerDispatcher._file_type):
- (CheckerDispatcher._create_checker):
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherDispatchTest.test_none_paths):
- * Scripts/webkitpy/style/checkers/png.py: Added.
- (PNGChecker):
- (PNGChecker.__init__):
- (PNGChecker.check):
- (PNGChecker._config_file_path):
- * Scripts/webkitpy/style/checkers/png_unittest.py: Added.
- (MockSCMDetector):
- (MockSCMDetector.__init__):
- (MockSCMDetector.display_name):
- (MockSCMDetector.propget):
- (PNGCheckerTest):
- (PNGCheckerTest.test_init):
- (PNGCheckerTest.test_init.mock_handle_style_error):
- (PNGCheckerTest.test_check):
- (PNGCheckerTest.test_check.mock_handle_style_error):
- * Scripts/webkitpy/style/patchreader.py:
- (PatchReader.check):
-
-2012-03-27 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip GTK+ unit tests that fail in the bots
-
- * Scripts/run-gtk-tests:
- (TestRunner): Add failing tests to the skipped list.
-
-2012-03-27 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Unskip all GTK+ unit test.
-
- Currently, skipped tests contains the list of unit tests that have
- failed in one or more bots. In this moment it's not possible to
- skip just the test cases that fail, so the complete unit test is
- skipped when a single test case fails. For that reason, we don't
- know which test cases are actually failing for every skipped
- test. We are planning to land a patch to allow skipping individual
- test cases, but first we need to know which test cases are
- currently failing in the bots to skip them. So, this patch simply
- unskips all unit tests in order to watch the bots and get the list
- of test cases failing. Failing tests will be skipped again as soon
- as we have the new list of failing test cases.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Reset the list of skipped tests.
-
-2012-03-26 Scott Byer <scottbyer@chromium.org>
-
- Enable layout testing of the scroll animator.
- https://bugs.webkit.org/show_bug.cgi?id=81858
- Add a call to the InternalSettings that layout tests can use to
- turn on scroll animation. Enable animation updates for the
- Chromium platform DRT when scroll animation has been turned on in
- a test. This should be a no-op for all current layout tests.
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::serviceAnimation):
- (WebViewHost::scheduleAnimation):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-03-26 Dinu Jacob <dinu.jacob@nokia.com>
-
- [Qt][WK2] Support multi-file upload
- https://bugs.webkit.org/show_bug.cgi?id=81589
-
- Reviewed by Simon Hausmann.
-
- Modified filePicker to support multi-file upload.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/icons/checkbox_checked.png: Added.
- * MiniBrowser/qt/icons/checkbox_unchecked.png: Added.
- * MiniBrowser/qt/js/MultiSelect.js: Added.
- (values):
- (isSelected):
- (removeValue):
- * MiniBrowser/qt/qml/CheckBox.qml: Added.
- * MiniBrowser/qt/qml/FilePicker.qml:
-
-2012-03-26 Mark Hahnenberg <mhahnenberg@apple.com>
-
- Retry crashing tests serially at the end of NRWT on Apple Mac
- https://bugs.webkit.org/show_bug.cgi?id=82233
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.should_retry_crashes):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.should_retry_crashes):
-
-2012-03-26 Mark Hahnenberg <mhahnenberg@apple.com>
-
- NRWT should retry failures serially
- https://bugs.webkit.org/show_bug.cgi?id=82241
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests): Add another parameter to specify the number of workers to use.
- (Manager.run): Run the failures serially.
-
-2012-03-26 Adrienne Walker <enne@google.com>
-
- Allow expectations on directories in virtual test suites
- https://bugs.webkit.org/show_bug.cgi?id=82250
-
- Reviewed by Dirk Pranke.
-
- lookup_virtual_test_base was only returning valid results for files
- and not directories. Fix by falling back to the virtual test suite
- mapping if possible.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.lookup_virtual_test_base):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.skipped_tests):
- (TestPort.virtual_test_suites):
-
-2012-03-26 Dirk Pranke <dpranke@chromium.org>
-
- Fix duplicated ChangeLog entry from r112171.
-
- Unreviewed, build fix.
-
-2012-03-26 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove --worker-model flag
- https://bugs.webkit.org/show_bug.cgi?id=82112
-
- Reviewed by Adam Barth.
-
- The --worker-model=inline flag is basically redundant with the
- --child-processes=1 flag (technically, you could one run child
- process, but this is only useful for testing); this patch
- removes this flag, which simplifies things and enables more
- cleanup down the road.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- (Manager.print_config):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (make_broker):
- (FunctionTests.test_get__inline):
- (FunctionTests.test_get__processes):
- (_TestsMixin.setUp):
- (_TestsMixin.make_broker):
- (InlineBrokerTests.setUp):
- (MultiProcessBrokerTests.setUp):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase):
- (PortTestCase.make_port):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.default_child_processes):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (parse_args):
- (MainTest.test_batch_size):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_exception_raised):
- (MainTest.test_keyboard_interrupt):
- (MainTest.test_exit_after_n_crashes):
- (MainTest.assert_run_order):
- (MainTest.test_run_order__inline):
- (MainTest.test_virtual):
-
-2012-03-26 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: split test-finding code into a different module
- https://bugs.webkit.org/show_bug.cgi?id=82253
-
- Reviewed by Adam Barth.
-
- Per suggestion from abarth, this change splits all the
- filesystem-crawling, test-finding code in test-webkitpy out into
- a separate module and switches to using a FileSystem object.
- This makes things much more testable, so we also add tests :).
-
- We also add a realpath() method to the Filesystem object, since
- test-webkitpy needs that in order to be able to resolve symlinks
- properly to determine whether a file is under a particular tree
- or not.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem.realpath):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.realpath):
- * Scripts/webkitpy/test/main.py:
- (Tester.__init__):
- (Tester.add_tree):
- (Tester.run):
- (Tester._run_tests):
- (Tester._log_exception):
- * Scripts/webkitpy/test/test_finder.py: Added.
- (TestDirectoryTree):
- (TestDirectoryTree.__init__):
- (TestDirectoryTree.find_modules):
- (TestDirectoryTree.find_modules.file_filter):
- (TestDirectoryTree.to_module):
- (TestDirectoryTree.clean):
- (TestFinder):
- (TestFinder.__init__):
- (TestFinder.add_tree):
- (TestFinder.additional_paths):
- (TestFinder.clean_trees):
- (TestFinder.is_module):
- (TestFinder.to_module):
- (TestFinder.find_names):
- (TestFinder._exclude):
- * Scripts/webkitpy/test/test_finder_unittest.py: Added.
- (TestFinderTest):
- (TestFinderTest.setUp):
- (TestFinderTest.tearDown):
- (TestFinderTest.test_additional_system_paths):
- (TestFinderTest.test_is_module):
- (TestFinderTest.test_to_module):
- (TestFinderTest.test_clean):
- (TestFinderTest.test_find_names):
-
-2012-03-26 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [jhbuild] Use $MAKE if it is defined to build jhbuild itself.
- https://bugs.webkit.org/show_bug.cgi?id=82209
-
- Reviewed by Martin Robinson.
-
- Respecting the $MAKE environment variable when it is defined makes
- building jhbuild more portable, as some platforms may have GNU
- make as gmake, for example.
-
- * jhbuild/jhbuild-wrapper:
- (install_jhbuild):
-
-2012-03-26 Dirk Pranke <dpranke@chromium.org>
-
- add a Tree abstraction to test-webkitpy to better encapsulate things
- https://bugs.webkit.org/show_bug.cgi?id=82158
-
- Reviewed by Adam Barth.
-
- There are no functional changes in this patch, but adding a
- basic abstraction for the trees we are looking in for python
- tests will allow me to add some features later on more easily
- (like ignoring certain directories like webkitpy/thirdparty),
- and it makes things slightly less hard-coded.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/test/main.py:
- (Tester.__init__):
- (Tester):
- (Tester.add_tree):
- (Tester._parse_args):
- (Tester._configure):
- (Tester.run):
- (Tester._find_modules):
- (Tester._run_tests):
- (Tester._is_module):
- (Tester._log_exception):
- (TestDirectoryTree):
- (TestDirectoryTree.__init__):
- (TestDirectoryTree.find_modules):
- (TestDirectoryTree.clean):
-
-2012-03-26 Ojan Vafai <ojan@chromium.org>
-
- garden-o-matic should special case reftests
- https://bugs.webkit.org/show_bug.cgi?id=81812
-
- Reviewed by Adam Barth.
-
- On the examine page, don't show a rebaseline button for reftests.
- We still show it on the failure summary page because tests are grouped
- together. Long-term, we should make sure webkit-patch rebaseline-test
- never tries to rebaseline reftests.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-03-26 Dirk Pranke <dpranke@chromium.org>
-
- clean up NRWT logging/metering, be less verbose
- https://bugs.webkit.org/show_bug.cgi?id=73846
-
- Reviewed by Ojan Vafai.
-
- Re-land r112014 with a build fix for Python 2.6 compatibility.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_http_locking):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (AbstractWorker.run):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker._set_up_logging):
- (Worker):
- (Worker._set_up_host_and_port):
- (Worker.run):
- (Worker.cleanup):
- * Scripts/webkitpy/layout_tests/controllers/worker_unittest.py:
- (WorkerTest.test_default_platform_in_worker):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream):
- (MeteredStream.implements):
- (MeteredStream._erasure):
- (MeteredStream._ensure_newline):
- (MeteredStream.__init__):
- (MeteredStream.__del__):
- (MeteredStream.cleanup):
- (MeteredStream.write_throttled_update):
- (MeteredStream.write_update):
- (MeteredStream.write):
- (MeteredStream.writeln):
- (MeteredStream._erase_last_partial_line):
- (_LogHandler):
- (_LogHandler.__init__):
- (_LogHandler.emit):
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (RegularTest):
- (RegularTest.setUp):
- (RegularTest.tearDown):
- (RegularTest.time_fn):
- (RegularTest.test_logging_not_included):
- (RegularTest._basic):
- (RegularTest.test_basic):
- (RegularTest._log_after_update):
- (RegularTest.test_log_after_update):
- (TtyTest):
- (TtyTest.test_basic):
- (TtyTest.test_log_after_update):
- (VerboseTest):
- (VerboseTest.test_basic):
- (VerboseTest.test_log_after_update):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (parse_print_options):
- (Printer.__init__):
- (Printer.cleanup):
- (Printer.print_progress):
- (Printer.print_update):
- (Printer._write):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_printer):
- (Testprinter.test_print_progress):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_pause_before_testing):
-
-2012-03-26 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [jhbuild] Revert $MAKE environment hack introduced in r101929.
- https://bugs.webkit.org/show_bug.cgi?id=82234
-
- Reviewed by Martin Robinson.
-
- The problem it was supposedly fixing was fixed in jhbuild itself
- in git revision da8944d8ca987ca48c91b350257a530050406092, so we
- can remove the workaround added to the script.
-
- * jhbuild/jhbuild-wrapper:
- (install_jhbuild):
-
-2012-03-26 Leo Yang <leo.yang@torchmobile.com.cn>
-
- [BlackBerry] Skeleton code of AsyncFileSystemBlackBerry.cpp
- https://bugs.webkit.org/show_bug.cgi?id=82157
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit:
- Make ENABLE_FILE_SYSTEM default on for blackberry.
-
-2012-03-26 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [jhbuild] Explicitly disable DTrace when building glib.
- https://bugs.webkit.org/show_bug.cgi?id=82145
-
- Reviewed by Gustavo Noronha Silva.
-
- DTrace support is not really needed by WebKit, so disabling it
- helps avoid some build errors on more exotic platforms (such as
- FreeBSD).
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-03-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r111993.
- http://trac.webkit.org/changeset/111993
- https://bugs.webkit.org/show_bug.cgi?id=82184
-
- It broke layout and API tests and made WTR crash (Requested by
- Ossy on #webkit).
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-03-25 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Move WTF to its own static lib build.
-
- * waf/build/settings.py:
- (common_configure):
-
-2012-03-24 Chris Fleizach <cfleizach@apple.com>
-
- AX: Support solution to handle invalid ax text marker
- https://bugs.webkit.org/show_bug.cgi?id=82023
-
- Reviewed by Oliver Hunt.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (indexForTextMarkerCallback):
- (isTextMarkerValidCallback):
- (textMarkerForIndexCallback):
- (AccessibilityUIElement::indexForTextMarker):
- (AccessibilityUIElement::isTextMarkerValid):
- (AccessibilityUIElement::textMarkerForIndex):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::indexForTextMarker):
- (AccessibilityUIElement::textMarkerForIndex):
- (AccessibilityUIElement::isTextMarkerValid):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::indexForTextMarker):
- (WTR::AccessibilityUIElement::isTextMarkerValid):
- (WTR::AccessibilityUIElement::textMarkerForIndex):
- (WTR):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR):
- (WTR::AccessibilityUIElement::indexForTextMarker):
- (WTR::AccessibilityUIElement::isTextMarkerValid):
- (WTR::AccessibilityUIElement::textMarkerForIndex):
-
-2012-03-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r112014.
- http://trac.webkit.org/changeset/112014
- https://bugs.webkit.org/show_bug.cgi?id=82138
-
- Broke SnowLeopard, Chromium and GTK+ bots (Requested by kov on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_http_locking):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (AbstractWorker.run):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.safe_init):
- (Worker.run):
- (Worker.cleanup):
- * Scripts/webkitpy/layout_tests/controllers/worker_unittest.py:
- (WorkerTest.test_default_platform_in_worker):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream):
- (MeteredStream.is):
- (MeteredStream.__init__):
- (MeteredStream.write):
- (MeteredStream.update):
- (MeteredStream._overwrite):
- (MeteredStream._reset):
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (TestMeteredStream):
- (TestMeteredStream.test_regular):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (_configure_logging):
- (_restore_logging):
- (Printer.__init__):
- (Printer.cleanup):
- (Printer.print_progress):
- (Printer.print_update):
- (Printer._write):
- (Printer):
- (Printer._update):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (TestUtilityFunctions.assertEmpty):
- (TestUtilityFunctions):
- (TestUtilityFunctions.assertNotEmpty):
- (TestUtilityFunctions.assertWritten):
- (TestUtilityFunctions.test_configure_logging):
- (Testprinter.get_printer):
- (Testprinter.test_print_progress):
- (Testprinter.test_print_progress.mock_time):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_pause_before_testing):
-
-2012-03-24 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Fix the build after WTF move.
-
- * waf/build/build_utils.py:
- (get_excludes):
- (get_excludes_in_dirs):
- * waf/build/settings.py:
- (get_port_excludes):
- (common_configure):
-
-2012-03-24 Dirk Pranke <dpranke@chromium.org>
-
- clean up NRWT logging/metering, be less verbose
- https://bugs.webkit.org/show_bug.cgi?id=73846
-
- Reviewed by Ojan Vafai.
-
- This patch totally rewrites the metered_stream module and
- changes the way it and the printing module now interact with the
- logging subsystem.
-
- The printing module becomes a dumb layout_tests-specific wrapper around
- the metered stream. All of the intelligence of how and when to
- actually write (or erase) lines and how things interact with
- logging moves into the metered stream.
-
- As of now, anything written to the metered stream *bypasses the
- logging system*. If a logger is passed to the meter constructor,
- the metered stream will also attach a log handler so that all
- messages fed to the logger will also be written to the metered
- stream. This detangles the logic that used to exist where
- sometimes the meter would write to the logger and sometimes the
- logger would write to the meter.
-
- All of this makes the logic generic and reusable for
- test-webkitpy (coming in another patch). It also helps clarify
- what the mysterious "configure_logging" parameter to the printer
- constructor used to do (that parameter itself is gone now, and
- by default the printer and metered_stream will not ever touch
- the logging system; this makes a bunch of tests less fragile).
-
- All of the above should produce no user-visible changes.
-
- However, to also fix the bug in question, we change the message
- format in --verbose mode to %H:%M:%S.%frac %pid %message,
- eliminating the date, file:lineno, and level parameters. I am
- making this change at the same time because it would be
- difficult to write things consistently between the logs and the
- metered stream if we were still logging the file:lineno.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- Remove the configure_logging parameter
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- Use metered stream to configure the logging (we don't need a printer)
- and be careful about when and how we manipulate the log level
- and handlers on the root logger.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- Pass in the root logger so that log messages are formatted
- properly, and set the log level outside of any routines called
- by unit tests so as to not interfere.
- * Scripts/webkitpy/layout_tests/views/manager_worker_broker.py:
- remove a duplicate log message.
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- complete rewrite :).
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- complete rewrite :).
- * Scripts/webkitpy/layout_tests/views/printing.py:
- move the logging configuration into metered_stream, and also
- move the "when should I log progress messages" into metered stream.
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- remove tests that are no longer necessary.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- remove the configure_logging parameter.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- update the test; since the printer no longer writes to the log,
- we need to check what is written to the regular_output instead.
- (test_run_test_pause_before_testing):
-
-2012-03-24 Gustavo Noronha Silva <gns@gnome.org>
-
- Add myself and Martin Robinson to:
- * GStreamerGraphics
- * GtkWebKit2PublicAPI
- * SoupNetwork
- and to the newly created WebKitGTKTranslations.
-
- Rubber-stamped by Martin Robinson.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-03-24 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] Implement PageClient::isViewWindowActive()
- https://bugs.webkit.org/show_bug.cgi?id=81143
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix the WrapperWindow from our PlatformWebView
- so it correctly creates the platform related
- stuff for QWindow, which is not created unless
- QWindow::setVisible() or QWindow::show() are called.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-03-23 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: don't wait for safari to exit before exiting after showing the results file
- https://bugs.webkit.org/show_bug.cgi?id=81845
-
- Reviewed by Ryosuke Niwa.
-
- Prior to this change, if you ran new-run-webkit-tests and
- displayed the HTML results file at the end, we would block
- waiting for the user to quit the browser. There doesn't seem to
- be a need for that, and the Chromium ports don't do this.
-
- Also, update the mac tests to capture the output and be quiet :).
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- Make popen() testable, implement should_log for it.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- Silence some of the tests via outputcapture.
-
-2012-03-23 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] libgcrypt and p11-kit should not be in jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=82073
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (jhbuildConfigurationChanged): new function that isolates the
- jhbuild configuration change checking from the autogen logic.
- (mustReRunAutogen): code for the new function lived here.
- (buildAutotoolsProject): now calls jhbuildConfigurationChanged
- itself, and cleans up the jhbuild root if configuration has
- changed; it also forces autogen to be run in that case, to
- make sure the new libraries are used.
- * gtk/jhbuild.modules: removed libgcrypt and p11-kit.
- * jhbuild/jhbuild-wrapper:
- (ensure_jhbuild): this might be run inside a jhbuild environment,
- in which case aclocal fails when trying to use the now deleted
- aclocal directory in the jhbuild prefix, so work around that.
-
-2012-03-23 Ojan Vafai <ojan@chromium.org>
-
- garden-o-matic scrolls to the top of the page when you click an accordion item
- https://bugs.webkit.org/show_bug.cgi?id=82088
-
- Reviewed by Adam Barth.
-
- Check the scroll position and make sure that the clicked accordion item is visible.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2012-03-23 Dirk Pranke <dpranke@chromium.org>
-
- LayoutTestHelper could get torn down earlier (mostly to reset color profile)
- https://bugs.webkit.org/show_bug.cgi?id=80567
-
- Reviewed by Ryosuke Niwa.
-
- Move clean_up_run to occur right after we finish testing and
- before we start processing the results. Also makes set_up_run()
- and clean_up_run() private since there's no real need for
- callers to be aware of them.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._set_up_run):
- (Manager.run):
- (Manager._clean_up_run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_http_locking):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
-
-2012-03-23 Dean Jackson <dino@apple.com>
-
- Disable CSS_SHADERS in Apple builds
- https://bugs.webkit.org/show_bug.cgi?id=81996
-
- Reviewed by Simon Fraser.
-
- Default enableCSSShaders to be 0 on all builds that use
- this script. Use the flag to turn it back on.
-
- * Scripts/build-webkit:
-
-2012-03-23 Tony Chang <tony@chromium.org>
-
- [chromium] rename newwtf target back to wtf
- https://bugs.webkit.org/show_bug.cgi?id=82064
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-03-23 Jessie Berlin <jberlin@apple.com>
-
- Assertion failure in PlatformPasteboardMac constructor causing multiple tests to "crash" on
- the Lion Intel WebKit2 Debug bots.
- https://bugs.webkit.org/show_bug.cgi?id=81012.
-
- Rubber-stamped by Dan Bernstein.
-
- Add a step to kill the pasteboard server while we investigate what is causing these
- assertion failures (to get the bots green).
-
- * BuildSlaveSupport/kill-old-processes:
-
-2012-03-22 Martin Robinson <mrobinson@igalia.com>
-
- [check-webkit-style] Alphabetical sorting errors in headers are reported for the line after the first out of order header
- https://bugs.webkit.org/show_bug.cgi?id=81986
-
- Reviewed by David Levin.
-
- Track whether or not errors are filtered in error handlers. If an
- alphabetical sorting error is reported for a header and filtered, try
- reporting it for the other potential source of the error. This ensures
- that the style bot can still find new sorting errors in both potential
- situations:
-
- #include <foo.h> <-- 1. edited line
- #include <baz.h> <-- 2. edited line
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_include_line): Potentially report the error for both lines,
- if the first error is filtered.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Implement a new style of
- test that allows only reporting errors for certain lines. This verifies that
- when one line of an ordering error is filtered, the error is reported on the
- other line.
- (ErrorCollector.__init__):
- (ErrorCollector.__call__):
- (CppStyleTestBase.perform_lint):
- (CppStyleTestBase.perform_language_rules_check):
- (CppStyleTestBase.assert_language_rules_check):
- (OrderOfIncludesTest.test_check_alphabetical_include_order_errors_reported_for_both_lines):
- Added a new test that verifies that when one line of the two lines of an ordering
- error occur, the error is reported on the other line.
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:
- (MockErrorHandler.__call__): Report True because the error is handled.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (ErrorCollector.__call__): Ditto.
- * Scripts/webkitpy/style/checkers/watchlist_unittest.py:
- (MockErrorHandler.__call__): Ditto.
- * Scripts/webkitpy/style/checkers/xcodeproj_unittest.py:
- (TestErrorHandler.__call__): Ditto.
- * Scripts/webkitpy/style/checkers/xml_unittest.py:
- (MockErrorHandler.__call__): Ditto.
- * Scripts/webkitpy/style/error_handlers.py:
- (DefaultStyleErrorHandler.__call__): Report True if the error is handled
- and False if it is filtered.
-
-2012-03-23 Patrick Gansterer <paroga@webkit.org>
-
- Build fix for WinCE after r111778.
-
- * WinCELauncher/CMakeLists.txt:
-
-2012-03-23 Peter Beverloo <peter@chromium.org>
-
- Unreviewed buildfix for the Chromium Android builder.
-
- Disable the ImageDiff target for now. Android needs to build this for
- host rather than for target (as other configurations do), but since the
- WTF move the dependency chain got significantly more complicated.
-
- I'll work out a proper fix in the following bug, but since several
- things are broken due to this, this buildfix should be landed first.
- https://bugs.webkit.org/show_bug.cgi?id=82039
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-03-23 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- [EFL][DRT] Implement LayoutTestController's methods related with editing.
- https://bugs.webkit.org/show_bug.cgi?id=80136
-
- Reviewed by Ryosuke Niwa.
-
- Implements EFL's LayoutTestController methods e.i. setSmartInsertDeleteEnabled,
- setSelectTrailingWhitespaceEnabled.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setSmartInsertDeleteEnabled):
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
-
-2012-03-22 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Convert hasGrammarMarker to use Internals interface
- https://bugs.webkit.org/show_bug.cgi?id=82004
-
- Reviewed by Ryosuke Niwa.
-
- Remove hasGrammarMarker functions, because it is able to work in the
- cross-port way through the Internals interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-03-22 Adam Barth <abarth@webkit.org>
-
- sync-master-with-upstream creates non-linear git history
- https://bugs.webkit.org/show_bug.cgi?id=82006
-
- Reviewed by Julien Chaffraix.
-
- Previously this script would create a merge commit at the HEAD of
- origin/master, causing your fork of WebKit to diverge from upstream.
- The new version of this script pushes directly from upstream to origin
- (without round-tripping through any local branches), avoiding this
- problem.
-
- * Scripts/sync-master-with-upstream:
-
-2012-03-22 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed build fix. Add knowledge of the WTF project to
- the autotools build system scripts so that build-jsc works
- correctly for GTK+.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): handle the WTF project, build the
- libWTF.la target.
- (buildGtkProject): add WTF to the list of supported projects.
-
-2012-03-22 Eric Seidel <eric@webkit.org>
-
- Make svn-apply re-write JavaScriptCore/wtf to WTF/wtf
- https://bugs.webkit.org/show_bug.cgi?id=81984
-
- Reviewed by Adam Barth.
-
- * Scripts/VCSUtils.pm:
- (adjustPathForRecentRenamings):
-
-2012-03-22 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [CMake] Fix build-jsc after r111778 and r111797.
- https://bugs.webkit.org/show_bug.cgi?id=82001
-
- Reviewed by Filip Pizlo.
-
- Contrary to the comment in build-jsc, buildCMakeProjectOrExit()
- does return if no error occurred, and build-jsc failed with
- "building not defined for this platform".
-
- * Scripts/build-jsc: Always exit after caling
- buildCMakeProjectOrExit().
- * Scripts/webkitdirs.pm:
- (buildCMakeProjectOrExit): Return 0 if no error occurred.
-
-2012-03-22 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [CMake] Unreviewed build fix after r111778.
-
- * DumpRenderTree/efl/CMakeLists.txt: Replace
- ${JAVASCRIPTCORE_DIR}/wtf with ${WTF_DIR}/wtf in the include
- paths.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp: Use the right
- wtf include.
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp: Ditto.
- * WinCELauncher/CMakeLists.txt: Replace ${JAVASCRIPTCORE_DIR}/wtf
- with ${WTF_DIR}/wtf in the include paths.
-
-2012-03-22 Filip Pizlo <fpizlo@apple.com>
-
- Tools/Scripts/build-jsc doesn't work after WTF move
- https://bugs.webkit.org/show_bug.cgi?id=81999
-
- Reviewed by Eric Seidel.
-
- For ports that require WTF and JSC to be built as two projects and where
- the machinery to build both does not already exist, teach the tool to do
- so for us.
-
- * Scripts/build-jsc:
- (buildMyProject):
-
-2012-03-22 Ojan Vafai <ojan@chromium.org>
-
- Fix accidental missing line in r111793.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- Remove base.values. It was unused and duplicates the builtin Object.values.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- Accidentally deleted this line before committing r111793.
-
-2012-03-22 Ojan Vafai <ojan@chromium.org>
-
- Move garden-o-matic progress feedback from non-modal dialogs to a status console anchored to the bottom of the page
- https://bugs.webkit.org/show_bug.cgi?id=81983
-
- Reviewed by Adam Barth.
-
- The dialogs get in the way if you are doing multiple rebaselines. Also,
- a number of people didn't realize that you could do multiple rebaselines
- in parallel. A non-modal dialog is just confusing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- If we're only rebaselining 1 test, show the test name in the initial message. Otherwise,
- show the number of tests being rebaselined.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- Turn MessageBox into StatusArea. StatusArea is a singleton and messages in the StatusArea are grouped
- by ID. That way, the results of each UI action (e.g. clicking rebaseline) are grouped together
- into a single area.
-
- Once addFinalMessage has been called for all IDs, we show the close button. Clicking close
- also serves to clear all teh content in the StatusArea.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-03-22 Tony Chang <tony@chromium.org>
-
- Unreviewed, fix chromium build after wtf move.
-
- Only use newwtf, remove references to wtf.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-03-22 Csaba Osztrogonác <ossy@webkit.org>
-
- Actually move WTF files to their new home
- https://bugs.webkit.org/show_bug.cgi?id=81844
-
- [Qt] Unreviewed buildfix after r111778.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2012-03-22 Dan Bernstein <mitz@apple.com>
-
- Font fallback in WebKitTestRunner depends on user settings
- https://bugs.webkit.org/show_bug.cgi?id=81978
-
- Reviewed by Jessie Berlin.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize): Added an AppleLanguages key
- with a value consisting of the array ("en") to the override defaults
- dictionary. This is the same value used in DumpRenderTree, and it
- ensures that font fallback follows a consistent path that is not
- affected by the language preferences of the user running the test.
-
-2012-03-22 Andy Estes <aestes@apple.com>
-
- check-for-inappropriate-objc-class-names should ignore the class defined by libarclite.
- https://bugs.webkit.org/show_bug.cgi?id=81971
-
- Reviewed by Dan Bernstein.
-
- Xcode will automatically link ObjC binaries against libarclite in some
- cases, which defines a class called __ARCLite__.
- check-for-inappropriate-objc-class-names shouldn't complain about this
- class name.
-
- * Scripts/check-for-inappropriate-objc-class-names:
-
-2012-03-22 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests blames the wrong test for crashing
- https://bugs.webkit.org/show_bug.cgi?id=81951
-
- Reviewed by Adam Barth.
-
- NRWT wasn't extracting the WebProcess pid correct; should've
- used re.search instead of re.match :(. Add more tests!
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_no_timeout):
- (WebKitDriverTest):
- (WebKitDriverTest.test_check_for_driver_crash):
- (WebKitDriverTest.test_check_for_driver_crash.FakeServerProcess):
- (WebKitDriverTest.test_check_for_driver_crash.FakeServerProcess.__init__):
- (WebKitDriverTest.test_check_for_driver_crash.FakeServerProcess.pid):
- (WebKitDriverTest.test_check_for_driver_crash.FakeServerProcess.name):
- (WebKitDriverTest.test_check_for_driver_crash.FakeServerProcess.has_crashed):
- (WebKitDriverTest.test_check_for_driver_crash.assert_crash):
-
-2012-03-22 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Implement LayoutTestController::markerTextForListItem()
- https://bugs.webkit.org/show_bug.cgi?id=81512
-
- Adding missing implementation markerTextForListItem to EFL's
- LayoutTestController so that we can unskip related tests from
- the skip list.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::markerTextForListItem): Implemented.
-
-2012-03-22 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Enable view mode media feature layout tests
- https://bugs.webkit.org/show_bug.cgi?id=81205
-
- Adding missing implementation setViewModeMediaFeature to EFL's
- LayoutTestController so that we can unskip view mode
- media feature layout tests.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setViewModeMediaFeature): Implemented.
-
-2012-03-22 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: crash while stopping layout test helper on apple mac lion
- https://bugs.webkit.org/show_bug.cgi?id=81949
-
- Reviewed by Eric Seidel.
-
- stop_helper() didn't work right if the helper process wasn't
- still running or didn't respond properly to being shut down. Fix
- this and add some tests. Also add code to MockExecutive() to be
- able to mock executive.popen() properly.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockProcess.__init__):
- (MockProcess.wait):
- (MockExecutive.__init__):
- (MockExecutive.popen):
- * Scripts/webkitpy/common/system/systemhost_mock.py:
- (MockSystemHost.__init__):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.start_helper):
- (MacPort.stop_helper):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_get_crash_log):
- (test_helper_starts):
- (test_helper_fails_to_start):
- (test_helper_fails_to_stop):
- (test_helper_fails_to_stop.bad_waiter):
-
-2012-03-22 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Add make to the jhbuild moduleset
- https://bugs.webkit.org/show_bug.cgi?id=81769
-
- Reviewed by Martin Robinson.
-
- Mostly based on a patch by Carlos Garcia Campos <cgarcia@igalia.com>.
- Add GNU make with custom patches to fix several issues:
-
- - make-3.82-arg-list-length.patch: Patch by Ralf Wildenhues to
- fix the argument list limit of GNU make when running make
- distcheck.
- - make-3.82-parallel-build.patch: Patch by Kamil Mierzejewski
- and Jeremy Devenport to fix parallel build issues present in
- GNU make 3.82
-
- * gtk/jhbuild.modules: Added make with patches.
- * gtk/patches/make-3.82-arg-list-length.patch: Added.
- * gtk/patches/make-3.82-parallel-build.patch: Added.
-
-2012-03-22 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Adding Source/WTF to the build and updating
- waf port list.
-
- * DumpRenderTree/wscript:
- * waf/build/settings.py:
-
-2012-03-22 Dirk Pranke <dpranke@chromium.org>
-
- Re-land fix for r81603 yet again (!) with latest build fix.
- https://bugs.webkit.org/show_bug.cgi?id=81603
-
- Unreviewed, build fix.
-
- The latest problem was a bad sprintf() in
- BasePort._get_crash_log(). I've reworked that routine and added
- unit tests for coverage.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._handle_error):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- (TestResultWriter.write_crash_log):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_text):
- (Port._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crash_log):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput.__init__):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.is_lion):
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_default_child_processes):
- (test_get_crash_log):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_get_crash_log):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_get_crash_log):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver._start):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
-
-2012-03-22 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Enable support for handling database quota's in the MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=81928
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-03-22 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Implement LayoutTestController::setEditingBehavior
- https://bugs.webkit.org/show_bug.cgi?id=81124
-
- Adding missing implementation setEditingBehavior to EFL's
- LayoutTestController. This implementation allows us to
- unskip some tests from the skip list.
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setEditingBehavior): Implemented.
-
-2012-03-22 Carlos Garcia Campos <cgarcia@bb-webkit-rel-64.local.igalia.com>
-
- [GTK] Use the angle-bracket form to include wtf headers
- https://bugs.webkit.org/show_bug.cgi?id=81884
-
- Reviewed by Eric Seidel.
-
- Use #include <wtf/foo> instead of #include "foo".
-
- * DumpRenderTree/gtk/AccessibilityCallbacks.cpp:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- * DumpRenderTree/gtk/WorkQueueItemGtk.cpp:
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
-
-2012-03-22 Alexander Færøy <alexander.faeroy@nokia.com>
-
- Unreviewed, add Michael Brüning and Allan Jensen to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-22 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Enable FAST_MOBILE_SCROLLING when scrolling is delegated.
- https://bugs.webkit.org/show_bug.cgi?id=81889
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable FAST_MOBILE_SCROLLING feature.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-03-22 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [EFL] DRT: Do not pass a relative path to DOWNLOADED_FONTS_DIR.
- https://bugs.webkit.org/show_bug.cgi?id=81900
-
- Reviewed by Gustavo Noronha Silva.
-
- r111598 added the DOWNLOADED_FONTS_DIR define, but it used a relative
- path which assumed a certain directory structure for the build
- directory which may noy be true.
-
- Instead, hardcode the path to the downloaded fonts starting from the
- top-level source directory. While this solution is also far from
- perfect, it makes it more consistent and reliable, and easier to
- tackle at once with the rest of bug 81475.
-
- * DumpRenderTree/efl/CMakeLists.txt:
-
-2012-03-22 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Allow to run any jhbuild command with jhbuild-wrapper script
- https://bugs.webkit.org/show_bug.cgi?id=81888
-
- Reviewed by Philippe Normand.
-
- * Scripts/update-webkit-libs-jhbuild:
- (runJhbuild): Helper function to run jhbuild with a given command.
- Instead of running jhbuild directly, use the jhbuild-wrapper, so
- that we don't need to run it first to check whether jhbuild is
- installed or not.
- * efl/run-with-jhbuild: Call jhbuild-wrapper with run command.
- * gtk/run-with-jhbuild: Ditto.
- * jhbuild/jhbuild-wrapper: Allow to execute any jhbuild command,
- not only run.
-
-2012-03-22 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, test-webkitpy fix after r111661.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
-
-2012-03-22 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, test-webkitpy fix after r111642.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.setUp):
- (ChromiumDriverTest.test_two_drivers):
-
-2012-03-22 Csaba Osztrogonác <ossy@webkit.org>
-
- webkitpy: clean up actually getting crash logs from DRT/WTR crashes
- https://bugs.webkit.org/show_bug.cgi?id=81603
-
- Unreviewed rolling out r111609 and part of r111615,
- because it broke NRWT on Qt-WK2 platform.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._handle_error):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- (TestResultWriter.write_crash_report):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.is_crash_reporter):
- (Port._driver_class):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crashed_process_name):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput.__init__):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- (MacPort.is_crash_reporter):
- (MacPort.release_http_lock):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver._start):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
-
-2012-03-22 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Add full platforms to Qt buildslaves
- https://bugs.webkit.org/show_bug.cgi?id=81877
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-03-21 Johnny Ding <jnd@chromium.org>
-
- Customize layout test timeout value for different ports.
- https://bugs.webkit.org/show_bug.cgi?id=79859
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_test_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.default_test_timeout_ms):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
-
-2012-03-21 Mark Rowe <mrowe@apple.com>
-
- Fix the build.
-
- Ensure that our test tools don't try and use RTTI unnecessarily.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-03-21 Adam Barth <abarth@webkit.org>
-
- WebKit should have some scripts to smooth interactions with GitHub
- https://bugs.webkit.org/show_bug.cgi?id=81842
-
- Reviewed by Eric Seidel.
-
- These scripts support the workflow in
- https://trac.webkit.org/wiki/UsingGitHub by automating the
- configuration and syncing operations needed for a GitHub fork of WebKit
- to track the main WebKit repository.
-
- * Scripts/configure-github-as-upstream: Added.
- * Scripts/sync-master-with-upstream: Added.
-
-2012-03-21 Dirk Pranke <dpranke@chromium.org>
-
- WTR - log the pid of a crashing WebProcess
- https://bugs.webkit.org/show_bug.cgi?id=81575
-
- Reviewed by Alexey Proskuryakov.
-
- This allows run-webkit-tests to find the right crash log for a
- given crashed WebProcess in WebKit2.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::exceededDatabaseQuota):
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::runTest):
- (WTR::TestController::processDidCrash):
-
-2012-03-21 Enrica Casucci <enrica@apple.com>
-
- WebKitURLWithTitles pasteboard format should support URLs containing Emoji characters.
- https://bugs.webkit.org/show_bug.cgi?id=81835
- <rdar://problem/11082749>
-
- Reviewed by Brady Eidson.
-
- * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html:
- * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm:
- (TestWebKitAPI::contextMenuCopyLink):
-
-2012-03-21 Alexandru Chiculita <achicu@adobe.com>
-
- [CSS Shaders] Make CSS Shaders compile on Chromium
- https://bugs.webkit.org/show_bug.cgi?id=81435
-
- Reviewed by Stephen White.
-
- I've added WebKitCSSCustomFilterEnabled support for the layoutTestController.overridePreference function.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-03-21 Dirk Pranke <dpranke@chromium.org>
-
- fix regression on gtk port introduced by r111609
- https://bugs.webkit.org/show_bug.cgi?id=81839
-
- Reviewed by Philippe Normand.
-
- r111609 should've initialized a couple of missing fields in
- WebKitDriver, and also should've checked for method overrides
- in the other ports :(.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
-
-2012-03-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up actually getting crash logs from DRT/WTR crashes
- https://bugs.webkit.org/show_bug.cgi?id=81603
-
- Reviewed by Adam Barth.
-
- Add a new _get_crash_log() overridable method on the Port
- object to customize how we fetch crash logs per port.
- Mac will now slow-spin with a timeout waiting for the crash log, rather
- than waiting for the ReportCrash process to exit (it appears
- that the mac will manage multiple crashes with a single
- ReportCrash process, the process waits around longer than
- necessary, presumably to avoid thrashing if processes are
- repeatedly crashing).
-
- Also, add the DriverOutput should contain the crash log and other info,
- which is created in a port-specific manner but can then be
- treated generically. Previously single_test_runner would get
- told that something crashed and attempt to do something to get
- the crash log, but it didn't have the information it needed to
- od the right thing; better to make the driver hand back the
- right info.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._handle_error):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- (TestResultWriter.write_crash_log):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_text):
- (Port._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crash_log):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput.__init__):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.is_lion):
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver._start):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
-
-2012-03-21 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL] Use jhbuild downloaded fonts instead of hardcoded system font paths
- https://bugs.webkit.org/show_bug.cgi?id=81507
-
- Now that we're only loading from one directory, no need to
- iterate over a list of directories anymore.
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/FontManagement.cpp:
- (addFontDirectory):
- (addFontsToEnvironment):
-
-2012-03-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: get ServerProcess out of the reportcrash business
- https://bugs.webkit.org/show_bug.cgi?id=81600
-
- Unreviewed, build fix.
-
- Re-land r111307 and r111293 with another fix for a crash in NRWT;
- we need to check if the driver has crashed before attempting to
- read from it.
-
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- (ServerProcess._handle_possible_interrupt):
- (ServerProcess.write):
- (ServerProcess.read_stdout):
- (ServerProcess.has_crashed):
- (ServerProcess._read):
- (ServerProcess.stop):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.check_for_leaks):
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
- (WebKitDriver._read_block):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (MockServerProcess.__init__):
- (MockServerProcess):
- (MockServerProcess.has_crashed):
-
-2012-03-21 Zeno Albisser <zeno@webkit.org>
-
- [Qt][Mac] ranlib segfaults when creating symbol tables for libWebCore.a.
- https://bugs.webkit.org/show_bug.cgi?id=81750
-
- Building WebCore on mac currently creates an archive that is bigger than
- 4GB. But ranlib fails to create a symbol table for such a big archive,
- even on 64bit machines.
- Therefore we start using SVGAllInOne.cpp when building debug
- on mac. This reduces the size of the archive by about 300MB.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/mac/default_pre.prf:
-
-2012-03-21 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- Updated the address list of committers.py.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-21 W. James MacLean <wjmaclean@chromium.org>
-
- Updating my nick in committers file.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-21 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Remove Android build-fix when the proper fix rolled into WebKit
- https://bugs.webkit.org/show_bug.cgi?id=80861
-
- Reviewed by Tony Chang.
-
- Remove most Android-specific logic from webkitdirs.pm in favor of
- handling this during project generation time.
-
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
-
-2012-03-21 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Allow running javascript from location bar in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=81331
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (activateUriEntryCallback): Use browser_window_load_uri().
- (browser_window_load_uri): Check whether uri starts with
- javascript: and run the given script, or just call
- webkit_web_view_load_uri() to load the given uri.
- * MiniBrowser/gtk/BrowserWindow.h:
- * MiniBrowser/gtk/main.c:
- (createBrowserWindow): Use browser_window_load_uri().
-
-2012-03-21 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add webkit_web_view_run_javascript() to WebKit2 GTK+
- https://bugs.webkit.org/show_bug.cgi?id=75543
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/GNUmakefile.am: Add javascriptcore_cppflags to
- MiniBrowser CPP flags.
-
-2012-03-20 Eric Seidel <eric@webkit.org>
-
- Move wtf/Platform.h from JavaScriptCore to Source/WTF/wtf
- https://bugs.webkit.org/show_bug.cgi?id=80911
-
- Reviewed by Adam Barth.
-
- Update include paths for Source/WTF.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/build-webkit: Build Source/WTF on AppleWin as well.
-
-2012-03-20 Adam Barth <abarth@webkit.org>
-
- svn-apply should move inflight patches from WebCore/webaudio to WebCore/Modules/webaudio
- https://bugs.webkit.org/show_bug.cgi?id=81567
-
- Reviewed by Eric Seidel.
-
- This temporary measure should help us avoid disrupting the folks
- working on WebAudio when we move the webaudio directory to Modules.
-
- * Scripts/VCSUtils.pm:
- (adjustPathForRecentRenamings):
- (parseGitDiffHeader):
- (parseSvnDiffHeader):
-
-2012-03-20 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r111453.
- http://trac.webkit.org/changeset/111453
- https://bugs.webkit.org/show_bug.cgi?id=81600
-
- still broken
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- (ServerProcess.handle_interrupt):
- (ServerProcess.write):
- (ServerProcess._check_for_crash):
- (ServerProcess._handle_timeout):
- (ServerProcess._check_for_abort):
- (ServerProcess._read):
- (ServerProcess.stop):
- (ServerProcess):
- (ServerProcess.set_crashed):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.is_crash_reporter):
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver):
- (WebKitDriver._detected_crash):
- (WebKitDriver._subprocess_crashed):
- (WebKitDriver._crashed_process_name):
- (WebKitDriver.run_test):
- (WebKitDriver._read_block):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (MockServerProcess.__init__):
-
-2012-03-20 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: get ServerProcess out of the reportcrash business
- https://bugs.webkit.org/show_bug.cgi?id=81600
-
- Unreviewed, build fix.
-
- Re-land r111307 and r111293 with fix for crash in NRWT; I
- was failing to set the crashing process name.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- (ServerProcess._handle_possible_interrupt):
- (ServerProcess.write):
- (ServerProcess.read_stdout):
- (ServerProcess.has_crashed):
- (ServerProcess._read):
- (ServerProcess.stop):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.check_for_leaks):
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
- (WebKitDriver._read_block):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (MockServerProcess.__init__):
- (MockServerProcess):
- (MockServerProcess.has_crashed):
-
-2012-03-20 Tim Horton <timothy_horton@apple.com>
-
- [mac] Restore color space switching code to run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=80571
- <rdar://problem/11008529>
-
- Reviewed by Simon Fraser.
-
- http://trac.webkit.org/changeset/111429 broke tools build on Snow Leopard.
-
- Use the old CM* API on Snow Leopard, since CGDisplayCreateUUIDFromDisplayID
- didn't exist until Lion.
-
- * DumpRenderTree/mac/LayoutTestHelper.m:
- (installLayoutTestColorProfile):
- (restoreUserColorProfile):
-
-2012-03-20 Adele Peterson <adele@apple.com>
-
- Update the last test to use EXPECT_WK_STREQ.
-
- Reviewed by Dan Bernstein.
-
- * TestWebKitAPI/Tests/mac/AttributedString.mm: (TestWebKitAPI::TEST):
-
-2012-03-20 Adele Peterson <adele@apple.com>
-
- "Attempt to insert nil value " exception when calling attributed string APIs on content with a custom font
- https://bugs.webkit.org/show_bug.cgi?id=81630
- <rdar://problem/10650660>
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/Ahem.ttf: Added.
- * TestWebKitAPI/Tests/mac/AttributedString.mm: Added.
- (-[AttributedStringTest webView:didFinishLoadForFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/mac/attributedStringCustomFont.html: Added.
-
-2012-03-20 Eric Seidel <eric@webkit.org>
-
- Add link on queues.webkit.org to kov's fancy queue-depth graph
- https://bugs.webkit.org/show_bug.cgi?id=81690
-
- Reviewed by Adam Barth.
-
- * QueueStatusServer/templates/recentstatus.html:
-
-2012-03-20 Tim Horton <timothy_horton@apple.com>
-
- [mac] Restore color space switching code to run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=80571
- <rdar://problem/11008529>
-
- Reviewed by Simon Fraser.
-
- Make use of the layout test helper hooks to restore the Mac system-wide
- color profile switching code. This makes WkTR and DRT results match, and
- causes the main display's color profile to not affect results on Lion.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/LayoutTestHelper.m: Added.
- (installLayoutTestColorProfile):
- (restoreUserColorProfile):
- (simpleSignalHandler):
- (main):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.release_http_lock):
- (MacPort):
- (MacPort._path_to_helper):
- (MacPort.start_helper):
- (MacPort.stop_helper):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2012-02-24 Darin Fisher <darin@chromium.org>
-
- Add more Chromium WebKit API reviewers
- https://bugs.webkit.org/show_bug.cgi?id=81576
-
- Reviewed by Adam Barth and David Levin.
-
- Simplify watchlist to lump all WebKit API into one.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-03-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Convert hasSpellingMarker to use Internals interface.
- https://bugs.webkit.org/show_bug.cgi?id=81300
-
- Reviewed by Ryosuke Niwa.
-
- Remove hasSpellingMarker functions, because it is able to work in the
- cross-port way through the Internals interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-03-20 Csaba Osztrogonác <ossy@webkit.org>
-
- Add new Qt-WK2 performance tester bot to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=80842
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunAndUploadPerfTestsWebKit2):
- (RunAndUploadPerfTestsWebKit2.start):
- (BuildAndPerfTestWebKit2Factory):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestWebKit2Factory):
- (DownloadAndPerfTestWebKit2Factory.__init__):
-
-2012-03-20 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Update to Android NDK r7b
- https://bugs.webkit.org/show_bug.cgi?id=81005
-
- Reviewed by Adam Barth.
-
- Update to version r7b of the Android NDK, release notes of which are
- available on the following page:
- http://developer.android.com/sdk/ndk/index.html
-
- * Scripts/update-webkit-chromium:
-
-2012-03-20 Csaba Osztrogonác <ossy@webkit.org>
-
- x86 GCC bug triggers a compilation error in generated copy constructor of CollapsedBorderValue
- https://bugs.webkit.org/show_bug.cgi?id=81502
-
- Unreviewed.
-
- * qmake/mkspecs/features/unix/default_post.prf: Reenable Werror after r111171.
-
-2012-03-19 Jessie Berlin <jberlin@apple.com>
-
- Unreviewed; roll out http://trac.webkit.org/changeset/111307 and http://trac.webkit.org/changeset/111293
- because they broke running the layout tests on mac.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._check_for_driver_crash):
-
-2012-03-16 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Allow running run-gtk-tests during 'make distcheck'
- https://bugs.webkit.org/show_bug.cgi?id=81415
-
- Reviewed by Philippe Normand.
-
- Modify the build and run-gtk-tests so that it can run during 'make distcheck'
-
- * GNUmakefile.am: Distribute run-gtk-tests during 'make dist' and make it the
- main command run during 'make check.'
- * Scripts/run-gtk-tests: Refactored run-gtk-tests so that jhbuild is no longer
- a requirement to run it. If jhbuild isn't around it will simply not start the
- SPI daemons and skip the WebKit2 accessibility test. Remove test runs from the
- main loop and simply use the main loop in a synchronous method to start SPI
- daemons. Did a bunch of general cleanup around these tasks.
-
-2012-03-19 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- jhbuild: Use the multiprocessing module to get the number of CPUs.
- https://bugs.webkit.org/show_bug.cgi?id=81585
-
- Reviewed by Martin Robinson.
-
- Now that support for Python 2.5 has been dropped, we can safely
- use multiprocessing.cpu_count() to obtain the current number of
- CPUs in the system instead of running a webkitperl script for
- that.
-
- * efl/common.py:
- (top_level_path):
- * efl/jhbuildrc:
- * gtk/common.py:
- (build_path):
- * gtk/jhbuildrc:
-
-2012-03-19 Ojan Vafai <ojan@chromium.org>
-
- We should only add a live event listener once, not once per TestSelector.
- Adding one per TestSelector would cause accordion('option', 'active') to
- incorrectly be "false" if you examine multiple sets of tests.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo introduced in r111293.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._check_for_driver_crash):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: get ServerProcess out of the reportcrash business
- https://bugs.webkit.org/show_bug.cgi?id=81600
-
- Reviewed by Adam Barth.
-
- ServerProcess was half-aware that ReportCrash might run
- sometimes, and that the process ServerProcess was talking to
- might have its own crashing subprocesses; neither of these
- things really worked right and it made the logic convoluted, so
- this change makes handling crashes completely separate from the
- server_process code, so that it can focus on just I/O to the
- subprocess.
-
- There should be no functional changes resulting from this patch.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- (ServerProcess._handle_possible_interrupt):
- (ServerProcess.write):
- (ServerProcess.read_stdout):
- (ServerProcess.has_crashed):
- (ServerProcess._read):
- (ServerProcess.stop):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.check_for_leaks):
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
- (WebKitDriver.has_crashed):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
- (WebKitDriver._read_block):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (MockServerProcess.__init__):
- (MockServerProcess):
- (MockServerProcess.has_crashed):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: crashlog parsing is broken
- https://bugs.webkit.org/show_bug.cgi?id=81586
-
- Reviewed by Adam Barth.
-
- Seeking on a file opened through codecs() appears to not work
- correctly (at least on SL).
-
- The code was more complicated than it needed to be, so I have
- revamped it to just read a full crashlog at once and then look
- for matches.
-
- I have also added the ability to optionally propagate
- errors back (which can be helpful to debug races when ReportCrash is
- still running and you need to see that you couldn't open some
- files, rather than just ignoring them).
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.find_newest_log):
- (CrashLogs._find_newest_log_darwin):
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_log_darwin):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up some port._filesystem references to not reference private members
- https://bugs.webkit.org/show_bug.cgi?id=81595
-
- Reviewed by Eric Seidel.
-
- There should be no functional changes in this patch, just some
- refactoring. Also, fixes a minor nit in write_image_diff_files(()
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
- (SingleTestRunner._run_compare_test):
- (SingleTestRunner._run_rebaseline):
- (SingleTestRunner._save_baseline_data):
- (SingleTestRunner._handle_error):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- (TestResultWriter.__init__):
- (TestResultWriter._make_output_directory):
- (TestResultWriter.output_filename):
- (TestResultWriter._output_testname):
- (TestResultWriter.write_output_files):
- (TestResultWriter.write_stderr):
- (TestResultWriter.write_crash_report):
- (TestResultWriter.create_text_diff_and_write_result):
- (TestResultWriter.write_image_diff_files):
- (copy_file):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix nit - incorrect reference to DRT in test_expectations.py
- https://bugs.webkit.org/show_bug.cgi?id=81598
-
- Reviewed by Eric Seidel.
-
- "DumpRenderTree" shouldn't be hard-coded here, since some other
- process may actually be crashing (WebKitTestRunner, WebProcess, etc.)
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: allow instance data in TestFailure objects
- https://bugs.webkit.org/show_bug.cgi?id=81580
-
- Reviewed by Tony Chang.
-
- Current TestFailures are basically enums, but it would be nice,
- especially for crashes, if they contained the name and pid of
- the process that crashed.
-
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (TestFailure.message):
- (FailureTimeout.message):
- (FailureCrash):
- (FailureCrash.__init__):
- (FailureCrash.message):
- (FailureMissingResult.message):
- (FailureTextMismatch.message):
- (FailureMissingImageHash.message):
- (FailureMissingImage.message):
- (FailureImageHashMismatch.message):
- (FailureImageHashIncorrect.message):
- (FailureReftestMismatch.message):
- (FailureReftestMismatchDidNotOccur.message):
- (FailureReftestNoImagesGenerated.message):
- (FailureMissingAudio.message):
- (FailureAudioMismatch.message):
- * Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
- (TestFailuresTest.test_equals):
- (TestFailuresTest):
- (TestFailuresTest.test_crashes):
-
-2012-03-19 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/10917120> and https://bugs.webkit.org/show_bug.cgi?id=81066
- Crash in 3rd party WebKit apps under XHR/Cache code
-
- Reviewed by Antti Koivisto.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.html: Added.
- * TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm: Added.
- (-[MemoryCachePruneTestResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
- (-[MemoryCachePruneTestResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
- (-[MemoryCachePruneTestResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[MemoryCachePruneTestResourceLoadDelegate webView:resource:didFailLoadingWithError:fromDataSource:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-03-19 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/10848575> and https://bugs.webkit.org/show_bug.cgi?id=81516
- REGRESSION (r107435) URLs copied from WebKit apps aren't in the right pasteboard format
-
- Reviewed by Enrica Casucci.
-
- Bring up a context menu on a link, copy the link, then verify the pasteboard contents
- are in the correct format.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html: Added.
- * TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm: Added.
- (-[ContextMenuCanCopyURLDelegate webView:didFinishLoadForFrame:]):
- (TestWebKitAPI::contextMenuCopyLink):
- (TestWebKitAPI::TEST):
-
-2012-03-19 Ojan Vafai <ojan@chromium.org>
-
- Make the selected item in the accordion a link to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=81571
-
- Reviewed by Dimitri Glazkov.
-
- Also, make it so that you can select the text of the link, instead of the current behavior
- of acting as if you had clicked on the accordion header.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- NRWT runs some tests that are skipped with -i command line option
- https://bugs.webkit.org/show_bug.cgi?id=81535
-
- Reviewed by Ojan Vafai.
-
- This change modifies the interaction of Skipped files and
- test_expectations files so that entries in Skipped files (and
- the -i command line) override *everything* in the expectations
- file.
-
- Specifically, a directory in a Skipped file will cause all of
- the tests in the dir to be skipped even if individual tests in
- the dir are listed in the test_expectations.txt.
-
- Skipped files also override anything in an overrides files.
-
- This seems to make more intuitive sense, since if you list
- something in the Skips file (and even more specify it on the
- command line) you probably want it to be universally applied.
-
- Theoretically we could add more precedence levels and have full
- paths in an expectations file override dirs in a Skipped file
- (but not the command line), but I don't know yet that that level
- of complexity is justified.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- (TestExpectations._add_skipped_tests):
- (TestExpectations._add_test):
- (TestExpectations._add_expectations):
- (TestExpectations._add_expectation_line):
- (TestExpectations._already_seen_better_match):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_more_specific_override_resets_skip):
- (SkippedTests):
- (SkippedTests.get_exp):
- (SkippedTests.assert_exp):
- (SkippedTests.test_skipped_tests_work):
- (SkippedTests.test_duplicate_skipped_test_fails_lint):
- (SkippedTests.test_skipped_file_overrides_expectations):
- (SkippedTests.test_skipped_dir_overrides_expectations):
- (SkippedTests.test_skipped_file_overrides_overrides):
- (SkippedTests.test_skipped_dir_overrides_overrides):
-
-2012-03-19 Eric Seidel <eric@webkit.org>
-
- Fix WTF header include discipline in Chromium WebKit
- https://bugs.webkit.org/show_bug.cgi?id=81281
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * Scripts/update-webkit-chromium: Made it possible to run this from a directory other than the root.
-
-2012-03-19 Andy Chen <andchen@rim.com>
-
- [BlackBerry] Add new layout test for text match marker
- https://bugs.webkit.org/show_bug.cgi?id=81531
-
- Make the LayoutTestControllerBlackBerry::findString to test the
- BlackBerry port implementation.
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::findString):
-
-2012-03-19 Ojan Vafai <ojan@chromium.org>
-
- Don't show WONTFIX tests in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=81554
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
-
-2012-03-19 Chris Fleizach <cfleizach@apple.com>
-
- platform/mac/accessibility/selected-rows-table.html failing on Lion Intel Debug WebKit2 testers
- https://bugs.webkit.org/show_bug.cgi?id=81530
-
- Reviewed by Jessie Berlin.
-
- Add rowAtIndex to WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::rowAtIndex):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR):
- (WTR::AccessibilityUIElement::rowAtIndex):
-
-2012-03-19 Ojan Vafai <ojan@chromium.org>
-
- Change garden-o-matic All Failures tab to Expected Failures
- https://bugs.webkit.org/show_bug.cgi?id=81540
-
- Reviewed by Dimitri Glazkov.
-
- Also, fix some broken unittests that had just gotten stale.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2012-03-19 Hao Zheng <zhenghao@chromium.org>
-
- [chromium] DRT crashes at shutdown.
- https://bugs.webkit.org/show_bug.cgi?id=81504
-
- Reviewed by James Robinson.
-
- WebCompositor must be destroyed after WebView is properly destroyed,
- or some compositor objects like CCLayerTreeHost may not be destroyed.
- However, it is really hard to make the destruction order correct
- explicitly in ~TestShell. So move it out to DumpRenderTree.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- add dpranke to webkitpy watchlist
- https://bugs.webkit.org/show_bug.cgi?id=81433
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-03-19 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy is failing on SL/Python 2.6.1
- https://bugs.webkit.org/show_bug.cgi?id=81533
-
- Reviewed by Ojan Vafai.
-
- It appears that itertools.combinations() is buggy in 2.6.1; this
- backports the implementation from 2.7.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfigurationConverter.collapse_macros):
- (TestConfigurationConverter):
- (TestConfigurationConverter.combinations):
-
-2012-03-19 David Michael Barr <davidbarr@google.com>
-
- Optimize the cleanup sequence in the start-queue.sh script
- https://github.com/abarth/webkit/pull/1
-
- Reviewed by Adam Barth.
-
- Updating the working copy is an expensive operation
- for a repository the size of WebKit.
- Attempt to reset only to the target revision.
-
- * EWSTools/start-queue.sh:
-
-2012-03-19 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- Adjust architecture type of the EFL build bot.
- https://bugs.webkit.org/show_bug.cgi?id=81452
-
- Reviewed by Tony Chang.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: The
- buildslave is a 64-bit machine, therefore describe it as being
- x86_64, not i386.
-
-2012-03-19 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] printLoadedUrls prints "Object" instead of the actual URL.
- https://bugs.webkit.org/show_bug.cgi?id=81514
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-03-19 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- [EFL] jhbuild: Set CMAKE_PREFIX_PATH in jhbuildrc.
- https://bugs.webkit.org/show_bug.cgi?id=81491
-
- Reviewed by Philippe Normand.
-
- For the find_path(), find_library() etc CMake calls to find the
- dependencies built with jhbuild, CMAKE_PREFIX_PATH must be properly
- set, otherwise CMake cannot know the dependencies exist and will only
- look in the standard directories.
-
- * efl/jhbuildrc: Set the CMAKE_PREFIX_PATH environment variable with
- the jhbuild Root directory.
-
-2012-03-19 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL] Add XDG env vars to jhbuildrc
- https://bugs.webkit.org/show_bug.cgi?id=81510
-
- Needed to ensure correct glib behaviour in jhbuild environment.
-
- Reviewed by Philippe Normand.
-
- * efl/jhbuildrc:
-
-2012-03-19 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- Select best target for tap gesture.
- https://bugs.webkit.org/show_bug.cgi?id=78801
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add TOUCH_ADJUSTMENT to enabled features.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-03-19 Robert Kroeger <rjkroege@chromium.org>
-
- [chromium] synthesize wheel events for fling on main thread
- https://bugs.webkit.org/show_bug.cgi?id=81458
-
- Added the ability to dispatch GestureFlingStart and GestureFlingCancel from EventSender.
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureFlingCancel):
- (EventSender::gestureFlingStart):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
-
-2012-03-19 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Add command line option to set the user agent in the MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=81508
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::webViewExperimental):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (printHelp):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- (WindowOptions::setUserAgent):
- (WindowOptions::userAgent):
- (WindowOptions):
-
-2012-03-19 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Remove dead user agent code from the MiniBrowser.
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/useragentlist.txt: Removed.
-
-2012-03-19 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- jhbuild: Call jhbuild's autogen.sh via bash.
- https://bugs.webkit.org/show_bug.cgi?id=81485
-
- Reviewed by Philippe Normand.
-
- jhbuild's autogen.sh uses "/bin/bash" in the shebang line, however
- this is usually true only on Linux systems, and even then bash for
- some reason might not be available in that location. It is safer to
- call bash directly and pass autogen.sh to it instead.
-
- * jhbuild/jhbuild-wrapper:
- (install_jhbuild):
-
-2012-03-19 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Prefix run-launcher with run-with-jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=81503
-
- Reviewed by Hajime Morita.
-
- * Scripts/run-launcher:
-
-2012-03-19 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL] Prefix run-launcher with run-with-jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=80026
-
- Reviewed by Hajime Morita.
-
- * Scripts/run-launcher:
-
-2012-03-18 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed. Disable -Werror on x86 until proper fix.
- https://bugs.webkit.org/show_bug.cgi?id=81498
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-03-17 Raphael Kubo da Costa <rakuco@FreeBSD.org>
-
- Unreviewed; switch to using my FreeBSD.org email address, the
- other one is going to disappear soon.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-03-17 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- Unreviewed; fix webkitpy unit test failures after r111116.
-
- It turns out that cmd_line in the patch in bug 80025 had the right
- signature when it was submitted, but r109242 added a few more
- required parameters, and since the method (and EflDriver) did not
- exist at the time we ended up committing a broken method.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflDriver.cmd_line): Add the `pixel_tests' and `per_test_args'
- arguments.
-
-2012-03-17 Charles Wei <charles.wei@torchmobile.com.cn>
-
- [BlackBerry] Enable Web Timing for performance profiling and improvement.
- https://bugs.webkit.org/show_bug.cgi?id=81085
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit:
-
-2012-03-17 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- Add a dependencies installation step for EFL to buildbot master.cfg
- https://bugs.webkit.org/show_bug.cgi?id=81337
-
- Reviewed by Gustavo Noronha Silva.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (InstallEflDependencies):
- (Factory.__init__):
-
-2012-03-17 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL] Prefixing run-webkit-tests with run-with-jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=80025
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflDriver):
- (EflDriver.cmd_line):
- (EflPort._driver_class):
-
-2012-03-17 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- [EFL] Add and use run-with-jhbuild and update-webkitefl-libs scripts for EFL
- https://bugs.webkit.org/show_bug.cgi?id=79904
-
- build-webkit --efl will use jhbuild for fetching and building dependencies.
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/update-webkitefl-libs: Added.
- * Scripts/webkitdirs.pm:
- (jhbuildWrapperPrefixIfNeeded):
- (generateBuildSystemFromCMakeProject):
- (buildCMakeGeneratedProject):
- * efl/common.py: Added.
- (script_path):
- (top_level_path):
- (number_of_cpus):
- * efl/jhbuild.modules: Added.
- * efl/jhbuildrc: Added.
- * efl/run-with-jhbuild: Added.
-
-2012-03-16 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=81065
- <rdar://problem/10944309> CrashTracer: [USER] 111 crashes in WebProcess at WebKitTestRunnerInjectedBundle: WTR::InjectedBundle::done + 142
- Fix crash preventing WebKitTestRunner from working in Release.
- WebKitTestRunner used ostringstream to collect output from the test. ostringstream is incompatible with our
- FastMalloc overrides. When copying strings out ostringstream a new string is allocated with FastMalloc because
- the allocation is inlined. When that string is freed is uses the system malloc because that call is not inlined.
-
- I removed ostringstream in favor of StringBuilder.
-
- Properly set NDEBUG on Release builds so we don't crash when when we free the strings StringBuilder created.
-
- Reviewed by Geoff Garen.
-
- Add DEBUG_DEFINES to set NDEBUG on release builds.
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
- Remove ostringstream member in favor of StringBuilder.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- (WTR::InjectedBundle::beginTesting):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTF):
- (WTR::InjectedBundle::stringBuilder):
- (InjectedBundle):
-
- Append output to StringBuilder.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::hasPrefix):
- (WTR::dumpPath):
- (WTR::rangeToStr):
- (WTR::styleDecToStr):
- (WTR::frameToStr):
- (WTR::dumpFrameScrollPosition):
- (WTR::dumpFrameText):
- (WTR::dumpDescendantFramesText):
- (WTR::InjectedBundlePage::dump):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
- (WTR::lastFileURLPathComponent):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
- (WTR::InjectedBundlePage::willSetStatusbarText):
- (WTR::InjectedBundlePage::willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- (WTR::InjectedBundlePage::didBeginEditing):
- (WTR::InjectedBundlePage::didEndEditing):
- (WTR::InjectedBundlePage::didChange):
- (WTR::InjectedBundlePage::didChangeSelection):
- (WTR::InjectedBundlePage::supportsFullScreen):
- (WTR::InjectedBundlePage::enterFullScreenForElement):
- (WTR::InjectedBundlePage::exitFullScreenForElement):
- (WTR::InjectedBundlePage::beganEnterFullScreen):
- (WTR::InjectedBundlePage::beganExitFullScreen):
- (WTR::dumpBackForwardListItem):
- (WTR::InjectedBundlePage::dumpBackForwardList):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::waitToDumpWatchdogTimerFired):
- (WTR::LayoutTestController::dumpConfigurationForViewport):
-
- Convert between WTF::String and WKStringRef.
- * WebKitTestRunner/StringFunctions.h:
- (WTR::toWTFString):
- (WTR):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-03-16 Eric Seidel <eric@webkit.org>
-
- Add a land-from-url command
- https://bugs.webkit.org/show_bug.cgi?id=81411
-
- Reviewed by Adam Barth.
-
- Very basic so far. The goal is to make it landing smarter
- so that users don't have to bother to parse out the ids out of the urls.
-
- * Scripts/webkitpy/common/config/urls.py:
- (parse_bug_id):
- (parse_attachment_id):
- * Scripts/webkitpy/common/config/urls_unittest.py:
- (URLsTest.test_parse_bug_id):
- (URLsTest):
- (URLsTest.test_parse_attachment_id):
- * Scripts/webkitpy/tool/commands/download.py:
- (ProcessURLsMixin):
- (ProcessURLsMixin._fetch_list_of_patches_to_process):
- (LandFromURL):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (test_land_from_bug):
- (test_land_from_url):
-
-2012-03-16 Dave Tharp <dtharp@codeaurora.org>
-
- build-webkit launcher instructions use wrong relative path for Qt
- https://bugs.webkit.org/show_bug.cgi?id=81357
-
- Reviewed by Eric Seidel.
-
- Ensure we are at the proper directory before generating run-launcher
- instructions.
-
- * Scripts/build-webkit:
-
-2012-03-16 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/11027997> and https://bugs.webkit.org/show_bug.cgi?id=81412
- REGRESSION (r107435) Copy a link and paste to Mail: Nothing is pasted
-
- Reviewed by Geoff Garen.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/WebViewCanPasteURL.mm: Added.
-
-2012-03-16 Ojan Vafai <ojan@chromium.org>
-
- Mark wontfix tests in full_results.json so we can ignore them in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=81407
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.summarized_results):
- (ResultSummaryTest.test_no_svn_revision):
- (ResultSummaryTest.test_svn_revision):
- (ResultSummaryTest):
- (ResultSummaryTest.test_summarized_results_wontfix):
-
-2012-03-16 Ojan Vafai <ojan@chromium.org>
-
- Have webkit-patch rebaseline-test update test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=81054
-
- Recommit http://trac.webkit.org/changeset/110783 now that
- http://trac.webkit.org/changeset/111034 has landed.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.remove_configuration_from_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RemoveConfigurationsTest):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._update_expectations_file):
- (RebaselineTest._rebaseline_test_and_update_expectations):
- (RebaselineTest):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
-
-2012-03-15 Ojan Vafai <ojan@chromium.org>
-
- Specifier collapsing when writing test expectations lines gets a number of cases wrong
- https://bugs.webkit.org/show_bug.cgi?id=81309
-
- Reviewed by Dimitri Glazkov.
-
- I've run this over all the lines in the current Chromium test_expectations.txt file,
- so I'm relatively confident we now cover all the cases.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfigurationConverter.__init__):
- (TestConfigurationConverter.collapse_macros):
- (TestConfigurationConverter.collapse_macros.collapse_individual_specifier_set):
- (TestConfigurationConverter):
- (TestConfigurationConverter.intersect_combination):
- (TestConfigurationConverter.symmetric_difference):
- (TestConfigurationConverter.to_specifiers_list):
- (TestConfigurationConverter.to_specifiers_list.try_collapsing):
- (TestConfigurationConverter.to_specifiers_list.try_abbreviating):
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- (make_mock_all_test_configurations_set):
- (TestConfigurationConverterTest.test_symmetric_difference):
- (TestConfigurationConverterTest.test_to_config_set):
- (TestConfigurationConverterTest.test_macro_expansion):
- (TestConfigurationConverterTest.test_to_specifier_lists):
- (TestConfigurationConverterTest.test_converter_macro_collapsing):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- The android port uses "arm" as it's architecture, which is technically correct,
- but considerably complicates making collapsing work. We probably should kill
- the concept of architecture entirely. The benefits are not worth the code
- complexity.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_all_test_configurations):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
-
-2012-03-16 Dinu Jacob <dinu.jacob@nokia.com>
-
- [Qt][Wk2] Assertion Failure and crash on file upload
- https://bugs.webkit.org/show_bug.cgi?id=80854
-
- Reviewed by Simon Hausmann.
-
- Added filePicker to WebView using experimental API.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/icons/folder.png: Added.
- * MiniBrowser/qt/icons/titlebar.png: Added.
- * MiniBrowser/qt/icons/up.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/FilePicker.qml: Added.
-
-2012-03-16 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Updating email for committer.py script.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-16 Robert Kroeger <rjkroege@chromium.org>
-
- [chromium] DRT: Add support for sending gesture scrolls without a begin
- https://bugs.webkit.org/show_bug.cgi?id=81292
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureScrollFirstPoint):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
-
-2012-03-02 Carlos Garcia Campos <cgarcia@igalia.com> and Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] WebKitIconDatabase doesn't keep icons cached
- https://bugs.webkit.org/show_bug.cgi?id=56200
-
- Reviewed by Martin Robinson.
-
- Add support for favicons in GtkLauncher.
-
- * GtkLauncher/main.c:
- (activateUriEntryCb):
- (iconLoadedCb):
- (createBrowser):
-
-2012-03-16 Adam Barth <abarth@webkit.org>
-
- Remove sheriff-bot's last-green-revision command
- https://bugs.webkit.org/show_bug.cgi?id=81314
-
- Reviewed by Eric Seidel.
-
- This command is a cruel joke. WebKit doesn't really ever have a
- last-green-revision.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot._find_green_revision):
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- (MockBuildBot.builder_statuses):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_find_green_revision):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (IRCCommand.execute):
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- (SheriffIRCBotTest.test_help):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PatchesToReview.execute):
-
-2012-03-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make gccdepends test aware of broken icecream deps generation
-
- Icecream seems to build the files without passing -o to gcc with
- the original destination path, which means the target name in the
- dependency file is wrong.
-
- Also, echo something to the final file instead of just touching it,
- so it's not deleted on every build.
-
- Reviewed by Simon Hausmann.
-
- * qmake/config.tests/gccdepends/gccdepends.pro:
-
-2012-03-16 Kihong Kwon <kihong.kwon@samsung.com>
-
- Support for Battery Status API
- https://bugs.webkit.org/show_bug.cgi?id=62698
-
- Add include directory and file.
- http://www.w3.org/TR/battery-status/
-
- Reviewed by Adam Barth.
-
- * Scripts/build-webkit:
-
-2012-03-16 Kishore Bolisetty <kbolisetty@innominds.com>
-
- check-webkit-style fails on LayoutTests/platform/efl/test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=81007
-
- Reviewed by Adam Barth.
-
- A dedidcated build slave is available for efl on build.webkit.org.
- This change add's an entry for the elf port in list of available port builders.
- This is required because test_expectations.py when triggered, looks for a valid port object for the specified port.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-03-16 Adam Barth <abarth@webkit.org>
-
- [webkitpy] StatusServer.next_work_item has an incorrectly named local variable
- https://bugs.webkit.org/show_bug.cgi?id=81302
-
- Reviewed by Eric Seidel.
-
- This is a trivial patch, but the variable name turned up in a grep of
- webkitpy and looks like copy pasta.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer.next_work_item):
-
-2012-03-16 Andrew Lo <anlo@rim.com>
-
- [BlackBerry] Enable PAGE_VISIBILITY_API
- https://bugs.webkit.org/show_bug.cgi?id=81257
-
- Enable Page Visibility API for BlackBerry.
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit:
-
-2012-03-16 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Add computedStyleIncludingVisitedInfo to DumpRenderTreeSupport
- https://bugs.webkit.org/show_bug.cgi?id=81232
-
- Reviewed by Philippe Normand.
-
- Use the newly-added helper method in DumpRenderTreeSupportGtk.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::computedStyleIncludingVisitedInfo):
-
-2012-03-15 Eric Seidel <eric@webkit.org>
-
- Move parse_bug_id into config/urls in preparation for re-use elsewhere.
- https://bugs.webkit.org/show_bug.cgi?id=81313
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (parse_bug_id_from_changelog):
- * Scripts/webkitpy/common/config/urls.py:
- (parse_bug_id):
- * Scripts/webkitpy/common/config/urls_unittest.py: Copied from Tools/Scripts/webkitpy/common/config/urls.py.
- (URLsTest):
- (URLsTest.test_parse_bug_id):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (test_parse_bug_id):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (_post_error_and_check_for_bug_url):
- * Scripts/webkitpy/tool/bot/sheriff.py:
- (Sheriff.post_rollout_patch):
- (Sheriff.post_chromium_deps_roll):
-
-2012-03-15 Adam Barth <abarth@webkit.org>
-
- The commit-queue should fast-track patches that have already passed the testing EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=81305
-
- Reviewed by Eric Seidel.
-
- If a patch has already passed the testing EWS bots (currently only the
- chromium-ews bot), we should be able to land the patch without running
- the tests again. This patch is somewhat risky in that the tests might
- have been broken between when the EWS bots ran and when the
- commit-queue is processing the patch. If that turns out to be a
- problem in practice, we'll tighten up this fast-track in some way,
- likely by making sure that the pass status is recent.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- (CommitQueueTaskDelegate.did_pass_testing_ews):
- (CommitQueueTask._did_pass_tests_recently):
- (CommitQueueTask.run):
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (MockCommitQueue.did_pass_testing_ews):
- (test_fast_success_case):
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue.did_pass_testing_ews):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (test_did_pass_testing_ews):
-
-2012-03-15 Kentaro Hara <haraken@chromium.org>
-
- [PerformanceTests] run-perf-tests should output correct units
- https://bugs.webkit.org/show_bug.cgi?id=78303
-
- Reviewed by Ryosuke Niwa.
-
- Previously run-perf-tests just supported "ms" for units.
- Consequently, Dromaeo perf tests had been reporting runs/s as "ms".
- This patch fixes run-perf-tests so that they can support custom units.
- The default unit is "ms".
-
- The test result looks like this:
-
- $ ./Tools/Scripts/run-perf-tests Dromaeo/dom-attr.html
- RESULT Dromaeo: dom-attr= 6465.9525483 runs/s
- median= 0.0 runs/s, stdev= 24.2983433436 runs/s, min= 6435.87649402 runs/s, max= 6515.63693392 runs/s
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._process_parser_test_result):
-
-2012-03-15 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build change after wtf path changes.
-
- * DumpRenderTree/win/ImageDiffWinCairoCommon.vsprops: Updated include
- directories to look at the private header directory to find 'wtf'.
-
-2012-03-15 Kent Tamura <tkent@chromium.org>
-
- REGRESSION(r110595): webkit-patch suggest-reviewers doesn't work
- https://bugs.webkit.org/show_bug.cgi?id=81293
-
- Reviewed by Adam Barth.
-
- r110595 introduced new format of the author field of ChangeLog entry:
- "Adam Barth <abarth@webkit.org> && Benjamin Poulain <bpoulain@apple.com>"
- Updte chanelog.py to support it.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry._split_contributor_names):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_parse_authors):
-
-2012-03-15 Lynn Neir <lynn.neir@skype.net>
-
- Implement LayoutTestController::setValueForUser on Windows https://bugs.webkit.org/show_bug.cgi?id=55834
-
- Implemented setValueForUser in both DumpRenderTree and WebKitTestRunner.
-
- Reviewed by Jessie Berlin.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setValueForUser):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setValueForUser):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-03-15 Adam Barth <abarth@webkit.org>
-
- Update the start-queue.sh script to match what we're using on the bots
- https://bugs.webkit.org/show_bug.cgi?id=81277
-
- Reviewed by Eric Seidel.
-
- Over time we've added more magic git commands to clean up the local repo after
- it has been borked in various ways. The idea behind this sequence is to clear
- out any changes in the working copy and then to rebuild the master branch from
- origin/master.
-
- This patch also removes the watchdog timer that we've stopped using on the
- bots.
-
- This patch was reviewed on <https://github.com/eseidel/webkit/pull/1>.
- Note: Eric and I are experimenting with GitHub to see if it might be
- useful for WebKit. If you have thoughts on this topic, please feel
- free to grab Eric or me on #webkit to chat. I assume that he and I are
- the only ones who care about this file so using this alternative
- process for this patch shouldn't cause any trouble.
-
- * EWSTools/start-queue.sh:
-
-2012-03-15 Adam Barth <abarth@webkit.org>
-
- The commit-queue can hang when the test_expectations.txt style check fails during commit
- https://bugs.webkit.org/show_bug.cgi?id=81251
-
- Reviewed by Eric Seidel.
-
- We forgot to check the --non-interactive flag, so we end up prompting
- the "user" who doesn't exist on the bot. We might consider teaching
- the User class about non-interactive if we have this sort of bug again.
-
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit.options):
- (Commit._check_test_expectations):
- (Commit.run):
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- (CommitTest.test_check_test_expectations):
-
-2012-03-15 Jessie Berlin <jberlin@apple.com>
-
- fast/dom/Window/window-properties.html and fast/dom/prototype-inheritance-2.html failing on
- Mac WK2 because WebAudio is not enabled
- https://bugs.webkit.org/show_bug.cgi?id=81259
-
- Reviewed by Dan Bernstein.
-
- Enable WebAudio so that it appears in the window object in the tests.
- The webaudio tests are all still skipped in the Mac Skipped list.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-03-15 David Levin <levin@chromium.org>
-
- Various autoresize fixes.
- https://bugs.webkit.org/show_bug.cgi?id=81199
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset): Stop using the deprecated api that was removed.
-
-2012-03-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Actually use --release and --debug command line options in run-gtk-test
- https://bugs.webkit.org/show_bug.cgi?id=81234
-
- Reviewed by Philippe Normand.
-
- Actually handle --release and --debug command line options to
- create the build directory, falling back to current hack to detect
- whether it's a Release or Debug build when both options are missed.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): Receive options too.
- (TestRunner._get_top_level_directory): Helper function to get the
- top level directory.
- (TestRunner._get_build_directory): Helper function to get the
- build directory depending on --release/--debug command line
- options or gessing it if both options are missing.
- (TestRunner._ensure_accessibility_daemon_is_running): Use
- self-options now.
- (TestRunner.run): Ditto.
- (TestRunner.run.run_tests): Pass options to the constructor
- instead of run().
-
-2012-03-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Run unit tests with --verbose in the bots
- https://bugs.webkit.org/show_bug.cgi?id=81230
-
- Reviewed by Martin Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunGtkAPITests): Add --verbose to run-gtk-test command.
-
-2012-03-15 Kevin Ollivier <kevino@theolliviers.com>
-
- Move wx port to using export macros
- https://bugs.webkit.org/show_bug.cgi?id=77279
-
- Reviewed by Hajime Morita.
-
- * waf/build/settings.py:
- (common_configure):
-
-2012-03-15 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK build fix attempt after r110845.
-
- * Scripts/run-gtk-tests: Added --release and --debug options.
-
-2012-03-15 Dominik Röttsches <dominik.rottsches@linux.intel.com>
-
- Parametrize run-with-jhbuild and update-webkitgtk-libs with platform --gtk/--efl
- https://bugs.webkit.org/show_bug.cgi?id=79673
-
- Preparatory work for bringing jhbuild enabled build to EFL port.
-
- Reviewed by Philippe Normand.
-
- * Scripts/update-webkit-libs-jhbuild: Copied from Tools/Scripts/update-webkitgtk-libs.
- * Scripts/update-webkitgtk-libs:
- * gtk/run-with-jhbuild:
- * jhbuild/jhbuild-wrapper: Copied from Tools/gtk/run-with-jhbuild.
- (top_level_path):
- (jhbuild_installed):
- (jhbuild_cloned):
- (jhbuild_at_expected_revision):
- (update_jhbuild):
- (clone_jhbuild):
- (install_jhbuild):
- (update_webkit_libs_jhbuild):
- (determine_platform):
- (ensure_jhbuild):
-
-2012-03-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add command line options to run-gtk-tests script
- https://bugs.webkit.org/show_bug.cgi?id=81218
-
- Reviewed by Philippe Normand.
-
- Following command line options have been added:
-
- -v, --verbose: to run gtester with --verbose. That would be used
- by the bots to make it easier to know which test case it failing.
-
- --display: to use a different display for Xvfb
-
- It's also possible to pass one or more tests as arguments.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): Receive command line arguments.
- (TestRunner._get_tests): Get all the tests or the ones passed by
- command line arguments.
- (TestRunner._ensure_accessibility_daemon_is_running): Use display
- command line argument.
- (TestRunner.run): Pas command line options.
- (TestRunner.run.run_tests): Pass command line arguments.
-
-2012-03-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] WebKit2APITests/TestPrinting timeout in the bots
- https://bugs.webkit.org/show_bug.cgi?id=81211
-
- Reviewed by Philippe Normand.
-
- Add gtk+ patch to fix timeout in the bots. A similar patch has
- already landed in updatream gtk+, see
- http://git.gnome.org/browse/gtk+/commit/?id=5ebfad5d091f4c9d9c6e60364fad4c60842f027f
-
- * gtk/jhbuild.modules:
- * gtk/patches/gtk+-3.0.12-gtkprinter.patch: Added.
-
-2012-03-14 Gustavo Noronha Silva <gns@gnome.org>
-
- sheriffbot should also be addressable with a comma in addition to colon
- https://bugs.webkit.org/show_bug.cgi?id=81101
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/net/irc/ircbot.py:
- (IRCBot.on_pubmsg):
-
-2012-03-15 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] MiniBrowser scroll indicators should not scroll out of view
- https://bugs.webkit.org/show_bug.cgi?id=81131
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/qml/ScrollIndicator.qml:
-
-2012-03-14 Chris Fleizach <cfleizach@apple.com>
-
- AX: ARIA tables need to support selected rows attribute/select rows changed notification
- https://bugs.webkit.org/show_bug.cgi?id=79821
-
- Reviewed by Beth Dakin.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (rowAtIndexCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::rowAtIndex):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::rowAtIndex):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::rowAtIndex):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::rowAtIndex):
-
-2012-03-14 Tim Horton <timothy_horton@apple.com>
-
- NRWT should respect --additional-platform-directory's Skipped list
- https://bugs.webkit.org/show_bug.cgi?id=81172
-
- Reviewed by Timothy Hatcher.
-
- Respect the Skipped file inside all paths included via the --additional-platform-directory option. Test results
- from said path are already used, but the Skipped file is ignored.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_skipped_file_search_paths):
-
-2012-03-14 Ojan Vafai <ojan@chromium.org>
-
- Unreviewed, rolling out r110783.
- http://trac.webkit.org/changeset/110783
- https://bugs.webkit.org/show_bug.cgi?id=81054
-
- Caused existing test expectation lines to expand to one for
- each test configuration.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.has_warnings):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_macro_overrides):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._save_baseline):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_tests_to_update):
-
-2012-03-13 Jon Lee <jonlee@apple.com>
-
- Separate NOTIFICATIONS and LEGACY_NOTIFICATIONS
- https://bugs.webkit.org/show_bug.cgi?id=80922
- <rdar://problem/11035082>
-
- Reviewed by Jian Li.
-
- You can include either NOTIFICATIONS or LEGACY_NOTIFICATIONS and have a complete API.
- LEGACY_NOTIFICATIONS should cover all of the previous functionality, and NOTIFICATIONS will cover the
- new API. Therefore, APIs that are common between the two will have:
- #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
-
- This patch initially sets both to be exactly the same. As other bugs with patches begin to migrate to
- the new API, the defines will begin to split. This allows ports to decide which set of APIs to include.
-
- Update everything to be #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::simulateDesktopNotificationClick):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetTestController):
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
- (DRTDesktopNotificationPresenter::checkNotificationPermission):
-
-2012-03-13 Ojan Vafai <ojan@chromium.org>
-
- Have webkit-patch rebaseline-test update test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=81054
-
- Reviewed by Dirk Pranke.
-
- This will allow us to use the All Failures tab in garden-o-matic
- to rebaseline tests without making test_expectations.txt stale.
-
- It's conservative and only removes lines if the test is
- not flaky and fails in a way the rebaseline would fix (e.g.
- CRASH/TIMEOUT will not be touched).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.remove_configuration_from_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RemoveConfigurationsTest):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._is_supported_port):
- (RebaselineTest):
- (RebaselineTest._update_expectations_file):
- (RebaselineTest._rebaseline_test_and_update_expectations):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file):
-
-2012-03-14 Jessie Berlin <jberlin@apple.com>
-
- Crash in WKTR under addChromeInputField due to using 0 as a key in a HashMap
- https://bugs.webkit.org/show_bug.cgi?id=81167
-
- Reviewed by Sam Weinig.
-
- Do not use 0 as a key in a HashMap.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- cacheLayoutTestControllerCallback uses the enum as keys for the callback map.
-
-2012-03-14 Ojan Vafai <ojan@chromium.org>
-
- Add the chromium lion bot to garden-o-matic and remove
- the platform_move_to in builders.py since the Chromium Lion
- port is now a normal port.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-03-14 Dirk Pranke <dpranke@chromium.org>
-
- Fix regression/crash introduced in r110724 - bad type passed from skipped_tests() by default.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_tests):
-
-2012-03-14 Dirk Pranke <dpranke@chromium.org>
-
- Please add a way to manually skip some tests in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=81019
-
- Reviewed by Ojan Vafai.
-
- This patch implements the -i / --ignore-tests flag from ORWT
- and refactors the test_expectations.py code slightly to handle
- it.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.parse_expectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_add_skipped_tests):
- (test_add_skipped_tests_duplicate):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_ignore_tests):
- (MainTest.test_ignore_tests.assert_ignored):
-
-2012-03-14 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: run with no args on lion, is putting baselines in platform/mac-lion, not platform/mac
- https://bugs.webkit.org/show_bug.cgi?id=81028
-
- Reviewed by Ojan Vafai.
-
- The mac port had incorrect lookups for 'mac-lion' and
- 'mac-future' in some places. This patch fixes that and adds a
- bunch of tests.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.baseline_path):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.assert_skipped_file_search_paths):
- (MacTest.test_skipped_file_search_paths):
- (_assert_search_path):
- (test_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._skipped_file_search_paths):
-
-2012-03-13 Jer Noble <jer.noble@apple.com>
-
- Lion Intel Debug WebKit2 Tests crashing under [WKFullScreenWindowController _startEnterFullScreenAnimationWithDuration:]
- https://bugs.webkit.org/show_bug.cgi?id=81056
-
- Reviewed by Jessie Berlin.
-
- Intercept beganEnterFullScreen and beganExitFullScreen and turn them into no-ops (plus logging).
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::beganEnterFullScreen):
- (WTR::InjectedBundlePage::beganExitFullScreen):
-
-2012-03-14 Alexander Færøy <alexander.faeroy@nokia.com>
-
- The width and height of the scroll indicators in the MiniBrowser does
- not consider the offset margins.
- https://bugs.webkit.org/show_bug.cgi?id=81112
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This patch fixes the issue by withdrawing two times the anchor
- margins.
-
- * MiniBrowser/qt/qml/ScrollIndicator.qml:
-
-2012-03-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Implement LayoutTestController::clearBackForwardList
- https://bugs.webkit.org/show_bug.cgi?id=80142
-
- Adding missing implementation clearBackForwardList to EFL's
- LayoutTestController. This implementation allows us to unskip
- tests connected with history.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::clearBackForwardList): Implemented.
-
-2012-03-13 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL][DRT] Expose window.internals object
- https://bugs.webkit.org/show_bug.cgi?id=79900
-
- Exposes window.internals for EFL's DRT. Makes possible to
- remove some tests from the skip list.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWindowObjectCleared):
-
-2012-03-13 Adam Barth <abarth@webkit.org> && Benjamin Poulain <bpoulain@apple.com>
-
- Always enable ENABLE(CLIENT_BASED_GEOLOCATION)
- https://bugs.webkit.org/show_bug.cgi?id=78853
-
- Reviewed by Adam Barth.
-
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-12 Antonio Gomes <agomes@rim.com>
-
- Convert nodesFromRect tests to use Internals interface
- https://bugs.webkit.org/show_bug.cgi?id=80886
-
- Reviewed by Ryosuke Niwa.
-
- This clean up allows to remove port specific bits of each
- DRT implementation that supports testing Document::nodesFromRect,
- in favor of making use of the 'Internals' interface to test it.
-
- This makes its code conveniently more expansible and cleaner.
-
- Also removed stubs from Win and EFL DRTs.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
-
-2012-03-13 Ojan Vafai <ojan@chromium.org>
-
- Rebaselining for a new port doesn't work right with multiple fallback ports
- https://bugs.webkit.org/show_bug.cgi?id=80932
-
- Reviewed by Adam Barth.
-
- Since chromium-leopard also falls back to mac-leopard, we need to
- copy the existing result for both chromium-leopard and chromium-snowleopard
- before doing lion rebaselines.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (fallback_port_names_for_new_port):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest):
- (RebaselineTest._copy_existing_baseline):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaseline):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-03-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Tweak minibrowser UI
-
- Add some margins to the scroll indicators, and set a dark background
- color so you see the page dimensions.
-
- Reviewed by Antonio Gomes.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ScrollIndicator.qml:
-
-2012-03-13 ChangSeok Oh <shivamidow@gmail.com>
-
- [EFL] [DRT] Implement scheduleAsynchronousKeyDown.
- https://bugs.webkit.org/show_bug.cgi?id=79601
-
- Reviewed by Gustavo Noronha Silva.
-
- Extracted shareable code from keyDownCallback and then added createKeyEventInfo.
- createKeyEventInfo creates a new structure KeyEventInfo that has keyName and modifiers
- and is taken over to sendKeyDown.
- Added sendKeyDown and sendAsynchronousKeyDown to evaluate keyDown event directly
- and asynchronously. Eventually, sendAsynchronousKeyDown calls sendKeyDown.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (KeyEventInfo::KeyEventInfo):
- (KeyEventInfo):
- (createKeyEventInfo):
- (sendKeyDown):
- (keyDownCallback):
- (sendAsynchronousKeyDown):
- (scheduleAsynchronousKeyDownCallback):
-
-2012-03-12 Ojan Vafai <ojan@chromium.org>
-
- webkit-patch optimize-baselines sometimes creates a mac-future result
- https://bugs.webkit.org/show_bug.cgi?id=80717
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (_baseline_search_hypergraph):
- (BaselineOptimizer._find_optimal_result_placement):
- (BaselineOptimizer._filter_virtual_ports):
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_no_add_mac_future):
-
-2012-03-12 Jessie Berlin <jberlin@apple.com>
-
- More Windows build fixing.
-
- * DumpRenderTree/win/WorkQueueItemWin.cpp:
-
-2012-03-12 Jessie Berlin <jberlin@apple.com>
-
- More Windows build fixing.
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- * DumpRenderTree/win/EditingDelegate.cpp:
- * DumpRenderTree/win/EventSender.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/win/UIDelegate.cpp:
-
-2012-03-12 Dirk Pranke <dpranke@chromium.org>
-
- remove the 'gpu' group from the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=80353
-
- Reviewed by Adam Barth.
-
- Since those bots are obsolete, we don't need this any more.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testPlatformAndBuildType):
- (testHtmlForTestTypeSwitcherGroup):
-
-2012-03-12 Dirk Pranke <dpranke@chromium.org>
-
- remove graphics_type from webkitpy.layout_tests.models.test_configuration
- https://bugs.webkit.org/show_bug.cgi?id=80643
-
- Reviewed by Ojan Vafai.
-
- Now that the chromium-gpu ports are gone, there's no need for
- the graphics_type CPU/GPU distinction. Most of this change is
- just updating tests accordingly.
-
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- (TestExpectationEditorTests):
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfiguration.__init__):
- (TestConfiguration.category_order):
- (TestConfiguration.__str__):
- (TestConfiguration.__repr__):
- (TestConfiguration.__hash__):
- (TestConfigurationConverter.to_specifiers_list):
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- (make_mock_all_test_configurations_set):
- (TestConfigurationTest.test_items):
- (TestConfigurationTest.test_keys):
- (TestConfigurationTest.test_str):
- (TestConfigurationTest.test_repr):
- (TestConfigurationTest.test_hash):
- (TestConfigurationTest.test_hash.query_unknown_key):
- (TestConfigurationTest.test_eq):
- (TestConfigurationTest.test_values):
- (SpecifierSorterTest.test_specifier_priority):
- (SpecifierSorterTest.test_sort_specifiers):
- (TestConfigurationConverterTest.test_to_config_set):
- (TestConfigurationConverterTest.test_macro_expansion):
- (TestConfigurationConverterTest.test_to_specifier_lists):
- (TestConfigurationConverterTest.test_converter_macro_collapsing):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_error_on_different_build_type):
- (TestExpectationSerializerTests.test_parsed_to_string):
- (TestExpectationSerializerTests.test_reconstitute_only_these):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.name):
- (Port.version):
- (Port.test_configuration):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_check_illegal_port_names):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_baseline_path):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.all_test_configurations):
- (TestPort._all_build_types):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
- (GardeningExpectationsUpdaterTest.test_unknown_failure_type):
- (GardeningExpectationsUpdaterTest.test_add_new_expectation):
- (GardeningExpectationsUpdaterTest.test_replace_old_expectation):
- (GardeningExpectationsUpdaterTest.test_pass_expectation):
- (GardeningExpectationsUpdaterTest.test_supplement_old_expectation):
- (GardeningExpectationsUpdaterTest.test_spurious_updates):
-
-2012-03-12 Dirk Pranke <dpranke@chromium.org>
-
- _runtime_feature_list isn't supported on Apple Mac DRT
- https://bugs.webkit.org/show_bug.cgi?id=80906
-
- Reviewed by Eric Seidel.
-
- It looks like this feature is actually only supported on the Win
- DRT port, so this patch reworks the code to make that clearer
- and reduce unnecessary overrides.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._path_to_webcore_library):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._path_to_webcore_library):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._runtime_feature_list):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (TestWebKitPort.__init__):
- (TestWebKitPort.all_test_configurations):
- (test_skipped_directories_for_features):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
- (WinPort._runtime_feature_list):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_operating_system):
- (WinPortTest):
- (WinPortTest.test_runtime_feature_list):
-
-2012-03-12 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Temporary build-fix for the Android bot
- https://bugs.webkit.org/show_bug.cgi?id=80862
-
- Reviewed by Adam Barth.
-
- Manually set the environmental variables required to compile source
- files through the Android NDK instead of relying on the envsetup.sh
- script. A proper fix will be landed to Chromium ASAP, and following
- a Chromium roll into WebKit this code will be removed.
-
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
-
-2012-03-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use right construct to detect config_test_gccdepends
-
- Reviewed by Andreas Kling.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-03-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Expose location of WebKit's bin and imports dir through module file
-
- Reviewed by Andreas Kling.
-
- * qmake/qt_webkit.pri:
-
-2012-03-12 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Add support for rudimentary scroll indicators in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=80832
-
- Reviewed by Tor Arne Vestbø.
-
- Add a basic scroll indicator component to MiniBrowser so that it
- behaves similar to the ScrollDecorator QML component.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ScrollIndicator.qml: Added.
-
-2012-03-12 C Anthony Risinger <anthony@xtfx.me>
-
- [GTK] r110296 included an extra $ in @$(AM_V_GEN)
- https://bugs.webkit.org/show_bug.cgi?id=80809
-
- Reviewed by Philippe Normand.
-
- * GNUmakefile.am: Add `$` to @(AM_V_GEN), else /bin/sh syntax error
-
-2012-03-12 Ming Xie <mxie@rim.com>
-
- [BlackBerry] build-webkit doesn't recognize "--cmakearg" for the BlackBerry port
- https://bugs.webkit.org/show_bug.cgi?id=80812
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit: Add $cmakeArgs to buildCMakeProjectOrExit()
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments): Remove "PUBLIC_BUILD=0" define
-
-
-2012-03-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix build with newer Qt 5.
-
- Reviewed by Tor Arne Vestbø.
-
- Newer Qt 5 renames QDeclarativeFoo to QQmlFoo and provides backwards compatible
- renames, which however do trigger a #warning. Until we _require_ a newer Qt 5
- we should disable -Werror.
-
- Also load(moc) for the availability of QMAKE_MOC in various derived sources. The
- implicit load was removed recently.
-
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-03-11 Maciej Stachowiak <mjs@apple.com>
-
- Add --instruments option to sunspider to profile with Instruments
- https://bugs.webkit.org/show_bug.cgi?id=80783
-
- Reviewed by Filip Pizlo.
-
- * Scripts/run-sunspider:
-
-2012-03-11 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- [Qt] [WK2] Support threaded renderer in WK2
- https://bugs.webkit.org/show_bug.cgi?id=76661
-
- Remove disabling of threaded rendering.
-
- Reviewed by Noam Rosenthal.
-
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2012-03-09 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2] run-perf-tests should be able to run with WTR
- https://bugs.webkit.org/show_bug.cgi?id=80042
-
- Reviewed by Martin Robinson.
-
- Add an option to PerfTestRunner to use WebKitTestRunner instead of
- DumpRenderTree and add the '--no-timeout' flag to WebKitTestRunner
- to avoid timing out when running performance tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle): Initialize m_useWaitToDumpWatchdogTimer
- to true.
- (WTR::InjectedBundle::didReceiveMessage): Unpack the 'BeginTest' message
- as a dictionary containing DumpPixels and UseWaitToDumpWatchdogTimer keys.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::useWaitToDumpWatchdogTimer): Make m_useWaitToDumpWatchdogTimer
- publicly accessible.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::waitUntilDone): Only initialize the watchdog if it
- is required.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController): Initialize m_useWaitToDumpWatchdogTimer
- to true.
- (WTR::TestController::initialize): Set m_useWaitToDumpWatchdogTimer to false
- if '--no-timeout' option is present.
- (WTR::TestController::runUntil): Translate TimeoutDuration to a proper timeout
- value, or -1.0 if timeout should not occur.
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::useWaitToDumpWatchdogTimer): Make m_useWaitToDumpWatchdogTimer
- publicly accessible.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke): Pack the 'BeginTest' message as a dictionary,
- containing DumpPixels and UseWaitToDumpWatchdogTimer keys and corresponding values.
- Waiting for final message should not time out if not necessary.
- * WebKitTestRunner/gtk/TestControllerGtk.cpp:
- (WTR::TestController::platformRunUntil): Only set up a timeout if necessary.
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::platformRunUntil): Ditto.
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformRunUntil): Add a FIXME, indicating functionality
- is missing.
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformRunUntil): Ditto.
-
-2012-03-09 Jon Lee <jonlee@apple.com>
-
- Rename NotificationPresenter to NotificationClient
- https://bugs.webkit.org/show_bug.cgi?id=80488
- <rdar://problem/10965558>
-
- Reviewed by Kentaro Hara.
-
- Refactor to use renamed WebCore::NotificationClient.
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
- (DRTDesktopNotificationPresenter::checkNotificationPermission):
-
-2012-03-07 James Robinson <jamesr@chromium.org>
-
- [chromium] Deprecate renderDirectlyToWebView parameter of WebViewClient::createGraphicsContext3D()
- https://bugs.webkit.org/show_bug.cgi?id=80523
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createGraphicsContext3D):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-03-09 Eric Seidel <eric@webkit.org>
-
- build-webkit should build Source/WTF on Mac
- https://bugs.webkit.org/show_bug.cgi?id=80728
-
- Reviewed by Adam Barth.
-
- We'll add other ports to this list in future commits.
-
- * Scripts/build-webkit:
-
-2012-03-09 Jon Lee <jonlee@apple.com>
-
- Add support for ENABLE(LEGACY_NOTIFICATIONS)
- https://bugs.webkit.org/show_bug.cgi?id=80497
-
- Reviewed by Adam Barth.
-
- Prep for b80472: Update API for Web Notifications
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-09 Ashod Nakashian <ashodnakashian@yahoo.com>
-
- Bash scripts should support LF endings only
- https://bugs.webkit.org/show_bug.cgi?id=79509
-
- Reviewed by David Kilzer.
-
- * EWSTools/boot.sh: Added properties svn:executable and svn:eol-style.
- * EWSTools/start-queue.sh: Added property svn:eol-style.
- * Scripts/webkit-tools-completion.sh: Added properties svn:executable and svn:eol-style.
- * WebKitTestRunner/win/build-generated-files.sh: Added properties svn:executable and svn:eol-style.
- * iExploder/iexploder-1.7.2/tools/release_src.sh: Added property svn:eol-style.
- * iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh: Added property svn:eol-style.
-
-2012-03-09 Ionut Biru <ibiru@archlinux.org>
-
- [BUILD] use detected python to run generate-gtkdoc
- https://bugs.webkit.org/show_bug.cgi?id=80695
-
- Reviewed by Gustavo Noronha Silva.
-
- * GNUmakefile.am: Use $(PYTHON) instead of plain `python`
-
-2012-03-09 Nat Duca <nduca@chromium.org>
-
- Make check-webkit-style complain about "no new tests" lines in changelogs
- https://bugs.webkit.org/show_bug.cgi?id=80582
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/checkers/changelog.py:
- (ChangeLogChecker.check_entry):
- * Scripts/webkitpy/style/checkers/changelog_unittest.py:
- (ChangeLogCheckerTest.test_no_new_tests):
-
-2012-03-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r110250.
- http://trac.webkit.org/changeset/110250
- https://bugs.webkit.org/show_bug.cgi?id=80682
-
- It made NRWT ignore test_expectations.txt on Qt-WK2 and ignore
- qt-linux at all. (Requested by Ossy on #webkit).
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.determine_full_port_name):
- (QtPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
- (QtPortTest._assert_search_path):
- (QtPortTest.test_baseline_search_path):
-
-2012-03-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use Qt's module system for install rules and depending on QtWebKit
-
- Instead of rolling our own install rules we now use the same approach as
- every other Qt module, by loading qt_module.prf and qt_module_config.prf.
-
- This ensures that we follow the same semantics as the rest of Qt on
- what sort of config options are enabled by default (create_cmake eg.).
- It also allows us to use QT += webkit instead of the workaround we had
- with CONFIG += qtwebkit.
-
- We do however force Qt to always treat our build as a non-developer build,
- so the libraries will end up in the WebKit lib directory instead of the
- qtbase directory (as with a normal developer-build). This allows us to
- keep the webkit-build self-contained. If Qt is a developer build we still
- copy the module file manually to Qt, so that you don't have to install
- WebKit to make it available.
-
- For non-developer builds of Qt, it is still possible to use the built
- WebKit libraries without having to install them, by having the variable
- QMAKE_EXTRA_MODULE_FORWARDS set in the project's .qmake.cache file,
- pointing to $WEBKITOUTUTDIR/$CONFIGURATION/modules.
-
- https://bugs.webkit.org/show_bug.cgi?id=80590
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * MiniBrowser/qt/BrowserWindow.cpp:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- * MiniBrowser/qt/UrlLoader.cpp:
- * QtTestBrowser/QtTestBrowser.pro:
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/qtwebkit-private.prf: Removed.
- * qmake/mkspecs/features/qtwebkit.prf:
- * qmake/mkspecs/features/rpath.prf:
- * qmake/mkspecs/modules/qt_webkit.pri: Removed.
- * qmake/qt_webkit.pri: Added.
-
-2012-03-08 Igor Oliveira <igor.o@sisa.samsung.com>
-
- Unreviewed. Update my email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-08 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Recent changes to chromium.py etc. broke chromium_android.py
- https://bugs.webkit.org/show_bug.cgi?id=80623
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._start):
-
-2012-03-08 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Exception running reftest with --no-pixel-tests
- https://bugs.webkit.org/show_bug.cgi?id=80642
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.__init__):
- (ChromiumDriver._wrapper_options):
-
-2012-03-08 Rafael Brandao <rafael.lobo@openbossa.org>
-
- [NRWT] Fix --platform=qt-5.0 --new-baseline combo
- https://bugs.webkit.org/show_bug.cgi?id=72489
-
- Reviewed by Dirk Pranke.
-
- NRWT: The default platform name for Qt combined with --webkit-test-runner is now
- "qt-5.0-wk2" instead of "qt-linux" and that name is now prefered for tests.
- --platform will override the platform name and then we'll use it.
-
- ORWT: We check for qt version and use platform name "qt-4.8" if the version is lower
- than 5.0.0, and then we choose between "qt-5.0-wk1" and "qt-5.0-wk2". --platform will
- override it in the end.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.determine_full_port_name):
- (QtPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
- (QtPortTest._assert_search_path):
- (QtPortTest.test_baseline_search_path):
-
-2012-03-08 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=80463
- RenderImage is using the wrong origin when calling addRelevantRepaintedObject
- -and corresponding-
- <rdar://problem/10970221>
-
- Reviewed by Dan Bernstein.
-
- New test!
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp: Added.
- (TestWebKitAPI):
- (NewFirstVisuallyNonEmptyLayoutForImagesTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutForImagesTest::NewFirstVisuallyNonEmptyLayoutForImagesTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutForImagesTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/lots-of-images.html: Added.
-
-2012-03-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Prospective Windows build fix
-
- Don't assume that windows-builds will always run inside a cmd.exe shell.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-03-08 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10981173> Dashboard regions should not be in device space
-
- Reviewed by John Sullivan.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm: Added.
- (-[DeviceScaleFactorInDashboardRegionsUIDelegate webView:dashboardRegionsChanged:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-03-08 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch works oddly on local Git branches
- https://bugs.webkit.org/show_bug.cgi?id=76958
-
- Reviewed by Ojan Vafai.
-
- This change makes the '-g' flag to webkit-patch behave a
- little more consistently with git. The 'HEAD..' syntax
- is changed to 'HEAD....' (four dots), so as to not
- collide with the underlying git syntax. We also generalize
- the syntax to support any refname, so 'foo....' means
- diff against foo and include working copy changes.
-
- This change also adds the 'UPSTREAM' shortcut to identify
- whatever the current upstream/tracking branch is; this is
- useful if you have multiple local branches stacked up.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git._branch_from_ref):
- (Git):
- (Git._current_branch):
- (Git._upstream_branch):
- (Git.merge_base):
- (Git._commit_on_branch):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (GitSVNTest._second_local_commit):
- (GitSVNTest._two_local_commits):
- (GitSVNTest.test_commit_with_message_git_commit_range):
- (GitSVNTest.test_upstream_branch):
- (GitSVNTest.test_create_patch_working_copy_only):
- (GitSVNTest.test_changed_files_local_plus_working_copy):
- (GitSVNTest.test_changed_files_working_copy_only):
- (GitSVNTest.test_changed_files_upstream):
- * Scripts/webkitpy/tool/steps/options.py:
- (Options):
-
-2012-03-08 John Sullivan <sullivan@apple.com>
-
- Made extract-localizable-strings ignore NSLocalizedFileSizeDescription
-
- Reviewed by Eric Carlson.
-
- * Scripts/extract-localizable-strings:
- Added NSLocalizedFileSizeDescription to allowed list of tokens that start
- with NSLocalized. Also improved an error message to include the troublesome token.
-
-2012-03-08 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r110115.
- http://trac.webkit.org/changeset/110115
- https://bugs.webkit.org/show_bug.cgi?id=80581
-
- broke test-webkitpy (Requested by philn-tp on #webkit).
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.determine_full_port_name):
- (QtPort.baseline_search_path):
-
-2012-03-08 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed. Added myself to watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-03-07 Jessie Berlin <jberlin@apple.com>
-
- Clean Windows build fails after r110033
- https://bugs.webkit.org/show_bug.cgi?id=80553
-
- Rubber-stamped by Jon Honeycutt and Eric Seidel.
-
- Add the new JavaScriptCore include directory to some more vsprops files.
-
- * DumpRenderTree/win/ImageDiffCommon.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops:
-
-2012-03-07 Rafael Brandao <rafael.lobo@openbossa.org>
-
- [NRWT] Fix --platform=qt-5.0 --new-baseline combo
- https://bugs.webkit.org/show_bug.cgi?id=72489
-
- Reviewed by Dirk Pranke.
-
- NRWT: The default platform name for Qt combined with --webkit-test-runner is now
- "qt-5.0-wk2" instead of "qt-linux" and that name is now prefered for tests.
- --platform will override the platform name and then we'll use it.
-
- ORWT: We check for qt version and use platform name "qt-4.8" if the version is lower
- than 5.0.0, and then we choose between "qt-5.0-wk1" and "qt-5.0-wk2". --platform will
- override it in the end.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.determine_full_port_name):
- (QtPort.baseline_search_path):
-
-2012-03-07 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] MiniBrowser on desktop does not react to click events
- https://bugs.webkit.org/show_bug.cgi?id=80314
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Do not enable touch mocking on desktop mode.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
-
-2012-03-07 Ojan Vafai <ojan@chromium.org>
-
- Automatically move to the next test after rebaseline in the results view
- https://bugs.webkit.org/show_bug.cgi?id=80527
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2012-03-07 Ojan Vafai <ojan@chromium.org>
-
- garden-o-matic rebaseline is broken for ports that don't have a fallback port
- https://bugs.webkit.org/show_bug.cgi?id=80526
-
- Reviewed by Adam Barth.
-
- Passing "None" as the fallback port throws an error in "webkit-patch rebaseline-test"
- since there is no "None" port.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaseline):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline):
-
-2012-03-07 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove the TestWebPlugin's use of implicit FBO for offscreen contexts
- https://bugs.webkit.org/show_bug.cgi?id=80521
-
- Reviewed by Kenneth Russell.
-
- Switches TestWebPlugin from using a context created by WebViewClient::createGraphicsContext3D(..., false) over
- to an explicitly offscreen context with explicitly managed texture / FBO, so we can deprecate the
- renderDirectlyToHostWindow flag from WebViewClient::createGraphicsContext3D.
-
- Covered by platform/chromium/compositing/plugins/*
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::initialize):
- (TestWebPlugin::updateGeometry):
- (TestWebPlugin::initScene):
- (TestWebPlugin::destroyScene):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPlugin):
-
-2012-03-07 Philippe Normand <pnormand@igalia.com>
-
- [GTK] remove webkitpy dependency in run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=80500
-
- Reviewed by Martin Robinson.
-
- Replace Executive calls with bare subprocess calls.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
- (TestRunner._lookup_atspi2_binary):
- (TestRunner.run):
- (TestRunner.run.run_for_real):
-
-2012-03-07 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK build fix after r110059.
-
- * Scripts/run-gtk-tests:
- (TestRunner._check_if_tests_have_timed_out):
- (TestRunner.run.run_tests):
- (TestRunner):
-
-2012-03-07 Philippe Normand <pnormand@igalia.com>
-
- [GTK] race condition in run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=80495
-
- Reviewed by Martin Robinson.
-
- Refactored the script to wait the a11y dbus service becomes
- available before starting the tests.
-
- * Scripts/run-gtk-tests:
- (TestRunner._lookup_atspi2_binary):
- (TestRunner):
- (TestRunner._wait_dbus_service_and_run):
- (TestRunner._wait_dbus_service_and_run.on_name_appeared):
- (TestRunner._wait_dbus_service_and_run.on_name_vanished):
- (TestRunner.run):
- (TestRunner.run.bailout):
- (TestRunner.run.run_for_real):
-
-2012-03-07 Dinu Jacob <dinu.jacob@nokia.com>
-
- [Qt] REGRESSION(r109575) Broke tap-to-zoom gesture
- https://bugs.webkit.org/show_bug.cgi?id=80425
-
- Reviewed by Simon Hausmann.
-
- Set startScreenPos in mock touch point
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (MiniBrowserApplication):
-
-2012-03-07 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Windows build fix.
-
- Reviewed by Tor Arne Vestbø.
-
- Pass the -j parameter only to "make", not "nmake".
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-03-07 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix compilation without QtQuick1
- https://bugs.webkit.org/show_bug.cgi?id=80503
-
- Reviewed by Tor Arne Vestbø.
-
- Introduce HAVE_QQUICK1 as feature and added haveQtModule
- as convenience function.
-
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-03-07 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Add qmake config tests for JPEG and PNG library
- https://bugs.webkit.org/show_bug.cgi?id=80398
-
- Add JPEG and PNG library tests to config.tests and
- add error() abort to WebCore.pri if tests don't work.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/config.tests/libjpeg/libjpeg.cpp: Added.
- (main):
- * qmake/config.tests/libjpeg/libjpeg.pro: Added.
- * qmake/config.tests/libpng/libpng.cpp: Added.
- (main):
- * qmake/config.tests/libpng/libpng.pro: Added.
- * qmake/sync.profile:
-
-2012-03-07 Byungwoo Lee <bw80.lee@samsung.com>
-
- [EFL] Build warning: Fix warn_unused_result warnings.
- https://bugs.webkit.org/show_bug.cgi?id=79194
-
- Reviewed by Filip Pizlo.
-
- Fixed build warning which is getting generated when not using return
- value of a fuction, especially declared with warn_unused_result
- attribute.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (printImage):
-
-2012-03-07 Kangil Han <kangil.han@samsung.com>
-
- [DRT] Remove PlainTextController implementations.
- https://bugs.webkit.org/show_bug.cgi?id=79959
-
- Reviewed by Hajime Morita.
-
- PlainTextController usages in existing tests have been
- replaced by internals API by bug 78570.
- So this patch will remove PlainTextController implementations
- to avoid further usage in new tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/chromium/PlainTextController.cpp: Removed.
- * DumpRenderTree/chromium/PlainTextController.h: Removed.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared):
- * DumpRenderTree/gtk/PlainTextController.cpp: Removed.
- * DumpRenderTree/gtk/PlainTextController.h: Removed.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):
- * DumpRenderTree/mac/PlainTextController.h: Removed.
- * DumpRenderTree/mac/PlainTextController.mm: Removed.
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/PlainTextControllerQt.cpp: Removed.
- * DumpRenderTree/qt/PlainTextControllerQt.h: Removed.
- * GNUmakefile.am:
-
-2012-03-06 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- [EFL][DRT] Implements LayoutTestController's setPopupBlockingEnabled.
- https://bugs.webkit.org/show_bug.cgi?id=80137
-
- Reviewed by Eric Seidel.
-
- Adds implementation LayoutTestController's setPopupBlockingEnabled.
- To pass popup-blocking-click-in-iframe.html EventSender should not
- repeat click events in idler's function. EventSender allows to
- asynchronously send click event through ecore_idler_add.
- This event will be called repeatedly as long as it return true.
- Click event should be called only once by returning ECORE_CALLBACK_CANCEL.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (sendMouseEvent): Changed return value from bool to void because it always returns true.
- (sendClick): Idler is deleted by returning ECORE_CALLBACK_CANCEL.
- (mouseDownCallback): Remove unnecessary checking of return value.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setPopupBlockingEnabled):
-
-2012-03-06 Dirk Pranke <dpranke@chromium.org>
-
- rebaseline_chromium_webkit_tests is obsolete and should be removed
- https://bugs.webkit.org/show_bug.cgi?id=80347
-
- Reviewed by Tony Chang.
-
- * Scripts/rebaseline-chromium-webkit-tests: Removed.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py: Removed.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py: Removed.
-
-2012-03-06 Dirk Pranke <dpranke@chromium.org>
-
- test_start_cmd (webkitpy.layout_tests.servers.http_server_unittest.TestHttpServer) is broken
- https://bugs.webkit.org/show_bug.cgi?id=80468
-
- Unreviewed, build fix.
-
- Fixing a bug revealed by r80443 when we fixed filesystem.copyfile().
-
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd._prepare_config):
-
-2012-03-06 Dirk Pranke <dpranke@chromium.org>
-
- remove chromium_gpu ports
- https://bugs.webkit.org/show_bug.cgi?id=80345
-
- Reviewed by Ojan Vafai.
-
- This change leaves in the 'graphics_type' distinction in the
- test_expectations; removing that will require more updates and a
- pass over test_expectations.txt, so I'm separating that out.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_qt):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_expectations):
-
-2012-03-06 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- undefined reference to JSC::IdentifierTable::~IdentifierTable() on EFL port
- https://bugs.webkit.org/show_bug.cgi?id=80282
-
- Reviewed by Antonio Gomes.
-
- Remove transitive library dependencies; they are especially
- dangerous when one ends up linking against WTF, JSC and then WTF
- again, since some symbols will not be defined.
-
- Passing --no-copy-dt-needed-entries and --as-needed to the linker
- (which some recent Linux distros do by default) makes the issue
- even more evident.
-
- * DumpRenderTree/efl/CMakeLists.txt: Do not link directly to WTF,
- as the other libraries have the needed symbols. Explicitly link
- against fontconfig.
-
-2012-03-06 Dean Jackson <dino@apple.com>
-
- filter-build-webkit needs more filters
- https://bugs.webkit.org/show_bug.cgi?id=80440
-
- Reviewed by Joseph Pecoraro.
-
- Added as many missing filters as I could find for Apple
- builds. Plus a few minor style updates.
-
- * Scripts/filter-build-webkit:
- (printLine):
-
-2012-03-06 Ojan Vafai <ojan@chromium.org>
-
- Copying old baselines throws an error if the new directory doesn't exist
- https://bugs.webkit.org/show_bug.cgi?id=80443
-
- Reviewed by Adam Barth.
-
- Existing tests cover the new code with the fix to filesystem_mock.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.copyfile):
- Fix the mock to better match python's copyfile semantics.
-
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- (Rebaseliner._create_html_baseline_files):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._copy_existing_baseline):
-
-2012-03-05 Ojan Vafai <ojan@chromium.org>
-
- Add a mechanism to rebaseline new ports
- https://bugs.webkit.org/show_bug.cgi?id=80355
-
- Reviewed by Adam Barth.
-
- For a test that's only failing on a new port, we want
- to first copy the existing result into the location for the
- port it's replacing in order to not break that port.
-
- For example, bringing up the chromium-lion port, if we just
- stick the results in the chromium-mac directory, the snow leopard
- will start failing. Instead, we first copy the existing result
- to the chromium-mac-snowleopard directory.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (builder_path_for_port_name):
- (fallback_port_name_for_new_port):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest):
- (RebaselineTest._copy_existing_baseline):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_test):
- (TestRebaseline):
- (TestRebaseline.test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaseline):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline):
- (GardeningServerTest):
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-03-06 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=80351
- InlineTextBox is using the wrong origin when calling
- addRelevantRepaintedObject
- -and corresponding-
- <rdar://problem/10970221>
-
- Reviewed by Sam Weinig.
-
- This test has actually been broken since revision 109273. This change makes
- the test pass again, and it makes it specifically exercise the fix for this
- bug.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp:
- (TestWebKitAPI::TEST):
-
- Adjust comments in the other tests to reflect the API changes from 109273.
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp:
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFailsTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp:
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp:
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/lots-of-text.html: Added.
-
-2012-03-06 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: add SpeechRecognitionError
- https://bugs.webkit.org/show_bug.cgi?id=80410
-
- Chromium: enable the runtime flag for scripted speech so we can run
- the layout tests for it.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-03-06 Sami Kyostila <skyostil@chromium.org>
-
- Enable universal newlines in chromium android layout test runner
- https://bugs.webkit.org/show_bug.cgi?id=80418
-
- Reviewed by Adam Barth.
-
- The Chromium Android layout test runner uses the 'adb' program to
- communicate with the Android device. Adb uses CRLF ('\r\n') to delimit
- output lines from the test runner, while the test expectation files are
- written with LF ('\n') delimiters. This causes the results to have
- spurious whitespace differences, making them more difficult to
- interpret.
-
- The fix is to enable universal newlines for the DumpRenderTree pipe,
- causing the output to only contain LF newlines like on other platforms.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._start):
-
-2012-03-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Revert r109900, it was completly busted
-
- HAVE_FOO does _not_ have a WTF_ prefix, go figure.
-
- We still leave in the HAVE(FOO) in QtInitializeTestFonts.cpp, instead
- of manual define checks.
-
- Reviewed by Ossy.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use config test to determine if the compiler supports -MD
-
- We used to assume that unix systems building against Qt5 would have
- a compiler that supported -MD. Although this was usually the case,
- we failed to take into account broken tools for distributed builds
- (e.g. teambuilder or icecream) which would end up producing .d files
- in the root of the build dir instead of along-side the object file.
-
- Now that we use a config-test to determine the support, we'll capture
- those cases, unless distributed builds are enabled after the initial
- build-webkit run.
-
- Reviewed by Csaba Osztrogonác.
-
- * Tools.pro:
- * qmake/config.tests/gccdepends/empty.cpp: Added.
- * qmake/config.tests/gccdepends/gccdepends.pro: Added.
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
- * qmake/sync.profile:
-
-2012-03-06 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r109294): It broke the unittest of master.cfg
- https://bugs.webkit.org/show_bug.cgi?id=80253
-
- Reviewed by Tor Arne Vestbø.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Use json instead of simplejson.
- (BuildBotConfigLoader._create_mock_passwords_dict):
- (BuildBotConfigLoader._mock_open):
- (BuildBotConfigLoader._add_dependant_modules_to_sys_modules):
- (BuildBotConfigLoader.load_config):
-
-2012-03-06 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- Qt API test buildstep throws exception after buildmaster update
- https://bugs.webkit.org/show_bug.cgi?id=80249
-
- This patch based on Peter Gal's work.
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunQtAPITests):
- (BuildAndTestFactory.__init__): Enable API tests on the Qt platform again.
-
-2012-03-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use correct define names for HAVE(FOO) style optional dependencies
-
- Reviewed by Simon Hausmann.
- Reviewed by Ossy.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- (WebKit::initializeTestFonts):
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't add recursive qmake_all target if there are no subdirs to recurse
-
- Reviewed by Ossy.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-03-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make sure clean builds are followed by make qmake && make if needed
-
- On non-GNUmake systems we have to run make qmake so that the generated
- sources are generated before we run qmake on the target pro files. This
- is achieved by using the 'incremental' target.
-
- Reviewed by Ossy.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-03-06 Filip Pizlo <fpizlo@apple.com>
-
- DumpRenderTree should support preciseTime()
- https://bugs.webkit.org/show_bug.cgi?id=80397
-
- Reviewed by Gavin Barraclough.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (preciseTimeCallback):
- (LayoutTestController::staticFunctions):
-
-2012-03-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109887.
- http://trac.webkit.org/changeset/109887
- https://bugs.webkit.org/show_bug.cgi?id=80402
-
- It broke the build (Requested by Ossy on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- (WebKit::initializeTestFonts):
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109837.
- http://trac.webkit.org/changeset/109837
- https://bugs.webkit.org/show_bug.cgi?id=80399
-
- breaks Mac Productions builds, too late to try and fix it
- tonight (Requested by eseidel on #webkit).
-
- * Scripts/build-webkit:
-
-2012-03-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use correct define names for HAVE(FOO) style optional dependencies
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- (WebKit::initializeTestFonts):
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-06 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt] Create EWS to build WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=80277
-
- Reviewed by Csaba Osztrogonác.
-
- * QueueStatusServer/model/queues.py:
- (Queue):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (QtWK2EWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest.test_builder_ewses):
-
-2012-03-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109733.
- http://trac.webkit.org/changeset/109733
- https://bugs.webkit.org/show_bug.cgi?id=80378
-
- It broke Qt5 build system (Requested by Ossy on #webkit).
-
- * Tools.pro:
- * qmake/config.tests/gccdepends/empty.cpp: Removed.
- * qmake/config.tests/gccdepends/gccdepends.pro: Removed.
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
- * qmake/sync.profile:
-
-2012-03-05 Eric Seidel <eric@webkit.org>
-
- Update JavaScriptCore files to use fully-qualified WTF include path
- https://bugs.webkit.org/show_bug.cgi?id=79960
-
- Reviewed by Adam Barth.
-
- Build WTF/WTF.xcodeproj by default on Mac.
-
- * Scripts/build-webkit:
-
-2012-03-05 Dirk Pranke <dpranke@chromium.org>
-
- There should be a way to disable optimizer in webkit-patch rebaseline-expectations
- https://bugs.webkit.org/show_bug.cgi?id=69590
-
- Reviewed by Ryosuke Niwa.
-
- Adds a --no-optimize flag to webkit-patch rebaseline-expectations
- to skip the 'optimize-expectations' step.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations.__init__):
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2012-03-05 Kent Tamura <tkent@chromium.org>
-
- [Chromium] Add new popup type: PagePopup
- https://bugs.webkit.org/show_bug.cgi?id=80106
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPopupMenu):
-
-2012-03-05 Jessie Berlin <jberlin@apple.com>
-
- Add myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
- Also, add my IRC nick so it is easier to find and yell at me.
-
-2012-03-05 Robert Kroeger <rjkroege@chromium.org>
-
- Correctly compute the positions of GestureScroll* events on
- Chromium.
- https://bugs.webkit.org/show_bug.cgi?id=80075
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::reset):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
-
-2012-03-05 Dirk Pranke <dpranke@chromium.org>
-
- flakiness dashboard doesn't display baselines for virtual tests correctly
- https://bugs.webkit.org/show_bug.cgi?id=80341
-
- Reviewed by Ojan Vafai.
-
- If the test is part of a virtual test suite, we need to look for
- baselines in the underlying fallback path for the actual test
- being run, as well as baselines for the virtual version.
-
- This patch adds code to handle both branches and also pulls the
- mapping of the test suites up into a constant.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testLookupVirtualTestSuite):
- (testBaseTest):
-
-2012-03-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109760.
- http://trac.webkit.org/changeset/109760
- https://bugs.webkit.org/show_bug.cgi?id=80320
-
- Caused many GTK+ tests to crash (Requested by mrobinson on
- #webkit).
-
- * gtk/jhbuild.modules:
-
-2012-03-05 Charlie Reis <creis@chromium.org>
-
- [chromium] Pass WebNavigationPolicy to WebViewClient::createView
- https://bugs.webkit.org/show_bug.cgi?id=80057
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-03-05 Martin Robinson <mrobinson@igalia.com>
-
- [soup] Crash while loading http://www.jusco.cn
- https://bugs.webkit.org/show_bug.cgi?id=68238
-
- Reviewed by Philippe Normand.
-
- * gtk/jhbuild.modules: Bumped the libsoup and glib dependencies
- in the jhbuild file.
-
-2012-03-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109748.
- http://trac.webkit.org/changeset/109748
- https://bugs.webkit.org/show_bug.cgi?id=80296
-
- Made some tests crash, will fix and recommit (Requested by
- noamr on #webkit).
-
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2012-03-05 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] plugins/netscape-plugin-page-cache-works.html fails
- https://bugs.webkit.org/show_bug.cgi?id=74409
-
- Reviewed by Martin Robinson.
-
- Add support for overriding the page-cache-for-plugins preference
- through DumpRenderTreeSupport.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (booleanFromValue): A helper function to convert a string to boolean.
- (LayoutTestController::overridePreference):
-
-2012-03-05 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Update Tools/DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=80287
-
- Reviewed by Antonio Gomes.
-
- Update so we are sure we can build our implementation of DRT.
-
- * DumpRenderTree/DumpRenderTree.h: include DumpRenderTreeBlackBerry.h.
- * DumpRenderTree/PixelDumpSupport.cpp: include PixelDumpSupportBlackBerry.h.
- * DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp:
- (AccessibilityController::addNotificationListener): add missing hook.
- (AccessibilityController::removeNotificationListener): add missing hook.
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::isSelectedOptionActive): add missing hook.
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect): add missing hook.
- (LayoutTestController::simulateDesktopNotificationClick): add missing hook.
-
-2012-03-05 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] [WK2] Support threaded renderer in WK2
- https://bugs.webkit.org/show_bug.cgi?id=76661
-
- Remove the QML_NO_THREADED_RENDERER environment variable from MiniBrowser.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2012-03-05 Alexander Færøy <alexander.faeroy@nokia.com>
-
- Unreviewed. Add myself to committer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use config test to determine if the compiler supports -MD
-
- We used to assume that unix systems building against Qt5 would have
- a compiler that supported -MD. Although this was usually the case,
- we failed to take into account broken tools for distributed builds
- (e.g. teambuilder or icecream) which would end up producing .d files
- in the root of the build dir instead of along-side the object file.
-
- Now that we use a config-test to determine the support, we'll capture
- those cases, unless distributed builds are enabled after the initial
- build-webkit run.
-
- Reviewed by Csaba Osztrogonác.
-
- * Tools.pro:
- * qmake/config.tests/gccdepends/empty.cpp: Added.
- * qmake/config.tests/gccdepends/gccdepends.pro: Added.
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
- * qmake/sync.profile:
-
-2012-03-05 Csaba Osztrogonác <ossy@webkit.org>
-
- Qt API test buildstep throws exception after buildmaster update
- https://bugs.webkit.org/show_bug.cgi?id=80249
-
- Reviewed by Zoltan Herczeg.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Disable API tests on the Qt bot temporarily.
- (BuildAndTestFactory.__init__):
-
-2012-03-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Unit tests are noisy when run under jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=80241
-
- Reviewed by Philippe Normand.
-
- Force the 'memory' backend in GSettings so that each unit
- test doesn't produce a warning when it's forced to fall back
- to the 'memory' backend.
-
- * Scripts/run-gtk-tests:
- (TestRunner.run): Force the 'memory' backend.
-
-2012-03-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] "Console: undefined @0: ReferenceError: Can't find variable: WebInspector" during testwebinspector
- https://bugs.webkit.org/show_bug.cgi?id=80235
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner.run): Use the WEBKIT_INSPECTOR_PATH environment variable so that
- inspector resources path determination is shared by all tests.
-
-2012-03-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] REGRESSION: r108278 broke some tests that expect focus
- https://bugs.webkit.org/show_bug.cgi?id=79084
-
- Reviewed by Philippe Normand.
-
- Grab focus when dumping test results and also when sending
- events. During the course of testing, the WebView may lose
- focus and this seems to snap it back when tests demand it.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dump): Grab focus.
- * DumpRenderTree/gtk/EventSender.cpp:
- (dispatchEvent): Ditto.
-
-2012-03-04 Charles Wei <charles.wei@torchmobile.com.cn>
-
- Unreviewed, Add myself to committer list.
- https://bugs.webkit.org/show_bug.cgi?id=80232
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-04 Anders Carlsson <andersca@apple.com>
-
- Newer versions of clang fail to compile WebKit.
-
- Fix build.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (descriptionOfValue):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::selectedTextRange):
- * DumpRenderTree/mac/EditingDelegate.mm:
- (-[DOMRange dump]):
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (-[PolicyDelegate webView:unableToImplementPolicyWithError:frame:]):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSError _drt_descriptionSuitableForTestResult]):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::descriptionOfValue):
- (WTR::AccessibilityUIElement::rowIndexRange):
- (WTR::AccessibilityUIElement::columnIndexRange):
- (WTR::AccessibilityUIElement::selectedTextRange):
-
-2012-03-03 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix static_libs_as_shared build
- https://bugs.webkit.org/show_bug.cgi?id=80214
-
- Reviewed by Tor Arne Vestbø.
-
- * WebKitTestRunner/qt/main.cpp:
- (main): Set the correct environment variable for choosing the theme in the
- web process.
-
-2012-03-03 Hans Wennborg <hans@chromium.org>
-
- Implement Speech JavaScript API
- https://bugs.webkit.org/show_bug.cgi?id=80019
-
- Reviewed by Adam Barth.
-
- Add ENABLE_SCRIPTED_SPEECH.
-
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
-
-2012-03-02 Alexey Proskuryakov <ap@apple.com>
-
- Fix commit queue, remove duplicate entry.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-02 Stephen Chenney <schenney@chromium.org>
-
- Unreviewed, add myself as a committer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-03-02 Ojan Vafai <ojan@chromium.org>
-
- Add the Chromium Lion canary bot to the flakiness dashboard.
- * TestResultServer/static-dashboards/builders.js:
-
-2012-03-02 Dirk Pranke <dpranke@chromium.org>
-
- links for virtual tests are broken in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=80180
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- (linkHTMLToOpenWindow):
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testLinkHTMLToOpenWindow): added.
-
-2012-03-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] security/block-test.html baselines differ from mac
- https://bugs.webkit.org/show_bug.cgi?id=78343
-
- Reviewed by Martin Robinson.
-
- Improved the FrameLoader error heuristics to match mac behavior a
- bit more.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (pathFromSoupURI): Handle ftp urls the same as http urls.
- (descriptionSuitableForTestResult): Map WebKitPolicyError to WebKitErrorDomain.
-
-2012-03-02 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Fix typo in patch committed in r109575
-
- Unreviewed typo fix.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify): Cache the position
- in floating point coordinates.
-
-2012-03-02 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Infinite loop on history navigation, when panning
- https://bugs.webkit.org/show_bug.cgi?id=79119
-
- Reviewed by Simon Hausmann.
-
- Make the touch mocking more robust by creating touch events
- directly and sending them synchronously to the browser window.
- If the sent touch event was not accepted we propagate the
- original mouse event to its target.
- This way we make sure we only send either a touch or a mouse
- event and do not end up in an infinite loop between our mocking
- code and the Qt5 automatic mouse event synthesizing.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (touchRectForPosition):
- (MiniBrowserApplication::notify):
- (MiniBrowserApplication::sendTouchEvent):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (MiniBrowserApplication):
-
-2012-03-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use 'all' as default target when debug_and_release is in effect
-
- When debug_and_release is enabled, in combination with build_all,
- qmake will generate an aggregate makefile that calls make on both
- the debug and the release makefiles, but with the 'all' target.
-
- In this case we can't use 'first' as the default target, as the
- extra targets would then not be run, so we append extra targets
- to 'all' instead.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-03-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make sure activeBuildConfig() returns the right config
-
- Using isActiveConfig fails, as that only checks if the given
- argument is in CONFIG, not the order.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-03-02 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix tests run with WTR not using QStyle theme
- https://bugs.webkit.org/show_bug.cgi?id=80147
-
- Reviewed by Csaba Osztrogonác.
-
- * WebKitTestRunner/qt/main.cpp:
- (main): Set environment variable for web process to use QStyle theme.
-
-2012-03-02 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, remove debug print call.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (descriptionSuitableForTestResult):
-
-2012-03-02 Robert Kroeger <rjkroege@chromium.org>
-
- Updated EventSender to send complete gesture events.
- https://bugs.webkit.org/show_bug.cgi?id=80075
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::gestureEvent): set additional parameters in sent events.
-
-2012-03-01 Kalev Lember <kalevlember@gmail.com>
-
- WebKitTestRunner: Explicitly include unistd.h for gcc 4.7
- https://bugs.webkit.org/show_bug.cgi?id=80033
-
- Reviewed by Gustavo Noronha Silva.
-
- GCC 4.7 no longer includes unistd.h from most of the standard C++
- header files, so we need to explicitly include it for getcwd().
-
- * WebKitTestRunner/TestInvocation.cpp: Make sure unistd.h gets included
- not only on Mac, but on all Unix platforms.
-
-2012-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Actually look at the args in driver_input :(.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test):
-
-2012-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo in flag used to run gpu virtual suites.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-03-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed, rolling out r109317.
- http://trac.webkit.org/changeset/109317
-
- Let's try watchlists again now that we're using a pure git
- working copy
-
- * Scripts/webkitpy/tool/bot/stylequeuetask.py:
- (StyleQueueTask.run):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2012-03-01 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: test_run_test_pause_before_testing is failing after r109482
- https://bugs.webkit.org/show_bug.cgi?id=80084
-
- Unreviewed, build fix.
-
- Fixes the test string compare to ignore the time spent running
- the tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_pause_before_testing):
-
-2012-03-01 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: virtual tests aren't being run
- https://bugs.webkit.org/show_bug.cgi?id=80083
-
- Reviewed by Eric Seidel.
-
- If we tried to run all of the tests by default (and
- didn't specify any paths), the virtual tests weren't
- picked up.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._virtual_tests):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.virtual_test_suites):
-
-2012-03-01 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should report the test runtime
- https://bugs.webkit.org/show_bug.cgi?id=80078
-
- Reviewed by Hajime Morita.
-
- Record and output the aggreated test run time.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_single_test):
-
-2012-03-01 Michael Nordman <michaeln@google.com>
-
- [chromium] Use webkit_support to create session storage namespaces in DRT.
- https://bugs.webkit.org/show_bug.cgi?id=79933
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createSessionStorageNamespace):
-
-2012-03-01 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: test_isfile, test_isdir, and test_exists don't work for virtual tests
- https://bugs.webkit.org/show_bug.cgi?id=80048
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.test_isfile):
- (Port.test_isdir):
- (Port):
- (Port.test_exists):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_test_exists):
- (PortTest):
- (PortTest.test_test_isfile):
- (PortTest.test_test_isdir):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.virtual_test_suites):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_virtual):
-
-2012-03-01 Kalev Lember <kalevlember@gmail.com>
-
- [GTK] Avoid building any parts of WebKitTestRunner when WK2 is disabled
- https://bugs.webkit.org/show_bug.cgi?id=80031
-
- Reviewed by Gustavo Noronha Silva.
-
- Only build the libTestRunnerInjectedBundle.la convenience library when
- ENABLE_WEBKIT2 is defined.
-
- * WebKitTestRunner/GNUmakefile.am:
-
-2012-03-01 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, second attempt to fix GTK NRWT after r109242.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
-
-2012-03-01 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK NRWT build fix attempt after r109242.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver._start):
-
-2012-03-01 Kentaro Hara <haraken@chromium.org>
-
- REGRESSION(r109036): run-bindings-tests fails because resolve-supplemental.pl was renamed
- https://bugs.webkit.org/show_bug.cgi?id=80008
-
- Reviewed by Adam Barth.
-
- In r109036, I forgot to rename "resolve-supplemental.pl" in run-bindings-tests
- to "preprocess-idls.pl". This patch renames it.
-
- Test: Confirm that run-bindings-tests runs.
-
- * Scripts/webkitpy/bindings/main.py:
- (BindingsTests.generate_supplemental_dependency):
-
-2012-02-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] QQuickWebView::event should lookup faster which events QQuickWebPage can handle
- https://bugs.webkit.org/show_bug.cgi?id=78047
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Send events for the webview through the QQuickCanvas instead of directly to the item. Direct
- sending to the item requires the QObject::event re-implementation to dispatch to the correct
- event handling function. However QQuickItem::event doesn't do that. Instead QQuickCanvas calls
- the event handlers directly, and with the removal of our own dispatching we need to go through
- that code path.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::sendEvent):
- (WTR::PlatformWebView::postEvent):
-
-2012-02-29 Adam Barth <abarth@webkit.org>
-
- Disable watchlist. It's been spamming CCs.
-
- * Scripts/webkitpy/tool/bot/stylequeuetask.py:
- (StyleQueueTask.run):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- need to clone the gpu baselines and expectations into the new "virtual" dir
- https://bugs.webkit.org/show_bug.cgi?id=79956
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-02-29 Mark Rowe <mrowe@apple.com>
-
- Switch to using json rather than simplejson now that the master is using Python 2.7.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-02-29 David Levin <levin@chromium.org>
-
- [chromium] Add the ability to turn off autoresize.
- https://bugs.webkit.org/show_bug.cgi?id=77452
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Expose a way to turn off auto-resize.
- (LayoutTestController::enableAutoResizeMode): Ditto and adjust to new WebKit api.
- (LayoutTestController::disableAutoResizeMode): Ditto.
- * DumpRenderTree/chromium/LayoutTestController.h: Ditto.
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make --print trace work with virtual tests
- https://bugs.webkit.org/show_bug.cgi?id=79952
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._print_test_trace):
- (Printer._print_baseline):
-
-2012-02-28 Brian Weinstein <bweinstein@apple.com>
-
- WebKit2: didNewFirstVisuallyNonEmptyLayout should be sent to injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=79849
-
- Reviewed by Beth Dakin.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Add an entry to the struct.
-
-2012-02-29 Lucas Forschler <lforschler@apple.com>
-
- Removed unused Apple buildslaves from the master configuration
- https://bugs.webkit.org/show_bug.cgi?id=79925
-
- Reviewed by Stephanie Lewis.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: implement simple 'virtual test suite' support
- https://bugs.webkit.org/show_bug.cgi?id=79737
-
- Reviewed by Adam Barth.
-
- Add very basic support for 'virtual test suites' to NRWT:
- a virtual suite is a directory that may contain new baselines,
- contains a pointer to a "base" directory of tests, and an
- optional list of command line arguments to pass to DRT;
- it gives us a way to run all of the tests in a given directory
- multiple times with multiple (potentially differing) sets of
- results and baselines.
-
- This patch implements the support needed for this feature, and
- some basic tests, but no actual port will use the feature yet.
-
- This is probably the simplest implementation possible - the
- list of virtual suites will be hard-coded into the port's
- implementation. One can imagine a more data-driven approach
- where the suite instructions are stored in a manifest file
- either in LayoutTests (all suites in one file), or per-port,
- or per-directory. If this feature ends up being useful we
- should probably add something like that so people don't have
- to hunt around in the code to add suites.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.expected_filename):
- (Port.tests):
- (Port):
- (Port._real_tests):
- (Port._driver_class):
- (Port.virtual_test_suites):
- (Port.virtual_suite):
- (Port.virtual_suite.VirtualTestSuite):
- (Port.virtual_suite.VirtualTestSuite.__init__):
- (Port.virtual_suite.VirtualTestSuite.__repr__):
- (Port.populated_virtual_test_suites):
- (Port._virtual_tests):
- (Port.lookup_virtual_test_base):
- (Port.lookup_virtual_test_args):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_find_with_skipped_directories):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverInput.__init__):
- (DriverProxy.run_test):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.virtual_test_suites):
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_all):
- (MainTest.test_virtual):
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: support more than two drivers in DriverProxy
- https://bugs.webkit.org/show_bug.cgi?id=79736
-
- Reviewed by Adam Barth.
-
- Now that we can support per-test command lines for
- Drivers, modify DriverProxy to keep a map of running
- drivers for each needed command-line; this will allow
- us to transparently maintain a pool of appropriately
- configured DRTs without having to constantly start and stop
- them.
-
- Note that this potentially raises a garbage collection
- problem - the number of running DRTs will grow with the
- number of different sets of command line args. For now
- this is no worse than the current code - if you're running
- with pixel tests, you will only need one DRT per worker,
- and if you aren't, you'll need two (one for text-only tests,
- and one for reftests).
-
- An alternative would be to only ever have one running driver,
- and restart the driver as the command line changes, but this
- might (?) slow down execution in the text-only case - we
- should benchmark this because it would be simpler and possibly
- allow us to eliminate DriverProxy altogether.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverProxy.__init__):
- (DriverProxy):
- (DriverProxy._make_driver):
- (DriverProxy.run_test):
- (DriverProxy.has_crashed):
- (DriverProxy.stop):
- (DriverProxy.cmd_line):
- (DriverProxy._cmd_line_as_key):
-
-2012-02-29 Adrienne Walker <enne@google.com>
-
- Unreviewed, add myself as a reviewer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-29 Greg Billock <gbillock@google.com>
-
- Add more tests for web intents
- https://bugs.webkit.org/show_bug.cgi?id=79527
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- (WebViewHost::currentIntentRequest):
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: port/Driver needs to support per-test command line args
- https://bugs.webkit.org/show_bug.cgi?id=79733
-
- Reviewed by Adam Barth.
-
- As part of removing the 'gpu' configurations and adding support
- for 'virtual test suites', the Driver classes need to support
- per-test command lines (since different tests will need to be
- run with different command line options).
-
- The per-test args are not yet used, so this change should have
- no visible effects and need no additional testing.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.driver_cmd_line):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.cmd_line):
- (ChromiumDriver._start):
- (ChromiumDriver.start):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_two_drivers.MockDriver.cmd_line):
- (ChromiumDriverTest):
- (ChromiumDriverTest.test_two_drivers):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line):
- (DriverProxy.__init__):
- (DriverProxy.start):
- (DriverProxy.cmd_line):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_virtual_driver_methods):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver.cmd_line):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort._path_to_driver):
- (TestDriver.cmd_line):
- (TestDriver.start):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.cmd_line):
- (WebKitDriver._start):
- (WebKitDriver.run_test):
- (WebKitDriver.start):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_no_timeout):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_pause_before_testing):
-
-2012-02-29 Dirk Pranke <dpranke@chromium.org>
-
- perftestsrunner can call printer.write() after printer.cleanup()
- https://bugs.webkit.org/show_bug.cgi?id=79872
-
- Reviewed by Ryosuke Niwa.
-
- This patch fixes a unittest that was incorrectly calling
- PerfTestsRunner.run() twice (which led to a weird state in the
- printer object).
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.test_run_with_upload_json):
-
-2012-02-29 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] WebKitTestRunner should use 480x360 sized view for W3C SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=76546
-
- Reviewed by Simon Hausmann.
-
- Revert the workaround introduced in r107868 and reintroduce
- the qml binding so we can test the code path that we are more
- interested in. The reason that it did not work before is that
- we don't have an active platform window which we now workaround
- by propagating the resize through QWindowSystemInterface.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::resizeTo):
-
-2012-02-29 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [GTK] Small fix for cross compilation to not generate gtkdoc.
-
- Rubber-stamped by Csaba Osztrogonác.
-
- * Scripts/webkitdirs.pm:
- (isCrossCompilation):
-
-2012-02-28 Lucas Forschler <lforschler@apple.com>
-
- Fix a typo in config.json
- linx -> linux
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-02-28 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- [Qt] Allow read/write to the WebView.url property
- https://bugs.webkit.org/show_bug.cgi?id=77554
-
- Reviewed by Tor Arne Vestbø.
-
- Fix MiniBrowser to use WebView.url property and remove WebView.load usage.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-02-28 Dan Winship <danw@gnome.org>
-
- [GTK] make tests explicitly request GSettingsBackendMemory
- https://bugs.webkit.org/show_bug.cgi?id=79788
-
- Reviewed by Martin Robinson.
-
- Explicitly request the fallback memory-based GSettings backend; if
- other backends are available then we don't want to use them,
- because they would make tests depend on the user's preferences.
- And if other backends aren't available, we don't need glib to
- print a warning about that fact.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
-
-2012-02-28 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109110.
- http://trac.webkit.org/changeset/109110
- https://bugs.webkit.org/show_bug.cgi?id=79806
-
- webkitpy makes it too easy to add wkb.ug URLs to ChangeLogs
- (Requested by aroben on #webkit).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (parse_bug_id):
- (parse_bug_id_from_changelog):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/config/urls.py:
-
-2012-02-28 Adam Roben <aroben@webkit.org>
-
- Add my new email address
-
- Fixes <http://wkb.ug/79797> Adam Roben's email address in webkitpy is soon to be incorrect
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-28 Adam Roben <aroben@apple.com>
-
- Teach webkitpy about wkb.ug URLs
-
- Fixes <http://wkb.ug/79799> webkit-patch can't find bug numbers from ChangeLog entries that
- use wkb.ug URLs
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (parse_bug_id):
- (parse_bug_id_from_changelog):
- Fall back to the tiny URL format if neither the short nor long URL formats work.
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (ChangeLogTest.test_parse_bug_id_from_changelog): Added tests for the above changes.
-
- * Scripts/webkitpy/common/config/urls.py: Added bug_url_tiny, which can be used to match
- wkb.ug URLs.
-
-2012-02-28 János Badics <dicska@gmail.com>
-
- [Qt] build-webkit does not detect the number of CPUs
- https://bugs.webkit.org/show_bug.cgi?id=76445
-
- Based on Seo Sanghyeon's work (modification:
- Automatically determine the number of CPUs for make
- only if -j make argument haven't already been specified.)
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-02-28 Kent Tamura <tkent@chromium.org>
-
- Update a pattern for forms files of watchlist
- https://bugs.webkit.org/show_bug.cgi?id=79767
-
- Reviewed by Kentaro Hara.
-
- * Scripts/webkitpy/common/config/watchlist:
- Catches the following files with the "Forms" pattern.
- - HTMLDatListElement.*
- - HTMLKeygenElement.*
- - HTMLLegendElement.*
- - HTMLOutputElement.*
- - FormAssociatedElement.*
- - SliderThumbElement.*
- - TextControlInnerElements.*
- - RenderFileUploadControl.*
-
-2012-02-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r109041.
- http://trac.webkit.org/changeset/109041
- https://bugs.webkit.org/show_bug.cgi?id=79741
-
- Broke Chromium Win build (Requested by bashi on #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-02-27 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove media tests from ChromiumGpu configurations
- https://bugs.webkit.org/show_bug.cgi?id=79720
-
- Reviewed by Adam Barth.
-
- We no longer need to run the media/ tests in both GPU and non-GPU configurations since we can exercise the GPU
- composited playback path via tests in the compositing/ directory.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (_default_tests_paths):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- (ChromiumGpuTest.test_default_tests_paths):
- (ChromiumGpuTest.test_test_files):
-
-2012-02-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: log multiline stderr/crash output properly
- https://bugs.webkit.org/show_bug.cgi?id=79722
-
- Reviewed by Adam Barth.
-
- This cleans up some nits in the log output to make things
- slightly easier to read (every line gets timestamped, etc.).
-
- Also tweaks the log message for pixel hash mismatches.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._handle_error):
- (SingleTestRunner._compare_image):
-
-2012-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Touch the master.cfg to force a reconfig.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (BuildAndTestLeaksFactory):
- (NewBuildAndTestFactory):
-
-2012-02-27 Jacky Jiang <zhajiang@rim.com>
-
- [BlackBerry] Upstream BlackBerry API web page related files
- https://bugs.webkit.org/show_bug.cgi?id=74380
-
- Reviewed by Antonio Gomes.
-
- Adapt to the removing of WebPage::mainFrame(), use
- DumpRenderTreeSupport::corePage() and its mainFrame() instead.
-
- No new tests as this patch doesn't change behavior.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (BlackBerry::WebKit::DumpRenderTree::runTests):
-
-2012-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Windows and Linux Chromium perf bots
- https://bugs.webkit.org/show_bug.cgi?id=79418
-
- Reviewed by Tony Chang.
-
- Add Chromium Win and Linux perf bots. Also replace Chromium Mac by
- the dedicated perf bot slave (uses the same hardware).
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-02-27 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Undefined variable 'current' when running chromium_android.py
- https://bugs.webkit.org/show_bug.cgi?id=79696
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._read_prompt):
-
-2012-02-27 Greg Billock <gbillock@google.com>
-
- Add more tests for web intents
- https://bugs.webkit.org/show_bug.cgi?id=79527
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- (WebViewHost::currentIntentRequest):
-
-2012-02-27 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Chromium-Android layout test script: the adb shell prompt is not always '# '
- https://bugs.webkit.org/show_bug.cgi?id=79506
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver._read_prompt):
-
-2012-02-27 Dan Bernstein <mitz@apple.com>
-
- Added a test for <rdar://problem/9557598> REGRESSION (WebKit2): Non-activating links sometimes don’t work
- https://bugs.webkit.org/show_bug.cgi?id=79607
-
- Reviewed by Adele Peterson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new files.
- * TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm: Added.
- (TestWebKitAPI::AcceptsFirstMouse::url):
- (TestWebKitAPI::AcceptsFirstMouse::didLoadURL):
- (TestWebKitAPI::AcceptsFirstMouse::runTest):
- (TestWebKitAPI::TEST_F):
- * TestWebKitAPI/Tests/mac/acceptsFirstMouse.html: Added.
-
-2012-02-27 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck.
-
- * GNUmakefile.am: Fix typo.
-
-2012-02-27 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use USE() macro instead of ENABLE() for using the Qt image decoder
-
- Reviewed by Kenneth Rohde Christiansen..
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-27 Hao Zheng <zhenghao@chromium.org>
-
- Add a ChromiumGpuAndroid port.
- https://bugs.webkit.org/show_bug.cgi?id=79628
-
- Reviewed by Adam Barth.
-
- Android does have a gpu port, so revert r107697.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (ChromiumGpuAndroidPort):
- (ChromiumGpuAndroidPort.__init__):
- (ChromiumGpuAndroidPort.baseline_search_path):
- (ChromiumGpuAndroidPort.default_child_processes):
- (ChromiumGpuAndroidPort.tests):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
-
-2012-02-25 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Change Build bot with BuildAndTest bot for EFL port.
- https://bugs.webkit.org/show_bug.cgi?id=77518
-
- Reviewed by Ryosuke Niwa.
-
- EFL build bot starts to support layout test.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
- (extractBuiltProduct):
- * BuildSlaveSupport/test-result-archive:
- (archiveTestResults):
- * Scripts/webkitdirs.pm: Enable SHARED_CORE option when ENABLE_DRT is enable in EFL port.
- (generateBuildSystemFromCMakeProject):
-
-2012-02-24 Darin Fisher <darin@chromium.org>
-
- Add watchlist for ChromiumPlatformApi matching Source/Platform/chromium/public/
-
- Reviewed by James Robinson.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-02-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: changelog_unittest test_fuzzy_reviewer_match is slow
- https://bugs.webkit.org/show_bug.cgi?id=79258
-
- Reviewed by Ryosuke Niwa.
-
- Split the fuzzy matching into separate functions so that they
- can be sharded and run in parallel.
-
- Also, fix a bug in the svn_blame_regexp that was causing us
- to require ChangeLog lines to have at least one space after the
- author, making the code require trailing whitespace in the
- changelog in some places (this was making my life harder because
- I have my text editor set to strip trailing whitespace in python
- files, and that was causing test_parse_log_entries_from_changelog() to fail
- when the whitespace on line 275 was removed).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_fuzzy_reviewer_match__none):
- (test_fuzzy_reviewer_match_adam_barth):
- (test_fuzzy_reviewer_match_darin_adler_et_al):
- (test_fuzzy_reviewer_match_dimitri_glazkov):
- (test_fuzzy_reviewer_match_george_staikos):
- (test_fuzzy_reviewer_match_mark_rowe):
-
-2012-02-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: committers_unittest fuzzy matching is really slow
- https://bugs.webkit.org/show_bug.cgi?id=79179
-
- Reviewed by Ryosuke Niwa.
-
- Break the fuzzy matching tests into individual routines for
- each contributor so that the intent is a little clearer, so
- that it's easier to test individual names (and identify
- duplicate tests), and so that we can eventually run
- them in parallel.
-
- Also, mark most of them as 'integration' tests so that they
- can be skipped if we want to go fast (we leave a few as
- regular tests for functional coverage).
-
- * Scripts/webkitpy/common/config/committers_unittest.py:
- (CommittersTest):
- (CommittersTest.test_contributors_by_fuzzy_match):
- (CommittersTest.integration_test_contributors__none):
- (CommittersTest.integration_test_contributors__none_2):
- (CommittersTest.integration_test_contributors__none_3):
- (CommittersTest.integration_test_contributors_ada_chan):
- (CommittersTest.integration_test_contributors_adele_peterson):
- (CommittersTest.integration_test_contributors_alexey_proskuryakov):
- (CommittersTest.integration_test_contributors_alice_liu):
- (CommittersTest.integration_test_contributors_alp_toker):
- (CommittersTest.integration_test_contributors_anders_carlsson):
- (CommittersTest.integration_test_contributors_antti_koivisto):
- (CommittersTest.integration_test_contributors_beth_dakin):
- (CommittersTest.integration_test_contributors_brady_eidson):
- (CommittersTest.integration_test_contributors_cameron_zwarich):
- (CommittersTest.integration_test_contributors_chris_blumenberg):
- (CommittersTest.integration_test_contributors_dan_bernstein):
- (CommittersTest.integration_test_contributors_dan_bernstein_2):
- (CommittersTest.integration_test_contributors_darin_adler):
- (CommittersTest.integration_test_contributors_david_harrison):
- (CommittersTest.integration_test_contributors_david_harrison_2):
- (CommittersTest.integration_test_contributors_david_hyatt):
- (CommittersTest.integration_test_contributors_david_kilzer):
- (CommittersTest.integration_test_contributors_don_melton):
- (CommittersTest.integration_test_contributors_eric_seidel):
- (CommittersTest.integration_test_contributors_geoffrey_garen):
- (CommittersTest.integration_test_contributors_greg_bolsinga):
- (CommittersTest.integration_test_contributors_holger_freyther):
- (CommittersTest.integration_test_contributors_jon_sullivan):
- (CommittersTest.integration_test_contributors_jon_honeycutt):
- (CommittersTest.integration_test_contributors_joseph_pecoraro):
- (CommittersTest.integration_test_contributors_ken_kocienda):
- (CommittersTest.integration_test_contributors_kenneth_russell):
- (CommittersTest.integration_test_contributors_kevin_decker):
- (CommittersTest.integration_test_contributors_kevin_mccullough):
- (CommittersTest.integration_test_contributors_lars_knoll):
- (CommittersTest.integration_test_contributors_lars_weintraub):
- (CommittersTest.integration_test_contributors_maciej_stachowiak):
- (CommittersTest.integration_test_contributors_mark_rowe):
- (CommittersTest.integration_test_contributors_nikolas_zimmermann):
- (CommittersTest.integration_test_contributors_oliver_hunt):
- (CommittersTest.integration_test_contributors_rniwa):
- (CommittersTest.disabled_integration_test_contributors_simon_fraser):
- (CommittersTest.integration_test_contributors_steve_falkenburg):
- (CommittersTest.integration_test_contributors_sam_weinig):
- (CommittersTest.integration_test_contributors_tim_omernick):
- (CommittersTest.integration_test_contributors_timothy_hatcher):
- (CommittersTest.integration_test_contributors_tor_arne_vestbo):
- (CommittersTest.integration_test_contributors_vicki_murley):
- (CommittersTest.integration_test_contributors_zack_rusin):
-
-2012-02-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: should autoinstall coverage
- https://bugs.webkit.org/show_bug.cgi?id=79535
-
- Reviewed by Eric Seidel.
-
- We should automatically print the coverage report after the run, too.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_coverage):
-
-2012-02-24 Pablo Flouret <pablof@motorola.com>
-
- Fix copypasta in build-webkit's --vibration option description
- https://bugs.webkit.org/show_bug.cgi?id=79528
-
- Reviewed by Andreas Kling.
-
- * Scripts/build-webkit:
-
-2012-02-24 Antonio Gomes <agomes@rim.com>
-
- Adding myself to ScrollingCoordinator watchlist
- https://bugs.webkit.org/show_bug.cgi?id=79525
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-02-24 Darin Fisher <darin@chromium.org>
-
- Update watchlist for ChromiumPublicApi to include Platform/chromium/public/
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-02-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: config_unittest is sensitive to other tests that might've already run
- https://bugs.webkit.org/show_bug.cgi?id=79382
-
- Reviewed by Adam Barth.
-
- If another test runs prior to config_unittest and pokes the
- cached configuration, the first test in config_unittest might
- fail; the tearDown() will then allow subsequent tests to pass.
- Clearing the configuration prior to each test makes things
- slightly slower but safer.
-
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.setUp):
-
-2012-02-24 David Kilzer <ddkilzer@apple.com>
-
- Use xcrun to find compiler paths for Generate Derived Sources build phase script
- <http://webkit.org/b/79512>
-
- Reviewed by Dan Bernstein.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- (Generate Derived Sources): Use xcrun to find the path to the
- compiler since that works on both iOS and OS X.
-
-2012-02-24 James Robinson <jamesr@chromium.org>
-
- Create a watchlist for ScrollingCoordinator changes
- https://bugs.webkit.org/show_bug.cgi?id=79511
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-02-24 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- [EFL][DRT] Implement setValueForUser and setAutofilled.
- https://bugs.webkit.org/show_bug.cgi?id=79237
-
- Reviewed by Andreas Kling.
-
- Adds missing implementation setValueForUser and setAutofilled to EFL's LayoutTestController.
- Those implementations are related with input fields and allow to pass following tests:
- fast/forms/onchange-setvalueforuser.html
- fast/forms/input-autofilled.html
- fast/forms/reset-autofilled.html
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setValueForUser):
- (LayoutTestController::setAutofilled):
-
-2012-02-24 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Allow to use WebCore imagedecoders
- https://bugs.webkit.org/show_bug.cgi?id=32410
-
- Add ENABLE_QT_IMAGE_DECODER macro, it's enabled by default.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-24 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add Qt5 way to force 96 DPI for tests
- https://bugs.webkit.org/show_bug.cgi?id=79364
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
-
-2012-02-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] MiniBrowser should reload the view then the reload button is clicked
- https://bugs.webkit.org/show_bug.cgi?id=79472
-
- Reviewed by Philippe Normand.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (reloadCallback): Call webkit_web_view_reload().
- (browser_window_init): Connect reload item clicked even to
- reloadCallback instead of activateUriEntryCallback.
-
-2012-02-24 Kentaro Hara <haraken@chromium.org>
-
- Add performance tests for DOM attribute getters and setters
- https://bugs.webkit.org/show_bug.cgi?id=79208
-
- Reviewed by Ryosuke Niwa.
-
- We want to allow perf tests to output info messages
- that do not affect the test results. To accomplish this,
- this patch modifies perftestsrunner.py so that it ignores
- a line that starts from "Info:".
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
-
-2012-02-24 Andrew Lo <anlo@rim.com>
-
- [BlackBerry] Enable requestAnimationFrame
- https://bugs.webkit.org/show_bug.cgi?id=79408
-
- Enable requestAnimationFrame for BlackBerry.
-
- Reviewed by Rob Buis.
-
- * Scripts/build-webkit:
-
-2012-02-24 Adam Barth <abarth@webkit.org>
-
- style-queue tries to apply the patch twice
- https://bugs.webkit.org/show_bug.cgi?id=79459
-
- Reviewed by Eric Seidel.
-
- Previously, we applied the patch using both apply-patch and
- check-style. This patch introduces a check-style-local to mirror the
- apply-watchlist-local, which operates on the current working diff.
-
- This patch also cleans up some other bugs I found by running the queue
- locally for a while. The queue still prints out a slightly
- less-than-ideal message on the bugs when it find an error, but it's ok
- for now. We'll need to iterate a bit.
-
- * Scripts/webkitpy/tool/bot/stylequeuetask.py:
- (StyleQueueTask.validate):
- (StyleQueueTask._check_style):
- * Scripts/webkitpy/tool/commands/download.py:
- (CheckStyleLocal):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._default_expected_stderr):
- (EarlyWarningSytemTest._test_testing_ews):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractReviewQueue.handle_script_error):
- (StyleQueue.review_patch):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (QueuesTest.assert_queue_outputs):
-
-2012-02-23 Adam Barth <abarth@webkit.org>
-
- should_proceed_with_work_item is unused and can be removed
- https://bugs.webkit.org/show_bug.cgi?id=79416
-
- Reviewed by Eric Seidel.
-
- We used to use this function to check whether the tree is red. Now, we
- don't use external measures of whether to proceed with work items.
- Instead, we analyze them with the idea in mind that the tree might be
- red.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- (QueueEngineDelegate.next_work_item):
- (QueueEngine.run):
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (LoggingDelegate):
- (LoggingDelegate.next_work_item):
- (RaisingDelegate.process_work_item):
- (QueueEngineTest.test_terminating_error):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem.__init__):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractQueue.next_work_item):
- (FeederQueue.next_work_item):
- (CommitQueue.next_work_item):
- (AbstractReviewQueue.next_work_item):
- (StyleQueue.__init__):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (FeederQueueTest.test_feeder_queue):
- (CommitQueueTest.test_commit_queue):
- (test_commit_queue_failure):
- (test_commit_queue_failure_with_failing_tests):
- (test_rollout):
- (test_rollout_lands):
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (QueuesTest.assert_queue_outputs):
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- (SheriffBot.next_work_item):
-
-2012-02-23 Adrienne Walker <enne@google.com>
-
- Unreviewed, add Stephen Chenney to committers.py as a contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-23 Adam Barth <abarth@webkit.org>
-
- style-queue logs bogus messages to the QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=79424
-
- Reviewed by Eric Seidel.
-
- Copy/paste error.
-
- * Scripts/webkitpy/tool/bot/stylequeuetask.py:
- (StyleQueueTask._check_style):
- (StyleQueueTask._apply_watch_list):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2012-02-23 Eric Seidel <eric@webkit.org>
-
- Use self._filesystem in more places in the SCM classes
- https://bugs.webkit.org/show_bug.cgi?id=79415
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/detection_unittest.py:
- (SCMDetectorTest.test_detect_scm_system):
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.find_checkout_root):
- (Git.to_object_name):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.__init__):
- (SCM.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.find_uuid):
- (SVN.find_checkout_root):
-
-2012-02-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r108685.
- http://trac.webkit.org/changeset/108685
- https://bugs.webkit.org/show_bug.cgi?id=79414
-
- Broke Chromium builds (Requested by enne on #webkit).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-23 Adam Barth <abarth@webkit.org>
-
- style-queue shouldn't spam bugs if it fails to update its working copy
- https://bugs.webkit.org/show_bug.cgi?id=79412
-
- Reviewed by Eric Seidel.
-
- This patch moves style-queue over to the new PatchAnalysisTask
- infrastructure, which is smarter about retrying patches when update
- fails.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.run_and_throw_if_fail):
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- (UnableToApplyPatch):
- (UnableToApplyPatch.__init__):
- (PatchAnalysisTask.__init__):
- * Scripts/webkitpy/tool/bot/stylequeuetask.py: Added.
- (StyleQueueTaskDelegate):
- (StyleQueueTaskDelegate.parent_command):
- (StyleQueueTask):
- (StyleQueueTask.validate):
- (StyleQueueTask._check_style):
- (StyleQueueTask._apply_watch_list):
- (StyleQueueTask.run):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- (StyleQueue):
- (StyleQueue.should_proceed_with_work_item):
- (StyleQueue.review_patch):
- (StyleQueue.run_command):
- (StyleQueue.command_passed):
- (StyleQueue.command_failed):
- (StyleQueue.expected_failures):
- (StyleQueue.refetch_patch):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
-
-2012-02-23 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Allow to use WebCore imagedecoders
- https://bugs.webkit.org/show_bug.cgi?id=32410
-
- Add ENABLE_QT_IMAGE_DECODER macro, it's enabled by default.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-23 Eric Seidel <eric@webkit.org>
-
- Remove old broken find_checkout_root tests now that find_checkout_root is gone
- https://bugs.webkit.org/show_bug.cgi?id=79405
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/detection_unittest.py: Added.
- (SCMDetectorTest):
- (SCMDetectorTest.test_find_checkout_root):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (SVNTestRepository.tear_down):
-
-2012-02-23 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt][WK2] Implement proxy authentication dialog.
- https://bugs.webkit.org/show_bug.cgi?id=79350
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ProxyAuthenticationDialog.qml: Added.
-
-2012-02-23 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, add recently added source dirs.
-
- * waf/build/settings.py:
-
-2012-02-23 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Add support for touch cancellation
- https://bugs.webkit.org/show_bug.cgi?id=79348
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added straight-forward touch cancellation event sending to Qt WK1 DRT
- and WK2 WTR.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::touchCancel):
- (EventSender::cancelTouchPoint):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::touchCancel):
- (WTR):
- (WTR::EventSendingController::cancelTouchPoint):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::touchCancel):
- (WTR):
- (WTR::EventSenderProxy::cancelTouchPoint):
-
-2012-02-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r108626.
- http://trac.webkit.org/changeset/108626
- https://bugs.webkit.org/show_bug.cgi?id=79370
-
- broke qt-wk2 bot, somehow the workaround does not work on the
- bot (Requested by Ossy on #webkit).
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::resizeTo):
-
-2012-02-23 ChangSeok Oh <shivamidow@gmail.com>
-
- [GTK] DRT doesn't support scheduleAsynchronousKeyDown.
- https://bugs.webkit.org/show_bug.cgi?id=78481
-
- Reviewed by Gustavo Noronha Silva.
-
- Extracted shareable code from keyDownCallback and then added createKeyPressEvent
- to create gdk press key event.
- Added sendKeyDown and sendAsynchronousKeyDown to evaluate keyDown event directly
- and asynchronously. Eventually, sendAsynchronousKeyDown calls sendKeyDown.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (scheduleAsynchronousClickCallback):
- (createKeyPressEvent):
- (sendKeyDown):
- (keyDownCallback):
- (sendAsynchronousKeyDown):
- (scheduleAsynchronousKeyDownCallback):
-
-2012-02-23 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] WebKitTestRunner should use 480x360 sized view for W3C SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=76546
-
- Reviewed by Simon Hausmann.
-
- Co-authored with Simon Hausmann.
-
- Revert the workaround introduced in r107868 and reintroduce
- the qml binding so we can test the code path that we are more
- interested in. The reason that it did not work before is that
- we don't have an active platform window which we now workaround
- by propagating the resize through QWindowSystemInterface.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::resizeTo):
-
-2012-02-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r108577.
- http://trac.webkit.org/changeset/108577
- https://bugs.webkit.org/show_bug.cgi?id=79359
-
- It doesn't work as expected (Requested by Ossy on #webkit).
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::postEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
-
-2012-02-23 Philippe Normand <pnormand@igalia.com>
-
- [GTK] FullScreen signals
- https://bugs.webkit.org/show_bug.cgi?id=76181
-
- Reviewed by Martin Robinson.
-
- Use the two new entering/leaving fullscreen signals to hide/show
- the tool bar, the status bar and ask the user's permission before
- entering fullscreen.
-
- * GtkLauncher/main.c:
- (webViewFullscreenMessageWindowClose):
- (webViewWindowStateEvent):
- (hide_widget):
- (show_widget):
- (webViewEnteringFullScreen):
- (webViewLeavingFullScreen):
- (createBrowser):
- (createWindow):
-
-2012-02-22 Dongwoo Im <dw.im@samsung.com>
-
- [EFL] Fix to launch the EWebLauncher using the script, run-launcher.
- https://bugs.webkit.org/show_bug.cgi?id=79076
-
- Reviewed by Andreas Kling.
-
- * Scripts/webkitdirs.pm: Fix the path of libewebkit.so.
- (builtDylibPathForName):
-
-2012-02-22 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Add eventSender.gestureTap
- https://bugs.webkit.org/show_bug.cgi?id=66173
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::gestureTap):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2012-02-22 Brady Eidson <beidson@apple.com>
-
- <rdar://problem/10406044> and https://bugs.webkit.org/show_bug.cgi?id=79279
- Synchronous ShouldGoToBackForwardListItem causes lots of WebProcess hangs
-
- Reviewed by Anders Carlsson.
-
- Update our tools to the new form of the PageLoadClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-02-22 Daniel Bates <dbates@webkit.org>
-
- new-run-webkit-tests shouldn't restore Safari state on Lion when showing results
- https://bugs.webkit.org/show_bug.cgi?id=79277
-
- Reviewed by Adam Barth.
-
- Pass command line argument no-saved-state to run-safari to disable Safari
- state restoration for the session on OS 10.7.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_show_results_html_file):
-
-2012-02-22 Kalev Lember <kalevlember@gmail.com>
-
- Explicitly include unistd.h in TestNetscapePlugIn for GCC 4.7
- https://bugs.webkit.org/show_bug.cgi?id=77759
-
- Reviewed by Tony Chang.
-
- Fixes build with gcc 4.7.
-
- r100432 added the include only for ANDROID; this changes the ifdef to
- also cover other unix platforms. On Fedora 17 the gcc 4.7 compiler no
- longer implicitly includes unistd.h from standard headers and other
- unix platforms are likely to get gcc 4.7 as well in the future.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
-
-2012-02-22 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, rolling out r108522.
- http://trac.webkit.org/changeset/108522
- https://bugs.webkit.org/show_bug.cgi?id=76181
-
- Broke 4 fullscreen tests on GTK.
-
- * GtkLauncher/main.c:
- (createBrowser):
- (createWindow):
-
-2012-02-20 Philippe Normand <pnormand@igalia.com>
-
- [GTK] FullScreen signals
- https://bugs.webkit.org/show_bug.cgi?id=76181
-
- Reviewed by Martin Robinson.
-
- Use the two new entering/leaving fullscreen signals to hide/show
- the tool bar, the status bar and ask the user's permission before
- entering fullscreen.
-
- * GtkLauncher/main.c:
- (webViewFullscreenMessageWindowClose):
- (webViewWindowStateEvent):
- (hide_widget):
- (show_widget):
- (webViewEnteringFullScreen):
- (webViewLeavingFullScreen):
- (createBrowser):
- (createWindow):
-
-2012-02-22 Rob Flack <flackr@chromium.org>
-
- Update Linux ChromiumOS builders in flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=79238
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2012-02-22 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: test_function_length_check_definition_huge_lines is slow
- https://bugs.webkit.org/show_bug.cgi?id=79185
-
- Reviewed by Adam Barth.
-
- This test takes ~3 seconds to run, apparently because we're
- running a test on a 10,000 line function :). Dropping the
- function length to 640 still exercises the code path and
- provides a 10x speedup.
-
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTest):
- (CheckForFunctionLengthsTest.test_function_length_check_definition_huge_lines):
-
-2012-02-22 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: speed up FileLockTest.test_lock_lifecycle
- https://bugs.webkit.org/show_bug.cgi?id=79189
-
- Reviewed by Adam Barth.
-
- The unit test had a second lock trying to acquire a
- lock already held, and a hard-coded timeout of one second.
- I have changed the timeouts to a tenth of a second (which
- is probably still fine) and changed the hard-spin on
- the lock to a slow-spin every hundredth of a second.
-
- * Scripts/webkitpy/common/system/file_lock.py:
- (FileLock.acquire_lock):
- * Scripts/webkitpy/common/system/file_lock_integrationtest.py:
- (FileLockTest.setUp):
- (FileLockTest.test_stuck_lock):
-
-2012-02-22 Gabor Rapcsanyi <rgabor@webkit.org>
-
- build-webkit should use environment variable at number of CPU
- detection on all platform
- https://bugs.webkit.org/show_bug.cgi?id=79227
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (determineNumberOfCPUs):
-
-2012-02-22 Mihnea Ovidenie <mihnea@adobe.com>
-
- [Qt] REGRESSION(r108108): It made 3 fast/repaint tests fail
- https://bugs.webkit.org/show_bug.cgi?id=78960
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2012-02-22 Hao Zheng <zhenghao@chromium.org>
-
- [chromium] Build WebKit with MEDIA_STREAM disabled.
- https://bugs.webkit.org/show_bug.cgi?id=79214
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createMediaPlayer):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-02-22 Zeno Albisser <zeno@webkit.org>
-
- [Qt][WK2][Mac] WebKitTestRunner does not build with clang.
- https://bugs.webkit.org/show_bug.cgi?id=79124
-
- WebKitTestRunnerPrefix.h should also be included
- when building with clang.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/Target.pri:
-
-2012-02-20 Roland Steiner <rolandsteiner@chromium.org>
-
- <style scoped>: Add runtime-flag
- https://bugs.webkit.org/show_bug.cgi?id=79074
-
- Enable the runtime-flag for DRT.
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-02-22 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed, rolling out r107351.
- http://trac.webkit.org/changeset/107351
- https://bugs.webkit.org/show_bug.cgi?id=53600
-
- Several issues introduced in WebKitGTK+ API
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (createWebView):
- * GtkLauncher/main.c:
- (createWebViewCb):
- (createBrowser):
- (createWindow):
- (main):
-
-2012-02-21 Filip Pizlo <fpizlo@apple.com>
-
- JSC should be a triple-tier VM
- https://bugs.webkit.org/show_bug.cgi?id=75812
- <rdar://problem/10079694>
-
- Reviewed by Gavin Barraclough.
-
- Changed EFL's build system to include a new directory in JavaScriptCore.
-
- * DumpRenderTree/efl/CMakeLists.txt:
-
-2012-02-21 Daniel Cheng <dcheng@chromium.org>
-
- [chromium] Fix image drag out on Chromium
- https://bugs.webkit.org/show_bug.cgi?id=79158
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::dumpFilenameBeingDragged):
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (addDRTFakeFileToDataObject):
-
-2012-02-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: speed up hot filesystem_mock functions
- https://bugs.webkit.org/show_bug.cgi?id=79159
-
- Reviewed by Adam Barth.
-
- Profiling run_webkit_tests_integrationtest.py revealed that
- isdir(), normpath(), and join() are called a lot and were very
- slow.This patch speeds them up substantially, shaving 20 seconds
- off of the execution time.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.isdir):
- (MockFileSystem._slow_but_correct_join):
- (MockFileSystem.join):
- (MockFileSystem.listdir):
- (MockFileSystem._slow_but_correct_normpath):
- (MockFileSystem.normpath):
- (MockFileSystem.write_binary_file):
- * Scripts/webkitpy/common/system/filesystem_mock_unittest.py:
- (MockFileSystemTest.quick_check):
- (MockFileSystemTest):
- (MockFileSystemTest.test_join):
- (MockFileSystemTest.test_normpath):
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- (get_test_config): Call write_binary_file() instead of updating
- filesystem.files directly, so that we create directories as
- needed.
-
-2012-02-21 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make the delay between starting workers configurable per-port
- https://bugs.webkit.org/show_bug.cgi?id=79148
-
- Reviewed by Eric Seidel.
-
- Because of bug 79147, we have to sleep a bit in between starting
- DRTs; however, doing so across the board slows down the Test
- port. Making this configurable shaves 10 seconds off of
- run_webkit_tests_integrationtest.py
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.worker_startup_delay_secs):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.worker_startup_delay_secs):
-
-2012-02-21 Jon Lee <jonlee@apple.com>
-
- Bring notifications support to WK1 mac
- https://bugs.webkit.org/show_bug.cgi?id=78783
- <rdar://problem/10610578>
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/mac/UIDelegate.mm: Refactor WebGeolocationPolicyListener to WebAllowDenyPolicyListener.
- (-[UIDelegate webView:decidePolicyForGeolocationRequestFromOrigin:frame:listener:]):
- (-[UIDelegate timerFired]):
-
-2012-02-21 Kentaro Hara <haraken@chromium.org>
-
- Enable the IDL attribute checker in run-bindings-tests
- https://bugs.webkit.org/show_bug.cgi?id=79091
-
- Reviewed by Adam Barth.
-
- We have enabled the IDL attribute checker in Chromium in r108322.
- This patch enables the IDL attribute checker in run-bindings-tests.
-
- No tests. I manually checked that [Custommm], [CallWith=],
- [CallWith=ScriptExecutionContext|Foo] in TestObj.idl cause
- run-bindings-tests failures.
-
- * Scripts/webkitpy/bindings/main.py:
- (BindingsTests.generate_supplemental_dependency):
-
-2012-02-21 Rafael Weinstein <rafaelw@chromium.org>
-
- Add rafaelw as a committer.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: update names after deleting message_broker
- https://bugs.webkit.org/show_bug.cgi?id=79000
-
- Reviewed by Eric Seidel.
-
- Part 3 of 3 in deleting message_broker.py; this change just
- adjusts the names for the newly merged symbols so that they are
- private as appropriate.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (_Broker):
- (_BrokerConnection):
- (_BrokerConnection.__init__):
- (AbstractWorker.__init__):
- (_ManagerConnection):
- (_ManagerConnection.__init__):
- (_WorkerConnection):
- (_WorkerConnection.__init__):
-
-2012-02-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: merge message_broker.py into manager_worker_broker.py
- https://bugs.webkit.org/show_bug.cgi?id=78999
-
- Reviewed by Tony Chang.
-
- This is pretty much a straight cut-and-paste of one file into
- another (broken up so that docstrings and imports are in the
- right place).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (BrokerClient):
- (BrokerClient.is_done):
- (BrokerClient.name):
- (Broker):
- (Broker.__init__):
- (Broker.add_topic):
- (Broker._get_queue_for_topic):
- (Broker.post_message):
- (Broker.run_message_loop):
- (Broker.run_all_pending):
- (Broker._run_loop):
- (Broker._dispatch_message):
- (_Message):
- (_Message.loads):
- (_Message.__init__):
- (_Message.dumps):
- (_Message.__repr__):
- (BrokerConnection):
- (BrokerConnection.__init__):
- (BrokerConnection.run_message_loop):
- (BrokerConnection.post_message):
- (BrokerConnection.raise_exception):
- * Scripts/webkitpy/layout_tests/controllers/message_broker.py: Removed.
-
-2012-02-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: prepare to delete message_broker.py
- https://bugs.webkit.org/show_bug.cgi?id=78997
-
- Reviewed by Eric Seidel.
-
- This is part 1 of 3 changes to fix bug 78187. This change
- prepares the code for merging message_broker.py into
- manager_worker_broker.py; the tests in message_broker_unittest
- are merged into manager_worker_broker_unittest, the symbols
- needed by the tests are exported from manager_worker_broker.py,
- and manager_worker_broker itself is updated to refer to the
- symbols directly (without the module prefix).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (AbstractWorker):
- (AbstractWorker.__init__):
- (_ManagerConnection):
- (_ManagerConnection.__init__):
- (_WorkerConnection):
- (_WorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (InterfaceTest.test_brokerclient_is_abstract):
- (InterfaceTest.test_brokerclient_is_abstract.methods):
- (MessageTest):
- (MessageTest.test__no_body):
- (MessageTest.test__body):
- * Scripts/webkitpy/layout_tests/controllers/message_broker_unittest.py: Removed.
-
-2012-02-21 Sam Weinig <sam@webkit.org>
-
- Attempt to fix the Snow Leopard build.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-02-21 Sam Weinig <sam@webkit.org>
-
- Use libc++ when building with Clang on Mac
- https://bugs.webkit.org/show_bug.cgi?id=78981
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-02-21 Adam Roben <aroben@apple.com>
-
- Roll out r108309, r108323, and r108326
-
- They broke the 32-bit Lion build.
-
- Original bugs is <http://webkit.org/b/75812> <rdar://problem/10079694>.
-
- * DumpRenderTree/efl/CMakeLists.txt:
-
-2012-02-21 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Get rid of the dependency to QtWidgets
- https://bugs.webkit.org/show_bug.cgi?id=76276
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
- (MiniBrowserApplication::sendTouchEvent):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (MiniBrowserApplication):
- * QtTestBrowser/locationedit.h:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2012-02-20 Adam Barth <abarth@webkit.org>
-
- mastercfg_unittest.py fails without simplejson
- https://bugs.webkit.org/show_bug.cgi?id=79070
-
- Reviewed by Csaba Osztrogonác.
-
- Now that we require Python 2.6 (and higher) we can import json rather
- than simplejson. We still need to use the simplejson name because
- that's what the master.cfg script expects.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (BuildBotConfigLoader._add_dependant_modules_to_sys_modules):
-
-2012-02-20 Filip Pizlo <fpizlo@apple.com>
-
- JSC should be a triple-tier VM
- https://bugs.webkit.org/show_bug.cgi?id=75812
- <rdar://problem/10079694>
-
- Reviewed by Gavin Barraclough.
-
- Changed EFL's build system to include a new directory in JavaScriptCore.
-
- * DumpRenderTree/efl/CMakeLists.txt:
-
-2012-02-20 Kenichi Ishibashi <bashi@chromium.org>
-
- Update pywebsocket to 0.7.2
- https://bugs.webkit.org/show_bug.cgi?id=79066
-
- This version includes vendor-prefixed deflate-frame extension support.
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_pywebsocket):
-
-2012-02-20 Martin Robinson <mrobinson@igalia.com>
-
- [UNIX] Plugin information fields are not interpreted as UTF-8
- https://bugs.webkit.org/show_bug.cgi?id=78635
-
- Reviewed by Gustavo Noronha Silva.
-
- Interpret plugin metadata as UTF8 aways. This matches the behavior
- of Chromium and the Totem plugin.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_GetValue): Include a UTF-8 character in the description string for testing purposes.
-
-2012-02-20 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [Qt] Move the unix forwarding headers for TestNetscapePlugin to the TestNetscapePlugin directory
- https://bugs.webkit.org/show_bug.cgi?id=78935
-
- Reviewed by Gustavo Noronha Silva.
-
- Move the TestNetscapePlugin headers to a more appropriate directory and update
- the build files to match.
-
- * DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npapi.h: Renamed from Tools/DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npapi.h.
- * DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npfunctions.h: Renamed from Tools/DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npfunctions.h.
- * DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npruntime.h: Renamed from Tools/DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npruntime.h.
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: Update build.
- * GNUmakefile.am: Ditto.
-
-2012-02-20 Kihong Kwon <kihong.kwon@samsung.com>
-
- Add a new API for the Vibration API(W3C).
- https://bugs.webkit.org/show_bug.cgi?id=72010
-
- Reviewed by Hajime Morita.
-
- * Scripts/build-webkit: Enable ENABLE_VIBRATION feature.
-
-2012-02-20 János Badics <dicska@gmail.com>
-
- [Qt] run-qtwebkit-tests doesn't consider timeouts as failures
- https://bugs.webkit.org/show_bug.cgi?id=71816
-
- RunQtAPITests will notify if a timeout occurs during testing.
- Added unittest to the master.cfg
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunQtAPITests.evaluateCommand):
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (RunQtAPITestsTest):
- (RunQtAPITestsTest.assertResults):
- (RunQtAPITestsTest.test_timeout):
- (test_success):
- (test_failure):
- (test_timeout_and_failure):
-
-2012-02-20 Andy Wingo <wingo@igalia.com>
-
- Add wingo as a committer.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py: Add myself to the
- committers list.
-
-2012-02-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] check that we're not running multiple modal dialogs at the same time
- https://bugs.webkit.org/show_bug.cgi?id=78486
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setIsDisplayingModalDialog):
- (TestShell::isDisplayingModalDialog):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::runModal):
-
-2012-02-20 Martin Robinson <mrobinson@igalia.com>
-
- Fix WebKit2GTK+ for 'make distcheck'.
-
- Instead of conditionally including WebKit2 GNUmakefiles, always
- include them and conditionally activate the final targets.
-
- * MiniBrowser/gtk/GNUmakefile.am:
- * WebKitTestRunner/GNUmakefile.am:
-
-2012-02-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Enable video option for EFL port in build-webkit.
- https://bugs.webkit.org/show_bug.cgi?id=79006
-
- Reviewed by Daniel Bates.
-
- * Scripts/build-webkit:
-
-2012-02-19 JungJik Lee <jungjik.lee@samsung.com>
-
- [EFL] Use modifier keys to execute pre-rendering.
- https://bugs.webkit.org/show_bug.cgi?id=77933
-
- Reviewed by Chang Shu.
-
- Use modifier key to execute pre-rendering instead of using reserved function keys.
-
- * EWebLauncher/main.c:
- (on_key_down):
-
-2012-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Fix one more dangling reference to worker_connection.name, delete unused code.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.update):
- (_WorkerState.__init__):
-
-2012-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Add a change that should've been in r108005.
-
- Unreviewed, build fix.
-
- In the refactoring/cleanup in r108005 I should've changed the
- implementation of WorkerConnection to make it match BrokerClient
- (and everything else) so that objects had a name() method
- instead of a name property.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_WorkerConnection.__init__):
- (_WorkerConnection.name):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestsMixin.name):
- (_TestsMixin.test_name):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_unknown_message):
-
-2012-02-18 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove webkitpy.common.array_stream
- https://bugs.webkit.org/show_bug.cgi?id=78952
-
- Reviewed by Eric Seidel.
-
- Turns out array_stream didn't really do anything that StringIO
- didn't do (at least as of Python 2.6). This change removes it
- and updates all of the callers. Where possible, I changed the
- test assertions in order to capture the intent more clearly,
- e.g., instead of calling self.assertTrue('foo' in stream.get()),
- we have self.assertContainsLine(stream, 'foo'), and instead of
- self.assertTrue(stream.empty()), we have self.assertEmpty(stream) -
- the latter isn't that much more readable, but StringIO doesn't
- export an empty() method.
-
- * Scripts/webkitpy/common/array_stream.py: Removed.
- * Scripts/webkitpy/common/array_stream_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (passing_run):
- (run_and_capture):
- (StreamTestingMixin):
- (StreamTestingMixin.assertContains):
- (StreamTestingMixin.assertContainsLine):
- (StreamTestingMixin.assertEmpty):
- (StreamTestingMixin.assertNotEmpty):
- (LintTest):
- (LintTest.test_lint_test_files):
- (LintTest.test_lint_test_files__errors):
- (MainTest):
- (MainTest.test_child_process_1):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_help_printing):
- (MainTest.test_hung_thread):
- (MainTest.test_no_tests_found):
- (MainTest.test_no_tests_found_2):
- (MainTest.test_repeat_each_iterations_num_tests):
- (MainTest.test_test_list):
- (MainTest.test_unexpected_failures):
- (MainTest.test_worker_model__inline_with_child_processes):
- (MainTest.test_additional_platform_directory):
- (RebaselineTest):
- (RebaselineTest.assertBaselines):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream.update):
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (TestMeteredStream.test_regular):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (TestUtilityFunctions.assertEmpty):
- (TestUtilityFunctions):
- (TestUtilityFunctions.assertNotEmpty):
- (TestUtilityFunctions.assertWritten):
- (TestUtilityFunctions.test_configure_logging):
- (Testprinter.assertEmpty):
- (Testprinter):
- (Testprinter.assertNotEmpty):
- (Testprinter.assertWritten):
- (Testprinter.reset):
- (Testprinter.get_printer):
- (Testprinter.test_help_printer):
- (Testprinter.do_switch_tests.do_helper):
- (Testprinter.test_print_one_line_summary):
- (Testprinter.test_print_test_result):
- (Testprinter.test_print_progress):
- (Testprinter.test_write_nothing):
- (Testprinter.test_write_misc):
- (Testprinter.test_write_everything):
- (Testprinter.test_write_verbose):
- (Testprinter.test_print_unexpected_results):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.assertWritten):
- (create_runner):
- (test_run_test_set):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_set_for_parser_tests):
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_run_test_set_with_multiple_repositories):
- (test_upload_json):
-
-2012-02-18 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Add the WebCore/page/scrolling directory to the build dirs.
-
- * waf/build/settings.py:
-
-2012-02-18 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Don't error out or hang if we have
- downloaded dependencies but server update check fails.
-
- * waf/build/build_utils.py:
- (download_if_newer):
-
-2012-02-17 Dirk Pranke <dpranke@chromium.org>
-
- The new run-webkit-tests needs to dump out pixel hash failures even if the pixel test passes.
- https://bugs.webkit.org/show_bug.cgi?id=69444
-
- Reviewed by Tony Chang.
-
- Currently if a test's image checksum doesn't match the checksum
- in the baseline, but the images themselves match according to
- ImageDiff, new-run-webkit-tests ignores the problem. This is
- probably bad, but it's not yet clear what the right thing to do
- is. This patch will log a warning to stderr, at least (but the
- test will still pass).
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (unit_test_list):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
-
-2012-02-17 Dirk Pranke <dpranke@chromium.org>
-
- NRWT does not report failure for a skipped test
- https://bugs.webkit.org/show_bug.cgi?id=78750
-
- Reviewed by Eric Seidel.
-
- If a test is listed in a Skipped file and you run it anyway
- with --force, and the test fails, currently NRWT will print
- "test ran as expected"; this is confusing, because you probably
- expect the test to fail and yet this might lead you to think the
- test passed. This patch changes the expected behavior to "PASS",
- so tests that fail will be reported.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (result_was_expected):
- (TestExpectationParser):
- (TestExpectationParser.expectation_for_skipped_test):
- (TestExpectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_add_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (unit_test_list): Add some tests that are expected to be in a Skipped file.
- (TestPort.skipped_tests): This adds actual integration test coverage of Skipped files.
-
-2012-02-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix test code after bug 78181
- https://bugs.webkit.org/show_bug.cgi?id=78870
-
- Reviewed by Adam Barth.
-
- I forgot to update the test code as per Tony's suggestion in
- bug 78181 (r108005). This change does that, and in doing so
- it revealed a subtle bug in _InlineWorkerConnection.run() that
- I am fixing as part of this (_alive would not be cleared if an
- exception was thrown).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_InlineWorkerConnection.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestWorker.handle_stop):
- (_TestWorker.handle_test):
- (_TestWorker.run):
- (_TestsMixin.handle_exception):
- (_TestsMixin.test_unknown_message):
-
-2012-02-17 Adam Roben <aroben@apple.com>
-
- Mac build fix after r108119
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runThread):
- (runPthread):
- (testThreadIdentifierMap):
- Updated to match current WTF threading APIs.
-
-2012-02-17 Dirk Pranke <dpranke@chromium.org>
-
- revert r107147 - breaks webkit-patch on Mac SL
- https://bugs.webkit.org/show_bug.cgi?id=78866
-
- Reviewed by Adam Barth.
-
- It appears that zipfile.ExtractAll is broken on Python 2.6.1,
- which is the version that ships on Mac SL. Reverting this
- change until we no longer have to worry about that version.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller):
- (AutoInstaller._extract_all): Added a comment about SL.
- (AutoInstaller._unzip):
-
-2012-02-17 Mihnea Ovidenie <mihnea@adobe.com>
-
- CSS regions enabled by default
- https://bugs.webkit.org/show_bug.cgi?id=78525
-
- Reviewed by David Hyatt.
-
- Add a runtime preference to enable/disable regions functionality at runtime(WebKitCSSRegionsEnabled).
- CSSRegions are still enabled by default.
- In DRT, use layoutTestController.overridePreference("WebKitCSSRegionsEnabled", "0") to disable the css regions functionality.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2012-02-17 Maciej Stachowiak <mjs@apple.com>
-
- Some API tests erroneously use = instead of == (causing build failures)
- https://bugs.webkit.org/show_bug.cgi?id=78915
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::decidePolicyForNavigationAction): Replace an = with an ==
- (TestWebKitAPI::decidePolicyForNewWindowAction): ditto
-
-2012-02-17 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Include TestShellLinux.cpp in the build for Android
- https://bugs.webkit.org/show_bug.cgi?id=78865
-
- Reviewed by Eric Seidel.
-
- Android will be re-using the TestShellLinux.cpp file. I already
- added this r104033, but it seems to have gotten lost in the
- recent refactorings.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-02-17 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed, disable video build on EFL until it can be
- supported by EFL build bot.
-
- * Scripts/build-webkit:
-
-2012-02-17 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Implement zoom in/out in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=75253
-
- Reviewed by Gustavo Noronha Silva.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowCanZoomIn):
- (browserWindowCanZoomOut):
- (browserWindowUpdateZoomActions):
- (webViewZoomLevelChanged):
- (zoomInCallback):
- (zoomOutCallback):
- (browser_window_init):
- (browserWindowConstructed):
-
-2012-02-17 Nikolas Zimmermann <nzimmermann@rim.com>
-
- layoutTestController.display() is flaky for SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=78021
-
- Reviewed by Adam Roben.
-
- Apply the same fix to DRT/Win, as previously applied to DRT/Mac.
- Size the web view before running the test, not when dumping.
- All platforms handle this correctly now.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (sizeWebViewForCurrentTest):
- (runTest):
-
-2012-02-16 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Make install is broken when building without --enable-gtk-doc
- https://bugs.webkit.org/show_bug.cgi?id=78828
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc:
- (rebase_installed_docs): Check documentation has been generated
- before trying to rebase it.
-
-2012-02-16 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: simplify worker interface
- https://bugs.webkit.org/show_bug.cgi?id=78181
-
- Reviewed by Tony Chang.
-
- This change moves code in name(), is_done(), run(), and cancel()
- from Worker to AbstractWorker, since the logic is pretty much
- boilerplate code that any implementation would want to use.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get.should):
- (AbstractWorker.__init__):
- (AbstractWorker):
- (AbstractWorker.name):
- (AbstractWorker.stop_handling_messages):
- (AbstractWorker.run):
- (AbstractWorker.is_done):
- (AbstractWorker.cancel):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.run):
- (Worker.handle_stop):
-
-2012-02-16 Michael Saboff <msaboff@apple.com>
-
- ENH: Add ability to run subset of JavaScript layout tests with JSC
- https://bugs.webkit.org/show_bug.cgi?id=78764
-
- Reviewed by Gavin Barraclough.
-
- New simple test drive shell script that runs a defined
- list of javascript tests using jsc and the standalone-{pre,post}.js
- wrappers.
-
- * Scripts/run-fast-jsc: Added.
-
-2012-02-16 Csaba Osztrogonác <ossy@webkit.org>
-
- Add new Qt performance tester bot to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=78795
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-02-16 Patrick Gansterer <paroga@webkit.org>
-
- Disable inspector on WinCE.
-
- Avoid compiling InspectorBackendDispatcher.cpp, which causes an internal compiler error.
-
- * Scripts/build-webkit:
-
-2012-02-16 Patrick Gansterer <paroga@webkit.org>
-
- WinCE build fix after r107656.
-
- Disable FTPDIR on WinCE, since it does not compile there.
-
- * Scripts/build-webkit:
-
-2012-02-15 Leo Yang <leo.yang@torchmobile.com.cn>
-
- Build fix after r107863.
-
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
-
-2012-02-15 Tony Chang <tony@chromium.org>
-
- [chromium] add linux dbg back to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=78752
-
- Reviewed by Adam Barth.
-
- This reflects the current linux debug bot name (there's only one bot).
- I'm also remove the mac clang builder since it doesn't exist (mac
- always uses clang now).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-02-15 Sam Weinig <sam@webkit.org>
-
- Add style check for ctype functions that are generally frowned upon in WebKit
- https://bugs.webkit.org/show_bug.cgi?id=78748
-
- Reviewed by Anders Carlsson.
-
- Not every platform has DisallowCType.h to check for uses of the ctype.h
- functions, so add a style check for them as well.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_ctype_functions):
- (check_style):
- (CppChecker):
- Add check.
-
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_ctype_fucntion):
- Add checker.
-
-2012-02-15 Szilard Ledan <Ledan-Muntean.Szilard@stud.u-szeged.hu>
-
- [Qt][WK2] WebKitTestRunner should use 480x360 sized view for W3C SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=76546
-
- Reviewed by Simon Hausmann.
-
- Resize the web view programatically because the declarative property binding
- does not work. Seems like our qml environment is not initialized fully but it
- needs more investigation.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::resizeTo):
-
-2012-02-15 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: add a worker_args concept to start_worker()
- https://bugs.webkit.org/show_bug.cgi?id=78572
-
- Reviewed by Tony Chang.
-
- This change replaces the three NRWT-specific arguments passed
- through the broker to the worker with a generic WorkerArguments
- wrapper class and a separate set_inline_arguments() call that can
- be used to pass additional data to the worker when it is running
- in the same process as the manager (this is needed for testing).
- With the addition of set_inline_arguments() we also no longer
- need to pass an optional argument to the worker.run() call.
-
- Note that this method is *only* implemented on inline workers,
- so calling this on a regular (child process) worker will result
- in a runtime error.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (AbstractWorker.__init__):
- (AbstractWorker.run):
- (_ManagerConnection.start_worker):
- (_InlineManager.start_worker):
- (_InlineManager.set_inline_arguments):
- (_InlineManager.run_message_loop):
- (_MultiProcessManager.start_worker): Reworked signature.
- (_WorkerConnection.__init__):
- (_InlineWorkerConnection.__init__):
- (_InlineWorkerConnection.set_inline_arguments): New method.
- (_InlineWorkerConnection):
- (_InlineWorkerConnection.run):
- (_Process.run):
- (_MultiProcessWorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestWorker.set_inline_arguments):
- (_TestWorker.handle_test):
- (_TestWorker.run):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- (_TestsMixin.test_unknown_message):
- (InlineBrokerTests): New class for more testing.
- (InlineBrokerTests.setUp):
- (InlineBrokerTests.test_inline_arguments): New test.
- (InterfaceTest.test_managerconnection_is_abstract):
- (InterfaceTest.test_workerconnection_is_abstract):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (WorkerArguments):
- (WorkerArguments.__init__):
- (Worker.__init__):
- (Worker.set_inline_arguments):
- (Worker):
- (Worker.run):
- * Scripts/webkitpy/layout_tests/controllers/worker_unittest.py:
- (WorkerTest.test_default_platform_in_worker):
-
-2012-02-15 Adam Klein <adamk@chromium.org>
-
- Unreviewed, rolling out r107704.
- http://trac.webkit.org/changeset/107704
- https://bugs.webkit.org/show_bug.cgi?id=78486
-
- Caused layout test crashes in debug builds.
-
- Specific crashing tests:
-
- fast/events/show-modal-dialog-onblur-onfocus.html
- fast/harness/show-modal-dialog.html
- inspector/console/console-long-eval-crash.html
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::runModal):
-
-2012-02-15 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt] Add UI for HTTP authentication in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=76347
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/AuthenticationDialog.qml: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/DialogLineInput.qml:
-
-2012-02-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix WebGL in QtTestBrowser
-
- Reviewed by Tor Arne Vestbø.
-
- * QtTestBrowser/QtTestBrowser.pro: Set the OpenGL define so that when passing
- the options for enabling GL we also pass them on properly.
-
-2012-02-14 Sam Weinig <sam@webkit.org>
-
- Add #include of unistd.h on the mac for getcwd.
-
- Reviewed by Anders Carlsson.
-
- This is necessary when building with libc++.
-
- * WebKitTestRunner/TestInvocation.cpp:
-
-2012-02-14 Sam Weinig <sam@webkit.org>
-
- In DRT, don't #define min or max on non-Windows platforms, it just isn't needed
- https://bugs.webkit.org/show_bug.cgi?id=78663
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/DumpRenderTreePrefix.h:
- * DumpRenderTree/cg/ImageDiffCG.cpp:
-
-2012-02-14 Adam Barth <abarth@webkit.org>
-
- Implement an adb-based driver for the ChromiumAndroidPort
- https://bugs.webkit.org/show_bug.cgi?id=78627
-
- Reviewed by Eric Seidel.
-
- This driver mostly just wires up the ChromiumDriver through adb. In
- some cases, it translates protocol elements, such as URIs, so that the
- rest of webkitpy is insulated from the "remoteness" of the target device.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort._driver_class):
- (ChromiumAndroidPort._update_version):
- (ChromiumAndroidPort._get_stderr):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._get_last_stacktrace):
- (ChromiumAndroidPort._teardown_performance):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver.run_test):
- (ChromiumAndroidDriver.stop):
- (ChromiumAndroidDriver._test_shell_command):
- (ChromiumAndroidDriver._write_command_and_read_line):
- (ChromiumAndroidDriver._output_image):
- (ChromiumAndroidDriver._has_crash_hint):
-
-2012-02-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: the real_name() method in the Port class is no longer needed
- https://bugs.webkit.org/show_bug.cgi?id=78651
-
- Reviewed by Eric Seidel.
-
- The change in bug 78565 / r107718 made it no longer necessary
- (we can use options.platform instead).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.name):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort.__init__):
-
-2012-02-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up options, port handling in manager_worker_broker
- https://bugs.webkit.org/show_bug.cgi?id=78568
-
- Reviewed by Tony Chang.
-
- manager_worker_broker no longer needs options or port objects
- directly, so we make them only be passed in start_worker().
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (_ManagerConnection.__init__):
- (_ManagerConnection.start_worker):
- (_InlineManager.__init__):
- (_InlineManager.start_worker):
- (_InlineManager.run_message_loop):
- (_MultiProcessManager.__init__):
- (_MultiProcessManager):
- (_MultiProcessManager.start_worker):
- (_InlineWorkerConnection.__init__):
- (_InlineWorkerConnection.run):
- (_Process.__init__):
- (_MultiProcessWorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (make_broker):
- (_TestWorker.run):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- (_TestsMixin.test_unknown_message):
- (MultiProcessBrokerTests.setUp):
- (InterfaceTest.test_managerconnection_is_abstract):
- * Scripts/webkitpy/layout_tests/controllers/message_broker.py:
- (Broker.__init__):
-
-2012-02-14 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: add a unit test for regression introduced in bug 78565
- https://bugs.webkit.org/show_bug.cgi?id=78646
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/controllers/worker_unittest.py: Added.
- (FakeConnection):
- (FakeConnection.run_message_loop):
- (FakeConnection.post_message):
- (WorkerTest):
- (WorkerTest.test_default_platform_in_worker):
-
-2012-02-14 Dirk Pranke <dpranke@chromium.org>
-
- NRWT is broken for the default port
- https://bugs.webkit.org/show_bug.cgi?id=78640
-
- Reviewed by Tony Chang.
-
- The change in r107718 (bug 78565) broke NRWT if you didn't
- specify any sort of --platform flag or equivalent. I didn't
- catch this because it's a full integration test (which we don't
- have an automated test for) and I missed this command line
- variant when testing interactively.
-
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.run):
-
-2012-02-14 Ramya Chandrasekaran <cramya@google.com>
-
- Last character display for passwords in Android.
- https://bugs.webkit.org/show_bug.cgi?id=78532
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-02-14 Adam Barth <abarth@webkit.org>
-
- Finish implementing start_helper for ChromiumAndroidPort
- https://bugs.webkit.org/show_bug.cgi?id=78582
-
- Reviewed by Eric Seidel.
-
- This patch contains the remaining odds and ends for the start_helper function.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort._synchronize_datetime):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._check_version):
- (ChromiumAndroidPort._run_adb_command):
- (ChromiumAndroidPort._copy_device_file):
-
-2012-02-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: create ports in Workers, not in manager_worker_broker
- https://bugs.webkit.org/show_bug.cgi?id=78565
-
- Reviewed by Tony Chang.
-
- We will now create the Port object (if necessary) in the Worker
- directly, so that the manager_worker_broker module doesn't need
- all of this layout_test-specific logic. Part of the fixes for
- bug 78171.
-
- These changes are all well-tested by the existing tests in
- run_webkit_tests_integrationtest.py.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_Process.run):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.safe_init):
- (Worker.run):
- (Worker.cleanup):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- (main): Fix a minor bug where running the 'mock-test' port didn't work right.
-
-2012-02-14 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] check that we're not running multiple modal dialogs at the same time
- https://bugs.webkit.org/show_bug.cgi?id=78486
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setIsDisplayingModalDialog):
- (TestShell::isDisplayingModalDialog):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::runModal):
-
-2012-02-14 Adam Barth <abarth@webkit.org>
-
- Enable the GPU codepath in the chromium-android port
- https://bugs.webkit.org/show_bug.cgi?id=78580
-
- Reviewed by James Robinson.
-
- Suprise! There is no ChromiumGpuAndroidPort! Instead, Chromium
- Android always uses the GPU codepath, so we set the GPU flags on the
- main chromium-android port instead.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
-
-2012-02-14 Adam Barth <abarth@webkit.org>
-
- NRWT should expose --adb-args flag for Android
- https://bugs.webkit.org/show_bug.cgi?id=78579
-
- Reviewed by Eric Seidel.
-
- This flag is already wired up to the ChromiumAndroidPort.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-02-14 Alexey Proskuryakov <ap@apple.com>
-
- [Mac][Win][WK2] Switch to RFC 6455 protocol for WebSockets
- https://bugs.webkit.org/show_bug.cgi?id=78541
- <rdar://problem/10036695>
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp: (resetDefaultsToConsistentValues):
- After each test, reset to using new protocol.
-
-2012-02-11 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Convert svg/animations to use SMIL methods for driving the timeline
- https://bugs.webkit.org/show_bug.cgi?id=78422
-
- Reviewed by Dirk Schulze.
-
- Remove no longer needed SVG specific animation sampling functionality from DRT.
- Instead we switched the svg/animations tests to use SVGSVGElement.setCurrentTime.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-02-13 Rob Flack <flackr@chromium.org>
-
- Add Linux ChromiumOS test results to flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=78495
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2012-02-13 ChangSeok Oh <shivamidow@gmail.com>
-
- [GTK] Mutation Observers build is broken
- https://bugs.webkit.org/show_bug.cgi?id=78433
-
- Reviewed by Martin Robinson.
-
- Enabled mutation observers as a default feature for GTK port, too.
-
- * Scripts/build-webkit:
-
-2012-02-13 Loïc Yhuel <loic.yhuel_ext@softathome.com>
-
- Allow to configure ENABLE_FTPDIR in build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=65098
-
- Reviewed by Eric Seidel.
-
- Allow to disable ENABLE_FTPDIR by command line.
- Remove ENABLE_FTPDIR from --minimal build
-
- * Scripts/build-webkit: Add entries for ENABLE_FTPDIR (enabled by default)
- * qmake/mkspecs/features/features.prf: ENABLE_FTPDIR must be set to match Platform.h,
- as, for Qt platform, build-webkit does not add on command line what it thinks to be default values
-
-2012-02-13 Shinya Kawanaka <shinyak@chromium.org>
-
- Add shinyak as committer.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-13 Adam Barth <abarth@webkit.org>
-
- Implement start/stop_helper for ChromiumAndroidPort
- https://bugs.webkit.org/show_bug.cgi?id=78558
-
- Reviewed by Dirk Pranke.
-
- These functions (and their dependencies) set up the Android device for
- testing.
-
- This patch also includes a few tweaks on the previous patch recommended
- by dpranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort.stop_helper):
- (ChromiumAndroidPort._shut_down_http_server):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidPort._push_fonts):
- (ChromiumAndroidPort._restore_system_font):
- (ChromiumAndroidPort._push_test_resources):
- (ChromiumAndroidPort._push_to_device):
- (ChromiumAndroidPort._pull_from_device):
- (ChromiumAndroidPort._kill_device_process):
- (ChromiumAndroidPort._setup_performance):
- (ChromiumAndroidPort._teardown_performance):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase):
- (PortTestCase.make_port):
- (PortTestCase.test_default_worker_model):
-
-2012-02-13 Adam Barth <abarth@webkit.org>
-
- Implement enough of ChromiumAndroidPort to make ChromiumAndroidPortTest pass
- https://bugs.webkit.org/show_bug.cgi?id=78550
-
- Reviewed by Eric Seidel.
-
- Much of this code just forwards to the "host" port, which seems like a
- reasonable thing to do.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.stop_helper):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._build_path):
- (ChromiumAndroidPort._path_to_apache):
- (ChromiumAndroidPort._path_to_apache_config_file):
- (ChromiumAndroidPort._path_to_driver):
- (ChromiumAndroidPort._path_to_helper):
- (ChromiumAndroidPort._path_to_image_diff):
- (ChromiumAndroidPort._path_to_lighttpd):
- (ChromiumAndroidPort._path_to_lighttpd_modules):
- (ChromiumAndroidPort._path_to_lighttpd_php):
- (ChromiumAndroidPort._path_to_wdiff):
- (ChromiumAndroidPort._shut_down_http_server):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase):
- (PortTestCase.make_port):
- (PortTestCase.test_default_worker_model):
-
-2012-02-13 Adam Barth <abarth@webkit.org>
-
- chromium_android.py should implement "virtual" methods from ChromiumPort
- https://bugs.webkit.org/show_bug.cgi?id=78545
-
- Reviewed by Dirk Pranke.
-
- This patch adds basic implementations that specialize a bunch of
- functions from ChromiumPort.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort):
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.default_child_processes):
- (ChromiumAndroidPort.baseline_search_path):
- (ChromiumAndroidPort.check_build):
- (ChromiumAndroidPort.check_sys_deps):
- (ChromiumAndroidPort.default_worker_model):
- (ChromiumAndroidPort.test_expectations):
- (ChromiumAndroidPort.start_http_server):
- (ChromiumAndroidPort.stop_http_server):
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort.stop_helper):
-
-2012-02-13 Adam Barth <abarth@webkit.org>
-
- Add a skeleton ChromiumAndroid port to webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=78543
-
- Reviewed by Eric Seidel.
-
- This patch just adds an empty ChromiumAndroid port object to webkitpy
- and wires it up to the factory objects. An actual implementation will
- follow.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py: Added.
- (ChromiumAndroidPort):
- (ChromiumAndroidPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
-
-2012-02-13 Adam Barth <abarth@webkit.org>
-
- NRWT's HTTP servers should support additional directories for resources
- https://bugs.webkit.org/show_bug.cgi?id=78528
-
- Reviewed by Eric Seidel.
-
- This functionality will be used by the Chromium-Android port.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.start_http_server):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd.__init__):
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd.__init__):
- (Lighttpd._prepare_config):
-
-2012-02-13 Ami Fischman <fischman@chromium.org>
-
- Add fischman as committer.
-
- Unreviewed
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-06 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Drop support for the Curl network backend.
- https://bugs.webkit.org/show_bug.cgi?id=77874
-
- Reviewed by Eric Seidel.
-
- Nobody seems to be maintaining the Curl backend in WebCore, the
- EFL port developers all seem to be using the Soup backend and the
- port itself has many features which are only implemented for the
- latter.
-
- * DumpRenderTree/efl/CMakeLists.txt: Always link to glib/libsoup
- and always add the required include directories.
- * EWebLauncher/CMakeLists.txt: Add the required glib/libsoup
- include directories and link to them.
-
-2012-02-13 Kenichi Ishibashi <bashi@chromium.org>
-
- [WebSocket] Update pywebsocket to 0.7.1
- https://bugs.webkit.org/show_bug.cgi?id=78484
-
- pywebsocket-0.7.1 follow the current draft of WebSocket deflate-frame extension.
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_pywebsocket):
-
-2012-02-12 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Implement zoomPage{In,Out} and textZoom{In,Out} events.
- https://bugs.webkit.org/show_bug.cgi?id=78091
-
- Reviewed by Hajime Morita.
-
- Implemented zoomPageIn, zoomPageOut, textZoomIn and textZoomOut events on EFL DRT.
- This patch will activate around 1,900 test cases from skipped list in EFL port.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (textZoom):
- (pageZoom):
- (textZoomInCallback):
- (textZoomOutCallback):
- (zoomPageInCallback):
- (zoomPageOutCallback):
-
-2012-02-12 Ashod Nakashian <ashodnakashian@yahoo.com>
-
- KeywordLookupGenerator.py script fails in some cases
- https://bugs.webkit.org/show_bug.cgi?id=77886
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/webkitpy/style/checker.py: New rule for Keywords.table to not have CR.
- * Scripts/webkitpy/style/checker_unittest.py: New UT for Keywords.table rule.
- (GlobalVariablesTest.test_path_rules_specifier):
-
-2012-02-12 Joe Thomas <joethomas@motorola.com>
-
- Add toText and isTextNode helpers in Text class.
- https://bugs.webkit.org/show_bug.cgi?id=78140
-
- Unit test case for the new style checker introduced.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTest):
- (CppStyleTest.test_static_cast_readability): Added a unit test case.
-
-2012-02-12 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Enable features supported by EFL port in build-webkit.
- https://bugs.webkit.org/show_bug.cgi?id=78348
-
- Reviewed by Ryosuke Niwa.
-
- Sync build-webkit with OptionEfl.cmake, as some features enabled in
- OptionEfl.cmake are not enabled in build-webkit.
-
- * Scripts/build-webkit:
-
-2012-02-12 Joe Thomas <joethomas@motorola.com>
-
- Add toText and isTextNode helpers in Text class.
- https://bugs.webkit.org/show_bug.cgi?id=78140
-
- Added a style checker to use toText rather than static_cast<Text*>.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_language): Style checker for static_cast<Text*>.
-
-2012-02-12 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, disable Mutation observers build on GTK until it can
- actually build.
-
- * Scripts/build-webkit:
-
-2012-02-11 Benjamin Poulain <benjamin@webkit.org>
-
- Add back WTFURL to WebKit
- https://bugs.webkit.org/show_bug.cgi?id=77291
-
- Reviewed by Adam Barth.
-
- Add a flag to build-webkit to easily build WebKit with WTFURL.
-
- * Scripts/build-webkit:
-
-2012-02-10 Adam Klein <adamk@chromium.org>
-
- Enable MUTATION_OBSERVERS by default on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=78196
-
- Reviewed by Ojan Vafai.
-
- * Scripts/build-webkit:
-
-2012-02-10 Adam Barth <abarth@webkit.org>
-
- Move garden-o-matic's All Failures out of experimental
- https://bugs.webkit.org/show_bug.cgi?id=78395
-
- Reviewed by Dimitri Glazkov.
-
- Several folks have tried this feature and found it useful.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
-
-2012-02-10 Tim Horton <timothy_horton@apple.com>
-
- NRWT should categorize options in --help
- https://bugs.webkit.org/show_bug.cgi?id=76221
-
- Reviewed by Eric Seidel.
-
- Use optparse's OptionGroup mechanism to logically group NRWT's options,
- providing a better experience when scanning all the options.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-02-10 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] Refactor on Qt5 Layout tests' structure
- https://bugs.webkit.org/show_bug.cgi?id=77450
-
- Reviewed by Csaba Osztrogonác.
-
- Fix the scripts and related unittest due to the rename of qt-wk2 and qt-wk1
- to qt-5.0-wk2 and qt-5.0-wk1.
-
- * Scripts/old-run-webkit-tests:
- (buildPlatformResultHierarchy):
- (readSkippedFiles):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._wk2_port_name):
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._wk2_port_name):
-
-2012-02-09 Philippe Normand <pnormand@igalia.com>
-
- [GTK] EWS command-line option to run the tests
- https://bugs.webkit.org/show_bug.cgi?id=78211
-
- Reviewed by Adam Barth.
-
- New --run-tests option (defaults to False) for the EWS commands.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
- (AbstractEarlyWarningSystem.__init__):
- (AbstractEarlyWarningSystem.review_patch):
- (ChromiumLinuxEWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._test_builder_ews):
-
-2012-02-09 Eric Seidel <eric@webkit.org>
-
- Rename compare_text and compare_audio to make it clear that they're !=
- https://bugs.webkit.org/show_bug.cgi?id=78301
-
- Reviewed by Adam Barth.
-
- I also removed the maybe_create_directory function which was redundant.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.set_up_run):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (TestResultWriter._make_output_directory):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.do_text_results_differ):
- (Port.do_audio_results_differ):
- (Port.diff_text):
- (Port.driver_name):
- (Port.skips_perf_test):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.do_text_results_differ):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_do_text_results_differ):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd.__init__):
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase.__init__):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- (Rebaseliner._diff_baselines):
-
-2012-02-09 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Add DRT support for modal dialogs
- https://bugs.webkit.org/show_bug.cgi?id=53600
-
- Reviewed by Martin Robinson.
-
- Implement the modal dialogs handling in DumpRenderTree and GtkLauncher.
- Most significantly, when creating a new web view in GtkLauncher, the window
- of the web view opener is passed around. In DumpRenderTree, the window of
- the main web view is always considered as the opener. This is required so
- the modal dialog's toplevel can be made transient for the opener's toplevel.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewRunModalDialog):
- (createWebView):
- * GtkLauncher/main.c:
- (createWebViewCb):
- (runModalDialogCb):
- (createBrowser):
- (createWindow):
- (main):
-
-2012-02-09 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] security/set-form-autocomplete-attribute.html fails
- https://bugs.webkit.org/show_bug.cgi?id=78261
-
- Reviewed by Martin Robinson.
-
- Use the new helper in DumpRenderTreeSupportGtk to properly
- test whether an element performs autocompletion.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
-
-2012-02-09 James Robinson <jamesr@chromium.org>
-
- [chromium] Enable mock scrollbars for compositing layout tests
- https://bugs.webkit.org/show_bug.cgi?id=78299
-
- Reviewed by Dirk Pranke.
-
- This enables mock scrollbars by default for compositing tests. These pixel tests are intended to test the
- compositor behavior, not native theming, and having real scrollbars causes us to have to maintain significantly
- more pngs than we should and expose weird alpha bugs in our theming that doesn't impact real users.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-02-09 Eric Seidel <eric@webkit.org>
-
- Remove more uses of "os" from our webkitpy code
- https://bugs.webkit.org/show_bug.cgi?id=78292
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/checkout_mock.py:
- (MockCheckout.__init__):
- (MockCheckout.is_path_to_changelog):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem._split):
- * Scripts/webkitpy/common/system/zipfileset_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- (CreateBug.prompt_for_bug_title_and_comment):
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- * Scripts/webkitpy/tool/steps/attachtobug.py:
- (AttachToBug.run):
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- * Scripts/webkitpy/tool/steps/editchangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest.test_ensure_bug_url):
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2012-02-09 Eric Seidel <eric@webkit.org>
-
- Remove the cr-mac-ews (it's long been dead)
- https://bugs.webkit.org/show_bug.cgi?id=78267
-
- Reviewed by Adam Barth.
-
- * QueueStatusServer/model/queues.py:
- (Queue):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (ChromiumWindowsEWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._test_builder_ews):
- (EarlyWarningSytemTest._test_testing_ews):
-
-2012-02-09 Dirk Pranke <dpranke@chromium.org>
-
- some tests in webkitpy are being run three times
- https://bugs.webkit.org/show_bug.cgi?id=78283
-
- Reviewed by Ryosuke Niwa.
-
- It turns out that if you import a class derived from
- unittest.TestCase as a base name (e.g., from ... import ChangeLogTest),
- the unittest framework treats it as if the class was defined in
- the file (as well in the original file). This led us to running
- the tests in ChangeLogTest three times.
-
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest):
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
- (_assert_message_for_revert_output):
-
-2012-02-09 Adam Barth <abarth@webkit.org>
-
- Remove extraneous line in previous patch. I forgot to remove this
- before landing.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverProxy.start):
-
-2012-02-09 Adam Barth <abarth@webkit.org>
-
- run-perf-tests should have an option to pause before running tests so we can attach Instruments
- https://bugs.webkit.org/show_bug.cgi?id=78271
-
- Reviewed by Ryosuke Niwa.
-
- This lets me attach instruments to profile the performance of the test.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.start):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.start):
- (DriverProxy.start):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.start):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.start):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.start):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run.RecordingTestDriver.start):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (start):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStartCount):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStartCount.start):
-
-2012-02-09 Adam Barth <abarth@webkit.org>
-
- run-perf-tests --chromium should run the chromium port
- https://bugs.webkit.org/show_bug.cgi?id=78266
-
- Reviewed by Ryosuke Niwa.
-
- This patch makes run-perf-tests work more like run-webkit-tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2012-02-09 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] run-webkit-tests --qt crashes if WEBKIT_TESTFONTS is not set
- https://bugs.webkit.org/show_bug.cgi?id=77466
-
- Reviewed by Dirk Pranke.
-
- Replicate the behavior of old-run-webkit-tests and check if WEBKIT_TESTFONTS
- is set or if we should raise an error. A unit test was added.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.operating_system):
- (QtPort):
- (QtPort.check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_operating_system):
- (QtPortTest):
- (QtPortTest.test_check_sys_deps):
-
-2012-02-09 Eric Seidel <eric@webkit.org>
-
- Rename ports.WebKitPort to DeprecatedPort and make it stop being all class methods
- https://bugs.webkit.org/show_bug.cgi?id=78263
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort):
- (DeprecatedPort.name):
- (DeprecatedPort.flag):
- (DeprecatedPort.script_path):
- (DeprecatedPort.script_shell_command):
- (DeprecatedPort.port):
- (DeprecatedPort.makeArgs):
- (DeprecatedPort.update_webkit_command):
- (DeprecatedPort.check_webkit_style_command):
- (DeprecatedPort.prepare_changelog_command):
- (DeprecatedPort.build_webkit_command):
- (DeprecatedPort.run_javascriptcore_tests_command):
- (DeprecatedPort.run_webkit_unit_tests_command):
- (DeprecatedPort.run_webkit_tests_command):
- (DeprecatedPort.run_python_unittests_command):
- (DeprecatedPort.run_perl_unittests_command):
- (DeprecatedPort.layout_tests_results_path):
- (MacPort):
- (WinPort):
- (GtkPort):
- (GtkPort.build_webkit_command):
- (GtkPort.run_webkit_tests_command):
- (QtPort):
- (QtPort.build_webkit_command):
- (EflPort):
- (EflPort.build_webkit_command):
- (ChromiumPort):
- (ChromiumPort.update_webkit_command):
- (ChromiumPort.build_webkit_command):
- (ChromiumPort.run_webkit_tests_command):
- (ChromiumPort.run_javascriptcore_tests_command):
- (ChromiumXVFBPort):
- (ChromiumXVFBPort.run_webkit_tests_command):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest):
- (DeprecatedPortTest.test_mac_port):
- (DeprecatedPortTest.test_gtk_port):
- (DeprecatedPortTest.test_qt_port):
- (DeprecatedPortTest.test_chromium_port):
- (DeprecatedPortTest.test_chromium_xvfb_port):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem.__init__):
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/main.py:
- (WebKitPatch):
- (WebKitPatch.handle_global_options):
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- (StepsTest.test_runtests_args):
-
-2012-02-09 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] always initialize makeArgs in buildChromiumNinja
- https://bugs.webkit.org/show_bug.cgi?id=78231
-
- Reviewed by Tony Gentilcore.
-
- * Scripts/webkitdirs.pm:
- (buildChromiumNinja):
-
-2012-02-09 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Show url of current hovered link in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=78098
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewMouseTargetChanged): Check whether hit test result is a
- link and use the url to update the status bar text.
- (browserWindowConstructed): Connect to
- WebKitWebView::mouse-target-changed signal.
-
-2012-02-09 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Upstream DumpRenderTreeBlackBerry
- https://bugs.webkit.org/show_bug.cgi?id=78042
-
- Reviewed by Antonio Gomes.
-
- Upstream final part of our DRT implementation.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp: Added.
- * DumpRenderTree/blackberry/PNGImageEncoder.cpp: Added.
- * DumpRenderTree/blackberry/PNGImageEncoder.h: Added.
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp: Added.
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h: Added.
-
-2012-02-09 Ryosuke Niwa <rniwa@webkit.org>
-
- kill-old-processes should kill gcc and clang
- https://bugs.webkit.org/show_bug.cgi?id=78189
-
- Reviewed by Eric Seidel.
-
- Added a bunch of processes names of gcc and clang to the list.
-
- * BuildSlaveSupport/kill-old-processes:
-
-2012-02-07 MORITA Hajime <morrita@google.com>
-
- Replacement text should be available from the marker.
- https://bugs.webkit.org/show_bug.cgi?id=77934
-
- Made the mock requestCheckingOfText() implementation to return
- a replacement text for each misspelled word if available.
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck):
-
-2012-02-08 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][DRT] DumpRenderTreeQt should support --no-timeout and --timeout options
- https://bugs.webkit.org/show_bug.cgi?id=78146
-
- Reviewed by Ryosuke Niwa.
-
- Our DumpRenderTree should support --no-timeout and --timeout options in order
- to be able to use run-perf-tests and have a Performance Bot.
- This patch adds setTimeout and setShouldTimeout functions to our LayoutTestController
- and the necessary code to handle such command line arguments to our DumpRenderTree.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::setTimeout):
- (WebCore):
- (WebCore::DumpRenderTree::setShouldTimeout):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::waitUntilDone):
- (LayoutTestController::notifyDone):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController::setTimeout):
- (LayoutTestController::setShouldTimeout):
- (LayoutTestController):
- * DumpRenderTree/qt/main.cpp:
- (isOption):
- (printUsage):
- (main):
-
-2012-02-08 Gustavo Noronha Silva <gns@gnome.org>
-
- Rubber-stamped by Martin Robinson.
-
- * gtk/common.py:
- (get_build_path): Move test for current directory being a valid
- directory up so it takes precedence over WebKitBuild/Release and
- WebKitBuild/Debug when they exist as well.
-
-2012-02-08 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] doc rebasing does not respect DESTDIR
- https://bugs.webkit.org/show_bug.cgi?id=78177
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Pass DESTDIR on to generate-gtkdoc, when
- calling it for rebasing.
- * gtk/generate-gtkdoc:
- (get_common_options): Handle the new --virtual-root option.
- * gtk/gtkdoc.py:
- (GTKDoc.rebase_installed_docs): If a virtual-root has been given, pass
- it on to gtkdoc-rebase as dest-dir, and prefix the htmldir with it.
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- Remove Python 2.5 support from WebKit
- https://bugs.webkit.org/show_bug.cgi?id=71593
-
- Reviewed by Eric Seidel.
-
- This is the last vestige of our Python 2.5 support.
-
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractQueueTest.test_log_from_script_error_for_upload):
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- version_check.py should inform users that we don't support Python 2.5 anymore
- https://bugs.webkit.org/show_bug.cgi?id=78179
-
- Reviewed by Eric Seidel.
-
- We don't support Python 2.5 anymore.
-
- * Scripts/webkitpy/common/version_check.py:
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- test_configuration.py shouldn't re-implement itertools
- https://bugs.webkit.org/show_bug.cgi?id=78178
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfigurationConverter.to_specifiers_list):
- (TestConfigurationConverter.to_specifiers_list.try_collapsing):
- (TestConfigurationConverter.to_specifiers_list.try_abbreviating):
- (TestConfigurationConverter):
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- webkitpy should reply upon the multiprocessing package existing
- https://bugs.webkit.org/show_bug.cgi?id=78176
-
- Reviewed by Eric Seidel.
-
- Now that we don't support Python 2.5, this import can't fail.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (_Process):
- (_Process.__init__):
- (_Process.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (FunctionTests.test_get__processes):
- (MultiProcessBrokerTests.setUp):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.default_worker_model):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.check_build):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_default_worker_model):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2012-02-08 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed typo fix that makes docs build again for the gtk2-based
- library.
-
- * gtk/generate-gtkdoc:
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- Don't re-implement ZipFile.extractall
- https://bugs.webkit.org/show_bug.cgi?id=78173
-
- Reviewed by Eric Seidel.
-
- We can use ZipFile.extractall now that we don't support Python 2.5.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._extract_targz):
- (AutoInstaller._unzip):
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- Remove the ospath compat shim from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=78170
-
- Reviewed by Eric Seidel.
-
- We no longer need this compat shim now that we don't support Python 2.5.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem.relpath):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.relpath):
- * Scripts/webkitpy/common/system/ospath.py: Removed.
- * Scripts/webkitpy/common/system/ospath_unittest.py: Removed.
-
-2012-02-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix attempt after r107053.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests):
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- Remove simplejson because it's no longer used by webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=78164
-
- Reviewed by Eric Seidel.
-
- All the importers of this code were removed in a previous patch.
-
- * Scripts/webkitpy/thirdparty/simplejson: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/LICENSE.txt: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/README.txt: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/__init__.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/_speedups.c: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/decoder.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/encoder.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/jsonfilter.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/ordered_dict.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/scanner.py: Removed.
- * Scripts/webkitpy/thirdparty/simplejson/tool.py: Removed.
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- webkitpy still imports simplejson
- https://bugs.webkit.org/show_bug.cgi?id=78161
-
- Reviewed by Eric Seidel.
-
- We no longer support Python 2.5, so we can rely upon Python's built-in
- JSON package.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/style/checkers/jsonchecker.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2012-02-08 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Fails to build docs with non-standard build directories
- https://bugs.webkit.org/show_bug.cgi?id=78118
-
- * gtk/common.py:
- (get_build_path): add comment to document changes done in r107098,
- as requested by the reviewer and forgotten by me.
-
-2012-02-08 Adam Barth <abarth@webkit.org>
-
- Stop importing with_statement from the mysterious future
- https://bugs.webkit.org/show_bug.cgi?id=78156
-
- Reviewed by Eric Seidel.
-
- The future is now! (Well, at least 2008, when Python 2.6 was released,
- is no longer the __future__.)
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/net/file_uploader.py:
- * Scripts/webkitpy/common/newstringio_unittest.py:
- * Scripts/webkitpy/common/system/autoinstall.py:
- * Scripts/webkitpy/common/system/crashlogs.py:
- * Scripts/webkitpy/common/system/fileset.py:
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- * Scripts/webkitpy/common/system/path.py:
- * Scripts/webkitpy/common/thread/threadedmessagequeue.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- (of):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/style/filereader_unittest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
- * Scripts/webkitpy/tool/commands/analyzechangelog.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
-
-2012-02-08 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Upstream DumpRenderTreeBlackBerry
- https://bugs.webkit.org/show_bug.cgi?id=78042
-
- Reviewed by Antonio Gomes.
-
- Upstream more parts of our DRT implementation.
-
- * DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp: Added.
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp: Added.
- * DumpRenderTree/blackberry/EventSender.cpp: Added.
- * DumpRenderTree/blackberry/EventSender.h: Added.
- * DumpRenderTree/blackberry/GCControllerBlackBerry.cpp: Added.
- * DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp: Added.
-
-2012-02-08 Dirk Pranke <dpranke@chromium.org>
-
- check-webkit-style failing with "Path does not exist."
- https://bugs.webkit.org/show_bug.cgi?id=77873
-
- Reviewed by Ojan Vafai.
-
- This change fixes the way the style checker determines which
- Port class to use for a given test_expectations.txt path; the
- previous version used a heuristic that didn't really work in the
- first place.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_expectations_path):
- (TestExpectationsChecker.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase._expect_port_for_expectations_path):
- (TestExpectationsTestCase.test_determine_port_from_expectations_path):
-
-2012-02-08 Fehér Zsolt <feherzs@inf.u-szeged.hu>
-
- nrwt: make --skip-pixel-test-if-no-baseline option
- https://bugs.webkit.org/show_bug.cgi?id=70484
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
- (SingleTestRunner._should_fetch_expected_checksum):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.handle_test_list):
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput.__init__):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.cmd_line):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_skip_pixel_test_if_no_baseline_option):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::setIsPixelTest):
- * WebKitTestRunner/TestInvocation.h:
- (WTR::TestInvocation::setSkipPixelTestOption):
- (TestInvocation):
-
-2012-02-08 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Upstream DumpRenderTreeBlackBerry
- https://bugs.webkit.org/show_bug.cgi?id=78042
-
- Reviewed by Antonio Gomes.
-
- Add implementation for our DumpRenderTree solution.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp: Added.
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h: Added.
-
-2012-02-08 Antti Koivisto <antti@apple.com>
-
- REGRESSION (r106681): Null check missing in [WebFrame(WebInternal) _typingStyle]
- https://bugs.webkit.org/show_bug.cgi?id=78080
-
- Reviewed by Andreas Kling, Darin Adler and Dan Bernstein.
-
- Add API test.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/TypingStyleCrash.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-02-08 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Fails to build docs with non-standard build directories
- https://bugs.webkit.org/show_bug.cgi?id=78118
-
- Reviewed by Martin Robinson.
-
- * gtk/common.py:
- (get_build_path): also try the current directory as a valid build
- dir, which makes non-standard build directories such as build-2.0
- and build-3.0 work
-
-2012-02-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Open links in a new window when clicking with the middle button in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=78099
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewDecidePolicy): Check whether it's a link clicked with the
- middle mouse button and load the request in a new window.
- (browserWindowConstructed): Connect to
- WebKitWebView::decide-policy signal.
-
-2012-02-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Revert a part of the change in r106687 as a build fix.
-
- Since Chromium port doesn't checkout the entire WebKit trunk,
- we can't run "svn info" on webkit_base.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.repository_paths):
-
-2012-02-07 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests doesn't recognize paths that start with PerformanceTests
- https://bugs.webkit.org/show_bug.cgi?id=78012
-
- Reviewed by Adam Barth.
-
- Use resolve paths using filesystem.relpath before passing it to find_files.find.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._collect_tests):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests):
- (test_collect_tests.add_file):
-
-2012-02-07 Justin Novosad <junov@chromium.org>
-
- [Chromium] add option for 2d canvas defered rendering to DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=78039
-
- Reviewed by Stephen White.
-
- Adding the --enable-deferred-2d-canvas switch to DumpRenderTree
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- (TestShell::runFileTest):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setDeferred2dCanvasEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-02-07 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [CMAKE] Use *bin* and *lib* directories for executable and libraries.
- https://bugs.webkit.org/show_bug.cgi?id=77928
-
- Reviewed by Daniel Bates.
-
- CMake has used *Programs* directory for executable. In addition, shared libraries are being
- built in source directory. It is better to set common places in order to maintain executable
- and libraries. *bin* is for executable and *lib* is for library.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * EWebLauncher/CMakeLists.txt:
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
- (jscProductDir):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._path_to_driver):
- (EflPort._path_to_image_diff):
-
-2012-02-07 Adam Klein <adamk@chromium.org>
-
- Add JSC support for delivering mutations when the outermost script context exits
- https://bugs.webkit.org/show_bug.cgi?id=70289
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/mac/EventSendingController.mm: Add support for
- eventSender.scheduleAsynchronousKeyDown.
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController keyDownWrapper:withModifiers:withLocation:]):
- (-[EventSendingController scheduleAsynchronousKeyDown:withModifiers:withLocation:]):
- * Scripts/build-webkit: Properly alphabetize --mutation-observers in the --help output.
-
-2012-02-07 Chris Rogers <crogers@google.com>
-
- Add Chris Rogers to reviewers section
- https://bugs.webkit.org/show_bug.cgi?id=78016
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-07 Nikolas Zimmermann <nzimmermann@rim.com>
-
- layoutTestController.display() is flaky for SVG tests
- https://bugs.webkit.org/show_bug.cgi?id=78021
-
- Reviewed by Dan Bernstein.
-
- Fix race condition in repaint rect tracking. When running a test using the repaint.js
- harness right after a test starting with "svg/W3C-SVG-1.1" the repaint test will fail,
- the gray overlay isn't contained in the pixel dump anymore. This is because of a specific
- hack that forces 480x360 instead of 800x600 pixel test dumps for any test starting with
- svg/W3C-SVG-1.1. The resizing of the web view was done when dumping the render tree, after
- the repaint test already run, thus invalidating the previously tracked repaint rects.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- (runTest):
-
-2012-02-07 Hans Wennborg <hans@chromium.org>
-
- Chromium: remove WebSpeechInputResult::set
- https://bugs.webkit.org/show_bug.cgi?id=77977
-
- Reviewed by Darin Fisher.
-
- It was renamed to assign() in r106475.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (makeRectResult):
-
-2012-02-07 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Give emulated touch-point a radius
- https://bugs.webkit.org/show_bug.cgi?id=77985
-
- Increase the radius of touch-point and show the actual size of the touch point in the touch-point mockup.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/qml/MockTouchPoint.qml:
-
-2012-02-07 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Include gdk-pixbuf in the jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=77980
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/jhbuild.modules: Add gdk-pixbuf to the jhbuild moduleset.
-
-2012-02-07 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Prevent early test termination with newer Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=77945
-
- Reviewed by Csaba Osztrogonác.
-
- QTBUG-24120 tracks a regression in Qt that would make layout tests
- terminate early. This patch works around it in a Qt 4 + 5 safe manner
- by disabling the quitOnLastWindowClosed feature, which we don't want/need
- for DRT anyway.
-
- * DumpRenderTree/qt/main.cpp:
- (main): Don't quit on last window closed.
-
-2012-02-06 Martin Robinson <mrobinson@igalia.com>
-
- Fix some miscellaneous 'make dist' error for WebKitGTK+.
-
- * MiniBrowser/gtk/GNUmakefile.am: The MiniBrowser generated
- files should not be distributed.
-
-2012-02-02 Hajime Morrita <morrita@chromium.org>
-
- [PerformanceTests] Each Dromaeo test needs its landing html.
- https://bugs.webkit.org/show_bug.cgi?id=77504
-
- Reviewed by Ryosuke Niwa.
-
- Added an ignorable pattern which happens in some Dromaeo tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
-
-2012-02-06 Kalev Lember <kalevlember@gmail.com>
-
- [GTK] Add missing pango include dir to fix build
- https://bugs.webkit.org/show_bug.cgi?id=77832
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Added $(PANGO_CFLAGS) to libWebCoreInternals_la_CPPFLAGS.
-
-2012-02-06 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Fix remaining errors in GTK+ WebKit2 API
- https://bugs.webkit.org/show_bug.cgi?id=77890
-
- Reviewed by Gustavo Noronha Silva.
-
- Verify that WebKit2 GTK+ test files are not skipped during style checks.
- Skip soup_server_new when checking for NULL versus 0 usage.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherSkipTest.test_should_skip_with_warning):
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_null):
-
-2012-02-06 Eric Seidel <eric@webkit.org>
-
- webkit-patch apply-from-bug should be able to apply non-reviewed patches
- https://bugs.webkit.org/show_bug.cgi?id=77883
-
- Reviewed by Adam Barth.
-
- This is very helpful if you use bugzilla as a replacement for git-stash.
- Makes it simpler to re-apply the patch w/o having to look up the patch id.
-
- * Scripts/webkitpy/tool/commands/download.py:
- (ProcessBugsMixin._fetch_list_of_patches_to_process):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (DownloadCommandsTest.test_apply_from_bug):
-
-2012-02-06 Philippe Normand <pnormand@igalia.com>
-
- [webkitpy] cpp style-checker complains about readability/naming in GStreamer elements source files
- https://bugs.webkit.org/show_bug.cgi?id=77866
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/style/checker.py: Ignore readability/naming
- errors in some gstreamer source code files defining new GStreamer elements.
- * Scripts/webkitpy/style/checker_unittest.py:
- (GlobalVariablesTest.test_path_rules_specifier):
-
-2012-02-06 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Make sure html_dir exists before calling gtkdoc-rebase
- https://bugs.webkit.org/show_bug.cgi?id=77869
-
- Reviewed by Philippe Normand.
-
- * gtk/gtkdoc.py:
- (GTKDoc.rebase_installed_docs): Check html_dir exists.
-
-2012-02-03 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Don't version QtWebKit.experimental.
- https://bugs.webkit.org/show_bug.cgi?id=77739
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-02-06 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Fix several gtkdoc-fixxref warnings
- https://bugs.webkit.org/show_bug.cgi?id=77613
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc:
- (get_webkit1_options): Add webkitspellcheckerenchant.* to the list
- of ignored files, since it's private.
- * gtk/gtkdoc.py:
- (GTKDoc._ignored_files_basenames): Helper function that returns a
- string with the list of ignored files basenames separated by a
- spaces, as expected by several gtkdoc commands.
- (GTKDoc._run_gtkdoc_scan): Use _ignored_files_basenames for
- --ignore-headers option.
- (GTKDoc._run_gtkdoc_mkdb): Use _ignored_files_basenames for
- --ignore-files option.
-
-2012-02-06 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Fix xrefs after installing API documentation
- https://bugs.webkit.org/show_bug.cgi?id=77551
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Call generate-gtkdoc --rebase after installing
- api docs.
- * gtk/common.py:
- (prefix_of_pkg_config_file): Get the prefix variable of the given
- pkg-config file.
- (gtk_version_of_pkg_config_file): Get the gtk version required by
- the given pkg-config file.
- * gtk/generate-gtkdoc: Add --rebase command line option to rebase
- installed documentation.
- (get_gtkdoc_module_paths): Get paths where API doc is installed
- for the dependencies of the given pkg-config file.
- (get_common_xref_deps): Get API doc directories of dependencies
- common to WebKit1 and WebKit2.
- (get_webkit2_options): Add cross_reference_deps option.
- (get_webkit1_options): Ditto
- (rebase_installed_docs): Helper function to create a generator for
- the given pkg-config file and options and call rebase_installed_docs.
- * gtk/gtkdoc.py:
- (GTKDoc.__init__): Initialize cross_reference_deps.
- (GTKDoc._run_gtkdoc_fixxref): Add API doc directories of
- dependencies.
- (GTKDoc.rebase_installed_docs): Call gtkdoc-rebase to fix xref
- links of installed documentation.
- (PkgConfigGTKDoc.__init__): Get the prefix from the pkg-config
- file.
-
-2012-02-06 Sergio Villar Senin <svillar@igalia.com>
-
- Incorrect statistics shown when running run-webkit-tests with --repeat-each or --iterations
- https://bugs.webkit.org/show_bug.cgi?id=77672
-
- Reviewed by Dirk Pranke.
-
- Test repetitions must be taken into account when working out
- the statistics shown by run-webkit-tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.prepare_lists_and_print_output):
- (Manager._print_result_summary):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- (ResultSummary.add):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_repeat_each_iterations_num_tests):
-
-2012-02-05 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10809525> WebKit2’s WebFrameLoaderClient::shouldUseCredentialStorage() always returns true
- https://bugs.webkit.org/show_bug.cgi?id=77823
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Updated for the additional callback.
-
-2012-02-04 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10660698> Clients cannot prevent caching of individual responses
- https://bugs.webkit.org/show_bug.cgi?id=77822
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Updated for the additional callback.
-
-2012-02-04 Sam Weinig <sam@webkit.org>
-
- Add ability to send WKURLRequests in WebKit2 API user messages
- https://bugs.webkit.org/show_bug.cgi?id=77819
-
- Reviewed by Anders Carlsson.
-
- Add testing for round-tripping WKTypes from the UIProcess,
- to the WebProcess, and back.
-
- - This commit adds a test fixture and tests for WKURLRequestRef, WKURLRef, and WKStringRef.
- More can easily be added.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/UserMessage.cpp: Added.
- (TestWebKitAPI):
- (WebKit2UserMessageRoundTripTest):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::WebKit2UserMessageRoundTripTest):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::didReceiveMessageFromInjectedBundle):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::didFinishLoadForFrame):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::setInjectedBundleClient):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::setPageLoaderClient):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::SetUp):
- (TestWebKitAPI::WebKit2UserMessageRoundTripTest::roundTrip):
- (TestWebKitAPI::TEST_F):
- * TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp: Added.
- (TestWebKitAPI):
- (UserMessageTest):
- (TestWebKitAPI::UserMessageTest::UserMessageTest):
- (TestWebKitAPI::UserMessageTest::didReceiveMessage):
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
-
-2012-02-04 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10772406> WKPreferences instances cannot be copied
- https://bugs.webkit.org/show_bug.cgi?id=77816
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
-
-2012-02-04 Adam Barth <abarth@webkit.org>
-
- garden-o-matic's All Failure tab should let you examine and rebaseline expected failures
- https://bugs.webkit.org/show_bug.cgi?id=77802
-
- Reviewed by Eric Seidel.
-
- This patch refactors our directory grouping code into base.js where it
- can be shared between failures.js and notifications.js. It then adds
- an Examine action to each group of failures that triggers the "results"
- view.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css:
-
-2012-02-04 Ojan Vafai <ojan@chromium.org>
-
- check-webkit-style is throwing an exception
- https://bugs.webkit.org/show_bug.cgi?id=77744
-
- Reviewed by David Levin.
-
- If the test_list is None, then we don't need to check for unsupported
- feature tests to skip.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._has_test_in_directories):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_skipped_tests_for_unsupported_features_empty_test_list):
-
-2012-02-03 Adam Barth <abarth@webkit.org>
-
- List of all failures in garden-o-matic should actually list all the failures
- https://bugs.webkit.org/show_bug.cgi?id=77796
-
- Reviewed by Eric Seidel.
-
- This patch wires a bit more data into the new "All Failures" tab. I've
- also iterated on how we enable this experimental feature. The tab is
- still just a dumb list, but we'll make it smarter.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
-
-2012-02-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Windows build fix after r106692.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_reference_files):
-
-2012-02-03 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=77782
- WebPageProxy::didNewFirstVisuallyNonEmptyLayout should is called more than
- once on some pages with frames
- -and corresponding-
- <rdar://problem/10798474>
-
- Reviewed by Sam Weinig.
-
- One new test.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didForceRepaint):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp: Added.
- (TestWebKitAPI):
- (NewFirstVisuallyNonEmptyLayoutFramesTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::NewFirstVisuallyNonEmptyLayoutFramesTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFramesTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/lots-of-iframes.html: Added.
-
-2012-02-03 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: change exit() calls to sys.exit(), fix a leak in outputcapture
- https://bugs.webkit.org/show_bug.cgi?id=77781
-
- Reviewed by Eric Seidel.
-
- This change fixes a couple of issues discovered while debugging
- test-webkitpy; both calling exit() instead of sys.exit() --
- which is discouraged in program code instead of the interpreter
- -- and a particular usage of outputcapture were stdin to get whacked
- and preventing debugging.
-
- This change introduces a couple of common _exit() methods that
- will standardize how webkit-patch exit's, in case we need to do
- something different in the future.
-
- * Scripts/webkitpy/common/system/deprecated_logging.py:
- (error):
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.assert_outputs):
- * Scripts/webkitpy/tool/bot/queueengine.py:
- (QueueEngine.exit_after_handled_error):
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- (AbstractSequencedCommand.execute):
- * Scripts/webkitpy/tool/commands/queues.py:
- (StyleQueue.handle_script_error):
- * Scripts/webkitpy/tool/commands/upload.py:
- (MarkBugFixed.execute):
- * Scripts/webkitpy/tool/multicommandtool.py:
- (Command._exit):
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- (AbstractStep._exit):
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- (CheckStyle.run):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._check_test_expectations):
- * Scripts/webkitpy/tool/steps/confirmdiff.py:
- (ConfirmDiff.run):
-
-2012-02-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Perf bot build fix.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_json):
-
-2012-02-03 Adam Barth <abarth@webkit.org>
-
- Add a blank "Expected Failures" tab to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=77793
-
- Reviewed by Eric Seidel.
-
- This tab will help us explore and manage our expected failures. The
- tab is hidden by default via a new "experimental features" flag.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- (#unexpected):
- (#onebar.partytime #unexpected):
-
-2012-02-03 Lucas Forschler <lforschler@apple.com>
-
- update-webkit-support-libraries is broken with the change from http to https on developer.apple.com
- https://bugs.webkit.org/show_bug.cgi?id=77785
-
- Fix the build bots.
-
- Pass the -k and --sslv3 keys to make curl work with https on https://developer.apple.com
-
- * Scripts/update-webkit-support-libs:
- (downloadExpectedVersionNumber):
-
-2012-02-03 Lucas Forschler <lforschler@apple.com>
-
- Add a Mac Lion Performance bot.
- https://bugs.webkit.org/show_bug.cgi?id=77765
-
- Reviewed by Adam Roben.
-
- This will update the master configuration in the following ways:
- Add a new performance slave (apple-xseve-11)
- Add a new Factory to download a build and run perf tests.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DownloadAndPerfTestFactory):
- (DownloadAndPerfTestFactory.__init__):
-
-2012-02-03 Dirk Pranke <dpranke@chromium.org>
-
- Extra TestWebKitAPI.gyp/TestWebKitAPI.target.chromium.mk in repository
- https://bugs.webkit.org/show_bug.cgi?id=77752
-
- Reviewed by James Robinson.
-
- Delete unneeded file accidentally checked in in r106481.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.target.chromium.mk: Removed.
-
-2012-02-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Ref Tests should support plain SVG files
- https://bugs.webkit.org/show_bug.cgi?id=77685
-
- Reviewed by Tony Chang.
-
- Don't assume reference files always use .html as the extension.
- Instead, use the list of supported extension to look for -expected.* and -mismatch.*
-
- Also fix various bugs in MockFileSystem and TestPort.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.isdir):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.reference_files):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_is_test_file):
- (PortTest.test_reference_files):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestInstance.__init__):
-
-2012-02-03 Ryosuke Niwa <rniwa@webkit.org>
-
- perf-o-matic should store chromium svn revision
- https://bugs.webkit.org/show_bug.cgi?id=77725
-
- Reviewed by Dirk Pranke.
-
- Report both WebKit and Chromium revisions to the graph server. Renamed test_repository_paths to
- repository_paths since it's nothing to do with tests. Also refactored scm so that head_svn_revision
- is implemented in terms of newly added svn_revision.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.svn_revision):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.head_svn_revision):
- (SCM):
- (SCM.svn_revision):
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.svn_revision):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.svn_revision):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator.__init__):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase._insert_generic_metadata):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.repository_paths):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.repository_paths):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_json):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_run_test_set_with_multiple_repositories):
-
-2012-02-03 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Split QQuickWebViewPrivate in two classes, for desktop and touch behavior.
- https://bugs.webkit.org/show_bug.cgi?id=77632
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::sendTouchEvent):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions):
- (WindowOptions::WindowOptions):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/qt/main.cpp:
- (main):
- * qmake/mkspecs/features/default_post.prf:
-
-2012-02-03 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Replace GNU linker script for exports with export macros in WTF/JSC
- https://bugs.webkit.org/show_bug.cgi?id=77723
-
- Reviewed by Tor Arne Vestbø.
-
- * Tools.pro: Compile WTR again on all platforms with WK2.
-
-2012-02-03 Sriram Neelakandan <sriram.neelakandan@gmail.com>
-
- Ensure that inspector disabled build works
- https://bugs.webkit.org/show_bug.cgi?id=77604
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-02 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add support for --makeargs to the ninja-based build
- https://bugs.webkit.org/show_bug.cgi?id=77688
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitdirs.pm:
- (buildChromiumNinja):
-
-2012-02-02 Eric Seidel <eric@webkit.org>
-
- Run tests in serial on SnowLeopard to avoid CFURLCache crashes
- https://bugs.webkit.org/show_bug.cgi?id=75145
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_operating_system):
- (test_default_child_processes):
-
-2012-02-02 Dirk Pranke <dpranke@chromium.org>
-
- nrwt shouldn't blow up when there are errors in test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=73603
-
- Reviewed by Ojan Vafai.
-
- This change removes the distinction between 'errors' and 'warnings'
- in the test expectations parser. Now, any problem is a
- 'warning', and if we are linting the file, warnings become fatal (errors).
-
- This will allow a normal run-webkit-tests run to proceed even if
- there are bad lines.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (ParseError.__init__):
- (ParseError.__str__):
- (ParseError.__repr__):
- (TestExpectationSerializer.to_string):
- (TestExpectationParser._parse_modifiers):
- (TestExpectationParser._parse_expectations):
- (TestExpectationParser._check_modifiers_against_expectations):
- (TestExpectationParser._tokenize):
- (TestExpectationLine.__init__):
- (TestExpectationLine.is_invalid):
- (TestExpectationsModel.add_expectation_line):
- (TestExpectationsModel._already_seen_better_match):
- (TestExpectations.__init__):
- (TestExpectations._report_warnings):
- (TestExpectations.remove_rebaselined_tests.without_rebaseline_modifier):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (assert_bad_expectations):
- (test_parse_warning):
- (test_overrides__duplicate):
- (ExpectationSyntaxTests.test_missing_expectation):
- (ExpectationSyntaxTests.test_missing_colon):
- (ExpectationSyntaxTests.test_too_many_colons):
- (ExpectationSyntaxTests.test_too_many_equals_signs):
- (ExpectationSyntaxTests.test_unrecognized_expectation):
- (SemanticTests.test_bug_format):
- (SemanticTests.test_bad_bugid):
- (SemanticTests.test_slow_and_timeout):
- (test_ambiguous):
- (test_more_modifiers):
- (test_order_in_file):
- (test_macro_overrides):
- (RebaseliningTest.assertRemove):
- (TestExpectationParserTests.test_tokenize_blank):
- (TestExpectationParserTests.test_tokenize_missing_colon):
- (TestExpectationParserTests.test_tokenize_extra_colon):
- (TestExpectationParserTests.test_tokenize_empty_comment):
- (TestExpectationParserTests.test_tokenize_comment):
- (TestExpectationParserTests.test_tokenize_missing_equal):
- (TestExpectationParserTests.test_tokenize_extra_equal):
- (TestExpectationParserTests.test_tokenize_valid):
- (TestExpectationParserTests.test_tokenize_valid_with_comment):
- (TestExpectationParserTests.test_tokenize_valid_with_multiple_modifiers):
- (TestExpectationSerializerTests.test_unparsed_to_string):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations):
-
-2012-02-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r106543.
- http://trac.webkit.org/changeset/106543
- https://bugs.webkit.org/show_bug.cgi?id=77671
-
- Made tests less stable (Requested by rniwa on #webkit).
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.TestDriver.run_test):
- (run_test):
-
-2012-02-02 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=77664
- Add API tests for didNewFirstVisuallyNonEmptyLayout
-
- Reviewed by Darin Adler.
-
- Two new tests.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didForceRepaint):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::didNewFirstVisuallyNonEmptyLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp: Added.
- (TestWebKitAPI):
- (NewFirstVisuallyNonEmptyLayoutFailsTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFailsTest::NewFirstVisuallyNonEmptyLayoutFailsTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutFailsTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp: Added.
- (TestWebKitAPI):
- (NewFirstVisuallyNonEmptyLayoutTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutTest::NewFirstVisuallyNonEmptyLayoutTest):
- (TestWebKitAPI::NewFirstVisuallyNonEmptyLayoutTest::didCreatePage):
-
-2012-02-02 Michael Saboff <msaboff@apple.com>
-
- Add Michael Saboff to reviewers list.
-
- Rubber-stamped by Gavin Barraclough.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-02 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- Add myself as a committer
-
- Unreviewed
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-02-02 Ryosuke Niwa <rniwa@webkit.org>
-
- [PerformanceTests] tests have dependencies
- https://bugs.webkit.org/show_bug.cgi?id=77506
-
- Reviewed by Hajime Morita.
-
- Load an initialization page before each test after starting a DRT so that
- warming up DRT won't affect the performance test results.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.TestDriver.run_test):
- (test_initial_page_loaded):
- (test_initial_page_loaded.run_test):
-
-2012-02-02 Ryosuke Niwa <rniwa@webkit.org>
-
- Re-land r106442 per Adam's suggestion. We'll do both restarting DRT and loading a fake test first.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (test_run_passing_test):
- (test_run_silent_test):
- (test_run_failed_test):
- (test_run_tonguey_test):
- (test_run_timeout_test):
- (test_run_crash_test):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.__init__):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.stop):
-
-2012-02-01 Jacob Goldstein <jacobg@adobe.com>
-
- Webkit generate-coverage-data script needs update to use new test script
- https://bugs.webkit.org/show_bug.cgi?id=77597
-
- Reviewed by Dirk Schulze.
-
- * Scripts/generate-coverage-data:
-
-2012-02-01 Adam Barth <abarth@webkit.org>
-
- Update the tests to show that the mac-ews processes patches from
- non-committers.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest.test_committer_only_ewses):
- (EarlyWarningSytemTest.test_builder_ewses):
-
-2012-02-01 Adam Barth <abarth@webkit.org>
-
- Mac-ews logs are huge
- https://bugs.webkit.org/show_bug.cgi?id=77045
-
- Reviewed by Eric Seidel.
-
- In order to get the cr-linux-ews bot to run tests on EC2, we created
- the chromium-xvfb port, which contained a number of tweaks to the
- Chromium port's behavior. This patch refactors those tweaks so they
- can be shared with the mac-ews, mostly by moving them into the
- non-interactive mode of RunTests.
-
- * Scripts/webkitpy/common/config/ports.py:
- (WebKitPort):
- (WebKitPort.layout_tests_results_path):
- (ChromiumPort.run_javascriptcore_tests_command):
- (ChromiumXVFBPort):
- (ChromiumXVFBPort.run_webkit_tests_command):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort):
- (MockPort.layout_tests_results_path):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (WebKitPortTest.test_chromium_xvfb_port):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_missing_layout_test_results):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest.test_commit_queue):
- (test_rollout):
- (test_manual_reject_during_processing):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_no_unit_tests):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- (StepsTest.test_runtests_args):
-
-2012-02-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Roll out r106442. It made some tests more stable but others less stable.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (test_run_passing_test):
- (test_run_silent_test):
- (test_run_failed_test):
- (test_run_tonguey_test):
- (test_run_timeout_test):
- (test_run_crash_test):
- (test_run_test_set):
-
-2012-02-01 Lucas Forschler <lforschler@apple.com>
-
- Enable EWS for non-contributers.
- https://bugs.webkit.org/show_bug.cgi?id=77576
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2012-02-01 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=77383
- Add a different didFirstVisuallNonEmptyLayout heuristic to experiment with
- -and corresponding-
- <rdar://problem/10709560>
-
- Reviewed by Sam Weinig.
-
- WebKit2's WebLoaderClient has a temporary new function that must be accounted
- for.
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-02-01 Dirk Pranke <dpranke@chromium.org>
-
- TestWebKitAPI isn't being built on chromium bots any more
- https://bugs.webkit.org/show_bug.cgi?id=77563
-
- Reviewed by Dimitri Glazkov.
-
- I accidentally dropped it in the refactoring in r105449.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp: Added.
-
-2012-02-01 Hans Wennborg <hans@chromium.org>
-
- Rename WebSpeechInputResult::set() to assign()
- https://bugs.webkit.org/show_bug.cgi?id=77540
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- (MockWebSpeechInputController::speechTaskFired):
-
-2012-02-01 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] WebKit1 API documentation is not generated when building with gtk-2.0
- https://bugs.webkit.org/show_bug.cgi?id=77542
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc: Check first whether there's
- webkitgtk-3.0.pc and if it doesn't exist use webkitgtk-1.0.pc
- instead.
- (get_webkit2_options): Return just the options since the
- pkg_config_path doesn't depend on options
- (get_webkit1_options): Ditto.
- (generate_doc): Helper function to create a generator and generate
- documentation for the given pkg-config file with the given options.
- * gtk/gtkdoc.py:
- (GTKDoc.__init__): Don't use ** for args parameter, since it's
- used as a dict and never expanded.
- (PkgConfigGTKDoc.__init__): Ditto.
-
-2012-02-01 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] API documentation is not installed even when building with --enable-gtk-doc
- https://bugs.webkit.org/show_bug.cgi?id=77094
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Add install-data-local and uninstall-local rules
- to install/uninstall WebKit1 and WebKit2 API documentation.
-
-2012-02-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r106460.
- http://trac.webkit.org/changeset/106460
- https://bugs.webkit.org/show_bug.cgi?id=77552
-
- It break unit tests if WEBKIT_TESTFONTS isn't defined.
- (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2012-02-01 Nándor Huszka <huszka.nandor@stud.u-szeged.hu>
-
- [Qt] Automatic clean build feature always do clean build with --no-webkit2
- https://bugs.webkit.org/show_bug.cgi?id=74519
-
- Reviewed by Tor Arne Vestbø.
-
- Set the PLUGIN_ARCHITECTURE_UNSUPPORTED define always.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-02-01 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt][WK2] run-webkit-tests --qt crashes if WEBKIT_TESTFONTS is not set
- https://bugs.webkit.org/show_bug.cgi?id=77466
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Replicate the behavior of old-run-webkit-tests and check if WEBKIT_TESTFONTS
- is set or if we should raise an error.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.setup_environ_for_server):
-
-2012-02-01 Philippe Normand <pnormand@igalia.com> and Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Improve FrameLoader signals. Resource loading
- https://bugs.webkit.org/show_bug.cgi?id=49543
-
- Support for the new loader signals in DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (urlPath):
- (willSendRequestCallback):
- (urlSuitableForTestResult):
- (descriptionSuitableForTestResult):
- (didReceiveResponse):
- (didFinishLoading):
- (didFailLoadingWithError):
- (createWebView):
-
-2012-02-01 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should restart DRT for each test
- https://bugs.webkit.org/show_bug.cgi?id=77506
-
- Reviewed by Adam Barth.
-
- Always restart DRT when running performance tests in order to minimize the dependency between tests.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.stop):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (test_run_passing_test):
- (test_run_silent_test):
- (test_run_failed_test):
- (test_run_tonguey_test):
- (test_run_timeout_test):
- (test_run_crash_test):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.__init__):
- (test_run_test_set_kills_drt_per_run.TestDriverWithStopCount.stop):
-
-2012-01-31 Hans Wennborg <hans@chromium.org>
-
- Speech Input: Report speech element rect relative to window rather than frame
- https://bugs.webkit.org/show_bug.cgi?id=76443
-
- Reviewed by Darin Fisher.
-
- Update LayoutTestController to allow for retrieving the speech
- element's position used in a request.
-
- In Chromium this is handled by the MockWebSpeechInputController;
- adding stubs for the other implementations.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setMockSpeechInputDumpRectCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::setDumpRect):
- (MockWebSpeechInputController::clearResults):
- (MockWebSpeechInputController::startRecognition):
- (MockWebSpeechInputController::MockWebSpeechInputController):
- (makeRectResult):
- (MockWebSpeechInputController::speechTaskFired):
- * DumpRenderTree/chromium/MockWebSpeechInputController.h:
- (MockWebSpeechInputController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMockSpeechInputDumpRect):
-
-2012-01-31 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Add basic DRT/Efl implementation to support viewport test.
- https://bugs.webkit.org/show_bug.cgi?id=77320
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::dumpConfigurationForViewport): call dumpConfigurationForViewport().
-
-2012-01-31 Alexey Proskuryakov <ap@apple.com>
-
- REGRESSION (WebKit2): event.keyCode is always zero when typing in Russian
- https://bugs.webkit.org/show_bug.cgi?id=77473
- <rdar://problem/10751357>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (-[EventSendingController keyDown:withModifiers:withLocation:]):
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::keyDown):
- Added a new special keyDown value to test this.
-
-2012-01-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix the mock port to work with DriverProxy, reftests
- https://bugs.webkit.org/show_bug.cgi?id=77170
-
- Reviewed by Eric Seidel.
-
- The DryrunPort used for benchmarking and testing NRWT has been
- broken since we added the DriverProxy code. It isn't really
- needed any more, so I've removed it.
-
- The MockDRT port was also broken by DriverProxy, and moreover,
- never worked w/ reftests. Since we don't exercise this module in
- the unit tests, the code had also bitrotted some. I have cleaned
- it up and made it use DriverInput and DriverOutput for
- consistency.
-
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- (DryRunPort.__init__):
- (DryRunPort):
- (DryRunPort.real_name):
- (DryRunPort.create_driver):
- (DryRunPort.driver_cmd_line):
- (DryRunPort._driver_class):
- (DryrunDriver):
- (DryrunDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort.create_driver):
- (MockChromiumDRT.run_one_test):
-
-2012-01-31 Ojan Vafai <ojan@chromium.org>
-
- run-webkit-tests calls out to webkit-build-directory twice
- https://bugs.webkit.org/show_bug.cgi?id=77248
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkit-build-directory:
- If called with no arguments, print out both the top-level directory and the
- configuration directory
-
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.build_directory):
- When called with no arguments, get and cache both the top-level and configuration directories.
-
- * Scripts/webkitpy/layout_tests/port/config_standalone.py:
- (main):
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.assert_configuration):
- (ConfigTest.test_build_directory.mock_webkit_build_directory):
- (ConfigTest.test_build_directory):
- (ConfigTest.test_default_configuration__notfound):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_path):
- Cache the build directory in the options object so that other users
- of the options object don't need to call out to webkit-build-directory.
- Also, properly support the existing --build-directory argument.
-
-2012-01-31 Ryosuke Niwa <rniwa@webkit.org>
-
- Bump up the timeout for performance tests since DOM/DOMTable.html
- and Parser/html5-full-render.html are timing out on the bot.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2012-01-31 Ehsan Akhgari <ehsan.akhgari@gmail.com>
-
- Fix the update_webgl_conformance_tests.py script in order to enable it
- to detect the SCM being used correctly.
- https://bugs.webkit.org/show_bug.cgi?id=77462
-
- Reviewed by Kenneth Russell.
-
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
- (default_out_dir):
-
-2012-01-31 Eric Seidel <eric@webkit.org>
-
- webkit-patch apply-from-bug should work regardless of your CWD
- https://bugs.webkit.org/show_bug.cgi?id=77482
-
- Reviewed by Adam Barth.
-
- webkit-patch only ever works with patches made from the root
- directory. We should pass the CWD to svn-apply in the case
- where we're running not from the webkit root. I believe
- this used to work in the past and regressed.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.apply_patch):
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CheckoutTest.test_apply_patch):
-
-2012-01-31 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r106302.
- http://trac.webkit.org/changeset/106302
- https://bugs.webkit.org/show_bug.cgi?id=77472
-
- Broke building DRT before running the tests (Requested by ojan
- on #webkit).
-
- * Scripts/webkit-build-directory:
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.build_directory):
- * Scripts/webkitpy/layout_tests/port/config_standalone.py:
- (main):
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.assert_configuration):
- (ConfigTest.test_build_directory.mock_webkit_build_directory):
- (ConfigTest.test_build_directory):
- (ConfigTest.test_default_configuration__notfound):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_path):
-
-2012-01-31 Antoine Labour <piman@chromium.org>
-
- Merge WebGraphicsContext3D creation and initialization, and move it to
- WebViewClient.
- https://bugs.webkit.org/show_bug.cgi?id=76593
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::initialize):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createGraphicsContext3D):
- (WebViewHost::createPlugin):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-01-31 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [GTK] build-webkit warning.
- https://bugs.webkit.org/show_bug.cgi?id=77411
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitdirs.pm:
- (isCrossCompilation):
-
-2012-01-31 Dan Bernstein <mitz@apple.com>
-
- When generating derived sources, use the same compiler that is used to compile WebKitTestRunner.
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2012-01-31 Csaba Osztrogonác <ossy@webkit.org>
-
- If the QTDIR environment variable is set, the build system fails to compile WinCairo
- https://bugs.webkit.org/show_bug.cgi?id=77112
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitdirs.pm:
- (determineIsQt):
-
-2012-01-31 Adam Roben <aroben@apple.com>
-
- Only call -typingAttributes on WebViews, not WebHTMLViews
-
- Looks like this case was just missed in r105908.
-
- Fixes <http://webkit.org/b/77432> REGRESSION (r105908): WebKit1.InspectorBarTest is crashing
-
- Reviewed by Antti Koivisto.
-
- * TestWebKitAPI/Tests/mac/InspectorBar.mm:
- (TestWebKitAPI::TEST): Call -typingAttributes on the WebView, just like we do 2 lines
- earlier.
-
-2012-01-31 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] MiniBrowser: Show touch mocking indicators only when Ctrl is held down.
- https://bugs.webkit.org/show_bug.cgi?id=77221
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This makes sure that the indicator isn't in the way when doing clicks or dealing with the rest of the UI.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::sendTouchEvent):
-
-2012-01-26 Hans Wennborg <hans@chromium.org>
-
- Speech Input: move MockSpeechInputClient into Chromium DumpRenderTree implementation
- https://bugs.webkit.org/show_bug.cgi?id=77083
-
- Reviewed by Darin Fisher.
-
- Add MockWebSpeechInputController which provides a mock implementation
- of the WebSpeechInputController interface, and use that in
- DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- ():
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp: Added.
- (MockWebSpeechInputController::create):
- (MockWebSpeechInputController::addMockRecognitionResult):
- (MockWebSpeechInputController::clearResults):
- (MockWebSpeechInputController::startRecognition):
- (MockWebSpeechInputController::cancelRecognition):
- (MockWebSpeechInputController::stopRecording):
- (MockWebSpeechInputController::MockWebSpeechInputController):
- (MockWebSpeechInputController::speechTaskFired):
- (MockWebSpeechInputController::SpeechTask::SpeechTask):
- (MockWebSpeechInputController::SpeechTask::stop):
- (MockWebSpeechInputController::SpeechTask::runIfValid):
- * DumpRenderTree/chromium/MockWebSpeechInputController.h: Added.
- (WebKit):
- (MockWebSpeechInputController):
- (MockWebSpeechInputController::taskList):
- (SpeechTask):
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechInputController):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost::speechInputControllerMock):
- (WebViewHost):
- ():
-
-2012-01-31 Hajime Morrita <morrita@chromium.org>
-
- [PerformanceTests] Add landing html for Dromaeo dom-query test
- https://bugs.webkit.org/show_bug.cgi?id=77329
-
- Reviewed by Ryosuke Niwa.
-
- Added some more ignorable output patterns to allow warnings
- from a third party test suite.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._should_ignore_line_in_parser_test_result):
-
-2012-01-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Update download URLs to new domain.
-
- * waf/build/build_utils.py:
- (update_wx_deps):
-
-2012-01-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Build fix, add JavaScriptCore/tools
- to the list of build directories.
-
- * waf/build/settings.py:
-
-2012-01-30 Kentaro Hara <haraken@chromium.org>
-
- REGRESSION(r105797): prepare-ChangeLog for a .cpp file can
- output an empty method name (i.e. "()")
- https://bugs.webkit.org/show_bug.cgi?id=77336
-
- Reviewed by Darin Adler.
-
- r105797 tried to detect a change outside methods, but it causes a bug that
- prepare-ChangeLog can output an empty method name, like this:
-
- * foo/bar/baz.cpp:
- (method1):
- ():
- (method2):
-
- This is because the cpp parser in prepare-ChangeLog cannot distinguish
- '{' as the beginning of a method with '{' as the beginning of an array definition
- at the top level.
-
- int a[] = { 1, 2, 3 }; // This '{' is the beginning of an array definition.
-
- void func() { // This '{' is the beginning of a method.
- ...;
- }
-
- This patch fixes prepare-ChangeLog so that it skips an array definition at the top level.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_cpp): Modified as described above.
- (generateFunctionLists): As a hack, modified so that prepare-ChangeLog does not output
- an empty method name. Ideally this should not happen but may happen, since the
- parsers are not perfect.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp: Added test cases.
- (NameSpace7):
- (NameSpace8):
- (Class109):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt:
-
-2012-01-30 Ojan Vafai <ojan@chromium.org>
-
- run-webkit-tests calls out to webkit-build-directory twice
- https://bugs.webkit.org/show_bug.cgi?id=77248
-
- Reviewed by Dirk Pranke.
-
- This reduces to calls to webkit-build-directory to one call and
- saves 500ms for run-webkit-tests over a single file.
-
- * Scripts/webkit-build-directory:
- If called with no arguments, print out both the top-level directory and the
- configuration directory.
-
- * Scripts/webkit-build-directory:
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.build_directory):
- When called with no arguments, get and cache both the top-level and configuration directories.
-
- * Scripts/webkitpy/layout_tests/port/config_standalone.py:
- (main):
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.assert_configuration):
- (ConfigTest.test_build_directory.mock_webkit_build_directory):
- (ConfigTest.test_build_directory):
- (ConfigTest.test_default_configuration__notfound):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_path):
- Cache the root directory in the options object so that other users
- of the options object don't need to call out to webkit-build-directory.
-
-2012-01-30 Ojan Vafai <ojan@chromium.org>
-
- Parsing test_expecations.txt + Skipped lists takes too long
- https://bugs.webkit.org/show_bug.cgi?id=77059
-
- Reviewed by Dirk Pranke.
-
- This saves ~100ms on the Apple Mac port.
- -memoize a bunch of path methods.
- -Avoid doing multiple disk accesses per line.
- -Parse the skipped list directly instead of turning it into a test_expecations.txt
- formatting string and parsing that.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectationParser.expectation_for_skipped_test):
- (TestExpectationParser._parse_line):
- (TestExpectationParser._collect_matching_tests):
- (TestExpectations.__init__):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_add_skipped_tests):
- (test_add_skipped_tests_duplicate):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port.test_isfile):
- (Port.normalize_test_name):
- (Port.layout_tests_dir):
- (Port.abspath_for_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2012-01-30 Alexis Menard <alexis.menard@openbossa.org>
-
- Unreviewed. Add myself to CSS, GStreamer, Qt related watchlists.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-01-30 Gavin Barraclough <barraclough@apple.com>
-
- Unreviewed build fix following bug#76855
-
- * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
- ():
- (TestWebKitAPI::TEST_F):
-
-2012-01-26 No'am Rosenthal <noam.rosenthal@nokia.com> and Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] WKTR: Use a software rendering pipiline when running tests.
- https://bugs.webkit.org/show_bug.cgi?id=76708
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
- (WTR::PlatformWebView::PlatformWebView): Use software rendering of layers since the wrapping QQuickView isn't shown.
-
-2012-01-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Store build config immediately instead of waiting for a successfull build
-
- Otherwise we will not pick up changes to the config if the build is aborted,
- for example due to build errors or if the user pressed Ctrl+Z. We now write
- the new config before starting a build, but still defer to write the SVN
- revision once the build completes successfully.
-
- Reviewed by Ossy.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-01-30 Alexander Færøy <ahf@0x90.dk>
-
- [Qt] Add "New Window" button to the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=77281
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/icons/plus.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-01-30 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed rolling out r106222.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.handle_test_list):
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_repeat_each):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::setIsPixelTest):
-
-2012-01-30 Hans Wennborg <hans@chromium.org>
-
- Unreviewed, rolling out r106219.
- http://trac.webkit.org/changeset/106219
- https://bugs.webkit.org/show_bug.cgi?id=77083
-
- This broke Chromium's test_shell.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (WebKit):
- (LayoutTestController):
- ():
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp: Removed.
- * DumpRenderTree/chromium/MockWebSpeechInputController.h: Removed.
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechInputController):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost::speechInputControllerMock):
- (WebViewHost):
- ():
-
-2012-01-26 Hans Wennborg <hans@chromium.org>
-
- Speech Input: move MockSpeechInputClient into Chromium DumpRenderTree implementation
- https://bugs.webkit.org/show_bug.cgi?id=77083
-
- Reviewed by Darin Fisher.
-
- Add MockWebSpeechInputController which provides a mock implementation
- of the WebSpeechInputController interface, and use that in
- DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::addMockSpeechInputResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- ():
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp: Added.
- (MockWebSpeechInputController::create):
- (MockWebSpeechInputController::addMockRecognitionResult):
- (MockWebSpeechInputController::clearResults):
- (MockWebSpeechInputController::startRecognition):
- (MockWebSpeechInputController::cancelRecognition):
- (MockWebSpeechInputController::stopRecording):
- (MockWebSpeechInputController::MockWebSpeechInputController):
- (MockWebSpeechInputController::speechTaskFired):
- (MockWebSpeechInputController::SpeechTask::SpeechTask):
- (MockWebSpeechInputController::SpeechTask::stop):
- (MockWebSpeechInputController::SpeechTask::runIfValid):
- * DumpRenderTree/chromium/MockWebSpeechInputController.h: Added.
- (WebKit):
- (MockWebSpeechInputController):
- (MockWebSpeechInputController::taskList):
- (SpeechTask):
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechInputController):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost::speechInputControllerMock):
- (WebViewHost):
- ():
-
-2012-01-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r106109.
- http://trac.webkit.org/changeset/106109
- https://bugs.webkit.org/show_bug.cgi?id=77302
-
- It made tests crash (Requested by Ossy_weekend on #webkit).
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-01-28 Nico Weber <thakis@chromium.org>
-
- [chromium] Add support for building standalone webkit/chromium checkouts with ninja.
- https://bugs.webkit.org/show_bug.cgi?id=77243
-
- Reviewed by Adam Barth.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (isChromiumNinja):
- (determineIsChromiumNinja):
- (buildChromiumNinja):
- (buildChromium):
-
-2012-01-27 Kentaro Hara <haraken@chromium.org>
-
- The cpp parser of prepare-ChangeLog treats if(...) {} as a method
- https://bugs.webkit.org/show_bug.cgi?id=77241
-
- Reviewed by Ryosuke Niwa.
-
- The cpp parser of prepare-ChangeLog is wrong, and an inner {} block
- in a method in some namespace or class is treated as a method.
- This patch fixes the bug.
-
- class C {
- void func()
- {
- if (1) { // This should not be treated as a method.
- }
- }
- };
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_cpp):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp:
- (Class108):
- (Class108::func35):
-
-2012-01-27 Enrica Casucci <enrica@apple.com>
-
- Followup to http://trac.webkit.org/changeset/106171.
- Dan Bernstein pointed out correctly that I should
- have used copy instead of initWithString.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- (-[LocalPasteboard initWithName:]):
-
-2012-01-27 Enrica Casucci <enrica@apple.com>
-
- DRT pasteboard object should return the correct pasteboard name.
- https://bugs.webkit.org/show_bug.cgi?id=77260
-
- Currently the name property always returns nil.
- Adding a memeber variable to store the pasteboard name and return its
- value from the name method instead of returning nil always.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/DumpRenderTreePasteboard.m:
- (+[DumpRenderTreePasteboard _pasteboardWithName:]):
- (-[LocalPasteboard initWithName:]):
- (-[LocalPasteboard name]):
-
-2012-01-27 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [WK2] Implement the policy client
- https://bugs.webkit.org/show_bug.cgi?id=76343
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Update the list of skipped source files to include all clients.
-
-2012-01-27 Ada Chan <adachan@apple.com>
-
- Add test for WKBundleFrameGetParentFrame().
- https://bugs.webkit.org/show_bug.cgi?id=77161
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add ParentFrame.cpp and ParentFrame_Bundle.cpp.
- * TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Get the check result from the injected bundle.
- (TestWebKitAPI::setInjectedBundleClient):
- (TestWebKitAPI::TEST): Load simple-iframe.html and then wait for the injected bundle to post result.
- Make sure the check is successful.
- * TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp: Added.
- (TestWebKitAPI):
- (ParentFrameTest):
- (TestWebKitAPI::ParentFrameTest::ParentFrameTest):
- (TestWebKitAPI::didFinishLoadForFrame): If the frame is a subframe, store it off for checking later.
- If the frame is the main frame, check whether it's indeed the subframe's parent frame and post the result
- to the test controller.
- (TestWebKitAPI::ParentFrameTest::didCreatePage): Set the page loader client on this page.
-
-2012-01-27 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] DumpRenderTree lacks --no-timeout command line option
- https://bugs.webkit.org/show_bug.cgi?id=77196
-
- Reviewed by Martin Robinson.
-
- Add the --no-timeout command line option and reorganize
- watchdog code to make running DumpRenderTree without
- timeout possible.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setWaitToDumpWatchdog):
- (shouldSetWaitToDumpWatchdog):
- (initializeGlobalsFromCommandLineOptions):
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (waitToDumpWatchdogFired):
- (LayoutTestController::setWaitToDump):
-
-2012-01-27 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Enable the automatic touch->mouse mocking on the new Qt5 hashes
- https://bugs.webkit.org/show_bug.cgi?id=77122
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
-
-2012-01-27 Zeno Albisser <zeno@webkit.org>
-
- [Qt][Mac] Build fails after adding ICU support (r105997).
- https://bugs.webkit.org/show_bug.cgi?id=77118
-
- Define WTF_USE_ICU_UNICODE if we are on mac.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-27 Roland Takacs <takacs.roland@stud.u-szeged.hu>
-
- Update committers.py with new contributors.
- https://bugs.webkit.org/show_bug.cgi?id=77207
-
- I added six new contributors into committers.py:
-
- - Adam Kallai
- - Balazs Ankes
- - Janos Badics
- - Nandor Huszka
- - Roland Takacs
- - Szilard Ledan-Muntean
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-27 Vsevolod Vlasov <vsevik@chromium.org>
-
- Add Vsevolod Vlasov to reviewers list.
-
- Reviewed by Pavel Feldman.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-26 No'am Rosenthal <noam.rosenthal@nokia.com> and Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] WKTR: Use a software rendering pipiline when running tests.
- https://bugs.webkit.org/show_bug.cgi?id=76708
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
- (WTR::PlatformWebView::PlatformWebView): Use software rendering of layers since the wrapping QQuickView isn't shown.
-
-2012-01-26 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed. Build fix, add WebCore/testing/js
- to the list of source directories we build.
-
- * waf/build/settings.py:
-
-2012-01-26 Filip Pizlo <fpizlo@apple.com>
-
- Tools/Scripts/commit-log-editor is broken due to $_ getting clobbered
- https://bugs.webkit.org/show_bug.cgi?id=77177
-
- Reviewed by Jon Honeycutt.
-
- * Scripts/commit-log-editor:
-
-2012-01-26 Ojan Vafai <ojan@chromium.org>
-
- Decrease sleep time when killing server_process on Mac.
- https://bugs.webkit.org/show_bug.cgi?id=77169
-
- Reviewed by Eric Seidel.
-
- This shaves another ~70ms off single test runtime.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.stop):
-
-2012-01-26 Ojan Vafai <ojan@chromium.org>
-
- Remove builder name so http://trac.webkit.org/changeset/106035 actually works.
- https://bugs.webkit.org/show_bug.cgi?id=77164
-
- Reviewed by Dirk Pranke.
-
- http://trac.webkit.org/changeset/106035 depends on builder_name being
- falsey by default. There's other code that requires it to be iterable
- by default. So, make it be the empty string.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-01-26 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-test should include relative file paths in test names
- https://bugs.webkit.org/show_bug.cgi?id=77144
-
- Reviewed by Adam Barth.
-
- Include all directory names in the test name separated by "/".
- e.g. Bindings/event-target-wrapper.html translates to Bindings/event-target-wrapper
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._process_parser_test_result):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
-
-2012-01-26 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: re-land cleanup of test scaffolding
- https://bugs.webkit.org/show_bug.cgi?id=77153
-
- Reviewed by Eric Seidel.
-
- This is an attempt to reland the change in bug 76973 /
- r105935. My earlier attempt to manipulate PYTHONPATH
- seems to only work some of the time, for reasons that
- elude me. Directly adding Tools/Scripts to sys.path from
- inside the test script appears to work (more?) reliably.
-
- Also, it seemed like the files didn't actually get deleted
- the last time; I don't know why.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (command_line):
- (ExecutiveTest):
- (ExecutiveTest.test_run_command_args_type):
- (ExecutiveTest.test_run_command_with_unicode):
- (ExecutiveTest.test_running_pids):
- (main):
- * Scripts/webkitpy/common/system/fileutils.py: Removed.
- * Scripts/webkitpy/test/cat.py: Removed.
- * Scripts/webkitpy/test/cat_unittest.py: Removed.
- * Scripts/webkitpy/test/echo.py: Removed.
- * Scripts/webkitpy/test/echo_unittest.py: Removed.
-
-2012-01-26 Ojan Vafai <ojan@chromium.org>
-
- run-webkit-tests calls "nm" when it doesn't need to
- https://bugs.webkit.org/show_bug.cgi?id=77143
-
- Reviewed by Dirk Pranke.
-
- If we are not running any test that can be skipped by checking
- the DRT feature list or looking at the list of symbols, avoid calling
- out to DRT or calling "nm".
-
- This saves ~700ms on my Mac Pro. In cases where you still have to call out
- to "nm" it's only a couple ms slower.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_tests):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._should_check_for_missing_features):
- (WebKitPort):
- (WebKitPort._should_check_for_missing_symbols):
- (WebKitPort._skipped_tests_for_unsupported_features):
- (WebKitPort.skipped_layout_tests):
- (WebKitPort.skipped_tests):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitPortTest.test_skipped_directories_for_symbols):
- (test_skipped_directories_for_features):
- (test_skipped_directories_for_features_no_matching_tests_in_test_list):
- (test_skipped_layout_tests):
-
-2012-01-26 Benjamin Poulain <bpoulain@apple.com>
-
- Support a suffix on ChangeLog filenames based on a configuration file
- https://bugs.webkit.org/show_bug.cgi?id=76956
-
- Reviewed by Kentaro Hara.
-
- Modify the tools used to generate, edit and resolve ChangeLogs to support
- the addition of a suffix to the ChangeLog filename.
-
- This patch makes it easier to support alternate ChangeLog files in branches.
-
- * Scripts/VCSUtils.pm:
- (changeLogSuffix):
- (changeLogFileName):
- * Scripts/commit-log-editor:
- * Scripts/prepare-ChangeLog:
- (getLatestChangeLogs):
- (generateNewChangeLogs):
- (generateFileList):
- * Scripts/resolve-ChangeLogs:
- (findChangeLog):
-
-2012-01-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r106038.
- http://trac.webkit.org/changeset/106038
- https://bugs.webkit.org/show_bug.cgi?id=77142
-
- Caused a bunch of skipped tests to not be skipped. (Requested
- by ojan on #webkit).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectationParser.parse):
- (TestExpectationParser._parse_line):
- (TestExpectationParser._collect_matching_tests):
- (TestExpectations.__init__):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.test_dirs):
- (Port.normalize_test_name):
- (Port.update_baseline):
- (Port.layout_tests_dir):
- (Port.relative_perf_test_filename):
- (Port.abspath_for_test):
-
-2012-01-25 Ojan Vafai <ojan@chromium.org>
-
- Parsing test_expecations.txt + Skipped lists takes too long
- https://bugs.webkit.org/show_bug.cgi?id=77059
-
- Reviewed by Dirk Pranke.
-
- This saves ~100ms on the Apple Mac port.
- -memoize a bunch of path methods.
- -Avoid doing multiple disk accesses per line.
- -Parse the skipped list directly instead of turning it into a test_expecations.txt
- formatting string and parsing that.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectationParser.parse_skipped_tests):
- (TestExpectationParser._parse_line):
- (TestExpectationParser._collect_matching_tests):
- (TestExpectations.__init__):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port.test_isfile):
- (Port.normalize_test_name):
- (Port.layout_tests_dir):
- (Port.abspath_for_test):
-
-2012-01-25 Ojan Vafai <ojan@chromium.org>
-
- Only store the SVN revision in the summarized results if we're on a builder
- https://bugs.webkit.org/show_bug.cgi?id=76976
-
- Reviewed by Dirk Pranke.
-
- This shaves another ~130ms off the single test run-webkit-tests runtime.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.get_result):
- (ResultSummaryTest):
- (ResultSummaryTest.get_result_summary):
- (ResultSummaryTest.get_unexpected_results):
- (ResultSummaryTest.test_no_svn_revision):
- (ResultSummaryTest.test_svn_revision):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.use_trac_links_in_results_html):
-
-2012-01-26 Luciano Wolf <luciano.wolf@openbossa.org>
-
- [Qt][WK2] fast/loader tests failed after r94178
- https://bugs.webkit.org/show_bug.cgi?id=67388
-
- Reviewed by Simon Hausmann.
-
- Applying the same fix used for Qt-WebKit1 from bug #67254 -
- [Qt][DRT] Normalize file:///tmp/LayoutTests in LayoutTestController::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=67254
- Translate file:///tmp/LayoutTests/* urls into the repository LayoutTests directory, which is
- derived from the running location of DumpRenderTree binary.
-
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::pathToLocalResource):
-
-2012-01-26 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Implement overridePreference for boolean preferences in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=77033
-
- Reviewed by Alexey Proskuryakov.
-
- For now overridePreference supports boolean values.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setXSSAuditorEnabled):
- (WTR::LayoutTestController::overridePreference):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Reset the overrides
- explicitly and properly disable the use of PageCache when resetting the
- state. Tests that use PageCache can now enable it via overridePreference.
-
-2012-01-26 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Support opening multiple URL's from the command line in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=77100
-
- Reviewed by Simon Hausmann.
-
- This patch makes the MiniBrowser read multiple URL's from the command
- line such that there will be one browser window opened for each URL.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
-
-2012-01-26 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] The Qt MiniBrowser crashes when given multiple URL's
- https://bugs.webkit.org/show_bug.cgi?id=77009
-
- Reviewed by Simon Hausmann.
-
- This patch fixes a crash in BrowserWindow::newWindow() where a
- BrowserWindow-object is constructed with a 0 pointer as the
- WindowOptions parameter which leads to a crash.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::newWindow):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2012-01-26 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt] Use ICU if available
- https://bugs.webkit.org/show_bug.cgi?id=76821
-
- Reviewed by Simon Hausmann.
-
- Adding unicode defines for a Qt 5 based build.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-26 Nándor Huszka <huszka.nandor@stud.u-szeged.hu>
-
- [WK2] WebKitTestRunner needs layoutTestController.setGeolocationPermission
- https://bugs.webkit.org/show_bug.cgi?id=42545
-
- Reviewed by Zoltan Herczeg.
-
- Implement the setGeolocationPermission method.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setGeolocationPermission):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-01-26 Balazs Kelemen <kbalazs@webkit.org>
-
- [NRWT] Support --ignore-metrics
- https://bugs.webkit.org/show_bug.cgi?id=76278
-
- Reviewed by Tony Chang.
-
- Port the feature from ORWT.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_compare_test):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput):
- (DriverOutput.strip_metrics):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverOutputTest):
- (DriverOutputTest.test_strip_metrics):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
-
-2012-01-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r105935 and r105954.
- http://trac.webkit.org/changeset/105935
- http://trac.webkit.org/changeset/105954
- https://bugs.webkit.org/show_bug.cgi?id=77080
-
- test-webkitpy is still broken (Requested by abarth on
- #webkit).
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (never_ending_command):
- (ExecutiveTest.test_run_command_args_type):
- (ExecutiveTest.test_run_command_with_unicode):
- (ExecutiveTest.test_running_pids):
- * Scripts/webkitpy/common/system/fileutils.py:
- (make_stdout_binary):
- * Scripts/webkitpy/test/cat.py:
- (command_arguments):
- (main):
- * Scripts/webkitpy/test/cat_unittest.py:
- (CatTest):
- (CatTest.assert_cat):
- (CatTest.test_basic):
- (CatTest.test_no_newline):
- (CatTest.test_unicode):
- (CatTest.test_as_command):
- * Scripts/webkitpy/test/echo.py:
- (command_arguments):
- (main):
- * Scripts/webkitpy/test/echo_unittest.py:
- (EchoTest):
- (EchoTest.test_basic):
- (EchoTest.test_no_newline):
- (EchoTest.test_unicode):
- (EchoTest.test_argument_order):
- (EchoTest.test_empty_arguments):
- (EchoTest.test_no_arguments):
- (EchoTest.test_as_command):
-
-2012-01-26 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [GTK] Detect cross-compilation in webkitdirs.pm to not generate gtkdoc
- https://bugs.webkit.org/show_bug.cgi?id=76138
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (isCrossCompilation):
- (buildAutotoolsProject):
-
-2012-01-25 Adam Barth <abarth@webkit.org>
-
- Kentaro is a reviewer now. Yay!
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: running w/ no arguments fails
- https://bugs.webkit.org/show_bug.cgi?id=77064
-
- Unreviewed, build fix.
-
- This change fixes a regression introduced in r105944
- where running without --platform <foo> or one of the other
- platform switches would cause a null deref :(.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
-
-2012-01-25 Eric Seidel <eric@webkit.org>
-
- Automatically CC someone from Apple on any changes to Obj-C public API
- https://bugs.webkit.org/show_bug.cgi?id=77053
-
- Reviewed by Timothy Hatcher.
-
- This has long been de-facto practice, seems now that we have
- fancy watchlist support, we should just make the tools
- do this automatically.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-01-25 Antoine Labour <piman@chromium.org>
-
- Updating status in committers.py.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: executive_unittest fails if PYTHONPATH isn't set
- https://bugs.webkit.org/show_bug.cgi?id=77058
-
- Reviewed by Eric Seidel.
-
- r105935 broke executive_unittest by changing which script we
- were running and not ensuring that the PYTHONPATH was set up
- properly.
-
- This change also fixes a regression introduced recently where
- test-webkitpy wasn't figuring out the path to Tools/Scripts
- right, either (so running ./test-webkitpy would fail).
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (script_dir):
- (ExecutiveTest.setUp):
- (ExecutiveTest):
- (ExecutiveTest.tearDown):
-
-2012-01-25 Adam Barth <abarth@webkit.org>
-
- Disable tests on the mac-ews while we sort out hte stability issues.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2012-01-23 Dirk Pranke <dpranke@chromium.org>
-
- investigate use of 'mac' and 'win' as fully-specified port names for the apple ports
- https://bugs.webkit.org/show_bug.cgi?id=76475
-
- Reviewed by Eric Seidel.
-
- This patch cleans up the internal usage of port names for the
- Apple mac and Apple win ports so that 'mac' and 'win are never
- considered "fully specified" port names: they are still legal
- input to the PortFactory.get() routine, but only if run on the given
- platform (i.e. trying to PortFactory.get('mac') on windows or
- linux will return an error, since we don't know which version of
- the port is desired.
-
- This also cleans up handling of the webkit2 variants, so that
- the full port names consistently follow the
- <operating_system>-<version>[-<wk2>] convention.
-
- Lastly this patch adds some assertions and removes some
- try/catch logic to catch more programming and usage errors;
- previously mac-tiger might've been allowed -- and it would've
- translated into using just the baselines in platform/mac -- but
- now it should fail.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.determine_full_port_name):
- (ApplePort.__init__):
- (ApplePort):
- (ApplePort._port_name_with_version):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_mac):
- (FactoryTest.test_win):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_versions):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinTest.test_versions):
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: print nicer errors while linting expectations files, remove redundant tests
- https://bugs.webkit.org/show_bug.cgi?id=76955
-
- Reviewed by Adam Barth.
-
- This change cleans up the errors that are printed so that the
- are more "quickfix" compatible (path:lineno).
-
- Also, there were a bunch of redundant tests between
- layout_tests.models.test_expectations_unittest and
- style.checkers.test_expectations_unittest. The latter should
- just expect the former to do most of the testing.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._parse_modifiers):
- (TestExpectations._report_errors):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_parse_error_nonfatal):
- (SemanticTests.test_bad_bugid):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.assert_lines_lint):
- (TestExpectationsTestCase.test_valid_expectations):
- (TestExpectationsTestCase.test_invalid_expectations):
- (TestExpectationsTestCase.test_tab):
-
-2012-01-25 Eric Seidel <eric@webkit.org>
-
- webkit-patch apply-* should always continue after failures
- https://bugs.webkit.org/show_bug.cgi?id=77057
-
- Reviewed by Adam Barth.
-
- As far as I can tell there is only one potential drawback to always
- forcing: that if you're somehow in the wrong directory it will create new
- directories for new files. Since webkit-patch always cd's to the root
- it seems that's not a drawback. The drawback of not using --force for
- svn-apply, is that it will stop after the first failure, which is rarely
- (if ever) the desired behavior. This just removes the force option
- (which was strangely hidden behind --non-interactive). This should
- make for a better user experiance.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.apply_patch):
- * Scripts/webkitpy/common/checkout/checkout_mock.py:
- (MockCheckout.apply_patch):
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CheckoutTest.test_chromium_deps):
- (CheckoutTest):
- (CheckoutTest.test_apply_patch):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (DownloadCommandsTest._default_options):
- * Scripts/webkitpy/tool/steps/applypatch.py:
- (ApplyPatch.options):
- (ApplyPatch.run):
- * Scripts/webkitpy/tool/steps/options.py:
- (Options):
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: should be able to run --platform test interactively
- https://bugs.webkit.org/show_bug.cgi?id=76959
-
- Reviewed by Adam Barth.
-
- As part of refactoring the Port interfaces, in r103254 I made
- passing a Host object to the Port mandatory; previously TestPort
- objects would create their own (mock) hosts. However,
- new-run-webkit-tests always passed a real Host, not a MockHost,
- and so you couldn't run new-run-webkit-tests --platform test
- interactively to debug test failures.
-
- This change fixes that by creating a MockHost instead of a real
- host if you say --platform test*.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests --lint-test-files should lint all the ports by default
- https://bugs.webkit.org/show_bug.cgi?id=76749
-
- Reviewed by Ojan Vafai.
-
- Currently run-webkit-tests --lint-test-files will only lint the
- test_expectations for the single port determined by the command
- line options. This is not obvious and can produce unintended results
- if you want to lint the chromium port (probably the normal case
- for using --lint-test-files) but don't specify a port name or
- --chromium.
-
- I think we should probably lint *all* of the ports if no port
- name is supplied. This change implements that, and also moves
- the linting logic out of the Manager class, since this really
- has nothing to do with Managers. It has little to do with
- run-webkit-tests, but splitting it into a different script would
- introduce compatibility issues. It might make sense to do that
- anyway, in a separate patch and combining that with cleaning up
- the style checker to share more code.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._strip_test_dir_prefix):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- (run):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations): added.
- (LintTest.test_lint_test_files): added.
- (LintTest.test_lint_test_files__errors): added.
- (MainTest.test_lint_test_files): removed.
- (MainTest.test_lint_test_files__errors): removed.
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up a bunch of test scaffolding
- https://bugs.webkit.org/show_bug.cgi?id=76973
-
- Reviewed by Eric Seidel.
-
- There were several helper modules in the webkitpy.test package
- that appear to only be used by executive_unittest.py. I am
- rolling them all into that file to make that clearer.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_command_args_type):
- (ExecutiveTest.test_run_command_with_unicode):
- (ExecutiveTest.test_running_pids):
- (command_line):
- (main):
- * Scripts/webkitpy/common/system/fileutils.py: Removed.
- * Scripts/webkitpy/test/cat.py: Removed.
- * Scripts/webkitpy/test/cat_unittest.py: Removed.
- * Scripts/webkitpy/test/echo.py: Removed.
- * Scripts/webkitpy/test/echo_unittest.py: Removed.
-
-2012-01-25 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up a bunch of test scaffolding
- https://bugs.webkit.org/show_bug.cgi?id=76973
-
- Reviewed by Eric Seidel.
-
- There were several helper modules in the webkitpy.test package
- that appear to only be used by executive_unittest.py. I am
- rolling them all into that file to make that clearer.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_command_args_type):
- (ExecutiveTest.test_run_command_with_unicode):
- (ExecutiveTest.test_running_pids):
- (command_line):
- (main):
- * Scripts/webkitpy/common/system/fileutils.py: Removed.
- * Scripts/webkitpy/test/cat.py: Removed.
- * Scripts/webkitpy/test/cat_unittest.py: Removed.
- * Scripts/webkitpy/test/echo.py: Removed.
- * Scripts/webkitpy/test/echo_unittest.py: Removed.
-
-2012-01-25 Eric Seidel <eric@webkit.org>
-
- Remove Python 2.5 support from WebKit
- https://bugs.webkit.org/show_bug.cgi?id=71593
-
- Reviewed by Adam Barth.
-
- Just removing support from this one core file.
- I'll commit the rest of the (large) change once we've
- gone 24 hours and seen that no bots have exploded.
- We can roll out this one change if we break bots
- and then roll in the rest once those bots are fixed.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.cpu_count):
-
-2012-01-25 Hajime Morita <morrita@google.com>
-
- ENABLE_SHADOW_DOM should be available via build-webkit --shadow-dom
- https://bugs.webkit.org/show_bug.cgi?id=76863
-
- Reviewed by Dimitri Glazkov.
-
- Added a feature flag.
-
- * Scripts/build-webkit:
- * qmake/mkspecs/features/features.prf:
-
-2012-01-25 Martin Robinson <mrobinson@igalia.com>
-
- [WK2] Navigation events not triggered by a mouse event claim to be triggered by the left mouse button during policy decisions
- https://bugs.webkit.org/show_bug.cgi?id=76344
-
- Reviewed by Sam Weinig.
-
- Add a test verifying that the mouse button during policy decisions for
- events not triggered by mouse events is NoButton.
-
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::decidePolicyForNavigationAction): Added test.
- (TestWebKitAPI::decidePolicyForNewWindowAction): Added test.
-
-2012-01-25 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should timeout sooner
- https://bugs.webkit.org/show_bug.cgi?id=77026
-
- Reviewed by Adam Barth.
-
- Bump off the timeout from 10 minutes to 4 minutes.
-
- Also use float instead of str in test result values to compress the size of json files bots upload.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._process_chromium_style_test_result):
- (PerfTestsRunner._process_parser_test_result):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_set_for_parser_tests):
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
-
-2012-01-25 Enrica Casucci <enrica@apple.com>
-
- WebView should implement typingAttributes methods to work correctly with the Inspector bar in Mail.
- https://bugs.webkit.org/show_bug.cgi?id=76951
- <rdar://problem/9325158>
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/Tests/mac/InspectorBar.mm: Modified to reflect the changes to WebView
- and WebHTMLView.
- (TestWebKitAPI::TEST):
-
-2012-01-23 MORITA Hajime <morrita@google.com>
-
- [Refactoring][Internals] Should have InternalSettings
- https://bugs.webkit.org/show_bug.cgi?id=76424
-
- Reviewed by Kent Tamura.
-
- * GNUmakefile.am: Added so new files.
-
-2012-01-25 Takashi Toyoshima <toyoshim@chromium.org>
-
- webkitpy: new-run-webkit-websocket is broken
- https://bugs.webkit.org/show_bug.cgi?id=76999
-
- Reviewed by Dirk Pranke.
-
- r105674 broke new-run-webkit-websocket, since options.chromium
- doesn't exist any more. new-run-webkit-httpd was also broken
- and already fixed at r105835.
- * Scripts/new-run-webkit-websocketserver:
- (main):
-
-2012-01-25 Nándor Huszka <huszka.nandor@stud.u-szeged.hu>
-
- [WK2] WebKitTestRunner needs layoutTestController.setPopupBlockingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=63458
-
- Reviewed by Adam Roben.
-
- Implement the setPopupBlockingEnabled method.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPopupBlockingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2012-01-24 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Cleanup testfonts handling
- https://bugs.webkit.org/show_bug.cgi?id=76068
-
- Reviewed by Simon Hausmann.
-
- Factor test font initialization into it's own file so test
- font users can share the implementation by adding the file
- to their build.
- Use fonts.conf from the test font directory to not require the
- current directory to be the WebKit root.
- Fix the -use-test-fonts option of QtTestBrowser by initializing
- the fonts earlier, before it is too late (namely before calling
- show on the main window).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- (WebKit::initializeTestFonts):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Added.
- * DumpRenderTree/qt/fonts.conf: Removed. No need for this since
- we will use the one from the test fonts directory.
- * DumpRenderTree/qt/main.cpp:
- (main): Fix the ifdefs to make it clear that the code to
- set up the Dpi has not been ported to Qt5 yet.
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (launcherMain):
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts): Remove the code to set up the Dpi
- because it does not work with Qt5.
-
-2012-01-25 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] build-webkit --qt requires a git-svn or SVN checkout.
-
- Reviewed by Tor Arne Vestø.
-
- Don't require it by making svnRevisionForDirectory return "unknown"
- instead of bailing out with an error.
-
- * Scripts/VCSUtils.pm:
- (svnRevisionForDirectory):
-
-2012-01-25 Adam Barth <abarth@webkit.org>
-
- Temporarily disable running the unit tests on the Chromium EWS. These
- tests don't work properly (see
- https://bugs.webkit.org/show_bug.cgi?id=76979) and are currently
- blocking the EWS.
-
- * Scripts/webkitpy/common/config/ports.py:
- (ChromiumPort):
-
-2012-01-25 Adam Barth <abarth@webkit.org>
-
- Update results.html version of PixelZoomer
- https://bugs.webkit.org/show_bug.cgi?id=76965
-
- Reviewed by Ojan Vafai.
-
- Improve readability as suggested by Ojan.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js:
-
-2012-01-25 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Page clients don't need to be GObjects anymore in WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=76899
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): WebKitWebLoaderClient has been renamed to
- WebKitLoaderClient.
-
-2012-01-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. Trigger Chromium Mac Release (Perf) on new commits.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-01-23 Ryosuke Niwa <rniwa@webkit.org>
-
- WebKit needs public performance tests running on public bots
- https://bugs.webkit.org/show_bug.cgi?id=10266
-
- Reviewed by Adam Barth.
-
- Completes the initial implementation of WebKit Perf bots. Add a build step for run-perf-test
- and make google-mac-4 run it, and upload the results to webkit-perf.webkit.org.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunAndUploadPerfTests):
- (RunAndUploadPerfTests.start):
- (UploadPerfTestResults):
- (BuildAndPerfTestFactory):
- (BuildAndPerfTestFactory.__init__):
-
-2012-01-24 Ojan Vafai <ojan@chromium.org>
-
- Initializing the browser property of the Bugzilla class takes too long
- https://bugs.webkit.org/show_bug.cgi?id=76960
-
- Reviewed by Adam Barth.
-
- Lazily initialize it. This saves ~150ms on a no-op run-webkit-tests call
- on my Mac Pro.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.__init__):
- (Bugzilla._get_browser):
- (Bugzilla):
- (Bugzilla._set_browser):
-
-2012-01-24 Mark Rowe <mrowe@apple.com>
-
- Death to JavaScriptGlue.
-
- Rubber-stamped by Geoffrey Garen.
-
- * BuildSlaveSupport/build-launcher-app:
- (copyNightlyLauncher):
- * Scripts/build-webkit:
- * Scripts/do-file-rename:
- * Scripts/do-webcore-rename:
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build):
- * Scripts/webkitpy/common/config/build_unittest.py: Update the test to use another Mac-specific
- path in conjunction with a cross-platform path.
- (ShouldBuildTest):
-
-2012-01-24 Kentaro Hara <haraken@chromium.org>
-
- webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl should test stdout and stderr
- https://bugs.webkit.org/show_bug.cgi?id=75836
-
- Reviewed by David Kilzer.
-
- Previously parser_unittests.pl can just test the returned value of
- get_function_line_ranges() in prepare-ChangeLog. This patch fixes
- parser_unittests.pl so that it also tests the stdout and stderr of
- get_function_line_ranges().
-
- This patch adds css_unittests_warning.css, which contains test cases
- for warning messages of the CSS parser of prepare-ChangeLog.
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- (captureOutput): Captures the stdout and stderr of a given method.
- (convertAbsolutepathToWebKitPath): Converts absolute paths in a given
- string to relative paths.
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css: Added.
- (element1):
- (element2):
- (element3):
- (element4):
- ():
- (element5):
- (element6):
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt:
- Just updated the test results, i.e. added stdout and stderr results.
- No essential changes in the test results.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt: Ditto.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt: Ditto.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt: Ditto.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt: Ditto.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt: Ditto.
-
-2012-01-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: new-run-webkit-httpd is broken
- https://bugs.webkit.org/show_bug.cgi?id=76963
-
- Reviewed by Adam Barth.
-
- r105674 broke new-run-webkit-httpd, since options.chromium
- doesn't exist any more. We didn't catch this because we don't
- run the integration tests by default anywhere :(.
-
- * Scripts/new-run-webkit-httpd:
- (run):
- (main):
-
-2012-01-24 Adam Barth <abarth@webkit.org>
-
- garden-o-matic pixel zoomer should let you look at every pixel of the image
- https://bugs.webkit.org/show_bug.cgi?id=76962
-
- Reviewed by Ojan Vafai.
-
- Previously, you couldn't get up to the right and bottom pixels.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js:
-
-2012-01-24 Enrica Casucci <enrica@apple.com>
-
- WebHTMLView should implement typingAttributes methods to work correctly with the Inspector bar in Mail.
- https://bugs.webkit.org/show_bug.cgi?id=76951
- <rdar://problem/9325158>
-
- Added test to verify that WebHTMLView supports the typingAttributes method and that it
- works as expected.
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/Tests/mac/InspectorBar.mm:
- (TestWebKitAPI::TEST):
-
-2012-01-24 James Robinson <jamesr@chromium.org>
-
- Put a space between the trac link and ellipsis in sheriffbot rollout message so it linkifies better in some IRC clients
- https://bugs.webkit.org/show_bug.cgi?id=76884
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Rollout.execute):
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- (SheriffIRCBotTest.test_rollout):
- (SheriffIRCBotTest.test_revert):
- (SheriffIRCBotTest.test_multi_rollout):
- (SheriffIRCBotTest.test_rollout_with_r_in_svn_revision):
- (SheriffIRCBotTest.test_multi_rollout_with_r_in_svn_revision):
- (SheriffIRCBotTest.test_rollout_invalidate_reason):
- (test_multi_rollout_invalidate_reason):
-
-2012-01-24 Kentaro Hara <haraken@chromium.org>
-
- The cpp parser of prepare-ChangeLog cannot detect a change in classes and namespaces
- https://bugs.webkit.org/show_bug.cgi?id=75531
-
- Reviewed by David Kilzer.
-
- Previously, the cpp parser of prepare-ChangeLog could not detect a change
- outside methods. Consider the following cpp file.
-
- namespace N {
- int a; // this change does not appear on ChangeLog.
- class C {
- int b; // this change does not appear on ChangeLog.
- void f()
- {
- int c; // this change appears on ChangeLog.
- }
- int d; // this change does not appear on ChangeLog.
- };
- int e; // this change does not appear on ChangeLog.
- };
-
- The previous prepare-ChangeLog outputs just methods in which a change is found:
- (N::C::f):
-
- This patch fixes prepare-ChangeLog so that it outputs namespaces, classes
- and methods in which a change is found:
- (N):
- (N::C):
- (N::C::f):
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_cpp): Modified as described above.
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp: Added test cases.
- (Class104):
- (Class105):
- (Class106):
- (Class106::func32):
- (Class106::func33):
- (NameSpace3):
- (NameSpace4):
- (NameSpace5):
- (NameSpace6):
- (Class107):
- (NameSpace5::NameSpace6::Class107::func34):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt:
-
-2012-01-24 Kentaro Hara <haraken@chromium.org>
-
- prepare-ChangeLog outputs warnings for top-level { ... } blocks
- https://bugs.webkit.org/show_bug.cgi?id=75943
-
- Reviewed by David Kilzer.
-
- Currently, prepare-ChangeLog outputs warnings for top-level { ... } blocks,
- because it does not distinguish '}' at the end of a subroutine
- with '}' at the end of a if or for statement.
-
- foo.pl:
- if (1) {
- }
- for (@v) {
- }
-
- output:
- nested functions found at top-level at foo.pl:2
- nested functions found at top-level at foo.pl:4
-
- This patch fixes the bug.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_perl):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl:
- Added test cases. No change in the test results.
-
-2012-01-24 Dirk Pranke <dpranke@chromium.org>
-
- r105674 broke check-webkit-style for chromium's test_expectations.
-
- Unreviewed, build fix.
-
- We now need to pass in a platform name of 'chromium' if we want
- the chromium port; options.chromium is no longer recognized. I
- will follow this patch up with a separate patch that has a test,
- but this at least fixes the build.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_exepectations_path):
-
-2012-01-20 Ojan Vafai <ojan@chromium.org>
-
- check-webkit-style of the chromium test_expectations.txt file takes too long
- https://bugs.webkit.org/show_bug.cgi?id=76745
-
- Reviewed by Dimitri Glazkov.
-
- When in lint mode, have TestExpectations test all configurations instead
- of looping over each configuration. This also has the benefit of making
- the error output considerably more concise.
-
- Also, got rid of the double-printing of errors when linting through check-webkit-style.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.lint):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations._report_errors):
- (TestExpectations._add_expectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_parse_error_nonfatal):
- (test_error_on_different_platform):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations):
- (TestExpectationsChecker.check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_determine_port_from_exepectations_path):
- (TestExpectationsTestCase.assert_lines_lint):
-
-2012-01-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Another build fix attempt after r105543.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.upload_as_multipart_form_data):
-
-2012-01-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix attempt after r105543.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.upload_as_multipart_form_data):
-
-2012-01-24 Vincent Scheib <scheib@chromium.org>
-
- [Chromium] Add Pointer Lock test hooks and mock implementation to DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=76411
-
- Reviewed by Adam Barth.
-
- Breaking up https://bugs.webkit.org/show_bug.cgi?id=75762
- into a series of patches, this change adds a trivial
- pointer lock implementation to the Chromium port's DumpRenderTree
- and exposes LayoutTestController hooks to force failure conditions.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::didLosePointerLock):
- (LayoutTestController::setPointerLockWillFailAsynchronously):
- (LayoutTestController::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestPointerLock):
- (WebViewHost::requestPointerUnlock):
- (WebViewHost::isPointerLocked):
- (WebViewHost::didCompletePointerLock):
- (WebViewHost::didNotCompletePointerLock):
- (WebViewHost::didLosePointerLock):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::setPointerLockWillFailAsynchronously):
- (WebViewHost::setPointerLockWillFailSynchronously):
-
-2012-01-24 Mario Sanchez Prada <msanchez@igalia.com>
-
- Unreviewed, skip WK2 API test timing out on some GTK bots.
-
- WebKit2APITests/TestDownloads is consistently timing out on the
- 32bit release and 64bit debug bots.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skip WebKit2APITests/TestDownloads.
-
-2012-01-24 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt] Fix the build with the newes Qt5 hashes
- https://bugs.webkit.org/show_bug.cgi?id=76657
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication): Disable the automatic touch->mouse event synthesis
- for now to prevent an infinite loop where Qt always creates mouse events out of our touch mock events.
-
-2012-01-24 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Distinguish between Cygwin and cmd.exe in the way we set env variables
-
- We can't use win32-msvc* to decide whether or not to use (set FOO=bar), as
- building with MinGW inside cmd.exe will require the same construct. Instead
- we assume that when the first character in PWD is a '/' we're running under
- Cygwin, and use the normal unix way of setting environment variables.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-01-24 Simon Hausmann <simon.hausmann@nokia.com>
-
- Some qmake build files must include Qt5's "quick" module.
- https://bugs.webkit.org/show_bug.cgi?id=76671
-
- Unreviewed build fix.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * WebKitTestRunner/Target.pri:
-
-2012-01-24 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt] Fix the event timestamps for touch mocking
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::sendTouchEvent): We should not set QEvent::None as the
- timestamp argument in the QWindowSystemInterface::handleTouchEvent call.
-
-2012-01-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Implement DownloadClient in WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=72952
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Ignore WebKitDownloadClient.
-
-2012-01-23 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] editing/deleting/5408255.html results are incorrect
- https://bugs.webkit.org/show_bug.cgi?id=53644
-
- Reviewed by Martin Robinson.
-
- WEBKIT_TOP_LEVEL environment variable is now set directly in either
- WebKitTestRunner or DumpRenderTree through usage of a compilation-time
- macro. This way both tools can be run outside the test harness without
- the need to manually set the environment variable.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (getTopLevelPath):
- * GNUmakefile.am:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-01-23 Dmitry Lomov <dslomov@google.com>
-
- [Chromium] Implement layoutTestController.workerThreadCount in DRT
- https://bugs.webkit.org/show_bug.cgi?id=74653.
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::workerThreadCount):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2012-01-23 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make --chromium work like --qt
- https://bugs.webkit.org/show_bug.cgi?id=76875
-
- Reviewed by Adam Barth.
-
- --chromium used to have to be handled differently from --qt
- due to the way the PortFactory was implemented; there's not
- really a good reason for that any more so this patch makes
- things slightly more consistent and eliminates the
- options.chromium flag (--chromium is now truly a synonym for
- --platform chromium).
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._default_port):
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.setUp):
- (FactoryTest.test_chromium_mac):
- (FactoryTest.test_chromium_linux):
- (FactoryTest.test_chromium_win):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-01-23 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests needs to propagate --chromium
- https://bugs.webkit.org/show_bug.cgi?id=76870
-
- Reviewed by Eric Seidel.
-
- run-webkit-tests removes '--chromium' argument from @ARGV when
- determining which port to run, which means that that doesn't
- propagate to new-run-webkit-tests. That's bad (and is handled
- for the other ports by re-adding the flag, but apparently we're
- just now noticing for Chromium).
-
- * Scripts/run-webkit-tests:
-
-2012-01-23 Brian Weinstein <bweinstein@apple.com>
-
- More build fixing after r105646.
-
- * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
- (TestWebKitAPI::TestNode::key):
-
-2012-01-23 Gavin Barraclough <barraclough@apple.com>
-
- Unreviewed build fix - r105646 broke this.
-
- * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
- (TestWebKitAPI::TestNode::TestNode):
- (TestWebKitAPI::TestNode::key):
- (TestWebKitAPI::RedBlackTreeTest::assertEqual):
- (TestWebKitAPI::RedBlackTreeTest::assertSameValuesForKey):
- (TestWebKitAPI::RedBlackTreeTest::testDriver):
-
-2012-01-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r105658.
- http://trac.webkit.org/changeset/105658
- https://bugs.webkit.org/show_bug.cgi?id=76883
-
- We want this eventually, but not right at this moment
- (Requested by abarth on #webkit).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-01-23 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should support Chromium Mac Lion
- https://bugs.webkit.org/show_bug.cgi?id=76880
-
- Reviewed by Eric Seidel.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-01-23 Emil A Eklund <eae@chromium.org>
-
- check-webkit-style whitespace/operators triggers on overloaded division operator
- https://bugs.webkit.org/show_bug.cgi?id=76650
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_spacing):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTest.test_operator_methods):
-
-2012-01-23 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should report server-side errors
- https://bugs.webkit.org/show_bug.cgi?id=76802
-
- Reviewed by Tony Chang.
-
- Report errors whenever server's response doesn't match "OK".
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.upload_single_text_file):
- (FileUploader.upload_as_multipart_form_data):
- (FileUploader._upload_data.callback):
- (FileUploader):
- (FileUploader._upload_data):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._upload_json):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_upload_json):
- (test_upload_json.MockFileUploader.upload_single_text_file):
-
-2012-01-22 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests ignore Skipped list on chromium
- https://bugs.webkit.org/show_bug.cgi?id=76764
-
- Reviewed by Dirk Pranke.
-
- Move skipped_perf_tests from WebKit port to Base port so that Chromium port
- can also find skipped list. Chromium port only uses test_expectations.txt for
- layout tests but performacne tests don't use test_expectations.txt so Chromium port
- also needs to use Skipped list.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._tests_from_skipped_file_contents):
- (Port):
- (Port._expectations_from_skipped_files):
- (Port.skipped_perf_tests):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_skipped_perf_tests):
- (PortTest.test_skipped_perf_tests.add_text_file):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._skipped_tests_for_unsupported_features):
- (WebKitPort._skipped_file_search_paths):
- (WebKitPort.skipped_layout_tests):
-
-2012-01-23 Andy Estes <aestes@apple.com>
-
- Fix the build after r105635.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- (TestWebKitAPI::TEST):
-
-2012-01-23 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Basic enhancements to StringBuilder
- https://bugs.webkit.org/show_bug.cgi?id=67081
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- (TestWebKitAPI::TEST):
-
-2012-01-23 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] run-gtk-tests randomly fails while running the xprop comand
- https://bugs.webkit.org/show_bug.cgi?id=76817
-
- Reviewed by Gustavo Noronha Silva.
-
- No need to use xprop to remove the AT_SPI_BUS property since
- run-gtk-tests will always run new instances of Xvfb.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip TestWebKitAccessibility.
- (TestRunner.run): Uncomment lines for launching the accessibility
- bus and registry daemon, and remove lines for running xprop.
-
-2012-01-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't warn about override and final being C++11 extensions
-
- Clang will emit a warning when these extensions are used without passing
- --std=c++11, but we use feature checking to decide if we have the right
- extensions, so we can safely ignore these warnings. The XCode and Windows
- project files have the same workaround.
-
- The reason for adding the flag to QMAKE_OBJECTIVE_CFLAGS as well is that
- we only have one extra compiler for Objective-C, which is also used for
- Objective-C++ sources, so we have to pass the flag, even if it doesn't
- make sense for Objective-C.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Change how build-webkit decides when to do full incremental builds
-
- Instead of relying on update-webkit (which isn't run on the bots) to
- decide when to do a full incremental build (make qmake), we let the
- build-webkit script itself check the current SVN revision against the
- previous build (by storing it in .webkit.config).
-
- If the two differ we assume a full incremental build is needed, since
- the new revisions might have introduced problematic things like new
- Q_OBJECT macros. If not, we assume the developer is doing changes
- locally, and revert to doing a plain 'make'.
-
- In addition, when the build fails in the latter case, we inform the
- developer of possible pitfalls and how to manually run 'make qmake'.
-
- Reviewed by Ossy.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-01-23 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] run-gtk-tests randomly fails while running the xprop comand
- https://bugs.webkit.org/show_bug.cgi?id=76817
-
- Reviewed by Philippe Normand.
-
- Temporarily comment the lines related to launching the ATSPI bus
- and registry daemon, which are making the bots to fail randomly.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skip TestWebKitAccessibility, as it won't run
- properly if the ATSPI infrastructure is not properly initialized.
- (TestRunner.run): Comment lines related to initialization of ATSPI.
-
-2012-01-22 Ryosuke Niwa <rniwa@webkit.org>
-
- Windows python test build fix.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
-
-2012-01-22 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] DumpRenderTree converts "file:///" to a path differently
- https://bugs.webkit.org/show_bug.cgi?id=76631
-
- Reviewed by Martin Robinson.
-
- DumpRenderTree should print "/" as the last path component if the
- path is a lone slash instead of empty output.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewConsoleMessage):
-
-2012-01-20 David Levin <levin@chromium.org>
-
- The leaky DC check should use adoptPtr as a signal instead of OwnPtr to get less false positives.
- https://bugs.webkit.org/show_bug.cgi?id=76752
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_leaky_patterns):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (LeakyPatternTest.test_create_dc):
- (LeakyPatternTest.test_create_compatible_dc):
-
-2012-01-20 Shawn Singh <shawnsingh@chromium.org>
-
- Changed my status in commiters.py
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-20 Ojan Vafai <ojan@chromium.org>
-
- run-webkit-tests --lint-test-files crawls the whole LayoutTests subtree
- https://bugs.webkit.org/show_bug.cgi?id=76748
-
- Reviewed by Ryosuke Niwa.
-
- It crawls the whole subtree and then doesn't use the data. Cutting this out
- saves 4 seconds warm and 17 seconds cold on my Mac Pro.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
-
-2012-01-20 Adam Barth <abarth@webkit.org>
-
- Another tiny tweak to the garden-o-matic CSS. This makes things line
- up slightly nicer when there aren't any failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- (#summary):
-
-2012-01-19 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should support --test-results-server option
- https://bugs.webkit.org/show_bug.cgi?id=76680
-
- Reviewed by Adam Barth.
-
- Add --test-results-server, --builder-name, and --build-number options to run-perf-tests
- to be used by perf bots. Also refactor file_uploader as needed.
-
- * Scripts/webkitpy/common/net/file_uploader.py:
- (FileUploader.__init__):
- (FileUploader.upload_single_file):
- (FileUploader.upload_as_multipart_form_data):
- (FileUploader):
- (FileUploader._upload_data):
- (FileUploader._upload_data.callback):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.upload_json_files):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_json):
- (PerfTestsRunner._upload_json):
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (test_run_with_upload_json):
- (test_run_with_upload_json.mock_upload_json):
- (test_upload_json):
- (test_upload_json.MockFileUploader):
- (test_upload_json.MockFileUploader.__init__):
- (test_upload_json.MockFileUploader.upload_single_file):
- (test_parse_args):
-
-2012-01-20 Adam Barth <abarth@webkit.org>
-
- The party time image overlaps real content! This patch makes the
- image centered vertically.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- (#onebar.partytime #summary):
-
-2012-01-19 Ojan Vafai <ojan@chromium.org>
-
- Refactor TestExpectationsParser in preparation for caching the results
- https://bugs.webkit.org/show_bug.cgi?id=76669
-
- Reviewed by Dimitri Glazkov.
-
- Make everything private expect for the parse method.
- Eventually, we'll need the expectations lines to not be modified
- outside of TestExpectationsParser so we can cache the results.
- This makes check-webkit-style of the chromium test_expectations.txt file
- go from ~17 seconds to ~12 seconds on my Mac Pro.
-
- This patch is just a refactor in preparation, so no new tests.
-
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- (TestExpectationEditorTests.make_parsed_expectation_lines):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser.parse):
- (TestExpectationParser):
- (TestExpectationParser._parse_line):
- (TestExpectationParser._tokenize):
- (TestExpectationParser._tokenize_list):
- (TestExpectationsModel._clear_expectations_for_test):
- (TestExpectations.__init__):
- (TestExpectations._add_expectations):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (TestExpectationParserTests.test_tokenize_blank):
- (TestExpectationParserTests.test_tokenize_missing_colon):
- (TestExpectationParserTests.test_tokenize_extra_colon):
- (TestExpectationParserTests.test_tokenize_empty_comment):
- (TestExpectationParserTests.test_tokenize_comment):
- (TestExpectationParserTests.test_tokenize_missing_equal):
- (TestExpectationParserTests.test_tokenize_extra_equal):
- (TestExpectationParserTests.test_tokenize_valid):
- (TestExpectationParserTests.test_tokenize_valid_with_comment):
- (TestExpectationParserTests.test_tokenize_valid_with_multiple_modifiers):
- (TestExpectationParserTests.test_parse_empty_string):
- (TestExpectationSerializerTests.assert_round_trip):
- (TestExpectationSerializerTests.assert_list_round_trip):
- * Scripts/webkitpy/tool/commands/expectations.py:
- (OptimizeExpectations.execute):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningExpectationsUpdater.update_expectations):
-
-2012-01-20 Adam Barth <abarth@webkit.org>
-
- Follow-up to previous patch: don't produce NaN when the revision number
- is missing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js:
-
-2012-01-20 Adam Barth <abarth@webkit.org>
-
- Garden-o-matic should tell me which revisions have been checked by all the bots
- https://bugs.webkit.org/show_bug.cgi?id=76722
-
- Reviewed by Dimitri Glazkov.
-
- This information helps me know when it's safe for me to roll a
- candidate revision.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js:
-
-2012-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- build-webkit: Don't spit out congratulations message on Ctrl+C
-
- Reviewed by Andreas Kling.
-
- * Scripts/build-webkit:
-
-2012-01-20 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Allow extra jhbuild modulesets
- https://bugs.webkit.org/show_bug.cgi?id=76691
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/jhbuildrc: Extra modulesets and modules can be added in
- JHBuild using the WEBKIT_EXTRA_MODULESETS and WEBKIT_EXTRA_MODULES
- env variables respectively. Use comma-separated values. Example:
- WEBKIT_EXTRA_MODULES=file:///path/to/module.set,file:///other/path.
-
-2012-01-20 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Expose accessibility hierarchy in WebKit2 to ATK/AT-SPI based ATs
- https://bugs.webkit.org/show_bug.cgi?id=72589
-
- Reviewed by Martin Robinson.
-
- Ensure the accessibility infrastructure is available when running
- the unit tests, otherwise WK2's accessibility tests won't work.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
- (TestRunner._lookup_atspi2_binary): New. Looks for the directory
- where at-spi2's stuff is located (like at-spi-bus-launcher and
- at-spi2-registryd).
- (TestRunner.run): Initialize the accessibility infrastructure.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Add 'WebKitWebViewBaseAccessible.*'.
-
- * gtk/jhbuild.modules: Added at-spi2-core and at-spi2-atk.
-
-2012-01-20 Hayato Ito <hayato@chromium.org>
-
- Add ShadowRoot.idl which is enabled by newly introduced SHADOW_DOM flag.
- https://bugs.webkit.org/show_bug.cgi?id=76353
-
- Reviewed by Hajime Morita.
-
- Add ShadowRoot.idl, which is enabled only on chromium port since this is
- under development feature.
- ShadowRoot.idl contains minimum API so that we can test it.
- Other APIs should be added on other changes so that we can isolate issues.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-01-20 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] GTK's DRT not to log events for already defunct objects
- https://bugs.webkit.org/show_bug.cgi?id=76620
-
- Reviewed by Martin Robinson.
-
- Do not log 'state-change:defunct' events.
-
- * DumpRenderTree/gtk/AccessibilityCallbacks.cpp:
- (printAccessibilityEvent): Early return if a
- 'state-change:defunct' signal is passed.
- (axObjectEventListener): Pass the signal name and value in
- separate parameters to printAccessibilityEvent.
-
-2012-01-19 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed build fix. Wrong variable being used as the cwd for git
- remote update command.
-
- * gtk/run-with-jhbuild:
- (update_jhbuild):
-
-2012-01-19 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] ensure the jhbuild used by webkit is as up-to-date as needed
- https://bugs.webkit.org/show_bug.cgi?id=76585
-
- Reviewed by Martin Robinson.
-
- This allows us to specify a minimum version of jhbuild required,
- while also providing stability against changes done to the master
- branch, by letting us choose what is the exact version that will
- be used.
-
- * gtk/run-with-jhbuild: refactored for more hackability and easier
- reading
- (jhbuild_installed): checks whether jhbuild is installed
- (jhbuild_cloned): checks whether jhbuild has been cloned
- (jhbuild_at_expected_revision): checks whether jhbuild is at the
- expected revision
- (update_jhbuild): brings jhbuild to the expected revision
- (clone_jhbuild): clones jhbuild
- (install_jhbuild): build and installs jhbuild
- (update_webkitgtk_libs): runs update-webkitgtk-libs
- (ensure_jhbuild): high-level logic to decide whether and which of
- the steps above are executed
-
-2012-01-19 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] DumpRenderTree converts "file:///" to a path differently
- https://bugs.webkit.org/show_bug.cgi?id=76653
-
- Reviewed by John Sullivan.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: (WTR::lastFileURLPathComponent):
- Do print a slash if there are no path components.
-
-2012-01-19 Eric Seidel <eric@webkit.org>
-
- webkit-patch cannot rollout patches without changelog/bug number
- https://bugs.webkit.org/show_bug.cgi?id=75962
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/download.py:
- (AbstractRolloutPrepCommand._prepare_state):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (AbstractRolloutPrepCommandTest.test_prepare_state):
-
-2012-01-19 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] fast/url/degenerate-file-base.html fails
- https://bugs.webkit.org/show_bug.cgi?id=76619
-
- Reviewed by Adam Roben.
-
- A URL generated form local path for loading had an extra slash, making document.URL
- incorrect in all WebKit2 tests (file://localhost//path/to/test.html).
-
- * WebKitTestRunner/TestInvocation.cpp: (WTR::createWKURL):
-
-2012-01-18 Ojan Vafai <ojan@chromium.org>
-
- check-webkit-style of the chromium test_expectations.txt file doesn't test all chromium ports
- https://bugs.webkit.org/show_bug.cgi?id=76510
-
- Reviewed by Adam Barth.
-
- Unlike other style rules, if you get the syntax of the test_expectations.txt
- file wrong, the layout tests won't run. Also, this check is simple and only
- slows down committing if you actually modify one of the test_expectations.txt files.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations):
- (TestExpectationsChecker.check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_check_covers_all_configurations):
- (TestExpectationsTestCase.test_check_covers_all_configurations.mock_check_test_expectations):
- (TestExpectationsTestCase):
- (assert_lines_lint):
-
-2012-01-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. Revert an unintentional change to WebKitDriver in r105443.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverProxy.__init__):
-
-2012-01-19 Dirk Pranke <dpranke@chromium.org>
-
- remove the duplicated build rules from WebKit.gyp, Tools.gyp
- https://bugs.webkit.org/show_bug.cgi?id=73384
-
- Reviewed by Tony Chang.
-
- This patch removes the no-longer-necessary conditional logic for
- build_webkit_exes_from_webkit_gyp; we now always build the exes
- from their own dedicated gyp files.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-01-19 Alexey Proskuryakov <ap@apple.com>
-
- make-new-script-test should work with HTTP tests
- https://bugs.webkit.org/show_bug.cgi?id=76603
-
- Reviewed by Adam Roben.
-
- * Scripts/make-new-script-test:
- (makePathToSharedSources): Renamed from makeTestRelativePathToSharedSources(), since it
- now also creates absolute paths for HTTP.
-
-2012-01-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Some perf tests time out when ran by run-perf-tests
- https://bugs.webkit.org/show_bug.cgi?id=76612
-
- Reviewed by Dirk Pranke and Eric Seidel.
-
- Always pass --no-timeout to DumpRenderTree from run-perf-tests.
- Otherwise some tests such as Parser/xml-parser.html will timeout.
-
- --no-timeout option is currently supported by Chromium and Mac ports.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.create_driver):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.__init__):
- (ChromiumDriver._wrapper_options):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- (DriverProxy.__init__):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver.cmd_line):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_read_binary_block):
- (WebKitDriverTest):
- (WebKitDriverTest.test_no_timeout):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run.RecordingTestDriver.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
-
-2012-01-19 Ben Wells <benwells@chromium.org>
-
- Add support for window.print to chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=76479
-
- When used in a test window.print goes into print mode and then
- straight out again. This will allow the afterprint event to be
- tested by having the afterprint event happen before the dump
- happens.
-
- Reviewed by Mihai Parparita.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printPage):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-01-18 Enrica Casucci <enrica@apple.com>
-
- editingAttributedStringFromRange in WebHTMLConverter does not handle NSUnderlineStyleAttributeName.
- https://bugs.webkit.org/show_bug.cgi?id=76588
- <rdar://problem/9325183>
-
- Added test.
-
- Reviewed by Dan Bernstein.
-
- * TestWebKitAPI/Tests/mac/InspectorBar.mm:
- (TestWebKitAPI::TEST):
-
-2012-01-19 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Do full incremental builds until bots use update-webkit
-
- Rubber-stamped by Simon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-01-19 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Fix the Qt build
-
- Unreviewed build fix.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-01-19 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make build-webkit always do safe incremental builds after update-webkit
-
- When building against Qt5 with GCC we would just run 'make' in the build dir,
- and rely on the dependency files output by GCC (-MD) to handle dependency
- tracking, but that fails for special-cases like adding a Q_OBJECT macro
- to a header.
-
- To guarantee that an incrmental build will work, we have to run 'make qmake',
- which we now do on every build-webkit that's followed by a successful run
- of update-webkit. The reasoning is that update-webkit can result in such
- potential corner-cases being applied, and since we can't know for sure
- unless we inspect the diff and account for all the corner cases we assume
- the worst and always run 'make qmake'.
-
- After a succesful run of build-webkit we proceed to do just 'make' for any
- subsequent runs, since we assume that the developer knows what kind of
- changes he/she is doing, and when a 'make qmake' is needed.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (determineCurrentSVNRevision):
- (currentSVNRevision):
- (buildQMakeProjects):
- * qmake/mkspecs/features/default_post.prf:
-
-2012-01-18 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should support Skipped list
- https://bugs.webkit.org/show_bug.cgi?id=76594
-
- Reviewed by Adam Barth.
-
- Add a support for Skipped list in run-perf-tests; also skip files in resources directories.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.perf_tests_dir):
- (Port.skipped_perf_tests):
- (Port.skips_perf_test):
- (Port.relative_perf_test_filename):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.perf_tests_dir):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._expectations_from_skipped_files):
- (WebKitPort):
- (WebKitPort.skipped_layout_tests):
- (WebKitPort.skipped_perf_tests):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner.run):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_collect_tests_with_skipped_list):
- (test_collect_tests_with_skipped_list.add_file):
-
-2012-01-18 Dirk Pranke <dpranke@chromium.org>
-
- Fix path to chromium_src_dir introduced in previous change.
-
- Unreviewed, build fix.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-01-18 Alexey Proskuryakov <ap@apple.com>
-
- Need infrastructure to test Content-Disposition filename encoding support
- https://bugs.webkit.org/show_bug.cgi?id=76572
- <rdar://problem/6421825>
-
- Reviewed by Sam Weinig.
-
- Made policy delegate log suggested file name when resource has Content-Disposition: attachment.
-
- WebKitTestRunner does not have a policy delegate yet, bug 42546.
-
- * DumpRenderTree/mac/PolicyDelegate.mm:
- (dispositionTypeFromContentDispositionHeader):
- (-[PolicyDelegate webView:decidePolicyForMIMEType:request:frame:decisionListener:]):
-
-2012-01-18 Ojan Vafai <ojan@chromium.org>
-
- Fix tests from http://trac.webkit.org/changeset/105332.
-
- The code assumed that if you passed an options object with a configuration
- attribute that it would have a valid value. A bunch of the testing mocks
- do things like having a configuration value of None.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
-
-2012-01-18 Ojan Vafai <ojan@chromium.org>
-
- Shave 0.5 seconds off check-webkit-style runtime for test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=76576
-
- Reviewed by Adam Barth.
-
- Avoid calling default_configuration in base.py. We don't need it for
- checking test_expectations.txt style. It takes ~0.5 seconds to run on my
- Mac Pro. It's the call to "perl Tools/Scripts/webkit-build-directory --top-level"
- from common.executive.
-
- At some point someone should probably look into why that call is so slow
- since it's on the critical path for run-webkit-tests and build-webkit startup.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_exepectations_path):
-
-2012-01-18 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] move Tools.gyp, switch build-webkit --chromium to All.gyp
- https://bugs.webkit.org/show_bug.cgi?id=76505
-
- Reviewed by Tony Chang.
-
- Update chromium build script to use All.gyp instead of WebKit.gyp
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Renamed from Source/WebKit/chromium/Tools.gyp.
- * Scripts/webkitdirs.pm:
-
-2012-01-18 Sam Weinig <sam@webkit.org>
-
- Don’t hardcode the path to ‘make‘.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2012-01-18 Joshua Bell <jsbell@chromium.org>
-
- Adding myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=76569
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-18 Adam Barth <abarth@webkit.org>
-
- Up the cap on test failures tolerated by the EWS so the mac-ews can run to completion
- https://bugs.webkit.org/show_bug.cgi?id=76567
-
- Reviewed by Eric Seidel.
-
- Current the AppleMac port has slightly more failures than we allow on
- the EWS, causing the mac-ews to spin. This patch ups the limit a bit,
- which should hopefully let the mac-ews run to completion. Once
- AppleMac has fewer failures, we can lower the cap again.
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_layout_test_results):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2012-01-18 Eric Carlson <eric.carlson@apple.com>
-
- Provide access to user's list of preferred languages
- https://bugs.webkit.org/show_bug.cgi?id=76138
-
- Reviewed by Alexey Proskuryakov.
-
- * GNUmakefile.am: Add JSInternalsCustom.cpp.
-
-2012-01-18 Adam Barth <abarth@webkit.org>
-
- Add Chromium Linux GPU 32 to the list of allowed Chromium Linux
- configurations.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.__init__):
-
-2012-01-18 Dominic Mazzoni <dmazzoni@google.com>
-
- Accessibility: Chromium needs methods to scroll an object into view or to a specific location.
- https://bugs.webkit.org/show_bug.cgi?id=73460
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::scrollToMakeVisibleCallback):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocusCallback):
- (AccessibilityUIElement::scrollToGlobalPointCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
-
-2012-01-17 Enrica Casucci <enrica@apple.com>
-
- Missing NSForegroundColorAttributeName should be treated as black instead of transparent.
- https://bugs.webkit.org/show_bug.cgi?id=76490
- <rdar://problem/9460733>
-
- Added TestWebKitAPI test.
-
- Reviewed by Dan Bernstein.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new test file.
- * TestWebKitAPI/Tests/mac/InspectorBar.mm: Added test that calls
- changeAttributes to the WebView.
-
-2012-01-18 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Consolidate layout test crash logging
- https://bugs.webkit.org/show_bug.cgi?id=75088
-
- Reviewed by Simon Hausmann.
-
- Move backtrace generating logic into WTFReportBacktrace
- and add a way to deinstall signal handlers if we know
- that we have already printed the backtrace.
-
- * DumpRenderTree/qt/main.cpp:
- (crashHandler):
- (setupSignalHandlers):
- (WTFCrashHook):
- (main):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::crashHandler):
- (WTR::setupSignalHandlers):
- (WTR::crashHook):
- (WTR::InjectedBundle::platformInitialize):
-
-2012-01-18 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed build fix after r105256.
-
- There was a cyclic dependency between self._port and self._host assigments.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
-
-2012-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Add new watchlist rule for the Qt build system
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Move OTHER_FILES from WebKit.pro to Tools.pro
-
- Reviewed by Simon Hausmann.
-
- * Tools.pro:
-
-2012-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Allow building only a subset of the WebKit sub-projects
-
- Fixes build-jsc, broken in r104825.
-
- We no longer need the intermediate buildQMakeQtProject(), as we're the
- only port using qmake, and buildQMakeProject is now highly Qt specific.
-
- <http://webkit.org/b/76179>
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-jsc:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-01-18 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should generate a json file that summaries the result
- https://bugs.webkit.org/show_bug.cgi?id=76504
-
- Reviewed by Adam Barth.
-
- Add an ability to generate a json file to run-perf-test in the preparation for perf bots.
- New option --outout-json-path specifies the json file's path, and --source-json-path specifies
- another json file to be merged into the generated json file.
-
- Also fixed a bug that --build wasn't set by default.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.webkit_base):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- (PerfTestsRunner):
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_json_if_specified):
- (PerfTestsRunner._process_chromium_style_test_result):
- (PerfTestsRunner._process_parser_test_result):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest):
- (create_runner):
- (test_run_test_set):
- (test_run_test_set_for_parser_tests):
- (test_run_test_set_with_summary_json):
- (test_collect_tests):
- (test_parse_args):
-
-2012-01-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r105244.
- http://trac.webkit.org/changeset/105244
- https://bugs.webkit.org/show_bug.cgi?id=76518
-
- broke Chromium Mac (Requested by rolandsteiner on #webkit).
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::removeSelection):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::removeSelection):
-
-2012-01-17 Dominic Mazzoni <dmazzoni@google.com>
-
- Accessibility: Chromium needs methods to scroll an object into view or to a specific location.
- https://bugs.webkit.org/show_bug.cgi?id=73460
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::scrollToMakeVisibleCallback):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocusCallback):
- (AccessibilityUIElement::scrollToGlobalPointCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
-
-2012-01-17 Adam Barth <abarth@webkit.org>
-
- Enable tests on the mac-ews
- https://bugs.webkit.org/show_bug.cgi?id=76502
-
- Reviewed by Simon Fraser.
-
- Apple now has five machines running the mac-ews. Lucas Forschler has
- asked that we try enabling tests to see if we have enough bandwidth.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2012-01-17 Sanjoy Das <sanjoy@playingwithpointers.com>
-
- Add a check-webkit-style exception for GDBInterface.cpp
- https://bugs.webkit.org/show_bug.cgi?id=76187
-
- Add an exception for Source/JavaScriptCore/jit/GDBInterface.cpp so
- that it does not fail the style check.
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/style/checker.py: Tell the style checker to not run
- readability/naming tests on
- Source/JavaScriptCore/jit/GDBInterface.cpp.
- * Scripts/webkitpy/style/checker_unittest.py:
- (GlobalVariablesTest.test_path_rules_specifier): Add a test for
- the above exception.
-
-2012-01-17 Hajime Morrita <morrita@chromium.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=76245
- [Mac][DRT] should allow query string for the file URL.
-
- Reviewed by Tony Chang.
-
- Taught DRT about file:// as a url instead of a file path.
- We are now able to use a path file:///foo/bar.html?baz as a url
- with which DRT opens "/foo/bar.html" with "baz" as a query string.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (runTest):
-
-2012-01-17 Ojan Vafai <ojan@chromium.org>
-
- Check style on test_expectations.txt files before commit
- https://bugs.webkit.org/show_bug.cgi?id=76484
-
- Reviewed by Adam Barth.
-
- Unlike other style rules, if you get the syntax of the test_expectations.txt
- file wrong, the layout tests won't run. Also, this check is simple and only
- slows down committing if you actually modify one of the test_expectations.txt files.
-
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._check_test_expectations):
- (Commit.run):
- * Scripts/webkitpy/tool/steps/commit_unittest.py: Added.
- (CommitTest):
- (CommitTest.test_check_test_expectations):
-
-2012-01-17 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- [Qt] Debug build fails with debug qt5
- https://bugs.webkit.org/show_bug.cgi?id=76463
-
- Reviewed by Simon Hausmann.
-
- Add QNetworkCookie include in order to satisfy sizeof in QTypeInfo in debug builds.
-
- * QtTestBrowser/cookiejar.h:
-
-2012-01-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix json import on linux
- https://bugs.webkit.org/show_bug.cgi?id=76481
-
- Reviewed by Adam Barth.
-
- For some reason, the version of simplejson autoinstalled on my linux
- box seems to be broken. We should really only be using
- simplejson if json isn't available anyway, so this change looks
- for json first.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- (JSONGeneratorTest.test_test_timings_trie):
-
-2012-01-17 Dirk Pranke <dpranke@chromium.org>
-
- Fix failures in test-webkitpy caused by r105177.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._determine_driver_path_statically):
- (ChromiumLinuxPort._static_build_path):
-
-2012-01-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: make PortFactory.get() be fully data-driven
- https://bugs.webkit.org/show_bug.cgi?id=76360
-
- Reviewed by Eric Seidel.
-
- Refactor PortFactory.get() to be fully data-driven.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
- (PortFactory._default_port):
- (PortFactory.get):
- (PortFactory.get.in):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.assert_port):
-
-2012-01-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: add determine_full_port_name(), clean up port.__init__()
- https://bugs.webkit.org/show_bug.cgi?id=76357
-
- Reviewed by Adam Barth.
-
- Each Port class is now required to implement a 'port_name' field
- that will match the start of all ports constructed by this class and
- a 'determine_full_port_name' field that will make the port
- fully-qualified.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port.determine_port_name):
- (Port.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.for):
- (ChromiumPort.__init__):
- (ChromiumPort):
- (ChromiumPort._chromium_base_dir):
- (ChromiumPort.path_from_chromium_base):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (ChromiumGpuLinuxPort):
- (ChromiumGpuLinuxPort.__init__):
- (ChromiumGpuMacPort):
- (ChromiumGpuMacPort.__init__):
- (ChromiumGpuWinPort):
- (ChromiumGpuWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort):
- (ChromiumLinuxPort.determine_port_name):
- (ChromiumLinuxPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- (ChromiumMacPort.determine_port_name):
- (ChromiumMacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort):
- (ChromiumWinPort.determine_port_name):
- (ChromiumWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- (DryRunPort):
- (DryRunPort.determine_port_name):
- (DryRunPort.__init__):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
- (PortFactory._default_port):
- (PortFactory.get):
- (PortFactory.get.in):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.assert_port):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (GoogleChromeLinux32Port):
- (GoogleChromeLinux32Port.determine_port_name):
- (GoogleChromeLinux64Port):
- (GoogleChromeLinux64Port.determine_port_name):
- (GoogleChromeMacPort):
- (GoogleChromeMacPort.determine_port_name):
- (GoogleChromeWinPort):
- (GoogleChromeWinPort.determine_port_name):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- (MacPort.determine_port_name):
- (MacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_versions):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort):
- (MockDRTPort.determine_port_name):
- (MockDRTPort.__init__):
- (MockDRT):
- (MockDRT.determine_port_name):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.make_port):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.determine_port_name):
- (QtPort.__init__):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort):
- (TestPort.determine_port_name):
- (TestPort.__init__):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.__init__):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
- (WinPort.determine_port_name):
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- (get_test_baselines.AllPlatformsPort.__init__):
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- (get_test_config.TestMacPort):
- (get_test_config):
-
-2012-01-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up port code in preparation for static port names
- https://bugs.webkit.org/show_bug.cgi?id=76356
-
- Reviewed by Adam Barth.
-
- To fix bug 76215 and be able to determine appropriate port names
- in webkitpy without actually constructing Port objects, we need
- to shuffle some logic in the chromium ports to be able to figure
- out whether we built DRT in 32 or 64-bit mode.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort._chromium_base_dir):
- (ChromiumPort.__init__):
- (ChromiumPort.path_from_chromium_base):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort):
- (ChromiumLinuxPort._determine_driver_path_statically):
- (ChromiumLinuxPort._static_build_path):
- (ChromiumLinuxPort._determine_architecture):
- (ChromiumLinuxPort.__init__):
- (ChromiumLinuxPort._build_path):
-
-2012-01-17 Hao Zheng <zhenghao@chromium.org>
-
- Do not remove pixel failures for ref tests.
- https://bugs.webkit.org/show_bug.cgi?id=76243
-
- Reviewed by Tony Chang.
-
- 'NRWT --no-pixel-tests' complains when reftests are expected to
- be image mismatch.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._update_summary_with_result):
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (is_reftest_failure):
- (determine_result_type):
-
-2012-01-17 Balazs Ankes <Ankes.Balazs@stud.u-szeged.hu>
-
- REGRESSION(r81225): ORWT should ignore reftests
- https://bugs.webkit.org/show_bug.cgi?id=67936
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/old-run-webkit-tests:
- (isUsedInReftest): $filename should be the first parameter
- (findTestsToRun): run test if it isn't reftest
-
-2012-01-17 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed. Fix python unit test I broke with r105142
-
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (WebKitPortTest.test_gtk_port):
-
-2012-01-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't set the 'primary' flag when mocking touch-points in MiniBrowser
-
- Qt 5 no longer has that flag.
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
-
-2012-01-16 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-
- GTK+ EWS needs to run update-webkitgtk-libs after applying a patch
- https://bugs.webkit.org/show_bug.cgi?id=75857
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): move cleaning the build to happen early,
- and handle --update-gtk right after that
- * Scripts/webkitpy/common/config/ports.py:
- (GtkPort.build_webkit_command): pass --update-gtk as an option to
- build-webkit, so that it is used in the EWS
-
-2012-01-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't add _debug postfix to targets when building debug only
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-01-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Add more files to project-files for easier navigation in Qt Creator
-
- Reviewed by Simon Hausmann.
-
- * Tools.pro:
- * qmake/config.tests/README: Added.
-
-2012-01-17 Philippe Normand <pnormand@igalia.com>
-
- [GTK] fast/dom/constructed-objects-prototypes.html fails
- https://bugs.webkit.org/show_bug.cgi?id=75432
-
- Reviewed by Martin Robinson.
-
- * Scripts/build-webkit: Enable video-track in GTK.
-
-2012-01-16 Takashi Toyoshima <toyoshim@chromium.org>
-
- Add toyoshim as a committer.
- https://bugs.webkit.org/show_bug.cgi?id=76390
-
- Reviewed by Hajime Morita.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-16 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Build fix after r104155. Several debug targets were not
- properly including the '*Common' property sheets.
-
- * DumpRenderTree/win/DumpRenderTreeLauncherDebugCairoCFLite.vsprops:
- * DumpRenderTree/win/ImageDiffLauncherDebugCairoCFLite.vsprops:
- * MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops:
- * WinLauncher/WinLauncherLauncherDebugCairoCFLite.vsprops:
-
-2012-01-16 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r105072): It broke committers_unittest.py
- https://bugs.webkit.org/show_bug.cgi?id=76396
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers_unittest.py:
- (CommittersTest._assert_fuzz_match): It should handle more names.
- (CommittersTest.test_contributors_by_fuzzy_match_with_legacy_names): Fix the testcase.
-
-2012-01-16 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Include gtk+3 in the jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=76284
-
- Reviewed by Philippe Normand.
-
- * gtk/jhbuild.modules: Add some gtk+3 to the jhbuild moduleset.
-
-2012-01-16 Dan Winship <danw@gnome.org>
-
- Add myself as a committer
-
- Unreviewed
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-16 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- Unreviewed; fix the build when --as-needed and --no-copy-dt-needed-entries are passed to the linker.
-
- Some recent versions of a few Linux distributions have started passing
- --as-needed and --no-copy-dt-needed-entries by default to the linker,
- which broke the build when SHARED_CORE was turned on, as libwtf_efl.so
- needed a few symbols from libjavascriptcore_efl.so.
-
- * DumpRenderTree/efl/CMakeLists.txt: Explicitly pass WTF_LIBRARY_NAME
- before JavaScriptCore_LIBRARY_NAME in DumpRenderTree_LIBRARIES so the
- libraries are searched in the right order by the linker.
-
-2012-01-16 Philippe Normand <pnormand@igalia.com>
-
- [GTK] set audio resources path in NRTW
- https://bugs.webkit.org/show_bug.cgi?id=76380
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server): Set $AUDIO_RESOURCES_PATH so
- the uninstalled audio resources are used during webaudio tests.
-
-2012-01-16 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] ldflags and cflags should take precedence over the existing flags in gtkdoc.py
- https://bugs.webkit.org/show_bug.cgi?id=76369
-
- Reviewed by Xan Lopez.
-
- If there's an installed version of webkit and there are new
- symbols in the build tree, gtkdoc-scanobj fails due to undefined
- references, because the env ldflags are given before the local
- ones.
-
- * gtk/gtkdoc.py:
- (GTKDoc._run_gtkdoc_scangobj):
-
-2012-01-15 Pablo Flouret <pablof@motorola.com>
-
- Fix compilation errors on build-webkit --debug --no-video on mac.
- https://bugs.webkit.org/show_bug.cgi?id=75867
-
- Reviewed by Philippe Normand.
-
- Add --[no-]video-track to build-webkit, since video track feature
- depends on video.
-
- * Scripts/build-webkit:
-
-2012-01-14 James Robinson <jamesr@chromium.org>
-
- [chromium] Failing webkit_unit_tests does not make the cr-linux EWS bubble red
- https://bugs.webkit.org/show_bug.cgi?id=76313
-
- Reviewed by Adam Barth.
-
- The exit code of this script should be the exit code of webkit_unit_tests. Tested manually.
-
- * Scripts/run-chromium-webkit-unit-tests:
-
-2012-01-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r105017.
- http://trac.webkit.org/changeset/105017
- https://bugs.webkit.org/show_bug.cgi?id=76333
-
- broke the build (Requested by philn-tp on #webkit).
-
- * gtk/jhbuild.modules:
-
-2012-01-14 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Include gtk+3 in the jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=76284
-
- Reviewed by Philippe Normand.
-
- * gtk/jhbuild.modules: Add some gtk+3 to the jhbuild moduleset.
-
-2012-01-13 Adam Barth <abarth@webkit.org>
-
- Remove --dry-run support from webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=76300
-
- Reviewed by Dirk Pranke.
-
- This is the rest of the patch from Bug 76300. I landed it separtely
- because main.py had some stray conflict markers that I needed to clean
- up first.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.parse_args):
- (Tester._run_tests):
-
-2012-01-13 Adam Barth <abarth@webkit.org>
-
- test-webkitpy does not run
- https://bugs.webkit.org/show_bug.cgi?id=76318
-
- Unreviewed.
-
- Looks like some conflict markers got left in the file.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.run):
-
-2012-01-13 Adam Barth <abarth@webkit.org>
-
- Remove --dry-run support from webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=76300
-
- Reviewed by Dirk Pranke.
-
- We don't use this functionality for anything, and it doesn't really
- work. Someone in #webkit tried using it and and got sad/confused. We
- should just remove it.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.push_local_commits_to_server):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.__init__):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (_shared_test_commit_with_message):
- (GitSVNTest.test_commit_text_parsing):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.commit_with_message):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.__init__):
- (Bugzilla.quips):
- (Bugzilla.authenticate):
- (Bugzilla.add_attachment_to_bug):
- (Bugzilla.add_patch_to_bug):
- (Bugzilla.create_bug):
- (Bugzilla.clear_attachment_flags):
- (Bugzilla.set_flag_on_attachment):
- (Bugzilla.obsolete_attachment):
- (Bugzilla.add_cc_to_bug):
- (Bugzilla.post_comment_to_bug):
- (Bugzilla.close_bug_as_fixed):
- (Bugzilla.reassign_bug):
- (reopen_bug):
- * Scripts/webkitpy/test/main.py:
- (Tester.parse_args):
- (Tester.run_tests):
-
-2012-01-13 David Levin <levin@chromium.org>
-
- check-webkit-style: should encourage the use of Own* classes for Windows DC.
- https://bugs.webkit.org/show_bug.cgi?id=76227
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_leaky_patterns): The new check.
- (process_line): Added a call to the new check.
- (CppChecker): Added the new error type.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTestBase):
- (CppStyleTestBase.perform_leaky_pattern_check):
- The check for only leaky pattern errors.
- (LeakyPatternTest): Test cases.
-
-2012-01-13 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: clean up handling of test directories, QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=76238
-
- Reviewed by Adam Barth.
-
- This patch cleans up a bunch of hacks related to how we find all
- of the python unit tests and set up the sys.path variable in
- test-webkitpy.
-
- This patch changes how test-webkitpy works slightly in that we
- will now look for test files under Tools/Scripts and Source/WebKit2/Scripts
- rather than just Tools/Scripts/webkitpy and Source/WebKit2/Scripts/webkit.
- This greatly simplifies the mapping of paths to module names and
- appears to have no significant performance impact or other drawbacks.
-
- There are other ways that we could remove all of the hacks and
- still have a more flexible mapping of paths to module names, but
- the ones I've thought of so far add a decent amount of complexity to
- the implementation and don't seem to buy us much.
-
- * QueueStatusServer/__init__.py:
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/test/main.py:
- (Tester._modules_from_paths):
- (Tester._is_module):
-
-2012-01-13 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: should support classes and individual test names as well as modules
- https://bugs.webkit.org/show_bug.cgi?id=76233
-
- Reviewed by Adam Barth.
-
- The default unittest.main() supports a list of individual
- TestCase classes or individual tests as well as modules. This
- change adds support for the same to test-webkitpy, so now you
- can say
-
- % test-wekbitpy webkitpy.test.cat_unittest.CatTest
-
- and
-
- % test-wekbitpy webkitpy.test.cat_unittest.CatTest.test_basic
-
- in addition to
-
- % test-wekbitpy webkitpy.test.cat_unittest
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/test/cat_unittest.py:
- * Scripts/webkitpy/test/main.py:
- (Tester.parse_args):
- (Tester.run):
- (Tester):
- (Tester._find_modules):
- (Tester._exclude):
- (Tester._run_tests):
- (Tester._is_module):
- (Tester._log_exception):
-
-2012-01-13 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: add basic code coverage support
- https://bugs.webkit.org/show_bug.cgi?id=76201
-
- Reviewed by Adam Barth.
-
- This test adds basic code coverage support to test-webkitpy; if
- you pass the -c flag, we will generate a new coverage file. We
- can start simply with this and add more features as necessary.
-
- This patch requires coverage to be already installed on the
- machine. I am not auto-installing this for now.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.parse_args):
- (Tester.run_tests):
-
-2012-01-13 Dirk Pranke <dpranke@chromium.org>
-
- StatusBubbleTest.test_build_bubble is failing
- https://bugs.webkit.org/show_bug.cgi?id=76222
-
- Reviewed by Adam Barth.
-
- * QueueStatusServer/handlers/statusbubble_unittest.py:
- (StatusBubbleTest.test_build_bubble):
-
-2012-01-13 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- nrwt should use multiple http shards
- https://bugs.webkit.org/show_bug.cgi?id=75958
-
- Add --max-locked-shards option to the nrwt for manual set
- the maximum number of the locked shards
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._max_locked_shards):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ShardingTests.get_shards):
- (ShardingTests.test_multiple_locked_shards):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-01-13 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- prepare-ChangeLog: Look for a text editor in a few more variables.
- https://bugs.webkit.org/show_bug.cgi?id=76289
-
- Reviewed by Ryosuke Niwa.
-
- A text editor was looked for only in the CHANGE_LOG_EDITOR and
- CHANGE_LOG_EDIT_APPLICATION environment variables before falling back
- to the OS X-specific open(1) command.
-
- As there does not seem to be a common way of looking for a text editor
- among the scripts in Tools/Scripts right now, just look at $VISUAL and
- $EDITOR (set much more often than the other variables in Unix systems)
- before falling back to open(1).
-
- * Scripts/prepare-ChangeLog:
- (openChangeLogs):
-
-2012-01-13 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [GTK] gtkdoc.py ignoring LDFLAGS and CFLAGS environment variables
- https://bugs.webkit.org/show_bug.cgi?id=76269
-
- Reviewed by Martin Robinson.
-
- * gtk/gtkdoc.py:
- (GTKDoc._run_gtkdoc_scangobj):
-
-2012-01-13 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2]REGRESSION(r104881):It broke hundreds of tests
- https://bugs.webkit.org/show_bug.cgi?id=76247
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Disable mock scrollbars on Qt by default. (workaround)
-
-2012-01-13 Hajime Morrita <morrita@chromium.org>
-
- [Mac][DRT] Should support --no-timeout
- https://bugs.webkit.org/show_bug.cgi?id=76242
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions): Added "--no-timeout" to the options list.
- (setWaitToDumpWatchdog): Added to encapsulate the waitToDumpWatchdog global variable.
- (shouldSetWaitToDumpWatchdog): Added to check the useTimeoutWatchdog flag set by the option.
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setWaitToDump): Now calls shouldSetWaitToDumpWatchdog() to check the flag.
-
-2012-01-12 Simon Fraser <simon.fraser@apple.com>
-
- Mitigate scrollbar differences when running pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=67217
-
- Reviewed by Dan Bernstein.
-
- Enable mock scrollbars by default for tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-01-12 Ryosuke Niwa <rniwa@webkit.org>
-
- Need a script to run tests in PerformanceTests
- https://bugs.webkit.org/show_bug.cgi?id=76132
-
- Reviewed by Adam Barth.
-
- Add run-perf-tests to run performance tests using parser/resources/runner.js.
- Unfortunately, there isn't an easy way of telling which test uses which format
- so hard-code directory that uses Chromium perf-bot style (only inspector perf. tests for now).
-
- All test outputs are re-formatted to match Chromium perf-bot style.
-
- * Scripts/run-inspector-perf-tests.py:
- * Scripts/run-perf-tests: Added.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner.run):
- (PerfTestsRunner._print_status):
- (PerfTestsRunner._run_tests_set):
- (PerfTestsRunner._process_chromium_style_test_result):
- (PerfTestsRunner._should_ignore_line_in_parser_test_result):
- (PerfTestsRunner._process_parser_test_result):
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.TestDriver.run_test):
- (create_runner):
- (run_test):
- (test_run_test_set):
- (test_run_test_set_for_parser_tests):
- (test_collect_tests):
-
-2012-01-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up port unit tests in preparation for making port_name mandatory
- https://bugs.webkit.org/show_bug.cgi?id=76123
-
- Reviewed by Adam Barth.
-
- This change updates the unit tests to be more consistent in how
- ports are created, in preparation for making port_name a
- mandatory parameter to the constructor and removing any version
- interpretation from it.
-
- There should be no functional changes in this patch, but some
- tests that are no longer relevant have been removed or reworked.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_get_option__default):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest):
- (ChromiumLinuxPortTest.assert_architecture):
- (ChromiumLinuxPortTest.test_determine_architecture_fails):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest):
- (ChromiumPortTest.test_all_test_configurations):
- (ChromiumPortTest.TestMacPort.__init__):
- (ChromiumPortTest.TestLinuxPort.__init__):
- (ChromiumPortTest.TestWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest):
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py:
- (EflPortTest):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest):
- (MockDRTPortTest.make_port):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._port_flag_for_scripts):
- (QtPort.__init__):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
- (QtPortTest._assert_search_path):
- (QtPortTest.test_baseline_search_path):
- (QtPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitPortTest):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest):
- (WinPortTest._assert_search_path):
- (WinPortTest.test_baseline_search_path):
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- (get_test_config.TestMacPort.__init__):
-
-2012-01-12 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: clean up logging and provide a real --help message
- https://bugs.webkit.org/show_bug.cgi?id=76142
-
- Reviewed by Adam Barth.
-
- This test is mostly more refactoring - it calls objects in
- unittest directly instead of routing through unittest.main() --
- in order to gain more control over the logging and to provide a
- correct --help message. This will also give us a better
- foundation for adding more feautures down the road.
-
- This patch adds different levels of logging controlled by the
- '-s', '-q', and '-v' options (see --help for details), and
- removes the --verbose-logging option.
-
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/test/main.py:
- (Tester):
- (Tester.clean_packages):
- (Tester.__init__):
- (Tester.parse_args):
- (Tester.configure):
- (Tester._configure_logging):
- (Tester.find_modules):
- (Tester._exclude):
- (Tester._modules_from_paths):
- (Tester.run_tests):
-
-2012-01-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Make the new WTF module build on Qt
- https://bugs.webkit.org/show_bug.cgi?id=76163
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/modules/wtf.prf: Pull in WTF from the new location.
-
-2012-01-12 Vsevolod Vlasov <vsevik@chromium.org>
-
- Unreviewed, mac DumpRenderTree fix.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:withSource:]):
-
-2012-01-12 Vsevolod Vlasov <vsevik@chromium.org>
-
- WebKitTestRunner should not print console message line number when it is equal to zero.
- https://bugs.webkit.org/show_bug.cgi?id=76167
-
- Reviewed by Csaba Osztrogonác.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willAddMessageToConsole):
-
-2012-01-11 Vsevolod Vlasov <vsevik@chromium.org>
-
- Make default console messages line numbers consistent.
- https://bugs.webkit.org/show_bug.cgi?id=74075
-
- Reviewed by Pavel Feldman.
-
- Unset line numbers are not printed to console now.
- Added Source/WebCore/inspector to efl DumpRenderTree include path.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didAddMessageToConsole):
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onConsoleMessage):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewConsoleMessage):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:withSource:]):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::javaScriptConsoleMessage):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewAddMessageToConsole):
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (LayoutWebViewEventHandler::OnConsoleMessageEvent):
-
-2012-01-10 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: push more logic into webkitpy.test.main, clean up code
- https://bugs.webkit.org/show_bug.cgi?id=76021
-
- Reviewed by Eric Seidel.
-
- I plan to add more functionality to test-webkitpy, but it is
- difficult to hack on now; this patch is the first of two that
- brings test-webkitpy more inline with current coding style by
- pushing more logic into the webkitpy.test.main.Tester class (so
- that it will be testable itself).
-
- There should be no functional changes in this patch.
-
- * Scripts/test-webkitpy:
- (_path_from_webkit_root):
- * Scripts/webkitpy/test/main.py:
- (Tester):
- (Tester.init):
- (Tester.configure_logging):
- (Tester.configure_logging.filter):
- (Tester.clean_packages):
- (Tester.run_tests):
-
-2012-01-11 Wei Jia <wjia@chromium.org>
-
- implement layout tests for <video> with media stream
- https://bugs.webkit.org/show_bug.cgi?id=74882
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp: Added.
- (WebKit::WebUserMediaClientMock::create):
- (WebKit::WebUserMediaClientMock::IsMockStream):
- (WebKit::WebUserMediaClientMock::requestUserMedia):
- (WebKit::WebUserMediaClientMock::cancelUserMediaRequest):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h: Added.
- (WebKit::WebUserMediaClientMock::~WebUserMediaClientMock):
- (WebKit::WebUserMediaClientMock::WebUserMediaClientMock):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::userMediaClient):
- (WebViewHost::userMediaClientMock):
- (WebViewHost::createMediaPlayer):
- (WebViewHost::mediaStreamUtil):
- (WebViewHost::testMediaStreamClient):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-01-11 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix chromium-win's version remapping to work correctly on Win 7 SP1.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.__init__):
-
-2012-01-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Sheriffbot build fix. Don't emit empty lines on IRC.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (LastGreenRevision.execute):
-
-2012-01-11 Ryosuke Niwa <rniwa@webkit.org>
-
- last-green-revision should report the revision that succeeded on all bots
- https://bugs.webkit.org/show_bug.cgi?id=76109
-
- Reviewed by Adam Barth.
-
- Add an algorithm to find the last known good revision among the specified bots. For a revision to be
- considered green by this algorithm, all matching builders must have a successful run at the revision
- or two consecutive successful runs before and after the revision.
-
- Also fixed a bug in irc_command that the result wasn't posted on IRC properly and a bug in queries.py
- that resulted in an exception when the user didn't pass BUILDER_NAME argument.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot._revisions_for_builder):
- (BuildBot):
- (BuildBot._find_green_revision):
- (BuildBot.last_green_revision):
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- (MockBuildBot.last_green_revision):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_revisions_for_builder):
- (test_find_green_revision):
- (test_last_green_revision):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (LastGreenRevision.execute):
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- (SheriffIRCBotTest.test_lgr):
- * Scripts/webkitpy/tool/commands/queries.py:
- (LastGreenRevision):
-
-2012-01-11 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, fix build bustage on win32 introduced by r104725.
-
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- (MockChromiumDRTTest.test_pixeltest__fails):
-
-2012-01-11 Jochen Eisinger <jochen@chromium.org>
-
- [Chromium] mimic the (old) behavior of the mac port for (re)setting the color profile
- https://bugs.webkit.org/show_bug.cgi?id=75618
-
- Eventually, we should get away from setting the display's color profile, as the mac port is doing now.
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestHelper.mm:
- (installLayoutTestColorProfile):
- (restoreUserColorProfile):
- (main):
-
-2012-01-11 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: fix -v and eliminate some spurious warnings
- https://bugs.webkit.org/show_bug.cgi?id=76099
-
- Reviewed by Adam Barth.
-
- when we added support for --xml output, we broke the -v flag.
-
- Also, fix the code to swallow a harmless warning from
- VCSUtils.pm and fix a deprecated warning in jsonchecker.py.
-
- test-webkitpy is now silent again except for the one known
- logging issue.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.commit_message_for_this_commit):
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (test_commit_message_for_this_commit):
- * Scripts/webkitpy/style/checkers/jsonchecker.py:
- (JSONChecker.check):
- (JSONChecker.line_number_from_json_exception):
- * Scripts/webkitpy/test/main.py:
- (Tester.run_tests):
-
-2012-01-11 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: webkitpy.layout_tests.port tests should only use MockSystemHost, not MockHost
- https://bugs.webkit.org/show_bug.cgi?id=76084
-
- Reviewed by Adam Barth.
-
- This will help make it easier to catch layering violations. This
- change just refactors test code; there are no changes to
- production code.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.make_port):
- (PortTest.test_find_no_paths_specified):
- (PortTest.test_find_one_test):
- (PortTest.test_find_glob):
- (PortTest.test_find_with_skipped_directories):
- (PortTest.test_find_with_skipped_directories_2):
- (PortTest.test_parse_reftest_list):
- (PortTest.test_httpd_returns_error_code):
- (PortTest.test_virtual_methods):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- (ChromiumGpuTest.assert_port_works):
- (ChromiumGpuTest._assert_baseline_path):
- (ChromiumGpuTest.test_graphics_type):
- (ChromiumGpuTest.test_default_tests_paths.test_paths):
- (ChromiumGpuTest.test_test_files):
- (ChromiumGpuTest.test_test_files.test_paths):
- (ChromiumGpuTest):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.assert_architecture):
- (ChromiumLinuxPortTest.test_check_illegal_port_names):
- (ChromiumLinuxPortTest.test_determine_architecture_fails):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.make_port):
- (DriverTest):
- (DriverTest.assertVirtual):
- (DriverTest._assert_wrapper):
- (DriverTest.test_virtual_driver_methods):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- (MockDRTPortTest.test_port_name_in_constructor):
- (MockDRTTest.assertTest):
- (MockDRTTest.test_main):
- (MockChromiumDRTTest.test_pixeltest__fails):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_search_path):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (TestWebKitPort.__init__):
- (WebKitPortUnitTests.test_default_options):
- (test_runtime_feature_list):
- (test_test_expectations):
-
-2012-01-11 Ojan Vafai <ojan@chromium.org>
-
- Style skipped tests in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=76091
-
- Reviewed by Tony Chang.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- Removed "FLAKY" from this list since we don't ever mark individual runs
- as flaky. Also deleted an outdated line.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2012-01-11 Ojan Vafai <ojan@chromium.org>
-
- Remove gtest normalization code from the test results server
- https://bugs.webkit.org/show_bug.cgi?id=76089
-
- Reviewed by Tony Chang.
-
- The normalization now happens on the gtest side.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults.merge):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_gtest):
-
-2012-01-11 Ojan Vafai <ojan@chromium.org>
-
- Be more aggressive about deleting unnecessary results from the test-results-server json files
- https://bugs.webkit.org/show_bug.cgi?id=76086
-
- Reviewed by Tony Chang.
-
- Remove any tests that only contain skip/pass/nodata values whose runtime
- is less than 5 seconds.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults._normalize_results_json):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_merge_remove_test):
- (JsonResultsTest.test_merge_keep_test_with_all_pass_but_slow_time):
-
-2012-01-11 Ryosuke Niwa <rniwa@webkit.org>
-
- last-green-revision should give us per-bot information
- https://bugs.webkit.org/show_bug.cgi?id=76011
-
- Reviewed by Adam Barth.
-
- Rewrote last-green-revision command. Instead of finding a revision for which all bots succeeded,
- we report the latest green run on each bot from the last 100 runs.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot._fetch_builder_page):
- (BuildBot):
- (BuildBot._green_revision_for_builder):
- (BuildBot.last_green_revision):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_green_revision_for_builder):
- (test_last_green_revision):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (LastGreenRevision.execute):
- * Scripts/webkitpy/tool/commands/queries.py:
- (LastGreenRevision.execute):
-
-2012-01-11 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up version detection in webkitpy.layout_tests.port
- https://bugs.webkit.org/show_bug.cgi?id=76016
-
- Reviewed by Adam Barth.
-
- This change updates the code in webkitpy.layout_tests.port to
- use the new os_name and os_version fields on host.platform. This
- gets layout_tests.port out of the version parsing business. Most
- of the diffs are just cleaning up test code to accomodate the
- changes.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive):
- (MockExecutive.ignore_error):
- (MockExecutive2):
- (MockExecutive2.ignore_error):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_mac):
- (MockPlatformInfo.is_linux):
- (MockPlatformInfo.is_win):
- * Scripts/webkitpy/common/system/systemhost_mock.py:
- (MockSystemHost.__init__):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- (ChromiumMacPort.check_wdiff):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest):
- (ChromiumMacPortTest.assert_name):
- (ChromiumMacPortTest.test_versions):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_all_test_configurations):
- (ChromiumPortTest.TestMacPort.__init__):
- (ChromiumPortTest.TestLinuxPort.__init__):
- (ChromiumPortTest.TestWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest):
- (ChromiumWinTest.assert_name):
- (ChromiumWinTest.test_versions):
- (ChromiumWinTest.test_baseline_path):
- (ChromiumWinTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._port_name_from_arguments_and_options):
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest):
- (FactoryTest.setUp):
- (FactoryTest.assert_port):
- (FactoryTest.test_mac):
- (FactoryTest.test_win):
- (FactoryTest.test_google_chrome):
- (FactoryTest.test_gtk):
- (FactoryTest.test_qt):
- (FactoryTest.test_chromium_gpu):
- (FactoryTest.test_chromium_gpu_linux):
- (FactoryTest.test_chromium_gpu_mac):
- (FactoryTest.test_chromium_gpu_win):
- (FactoryTest.test_chromium_mac):
- (FactoryTest.test_chromium_linux):
- (FactoryTest.test_chromium_win):
- (FactoryTest.test_unknown_specified):
- (FactoryTest.test_unknown_default):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (TestGoogleChromePort):
- (TestGoogleChromePort._verify_baseline_path):
- (TestGoogleChromePort._verify_expectations_overrides):
- (TestGoogleChromePort.test_get_google_chrome_port):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest):
- (assert_name):
- (test_tests_for_other_platforms):
- (test_version):
- (test_versions):
- (test_is_version_methods):
- (test_setup_environ_for_server):
- (_assert_search_path):
- (test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase):
- (PortTestCase.make_port):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest):
- (WinPortTest.test_show_results_html_file):
- (WinPortTest._assert_search_path):
- (WinPortTest._assert_version):
-
-2012-01-11 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] Remove workaround introduced into bug 75470
- https://bugs.webkit.org/show_bug.cgi?id=75889
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-01-10 Dmitry Lomov <dslomov@google.com>
-
- [Chromium] Remove obsolete references to WebWorker class.
- https://bugs.webkit.org/show_bug.cgi?id=76020
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestWebWorker.h: Removed.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-01-11 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Some css3 filter tests are failing after r104698
- https://bugs.webkit.org/show_bug.cgi?id=76055
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference): Add WebKitAcceleratedCompositingEnabled preference.
-
-2012-01-11 Tony Chang <tony@chromium.org>
-
- Don't remove 0 byte files when running build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=75997
-
- Reviewed by Csaba Osztrogonác.
-
- If QTDIR is set, isQt() is true even when running build-webkit --chromium.
-
- * Scripts/webkitdirs.pm:
- (determineIsQt):
-
-2012-01-10 David Kilzer <ddkilzer@apple.com>
-
- Add TestWebKitAPI tests for KURL
- <http://webkit.org/b/75774>
-
- Reviewed by Adam Barth.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add a
- WebCore folder and KURL.cpp source file to the project.
- * TestWebKitAPI/Tests/WebCore/KURL.cpp: Added.
- (TestWebKitAPI::WebCore::SetUp): Initialize the main thread
- during setup since this test doesn't go through WebKit or
- WebKit2.
- (TestWebKitAPI::TEST_F): Add two basic tests.
-
-2012-01-10 David Kilzer <ddkilzer@apple.com>
-
- Extract common code for comparing WTF::String objects into WTFStringUtilities.h
-
- Reviewed by Adam Barth.
-
- Needed for: <http://webkit.org/b/75774> Add TestWebKitAPI tests for KURL
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add
- WTFStringUtilities.h to the project.
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp: Update to use
- WTFStringUtilities.h.
- * TestWebKitAPI/WTFStringUtilities.h: Added.
- (WTF::operator<<):
-
-2012-01-10 Vincent Scheib <scheib@chromium.org>
-
- Clarify run-webkit-tests options reset-results and new-baseline
- https://bugs.webkit.org/show_bug.cgi?id=75993
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-01-10 Simon Fraser <simon.fraser@apple.com>
-
- Disabled mock scrollbars should draw differently
- https://bugs.webkit.org/show_bug.cgi?id=75995
-
- Reviewed by James Robinson.
-
- When the scrollbar is disabled, paint the entire track of
- mock scrollbars with a lighter gray, and hide the thumb.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (-[DRTMockScroller drawKnob]):
- (-[DRTMockScroller drawRect:]):
-
-2012-01-10 James Robinson <jamesr@chromium.org>
-
- [chromium] Run webkit_unit_tests as part of webkit-patch build-and-test
- https://bugs.webkit.org/show_bug.cgi?id=75988
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/ports.py:
- (WebKitPort.run_webkit_unit_tests_command):
- (WebKitPort):
- (ChromiumPort.run_webkit_unit_tests_command):
- (ChromiumPort):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort.run_webkit_unit_tests_command):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (DownloadCommandsTest.test_build_and_test):
- (test_land):
- (test_land_red_builders):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2012-01-09 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: add os_name, os_version to platforminfo
- https://bugs.webkit.org/show_bug.cgi?id=75931
-
- Reviewed by Eric Siedel.
-
- As a first step in cleaning up the version parsing logic in
- webkitpy.layout_tests.port, this adds common routines for
- getting the os_name and os_version fields to the PlatformInfo
- class. Nothing uses them yet but I've added FIXME's to some of
- the code that needs to be deleted in the port files.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.__init__):
- (PlatformInfo):
- (PlatformInfo._determine_os_name):
- (PlatformInfo._determine_mac_version):
- (PlatformInfo._determine_linux_version):
- (PlatformInfo._determine_win_version):
- (PlatformInfo.display_name):
- (PlatformInfo.total_bytes_memory):
- (PlatformInfo._compute_bytes_from_vm_stat_output):
- (PlatformInfo.free_bytes_memory):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py: Added.
- (TestPlatformInfo):
- (TestPlatformInfo.make_info):
- (TestPlatformInfo.make_info.mock_run_command):
- (TestPlatformInfo.setUp):
- (TestPlatformInfo.tearDown):
- (TestPlatformInfo.test_basic):
- (TestPlatformInfo.integration_test_basic):
- (TestPlatformInfo.test_display_name_mac):
- (TestPlatformInfo.test_display_name_win32):
- (TestPlatformInfo.test_memory_mac):
- (TestPlatformInfo.test_memory_win32):
- (TestPlatformInfo.test_determine_os_name):
- (TestPlatformInfo.test_determine_mac_version):
- (TestPlatformInfo.test_determine_linux_version):
- (TestPlatformInfo.test_determine_win_version_from_tuple):
- (TestPlatformInfo.test_determine_win_version_from_cmd):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
-
-2012-01-10 Adam Roben <aroben@apple.com>
-
- Make it possible to type data: URLs into MiniBrowser on Windows
-
- Fixes <http://webkit.org/b/75084> Crash when trying to navigate to a data: URL in
- MiniBrowser on Windows
-
- Reviewed by Darin Adler.
-
- * MiniBrowser/win/BrowserWindow.cpp:
- (BrowserWindow::handleMessage): Instead of checking for an "http://" prefix when deciding
- whether to prepend "http://", just look for whether the typed URL contains a colon. If it
- does, we assume it already has a scheme and don't modify it.
-
-2012-01-10 Adam Roben <aroben@apple.com>
-
- Make MiniBrowser automatically escape invalid URL characters typed in its URL field
-
- Fixes <http://webkit.org/b/75086> Crash when typing a data: URL containing double-quotes in
- MiniBrowser on Windows
-
- Reviewed by Darin Adler.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::goToURL): Pass the typed string through
- CFURLCreateStringByAddingPercentEscapes before trying to create a URL from it.
-
-2012-01-10 Ben Wells <benwells@chromium.org>
-
- Adding myself (benwells) to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=75971
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-10 Mario Sanchez Prada <msanchez@igalia.com>
-
- AX: support helpText() in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=40193
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::helpText): Implemented.
-
-2012-01-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r104572.
- http://trac.webkit.org/changeset/104572
- https://bugs.webkit.org/show_bug.cgi?id=75967
-
- It broke zillion tests (Requested by Ossy on #webkit).
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::sendOrQueueEvent):
- (EventSender::replaySavedEvents):
- (EventSender::eventFilter):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2012-01-10 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt] fast/events/dont-loose-last-event test fails on WK1
- https://bugs.webkit.org/show_bug.cgi?id=73894
-
- Reviewed by Simon Hausmann.
-
- Empty the entire event queue when requested besides using
- sendEvent instead of postEvent to make sure all events were
- delivered.
- This commit also removes not working DRT code to handle drag and drop,
- for more refs see: https://bugs.webkit.org/show_bug.cgi?id=31332
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::sendOrQueueEvent):
- (EventSender::replaySavedEvents):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2012-01-10 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Enable CSS_FILTERS in Qt build
- https://bugs.webkit.org/show_bug.cgi?id=75777
-
- Add the CSS_FILTERS feature flag to Qt.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unreviewed -Werror build fix.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication): Re-order initialization to match
- declaration.
-
-2012-01-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Remove dependency to uitools
- https://bugs.webkit.org/show_bug.cgi?id=75952
-
- Reviewed by Tor Arne Vestbø.
-
- QUiLoader is used for creating QLabel/QProgressBar widgets for
- a layout test, to verify some widget embedding feature. Unfortunately
- in Qt 5, QUiLoader is part of qttools, which depends on webkit, which
- depends on qttools. Since we don't really _need_ QUiLoader for our tests,
- let's break the circular dependency.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::createPlugin):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/webpage.cpp:
- (WebPage::createPlugin):
- * qmake/mkspecs/features/minimal_qt.prf:
- * qmake/mkspecs/features/uitools.prf: Removed.
-
-2012-01-10 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Don't expose m_windowOptions as part of the public interface in MiniBrowserApplication
- https://bugs.webkit.org/show_bug.cgi?id=75894
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (MiniBrowserApplication::windowOptions):
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2012-01-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] DRT crashes with Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=75951
-
- Reviewed by Ossy.
-
- * DumpRenderTree/qt/fonts.conf: Add missing last-resort font fallback for Qt 5 where
- Qt relies on font-config to define the default font family.
-
-2012-01-10 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(r100130): Clean build feature is broken.
- https://bugs.webkit.org/show_bug.cgi?id=75863
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
-
-2012-01-10 Zeno Albisser <zeno@webkit.org>
-
- [Qt][WK2] Fix keyboard shortcuts in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=75885
-
- In QML events are propagated through parents. But since the
- WebView may consume key events, a shortcut might never reach
- the top QtQuickItem.
- Therefore an application wide event handling function in C++
- needs to take care of shortcuts for MiniBrowser.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::reload):
- (BrowserWindow::focusAddressBar):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-01-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Add --efl alias for --platform=efl to run-webkit-test
- https://bugs.webkit.org/show_bug.cgi?id=75937
-
- Reviewed by Andreas Kling.
-
- * Scripts/run-webkit-tests: Add --efl alias.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Add --efl alias.
- (parse_args):
-
-2012-01-09 Dan Bernstein <mitz@apple.com>
-
- -[DOMRange renderedImageForcingBlackText:] fails with non-user-selectable text
- https://bugs.webkit.org/show_bug.cgi?id=75920
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm:
- (TestWebKitAPI::TEST): Added a test for a range in a
- -webkit-user-select: none; block.
-
-2012-01-09 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy.layout_tests.port.mock_drt_unittest.MockChromiumDRTTest has been failing on cr-win
- https://bugs.webkit.org/show_bug.cgi?id=75884
-
- Reviewed by Ryosuke Niwa.
-
- Fix regression introduced (revealed?) in r104340. Chromium file
- url syntax is different on win32 and the test results weren't
- expecting that.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations._report_errors):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_parse_error_nonfatal):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTTest.input_line):
- (MockChromiumDRTTest.test_pixeltest__fails):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- (TestRebaseliner.make_rebaseliner):
- (TestRebaseliner.test_one_platform):
- (TestRebaseliner.test_all_platforms):
- (TestRebaseliner.test_png_file_with_comment):
- (TestRebaseliner.test_png_file_with_comment_remove_old_checksum):
- (TestRebaseliner.test_png_file_with_comment_as_duplicate):
- (TestRealMain.test_all_platforms):
-
-2012-01-09 Dirk Pranke <dpranke@chromium.org>
-
- Fix regression in test-webkitpy introduced by removing the webkitpy/python24 directory.
-
- Unreviewed, build fix.
-
- test-webkitpy had a built-in self-test routine to verify that
- deleting the .pyc files worked correctly. When I removed the
- python24 directory in r104482, I broke the self-test.
-
- I have deleted the self-test for now. Since I am reworking
- test-webkitpy I will make sure the new version is adequately
- tested.
-
- * Scripts/test-webkitpy:
- (configure_logging):
- (_clean_pyc_files):
- (_clean_packages):
- (init):
-
-2012-01-09 Justin Novosad <junov@chromium.org>
-
- [Chromium] remove all references to the legacy accelerated 2d Canvas
- implementation
- https://bugs.webkit.org/show_bug.cgi?id=75108
-
- Purging an old settings flag that is no longer referenced
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAccelerated2dCanvasEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2012-01-09 Adam Roben <aroben@apple.com>
-
- Convert Cygwin paths to Windows paths before passing them to DRT
-
- Fixes <http://webkit.org/b/64468> <rdar://problem/10663409> WIN: DumpRenderTree hangs under
- NRWT
-
- I couldn't find a way to test this because I couldn't figure out how to override the
- cygpath function as it is used by WebKitDriver.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._command_from_driver_input): On Cygwin, convert the test's path to a
- Windows-style path before passing it to DRT.
-
-2012-01-06 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: revamp version checking
- https://bugs.webkit.org/show_bug.cgi?id=75765
-
- Reviewed by Adam Barth.
-
- The version-checking code in webkitpy/python24/versioning seems really
- awkward and overdesigned, especially since we don't support python 2.4
- any more.
-
- In addition, I am tired of getting warnings about Python 2.6 being "a
- newer release than what is supported" :).
-
- I'm taking a page from the depot_tools python code and just creating a
- new webkitpy.common.version_check module that will print a message on
- stderr and call sys.exit() if we're running an unsupported version.
-
- * Scripts/check-webkit-style:
- * Scripts/new-run-webkit-httpd:
- * Scripts/new-run-webkit-tests:
- * Scripts/rebaseline-chromium-webkit-tests:
- * Scripts/test-webkitpy:
- (configure_logging):
- (init):
- * Scripts/webkit-patch:
- (main):
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._child_process_encoding):
- (Executive._should_encode_child_process_arguments):
- * Scripts/webkitpy/common/version_check.py: Copied from Tools/Scripts/rebaseline-chromium-webkit-tests.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/python24/__init__.py: Removed.
- * Scripts/webkitpy/python24/versioning.py: Removed.
- * Scripts/webkitpy/python24/versioning_unittest.py: Removed.
-
-2012-01-09 Adam Barth <abarth@webkit.org>
-
- Remove Chromium Mac CG from the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=75873
-
- Reviewed by Ojan Vafai.
-
- This configuration no longer exists.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testOverrideJustBuildType):
- (testPlatformAndBuildType):
-
-2012-01-06 Adam Roben <aroben@apple.com>
-
- Print an error message when NRWT can't run Apache
-
- Fixes <http://webkit.org/b/75712> NRWT mysteriously exits when Apache returns an error code
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.check_httpd): Print an error message when Apache returns an error code instead of
- failing silently.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_check_httpd_success): Test that we don't print anything when we successfully
- run Apache.
- (PortTest.test_httpd_returns_error_code): Test that we print an error message when Apache
- fails.
-
-2012-01-09 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [Gtk][ARM] Cross compiler buildbot is failing after r103040
- https://bugs.webkit.org/show_bug.cgi?id=75846
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
-
-2012-01-09 Alexander Færøy <ahf@0x90.dk>
-
- [Qt] Add support for dynamically enabling and disabling touch mocking in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=75807
-
- This patch adds a new icon to navigationbar of the Qt MiniBrowser
- which allows you to dynamically toggle whether touch mocking is
- enabled or disabled.
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- (WindowOptions::touchMockingEnabled):
- (WindowOptions::setTouchMockingEnabled):
- * MiniBrowser/qt/icons/touch.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-01-09 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck issues.
-
- * MiniBrowser/gtk/GNUmakefile.am:
-
-2012-01-08 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r104421.
- http://trac.webkit.org/changeset/104421
- https://bugs.webkit.org/show_bug.cgi?id=75816
-
- Need to rebaseline some tests on Linux (Requested by noamr on
- #webkit).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-08 Adam Barth <abarth@webkit.org>
-
- Remove support for Chromium Mac CG from garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=75814
-
- Reviewed by Eric Seidel.
-
- This configuration no longer exists. This patch is mostly a matter of
- updating config.js and removing the examples from the unit tests.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2012-01-08 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Enable CSS_FILTERS in Qt build
- https://bugs.webkit.org/show_bug.cgi?id=75777
-
- Add the CSS_FILTERS feature flag to Qt.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Categorize bots by ports instead of core/non-core separation
- https://bugs.webkit.org/show_bug.cgi?id=75766
-
- Reviewed by Eric Seidel.
-
- Rename categorizes so as to preserve the original ordering of bots per Eric's suggestion
- (Chromium still comes before GTK and Qt).
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2012-01-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove the concept of core builders from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=75809
-
- Reviewed by Ryosuke Niwa.
-
- Treat all bots equally since core/non-core sepration has been removed from build.webkit.org,
- and remove the relevant code.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot.__init__):
- (BuildBot._matches_regexps):
- (BuildBot._builder_statuses_with_names_matching_regexps):
- (BuildBot.builder_statuses):
- (BuildBot.failure_map):
- (BuildBot._latest_builds_from_builders):
- (BuildBot.last_green_revision):
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- (MockBuildBot.builder_statuses):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_status_parsing):
- (test_last_green_revision):
- (test_last_green_revision.mock_builds_from_builders):
-
-2012-01-08 Adam Barth <abarth@webkit.org>
-
- Remove Chromium Mac CG concept from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=75810
-
- Reviewed by Ryosuke Niwa.
-
- This configuration no longer exists. We can remove all the supporting
- code from webkitpy.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_move_baselines):
- (BaselineOptimizerTest.test_chromium_covers_mac_win_linux):
- (BaselineOptimizerTest.test_chromium_mac_redundant_with_apple_mac):
- (BaselineOptimizerTest.test_common_directory_includes_root):
- (BaselineOptimizerTest.test_complex_shadowing):
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build):
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (_default_tests_paths):
- (ChromiumGpuLinuxPort.tests):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- (ChromiumGpuTest.integration_test_chromium_gpu_mac):
- (ChromiumGpuTest.assert_port_works):
- (ChromiumGpuTest.test_baseline_paths):
- (ChromiumGpuTest.test_graphics_type):
- (ChromiumGpuTest.test_default_tests_paths):
- (ChromiumGpuTest.test_test_files):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- (ChromiumMacPort.__init__):
- (ChromiumMacPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_graphics_type):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._port_name_from_arguments_and_options):
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_chromium_gpu_mac):
- (FactoryTest.test_chromium_mac):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (GetGoogleChromePortTest._verify_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockChromiumDRTTest.test_chromium_parse_options):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- (test_url_fetcher):
- (test_zip_factory):
- (test_archive):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_expectations):
-
-2012-01-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Categorize bots by ports instead of core/non-core separation
- https://bugs.webkit.org/show_bug.cgi?id=75766
-
- Reviewed by Adam Barth.
-
- Get rid of the concept of core/non-core builders, and categorize build bots by ports instead.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2012-01-08 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r104403.
- http://trac.webkit.org/changeset/104403
- https://bugs.webkit.org/show_bug.cgi?id=75803
-
- It broke all tests on Qt5 (Requested by Ossy_weekend on
- #webkit).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-08 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Enable CSS_FILTERS in Qt build
- https://bugs.webkit.org/show_bug.cgi?id=75777
-
- Add the CSS_FILTERS feature flag to Qt.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-04 Kentaro Hara <haraken@chromium.org>
-
- Rewrite the CSS parser of prepare-ChangeLog with unittests.
- https://bugs.webkit.org/show_bug.cgi?id=75202
-
- Reviewed by David Kilzer.
-
- The current CSS parser can just parse simple CSSes like
-
- foo bar baz {
- property1: value;
- property2: value;
- }
-
- , and cannot parse comments nor a CSS in which a selector and {
- appears in different lines. This patch rewrites the CSS parser
- (i.e. get_selector_line_ranges_for_css()) so that it can parse more CSSes
- shown in css_unittests.css.
-
- Test: Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css
-
- * Scripts/prepare-ChangeLog:
- (get_selector_line_ranges_for_css):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css: Added.
- (element1):
- (element2):
- (element3):
- (element4.p):
- (element5.p.q.r.s):
- (element6#p):
- (element7 element8):
- (element9.p element10.q):
- (element11#p element12#q):
- (element13, element14):
- (.p):
- (#p):
- (.p element15 #q element16.r element17#s):
- (element18:target):
- (element19):
- (element20):
- (element21):
- (element22):
-
-2012-01-04 Kentaro Hara <haraken@chromium.org>
-
- The Perl parser of prepare-ChangeLog can parse here-documents
- https://bugs.webkit.org/show_bug.cgi?id=73208
-
- Reviewed by David Kilzer.
-
- Currently prepare-ChangeLog cannot recognize here-documents in Perl,
- which results in wrong subroutine names in ChangeLogs.
- With this patch, prepare-ChangeLog can judge whether the line of "}"
- is the end of a subroutine or a line inside a here-document.
-
- Test: Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_perl):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl:
- Added test cases for here-documents.
- (func7):
- (func8):
- (func9):
- (func10):
- (func11):
- (func12):
- (func13):
- (func14):
- (func15):
- (func16):
-
-2012-01-08 Kentaro Hara <haraken@chromium.org>
-
- Add unittests for the JavaScript parser of prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=75201
-
- Reviewed by David Kilzer.
-
- javascript_unittests.js is a unittest for get_function_line_ranges_for_javascript()
- of prepare-ChangeLog.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_javascript): Before this patch, a string found was just
- omitted from parsing. Thus,
-
- str = "foo"
- function func() {
- }
-
- was recognized as equivalent to
-
- str = function func() {
- }
-
- This patch replaces a string with a dummy identifier 'string_appeared_here'
- to tell the parser that a string appeared there.
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js: Added.
- (func1):
- (func2):
- (func3):
- (func4):
- (func5):
- (func6):
- (func7):
- (func8):
- (func9):
- (func10):
- (func11):
- (func12):
- (funcOverloaded):
- (Func1.prototype.get x1):
- (Func1.prototype.get x2):
- (Func1.prototype.set x1):
- (Func1.prototype.set x3):
- (Func2.prototype.func13):
- (Func2.prototype.func14):
- (Func2.prototype.func15):
- (func16.func17):
- (func16.func18):
- (func16.func19):
- (func16):
-
-2012-01-08 David Levin <levin@chromium.org>
-
- [chromium] Add layout test support for autosize code in FrameView.
- https://bugs.webkit.org/show_bug.cgi?id=73631
-
- Reviewed by Dmitry Titov.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Expose the new autoresize method.
- (LayoutTestController::reset): Set the autoresize mode back to false.
- (LayoutTestController::enableAutoResizeMode): A way to turn on autoresizing from javascript code in DumpRenderTree.
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didAutoResize): Handle the autoresize callback so that the outer bounds change appropriately.
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2012-01-07 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2][GTK] Each test takes roughly half a second to load
- https://bugs.webkit.org/show_bug.cgi?id=70699
-
- Reviewed by Martin Robinson.
-
- Set the XDG_CACHE_HOME environment variable when testing with
- WebKitTestRunner. This way the testing is started with a non-existing
- application cache. If the cache exists and is not empty, the emptying
- and vacuuming that is performed before every test can consume a lot of
- time.
-
- This is just a temporary workaround until it becomes possible to set
- a desired directory to be used as the application cache location through
- WebKitWebContext.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
-
-2012-01-07 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable requestAnimationFrame in build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=75773
-
- Reviewed by Martin Robinson.
-
- Enable requestAnimationFrame for the Gtk port.
-
- * Scripts/build-webkit:
-
-2012-01-06 Jarred Nicholls <jarred@sencha.com>
-
- Unreviewed build-webkit fix for Chromium to properly use make if gyp generates Makefiles.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
- Missing parentheses.
-
-2012-01-06 Simon Fraser <simon.fraser@apple.com>
-
- Fix DRT build on case-sensitive file systems.
-
- Fix case of include of WebDynamicScrollBarsView.h
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
-
-2012-01-06 Simon Fraser <simon.fraser@apple.com>
-
- Pixel results from DumpRenderTree and WebKitTestRunner don't match because of colorspace issues
- https://bugs.webkit.org/show_bug.cgi?id=75662
-
- Reviewed by Dan Bernstein.
-
- The pixel results generated by DumpRenderTree and WebKitTestRunner differed because
- of color profile issues. Fix by keeping everything in device RGB and ensuring that the
- test window uses the main display's color space, so that the pixel values in the bitmap
- that gets checksummed are identical to the CSS colors.
-
- Removed the code that switches the display profile in DRT, since that is no longer required.
-
- * DumpRenderTree/PixelDumpSupport.h: Remove unused function declarations.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (crashHandler): Remove code that switches display profiles.
- (prepareConsistentTestingEnvironment): Ditto.
- (dumpRenderTree): Ditto.
- * DumpRenderTree/mac/PixelDumpSupportMac.mm: Ditto.
- (createBitmapContext): Use DeviceRGB for the bitmap colorspace.
- (createBitmapContextFromWebView): Add comment about the colorspace handling.
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::createCGContextFromImage): Use a RetainPtr, add comment.
- (WTR::computeMD5HashStringForContext): Simplify the #ifdefs around the braces.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView): Set the window's colorspace to that of the main display.
- (WTR::PlatformWebView::windowSnapshotImage): Add comment about colorspaces.
-
-2012-01-06 David Kilzer <ddkilzer@apple.com>
-
- run-api-tests: specify individual suites and tests on the command-line
-
- Reviewed by Adam Roben.
-
- Fixes: <http://webkit.org/b/75065> run-api-tests should be able to run individual suites and tests
-
- The run-api-tests script will now accept a list of arguments on
- the command-line that are used as prefix filters. To run all
- tests in a suite that starts with "WTF" (WTF and WTF_Vector)
- use:
-
- $ run-api-tests WTF
-
- To run only the tests in the "WTF" suite, not the "WTF_Vector"
- suite, use:
-
- $ run-api-tests WTF.
-
- * Scripts/run-api-tests: Filter tests if any prefix arguments
- are passed on the command-line.
-
-2012-01-06 David Kilzer <ddkilzer@apple.com>
-
- run-api-tests: change internal representation of tests to array of "SuiteName.TestName" strings
-
- Reviewed by Adam Roben.
-
- Part of: <http://webkit.org/b/75065> run-api-tests should be able to run individual suites and tests
-
- * Scripts/run-api-tests:
- (dumpTestsBySuite): Update to accept array of tests instead of
- hash data structure.
- (runTestsBySuite): Ditto.
- (listAllTests): Rename from populateTests(). Update to return
- an array of tests instad of the hash data structure.
-
-2012-01-05 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up test/uri conversion routines
- https://bugs.webkit.org/show_bug.cgi?id=75648
-
- Reviewed by Eric Seidel.
-
- This change moves test_to_uri and uri_to_test from the Port
- class to the Driver class (the routines were only being
- called by the drivers), and removes a bunch of stale and/or
- busted logic.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (is_http_test):
- (test_to_uri):
- (uri_to_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (run_one_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTTest.input_line):
- (input_line):
- (expected_output):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (_command_from_driver_input):
-
-2012-01-06 Simon Fraser <simon.fraser@apple.com>
-
- Mitigate scrollbar differences when running pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=67217
-
- Reviewed by Dan Bernstein.
-
- Add an NSScroller subclass that draws mock scrollbars identically
- to the WebCore mock scrollbar theme, and register it with the
- WebDynamicScrollbarsView.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (-[DRTMockScroller rectForPart:]):
- (-[DRTMockScroller drawKnob]):
- (-[DRTMockScroller drawRect:]):
- (registerMockScrollbars):
- (prepareConsistentTestingEnvironment):
-
-2012-01-05 Jon Lee <jonlee@apple.com>
-
- Update DRT on Mac to draw resize handles on text areas.
-
- Reviewed by John Sullivan.
-
- Enable resize handles on text areas so that we don't have to create two different sets of pixel test results,
- between WK1 and WK2. This will require rebaselining existing textarea pixel tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2012-01-06 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Move listing of include paths and libs to pri files in sources
-
- Includepaths are sometimes modified by non-Qt contributors so keeping
- them in files inside Sources makes it more likely that they are updated
- along with project files for the other ports.
-
- Using pri files instead of prf files for this also has the benefit that
- the include() from the main target file can be parsed and followed by
- Qt Creator -- something that does not work with load().
-
- Dependency from a target to a library through the WEBKIT variable are
- handled through forwarding-files in Tools/qmake/mkspecs/modules, which
- set the source root of the module and include the right pri file.
-
- Ideally we'd use the variant of include() that takes an optional
- namespace to read the variables into, or the fromfile() function,
- but both of these add an overhead of about 40% on the total qmake
- runtime, due to making a deep copy of all the variables in the
- project or re-reading all the prf files from scratch.
-
- Reviewed by Simon Hausmann.
- Reviewed by Ossy.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/modules/javascriptcore.prf: Added.
- * qmake/mkspecs/modules/webcore.prf: Added.
- * qmake/mkspecs/modules/webkit2.prf: Added.
- * qmake/mkspecs/modules/wtf.prf: Added.
-
-2012-01-06 JungJik Lee <jungjik.lee@samsung.com>
-
- [EFL] Add pre-render handling code in EWebLauncher.
- https://bugs.webkit.org/show_bug.cgi?id=73430
-
- Reviewed by Zoltan Herczeg.
-
- Add pre-render handling code by pressing Insert key.
-
- * EWebLauncher/main.c:
- (on_key_down):
-
-2012-01-06 Csaba Osztrogonác <ossy@webkit.org>
-
- NRWT should use test_expectation.txt on wk2 platforms
- https://bugs.webkit.org/show_bug.cgi?id=75417
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (path_to_test_expectations_file):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_path_to_test_expectations_file):
-
-2012-01-05 Jochen Eisinger <jochen@chromium.org>
-
- Don't hardcode expected file URIs in as they depend on the platform
- https://bugs.webkit.org/show_bug.cgi?id=75666
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.show_results_html_file):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_unexpected_failures):
- (MainTest.test_results_directory_default):
- (MainTest.test_results_directory_relative):
-
-2012-01-05 Anders Carlsson <andersca@apple.com>
-
- Crash when trying to invalidate the NPRuntimeObjectMap for a plug-in in a subframe
- https://bugs.webkit.org/show_bug.cgi?id=75667
- <rdar://problem/10389454>
-
- Reviewed by Kevin Decker.
-
- Add an evaluate method to the plug-in test scriptable object that can be used to evaluate a given JS string.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::executeScript):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp:
- (NPRuntimeObjectFromDestroyedPlugin::ScriptableObject::hasMethod):
- (NPRuntimeObjectFromDestroyedPlugin::ScriptableObject::invoke):
- (NPRuntimeObjectFromDestroyedPlugin::ScriptableObject::hasProperty):
-
-2012-01-05 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up port factory methods
- https://bugs.webkit.org/show_bug.cgi?id=75590
-
- Reviewed by Eric Seidel.
-
- This change consolidates much of the "factory method" logic
- of determining which port objects to create for a given set
- of configurations by merging the separate factory methods in
- chromium_gpu and google_chrome into PortFactory so that at least
- all of the logic is in one place.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (_port_name_from_arguments_and_options):
- (get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (test_google_chrome):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (GoogleChromeLinux32Port):
- (GoogleChromeLinux32Port.baseline_search_path):
- (test_expectations_overrides):
- (architecture):
- (GoogleChromeLinux64Port):
- (GoogleChromeLinux64Port.baseline_search_path):
- (GoogleChromeMacPort):
- (GoogleChromeMacPort.baseline_search_path):
- (GoogleChromeWinPort):
- (GoogleChromeWinPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (_verify_baseline_path):
-
-2012-01-05 Jochen Eisinger <jochen@chromium.org>
-
- Replace webkitpy.common.system.filesystem.file_path_as_url with webkitpy.common.system.path.abspath_to_uri
- https://bugs.webkit.org/show_bug.cgi?id=75617
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem.exists):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.exists):
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- (GenericFileSystemTests.teardown_generic_test_dir):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.show_results_html_file):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_results_directory_absolute):
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Remove some unnecessary code from old-run-webkit-tests
-
- Thanks to r104187/r104188, we no longer need to set PATH before launching DumpRenderTree or
- WebKitTestRunner.
-
- Fixes <http://webkit.org/b/75640> ORWT unnecessarily sets PATH before launching DRT/WTR on
- Windows
-
- Reviewed by Eric Seidel.
-
- * Scripts/old-run-webkit-tests:
- (top level):
- (openDumpTool):
- Removed calls to setPathForRunningWebKitApp.
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Teach NRWT to use run-safari to open results.html on Apple's Windows port
-
- NRWT was trying to use User.open_url, which doesn't work on Cygwin. But run-safari is
- better, since we always want to open results.html using the user's build of WebKit, not
- whatever their default browser is.
-
- Fixes <http://webkit.org/b/75629> <rdar://problem/10648621> NRWT fails to open results.html
- for Apple's Windows port
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.show_results_html_file): Changed to use run_safari, like MacPort does. Also removed
- an obsolete comment.
-
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_show_results_html_file): Updated expected results.
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Prepend Safari.exe's path to the command-line passed to CreateProcess
-
- Safari expects the first argument in the command-line to be the path to Safari.exe itself.
- This is how things get set up when Safari is launched normally (e.g., by Explorer). Safari
- thus ignores the first argument when looking for command-line arguments. WebKitLauncherWin
- was not including the path to Safari.exe in the command-line, so Safari was ignoring the
- first argument that WebKitLauncherWin was trying to pass to it.
-
- Fixes <http://webkit.org/b/56571> First argument passed to WebKit.exe is ignored by Safari
-
- Reviewed by Steve Falkenburg.
-
- * WebKitLauncherWin/WebKitLauncherWin.cpp:
- (_tWinMain): Construct a command-line for CreateProcess that first contains a double-quoted
- path to Safari.exe, then contains any arguments that were passed to WebKitLauncherWin.
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Stop using explicit memory management in WebKitLauncherWin
-
- We now use stack-allocated STL objects instead.
-
- Prep work for <http://webkit.org/b/56571> First argument passed to WebKit.exe is ignored by
- Safari
-
- Reviewed by Steve Falkenburg.
-
- * WebKitLauncherWin/WebKitLauncherWin.cpp:
- (getStringValue):
- (applePathFromRegistry):
- (safariInstallDir):
- (safariBrowserExe):
- (_tWinMain):
- Changed to use stack-allocated STL objects instead of malloc/free.
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Turn WebKitTestRunner into a stub .exe launcher and a .dll that contains all the real code
-
- This allows us to add the Safari and Apple Application Support directories to PATH before
- trying to load WebKit so that SafariTheme.dll, CoreGraphics.dll and friends can be found.
-
- Fixes <http://webkit.org/b/75486> <rdar://problem/10638124> NRWT fails to launch Apple's
- Windows port of DumpRenderTree/WebKitTestRunner
-
- Reviewed by Steve Falkenburg.
-
- * WebKitTestRunner/WebKitTestRunner.sln: Added WebKitTestRunnerLauncher and
- ImageDiffLauncher, which I forgot to add to this .sln when that project was created.
-
- * WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- Changed to build WebKitTestRunner.dll instead of WebKitTestRunner.exe.
-
- * WebKitTestRunner/win/WebKitTestRunnerLauncher.vcproj: Copied from
- Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj but changed to build
- the stub launcher.
-
- * WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops: Added.
-
- * WebKitTestRunner/win/main.cpp:
- (dllLauncherEntryPoint): Renamed from main. This is what the stub launcher calls.
-
-2012-01-05 Adam Roben <aroben@apple.com>
-
- Turn DumpRenderTree into a stub .exe launcher and a .dll that contains all the real code
-
- This allows us to add the Safari and Apple Application Support directories to PATH before
- trying to load WebKit so that SafariTheme.dll, CoreGraphics.dll and friends can be found.
-
- Part of <http://webkit.org/b/75486> <rdar://problem/10638124> NRWT fails to launch Apple's
- Windows port of DumpRenderTree/WebKitTestRunner
-
- Reviewed by Steve Falkenburg.
-
- * DumpRenderTree/DumpRenderTree.sln: Added DumpRenderTreeLauncher and ImageDiffLauncher,
- which I forgot to add to this .sln when that project was created.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dllLauncherEntryPoint): Renamed from main. This is what the stub launcher calls.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops:
- Changed to build DumpRenderTree.dll instead of DumpRenderTree.exe.
-
- * DumpRenderTree/win/DumpRenderTreeLauncher.vcproj: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherCommon.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebug.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebugAll.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebugCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherProduction.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherRelease.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeLauncherReleaseCairoCFLite.vsprops: Added.
-
- * win/DLLLauncher/DLLLauncherMain.cpp:
- (modifyPath): Moved code to modify PATH here from main/wWinMain. Changed to also prepend
- Safari's directory to PATH so that SafariTheme.dll can be found.
-
- (main):
- (wWinMain):
- Changed to use the new modifyPath function.
-
-2012-01-05 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Never enable FontConfig on Mac OS X
- https://bugs.webkit.org/show_bug.cgi?id=75616
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-01-05 Alpha Lam <hclam@chromium.org>
-
- Unreviewed, rolling out r104159.
- http://trac.webkit.org/changeset/104159
- https://bugs.webkit.org/show_bug.cgi?id=75590
-
- Chromium port GPU tests cannot be executed.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (get):
- (_default_tests_paths):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- (ChromiumGpuTest.assert_port_works):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._port_name_from_arguments_and_options):
- (PortFactory):
- (PortFactory._get_kwargs):
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_google_chrome.names):
- (FactoryTest.test_google_chrome):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (GetGoogleChromePort):
- (GetGoogleChromePort.GoogleChromeLinux32Port):
- (GetGoogleChromePort.GoogleChromeLinux32Port.baseline_search_path):
- (GetGoogleChromePort.GoogleChromeLinux32Port.test_expectations_overrides):
- (GetGoogleChromePort.GoogleChromeLinux32Port.architecture):
- (GetGoogleChromePort.GoogleChromeLinux64Port):
- (GetGoogleChromePort.GoogleChromeLinux64Port.baseline_search_path):
- (GetGoogleChromePort.GoogleChromeLinux64Port.test_expectations_overrides):
- (GetGoogleChromePort.GoogleChromeLinux64Port.architecture):
- (GetGoogleChromePort.GoogleChromeMacPort):
- (GetGoogleChromePort.GoogleChromeMacPort.baseline_search_path):
- (GetGoogleChromePort.GoogleChromeMacPort.test_expectations_overrides):
- (GetGoogleChromePort.GoogleChromeWinPort):
- (GetGoogleChromePort.GoogleChromeWinPort.baseline_search_path):
- (GetGoogleChromePort.GoogleChromeWinPort.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (GetGoogleChromePortTest._verify_baseline_path):
- (GetGoogleChromePortTest._verify_expectations_overrides):
-
-2012-01-05 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up port factory methods
- https://bugs.webkit.org/show_bug.cgi?id=75590
-
- Reviewed by Eric Seidel.
-
- This change consolidates much of the "factory method" logic
- of determining which port objects to create for a given set
- of configurations by merging the separate factory methods in
- chromium_gpu and google_chrome into PortFactory so that at least
- all of the logic is in one place.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (_port_name_from_arguments_and_options):
- (get):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (test_google_chrome):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (GoogleChromeLinux32Port):
- (GoogleChromeLinux32Port.baseline_search_path):
- (test_expectations_overrides):
- (architecture):
- (GoogleChromeLinux64Port):
- (GoogleChromeLinux64Port.baseline_search_path):
- (GoogleChromeMacPort):
- (GoogleChromeMacPort.baseline_search_path):
- (GoogleChromeWinPort):
- (GoogleChromeWinPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (_verify_baseline_path):
-
-2012-01-04 Adam Roben <aroben@apple.com>
-
- Turn ImageDiff into a stub .exe launcher and a .dll that contains all the real code
-
- This allows us to add the Apple Application Support directory to PATH before trying to load
- WebKit so that CoreGraphics.dll and friends can be found.
-
- Fixes <http://webkit.org/b/75572> ImageDiff.exe can't be run without first munging PATH
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/ImageDiffCommon.vsprops:
- Changed to build ImageDiff.dll instead of ImageDiff.exe.
-
- * DumpRenderTree/win/ImageDiffLauncher.vcproj: Copied from
- Tools/DumpRenderTree/win/ImageDiff.vcproj but changed to build the stub launcher.
-
- * DumpRenderTree/win/ImageDiffLauncherCommon.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherDebug.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherDebugAll.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherDebugCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherProduction.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherRelease.vsprops: Added.
- * DumpRenderTree/win/ImageDiffLauncherReleaseCairoCFLite.vsprops: Added.
-
- * DumpRenderTree/win/ImageDiffWin.cpp: Added.
- (dllLauncherEntryPoint): This function is called by the stub launcher and just calls through
- to main.
-
- * win/DLLLauncher/DLLLauncherMain.cpp:
- (main):
- (wWinMain):
- Added support for launching console programs. When USE_CONSOLE_ENTRY_POINT is defined, the
- stub launcher acts as a console program and calls a console version of
- dllLauncherEntryPoint.
-
-2012-01-04 Adam Roben <aroben@apple.com>
-
- Turn MiniBrowser into a stub .exe launcher and a .dll that contains all the real code
-
- This allows us to add the Apple Application Support directory to PATH before trying to load
- WebKit so that CoreGraphics.dll and friends can be found.
-
- Fixes <http://webkit.org/b/68576> <rdar://problem/10163853> MiniBrowser fails to launch when
- double-clicked
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/MiniBrowser.vcproj:
- * MiniBrowser/Configurations/MiniBrowserCommon.vsprops:
- Changed to build MiniBrowser.dll instead of MiniBrowser.exe.
-
- * MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops: Added.
-
- * MiniBrowser/MiniBrowserLauncher.vcproj: Copied from Tools/MiniBrowser/MiniBrowser.vcproj
- but changed to build the stub launcher.
-
- * MiniBrowser/win/main.cpp: Moved the /manifestdependency code to DLLLauncherMain.cpp, since
- it needs to be compiled into the .exe instead of the .dll.
- (DllMain): Added. We use this to store the DLL's HINSTANCE.
- (dllLauncherEntryPoint): Renamed from _tWinMain. This is what gets called by the
- DLLLauncherMain code.
-
- * win/DLLLauncher/DLLLauncherMain.cpp: Moved the /manifestdependency code from MiniBrowser
- to here.
-
-2012-01-04 Adam Roben <aroben@apple.com>
-
- Make WinLauncher's window frame respond to clicks/drags again
-
- Fixes <http://webkit.org/b/75562> REGRESSION (r84990): Can't drag WinLauncher by its title
- bar when Aero is disabled
-
- Reviewed by Brent Fulgham.
-
- * WinLauncher/WinLauncher.cpp:
- (WndProc): Always call up to our parent wndproc when we don't handle WM_NCHITTEST ourselves.
- Also removed an unnecessary "break" keyword.
-
-2012-01-04 Adam Roben <aroben@apple.com>
-
- Turn WinLauncher into a stub .exe launcher and a .dll that contains all the real code
-
- This allows us to add the Apple Application Support directory to PATH before trying to load
- WebKit so that CoreGraphics.dll and friends can be found. Eventually all our WebKit apps
- should use this mechanism.
-
- Fixes <http://webkit.org/b/68578> <rdar://problem/10163861> WinLauncher fails to launch when
- double-clicked
-
- Reviewed by Anders Carlsson.
-
- * WinLauncher/WinLauncher.cpp: Removed InitInstance.
- (DllMain): Added. Stores the DLL HINSTANCE in the global hInst variable. This used to be
- done by the now-removed InitInstance function.
- (dllLauncherEntryPoint): Renamed from _tWinMain. This is the function that our stub launcher
- calls. Merged code from InitInstance into this function, and change to use the global hInst
- variable, which corresponds to WinLauncher.dll, rather than the HINSTANCE passed into this
- function, which corresponds to WinLauncher.exe.
-
- * WinLauncher/WinLauncher.vcproj:
- * WinLauncher/WinLauncherCommon.vsprops:
- Changed to build WinLauncher.dll instead of WinLauncher.exe.
-
- * WinLauncher/WinLauncherLauncher.rc: Added.
- * WinLauncher/WinLauncherLauncherResource.h: Added.
- This just references the WinLauncher.ico file to set the application icon (though it looks
- like that's a default icon).
-
- * WinLauncher/WinLauncherLauncher.vcproj: Copied from Tools/WinLauncher/WinLauncher.vcproj
- but changed to build WinLauncher.exe using the new DLLLauncherMain.cpp file.
-
- * WinLauncher/WinLauncherLauncherCommon.vsprops: Added.
- * WinLauncher/WinLauncherLauncherDebug.vsprops: Added.
- * WinLauncher/WinLauncherLauncherDebugAll.vsprops: Added.
- * WinLauncher/WinLauncherLauncherDebugCairoCFLite.vsprops: Added.
- * WinLauncher/WinLauncherLauncherProduction.vsprops: Added.
- * WinLauncher/WinLauncherLauncherRelease.vsprops: Added.
- * WinLauncher/WinLauncherLauncherReleaseCairoCFLite.vsprops: Added.
-
- * win/DLLLauncher/DLLLauncherMain.cpp: Added.
- (enableTerminationOnHeapCorruption): Uses HeapSetInformation to tell Windows to kill the
- program if it detects heap corruption.
- (getStringValue): Helper function to read a string value from the registry.
- (applePathFromRegistry): Helper function to read the InstallDir for a given Apple
- application from the registry.
- (appleApplicationSupportDirectory): Helper function to return the path to the Apple
- Application Support directory.
- (copyEnvironmentVariable): Helper function to copy an environment variable's value.
- (prependPath): Helper function to prepend a directory to the PATH.
- (fatalError): Helper function to display an error to the user.
- (wWinMain): Add Apple Application Support to the PATH, then load our DLL and call its
- dllLauncherEntryPoint function.
-
-2012-01-05 Kentaro Hara <haraken@chromium.org>
-
- prepare-ChangeLog cannot parse python code that nests classes and defs
- https://bugs.webkit.org/show_bug.cgi?id=75524
-
- Reviewed by Ryosuke Niwa.
-
- This patch fixes the python parser of prepare-ChangeLog so that it can parse
- python code that nests classes and defs, like this:
-
- class C:
- pass
- def f():
- pass
- pass
-
- Also, this patch fixes the python parser so that it inserts a dummy line
- at the end of the file to pop out all popped scopes.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_python):
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py:
- Added test cases that nest classes and defs.
- (func7):
- (func7.func8):
- (func7.func8.func9):
- (Class2):
- (Class2.Class3):
- (Class2.Class3.Class4):
- (Class5):
- (Class5.func10):
- (Class5.func11):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt:
-
-2012-01-05 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Rename webkit_web_view_load_alternate_html as webkit_web_view_replace_content in WebKit2 GTK+
- https://bugs.webkit.org/show_bug.cgi?id=75433
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewLoadFailed): Reset the progress bar when load fails.
- (browserWindowConstructed): Connect to load-failed signal.
-
-2012-01-04 Dan Bernstein <mitz@apple.com>
-
- Add a --target-web-process option to the debug-* scripts. When specified, the scripts will
- start WebProcess under gdb and WebProcess will then run the client executable.
-
- This is the Tools part of fixing <http://webkit.org/b/75444> Debugging WebProcess requires running a UI process first and waiting to attach
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (shouldTargetWebProcess): Added.
- (determineShouldTargetWebProcess): Added. Checks for --target-web-process.
- (execMacWebKitAppForDebugging): Changed to target gdb at WebProcess and pass the path to the
- app using the -client-executable option if targeting the web process.
-
-2012-01-04 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- Adding myself to committers list.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-01-04 David Kilzer <ddkilzer@apple.com>
-
- Revert fix for Bug 75064: TestWebKitAPI: initialize the main thread before running tests
-
- This reverts commit r103546.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
-
-2012-01-04 James Robinson <jamesr@chromium.org>
-
- [chromium] Move WebMimeRegistry and dependencies to Source/Platform
- https://bugs.webkit.org/show_bug.cgi?id=74583
-
- Reviewed by Darin Fisher.
-
- Teaches the WEBKIT_EXPORT check about the chromium WebKit platform API header location.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_function_definition):
-
-2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix link order of static libraries and unbreak QtWin32
-
- We were keeping the correct static link order between the intermediate
- WebKit libraries, but not the internal dependencies for each of those
- libraries. The load() will in some instances mess with LIBS, so we need
- to ensure that the dependent libraries are added after the library we
- are linking against.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Introduce new qmake variable 'WEBKIT' for signaling dependencies
-
- The custom qmake variable 'WEBKIT' is used for signaling that a
- target depends in some way on other subproject of the WebKit
- project. For now this is limited to the set of intermediate
- libraries: wtf, javascriptcore, webcore, and webkit2.
-
- This replaces the previous convension of using load(foo) for
- just include paths, and CONFIG += foo to also link against foo.
-
- Adding a dependency results in additional include paths being
- available, and potentially linking to the library. This is
- decided by the build system based on conditions such as what
- kind of target is being built and the general build config.
-
- An advantage to his approach is that it simplifies the individual
- foo.prf files, for example by allowing us to use INCLUDEPATH +=
- and LIBS += as normal instead of prepending.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/README:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/javascriptcore.prf:
- * qmake/mkspecs/features/qtwebkit.prf:
- * qmake/mkspecs/features/webcore.prf:
- * qmake/mkspecs/features/webkit2.prf:
- * qmake/mkspecs/features/wtf.prf:
-
-2012-01-04 Alexander Færøy <ahf@0x90.dk>
-
- [Qt] Add UI for JavaScript Prompt dialog in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=75488
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/Dialog.qml:
- * MiniBrowser/qt/qml/DialogLineInput.qml: Copied from Tools/MiniBrowser/qt/qml/Dialog.qml.
- * MiniBrowser/qt/qml/PromptDialog.qml: Copied from Tools/MiniBrowser/qt/qml/Dialog.qml.
-
-2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use rpath for WTR's InjectedBundle to pick up the right QtWebKit
-
- It wasn't really a problem at runtime since the right QtWebKit was
- already loaded as a dependency of the web process, but the ldd output
- would still be busted.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/InjectedBundle/Target.pri:
-
-2012-01-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Move use of $$qtLibraryTarget() to a single place
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/webcore.prf:
-
-2012-01-04 Mary Wu <mary.wu@torchmobile.com.cn>
-
- Enable DOWNLOAD_ATTRIBUTE in BlackBerry porting
- https://bugs.webkit.org/show_bug.cgi?id=75238
-
- Reviewed by Antonio Gomes.
-
- Add ENABLE_DOWNLOAD_ATTRIBUTE webkit feature into the build script so that
- it could initiate download directly if it has the download attribute in the link
- and doesn't need to open new blank page for the target="_blank". Enabling this
- feature in the BlackBerry porting also prepares for later blob feature implementation.
-
- * Scripts/build-webkit: Modified to handle ENABLE_DOWNLOAD_ATTRIBUTE. Make it default on
- for the BlackBerry porting.
-
-2012-01-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Fix a runtime warning when hovering hyperlink auditing setting in MiniBroweser settings dialog
- https://bugs.webkit.org/show_bug.cgi?id=75475
-
- Reviewed by Martin Robinson.
-
- The problem is that the property blurb contains <a ping> and tree
- view uses gtk_tooltip_set_markup() internally, so we need to
- escape the text.
-
- * MiniBrowser/gtk/BrowserSettingsDialog.c:
- (browserSettingsDialogConstructed): Escape property blurb before
- storing it in the GtkTreeModel.
-
-2012-01-03 Jochen Eisinger <jochen@chromium.org>
-
- When showing results.html pass a correct URL to webbrowser.open
- https://bugs.webkit.org/show_bug.cgi?id=75438
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- (file_path_as_url):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (file_path_as_url):
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- (test_file_path_as_url):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (test_results_directory_relative):
-
-2012-01-03 Ojan Vafai <ojan@chromium.org>
-
- shrink the header on the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=65153
-
- Reviewed by Adam Roben.
-
- Move some of the "show" links to be to the right of the header
- instead of below the header when they content they're showing
- is hidden. That way we don't waste vertical space on them.
-
- No new tests. This code is covered by existing tests.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2012-01-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a tool to analyze change logs
- https://bugs.webkit.org/show_bug.cgi?id=72243
-
- Reviewed by Eric Seidel.
-
- Add the initial implementation of analyze-changelog command. This version supports parsing multiple changelogs
- in a single directory and summarizes the result in json files. It also copies summary.html to the output directory
- for visualizing json files.
-
- Usage: webkit-patch analyze-changelog [--changelog-count N] <CHANGELOG_DIR> <OUTPUT_DIR>
- where CHANGELOG_DIR is the directory to look for changelogs, OUTPUT_DIR is the directory into which the tool
- generates json files, and N is the number of changelogs to parse.
-
- * Scripts/webkitpy/common/config/contributionareas.py: Added names().
- * Scripts/webkitpy/common/system/filesystem_mock.py: Added readline and iterator support to ReadableTextFileObject.
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/analyzechangelog.py: Added.
- * Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/data/summary.html: Added.
- * Scripts/webkitpy/tool/steps/options.py:
-
-2012-01-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a tool to analyze change logs
- https://bugs.webkit.org/show_bug.cgi?id=72243
-
- Reviewed by Eric Seidel.
-
- Add the initial implementation of analyze-changelog command. This version supports parsing multiple changelogs
- in a single directory and summarizes the result in json files. It also copies summary.html to the output directory
- for visualizing json files.
-
- Usage: webkit-patch analyze-changelog [--changelog-count N] <CHANGELOG_DIR> <OUTPUT_DIR>
- where CHANGELOG_DIR is the directory to look for changelogs, OUTPUT_DIR is the directory into which the tool
- generates json files, and N is the number of changelogs to parse.
-
- * Scripts/webkitpy/common/config/contributionareas.py: Added names().
- * Scripts/webkitpy/common/system/filesystem_mock.py: Added readline and iterator support to ReadableTextFileObject.
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/analyzechangelog.py: Added.
- * Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/data/summary.html: Added.
- * Scripts/webkitpy/tool/steps/options.py:
-
-2012-01-03 Adam Roben <aroben@apple.com>
-
- Make Port subclasses override the operating_system method rather than setting an attribute
-
- Without this patch, any use of Port.operating_system() within a port's __init__ method would
- return the default value ("mac"). This was confusing the version-checking logic inside
- ApplePort.__init__ on Windows.
-
- Fixes <http://webkit.org/b/75479> <rdar://problem/10637385> REGRESSION (r102161): NRWT
- crashes on launch on Windows 7 SP1
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__): Replaced uses of self._operating_system with self.operating_system().
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__): Removed code that set the self._operating_system attribute. Subclasses
- should now override the operating_system method instead.
- (Port.operating_system): Changed to always return "mac". Subclasses should override to
- return something else.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.__init__):
- (ChromiumLinuxPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- (ChromiumMacPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.__init__):
- (ChromiumWinPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.__init__):
- (MacPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.__init__):
- (WinPort.operating_system):
- Changed to override the operating_system method rather than setting the _operating_system
- attribute, since setting the attribute isn't sufficient for code inside __init__ methods.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.__init__):
- (QtPort._path_to_webcore_library):
- Changed to use self.operating_system() instead of self._operating_system, for consistency
- with other Port-related code.
-
- (QtPort.operating_system): Added this override of Port.operating_system that returns the
- value we determined in our __init__ method.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.operating_system): Added this override of Port.operating_system that returns the
- value we determined in our __init__ method.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_operating_system):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_operating_system):
- Test that all ports return the expected operating system string.
-
-2012-01-03 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] run-gtk-test should ignore files with names without a "test" or "Test" prefix
- https://bugs.webkit.org/show_bug.cgi?id=75474
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests: Ignore files whose name does not start
- with a "test" (for WK1's API tests) or a "Test" prefix (for WK2).
-
-2012-01-03 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Add UI for JavaScript Confirmation dialog in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=75472
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ConfirmDialog.qml: Added.
-
-2012-01-03 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Add UI for JavaScript Alert dialog in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=75471
-
- Reviewed by Tor Arne Vestbø.
-
- Add simple UI for JavaScript Alert dialogs. This patch also adds a
- simple DialogButton QML type and a Dialog QML type which will be
- reusable for other JavaScript dialogs.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/AlertDialog.qml: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/Dialog.qml: Added.
- * MiniBrowser/qt/qml/DialogButton.qml: Added.
-
-2012-01-03 Rafael Brandao <rafael.lobo@openbossa.org>
-
- [Qt][WK2] MiniBrowser doesn't show url bar
- https://bugs.webkit.org/show_bug.cgi?id=75470
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml: Remove clipping until it is fixed
- on QtDeclarative (QTBUG-23422).
-
-2012-01-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Simplify loader client WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=74605
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/generate-gtkdoc: Ignore WebKitWebLoaderClient since it's now
- private API.
-
-2012-01-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Clean up detection of fontconfig
-
- We decide in features.prf whether or not fontconfig is available, and
- set the HAVE_FONTCONFIG define accordingly. All leaf project files
- should use this define to decide whether or not to link against
- fontconfig, not do their own detection.
-
- We don't need to add link_pkgconfig to CONFIG in each project file,
- as we selectivly enable that configuration in defaults_post when
- needed.
-
- Reviewed by Ossy.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/unix/default_post.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
-
-2012-01-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Introduce qmake replace function for the active build config
-
- Reviewed by Ossy.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-01-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Use gdk_screen_get_monitor_workarea() when available for screenAvailableRect()
- https://bugs.webkit.org/show_bug.cgi?id=75435
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Make sure DRT links to X11.
- * WebKitTestRunner/GNUmakefile.am: Make sure WTR links to X11.
-
-2011-12-04 Philippe Normand <pnormand@igalia.com>
-
- [WK2][GTK] WebSettings support in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=73773
-
- Reviewed by Martin Robinson.
-
- Patch heavily inspired from the WebKit GtkLauncher to support
- command-line WebSettings. Example: --enable-fullscreen=TRUE.
- The full list of options can be consulted with --help-websettings.
-
- * MiniBrowser/gtk/main.c:
- (loadURI):
- (parseOptionEntryCallback):
- (isValidParameterType):
- (getOptionEntriesFromWebKitSettings):
- (addSettingsGroupToContext):
- (main):
-
-2012-01-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] GtkLauncher settings improvements
- https://bugs.webkit.org/show_bug.cgi?id=75439
-
- Reviewed by Martin Robinson.
-
- * GtkLauncher/main.c:
- (filenameToURL): We can use NULL in C.
- (isValidParameterType): Utility function to filter GParamTypes
- that can be edited.
- (getOptionEntriesFromWebKitWebSettings): Avoid handling
- construct-only properties and use the isValidParameterType
- function. Makes the code a bit cleaner.
-
-2012-01-02 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Remove whitespace/declaration style exception
- https://bugs.webkit.org/show_bug.cgi?id=75424
-
- Reviewed by David Levin.
-
- Remove *whitespace/eclaration* style rule. However, EWebLauncher and MiniBrowser are EFL simple
- application. So, they still need to use EFL coding style.
-
- * Scripts/webkitpy/style/checker.py:
-
-2012-01-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add a way to change web view settings in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=71568
-
- Reviewed by Philippe Normand.
-
- Add a preferences button to the toolbar that shows a dialog to
- change settings of the current web view. It uses a GtkTreeView
- with a custom cell renderer to support multiple types of values.
-
- * MiniBrowser/gtk/BrowserCellRendererVariant.c: Added.
- (browserCellRendererVariantFinalize):
- (browserCellRendererVariantGetProperty):
- (browserCellRendererVariantSetModeForValue):
- (browserCellRendererVariantSetProperty):
- (browserCellRendererVariantGetRendererForValue):
- (browserCellRendererVariantCellRendererTextEdited):
- (browserCellRendererVariantCellRendererSpinEdited):
- (browserCellRendererVariantCellRendererActivate):
- (browserCellRendererVariantCellRendererRender):
- (browserCellRendererVariantCellRendererStartEditing):
- (browserCellRendererVariantCellRendererGetPreferredWidth):
- (browserCellRendererVariantCellRendererGetPreferredHeight):
- (browserCellRendererVariantCellRendererGetPreferredWidthForHeight):
- (browserCellRendererVariantCellRendererGetPreferredHeightForWidth):
- (browserCellRendererVariantCellRendererGetAlignedArea):
- (browser_cell_renderer_variant_init):
- (browser_cell_renderer_variant_class_init):
- (browser_cell_renderer_variant_new):
- * MiniBrowser/gtk/BrowserCellRendererVariant.h: Added.
- * MiniBrowser/gtk/BrowserSettingsDialog.c: Added.
- (cellRendererChanged):
- (browserSettingsDialogSetProperty):
- (browser_settings_dialog_init):
- (browserSettingsDialogConstructed):
- (browser_settings_dialog_class_init):
- (browser_settings_dialog_new):
- * MiniBrowser/gtk/BrowserSettingsDialog.h: Added.
- * MiniBrowser/gtk/BrowserWindow.c:
- (settingsCallback):
- (browser_window_init):
- * MiniBrowser/gtk/GNUmakefile.am:
- * MiniBrowser/gtk/browser-marshal.list: Added.
-
-2012-01-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Implement create/ready-to-show/close signals in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=74711
-
- Reviewed by Philippe Normand.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewClose): Destroy the window.
- (webViewReadyToShow): Use WindowProperties of the new view to
- setup and show the window.
- (webViewCreate): Create a new view and add it to a browser window.
- (browser_window_init):
- (browserWindowConstructed): Connect to WebKitWebView::create signal.
-
-2011-12-31 Dan Bernstein <mitz@apple.com>
-
- MiniBrowser sets the WKView’s frame incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=75393
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj: Removed Make Launchable build phase,
- which is not needed since the binray is linked with the frameworks search path set to the
- built products directory.
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Changed to set the WKView’s frame to its
- container’s bounds rather than its frame.
- * MiniBrowser/mac/make-launchable.sh: Removed.
-
-2011-12-29 Dan Bernstein <mitz@apple.com>
-
- debug-safari --no-saved-state fails to start the debugger
- https://bugs.webkit.org/show_bug.cgi?id=75374
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitdirs.pm:
- (execMacWebKitAppForDebugging): Pass the --args option to gdb so that it passes arguments to
- the executable being debugged.
-
-2011-12-29 Sam Weinig <sam@webkit.org>
-
- It should be easier to iterate a Vector backwards
- https://bugs.webkit.org/show_bug.cgi?id=75359
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Add new Vector test.
-
- * TestWebKitAPI/Tests/Vector.cpp: Added.
- (TestWebKitAPI::TEST):
- Test Vector iterators, reverse_iterators and new reversed proxy.
-
-2011-12-28 Dmitry Lomov <dslomov@google.com>
-
- [WebWorkers][Chromium] Remove remains of cross-process dedicated worker implementation.
- https://bugs.webkit.org/show_bug.cgi?id=66509
- Just renames, merges and removal of dead code. Here are the list of renames:
- - WebCommonWorkerClient merged with WebWorkerClient and renamed to WebSharedWorkerClient
- - NewWebCommonWorkerClient renamed to WebCommonWorkerClient
- - WebWorkerBase merged into WebSharedWorkerImpl
- - NewWebWorkerBase renamed into WebWorkerBase
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-28 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r103785.
- http://trac.webkit.org/changeset/103785
- https://bugs.webkit.org/show_bug.cgi?id=75332
-
- Broke builders; looks like clobbering didnt help (Requested by
- dslomov on #webkit).
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-28 Dmitry Lomov <dslomov@google.com>
-
-
- [WebWorkers][Chromium] Remove remains of cross-process dedicated worker implementation.
- https://bugs.webkit.org/show_bug.cgi?id=66509
- Just renames, merges and removal of dead code. Here are the list of renames:
- - WebCommonWorkerClient merged with WebWorkerClient and renamed to WebSharedWorkerClient
- - NewWebCommonWorkerClient renamed to WebCommonWorkerClient
- - WebWorkerBase merged into WebSharedWorkerImpl
- - NewWebWorkerBase renamed into WebWorkerBase
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-28 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r103620.
- http://trac.webkit.org/changeset/103620
- https://bugs.webkit.org/show_bug.cgi?id=75316
-
- Causes many crashes (Requested by abarth on #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r103734.
- http://trac.webkit.org/changeset/103734
- https://bugs.webkit.org/show_bug.cgi?id=75278
-
- Broke cr-mac (Requested by dslomov on #webkit).
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-27 Dmitry Lomov <dslomov@google.com>
-
-
- [WebWorkers][Chromium] Remove remains of cross-process dedicated worker implementation.
- https://bugs.webkit.org/show_bug.cgi?id=66509
- Just renames, merges and removal of dead code. Here are the list of renames:
- - WebCommonWorkerClient merged with WebWorkerClient and renamed to WebSharedWorkerClient
- - NewWebCommonWorkerClient renamed to WebCommonWorkerClient
- - WebWorkerBase merged into WebSharedWorkerImpl
- - NewWebWorkerBase renamed into WebWorkerBase
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-27 Anders Carlsson <andersca@apple.com>
-
- Function should handle wrapping/unwrapping RefPtr and PassRefPtr
- https://bugs.webkit.org/show_bug.cgi?id=75266
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
- (TestWebKitAPI::Number::create):
- (TestWebKitAPI::Number::~Number):
- (TestWebKitAPI::Number::value):
- (TestWebKitAPI::Number::Number):
- (TestWebKitAPI::multiplyNumberByTwo):
- (TestWebKitAPI::TEST):
-
-2011-12-24 Kentaro Hara <haraken@chromium.org>
-
- Add unittests for the C++ parser of prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=75191
-
- Reviewed by Ryosuke Niwa.
-
- cpp_unittests.cpp is the unittests for get_function_line_ranges_for_cpp()
- of prepare-ChangeLog.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges): Renames get_function_line_ranges_for_c()
- to get_function_line_ranges_for_cpp().
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp: Added.
- (func1):
- (func2):
- (func3):
- (func4):
- (func5):
- (func6):
- (func7):
- (func8):
- (func9):
- (func10):
- (func11):
- (func12):
- (func13):
- (func14):
- (func15):
- (funcOverloaded):
- (Class::func16):
- (Class1::Class2::func17):
- (Class2::func18):
- (Class2::func19):
- (Class2::func20):
- (Class2::func21):
- (Class2::func22):
- (func23):
- (func24):
- (Class2::func25):
- (Class1::func26):
- (Class2::func27):
- (Class3::func28):
- (Class7::operator+):
- (Class100::Class100):
- (Class101::~Class101):
- (Class102::Class102):
- (Class103::Class103):
- (Struct1::func29):
- (Struct2::func30):
- (NameSpace1::func30):
- (NameSpace1::NameSpace2::func31):
-
-2011-12-24 Kentaro Hara <haraken@chromium.org>
-
- Add unittests for the Java parser of prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=75195
-
- Reviewed by Ryosuke Niwa.
-
- java_unittests.java is unittest cases for get_function_line_ranges_for_java()
- of prepare-ChangeLog.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_java): Fixed a parser bug.
-
- interface I
- {
- void f()
- {
- }
- }
-
- should be recognized as "I.f", and
-
- class C interface I
- {
- void f()
- {
- }
- }
-
- should be recognized as "C.f".
- Without this patch, both are recognized as "I.f".
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests.java: Added.
- (Simple):
- (Simple.func1):
- (Simple.func2):
- (Simple.func3):
- (Simple.func4):
- (Simple.func5):
- (Simple.func6):
- (Simple.func7):
- (Simple.func8):
- (Simple.func9):
- (Simple.func10):
- (Simple.funcOverloaded):
- (Simple.func11):
- (Simple.func12):
- (Simple.func13):
- (Simple.func14):
- (Simple.func15):
- (Simple.func16):
- (Simple.func17):
- (Simple.func18):
- (Simple.func19):
- (Simple.func20):
- (Simple.func21):
- (Derived1):
- (Derived1.Derived1):
- (Derived1.func22):
- (Interface1):
- (Interface2):
- (Interface2.func23):
- (Derived2):
- (Derived2.Derived2):
- (Derived2.func23):
-
-2011-12-24 Kentaro Hara <haraken@chromium.org>
-
- Add unittests for the Python parser of prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=75197
-
- Reviewed by Ryosuke Niwa.
-
- python_unittests.py is the unittest for get_function_line_ranges_for_python()
- of prepare-ChangeLog. The unittest just contains classes and defs that are not nested.
- This is because the current python parser is wrong, and it cannot correctly parse nested
- classes and defs (even one def in a class), nor class inheritance.
- We will fix it in another patch.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_python): Ignores comment lines that starts from #.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt: Added.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py: Added.
- (func1):
- (func2):
- (func3):
- (funcInsideComment):
- (func4):
- (func5):
- (func6):
- (funcOverloaded):
- (Class1):
-
-2011-12-24 Dan Bernstein <mitz@apple.com>
-
- Set SHARED_PRECOMPS_DIR when Xcode is set to use a custom build product path.
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
-
-2011-12-24 Dan Bernstein <mitz@apple.com>
-
- Make build-webkit aware of additional Xcode build location defaults.
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (determineXcodeVersion): Added. This was previously in determineBaseProductDir().
- (readXcodeUserDefault): Added. Factored out from determineBaseProductDir().
- (determineBaseProductDir): Changed to check for a custom build location
- style specified as an absolute location.
-
-2011-12-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Unreviewed, rolling out r103619.
- http://trac.webkit.org/changeset/103619
- https://bugs.webkit.org/show_bug.cgi?id=66509
-
- Broke chromium clang build
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-23 Daniel Bates <dbates@webkit.org>
-
- Provide option to disable Mac OS 10.7 application resume when using
- {debug, run}-{safari, minibrowser, test-runner, test-webkit-api}, and run-webkit-app
- https://bugs.webkit.org/show_bug.cgi?id=66902
-
- Reviewed by David Kilzer.
-
- Add an optional command line argument --no-saved-state to disable
- application resume (state restoration) for the session on Mac OS 10.7.
-
- For instance, when debugging an issue in Safari it is useful to be able
- to temporarily disable application resume. Currently you can disable
- application resume when launching Safari from within Xcode. We should
- expose a similar option in our command line tools.
-
- * Scripts/debug-minibrowser: Call printHelpAndExitForRunAndDebugWebKitAppIfNeeded()
- to print a help message and exit() if the command line argument --help was given.
- * Scripts/debug-safari: Ditto.
- * Scripts/debug-test-runner: Ditto.
- * Scripts/run-minibrowser: Ditto.
- * Scripts/run-safari: Ditto.
- * Scripts/run-test-runner: Ditto.
- * Scripts/run-test-webkit-api: Ditto.
- * Scripts/run-webkit-app: Ditto.
- * Scripts/webkitdirs.pm:
- (printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Added.
- (argumentsForRunAndDebugMacWebKitApp): Added.
- (runMacWebKitApp): If the --no-saved-state command line argument was given then
- disable application resume for the session.
- (execMacWebKitAppForDebugging): Ditto.
-
-2011-12-23 Dmitry Lomov <dslomov@google.com>
-
- [WebWorkers][Chromium] Remove remains of cross-process dedicated worker implementation.
- https://bugs.webkit.org/show_bug.cgi?id=66509
- Just renames, merges and removal of dead code. Here are the list of renames:
- - WebCommonWorkerClient merged with WebWorkerClient and renamed to WebSharedWorkerClient
- - NewWebCommonWorkerClient renamed to WebCommonWorkerClient
- - WebWorkerBase merged into WebSharedWorkerImpl
- - NewWebWorkerBase renamed into WebWorkerBase
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::createWorker):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createWorker):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-12-23 Kentaro Hara <haraken@chromium.org>
-
- Let parser_unittests.pl call different language parsers
- https://bugs.webkit.org/show_bug.cgi?id=75081
-
- Reviewed by David Kilzer.
-
- We introduced parser_unittests.pl in bug 74994 , but it is implemented
- to always call get_function_line_ranges_for_perl(). In order to enable unittests
- for other languages, this patch lets parser_unittests.pl call different language
- parsers depending on the languages.
-
- Test: Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl:
-
-2011-12-22 Adam Roben <aroben@apple.com>
-
- Snow Leopard test fix
-
- * Scripts/webkitpy/test/main.py:
- (Tester.run_tests): Python 2.6.1 doesn't seem to like specifying testRunner=None to
- unittest.main, even though that's the default. So now we explicitly specify a
- TextTestRunner.
-
-2011-12-22 Chris Fleizach <cfleizach@apple.com>
-
- AX: attributed strings do not include AXHeading information when a link is contained within the heading
- https://bugs.webkit.org/show_bug.cgi?id=75059
-
- Reviewed by Darin Adler.
-
- Support the ability to check if an arbitrary attribute is present within an
- attributed string that can be retrieved through an AccessibilityTextMarkerRange.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (attributedStringForTextMarkerRangeContainsAttributeCallback):
- (AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
-
-2011-12-22 David Kilzer <ddkilzer@apple.com>
-
- run-api-tests: runAllTests() and runTest() should not use global variables
-
- Reviewed by Adam Roben.
-
- Part of: <http://webkit.org/b/75065> run-api-tests should be able to run individual suites and tests
-
- * Scripts/run-api-tests:
- (runTestsBySuite): Rename from runAllTests(). Add arguments for
- list of tests and $verbose.
- (runTest): Add $verbose argument.
-
-2011-12-22 David Kilzer <ddkilzer@apple.com>
-
- run-api-tests: inline runAllTestsInSuite() into runAllTests()
-
- Reviewed by Adam Roben.
-
- Part of: <http://webkit.org/b/75065> run-api-tests should be able to run individual suites and tests
-
- In order to make it easy to run one or more individual suites,
- or one more individual tests, it's easier to call a single
- method with different data structures than individual methods.
-
- * Scripts/run-api-tests:
- (runAllTests): Inline runAllTestsInSuite().
-
-2011-12-22 Adam Roben <aroben@apple.com>
-
- Add a --xml flag to test-webkitpy
-
- test-webkitpy --xml will, in addition to providing the standard text output on stdout, write
- JUnit-style XML files to a test-webkitpy-xml-reports subdirectory in the working directory.
- This is useful for working with tools that consume JUnit-style XML files.
-
- Fixes <http://webkit.org/b/75090> Would like a way to generate JUnit-style XML files when
- running test-webkitpy
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/test/main.py:
- (Tester.run_tests): If the --xml flag is passed, create an XMLTestRunner and pass it to
- unittest.main(). Otherwise pass no test runner so that unittest will choose its own default.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_xmlrunner):
- Added code to install unittest-xml-reporting as webkitpy.thirdparty.autoinstalled.xmlrunner.
- This change is untested because it's basically impossible to get a test to pass when --xml
- is passed to test-webkitpy (because xmlrunner will already have been imported by the time
- the test runs).
-
-2011-12-22 David Kilzer <ddkilzer@apple.com>
-
- TestWebKitAPI: initialize the main thread before running tests
- <http://webkit.org/b/75064>
-
- Reviewed by Adam Roben.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController): Call
- WTF::initializeMainThread() to prevent assertions in Debug
- builds.
-
-2011-12-22 David Kilzer <ddkilzer@apple.com>
-
- run-api-tests: dumpAllTests() should not use global variables
-
- Reviewed by Adam Roben.
-
- Part of: <http://webkit.org/b/75065> run-api-tests should be able to run individual suites and tests
-
- * Scripts/run-api-tests: Renamed $dump to $dumpTests.
- (dumpTestsBySuite): Rename from dumpAllTests() and pass in
- global data as an argument. Sort suite names and test names
- alphabetically to match output when running tests.
-
-2011-12-22 Leo Yang <leo.yang@torchmobile.com.cn>
-
- [BlackBerry] Enable blob for the BlackBerry porting
- https://bugs.webkit.org/show_bug.cgi?id=75074
-
- Reviewed by George Staikos.
-
- * Scripts/build-webkit:
-
-2011-12-22 Kentaro Hara <haraken@chromium.org>
-
- Add unittests for the Perl parser of prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=74994
-
- Reviewed by David Kilzer.
-
- This patch adds unittests for get_function_line_ranges_for_perl() of prepare-ChangeLog.
-
- Test: Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl
-
- * Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl: Added.
- Runs unittests specified in @testFiles.
- You can reset expected results by specifying a --reset-results option.
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl: Added.
- Contains simple methods.
- (func1):
- (func2):
- (func3):
- (func4):
- (func5):
- (func6):
- * Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt: Added.
- This test result is generated by the --reset-results option.
-
-2011-12-21 Eric Seidel <eric@webkit.org>
-
- Add webkit.review.bot@gmail.com and commit-queue@webkit.org as "contributors"
- so that they appear in the bugzilla autocomplete CC list.
- I also removed the "radar" irc nick (which I believe does not exist)
- and removed the uneeded [] around the radar bugzilla email.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-21 Daniel Bates <dbates@rim.com>
-
- Teach build-jsc how to build JavaScriptCore for the EFL, BlackBerry, and WinCE ports
- https://bugs.webkit.org/show_bug.cgi?id=74985
-
- Reviewed by Eric Seidel.
-
- * Scripts/build-jsc:
- * Scripts/webkitdirs.pm:
- (cmakeBasedPortName): Added.
-
-2011-12-21 Daniel Bates <dbates@rim.com>
-
- Extract BlackBerry CMake arguments from build-webkit into separate function
- https://bugs.webkit.org/show_bug.cgi?id=74981
-
- Reviewed by Rob Buis.
-
- Towards adding support for using Tools/Scripts/build-jsc for the BlackBerry port, move
- the CMake argument logic from Tools/Scripts/build-webkit to function webkitdirs::blackberryCMakeArguments()
- and have cmakeBasedPortArguments() call this function for the BlackBerry CMake argument list.
- This will allow us to get the BlackBerry CMake arguments in Tools/Scripts/build-jsc so
- that we can pass them to the CMake build system when building JavaScriptCore.
-
- * Scripts/build-webkit: Move construction of CMake argument list from here to
- webkitdirs::blackberryCMakeArguments(). Also, remove exported function blackberryTargetArchitecture()
- since it's only called within webkitdirs.pm now. Formerly we exported this function so that we could
- call it from build-webkit.
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments): Added.
- (cmakeBasedPortArguments): Modified to call blackberryCMakeArguments() when building the
- BlackBerry port.
-
-2011-12-21 Daniel Bates <dbates@webkit.org>
-
- Extract WinCE CMake arguments from build-webkit into separate function
- https://bugs.webkit.org/show_bug.cgi?id=74983
-
- Reviewed by Rob Buis.
-
- Towards adding support for using Tools/Scripts/build-jsc for the WinCE port, extract the
- WinCE-specific CMake argument from Tools/Scripts/build-webkit into webkitdirs::cmakeBasedPortArguments().
- This will allow us to get the WinCE-specific CMake argument in Tools/Scripts/build-jsc so
- that we can pass it to the CMake build system when building JavaScriptCore.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (cmakeBasedPortArguments): Added.
-
-2011-12-21 Kentaro Hara <haraken@chromium.org>
-
- In prepare-ChangeLog, replace constant global variables with "use constant"
- https://bugs.webkit.org/show_bug.cgi?id=74992
-
- Reviewed by Ryosuke Niwa.
-
- This patch replaces the following constant global variables with "use constant"s.
- - $changeLogTimeZone
- - $SVN
- - $GIT
- - %supportedTestExtensions
-
- * Scripts/prepare-ChangeLog:
- (changeLogNameFromArgs):
- (changeLogEmailAddressFromArgs):
- (resolveConflictedChangeLogs):
- (generateNewChangeLogs):
- (diffCommand):
- (statusCommand):
- (createPatchCommand):
- (findOriginalFileFromSvn):
- (determinePropertyChanges):
- (generateFileList):
- (reviewerAndDescriptionForGitCommit):
-
-2011-12-20 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: rename field references from _fs to _filesystem
- https://bugs.webkit.org/show_bug.cgi?id=74898
-
- Reviewed by Adam Barth.
-
- This is a simple cleanup; most of the code uses
- self._filesystem, but some used self._fs; this change renames
- the latter to the former to be more consistent.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.collect_tests):
- (Manager._strip_test_dir_prefix):
- (Manager._split_into_chunks_if_necessary):
- (Manager.results_directory):
- (Manager._clobber_old_results):
- (Manager._upload_json_files):
- (Manager.print_config):
- (Manager._copy_results_html_file):
- (Manager._show_results_html_file):
- (Manager._log_worker_stack):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator._normalize_results_json):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.__init__):
- (JSONResultsGeneratorBase.generate_json_output):
- (JSONResultsGeneratorBase.generate_times_ms_file):
- (JSONResultsGeneratorBase.upload_json_files):
- (JSONResultsGeneratorBase._get_svn_revision):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (Base.__init__):
-
-2011-12-20 Kentaro Hara <haraken@chromium.org>
-
- Replace webkitperl/run-leaks_unittest/RunLeaks.pm with webkitperl/LoadAsModule.pm
- https://bugs.webkit.org/show_bug.cgi?id=74836
-
- Reviewed by David Kilzer.
-
- webkitperl/run-leaks_unittest/RunLeaks.pm can be used for unit-testing of run-leaks only.
- This patch creates more generalized webkitperl/LoadAsModule.pm, which can be also used
- for unit-testing of other Perl scripts. We are planning to use it for unit-testing
- of prepare-ChangeLog.
-
- Using LoadAsModule.pm, you can load a Perl script as follows.
- The first argument is the arbitrary package name you want to use, and the second argument
- is the name of the Perl script you want to load.
-
- use LoadAsModule qw(RunLeaks run-leaks);
- RunLeaks::someFunctionDefinedInRunLeaks(...);
-
- Tests: Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl
- Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl
- Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl
-
- * Scripts/webkitperl/LoadAsModule.pm: Added.
- * Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm: Removed.
- (import):
- (readFile):
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl: Used LoadAsModule instead of RunLeaks.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl: Ditto.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl: Ditto.
-
-2011-12-20 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] WK2 Debugging quirks need some improvement
- https://bugs.webkit.org/show_bug.cgi?id=74859
-
- Reviewed by Simon Hausmann.
-
- Improvements added to make debugging WebKit2 more
- confortable and efficient:
- 1. Unify debugging quirks. From now all of them are controlled
- by the QT_WEBKIT2_DEBUG environment variable.
- 2. Disable crash handlers for WebKitTestRunner if debugging quirks
- are used to make it possible to use postmortem debugging via core dumps
- which is extremely useful for debugging bugs triggered by layout tests.
- 3. Disable test timeout for WebKitTestRunner if debugging quirks
- are used because that makes debugging impossible.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::InjectedBundle::platformInitialize):
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::initializeWaitToDumpWatchdogTimerIfNeeded):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::platformRunUntil):
-
-2011-12-20 Rafael Brandao <rafael.lobo@openbossa.org>
-
- [Qt][WK2] Implement favicon support
- https://bugs.webkit.org/show_bug.cgi?id=71082
-
- Reviewed by Simon Hausmann.
-
- A favorite icon was added on MiniBrowser's url bar as example.
- We display a default icon when the page doesn't have an icon ready.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/icons/favicon.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2011-12-19 Sam Weinig <sam@webkit.org>
-
- Add support for scrollLineDown: and scrollLineUp: NSResponder selectors
- https://bugs.webkit.org/show_bug.cgi?id=74907
-
- Reviewed by Dan Bernstein.
-
- Add ScrollByLineCommands API test.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm: Added.
- * TestWebKitAPI/Tests/WebKit2/simple-tall.html: Added.
-
-2011-12-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove port.executive, port.filesystem, port.user properties
- https://bugs.webkit.org/show_bug.cgi?id=74896
-
- Reviewed by Eric Seidel.
-
- Following on the refactoring of the port and host objects, this
- removes the public executive, filesystem, and user properties
- from the Port interface (protected versions of executive and
- filesystem still exist). There is still some more clean up to
- make the code more consistent and rearrange some other files to
- talk to Hosts directly instead of getting them off of the Port
- class.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.results_directory):
- (Manager._log_worker_stack):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_fallback_path_in_config):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_InlineManager.start_worker):
- (_InlineWorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.safe_init):
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfiguration.from_port):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.tests):
- (Port.show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_layout_tests_skipping):
- (PortTest.test_test_dirs):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- (HtmlGenerator.__init__):
- (HtmlGenerator.show_html):
- (real_main):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- (TestHtmlGenerator.make_generator):
-
-2011-12-19 Daniel Bates <dbates@webkit.org>
-
- Pass command line arguments to GDB when debugging a Mac WebKit application
- https://bugs.webkit.org/show_bug.cgi?id=72829
-
- Reviewed by David Kilzer.
-
- Pass through any command line arguments given to debug-{safari, minibrowser}
- to GDB so that they may influence the application instance launched by GDB.
-
- * Scripts/webkitdirs.pm:
- (execMacWebKitAppForDebugging):
-
-2011-12-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove executive,filesystem,user parameters from Port constructor
- https://bugs.webkit.org/show_bug.cgi?id=74878
-
- Reviewed by Eric Seidel.
-
- This change concludes the refactoring that makes Host a required
- parameter for Port and ensures that all access to filesystem,
- executives, etc. is going through the Host.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
-
-2011-12-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: finish refactoring port classes to make a host mandatory
- https://bugs.webkit.org/show_bug.cgi?id=74566
-
- Reviewed by Eric Seidel.
-
- This change makes all Port objects take a required (System)Host
- parameter, and updates the TestPort object to no longer create a
- mock filesystem or add files to the existing filesystem by
- default.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory.__init__):
- (PortFactory._get_kwargs):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestInstance.__init__):
- (TestPort.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (passing_run):
- (logging_run):
- (get_tests_run):
- (MainTest.test_single_file):
- (MainTest.test_stderr_is_saved):
- (MainTest.test_test_list):
- (MainTest.test_test_list_with_prefix):
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_missing_and_unexpected_results_with_custom_exit_code):
- (MainTest.test_crash_with_stderr):
- (MainTest.test_no_image_failure_with_image_diff):
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
- (MainTest.test_exit_after_n_failures_upload):
- (MainTest.test_results_directory_absolute):
- (MainTest.test_results_directory_relative):
- (MainTest.test_retries_directory):
- (MainTest.test_tolerance.get_port_for_run):
- (MainTest.test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist):
- (EndToEndTest.test_end_to_end):
- (EndToEndTest.test_reftest_with_two_notrefs):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- (Rebaseliner.__init__):
- (main):
- (real_main):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- (test_host_port_and_filesystem):
- (TestRebaseliner.make_rebaseliner):
- (TestRealMain.test_all_platforms):
- (TestHtmlGenerator.make_generator):
-
-2011-12-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: update unit tests in preparation for making host a mandatory parameter to Port objects
- https://bugs.webkit.org/show_bug.cgi?id=74562
-
- Reviewed by Eric Seidel.
-
- Apart from a minor change to style/checkers/test_expectations.py
- to take a host as a parameter to a TestExpectationsChecker(),
- there are only refactoring changes to unit tests here.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- (JSONGeneratorTest._test_json_generation):
- (JSONGeneratorTest.test_test_timings_trie):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (Base.__init__):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.make_port):
- (PortTest.test_layout_tests_skipping):
- (PortTest.test_test_dirs):
- (PortTest.test_additional_platform_directory):
- (PortTest.test_uses_test_expectations_file):
- (PortTest.test_find_no_paths_specified):
- (PortTest.test_find_one_test):
- (PortTest.test_find_glob):
- (PortTest.test_find_with_skipped_directories):
- (PortTest.test_find_with_skipped_directories_2):
- (PortTest.test_parse_reftest_list):
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- (DryRunPort.__init__):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.setUp):
- (FactoryTest.tearDown):
- (FactoryTest.assert_port):
- (FactoryTest.assert_platform_port):
- (FactoryTest.test_unknown_specified):
- (FactoryTest.test_unknown_default):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (GetGoogleChromePortTest._verify_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- (MockDRTTest.assertTest):
- (MockDRTTest.test_main):
- (MockChromiumDRTTest.test_pixeltest__fails):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_search_path):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (TestWebKitPort.__init__):
- (WebKitPortTest.test_skipped_directories_for_symbols):
- (test_skipped_directories_for_features):
- (test_skipped_layout_tests):
- (test_skipped_file_search_paths):
- (test_root_option):
- (test_test_expectations):
- (test_build_driver):
- (test_linux_distro_detection):
- (test_apache_config_file_name_for_platform):
- (test_path_to_apache_config_file):
- (WebKitDriverTest.test_read_block):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase._expect_port_for_expectations_path):
- (TestExpectationsTestCase.assert_lines_lint):
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- (get_test_config.TestMacPort):
-
-2011-12-19 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [Efl] Fix path returned by builtDylibPathForName in webkitdirs.pm
- https://bugs.webkit.org/show_bug.cgi?id=74854
-
- Reviewed by Csaba Osztrogonác.
-
- Since r101052, libewebkit.so is built in a different location, so we
- need to adjust the path returned by builtDylibPathForName.
-
- usesPerConfigurationBuildDirectory also needs to be fixed, as the Efl
- port also respects Release/Debug configurations.
-
- These changes should make run-launcher finally work correctly with
- webkit-efl.
-
- * Scripts/webkitdirs.pm:
- (usesPerConfigurationBuildDirectory):
- (builtDylibPathForName):
-
-2011-12-19 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Add support for modal event loop processing for WTR
- https://bugs.webkit.org/show_bug.cgi?id=74852
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Rewrote event loop processing: Instead of terminating the event loop
- in notifyDone() - something no other platform does - we now respect the
- "bool& condition" parameter passed to platformRunUntil. This ensures
- proper termination even when the condition is changed from within a
- nested event loop, because only when we _exit_ from the nested event
- loop we will check the condition and terminate the test properly.
-
- In addition this patch implements TestController::runModal by means of
- a nested event loop, which is passed to the platform webview that is
- supposed to be modal. It is that view's responsibility to exit the
- loop, upon destruction. I believe that's similar to how it works on the Mac,
- where it doesn't seem that NSApp's runModalForWindow is terminate via
- abort/stopModal but simply because the window is closed.
-
- * WebKitTestRunner/PlatformWebView.h:
- (WTR::PlatformWebView::setModalEventLoop):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::notifyDone):
- (WTR::TestController::platformRunUntil):
- (WTR::TestController::runModal):
-
-2011-12-18 Kentaro Hara <haraken@chromium.org>
-
- REGRESSION(r103149): prepare-ChangeLog outputs a warning
- https://bugs.webkit.org/show_bug.cgi?id=74808
-
- Reviewed by David Kilzer.
-
- Added the prototype declaration of main() to avoid warning messages.
- Sorted subroutine declarations in the alphabetical order.
-
- * Scripts/prepare-ChangeLog:
-
-2011-12-17 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- [Qt] Fix QtTestBrowser compilation with QtWidgets module
- https://bugs.webkit.org/show_bug.cgi?id=74791
-
- Reviewed by Andreas Kling.
-
- * QtTestBrowser/QtTestBrowser.pro:
-
-2011-12-17 Kentaro Hara <haraken@chromium.org>
-
- Remove top-level code completely from prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=74698
-
- Reviewed by Darin Adler.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest manner.
- This patch just moves all top-level code into main().
-
- * Scripts/prepare-ChangeLog:
- (main):
-
-2011-12-16 Dean Jackson <dino@apple.com>
-
- Move webkit-bug-importer to Contributor. It won't
- autocomplete as an Account.
- See https://bugs.webkit.org/show_bug.cgi?id=74739
- for some discussion.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-16 Dean Jackson <dino@apple.com>
-
- Add webkit-bug-importer@group.apple.com to accounts
- so that it autocompletes in bugzilla.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-16 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, skipping 3 failing GTK API tests.
-
- * Scripts/run-gtk-tests:
-
-2011-12-16 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK API tests build fix attempt.
-
- * Scripts/run-gtk-tests: Run xvfb on a display not used by NRWT.
-
-2011-12-16 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, unskipping GTK testdownload. Should pass on the bot now.
-
- * Scripts/run-gtk-tests:
-
-2011-12-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix the build for newer Qt5
- https://bugs.webkit.org/show_bug.cgi?id=74703
-
- Reviewed by Csaba Osztrogonác.
-
- * QtTestBrowser/launcherwindow.h: Add missing forward declaration.
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::sendTouchEvent): Allocate QTouchDevice and use with QTouchEvent constructor.
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp: Ditto.
- (WTR::EventSenderProxy::sendTouchEvent):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::sendTouchEvent): Ditto.
- (MiniBrowserApplication::notify): Adapt to changed API for marking primary touch point.
-
-2011-12-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Detect and force clean build when feature defines are added
-
- Reviewed by Ossy.
-
- https://bugs.webkit.org/show_bug.cgi?id=74689
-
- * Scripts/webkitdirs.pm:
-
-2011-12-16 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] Remove all global variables from prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=74681
-
- Reviewed by Ryosuke Niwa.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest
- manner. This bug is one of the incremental refactorings to remove all top-level
- code and global variables from prepare-ChangeLog. In this patch,
- we make the following global variables be used only through parameter passing.
- This patch removes all global variables from prepare-ChangeLog.
- - $mergeBase
- - $gitCommit
- - $gitIndex
-
- * Scripts/prepare-ChangeLog:
- (generateFunctionLists):
- (changeLogNameFromArgs):
- (changeLogEmailAddressFromArgs):
- (generateNewChangeLogs):
- (printDiff):
- (diffFromToString):
- (diffCommand):
- (statusCommand):
- (createPatchCommand):
- (generateFileList):
- (isConflictStatus):
-
-2011-12-15 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Rounding errors on 32-bit machines causes tests to fail
- https://bugs.webkit.org/show_bug.cgi?id=72254
-
- Initial patch by vanuan@gmail.com.
- Reviewed by Martin Robinson.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary): Pass additional
- CXXFLAGS to autogen in an attempt to harmonize floating point
- values between 32-bit and 64-bit architectures.
-
-2011-12-16 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Make distcheck fails during the install
- https://bugs.webkit.org/show_bug.cgi?id=74274
-
- No review, since this is a build fix.
-
- * GNUmakefile.am: Remove BUILT_SOURCES from the dependency list for the gtkdoc
- step. BUILT_SOURCES includes forwarding header generation for WebKit2, which
- always runs. This means that the gtkdoc step was always running when make was
- invoked. Generating gtkdoc during 'make install' was triggering a race condition
- with the library file. Later we can fix generate-forwarding-headers and unbreak
- 'make docs,' but this bandaid is sufficient to let us release.
-
-2011-12-15 Eric Seidel <eric@webkit.org>
-
- NRWT should use free + inactive memory for default_child_processes on OS X (and never return < 1 process)
- https://bugs.webkit.org/show_bug.cgi?id=74650
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo._compute_bytes_from_vm_stat_output):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_child_processes):
-
-2011-12-15 Filip Pizlo <fpizlo@apple.com>
-
- bencher script should support remote benchmarking on platforms that don't have ruby
- https://bugs.webkit.org/show_bug.cgi?id=74659
-
- Rubber-stamped by Sam Weinig.
-
- Added the ability to have bencher generate a benchmarking playload that consists of
- copies of all of the benchmarks, optionally copies of all of the frameworks and
- binaries to run all of the VMs, and a sh script that runs the benchmarks in random
- order, which then spits out a raw results file that bencher can parse.
-
- In normal operating mode, you never see this, as it just generates the payload and
- script internally, runs it, parses the results, and spits them out.
-
- The --remote mode has been changed to use this style, so any remote host that has
- sshd, passwordless login support, a ~/.bencher file that points to a "tempPath", and
- a sh-compatible shell can be used for remote benchmarking.
-
- The feature to include VMs in the benchmarking payload is by default only activated
- when using --remote, but it can also be activated when doing local benchmarking; the
- benefit is that you remove any pathname-related performance pathologies. All VMs
- become equal because they are all located in
- /path/to/bencher/directory/temp/benchdata/vmN where N is the configuration number
- (usually 0 or 1).
-
- Also fixed bugs in the DumpRenderTree support. It's now possible to run all benchmarks
- through DumpRenderTree. This is only a bit slower than running in jsc.
-
- * Scripts/bencher:
-
-2011-12-15 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up TestPort to (mostly) not create a new filesystem
- https://bugs.webkit.org/show_bug.cgi?id=74556
-
- This change modifies the TestPort to be ready to add tests to an
- existing filesystem instead of creating a new filesystem; we
- leave unit_test_filesystem() in for now for compatibility.
-
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- - call add_unit_tests_to_mock_filesystem by default to make
- the MockHost more generally useful for layout_test unit tests.
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestInstance.__init__):
- (add_unit_tests_to_mock_filesystem):
- (add_file):
- (unit_test_filesystem):
- (TestPort.__init__):
- (TestPort._set_default_overriding_none):
-
-2011-12-15 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: cleanup prior to systemhostifying the layout_test/port* classes
- https://bugs.webkit.org/show_bug.cgi?id=74551
-
- This is some minor cleanup prior to making all of the host/port
- changes described in bug 74138.
-
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- - make sure the scm object is initialized with the same mock
- executive and filesystem objects.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.clear_written_files):
- - add a routine that will be useful in testing.
- (MockFileSystem.maybe_make_directory):
- (MockFileSystem.write_binary_file):
- - fix bugs to make sure directories are created properly.
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_Process.run):
- - add clarifying comments.
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort.__init__):
- (MockDRT.__init__):
- - add clarifying comments.
-
-2011-12-15 Anders Carlsson <andersca@apple.com>
-
- Regression (r102866): Navigating away from or closing a page with a plugin crashes
- https://bugs.webkit.org/show_bug.cgi?id=74655
-
- Reviewed by Sam Weinig.
-
- Add a bunch of tests.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
-
-2011-12-15 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=74469
- Escape paths to svn commands so our tools can handle filenames with @ symbols.
-
- Reviewed by Adam Roben.
-
- * Scripts/VCSUtils.pm:
- (scmMoveOrRenameFile):
- (scmAddExecutableBit):
- (scmRemoveExecutableBit):
- (determineSVNRoot):
- (svnRevisionForDirectory):
- (pathRelativeToSVNRepositoryRootForPath):
- (svnStatus):
- (escapeSubversionPath):
- * Scripts/parse-malloc-history:
- (main):
- * Scripts/prepare-ChangeLog:
- (diffCommand):
- (statusCommand):
- (findOriginalFileFromSvn):
- (determinePropertyChanges):
- * Scripts/resolve-ChangeLogs:
- (conflictFiles):
- (resolveConflict):
- (showStatus):
- * Scripts/svn-apply:
- (patch):
- (scmCopy):
- (scmAdd):
- (scmRemove):
- * Scripts/svn-create-patch:
- (findBaseUrl):
- (findMimeType):
- (findSourceFileAndRevision):
- (generateDiff):
- (generateFileList):
- (manufacturePatchForAdditionWithHistory):
- * Scripts/svn-unapply:
- (patch):
- (revertDirectories):
-
-2011-12-15 Michael Bruning <michael.bruning@nokia.com>
-
- [qt][wk2] MiniBrowser: Add pressed state for viewport info button.
- https://bugs.webkit.org/show_bug.cgi?id=74617
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml: Added state dependent coloring
- for viewport info button, adjusted height and added rounded corners.
-
-2011-12-15 Andy Estes <aestes@apple.com>
-
- TestFailures: store the name of the buildbot results directory in a property
- https://bugs.webkit.org/show_bug.cgi?id=74663
-
- Reviewed by Adam Barth.
-
- Store the name of the results directory as a property on Buildbot's
- prototype. This allows subclasses of Buildbot to customize the results
- directory.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js:
- (Buildbot.prototype.resultsDirectoryURL):
-
-2011-12-15 Tony Chang <tony@chromium.org>
-
- [chromium] pass --delete_unversioned_trees to gclient on the bots
- https://bugs.webkit.org/show_bug.cgi?id=74565
-
- Reviewed by Kenneth Russell.
-
- It was temporarily removed in r102891 to keep the bots green. Now
- that the bots have cycled, we can add it back.
-
- * Scripts/update-webkit-chromium:
-
-2011-12-15 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, make several global variables be used only through parameter passing
- https://bugs.webkit.org/show_bug.cgi?id=74497
-
- Reviewed by Ryosuke Niwa.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest
- manner. This bug is one of the incremental refactorings to remove all top-level
- code and global variables from prepare-ChangeLog. In this patch,
- we make the following global variables be used only through parameter passing.
- - $bugDescription
- - $bugNumber
- - $name
- - $emailAddress
- - $gitReviewer
- - $writeChangeLogs
-
- * Scripts/prepare-ChangeLog:
- (fetchBugDescriptionFromURL):
- (generateNewChangeLogs):
- (reviewerAndDescriptionForGitCommit):
-
-2011-12-15 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Add a few more web database functions to ewk_settings.
- https://bugs.webkit.org/show_bug.cgi?id=72148
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::setDatabaseQuota):
-
-2011-12-15 Martin Kosiba <mkosiba@google.com>
-
- Fix find on web pages with -webkit-user-select: none for Chromium
- https://bugs.webkit.org/show_bug.cgi?id=72281
-
- Reviewed by Ryosuke Niwa.
-
- Provided a partial findString implementation. This doesn't support
- all of the FindOptions since they're not exposed via WebFindOptions.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::findString):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-12-15 Kenneth Russell <kbr@google.com>
-
- [chromium] Add DRT support for WebKitPageCacheSupportsPluginsPreferenceKey
- https://bugs.webkit.org/show_bug.cgi?id=74581
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-12-15 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Improve the look of the viewport info overlay
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/qml/ViewportInfoItem.qml:
-
-2011-12-15 Igor Oliveira <igor.oliveira@openbossa.org>
-
- [Qt] Support requestAnimationFrame API
- https://bugs.webkit.org/show_bug.cgi?id=74528
-
- Add build-option for requestAnimationFrame feature.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-12-15 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't add WebCoreSupport and WebKit APIs to include WebCore's include path
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/webcore.prf:
-
-2011-12-15 Michael Brüning <michael.bruning@nokia.com>
-
- [QT][WK2]Add (experimental) viewport info view to Minibrowser/qt.
- https://bugs.webkit.org/show_bug.cgi?id=72893
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This patch extends QQuickWebViewExperimental by a property named
- viewportInfo, which contains the viewport scalability and
- layout and contents size information. This property is exposed to
- QML through the experimental extension for QQuickWebView.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/icons/info.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ViewportInfoItem.qml: Added.
-
-2011-12-15 Shinya Kawanaka <shinyak@google.com>
-
- [chromium] WebViewHost::requestCheckingOfText should return immediately if text is empty.
- https://bugs.webkit.org/show_bug.cgi?id=74586
-
- Reviewed by Hajime Morita.
-
- No new tests. Covered by existing tests.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestCheckingOfText):
- Returns immediately if text is empty.
-
-2011-12-15 Alexander Færøy <ahf@0x90.dk>
-
- [Qt] QtWebKit fails to build on Mac OS X after r102776
- https://bugs.webkit.org/show_bug.cgi?id=74593
-
- Reviewed by Simon Hausmann.
-
- CONFIG =+ link_pkgconfig is needed such that the correct parameters
- are passed to the compiler.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2011-12-14 Tony Chang <tony@chromium.org>
-
- [chromium] Remove redundant third_party entries from chromium DEPS
- https://bugs.webkit.org/show_bug.cgi?id=74472
-
- Reviewed by Kenneth Russell.
-
- * Scripts/update-webkit-chromium: Temporarily keep unversioned trees.
-
-2011-12-14 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, replace $isGit and $isSVN with
- VCSUtils::isGit() and VCSUtils::isSVN().
- https://bugs.webkit.org/show_bug.cgi?id=74485
-
- Reviewed by David Kilzer.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest
- manner. This bug is one of the incremental refactorings to remove all top-level
- code and global variables from prepare-ChangeLog. This patch replaces $isGit and $isSVN
- with VCSUtils::isGit() and VCSUtils::isSVN(). This patch also removes firstDirectoryOrCwd(),
- assuming that no user will mix Git/SVN checkouts and thus we can judge SVN or Git
- just by looking at the current working directory.
-
- * Scripts/prepare-ChangeLog: Removed firstDirectoryOrCwd().
- (diffFromToString):
- (diffCommand):
- (statusCommand):
- (createPatchCommand):
- (diffHeaderFormat):
- (generateFileList):
- (isAddedStatus):
- (isConflictStatus):
- (statusDescription):
- (extractLineRange):
-
-2011-12-14 Sam Weinig <weinig@apple.com>
-
- Remove whitespace from InheritedPropertySheets attributes in
- vsprops files to appease the Visual Studio project migrator.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebug.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugAll.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugCairoCFLite.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginProduction.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginRelease.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseCairoCFLite.vsprops:
- * DumpRenderTree/win/DumpRenderTreeDebug.vsprops:
- * DumpRenderTree/win/DumpRenderTreeDebugAll.vsprops:
- * DumpRenderTree/win/DumpRenderTreeDebugCairoCFLite.vsprops:
- * DumpRenderTree/win/DumpRenderTreeProduction.vsprops:
- * DumpRenderTree/win/DumpRenderTreeRelease.vsprops:
- * DumpRenderTree/win/DumpRenderTreeReleaseCairoCFLite.vsprops:
- * DumpRenderTree/win/ImageDiffDebug.vsprops:
- * DumpRenderTree/win/ImageDiffDebugAll.vsprops:
- * DumpRenderTree/win/ImageDiffDebugCairoCFLite.vsprops:
- * DumpRenderTree/win/ImageDiffProduction.vsprops:
- * DumpRenderTree/win/ImageDiffRelease.vsprops:
- * DumpRenderTree/win/ImageDiffReleaseCairoCFLite.vsprops:
- * MiniBrowser/Configurations/MiniBrowserDebug.vsprops:
- * MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops:
- * MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops:
- * MiniBrowser/Configurations/MiniBrowserProduction.vsprops:
- * MiniBrowser/Configurations/MiniBrowserRelease.vsprops:
- * MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops:
- * TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops:
- * TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinDebug.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinDebugAll.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinDebugCairoCFLite.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinProduction.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinRelease.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinReleaseCairoCFLite.vsprops:
- * WebKitTestRunner/win/InjectedBundleDebug.vsprops:
- * WebKitTestRunner/win/InjectedBundleDebugAll.vsprops:
- * WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops:
- * WebKitTestRunner/win/InjectedBundleProduction.vsprops:
- * WebKitTestRunner/win/InjectedBundleRelease.vsprops:
- * WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops:
- * WinLauncher/WinLauncherDebug.vsprops:
- * WinLauncher/WinLauncherDebugAll.vsprops:
- * WinLauncher/WinLauncherDebugCairoCFLite.vsprops:
- * WinLauncher/WinLauncherProduction.vsprops:
- * WinLauncher/WinLauncherRelease.vsprops:
- * WinLauncher/WinLauncherReleaseCairoCFLite.vsprops:
- * record-memory-win/record-memory-winDebug.vsprops:
- * record-memory-win/record-memory-winDebugAll.vsprops:
- * record-memory-win/record-memory-winDebugCairoCFLite.vsprops:
- * record-memory-win/record-memory-winProduction.vsprops:
- * record-memory-win/record-memory-winRelease.vsprops:
- * record-memory-win/record-memory-winReleaseCairoCFLite.vsprops:
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- Windows build fix.
-
- Move CHECKs out of the destructor.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
- (TestWebKitAPI::B::~B):
- (TestWebKitAPI::TEST):
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- binding a member function should ref/deref the object pointer if needed
- https://bugs.webkit.org/show_bug.cgi?id=74552
-
- Reviewed by Sam Weinig.
-
- Add new tests.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
- (TestWebKitAPI::B::B):
- (TestWebKitAPI::B::~B):
- (TestWebKitAPI::B::ref):
- (TestWebKitAPI::B::deref):
- (TestWebKitAPI::B::f):
- (TestWebKitAPI::B::g):
- (TestWebKitAPI::TEST):
-
-2011-12-14 Hajime Morrita <morrita@chromium.org>
-
- JS_INLINE and WTF_INLINE should be visible from WebCore
- https://bugs.webkit.org/show_bug.cgi?id=73191
-
- Reviewed by Kevin Ollivier.
-
- Removed macro definitions which is now provided by Platform.h
-
- * DumpRenderTree/chromium/config.h:
- * DumpRenderTree/config.h:
- * DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h: Added.
- * DumpRenderTree/ForwardingHeaders/wtf/ExportMacros.h: Added.
- * DumpRenderTree/win/DumpRenderTreePreBuild.cmd: Add new ForwardingHeaders.
- * TestWebKitAPI/config.h:
- * WebKitTestRunner/config.h:
-
-2011-12-14 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed, rolling out r102761.
- http://trac.webkit.org/changeset/102761
- https://bugs.webkit.org/show_bug.cgi?id=74485
-
- we came up with a better fix than this (see comments in bug
- 74485)
-
- * Scripts/prepare-ChangeLog:
- (generateFunctionLists):
- (printDiff):
- (diffCommand):
- (statusCommand):
- (createPatchCommand):
- (generateFileList):
- (isAddedStatus):
- (isConflictStatus):
- (statusDescription):
- (extractLineRange):
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- Work around a bug in the MSVC2005 compiler
- https://bugs.webkit.org/show_bug.cgi?id=74550
-
- Reviewed by Sam Weinig.
-
- Re-enable tests.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
-
-2011-12-14 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Test fonts are not used with Qt5
- https://bugs.webkit.org/show_bug.cgi?id=72513
-
- My last unreviewed buildfix for this crazy bug.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- Another attempt at fixing the Windows build.
-
- Disable all the tests until I can figure out what's going on here.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- Fix the Windows build.
-
- Disable some of the tests for now.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- bind should handle member functions
- https://bugs.webkit.org/show_bug.cgi?id=74529
-
- Reviewed by Sam Weinig.
-
- Add tests.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
- (TestWebKitAPI::A::A):
- (TestWebKitAPI::A::f):
- (TestWebKitAPI::A::addF):
- (TestWebKitAPI::TEST):
-
-2011-12-14 Anders Carlsson <andersca@apple.com>
-
- Add unary and binary bind overloads
- https://bugs.webkit.org/show_bug.cgi?id=74524
-
- Reviewed by Sam Weinig.
-
- Add tests.
-
- * TestWebKitAPI/Tests/WTF/Functional.cpp:
- (TestWebKitAPI::TEST):
- (TestWebKitAPI::multiplyByTwo):
- (TestWebKitAPI::multiplyByOneAndAHalf):
- (TestWebKitAPI::multiply):
- (TestWebKitAPI::subtract):
-
-2011-12-14 Holger Hans Peter Freyther <holger@moiji-mobile.com>
-
- [Qt] Test fonts are not used with Qt5
- https://bugs.webkit.org/show_bug.cgi?id=72513
-
- MIPS and SH4 buildfix after r102776 and r102795.
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-12-14 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed speculative MIPS and SH4 buildfix after r102776.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-12-14 Andreas Kling <kling@webkit.org>
-
- Make my e-mail address a little more awesome.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-14 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Rollout r102769, because it broke Qt-4.8 builds.
-
- * qmake/mkspecs/features/webcore.prf:
-
-2011-12-14 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Test fonts are not used with Qt5
- https://bugs.webkit.org/show_bug.cgi?id=72513
-
- Reviewed by Simon Hausmann.
-
- Don't depend on Q_WS_X11 anymore since it's not the Qt5
- way to detect the platform. Make the guards depend
- on our own configtest for fontconfig. For Qt4 we can still
- use the preassumption that we have it on Linux.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::initializeFonts):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/main.cpp:
- (main): Additionally remove a nonsense piece of code that was
- trying to reset the font settings - which is not necessary -
- after we have already returned from main.
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/Target.pri: Remove unnecessary fontconfig linkage
- from WTR. It is not needed. We set up the fonts via the injected bundle.
- * qmake/config.tests/fontconfig/fontconfig.cpp: Added.
- (main):
- * qmake/config.tests/fontconfig/fontconfig.pro: Added.
- * qmake/mkspecs/features/features.prf:
- * qmake/sync.profile:
-
-2011-12-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't add WebCoreSupport and WebKit APIs to include WebCore's include path
-
- Followup to r102679
-
- https://bugs.webkit.org/show_bug.cgi?id=74413
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/webcore.prf:
-
-2011-12-14 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Mobile theme could use a little refresh
- https://bugs.webkit.org/show_bug.cgi?id=74293
-
- Have MiniBrowser use the mobile theme when not
- passed --desktop.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
-
-2011-12-14 João Paulo Rechi Vita <jprvita@openbossa.org>
-
- [Qt] [Gardening] Remove qt-4.7 layout tests dir
- https://bugs.webkit.org/show_bug.cgi?id=74426
-
- Building trunk now depends on Qt >= 4.8, so no need to keep this directory
- on the tree.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.qt_version):
- (QtPort.baseline_search_path):
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_search_path):
-
-2011-12-14 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, make $isGit and $isSVN be used only
- through parameter passing
- https://bugs.webkit.org/show_bug.cgi?id=74485
-
- Reviewed by Ryosuke Niwa.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest
- manner. This bug is one of the incremental refactorings to remove all top-level
- code and global variables from prepare-ChangeLog. In this patch,
- we make the following global variables be used only through parameter passing.
- - $isGit
- - $isSVN
-
- * Scripts/prepare-ChangeLog:
- (generateFunctionLists):
- (printDiff):
- (diffFromToString):
- (diffCommand):
- (statusCommand):
- (createPatchCommand):
- (diffHeaderFormat):
- (generateFileList):
- (isAddedStatus):
- (isConflictStatus):
- (statusDescription):
- (extractLineRange):
-
-2011-12-14 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] DeviceOrientationClientMockQt should be removed in favor of DeviceOrientationClientMock
- https://bugs.webkit.org/show_bug.cgi?id=74417
-
- Reviewed by Simon Hausmann.
-
- Based on original patch by Kenneth Christiansen.
-
- Already covered by current tests.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::~DumpRenderTree):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockDeviceOrientation):
-
-2011-12-03 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Bad text rendering since r101343
- https://bugs.webkit.org/show_bug.cgi?id=73744
-
- Reviewed by Martin Robinson.
-
- Turn cairo hint metrics off for better font metrics reporting in
- the tests. This is especially important for SVG.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings):
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::initializeGtkSettings):
-
-2011-12-13 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] Remove several global variables from prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=74389
-
- Reviewed by David Kilzer.
-
- We are planning to write unit-tests for prepare-ChangeLog in a run-leaks_unittest
- manner. This bug is one of the incremental refactorings to remove all top-level
- code and global variables from prepare-ChangeLog. In this patch,
- we make the following global variables being used only through parameter passing.
- - %paths
- - $changedFiles
- - $conflictFiles
- - $functionLists
- - $bugURL
-
- * Scripts/prepare-ChangeLog:
- (findChangeLogs):
- (generateNewChangeLogs):
- (processPaths):
- (generateFileList):
- (firstDirectoryOrCwd):
-
-2011-12-13 Anders Carlsson <andersca@apple.com>
-
- Add a very bare-bones implementation of bind and Function to WTF
- https://bugs.webkit.org/show_bug.cgi?id=74462
-
- Reviewed by Sam Weinig.
-
- Add basic tests for WTF::Function and WTF::bind.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/Functional.cpp: Added.
- (TestWebKitAPI::returnFortyTwo):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-12-13 Robin Dunn <robin@alldunn.com>
-
- [wx] Add a URL argument to wxWebView constructor.
- https://bugs.webkit.org/show_bug.cgi?id=74316
-
- Reviewed by Kevin Ollivier.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (MyApp::OnInit):
- * wx/browser/browser.cpp:
- (MyApp::OnInit):
-
-2011-12-13 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- watchlist: Add watchlist for EFL, CMake and libsoup code and put myself on it.
- https://bugs.webkit.org/show_bug.cgi?id=74430
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-12-13 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Pull in FreeType and decrease check-out complexity for Android
- https://bugs.webkit.org/show_bug.cgi?id=74401
-
- Decrease the check-out complexity by removing the need to first run
- "update-webkit-chromium --chromium" prior to running it with
- "--chromium-android", which was caused by an unversioned third_party/
- directory being created. This moves the Android NDK to Source/WebKit/
- chromium/, coming from third_party/ in that directory.
-
- Reviewed by Adam Barth.
-
- * Scripts/update-webkit-chromium:
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
-
-2011-12-13 Andy Wingo <wingo@igalia.com> and Martin Robinson <mrobinson@igalia.com>
-
- build-jsc passing incorrect args to buildGtkProject
- https://bugs.webkit.org/show_bug.cgi?id=74308
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/build-webkit: Instead of invoking buildGtkProject with
- another argument about webkit2, unshift a --disable-webkit2
- argument onto the buildArgs.
- * Scripts/webkitdirs.pm: Remove $enableWebKit2 arg. Only save autogen.sh
- arguments for WebKit to prevent unnecessary reconfiguration when build-webkit
- and build-jsc are run one after the other.
-
-2011-12-13 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(102679): It broke Qt5-WK1 build
- https://bugs.webkit.org/show_bug.cgi?id=74413
-
- Unreviewed buildfix.
-
- * qmake/mkspecs/features/webcore.prf: Temporarily revert a part of r102679 until a proper fix.
-
-2011-12-13 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed speculativ debug buildfix after r102679.
-
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/main.cpp:
-
-2011-12-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Get rid of layering violations in includes
-
- WebKit/qt/API and WebKit/qt/WebCoreSupport should not be included
- in the webcore.prf, but rather in each target that specificly needs
- headers in these location. We used to include them directly in webcore
- since we had layering violations between WebCore and WebKit, but now
- that they are gone there's no reason to do that.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/launcherwindow.h:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/webcore.prf:
- * qmake/mkspecs/features/webkit2.prf:
-
-2011-12-13 János Badics <dicska@gmail.com>
-
- [NRWT] It crashes intermittently when there are WebProcess crashes
- https://bugs.webkit.org/show_bug.cgi?id=73451
-
- Use self.poll() instead of self._proc.poll() because it checks if self._proc is None or not.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._check_for_crash):
-
-2011-12-13 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix GTK+ API docs build.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Ignore WebKitUIClient since it's private
- API.
-
-2011-12-13 Kenichi Ishibashi <bashi@chromium.org>
-
- Reviewed, removed one of my email addresses to use the apprpriate one.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-12 Ádám Kallai <Kallai.Adam@stud.u-szeged.hu>
-
- [Qt] Fix skip list search path and expected file search path in ORWT
- https://bugs.webkit.org/show_bug.cgi?id=74281
-
- Expected file search path fixed.
-
- Print all used skipped list and expected search path in verbose mode similar to NRWT.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/old-run-webkit-tests:
- (buildPlatformResultHierarchy):
- (buildPlatformTestHierarchy):
- (readSkippedFiles):
-
-2011-12-12 Nándor Huszka <huszka.nandor@stud.u-szeged.hu>
-
- [Qt] Missing layoutTestController.dumpWillCacheResponse
- https://bugs.webkit.org/show_bug.cgi?id=74287
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpWillCacheResponse):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-12-12 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] platform/gtk/fonts/custom-font-missing-glyphs.html fails on 64-bit Debug
- https://bugs.webkit.org/show_bug.cgi?id=73771
-
- Reviewed by Gustavo Noronha Silva.
-
- When using a fallback font during testing, always use DejaVu Sans. This prevents
- falling back to DejaVu Serif on some systems.
-
- * DumpRenderTree/gtk/fonts/fonts.conf: Fall back to DejaVu Sans.
-
-2011-12-08 Pierre Rossi <pierre.rossi@gmail.com>
-
- Add myself as a committer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-12 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt] [WK2] Support customizing popup menus with QML
- https://bugs.webkit.org/show_bug.cgi?id=73560
-
- Reviewed by Tor Arne Vestbø.
-
- Add an Item Selector to our WebView using the experimental API.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ItemSelector.qml: Added.
-
-2011-12-12 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] MiniBrowser should only visualize mock touch points when in non-desktop mode
- https://bugs.webkit.org/show_bug.cgi?id=74283
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::sendTouchEvent):
-
-2011-12-12 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, move into a method the top-level code
- to show ChangeLogs diff and open ChangeLogs in an editor
- https://bugs.webkit.org/show_bug.cgi?id=74266
-
- Reviewed by Ryosuke Niwa.
-
- We are planning to write unit-tests for prepare-ChangeLog
- in a run-leaks_unittest manner. This patch is one of the incremental
- refactorings to remove all top-level code and global variables from
- prepare-ChangeLog.
-
- * Scripts/prepare-ChangeLog: Moved the top-level code to show ChangeLogs diff into printDiff().
- Moved the top-level code to open ChangeLogs in an editor into openChangeLogs().
- Renamed @changed_files to @changedFiles.
- Renamed %conflict_files to %conflictFiles.
- (generateFunctionLists):
- (printDiff):
- (openChangeLogs):
-
-2011-12-11 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] Move top-level code to resolve conflicted ChangeLogs into a method
- https://bugs.webkit.org/show_bug.cgi?id=74257
-
- Reviewed by Ryosuke Niwa.
-
- We are planning to write unit-tests for prepare-ChangeLog
- in a run-leaks_unittest/ manner. This patch is one of the incremental
- refactorings to remove all top-level code and global variables from
- prepare-ChangeLog.
-
- * Scripts/prepare-ChangeLog: Moved top-level code to get the latest ChangeLogs
- into getLatestChangeLogs(), and moved top-level code to resolve conflicted ChangeLogs
- into resolveConflictedChangeLogs().
- (getLatestChangeLogs):
- (resolveConflictedChangeLogs):
-
-2011-12-11 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] Move top-level code to generate a new ChangeLog into a method
- https://bugs.webkit.org/show_bug.cgi?id=74253
-
- Reviewed by David Kilzer.
-
- The objective is to make prepare-ChangeLog a loadable Perl module for unit testing,
- which requires to remove top-level code and global variables. This patch is one of
- the incremental refactorings for that.
-
- * Scripts/prepare-ChangeLog: Moved top-level code to generate a new ChangeLog into generateNewChangeLogs().
- (generateFunctionLists):
- (findChangeLogs):
- (generateNewChangeLogs):
- (generateFileList): Removed an unnecessary variable $didChangeRegressionTests.
-
-2011-12-10 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, move top-level code to find ChangeLogs into a method
- https://bugs.webkit.org/show_bug.cgi?id=74175
-
- Reviewed by Ryosuke Niwa.
-
- The objective is to make prepare-ChangeLog a loadable Perl module for unit testing.
- This requires to remove top-level code. This patch is one of the incremental refactorings
- for that.
-
- * Scripts/prepare-ChangeLog: Moved top-level code to find ChangeLogs into findChangeLogs().
- (findChangeLogs):
-
-2011-12-10 Andreas Kling <kling@webkit.org>
-
- Add my Apple e-mail to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-09 Dirk Pranke <dpranke@chromium.org>
-
- chromium win build: revert build_webkit_exes_from_webkit_gyp change
- https://bugs.webkit.org/show_bug.cgi?id=74225
-
- This change sets build_webkit_exes_from_webkit_gyp back to 1;
- the "All.gyp" solution doesn't work on windows.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2011-12-09 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt] Click's count is limited to three continuous clicks.
- https://bugs.webkit.org/show_bug.cgi?id=45666
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update m_time at every call to leapForward, so double clicks
- event are correctly sent by EventSender.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::leapForward):
-
-2011-12-09 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] Reduce top-level code in prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=74172
-
- Reviewed by Ryosuke Niwa.
-
- The objective is to make prepare-ChangeLog a loadable Perl module for unit testing.
- This requires to remove top-level code. This patch is one of the incremental refactorings
- for that.
-
- * Scripts/prepare-ChangeLog: Moved some top-level code into generateFunctionLists().
- (generateFunctionLists):
-
-2011-12-09 Sam Weinig <sam@webkit.org>
-
- Expose a WKConnectionRef which represents the connection to/from the WebProcess/UIProcess
- https://bugs.webkit.org/show_bug.cgi?id=74218
-
- Reviewed by Anders Carlsson.
-
- Add a test of the WKConnectionRef API.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/WKConnection.cpp: Added.
- (TestWebKitAPI::didCreateConnection):
- (TestWebKitAPI::connectionDidReceiveMessage):
- (TestWebKitAPI::connectionDidClose):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp: Added.
- (TestWebKitAPI::connectionDidReceiveMessage):
- (TestWebKitAPI::WKConnectionTest::WKConnectionTest):
- (TestWebKitAPI::WKConnectionTest::initialize):
-
-2011-12-09 David Levin <levin@chromium.org>
-
- Hash* iterators should allow comparison between const and const versions.
- https://bugs.webkit.org/show_bug.cgi?id=73370
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/TestWebKitAPI.gypi: Add the new test file to the build.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Ditto.
- * TestWebKitAPI/Tests/WTF/HashMap.cpp: Added.
- (TestWebKitAPI::TEST): Add a test for the new functionality.
-
-2011-12-09 Dirk Pranke <dpranke@chromium.org>
-
- chromium: visual studio projects are busted when build_webkit_exes_from_webkit_gyp==0
- https://bugs.webkit.org/show_bug.cgi?id=74212
-
- Reviewed by Tony Chang.
-
- The change introduced in r102201 to split the executables out of
- WebKit.gyp apparently doesn't work right on Windows, since
- WebKit.gyp and Tools.gyp refer to dependent projects by
- different relative paths (it appears gyp doesn't normalize the
- paths). This change moves Tools.gyp to be in the same directory
- as WebKit.gyp (and All.gyp), which should fix this and
- conveniently will also solve the problem of how to add Tools.gyp
- to the chromium DEPS file.
-
- * Tools.gyp: Renamed to ../Source/WebKit/chromium/Tools.gyp
-
-2011-12-09 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In prepare-ChangeLog, move top-level code to fetch a bug description from URL into a method
- https://bugs.webkit.org/show_bug.cgi?id=74173
-
- Reviewed by Ryosuke Niwa.
-
- The objective is to make prepare-ChangeLog a loadable Perl module for unit testing.
- This requires to remove top-level code. This patch is one of the incremental refactorings
- for that.
-
- * Scripts/prepare-ChangeLog: Moved top-level code to fetch a bug description from URL into fetchBugDescriptionFromURL().
- (fetchBugDescriptionFromURL):
-
-2011-12-09 Tony Chang <tony@chromium.org>
-
- Switch the chromium mac bots to using skia test results
- https://bugs.webkit.org/show_bug.cgi?id=74201
-
- Reviewed by Ryosuke Niwa.
-
- This is reverting http://trac.webkit.org/changeset/97781 and changing
- the name in master.cfg to no longer have cg in the name.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (appendCustomBuildFlags):
- (RunWebKitTests.start):
-
-2011-12-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Remove a wrongly placed ASSERT.
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
-
-2011-12-09 Cary Clark <caryclark@google.com>
-
- layout_test update to accommodate new use_skia=1 default on Chromium-Mac
- https://bugs.webkit.org/show_bug.cgi?id=74118
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (get):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_versions):
- (ChromiumMacPortTest.test_graphics_type):
-
-2011-12-09 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use new qmake option in Qt5 to prevent dependency issues with GNUmake
-
- The GNUmake + gcc_MD_depends options together produce .d files using GCC, but
- this failed when moving files in the source tree, as the .d file would contain
- stale dependencies on the old source file location. By keeping the object files
- (and hence the depdendency files) in a proper tree structure inside the objects
- directory we can prevent this failure.
-
- A side benefit is that we can also have objects with the same name inside the
- same project.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/unix/default_pre.prf:
-
-2011-12-09 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed. Update unit test after r102412.
-
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois):
-
-2011-12-09 Kentaro Hara <haraken@chromium.org>
-
- REGRESSION(r102105): run-bindings-tests should output full diff results
- https://bugs.webkit.org/show_bug.cgi?id=74166
-
- Reviewed by Adam Barth.
-
- Since r102105, the output of run-bindings-tests is truncated to 500 characters.
- run-bindings-tests should output full diff results.
-
- * Scripts/webkitpy/bindings/main.py: Replaced e.message_with_output() with e.output.
- (BindingsTests.generate_from_idl):
- (BindingsTests.generate_supplemental_dependency):
- (BindingsTests.detect_changes):
-
-2011-12-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix compilation with newly separated Qt 5 QtQuick module
- https://bugs.webkit.org/show_bug.cgi?id=73990
-
- Reviewed by Kenneth Rohde Christiansen, tweaked by Csaba Osztrogonác.
-
- Fix QtQuick includes after move from QtDeclarative to QtQuick.
-
- * MiniBrowser/qt/BrowserWindow.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2011-12-08 Adam Klein <adamk@chromium.org>
-
- [MutationObservers] V8LazyEventHandler breaks microtask delivery semantics
- https://bugs.webkit.org/show_bug.cgi?id=73492
-
- Reviewed by Adam Barth.
-
- Add eventSender.scheduleAsynchronousKeyDown, needed to cause a
- keypress event without any script on the stack.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::keyDown):
- (KeyDownTask::KeyDownTask):
- (KeyDownTask::runIfValid):
- (EventSender::scheduleAsynchronousKeyDown):
- * DumpRenderTree/chromium/EventSender.h:
-
-2011-12-08 Hayato Ito <hayato@chromium.org>
-
- [gdb] Pretty printer for a 8-bit version of WTF::StringImpl and LChar*.
- https://bugs.webkit.org/show_bug.cgi?id=73980
-
- Reviewed by Tony Chang.
-
- * gdb/webkit.py:
- (guess_string_length):
- (ustring_to_string):
- (lstring_to_string):
- (LCharStringPrinter):
- (LCharStringPrinter.to_string):
- (WTFStringImplPrinter.get_length):
- (WTFStringImplPrinter.to_string):
- (WTFStringImplPrinter.is_8bit):
- (WTFStringPrinter.stringimpl_ptr):
- (WTFStringPrinter.get_length):
- (WTFStringPrinter.to_string):
- (add_pretty_printers.lookup_function):
-
-2011-12-08 Pierre Rossi <pierre.rossi@gmail.com>
-
- Drop ENABLE_NO_LISTBOX_RENDERING, and make it a runtime decision.
- https://bugs.webkit.org/show_bug.cgi?id=73916
-
- Reviewed by Kent Tamura.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-12-08 Adrienne Walker <enne@google.com>
-
- Unreviewed contributor additions to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-08 David Reveman <reveman@chromium.org>
-
- [Chromium] Add per-tile painting flag to DumpRenderTree and rename AcceleratedDrawing to AcceleratedPainting in chromium specific code.
- https://bugs.webkit.org/show_bug.cgi?id=74017
-
- Reviewed by James Robinson.
-
- Add support for command line flag enable-per-tile-painting in DumpRenderTree.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAcceleratedPaintingEnabled):
- (TestShell::setPerTilePaintingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver._wrapper_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2011-12-08 Dirk Pranke <dpranke@chromium.org>
-
- create a "SystemHost" object for webkitpy to slim down the Host object
- https://bugs.webkit.org/show_bug.cgi?id=72680
-
- Reviewed by Eric Siedel.
-
- This creates a SystemHost object that other objects that should
- only have dependencies on functionality in webkitpy.common.system
- can use; this will allow them to not require a full Host.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/common/system/systemhost.py: Added.
- * Scripts/webkitpy/common/system/systemhost_mock.py: Added.
-
-2011-12-08 Chris Fleizach <cfleizach@apple.com>
-
- AX: platform/mac/accessibility/search-with-frames.html crashes
- https://bugs.webkit.org/show_bug.cgi?id=74093
-
- Reviewed by Darin Adler.
-
- Take care of the case when an incoming element is null.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (uiElementForSearchPredicateCallback):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
-
-2011-12-08 Alexander Færøy <ahf@0x90.dk>
-
- [Qt] Visualize mock point ID's in the MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=74098
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/qml/MockTouchPoint.qml:
-
-2011-12-08 Dominic Mazzoni <dmazzoni@google.com>
-
- Accessibility: AccessibilityController should support listening to notifications on all elements.
- https://bugs.webkit.org/show_bug.cgi?id=72866
-
- Adds addNotificationListener and removeNotificationListener methods
- to AccessibilityController, to listen to notifications on any element
- rather than a specific element. Mac (DRT and WKTR) and Chromium (DRT)
- implementations are all contained in this change.
-
- On Mac, refactors AccessibilityNotificationHandler into its own
- source file that can be used by both AccessibilityController and
- AccessibilityUIElement. (Both DRT and WKTR.)
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityController.cpp:
- (addNotificationListenerCallback):
- (removeNotificationListenerCallback):
- (AccessibilityController::getJSClass):
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::notificationReceived):
- (AccessibilityController::addNotificationListenerCallback):
- (AccessibilityController::removeNotificationListenerCallback):
- * DumpRenderTree/chromium/AccessibilityController.h:
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::addNotificationListener):
- (AccessibilityController::removeNotificationListener):
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::addNotificationListener):
- (AccessibilityController::removeNotificationListener):
- * DumpRenderTree/mac/AccessibilityNotificationHandler.h: Added.
- * DumpRenderTree/mac/AccessibilityNotificationHandler.mm: Added.
- (-[NSString createJSStringRef]):
- (-[AccessibilityNotificationHandler init]):
- (-[AccessibilityNotificationHandler setPlatformElement:]):
- (-[AccessibilityNotificationHandler dealloc]):
- (-[AccessibilityNotificationHandler setCallback:]):
- (-[AccessibilityNotificationHandler startObserving]):
- (-[AccessibilityNotificationHandler _notificationReceived:]):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::addNotificationListener):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (notificationListenerProc):
- (AccessibilityController::addNotificationListener):
- (AccessibilityController::removeNotificationListener):
- (AccessibilityController::winNotificationReceived):
- (AccessibilityController::winAddNotificationListener):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::addNotificationListener):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- (WTR::AccessibilityController::addNotificationListener):
- (WTR::AccessibilityController::removeNotificationListener):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.h:
- (WTR::AccessibilityController::logAccessibilityEvents):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp:
- (WTR::AccessibilityTextMarker::AccessibilityTextMarker):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp:
- (WTR::AccessibilityTextMarkerRange::AccessibilityTextMarkerRange):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm: Added.
- (WTR::AccessibilityController::addNotificationListener):
- (WTR::AccessibilityController::removeNotificationListener):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h: Added.
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm: Added.
- (-[NSString createJSStringRef]):
- (-[AccessibilityNotificationHandler init]):
- (-[AccessibilityNotificationHandler setPlatformElement:]):
- (-[AccessibilityNotificationHandler dealloc]):
- (-[AccessibilityNotificationHandler setCallback:]):
- (-[AccessibilityNotificationHandler startObserving]):
- (-[AccessibilityNotificationHandler _notificationReceived:]):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::AccessibilityUIElement):
- (WTR::AccessibilityUIElement::verticalScrollbar):
- (WTR::AccessibilityUIElement::addNotificationListener):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-12-08 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Unreviewed buildfix after r102352.
-
- * qmake/mkspecs/features/webkit2.prf:
-
-2011-12-08 Adam Roben <aroben@apple.com>
-
- Make finding crash logs by PID work on Snow Leopard
-
- Crash Reporter on Snow Leopard doesn't set the "app_description" extended attribute that we
- were using to check the PID of the crashed process. (Crash Reporter on Lion does.) Now we
- read the first line of the crash log and pull the PID out of there.
-
- Fixes <http://webkit.org/b/74094> "webkit-patch crash-log <process> <PID>" doesn't work on
- Snow Leopard
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs._find_newest_log_darwin): Read the first line of the crash log to get the process
- name and PID for the log, rather than checking the Lion-only app_description extended
- attribute. We now also reject the log if the process name doesn't match what we expect.
-
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (make_mock_crash_report_darwin): Added. Returns a mock crash report given a process name and
- PID.
- (CrashLogsTest.assertLinesEqual): Added. This is a compatibility shim around
- unittest.TestCase.assertMultiLineEqual, which didn't exist before Python 2.7.
- (CrashLogsTest.test_find_log_darwin): Made the mock crash reports more believable by using
- the new make_mock_crash_report_darwin function. Also added tests for files that can't be
- read, files that actually contain a crash log for some other process, and files that are
- misformatted.
-
- * Scripts/webkitpy/common/system/filesystem.py: Removed FileSystem.getxattr, which is now
- unused.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.__init__): Removed xattr support, which is now unused.
- (MockFileSystem.open_text_file_for_reading): Changed to actually pass the file's data to
- ReadableTextFileObject. This function was completely broken before!
- (ReadableBinaryFileObject.__init__): Made the data parameter non-optional to try to prevent
- bugs like the above.
- (ReadableTextFileObject.__init__): Added. Wraps the data in a StringIO object so we can do
- things like readline() and seek().
-
- (ReadableTextFileObject.close):
- (ReadableTextFileObject.read):
- Added. We override the superclass implementation to account for using a StringIO object.
-
- (ReadableTextFileObject.readline):
- (ReadableTextFileObject.seek):
- Added. These just call through to StringIO.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
- Changed to use make_mock_crash_report_darwin.
-
-2011-12-06 Jon Lee <jonlee@apple.com>
-
- [WK2] Add permissions support (73960)
- https://bugs.webkit.org/show_bug.cgi?id=73960
- <rdar://problem/10357008>
-
- Reviewed by Darin Adler.
-
- Add null function item to comply with added callback to WKPageUIClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-12-08 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] Visualize mock points in the Qt MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=74074
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- (MiniBrowserApplication::sendTouchEvent):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- * MiniBrowser/qt/icons/touchpoint.png: Added.
- * MiniBrowser/qt/qml/MockTouchPoint.qml: Added.
-
-2011-12-08 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] WebKitTestRunner crashes with debug builds
- https://bugs.webkit.org/show_bug.cgi?id=74090
-
- Reviewed by Tor Arne Vestbø.
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::platformInitialize): Call QQuickWebView::platformInitialize
- to ensure WTF/JSC threading is initialized.
-
-2011-12-08 Dirk Pranke <dpranke@chromium.org>
-
- fix build-webkit --chromium after breakage in r102201
- https://bugs.webkit.org/show_bug.cgi?id=74031
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2011-12-08 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed, rolling out r102280.
- http://trac.webkit.org/changeset/102280
- https://bugs.webkit.org/show_bug.cgi?id=74031
-
- Chromium/Windows build is broken
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2011-12-08 Nayan Kumar K <nayankk@motorola.com>
-
- Adding myself to committers list.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-07 Michael Saboff <msaboff@apple.com>
-
- StringBuilderTest.Append and StringBuilderTest.ToStringPreserveCapacity are failing.
- https://bugs.webkit.org/show_bug.cgi?id=73995
-
- Reenabled failing tests that the code part of the patch fixes.
-
- Reviewed by Geoffrey Garen.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- (TestWebKitAPI::TEST):
-
-2011-12-07 MORITA Hajime <morrita@google.com>
-
- [filter-build-webkit] should not emit reset color when --no-color is given
- https://bugs.webkit.org/show_bug.cgi?id=73992
-
- Reviewed by Daniel Bates.
-
- Stop printing control sequences when --no-color is given.
- After this change, the filter runs nicely even on environments
- like Emacs compilation-mode which cannot understand the control sequence.
-
- * Scripts/filter-build-webkit:
- (printLine):
-
-2011-12-07 Eric Seidel <eric@webkit.org>
-
- Use free memory to determine if we have space for DRT instances instead of total memory
- https://bugs.webkit.org/show_bug.cgi?id=74021
-
- Reviewed by Adam Barth.
-
- This will hopefully make the Mac buildbots behave better.
-
- I also reduced the expected memory needed per DRT now that
- we're properly accounting for the system memory in our calculations.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.total_bytes_memory):
- (PlatformInfo._compute_free_bytes_from_vm_stat_output):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.total_bytes_memory):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_child_processes):
-
-2011-12-07 Dirk Pranke <dpranke@chromium.org>
-
- fix build-webkit --chromium after breakage in r102201
- https://bugs.webkit.org/show_bug.cgi?id=74031
-
- Reviewed by Tony Chang.
-
- r102201 introduced a change to the chromium build that splits
- the executables out of WebKit.gyp into other gyp files, and adds
- a new "All.gyp" that builds everything. However, I forgot to
- update the build script to use All.gyp.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2011-12-07 Tom Zakrajsek <tomz@codeaurora.org>
-
- Moved myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-30 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix debug shlib build with V8.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/qtwebkit.prf: Don't link jscore with
- v8 builds.
-
-2011-11-30 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] V8 build fixes.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/javascriptcore.prf: Don't add
- Source/Thirdparty to the include search path here.
- * qmake/mkspecs/features/webcore.prf: Instead it belongs here, because it's
- used when building WebCore as well as using it, because header files like
- GraphicsContext3D.h include stuff from ThirdParty.
-
-2011-12-07 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Fix project file generation for the Android bot after r102201
- https://bugs.webkit.org/show_bug.cgi?id=73996
-
- The gyp refactoring in r102201 was didn't explicitly exclude
- the Android operating system in Tools/Tools.gyp, which broke
- as gcc_version is not defined for that configuration.
-
- Reviewed by Andreas Kling.
-
- * Tools.gyp:
-
-2011-12-07 Vsevolod Vlasov <vsevik@chromium.org>
-
- Unreviewed. Disabled failing tests on chromium.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- (TestWebKitAPI::TEST):
-
-2011-12-06 Dirk Pranke <dpranke@chromium.org>
-
- binaries in webkit.gyp should be split into a new file to break circular dependencies on webkit_support
- https://bugs.webkit.org/show_bug.cgi?id=73382
-
- Reviewed by Tony Chang.
-
- XCode (and hence GYP) can't handle circular dependencies between
- files (and projects). Accordingly, although the binaries in
- WebKit.gyp depend on webkit_support and webkit_support depends
- on webkit, we don't mention the latter dependency in the file.
- To fix this, this change moves the binaries like DRT into a new
- GYP file, and modifies gyp_webkit to build from that file
- instead of WebKit.gyp.
-
- * Tools.gyp: Added.
-
-2011-12-06 Adam Roben <aroben@apple.com>
-
- Add a pid parameter to CrashLogs.find_newest_log
-
- When a PID is passed, only crash logs corresponding to a crashed process with that PID are
- considered.
-
- Fixes <http://webkit.org/b/73942> webkitpy provides no way to specify the PID of the crashed
- process whose crash log you want to find
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs.find_newest_log): Added an optional pid parameter.
- (CrashLogs._find_newest_log_darwin): Added a pid parameter. When specified, we look at each
- candidate log's app_description extended attribute to see if that log corresponds to a
- crashed process with the specified PID.
-
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- (CrashLogsTest.test_find_newest_log_darwin): Added a few more mock crash logs with various
- contents and PIDs. Added tests that show that the pid parameter to find_newest_log is
- respected. Also fixed an erroneous use of assertTrue instead of assertEqual.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem.getxattr): Added. On Darwin, calls through to the xattr module. On other
- systems, raises a KeyError, mimicking the behavior on Darwin when the given attribute isn't
- present.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.__init__): Added an optional xattrs parameter. Documented other parameters.
- (MockFileSystem.getxattr): Added. Just pulls the given attribute out of the xattrs
- dictionary.
-
- * Scripts/webkitpy/tool/commands/queries.py:
- (CrashLog): Added help text. Added an optional PID parameter.
- (CrashLog.execute): Pass the PID, if any, through to find_newest_log.
-
-2011-12-06 Adam Roben <aroben@apple.com>
-
- Wait for Crash Reporter to finish even when it lets the crashed process die quickly
-
- NRWT was only waiting for Crash Reporter in cases where it was keeping the crashed process
- alive beyond the normal timeout limit. In cases where the crashed process was able to die
- faster, NRWT would assume that Crash Reporter had finished even though it often was still
- running, which would lead to an incorrect crash log being picked up.
-
- Part of <http://webkit.org/b/71380> NRWT incorrectly associates crash logs with tests
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- (ServerProcess.write):
- (ServerProcess._check_for_crash): Changed to use new set_crashed function instead of setting
- .crashed directly. Added wait_for_crash_reporter parameter, which we pass along to
- set_crashed.
-
- (ServerProcess._handle_timeout): Fixed a logic error that would cause .crashed and
- .timed_out both to be set to True in cases where Crash Reporter took a long time to run. Now
- we bail out of handling the failure as a timeout if we find out that the process in fact
- crashed. We tell _check_for_crash not to wait for Crash Reporter because we've already done
- so.
- (ServerProcess.set_crashed): Added. When the process crashes, we wait for Crash Reporter to
- finish running (unless directed otherwise) so we can be sure the crash log has been saved to
- disk.
-
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.is_crash_reporter): Added.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._check_for_driver_crash): Changed to use set_crashed. (This also fixed a typo
- that would have partially broken crash detection on Windows, if NRWT worked on Windows.)
-
-2011-12-06 Adam Barth <abarth@webkit.org>
-
- NRWT fails on unreleased versions of Mac OS X
- https://bugs.webkit.org/show_bug.cgi?id=72748
-
- Reviewed by Dirk Pranke.
-
- Hopefully this patch will make NRWT work on future versions on Mac OS X.
- Most of the infrastructure was already in place, but there were some
- asserts that failed. I've tested this patch by haxoring the version
- detection logic to simulate an unknown version. We might need to
- iterate based on feedback from folks with a real future version.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__):
- - mac-future is an allowed port_name that's used internally by
- webkitpy to represent future versions of Mac OS X.
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_versions):
- - Test that we don't throw exceptions when dealing with future
- versions of Mac OS X.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._expectations_from_skipped_files):
- - Demote this logging message to "debug". It's expected that
- mac-future doesn't have a Skipped file.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.__init__):
- - Re-order some code in these constructors so that
- self._operating_system is available to the ApplePort constructor.
-
-2011-12-06 Tommy Widenflycht <tommyw@google.com>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-06 Peter Beverloo <peter@chromium.org>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-06 Kentaro Hara <haraken@chromium.org>
-
- [Refactoring] In webkitpy/bindings/main.py, replace subprocess.Popen() with Executive
- https://bugs.webkit.org/show_bug.cgi?id=73637
-
- Reviewed by Adam Barth.
-
- This patch replaces subprocess.Popen() with Executive, similar to other
- Python scripts in webkitpy/. I manually confirmed that run-bindings-tests
- works well for cases where no exception is raised, no exception is raised
- but diff is found, and ScriptError is raised.
-
- * Scripts/run-bindings-tests:
- (main):
- * Scripts/webkitpy/bindings/main.py: Replaces subprocess.Popen() with Executive.
- (BindingsTests.__init__):
- (BindingsTests.generate_from_idl):
- (BindingsTests.generate_supplemental_dependency):
- (BindingsTests.detect_changes):
-
-2011-12-05 Alexander Færøy <alexander.faeroy@nokia.com>
-
- [Qt] MiniBrowser should default to touch behavior
- https://bugs.webkit.org/show_bug.cgi?id=73863
-
- Reviewed by Chang Shu.
-
- MiniBrowser currently defaults to the traditional desktop behaviour
- instead of touch behaviour which is prefered.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (printHelp):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- (WindowOptions::setUseTraditionalDesktopBehavior):
- (WindowOptions::useTraditionalDesktopBehavior):
-
-2011-12-05 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- webkit.py: Really fix the printing of StringImpl now that 8-bit strings are present.
- https://bugs.webkit.org/show_bug.cgi?id=73878
-
- Reviewed by Tony Chang.
-
- r98624 turned StringImpl::m_data into StringImpl::{m_data8,m_data16}.
- r98785 made webkit.py always use m_data16, which does not work when
- the string is an 8-bit string (such as KURL::string()).
-
- I was not able to directly call StringImpl::is8Bit() in the Python
- code, so I just reproduced the implementation there.
-
- * gdb/webkit.py:
- (WTFStringPrinter.is_8bit): Reproduced StringImpl::is8Bit().
- (WTFStringPrinter.to_string):
- (JSCUStringPrinter.is_8bit): Reproduced StringImpl::is8Bit().
- (JSCUStringPrinter.to_string):
-
-2011-12-05 Eric Seidel <eric@webkit.org>
-
- Up the "expected ram for each DRT instance" to 400MB instead of 300MB
- in hopes of making the Snow Leopard bot stop timing out.
-
- Unreviewed.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_child_processes):
-
-2011-12-05 Eric Seidel <eric@webkit.org>
-
- NRWT creates too many workers on RAM-limited machines
- https://bugs.webkit.org/show_bug.cgi?id=73847
-
- Reviewed by Dirk Pranke.
-
- Make NRWT restrict its number of workers when there isn't enough
- RAM to support them.
- Also re-enable parallel testing on the Mac bots which were
- failing due to not enough ram.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
- * Scripts/webkitpy/common/host.py:
- (Host.__init__):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.cpu_count):
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.__init__):
- (PlatformInfo.display_name):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.display_name):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_child_processes):
- (PortTest.test_pretty_patch_os_error):
-
-2011-12-05 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- Last mouse event could be lost if a JS call to eventSender.leapForward is made
- https://bugs.webkit.org/show_bug.cgi?id=73366
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Empty the entire event queue when requested besides using
- sendEvent instead of postEvent to make sure all events were
- delivered.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::sendOrQueueEvent):
- (WTR::EventSenderProxy::replaySavedEvents):
-
-2011-12-05 Adam Barth <abarth@webkit.org>
-
- [Chromium] Remove no-longer-used forwarding headers in the WebKit API
- https://bugs.webkit.org/show_bug.cgi?id=73845
-
- Reviewed by Darin Fisher.
-
- Update includes to point to the new header locations.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/EventSender.cpp:
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/GamepadController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- * DumpRenderTree/chromium/PlainTextController.cpp:
- * DumpRenderTree/chromium/Task.cpp:
- * DumpRenderTree/chromium/TestNavigationController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- * DumpRenderTree/chromium/TestWebPlugin.h:
- * DumpRenderTree/chromium/TextInputController.cpp:
- * DumpRenderTree/chromium/WebPermissions.cpp:
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
-
-2011-12-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Aharon Lanin to the contributors list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-05 Jarred Nicholls <jarred@sencha.com>
-
- Moving myself from contributors to committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-05 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-05 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt] Rename QQuickWebView::canStop property to just loading
- https://bugs.webkit.org/show_bug.cgi?id=73813
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Replaced references to WebView.canStop with WebView.loading.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2011-12-05 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests: limit --child-processes properly on apple mac
- https://bugs.webkit.org/show_bug.cgi?id=73856
-
- Reviewed by Adam Roben.
-
- Fix typos in r102013 so that we correctly pass --child-processes=1 on
- the apple mac bots temporarily.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Temporarily set --child-process=1 on Mac because 20+ tests are timing out
- https://bugs.webkit.org/show_bug.cgi?id=73840
-
- Reviewed by Simon Fraser.
-
- Temporarily go back to single process mode on Mac.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-05 Adam Roben <aroben@apple.com>
-
- Redeploy apple-macpro-7 and apple-xserve-1
-
- These slaves have been sitting idle since we removed our Leopard builders in r97496.
-
- Fixes <http://webkit.org/b/73829> REGRESSION (r97496): apple-macpro-7 and apple-xserve-1 are
- sitting idle
-
- Reviewed by Sam Weinig.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Re-added apple-macpro-7 and
- apple-xserve-1. The former is now doing "SnowLeopard Intel Debug (WebKit2 Tests)", which
- allows apple-xserve-9 to be a build-only slave, and the latter is doing "Lion Intel Debug
- (WebKit2 Tests)".
-
-2011-12-05 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Make the UI of the MiniBrowser slightly nicer
-
- Rubberstamped by Simon Hausmann.
-
- - Add proper padding
- - Show feedback when pressing on the toolbar icons
- - Make the text entry better looking
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2011-12-05 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- NRWT should handle duplicated expectations
- https://bugs.webkit.org/show_bug.cgi?id=69750
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- (TestExpectations._report_errors):
- (TestExpectations._add_expectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_add_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_tests):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.test_expectations):
- (WebKitPort.skipped_tests):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_test_expectations):
-
-2011-12-04 Eric Seidel <eric@webkit.org>
-
- After success with Mac, Win and Gtk, turning on parallel testing
- by default for all platforms (except Qt).
-
- We'll add more platforms to the blacklist if we see problems.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-04 Sam Weinig <sam@webkit.org>
-
- Add tests for RetainPtr::adoptNS/adoptCF
- https://bugs.webkit.org/show_bug.cgi?id=73470
-
- Reviewed by Adam Roben and Darin Adler.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp: Added.
- (TestWebKitAPI::TEST):
- Test that adopting using adoptCF creates a RetainPtr with a
- value whose retain count is 1.
-
- * TestWebKitAPI/Tests/WTF/ns: Added.
- * TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm: Added.
- (TestWebKitAPI::TEST):
- Test that adopting using adoptNS creates a RetainPtr with a
- value whose retain count is 1.
-
-2011-12-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Include cairo, pixman and gnome-icon-theme in the jhbuild modules
- https://bugs.webkit.org/show_bug.cgi?id=73748
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/jhbuild.modules: Add some new modules the jhbuild moduleset.
-
-2011-12-04 Philippe Normand <pnormand@igalia.com>
-
- Another GTK build fix after r101922.
-
- Rubber-stamped by Martin Robinson.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pathToLocalResource): Plug possible String ref leak.
-
-2011-12-04 Xan Lopez <xlopez@igalia.com>
-
- Fix compiler warning in LayoutTestController
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): fix warning.
-
-2011-12-04 Alexandre Mazari <scaroo@gmail.com>
-
- Add missing methods used by fast/notifications tests to LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=63616
-
- Reviewed by Martin Robinson.
-
- Add missing simulateDesktopNotificationClick method used by
- fast/notifications. Provide a default implementation for
- areDesktopNotificationPermissionRequestsIgnored and
- ignoreDesktopNotificationPermissionRequests.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): call into the port implementation.
- (simulateDesktopNotificationClickCallback): ditto.
- (ignoreDesktopNotificationPermissionRequestsCallback): default implementation.
- (LayoutTestController::staticFunctions): declare new methods.
- (LayoutTestController::ignoreDesktopNotificationPermissionRequests): default implementation.
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::areDesktopNotificationPermissionRequestsIgnored):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::simulateDesktopNotificationClick): dummy implementation.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::simulateDesktopNotificationClick): ditto.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::simulateDesktopNotificationClick): ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::simulateDesktopNotificationClick): ditto.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::simulateDesktopNotificationClick): ditto.
-
-2011-12-03 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Don't log document events in DRT
- https://bugs.webkit.org/show_bug.cgi?id=73746
-
- Reviewed by Martin Robinson.
-
- Stop connecting globally to document-related events.
-
- * DumpRenderTree/gtk/AccessibilityCallbacks.cpp:
- (connectAccessibilityCallbacks): Removed connections.
- (disconnectAccessibilityCallbacks): Removed disconnections.
-
-2011-12-03 Dan Bernstein <mitz@apple.com>
-
- Added a test for <rdar://problem/10523721> Crash at WebCore::SubresourceLoader::releaseResources
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SubresourceErrorCrash.mm: Added.
- (TestWebKitAPI::TEST):
-
-2011-12-03 Philippe Normand <pnormand@igalia.com>
-
- Another GTK build fix after r101922.
-
- Rubber-stamped by Martin James Robinson.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pathToLocalResource): return value needs to
- be a URI.
-
-2011-12-03 Martin Robinson <mrobinson@igalia.com>
-
- Small fix for my previous patch. Do not try to delete a member
- of a dictionary that does not exist.
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/run-with-jhbuild:
- (install_and_run_jhbuild):
-
-2011-12-03 Martin Robinson <mrobinson@igalia.com>
-
- Fix jhbuild installation for people who have unusual MAKE environment
- variables such as 'make -j4' as the jhbuild build does not handle it.
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/run-with-jhbuild:
- (install_and_run_jhbuild): Remove any MAKE environment variable before building jhbuild.
-
-2011-12-03 Martin Robinson <mrobinson@igalia.com>
-
- Fix the update-webkitgtk-libs script to properly trigger a jhbuild installation
- when run for the first time.
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/update-webkitgtk-libs: Fix first run.
-
-2011-12-03 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, GTK build fix after r101922.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pathToLocalResource): Added sentinel in
- g_build_filename call.
-
-2011-12-03 Philippe Normand <pnormand@igalia.com>
-
- GTK API tests build fix. Run the tests inside jhbuild.
-
- Rubber-stamped by Gustavo Noronha Silva.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__):
- (TestRunner.run._error_handler):
- (TestRunner):
- (TestRunner.run):
-
-2011-12-03 Martin Robinson <mrobinson@igalia.com>
-
- Small build fix. Properly specify the path to the locally installed jhbuild.
-
- * Scripts/update-webkitgtk-libs: Fix jhbuild path.
-
-2011-12-03 Martin Robinson <mrobinson@igalia.com>
-
- [GTK][DRT] Normalize file:///tmp/LayoutTests in LayoutTestController::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=67256
-
- Reviewed by Philippe Normand.
-
- Implement LayoutTestController::pathToLocalResource for GTK+. Instead of passing
- WEBKIT_TEST_FONTS to the GTK+ test harnesses, pass a more generic WEBKIT_TOP_LEVEL,
- which points to the more generic top-level path of the WebKit checkout. This code is
- duplicated between WK1 and WK2 harnesses because we do not currently have a way to
- share code here.
-
- If WEBKIT_TOP_LEVEL is not provided, we search for the top level based on the binary
- location. This will cause the fallback to fail if you build into a non-typical location
- or even fake it with a symlink. In this case it's important to use the environment variable.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (getTopLevelPath): Added.
- (initializeFonts): Use the new helper to get the font path.
- * DumpRenderTree/gtk/DumpRenderTreeGtk.h: Expose the new helper.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::pathToLocalResource):Use the new helper to normalize
- test paths.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):Pass the top-level path of the
- checkout instead of passing the font path.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::getTopLevelPath): Added this helper.
- (WTR::inititializeFontConfigSetting): Use the helper to find the font path.
-
-2011-12-02 David Levin <levin@chromium.org>
-
- Rename WTF class from TemporarilyChange to TemporaryChange.
- https://bugs.webkit.org/show_bug.cgi?id=73479
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/ForwardingHeaders/wtf/TemporarilyChange.h: Removed.
- * DumpRenderTree/ForwardingHeaders/wtf/TemporaryChange.h: Added.
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/TemporaryChange.cpp: Renamed from Tools/TestWebKitAPI/Tests/WTF/TemporarilyChange.cpp.
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-12-02 Tony Chang <tony@chromium.org>
-
- [NRWT] reftest asserts intermittently on the Qt-WK2 bot
- https://bugs.webkit.org/show_bug.cgi?id=73453
-
- Reviewed by Ryosuke Niwa.
-
- We used to assert if a ref test didn't generate pixel results. Instead, just claim it is a failing test.
- The verbose output will include the failure reason.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py: Don't assert, return FailureReftestNoImagesGenerated instead.
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py: Remove stray letter t.
- * Scripts/webkitpy/layout_tests/models/test_failures.py: Add a new failure type: FailureReftestNoImagesGenerated
- (determine_result_type):
- (FailureReftestNoImagesGenerated.__init__):
- (FailureReftestNoImagesGenerated):
- (FailureReftestNoImagesGenerated.message):
- * Scripts/webkitpy/layout_tests/port/test.py: Add a test case for integration tests.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Update test counts.
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_unexpected_failures):
- (EndToEndTest.test_end_to_end):
-
-2011-12-02 Ryosuke Niwa <rniwa@webkit.org>
-
- ChangeLog should be able to parse annotated changelogs
- https://bugs.webkit.org/show_bug.cgi?id=72703
-
- Reviewed by Eric Seidel.
-
- Make parse_entries_from_file aware of svn blame annotation such as "100000 ossy@webkit.org ",
- and extract the revision number for each entry.
-
- Also add a support to extract "svn blame" result from svn/git checkout to scm classes.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-12-02 Eric Seidel <eric@webkit.org>
-
- Enable parallel testing for Win and Gtk bots
- after confirming with Lucas and Martin the bots should be OK.
-
- Unreviewed. (I ran the idea by Lucas and Martin.)
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-02 Martin Robinson <mrobinson@igalia.com>
-
- Try to fix the GTK+ build.
-
- * gtk/jhbuild.modules: Properly specify the glib-networking
- dependency for soup.
-
-2011-12-02 Martin Robinson <mrobinson@igalia.com>
-
- Fix a syntax error in the committers.py file.
-
- * Scripts/webkitpy/common/config/committers.py: Add a missing comma.
-
-2011-12-02 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Alan Stearns and Peter Linss to the contributors list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-12-02 Kent Tamura <tkent@chromium.org>
-
- [Chromium] Fix compilation warnings for ASSERT()
- https://bugs.webkit.org/show_bug.cgi?id=73623
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- - Fix fprintf format: %s -> %d for __LINE__
- - Do nothing for ASSERT() if NDEBUG.
-
-2011-12-02 Eric Seidel <eric@webkit.org>
-
- Enable parallel testing for all Mac bots.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-02 Eric Seidel <eric@webkit.org>
-
- Enable parallel testing for run-webkit-tests on Mac Lion.
- I plan to move all the machines to parallel testing shortly
- but we're starting with Lion.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (platformIsReadyForParallelTesting):
-
-2011-12-02 Kausalya Madhusudhanan <kmadhusu@chromium.org>
-
- Added helper method to identify whether the page has custom page size style.
- https://bugs.webkit.org/show_bug.cgi?id=73585
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::hasCustomPageSizeStyle):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-12-01 Ryosuke Niwa <rniwa@webkit.org>
-
- [NRWT] reftest should support having multiple references per test
- https://bugs.webkit.org/show_bug.cgi?id=73613
-
- Reviewed by Dirk Pranke.
-
- Add a support for having multiple reference files for a single test.
-
- Because a reftest succeeds when it matches at least one of expected matches and fails when it matches
- at least one of expected mismatches, we compare expected mismatches first in order to minimize
- the number of reference files to open on DRT.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (interpret_test_failures): Remove checks no longer applicable.
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_interpret_test_failures): Ditto.
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__): Remove a bunch of code and just call port.reference_files.
- (SingleTestRunner._driver_input):
- (SingleTestRunner.run):
- (SingleTestRunner._run_reftest): Compare the output of the test to each reference file.
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput.__init__): Remove ref_file and is_mismatch_reftest because they are no longer used.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.reference_files): Renamed from _reference_file_for. Returns a list of expectation, filename pairs.
- (_parse_reftest_list): Now supports parsing multiple entries for a single test.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_parse_reftest_list):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_unexpected_failures):
- (MainTest.test_reftest_skipped_if_unlisted): Renamed from test_missing_and_unexpected_results.
- (EndToEndTest.test_end_to_end):
- (EndToEndTest.test_reftest_with_two_notrefs): Added.
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Build libsoup without gnome dependencies (like keyring).
-
- * gtk/jhbuild.modules:
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Also build gcrypt and p11-kit, and make them dependencies of
- gnutls.
-
- * gtk/jhbuild.modules:
-
-2011-12-02 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fixes for Windows build.
-
- * waf/build/wxpresets.py:
-
-2011-12-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch post, post-commits, upload should warn when posting to a closed bug, and offer to reopen it
- https://bugs.webkit.org/show_bug.cgi?id=32006
-
- I decided not to make it warn, and just have it re-open the bug.
- That's not that different from today's behavior which will
- just silently attach the patch.
-
- This patch makes behavior between upload and land-safely consistent
- (previously one would assign patches and the other would not)
- as well as adds the ability for both to ensure that the bug is open.
-
- To test this I had to add a few more methods to MockBugzilla which
- (positively) affected a few other test results.
-
- I also made AbstractStep keep a cached copy of the Bug object
- and used the cached copy where appropriate (including for 'bug_title').
- This should reduce the number of bug fetches we perform.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- * Scripts/webkitpy/tool/steps/ensurebugisopenandassigned.py: Added.
- * Scripts/webkitpy/tool/steps/postdiff.py:
- * Scripts/webkitpy/tool/steps/postdiffforcommit.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Also pass --no-interact to jhbuild when updating dependencies.
-
- * Scripts/update-webkitgtk-libs:
-
-2011-12-02 Alice Boxhall <aboxhall@chromium.org>
-
- Make _build_path check more thoroughly that build paths exist.
- https://bugs.webkit.org/show_bug.cgi?id=73601
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort._build_path):
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Add libffi to the jhbuild modules list as a glib dependency.
-
- Rubber-stamped by Martin Robinson.
-
- * gtk/jhbuild.modules:
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- Build fix. Use internal pcre on glib, make gnutls a dependency of
- glib-networking, unset AR_FLAGS for jhbuild builds, and run jhbuild
- in non-interactive mode.
-
- * Scripts/update-webkitgtk-libs:
- * gtk/jhbuild.modules:
- * gtk/run-with-jhbuild:
-
-2011-12-02 Adam Roben <aroben@apple.com>
-
- Fix for Python 2.6
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunUnitTests.countFailures): Removed the flags parameter to re.split, which was only added
- in Python 2.7, and used whitespace instead of start-of-string/end-of-string markers when
- searching for "Tests that timed out:" etc. This makes our check less strict, but it
- shouldn't matter given the kinds of content we parse.
-
-2011-12-02 Adam Roben <aroben@apple.com>
-
- Fix names of failed/timed out tests in run-api-tests output
-
- Fixes <http://webkit.org/b/73663> run-api-tests prints suite names twice for failed or timed
- out tests
-
- We were ending up with the suite name doubled (e.g., "WebKit2.WebKit2.MouseMoveAfterCrash").
-
- Reviewed by Simon Fraser.
-
- * Scripts/run-api-tests:
- (runTest): Don't prepend the suite name to $test. It's already been prepended at the start
- of this function.
-
-2011-11-29 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] generate-gtkdoc should respect build type
- https://bugs.webkit.org/show_bug.cgi?id=73296
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Pass the --debug to the generate-gtkdoc script.
- * gtk/common.py: If --build is passed give preference to the Debug build directory.
-
-2011-12-02 Tony Chang <tony@chromium.org>
-
- [nrwt] fix wdiff output
- https://bugs.webkit.org/show_bug.cgi?id=73604
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.wdiff_text):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_wdiff_text):
-
-2011-12-02 Adam Roben <aroben@apple.com>
-
- Teach build.webkit.org to display how many unit tests failed or timed out
-
- Fixes <http://webkit.org/b/73659> It's hard to tell how many unit tests are failing on
- build.webkit.org
-
- We now display something like "5 unit tests failed or timed out". Eventually we might want
- to split out how many failure vs. timeouts there were.
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (TestWithFailureCount): Moved this class up to the top of the file so it is before any other
- classes that may want to subclass it.
- (RunUnitTests): Changed to inherit from TestWithFailureCount.
- (RunUnitTests.countFailures): Added. Counts the number of tests following the "Tests that
- timed out:" and "Tests that failed:" lines, if present.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (StubStdio):
- (StubRemoteCommand):
- Added these two stub classes to mimic buildbot's RemoteCommand and log classes.
-
- (RunUnitTestsTest.assertFailures): Helper method to check that we interpreted the results of
- the test run correctly.
-
- (RunUnitTestsTest.test_no_failures_or_timeouts):
- (RunUnitTestsTest.test_one_failure):
- (RunUnitTestsTest.test_multiple_failures):
- (RunUnitTestsTest.test_one_timeout):
- (RunUnitTestsTest.test_multiple_timeouts):
- (RunUnitTestsTest.test_multiple_failures_and_timeouts):
- Test various cases.
-
-2011-12-02 Adam Roben <aroben@apple.com>
-
- Teach prepare-ChangeLog to treat master.cfg as a Python file
-
- Fixes <http://webkit.org/b/73658> prepare-ChangeLog doesn't show modified classes/functions
- in buildbot's master.cfg
-
- Reviewed by Darin Adler.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges): Use get_function_line_ranges_for_python if the filename is
- master.cfg.
-
-2011-12-02 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Create a wrapper script that knows how to install jhbuild and run commands with it
- https://bugs.webkit.org/show_bug.cgi?id=73669
-
- Reviewed by Gustavo Noronha Silva.
-
- Add a wrapper script that knows how to install jhbuild and also to wrap commands
- in the jhbuild shell.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProject): Use the new wrapper script.
- (mustReRunAutogen): Ditto.
- (buildAutotoolsProject): Ditto.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver.cmd_line): Ditto.
- * gtk/run-with-jhbuild: Added.
-
-2011-12-01 Adam Roben <aroben@apple.com>
-
- Teach check-webkit-style how to check the syntax of JSON files
-
- Fixes <http://webkit.org/b/73590> check-webkit-style doesn't flag JSON syntax errors
-
- I previously landed this patch as r101711, but the new tests failed on Snow Leopard. This
- patch is identical to that one except for two change: assertIn(a, b) (which is new to Python
- 2.7) has been replaced with assertTrue(a in b), and the test_missing_closing_brace test has
- been removed, since its output differs by platform.
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/style/checker.py:
- (_all_categories): Added JSONChecker's categories to the set of all categories.
- (FileType): Added a JSON type. Incremented other types.
- (CheckerDispatcher._file_type): Use the JSON file type for .json files.
- (CheckerDispatcher._create_checker): Use a JSONChecker for JSON files.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherDispatchTest.assert_checker_json): Added this helper method.
- (CheckerDispatcherDispatchTest.test_json_paths): Added. Based on test_python_paths.
-
- * Scripts/webkitpy/style/checkers/jsonchecker.py: Added. (I didn't name this just "json",
- which would have matched our other checkers, because I couldn't figure out how to call
- "json.loads" without hitting namespace conflicts.)
- (JSONChecker.__init__): Turn of line filtering so that we always check the whole file, not
- just the modified lines from a patch.
- (JSONChecker.check): Try to parse the lines as JSON. Mark an error if there was an
- exception.
- (JSONChecker.line_number_from_json_exception): Parse the json modules exception message to
- try to extract a line number.
-
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py: Added.
- (MockErrorHandler.__init__):
- (MockErrorHandler.turn_off_line_filtering):
- (MockErrorHandler.__call__):
- Helper class. Copied from xml_unittest.py.
-
- (JSONCheckerTest.test_line_number_from_json_exception): Test the
- line_number_from_json_exception helper method.
-
- (JSONCheckerTest.assert_no_error):
- (JSONCheckerTest.assert_error):
- Helper methods to assert that we did or didn't get an error.
-
- (JSONCheckerTest.mock_handle_style_error): Helper method.
-
- (JSONCheckerTest.test_conflict_marker):
- (JSONCheckerTest.test_single_quote):
- (JSONCheckerTest.test_init):
- (JSONCheckerTest.test_no_error):
- Test various cases.
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Add glib, glib-networking, gnutls and libsoup to jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=73664
-
- Reviewed by Martin Robinson.
-
- This patch adds our HTTP library and its main dependencies; this
- should not affect layout or rendering.
-
- * gtk/jhbuild.modules:
-
-2011-12-02 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Also run DumpRenderTree under jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=73646
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkDriver.cmd_line):
-
-2011-12-02 Hajime Morrita <morrita@chromium.org>
-
- Unreviewed, rolling out r101751 and r101775.
- http://trac.webkit.org/changeset/101751
- http://trac.webkit.org/changeset/101775
- https://bugs.webkit.org/show_bug.cgi?id=73191
-
- breaks Windows build
-
- * DumpRenderTree/chromium/config.h:
- * DumpRenderTree/config.h:
- * TestWebKitAPI/config.h:
- * WebKitTestRunner/config.h:
-
-2011-12-02 Kentaro Hara <haraken@chromium.org>
-
- Move run-bindings-tests implementation to webkitpy/bindings/main.py
- https://bugs.webkit.org/show_bug.cgi?id=73619
-
- Reviewed by Adam Barth.
-
- As run-bindings-tests has been growing, this patch just moves its implementation
- to webkitpy/bindings/main.py to integrate with the rest of webkitpy.
-
- No change in behavior.
-
- * Scripts/run-bindings-tests:
- (main):
- * Scripts/webkitpy/bindings/__init__.py: Added.
- * Scripts/webkitpy/bindings/main.py: Added.
- (BindingsTests.__init__):
- (BindingsTests.generate_from_idl):
- (BindingsTests.generate_supplemental_dependency):
- (BindingsTests.detect_changes):
- (BindingsTests.run_tests):
-
-2011-12-01 Ilya Tikhonovsky <loislo@chromium.org>
-
- Tools/Scripts: eliminate find_test_files from Port class.
- https://bugs.webkit.org/show_bug.cgi?id=73553
-
- rebaseline.py and chromium_gpu.py use Port.find_test_files() the same way as it is used in Port.tests()
- I'd like to replace all calls to find_test_files with tests and eliminate find_tests_files.
- Also I'll move _is_test_file() and related functions close to Port.tests().
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.tests):
- (Port.is_reference_html_file):
- (Port._has_supported_extension):
- (Port._is_test_file):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_find_no_paths_specified):
- (PortTest.test_find_one_test):
- (PortTest.test_find_glob):
- (PortTest.test_find_with_skipped_directories):
- (PortTest.test_find_with_skipped_directories_2):
- (PortTest.test_is_test_file):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (_default_tests_paths):
- (ChromiumGpuLinuxPort.tests):
- (ChromiumGpuCgMacPort.tests):
- (ChromiumGpuMacPort.tests):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- (ChromiumGpuTest.test_default_tests_paths.test_paths):
- (ChromiumGpuTest.test_default_tests_paths):
- (ChromiumGpuTest.test_test_files.test_paths):
- (ChromiumGpuTest):
- (ChromiumGpuTest.test_test_files):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run.RecordingTestDriver.run_test):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (OptimizeBaselines._optimize_baseline):
- (OptimizeBaselines.execute):
- (AnalyzeBaselines._analyze_baseline):
- (AnalyzeBaselines.execute):
-
-2011-12-01 Hajime Morrita <morrita@chromium.org>
-
- JS_INLINE and WTF_INLINE should be visible from WebCore
- https://bugs.webkit.org/show_bug.cgi?id=73191
-
- Reviewed by Kevin Ollivier.
-
- Removed macro definitions which is now provided by Platform.h
-
- * DumpRenderTree/chromium/config.h:
- * DumpRenderTree/config.h:
- * TestWebKitAPI/config.h:
- * WebKitTestRunner/config.h:
-
-2011-12-01 Hayato Ito <hayato@chromium.org>
-
- Explicitly pass tolerance=0 to port.diff_image in case of RefTestMismatch failure.
- https://bugs.webkit.org/show_bug.cgi?id=73406
-
- Reviewed by Ryosuke Niwa.
-
- WebKitPort's image_diff uses tolerance='0.1' in default.
- When reftests fail, we should use tolerace=0 when diff-ing images.
-
- Since ImageDiff on chromium port doesn't use tolerance value as of now,
- this change doesn't affect chromium port's behavior.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.diff_image):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.diff_image):
- (WebKitPort._start_image_diff_process):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_tolerance.ImageDiffTestPort.diff_image):
-
-2011-12-01 Adam Klein <adamk@chromium.org>
-
- Add Chromium ToT GTest build bots (and group selection support) to flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=73599
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
- ():
- (htmlForTestTypeSwitcher):
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testHtmlForTestTypeSwitcherGroup):
-
-2011-12-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Parse reftest.list and extract types of ref tests
- https://bugs.webkit.org/show_bug.cgi?id=66837
-
- Reviewed by Dirk Pranke.
-
- Add support for reftest.list to base port.
-
- * Scripts/webkitpy/common/find_files.py:
- (find):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.__init__):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__): Initialize self._reftest_list. It's a dictionary mapping from a test directory
- to a dictionary of {test path: ("==" or "!=", reference file path)}
- (Port._get_reftest_list): Added; calls test_file.parse_reftest_list to fill self._reftest_list.
- (Port._reference_file_for): Added; obtains the reference file name given a test name.
- (Port.is_reftest): Added; Calls _reference_file_for.
- (Port.reftest_expected_filename): Calls _reference_file_for.
- (Port.reftest_expected_mismatch_filename): Ditto.
- (Port.find_test_files):
- (is_reference_html_file): Treat any file that starts with ref- or notref- or ends with
- -expected, -expected-mismach, -ref, or -notref as a reference file.
- (_is_test_file):
- (_parse_reftest_list): Added.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_is_test_file):
- (PortTest.test_parse_reftest_list):
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- (DryrunDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (unit_test_filesystem.add_test_file):
- (unit_test_filesystem.add_file):
- (unit_test_filesystem):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run.RecordingTestDriver.run_test):
- (MainTest.test_unexpected_failures):
- (MainTest.test_missing_and_unexpected_results):
- (EndToEndTest.test_end_to_end):
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- (Rebaseliner._compile_rebaselining_tests):
-
-2011-12-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r101711.
- http://trac.webkit.org/changeset/101711
- https://bugs.webkit.org/show_bug.cgi?id=73605
-
- Broke 3 webkitpy tests (Requested by rniwa on #webkit).
-
- * Scripts/webkitpy/style/checker.py:
- (_all_categories):
- (FileType):
- (CheckerDispatcher._file_type):
- (CheckerDispatcher._create_checker):
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherDispatchTest.assert_checker_cpp):
- (CheckerDispatcherDispatchTest.test_cpp_paths):
- * Scripts/webkitpy/style/checkers/jsonchecker.py: Removed.
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py: Removed.
-
-2011-12-01 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed. Add myself to GStreamer and WebKit2GTK+ watchlists.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-12-01 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Read fonts from the jhbuild root
- https://bugs.webkit.org/show_bug.cgi?id=73487
-
- Reviewed by Gustavo Noronha Silva.
-
- Read fonts from the jhbuild root instead of from the system. This will ensure
- that all testers use the same fonts instead of leaving this up to luck.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Load fonts from jhbuild root.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server): Pass an environment variable containing
- the path to the jhbuild root.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::inititializeFontConfigSetting): Load fonts from the jhbuild root.
-
-2011-12-01 Adam Roben <aroben@apple.com>
-
- Teach check-webkit-style how to check the syntax of JSON files
-
- Fixes <http://webkit.org/b/73590> check-webkit-style doesn't flag JSON syntax errors
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/style/checker.py:
- (_all_categories): Added JSONChecker's categories to the set of all categories.
- (FileType): Added a JSON type. Incremented other types.
- (CheckerDispatcher._file_type): Use the JSON file type for .json files.
- (CheckerDispatcher._create_checker): Use a JSONChecker for JSON files.
-
- * Scripts/webkitpy/style/checker_unittest.py:
- (CheckerDispatcherDispatchTest.assert_checker_json): Added this helper method.
- (CheckerDispatcherDispatchTest.test_json_paths): Added. Based on test_python_paths.
-
- * Scripts/webkitpy/style/checkers/jsonchecker.py: Added. (I didn't name this just "json",
- which would have matched our other checkers, because I couldn't figure out how to call
- "json.loads" without hitting namespace conflicts.)
- (JSONChecker.__init__): Turn of line filtering so that we always check the whole file, not
- just the modified lines from a patch.
- (JSONChecker.check): Try to parse the lines as JSON. Mark an error if there was an
- exception.
- (JSONChecker.line_number_from_json_exception): Parse the json modules exception message to
- try to extract a line number.
-
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py: Added.
- (MockErrorHandler.__init__):
- (MockErrorHandler.turn_off_line_filtering):
- (MockErrorHandler.__call__):
- Helper class. Copied from xml_unittest.py.
-
- (JSONCheckerTest.test_line_number_from_json_exception): Test the
- line_number_from_json_exception helper method.
-
- (JSONCheckerTest.assert_no_error):
- (JSONCheckerTest.assert_error):
- Helper methods to assert that we did or didn't get an error.
-
- (JSONCheckerTest.mock_handle_style_error): Helper method.
-
- (JSONCheckerTest.test_conflict_marker):
- (JSONCheckerTest.test_single_quote):
- (JSONCheckerTest.test_init):
- (JSONCheckerTest.test_missing_closing_brace):
- (JSONCheckerTest.test_no_error):
- Test various cases.
-
-2011-12-01 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add a helper function to find the current executable's path
- https://bugs.webkit.org/show_bug.cgi?id=73473
-
- Reviewed by Gustavo Noronha Silva.
-
- Update MiniBrowser to not pass the binary directory as an environment variable.
- This means that you can move the binaries around without it breaking.
-
- * MiniBrowser/gtk/main.c:
- (main): No longer set the environment variable.
- * WebKitTestRunner/GNUmakefile.am: No longer add the directory path define.
- * WebKitTestRunner/gtk/main.cpp: Ditto.
-
-2011-12-01 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed. Fix bad file =(.
-
- * gtk/jhbuild.modules:
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProject):
-
-2011-12-01 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Add freetype to our jhbuild setup
- https://bugs.webkit.org/show_bug.cgi?id=73488
-
- Reviewed by Martin Robinson.
-
- This adds the first library to our jhbuild setup, and makes sure
- build-webkit calls autogen.sh and make with jhbuild, so that the
- environment is properly set.
-
- * Scripts/webkitdirs.pm:
- (saveSum):
- (hashFile):
- (runAutogenForAutotoolsProject): save md5sum of jhbuild-related files, and
- call autogen under jhbuild run;
- (mustRunAutogen): generalized the arguments change checking to also force
- running autogen when jhbuild files change;
- (buildAutotoolsProject): run make under jhbuild;
- * gtk/jhbuild.modules: add freetype.
-
-2011-12-01 Dominic Mazzoni <dmazzoni@google.com>
-
- Fix WebKitTestRunner compile warnings with XCode 3.2
- https://bugs.webkit.org/show_bug.cgi?id=73378
-
- Reviewed by Chris Fleizach.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp:
- (WTR::AccessibilityTextMarker::AccessibilityTextMarker):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp:
- (WTR::AccessibilityTextMarkerRange::AccessibilityTextMarkerRange):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::AccessibilityUIElement):
- (WTR::AccessibilityUIElement::verticalScrollbar):
-
-2011-12-01 Adam Roben <aroben@apple.com>
-
- Allow committers to use their Trac credentials to force builds on the buildbots
-
- Fixes <http://webkit.org/b/73353>
-
- A new class, CommitterAuth, handles authentication of WebKit committers. CommitterAuth uses
- three files to do its job: a config file that contains a list of WebKit committer usernames,
- an htdigest file that contains Trac credentials, and JSON file that gives the paths for
- those two files.
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/committer_auth.py: Added.
- (Error): Basic wrapper around Exception that we use for cases where we couldn't even check
- whether credentials were valid or not.
- (CommitterAuth.__init__): Just store the path to auth.json.
- (CommitterAuth.auth_json): Load, parse, and return auth.json.
- (CommitterAuth.auth_json_filename): Return the path to auth.json.
- (CommitterAuth.authenticate): Return true if the user is a WebKit committer and their
- credentials are valid Trac credentials. Return false otherwise or if an error occurred while
- checking those conditions.
- (CommitterAuth.is_webkit_committer): Return true if the user is a WebKit committer. Return
- false otherwise or if an exception was thrown.
- (CommitterAuth.is_webkit_trac_user): Return true if the username/password are present in the
- Trac credentials htdigest file. Return false otherwise or if an exception was thrown.
-
- (CommitterAuth.open_auth_json_file):
- (CommitterAuth.open_trac_credentials_file):
- (CommitterAuth.open_webkit_committers_file):
- Open the specified file. These are mostly useful for testing purposes.
-
- (CommitterAuth.trac_credentials_filename):
- (CommitterAuth.webkit_committers_filename):
- Return the path to the specified file by retrieving it from auth.json.
-
- (CommitterAuth.webkit_committers): Load and parse the committers file and extract the list
- of WebKit committers from it.
-
- * BuildSlaveSupport/build.webkit.org-config/committer_auth_unittest.py: Added.
- (CMStringIO.__enter__):
- (CMStringIO.__exit__):
- Helper class that makes it possible to use StringIO with the "with" statement.
-
- (open_override): Helper context manager for overriding the global "open" function
- temporarily.
-
- (CommitterAuthTest.setUp): Set up a somewhat-mocked CommitterAuth that is used by most
- tests.
- (CommitterAuthTest.fake_open_function): Returns a function that can be used in place of
- "open" to test that the expected path was opened.
- (CommitterAuthTest.test_authentication_success): Test that committers can authenticate
- successfully.
- (CommitterAuthTest.test_committer_without_trac_credentials_fails): Test that committers who
- somehow have no Trac account can't authenticate.
-
- (CommitterAuthTest.test_fail_to_open_auth_json_file):
- (CommitterAuthTest.test_fail_to_open_trac_credentials_file):
- (CommitterAuthTest.test_fail_to_open_webkit_committers_file):
- Test what happens when we can't open the three files we depend upon.
-
- (CommitterAuthTest.test_implements_IAuth): Test that we fulfill buildbot's expectations for
- an authentication class.
-
- (CommitterAuthTest.test_invalid_auth_json_file):
- (CommitterAuthTest.test_invalid_committers_file):
- (CommitterAuthTest.test_invalid_trac_credentials_file):
- (CommitterAuthTest.test_missing_auth_json_keys):
- Test what happens when the three files we depend upon are invalid in some way.
-
- (CommitterAuthTest.test_open_auth_json_file):
- (CommitterAuthTest.test_open_trac_credentials_file):
- (CommitterAuthTest.test_open_webkit_committers_file):
- Test that we open the expected paths.
-
- (CommitterAuthTest.test_trac_credentials_filename):
- (CommitterAuthTest.test_webkit_committers_filename):
- Test that we extract filenames out of auth.json correctly.
-
- (CommitterAuthTest.test_non_committer_fails):
- (CommitterAuthTest.test_unknown_user_fails):
- (CommitterAuthTest.test_username_is_prefix_of_valid_user):
- (CommitterAuthTest.test_wrong_password_fails):
- Test various failed authentication attempts.
-
- (CommitterAuthTest.test_webkit_committers): Test that we can parse the list of WebKit
- committers out of the committers file correctly.
-
- (CommitterAuthTest.fake_auth_json_file):
- (CommitterAuthTest.invalid_auth_json_file):
- (CommitterAuthTest.fake_committers_file):
- (CommitterAuthTest.invalid_committers_file):
- (CommitterAuthTest.fake_htdigest_file):
- (CommitterAuthTest.invalid_htdigest_file):
- Return various fake files for testing.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Specify an instance of CommitterAuth
- to be used for authentication in the web interface, and specify that only authenticated
- users may force builds.
-
-2011-12-01 Adam Roben <aroben@apple.com>
-
- Add an HTDigestParser class to webkitpy
-
- Fixes <http://webkit.org/b/73575> webkitpy doesn't provide a way to parse htdigest files
-
- This class can be used to parse Apache's htdigest files and check whether a given
- username/realm/password tuple is present in the file. Eventually this will be used for
- authenticating users on build.webkit.org (<http://webkit.org/b/73353>).
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/net/htdigestparser.py: Added.
- (HTDigestParser.__init__): Stores the parsed representation of the file.
- (HTDigestParser.authenticate): Hashes the username/realm/password tuple to generate a hashed
- password and returns whether the resulting tuple is present in the file.
- (HTDigestParser.entries): Just returns the parsed representation of the file.
- (HTDigestParser.parse_file): Splits each line on colons and checks that each line has the
- expected syntax ('username:realm:hashed_password'). If any line is invalid, we treat the
- whole file as invalid and all authentication attempts will fail.
-
- * Scripts/webkitpy/common/net/htdigestparser_unittest.py: Added.
- (HTDigestParserTest.assertEntriesEqual): Helper method to assert that fake_htdigest_file,
- optionally appended with some extra data, generates the expected entries.
- (HTDigestParserTest.test_authenticate): Tests that tuples present in the file can
- authenticate, and tuples not present cannot.
- (HTDigestParserTest.test_entries): Tests that we get the expected entries from
- fake_htdigest_file.
-
- (HTDigestParserTest.test_empty_file):
- (HTDigestParserTest.test_too_few_colons):
- (HTDigestParserTest.test_too_many_colons):
- (HTDigestParserTest.test_invalid_hash):
- Test various forms of invalid files.
-
- (HTDigestParserTest.fake_htdigest_file): Returns a fake valid htdigest file for testing.
-
-2011-12-01 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Make the new 64-bit Release bot part of the core set
- https://bugs.webkit.org/show_bug.cgi?id=73570
-
- Reviewed by Adam Roben.
-
- The 64-bit Release bot re-introduced in r101676 replaces the 64-bit
- Debug bot which was already part of the core set. The GTK
- gardeners are willing to actively maintain it.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot.__init__):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_builder_name_regexps):
-
-2011-12-01 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Buildslave switch from 32-bit Debug to 64-bit Release
- https://bugs.webkit.org/show_bug.cgi?id=73547
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Rename
- the 32-bit Debug configuration to 64-bit Release. The new slave is
- a 64-bit machine already. The 32-bit slave will be shut down.
-
-2011-12-01 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] build-jsc should not trigger gtkdoc generation
- https://bugs.webkit.org/show_bug.cgi?id=73552
-
- Reviewed by Philippe Normand.
-
- Do not generate gtkdoc when building projects other than WebKit. In particular, this ensures
- that build-jsc does not try to generate gtkdoc.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Only generate gtkdoc if the project is "WebKit".
-
-2011-12-01 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- tests_run0.txt gets clobbered when re-running failing tests
- https://bugs.webkit.org/show_bug.cgi?id=63844
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.results_directory):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (AbstractWorker.__init__):
- (_ManagerConnection.start_worker):
- (_InlineManager.start_worker):
- (_MultiProcessManager.start_worker):
- (_WorkerConnection.__init__):
- (_InlineWorkerConnection.__init__):
- (_MultiProcessWorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- (_TestsMixin.test_unknown_message):
- (InterfaceTest.test_managerconnection_is_abstract):
- (InterfaceTest.test_workerconnection_is_abstract):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.safe_init):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_retries_directory):
-
-2011-12-01 Adam Roben <aroben@apple.com>
-
- Buildbot fix
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Moved all of the initialization of
- BuildmasterConfig not performed by loadBuilderConfig up to the top of the file. This makes
- it possible for build steps to reference things like the buildbotURL property of the config.
-
-2011-11-30 Adam Roben <aroben@apple.com>
-
- Use curl for downloading builds to test slaves
-
- Buildbot's built-in file transfer capabilities are transferring files much more slowly than
- curl does. This seems to be due to a combination of buildbot being single-threaded (and thus
- often busy servicing web requests, etc.) and using an IPC mechanism with fairly high
- overhead (courtesy of the Twisted framework).
-
- Eventually we'd like to make Buildbot's built-in transferring more efficient. In the
- meantime we'll try using curl for downloads and keep thinking about a solution for uploads.
- This should make the test slaves quite a bit faster, and should ease the CPU load on
- build.webkit.org a bit.
-
- Part of <http://webkit.org/b/73484> Mac slaves take 7+ minutes to upload or download a build
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added the CreateWebKitBuildDirectory
- to Test slaves. It's run just before DownloadBuiltProduct.
- (DownloadBuiltProduct): Changed to be a normal ShellCommand that invokes curl to perform the
- download.
- (CreateWebKitBuildDirectory): Added. Creates the WebKitBuild directory on a slave.
- FileDownload used to do this for us automatically.
-
-2011-11-21 Philippe Normand <pnormand@igalia.com>
-
- [GTK] enable-webaudio websetting
- https://bugs.webkit.org/show_bug.cgi?id=69836
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): Update WebKitGTK
- enable-webaudio setting when a layout test requests it.
-
-2011-11-30 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: chromium: I'd like to add a script for running perf tests for WebInspector.
- https://bugs.webkit.org/show_bug.cgi?id=73079
-
- The idea is to have performance tests for WebInspector.
- I was suggested to put these tests into PerformanceTests/inspector.
- They produce output in a format that is suitable for chromium perf bot drawing scripts.
-
- I'd like to reuse code for scanning folders for test files.
- Because of the fact that original test_files.py has common and layout specific parts
- I decided to extract the generic part and put it into webkitpy/common
- I think the two packages with name test_files look strange but I have no idea about a better name.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/run-inspector-perf-tests.py: Added.
- * Scripts/webkitpy/common/find_files.py: Renamed from Tools/Scripts/webkitpy/layout_tests/port/test_files.py.
- (find):
- (_normalize):
- * Scripts/webkitpy/common/find_files_unittest.py: Added.
- (MockWinFileSystem.join):
- (MockWinFileSystem):
- (MockWinFileSystem.normpath):
- (TestWinNormalize.assert_filesystem_normalizes):
- (TestWinNormalize.test_mocked_win):
- (TestWinNormalize):
- (TestWinNormalize.test_win):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.tests):
- (Port.find_test_files):
- (Port._driver_class):
- (is_reference_html_file):
- (_has_supported_extension):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_find_no_paths_specified):
- (PortTest.test_find_one_test):
- (PortTest.test_find_glob):
- (PortTest.test_find_with_skipped_directories):
- (PortTest.test_find_with_skipped_directories_2):
- (PortTest):
- (PortTest.test_is_test_file):
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- (_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/test_files_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/performance_tests/__init__.py: Added.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py: Added.
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._collect_tests._is_test_file):
- (PerfTestsRunner._collect_tests):
- (PerfTestsRunner.run):
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: Added.
- (MainTest.TestPort):
- (MainTest.TestPort.create_driver):
- (MainTest.TestDriver.run_test):
- (MainTest.TestDriver):
- (MainTest.TestDriver.stop):
- (MainTest.create_runner):
- (MainTest.run_test):
- (MainTest.test_run_passing_test):
- (MainTest.test_run_silent_test):
- (MainTest.test_run_failed_test):
- (MainTest.test_run_tonguey_test):
- (MainTest.test_run_timeout_test):
- (MainTest.test_run_crash_test):
- (MainTest.test_run_test_set):
- (MainTest.test_collect_tests):
- (MainTest):
- (MainTest.test_parse_args):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (OptimizeBaselines.execute):
- (AnalyzeBaselines.execute):
-
-2011-11-30 nduca@chromium.org <nduca@chromium.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
-
- [chromium] Enable threaded compositing via CCThreadProxy::hasThread only
- https://bugs.webkit.org/show_bug.cgi?id=70838
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::threadedCompositingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
-
-2011-11-30 Chris Fleizach <cfleizach@apple.com>
-
- AX: Nodes are reporting that focus can be set when they really can't
- https://bugs.webkit.org/show_bug.cgi?id=72791
-
- Reviewed by Beth Dakin.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isFocusable):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::isFocusable):
-
-2011-11-30 Alejandro G. Castro <alex@igalia.com>
-
- Moved myself to the reviewers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-30 David Levin <levin@chromium.org>
-
- [chromium] Move didUpdateLayout from WebFrameClient to WebViewClient.
- https://bugs.webkit.org/show_bug.cgi?id=73415
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didUpdateLayout): Move didUpdateLayout to account for
- it being moved to a new interface and having the parameter removed.
- * DumpRenderTree/chromium/WebViewHost.h: Ditto.
-
-2011-11-30 Adam Roben <aroben@apple.com>
-
- Make NRWT show DRT/WTR build logs when the build fails or --verbose is passed
-
- This will make it a lot easier to investigate build failures on the bots.
-
- Fixes <http://webkit.org/b/71160> NRWT doesn't show build output when building DRT
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.run_command): Include the mock output in the ScriptError we raise since it
- makes the expected output in WebKitPortTest.test_build_driver more closely mimic the output
- seen in practice.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_http_locking): Pass False for the configure_logging parameter to Printer.
- The Printer was modifying the root logger in way that would cause my new tests in
- WebKitPort.test_build_driver to fail. The value of the configure_logging parameter doesn't
- seem important to the functioning of this test, and passing False makes Printer not modify
- the root logger.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._run_script): Log the output of the command at the DEBUG level so it will show
- up when --verbose is passed but not otherwise.
- (WebKitPort._build_driver): When an error occurs, log the error message and the script's
- output at the ERROR level so it will always show up.
-
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitPortTest.test_build_driver): Test that nothing is logged in the normal, successful
- cases. Test that the build scripts' output is logged when --verbose is passed or the build
- fails.
-
-2011-11-30 Adam Roben <aroben@apple.com>
-
- Add a way to set OutputCapture's log level
-
- This will be used by some unit tests I'm planning to add.
-
- Fixes <http://webkit.org/b/73469> OutputCapture can't be used to capture DEBUG messages
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.__init__): Initialize our internal logging level to INFO, which was the only
- level we ever used before this patch.
- (OutputCapture.set_log_level): Added. This is useful for testing what log level code that is
- being tested uses. Sets the log level for any current or future logging handlers.
- (OutputCapture.capture_output): Use our internal logging level instead of always using INFO.
-
- * Scripts/webkitpy/common/system/outputcapture_unittest.py: Added.
- (OutputCaptureTest.setUp): Create an OutputCapture to test.
- (OutputCaptureTest.log_all_levels): Helper method to log a message at each log level.
- (OutputCaptureTest.assertLogged): Helper method to assert that a particular set of strings
- was logged.
- (OutputCaptureTest.test_initial_log_level): Test that we start out at the INFO level.
- (OutputCaptureTest.test_set_log_level): Test that set_log_level correctly modifies the log
- level.
-
-2011-11-29 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=72751
- WebKit2.MouseMoveAfterCrash API test is failing
-
- Reviewed by Sam Weinig.
-
- Like DumpRenderTree, the NSWindow should act as an active window.
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (-[ActiveOffscreenWindow isKeyWindow]):
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
-
-2011-11-30 Gustavo Noronha Silva <gns@gnome.org>
-
- Add step to update gtk dependencies to the buildbot
- https://bugs.webkit.org/show_bug.cgi?id=73455
-
- Reviewed by Martin Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-11-30 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Add a fullscreen option to MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=73445
-
- Reviewed by Noam Rosenthal.
-
- This bypasses the compositor on the N9 to increase performances
- and remove the huge useless gray bar part of the window frame
- at the bottom.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (printHelp):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::setStartFullScreen):
- (WindowOptions::startFullScreen):
-
-2011-11-30 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add an initial jhbuild setup which installs fonts into the WebKitBuild
- https://bugs.webkit.org/show_bug.cgi?id=73425
-
- Reviewed by Gustavo Noronha Silva.
-
- Add initial jhbuild support to the GTK+ port. update-webkitgtk-libs will
- ensure that the jhbuild root is up-to-date. Currently the only module is
- the font module.
-
- * Scripts/update-webkitgtk-libs: Added.
- * gtk/common.py: Added a helper to get the number of CPUs.
- * gtk/jhbuild.modules: Added.
- * gtk/jhbuildrc: Added.
-
-2011-11-30 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Remove dependency of Qt DRT on JavaScriptCore.
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/WorkQueue.cpp: Include the correct header file we're using anyway,
- instead of one that pulls in JavaScriptCore headers.
- * DumpRenderTree/qt/DumpRenderTree.pro: There's no need to pull in the JSC headers
- with load(javascriptcore).
-
-2011-11-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r101440 and r101442.
- http://trac.webkit.org/changeset/101440
- http://trac.webkit.org/changeset/101442
- https://bugs.webkit.org/show_bug.cgi?id=73429
-
- multiple crashes on layout tests (Requested by hayato on
- #webkit).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
-
-2011-11-30 Fady Samuel <fsamuel@chromium.org>
-
- [Chromium] Fix broken DRT build for Aura Linux
- https://bugs.webkit.org/show_bug.cgi?id=72667
-
- Reviewed by Tony Chang.
-
- DRT now builds for Aura Linux. This, more or less, shares the same code as Android.
-
- The following changes have been made:
-
- 1. Renamed TestShellAndroid to TestShellLinux.
- 2. Stub code moved added in TestShellStub that will only compile on non-GTK Linux builds.
- 3. Code common to Gtk, Aura, and Android moved to TestShellLinux.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Removed.
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- * DumpRenderTree/chromium/TestShellLinux.cpp: Copied from Tools/DumpRenderTree/chromium/TestShellGtk.cpp.
- (AlarmHandler):
- (TestShell::waitTestFinished):
- (setupFontconfig):
- (platformInit):
- * DumpRenderTree/chromium/TestShellStub.cpp: Added.
- (checkLayoutTestSystemDependencies):
- (openStartupDialog):
-
-2011-11-30 Fady Samuel <fsamuel@chromium.org>
-
- [Chromium] Set Result Before Early Exit for Fixed Layout Methods in LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=73328
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::enableFixedLayoutMode):
- (LayoutTestController::setFixedLayoutSize):
-
-2011-11-29 Hayato Ito <hayato@chromium.org>
-
- Skip writing the result of diff_image since non-chromium ports don't implement diff_image.
- https://bugs.webkit.org/show_bug.cgi?id=73381
-
- Reviewed by Ryosuke Niwa.
-
- This is a quick fix for the breakage of tests on non-chromium port.
- We should implement diff_image later on non-chromium ports.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
-
-2011-11-29 Balazs Ankes <Ankes.Balazs@stud.u-szeged.hu>
-
- [NRWT] Fix --platform=qt-5.0 --new-baseline combo
- https://bugs.webkit.org/show_bug.cgi?id=72489
-
- Reviewed by Eric Seidel.
-
- Before the this fix always added "qt" option for the option list
- * Scripts/run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2011-11-29 David Levin <levin@chromium.org>
-
- Add a way to revert a variable to its previous value after leaving a scope.
- https://bugs.webkit.org/show_bug.cgi?id=73371
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/ForwardingHeaders/wtf/TemporarilyChange.h: Added.
- * TestWebKitAPI/TestWebKitAPI.gypi: Added test file to the build.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Ditto.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Ditto.
- * TestWebKitAPI/Tests/WTF/TemporarilyChange.cpp: Added.
- (TestWebKitAPI::TEST): Added a test for TemporarilyChange.
-
-2011-11-28 Kentaro Hara <haraken@chromium.org>
-
- Implement [Supplemental] IDL and support it in run-bindings-tests
- https://bugs.webkit.org/show_bug.cgi?id=73162
-
- Reviewed by Adam Barth.
-
- run-bindings-tests supports the [Supplemental] IDL in the following way.
- (1) It creates a file |x| listing all IDL files.
- (2) It generates a supplemental dependency file |y| using resolve-supplemental.pl and |x|.
- (3) For each IDL file |z|, it runs generate-bindings.pl with |y|.
- Then, generate-bindings.pl generates .h and .cpp files for the IDL file |z|,
- including all attributes in IDL files that are supplementing the IDL file |z|.
-
- * Scripts/run-bindings-tests:
- (generate_from_idl):
- (generate_supplemental_dependency):
- (detect_changes):
- (run_tests):
- (main):
-
-2011-11-18 Nat Duca <nduca@chromium.org>
-
- [chromium] Enable threaded compositing via CCThreadProxy::hasThread only
- https://bugs.webkit.org/show_bug.cgi?id=70838
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::threadedCompositingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
-
-2011-11-29 Ojan Vafai <ojan@chromium.org>
-
- List of builders in the flakiness dashboard is out of date
- https://bugs.webkit.org/show_bug.cgi?id=73347
-
- Reviewed by Adam Barth.
-
- The chromium gpu bots no longer run layout tests, so kill that
- group entirely.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2011-11-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't hard-code the list of WebKit2 generated sources
-
- The generated sources are... wait for it... generated. So
- use the generator itself to figure out which sources we need
- to compile.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2011-11-29 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add a method to detect 'make dist' errors without running 'make dist'
- https://bugs.webkit.org/show_bug.cgi?id=73216
-
- Reviewed by Philippe Normand.
-
- Add a script that tries to sniff out 'make dist' problems without running
- 'make dist.' 'make distcheck' takes a very long time to run and this should
- reduce the amount of times it needs to be run consecutively.
-
- * gtk/common.py:
- (get_build_path.is_valid_build_directory): Guess the source directory
- by the existence of the GNUmakefile instead of the .libs directory. This
- allows one to run the script after running autogen.sh but before fully
- building.
- * gtk/find-make-dist-errors: Added.
-
-2011-11-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove use of internal headers in the MiniBrowser
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2011-11-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix debug-shlib build without webkit2
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/qtwebkit.prf: Respect no_webkit2.
-
-2011-11-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Unreviewed buildfix after r101307.
-
- * qmake/mkspecs/features/webkit2.prf: Add missing includepath.
-
-2011-11-29 Roland Steiner <rolandsteiner@chromium.org>
-
- <style scoped>: add ENABLE(STYLE_SCOPED) flag to WebKit
- https://bugs.webkit.org/show_bug.cgi?id=72848
-
- Add option to build-webkit.
-
- Reviewed by Dimitri Glazkov.
-
- * Scripts/build-webkit:
-
-2011-11-28 Ojan Vafai <ojan@chromium.org>
-
- gtest normalization in the test results server is sometimes wrong
- https://bugs.webkit.org/show_bug.cgi?id=73262
-
- Reviewed by Tony Chang.
-
- If a gtest has it's modified changed (e.g. add FLAKY_) then it will have two
- entries in the incremental JSON, one of the entries will have the correct data
- from the run and the other will have dummy no-data values. Make sure to
- always pick the one with real data.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults._remove_gtest_modifiers):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_remove_gtest_modifiers):
-
-2011-11-28 Ojan Vafai <ojan@chromium.org>
-
- Some of the results.json files have results/times entries at the directory level
- https://bugs.webkit.org/show_bug.cgi?id=73261
-
- Reviewed by Tony Chang.
-
- This is just a bug that got introduced in a temporary push of the results server.
- This patch repairs the broken files. After all the bots have cycled, we can simplify
- this code to just assert that results/times are not at the directory level.
-
- Also, when catching exceptions, log the full stacktrace.
-
- * TestResultServer/model/jsonresults.py:
- (_is_directory):
- (JsonResults._load_json):
- (JsonResults._merge_tests):
- (JsonResults.merge):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_merge_directory_hierarchy_extra_results_and_times):
-
-2011-11-28 Tony Chang <tony@chromium.org>
-
- ews bots should pass --force to update-webkit-chromium
- https://bugs.webkit.org/show_bug.cgi?id=73230
-
- Reviewed by Adam Barth.
-
- This makes it less likely for gclient changes to break the bots (e.g.,
- if a DEPS repository moves or is switched to a branch).
-
- Also pass --force when using |build-webkit --update-chromium| since this
- appears to only be used by the bots.
-
- Take 2: Add Options.non_interactive to update.py's options() method.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (determineIsChromium): Add --force-update to update-webkit --chromium.
- (forceChromiumUpdate):
- (buildChromium): Pass --force to update-webkit-chromium.
- * Scripts/webkitpy/tool/steps/update.py:
- (Update.run): Add --force-update if non-interactive (i.e., bots).
- * Scripts/webkitpy/tool/steps/update_unittest.py:
-
-2011-11-28 Tony Chang <tony@chromium.org>
-
- Revert r101279, broke the ews and cq bots.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (determineIsChromium):
- (buildChromium):
- * Scripts/webkitpy/common/config/ports.py:
- (WebKitPort.update_webkit_command):
- (ChromiumPort.update_webkit_command):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort.update_webkit_command):
- * Scripts/webkitpy/tool/steps/update.py:
- * Scripts/webkitpy/tool/steps/update_unittest.py: Removed.
-
-2011-11-28 Ojan Vafai <ojan@chromium.org>
-
- testlistjson on the test results server doesn't understand hierarchical results format
- https://bugs.webkit.org/show_bug.cgi?id=73246
-
- Reviewed by Tony Chang.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults._delete_results_and_times):
- Instead of just getting the top-level keys, we now walk the tests tree and
- delete the results and times values.
-
- * TestResultServer/model/jsonresults_unittest.py:
- Simplify the test harness to take in the same JSON format for the tests
- that the actual results.json uses instead of something very similar but
- needlessly different. This also allows for testing the broken case of
- results and times values being at non-leaf level.
-
-2011-11-28 Tony Chang <tony@chromium.org>
-
- ews bots should pass --force to update-webkit-chromium
- https://bugs.webkit.org/show_bug.cgi?id=73230
-
- Reviewed by Adam Barth.
-
- This makes it less likely for gclient changes to break the bots (e.g.,
- if a DEPS repository moves or is switched to a branch).
-
- Also pass --force when using |build-webkit --update-chromium| since this
- appears to only be used by the bots.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (determineIsChromium): Add --force-update to update-webkit --chromium.
- (forceChromiumUpdate):
- (buildChromium): Pass --force to update-webkit-chromium.
- * Scripts/webkitpy/tool/steps/update.py:
- (Update.run): Add --force-update if non-interactive (i.e., bots).
- * Scripts/webkitpy/tool/steps/update_unittest.py:
-
-2011-11-28 Michael Saboff <msaboff@apple.com>
-
- Fixed help message for --exclude-kraken to say that
- it excludes Kraken and not SunSpider.
-
- Rubber-stamped by Filip Pizlo.
-
- * Scripts/bencher:
-
-2011-11-28 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r101273.
- http://trac.webkit.org/changeset/101273
- https://bugs.webkit.org/show_bug.cgi?id=73244
-
- multiple test failures and timeouts (Requested by tony^work on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Copied from Tools/DumpRenderTree/chromium/TestShellGtk.cpp.
- (AlarmHandler):
- (TestShell::waitTestFinished):
- (platformInit):
- (openStartupDialog):
- (checkLayoutTestSystemDependencies):
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (AlarmHandler):
- (setupFontconfig):
- (TestShell::waitTestFinished):
- (platformInit):
- * DumpRenderTree/chromium/TestShellLinux.cpp: Removed.
- * DumpRenderTree/chromium/TestShellStub.cpp: Removed.
-
-2011-11-28 John Yani <vanuan@gmail.com>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Reviewed and modified by Eric Seidel.
-
- This is a simpler version of John's patch which I'm landing.
- This just engages the hacks from the Host constructor on a global
- basis.
-
- * Scripts/webkitpy/common/host.py:
- (Host.__init__):
- (Host._engage_awesome_locale_hacks):
-
-2011-11-28 Fady Samuel <fsamuel@chromium.org>
-
- [Chromium] Fix broken DRT build for Aura Linux
- https://bugs.webkit.org/show_bug.cgi?id=72667
-
- Reviewed by Tony Chang.
-
- DRT now builds for Aura Linux. This, more or less, shares the same code as Android.
-
- The following changes have been made:
-
- 1. Renamed TestShellAndroid to TestShellLinux.
- 2. Stub code moved added in TestShellStub that will only compile on non-GTK Linux builds.
- 3. Code common to Gtk, Aura, and Android moved to TestShellLinux.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Removed.
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- * DumpRenderTree/chromium/TestShellLinux.cpp: Copied from Tools/DumpRenderTree/chromium/TestShellGtk.cpp.
- (AlarmHandler):
- (TestShell::waitTestFinished):
- (setupFontconfig):
- (platformInit):
- * DumpRenderTree/chromium/TestShellStub.cpp: Added.
- (checkLayoutTestSystemDependencies):
- (openStartupDialog):
-
-2011-11-28 Eric Seidel <eric@webkit.org>
-
- Add Environment object to Host and fix the GCC smartquotes trouble seen on the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=71983
-
- Reviewed by Adam Barth.
-
- We'll add more code to Environment overtime,
- allowing us to mock out more of our direct interactions with os.environ.
-
- This patch also makes run_command print the passed in environment.
-
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/common/system/environment.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/environment_mock.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/environment_unittest.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/build.py:
-
-2011-11-28 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Build system fixes against V8.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/webcore.prf: Get rid of old v8 cruft.
- * qmake/mkspecs/features/wtf.prf: If requested, pull in v8 from Qt and configure
- WTF accordingly to use v8. (WTF in the implementation needs it as well as users of WTF)
-
-2011-11-28 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Make sure the useFixedLayout feature is consistently handled
- https://bugs.webkit.org/show_bug.cgi?id=73212
-
- Reviewed by Simon Hausmann.
-
- The web page parameters are set to our Qt defaults and are now altered
- in the WebKitTestRunner.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
-
-2011-11-28 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] WTF should be built as separate static library
- https://bugs.webkit.org/show_bug.cgi?id=73201
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/DumpRenderTree.pro: Require wtf.
- * MiniBrowser/qt/BrowserWindow.cpp: Remove unnecessary config.h inclusion and
- thus wtf dependency.
- * WebKitTestRunner/InjectedBundle/Target.pri: Require wtf.
- * WebKitTestRunner/Target.pri: Ditto.
- * qmake/mkspecs/features/default_post.prf: When re-ordering the static libs
- consider wtf, too.
- * qmake/mkspecs/features/javascriptcore.prf: Remove WTF specific build stuff,
- moved into wtf.prf.
- * qmake/mkspecs/features/qtwebkit.prf: For debug builds with shared libs, also
- link in libwtf.
- * qmake/mkspecs/features/wtf.prf: Added. Stuff needed for building and using WTF.
-
-2011-11-28 Kentaro Hara <haraken@chromium.org>
-
- run-bindings-tests shows diff error for a newly added binding test
- https://bugs.webkit.org/show_bug.cgi?id=73179
-
- Reviewed by Adam Barth.
-
- Currently, when we add a new binding test, say bindings/scripts/test/TestSupplemental.idl,
- run-bindings-tests just shows diff error because reference files
- (i.e. {V8,JS,...}TestSupplemental.h and {V8,JS,...}TestSupplemental.cpp) do not yet exist:
-
- FAIL: (V8) V8TestSupplemental.h
- diff: WebCore/bindings/scripts/test/V8/V8TestSupplemental.h: No such file or directory
-
- Instead, this patch treats a non-existent reference file as an empty file and
- shows the result of the newly added binding test, like this:
-
- FAIL: (V8) V8TestSupplemental.h
- --- WebCore/bindings/scripts/test/V8/V8TestSupplemental.h 1970-01-01 09:00:00.000000000 +0900
- +++ /tmp/tmpmX2i2F/V8TestSupplemental.h 2011-11-28 11:08:34.150707677 +0900
- @@ -0,0 +1,84 @@
- +/*
- + This file is part of the WebKit open source project.
- + This file has been generated by generate-bindings.pl. DO NOT MODIFY!
- +
- (omitted)
-
- * Scripts/run-bindings-tests:
- (detect_changes): Just added an -N option to the diff command.
-
-2011-11-28 Martin Robinson <mrobinson@igalia.com>
-
- [Gtk][gtkdoc] Syntax error in Tools/gtk/generate-gtkdoc
- https://bugs.webkit.org/show_bug.cgi?id=73165
-
- Reviewed by Philippe Normand.
-
- Fix some syntax errors in this script and remove an unused variable.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options.src_path):
- (get_webkit2_options):
- (get_webkit1_options.src_path):
-
-2011-11-26 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Enable the inspector.
-
- * waf/build/settings.py:
-
-2011-11-26 Martin Robinson <mrobinson@igalia.com>
-
- Try to fix the build after r101174.
-
- * gtk/generate-gtkdoc: Properly handle empty PKG_CONFIG_PATHs.
-
-2011-11-17 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Integrate build-gtkdoc into build-webkit and make
- https://bugs.webkit.org/show_bug.cgi?id=72626
-
- Reviewed by Philippe Normand.
-
- * GNUmakefile.am: Added support for new scripts and "make docs".
- * Scripts/webkitdirs.pm: Call generate-gtkdoc when building.
- (buildAutotoolsProject):
- * gtk/generate-gtkdoc: Added.
- * gtk/gtkdoc.py: Renamed from Source/WebKit2/UIProcess/API/gtk/docs/gtkdoc.py.
-
-2011-11-25 Ádám Kallai <Kallai.Adam@stud.u-szeged.hu>
-
- [Qt] Add support for using OWRT with Qt5
- https://bugs.webkit.org/show_bug.cgi?id=72947
-
- Add qt-5.0 platform and don't pass -graphicssystem to QtTestBrowser if using Qt5.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/old-run-webkit-tests:
-
-2011-11-25 Yury Semikhatsky <yurys@chromium.org>
-
- [Chromium] Web Inspector: get rid of WebDevToolsFrontendClient::sendFrontendLoaded method
- https://bugs.webkit.org/show_bug.cgi?id=73126
-
- No need to have a separate client call for this. The front-end can store messages
- which arrive before front-end loaded and dispatch them later. This happens in layout
- tests only by the way as all other messages should be initiated by the front-end code.
-
- Reviewed by Pavel Feldman.
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
-
-2011-11-24 Kentaro Hara <haraken@chromium.org>
-
- Replace subprocess.call() with subprocess.Popen()
- https://bugs.webkit.org/show_bug.cgi?id=73105
-
- Reviewed by Adam Barth.
-
- Currently, the stdout and stderr of the child processes of run-bindings-tests
- are mixed (or even gone away) with the stdout and stderr of run-bindings-tests itself.
- This is the problem of subprocess.call(), which does not synchronize the stdout and stderr
- between a parent process and a child process. This patch replaces subprocess.call() with
- subprocess.Popen() and synchronizes the stdout and stderr between them.
- This patch also makes output messages of run-bindings-tests more readable.
-
- With this patch, the output messages of run-bindings-tests look like as follows:
-
- PASS: (CPP) WebDOMTestObj.h
- PASS: (CPP) WebDOMTestObj.cpp
- FAIL: (CPP) WebDOMTestInterface.h
- --- Source/WebCore/bindings/scripts/test/CPP/WebDOMTestInterface.h 2011-11-25 13:34:09.313516268 +0900
- +++ /tmp/tmpDAV87G/WebDOMTestInterface.h 2011-11-25 13:44:42.712946812 +0900
- @@ -23,7 +23,7 @@
- #ifndef WebDOMTestInterface_h
- #define WebDOMTestInterface_h
-
- -#if ENABLE(Condition1) || ENABLE(Condition2)
- +#if ENABLE(Condition1) || ENABLE(Condition3)
-
- #include <WebDOMObject.h>
- #include <WebDOMString.h>
- @@ -53,5 +53,5 @@
- WebDOMTestInterface toWebKit(WebCore::TestInterface*);
-
- #endif
- -#endif // ENABLE(Condition1) || ENABLE(Condition2)
- +#endif // ENABLE(Condition1) || ENABLE(Condition3)
- PASS: (CPP) WebDOMFloat64Array.cpp
- PASS: (CPP) WebDOMFloat64Array.h
-
- Some tests FAIL! (To update the reference files, execute "run-bindings-tests --reset-results")
-
- * Scripts/run-bindings-tests:
- (generate_from_idl):
- (detect_changes):
- (run_tests):
- (main):
-
-2011-11-24 Kentaro Hara <haraken@chromium.org>
-
- Fix the current working directory of run-bindings-tests
- https://bugs.webkit.org/show_bug.cgi?id=73106
-
- Reviewed by Adam Barth.
-
- Currently, run-bindings-tests outputs the following error
- (although it outputs "all tests passed!" in the end):
-
- Testing the ObjC generator on TestObj.idl
- gcc: WebCore/bindings/objc/PublicDOMInterfaces.h: No such file or directory
- gcc: warning: '-x objective-c' after last input file has no effect
- gcc: no input files
-
- This is because CodeGeneratorObjC.pm assumes that the current working directory
- is WebKit/Source/, but run-bindings-tests sets the current working directory to WebKit/.
- Thus, this patch changes it to WebKit/Source/.
-
- * Scripts/run-bindings-tests:
- (generate_from_idl):
- (main):
-
-2011-11-24 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Get rid of the buildDirForSource() function in the build system
-
- At some point the plan was to allow for running qmake on sub-trees
- of the sources, into the top level build directory, but this is no
- longer possible, so no reason to keep the convenience function around.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/javascriptcore.prf:
- * qmake/mkspecs/features/webcore.prf:
- * qmake/mkspecs/features/webkit2.prf:
-
-2011-11-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r101107.
- http://trac.webkit.org/changeset/101107
- https://bugs.webkit.org/show_bug.cgi?id=73062
-
- Breaks the commit-queue (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/common/host.py:
- (Host._engage_awesome_windows_hacks):
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- * Scripts/webkitpy/common/system/environment.py: Removed.
- * Scripts/webkitpy/common/system/environment_unittest.py: Removed.
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._run_command_with_teed_output):
- (Executive.run_and_throw_if_fail):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.run_and_throw_if_fail):
- (MockExecutive.run_command):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._driver_build_script_name):
- (WebKitPort._run_script):
- (WebKitPort._build_driver):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_build_driver):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/build.py:
- (Build.build):
-
-2011-11-23 Ojan Vafai <ojan@chromium.org>
-
- Unreviewed, rolling out r101110.
- http://trac.webkit.org/changeset/101110
- https://bugs.webkit.org/show_bug.cgi?id=73057
-
- The bots have now cycled and this patch is no longer needed.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._upload_json_files):
-
-2011-11-23 Ojan Vafai <ojan@chromium.org>
-
- Temporarily save the incremental results json in order to identify bug
- https://bugs.webkit.org/show_bug.cgi?id=73057
-
- Reviewed by Dean Jackson.
-
- The test results server needed to be rolled back from tip of tree
- due to a JSON merging bug. It's hard to identify what the bug is without
- the raw data.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._upload_json_files):
-
-2011-11-23 Ojan Vafai <ojan@chromium.org>
-
- Merging two version 4 results hits an error in the test results server
- https://bugs.webkit.org/show_bug.cgi?id=73042
-
- Reviewed by Adam Barth.
-
- The old code assumed that if the aggregate results value was not a leaf
- value that the incremental results would exist, which is just totally
- wrong. Added a test for that case as well.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults._merge_tests):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_merge_build_directory_hierarchy_old_version):
- (JsonResultsTest.test_merge_build_directory_hierarchy):
-
-2011-11-23 Eric Seidel <eric@webkit.org>
-
- Add Environment object to Host and fix the GCC smartquotes trouble seen on the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=71983
-
- Reviewed by Adam Barth.
-
- We'll add more code to Environment overtime,
- allowing us to mock out more of our direct interactions with os.environ.
-
- This patch also makes run_command print the passed in environment.
-
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/common/system/environment.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/environment_mock.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/environment_unittest.py: Copied from Tools/Scripts/webkitpy/tool/steps/build.py.
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/build.py:
-
-2011-11-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Re-generate QtWebKit API forwarding headers when API changes
-
- The forwarding headers are generated by syncqt, and syncqt is run by qmake,
- so we need sync.profile to live in the same directory as the project file
- that will be touched when adding/removing API (api.pri in our case).
-
- Since the WebKit2 APIs live in a separate static library, we have to
- add the project file for WebKit2 as a dependency of the api.pri file
- as well, so that any changes to the WebKit2 API will still trigger a
- run of qmake (and then syncqt).
-
- Lastly, we use the new QMAKE_SYNCQT_OUTDIR variable in Qt 5 to ensure
- that the forwarding headers are still generated in the root build dir,
- not in the Source dir along with the internal forwarding headers.
-
- Reviewed by Andreas Kling.
-
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-23 Johnny Ding <jnd@chromium.org>
-
- Set right default value to baseURL in LayoutTestController::queueLoadHTMLString.
- https://bugs.webkit.org/show_bug.cgi?id=72950
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::queueLoadHTMLString):
-
-2011-11-23 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should display a message if it can't find results to display
- https://bugs.webkit.org/show_bug.cgi?id=72991
-
- Reviewed by Dimitri Glazkov.
-
- Not all failures (e.g., TIMEOUT) have results that we can display.
- This patch adds a short message so that the user can see that we're
- done trying to load the results.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2011-11-23 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should explain more clearly what the builder lists at the top of the page mean
- https://bugs.webkit.org/show_bug.cgi?id=72992
-
- Reviewed by Dimitri Glazkov.
-
- This patch also prepares us to list other sorts of failures, like
- performance and unit test.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-11-23 Ryan Sleevi <rsleevi@chromium.org>
-
- Add new Chromium tests to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=72997
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- ():
-
-2011-11-23 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should support AUDIO failures
- https://bugs.webkit.org/show_bug.cgi?id=69477
-
- Reviewed by Dimitri Glazkov.
-
- This is a first iteration at supporting AUDIO failures in
- garden-o-matic. We'll probably need to iterate a bit when we have a
- real audio failure in the tree to play with. For example, we'll
- probably want to add and <audio> element to the "Examine" view to hear
- the differences, but that all can be done in a subsequent patch.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
-
-2011-11-23 Scott Graham <scottmg@chromium.org>
-
- Adding gamepad support
- https://bugs.webkit.org/show_bug.cgi?id=69451
-
- Reviewed by Darin Fisher.
-
- Add a 'gamepadController' to Chromium DRT. Allows for setting of mock
- gamepad data that will be retrieved when JS code pulls via API access.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/GamepadController.cpp: Added.
- (GamepadController::GamepadController):
- (GamepadController::bindToJavascript):
- (GamepadController::reset):
- (GamepadController::connect):
- (GamepadController::disconnect):
- (GamepadController::setId):
- (GamepadController::setButtonCount):
- (GamepadController::setButtonData):
- (GamepadController::setAxisCount):
- (GamepadController::setAxisData):
- (GamepadController::fallbackCallback):
- * DumpRenderTree/chromium/GamepadController.h: Added.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::gamepadController):
-
-2011-11-23 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [CMake] Move the top-level logic to the top-level directory.
- https://bugs.webkit.org/show_bug.cgi?id=72685
-
- Reviewed by Brent Fulgham.
-
- * CMakeLists.txt: Added.
- * DumpRenderTree/efl/CMakeLists.txt: Keep building into Programs/.
- * EWebLauncher/CMakeLists.txt: Renamed from Tools/CMakeListsEfl.txt.
- * Scripts/webkitdirs.pm:
- (generateBuildSystemFromCMakeProject):
- * WinCELauncher/CMakeLists.txt: Renamed from Tools/CMakeListsWinCE.txt.
-
-2011-11-17 Vincent Scheib <scheib@chromium.org>
-
- Pointer Lock: Initial Tests for navigator.webkitPonter
- https://bugs.webkit.org/show_bug.cgi?id=72659
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- Enabling PointerLock in TestShell
-
-2011-11-22 Ryan Sleevi <rsleevi@chromium.org>
-
- Update flakiness dashboard for new Chromium builders and tests
- https://bugs.webkit.org/show_bug.cgi?id=72931
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2011-11-22 Adam Roben <aroben@apple.com>
-
- Remove some debugging code I accidentally left in r101005
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_python):
-
-2011-11-22 Adam Roben <aroben@apple.com>
-
- Teach prepare-ChangeLog how to find changed classes/methods/functions in Python files
-
- Fixes <http://webkit.org/b/57008> prepare-ChangeLog doesn't find names of modified
- classes/methods in Python source files
-
- Reviewed by Dan Bates.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges): Call get_function_line_ranges_for_python for files ending in .py
- or that use python as their interpreter. Modified the code that extracts the interpreter to
- ignore a leading "/usr/bin/env " in the interpreter line, as is common for our Python
- scripts.
- (get_function_line_ranges_for_python): Added. Does simple parsing of Python files to look
- for class/def lines and generate ranges based on them.
-
-2011-11-21 Yuta Kitamura <yutak@chromium.org>
-
- [GTK] Enable WebSocket hybi tests
- https://bugs.webkit.org/show_bug.cgi?id=72870
-
- Reviewed by Xan Lopez.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- Reset the setting value to the default value (true).
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference):
- Change the setting value through a function in DumpRenderTreeSupportGtk.
-
-2011-11-21 Ryosuke Niwa <rniwa@webkit.org>
-
- ChangeLogEntry should be able to parse entries with multiple authors
- https://bugs.webkit.org/show_bug.cgi?id=72690
-
- Reviewed by Eric Seidel.
-
- Support multi-author change log entries in ChangeLogEntry. Split author names using
- the same logic as splitting reviewer names. _authors now stores list of dictionaries
- with "name" and "email" as keys. Unlike reviewers, we can't always resolve authors to
- accounts because some contributors are never listed in committers.py.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/config/committers.py: Fixed a bug that *_by_{name|email}
- throws an exception when the argument is None.
-
-2011-11-21 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Speed up debug builds.
- https://bugs.webkit.org/show_bug.cgi?id=72882
-
- Reviewed by Tor Arne Vestbø.
-
- Introduce a special type of build that replaces the static jsc/wc/wk2
- static libraries with shared libraries, that individually are much faster
- to link and don't require relinking into the big library when changing just
- one file in one module. It can be enabled with
- --qmakearg="CONFIG+=force_static_libs_as_shared"
-
- * qmake/mkspecs/features/force_static_libs_as_shared.prf: Added. With this configuration,
- disable symbol visibility, static linkage and enable rpath.
- * qmake/mkspecs/features/functions.prf: Add a helper function to determine if
- we need to link the convenience libraries together or not and renamed linkStaticLibrary
- to just linkLibrary (because linkage is not necessarily static).
- * qmake/mkspecs/features/qtwebkit.prf: When using the trick, make sure to also
- link against jsc/wc/wk2 when linking app code against QtWebKit.
- * qmake/mkspecs/features/javascriptcore.prf: Use new +needToLinkLibrary helper
- function.
- * qmake/mkspecs/features/webcore.prf: Ditto.
- * qmake/mkspecs/features/webkit2.prf: Ditto.
-
-2011-11-21 Adam Klein <adamk@chromium.org>
-
- Update flakiness dashboard linkification regexps for crbug.com/100000 and above
- https://bugs.webkit.org/show_bug.cgi?id=72898
-
- Reviewed by Ojan Vafai.
-
- Also removed a comment that was going to be more trouble to keep up to
- date than seemed worthwhile (the code is now the documentation).
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-11-21 Dominic Mazzoni <dmazzoni@google.com>
-
- [Chromium] WebAccessibilityNotification should use AssertMatchingEnums.
- https://bugs.webkit.org/show_bug.cgi?id=72895
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2011-11-21 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, run-gtk-tests temporary workaround after r98500.
-
- * Scripts/run-gtk-tests: Try to find the build directory like in
- build-gtkdoc, until webkit-build-directory --configuration gets fixed.
-
-2011-11-21 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add a way to skip unit tests in the bots
- https://bugs.webkit.org/show_bug.cgi?id=72879
-
- Reviewed by Philippe Normand.
-
- Rewrite the script in python to make it easier for everybody to
- change it and add support for skipping tests.
-
- * Scripts/run-gtk-tests:
-
-2011-11-21 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Add more appcache functions to ewk_settings.
- https://bugs.webkit.org/show_bug.cgi?id=72143
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setAppCacheMaximumSize): Use the right
- function, this is not related to the memory cache, but rather to the
- appcache.
-
-2011-11-18 Adam Roben <aroben@apple.com>
-
- Make NRWT consider all lines of output from parse-malloc-history, not just the first
-
- Fixes <http://webkit.org/b/72652> REGRESSION (NRWT): NRWT always reports "1 unique leaks
- found" even when there are more than 1 unique leaks
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector.count_total_bytes_and_unique_leaks): Pass re.MULTILINE to re.findall so that
- "^" will be considered to match the beginning of any line, not only the beginning of the
- string.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- (LeakDetectorTest.test_count_total_bytes_and_unique_leaks): Added a second callstack to the
- fake output and updated expectations to match.
-
-2011-11-21 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt] Clean up MiniBrowser project file after recent changes
- https://bugs.webkit.org/show_bug.cgi?id=72869
-
- Reviewed by Simon Hausmann.
-
- Remove nonexistent files from OTHER_FILES after our touch and desktop webviews were merged.
-
- * MiniBrowser/qt/MiniBrowser.pro:
-
-2011-11-21 Dominic Mazzoni <dmazzoni@google.com>
-
- Accessibility: Multiselect list boxes need to report the active option in addition to which items are selected.
- https://bugs.webkit.org/show_bug.cgi?id=72479
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getIsSelectedOptionActiveCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::isSelectedOptionActiveGetterCallback):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isSelectedOptionActive):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isSelectedOptionActive):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isSelectedOptionActive):
-
-2011-11-21 Takashi Toyoshima <toyoshim@chromium.org>
-
- Use Host().port_factory instead of webkitpy.layout_tests.port.factory.
- https://bugs.webkit.org/show_bug.cgi?id=72859
-
- Reviewed by Eric Seidel.
-
- * Scripts/new-run-webkit-websocketserver:
-
-2011-11-20 Shinya Kawanaka <shinyak@google.com>
-
- [Chromium] Layout test does not return correct misspelling positions if there are multiple misspelled words.
- https://bugs.webkit.org/show_bug.cgi?id=72655
-
- Reviewed by Hajime Morita.
-
- Fixed the calculation of offset.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck):
-
-2011-11-20 Ojan Vafai <ojan@chromium.org>
-
- Change the final place where we use version 3 of the results json output
- https://bugs.webkit.org/show_bug.cgi?id=72838
-
- Reviewed by Adam Barth.
-
- This converts the json from being a flat map of test name --> results
- to being hierarchical by directory. This will make the json files
- considerably smaller.
-
- Also cleaned up some functions that were returning/checking boolean values
- that were always True.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-11-20 Ojan Vafai <ojan@chromium.org>
-
- Include the master name when querying the test results server.
- This will soon be required since leaving the master name out mean
- that multiple files could match the query.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2011-11-19 Ojan Vafai <ojan@chromium.org>
-
- Fix jsonp callback code to add the callback if json content
- is not jsonp.
- * TestResultServer/handlers/testfilehandler.py:
-
-2011-11-19 Alice Boxhall <aboxhall@chromium.org>
-
- Modify dashboard_base.js to optionally accept version 4 results json.
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (ADD_RESULTS):
- (flattenTrie):
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (testFlattenTrie):
-
-2011-11-19 Ojan Vafai <ojan@chromium.org>
-
- Stop storing results files as jsonp in the test results server
- https://bugs.webkit.org/show_bug.cgi?id=72814
-
- Reviewed by Adam Barth.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-11-19 Ojan Vafai <ojan@chromium.org>
-
- Remove the dependence on jsonp from more of new-run-webkit-tests and the test results server
- https://bugs.webkit.org/show_bug.cgi?id=72813
-
- Reviewed by Adam Barth.
-
- Once this lands, we can start storing pure json in the test results server and then
- we can delete the code with all the FIXMEs added here.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- Only add jsonp for full_results.json.
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
- Accept pure json uploads.
- * TestResultServer/static-dashboards/dashboard_base.js:
- (appendJSONScriptElementFor):
- Use the callback parameter so that the server can start returning pure json if it's left out.
-
-2011-11-19 Ojan Vafai <ojan@chromium.org>
-
- Allow json NRWT downloads to be pure json and not jsonp
- https://bugs.webkit.org/show_bug.cgi?id=72809
-
- Reviewed by Adam Barth.
-
- I'm moving the server to storing and serving up raw json instead of jsonp.
- You can still get the jsonp by passing a "callback" parameter, but there's no
- need for run-webkit-tests to get jsonp when all it wants is the raw json.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- Make the wrapper stripping only happen if the json is actually wrapped.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-11-18 Daniel Bates <dbates@rim.com>
-
- Add CMake build infrastructure for the BlackBerry port
- https://bugs.webkit.org/show_bug.cgi?id=72768
-
- Reviewed by Antonio Gomes.
-
- Add optional --blackberry command line argument to build-webkit to build the
- BlackBerry port.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
- (argumentsForConfiguration):
- (builtDylibPathForName):
- (determineIsQt):
- (isBlackBerry): Added.
- (determineIsBlackBerry): Added.
- (blackberryTargetArchitecture): Added.
- (isAppleWebKit):
-
-2011-11-18 James Robinson <jamesr@chromium.org>
-
- Unreviewed, rolling out r100835.
- http://trac.webkit.org/changeset/100835
- https://bugs.webkit.org/show_bug.cgi?id=72778
-
- Broke some page scale tests
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::scalePageBy):
-
-2011-11-18 Adam Barth <abarth@webkit.org>
-
- Prepare to move manual-tests out of WebCore
- https://bugs.webkit.org/show_bug.cgi?id=72782
-
- Reviewed by Eric Seidel.
-
- Update this file to refer to the new location of ManualTests.
-
- * Scripts/webkitpy/common/config/build.py:
-
-2011-11-18 James Robinson <jamesr@chromium.org>
-
- [chromium] Set min/max page scale factors when calling eventSender.scalePageBy to avoid clamping
- https://bugs.webkit.org/show_bug.cgi?id=72778
-
- Reviewed by Kenneth Russell.
-
- Set the min/max page scale clamps when a test calls eventSender.scalePageBy() so that the scale isn't clamped.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::scalePageBy):
-
-2011-11-18 Scott Graham <scottmg@chromium.org>
-
- IDL changes for gamepad support
- https://bugs.webkit.org/show_bug.cgi?id=71753
-
- Reviewed by Adam Barth.
-
- Runtime enable gamepad in chromium test shell.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-10-27 Darin Fisher <darin@chromium.org>
-
- [chromium] Improve fullscreen API
- https://bugs.webkit.org/show_bug.cgi?id=70477
-
- Reviewed by Adam Barth.
-
- Implement enter/exitFullScreen. The implementation is asynchronous,
- via postDelayedTask, to simulate how the browser actually behaves.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::enterFullScreen):
- (WebViewHost::exitFullScreen):
- (WebViewHost::setAddressBarURL):
- (WebViewHost::enterFullScreenNow):
- (WebViewHost::exitFullScreenNow):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-11-18 Adam Roben <aroben@apple.com>
-
- Ignore an ANGLE leak that is not WebKit's fault
-
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks):
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._callstacks_to_exclude_from_leaks):
- Added ScanFromString to the call stacks to exclude on all OS versions.
-
-2011-11-18 Adam Roben <aroben@apple.com>
-
- Ignore another Lion-specific leak that is not WebKit's fault
-
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks):
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._callstacks_to_exclude_from_leaks):
- Added SecTransformExecute to the call stacks to exclude.
-
-2011-11-18 Yuta Kitamura <yutak@chromium.org>
-
- [Qt] Enable WebSocket hybi tests
- https://bugs.webkit.org/show_bug.cgi?id=72687
-
- Reviewed by Simon Hausmann.
-
- Let LayoutTestControllerQt be able to switch WebSocket protocols via overridePreference().
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
-
-2011-11-18 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK][WK2] Invalid TestNetscapePlugin path when using new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=72707
-
- Reviewed by Philippe Normand.
-
- Make new-run-webkit-tests use the right path to locate the test
- plugin used by WebKitTestRunner.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-11-18 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] WTR and InjectedBundle should not link statically against JSC/WTF
- https://bugs.webkit.org/show_bug.cgi?id=72697
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Tools.pro: Make WTR linux only for the moment.
- * WebKitTestRunner/InjectedBundle/Target.pri: Remove static jsc/wtf linkage.
- * WebKitTestRunner/Target.pri: Ditto.
- * qmake/mkspecs/features/default_post.prf: Don't build the main webkit sources
- with ELF visibility on Linux. Instead we're temporarily using an LD version script.
-
-2011-11-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Change default size of the MiniBrowser
-
- Reviewed by Simon Hausmann.
-
- As we lay out desktop pages using the width of 980, change our default
- size to 980x735 so that we are not scaling down by default.
-
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
-
-2011-11-17 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Clean up the use of DATA_DIR in the buildsystem
- https://bugs.webkit.org/show_bug.cgi?id=72681
-
- Reviewed by Daniel Bates.
-
- Instead of adding -DDATA_DIR in all scopes, only define it in
- WebCore/PlatformEFL.cmake, as WebCore is the only place that uses
- it.
-
- We can then define DATA_DIR to the generated theme directory for
- EWebLauncher, since it's what we want here.
-
- * CMakeListsEfl.txt:
-
-2011-11-17 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Move platform includes last in DRT's include directories.
- https://bugs.webkit.org/show_bug.cgi?id=72684
-
- Reviewed by Daniel Bates.
-
- This is the first step in fixing the build when a platform include (in
- this case, Valgrind 3.7.0 ships its config.h) and the wrong config.h
- is included instead of WebKit's.
-
- * DumpRenderTree/efl/CMakeLists.txt:
-
-2011-11-17 Ryosuke Niwa <rniwa@webkit.org>
-
- fuzzy_match doesn't recognize "Dan B" or "hyatt"
- https://bugs.webkit.org/show_bug.cgi?id=72636
-
- Reviewed by Eric Seidel.
-
- Make contributors_by_fuzz_match search string in shorthand names of contributors such as "Ryosuke N"
- and user names of email addreses such as rniwa in rniwa@webkit.org.
-
- Also import legacy contributor names and mispell lists from Eric's script on the bug 26533 as a test.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Remove support for running check-webkit-style w/o a webkit checkout
- https://bugs.webkit.org/show_bug.cgi?id=72678
-
- Reviewed by Adam Barth.
-
- After talking to Dave Levin we've decided to remove this
- code. I know of no users of check-webkit-style w/o a webkit checkout
- and this needlessly adds complexity.
-
- * Scripts/webkitpy/style/main.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Remove more direct uses of os.path
- https://bugs.webkit.org/show_bug.cgi?id=72677
-
- Reviewed by Adam Barth.
-
- Remove more uses of os.path, including refactoring
- CommitterValidator to use a Host object instead of
- manual hacks to emulate what SCM and FileSystem provide.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/config/committervalidator.py:
- * Scripts/webkitpy/common/config/committervalidator_unittest.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- - Turns out none of our unittests actually looked at this path.
- now I've made it be a valid path.
- * Scripts/webkitpy/tool/bot/feeders.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Teach TextFileReader about FileSystem
- https://bugs.webkit.org/show_bug.cgi?id=72673
-
- Reviewed by Adam Barth.
-
- Unfortunately TextFileReader doesn't use FileSystem
- everywhere yet, so we can't move the unittests to
- using MockFileSystem, but we're close.
-
- * Scripts/webkitpy/style/filereader.py:
- * Scripts/webkitpy/style/filereader_unittest.py:
- * Scripts/webkitpy/style/main.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Give check-webkit-style a Host
- https://bugs.webkit.org/show_bug.cgi?id=72670
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- - We don't run these unittests, but this one was looking for the wrong exception.
- * Scripts/webkitpy/style/main.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- - This was create a new scm object even though it already had one?
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Move check-webkit-style change_directory code to more modern mocks
- https://bugs.webkit.org/show_bug.cgi?id=72664
-
- Reviewed by Adam Barth.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/main.py:
- * Scripts/webkitpy/style/main_unittest.py:
-
-2011-11-17 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] enable ref tests
- https://bugs.webkit.org/show_bug.cgi?id=72601
-
- Re-enable ref tests. Run the driver under evenly numbered display if performing
- pixel tests or under oddly numbered display otherwise. This prevents the ref tests
- being run in an already used Xvfb instance if pixel tests are disabled.
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: Also set Xvfb variable to None
- after the process is killed
-
-2011-11-17 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Make check-webkit-style accept xxx_p.h as a primary header for xxx.cpp for Qt's sake
- https://bugs.webkit.org/show_bug.cgi?id=72620
-
- Reviewed by David Levin.
-
- Qt's convention of keeping private (but exposed) API suffixed by "_p.h" but not
- adding the suffix the cpp file. One example of false positive
- https://bugs.webkit.org/show_bug.cgi?id=72319#c12.
-
- * Scripts/webkitpy/style/checkers/cpp.py: accept headers ending with _p as primary if its
- basename contains the cpp's basename.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- Move check-webkit-style's guts into webkitpy/style/main.py
- https://bugs.webkit.org/show_bug.cgi?id=72657
-
- Reviewed by Adam Barth.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/main.py:
-
-2011-11-17 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Reviewed by Adam Barth.
-
- Make NRWT use a clean environment, just like ORWT did.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-11-17 Dirk Pranke <dpranke@chromium.org>
-
- Chromium Mac 10.5 CG dbg bots are failing to run webkit_gpu_tests
- https://bugs.webkit.org/show_bug.cgi?id=72615
-
- Reviewed by James Robinson.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-17 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Layer violation: qt_runtime.cpp accesses QWebElement and QTDRTNode
- https://bugs.webkit.org/show_bug.cgi?id=72595
-
- Reviewed by Noam Rosenthal.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree): Use new initialize() function to
- ensure the registration of the DRTNode JS bindings.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::LayoutTestController): Remove unnecessary explicit qt meta type
- registration of QWebElement (now done implicitly through QWebPage ->
- QtWebElementRunTime::initialize code path)
-
-2011-11-17 Adam Roben <aroben@apple.com>
-
- Fix a crash-inducing typo I introduced in r100648
-
- Fixes <http://webkit.org/b/72642> REGRESSION (r100648): NRWT crashes on Chromium when
- handling a crashing test
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test): Get the driver name from the port.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_crashed_process_name): Simulate a crash and check that we got the
- right crashed process name.
-
-2011-11-17 Adam Roben <aroben@apple.com>
-
- Fix NRWT's parsing of the number of excluded leaks
-
- Fixes <http://webkit.org/b/72635> NRWT crashes when parsing leaks files from which certain
- leaks were excluded
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._parse_leaks_output): Extract just the number of excluded leaks from the
- regular expression match, not the entire matched string.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- (LeakDetectorTest): Added some example output that shows how things look when leaks are
- excluded.
- (LeakDetectorTest.test_parse_leaks_output): Test that we parse the number of exclusions
- correctly.
-
-2011-11-17 Adam Roben <aroben@apple.com>
-
- Make NRWT find crash logs for the crashed process, which may not necessarily be the driver process
-
- Fixes <http://webkit.org/b/72526> REGRESSION (NRWT): WebKitTestRunner crash log gets saved
- when web process crashes, but WebProcess crash log should get saved instead
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result): Simplified a little to share more code between the case where we
- crashed when running the test and where we crashed when checking the expected rendering for
- a reftest. Changed to pass the crashed process name down to write_crash_report.
- (TestResultWriter.write_crash_report): Added crashed_process_name parameter, which we pass
- along to CrashLogs.find_newest_log rather than always using the driver name.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.run_test): Pass the driver name as the name of the crashed process if we
- crashed.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestInstance.__init__): Initialize new web_process_crash attribute.
- (unit_test_list): Added new web-process-crash-with-stderr test, which is used by the new
- test this patch adds.
- (TestDriver.run_test): Pass a crashed process name to DriverOutput based on whether the test
- specifies that the driver crashed or the web process crashed.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_web_process_crash_log): Added. Similar to test_crash_log, but uses a test for
- which we pretend the web process crashed rather than the driver process.
-
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_unexpected_failures):
- (EndToEndTest.test_end_to_end):
- Updated magic numbers to account for new unexpected failing test added to unit_test_list.
-
-2011-11-17 Tony Chang <tony@chromium.org>
-
- [chromium] stop spamming features warning on every build
- https://bugs.webkit.org/show_bug.cgi?id=72629
-
- Reviewed by Ojan Vafai.
-
- We toggle $blobSupport on if $mediaStreamSupport is on. Since
- $mediaStreamSupport is on by default for chromium, make the default
- for $blobSupport also on.
-
- * Scripts/build-webkit:
-
-2011-11-17 Adam Roben <aroben@apple.com>
-
- Remove extra quoting of call stacks and types passed to run-leaks by NRWT
-
- Fixes <http://webkit.org/b/72623> REGRESSION (NRWT): run-webkit-tests --leaks reports leaks
- that are supposed to be ignored
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._leaks_args): Removed extra quoting of call stacks and types. Quoting is only
- required when passing arguments via the shell (which we aren't doing here). It is not
- required by Perl's option-parsing code (as the comment I removed mistakenly claimed).
-
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- (LeakDetectorTest.test_leaks_args): Updated expectations.
-
-2011-11-17 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, run-bindings-tests fix after r91028.
-
- * Scripts/run-bindings-tests: Use scm.detection module.
-
-2011-11-17 Jochen Eisinger <jochen@chromium.org>
-
- Silence a warning about control reaching the end of a non-void function
- https://bugs.webkit.org/show_bug.cgi?id=72616
-
- Reviewed by Tony Gentilcore.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::verticalScrollbar):
-
-2011-11-17 Adam Roben <aroben@apple.com>
-
- Ignore some leaks in frameworks we link against on Lion
-
- Fixes <http://webkit.org/b/72609> Lion Leaks bot complains about a bunch of leaks that
- aren't WebKit's fault
-
- Reviewed by Antti Koivisto.
-
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks):
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._callstacks_to_exclude_from_leaks):
- Added some call stacks to exclude on Lion that represent leaks in lower-level frameworks.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.is_lion): Added.
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacPortTest.test_is_version_methods): Added tests for the is_leopard/is_snowleopard/is_lion
- methods.
-
-2011-11-17 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Disable ref tests
- https://bugs.webkit.org/show_bug.cgi?id=72599
-
- Reviewed by Xan Lopez.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: Enforce disabled ref
- tests to avoid massive flakiness.
-
-2011-11-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Move WebKit2 C++ APIs to private API and build QML extension plugin on top of that
-
- A new extension object has been added to QQuickWebView (the same approach should be used
- for other API classes that need experimental APIs). The QML extension mechanism is then
- built on top of the experimental object.
-
- https://bugs.webkit.org/show_bug.cgi?id=72522
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::webView):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/UrlLoader.cpp:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/qtwebkit-private.prf: Added.
- * qmake/mkspecs/features/qtwebkit.prf:
-
-2011-11-17 Adam Barth <abarth@webkit.org>
-
- Move test_results_uploader.py out of layout_package
- https://bugs.webkit.org/show_bug.cgi?id=72590
-
- Reviewed by Eric Seidel.
-
- Most of the lines of code in this file are wrong, but I've restrained
- myself and only changed a few of them to generalized this class to the
- common package.
-
- This is part of a series of patches to remove layout_package.
-
- * Scripts/webkitpy/common/net/file_uploader.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py: Removed.
-
-2011-11-17 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Fix style nits in printing.py.
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
-
-2011-11-17 Adam Barth <abarth@webkit.org>
-
- Minor style nits in run_webkit_tests.py
- https://bugs.webkit.org/show_bug.cgi?id=72583
-
- Reviewed by Eric Seidel.
-
- This patch just fixes some minor style issues as I work my way back
- into this code.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-11-17 Adam Barth <abarth@webkit.org>
-
- Move test_result_writer out of layout_package
- https://bugs.webkit.org/show_bug.cgi?id=72586
-
- Rubber-stamped by Eric Seidel.
-
- This is part of a series of patches to remove layout_package.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py.
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py: Removed.
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-11-17 Adam Barth <abarth@webkit.org>
-
- svn-apply shouldn't magically move files into Source anymore
- https://bugs.webkit.org/show_bug.cgi?id=72579
-
- Reviewed by Eric Seidel.
-
- The Source directory has existed for long enough that we don't need
- svn-apply to magically re-write old-style patches anymore.
-
- * Scripts/VCSUtils.pm:
- (parseGitDiffHeader):
- (parseSvnDiffHeader):
-
-2011-11-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a list of contribution areas
- https://bugs.webkit.org/show_bug.cgi?id=72566
-
- Reviewed by Eric Seidel.
-
- Added ContributionAreas class.
-
- * Scripts/webkitpy/common/config/contributionareas.py: Added.
- * Scripts/webkitpy/common/config/contributionareas_unittest.py: Added.
-
-2011-11-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Refactor ChangeLogTest.test_parse_reviewer_text
- https://bugs.webkit.org/show_bug.cgi?id=72572
-
- Reviewed by Eric Seidel.
-
- Refactored the test code by introduing two helper functions.
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2011-11-16 Eric Seidel <eric@webkit.org>
-
- Add SCMDetector object to make scm detection mockable
- https://bugs.webkit.org/show_bug.cgi?id=72247
-
- Reviewed by Adam Barth.
-
- I think SCM detection may eventually be rolled into Checkout,
- but this patch at least makes it possible to mock code-paths
- which rely on scm detection.
- In the process of replacing callers of these free-functions
- I found that one of the functions was no longer used,
- and that one of the callers could instead just use the SCM
- object it already had access to through port.host.scm().
- I also discovered that I was not calling Host._initialize_scm()
- and thus host.scm() was always returning None!
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/deps.py:
- * Scripts/webkitpy/common/checkout/scm/__init__.py:
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
-
-2011-11-16 Mark Rowe <mrowe@apple.com>
-
- Fix the build.
-
- The C++ standard library interferes with Objective-C exceptions when built with -fno-exceptions.
- Apply the workaround that we use in other projects to WebKitTestRunner.
-
- * WebKitTestRunner/Configurations/Base.xcconfig: Use the prefix header for all targets.
- * WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig: Ditto.
- * WebKitTestRunner/WebKitTestRunnerPrefix.h: Work around the C++ standard library obnoxiousness.
-
-2011-11-16 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt] Fix build after WTR AX support
- https://bugs.webkit.org/show_bug.cgi?id=72560
-
- Reviewed by Geoffrey Garen.
-
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/Target.pri:
-
-2011-11-16 Tony Chang <tony@chromium.org>
-
- repurpose the flexbox bot for grid layout
- https://bugs.webkit.org/show_bug.cgi?id=72557
-
- Reviewed by Ryosuke Niwa.
-
- Since new flexbox is enabled everywhere, we don't need this bot
- anymore. However, work on grid layout has begun, so we can use this
- bot to compile with ENABLE_CSS_GRID_LAYOUT.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Just rename
- the bot on the waterfall, I will change the slave config to enable
- the compile flag and tests.
-
-2011-11-11 Adrienne Walker <enne@google.com>
-
- [chromium] Expose mock scrollbars to window.internals
- https://bugs.webkit.org/show_bug.cgi?id=72195
-
- Reviewed by James Robinson.
-
- Because mock scrollbars are a global setting, reset between runs.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2011-11-16 James Robinson <jamesr@chromium.org>
-
- [chromium] Enable video and canvas 2d compositing triggers by default for layout tests in the compositing directory
- https://bugs.webkit.org/show_bug.cgi?id=72562
-
- Reviewed by Dirk Pranke.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2011-11-16 Tony Chang <tony@chromium.org>
-
- [NRWT] speculative fix for multiple subprocess test on cygwin
- https://bugs.webkit.org/show_bug.cgi?id=72518
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: cygwin probably
- tries to emulate posix fd behavior.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Revert r100509; change was committed twice (first time as r100491).
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Run a dummy test in the gpu configurations if there's nothing to do.
- https://bugs.webkit.org/show_bug.cgi?id=72498
-
- Reviewed by James Robinson.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-16 Ryosuke Niwa <rniwa@webkit.org>
-
- contributors_by_fuzzy_match is super slow
- https://bugs.webkit.org/show_bug.cgi?id=72540
-
- Reviewed by Eric Seidel.
-
- Make contributors_by_name do case insensitive search using a dictionary.
-
- Also call contributors_by_name first in contributors_by_fuzzy_match now that it's fast
- because that's the most common case.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
-
-2011-11-16 David Levin <levin@chromium.org>
-
- check-webkit-style should recognize functions even if they have OVERRIDE after them.
- https://bugs.webkit.org/show_bug.cgi?id=72515
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-11-16 Tony Chang <tony@chromium.org>
-
- [NRWT] refactor drivers to require pixel_tests param
- https://bugs.webkit.org/show_bug.cgi?id=72517
-
- Reviewed by Ojan Vafai.
-
- No tests, just a refactoring.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-11-16 Dirk Pranke <dpranke@chromium.org>
-
- Run a dummy test in the gpu configurations if there's nothing to do.
- https://bugs.webkit.org/show_bug.cgi?id=72498
-
- Reviewed by James Robinson.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-16 Chris Fleizach <cfleizach@apple.com>
-
- WebKitTestRunner needs to support accessibility-related DRT APIs
- https://bugs.webkit.org/show_bug.cgi?id=42131
-
- Reviewed by Beth Dakin.
-
- Port the AX code in DRT to WKTestRunner by using IDL.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (horizontalScrollbarCallback):
- (verticalScrollbarCallback):
- (AccessibilityUIElement::horizontalScrollbar):
- (AccessibilityUIElement::verticalScrollbar):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::horizontalScrollbar):
- (AccessibilityUIElement::verticalScrollbar):
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp: Added.
- (WTR::AccessibilityController::create):
- (WTR::AccessibilityController::AccessibilityController):
- (WTR::AccessibilityController::~AccessibilityController):
- (WTR::AccessibilityController::makeWindowObject):
- (WTR::AccessibilityController::wrapperClass):
- (WTR::AccessibilityController::rootElement):
- (WTR::AccessibilityController::focusedElement):
- (WTR::AccessibilityController::elementAtPoint):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.h: Added.
- (WTR::AccessibilityController::logFocusEvents):
- (WTR::AccessibilityController::logValueChangeEvents):
- (WTR::AccessibilityController::logScrollingStartEvents):
- (WTR::AccessibilityController::logAccessibilityEvents):
- (WTR::AccessibilityController::addNotificationListener):
- (WTR::AccessibilityController::notificationReceived):
- (WTR::AccessibilityController::resetToConsistentState):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp: Added.
- (WTR::AccessibilityTextMarker::create):
- (WTR::AccessibilityTextMarker::AccessibilityTextMarker):
- (WTR::AccessibilityTextMarker::~AccessibilityTextMarker):
- (WTR::AccessibilityTextMarker::platformTextMarker):
- (WTR::AccessibilityTextMarker::wrapperClass):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h: Added.
- (WTR::AccessibilityTextMarker::isEqual):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp: Added.
- (WTR::AccessibilityTextMarkerRange::create):
- (WTR::AccessibilityTextMarkerRange::AccessibilityTextMarkerRange):
- (WTR::AccessibilityTextMarkerRange::~AccessibilityTextMarkerRange):
- (WTR::AccessibilityTextMarkerRange::platformTextMarkerRange):
- (WTR::AccessibilityTextMarkerRange::wrapperClass):
- * WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h: Added.
- (WTR::AccessibilityTextMarkerRange::isEqual):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp: Added.
- (WTR::AccessibilityUIElement::create):
- (WTR::AccessibilityUIElement::wrapperClass):
- (WTR::AccessibilityUIElement::isValid):
- (WTR::AccessibilityUIElement::AccessibilityUIElement):
- (WTR::AccessibilityUIElement::~AccessibilityUIElement):
- (WTR::AccessibilityUIElement::isEqual):
- (WTR::AccessibilityUIElement::elementAtPoint):
- (WTR::AccessibilityUIElement::childAtIndex):
- (WTR::AccessibilityUIElement::indexOfChild):
- (WTR::AccessibilityUIElement::childrenCount):
- (WTR::AccessibilityUIElement::titleUIElement):
- (WTR::AccessibilityUIElement::parentElement):
- (WTR::AccessibilityUIElement::takeFocus):
- (WTR::AccessibilityUIElement::takeSelection):
- (WTR::AccessibilityUIElement::addSelection):
- (WTR::AccessibilityUIElement::removeSelection):
- (WTR::AccessibilityUIElement::allAttributes):
- (WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
- (WTR::AccessibilityUIElement::linkedUIElementAtIndex):
- (WTR::AccessibilityUIElement::attributesOfDocumentLinks):
- (WTR::AccessibilityUIElement::attributesOfChildren):
- (WTR::AccessibilityUIElement::parameterizedAttributeNames):
- (WTR::AccessibilityUIElement::increment):
- (WTR::AccessibilityUIElement::decrement):
- (WTR::AccessibilityUIElement::showMenu):
- (WTR::AccessibilityUIElement::press):
- (WTR::AccessibilityUIElement::stringAttributeValue):
- (WTR::AccessibilityUIElement::uiElementAttributeValue):
- (WTR::AccessibilityUIElement::numberAttributeValue):
- (WTR::AccessibilityUIElement::boolAttributeValue):
- (WTR::AccessibilityUIElement::isAttributeSupported):
- (WTR::AccessibilityUIElement::isAttributeSettable):
- (WTR::AccessibilityUIElement::isActionSupported):
- (WTR::AccessibilityUIElement::role):
- (WTR::AccessibilityUIElement::subrole):
- (WTR::AccessibilityUIElement::roleDescription):
- (WTR::AccessibilityUIElement::title):
- (WTR::AccessibilityUIElement::description):
- (WTR::AccessibilityUIElement::language):
- (WTR::AccessibilityUIElement::stringValue):
- (WTR::AccessibilityUIElement::accessibilityValue):
- (WTR::AccessibilityUIElement::helpText):
- (WTR::AccessibilityUIElement::orientation):
- (WTR::AccessibilityUIElement::x):
- (WTR::AccessibilityUIElement::y):
- (WTR::AccessibilityUIElement::width):
- (WTR::AccessibilityUIElement::height):
- (WTR::AccessibilityUIElement::intValue):
- (WTR::AccessibilityUIElement::minValue):
- (WTR::AccessibilityUIElement::maxValue):
- (WTR::AccessibilityUIElement::valueDescription):
- (WTR::AccessibilityUIElement::insertionPointLineNumber):
- (WTR::AccessibilityUIElement::selectedTextRange):
- (WTR::AccessibilityUIElement::isEnabled):
- (WTR::AccessibilityUIElement::isRequired):
- (WTR::AccessibilityUIElement::isFocused):
- (WTR::AccessibilityUIElement::isFocusable):
- (WTR::AccessibilityUIElement::isSelected):
- (WTR::AccessibilityUIElement::isSelectable):
- (WTR::AccessibilityUIElement::isMultiSelectable):
- (WTR::AccessibilityUIElement::setSelectedChild):
- (WTR::AccessibilityUIElement::selectedChildrenCount):
- (WTR::AccessibilityUIElement::selectedChildAtIndex):
- (WTR::AccessibilityUIElement::isExpanded):
- (WTR::AccessibilityUIElement::isChecked):
- (WTR::AccessibilityUIElement::isVisible):
- (WTR::AccessibilityUIElement::isOffScreen):
- (WTR::AccessibilityUIElement::isCollapsed):
- (WTR::AccessibilityUIElement::isIgnored):
- (WTR::AccessibilityUIElement::hasPopup):
- (WTR::AccessibilityUIElement::hierarchicalLevel):
- (WTR::AccessibilityUIElement::clickPointX):
- (WTR::AccessibilityUIElement::clickPointY):
- (WTR::AccessibilityUIElement::documentEncoding):
- (WTR::AccessibilityUIElement::documentURI):
- (WTR::AccessibilityUIElement::url):
- (WTR::AccessibilityUIElement::speak):
- (WTR::AccessibilityUIElement::attributesOfColumnHeaders):
- (WTR::AccessibilityUIElement::attributesOfRowHeaders):
- (WTR::AccessibilityUIElement::attributesOfColumns):
- (WTR::AccessibilityUIElement::attributesOfRows):
- (WTR::AccessibilityUIElement::attributesOfVisibleCells):
- (WTR::AccessibilityUIElement::attributesOfHeader):
- (WTR::AccessibilityUIElement::indexInTable):
- (WTR::AccessibilityUIElement::rowIndexRange):
- (WTR::AccessibilityUIElement::columnIndexRange):
- (WTR::AccessibilityUIElement::rowCount):
- (WTR::AccessibilityUIElement::columnCount):
- (WTR::AccessibilityUIElement::selectedRowAtIndex):
- (WTR::AccessibilityUIElement::disclosedByRow):
- (WTR::AccessibilityUIElement::disclosedRowAtIndex):
- (WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
- (WTR::AccessibilityUIElement::ariaFlowToElementAtIndex):
- (WTR::AccessibilityUIElement::ariaIsGrabbed):
- (WTR::AccessibilityUIElement::ariaDropEffects):
- (WTR::AccessibilityUIElement::lineForIndex):
- (WTR::AccessibilityUIElement::rangeForLine):
- (WTR::AccessibilityUIElement::boundsForRange):
- (WTR::AccessibilityUIElement::setSelectedTextRange):
- (WTR::AccessibilityUIElement::stringForRange):
- (WTR::AccessibilityUIElement::attributedStringForRange):
- (WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
- (WTR::AccessibilityUIElement::cellForColumnAndRow):
- (WTR::AccessibilityUIElement::horizontalScrollbar):
- (WTR::AccessibilityUIElement::verticalScrollbar):
- (WTR::AccessibilityUIElement::addNotificationListener):
- (WTR::AccessibilityUIElement::removeNotificationListener):
- (WTR::AccessibilityUIElement::textMarkerRangeForElement):
- (WTR::AccessibilityUIElement::textMarkerRangeLength):
- (WTR::AccessibilityUIElement::textMarkerRangeForMarkers):
- (WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::accessibilityElementForTextMarker):
- (WTR::AccessibilityUIElement::textMarkerForPoint):
- (WTR::AccessibilityUIElement::previousTextMarker):
- (WTR::AccessibilityUIElement::nextTextMarker):
- (WTR::AccessibilityUIElement::stringForTextMarkerRange):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h: Added.
- (WTR::AccessibilityUIElement::platformUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarker.idl: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarkerRange.idl: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl: Added.
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::accessibilityController):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/InjectedBundle/gtk/LayoutTestControllerGtk.cpp:
- (WTR::LayoutTestController::platformName):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerMac.mm: Added.
- (WTR::AccessibilityTextMarker::isEqual):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerRangeMac.mm: Added.
- (WTR::AccessibilityTextMarkerRange::isEqual):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm: Added.
- (+[NSString stringWithJSStringRef:]):
- (-[NSString createJSStringRef]):
- (-[AccessibilityNotificationHandler initWithPlatformElement:]):
- (-[AccessibilityNotificationHandler dealloc]):
- (-[AccessibilityNotificationHandler _notificationReceived:]):
- (-[AccessibilityNotificationHandler setCallback:]):
- (WTR::AccessibilityUIElement::AccessibilityUIElement):
- (WTR::AccessibilityUIElement::~AccessibilityUIElement):
- (WTR::AccessibilityUIElement::isEqual):
- (WTR::descriptionOfValue):
- (WTR::attributesOfElement):
- (WTR::concatenateAttributeAndValue):
- (WTR::convertNSArrayToVector):
- (WTR::descriptionOfElements):
- (WTR::AccessibilityUIElement::getLinkedUIElements):
- (WTR::AccessibilityUIElement::getDocumentLinks):
- (WTR::AccessibilityUIElement::getChildren):
- (WTR::AccessibilityUIElement::getChildrenWithRange):
- (WTR::AccessibilityUIElement::childrenCount):
- (WTR::AccessibilityUIElement::elementAtPoint):
- (WTR::AccessibilityUIElement::indexOfChild):
- (WTR::AccessibilityUIElement::childAtIndex):
- (WTR::AccessibilityUIElement::linkedUIElementAtIndex):
- (WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
- (WTR::AccessibilityUIElement::ariaFlowToElementAtIndex):
- (WTR::AccessibilityUIElement::disclosedRowAtIndex):
- (WTR::AccessibilityUIElement::selectedChildAtIndex):
- (WTR::AccessibilityUIElement::selectedChildrenCount):
- (WTR::AccessibilityUIElement::selectedRowAtIndex):
- (WTR::AccessibilityUIElement::titleUIElement):
- (WTR::AccessibilityUIElement::parentElement):
- (WTR::AccessibilityUIElement::disclosedByRow):
- (WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
- (WTR::AccessibilityUIElement::attributesOfDocumentLinks):
- (WTR::AccessibilityUIElement::attributesOfChildren):
- (WTR::AccessibilityUIElement::allAttributes):
- (WTR::AccessibilityUIElement::stringAttributeValue):
- (WTR::AccessibilityUIElement::numberAttributeValue):
- (WTR::AccessibilityUIElement::uiElementAttributeValue):
- (WTR::AccessibilityUIElement::boolAttributeValue):
- (WTR::AccessibilityUIElement::isAttributeSettable):
- (WTR::AccessibilityUIElement::isAttributeSupported):
- (WTR::AccessibilityUIElement::parameterizedAttributeNames):
- (WTR::AccessibilityUIElement::role):
- (WTR::AccessibilityUIElement::subrole):
- (WTR::AccessibilityUIElement::roleDescription):
- (WTR::AccessibilityUIElement::title):
- (WTR::AccessibilityUIElement::description):
- (WTR::AccessibilityUIElement::orientation):
- (WTR::AccessibilityUIElement::stringValue):
- (WTR::AccessibilityUIElement::language):
- (WTR::AccessibilityUIElement::helpText):
- (WTR::AccessibilityUIElement::x):
- (WTR::AccessibilityUIElement::y):
- (WTR::AccessibilityUIElement::width):
- (WTR::AccessibilityUIElement::height):
- (WTR::AccessibilityUIElement::clickPointX):
- (WTR::AccessibilityUIElement::clickPointY):
- (WTR::AccessibilityUIElement::intValue):
- (WTR::AccessibilityUIElement::minValue):
- (WTR::AccessibilityUIElement::maxValue):
- (WTR::AccessibilityUIElement::valueDescription):
- (WTR::AccessibilityUIElement::insertionPointLineNumber):
- (WTR::AccessibilityUIElement::isActionSupported):
- (WTR::AccessibilityUIElement::isEnabled):
- (WTR::AccessibilityUIElement::isRequired):
- (WTR::AccessibilityUIElement::isFocused):
- (WTR::AccessibilityUIElement::isSelected):
- (WTR::AccessibilityUIElement::isExpanded):
- (WTR::AccessibilityUIElement::isChecked):
- (WTR::AccessibilityUIElement::hierarchicalLevel):
- (WTR::AccessibilityUIElement::speak):
- (WTR::AccessibilityUIElement::ariaIsGrabbed):
- (WTR::AccessibilityUIElement::ariaDropEffects):
- (WTR::AccessibilityUIElement::lineForIndex):
- (WTR::AccessibilityUIElement::rangeForLine):
- (WTR::AccessibilityUIElement::boundsForRange):
- (WTR::AccessibilityUIElement::stringForRange):
- (WTR::AccessibilityUIElement::attributedStringForRange):
- (WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
- (WTR::AccessibilityUIElement::attributesOfColumnHeaders):
- (WTR::AccessibilityUIElement::attributesOfRowHeaders):
- (WTR::AccessibilityUIElement::attributesOfColumns):
- (WTR::AccessibilityUIElement::attributesOfRows):
- (WTR::AccessibilityUIElement::attributesOfVisibleCells):
- (WTR::AccessibilityUIElement::attributesOfHeader):
- (WTR::AccessibilityUIElement::rowCount):
- (WTR::AccessibilityUIElement::columnCount):
- (WTR::AccessibilityUIElement::indexInTable):
- (WTR::AccessibilityUIElement::rowIndexRange):
- (WTR::AccessibilityUIElement::columnIndexRange):
- (WTR::AccessibilityUIElement::cellForColumnAndRow):
- (WTR::AccessibilityUIElement::horizontalScrollbar):
- (WTR::AccessibilityUIElement::verticalScrollbar):
- (WTR::AccessibilityUIElement::selectedTextRange):
- (WTR::AccessibilityUIElement::setSelectedTextRange):
- (WTR::AccessibilityUIElement::increment):
- (WTR::AccessibilityUIElement::decrement):
- (WTR::AccessibilityUIElement::showMenu):
- (WTR::AccessibilityUIElement::press):
- (WTR::AccessibilityUIElement::setSelectedChild):
- (WTR::AccessibilityUIElement::accessibilityValue):
- (WTR::AccessibilityUIElement::documentEncoding):
- (WTR::AccessibilityUIElement::documentURI):
- (WTR::AccessibilityUIElement::url):
- (WTR::AccessibilityUIElement::addNotificationListener):
- (WTR::AccessibilityUIElement::removeNotificationListener):
- (WTR::AccessibilityUIElement::isFocusable):
- (WTR::AccessibilityUIElement::isSelectable):
- (WTR::AccessibilityUIElement::isMultiSelectable):
- (WTR::AccessibilityUIElement::isVisible):
- (WTR::AccessibilityUIElement::isOffScreen):
- (WTR::AccessibilityUIElement::isCollapsed):
- (WTR::AccessibilityUIElement::isIgnored):
- (WTR::AccessibilityUIElement::hasPopup):
- (WTR::AccessibilityUIElement::takeFocus):
- (WTR::AccessibilityUIElement::takeSelection):
- (WTR::AccessibilityUIElement::addSelection):
- (WTR::AccessibilityUIElement::removeSelection):
- (WTR::AccessibilityUIElement::textMarkerRangeForElement):
- (WTR::AccessibilityUIElement::textMarkerRangeLength):
- (WTR::AccessibilityUIElement::previousTextMarker):
- (WTR::AccessibilityUIElement::nextTextMarker):
- (WTR::AccessibilityUIElement::stringForTextMarkerRange):
- (WTR::AccessibilityUIElement::textMarkerRangeForMarkers):
- (WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::textMarkerForPoint):
- (WTR::AccessibilityUIElement::accessibilityElementForTextMarker):
- * WebKitTestRunner/InjectedBundle/mac/LayoutTestControllerMac.mm:
- (WTR::LayoutTestController::platformName):
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::platformName):
- * WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp:
- (WTR::LayoutTestController::platformName):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
-
-2011-11-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix use of config.tests
-
- We were checking @buildArgs to determine if the optional argument was
- passed or not, but this is not the right way to do that in Perl. The
- right way is to not use a prototype for the function, and to pass
- the list as a reference (to avoid list expansion). That way we can
- check the number of arguments, and choose the right code path based
- on that.
-
- We were also missing a default-value of 0 for any feature that's not
- set in features.prf.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (buildQMakeProject):
-
-2011-11-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Prospective fix for broken plugin tests
-
- Don't hide symbols for the NPAPI test plugin
-
- Rubber-stamped by Andreas Kling.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2011-11-16 Adam Roben <aroben@apple.com>
-
- Move filenames/line numbers off to the right edge in Leaks Viewer
-
- Fixes <http://webkit.org/b/72510> Callstacks in Leaks Viewer are a little hard to read
- because filenames/line numbers are right next to function names
-
- Reviewed by Andreas Kling.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js:
- (LeaksParserImpl.prototype._createNode): Separate the filename and line number out from the
- function name. Use the filename as the profile node's URL (we don't have enough info to
- compute a real URL currently) and the line number as the profile node's line number so the
- Inspector code will put them on the right side of the callstack graph.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (WebInspector.displayNameForURL): Stubbed this out. For now we don't ever get any URLs
- passed here, just filenames.
-
- (WebInspector.linkifyURLAsNode):
- (WebInspector.linkifyResourceAsNode):
- Copied and slightly modified from inspector.js.
-
-2011-11-16 Adam Roben <aroben@apple.com>
-
- Make Leaks Viewer load builds from the new Lion Leaks bot
-
- Fixes <http://webkit.org/b/72507> REGRESSION: Leaks Viewer no longer shows recent leaky builds
-
- Reviewed by Andreas Kling.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer._displayURLPrompt): Use the Lion Leaks bot instead of the nonexistent
- SnowLeopard one.
-
-2011-11-16 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Clean up the offline apps-related functions in ewk_settings.
- https://bugs.webkit.org/show_bug.cgi?id=72132
-
- Reviewed by Kenneth Rohde Christiansen.
-
- `ewk_settings_cache' and `ewk_view_setting_cache' are too common
- prefixes for code that is related only to the HTML5 app cache
- features.
-
- Use `ewk_settings_application_cache' and
- `ewk_view_setting_application_cache' instead.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf: Place the common hide_symbols and -Bsymbolic-functions
- magic here where we handle all TEMPLATE = lib .pro files (except plugins).
- * WebKitTestRunner/InjectedBundle/Target.pri: Mark the injected bundle as plugin, which also
- removes the .so.0.0.0 and just produces .so.
-
-2011-11-16 Peter Beverloo <peter@chromium.org>
-
- Explicitly include unistd.h in TestNetscapePlugIn
- https://bugs.webkit.org/show_bug.cgi?id=72385
-
- This is needed for the sleep() call in the indicateTestFailure method,
- which seems to be implicitly available for other platforms. This is not
- the case on Android.
-
- Reviewed by Steve Block.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
-
-2011-11-16 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Update the Android NDK version being pulled in by update-webkit-chromium
- https://bugs.webkit.org/show_bug.cgi?id=72384
-
- Update to Android NDK r7, which was released last Friday. This adds
- support for RTTI and the -mimplicit-it gcc flag, which are required to
- respectively build ICU and Skia.
-
- Reviewed by Steve Block.
-
- * Scripts/update-webkit-chromium:
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
-
-2011-11-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed, rolling out r100266.
- http://trac.webkit.org/changeset/100266
-
- Broke WTR.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2011-11-16 Eric Seidel <eric@webkit.org>
-
- check-webkit-style broken by r99773: "Could not determine the port"
- https://bugs.webkit.org/show_bug.cgi?id=72275
-
- Reviewed by Adam Barth.
-
- I will continue engaging hacks, until windows improves.
-
- * Scripts/webkitpy/common/host.py:
- - Host uses self.executive instead of self._executive like Port does.
- - I wanted to test this, but it mutates global state -- thus impossible to unittest at this time.
-
-2011-11-16 Eric Seidel <eric@webkit.org>
-
- check-webkit-style broken by r99773: "Could not determine the port"
- https://bugs.webkit.org/show_bug.cgi?id=72275
-
- Reviewed by Adam Barth.
-
- Engage windows hacks harder.
-
- This is a speculative fix for ChromiumWin. We're now
- creating an SCM object much earlier, so we need to
- engage our "awesome" windows hacks earlier.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-11-15 Darin Adler <darin@apple.com>
-
- DRT's uiElementAttributeValueCallback function is leaky
- https://bugs.webkit.org/show_bug.cgi?id=72453
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (uiElementAttributeValueCallback): Use JSRetainPtr and don't leak.
-
-2011-11-14 Ryosuke Niwa <rniwa@webkit.org>
-
- Implement edit-distance based reviewer recognition algorithm
- https://bugs.webkit.org/show_bug.cgi?id=72351
-
- Reviewed by Eric Seidel.
-
- Implement an algorithm to recognize reviewer's name based on its edit distance (or more precisely
- its Levenshtein distance) to each reviewer's full name, first, last and middle names, and IRC nicknames.
- Furthermore, we cap the maximum edit distance at len(name) - 1 to avoid matching a bogus string like
- "build fix" to a reviewer's name (e.g. with with edit distance 9).
-
- This algorithm is implemented in CommitterList.contributors_by_fuzzy_match. The function to compute
- the edit distance is implemented in edit_distance.py.
-
- Also moved _has_valid_reviewer from ValidateReviewer to ChangeLogEntry because we can no longer rely
- on the presence of ChangeLogEntry.reviewer() to verify that reviewer string is nicely formatted.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
- * Scripts/webkitpy/common/editdistance.py: Added.
- * Scripts/webkitpy/common/editdistance_unittest.py: Added.
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- * Scripts/webkitpy/tool/steps/validatereviewer_unittest.py: Removed.
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Skip a failing webkitpy test on cygwin.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-11-15 Sam Weinig <sam@webkit.org>
-
- TestWebKitAPI should not put its resources in the root products directory
- https://bugs.webkit.org/show_bug.cgi?id=72446
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Change the copy resources phase to place the resources in a TestWebKitAPI.resources
- directory.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
- (TEST_F):
- * TestWebKitAPI/Tests/mac/DOMRangeOfString.mm:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm:
- (TestWebKitAPI::DeviceScaleFactorOnBack::url):
- * TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm:
- (TestWebKitAPI::DynamicDeviceScaleFactor::url):
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::createURLForResource):
- Update calls to retrieve files from the bundle to look in the newly
- created subdirectory.
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Fix a webkitpy test caused by renaming the accelerate-video flag in r100355.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Unreviewed, fix test-webkitpy tests. Move the check for image results
- earlier.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-11-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Fix flag name in chromium DumpRenderTree for accelerated video trigger
- https://bugs.webkit.org/show_bug.cgi?id=72444
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Unreviewed, better fix for ref tests failures on SL Intel bot.
- Revert the previous change and return None if pixel results from
- either the test page or the expected page is missing.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-11-15 James Robinson <jamesr@chromium.org>
-
- [chromium] Merge chromium-gpu layout test configurations into non-gpu versions
- https://bugs.webkit.org/show_bug.cgi?id=72402
-
- Reviewed by Dirk Pranke.
-
- Allows the compositing layout tests to run in the normal layout test run. This sets the default compositing
- triggers in DumpRenderTree to more closely match what we use in Chromium. There are two exceptions, canvas 2d
- and video (media) are still controlled by an explicit trigger so that they are true when platform=chromium-gpu
- and false otherwise, so that we can run the same set of tests in both configurations. This isn't necessary for
- the normal compositing triggers since we currently run the compositing tests in only one configuration - with
- compositing enabled.
-
- Since the compositing tests are currently marked WONTFIX SKIP on non-GPU platforms in test_expectations.txt this
- patch should not impact any tests.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAcceleratedCompositingForVideoEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Unreviewed, try to fix ref tests failures on SL Intel bot.
- It looks like ImageDiff isn't returning an image diff.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
-
-2011-11-15 Tony Chang <tony@chromium.org>
-
- Unreviewed fix of ref-tests on GTK+.
- If a driver is never started, _xvfb_process is never set.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-11-14 Tony Chang <tony@chromium.org>
-
- [NRWT] Reftests should run even when pixel tests are disabled.
- https://bugs.webkit.org/show_bug.cgi?id=60605
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py: Only skip ref tests if --no-ref-tests is passed.
- Also add an assert to make sure we get image hashes back when running ref tests.
- * Scripts/webkitpy/layout_tests/controllers/worker.py: Use Driver.has_crashed() instead of poll().
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py: Use DriverProxy.
- * Scripts/webkitpy/layout_tests/port/driver.py: Add DriverProxy which does the work
- of starting a pixel driver if needed. It handles the logic of sending the test
- to the correct driver. Also renamed Driver.poll() to Driver.has_crashed().
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py: Switch to using DriverProxy so we get test coverage.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py: Add --no-ref-tests.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Test --no-ref-tests.
-
-2011-11-15 David Kilzer <ddkilzer@apple.com>
-
- Don't use File::Slurp for run-leaks unit tests
- <http://webkit.org/b/72356>
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitperl/run-leaks_unittest/RunLeaks.pm: Added.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl:
- Extracted common package logic into RunLeaks.pm. Fixed call to
- RunLeaks::parseLeaksOutput().
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl: Ditto.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl: Ditto.
-
-2011-11-15 Peter Kasting <pkasting@google.com>
-
- Handle svn 1.7 when detecting whether a directory is in an svn checkout.
- https://bugs.webkit.org/show_bug.cgi?id=72349
-
- Reviewed by Adam Roben.
-
- * Scripts/VCSUtils.pm:
- (isSVNDirectory):
-
-2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Centralize hide_symbols and ensure all libs are built with symbol visibility & bsymbolic_functions
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf: Place the common hide_symbols and -Bsymbolic-functions
- magic here where we handle all TEMPLATE = lib .pro files.
-
-2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unreviewed prospective --minimal build fix.
-
- * DumpRenderTree/qt/DumpRenderTree.pro: Avoid USE_SYSTEM_MALLOC=0
- and USE_SYSTEM_MALLOC=1 appearing in DEFINES at the same time.
-
-2011-11-15 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unreviewed --minimal build fix.
-
- * Scripts/build-webkit: Add to DEFINES+= from @options only if there is
- a define. The "coverage" option doesn't have one, causing "DEFINES+= =0"
- to make moc's preprocessor abort.
-
-2011-11-14 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- build-webkit: Accept --cmakearg to pass additional arguments to CMake.
- https://bugs.webkit.org/show_bug.cgi?id=72156
-
- Reviewed by Daniel Bates.
-
- Similar to --makearg and --qmakearg, --cmakearg lets one pass
- additional arguments to CMake (eg. --cmakearg="-DFOO=bar").
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (generateBuildSystemFromCMakeProject):
-
-2011-11-14 Ryosuke Niwa <rniwa@webkit.org>
-
- Improve ChangeLogEntry's reviewer parsing algorithm part 2
- https://bugs.webkit.org/show_bug.cgi?id=72340
-
- Reviewed by Eric Seidel.
-
- This patch improves the recognition of NOBODY, wrestler names, and parenthesized clauses,
- and prepares ChangeLogEntry to support edit-distance-based reviewer-name recognition.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2011-11-14 Eric Seidel <eric@webkit.org>
-
- check-webkit-style broken by r99773: "Could not determine the port"
- https://bugs.webkit.org/show_bug.cgi?id=72275
-
- Reviewed by Adam Barth.
-
- The TestExpectationsChecker was using a generic try/except block
- which caught all exceptions, so we didn't notice that failing
- to pass a Host to PortFactory was causing an exception in port instantiation.
- I've factored out the "lookup the port" logic into a separate function
- which I've now unittested. This should fix the bug and prevent
- others like it from occuring the the future.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2011-11-14 Julien Chaffraix <jchaffraix@webkit.org>
-
- Add --css-grid-layout to build-webkit and the build systems
- https://bugs.webkit.org/show_bug.cgi?id=72320
-
- Reviewed by Ojan Vafai.
-
- * Scripts/build-webkit:
- Added the option.
-
-2011-11-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r100192.
- http://trac.webkit.org/changeset/100192
- https://bugs.webkit.org/show_bug.cgi?id=72328
-
- Caused infinite tests to fail (Requested by abarth on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2011-11-14 Tony Chang <tony@chromium.org>
-
- Remove the CSS3_FLEXBOX compile time flag and enable on all ports
- https://bugs.webkit.org/show_bug.cgi?id=72196
-
- Reviewed by Ojan Vafai.
-
- * Scripts/build-webkit:
-
-2011-11-14 John Yani <vanuan@gmail.com>
-
- new-run-webkit-tests should not be locale dependent https://bugs.webkit.org/show_bug.cgi?id=68691
- Override LOCALE to en_US.
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-11-14 Julien Chaffraix <jchaffraix@webkit.org>
-
- [Chromium] build-webkit silently drops the features flags
- https://bugs.webkit.org/show_bug.cgi?id=72293
-
- Reviewed by Tony Chang.
-
- Chromium still ignores @features but now we give a warning!
-
- * Scripts/build-webkit: Check if one of the features is different
- from the default and print a warning in this case.
-
-2011-11-14 David Kilzer <ddkilzer@apple.com>
-
- run-leaks does not work on Lion?
- <http://webkit.org/b/71059>
- <rdar://problem/10428527>
-
- Reviewed by Adam Roben.
-
- The output of leaks(1) changed again in Lion to move the
- "leaks Report Version: 2.0" line from the first line of the
- output to just above the "Process " lines that run-leaks is
- interested in parsing. This required using a more generic
- algorithm to find the start of the "Process " lines.
-
- * Scripts/run-leaks:
- (parseLeaksOutput): Make the code to skip headers more generic.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl: Added.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl: Added.
- * Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl: Added.
-
-2011-11-14 Lei Zhang <thestig@chromium.org>
-
- Missing include in Tools/DumpRenderTree/chromium/AccessibilityUIElement.h:
- https://bugs.webkit.org/show_bug.cgi?id=72088
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
-
-2011-11-14 Andrew Scherkus <scherkus@chromium.org>
-
- [Chromium] Skip media layout tests on chromium-gpu-cg-mac-leopard platform
- https://bugs.webkit.org/show_bug.cgi?id=72147
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Move the QtWebKit module file to match the layout of Qt's mkspecs
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/modules/qt_webkit.pri: Renamed from Tools/qmake/qt_webkit.pri.
-
-2011-11-14 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Disable plugins on X11 for WK2
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Currently plugins are in-process and they crash in the likely case of
- a plugin installation that uses Qt 4, which beautifully clashes with the
- Qt 5 based QtWebProcess.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-11-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Add support for config tests for Qt 5
-
- This allows us to build and run configure-tests at build
- time to determine if a given platform feature is available.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- * qmake/configure.pro: Added.
- * qmake/mkspecs/features/features.prf:
- * qmake/sync.profile: Added.
-
-2011-11-11 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Remove the QStyle dependency in Qt's mobile theme
- https://bugs.webkit.org/show_bug.cgi?id=67773
-
- This refactoring splits up RenderThemeQt with two
- subclasses, a QStyle-backed one, and a Mobile version
- that uses the old mobile theme for now.
-
- QStyle availability is detected at compile time, and
- its use is determined by the QT_WEBKIT_USE_MOBILE_THEME
- environment variable.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * qmake/mkspecs/features/features.prf: HAVE_QSTYLE detection,
- based on availability of QtWidgets.
- * qmake/mkspecs/features/webcore.prf: cleanup.
-
-2011-11-14 Tony Gentilcore <tonyg@chromium.org>
-
- Unreviewed, rolling out r100116.
- http://trac.webkit.org/changeset/100116
-
- r100104 was rolled out, so no longer needed
-
- * Scripts/run-bindings-tests:
-
-2011-11-14 Tony Gentilcore <tonyg@chromium.org>
-
- Unreviewed, rolling out r100104.
- http://trac.webkit.org/changeset/100104
- https://bugs.webkit.org/show_bug.cgi?id=72247
-
- broke windows builds
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/deps.py:
- * Scripts/webkitpy/common/checkout/scm/__init__.py:
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
-
-2011-11-14 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, build fix after r100104. run-binding-tests broke.
-
- * Scripts/run-bindings-tests: Explicitely use scm.detection.
-
-2011-11-13 Eric Seidel <eric@webkit.org>
-
- Add SCMDetector object to make scm detection mockable
- https://bugs.webkit.org/show_bug.cgi?id=72247
-
- Reviewed by Adam Barth.
-
- I think SCM detection may eventually be rolled into Checkout,
- but this patch at least makes it possible to mock code-paths
- which rely on scm detection.
- In the process of replacing callers of these free-functions
- I found that one of the functions was no longer used,
- and that one of the callers could instead just use the SCM
- object it already had access to through port.host.scm().
- I also discovered that I was not calling Host._initialize_scm()
- and thus host.scm() was always returning None!
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/deps.py:
- * Scripts/webkitpy/common/checkout/scm/__init__.py:
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
-
-2011-11-13 Gavin Peters <gavinp@chromium.org>
-
- command line control of webcore log channels in chromium DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=72126
-
- The option --webcore-log-channels=<foo>,<bar>,<quux> is the same as
- what chromium takes.
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
-
-2011-11-12 Ariya Hidayat <ariya@sencha.com>
-
- [Qt] Fix minor config typo in the build tool documentation
- https://bugs.webkit.org/show_bug.cgi?id=72194
-
- Reviewed by Andreas Kling.
-
- * qmake/README:
-
-2011-11-11 Stephen Chenney <schenney@chromium.org>
-
- [Chromium] DRT does not have LayoutTestController.pageSizeAndMarginsInPixels
- https://bugs.webkit.org/show_bug.cgi?id=49257
-
- Adds the remaining missing layout test functionality for printing.
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Add bindings for new JS methods
- (parsePageNumber): Method to parse JS arguments for a page number
- (parsePageNumberSizeMargins): Method to parse JS arguments for page size and margins
- (LayoutTestController::pageSizeAndMarginsInPixels): Get the page size and margins for a given page.
- (LayoutTestController::isPageBoxVisible): get the visibility status for printing
- (LayoutTestController::pageProperty): get a specific CSS property when in printing mode
- * DumpRenderTree/chromium/LayoutTestController.h: Add declarations for new methods
-
-2011-11-11 Darin Adler <darin@apple.com>
-
- Remove all releaseRef implementations except for RetainPtr
- https://bugs.webkit.org/show_bug.cgi?id=71423
-
- Reviewed by Julien Chaffraix.
-
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp:
- (createXMLStringFromWebArchiveData): Use leakRef instead of releaseRef.
-
-2011-11-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Make ChangeLogEntry's reviewer parsing algorithm support last 4 WebCore change logs
- https://bugs.webkit.org/show_bug.cgi?id=72090
-
- Reviewed by Eric Seidel.
-
- Significantly improve ChangeLogEntry's reviewer parsing algorithm. This version can successfully parse
- ChangeLog, ChangeLog-2011-10-19, ChangeLog-2011-06-04, ChangeLog-2011-02-16, and ChangeLog-2010-12-06.
-
- yay! r100002.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2011-11-11 Tony Chang <tony@chromium.org>
-
- Remove --force from gclient sync. The bots seem to have made it past
- the update step.
-
- * Scripts/update-webkit:
-
-2011-11-11 Tony Chang <tony@chromium.org>
-
- Add --force to gclient sync. Once the cq bots cycle, we can remove
- this since it slows down the normal sync.
-
- * Scripts/update-webkit:
-
-2011-11-11 Marc-Antoine Ruel <maruel@chromium.org>
-
- When --force is used, also use --reset
- https://bugs.webkit.org/show_bug.cgi?id=72129
-
- Reviewed by Dimitri Glazkov.
-
- * Scripts/update-webkit-chromium:
-
-2011-11-11 Tony Chang <tony@chromium.org>
-
- allow two chromium drivers to run at the same time in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=72067
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: close_fds=True on
- posix prevents the subprocesses from sharing the same fd for stdin.
- Sharing the same fd prevents us from closing the files unless all references
- to the fd are closed.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: In addition
- to adding a test for this, speed up a test (from 3sec to 0) by fixing
- the timeout override. It looks like it regressed in r95875.
-
-2011-11-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r99964.
- http://trac.webkit.org/changeset/99964
- https://bugs.webkit.org/show_bug.cgi?id=72124
-
- Broke too many Qt tests (Requested by tronical_ on #webkit).
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/webcore.prf:
-
-2011-11-11 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Remove the QStyle dependency in Qt's mobile theme
- https://bugs.webkit.org/show_bug.cgi?id=67773
-
- This refactoring splits up RenderThemeQt with two
- subclasses, a QStyle-backed one, and a Mobile version
- that uses the old mobile theme for now.
-
- QStyle availability is detected at compile time, and
- its use is determined by the QT_WEBKIT_USE_MOBILE_THEME
- environment variable.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * qmake/mkspecs/features/features.prf: HAVE_QSTYLE detection,
- based on availability of QtWidgets.
- * qmake/mkspecs/features/webcore.prf: cleanup.
-
-2011-11-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Add missing include to PlatformWebViewQt
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2011-11-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix incremental builds on Windows after buildsystem refactor
-
- The qmake rules to ensure that we run make on the derived sources
- before running qmake on the target were inside a unix-scope, which
- resulted in flakey builds on Windows.
-
- We now generate a rule on all platforms that ensures that "make qmake"
- will always run make on the derived sources. In addition, on platforms
- that have GNU make (where "make incremental" does not run "make qmake",
- but only "make"), we add a similar rule that ensures that any time the
- target makefile is regenerated we first run qmake and make on the derived
- sources. This rule relies on GNU make's order-only-prerequisites to
- not trigger a qmake-run of the target every time we run make.
-
- https://bugs.webkit.org/show_bug.cgi?id=71778
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Remove QWebNavigationController
- https://bugs.webkit.org/show_bug.cgi?id=72113
-
- Reviewed by Andreas Kling.
-
- Adapt to the move of the QWebNavigationController functions/properties to
- QQuickWebView.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2011-11-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Build system tweak
-
- Reviewed by Tor Arne Vestbø.
-
- Be a good qmake citizen, return true from our linkStaticLibrary
- "test" function.
-
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Add support for QT += webkit-private
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/qt_webkit.pri: Declare private headers.
-
-2011-11-11 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, build fix attempt after r99907. Since that revision
- GTK layout tests were not running at all...
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-11-10 Andrew Scherkus <scherkus@chromium.org>
-
- [Chromium] only run media GPU layout tests on platforms supporting accelerated compositing
- https://bugs.webkit.org/show_bug.cgi?id=72001
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-05 Filip Pizlo <fpizlo@apple.com>
-
- bencher script should support remote benchmarking
- https://bugs.webkit.org/show_bug.cgi?id=71618
-
- Rubber-stamped by Geoff Garen.
-
- Added the following features:
-
- - Benchmark report tells you the hostname and machine model (according to
- 'sysctl hw.model') of the machine you did the run on, and svn revision number
- (according to 'svn info') of the VMs you're testing.
-
- - The --remote option. You give this an ssh-style hostname (i.e. user@host is
- acceptable, in addition to just host, in which case your username is used)
- and it automatically packages the build directories of the VMs you're testing,
- sends them to the remote machine along with your copy of the bencher script
- and all of the options you passed. This pretty much seamlessly allows you
- to run a set of benchmarks on any machine that is sufficiently compatible with
- yours (i.e. similar OS) and that has the appropriate ~/.bencher file, which
- must now include a tempPath setting that tells bencher where to put files
- when that machine is used as a slave in a remote benchmarking run.
-
- - Added yet another way of specifying which benchmarks to run. This was sort of
- necessary for --remote to work as expected. Previously, you either said what
- suites to exclude (for example --exclude-sunspider) or that you only wanted
- to run one suite to the exclusion of others (--sunspider-only). But it's
- often better to just be able to specify the list of suites you want. This is
- now supported. You can say, for example, --v8 --sunspider, which means, just
- run V8 and SunSpider. This is equivalent to saying --exclude-kraken, which is
- still supported.
-
- * Scripts/bencher:
-
-2011-11-10 Tony Chang <tony@chromium.org>
-
- Lazily start DRT instances in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=72038
-
- Reviewed by Eric Seidel.
-
- Just a refactoring, no new tests.
-
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-11-10 Ryosuke Niwa <rniwa@webkit.org>
-
- ChangeLog mistakenly recognizes any string between '*' and ':' as touched files
- https://bugs.webkit.org/show_bug.cgi?id=72057
-
- Reviewed by Eric Seidel.
-
- Make the regular expression more explicit.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-2011-11-10 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] X11 plugins need to be reworked for Qt5
- https://bugs.webkit.org/show_bug.cgi?id=70023
-
- Reviewed by Simon Hausmann.
-
- Rework our basic plugin support in a way that does
- not need a bridge between Qt and X. The solution is
- based on getting the content drawed by the plugin
- from the server as an image and creating a QImage
- from it.
-
- * qmake/mkspecs/features/features.prf: Enable X11
- plugins if Qt is built with the xcb-xlib backend.
-
-2011-11-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix keyboard related layout tests after API refactoring
-
- Reviewed by Tor Arne Vestbø.
-
- Send key events to the handling page item, not the view.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::sendEvent):
- (WTR::PlatformWebView::postEvent):
-
-2011-11-10 Alexandre Mazari <amazari@igalia.com>
-
- [GTK] Make the ENABLE(FEATURE) macro work in DRT
- https://bugs.webkit.org/show_bug.cgi?id=71940
-
- Reviewed by Philippe Normand.
-
- * GNUmakefile.am:
- Add webcore_cppflags to Programs_DumpRenderTree_CPP so
- ENABLE_* variables are part of the environment.
-
-2011-11-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix focus related layout tests after API refactoring
-
- Reviewed by Tor Arne Vestbø.
-
- Make sure the focus is set on the page now, not on the view
- (which doesn't actually handle the focus).
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
- (WTR::WrapperWindow::handleStatusChanged):
-
-2011-11-10 Alexis Menard <alexis.menard@openbossa.org>
-
- [Qt] Merge QTouchWebView and QDesktopWebView into one class
- https://bugs.webkit.org/show_bug.cgi?id=71355
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Make MiniBrowser and WebKitTestRunner work again after the
- merge.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::webView):
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- * MiniBrowser/qt/main.cpp:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/DesktopView.qml: Removed.
- * MiniBrowser/qt/qml/TouchView.qml: Removed.
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-11-10 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Change semantics of the haveQt() function to match API promises
-
- Having Qt 5 does not imply that we have Qt 4, from an API point of
- view, as a major version can in theory break BC/SC. Our minimum
- version of Qt 4 will always be the latest released version of Qt 4,
- so the only place we should use haveQt(4, x) is when checking for
- the minimum requirements.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-07 Kaustubh Atrawalkar <kaustubh@motorola.com> and Sergio Villar Senin <svillar@igalia.com>
-
- [WK2] [GTK] Implement a MouseDown/MouseUp/MouseMoveTo/MouseScrollBy/LeapForward functions for WebKit2 EventSender
- https://bugs.webkit.org/show_bug.cgi?id=69411
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/EventSenderProxy.h:
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- use the EventSender instead of WebProcess Event Simulation.
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
- (WTR::WTREventQueueItem::WTREventQueueItem):
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::getMouseButtonModifiers):
- (WTR::eventSenderButtonToGDKButton):
- (WTR::EventSenderProxy::createMouseButtonEvent):
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::replaySavedEvents):
- (WTR::EventSenderProxy::sendOrQueueEvent):
- (WTR::webkitModifiersToGDKModifiers):
- (WTR::getGDKKeySymForKeyRef):
- (WTR::EventSenderProxy::keyDown):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
- (WTR::EventSenderProxy::mouseScrollBy):
- (WTR::EventSenderProxy::leapForward):
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Enable exports and constructor functions in static libs
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/functions.prf: Use --whole-archive and their
- mac/win32-msvc equivalents when linking static libraries into a shared
- library or executable.
-
-2011-11-09 Hayato Ito <hayato@chromium.org>
-
- [NRWT] Make results.html aware of reference filename in reftests.
- https://bugs.webkit.org/show_bug.cgi?id=71574
-
- Reviewed by Ryosuke Niwa.
-
- If a reference filename is different from the default one, include that in result summary
- so results.html can link to the correct reference file.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
-
-2011-11-09 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Update project files and
- add LTC stubs for new methods.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::addChromeInputField):
- (LayoutTestController::removeChromeInputField):
- (LayoutTestController::focusWebView):
- (LayoutTestController::setBackingScaleFactor):
- * waf/build/settings.py:
-
-2011-11-09 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Support XCode 4 when building deps.
-
- * wx/install-unix-extras:
-
-2011-11-09 Eric Seidel <eric@webkit.org>
-
- Remove the concept of platform-dependent unittests
- https://bugs.webkit.org/show_bug.cgi?id=71963
-
- Unreviewed. Fix test-webkitpy on cygwin.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
-
-2011-11-09 Dana Jansens <danakj@chromium.org>
-
- Add cc-bugs group to watch changes in chromium graphics
- https://bugs.webkit.org/show_bug.cgi?id=71690
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/committers.py: Make new Account superclass for non-contributor watch accounts
- * Scripts/webkitpy/common/config/committers_unittest.py: Test the Account superclass
- * Scripts/webkitpy/common/config/watchlist: Add cc-bugs@google.com to watch list
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Check for Accounts also, but require it to be the bugzilla email for any Account/Contributor/etc.
-
-2011-11-09 Eric Seidel <eric@webkit.org>
-
- Remove more platform-dependent unittests
- https://bugs.webkit.org/show_bug.cgi?id=71971
-
- Reviewed by Adam Barth.
-
- Tests which only run on a couple platforms will break.
- All tests should run on all platforms where possible.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
-
-2011-11-09 Ojan Vafai <ojan@chromium.org>
-
- Merge in results to the test results server even if build numbers conflict
- https://bugs.webkit.org/show_bug.cgi?id=71967
-
- Reviewed by Tony Chang.
-
- This was initially meant to be a sanity check that we don't
- enter duplicate runs, but it turns out that we can reasonably get
- in these situations when a builder is clobbered (e.g. the build
- numbers start over again from 0).
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-11-09 Eric Seidel <eric@webkit.org>
-
- Remove the concept of platform-dependent unittests
- https://bugs.webkit.org/show_bug.cgi?id=71963
-
- Reviewed by Adam Barth.
-
- These have been the source of never-ending sadness.
- We'd change behavior and forget to update results in
- some unittests because they were only run on certain platforms.
- This change removes a large source of these platform-dependent
- unittests, which was caused by the port_maker stuff.
-
- It's possible that this change will break test-webkitpy
- on some platforms, but that will be a one-time cost.
- I will fix the breakage by removing the platform-dependantness
- of any such broken tests.
-
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
-
-2011-11-09 Eric Seidel <eric@webkit.org>
-
- Make the Port object have a Host
- https://bugs.webkit.org/show_bug.cgi?id=71961
-
- Reviewed by Adam Barth.
-
- This has been a long time coming.
- Now that Port has a Host object, it's very easy
- to write unittests which use a properly mocked Port.
- Soon we will remove the executive, filesystem and user
- members of Port and get everything through the Host.
-
- Note how in many callsites we're actually removing
- explicit mocks, since we're now always going to get the
- correct Executive/User/FileSystem from the
- Host and callsites don't need to be careful to pass each one.
-
- This is prep-work for adding a new Environment member to
- Host and needing to be able to access the Environment
- member from Port functions w/o needing to pass an Environment
- object (or appropriate Mock) every place we create a Port object.
- Now that we have a single Host object to reach out through, its
- simple to add additional functionality (like Environment) while
- keeping our unittests properly mocked.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/port/apple.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
-
-2011-11-09 Dominic Mazzoni <dmazzoni@google.com>
-
- [Chromium] Implement AccessibilityUIElement::insertionPointLineNumberGetterCallback
- https://bugs.webkit.org/show_bug.cgi?id=71561
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::insertionPointLineNumberGetterCallback):
-
-2011-11-09 Benjamin Poulain <bpoulain@apple.com>
-
- Implement dumpProgressFinishedCallback() for Mac layoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=66772
-
- Reviewed by Simon Fraser.
-
- When dumpProgressFinishedCallback is enabled, DumpRenderTree should output
- "postProgressFinishedNotification" on FrameLoaderClient::postProgressFinishedNotification().
-
- On Mac, the FrameLoaderClient post a notification. This patch add handling for this notification
- in the FrameLoadDelegate and print the output in response to the notification.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate init]):
- (-[FrameLoadDelegate dealloc]):
- (-[FrameLoadDelegate webViewProgressFinishedNotification:]):
-
-2011-11-09 Philippe Normand <pnormand@igalia.com>
-
- [GTK][DRT] window internals object is not reset after each test
- https://bugs.webkit.org/show_bug.cgi?id=71890
-
- Reviewed by Martin Robinson.
-
- Call WebCoreTestSupport::resetInternalsObject without going
- through DumpRenderTreeSupport.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
-
-2011-11-09 Beth Dakin <bdakin@apple.com>
-
- Build fix.
-
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::uiElementAttributeValue):
-
-2011-11-09 Beth Dakin <bdakin@apple.com>
-
- Speculative build fix.
-
- * DumpRenderTree/AccessibilityUIElement.h:
-
-2011-11-09 Julien Chaffraix <jchaffraix@webkit.org>
-
- Unreviewed build fix.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::makeJSAccessibilityUIElement):
- A bad merge added this check that is making the bots sad.
-
-2011-11-09 Chris Fleizach <cfleizach@apple.com>
-
- AX: crash when accessing selectedTab in a tab list
- https://bugs.webkit.org/show_bug.cgi?id=70938
-
- Reviewed by Beth Dakin.
-
- Add the ability to retrieve an element through an arbitrary attribute.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (uiElementAttributeValueCallback):
- (AccessibilityUIElement::uiElementAttributeValue):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::uiElementAttributeValue):
-
-2011-11-09 Andy Wingo <wingo@igalia.com>
-
- Add webkitdirs.pm:getArchitecture implementation for GTK
- https://bugs.webkit.org/show_bug.cgi?id=71370
-
- Reviewed by Xan Lopez.
-
- * Scripts/webkitdirs.pm (determineArchitecture): Add an
- implementation for ports using autotools, so that a vanilla
- `run-javascriptcore-tests --gtk' invocation doesn't pass --32-bit
- to build-jsc on x86-64 machines.
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed, rolling out r99707.
- http://trac.webkit.org/changeset/99707
-
- Re-enable until we can disable it together with tests in one
- shot.
-
- * qmake/mkspecs/features/features.prf:
-
-2011-11-09 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Disable use of QtUiTools if the library/module is not found
-
- We rely on the lookup order of prf files to inject our own uitools.prf
- that will verify that QtUiTools is in fact present before allowing the
- CONFIG += uitools to have any effect.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * qmake/mkspecs/features/uitools.prf: Added.
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed, rolling out r99701.
- http://trac.webkit.org/changeset/99701
-
- Breaks Qt mac build
-
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Prospective build fix for Win32/Mac with xmlpatterns
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf: Disable XSLT support initially.
- We default to XSLT support if qxmlpatterns is available. However qxmlpatterns
- is not up to the task of full XSLT support, so we should disable it.
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Enable exports and constructor functions in static libs
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/functions.prf: Use --whole-archive and their
- mac/win32-msvc equivalents when linking static libraries into a shared
- library or executable.
-
-2011-11-09 Philippe Normand <pnormand@igalia.com>
-
- [GTK][DRT] window internals object is not reset after each test
- https://bugs.webkit.org/show_bug.cgi?id=71890
-
- Reviewed by Xan Lopez.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): reset the Internals object after each test.
-
-2011-11-09 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Detect presence of QtUiTools and enable it only when available
-
- The disable_uitools option was a workaround for missing detection.
-
- Reviewed by Simon Hausmann.
-
- * QtTestBrowser/QtTestBrowser.pro:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-09 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't override config for the build_pass of debug_and_release
-
- Qmake will parse the profile once for each configuration (debug and
- release), with the build_pass option set. In that situation we don't
- want to override what qmake is setting explicitly, otherwise the
- debug-step will end up hitting all the release-scopes.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unbreak the Qt build (copy & paste mistake - oops)
-
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Centralize duplicated code for linking the static libs
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/javascriptcore.prf:
- * qmake/mkspecs/features/webcore.prf:
- * qmake/mkspecs/features/webkit2.prf:
-
-2011-11-09 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Build system cleanup
- https://bugs.webkit.org/show_bug.cgi?id=71815
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/InjectedBundle/Target.pri: We don't need to link against the webkit2
- static library.
- * qmake/mkspecs/features/javascriptcore.prf: The wtf sources pull in a glib dependency
- (ownPtr functions for glib types). Propagate that to everyone using javascriptcore.
-
-2011-11-08 Hayato Ito <hayato@chromium.org>
-
- [NRWT] Make single_test_runner aware of reference filename of test_input.
- https://bugs.webkit.org/show_bug.cgi?id=71567
-
- Reviewed by Ryosuke Niwa.
-
- Make single_test_runner honor a reference filename of given test_input so that
- we can use any file as reference html, instead of depending on implicit naming convention.
- The typical use case is to support w3c reftests.
-
- No tests since no functional changes until there is a client.
- Test should be easily written with future clients.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- * Scripts/webkitpy/layout_tests/models/test_input.py:
-
-2011-11-08 Lucas Forschler <lforschler@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=71839
- Update the leaks bot OS to Lion.
- Update the config.json to reflect the update.
-
- Reviewed by Stephanie Lewis.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-11-08 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r99626.
- http://trac.webkit.org/changeset/99626
- https://bugs.webkit.org/show_bug.cgi?id=71866
-
- "C++ exceptions cannot be disabled without influencing the
- Objective-C exceptions" (Requested by benjaminp on #webkit).
-
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
-
-2011-11-08 Benjamin Poulain <bpoulain@apple.com>
-
- [Mac] Disable C++ exceptions from DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=71834
-
- Reviewed by Darin Adler.
-
- DumpRenderTree Mac does not handle C++ exceptions. When such exception
- happens, it tends to cause the AutoReleasePool stack to be corrupted,
- which leads to crashes long after the exception was raised.
-
- This patch disabled C++ exceptions in order to catch the problems where
- they happen when a C++ exception is raised.
-
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig:
-
-2011-11-08 Julien Chaffraix <jchaffraix@webkit.org>
-
- Moved myself to the reviewer list (yay!).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-08 Zeno Albisser <zeno@webkit.org>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-08 Andy Wingo <wingo@igalia.com>
-
- Skip some ECMAScript tests that fail on Linux in some time zones.
- https://bugs.webkit.org/show_bug.cgi?id=71371
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-javascriptcore-tests: Skip some more tests.
-
-2011-11-08 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed trivial fix after build system refactoring.
-
- * Scripts/run-qtwebkit-tests: Fix path of QtWebProcess for QML tests.
-
-2011-11-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't set OBJECTS_DIR and DEFINES in default_pre
-
- If a pro file needs to access the OBJECTS_DIR it should use the
- form ${QMAKE_VAR_OBJECTS_DIR} to ensure the value is evaluated
- after defaults_post has been processed.
-
- Setting DEFINES in defaults_pre is also bad, as any DEFINES=foo on
- the command line will override whatever we set in defaults_pre.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-08 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Prevent duplicated sources in SOURCES/OBJECTIVE_SOURCES
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2011-11-07 Zeno Albisser <zeno.albisser@nokia.com>
-
- [Qt][WK2] MiniBrowser should use urlFromUserInput()
- https://bugs.webkit.org/show_bug.cgi?id=71680
-
- Use urlFromUserInput() / QUrl::fromUserInput() to automatically
- complete urls in MiniBrowser.
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::load):
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/utils.cpp:
- (Utils::urlFromUserInput):
- * MiniBrowser/qt/utils.h:
- (Utils::Utils):
-
-2011-11-07 Yuqiang Xian <yuqiang.xian@intel.com>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed webkitpy test fix after r99512.
-
- * Scripts/webkitpy/tool/commands/suggestnominations_unittest.py:
- Xianzhu Wang is now a committer, so we can't nominate him as a committer anymore.
-
-2011-11-07 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-11-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r99470.
- http://trac.webkit.org/changeset/99470
- https://bugs.webkit.org/show_bug.cgi?id=71740
-
- "Broke test-webkitpy" (Requested by eseidel2 on #webkit).
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-11-07 Tony Chang <tony@chromium.org>
-
- [chromium] update flakiness dashboard to reflect current bots
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js: Remove (deps) debug
- bots and merged linux debug bots into a single bot.
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- (setupExpectationsTest):
-
-2011-11-07 Dana Jansens <danakj@chromium.org>
-
- Add cc-bugs group to watch changes in chromium graphics
- https://bugs.webkit.org/show_bug.cgi?id=71690
-
- Reviewed by James Robinson.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-11-07 Balazs Ankes <Ankes.Balazs@stud.u-szeged.hu>
-
- [NRWT] Parsing of test_expectations.txt should be agnostic to newline at end
- https://bugs.webkit.org/show_bug.cgi?id=70912
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py: Add newline at the end of test_expectations.txt.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Make up the test_test_expectations method for the updated webkit.py.
-
-2011-11-07 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests: support --repeat-each feature from old-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=62199
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-11-07 Fady Samuel <fsamuel@chromium.org>
-
- [Chromium] Rename WebView::scalePage to WebView::setPageScaleFactor to match WebCore
- https://bugs.webkit.org/show_bug.cgi?id=71485
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::scalePageBy):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2011-11-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Put the jsc binary in 'bin' instead of leaving it deep in the build tree
-
- Allows us to not package up the whole Source/JavaScriptCore directory for the
- buildbots.
-
- Reviewed-by Simon Hausmann.
-
- * BuildSlaveSupport/built-product-archive:
- * Scripts/webkitdirs.pm:
- (jscProductDir):
-
-2011-11-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Ensure we always export symbols for the QtWebKit API when building WebKit
-
- Reviewed-by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2011-11-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Sanitize qmake paths correctly before comparing
-
- The qmake function toSanitizedPath had a bug causing empty paths on MinGW,
- which caused us to always generate derived webcore sources, but never build
- them. The bug has been fixed, and we now also sanitize paths for the injected
- bundle derived sources.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * qmake/mkspecs/features/functions.prf:
-
-2011-11-07 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Print right order for changing feature defines
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
-
-2011-11-06 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed trivial fix after build system refactoring.
-
- * Scripts/run-qtwebkit-tests: Fix qml_import_path.
-
-2011-11-06 Eric Seidel <eric@webkit.org>
-
- Clarify how the symbol and runtime-feature based test exclusion works and cleanup the code a bit
- https://bugs.webkit.org/show_bug.cgi?id=66078
-
- Unreviewed. Add an assert about the type of "args"
- to our Executive Mocks and fix a piece of code
- from this patch which was hitting that assert
- when executing for real.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-11-06 Eric Seidel <eric@webkit.org>
-
- Split chunk handling out of prepare_lists_and_print_output to make it more readable
- https://bugs.webkit.org/show_bug.cgi?id=71629
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-11-06 Eric Seidel <eric@webkit.org>
-
- Clarify how the symbol and runtime-feature based test exclusion works and cleanup the code a bit
- https://bugs.webkit.org/show_bug.cgi?id=66078
-
- Reviewed by Adam Barth.
-
- The runtime feature detection was fixed to work in bug 64472.
- In this bug I moved the symbol-based feature detection from
- popen() to Executive.run_command and cleaned up the callers
- and unittests to make sure that we're correctly parsing the
- nm output correctly. The old code happened to work even though
- the runtime-features path was using "str in list" and the
- symbol features path was using "str in str" and it just happened
- to do what we wanted to. Now runtime features and symbol feature
- blacklists are computed separately (and with better documentation).
-
- This system remains confusing, partially because these are black-lists
- which are amended to whatever static blacklist may exist for the
- port as part of a Skipped list file.
-
- For example, notice how the runtime feature list only has directory
- blacklists for a couple features. If all features are off,
- how do we skip enough tests with only 2 entries in the blacklist map?
- The answer is that Windows is the only port to use runtime feature
- detection, and the win/Skipped file turns off all the other features
- statically (like mathml, mhtml, wss, etc.) where as some other ports (like AppleMac)
- which use symbol-based feature detection turn of mathml, wcss, etc
- using the blacklists found in _missing_symbol_to_skipped_tests.
-
- I also noticed a couple places where we still referenced xhtmlmp
- even though support for such has been removed from WebKit. Removed those.
-
- This should result in no functional change.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- - Use self._filesystem instead of os.path
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-11-06 Dan Bernstein <mitz@apple.com>
-
- Made show-pretty-diff work when the input path contains spaces.
-
- Reviewed by Anders Carlsson.
-
- * Scripts/show-pretty-diff:
-
-2011-11-05 Daniel Cheng <dcheng@chromium.org>
-
- [chromium] Use the security origin instead of the URL when checking notification permissions
- https://bugs.webkit.org/show_bug.cgi?id=71590
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::checkPermission):
- * DumpRenderTree/chromium/NotificationPresenter.h:
-
-2011-11-05 Darin Adler <darin@apple.com>
-
- Fix a small leak in Mac version of LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=71615
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::applicationCacheDiskUsageForOrigin): Release the origin.
- (LayoutTestController::localStorageDiskUsageForOrigin): Ditto.
-
-2011-11-04 Eric Seidel <eric@webkit.org>
-
- Upgrade to the latest Mechanize
- https://bugs.webkit.org/show_bug.cgi?id=71594
-
- Reviewed by Adam Barth.
-
- I noticed our mechanize was somewhat out of date when removing Python 2.5 support.
- Mechanize is no longer two separate libraries, so importing it is much simpler.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-11-04 Stephen Chenney <schenney@chromium.org>
-
- Crash in ScrollAnimator.cpp
- https://bugs.webkit.org/show_bug.cgi?id=69865
-
- The code in ScrollAnimator assumes that horizontal per-page mouse
- wheel events cannot happen, which is not true. This patch adds layout
- tests for all paging wheel event situations and fixes the broken
- horizontal case.
-
- Reviewed by Anders Carlsson
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::handleMouseWheel): Added the ability to specify that a
- mouse wheel event should be paging.
-
-2011-11-04 Eric Seidel <eric@webkit.org>
-
- Remove deprecated free functions in port.factory
- https://bugs.webkit.org/show_bug.cgi?id=71494
-
- Unreviewed. Fix exception when running new-run-webkit-httpd.
-
- * Scripts/new-run-webkit-httpd:
-
-2011-11-04 Adam Roben <aroben@apple.com>
-
- Remove Leopard-specific code from build.webkit.org
-
- We don't have any Leopard bots anymore.
-
- Fixes <http://webkit.org/b/71583> build.webkit.org configuration contains obsolete Leopard code
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Removed now-unused StartATSServer
- and StopATSServer steps.
- (unitTestsSupported): Removed check for mac-leopard.
- (TestFactory.__init__): Removed Leopard-specific steps.
-
-2011-11-04 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests autoinstalls python-irclib even though it doesn't need to
- https://bugs.webkit.org/show_bug.cgi?id=71549
-
- Reviewed by Adam Barth.
-
- Several members of Host didn't really belong there
- and were instead specific to WebKitPatch, so I've moved
- them up onto that class.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/tool/main.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2011-11-04 Tony Chang <tony@chromium.org>
-
- garden-o-matic: bring back party time!
- https://bugs.webkit.org/show_bug.cgi?id=71582
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Allow images from file:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/partytime.gif: Renamed from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/partytime.gif.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js: Add length() for UpdateTracker.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Plumb through length().
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js: Toggle partytime.gif via css class.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css: Add css styling for partytime.
-
-2011-11-04 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Fix the order of the items in the dumped history list.
- https://bugs.webkit.org/show_bug.cgi?id=71562
-
- It did not make much sense to hold the history list in a map, as we do not need
- the keys. And the printed items must be sorted by target, which is more easily
- done with a vector.
-
- Should make tests such as http/tests/navigation/error404-frames.html pass.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpHistoryItem.cpp:
- (compareHistoryItemsByTarget):
- (dumpHistoryItem):
-
-2011-11-04 Patrick Gansterer <paroga@webkit.org>
-
- [Qt] Remove ENABLE_SQLITE from qmake files
- https://bugs.webkit.org/show_bug.cgi?id=71546
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/webcore.prf:
-
-2011-11-04 Adam Barth <abarth@webkit.org>
-
- watchlist for WebIDL shouldn't trigger on Internals.idl
- https://bugs.webkit.org/show_bug.cgi?id=70657
-
- Reviewed by David Levin.
-
- Internals.idl isn't part of the Web-facing IDL in the project.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-11-04 Anders Carlsson <andersca@apple.com>
-
- Fix WKTR crash when running NPN_ConvertPoint test.
-
- Call notifyDone in a timeout - otherwise we'll end up entering layout from layout.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp:
- (ConvertPoint::NPP_SetWindow):
-
-2011-11-04 Anders Carlsson <andersca@apple.com>
-
- NPN_ConvertPoint plug-in test should be called from NPP_SetWindow
- https://bugs.webkit.org/show_bug.cgi?id=71570
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_SetWindow):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Remove the NPP parameter from NPP_SetWindow.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp:
- (NPPSetWindowCalledDuringDestruction::NPP_SetWindow):
- Remove the NPP parameter from NPP_SetWindow.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp:
- (PassDifferentNPPStruct::NPP_SetWindow):
- Remove the NPP parameter from NPP_SetWindow and use PluginTest::log for logging.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp:
- (ConvertPoint::NPP_SetWindow):
- Run the test from NPP_SetWindow and call notifyDone() when done.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_SetWindow):
- Remove unnecessary parameter.
-
-2011-11-04 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix run-qtwebkit-tests execution on the build bot(s).
-
- Rubber-stamped by Tor Arne Vestbø.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: The path to the tests
- changed slightly after the refactoring.
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't warn about disabling WebKit2 when qmake does recursive includes
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't error out on wrong Qt version when qmake does recursive includes
-
- Reviewed by Simmon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Disable STDIN check before cleaning build dir
-
- It didn't work on the bots.
-
- Reviewed by Ossy.
-
- * Scripts/webkitdirs.pm:
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't build all of webkit when running build-jsc
-
- In case the whole webkit project was built, but we then subsequently
- want to build only JSC, we need to run make in the proper subdirectory.
-
- This also means the incremental target needs to be added to all
- makefiles.
-
- Reviewed by Simmon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
- * qmake/mkspecs/features/default_post.prf:
-
-2011-11-04 Simon Hausmann <simon.hausmann@nokia.com>
-
- Fix run-javascriptcore-tests for Qt when it's executed by the bot.
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (jscProductDir): jsc path changed.
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Error out early if trying to build against Qt < 4.8
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2011-11-04 Simon Hausmann <simon.hausmann@nokia.com>
-
- Fix run-launcher for Qt and Gtk.
-
- Rubber-stamped by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (isWK2): Re-add isWK2(), as it's used in run-launcher.
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Ignore '-2' if passed to build-webkit. WebKit2 is now built by default.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit:
-
-2011-11-04 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Use web view title as window title in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=71544
-
- Reviewed by Philippe Normand.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewURIChanged): Removed extra space.
- (webViewTitleChanged): Set window title using
- webkit_web_view_get_title().
- (browser_window_init): Set initial default window title.
- (browserWindowConstructed): Connect to WebView notify::title
- signal.
-
-2011-11-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Refactor and clean up the qmake build system
-
- The qmake build system has accumulated a bit of cruft and redundancy
- over time. There's also a fairly tight coupling between how to build
- the various targets, and _what_ to build, making it harder to add new
- rules or sources. This patch aims to elevate these issues somewhat.
-
- This is a short-list of the changes:
-
- * The rules for how to build targets are now mostly contained as
- prf-files in Tools/qmake/mkspecs/features. Using mkspecs also
- allows us to do pre- and post-processing of each project file,
- which helps to clean up the actual project files.
-
- * Derived sources are no longer generated as a separate make-step
- but is part of each target's project file as a subdir. Makefile
- rules are used to ensure that we run make on the derived sources
- before running qmake on the actual target makefile. This makes
- it easier to keep a proper dependency between derived sources
- and the target.
-
- * We use GNU make and the compiler to generate dependencies on
- UNIX-based systems running Qt 5. This allows us to lessen the
- need to run qmake, which should reduce compile time.
-
- * WebKit2 is now build by default if building with Qt 5. It can
- be disabled by passing --no-webkit2 to build-webkit.
-
- The result of these changes are hopefully a cleaner and easier
- build system to modify, and faster build times due to no longer
- running qmake on every single build. It's also a first step
- towards possibly generating the list of sources using another
- build system.
-
- https://bugs.webkit.org/show_bug.cgi?id=71222
-
- Reviewed by Simon Hausmann.
-
- * DerivedSources.pro: Removed.
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::screenshot):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * Scripts/build-webkit:
- (unlinkZeroFiles):
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (promptUser):
- (buildQMakeProject):
- * Tools.pro:
- * WebKitTestRunner/DerivedSources.pri: Added.
- * WebKitTestRunner/DerivedSources.pro: Removed.
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.pro: Added.
- * WebKitTestRunner/InjectedBundle/Target.pri: Added.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Removed.
- * WebKitTestRunner/Target.pri: Added.
- * WebKitTestRunner/WebKitTestRunner.pro:
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- * WebKitTestRunner/qt/WebKitTestRunner.pro: Removed.
- * qmake/README: Added.
- * qmake/mkspecs/features/default_post.prf: Added.
- * qmake/mkspecs/features/default_pre.prf: Added.
- * qmake/mkspecs/features/features.prf: Renamed from Source/WebCore/features.pri.
- * qmake/mkspecs/features/functions.prf: Added.
- * qmake/mkspecs/features/javascriptcore.prf: Renamed from Source/JavaScriptCore/JavaScriptCore.pri.
- * qmake/mkspecs/features/mac/default_post.prf: Added.
- * qmake/mkspecs/features/mac/default_pre.prf: Added.
- * qmake/mkspecs/features/minimal_qt.prf: Added.
- * qmake/mkspecs/features/qtwebkit.prf: Added.
- * qmake/mkspecs/features/rpath.prf: Added.
- * qmake/mkspecs/features/unix/default_post.prf: Added.
- * qmake/mkspecs/features/unix/default_pre.prf: Added.
- * qmake/mkspecs/features/valgrind.prf: Added.
- * qmake/mkspecs/features/webcore.prf: Renamed from Source/WebCore/WebCore.pri.
- * qmake/mkspecs/features/webkit2.prf: Copied from Source/WebKit2/WebKit2.pri.
- * qmake/mkspecs/features/win32/default_post.prf: Added.
- * qmake/qt_webkit.pri: Renamed from Source/WebKit/qt/qt_webkit_version.pri.
- * qmake/syncqt-4.8: Added.
- (showUsage):
- ():
- (copyFile):
- (symlinkFile):
-
-2011-11-04 Eric Seidel <eric@webkit.org>
-
- Remove deprecated free functions in port.factory
- https://bugs.webkit.org/show_bug.cgi?id=71494
-
- Unreviewed. Fixing exception seen when running test-webkitpy.
-
- Sorry, I previously had deleted the relevant rebaseline-chromium-webkit-tests
- unittest, since that script is nearly ready to be deleted. But I added
- it back at the last second and failed to run the tests. :(
- This fixes the exception the bots were seeing.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-11-02 Xiaomei Ji <xji@chromium.org>
-
- Enable ctrl-arrow move cursor by word in visual order in cr-win by command line flag.
- https://bugs.webkit.org/show_bug.cgi?id=71163
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/chromium/WebPreferences.cpp: Set visualWordMovementEabled to false in DRT.
- (WebPreferences::applyTo):
-
-2011-11-03 Eric Seidel <eric@webkit.org>
-
- Remove deprecated free functions in port.factory
- https://bugs.webkit.org/show_bug.cgi?id=71494
-
- Reviewed by Adam Barth.
-
- I removed port.factory.get, get_all, and all_port_names -- long-since deprecated
- free functions in factory.py. To remove these required fixing all callsites
- to use MockHost, Host, or PortFactory where appropriate. After this change
- we're only left with a handfull of places where we inappropraitely use a
- real Executive, FileSystem or User object during unittesting.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- - These PortFactory overrides were from an earlier edition of my previous patch
- in the end, I removed MockPortFactory so all tests ended up with this same
- real PortFactory() with a MockHost. This was simply redundent code.
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- - Use MockHost to get a mocked-out PortFactory.
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- - This code has no access to a Host object, so we just use a default PortFactory
- for now. This will still incorrectly create real Executive/FileSystem objects
- durring unittesting, which is wrong. :(
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- - Use a MockHost to get a mocked PortFactory.
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- - Use a MockHost to get a mocked PortFactory.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- - ditto.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- - ditto.
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- - factory.get no longer exists. Yay!
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- - Use a MockHost to get a mocked PortFactory.
- To do this efficiently, I created a helper function
- and combined all these (mostly redundant) tests into one test
- with several calls to the helper function.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- - Pass MockUser and MockExecutive in these port testing subclasses.
- - I also removed a bunch of unecessary uses of mocktool. namespacing.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Awesome windows hacks should only happen on win32. Once we started
- using MockExecutives these 'svn help' commands started printing in
- other tests, which is how I found this bug.
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- - DryRunPort has no Host, so just use a PortFactory() directly.
- This will do the wrong thing if we're unittesting the DryRun port
- but it's no worse than the existing code.
- * Scripts/webkitpy/layout_tests/port/factory.py:
- - Remove the free functions.
- - Fix argument overriding to be able to override None.
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- - Use a mocked-out PortFactory during testing.
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- - Pass MockExecutive and MockUser to these manual Port instantiations.
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- - No access to a Host object here, so just using PortFactory directly.
- This is wrong, but no more wrong than the existing code was.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- - Use a MockHost to get a mocked out PortFactory.
- * Scripts/webkitpy/layout_tests/port/test.py:
- - Use our fancy _set_default_overriding_none system to clean this code up and pass a MockExecutive.
- * Scripts/webkitpy/layout_tests/port/win.py:
- - Don't run cmd /c ver from WinPort.__init__ or it shows up in unittests which have logging MockExecutive
- now that we're actually passing MockExecutive to most Port instantiations during testing.
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- - Pass our new "unittesting" bool to _detect_version when actually unittesting.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Host is the future.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- - Use a MockHost to get a mocked out PortFactory. Once we have a mocked PortFactory
- we don't need to pass MockUser explicitly, it does that automatically for us.
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- - Use a MockHost to get a mocked out PortFactory.
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- - We don't have access to a Host object, so using PortFactory() directly.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- - Remove unused variable.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- - Host isn't accessible here, so using PortFactory() directly, which
- although unfortunate is no worse than before.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- - Testing is much easier when you don't need to hack global state...
- * Scripts/webkitpy/tool/commands/expectations.py:
- - Use the port_factory on the tool.
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- - ditto.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- - This unittest was wrong. It was trying to pass the tool object, but failing to pass
- the arguments in the right order. Fixing that made it use a MockFileSystem
- (like it had been trying to), which then required us to actually populate
- that MockFileSystem with fake expectation files (instead of using the ones on the real disk).
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- - Get the port_factory from the tool.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- - Ditto.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- - Use a MockHost to get a mocked out Port object.
-
-2011-11-03 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Allow choosing which backing store to use.
- https://bugs.webkit.org/show_bug.cgi?id=70532
-
- Reviewed by Antonio Gomes.
-
- This change makes it possible to change the backing store used by DRT
- from Tiled Backing Store (TBS) to Single Backing Store (SBS) by
- setting the environment variable DRT_USE_SINGLE_BACKING_STORE to 1.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (shouldUseSingleBackingStore):
- (chooseAndInitializeAppropriateSmartClass):
- (drtViewAdd):
- * DumpRenderTree/efl/DumpRenderTreeView.h:
-
-2011-11-02 Erik Arvidsson <arv@chromium.org>
-
- JS Test Harness: Remove more link tags
- https://bugs.webkit.org/show_bug.cgi?id=71339
-
- Reviewed by Ojan Vafai.
-
- * Scripts/make-new-script-test:
- (writeTestFile): Don't output <link>
-
-2011-11-03 Thouraya ANDOLSI <thouraya.andolsi@st.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] arguments passed to build-jsc are not taken into account
- https://bugs.webkit.org/show_bug.cgi?id=58333
-
- * Scripts/build-jsc:
-
-2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Show url of history items in a status bar in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=71474
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowSetStatusText): Set status text and show/hide the
- status label.
- (resetStatusText): Reset status text when history menu is hidden.
- (browserWindowHistoryItemSelected): Show url of currently selected
- history item.
- (browserWindowCreateBackForwardMenu): Connect to hide signal of
- menu to reset the status text.
- (browserWindowConstructed): Use GtkOverlay if available to show
- status text.
-
-2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add back/forward menus to MiniBrowser using WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=71466
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowHistoryItemActivated): Go to selected back formard
- list item using webkit_web_view_go_to_back_forward_list_item()
- (browserWindowCreateBackForwardMenu): Create a GtkMenu for the
- given GList of WebKitBackForwardListItems.
- (browserWindowUpdateNavigationActions): Enable/disable back and
- forward buttons depending on whether it's possible to go
- back/forward. Create a menu for back and forward toolbar buttons.
- (backForwadlistChanged): Call browserWindowUpdateNavigationActions().
- (browserWindowConstructed): Connect to WebKitBackForwardList
- changed signal.
-
-2011-11-03 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Remove Maemo specific code paths
- https://bugs.webkit.org/show_bug.cgi?id=71476
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::init):
- (LauncherWindow::showLinkHover):
- (LauncherWindow::selectElements):
- (LauncherWindow::showFPS):
- (LauncherWindow::updateFPS):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/locationedit.cpp:
- * QtTestBrowser/locationedit.h:
-
-2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Show load progress information in MiniBrowser using WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=71461
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (resetEntryProgress): Reset the entry progress after a while when
- load has been completed.
- (webViewLoadProgressChanged): Update location entry progress.
- (browserWindowConstructed): Connect to WebView
- notify::estimated-load-progress signal.
-
-2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Remove WebKit2 C API from MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=71459
-
- Reviewed by Martin Robinson.
-
- Use the GTK+ API instead to add minimum functionality. The other
- features will be ported to GTK+ API in following patches.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (activateUriEntryCallback): Use webkit_web_view_load_uri().
- (goBackCallback): Use webkit_web_view_go_back().
- (goForwardCallback): Use webkit_web_view_go_forward().
- (webViewURIChanged): Update location entry with current uri using
- webkit_web_view_get_uri().
- (browserWindowFinalize):
- (browserWindowGetProperty):
- (browserWindowSetProperty):
- (browser_window_init):
- (browserWindowConstructed): Connect to notify::uri signal of
- WebView to be notified when the URI changes.
- (browser_window_class_init):
- (browser_window_new): Use WebKitWebView.
- (browser_window_get_view): Use WebKitWebView
- * MiniBrowser/gtk/BrowserWindow.h:
- * MiniBrowser/gtk/GNUmakefile.am:
- * MiniBrowser/gtk/WebBundle/WebBundleMain.c: Removed.
- * MiniBrowser/gtk/main.c:
- (loadURI): Use webkit_web_view_new().
- (main):
-
-2011-11-03 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unable to start MiniBrowser after run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=71469
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/run-launcher: Pass @ARGV instead of @args, which is stripped
- from things like -2. Neither Gtk or Qt MiniBrowser like unknown command
- line arguments.
-
-2011-11-03 Philippe Normand <pnormand@igalia.com>
-
- [GTK] [WK2] ttf-liberation fonts moved to a new location (in Debian)
- https://bugs.webkit.org/show_bug.cgi?id=71445
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): set directoriesDescription only when needed.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::inititializeFontConfigSetting): Add the new font path for Debian fonts and
- refactored the font files loading code to avoid copy/pastes, ease
- maintenance and future font directories additions.
-
-2011-11-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Remove GtkLauncher2
- https://bugs.webkit.org/show_bug.cgi?id=71449
-
- Reviewed by Martin Robinson.
-
- GtkLauncher2 is the GtkLauncher code compiled with webkit2. This
- made sense when we wanted to implement the exactly same wk1 API
- for wk2. Now the code would require an ifdef for most the api, so
- it's better to remove GtkLauncher2 and port MiniBrowser to the new
- GTK+ API.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c:
- (notifyProgressCb):
- (closeWebViewCb):
- (createBrowser):
- (addWebSettingsGroupToContext):
- (main):
-
-2011-11-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] [DRT] ttf-liberation fonts moved to a new location (in Debian)
- https://bugs.webkit.org/show_bug.cgi?id=71359
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Add the new font path for Debian fonts and
- refactored the font files loading code to avoid copy/pastes, ease
- maintenance and future font directories additions.
-
-2011-11-02 Eric Seidel <eric@webkit.org>
-
- Move Mocks into _mock files near their implementations
- https://bugs.webkit.org/show_bug.cgi?id=71425
-
- Reviewed by Adam Barth.
-
- This entire change is splitting mocktool.py into separate _mock.py files
- and placing them next to their real implementations.
-
- I also deleted MockPortFactory (since it was wrong) and was just hiding
- the fact that the "skipped-ports" command was broken (and has been for a long time).
- So I made MockHost use a real PortFactory (passed a MockHost) and changed
- the skipped-ports implementation to use modern PortFactory methods.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- * Scripts/webkitpy/common/checkout/checkout_mock.py: Added.
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/deps_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/__init__.py.
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py: Added.
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/config/ports_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/gtk_unittest.py.
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py: Added.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py: Added.
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/common/net/failuremap_unittest.py:
- * Scripts/webkitpy/common/net/irc/irc_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/__init__.py.
- * Scripts/webkitpy/common/net/statusserver_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/gtk_unittest.py.
- * Scripts/webkitpy/common/net/statusserver_unittest.py:
- * Scripts/webkitpy/common/net/web_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/gtk_unittest.py.
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/common/system/platforminfo_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/__init__.py.
- * Scripts/webkitpy/common/system/user_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/gtk_unittest.py.
- * Scripts/webkitpy/common/system/workspace_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/__init__.py.
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- * Scripts/webkitpy/common/watchlist/watchlist_mock.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/__init__.py.
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- * Scripts/webkitpy/test/main.py:
- * Scripts/webkitpy/tool/bot/botinfo_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-11-02 Dan Bernstein <mitz@apple.com>
-
- Fixed the build and removed another copy to ColorBits.ttf.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/fonts/ColorBits.ttf: Removed.
-
-2011-11-02 Dan Bernstein <mitz@apple.com>
-
- REGRESSION (r98759-r98773): platform/mac/fonts/color-bitmap.html failing on Lion Intel Debug (Tests)
- https://bugs.webkit.org/show_bug.cgi?id=71424
-
- Reviewed by Sam Weinig.
-
- Removed the ColorBits font and the code to register it in the process
- running the tests. The font was only used by the aforementioned test,
- which is now being removed.
-
- * DumpRenderTree/fonts/ColorBits-A.png: Removed.
- * DumpRenderTree/fonts/ColorBits.ttf: Removed.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- (activateTestingFonts):
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::inititializeFontConfigSetting):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
- (WTR::activateFonts):
-
-2011-11-02 Dan Bernstein <mitz@apple.com>
-
- Fix an intermittent hang in RenderedImageFromDOMRange.
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::run): Made the call to -runMode:beforeDate: return
- immediately if there are no sources by passing a date in the distant past.
-
-2011-11-02 Adam Roben <aroben@apple.com>
-
- Add git-add-reviewer
-
- I've been using this script for a while to add reviewers to git commits in my local
- repository before pushing them to the Subversion repository. Basic usage is:
-
- git-add-reviewer HEAD^ "Joe Schmoe"
- or
- git-add-reviewer -i trunk
-
- Fixes <http://webkit.org/b/71419> Would like an easy way to add reviewer names to existing
- git commits
-
- Reviewed by Sam Weinig.
-
- * Scripts/git-add-reviewer: Added.
- (top level): Parse options, check that the working tree is clean, then run in either
- interactive or non-interactive mode as appropriate.
- (interactive): Write out a temp file that contains each commit with "NOBODY" next to it and
- open it in the user's editor. The user can replace "NOBODY" with reviewer names. When the
- editor exits, we check out the commit just before the earliest one we're modifying. Then
- for each commit, we check it out, update the reviewer, and amend the commit to contain the
- new reviewer. Finally, we update the branch that was originally checked out to point to the
- last amended commit.
- (nonInteractive): Check out the commit to modify, write the current commit message to the
- MERGE_MSG file so addReviewer will update it, add the reviewer to the ChangeLog(s), amend
- the commit, and rebase the original branch on top of the amended commit. (usage): Print out
- a usage message and exit.
- (requireCleanWorkTree): Do the same steps git-rebase does to ensure that the working tree
- and index are clean.
- (fail): Print out the specified error message, if any, and return false. This function is
- used as a return value in various error cases throughout the script.
- (cherryPick): Cherry-pick the specified commit and return 1 if we succeeded.
- (addReviewer): Add the specified reviewer to all the ChangeLogs modified in this commit, and
- to .git/MERGE_MSG, which will be used as the commit message for the next commit.
- (commit): Call git-commit and use .git/MERGE_MSG as the commit message.
-
- (addReviewerToChangeLog):
- (addReviewerToCommitMessage):
- These just call through to addReviewerToFile.
-
- (addReviewerToFile): Read in the file, replacing any "NOBODY" text with the reviewer name(s)
- and replacing "Reviewed" with "Rubber-stamped" if specified. Write the resulting text to a
- temp file, then move the temp file over the original file and stage it for the next commit.
- (head): Returns the name of the currently-checked-out branch.
- (isAncestor): Returns true if the first commit is an ancestor of the second.
- (toCommit): Converts a commitish to a commit ID using git-rev-parse.
- (changeLogsForCommit): Returns a list of all the ChangeLogs modified in the given commit.
- (resetToCommit): Checks out the given commit, throwing away any local changes.
- (writeCommitMessageToFile): Gets the commit message for the current commit and writes it to
- the specified file.
- (rebaseOntoHead): Rebases the specified branch onto HEAD.
- (checkout): Checks out the given commit.
- (getConfigValue): Reads the specified config variable from git-config.
-
-2011-11-02 Dean Jackson <dino@apple.com>
-
- Add ENABLE_CSS_SHADERS flag
- https://bugs.webkit.org/show_bug.cgi?id=71394
-
- Reviewed by Sam Weinig.
-
- * Scripts/build-webkit:
-
-2011-10-31 Eric Seidel <eric@webkit.org>
-
- BaselineOptimizer tests should use mocks instead of real Executive/FileSystem objects
- https://bugs.webkit.org/show_bug.cgi?id=71237
-
- Reviewed by Adam Barth.
-
- Calling the static version of factory.get() with proper mocking
- requires passsing an explict filesystem, executive, etc.
- So instead, we use a PortFactory instance and pass it a Host pointer.
- I had to add a MockHost since we'd not needed a non-host tool before now.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-11-02 Anders Carlsson <andersca@apple.com>
-
- Update for the WebKit2 API fixage.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2011-11-02 Anders Carlsson <andersca@apple.com>
-
- Fix build.
-
- Add new functions to the page loader client.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2011-11-02 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10336700> Add API to get rendered text image without having to select it
- https://bugs.webkit.org/show_bug.cgi?id=71407
-
- Reviewed by Simon Fraser.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm: Added.
- (-[RenderedImageFromDOMRangeFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (TestWebKitAPI::TEST):
-
-2011-11-02 Benjamin Poulain <benjamin@webkit.org>
-
- Make the main frame's base path more explicit in _drt_descriptionSuitableForTestResult
- https://bugs.webkit.org/show_bug.cgi?id=71351
-
- Reviewed by Darin Adler.
-
- Add the delimiter "/" at the end of the path instead of adding +1 when using
- the path.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSURL _drt_descriptionSuitableForTestResult]):
-
-2011-11-02 Tom Sepez <tsepez@chromium.org>
-
- XSSAuditor is silent
- https://bugs.webkit.org/show_bug.cgi?id=70973
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didDetectXSS):
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didDetectXSS:]):
- * MiniBrowser/mac/BrowserWindowController.m:
- (didDetectXSSForFrame):
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didDetectXSSForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2011-11-02 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] REGRESSION: 5 editing tests fail
- https://bugs.webkit.org/show_bug.cgi?id=71117
-
- Reviewed by Andreas Kling.
-
- Make sure that the view is properly focused, in order to get the
- didBeginEditing DRT calls.
-
- This requires activating the window (the call will result in a FocusIn
- event to the window as well as setting QGuiApplication::focusWindow())
- as well as enabling the focus on the view item. The signature of
- setFocus has changed to take a boolean.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
-
-2011-11-02 Matt Falkenhagen <falken@chromium.org>
-
- [chromium] Add per-script font preferences support in overridePreference
- https://bugs.webkit.org/show_bug.cgi?id=71110
-
- This allows a layout test to do something like:
-
- // Set standard font for Arabic to Ahem.
- overridePreference("WebKitStandardFontMap", [ "Arab", "Ahem" ]);
-
- This should make writing a layout test for per-script fonts easier.
-
- This change only affects the Chromium DumpRenderTree, but the other
- platforms should probably also have a similar change eventually.
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp: add per-script
- font preferences to overridePreference
- (LayoutTestController::cppVariantToWebStringArray):
- (setFontMap):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (setStandardFontFamilyWrapper):
- (setFixedFontFamilyWrapper):
- (setSerifFontFamilyWrapper):
- (setSansSerifFontFamilyWrapper):
- (setCursiveFontFamilyWrapper):
- (setFantasyFontFamilyWrapper):
- (applyFontMap):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h: add per-script font
- preference members
- (WebPreferences::UScriptCodeHashTraits::emptyValue):
- (WebPreferences::UScriptCodeHashTraits::constructDeletedValue):
- (WebPreferences::UScriptCodeHashTraits::isDeletedValue):
-
-2011-11-02 Elliot Poger <epoger@google.com>
-
- until use_skia=1 by default on mac, default port should be chromium-cg-mac
- https://bugs.webkit.org/show_bug.cgi?id=71312
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
-
-2011-11-02 Stephen Chenney <schenney@chromium.org>
-
- printing layout test failures after r98634
- https://bugs.webkit.org/show_bug.cgi?id=71080
-
- Reviewed by Kent Tamura
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintPagesWithBoundaries): Added transforms invert the CG Bitmap so the coord system
- matches that for Skia.
-
-2011-11-01 Sam Weinig <sam@webkit.org>
-
- Can't complete ChangeLog when using resolve-Changelogs and webkit-tools-completion.sh
- https://bugs.webkit.org/show_bug.cgi?id=71346
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkit-tools-completion.sh:
- Add "-o default" which allows for completing files in addition to the word list.
-
-2011-11-02 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Add support for touch event testing to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=71310
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/DerivedSources.pro: Build system foo to ensure the ENABLE_TOUCH_EVENTS
- define works in EventSendingController.idl
- * WebKitTestRunner/EventSenderProxy.h: Add declarations for Qt implementations of touch
- handlers.
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl: Add touch functions
- required by tests.
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp: Forward touch messages to the
- ui process.
- (WTR::EventSendingController::addTouchPoint):
- (WTR::EventSendingController::updateTouchPoint):
- (WTR::EventSendingController::setTouchModifier):
- (WTR::EventSendingController::touchStart):
- (WTR::EventSendingController::touchMove):
- (WTR::EventSendingController::touchEnd):
- (WTR::EventSendingController::clearTouchPoints):
- (WTR::EventSendingController::releaseTouchPoint):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Include features.pri for feature
- defines.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle): Forward incoming
- touch messages to the EventSenderProxy.
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp: Implement touch test harness functions.
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::addTouchPoint):
- (WTR::EventSenderProxy::updateTouchPoint):
- (WTR::EventSenderProxy::setTouchModifier):
- (WTR::EventSenderProxy::touchStart):
- (WTR::EventSenderProxy::touchMove):
- (WTR::EventSenderProxy::touchEnd):
- (WTR::EventSenderProxy::clearTouchPoints):
- (WTR::EventSenderProxy::releaseTouchPoint):
- (WTR::EventSenderProxy::sendTouchEvent):
- * WebKitTestRunner/qt/WebKitTestRunner.pro: Include features.pri for feature defines.
-
-2011-11-01 Sam Weinig <sam@webkit.org>
-
- resolve-ChangeLogs --help should be faster.
-
- Reviewed by Adam Roben.
-
- * Scripts/resolve-ChangeLogs:
- (usageAndExit):
- Add a call to usageAndExit() before doing work to find unmerged changelogs
- if --help or something illegal is provided on the command line.
-
-2011-11-01 Benjamin Poulain <bpoulain@apple.com>
-
- [Mac] _drt_descriptionSuitableForTestResult generate an exception for absolute paths above the main frame
- https://bugs.webkit.org/show_bug.cgi?id=71342
-
- Reviewed by Darin Adler.
-
- [NSURL _drt_descriptionSuitableForTestResult] was generating a NSRangeException due to the call to
- [NSString substringFromIndex:] with an index out of the string range.
-
- The source of this path is the test-loading-archive-subresource-null-mimetype.html which load a subresource
- from the root of the disk.
- The problem was hidden because the exception are catched when calling the delegate.
-
- This patch changes _drt_descriptionSuitableForTestResult to return absolute string if the resource is not
- in a subdirectory of the main frame.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[NSURL _drt_descriptionSuitableForTestResult]):
-
-2011-11-01 Alok Priyadarshi <alokp@chromium.org>
-
- [chromium] --enable-hardware-gpu flag is not recognized by run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=71318
-
- Reviewed by James Robinson.
-
- Fixed a typo for --enable-hardware-gpu flag.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-11-01 Elliot Poger <epoger@google.com>
-
- chromium-gpu port should default to chromium-gpu-mac, not chromium-gpu-cg-mac
- https://bugs.webkit.org/show_bug.cgi?id=71286
-
- Reviewed by Stephen White.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-11-01 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Fix build of WebKitTestRunner with ELF symbol visibility
- https://bugs.webkit.org/show_bug.cgi?id=71299
-
- Reviewed by Andreas Kling.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: Use the properly exported symbol for the Qt
- build to enable WebCoreTestSupport::injectInternalsObject.
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Fix include path to DRTSupportQt
-
-2011-11-01 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Merge common desktop and touch view APIs under a base class.
- https://bugs.webkit.org/show_bug.cgi?id=71280
-
- Reviewed by Andreas Kling.
-
- Remove unneded forwarding logic for TouchWebView since those properties are
- now in the view just as the desktop web view.
-
- * MiniBrowser/qt/qml/TouchView.qml:
-
-2011-11-01 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- check-webkit-style: Allow names starting with "_q_".
- https://bugs.webkit.org/show_bug.cgi?id=70625
-
- Reviewed by Tor Arne Vestbø.
-
- Used by the Qt port as the standard prefix for private slots.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-11-01 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Fix valgrind error about uninitialized variable
- https://bugs.webkit.org/show_bug.cgi?id=71273
-
- Reviewed by Kenneth Christiansen.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify): Initialize isPrimary.
-
-2011-10-31 Adam Roben <aroben@apple.com>
-
- Make Leaks Viewer less strict when parsing leaks-related output from NRWT/ORWT
-
- Fixes <http://webkit.org/b/71258> REGRESSION (r98639): Leaks Viewer doesn't show recent
- leaky builds
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js:
- (RecentBuildsLoader.prototype.start): Relax a regex to gloss over differences in ORWT's vs.
- NRWT's leaks-related output (i.e., "M total leaks found!" vs. "M total leaks found for a
- total of N bytes!").
-
-2011-10-31 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Rename ewk_view_setting_scripts_window_open_{get,set} after r93833
- https://bugs.webkit.org/show_bug.cgi?id=71228
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createNewWindow):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2011-10-31 Eric Seidel <eric@webkit.org>
-
- webkitpy tests depend too much on the user's environment
- https://bugs.webkit.org/show_bug.cgi?id=71234
-
- Reviewed by Dirk Pranke.
-
- This change just makes a bunch of our older tests use
- more modern mocking to avoid trying to launch processes
- or read from the user's filesystem during unittesting.
-
- I found many of these by adding an assert in Executive.run_command
- that we were not unittesting. I can't add that assert always
- as there are some valid uses of Executive during unittesting.
- Once I fix more of these, I may find a way to add such an assert conditionally.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2011-10-31 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] MiniBrowser doesn't resize as the size is always overridden
- https://bugs.webkit.org/show_bug.cgi?id=71212
-
- Reviewed by Simon Hausmann.
-
- Remove call overriden the size.
-
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2011-10-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r98819, r98823, r98825, and r98830.
- http://trac.webkit.org/changeset/98819
- http://trac.webkit.org/changeset/98823
- http://trac.webkit.org/changeset/98825
- http://trac.webkit.org/changeset/98830
- https://bugs.webkit.org/show_bug.cgi?id=71199
-
- Broke Chromium Windows bot (Requested by rniwa on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-10-30 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Unreviewed.
-
- This is a temporary hack until someone from the cr-win port
- can take a look and determine which environment variable
- lighttpd is missing.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-10-30 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Unreviewed. I would have preferred to have this reviewed,
- but relevant reviewers are asleep and bots are broken.
-
- This was a regression from moving to a clean environment.
- ChromiumWin (and possibly other ports), need the "PATH"
- environment copied over. This wasn't caught in my testing
- because although we had unittests to cover this, they
- weren't being run on anything but windows. The vast majority
- of this change is just fixing the unittests to use our
- modern MockFileSystem/MockUser/MockExecutive so they can
- be run on any system (and removing the platform checks from
- the unittests so they are run everywhere).
-
- The actual fix is the single line "PATH" string added to base.py.
- The rest of this change is just fixing the Chromium port unittests
- to run on all systems (including changing the Chromium port to
- use FileSystem.path_to_module instead of __file__).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
-
-2011-10-29 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Unreviewed.
-
- Fix the Qt port and unittest the function so we don't break it again.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
-
-2011-10-29 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests is locale dependent
- https://bugs.webkit.org/show_bug.cgi?id=68691
-
- Reviewed by Adam Barth.
-
- Make NRWT use a clean environment just like ORWT did.
- I've manually validated that NRWT now copies over
- the same environment variables that ORWT did.
- This new code is exercised by existing setup_environ_for_server tests.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-10-29 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests: MASTER BUG: Switch all webkit.org bots over
- https://bugs.webkit.org/show_bug.cgi?id=34984
-
- Reviewed by Adam Barth.
-
- Move run-webkit-tests from using a white-list of supported NRWT ports
- to a blacklist of ports requiring ORWT.
-
- I've also added the ability to opt-in to parallel testing on a per-port basis.
-
- With these changes I'm going to officially declare this bug dead and
- work on remaining polish issues and individual developer complaints.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
- (platformIsReadyForParallelTesting):
-
-2011-10-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r98780.
- http://trac.webkit.org/changeset/98780
- https://bugs.webkit.org/show_bug.cgi?id=71173
-
- Broke Qt bots (Requested by rniwa on #webkit).
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-10-28 Rafael Weinstein <rafaelw@chromium.org>
-
- webkit.py gdb visualizer is broken after change to StringImpl
- https://bugs.webkit.org/show_bug.cgi?id=71154
-
- Reviewed by Tony Chang.
-
- r98624 changed StringImpl m_data to m_data32. This changes updates
- webkit.py to match.
-
- * gdb/webkit.py:
-
-2011-10-28 Joseph Pecoraro <pecoraro@apple.com>
-
- Fix typo in check-for-inappropriate-objc-class-names
- https://bugs.webkit.org/show_bug.cgi?id=71144
-
- Reviewed by Dan Bernstein.
-
- * Scripts/check-for-inappropriate-objc-class-names:
-
-2011-10-28 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- Add support for sending scroll-update events from EventSender.
- https://bugs.webkit.org/show_bug.cgi?id=66272
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::reset):
- (EventSender::gestureScrollUpdate):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/EventSender.h:
-
-2011-10-28 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests: MASTER BUG: Switch all webkit.org bots over
- https://bugs.webkit.org/show_bug.cgi?id=34984
-
- Reviewed by Adam Barth.
-
- Move run-webkit-tests from using a white-list of supported NRWT ports
- to a blacklist of ports requiring ORWT.
-
- I've also added the ability to opt-in to parallel testing on a per-port basis.
-
- With these changes I'm going to officially declare this bug dead and
- work on remaining polish issues and individual developer complaints.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
- (platformIsReadyForParallelTesting):
-
-2011-10-28 Eric Seidel <eric@webkit.org>
-
- NRWT crashes when parsing leaks output due to UTF-8 decoding error
- https://bugs.webkit.org/show_bug.cgi?id=71112
-
- Reviewed by Adam Barth.
-
- Use read_binary_file instead of read_text_file and add a test
- case with some non-utf8 data to make sure we don't break this in the future.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
-
-2011-10-28 David Levin <levin@chromium.org>
-
- watchlist should not CC the bug reporter
- https://bugs.webkit.org/show_bug.cgi?id=71079
-
- Reviewed by Adam Barth.
-
- Tested by test_apply_watch_list_local (webkitpy.tool.steps.applywatchlist_unittest.ApplyWatchListTest)
- which remains upchanged and thus verifies that the reporter doesn't get added to the cc line.
-
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py: Add the new email in the output.
- * Scripts/webkitpy/tool/mocktool.py: Change the reporter and make them one of the people to cc.
- * Scripts/webkitpy/tool/steps/applywatchlist.py: Remove the reporter from the cc list.
-
-2011-10-28 Zoltan Horvath <zoltan@webkit.org>
-
- Add watchlist for QtWebKit2 API and for WK2's Qt specific files.
- https://bugs.webkit.org/show_bug.cgi?id=71116
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-28 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Adapt to QSG* to QQuick* API change in qtdeclarative
- https://bugs.webkit.org/show_bug.cgi?id=70494
-
- Reviewed by Kenneth Christiansen.
-
- Use QQuick* instead of QSG* as well as QStandardPaths
- instead of QDesktopLocation.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * QtTestBrowser/cookiejar.cpp:
- (TestBrowserCookieJar::TestBrowserCookieJar):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::setDiskCache):
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::WrapperWindow):
- (WTR::WrapperWindow::handleStatusChanged):
-
-2011-10-28 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Fix the Ctrl behavior for touch mocking in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=71106
-
- Reviewed by Simon Hausmann.
-
- Holding Ctrl allows multiple touch points to be held on the screen using
- mouse buttons. It would previously only prevent TouchReleased to be sent
- and would require another MouseButtonRelease to be sent without holding Ctrl.
-
- This patch makes sure that all held touch points are released when Ctrl
- is released if MouseButtonRelease was received.
- It also removes the touch QEvent::Type logic since it's currently handled
- by QtGui by observing the modified touch points.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- (MiniBrowserApplication::sendTouchEvent):
- * MiniBrowser/qt/MiniBrowserApplication.h:
-
-2011-10-28 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] MiniBrowser needs a -window-size option
- https://bugs.webkit.org/show_bug.cgi?id=70999
-
- Reviewed by Simon Hausmann.
-
- Add an -window-size option useful for testing the viewport handling.
- Also clean up the option handling.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- (WindowOptions::setRequestedWindowSize):
- (WindowOptions::requestedWindowSize):
- * MiniBrowser/qt/utils.cpp:
- (takeOptionValue):
- * MiniBrowser/qt/utils.h:
-
-2011-10-28 Jochen Eisinger <jochen@chromium.org>
-
- Add allowScriptFromSource callback to FrameLoaderClient
- https://bugs.webkit.org/show_bug.cgi?id=71013
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setScriptsAllowed):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebPermissions.cpp:
- (WebPermissions::allowScriptFromSource):
- (WebPermissions::setScriptsAllowed):
- (WebPermissions::reset):
- * DumpRenderTree/chromium/WebPermissions.h:
-
-2011-10-28 Alexandru Chiculita <achicu@adobe.com>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-10-27 Adam Barth <abarth@webkit.org>
-
- Remove WinCairo from the set of core builders. WinCairo rarely builds
- and is never green.
-
- Rubber-stamped by Eric Seidel.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-10-27 Yuta Kitamura <yutak@chromium.org>
-
- WebSocket: Connecting to localhost:8880 takes one second on Windows
- https://bugs.webkit.org/show_bug.cgi?id=64788
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- Bind to "localhost" instead of "127.0.0.1" to let pywebsocket listen on both
- IPv4 and IPv6 addresses. This should prevent the test reserved-opcodes.html
- from timing out on Windows, because this test tries to open a lot of
- connections to localhost and each attempt takes one second to fall back from
- IPv6 to IPv4 on Windows (I have no idea why Windows works like this, though).
-
-2011-10-27 Adam Barth <abarth@webkit.org>
-
- Dis-integrate run-bindings-tests with webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=71092
-
- Reviewed by Ryosuke Niwa.
-
- These tests aren't really adding any value.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2011-10-27 Eric Seidel <eric@webkit.org>
-
- REGRESSION (r98639): NRWT crashes when parsing leaks output
- https://bugs.webkit.org/show_bug.cgi?id=71087
-
- Unreviewed. Sadly we have no good way to test logging.
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
-
-2011-10-27 David Levin <levin@chromium.org>
-
- Test expectation errors should include the file name and platform in both the log and exception info.
- https://bugs.webkit.org/show_bug.cgi?id=71067
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
-
-2011-10-27 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests doesn't understand --qt or --gtk
- https://bugs.webkit.org/show_bug.cgi?id=63970
-
- Reviewed by Ojan Vafai.
-
- Add support for --qt and --gtk to NRWT.
- I also removed some incorrect comments in the option parsing
- code (options which we already implement, but said we didn't)
- as well as moved --platform parsing out of the "results_options"
- section into the top configuration section.
-
- Now run-webkit-tests no longer needs NRWT-specific code for passing
- --platform=qt, etc.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-10-27 Eric Seidel <eric@webkit.org>
-
- REGRESSION (NRWT): build.webkit.org doesn't show the total number of leaks found during a test run on the Leaks bot
- https://bugs.webkit.org/show_bug.cgi?id=66227
-
- Reviewed by Adam Roben.
-
- I believe this should fix the bug.
-
- * Scripts/run-webkit-tests: make NRWT default for --leaks
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._parse_leaks_output): removed the (unneeded) process_pid argument, and made the regexp use named groups (even though we don't ever grab them by name)
- (LeakDetector.count_total_bytes_and_unique_leaks): renamed from parse_leak_files
- (LeakDetector.count_total_leaks): new file (the guts of this change) which is used to re-parse the leaks output during the summarize leaks phase.
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- Changes to reflect the rename of count_total_bytes_and_unique_leaks and a new test for count_total_leaks.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- Use count_total_leaks to spit out the total leak count like ORWT did, and remove the FIXME on the subject.
-
-2011-10-27 Stephen Chenney <schenney@chromium.org>
-
- [Chromium] Need setPrinting
- https://bugs.webkit.org/show_bug.cgi?id=46152
-
- Reviewed by Hajime Morita.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Added logic for handling setPrinting.
- (LayoutTestController::reset): Clearing flags for setPrinting.
- (LayoutTestController::setPrinting): Set flags for setPrinting.
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setIsPrinting): Added the setPrinting methods and flags.
- (LayoutTestController::isPrinting): Method to return the setPrinting status.
- * DumpRenderTree/chromium/TestShell.cpp:
- (dumpFramesAsPrintedText): A method for creating a text dump in printed layout.
- (TestShell::dump): Modified to dump setPrinting-specific output.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintPagesWithBoundaries): Handling for pixel tests when setPrinting is
- active.
- * DumpRenderTree/chromium/WebViewHost.h: Prototype for paintPagesWithBoundaries.
-
-2011-10-27 Sam Weinig <sam@webkit.org>
-
- Add allowsPlugIns property to WKBrowsingContextGroup
- https://bugs.webkit.org/show_bug.cgi?id=70987
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:
- Add basic test for WKBrowsingContextGroup.allowsPlugIns.
-
-2011-10-27 Adam Roben <aroben@apple.com>
-
- Test WKBundlePageGetBackingScaleFactor
-
- Test for <http://webkit.org/b/71025> <rdar://problem/10355037> REGRESSION (r97191): Clients
- can't reliably determine the scale factor of snapshots returned via
- WKBundlePageCreateSnapshot* API
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new files.
-
- * TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Record the passed-back scale factor.
- (TestWebKitAPI::setInjectedBundleClient): Hook up our didReceiveMessage callback.
- (TestWebKitAPI::createWindow): Conjure up a window.
- (TestWebKitAPI::TEST): Ask the injected bundle code to call the new
- WKBundlePageGetBackingScaleFactor API when the WKView is in windows with various scale
- factors and when using a custom scale factor, and check that we get those same scale factors
- back.
-
- * TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm: Added.
- (TestWebKitAPI::GetBackingScaleFactorTest::GetBackingScaleFactorTest): Just initialize our
- members.
- (TestWebKitAPI::GetBackingScaleFactorTest::didCreatePage): Store the page for later.
- (TestWebKitAPI::GetBackingScaleFactorTest::didReceiveMessage): Get the backing scale factor
- from the page using the new API and send it back.
-
-2011-10-27 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] MiniBrowser crashes when started with 0 arguments
-
- Rubber-stamped by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- Fix typo error.
-
-2011-10-27 Takashi Toyoshima <toyoshim@chromium.org>
-
- [WebSocket] update pywebsocket to 0.7.
- https://bugs.webkit.org/show_bug.cgi?id=70992
-
- Reviewed by Kent Tamura.
-
- pywebsocket 0.7 fixed the bug on dual stack support on OS X.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-10-27 Elliot Poger <epoger@google.com>
-
- make lion observe MAC lines in test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=70941
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-10-27 John Knottenbelt <jknotten@chromium.org>
-
- [Chromium] Allow DRT to be built without notifications enabled.
- https://bugs.webkit.org/show_bug.cgi?id=70919
-
- Reviewed by Tony Gentilcore.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::grantDesktopNotificationPermission):
- (LayoutTestController::simulateDesktopNotificationClick):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetTestController):
-
-2011-10-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- [Qt] Improve command line arguments handling for MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=70616
-
- Reviewed by Kenneth Rohde Christiansen.
-
- - Use two dashes for word arguments.
- - Return with an error when an unsupported argument is given.
- - Allow the URL to be placed before option arguments.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (printHelp):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/utils.cpp:
- (takeOptionFlag):
- (takeOptionValue):
- * MiniBrowser/qt/utils.h:
-
-2011-10-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] NRWT doesn't work on qt-mac platform
- https://bugs.webkit.org/show_bug.cgi?id=64445
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests: Switch qt-mac platform to NRWT.
- (useNewRunWebKitTests):
- * Scripts/webkitpy/layout_tests/port/qt.py: Fix library path on Mac.
-
-2011-10-26 Sam Weinig <sam@webkit.org>
-
- Add initial setting to WKBrowsingContextGroup
- https://bugs.webkit.org/show_bug.cgi?id=70942
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm: Added.
- Add basic test that setting the javaScriptEnabled setting takes. It is not
- possible to test its effect quite yet.
-
-2011-10-26 Alejandro G. Castro <alex@igalia.com>
-
- [GTK] [WK2] Add WebKit2 distcheck support
- https://bugs.webkit.org/show_bug.cgi?id=70933
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/GNUmakefile.am: Add missing files to the
- sources and EXTRA_DIST.
-
-2011-10-26 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Fix failing assertion on startup of MiniBrowser -touch.
-
- Reviewed by Tor Arne Vestbø.
-
- We're using QScroller since r98460, which requires QWidget/QApplication. So
- use QApplication and QtWidgets for the time being.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
-
-2011-10-25 Zeno Albisser <zeno.albisser@nokia.com>
-
- [Qt][WK2] Rewrite MiniBrowser in QML
- https://bugs.webkit.org/show_bug.cgi?id=70315
-
- Add the first QML based implementation of MiniBrowser.
-
- Patch by Jocelyn Turcotte <jocelyn.turcotte@nokia.com>,
- Zeno Albisser <zeno.albisser@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::webView):
- (BrowserWindow::load):
- (BrowserWindow::keyPressEvent):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- * MiniBrowser/qt/UrlLoader.cpp:
- (UrlLoader::UrlLoader):
- * MiniBrowser/qt/icons/next.png: Added.
- * MiniBrowser/qt/icons/previous.png: Added.
- * MiniBrowser/qt/icons/refresh.png: Added.
- * MiniBrowser/qt/icons/stop.png: Added.
- * MiniBrowser/qt/main.cpp:
- (main):
- * MiniBrowser/qt/qml/BrowserWindow.qml: Added.
-
-2011-10-26 Zeno Albisser <zeno.albisser@nokia.com>
-
- [Qt][WK2] Remove QtWidgets dependency in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=70529
-
- Remove obsolete code for a new QML based implementation
- of MiniBrowser.
- Change BrowserWindow to derive from QSGView instead of
- QMainWindow. QSGView is used as a top level window that
- provides the container for placing QML content.
- Make MiniBrowserApplication derive from QGuiApplication
- instead of QApplication.
-
- Patch by Jocelyn Turcotte <jocelyn.turcotte@nokia.com>,
- Zeno Albisser <zeno.albisser@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserView.cpp: Removed.
- * MiniBrowser/qt/BrowserView.h: Removed.
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::load):
- (BrowserWindow::screenshot):
- (BrowserWindow::loadURLListFromFile):
- (BrowserWindow::updateUserAgentList):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- * MiniBrowser/qt/UrlLoader.cpp:
- (UrlLoader::UrlLoader):
- * MiniBrowser/qt/main.cpp:
-
-2011-10-25 Zeno Albisser <zeno.albisser@nokia.com>
-
- [Qt][WK2] Remove QAction from MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=70525
-
- In order to rewrite MiniBrowser in QML we need a suitable
- mechanism for triggering navigation actions.
- Due to the QtWidgets dependency of QAction the current
- solution is not suitable anymore. Therefore we introduce
- invokable methods and export properties in QWebNavigationController.
-
- Patch by Jocelyn Turcotte <jocelyn.turcotte@nokia.com>,
- Zeno Albisser <zeno.albisser@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/BrowserView.cpp:
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
-
-2011-10-26 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Unregister viewport,changed signal in EWebLauncher.
- https://bugs.webkit.org/show_bug.cgi?id=70478
-
- Reviewed by Eric Seidel.
-
- 'viewport,changed' signal was registered by EWebLauncher in order to test viewport meta tag.
- However, it sets wrong layout to some web sites which have viewport meta tag. Because, host pc
- doesn't support proper DPI value though viewport is using DPI value to compute layout values.
- This signal is for mobile device.
-
- * EWebLauncher/main.c:
- (browserCreate):
-
-2011-10-25 Anders Carlsson <andersca@apple.com>
-
- Plug-ins have no way to find out when the device scale factor changes
- https://bugs.webkit.org/show_bug.cgi?id=67226
- <rdar://problem/10048276>
-
- Reviewed by Sam Weinig.
-
- Keep a cached copy of the contents scale and update it when it changes.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp:
- (ContentsScaleFactor::ContentsScaleFactor):
- (ContentsScaleFactor::cachedContentsScaleFactor):
- (ContentsScaleFactor::ScriptableObject::hasProperty):
- (ContentsScaleFactor::ScriptableObject::getProperty):
- (ContentsScaleFactor::NPP_New):
- (ContentsScaleFactor::NPP_SetValue):
-
-2011-10-25 Sam Weinig <sam@webkit.org>
-
- Add WKBrowsingContextLoadDelegateTest test for a failed load
- https://bugs.webkit.org/show_bug.cgi?id=70859
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
- (TEST_F): Add TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoadFail).
-
- (-[SimpleLoadFailDelegate browsingContextControllerDidFailProvisionalLoad:withError:]):
- Test that we are getting the correct NSError code and domain.
-
-2011-10-25 Erik Arvidsson <arv@chromium.org>
-
- JS Test Harness: Make successfullyParsed optional
- https://bugs.webkit.org/show_bug.cgi?id=70784
-
- Reviewed by Ojan Vafai.
-
- * Scripts/make-new-script-test:
- (writeTestFile): Update the template for script tests.
-
-2011-10-25 Anders Carlsson <andersca@apple.com>
-
- Plug-ins have to use JavaScript to find out the current device scale factor
- https://bugs.webkit.org/show_bug.cgi?id=67225
- <rdar://problem/10048258>
-
- Reviewed by Darin Adler.
-
- Add a plug-in test for getting the contents scale factor.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp: Added.
- (ContentsScaleFactor::ContentsScaleFactor):
- (ContentsScaleFactor::contentsScaleFactor):
- (ContentsScaleFactor::ScriptableObject::hasProperty):
- (ContentsScaleFactor::ScriptableObject::getProperty):
- (ContentsScaleFactor::ScriptableObject::pluginTest):
- (ContentsScaleFactor::NPP_GetValue):
-
-2011-10-25 Sam Weinig <sam@webkit.org>
-
- Flesh out WKBrowsingContextLoadDelegate a bit
- https://bugs.webkit.org/show_bug.cgi?id=70846
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2ObjC: Added.
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm: Added.
- (WKBrowsingContextLoadDelegateTest::WKBrowsingContextLoadDelegateTest):
- (WKBrowsingContextLoadDelegateTest::SetUp):
- (WKBrowsingContextLoadDelegateTest::TearDown):
- (-[SimpleLoadDelegate browsingContextControllerDidFinishLoad:]):
- (TEST_F):
- Add basic testing for WKBrowsingContextLoadDelegate.
-
-2011-10-25 Alexey Proskuryakov <ap@apple.com>
-
- make-script-test-wrappers should not look outside fast/js
- https://bugs.webkit.org/show_bug.cgi?id=66357
-
- Reviewed by Maciej Stachowiak.
-
- * Scripts/make-script-test-wrappers: Don't look for template files everywhere, only support
- fast/js.
-
-2011-10-25 Adam Barth <abarth@webkit.org>
-
- Add a --make option to update-webkit to engage the Makefile-based build system
- https://bugs.webkit.org/show_bug.cgi?id=70847
-
- Reviewed by Dimitri Glazkov.
-
- I can never remember what crazy environment variables I'm supposed to
- set to tell GYP what to do.
-
- * Scripts/update-webkit:
-
-2011-10-25 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Force layout when sending events.
- https://bugs.webkit.org/show_bug.cgi?id=70357
-
- Reviewed by Antonio Gomes.
-
- Some tests such as editing/input/page-up-down-scrolls.html rely on the
- scrollbars being properly set up during the onload events.
- Document::implicitClose(), however, dispatches the onload events before
- calling FrameView::layout(), so these tests usually fail.
-
- We now do the same as the GTK+ and Chromium ports and manually force the
- layout when dispatching events.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (sendMouseEvent):
- (keyDownCallback):
-
-2011-10-25 Daniel Bates <dbates@rim.com>
-
- build-webkit --clean should only clean build directory for CMake-based ports
- https://bugs.webkit.org/show_bug.cgi?id=70834
-
- Reviewed by Antonio Gomes.
-
- Currently build-webkit --clean both cleans the build directory and builds WebKit for
- CMake-based ports. Instead, build-webkit --clean should only clean up the build directory
- as per its description in the usage message of build-webkit.
-
- * Scripts/webkitdirs.pm:
- (buildCMakeProjectOrExit):
-
-2011-10-25 Anna Cavender <annacc@chromium.org>
-
- Enable running of track layout tests for Chromium
- https://bugs.webkit.org/show_bug.cgi?id=70803
-
- Reviewed by Adam Barth.
-
- Make DumpRenderTree/TestShell always run with track enabled
- (equivalent of --enable-video-track).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-10-25 Vamshikrishna Yellenki <vamshi@motorola.com>
-
- [WK2]Main window never gets focus using TAB key in WebKit2 GTK+.
- https://bugs.webkit.org/show_bug.cgi?id=70603
-
- Reviewed by Gustavo Noronha Silva.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (focus):
- (unFocus):
- (browserWindowUIClientInit):
-
-2011-10-25 Dan Bernstein <mitz@apple.com>
-
- <rdar://problem/10337033> DOMRangeOfString:relativeTo:options has problems with -webkit-user-select: none
-
- Reviewed by Adam Roben.
-
- * TestWebKitAPI/Tests/mac/DOMRangeOfString.mm:
- (TestWebKitAPI::TEST):
-
-2011-10-25 Eric Seidel <eric@webkit.org>
-
- WIN: editing tests fail under NRWT because editing delegate callbacks aren't stripped
- https://bugs.webkit.org/show_bug.cgi?id=64471
-
- Reviewed by Adam Roben.
-
- Speculative fix.
-
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
-
-2011-10-24 Mikhail Naganov <mnaganov@chromium.org>
-
- Fix bug summary when rolling Chromium DEPS to LKGR.
- https://bugs.webkit.org/show_bug.cgi?id=69917
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/roll.py:
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
-
-2011-10-24 Ivan Briano <ivan@profusion.mobi>
-
- [EFL] Build fix. Add include path to find npapi.h
- https://bugs.webkit.org/show_bug.cgi?id=70730
-
- Unreviewed build fix.
-
- * DumpRenderTree/efl/CMakeLists.txt: Add include path for npapi.h
-
-2011-10-24 Eric Seidel <eric@webkit.org>
-
- Plugin tests are failing after switching WK2 to NRWT
- https://bugs.webkit.org/show_bug.cgi?id=70760
-
- Reviewed by Simon Fraser.
-
- Perpetuate this horrible hack.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-10-24 Eric Seidel <eric@webkit.org>
-
- NRWT doesn't support ORWT's --root option, but should
- https://bugs.webkit.org/show_bug.cgi?id=70416
-
- Reviewed by Dirk Pranke.
-
- Add support for ORWT's --root option which is used for
- running tests with a nightly build of WebKit.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/base.py:
- - webkit_build_path was never called by any code, removed.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-10-24 David Levin <levin@chromium.org>
-
- check-webkit-style complains about WEBKIT_EXPORT in test/WebUnitTests.h
- https://bugs.webkit.org/show_bug.cgi?id=70747
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Allow WEBKIT_EXPORT in tests dir.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Corresponding test.
-
-2011-10-24 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Crash when running pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=70725
-
- Reviewed by Chang Shu.
-
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-10-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Remove g_thread_init() calls
- https://bugs.webkit.org/show_bug.cgi?id=70717
-
- Reviewed by Xan Lopez.
-
- With newer glib it's not needed anymore and with previous versions
- it was already called by g_type_init().
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
- * GtkLauncher/main.c:
- (main):
- * MiniBrowser/gtk/main.c:
- (main):
-
-2011-10-24 Alejandro G. Castro <alex@igalia.com>
-
- [WK2] [GTK] WebKitTestRunner crashes with heap corruption
- https://bugs.webkit.org/show_bug.cgi?id=69403
-
- We did not added autotoolsconfig.h to the config.h file and we
- were adding Platform.h without the config.h in the
- WebKitTestRunnerPrefix.h. Added the autotoolsconfig.h include in
- the Prefix file.
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/WebKitTestRunnerPrefix.h:
-
-2011-10-23 Tomasz Morawski <t.morawski@samsung.com>
-
- [EFL] Remove unused code from EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=70590
-
- Reviewed by Andreas Kling.
-
- Removed unused function on_closeWindow from EWebLauncher
-
- * EWebLauncher/main.c:
-
-2011-10-23 Luke Macpherson <macpherson@chromium.org>
-
- Add watchlist for WebCore/css and put myself on it.
- https://bugs.webkit.org/show_bug.cgi?id=70701
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
- Add watchlist for WebCore/css and put myself on it.
-
-2011-10-23 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- [GTK] Implement KeyDown function for WebKit2 EventSender.
- https://bugs.webkit.org/show_bug.cgi?id=69410
-
- Reviewed by Martin Robinson.
-
- Implement the KeyDown function on Gtk platform.
-
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp: Added.
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::dispatchEvent):
- (WTR::getModifiers):
- (WTR::getGDKKeySymForKeyRef):
- (WTR::EventSenderProxy::keyDown):
-
-2011-10-22 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2][GTK] run-launcher script fails after testing WK2 tests
- https://bugs.webkit.org/show_bug.cgi?id=70676
-
- Reviewed by Andreas Kling.
-
- Pass the '-2' flag instead of '--webkit-test-runner' when executing
- run-launcher script after testing with WebKitTestRunner.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-10-22 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2][GTK] Missing env variables cause WKTR to crash
- https://bugs.webkit.org/show_bug.cgi?id=70674
-
- Reviewed by Martin Robinson.
-
- Set two environment variables that the Gtk's port of WebKitTestRunner
- depends on and crashes if they're not explicitly set by the user.
- Also modify the setting of the WEBKIT_INSPECTOR_PATH variable so it
- properly uses the _build_path method.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: Set
- TEST_RUNNER_INJECTED_BUNDLE_FILENAME and TEST_RUNNER_TEST_PLUGIN_PATH
- environment variables.
-
-2011-10-21 Filip Pizlo <fpizlo@apple.com>
-
- Bencher script doesn't measure GC times accurately
- https://bugs.webkit.org/show_bug.cgi?id=70588
-
- Reviewed by Geoff Garen.
-
- Added two new options which allow different ways of measuring GC times:
-
- --measure-gc, which omits calls to gc() between benchmark invocations.
- This option takes an optional argument, which is the name of the
- VM in which to enable this feature. This allows comparing a single VM
- against itself, with and without GC.
-
- --rerun <N>, which causes each sample measurement to include N invocations
- which do not have gc() calls between them. The default is N = 1, which
- results in the same behavior as before.
-
- You can use either --measure-gc or --rerun <N> for N > 1 (preferably
- N >= 3) to get more of a contribution from GC to the measured times.
- --rerun results in tighter confidence intervals than --measure-gc, since
- it amortizes GC effects in each sample, while with --measure-gc some
- samples will see GC and some won't leading to a higher standard devation
- and thus requiring more samples to reduce confidence intervals to
- managable levels.
-
- * Scripts/bencher:
-
-2011-10-21 Sam Weinig <sam@webkit.org>
-
- Remove ability to create a WKView without a WKContextRef and WKPageGroupRef
- https://bugs.webkit.org/show_bug.cgi?id=70653
-
- Reviewed by Simon Fraser.
-
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate newWindow:]):
- (-[BrowserAppDelegate openPanelDidEnd:returnCode:contextInfo:]):
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController initWithContext:pageGroup:]):
- (-[BrowserWindowController windowWillClose:]):
- (createNewPage):
- (-[BrowserWindowController awakeFromNib]):
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit2Test):
- Update testing code to pass a PageGroup as necessary.
-
-2011-10-21 Leandro Pereira <leandro@profusion.mobi>
-
- webkitpy: Teach NRWT about the EFL port
- https://bugs.webkit.org/show_bug.cgi?id=70637
-
- Allows using ``efl'' as a platform when executing NRWT.
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/efl.py: Added.
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/factory.py: Adjust factory to make EflPort objects
- when using PortFactory.get(port_name='efl').
-
-2011-10-21 Devdatta Deshpande <pwjd73@motorola.com>
-
- [Gtk] mousemove event always has metaKey == true
- https://bugs.webkit.org/show_bug.cgi?id=35299
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (gdkModifierFromJSValue): GDK_META_MASK is used to represent metaKey for platform GTK mouse and
- keyboard events. So making it in sync with WebCore files.
- (mouseMoveToCallback): Sending modifier keys state for mouse move event.
-
-2011-10-21 Carlos Garcia Campos <cgarcia@igalia.com>
-
- watchlist: Add a new entry for WebKit2 GTK+ public API
- https://bugs.webkit.org/show_bug.cgi?id=70601
-
- Reviewed by Philippe Normand.
-
- Subscribe myself to WebKit2 GTK+ API patches. Also add a message
- for patches that might include new API that points to the WebKit2
- GTK+ API guidelines.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-21 Simon Hausmann <simon.hausmann@nokia.com>
-
- Remove QtScript source code from WebKit.
- https://bugs.webkit.org/show_bug.cgi?id=64088
-
- Reviewed by Tor Arne Vestbø.
-
- Removed dead code that isn't developed anymore.
-
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-10-20 Eric Seidel <eric@webkit.org>
-
- Switch webkit2 bot to NRWT
- https://bugs.webkit.org/show_bug.cgi?id=56729
-
- Reviewed by Adam Barth.
-
- Move the WK2 bot to using NRWT instead of ORWT, as announced on webkit-dev:
- https://lists.webkit.org/pipermail/webkit-dev/2011-October/018337.html
-
- * Scripts/run-webkit-tests:
- (runningOnBuildBot):
- (useNewRunWebKitTests):
-
-2011-10-20 Eric Seidel <eric@webkit.org>
-
- NRWT is asserting on DRT due to lack of newline when processing line from DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=70585
-
- Reviewed by Adam Barth.
-
- This really should be an assert, as this inidicates a programming error in either DRT or NRWT.
- However since DRT was functioning fine before in Qt, we'll make this an error log for now
- and once we find the root cause flip this back to an assert.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-10-20 Yuta Kitamura <yutak@chromium.org>
-
- Unreviewed, rolling out r98064.
- http://trac.webkit.org/changeset/98064
- https://bugs.webkit.org/show_bug.cgi?id=64788
-
- Broke Mac bots.
-
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
-
-2011-10-20 Yuta Kitamura <yutak@chromium.org>
-
- WebSocket: Connecting to localhost:8880 takes one second on Windows
- https://bugs.webkit.org/show_bug.cgi?id=64788
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- Bind to "localhost" instead of "127.0.0.1" to let pywebsocket listen on both
- IPv4 and IPv6 addresses. This should prevent the test reserved-opcodes.html
- from timing out on Windows, because this test tries to open a lot of
- connections to localhost and each attempt takes one second to fall back from
- IPv6 to IPv4 on Windows (I have no idea why Windows works like this, though).
-
-2011-10-20 Ryosuke Niwa <rniwa@webkit.org>
-
- nrwt: newly generated results are put in cross-platform directory
- https://bugs.webkit.org/show_bug.cgi?id=68931
-
- Reviewed by Dirk Pranke.
-
- The bug was caused by SingleTestRunner._add_missing_baselines's always calling _save_baseline_data
- with generate_new_baseline set to False. Fixed the bug by always passing True when .png file is missing
- (because png images are typically different on each platform), and passing True when .txt file is missing
- and the actual result's first line matches the regular expression "layer at \(\d+,\d+\) size \d+x\d+".
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Changed the expectation
- and added a test case.
-
-2011-10-20 Kent Tamura <tkent@chromium.org>
-
- Unreviewed. Adding myself to watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
- Add "ChromiumDumpRenderTree" and "Forms" definitions, and cc them to me.
-
-2011-10-20 Nico Weber <thakis@chromium.org>
-
- [chromium/mac] Add support for building with make
- https://bugs.webkit.org/show_bug.cgi?id=70455
-
- Reviewed by Adam Barth.
-
- Depends on http://codereview.chromium.org/8352029/
- `GYP_GENERATORS=make Tools/Scripts/update-webkit --chromium` will
- create a toplevel Makefile.chromium.
-
- If that file exists and is newer than Source/WebKit/chromium/WebKit.xcodeproj,
- `Tools/Scripts/build-webkit --chromium` will build with make instead of
- xcodebuild.
-
- Also let nrwt use a binary from out/ if it exists.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
- (isChromiumMacMake):
- (determineIsChromiumMacMake):
- (buildChromium):
-
-2011-10-20 Eric Seidel <eric@webkit.org>
-
- Possible REGRESSION(97879): NRWT fails when DumpRenderTree crashes
- https://bugs.webkit.org/show_bug.cgi?id=70524
-
- Reviewed by Adam Barth.
-
- This is a speculative fix, since I do not use a platform
- which outputs crashlogs over stderr.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-10-20 Eric Seidel <eric@webkit.org>
-
- REGRESSION(97879): Pixel tests no longer work with NRWT on Mac
- https://bugs.webkit.org/show_bug.cgi?id=70492
-
- Reviewed by Adam Barth.
-
- The bug turned out to be that I was assuming the block.content
- would be empty before the binary content following Content-Length
- was read inside _read_block. Turns out its not, due to extra newlines
- and "ExpectedHash" header.
-
- In the process of trying to figure out what was going wrong I ended up
- cleaning up our newline usage in DumpRenderTree a little. Moved
- two error messages from stdout to stderr, and fixed a little code indent/whitespace.
-
- I also fixed ServerProcess to use "deadline" everywhere instead of timeout
- per Adam's request in the original bug.
-
- * DumpRenderTree/PixelDumpSupport.cpp:
- (dumpWebViewAsPixelsAndCompareWithExpected):
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- (main):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (restoreMainDisplayColorProfile):
- (setupMainDisplayColorProfile):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-10-20 Tony Chang <tony@chromium.org>
-
- [chromium] Remove <stdint.h> from ImageDiff and use
- unsigned int instead of uint32_t.
-
- Unreviewed, fixing the chromium win build.
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (Image::pixelAt):
- (Image::setPixelAt):
- (maxOf3):
- (getRedComponent):
- (getGreenComponent):
- (getBlueComponent):
- (weightedPercentageDifferent):
- (createImageDiff):
-
-2011-10-20 Hao Zheng <zhenghao@chromium.org>
-
- [Chromium] Reduce dependencies of ImageDiff to compile it for Android.
- https://bugs.webkit.org/show_bug.cgi?id=69997
-
- Reviewed by Tony Chang.
-
- This change is required to make ImageDiff for Android, and can benefit
- other platforms, too. On Android, most targets are built as
- toolsets:target. while ImageDiff needs to be built as toolsets:host.
- Currently, building the standalone target of ImageDiff depends on about
- 85 other targets (try make ImageDiff'), which is inefficient. After the
- change, ImageDiff only depends on webkit_support_gfx, which in turn
- depends on libpng and zlib.
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (main):
-
-2011-10-20 Leandro Pereira <leandro@profusion.mobi>
-
- [EFL] Unreviewed DumpRenderTree build fix.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::addChromeInputField): Add stub.
- (LayoutTestController::removeChromeInputField): Ditto.
- (LayoutTestController::focusWebView): Ditto.
- (LayoutTestController::setBackingScaleFactor): Ditto.
-
-2011-10-20 Leandro Pereira <leandro@profusion.mobi>
-
- [EFL] Plug ImageDiff/DumpRenderTree on CMake build system
- https://bugs.webkit.org/show_bug.cgi?id=70142
-
- Reviewed by Gustavo Noronha Silva.
-
- * CMakeListsEfl.txt: Include DRT CMakeLists.
- * DumpRenderTree/efl/CMakeLists.txt: Added.
-
-2011-10-20 Philippe Normand <pnormand@igalia.com>
-
- [style] Allow usage of NULL in gst_*
- https://bugs.webkit.org/show_bug.cgi?id=70498
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Simplified the detection
- of gst_ calls. Now just ignore NULL in all of them.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Test for above change.
-
-2011-10-20 Leandro Pereira <leandro@profusion.mobi>
-
- [EFL] Unreviewed. Build fix after r97043.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): Use ewk_view_scale_set() instead of ewk_view_page_scale().
- * DumpRenderTree/efl/EventSender.cpp:
- (scalePageByCallback): Ditto.
-
-2011-10-20 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed. Adding myself to watchlists.
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach new-run-webkit-tests about #CRASHED and #CRASHED - WebProcess
- https://bugs.webkit.org/show_bug.cgi?id=63683
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-10-19 Jochen Eisinger <jochen@chromium.org>
-
- Chromium doesn't support git branch builds, so don't add the branch to the product dir
- https://bugs.webkit.org/show_bug.cgi?id=70449
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
-
-2011-10-19 Ojan Vafai <ojan@chromium.org>
-
- Unreviewed. Adding myself to watchlists.
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-19 Tom Zakrajsek <tomz@codeaurora.org>
-
- Add a suggest-nominations command to webkit-patch for computing potential committer/reviewer nominations
- https://bugs.webkit.org/show_bug.cgi?id=62166
-
- Reviewed by Eric Seidel.
-
- Included options to control committer/reviewer patch count requirements,
- an age-limit on patches, and verbose output for more in-depth analysis.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/suggestnominations.py: Added.
- * Scripts/webkitpy/tool/commands/suggestnominations_unittest.py: Added.
-
-2011-10-19 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests -2 was crashing due to both "java" and "java/" being listed in Skipped files.
- Make NRWT normalize directory names in Skipped files during parsing.
-
- Unreviewed. Very simple (tested) change.
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-10-19 David Levin <levin@chromium.org>
-
- watchlist: Should be more robust to bad regex.
- https://bugs.webkit.org/show_bug.cgi?id=69486
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist: Change the instructions due to
- watchlist being checked by check-webkit-style (bug 69487) and remove the .* from file
- patterns since they are no longer anchored on the right hand side.
- * Scripts/webkitpy/common/watchlist/amountchangedpattern.py: Change *pattern to take a compiled regex directly.
- * Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py: Ditto.
- * Scripts/webkitpy/common/watchlist/changedlinepattern.py: Ditto.
- * Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py: Ditto.
- * Scripts/webkitpy/common/watchlist/filenamepattern.py: Ditto.
- * Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py: Ditto and change a test now that
- filenames are no longer anchored on the right hand side.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Catch regex errors and log them as errors.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Add some tests to verify that bad regexes
- don't kill everything.
-
-2011-10-19 David Levin <levin@chromium.org>
-
- watchlist: Add a stylecheck to do validity checks for the watchlist config.
- https://bugs.webkit.org/show_bug.cgi?id=69487
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checker.py: Add the watchlist file type.
- * Scripts/webkitpy/style/checkers/watchlist.py: Added.
- * Scripts/webkitpy/style/checkers/watchlist_unittest.py: Added.
-
-2011-10-19 Eric Seidel <eric@webkit.org>
-
- NRWT ServerProcess can't read lines from stderr and stdio separately
- https://bugs.webkit.org/show_bug.cgi?id=70435
-
- Reviewed by Adam Barth.
-
- This is the underlying bug behind our lack of WK2 support, and timeout detection on Windows.
- DRT expects RWT to read one line at a time from stderr and stdout independently.
- This allows DRT to communicate errors over stderr and have them responded to immediately
- regardless of what state the stdio stream may be in. Previously NRWT's ServerProcess
- class only exposed a read_line function which would read a line from stdout
- and batch all output from stderr into an error buffer. Callers would only be able
- to respond to commands over stderr if they happened to correspond with a stdout line boundary.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-10-19 Chang Shu <cshu@webkit.org>
-
- [Qt] Support WK1-only Skipped list
- https://bugs.webkit.org/show_bug.cgi?id=70254
-
- Reviewed by Csaba Osztrogonác.
-
- Added a new search path qt-wk1 for skipping WK1-only tests.
-
- * Scripts/webkitpy/layout_tests/port/qt.py: NRWT
- * Scripts/old-run-webkit-tests: ORWT
-
-2011-10-19 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [GTK] Enable to use built-product-archive on GTK platform
- https://bugs.webkit.org/show_bug.cgi?id=70319
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/built-product-archive:
-
-2011-10-18 David Levin <levin@chromium.org>
-
- watchlist: Should try to run if it can and not throw on mistakes.
- https://bugs.webkit.org/show_bug.cgi?id=70358
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/system/outputcapture.py: Add the ability to capture log output.
- * Scripts/webkitpy/common/watchlist/watchlistloader_unittest.py: Adapt to the logging of errors.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Change to log problems and fix problems when found.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Adapt to the logging of errors.
- * Scripts/webkitpy/common/watchlist/watchlistrule.py: Expose a way to remove instructions.
- * Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py: Test the new function.
-
-2011-10-18 Sam Weinig <sam@webkit.org>
-
- Move uses of C-SPI out of WKView.h and into WKViewPrivate.h
- https://bugs.webkit.org/show_bug.cgi?id=70387
-
- Reviewed by Dan Bernstein.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- * TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm:
- * TestWebKitAPI/mac/JavaScriptTestMac.mm:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- Update to include WKViewPrivate.h where necessary.
-
-2011-10-18 Joseph Pecoraro <joepeck@webkit.org>
-
- Web Inspector: Some localizedStrings.js Updates
- https://bugs.webkit.org/show_bug.cgi?id=70365
-
- Reviewed by Darin Adler.
-
- * Scripts/check-inspector-strings:
- Updated to the new webkitpy way to determine checkout root.
-
- * Scripts/webkitdirs.pm:
- (copyInspectorFrontendFiles):
- Made it so build-webkit --inspector-frontend copies over
- the localizedStrings.js file as well as the frontend files.
-
-2011-10-18 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Clear list of visited pages before each test.
- https://bugs.webkit.org/show_bug.cgi?id=70355
-
- Reviewed by Antonio Gomes.
-
- r97596 uncovered a bug in the implementation: the list of visited
- links was not cleared between tests, which caused tests such as
- fast/repaint/outline-repaint-glitch.html to be flaky (the link color
- changed depending on whether fast/repaint/border-repaint-glitch.html
- was visited before or not).
-
- Call ewk_history_clear to make sure the visited links list does not
- persist between tests.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2011-10-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- Split TestExpectationsEditor into its own file.
- https://bugs.webkit.org/show_bug.cgi?id=70348
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor.py: Copied from Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py.
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py.
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Adjusted for change.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Ditto.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Ditto.
-
-2011-10-18 Ryosuke Niwa <rniwa@webkit.org>
-
- [Chromium] buildbot runs nrwt with --chromium instead of --chromium-cg-mac
- https://bugs.webkit.org/show_bug.cgi?id=70313
-
- Reviewed by Adam Barth.
-
- Fixed the bug by passing --platform --chromium-cg-mac in RunWebKitTests. We can't always add
- this parameter because build-webkit and other scripts don't accept it.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-10-18 Adam Barth <abarth@webkit.org>
-
- Subscribe myself to WebIDL changes
- https://bugs.webkit.org/show_bug.cgi?id=70341
-
- Reviewed by David Levin.
-
- I've also added some documentation and refactored my previous
- subscriptions to make it eaiser for others to subscribe as well.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- Add myself to the newfangled watchlist plumbing.
- https://bugs.webkit.org/show_bug.cgi?id=70338
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist: Added sheepishly.
-
-2011-10-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- Fix a unit test in TestFailures.
- https://bugs.webkit.org/show_bug.cgi?id=70337
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js: Turns out,
- the value of a method property should always be lowercase.
-
-2011-10-18 Adam Barth <abarth@webkit.org>
-
- Always enable ENABLE(XPATH)
- https://bugs.webkit.org/show_bug.cgi?id=70217
-
- Reviewed by Eric Seidel.
-
- * Scripts/build-webkit:
-
-2011-10-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should not report flaking in expected failures as failures.
- https://bugs.webkit.org/show_bug.cgi?id=70279
-
- Reviewed by Adam Barth.
-
- On the bots, flakes that are already expected to fail aren't reported as failures (they keep the bot green).
- For example, if TEXT failure is expected, a TEXT TIMEOUT result will not cause the redness. We should do the
- same for garden-o-matic.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js: Spuriously changed to use Array iterators rather than jQuery APIs,
- rewrote the logic for determining expected or unexpected failures as a central analysis tool.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js: Added unit tests.
-
-2011-10-18 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Support for client-based geolocation
- https://bugs.webkit.org/show_bug.cgi?id=64970
-
- Reviewed by Martin Robinson.
-
- Add support for testing client-based geolocation tests in DumpRenderTree.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Reset GeolocationClientMock.
- (createWebView): Create web view after declaring DumpRenderTree mode.
- That way a mock client for geolocation is used instead of a GeoClue
- client if a web view is created when testing.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Implement functions for
- geolocation layout tests.
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * Scripts/build-webkit: Note that the Gtk port is using client-based
- geolocation, even though changing this flag has no effect on compilation.
-
-2011-10-07 Andrey Kosyakov <caseq@chromium.org>
-
- [Chromium] suppress console output from DevTools window
- https://bugs.webkit.org/show_bug.cgi?id=69632
-
- Reviewed by Pavel Feldman.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::showDevTools):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didAddMessageToConsole):
- (WebViewHost::reset):
- (WebViewHost::setLogConsoleOutput):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-10-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r97735.
- http://trac.webkit.org/changeset/97735
- https://bugs.webkit.org/show_bug.cgi?id=70317
-
- some people apparently use build-jsc with the qt port without
- building webkit first (Requested by torarne on #webkit).
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
- (buildQMakeQtProject):
-
-2011-10-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove dead code in build-webkit
-
- build-webkit will iterate over a list of subdirectories to build,
- but this feature is only used by the Apple ports. For QtWebKit we
- always pass an empty directory to buildQMakeProject, which makes
- the logic for dealing with sub-projects in buildQMakeProject just
- added noise.
-
- If we do want this feature at some point, we should redo it in
- the context of the upcoming build system changes for Qt.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (buildQt):
-
-2011-10-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Remove traces of Symbian support from the build scripts
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
- (argumentsForConfiguration):
- (usesPerConfigurationBuildDirectory):
- (buildQMakeProject):
-
-2011-10-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r97672.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-10-17 Kent Tamura <tkent@chromium.org>
-
- A follow-up of r97716.
- https://bugs.webkit.org/show_bug.cgi?id=68803
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset): Initialize m_dumpCreateView.
-
-2011-10-17 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add LayoutTestController.dumpCreateView() to monitor calls to WebViewClient::createView
- https://bugs.webkit.org/show_bug.cgi?id=68803
-
- Reviewed by Nate Chapin.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpCreateView):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::shouldDumpCreateView):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
-
-2011-10-17 Nate Chapin <japhet@chromium.org>
-
- Add myself to watchlists, and add a watch
- for Source/WebCore/loader/.
- https://bugs.webkit.org/show_bug.cgi?id=70263
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-17 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Make non-recognized keys work in events as well.
- https://bugs.webkit.org/show_bug.cgi?id=69860
-
- Reviewed by Antonio Gomes.
-
- fast/forms/select-type-ahead-non-latin.html is the canonical case we fix
- here: it has a select box with a few non-latin options, and one of them
- is selected via the keyboard.
-
- In this specific case, we need to make EventHandler::keyEvent send a
- keyPressEvent to SelectElement, so that
- SelectElement::defaultEventHandler calls typeAheadFind(). This happens
- only when PlatformKeyEvent::text() is not empty, which was not the case
- so far.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyDownCallback):
-
-2011-10-17 Alok Priyadarshi <alokp@chromium.org>
-
- Add layout tests for WebPlugin compositor path
- https://bugs.webkit.org/show_bug.cgi?id=69027
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestWebPlugin.cpp: Added.
- (premultiplyAlpha):
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::~TestWebPlugin):
- (TestWebPlugin::mimeType):
- (TestWebPlugin::initialize):
- (TestWebPlugin::destroy):
- (TestWebPlugin::updateGeometry):
- (TestWebPlugin::parsePrimitive):
- (TestWebPlugin::parseColor):
- (TestWebPlugin::parseOpacity):
- (TestWebPlugin::initScene):
- (TestWebPlugin::drawScene):
- (TestWebPlugin::destroyScene):
- (TestWebPlugin::initProgram):
- (TestWebPlugin::initPrimitive):
- (TestWebPlugin::drawPrimitive):
- (TestWebPlugin::loadShader):
- (TestWebPlugin::loadProgram):
- * DumpRenderTree/chromium/TestWebPlugin.h: Added.
- (TestWebPlugin::scriptableObject):
- (TestWebPlugin::paint):
- (TestWebPlugin::updateFocus):
- (TestWebPlugin::updateVisibility):
- (TestWebPlugin::acceptsInputEvents):
- (TestWebPlugin::handleInputEvent):
- (TestWebPlugin::didReceiveResponse):
- (TestWebPlugin::didReceiveData):
- (TestWebPlugin::didFinishLoading):
- (TestWebPlugin::didFailLoading):
- (TestWebPlugin::didFinishLoadingFrameRequest):
- (TestWebPlugin::didFailLoadingFrameRequest):
- (TestWebPlugin::Scene::Scene):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPlugin):
-
-2011-10-17 Ryosuke Niwa <rniwa@webkit.org>
-
- [nrwt] Add new category for MISSING
- https://bugs.webkit.org/show_bug.cgi?id=69990
-
- Reviewed by Dirk Pranke.
-
- Treat missing results as a new category in summerize_results.
-
- Because Chromium port wants to turn bots red when there are tests with missing results,
- extracted the logic to compute the exit code as exit_code_from_summarized_results in
- base and chromium ports.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-10-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic operations fail because of CSP.
- https://bugs.webkit.org/show_bug.cgi?id=70249
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Added gardening server to the policy.
-
-2011-10-17 Ada Chan <adachan@apple.com>
-
- Add a test to call WKPageLoadAlternateHTMLString() with a non-directory URL.
- https://bugs.webkit.org/show_bug.cgi?id=70168
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST): Call WKPageLoadAlternateHTMLString() with a file URL and make sure it finishes loading.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Add the new file.
-
-2011-10-17 Darin Adler <darin@apple.com>
-
- Add some more *.pyc ignores in directories with Python scripts.
-
- * QueueStatusServer: Added property svn:ignore.
- * Scripts/webkitpy/common/watchlist: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/controllers: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/views: Added property svn:ignore.
-
-2011-10-17 Alexis Menard <alexis.menard@openbossa.org>
-
- [Qt][WK2][meta] Fix failing API tests
- https://bugs.webkit.org/show_bug.cgi?id=70236
-
- Reviewed by Csaba Osztrogonác.
-
- In order to run WebKit2 API tests we need the WebProcess to be in
- the path so let's add the bin directory when running the API tests of Qt.
-
- * Scripts/run-qtwebkit-tests:
-
-2011-10-17 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt][WK2] Build dependency problems
- https://bugs.webkit.org/show_bug.cgi?id=68456
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
-
-2011-10-17 Holger Hans Peter Freyther <holger@moiji-mobile.com>
-
- [build] Introduce Qt/SH4 buildbot
- https://bugs.webkit.org/show_bug.cgi?id=70227
-
- Reviewed by Adam Roben.
-
- Add buildslave for Linux/Qt/SH4.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-10-16 Adam Barth <abarth@webkit.org>
-
- Always enable ENABLE(DOM_STORAGE)
- https://bugs.webkit.org/show_bug.cgi?id=70189
-
- Reviewed by Eric Seidel.
-
- * Scripts/build-webkit:
- * waf/build/settings.py:
-
-2011-10-15 Adam Barth <abarth@webkit.org>
-
- Rename ENABLE(TILED_BACKING_STORE) to USE(TILED_BACKING_STORE)
- https://bugs.webkit.org/show_bug.cgi?id=70194
-
- Reviewed by Daniel Bates.
-
- * Scripts/build-webkit:
-
-2011-10-15 Ojan Vafai <ojan@chromium.org>
-
- run-webkit-tests should accept --child-processes
- https://bugs.webkit.org/show_bug.cgi?id=69713
-
- Reviewed by Adam Barth.
-
- Only set --child-processes=1 if --child-processes it not
- passed on the commandline.
-
- * Scripts/run-webkit-tests:
-
-2011-10-15 Daniel Bates <dbates@webkit.org>
-
- Extract common gdb code into its own function; Remove script gdb-safari
- https://bugs.webkit.org/show_bug.cgi?id=68499
-
- Reviewed by David Kilzer.
-
- Almost identical code is used in webkitdirs::{debugMiniBrowser, debugWebKitTestRunner,
- runSafari}() and in the script gdb-safari to launch gdb to debug an application.
- We should extract the common parts into a function that can be shared by all callers
- so as to remove duplicate code.
-
- As a side effect of removing duplicate code we can remove the script gdb-safari since
- its code has been incorporated into webkitdirs::debugSafari() which is called by the
- script debug-safari.
-
- * Scripts/debug-safari: Modified to call webkitdirs::debugSafari().
- * Scripts/gdb-safari: Removed.
- * Scripts/webkitdirs.pm:
- (execMacWebKitAppForDebugging): Added; Extracted common debugging code from
- debugMiniBrowser(), debugWebKitTestRunner(), runSafari() and
- script gdb-safari to here.
- (debugSafari): Added.
- (runSafari): Extracted debugging code to debugSafari() and debugMacWebKitApp();
- Also, return the exit status of WebKit launcher (WebKit.exe) on Windows. Currently,
- runSafari() always returns 1 on Windows and the script run-safari exits using this
- value as its exit status. Hence, the script run-safari always exits with a nonzero
- exit status (i.e. abnormal termination) on Windows. Instead, we should return the
- exit status of the WebKit launcher application.
- (debugMiniBrowser): Modified to call debugMacWebKitApp().
- (debugWebKitTestRunner): Ditto.
-
-2011-10-15 Robert Hogan <robert@webkit.org>
-
- [webkit-patch] Put Source/Tools changes at the top of patches, LayoutTests at the bottom
- https://bugs.webkit.org/show_bug.cgi?id=70056
-
- Reviewed by Adam Barth.
-
- The preferred file-order for patches is LayoutTests at the end and
- ChangeLogs before everything else in a subdirectory. Specify this in a git 'orderfile' and use
- it when creating patches for review and landing.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/config/orderfile: Added.
-
-2011-10-15 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- [Qt] [Symbian] Remove support for the Symbian platform for the QtWebKit port
- https://bugs.webkit.org/show_bug.cgi?id=69920
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::screenshot):
- (LauncherWindow::showFPS):
- (LauncherWindow::updateFPS):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
- * Scripts/webkitpy/style/checker.py: Remove rules for the
- WebKit/qt/symbian/platformplugin directory.
- * Scripts/webkitpy/style/checker_unittest.py:
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::platformInitialize):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::isExistingLibrary):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-10-15 Adam Barth <abarth@webkit.org>
-
- Fix typo in webkitpy help
- https://bugs.webkit.org/show_bug.cgi?id=70169
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2011-10-15 Tony Chang <tony@chromium.org>
-
- fix another typo in treemap.html
- https://bugs.webkit.org/show_bug.cgi?id=70149
-
- Reviewed by Ojan Vafai.
-
- Fixes a bug where #treemapfocus=LayoutTests%2Fhttp didn't focus the http tests.
-
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-10-14 Adam Barth <abarth@webkit.org>
-
- Hide status bubbles from queues which are very far behind
- https://bugs.webkit.org/show_bug.cgi?id=70133
-
- Reviewed by Eric Seidel.
-
- The mac-ews is so far behind that we shouldn't show its status bubble.
- The status bubble just makes contributors sad.
-
- * QueueStatusServer/handlers/statusbubble.py:
-
-2011-10-14 Dimitri Glazkov <dglazkov@chromium.org>
-
- Write unit test to ensure style-checker-filter option is passed properly in webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=70143
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py: Added a test for land-cowboy. Not so cowboy after all.
- * Scripts/webkitpy/tool/steps/checkstyle.py: Fixed a bug, discovered by the newly added test.
-
-2011-10-14 David Levin <levin@chromium.org>
-
- watchlist: Add a validation check for the email names in the list.
- https://bugs.webkit.org/show_bug.cgi?id=70154
-
- Reviewed by Adam Barth.
-
- If an email is listed which doesn't have a bugzilla log in, then any emails
- added to the bug along with that email will fail to happen, so try to prevent this
- from happening by validating that emails added to the watchlist are known to be
- contributors.
-
- * Scripts/webkitpy/common/config/committers.py: Add my other email aliases for bugzilla.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Add the check.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: A unit test for the check.
-
-2011-10-14 David Levin <levin@chromium.org>
-
- watchlist: If the style check fails, then the watchlist will not be run.
- https://bugs.webkit.org/show_bug.cgi?id=69484
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/queues.py: Run the watch list even
- if the style part fails and don't allow watch list failures turn the
- bot run red.
- * Scripts/webkitpy/tool/commands/queues_unittest.py: Appropriate unit tests.
- * Scripts/webkitpy/tool/mocktool.py: Add support to make an executive command throw.
-
-2011-10-14 Dimitri Glazkov <dglazkov@chromium.org>
-
- Plumb style-checker filter up to command options and make land-cowboy use it.
- https://bugs.webkit.org/show_bug.cgi?id=70119
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checker.py: Added ChangeLogChecker categories to the big list.
- * Scripts/webkitpy/style/checkers/changelog.py: Declared categories, used in ChangeLogChecker.
- * Scripts/webkitpy/tool/commands/download.py: Made LandCowboy use filter.
- * Scripts/webkitpy/tool/commands/download_unittest.py: Tweaked the test.
- * Scripts/webkitpy/tool/commands/upload_unittest.py: Ditto.
- * Scripts/webkitpy/tool/steps/checkstyle.py: Made check_style_filter work.
- * Scripts/webkitpy/tool/steps/options.py: Added new option, check-style-filter.
-
-2011-10-14 Sam Weinig <sam@webkit.org>
-
- Remove the Leopard slaves.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-10-14 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Inherit settings from Chromium's envsetup.sh, address a NDK todo
- https://bugs.webkit.org/show_bug.cgi?id=70028
-
- Reviewed by Adam Barth.
-
- * Scripts/update-webkit-chromium:
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
- (buildChromium):
-
-2011-10-14 Leandro Pereira <leandro@profusion.mobi>
-
- Unreviewed; add missing #includes.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- * DumpRenderTree/efl/EventSender.cpp:
-
-2011-10-14 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Correctly get the absolute URL in LayoutTestController::queueLoad()
- https://bugs.webkit.org/show_bug.cgi?id=69770
-
- Reviewed by Antonio Gomes.
-
- We were just appending the given URL to the absolute URI of the main
- frame, which resulted in "file:///foo/bar/baz.htmltheother/url.html"
- instead of "file:///foo/bar/theother/url.html".
-
- This should make fast/dom/navigation-type-navigate.html behave
- better (it still fails, but later).
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::queueLoad):
-
-2011-10-13 Arko Saha <arko@motorola.com>
-
- Microdata: Basic implementation of document.getItems() method.
- https://bugs.webkit.org/show_bug.cgi?id=68610
-
- Reviewed by Ryosuke Niwa.
-
- Added ENABLE(MICRODATA) feature flag. Implement document.getItems() DOM API.
- Spec : http://www.whatwg.org/specs/web-apps/current-work/complete/microdata.html
-
- * Scripts/build-webkit:
-
-2011-10-14 Csaba Osztrogonác <ossy@webkit.org>
-
- new-run-webkit-tests does not support qt-4.8 results
- https://bugs.webkit.org/show_bug.cgi?id=64071
-
- Roll-back second part of r97252. :)
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2011-10-14 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Do not use OwnFastMallocPtr to manage char*'s.
- https://bugs.webkit.org/show_bug.cgi?id=70106
-
- Reviewed by Antonio Gomes.
-
- OwnFastMallocPtr was being used as a smart pointer that automatically called
- free() on the strings returned by the EFL or by ewk.
-
- However, when WTF is built in release mode, it uses its own memory management
- code instead of using the system malloc(), free() and friends. This means bad
- things will happen when one uses WTF's free() on memory allocated with system
- malloc() by the EFL or ewk.
-
- The easiest way to solve this is to call free() ourselves.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (dumpFramesAsText):
- (getFinalTestURL):
-
-2011-10-14 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Add DumpRenderTreeSupportEfl
- https://bugs.webkit.org/show_bug.cgi?id=68458
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Make the calls in DumpRenderTree use DumpRenderTreeSupportEfl.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize): Turn on mock scrollbars.
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- (DumpRenderTreeChrome::onWindowObjectCleared):
- (DumpRenderTreeChrome::onDocumentLoadFinished):
- * DumpRenderTree/efl/GCControllerEfl.cpp:
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::counterValueForElementById):
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
- (LayoutTestController::workerThreadCount):
- (LayoutTestController::findString):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView):
-
-2011-10-14 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Enable NRWT for Qt 4.8 version too, because it is supported after r97461.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-10-14 Csaba Osztrogonác <ossy@webkit.org>
-
- new-run-webkit-tests does not support qt-4.8 results
- https://bugs.webkit.org/show_bug.cgi?id=64071
-
- Roll-back r97252 with unit test fix.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
-
-2011-10-13 Ojan Vafai <ojan@chromium.org>
-
- Make filter-build-webkit exit 1 if the build fails.
- https://bugs.webkit.org/show_bug.cgi?id=70080
-
- Reviewed by Eric Seidel.
-
- This only works if you redirect stderr to stdout, but it at least makes it possible.
- This is useful if you want to run a followup command (e.g. run-webkit-tests) but
- only if the build succeeds.
-
- * Scripts/filter-build-webkit:
-
-2011-10-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- land-cowboy should at least check style.
- https://bugs.webkit.org/show_bug.cgi?id=70073
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/download.py: Added CheckStyle step to LandCowboy command.
-
-2011-10-13 Tony Chang <tony@chromium.org>
-
- fix regex in layout test times dashboard
- https://bugs.webkit.org/show_bug.cgi?id=70059
-
- This fixes the treemapfocus query param.
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-10-13 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=70050
- DRT and WRT should have HiDPI testing capabilities
-
- Reviewed by Darin Adler.
-
- New layoutTestController function setBackingScaleFactor takes a double for a scale
- factor and a callback function to call once the backing scale factor has
- successfully been set for the view.
- * DumpRenderTree/LayoutTestController.cpp:
- (setBackingScaleFactorCallback):
- (LayoutTestController::staticFunctions):
-
- On Mac, setBackingScaleFactor calls WebView _setCustomBackingScaleFactor. Other
- platforms do nothing.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setBackingScaleFactor):
-
- Reset the backing scale factor by calling _setCutsomBackingScaleFactor with a
- value of 0, which resets to the system default.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
-
- When generating the pixel dump, create a Bitmap of the appropriate size based on
- the backing scale factor. If it is a HiDPI view, paint into the context using
- displayRectIgnoringOpacity.
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createBitmapContextFromWebView):
-
- And now the same stuff for WK2. Again, new layoutTestController function
- setBackingScaleFactor takes a double for a scale factor and a callback function.
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setBackingScaleFactor):
- (WTR::LayoutTestController::callSetBackingScaleFactorCallback):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
- The InjectedBundle sends a message to the UI process to set the backing scale
- factor. It also processes a message the UI process will send back once it
- completes this task, and at that time, the InjectedBundle calls the callback.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::postSetBackingScaleFactor):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
-
- Again, reset the backing scale factor by calling WKPageSetCustomBackingScaleFactor
- with a value of 0, which resets to the system default.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
- Upon receiving the SetBackingScaleFactor message, call
- WKPageSetCustomBackingScaleFactor to the given scale factor, and post a message
- back to InjectedBundle to say it has been done.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
- Don't use window snapshotting for the HiDPI tests. We don't have a way to fake a
- window's scale factor so we have to avoid that.
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-10-13 John Knottenbelt <jknotten@chromium.org>
-
- [Chromium] Allow building without speech input enabled.
- https://bugs.webkit.org/show_bug.cgi?id=69867
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::addMockSpeechInputResult):
-
-2011-10-13 Kent Tamura <tkent@chromium.org>
-
- [Chromium] A DRT fix for r97348.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- Ignore overridePreference() for "WebKitWebAudioEnabled", and don't
- print an error message.
-
-2011-10-12 Lucas Forschler <lforschler@apple.com>
-
- Update kill-old-processes logic.
- https://bugs.webkit.org/show_bug.cgi?id=63651
-
- Reviewed by Ryosuke Niwa.
-
- Remove unused mac platform specific folder.
- Update master.config to use new kill-old-processes.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/kill-old-processes:
- * BuildSlaveSupport/mac: Removed.
-
-2011-10-12 Ryosuke Niwa <rniwa@webkit.org>
-
- [NRWT] New tests without expected files are reported as flakey tests
- https://bugs.webkit.org/show_bug.cgi?id=67268
-
- Reviewed by Dirk Pranke.
-
- The bug was caused by summarize_results's regarding all tests that have an entry in result_summary
- and no entry in retry_summary as flaky. Since we don't retry missing tests, there will be no entries
- for missing results in retry_summary.
-
- Fixed the bug by treating missing results separately.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-10-12 Adam Barth <abarth@webkit.org>
-
- Remove ENABLE(XHTMLMP) and associated code
- https://bugs.webkit.org/show_bug.cgi?id=69729
-
- Reviewed by David Levin.
-
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitperl/features.pm:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-10-12 Ryosuke Niwa <rniwa@webkit.org>
-
- Kill old run-webkit-tests processes in kill-process on Mac
- https://bugs.webkit.org/show_bug.cgi?id=69976
-
- Reviewed by Dirk Pranke.
-
- Add a system call to remove all python processes running run-webkit-tests.
-
- * BuildSlaveSupport/kill-old-processes:
- * BuildSlaveSupport/mac: Removed.
-
-2011-10-12 Simon Fraser <simon.fraser@apple.com>
-
- Many WK2 snapshots are blank
- https://bugs.webkit.org/show_bug.cgi?id=69953
-
- Reviewed by Beth Dakin.
-
- Two fixes:
- 1. negating a size_t in CGContextTranslateCTM() fails, because
- size_t is unsigned. Fix by casing to CGFloat before negation.
-
- 2. Turn on window autodisplay, so that compositing tests snapshot correctly.
- Autodisplay is necessary to kick off Core Animation rendering.
-
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::createCGContextFromImage):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-10-12 Adam Barth <abarth@webkit.org>
-
- commit-queue doesn't have a friendly error message when the reviewer line is messed up
- https://bugs.webkit.org/show_bug.cgi?id=69979
-
- Reviewed by Eric Seidel.
-
- Rather than combining the ChangeLog validation with a more complicated
- command, this patch has the commit-queue run it as a separate command,
- which will give us more control over the error message.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/steps/validatechangelogs.py:
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
-
-2011-10-12 Eric Seidel <eric@webkit.org>
-
- Layout tests asserting in LayoutTestController::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=69898
-
- Reviewed by Simon Fraser.
-
- old-run-webkit-tests just didn't know to set LOCAL_RESOURCE_ROOT, oops.
-
- * Scripts/old-run-webkit-tests:
- (openDumpTool):
-
-2011-10-12 Adam Barth <abarth@webkit.org>
-
- The commit-queue doesn't tell me which tests my patch broke
- https://bugs.webkit.org/show_bug.cgi?id=69975
-
- Reviewed by Eric Seidel.
-
- We now print the list of newly failing tests, like we do for the EWS.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-10-10 Alice Boxhall <aboxhall@chromium.org>
-
- Added myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-10-12 Adam Barth <abarth@webkit.org>
-
- _run_tests is a confusing variable name in webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=69971
-
- Reviewed by Eric Seidel.
-
- Eric and I thought this was a function.
-
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py:
-
-2011-10-12 Tony Chang <tony@chromium.org>
-
- Fix test-webkitpy after r97307 and r97293.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: options.time_out_ms
- is None during tests so add back the check.
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py: The
- output directory is now build/Debug.
-
-2011-10-12 Tony Chang <tony@chromium.org>
-
- [chromium] remove old build dirs on chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=69961
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py: Output is now
- always in build and never in chrome or webkit.
-
-2011-10-12 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic's "Expect Failure" button does not work correctly, so we should remove it until the plumbing is fixed to avoid landmines.
- https://bugs.webkit.org/show_bug.cgi?id=69954
-
- Also renamed the action and associated event name to address an FIXME.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Renamed event name.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js: Renamed the action.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js: Removed action temporarily.
-
-2011-10-12 Tony Chang <tony@chromium.org>
-
- stop spamming 'stopping test driver timed out, killing it' when running rwt
- https://bugs.webkit.org/show_bug.cgi?id=69938
-
- Reviewed by Adam Barth.
-
- In http://trac.webkit.org/changeset/95875 , we made the timeout for
- stopping the driver based on time_out_ms, but we based it on the wrong
- default times.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-10-12 Simon Fraser <simon.fraser@apple.com>
-
- 3D transforms are flattened in WebKit2 snapshots
- https://bugs.webkit.org/show_bug.cgi?id=68276
-
- Reviewed by Adam Roben.
-
- Fix WKImage leak noticed by Adam.
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2011-10-12 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should color-code test failure types.
- https://bugs.webkit.org/show_bug.cgi?id=69945
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js: Added an extra span for styling.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js: Updated tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Ditto.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css: Added color-coding.
-
-2011-10-12 Adam Barth <abarth@webkit.org>
-
- webkitpy tests are failing on Mac bots
- https://bugs.webkit.org/show_bug.cgi?id=69929
-
- Reviewed by Simon Fraser.
-
- Admit that Lion exists.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-10-12 Simon Fraser <simon.fraser@apple.com>
-
- Improve output of run-api-tests to make time-outs more obvious
- https://bugs.webkit.org/show_bug.cgi?id=69788
-
- Reviewed by Adam Roben.
-
- List the tests that failed and timed out at the bottom of the output,
- if run with --verbose.
-
- * Scripts/run-api-tests:
- (runAllTests):
- (runTest):
-
-2011-10-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r97252.
- http://trac.webkit.org/changeset/97252
- https://bugs.webkit.org/show_bug.cgi?id=69944
-
- Broke test-webkpy (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
-
-2011-10-12 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- new-run-webkit-tests does not support qt-4.8 results
- https://bugs.webkit.org/show_bug.cgi?id=64071
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
-
-2011-10-10 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [WebKit2] Make adding another unit test easier
- https://bugs.webkit.org/show_bug.cgi?id=69409
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/run-gtk-tests: Update run-gtk-tests to be able to execute
- new WebKit2 tests.
-
-2011-10-11 Takashi Toyoshima <toyoshim@chromium.org>
-
- [WebSocket] update pywebsocket to 0.6b6.
- https://bugs.webkit.org/show_bug.cgi?id=69824
-
- Reviewed by Kent Tamura.
-
- WebKit supports WebSocket with version 8 based protocol for now.
- We should update its protocol to version 13 based one like hybi-17.
- pywebsocket 0.6b6 supports both of version 8 and 13.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-10-11 Simon Fraser <simon.fraser@apple.com>
-
- WebKitTestRunner needs to link with WebKit for NSURL category methods
- https://bugs.webkit.org/show_bug.cgi?id=69892
-
- Reviewed by Sam Weinig.
-
- WebDragClient::declareAndWriteDragImage() was throwing an Obj-C exception on 10.6 because
- the +_web_originalDataAsString selector on NSURL was not recognized. Link with
- WebKit.framework to fix this.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- sheriffbot takes too long to acknowledge rollout commands
- https://bugs.webkit.org/show_bug.cgi?id=69871
-
- Reviewed by Eric Seidel.
-
- We used to update the working copy before acknowledging the command
- because we wanted to ping all the relevant IRC nicks. That's caused a
- bunch of frustration because folks don't know whether the bot has heard
- their commands.
-
- This patch makes the bot reply immediately before updating the working
- copy. All the relevenat folks are still pinged when the bot finishes
- preparing the rollout.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- test-webkitpy fails on Lion
- https://bugs.webkit.org/show_bug.cgi?id=69873
-
- Reviewed by Eric Seidel.
-
- This patch fixes one of the two failures. I'll need to track down the
- other failure another time.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should warn me when run-webkit-tests errors out (e.g., due to python screw-ups)
- https://bugs.webkit.org/show_bug.cgi?id=65230
-
- Reviewed by Dimitri Glazkov.
-
- This patch causes us to treat crashed or hung run-webkit-tests runs
- similarly to how we treat compile failures. In some sense, they're
- similar because they prevent us from getting test coverage.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- Failing builder display in garden-o-matic should have the same visual style as the failure grid
- https://bugs.webkit.org/show_bug.cgi?id=69876
-
- Reviewed by Dimitri Glazkov.
-
- This patch generalizes the view we use for failing builders in the
- FailureGrid so that we can use it for the list of builders that aren't
- compiling.
-
- One downside of this patch is that it makes it harder to tell when
- debug builders are failing (as opposed to release builders) because
- that information isn't presented in this view. A future patch will
- improve this aspect.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
-
-2011-10-11 Filip Pizlo <fpizlo@apple.com>
-
- Some API tests are timing out in Release
- https://bugs.webkit.org/show_bug.cgi?id=69787
-
- Reviewed by Mark Rowe.
-
- NDEBUG must be set in release builds. Otherwise the world breaks. Also added some
- magic to ensure that GTest builds in release mode in clang with NDEBUG set.
-
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/config.h:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic links to flakiness dashboard should open in a new tab
- https://bugs.webkit.org/show_bug.cgi?id=69864
-
- Reviewed by Dimitri Glazkov.
-
- This bug was obvious in the first five minutes of using this new
- feature. :)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- Tweak the Content-Security-Policy for garden-o-matic. It turns out
- that * doesn't really mean "all". I've emailed the W3C working group
- about changing the spec.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
-
-2011-10-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should link to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=69862
-
- Reviewed by Dimitri Glazkov.
-
- The flakiness dashboard has lots of great information about the failure
- history of each test. This patch adds a link from garden-o-matic to
- the flakiness dashboard so the gardener can look at this information.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-10-11 David Levin <levin@chromium.org>
-
- watchlist: assertRaisesRegexp implementation should be compatible with python 2.7.
- https://bugs.webkit.org/show_bug.cgi?id=69789
-
- Reviewed by Eric Seidel.
-
- Made the signature of _assertRaisesRegexp match that of Python 2.7.
-
- * Scripts/webkitpy/common/watchlist/watchlistloader_unittest.py: Adjusted to be compatible with Python 2.7.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Ditto.
- * Scripts/webkitpy/common/webkitunittest.py: Ditto.
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py: Ditto.
-
-2011-10-11 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Do not abort() when an unknown key is pressed.
- https://bugs.webkit.org/show_bug.cgi?id=69856
-
- Reviewed by Antonio Gomes.
-
- A lot of tests crash due to the previous behaviour. Just using the
- received name of the pressed key works most of the time, and when it
- does not the failing tests should tell us.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- (keyDownCallback):
-
-2011-10-11 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt] [WK2] NRWT failed to launch MiniBrowser after test run
- https://bugs.webkit.org/show_bug.cgi?id=68016
-
- Reviewed by Chang Shu.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2011-10-11 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Return the right window count in LayoutTestController.
- https://bugs.webkit.org/show_bug.cgi?id=69764
-
- Reviewed by Antonio Gomes.
-
- Follow-up to r96943: now that we have DumpRenderTreeChrome and
- DumpRenderTreeView in the tree, we can correctly count the number of
- open windows in DRT.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::windowCount):
-
-2011-10-11 Jer Noble <jer.noble@apple.com>
-
- REGRESSION (r96770-r96777): fast/dom/Window/window-properties.html, fast/dom/prototype-inheritance-2.html, fast/js/global-constructors.html failing on SnowLeopard Intel Release (Tests)
- https://bugs.webkit.org/show_bug.cgi?id=69800
-
- Reviewed by Csaba Osztrogonác.
-
- Enable WEB_AUDIO at runtime.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2011-10-11 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Make sure IconDatabase is closed before trying to open it again.
- https://bugs.webkit.org/show_bug.cgi?id=69769
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setIconDatabaseEnabled):
-
-2011-10-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove all references to QTDIR_build and standalone_package
-
- Qt is now modularized, which means we no longer import WebKit into
- the Qt source tree. Instead we use git submodules, and building
- QtWebKit as "part of Qt" is really building QtWebKit as from trunk.
-
- To decrease the number of buildsystem configurations we also remove
- the standalone_package code-path used when we were providing tarballs
- with the derived sources pre-generated.
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
-
-2011-10-11 Dominic Mazzoni <dmazzoni@google.com>
-
- Update Chromium accessibility support in DRT.
- https://bugs.webkit.org/show_bug.cgi?id=69676
-
- Reviewed by Chris Fleizach.
-
- Adds several missing properties and methods to enable more
- tests to pass, and in particular adds support for notification
- callbacks.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::reset):
- (AccessibilityController::getFocusedElement):
- (AccessibilityController::shouldLogAccessibilityEvents):
- (AccessibilityController::notificationReceived):
- (AccessibilityController::logAccessibilityEventsCallback):
- * DumpRenderTree/chromium/AccessibilityController.h:
- * DumpRenderTree/chromium/AccessibilityUIElement.cpp:
- (getHelpText):
- (getStringValue):
- (getOrientation):
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::isEqual):
- (AccessibilityUIElement::notificationReceived):
- (AccessibilityUIElement::roleGetterCallback):
- (AccessibilityUIElement::titleGetterCallback):
- (AccessibilityUIElement::descriptionGetterCallback):
- (AccessibilityUIElement::helpTextGetterCallback):
- (AccessibilityUIElement::stringValueGetterCallback):
- (AccessibilityUIElement::xGetterCallback):
- (AccessibilityUIElement::yGetterCallback):
- (AccessibilityUIElement::widthGetterCallback):
- (AccessibilityUIElement::heightGetterCallback):
- (AccessibilityUIElement::intValueGetterCallback):
- (AccessibilityUIElement::minValueGetterCallback):
- (AccessibilityUIElement::maxValueGetterCallback):
- (AccessibilityUIElement::childrenCountGetterCallback):
- (AccessibilityUIElement::insertionPointLineNumberGetterCallback):
- (AccessibilityUIElement::selectedTextRangeGetterCallback):
- (AccessibilityUIElement::isEnabledGetterCallback):
- (AccessibilityUIElement::isRequiredGetterCallback):
- (AccessibilityUIElement::isFocusedGetterCallback):
- (AccessibilityUIElement::isFocusableGetterCallback):
- (AccessibilityUIElement::isSelectedGetterCallback):
- (AccessibilityUIElement::isSelectableGetterCallback):
- (AccessibilityUIElement::isMultiSelectableGetterCallback):
- (AccessibilityUIElement::isExpandedGetterCallback):
- (AccessibilityUIElement::isCheckedGetterCallback):
- (AccessibilityUIElement::isVisibleGetterCallback):
- (AccessibilityUIElement::isOffScreenGetterCallback):
- (AccessibilityUIElement::isCollapsedGetterCallback):
- (AccessibilityUIElement::hasPopupGetterCallback):
- (AccessibilityUIElement::isValidGetterCallback):
- (AccessibilityUIElement::orientationGetterCallback):
- (AccessibilityUIElement::showMenuCallback):
- (AccessibilityUIElement::pressCallback):
- (AccessibilityUIElement::isEqualCallback):
- (AccessibilityUIElement::addNotificationListenerCallback):
- (AccessibilityUIElement::removeNotificationListenerCallback):
- (AccessibilityUIElement::takeFocusCallback):
- (AccessibilityUIElement::fallbackCallback):
- (RootAccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElementList::getOrCreate):
- * DumpRenderTree/chromium/AccessibilityUIElement.h:
- * DumpRenderTree/chromium/CppVariant.cpp:
- (CppVariant::invokeDefault):
- * DumpRenderTree/chromium/CppVariant.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2011-10-10 Adam Klein <adamk@chromium.org>
-
- Support Distributed-CompileC as an action name in filter-build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=69783
-
- Reviewed by Ojan Vafai.
-
- * Scripts/filter-build-webkit:
-
-2011-10-10 Simon Fraser <simon.fraser@apple.com>
-
- 3D transforms are flattened in WebKit2 snapshots
- https://bugs.webkit.org/show_bug.cgi?id=68276
-
- Reviewed by Anders Carlsson.
-
- Use a snapshot of the window, rather than an image from the web process
- for pixel testing in WebKitTestRunner. This correctly captures compositing
- layers, so works for 3D transform tests.
-
- * WebKitTestRunner/PlatformWebView.h: Add a windowSnapshotImage() method.
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::createCGContextFromImage): Add a param to optionally flip the image when drawing.
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Call windowSnapshotImage(), and if it returns an image,
- use that instead of the image we get from the web process.
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::windowSnapshotImage): Stub out the new method.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::windowSnapshotImage): Ditto.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowSnapshotImage): Ditto.
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::windowSnapshotImage): Ditto.
-
-2011-10-10 David Levin <levin@chromium.org>
-
- Quick fix for watchlist unit test failures when using Python 2.7+
- Reviewed by Adam Barth.
-
- Filed bug https://bugs.webkit.org/show_bug.cgi?id=69789 about a
- better fix.
-
- * Scripts/webkitpy/common/webkitunittest.py: Always use our
- version of assertRaisesRegexp.
-
-2011-10-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r97082.
- http://trac.webkit.org/changeset/97082
- https://bugs.webkit.org/show_bug.cgi?id=69784
-
- broke Windows build (Requested by smfr on #webkit).
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/cg/TestInvocationCG.cpp: Renamed from Tools/WebKitTestRunner/cg/TestInvocationCG.mm.
- (WTR::createCGContextFromImage):
- (WTR::computeMD5HashStringForContext):
- (WTR::dumpBitmap):
- (WTR::paintRepaintRectOverlay):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-10-10 Simon Fraser <simon.fraser@apple.com>
-
- 3D transforms are flattened in WebKit2 snapshots
- https://bugs.webkit.org/show_bug.cgi?id=68276
-
- Reviewed by Anders Carlsson.
-
- The WKImage passed from the WebProcess when pixel dumping is created by painting compositing layers
- flattened, which flattens 3D transforms. Instead, use CGWindowListCreateImage() to get a snapshot of
- the window when doing pixel tests.
-
- Also allow the window to auto-display, so that Core Animation layers are rendered, and animate.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: TestInvocationCG became a .mm file
- * WebKitTestRunner/cg/TestInvocationCG.mm: Renamed from Tools/WebKitTestRunner/cg/TestInvocationCG.cpp.
- (WTR::createBitmapCGContext): Utility function to create a bitmap context.
- (WTR::computeMD5HashStringForContext):
- (WTR::dumpBitmap):
- (WTR::paintRepaintRectOverlay):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Use CGWindowListCreateImage() to
- grap a snapshot of the window, rather than relying on the WKImage which was passed from the web process.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView): Remove the line that turned off autoDisplay for the NSWindow.
- We need the window to autodisplay for Core Animation to render layers and start animations.
-
-2011-10-10 Simon Fraser <simon.fraser@apple.com>
-
- WebKitTestRunner needs layoutTestController.setWindowIsKey
- https://bugs.webkit.org/show_bug.cgi?id=42688
-
- Reviewed by Anders Carlsson.
-
- Implement layoutTestController.setWindowIsKey() in WebKitTestRunner.
- This sets a flag that the platform layer uses to indicate that
- the window is the key window, which fixes focus ring drawing
- in pixel results.
-
- Also focus the web view when we get a 'didCommitLoad' for the main
- frame, as DumpRenderTree does.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::postSetWindowIsKey):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::cacheLayoutTestControllerCallback): Replace some magic numbers with an enum.
- (WTR::LayoutTestController::addChromeInputField):
- (WTR::LayoutTestController::removeChromeInputField):
- (WTR::LayoutTestController::focusWebView):
- (WTR::LayoutTestController::setWindowIsKey):
- (WTR::LayoutTestController::callAddChromeInputFieldCallback):
- (WTR::LayoutTestController::callRemoveChromeInputFieldCallback):
- (WTR::LayoutTestController::callFocusWebViewCallback):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/PlatformWebView.h: Add an NSWindow subclass
- so that we can override -isKeyWindow. Use a boolean member variable
- to track window key status.
- (WTR::PlatformWebView::setWindowIsKey):
- (WTR::PlatformWebView::windowIsKey):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runModal): Change the window key status when showing a modal alert, as DRT does.
- (WTR::closeOtherPage): Use the same cast as other functions.
- (WTR::focus): Implement to call setWindowIsKey(true)
- (WTR::unfocus): Implement to call setWindowIsKey(false)
- (WTR::TestController::createOtherPage): Add page callbacks for focus and unfocus.
- (WTR::TestController::initialize):
- (WTR::TestController::didCommitLoadForFrame): Hook up callback to focus the web view, as DRT does.
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[WebKitTestRunnerWindow isKeyWindow]):
- (WTR::PlatformWebView::PlatformWebView): Make a WebKitTestRunnerWindow.
- (WTR::PlatformWebView::~PlatformWebView): Clean up the back pointer on the NSWindow subclass, in case it outlives us.
- (WTR::PlatformWebView::focus): Set the view as the first responder, and the window as the key window, as DRT does.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-10-10 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- check-webkit-style: Add readability exception for Ewk_* data types.
- https://bugs.webkit.org/show_bug.cgi?id=69763
-
- Reviewed by David Levin.
-
- Many EFL-related files (such as EditorClientEfl.h or
- DumpRenderTreeSupportEfl.h) need to have declarations such as "typedef
- struct _Ewk_Foo Ewk_Foo", which currently produce false positives in
- check-webkit-style.
-
- Add an exception for them, just like there are exceptions for
- Evas_*, Ecore_* and others.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-10-10 Dominic Mazzoni <dmazzoni@google.com>
-
- [Chromium] Get rid of WebAccessibilityCache.
- https://bugs.webkit.org/show_bug.cgi?id=68224
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::bindToJavascript):
-
-2011-10-09 Adam Barth <abarth@webkit.org>
-
- Remove "near miss" XSS vulnerabilities in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=69708
-
- Reviewed by David Levin.
-
- Collin Jackson did a security audit of garden-o-matic. He hasn't found
- any actual vulnerabilities yet, but he did identify a couple "near
- misses" where a slight change in garden-o-matic could lead to a
- vulnerability. This patch removes those potential issues.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
-
-2011-10-07 Adam Barth <abarth@webkit.org>
-
- Add a Content-Security-Policy to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=69668
-
- Reviewed by David Levin.
-
- This will help mitigate cross-site script and will also help us dogfood CSP.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
-
-2011-10-07 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Add DumpRenderTreeChrome.{cpp,h}
- https://bugs.webkit.org/show_bug.cgi?id=66380
-
- Reviewed by Antonio Gomes.
-
- This encapsulates EWebKit into an object that manages multiple windows
- and provides a cleaner interface to EFL's DumpRenderTree.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Added.
- (DumpRenderTreeChrome::create):
- (DumpRenderTreeChrome::DumpRenderTreeChrome):
- (DumpRenderTreeChrome::~DumpRenderTreeChrome):
- (DumpRenderTreeChrome::createNewWindow):
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::removeWindow):
- (DumpRenderTreeChrome::initialize):
- (DumpRenderTreeChrome::extraViews):
- (DumpRenderTreeChrome::mainFrame):
- (DumpRenderTreeChrome::mainView):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- (DumpRenderTreeChrome::onWindowObjectCleared):
- (DumpRenderTreeChrome::onLoadStarted):
- (DumpRenderTreeChrome::processWork):
- (DumpRenderTreeChrome::onLoadFinished):
- (DumpRenderTreeChrome::onStatusbarTextSet):
- (DumpRenderTreeChrome::onTitleChanged):
- (DumpRenderTreeChrome::onDocumentLoadFinished):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h: Added.
- * DumpRenderTree/efl/EventSender.cpp:
- (sendClick): Use browser->mainFrame() instead of mainFrame.
- (mouseDownCallback): Ditto.
- (mouseUpCallback): Ditto.
- (mouseMoveToCallback): Ditto.
- (mouseScrollByCallback): Ditto.
- (keyDownCallback): Ditto.
- (scalePageByCallback): Ditto.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::counterValueForElementById): Use
- browser->mainFrame() instead of mainFrame.
- (LayoutTestController::pageNumberForElementById): Ditto.
- (LayoutTestController::numberOfPages): Ditto.
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId): Ditto.
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId): Ditto.
- (LayoutTestController::sampleSVGAnimationForElementAtTime): Ditto.
- (LayoutTestController::numberOfActiveAnimations): Ditto.
- (LayoutTestController::suspendAnimations): Ditto.
- (LayoutTestController::resumeAnimations): Ditto.
- (LayoutTestController::setWebViewEditable): Ditto.
- (LayoutTestController::webHistoryItemCount): Use browser->mainView()
- instead of browser.
- (LayoutTestController::queueLoad): Ditto.
- (LayoutTestController::setAcceptsEditing): Ditto.
- (LayoutTestController::setUserStyleSheetEnabled): Ditto.
- (LayoutTestController::setPrivateBrowsingEnabled): Ditto.
- (LayoutTestController::setFrameFlatteningEnabled): Ditto.
- (LayoutTestController::setSpatialNavigationEnabled): Ditto.
- (LayoutTestController::setPluginsEnabled): Ditto.
- (LayoutTestController::findString): Ditto.
- (LayoutTestController::setDeveloperExtrasEnabled): Ditto.
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView): Use browser->mainFrame() instead of
- mainFrame.
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
- (LoadItem::invoke): Ditto.
- (LoadHTMLStringItem::invoke): Ditto.
- (ScriptItem::invoke): Ditto.
- (ReloadItem::invoke): Use browser->mainView() instead of browser.
-
-2011-10-07 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][WK2] Touch mocking is broken with Qt 5 post refactor merge
- https://bugs.webkit.org/show_bug.cgi?id=69617
-
- Reviewed by Andreas Kling.
-
- Injecting fake touch events using qt_translateRawTouchEvent does not work anymore, as it sends
- the touch events to widgets only. The QML view however is a QWindow. Therefore the fake touch
- events have to be dispatched through QWindowSystemInterface::handleTouchEvent. As a result the
- events appear to be spontaenous, which required adjusting the are-we-on-a-real-touch-device
- logic.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
-
-2011-10-06 Adam Barth <abarth@webkit.org>
-
- Port PixelZoomer to work in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=69577
-
- Reviewed by David Levin.
-
- This implementation of PixelZoomer is basically a fork of the
- implementation used by results.html. These two apps have different
- requirements on where this code lives. results.html wants to be
- self-contained whereas garden-o-matic wants to live in the public_html
- folder of the buildbot. We could do something fancy here to share the
- code, but that's not likely to be of much benefit.
-
- I had to change a few things about pixelzoomer to accounter for the
- differences in DOM between results.html and garden-o-matic, but
- surprisingly little. I also moved all the code into an anonymous
- function, which is the style we're suing for module separation in
- garden-o-matic. Finally, some jQuery-ims snuck in because I didn't
- want to drag along too many extra functions from results.html.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/pixelzoomer.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/pixelzoomer.css: Added.
- (.pixel-zoom-container):
- (.pixel-zoom-container > *):
- (.pixel-zoom-container .scaled-image-container):
- (.scaled-image-container > img):
-
-2011-10-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Change data type of parameter in ewk_view_viewport_attributes_get().
- https://bugs.webkit.org/show_bug.cgi?id=69505
-
- Reviewed by Andreas Kling.
-
- * EWebLauncher/main.c: Use *int* variables for width and height of viewport meta tag.
- (on_viewport_changed):
-
-2011-10-06 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed test correction.
-
- * Scripts/webkitdirs.pm:
- (argumentsForConfiguration): Add 'wincairo' option to the set of
- configuration flags used by run-javascript-core tests, so that it
- does not attempt to run Apple's release version.
-
-2011-10-06 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed test correction.
-
- * BuildSlaveSupport/test-result-archive: Add 'wincairo' to the set
- of known build slave types so that test-result-archive won't fail
- when running tests.
-
-2011-10-06 Martin Robinson <mrobinson@igalia.com>
-
- The GTK+ WebKit2 headers produce a lot of style warnings
- https://bugs.webkit.org/show_bug.cgi?id=69481
-
- Reviewed by David Levin.
-
- Prevent emitting so many style warnings for GTK+ API. We skip header
- files in the WebKit2 GTK+ API directory and also avoid warnings about
- identifier names that begin with "webkit_" in files that contain the
- string "gtk".
-
- * Scripts/webkitpy/style/checker.py: Do not check header files in
- Source/WebKit2/UIProcess/API/gtk that do not end in Private.h. This required
- adding the ability to specify a regular expression in the skip list. Remove
- a few files from the skipped list that no longer exist.
- * Scripts/webkitpy/style/checker_unittest.py: Added a test for this behavior.
- * Scripts/webkitpy/style/checkers/cpp.py: If a path contains "gtk" don't warn
- about identifiers that begin with "webkit_".
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added a test for this behavior.
-
-2011-10-06 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Correct config.json for WinCairo Test builds.
- https://bugs.webkit.org/show_bug.cgi?id=69272
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Remove
- old 'WinCairo Debug (Build)' label and replace with correct
- 'WinCairo Release' label.
-
-2011-10-06 David Levin <levin@chromium.org>
-
- Add a style checker watchlist definition and add myself to it.
- https://bugs.webkit.org/show_bug.cgi?id=69564
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-06 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Create icon database path in LayoutTestController::setIconDatabaseEnabled.
- https://bugs.webkit.org/show_bug.cgi?id=69450
-
- Reviewed by Ryosuke Niwa.
-
- This should avoid stderr messages when running
- webarchive/test-link-rel-icon.html.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setIconDatabaseEnabled):
-
-2011-10-06 Alejandro G. Castro <alex@igalia.com>
-
- [WK2] [GTK] Add Skipped file for Webkit2 test runner
- https://bugs.webkit.org/show_bug.cgi?id=69517
-
- Use the shared WK2 skipped file also in GTK port.
-
- Reviewed by Martin Robinson.
-
- * Scripts/old-run-webkit-tests:
- (readSkippedFiles):
-
-2011-10-06 Elliot Poger <epoger@google.com>
-
- allow new-run-webkit-tests to run on Lion
- https://bugs.webkit.org/show_bug.cgi?id=69429
-
- Add fallback lists for chromium-mac-lion, and add chromium-mac-snowleopard
- directory to fallback lists (even though that directory doesn't exist yet)
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
-
-2011-10-03 Hans Wennborg <hans@chromium.org>
-
- IndexedDB: Remove SQLite-LevelDB migration code
- https://bugs.webkit.org/show_bug.cgi?id=69264
-
- Reviewed by Tony Chang.
-
- Remove setOverrideIndexedDBBackingStore. It was used in the layout
- test for migration.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-10-05 James Robinson <jamesr@chromium.org>
-
- [chromium] Add a command line option to DumpRenderTree and run_webkit_tests.py to enable threaded compositing mode
- https://bugs.webkit.org/show_bug.cgi?id=69498
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setThreadedCompositingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-10-05 Erik Arvidsson <arv@chromium.org>
-
- [QT] Fix DRT after r96779
-
- unreviewed.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::dumpHistoryItem):
-
-2011-10-05 Erik Arvidsson <arv@chromium.org>
-
- window.location.href and others needlessly decodes URI-encoded characters
- https://bugs.webkit.org/show_bug.cgi?id=30225
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (normalizeLayoutTestURLInternal): Remove extra encode.
-
-2011-10-05 Darin Adler <darin@apple.com>
-
- Fix build.
-
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp:
- (TestWebKitAPI::TEST): Remove underscore prefix from call to
- WKContextRegisterURLSchemeAsEmptyDocument.
-
-2011-10-05 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Switch to building Release target, and activate tests.
- https://bugs.webkit.org/show_bug.cgi?id=69272
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- Change from debug to release target. Switch from "Build" to
- "BuildAndTest"
-
-2011-10-05 Simon Fraser <simon.fraser@apple.com>
-
- In WebKitTestRunner, text has font smoothing in pixel snapshots
- https://bugs.webkit.org/show_bug.cgi?id=69396
-
- Reviewed by Darin Adler.
-
- Call the new WKContext method that disables font smoothing in
- WebKitTestRunner, so that pixel snapshots don't have font smoothing
- enabled. Remove leading underscore from a WKContext function call.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2011-10-05 David Levin <levin@chromium.org>
-
- Improve the watchlist for threading entries.
- https://bugs.webkit.org/show_bug.cgi?id=69463
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-05 Adam Roben <aroben@apple.com>
-
- Add tests for using RetainPtrs inside HashMap and HashSet
-
- Fixes <http://webkit.org/b/69414> <rdar://problem/10236833> Using RetainPtr as the key type
- in HashMap/HashSet fails to compile
-
- Reviewed by John Sullivan.
-
- * TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp: Added.
- (TestWebKitAPI::TEST): Show that RetainPtr can be used inside HashSet and as both the key
- and value type of HashMap.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Added new file.
-
-2011-10-05 Adam Barth <abarth@webkit.org>
-
- Mark as Expected in garden-o-matic is confusing
- https://bugs.webkit.org/show_bug.cgi?id=69452
-
- Reviewed by David Levin.
-
- krit didn't understand the difference between this button and the
- Rebaseline button because both of them seem to indicate that the new
- behavior is expected. This patch renames "Mark as Expected" to "Expect
- Failure" to make it clear that we're just expecting the test to fail
- rather than accepting the new results as passing. We might need to
- iterate on these names a bit more if folks continue to find them
- confusing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
-
-2011-10-05 Adam Barth <abarth@webkit.org>
-
- Add watchlist entries for abarth
- https://bugs.webkit.org/show_bug.cgi?id=69461
-
- Reviewed by David Levin.
-
- I might have gone a bit overboard. We'll see if this is too much spam
- for me.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-05 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Teach old-run-webkit-tests about wincairo.
- https://bugs.webkit.org/show_bug.cgi?id=69280
-
- Reviewed by Adam Roben.
-
- * Scripts/old-run-webkit-tests: Handle wincairo case.
- (buildPlatformResultHierarchy):
- (readSkippedFiles): Ditto
- * Scripts/webkitdirs.pm: Deal with wincairo build case.
- (determineConfiguration):
-
-2011-10-05 Chang Shu <cshu@webkit.org>
-
- [WK2] Support setMarkedText/hasMarkedText/unmarkText/insertText for WTR TextInputController
- https://bugs.webkit.org/show_bug.cgi?id=68924
-
- Added TextInputController files and JS interfaces for the above functions.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/DerivedSources.pro:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::textInputController):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/TextInputController.cpp: Added.
- (WTR::TextInputController::create):
- (WTR::TextInputController::TextInputController):
- (WTR::TextInputController::~TextInputController):
- (WTR::TextInputController::wrapperClass):
- (WTR::TextInputController::makeWindowObject):
- (WTR::TextInputController::setMarkedText):
- (WTR::TextInputController::hasMarkedText):
- (WTR::TextInputController::unmarkText):
- (WTR::TextInputController::insertText):
- * WebKitTestRunner/InjectedBundle/TextInputController.h: Added.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
-
-2011-10-04 Oliver Hunt <oliver@apple.com>
-
- Add rudimentary filtering to write barriers
- https://bugs.webkit.org/show_bug.cgi?id=69392
-
- Reviewed by Filip Pizlo.
-
- When we're recording gc phase times Heap.o picks up
- some exit time destructors, so we'll just ignore Heap.o
- in this check.
-
- * Scripts/check-for-exit-time-destructors:
-
-2011-10-05 Chang Shu <cshu@webkit.org>
-
- [WK2] WebKitTestRunner needs LayoutTestController.dumpConfigurationForViewport
- https://bugs.webkit.org/show_bug.cgi?id=69365
-
- Reviewed by Darin Adler.
-
- Added js API in WTR LayoutTestController.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::dumpConfigurationForViewport):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-10-05 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] ImageDiff: Do not clear the image before it is processed and compared
- https://bugs.webkit.org/show_bug.cgi?id=69378
-
- Reviewed by Antonio Gomes.
-
- Commit 61836 to Evas added a few cleanup calls to some
- evas_object_image functions which effectively made ImageDiff consider
- all images to be equal.
-
- It turns out that now evas_object_image_colorspace_set clears any
- data set, so the call to evas_object_image_data_set was not having any
- effect.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (readImageFromStdin): Call evas_object_image_data_set after
- evas_object_image_colorspace_set.
-
-2011-10-05 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Fix Evas_Object_Image reference counts and file descriptor leakage in ImageDiff.
- https://bugs.webkit.org/show_bug.cgi?id=68449
-
- Reviewed by Antonio Gomes.
-
- evas_render() must be called to close up temporary files and unmap unused
- resources. evas_object_image_data_set() must be called after an
- evas_object_image_data_get() to balance an internal reference count.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (differenceImageFromDifferenceBuffer):
- (calculateDifference):
- (printImage):
- (printImageDifferences):
-
-2011-10-05 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Unreviewed build fix.
-
- Don't use WebCore directly in WTR.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::addChromeInputField):
- (WTR::PlatformWebView::removeChromeInputField):
- (WTR::PlatformWebView::makeWebViewFirstResponder):
-
-2011-10-05 David Levin <levin@chromium.org>
-
- watchlist: Add more rules for chromium public api and sort the file.
- https://bugs.webkit.org/show_bug.cgi?id=69323
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-05 David Levin <levin@chromium.org>
-
- watchlist: Don't add the same message to a bug more than once.
- https://bugs.webkit.org/show_bug.cgi?id=69303
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/net/bugzilla/bug.py: Added a way to determine
- if a message is in the comments already.
- * Scripts/webkitpy/common/net/bugzilla/bug_unittest.py: A test for the above.
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py:
- Pick a bug supplied by the mock. Change the test due to different output
- from the mock watch list tool.
- * Scripts/webkitpy/tool/mocktool.py: Change the mock watch list to return
- another email so it will be filtered out, fix bugs to have the cc and comment fields,
- and fix fetch_bug to handle bug_id's which are text (because that took me way too long
- to debug).
- * Scripts/webkitpy/tool/steps/applywatchlist.py: Change to filter out comments
- and/or cc's that are already in the bug.
- * Scripts/webkitpy/tool/steps/applywatchlist_unittest.py: Pick a bug supplied by the mock,
- and remove a comment that is filtered out.
-
-2011-10-05 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Unreviewed build fix after r96643.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::addChromeInputField):
- (WTR::PlatformWebView::removeChromeInputField):
- (WTR::PlatformWebView::makeWebViewFirstResponder):
-
-2011-10-04 Kent Tamura <tkent@chromium.org>
-
- Introduce feature flags for incomplete input types
- https://bugs.webkit.org/show_bug.cgi?id=68971
-
- Reviewed by Hajime Morita.
-
- * Scripts/build-webkit:
- Add --input-type-{date,datetime,datetimelocal,month,time,week} flags.
- They are disabled by default.
-
-2011-10-04 Adam Barth <abarth@webkit.org>
-
- garden-o-matic doesn't launch it's UI on Lion
- https://bugs.webkit.org/show_bug.cgi?id=69349
-
- Reviewed by Darin Adler.
-
- It turns out that Lion is a bit more picky about file URLs. This patch
- switches us from using a path to using an actual file URL, silencing
- the warning and making the tool actually launch on Lion.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-10-04 Daniel Bates <dbates@rim.com>
-
- Fix Perl undefined variable warning when using run-safari after
- <http://trac.webkit.org/changeset/96448> (https://bugs.webkit.org/show_bug.cgi?id=68662)
-
- Rubber-stamped by Alexey Proskuryakov.
-
- * Scripts/webkitdirs.pm:
- (runMacWebKitApp): Check that the optional function argument $useOpenCommand
- is defined before using it in a comparison operation.
-
-2011-10-04 Scott Graham <scottmg@chromium.org>
-
- Add GAMEPAD feature flag
- https://bugs.webkit.org/show_bug.cgi?id=66859
-
- Reviewed by Darin Fisher.
-
- * Scripts/build-webkit:
-
-2011-10-04 Jon Lee <jonlee@apple.com>
-
- REGRESSION (WK2): (Shift-)option-tabbing skips over elements when transitioning from chrome to webview
- https://bugs.webkit.org/show_bug.cgi?id=68412
- <rdar://problem/9988252>
-
- Reviewed by Darin Adler.
-
- In order to create a test for the bug, I had to update DRT and WKTR to create some
- widget that allows first responder status to move away from the main web view.
-
- Three methods were added to layoutTestController: addChromeInputField,
- removeChromeInputField, and focusWebView. addChromeInputField adds a text field
- that is a sibling to the web view, and sets up the key event loop between the two.
- removeChromeInputField removes that field. focusWebView moves first responder
- status to the web view.
-
- The test makes the call via layoutTestController and passes a callback that it
- assumes will be executed once the task is completed. In DRT the callback is called
- synchronously. In WKTR this is handled with message passing between the two
- processes.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (addChromeInputFieldCallback):
- (removeChromeInputFieldCallback):
- (focusWebViewCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::addChromeInputField):
- (LayoutTestController::removeChromeInputField):
- (LayoutTestController::focusWebView):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting): When resetting for the next test,
- make sure to remove the chrome input field.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::addChromeInputField):
- (LayoutTestController::removeChromeInputField):
- (LayoutTestController::focusWebView):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::addChromeInputField):
- (LayoutTestController::removeChromeInputField):
- (LayoutTestController::focusWebView):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::postAddChromeInputField):
- (WTR::InjectedBundle::postRemoveChromeInputField):
- (WTR::InjectedBundle::postFocusWebView):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::callbackMap): Create a hash map that keeps track of the callbacks provided
- through JS.
- (WTR::cacheLayoutTestControllerCallback):
- (WTR::callLayoutTestControllerCallback):
- (WTR::LayoutTestController::addChromeInputField):
- (WTR::LayoutTestController::removeChromeInputField):
- (WTR::LayoutTestController::focusWebView):
- (WTR::LayoutTestController::callAddChromeInputFieldCallback):
- (WTR::LayoutTestController::callRemoveChromeInputFieldCallback):
- (WTR::LayoutTestController::callFocusWebViewCallback):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::addChromeInputField):
- (WTR::PlatformWebView::removeChromeInputField):
- (WTR::PlatformWebView::makeWebViewFirstResponder):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::addChromeInputField):
- (WTR::PlatformWebView::removeChromeInputField):
- (WTR::PlatformWebView::makeWebViewFirstResponder):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::addChromeInputField):
- (WTR::PlatformWebView::removeChromeInputField):
- (WTR::PlatformWebView::makeWebViewFirstResponder):
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: These functions have nothing to do
- with the patch-- just cleaning up style.
- (LayoutTestController::addDisallowedURL):
- (originsArrayToJS):
- (LayoutTestController::queueLoad):
- (LayoutTestController::setMockDeviceOrientation):
- (LayoutTestController::setIconDatabaseEnabled):
- (LayoutTestController::setEditingBehavior):
-
-2011-10-04 Simon Fraser <simon.fraser@apple.com>
-
- Move font-fixup code in WebKitTestRunner to a better place
- https://bugs.webkit.org/show_bug.cgi?id=69356
-
- Reviewed by Sam Weinig.
-
- Move code that swizzles NSFontManager methods to ActivateFonts.mm, which
- already contains font-related code.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
- (WTR::drt_NSFontManager_availableFontFamilies):
- (WTR::drt_NSFontManager_availableFonts):
- (WTR::swizzleNSFontManagerMethods):
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
-
-2011-10-04 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Add DumpRenderTree.cpp
- https://bugs.webkit.org/show_bug.cgi?id=62034
-
- Reviewed by Antonio Gomes.
-
- This is the main implementation file for EFL's DumpRenderTree.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp: Added.
- (dumpFramesAsText):
- (dumpFrameScrollPosition):
- (shouldLogFrameLoadDelegates):
- (shouldDumpAsText):
- (sendPixelResultsEOF):
- (invalidateAnyPreviousWaitToDumpWatchdog):
- (onEcoreEvasResize):
- (onCloseWindow):
- (useLongRunningServerMode):
- (parseCommandLineOptions):
- (getFinalTestURL):
- (getExpectedPixelHash):
- (createLayoutTestController):
- (runTest):
- (runTestingServerLoop):
- (adjustOutputTypeByMimeType):
- (dumpFrameContentsAsText):
- (shouldDumpFrameScrollPosition):
- (shouldDumpPixelsAndCompareWithExpected):
- (shouldDumpBackForwardList):
- (initEfl):
- (shutdownEfl):
- (displayWebView):
- (dump):
- (initEcoreEvas):
- (main):
-
-2011-10-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should remove builders from the failure grid once they start to pass
- https://bugs.webkit.org/show_bug.cgi?id=69309
-
- Unreviewed. dglazkov is on vacation. I need to interest someone else
- in reviewing these patches.
-
- This patch follows the update/purge model from UpdateTracker. This
- patch is less awesome than it could be because it causes the UI to
- flash slightly. In a future patch, we'll want to use these
- update/purge notifications to update the UI without flashing. However,
- that's not such a big deal because this UI is hidden in the default
- view.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
-
-2011-10-03 David Levin <levin@chromium.org>
-
- webkitpy: Expose cc_emails and comments from bug.py
- https://bugs.webkit.org/show_bug.cgi?id=69308
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/net/bugzilla/bug.py: Expose cc_emails and comments .
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py: Add parsing support for comments.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py: Fix the unit test due
- to comments being exposed.
-
-2011-10-03 James Robinson <jamesr@chromium.org>
-
- Add myself to the watchlist for platform/graphics/chromium
- https://bugs.webkit.org/show_bug.cgi?id=69297
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2011-10-03 Anders Carlsson <andersca@apple.com>
-
- Remove custom scrollbar painting hooks
- https://bugs.webkit.org/show_bug.cgi?id=69163
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
- No need to enable custom scrollbar painting.
-
-2011-10-03 David Levin <levin@chromium.org>
-
- watchlist: Make watchlist run on a bot.
- https://bugs.webkit.org/show_bug.cgi?id=68974
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/queues.py: Add the watchlist to the style bot.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- Change to log what is run so that we can see the style command
- and the watchlist command being run.
-
-2011-10-03 David Levin <levin@chromium.org>
-
- watchlist: Allow specified a bug to attach the watchlist info to.
- https://bugs.webkit.org/show_bug.cgi?id=69288
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/commands/applywatchlistlocal.py: Add support for bugid.
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py:
- Add tests and fix an existing test because the unit tests do not go through the
- normal command line processing (so the -g argument remained when we determined bug ids).
- * Scripts/webkitpy/tool/commands/commandtest.py: Change the derivation to
- get the assert raises regex method.
- * Scripts/webkitpy/tool/commands/download.py: Fix the command help to be more unixy.
-
-2011-10-03 Leandro Pereira <leandro@profusion.mobi>
-
- [EFL] DRT: Add JSStringUtils.{cpp,h}
- https://bugs.webkit.org/show_bug.cgi?id=66397
-
- Reviewed by Ryosuke Niwa.
-
- Adds helper functions to compare the equality of C-style strings and
- JSStringRef objects.
-
- * DumpRenderTree/efl/JSStringUtils.cpp: Added.
- (equals):
- * DumpRenderTree/efl/JSStringUtils.h: Added.
-
-2011-10-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should work in Safari 5.1
- https://bugs.webkit.org/show_bug.cgi?id=69290
-
- Reviewed by Sam Weinig.
-
- My old implementation of bind was too clever by half. This one seems
- to work better, at least according to this test.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
-
-2011-09-29 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Unreviewed: change my e-mail in commiters.py
-
- (I'm leaving the company and my @openbossa.org will be no more)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
-
-2011-10-01 Brent Fulgham <bfulgham@webkit.org>
-
- Correct post-build step for WinCairo test runs.
- https://bugs.webkit.org/show_bug.cgi?id=69191
-
- Reviewed by Brian Weinstein.
-
- * DumpRenderTree/win/DumpRenderTreePostBuild.cmd: Add additional
- shell case to handle the CFLite build.
-
-2011-10-01 Filip Pizlo <fpizlo@apple.com>
-
- Added myself to reviewers, because I'm now a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-10-01 Filip Pizlo <fpizlo@apple.com>
-
- Bencher script makes it difficult to do automated performance testing
- https://bugs.webkit.org/show_bug.cgi?id=69207
-
- Reviewed by Sam Weinig.
-
- This adds two new features:
-
- The ability to disable automatic VM detection, which is flaky if any
- profiling features are enabled in jsc.
-
- The ability to compute, and report, a scaled result for all benchmark
- suites. It is the geometric mean of three numbers: SunSpider's
- arithmetic mean, V8's geometric mean, and Kraken's arithmetic mean.
- It is also possible to turn off all other output from bencher and just
- get this number with the --brief option.
-
- * Scripts/bencher:
-
-2011-10-01 Sam Weinig <sam@webkit.org>
-
- WTR is not successfully changing the NSUserDefaults
- https://bugs.webkit.org/show_bug.cgi?id=69204
-
- Reviewed by Dan Bernstein.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
- Use -setVolatileDomain:forName:NSArgumentDomain instead of registerDefaults to
- get our overrides picked up.
-
-2011-09-30 Daniel Bates <dbates@rim.com>
-
- Cleanup: Extract code to launch a Mac WebKit application into a common function
- https://bugs.webkit.org/show_bug.cgi?id=68662
-
- Reviewed by Adam Roben.
-
- Extracts common code to launch a WebKit application on Mac OS X into a function
- so that we can remove duplicate code.
-
- * Scripts/run-webkit-app: Modified to use webkitdirs::runMacWebKitApp().
- * Scripts/webkitdirs.pm: Sorted @EXPORT list and added constant USE_OPEN_COMMAND.
- (runMacWebKitApp): Added.
- (runSafari): Modified to use webkitdirs::runMacWebKitApp().
- (runMiniBrowser): Ditto.
- (runWebKitTestRunner): Ditto.
- (runTestWebKitAPI): Ditto.
-
-2011-09-29 David Levin <levin@chromium.org>
-
- watchlist: Add webkit-patch command to run watchlist.
- https://bugs.webkit.org/show_bug.cgi?id=68973
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/host.py: Exposed the watch_list.
- * Scripts/webkitpy/common/watchlist/watchlist.py: Changed to return
- the cc and messages as sorted lists. To allow for deterministic ordering.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py: Ditto.
- * Scripts/webkitpy/tool/commands/__init__.py: Add ApplyWatchListLocal so
- that it will be exposed as a command by webkit-patch.
- * Scripts/webkitpy/tool/commands/applywatchlistlocal.py: Added.
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/download.py: Added ApplyWatchList which mimics CheckStyle.
- * Scripts/webkitpy/tool/commands/download_unittest.py: Added an appropriate test.
- * Scripts/webkitpy/tool/mocktool.py: Mock out the watch list.
- * Scripts/webkitpy/tool/steps/__init__.py: Added ApplyWatchList.
- * Scripts/webkitpy/tool/steps/applywatchlist.py: Added.
- * Scripts/webkitpy/tool/steps/applywatchlist_unittest.py: Added.
-
-2011-09-30 David Levin <levin@chromium.org>
-
- watchlist: Add a way to detect a net increase or decrease of a pattern (in a file).
- https://bugs.webkit.org/show_bug.cgi?id=69031
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist: Added usage of the new pattern,
- a comment to explain something important about the email addresses, and
- a comment to let emacs know to treat the file as a python file.
- * Scripts/webkitpy/common/watchlist/amountchangedpattern.py: Added.
- Detects increases or decreases in a pattern.
- * Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py: Added.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py:
- Added unit tests for watchlist which has "more" or "less".
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- Added support for "more" or "less".
-
-2011-09-30 Sam Weinig <sam@webkit.org>
-
- Add support for eventSender.mouseScrollBy in WTR
- https://bugs.webkit.org/show_bug.cgi?id=69189
-
- Add implementation of eventSender.mouseScrollBy for the mac.
-
- Reviewed by Simon Fraser.
-
- * WebKitTestRunner/EventSenderProxy.h:
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::keyDown):
- (WTR::EventSendingController::mouseScrollBy):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::mouseScrollBy):
-
-2011-09-30 Simon Fraser <simon.fraser@apple.com>
-
- fast/forms/text-control-intrinsic-widths.html fails on Mac if Word/Office fonts are installed
- https://bugs.webkit.org/show_bug.cgi?id=35273
-
- Reviewed by Dan Bernstein.
-
- There are two types of font issue that can cause layout test failure.
- First, the user may have non-standard fonts installed that affect the layout
- of some tests. For example, some tests use the MS Gothic font if installed.
-
- Secondly, the user may have duplicate fonts installed in ~/Library/Fonts,
- which override the system fonts (e.g. a copy of Arial from MS Office). For
- some tests, this can affect font metrics or fallback behavior.
-
- This change addresses the first problem only. It limits the set of fonts
- available through NSFontManager, by swizzling some methods to return
- a list of fonts or font families which only include fonts from a hardcoded
- whitelist.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- (drt_NSFontManager_availableFontFamilies):
- (drt_NSFontManager_availableFonts):
- (swizzleNSFontManagerMethods):
- (activateTestingFonts):
- (adjustFonts):
- (createWebViewAndOffscreenWindow):
- (prepareConsistentTestingEnvironment):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::allowedFontFamilySet):
- (WTR::drt_NSFontManager_availableFontFamilies):
- (WTR::drt_NSFontManager_availableFonts):
- (WTR::swizzleNSFontManagerMethods):
- (WTR::InjectedBundle::platformInitialize):
-
-2011-09-30 David Levin <levin@chromium.org>
-
- Need to skip webkitpy.common.checkout.baselineoptimizer_unittest.BaselineOptimizerTest on Windows..
- https://bugs.webkit.org/show_bug.cgi?id=69039
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- Actually skip only one specific test that is failing on Windows.
-
-2011-09-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Prevent qDebug() output from DRT and WTR unless --verbose
-
- For DRT we didn't install the message handler early enough to
- catch output while constructing the QApplication. For WTR we
- didn't even install a message handler.
-
- Since the UI process will forward any output from the web process
- we set an environment variable QT_WEBKIT_SUPPRESS_WEB_PROCESS_OUTPUT
- in WTR before the web process is started. This is picked up by the
- web process which installs its own message handler.
-
- The environment variable can be overriden on the command line if you
- want to see output from the web process, or you can pass --verbose to
- WTR to see output from both processes.
-
- https://bugs.webkit.org/show_bug.cgi?id=69132
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/qt/main.cpp:
- * WebKitTestRunner/qt/main.cpp:
-
-2011-09-30 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make sure WTR sizes the window and item correctly
-
- Revision 96345 changed the logic for how the view and
- window was created, but missed a vital part, setting
- the size.
-
- We now use a QSGView for the window, that has a simple
- item as its root object that is always resized to fit
- within the window. The webview is then parented to the
- root object and set to anchors.fill: parent. That way
- any window geometry changes will propagate to the web
- view.
-
- https://bugs.webkit.org/show_bug.cgi?id=69134
-
- Reviewed by Andreas Kling.
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2011-09-30 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Only save the current viewport in PixelDumpSupportEfl.
- https://bugs.webkit.org/show_bug.cgi?id=68450
-
- Reviewed by Antonio Gomes.
-
- The previous implementation saved the whole page contents in the final
- PNG, however the baselines and expectations in the tree only want the
- current viewport (with a scrollbar, if needed), so we now only save the
- currently visible contents.
-
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView): Use
- ewk_frame_visible_content_geometry_get instead of
- ewk_frame_contents_size_get.
-
-2011-09-30 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Support and keep track of extra windows (views).
- https://bugs.webkit.org/show_bug.cgi?id=68454
-
- Reviewed by Antonio Gomes.
-
- So far, window.open and related JavaScript code would not work, as
- DRTView did not implementation
- Ewk_View_Smart_Class::window_{open,close}. The default implementation
- in ewk just returns the current window/view, which broke any
- layouttest which relied on window.open.
-
- We now properly create and remove these new views. Unfortunately, the
- current way ewk works (and due to the fact that we cannot pass class
- methods as function pointers to the EFL functions), DRTView needs to
- know that DRTChrome exists and call `browser' directly in some points.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onWindowCreate):
- (onWindowCloseDelayed):
- (onWindowClose):
- (drtViewTiledAdd):
-
-2011-09-30 Qi Zhang <qi.2.zhang@nokia.com>
-
- WebKitTestRunner needs layoutTestController.setAppCacheMaximumSize
- https://bugs.webkit.org/show_bug.cgi?id=42698
-
- Reviewed by Andreas Kling.
-
- Implemented layoutTestController.setAppCacheMaximumSize and layoutTestController.clearApplicationCache,
- and call clearApplicationCache when layoutTest start up.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::clearAllApplicationCaches):
- (WTR::LayoutTestController::setAppCacheMaximumSize):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-09-30 Zeno Albisser <zeno.albisser@nokia.com>
-
- [Qt][WK2] Change WebKitTestRunner to use QMouseEvents instead of QGraphicsSceneMouseEvents
- https://bugs.webkit.org/show_bug.cgi?id=69145
-
- This is a follow up to https://bugs.webkit.org/show_bug.cgi?id=69105
- Due to refactorings in Qt5, QMouseEvent now supports floating point coordinates
- and is perfectly suitable for SceneGraph as well. GraphicsScene events
- will not be available in QtGui anymore in future. Therefore we also have to change
- QtWebKit to use QMouseEvents instead of QGraphicsSceneMouseEvents.
-
- Reviewed by Chang Shu.
-
- * WebKitTestRunner/EventSenderProxy.h:
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::createMouseEvent):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
-
-2011-09-30 James Robinson <jamesr@chromium.org>
-
- [chromium] Add WebKit API for sending input events to the compositor thread
- https://bugs.webkit.org/show_bug.cgi?id=69117
-
- Reviewed by Darin Fisher.
-
- Adds support for creating and setting a compositor thread in DRT.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-09-29 David Levin <levin@chromium.org>
-
- watchlist: Add cross-checks for WatchList once it is filled.
- https://bugs.webkit.org/show_bug.cgi?id=68975
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/watchlist/watchlist.py: Made the data members public
- instead of having trivial getter and setters.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py: Fix the unit tests to
- pass the validation checks.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Add validation checks
- and fix a few style nits.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Add tests for the
- validation checks.
- * Scripts/webkitpy/common/watchlist/watchlistrule.py: Make definitions_to_match public.
-
-2011-09-29 Xianzhu Wang <wangxianzhu@chromium.org>
-
- run-api-tests fails on chromium-win bot
- https://bugs.webkit.org/show_bug.cgi?id=69121
-
- On Windows running a perl script needs the interpreter.
-
- Reviewed by Adam Barth.
-
- * Scripts/run-api-tests:
- (buildTestTool):
-
-2011-09-29 Adam Barth <abarth@webkit.org>
-
- Attempt to make this tool work on Windows.
-
- * Scripts/run-api-tests:
- (buildTestTool):
-
-2011-09-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Try to fix the minial build
-
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/webpage.cpp:
-
-2011-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix build against Qt5 after refactor of widgets out of QtGUi
-
- QWidget and friends now live in the QtWidgets library. We update
- includes in implementation files and private headers to us the
- non-module-prefixed path, and leave the lookup for the include
- path. For public headers we have to ifdef the includes as the
- user might now have the modules we need in his QT config.
-
- Finally, QSGCanvas is no longer a QWidget but a QWindow, so we
- have to update our code and use windowHandle() for setting the
- parent relationships.
-
- https://bugs.webkit.org/show_bug.cgi?id=68687
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * MiniBrowser/qt/BrowserView.cpp:
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.h:
- * MiniBrowser/qt/main.cpp:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/locationedit.h:
- * QtTestBrowser/main.cpp:
- * QtTestBrowser/mainwindow.cpp:
- * QtTestBrowser/mainwindow.h:
- * QtTestBrowser/webinspector.h:
- * QtTestBrowser/webpage.cpp:
- * QtTestBrowser/webview.cpp:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2011-09-29 Ravi Phaneendra Kasibhatla <ravi.kasibhatla@motorola.com>
-
- Initial implementation of WebInspector for WebKit2 GTK port.
- https://bugs.webkit.org/show_bug.cgi?id=68235
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowConstructed): Set the developer extra flags to true to enable inspect element.
-
-2011-09-29 Adam Barth <abarth@webkit.org>
-
- Unbreak the "update expectatations" button by using the existing
- machinery to create the failureInfo objects.
-
- Unbreak the "close" button on the progress dialog by using |this|
- instead of the old name of the object.
-
- Teach the controllers unit test not to talk to the actual network.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
-
-2011-09-29 Hans Wennborg <hans@chromium.org>
-
- IndexedDB: Use LevelDB also for in-memory databases
- https://bugs.webkit.org/show_bug.cgi?id=68903
-
- Reviewed by Steve Block.
-
- Remove the temporary dir that was necessary before LevelDB supported
- in-memory databases.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
-
-2011-09-28 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Run TestWebKitAPI on Chromium buildbots
- https://bugs.webkit.org/show_bug.cgi?id=68678
-
- Reviewed by Tony Chang.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-09-28 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic results should anticipate 0 unexpected failures.
- https://bugs.webkit.org/show_bug.cgi?id=69036
-
- Also fixes controllers: UnexpectedFailures test.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js: Tweaked.
-
-2011-09-28 Dirk Pranke <dpranke@chromium.org>
-
- Modify new-run-webkit-tests to return the percentage difference in image diffs where possible.
-
- https://bugs.webkit.org/show_bug.cgi?id=67253
-
- Reviewed by Eric Seidel.
-
- Nearly all of the work in this was done by Simon Fraser; I'm
- just repackaging it and cleaning it up a bit. This change
- modifies port.diff_image() to return a tuple of (pass/fail,
- %age), adds the value to the FailureImageHashMismatch, and
- writes the value into the full_results.json files to be
- displayed in the results page.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-09-25 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-28 Adam Barth <abarth@webkit.org>
-
- garden-o-matic shouldn't depend on test-results.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=69019
-
- Reviewed by Dimitri Glazkov.
-
- This patch moves garden-o-matic from getting full_results.json from
- test-results.appspot.com to getting that information directly from the
- buildbot. This patch improve the load time and accuracy of
- garden-o-matic because test-results.appspot.com is slow and is dropping
- a significant number of writes (see
- https://bugs.webkit.org/show_bug.cgi?id=68748).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
-
-2011-09-28 David Levin <levin@chromium.org>
-
- watchlist: Add a way to load the watchlist from config.
- https://bugs.webkit.org/show_bug.cgi?id=68991
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/watchlist: Added.
- * Scripts/webkitpy/common/watchlist/watchlistloader.py: Added.
- Support for loading the watch list.
- * Scripts/webkitpy/common/watchlist/watchlistloader_unittest.py: Added.
- Tests for the loading.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
- Adjusted to use the common base class.
- * Scripts/webkitpy/common/webkitunittest.py: Added.
- Made a common base class for functionality used in more than one.
-
-2011-09-28 David Levin <levin@chromium.org>
-
- Attempt fix for Leopard python unit test run.
-
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
-
-2011-09-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- REGRESSION(r95573): Crash when loading SVG documents in a flattened frame or any SVG document in Chromium/Mac.
- https://bugs.webkit.org/show_bug.cgi?id=68938
-
- Made Chromium/Mac DRT better match how Chromium/Mac queries WebKit.
-
- Reviewed by David Hyatt.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didUpdateLayout): Added width/height queries.
- * DumpRenderTree/chromium/WebViewHost.h: Updated defs.
-
-2011-09-28 Mihai Parparita <mihaip@chromium.org>
-
- Get rebaseline server running again
- https://bugs.webkit.org/show_bug.cgi?id=69020
-
- Reviewed by Adam Barth.
-
- Make rebaseline server run again after r90337 (missing format_date_time
- import, results_json wasn't outputting anything).
-
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-09-28 David Grogan <dgrogan@chromium.org>
-
- Move dgrogan from contributor to committer
- https://bugs.webkit.org/show_bug.cgi?id=69021
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-28 Mihai Parparita <mihaip@chromium.org>
-
- Add Mac Skia GPU bots to builders.py
- https://bugs.webkit.org/show_bug.cgi?id=69016
-
- Reviewed by Eric Seidel.
-
- This allows wwebkit-patch rebaseline-expectations to work with Mac Skia
- GPU tests.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2011-09-28 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-
- Second try at fixing the GTK+ build.
-
- * GNUmakefile.am:
-
-2011-09-28 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Let TestWebKitAPI and webkit_unit_tests work for chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=68680
-
- Reviewed by Tony Chang.
-
- * Scripts/run-chromium-webkit-unit-tests:
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
-
-2011-09-28 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- [Gtk] Implement textInputController.doCommand
- https://bugs.webkit.org/show_bug.cgi?id=66496
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/TextInputController.cpp:
- (doCommandCallback): Callback function for textInputController.doCommand
-
-2011-09-28 David Levin <levin@chromium.org>
-
- watchlist: Suggest corrections for typos and improve error message consistency.
- https://bugs.webkit.org/show_bug.cgi?id=68976
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Add suggestions
- for typos and improve consistency of the error messages.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Add tests
- and improve the regex that were already present.
-
-2011-09-28 David Levin <levin@chromium.org>
-
- watchlist: Add support for matching added or deleted lines.
- https://bugs.webkit.org/show_bug.cgi?id=68972
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/changedlinepattern.py: Added.
- * Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py: Added.
- * Scripts/webkitpy/common/watchlist/watchlist.py: Comment fix up and fix input
- to the pattern match to only have the diff lines instead of the DiffFile.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py:
- Add tests for the new patterns and combinations of the patterns.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- Sort imports. Add changeline support.
-
-2011-09-28 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add WebKitError to GTK+ WebKit2 API
- https://bugs.webkit.org/show_bug.cgi?id=68508
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Add path to webkitgtk derived sources to the
- include path.
-
-2011-09-28 Philippe Normand <pnormand@igalia.com>
-
- [GTK] missing WebKit2 support in run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=68992
-
- Rubber-stamped by Andreas Kling.
-
- * Scripts/run-gtk-tests: Get the WebKit2 tests to run from the
- webkit2 directory.
-
-2011-09-27 Philippe Normand <pnormand@igalia.com>
-
- [GTK] build-webkit --no-webkit2 still builds WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=68892
-
- Reviewed by Martin Robinson.
-
- Take the --no-webkit2 option in account when building WebKitGTK+.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- (buildGtkProject):
-
-2011-09-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Make Chromium Win Release (Tests) a core builder
- https://bugs.webkit.org/show_bug.cgi?id=68906
-
- Reviewed by Adam Barth.
-
- Add Chromium Win Release (Tests) to the list of core builders.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-09-27 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should load faster and inform the user what is happening
- https://bugs.webkit.org/show_bug.cgi?id=68954
-
- Reviewed by Dimitri Glazkov.
-
- This test disables the expected failures tab. The web inspector showed
- that loading the data for this tab was slowing down the loading time
- for the whole app. We need to find a way to load that data lazily.
-
- This patch also improves the update message to better describe the
- progress the app is making analyzing data from the buildbot.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
-
-2011-09-27 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should show the first result when examining results
- https://bugs.webkit.org/show_bug.cgi?id=68960
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
-
-2011-09-27 David Levin <levin@chromium.org>
-
- watchlist: Add support for cc and message rules.
- https://bugs.webkit.org/show_bug.cgi?id=68950
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/watchlist.py: Added support to get
- the cc's and messages for a patch.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py: Tests for the above.
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Parsing support
- for the rules.
- * Scripts/webkitpy/common/watchlist/watchlistrule.py: Copied from Tools/Scripts/webkitpy/common/watchlist/watchlist.py.
- A generic encapsulation of either a message list or a cc list.
- * Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py: Copied from Tools/Scripts/webkitpy/common/watchlist/watchlist.py.
-
-2011-09-27 Tom Zakrajsek <tomz@codeaurora.org>
-
- webkit-patch doesn't like UTF-8 characters in reviewers names
- https://bugs.webkit.org/show_bug.cgi?id=63452
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkit-patch:
-
-2011-09-27 Adam Barth <abarth@webkit.org>
-
- garden-o-matic examine buttons shows both expected and unexpected failures
- https://bugs.webkit.org/show_bug.cgi?id=68918
-
- Reviewed by Dimitri Glazkov.
-
- This was a copy/paste error when I refactored this classes to share
- more code.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
-
-2011-09-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Kaustubh Atrawalkar to the list of contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-27 Mihai Parparita <mihaip@chromium.org>
-
- [Chromium] Fixed layout mode tests break subsequent tests
- https://bugs.webkit.org/show_bug.cgi?id=68923
-
- Reviewed by Adam Barth.
-
- Reset fixed layout mode between tests, so that tests that run after
- platform/chromium/fast/repaint/fixed-layout-360x240.html still have the
- regular 800x600 non-fixed layout.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2011-09-27 David Levin <levin@chromium.org>
-
- watchlist: Add the filename pattern for definitions.
- https://bugs.webkit.org/show_bug.cgi?id=68917
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/filenamepattern.py: Added.
- * Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py: Added.
- * Scripts/webkitpy/common/watchlist/watchlist.py: Added the filename pattern
- for definitions.
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py: Added tests.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Typo fix.
-
-2011-09-27 Adam Barth <abarth@webkit.org>
-
- garden-o-matic results view should sort test and builder names
- https://bugs.webkit.org/show_bug.cgi?id=68488
-
- Reviewed by Andy Estes.
-
- Previously, the test and builder names were displayed in an arbitrary
- order that changed from time to time. That confused one user study
- participant. This patch sorts the lists so that they occur in a
- predictable order.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2011-09-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r96108, r96111, r96113, and r96116.
- http://trac.webkit.org/changeset/96108
- http://trac.webkit.org/changeset/96111
- http://trac.webkit.org/changeset/96113
- http://trac.webkit.org/changeset/96116
- https://bugs.webkit.org/show_bug.cgi?id=68913
-
- Wait for working Qt5 (Requested by ossy on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView):
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::urlChanged):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.h:
- * MiniBrowser/qt/main.cpp:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/locationedit.h:
- * QtTestBrowser/main.cpp:
- * QtTestBrowser/mainwindow.cpp:
- * QtTestBrowser/mainwindow.h:
- * QtTestBrowser/webinspector.h:
- * QtTestBrowser/webpage.cpp:
- * QtTestBrowser/webview.cpp:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::wkView):
- (WTR::WebView::pageRef):
- (WTR::WebView::~WebView):
- (WTR::WebView::WebView):
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::sendEvent):
- (WTR::PlatformWebView::postEvent):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-09-27 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Rename WebKit2 GTK+ API main header as webkit2.h
- https://bugs.webkit.org/show_bug.cgi?id=65178
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c: Include <webkit2/webkit2.h>.
-
-2011-09-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Buildfix after r96108.
-
- Rubber-stamped by Andreas Kling.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-09-27 David Levin <levin@chromium.org>
-
- watchlist: Change watchlistparser.py to be class based.
- https://bugs.webkit.org/show_bug.cgi?id=68869
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
-
-2011-09-27 David Levin <levin@chromium.org>
-
- watchlist: Break out the diff boilerplate to allow for re-use.
- https://bugs.webkit.org/show_bug.cgi?id=68871
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
- Break out the diff into a new file.
- * Scripts/webkitpy/common/checkout/diff_test_data.py: Added.
-
-2011-09-27 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: UI performance: introduce heap size tracking stats.
- https://bugs.webkit.org/show_bug.cgi?id=68901
-
- It is interesting how much the heap memory is used by Inspector in order of running the test.
-
- Reviewed by Yury Semikhatsky.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::showDevTools):
- (TestShell::closeDevTools):
-
-2011-09-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix build against Qt5 after refactor of widgets out of QtGUi
-
- QWidget and friends now live in the QtWidgets library. We update
- includes in implementation files and private headers to us the
- non-module-prefixed path, and leave the lookup for the include
- path. For public headers we have to ifdef the includes as the
- user might now have the modules we need in his QT config.
-
- Finally, QSGCanvas is no longer a QWidget but a QWindow, so we
- have to update our code and use windowHandle() for setting the
- parent relationships.
-
- https://bugs.webkit.org/show_bug.cgi?id=68687
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * MiniBrowser/qt/BrowserView.cpp:
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.h:
- * MiniBrowser/qt/main.cpp:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/locationedit.h:
- * QtTestBrowser/main.cpp:
- * QtTestBrowser/mainwindow.cpp:
- * QtTestBrowser/mainwindow.h:
- * QtTestBrowser/webinspector.h:
- * QtTestBrowser/webpage.cpp:
- * QtTestBrowser/webview.cpp:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
-
-2011-09-26 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt][WK2] Add support for hover API in Qt WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=68369
-
- Reviewed by Andreas Kling.
-
- Change the statusbar to show the link URL when hovering links in
- MiniBrowser using QDesktopWebView.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::onLinkHovered):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-09-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic's commit data on summary page should not crowd itself or twitch when hovered over.
- https://bugs.webkit.org/show_bug.cgi?id=68864
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js: Updated mocks to work.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Changed the structure of commit data to keep commit revision apart from the rest of details.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Adjusted unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css: Made things look shiny.
-
-2011-09-26 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] One more unreviewed buildfix after r96005.
-
- * WebKitTestRunner/qt/TestInvocationQt.cpp: Missing include added.
-
-2011-09-26 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Unreviewed buildfix after r96005.
-
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-09-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should be pretty in Open Sans.
- https://bugs.webkit.org/show_bug.cgi?id=68845
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css: Tweaked to bring back teh fonts.
-
-2011-09-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should not say "Just now" when it doesn't actually know when an event happened.
- https://bugs.webkit.org/show_bug.cgi?id=68841
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js: Changed ui.RelativeTime to not initialize with current time.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Adjusted unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js: Ditto.
-
-2011-09-26 David Levin <levin@chromium.org>
-
- watchlist: Add parsing for definition section.
- https://bugs.webkit.org/show_bug.cgi?id=68850
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/watchlist.py:
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
-
-2011-09-26 Simon Fraser <simon.fraser@apple.com>
-
- Fix WebKitTestRunner builds for Cairo, Windows and Qt.
-
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/win/TestInvocationWin.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-09-26 Simon Fraser <simon.fraser@apple.com>
-
- Repaint tests don't work in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=68453
-
- Reviewed by Sam Weinig.
-
- Convert DumpRenderTree to use use the repaint rects
- exposed via WebKit API when generating the repaint test
- overlay.
-
- Fix WebKitTestRunner to work with repaint tests, again
- using the repaint rects exposed from WK2.
-
- In both cases, layoutTestController.display() now just
- forces a display of the web view, and turns on repaint
- rect tracking on the main FrameView.
-
- Later, when pixel results are requested, the alpha overlay
- that shows the repaint rects is generated using the list
- of rects supplied by WebCore.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (resetWebViewToConsistentStateBeforeTesting):
- (displayWebView):
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (paintRepaintRectOverlay):
- (createBitmapContextFromWebView):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::setRepaintRects):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
- (WTR::InjectedBundlePage::dump):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::display):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::paintRepaintRectOverlay):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-09-26 Nayan Kumar K <nayankk@motorola.com>
-
- Get hover'ed element URL from HitTest.
-
- mouseDidMoveOverElement now gets the hover'ed element link using
- WKHitTestResult API's.
- https://bugs.webkit.org/show_bug.cgi?id=68426
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (mouseDidMoveOverElement):
-
-2011-09-26 David Levin <levin@chromium.org>
-
- Add skeleton parsing for a WatchList.
- https://bugs.webkit.org/show_bug.cgi?id=68823
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/watchlist/watchlistparser.py: Added.
- Parses the top level watch list sections -- none are defined yet -- and
- throws an exception if an invalid one is listed.
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py: Added.
- Verify the exception for an invalid section in a watch list.
- * Scripts/webkitpy/common/watchlist/watchlist.py: Added.
-
-2011-09-26 Adam Roben <aroben@apple.com>
-
- Clean up code imported from WebKitAPITest
-
- Fixes <http://webkit.org/b/68799> WebViewDestruction tests and related code don't match
- TestWebKitAPI conventions
-
- Reviewed by David Levin.
-
- * TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp: Changed tests to use gtest macros
- and to share functionality via test fixtures. Prefixed Win32 API calls with ::. Updated
- namespace name.
-
- (TestWebKitAPI::WebViewDestruction::SetUp):
- (TestWebKitAPI::WebViewDestruction::webViewCount):
- (TestWebKitAPI::WebViewDestructionWithHostWindow::SetUp):
- (TestWebKitAPI::WebViewDestruction::runMessagePump):
- (TestWebKitAPI::WebViewDestruction::TearDown):
- (TestWebKitAPI::WebViewDestructionWithHostWindow::TearDown):
- Moved functionality from free functions into these new test fixtures.
-
- * TestWebKitAPI/win/HostWindow.cpp:
- * TestWebKitAPI/win/HostWindow.h:
- Prefixed Win32 API calls with ::. Updated namespace name.
-
-2011-09-23 Adam Roben <aroben@apple.com>
-
- Merge WebKitAPITest into TestWebKitAPI
-
- This also means that our formerly-WebKitAPITest tests will be run on the bots!
-
- I made the minimal changes necessary to get the tests to run in TestWebKitAPI. I'll make
- them more idiomatic in a separate pass.
-
- Fixes <http://webkit.org/b/66560> WebKitAPITest and TestWebKitAPI have duplicate
- functionality (and names!)
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp: Renamed from Tools/WebKitAPITest/tests/WebViewDestruction.cpp.
- * TestWebKitAPI/win/HostWindow.cpp: Renamed from Tools/WebKitAPITest/HostWindow.cpp.
- * TestWebKitAPI/win/HostWindow.h: Renamed from Tools/WebKitAPITest/HostWindow.h.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added new files.
-
- * TestWebKitAPI/win/main.cpp:
- (main): Added a call to ::OleInitialize to make WebKit1 work. This came from WebKitAPITest.
-
- * WebKitAPITest: Removed this directory and its contents.
-
-2011-09-23 Adam Roben <aroben@apple.com>
-
- Remove two failing WebKitAPITest tests
-
- The failures are covered by <http://webkit.org/b/33162> and <http://webkit.org/b/32868>.
-
- Reviewed by Anders Carlsson.
-
- * WebKitAPITest/tests/WebViewDestruction.cpp: Removed the NoCloseOrDestroyViewWindow and
- MainFrameAfterClose tests.
-
-2011-09-25 Adam Barth <abarth@webkit.org>
-
- Finish removing PLATFORM(BREWMP) by removing associated code
- https://bugs.webkit.org/show_bug.cgi?id=68779
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitpy/common/config/build.py:
- * waf/build/settings.py:
-
-2011-09-21 Ai Makabi <makabi@google.com>
-
- Provides a simple LRU cache class in Python.
-
- https://bugs.webkit.org/show_bug.cgi?id=67823
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/common/lru_cache.py:
- * Scripts/webkitpy/common/lru_cache_unittest.py:
-
-2011-09-25 Adam Barth <abarth@webkit.org>
-
- Remove PLATFORM(HAIKU) and associated code
- https://bugs.webkit.org/show_bug.cgi?id=68774
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitpy/common/config/build.py:
- * waf/build/settings.py:
-
-2011-09-24 Adam Barth <abarth@webkit.org>
-
- Always enable ENABLE(OFFLINE_WEB_APPLICATIONS)
- https://bugs.webkit.org/show_bug.cgi?id=68767
-
- Reviewed by Eric Seidel.
-
- * Scripts/build-webkit:
-
-2011-09-24 Adam Barth <abarth@webkit.org>
-
- Remove ENABLE(WCSS) and associated code
- https://bugs.webkit.org/show_bug.cgi?id=68759
-
- Reviewed by Darin Adler.
-
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitperl/features.pm:
- (hasFeature):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-09-24 Alejandro G. Castro <alex@igalia.com>
-
- Fixed GTK compilation after r95878, the operator== was defined
- twice when USE_WEBPROCESS_EVENT_SIMULATION is defined.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
-
-2011-09-23 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [DRT] Include the right config file for EFL's DRT.
- https://bugs.webkit.org/show_bug.cgi?id=67042
-
- Reviewed by Martin Robinson.
-
- Ports which use CMake as their buildsystem (such as the EFL one) also
- have config.h files, but they are named differently, so include the
- right one depending on the buildsystem being used.
-
- * DumpRenderTree/config.h:
-
-2011-09-23 Adam Klein <adamk@chromium.org>
-
- Add ENABLE_MUTATION_OBSERVERS feature flag
- https://bugs.webkit.org/show_bug.cgi?id=68732
-
- Reviewed by Ojan Vafai.
-
- This flag will guard an implementation of the "Mutation Observers" proposed in
- http://lists.w3.org/Archives/Public/public-webapps/2011JulSep/1622.html
-
- * Scripts/build-webkit:
-
-2011-09-23 Chang Shu <cshu@webkit.org>
-
- [WK2] [Qt] Implement MouseDown/MouseUp/MouseMoveTo functions for WebKit2 EventSender
- https://bugs.webkit.org/show_bug.cgi?id=68556
-
- Implement the MouseDown/MouseUp/MouseMoveTo functions on Qt platform.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/EventSenderProxy.h:
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::leapForward):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::getMouseButton):
- (WTR::getModifiers):
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::createGraphicsSceneMouseEvent):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
- (WTR::EventSenderProxy::leapForward):
- (WTR::EventSenderProxy::sendOrQueueEvent):
- (WTR::EventSenderProxy::replaySavedEvents):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::postEvent):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-09-23 Lei Zhang <thestig@chromium.org>
-
- [chromium] Make the layout test script's kill timeout proportional to --time-out-ms
- https://bugs.webkit.org/show_bug.cgi?id=68026
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-09-23 Elliot Poger <epoger@google.com>
-
- update layout_tests to account for new default of use_skia=1
- https://bugs.webkit.org/show_bug.cgi?id=68698
-
- Rolls Source/WebKit/chromium/DEPS to pick up new default use_skia=1
- from http://src.chromium.org/viewvc/chrome?view=rev&revision=102532
- (Chromium-on-Mac now uses the Skia graphics library instead of
- Core Graphics).
-
- Also updates layout_test code to work with that change.
-
- Reviewed by Mihai Parparita.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
-
-2011-09-23 Mark Rowe <mrowe@apple.com>
-
- Fix the build.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp: Define operator<<(std::ostream&, const WTF::String&) inside
- the WTF namespace.
-
-2011-09-22 Dirk Pranke <dpranke@chromium.org>
-
- enable NRWT for run-webkit-tests on Lion
- https://bugs.webkit.org/show_bug.cgi?id=68673
-
- Reviewed by Eric Seidel.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-09-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Add unit test for existing StringBuilder
- https://bugs.webkit.org/show_bug.cgi?id=67080
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp: Added.
- (operator<<):
- (TestWebKitAPI::expectBuilderContent):
- (TestWebKitAPI::expectEmpty):
- (TestWebKitAPI::TEST):
-
-2011-09-22 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Use ewk_view to navigate in history instead of ewk_history.
- https://bugs.webkit.org/show_bug.cgi?id=68455
-
- Reviewed by Antonio Gomes.
-
- BackForwardItem::invoke() was using ewk_history functions to navigate
- in history; however, this will only call WebCore::BackForwardListImpl
- and not move between pages at all. We now call ewk_view_navigate and
- its siblings to make sure the navigation actually happens.
-
- This should make tests like fast/dom/navigation-type-back-forward.html
- stop timing out.
-
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
- (BackForwardItem::invoke):
-
-2011-09-22 Dean Jackson <dino@apple.com>
-
- Add ENABLE_CSS_FILTERS
- https://bugs.webkit.org/show_bug.cgi?id=68652
-
- Reviewed by Simon Fraser.
-
- * Scripts/build-webkit:
-
-2011-09-22 Anders Carlsson <andersca@apple.com>
-
- EventSenderProxy::mouseUp should call -[WKView mouseUp:] instead of -[WKView mouseDown:]
- https://bugs.webkit.org/show_bug.cgi?id=68660
-
- Reviewed by Adam Barth.
-
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::mouseUp):
-
-2011-09-22 Adam Roben <aroben@apple.com>
-
- Remove FindSafari
-
- It isn't used or built anymore.
-
- Fixes <http://webkit.org/b/68628>
-
- Reviewed by Darin Adler.
-
- * FindSafari: Removed this directory and its contents.
-
-2011-09-22 Adam Roben <aroben@apple.com>
-
- Remove FindSafari from all our .sln files
-
- It isn't used anymore, so there's no point in building it.
-
- Part of <http://webkit.org/b/68628> Remove FindSafari
-
- Reviewed by Steve Falkenburg.
-
- * DumpRenderTree/DumpRenderTree.sln:
- * WebKitTestRunner/WebKitTestRunner.sln:
-
-2011-09-22 Adam Roben <aroben@apple.com>
-
- Remove all uses of FindSafari
-
- It isn't really needed anymore.
-
- Fixes <http://webkit.org/b/68626>.
-
- Reviewed by Darin Adler.
-
- * Scripts/old-run-webkit-tests: Moved read/writeRegistryString from here to webkitdirs.pm.
-
- * Scripts/run-webkit-nightly.cmd: Removed. This used to be used to launch nightly builds of
- WebKit, but now we use WebKit.exe for that.
-
- * Scripts/webkitdirs.pm:
- (installedSafariPath): Changed to use readRegistryString instead of invoking FindSafari to
- do the same thing.
-
- (readRegistryString):
- (writeRegistryString):
- Moved here from old-run-webkit-tests.
-
-2011-09-22 Adam Roben <aroben@apple.com>
-
- Use the "direct object" form of system() to run WebKit.exe
-
- This prevents the shell from parsing (and possibly splitting, if it contains spaces) the
- path to WebKit.exe.
-
- Fixes <http://webkit.org/b/68623> run-safari doesn't work if there are spaces in the path to
- %WEBKITOUTPUTDIR%
-
- Reviewed by Steve Falkenburg.
-
- * Scripts/webkitdirs.pm:
- (runSafari):
-
-2011-09-22 Adam Roben <aroben@apple.com>
-
- Quote the WEBKITLIBRARIESDIR path before passing it to the shell/cygpath
-
- Fixes <http://webkit.org/b/68621> build-webkit goes totally haywire on Windows if there are
- spaces in the path to the WebKit source tree
-
- Reviewed by John Sullivan.
-
- * Scripts/webkitdirs.pm:
- (setupCygwinEnv):
-
-2011-09-22 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use same DPI for application font as rest of app in DRT and WTR
-
- QApplication will initialize the default application font based
- on the application DPI at construction time, but we then override
- the application DPI using QX11Info (hard-coding it to 96 for
- consistency). This hard-coding is not reflected in the application
- font, so we explicitly have update the font ourselves.
-
- The 6 test results that are updated were originally produced with
- a DPI of 75, as this is the default fallback DPI when a QFont is
- constructed before QApplication. This was wrong, and the results
- are updated to match a DPI of 96.
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/main.cpp:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2011-09-21 Anna Cavender <annacc@chromium.org>
-
- Update committers.py with a new contributor contact
- https://bugs.webkit.org/show_bug.cgi?id=68565
-
- Reviewed by Eric Carlson.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-21 Chang Shu <cshu@webkit.org>
-
- [WK2] [Mac] Implement a more-complete MouseDown/MouseUp/MouseMoveTo functions for WebKit2 EventSender
- https://bugs.webkit.org/show_bug.cgi?id=68108
-
- This patch implements the event sender mouse events through WebKit2 UIProcess which is
- closer to the real simulation than a WebProcess-only approach. The patch only supports Mac
- platform as the first step so the existing code is still kept for other platforms.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::leapForward):
- (WTR::EventSenderProxy::currentEventTime):
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::EventSendingController):
- (WTR::EventSendingController::mouseDown):
- (WTR::EventSendingController::mouseUp):
- (WTR::EventSendingController::mouseMoveTo):
- (WTR::EventSendingController::leapForward):
- (WTR::EventSendingController::keyDown):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::eventTypeForMouseButtonAndAction):
- (WTR::operator==):
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
- (WTR::EventSenderProxy::keyDown):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::keyDown):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
-
-2011-09-21 Dan Bernstein <mitz@apple.com>
-
- Tools part of: Prevent the WebKit frameworks from defining inappropriately-named Objective-C classes
- https://bugs.webkit.org/show_bug.cgi?id=68451
-
- Reviewed by Darin Adler.
-
- * Scripts/check-for-inappropriate-objc-class-names: Added. Checks for
- Objective-C classes with names not having one of a list of prefixes
- passed on the command line.
-
-2011-09-21 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Ensure TestWebKitAPI works on mac, win, chromium-mac and chromium-linux
- https://bugs.webkit.org/show_bug.cgi?id=68206
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir): add support for chromium-mac
- * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
- * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
-
-2011-09-21 Adam Barth <abarth@webkit.org>
-
- garden-o-matic command should explain that it is starting a local server
- https://bugs.webkit.org/show_bug.cgi?id=68486
-
- Reviewed by Dimitri Glazkov.
-
- In the user study, both participants didn't understand why the
- garden-o-matic command appeared to hang. This patch adds an
- explaination of what's going on. It also adds a confirmation prompt
- before launching the browser to give the user a chance to read the
- text. If that's too much of a speed bump, we can iterate.
-
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
-
-2011-09-21 Chang Shu <cshu@webkit.org>
-
- [Qt] Implement KeyDown function for WebKit2 EventSender.
- https://bugs.webkit.org/show_bug.cgi?id=56485
-
- Implement the KeyDown function on Qt platform.
-
- Reviewed by Andreas Kling.
-
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp: Added.
- (WTR::getModifiers):
- (WTR::EventSenderProxy::keyDown):
- (buildModifierFlags):
- (EventSenderProxy::keyDown):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::sendEvent):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-09-20 Adam Barth <abarth@webkit.org>
-
- garden-o-matic unit test fail because Safari 5.1 doesn't enumerate dictionaries in the same order as V8
- https://bugs.webkit.org/show_bug.cgi?id=68496
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a bunch of sorting to make sure things happen in a
- predictable order in both JavaScriptCore and V8. We've talked before
- about whether these two JavaScript engines should enumerate
- dictionaries in the same order, but the consensus has been that they
- shouldn't. Personally, I disagree with that consensus, but such is life.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2011-09-20 Adam Barth <abarth@webkit.org>
-
- garden-o-matic doesn't work in Safari 5.1 because Safari 5.1 lacks Function.prototype.bind
- https://bugs.webkit.org/show_bug.cgi?id=68495
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds an implementation of Function.prototype.bind if the browser lacks one.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
-
-2011-09-20 Eric Seidel <eric@webkit.org>
-
- [NRWT] REGRESSION: Local loader tests are failing on machines that lost /tmp/LayoutTests symlink
- https://bugs.webkit.org/show_bug.cgi?id=65781
-
- Reviewed by Ryosuke Niwa.
-
- Instead of making NRWT create the symlink, I made DumpRenderTree smart enough
- to resolve the passed in url relative to the absolute url for the test.
- For http tests, since the test url is an http url, we can't resolve relative
- to the test path, and thus use a new LOCAL_RESOURCE_ROOT environment variable
- for resolving.
-
- I believe this is a better approach than the on used in the Qt and Chromium DRT's
- (which resolves the path relative to the built location of the DRT executable)
- and we should move this new code into a shared location in a follow-up patch.
-
- It turns out that there was a second use for pathToLocalResource, used by one
- test (http/tests/plugins/post-url-file.html) used for getting a path to /tmp.
- To support this test I made the new pathToLocalResource smart enough to map
- /tmp to DUMPRENDERTREE_TEMP (which is already defined for all ports).
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pathToLocalResource):
- * Scripts/webkitpy/layout_tests/port/webkit.py: Set LOCAL_RESOURCE_ROOT for use by DRT.
-
-2011-09-20 Tom Zakrajsek <tomz@codeaurora.org>
-
- Need to specify a django version, instead of using default
- https://bugs.webkit.org/show_bug.cgi?id=68398
-
- Reviewed by Eric Seidel.
-
- * QueueStatusServer/__init__.py:
- * QueueStatusServer/main.py:
-
-2011-09-20 Tom Zakrajsek <tomz@codeaurora.org>
-
- Update committers.py with a few more contributor contacts
- https://bugs.webkit.org/show_bug.cgi?id=68487
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-20 Leandro Pereira <leandro@profusion.mobi>
-
- Fix webkitpy unit tests after 95547 and 95549
- https://bugs.webkit.org/show_bug.cgi?id=68483
-
- Reviewed by Adam Barth.
-
- Fix tests for ChangeLog.touched_files() and ChangeLog.parse_entries_from_file().
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: While testing
- parse_entries_from_file(), use StringIO and entry.reviewer_text().
- While testing parse_latest_entry_from_file(), expect the correct
- touched_files() list.
-
-2011-09-20 Adam Barth <abarth@webkit.org>
-
- garden-o-matic makes it hard to compare images when scroll bars appear
- https://bugs.webkit.org/show_bug.cgi?id=68482
-
- Reviewed by Eric Seidel.
-
- Because we autoscale image width, the images rescale if we overflow
- vertically and get a scrollbar. That makes it hard to compare two sets
- of images. This patch reserves space for the scrollbar so we won't
- have the layout change.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css:
-
-2011-09-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r95565.
- http://trac.webkit.org/changeset/95565
- https://bugs.webkit.org/show_bug.cgi?id=68470
-
- Broke builds (Requested by andersca on #webkit).
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (mouseDidMoveOverElement):
-
-2011-09-20 Nayan Kumar K <nayankk@motorola.com>
-
- Get hover'ed element URL from HitTest.
-
- mouseDidMoveOverElement now gets the hover'ed element link using
- WKHitTestResult API's.
- https://bugs.webkit.org/show_bug.cgi?id=68426
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (mouseDidMoveOverElement):
-
-2011-09-20 Leandro Pereira <leandro@profusion.mobi>
-
- Changelog class should have a method to return all entries
- https://bugs.webkit.org/show_bug.cgi?id=68399
-
- Implement ChangeLog.parse_entries_from_file(). This method returns a generator
- of ChangeLogEntry objects, ordered from the latest to the oldest entry in the file.
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/checkout/changelog.py: Copy parse_latest_entry_from_file()
- and adapt it to become a generator.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: Add test case.
-
-2011-09-20 Jarred Nicholls <jarred@sencha.com>
-
- [Qt] Permit qrc resources to load in QWebSettings::setUserStyleSheetUrl()
- https://bugs.webkit.org/show_bug.cgi?id=51159
-
- Permit any URL with a local scheme to set a user style sheet. Allow qrc
- resource URLs as arguments to QWebSettings::setUserStyleSheetUrl().
-
- Add DRT/WKTR qrc resource to test loading user style sheets from a qrc URL.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTree.qrc: Added.
- * DumpRenderTree/qt/resources/user.css: Added.
- (body):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.qrc: Added.
- * WebKitTestRunner/qt/resources/user.css: Added.
- (body):
-
-2011-09-20 Leandro Pereira <leandro@profusion.mobi>
-
- ChangeLogEntry class should contain a list of touched files
- https://bugs.webkit.org/show_bug.cgi?id=68115
-
- Reviewed by Eric Seidel.
-
- Add method to return the list of files touched in a ChangeLog entry.
-
- * Scripts/webkitpy/common/checkout/changelog.py: Add
- touched_files_regexp and touched_files() method.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: Implement
- unit tests for touched_files() method.
-
-2011-09-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r95526 and r95541.
- http://trac.webkit.org/changeset/95526
- http://trac.webkit.org/changeset/95541
- https://bugs.webkit.org/show_bug.cgi?id=68443
-
- It broke 6 tests (Requested by ossy_ on #webkit).
-
- * DumpRenderTree/qt/main.cpp:
- (main):
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
-
-2011-09-20 Tom Zakrajsek <tomz@codeaurora.org>
-
- Fix patch and bug numbering in the mocktool simulation code
- https://bugs.webkit.org/show_bug.cgi?id=68374
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
-
-2011-09-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't override default QApplication font for DRT and WTR
-
- Revision 95526 moved the relevant code below the QApplication
- constructor, to fix a potential crash, and that made the code
- take effect, breaking 6 tests.
-
- We should rely on the QWebSettings to set default fonts, and
- this QApplication::setFont() is a relic from when we didn't
- have that option, so we remove the code.
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/main.cpp:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2011-09-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- WebKitTestRunner: Provide usage if run without arguments
-
- If WTR is run without either one or more filenames, or
- a '-' to indicate server mode, we don't need to start
- up the test machinery. Doing so might actually crash,
- as we'll exit the application immedeatly after anyways.
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2011-09-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't use QFont before initializing QApplication
-
- Could potentially result in crash.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2011-09-19 Adam Barth <abarth@webkit.org>
-
- Always enable ENABLE(EVENTSOURCE)
- https://bugs.webkit.org/show_bug.cgi?id=68414
-
- Reviewed by Eric Seidel.
-
- * Scripts/build-webkit:
-
-2011-09-19 David Levin <levin@chromium.org>
-
- Sheriffbot rollout should be more intuitive.
- https://bugs.webkit.org/show_bug.cgi?id=68415
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/irc_command.py: Add support for revert and comma separated args.
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py: Add parsing tests for comma separated args
- and a few others cases.
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: Verify that revert works.
-
-2011-09-19 David Levin <levin@chromium.org>
-
- check-webkit-style generates bogus warning for StructuredExceptionHandlerSupressor.h
- https://bugs.webkit.org/show_bug.cgi?id=68391
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Skip __asm lines when doing style checks on a line.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added a test for this.
-
-2011-09-19 Alexis Menard <alexis.menard@openbossa.org>
-
- Style checker should not check public Qt WK2 API for parameter_name.
- https://bugs.webkit.org/show_bug.cgi?id=68359
-
- Reviewed by Andreas Kling.
-
- The public Qt WK2 APIs have different rules than WebKit for parameters of methods in h files.
- Add an exception in the style checker to disable the check. Also added the test for it.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-09-19 Leandro Pereira <leandro@profusion.mobi>
-
- GTK DRT leaks memory while comparing history items
- https://bugs.webkit.org/show_bug.cgi?id=68086
-
- Reviewed by Martin Robinson.
-
- webkit_web_history_item_get_target() returns a g_strdup()'d string,
- so memory must be freed before compareHistoryItems() returns.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (compareHistoryItems): Use GOwnPtr to manage memory automatically.
-
-2011-09-19 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- Buildbot marks a nrwt bot red when tests are missing results
- https://bugs.webkit.org/show_bug.cgi?id=64812
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-09-19 Jessie Berlin <jberlin@apple.com>
-
- Sites that use history pushState or replaceState are recorded in history in Private Browsing
- mode.
- https://bugs.webkit.org/show_bug.cgi?id=68208
-
- Reviewed by Brady Eidson.
-
- Add a test that the WKContextDidNavigateWithNavigationDataCallback (which is invoked by
- updateGlobalHistory) is not called in Private Browsing when the page does history.pushState.
-
- * TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp: Added.
- (TestWebKitAPI::didNavigateWithNavigationData):
- This is a context history client callback, so it should not be called when in Private
- Browsing. Add a call to FAIL().
- (TestWebKitAPI::didSameDocumentNavigationForFrame):
- This is a page load client callback that happens after the didNavigateWithNavigationData
- callback. End the test.
- (TestWebKitAPI::TEST):
- Enable Private Browsing and load a page that uses history.pushState.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add PrivateBrowsingPushStateNoHistoryCallback.cpp and push-state.html.
- * TestWebKitAPI/Tests/WebKit2/push-state.html: Added.
- Ditto.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Ditto.
- * TestWebKitAPI/win/copy-resources.cmd:
- Ditto.
-
-2011-09-16 Elliot Poger <epoger@google.com>
-
- add non-CG Webkit-Mac builds to flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=68265
-
- Reviewed by Adam Barth.
-
- As Chromium-on-Mac approaches the switchover from Core Graphics to
- Skia, we need to add the Skia version to the flakiness dashboard.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-09-16 Jochen Eisinger <jochen@chromium.org>
-
- Rename FrameLoaderClient::allowImages to FrameLoaderClient::allowImage and include the image URL as parameter
- https://bugs.webkit.org/show_bug.cgi?id=68071
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebPermissions.cpp:
- (WebPermissions::allowImage):
- * DumpRenderTree/chromium/WebPermissions.h:
-
-2011-09-16 Tom Zakrajsek <tomz@codeaurora.org>
-
- update-webkit-chromium should retry the gclient call if it fails once
- https://bugs.webkit.org/show_bug.cgi?id=68252
-
- Reviewed by Adam Barth.
-
- * Scripts/update-webkit-chromium:
-
-2011-09-16 Rob Buis <rbuis@rim.com>
-
- Add Eli's rim address and change the nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-16 Anders Carlsson <andersca@apple.com>
-
- Add back the WKHitTestResultRef parameter to mouseDidMoveOverElement in an ABI preserving way
- https://bugs.webkit.org/show_bug.cgi?id=68269
-
- Reviewed by Geoffrey Garen.
-
- Update client function signatures.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowUIClientInit):
- * MiniBrowser/mac/BrowserWindowController.m:
- (mouseDidMoveOverElement):
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-09-16 Anders Carlsson <andersca@apple.com>
-
- Temporarily remove the WKHitTestResultRef parameter to avoid breaking the WK2 ABI/API
- https://bugs.webkit.org/show_bug.cgi?id=68266
-
- Reviewed by John Sullivan.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (mouseDidMoveOverElement):
-
-2011-09-16 Vincent Scheib <scheib@chromium.org>
-
- Add Vincent Scheib to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r95285.
- http://trac.webkit.org/changeset/95285
- https://bugs.webkit.org/show_bug.cgi?id=68247
-
- It broke a webkitpy test (Requested by ossy on #webkit).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-09-16 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- Buildbot marks a nrwt bot red when tests are missing results
- https://bugs.webkit.org/show_bug.cgi?id=64812
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-09-16 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Disable WebKit2 by default in configure.ac, but enable it with build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=68178
-
- Reviewed by Xan Lopez.
-
- Add a work-around to enable WebKit2 when using build-webkit.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2011-09-15 James Robinson <jamesr@chromium.org>
-
- Add Antoine Labour and Shawn Singh to the contributors-but-not-committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-15 Tom Zakrajsek <tomz@codeaurora.org>
-
- UpdateChangeLogsWithReviewer should be able to determine reviewer of latest reviewed patch in a bug
- https://bugs.webkit.org/show_bug.cgi?id=68003
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
-
-2011-09-15 Tom Zakrajsek <tomz@codeaurora.org>
-
- Python version check is confusing in test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=68004
-
- Reviewed by Adam Barth.
-
- * Scripts/test-webkitpy:
-
-2011-09-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- webkit-patch should be able to find users and add them to bugzilla groups
- https://bugs.webkit.org/show_bug.cgi?id=63351
-
- These are both very basic commands. But it's now possible to find
- all users matching a regexp, as well as add all users matching a regexp
- to a set of groups.
-
- bugzilla.py already knew how to find users (for validate-committer-lists)
- but now it has the ability to modify the user records.
-
- I split some of the logic out into a new EditUsersParser class
- to try and reduce the amount of code in Bugzilla/BugzillaQueries.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/adduserstogroups.py: Added.
- * Scripts/webkitpy/tool/commands/findusers.py: Added.
-
-2011-09-15 Eric Seidel <eric@webkit.org>
-
- Remove ENABLE(SVG_AS_IMAGE) since all major ports have it on by default
- https://bugs.webkit.org/show_bug.cgi?id=68182
-
- Reviewed by Adam Barth.
-
- * Scripts/build-webkit:
- * waf/build/settings.py:
-
-2011-09-15 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Make contributor email look-up case-insensitive.
-
- validate-committer-list was incorrectly reporting that "chang.shu@nokia.com"
- was missing from committers.py due to case sensitivity.
-
- This also includes a test expectations update to committers_unittest.py
- after my previous change.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-09-15 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Updated this based on webkit-patch suggest-nominations and validate-committer-list output.
-
- Add a bunch of email aliases to committers.py for regular contributors
- who are committing using other email addresses than they have listed in the file.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-15 Eric Seidel <eric@webkit.org>
-
- Remove ENABLE_SVG_ANIMATION as all major ports have it on by default
- https://bugs.webkit.org/show_bug.cgi?id=68022
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/build-webkit:
- * waf/build/settings.py:
-
-2011-09-15 Anders Carlsson <andersca@apple.com>
-
- Fix Mac build by including config.h where needed.
-
- * TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm:
- * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp:
- * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp:
- * TestWebKitAPI/Tests/WebKit2/WebArchive.cpp:
- * TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp:
- * TestWebKitAPI/Tests/mac/DOMRangeOfString.mm:
- * TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm:
- * TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm:
- * TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm:
- * TestWebKitAPI/mac/InstanceMethodSwizzler.mm:
- * TestWebKitAPI/mac/JavaScriptTestMac.mm:
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- * TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m:
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
- * TestWebKitAPI/mac/main.mm:
-
-2011-09-15 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Let TestWebKitAPI work for chromium
- https://bugs.webkit.org/show_bug.cgi?id=67756
-
- Reviewed by Sam Weinig.
-
- * Scripts/build-api-tests:
- * Scripts/run-api-tests:
- (isSupportedPlatform):
- (runTest):
- (populateTests):
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
- * TestWebKitAPI/Configurations/InjectedBundle.xcconfig:
- * TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/InjectedBundleController.cpp:
- * TestWebKitAPI/InjectedBundleMain.cpp:
- * TestWebKitAPI/JavaScriptTest.cpp:
- * TestWebKitAPI/PlatformUtilities.cpp:
- * TestWebKitAPI/TestWebKitAPI.gypi: Added.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/TestWebKitAPIPrefix.h: Removed.
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp:
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- * TestWebKitAPI/Tests/WTF/VectorReverse.cpp:
- * TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp:
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/CookieManager.cpp:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp:
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/Find.cpp:
- * TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp:
- * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp:
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp:
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp:
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp:
- * TestWebKitAPI/TestsController.cpp:
- * TestWebKitAPI/config.h: Copied from TestWebKitAPI/TestWebKitAPIPrefix.h.
- * TestWebKitAPI/win/InjectedBundleControllerWin.cpp:
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/main.cpp:
-
-2011-09-15 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] extract normalization of LayoutTests URLs to a method of TestShell
- https://bugs.webkit.org/show_bug.cgi?id=68145
-
- This will allow for other classes in DumpRenderTree to reuse this functionality
-
- Reviewed by David Levin.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (normalizeLayoutTestURLInternal):
- (dumpHistoryItem):
- (TestShell::normalizeLayoutTestURL):
- * DumpRenderTree/chromium/TestShell.h:
-
-2011-09-14 Ada Chan <adachan@apple.com>
-
- Add test for WKBundleFrameCopyWebArchive().
- https://bugs.webkit.org/show_bug.cgi?id=67857
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/Tests/WebKit2/WebArchive.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Do some basic sanity checks to make sure
- the returned data is a valid webarchive.
- (TestWebKitAPI::setInjectedBundleClient):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST): Load simple.html in a WebView. Wait for it to finish loading, and then ask the
- injected bundle for the webarchive and check the returned webarchive.
- * TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp: Added.
- (TestWebKitAPI::WebArchiveTest::WebArchiveTest):
- (TestWebKitAPI::WebArchiveTest::didReceiveMessage): Handle the "GetWebArchive" message and return
- the web archive.
-
- Add files to project.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Also let Visual Studio reorder a file.
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2011-09-14 Ryosuke Niwa <rniwa@webkit.org>
-
- committers.py should support multiple IRC nicknames
- https://bugs.webkit.org/show_bug.cgi?id=68110
-
- Reviewed by Eric Seidel.
-
- Add multiple IRC nickname support to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
-
-2011-09-14 Jon Lee <jonlee@apple.com>
-
- Implement globalFlag for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=68033
- <rdar://problem/10119204>
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Porting globalFlag from DRT
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): initialize m_globalFlag to false
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: add m_globalFlag
- (WTR::LayoutTestController::globalFlag): simple getter
- (WTR::LayoutTestController::setGlobalFlag): simple setter
-
-2011-09-13 Eric Seidel <eric@webkit.org>
-
- Remove ENABLE_SVG_USE as <use> is required by HTML5
- https://bugs.webkit.org/show_bug.cgi?id=68019
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/build-webkit:
- * waf/build/settings.py:
-
-2011-09-14 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Jan Erik Hanssen (added in my r95078) from the list for now
- since I can't confirm acceptable his committership.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-14 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Remove obsolete WebViewClient methods from DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=68066
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- committers.py is missing some contributors
- https://bugs.webkit.org/show_bug.cgi?id=68059
-
- Reviewed by Adam Barth.
-
- Add David Barr, Jan Erik Hanssen, and Kim Grönholm.
-
- Also add nicks of Alejandro G. Castro, Collin Jackson, and Matt Lilek.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix webkit python test after r95061.
-
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-09-13 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Add myself as a contributor. No review needed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-13 Adam Barth <abarth@webkit.org>
-
- garden-o-matic has unfriendly error messages when the local server is not available
- https://bugs.webkit.org/show_bug.cgi?id=68042
-
- Reviewed by Dimitri Glazkov.
-
- This patch moves us from using alert to showing the error inline in the
- progress dialog.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
-
-2011-09-13 Adam Barth <abarth@webkit.org>
-
- FailureGrid in garden-o-matic should link to the builder's waterfall page
- https://bugs.webkit.org/show_bug.cgi?id=68036
-
- Reviewed by Dimitri Glazkov.
-
- One of the users in the user study thought the configurations names in
- the failure grid would link to the underlying bots. That makes sense,
- so this patch adds the behavior.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
-
-2011-09-13 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to mark failures as expected
- https://bugs.webkit.org/show_bug.cgi?id=68027
-
- Reviewed by Dimitri Glazkov.
-
- All the back-end infrastructure exists for this operation. This patch
- just adds some UI to the front-end and wires that UI up to the back
- end. This exact UI will likely need some more polish, but this should
- be a reasonable first cut.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2011-09-13 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should tell you about the progress of your rebaseline
- https://bugs.webkit.org/show_bug.cgi?id=67967
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds ui.MessageBox, which is a light wrapper around jQuery
- UI's dialog widget. We then use ui.MessageBox to show status messages
- about in-progress rebaselines. As each baseline is downloaded, the
- MessageBox updates. This UI replaces our temporary "alert"-based UI.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2011-09-13 Leandro Pereira <leandro@profusion.mobi>
-
- GTK DumpRenderTree uses inefficient idioms to iterate over G[S]Lists
- https://bugs.webkit.org/show_bug.cgi?id=68024
-
- Reviewed by Gustavo Noronha Silva.
-
- Using g_list_count() and g_list_nth_data() together on a loop is
- inneficient since they're both O(n). Iterate over lists in a saner
- way.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpHistoryItem): Reduce the scope for the 'kids' variable, and
- iterate on it using g_list_next(). Free the list after done with it.
- (dumpBackForwardListForWebView): Instead of appending (which is
- expensive in GLists) history items and then iterating from the tail
- of the itemsToPrint list, prepend items and walk forwards as usual.
- (dumpBackForwardListForAllWebViews): Walk the list in a saner way,
- remove the (unneeded) viewList variable.
-
-2011-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Eric's IRC nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-13 Anders Carlsson <andersca@apple.com>
-
- Disable C++ exceptions when building with clang
- https://bugs.webkit.org/show_bug.cgi?id=68031
- <rdar://problem/9556880>
-
- Reviewed by Mark Rowe.
-
- * MiniBrowser/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2011-09-13 Ojan Vafai <ojan@chromium.org>
-
- [chromium] fix flakiness dashboard for chromium interactive tests
- https://bugs.webkit.org/show_bug.cgi?id=68029
-
- Reviewed by Tony Chang.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Alice and Aryeh to the list of contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- sheriffbot whois should also tell us email addresses
- https://bugs.webkit.org/show_bug.cgi?id=67975
-
- Reviewed by Eric Seidel and David Levin.
-
- Taught sheriffbot how to tell us contributor's email addresses.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-09-13 Eric Seidel <eric@webkit.org>
-
- Remove ENABLE_SVG_FOREIGN_OBJECT as it is a required part of HTML5
- https://bugs.webkit.org/show_bug.cgi?id=68018
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/build-webkit:
- * waf/build/settings.py:
-
-2011-09-13 Chang Shu <cshu@webkit.org>
-
- [WK2] [Mac] Implement KeyDown function for WebKit2 EventSender.
- https://bugs.webkit.org/show_bug.cgi?id=57515
-
- The code change in WebKitTestRunner first sends keydown event from InjectedBundle to
- TestController synchronously. The latter then sends simulated event to WebKit2 module,
- which is synchronous, too.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/EventSenderProxy.h: Added.
- (WTR::EventSenderProxy::EventSenderProxy):
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::keyDown):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/PlatformWebView.h:
- (WTR::PlatformWebView::platformWindow):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/mac/EventSenderProxy.mm: Added.
- (WTR::buildModifierFlags):
- (WTR::EventSenderProxy::keyDown):
-
-2011-09-12 Leandro Pereira <leandro@profusion.mobi>
-
- [EFL] DRT: Add DumpRenderTreeEfl.h
- https://bugs.webkit.org/show_bug.cgi?id=63993
-
- Reviewed by Eric Seidel.
-
- This header contains some global variables used by EFL's
- DumpRenderTree implementation.
-
- * DumpRenderTree/DumpRenderTree.h: Include DumpRenderTreeEfl.h when
- appropriate.
- * DumpRenderTree/efl/DumpRenderTreeEfl.h: Added.
-
-2011-09-12 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Send the right key names for PageUp and PageDown.
- https://bugs.webkit.org/show_bug.cgi?id=67044
-
- Reviewed by Kenneth Rohde Christiansen.
-
- PlatformKeyboardEventEfl uses "Prior" and "Next" to refer to PageUp and
- PageDown (which is close to the defines in WindowsKeyboardCodes.h).
- However, EventSender was sending "Page_Up" and "Page_Down", so tests
- such as editing/input/page-up-down-scrolls.html were timing out due to
- the right key down events not being sent.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
-
-2011-09-12 Eric Seidel <eric@webkit.org>
-
- sheriffbot whois is case sensitive
- https://bugs.webkit.org/show_bug.cgi?id=67972
-
- Reviewed by Adam Barth.
-
- I also fixed a typo in the "More than 5 contributors" message
- from my previous commit.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-09-12 Eric Seidel <eric@webkit.org>
-
- sheriffbot whois should be smarter
- https://bugs.webkit.org/show_bug.cgi?id=67971
-
- Reviewed by Adam Barth.
-
- This makes sheriffbot whois basically grep the committers list
- making it much easier to find a contributor by name.
-
- Unfortunately the current unittests depend on the real committers.py
- file, so as we add more eric's to the project, this unittest result will
- change. I think that's OK for now. We'll fix it when it breaks.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-09-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94976.
- http://trac.webkit.org/changeset/94976
- https://bugs.webkit.org/show_bug.cgi?id=67953
-
- Broke a bunch of security/load& tests (Requested by rniwa on
- #webkit).
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pathToLocalResource):
-
-2011-09-12 Eric Seidel <eric@webkit.org>
-
- Rubber-stamped by Adam Barth.
-
- Remove the "the tree is burning!" warning previously shown
- when landing patches. It was a dream. But it's just noise now.
-
- Some bots will require a restart to notice the removal of the option
- so I've left the --ignore-builders option in for now.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- * Scripts/webkitpy/tool/commands/download.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/commit.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py: Removed.
- * Scripts/webkitpy/tool/steps/postdiffforrevert.py:
-
-2011-09-12 Eric Seidel <eric@webkit.org>
-
- [NRWT] REGRESSION: Local loader tests are failing on machines that lost /tmp/LayoutTests symlink
- https://bugs.webkit.org/show_bug.cgi?id=65781
-
- Reviewed by Ryosuke Niwa.
-
- Instead of making NRWT create the symlink, I just made DumpRenderTree smart enough
- to resolve the passed in url relative to the absolute url for the test.
-
- I believe this is a better approach than the on used in the Qt and Chromium DRT's
- (which resolves the path relative to the built location of the DRT executable)
- and we should move this new code into a shared location in a follow-up patch.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::pathToLocalResource):
-
-2011-09-12 Eric Seidel <eric@webkit.org>
-
- Reshuffle some code in WebKitDriver._read_block in preparation for reading stderr/stdout separately
- https://bugs.webkit.org/show_bug.cgi?id=67530
-
- Reviewed by Adam Barth.
-
- I believe I've fixed the bug in the original patch which prompted the rollout.
- The previous patch was using the wrong deadline for the initial read,
- subtracting time.time() twice from the deadline value.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-09-12 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] WebKitTestRunner does not produce crash logs
- https://bugs.webkit.org/show_bug.cgi?id=67714
-
- Reviewed by Chang Shu.
-
- Added a simple way of generating backtrace on crash
- to the web process. The implementation is similar what
- we have in DRT. It depends on GNU libc functionality
- so it is only enabled where we are running in such an environment.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::printBacktrace):
- (WTR::crashHandler):
- (WTR::InjectedBundle::platformInitialize):
-
-2011-09-11 Filip Pizlo <fpizlo@apple.com>
-
- Added my IRC nick to the committers file.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-01 Filip Pizlo <fpizlo@apple.com>
-
- The executable allocator makes it difficult to free individual
- chunks of executable memory
- https://bugs.webkit.org/show_bug.cgi?id=66363
-
- Reviewed by Oliver Hunt.
-
- Introduced a best-fit, balanced-tree based allocator. The allocator
- required a balanced tree that does not allocate memory and that
- permits the removal of individual nodes directly (as opposed to by
- key); neither AVLTree nor WebCore's PODRedBlackTree supported this.
- Changed all references to executable code to use a reference counted
- handle.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/MetaAllocator.cpp: Added.
- (TestWebKitAPI::TEST_F):
- * TestWebKitAPI/Tests/WTF/RedBlackTree.cpp: Added.
- (TestWebKitAPI::Pair::findExact):
- (TestWebKitAPI::Pair::remove):
- (TestWebKitAPI::Pair::findLeastGreaterThanOrEqual):
- (TestWebKitAPI::Pair::assertFoundAndRemove):
- (TestWebKitAPI::Pair::assertEqual):
- (TestWebKitAPI::Pair::assertSameValuesForKey):
- (TestWebKitAPI::Pair::testDriver):
- (TestWebKitAPI::TEST_F):
-
-2011-09-10 Andy Estes <aestes@apple.com>
-
- Move myself from committers_unable_to_review to reviewers_list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-10 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. MSW build fixes.
-
- * DumpRenderTree/config.h:
- * waf/build/wxpresets.py:
-
-2011-09-10 Andreas Kling <kling@webkit.org>
-
- Crash beneath WKURLIsEqual() when reloading in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=59328
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController updateProvisionalURLForFrame:]): Add missing null check.
-
-2011-09-10 Adam Barth <abarth@webkit.org>
-
- Build fix for Android. DumpRenderTree is a client of the WebKit API
- and does not have access to notImplemented().
-
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (openStartupDialog):
-
-2011-09-09 Alexey Proskuryakov <ap@apple.com>
-
- Add a script to create a monolithic script-test
- https://bugs.webkit.org/show_bug.cgi?id=67747
-
- Reviewed by Darin Adler.
-
- * Scripts/make-new-script-test: Added.
-
-2011-09-09 Luiz Agostini <luiz@webkit.org>
-
- Adding myself to the reviewers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-09 Ryosuke Niwa <rniwa@webkit.org>
-
- Buildbot may use RunWebKitTest's evaluateCommand on bots that run nrwt
- https://bugs.webkit.org/show_bug.cgi?id=67855
-
- Reviewed by Dirk Pranke.
-
- The bug was caused by the fact some ports use RunWebKitTests instead of NewRunWebKitTests to run tests,
- and using RunWebKitTests.evaluateCommand after calling _parseNewRunWebKitTestsOutput.
-
- Fixed the bug by merging evaluateCommand of RunWebKitTests and NewRunWebKitTests.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-09-09 Mark Hahnenberg <mhahnenberg@apple.com>
-
- Add myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=67853
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com>
-
- [Qt] Remove common.pri
- https://bugs.webkit.org/show_bug.cgi?id=67814
-
- Reviewed by Andreas Kling.
-
- * Tools.pro:
-
-2011-09-09 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] the nrwt check httpd with --no-http option
- https://bugs.webkit.org/show_bug.cgi?id=67835
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
-
-2011-09-09 Hao Zheng <zhenghao@chromium.org>
-
- [chromium] Implement DRT support for Android.
- https://bugs.webkit.org/show_bug.cgi?id=67590
-
- Reviewed by Tony Chang.
-
- Add 2 mechanism to make DRT interaction more robust on Android:
- - Send 'QUIT' to DRT to make it stop.
- - Wait until receiving '#READY' from DRT, so that DRT won't miss any
- input commands before it starts.
- And LayoutTestController.cpp needs to include <cctype> for 'tolower'
- and <clocale> for 'LC_ALL' to compile on Android.
-
- Also change to use sigaction instead of signal for TestShellGtk.cpp,
- as signal() man page recommends using sigaction().
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Added.
- (AlarmHandler):
- (TestShell::waitTestFinished):
- (platformInit):
- (openStartupDialog):
- (checkLayoutTestSystemDependencies):
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (AlarmHandler):
- (TestShell::waitTestFinished):
-
-2011-09-09 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Add Source/JavaScriptCore/dfg directory to the build.
-
- * waf/build/settings.py:
-
-2011-09-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94851.
- http://trac.webkit.org/changeset/94851
- https://bugs.webkit.org/show_bug.cgi?id=67847
-
- It broke a webkitpy test (Requested by ossy on #webkit).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-09-09 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] the nrwt check httpd with --no-http option
- https://bugs.webkit.org/show_bug.cgi?id=67835
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-09-08 Brian Weinstein <bweinstein@apple.com>
-
- WebKit2: Assertion when calling didPerform*Redirect on null source/destination URL string
- https://bugs.webkit.org/show_bug.cgi?id=67794
- <rdar://problem/9892024>
-
- Add a test that we don't send a didPerformServerRedirect when a load is cancelled from willSendRequest.
-
- Reviewed by Brady Eidson.
-
- * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame): Set flags on whether we've loaded the main frame, iframe, or both.
- (TestWebKitAPI::didPerformServerRedirect): Set a flag for whether we've performed a server redirect.
- (TestWebKitAPI::TEST): Set up a WKPageLoaderClient and WKContextHistoryClient, and load simple-iframe.html.
- Once both frames have loaded (main frame and blocked iframe), make sure that we have never called
- didPerformServerRedirect.
-
- * TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp: Added.
- (TestWebKitAPI::LoadCanceledNoServerRedirectCallbackTest::LoadCanceledNoServerRedirectCallbackTest): Initialize
- our InjectedBundleTest.
- (TestWebKitAPI::LoadCanceledNoServerRedirectCallbackTest::willSendRequestForFrame): If we are dealing with a request
- from the main frame (the main resource in simple-iframe.html), allow it. If not (dealing with the iframe), block
- the request.
- (TestWebKitAPI::LoadCanceledNoServerRedirectCallbackTest::didCreatePage): Set up the WKBundlePageResourceLoadClient.
-
- * TestWebKitAPI/Tests/WebKit2/simple-iframe.html: Added.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Add new files.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Ditto.
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj: Ditto.
- * TestWebKitAPI/win/copy-resources.cmd: Ditto.
-
-2011-09-08 David Levin <levin@chromium.org>
-
- check-webkit-style: Ref|Own Ptr& should be allowed as a parameter.
- https://bugs.webkit.org/show_bug.cgi?id=67797
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/style/checkers/cpp.py: Allow Ref/Own Ptr when it ends with &.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added test cases for this.
-
-2011-09-08 Fady Samuel <fsamuel@chromium.org>
-
- Fixed Layout Mode should be adjustable from layoutTestController for testing on Chromium platforms
- https://bugs.webkit.org/show_bug.cgi?id=67723
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::enableFixedLayoutMode):
- (LayoutTestController::setFixedLayoutSize):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-09-07 Matthew Delaney <mdelaney@apple.com>
-
- Add standalone script that filters the output of build-webkit to be more human-readable
- https://bugs.webkit.org/show_bug.cgi?id=44081
-
- Reviewed by Daniel Bates.
-
- * Scripts/filter-build-webkit: Added. Just need to feed it the output of
- a build script (e.g. build-webkit) and it spits out a prettier version.
- * Scripts/VCSUtils.pm: Refactored "possiblyColored" out of run-api-tests into VCSUtils.
- * Scripts/run-api-tests: Now includes VCSUtils to use "possiblyColored"
-
-2011-09-07 Noel Gordon <noel.gordon@gmail.com>
-
- Add myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=67696
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-07 Adam Barth <abarth@webkit.org>
-
- rebaseline button in garden-o-matic details view should work
- https://bugs.webkit.org/show_bug.cgi?id=67738
-
- Reviewed by Dimitri Glazkov.
-
- This patch wires up the rebaseline button in garden-o-matic results
- details view. The button is current per-test, so there isn't a way to
- rebaseline individual bots. This is a place to start. If we decide we
- want per-bot rebaselining, we'll need to think of some better UI.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2011-09-07 Eric Seidel <eric@webkit.org>
-
- Teach the PortFactory object how to pass along executive/user/filesystem to port objects (which fixes the failing rebaseline_test on bots)
- https://bugs.webkit.org/show_bug.cgi?id=67737
-
- Reviewed by Adam Barth.
-
- I got a little over-eager when deprecating host.port_factory in the previous commit.
- Turns out that Host.port_factory was already the "modern" port/factory.py
- it was just the Module object. I un-deprecated the variable, and changed it from
- being the module to being an actual PortFactory, passing it a host object.
- I also taught PortFactory how to set user/executive/filesystem in the kwargs
- when instantiating a new Port object.
- This magically fixed the test_rebaseline test, since its now no longer talking
- to the real filesystem.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-09-07 Eric Seidel <eric@webkit.org>
-
- Add a new PortFactory class for creating new-style ports and deprecate the old PortFactory
- https://bugs.webkit.org/show_bug.cgi?id=67734
-
- Reviewed by Adam Barth.
-
- Right now every place that creates a Port object has to be very careful
- to pass in a MockSCM/MockUser/MockFilesystem when appropriate.
- The correct fix is for port/factory.py (which creates most port objects)
- to know how to pass these in automatically. However, currently all port/factory.py
- functions are free functions instead of being on an object. This patch
- adds a new PortFactory object and deprecates the PortFactory for the old-style Port objects.
-
- In a follow-up patch I will add PortFactory to the Host object and teach PortFactory how to
- pass along the proper scm/user/filesystem to the Port object.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-09-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94441.
- http://trac.webkit.org/changeset/94441
- https://bugs.webkit.org/show_bug.cgi?id=67731
-
- "MacEWSes are backed up due to new machines not able to reach
- git.webkit.org. Disabling tests for now" (Requested by
- eseidel2 on #webkit).
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-09-07 Elliot Poger <epoger@google.com>
-
- filter test_expectations properly for chromium-mac vs chromium-cg-mac
- https://bugs.webkit.org/show_bug.cgi?id=67324
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
-
-2011-09-07 Eric Boren <borenet@gmail.com>
-
- [Chromium] Modify WebTouchEvent structure to match WebCore::TouchEvent
- https://bugs.webkit.org/show_bug.cgi?id=66800
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::sendCurrentTouchEvent):
-
-2011-09-07 Jarred Nicholls <jarred@sencha.com>
-
- [Qt][DRT] Normalize file:///tmp/LayoutTests in LayoutTestController::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=67254
-
- Reviewed by Csaba Osztrogonác.
-
- Translate file:///tmp/LayoutTests/* urls into the repository LayoutTests directory, which is
- derived from the running location of DumpRenderTree binary.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::pathToLocalResource):
- (LayoutTestController::setUserStyleSheetLocation): pass the url through pathToLocalResource
-
-2011-09-07 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r94288) build-webkit doesn't work on Symbian
- https://bugs.webkit.org/show_bug.cgi?id=67706
-
- * Scripts/webkitdirs.pm: Disable automatic clean build on Symbian, because it doesn't support shadow build.
- (buildQMakeProject):
-
-2011-09-07 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r94288) build-webkit doesn't work on Windows
- https://bugs.webkit.org/show_bug.cgi?id=67646
-
- Roll back r94655 with a small fix.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
-
-2011-09-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94635.
- http://trac.webkit.org/changeset/94635
- https://bugs.webkit.org/show_bug.cgi?id=67704
-
- Linux Touch build is failing to compile this change.
- (Requested by loislo on #webkit).
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::sendCurrentTouchEvent):
-
-2011-09-07 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94655.
- http://trac.webkit.org/changeset/94655
- https://bugs.webkit.org/show_bug.cgi?id=67703
-
- It broke Leopard debug bot (Requested by ossy on #webkit).
-
- * Scripts/webkitdirs.pm:
-
-2011-09-07 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- REGRESSION(r94288) build-webkit doesn't work on Windows
- https://bugs.webkit.org/show_bug.cgi?id=67646
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitdirs.pm:
-
-2011-09-06 Eric Boren <borenet@gmail.com>
-
- [Chromium] Modify WebTouchEvent structure to match WebCore::TouchEvent
- https://bugs.webkit.org/show_bug.cgi?id=66800
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::sendCurrentTouchEvent):
-
-2011-09-06 Adam Barth <abarth@webkit.org>
-
- garden-o-matic details view should having working rebaseline and next/previous buttons
- https://bugs.webkit.org/show_bug.cgi?id=67659
-
- Reviewed by Dimitri Glazkov.
-
- This patch wires up basic back/forward buttons that let you traverse
- through the results we're examining in the details view. This ended up
- being more code than I expected, but I wanted to keep all the state
- information in the DOM itself.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2011-09-01 Dirk Pranke <dpranke@chromium.org>
-
- fix MockFileSystem.glob(), refactor filesystem tests
- https://bugs.webkit.org/show_bug.cgi?id=67462
-
- Reviewed by Eric Seidel.
-
- In debugging why my proposed change for MockFileSystem.glob()
- in bug 66228 didn't work, I stumbled across two real bugs
- that cancelled each other out for the unit tests. I fixed those
- (glob shouldn't recurse into subdirs, and we weren't populating
- self.dirs from self.files properly).
-
- I have also created a "mixin" class for tests that can be shared
- between the real filesystem and the mock filesystem - MockFileSystem
- is being used enough it needs its own tests.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/filesystem_mock_unittest.py: Added.
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
-
-2011-09-06 Anders Carlsson <andersca@apple.com>
-
- Move NPAPI headers in bridge to plugins
- https://bugs.webkit.org/show_bug.cgi?id=67661
-
- Update forwarding headers.
-
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npapi.h:
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit/npruntime.h:
-
-2011-09-06 Tony Chang <tony@chromium.org>
-
- [chromium] Check in 'build' for compiled binaries first
- https://bugs.webkit.org/show_bug.cgi?id=67549
-
- Reviewed by Dirk Pranke.
-
- I'm working on moving the windows build output to a common location
- rather than relative to the sln file. Because of that, we need to
- check those build locations first for DumpRenderTree.exe.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-09-06 Adam Barth <abarth@webkit.org>
-
- Use a hierarchial structure for the garden-o-matic results view
- https://bugs.webkit.org/show_bug.cgi?id=67620
-
- Reviewed by Dimitri Glazkov.
-
- This patch re-organizes the results view to use a hierachial structure
- for selection. At the top-level are sections for each test. Expanding
- the test section shows a tab selector for builders.
-
- This structure prepares us for wiring up various actions to this view.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- ():
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
- (.results-view>.toolbar):
- (.results-view>.toolbar ul.actions):
- (.results-view>.toolbar ul.actions li):
- (.results-grid table):
- (.results-grid table td, .results-view table th):
- (.results-grid table th):
- (.results-grid .text-result):
- (.results-grid .image-result):
-
-2011-09-06 Adam Barth <abarth@webkit.org>
-
- garden-o-matic's base.probe generates spam in the JavaScript console
- https://bugs.webkit.org/show_bug.cgi?id=67622
-
- Reviewed by Dimitri Glazkov.
-
- Now that we have CORS set up on the buildbot, we can use XMLHttpRequest
- instead of HTMLScriptElement to test whether results exist. This
- reduces the console.log spam and saves bandwidth because we can use a
- HEAD request instead of a GET request.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js:
-
-2011-09-05 Adam Barth <abarth@webkit.org>
-
- Add a tab to garden-o-matic for viewing expected failures
- https://bugs.webkit.org/show_bug.cgi?id=67619
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a basic tab to garden-o-matic that shows all the tests
- failing on the bots, including the expected failures. This patch
- mostly involves refactoring existing classes to allow new subclasses.
-
- This view is useful for when gardeners mark tests as expected to fail
- and then rebaseline them later.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-09-05 Adam Barth <abarth@webkit.org>
-
- Fix global variable leak in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=67617
-
- Reviewed by Dimitri Glazkov.
-
- Caught by running the unit tests with noglobals turned on.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2011-09-05 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Add pixel test support
- https://bugs.webkit.org/show_bug.cgi?id=66283
-
- Reviewed by Andreas Kling.
-
- Implemented pixel result generation by reusing the logic
- that we have in DumpRenderTree.
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::dumpImage):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-09-04 Robin Dunn <robin@alldunn.com>
-
- [wx] Enable wxWebKit to run using the wxGC Cairo backend on platforms other than GTK.
- https://bugs.webkit.org/show_bug.cgi?id=67577
-
- Reviewed by Kevin Ollivier.
-
- * waf/build/settings.py:
-
-2011-09-03 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Add wtf/dtoa directory to build.
-
- * waf/build/settings.py:
-
-2011-09-03 Dan Bernstein <mitz@apple.com>
-
- 32-bit build fix.
-
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::toSTD):
-
-2011-09-03 Dan Bernstein <mitz@apple.com>
-
- Move testStringByEvaluatingJavaScriptFromString() from DumpRenderTree to TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=67559
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree): Moved testStringByEvaluatingJavaScriptFromString() from here and removed
- the call to it.
- * TestWebKitAPI/PlatformUtilities.h: Declared Util::toSTD(NSString *)
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added StringByEvaluatingJavaScriptFromString.mm.
- * TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm: Added.
- (TestWebKitAPI::TEST): Added. Moved testStringByEvaluatingJavaScriptFromString() to here.
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::toSTD): Added.
-
-2011-09-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic results view should have a better results selector
- https://bugs.webkit.org/show_bug.cgi?id=67542
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a basic grid-based results selector to the results
- view. Currently, this grid just shows how the tests fail on the
- various bots. A future patch will let you select which failure to view
- and to mark the failures for rebaselining.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- - Add some more basic functions for manipulating dictionaries.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
-
-2011-09-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic results view should show Actual and Expected results for text failures
- https://bugs.webkit.org/show_bug.cgi?id=67536
-
- Reviewed by Eric Seidel.
-
- In the past, we didn't show actual and expected text results (we just
- showed the diff) because we didn't have the awesome six-by-two results
- grid. Now that we do, we can move show these results.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- - Fixed some typos that were preventing these unit tests from running.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
- - Report -actual.txt and -expected.txt as possible results URLs.
-
-2011-09-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic shows "ghost" failures that are already fixed
- https://bugs.webkit.org/show_bug.cgi?id=67535
-
- Reviewed by Eric Seidel.
-
- About 10% of writes fail to stick on test-results.appspot.com. This
- patch causes us to fetch the full_results.json blob directly from
- build.chromium.org rather than relying upon AppEngine.
-
- Unforuntately, we still need to get historical information from
- AppEngine. That will take several patches to fix becuase I need to
- change the bots to write the full_results.json file to the
- build-specific directory in addition to the zip file.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
-
-2011-09-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94458.
- http://trac.webkit.org/changeset/94458
- https://bugs.webkit.org/show_bug.cgi?id=67558
-
- Caused appcache test to fail on various bots (Requested by
- rniwa on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-09-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94453.
- http://trac.webkit.org/changeset/94453
- https://bugs.webkit.org/show_bug.cgi?id=67557
-
- Caused appcache test to fail on various bots (Requested by
- rniwa on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-09-02 Michael Saboff <msaboff@apple.com>
-
- Add JSC:RegExp functional tests
- https://bugs.webkit.org/show_bug.cgi?id=67339
-
- New perl script to build JavaScriptCore and run the RegExp tests.
-
- Reviewed by Gavin Barraclough.
-
- * Scripts/run-regexp-tests: Added.
-
-2011-09-02 Michael Saboff <msaboff@apple.com>
-
- Add JSC:RegExp functional tests
- https://bugs.webkit.org/show_bug.cgi?id=67339
-
- New perl script to build JavaScriptCore and run the RegExp tests.
-
- Reviewed by Gavin Barraclough.
-
- * Scripts/run-regexp-tests: Added.
-
-2011-09-02 Eric Seidel <eric@webkit.org>
-
- Reshuffle some code in WebKitDriver._read_block in preparation for reading stderr/stdout separately
- https://bugs.webkit.org/show_bug.cgi?id=67530
-
- Unreviewed. Fixing typo from previous commit.
-
- Turns out there was *no* unittesting of WebKitDriver. Added a basic test of _read_block
- which exercises the code I previously made a typo in.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-09-02 Eric Seidel <eric@webkit.org>
-
- Reshuffle some code in WebKitDriver._read_block in preparation for reading stderr/stdout separately
- https://bugs.webkit.org/show_bug.cgi?id=67530
-
- Reviewed by Adam Barth.
-
- No functional change, just reshuffling code.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-09-02 Darin Adler <darin@apple.com>
-
- Added Subversion ignore for .pyc generated files.
-
- * Scripts/webkitpy/layout_tests/models: Added property svn:ignore.
- * Scripts/webkitpy/layout_tests/servers: Added property svn:ignore.
- * Scripts/webkitpy/tool/servers: Added property svn:ignore.
-
-2011-09-02 Adam Barth <abarth@webkit.org>
-
- Enable testing on mac-ews
- https://bugs.webkit.org/show_bug.cgi?id=67505
-
- Reviewed by Eric Seidel.
-
- This patch enables testing on the Mac EWS, which should help
- contributors not turn the Mac bots red.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-09-01 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=67451
- Add a test for going back to a cached page after changing the device scale factor
-
- Reviewed by Adam Roben.
-
- New test DeviceScaleFactorOnBack.mm inherits from WebKitAgnosticTest.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm: Added.
- (TestWebKitAPI::DeviceScaleFactorOnBack::url):
- (TestWebKitAPI::DeviceScaleFactorOnBack::didLoadURL):
- (TestWebKitAPI::DeviceScaleFactorOnBack::createWindow):
- (TestWebKitAPI::DeviceScaleFactorOnBack::initializeView):
- (TestWebKitAPI::DeviceScaleFactorOnBack::runTest):
- (TestWebKitAPI::TEST_F):
-
- Added new function to WebKitAgnosticTest to goBack. Separated
- waitForLoadToFinish() into its own function (instead of being a part of
- loadAndWaitUntilFinished()) so that it can be called from goBack as
- well. Also added initializeView() so we can set the cache model.
- * TestWebKitAPI/mac/WebKitAgnosticTest.h:
- (TestWebKitAPI::WebKitAgnosticTest::initializeView):
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
- (TestWebKitAPI::WebKitAgnosticTest::WebKitAgnosticTest):
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit1Test):
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit2Test):
- (TestWebKitAPI::WebKitAgnosticTest::loadURL):
- (TestWebKitAPI::WebKitAgnosticTest::goBack):
- (TestWebKitAPI::WebKitAgnosticTest::waitForLoadToFinish):
-
-2011-09-02 Anders Carlsson <andersca@apple.com>
-
- Build fix.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PrivateBrowsing.cpp:
- (PrivateBrowsing::ScriptableObject::pluginTest):
-
-2011-09-02 Anders Carlsson <andersca@apple.com>
-
- Move private browsing test to a PluginTest subclass
- https://bugs.webkit.org/show_bug.cgi?id=67498
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginGetProperty):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_SetValue):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/PrivateBrowsing.cpp: Added.
- (PrivateBrowsing::PrivateBrowsing):
- (PrivateBrowsing::privateBrowsingEnabled):
- (PrivateBrowsing::cachedPrivateBrowsingEnabled):
- (PrivateBrowsing::ScriptableObject::hasProperty):
- (PrivateBrowsing::ScriptableObject::getProperty):
- (PrivateBrowsing::ScriptableObject::pluginTest):
- (PrivateBrowsing::NPP_New):
- (PrivateBrowsing::NPP_GetValue):
- (PrivateBrowsing::NPP_SetValue):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- (NPP_SetValue):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2011-09-02 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Build dependency problems
- https://bugs.webkit.org/show_bug.cgi?id=38054
-
- Trivial fix after r94288.
-
- Rubber-stamped by Andras Becsi.
-
- * Scripts/webkitdirs.pm: We should read the whole defaults.txt, not only the first two lines.
- (buildQMakeProject):
-
-2011-09-02 Andras Becsi <andras.becsi@nokia.com>
-
- Remove my old e-mail address and add my new one.
-
- Rubber-stamped by Tor Arne Vestbø.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-09-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] run-gtk-tests leaves a zombie Xvfb process
- https://bugs.webkit.org/show_bug.cgi?id=67389
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-gtk-tests: Properly close STDIN and STDERR on the
- child process instead of doing shell redirection.
-
-2011-09-01 Mark Rowe <mrowe@apple.com>
-
- Fix the build by adding some more missing return types.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:identifierForInitialRequest:fromDataSource:]):
-
-2011-09-01 Eric Seidel <eric@webkit.org>
-
- REGRESSION (NRWT): Leaks Viewer can't load leaks from test runs that used NRWT
- https://bugs.webkit.org/show_bug.cgi?id=66228
-
- Reviewed by Dirk Pranke.
-
- ORWT used $(PROCESS)$(NUMBER)-leaks.txt for leaks filenames.
- The LeaksViewer tool globs for all *-leaks.txt files.
- This patch makes NRWT output $(PROCESS)-$(PID)-leaks.txt which should match.
-
- In order to test this I had to fix a limitation in our MockFileSystem.glob
- method. However, doing so uncovered a typo and bug in the integration tests.
- I've disabled the offending integration tests.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
-
-2011-09-01 Dominic Mazzoni <dmazzoni@google.com>
-
- Adds a LayoutTestController method to make it possible to test
- starting speech input via an API call.
- https://bugs.webkit.org/show_bug.cgi?id=60170
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::startSpeechInput):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::startSpeechInput):
-
-2011-09-01 Tim Horton <hortont424@gmail.com>
-
- Fix TestWebKitAPI build on clang-2.0
-
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Remove unused "extension" parameter from rebaseline gardeningserver handler
- https://bugs.webkit.org/show_bug.cgi?id=67384
-
- Reviewed by James Robinson.
-
- This parameter hasn't done anything in a while.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-09-01 Eric Seidel <eric@webkit.org>
-
- Unreviewed.
-
- Fix a typo in unittests. Unfortunately fixing it
- caused several assertions. Just disabling the test
- instead, since it was providing no value before due to the typo.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Add a "rebaseline" button to the garden-o-matic summary page
- https://bugs.webkit.org/show_bug.cgi?id=67382
-
- Reviewed by Dimitri Glazkov.
-
- As much as we might wish folks to not rebaseline entire test groups at
- once, the truth is that doing so is a common operation. Adding a
- button for this operation is likely to make folks happy.
-
- This patch also cleans up a bunch of plumbing surrounding failureInfo
- objects.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should let the gardener assign blame for a group of test failures
- https://bugs.webkit.org/show_bug.cgi?id=67379
-
- Reviewed by Dimitri Glazkov.
-
- If a group of test failures has a large revision range, the gardener
- might wish to blame a specific revision for the failure. Currently,
- this only effect of assigning blame in this way is to hide the other
- suspect commits.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Hide garden-o-matic failure table until hover
- https://bugs.webkit.org/show_bug.cgi?id=67376
-
- Reviewed by Dimitri Glazkov.
-
- This patch removes the failure table for build failures (because it
- does not make sense) and hides the failure table for test groups until
- the user hovers over the test failure block, reducing visual noise.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Switch garden-o-matic from commitData.title to commitData.summary
- https://bugs.webkit.org/show_bug.cgi?id=67375
-
- Reviewed by Dimitri Glazkov.
-
- commitData.title is a string provided by Trac, which isn't great in all
- cases. commitData.summary is my attempt to find the most important
- one-line summary of the commit. This patch switches garden-o-matic
- over to summary.
-
- Also, this patch tweaks a bunch of CSS to tighten up the summary page
- and reduce visual noise.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Group failing tests in garden-o-matic if there are more than three in a folder
- https://bugs.webkit.org/show_bug.cgi?id=67373
-
- Reviewed by Dimitri Glazkov.
-
- Sometimes a failure will cause many tests in a given directory to fail.
- When that happens, it's better to list the directory as a single item
- (with a count) rather than spamming all the test names.
-
- (This patch also updates a bunch of unit test expected results after my last commit.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-09-01 Adam Barth <abarth@webkit.org>
-
- Lower the visual noise from the failing builders display
- https://bugs.webkit.org/show_bug.cgi?id=67369
-
- Reviewed by Dimitri Glazkov.
-
- This patch ensures that the "Building" row in the failing builders
- display is always last and dims it by 50% to reduce visual noise. This
- lets the gardener focus on the actual failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css: Added.
-
-2011-09-01 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt] Build dependency problems
- https://bugs.webkit.org/show_bug.cgi?id=38054
-
- Make clean build after the defines are changed.
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProject):
-
-2011-08-31 Adam Barth <abarth@webkit.org>
-
- Move DumpRenderTree to WebKitPlatformSupport
- https://bugs.webkit.org/show_bug.cgi?id=67331
-
- Reviewed by Darin Fisher.
-
- This patch update DumpRenderTree to account for the WebKitClient =>
- WebKitPlatformSupport rename.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/Task.cpp:
- (postTask):
-
-2011-08-31 Eric Seidel <eric@webkit.org>
-
- Add queues.webkit.org/active-bots page to make it easy to see which bots are down
- https://bugs.webkit.org/show_bug.cgi?id=67314
-
- Reviewed by Adam Barth.
-
- Very simple page. Just lists all the bots, what queue they belong to and what we last heard from them.
- If we haven't heard from a bot in the last 500 messages (last day or so), then it won't show up here.
- This makes it very easy for me to see which of my cr-jail bots might be down at any one time.
-
- I also moved a bunch of code into dashboard.css which belonged there.
-
- * QueueStatusServer/handlers/activebots.py: Added.
- * QueueStatusServer/main.py:
- * QueueStatusServer/stylesheets/dashboard.css:
- (.queue_bubble):
- (.queue_name):
- (.last_heard_from):
- (.status_text):
- (.alive):
- (.behind):
- (.dead):
- * QueueStatusServer/templates/activebots.html: Added.
- * QueueStatusServer/templates/dashboard.html:
- * QueueStatusServer/templates/recentstatus.html:
-
-2011-08-31 Oliver Hunt <oliver@apple.com>
-
- Move CheckedArithmeticOperations.cpp to the intended location
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp: Renamed from Tools/TestWebKitAPI/Tests/CheckedArithmeticOperations.cpp.
-
-2011-08-31 Elliot Poger <epoger@google.com>
-
- add unittest to validate the complete set of Chromium configurations
- https://bugs.webkit.org/show_bug.cgi?id=67211
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-08-31 Nico Weber <thakis@chromium.org>
-
- Make ScrollAnimator(Chromium)?Mac check scrollAnimatorEnabled()
- https://bugs.webkit.org/show_bug.cgi?id=67297
-
- Reviewed by Tony Chang.
-
- Explicitly disable smooth scrolling in chromium's DRT.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2011-08-31 Oliver Hunt <oliver@apple.com>
-
- Add Checked<> tests to windows build
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-08-30 Oliver Hunt <oliver@apple.com>
-
- Add support for checked arithmetic
- https://bugs.webkit.org/show_bug.cgi?id=67095
-
- Reviewed by Sam Weinig.
-
- Add test cases for Checked<>
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/CheckedArithmeticOperations.cpp: Added.
-
-2011-08-31 Adam Barth <abarth@webkit.org>
-
- Move summary.html to garden-o-matic.html.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Removed.
-
-2011-08-31 Noel Gordon <noel.gordon@gmail.com>
-
- [chromium] DRT linux should pass nativeKeyCode to plugins
- https://bugs.webkit.org/show_bug.cgi?id=66679
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown): Call a Chromium Linux GTK helper routine that returns the
- (simulated) nativeKeyCode for the given input keyboard code.
-
-2011-08-31 Adam Barth <abarth@webkit.org>
-
- Tighen up UI for garden-o-matic tab strip
- https://bugs.webkit.org/show_bug.cgi?id=67266
-
- Reviewed by Dimitri Glazkov.
-
- This patch add CSS to move the tab strip to the edges of the page and
- to remove some gratuitous border-radius.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
-
-2011-08-31 Adam Barth <abarth@webkit.org>
-
- garden-o-matic results view shouldn't be horrifically ugly
- https://bugs.webkit.org/show_bug.cgi?id=67264
-
- Reviewed by Dimitri Glazkov.
-
- Minor tweak to the results view CSS to make it fit in better with the new tabbed UI.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
-
-2011-08-31 Adam Barth <abarth@webkit.org>
-
- garden-o-matic needs a tabstrip
- https://bugs.webkit.org/show_bug.cgi?id=67263
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a basic tabstrip to garden-o-matic. The results
- details view now opens in the "Results" tab, and the user can flip back
- and forth between the Summary and the Results tab quickly. There's
- also a stub for a "Commits" tab, which is disabled.
-
- This patch isn't the most beautiful in the world, but it gets the ball
- rolling on a multi-modal UI.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
-
-2011-08-31 Ai Makabi <makabi@google.com>
-
- Extract reference links from reftest test file.
- https://bugs.webkit.org/show_bug.cgi?id=66838
-
- Reviewed by Shinichiro Hamaji.
-
- * Scripts/webkitpy/layout_tests/reftests/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py: Added.
- * Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py: Added.
-
-2011-08-03 Philippe Normand <pnormand@igalia.com>
-
- [webkitpy] missing log import in common/net/resultsjsonparser.py
- https://bugs.webkit.org/show_bug.cgi?id=65606
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py: Import the logging module.
-
-2011-08-30 Philippe Normand <pnormand@igalia.com>
-
- [stylechecker] complains about NULL usage in some gst_structure_ calls
- https://bugs.webkit.org/show_bug.cgi?id=67194
-
- Reviewed by Martin Robinson.
-
- Don't warn about NULL in some gst_structure_ calls. 0 can't be
- used for these, a proper sentinel is required.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-08-30 Adam Barth <abarth@webkit.org>
-
- Remove old-style UI from garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=67257
-
- Reviewed by Dimitri Glazkov.
-
- This code is nowhere near as awesome as the new hotness. Let's remove
- it so it doesn't weigh us down.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/main.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/unexpected-passes.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.html: Removed.
-
-2011-08-30 Takashi Toyoshima <toyoshim@chromium.org>
-
- [WebSocket] update pywebsocket to 0.6b5.
- https://bugs.webkit.org/show_bug.cgi?id=66924
-
- Reviewed by Kent Tamura.
-
- pywebsocket 0.6b2 supported minimum features of Hybi-08 specification.
- Now, pywebsocket 0.6b5 supports full features of Hybi-10 specification.
- 0.6b3 or later supports a closing handshake handler and it is useful to
- verify client's closing handshake implementation.
- 0.6b4 supports AbortedByUserException. It is useful to eliminate
- unnecessary server warning messages on intended abnormal closures.
- 0.6b5 supports Python 2.5.1 or Mac 10.5.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- Update download URL and directory path.
-
-2011-08-30 Dan Bernstein <mitz@apple.com>
-
- Test for <rdar://problem/9281695> Add text search API for getting the DOM range of a text match
- https://bugs.webkit.org/show_bug.cgi?id=67230
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/DOMRangeOfString.html: Added.
- * TestWebKitAPI/Tests/mac/DOMRangeOfString.mm: Added.
- (-[DOMRangeOfStringFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (TestWebKitAPI::TEST):
-
-2011-08-30 Aaron Colwell <acolwell@chromium.org>
-
- Add MediaSource API to HTMLMediaElement
- https://bugs.webkit.org/show_bug.cgi?id=64731
-
- Reviewed by Eric Carlson.
-
- * Scripts/build-webkit:
-
-2011-08-30 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Emit last progress notification before calling dispatchDidFinishLoad
- https://bugs.webkit.org/show_bug.cgi?id=28851
-
- Reviewed by Adam Barth.
-
- Implement dumpProgressFinishedCallback() in the layoutTestController for Qt,
- Chromium and GTK ports. The first two were simple changes.
-
- Some refactoring was needed in GTK port to assure that the dumps are emitted
- correctly and the processing after the page load finished is in the right place.
-
- To detect the load finished, we use the callback for the "load-status" notifier
- signal of the top loading frame. And we use the deprecated "load-finished" signal
- for dumping (if enabled) the progress finished expected output.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (dumpProgressFinishedCallbackCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpProgressFinishedCallback):
- (LayoutTestController::setDumpProgressFinishedCallback):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::dumpProgressFinishedCallback):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::shouldDumpProgressFinishedCallback):
- (LayoutTestController::setShouldDumpProgressFinishedCallback):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didStopLoading):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewLoadFinished):
- (topLoadingFrameLoadFinished):
- (webFrameLoadStatusNotified):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::dumpProgressFinishedCallback):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-08-30 Filip Pizlo <fpizlo@apple.com>
-
- JavaScriptCore does not have a good mechanism for performance
- regression testing
- https://bugs.webkit.org/show_bug.cgi?id=67177
-
- Reviewed by Darin Adler.
-
- Added a new script, which allows for testing one, two, or more VMs
- at once on SunSpider, V8, and Kraken benchmarks. Benchmark/VM runs
- are interleaved at random to minimize systematics. The results
- that bencher prints includes all possible relevant information about
- how bencher was invoked. Bencher can be easily used to measure
- performance changes down to fractions of a percent.
-
- Bencher also includes experimental support for running benchmarks in
- a DumpRenderTree release build. This works in SunSpider and V8, but
- not yet in Kraken. Running benchmarks in DumpRenderTree more
- closely mimics the performance when running in browser.
-
- * Scripts/bencher: Added.
-
-2011-08-29 Alexey Proskuryakov <ap@apple.com>
-
- DumpRenderTree should begin each test with an empty cookie store
- https://bugs.webkit.org/show_bug.cgi?id=63545
- <rdar://problem/5666907>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (setDefaultsToConsistentValuesForTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAlwaysAcceptCookies):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- Use new SPIs to manipulate sessions.
-
-2011-08-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r94055 and r94057.
- http://trac.webkit.org/changeset/94055
- http://trac.webkit.org/changeset/94057
- https://bugs.webkit.org/show_bug.cgi?id=67191
-
- Many failures on Mac 10.5 (Requested by toyoshim on #webkit).
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-08-30 Adam Barth <abarth@webkit.org>
-
- Chromium Android should not be a core builder
- https://bugs.webkit.org/show_bug.cgi?id=67184
-
- Reviewed by Ryosuke Niwa.
-
- This bot hasn't been consistently green yet because it has never actually run!
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-08-30 Takashi Toyoshima <toyoshim@chromium.org>
-
- [WebSocket] update pywebsocket to 0.6b4.
- https://bugs.webkit.org/show_bug.cgi?id=66924
-
- Reviewed by Kent Tamura.
-
- pywebsocket 0.6b2 supported minimum features of Hybi-08 specification.
- Now, pywebsocket 0.6b4 supports full features of Hybi-10 specification.
- 0.6b3 or later supports a closing handshake handler and it is useful to
- verify client's closing handshake implementation.
- 0.6b4 supports AbortedByUserException. It is useful to eliminate
- unnecessary server warning messages on intended abnormal closures.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- Update download URL and directory path.
-
-2011-08-29 Tom Zakrajsek <tomz@codeaurora.org>
-
- sheriffbot "usage" help statements are wrong
- https://bugs.webkit.org/show_bug.cgi?id=67170
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-08-29 Adam Barth <abarth@webkit.org>
-
- Add support for chomium-mac (non-CoreGraphics) baselines
- https://bugs.webkit.org/show_bug.cgi?id=67163
-
- Reviewed by Eric Seidel.
-
- This patch teaches the non-CG chromium-mac bots to look at non-CG
- baselines. However, the patch still leaves CG as the default set of
- baselines.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2011-08-29 Shawn Singh <shawnsingh@chromium.org>
-
- Small fix in chromium port of new-run-webkit-tests.
- https://bugs.webkit.org/show_bug.cgi?id=67078
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-08-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r93987, r93992, r93995, r93998, and
- r93999.
- http://trac.webkit.org/changeset/93987
- http://trac.webkit.org/changeset/93992
- http://trac.webkit.org/changeset/93995
- http://trac.webkit.org/changeset/93998
- http://trac.webkit.org/changeset/93999
- https://bugs.webkit.org/show_bug.cgi?id=67147
-
- Many failing tests (Requested by ap on #webkit).
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2011-08-26 Alexey Proskuryakov <ap@apple.com>
-
- DumpRenderTree should begin each test with an empty cookie store
- https://bugs.webkit.org/show_bug.cgi?id=63545
- <rdar://problem/5666907>
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (setDefaultsToConsistentValuesForTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- Tell WebCore to use a temporary session, starting with a clean cookie store.
-
-2011-08-23 Chris Marrin <cmarrin@apple.com>
-
- [mac] requestAnimationFrame support for mac port
- https://bugs.webkit.org/show_bug.cgi?id=59146
-
- Reviewed by Simon Fraser.
-
- Add support for request-animation-callback flag
-
- * Scripts/build-webkit:
-
-2011-08-27 Peter Beverloo <peter@chromium.org>
-
- Add a build bot for Chromium with OS(ANDROID)
- https://bugs.webkit.org/show_bug.cgi?id=66687
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-08-27 Peter Beverloo <peter@chromium.org>
-
- Update the master build bot configuration script to properly
- deal with the --chromium-android switch.
- https://bugs.webkit.org/show_bug.cgi?id=66687
-
- The --chromium-android switch is needed when running
- update-webkit-chromium and build-webkit, as it'll tell the
- scripts to pull in the right dependencies and cross-compile
- WebKit using the Android NDK.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-08-27 Peter Beverloo <peter@chromium.org>
-
- Teach the update and build scripts how to handle dependencies
- and cross-compiling rules for the Chromium port on OS(ANDROID).
- https://bugs.webkit.org/show_bug.cgi?id=66687
-
- Reviewed by Adam Barth.
-
- * Scripts/build-webkit:
- * Scripts/update-webkit:
- * Scripts/update-webkit-chromium:
- * Scripts/webkitdirs.pm:
- (argumentsForConfiguration):
- (isChromium):
- (isChromiumAndroid):
- (determineIsChromiumAndroid):
- (buildChromium):
-
-2011-08-26 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should let me know that I need to run the local server
- https://bugs.webkit.org/show_bug.cgi?id=66985
-
- Reviewed by Dimitri Glazkov.
-
- The patch triggers an alert dialog whenever the user tries to use a
- feature that requires the local server.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:
-
-2011-08-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic summary view should have pretty commit data information.
- https://bugs.webkit.org/show_bug.cgi?id=67069
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Added support for styling commit data.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Changed tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css: Defined global anchor color.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css: Styled commit data.
-
-2011-08-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Tweak the use of Open Sans in garden-o-matic summary view to make it look decent on Windows and Linux.
- https://bugs.webkit.org/show_bug.cgi?id=67066
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html: Tweaked.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Ditto.
-
-2011-08-26 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [DRT] Include cairo.h in PixelDumpSupportCairo.h for EFL too.
- https://bugs.webkit.org/show_bug.cgi?id=67041
-
- Reviewed by Martin Robinson.
-
- This is a follow-up to r89053: EFL's PixelDumpSupportEfl.cpp includes
- PixelDumpSupportCairo.h, but the latter was #including cairo.h only
- when the GTK+ port was being built.
-
- * DumpRenderTree/cairo/PixelDumpSupportCairo.h:
-
-2011-08-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Clean up and line up layout in garden-o-matic summary view.
- https://bugs.webkit.org/show_bug.cgi?id=67057
-
- 1) Renamed ui.notifications.TestFailures to ui.notifications.TestsFailing to match BuildersFailing;
- 2) Rearranged DOM structure a bit to accommodate recent changes;
- 3) Added minimal CSS to line things up.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Renamed TestFailures to TestsFailing.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js: Added mocks for BuildersFailing.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js: Renamed TestFailures to TestsFailing.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js: Updated tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Changed DOM structure.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Updated tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css: Tweaked common appearance.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css: Added minimal layout/style.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html: Added Google Web Fonts hook.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Ditto.
-
-2011-08-26 Alice Liu <alice.liu@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=66823
- Add the request info to the WebPageProxy::CreateNewPage message
-
- Reviewed by Anders Carlsson.
-
- Update function declarations with additional parameter:
- * MiniBrowser/gtk/BrowserWindow.c:
- (createNewPage):
- * MiniBrowser/mac/BrowserWindowController.m:
- (createNewPage):
- * MiniBrowser/win/BrowserView.cpp:
- (createNewPage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- * WebKitTestRunner/TestController.h:
-
-2011-08-26 Noel Gordon <noel.gordon@gmail.com>
-
- Make show-pretty-diff work on linux
- https://bugs.webkit.org/show_bug.cgi?id=67017
-
- Reviewed by Adam Barth.
-
- * Scripts/show-pretty-diff:
-
-2011-08-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reorganize garden-o-matic CSS files to match JS-built views.
- https://bugs.webkit.org/show_bug.cgi?id=66998
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/common.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/summary.css: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html: Changed to use new CSS files.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Ditto.
-
-2011-08-25 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to roll out patches
- https://bugs.webkit.org/show_bug.cgi?id=66982
-
- Reviewed by Dimitri Glazkov.
-
- This patch just wires the rollout event through the controller to the
- local server, which is already set up to perform rollouts.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2011-08-25 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- [Qt] [WK2] Assert in computeViewportAttributes when MiniBrowser started with -touch
- https://bugs.webkit.org/show_bug.cgi?id=66951
-
- Reviewed by Andreas Kling.
-
- Function computeViewportAttributes() gets called when height is still 0 because MiniBrowser sets
- width and height one by one and setWidth cause geometryChange event in QTouchWebView.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::resizeEvent):
-
-2011-08-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic summary view should provide information on builders still in flight.
- https://bugs.webkit.org/show_bug.cgi?id=66992
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Added grabbing the list of in-flight builders.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js: Added buildersInFlightForRevision.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js: Added tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Split off updating builder results to own method.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Added tests.
-
-2011-08-25 Adam Barth <abarth@webkit.org>
-
- webkit-patch rebaseline-expectations don't work when run outside the root
- https://bugs.webkit.org/show_bug.cgi?id=66966
-
- Reviewed by Eric Seidel.
-
- Turns out tool.path() used to be relative, which caused problems when
- running webkit-patch outside the root directory. This patch makes it
- absolute. I checked all callers, and they all appear to want this
- behavior.
-
- It was unclear to me how to test this change because we only really
- have a testing strategy for webkitpy, not for the main script.
-
- * Scripts/webkit-patch:
-
-2011-08-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic summary needs a mock view that could be used for working on styling
- https://bugs.webkit.org/show_bug.cgi?id=66971
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary-mock.html: Added.
-
-2011-08-25 Anders Carlsson <andersca@apple.com>
-
- Return the correct value for NPNVsupportsCarbonBool
- https://bugs.webkit.org/show_bug.cgi?id=66964
-
- Add a test.
-
- Reviewed by Adam Roben.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/SupportsCarbonEventModel.cpp: Added.
- (SupportsCarbonEventModel::SupportsCarbonEventModel):
- (SupportsCarbonEventModel::testConvert):
- (SupportsCarbonEventModel::runTest):
- (SupportsCarbonEventModel::NPP_New):
-
-2011-08-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic summary view should not be broken.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/summary.css:
- (table.comparison): Added more specificity.
-
-2011-08-25 Adam Barth <abarth@webkit.org>
-
- This command has been broken for a while. This patch updates the
- callsite to the new API.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic needs a way to report where and how tests are failing in the summary view.
- https://bugs.webkit.org/show_bug.cgi?id=66955
-
- Introduce FailureGrid, your one-stop failure-indicating destination.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html: Added new scripts.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Updated to use FailureGrid.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Updated tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Added new scripts.
-
-2011-08-25 Igor Oliveira <igor.oliveira@openbossa.org>
-
- Add myself to the committers list
- https://bugs.webkit.org/show_bug.cgi?id=66941
-
- Reviewed by Andreas Kling.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r93767.
- http://trac.webkit.org/changeset/93767
- https://bugs.webkit.org/show_bug.cgi?id=66931
-
- Broke Qt bot. (Requested by yutak on #webkit).
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-08-25 Takashi Toyoshima <toyoshim@chromium.org>
-
- [WebSocket] update pywebsocket to 0.6b3 which supports closing handshake test
- https://bugs.webkit.org/show_bug.cgi?id=66924
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-08-24 Adam Barth <abarth@webkit.org>
-
- The user can't close the details view in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=66911
-
- Reviewed by Dimitri Glazkov.
-
- In addition to adding a close button, this patch changes the test
- selector to use a <select> element and refactors the test selector to
- share code with the builder selector.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2011-08-24 James Robinson <jamesr@chromium.org>
-
- [chromium] Stacktrace not in test output when a test crashes
- https://bugs.webkit.org/show_bug.cgi?id=66806
-
- Reviewed by Dirk Pranke.
-
- Appends the .error and .text output when a test crashes since on chromium the .text contains the actual stack
- trace.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-08-24 Adam Barth <abarth@webkit.org>
-
- Remove empty directory.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui: Removed.
-
-2011-08-24 Adam Barth <abarth@webkit.org>
-
- Finish writing up details-view in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=66891
-
- Reviewed by Dimitri Glazkov.
-
- This patch mostly just copies a bunch of CSS from main.css to
- summary.css. Presumably we'll delete main.css soon.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/summary.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
-
-2011-08-24 James Robinson <jamesr@chromium.org>
-
- Some compositing LayoutTests flakily crashing on Mac 10.6
- https://bugs.webkit.org/show_bug.cgi?id=66740
-
- Reviewed by Adam Barth.
-
- Null-check obj->pluginTest before dereferencing it. This can be null in chromium if the plugin load fails, for
- example if the test attempts to load a PDF plugin the load will fail since we don't have such a thing in the
- chromium configuration.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_Destroy):
-
-2011-08-24 Anton D'Auria <adauria@apple.com>
-
- No review necessary.
-
- Adding myself to list of committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-24 Avi Drissman <avi@google.com>
-
- Crash when restoring NSGraphicsContext when running the Chromium GPU layout tests on Mac
- https://bugs.webkit.org/show_bug.cgi?id=66875
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
-
-2011-08-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- Make notifications appear in time order again.
- https://bugs.webkit.org/show_bug.cgi?id=66815
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Added setting index of the notification.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Updated the test.
-
-2011-08-23 James Robinson <jamesr@chromium.org>
-
- [chromium] Need a way to test lost compositor context recovery
- https://bugs.webkit.org/show_bug.cgi?id=66820
-
- Reviewed by Kenneth Russell.
-
- Exposes a LayoutTestController interface in chromium to simulate a
- lost compositor context.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::loseCompositorContext):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-08-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- Change garden-o-matic frontend builder array to be a configuration map.
- https://bugs.webkit.org/show_bug.cgi?id=66816
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js: Made kBuilders a map, with value being a configuration object.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js: Adjusted callsites to expect a map.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/main.js: Ditto.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js: Ditto.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js: Ditto.
-
-2011-08-23 Cary Clark <caryclark@google.com>
-
- Turn WebCanvas into CGContext before drawing scrollbar (DRT using Skia on Mac)
- https://bugs.webkit.org/show_bug.cgi?id=66803
-
- This fixes the WebKit Canaries, in particular avoids a crash on tests
- like css1/basic/comments.html.
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
- The NSGraphicsContext call graphicsContextWithGraphicsPort takes a void*
- parameter, so it took a WebCanvas* (mapped to SkCanvas* in Skia-land)
- and treated it as if it were a CGContextRef.
-
-2011-08-23 Patrick Gansterer <paroga@webkit.org>
-
- Fix mergeChangeLogs test on native windows
- https://bugs.webkit.org/show_bug.cgi?id=66797
-
- Reviewed by Adam Roben.
-
- Windows has no /tmp/ directory and the "TMPDIR" environment variable isn't set in the default setup.
- Add the "TEMP" environment variable as additional source for the temporary directory used in writeTempFile.
-
- * Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl:
- (writeTempFile):
-
-2011-08-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic relative time is wrong and updates too frequently.
- https://bugs.webkit.org/show_bug.cgi?id=66802
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js: Changed to account for rounding correctly.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js: Updated tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js: Upped the interval to 1 minute.
-
-2011-08-23 Patrick Gansterer <paroga@webkit.org>
-
- Add missing quotes around filenames in mergeChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=66794
-
- Reviewed by Adam Roben.
-
- * Scripts/VCSUtils.pm:
- (mergeChangeLogs):
-
-2011-08-23 Patrick Gansterer <paroga@webkit.org>
-
- webkit-perl tests fail on win32 Perl due to lack of list form of pipe open implementation
- https://bugs.webkit.org/show_bug.cgi?id=49080
-
- Reviewed by Adam Roben.
-
- Use the string form of pipe open instead (like we do at all other places).
-
- * Scripts/VCSUtils.pm:
- (mergeChangeLogs):
-
-2011-08-23 Adam Barth <abarth@webkit.org>
-
- garden-o-matic summary should be able to examine failures
- https://bugs.webkit.org/show_bug.cgi?id=66748
-
- Reviewed by Dimitri Glazkov.
-
- This patch refactors a bunch of code from summary.js to independent
- controllers in controllers.js. This patch also contains the first
- iteration of binding the "examine" event to a the behavior showing the
- details view for the tests. There's more work to do here to make this
- work properly (and elegantly), but this patch is a start.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers/rebaseline.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
-
-2011-08-23 Adam Barth <abarth@webkit.org>
-
- webkitpy/common/config/build.py shouldn't mention non-existant Android directory
- https://bugs.webkit.org/show_bug.cgi?id=66737
-
- Reviewed by Steve Block.
-
- This directory doesn't exist anymore now that the Android port shares
- more code with Chromium.
-
- * Scripts/webkitpy/common/config/build.py:
-
-2011-08-22 Eric Seidel <eric@webkit.org>
-
- Hack start-queue.sh in an attempt to resurrect the cr-jail-1 cr-mac-ews bot.
- I won't have ssh access to the bot again for a couple days, so
- attempting to fix by changing this script. If this doesn't
- work we'll just live with the it hung for now.
-
- Unreviewed.
-
- * EWSTools/start-queue.sh:
-
-2011-08-22 Dimitri Glazkov <dglazkov@chromium.org>
-
- webkit-patch rebaseline-expectations command should not rearrange the entire test_expectations.txt file.
- https://bugs.webkit.org/show_bug.cgi?id=66727
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Made it possible to run TestExpectationSerializer without a TestConfigurationConverter,
- in which case the serializer treats all expectations as unparsed.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added unit tests.
-
-2011-08-22 Dimitri Glazkov <dglazkov@chromium.org>
-
- Update unit test expectations after r93530.
-
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py: Updated.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py: Ditto.
-
-2011-08-22 Dimitri Glazkov <dglazkov@chromium.org>
-
- [Chromium] Expand CPU/GPU/Skia/CG into a matrix in graphics_type.
- https://bugs.webkit.org/show_bug.cgi?id=66705
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Added plumbing for CG graphics types.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Adjusted unit test.
-
-2011-08-22 James Robinson <jamesr@chromium.org>
-
- [chromium] Update builder names for chromium gpu bots due to CG switchover
- https://bugs.webkit.org/show_bug.cgi?id=66693
-
- Reviewed by Dirk Pranke.
-
- Update the port and builder names for the chromium mac gpu bots to
- account for the CG transition.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2011-08-22 Dirk Pranke <dpranke@chromium.org>
-
- fix the GPU bot names on the layout test dashboard
- https://bugs.webkit.org/show_bug.cgi?id=66697
-
- Reviewed by Dimitri Glazkov.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2011-08-22 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic's relative time display should be updated regularly.
- https://bugs.webkit.org/show_bug.cgi?id=66682
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js: Moved Time to ui.Time, added code for regular updates.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Changed to use ui.Time.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js: Added tests.
-
-2011-08-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Pass --makeargs of build-webkit to chromium linux builder
- https://bugs.webkit.org/show_bug.cgi?id=66361
-
- Reviewed by Tony Chang.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (buildChromiumMakefile):
- (buildChromium):
-
-2011-08-22 Peter Beverloo <peter@chromium.org>
-
- Add myself to the contributor list.
- https://bugs.webkit.org/show_bug.cgi?id=66674
-
- Reviewed by Tony Gentilcore.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-22 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] ImageDiff does not consider --tolerance
- https://bugs.webkit.org/show_bug.cgi?id=66299
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2011-08-22 Csaba Osztrogonác <ossy@webkit.org>
-
- Update contributor list.
-
- Reviewed by Zoltan Herczeg.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-22 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- [ORWT] Fix --reset-results --add-platform-exceptions combo
- https://bugs.webkit.org/show_bug.cgi?id=65464
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/old-run-webkit-tests:
-
-2011-08-20 Adam Barth <abarth@webkit.org>
-
- garden-o-matic summary.html should have UI for examining failures
- https://bugs.webkit.org/show_bug.cgi?id=66625
-
- Reviewed by Dimitri Glazkov.
-
- This patch introduces the notion of UI actions and converts our
- existing manual <button> manipulation with this new abstraction. The
- patch also adds an Examine button to failure notifications. In a
- future patch, I'll add a controller that wires this button up to
- something useful.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/actions_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
-
-2011-08-20 Adam Barth <abarth@webkit.org>
-
- garden-o-matic summary page should indiciate compile failures
- https://bugs.webkit.org/show_bug.cgi?id=66624
-
- Reviewed by Dimitri Glazkov.
-
- This patch creates a notification-based UI for build failures. The new
- UI displays the same information that used to be displayed in the
- infobar. There's lots of room for improvement in surfacing more
- information, but this is a start.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2011-08-19 James Robinson <jamesr@chromium.org>
-
- [chromium] Default to experimental-fully-parallel mode for chromium gpu port
- https://bugs.webkit.org/show_bug.cgi?id=66606
-
- Reviewed by Dirk Pranke.
-
- The chromium GPU configuration does not (currently) contain any tests
- incompatible with --experimental-fully-parallel, and this flag is a
- significan speedup because of the directory canvas/philip/tests which
- contains 802 tests in the same directory. Setting this option by
- default on this configuration is a 2x speed in release, 44s to 22s,
- and a 3x speedup in debug, 223s to 77s, on linux on a 16 core machine.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-08-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r93426.
- http://trac.webkit.org/changeset/93426
- https://bugs.webkit.org/show_bug.cgi?id=66607
-
- Broke the Mac build by not building gtest.framework anymore
- (Requested by andersca on #webkit).
-
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp:
-
-2011-08-19 James Robinson <jamesr@chromium.org>
-
- [chromium] Chromium GPU layout tests should use the normal process number selection, not force 1 worker
- https://bugs.webkit.org/show_bug.cgi?id=66603
-
- Reviewed by Dirk Pranke.
-
- The various ChromiumGpu ports should use the same child worker
- selection logic as other ports so they can run with full
- parallelization on multicore systems.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
-
-2011-08-19 Alok Priyadarshi <alokp@chromium.org>
-
- [chromium] Remove dependency of WebThemeControlDRTWin on skia::PlatformCanvas
- https://bugs.webkit.org/show_bug.cgi?id=66570
-
- Reviewed by Mihai Parparita.
-
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
- (WebThemeControlDRTWin::draw):
- (WebThemeControlDRTWin::drawTextField):
- (WebThemeControlDRTWin::drawProgressBar):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h:
-
-2011-08-18 Dmitry Lomov <dslomov@google.com>
-
- TestWebKitAPI breaks on Windows due to fast malloc incompatibility.
- https://bugs.webkit.org/show_bug.cgi?id=66521
-
- This patch ensures that gtest uses new and delete operators that are defined in JavaScriptCore.
-
- Reviewed by David Levin.
-
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp: Removed redefinition of JS_EXPORTDATA.
-
-2011-08-19 Adam Roben <aroben@apple.com>
-
- Add project file changes I left out in r93417
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2011-08-19 Adam Roben <aroben@apple.com>
-
- Add a helper class for swizzling ObjC instance methods to TestWebKitAPI
-
- Fixes <http://webkit.org/b/66565> TestWebKitAPI needs a way to override instance methods of
- NSScreen
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new files.
-
- * TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm: Added.
- (-[SimpleObject setValue:]): Original implementation.
-
- (TestWebKitAPI::setValue2):
- (TestWebKitAPI::setValue3):
- Swizzled implementations.
-
- (TestWebKitAPI::TEST): Test that we can swizzle and re-swizzle and un-swizzle an ObjC
- instance method.
-
- * TestWebKitAPI/mac/InstanceMethodSwizzler.h: Added.
- * TestWebKitAPI/mac/InstanceMethodSwizzler.mm: Added.
- (TestWebKitAPI::InstanceMethodSwizzler::InstanceMethodSwizzler): Swizzle the method.
- (TestWebKitAPI::InstanceMethodSwizzler::~InstanceMethodSwizzler): Unswizzle the method.
-
-2011-08-19 Tom Zakrajsek <tomz@codeaurora.org>
-
- Fix _path_to_apache() error reporting
- https://bugs.webkit.org/show_bug.cgi?id=66486
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-08-19 Adam Roben <aroben@apple.com>
-
- Windows build fix after r93404
-
- * TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp: Added missing #include.
-
-2011-08-19 Tony Gentilcore <tonyg@chromium.org>
-
- Add leandrogracia to the committers list
- https://bugs.webkit.org/show_bug.cgi?id=66552
-
- Also fix line endings in file.
-
- No reviewed required.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-19 Amruth Raj <amruthraj@motorola.com>
-
- Fix compilation issue in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=66554
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/PixelDumpSupport.cpp:
-
-2011-08-19 Adam Roben <aroben@apple.com>
-
- Pull some of DynamicDeviceScaleFactor's code up into a shareable base class
-
- This will make it easier to write other WebKit-agnostic tests
-
- Fixes <http://webkit.org/b/66558> Would like to be able to reuse DynamicDeviceScaleFactor's
- code in other WebKit-agnostic tests
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new files.
-
- * TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm: Fixed copyright. Moved a bunch of
- code to WebKitAgnosticTest.h/mm. Changed to inherit from WebKitAgnosticTest.
- (TestWebKitAPI::DynamicDeviceScaleFactor::url): Simple getter.
- (TestWebKitAPI::DynamicDeviceScaleFactor::didLoadURL): Calls through to runTest.
- (TestWebKitAPI::DynamicDeviceScaleFactor::runTest): Removed loading code which
- WebKitAgnosticTest handles for us.
- (TestWebKitAPI::TEST_F): Removed view-creation code which WebKitAgnosticTest handles for us.
-
- * TestWebKitAPI/mac/WebKitAgnosticTest.h: Added. Code came from DynamicDeviceScaleFactor.
- (TestWebKitAPI::WebKitAgnosticTest::loadAndWaitUntilDone): Code came from
- DynamicDeviceScaleFactor::runTest.
-
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm: Copied from Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm.
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit1Test): Code came from
- DynamicDeviceScaleFactor.WebKit.
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit2Test): Code came from
- DynamicDeviceScaleFactor.WebKit2.
-
-2011-08-19 Adam Roben <aroben@apple.com>
-
- Clean up #includes in TestWebKitAPI
-
- Fixes <http://webkit.org/b/66556> TestWebKitAPI's prefix header isn't very helpful
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPIPrefix.h: Added wtf/Platform.h. Added gtest/gtest.h for C++
- files and WebKit/WebKit.h for ObjC files.
-
- * TestWebKitAPI/InjectedBundleController.cpp:
- * TestWebKitAPI/JavaScriptTest.h:
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/Test.h:
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp:
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- * TestWebKitAPI/Tests/WTF/VectorReverse.cpp:
- * TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp:
- * TestWebKitAPI/Tests/WebKit2/CookieManager.cpp:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp:
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/Find.cpp:
- * TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp:
- * TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp:
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp:
- * TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp:
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp:
- * TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp:
- * TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp:
- * TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm:
- * TestWebKitAPI/TestsController.cpp:
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- Removed now-unnecessary #includes. Moved #includes of Test.h in with the rest of the
- #includes since it is no longer a special header.
-
-2011-08-18 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests hung while acquiring http lock on snow leopard bots
- https://bugs.webkit.org/show_bug.cgi?id=64886
-
- Temporarily disable the http locking to work around the issue.
- I'm not actually sure if this is going to work or improve things
- much.
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-08-18 Tony Chang <tony@chromium.org>
-
- add embedded png checksums to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=66494
-
- Looks like WebKitTestRunner has never supported embedded checksums. This copies
- some code from DRT and adds it to the WebKitTestRunner.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/CyclicRedundancyCheck.cpp: Copied from Tools/DumpRenderTree
- * WebKitTestRunner/CyclicRedundancyCheck.h: Copied from Tools/DumpRenderTree
- * WebKitTestRunner/GNUmakefile.am: Add new files
- * WebKitTestRunner/PixelDumpSupport.cpp: Copied from Tools/DumpRenderTree
- * WebKitTestRunner/PixelDumpSupport.h: Copied from Tools/DumpRenderTree
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Add new files
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::dumpBitmap): Refactor to use PixelDumpSupport.
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::dumpBitmap): Refactor to use PixelDumpSupport.
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/win/WebKitTestRunner.vcproj: Add new files
-
-2011-08-18 Shawn Singh <shawnsingh@chromium.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=47240
-
- Fixed a cygwin path problem in the chromium port of diff_image;
- Also made the return values of the diff_image function more consistent.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-08-17 Alejandro G. Castro <alex@igalia.com>
-
- [GTK] Fix compilation problems with deprecations in gtk+
- https://bugs.webkit.org/show_bug.cgi?id=66073
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main): G_CONST_RETURN was deprecated
- * GtkLauncher/main.c:
- (createWindow): Added gtk_box_new conditional compilation for
- gtk+-3.
- * MiniBrowser/gtk/BrowserWindow.c:
- (browser_window_init): Replaced gtk_vbox_new with gtk_box_new, we
- are just supporting gtk+-3 for WebKit2.
-
-2011-08-18 Anders Carlsson <andersca@apple.com>
-
- Fix libc++ C++0x build
- https://bugs.webkit.org/show_bug.cgi?id=66479
-
- Reviewed by Adam Roben.
-
- Add missing includes.
-
- * DumpRenderTree/LayoutTestController.cpp:
- * DumpRenderTree/mac/CheckedMalloc.cpp:
-
-2011-08-18 Adam Roben <aroben@apple.com>
-
- Test that WebKit updates style when a WebView is moved between differently-scaled windows
-
- Test for <http://webkit.org/b/66412> <rdar://problem/9971958> WebKit doesn't react when a
- WebView is moved between windows with different backing scale factors
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/JavaScriptTest.cpp:
- (TestWebKitAPI::runJSTest): Moved a little bit of code from here...
- (TestWebKitAPI::compareJSResult): ...to here. Also made the error message more similar to
- gtest's built-in error messages.
-
- * TestWebKitAPI/JavaScriptTest.h: Added overloads of runJSTest that take a WebView * and
- WKView * for convenience on Mac. Added compareJSResult helper function for implementing
- those overloads.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added new files.
-
- * TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm: Added.
- (-[FrameLoadDelegate initWithDidFinishLoadBoolean:]): Simple initializer.
- (-[FrameLoadDelegate webView:didFinishLoadForFrame:]): Record that the load finished.
- (TestWebKitAPI::didFinishLoadForFrame): Record that the load finished.
- (TestWebKitAPI::setPageLoaderClient): Set up the client.
- (TestWebKitAPI::DynamicDeviceScaleFactor::DynamicDeviceScaleFactor): Simple constructor.
- (TestWebKitAPI::DynamicDeviceScaleFactor::createWindow): Creates a
- SyntheticBackingScaleFactorWindow and returns it.
- (TestWebKitAPI::DynamicDeviceScaleFactor::runTest): Loads devicePixelRatio.html and checks
- that WebKit uses the correct scale factor when the WebView is not in a window, is put in a
- window, is moved to a differently-scaled window, and is taken out of the window.
- (TestWebKitAPI::DynamicDeviceScaleFactor::loadURL): Helper function with overloads for
- WebKit1 and WebKit2.
- (TestWebKitAPI::TEST_F): Runs the test, with overloads for WebKit1 and WebKit2.
-
- * TestWebKitAPI/Tests/mac/devicePixelRatio.html: Added.
-
- * TestWebKitAPI/mac/JavaScriptTestMac.mm: Added.
- (TestWebKitAPI::runJSTest): Fairly simple overloads for WebView * and WKView *.
-
- * TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.h: Added.
- * TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m: Added.
- (-[SyntheticBackingScaleFactorWindow initWithContentRect:styleMask:backing:defer:]): Simple
- initializer.
- (-[SyntheticBackingScaleFactorWindow setBackingScaleFactor:]): Simple setter.
-
- (-[SyntheticBackingScaleFactorWindow backingScaleFactor]):
- (-[SyntheticBackingScaleFactorWindow userSpaceScaleFactor]):
- Overrides of NSWindow methods that WebKit uses to determine the device scale factor.
-
-2011-08-18 Dmitry Lomov <dslomov@google.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=66425
- check-webkit-style should detect incorrectly formatted file change descriptions.
- Description, if present, should be separated from colon with a space.
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/checkers/changelog.py: Fix.
- * Scripts/webkitpy/style/checkers/changelog_unittest.py: Unit tests.
-
-2011-08-18 Adam Barth <abarth@webkit.org>
-
- webkit-patch pretty-diff should be shown in main help
- https://bugs.webkit.org/show_bug.cgi?id=66404
-
- Reviewed by Dimitri Glazkov.
-
- As requested by dglazkov.
-
- * Scripts/webkitpy/tool/commands/prettydiff.py:
-
-2011-08-17 Dmitry Lomov <dslomov@google.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=66400
- Fix TestWebKitAPI build on Mac OS.
-
- Reviewed by David Levin.
-
- * TestWebKitAPI/Configurations/Base.xcconfig: Added ICU headers to the HEADER_SEARCH_PATH.
-
-2011-08-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic spring cleaning: move scripts, styles, and images in the respective directories.
- https://bugs.webkit.org/show_bug.cgi?id=66427
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ORWTResultsParser.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/PersistentCache.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBugzilla.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBuildbot.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/bugzilla_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers/rebaseline.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-green.png: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-red.png: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-green.png: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-green.png.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/images/favicon-red.png: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-red.png.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Buildbot_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Builder_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FailingTestsBugForm_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyLayoutTestDetector_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/FlakyTestBugForm_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestHistoryAnalyzer.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NRWTResultsParser.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/NewBugForm_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ORWTResultsParser.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ORWTResultsParser.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/PersistentCache.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/PersistentCache.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/TestRelatedBugForm_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Trac.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBugzilla.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBugzilla.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/WebKitBuildbot.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBuildbot.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/bugzilla_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/bugzilla_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/main.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js.
- ():
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/trac_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/trac_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/unexpected-passes.js: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/TestFailures.css: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/main.css: Copied from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/trac_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.js: Removed.
-
-2011-08-17 Jochen Eisinger <jochen@chromium.org>
-
- Make SVNTest.test_svn_apply use the same timezone logic as VCSUtils.pm
- https://bugs.webkit.org/show_bug.cgi?id=65877
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2011-08-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- Remove base.keys and replace it with Object.keys.
- https://bugs.webkit.org/show_bug.cgi?id=66422
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Removed base.keys.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Removed unit tests for it.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js: Replaced with Object.keys
-
-2011-08-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic Summary view should have items in descending chronological order.
- https://bugs.webkit.org/show_bug.cgi?id=66403
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js: Renamed "push" to "add" for clarity, cleaned up some stuff.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Rewrote add to insert DOM elements in order.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Added unit tests.
-
-2011-08-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- Fix a few errors in garden-o-matic frontend unit tests.
- https://bugs.webkit.org/show_bug.cgi?id=66421
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Changed my excellent test to view time as variable continuum.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders_unittests.js: Tweaked the test to accommodate new builder names.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Hurriedly covered up my prior sins.
-
-2011-08-17 Adam Barth <abarth@webkit.org>
-
- Update Tools to account for (CG) being added to Chromium builder names
- https://bugs.webkit.org/show_bug.cgi?id=66410
-
- Reviewed by Adam Barth.
-
- Some of these names will change back once we turn on Skia bots.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-08-16 Dimitri Glazkov <dglazkov@chromium.org>
-
- Wire up relative time to garden-o-matic summary view.
- https://bugs.webkit.org/show_bug.cgi?id=66343
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js: Add time to the commitData object.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model_unittests.js: Adjusted unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Wired up relative date.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Updated unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/trac_unittests.js: Adjusted unit tests.
-
-2011-08-17 Adam Roben <aroben@apple.com>
-
- Make run-api-tests run tests in alphabetical order
-
- Fixes <http://webkit.org/b/66401> run-api-tests runs tests in a semi-random order
-
- Reviewed by David Kilzer.
-
- * Scripts/run-api-tests:
- (runAllTests):
- (runAllTestsInSuite):
- Sort the lists of tests and suites before iterating over them.
-
-2011-08-17 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to rebaseline expected failures
- https://bugs.webkit.org/show_bug.cgi?id=66204
-
- Reviewed by Dimitri Glazkov.
-
- This patch introduces a new view for displaying expect, actual, and
- differences between results. The new view also has a fledgling
- controller that handles some basic operations. The new view is
- exercised by rebaseline.html, which lets you rebaselines expected
- failures, but the new view is not fully integrated into
- garden-o-matic.html
-
- More patches will be required to make this stuff fully working, but
- this patch was already somewhat spiraling out of control. Hopefully
- this patch will serve as a good starting point for further development.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/controllers/rebaseline.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/rebaseline.html: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results_unittests.js: Added.
-
-2011-08-16 Chang Shu <cshu@webkit.org>
-
- Support reset in WebCore::Internals
- https://bugs.webkit.org/show_bug.cgi?id=66307
-
- Reviewed by Dimitri Glazkov.
-
- Added call to resetInternalsObject in DRT.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
-
-2011-08-17 Alexis Menard <alexis.menard@openbossa.org>
-
- Add a new build slave for the Qt port on Mac OS SnowLeopard.
- https://bugs.webkit.org/show_bug.cgi?id=66392
-
- Modify the config file to include the new build slave.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-08-17 Sam White <samuel.white@rochester.edu>
-
- AccessibilityObject levels are inconsistent
- https://bugs.webkit.org/show_bug.cgi?id=66180
-
- Added the ability to get numeric attribute values using numberAttributeValue. This
- function complements the existing stringAttributeValue and boolAttributeValue functions.
- The addition of numberAttributeValue was necessary because the stringAttributeValue
- function does a type check and will only return strings. This limitation made it
- impossible to get values for attributes that returned an NSNumber.
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (numberAttributeValueCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::numberAttributeValue):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::numberAttributeValue):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::numberAttributeValue):
-
-2011-08-17 Adam Roben <aroben@apple.com>
-
- Tell Trac logs always to display all specified revisions in a single page
-
- Trac imposes a default limit of 100 revisions per log page. We need to tell it to allow more
- revisions than that.
-
- Fixes <http://webkit.org/b/66373> Links to Trac from TestFailures page don't always show all
- relevant revisions
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- (trac.logURL): Add a limit parameter to the log URL that allows all revisions to be seen in
- a single page.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/trac_unittests.js:
- Updated tests for the above.
-
-2011-08-17 Adam Roben <aroben@apple.com>
-
- Fix TestFailures's link to file a bug about TestFailures itself
-
- Fixes <http://webkit.org/b/66387> REGRESSION (r92135): TestFailures page's link to file a
- bug about itself is broken
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForAuxiliaryUIElements): Added a path separator to separate
- the host from the path.
-
-2011-08-17 Adam Roben <aroben@apple.com>
-
- Teach TestFailures to ignore unbelievably short test runs
-
- Fixes <http://webkit.org/b/66385> TestFailures page thinks all tests passed in
- http://build.webkit.org/builders/Windows%207%20Release%20(Tests)/builds/14956
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): If it looks like all tests passed, but
- run-webkit-tests took less than 10 seconds to run, assume that some weird error occurred
- that caused it not to run any tests at all (as happened for a while due to
- <http://webkit.org/b/64988>). Bumped the cache version to evict old, buggy cached data.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Test for the above.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bumped the cache version to evict old, buggy cached data.
-
-2011-08-16 Adam Barth <abarth@webkit.org>
-
- Add a CG qualifier similar to the GPU qualifier
- https://bugs.webkit.org/show_bug.cgi?id=66359
-
- Reviewed by Eric Seidel.
-
- Once we have a Skia configuration on Chromium Mac, we'll use this CG
- qualifier to note that expectations apply only to the CG configuration.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-08-16 Eric Seidel <eric@webkit.org>
-
- REGRESSION(92717): WinPort needs to parse version information from port_name
- https://bugs.webkit.org/show_bug.cgi?id=66325
-
- Unreviewed. Fixing an exception/typo seen on the bots (and testing to make sure it works).
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-08-16 Adam Barth <abarth@webkit.org>
-
- Change webkit-patch analyze-baselines to print in a more unix-friendly way
- https://bugs.webkit.org/show_bug.cgi?id=66349
-
- Reviewed by James Robinson.
-
- As requested by jamesr.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-16 Eric Seidel <eric@webkit.org>
-
- REGRESSION(92717): WinPort needs to parse version information from port_name
- https://bugs.webkit.org/show_bug.cgi?id=66325
-
- Reviewed by Adam Barth.
-
- WinPort didn't have any port_name parsing logic.
- Seemed it was best to just share the logic from MacPort.
- Sharing the logic from MacPort seemed easiest with a shared superclass.
- Once I created ApplePort (the superclass) there was a bunch of logic to share.
- I found LeakDetector was just in the way when switching back and forth
- between win.py and mac.py so I moved it into its own file.
-
- The only logic change here is that WinPort should now be
- able to parse port_name values like MacPort (and other ports)
- can. The fact that ports do this in their constructors is
- wrong and a source of many bugs. But at least now WinPort
- matches the status-quo.
-
- * Scripts/webkitpy/layout_tests/port/apple.py: Added.
- * Scripts/webkitpy/layout_tests/port/leakdetector.py: Added.
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
-
-2011-08-16 Adam Barth <abarth@webkit.org>
-
- Add webkit-patch analyze-baselines, as requested by jamesr.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-16 Adam Barth <abarth@webkit.org>
-
- Fold bulk-optimize-baselines into optimize-baselines
- https://bugs.webkit.org/show_bug.cgi?id=66345
-
- Reviewed by James Robinson.
-
- bulk-optimize-baselines is now a superset of optimize-baselines, so
- they can be combined.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-16 Adam Barth <abarth@webkit.org>
-
- Move chromium-mac to chromium-cg-mac to prepare for Skia switchover
- https://bugs.webkit.org/show_bug.cgi?id=66334
-
- Reviewed by Tony Chang.
-
- This patch moves us closer to switching the Chromium port from
- CoreGraphics to Skia. This patch teaches our tools that the current
- Chromium Mac configuration is actually chromium-cg-mac, which makes
- room for a future chromium-mac configuration that uses Skia.
-
- Shortly after this patch lands, I'll do a server-side move of the
- chromium-mac and chromium-mac-leopard directories to chromium-cg-mac
- and chromium-cg-mac-leopard.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-08-16 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic frontend needs a friendly relative time description method.
- https://bugs.webkit.org/show_bug.cgi?id=66324
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Added base.relativizeTime method.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Added unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Wired up Time widget to use it.
-
-2011-08-16 Dimitri Glazkov <dglazkov@chromium.org>
-
- Summary view should not add multiple entries for the same test failure.
- https://bugs.webkit.org/show_bug.cgi?id=66318
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js: Added a simplistic updating button.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Added ways to check for
- equality of ui.notifications.FailingTest, and whether ui.notifications.TestFailures already contains a given failure analysis.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Added tests.
-
-2011-08-16 Adam Roben <aroben@apple.com>
-
- Teach TestFailures that tests that have failed or passed many times in a row are not flaky
-
- The basic strategy here is that once a test has failed or passed many times in a row we
- never again consider it as a possibly flaky test. It's a simple strategy but seems to result
- in many fewer false positives than our current behavior.
-
- Fixes <http://webkit.org/b/66327> TestFailures page considers far too many tests to be
- flaky, including tests that failed for a while but then were fixed
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js:
- (FlakyLayoutTestDetector): Initialize new _buildCount property, which is used to track the
- number of non-too-many-failure builds we've seen.
- (FlakyLayoutTestDetector.prototype.incorporateTestResults): Don't track tests which haven't
- failed in the _maximumFailOrPassCount most recent builds. For other not-yet-considered-flaky
- tests, keep track of how many times they have passed or failed in a row. If they pass or
- fail more than _maximumFailOrPassCount times, consider them to be non-flaky. (Once a test is
- considered flaky it doesn't matter how many times it passes or fails.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector_unittests.js:
- Added tests for the above.
-
-2011-08-16 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic needs a summary view with actions for each problem.
- https://bugs.webkit.org/show_bug.cgi?id=66144
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html: Added notifications tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/summary.css: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/summary.html: Added.
-
-2011-08-16 Dean Jackson <dino@apple.com>
-
- Adding Ted "hober" O'Connor as a non-committing contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-16 Adam Roben <aroben@apple.com>
-
- Teach TestFailures how to interpret unfinished test runs
-
- Fixes <http://webkit.org/b/66309> TestFailures thinks all tests passed in
- http://build.webkit.org/builders/Lion%20Intel%20Debug%20(Tests)/builds/136
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Look for "isFinished" in the layout-test step
- rather than "isStarted" so that we don't count builds for which the test run never finished.
- Bumped the cache version to evict old, buggy cached data.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added a test for the above, and made a somewhat synthetic test more realistic by including
- more of the actual JSON data from build.webkit.org.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bumped the cache version to evict old, buggy
- cached data.
-
-2011-08-16 Adam Roben <aroben@apple.com>
-
- Make Apple's Windows port fall back to Lion results instead of SnowLeopard
-
- Apple's Windows port now uses Lion-era versions of CoreFoundation, ICU, etc., so in theory
- should match Lion's behavior.
-
- Fixes <http://webkit.org/b/66302> Apple's Windows port matches Lion for some test results,
- but doesn't use Lion results
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (expectedDirectoryForTest):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_baseline_search_path):
- Replaced mac-snowleopard with mac-lion.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Added an entry for the LayoutTests/platform/mac-lion
- directory, which all Apple Mac platforms and Apple Win platforms could potentially use
- results from. Removed Apple Win from being affected by mac-snowleopard changes, since it
- will no longer look there for results.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest.test_should_build): Tests for the above changes.
-
-2011-08-16 Dean Jackson <dino@apple.com>
-
- Move me from contributor to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic frontend needs model.commitDataForRevisionRange function.
- https://bugs.webkit.org/show_bug.cgi?id=66252
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js: Added commitDataForRevisionRange method.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model_unittests.js: Added tests.
-
-2011-08-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic frontend needs a generic way to track updates.
- https://bugs.webkit.org/show_bug.cgi?id=66245
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Added UpdateTracker.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Added tests.
-
-2011-08-15 Adam Roben <aroben@apple.com>
-
- Teach TestWebKitAPI/gtest how to print JavaScript failures nicely
-
- Failures now give output of the form: foo should be bar but is baz
-
- Fixes <http://webkit.org/b/66240> It's hard to tell what the actual result of a failed JS
- test is in TestWebKitAPI's output
-
- Reviewed by David Levin.
-
- * TestWebKitAPI/JavaScriptTest.cpp:
- (TestWebKitAPI::JavaScriptCallbackContext::JavaScriptCallbackContext): Removed now-unused
- members.
- (TestWebKitAPI::javaScriptCallback): Changed to just store the result string in the context
- object, rather than doing any testing of it here.
- (TestWebKitAPI::runJSTest): Made this function a gtest predicate-formatter. This allows us
- to use a pretty error message when the test fails.
-
- * TestWebKitAPI/JavaScriptTest.h: Changed runJSTest to a predicate-formatter, and added nice
- gtest-style macros that wrap it.
-
- * TestWebKitAPI/Test.h: Removed now-unused TEST_ASSERT_RETURN.
-
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
- (TestWebKitAPI::TEST): Changed to use the new macros.
-
- * TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp:
- (TestWebKitAPI::createSessionStateContainingFormData): Ditto. Note that this function no
- longer returns 0 when the JS test fails. That shouldn't have any effect on whether or not
- the test passes, though. Returning early seems to have been an unnecessary optimization.
-
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- (TestWebKitAPI::TEST): Changed to use the new macros.
-
-2011-08-15 Eric Seidel <eric@webkit.org>
-
- Move the Leaks bot back to ORWT until I can fix LeaksViewer regressions filed by Adam Roben in bug 66227 and 66228.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (usingLeaks):
- (useNewRunWebKitTests):
-
-2011-08-14 Adam Barth <abarth@webkit.org>
-
- Switch results detail view over to new-style object-oriented UI widgets
- https://bugs.webkit.org/show_bug.cgi?id=66200
-
- Reviewed by Dimitri Glazkov.
-
- This patch replaces my goofy template-based UI for the results
- comparison screen with new object-oriented UI widgets.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui/results.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
-
-2011-08-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic's analyzeUnexpectedFailures needs a completion callback.
- https://bugs.webkit.org/show_bug.cgi?id=66166
-
- Also changed base.RequestTracker to:
- a) fire callback immediately if requestsInFlight is 0;
- b) not barf if callback is not supplied.
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js: Started using completion callback.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js: Added completion callback.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Changed RequestTracker.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittest.js: Added unit tests.
-
-2011-08-12 Mark Rowe <mrowe@apple.com>
-
- Be more forward-looking in the choice of compiler.
-
- Rubber-stamped by Jon Honeycutt.
-
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig:
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig:
-
-2011-08-12 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- DRT: Add support for gesture events.
- https://bugs.webkit.org/show_bug.cgi?id=66105
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureScrollBegin):
- (EventSender::gestureScrollEnd):
- (EventSender::gestureTap):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/EventSender.h:
-
-2011-08-12 Andy Estes <aestes@apple.com>
-
- allowRoundingHacksCallback uses the wrong argument for 'thisObject'.
- https://bugs.webkit.org/show_bug.cgi?id=66158
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (allowRoundingHacksCallback): The third argument is the 'this'
- JSObjectRef, not the second.
-
-2011-08-12 Andy Estes <aestes@apple.com>
-
- Cancel in onbeforeunload dialog sometime causes a button to stop working.
- https://bugs.webkit.org/show_bug.cgi?id=26211
-
- Reviewed by Alexey Proskuryakov.
-
- Implement a new LayoutTestController method that a test can call to set
- the return value of DumpRenderTree's beforeunload UI delegate.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Initialize
- m_shouldStayOnPageAfterHandlingBeforeUnload.
- (setShouldStayOnPageAfterHandlingBeforeUnloadCallback): Call
- LayoutTestController::setShouldStayOnPageAfterHandlingBeforeUnload().
- (LayoutTestController::staticFunctions): Register
- 'setShouldStayOnPageAfterHandlingBeforeUnload' as a static function.
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::shouldStayOnPageAfterHandlingBeforeUnload):
- (LayoutTestController::setShouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController): Initialize
- m_shouldStayOnPageAfterHandlingBeforeUnload and bind
- 'setShouldStayOnPageAfterHandlingBeforeUnload' to its c++ setter.
- (LayoutTestController::reset): Reset
- m_shouldStayOnPageAfterHandlingBeforeUnload to false.
- (LayoutTestController::setShouldStayOnPageAfterHandlingBeforeUnload):
- Set m_shouldStayOnPageAfterHandlingBeforeUnload to the value passed in
- from JavaScript.
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::shouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::runModalBeforeUnloadDialog): Add the correct logging and
- return the inverse of
- LayoutTestController::shouldStayOnPageAfterHandlingBeforeUnload().
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:runBeforeUnloadConfirmPanelWithMessage:initiatedByFrame:]): Ditto.
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::runBeforeUnloadConfirmPanelWithMessage): Ditto.
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Define setShouldStayOnPageAfterHandlingBeforeUnload().
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::postNewBeforeUnloadReturnValue): Post a message
- to the Test Controller telling it what value it should return in its
- onbeforeunload UI delegate.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setShouldStayOnPageAfterHandlingBeforeUnload):
- Call InjectedBundle::postNewBeforeUnloadReturnValue().
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController): Initialize
- m_beforeUnloadReturnValue to true.
- (WTR::runBeforeUnloadConfirmPanel): Add the correct logging and return
- the value of TestController::beforeUnloadReturnValue().
- (WTR::TestController::resetStateToConsistentValues): Reset
- m_beforeUnloadReturnValue to true.
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::beforeUnloadReturnValue):
- (WTR::TestController::setBeforeUnloadReturnValue):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Handle the
- message posted from the injected bundle by retrieving the message body
- as a WKBoolean and calling TestController::setBeforeUnloadReturnValue().
-
-2011-08-12 Sam Weinig <sam@webkit.org>
-
- Move compiler specific macros to their own header
- https://bugs.webkit.org/show_bug.cgi?id=66119
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/ForwardingHeaders/wtf/Compiler.h: Added.
-
-2011-08-11 Dimitri Glazkov <dglazkov@chromium.org>
-
- Add a way to extend DOM objects in garden-o-matic.
- https://bugs.webkit.org/show_bug.cgi?id=66096
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Added base.extends.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Added tests.
-
-2011-08-11 MORITA Hajime <morrita@google.com>
-
- [Chromium][DRT] editing/spelling/spelling-backspace-between-lines.html fails
- https://bugs.webkit.org/show_bug.cgi?id=45438
-
- Reviewed by Kent Tamura.
-
- MockSpellCheck was assuming the input of spellCheckWord() is a word.
- But it can be a series of word. This change made spellCheckWord()
- understand simple word boundary which appears in tests.
-
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::spellCheckWord):
-
-2011-08-11 Mark Rowe <mrowe@apple.com>
-
- Rework some Makefile logic to remove a double-negative.
-
- Reviewed by Jon Honeycutt.
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2011-08-11 Anders Carlsson <andersca@apple.com>
-
- Add a FIXME.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
-
-2011-08-11 Anders Carlsson <andersca@apple.com>
-
- Initialize threading before running any tests
- https://bugs.webkit.org/show_bug.cgi?id=66112
-
- Reviewed by Adam Barth.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
-
-2011-08-11 Adam Barth <abarth@webkit.org>
-
- Add unexpected-passes.html to TestFailures for marking tests as passing
- https://bugs.webkit.org/show_bug.cgi?id=66102
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- - Move some code into the library so it can be shared.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
- - Add round-trip unit tests.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.html: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/unexpected-passes.js: Added.
- - I'm not entirely sure this feature should remain a separate HTML
- file, but it seemed better than cluttering up the main HTML file
- with too much extra stuff.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- - The gardening server couldn't handle adding PASS expectations. Now it can.
-
-2011-08-11 Eric Seidel <eric@webkit.org>
-
- NRWT has wrong fallback order for Mac now that Lion exists
- https://bugs.webkit.org/show_bug.cgi?id=66093
-
- Reviewed by Adam Barth.
-
- ORWT used a different system for fallback orders than NRWT did.
- I moved win.py to match ORWT fallback orders in bug 64486.
- This bug moves mac.py to match ORWT fallback order
- and adds 'lion' as a supported OS version.
-
- Because ChromiumMac shares OS version detection code with AppleMac
- this also added support for 'lion' to chromium mac. Hopefully that's a good thing.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-08-11 Adam Barth <abarth@webkit.org>
-
- Update test results now that we use absolute URLs.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js:
-
-2011-08-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to determine when tests unexpectedly pass
- https://bugs.webkit.org/show_bug.cgi?id=66092
-
- Reviewed by Dimitri Glazkov.
-
- This patch just contains the library methods for extracting this
- information. I'll add some UI in a subsequent patch.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js:
-
-2011-08-11 Dimitri Glazkov <dglazkov@chromium.org>
-
- New expectation entries should be placed next to existing ones.
- https://bugs.webkit.org/show_bug.cgi?id=66066
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Added the notion of insertion point,
- which is computed as the last found reference to the same test.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added and adjusted unit tests.
-
-2011-08-11 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r92847.
- http://trac.webkit.org/changeset/92847
- https://bugs.webkit.org/show_bug.cgi?id=65986
-
- Broke check-webkit-style
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-08-11 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r92847.
- http://trac.webkit.org/changeset/92847
- https://bugs.webkit.org/show_bug.cgi?id=65986
-
- Broke check-webkit-style
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-08-11 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] autotests shouldn't require config.h in the style check
- https://bugs.webkit.org/show_bug.cgi?id=65986
-
- Remove the include rules from the style-check for Qt tests.
- Since for the most part it's just a matter of using the
- API provided by QtWebKit, enforcing the WebCore set of rules
- only seems to make sense in the case of MIMESniffing.
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-08-11 Zsolt Fehér <h490267@stud.u-szeged.hu>
-
- [WK2] Implement waitForPolicyDelegate
- https://bugs.webkit.org/show_bug.cgi?id=42330
-
- Reviewed by Csaba Osztrogonác.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::navigationTypeToString):
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- (WTR::LayoutTestController::setCustomPolicyDelegate):
- (WTR::LayoutTestController::waitForPolicyDelegate):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::isPolicyDelegateEnabled):
- (WTR::LayoutTestController::isPolicyDelegatePermissive):
-
-2011-08-11 Adam Barth <abarth@webkit.org>
-
- rebaseline-expectations should use the release bots, not the debug
- bots. The debug bots don't all run all the tests. Also, delay
- updating test_expectations a long as possible to avoid clearing out
- lines that we'll need for other ports.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2011-08-10 Ryosuke Niwa <rniwa@webkit.org>
-
- r92792 inadvertently removed PlatformSpecificScheduler for all Snow Leopard bots.
- Revert it partially so that the remaining Snow Leopard bots can fulfill their duty.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-test's WinPort has no fallback logic
- https://bugs.webkit.org/show_bug.cgi?id=64486
-
- Unreviewed.
-
- Turns out that we've long had a subtle bug whereby if you didn't
- already have DumpRenderTree built, we might end up running unsupported tests
- because the DumpRenderTree --print-supported-features check would silently fail.
-
- When I moved the call from using popen to using Executive.run_command, this silent
- failure became noisy. (Breaking some bots.)
-
- This re-orders our steps so that we always build DRT before collecting expectations,
- as well as adds a warning message when DumpRenderTree can't be found.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-test's WinPort has no fallback logic
- https://bugs.webkit.org/show_bug.cgi?id=64486
-
- Unreviewed. Fix test-webkitpy under Python 2.5.
-
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-08-10 Benjamin Poulain <benjamin@webkit.org>
-
- [Qt][WK2] MiniBrowser is firing twice the QDesktopWebView::mousePressEvent method
- https://bugs.webkit.org/show_bug.cgi?id=65875
-
- Reviewed by Kenneth Rohde Christiansen.
-
- For some reason, QWidget send fake mouse event on some platform, under certains conditions.
-
- This causes mouse events to be sent twice in some cases. We work around the problem
- by defining the first touch point to be a primary touch point (case which hit some
- weird condition in QWidget, skipping the generation of fake mouse events).
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
-
-2011-08-10 David Hyatt <hyatt@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=66004
-
- Remove the regions and exclusions bots and also the flags in build-webkit, since I'm just turning
- the code on by default.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * Scripts/build-webkit:
-
-2011-08-10 Oliver Hunt <oliver@apple.com>
-
- JSEvaluteScript does not return the correct object when given JSONP data
- https://bugs.webkit.org/show_bug.cgi?id=66003
-
- Reviewed by Gavin Barraclough.
-
- Add a test case.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (testStringByEvaluatingJavaScriptFromString):
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- WIN: NRWT runs compositing tests on configurations that don't support compositing
- https://bugs.webkit.org/show_bug.cgi?id=64472
-
- Reviewed by Adam Barth.
-
- I think the code was just wrong. It was never splitting the string
- into list pieces before.
- I've now tested the supported_features code and theoretically it
- should now work with Windows DRT.
-
- I also made the list-lookup functions always return lists, to make
- it possible to clean up the list-transform code in the future
- (I opted not to do that cleanup in this patch, but at least now
- both types of feature lookup functions match return types.)
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- Clean up ChromiumDriver a little
- https://bugs.webkit.org/show_bug.cgi?id=65995
-
- Unreviewed.
-
- Fix NRWT for chromium. Silly python.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- Clean up ChromiumDriver a little
- https://bugs.webkit.org/show_bug.cgi?id=65995
-
- Reviewed by Adam Barth.
-
- - We no longer support threading, so remove threading specific code.
- - Add FIXMEs about using ServerProcess instead.
- - Condense option-mapping if-cascade into a for loop.
- - Unindent long if blocks by using early return.
- - Unwrap lines which are needlessly wrapped.
-
- There should be no functional changes here, just code cleanup/dead-code removal.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-08-10 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unmuddle construction options for TestConfiguration.
- https://bugs.webkit.org/show_bug.cgi?id=65988
-
- The TestConfiguration instance is now constructed only using actual values.
- Port-based construction is split into a "from_port" class method.
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added TestConfiguration.from_port
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Adjusted code to accommodate the change.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/base.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Ditto.
-
-2011-08-10 Eric Seidel <eric@webkit.org>
-
- Leaks bot shows python logging prefixes as part of summary display
- https://bugs.webkit.org/show_bug.cgi?id=65931
-
- Reviewed by Adam Barth.
-
- The big part of this change is adding a unittesting system for
- master.cfg, so mere-mortals can make changes to build.webkit.org
- with greatly-reduced risk of breaking the world.
-
- Turns out that in typing up my trival logging fix I made 2 typos,
- so hopefully the hour spent getting master.cfg to load was worth it. :)
-
- I also tried to make mastercfg_unittest run as part of test-webkitpy
- but right now test-webkitpy requires that unittest files be located in
- a module-name-compatible directory. 'build.webkit.org-config' is not
- a valid module name.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- - Fixed _parseNewRunWebKitTestsOutput to strip NRWT's python formatter prefix
- by using a new _strip_python_logging_prefix function.
- - Also fixed this function to file to work with a more modern
- simplejson version (which returns unicode objects instead of str objects)
- and filed a related bug with buildbot.net due to their handling of unicode builder names.
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py: Added.
- - BuildBotConfigLoader is a huge pile of code just to get master.cfg to load.
- - The actual tiny unittest of the new _parseNewRunWebKitTestsOutput logic.
- * Scripts/webkitpy/thirdparty/__init__.py:
- - Add autoinstallation of buildbot (and jinja2) for use by mastercfg_unittest.py
-
-2011-08-09 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should extrapolate failures given a set of known results
- https://bugs.webkit.org/show_bug.cgi?id=65882
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Spuriously covered my old sins.
- * Scripts/webkitpy/layout_tests/port/builders.py: Augmented builders dictionary to contain build coverage specifiers,
- adjusted all call sites.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Added BuildCoverageExtrapolator, a thing that
- makes wider net for specific failures.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Added unit tests.
-
-2011-08-10 Adam Barth <abarth@webkit.org>
-
- The URL we were computing for retrieving baselines was missing a slash
- character because our mocks had an extra slash character. I've
- corrected both the code and the mock.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- Move the quote mark to the right place.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should use huerstics to narrow regression range
- https://bugs.webkit.org/show_bug.cgi?id=65948
-
- Reviewed by Dimitri Glazkov.
-
- When analyzing a regression range, if one of the commit messages
- mentions the test in question, we now hueristically assume that
- revision caused the failure. (I'm shamelessly stealing this idea from
- TestFailures.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
-
-2011-07-13 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-test's WinPort has no fallback logic
- https://bugs.webkit.org/show_bug.cgi?id=64486
-
- Reviewed by Adam Roben.
-
- I've tried to write a patch for bug 64439 twice now, and both times
- I've ended up re-writing half the port system. So I'm breaking
- things up into smaller pieces, this being the first.
-
- WinPort still does not have any port_name parsing, so when instantiated
- with the name "win-xp" (i.e. by the rebaseline server) it will just behave as the 'win' port.
- I'll fix this in a second pass when I standardize port_name parsing for all webkit ports.
-
- Otherwise this should "just work" for windows. I've not been able to test the
- version detection on my mac, but the unit tests show the code behaving as designed.
-
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/port/win_unittest.py: Added.
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- Teach build.webkit.org's garden-o-matic how to talk to the local server
- https://bugs.webkit.org/show_bug.cgi?id=65940
-
- Reviewed by Dimitri Glazkov.
-
- After this patch, the version of garden-o-matic on build.webkit.org is
- fully functional. It can interact with the local server via CORS.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- Enable CORS for garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=65936
-
- Reviewed by Dimitri Glazkov.
-
- This patch will allow the hosted instance of garden-o-matic to
- communicate with the local server.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- Upgrade jquery in TestFailures
- https://bugs.webkit.org/show_bug.cgi?id=65935
-
- Reviewed by Dimitri Glazkov.
-
- Upgrade to a newer version of jQuery with better support for CORS and CSP.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
-
-2011-08-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r92683.
- http://trac.webkit.org/changeset/92683
- https://bugs.webkit.org/show_bug.cgi?id=65921
-
- "Breaks Qt --minimal build. Revert pending update of the Qt
- minimal configuration" (Requested by simathur on #webkit).
-
- * QtTestBrowser/cookiejar.cpp:
- (TestBrowserCookieJar::TestBrowserCookieJar):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::setDiskCache):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
- * QtTestBrowser/webpage.cpp:
- (WebPage::openUrlInDefaultBrowser):
-
-2011-08-09 Siddharth Mathur <siddharth.mathur@nokia.com>
-
- [Qt] Simplify code by removing QT_NO_DESKTOPSERVICES and QT_NO_NETWORKDISKCACHE
- https://bugs.webkit.org/show_bug.cgi?id=65880
-
- Reviewed by Andreas Kling.
-
- QDesktopServices and QNetworkDiskCache have been around for a while now. Kill flags which
- check for their feature flags. Assume that any reasonable Qt build provides them.
- * QtTestBrowser/cookiejar.cpp:
- (TestBrowserCookieJar::TestBrowserCookieJar):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::setDiskCache):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
- * QtTestBrowser/webpage.cpp:
- (WebPage::openUrlInDefaultBrowser):
-
-2011-08-09 Adam Barth <abarth@webkit.org>
-
- BaselineOptimizer created the wrong baseline for fast/js/regexp-overflow.html
- https://bugs.webkit.org/show_bug.cgi?id=65891
-
- Reviewed by Eric Seidel.
-
- The problem was that platform/chromium contained a bogus expectation
- file that needed to be removed, but by the time we got around to
- removing it, we'd already moved the correct baseline into its place.
- After this patch, we copy the gold results into memory before
- reshuffling things on disk (and we delete bad things before adding good
- things).
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
-
-2011-08-08 Adam Barth <abarth@webkit.org>
-
- Chromium Windows bots can't figure out what SVN revision they're running
- https://bugs.webkit.org/show_bug.cgi?id=65893
-
- Reviewed by Eric Seidel.
-
- The comment in _engage_awesome_windows_hacks explains why we're making
- this change. It's ugly and rediculous, but this approach seems better
- than using shell=True when calling popen.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-08-08 Adam Barth <abarth@webkit.org>
-
- Remove deduplicate-tests
- https://bugs.webkit.org/show_bug.cgi?id=65886
-
- Reviewed by Tony Chang.
-
- This script is redundant with "webkit-patch bulk-optimize-baselines",
- which can find many more duplicates than deduplicate-tests because
- bulk-optimize-baselines can move results around whereas
- deduplicate-tests can only remove results.
-
- * Scripts/deduplicate-tests: Removed.
- * Scripts/webkitpy/to_be_moved/deduplicate_tests.py: Removed.
- * Scripts/webkitpy/to_be_moved/deduplicate_tests_unittest.py: Removed.
-
-2011-08-08 Adam Barth <abarth@webkit.org>
-
- scm.delete should delete empty parent directories as well
- https://bugs.webkit.org/show_bug.cgi?id=65878
-
- Reviewed by Eric Seidel.
-
- This behavior makes SVN match GIT (which has no concept of empty
- directories). This bug comes up a lot when optimizing baselines, which
- often create empty directories when we're able to optimize everything
- out of a given folder.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-08-08 Lucas Forschler <lforschler@apple.com>
-
- Add triggers for Lion WK2 test bots.
-
- Reviewed by Stephanie Lewis.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-08-08 Adam Barth <abarth@webkit.org>
-
- bulk-optimize-baselines should take directories on the command line
- https://bugs.webkit.org/show_bug.cgi?id=65879
-
- Reviewed by Dimitri Glazkov.
-
- Passing lists of tests via stdin is a pain. It's easier if the command
- takes a list of tests on the command line, like run-webkit-tests.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-08 Adam Barth <abarth@webkit.org>
-
- Deprecate rebaseline-chromium-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=65873
-
- Reviewed by Dimitri Glazkov.
-
- This script never worked correctly and now is redundant with more
- modern infrastructure for rebaselining tests. This patch deprecates
- the script in order to flush out any issues with the new tools. Once
- folks are happy with the new tools, we'll delete this script.
-
- * Scripts/rebaseline-chromium-webkit-tests:
-
-2011-08-08 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should only touch expectations that need updating.
- https://bugs.webkit.org/show_bug.cgi?id=65876
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Added reconstitute_only_these to TestExpectationSerializer.list_to_string,
- so that a caller could influence which lines to serialize from values.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added tests.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Started using reconstitute_only_these.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Added tests.
-
-2011-08-08 Dimitri Glazkov <dglazkov@chromium.org>
-
- TestExpectationsEditor should return a list of updated expectations.
- https://bugs.webkit.org/show_bug.cgi?id=65872
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Added a list to store lines that are being updated.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Changed tests to account for updated lines.
-
-2011-08-08 Jochen Eisinger <jochen@chromium.org>
-
- Fix SCM webkitpy unit test failures
- https://bugs.webkit.org/show_bug.cgi?id=65823
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2011-08-08 Eric Seidel <eric@webkit.org>
-
- Move the --leaks bot back over to NRWT now that I'm back
- from vacation and able to debug it.
-
- Unreviewed.
-
- * Scripts/run-webkit-tests:
- (usingWebKit2):
- (useNewRunWebKitTests):
-
-2011-08-05 Dimitri Glazkov <dglazkov@chromium.org>
-
- Wire up updating expectations in garden-o-matic.
- https://bugs.webkit.org/show_bug.cgi?id=65794
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/factory.py: Moved _port_for_builder from rebaseline.py to here, rename to get_from_builder_name.
- * Scripts/webkitpy/tool/commands/rebaseline.py: Adapted callsites to new location.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Added GardeningExpectationsUpdater, which knows how to update expectations.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Added loads of tests.
-
-2011-08-08 Jochen Eisinger <jochen@chromium.org>
-
- webkit-patch doesn't get along with renamed files
- https://bugs.webkit.org/show_bug.cgi?id=48075
-
- Possibly a bit heavy handed - I removed all instances of -C and
- changed every instance of -M with '--no-renames' in git.py. This
- forces git to not try to tell us about renames at all, which is
- ultimately the behaviour we want. The old file is shown deleted,
- then the new file is shown added, followed by any changes that
- occurred. Also gets rid of the problem where deleting one file
- and adding another file which has similar content would
- unexpectedly show up as a rename, and fall out of a diff.
-
- Based on a patch by Wyatt Carss.
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-08-07 Sam White <samuel.white@rochester.edu>
-
- Add the ability to search the AccessibilityObject cache
- https://bugs.webkit.org/show_bug.cgi?id=64994
-
- Added testing support for AccessibilityObject cache searching. Currently,
- only the mac platform is full supported and has had API exposed. Other
- platforms have only have this new functionality stubbed. Full implementation
- is a job suited only for an accessibility expert of each respective platform.
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (uiElementForSearchPredicateCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::uiElementForSearchPredicate):
-
-2011-08-06 Adam Barth <abarth@webkit.org>
-
- Remove dead code in webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=65818
-
- Reviewed by Dimitri Glazkov.
-
- This code was added to support the rebaseline2 command six months ago,
- but the rebaseline2 command was never finished and no one else has used
- this code since it was landed. This patch removes the dead code. If
- we revive rebaseline2, then we can revert this patch and recover the
- code. Until then, this code is just dead weight.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/testoutput.py: Removed.
- * Scripts/webkitpy/common/net/testoutput_unittest.py: Removed.
- * Scripts/webkitpy/common/net/testoutputset.py: Removed.
- * Scripts/webkitpy/common/net/testoutputset_unittest.py: Removed.
- * Scripts/webkitpy/common/system/directoryfileset.py: Removed.
- * Scripts/webkitpy/common/system/directoryfileset_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-08-06 Adam Barth <abarth@webkit.org>
-
- webkit-patch optimize-baselines can't handle promotions to base results directory
- https://bugs.webkit.org/show_bug.cgi?id=65819
-
- Reviewed by Dimitri Glazkov.
-
- This bug came up when testing the optimizer on some editing baselines.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
-
-2011-08-06 Adam Barth <abarth@webkit.org>
-
- Add a small command to optimize baselines in bulk.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-05 Dimitri Glazkov <dglazkov@chromium.org>
-
- Fix unit test breakage by plumbing convert_404_to_None in MockWeb.
-
- * Scripts/webkitpy/tool/mocktool.py: Added missing parameter to MockWeb.get_binary
-
-2011-08-05 Dimitri Glazkov <dglazkov@chromium.org>
-
- Garden-o-matic updateexpectations needs a unit test.
- https://bugs.webkit.org/show_bug.cgi?id=65780
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Added unit test.
-
-2011-08-05 Anders Carlsson <andersca@apple.com>
-
- Future proof an Objective-C test
- https://bugs.webkit.org/show_bug.cgi?id=65788
-
- Reviewed by Dan Bernstein.
-
- Add isObjectInstanceOf to ObjCController.
-
- * DumpRenderTree/mac/ObjCController.m:
- (+[ObjCController isSelectorExcludedFromWebScript:]):
- (+[ObjCController webScriptNameForSelector:]):
- (-[ObjCController isObject:instanceOf:]):
-
-2011-08-05 Adam Barth <abarth@webkit.org>
-
- trac.js needs unittests
- https://bugs.webkit.org/show_bug.cgi?id=65673
-
- Reviewed by Dimitri Glazkov.
-
- This tests also have somewhat large fixtures. I've trimmed the example
- XML down a bunch while still hitting interesting cases in the parsing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/trac_unittests.js: Added.
-
-2011-08-05 Adam Barth <abarth@webkit.org>
-
- Rebuild rebaseline-chromium-webkit-tests on top of modern infrastructure
- https://bugs.webkit.org/show_bug.cgi?id=65759
-
- Reviewed by Dimitri Glazkov.
-
- rebaseline-chromium-webkit-tests doesn't really fit into webkitpy's
- architecture, is poorly tested, and has a bunch of quirks. This patch
- rebuilds the core functionality of rebaseline-chromium-webkit-tests on
- top of more modern infrastructure. In the process, we get more code
- re-use and better testing.
-
- Once we're satisfied with this new implementation, we can delete the
- old implementation.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/net/web.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2011-08-05 Anders Carlsson <andersca@apple.com>
-
- Remove PluginHalter
- https://bugs.webkit.org/show_bug.cgi?id=65729
-
- Reviewed by Darin Adler.
-
- Remove call to set the allowed plug-in run time.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2011-08-05 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Unreviewed build fix for Qt-Minimal buildbot
-
- Use ~/.QtTestBrowser for the cookiejar when QDesktopServices
- is disabled.
-
- Rubber-stamped by Holger Freyther.
-
- * QtTestBrowser/cookiejar.cpp:
- (TestBrowserCookieJar::TestBrowserCookieJar):
-
-2011-08-05 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- [Qt] QtTestBrowser: Add support for saving cookies on disk
- https://bugs.webkit.org/show_bug.cgi?id=65328
-
- Simple cookiejar that saves cookies on disk.
-
- Added menu options to clear cookies (Edit->Clear cookies) and
- disable disk cookies (Settings->[ ]Save Cookies on Disk).
-
- Option -no-disk-cookies is also available.
-
- Reviewed by Andreas Kling.
-
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/cookiejar.cpp: Added.
- * QtTestBrowser/cookiejar.h: Added.
- * QtTestBrowser/launcherwindow.cpp:
- * QtTestBrowser/launcherwindow.h:
- * QtTestBrowser/main.cpp:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- model.js needs some unit testing
- https://bugs.webkit.org/show_bug.cgi?id=65730
-
- Reviewed by Dimitri Glazkov.
-
- These tests do not cover all the functions exported by the model
- module. We'll need to add the remaining ones in the future.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- Another speculative fix for the "svn revision on Windows" problem.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-08-04 Mark Rowe <mrowe@apple.com>
-
- Future-proof Xcode configuration settings.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig:
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig:
- * MiniBrowser/Configurations/DebugRelease.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig:
- * TestWebKitAPI/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- Fancier debug logging.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-08-04 David Levin <levin@chromium.org>
-
- [chromium] Fix assertion failure in ThreadIdentifierData::identifier in TestShell.
- https://bugs.webkit.org/show_bug.cgi?id=65685
-
- Reviewed by Dmitry Titov.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost): Intialize WTF threading before
- anything in WTF is used. Usually this is done by WebViewImpl::WebViewImpl
- but in some cases code may use WTF without creating WebViewImpl and
- WTF code functionality may call WTF::currentThread, which requires
- this initialization now.
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- An educated guess at causing the Windows bots on build.webkit.org to
- find the SVN revision number.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- More logging to help debug the "no SVN rev on Chromium Windows bots"
- bug. My current theory is that we're trying to detect the SCM system
- in the wrong directory.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-08-04 Dimitri Glazkov <dglazkov@chromium.org>
-
- Speed up webkit-patch optimize-expectations significantly by not collecting test files.
- https://bugs.webkit.org/show_bug.cgi?id=65697
-
- I neglected to realize that collecting test names is not necessary for this operation.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/expectations.py: Changed to pass an empty list of test files.
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- checkout_unittest.js should have better coverage of checkout.js
- https://bugs.webkit.org/show_bug.cgi?id=65671
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- - Remove unused functions.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js:
- - Test remaining public functions in the checkout module.
-
-2011-08-04 Dmitry Lomov <dslomov@google.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=65706
- Run run-unit-tests on release mode test bots.
- Reenabling after 61812 is fixed.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- builders.js needs unit tests
- https://bugs.webkit.org/show_bug.cgi?id=65670
-
- Reviewed by Dimitri Glazkov.
-
- This test requires somewhat large test fixtures, but using real
- examples seemed better than trimming them down too much.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- - Note: trac_unittests.js doesn't exist (yet!).
-
-2011-08-04 Alexis Menard <alexis.menard@openbossa.org>
-
- [Qt] Make navigation actions properly usable in QML.
- https://bugs.webkit.org/show_bug.cgi?id=65624
-
- Fix compilation after the introduction of QWebNavigationController.
-
- Reviewed by Benjamin Poulain.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::navigationAction):
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- Another subtle bug due to lack of testing in main.js. :(
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- Fix types. Sadly, main.js has no test coverage. (I need to think
- about how to test this part of the code.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- bugzilla.js is missing unit tests
- https://bugs.webkit.org/show_bug.cgi?id=65656
-
- Reviewed by Adam Roben.
-
- Testing makes perfect.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/bugzilla_unittests.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net_unittests.js:
- (NetworkSimulator.prototype.runTest.get if):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- Add missing license blocks to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=65654
-
- Reviewed by Dimitri Glazkov.
-
- This patch is entirely boilerplate.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
-
-2011-08-04 Adam Barth <abarth@webkit.org>
-
- garden-o-matic needs a way to mock out the network
- https://bugs.webkit.org/show_bug.cgi?id=65653
-
- Reviewed by Dimitri Glazkov.
-
- This patch introduces the net module, which is a useful mock point for
- abstracting away the network. Future patches will use this
- infrastructure to test some currently untested code.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net.js: Added.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/net_unittests.js: Added.
- (NetworkSimulator):
- (NetworkSimulator.prototype.scheduleCallback):
- (NetworkSimulator.prototype.runTest):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-08-03 Adam Barth <abarth@webkit.org>
-
- Use failureInfo more pervasively in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=65650
-
- Reviewed by Dimitri Glazkov.
-
- These three variable appears in concert together many places. This
- patch unifies the remaining uses into being failureInfo objects, which
- saves some marshalling.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
-
-2011-08-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to update expecations from the details pane
- https://bugs.webkit.org/show_bug.cgi?id=65648
-
- Reviewed by Dimitri Glazkov.
-
- The new button queues up the updates, which get executed all at once.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
-
-2011-08-03 Adam Barth <abarth@webkit.org>
-
- Add UI to garden-o-matic for updating expectations
- https://bugs.webkit.org/show_bug.cgi?id=65644
-
- Reviewed by Dimitri Glazkov.
-
- The patch plumbs the UI back to the gardening server, but the gardening
- server endpoint is just a stub at this point.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-08-03 Adam Barth <abarth@webkit.org>
-
- garden-o-matic details view should queue rebaselines for later execution
- https://bugs.webkit.org/show_bug.cgi?id=65636
-
- Reviewed by Dimitri Glazkov.
-
- This patch doesn't contain any confirmation UI, but we'll probably want
- that at some point.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
-
-2011-08-03 Kentaro Hara <haraken@google.com>
-
- Implement EventSender.scalePageBy()
- https://bugs.webkit.org/show_bug.cgi?id=58013
-
- Reviewed by Darin Fisher.
-
- Implemented EventSender.scalePageBy(f, x, y), which scales a page by a factor of f
- and then sets a scroll position to (x, y). Enabled the tests that had been waiting
- for the implementation of EventSender.scalePageBy(f, x, y).
-
- Tests: compositing/scaling/tiled-layer-recursion.html
- fast/repaint/scale-page-shrink.html
- fast/dom/Element/scale-page-client-rects.html
- fast/dom/Range/scale-page-client-rects.html
- fast/events/scroll-in-scaled-page-with-overflow-hidden.html
- fast/dom/Element/scale-page-bounding-client-rect.html
- fast/dom/Range/scale-page-bounding-client-rect.html
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender): Added bindings for scalePageBy().
- (EventSender::scalePageBy): A wrapper method for scalePage() in WebView.
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController): Resets the scale factor to 1.
-
-2011-08-03 David Levin <levin@chromium.org>
-
- Rename WEBKIT_API to WEBKIT_EXPORT in check-webkit-style.
- https://bugs.webkit.org/show_bug.cgi?id=65652
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-08-03 Filip Pizlo <fpizlo@apple.com>
-
- Adding Filip Pizlo to committer list.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-08-03 Dimitri Glazkov <dglazkov@chromium.org>
-
- Add "optimize-expectations" command to webkit-patch.
- https://bugs.webkit.org/show_bug.cgi?id=65633
-
- For now, only operates on Chromium test_expectations.txt and does not report errors/warnings.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/__init__.py: Added command.
- * Scripts/webkitpy/tool/commands/expectations.py: Added.
-
-2011-08-03 Dimitri Glazkov <dglazkov@chromium.org>
-
- Allow multiple bug identifiers in test expectations.
- https://bugs.webkit.org/show_bug.cgi?id=65642
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Tweaked to allow multiple bug ids.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added tests.
-
-2011-08-03 Dimitri Glazkov <dglazkov@chromium.org>
-
- Teach BuilderToPort to distinguish between Release and Debug builders.
- https://bugs.webkit.org/show_bug.cgi?id=65628
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py: Added a smart options object and passed it to port factory.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py: Added tests.
-
-2011-08-03 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt] Fix running qmltests for WK2 in the bot
- https://bugs.webkit.org/show_bug.cgi?id=65621
-
- Reviewed by Csaba Osztrogonác.
-
- The path for QML_IMPORT_PATH was assuming we were running the WK1 tests,
- but now there's the case for WK2 UIProcess tests as well.
-
- * Scripts/run-qtwebkit-tests: add both possible paths to the QML_IMPORT_PATH.
-
-2011-08-02 Dimitri Glazkov <dglazkov@chromium.org>
-
- Add a way to edit test expectations.
- https://bugs.webkit.org/show_bug.cgi?id=64922
-
- Implements a TestExpectationsEditor, which provides a standard way to
- update and remove test expectations.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Changed TestExpectationSerializer to skip lines that match no test configurations,
- added TestExpectationLine.is_flaky, added BugManager, a simple interface to be fleshed out later, and a TestExpectationsEditor, the big
- enchilada.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Loads of tests to capture desired behavior.
-
-2011-08-03 Andreas Kling <kling@webkit.org>
-
- [Qt] MiniBrowser: Unbreak load progress indication.
- https://bugs.webkit.org/show_bug.cgi?id=65614
-
- Reviewed by Kenneth Rohde Christiansen.
-
- loadProgress() was renamed to loadProgressChanged().
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::onLoadProgressChanged):
- * MiniBrowser/qt/BrowserWindow.h:
-
-2011-08-03 Martin Robinson <mrobinson@igalia.com>
-
- Build fix for WebKit2GTK+.
-
- * WebKitTestRunner/GNUmakefile.am: Include libInternals as one of
- of the library dependencies of the injected bundle.
-
-2011-08-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Install web and plugin processes in libexecdir instead of bindir
- https://bugs.webkit.org/show_bug.cgi?id=65600
-
- Reviewed by Martin Robinson.
-
- Set WEBKIT_EXEC_PATH environment variable to use web and plugin
- process from current directory instead of the intalled ones.
-
- * MiniBrowser/gtk/GNUmakefile.am:
- * MiniBrowser/gtk/main.c:
- (main):
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/gtk/main.cpp:
- (main):
-
-2011-08-02 Anders Carlsson <andersca@apple.com>
-
- Add mac-lion platform to old-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=65577
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitdirs.pm:
- (isLion):
-
-2011-08-02 Alexandru Chiculita <achicu@adobe.com>
-
- Buildbot: The Properties object has no "hasProperty" method in buildbot 8.3
- https://bugs.webkit.org/show_bug.cgi?id=65554
-
- Using "has_key" instead of "hasProperty" in order to support buildbot 8.3.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-08-02 Jochen Eisinger <jochen@chromium.org>
-
- Implement WebPermissionClient::allowPlugins for layout tests
- https://bugs.webkit.org/show_bug.cgi?id=33991
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setPluginsAllowed):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebPermissions.cpp:
- (WebPermissions::allowPlugins):
- (WebPermissions::setPluginsAllowed):
- (WebPermissions::reset):
- * DumpRenderTree/chromium/WebPermissions.h:
-
-2011-08-02 Adam Barth <abarth@webkit.org>
-
- TestFailures unit tests leak a global variable
- https://bugs.webkit.org/show_bug.cgi?id=65500
-
- Reviewed by Adam Roben.
-
- qunit detects the leak if you check the "noglobals" box on run-unittests.html.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
-
-2011-08-02 Alexandru Chiculita <achicu@adobe.com>
-
- CSS Regions build bot should archive and upload output files
- https://bugs.webkit.org/show_bug.cgi?id=65200
-
- Until now the buildbots would only upload the result archive if the 'trigger' parameters was specified. The
- upload was needed, because the testbots needed to download and use the archive. For CSS Regions we don't have
- a testbot yet, but we want to save the archive on the server for manual testing. Added new parameter
- in config.json, called "upload" that when set to "true" will force the upload to the buildmaster server.
-
- The "features" argument is now taken into account when determining the name of the archive on the server. That
- was needed in order to avoid the CSS Regions Mac buildbot overwrite the SnowLeopard Mac build.
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-08-02 Patrick Gansterer <paroga@webkit.org>
-
- Fix _win32_check_running_pid on 64bit windows python
- https://bugs.webkit.org/show_bug.cgi?id=64950
-
- Reviewed by Adam Roben.
-
- Use the correct types for the PROCESSENTRY32 struct.
- th32DefaultHeapID is declared as ULONG_PTR and not as DWORD.
- Using 32bit for pointers instead of 64bit results in an ERROR_BAD_LENGTH
- failure, when calling the Process32First function.
- This is covered by the executive unittest.
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should call optimize-baselines when rebaselining tests
- https://bugs.webkit.org/show_bug.cgi?id=65499
-
- Reviewed by Dimitri Glazkov.
-
- I took the opportunity to modernize this code to use some of our more
- powerful primitives from base.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-08-01 Stephanie Lewis <slewis@apple.com>
-
- Finish reconfiguration started by Lucas Forschler
- Reconfigured slaves:
- Removed Leopard Intel Release (Build)
- Removed Leopard Intel Release (Tests)
- Remove apple-pixel-1
- Added Lion slaves from disabled Leopard slaves
-
- Added builders:
- Lion Intel Release (Build)
- Lion Intel Debug (Build)
- Lion Intel Release (Tests)
- Lion Intel Release WK2 (Tests)
- Lion Intel Debug (Tests)
- Lion Intel Debug WK2 (Tests)
-
- Added triggers:
- lion-intel-debug-tests
- lion-intel-debug-test-wk2
- lion-intel-release-tests
- lion-intel-release-tests-wk2
-
- Removed trigger:
- leopard-intel-release-tests
-
- Added PlatformSpecificScheduler:
- mac-lion
-
- Added "mac-lion" to build.py and build_unitttest.py
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * Scripts/webkitpy/common/config/build.py:
- * Scripts/webkitpy/common/config/build_unittest.py:
-
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- webkit-patch needs to be able to "optimize" the storage of baselines on disk
- https://bugs.webkit.org/show_bug.cgi?id=65418
-
- Reviewed by Dimitri Glazkov.
-
- If we're not careful when rebaselining tests, we can end up with lots
- of duplicate expected results files in the tree. This patch adds a
- webkit-patch command that optimizes the storage of expected results on
- disk.
-
- This command is similar to deduplicate-tests, except that it can move
- test results around rather than just remove duplicate results.
-
- Unfortunately, this problem is very tricky because the baseline search
- structure is a hypergraph. This patch include a huerstic optimizer
- that appears to work on a bunch of examples I've tried. We'll likely
- need to refine it as gain experience.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-08-01 Dimitri Glazkov <dglazkov@chromium.org>
-
- Teach TestExpectationSerializer about parsed expectations.
- https://bugs.webkit.org/show_bug.cgi?id=65444
-
- This is a bit largish in size, but the essentials are:
- * TestExpectationSerializer, given a parsed TestExpectationLine, can now spit out a pretty string.
- * We now store original content of the expectation line on TestExpectationLine.
- * Lots of tests.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Fixed an issue where we didn't
- populate macros correctly, also fixed an issue where we incorrectly returned an empty list
- for all configurations.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added tests for those.
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Removed vestiges of code long gone,
- refactored TestExpectationsSerializer to recognize and correctly serialize parsed TestExpectationLine instances,
- changed to store and use TestExpectationLine.original_string.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added tests.
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- Remove unused functionality from gardeningserver
- https://bugs.webkit.org/show_bug.cgi?id=65479
-
- Reviewed by Dimitri Glazkov.
-
- We now handle these operations directly from the front-end. That means
- they work even without the gardening server running!
-
- Also, add some missing files to the list of static files.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-08-01 Dimitri Glazkov <dglazkov@chromium.org>
-
- Introduce SpecifierSorter, a thing that knows how specifiers should be ordered.
- https://bugs.webkit.org/show_bug.cgi?id=65413
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added SpecifierSorter and converted
- existing code to use it.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests and cleaned up a bit.
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- Refactor bugzilla.js for use by garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=65450
-
- Reviewed by Dimitri Glazkov.
-
- This patch refactors bugzilla.js to use the AsynchronousCache and
- updates the style to use a module instead of an object. This patch
- then fixes all the existing code that uses this class to use the new
- API style.
-
- This main benefit of this patch is we remove the tricky manual caching
- and this code is now available to use in garden-o-matic (since the
- dependency on Utilities.js is now gone).
-
- I ran all the unit tests and poked around in TestFailures a bit to see
- that everything seemed to be working properly.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js:
- (FailingTestsBugForm):
- (FailingTestsBugForm.prototype._createBugTitle):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm.js:
- (FlakyTestBugForm):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm.js:
- (NewBugForm):
- (NewBugForm.prototype.domElement):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm.js:
- (TestRelatedBugForm):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder.start):
- (ViewController.prototype._displayBuilder):
- (ViewController.prototype._domForAuxiliaryUIElements):
- (ViewController.prototype._domForNewAndExistingBugs.bugzilla.quickSearch):
- (ViewController.prototype._domForPossiblyFlakyTests.flakyList.appendChildren):
- (ViewController.prototype._domForPossiblyFlakyTests):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- garden-o-matic shouldn't require local server to determine if compile failed
- https://bugs.webkit.org/show_bug.cgi?id=65446
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds some basic bindings for the buildbot JSON API. I
- wanted to use Buildbot.js an Builder.js from the original TestFailures,
- but they make a number of WebKit-specific assumptions. We'll
- eventually need to reconcile these pieces of code.
-
- I should really add tests for this code, but that will require me to
- build a better mock network. I'll be happy to do that in a follow-up
- patch.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/builders.js: Added.
- - It's very unclear to me whether didFail is correct. Supposedly
- the first entry here is the exit code of the step, which is 0 on
- success. I suspect we'll need to improve this function over time.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
-
-2011-08-01 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should show all failures, even ones that it can't find a regression range for
- https://bugs.webkit.org/show_bug.cgi?id=65447
-
- Reviewed by Dimitri Glazkov.
-
- Previously, we just wouldn't display test failures that we couldn't
- identify a regression range for (or whose regression range had fallen
- off the page). This patch just displays them at the end of the list,
- which is slightly (but not much) better.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
-
-2011-08-01 Jeff Miller <jeffm@apple.com>
-
- Windows build fix after r92096.
-
- * TestWebKitAPI/win/InjectedBundleControllerWin.cpp: Use #include, not #import, and don't include Foundation.h.
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj: Add InjectedBundleControllerWin.cpp.
-
-2011-07-31 Anders Carlsson <andersca@apple.com>
-
- DownloadDecideDestinationCrash WebKit2 API tests crashes
- https://bugs.webkit.org/show_bug.cgi?id=65442
-
- Reviewed by Sam Weinig.
-
- Copy the 18-characters.html file to the destination directory so we won't
- crash trying to make an URL for it.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2011-07-31 Anders Carlsson <andersca@apple.com>
-
- Fix SpacebarScrolling WebKit2 API test
- https://bugs.webkit.org/show_bug.cgi?id=65431
-
- Reviewed by Sam Weinig.
-
- Add a way to do platform-specific bundle initialization, and use it to disable smooth
- scrolling. Also make it possible for a test to load the injected bundle without actually running
- a test from it.
-
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::initialize):
- * TestWebKitAPI/InjectedBundleController.h:
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::createContextWithInjectedBundle):
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm: Added.
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * TestWebKitAPI/win/InjectedBundleControllerWin.cpp: Added.
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-07-31 Dimitri Glazkov <dglazkov@chromium.org>
-
- Use set comparison to find duplicate or overlapping specifiers in test expectations.
- https://bugs.webkit.org/show_bug.cgi?id=65430
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Changed to use set comparisons, because length
- of a set is wrong.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Added some unit tests to actually catch
- regressions.
-
-2011-07-31 Xan Lopez <xlopez@igalia.com>
-
- Group dependencies CFLAGS together.
-
- * GNUmakefile.am: ditto.
-
-2011-07-31 Daniel Bates <dbates@webkit.org>
-
- Attempt to fix the GTK build after <http://trac.webkit.org/changeset/92059>
- (https://bugs.webkit.org/show_bug.cgi?id=65419).
-
- * GNUmakefile.am: Add $(CAIRO_CFLAGS) to libWebCoreInternals_la_CPPFLAGS.
-
-2011-07-30 Patrick Gansterer <paroga@webkit.org>
-
- Fix ports_unittest.py on native windows
- https://bugs.webkit.org/show_bug.cgi?id=64959
-
- Reviewed by Adam Barth.
-
- Replace WebKitPort.script_path with WebKitPort.script_shell_command.
- The latter includes the interpreter executable required on native windows.
-
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- Properly escape regular expressions. (Maybe these shouldn't be regular
- expressions?)
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- Add support for Win7 to garden-o-matic.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- garden-o-matic regression ranges expand after fast bots start passing
- https://bugs.webkit.org/show_bug.cgi?id=65406
-
- Reviewed by Dimitri Glazkov.
-
- Once the gardener has fixed a problem, the fast bots pick up the fix,
- which means we end up using the slow bots to compute the regression
- range. Unfortunately, the slow bots give us large regression ranges,
- leading to this strange effect where the regression range quality
- degrades as fixes roll in.
-
- This patch causes us to remember the previous regression ranges we've
- seen and to use that information in the future, as long as it's
- consistent with the new information we receive.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should have a Refresh button to update its display
- https://bugs.webkit.org/show_bug.cgi?id=65403
-
- Reviewed by Dimitri Glazkov.
-
- The refresh button should be faster and less disruptive than the browser's reload button.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should look for the "patch by" line in revisions ostensibly authored by the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=65231
-
- Reviewed by Dimitri Glazkov.
-
- The human readable name is easier to understand, especially when the patch is landed by the commit-queue.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should strikeout revisions that have been rolled out
- https://bugs.webkit.org/show_bug.cgi?id=65227
-
- Reviewed by Dimitri Glazkov.
-
- This helps gardeners keep track of which problems have been solved.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
-
-2011-07-30 Adam Barth <abarth@webkit.org>
-
- Add missing files to the server.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-29 Adam Barth <abarth@webkit.org>
-
- Actually import the logging module!
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-07-29 Adam Barth <abarth@webkit.org>
-
- More debug logging. Maybe we're running the git version of this
- function somehow? (That would explain why it doesn't work!)
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-07-29 Adam Barth <abarth@webkit.org>
-
- Add some temporary debug logging messages to try to understand why the
- windows bots can't figure out their current SVN revision.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-07-29 Adam Barth <abarth@webkit.org>
-
- Chromium try servers should use downstream test_expectations
- https://bugs.webkit.org/show_bug.cgi?id=65390
-
- Reviewed by Dirk Pranke.
-
- Otherwise the try servers will report bogus failures.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-07-29 Dimitri Glazkov <dglazkov@chromium.org>
-
- Fix an error in macro collapsing, refactor code to be pretty.
- https://bugs.webkit.org/show_bug.cgi?id=65387
-
- My set math was wrong.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Moved collapsing into a classmethod, fixed the math to be correct.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests.
-
-2011-07-27 Ryuan Choi <ryuan.choi@samsung.com>
-
- Style bot complains about EFL-specific forward declaration naming.
- https://bugs.webkit.org/show_bug.cgi?id=64680
-
- Exclude EFL-specific forward declarations from indentifiers with underscores checks.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-07-27 Adam Roben <aroben@apple.com>
-
- Use wacky !svn/bc URLs consistently in Leaks Viewer
-
- This ensures that any resources loaded via relative URLs will still get pulled from the same
- revision of Subversion.
-
- Fixes <http://webkit.org/b/65267> Focus/exclude button glyphs don't load on Leaks Viewer
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html: Use the
- !svn/bc-style URL for inspector.css, too, just like we do for all other resources we pull
- from Subversion.
-
-2011-07-27 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] Drop WorkQueueItemEfl.h in favour of the general WorkQueueItem.h
- https://bugs.webkit.org/show_bug.cgi?id=65269
-
- Reviewed by Kent Tamura.
-
- WorkQueueItemEfl.h was being included by efl's
- LayoutTestControllerEfl.cpp, however the top-level
- LayoutTestController still included WorkQueueItem.h, causing a lot of
- type mismatches when running the WorkQueueItem code.
-
- We can stick to the original WorkQueueItem header by making a few
- changes to EFL's LayoutTestController.
-
- This should make tests such as
- fast/loader/non-deferred-substitute-load.html stop crashing.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::queueLoad):
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
- (LoadItem::invoke):
- (LoadHTMLStringItem::invoke):
- (ScriptItem::invoke):
- * DumpRenderTree/efl/WorkQueueItemEfl.h: Removed.
-
-2011-07-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Re-add unit tests I accidentally zapped in r91878.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Re-added unit tests.
-
-2011-07-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Replace SpecificityCalculator with TestConfiguration-driven logic.
- https://bugs.webkit.org/show_bug.cgi?id=65206
-
- Use our newly-acquired ability to expand modifiers into a set of
- matching TestConfiguration instances to calculate specificity and
- determine whether expectation applies to a given test configuration.
-
- Also, store bug modifier on TestExpectationsLine.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Replaced the logic of calculating specificity with
- test configuration matching, removed a bunch of code.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Removed a bunch of tests that aren't useful anymore.
-
-
-2011-07-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Allow ports to specify their own test expectation specifier macros.
- https://bugs.webkit.org/show_bug.cgi?id=65291
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Changed SpecificityCalculator to use port macros.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/base.py: Added configuration_specifier_macros to retrieve the macros.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Overrode it to return Chromium's macros.
- * Scripts/webkitpy/layout_tests/port/test.py: Added test macros.
-
-2011-07-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Allow TestConfigurationConverter report conversion errors.
- https://bugs.webkit.org/show_bug.cgi?id=65287
-
- Also, fix a few miscellaneous testing issues.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added a way to report unknown modifier errors.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added a test for reporting errors.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: Fixed an error where an invalid TestConfiguration instance
- was created. 'default' is not a valid build type.
- * Scripts/webkitpy/layout_tests/port/test.py: Ditto. '' is not a valid version.
-
-2011-07-27 Dimitri Glazkov <dglazkov@chromium.org>
-
- Teach all ports about their test configurations.
- https://bugs.webkit.org/show_bug.cgi?id=65278
-
- Each Port object should return a valid set of all TestConfiguration instances,
- available for this port.
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Removed TestConfiguration.all_test_configurations,
- since it is different for each port.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Removed related test.
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Changed SpecificityCalculator to take a list of
- all test configurations as a param.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Adjusted arguments accordingly.
- * Scripts/webkitpy/layout_tests/port/base.py: Forced all ports to override generation of all test configurations.
- * Scripts/webkitpy/layout_tests/port/chromium.py: Implemented _generate_all_test_configurations for the port.
- * Scripts/webkitpy/layout_tests/port/gtk.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/mac.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/qt.py: Ditto.
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py: Added an extra test to ensure we're generating a good set.
- * Scripts/webkitpy/layout_tests/port/test.py: Implemented a fixed-in-time all_test_configurations for testing.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added a mock all_test_configurations implementation.
- * Scripts/webkitpy/layout_tests/port/win_unittest.py: Added a unit test for the port.
-
-2011-07-27 Benjamin Poulain <benjamin@webkit.org>
-
- [WK2][Qt] Move from QGraphicsView to Qt Scene Graph
- https://bugs.webkit.org/show_bug.cgi?id=62969
-
- Reviewed by Andreas Kling.
-
- Co-authored with Simon Hausmann <simon.hausmann@nokia.com>
-
- With the scene graph, the interface to have a window on screen is
- QSGCanvas. QGraphicsView is not used, and openGL is an enforced
- dependency.
-
- Both the BrowserView and the WebKitTest runner are changed from
- QGraphicsView to QSGCanvas.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView):
- (BrowserView::resizeEvent):
- (BrowserView::view):
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::urlChanged):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/main.cpp:
- (main):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::WebView):
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-07-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r91792.
- http://trac.webkit.org/changeset/91792
- https://bugs.webkit.org/show_bug.cgi?id=65242
-
- It broke NRWT on Qt and GTK (Requested by Ossy_night on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-07-26 Adam Barth <abarth@webkit.org>
-
- Switch to an older idiom that works on Python 2.5.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
-
-2011-07-26 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Add an exception to coding style check for EFL port.
- https://bugs.webkit.org/show_bug.cgi?id=65162
-
- Add an exception of whitespace/declaration for EFL port. Because,
- '*' operator is next to variable in EFL coding style.
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/style/checker.py:
-
-2011-07-26 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- [Qt] Add option to turn on disk caching in QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=65007
-
- Reviewed by Noam Rosenthal.
-
- Add menu item and command line option to turn on disk caching in
- QtTestBrowser. Simple QNetworkDiskCache added to the page's
- QNetworkAccssManager.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::setDiskCache):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-07-26 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- Add support for download='filename' attribute in anchors.
- https://bugs.webkit.org/show_bug.cgi?id=64580
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::loadURLExternally):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-07-26 Dan Bernstein <mitz@apple.com>
-
- Rubber-stamped by Anders Carlsson.
-
- Update DumpRenderTree and API tests for the pictograph font family preference.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2011-07-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Replace SpecificityCalculator with TestConfiguration-driven logic.
- https://bugs.webkit.org/show_bug.cgi?id=65206
-
- Use our newly-acquired ability to expand modifiers into a set of
- matching TestConfiguration instances to calculate specificity and
- determine whether expectation applies to a given test configuration.
-
- Also, store bug modifier on TestExpectationsLine.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added a way to report unknown modifier errors.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added a test for reporting errors.
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Replaced the logic of calculating specificity with
- test configuration matching, removed a bunch of code.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Removed a bunch of tests that aren't useful anymore.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: Fixed an error where an invalid TestConfiguration instance
- was created. 'default' is not a valid build type.
- * Scripts/webkitpy/layout_tests/port/test.py: Ditto. '' is not a valid version.
-
-2011-07-26 Adam Barth <abarth@webkit.org>
-
- Increase the information density in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=65141
-
- Reviewed by Dimitri Glazkov.
-
- This patch changes lets us show each revision on a single line,
- allowing use to show an entire day's worth of commits at once.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
-
-2011-07-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- TestConfigurationConverter should not barf on invalid specifiers.
- https://bugs.webkit.org/show_bug.cgi?id=65194
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Refactored TestConfigurationConverter.to_config_set a bit,
- made it return empty set whenever an invalid specifier is encountered.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added corresponding tests.
-
-2011-07-26 Dimitri Glazkov <dglazkov@chromium.org>
-
- Introduce a way to convert between specifier lists and TestConfiguration sets.
- https://bugs.webkit.org/show_bug.cgi?id=65094
-
- Add TestConfigurationConverter, a facility to convert:
- 1) a set of specifiers into a set of TestConfiguration instances;
- 2) a set of TestConfiguration instances into a list of sets of specifiers.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added TestConfigurationConverter.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added tests for it.
-
-2011-07-26 Alexandru Chiculita <achicu@adobe.com>
-
- CSS Regions build bot should build with "--css-regions" and "--css-exclusion" flags
- https://bugs.webkit.org/show_bug.cgi?id=65171
-
- Added "features" parameter in config.json for "builder" objects. The parameter is optional and must be an array. All the items
- of the array will be passed to the build-webkit script. The items will automatically be prefixed with "--".
-
- Reviewed by Adam Roben.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-07-26 Chris Rogers <crogers@google.com>
-
- Avoid outputting #EOF twice for web audio tests in chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=65201
-
- Reviewed by Dirk Pranke.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
-
-2011-07-26 Adam Barth <abarth@webkit.org>
-
- Windows bots on build.chromium.org can't figure out the head_svn_revision
- https://bugs.webkit.org/show_bug.cgi?id=65156
-
- Reviewed by Tony Chang.
-
- This patch is a bit of a guess as to the issue based on the
- investigation in https://bugs.webkit.org/show_bug.cgi?id=65148. I'm
- not sure whether it will fix the issue, but it seems worth a try.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-07-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix WebKitGtk build with GTK+ 3.x after r91707.
-
- * DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp:
- (getPreferredSizeMethod):
-
-2011-07-26 MORITA Hajime <morrita@google.com>
-
- [Chromium][DRT] MockSpellCheck.cpp should be clang clean
- https://bugs.webkit.org/show_bug.cgi?id=65166
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::spellCheckWord): -Wsign-compare warning.
-
-2011-07-25 Patrick Gansterer <paroga@webkit.org>
-
- Ignore line endings in ChangeLogTests
- https://bugs.webkit.org/show_bug.cgi?id=64956
-
- Reviewed by Adam Barth.
-
- Split the lines of the ChangeLog text before comparing them.
- This fixes 3 tests on windows, since only the content importent.
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
-
-2011-07-25 Adam Barth <abarth@webkit.org>
-
- Add some debug logging to NRWT to diagnose why the windows bots can't determine their SVN revision
- https://bugs.webkit.org/show_bug.cgi?id=65148
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- Tweak whitespace wrapping to improve readability.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- Minor tweak to wrap label elements as atomic units.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- always show flakiness details on the builder page
- https://bugs.webkit.org/show_bug.cgi?id=65139
-
- Reviewed by Tony Chang.
-
- In order to simplify the UI, we hide the flakiness details by default,
- but there's no actual use-case for this page without the flakiness details.
- So get rid of that option and always show the flakiness details.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- simplify the UI of the header above the test list table
- https://bugs.webkit.org/show_bug.cgi?id=65136
-
- Reviewed by Adam Barth.
-
- Use checkboxes instead of links since this is really about which tests to include.
- Ends up using less text and put the checkboxes to the right of the header instead of below it.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-25 Chris Rogers <crogers@google.com>
-
- Update new-run-webkit-tests to accomodate binary audio data
- https://bugs.webkit.org/show_bug.cgi?id=65135
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-07-25 Chris Rogers <crogers@google.com>
-
- Update Chromium DRT to output binary (instead of base64-encoded) data for web audio testing
- https://bugs.webkit.org/show_bug.cgi?id=65039
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setAudioData):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::audioData):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter::handleAudioHeader):
- (TestShellPrinter::handleAudioHeader):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
-
-2011-06-07 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] Use WebCore scrollbars for the DRT instead of GtkScrolledWindow
- https://bugs.webkit.org/show_bug.cgi?id=62252
-
- Add a new subclass of WebKitWebView that overrides the size request to
- return 1 pixel by 1 pixel. This ensure that it operates properly when
- not packed into a GtkScrolledWindow. Also construct the WebKitWebView
- with self-scrolling set to true.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webInspectorInspectWebView): Use the new SelfScrollingWebKitWebview class here.
- (createWebView): Ditto.
- (main): Pack the widget into a GtkBox instead of a GtkScrolledWindow.
- * DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp: Added.
- (self_scrolling_webkit_web_view_class_init):
- (self_scrolling_webkit_web_view_init):
- (self_scrolling_webkit_web_view_new):
- (sizeRequestMethod):
- (getPreferredSizeMethod):
- * DumpRenderTree/gtk/SelfScrollingWebKitWebView.h: Added.
- * GNUmakefile.am: Added SelfScrollingWebKitWebView files to the source list.
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- by default hide tests that have passes for all recorded runs
- https://bugs.webkit.org/show_bug.cgi?id=65127
-
- Reviewed by Adam Barth.
-
- This is part of simplifying the default views of the dashboard to
- make it show less information for the common use cases.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- stop generating expectations.json now that it's unused
- https://bugs.webkit.org/show_bug.cgi?id=65130
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- * TestResultServer/handlers/menu.py:
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-25 Ojan Vafai <ojan@chromium.org>
-
- don't show builders in the flakiness dashboard that have stopped running a given test suite
- https://bugs.webkit.org/show_bug.cgi?id=65126
-
- Reviewed by Mihai Parparita.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2011-07-25 Adam Barth <abarth@webkit.org>
-
- Overhaul garden-o-matic frontend to integrate revision history and failures
- https://bugs.webkit.org/show_bug.cgi?id=65089
-
- Reviewed by Dimitri Glazkov.
-
- This is a major overhaul of the garden-o-matic frontend. The new UI
- integrates the revision history information with failures. Failures
- appear in context adjacent to the revisions that caused them (which are
- highlighted). Each buildbot receives a collumn to the left, which
- indicates which revisions that bot has tested and whether that bot
- showed the indicated failures.
-
- Failures are selectable with checkboxes, and can then either be
- examined or rebaselined.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
-
-2011-07-25 Holger Hans Peter Freyther <zecke@selfish.org>
-
- [buildbot] Add Qt Linux MIPSEL Configuration
- https://bugs.webkit.org/show_bug.cgi?id=65116
-
- Reviewed by Adam Roben.
-
- Introduce a Qt Linux MIPS EL build slave. The configuration
- is a build only configuration.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add MIPS buildbot.
-
-2011-07-25 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt][WK2] Add multi-point touch mocking to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=64374
-
- Reviewed by Benjamin Poulain.
-
- Each mouse button generate a touch point. The touch point stay
- virtually on screen if the mouse release happened while the Ctrl
- modifier was pressed.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
-
-2011-07-25 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Use NRWT for Qt-WK2
- https://bugs.webkit.org/show_bug.cgi?id=65097
-
- Reviewed by Andreas Kling.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r91635.
- http://trac.webkit.org/changeset/91635
- https://bugs.webkit.org/show_bug.cgi?id=65083
-
- It broke the minimal build (Requested by Ossy___OFFLINE on
- #webkit).
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-07-24 Adam Barth <abarth@webkit.org>
-
- Rename garden-o-matic "alert" to "infobar" and increase the width to 100%.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js:
-
-2011-07-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- TestConfiguration should be hashable and comparable for equality.
- https://bugs.webkit.org/show_bug.cgi?id=65070
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added __hash__ and __eq__ methods.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added unit tests.
-
-2011-07-23 Dimitri Glazkov <dglazkov@chromium.org>
-
- Extract TestConfiguration from base and write a few unit tests to capture current behavior.
- https://bugs.webkit.org/show_bug.cgi?id=65066
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py: Added.
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/base.py: Moved code to test_configuration.py
-
-2011-07-23 Alok Priyadarshi <alokp@chromium.org>
-
- Switching off acceleration for small canvas broke gpu tests
- https://bugs.webkit.org/show_bug.cgi?id=65053
-
- Reviewed by Stephen White.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-07-23 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- [Qt] Add option to turn on disk caching in QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=65007
-
- Reviewed by Noam Rosenthal.
-
- Add menu item and command line option to turn on disk caching in
- QtTestBrowser. Simple QNetworkDiskCache added to the page's
- QNetworkAccssManager.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- (LauncherWindow::setDiskCache):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- Don't match 'DEBUG' when trying to filter BUG modifiers.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- Fix issue loading gtests since there's no g_expectations.
- Also, make filing a bug file a webkit.org bug, not a crbug since
- the link is only shown for layout tests.
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- pull test expectations into the dashboard from wvn.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=65054
-
- Reviewed by Adam Barth.
-
- Now that svn.webkit.org supports cors headers, we can just grab the txt
- file from there instead of generating a JSON file that we upload
- to appengine. We'll stop generating the JSON file in a followup patch.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-22 Adam Barth <abarth@webkit.org>
-
- Fix typo so the tool works on a case-sensitive file system.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
-
-2011-07-22 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should know what patches are landing
- https://bugs.webkit.org/show_bug.cgi?id=64978
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a display of the recently committed patches to
- garden-o-matic. The UI needs iteration, but this patch establishes the
- plumbing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- - Teach trac how to extract more information from the commit log.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- - Add a data attribute for storing the revision.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- - Add a container for the recent commit history.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css:
- - CSS for displaying non-ugly commit history.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js:
- - Wire up trac to the UI container.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js:
- - A basic, compact display for a list of commits.
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- Fix bug when switching from layout-tests to another test-type if
- ToT webkit.org is the selected group.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- Add back in line accidentally deleted in http://trac.webkit.org/changeset/91612.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-22 Ojan Vafai <ojan@chromium.org>
-
- simplify the flakiness dashboard to only show modifiers/expectations for the current builder
- https://bugs.webkit.org/show_bug.cgi?id=65049
-
- Reviewed by Tony Chang.
-
- This communicates less information, but probably makes the dashboard more usable.
- Also make it show that bug lines that don't point to bug numbers still
- show up in the bugs column (e.g. BUG_TONY) and stop showing the extra/missing
- columns in any view. The data is still used, but only in the view that updates
- the test_expectations.txt file.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-21 Ojan Vafai <ojan@chromium.org>
-
- hook in the rest of the bots to the dashboard now they run NRWT
- https://bugs.webkit.org/show_bug.cgi?id=64985
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2011-07-22 Alexey Proskuryakov <ap@apple.com>
-
- Adding Tim Horton to contributor list for Bugzilla auto-completion. He is CC'ed quite frequently.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-22 Michal Pakula vel Rutka <m.pakula@samsung.com>
-
- [EFL] ewk_frame_hit_test_new enchancement
- https://bugs.webkit.org/show_bug.cgi?id=64260
-
- Apply changes done in ewk_frame_hit_test_new in EWebLauncher:
- Replacing Ewk_Hit_Test_Result_Context structure 'flags'
- in hit test output to by enum 'context'.
-
- Reviewed by Antonio Gomes.
-
- * EWebLauncher/main.c:
- (on_key_down):
-
-2011-07-21 Adam Roben <aroben@apple.com>
-
- Fix typo in TestFailures
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
-
-2011-07-21 Ojan Vafai <ojan@chromium.org>
-
- simplify gtest display now that we strip modifiers from the JSON
- https://bugs.webkit.org/show_bug.cgi?id=64990
-
- Reviewed by Adam Barth.
-
- Now that names are normalized, we can remove all the code that
- handles gtest name changes (e.g. for adding modifiers like DISABLED_).
- Instead, if you try to list a test with a modifier in it, we need
- to strip the modifier so we get the normalized value.
-
- We also get rid of the concept of extra/missing expectations for gtests.
- In a patch soon, we'll stop showing extra/missing expectations from the UI
- entirely and only leave it for the special updating test_expectations.txt
- view of the dashboard, which doesn't apply to gtests.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- Refactor Trac.js for use in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=64998
-
- Reviewed by Adam Roben.
-
- This patch refactors Trac.js to match the architecture and style of
- garden-o-matic. I've also factored AsynchronousCache out of Trac (and
- moved it to base) because it was redundant with some other code we
- already had.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js:
- (FailingTestsBugForm):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder.start):
- (ViewController.prototype._displayBuilder):
- (ViewController.prototype._domForRegressionRange.trac.getCommitDataForRevisionRange):
- (ViewController.prototype._domForRegressionRange):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
-
-2011-07-21 Ojan Vafai <ojan@chromium.org>
-
- Fix issue throwing a 500 to the bots. We were modifying
- the dictionary during an iteration over it's keys and would get
- RuntimeError: dictionary changed size during iteration
-
- * TestResultServer/model/jsonresults.py:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- ORWT fails to consume some NRWT arguments
- https://bugs.webkit.org/show_bug.cgi?id=64988
-
- Reviewed by Adam Roben.
-
- * Scripts/old-run-webkit-tests:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- Merge TestFailures and garden-o-matic unit tests harness
- https://bugs.webkit.org/show_bug.cgi?id=64984
-
- Reviewed by Adam Roben.
-
- One unit testing framework is better than two.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-more-unittests.html: Removed.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Adam Roben.
-
- Move garden-o-matic files into the same directory as TestFailures to
- make it easier to integrate the codebases.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/base.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/base_unittests.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/base_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/checkout_unittests.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/checkout_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/config.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/config.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-green.png: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-green.png.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon-red.png: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-red.png.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/index.html.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.css: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.css.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/main.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/main.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/partytime.gif: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/partytime.gif.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/results_unittests.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-more-unittests.html: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ui_unittests.js: Copied from Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js.
- * Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- * Scripts/webkitpy/tool/servers/data/gardeningserver: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base_unittests.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout_unittests.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-green.png: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-red.png: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/partytime.gif: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js: Removed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js: Removed.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-19 Ojan Vafai <ojan@chromium.org>
-
- fix links on the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=64832
-
- Reviewed by Tony Chang.
-
- Make them actual anchor tags and linkify the test name instead of
- adding an extra link. Also simplify the update view since we now
- show the linkified test name.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- webkit.org builders should upload results to test-results AppEngine instance
- https://bugs.webkit.org/show_bug.cgi?id=64979
-
- Reviewed by Adam Roben.
-
- The master just needs to pass some flags to NRWT. This patch also lets
- ORWT consume the flags (ignoring them) so we can pass the flags
- unconditionally.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/old-run-webkit-tests:
-
-2011-07-21 Ojan Vafai <ojan@chromium.org>
-
- normalize gtest names in the result json
- https://bugs.webkit.org/show_bug.cgi?id=64971
-
- Reviewed by Eric Seidel.
-
- This will make the resulting JSON smaller and make the
- flakiness dashboard much more sane (e.g. we won't need to
- show you the FLAKY_ version and the normal version).
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-07-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Reenable ORWT for the --leaks bot.
- Something is still wrong with the leaks summarizing
- but I'm about to head out on vacation for 2 weeks,
- so it's best to just revert back to ORWT until I'm back.
-
- * Scripts/run-webkit-tests:
- (usingLeaks):
- (useNewRunWebKitTests):
-
-2011-07-21 Ojan Vafai <ojan@chromium.org>
-
- cleanup jsonresults.py style in preparation for making some changes
- https://bugs.webkit.org/show_bug.cgi?id=64968
-
- Reviewed by Adam Barth.
-
- No code changes. Unittest still passes. Mostly just removing
- useless comments and 80 character wrapping.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- Add missing column header.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
-
-2011-07-21 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Just fixing (and unittesting) a previous typo.
-
- Fix typo in print_leaks_summary regexp which was causing
- leaks summarizing to fail on the --leaks bot.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to rebaseline many tests at once
- https://bugs.webkit.org/show_bug.cgi?id=64963
-
- Reviewed by Dimitri Glazkov.
-
- This patch contains some UI for rebaselining tests in bulk. I don't
- expect this UI to be the final UI, but the underlying infrastructure
- will be useful.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
-
-2011-07-21 Adam Barth <abarth@webkit.org>
-
- garden-o-matic has trouble when the same test fails in different ways on diffrent bots
- https://bugs.webkit.org/show_bug.cgi?id=64830
-
- Unreviewed. (Missing the patch is blocking me from fixing the tree.)
-
- This patch is just some minor bug fixes. One of the bugs results from
- the sadness of having two representations (a list and a space-separated
- string) for the set of failure types.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-20 Ryosuke Niwa <rniwa@webkit.org>
-
- Buildbot marks a nrwt bot red when tests are missing results
- https://bugs.webkit.org/show_bug.cgi?id=64812
-
- Reviewed by Adam Barth.
-
- The bug was caused by multiple expressions matching on the single output.
- Fixed it by exiting the loop as soon as one expression matches.
-
- Because the regular expression for 'failures' is most general,
- moved it to the end of the list to avoid it catching other cases.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-07-20 Chang Shu <cshu@webkit.org>
-
- Adding myself to the reviewers list; No review needed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-20 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests --leaks does not restart DumpRenderTree often enough
- https://bugs.webkit.org/show_bug.cgi?id=64912
-
- Reviewed by Adam Barth.
-
- The bug was that set_default_option only works if the option's value
- is "None". So I fixed --batch-size to default to None instead of 0
- (which kinda makes sense).
-
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-20 Eric Seidel <eric@webkit.org>
-
- Make kill-old-processes kill httpd on mac
- https://bugs.webkit.org/show_bug.cgi?id=64898
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/kill-old-processes:
- - The line endings seem to have flipped again,
- Thus making this diff gigantic. The only line
- changed is the "httpd" line. I suspect we'll need
- to set the line ending style from an svn checkout.
-
-2011-07-20 Ojan Vafai <ojan@chromium.org>
-
- show a list of average test times in the treemap
- https://bugs.webkit.org/show_bug.cgi?id=64899
-
- Reviewed by Adam Roben.
-
- For now, you click a link and it replaces the treemap
- with a reverse sorted list of directories based on
- average test runtime within that directory.
-
- To cut some of the noise, we don't show directories
- that only have one test in them or where the average
- runtime is less than 100ms.
-
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-07-20 Eric Seidel <eric@webkit.org>
-
- Teach build.webkit.org how to identify leaks in NRWT output
- https://bugs.webkit.org/show_bug.cgi?id=64891
-
- Reviewed by Adam Barth.
-
- This was the last remaining piece blocking turning on
- NRWT for the leaks bot, so I did that in this change too.
- If for some reason we see trouble on the bots, I'll
- revert that part of this change.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-webkit-tests:
-
-2011-07-20 Ojan Vafai <ojan@chromium.org>
-
- make the treemap display more human friendly
- https://bugs.webkit.org/show_bug.cgi?id=64896
-
- Reviewed by Tony Chang.
-
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-07-20 Eric Seidel <eric@webkit.org>
-
- Move HttpLock to using a FileSystem object
- https://bugs.webkit.org/show_bug.cgi?id=64885
-
- Reviewed by Adam Barth.
-
- I made a typo in my previous change, taking the value
- of read_text_file(pid_file) and setting it to lock_pid_file
- instead of current_pid. Fixed now. :)
-
- In order to test my new change I had to overhaul the unittests
- for this class to create a separate set of tests which work off
- of Mock objects instead of the real filesystem.
-
- Since Executive doesn't yet wrap os.getpid() I added a FIXME
- in several places where we're currently calling os.getpid(). I
- felt adding Executive.getpid was outside of the scope of this change
- but once it exists some of this code will be much simpler to mock.
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-07-20 Adam Roben <aroben@apple.com>
-
- Fix typo in TestFailures's Bugzilla constants
-
- This was preventing the "Version" field from being pre-filled when filing new bugs.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBugzilla.js:
-
-2011-07-20 Eric Seidel <eric@webkit.org>
-
- Move HttpLock to using a FileSystem object
- https://bugs.webkit.org/show_bug.cgi?id=64885
-
- Reviewed by Adam Barth.
-
- There is no functional change here. Just moving off
- of direct os.foo calls to their filesystem equivalent.
-
- This makes it possible to now unittest HttpLock using a
- MockFileSystem instead of needing to talk to the filesystem directly.
-
- This also will have changed any port test cases which were using a
- mock file system to now have an HttpLock based on a mock filesystem
- instead. I saw no change in the unittests so it's possible
- we're not testing that configuration (or more likely that it "just works").
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
-
-2011-07-20 Adam Barth <abarth@webkit.org>
-
- NRWT results uses too much space per run
- https://bugs.webkit.org/show_bug.cgi?id=64845
-
- Reviewed by Ojan Vafai.
-
- Removing these files saves about 750K per build.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-07-20 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] [NRWT] Xvfb produces a lot of stderr output
- https://bugs.webkit.org/show_bug.cgi?id=64669
-
- Reviewed by Philippe Normand.
-
- Redirect the stderr output of the driver's Xvfb process
- to /dev/null to suppress unneeded output.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-07-19 Eric Seidel <eric@webkit.org>
-
- parse-malloc-history always exits 1, causing NRWT to fail
- https://bugs.webkit.org/show_bug.cgi?id=64835
-
- Reviewed by Adam Barth.
-
- ORWT just never checked the return code. :)
-
- * Scripts/parse-malloc-history:
- (main):
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-07-19 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, don't add the debug prefix as 2.9 no longer uses one.
-
- * waf/build/wxpresets.py:
-
-2011-07-19 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests should only enable MallocStackLogging for DRT
- https://bugs.webkit.org/show_bug.cgi?id=64792
-
- Reviewed by Adam Barth.
-
- The previous code would enable it for all servers launched
- by the port, which included Apache, the python websocket server
- as well as ImageDiff. Now only DumpRenderTree will have
- MallocStackLogging enabled or the GuardMalloc library injected.
-
- I also cleaned up the websocket_server code to use filesystem
- while I was in it.
-
- I also made DRT restart every 1000 tests when running with
- --leaks enabled. I believe this made the --leaks run slightly
- faster, but it still takes over an hour on my machine. :(
-
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
-
-2011-07-19 Ojan Vafai <ojan@chromium.org>
-
- remove the concept of platform fallbacks
- https://bugs.webkit.org/show_bug.cgi?id=64829
-
- Reviewed by Adam Barth.
-
- In the process, wrote tests for this code and fixed a pretty major
- bug (now covered by the test).
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-19 Ojan Vafai <ojan@chromium.org>
-
- cleanup some of the PLATFORM logic in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=64821
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-19 Ojan Vafai <ojan@chromium.org>
-
- cleanup some of the PLATFORM logic in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=64821
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-19 Dimitri Glazkov <dglazkov@chromium.org>
-
- Store line number on TestExpectationLine.
- https://bugs.webkit.org/show_bug.cgi?id=64800
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Refactored to store line number on TestExpectationLine instances.
-
-2011-07-19 Ojan Vafai <ojan@chromium.org>
-
- fix flakiness dashboard for XP bots with XP in the name instead of WIN
- https://bugs.webkit.org/show_bug.cgi?id=64826
-
- Reviewed by Mihai Parparita.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
-
-2011-07-19 Cary Clark <caryclark@google.com>
-
- add myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=64816
-
- No review needed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-19 Daniel Bates <dbates@webkit.org>
-
- Rename variable isEmptyTextPatch in svn-{apply, unapply}
- https://bugs.webkit.org/show_bug.cgi?id=64648
-
- Reviewed by Adam Roben.
-
- Rename the variable isEmptyTextPatch to hasTextChunks, which is
- more descriptive and makes its usage read well in control statements.
-
- * Scripts/svn-apply:
- (patch):
- * Scripts/svn-unapply:
- (patch):
-
-2011-07-19 Adam Roben <aroben@apple.com>
-
- Make TestFailures show existing bugs and a new bug link for flaky tests
-
- Fixes <http://webkit.org/b/63728> TestFailures page should make it easy to file bugs about
- flaky tests
- and
- <http://webkit.org/b/63830> TestFailures page doesn't show related bugs for possibly-flaky
- tests, but should
-
- Reviewed by Sam Weinig.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm.js:
- Added. This is what's used to file new bugs about flaky tests.
- (FlakyTestBugForm): Calls up to the base class, stores the arguments, and sets our
- title, description, and URL.
-
- (FlakyTestBugForm.prototype._createBugDescription):
- (FlakyTestBugForm.prototype._createBugTitle):
- These do what they say.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyTestBugForm_unittests.js:
- Added. Tests of the above.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (#failure-history > li):
- (#possibly-flaky-tests > li):
- (#failure-history > li, #possibly-flaky-tests > li):
- (#possibly-flaky-tests > li > :first-child):
- (.flakiness-examples-list):
- Styling to account for the new elements.
-
- (.expandable):
- (.expanded > .expandable):
- Generalized the .flakiness-example-list code to a generic .expandable class. Removed the
- transition properties because we can't transition to/from 'auto' (but really would like
- to!).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Moved code to create the FailingTestsBugForm
- here from _domForNewAndExistingBugs. Updated for changes to _domForPossiblyFlakyTests.
- (ViewController.prototype._domForNewAndExistingBugs): Changed to take a NewBugForm as an
- argument instead of creating one ourselves.
- (ViewController.prototype._domForPossiblyFlakyTests): Changed to take all analyzed builds as
- an argument instead of just the number of analyzed builds. Put the examples list inside a
- container <div>, which is also used to hold the new/existing bugs UI. Removed code to deal
- with animating the height of the examples list; we don't do this anymore because it's hard
- to make it work correctly with the asynchronous loading of existing bugs. When we populate
- the examples list, also set up the new/existing bug UI.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- FlakyTestBugForm.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Pull in FlakyTestBugForm and its tests.
-
-2011-07-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Buildbot marks a nrwt bot red when tests are missing results
- https://bugs.webkit.org/show_bug.cgi?id=64812
-
- Reviewed by Tony Chang.
-
- Added "missing results" label for tests that are missing results.
-
- buildbot Now reports shows a label "X missing results" on a run when X tests were missing
- expected results on that run.
-
- Also rephrased "X failed" and "X were flaky" to "X failures" and "X flakes".
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-07-19 Adam Roben <aroben@apple.com>
-
- Extract some of FailingTestsBugForm's code into a base class
-
- Prep work for fixing <http://webkit.org/b/63728> TestFailures page should make it easy to
- file bugs about flaky tests
-
- Reviewed by Sam Weinig.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js:
- Moved BugzillaConstants to new WebKitBugzilla file. Moved a bunch of other code from here to
- TestRelatedBugForm.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js:
- Moved some tests to TestRelatedBugForm_unittests.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm.js: Added.
- (TestRelatedBugForm):
- (TestRelatedBugForm.prototype.domElement):
- (TestRelatedBugForm.prototype._computeOperatingSystem):
- (TestRelatedBugForm.prototype._computePlatform):
- Code came from FailingTestsBugForm.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestRelatedBugForm_unittests.js:
- Added. Tests came from FailingTestsBugForm_unittests.js
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBugzilla.js:
- Added. Code came from FailingTestsBugForm.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- TestRelatedBugForm.js and WebKitBugzilla.js. Moved Bugzilla.js out of the list of files that
- need to be pulled in early for parsing reasons.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Pull in TestRelatedBugForm and tests and WebKitBugzilla.
-
-2011-07-19 Sam Weinig <sam@webkit.org>
-
- Remove obsolete Mac NRWT test bots
- https://bugs.webkit.org/show_bug.cgi?id=64806
-
- Reviewed by Adam Roben.
-
- Remove "Leopard Intel Release (NRWT)" and "SnowLeopard Intel Release (NRWT)"
- which have been disconnected for some time and have been obsoleted by
- the main testers using NRWT.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-07-19 Sam Weinig <sam@webkit.org>
-
- webkit-patch rebaseline crashes on use
- https://bugs.webkit.org/show_bug.cgi?id=64775
-
- Reviewed by Adam Roben.
-
- Fix incorrectly spelled attribute name.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- The attribute is test_name, not filename.
-
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- Add test for tests_matching_failure_types.
-
-2011-07-18 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests should support --leaks
- https://bugs.webkit.org/show_bug.cgi?id=63832
-
- Reviewed by Dirk Pranke.
-
- This may not be sufficient to actually transition over the leaks bot,
- but this is a huge step in the right direction.
-
- I had to make parse-malloc-history understand being passed more than
- one file (to avoid the silly cat | nonsense in old-run-webkit-tests).
-
- I removed some dead code relating to previous iterations of our crash detection.
-
- I created a new class "LeakDetector" to encapsulate all this logic.
- Eventually we should consider pulling that class out of mac.py and
- sharing with other ports. However given that ORWT has had
- --leaks support on Mac for almost 7 years and no other port has added
- it, leaves me to believe we're in no rush to move LeakDetector.
-
- I've tested --leaks locally. I suspect there are more bugs to shake out
- but it seems to work well enough to start.
-
- I also added support for --guard-malloc, but have not tested it much. It
- should be viewed as experimental at this time.
-
- I also fixed various os.path uses to self._filesystem as I was reading
- through the various files to understand how best to fix this bug.
-
- * Scripts/old-run-webkit-tests:
- (parseLeaksandPrintUniqueLeaks):
- * Scripts/parse-malloc-history:
- (main):
- * Scripts/webkitpy/common/system/crashlogs.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-19 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should have a "Triage Failures" button for iterating over failures
- https://bugs.webkit.org/show_bug.cgi?id=64769
-
- Reviewed by Eric Seidel.
-
- This patch adds some global static state and refactors things a bit so
- that we can iterate over all the failures in the details pane.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- - Add a generic callback iterator to iterate through a series of
- callbacks. We use this to iterate through the failures we want to
- display the details of.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- - Add a toolbar for the results summary and change the buttons to
- be real buttons.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- - Make the detail pane 75% of the window.
- - Make the buttons pretty.
- - Allow the failure type badges to apply to the details pane as well.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- - Restructure how we bring up the details pane so we can iterate
- through a bunch of failures.
- - Remove the transition between results details because it's
- annoying when you want to click through a bunch of failures.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- - Add some more structure to the title bar for the results details
- so it's clearer which results we're currently displaying.
-
-2011-07-19 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should live update as conditions change on the buildbot
- https://bugs.webkit.org/show_bug.cgi?id=64646
-
- Reviewed by Eric Seidel.
-
- This patch causes the garden-o-matic display to update every 10 minutes
- to show the latest failures. This patch required a moderately large
- refactoring of main.js to make the display incremental instead of
- all-at-once.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
-
-2011-07-18 Tab Atkins <jackalmage@gmail.com>
-
- Tab Atkins is not in committers.py (as a non-committer)
- https://bugs.webkit.org/show_bug.cgi?id=64770
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-18 Ojan Vafai <ojan@chromium.org>
-
- Load ToT chromium bots by default in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=64756
-
- Reviewed by Adam Barth.
-
- For now, these are the most useful bots to look at. Eventually,
- we may want to load the build.webkit.org bots by default once
- most of the bots there upload results.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2011-07-13 Jon Honeycutt <jhoneycutt@apple.com>
-
- Focus and selection events are not fired when a <select>'s selection
- changes
- https://bugs.webkit.org/show_bug.cgi?id=64504
- <rdar://problem/9319881>
-
- Reviewed by Alice Liu.
-
- * DumpRenderTree/AccessibilityController.h:
- Added m_notificationsEventHook for addNotificationListener().
- m_allEventsHook will now be used for setLogAccessibilityEvents().
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- Initialize m_notificationsEventHook.
- (AccessibilityController::~AccessibilityController):
- Turn off logging of all accessibility events. If
- m_notificationsEventHook is non-null, unhook it.
- (logEventProc):
- Add handling of EVENT_OBJECT_SELECTION.
- (AccessibilityController::setLogAccessibilityEvents):
- If the state of logging is not changing, return early. If we're turning
- off logging, unhook m_allEventsHook, and zero it out. Otherwise, add a
- hook for all events.
- (AccessibilityController::addNotificationListener):
- Use m_notificationsEventHook rather than m_allEventsHook.
-
-2011-07-18 Eric Seidel <eric@webkit.org>
-
- webkit-patch apply-attachment does not work when not called from the root of the checkout
- https://bugs.webkit.org/show_bug.cgi?id=64751
-
- Unreviewed. Just updating unit test results after bug 64751.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
-
-2011-07-18 Adam Barth <abarth@webkit.org>
-
- simplejson has trouble on chromium-linux
- https://bugs.webkit.org/show_bug.cgi?id=64757
-
- Reviewed by Eric Seidel.
-
- Use the native JSON, if available.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2011-07-18 Ojan Vafai <ojan@chromium.org>
-
- update the flakiness dashboard to understand the new platforms/formats in test_expectations
- https://bugs.webkit.org/show_bug.cgi?id=64743
-
- Reviewed by Adam Barth.
-
- The test expectations format changed a long time ago and the flakiness dashboard
- was never updated to match.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
-
-2011-07-18 Eric Seidel <eric@webkit.org>
-
- webkit-patch apply-attachment does not work when not called from the root of the checkout
- https://bugs.webkit.org/show_bug.cgi?id=64751
-
- Reviewed by Adam Barth.
-
- Last week I removed a os.chdir in EnsureWorkingDirectoryClean, which
- is a step that we run for most commands (as one of the earliest steps).
- EnsureWorkingDirectoryClean was incorrectly calling os.chdir to change
- the CWD to the checkout root. This magically made a bunch of otherwise
- wrong code work.
-
- When I realized that apply-attachment no longer worked as expected today,
- I went and fixed the bug, then realizing that we were not testing
- what the cwd was when running various commands. I fixed our MockExecutive
- to always log what the cwd is and fixed a whole bunch of places
- where we needed to be setting the cwd.
-
- Hopefully this will solve our cwd problems once and for-all, and webkit-patch
- will again correctly work when called from any directory (including outside
- of a webkit checkout).
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- * Scripts/webkitpy/tool/steps/build.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/editchangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- * Scripts/webkitpy/tool/steps/update.py:
-
-2011-07-18 Adam Barth <abarth@webkit.org>
-
- Increase information garden-o-matic information density by switching to a table
- https://bugs.webkit.org/show_bug.cgi?id=64642
-
- Reviewed by Dimitri Glazkov.
-
- The old layout couldn't handle the large number of failures we had
- today. This patch switches garden-o-matic to a table-based layout,
- which can handle many more failures gracefully. (I expect we'll need
- more UI iterations.)
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-18 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to determine when compile breaks
- https://bugs.webkit.org/show_bug.cgi?id=64190
-
- Reviewed by Dimitri Glazkov.
-
- This patch adds a red-ish box to the top of the page whenever there is
- a compile error on the bots. The box automatically opens and closes as
- appropriate and links to the waterfall display. In the future, we
- might want to compute a regression range.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js:
- - Add the build-only bots to the config. We use these to check
- whether the build failed, which is faster than waiting for the
- tester bots to cycle.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- - Add DOM for the alert bar.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- - CSS to support the alert bar.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- - Wiring up events to poll the buildbot to see whether compile has
- failed.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- - Infrastructure for fetching and parsing the buildbot status JSON
- blob. This code could be better factored for testability. :(
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- - UI for displaying compile errors.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r91132 and r91135.
- http://trac.webkit.org/changeset/91132
- http://trac.webkit.org/changeset/91135
- https://bugs.webkit.org/show_bug.cgi?id=64681
-
- Broke GTK and Chromium debug bots (Requested by rniwa on
- #webkit).
-
- * DumpRenderTree/AccessibilityController.h:
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (logEventProc):
- (AccessibilityController::setLogAccessibilityEvents):
- (AccessibilityController::addNotificationListener):
-
-2011-07-17 Philippe Normand <pnormand@igalia.com>
-
- test-webkitpy failing with Python 2.5
- https://bugs.webkit.org/show_bug.cgi?id=64594
-
- Reviewed by Eric Seidel.
-
- Updated simplejson to version 2.1.6 that fixes an issue when
- dumping slashes. Also use cgi.parse_qs instead of the urlparse
- version to be compatible with Python2.5. Verified the fix with
- test-webkitpy on python 2.5 and python 2.6.
-
- * Scripts/webkitpy/thirdparty/simplejson/README.txt:
- * Scripts/webkitpy/thirdparty/simplejson/__init__.py:
- * Scripts/webkitpy/thirdparty/simplejson/_speedups.c:
- (json_PyOS_string_to_double):
- (_convertPyInt_AsSsize_t):
- (_convertPyInt_FromSsize_t):
- (ascii_escape_char):
- (ascii_escape_unicode):
- (ascii_escape_str):
- (raise_errmsg):
- (join_list_unicode):
- (join_list_string):
- (_build_rval_index_tuple):
- (scanstring_str):
- (scanstring_unicode):
- (py_scanstring):
- (py_encode_basestring_ascii):
- (scanner_dealloc):
- (scanner_traverse):
- (scanner_clear):
- (_parse_object_str):
- (_parse_object_unicode):
- (_parse_array_str):
- (_parse_array_unicode):
- (_parse_constant):
- (_match_number_str):
- (_match_number_unicode):
- (scan_once_str):
- (scan_once_unicode):
- (scanner_call):
- (scanner_new):
- (scanner_init):
- (encoder_new):
- (encoder_init):
- (encoder_call):
- (_encoded_const):
- (encoder_encode_float):
- (encoder_encode_string):
- (_steal_list_append):
- (encoder_listencode_obj):
- (encoder_listencode_dict):
- (encoder_listencode_list):
- (encoder_dealloc):
- (encoder_traverse):
- (encoder_clear):
- (init_speedups):
- * Scripts/webkitpy/thirdparty/simplejson/decoder.py:
- * Scripts/webkitpy/thirdparty/simplejson/encoder.py:
- * Scripts/webkitpy/thirdparty/simplejson/ordered_dict.py: Added.
- * Scripts/webkitpy/thirdparty/simplejson/scanner.py:
- * Scripts/webkitpy/thirdparty/simplejson/tool.py: Added.
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-07-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- Rename ModifierMatcher to SpecificityCalculator.
- https://bugs.webkit.org/show_bug.cgi?id=64660
-
- It's a little longer than before, but it is much clearer.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Renamed and adjusted
- all callsites, also rewrote the comments.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Adjusted callsites
- and renamed tests.
-
-2011-07-15 Adam Barth <abarth@webkit.org>
-
- gardening server should proxy buildbot status for garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=64588
-
- Reviewed by Eric Seidel.
-
- This information will be used to detect build breaks. I took this
- opportunity to make ChromiumBuildBot non-static.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2011-07-15 Julien Chaffraix <jchaffraix@webkit.org>
-
- [NRWT] Add support for --no-http
- https://bugs.webkit.org/show_bug.cgi?id=64564
-
- Reviewed by Dirk Pranke.
-
- Added support for --no-http, which disables both HTTP and websockets tests.
- It also matches the old-run-webkit-tests behavior if --force is used.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- Fixed HTTP_SUBDIR and WEBSOCKET_SUBDIR as tests do not start with a leading separator.
- We check if --no-http is set and add the HTTP / websockets tests to the skipped list prior to looking
- at the expectation file. Fixed the _test_requires_lock function to use the same code path to determine
- what is worth have an HTTP lock as --no-http to avoid badness.
-
- * Scripts/webkitpy/layout_tests/port/test.py: Added 2 new tests to our mock filesystem to validate that
- we do skip properly HTTP / websocket tests inside platform/.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- Added tests that we properly skip all the tests.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- Added checks for the command line arguments.
-
-2011-07-13 Jon Honeycutt <jhoneycutt@apple.com>
-
- Focus and selection events are not fired when a <select>'s selection
- changes
- https://bugs.webkit.org/show_bug.cgi?id=64504
- <rdar://problem/9319881>
-
- Reviewed by Alice Liu.
-
- * DumpRenderTree/AccessibilityController.h:
- Added m_notificationsEventHook for addNotificationListener().
- m_allEventsHook will now be used for setLogAccessibilityEvents().
-
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::AccessibilityController):
- Initialize m_notificationsEventHook.
- (AccessibilityController::~AccessibilityController):
- Turn off logging of all accessibility events. If
- m_notificationsEventHook is non-null, unhook it.
- (logEventProc):
- Add handling of EVENT_OBJECT_SELECTION.
- (AccessibilityController::setLogAccessibilityEvents):
- If the state of logging is not changing, return early. If we're turning
- off logging, unhook m_allEventsHook, and zero it out. Otherwise, add a
- hook for all events.
- (AccessibilityController::addNotificationListener):
- Use m_notificationsEventHook rather than m_allEventsHook.
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Refactor TestExpectationModel to use TestExpectationLine as data item.
- https://bugs.webkit.org/show_bug.cgi?id=64635
-
- This is a bit largish in scope. Does the following things:
-
- 1) Adds "path" member to TestExpectationLine to hold normalized path to test, computed at parsing,
- and changes code that used Port.normalize_test_name to rely on TestExpectationLine.path. As a result, TestExpectationModel no longer
- needs to have any port knowledge.
-
- 2) Adds "create_passing_expectation" class method to TestExpectationLine to generate a pristine passing expectation out of a test name,
- and changes TestExpectations._process_tests_without_expectations to use it, thus eliminating the need for a special API entry point.
- Now all expectations are added to the model in the same way!
-
- 3) Changes TestExpectationModel's main test index to store a tuple consisting of line number and TestExpectationLine instance.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Refactored code.
-
-2011-07-15 Adam Roben <aroben@apple.com>
-
- Teach TestFailures how to detect interrupted build steps
-
- Fixes <http://webkit.org/b/64619> TestFailures page thinks all tests passed in
- http://build.webkit.org/builders/SnowLeopard%20Intel%20Release%20(WebKit2%20Tests)/builds/13401
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): If the build step has a result code of 4, the
- build step was interrupted. Treat it as an error (by returning a failureCount of -1).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added a test for the above.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bumped the cache version to evict old, buggy
- cache data that was afflicted by the above bug.
-
-2011-07-15 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests crashes on Apple's Windows port when trying to launch Apache
- https://bugs.webkit.org/show_bug.cgi?id=64533
-
- Reviewed by Adam Roben.
-
- Blind removal of Chromium-specific code (now that Chromium does not use this file).
-
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
-
-2011-07-15 Adam Roben <aroben@apple.com>
-
- Make TestFailures's list of possibly-flaky tests not so tall
-
- Fixes <http://webkit.org/b/64618> TestFailures page's list of flaky tests takes up way too
- much room
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- Removed a no-longer-used .flakiness-example-separator selector.
-
- (#failure-history > li):
- (#possibly-flaky-tests > li):
- (#failure-history > li, #possibly-flaky-tests > li):
- Use a lot less padding for the possibly-flaky tests.
-
-2011-07-15 Tony Chang <tony@chromium.org>
-
- [chromium] land linux selection color layout test
- https://bugs.webkit.org/show_bug.cgi?id=64631
-
- Reviewed by Ojan Vafai.
-
- I had removed this code in r76620 because I thought it wasn't used.
- Turns out there was a layout test in the chromium tree that never
- got migrated that used it. Re-add the code and land the layout
- test (I will remove it from the chromium tree soon).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::forceRedSelectionColors):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Revert http://trac.webkit.org/changeset/91091, since Python 2.5
- does not support enumerate() start argument.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Reverted.
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Clean up test_expectations.py after refactorings.
- https://bugs.webkit.org/show_bug.cgi?id=64620
-
- * Renamed all variables holding TestExpectationLine to expectation_line to avoid confusion with
- its sub-part, the actual expectation.
- * Renamed all references to options to modifier to eliminate dual terminology.
- * Made a bunch of parser constants and changed all callsites to use them.
- * Various other minor clean-ups.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Cleaned up stuff.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Changed callsites after cleanup.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Ditto.
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Move expectation parsing code to TestExpectationParser.
- https://bugs.webkit.org/show_bug.cgi?id=64605
-
- This is a somewhat mechanical move, with two interesting bits:
-
- 1) TestExpectationParser.parse methods renamed to tokenize, to better
- reflect what they do
-
- 2) TestExpectationLine now carries all of its info, from tokens to parsed data,
- and even the list of tests that it matches (a line may refer to more than one test).
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Moved parsing-related TestExpectaions methods
- to TestExpectationParser, added more members to TestExpectationLine to carry parsed info, renamed existing parse methods
- to "tokenize", changed callsites to use new code.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Changed unit tests to reflect renames.
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Switch to use Python enumerate function to enumerate line numbers.
- https://bugs.webkit.org/show_bug.cgi?id=64602
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Changed to use enumerate.
-
-2011-07-15 Martin Robinson <mrobinson@igalia.com>
-
- Build fixes for WebKit2. Ensure that all generated sources are
- on nodist primaries, that they are on forward declared variables
- so that BUILT_SOURCES is calculated properly and that zlib is
- included during linking (for WOFF support).
-
- * WebKitTestRunner/GNUmakefile.am:
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Store error and warning information on TestExpectationLine.
- https://bugs.webkit.org/show_bug.cgi?id=64565
-
- Keeping errors and warnings on the TestExpectationLine instance allows us to decouple storing errors
- from various parsing and validation mechanisms and have more flexibility in reporting and understanding the origin of the errors.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Added TestExpectationLine.warnings list to keep track of non-fatal errors,
- converted the code to add errors and warnings to corresponding TestExpectationLine instances, removed the code that used to store
- this info on TestExpectations. In the process, had to refactor ModifierMatcher a bit to take in a TestExpdectationLine instance.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Changed ModifierMatcher callsite.
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Plumb the use of TestExpectationLine deeper, clean up.
- https://bugs.webkit.org/show_bug.cgi?id=64559
-
- Instead of carrying various bits of TestExpectationLine, plumb it down to its consumers,
- also cleaning up names and remove an unused TestExpectations._get_options_list member.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
-
-2011-07-15 Dimitri Glazkov <dglazkov@chromium.org>
-
- Remove the notion of TestExpectationLine.valid, start storing parsing errors in expectations themselves.
- https://bugs.webkit.org/show_bug.cgi?id=64554
-
- This moves us toward the world where errors are collected on the expectations, which allows us to
- easily enumerate them, keep association with the point of origin, and freely pass TestExpectationLine instances around.
-
- Also eliminate the validator idea, since validation is a context-dependent concept and has to be decoupled from initial
- parsing.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Removed TestExpectation.valid, validator,
- changed TestExpectationParser to collect errors in TestExpectationLine, refactored surrounding code.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Changed tests to accommodate changes.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Ditto.
-
-2011-07-15 Adam Roben <aroben@apple.com>
-
- Rename TestFailureBugForm to FailingTestsBugForm
-
- The new name will match better with a forthcoming FlakyTestBugForm class.
-
- Fixes <http://webkit.org/b/64598> TestFailures page's TestFailureBugForm class has a bad
- name
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm.js: Renamed from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailureBugForm.js.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FailingTestsBugForm_unittests.js: Renamed from Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailureBugForm_unittests.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Updated for renames.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Ditto, and
- reordered <script>s to put files which others depend on for parsing first.
-
-2011-07-15 Adam Barth <abarth@webkit.org>
-
- NRWT stores the Chromium revision number in full_results.json
- https://bugs.webkit.org/show_bug.cgi?id=64586
-
- I have no earthly idea how to test this change.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-07-14 Ojan Vafai <ojan@chromium.org>
-
- fix remaining style issues in the static-dashboards directory
- https://bugs.webkit.org/show_bug.cgi?id=64561
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-07-14 Yuta Kitamura <yutak@chromium.org>
-
- WebSocket: Introduce pywebsocket-0.6b2
- https://bugs.webkit.org/show_bug.cgi?id=64534
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-07-14 Dimitri Glazkov <dglazkov@chromium.org>
-
- Introduce TestExpectationsModel, split out of TestExpectations.
- https://bugs.webkit.org/show_bug.cgi?id=64531
-
- This is a simple split-and-make-work refactoring, a first step among many.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Moved all model-related members
- out of TestExpectations and into TestExpectationsModel.
-
-2011-07-14 Eric Seidel <eric@webkit.org>
-
- Move webkitpy off of loose mocks
- https://bugs.webkit.org/show_bug.cgi?id=64508
-
- Unreviewed. Fixing a test which fails under test-webkitpy --all (but not in a normal run).
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-07-14 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should have a "rebaseline" button
- https://bugs.webkit.org/show_bug.cgi?id=64446
-
- Reviewed by Ojan Vafai.
-
- This patch adds a basic Rebaseline button that copies the baselines
- displayed in the results pane into the appropriate directory in your
- working copy.
-
- There are two main limitations:
-
- 1) There is no UI for actually committing the baselines.
-
- 2) The baselines are not optimized for redundancy (meaning you can have
- identical baselines in both chromium-mac and chromium-win).
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- - Turns out we need to create the directory for the baseline if it doesn't exist yet.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js:
- - Add an programatic API to call the server.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- - Add the rebaseline button itself.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- - Change the CSS so that the Rebaseline and Close buttons can
- appear in the normal order in the DOM.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- - Bind the event and translate the parameters.
- - Hide/show the rebaseline button, as appropriate.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- - Add some helpful utility functions for manipulating failure types.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
-
-2011-07-14 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION: webkit-patch roll-chromium-deps is broken
- https://bugs.webkit.org/show_bug.cgi?id=64568
-
- Reviewed by Dirk Pranke
-
- Use _filesystem.join.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/checkout/checkout_unittests.py:
-
-2011-07-14 Noam Rosenthal <noam.rosenthal@nokia.com>
-
- Adding myself to the reviewers list; No review needed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-14 Adam Roben <aroben@apple.com>
-
- Don't use Element.prototype.classList in TestFailures
-
- Safari 5 doesn't support it.
-
- Fixes <http://webkit.org/b/64550> Can't expand flaky tests on TestFailures page in Safari 5
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (Element.prototype.hasStyleClass):
- (Element.prototype.addStyleClass):
- (Element.prototype.removeStyleClass):
- (Element.prototype.toggleStyleClass):
- Added these helper functions which simulate classList functionality.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities_unittests.js:
- Added. Tests for the above.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForPossiblyFlakyTests): Changed to use
- toggleStyleClass/hasStyleClass instead of classList.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Added Utilities_unittests.js, and reordered the tested files to be in
- roughly dependency order (i.e., the lowest-level files are imported
- and tested first).
-
-2011-07-14 Eric Seidel <eric@webkit.org>
-
- NRWT doesn't store the svn revision in full_results.json on chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=64492
-
- Unreviewed. Just fixing my test-webkitpy regression.
-
- Fix the unit tests. Unfortunately scm does not use a filesystem
- object so we can't control the result of detect_scm_system.
- When detect_scm_system would fail, we would log, which would
- cause all passing_run integration tests to fail.
-
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-07-14 Eric Seidel <eric@webkit.org>
-
- NRWT doesn't store the svn revision in full_results.json on chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=64492
-
- Reviewed by Ojan Vafai.
-
- This should fix the bug. Unfortunately this code is currently
- impossible to test since it's impossible to mock detect_scm_system at the
- moment. I started re-writing scm.detection.py to be mockable, but decided that
- was best left for another day.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-07-14 Ojan Vafai <ojan@chromium.org>
-
- fix coding style of dashboard_base.js
- https://bugs.webkit.org/show_bug.cgi?id=64545
-
- Reviewed by Adam Roben.
-
- The code changes to the files other than dashboard_base.js
- are just fallout from renaming globals in dashboard_base.js.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2011-07-14 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix WebKit2 GTK build after r90953.
-
- * WebKitTestRunner/GNUmakefile.am:
-
-2011-07-14 Adam Barth <abarth@webkit.org>
-
- garden-o-matic results pane should be more discoverable
- https://bugs.webkit.org/show_bug.cgi?id=64513
-
- Reviewed by Eric Seidel.
-
- This patch causes us to trigger the results pane on mouse clicks
- instead of mousein. Also, handle the case of no results details more
- elegantly.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- - Change the binding to "click".
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- - Handle the "no results URLs" case explicitly instead of never
- calling the callback.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- - Show a message when there are no result details to show.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-14 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should badge TIMEOUT failures
- https://bugs.webkit.org/show_bug.cgi?id=64435
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- (.regression .what a[draggable].TIMEOUT::before):
- - Add TIMEOUT.
-
-2011-07-14 Adam Barth <abarth@webkit.org>
-
- Fix Python exception blocking the commit-queue.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-07-13 Eric Seidel <eric@webkit.org>
-
- Move webkitpy off of loose mocks
- https://bugs.webkit.org/show_bug.cgi?id=64508
-
- Reviewed by Adam Barth.
-
- Using Mock has caused us more pain than help.
- It's possible that there was a cleaner way to use it
- (maybe Mock(class) instead of inheriting from it?).
- But for now, I've removed all uses of Mock from mocktool.py.
-
- I also moved run_command into the only 3 files which call it
- instead of leaving the deprecated method in executive.py.
-
- I changed various direct calls to os.* to use filesystem instead.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py:
- * Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py:
-
-2011-07-13 Eric Seidel <eric@webkit.org>
-
- NRWT doesn't store the svn revision in full_results.json on chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=64492
-
- Reviewed by Adam Barth.
-
- Add a warning message in the revision='' case to help us diagnose
- what's going wrong on the bot.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2011-07-13 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests: print baseline search path as part of config output
- https://bugs.webkit.org/show_bug.cgi?id=64499
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- gardening server should have an API for parsing changelogs
- https://bugs.webkit.org/show_bug.cgi?id=64495
-
- Reviewed by Eric Seidel.
-
- This patch exposes much of the same information from CommitInfo in a
- dictionary form, which is easier to send over-the-wire as JSON to the
- frontend.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-07-13 Eric Seidel <eric@webkit.org>
-
- REGRESSION: GitTestWithMock.test_create_patch fails
- https://bugs.webkit.org/show_bug.cgi?id=62945
-
- Reviewed by Daniel Bates.
-
- I was not able to reproduce the exact failure seen in the bug,
- however this test was failing on my machine for other reasons.
-
- I went through and did an audit of our run_command usage, it's
- entirely in scm classes after this change. (Not surprising given
- that scm.py was the second file ever created in webkit.py.)
-
- The real bug I'm fixing here is that we were setting executive.should_log
- when the value had changed to executive._should_log. Now we set the right one
- and the test works again.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-07-13 Ilya Sherman <isherman@chromium.org>
-
- Fix WTF header guard style check
- https://bugs.webkit.org/show_bug.cgi?id=64488
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Verify that we don't *always* suggest "WTF_" as a prefix
-
-2011-07-13 Ojan Vafai <ojan@chromium.org>
-
- bring flakiness_dashboard.html closer to webkit style
- https://bugs.webkit.org/show_bug.cgi?id=64477
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- Fix bad variable name that would hit only when running the tests.
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- No code/logic changes. All moving/removing brackets, indents and moving things
- to one line.
-
-2011-07-13 Xan Lopez <xlopez@igalia.com>
-
- [GTK] Fix distcheck
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/GNUmakefile.am: mark built sources as nodist.
-
-2011-07-13 Joseph Pecoraro <joepeck@webkit.org>
-
- Unreviewed fix. Add a "\n" to a printf that somehow got lost.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpApplicationCacheQuota):
-
-2011-07-13 Joseph Pecoraro <joepeck@webkit.org>
-
- ApplicationCache Quota Output is Flakey
- https://bugs.webkit.org/show_bug.cgi?id=64410
-
- Reviewed by Alexey Proskuryakov.
-
- Unify the delegate logging for reaching application cache
- quotas. Truncate the space needed to the nearest 10000
- for less flakey test output. This also better supports
- printing NSUInteger on non-64 bit systems by casting to
- an unsigned long.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:exceededApplicationCacheOriginQuotaForSecurityOrigin:totalSpaceNeeded:]):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dumpApplicationCacheQuota):
-
-2011-07-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Remove unused TestExpectations._overrides.
- https://bugs.webkit.org/show_bug.cgi?id=64470
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Removed unused member.
-
-2011-07-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Introduce TestExpectationSerializer.list_to_string.
- https://bugs.webkit.org/show_bug.cgi?id=64462
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Added list_to_string and change the relevant callsite to use it.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Added tests for it.
-
-2011-07-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Consolidate expectations parsing code.
- https://bugs.webkit.org/show_bug.cgi?id=64460
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Folded TestExpectationParser._split_expectation_string into TestExpectationParser.parse.
-
-2011-07-12 Brent Fulgham <bfulgham@webkit.org>
-
- Standardize WinCairo conditionalized code under PLATFORM macro.
- https://bugs.webkit.org/show_bug.cgi?id=64377
-
- Reviewed by Maciej Stachowiak.
-
- Update compile-time conditions that had previously used #ifdef
- of WIN_CAIRO to consistently use PLATFORM(WIN_CAIRO).
-
- * DumpRenderTree/config.h: Switch to PLATFORM(WIN_CAIRO)
- * DumpRenderTree/win/DumpRenderTreeCairo.vsprops: Remove redundant
- define of WIN_CAIRO=1.
- * DumpRenderTree/win/DumpRenderTreeDebugCairoCFLite.vsprops: Add
- WinCairo.vsprops to set (to match Release build).
-
-2011-07-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Eliminate TestExpectationsFile.
- https://bugs.webkit.org/show_bug.cgi?id=64458
-
- Turns out, we can just use a Python list.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Folded TestExpectationsFile.append into TestExpectationParser.parse_list,
- removed TestExpectationsFile.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Moved tests to better reflect new names, removed iterator test,
- since there's no more custom iterator machinery.
-
-2011-07-13 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, added my other email addresses.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- Folks should only be listed once.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-13 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, adding myself as Reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- Fix flickering bug introduced by my previous patch. I forgot to change
- the name of the class everywhere.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
-
-2011-07-12 Philippe Normand <pnormand@igalia.com>
-
- [GTK] media/media-blocked-by-willsendrequest.html fails
- https://bugs.webkit.org/show_bug.cgi?id=63699
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback): Abort the request if explicitely asked
- by the LayoutTestController's willSendRequestReturnsNull() function.
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- Remove "Dismiss" button from garden-o-matic butterbar
- https://bugs.webkit.org/show_bug.cgi?id=64443
-
- Reviewed by Dimitri Glazkov.
-
- We don't have any persistent butter bar messages yet, so the dismiss
- button is premature (and fairly heavy, visually).
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- Refine garden-o-matic status pane
- https://bugs.webkit.org/show_bug.cgi?id=64442
-
- Reviewed by Dimitri Glazkov.
-
- This patch makes two improvements to the status pane:
-
- 1) We only query the server for failure types that we're expecting.
- This dramatically reduces the number of HTTP requests, making
- loading the status pane faster.
-
- 2) The status pane now displays which test and which builder it is
- showing results for.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
-
-2011-07-13 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should show test results
- https://bugs.webkit.org/show_bug.cgi?id=64440
-
- Reviewed by Adam Roben.
-
- This patch introduces the results detail pane, which appears at the
- bottom of the window and contains test results from the bots.
- Currently, you can activate the pane by mousing over one of the builder
- names associated with a failing test.
-
- This is just a first iteration of the UI. There's no way to resize or
- zoom in on elements of the details pane, and images likely aren't sized
- correctly, but it's a place to start.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js:
- - Add constants for our data attributes so we don't typo them!
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- - Add DOM structure for the details pane.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- - Bind events for showing and hiding the details pane.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- - Reduce the number of result types that we query for to avoid
- overfilling the details pane. We'll probably need another
- solution here in the long-term. For example, we could use tabs
- to pack more results into the pane.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html:
- - Now that we're using the config package during testing, we need
- to include it in the testing HTML.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
- - Change the DOM structure of the results detail to make it fit
- nicely in the details pane (rather than flowing freely in the
- body, as it did before).
-
-2011-07-13 Adam Roben <aroben@apple.com>
-
- Make TestFailures show every time a possibly-flaky test failed, but hide it by default
-
- It's useful to be able to see every time a flaky test failed to see whether it failed the
- same way every time. But doing so takes a lot of space, so the list of failures is now
- collapsed by default and can be revealed using a disclosure triangle.
-
- Fixes <http://webkit.org/b/64455> TestFailures page doesn't show as much information for
- flaky tests as I would like, even though the page is already so long
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js:
- (FlakyLayoutTestDetector.prototype.allFailures): Replaced flakinessExamples with this
- function. Now returns all failures for the given test.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector_unittests.js:
- Added. This just contains some simple tests of the FlakyLayoutTestDetector class. We'll add
- more over time.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype.start): Updated the documentation comment to reflect
- that we no longer return passing builds for possibly-flaky tests.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (.existing-bugs-list, .suspect-revisions-list, .flakiness-examples-list): Make the list of
- flakiness examples small, too, since it can get quite long.
-
- (.disclosure-triangle):
- (.expanded > .disclosure-triangle):
- Simple styles for the disclosure triangle.
-
- (.flakiness-examples-list): Collapse the list by default.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Pass the total number of builds analyzed to
- _domForPossiblyFlakyTests.
- (ViewController.prototype._domForPossiblyFlakyTests): Put a disclosure triangle to the left
- of each test name, and the number of failures to the right. When the disclosure triangle is
- clicked for the first time, we build up the list of failures and expand the element. After
- that we just collapse or expand the element on subsequent clicks.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Pulled in new tests.
-
-2011-07-13 Adam Roben <aroben@apple.com>
-
- Teach TestFailures to understand NRWT's output when it exits early due to too many failures
-
- Fixes <http://webkit.org/b/64456> TestFailures page reports way too many failures when NRWT
- exits early
-
- Reviewed by Dimitri Glazkov.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Relaxed the "Exiting early" test not to require
- it to be at the beginning of the line, since NRWT prints a bunch of junk earlier in the
- line. Tightened up the regex that's used to parse the number of failing tests to require the
- leading number to be followed by whitespace so that we won't parse the "2011" in
- "2011-07-13" as a number of failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added a test for the above.
-
-2011-07-12 Dimitri Glazkov <dglazkov@chromium.org>
-
- Extract model-like TestExpectationLine and TestExpectationFile from TestExpectations.
- https://bugs.webkit.org/show_bug.cgi?id=64386
-
- This is the first step in converting TestExpectations to a real model.
- * TestExpectationsLine represents a line in the test_expectations.txt file, and
- * TestExpectationsFile represents the file, which is a collection of lines.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
-
-2011-07-13 Xan Lopez <xlopez@igalia.com>
-
- [GTK] Do not grab focus too early in DRT.
-
- Reviewed by Gustavo Noronha.
-
- It causes a layout to happen and a progress signal to be emitted
- since r90900, but at this point we don't have a
- LayoutTestController object and we'll eventually crash. Since we
- already grab focus at the beginning of runTest() this is
- redundant, so get rid of it to fix the crash.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main): remove call to grab_focus
-
-2011-07-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r90893 and r90894.
- http://trac.webkit.org/changeset/90893
- http://trac.webkit.org/changeset/90894
- https://bugs.webkit.org/show_bug.cgi?id=64441
-
- NRWT still doesn't work on qt-mac platform (Requested by Ossy
- on #webkit).
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-13 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] NRWT should pick up the right httpd config file
- https://bugs.webkit.org/show_bug.cgi?id=64086
-
- * Scripts/run-webkit-tests: Enable NRWT on qt-mac platform after r90810.
- (useNewRunWebKitTests):
-
-2011-07-12 Mark Rowe <mrowe@apple.com>
-
- Fix the 32-bit build.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:exceededApplicationCacheOriginQuotaForSecurityOrigin:totalSpaceNeeded:]):
- Cast the NSUInteger value to unsigned long to match the format specifier.
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- Improve garden-o-matic UI when the bots fail to report revision numbers
- https://bugs.webkit.org/show_bug.cgi?id=64427
-
- Reviewed by Dimitri Glazkov.
-
- At least Win (dbg)(2) seems to fail to report the SVN revision number
- in full_results.json. This patch makes garden-o-matic more robust to
- missing revision numbers.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- Adjust garden-o-matic layout to use fewer lines
- https://bugs.webkit.org/show_bug.cgi?id=64422
-
- Reviewed by Ojan Vafai.
-
- This patch effectively merges the test name line with the list of
- builders on which the test fails. Each test failure now occupies two
- lines instead of three.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should label tests failures of new tests as such
- https://bugs.webkit.org/show_bug.cgi?id=64421
-
- Reviewed by Ojan Vafai.
-
- Also, we shouldn't dim failures of new tests, even if we've only seen
- them once because they're likely to be real problems that need
- attention.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/checkout_unittests.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should display how many times we've seen a failure
- https://bugs.webkit.org/show_bug.cgi?id=64417
-
- Reviewed by Ojan Vafai.
-
- This patch adds some UI to display how many times we've seen a given
- failure, which can be helpful for determining whether that failure is a
- real failure or a flaky test.
-
- When a failure has only been seen once (i.e., only a single run on a
- single bot), we set the opacity of to 50% to avoid distracting the
- gardener.
-
- This patch also refactors the failure walker to have a simpler API
- internally by moving from an object-oriented paradigm to a functional
- paradigm.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-12 Chris Rogers <crogers@google.com>
-
- Enable Web Audio for chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=64409
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- Tweak some UI in garden-o-matic now that the tree actually has a
- failure and I can see what this all looks like.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-12 Joseph Pecoraro <joepeck@webkit.org>
-
- Unreviewed. Skipping a few tests which fail due to differing output
- Unit tests shouldn't be hitting the disk anyway. It's possible Config should move off of Port and onto Tool/Host directly.
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-07-12 Adam Roben <aroben@apple.com>
-
- Teach TestFailures to recognize when run-webkit-tests gets killed by buildbot
-
- Fixes <http://webkit.org/b/64358> TestFailures page thinks all tests passed in
- http://build.webkit.org/builders/Windows%207%20Release%20(Tests)/builds/14672
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): If run-webkit-tests exited with a non-zero
- exit status but we didn't find any failure counts, assume that there was some error that
- caused run-webkit-tests to die early (like being killed by buildbot due to a timeout).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added a new test that shows that we get a failingTestCount of -1 when run-webkit-tests dies
- early.
- (runGetNumberOfFailingTestsTest): Moved most code here from the only pre-existing test in this
- file.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bump the cache number so old cached data that was
- tainted by the bug fixed in this patch will be evicted.
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- cr-linux-ews complains about tests that aren't actually failing
- https://bugs.webkit.org/show_bug.cgi?id=64367
-
- The underlying problem here is that full_results.json doesn't have
- enough information to determine whether a given test result was
- expected because whether an actual result is expected depends on
- whether full_results.json was generated duing a test run that included
- pixel tests.
-
- The right long-term solution is to make full_results.json a complete
- description of what happened durning a test run. In this patch
- however, to stop the spam, this patch makes the jsonresultsparser
- ignore pixel failures.
-
- (I'm landing this patch unreviewed in order to stop the bots from
- spamming. I'll happily address any review comments in a follow-up
- patch.)
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
-
-2011-07-12 Adam Barth <abarth@webkit.org>
-
- Re-work garden-o-matic UI to begin to look like the mocks
- https://bugs.webkit.org/show_bug.cgi?id=64334
-
- Reviewed by Dimitri Glazkov.
-
- This patch changes how we display failures to be more like the mock the
- dglazkov made. We now can display the same information much more
- compactly.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.css: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-11 Adam Roben <aroben@apple.com>
-
- Extract TestFailures's bug-filing code into two new classes
-
- Fixes <http://webkit.org/b/64300> TestFailures page's new-bug-filing code is a mess!
-
- Reviewed by Darin Adler and Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot.js:
- (Buildbot.prototype.resultsDirectoryURL): Changed to return a URI-encoded URL. Otherwise the
- URL isn't valid (and it's harder to mock this function).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot_unittests.js:
- Added. Just tests the above change (for now).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added a license header, enclosed everything in a closure to avoid polluting the global
- namespace, changed the test name to actually describe the passing condition, and replaced
- uses of equals() with equal(). (The latter is the actual name of the function, and matches
- deepEqual, etc.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm.js: Added.
- (NewBugForm): This class knows how to construct a <form> used for filing new bugs in
- Bugzilla based on some parameters.
- (NewBugForm.prototype.domElement): Creates and returns the <form> element. Code came from
- ViewController.prototype._domForNewAndExistingBugs.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NewBugForm_unittests.js:
- Added. Tests the above code.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailureBugForm.js: Added.
- (TestFailureBugForm): This class knows how to construct a <form> element used for filing new
- bugs specifically about test failures. Code came from
- ViewController.prototype._domForNewAndExistingBugs.
- (TestFailureBugForm.prototype.domElement): Slightly customizes the <form> element returned
- by NewBugForm.
- (TestFailureBugForm.prototype._computeOperatingSystem):
- (TestFailureBugForm.prototype._computePlatform):
- (TestFailureBugForm.prototype._createBugTitle):
- (TestFailureBugForm.prototype._failingResultsHTMLURL):
- (TestFailureBugForm.prototype._failingRevision):
- (TestFailureBugForm.prototype._passingRevision):
- (TestFailureBugForm.prototype._regressionRangeString):
- Code came from ViewController.prototype._domForNewAndExistingBugs. I broke it out into
- separate functions to break up the rat's nest a bit.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailureBugForm_unittests.js:
- Added. Tests the above code.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewAndExistingBugs): Moved code from here to
- TestFailureBugForm/NewBugForm, and changed this code to use a TestFailureBugForm.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- NewBugForm/TestFailureBugForm.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Added new tests and required files.
-
-2011-07-12 Adam Roben <aroben@apple.com>
-
- Test that no intermediate WTF::Strings are created when concatenating with string literals
-
- Test for <http://webkit.org/b/63330> Concatenating string literals and WTF::Strings using
- operator+ is suboptimal
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp: Added.
- (TestWebKitAPI::TEST): Test that a bunch of different string concatenation expressions don't
- create any intermediate WTF::Strings while they're being evaluated.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Added new file.
-
-2011-07-12 Eric Seidel <eric@webkit.org>
-
- [Qt] NRWT should pick up the right httpd config file
- https://bugs.webkit.org/show_bug.cgi?id=64086
-
- Reviewed by Adam Barth.
-
- This is more fall-out from the Port class inappropriately encapsulating
- both platform and port knowledge. We need to split out some of this
- platform knowledge into a separate class which can be better shared
- between ports.
-
- The fix was to move all the _path_to_apache_config_file logic down
- into the WebKitPort baseclass so that all of the ports can find the
- right apache config file, regardless of what platform they may be running on.
-
- I did not move this down into base.Port (even though I considered it).
- Chromium duplicates some of this logic, but since they have separate
- subclasses for each port-OS combination (e.g. ChromiumMac, ChromiumWin)
- they wouldn't notice the change. Eventually we'll move this logic
- out of Port entirely, and then it will be shared by all ports.
-
- I also cleaned up the http-config logic for ORWT while I was there,
- although since we're killing that code, I'm happy to revert that part
- of the change if changing it is viewed as needlessly risky.
-
- During this cleanup, I noticed that no ports use the "default" httpd.conf
- which is left over from Mac OS X Tiger (and old linux distros) which used
- Apache 1.3. I've removed httpd.conf (and associated support in ORWT) since
- we no longer support any ports which use this httpd.conf.
-
- * Scripts/webkitperl/httpd.pm:
- (getHTTPDConfigPathForTestDirectory):
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
-
-2011-07-11 Hironori Bono <hbono@chromium.org>
-
- Reviewed by Adam Roben.
-
- Implement layoutTestController.setTextDirection for WebKit2 and Windows.
- https://bugs.webkit.org/show_bug.cgi?id=61931
-
- This change implements layoutTextController.setTextDirection for WebKit2
- and Windows so we can run a layout test added by r87770 on them. Each
- implementation adds a wrapper function for Editor::setBaseWritingDirection()
- so LayoutTestController can call it.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setTextDirection): Implemented the binding function
- for layoutTestController.setTextDirection (Windows).
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Added a binding function for layoutTestController.setTextDirection (WebKit2).
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: ditto.
- (WTR::LayoutTestController::setTextDirection):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: ditto.
-
-2011-07-11 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] ImageDiff: Make sure gEcoreEvas is destroyed at the right time.
- https://bugs.webkit.org/show_bug.cgi?id=64293
-
- Reviewed by Kent Tamura.
-
- gEcoreEvas was being destroyed after shutdownEfl() was called, so the
- call to ecore_evas_free() failed.
-
- We now shut it down manually before shutdownEfl() is called.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (main): Destroy gEcoreEvas before shutting down the EFL.
-
-2011-07-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Make Chromium Mac and Linux tests bot core builders
- https://bugs.webkit.org/show_bug.cgi?id=63196
-
- Reviewed by Adam Barth.
-
- Added Chromium Mac and Linux Release Tests bots core builders.
-
- Also rearranged the order of bots so that test bots show up right next to
- respective builders.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-07-11 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Add code related to font management.
- https://bugs.webkit.org/show_bug.cgi?id=63989
-
- Reviewed by Kent Tamura.
-
- The added files are responsible for managing fontconfig and adding the
- fonts required by some layout tests to fontconfig's path.
-
- * DumpRenderTree/efl/FontManagement.cpp: Added.
- (getFontDirectories):
- (getFontFiles):
- (addFontDirectories):
- (addFontFiles):
- (addFontsToEnvironment):
- * DumpRenderTree/efl/FontManagement.h: Added.
-
-2011-07-08 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: linting fixes
- https://bugs.webkit.org/show_bug.cgi?id=64225
-
- Reviewed by Eric Siedel.
-
- Miscellaneous linting fixes. The most notable change is that
- we add public attributes for user, executive, filesystem, and
- options on the Port object, so we don't have to refer to the
- "protected" versions all over the place".
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/controllers/message_broker.py:
- * Scripts/webkitpy/layout_tests/controllers/message_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-11 Ryosuke Niwa <rniwa@webkit.org>
-
- webkit-patch roll-chromium-deps no longer works
- https://bugs.webkit.org/show_bug.cgi?id=64324
-
- Reviewed by James Robinson.
-
- Lower the minimum commit message length to 10.
-
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2011-07-11 Alice Boxhall <aboxhall@chromium.org>
-
- Convert json_results_generator.py to output version 4 JSON.
- https://bugs.webkit.org/show_bug.cgi?id=60869
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-07-11 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [NRWT] Pixel tests do not work
- https://bugs.webkit.org/show_bug.cgi?id=64091
-
- Reviewed by Eric Seidel.
-
- Fix pixel test runs for GTK+ new-run-webkit-tests by exposing the
- path to the ImageDiff binary.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: Implement _path_to_image_diff.
-
-2011-07-11 Dirk Pranke <dpranke@chromium.org>
-
- Fix hang on win32 in a multiprocessing test that shouldn't have been running.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-07-11 Adam Roben <aroben@apple.com>
-
- Don't count leaks as test failures on TestFailures's front page
-
- As a bonus, this patch adds our first unit test.
-
- Fixes <http://webkit.org/b/64303> REGRESSION (r90489): TestFailures page says far more tests
- are failing on the Leaks bot than actually are
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Exclude lines containing "leak" when summing
- failure counts.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder_unittests.js:
- Added. Contains a simple test to show that leaks aren't counted as test failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/run-unittests.html:
- Added. This is the test harness.
-
-2011-06-14 Mike Stegeman <mrstegeman@gmail.com>
-
- [GTK] Add API to allow setting local storage database path
- https://bugs.webkit.org/show_bug.cgi?id=62091
-
- Reviewed by Martin Robinson and Gustavo Noronha.
-
- Expose the path of the localStorage databases through a setting
- to allow HTML5 localStorage to be persistent. New setting is:
- html5-local-storage-database-path
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2011-07-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to rebaseline tests
- https://bugs.webkit.org/show_bug.cgi?id=64186
-
- Reviewed by Eric Seidel.
-
- This patch contains a simple HTTP server binding for the
- rebaseline-test command. The frontend will appear in another patch.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-07-11 Adam Barth <abarth@webkit.org>
-
- Add some basic UI for showing regression ranges
- https://bugs.webkit.org/show_bug.cgi?id=64243
-
- Reviewed by Eric Seidel.
-
- This UI is all temporary. It exists mostly just to have some buttons
- to click to exercise the code.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to determine which revisions caused a given failure
- https://bugs.webkit.org/show_bug.cgi?id=64189
-
- Reviewed by Adam Roben.
-
- Walking the failure history looking for failures turns out to be
- slightly tricky because the network requests are asynchronous.
- Currently we do all the fetches serially and our cache is unbounded.
- We'll probably optimize both those parameters eventually.
-
- This patch also generalizes some functionality in the unit testing
- framework to make testing this sort of code easier.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
-
-2011-07-11 Adam Barth <abarth@webkit.org>
-
- Add a webkit-patch command for rebaselining an individual test
- https://bugs.webkit.org/show_bug.cgi?id=64246
-
- Reviewed by Eric Seidel.
-
- This patch introduces a command that's able to rebaseline a single
- test. Currently, the command works only with the build.chromium.org
- buildbots, but extending it to work with the build.webkit.org bots
- shouldn't be that hard.
-
- A complete rebaseling tool should also include an "optimize baselines"
- command (which moves/deletes baselines in order to reduce the number of
- expected results files), but that will come in a future patch.
-
- Really BuilderToPort should be merged into builders.py, but I'm going
- to save that for a future patch as well. (We need to stop shaving yaks
- at some point.)
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-07-11 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should be able to roll out patches
- https://bugs.webkit.org/show_bug.cgi?id=64185
-
- Reviewed by Eric Seidel.
-
- This gardening server API is simply a binding to the rollout machinery
- already present in webkit-patch.
-
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Added.
-
-2011-07-11 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][Mac] Unreviewed fix after r90746.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests): Really disable NRWT for qt-mac platform.
-
-2011-07-11 Adam Roben <aroben@apple.com>
-
- Teach TestFailures that ORWT's results.html file might be missing due to all tests passing
-
- There are three reasons why we might fail to fetch ORWT's results.html:
- - All tests passed, so no results.html was generated
- - Some error during the test run caused results.html not to be generated (e.g., ORWT
- timed out)
- - Some network error occurred when fetching results.html
-
- We were failing to account for the first possibility in some cases. For test runs before
- r89610, we first check build.webkit.org/json to determine how many tests failed and whether
- ORWT exited early due to too many failures; if all tests passed then we don't fetch
- results.html at all. r89610 changed ORWT to put information in results.html about exiting
- early due to too many failures, so we no longer needed to check build.webkit.org/json to get
- that information, and in r89619 I changed TestFailures to do just that. But I forgot that we
- still needed to check build.webkit.org/json to find out if all tests passed!
-
- Now, for test runs after r89610, we check results.html first, and then check
- build.webkit.org/json if we fail to fetch results.html. This lets us distinguish between all
- tests passing and the error cases.
-
- Fixes <http://webkit.org/b/64280> TestFailures page can't pinpoint that r90699 caused 13
- tests to fail on Windows 7 Release (WebKit2 Tests)
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bumped the cache version so that old, buggy
- cached data will get evicted. We were marking builds where all tests passed as errors!
- (LayoutTestResultsLoader.prototype._fetchAndParseORWTResults): Added success/error callback
- parameters to the fetchAndParseResultsHTML helper function, and added a similar
- fetchNumberOfFailingTests function that fetches data from build.webkit.org/json (code came
- from later in the function). For test runs before r89610, we first check
- build.webkit.org/json then check results.html. For builds after r89610, we first check
- results.html and then check build.webkit.org/json if we couldn't fetch results.html.
-
-2011-07-11 Csaba Osztrogonác <ossy@webkit.org>
-
- new-run-webkit-tests does not support qt-arm or qt-4.8 results
- https://bugs.webkit.org/show_bug.cgi?id=64071
-
- [Qt] NRWT should pick up the right httpd config file
- https://bugs.webkit.org/show_bug.cgi?id=64086
-
- Reviewed by Zoltán Herczeg.
-
- * Scripts/run-webkit-tests: Disable NRWT for qt-mac, qt-arm and qt-4.8 platforms until fix.
- (useNewRunWebKitTests):
-
-2011-07-11 Kenichi Ishibashi <bashi@chromium.org>
-
- Add TestNetscapePlugIn/Tests/FormValue.cpp to DRT build files
- https://bugs.webkit.org/show_bug.cgi?id=64248
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/DumpRenderTree.gypi: Added FormValue.cpp.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Ditto.
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: Ditto.
- * GNUmakefile.am: Ditto.
-
-2011-07-10 Kenichi Ishibashi <bashi@chromium.org>
-
- Let plugins participate in form submission
- https://bugs.webkit.org/show_bug.cgi?id=13061
-
- Adds NPPVformValue support to the testing plugin.
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added FormValue.cpp
- * DumpRenderTree/TestNetScapePlugIn/Tests/FormValue.cpp: Added.
- (FormValue::FormValue): Ditto.
- (FormValue::NPP_GetValue): Ditto.
-
-2011-07-11 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Tony Chang.
-
- Complete functions in filesystem.py
- https://bugs.webkit.org/show_bug.cgi?id=63528
-
- - missing text file functions added
- - functions sorted
- - removed 'append' optional parameters (were unused)
- - adapted filesystem_mock in the same way
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
-
-2011-07-10 Adam Barth <abarth@webkit.org>
-
- Clean up style in fallback path calculation
- https://bugs.webkit.org/show_bug.cgi?id=64239
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-07-10 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] Implement the rest of WTR::PlatformWebView
- https://bugs.webkit.org/show_bug.cgi?id=63630
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
-
-2011-07-10 Mark Rowe <mrowe@apple.com>
-
- Teach build-webkit how to find the latest WebKitSystemInterface binary.
-
- * Scripts/build-webkit:
-
-2011-07-09 Adam Roben <aroben@apple.com>
-
- Teach TestFailures to abbreviate the examples of test flakiness
-
- These lists can get quite long, and it's not really helpful in most cases to have soooooo
- many examples of flakiness.
-
- Fixes <http://webkit.org/b/64203> Lists of flaky revisions on TestFailures page can get so
- long they're hard to navigate
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js:
- (FlakyLayoutTestDetector.prototype.flakinessExamples): If we have more than a certain number
- of examples, replace the middle items with a separator.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (.flakiness-example-separator): Added styles for the separator.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForPossiblyFlakyTests): Use a vertical ellipsis to represent
- the separator.
-
-2011-07-09 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: stack traces from worker-side exceptions aren't very useful inside test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=64218
-
- Reviewed by Eric Seidel.
-
- Exceptions aren't picklable and can't be sent across the
- manager/worker message queue without losing information. NRWT
- handles this by turning the stack trace into a set of strings,
- and logging the strings when we receive an exception from the
- worker. However, when you are running tests and something
- crashes on the worker side, test-webkitpy prints the
- manager-side stack trace, which is just confusing and useless.
-
- This patch changes the logic so that exceptions are passed
- through as-is when the worker and manager are in the same
- process (the --worker-model=inline option). This increases the
- code paths slightly but makes crashes much more useful.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/controllers/message_broker.py:
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-07-09 Darin Fisher <darin@chromium.org>
-
- Eliminate bad dependency on gfx::Point.
- https://bugs.webkit.org/show_bug.cgi?id=64228
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (initMouseEvent):
-
-2011-07-08 Ojan Vafai <ojan@chromium.org>
-
- pull static dashboard files into the appengine server from the chromium repository
- https://bugs.webkit.org/show_bug.cgi?id=64208
-
- Reviewed by Dirk Pranke.
-
- These files belong in the WebKit repo since they are tied primarily to the webkit tests.
- They have some extra bits to support chromium's gtests, but that seems fine.
- Mainly, this will allow other WebKit hackers to hack on the dashboards.
-
- As a nice side-effect, we can now push the dashboard files when we do appengine pushes
- instead of the weird thing we used to do of pulling them from the Chromium repository
- and storing them in the appengine datastore. This allows for cleaning up a lot of code
- and will likely make the dashboards load a bit faster.
-
- The new JS files don't fully match WebKit style, but I'd like to clean that up in a
- followup patch if possible to maintain my sanity with this patch.
-
- * TestResultServer/app.yaml:
- * TestResultServer/handlers/dashboardhandler.py: Removed.
- * TestResultServer/handlers/menu.py:
- * TestResultServer/main.py:
- * TestResultServer/model/dashboardfile.py: Removed.
- * TestResultServer/static-dashboards/LICENSE.dygraph.txt: Added.
- * TestResultServer/static-dashboards/README.dygraph.txt: Added.
- * TestResultServer/static-dashboards/README.webtreemap.txt: Added.
- * TestResultServer/static-dashboards/aggregate_results.html: Added.
- * TestResultServer/static-dashboards/builders.js: Added.
- * TestResultServer/static-dashboards/dashboard_base.js: Added.
- * TestResultServer/static-dashboards/dygraph-combined.js: Added.
- * TestResultServer/static-dashboards/flakiness_dashboard.html: Added.
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.js: Added.
- * TestResultServer/static-dashboards/timeline_explorer.html: Added.
- * TestResultServer/static-dashboards/treemap.html: Added.
- * TestResultServer/static-dashboards/webtreemap.css: Added.
- * TestResultServer/static-dashboards/webtreemap.js: Added.
- * TestResultServer/stylesheets/dashboardfile.css: Removed.
- * TestResultServer/stylesheets/menu.css:
- * TestResultServer/templates/dashboardfilelist.html: Removed.
- * TestResultServer/templates/menu.html:
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Make TestFailures's list of flaky tests look more like the list of non-flaky tests
-
- Fixes <http://webkit.org/b/64204> TestFailures page's flaky tests list is ugly!
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (#failure-history, #possibly-flaky-tests): Expanded this rule to apply to the list of flaky
- tests.
- (#failure-history > li, #possibly-flaky-tests > li): Ditto, but moved the 50px left padding
- from here...
- (#failure-history > li): ...to here.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForPossiblyFlakyTests): Give the list an id attribute for
- styling purposes.
-
-2011-07-08 Jeffrey Pfau <jpfau@apple.com>
-
- Unreviewed, add myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-08 Adam Barth <abarth@webkit.org>
-
- TestResultsServer should keep old test results
- https://bugs.webkit.org/show_bug.cgi?id=64199
-
- Reviewed by Ojan Vafai.
-
- Having historical data will help us do failure archeology.
-
- * TestResultServer/handlers/testfilehandler.py:
- * TestResultServer/model/testfile.py:
- * TestResultServer/templates/showfilelist.jsonp: Added.
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Remove commit-log-editor's dependency on Module::Load::Conditional
-
- This module isn't available in Perl 5.8.8 (the version used on Leopard).
-
- Fixes <http://webkit.org/b/64198> REGRESSION (r90583):
- webkitpy.common.checkout.checkout_unittest failing on Leopard
-
- Reviewed by Daniel Bates.
-
- * Scripts/commit-log-editor: Use the new loadTermReadKey() function instead of
- Module::Load::Conditional::can_load.
- (loadTermReadKey): Added. Tries to load Term::ReadKey and returns true if it's successful.
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Make checkout_unittest more robust against files moving around
-
- Fixes <http://webkit.org/b/64197> checkout_unittest contains ugly, fragile code to find the
- Scripts directory
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CommitMessageForThisCommitTest.test_commit_message_for_this_commit): Instantiate a real SCM
- object and use it to get the path to the Scripts directory, rather than hard-coding the
- relative path from this file to Scripts.
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Make TestFailures remember that run-webkit-tests timed out, even across reloads
-
- Fixes <http://webkit.org/b/64193> TestFailures page incorrectly thinks all tests passed in
- http://build.webkit.org/builders/Windows%207%20Release%20(Tests)/builds/14589 after a reload
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Store an "error" attribute in the cached data.
- When true, it indicates that there was an error retrieving the results for this build and
- that the errorCallback should be called.
-
-2011-07-08 Adam Barth <abarth@webkit.org>
-
- Teach garden-o-matic how to display test results
- https://bugs.webkit.org/show_bug.cgi?id=64141
-
- Reviewed by Ojan Vafai.
-
- This patch includes basic infrastructure for probing build.chromium.org
- for test results. We only handle text and image tests, not anything
- complicated like reftests. Also, we're using the revision/build
- independent results store on the server, so we're avoiding that
- complication for now.
-
- It's slightly hacky that we need to probe the server to see what kinds
- of results exist. A better solution would be to add CORS support to
- the server or to use the local server to help.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js:
-
-2011-07-08 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION(90419) NRWT's httpd locking is broken for --child-processes=1
- https://bugs.webkit.org/show_bug.cgi?id=64092
-
- Reviewed by Tony Chang.
-
- The code was incorrectly creating empty shards in the
- shard_in_two case.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Teach buildbot to figure out how many webkitpy/webkitperl tests failed
-
- Fixes <http://webkit.org/b/64192> It's hard to tell how many test-webkitpy/test-webkitperl
- tests failed when looking at build.webkit.org
-
- Reviewed by Eric Seidel.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (TestWithFailureCount): New class that represents a test build step which has an associated
- failure count. Eventually we should move more of our test classes to deriving from this.
- (TestWithFailureCount.countFailures): Method for subclasses to override to say how many
- failures occurred.
-
- (TestWithFailureCount.commandComplete):
- (TestWithFailureCount.evaluateCommand):
- (TestWithFailureCount.getText):
- (TestWithFailureCount.getText2):
- These were all based on RunGtkAPITests.
-
- (RunPythonTests): Changed to inherit from TestWithFailureCount.
- (RunPythonTests.countFailures): Parses the test-webkitpy output looking for the count of
- failures.
- (RunPerlTests): Changed to inherit from TestWithFailureCount.
- (RunPerlTests.countFailures): Parses the test-webkitperl output looking for the count of
- failures.
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Ensure $CHANGE_LOG_EMAIL_ADDRESS is set when testing webkitpy's commit-log-editor integration
-
- Fixes <http://webkit.org/b/64180> REGRESSION (r90564): test-webkitpy failing on multiple
- bots due to commit-log-editor errors
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CommitMessageForThisCommitTest.test_commit_message_for_this_commit): Set
- $CHANGE_LOG_EMAIL_ADDRESS to the patch author's email address. This ensures that
- commit-log-editor can find a value for the committer's email, and that the committer and
- author email addresses match, which will prevent commit-log-editor from inserting a "Patch
- by" line in the commit message.
-
-2011-07-08 Andreas Kling <kling@webkit.org>
-
- [Qt][WK2] Views should expose QActions for basic navigation.
- https://bugs.webkit.org/show_bug.cgi?id=64174
-
- Reviewed by Benjamin Poulain.
-
- Bring the toolbar in Qt's MiniBrowser back to life.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::navigationAction):
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Teach TestFailures how to find test names in commit-log-editor-style commit messages
-
- TestFailures was relying on Trac turning the list of modified files in our commit messages
- into an HTML list. But Trac only does this when the list of modified files is indented.
- commit-log-editor doesn't indent the file list, so the list wasn't being turned into an HTML
- list, which was confusing TestFailures.
-
- TestFailures now does much simpler parsing of the commit message (i.e., just a substring
- search) without relying at all on its structure.
-
- Fixes <http://webkit.org/b/64173> TestFailures page fails to blame r90608 for breaking
- fast/dom/HTMLProgressElement/progress-element-markup.html on Windows
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- (Trac.prototype.getCommitDataForRevisionRange): Instead of trying to parse the commit
- message, just return its text.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForRegressionRange): Instead of searching for test names in
- each commit's list of modified files, just search for test names anywhere in the commit's
- message.
-
-2011-07-08 Adam Barth <abarth@webkit.org>
-
- sheriffbot is too spammy in IRC
- https://bugs.webkit.org/show_bug.cgi?id=64153
-
- Reviewed by Eric Seidel.
-
- Reporting failures in IRC worked well when the tree was greener than it
- is today. Nowadays, this feature mostly just results in spam about
- false positives. If we reach a greener state, we can bring this code
- back.
-
- (Another possibility is to restrict this feature to builder bots,
- rather than including testers, as we did before this patch.)
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2011-07-08 Adam Roben <aroben@apple.com>
-
- Ensure commit-log-editor adds a "Patch by" line when the author and committer are different
-
- Previously we were only adding a "Patch by" line when the ChangeLog contained a "Reviewed
- by" line. But some patches (like rollout patches) don't contain that line. Now we always add
- "Patch by" to the commit log regardless of the ChangeLog's contents.
-
- Fixes <http://webkit.org/b/64127> Committer for r90588 is commit-queue@webkit.org, but
- should have been abarth@webkit.org
-
- Reviewed by Anders Carlsson.
-
- * Scripts/commit-log-editor:
- (createCommitMessage): Try to put the "Patch by" line just above the "Reviewed by" line, as
- before. If there is no "Reviewed by" line, try to put it just above the first modified file.
- If all else fails, put it at the end of the commit message.
- (patchAuthorshipString): Added. Code came from createCommitMessage.
-
-2011-07-08 Herczeg Zoltan <zherczeg@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-07 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, remove old files from the tree and update paths to new ones.
-
- * wx/build: Removed.
- * wx/build/build_utils.py: Removed.
- * wx/build/settings.py: Removed.
- * wx/build/waf_extensions.py: Removed.
- * wx/build/wxpresets.py: Removed.
- * wx/packaging/build-mac-installer.py:
-
-2011-07-07 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, more fixes for install name issues.
-
- * wx/packaging/build-mac-installer.py:
-
-2011-07-07 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy fails on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=64137
-
- Reviewed by Eric Seidel.
-
- test-webkitpy doesn't play nicely with the multiprocessing
- module on win32. An earlier change actually reenabled the tests
- on win32 by mistake.
-
- This patch also fixes a few cases where path names will trip
- things up on win32 (e.g., by testing unix paths on windows).
- We do not lose any real coverage here with those fixes.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-07-07 Leandro Pereira <leandro@profusion.mobi>
-
- [ImageDiff] Calculate/print difference right after reading baseline image.
- https://bugs.webkit.org/show_bug.cgi?id=64117
-
- Reviewed by Kent Tamura.
-
- Otherwise, ImageDiff will block on fgets() until the universe ends or you ^C
- it. Whichever happens first.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (main):
-
-2011-07-07 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- [EFL] DRT: Leak cairo_t to make the pixel tests stop crashing
- https://bugs.webkit.org/show_bug.cgi?id=64107
-
- Reviewed by Kent Tamura.
-
- The pointer is later managed by BitmapContext, but it was being
- de-refed and deleted earlier by our RefPtr, causing crashes in all
- pixel tests.
-
- We now call leakRef() to make sure it is not removed when our
- createBitmapContextFromWebView goes out of context.
-
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView):
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Update TestFailures's title and header immediately upon navigation
-
- Fixes <http://webkit.org/b/64125> TestFailures page seems slow to react on link clicks
-
- Reviewed by Daniel Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype.loaded): Create and store an h1 element for displaying the page's
- title.
- (ViewController.prototype._displayBuilder): Set the page's title and clear out any old
- content immediately instead of waiting for the first set of results for the history
- analyzer. As we receive new results from the analyzer we'll just clear out the main content
- area and replace it with the new info.
- (ViewController.prototype._displayTesters): Set the page's title and clear out any old
- content immediately instead of waiting for the list of testers from the buildbot. Sprinkled
- in a little use of our removeAllChildren helper, too.
- (ViewController.prototype._setTitle): Added. Set's the page's title and the header text.
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Make Checkout use SCM's Executive instead of conjuring up its own
-
- This will improve integration with the rest of webkitpy, particularly when invoked via
- webkit-patch.
-
- Fixes <http://webkit.org/b/64115> REGRESSION (r90564): webkitpy's Checkout class uses
- Executive inappropriately
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.commit_message_for_this_commit): Use SCM.run instead of creating an Executive for
- our own use. SCM might have some super-special Executive that it uses under the covers, and
- we want to use it, too!
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CommitMessageForThisCommitTest.test_commit_message_for_this_commit): Mock the SCM.run
- method to call through to Executive.run_command.
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Make Term/ReadKey.pm an optional dependency of commit-log-editor
-
- When Term/ReadKey.pm isn't present, the --regenerate-log switch will be non-functional.
-
- Fixes <http://webkit.org/b/64113> REGRESSION (r90564):
- webkitpy.common.checkout.checkout_unittest failing on GTK bots due to missing
- Term/ReadKey.pm module
-
- Reviewed by Xan Lopez.
-
- * Scripts/commit-log-editor: Use Module::Load::Conditional::can_load to only load
- Term/ReadKey.pm if it's present. If it isn't present, ignore the --regenerate-log switch so
- that existing commit messages will be preserved. (Users can manually remove existing commit
- messages using git-reset.)
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Keep testing that commit messages containing Unicode are handled properly by webkitpy
-
- Fixes <http://webkit.org/b/64109> REGRESSION (r90571): test-webkitpy no longer tests that we
- correctly handle Unicode in commit messages
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py: Put some Unicode characters in
- places in the ChangeLog that will end up being included in the commit message.
-
-2011-07-07 Andreas Kling <kling@webkit.org>
-
- [Qt][WK2] Remove Symbian code.
- https://bugs.webkit.org/show_bug.cgi?id=64101
-
- Reviewed by Benjamin Poulain.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::screenshot):
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
-
-2011-07-07 Andreas Kling <kling@webkit.org>
-
- [Qt][WK2] Don't support ridiculous matrix of QT_NO_FEATURE combinations.
- https://bugs.webkit.org/show_bug.cgi?id=64099
-
- Reviewed by Benjamin Poulain.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::openFile):
- (BrowserWindow::screenshot):
- (BrowserWindow::loadURLListFromFile):
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Completely ignore too-many-failures builds in TestFailures in most circumstances
-
- Because a semi-arbitrary subset of tests are run in a too-many-failures build, we can't
- really use them to perform regression analysis. The only time we want to pay attention to
- too-many-failures builds is when we're trying to explain when the current bout of
- too-many-failures started.
-
- Fixes <http://webkit.org/b/64106> TestFailures page sometimes claims a test started failing
- in a build that didn't even run it (because it exited early due to too many failues)
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype._incorporateBuildHistory): Removed old, broken
- too-many-failures handling that would cause us to blame builds that didn't even run a given
- test for breaking it. Instead, skip over all too-many-failures builds unless the most recent
- build was itself a too-many-failures build.
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Teach webkitpy's Checkout class to use commit-log-editor to create commit messages
-
- Fixes <http://webkit.org/b/26755> webkit-patch's commit messages are less readable than
- commit-log-editor's
-
- Reviewed by David Kilzer.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.commit_message_for_this_commit): Run commit-log-editor, passing it the paths of
- the modified ChangeLogs, to generate the commit message, rather than trying to generate one
- ourselves.
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py: Updated the expected commit message
- to match commit-log-editor's format.
- (CommitMessageForThisCommitTest.setUp): Write the ChangeLogs into Tools and LayoutTests
- directories so we can see how the various entries get labeled in the commit message.
- (CommitMessageForThisCommitTest.test_commit_message_for_this_commit): Create a mock SCM
- instance that knows how to find commit-log-editor and pass it to our Checkout instance.
- Don't bother capturing output, since there shouldn't be any.
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Add a --print-log option to commit-log-editor
-
- When specified, commit-log-editor takes a set of ChangeLog paths on the command line,
- generates a commit message from those ChangeLogs, prints it to stdout, and exits.
-
- Prep work for fixing <http://webkit.org/b/26755> webkit-patch's commit messages are less
- readable than commit-log-editor's
-
- Reviewed by David Kilzer.
-
- * Scripts/commit-log-editor: Changed to use Getopt::Long to parse options. Added --print-log
- option, which calls through to createCommitMessage, prints the result, and exits.
- (printUsageAndExit): Renamed from "usage" for clarity. Beefed up the usage statement to
- explain commit-log-editor's 2.5 (normal, --print-log, and --help) modes of operation.
-
-2011-07-07 Adam Roben <aroben@apple.com>
-
- Extract commit-log-editor's commit-message-generation code into a separate function
-
- As a bonus, we now skip a bunch of work in the case where we are generating a commit message
- for staged git changes.
-
- Prep work for fixing <http://webkit.org/b/26755> webkit-patch's commit messages are less
- readable than commit-log-editor's
-
- Reviewed by David Kilzer.
-
- * Scripts/commit-log-editor: Moved the default definition of $endl up toward the top of the
- file so that it will be defined even if we aren't operating on an existing log message.
- Moved a bunch of top-level code to generate the commit message from here...
- (createCommitMessage): ...to here.
-
-2011-07-07 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Open links in a new window when clicking with the middle button in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=63988
-
- Reviewed by Martin Robinson.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowConstructed):
- (decidePolicyForNavigationAction): Ignore the action if a link is
- clicked with the middle buttonm and open the link in a new window.
- (browserWindowPolicyClientInit):
-
-2011-07-07 Adam Barth <abarth@webkit.org>
-
- Remove style_references.py
- https://bugs.webkit.org/show_bug.cgi?id=64070
-
- Reviewed by Eric Seidel.
-
- We never really adopted the _references design, and this file is a bit
- of an orphan at this point.
-
- * Scripts/check-webkit-style:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/checkers/python.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- * Scripts/webkitpy/style/main_unittest.py:
- * Scripts/webkitpy/style_references.py: Removed.
-
-2011-07-07 Eric Seidel <eric@webkit.org>
-
- Fix WebKit2 expected results search paths for Mac and Qt under new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=64056
-
- Unreviewed.
-
- I had written this unittest prior to landing my change, but
- had named it qt_unitest.py, so it wasn't running (nor was
- it added to my git repo).
-
- Once I fixe the name of the unittest file, it was very easy
- to fix the error in webkit.py (which already had a FIXME).
-
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-07-07 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Add more debug logging about which test expectations we're using.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Remove unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=64065
-
- Reviewed by Eric Seidel.
-
- No one should be using this file any more. This patch removes it from
- the face of the earth. This patch also removes two NRWT-specific
- command line options that were implemented using
- unexpected_results.json.
-
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
-
-2011-07-07 Adam Barth <abarth@webkit.org>
-
- REGRESSION(90520): chromium GPU tests produce output in the LayoutTests directory
- https://bugs.webkit.org/show_bug.cgi?id=64067
-
- Reviewed by Eric Seidel.
-
- The author of r90520 forgot to change the chromium_gpu.py implemenation
- of this method as well.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- Fix WebKit2 expected results search paths for Mac and Qt under new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=64056
-
- Reviewed by Adam Barth.
-
- This fixes the MacPort's version of baseline_search_path to include
- wk2 fallback like WebKitPort's does. This also re-works the QtPort
- to set self._name (as other ports do) so that WebKitPort's default
- implementations will understand Qt operating system flavors correctly
- (including when running wk2 tests).
-
- In trying to test this, I realized that nearly all of our port-tests
- use the default FileSystem(), User() and Executive() objects, which
- is really bad, because they expose details of your system in the unittest results!
-
- Once I fixed many of the Port() calls to pass MockFileSystem(), then
- MacPort.test_tests_for_other_platforms started failing, and I had to
- teach MockFileSystem.glob how to handle directories to make it work again.
-
- I removed the useless PortTestCase.test_baseline_search_path and replaced
- it with more useful test_baseline_search_path tests in MacPortTest and QtPortTest.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/to_be_moved/deduplicate_tests.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Wean rebaseline-server off unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=64063
-
- Reviewed by Eric Seidel.
-
- In the process of changing this code to use full_results.json, I
- noticed that the code was broken (because it wasn't tested). This
- patch also adds test coverage for the broken code.
-
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Wean resultsjsonparser off unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=64061
-
- Reviewed by Eric Seidel.
-
- We're about to delete unexpected_results.json, so we need to remove all
- the users.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Cleanup result_summary.py
- https://bugs.webkit.org/show_bug.cgi?id=64057
-
- Reviewed by Eric Seidel.
-
- This class had a bunch of out-of-date docstrings that no longer make
- any sense.
-
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Tweak the ChangeLog for DEPS rolls to say "Unreviewed" so that the
- patches can be landed by the commit-queue.
-
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Normalize callers of logging.getLogger to use __name__
- https://bugs.webkit.org/show_bug.cgi?id=64054
-
- Reviewed by Eric Seidel.
-
- Most callers were already using __name__. This patch makes everyone
- consistent.
-
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/file_lock.py:
- * Scripts/webkitpy/common/system/user.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- * Scripts/webkitpy/layout_tests/views/printing.py:
- * Scripts/webkitpy/python24/versioning.py:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- * Scripts/webkitpy/style/patchreader.py:
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Move model classes out of layout_package and into models
- https://bugs.webkit.org/show_bug.cgi?id=64053
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_input.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/models: Added.
- * Scripts/webkitpy/layout_tests/models/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/models/result_summary.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/result_summary.py.
- * Scripts/webkitpy/layout_tests/models/test_expectations.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py.
- * Scripts/webkitpy/layout_tests/models/test_failures.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures.py.
- * Scripts/webkitpy/layout_tests/models/test_failures_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py.
- * Scripts/webkitpy/layout_tests/models/test_input.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_input.py.
- * Scripts/webkitpy/layout_tests/models/test_results.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_results.py.
- * Scripts/webkitpy/layout_tests/models/test_results_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py.
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/views/printing.py:
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- * Scripts/webkitpy/style_references.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
-
-2011-07-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix typo preventing http startup on windows
- https://bugs.webkit.org/show_bug.cgi?id=64050
-
- Reviewed by Eric Siedel.
-
- NRWT checks whether it needs to start the servers by looking
- for "/http/" in the test names. After r90520, the leading slash
- is not present, so the check isn't quite right.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
-
-2011-07-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove --use-apache from the command line
- https://bugs.webkit.org/show_bug.cgi?id=63358
-
- Reviewed by Adam Barth.
-
- Re-land the fix in bug 63358 - the prior fix was flawed in that
- we were trying to start the http server during check_sys_deps()
- but not actually setting up the environment properly. This
- broken prior to this change, but exposed by it, since the patch
- changes the chromium port to call the base class's checks.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Move view-related code out of layout_package and into views
- https://bugs.webkit.org/show_bug.cgi?id=64051
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/printing.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/views: Added.
- * Scripts/webkitpy/layout_tests/views/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/views/metered_stream.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/metered_stream.py.
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/metered_stream_unittest.py.
- * Scripts/webkitpy/layout_tests/views/printing.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/printing.py.
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py.
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Add goofy comments to explain why we have these files.
-
- * Scripts/webkitpy/layout_tests/controllers/__init__.py:
- * Scripts/webkitpy/layout_tests/layout_package/__init__.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Move a bunch of classes out of layout_tests.layout_package and into layout_tests.controllers
- https://bugs.webkit.org/show_bug.cgi?id=64048
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/controllers: Added.
- * Scripts/webkitpy/layout_tests/controllers/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/controllers/manager.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/manager.py.
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py.
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py.
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py.
- * Scripts/webkitpy/layout_tests/controllers/message_broker.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/message_broker.py.
- * Scripts/webkitpy/layout_tests/controllers/message_broker_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py.
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py.
- * Scripts/webkitpy/layout_tests/controllers/worker.py: Copied from Tools/Scripts/webkitpy/layout_tests/layout_package/worker.py.
- * Scripts/webkitpy/layout_tests/layout_package/manager.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/worker.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Attempt to fix unittest on Leopard. Let's enumerate the keys in sorted
- order so the test results are predictable.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-07-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Siedel.
-
- nrwt: make the code be consistent about using test names instead of filenames or paths
-
- https://bugs.webkit.org/show_bug.cgi?id=63597
-
- It can be hard to figure out where in the code we're assuming
- test names are listed as unix-style relative filenames and where
- they are either absolute paths or relative paths following the
- host filesystem convention.
-
- This patch changes things so that everything outside of the
- Port object uses (and must assume) unix-style relative
- filenames (with one exception, which is specifying host-local
- filenames as a list of test arguments on the command line).
-
- This should make things clearer and more consistent, and also
- removes a lot of path conversion calls.
-
- The changes in this patch outside of port/base.py are largely
- cosmetic changes of "filename" to "test". We add a few routines
- to the base Port implementation to manipulate test names to
- split them, figure out if we're referring to a directory of
- tests, etc.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_input.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2011-07-06 Chris Guillory <ctguil@chromium.org>
-
- No review necessary.
-
- Adding myself to committers list in committers.py.
- https://bugs.webkit.org/show_bug.cgi?id=63478
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-06 Johnny Ding <jnd@chromium.org>
-
- https://bugs.webkit.org/show_bug.cgi?id=63857
- Implement createPopupMenu for Chromium DRT.
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPopupMenu):
- (WebViewHost::~WebViewHost):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-07-06 Mihai Parparita <mihaip@chromium.org>
-
- Unreviewed, rolling out r90503.
- http://trac.webkit.org/changeset/90503
- https://bugs.webkit.org/show_bug.cgi?id=63358
-
- Makes Chromium Windows canary bots hang.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Move buildbot URL in webkitpy to config.urls
- https://bugs.webkit.org/show_bug.cgi?id=64041
-
- Reviewed by Eric Seidel.
-
- This patch prepares for using the buildbot class to talk to the
- Chromium buildbots.
-
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/ensurebuildersaregreen.py:
-
-2011-07-06 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, add the correct path to the waf build settings.
-
- * wx/packaging/build-win-installer.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Add missing include.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Add roll-chromium-deps command to sheriff-bot
- https://bugs.webkit.org/show_bug.cgi?id=64037
-
- Reviewed by Eric Seidel.
-
- Lo, and the DEPS were rolled on command.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
- * Scripts/webkitpy/tool/commands/roll.py:
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- * Scripts/webkitpy/tool/steps/updatechromiumdeps.py:
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- Split Driver, DriverOutput and DriverInput out into a new driver.py file
- https://bugs.webkit.org/show_bug.cgi?id=64031
-
- Reviewed by Adam Barth.
-
- This ended up kinda large and I'm happy to break it up if desired.
-
- As part of cleaning up the Port module, I split Driver, DriverInput and DriverOutput
- out into its own driver.py file.
-
- I also cleaned up how we import Port objects, by making port/__init__.py
- expose Port, Driver, DriverInput, and DriverOutput. I removed exposure of
- some various test objects as they were causing circular dependencies.
- base.py is now an implementation detail of port. No longer is "base" referenced
- anywhere in the code.
-
- I also made Driver.__init__ non-virtual so that sub-classers could all share
- the data storage on Driver. This more closely matches how other subclasses
- work throughout our python code.
-
- Standard line-unwrapping and doc-string removal as I went through the code.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/driver.py: Added.
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
-
-2011-07-06 Adam Roben <aroben@apple.com>
-
- Clear TestFailures's getNumberOfFailingTests cache
-
- Now that we support NRWT, we need to clear out old zero values for the NRWT bots that might
- have been cached by old versions of TestFailures.
-
- Fixes <http://webkit.org/b/64029> TestFailures page still doesn't show NRWT bots if you've
- used it recently
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Added a .version property to the cache data
- that must match the current version. Otherwise we'll ignore the cached data.
-
-2011-06-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- nrwt: remove --use-apache from the command line
- https://bugs.webkit.org/show_bug.cgi?id=63358
-
- This change removes the --use-apache command line argument. It
- was initially put in when we were trying to get the cygwin
- apache instance to work with Chromium win, but that code has
- bitrotted and doesn't work at all now.
-
- Arguably we should remove all of the code to allow for a choice
- of web servers, but since we may still want to switch off of
- LigHTTPd at some point on Windows, I'll leave the rest in for
- now (or at least yank it in a different change.)
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-06 Dimitri Glazkov <dglazkov@chromium.org>
-
- garden-o-matic should use a favicon to indicate current state.
- https://bugs.webkit.org/show_bug.cgi?id=64027
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-green.png: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/favicon-red.png: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html: Added blurb about icons.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js: Added setting icon state.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Allowed the use of favicons.
-
-2011-07-06 Daniel Bates <dbates@rim.com>
-
- Fix webkitpy error after changeset 90483 <http://trac.webkit.org/changeset/90483>; Add missing
- parameter to _fetch_file_from_results lamdba function.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-07-06 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Generate the proper install_name for dylibs on Mac.
-
- * wx/packaging/build-mac-installer.py:
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- [GTK] Only set env. variables in start when strictly needed
- https://bugs.webkit.org/show_bug.cgi?id=64026
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: add a
- setup_environ_for_server method in GtkPort and set as many
- env. variables as possible there.
-
-2011-07-06 Adam Roben <aroben@apple.com>
-
- Teach TestFailures how to load, parse, and interpret NRWT test results
-
- Fixes <http://webkit.org/b/61877> TestFailures page doesn't show testers that use
- new-run-webkit-tests
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.failureDiagnosisTextAndURL): Added support for the new 'flaky' failure
- type. For now we don't account for image-only flakes (but TestFailures doesn't deal with
- pixel tests at all currently).
- (Builder.prototype.getNumberOfFailingTests): Relaxed the regex used for parsing the number
- of failing tests from the buildbot output. Make sure not to count "new passes" (a new
- category introduced by NRWT) as failures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Moved a bunch of code from here to
- _fetchAndParseORWTResults. This function now attempts to load NRWT results, then falls back
- to loading ORWT results.
- (LayoutTestResultsLoader.prototype._fetchAndParseNRWTResults): Added. Tries to load and
- parse the full_results.json file for the given build.
- (LayoutTestResultsLoader.prototype._fetchAndParseORWTResults): Added. Code came from start.
- Fixed a bug along the way where we were sometimes calling the error callback instead of the
- success callback when all tests passed.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js: Added.
- (NRWTResultsParser): Do-nothing constructor.
- (NRWTResultsParser.prototype.parse): Uses eval() (eww!) to get the test results out of the
- JS string, then iterates over all the tests in the results data and builds up a data
- structure matching what ORWTResultsParser returns.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (Array.prototype.contains):
- (String.prototype.contains):
- Added these simple helper functions.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- NRWTResultsParser.js.
-
-2011-07-06 Adam Roben <aroben@apple.com>
-
- Extract code to parse ORWT's results.html file into its own class
-
- Prep work for fixing <http://webkit.org/b/61877> TestFailures page doesn't show testers that
- use new-run-webkit-tests
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Moved a bunch of code from here...
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ORWTResultsParser.js: Added.
- (ORWTResultsParser):
- (ORWTResultsParser.prototype.parse):
- ...to here.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- ORWTResultsParser.js.
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fix a unittest from hitting the network. :)
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed. Fixing an exception in test-webkitpy, caused by bug 64006.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-07-06 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-
- Run an Xvfb instance to run the API tests on, like we do for the
- layout tests.
-
- Reviewed by Xan Lopez.
-
- * Scripts/run-gtk-tests:
-
-2011-07-06 Daniel Bates <dbates@webkit.org>
-
- Make SCM unit tests faster
- https://bugs.webkit.org/show_bug.cgi?id=63883
-
- Speeds up the SCM unit tests by a factor of 4. Currently, we create a
- mock SVN repo for each test_ method in SVNTest and GitTest and creating
- this repo is expensive.
-
- Instead, it is significantly faster to create the mock SVN repo once
- and then perform a filesystem copy of it for each test_ method.
-
- Note, Python 2.7's unittest module implements support for per class and
- per module setup and tear down methods which could be used to implement
- similar functionality. At the time of writing, test-webkitpy is designed
- to support Python 2.5. So, we can't take advantage of these Python 2.7
- features :(
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Remove unused parameter from _add_test in test_expectations.py
- https://bugs.webkit.org/show_bug.cgi?id=64008
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Use old-run-webkit-tests when --leaks is present
- https://bugs.webkit.org/show_bug.cgi?id=64012
-
- Reviewed by Adam Roben.
-
- We'll remove this branch once support of --leaks is added to
- new-run-webkit-tests.
-
- * Scripts/run-webkit-tests:
-
-2011-07-06 Benjamin Poulain <benjamin@webkit.org>
-
- [Qt] [WK2] Add touch mocking to Qt's MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=63995
-
- Reviewed by Andreas Kling.
-
- The mouse events are intercepted through QCoreApplication::notify(),
- and fake touch events are generated for mouse events when necessary.
-
- If touch events are received from the platform, we assume the current
- hardware has a touch screen and we stop generating fake events.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (isTouchEvent):
- (isMouseEvent):
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/MiniBrowserApplication.h:
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: use Popen correctly.
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- webkit-patch failure-reason does not understand NRWT results
- https://bugs.webkit.org/show_bug.cgi?id=64006
-
- Reviewed by Adam Barth.
-
- Adam Barth tells me failure-reason should be deleted soon,
- but aroben's fancy new TestFailures/ page doesn't work for
- NRWT yet, and I needed to know when
- third-party-cookie-relaxing started failing.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- [GTK] Add missing environment variables in NWRT
- https://bugs.webkit.org/show_bug.cgi?id=64004
-
- Reviewed by Gustavo Noronha Silva.
-
- Add missing environment variables needed by the GTK+ port.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py: ditto.
-
-2011-07-06 Adam Roben <aroben@apple.com>
-
- Make run-api-tests output intelligible on the bots
-
- run-api-tests's output on the bots was very hard to read for two reasons:
- 1) It was mixing its own output with gtest's
- 2) It was using ANSI escape sequences to print colored text, but the bots don't support
- that
-
- Now, the --verbose flag turns off almost all of run-api-tests's own output so that gtest's
- output will not be obscured. We still print "Timeout" messages even in verbose mode, since
- gtest doesn't have any native support for timeouts. Also, when our output is being
- redirected to a file, we don't print ANSI escape sequences.
-
- Fixes <http://webkit.org/b/63996> It's very hard to read run-api-tests output on the bots
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-api-tests: Don't use the :constants interface of Term::ANSIColor. We want to
- use the colored function instead.
- (runAllTestsInSuite): Don't print out suite names in verbose mode; gtest will give us enough
- context that they aren't needed.
- (runTest): Don't print out test names or pass/fail messages in verbose mode; gtest will do
- that for us. Also, use the new possiblyColored function instead of always coloring output.
- (possiblyColored): Added. When printing to a tty, returns the string with the appropriate
- ANSI color escape sequences added. Otherwise just returns the string unmodified.
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Gustavo Noronha.
-
- Launch Xvfb (mostly) the same way we were launching it in the
- bots, for maximum compatibility.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-07-06 Andreas Kling <kling@webkit.org>
-
- [Qt][WK2] Split Qt API into two different web views (touch and desktop)
- https://bugs.webkit.org/show_bug.cgi?id=63950
-
- Co-authored with Benjamin Poulain <benjamin@webkit.org>.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Port WTR/Qt to use QDesktopWebView and force a 800x600 viewport.
-
- The Qt MiniBrowser now defaults to QDesktopWebView but can be started
- in QTouchWebView mode by passing -touch on the command line.
-
- A lot of functionality has been removed and/or disabled from
- MiniBrowser until we reintroduce the necessary API's.
-
- * MiniBrowser/qt/BrowserView.cpp:
- (BrowserView::BrowserView):
- (BrowserView::~BrowserView):
- (BrowserView::load):
- (BrowserView::view):
- (BrowserView::touchWebView):
- (BrowserView::desktopWebView):
- * MiniBrowser/qt/BrowserView.h:
- * MiniBrowser/qt/BrowserWindow.cpp:
- (newPageFunction):
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::webView):
- (BrowserWindow::newWindow):
- (BrowserWindow::showUserAgentDialog):
- (BrowserWindow::updateUserAgentList):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- * MiniBrowser/qt/UrlLoader.cpp:
- (UrlLoader::UrlLoader):
- * MiniBrowser/qt/main.cpp:
- (main):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::wkView):
- (WTR::WebView::pageRef):
- (WTR::WebView::WebView):
- (WTR::PlatformWebView::page):
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- Unreviewed..
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
- - Fix the pass-thru of --gtk and --qt for old-run-webkit-tests,
- it was previously broken by the existence of isGtk/isQt checks which
- removed the --gtk/--qt args from @ARGV.
-
-2011-07-06 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests uses a 35s timeout for Mac and 6s for all other ports
- https://bugs.webkit.org/show_bug.cgi?id=63983
-
- Reviewed by Xan Lopez.
-
- All WebKit ports want to use a 35s timeout. Only chromium currently
- uses a 6s timeout. Eventually we'll move all WebKit ports to 6s too
- to further speed up new-run-webkit-tests runs, but that's going to be a while.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- Unreviewed.
-
- NWRT actually seems to work locally, so it should work in the bots
- as long as we take care of the TIMEOUT issue (which is being fixed
- as I write this). Let's give this another shot and fix whatever
- breaks.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-06 Xan Lopez <xlopez@igalia.com>
-
- Unreviewed.
-
- Disable NWRT on GTK. At the very least it needs an updated exected
- results file since NWRT is more sensitive to timeouts, not sure
- what the exact problem is.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- Fix global variable leak detected by noglobals.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
-
-2011-07-06 Adam Barth <abarth@webkit.org>
-
- garden-o-matic shouldn't show flaky tests by default
- https://bugs.webkit.org/show_bug.cgi?id=63979
-
- Reviewed by Ojan Vafai.
-
- If any of the actual test results are PASS, the test is flaky and we
- can ignore it (at least for now). If we get awesome at dealing with
- failing tests, we might want to tackle flaky tests by refering the user
- to the flakiness dashboard, which is way more awesome at dealing with
- flaky tests that this tool ever will be.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should list the failing tests
- https://bugs.webkit.org/show_bug.cgi?id=63978
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/config.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/ui_unittests.js: Added.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Re-enable NRWT on Leopard now that bug 63973 is fixed.
-
- Reviewed by Adam Barth.
-
- I also made the should-enable expression a black-list instead
- of a white-list since every bot on build.webkit.org is
- now using NRWT except windows and WebKit2 bots.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Perl string concat failure on Leopard (causes NRWT to fail)
- https://bugs.webkit.org/show_bug.cgi?id=63973
-
- Reviewed by Daniel Bates.
-
- Leopard's "xcodebuild -version" has a different format from Snow Leopard/Lion
- thus the version parsing logic in webkitdirs.pm seems to fail.
-
- Default to "3.0" instead of undef when we can't parse the version number.
- This should send us down the correct path for Leopard.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
-
-2011-07-05 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix after addition of Source/WebCore/xml/parser dir.
-
- * waf/build/settings.py:
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Disable NRWT for Leopard until https://bugs.webkit.org/show_bug.cgi?id=63973 can be fixed.
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Make run-webkit-tests pass --verbose to new-run-webkit-tests on qt/gtk bots.
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests:
- (runningOnBuildBot):
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- Add results_unittests.js to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=63971
-
- Reviewed by Eric Seidel.
-
- Adding these unit tests forced me to commit to an API for the results
- module. I'm not sure if this is the API we'll end up with, but it's
- something not entirely unreasonable.
-
- Also, I've changed results.js over to WebKit style, as discussed previously.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results_unittests.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html:
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Teach run-webkit-tests how to translate --qt and --gtk for new-run-webkit-tests.
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests:
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- Add first unit tests for garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=63969
-
- Reviewed by Eric Seidel.
-
- I've also reformated base.js to match WebKit style, as discussed in the
- previous bug.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base_unittests.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/run-unittests.html: Added.
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Move Qt, Gtk and Leopard to NRWT.
-
- We'll roll out any of these if we see problems.
-
- Reviewed by Adam Barth.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should understand which tests have unexpected failures
- https://bugs.webkit.org/show_bug.cgi?id=63965
-
- Reviewed by Eric Seidel.
-
- Currently, this code just logs the list of unexpected failures to the
- console. A future patch will do something useful with this
- information. A testing harness will also come in the next patch.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/base.js: Added.
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- garden-o-matic should know how to fetch test results from the (NRWT) bots
- https://bugs.webkit.org/show_bug.cgi?id=63959
-
- Reviewed by Eric Seidel.
-
- Currently, this code just fetches the results and expectations JSON
- blob for Linux from the server and logs it to the console.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/results.js: Added.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
-
-2011-07-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Python tests are failing on leopard
- https://bugs.webkit.org/show_bug.cgi?id=63842
-
- Fix the missing flush() call that appears to be needed by the
- logging package in python 2.5. Also fix the regressions
- introduced in the run_webkit_test tests when we switched from
- thread to processes (since processes aren't available on 2.5).
-
- Also fix a missing "from __future__ import with_statement' in
- testfilehandler (unreviewed).
-
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * TestResultServer/handlers/testfilehandler.py:
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- re-enabling new-run-webkit-tests on the Snow Leopard WebKit1 bots
- now that we believe the stray http-server issue to be solved.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- Turns out we need to support numerals too because that's what jQuery
- uses by default.
-
- * TestResultServer/handlers/testfilehandler.py:
-
-2011-07-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: allow for multiple http shards
- https://bugs.webkit.org/show_bug.cgi?id=63116
-
- Reviewed by Tony Chang.
-
- This modifies the sharding logic to support multiple http
- shards, but for now we clamp to one shard until we can test
- perf impact and flakiness impact.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
-
-2011-07-05 Dirk Pranke <dpranke@chromium.org>
-
- Re-land nrwt: make sharding tests needing locks less hard-coded
- https://bugs.webkit.org/show_bug.cgi?id=63112
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- TestResultServer should support callback parameter for JSON
- https://bugs.webkit.org/show_bug.cgi?id=63961
-
- Reviewed by Ojan Vafai.
-
- This makes using jQuery.ajax so much more pleasant.
-
- * TestResultServer/handlers/testfilehandler.py:
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- buildbot needs to understand whether NRWT exited early after having too many failures
- https://bugs.webkit.org/show_bug.cgi?id=63839
-
- Reviewed by Adam Barth.
-
- Fix-up the exited early messages printed by NRWT so that
- the buildbot can parse them as expected.
- It looks for lines using "if line.find('Exiting early') >= 0:"
-
- I also plumbed the "early exit" status through to results.json
- in the form of an "interrupted" bool. It was unclear to me
- if results.json already had enough information to compute this bool
- itself. It's possible Ojan could come up with a better fix.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py:
-
-2011-07-05 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests fails to start http server if one is already running
- https://bugs.webkit.org/show_bug.cgi?id=63956
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/kill-old-processes:
- - Removed ^M line endings and sorted the process names.
- - There are no functional changes to this file.
- (except that now that its using unix line endings it can be executed directly!)
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- - Change the name to 'httpd' to match old-run-webkit-test paths.
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- Add basic ajax support to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=63874
-
- Reviewed by Eric Seidel.
-
- This patch adds some basic infrastructure to garden-o-matic.
- Currently, the infrastructure is just used to make the "quit" command
- use Ajax, but in the future, this infrastructure will be used to do
- more sophistocated remote proceedure calls.
-
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/main.js: Added.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
-
-2011-07-05 Adam Barth <abarth@webkit.org>
-
- Add trivial garden-o-matic command (with server)
- https://bugs.webkit.org/show_bug.cgi?id=63872
-
- Reviewed by Eric Seidel.
-
- This patch adds a trivial "Hello, world" garden-o-matic command,
- complete with an HTTP server. This command re-uses a bunch of code
- from the existing rebaseline-server command. Over time, this command
- will grow to be a tool useful for gardening the WebKit tree.
-
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/abstractservercommand.py: Added.
- * Scripts/webkitpy/tool/commands/gardenomatic.py: Added.
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/data/gardeningserver/index.html: Added.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Added.
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
-
-2011-07-05 Adam Roben <aroben@apple.com>
-
- Make prepare-ChangeLog include modified Perl functions in its ChangeLog template
-
- This is a very simple first cut. Functions must start with a line that starts with "sub "
- and end with a line that starts with a closing brace. No leading whitespace is allowed.
- Package names aren't parsed at all.
-
- Fixes <http://webkit.org/b/21591> prepare-ChangeLog should know how to find functions in
- Perl files
-
- Reviewed by David Kilzer.
-
- * Scripts/prepare-ChangeLog: Removed redundant code that ignored certain files when
- searching for function line ranges. This is already done inside the get_function_line_ranges
- function.
- (get_function_line_ranges): Cleaned up coding style a little bit. Call
- get_function_line_ranges_for_perl for files with .pl and .pm extensions. For files with an
- unknown extension or no extension, read the shebang line to try to determine the script
- interpreter. Call get_function_line_ranges_for_perl if the interpreter seems to be Perl.
- (get_function_line_ranges_for_perl): Added. Does extremely basic parsing of the file to find
- lines starting with "sub " or "}".
-
-2011-07-05 Adam Roben <aroben@apple.com>
-
- Clean up run-api-tests output on Windows
-
- We were mixing run-api-tests output with gtest output, and the result was a mess.
-
- Fixes <http://webkit.org/b/63954> run-api-tests output is very confusing on Windows
-
- Reviewed by Dan Bates.
-
- * Scripts/run-api-tests:
- (runTest):
- (populateTests):
- Made Windows use the formerly-Mac-only codepaths which correctly suppress gtest output
- except in verbose mode. Most changes are due to indentation. Use of the arch utility is now
- the only Mac-specific thing in these functions. Some other platform-specific code was moved
- from here...
-
- (prepareEnvironmentForRunningTestTool):
- (testToolPath):
- ...to here.
-
-2011-07-04 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=16652
- Firefox and JavaScriptCore differ in Number.toString(integer)
-
- Added forwarding header.
-
- * DumpRenderTree/ForwardingHeaders/wtf/StdLibExtras.h: Added.
-
-2011-07-04 Anders Carlsson <andersca@apple.com>
-
- Try to fix Qt build.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp:
-
-2011-07-04 Anders Carlsson <andersca@apple.com>
-
- NP_RemoveProperty is not called back by Safari when delete npObject.prop is encountered in JavaScript
- https://bugs.webkit.org/show_bug.cgi?id=63915
- <rdar://problem/7124300>
-
- Reviewed by Sam Weinig.
-
- Extend the NPRuntimeRemoveProperty to handle delete object.property from JavaScript.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_IdentifierIsString):
- (PluginTest::NPN_UTF8FromIdentifier):
- (PluginTest::NPN_IntFromIdentifier):
- (PluginTest::NPN_RetainObject):
- (PluginTest::NPN_ReleaseObject):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest::Object::removeProperty):
- (PluginTest::Object::identifierIs):
- (PluginTest::Object::NP_RemoveProperty):
- (PluginTest::Object::npClass):
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp:
- (NPRuntimeRemoveProperty::TestObject::TestObject):
- (NPRuntimeRemoveProperty::TestObject::hasProperty):
- (NPRuntimeRemoveProperty::TestObject::getProperty):
- (NPRuntimeRemoveProperty::TestObject::removeProperty):
- (NPRuntimeRemoveProperty::PluginObject::PluginObject):
- (NPRuntimeRemoveProperty::PluginObject::~PluginObject):
- (NPRuntimeRemoveProperty::PluginObject::hasMethod):
- (NPRuntimeRemoveProperty::PluginObject::invoke):
- (NPRuntimeRemoveProperty::PluginObject::hasProperty):
- (NPRuntimeRemoveProperty::PluginObject::getProperty):
- (NPRuntimeRemoveProperty::NPP_GetValue):
-
-2011-07-04 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Kent Tamura.
-
- [EFL] Add LayoutTestControllerEfl.
- https://bugs.webkit.org/show_bug.cgi?id=61974
-
- Only the core features are implemented. Most functions are actually
- stubs and will be implemented as soon as its features are needed.
- Build system changes will be made as soon as DRT is completely
- upstreamed.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp: Added.
- (LayoutTestController::~LayoutTestController):
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::clearBackForwardList):
- (LayoutTestController::copyDecodedHostName):
- (LayoutTestController::copyEncodedHostName):
- (LayoutTestController::dispatchPendingLoadRequests):
- (LayoutTestController::display):
- (LayoutTestController::counterValueForElementById):
- (LayoutTestController::keepWebHistory):
- (LayoutTestController::computedStyleIncludingVisitedInfo):
- (LayoutTestController::nodesFromRect):
- (LayoutTestController::layerTreeAsText):
- (LayoutTestController::pageNumberForElementById):
- (LayoutTestController::numberOfPages):
- (LayoutTestController::pageProperty):
- (LayoutTestController::isPageBoxVisible):
- (LayoutTestController::pageSizeAndMarginsInPixels):
- (LayoutTestController::webHistoryItemCount):
- (LayoutTestController::workerThreadCount):
- (LayoutTestController::notifyDone):
- (LayoutTestController::pathToLocalResource):
- (LayoutTestController::queueLoad):
- (LayoutTestController::setAcceptsEditing):
- (LayoutTestController::setAlwaysAcceptCookies):
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::waitForPolicyDelegate):
- (LayoutTestController::setScrollbarPolicy):
- (LayoutTestController::addOriginAccessWhitelistEntry):
- (LayoutTestController::removeOriginAccessWhitelistEntry):
- (LayoutTestController::setMainFrameIsFirstResponder):
- (LayoutTestController::setTabKeyCyclesThroughElements):
- (LayoutTestController::setUseDashboardCompatibilityMode):
- (LayoutTestController::setUserStyleSheetEnabled):
- (LayoutTestController::setUserStyleSheetLocation):
- (LayoutTestController::setValueForUser):
- (LayoutTestController::setViewModeMediaFeature):
- (LayoutTestController::setWindowIsKey):
- (LayoutTestController::setSmartInsertDeleteEnabled):
- (waitToDumpWatchdogFired):
- (LayoutTestController::setWaitToDump):
- (LayoutTestController::windowCount):
- (LayoutTestController::setPrivateBrowsingEnabled):
- (LayoutTestController::setJavaScriptCanAccessClipboard):
- (LayoutTestController::setXSSAuditorEnabled):
- (LayoutTestController::setFrameFlatteningEnabled):
- (LayoutTestController::setSpatialNavigationEnabled):
- (LayoutTestController::setAllowUniversalAccessFromFileURLs):
- (LayoutTestController::setAllowFileAccessFromFileURLs):
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- (LayoutTestController::setAutofilled):
- (LayoutTestController::disableImageLoading):
- (LayoutTestController::setMockDeviceOrientation):
- (LayoutTestController::setMockGeolocationPosition):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- (LayoutTestController::addMockSpeechInputResult):
- (LayoutTestController::setIconDatabaseEnabled):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- (LayoutTestController::setSelectTrailingWhitespaceEnabled):
- (LayoutTestController::setPopupBlockingEnabled):
- (LayoutTestController::setPluginsEnabled):
- (LayoutTestController::elementDoesAutoCompleteForElementWithId):
- (LayoutTestController::execCommand):
- (LayoutTestController::findString):
- (LayoutTestController::isCommandEnabled):
- (LayoutTestController::setCacheModel):
- (LayoutTestController::setPersistentUserStyleSheetLocation):
- (LayoutTestController::clearPersistentUserStyleSheet):
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::setApplicationCacheOriginQuota):
- (LayoutTestController::clearApplicationCacheForOrigin):
- (LayoutTestController::localStorageDiskUsageForOrigin):
- (LayoutTestController::originsWithApplicationCache):
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::setDatabaseQuota):
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::syncLocalStorage):
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
- (LayoutTestController::setAppCacheMaximumSize):
- (LayoutTestController::pauseAnimationAtTimeOnElementWithId):
- (LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- (LayoutTestController::sampleSVGAnimationForElementAtTime):
- (LayoutTestController::numberOfActiveAnimations):
- (LayoutTestController::suspendAnimations):
- (LayoutTestController::resumeAnimations):
- (LayoutTestController::overridePreference):
- (LayoutTestController::addUserScript):
- (LayoutTestController::addUserStyleSheet):
- (LayoutTestController::setDeveloperExtrasEnabled):
- (LayoutTestController::setAsynchronousSpellCheckingEnabled):
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
- (LayoutTestController::evaluateScriptInIsolatedWorld):
- (LayoutTestController::removeAllVisitedLinks):
- (LayoutTestController::callShouldCloseOnWebView):
- (LayoutTestController::apiTestNewWindowDataLoadBaseURL):
- (LayoutTestController::apiTestGoToCurrentBackForwardItem):
- (LayoutTestController::setWebViewEditable):
- (LayoutTestController::markerTextForListItem):
- (LayoutTestController::authenticateSession):
- (LayoutTestController::setEditingBehavior):
- (LayoutTestController::abortModal):
- (LayoutTestController::hasSpellingMarker):
- (LayoutTestController::hasGrammarMarker):
- (LayoutTestController::dumpConfigurationForViewport):
- (LayoutTestController::setSerializeHTTPLoads):
- (LayoutTestController::setMinimumTimerInterval):
- (LayoutTestController::setTextDirection):
- (LayoutTestController::allowRoundingHacks):
-
-2011-06-24 Vsevolod Vlasov <vsevik@chromium.org>
-
- Unreviewed, add myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-07-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r90347.
- http://trac.webkit.org/changeset/90347
- https://bugs.webkit.org/show_bug.cgi?id=63886
-
- Build breaks on Leopard, Chromium-win, WinCairo, and WinCE.
- (Requested by tkent on #webkit).
-
- * DumpRenderTree/ForwardingHeaders/wtf/StdLibExtras.h: Removed.
-
-2011-07-03 Daniel Bates <dbates@webkit.org>
-
- Import Checkout in scm_unittests.py and logging in svn.py to fix
- Python missing global variable errors
-
- Rubber-stamped by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py: Import Checkout.
- * Scripts/webkitpy/common/checkout/scm/svn.py: Import logging.
-
-2011-07-02 Gavin Barraclough <barraclough@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=16652
- Firefox and JavaScriptCore differ in Number.toString(integer)
-
- Added forwarding header.
-
- * DumpRenderTree/ForwardingHeaders/wtf/StdLibExtras.h: Added.
-
-2011-04-02 Robert Hogan <robert@webkit.org>
-
- Reviewed by Benjamin Poulain.
-
- [Qt] Support third-party cookie policy for Qt clients
- https://bugs.webkit.org/show_bug.cgi?id=45455
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setAlwaysAcceptCookies):
- (LayoutTestController::setAlwaysBlockCookies):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-07-03 Adam Barth <abarth@webkit.org>
-
- Factor ReflectionHandler out of the rebaseline server. Just code motion.
-
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py: Added.
-
-2011-07-03 Adam Barth <abarth@webkit.org>
-
- Move the rebaseline server out of the commands package and into the
- (new) servers package. This patch prepares for refactoring this code
- to share server infrastructure with the (forthcoming) garden-o-matic
- command.
-
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/__init__.py: Added.
- * Scripts/webkitpy/tool/servers/data/rebaselineserver/loupe.js:
- * Scripts/webkitpy/tool/servers/data/rebaselineserver/main.css:
- * Scripts/webkitpy/tool/servers/data/rebaselineserver/queue.js:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py: Added.
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Fix typo in master.cfg, hoping to trigger a master restart.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Turn off new-run-webkit-tests and remove some debug logging.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Add some more debug logging to try to understand why we're getting
- stuck acquring the HTTP lock.
-
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Refactor NRWT parsing logic in master.cfg to understand that run-webkit-tests might run NRWT
- https://bugs.webkit.org/show_bug.cgi?id=63854
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-07-01 Eric Seidel <eric@webkit.org>
-
- new-run-webkit-tests results does not understand that mac uses test_expectations files
- https://bugs.webkit.org/show_bug.cgi?id=63838
-
- Reviewed by Adam Barth.
-
- We've decided to "enable" test_expectations for the Mac port for now.
- It makes the results.html results much more confusing to read, but at least they're
- no longer lying to us.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Temporarily disable waiting for ReportCrash to see how this code
- affects performance on the bots.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-07-01 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=63818
- Test bots shouldn't attempt to build TestWebKitAPI on Windows.
- TestWebKitAPI builds as a part of general webkit build and is a
- part of build products archive.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * Scripts/run-api-tests:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- We shouldn't wait for ReportCrash while the timeout is running
- https://bugs.webkit.org/show_bug.cgi?id=63837
-
- Reviewed by Eric Seidel.
-
- Instead, we should move this check to worker.py.
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-07-01 Adam Roben <aroben@apple.com>
-
- Stop setting unsafe headers on POSTs via XHR from TestFailures page
-
- Fixes <http://webkit.org/b/63833> TestFailures page causes a bunch of spew in the
- Inspector's console about unsafe headers
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (fetchResource): Removed unnecessary code to set Content-Length and Connection headers.
-
-2011-07-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Switch Snow Leopard over to new-run-webkit-tests (except for wk2)
- https://bugs.webkit.org/show_bug.cgi?id=63786
-
- We're down to one bug blocking the "move to NRWT" bug:
- https://bugs.webkit.org/show_bug.cgi?id=34984
- so we're trying transitioning Snow Leopard to NRWT as an experiment.
-
- If we run into any blocking issues we'll of course roll this back out
- (or anyone reading this should feel encouraged to).
-
- * Scripts/run-webkit-tests:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Add a compat shim for --leaks. Support for --leaks will be added in
- https://bugs.webkit.org/show_bug.cgi?id=63832.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- ReportCrash destabilizes new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=63795
-
- ReportCrash chews up too many system resources that it destablizes
- tests run concurrently. This patch causes us to spin down all the
- worker processes when ReportCrash is running.
-
- Also, this patch causes the master process to tell the user we're
- waiting for the crash reporter rather than having that be the worker's
- job. This stops the user from getting spammed with too many "waiting
- for crash reporter" messages and also cleans up some minor UI issues
- with the meter.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
-
-2011-07-01 Adam Roben <aroben@apple.com>
-
- Teach webkitpy about the new format of our ChangeLog template
-
- r90229 moved the "Need a short description and bug URL" line to the top of the ChangeLog
- template. But webkitpy didn't know this, so the various rollout-related commands were
- leaving that line in the ChangeLog.
-
- Fixes <http://webkit.org/b/63815> REGRESSION (r90229): webkit-patch rollout and sheriffbot
- rollout are broken
-
- Reviewed by Dan Bates.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.update_with_unreviewed_message): Changed to look for the "Need a short
- description and bug URL" line instead of the "Reviewed by" line as the first line of the
- ChangeLog template.
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (ChangeLogTest): Updated _new_entry_boilerplate to match what prepare-ChangeLog now
- generates.
-
-2011-07-01 Adam Roben <aroben@apple.com>
-
- Make TestFailures stop loading old builds once we've explained all current failures
-
- We used to do this, but some refactoring in r90165 broke this logic.
-
- Fixes <http://webkit.org/b/63808> REGRESSION (r90165): TestFailures page always loads all
- builds back to the beginning of time
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype.start): Stop fetching old builds once we're told that
- all current failures have been explained.
-
-2011-07-01 Adam Roben <aroben@apple.com>
-
- commit-log-editor reorders ChangeLog entries in unexpected ways
- https://bugs.webkit.org/show_bug.cgi?id=63804
-
- Reviewed by Darin Adler.
-
- commit-log-editor was changed in r46899 to move the bug title and URL to the top of the
- commit message in order to make git-based tools, which expect the first line of the commit
- message to be a summary of the change, to work better. But this reordering of the ChangeLog
- entry was unpredictable and unexpected.
-
- I changed prepare-ChangeLog to put the bug title and URL at the top of the ChangeLog entry
- so that commit-log-editor doesn't have to move them. Then I changed commit-log-editor not to
- try to move them.
-
- * Scripts/commit-log-editor: Partially reverted r46899. We no longer save the "Reviewed by"
- line and try to move it down below the bug title and URL. The order of the text in the
- ChangeLog is now preserved, except that we insert a "Patch by" line just above the "Reviewed
- by" line in cases where the committer and author are not the same person.
-
- * Scripts/prepare-ChangeLog: Moved the "Reviewed by" line down below the bug title and URL.
-
-2011-07-01 Mihnea Ovidenie <mihnea@adobe.com>
-
- Reviewed by Adam Roben.
-
- [CSSRegions] Add build slave
- https://bugs.webkit.org/show_bug.cgi?id=62372
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- Add an entry for a release build of Mac.
-
-2011-07-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r90213.
- http://trac.webkit.org/changeset/90213
- https://bugs.webkit.org/show_bug.cgi?id=63792
-
- The SL bot has an errant HTTP server holding port 8080
- (Requested by abarth on #webkit).
-
- * Scripts/run-webkit-tests:
-
-2011-07-01 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix WebKit2 GTK build after r90163.
-
- * MiniBrowser/gtk/WebBundle/WebBundleMain.c:
- (didCreatePage):
-
-2011-07-01 Adam Barth <abarth@webkit.org>
-
- Exit faster when we get a keyboard interrupt. Previously, we'd open
- Safari if you ^C NRWT after it found a failure.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-07-01 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Switch Snow Leopard over to new-run-webkit-tests (except for wk2)
- https://bugs.webkit.org/show_bug.cgi?id=63786
-
- We're down to one bug blocking the "move to NRWT" bug:
- https://bugs.webkit.org/show_bug.cgi?id=34984
- so we're trying transitioning Snow Leopard to NRWT as an experiment.
-
- If we run into any blocking issues we'll of course roll this back out
- (or anyone reading this should feel encouraged to).
-
- * Scripts/run-webkit-tests:
-
-2011-07-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r90192.
- http://trac.webkit.org/changeset/90192
- https://bugs.webkit.org/show_bug.cgi?id=63788
-
- Appears to have caused NRWT on Chromium WebKit Vista to hang
- (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove the concept of "being wedged" from new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=63767
-
- Worker processes shouldn't ever become wedged. My understanding is
- that this code was originally motivated by the old threading-based
- design but no longer servers any purpose.
-
- Note: If we actually have a problem with the test harness getting
- stuck, buildbot will kill us.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- The win32 implementation of fork is sad about forking test-webkitpy.
- Hopefully this will heal the bot.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Update new-run-webkit-tests now that the wk2 shared skipped list has moved
- https://bugs.webkit.org/show_bug.cgi?id=63780
-
- The shared list was moved from mac-wk2 to wk2 as part of
- http://trac.webkit.org/changeset/90125.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-30 Kenichi Ishibashi <bashi@chromium.org>
-
- Reviewed by Darin Adler.
-
- Style Checker should flag removal of "developmentRegion = English;" from project.pbxproj.
- https://bugs.webkit.org/show_bug.cgi?id=62022
-
- Adds XcodeProjectFileChecker to check removal of "developmentRegion".
-
- * Scripts/webkitpy/style/checker.py: Added XcodeProjectFileChecker as a checker for *.pbxproj.
- * Scripts/webkitpy/style/checkers/xcodeproj.py: Added.
- * Scripts/webkitpy/style/checkers/xcodeproj_unittest.py: Added.
-
-2011-06-30 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt: make sharding tests needing locks less hard-coded
- https://bugs.webkit.org/show_bug.cgi?id=63112
-
- This change also changes the manager logic so that it will
- drop the server lock as soon as all of the shards requiring
- the lock have completed.
-
- This change includes some minor namespace/import changes in the
- unit tests, and also makes the Manager a new-style object, which
- it should've been all along.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove threaded mode from new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=63771
-
- This mode is not used and is buggy. Rather than carry around a bunch
- of unused buggy code, we should rip it out and focus on the
- multiprocess implementation.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- Clean up output from new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=63759
-
- Printing messages from the child process looks super ugly because of
- the way the pretty-printer works. Printing a blank line first is a
- hack, but it makes things at least partially sane.
-
- Also, handle the case where calling sample throws an exception.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
-
-2011-06-27 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] DRT: Provide LayoutTestController::setDefersLoading and ::goBack support
- https://bugs.webkit.org/show_bug.cgi?id=63489
-
- Unskipped:
- loader/navigation-while-deferring-loads.html
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- new-run-webkit-tests should stop when I ^C it
- https://bugs.webkit.org/show_bug.cgi?id=63763
-
- It still doesn't stop fast enough, but at least with this patch it
- doesn't run more tests.
-
- Also, I tweaked the UI that happens when there's a keyboard interrupt
- to not be amazingly ugly. There's still a garbage "Te" left on the
- console, but that's a problem for another day.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Make TestFailures never treat a too-many-failures build as a last-passing build for a test
-
- Fixes <http://webkit.org/b/63758> TestFailures sometimes incorrectly says that a build was
- the last passing build for a test, when in fact the test wasn't run due to too many failures
- causing old-run-webkit-tests to exit early
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype._incorporateBuildHistory): If there were too many
- failures in this build, assume that all the tests failed in the last build would have failed
- in this build, too, had they been run. Introduced some new local variables to reduce typing,
- and used them throughout.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Fix a regression from r89841 where we wouldn't
- correctly remember whether old-run-webkit-tests exited early due to too many failures for
- builds older than r89610. Also removed an unused parameter while I was at it.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Make TestFaiulres only load old-results directories as needed
-
- Fixes <http://webkit.org/b/63752> Tester pages on TestFailures page load very slowly
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getBuildNames): Moved up into the API section of the class. Now just
- calls through to _getBuildNamesFromResultsDirectory.
- (Builder.prototype.getOldBuildNames): Added. Just calls through to
- _getBuildNamesFromResultsDirectory.
- (Builder.prototype._getBuildNamesFromResultsDirectory): Renamed from getBuildNames. Now
- takes the directory URL as an argument and only fetches that single URL.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype.start): Moved most logic to _analyzeBuilds. First
- analyzes builds from Builder.getBuildNames, then from Builder.getOldBuildNames if needed.
- (LayoutTestHistoryAnalyzer.prototype._analyzeBuilds): Moved logic here from start. (Most
- changes are just indentation.) Now takes a callback to call when we've finished analyzing
- all builds in buildNames so that we can try to fetch more build names if needed.
-
-2011-06-30 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Update MiniBrowser and WebKitTestRunner to use the client version constants.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowLoaderClientInit):
- (browserWindowUIClientInit):
- * MiniBrowser/gtk/WebBundle/WebBundleMain.c:
- (didCreatePage):
- (WKBundleInitialize):
- * MiniBrowser/gtk/main.c:
- (createWKContextWithInjectedBundle):
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (WKBundleInitialize):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Identify revisions that modified failing tests on TestFailures page
-
- Fixes <http://webkit.org/b/63716> TestFailures page should try to infer which commit caused
- a failure by looking at commit logs
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (.existing-bugs-list, .suspect-revisions-list): Made this rule apply to the suspect
- revisions list, too.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- (Trac): Initialize our memory cache.
- (Trac.prototype.getCommitDataForRevisionRange): Added. Fetches the commit log in RSS form,
- then parses out the revision number, Trac's idea of the commit title, and the files modified
- by the commit. (To get the modified files, we rely on the commit message including a
- prepare-ChangeLog-style file list.)
- (Trac.prototype.logURL): Added a new formatAsRSS parameter.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (removePathExtension): Added. Returns a new string with the last dot and everything after it
- removed.
- (sorted): Added sortFunction parameter.
- (Node.prototype.removeAllChildren): Added. Does what it says.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Updated for change to _domForRegressionRange.
- (ViewController.prototype._domForRegressionRange): Changed argument order to match
- _domForNewAndExistingBugs. Now takes the list of failing tests and uses it to figure out
- which revisions modified the failing tests and displays the suspect revisions in a list.
-
-2011-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename should_kill_dump_render_tree to driver_needs_restart in preparation for supporting WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=63743
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-30 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Anders Carlsson.
-
- [GTK] Crash observed with nspluginwrapper and flash
- https://bugs.webkit.org/show_bug.cgi?id=62249
-
- Added a TestNetscapePlugin test which verifies that WebKit properly
- handles situations where InvalidateRect is called with a null instance.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/x11/CallInvalidateRectWithNullNPPArgument.cpp: Added.
- (CallInvalidateRectWithNullNPPArgument::CallInvalidateRectWithNullNPPArgument):
- (CallInvalidateRectWithNullNPPArgument::NPP_New):
- * GNUmakefile.am: Add the new file to sources list.
-
-2011-06-30 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove redundant tests in TestFailuresTest
- https://bugs.webkit.org/show_bug.cgi?id=63742
-
- These tests are all already covered by TestFailuresTest.test_loads.
- I also added the missing "T" from TestFailuresest. :)
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
-
-2011-06-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- REGRESSION(r84294): new-run-webkit-tests results.html generate links to diffs.html or diff.png that don't exist
- https://bugs.webkit.org/show_bug.cgi?id=63494
-
- This patch does two things:
-
- 1) Refactor diff_image to return the image diff instead of writing the
- diff to a file. This fixes a bunch of hacks and disentangles a bunch
- of code.
-
- 2) When there's a checksum mismatch but not image diff, we no longer
- report an IMAGE failure to results.html. That fixes the bug in
- question because results.html won't try to link to a non-existent image
- diff.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py:
-
-2011-06-28 Hans Wennborg <hans@chromium.org>
-
- Reviewed by Tony Chang.
-
- IndexedDB: Prepare for running layout tests with LevelDB
- https://bugs.webkit.org/show_bug.cgi?id=63593
-
- The TestShell must always provide a temporary folder for LevelDB,
- not just when the backing store type is overridden.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setOverrideIndexedDBBackingStore):
- (LayoutTestController::clearAllDatabases):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
-
-2011-06-30 Zsolt Fehér <h490267@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [WK2] Create a general wk2 specific LayoutTests/platform/wk2 platform
- qt-wk2, win-wk2, mac-wk2 use this common Skipped list too
- https://bugs.webkit.org/show_bug.cgi?id=61785
-
- * Scripts/old-run-webkit-tests:
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Use a colon to separate test names from failure info on TestFailures
-
- This matches how the "Possibly Flaky Tests" list works, and is much prettier when the
- failure info itself includes parentheses.
-
- Fixes <http://webkit.org/b/63722> Crashing symbols on TestFailures page look ugly due to
- double parentheses
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForFailedTest): Use a colon instead of surrounding the failure
- info in parentheses.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Robustify PersistentCache against cached data that contains the string ': '
-
- Fixes <http://webkit.org/b/63721> Exceptions thrown while loading TestFailures page due to
- passing a bad string to JSON.parse
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/PersistentCache.js:
- (PersistentCache._parseDateAndJSONFromString): Manually split the string on the separator
- using indexOf and substring. (String.prototype.split always splits on all instances of the
- separator.)
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Include the crashing symbol in crash logs links on TestFailures
-
- Fixes <http://webkit.org/b/63465> Links to crash logs on TestFailures page should include
- the crashing symbol (like links in results.html do)
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Bumped the cache version because we now store
- crashing symbols for crashing tests. Renamed testsForResultTable to parseResultTable because
- it now returns more than just the test names. Specifically, it now looks for crash log links
- and extracts the crashing symbol name from them. Updated callers of parseResultTable to
- match its new behavior. Changed to store the crashing symbol along with the failure type in
- the data we pass to the callback for tests which crashed.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (code): Make <code> elements a little smaller because their contents can be quite long.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForFailureDiagnosis): Include the crashing symbol inside a
- <code> element in the link, if there is a crashing symbol.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Use objects instead of strings to represent a test result in TestFailures code
-
- This will eventually allow us to store more than just the type of failure for each test.
- (E.g., we can store the name of the crashing symbol for tests which crashed.)
-
- Prep work for <http://webkit.org/b/63465> Links to crash logs on TestFailures page should
- include the crashing symbol (like links in results.html do)
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.failureDiagnosisTextAndURL): Changed to expect a testResult object
- instead of just a failureType string.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js:
- (FlakyLayoutTestDetector.prototype.incorporateTestResults): Changed to store a
- testResult-like object for passing tests.
- (FlakyLayoutTestDetector.prototype.flakinessExamples): Changed to expect testResult-like
- objects.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Store a version number along with the cached data
- so we can throw away cached data that's in an old format. Store a testResult object for each
- test instead of just its failure type.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForFailedTest):
- (ViewController.prototype._domForFailureDiagnosis):
- Changed to expect testResult objects instead of failureType strings.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Show full commit logs when visiting Trac from TestFailures page
-
- Fixes <http://webkit.org/b/63715> Links to Trac on TestFailures page
- should show full commit logs
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- (Trac.prototype.logURL): Added new 'showFullCommitLogs' parameter. When specified, we add
- verbose=on to the log URL to tell Trac to show full commit logs.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForRegressionRange): Specify true for showFullCommitLogs.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Add a link to file a bug about TestFailures to the TestFailures page
-
- Fixes <http://webkit.org/b/63466> TestFailures page should include a link to file a bug
- about TestFailures itself
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (aside): Added some styles for the new link. It is positioned in the upper-right and
- hopefully not to glaringly obvious.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype.loaded): Set up our main content element and auxiliary UI.
-
- (ViewController.prototype._displayBuilder):
- (ViewController.prototype._displayTesters):
- Modify the main content element instead of the entire body, as there are other things in the
- body that we want to preserve.
-
- (ViewController.prototype._domForAuxiliaryUIElements): Create and return an <aside> element
- that contains a link to file a bug about the TestFailures page.
-
-2011-06-30 Adam Roben <aroben@apple.com>
-
- Ignore callbacks that correspond to old navigations of the TestFailures page
-
- Fixes <http://webkit.org/b/63711> TestFailures page sometimes ignores back/forward
- navigations
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer.prototype.start): Check the return value of the callback. If the
- callback returns false, stop fetching more data.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController): Initialize new _navigationID member. This member is used to assign each
- navigation by the user a unique ID.
- (ViewController.prototype.parseHash): Increment the navigation ID.
-
- (ViewController.prototype._displayBuilder):
- (ViewController.prototype._displayTesters):
- At the start of these functions, record the current navigation ID. Bail out from callbacks
- if the navigation ID has changed, indicating that the user has navigated elsewhere.
-
-2011-06-30 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add back/forward menu to MiniBrowser toolbar
- https://bugs.webkit.org/show_bug.cgi?id=63445
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browser_window_init): Use a GtkMenuToolButton for navigation
- widgets.
- (browserWindowConstructed): Get the page BackForwardList.
- (browserWindowHistoryItemActivated): Go to activated history item.
- (browserWindowHistoryItemSelected): Show the url of currently
- selected history item in the statusbar.
- (createGtkActionFromBackForwardItem): Create a GtkAction from a
- WKBackForwardListItemRef.
- (browserWindowCreateMenuItemFromBackForwardItem): Create a
- GtkMenuItem from a WKBackForwardListItemRef.
- (browserWindowCreateBackForwardMenu): Create a GtkMenu with the
- given history items.
- (browserWindowUpdateNavigationActions): Update navigation widgets
- sensitivity and history menus.
- (didChangeBackForwardList): Call
- browserWindowUpdateNavigationActions().
- (browserWindowLoaderClientInit): Add didChangeBackForwardList
- callback.
-
-2011-06-30 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=63660
- This enables unit-tests step on Windows and MacOS SnowLeopard.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-30 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt][WK2] Implement the rest of WTR::PlatformWebView
- https://bugs.webkit.org/show_bug.cgi?id=63630
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
-
-2011-06-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy is spamming lots of messages about updating test expectations
- https://bugs.webkit.org/show_bug.cgi?id=63680
-
- This patch changes the passing_run() function to capture the
- output to stdout and stderr and assert that it is empty, and
- also specifies --no-new-test-results by default to avoid getting
- "generating baseline" messages for the expected-missing results.
-
- Also check that we are logging messages when we generate new
- baselines.
-
- Also fix a minor bug in the way test_tolerance() was
- checking for whether the tests were passing or not.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-29 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Kent Tamura.
-
- DRT: Make Hixie76WebSocketProtocolEnabled preference flag configurable from LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=63532
-
- LayoutTestController::overridePreference() will be used to change the value of
- the Hixie76WebSocketProtocolEnabled preference flag from layout tests. In this way,
- we can avoid writing a lot of boilerplate code in each port's DumpRenderTree, but
- at least we need to reset preference values in DumpRenderTree every time we start
- a new test because preference values changed in some test should not be leaked
- to the next test.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- The name of preference key is defined in WebKit/{mac/WebView,win}/WebPreferenceKeysPrivate.h.
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- Set the default value. This will be called from TestShell::resetTestController().
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Set the default value.
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Ditto.
-
-2011-06-29 Kenichi Ishibashi <bashi@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style fails to detect https://webkit.org/b/XXXXX as a bug number
- https://webkit.org/b/57360
-
- Modify the regular expression to match https scheme.
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: Added a test case for https://webkit.org/b/XXXXX.
- * Scripts/webkitpy/common/config/urls.py: Modified bug_url_short to match https scheme.
-
-2011-06-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: images page switch actual and expected images before they're loaded
- https://bugs.webkit.org/show_bug.cgi?id=63199
-
- We now preload the images and keep the DOM nodes in memory instead of
- going back to the MemoryCache all the time. (Also, remove some nutty
- </img> HTML.)
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
-
-2011-06-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests should tell you when it creates new expectations
- https://bugs.webkit.org/show_bug.cgi?id=63675
-
- Unforunately, this patch creates a bunch of test-webkitpy spam because
- we don't understand how Python logging works well enough to stop the
- spam. :(
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Refactor WebKitDriver.run_test into smaller pieces
- https://bugs.webkit.org/show_bug.cgi?id=63673
-
- There is no functional change here. Just moving code around.
- This is in preparation for adding support for #CRASHED and #CRASHED - WebProcess
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Simplify skipped file finding in preparation for adding wk2 skipped list fallback
- https://bugs.webkit.org/show_bug.cgi?id=63501
-
- Re-landing after fixing a bug in WebKitPort.baseline_search_path which broke
- the rebaselineserver unit tests. Also fixed nits brought up by Dirk after previous landing.
-
- The goal was to add support for wk2 skipped lists.
- However, I found that our skipped list computation was a
- manual hack (which only worked for the mac port).
-
- So I fixed a FIXME to move the skipped list finding
- into WebKitPort instead of MacPort.
- Doing so required the concept of a "port_name", since previously
- the only name accessible from a port object was name()
- which includes many things beyond "mac" or "chromium", etc.
-
- Eventually I believe we'll want to re-think the way that we pass
- in a port_name argument to Port subclasses and expect them to parse
- it. But for now I just added a cls.port_name variable which contains
- the static information needed to compute wk2 names as well as
- compute Skipped list fallback which works for Mac/Win/Qt and Gtk.
-
- In order to test my new _skipped_file_search_paths method, I
- fixed another FIXME by making it return relative paths.
-
- I also fixed the test_expectations_path code in WebKitPort to use port_name.
- It was using name() which would return PORT-VERSION so MacPort was overriding
- it to use just PORT. After fixing test_expectations_path to use port_name
- (and making it aware of webkit2) I was able to remove the MacPort implementation.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Add port_name() to access "mac", since name() returns "mac-leopard" etc.
- - Document that real_name() seems to have no purpose.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- - Add _parse_port_name(), eventually we might call this from WebKitPort directly.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- - Add _parse_port_name.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Add _parse_port_name.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Move Skipped-file finding code down to WebKitPort
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r90070.
- http://trac.webkit.org/changeset/90070
- https://bugs.webkit.org/show_bug.cgi?id=63676
-
- Broke test-webkitpy rebaseline tests (Requested by eseidel2 on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
-
-2011-06-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests doesn't support sample-on-timeout
- https://bugs.webkit.org/show_bug.cgi?id=56731
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Simplify skipped file finding in preparation for adding wk2 skipped list fallback
- https://bugs.webkit.org/show_bug.cgi?id=63501
-
- The goal was to add support for wk2 skipped lists.
- However, I found that our skipped list computation was a
- manual hack (which only worked for the mac port).
-
- So I fixed a FIXME to move the skipped list finding
- into WebKitPort instead of MacPort.
- Doing so required the concept of a "port_name", since previously
- the only name accessible from a port object was name()
- which includes many things beyond "mac" or "chromium", etc.
-
- Eventually I believe we'll want to re-think the way that we pass
- in a port_name argument to Port subclasses and expect them to parse
- it. But for now I just added a cls.port_name variable which contains
- the static information needed to compute wk2 names as well as
- compute Skipped list fallback which works for Mac/Win/Qt and Gtk.
-
- In order to test my new _skipped_file_search_paths method, I
- fixed another FIXME by making it return relative paths.
-
- I also fixed the test_expectations_path code in WebKitPort to use port_name.
- It was using name() which would return PORT-VERSION so MacPort was overriding
- it to use just PORT. After fixing test_expectations_path to use port_name
- (and making it aware of webkit2) I was able to remove the MacPort implementation.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- - Add port_name() to access "mac", since name() returns "mac-leopard" etc.
- - Document that real_name() seems to have no purpose.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- - Add _parse_port_name(), eventually we might call this from WebKitPort directly.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- - Add _parse_port_name.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- - Add _parse_port_name.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- - Move Skipped-file finding code down to WebKitPort
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- new-run-webkit-tests complains about missing pixel results instead of plopping down new expectations
- https://bugs.webkit.org/show_bug.cgi?id=38063
-
- This patch changes new-run-webkit-tests to match old-run-webkit-tests
- in generating new expected results when the expected results are
- missing.
-
- There are still a couple details that are different:
-
- 1) Image baselines aren't generated unless you run with -p.
- 2) Render tree dumps are places in the cross-platform directory instead
- of the platform-specific directory.
-
- I'm inclined to deal with both of these issues in follow-up patches.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-29 Adam Roben <aroben@apple.com>
-
- Teach TestFailures to detect possibly flaky tests and list them separately
-
- Fixes <http://webkit.org/b/61061> <rdar://problem/9452796> TestFailures page blames
- arbitrary revisions for breaking flaky tests
-
- Reviewed by Dan Bates.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/FlakyLayoutTestDetector.js: Added.
- (FlakyLayoutTestDetector): This class identifies flaky tests when given the test results
- from various builds (in reverse-chronological order).
- (FlakyLayoutTestDetector.prototype.incorporateTestResults): Detects flaky tests. Tests move
- monotonically through three states: LastSeenFailing, LastSeenPassing, and PossiblyFlaky.
- (FlakyLayoutTestDetector.prototype.flakinessExamples): Finds examples of flakiness for the
- given test. Essentially, finds all the transitions from passing to failing (or vice-versa)
- and puts them in an array in reverse-chronological order.
- (FlakyLayoutTestDetector.prototype.get possiblyFlakyTests): Returns all tests we've detected
- to be possibly flaky.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer): Initialize new members.
- (LayoutTestHistoryAnalyzer.prototype.start): Now passes the callback an object with two
- properties: history and possiblyFlaky. history holds the data this function used to pass to
- the callback, while possiblyFlaky lists all tests that might be flaky and examples of their
- flakiness. Updated documentation comment to match.
- (LayoutTestHistoryAnalyzer.prototype._incorporateBuildHistory): Now uses a
- FlakyLayoutTestDetector to identify possibly flaky tests. Any possibly flaky tests are
- removed from the failure history, since when they started failing is no longer meaningful.
- We tell our caller to keep calling until all current failures have been explained and we've
- gone through 5 builds without any new flaky tests being identified.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (sorted): New helper function to return a sorted copy of an array.
- (Array.prototype.findLast): New helper function. Like findFirst, but finds the last item
- that matches the predicate.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Updated for change in the object passed to us by
- the analyzer. Now puts the list of possibly flaky tests after the failure history.
- (ViewController.prototype._domForFailedTest): Moved some code from here...
- (ViewController.prototype._domForFailureDiagnosis): ...to here.
- (ViewController.prototype._domForPossiblyFlakyTests): New function, builds up a list of
- possibly flaky tests and examples of their flakiness and returns it.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- FlakyLayoutTestDetector.js.
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Adam says cowboys don't review (or unit test).
-
- * Scripts/webkitpy/tool/commands/download.py:
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make port/config.py mockable for easier unit testing
- https://bugs.webkit.org/show_bug.cgi?id=63661
-
- Fix an exception from the unit tests.
-
- * Scripts/webkitpy/layout_tests/port/config.py:
-
-2011-06-29 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- * DumpRenderTree/win/ImageDiffWinCairoCommon.vsprops:
- Link against zlib1.dll, not the static zlib.lib.
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make port/config.py mockable for easier unit testing
- https://bugs.webkit.org/show_bug.cgi?id=63661
-
- Right now config.py leaks real system paths for
- webkit_base_dir due to using __file__. This patch
- adds a filsystem.py wrapper around __file__ so that
- we don't have to jump through hoops in webkit_unittest.py
- to avoid leaking local paths to the unit test results.
-
- There are probably many more places where we should now
- use filesystem.path_for_module, but starting with just this one.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
-
-2011-06-29 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove duplicate methods in filesystem.py
- https://bugs.webkit.org/show_bug.cgi?id=63658
-
- Looks like there was a bad merge at some point.
-
- I also removed a bunch of redundant docstrings.
-
- * Scripts/webkitpy/common/system/filesystem.py:
-
-2011-06-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Pass --no-new-test-results to NRWT on build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=63653
-
- This is in preparation for https://bugs.webkit.org/show_bug.cgi?id=38063.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-29 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Adam Barth.
-
- [GTK] overlapping drag&drop tests fail on NRWT
- https://bugs.webkit.org/show_bug.cgi?id=57640
-
- Make a GTK test driver that spawns one Xvfb instance per
- thread. This avoids bad interactions in DnD tests between threads.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-06-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r89888.
- http://trac.webkit.org/changeset/89888
- https://bugs.webkit.org/show_bug.cgi?id=63609
-
- "Seems to be causing merging issues on the dashboard, e.g.
- http://test-
- results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20chromium.org&tests=fast%2Fcanvas"
- (Requested by aboxhall on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-06-29 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [webkitpy] Executive.running_pids() sometimes doesn't correctly process "ps" output
- https://bugs.webkit.org/show_bug.cgi?id=63624
-
- * Scripts/webkitpy/common/system/executive.py: In some cases the
- ps output lines can contain one or more leading white-spaces, so
- strip it before splitting the pid and command name.
-
-2011-06-29 Noel Gordon <noel.gordon@gmail.com>
-
- Reviewed by Kent Tamura.
-
- [Chromium] [DRT] ImageDiff should compile in VS2010
- https://bugs.webkit.org/show_bug.cgi?id=63614
-
- * DumpRenderTree/chromium/ImageDiff.cpp: Include <iterator> for back_inserter.
-
-2011-06-27 Diego Gonzalez <diegohcg@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DRT support for setInteractiveFormValidationEnabled
- https://bugs.webkit.org/show_bug.cgi?id=63496
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2011-06-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make new-run-webkit-tests -2 actually use WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=63572
-
- new-run-webkit-tests -2 works with this change. However a zillion
- tests fail since it can't find the right skipped lists for wk2.
- The Skipped-list fixing is covered in bug 63501.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add more machines to Chromium Mac Release and Chromium Mac Release (Tests)
- https://bugs.webkit.org/show_bug.cgi?id=63500
-
- Added google-mac-3 and google-mac-4.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-06-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- Remove webkitpy's tiger support now that WebKit no longer supports tiger
- https://bugs.webkit.org/show_bug.cgi?id=63568
-
- I don't think our support actually fully worked anyway. Regardless
- tiger is dead now (thankfully)!
-
- I also unwrapped some short lines and added a couple FIXMEs while
- touring the code.
-
- No new tests, only removing old ones which tested our Tiger support.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver_unittest.py:
-
-2011-06-28 Eric Seidel <eric@webkit.org>
-
- Unreviewed, just fixing a typo.
-
- Fix misspellings of "thead" to "thread".
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-06-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests needs a --webkit-test-runner option
- https://bugs.webkit.org/show_bug.cgi?id=63439
-
- This was accidentally fixed in bug 63501 as well.
- The root problem here was that the webkit unit tests were not using
- enough mocks. I've fixed them here to use more mocks
- which should unbreak windows.
-
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests should not run mthml tests when MHTML support is disabled
- https://bugs.webkit.org/show_bug.cgi?id=63549
-
- This way mhtml tests won't show up as "missing" results on all non-chromium platforms.
- I happen to go looking for what code was deciding that .mht was a supported
- extension, found test_files.py and then removed some redundant doc-strings and
- if branching.
-
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-28 Roland Steiner <rolandsteiner@chromium.org>
-
- Reviewed by Tony Chang.
-
- Fix filesystem_unittest.FileSystemTest test_read_and_write_file()
- https://bugs.webkit.org/show_bug.cgi?id=63514
-
- - change write_text_file to write_binary_file
- - check that text_path and binary_path are actually existant files
- - change cleanup block from 'except' to 'finally'
-
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
-
-2011-06-28 Adam Roben <aroben@apple.com>
-
- Roll out r89924 and r89925
-
- I didn't mean to commit them!
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- NRWT should wait for ReportCrash
- https://bugs.webkit.org/show_bug.cgi?id=63495
-
- When a test crashes on Mac, ReportCrash confuses us into thinking the
- test times out.
-
- I'm not sure how to test this in a meaningful way in our current test
- harness...
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2011-06-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r89881.
- http://trac.webkit.org/changeset/89881
- https://bugs.webkit.org/show_bug.cgi?id=63513
-
- Makes Qt massively slow (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2011-06-27 Alice Boxhall <aboxhall@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Convert json_results_generator.py to output version 4 JSON.
- https://bugs.webkit.org/show_bug.cgi?id=60869
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- NRWT should wait for ReportCrash
- https://bugs.webkit.org/show_bug.cgi?id=63495
-
- When a test crashes on Mac, ReportCrash confuses us into thinking the
- test times out.
-
- I'm not sure how to test this in a meaningful way in our current test
- harness...
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- * Scripts/webkitpy/common/system/crashlogs_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests should upload crash logs
- https://bugs.webkit.org/show_bug.cgi?id=55907
-
- NRWT used to have a different name for crash logs. I've changed the
- name to patch ORWT.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests needs a --webkit-test-runner option
- https://bugs.webkit.org/show_bug.cgi?id=63439
-
- NRWT doesn't actually know how to run with the WebKitTestRunner yet
- but it does have a --webkit-test-runner option and will build WebKitTestRunner correctly.
-
- There is a bunch of other little cleanup in this patch which I added as I
- took a tour through all of our hard-coded DumpRenderTree strings.
-
- * Scripts/webkitpy/common/net/layouttestresults.py: Added FIXME.
- * Scripts/webkitpy/common/system/outputcapture.py: Fixed spacing to pass PEP8.
- * Scripts/webkitpy/layout_tests/layout_package/manager.py: Made the FIXME slightly stronger (bad bug).
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: test_shell is dead.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py: Unwrapped silly wrapping.
- * Scripts/webkitpy/layout_tests/port/base.py: Removed two dead methods.
- * Scripts/webkitpy/layout_tests/port/config.py:
- - build_dumprendertree had no business in this class, removed it.
- - Exposed _FLAGS_FROM_CONFIGURATIONS through flag_for_configuration()
- - Exposed _script_path as script_path() (this probably belongs elsewhere).
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- - Moved these tests to webkit_unittests.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Now respects the --webkit-test-runner option.
- - setup_test_run is empty in base.py too, no need to override it.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- - Test the new hotness.
- - Bad, bad, bad! The old code was using a real Executive during unit-testing!
- I think this code is still hitting disk during the unit tests. :(
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Add the option.
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- - Remove optional args option.
- * Scripts/webkitpy/tool/commands/commandtest.py:
- - Remove optional args option.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Remove optional args option.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- new-run-webkit-tests does not report stderr output
- https://bugs.webkit.org/show_bug.cgi?id=37739
-
- Almost all the infrastructure appears to be in place to report stderr
- in results.html. We just need to wire up a bool to tell results.html
- to create the hyperlink.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- webkitpy unit tests should have more descriptive names than just "Test"
- https://bugs.webkit.org/show_bug.cgi?id=63479
-
- Luckily we kept these classes in separate namespaces in the harness so
- we were actually running them all even though they had the same name.
-
- * Scripts/webkitpy/common/system/stack_utils_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py:
-
-2011-06-27 Greg Simon <gregsimon@chromium.org>
-
- No review necessary.
-
- Add email addr to contributor list
- https://bugs.webkit.org/show_bug.cgi?id=63478
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r89834.
- http://trac.webkit.org/changeset/89834
- https://bugs.webkit.org/show_bug.cgi?id=63476
-
- Broke test-webkitpy (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/system/outputcapture.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- * Scripts/webkitpy/tool/commands/commandtest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-06-27 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Adam Roben.
-
- Stop copying obsolete WebKit libraries on Windows
- https://bugs.webkit.org/show_bug.cgi?id=63474
-
- Don't copy obsolete WebKit library directories and files on Windows, they no longer exist and just generate extraneous warnings. These include the CharacterSets directory, dnssd.dll, and icudt40.dll.
-
- * DumpRenderTree/win/DumpRenderTreePostBuild.cmd:
- * MiniBrowser/MiniBrowserPostBuild.cmd:
- * WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd:
-
-2011-06-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Wyatt Carss to the list of non-committer contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkitpy should understand crash logs
- https://bugs.webkit.org/show_bug.cgi?id=63468
-
- We're planning to use this functionality to upload crash logs along
- with test results for new-run-webkit-tests.
-
- * Scripts/webkitpy/common/system/crashlog.py: Added.
- * Scripts/webkitpy/common/system/crashlog_unittest.py: Added.
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/tool/commands/queries.py:
-
-2011-06-27 Adam Roben <aroben@apple.com>
-
- Make LayoutTestResultsLoader cache whether old-run-webkit-tests exited early due to too many
- failures
-
- Fixes <http://webkit.org/b/63470> TestFailures page for a particular builder forgets
- old-run-webkit-tests exited early after reload
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.start): Store both the set of failing tests and whether
- old-run-webkit-tests exited early due to too many failures in PersistentCache.
-
-2011-06-27 Adam Roben <aroben@apple.com>
-
- Make TestFailures load build names from build.webkit.org/old-results too
-
- Build results are periodically moved from results to old-results. This change makes those
- builds still visible to TestFailures.
-
- Fixes <http://webkit.org/b/63453> TestFailures page doesn't show information for builds that
- have been moved to build.webkit.org/old-results
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getBuildNames): Extracted code to parse build names from a
- build.webkit.org directory listing into a separate function. Instead of omitting .zip files,
- we now only include directory entries whose names are parseable as build names (since
- old-results sometimes contains other random files/directories from who knows what). We now
- fetch both results and old-results (with a FIXME about loading old-results on demand),
- extract build names from each, and concatenate the two sets of names.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBuildbot.js:
- (WebKitBuildbot.prototype.parseBuildName): Changed to return null when the build name isn't
- parseable, rather than throwing an exception.
-
-2011-06-26 Adam Roben <aroben@apple.com>
-
- Store analyzed history directly in LayoutTestHistoryAnalyzer instead of in a generic cache
-
- It seems silly to have a whole generic cache just to store a single object.
-
- Fixes <http://webkit.org/b/63407> LayoutTestHistoryAnalyzer has a generic cache but doesn't
- need one
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- (LayoutTestHistoryAnalyzer): Replaced this._cache with this._history.
- (LayoutTestHistoryAnalyzer.prototype.start): Ditto.
- (LayoutTestHistoryAnalyzer.prototype._incorporateBuildHistory): Ditto, and removed the
- no-longer-needed history argument.
-
-2011-06-26 Adam Roben <aroben@apple.com>
-
- Move some inappropriate code out of Builder
-
- Fixes <http://webkit.org/b/63406> TestFailure page's Builder class has a bunch of code that
- isn't really about a builder
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getBuildNames): Renamed from _getBuildNames, since it now needs to be
- called by other objects.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestHistoryAnalyzer.js:
- Added. Code came from Builder.
- (LayoutTestHistoryAnalyzer):
- (LayoutTestHistoryAnalyzer.prototype.start):
- (LayoutTestHistoryAnalyzer.prototype._incorporateBuildHistory):
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/LayoutTestResultsLoader.js:
- Added. Code came from Builder.
- (LayoutTestResultsLoader):
- (LayoutTestResultsLoader.prototype.start):
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Changed to use LayoutTestHistoryAnalyzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in new
- scripts.
-
-2011-05-17 Nat Duca <nduca@chromium.org>
-
- Reviewed by James Robinson.
-
- [chromium] Implement CCLayerTreeHost and CCLayerTreeHostImpl portions of threaded compositor
- https://bugs.webkit.org/show_bug.cgi?id=58408
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2011-06-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests needs a --webkit-test-runner option
- https://bugs.webkit.org/show_bug.cgi?id=63439
-
- NRWT doesn't actually know how to run with the WebKitTestRunner yet
- but it does have a --webkit-test-runner option and will build WebKitTestRunner correctly.
-
- There is a bunch of other little cleanup in this patch which I added as I
- took a tour through all of our hard-coded DumpRenderTree strings.
-
- * Scripts/webkitpy/common/net/layouttestresults.py: Added FIXME.
- * Scripts/webkitpy/common/system/outputcapture.py: Fixed spacing to pass PEP8.
- * Scripts/webkitpy/layout_tests/layout_package/manager.py: Made the FIXME slightly stronger (bad bug).
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: test_shell is dead.
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py: Unwrapped silly wrapping.
- * Scripts/webkitpy/layout_tests/port/base.py: Removed two dead methods.
- * Scripts/webkitpy/layout_tests/port/config.py:
- - build_dumprendertree had no business in this class, removed it.
- - Exposed _FLAGS_FROM_CONFIGURATIONS through flag_for_configuration()
- - Exposed _script_path as script_path() (this probably belongs elsewhere).
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- - Moved these tests to webkit_unittests.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- - Now respects the --webkit-test-runner option.
- - setup_test_run is empty in base.py too, no need to override it.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- - Test the new hotness.
- - Bad, bad, bad! The old code was using a real Executive during unit-testing!
- I think this code is still hitting disk during the unit tests. :(
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- - Add the option.
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- - Remove optional args option.
- * Scripts/webkitpy/tool/commands/commandtest.py:
- - Remove optional args option.
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- - Remove optional args option.
-
-2011-06-27 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- [WK2] WebKitTestRunner should reset FrameFlattening flag to disable before each test
- https://bugs.webkit.org/show_bug.cgi?id=63457
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2011-06-27 Raphael Kubo da Costa <kubo@profusion.mobi>
-
- Reviewed by Kent Tamura.
-
- [EFL] DRT: Add an ewk_view specialization for EFL's DumpRenderTree.
- It will be plugged into the build system as soon as the rest of the
- DRT code is fully upstreamed.
- https://bugs.webkit.org/show_bug.cgi?id=63086
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp: Added.
- (onConsoleMessage):
- (onJavaScriptAlert):
- (onJavaScriptConfirm):
- (onJavaScriptPrompt):
- (drtViewTiledAdd):
- * DumpRenderTree/efl/DumpRenderTreeView.h: Added.
-
-2011-06-27 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Kent Tamura.
-
- [EFL] Add an EventSender implementation to EFL's DumpRenderTree along
- with support files.
- Build system changes will be made as soon as the whole DumpRenderTree
- is upstreamed.
- https://bugs.webkit.org/show_bug.cgi?id=61962
-
- * DumpRenderTree/efl/EventSender.cpp: Added.
- (setEvasModifiers):
- (translateMouseButtonNumber):
- (sendMouseEvent):
- (sendClick):
- (scheduleAsynchronousClickCallback):
- (updateClickCount):
- (modifierFromJSValue):
- (modifiersFromJSValue):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (evasMouseEventFromHorizontalAndVerticalOffsets):
- (mouseScrollByCallback):
- (continuousMouseScrollByCallback):
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- (keyDownCallback):
- (scalePageByCallback):
- (getClass):
- (makeEventSender):
- * DumpRenderTree/efl/EventSender.h: Added.
-
-2011-06-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove evil uses of hasattr
- https://bugs.webkit.org/show_bug.cgi?id=63430
-
- For some reason these classes believe that they may be called with
- various flavors of "option" elements and so carefully check to make
- sure that the options element has their option before checking it.
-
- We had a set_option_default method which was never called, so I made it
- do what callsites seemed to want it to do and replaced 3 callers
- who previously used hasattr manually to use set_option_default instead.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-27 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Hajime Morita.
-
- [Chromium] WebViewHost should be destructed before LayoutTestController, etc.
- https://bugs.webkit.org/show_bug.cgi?id=63427
-
- ~WebViewHost() navigates to about:blank, so it calls some
- callbacks and LayoutTestController functions.
-
- * DumpRenderTree/chromium/TestShell.h:
- Move m_printer upper and move m_webViewHost lower.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move server config files to webkitpy.layout_tests.servers
- https://bugs.webkit.org/show_bug.cgi?id=63436
-
- The config files belong with the servers.
-
- * Scripts/webkitpy/layout_tests/port/httpd2.pem: Removed.
- * Scripts/webkitpy/layout_tests/port/lighttpd.conf: Removed.
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- * Scripts/webkitpy/layout_tests/servers/httpd2.pem: Copied from Tools/Scripts/webkitpy/layout_tests/port/httpd2.pem.
- * Scripts/webkitpy/layout_tests/servers/lighttpd.conf: Copied from Tools/Scripts/webkitpy/layout_tests/port/lighttpd.conf.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move websocket_server and http_server to webkitpy.layout_package.servers
- https://bugs.webkit.org/show_bug.cgi?id=63434
-
- These classes do not represent ports. They represent servers.
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/new-run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py: Removed.
- * Scripts/webkitpy/layout_tests/port/http_server_base.py: Removed.
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py: Removed.
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/servers/http_server.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/http_server.py.
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/http_server_base.py.
- * Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py.
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/websocket_server.py.
-
-2011-06-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Remove Chromium and ChromiumMac implementations of driver_name now that everything uses DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=63428
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move apache_http_server.py to webkitpy.layout_package.servers
- https://bugs.webkit.org/show_bug.cgi?id=63433
-
- The apache_http_server.py is a server, not a port.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py: Removed.
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/servers: Added.
- * Scripts/webkitpy/layout_tests/servers/__init__.py: Added.
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py: Copied from Tools/Scripts/webkitpy/layout_tests/port/apache_http_server.py.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move rebaseline-chromium-webkit-tests.py to webkitpy.to_be_moved
- https://bugs.webkit.org/show_bug.cgi?id=63432
-
- This code isn't in the dependency cone of new-run-webkit-tests. It's
- unclear what it's final home should be, but this patch moves it out of
- layout_tests to simply the package.
-
- * Scripts/rebaseline-chromium-webkit-tests:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py: Removed.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py: Removed.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests.py: Copied from Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py.
- * Scripts/webkitpy/to_be_moved/rebaseline_chromium_webkit_tests_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move update_webgl_conformance_tests.py to webkitpy.to_be_moved
- https://bugs.webkit.org/show_bug.cgi?id=63429
-
- This package as nothing to do with the layout_tests package.
-
- * Scripts/update-webgl-conformance-tests:
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests.py: Removed.
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests_unittest.py: Removed.
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py: Copied from Tools/Scripts/webkitpy/layout_tests/update_webgl_conformance_tests.py.
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/update_webgl_conformance_tests_unittest.py.
-
-2011-06-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move deduplicate_tests.py into webkitpy.to_be_moved
- https://bugs.webkit.org/show_bug.cgi?id=63426
-
- deduplicate_tests.py doesn't haven anything to do with layout tests.
- It's really a separate script. This patch moves it to the (new)
- to_be_moved package so that it doesn't distract us when working on NRWT.
-
- * Scripts/deduplicate-tests:
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py: Removed.
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py: Removed.
- * Scripts/webkitpy/test/main.py:
- * Scripts/webkitpy/to_be_moved: Added.
- * Scripts/webkitpy/to_be_moved/__init__.py: Added.
- * Scripts/webkitpy/to_be_moved/deduplicate_tests.py: Copied from Tools/Scripts/webkitpy/layout_tests/deduplicate_tests.py.
- * Scripts/webkitpy/to_be_moved/deduplicate_tests_unittest.py: Copied from Tools/Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py.
-
-2011-06-26 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Remove empty directory.
-
- * Scripts/webkitpy/layout_tests/test_types: Removed.
-
-2011-06-25 Naoki Takano <honten@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Change my entry from contributors to committers.
- https://bugs.webkit.org/show_bug.cgi?id=63043
-
- * Scripts/webkitpy/common/config/committers.py: Change my e-mail from takano.naoki@gmail.com to honten@chromium.org. And move the entry to commiters from contributors.
-
-2011-06-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- [Chromium] Update WebKit for WEBKIT_FRAME_TO_DOCUMENT_API_MOVE
- https://bugs.webkit.org/show_bug.cgi?id=63394
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::queueLoad):
-
-2011-06-25 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction after r89426.
-
- * WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops:
- Link with Cairo DLL for new functionality.
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp: Include compatibility
- code for snprintf.
-
-2011-06-25 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Adam Barth.
-
- run-bindings-tests does not work on Chromium Windows.
- https://bugs.webkit.org/show_bug.cgi?id=63382
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Removed run-bindings-tests as a build step for cr-win.
-
-2011-06-25 Dan Bernstein <mitz@apple.com>
-
- Try to fix the Qt and Chromium builds.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setEncodedAudioData):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
-
-2011-06-24 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Add an option to enable legacy rounding hacks
- https://bugs.webkit.org/show_bug.cgi?id=63363
-
- Added layoutTestController.allowRoundingHacks() and implemented it
- on OS X.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (allowRoundingHacksCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::allowRoundingHacks):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::allowRoundingHacks):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::allowRoundingHacks):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::allowRoundingHacks):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::allowRoundingHacks):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::allowRoundingHacks):
-
-2011-06-24 Adam Roben <aroben@apple.com>
-
- Include the directory containing the failing tests in titles of bugs filed from TestFailures
- when all the tests won't fit
-
- Fixes <http://webkit.org/b/63350> Short bug titles from TestFailures page give no indication
- which tests are failing
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (longestCommonPathPrefix): Added. Given a set of paths, returns the longest common prefix
- that ends in a path separator.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewAndExistingBugs): When we can't fit all the test names
- in the title, first try to include the longest common prefix of the test names, then, if
- that's still too long or there's no common prefix, fall back to not including any
- information about which tests are failing.
-
-2011-06-24 Adam Roben <aroben@apple.com>
-
- Include links to Trac in bugs filed from TestFailures
-
- Fixes <http://webkit.org/b/63348> Bugs filed from TestFailures page should include links to
- Trac for suspect revisions
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js:
- (Trac.prototype.changesetURL): New function, returns the URL for a particular revision in
- Trac.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewAndExistingBugs): If there's only one suspect revision,
- include a link to Trac for it in the first sentence of the description. Otherwise include a
- link to the suspect range after the list of failing tests.
-
-2011-06-24 Nat Duca <nduca@chromium.org>
-
- Unreviewed, rolling out r89694.
- http://trac.webkit.org/changeset/89694
- https://bugs.webkit.org/show_bug.cgi?id=58408
-
- Test shell still not ready for animate changes.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2011-06-24 Adam Roben <aroben@apple.com>
-
- Fix typos introduced in r89696
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Pass the result data's constituent parts to the
- callback, since that's what it expects.
-
-2011-06-24 Adam Roben <aroben@apple.com>
-
- Make TestFailures correctly remember whether old-run-webkit-tests exited early
-
- Fixes <http://webkit.org/b/63342> TestFailures page incorrectly claims test run ran to
- completion after reload
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Instead of just storing the number of failures
- in the PeristentCache, store an object that contains both the number of failures and whether
- old-run-webkit-tests exited early.
-
-2011-06-24 Adam Roben <aroben@apple.com>
-
- Add links to regression ranges in Trac to the TestFailures page
-
- Fixes <http://webkit.org/b/61060> <rdar://problem/9452153> TestFailures page should provide
- links to regression ranges in Trac
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Trac.js: Added.
- (Trac): This new class represents a particular instance of Trac for a single project.
- (Trac.prototype.logURL): Returns the URL that can be used to see the log of the given
- repository path between the two specified revisions
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController): Added new trac argument.
- (ViewController.prototype._displayBuilder): Moved code to create the DOM for the
- passed/failed builds from here...
- (ViewController.prototype._domForRegressionRange): ...to here. Now also includes a link to
- Trac if there are multiple suspect revisions.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- Trac.js and pass a Trac instance for trac.webkit.org to the ViewController.
-
-2011-05-17 Nat Duca <nduca@chromium.org>
-
- Reviewed by James Robinson.
-
- [chromium] Implement CCLayerTreeHost and CCLayerTreeHostImpl portions of threaded compositor
- https://bugs.webkit.org/show_bug.cgi?id=58408
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintInvalidatedRegion):
-
-2011-06-24 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Convert shadow DOM-related tests to use window.internals
- https://bugs.webkit.org/show_bug.cgi?id=61671
-
- Remove ensureShadowRoot, shadowRoot, shadowPseudoId and
- removeShadowRoot from layoutTestController; these have been
- replaced by equivalents in window.internals instead.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-06-24 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Dirk Schulze.
-
- Make run-bindings-tests remove its temporary directories.
- https://bugs.webkit.org/show_bug.cgi?id=63320
-
- * Scripts/run-bindings-tests:
-
-2011-06-23 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- [Chromium] Invalid write inside WebKit::FrameLoaderClientImpl::dispatchDidClearWindowObjectInWorld
- https://bugs.webkit.org/show_bug.cgi?id=63216
-
- Deleted m_webViewHost which looks leaked.
-
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
-
-2011-06-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix WebKit2 GTK build.
-
- * WebKitTestRunner/GNUmakefile.am:
-
-2011-06-23 Ryuan Choi <ryuan.choi@samsung.com>
-
- Unreviewed, add myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-23 Nat Duca <nduca@chromium.org>
-
- Unreviewed, add myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: move http locking code into manager
- https://bugs.webkit.org/show_bug.cgi?id=63103
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-23 Alok Priyadarshi <alokp@chromium.org>
-
- Reviewed by James Robinson.
-
- [chromium] Add support for running layout tests with accelerated rendering
- https://bugs.webkit.org/show_bug.cgi?id=63274
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Avoid fetching JSON data when possible on TestFailures page to determine if
- old-run-webkit-tests exited early
-
- As of r89610, results.html includes information about whether old-run-webkit-tests exited
- early, so we don't need to look at JSON data to get this information for builds newer than
- that.
-
- Fixes <http://webkit.org/b/63281> TestFailures page fetches build JSON for every build,
- which is slow and limits history to the last build master restart
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype._getFailingTests): Moved code dealing with results.html into a new
- function. If we're dealing with a build that has early-exit information in results.html,
- don't bother fetching JSON data and go straight to parsing results.html. Otherwise first use
- the JSON data to determine if old-run-webkit-tests exited early, and then parse results.html
- (as before).
-
-2011-06-23 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- sheriffbot can no longer restart
- https://bugs.webkit.org/show_bug.cgi?id=63221
-
- Fixed and unit tested.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-06-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] [WebKit2] WebKitTestRunner does not properly load TestNetscapePlugin
- https://bugs.webkit.org/show_bug.cgi?id=63287
-
- Send the path to the TestNetscapePlugin to the WKTR via an environment variable
- so that the plugin loads properly.
-
- * Scripts/old-run-webkit-tests: Pass the appropriate environment variable to WKTR.
- * WebKitTestRunner/gtk/TestControllerGtk.cpp:
- (WTR::getEnvironmentVariableAsUTF8String): Added this helper which abstracts away some
- of the work for getting an environment variable and converting it to UTF-8.
- (WTR::TestController::initializeInjectedBundlePath): Use the helper.
- (WTR::TestController::initializeTestPluginDirectory): Get the path from an environment variable now.
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Record whether old-run-webkit-tests aborted early in results.html
-
- Fixes <http://webkit.org/b/63280> results.html gives no indication of whether
- old-run-webkit-tests stopped running tests early
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (top level): Switched to heredoc syntax for printing the start of results.html for clarity.
- Added a <style> element with some styles for the new message. If we stopped running early,
- put the reason why at the top of results.html.
- (stopRunningTestsEarlyIfNeeded): Store the message we print in the new
- $stoppedRunningEarlyMessage global.
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Cache some of the TestFailures page's data in localStorage
-
- This makes reloading TestFailures much faster. Right now we only store the number of failing
- tests and the list of failing tests for each build. We may choose to store more later, but
- it's easy to run up against quota limits.
-
- Fixes <http://webkit.org/b/61520> TestFailures page should take advantage of LocalStorage
- APIs (or similar) to improve loading performance
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Changed to use the new PersistentCache object.
- (Builder.prototype.startFetchingBuildHistory): Changed to pass whether or not we're still
- fetching data to the callback.
- (Builder.prototype._getFailingTests): Changed to use the new PersistentCache object. We now
- store the tests in the cache just before calling the callback. (The previous code in this
- function relied on being able to modify the tests object after storing it in the cache and
- having the cached version be updated. This worked while it was a non-serialized cache, but
- PersistentCache uses serialization.)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/PersistentCache.js: Added.
- (PersistentCache): This object wraps localStorage. It uses JSON to serialize/deserialize
- values, and stores the date that each value was initially stored along with it. This is
- later used for pruning the cache.
- (PersistentCache.contains): Checks whether the key exists in localStorage.
- (PersistentCache.get): Fetch the string we stored in localStorage and extract the original
- value out of it.
- (PersistentCache.set): Serialize the value, add the date to it, and store it in
- localStorage. If this fails due to quota limits, empty the whole cache and try again.
- (PersistentCache.prune): Delete any cached data that is deemed old enough.
- (PersistentCache._addDateToJSONString): Prepend the current date to the string.
- (PersistentCache._emptyCache): Delete everything from localStorage.
- (PersistentCache._parseDateAndJSONFromString): Split apart the date and the JSON string and
- return them.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Updated for change to callback signature. When
- we finish fetching data, prune the PersistentCache. While I was here I also fixed a bug
- where we'd never show the new bug link for tests for which we couldn't determine a passing
- revision.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pull in
- PersistentCache.js.
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Make finding existing bugs and filing new bugs work on TestFailures even when lots of tests are failing
-
- One bug this fixes is <http://webkit.org/b/61660> New bug links on TestFailures page often
- contain titles that are so long they are rejected by Bugzilla
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js:
- (Bugzilla.prototype.quickSearch): Use fetchResource to POST the search query rather than
- using a query string on the URL. If the search query is very long, using a query string can
- cause the request to be rejected due to the URL being too long. POSTing avoids this issue.
- (Bugzilla.maximumBugTitleLength): Added this constant based on Bugzilla's implementation.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (.new-bug-form): Hide the form that we secretly use to file a new bug.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (fetchResource): Added. Code came from getResource. If we're using a GET request, add the
- query parameters to the URL. Otherwise, send them as the body of the request along with the
- appropriate headers.
- (getResource): Now just calls through to fetchResource.
- (urlEncodedQueryParameters): Added. Moved some code here...
- (addQueryParametersToURL): ...from here.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewAndExistingBugs): Shorten the title to just mention the
- number of failing tests if mentioning all the tests would make the title too long. Improved
- the description for large numbers of failures by listing the tests one-per-line instead of
- just having them be comma-separated, which was hard to read. Use a form to file the new bug
- instead of a link so that we can POST the form data. (Using a URL with a query string can
- result in the URL being too long.) The new bug link now just submits the form.
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Show closed bugs on the TestFailures page in addition to open ones
-
- Fixes <http://webkit.org/b/63194> TestFailures page should show closed bugs, too
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js:
- (Bugzilla.prototype.quickSearch): Added code to extract the bug's status and store it in the
- returned data.
- (Bugzilla.isOpenStatus): New function, returns true if the passed-in status indicates that
- the associated bug is still open.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (addQueryParametersToURL): Add a missing semicolon.
- (Node.prototype.appendChildren): New function, like appendChild but takes an array-like
- object and appends each of the values stored within.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewAndExistingBugs): Prepend 'ALL' to the query so closed
- bugs will be included in the results. Split the returned bugs into two sets: those which are
- open, and those which are closed. Put the open bugs at the top level of the list, and the
- closed bugs in a second level.
-
-2011-06-23 Adam Roben <aroben@apple.com>
-
- Don't count new tests as failures on the TestFailures page
-
- Fixes <http://webkit.org/b/63254> TestFailures page calls new tests "failures", even though
- they aren't
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Don't add the number of new tests to the number
- of failures.
-
-2011-06-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- nrwt: make TestInput objects printable
- https://bugs.webkit.org/show_bug.cgi?id=63225
-
- This makes debugging slighlty easier.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_input.py:
-
-2011-06-22 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy --all errors out because scm_unittest.py can't find module checkout
- https://bugs.webkit.org/show_bug.cgi?id=62943
-
- Remove "from .checkout import Checkout" from scm_unittest.py since it's included
- by Scripts/webkitpy/common/checkout/__init__.py.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2011-06-22 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Mark Rowe.
-
- Add window.internals to WebKit2's WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=61073
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pxbproj:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-06-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make sheriff-bot rollout messages a little nicer
- https://bugs.webkit.org/show_bug.cgi?id=63107
-
- itertools.chain.from_iterable is new in 2.6,
- use itertools.chain(*list) for 2.5 compat.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
-
-2011-06-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Make sheriff-bot robust against exceptions from commands
- https://bugs.webkit.org/show_bug.cgi?id=63211
-
- sheriff-bot was acting strange this afternoon.
- We don't know if this will fix the cause, but
- at least it adds some unit tests and catches
- one possible cause.
-
- * Scripts/webkitpy/tool/bot/sheriffircbot.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-06-22 Mark Rowe <mrowe@apple.com>
-
- Reviewed by David Levin.
-
- <http://webkit.org/b/63212> TestWebKitAPI Xcode project has bogus settings since r86287
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Fix the reference to libgtest.a to
- be relative to the built products directory rather than using a hard-coded path. Remove the
- explicit settings of FRAMEWORK_SEARCH_PATHS, HEADER_SEARCH_PATHS and LIBRARY_SEARCH_PATHS
- as they're all unnecessary. If they were necessary they should be set in the .xcconfig file
- rather than in the .xcodeproj directly.
-
-2011-06-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: remove obsolete port.shut_down_http_server method
- https://bugs.webkit.org/show_bug.cgi?id=59993
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-06-22 Luke Macpherson <macpherson@chromium.org>
-
- Reviewed by Andreas Kling.
-
- Move macpherson from contributor list to committer list.
- https://bugs.webkit.org/show_bug.cgi?id=63179
-
- * Scripts/webkitpy/common/config/committers.py:
- Move macpherson from contributor list to committer list.
-
-2011-06-22 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style should detect returning (Own|Ref)Ptr instead of the Pass*Ptr version.
- https://bugs.webkit.org/show_bug.cgi?id=63204
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added a check for the return value and combined
- with similar code for the parameter checking.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Removed pass_ptr checks from
- those done for single lines since they don't make sense in that case (variable decls look like function decls).
- Removed some redundant comments (one of which was slightly wrong).
- Added checks for the new functionality and minor other test changes.
-
-2011-06-22 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add libsoup to libWebCoreInternals build.
- https://bugs.webkit.org/show_bug.cgi?id=62066
-
- * GNUmakefile.am:
-
-2011-06-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: handle missing httpd cleanly
- https://bugs.webkit.org/show_bug.cgi?id=62027
-
- We had reverted the change in r89414, so this adds it back in
- (modifying check_sys_deps() in port/base.py to check for an
- installed web server).
-
- This change then fixes the change in r89414 to stub out the
- check_sys_deps() in the test port so that the unit tests run correctly.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-06-22 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style should check for invalid uses of RefPtr/OwnPtr as parameters.
- https://bugs.webkit.org/show_bug.cgi?id=63188
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added the check.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests.
-
-2011-06-22 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add a buildbot for testing ENABLE(CSS3_FLEXBOX)
- https://bugs.webkit.org/show_bug.cgi?id=62891
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-06-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt: don't look for http lock when running the test port
- https://bugs.webkit.org/show_bug.cgi?id=63158
-
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-06-22 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Set up plugin tests
- https://bugs.webkit.org/show_bug.cgi?id=63066
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::initializeTestPluginDirectory):
- Use the QTWEBKIT_PLUGIN_PATH environment variable as the path
- of the test plugin like DRT does.
-
-2011-06-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Make sheriff-bot rollout messages a little nicer
- https://bugs.webkit.org/show_bug.cgi?id=63107
-
- It annoyed me this afternoon that I had to convert sheriff-bots "r12345" revisions
- into urls myself. So I have now fixed its "preparing" message to include a url.
-
- I also figured that I should make the messages mention all of the responsible parties
- so that rollouts are never surprises. If you're in the channel and were involved
- in a patch, you will see if someone is using sheriff-bot to rollout a patch.
-
- As part of doing this I also changed (and tested) _parse_args to fail-fast
- when given invalid args.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-06-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- run-webkit-websocketserver fails to stop websocket server
- https://bugs.webkit.org/show_bug.cgi?id=63123
-
- There's a ten-character change in new-run-webkit-websocketserver
- that fixes the actual bug, and then we update the code in
- new-run-webkit-httpd to do the actual stop call, and add more tests
- (refactoring the existing test code so that it is shared).
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/new-run-webkit-websocketserver:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py:
-
-2011-06-22 Adam Roben <aroben@apple.com>
-
- Add links to existing bugs related to failing tests on TestFailures page
-
- I changed the layout of the page a little to make it easier to read with all the new
- information. Passing/failing revisions have been moved down below the list of tests to be
- closer to the existing bugs and the new bug link. And each set of tests and its relevant
- information is in a light gray box.
-
- Fixes <http://webkit.org/b/61665> TestFailures page should link to existing bugs when
- possible
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Bugzilla.js: Added.
- (Bugzilla): This new class represents a single Bugzilla instance.
- (Bugzilla.prototype.quickSearch): Searches Bugzilla using its Quick Search functionality,
- passing the resulting bug titles and URLs to the callback when complete. If called multiple
- times with the same query before the query returns, caches the callbacks so that only one
- query is sent over the wire. When the query completes, all pending callbacks are called.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (#failure-history): Reduce the margin/padding on the top-level list a bit.
- (#failure-history > li): Put each set of tests in a gray box, and indent most information
- inside the box.
- (.test-list): Unindent the list of failing tests so it is visually at the top level.
- (.new-and-existing-bugs): Reduce the space at the bottom of this area so that the bottom of
- each box isn't a big empty space.
- (.existing-bugs-list): Use a smaller text size for existing bugs, since their titles can be
- quite long.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js:
- (addQueryParametersToURL): New function extracted from
- ViewController.prototype._domForNewAndExistingBugs.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController): Take and store an optional Bugzilla instance.
- (ViewController.prototype._displayBuilder): Give the top-level list an id for styling
- purposes and move the list of failing tests above all other information. Only show bug
- information once we've determined the most-recent passing revision for a set of tests. It's
- not that useful to file a new bug before this information has been determined, and searching
- for existing bugs before we've figured out which tests started failing at the same time
- would end up giving you information about a bunch of unrelated tests.
- (ViewController.prototype._domForNewAndExistingBugs): Renamed from _domForNewBugLink. Now
- returns a DocumentFragment instead of an HTMLParagraphElement. If we don't have a Bugzilla
- instance, just returns an empty DocumentFragment. Starts a search for bugs related to the
- failing tests, and adds links to the bugs when the search completes.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Pass a
- Bugzilla instance for bugs.webkit.org to the ViewController.
-
-2011-06-22 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Apply current view settings to newly created views in GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=63142
-
- * GtkLauncher/main.c:
- (createWebViewCb):
-
-2011-06-22 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Use GOption to parse main arguments in GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=63060
-
- Instead of getting the settings from the view, create a new
- settings object not associated with any view so that we can parse
- the command line arguments before creating the view. It will also
- allows to use the same settings for more than one view if we
- eventually support passing more than one uri from the command
- line.
-
- * GtkLauncher/main.c:
- (parseOptionEntryCallback): Make this function static. Also use
- g_ascii_strtoll/g_ascii_strtod to parse int/float values instead
- of atoi/atof to provide better error messages. And always fill the
- error struct when the function fails.
- (getOptionEntriesFromWebKitWebSettings): Use an array of
- GOptionEntry structs instead of a GArray, since that is what
- g_option_group_add_entries() expects and the array size doesn't
- change.
- (addWebSettingsGroupToContext): Helper function to add the
- websettings group to the option context.
- (main): Create the option context to parse command line arguments.
-
-2011-06-22 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Adam Roben.
-
- [GTK] Implement pixel dump support for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=58242
-
- * DumpRenderTree/gtk/GNUmakefile.ImageDiff.am: Added.
- * GNUmakefile.am: Separate out the ImageDiff bits of the GNUmakefile.
- * Scripts/old-run-webkit-tests: Update to add support for the GTK+ port.
- * WebKitTestRunner/GNUmakefile.am: Added Cairo specific files to the build.
- * WebKitTestRunner/TestInvocation.cpp: Moved this code to the platform-independent
- file so that we can share it across platforms.
- (WTR::TestInvocation::compareActualHashToExpectedAndDumpResults):
- * WebKitTestRunner/TestInvocation.h: Updated method list.
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp: Added Cairo implementation.
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Updated to use new helper.
-
-2011-06-22 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r89414.
- http://trac.webkit.org/changeset/89414
- https://bugs.webkit.org/show_bug.cgi?id=63130
-
- It broke webkitpy tests (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-06-22 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Dirk Pranke.
-
- [NRWT] Print error message when there is no httpd present on the system
- https://bugs.webkit.org/show_bug.cgi?id=62027
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
-
-2011-06-21 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
- Fix crashes in new-run-webkit-tests resulting from the
- change to the http_server logic in r89400. Python 2.5
- on Mac 10.5 has some weird error paths.
-
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-06-21 MORITA Hajime <morrita@google.com>
-
- Unreviewed, rolling out r89401 and r89403.
- http://trac.webkit.org/changeset/89401
- http://trac.webkit.org/changeset/89403
- https://bugs.webkit.org/show_bug.cgi?id=62970
-
- Breaks mac build and mistakenly enables the spellcheck API
-
- * Scripts/build-webkit:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2011-06-21 Kent Tamura <tkent@chromium.org>
-
- [Mac] Sort Xcode project files.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2011-06-20 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- Spellcheck API should be build-able.
- https://bugs.webkit.org/show_bug.cgi?id=62970
-
- * Scripts/build-webkit:
-
-2011-06-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: attempt #3 at fixing server startup/shutdown
- https://bugs.webkit.org/show_bug.cgi?id=62829
-
- Attempt yet again to make starting and stopping servers
- reliable. It turns out that apache has races between when the
- ctl process exists and when it writes/removes the pid file.
- This change accounts for the races.
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Added.
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-21 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=63080
- Unit-tests step on test-only bot is broken.
- Removing the step until run-api-tests is fixed.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-20 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by David Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=63017
- "Unit tests" step on bots should provide more information in case of failure.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: added --verbose flag to UnitTests step.
-
-2011-06-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: order shards by name, not number of tests
- https://bugs.webkit.org/show_bug.cgi?id=62753
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-06-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- we should only log the test names to the tests_run.txt files during layout_tests
- https://bugs.webkit.org/show_bug.cgi?id=62751
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue/ews-bots should run run-bindings-tests for every patch
- https://bugs.webkit.org/show_bug.cgi?id=63010
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2011-06-20 Chang Shu <cshu@webkit.org>
-
- Reviewed by Adam Barth.
-
- fast/js/sputnik/Conformance/10_Execution_Contexts/10.2_Entering_An_Execution_Context/10.2.2_Eval_Code tests fail when showModalDialog isn't supported
- https://bugs.webkit.org/show_bug.cgi?id=53676
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2011-06-20 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- buildbots should run run-bindings-tests
- https://bugs.webkit.org/show_bug.cgi?id=63001
-
- run-bindings-tests takes 2.4 seconds on my machine, so
- I expect this will not be noticeable on the bots.
-
- I also removed tiger-specific checks since Tiger is no
- longer a supported platform for webkit.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-20 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix WebKit2 GTK build after r89249.
-
- * GtkLauncher/main.c:
- (main):
-
-2011-06-20 Pavel Feldman <pfeldman@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: remove LayoutTestController::setTimelineProfilingEnabled.
- https://bugs.webkit.org/show_bug.cgi?id=62994
-
- * DumpRenderTree/LayoutTestController.cpp:
- (closeWebInspectorCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-06-20 Lukasz Slachciak <l.slachciak@samsung.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] General mechanism for adjusting WebKitWebSettings in GtkLauncher.
- https://bugs.webkit.org/show_bug.cgi?id=55308
-
- * GtkLauncher/main.c: Added general mechanism for adjusting WebKitWebSettings.
- (parseOptionEntryCallback): Callback for parsing option entry.
- (getOptionEntriesFromWebKitWebSettings): Basing on the WebKitWebSettings properties prepare
- list of option entries.
- (transformStringToBoolean): Transform function for boolean convertion used by parseOptionEntryCallback.
- (transformStringToInt): Transform function for int convertion used by parseOptionEntryCallback.
- (transformStringToFloat): Transform function for float convertion used by parseOptionEntryCallback.
- (parseAdditionalOptions): Help function parsing additional commandline options.
- (main): Added call to parseAdditionalOptions.
-
-2011-06-20 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] [WK2] Compile error in ActivateFontsQt.cpp on Mac
- https://bugs.webkit.org/show_bug.cgi?id=62869
-
- Add QFont include to fix "incomlete type QFont" error.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2011-06-19 Adam Bergkvist <adam.bergkvist@ericsson.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Enable Media Stream feature and make it default on
- https://bugs.webkit.org/show_bug.cgi?id=60394
-
- * Scripts/build-webkit:
-
-2011-06-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r89198.
- http://trac.webkit.org/changeset/89198
- https://bugs.webkit.org/show_bug.cgi?id=62953
-
- Chromium breakage on "Linux Tests" (Requested by senorblanco
- on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-06-18 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Git.push_local_commits_to_server() should use passed username and
- password when we don't have cached credentials
- https://bugs.webkit.org/show_bug.cgi?id=62941
-
- Fixes a issue where Git.push_local_commits_to_server() would always look
- for cached credentials regardless of whether a username and password
- were passed as arguments. Instead, if given both a username and password
- then we shouldn't look for cached credentials (since we were explicitly given
- credentials).
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py: Added unit tests.
-
-2011-06-18 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Eric Seidel.
-
- Remove run-javascriptcore-tests --skip-build option; Instead add --build/no-build options
- https://bugs.webkit.org/show_bug.cgi?id=62767
-
- Part 3 of 3
-
- Remove the command-line option --skip-build now that the master BuildBot has been restarted
- following <http://trac.webkit.org/changeset/89138>.
-
- Instead, specify --no-build to get analogous functionality.
-
- * Scripts/run-javascriptcore-tests:
-
-2011-06-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: fix test sorting
- https://bugs.webkit.org/show_bug.cgi?id=58691
-
- This changes the sorting to use a "natural" sort order such that
- foo2.html sorts before foo13.html, and sorts the tests so
- that all the tests in a directory are run before any test in a
- subdirectory.
-
- This change also adds a split() method to the filesystem since
- that is needed to cluster files into a directory otherwise.
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py:
-
-2011-06-18 Evan Martin <evan@chromium.org>
-
- Reviewed by Darin Adler.
-
- Compiler warning in double->int conversion in TestNetscapePlugIn
- https://bugs.webkit.org/show_bug.cgi?id=51554
-
- This code is providing a JS API for removing a property by numeric ID.
- We get it from JS as a double, and must convert it to an int before using it.
-
- Test: LayoutTests/plugins/npruntime/remove-property.html
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp:
- (NPRuntimeRemoveProperty::TestObject::invoke):
-
-2011-06-18 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Don't exit webkit-patch when running on Win32 python
- https://bugs.webkit.org/show_bug.cgi?id=55811
-
- Most of the basic actions work in the meantime,
- so let people play with in on Win32 now.
-
- * Scripts/webkit-patch:
-
-2011-06-18 Alice Boxhall <aboxhall@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Convert json_results_generator.py to output version 4 JSON.
- https://bugs.webkit.org/show_bug.cgi?id=60869
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-06-18 Berend-Jan Wever <skylined@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Some names with spaces are incorrectly reported as not containing spaces
- while running prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=55572
-
- * Scripts/VCSUtils.pm: Updated CHANGE_LOG_NAME check for spaces to allow
- non-alphanumeric characters in names.
-
-2011-06-18 Michael Saboff <msaboff@apple.com>
-
- Reviewed by Eric Seidel.
-
- Enhancement: New Script to Format malloc_history output as tree
- https://bugs.webkit.org/show_bug.cgi?id=56378
-
- New script to process malloc_history output to tree format.
-
- * Scripts/malloc-tree: Added.
-
-2011-06-17 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Daniel Bates.
-
- https://bugs.webkit.org/show_bug.cgi?id=62918
- Pass configuration to UnitTests step in master.cfg
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-17 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Eric Seidel.
-
- [EFL] Add Evas-based ImageDiff implementation.
- https://bugs.webkit.org/show_bug.cgi?id=61942
-
- Build system changes will be performed as soon as the complete
- DumpRenderTree implementation is upstreamed.
-
- * DumpRenderTree/efl/ImageDiff.cpp: Added.
- (pixelFromImageData):
- (differenceImageFromDifferenceBuffer):
- (computeDistanceBetweenPixelComponents):
- (calculatePixelDifference):
- (calculateDifference):
- (getTemporaryFile):
- (printImage):
- (printImageDifferences):
- (resizeEcoreEvasIfNeeded):
- (readImageFromStdin):
- (parseCommandLineOptions):
- (shutdownEfl):
- (abortWithErrorMessage):
- (initEfl):
- (main):
-
-2011-06-17 Tony Chang <tony@chromium.org>
-
- Reviewed by Dirk Pranke.
-
- [chromium] force rebaseline-chromium-webkit-tests to use the chromium port
- https://bugs.webkit.org/show_bug.cgi?id=62907
-
- This fixes a bug where the ImageDiff on the user's machine doesn't
- match the logic used on the Chromium buildbots. This has the downside
- of requiring that the Chromium ImageDiff is built, but it turns out
- that even with --tolerance 0, the CG ImageDiff will allow small pixel
- differences through.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-06-17 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build correction.
-
- * DumpRenderTree/win/DumpRenderTreeCairo.vsprops:
- Update WinCairo property sheet to link against the Cairo DLL,
- now that we are using a more recent Cairo build.
-
-2011-06-17 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Brian Weinstein.
-
- Create a simple example of using the COM-based C++ listeners.
- A new onclick event is attached (via C++) to the WebKit logo
- in the default test pattern displayed on startup. Clicking on
- the logo causes a message box to be displayed.
- https://bugs.webkit.org/show_bug.cgi?id=61885
-
- * WinLauncher/DOMDefaultImpl.h: Added. Stub implementation of
- the WebScriptObject and DOMEventListener.
- * WinLauncher/WinLauncher.cpp:
- (SimpleEventListener::SimpleEventListener): Example implementation
- of a simple DOM event listener.
- (SimpleEventListener::handleEvent):
- (WinLauncherWebHost::didFinishLoadForFrame): Added implementation
- to bind a C++ method to the 'onclick' event for the WebKit logo.
- (_tWinMain):
- * WinLauncher/WinLauncher.h:
- * WinLauncher/WinLauncher.vcproj: Add new DOMDefaultImpl.h file.
-
-2011-06-17 Chang Shu <cshu@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] [WK2] Support undo/redo in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=62809
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
-
-2011-06-17 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Eric Seidel.
-
- Remove run-javascriptcore-tests --skip-build option; Instead add --build/no-build options
- https://bugs.webkit.org/show_bug.cgi?id=62767
-
- Part 2 of 3
-
- Update the BuildBot master.cfg to use the new --no-build run-javascriptcore-tests
- command line option instead of --skip-build.
-
- We'll remove --skip-build from run-javascriptcore-test in a follow up patch once the
- master buildbot picks up the change.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-17 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Eric Seidel.
-
- Remove run-javascriptcore-tests --skip-build option; Instead add --build/no-build options
- https://bugs.webkit.org/show_bug.cgi?id=62767
-
- Part 1 of 3
-
- Towards renaming the option --skip-build to --no-build. Add --build/--no-build options to
- run-javascriptcore-tests. Also, add a remark about these options to the usage message
- printed by run-javascriptcore-tests.
-
- We'll remove --skip-build in a follow up patch once the master buildbot picks up the changes.
-
- * Scripts/run-javascriptcore-tests: Additionally, remove unnecessary initialization
- of $showHelp.
-
-2011-06-17 Joone Hur <joone.hur@collabora.co.uk>
-
- Reviewed by Martin Robinson.
-
- [GTK] Replace GdkRectangle by cairo_rectangle_int_t
- https://bugs.webkit.org/show_bug.cgi?id=60687
-
- Replace GdkRectangle by cairo_rectangle_int_t.
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp: Replace GdkRectangle by cairo_rectangle_int_t.
- (createBitmapContextFromWebView):
- * DumpRenderTree/gtk/TextInputController.cpp: Ditto.
- (firstRectForCharacterRangeCallback):
-
-2011-06-16 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by David Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=62603
- Run run-api-tests on bots in debug mode.
- Release mode is disabled due to https://bugs.webkit.org/show_bug.cgi?id=61812.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-16 Leandro Pereira <leandro@profusion.mobi>
-
- Reviewed by Eric Seidel.
-
- [EFL] DumpRenderTree: Add GCController, PixelDumpSupport and
- WorkQueueItem.
- They will be plugged into the build system once the EFL's DRT is
- fully upstreamed.
- https://bugs.webkit.org/show_bug.cgi?id=61958
-
- * DumpRenderTree/efl: Added.
- * DumpRenderTree/efl/GCControllerEfl.cpp: Added.
- (GCController::collect):
- (GCController::collectOnAlternateThread):
- (GCController::getJSObjectCount):
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp: Added.
- (createBitmapContextFromWebView):
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp: Added.
- (LoadItem::invoke):
- (LoadHTMLStringItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- * DumpRenderTree/efl/WorkQueueItemEfl.h: Added.
- (WorkQueueItem::~WorkQueueItem):
- (LoadItem::LoadItem):
- (LoadHTMLStringItem::LoadHTMLStringItem):
- (ScriptItem::ScriptItem):
- (LoadingScriptItem::LoadingScriptItem):
- (LoadingScriptItem::invoke):
- (NonLoadingScriptItem::NonLoadingScriptItem):
- (NonLoadingScriptItem::invoke):
- (BackForwardItem::BackForwardItem):
- (BackItem::BackItem):
- (ForwardItem::ForwardItem):
-
-2011-06-16 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, make sure the waf build checks the webKitBranchBuild
- preference like the perl scripts do.
-
- * waf/build/build_utils.py:
- * waf/build/settings.py:
-
-2011-06-16 Tommy Widenflycht <tommyw@google.com>
-
- Reviewed by Tony Gentilcore.
-
- MediaStream API: Runtime enabled features
- https://bugs.webkit.org/show_bug.cgi?id=62798
-
- Add the WebRuntimeFeatures API for Media Streams and enable the feature by default in DumpRenderTree.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-06-16 Torsten Kurbad <gentoo@tk-webart.de>
-
- Reviewed by Eric Seidel.
-
- Add support for sys.platform == 'linux3' by relaxing
- conditional statements and/or extending lookup dicts.
- This way, Linux kernels >=3.0-rc1 get supported in the
- build process.
- https://bugs.webkit.org/show_bug.cgi?id=62730
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/file_lock.py:
- * Scripts/webkitpy/common/system/path_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-06-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r88796.
- http://trac.webkit.org/changeset/88796
- https://bugs.webkit.org/show_bug.cgi?id=62790
-
- It made fast/dom/nodesFromRect-basic.html time out on Qt,
- 64-bit, debug mode (Requested by Ossy on #webkit).
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::nodesFromRect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/PlainTextControllerQt.cpp:
- (PlainTextController::plainText):
- * DumpRenderTree/qt/PlainTextControllerQt.h:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Revert the patches in r88995 and r88999; the http servers don't
- seem to be shutting down reliably.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Add some debugging messages to triage problems introduced in
- r88995.
-
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: should clean up stale server processes from a previous run
- https://bugs.webkit.org/show_bug.cgi?id=62615
-
- This change fixes cases where NRWT might start a server and then
- exit, leaving the server still running. Now NRWT should detect
- this case and clean up on the next run, without shutting down
- any processes it didn't start.
-
- This change also fixes a bug in executive.kill_process on UNIX
- where zombies weren't being handled properly.
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: fix http, websocket server startup, shutdown
- https://bugs.webkit.org/show_bug.cgi?id=62180
-
- This change refactors all of the server-related code to
- have consistent semantics. It pushes the start()/stop()
- logic into the base class and adds four much smaller routines
- for specialization:
- _prepare_config() - for optionally writing config files etc.
- to disk prior to starting the server
- _remove_stale_log_files()
- _spawn_process() - the actual launch of the subprocess
- _cleanup_after_stop() - and custom cleanup code
-
- Prior to this change the three server implementations were
- fairly inconsistent, leading to lots of weirdness on the bots
- with servers being left around, etc.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- webkitpy: clean up code prior to functional changes for server startup/shutdown
- https://bugs.webkit.org/show_bug.cgi?id=62256
-
- This patch does a bunch of minor cleanup of the code, but there
- should be no functional changes except that all of the modules
- will now use the same exception type. Other changes include
- removing unused code paths and functions, pushing 'name' and
- 'pid_file' into the base class of the server objects, and using
- the Filesystem object instead of the codecs, tempfile, and
- shutils modules.
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- webkitpy: add integration tests for new-run-webkit-httpd, stop calling shut_down_http_server
- https://bugs.webkit.org/show_bug.cgi?id=62251
-
- shut_down_http_server() was a total hack that was only used by
- new-run-webkit-httpd, so I've moved the code there and switched
- to using executive.kill_process() for the common case. The
- method itself will be removed in the patch on bug 59993.
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Added.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
-
- Fix test-webkitpy failure introduced in r88986.
-
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-06-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- NRWT: doesn't support webarchives, has stale skipping logic.
- https://bugs.webkit.org/show_bug.cgi?id=58293
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-15 Jeremy Orlow <jorlow@webkit.org>
-
- Change my email to @webkit.org
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-15 Nikolas Zimmermann <nzimmermann@rim.com>
-
- Reviewed by David Hyatt.
-
- CSS 2.1: Support replaced elements with relative intrinsic sizes
- https://bugs.webkit.org/show_bug.cgi?id=15849
-
- CSS 2.1 failure: html4/replaced-intrinsic-ratio-001
- https://bugs.webkit.org/show_bug.cgi?id=53099
-
- Recognize *.htm tests in the old & new DRT implementation, needed for the vanilla css2.1 html4 tests.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
-
-2011-06-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add a statusbar to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=62634
-
- It shows the url of the current hovered link.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowConstructed): Create the GtkSatusbar.
- (mouseDidMoveOverElement): Update statusbar text.
- (browserWindowUIClientInit): Add implementation for
- mouseDidMoveOverElement().
- * MiniBrowser/gtk/GNUmakefile.am: Add new files to compilation.
- * MiniBrowser/gtk/WebBundle/WebBundleMain.c: Added.
- (mouseDidMoveOverElement): Pass the url of the current hovered
- link to the UI process.
- (didCreatePage): Set the UI client adding an implementation for
- mouseDidMoveOverElement().
- (WKBundleInitialize):
- * MiniBrowser/gtk/main.c:
- (createWKContextWithInjectedBundle): Create a global context with
- the injected bundle.
- (loadURI): Use the global context.
- (main):
-
-2011-06-14 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- https://bugs.webkit.org/show_bug.cgi?id=62495
- Bug 62495 - combine windows and mac kill-old-processes script
- Add a platform agnostic script. Remove the recently added mac flavor.
- Note: Leaving the windows one alone, since it is currently used by the WebKit bots.
-
- * BuildSlaveSupport/kill-old-processes: Added.
- * BuildSlaveSupport/mac: Removed.
- * BuildSlaveSupport/mac/kill-old-processes: Removed.
-
-2011-06-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: handle worker exceptions cleanly
- https://bugs.webkit.org/show_bug.cgi?id=62614
-
- This change modifiers new-run-webkit-tests to handle exceptions
- raised by worker threads better, by:
- - capturing the worker's stack and logging it in the manager
- - propagating the worker's exception in the caller correctly
- - attempting to cancel the workers and clean up even when
- we get an unexpected exception
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-06-14 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] fast/dom/HTMLScriptElement/nested-execution.html failed
- https://bugs.webkit.org/show_bug.cgi?id=62227
-
- QtWebkit does not yet support different CacheModels. This change will
- expose setCacheModel() with a stub implementation, which is enough to pass the LayoutTest.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setCacheModel):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-06-14 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] tst_QWebFrame::overloadedSlots() fails
- https://bugs.webkit.org/show_bug.cgi?id=37319
-
- Since we don't implictly convert 'document' object to QWebElement
- in metacalls anymore, change the controller to expect QVariantMap instead.
-
- The method plainText() was updated to use QVariantMap as well to let the bridge
- do the conversion directly for us.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::nodesFromRect):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/PlainTextControllerQt.cpp:
- (PlainTextController::plainText):
- * DumpRenderTree/qt/PlainTextControllerQt.h:
-
-2011-06-14 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Remove dead code in DumpRenderTree/TestNetscapePlugIn/main.cpp
- https://bugs.webkit.org/show_bug.cgi?id=62630
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New): remove dead variable 'forceCarbon'
-
-2011-06-13 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] Fix a WebKitDriver so that it returns an actual hash value if DRT returns that.
- https://bugs.webkit.org/show_bug.cgi?id=59188
-
- A current WebKitDriver doesn't try to return an actual hash value if DRT does not return an image.
- WebKitDriver should always return an actual hash value if DRT returns that.
-
- No tests since I'll add sample reftests to make sure mismatch reftests work later,
- which should be in a separate patch.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-13 Kent Tamura <tkent@chromium.org>
-
- [Chromium-win] Fix two wrong assertions exposed by r88757.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- (WebThemeEngineDRTWin::paintTrackbar):
-
-2011-06-13 Alexey Proskuryakov <ap@apple.com>
-
- Added an updated e-mail address for Matt Lilek, to make Bugzilla autocomplete
- and commit queue happy.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-13 Chris Rogers <crogers@google.com>
-
- Unreviewed build fix.
-
- Build fix to chromium DRT until we can rebaseline some tests
- https://bugs.webkit.org/show_bug.cgi?id=62608
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-06-13 Chris Rogers <crogers@google.com>
-
- Reviewed by Dirk Pranke.
-
- Add Web Audio support to chromium DRT
- https://bugs.webkit.org/show_bug.cgi?id=62306
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::setEncodedAudioData):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::encodedAudioData):
- (LayoutTestController::shouldDumpAsAudio):
- (LayoutTestController::setShouldDumpAsAudio):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter::handleAudioHeader):
- (TestShellPrinter::handleAudioHeader):
- * DumpRenderTree/chromium/TestEventPrinter.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::dump):
-
-2011-06-13 Jaehun Lim <ljaehun.lim@samsung.com>
-
- Reviewed by Eric Seidel.
-
- [EFL] Add load error handler to EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=62347
-
- Add a handler function of "load,error" to EWebLauncher.
- EWebLauncher now displays a simple error page on load errors.
-
- * EWebLauncher/main.c:
- (on_load_error):
- (browserCreate):
-
-2011-06-13 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] [Qt] Eliminate duplicate TestNetscapePlugin implementation
- https://bugs.webkit.org/show_bug.cgi?id=62385
-
- Remove duplicate TestNetscapePlugIn implementation. Having two copies
- of this code makes keeping it in sync much more difficult. The files are
- almost identical and this change ports the X11 changes to main.cpp.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New): Do not set the plugin as windowless always. Doing this breaks
- some results on Qt and this seems to be unnecessary for the moment.
- (keyEventToChar): Added this helper which converts a X11 keycode into a char.
- (handleEventX11): Use the handler to properly convert the keycode. Do not print
- adjustCursorEvent output. The tests currently do not trigger this for Cocoa and thus
- it should not be in the results.
- (NPP_GetValue): Properly handle NPPVpluginNeedsXEmbed and make it clearer why the
- XP_UNIX block is first by guarding against using a null instance.
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: Update source list add
- the XP_UNIX define for Linux.
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: Removed.
- * GNUmakefile.am: Update source list.
-
-2011-06-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r88671.
- http://trac.webkit.org/changeset/88671
- https://bugs.webkit.org/show_bug.cgi?id=62591
-
- "didn't work" (Requested by dpranke on #webkit).
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-13 Nate Chapin <japhet@chromium.org>
-
- Reviewed by Darin Fisher.
-
- New test method on TestNetscapePlugin for https://bugs.webkit.org/show_bug.cgi?id=61482.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
-
-2011-06-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- webkitpy: add integration tests for new-run-webkit-httpd, stop calling shut_down_http_server
- https://bugs.webkit.org/show_bug.cgi?id=62251
-
- shut_down_http_server() was a total hack that was only used by
- new-run-webkit-httpd, so I've moved the code there and switched
- to using executive.kill_process() for the common case. The
- method itself will be removed in the patch on bug 59993.
-
- * Scripts/new-run-webkit-httpd:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_integrationtest.py: Added.
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-06-13 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- rename ENABLE_NEW_FLEXBOX to ENABLE_CSS3_FLEXBOX
- https://bugs.webkit.org/show_bug.cgi?id=62578
-
- * Scripts/build-webkit:
-
-2011-06-13 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- rename ENABLE_FLEXBOX to ENABLE_NEW_FLEXBOX
- https://bugs.webkit.org/show_bug.cgi?id=62545
-
- * Scripts/build-webkit:
-
-2011-06-13 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Export an API similar to WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=57820
-
- Build GtkLauncher2 for WebKit2. It's actually the same GtkLauncher
- code, but linking to libwebkit2gtk.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c:
- (createBrowser):
- (main):
-
-2011-06-12 MORITA Hajime <morrita@google.com>
-
- Unreviewed, rolling out r88625.
- http://trac.webkit.org/changeset/88625
- https://bugs.webkit.org/show_bug.cgi?id=61073
-
- Breaks SL Webkit2 Tests
-
- * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-06-12 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- [Qt] LayoutTestController needs setTextDirection implementation
- https://bugs.webkit.org/show_bug.cgi?id=62442
-
- Implements LayoutController.setTextDirection.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setTextDirection):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-06-12 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Hajime Morita.
-
- Add window.internals to WebKit2's WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=61073
-
- Test: fast/harness/internals-object.html
-
- * WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops:
- * WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didClearWindowForFrame): initialize window.internals
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-06-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r88616.
- http://trac.webkit.org/changeset/88616
- https://bugs.webkit.org/show_bug.cgi?id=62517
-
- It broke editing/text-iterator/findString.html (Requested by
- tonikitoo on #webkit).
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-06-12 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Antonio Gomes.
-
- [Qt] LayoutTestController needs setTextDirection implementation
- https://bugs.webkit.org/show_bug.cgi?id=62442
-
- Implements LayoutController.setTextDirection.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setTextDirection):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-06-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: 'images' links on results.html don't work
- https://bugs.webkit.org/show_bug.cgi?id=62194
-
- Use relative path when generating images-diffs.html
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- Added _output_testname.
-
-2011-06-10 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Script to kill old processes on Mac.
- This matches the windows version.
- https://bugs.webkit.org/show_bug.cgi?id=62479
-
- * BuildSlaveSupport/mac: Added.
- * BuildSlaveSupport/mac/kill-old-processes: Added.
-
-2011-06-10 Adam Barth <abarth@webkit.org>
-
- Reviewed by James Robinson.
-
- When sheriffbot reports failures on IRC instead of saying "(and more..)" it should say the number of tests that are failing
- https://bugs.webkit.org/show_bug.cgi?id=62489
-
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2011-06-10 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- add a compile guard ENABLE(FLEXBOX)
- https://bugs.webkit.org/show_bug.cgi?id=62049
-
- * Scripts/build-webkit:
-
-2011-06-10 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Dimitri Glazkov.
-
- <rdar://problem/9562114> Fix DumpRenderTree build for production configuration.
-
- Ensure that DumpRenderTree can find libWebCoreTestSupport.dylib and the associated
- header file.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
-
-2011-06-09 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed rolling out r88471, because it broke plugin tests on Qt.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventX11):
- (NPP_GetValue):
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: Added.
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_destroy_instance):
- (webkit_test_plugin_set_window):
- (executeScript):
- (webkit_test_plugin_new_stream):
- (webkit_test_plugin_destroy_stream):
- (webkit_test_plugin_stream_as_file):
- (webkit_test_plugin_write_ready):
- (webkit_test_plugin_write):
- (webkit_test_plugin_print):
- (keyEventToChar):
- (webkit_test_plugin_handle_event):
- (webkit_test_plugin_url_notify):
- (webkit_test_plugin_get_value):
- (webkit_test_plugin_set_value):
- (NP_GetMIMEDescription):
- (NP_Initialize):
- (NP_Shutdown):
- (NP_GetValue):
- * GNUmakefile.am:
-
-2011-06-09 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] Implement the next bit of the TextInputController (hasMarkedText and markedRange)
- https://bugs.webkit.org/show_bug.cgi?id=55603
-
- Add callbacks to support hasMarkedText and markedRange and also clean up existing
- TextInputController support.
-
- * DumpRenderTree/gtk/TextInputController.cpp:
- (setMarkedTextCallback): Accept parameters in terms of start and length, instead
- of start and end. This matches the other ports. Do not use GLib style early returns.
- (hasMarkedTextCallback): Added.
- (markedRangeCallback): Added.
- (insertTextCallback): Cleanup as described above.
- (unmarkTextCallback): Cleanup as described above.
- (firstRectForCharacterRangeCallback): Cleanup as described above.
- (selectedRangeCallback): Cleanup as described above.
-
-2011-06-09 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: support webaudio in chromium driver
- https://bugs.webkit.org/show_bug.cgi?id=62226
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-06-09 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Added a test for Vector::reverse()
- https://bugs.webkit.org/show_bug.cgi?id=62393
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/VectorReverse.cpp: Added.
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-06-09 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Andreas Kling.
-
- [GTK] [Qt] Eliminate duplicate TestNetscapePlugin implementation
- https://bugs.webkit.org/show_bug.cgi?id=62385
-
- Remove duplicate TestNetscapePlugIn implementation. Having two copies
- of this code makes keeping it in sync much more difficult. The files are
- almost identical and this change ports the X11 changes to main.cpp.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (keyEventToChar): Added this helper which converts a X11 keycode into a char.
- (handleEventX11): Use the handler to properly convert the keycode. Do not print
- adjustCursorEvent output. The tests currently do not trigger this for Cocoa and thus
- it should not be in the results.
- (NPP_GetValue): Properly handle NPPVpluginNeedsXEmbed.
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro: Update source list.
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp: Removed.
- * GNUmakefile.am: Update source list.
-
-2011-06-09 Noel Gordon <noel.gordon@gmail.com>
-
- Reviewed by Tony Chang.
-
- Test plugin should support event logging on the windows port.
- https://bugs.webkit.org/show_bug.cgi?id=61721
-
- The WebKit win port interprets a 0 return from plugin NPP_HandleEvent()
- calls to mean the plugin handled the event.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventWin): Return 0 for each event on windows.
-
-2011-06-09 Chang Shu <cshu@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] [WK2] Many editing tests failed on missing shouldBeginEditingInDOMRange:range printout
- https://bugs.webkit.org/show_bug.cgi?id=62381
-
- Activate QGraphicsScene and setFocus on QGraphicsItem to make sure the view has the focus.
- QWKPagePrivate::isViewFocused() will check it later.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-06-09 Robert Hogan <robert@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Teach Qt about window.internals
- https://bugs.webkit.org/show_bug.cgi?id=61074
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::initJSObjects):
-
-2011-06-09 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Disable running layout tests on Mac EWS bots (and fix cr-linux bots to run them again)
- https://bugs.webkit.org/show_bug.cgi?id=62362
-
- The mac bots are failing inspector tests. We don't know why yet.
- So for now, turning run-webkit-tests off for the mac-ews.
-
- Also noticed that due to the wrong variable name the cr-linux
- bots weren't running tests!
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-06-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonac.
-
- [Qt][WK2] Canvas tests make css2.1 ones failing
- https://bugs.webkit.org/show_bug.cgi?id=53427
-
- Adding a workaround for this issue by mimicing the behaviour of DumpRenderTree.
- Since the Qt port should eventually go to QRawFont, this issue will be resolved
- in the future. Both clearMemoryCaches() and removeAllApplicationFonts() are
- needed for the workaround.
-
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::platformInitialize):
-
-2011-06-09 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Chris Fleizach.
-
- [GTK] Provide a way in DRT to check the platform name
- https://bugs.webkit.org/show_bug.cgi?id=56855
-
- Patch for adding 'platformName' static property to DRT's
- LayoutController and provide platform specific implementations.
-
- In principle, this feature will be only of interest for writing
- accessibility tests, so that's why it's only implemented in the
- Mac, Gtk and Win platforms.
-
- * DumpRenderTree/LayoutTestController.h: New method platformName().
- * DumpRenderTree/LayoutTestController.cpp:
- (getPlatformNameCallback): New callback for 'platformName'.
- (LayoutTestController::staticValues): New static property.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::platformName): Implemented.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::platformName): Implemented.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::platformName): Implemented.
-
-2011-06-08 Mike Lawther <mikelawther@chromium.org>
-
- Reviewed by James Robinson.
-
- Add mikelawther to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=62354
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-08 Kent Tamura <tkent@chromium.org>
-
- [Chromium] Fix a typo.
-
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
- (WebThemeControlDRTWin::draw):
-
-2011-06-08 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Hajime Morita.
-
- [Chromium] Support vertical sliders in Windows DRT
- https://bugs.webkit.org/show_bug.cgi?id=62352
-
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
- (WebThemeControlDRTWin::draw):
- Paint VerticalSliderThumbType and VerticalSliderTrackType.
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h:
- Add VerticalSliderTrackType and VerticalSliderThumbType.
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- (WebThemeEngineDRTWin::paintTrackbar):
- Convert Windows identifiers to the internal identifiers for vertical sliders.
-
-2011-06-08 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- add a short-flag for --experimental-fully-parallel
- https://bugs.webkit.org/show_bug.cgi?id=62321
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-06-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: don't turn the tree red when there are new passes
- https://bugs.webkit.org/show_bug.cgi?id=62311
-
- Look for "new passes" instead of "passed unexpectedly" in evaluateCommand
- to match commandComplete.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-08 Tom Hudson <tomhudson@google.com>
-
- Reviewed by Mihai Parparita.
-
- Allow sorting in RebaselineServer based on 'metric' field in unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=60964
-
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/index.html:
- Add 'Sort tests by metric' link.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.js:
- (disableSorting): Activate 'Sort tests by metric' link.
- (enableSorting): Deactivate 'Sort tests by metric' link.
- (selectDirectory): Call enableSorting()/disableSorting() depending
- on currently selected failure type, and sort tests if requested.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver/main.css:
- New .disabled-control class for deactivated links.
-
-2011-06-08 Tom Sepez <tsepez@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add web permissions callbacks for mixed content blocking.
- https://bugs.webkit.org/show_bug.cgi?id=61946
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setAllowDisplayOfInsecureContent):
- (LayoutTestController::setAllowRunningOfInsecureContent):
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPermissions.cpp:
- (WebPermissions::allowDisplayingInsecureContent):
- (WebPermissions::allowRunningInsecureContent):
- (WebPermissions::setDisplayingInsecureContentAllowed):
- (WebPermissions::setRunningInsecureContentAllowed):
- (WebPermissions::reset):
- * DumpRenderTree/chromium/WebPermissions.h:
-
-2011-06-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- webkitpy: fix typo causing us to skip the port unit tests in chromium_linux
- https://bugs.webkit.org/show_bug.cgi?id=62259
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
-
-2011-06-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: master.cfg errors when nrwt successfully runs test
- https://bugs.webkit.org/show_bug.cgi?id=62303
-
- Access self.incorrectLayoutLines instead of incorrectLayoutLines in evaluateCommand.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-08 Greg Simon <gregsimon@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Control Indexeddb backends from LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=61000
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setOverrideIndexedDBBackingStore):
- (LayoutTestController::clearAllDatabases):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-06-08 Andreas Kling <kling@webkit.org>
-
- Add Pierre Rossi to contributors list for EZ-CC.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-08 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Andreas Kling.
-
- Add Ilya Sherman to list of committers
- https://bugs.webkit.org/show_bug.cgi?id=62270
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-07 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: Bot master should print useful information on waterfall/console for nrwt
- https://bugs.webkit.org/show_bug.cgi?id=62178
-
- Added commandComplete and evaluateCommand for NewRunWebKitTests class
- to parse new-run-webkit-tests' results.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-06-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkitpy: add a popen() call to executive
- https://bugs.webkit.org/show_bug.cgi?id=62179
-
- This change adds a popen() wrapper call to the Executive object.
- This will allow other webkitpy scripts that currently call
- subprocess directly to use Executive, instead.
-
- No additional tests are necessary (the existing tests cover the code).
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-06-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Remove repeated IPC traffic from SetRenderTreeSize message
- https://bugs.webkit.org/show_bug.cgi?id=62244
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- Add stub for didLayoutForFrame.
-
-2011-06-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- rebaseline-chromium-webkit-tests: fix baselining order for linux, linux_x86_64
- https://bugs.webkit.org/show_bug.cgi?id=62241
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-06-07 Adam Barth <abarth@webkit.org>
-
- Rubber-stamped by Eric Seidel.
-
- Enable tests on the mac-ews
-
- When we bring the mac-ews back up, we're going to try running tests!
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-06-07 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by David Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=62215
- Allow comparisons with 0 in LIKELY and UNLIKELY macros.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-06-07 Nico Weber <thakis@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] -Wdelete-non-virtual-dtor pass for DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=62210
-
- The change to TestEventPrinter fixes a latent bug, because
- objects are deleted through the TestEventPrinter type, but none
- of the subclasses have destructors or non-POD members.
-
- The changes to NotificationPresenter and WebViewHost do _not_ to fix a
- real bug, they just make clang's -Wdelete-non-virtual-dtor happy. As
- discussed at http://codereview.chromium.org/7094005/, we prefer making
- leaf class destructors virtual over making the leaf classes final.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::~NotificationPresenter):
- * DumpRenderTree/chromium/NotificationPresenter.h:
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::~TestEventPrinter):
- * DumpRenderTree/chromium/TestEventPrinter.h:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-06-06 Ryosuke Niwa <rniwa@webkit.org>
-
- Reviewed by Dirk Pranke.
-
- [chromium] Chromium bots on build.webkit.org don't upload results.html
- https://bugs.webkit.org/show_bug.cgi?id=61961
-
- Don't fix the path on chromium port erroneously.
-
- * BuildSlaveSupport/test-result-archive:
-
-2011-06-06 Martin Robinson <mrobinson@igalia.com>
-
- Fix the GTK+ build by ensuring that the autogenerated sources
- necessary for libWebCoreInternals are recorded in a predeclared
- variable before assigning to BUILT_SOURCES.
-
- * GNUmakefile.am: Predeclare libwebcoreinternals_built_sources.
-
-2011-06-06 Yong Li <yoli@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=62097
- Fix the problem that integral bitfield check incorrectly barked at ?: expressions.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-06-06 Xan Lopez <xlopez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Enable feature/symbol detection in NWRT/GTK
- https://bugs.webkit.org/show_bug.cgi?id=62136
-
- Disable feature detection through DRT, since we don't support it,
- and set the libwebcore patch correctly so that symbol detection
- through 'nm' works.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
-
-2011-06-06 Shishir Agrawal <shishir@chromium.org>
-
- Reviewed by Tony Gentilcore.
-
- Add a "prerender" state for page visibility.
- https://bugs.webkit.org/show_bug.cgi?id=62062
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setPageVisibility):
-
-2011-06-06 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Implement download feature for QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61865
-
- Buildfix for --minimal and CONFIG+=qt_minimal build after r88161.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- * QtTestBrowser/launcherwindow.h:
-
-2011-06-06 Barát Tibor <Barat.Tibor@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement download feature for QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61865
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::downloadRequest):
- (LauncherWindow::fileDownloadFinished):
- * QtTestBrowser/launcherwindow.h:
-
-2011-06-04 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Make DumpRenderTree initialize window.internals.
- https://bugs.webkit.org/show_bug.cgi?id=61076
-
- * DumpRenderTree/win/DumpRenderTreeCommon.vsprops: link WebCoreTestSupport.
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld):
-
-2011-06-06 Alexandru Chiculita <achicu@adobe.com>
-
- Reviewed by Kent Tamura.
-
- Add ENABLE_CSS_EXCLUSIONS support for build-webkit script
- https://bugs.webkit.org/show_bug.cgi?id=61628
-
- * Scripts/build-webkit:
-
-2011-06-06 Mihnea Ovidenie <mihnea@adobe.com>
-
- Reviewed by Kent Tamura.
-
- Add ENABLE(CSS_REGIONS) guard for CSS Regions support
- https://bugs.webkit.org/show_bug.cgi?id=61631
-
- * Scripts/build-webkit:
-
-2011-06-06 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix the GTK+ build.
-
- * GNUmakefile.am: Use javascriptcore_cflags when building libWebCoreInternals.
-
-2011-06-05 Alexey Proskuryakov <ap@apple.com>
-
- Add an e-mail address for Cameron McCormack that matches Bugzilla (so that auto-completion
- works properly).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-06-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Update git branch build dir handling to match what other
- WebKit scripts expect, so other scripts work properly with wx.
-
- * waf/build/build_utils.py:
- * waf/build/settings.py:
-
-2011-06-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Restore the PPC build and allow users to specify architectures
- to build on Mac.
-
- * waf/build/settings.py:
- * wx/install-unix-extras:
-
-2011-06-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fixes for recent trunk changes.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setTextDirection):
- * waf/build/settings.py:
-
-2011-06-04 Martin Robinson <mrobinson@igalia.com>
-
- Fix the GTK+ build.
-
- * GNUmakefile.am: Add some missing newline escape.
-
-2011-06-03 Martin Robinson <mrobinson@igalia.com>
-
- Try to fix the GTK+ bulid.
-
- * GNUmakefile.am: Add JSDOMWrapper.cpp to the libWebCoreInternals
- source list.
-
-2011-06-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- nrwt: should skip chromium test expectation overrides on upstream bots
- https://bugs.webkit.org/show_bug.cgi?id=61888
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-06-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: minor logging, code cleanup
- https://bugs.webkit.org/show_bug.cgi?id=62055
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-03 Martin Robinson <mrobinson@igalia.com>
-
- Try to fix the build failure on the GTK+ 32-bit Release bot.
-
- * GNUmakefile.am: Add JSInternal.{cpp,h} to the BUILT_SOURCES list.
-
-2011-05-31 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Ryosuke Niwa.
-
- [GTK] Support smart replace for the pasteboard
- https://bugs.webkit.org/show_bug.cgi?id=61734
-
- Call into the DumpRenderTreeSupportGtk hooks to toggle smart replace.
- This is required to produce consistent test results.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Set the smart replace setting to on by default.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSmartInsertDeleteEnabled): Added an implementation of this
- methods which calls into DumpRenderTreeSupportGtk.
-
-2011-06-03 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Dimitri Glazkov.
-
- Teach Gtk build about window.internals
- https://bugs.webkit.org/show_bug.cgi?id=61071
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewWindowObjectCleared): Inject the new internals object when the
- window object clears.
- * GNUmakefile.am: Add new source files and includes necessary for window.internals.
- Also do a little bit of cleanup.
-
-2011-06-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Worker may not be stopped after LT.
- https://bugs.webkit.org/show_bug.cgi?id=61847
-
- Re-submit a variant of the first fix for this bug. It's possible
- that actually calling cleanup() in the worker threads was taking
- too long and we triggered the assertions in the manager thread.
-
- I've bumped up the timeout in the manager and added better
- diagnostics. I also cleaned up the cleanup() code a bit because
- there was some unnecessary if-checks.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: fix duplicate logging regression
- https://bugs.webkit.org/show_bug.cgi?id=61981
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2011-06-03 Robert Kroeger <rjkroege@chromium.org>
-
- Reviewed by Adam Barth.
-
- Modified addTouchPoint to correctly re-use touchPoint id values starting
- from the lowest not-un-use touchPoint id as is done by the embedder
- APIs. (Fixes BUGCR36415)
-
- https://bugs.webkit.org/show_bug.cgi?id=62016
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::addTouchPoint):
-
-2011-06-03 Cary Clark <caryclark@google.com>
-
- Reviewed by Eric Seidel.
-
- Draw DRT scroll bar thumb with CG when WebKit renders with Skia
- https://bugs.webkit.org/show_bug.cgi?id=61534
-
- Skia on Mac uses Skia to render WebKit, and CG
- to render UI elements. The CG elements need a
- transcribed graphics context that preserves the
- canvas matrix, and the canvas clip.
-
- The SkiaBitLocker utility class sets up a CGContext
- from the SkCanvas, locks the bitmap's bits, and
- releases the lock when the class goes out of scope.
-
- The SkiaBitLocker implementation is described by
- this patch:
- http://codereview.chromium.org/7031006/
-
- When WebKit uses Skia for rendering, the WebCanvas
- is an SkCanvas. Create an equivalent CGContext to
- draw the scrollbar thumb.
-
- As the Chrome Mac port does not yet use Skia, this
- patch has no effect and requires no tests.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- (WebThemeEngineDRTMac::paintHIThemeScrollbarThumb):
-
-2011-06-03 Andras Becsi <abecsi@webkit.org>
-
- Unreviewed build fix.
-
- Fix typo.
-
- * Scripts/old-run-webkit-tests:
-
-2011-06-03 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Print error message when there is no httpd present on the system
- https://bugs.webkit.org/show_bug.cgi?id=61939
-
- * Scripts/old-run-webkit-tests: Propose to run with --no-httpd.
- * Scripts/webkitperl/httpd.pm:
-
-2011-06-03 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: [Chromium] cpu-profiler-profiling layout test is flaky on Linux Debug.
- https://bugs.webkit.org/show_bug.cgi?id=61533
-
- Skip cpu-profiler-profiling in debug, implement a fast headless alternative.
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::setJavaScriptProfilingEnabled):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setJavaScriptProfilingEnabled):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setJavaScriptProfilingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setJavaScriptProfilingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-06-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT needs a way to log to a file without including backspaces without needing --verbose
- https://bugs.webkit.org/show_bug.cgi?id=60328
-
- This change modifies NRWT so that if it can tell if it is
- writing to a terminal, it will overwrite any messages printed
- in the 'one-line-progress' and 'updates' print options, and if
- not (or if --verbose was specified) the messages will be printed
- without backspaces.
-
- If the overwriting updates are disabled, one-line-progress will
- only print every 10 seconds instead of on every update. This
- ensures that we still get updates once in a while while the
- tests are running, even if we're not in --verbose mode. Note
- that one-line-progress will now still be printed in --verbose,
- since it's useful as long as you're not flooded with the
- updates.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2011-06-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] autogen.sh is run twice for each buld on the bots
- https://bugs.webkit.org/show_bug.cgi?id=61951
-
- * Scripts/webkitdirs.pm: Only check the previous autotools arguments
- for the WebKit project. This prevents build-jsc runs from forcing subsequent
- build-webkit runs to re-rerun autogen.sh.
-
-2011-06-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r87946.
- http://trac.webkit.org/changeset/87946
- https://bugs.webkit.org/show_bug.cgi?id=61965
-
- Cause NRWT to break (Requested by abarth|gardener on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-02 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add build logistics and plumbing for window.internals object.
- https://bugs.webkit.org/show_bug.cgi?id=60313
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added linking new WebCoreTestSupport library.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow): Added injection code.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]): Ditto.
-
-2011-06-02 Hao Zheng <zhenghao@chromium.org>
-
- Reviewed by Dirk Pranke.
-
- Call cleanup() explicitly at the end of worker.run().
- https://bugs.webkit.org/show_bug.cgi?id=61847
-
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-06-02 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r87926.
- http://trac.webkit.org/changeset/87926
- https://bugs.webkit.org/show_bug.cgi?id=60313
-
- Fails to find WebCoreTestSupport.dylib on bots.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):
-
-2011-05-21 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add build logistics and plumbing for window.internals object.
- https://bugs.webkit.org/show_bug.cgi?id=60313
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added linking new WebCoreTestSupport library.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow): Added injection code.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]): Ditto.
-
-2011-06-02 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Eric Seidel.
-
- Adjust efl coding style to more efl directories
- https://bugs.webkit.org/show_bug.cgi?id=61903
-
- * Scripts/webkitpy/style/checker.py: Adjust efl coding style to efl directories.
-
-2011-06-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- old-run-webkit-tests: add support for audio files
- https://bugs.webkit.org/show_bug.cgi?id=57992
-
- * Scripts/old-run-webkit-tests:
-
-2011-06-01 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Adam Barth.
-
- Implement layoutTestController.setImagesAllowed for controlling the respective behavior of the WebPermissionClient
- https://bugs.webkit.org/show_bug.cgi?id=34314
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setImagesAllowed):
- (LayoutTestController::setStorageAllowed):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebPermissions.cpp: Copied from Tools/DumpRenderTree/chromium/WebPermissions.h.
- (WebPermissions::WebPermissions):
- (WebPermissions::~WebPermissions):
- (WebPermissions::allowImages):
- (WebPermissions::allowStorage):
- (WebPermissions::setImagesAllowed):
- (WebPermissions::setStorageAllowed):
- (WebPermissions::reset):
- * DumpRenderTree/chromium/WebPermissions.h:
-
-2011-06-01 Noel Gordon <noel.gordon@gmail.com>
-
- Reviewed by Tony Chang.
-
- Test plugin should support event logging on the windows port.
- https://bugs.webkit.org/show_bug.cgi?id=61721
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventWin): Well, handle them.
-
-2011-06-01 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by Tony Chang.
-
- [chromium] Use correct file name for dragging out images.
- https://bugs.webkit.org/show_bug.cgi?id=24887
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::dumpFilenameBeingDragged):
- * DumpRenderTree/chromium/EventSender.h:
-
-2011-06-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- nrwt: make webaudio work w/o content-length header
- https://bugs.webkit.org/show_bug.cgi?id=61819
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-06-01 Viatcheslav Ostapenko <ostapenko.viatcheslav@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Add QGLWidget viewport support to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61802
-
- Add command line parameter and menu item to MiniBrowser application
- enabling use of QGLWidget for browser viewport.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::toggleGLViewport):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
-
-2011-06-01 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- Print out autogen arguments when they differ from the last set, to help
- with debugging build issues.
-
- * Scripts/webkitdirs.pm: Print out previous and current build arguments
- when they differ.
-
-2011-06-01 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] run-launcher should run MiniBrowser in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=61858
-
- * Scripts/run-launcher: Check whether -2 command line option has
- been passed and run MiniBrowser instead of GtkLauncher.
-
-2011-05-31 Hao Zheng <zhenghao@chromium.org>
-
- Reviewed by Dirk Pranke.
-
- Fix exception in verbose printing mode.
- https://bugs.webkit.org/show_bug.cgi?id=61723
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2011-05-31 Yong Li <yoli@rim.com>
-
- Reviewed by Eric Seidel.
-
- https://bugs.webkit.org/show_bug.cgi?id=54807
- We have been assuming plain bitfields (like "int a : 31") are always signed integers.
- However some compilers can treat them as unsigned. For example, RVCT 4.0 states plain
- bitfields (declared without either signed or unsigned qualifiers) are treats as unsigned.
- http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0348c/Babjddhe.html
- Although we can use "--signed-bitfields" flag to make RVCT 4.0 behave as most other compilers,
- always using "signed"/"unsigned" qualifier to declare integral type bitfields is still a good
- rule we should have in order to make our code independent from compilers and compiler flags.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
-
-2011-05-31 Hironori Bono <hbono@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add a JavaScript function layoutTestController.setTextDirection().
- https://bugs.webkit.org/show_bug.cgi?id=50952
-
- This change adds a new JavaScript function setTextDirection() to the
- LayoutTestController class of Safari and Chrome to write layout tests
- that changes the text direction of an editable element.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setTextDirectionCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setTextDirection):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setTextDirection):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setTextDirection):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setTextDirection):
-
-2011-05-31 Ademar de Souza Reis Jr <ademar.reis@openbossa.org>
-
- Reviewed by Simon Hausmann.
-
- [Qt] User-agent list of Qt test browsers is very outdated
- https://bugs.webkit.org/show_bug.cgi?id=61531
-
- The user can edit the user-agent manually, so there's no need to have
- a super complete and up to date list, but it's nice to have it
- minimally updated.
-
- * MiniBrowser/qt/useragentlist.txt:
- * QtTestBrowser/useragentlist.txt:
-
-2011-03-30 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Adam Roben.
-
- [GTK] [WebKit2] Implement a basic WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=57068
-
- Add an implementation of WebKitTestRunner for GTK+.
-
- * Scripts/build-webkittestrunner: Added knowledge of GTK+ TestRunner.
- * Scripts/old-run-webkit-tests: Ditto.
- * Scripts/run-launcher: Ditto.
- * Scripts/webkitdirs.pm: Ditto.
- * WebKitTestRunner/GNUmakefile.am: Added.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp: Added.
- * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp: Copied from Source/WebKit2/WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp.
- * WebKitTestRunner/InjectedBundle/gtk/LayoutTestControllerGtk.cpp: Copied from Source/WebKit2/WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp.
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp: Added.
- * WebKitTestRunner/gtk/TestControllerGtk.cpp: Added.
- * WebKitTestRunner/gtk/TestInvocationGtk.cpp: Copied from Source/WebKit2/WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp.
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/gtk/main.cpp: Copied from Source/WebKit2/WebProcess/InjectedBundle/gtk/InjectedBundleGtk.cpp.
- (main): Added.
-
-2011-05-31 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: doesn't wait for children if it gets a ctrl-c
- https://bugs.webkit.org/show_bug.cgi?id=60241
-
- * Scripts/new-run-webkit-tests:
-
-2011-05-31 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Kilzer.
-
- webkitpy should create zips with zip -9
- https://bugs.webkit.org/show_bug.cgi?id=61789
-
- Dave Kilzer suggested we add this to make zips uploaded to bugzilla smaller.
-
- * Scripts/webkitpy/common/system/workspace.py:
- * Scripts/webkitpy/common/system/workspace_unittest.py:
-
-2011-05-31 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement find feature for QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61425
-
- Buildfix for --minimal and CONFIG+=qt_minimal build.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::createChrome):
- * QtTestBrowser/launcherwindow.h:
-
-2011-05-31 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement find feature for QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61425
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::createChrome):
- (LauncherWindow::showFindBar):
- (LauncherWindow::find):
- * QtTestBrowser/launcherwindow.h:
-
-2011-05-30 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Implement JavaScript dialogs in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=61725
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (WKStringGetCString): Helper function to get a UTF-8 c string from
- a WKStringRef.
- (WKURLGetCString): Helper function to get a UTF-8 c string from a
- WKURLRef.
- (browserWindowUpdateURL): Update to use WKURLGetCString.
- (didReceiveTitleForFrame): Update to use WKStringGetCString.
- (createMessageDialog): Create a GtkMessageDialog.
- (runJavaScriptAlert):
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
- (browserWindowUIClientInit):
-
-2011-05-29 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Kent Tamura.
-
- WebSocket closing handshake
- https://bugs.webkit.org/show_bug.cgi?id=35721
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- Pull in pywebsocket 0.6b1. We need to update pywebsocket
- to get the right behavior of closing handshake.
-
-2011-05-29 Daniel Bates <dbates@rim.com>
-
- Reviewed by David Kilzer.
-
- REGRESSION (r86515): svn-apply ignores diffs that omit line count in chunk range
- https://bugs.webkit.org/show_bug.cgi?id=61162
-
- Fixes an issue where svn-apply may ignore a diff that contains a chunk range line
- that omits a line count. In particular, the chunk range regular expression does
- not match a chunk range line that omits a line count. GNU diff(1) will omit the
- line count in the chunk range if the line count is exactly 1. For example, appending
- a new line to the end of an existing file F that contains exactly one line of text will
- be represented in a diff with a chunk range line that omits the line count for F.
-
- * Scripts/VCSUtils.pm:
- (parseChunkRange): Added.
- * Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Added unit test "Git: Append new line to the end of an existing file".
-
-2011-05-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- EWS builds patches that fail to build twice, which seems useless and slows down the bots
- https://bugs.webkit.org/show_bug.cgi?id=55585
-
- This patch switches all the early warning system bots over to the new
- PatchAnalysisTask-based infrastructure. This patch makes these bots
- more efficient (in the case where patches fail to build) and paves the
- way for running tests on these bots!
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-05-28 Kenichi Ishibashi <bashi@chromium.org>
-
- Reviewed by Kent Tamura.
-
- Add bashi as a committer.
-
- https://bugs.webkit.org/show_bug.cgi?id=61685
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-27 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- When checking whether the tree is red, the EWS posts a link to the wrong log
- https://bugs.webkit.org/show_bug.cgi?id=61072
-
- We need to cache the original script error because that contains the
- failure log we want to upload. If we don't cache that script error,
- self._script_error will get overwritten when we sanity check the clean
- tree (and it also has test failures).
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- - This testing approach is slightly goofy. We'd like to use
- assertRaisesRegexp, but that's not available until Python 2.7.
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
-
-2011-05-27 Jochen Eisinger <jochen@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add layoutTestController.setStorageAllowed() to control whether access
- to the localStorage API is enabled via the WebPermissionClient
- https://bugs.webkit.org/show_bug.cgi?id=61581
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setStorageAllowed):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebPermissions.h: Added.
- (WebPermissions::WebPermissions):
- (WebPermissions::allowStorage):
- (WebPermissions::setStorageAllowed):
- (WebPermissions::reset):
-
-2011-05-27 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- NRWT: clean up metered_stream code in preparation for 'nooverwriting' patch
- https://bugs.webkit.org/show_bug.cgi?id=60326
-
- This patch removes a lot of the complexity from the
- metered_stream implementation that was unnecessary since there
- was only one caller and the logic could be coordinated better.
-
- There should be no functional changes in this patch, just code
- getting deleted and cleaned up.
-
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream.py:
- * Scripts/webkitpy/layout_tests/layout_package/metered_stream_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2011-05-27 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- NRWT: minor cleanup in printing module
- https://bugs.webkit.org/show_bug.cgi?id=60329
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
-
-2011-05-27 Steve Lacey <sjl@chromium.org>
-
- Reviewed by David Levin.
-
- Add sjl@chromium.org as a committer.
-
- https://bugs.webkit.org/show_bug.cgi?id=61672
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-27 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- NRWT: remove --print detailed-progress
- https://bugs.webkit.org/show_bug.cgi?id=60324
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-05-27 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- NRWT: debug messages from the workers are being logged twice
- https://bugs.webkit.org/show_bug.cgi?id=60428
-
- It looks like when the workers are run in separate processes
- we end up getting two copies of every log message they print.
- This has to do with the multiprocessing module on UNIX cloning
- the log configuration in a way I wasn't expecting, and so two
- log handlers end up getting registered.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-05-27 Adam Roben <aroben@apple.com>
-
- Always decode tester names from location.hash
-
- When navigating directly to a tester-specific URL (e.g.,
- <http://build.webkit.org/TestFailures/#/Windows%207%20Release%20(Tests)>), you could end up
- with a URL-encoded tester name in the page, and then the encoded name could make its way
- into Bugzilla bugs. Bad!
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype.parseHash): Pass the tester name we got from location.hash through
- decodeURIComponent before trying to use it.
-
-2011-05-27 Adam Roben <aroben@apple.com>
-
- Remove testing code that snuck into r87528
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._domForNewBugLink): Remove a line I was using for some testing.
-
-2011-05-27 Adam Roben <aroben@apple.com>
-
- Add links to TestFailures to easily file bugs about failing tests
-
- Fixes <http://webkit.org/b/61636> <rdar://problem/9514886> TestFailures page should have
- links to file bugs for failing tests
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.resultsPageURL): New helper function to return the URL to results.html
- for a particular build.
- (Builder.prototype._getFailingTests): Use resultsPageURL.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Add links to file bugs about each set of
- failures.
- (ViewController.prototype._domForBuildName): Use resultsPageURL.
- (ViewController.prototype._domForNewBugLink): Added. Creates an element that represents the
- new bug link. The bug has a title, description, and URL already filled in for you!
-
-2011-05-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r87464.
- http://trac.webkit.org/changeset/87464
- https://bugs.webkit.org/show_bug.cgi?id=61643
-
- client-close/server-close tests are flaky on Chromium Mac and
- Windows (Requested by aklein on #webkit).
-
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-05-27 Alexey Proskuryakov <ap@apple.com>
-
- Added Douglas Davidson to contributors list for easier CC'ing.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-26 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Fix worldID and destinationDomain argument names
- https://bugs.webkit.org/show_bug.cgi?id=61571
-
- As part of working on r87423, I noticed a couple of inconsistencies in
- argument names:
- - We would use worldId in .h files but worldID in .cpp files.
- Standardize on the latter
- - SecurityOrigin::addOriginAccessWhitelistEntry would take a
- destinationDomains argument, even though the actual parameter was for
- a single domain (renamed to be singular).
-
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::evaluateScriptInIsolatedWorld):
-
-2011-05-26 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Kent Tamura.
-
- WebSocket closing handshake
- https://bugs.webkit.org/show_bug.cgi?id=35721
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- Pull in pywebsocket 0.6b1. We need to update pywebsocket
- to get the right behavior of closing handshake.
-
-2011-05-26 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Andreas Kling.
-
- WebKitTestRunner needs layoutTestController.setAuthorAndUserStylesEnabled
- https://bugs.webkit.org/show_bug.cgi?id=42676
-
- Implemented layoutTestController.setAuthorAndUserStylesEnabled for WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setAuthorAndUserStylesEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-05-26 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtTestBrowser "Switch User Agent" dialog is broken
- https://bugs.webkit.org/show_bug.cgi?id=61527
-
- The setMaximumHeight() call is unecessary and breaks the dialog at
- least on my setup.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::showUserAgentDialog):
-
-2011-05-02 Robert Hogan <robert@webkit.org>
-
- Reviewed by Adam Roben.
-
- [Qt] Allow popup windows from plugins when initiated by a user gesture
-
- https://bugs.webkit.org/show_bug.cgi?id=41292
-
- Support parameters introduced in plugin-initiate-popup-window.html
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_handle_event):
-
-2011-05-26 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Adam Barth.
-
- Support cross-origin XMLHttpRequest in isolated worlds
- https://bugs.webkit.org/show_bug.cgi?id=59843
-
- Expose setIsolatedWorldSecurityOrigin in LayoutTestController.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setIsolatedWorldSecurityOrigin):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-05-25 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2: Status bar, toolbar, and menu bar checks should be in the injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=61474
- <rdar://problem/9468337>
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Add empty entries in the WKBundlePageUIClient.
-
-2011-05-26 Andreas Kling <kling@webkit.org>
-
- Unreviewed, correct address to webkit-committers mailing list.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
-
-2011-05-25 Adam Roben <aroben@apple.com>
-
- Don't assume that builds finish in the order they were started
-
- Fixes <http://webkit.org/b/61464> TestFailures page shows failures from a not-most-recent
- build when one slave is taking a long time to finish a build
-
- Reviewed by Antti Koivisto.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getMostRecentCompletedBuildNumber): Don't assume that all builds that are
- newer than the oldest in-progress build are also themselves in progress. Just check whether
- each build is actually in progress (as signified by its presence in the currentBuilds set).
-
-2011-05-25 Adam Roben <aroben@apple.com>
-
- Correctly detect cases where only a single test failed/crashed/timed out
-
- Fixes <http://webkit.org/b/61463> TestFailures page doesn't show testers with only a single
- failing test
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Don't require "test cases" to be plural. It
- will be singular when only a single test fails/crashes/times out.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayTesters): Only pluralize "test" when more than one test
- failed/crashed/timed out.
-
-2011-05-26 Tom Hudson <tomhudson@google.com>
-
- Reviewed by Tony Chang.
-
- Add flags to Chromium ImageDiff to write image comparison metrics on
- stdout.
- https://bugs.webkit.org/show_bug.cgi?id=60569
-
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (Image::createFromStdin): Fix spelling.
- (maxOf3): New function to do 3-way maximum.
- (getRedComponent): Extract red component from ABGR packed encoding.
- (getGreenComponent): Extract green component from ABGR packed encoding.
- (getBlueComponent): Extract blue component from ABGR packed encoding.
- (weightedPercentageDifferent): Determine % of pixels different in two
- images multiplied by intensity difference of each pixel.
- (printHelp): Document new arguments.
- (compareImages): Parameterize.
- (untestedCompareImages): Parameterize.
- (diffImages): Parameterize; write results on stdout if requested.
- (main): Parse new arguments.
-
-2011-05-25 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Simon Hausmann.
-
- WebKitTestRunner needs layoutTestController.setPrivateBrowsingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=42697
-
- Implemented layoutTestController.setPrivateBrowsingEnabled for WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPrivateBrowsingEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-05-25 Jon Honeycutt <jhoneycutt@apple.com>
-
- REGRESSION (WebKit2): Crash in Flash on USA Today photo gallery
- https://bugs.webkit.org/show_bug.cgi?id=61428
- <rdar://problem/9457006>
-
- Reviewed by Adam Roben.
-
- The crash occurs when Flash posts a message to a window that it
- creates, and in processing the message, it calls NPN_Evaluate to
- evaluate JavaScript that removes the plug-in from the page. Flash then
- crashes when we return to Flash code.
-
- This test emulates that behavior.
-
- * DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp: Added.
- (CallJSThatDestroysPlugin::CallJSThatDestroysPlugin):
- Initialize member vars.
- (CallJSThatDestroysPlugin::~CallJSThatDestroysPlugin):
- Remove our custom property from the message window, and destroy it.
- (CallJSThatDestroysPlugin::NPP_Destroy):
- Set m_isDestroyed, log that the plug-in was destroyed, and notify the
- layout test controller that we're done.
- (wndProc):
- Get the PluginTest object, and call its runTest() function.
- (CallJSThatDestroysPlugin::NPP_New):
- Setup the test: register a class for the message-only window, create
- it, and post a message to it to run the test.
- (CallJSThatDestroysPlugin::runTest):
- Execute JS that removes the plug-in from the page, and if we're not
- destroyed, log a success message.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- Add new test to project.
-
-2011-05-25 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- webkitpy's NetworkTransaction shouldn't use mechanize
- https://bugs.webkit.org/show_bug.cgi?id=61450
-
- mechanize.HTTPError is just an alias for urllib2.HTTPError, so
- use urllib2 directly. Re-add NetworkTransaction to
- test_results_uploader.py (reverting r87124).
-
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:
-
-2011-05-25 Kevin Ollivier <kevino@theolliviers.com>
-
- [Chromium] Unreviewed build fix. Do not define WTF/JS_EXPORT_PRIVATE to JS_EXPORTDATA
- until the port begins using those export macros.
-
- * DumpRenderTree/chromium/config.h:
-
-2011-05-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r87257.
- http://trac.webkit.org/changeset/87257
- https://bugs.webkit.org/show_bug.cgi?id=61457
-
- This broke layout tests, see bug 61431. (Requested by
- hwennborg on #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::clearAllDatabases):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-05-25 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] fast/css/disabled-author-styles.html failed
- https://bugs.webkit.org/show_bug.cgi?id=61438
-
- Implemented API setAuthorAndUserStylesEnabled in LayoutTestControllerQt.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAuthorAndUserStylesEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-05-25 Adam Roben <aroben@apple.com>
-
- Identify, rather than skip, builds where run-webkit-tests exited early due to too many failures
-
- Fixes <http://webkit.org/b/61441> TestFailures page should show when run-webkit-tests
- started exiting early due to too many crashes, timeouts, or failures
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getNumberOfFailingTests): Rather than returning -1 ("unknown") when
- run-webkit-tests exits early due to too many failures, pass that information in another
- argument to the callback.
- (Builder.prototype.startFetchingBuildHistory): Updated the documentation comment to reflect
- the new structure of the object passed to the callback.
- (Builder.prototype._getFailingTests): Updated to expect a tooManyFailures boolean from
- getNumberOfFailingTests and to pass that along to our own callbacks.
- (Builder.prototype._incorporateBuildHistory): Updated to expect a tooManyFailures boolean
- from _getFailingTests and to store that value in the history object.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- (.info): Added.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayBuilder): Updated for change in structure to the history
- object and to add a note when run-webkit-tests exited early due to too many failures.
- (ViewController.prototype._displayTesters): Renamed testersAndFailureCounts to
- latestBuildInfos since each entry now contains more than just the tester and failure count.
- Now displays a message for testers where the latest build exited early due to too many
- failures. Updated to expect a tooManyFailures boolean from getNumberOfFailingTests and to
- store that value in latestBuildInfos.
-
-2011-05-24 Keishi Hattori <keishi@webkit.org>
-
- Reviewed by Kent Tamura.
-
- Disable textfield implementation of <input type=color>. Add INPUT_COLOR feature flag. Add input color sanitizer.
- https://bugs.webkit.org/show_bug.cgi?id=61273
-
- * Scripts/build-webkit: Added INPUT_COLOR feature flag.
-
-2011-05-24 Greg Simon <gregsimon@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Control Indexeddb backends from LayoutTestController
- https://bugs.webkit.org/show_bug.cgi?id=61000
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setOverrideIndexedDBBackingStore):
- (LayoutTestController::clearAllDatabases):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-05-24 Robert Hogan <robert@webkit.org>
-
- Reviewed by Ryosuke Niwa.
-
- [Qt] Fix fast/events/selectstart-by-single-click-with-shift.html
- https://bugs.webkit.org/show_bug.cgi?id=61393
-
- * DumpRenderTree/qt/EventSenderQt.h:
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (getModifiers): static function for interpreting modifiers
- (EventSender::mouseDown): Respect keyboard modifiers
- (EventSender::keyDown): use new static function
- (EventSender::sendOrQueueEvent): whitespace fix
-
-2011-05-24 Jay Civelli <jcivelli@chromium.org>
-
- Reviewed by Adam Barth.
-
- Adding MHTML reading support.
- https://bugs.webkit.org/show_bug.cgi?id=7168
-
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitperl/features.pm:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-05-24 Stephen White <senorblanco@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Remove most style checks on Source/ThirdParty/glu, since it doesn't
- follow WebKit style.
- https://bugs.webkit.org/show_bug.cgi?id=61365
-
- * Scripts/webkitpy/style/checker.py:
-
-2011-05-24 Adam Roben <aroben@apple.com>
-
- Don't allow forcing builds through the build.webkit.org web interface
-
- Someone has been forcing bogus builds.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-05-24 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Adam Roben.
-
- WebKitTestRunner needs layoutTestController.setJavaScriptCanAccessClipboard
- https://bugs.webkit.org/show_bug.cgi?id=42669
-
- Fixes the regression issue caused by patch 94265. The patch didn't intialize the setting before the
- layouttest starting, it will make the test cases after editing/execCommand/clipboard-access.html failed.
- Because that case changed the setting.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2011-05-24 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [ORWT]Make --skipped=only option work with parameters with LayoutTests/ prefix
- https://bugs.webkit.org/show_bug.cgi?id=61052
-
- * Scripts/old-run-webkit-tests:
-
-2011-05-24 Adam Roben <aroben@apple.com>
-
- Make TestFailures show how many tests are failing on each tester, and omit testers with no failures
-
- Fixes <http://webkit.org/b/61063> <rdar://problem/9460533> TestFailures page shows testers
- that don't have any failing tests, which isn't useful
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot.js:
- (Buildbot.prototype.getTesters): Renamed from getTesterNames. Now returns Builder objects
- instead of name strings.
- (Buildbot.prototype._buildersForNames): Added. Helper function to convert an array of
- builder names into an array of builders.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js:
- (Builder.prototype.getMostRecentCompletedBuildNumber): Added. Returns the build number of
- the most recently completed build, or -1 if there is no such build.
- (Builder.prototype.getNumberOfFailingTests): Added. Returns the number of tests that failed
- in the given build, or -1 if the number could not be determined. Some of this code came from
- _getFailingTests.
- (Builder.prototype._getBuildJSON): Added. Code came from _getFailingTests.
- (Builder.prototype._getFailingTests): Changed to use new _getBuildJSON and
- getNumberOfFailingTests functions.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js:
- (ViewController.prototype._displayTesters): Get the current number of test failures for each
- tester and show it in the list. Omit testers that have no failures at all. We keep the
- testers and failure counts in an array and sort it before displaying the current data, as
- the order in which data will be fetched is unpredictable.
-
-2011-05-23 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [nrwt] don't use NetworkTranslation when uploading results
- https://bugs.webkit.org/show_bug.cgi?id=61315
-
- This avoids autoinstalling mechanize. It didn't matter anyway
- because test_results_uploader.py wasn't using mechanize to make the
- request so NetworkTransaction::run wasn't doing anything extra
- (it only matters if it catches mechanize.HTTPError).
-
- * Scripts/webkitpy/layout_tests/layout_package/test_results_uploader.py:
-
-2011-05-23 Tony Chang <tony@chromium.org>
-
- Reviewed by Dirk Pranke.
-
- [chromium] fix the rebaseline tool to work with Linux GPU failures
- https://bugs.webkit.org/show_bug.cgi?id=61312
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-05-23 Darin Adler <darin@apple.com>
-
- Ignore generated .pyc files in a directory full of python code.
-
- * Scripts/webkitpy/common/checkout/scm: Added property svn:ignore.
-
-2011-05-23 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- sheriffbot should give more details about the failures in IRC
- https://bugs.webkit.org/show_bug.cgi?id=61233
-
- With this patch, sheriffbot will annonce the set of failing tests,
- which might help folks triage the problem.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2011-05-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r87078.
- http://trac.webkit.org/changeset/87078
- https://bugs.webkit.org/show_bug.cgi?id=61294
-
- Patch contains errors and seems likely to break a bunch of
- bots (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-05-23 Alice Boxhall <aboxhall@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Convert json_results_generator.py to output version 4 JSON.
- https://bugs.webkit.org/show_bug.cgi?id=60869
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-05-23 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Move generation of shell_command from port to executive
- https://bugs.webkit.org/show_bug.cgi?id=61251
-
- After move it's possible to use the code in other places too.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-05-23 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.setJavaScriptCanAccessClipboard
- https://bugs.webkit.org/show_bug.cgi?id=42669
-
- Implement setJavaScriptCanAccessClipboard in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setJavaScriptCanAccessClipboard):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-05-22 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix policyDelegate in Qt DRT
- https://bugs.webkit.org/show_bug.cgi?id=61247
-
- Use the 'policy delegate' implemented in FrameLoaderClient
- for layout tests. The partial implementation in DumpRenderTreeQt
- is redundant, so remove it.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::acceptNavigationRequest):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::waitForPolicyDelegate):
-
-2011-05-22 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Darin Adler.
-
- Use double quotes for filename arguments
- https://bugs.webkit.org/show_bug.cgi?id=61250
-
- Windows does not support single quotes on the command line,
- so replace them with double quotes.
-
- * Scripts/prepare-ChangeLog:
-
-2011-05-20 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKitTestRunner needs layoutTestController.pauseTransitionAtTimeOnElementWithId
- https://bugs.webkit.org/show_bug.cgi?id=42550
-
- Implement pauseTransitionAtTimeOnElementWithId in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- Copy the code for pausing animations, FIXME comments and all.
- (WTR::LayoutTestController::pauseTransitionAtTimeOnElementWithId):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-05-20 Alok Priyadarshi <alokp@chromium.org>
-
- Reviewed by Stephen White.
-
- Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-19 Adam Roben <aroben@apple.com>
-
- Test that the WebKit2 UI process doesn't crash when starting a download
-
- Test for <http://webkit.org/b/61142> <rdar://problem/9471680> REGRESSION (r86812): Crash
- (preceded by assertion) in fastMalloc when downloading a file
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WebKit2/18-characters.html: Added.
-
- * TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp: Added.
- (TestWebKitAPI::decidePolicyForNavigationAction): Start a download.
- (TestWebKitAPI::decideDestinationWithSuggestedFilename): Record that the download was
- started, cancel the download, and return a bogus string.
-
- (TestWebKitAPI::setContextDownloadClient):
- (TestWebKitAPI::setPagePolicyClient):
- Simple helper functions.
-
- (TestWebKitAPI::TEST): Load 18-characters.html, which should trigger a download thanks to
- our policy client, and run until we know that the download was started. If we haven't
- crashed, we win!
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
- Added new files.
-
-2011-05-20 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Ryosuke Niwa.
-
- Fix style errors in DumpRenderTree/chromium/.
- https://bugs.webkit.org/show_bug.cgi?id=61172
-
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- (CppBoundClass::getAsCppVariant):
- (CppBoundClass::bindToJavascript):
- * DumpRenderTree/chromium/CppBoundClass.h:
- (CppBoundClass::GetterCallback::~GetterCallback):
- (CppBoundClass::CppBoundClass):
- (CppBoundClass::Callback::~Callback):
- (CppBoundClass::MemberCallback::MemberCallback):
- (CppBoundClass::MemberCallback::~MemberCallback):
- (CppBoundClass::MemberGetterCallback::MemberGetterCallback):
- (CppBoundClass::MemberGetterCallback::~MemberGetterCallback):
- * DumpRenderTree/chromium/CppVariant.h:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- (DRTDevToolsAgent::~DRTDevToolsAgent):
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::sendFrontendLoaded):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/EventSender.cpp:
- (SavedEvent::SavedEvent):
- (EventSender::EventSender):
- (EventSender::keyDown):
- * DumpRenderTree/chromium/EventSender.h:
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (Image::Image):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::WorkQueue::reset):
- (WorkItemBackForward::WorkItemBackForward):
- (WorkItemLoadingScript::WorkItemLoadingScript):
- (WorkItemNonLoadingScript::WorkItemNonLoadingScript):
- (WorkItemLoad::WorkItemLoad):
- (WorkItemLoadHTMLString::WorkItemLoadHTMLString):
- (LayoutTestController::pathToLocalResource):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::WorkItem::~WorkItem):
- (LayoutTestController::WorkQueue::WorkQueue):
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::MockSpellCheck):
- (MockSpellCheck::~MockSpellCheck):
- * DumpRenderTree/chromium/MockSpellCheck.h:
- * DumpRenderTree/chromium/NotificationPresenter.h:
- (NotificationPresenter::NotificationPresenter):
- * DumpRenderTree/chromium/Task.cpp:
- (WebTask::WebTask):
- * DumpRenderTree/chromium/Task.h:
- (TaskList::TaskList):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter::DRTPrinter):
- (TestShellPrinter::TestShellPrinter):
- * DumpRenderTree/chromium/TestNavigationController.cpp:
- (TestNavigationEntry::TestNavigationEntry):
- (TestNavigationEntry::~TestNavigationEntry):
- (TestNavigationController::TestNavigationController):
- (TestNavigationController::reload):
- (TestNavigationController::loadEntry):
- (TestNavigationController::didNavigateToEntry):
- * DumpRenderTree/chromium/TestNavigationController.h:
- (TestShellExtraData::TestShellExtraData):
- * DumpRenderTree/chromium/TestShell.cpp:
- (dumpHistoryItem):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (TestShell::waitTestFinished):
- * DumpRenderTree/chromium/TestWebWorker.h:
- (TestWebWorker::startWorkerContext):
- (TestWebWorker::terminateWorkerContext):
- (TestWebWorker::postMessageToWorkerContext):
- (TestWebWorker::clientDestroyed):
- (TestWebWorker::postMessageToWorkerObject):
- (TestWebWorker::postExceptionToWorkerObject):
- (TestWebWorker::postConsoleMessageToWorkerObject):
- (TestWebWorker::confirmMessageFromWorkerObject):
- (TestWebWorker::reportPendingActivity):
- (TestWebWorker::workerContextClosed):
- (TestWebWorker::~TestWebWorker):
- * DumpRenderTree/chromium/TextInputController.cpp:
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- (WebThemeEngineDRTWin::paintButton):
- (WebThemeEngineDRTWin::paintMenuList):
- (WebThemeEngineDRTWin::paintTrackbar):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h:
- (WebThemeEngineDRTWin::WebThemeEngineDRTWin):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::navigate):
- (WebViewHost::updateSessionHistory):
- (WebViewHost::paintInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-05-19 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Adam Roben.
-
- Detect hangs in run-api-tests
- https://bugs.webkit.org/show_bug.cgi?id=48043
-
- * Scripts/run-api-tests: Added test timeouts
-
-2011-05-19 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Adam Roben.
-
- run-api-tests should run one test per process
- https://bugs.webkit.org/show_bug.cgi?id=61088
-
- * Scripts/run-api-tests: Resurrecting the previous revison of this file, with fixes to system call under Windows,
- return code, and parsing GTest output format.
-
-2011-05-15 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt][GTK] plugins/get-url-with-javascript-url.html fails
- https://bugs.webkit.org/show_bug.cgi?id=60834
- Fix unix test plugin for plugins/get-url-with-javascript-url.html
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_stream):
- (webkit_test_plugin_write_ready):
- (webkit_test_plugin_write):
-
-2011-05-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r86869, r86873, r86875, and r86877.
- http://trac.webkit.org/changeset/86869
- http://trac.webkit.org/changeset/86873
- http://trac.webkit.org/changeset/86875
- http://trac.webkit.org/changeset/86877
- https://bugs.webkit.org/show_bug.cgi?id=61139
-
- broke builds and debug DRT (Requested by rniwa on #webkit).
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]):
-
-2011-05-18 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Darin Adler.
-
- Add build logistics and plumbing for window.internals object.
- https://bugs.webkit.org/show_bug.cgi?id=60313
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Added linking new WebCoreTestSupport library.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow): Added injection code.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate didClearWindowObjectInStandardWorldForFrame:]): Ditto.
-
-2011-05-19 Zsolt Fehér <h490267@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement eventSender.scalePageBy
- https://bugs.webkit.org/show_bug.cgi?id=60015
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::scalePageBy):
- * DumpRenderTree/qt/EventSenderQt.h:
-
-2011-05-19 Kenichi Ishibashi <bashi@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] IME candidate window appears wrong position in an iframe
- https://bugs.webkit.org/show_bug.cgi?id=61023
-
- Call the focused frame's firstRectForCharacterRange() instead of the
- main frame so that DRT behaves as the same as Chromium.
-
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::firstRectForCharacterRange):
-
-2011-05-18 Adam Roben <aroben@apple.com>
-
- Add a new page to build.webkit.org to help find when tests started failing
-
- The page is accessible at <http://build.webkit.org/TestFailures/>. It is pretty minimalist
- right now, but already shows some useful information. It's somewhat similar to webkit-patch
- failure-reason and sheriffbot, and perhaps can be combined with them eventually. It's a
- little more convenient than either of them, though, because it's all done in the browser
- (and thus it's easy to go directly to the relevant test results).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Buildbot.js: Added.
- (Buildbot): This class represents a Buildbot server.
- (Buildbot.prototype.buildURL): Returns the URL for the summary page for a particular build.
- (Buildbot.prototype.builderNamed): Returns a Builder with the given name.
- (Buildbot.prototype.getTesterNames): Fetches the names of all testers and passes them to the
- callback.
- (Buildbot.prototype.parseBuildName): Breaks up a build name into its constituent parts. Must
- be implemented by a derived class that understands this server's build naming scheme.
- (Buildbot.prototype.resultsDirectoryURL): Returns the URL for the results directory for a
- particular build.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Builder.js: Added.
- (Builder): This class represents one builder on the buildbot.
- (Builder.prototype.buildURL): Returns the URL for the summary page for a particular build.
- (Builder.prototype.failureDiagnosisTextAndURL): Returns data that provides a little more
- information about a particular test failure.
- (Builder.prototype.startFetchingBuildHistory): Periodically calls the callback with
- information about when tests started failing.
- (Builder.prototype.resultsDirectoryURL): Returns the URL for the results directory for a
- particular build.
- (Builder.prototype._getBuildNames): Fetches the names of all builds and passes them to the
- callback.
- (Builder.prototype._getFailingTests): Fetches the results.html page for the given build and
- extracts all the failing tests listed in it, passing them to the callback.
- (Builder.prototype._incorporateBuildHistory): Gets the failing tests for the specified
- build, merges them into the build history, and calls the callback telling it whether the
- next build should be fetched to provide more information.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/TestFailures.css:
- Added. Just some simple styles.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/Utilities.js: Added.
- (createDefinitionList): Takes an array of pairs and turns them into a DL element.
- (getResource): Wrapper around XMLHttpRequest.
- (Array.prototype.findFirst): Finds the first element matching the given predicate and
- returns it.
- (Array.prototype.last): Returns the last element of the array.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/ViewController.js: Added.
- (ViewController): This class contains the main logic for displaying the page.
- (ViewController.loaded): Just calls through to parseHash.
- (ViewController.parseHash): Either starts analyzing failures on a particular builder, or
- shows the list of all testers so one can be chosen. This function is called when the page
- loads and whenever we get a hashchange event.
- (ViewController._displayBuilder): Asks the builder to fetch build history, and displays it
- as it is fetched. The display ends up grouping tests by when they started failing.
- (ViewController._displayTesters): Gets the list of testers and displays it.
-
- (ViewController._domForBuildName):
- (ViewController._domForFailedTest):
- Helper functions to create descriptions and links for a particular build or failed test.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/WebKitBuildbot.js: Added.
- (WebKitBuildbot): Calls up to the base class constructor with the correct base URL.
- (WebKitBuildbot.prototype.parseBuildName): Parses a build.webkit.org-style build name.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/index.html: Added. Just
- loads all the files and sets up a ViewController, which does the rest.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html: Added a link to the new
- page.
-
-2011-05-18 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement layoutTestController.setValueForUser()
- https://bugs.webkit.org/show_bug.cgi?id=60956
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setValueForUser):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-05-16 Robert Hogan <robert@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- plugins/invalidate_rect.html fails on linux ports
-
- - Make the unix test netscape plugin recognize the onPaintEvent
- and windowedPlugin parameters.
-
- https://bugs.webkit.org/show_bug.cgi?id=54051
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventX11):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::displayInvalidatedRegion):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_handle_event):
-
-2011-05-17 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] move Lucid 64 bit results into LayoutTests/platform/chromium-linux
- https://bugs.webkit.org/show_bug.cgi?id=60895
-
- Update the tools to handle the move. Lucid 32 results now go in
- chromium-linux-x86 and the default platform on Linux is now x86_64.
-
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py: Default to x86_64
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py: Default to Lucid
- * Scripts/webkitpy/layout_tests/port/base.py: ditto
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py: Update directory fallback and default to Lucid 64
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py: Update tests to default to x86_64
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py: Update bot names.
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py: Whitespace cleanup.
-
-2011-05-17 Adam Roben <aroben@apple.com>
-
- Make run-api-tests work on Windows when there are spaces in the path
-
- Fixes <http://webkit.org/b/60954> REGRESSION (r86511): run-api-tests fails if there are
- spaces in the path to TestWebKitAPI.exe
-
- Reviewed by David Levin.
-
- * Scripts/run-api-tests:
- (runTestTool): Use the "direct object" form of system() to avoid having the path to
- TestWebKitAPI.exe be split by the shell.
-
-2011-05-16 Ian Henderson <ianh@apple.com>
-
- Reviewed by Joseph Pecoraro.
-
- Page::goToItem doesn't work while loading is deferred
- https://bugs.webkit.org/show_bug.cgi?id=60412
-
- Add setDefersLoading and goBack methods to LayoutTestController. We
- need to use goBack() instead of history.back() because the latter goes
- through NavigationScheduler, hence doesn't exhibit the bug.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (goBackCallback):
- (setDefersLoadingCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::goBack):
- (LayoutTestController::setDefersLoading):
-
-2011-05-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- TestWebKitAPI should build with clang if it can
- https://bugs.webkit.org/show_bug.cgi?id=60918
-
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig:
- Update CompilerVersion.xcconfig to match others.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add CompilerVersion.xcconfig to the project.
-
- * TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp:
- (TestWebKitAPI::didFailProvisionalLoadWithErrorForFrame):
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- (TestWebKitAPI::didSameDocumentNavigationForFrame):
- Add some casts to quiet warnings from clang.
-
-2011-05-16 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by David Levin.
-
- add dpranke as a reviewer
- https://bugs.webkit.org/show_bug.cgi?id=60919
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-16 Robert Hogan <robert@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- [Gtk] plugins/get-url-notify-with-url-that-fails-to-load.html crashes on buildbot
-
- https://bugs.webkit.org/show_bug.cgi?id=60838
-
- The unix test plugin needs to call the test's NPP_URLNotify
- rather than the browsers.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_url_notify):
-
-2011-05-16 Brent Fulgham <bfulgham@webkit.org>
-
- Rubber-stamped by Adam Roben.
-
- Adding myself as a reviewer.
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-16 Sam Weinig <sam@webkit.org>
-
- Fix typo pointed out by Dave Levin.
-
- * TestWebKitAPI/PlatformUtilities.h:
- (TestWebKitAPI::Util::assertWKStringEqual):
- Strig -> String.
-
-2011-05-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by David Levin.
-
- Convert api tester over to using gtest expectations directly
- https://bugs.webkit.org/show_bug.cgi?id=60862
-
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::toSTD):
- * TestWebKitAPI/PlatformUtilities.h:
- (TestWebKitAPI::Util::assertWKStrigEqual):
- Add convenience macro to compare WK2 strings. Add some overloads of toSTD to make
- the implementation of the macro simpler.
-
- * TestWebKitAPI/Test.h:
- Remove TEST_ASSERT forwarder.
-
- [Test changes elided]
-
-2011-05-16 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/60913> C++ exceptions should not be enabled when building with llvm-gcc-4.2
- <rdar://problem/9446430>
-
- Reviewed by Mark Rowe.
-
- * MiniBrowser/Configurations/Base.xcconfig: Fixed typo.
- * TestWebKitAPI/Configurations/Base.xcconfig: Ditto.
- * WebKitTestRunner/Configurations/Base.xcconfig: Ditto.
-
-2011-05-16 Jon Lee <jonlee@apple.com>
-
- Reviewed by Simon Fraser.
-
- Can't horizontally scroll iframes and overflow because wheel events are always accepted
- https://bugs.webkit.org/show_bug.cgi?id=60779
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Set new default method to nil.
-
-2011-05-16 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Tools.pro misses include(common.pri)
- https://bugs.webkit.org/show_bug.cgi?id=60883
-
- It includes features.pri, which depends on common.pri (the build is
- not broken today with the default options, but this is the right
- thing to do).
-
- * Tools.pro:
-
-2011-05-15 Dominic Cooney <dominicc@chromium.org>
-
- Unreviewed: adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-15 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Chris Jerdonek.
-
- svn-apply can't handle Git diff that only changes executable bit
- https://bugs.webkit.org/show_bug.cgi?id=60848
-
- Fixes an issue where svn-{apply, unapply} fail to handle a Git diff for a file
- that only has an executable bit change.
-
- * Scripts/VCSUtils.pm:
- - Modified regex $chunkRangeRegEx to match chunk range with ending text, say: @@ -2,6 +2,18 @@ foo().
- (parseDiff): Modified to count the number of text chunks in the diff. This should also help towards
- fixing <https://bugs.webkit.org/show_bug.cgi?id=29684>.
- * Scripts/svn-apply:
- (patch): Only use standard patch tool if the patch is non-empty and for a text file (i.e. not a binary patch).
- * Scripts/svn-unapply:
- (patch): Ditto.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl:
- - Updated expected results for test cases to account for numTextChunks.
- - Fixed malformed chunk range in test cases: "Git: simple", and "Git: Git diff followed by SVN diff".
- - Added test case "Git: file that only has an executable bit change".
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:
- - Updated expected results for test cases to account for numTextChunks.
-
-2011-05-15 Sam Weinig <sam@webkit.org>
-
- Fix windows build.
-
- * TestWebKitAPI/win/main.cpp:
- (main):
-
-2011-05-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by David Levin.
-
- Make API tester more gtest friendly
- https://bugs.webkit.org/show_bug.cgi?id=60859
-
- * Scripts/run-api-tests:
- Numerous changes:
- - Remove logic to run tests one at a time.
- - Remove logic to build up a list of tests, instead just pass --gtest_list_tests to
- the test runner and allow gtest to print it for us.
- - Forward stdout from the test tool to stdout, even in non-verbose runs.
- - Run test tool from the current working directory instead of the root webkit
- directory.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Move plist to be with other bundle sources.
-
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
- (TestWebKitAPI::TestsController::run):
- * TestWebKitAPI/TestsController.h:
- * TestWebKitAPI/mac/main.mm:
- Simplify TestController down to a single run function. We should consider removing the class
- entirely at some point.
-
-2011-05-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r86504.
- http://trac.webkit.org/changeset/86504
- https://bugs.webkit.org/show_bug.cgi?id=60853
-
- "Broke Qt EventSender in editing/selection tests" (Requested
- by mwenge on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::eventSender):
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2011-05-12 Robert Hogan <robert@webkit.org>
-
- Reviewed by Benjamin Poulain.
-
- [Qt] fix http/tests/plugins/plugin-document-has-focus.html
-
- The support for this test added to the unix test plugin here
- may allow other platforms to pass it (nearly everyone
- skips it). On Qt it required a bit of trickiness with
- the page's EventSender object to get it working fully though,
- so only unskipping Qt here.
-
- https://bugs.webkit.org/show_bug.cgi?id=60722
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::eventSender):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2011-05-14 Arno Renevier <arno@renevier.net>
-
- Reviewed by Martin Robinson.
-
- make run-gtk-tests executable
- https://bugs.webkit.org/show_bug.cgi?id=59278
-
- * Scripts/run-gtk-tests:
-
-2011-05-14 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Kevin Decker.
-
- NPP_URLNotify is not called if a URL passed to NPN_GetURLNotify fails to load
- https://bugs.webkit.org/show_bug.cgi?id=60823
- <rdar://problem/9430386>
-
- Add test that calls NPN_GetURLNotify on a URL that can't be loaded, and checks if NPP_URLNotify is called.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp: Added.
- (GetURLNotifyWithURLThatFailsToLoad::GetURLNotifyWithURLThatFailsToLoad):
- (GetURLNotifyWithURLThatFailsToLoad::NPP_New):
- (GetURLNotifyWithURLThatFailsToLoad::NPP_URLNotify):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2011-05-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r86476.
- http://trac.webkit.org/changeset/86476
- https://bugs.webkit.org/show_bug.cgi?id=60832
-
- It made plugins/get-url-notify-with-url-that-fails-to-
- load.html crash on GTK (Requested by Ossy on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp: Removed.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2011-05-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- NPP_URLNotify is not called if a URL passed to NPN_GetURLNotify fails to load
- https://bugs.webkit.org/show_bug.cgi?id=60823
- <rdar://problem/9430386>
-
- Add test that calls NPN_GetURLNotify on a URL that can't be loaded, and checks if NPP_URLNotify is called.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp: Added.
- (GetURLNotifyWithURLThatFailsToLoad::GetURLNotifyWithURLThatFailsToLoad):
- (GetURLNotifyWithURLThatFailsToLoad::NPP_New):
- (GetURLNotifyWithURLThatFailsToLoad::NPP_URLNotify):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2011-05-13 Anders Carlsson <andersca@apple.com>
-
- Build fix.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLWithJavaScriptURL.cpp:
-
-2011-05-13 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- NPN_GetURL with a javascript: URL doesn't send back the result in the stream
- https://bugs.webkit.org/show_bug.cgi?id=60810
-
- Add a test that calls NPN_GetURL on a javascript: URL and checks that it gets back the expected result.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Add files.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Add new NPN and NPP wrappers and sort them according to the order they appear in npfunctions.h
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLWithJavaScriptURL.cpp: Added.
- (GetURLWithJavaScriptURL::GetURLWithJavaScriptURL):
- (GetURLWithJavaScriptURL::NPP_New):
- (GetURLWithJavaScriptURL::NPP_NewStream):
- (GetURLWithJavaScriptURL::NPP_DestroyStream):
- (GetURLWithJavaScriptURL::NPP_WriteReady):
- (GetURLWithJavaScriptURL::NPP_Write):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_NewStream):
- (NPP_WriteReady):
- (NPP_Write):
- (NPP_URLNotify):
- call the PluginTest NPP wrappers.
-
-2011-05-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r86447.
- http://trac.webkit.org/changeset/86447
- https://bugs.webkit.org/show_bug.cgi?id=60809
-
- "Broke some uses of EventSender object on Qt" (Requested by
- mwenge on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::eventSender):
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2011-05-13 Robert Hogan <robert@webkit.org>
-
- Reviewed by Benjamin Poulain.
-
- [Qt] fix http/tests/plugins/plugin-document-has-focus.html
-
- The support for this test added to the unix test plugin here
- may allow other platforms to pass it (nearly everyone
- skips it). On Qt it required a bit of trickiness with
- the page's EventSender object to get it working fully though,
- so only unskipping Qt here.
-
- https://bugs.webkit.org/show_bug.cgi?id=60722
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::WebPage):
- (WebCore::WebPage::eventSender):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::createWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (webkit_test_plugin_new_instance):
- (webkit_test_plugin_set_window):
- (webkit_test_plugin_handle_event):
-
-2011-05-13 Adam Roben <aroben@apple.com>
-
- Exclude the Leopard NRWT bot from the core builder set
-
- Fixes <http://webkit.org/b/60392> Leopard Intel Release (NRWT) shouldn't be a core builder
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot.__init__): Tighten up the Leopard regexp to only allow the non-NRWT Leopard bots
- in the core builder set.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuildBotTest.test_builder_name_regexps): Updated to match the current set of builders and
- regexps.
-
-2011-05-13 Adam Roben <aroben@apple.com>
-
- Group all the NRWT bots together
-
- This also gets the new NRWT bots out of the middle of Apple's bots. Since these new NRWT
- bots are experimental, it seems best not to clutter up the non-experimental bots with
- experimental ones.
-
- Fixes <http://webkit.org/b/60769> New "(NRWT)" bots are right in the middle of Apple's bots
- on build.webkit.org
-
- Reviewed by Dan Bernstein.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Moved the "(NRWT)" bots next to the
- Chromium testers, which also use new-run-webkit-tests.
-
-2011-05-13 Adam Roben <aroben@apple.com>
-
- Add a plugin test that dumps the plugin window's rect
-
- Part of the test for <http://webkit.org/b/60194> <rdar://problem/9383760> REGRESSION
- (r79167): Windowed plugins in Google Reader don't move when the article list is scrolled
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/DumpWindowRect.cpp: Added.
- (DumpWindowRect::DumpWindowRect): Just call up to the base class.
- (DumpWindowRect::performWindowGeometryTest): Find our window rect relative to the test
- harness window and log it.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Added DumpWindowRect.
-
-2011-05-13 Adam Roben <aroben@apple.com>
-
- Move code required for most tests of plugin window geometry into a base class
-
- WebKit2's asynchronous plugin window positioning makes testing window geometry tricky. By
- having all the trickiness in a shared base class, writing new window geometry tests will be
- much easier.
-
- Fixes <http://webkit.org/b/60776> It's hard to write tests that check plugin window geometry
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp:
- (WindowRegionIsSetToClipRect::WindowRegionIsSetToClipRect): Changed to inherit from the new
- WindowGeometryTest base class. Most of the code from this class was moved to the new base
- class.
- (WindowRegionIsSetToClipRect::performWindowGeometryTest): Renamed from checkWindowRegion.
- This is called by the base class when it is safe to check the window's geometry. Note that
- the m_didCheckWindowRegion logic was removed completely; it has never been needed and was
- just vestigial code from an earlier version of this test.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Added new
- WindowGeometryTest class.
-
- * DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.cpp: Added. Code came from
- WindowRegionIsSetToClipRect.
- (WindowGeometryTest::finishTest): This is the only change from WindowRegionIsSetToClipRect.
- We now call the new virtual performWindowGeometryTest function instead of checkWindowRegion.
- Subclasses can implement that function to perform their own tests.
-
- * DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.h: Added.
-
-2011-05-13 Zoltan Herczeg <zherczeg@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- Missing 2nd #EOF if WebProcess is killed.
- https://bugs.webkit.org/show_bug.cgi?id=60761
-
- If the WebProcess is killed, only one #EOF is yielded
- by WebKitTestRunner. However, run-webkit-test wait for
- a second #EOF, which signals the finishing of pixel dump.
- Since this never happens, run-webkit-test waits forever.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::dump):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
-
-2011-05-13 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [NRWT] chromium-linux tests shouldn't run on other platforms
- https://bugs.webkit.org/show_bug.cgi?id=60162
-
- Remove _tests_for_other_platforms defs because r82753
- implemented it properly in the baseclass in webkit.py.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
-
-2011-05-12 Ryuan Choi <ryuan.choi@samsung.com>
-
- Reviewed by Antonio Gomes.
-
- [EFL] Remove unused option of EWeblauncher
- https://bugs.webkit.org/show_bug.cgi?id=60747
-
- Remove sudo-workaround option.
- This option is not used and make other option wrong.
-
- * EWebLauncher/main.c:
-
-2011-05-12 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Fix config.json to address missing WK2 builder/tester config.
- Fix naming of machines (xserve not macpro)
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-05-12 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Stephanie Lewis.
-
- Add SnowLeopard Debug builder and Test bot.
- apple-xserve-8 = SL Debug Tester.
- apple-xserve-9 = SL Debug Builder.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-05-12 Adam Barth <abarth@webkit.org>
-
- This patch disables sheriffbot's bug postings. He's just been way too
- spammy recently due to test flakiness.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
-
-2011-05-11 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Anders Carlsson.
-
- After relaunching an unresponsive web process, web page stops responding to mouse movement
- https://bugs.webkit.org/show_bug.cgi?id=60669
- <rdar://problem/9409934>
-
- This test follows the steps needed to reproduce this bug:
- 1) Hang the web process
- 2) While the web process is hung, move the mouse (so WebPageProxy thinks it is processing a mouse move event)
- 3) Kill and restart the WebProcess
- 4) Move the mouse
-
- We are testing that we receive mouse move events after the WebProcess has restarted.
-
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame): Set a flag that we finished loading.
- (TestWebKitAPI::processDidBecomeUnresponsive): Kill the web process once we become unresponsive.
- (TestWebKitAPI::processDidCrash): Reload the page when the process crashes, which restarts the web process.
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp: Added.
- (TestWebKitAPI::MouseMoveAfterCrashTest::MouseMoveAfterCrashTest):
- (TestWebKitAPI::MouseMoveAfterCrashTest::didReceiveMessage):
- * TestWebKitAPI/Tests/WebKit2/mouse-move-listener.html: Added.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::simulateMouseMove): Sends the messages that simulate a mouse move.
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::simulateMouseMove): Ditto.
-
- Add new files.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
- * TestWebKitAPI/win/copy-resources.cmd:
-
-2011-05-12 Tomasz Morawski <t.morawski@samsung.com>
-
- Reviewed by Antonio Gomes.
-
- [EFL] Added initialization/shutdown for ecore_file library
- https://bugs.webkit.org/show_bug.cgi?id=60457
-
- Added initialization and shuthown for ecore_file library and replaced
- realpath function to ecore_file_realpath.
-
- * EWebLauncher/main.c:
- (quit):
- (findThemePath):
- (main):
-
-2011-05-12 Young Han Lee <joybro@company100.net>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Implement layoutTestController.layerTreeAsText()
- https://bugs.webkit.org/show_bug.cgi?id=60367
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-05-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by David Levin.
-
- Teach validate-committer-lists how to validate committers bugzilla_email()
- https://bugs.webkit.org/show_bug.cgi?id=60651
-
- It turns out we currently have 9 committers with invalid values for their
- bugzilla_email field (meaning we don't know what email is their bugzilla account).
- "Alexander Kellett" <lypanov@mac.com>
- "Andre Boule" <aboule@apple.com>
- "Cameron McCormack" <cam@webkit.org>
- "Chris Petersen" <cpetersen@apple.com>
- "Eli Fidler" <eli@staikos.net>
- "Matt Lilek" <webkit@mattlilek.com>
- "Pierre d'Herbemont" <pdherbemont@free.fr>
- "Scott Violet" <sky@chromium.org>
- "Adam Treat" <treat@kde.org>
-
- Most of those haven't committed in a very long time, so it's not suprising
- that we haven't noticed that their bugzilla emails are bogus.
-
- * Scripts/validate-committer-lists:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
-
-2011-05-11 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by David Levin.
-
- https://bugs.webkit.org/show_bug.cgi?id=59561
- Switch TestWebKitAPI to GTest
-
- Fixes Makefiles and WinCairo build as well
-
- * Makefile:
- * Scripts/build-api-tests:
- * Scripts/run-api-tests:
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/Test.h:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
- (TestWebKitAPI::TestsController::dumpTestNames):
- (TestWebKitAPI::TestsController::runTestNamed):
- (TestWebKitAPI::TestsController::runAllTests):
- * TestWebKitAPI/TestsController.h:
- * TestWebKitAPI/mac/main.mm:
- (main):
-
-2011-05-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Add Luke Macpherson to committers.py as a Contributor
- https://bugs.webkit.org/show_bug.cgi?id=60639
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-11 Noam Rosenthal <noam.rosenthal@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Texmap][Qt] Upstream texture-mapper changes from Qt's WebKit2 branch
- https://bugs.webkit.org/show_bug.cgi?id=60439
-
- Patch 4/12: Update the build script to enable 3D rendering by default for Qt.
-
- * Scripts/build-webkit:
-
-2011-05-11 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Adam Roben.
-
- REGRESSION (r86161): WKPreferences API test failing on Windows
- https://bugs.webkit.org/show_bug.cgi?id=60658
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
-
-2011-05-11 Alice Boxhall <aboxhall@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Modify jsonresults_unittest.py to use a dict format for its test data, and modify jsonresults.py to flatten hierarchical directory structures in input JSON.
- https://bugs.webkit.org/show_bug.cgi?id=60521
-
- First steps towards making the results JSON all hierarchical.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-05-11 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, adding new LayoutTestController method stubs.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::localStorageDiskUsageForOrigin):
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
-
-2011-05-11 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Darin Adler.
-
- [WebKit2] exceededDatabaseQuota function on WKPageUIClient needs to provide information
- about the usage for both the origin overall and the database in question.
- https://bugs.webkit.org/show_bug.cgi?id=60573
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::exceededDatabaseQuota):
-
-2011-05-10 Stephen White <senorblanco@chromium.org>
-
- Reviewed by David Levin.
-
- Adding myself as a reviewer.
- https://bugs.webkit.org/show_bug.cgi?id=60587
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-11 Eric Seidel <eric@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- queues.webkit.org should show 1000+ instead of 1000 when we hit the query limit
- https://bugs.webkit.org/show_bug.cgi?id=60614
-
- AppEngine has a result limit of 1000. We hit that when trying
- to find out how many patches the style-queue (and other queues)
- have passed in the last 30 days. So lets display 1000+ instead
- of 1000 to avoid confusion. (Ossy was asking about this in #webkit tonight.)
-
- I also made the status pages show "never" instead of just "ago" when we
- haven't seen a pass or boot message in the last 1000 messages.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/templates/queuestatus.html:
-
-2011-05-11 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- sheriffbot shouldn't spam bugs when it can't figure out who to blame
- https://bugs.webkit.org/show_bug.cgi?id=60613
-
- This patch limits the number of bugs sheriffbot will spam to three.
- Ideally, we'd come up with some smarter huerstics, but hopefully this
- will cut down on the bugmail spam for slow bots.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
-
-2011-05-10 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS bots should be robust against test-webkitpy hangs
- https://bugs.webkit.org/show_bug.cgi?id=60579
-
- Added a killAfterTimeout subroutine, which takes a child_pid
- and timeout, and will setup a watchdog process to kill that child
- after the timeout. killAfterTimeout will waitpid on the child.
-
- * EWSTools/start-queue.sh:
-
-2011-05-10 MORITA Hajime <morrita@google.com>
-
- Unreviewed, moved myself to the reviewers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-10 Anton D'Auria <adauria@apple.com>
-
- Reviewed by David Levin.
-
- StorageTracker should report actual local storage usage on disk
- https://bugs.webkit.org/show_bug.cgi?id=60558
-
- * DumpRenderTree/LayoutTestController.cpp:
- (localStorageDiskUsageForOriginCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::localStorageDiskUsageForOrigin):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::localStorageDiskUsageForOrigin):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::localStorageDiskUsageForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::localStorageDiskUsageForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::localStorageDiskUsageForOrigin):
-
-2011-05-10 Anton D'Auria <adauria@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Add ApplicationCache API to get disk usage per origin
- https://bugs.webkit.org/show_bug.cgi?id=57127
-
- Added test that loads two frames with ~15Kb image, checks usage,
- deletes app cache, verifies usage is 0.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (applicationCacheDiskUsageForOriginCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp: Added stub.
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Added stub.
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Added stub.
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Added stub.
- (LayoutTestController::applicationCacheDiskUsageForOrigin):
-
-2011-05-10 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Unreviewed, adding Rafael Antognolli as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-10 Chris Evans <cevans@chromium.org>
-
- Reviewed by Adam Barth.
-
- Add WebCore::Setting to block displaying and/or running insecure content on secure pages
- https://bugs.webkit.org/show_bug.cgi?id=58378
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setAllowDisplayOfInsecureContent):
- (LayoutTestController::setAllowRunningOfInsecureContent):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- Add plumbing for new settings to Chromium DRT.
-
-2011-05-10 Enrica Casucci <enrica@apple.com>
-
- Reviewed by Beth Dakin.
-
- Added my name to the reviewers list and removed my name from
- to committer-only list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-10 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style shouldn't filter the errors using the modified lines for the xml and test expectations checkers.
- https://bugs.webkit.org/show_bug.cgi?id=60466
-
- * Scripts/webkitpy/style/checker.py: (unrelated) style fix.
- * Scripts/webkitpy/style/checker_unittest.py: Remove the file_path check since
- that property was removed.
- * Scripts/webkitpy/style/checkers/test_expectations.py: Turn off the line
- filtering for errors.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Add testing to
- verify that the line filtering is turned off.
- * Scripts/webkitpy/style/checkers/xml.py: Turn off the line filtering for errors
- and remove the unused file_path parameter.
- * Scripts/webkitpy/style/checkers/xml_unittest.py: Add testing to verify that the
- line filtering is turned off (and fix test_no_error).
- * Scripts/webkitpy/style/error_handlers.py: Added a way to turn off the filtering
- of errors based on the lines changed in the patch.
- * Scripts/webkitpy/style/error_handlers_unittest.py: Added a test for turning off
- the filtering.
-
-2011-05-10 Adam Roben <aroben@apple.com>
-
- Update some plugin tests to work with WebKit2's asynchronous windowed plugin positioning on Windows
-
- Fixes <http://webkit.org/b/60442> <rdar://problem/9403200> REGRESSION (r85795):
- platform/win/plugins/window-geometry-initialized-before-set-window.html and
- platform/win/plugins/window-region-is-set-to-clip-rect.html failing on Windows 7 Release
- (WebKit2 Tests)
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp:
- (NPNInvalidateRectInvalidatesWindow::NPP_SetWindow): Moved some code from here to the new
- WindowedPluginTest::testHarnessWindow function.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp:
- (WindowGeometryInitializedBeforeSetWindow::NPP_SetWindow): Only check the window's size, not
- its position. In WebKit2, the position won't have been set yet, so we can't test it. But it
- turns out only the size mattered for <http://webkit.org/b/46716>, which this test was
- created for.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp:
- (WindowRegionIsSetToClipRect::WindowRegionIsSetToClipRect): Converted to be a
- WindowedPluginTest, and initialized new members.
- (WindowRegionIsSetToClipRect::startTest): Make our plugin window visible, and set things up
- to ensure we get a WM_WINDOWPOSCHANGED message about it becoming visible.
- (WindowRegionIsSetToClipRect::finishTest): Check that the window region is what we expect,
- then clean up and tell the test harness we're done.
- (WindowRegionIsSetToClipRect::checkWindowRegion): Moved code to check the window region here
- from NPP_SetWindow. Changed to use the fancy new log() function instead of pluginLog().
- (WindowRegionIsSetToClipRect::showTestHarnessWindowIfNeeded): Show the test harness's window
- if it is hidden. This is needed to ensure we get a WM_WINDOWPOSCHANGED message when our own
- window becomes visible.
- (WindowRegionIsSetToClipRect::hideTestHarnessWindowIfNeeded): Hide the test harness's window
- if it was hidden at the start of the test.
- (WindowRegionIsSetToClipRect::wndProc): When our timer fires, tell the UI process to paint.
- This should cause our window to become visible and our window region to get set. When we get
- a WM_WINDOWPOSCHANGED message, we can finally finish the test.
- (WindowRegionIsSetToClipRect::NPP_GetValue): Return our script object.
- (WindowRegionIsSetToClipRect::ScriptObject::hasMethod): We only have one method:
- "startTest".
- (WindowRegionIsSetToClipRect::ScriptObject::invoke): Call through to the PluginTest object.
-
- * DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp:
- (WindowedPluginTest::testHarnessWindow):
- * DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h:
- Added this helper function. Code came from NPNInvalidateRectInvalidatesWindow.
-
-2011-05-10 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Add new qt-4.8 platform for layout testing
- https://bugs.webkit.org/show_bug.cgi?id=60544
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2011-05-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r86108.
- http://trac.webkit.org/changeset/86108
- https://bugs.webkit.org/show_bug.cgi?id=60533
-
- Broke makefile based builds and Cairo (Requested by weinig on
- #webkit).
-
- * Scripts/build-api-tests:
- * Scripts/run-api-tests:
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/Test.h:
- (TestWebKitAPI::Test::~Test):
- (TestWebKitAPI::Test::name):
- (TestWebKitAPI::Test::Register::Register):
- (TestWebKitAPI::Test::Register::create):
- (TestWebKitAPI::Test::Test):
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
- (TestWebKitAPI::TestsController::dumpTestNames):
- (TestWebKitAPI::TestsController::runTestNamed):
- (TestWebKitAPI::TestsController::testFailed):
- (TestWebKitAPI::TestsController::registerCreateTestFunction):
- * TestWebKitAPI/TestsController.h:
- * TestWebKitAPI/mac/main.mm:
- (main):
-
-2011-05-09 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Skip reftests if pixel tests are disabled.
-
- https://bugs.webkit.org/show_bug.cgi?id=59078
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2011-05-09 Chang Shu <cshu@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] DumpRenderTreeQt needs an implementation of unmarkText
- https://bugs.webkit.org/show_bug.cgi?id=60499
-
- The implementation is similar to gtk.
-
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- (TextInputController::unmarkText):
- * DumpRenderTree/qt/TextInputControllerQt.h:
-
-2011-05-09 James Robinson <jamesr@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [chromium] Teach new-run-webkit-tests to follow symlinks when trying to determine the arch of DumpRenderTree on linux
- https://bugs.webkit.org/show_bug.cgi?id=60520
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2011-05-09 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by Sam Weinig.
-
- Switch TestWebKitAPI to GTest
- https://bugs.webkit.org/show_bug.cgi?id=59561
-
- * Scripts/build-api-tests:
- * Scripts/run-api-tests:
- * TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops:
- * TestWebKitAPI/Test.h:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/VectorBasic.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/TestsController.cpp:
- (TestWebKitAPI::TestsController::TestsController):
- (TestWebKitAPI::TestsController::dumpTestNames):
- (TestWebKitAPI::TestsController::runTestNamed):
- (TestWebKitAPI::TestsController::runAllTests):
- * TestWebKitAPI/TestsController.h:
- * TestWebKitAPI/mac/main.mm:
- (main):
-
-2011-05-09 Igor Oliveira <igor.oliveira@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] DRT eventSender.addTouchPoint method is not setting the start position
- https://bugs.webkit.org/show_bug.cgi?id=60487
-
- When adding a new touch point, the start position of this point needs to be set.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::addTouchPoint):
-
-2011-05-09 Robert Hogan <robert@webkit.org>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=57137
-
- Unskip plugins/embed-prefers-plugins-for-images.html
-
- Add image/png mime-type to test netscape plugin on Unix.
-
- * DumpRenderTree/unix/TestNetscapePlugin/TestNetscapePlugin.cpp:
- (NP_GetMIMEDescription):
-
-2011-05-09 Alice Boxhall <aboxhall@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Pull jsonresults_unittest test cases out into separate test methods.
- https://bugs.webkit.org/show_bug.cgi?id=60418
-
- * TestResultServer/model/jsonresults_unittest.py:
-
-2011-05-09 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] fix fast/dom/Geolocation/window-close-crash.html
- https://bugs.webkit.org/show_bug.cgi?id=60458
-
- Update all pages with Mock position/error/permission.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::setMockGeolocationPosition):
-
-2011-05-09 Shishir Agrawal <shishir@chromium.org>
-
- Reviewed by Tony Gentilcore.
-
- Implement Page Visibility API.
- https://bugs.webkit.org/show_bug.cgi?id=54181
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setPageVisibilityCallback):
- (resetPageVisibilityCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::setPageVisibility):
- (LayoutTestController::resetPageVisibility):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::resetPageVisibility):
- (LayoutTestController::setPageVisibility):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-05-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Testing EWS spins on patches with a large number of failures
- https://bugs.webkit.org/show_bug.cgi?id=60441
-
- In cases where the tree has a small number of persistent failures but a
- patch has a large number of failures, we weren't believing any results.
- That lead to us retrying the patch forever while we waited for
- trustworthy results that would never come.
-
- This patch loosens the semantics of unexpected_failures to return a
- subset (rather than the exact set) of unexpected failures. In the case
- where the tree has a bounded number of failures and the patch has an
- unbounded number of failures, we can accurately compute such a subset
- and reject the patch.
-
- * Scripts/webkitpy/tool/bot/expectedfailures.py:
- * Scripts/webkitpy/tool/bot/expectedfailures_unittest.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-07 Joe Mason <jmason@rim.com>
-
- Reviewed by Daniel Bates.
-
- FrameLoader::isProcessingUserGesture is wrong in dispatchWillPerformClientRedirect
- https://bugs.webkit.org/show_bug.cgi?id=52211
-
- Dump isUserProcessingGesture in willPerformClientRedirect so that the layout tests can be extended.
- (For the Mac and Chromium ports - other ports don't support dumping user gestures in DRT.)
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willPerformClientRedirect):
- (WebViewHost::didStartProvisionalLoad):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:willPerformClientRedirectToURL:delay:fireDate:forFrame:]):
-
-2011-05-07 Daniel Bates <dbates@webkit.org>
-
- Attempt to fix the build; remove some more references to isTiger(), which was removed in changeset 86007
- <http://trac.webkit.org/changeset/86007> (bug #60438).
-
- * Scripts/old-run-webkit-tests:
- - Removed reference to isTiger() from openDumpTool(), captureSavedCrashLog(), and
- file local variable.
-
-2011-05-07 Pratik Solanki <psolanki@apple.com>
-
- Reviewed by Darin Adler.
-
- Remove references to Tiger in scripts
- https://bugs.webkit.org/show_bug.cgi?id=60438
-
- Remove isTiger() and all of the code that depends on it.
-
- * Scripts/build-webkit:
- * Scripts/ensure-valid-python:
- * Scripts/gdb-safari:
- * Scripts/webkitdirs.pm:
-
-2011-05-06 David Grogan <dgrogan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- update link to message about mac 64bit git binaries
- https://bugs.webkit.org/show_bug.cgi?id=60411
-
- The original message implied (correctly, at-the-time) that
- http://code.google.com/p/git-osx-installer/ doesn't provide 64-bit
- binaries. The new message notes that they do. This might prevent someone
- else from spending a few minutes confused.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-05-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: crashes in race with crashing DRT
- https://bugs.webkit.org/show_bug.cgi?id=60238
-
- This fixes a race where if we wrote the URL to DRT and
- DRT crashed immediately, we could get a broken pipe
- error back during the write() and not handle it correctly,
- causing NRWT to also crash.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-05-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a --skip-integrationtests mode to test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=60354
-
- These two test suites account for 2/3 of test-webkitpy's running time
- because they're not actually unit tests. They're integration tests.
- This patch adds the ability to skip integration tests by passing a
- command line argument to test-webkitpy. The buildbots will continue to
- run these integration tests to make sure they don't regress. This
- option is for use by developers when working on parts of the code that
- are well-covered by unit tests.
-
- * Scripts/webkitpy/common/system/file_lock_integrationtest.py: Copied from Tools/Scripts/webkitpy/common/system/file_lock_unittest.py.
- * Scripts/webkitpy/common/system/file_lock_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Copied from Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py: Removed.
- * Scripts/webkitpy/test/main.py:
-
-2011-05-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- The results.zip generated by the Chromium EWS are too big
- https://bugs.webkit.org/show_bug.cgi?id=60352
-
- Currently results.zip created by the Chromium EWS bot contain roughly
- 1000 tests that we expect to fail. These test results are not helpful
- to contributors.
-
- There are several approaches to solving this problem:
-
- 1) We could be more selective about which files to include in the zip.
- 2) We could ask new-run-webkit-tests not to generate results for
- expected failures.
- 3) We could ask new-run-webkit-tests not to run tests that we expect to
- fail.
-
- This patch takes approach (3). Currently, we're ignoring the outcome
- of failing tests anyway, so there's not much point in actually running
- them. As a side benefit, this will speed up the test run by about 6%.
- In the future, we might revisit this decision and choose another
- approach.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2011-05-06 Gabor Rapcsanyi <rgabor@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Use qt-arm platform instead of qt-linux on ARM platform.
-
- * Scripts/old-run-webkit-tests:
-
-2011-05-06 Adam Barth <abarth@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- Add an option to NRWT to skip failing tests
- https://bugs.webkit.org/show_bug.cgi?id=60295
-
- This option is similar to the way old-run-webkit-tests works. We're
- planning to use this option on the testing EWS bots because they don't
- use information from failing tests yet.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-05-04 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Dimitri Glazkov.
-
- Implement LayoutTestController::pseudoShadowId()
- https://bugs.webkit.org/show_bug.cgi?id=60034
-
- shadowPseudoId support in the various LayoutTestController
- implementations.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (shadowPseudoIdCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::shadowPseudoId):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::shadowPseudoId):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::shadowPseudoId):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::shadowPseudoId):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::shadowPseudoId):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::shadowPseudoId):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowPseudoId):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-05-06 Adam Barth <abarth@webkit.org>
-
- EWS can't reject patches
- https://bugs.webkit.org/show_bug.cgi?id=60345
-
- We're supposed to use patch.id() for the attachment ID, silly.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-05 Steve Lacey <sjl@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Fix generation of results html file by passing relative path to scm
- methods.
- Generate diff images for results html file.
-
- https://bugs.webkit.org/show_bug.cgi?id=60086
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-05-05 Andy Estes <aestes@apple.com>
-
- Reviewed by Daniel Bates.
-
- update-webkit should handle Internal using a different VCS than OpenSource.
- https://bugs.webkit.org/show_bug.cgi?id=60310
-
- isGit() and isSVN() cache their results, so Internal will always be
- updated using the VCS commands used for OpenSource. If Internal uses a
- different VCS, this will fail. Fix this by calling isGitDirectory() and
- isSVNDirectory() instead, which do not cache their results.
-
- * Scripts/update-webkit:
-
-2011-05-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt: revamp integration tests incl. tests for servers
- https://bugs.webkit.org/show_bug.cgi?id=59985
-
- This change adds the ability to run "integration tests" that
- depend on (and affect) the local environment on your machine.
- These tests can be run manually by invoking python on the
- test file in question and passing the '-i' flag, but are
- not run automatically as part of test-webkitpy.
-
- Integration tests are identified by being methods named as
- "integration_test_*" instead of "test_*", and we use a
- custom TestLoader instead of the default one provided by
- unittest.
-
- This change also adds a protected "_default_to_apache" method
- to the port object so we can do the right thing when starting
- and stopping web servers with less mechanism.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2011-05-05 Adam Roben <aroben@apple.com>
-
- Robustify DRT's pixel-dumping code against semi-random alpha channel values on Windows
-
- DRT generates a pixel dump on Windows using the WM_PRINT message. This message (just like
- most of GDI) doesn't write anything meaningful into the alpha channel. In some cases, the
- alpha channel will even get filled with zeros (like when ::GradientFill is used). To
- safeguard against this, we fill the alpha channel with constant full opacity after the
- WM_PRINT message is handled to ensure we end up with an opaque image. (Note that we can't
- just ignore the alpha channel when creating the PNG; Mac's pixel results have an alpha
- channel, and we want to be able to compare Mac and Windows pixel results, so Windows pixel
- results need an alpha channel, too.)
-
- Fixes <http://webkit.org/b/60300> draws-gradient.html's pixel results can't be correctly
- generated due to alpha channel weirdness
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (makeAlphaChannelOpaque): Added this helper function to fill a bitmap's alpha channel with
- constant full opacity.
- (createBitmapContextFromWebView): Make the bitmap's alpha channel opaque before wrapping it
- in a CGContext or cairo_surface.
-
-2011-05-05 Adam Roben <aroben@apple.com>
-
- Add support for layoutTestController.dumpAsText(true) to WebKitTestRunner
-
- Passing true tells the test harness to dump pixels even though we're not dumping a render
- tree.
-
- Fixes <http://webkit.org/b/60298> Calling layoutTestController.dumpAsText(true) in
- WebKitTestRunner doesn't result in pixel results being generated
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added dumpPixels
- argument to dumpAsText.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump): Updated for dumpAsText change.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::dumpAsText): Store the dumpPixels argument.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Updated for IDL change.
-
- * WebKitTestRunner/win/InjectedBundle.vcproj: Added .idl files as a convenience for Windows
- developers.
-
-2011-05-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: merge os, version fields in test config
- https://bugs.webkit.org/show_bug.cgi?id=60004
-
- This change removes the 'o/s' field from the TestConfiguration
- object, and changes the 'MAC', 'WIN', and 'LINUX' modifiers in
- the expectations file to macros that expand to the version names
- for each platform.
-
- This means that you can once again put any subset of the
- operating system versions on a single line, e.g.:
- BUGX LEOPARD XP LINUX : fast/html/foo.html = FAIL
-
- This change will break any existing test_expectations.txt
- file that uses the "OS-VERSION" macros, which are no longer
- needed. It turns out they were never needed, as just VERSION
- by itself was sufficient. The test_expectations.txt file should
- be updated accordingly prior to landing this change.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-05-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- [chromium] switch from Lucida to free fonts for Hindi and Thai
- https://bugs.webkit.org/show_bug.cgi?id=60287
-
- The fonts are provided by the ttf-thai-tlwg and ttf-indic-fonts
- packages on Lucid. There are actually multiple Thai fonts in the
- package, so I just picked one.
-
- * DumpRenderTree/chromium/TestShellGtk.cpp:
- (setupFontconfig):
-
-2011-05-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] google-chrome-64 builds should now fallback to chromium-linux-x86_64 results
- https://bugs.webkit.org/show_bug.cgi?id=60290
-
- It used to be that google-chrome-32 was hardy32, google-chrome-64 was
- hardy64, chromium-linux was hardy32 and chromium-linux-x86_64 was
- lucid64. Because of that, google-chrome-64 used to skip the
- chromium-linux-x86_64 results since they were more incorrect.
-
- Now that we're switching to lucid for google-chrome, we want
- google-chrome-64 to fall back to chromium-linux-x86_64.
-
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
-
-2011-05-05 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: merge TestExpectations, TestExpectationsFile classes
- https://bugs.webkit.org/show_bug.cgi?id=60002
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/style/checkers/test_expectations.py:
-
-2011-05-05 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should reject patches which fail ewses
- https://bugs.webkit.org/show_bug.cgi?id=47534
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-05 Chang Shu <cshu@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt][WK2] Support PageGroup in QGraphicsWKView/QWKPage constructors
- https://bugs.webkit.org/show_bug.cgi?id=59638
-
- 1. Call QGraphicsWKView constructor with pageGroupRef.
- 2. Disable setFontFamily calls as it breaks Qt test fonts.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WebView::WebView):
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-05-05 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by David Kilzer.
-
- Add --only-webkit option to build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=60245
-
- * Scripts/build-webkit: If --only-webkit was specified
- just build the WebKit project, and not its dependencies.
-
-2011-05-05 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Darin Adler.
-
- Add didNotHandleWheelEvent callback to WKPageUIClient
- https://bugs.webkit.org/show_bug.cgi?id=60203
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowUIClientInit): Stub out didNotHandleWheelEvent callback.
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Stub out didNotHandleWheelEvent callback.
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create): Stub out didNotHandleWheelEvent callback.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage): Stub out didNotHandleWheelEvent callback.
- (WTR::TestController::initialize): Stub out didNotHandleWheelEvent callback.
-
-2011-05-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add more missing imports from scm refactor
- https://bugs.webkit.org/show_bug.cgi?id=60239
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
-
-2011-05-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- sheriff-bot is having more exception trouble
- https://bugs.webkit.org/show_bug.cgi?id=60233
-
- A webpage-forced build was causing SB to throw an exception.
- We've long had this bug, but we just didn't notice it until now.
-
- In debugging this I found we fetch an absurd amount of data now
- that we use buildbot's json (instead of xmlrpc), so I added
- the filter=1 parameter to reduce it a little. That required
- me to handle the case where filter=1 would strip
- result=0 in some cases (it's unclear why it does that).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-05-04 Cris Neckar <cdn@chromium.org>
-
- Unreviewed, Adding Cris Neckar as a committer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-04 Siddharth Mathur <siddharth.mathur@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt][Wk2][Symbian] Capabilities for Qt MiniBrowser and QtWebProcess on Symbian
- https://bugs.webkit.org/show_bug.cgi?id=59462
-
- * MiniBrowser/qt/MiniBrowser.pro: Add Symbian OS capabilities to executable. Also enable data paging.
-
-2011-05-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- The testing EWS bots should upload layout-test-results.zip to bugs after failures
- https://bugs.webkit.org/show_bug.cgi?id=60223
-
- This required sharing a bit of code between the commit-queue
- (which already knew how to do this) and the new EWS testing bots.
-
- In the process I also cleaned up EWS testing a little and
- removed some dead code from the commit-queue.
-
- * Scripts/webkitpy/common/config/committervalidator.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-05-04 James Kozianski <koz@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Add method to make a Port able to retrieve TestOutputSets from its builders.
- https://bugs.webkit.org/show_bug.cgi?id=58211
-
- This will be used in the new rebaseline script - TestOutputs are
- potential new baselines.
-
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-05-04 Eric Seidel <eric@webkit.org>
-
- Reviewed by Ojan Vafai.
-
- sheriff-bot can't parse results.html
- https://bugs.webkit.org/show_bug.cgi?id=60196
-
- The problem was that the NRWT bots are currently core
- and so sheriff-bot was trying to diagnose failures on
- them. It was trying to parse their results.html file
- and BeautifulSoup was throwing an exception.
-
- It seems our version of BeautifulSoup was quite old
- and unable to handle <script> tags correctly.
- This moves us to 3.2 which doesn't seem to have this bug.
-
- * Scripts/webkitpy/thirdparty/BeautifulSoup.py:
-
-2011-05-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Make the EWS test logging less verbose
- https://bugs.webkit.org/show_bug.cgi?id=60201
-
- This should help us generate less than a hundred MB of logs per hour.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/config/ports_unittest.py:
-
-2011-05-04 Tao Bai <michaelbai@chromium.org>
-
- Reviewed by David Kilzer.
-
- Populate touch-icon url to FrameLoaderClient
- https://bugs.webkit.org/show_bug.cgi?id=59143
-
- Disable touch icon by default.
-
- * Scripts/build-webkit:
-
-2011-05-04 Justin Novosad <junov@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- [Chromium] Add gpu acceleration flags to DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=60168
- Adding support for command line flags
- enable-accelerated-2d-canvas an
- enable-accelerated-drawing in DumpRenderTree.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setLegacyAccelerated2dCanvasEnabled):
- (TestShell::setAcceleratedDrawingEnabled):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-05-04 Ademar de Souza Reis Jr. <ademar.reis@openbossa.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] run-qtwebkit-tests misses exec bit
- https://bugs.webkit.org/show_bug.cgi?id=60188
-
- Also removing an unecessary import (mostly to let this bugfix goes
- through the system, as this is just a chmod).
-
- * Scripts/run-qtwebkit-tests:
-
-2011-05-04 Adam Barth <abarth@webkit.org>
-
- Fix import of ircproxy module to actually import the module. I don't
- really understand how this code could have worked before.
-
- * Scripts/webkitpy/common/host.py:
-
-2011-05-04 Siddharth Mathur <siddharth.mathur@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt][Wk2][Symbian] Minor UI facelift for MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=60172
-
- * MiniBrowser/qt/BrowserWindow.cpp: Bring in UI layout changes from QtTestBrowser
- (BrowserWindow::BrowserWindow):
-
-2011-05-04 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] --new-baseline should put baselines in the directory specified by --additional-platform-directory
- https://bugs.webkit.org/show_bug.cgi?id=60088
-
- Makes --new-baseline put new baselines into the first entry in the
- baseline search path, including any additional directories passed in via
- --additional-platform-directory.
-
- Simplifies baseline_path() by making it return the first entry in the
- baseline search path instead of requiring each port to have an
- implementation (should not result in any behavior change).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-05-04 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Fix circular dependency in webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=60075
-
- These functions don't belong in bugzilla.py. They only exist there
- because they are old. Really, these functions shouldn't be free
- functions at all, but that's a patch for another day.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/config/urls.py:
- * Scripts/webkitpy/common/net/bugzilla/__init__.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/style/checkers/changelog.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2011-05-03 Pratik Solanki <psolanki@apple.com>
-
- Reviewed by Dan Bernstein.
-
- https://bugs.webkit.org/show_bug.cgi?id=60141
- Remove reference to libWebKitSystemInterfaceTiger.a from build-webkit
-
- * Scripts/build-webkit:
-
-2011-05-03 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Update rebaseline queue server to handle hierarchical test results
- https://bugs.webkit.org/show_bug.cgi?id=60063
-
- Update test result parsing done by the rebaseline queue server to handle
- the hierarchical test result output that is generated as of r85254.
-
- * RebaselineQueueServer/templates/builder-queue-edit.html:
-
-2011-05-03 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Roben.
-
- webkit-patch post-commits HEAD^.. throws an exception
- https://bugs.webkit.org/show_bug.cgi?id=60027
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2011-05-03 Luiz Agostini <luiz.agostini@openbossa.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Layout tests may timeout if loadFinished receives false
- https://bugs.webkit.org/show_bug.cgi?id=60064
-
- When using layoutTestController.queueLoad(), if QWebPage::loadFinished(bool) receives false
- then the layout test may timout. It happens that QWebPage::loadFinished() receives false when
- a response is ignored, like it should be for 204 responses. It is a problem for creating
- tests for 204 responses for example.
-
- This change has been tested and it causes no regressions in layout tests.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::maybeDump):
-
-2011-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r85659.
- http://trac.webkit.org/changeset/85659
- https://bugs.webkit.org/show_bug.cgi?id=59977
-
- restarting isn't working correctly
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: fix http server startup/shutdown
-
- Previous versions of the code had three problems that made startup
- and shutdown flaky. The first is that it would throw exceptions
- if it couldn't delete stale log files, which was overly
- paranoid. The second is that some of the exceptions weren't
- defined properly. The third, and most important, is that it was
- using urllib to check if ports were available, which was leaving
- sockets in a half-closed state, and keeping ports from being
- reused. By switching to raw sockets, we are able to now reliably
- restart.
-
- This change also switches the code to using Executives to stop
- processes, which will let us delete a bunch of code in the
- port/* implementations and fix a weird layering problem in a
- subsequent patch.
-
- https://bugs.webkit.org/show_bug.cgi?id=59977
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server_base.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
-
-2011-05-03 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- fix failing printing_unittest on win32
- https://bugs.webkit.org/show_bug.cgi?id=59963
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2011-05-03 Adam Roben <aroben@apple.com>
-
- Fix most strict PassOwnPtr violations on Windows
-
- Fixes <http://webkit.org/b/60025> Windows should (almost) build with strict PassOwnPtr
- enabled
-
- Reviewed by Anders Carlsson.
-
- * WebKitAPITest/Test.h: Use adoptPtr.
-
-2011-05-03 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- Add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-03 James Robinson <jamesr@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- [chromium] Layout test animations/3d/replace-filling-transform.html failing
- https://bugs.webkit.org/show_bug.cgi?id=59839
-
- Add animations/3d to the list of tests run in the chromium-gpu configuration since these tests exercise the compositor.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-05-03 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Unreviewed, rolling out r85471.
- http://trac.webkit.org/changeset/85471
- https://bugs.webkit.org/show_bug.cgi?id=59922
-
- The rule of thumb in EFL is that you init in all the places
- you use it. So, if in your application you call ecore_evas_*
- functions, you have to call ecore_evas_init() first.
-
- * EWebLauncher/main.c: always call *_init() functions when you use
- that namespace.
- (quit):
- (main):
-
-2011-05-02 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- remove no longer used method
- https://bugs.webkit.org/show_bug.cgi?id=59981
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
-
-2011-05-02 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- add image toggling behavior from old-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=59978
-
- Output -diffs.html files. This matches old-run-webkit-tests.
- In theory, we could use data urls in the results.html file, but
- data urls don't currently have access to local files.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
-
-2011-05-02 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [nrwt] remove some obsolete references to .checksum files
- https://bugs.webkit.org/show_bug.cgi?id=59971
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-05-02 Adam Roben <aroben@apple.com>
-
- Take advantage of implicit nullptr_t -> PassOwnPtr conversion
-
- Fixes <http://webkit.org/b/59964> Implicit conversion from std::nullptr_t to PassOwnPtr
- doesn't work, but should
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/CppBoundClass.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
-
-2011-05-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Compiler warning in Tools/MiniBrowser/main.c
- https://bugs.webkit.org/show_bug.cgi?id=59986
-
- Remove a compiler warning.
-
- * MiniBrowser/gtk/main.c: Use full array initializers to prevent some compilers
- from complaining.
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add runtests_unittest.py
- https://bugs.webkit.org/show_bug.cgi?id=59955
-
- I forgot to add this file in a previous patch.
-
- * Scripts/webkitpy/tool/steps/runtests_unittest.py: Added.
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Change the testing EWS to log failures explicitly to avoid an infinite loop.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2011-05-02 Adrienne Walker <enne@google.com>
-
- Unreviewed, fix misspelled contributor name.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- cr-linux-ews should run tests
- https://bugs.webkit.org/show_bug.cgi?id=59272
-
- This patch turns on testing for the cr-linux-ews. Yay!
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2011-05-02 Martin Robinson <mrobinson@igalia.com>
-
- Incorporate a review comment that I mistakenly omitted from my last commit.
-
- * DumpRenderTree/gtk/EventSender.cpp: Use unsigned here instead of unsigned int.
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- EWS should report the list of unexpected failures
- https://bugs.webkit.org/show_bug.cgi?id=59923
-
- We cache the results of the first layout test results run on the task
- so the EWS can grab them later. Another option is to include them in
- the exception that's thrown, but this approach seemed slightly more
- aesthetic.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add base case for a test-running EWS
- https://bugs.webkit.org/show_bug.cgi?id=59920
-
- Later I will subclass this to run the Chromium Linux EWS.
-
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py: Added.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-02 Anders Carlsson <andersca@apple.com>
-
- Build fix.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
-
-2011-05-02 Nico Weber <thakis@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Add --no-webkit2 to the output of "build-webkit -h"
- https://bugs.webkit.org/show_bug.cgi?id=59942
-
- * Scripts/build-webkit:
-
-2011-05-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] old-run-webkit-tests should disable the Ubuntu overlay scrollbar
- https://bugs.webkit.org/show_bug.cgi?id=59943
-
- Disable the Ubuntu overlay scrollbar while testing, by injecting the
- LIBOVERLAY_SCROLLBAR=0 environment variable.
-
- * Scripts/old-run-webkit-tests:
-
-2011-05-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] editing/selection/select-out-of-editable.html failing after r83967
- https://bugs.webkit.org/show_bug.cgi?id=58667
-
- Do not trigger mouse down events when the EventSender knows that a mouse button is
- already down. These type of situations can confuse Xvfb and cause dragging failures.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseDownCallback): Do not trigger another mouse button down event if the mouse button
- is already down. This can interfere with drags in Xvfb.
-
-2011-05-02 Zsolt Fehér <h490267@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- DRT sideeffect revealed by r71268.
- https://bugs.webkit.org/show_bug.cgi?id=48958
-
- Reset QWebSettings::ZoomTextOnly attribute before all tests.
-
- Call setTextSizeMultiplier(1.0) to reset TextZoomFactor and
- PageZoomFactor too. It should be done before resetsettings()
- to guarantee resetting QWebSettings::ZoomTextOnly correctly.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2011-05-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r85469.
- http://trac.webkit.org/changeset/85469
- https://bugs.webkit.org/show_bug.cgi?id=59928
-
- Broke webkitpy-tests on Windows 7, GTK and Qt. (Requested by
- bbandix on #webkit).
-
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py: Removed.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-02 Tomasz Morawski <t.morawski@samsung.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Cleanup EFL initialization/shutdown in the EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=59922
-
- Removed ecore_evas_init and edje_init form main function due to they
- are also called in the ewk_init. Moved ewk_shutdown to quit function.
-
- * EWebLauncher/main.c:
- (quit):
- (main):
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add base case for a test-running EWS
- https://bugs.webkit.org/show_bug.cgi?id=59920
-
- Later I will subclass this to run the Chromium Linux EWS.
-
- * Scripts/webkitpy/tool/bot/earlywarningsystemtask.py: Added.
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add the ability to skip python and perl unit tests on EC2
- https://bugs.webkit.org/show_bug.cgi?id=59918
-
- * Scripts/webkitpy/common/config/ports.py:
- - This is slightly ugly, but it's useful...
- * Scripts/webkitpy/common/config/ports_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2011-05-02 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-04-29 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, add new directory to the build.
-
- * waf/build/settings.py:
-
-2011-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Implement UI client in minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=58416
-
- It also allows to open more than one minibrowser window from the
- command line.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (browserWindowFinalize):
- (browser_window_init):
- (browserWindowConstructed):
- (createNewPage):
- (showPage):
- (closePage):
- (runJavaScriptAlert):
- (browserWindowUIClientInit):
- * MiniBrowser/gtk/main.c:
- (loadURI):
- (main):
-
-2011-04-29 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Implement page loader client in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=58024
-
- A new class BrowserWindow has been added to implement the page
- loader client. It makes supporting multiple windows easier. Window
- title and url entry are now updated during the loading process.
-
- * MiniBrowser/gtk/BrowserWindow.c: Added.
- (activateUriEntryCallback):
- (goBackCallback):
- (goForwardCallback):
- (browserWindowFinalize):
- (browserWindowGetProperty):
- (browserWindowSetProperty):
- (browser_window_init):
- (browserWindowConstructed):
- (browser_window_class_init):
- (browserWindowUpdateTitle):
- (browserWindowSetTitle):
- (browserWindowSetLoadProgress):
- (browserWindowUpdateURL):
- (didStartProvisionalLoadForFrame):
- (didReceiveServerRedirectForProvisionalLoadForFrame):
- (didFailProvisionalLoadWithErrorForFrame):
- (didCommitLoadForFrame):
- (didFinishDocumentLoadForFrame):
- (didFinishLoadForFrame):
- (didFailLoadWithErrorForFrame):
- (didReceiveTitleForFrame):
- (didFirstLayoutForFrame):
- (didFirstVisuallyNonEmptyLayoutForFrame):
- (didRemoveFrameFromHierarchy):
- (didStartProgress):
- (didChangeProgress):
- (didFinishProgress):
- (didBecomeUnresponsive):
- (didBecomeResponsive):
- (browserWindowLoaderClientInit):
- (browser_window_new):
- (browser_window_get_view):
- * MiniBrowser/gtk/BrowserWindow.h: Added.
- * MiniBrowser/gtk/GNUmakefile.am:
- * MiniBrowser/gtk/main.c:
- (createWindow):
-
-2011-04-28 Stephanie Lewis <slewis@apple.com>
-
- Reviewed by Mark Rowe.
-
- http://bugs.webkit.org/show_bug.cgi?id=59743
- <rdar://problem/9040413> Add an install target for production builds.
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2011-04-28 Adam Roben <aroben@apple.com>
-
- Stop and restart ATSServer before each test run on Leopard
-
- This is to work around an ATSServer leak that eventually causes tests
- to fail.
-
- Fixes <http://webkit.org/b/51807> <rdar://problem/9273894>
- fast/blockflow/broken-ideograph-[small-caps|font].html sometimes fails on Leopard buildbots
- (due to ATSServer leak)
-
- Reviewed by Dan Bernstein.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (StopATSServer):
- (StartATSServer):
- Added these new commands to stop and start ATSServer.
-
- (TestFactory.__init__): Stop and start ATSServer on Leopard before running tests.
-
-2011-04-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- add Leopard NRWT bot to the scheduler
- https://bugs.webkit.org/show_bug.cgi?id=59766
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-04-28 Sam Weinig <sam@webkit.org>
-
- Fix WebKitTestRunner build.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- The Derived Sources target needs a product name.
-
-2011-04-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Mark Rowe.
-
- Add install support for WebKitTestRunner.
- <rdar://problem/9349055>
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Add missing CompilerVersion.xcconfig.
-
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
- * WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- Add install path and tell it not to skip installation.
-
- Add missing CompilerVersion.xcconfig.
-
-2011-04-28 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- Remove IMAGE_RESIZER related code.
- https://bugs.webkit.org/show_bug.cgi?id=59735
-
- * Scripts/build-webkit:
-
-2011-04-28 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make reading skipped files from additional platform
- directories work in WebKit2 mode.
-
- * Scripts/old-run-webkit-tests:
- (buildPlatformTestHierarchy): Simplify logic to always use the first
- and last platforms in the build hierarchy as the test hierarchy, and to
- insert the WebKit2 platform in the middle if it exists. Yum.
-
-2011-04-28 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove WML
- https://bugs.webkit.org/show_bug.cgi?id=59678
-
- Remove build system integration and test harness integration for WML.
-
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitperl/features.pm:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-04-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- use a hierarchical data structure to store results json
- https://bugs.webkit.org/show_bug.cgi?id=59736
-
- Instead of a map from test name to results dict, we now store a hierarchical
- data structure.
-
- Old: { foo/bar/baz.html: results_dict, foo/bar/baz2.html: results_dict }
- New:
- { foo: {
- bar: {
- baz.html: results_dict,
- baz2.html: results_dict } } }
-
- This cut ~52% of the size of times_ms.json. I expect it will cut
- 30-40% of full_results.json and unexpected_results.json.
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- Using os.sep was just wrong since relative_test_filename canonicalizes separators.
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
- Instead of plumbing through the change to all of the rebaselineserver
- python and JS, just convert to the old format after reading in the json.
-
-2011-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS Bubbles should show commit-queue position when patch is in the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=59744
-
- Add target="_top" to the bubble links. This was
- forgotten when I moved from using an onclick to a normal link.
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2011-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS bubbles should show "submit to ews" button if they've not been processed
- https://bugs.webkit.org/show_bug.cgi?id=59751
-
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/handlers/submittoews.py:
- * QueueStatusServer/templates/statusbubble.html:
- * QueueStatusServer/templates/submittoews.html:
-
-2011-04-28 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- EWS Bubbles should show commit-queue position when patch is in the commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=59744
-
- This was actually just a 2 line change to statusbubble.py.
- I also cleaned up statusbubble.html a little while I was there
- (the links are now actual <a> tags and have hover).
-
- * QueueStatusServer/handlers/statusbubble.py:
- * QueueStatusServer/templates/statusbubble.html:
-
-2011-04-28 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add a mac leopard release NRWT bot
- https://bugs.webkit.org/show_bug.cgi?id=59733
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-04-28 Ojan Vafai <ojan@chromium.org>
-
- Avoid crashing when running new-run-webkit-tests outside of
- version control.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-04-28 Xan Lopez <xlopez@igalia.com>
-
- Unreviewed build fix.
-
- * GNUmakefile.am:
-
-2011-04-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix python printing test
- https://bugs.webkit.org/show_bug.cgi?id=59719
-
- Now that we run scm commands in summarize_results, --verbose prints
- debug logging to stderr.
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2011-04-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- link to tests at a specific revision in the results.html file
- https://bugs.webkit.org/show_bug.cgi?id=59711
-
- * Scripts/webkitpy/common/checkout/scm.py:
- Add a method to get the head svn revision.
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
- Include the svn revision in the results json.
-
-2011-04-28 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Sam Weinig.
-
- [GTK] Remove WKURLCreateWithURL()
- https://bugs.webkit.org/show_bug.cgi?id=59691
-
- Use WKURLCreateWithUTF8CString() instead of WKURLCreateWithURL().
-
- * MiniBrowser/gtk/main.c:
- (activateUriEntryCallback):
- (main):
-
-2011-04-28 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] WKView should be a GtkWidget
- https://bugs.webkit.org/show_bug.cgi?id=59603
-
- Don't use WKViewGetWindow(), use WKView as a GtkWidget instead.
-
- * MiniBrowser/gtk/main.c:
- (createWindow):
- (main):
-
-2011-04-28 Gabor Rapcsanyi <rgabor@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Add ARM specific Skipped list
- https://bugs.webkit.org/show_bug.cgi?id=59680
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitdirs.pm:
-
-2011-04-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- error_log.txt should include PHP errors
- https://bugs.webkit.org/show_bug.cgi?id=59643
-
- Turns out this was really easy after I finally learned
- enough about PHP to do it...
-
- I'm adding this in hopes of better tracking down
- our random http failures.
-
- * Scripts/webkitperl/httpd.pm:
-
-2011-04-27 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style should flags spacing errors for braces on the same line.
- https://bugs.webkit.org/show_bug.cgi?id=59665
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added the check.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added some tests for the check
- and fixed some test cases to not trigger this error since it isn't what they are verifying.
-
-2011-04-27 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- check-webkit-style error for spaces after periods in a comment has a bad error
- message and warns about end of line spaces.
- https://bugs.webkit.org/show_bug.cgi?id=59663
-
- * Scripts/webkitpy/style/checkers/cpp.py: Fix both issues.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests for spaces at the end of line
- and changed the error messages.
-
-2011-04-27 Ojan Vafai <ojan@chromium.org>
-
- remove assertion now that platform/mac-tiger no longer exists
- https://bugs.webkit.org/show_bug.cgi?id=59660
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-04-27 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- remove test that didn't make sense
- https://bugs.webkit.org/show_bug.cgi?id=59658
-
- It was artifically saying the test wasn't expected to pass,
- but the expectations string was empty. The case of unexpected
- passes with a real expectations string is tested later in the
- same test.
-
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
-
-2011-04-27 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- WebKit2 needs to notify the client when a plugin fails to initialize
- https://bugs.webkit.org/show_bug.cgi?id=59657
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- Add stubs.
-
-2011-04-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by David Levin.
-
- Add a few more missing options to new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=59567
-
- Add support for:
- --threaded
- --gc-between-tests
- --complex-text
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-27 Mark Rowe <mrowe@apple.com>
-
- Build fix.
-
- Fix an OwnPtr-related issue that was missed before the strictness was turned on.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runTest):
-
-2011-04-27 Ojan Vafai <ojan@chromium.org>
-
- Forgot to upload the new times_ms.json file after splitting
- it out from full_results.json.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-04-27 Ojan Vafai <ojan@chromium.org>
-
- Fix snafu in generating the JSON for the chromium tests.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2011-04-27 Ojan Vafai <ojan@chromium.org>
-
- Fix bad merge. This broke the chromium tests generating JSON files.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2011-04-27 Mark Rowe <mrowe@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- Don't look for results in a location that no longer exists.
-
- * Scripts/old-run-webkit-tests:
-
-2011-04-27 Adrienne Walker <enne@google.com>
-
- Unreviewed, add Chrome GPU folks to contributors that I'm tired of manually CCing
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-22 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- only include failures in full_results.json
- https://bugs.webkit.org/show_bug.cgi?id=59256
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-04-22 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Roben.
-
- move times into their own json file
- https://bugs.webkit.org/show_bug.cgi?id=59239
-
- The test runtimes are the only case where we need an entry for
- every test that was run, including passing tests. Move them into
- their own json file so we can prune the other json files to only
- include failing tests.
-
- Use a trie-like data structure to hold the tests to avoid including
- full test paths. This cuts 52% of the filesize. The end result is ~700k
- pre-gzip.
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- Exclude times from the parsed TestResults.
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager.py:
-
-2011-04-27 Anders Carlsson <andersca@apple.com>
-
- More casts and more clang++ build fixes.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
-
-2011-04-27 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- lazily autoinstall thirdparty python libraries
- https://bugs.webkit.org/show_bug.cgi?id=55723
-
- This helps by only having pywebsocket installed when the bots run. It
- doesn't help much for devs since webkit-patch pulls in almost everything.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/networktransaction_unittest.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/layout_tests/port/websocket_server.py:
- * Scripts/webkitpy/thirdparty/__init__.py: Add an import hook so we can install based on
- the import command rather than just installing everything.
- * Scripts/webkitpy/thirdparty/__init___unittest.py: Added.
-
-2011-04-27 Girish Ramakrishnan <girish@forwardbias.in>
-
- Add my IRC nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- sherrifbot create-bug shouldn't assign bugs to webkit.review.bot
- https://bugs.webkit.org/show_bug.cgi?id=59545
-
- To do this, I needed a way to look up contributors by irc-name
- (since anyone in #webkit who might use this command may not be a committer).
- To lookup contributors, I had to make Contributor a real object.
- Which led me to redesign parts of committers.py...
- and finally fix one spot in changelog.py where we wanted to be
- looking up contributors and not committers.
-
- Overall a pretty simple fix, once you wade through the yak-hair.
-
- This may not prevent *all* possible ways that bugs would get assigned
- to webkit.review.bot. If we don't recognize the requester we will
- go through the previous code path (which shouldn't change the assignee
- on the bug from the default as far as I can tell).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/committers_unittest.py:
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
-
-2011-04-27 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Upstream Symbian platform plugin
- https://bugs.webkit.org/show_bug.cgi?id=58435
-
- Exempting directory WebKit/qt/symbian/platformplugin from style guide.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-04-27 Jeff Miller <jeffm@apple.com>
-
- Correct my IRC nickname.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-27 Lucas De Marchi <lucas.demarchi@profusion.mobi>
-
- Reviewed by Darin Adler.
-
- Change the email used on bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=59582
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-27 James Kozianski <koz@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Extract map from port to builder name.
- https://bugs.webkit.org/show_bug.cgi?id=58301
-
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/builders.py: Added.
- * Scripts/webkitpy/layout_tests/port/builders_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/factory.py:
-
-2011-04-27 Ryuan Choi <ryuan.choi@samsung.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add proxy support to GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=58852
-
- Add SOUP_TYPE_PROXY_RESOLVER_DEFAULT feature or set SOUP_SESSION_PROXY_URI for developers behind proxy.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c:
- (main):
-
-2011-04-27 Annie Sullivan <sullivan@chromium.org>
-
- Reviewed by David Levin.
-
- Adding myself as a Chromium contributor to committers.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=59576
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-26 David Grogan <dgrogan@chromium.org>
-
- Reviewed by David Levin.
-
- Adding myself to Chromium contributors list in committers.py
- https://bugs.webkit.org/show_bug.cgi?id=59565
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-26 Chang Shu <cshu@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- WebKitTestRunner needs layoutTestController.addOriginAccessWhitelistEntry
- https://bugs.webkit.org/show_bug.cgi?id=42544
-
- Also implemented removeOriginAccessWhitelistEntry and resetOriginAccessWhitelists.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::addOriginAccessWhitelistEntry):
- (WTR::LayoutTestController::removeOriginAccessWhitelistEntry):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-26 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Adele Peterson.
-
- AX: Add more text marker routines to DRT
- https://bugs.webkit.org/show_bug.cgi?id=58949
-
- Add a few more methods to help test the text marker system, including nextMarker, previousMarker and
- stringForMarkerRange.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (nextTextMarkerCallback):
- (previousTextMarkerCallback):
- (stringForTextMarkerRangeCallback):
- (AccessibilityUIElement::previousTextMarker):
- (AccessibilityUIElement::nextTextMarker):
- (AccessibilityUIElement::stringForTextMarkerRange):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::previousTextMarker):
- (AccessibilityUIElement::nextTextMarker):
- (AccessibilityUIElement::stringForTextMarkerRange):
-
-2011-04-26 Dan Bernstein <mitz@apple.com>
-
- Build fix.
-
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig:
-
-2011-04-26 Kevin Ollivier <kevino@theolliviers.com>
-
- Rubberstamped by Eric Seidel.
-
- Enable waf to be used to build other ports
- https://bugs.webkit.org/show_bug.cgi?id=58213
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- * waf: Added.
- * waf/build: Added.
- * waf/build/build_utils.py: Added.
- * waf/build/settings.py: Added.
- * waf/build/waf_extensions.py: Added.
- * waf/build/wxpresets.py: Added.
-
-2011-04-26 Sam Weinig <sam@webkit.org>
-
- Reviewed by David Hyatt.
-
- Remove Datagrid from the tree
- https://bugs.webkit.org/show_bug.cgi?id=59543
-
- * Scripts/build-webkit:
- Remove feature.
-
- * iExploder/iexploder-1.3.2/htdocs/htmltags.in:
- * iExploder/iexploder-1.7.2/src/html-tags/webkit:
- Remove from fuzzer.
-
-2011-04-26 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Update WinLauncher with command-line arguments to allow the
- transparency to be tested. Use --transparent to create a
- transparent view. Use --desktop to have the view fill the
- desktop area of the screen.
- https://bugs.webkit.org/show_bug.cgi?id=58300
-
- * WinLauncher/WinLauncher.cpp:
- (usesLayeredWebView): New method to indicate that the
- program is running with layered windows (alpha-blended
- transparent windows).
- (shouldUseFullDesktop): New method to indicate that the
- program is running across the full desktop (less any
- task bars.)
- (resizeSubViews): Layered window mode doesn't have any
- winapi child windows, so this routine is exited early
- for that case.
- (subclassForLayeredWindow): Subclass the window so we can
- override its defaut message loop.
- (computeFullDesktopFrame): Convenience function to get the
- desktop region and update the frame dimensions appropriately.
- (_tWinMain): Updated to accept the new '--transparent' and
- '--desktop' arguments.
- (InitInstance): Modified to exit early for the transparent
- background case. WebKit will construct our primary window (with
- appropriate settings) so we don't need to create one ourselves.
- (WndProc):
- (TransparentWndProc): New message loop for transparent windows,
- since they need special handling to support dragging.
-
-2011-04-26 Alexandre MAzari <amazari@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [Gtk] Implement LayoutTestController::setPluginsEnabled
- https://bugs.webkit.org/show_bug.cgi?id=59184
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setPluginsEnabled):
-
-2011-04-26 Chang Shu <cshu@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- WebKitTestRunner needs layoutTestController.setAllowFileAccessFromFileURLs
- https://bugs.webkit.org/show_bug.cgi?id=57572
-
- Remove the unnecessary code that updates preference.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setAllowUniversalAccessFromFileURLs):
-
-2011-04-26 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] accessibility/aria-combobox-expected.txt
- https://bugs.webkit.org/show_bug.cgi?id=59399
-
- Implement isExpanded(), as it's used in the layout test.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isExpanded): Implemented.
-
-2011-04-26 Adrienne Walker <enne@google.com>
-
- Reviewed by Kent Tamura.
-
- [chromium] Fix memory leak in DRT due to OwnPtr<T*>
- https://bugs.webkit.org/show_bug.cgi?id=59489
-
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-04-26 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] Implement isChecked in DRT
- https://bugs.webkit.org/show_bug.cgi?id=59385
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isChecked): Implemented.
-
-2011-04-26 Alejandro G. Castro <alex@igalia.com>
-
- Unreviewed, rolling out r84949.
- http://trac.webkit.org/changeset/84949
- https://bugs.webkit.org/show_bug.cgi?id=58852
-
- Broke GTK+ compilation
-
- * GtkLauncher/main.c:
- (main):
-
-2011-04-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- sheriff-bot should have a create-bug command
- https://bugs.webkit.org/show_bug.cgi?id=59491
-
- This patch has some stderr unittest spew, but I will
- fix it after my live demo.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-04-26 Ryuan Choi <ryuan.choi@samsung.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add proxy support to GtkLauncher
- https://bugs.webkit.org/show_bug.cgi?id=58852
-
- Add SOUP_TYPE_PROXY_RESOLVER_DEFAULT feature or set SOUP_SESSION_PROXY_URI for developers behind proxy.
-
- * GtkLauncher/main.c:
- (main):
-
-2011-04-26 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- Choose the compiler based on the Xcode version for Snow Leopard debug builds.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig: Added.
- * MiniBrowser/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig: Added.
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig: Added.
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig: Added.
-
-2011-04-26 Finnur Thorarinsson <finnur.webkit@gmail.com>
-
- Reviewed by David Levin.
-
- Adding myself as a Chromium contributors to committers.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=59444
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-26 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- DumpRenderTree/chromium should play nice with strict OwnPtrs
- https://bugs.webkit.org/show_bug.cgi?id=59458
-
- All these changes are pretty straight forward.
-
- * DumpRenderTree/chromium/CppBoundClass.cpp:
- (GetterPropertyCallback::GetterPropertyCallback):
- (CppBoundClass::bindGetterCallback):
- * DumpRenderTree/chromium/CppBoundClass.h:
- (CppBoundClass::bindProperty):
- (CppBoundClass::bindFallbackCallback):
- (CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::DRTDevToolsClient):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::createDRTPrinter):
- (TestEventPrinter::createTestShellPrinter):
- * DumpRenderTree/chromium/TestEventPrinter.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::createMainWindow):
- (TestShell::createDRTDevToolsClient):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::geolocationClientMock):
- (WebViewHost::speechInputController):
- (WebViewHost::deviceOrientationClientMock):
- (WebViewHost::reset):
- (WebViewHost::navigate):
- (WebViewHost::setPendingExtraData):
- (WebViewHost::canvas):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-04-26 Adam Roben <aroben@apple.com>
-
- Make DRT/win log loading errors the same way DRT/mac does
-
- Fixes <http://webkit.org/b/59303> [Windows WebKit1 Tests]
- http/tests/misc/will-send-request-returns-null-on-redirect.html failing since r84742
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult): Removed the workaround for
- <rdar://problem/5064234>, which has long since been fixed, and then made this function match
- -[NSError(DRTExtras) _drt_descriptionSuitableForTestResult] more closely.
-
-2011-04-26 Dan Bernstein <mitz@apple.com>
-
- REGRESSION (84876): build-webkit produces an error message
- https://bugs.webkit.org/show_bug.cgi?id=59460
-
- * Scripts/webkitdirs.pm:
-
-2011-04-26 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Fix timestamp comparison in check-for-weak-vtables-and-externals
- https://bugs.webkit.org/show_bug.cgi?id=59416
-
- We should only re-run the check-for-weak-vtables-and-externals script
- if the executable is more recent than the last run.
-
- * Scripts/check-for-weak-vtables-and-externals:
-
-2011-04-26 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Implement LayoutTestController::setAutofilled
- https://bugs.webkit.org/show_bug.cgi?id=59439
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setAutofilled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-04-25 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- Teach build-webkit where newer Xcode versions store the application-wide build settings user default.
-
- * Scripts/webkitdirs.pm:
-
-2011-04-25 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Leaks Viewer throws "Cannot post cyclic structures" in Safari 5
- https://bugs.webkit.org/show_bug.cgi?id=56090
-
- Make LeaksViewer work with versions of browsers that don't support message
- passing of cyclic structures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js:
- (LeaksParser.this._worker.onmessage):
- (LeaksParser):
- (LeaksParser.prototype.addLeaksFile):
- Use LeaksParserImpl directly if we don't support passing cyclic structures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserImpl.js: Copied from BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js.
- (LeaksParserImpl):
- (LeaksParserImpl.prototype.addLeaksFile):
- (LeaksParserImpl.prototype._incorporateLeaks):
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js:
- (onmessage):
- Factor out LeaksParser implementation into LeaksParserImpl.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js:
- (workersSupportCyclicStructures):
- Add function to detect if workers support passing cyclic structures.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html:
- Add LeaksParserImpl.js include.
-
-2011-04-25 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Timothy Hatcher.
-
- Treat strings defined with UI_STRING_LOCALIZE_LATER_KEY() as debugging strings in extract-localizable-strings
- https://bugs.webkit.org/show_bug.cgi?id=59373
-
- * Scripts/extract-localizable-strings: Add UI_STRING_LOCALIZE_LATER_KEY() to isDebugMacro var.
-
-2011-04-25 Andrew Scherkus <scherkus@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Adding a few Chromium contributors to committers.py.
-
- https://bugs.webkit.org/show_bug.cgi?id=59327
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-23 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [V8] Nodes in shadow DOM should not be GCed while their hosts are alive
- https://bugs.webkit.org/show_bug.cgi?id=59284
-
- Chromium DRT over-refcounted the NPObject wrappers it used to
- marshal shadowRoot nodes back to tests (WebBindings::makeNode
- births NPObjects with referenceCount == 1). This masked the GC bug
- 59284 in tests by making shadowRoot nodes live forever.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::shadowRoot):
- (LayoutTestController::ensureShadowRoot):
-
-2011-04-23 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fixes. Add new methods to wx LayoutTestController,
- and update the URL for downloading waf.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * Scripts/webkitdirs.pm:
-
-2011-04-22 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r84627.
- http://trac.webkit.org/changeset/84627
- https://bugs.webkit.org/show_bug.cgi?id=59271
-
- It broke Symbian build (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-04-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- rebaseline-chromium-webkit-tests: clean up output
- https://bugs.webkit.org/show_bug.cgi?id=59240
-
- This change dramatically changes the output the tool provides
- by default. The previous output (more or less) is still there
- in -v / verbose / debug mode, but the default output is
- way terser and more readable. It mostly says which files are
- updated, which are duplicates, and which are not found in an
- archive. Feedback desired :).
-
- This change also adds a scm.exists() method to the SCM object
- so that we can cleanly figure out what we're doing while
- rebaselining.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2011-04-22 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- Add Ilya Sherman (isherman@chromium.org) to the list of contributors
- https://bugs.webkit.org/show_bug.cgi?id=59231
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-22 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: Exception raised when stderr contains binary data
- https://bugs.webkit.org/show_bug.cgi?id=59083
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- Use write_binary_file() instead of write_text_file().
-
-2011-04-22 Chang Shu <cshu@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WebKitTestRunner needs layoutTestController.setFrameFlatteningEnabled
- https://bugs.webkit.org/show_bug.cgi?id=42536
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setFrameFlatteningEnabled):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- CommitQueue should remember the expected failures from patch to patch
- https://bugs.webkit.org/show_bug.cgi?id=59253
-
- Previously, we stored the set of expected failures on the task object,
- which meant the commit-queue forgot about them after each patch. This
- patch moves them to the CommitQueue object so they will have a longer
- lifetime.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-04-22 Sam Weinig <sam@webkit.org>
-
- Reviewed by Brian Weinstein.
-
- WebKit2: Implement JavaScript unresponsiveness timer/callbacks
- https://bugs.webkit.org/show_bug.cgi?id=59248
-
- Stub out shouldInterruptJavaScript callbacks.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2011-04-22 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- webkit-patch land hangs if svn prompts for credentials
- https://bugs.webkit.org/show_bug.cgi?id=31500
-
- Make has_authorization_for_realm() return True only if there exists a credentials file
- that contains either the word "password" or "passtype". We assume that these words don't
- coincide with the actual credential data (e.g. a person's username is "password").
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Added test cases:
- test_has_authorization_for_realm_using_credentials_with_passtype(),
- test_has_authorization_for_realm_using_credentials_with_password(),
- test_not_have_authorization_for_realm_with_credentials_missing_password_and_passtype()
- - Renamed test_not_have_authorization_for_realm() to test_not_have_authorization_for_realm_when_missing_credentials_file()
- to better describe what it's testing.
- - Repurposed test_has_authorization_for_realm() to take realm and credential data to use
- and return the result of calling has_authorization_for_realm() so that the caller can
- assert the result; Renamed to _test_has_authorization_for_realm_using_credentials() to
- better reflect its new purpose.
-
-2011-04-22 Adam Barth <abarth@webkit.org>
-
- Remove double-negative. (Sorry this was bugging me.)
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
-
-2011-04-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Factor LayoutTestResultsReader out of CommitQueue
- https://bugs.webkit.org/show_bug.cgi?id=59244
-
- This code will be shared with the EWS when they start running tests.
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py: Added.
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-04-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- webkit-patch rebaseline is broken
- https://bugs.webkit.org/show_bug.cgi?id=59207
-
- My recent changes to how LayoutTestResults.results_from_string
- uncovered a bug in our use of urllib2.
- We now are treating the return value from _fetch_results_html()
- (which returns urllib2.openurl()) as a string. That's incorrect,
- the return value is a file-like object (which auto-converts to a
- string in most cases).
-
- I've updated our urllib2-using code to correctly call .read() on the
- resulting object before treating it like a string.
- Unfortunately there is no easy way to test this mis-understanding
- of the openurl() semantics.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
-
-2011-04-22 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Factor PatchAnalysis task out of CommitQueueTask
- https://bugs.webkit.org/show_bug.cgi?id=59220
-
- This is a first step towards teaching the EWS to run tests.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/patchanalysistask.py: Added.
-
-2011-04-22 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] DRT: implement eventSender.scalePageBy
- https://bugs.webkit.org/show_bug.cgi?id=59082
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (scalePageByCallback): scalePageBy() support.
-
-2011-04-21 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- LayoutTestResults should know how to handle NRWT json files
- https://bugs.webkit.org/show_bug.cgi?id=59168
-
- LayoutTestResults was originally created to be a parallel
- to existing NRWT architecture for dealing with results files.
- But then it turns out that NRWT has no such architecture. :(
- So this patch writes the necessary code to handle reading
- full_results.json and unexpected_results.json files from
- NRWT layout-test-results directories.
-
- LayoutTestResults has thus morphed from being ORWT-only to
- supporting both ORWT and NRWT. It's possible at some future
- point that other pieces of the NRWT architecture will learn
- how to read JSON files in which case this can go away.
-
- This is all done for making it possible for the commit-queue
- to run the tests using NWRT and be able to understand the results
- (for flaky test reporting, etc.)
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py: Added.
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py: Added.
-
-2011-04-22 Yi Shen <yi.4.shen@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Upstream Symbian platform plugin
- https://bugs.webkit.org/show_bug.cgi?id=58435
-
- Exempting directory WebKit/qt/symbian/platformplugin from style guide.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
-
-2011-04-22 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] Qt should use the mac-wk2 skipped list
- https://bugs.webkit.org/show_bug.cgi?id=58536
-
- * Scripts/old-run-webkit-tests:
-
-2011-04-21 Tony Chang <tony@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Remove find-mismatched-layout-test-results since it's not needed in a
- checksum free world.
- https://bugs.webkit.org/show_bug.cgi?id=59156
-
- * Scripts/find-mismatched-layout-test-results: Removed.
-
-2011-04-21 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Martin Robinson.
-
- Teach build-webkit and update-webkit that the WinCairo port does
- not need the non-redistributable WebKitSupportLibraries.zip file.
- Also append the _Cairo_CFLite label to the build target for the
- default (no argument) case when building with '--wincairo'
-
- https://bugs.webkit.org/show_bug.cgi?id=58801
-
- * Scripts/build-webkit: Don't die if WebKitSupportLibraries.zip
- doesn't exist.
- * Scripts/webkitdirs.pm: Append '_Cairo_CFLite' to the default
- 'Release' build target when passed the '--wincairo' flag.
- * Scripts/update-webkit: Don't die if WebKitSupportLibraries.zip
- doesn't exist.
-
-2011-04-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: obsolete old code, part 5: rename message_broker2 to message_broker
- https://bugs.webkit.org/show_bug.cgi?id=58758
-
- Since worker_mixin is now only used by worker, there's no point
- in having it split across two files.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py: Added
- * Scripts/webkitpy/layout_tests/layout_package/message_broker2.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py: * Added
- * Scripts/webkitpy/layout_tests/layout_package/message_broker2_unittest.py: Removed.
-
-2011-04-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: obsolete old code, part 4: merge worker_mixin into worker
- https://bugs.webkit.org/show_bug.cgi?id=58756
-
- Since worker_mixin is now only used by worker, there's no point
- in having it split across two files.
-
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py: Removed.
-
-2011-04-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: obsolete old code, part 3 - rename test_runner to manager
- https://bugs.webkit.org/show_bug.cgi?id=58754
-
- test_runner hasn't been a great name for some time, since all of
- the test running is actually done in worker and
- single_test_runner. Rename to manager to match the terminology
- elsewhere.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/manager_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_runner_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-04-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: obsolete old threading code, part 2
- https://bugs.webkit.org/show_bug.cgi?id=58753
-
- This merges the test_runner2 code back into test_runner since
- there's only a single type of test runner now.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-04-21 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Roben.
-
- Add a feature define to allow <details> and <summary> to be disabled
- https://bugs.webkit.org/show_bug.cgi?id=59118
- <rdar://problem/9257045>
-
- * Scripts/build-webkit:
- * Tools.pro:
-
-2011-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch upload should assign the bug to you
- https://bugs.webkit.org/show_bug.cgi?id=33699
-
- This patch only re-assigns the bug if it is currently unassigned. We
- can be more aggressive in the future if people want us to be more
- agressive.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2011-04-21 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- move json_results.html over to LayoutTests/fast/harness
- https://bugs.webkit.org/show_bug.cgi?id=59154
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-21 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- ValidateChangeLogs doesn't work on SVN
- https://bugs.webkit.org/show_bug.cgi?id=59115
-
- svn-create-patch lies about the diff in the working copy by moving
- ChangeLog entries to the top of the diff. That's fine on most cases,
- but causes problems for ValidateChangeLogs, which is trying validate
- the where the ChangeLog entry appears.
-
- I haven't added a test for this change because I couldn't figure out
- how to write one. The issue is more of an integration issue, which
- we're not really set up to test in our unit testing framework. If this
- patch had worked around the output from svn-create-patch, then I could
- have tested that we behave correctly on sample svn-create-patch output,
- but, in this case, I've removed the dependency on svn-create-patch. I
- could test that we behave correctly on "svn diff" output, but we
- already have those tests.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/validatechangelogs.py:
-
-2011-04-21 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- old-run-webkit-tests/new-run-webkit-tests shouldn't read or write .checksum files
- https://bugs.webkit.org/show_bug.cgi?id=58402
-
- * Scripts/old-run-webkit-tests: Don't read or write .checksum files.
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py: Don't write .checksum files.
- * Scripts/webkitpy/layout_tests/port/base.py: Don't read .checksum files.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py: Update passing pngs to include a checksum.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-21 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- final tests for results.html file
- https://bugs.webkit.org/show_bug.cgi?id=59150
-
- This gets us close to 100% code coverage. Once this is
- checked in, I'll move this file over to LayoutTests/fast/harness
- and make it a proper layout test.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_test.js:
-
-2011-04-21 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- only expand visible rows
- https://bugs.webkit.org/show_bug.cgi?id=59130
-
- For the chromium port, where there are many expected failures,
- expanding all of them is quite slow. Only expand the visible ones.
- This makes the default case. Also, make the expanding async to
- avoid totally killing the process.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_test.js:
-
-2011-04-21 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] DRT: implement eventSender.scalePageBy
- https://bugs.webkit.org/show_bug.cgi?id=59082
-
- Rolling out r84507 since it broke many GTK+ tests.
-
- * DumpRenderTree/gtk/EventSender.cpp:
-
-2011-04-21 Sam Weinig <sam@webkit.org>
-
- Reviewed by Simon Fraser.
-
- Add way to garbage collect between each test when running layout tests
- https://bugs.webkit.org/show_bug.cgi?id=59126
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (runTest):
- * Scripts/old-run-webkit-tests:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/TestController.h:
-
-2011-04-21 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- fix another innocuous JS error in expand/collapseAllExpectations
- https://bugs.webkit.org/show_bug.cgi?id=59122
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_test.js:
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- put unexpected passes into their own table
- https://bugs.webkit.org/show_bug.cgi?id=59016
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- initial set of tests for new results.html file
- https://bugs.webkit.org/show_bug.cgi?id=59031
-
- Also, fix the bugs (mostly innocuous JS errors) the tests found.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_test.js: Added.
-
-2011-04-21 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] missing LayoutTestController::callShouldCloseOnWebView()
- https://bugs.webkit.org/show_bug.cgi?id=59086
-
- callShouldCloseOnWebView() implementation.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::callShouldCloseOnWebView):
-
-2011-04-21 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] DRT: implement eventSender.scalePageBy
- https://bugs.webkit.org/show_bug.cgi?id=59082
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (scalePageByCallback): scalePageBy() support.
-
-2011-04-20 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- layoutTestController can create and destroy shadow DOM
- https://bugs.webkit.org/show_bug.cgi?id=59058
-
- Chromium, Mac, GTK and Qt DRT; and WK2 test runner.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (ensureShadowRootCallback):
- (removeShadowRootCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::shadowRoot):
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::ensureShadowRoot):
- (LayoutTestController::removeShadowRoot):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowRoot):
- (WTR::LayoutTestController::ensureShadowRoot):
- (WTR::LayoutTestController::removeShadowRoot):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: handle ctrl-c more cleanly
- https://bugs.webkit.org/show_bug.cgi?id=58849
-
- * Scripts/new-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
-
-2011-04-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r84431.
- http://trac.webkit.org/changeset/84431
- https://bugs.webkit.org/show_bug.cgi?id=59061
-
- Breaks for folks who don't have editbugs (Requested by abarth
- on #webkit).
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2011-04-20 Leo Yang <leo.yang@torchmobile.com.cn>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-20 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- webkit-patch upload should assign the bug to you
- https://bugs.webkit.org/show_bug.cgi?id=33699
-
- This patch only re-assigns the bug if it is currently unassigned. We
- can be more aggressive in the future if people want us to be more
- agressive.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/postdiff.py:
-
-2011-04-20 Peter Gal <galpeter@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- Modify builder.html template to allow easy access
- to list more builds on the builder's page.
-
- https://bugs.webkit.org/show_bug.cgi?id=59008
-
- * BuildSlaveSupport/build.webkit.org-config/templates/builder.html:
-
-2011-04-20 Peter Gal <galpeter@inf.u-szeged.hu>
-
- Reviewed by Csaba Osztrogonác.
-
- Add the default template for builder page.
-
- https://bugs.webkit.org/show_bug.cgi?id=59008
-
- * BuildSlaveSupport/build.webkit.org-config/templates/builder.html: Added.
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- move page generation into a single function
- https://bugs.webkit.org/show_bug.cgi?id=59027
-
- Now executing the script doesn't create any state. We should then
- be able to write tests for this by setting custom results data.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- move global state into a shared object
- https://bugs.webkit.org/show_bug.cgi?id=59023
-
- This makes the code more testable.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- move global state into a shared object
- https://bugs.webkit.org/show_bug.cgi?id=59023
-
- This makes the code more testable.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-20 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add expandAll/collapseAll links
- https://bugs.webkit.org/show_bug.cgi?id=59011
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-20 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fixes for wx 2.9.1, Cocoa and 64-bit builds.
-
- * Scripts/webkitdirs.pm:
- * wx/build/build_utils.py:
- * wx/build/settings.py:
- * wx/install-unix-extras:
- * wx/packaging/build-mac-installer.py:
- * wx/packaging/build-win-installer.py:
-
-2011-04-20 Adam Roben <aroben@apple.com>
-
- Replace old-run-webkit-tests's win-7 platform with win-7sp0
-
- It was an error that we had a win-7 platform to begin with. Windows 7 was the most recent
- version of Windows we cared about, so its results should just go in win. But now that
- Windows 7 SP1 exists (and has different results for some tests), we need a place to store
- results for Windows 7 without SP1 (and older versions of Windows).
-
- Part of <http://webkit.org/b/56617> Several tests fail on Windows 7 SP1 due to font
- differences from Windows 7 "SP0"
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests: Replaced win-7 with win-7sp0. Newer versions of Windows 7
- will just use "win".
-
- * Scripts/webkitdirs.pm:
- (isWindows7SP0): Added. Replaces isWindows7, because that function had no remaining callers.
-
-2011-04-20 Adam Roben <aroben@apple.com>
-
- Teach webkitdirs::winVersion about build numbers
-
- The build number isn't currently used, but soon will be.
-
- As a bonus, winVersion now works on non-Cygwin variants of Perl!
-
- Fixes <http://webkit.org/b/58991> Need a way to distinguish between Windows 7 and Windows 7
- SP1
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (isAnyWindows): Added. Returns true if we're running on any Windows-ish Perl.
- (determineWinVersion): Use `cmd /c ver` to get the version number, including the build
- number. Parse the version number into a hash, similar to how osXVersion() works.
-
- (isWindows7):
- (isWindowsVista):
- (isWindowsXP):
- Updated for changes to winVersion().
-
-2011-04-20 W. James MacLean <wjmaclean@chromium.org>
-
- Reviewed by Kenneth Russell.
-
- Add support for composite-to-texture to DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=58675
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setCompositeToTexture):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-04-19 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- The commit-queue is confused when non-layout tests fail
- https://bugs.webkit.org/show_bug.cgi?id=58955
-
- As seen in http://queues.webkit.org/results/8474435
-
- It fails to create an archive of the layout test results
- and then throws an exception.
-
- I've fixed this by making it catch the exception as well
- as made it so it never calls that path in the common case.
-
- I've updated MockFileSystem to understand rmtree's affect on
- directories as well as files.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/workspace.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Fix check for whether a failure is expected to deal with
- flaky tests and FAIL expectations.
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- don't show missing text results for tests that only dump image results
- https://bugs.webkit.org/show_bug.cgi?id=58931
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- don't show failures table if there are only new tests
- https://bugs.webkit.org/show_bug.cgi?id=58929
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- don't show failures table if there are only new tests
- https://bugs.webkit.org/show_bug.cgi?id=58929
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Fix unittest failures from http://trac.webkit.org/changeset/84294.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner_unittest.py:
-
-2011-04-18 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- switch new-run-webkit-tests to using the new results file
- https://bugs.webkit.org/show_bug.cgi?id=58861
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-19 Renata Hodovan <reni@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move the alignment related macros from Vector.h to new Alignment.h.
- https://bugs.webkit.org/show_bug.cgi?id=56000
-
- Adding the new file to the forwarding headers of Tools.
-
- * DumpRenderTree/ForwardingHeaders/wtf/Alignment.h: Added.
-
-2011-04-19 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix for Win / wx 2.9 wxPython installation.
-
- * wx/packaging/build-win-installer.py:
- * wx/packaging/wxWebKitInstaller.iss.in:
-
-2011-04-19 Adam Roben <aroben@apple.com>
-
- Skip another accelerated-compositing-sensitive test when accelerated compositing is disabled
-
- * Scripts/old-run-webkit-tests: Skip media/controls-without-preload.html on Windows when
- accelerated compositing is disabled.
-
-2011-04-19 Ojan Vafai <ojan@chromium.org>
-
- Remove accidentally committed debug code.
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-19 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- Avoid duplicate stub implementation of test routine
- for WinCairo build.
-
- * WebKitTestRunner/win/TestInvocationWin.cpp: Exclude
- WinCairo from using this stub.
-
-2011-04-18 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- make results file work with audio and reftests
- https://bugs.webkit.org/show_bug.cgi?id=58860
-
- Also fix bug with timeout tests and store a bit in the JSON
- for new image tests instead of loading the image result to check if it's there.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-19 Jer Noble <jer.noble@apple.com>
-
- Reviewed by Adam Roben.
-
- REGRESSION (r84206): 50 tests failing on SnowLeopard Intel Release (WebKit2 Tests) due to extra "supportsFullScreen() == true" output
- https://bugs.webkit.org/show_bug.cgi?id=58890
-
- Add a layoutTestController flag which controls when full screen callbacks are written to stdout.
- Defaults to false.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added dumpFullScreenCallbacks().
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::supportsFullScreen): Only write to stdout if shouldDumpFullScreenCallbacks is set.
- (WTR::InjectedBundlePage::enterFullScreenForElement): Ditto.
- (WTR::InjectedBundlePage::exitFullScreenForElement): Ditto.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize new ivar.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpFullScreenCallbacks): Added.
- (WTR::LayoutTestController::shouldDumpFullScreenCallbacks): Added.
-
-2011-04-19 Kristóf Kosztyó <Kosztyo.Kristof@stud.u-szeged.hu>
-
- Reviewed by Andreas Kling.
-
- [Qt] fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html fails (DRT sideeffect)
- https://bugs.webkit.org/show_bug.cgi?id=35086
-
- fast/xmlhttprequest/xmlhttprequest-no-file-access.html caused
- a DRT sideeffect problem, because the resetSettings didn't set
- the default value of LocalContentCanAccessFileUrls.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
-
-2011-04-18 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Need support for dumping focus rectangles in pixel results
- https://bugs.webkit.org/show_bug.cgi?id=53647
-
- Dump the selection rect if it has been requested.
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView):
-
-2011-04-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- test-webkitpy should run the ActiveWorkItems tests
- https://bugs.webkit.org/show_bug.cgi?id=58859
-
- Also make the unit tests pass. :)
-
- * QueueStatusServer/model/activeworkitems.py:
- * QueueStatusServer/model/queue.py:
- * QueueStatusServer/model/workitems.py:
-
-2011-04-18 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- queues.webkit.org should show trailing-days pass counts for queues
- https://bugs.webkit.org/show_bug.cgi?id=58812
-
- This lets us see if each bot is pulling its own weight or not.
- Before I wrote this patch our suspicious was that one of the
- cq bots was doing most of the work. Turns out they're actually
- pretty even in their recent pass counts.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/templates/queuestatus.html:
-
-2011-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: obsolete old threading code, part 1
- https://bugs.webkit.org/show_bug.cgi?id=58752
-
- This patch removes support for the 'old-inline' and
- 'old-threads' worker models, and deletes the corresponding code.
- Now that the new code is stable, this stuff is no longer
- necessary.
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/message_broker_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- new-run-webkit-tests: add an --additional-drt-flag option
- https://bugs.webkit.org/show_bug.cgi?id=58680
-
- NRWT has a bunch of command line flags that exist to pass
- custom flags to DRT, especially on chromium. It would be nice
- if there was a generic mechanism to pass through flags so we
- didn't have all the custom ones.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-04-05 Jer Noble <jer.noble@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKit2: WKTR should support WebKit2 full screen APIs
- https://bugs.webkit.org/show_bug.cgi?id=56318
-
- Respond to enterFullScreenForElement() and exitFullScreenForElement(), allowing
- WKTR to test the LayoutTest/fullscreen/ tests.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Add support for WKBundlePageFullScreenClient.
- (WTR::InjectedBundlePage::supportsFullScreen): Added.
- (WTR::InjectedBundlePage::enterFullScreenForElement): Added.
- (WTR::InjectedBundlePage::exitFullScreenForElement): Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Enable the full screen preference.
-
-2011-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: remove chromium-specific relpath hack for --results-directory
- https://bugs.webkit.org/show_bug.cgi?id=58388
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-04-18 Evan Martin <evan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [chromium] expose title direction to webkit client
- https://bugs.webkit.org/show_bug.cgi?id=58823
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setTitleTextDirection):
- Add member and setter to let us stash the title direction at load time.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveTitle):
- * DumpRenderTree/chromium/WebViewHost.h:
- Adapt to new API; push the title into layoutTestController when we
- receive it.
-
-2011-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed.
-
- Re-land r84112. It was rolled out in r84127 but it didn't need
- to be. Only r84111 actually broke things.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: don't run more processes than necessary
- https://bugs.webkit.org/show_bug.cgi?id=58751
-
- Previously NRWT would start up 1 process for each processor on
- the machine by default, which was a waste if we were only
- running a few shards of tests.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-18 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- include links to actual.png files for new pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=58831
-
- Load image elements to confirm whether the files exist.
- Image elements will load without being appended to the DOM.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-18 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add a zoomed view for pixel results to the new results html file
- https://bugs.webkit.org/show_bug.cgi?id=58827
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-18 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add labels to results html page
- https://bugs.webkit.org/show_bug.cgi?id=58803
-
- -fix iframe size to be the size of the png results
- -fix a bunch of aesthetic nits
- -fix some incorrectly styled code
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-18 Chang Shu <cshu@webkit.org>
-
- Reviewed by Eric Seidel.
-
- WebKitTestRunner needs layoutTestController.pathToLocalResource
- https://bugs.webkit.org/show_bug.cgi?id=42541
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/InjectedBundle/mac/LayoutTestControllerMac.mm:
- (WTR::LayoutTestController::pathToLocalResource):
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WTR::LayoutTestController::pathToLocalResource):
- * WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp:
- (WTR::LayoutTestController::pathToLocalResource):
-
-2011-04-18 Timothy Hatcher <timothy@apple.com>
-
- Make update-webkit-localizable-strings put WebKit/win strings in WebCore
- now that all localized strings in WebKit/win use WEB_UI_STRING.
-
- https://webkit.org/b/58747
-
- Reviewed by Dan Bernstein.
-
- * Scripts/update-webkit-localizable-strings: Remove the code that updated WebKit/win differently.
-
-2011-04-18 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Roben.
-
- [WIN] Use WCHAR instead of TCHAR
- https://bugs.webkit.org/show_bug.cgi?id=58755
-
- We always use the UNICODE versions of windows functions, so
- the usage of TCHAR makes no sense and mixing them is bad style.
-
- * WinLauncher/PrintWebUIDelegate.cpp:
- Also fix various style issues (including indentation and removal of ugly C-casts).
- * WinLauncher/WinLauncher.cpp:
-
-2011-04-18 Dominic Cooney <dominicc@chromium.org>
-
- Reviewed by Andreas Kling.
-
- Add layoutTestController.shadowRoot to Qt DRT.
- https://bugs.webkit.org/show_bug.cgi?id=58759
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::shadowRoot): Added.
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-04-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r84111.
- http://trac.webkit.org/changeset/84111
- https://bugs.webkit.org/show_bug.cgi?id=58771
-
- Chromium linux layout tests are broken. (Requested by loislo2
- on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
-
-2011-04-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r84112.
- http://trac.webkit.org/changeset/84112
- https://bugs.webkit.org/show_bug.cgi?id=58770
-
- Chromium linux layout tests are broken. (Requested by loislo2
- on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-17 Daniel Bates <dbates@webkit.org>
-
- Reviewed by Eric Seidel and Adam Barth.
-
- webkit-patch land hangs if svn prompts for credentials
- https://bugs.webkit.org/show_bug.cgi?id=31500
-
- Prompt for username and password when using git-svn and there aren't cached SVN credentials.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- - Added mixin class SVNRepository and made both class SVN and Git inherit from it.
- - Moved SVN.has_authorization_for_realm() to class SVNRepository and removed default value
- for argument realm; modified call sites as needed.
- - Modified AuthenticationError constructor to take optional prompt_for_password argument.
- - Modified {SCM, SVN, Git}.commit_with_message() to take optional password argument.
- - Modified Git._commit_on_branch() to take optional username and password argument.
- - Modified Git.push_local_commits_to_server() to take optional username and password
- argument and to call has_authorization_for_realm().
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
- - Modified SVNTest.test_commit_without_authorization() to take dummy realm argument.
- - Modified SVNTest.test_not_have_authorization_for_realm() to pass realm argument to
- SVN.has_authorization_for_realm().
- * Scripts/webkitpy/common/net/credentials.py:
- - Modified Credentials.read_credentials() to call User.prompt_password() instead
- of using getpass.getpass() directly.
- * Scripts/webkitpy/common/system/user.py:
- - Added User.prompt_password().
- * Scripts/webkitpy/tool/steps/commit.py:
- - Modified Commit.run() to prompt for a password if needed.
-
-2011-04-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: save stderr into the layout-test-results dir
- https://bugs.webkit.org/show_bug.cgi?id=58690
-
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: read stderr from chromium DRT separately
- https://bugs.webkit.org/show_bug.cgi?id=58708
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
-
-2011-04-17 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename PLATFORM(CA) to USE(CA)
- https://bugs.webkit.org/show_bug.cgi?id=58742
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2011-04-17 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Rename PLATFORM(CG) to USE(CG)
- https://bugs.webkit.org/show_bug.cgi?id=58729
-
- * DumpRenderTree/PixelDumpSupport.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintRect):
- * DumpRenderTree/config.h:
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView):
- * TestWebKitAPI/PlatformWebView.h:
- * WebKitTestRunner/config.h:
- * WebKitTestRunner/win/TestInvocationWin.cpp:
-
-2011-04-16 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Rename PLATFORM(CAIRO) to USE(CAIRO)
- https://bugs.webkit.org/show_bug.cgi?id=55192
-
- * DumpRenderTree/PixelDumpSupport.cpp:
- * DumpRenderTree/config.h:
- * DumpRenderTree/win/PixelDumpSupportWin.cpp:
- (createBitmapContextFromWebView):
- * WebKitTestRunner/config.h:
-
-2011-04-16 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- show diffs+test inline in the results page
- https://bugs.webkit.org/show_bug.cgi?id=58723
-
- Put each row in it's own tbody and sort based on tbodies. That way
- we can append the results to the tbody inline as another table row.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-16 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- handle new tests in the new results html file
- https://bugs.webkit.org/show_bug.cgi?id=58715
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- old-run-webkit-tests: save the list of tests actually run to a file
- https://bugs.webkit.org/show_bug.cgi?id=58692
-
- * Scripts/old-run-webkit-tests:
-
-2011-04-15 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- fix MockFileSystem.abspath() on windows
- https://bugs.webkit.org/show_bug.cgi?id=58713
-
- The existing code was borked on Windows if a path was passed
- in using a drive letter (e.g., "d:\foo.txt"), and would go
- into an infinite recursive loop. While win paths shouldn't
- normally be passed into the mock filesystem, this just
- bulletproofs things a bit (note that "/foo.txt" is considered
- an absolute path on windows python as well.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
-
-2011-04-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- show stderr files and httpd log files
- https://bugs.webkit.org/show_bug.cgi?id=58714
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-15 Shishir Agrawal <shishir@chromium.org>
-
- Reviewed by James Robinson.
-
- Add a flag to guard Page Visibility API changes.
- https://bugs.webkit.org/show_bug.cgi?id=58464
-
- * Scripts/build-webkit:
-
-2011-04-15 Chang Shu <cshu@webkit.org>
-
- Reviewed by Alexey Proskuryakov.
-
- When a message with url embedded is added to console, the "file:" scheme
- and path should be stripped.
- https://bugs.webkit.org/show_bug.cgi?id=58665
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::lastFileURLPathComponent):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
-
-2011-04-15 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Sam Weinig.
-
- Add takeFocus callback to WKPageUIClient
- https://bugs.webkit.org/show_bug.cgi?id=58686
-
- Add empty WKPageUIClient entries for the takeFocus callback in the MiniBrowser and WebKitTestRunner.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]): Added empty takeFocus entry.
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create): Added empty takeFocus entry.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage): Added empty takeFocus entry.
- (WTR::TestController::initialize): Added empty takeFocus entry.
-
-2011-04-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- only show pretty-diff/wdiff if they were generated
- https://bugs.webkit.org/show_bug.cgi?id=58682
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-04-15 Andreas Kling <kling@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] DRT: Default custom policy delegate decision should be Ignore.
-
- If layoutTestController.setCustomPolicyDelegate() is called with only
- one argument, the second ("permissive") should default to false.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-04-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix path to layout test in new results file
- https://bugs.webkit.org/show_bug.cgi?id=58618
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-15 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix sorting in new results file
- https://bugs.webkit.org/show_bug.cgi?id=58616
-
- -Fix the custom sort to return -1, 0, 1 instead of true/false.
- -Secondary sort by test name when sort values are equal.
- -Sort by test name by default.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-15 Dmitry Lomov <dslomov@google.com>
-
- Reviewed by David Levin.
-
- check-webkit-style shouldn't complain about not including a primary header file
- if none exists
- https://bugs.webkit.org/show_bug.cgi?id=39514
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
-2011-04-15 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- queues.webkit.org should display when a bot last rebooted
- https://bugs.webkit.org/show_bug.cgi?id=58562
-
- There is more repeated code here than I would like. I fear
- my django-fu isn't quite up to snuff.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/templates/queuestatus.html:
-
-2011-04-14 Alok Priyadarshi <alokp@chromium.org>
-
- Reviewed by Adam Barth.
-
- Remove dependency on chromium skia::PlatformCanvas
- https://bugs.webkit.org/show_bug.cgi?id=57563
-
- Fixed compile error on Mac when using Core Graphics.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::paintRect):
-
-2011-04-14 Alok Priyadarshi <alokp@chromium.org>
-
- Reviewed by James Robinson.
-
- Remove dependency on chromium skia::PlatformCanvas
- https://bugs.webkit.org/show_bug.cgi?id=57563
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (makeCanvasOpaque):
- (TestShell::dumpImage):
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
- (WebThemeControlDRTWin::WebThemeControlDRTWin):
- (WebThemeControlDRTWin::draw):
- (WebThemeControlDRTWin::drawTextField):
- (WebThemeControlDRTWin::drawProgressBar):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::canvas):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2011-04-14 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Add -maximize flag to QtTestBrowser and MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=58007
-
- Adds flag to start the test browsers maximized.
- Symbian started maximized on QtTestBrowser - made MiniBrowser follow
- suit.
- Also fixes some ToggleFullScreen issues so that prior window state is
- restored.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::toggleFullScreenMode):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::init):
- (LauncherWindow::toggleFullScreenMode):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-04-14 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add checkbox to only show unexpected results to new results file
- https://bugs.webkit.org/show_bug.cgi?id=58606
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-13 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Martin Robinson.
-
- [WinCairo] Implement ImageDiff Logic.
- http://bugs.webkit.org/show_bug.cgi?id=58486
-
- * DumpRenderTree/win/ImageDiffCairo.cpp: Added.
- (strtof):
- (readFromData):
- (createImageFromStdin):
- (releaseMallocBuffer):
- (createDifferenceImage):
- (imageHasAlpha):
- (writeToData):
- (main):
- * DumpRenderTree/win/ImageDiff.vcproj: Updated for new
- ImageDiffCairo.cpp (excluding from Apple builds).
- * DumpRenderTree/win/ImageDiffDebugCairoCFLite.vsprops: Use
- new ImageDiffWinCairoCommon.vsprops file.
- * DumpRenderTree/win/ImageDiffReleaseCairoCFLite.vsprops: Use
- new ImageDiffWinCairoCommon.vsprops file.
- * DumpRenderTree/win/ImageDiffWinCairoCommon.vsprops: Added.
- * Scripts/old-run-webkit-tests: Make sure proper executable
- is built and executed for WinCairo port.
-
-2011-04-14 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- only show expected failure type for ports that use an expectations file
- https://bugs.webkit.org/show_bug.cgi?id=58588
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue fails to catch IOError when results.html is missing
- https://bugs.webkit.org/show_bug.cgi?id=58589
-
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-04-14 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix for Mac installation script.
-
- * wx/packaging/build-mac-installer.py:
-
-2011-04-14 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- sort columns in the new json_results.html file
- https://bugs.webkit.org/show_bug.cgi?id=58581
-
- Also fix padding on TDs and the path to layout tests.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html:
-
-2011-04-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Dimitri Glazkov.
-
- queues.webkit.org should display when a bot last passed a patch
- https://bugs.webkit.org/show_bug.cgi?id=58546
-
- I am suspicious that some of our commit-queue instances are never
- actually passing anything.
-
- This will let us know if those bots are never passing patches.
-
- * QueueStatusServer/handlers/queuestatus.py:
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/templates/queuestatus.html:
-
-2011-04-14 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- REGRESSION (r83764): webkitpy.layout_tests.port.chromium_win_unittest.ChromiumWinTest.test_default_worker_model fails on apple-windows-13
- https://bugs.webkit.org/show_bug.cgi?id=58545
-
- Remove platform-specific overrides; the default behavior should
- be working everywhere now, I think.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-04-14 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queues are hitting an exception trying to land when the tree is red
- https://bugs.webkit.org/show_bug.cgi?id=58558
-
- Just an un-tested (and thus broken) code path from yesterday's changes.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-04-14 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fixes for wxMSW and wx 2.9.1.1.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::shadowRoot):
- * wx/build/wxpresets.py:
-
-2011-04-14 Victoria Kirst <vrk@google.com>
-
- Reviewed by James Robinson.
-
- [chromium] Failing GPU video tests
- https://bugs.webkit.org/show_bug.cgi?id=57926
-
- Added/updated GPU directory names for rebaseline tool.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-04-13 Daniel Bates <dbates@rim.com>
-
- Reviewed by Adam Barth.
-
- Perl unit test removeEOL.pl should print test case name on failure
- https://bugs.webkit.org/show_bug.cgi?id=58513
-
- * Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl: Pass $title as
- second argument of Test::Simple::ok().
-
-2011-04-13 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Eric Seidel.
-
- gdb-safari should pass arguments to safari.
- https://bugs.webkit.org/show_bug.cgi?id=58439
-
- We can do:
- gdb-safari --debug LayoutTests/.../foo.html
-
- * Scripts/gdb-safari: Passing @ARGV to Safari via gdb --arg.
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, build fix.
- https://bugs.webkit.org/show_bug.cgi?id=52763
-
- r83799 broke test-webkitpy because it assumed we always have
- access to a real filesystem (we don't during the unit tests).
- Stubbing out the copy for now but we might need a better
- solution at some point.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests --run-singly option is busted
- https://bugs.webkit.org/show_bug.cgi?id=55909
-
- Python's broken lexical scoping strikes again :(.
-
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-13 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Eric Seidel.
-
- generated unexpected_results.html from unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=52763
-
- Eventually, we'll merge this with results.html and have a single richer results page.
- For now, I just want to get something checked in that we can iterate on.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results.html: Added.
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-04-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Up the failure limit to allow the commit-queue to actually land when the tree is red
- https://bugs.webkit.org/show_bug.cgi?id=58499
-
- This change increases the --exit-after-N-failures limit used by the commit-queue
- from 1 to 10. This will cause the code added in bug 58494 to actually get
- exercised and the queues should start being able to land when the trees are red.
-
- When testing I found that test_runtests_leopard_commit_queue_hack_command was the
- only unit test to actually detect this change! Since we don't actually
- run on leopard anymore, I removed the hack code and repurposed the test.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2011-04-13 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should be able to land when tree is red
- https://bugs.webkit.org/show_bug.cgi?id=58494
-
- There is some yak hair on my hands, I will admit.
-
- This change is mostly about adding an ExpectedFailures
- class to track when the bots are red and we should be
- ignoring failures when landing from the commit-queue.
-
- However, to make intelligent decisions about patches we
- need to know whether the run hit the --exit-after-N-failures limit
- or not. Right now that information is not saved off in results.html
- so we have to pull the information from RunTests.
-
- I've plumbed the --exit-after-N-failures information into
- LayoutTestResults for now to make the ExpectedFailures code cleaner.
-
- As a result of adding all these additional calls to delegate.layout_test_results()
- I broke some of our flaky test detection tests and had to re-write them
- to not depend on the number of layout_test_results code.
-
- At the same time I updated the commit-queue to use the newer filesystem
- API (to allow us to use MockFileSystem) which required further changes
- to the layout tests. Changes were required in either case, since
- we're now calling layout_test_results() in more cases, which previously
- would try and hit the disk (until I moved it to use tool.filesystem).
-
- I should note that *all* of this code is disabled for now, since our
- --exit-after-N-failures limit is currently 1! (Thus were always in the
- case where we can't actually tell if the layout test results are legit.)
- I will up that limit in a second patch (which may require a couple more unit test tweaks).
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- * Scripts/webkitpy/tool/bot/expectedfailures.py: Added.
- * Scripts/webkitpy/tool/bot/expectedfailures_unittest.py: Added.
- * Scripts/webkitpy/tool/commands/queues.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- * Scripts/webkitpy/tool/commands/queuestest.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
-
-2011-04-13 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- * TestWebKitAPI/PlatformWebView.h: Limit include of
- <CoreGraphics/CGGeometry> to PLATFORM(CG) users.
-
-2011-04-13 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [NRWT] Rename --baseline-search-patch to --additional-platform-directory to match ORWT
- https://bugs.webkit.org/show_bug.cgi?id=58489
-
- r83743 added --additional-platform-directory to old-run-webkit-tests,
- rename the equivalent flag in new-run-webkit-tests to be consistent.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-13 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Eric Seidel.
-
- Rebaseline queue server
- https://bugs.webkit.org/show_bug.cgi?id=57891
-
- Adds a simple rebaseline queue server (meant to run at
- http://rebaseline-queue.appspot.com/). It presents a list of all (NRWT)
- builders and their failing tests, and allows those tests to be added to
- a per-builer rebaseline queue.
-
- A subsequent change will add a mode to NRWT (and/or a wrapper script)
- for pulling the tests to be rebaselined from the server and running them
- with --reset-results (the initial use-case is for the GPU hardware bots,
- which do not have checked-in baselines, therefore there is no need for a
- check-in step yet).
-
- * RebaselineQueueServer/app.yaml: Added.
- * RebaselineQueueServer/handlers/__init__.py: Added.
- * RebaselineQueueServer/handlers/builderqueue.py: Added.
- * RebaselineQueueServer/handlers/pages.py: Added.
- * RebaselineQueueServer/index.yaml: Added.
- * RebaselineQueueServer/main.py: Added.
- * RebaselineQueueServer/model/__init__.py: Added.
- * RebaselineQueueServer/model/queueentry.py: Added.
- * RebaselineQueueServer/static/builder-frame-empty.html: Added.
- * RebaselineQueueServer/static/styles.css: Added.
- * RebaselineQueueServer/templates/builder-picker.html: Added.
- * RebaselineQueueServer/templates/builder-queue-edit.html: Added.
- * RebaselineQueueServer/templates/builder-queue-list.html: Added.
- * RebaselineQueueServer/templates/home.html: Added.
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- nrwt: enable multiple processes by default on Chromium Win.
- https://bugs.webkit.org/show_bug.cgi?id=55163
-
- Re-land r79268; it should be more stable now and will hopefully
- work.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: configure logging in child processes properly
- https://bugs.webkit.org/show_bug.cgi?id=58296
-
- Logging propagated properly from manager to worker processes on
- Unix but not on Windows; this fixes that.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker.py:
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: suppress extraneous pretty patch warnings
- https://bugs.webkit.org/show_bug.cgi?id=58295
-
- NRWT wasn't being careful about when it logged messages from
- PrettyPatch not being available; it should only log during
- check_build(), and be silent otherwise. This was causing us to
- get multiple errors at runtime, which was confusing.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-04-13 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Jian Li.
-
- add chromium-linux-x86_64 to rebaseline-chromium-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=58461
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-04-13 Tony Chang <tony@chromium.org>
-
- Unreviewed, fix NRWT. Stack:
-
- return super(ChromiumPort, self).results_directory(self)
- TypeError: results_directory() takes exactly 1 argument (2 given)
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-04-13 Adam Roben <aroben@apple.com>
-
- Teach ORWT about extra platform-specific directories to be searched before the default ones
-
- Fixes <http://webkit.org/b/58446> ORWT needs a way to look in a user-specified directory for
- platform-specific results
-
- Reviewed by Anders Carlsson.
-
- * Scripts/old-run-webkit-tests:
- (top-level): Added @additionalPlatformDirectories and hooked up
- --additional-platform-directories to populate it.
- (buildPlatformResultHierarchy): Prepend the additional platform directories to the default
- list (after filtering out any of the additional directories that don't exist).
-
-2011-04-13 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Adam Roben.
-
- Add the /T command to taskkill.exe.
- This will kill spawned child processes.
-
- * BuildSlaveSupport/win/kill-old-processes:
-
-2011-04-13 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Adam Roben.
-
- Sort kill list alphabeticaly.
- Fixed capitalization on VcBuildHelper.
-
- * BuildSlaveSupport/win/kill-old-processes:
-
-2011-04-13 Lucas Forschler <lforschler@apple.com>
-
- Reviewed by Adam Roben.
-
- https://bugs.webkit.org/show_bug.cgi?id=58384
- Update kill-old-processes to include a few new ones.
-
- * BuildSlaveSupport/win/kill-old-processes:
-
-2011-04-13 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Martin Robinson.
-
- [GTK] PluginPackage should check whether a plugin mixes GTK+ 2 and 3 symbols itself
- https://bugs.webkit.org/show_bug.cgi?id=58297
-
- Do not disable flash specifically when built with GTK+ 3 -
- PluginPackage should do the right thing while loading plugins.
-
- * GtkLauncher/main.c:
- (main):
-
-2011-04-12 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [Chromium] Add WebSettings::setValidationMessageTimerMagnification()
- https://bugs.webkit.org/show_bug.cgi?id=57426
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo): Disable the validation message timer.
-
-2011-04-12 James Kozianski <koz@chromium.org>
-
- Unreviewed.
-
- Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-12 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction for WinCairo bot after r83639.
- https://bugs.webkit.org/show_bug.cgi?id=51790
-
- Correct typo for the new "update-webkit-wincairo-libs" script.
-
- * Scripts/build-webkit: Incorrectly calling the
- update-webkit-cairo-libs which does not exist.
-
-2011-04-12 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- A change that should have been part of http://trac.webkit.org/changeset/83628
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Setting should be off for most tests. Reset to false.
-
-2011-04-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: --results-directory is relative to builddir, not $PWD
- https://bugs.webkit.org/show_bug.cgi?id=58272
-
- NRWT was interpreting the --results-directory cmd line arg as
- relative to the build directory, not the current working
- directory (ORWT uses the latter, which is much more intuitive).
-
- This patch fixes the base case, but includes an override for
- Chromium that is needed until the bots can be updated.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-04-12 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, roll out r83621 as it broke the GTK build.
-
- [GTK] arguments passed to build-jsc and build-webkit scripts are not taken into account
- https://bugs.webkit.org/show_bug.cgi?id=58333
-
- * Scripts/build-jsc:
- * Scripts/build-webkit:
-
-2011-04-12 Carl Lobo <carllobo@gmail.com> and Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Patch to download the WinCairo dependancies as part of build-webkit.
- https://bugs.webkit.org/show_bug.cgi?id=51790
-
- This patch downloads the dependancies from
- http://idisk.mac.com/bfulgham-Public/WinCairoRequirements.zip
- checking the modification timestamp etc.
-
- * Tools/Scripts/build-webkit
- * Tools/Scripts/update-webkit: Modified to understand the --wincairo
- flag, and to update WinCairo dependencies when used.
- * Tools/Scripts/update-webkit-cairo-libs: added
- * Tools/Scripts/update-webkit-dependency: added
- * Tools/Scripts/update-webkit-auxiliary-libs
-
-2011-04-12 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2: Pressing Tab in Web Inspector's console does not cycle through completion options
- https://bugs.webkit.org/show_bug.cgi?id=56020
-
- Don't call TranslateMessage() in the MiniBrowser or TestWebKitAPI for key messages destined for a WebKit2 view,
- since WebKit will do this for us. If we didn't do this, TranslateMessage() would be called twice,
- which would generate two characters for every keypress (for example). I didn't bother doing this for
- WebKitTestRunner, since it doesn't get any WM_KEYDOWN events.
-
- Add new WebKit2/TranslateMessageGeneratesWMChar test to test expected TranslateMessage() behavior.
-
- * MiniBrowser/win/main.cpp:
- (shouldTranslateMessage): Added.
- (_tWinMain): Don't call TranslateMessage() unless shouldTranslateMessage() says to.
- * TestWebKitAPI/PlatformUtilities.h: Added shouldTranslateMessage() on Windows.
- * TestWebKitAPI/PlatformWebView.h: Added simulateAKeyDown().
- * TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp: Added.
- (TestWebKitAPI::didNotHandleKeyEventCallback): Added.
- (TestWebKitAPI::runAndWatchForWMChar): Added.
- (TestWebKitAPI::TEST): Added.
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- (TestWebKitAPI::Util::run): Don't call TranslateMessage() unless shouldTranslateMessage() says to.
- (TestWebKitAPI::Util::shouldTranslateMessage): Added.
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::simulateAKeyDown): Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added TranslateMessageGeneratesWMChar.cpp.
-
-2011-04-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: update code to use port.results_directory() instead of options.results_directory
- https://bugs.webkit.org/show_bug.cgi?id=58290
-
- This is some preliminary refactoring for bug 58272.
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-04-12 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Eric Seidel.
-
- webkitpy: fix mock_filesystem abspath to handle relative paths
- and add filesystem.chdir() and filesystem.getcwd() to be able
- to test this and mock it out.
-
- https://bugs.webkit.org/show_bug.cgi?id=58288
-
- * Scripts/webkitpy/common/system/filesystem.py:
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
-
-2011-04-12 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Sam Weinig.
-
- https://bugs.webkit.org/show_bug.cgi?id=58292
- Provide new setting to allow site icon loading despite disabling automatic image loading in general.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Setting should be off for most tests. Reset to false.
-
-2011-04-12 Thouraya ANDOLSI <thouraya.andolsi@st.com>
-
- Reviewed by Eric Seidel.
-
- [Qt] Enable JIT build for SH4 platforms.
- https://bugs.webkit.org/show_bug.cgi?id=58317
-
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitdirs.pm:
-
-2011-04-12 Tony Chang <tony@chromium.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] embed checksums in PNGs written by Qt-DRT
- https://bugs.webkit.org/show_bug.cgi?id=58173
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
-
-2011-04-12 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- commit-queue should upload failure diffs when tests fail
- https://bugs.webkit.org/show_bug.cgi?id=58348
-
- This change was mostly just plumbing. We were already saving
- this information for flaky test reporting. I just made it possible
- for normal failures to report archives as well.
-
- I did a little abstraction work to try and share some code between
- flakytestreporter.py and this new code. There is still more we could do.
-
- In making this change I also went through and updated the various
- places we have urls hard-coded in our python and pointed them at
- common.config.urls.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/statusserver.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/tool/bot/botinfo.py: Added.
- * Scripts/webkitpy/tool/bot/botinfo_unittest.py: Added.
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues.py:
-
-2011-04-12 Daniel Bates <dbates@rim.com>
-
- Rubber-stamped by Eric Seidel.
-
- svn-apply and/or patch(1) has trouble applying patches that makes changes to files
- with Windows line endings
- https://bugs.webkit.org/show_bug.cgi?id=53625
-
- Fixes an issue where a patch made on a SCM checkout on a Unix file system cannot be
- applied to an SCM checkout on a Windows file system and vice-versa.
-
- This issue manifests itself due to custom SCM settings as well as differences in
- gitattributes support in older versions of Git (e.g. 1.7.0.3). We implement support
- into svn-apply/unapply to compensate for differences in line endings by converting
- the line endings in a patch to match the line endings in the target file (if it exists).
-
- * Scripts/VCSUtils.pm:
- - Added parseFirstEOL(), which returns the first end-of-line character(s) that appear in the
- content read from the specified file handle. Obviously, this heuristic will not work
- for files with mixed line endings, but I don't envision such files to be the norm. If
- this turns out to be an issue then we can improve the heuristic.
- - Added firstEOLInFile().
- - Modified parsePatch() and parseDiff() to take an optional hash reference to an options hash.
- In particular, added the hash key shouldNotUseIndexPathEOL to control whether to use the line
- endings in the diff instead of the line endings in the target file.
- - Extracted local variable $chunkRangeRegEx from fixChangeLogPatch() so that it can be
- re-used in parseDiff().
- * Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl: Modified to pass {shouldNotUseIndexPathEOL => 1}
- to parsePatch() since these unit tests don't create mock files. Instead, created unit tests that use
- mock files in file VCSUtils_unittest/parseDiffWithMockFiles.pl.
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl: Added.
- * Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl: Added.
-
-2011-04-12 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- REGRESSION (r83550): Multiple http tests crashing in the web process in SQLite beneath CFNetwork on Windows 7 Release (WebKit2 Tests)
- https://bugs.webkit.org/show_bug.cgi?id=58336
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Remove cache clearing as that is causing tests to crash on Windows 7.
-
-2011-04-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- REGRESSION(r77974): http/tests/security/aboutBlank/security-context-window-open.html is failing
- <rdar://problem/8981346>
- https://bugs.webkit.org/show_bug.cgi?id=54159
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
- (WTR::InjectedBundlePage::decidePolicyForNewWindowAction):
- (WTR::InjectedBundlePage::decidePolicyForResponse):
- (WTR::InjectedBundlePage::unableToImplementPolicy):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- Add short-circuited policy client which matches WebKit1.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Clear the cache between tests to ensure consistent results.
-
-2011-04-11 George Guo <George.Guo@nokia.com>
-
- Reviewed by Eric Seidel.
-
- prepare-ChangeLog support email input but -h did not show the option
- https://bugs.webkit.org/show_bug.cgi?id=58164
-
- Add email option to -h to improve the usability
-
- * Scripts/prepare-ChangeLog:
-
-2011-04-11 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Eric Carlson.
-
- Rename MediaControls to MediaControlRootElement.
- https://bugs.webkit.org/show_bug.cgi?id=58250
-
- * Scripts/do-webcore-rename: Documented the renaming.
-
-2011-04-11 Sam Weinig <sam@webkit.org>
-
- Fix Windows build.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2011-04-11 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Move focus management out of WebKit via the UIClient
- <rdar://problem/8784068>
- https://bugs.webkit.org/show_bug.cgi?id=58278
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- Add stubs for new UIClient functions.
-
-2011-02-03 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Eric Seidel.
-
- [GTK] The GTK+ DRT needs an implementation of the PlainTextController
- https://bugs.webkit.org/show_bug.cgi?id=53605
-
- Add an implementation of the PlainTextController for the GTK+ DRT.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (addControllerToWindow): Added this helper method.
- (webViewWindowObjectCleared): Use the new helper to add EventSender
- and the PlainTextController to the window object.
- * GNUmakefile.am: Added PlainTextController source files.
- * DumpRenderTree/gtk/PlainTextController.cpp: Added. This will rely
- on DumpRenderTreeSupportGtk to convert a JSValueRef into a WebKitDOMRange
- until that functionality exists somewhere in the WebKitGTK+ stack.
- * DumpRenderTree/gtk/PlainTextController.h: Added.
-
-2011-04-11 Yael Aharon <yael.aharon@nokia.com>
-
- Unreviewed.
-
- Adding my IRC nick.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-04-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- new-run-webkit-tests: fix crash when running under windows cmd.exe
- https://bugs.webkit.org/show_bug.cgi?id=58197
-
- We would intermittently crash when running NRWT directly under
- cmd.exe on windows because we were sharing the stdin file
- descriptor between the python process and the http server.
- cmd.exe really didn't like that, and there was no reason to
- share the descriptor, so we now use a PIPE instead.
-
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2011-04-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: add unit tests for Port.diff_image()
- https://bugs.webkit.org/show_bug.cgi?id=58196
-
- Add the unit tests for the fix in bug 58195.
-
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2011-04-11 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: implement support for audio, take two
- https://bugs.webkit.org/show_bug.cgi?id=58195
-
- Attempt to re-land the fix for bug 58101 (which was initially
- landed in r83330, but rolled out). This is the same patch but
- fixes crashes in Port.diff_image() caused by the change for
- empty image files being None instead of ''.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-04-11 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Implement AccessibilityUIElement::{row|column}IndexRange in DRT
- https://bugs.webkit.org/show_bug.cgi?id=57854
-
- Implement missing features in GTK's DRT.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (indexRangeInTable): New helper function to get the range string
- for the current cell inside the parent table, either from the
- point of view of rows or columns.
- (AccessibilityUIElement::rowIndexRange): Implemented by relying on
- the new helper function indexRangeInTable().
- (AccessibilityUIElement::columnIndexRange): Ditto.
-
-2011-04-11 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Chris Fleizach.
-
- [GTK] Implement AccessibilityUIElement::cellForColumnAndRow in DRT
- https://bugs.webkit.org/show_bug.cgi?id=57826
-
- Implement missing feature in GTK's DRT.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::cellForColumnAndRow): Implemented, by
- relying on the analogous function from the AtkTable interface.
-
-2011-04-05 Timothy Hatcher <timothy@apple.com>
-
- Fix the extract-localizable-strings script errors that started after
- WEB_UI_STRING was added to LocalizedStrings.h in WebCore.
-
- * Scripts/extract-localizable-strings: Skip LocalizedStrings.h.
-
-2011-04-11 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- fix crc computation on 64 bit machines
- https://bugs.webkit.org/show_bug.cgi?id=58243
-
- unsigned long is dependenct on CPU architecture, so use unsigned which is always 32 bits
-
- * DumpRenderTree/CyclicRedundancyCheck.cpp:
- (makeCrcTable):
- (computeCrc):
- * DumpRenderTree/CyclicRedundancyCheck.h:
- * DumpRenderTree/PixelDumpSupport.cpp:
- (appendIntToVector):
- (convertChecksumToPNGComment):
-
-2011-04-10 Kimmo Kinnunen <kimmo.t.kinnunen@nokia.com>
-
- Reviewed by Eric Seidel.
-
- Require no undefined symbols during compilation.
-
- [Qt] [WK2] WebKitTestRunner, QtWebProcess and WTRInjectBundle should fail to compile when there's undefined symbols
- https://bugs.webkit.org/show_bug.cgi?id=54896
-
- Add -Wl,--no-undefined to catch missing symbols early.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-04-10 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Remove collector dirs from the list of build dirs.
-
- * wx/build/settings.py:
-
-2011-04-10 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Add Source/JavaScriptCore/heap to the list of directories.
-
- * wx/build/settings.py:
-
-2011-04-10 David Levin <levin@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- REGRESSION(r83384): Change to chromium.py is resulting in failures of the test framework on linux.
- https://bugs.webkit.org/show_bug.cgi?id=58201
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Commented out the assert for now,
- and filed bug 58202.
-
-2011-04-09 David Levin <levin@chromium.org>
-
- Unreviewed, rolling out r83394.
- http://trac.webkit.org/changeset/83394
- https://bugs.webkit.org/show_bug.cgi?id=53625
-
- Patch was incorrect as noted in the bug.
-
- * Scripts/svn-apply:
-
-2011-04-09 David Levin <levin@chromium.org>
-
- Reviewed by Adam Barth.
-
- svn-apply and/or patch(1) has trouble applying patches that makes changes to files with Windows line endings
- https://bugs.webkit.org/show_bug.cgi?id=53625
-
- * Scripts/svn-apply: Ensure that the portions of patches
- which are for vcproj/vsprops files has DOS line endings.
-
-2011-04-09 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- It looks like NRWT has not been stopping DRT/TestShell
- instances properly on windows, probably for a long time.
- This would go a long way to explaining why we often have
- processes lying around :)
-
- https://bugs.webkit.org/show_bug.cgi?id=57807
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2011-04-09 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Don't link against fontconfig or X11 if embedded
- https://bugs.webkit.org/show_bug.cgi?id=58104
-
- * DumpRenderTree/qt/DumpRenderTree.pro: fontconfig !included in embedded
- * QtTestBrowser/QtTestBrowser.pro: ditto
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: ditto
- * WebKitTestRunner/qt/WebKitTestRunner.pro: ditto
-
-2011-04-08 Jon Honeycutt <jhoneycutt@apple.com>
-
- http/tests/loading/preload-append-scan.php is failing on Windows
- https://bugs.webkit.org/show_bug.cgi?id=58178
-
- Reviewed by Brian Weinstein.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (lastPathComponent):
- Use CFURL API to find the last path component, rather than
- PathFindFileName(), because the latter will include the query string.
-
-2011-04-08 Jian Li <jianli@chromium.org>
-
- Unreviewed, rolling out r83327, r83330 since these patches are very
- likely to break chromium webkit mac10.6 builders.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-04-08 Vincent Scheib <scheib@chromium.org>
-
- Reviewed by Eric Seidel.
-
- add chromium-gpu-linux-x86_64 to the recognized list of ports
- https://bugs.webkit.org/show_bug.cgi?id=58099
-
- Add chromium-gpu-linux-x86_64 to fix assert.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
-
-2011-04-08 Alpha Lam <hclam@chromium.org>
-
- Unreviewed, rolling out r83335.
- http://trac.webkit.org/changeset/83335
- https://bugs.webkit.org/show_bug.cgi?id=53556
-
- GTK and QT bots are broken
-
- * Scripts/build-webkit:
-
-2011-04-07 Anna Cavender <annacc@chromium.org>
-
- Reviewed by Eric Carlson.
-
- Setup ENABLE(TRACK) feature define
- https://bugs.webkit.org/show_bug.cgi?id=53556
-
- * Scripts/build-webkit:
-
-2011-04-08 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- new-run-webkit-tests: configure a NRWT test bot for Mac SL
- https://bugs.webkit.org/show_bug.cgi?id=58114
-
- This change removes the old new-run-webkit-tests entry and
- updates it for a new test-only bot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2011-04-08 Dominic Cooney <dominicc@google.com>
-
- Reviewed by Adam Roben.
-
- Make layoutTestController.shadowRoot return null, not undefined,
- when its argument is invalid.
- https://bugs.webkit.org/show_bug.cgi?id=58121
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::shadowRoot):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowRoot):
-
-2011-04-08 Pere Martir <pere.martir4@gmail.com>
-
- Reviewed by Adam Roben.
-
- Locate NSTD.EXE in 64-bit Windows
- https://bugs.webkit.org/show_bug.cgi?id=57847
-
- * Scripts/old-run-webkit-tests:
-
-2011-04-08 Adam Roben <aroben@apple.com>
-
- Qt build fix
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Pull in stdarg.h for va_list.
-
-2011-04-07 Adam Roben <aroben@apple.com>
-
- Test that NPP_SetWindow is passed a null window handle during plugin destruction on non-Mac platforms
-
- Test for <http://webkit.org/b/47009> WebKit2 needs to call NPP_SetWindow when destroying a
- plugin
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginLogWithArguments): Moved code to format and log the message here...
- (pluginLog): ...from here.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Added pluginLogWithArguments.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::log): Added. Calls through to pluginLogWithArguments.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h: Added log.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp: Added.
- (NPPSetWindowCalledDuringDestruction::setWillBeDestroyed): Records that destruction is about
- to begin.
- (NPPSetWindowCalledDuringDestruction::NPPSetWindowCalledDuringDestruction): Simple
- constructor.
- (NPPSetWindowCalledDuringDestruction::NPP_GetValue): Creates and returns a ScriptObject that
- can be used to invoke our setWillBeDestroyed function.
- (NPPSetWindowCalledDuringDestruction::NPP_SetWindow): Records what has happened (and logs if
- anything unexpected happens).
- (NPPSetWindowCalledDuringDestruction::NPP_Destroy): On Mac, logs a failure message if
- NPP_SetWindow was called during destruction. On other platforms, logs a failure message if
- NPP_SetWindow was *not* called during destruction.
- (NPPSetWindowCalledDuringDestruction::ScriptObject::hasMethod): Return true for our only
- method, setWillBeDestroyed.
- (NPPSetWindowCalledDuringDestruction::ScriptObject::invoke): Call through to the PluginTest
- object.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
- Added new test.
-
- * Scripts/old-run-webkit-tests: Skip the new test when using out-of-process plugins with
- WebKit1 on Mac, since it can't work properly due to <http://webkit.org/b/58077>.
-
-2011-04-08 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Implement increment() and decrement() functions in DRT's AccessibilityUIElement
- https://bugs.webkit.org/show_bug.cgi?id=58039
-
- Implement missing functions in GTK's DRT.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::increment): Implemented.
- (AccessibilityUIElement::decrement): Implemented.
-
-2011-04-08 Dominic Cooney <dominicc@google.com>
-
- Reviewed by Kent Tamura.
-
- Make WK2 layoutTestController.shadowRoot return undefined, not
- null, when its argument is not an element.
- https://bugs.webkit.org/show_bug.cgi?id=58121
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowRoot):
-
-2011-04-07 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Change reference port for Mac GPU baselines from
- Leopard to SnowLeopard, XP to Win7, and Linux-x86
- to Linux x86-64.
-
- https://bugs.webkit.org/show_bug.cgi?id=58099
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-04-07 Andrew Scherkus <scherkus@chromium.org>
-
- Revert ENABLE_TRACK patch due to compile failures.
-
- * Scripts/build-webkit:
-
-2011-04-07 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- update DRT to embed checksums in png files
- https://bugs.webkit.org/show_bug.cgi?id=57871
-
- We insert the bytes for the comment in printPNG rather than at encode
- time because each platform does its own PNG encoding (either using CG
- or cairo). Putting this in pringPNG avoids having to duplicate this
- code, although it's not as clean as doing it at encoding time.
-
- We insert the comment right after the IHDR chunk of the PNG.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/CyclicRedundancyCheck.cpp: Added.
- (makeCrcTable): Ported from LayoutTests/fast/canvas/webgl/resources/pnglib.js
- (computeCrc): Ported from LayoutTests/fast/canvas/webgl/resources/pnglib.js
- * DumpRenderTree/CyclicRedundancyCheck.h: Added.
- * DumpRenderTree/PixelDumpSupport.cpp:
- (dumpWebViewAsPixelsAndCompareWithExpected):
- (convertChecksumToPNGComment): Generate the bytes to insert.
- (printPNG): Insert the png comment before the first IDAT section.
- * DumpRenderTree/PixelDumpSupport.h:
- * DumpRenderTree/cairo/PixelDumpSupportCairo.cpp:
- (printPNG):
- (dumpBitmap):
- * DumpRenderTree/cg/PixelDumpSupportCG.cpp:
- (printPNG):
- (dumpBitmap):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * GNUmakefile.am:
-
-2011-04-07 Jeff Miller <jeffm@apple.com>
-
- Reviewed by Adam Roben.
-
- Replace WKStringGetCharactersPtr() with WKStringGetCharacters()
- https://bugs.webkit.org/show_bug.cgi?id=58058
-
- * TestWebKitAPI/Tests/WebKit2/WKString.cpp:
- (TestWebKitAPI::TEST): Add tests for WKStringGetLength() and WKStringGetCharactersPtr().
-
-2011-04-07 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.isPageBoxVisible
- https://bugs.webkit.org/show_bug.cgi?id=42695
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::isPageBoxVisible):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-07 Adam Roben <aroben@apple.com>
-
- Build fix
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Added a missing import.
-
-2011-04-07 Adam Roben <aroben@apple.com>
-
- Move ExtractTestResults[AndLeaks]'s summarizing code back from commandComplete() to finished()
-
- commandComplete() is never called for MasterShellCommands like ExtractTestResults[AndLeaks].
- (Unfortunately the buildbot documentation does not make this clear.) finished() is the only
- hook we have, so we have to do our work there. I added a new addCustomURLs method which can
- be overridden by subclasses to provide extra URLs before we call up to the base class (after
- which adding more URLs is no longer possible).
-
- Really hopefully fixes <http://webkit.org/b/56032> Leaks viewer should be linked from leaks
- bot results page
-
- Reviewed by John Sullivan.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ExtractTestResults.addCustomURLs): Moved code to add the "view results" URL here...
- (ExtractTestResults.finished): ...from here. This replaces commandComplete, since that
- method is never called for MasterShellCommands.
- (ExtractTestResultsAndLeaks.addCustomURLs): Replaced commandComplete (which is never called)
- with this method (which is).
-
-2011-04-07 Adam Roben <aroben@apple.com>
-
- Move ExtractTestResults[AndLeaks]'s summarizing code from finished() to commandComplete()
-
- This matches how most of our other build steps work, so is good just for improving
- consistency between build steps. It should also make it possible for
- ExtractTestResultsAndLeaks to successfully add a URL to Leaks Viewer. (Previously we were
- trying to do this in finished() after we had called up to the base class, but that was
- apparently too late to add more URLs.)
-
- Hopefully fixes <http://webkit.org/b/56032> Leaks viewer should be linked from leaks bot
- results page
-
- Reviewed by John Sullivan.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ExtractTestResults): Added a descriptionDone property so that we don't have to manually
- call setText to get the right text to show up for this step. This matches how most of our
- other build steps work.
- (ExtractTestResults.commandComplete): Replaced our override of finished with this function.
- This is how most of our other build steps work.
- (ExtractTestResultsAndLeaks.commandComplete): Replaced our override of finished with this
- function, to match the base class.
-
-2011-04-07 Adam Barth <abarth@webkit.org>
-
- Reviewed by Maciej Stachowiak.
-
- webkit-patch shouldn't state the whole working copy when calling check-webkit-style
- https://bugs.webkit.org/show_bug.cgi?id=58022
-
- Previously, we were ignoring the args variable! This patch fixes the
- regression introduced in http://trac.webkit.org/changeset/82771.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/mocktool.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
-
-2011-04-07 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Barth.
-
- REGRESSION: "webkit-patch land" doesn't work correctly in SVN subdirectories
- https://bugs.webkit.org/show_bug.cgi?id=58017
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2011-04-06 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.pageSizeAndMarginsInPixels
- https://bugs.webkit.org/show_bug.cgi?id=57984
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::pageSizeAndMarginsInPixels):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-06 Chris Rogers <crogers@google.com>
-
- Reviewed by Tony Chang.
-
- Add web audio support to DumpRenderTree (mac port)
- https://bugs.webkit.org/show_bug.cgi?id=57969
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setEncodedAudioDataCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::dumpAsAudio):
- (LayoutTestController::setDumpAsAudio):
- (LayoutTestController::encodedAudioData):
- (LayoutTestController::setEncodedAudioData):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpAudio):
- (dump):
-
-2011-04-06 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] LayoutTestController needs to implement numberOfPendingGeolocationPermissionRequests
- https://bugs.webkit.org/show_bug.cgi?id=56086
-
- Add the missing method.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::getAllPages): Add a method to return all the pages allocated for the current test.
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
-
-2011-04-06 Dai Mikurube <dmikurube@chromium.org>
-
- Reviewed by David Levin.
-
- Add QUOTA build flag for unified quota API
- https://bugs.webkit.org/show_bug.cgi?id=57918
-
- * Scripts/build-webkit: Added QUOTA build flag
-
-2011-04-06 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- Adjust the apple webkit port's default timeout to match
- old-run-webkit-tests at 35 seconds.
-
- https://bugs.webkit.org/show_bug.cgi?id=37738
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-04-06 Scott Cameron <sccameron@rim.com>
-
- Reviewed by Eric Seidel.
-
- Remove global variable $httpdPath and replace with the return value of
- getHTTPDPath(). Also remove unnecessary calls to getHTTPDPath().
- https://bugs.webkit.org/show_bug.cgi?id=53499
-
- * Scripts/run-iexploder-tests:
- * Scripts/webkitperl/httpd.pm:
-
-2011-04-06 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Darin Adler.
-
- Make sure JS_EXPORT_PRIVATE is an empty define when we aren't using the export macros.
-
- https://bugs.webkit.org/show_bug.cgi?id=27551
-
- * DumpRenderTree/config.h:
- * WebKitAPITest/config.h:
- * WebKitTestRunner/config.h:
-
-2011-04-06 Tony Chang <tony@chromium.org>
-
- Reviewed by Darin Adler.
-
- teach run-webkit-tests to read checksums from png files
- https://bugs.webkit.org/show_bug.cgi?id=57993
-
- * Scripts/old-run-webkit-tests: Read the first 2k of a .png if there's
- no .checksum and look for the checksum in there.
-
-2011-04-06 David Dorwin <ddorwin@chromium.org>
-
- Reviewed by David Levin.
-
- Enable fullscreen layout tests for Chromium
- https://bugs.webkit.org/show_bug.cgi?id=55726
-
- Make DumpRenderTree always run with fullscreen enabled (equivalent of --enable-fullscreen).
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2011-04-06 Adam Roben <aroben@apple.com>
-
- Add a "view leaks" link to builds on SnowLeopard Intel Leaks
-
- Fixes <http://webkit.org/b/56032> Leaks viewer should be linked from leaks bot results page
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ExtractTestResults.resultDirectoryURL): Added. Moved code to calculate the URL for the
- build's results directory here...
- (ExtractTestResults.finished): ...from here.
- (ExtractTestResultsAndLeaks): New class that's used by the leaks builder
- (ExtractTestResultsAndLeaks.finished): Calls up to the base class, but also adds a "view
- leaks" link to point to Leaks Viewer for this build.
- (TestFactory): Added ExtractTestResultsClass abstraction. This isn't overridden anywhere,
- but it seemed good to add for consistency with BuildAndTestFactory.
- (BuildAndTestFactory): Added ExtractTestResultsClass abstraction.
- (BuildAndTestLeaksFactory): Use ExtractTestResultsAndLeaks as our ExtractTestResultsClass so
- that we'll get a "view leaks" link.
-
-2011-04-06 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Eric Seidel.
-
- [Gtk] plugins/set-status.html fails
- https://bugs.webkit.org/show_bug.cgi?id=57844
-
- Allow an empty status text to be dumped.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewStatusBarTextChanged):
-
-2011-04-06 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.pageNumberForElementById
- https://bugs.webkit.org/show_bug.cgi?id=42329
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::pageNumberForElementById):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-06 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] DumpRenderTree: do not try to free NULL SoupURIs
- https://bugs.webkit.org/show_bug.cgi?id=57932
-
- Some Layout tests have invalid URIs that do not generate valid
- SoupURI instances. Do not try to free those NULL SoupURIs.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback):
-
-2011-04-06 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- ORWT shouldn't generate diff files for tests without expected files
- https://bugs.webkit.org/show_bug.cgi?id=57846
-
- * Scripts/old-run-webkit-tests:
-
-2011-04-05 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Mac build fix. Handle cases where 10.4 SDK is not installed, and also add x86_64 arch
- to deps.
-
- * wx/install-unix-extras:
-
-2011-04-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r82978, r82999, and r83001.
- http://trac.webkit.org/changeset/82978
- http://trac.webkit.org/changeset/82999
- http://trac.webkit.org/changeset/83001
- https://bugs.webkit.org/show_bug.cgi?id=57913
-
- Does not work in Python 2.5 (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/common/system/executive.py:
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2011-04-05 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.numberOfPages
- https://bugs.webkit.org/show_bug.cgi?id=42694
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::numberOfPages):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-05 Tony Chang <tony@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- [chromium] stop putting results downloaded from WebKit Linux in chromium-linux-x86_64
- https://bugs.webkit.org/show_bug.cgi?id=57889
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-04-05 Adam Barth <abarth@webkit.org>
-
- Silly with statement, from the future!
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-04-05 Adam Barth <abarth@webkit.org>
-
- Reviewed by Tony Chang.
-
- Don't use Exception.message because it's deprecated
- https://bugs.webkit.org/show_bug.cgi?id=57892
-
- Suppress the warning for now. When we move to Python 3, we might need
- to something more dramatic.
-
- * Scripts/webkitpy/common/system/executive.py:
-
-2011-04-05 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add builders.js to dashboard file list
- https://bugs.webkit.org/show_bug.cgi?id=57899
-
- Add file added by http://crrev.com/80538 to dashboard file list.
-
- * TestResultServer/handlers/dashboardhandler.py:
-
-2011-04-05 MORITA Hajime <morrita@google.com>
-
- Reviewed by Adam Barth.
-
- webkit-patch should print git's stderr when git svn dcommit fail
- http://webkit.org/b/57861
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-04-05 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- Add --baseline-search-path to NRWT
- https://bugs.webkit.org/show_bug.cgi?id=56233
-
- Add NRWT option to specify additional directories to look for baselines
- (will be used by hardware GPU bots which will have local per-bot
- expectations for some tests)
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-04-05 Adam Roben <aroben@apple.com>
-
- Strip off /results.html from results URLs before trying to load leaks files from them
-
- r82734 changed build.webkit.org's "view results" URLs to point straight to the results.html
- files, rather than pointing to the directory that contains them. This is more convenient for
- people browsing build.webkit.org, but confused Leaks Viewer.
-
- Fixes <http://webkit.org/b/57869> REGRESSION (r82734): Links in Leaks Viewer's Recent Builds
- list don't work
-
- Reviewed by Joseph Pecoraro.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js:
- (RecentBuildsLoader.prototype.start): Strip off "/results.html" from the results URL.
-
-2011-04-05 Carol Szabo <carol@webkit.org>
-
- Unreviewed.
-
- Updated my info in committers.py
-
- Scripts\webkitpy\common\config\committers.py
-
-2011-04-05 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Make WebKitLibraries optional for building QtWebKit
- https://bugs.webkit.org/show_bug.cgi?id=57542
-
- * Scripts/build-webkit:
-
-2011-04-05 Chang Shu <cshu@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] MiniBrowser defaultUrl does not work
- https://bugs.webkit.org/show_bug.cgi?id=57021
-
- Match the behavior and coding of MiniBrowser to QtTestBrowser.
- * MiniBrowser/qt/main.cpp:
- (main):
-
-2011-04-05 Jade Han <jade.han@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] [Symbian] Disable WebKitTestRunner for Symbian
- https://bugs.webkit.org/show_bug.cgi?id=54977
-
- This change is a preparation to enable building webkit2 for Symbian.
- Bug 57834 is filed to fix and enable WebKitTestRunner for Symbian.
-
- * Tools.pro:
-
-2011-04-05 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix timeoutTimer of MiniBrowser's UrlLoader
- https://bugs.webkit.org/show_bug.cgi?id=57832
-
- Only QWKPage has loadFinished signal so connect to it instead of BrowserWindow.
-
- * MiniBrowser/qt/UrlLoader.cpp:
- (UrlLoader::UrlLoader):
-
-2011-04-05 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Linux Release minimal build fix after r82919.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::loadURLListFromFile):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::loadURLListFromFile):
-
-2011-04-05 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Make URL loader accessible from testbrowser's menus
- https://bugs.webkit.org/show_bug.cgi?id=57823
-
- Add "Load URLs from file" to QtTestBrowser's and to MiniBrowser's menu.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::loadURLListFromFile):
- (BrowserWindow::~BrowserWindow):
- * MiniBrowser/qt/BrowserWindow.h:
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::LauncherWindow):
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::createChrome):
- (LauncherWindow::loadURLListFromFile):
- * QtTestBrowser/launcherwindow.h:
-
-2011-04-04 Sam Weinig <sam@webkit.org>
-
- Reviewed by Brian Weinstein.
-
- Remove duplicate API from WKContext
- <rdar://problem/8727879>
- https://bugs.webkit.org/show_bug.cgi?id=57815
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/SendingMessagesToTheWebProcessBeforeItIsValid.cpp: Removed.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Remove SendingMessagesToTheWebProcessBeforeItIsValid since the API it was testing is now removed.
-
-2011-04-04 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] don't write .checksum files if a fallback platform has an embedded checksum
- https://bugs.webkit.org/show_bug.cgi?id=57783
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-04-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, run uninstall when cleaning to remove built files
- from WebKitBuild.
-
- * Scripts/webkitdirs.pm:
-
-2011-04-04 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] WebGL support
- https://bugs.webkit.org/show_bug.cgi?id=31517
-
- Add support to the DRT for turning on WebGL when a layout tests requests it.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): Allow turning on WebGL from tests.
-
-2011-04-04 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.setAllowFileAccessFromFileURLs
- https://bugs.webkit.org/show_bug.cgi?id=57572
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setAllowFileAccessFromFileURLs):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-04 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] DumpRenderTree breaks compilation in some uClibc environments
- https://bugs.webkit.org/show_bug.cgi?id=57602
-
- * DumpRenderTree/qt/main.cpp:
- (get_backtrace):
-
-2011-04-04 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix, add new LayoutTestController method stub to wx.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::shadowRoot):
-
-2011-04-04 Pavel Podivilov <podivilov@chromium.org>
-
- Unreviewed, fix exception in rebaseline tool.
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-04-02 Beth Dakin <bdakin@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- For Dan!
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2011-04-02 Beth Dakin <bdakin@apple.com>
-
- Rubber-stamped by Geoff Garen.
-
- Need to reset the scale, much like zoom.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2011-04-02 Sam Weinig <sam@webkit.org>
-
- Reviewed by Beth Dakin.
-
- https://bugs.webkit.org/show_bug.cgi?id=57605
- Frame::pageScaleFactor() should not affect getBoundingClientRect() or
- getClientRects()
- -and corresponding-
- <rdar://problem/9194541>
-
- Add DRT support for the scaleWebView SPI.
- * DumpRenderTree/mac/EventSendingController.mm:
- (+[EventSendingController isSelectorExcludedFromWebScript:]):
- (+[EventSendingController webScriptNameForSelector:]):
- (-[EventSendingController scalePageBy:atX:andY:]):
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::scalePageBy):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-04-02 Dominic Cooney <dominicc@google.com>
-
- Reviewed by Martin Robinson.
-
- Add layoutTestController.shadowRoot to GTK DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=57551
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::shadowRoot):
-
-2011-04-02 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Remove AbstractStep._run_script and move script names to ports.py
- https://bugs.webkit.org/show_bug.cgi?id=57704
-
- Replace deprecated _run_script with _tool.executive.run_and_throw_if_fail.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
-
-2011-04-02 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Emulate shebang on Win32
- https://bugs.webkit.org/show_bug.cgi?id=55927
-
- Scripts on Windows work only if they are called with the explicit interpreter.
- Read the first line of scripts to detect the correct executable.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/common/system/executive.py: Added interpreter_for_script().
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2011-04-01 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- apos entities shouldn't show up in ChangeLogs when using webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=57692
-
- Previously, we were using BeautifulSoup to process XML from
- bugs.webkit.org, but that's incorrect. We should be using
- BeautifulStoneSoup to process the XML. We were getting the &apos;
- entity wrong because &apos; is an XML entity but not an HTML entity.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
-
-2011-04-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r82721.
- http://trac.webkit.org/changeset/82721
- https://bugs.webkit.org/show_bug.cgi?id=57687
-
- This patch introduced assertion failures on the GTK+ bots.
- (Requested by mrobinson on #webkit).
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::shadowRoot):
-
-2011-04-01 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed buildfix.
-
- [Qt][WK2] Build Webkit2 using "-2" option on Qt
- https://bugs.webkit.org/show_bug.cgi?id=55074
-
- * Scripts/build-webkit: Ensure that "-2" isn't passed to qmake.
- (The isWK2() function removes it from @ARGV, but not from @options.)
-
-2011-04-01 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] [WK2] MiniBrowser.qrc not found - regression from rev 82671
- https://bugs.webkit.org/show_bug.cgi?id=57666
-
- * MiniBrowser/qt/MiniBrowser.qrc: Renamed from Tools/MiniBrowser/MiniBrowser.qrc.
-
-2011-04-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- new-run-webkit-tests: fix feature detection, skipped platform lists on mac
-
- We apparently never implemented the code to skip tests based on
- what was compiled into DRT. Also, change the logic used to skip
- platform directories to match what old-run-webkit-tests does:
- skip every test not in a directory in the baseline search path.
-
- https://bugs.webkit.org/show_bug.cgi?id=57662
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
-
-2011-03-29 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Jon Honeycutt.
-
- <http://webkit.org/b/56730> new-run-webkit-tests fails on Lion seed
-
- Teach new-run-webkit-tests about the concept of an unreleased version of Mac OS X.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-04-01 Chang Shu <cshu@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt][WK2] Build Webkit2 using "-2" option on Qt
- https://bugs.webkit.org/show_bug.cgi?id=55074
-
- * Scripts/build-webkit:
-
-2011-04-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: remove spurious port version override in webkit.py
- base.py provides a default implementation so this is just
- breaking things.
-
- https://bugs.webkit.org/show_bug.cgi?id=57667
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-04-01 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make view results on waterfall direct link to results.html
- https://bugs.webkit.org/show_bug.cgi?id=57671
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Add "/results.html" to the URL.
- * Scripts/old-run-webkit-tests: Add links to httpd access and error logs.
-
-2011-04-01 Sam Weinig <sam@webkit.org>
-
- Fix windows build.
-
- * TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp:
- (TestWebKitAPI::flushMessages):
-
-2011-04-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add adoptWK to WKRetainPtr.h
- https://bugs.webkit.org/show_bug.cgi?id=57670
-
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp:
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp:
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp:
- * TestWebKitAPI/Tests/WebKit2/CookieManager.cpp:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp:
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp:
- * TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp:
- (TestWebKitAPI::createSessionStateContainingFormData):
- * WebKitTestRunner/StringFunctions.h:
- Replace custom versions of adoptWK with the API on in WebKit2/WKRetainPtr.h.
-
-2011-04-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Fix leak noticed by Adam Roben in LayoutTestController::shadowRoot.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowRoot):
- Make judicious use of adoptWK().
-
-2011-04-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Timothy Hatcher.
-
- Fix extract-localizable-strings for macro change from UI_STRING -> WEB_UI_STRING.
-
- * Scripts/extract-localizable-strings:
-
-2011-04-01 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Shockwave plug-in doesn't accept mouse events
- https://bugs.webkit.org/show_bug.cgi?id=57653
- <rdar://problem/8483273>
-
- Add a plug-in test.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::indicateTestFailure):
- Move code from NPDeallocateCalledBeforeNPShutdown::TestObject::~TestObject here.
-
- (PluginTest::NPN_ConvertPoint):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp:
- (NPDeallocateCalledBeforeNPShutdown::TestObject::~TestObject):
- Call indicateTestFailure.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac: Added.
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp: Added.
- (ConvertPoint::ConvertPoint):
- (ConvertPoint::testConvert):
- (ConvertPoint::NPP_New):
-
-2011-04-01 Dominic Cooney <dominicc@google.com>
-
- Reviewed by Martin Robinson.
-
- Add layoutTestController.shadowRoot to GTK DumpRenderTree.
- https://bugs.webkit.org/show_bug.cgi?id=57551
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::shadowRoot):
-
-2011-04-01 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- WebKitTestRunner needs layoutTestController.shadowRoot
- https://bugs.webkit.org/show_bug.cgi?id=57661
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::shadowRoot):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- Implement layoutTestController.shadowRoot for WebKit2.
-
-2011-04-01 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.setDatabaseQuota
- https://bugs.webkit.org/show_bug.cgi?id=57568
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setDatabaseQuota):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-04-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- This patch completes the cleanup of
- rebaseline-chromium-webkit-tests to work with all of the
- variants of a platform (we can now rebaseline gpu- and non-gpu
- files at the same time).
-
- When the rebaselining is complete, any lines declared as
- REBASELINE in the expectations file that matches a test that was
- actually rebaselined will be deleted, even if only one of the
- variants was actually rebaselined. This may cause odd problems,
- but is better than where we're at today.
-
- This change removes the -g flag and deprecates -w. The -g flag is gone
- because GPU baselines are handled just like any other variant.
- The -w flag is deprecated because this tool now only works
- against the canaries, since that's the only place we have a full
- set of bots. It will be trivial to change this to
- build.webkit.org if we decide that's where we want them to be.
-
- Also, this patch deletes a lot of cruft that is no longer needed
- in the test_expectations code and the port-specific code.
-
- https://bugs.webkit.org/show_bug.cgi?id=55191
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-04-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- rebaseline-chromium-webkit-tests does not work correctly with
- version-specific baselines. This patch updates the tool to use
- all of the version-specific bots on the canaries, and will now
- attempt to rebaseline all of the versions by default, although
- it will not update both GPU and CPU versions.
-
- Also, it will no longer modify the test_expectations.txt file
- *at all*. You will have to manually delete the REBASELINE lines
- after running the tool and determining that it did what you
- wanted it to do. This should be fixed in a separate bug - see
- webkit bug #55191.
-
- https://bugs.webkit.org/show_bug.cgi?id=55608
-
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_expectations_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-03-31 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] update the rebaseline tool to know about pngs with checksums
- https://bugs.webkit.org/show_bug.cgi?id=57481
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py: Skip over .checksum files if the checksum is already in the png
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests_unittest.py:
-
-2011-04-01 Adam Roben <aroben@apple.com>
-
- Retrieve revision numbers from the build's got_revision property in Leaks Viewer
-
- Previously, we were getting the revision of the first revision that triggered a build.
- Choosing the last revision would have been more accurate. But got_revision is what is used
- everywhere else on build.webkit.org, and should work even when there were no changes that
- triggered a build (e.g., if someone clicked the Force Build button).
-
- Fixes <http://webkit.org/b/57630> Leaks viewer gets some revision numbers wrong in the
- recent builds list
-
- Reviewed by Anders Carlsson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js:
- (RecentBuildsLoader.prototype.start): Pull the revision number out of the got_revision
- property, rather than out of the first (i.e., earliest) change in the sourceStamp object.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js:
- (Array.prototype.first): Added this helper function to return the first element in an array
- that matches the given predicate, or null if no such element exists.
-
-2011-03-31 Adam Roben <aroben@apple.com>
-
- Prefer (but don't require) bug URLs to be on their own line when parsing bug numbers from ChangeLogs
-
- Fixes <http://webkit.org/b/57579> webkit-patch is too strict about bug URL formatting
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (parse_bug_id_from_changelog): Fall back to parse_bug_id if we weren't able to find a bug
- URL on its own line.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (BugzillaTest.test_parse_bug_id_from_changelog): Updated expected results for test
- progression, and added a new test that uses a short bug URL while I was at it.
-
-2011-04-01 Adam Roben <aroben@apple.com>
-
- Mark .vcproj/.vsprops/.sln files as being Windows-only
-
- Fixes <http://webkit.org/b/57489> Mac builders built 82512, but shouldn't have
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Added patterns to mark .vcproj/.vsprops/.sln files and .vcproj
- directories as Windows-only.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShoulBuildTest): Added test cases for the above.
-
-2011-04-01 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Build MiniBrowser for Symbian
- https://bugs.webkit.org/show_bug.cgi?id=56319
-
- Have MiniBrowser reference it's own copy of useragentlist.txt instead
- of copying QtTestBrowser's.
- Remove Tools/MiniBrowser/DerivedSources.pro
- This reduces complexity in the Tools scripts due to Symbian limitations.
-
- * DerivedSources.pro:
- * MiniBrowser/DerivedSources.pro: Removed.
- * MiniBrowser/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowser.pro:
- * Scripts/webkitdirs.pm:
-
-2011-03-31 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.clearAllDatabases
- https://bugs.webkit.org/show_bug.cgi?id=42540
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::clearAllDatabases):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-03-31 Chang Shu <cshu@webkit.org>
-
- Reviewed by Darin Adler.
-
- WebKitTestRunner needs layoutTestController.setAllowUniversalAccessFromFileURLs
- https://bugs.webkit.org/show_bug.cgi?id=42692
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
-
-2011-03-31 Darin Adler <darin@apple.com>
-
- Reviewed by Sam Weinig.
-
- Implement mouseDown, mouseUp, and mouseMoveTo in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=57573
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- Added real definitions for mouseDown, mouseUp, mouseMoveTo and leapForward.
- Removed fake definitions of keyDown and contextClick.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::operator==): Added. So we can compare two WKPoint structs.
- (WTR::parseModifier): Added.
- (WTR::parseModifierArray): Added.
- (WTR::EventSendingController::EventSendingController): Initialize the
- new data members.
- (WTR::EventSendingController::mouseDown): Added. Calls
- WKBundlePageSimulateMouseDown.
- (WTR::EventSendingController::mouseUp): Added. Calls
- WKBundlePageSimulateMouseUp.
- (WTR::EventSendingController::mouseMoveTo): Added. Calls
- WKBundlePageSimulateMouseMotion.
- (WTR::EventSendingController::leapForward): Added.
- (WTR::EventSendingController::updateClickCount): Added. Used by the
- mouseDown/Up functions to create a click count.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.h: Updated
- for the changes above.
-
-2011-03-31 Sergio Villar Senin <svillar@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] implement LayoutTestController::setWillSendRequestReturnsNull
- https://bugs.webkit.org/show_bug.cgi?id=57362
-
- Do not generate DRT output if willSendRequestReturnsNull is set.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback):
-
-2011-03-31 Vamshikrishna.Yellenki <vamshi@motorola.com> and Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- Implement MiniBrowser for Gtk port.
- https://bugs.webkit.org/show_bug.cgi?id=48512
-
- Initial implementation of the Gtk MiniBrowser.
-
- * MiniBrowser/gtk/GNUmakefile.am: Added.
- * MiniBrowser/gtk/main.c: Added.
- (activateUriEntryCallback):
- (destroyCallback):
- (goBackCallback):
- (goForwardCallback):
- (createToolbar):
- (createWebView):
- (createWindow):
- (argumentToURL):
- (main):
-
-2011-03-30 Dominic Cooney <dominicc@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Adds layoutTestController.shadowRoot accessor to Mac DRT.
- https://bugs.webkit.org/show_bug.cgi?id=57415
-
- * DumpRenderTree/LayoutTestController.cpp:
- (shadowRootCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::shadowRoot):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::shadowRoot):
-
-2011-03-30 Matthew Delaney <mdelaney@apple.com>
-
- Reviewed by Chris Marrin.
-
- Update fast/canvas tests to avoid dumping the render tree when possible
- https://bugs.webkit.org/show_bug.cgi?id=57493
-
- * DumpRenderTree/mac/DumpRenderTree.mm: Make DRT aware of new default values for
- accelerated drawing and accelerated drawing for canvas
-
-2011-03-30 Adam Roben <aroben@apple.com>
-
- Stop ignoring leaks in CGGradientCreateWithColorStops
-
- Fixes <rdar://problem/7888547>.
-
- Rubber-stamped by John Sullivan.
-
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks): Removed some code to ignore those leaks.
-
-2011-03-30 Timur Iskhodzhanov <timurrrr@google.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Add some dynamic annotations to JavaScriptCore/wtf
- https://bugs.webkit.org/show_bug.cgi?id=53747
-
- By using these annotations we can improve the precision of finding
- WebKit errors using dynamic analysis tools like ThreadSanitizer and Valgrind.
- These annotations don't affect the compiled binaries unless USE(DYNAMIC_ANNOTATIONS) is "1".
-
- These files don't add new functionality, so don't need extra tests.
-
- * DumpRenderTree/ForwardingHeaders/wtf/DynamicAnnotations.h: Added.
-
-2011-03-30 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Share most vsprops between Release and Production builds in releaseproduction.vsprops
- https://bugs.webkit.org/show_bug.cgi?id=57508
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginProduction.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginRelease.vsprops:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseCairoCFLite.vsprops:
- * DumpRenderTree/win/DumpRenderTreeProduction.vsprops:
- * DumpRenderTree/win/DumpRenderTreeRelease.vsprops:
- * DumpRenderTree/win/DumpRenderTreeReleaseCairoCFLite.vsprops:
- * DumpRenderTree/win/ImageDiffProduction.vsprops:
- * DumpRenderTree/win/ImageDiffRelease.vsprops:
- * DumpRenderTree/win/ImageDiffReleaseCairoCFLite.vsprops:
- * FindSafari/FindSafariProduction.vsprops:
- * FindSafari/FindSafariRelease.vsprops:
- * FindSafari/FindSafariReleaseCairoCFLite.vsprops:
- * FindSafari/FindSafariReleasePGO.vsprops:
- * MiniBrowser/Configurations/MiniBrowserProduction.vsprops:
- * MiniBrowser/Configurations/MiniBrowserRelease.vsprops:
- * MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops:
- * TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops:
- * TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops:
- * WebKitAPITest/WebKitAPITestProduction.vsprops:
- * WebKitAPITest/WebKitAPITestRelease.vsprops:
- * WebKitAPITest/WebKitAPITestReleaseCairoCFLite.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinProduction.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinRelease.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinReleaseCairoCFLite.vsprops:
- * WebKitTestRunner/win/InjectedBundleProduction.vsprops:
- * WebKitTestRunner/win/InjectedBundleRelease.vsprops:
- * WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops:
- * WinLauncher/WinLauncherProduction.vsprops:
- * WinLauncher/WinLauncherRelease.vsprops:
- * WinLauncher/WinLauncherReleaseCairoCFLite.vsprops:
- * record-memory-win/record-memory-winProduction.vsprops:
- * record-memory-win/record-memory-winRelease.vsprops:
- * record-memory-win/record-memory-winReleaseCairoCFLite.vsprops:
-
-2011-03-30 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Update Windows production build logic for new production configurations
- https://bugs.webkit.org/show_bug.cgi?id=57494
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginProduction.vsprops:
- * DumpRenderTree/win/DumpRenderTreeProduction.vsprops:
- * DumpRenderTree/win/ImageDiffProduction.vsprops:
- * FindSafari/FindSafariProduction.vsprops:
- * FindSafari/FindSafariReleasePGO.vsprops:
- * MiniBrowser/Configurations/MiniBrowserProduction.vsprops:
- * WebKitAPITest/WebKitAPITestProduction.vsprops:
- * WebKitLauncherWin/WebKitLauncherWinProduction.vsprops:
- * WebKitTestRunner/win/InjectedBundleProduction.vsprops:
- * WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops:
- * WinLauncher/WinLauncherProduction.vsprops:
- * record-memory-win/record-memory-winProduction.vsprops:
-
-2011-03-30 Robert Hogan <robert@webkit.org>
-
- Reviewed by Antonio Gomes.
-
- [Qt] Fix LoadHTMLStringItem::invoke() after r75966
- Unskip http/tests/navigation/go-back-to-error-page.html
-
- Also add the location of DumpRenderTreeSupportQt.h
- to DRT's include paths.
-
- https://bugs.webkit.org/show_bug.cgi?id=52614
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/GCControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::queueLoadHTMLString):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/qt/PlainTextControllerQt.cpp:
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- * DumpRenderTree/qt/WorkQueueItemQt.cpp:
- (LoadAlternateHTMLStringItem::invoke):
- * DumpRenderTree/qt/WorkQueueItemQt.h:
- (LoadAlternateHTMLStringItem::LoadAlternateHTMLStringItem):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/launcherwindow.h:
-
-2011-03-30 Adam Barth <abarth@webkit.org>
-
- Reviewed by Adam Roben.
-
- SheriffBot rollouts take too long
- https://bugs.webkit.org/show_bug.cgi?id=57498
-
- We used to build before landing rollouts via the commit-queue to
- prevent further breakage, but now that our individual commit-queue
- machines are slower, building takes too long. I can't remember the
- last time a rollout broke compile. It seems like just landing the
- patch is the better trade-off.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2011-03-30 Adam Barth <abarth@webkit.org>
-
- Remove platform/chromium-mac-snowleopard
- https://bugs.webkit.org/show_bug.cgi?id=57486
-
- This directory no longer exists, so we can remove it from the fallback
- chain.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
-
-2011-03-30 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Rename Windows configuration Release_LTCG to Production for clarity
- https://bugs.webkit.org/show_bug.cgi?id=57465
-
- * DumpRenderTree/DumpRenderTree.sln:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginProduction.vsprops: Copied from Tools/DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseLTCG.vsprops.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseLTCG.vsprops: Removed.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTreeProduction.vsprops: Copied from Tools/DumpRenderTree/win/DumpRenderTreeReleaseLTCG.vsprops.
- * DumpRenderTree/win/DumpRenderTreeReleaseLTCG.vsprops: Removed.
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/ImageDiffProduction.vsprops: Copied from Tools/DumpRenderTree/win/ImageDiffReleaseLTCG.vsprops.
- * DumpRenderTree/win/ImageDiffReleaseLTCG.vsprops: Removed.
- * FindSafari/FindSafari.vcproj:
- * FindSafari/FindSafariProduction.vsprops: Copied from Tools/FindSafari/FindSafariReleaseLTCG.vsprops.
- * FindSafari/FindSafariReleaseLTCG.vsprops: Removed.
- * MiniBrowser/Configurations/MiniBrowserProduction.vsprops: Copied from Tools/MiniBrowser/Configurations/MiniBrowserReleaseLTCG.vsprops.
- * MiniBrowser/Configurations/MiniBrowserReleaseLTCG.vsprops: Removed.
- * MiniBrowser/MiniBrowser.vcproj:
- * Scripts/webkitdirs.pm:
- * TestWebKitAPI/win/TestWebKitAPI.sln:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitAPITest/WebKitAPITestProduction.vsprops: Copied from Tools/WebKitAPITest/WebKitAPITestReleaseLTCG.vsprops.
- * WebKitAPITest/WebKitAPITestReleaseLTCG.vsprops: Removed.
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitLauncherWin/WebKitLauncherWinProduction.vsprops: Copied from Tools/WebKitLauncherWin/WebKitLauncherWinReleaseLTCG.vsprops.
- * WebKitLauncherWin/WebKitLauncherWinReleaseLTCG.vsprops: Removed.
- * WebKitTestRunner/WebKitTestRunner.sln:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/InjectedBundleGenerated.vcproj:
- * WebKitTestRunner/win/InjectedBundleProduction.vsprops: Copied from Tools/WebKitTestRunner/win/InjectedBundleReleaseLTCG.vsprops.
- * WebKitTestRunner/win/InjectedBundleReleaseLTCG.vsprops: Removed.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops: Copied from Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseLTCG.vsprops.
- * WebKitTestRunner/win/WebKitTestRunnerReleaseLTCG.vsprops: Removed.
- * WinLauncher/WinLauncher.vcproj:
- * WinLauncher/WinLauncherProduction.vsprops: Copied from Tools/WinLauncher/WinLauncherReleaseLTCG.vsprops.
- * WinLauncher/WinLauncherReleaseLTCG.vsprops: Removed.
- * record-memory-win/record-memory-win.vcproj:
- * record-memory-win/record-memory-winProduction.vsprops: Copied from Tools/record-memory-win/record-memory-winReleaseLTCG.vsprops.
- * record-memory-win/record-memory-winReleaseLTCG.vsprops: Removed.
-
-2011-03-30 MORITA Hajime <morrita@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- [Chromium] Expose the shadow DOM to DumpRenderTree JS tests.
- https://bugs.webkit.org/show_bug.cgi?id=56573
-
- Added LayoutTestController.shadowRoot() to Chromium DRT.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::shadowRoot):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-03-30 Yuta Kitamura <yutak@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] DumpRenderTree: Implement LayoutTestController::setPluginsEnabled
- https://bugs.webkit.org/show_bug.cgi?id=57430
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setPluginsEnabled):
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Barth.
-
- make webkit-patch upload respect -d
- https://bugs.webkit.org/show_bug.cgi?id=57425
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/tool/steps/commit.py:
-
-2011-03-30 Maciej Stachowiak <mjs@apple.com>
-
- Reviewed by Adam Barth.
-
- Make "webkit-patch --dry-run --verbose land" log the SVN command it's going to use
- https://bugs.webkit.org/show_bug.cgi?id=57429
-
- * Scripts/webkitpy/common/checkout/scm.py:
-
-2011-03-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r82383.
- http://trac.webkit.org/changeset/82383
- https://bugs.webkit.org/show_bug.cgi?id=57417
-
- "nrwt isn't shutting down cleanly" (Requested by dpranke on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-29 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Make validation message bubble testable
- https://bugs.webkit.org/show_bug.cgi?id=57290
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Change a setting so that validation
- bubbles isn't hidden automatically.
-
-2011-03-29 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: use 'threads' on win instead of 'old-threads'
-
- It's a bit unclear whether multiple threads or multiple
- processes will be a better model on windows. This change will
- test threads for now while we're still working out the bugs in
- multiple-processes.
-
- https://bugs.webkit.org/show_bug.cgi?id=57410
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-29 David Levin <levin@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- check-webkit-style confused by two ChangeLog entries in a row from same user
- https://bugs.webkit.org/show_bug.cgi?id=57250
-
- * Scripts/webkitpy/style/checker.py: Add the line should be checked function to ChangeLogChecker.
- * Scripts/webkitpy/style/checker_unittest.py: Fix test due to that new function.
- * Scripts/webkitpy/style/checkers/changelog.py: Made this code aware of what lines were being checked.
- It basically assumes only one ChangeLog entry is being processed because that is the standard case and
- checking more than that would be very messey.
- * Scripts/webkitpy/style/checkers/changelog_unittest.py: Add testing to catch the broken case.
- * Scripts/webkitpy/style/error_handlers.py: Added should_line_be_checked.
-
-2011-03-29 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [Mac] Enable interactive-validation tests on Mac DRT
- https://bugs.webkit.org/show_bug.cgi?id=57308
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Enable the form interactive validation feature.
-
-2011-03-29 Chang Shu <cshu@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WebKitTestRunner needs layoutTestController.setAllowUniversalAccessFromFileURLs
- https://bugs.webkit.org/show_bug.cgi?id=42692
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setAllowUniversalAccessFromFileURLs):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2011-03-24 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] [DRT] GtkScrolledWindow adds three pixels of padding between the WebView and the scrollbar
- https://bugs.webkit.org/show_bug.cgi?id=57067
-
- Eliminate extra spacing between the DRT GtkScrolledWindow and the DRT WebView. This
- will allow WebKit1GTK+ and WebKit2GTK+ to share test results. Followup commits will
- update DRT and pixel results as hundreds of results will need to be updated.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting): Eliminate spacing on the GtkScrolledWindow
- by overriding the theme RC/CSS files.
-
-2011-03-29 Steve Falkenburg <sfalken@apple.com>
-
- Reviewed by Adam Roben.
-
- Use per-configuration vsprops in tools projects to avoid WebKitVSPropsRedirectionDir removal by MSVC IDE
- https://bugs.webkit.org/show_bug.cgi?id=57394
-
- Visual Studio's IDE was removing instances of $(WebKitVSPropsRedirectionDir) from
- InheritedPropertySheet rules in our vcproj files when the vcproj was edited from within
- the IDE. To avoid this, add a separate vsprops file for each project configuration that
- contains the required inherited property sheets.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebug.vsprops: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugAll.vsprops: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginDebugCairoCFLite.vsprops: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginRelease.vsprops: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseCairoCFLite.vsprops: Added.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePluginReleaseLTCG.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/DumpRenderTreeDebug.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeDebugAll.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeDebugCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeRelease.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeReleaseCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/DumpRenderTreeReleaseLTCG.vsprops: Added.
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/ImageDiffDebug.vsprops: Added.
- * DumpRenderTree/win/ImageDiffDebugAll.vsprops: Added.
- * DumpRenderTree/win/ImageDiffDebugCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/ImageDiffRelease.vsprops: Added.
- * DumpRenderTree/win/ImageDiffReleaseCairoCFLite.vsprops: Added.
- * DumpRenderTree/win/ImageDiffReleaseLTCG.vsprops: Added.
- * FindSafari/FindSafari.vcproj:
- * FindSafari/FindSafariDebug.vsprops: Added.
- * FindSafari/FindSafariDebugAll.vsprops: Added.
- * FindSafari/FindSafariDebugCairoCFLite.vsprops: Added.
- * FindSafari/FindSafariRelease.vsprops: Added.
- * FindSafari/FindSafariReleaseCairoCFLite.vsprops: Added.
- * FindSafari/FindSafariReleaseLTCG.vsprops: Added.
- * FindSafari/FindSafariReleasePGO.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserDebug.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserRelease.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops: Added.
- * MiniBrowser/Configurations/MiniBrowserReleaseLTCG.vsprops: Added.
- * MiniBrowser/MiniBrowser.vcproj:
- * WebKitAPITest/WebKitAPITest.vcproj:
- * WebKitAPITest/WebKitAPITestDebug.vsprops: Added.
- * WebKitAPITest/WebKitAPITestDebugAll.vsprops: Added.
- * WebKitAPITest/WebKitAPITestDebugCairoCFLite.vsprops: Added.
- * WebKitAPITest/WebKitAPITestRelease.vsprops: Added.
- * WebKitAPITest/WebKitAPITestReleaseCairoCFLite.vsprops: Added.
- * WebKitAPITest/WebKitAPITestReleaseLTCG.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWin.vcproj:
- * WebKitLauncherWin/WebKitLauncherWinDebug.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWinDebugAll.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWinDebugCairoCFLite.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWinRelease.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWinReleaseCairoCFLite.vsprops: Added.
- * WebKitLauncherWin/WebKitLauncherWinReleaseLTCG.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/InjectedBundleDebug.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundleDebugAll.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundleRelease.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops: Added.
- * WebKitTestRunner/win/InjectedBundleReleaseLTCG.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- * WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops: Added.
- * WebKitTestRunner/win/WebKitTestRunnerReleaseLTCG.vsprops: Added.
- * WinLauncher/WinLauncher.vcproj:
- * WinLauncher/WinLauncherDebug.vsprops: Added.
- * WinLauncher/WinLauncherDebugAll.vsprops: Added.
- * WinLauncher/WinLauncherDebugCairoCFLite.vsprops: Added.
- * WinLauncher/WinLauncherRelease.vsprops: Added.
- * WinLauncher/WinLauncherReleaseCairoCFLite.vsprops: Added.
- * WinLauncher/WinLauncherReleaseLTCG.vsprops: Added.
- * record-memory-win/record-memory-win.vcproj:
- * record-memory-win/record-memory-winDebug.vsprops: Added.
- * record-memory-win/record-memory-winDebugAll.vsprops: Added.
- * record-memory-win/record-memory-winDebugCairoCFLite.vsprops: Added.
- * record-memory-win/record-memory-winRelease.vsprops: Added.
- * record-memory-win/record-memory-winReleaseCairoCFLite.vsprops: Added.
- * record-memory-win/record-memory-winReleaseLTCG.vsprops: Added.
-
-2011-03-29 Adam Barth <abarth@webkit.org>
-
- Reviewed by Darin Adler.
-
- test_runner2.py can crash due to undefined variable
- https://bugs.webkit.org/show_bug.cgi?id=57356
-
- Replace reference to undefined variable with a variable that's actually
- defined. AFAICT, there's no way to test this code.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
-
-2011-03-29 Tony Chang <tony@chromium.org>
-
- Reviewed by Eric Seidel.
-
- cleanup rebaseline-chromium-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=57375
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
- - Split _extract_and_add_new_baselines into 3 functions
- - Reduce the amount of line wrapping (the file already has lines
- over 80 col, so may as well try to make the file consistent)
- - Remove unnecessary ()s
-
-2011-03-29 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed by Adam Roben.
-
- Make WinCairo a core builder.
- https://bugs.webkit.org/show_bug.cgi?id=57373
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py: Add WinCairo.
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py: Add WinCairo.
-
-2011-03-29 Timothy Hatcher <timothy@apple.com>
-
- Update update-webkit-localizable-strings to understand that WebKit and
- WebKit2 strings go in WebCore.
-
- Also make extract-localizable-strings optionally use an exclude file. No individual
- warnings are produced about unlocalized strings when there is no exclude file. This
- is needed for WebCore, since there are too many bare strings.
-
- https://webkit.org/b/57354
-
- Reviewed by Sam Weinig.
-
- * Scripts/extract-localizable-strings: Support "-" to mean no exclude file.
- * Scripts/update-webkit-localizable-strings: Update paths to scan WebCore and WebKit2.
-
-2011-03-29 Darin Adler <darin@apple.com>
-
- Reviewed by Adam Roben.
-
- WebKit2 bundle page needs to offer generated file hooks
- https://bugs.webkit.org/show_bug.cgi?id=57279
-
- (Land missing part of the original patch after r82289.)
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Added new callbacks.
-
-2011-03-29 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] NRWT should be able to read checksums from png comments
- https://bugs.webkit.org/show_bug.cgi?id=57280
-
- * Scripts/read-checksum-from-png: Added. Utility script to read the checksum
- from a file.
- * Scripts/webkitpy/common/system/filesystem.py: Add open_binary_file_for_reading
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- * Scripts/webkitpy/layout_tests/port/base.py: When loading a checksum,
- if the -checksum.txt file doesn't exist, try looking in the png.
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/read_checksum_from_png.py: Added. Scan the first
- 2k for a png comment with the checksum
- * Scripts/webkitpy/layout_tests/read_checksum_from_png_unittest.py: Added.
-
-2011-03-29 Philippe Normand <pnormand@igalia.com>
-
- Rubber-stamped by Gustavo Noronha Silva.
-
- [GTK] http/tests/uri/username-with-no-hostname.html fails
- https://bugs.webkit.org/show_bug.cgi?id=57325
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback): URI host value check done case-insensitively.
-
-2011-03-29 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] http/tests/uri/username-with-no-hostname.html fails
- https://bugs.webkit.org/show_bug.cgi?id=57325
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback): Check URI before submitting the request
- to WebCore.
-
-2011-03-29 Noel Gordon <noel.gordon@gmail.com>
-
- Reviewed by Ojan Vafai.
-
- [chromium] DRT EventSender: remove identity from dragTargetDragEnter() calls
- https://bugs.webkit.org/show_bug.cgi?id=57303
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::doDragDrop):
- (EventSender::beginDragWithFiles):
-
-2011-03-29 Zoltan Horvath <zoltan@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] Add -print-loaded-urls option to Qt's MiniBrowser and to QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=57314
-
- Provide possibility to print loaded urls to the standard output.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::printURL):
- * MiniBrowser/qt/BrowserWindow.h:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- (LauncherWindow::printURL):
- (LauncherWindow::cloneWindow):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-03-29 Gabor Loki <loki@webkit.org>
-
- Rubber-stamped by Csaba Osztrogonác.
-
- [Qt] Teach build-jsc how to build JavaScriptCore on Qt
- https://bugs.webkit.org/show_bug.cgi?id=56918
-
- * Scripts/build-jsc: Remove duplicated --qt options to avoid passing them to qmake.
-
-2011-03-28 Gabor Loki <loki@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Teach build-jsc how to build JavaScriptCore on Qt
- https://bugs.webkit.org/show_bug.cgi?id=56918
-
- * Scripts/build-jsc:
- * Scripts/webkitdirs.pm:
-
-2011-03-28 Andrew Foster <andrewf@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- webkit-patch should be more intelligent about whether a bug applies to a patch
- Create a new function, parse_bug_id_from_changelog() which determines
- that a bug is related to a patch by parsing the output generated from
- prepare-ChangeLog, rather than arbitrarily matching a URL to a bug in
- the description of a patch.
- https://bugs.webkit.org/show_bug.cgi?id=56989
-
- * Scripts/webkitpy/common/checkout/api.py:
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/net/bugzilla/__init__.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- * Scripts/webkitpy/style/checkers/changelog.py:
- * Scripts/webkitpy/tool/commands/upload.py:
-
-2011-03-28 Maciej Stachowiak <mjs@apple.com>
-
- Revert accidentally commited change.
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
-
-2011-03-28 Tony Chang <tony@chromium.org>
-
- Reviewed by Adam Barth.
-
- [chromium] have DRT write the png checksum into a png comment
- https://bugs.webkit.org/show_bug.cgi?id=57255
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dumpImage):
-
-2011-03-28 Adele Peterson <adele@apple.com>
-
- Removing Qt stub, since it doesn't use the same header as the others.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
-
-2011-03-28 Adele Peterson <adele@apple.com>
-
- Added a few more stubs.
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::hasGrammarMarker):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::hasGrammarMarker):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::hasGrammarMarker):
-
-2011-03-28 Adele Peterson <adele@apple.com>
-
- Build fix.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::hasGrammarMarker):
-
-2011-03-28 Adele Peterson <adele@apple.com>
-
- Reviewed by Eric Seidel.
-
- Testing support for <rdar://problem/9112694> REGRESSION (r79411): "Check grammar with spelling" context menu doesn't check as you type
- https://bugs.webkit.org/show_bug.cgi?id=57173
-
- * DumpRenderTree/LayoutTestController.cpp:
- (hasGrammarMarkerCallback): Added.
- (LayoutTestController::staticFunctions): Added case for hasGrammarMarker.
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/mac/DumpRenderTree.mm: (createWebViewAndOffscreenWindow): Call setGrammarCheckingEnabled.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: (LayoutTestController::hasGrammarMarker): Added. Call new hasGrammarMarker method.
-
-2011-03-28 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Benjamin Poulain.
-
- [Qt] QtWebKit will not compile with QT_ASCII_CAST_WARNINGS enabled
- https://bugs.webkit.org/show_bug.cgi?id=57087
-
- Trivial typo fix after r82082.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
-
-2011-03-28 Alexis Menard <alexis.menard@openbossa.org>
-
- Reviewed by Andreas Kling.
-
- Add myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-28 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKit2 unfortunately uses code from WebKit, so MiniBrowser needs
- to link against WebKit.framework for now.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
-
-2011-03-28 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtWebKit will not compile with QT_ASCII_CAST_WARNINGS enabled
- https://bugs.webkit.org/show_bug.cgi?id=57087
-
- Disable QT_ASCII_CAST_WARNINGS for applications.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/ImageDiff.pro:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-03-28 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtTestBrowser doesn't reset its window title when opening about:blank
- https://bugs.webkit.org/show_bug.cgi?id=57224
-
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
- (MainWindow::onTitleChanged):
- * QtTestBrowser/mainwindow.h:
-
-2011-03-27 Jer Noble <jer.noble@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Full Screen: disable keyboard access by default
- https://bugs.webkit.org/show_bug.cgi?id=56684
-
- Accept the withKeyboard parameter to supportsFullScreenForElement.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:supportsFullScreenForElement:withKeyboard:]):
-
-2011-03-27 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by David Levin.
-
- check-webkit-style should check ChangeLog for a valid bug number
- https://bugs.webkit.org/show_bug.cgi?id=57184
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/checkers/changelog.py: Added.
- * Scripts/webkitpy/style/checkers/changelog_unittest.py: Added.
-
-2011-03-27 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] QtWebKit will not compile with QT_ASCII_CAST_WARNINGS enabled
- https://bugs.webkit.org/show_bug.cgi?id=57087
-
- Use explicit conversion for string to avoid depending on the default codec
- installed by the user code.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
-
-2011-03-26 Maciej Stachowiak <mjs@apple.com>
-
- Revert inadvertantly committed changes.
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-03-26 Andreas Kling <kling@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Show page icons (favicons) in QtTestBrowser location bar.
- https://bugs.webkit.org/show_bug.cgi?id=57162
-
- * QtTestBrowser/QtTestBrowser.qrc:
- * QtTestBrowser/favicon.png: Added.
- * QtTestBrowser/locationedit.cpp:
- (defaultPageIcon):
- (LocationEdit::LocationEdit):
- (LocationEdit::setPageIcon):
- (LocationEdit::resizeEvent):
- (LocationEdit::updateInternalGeometry):
- * QtTestBrowser/locationedit.h:
- * QtTestBrowser/mainwindow.cpp:
- (MainWindow::buildUI):
- (MainWindow::onIconChanged):
- (MainWindow::onLoadStarted):
- * QtTestBrowser/mainwindow.h:
-
-2011-03-23 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Force DumpRenderTree to use 96 DPI
- https://bugs.webkit.org/show_bug.cgi?id=56866
-
- Make sure that GTK+ is set to use 96 DPI when running tests. This ensures
- broader compatibility with WebKit2 and makes setting font sizes more straightforward.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings): Set the screen resolution and GTK+ xft property to 96 DPI.
- (resetDefaultsToConsistentValues):Remove the call which repeatedly set the GDK screen resolution.
- (setDefaultsToConsistentStateValuesForTesting): Update the font sizes to reflect the new DPI.
-
-2011-03-25 Andy Estes <aestes@apple.com>
-
- Reviewed by Adele Peterson.
-
- REGRESSION (r70748): latest nightly builds kills AC_QuickTime.js
- https://bugs.webkit.org/show_bug.cgi?id=49016
-
- TestNetscapePlugIn needs to register support for an image MIME type so
- we can test that the embed tag prefers plug-ins to render image MIME
- types.
-
- * DumpRenderTree/TestNetscapePlugIn/mac/Info.plist: Register image/png.
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_GetMIMEDescription): Ditto.
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc: Ditto.
-
-2011-03-25 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Sam Weinig.
-
- WebKit2: Need to be able to set and get the Cookie Storage Policy.
- https://bugs.webkit.org/show_bug.cgi?id=50780
-
- Add a test for getting and setting the HTTP Cookie Accept Policy in WebKit2.
-
- The test is named "CookieManager" so that we can eventually exercise more of the
- CookieManager functionality in the test.
-
- * TestWebKitAPI/Tests/WebKit2/CookieManager.cpp: Added.
- (TestWebKitAPI::didGetTestHTTPCookieAcceptPolicy):
- Assert that the policy returned is equal to the policy set in
- didGetUserHTTPCookieAcceptPolicy, and then restore the user's policy.
- (TestWebKitAPI::didGetUserHTTPCookieAcceptPolicy):
- Set the policy to something different than the user's policy and get the policy again.
- (TestWebKitAPI::didFinishLoadForFrame):
- Get the user's policy so that it can be restored at the end of the test.
- (TestWebKitAPI::TEST):
- Load about:blank so that the Web Process gets instatiated (needed to get the
- CookieManager).
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Add CookieManager.cpp.
-
-2011-03-24 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Fix the build so that gcc-4.1 and up can be used to build on SnowLeopard.
-
- * wx/build/settings.py:
-
-2011-03-24 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Adam Roben.
-
- Implement layoutTestController.setAutoFilled in DRT on Windows
- https://bugs.webkit.org/show_bug.cgi?id=56828
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAutofilled): Implemented.
-
-2011-03-24 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- Correct vsprops file for Debug variant of the CFLite build.
- Disable a CFNETWORK-specific test when building for CFLite.
-
- * TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-03-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- fix regressions introduced in 81908 - there were a couple of
- code paths that only fired under python 2.5 that I missed.
-
- Also change a couple of 'python' references to sys.executable
- in order to handle runing test-webkitpy with a binary other than
- something called 'python'.
-
- https://bugs.webkit.org/show_bug.cgi?id=57063
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/test/cat.py:
- * Scripts/webkitpy/test/echo.py:
-
-2011-03-24 Brent Fulgham <bfulgham@webkit.org>
-
- Unreviewed build correction.
-
- Add a stub implementation of the TestInvocation dumping logic.
- Update project files to reflect new file.
-
- * WebKitTestRunner/cairo: Added.
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp: Added.
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2011-03-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- new-run-webkit-tests: clean up worker model defaults. This
- changes the default behavior to 'threads' instead of
- 'old-threads', and clarifies that chromium-win-* and
- chromium-mac-leopard are exceptions.
-
- https://bugs.webkit.org/show_bug.cgi?id=56971
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-23 Leandro Gracia Gil <leandrogracia@chromium.org>
-
- Reviewed by Darin Adler.
-
- Media Stream API: fix the order of the options in build-webkit.
- https://bugs.webkit.org/show_bug.cgi?id=56949
-
- Fix the order of the options in build-webkit.
-
- * Scripts/build-webkit:
-
-2011-03-23 Adam Klein <adamk@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Add an option to new-run-webkit-httpd to allow overriding the location of LayoutTests directory
- https://bugs.webkit.org/show_bug.cgi?id=56884
-
- This option will be utilized by Chromium's ui_tests to allow
- referencing js-test-resources from a layout test over HTTP.
-
- * Scripts/new-run-webkit-httpd:
- Added --layout_tests_dir option.
- * Scripts/webkitpy/layout_tests/port/http_server.py:
- Plumbed through as layout_tests_dir param.
-
-2011-03-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: run tests in ascending alphabetical order per
- dir. This is a second attempt at the fix; the first attempt, in
- r81597, broke the behavior on the old-inline and old-threads
- worker models.
-
- https://bugs.webkit.org/show_bug.cgi?id=56760
-
- * Scripts/webkitpy/layout_tests/layout_package/dump_render_tree_thread.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-23 Mario Sanchez Prada <msanchez@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] GTK's DRT to ouput detail's string for the 'property-change' signal
- https://bugs.webkit.org/show_bug.cgi?id=56953
-
- Print the string for the detail of 'property-change' signal.
-
- * DumpRenderTree/gtk/AccessibilityCallbacks.cpp:
- (axObjectEventListener): Print the detail string.
-
-2011-03-23 Yury Semikhatsky <yurys@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- [V8] Web Inspector: compile DebuggerScript.js into DebuggerScriptSource.h
- https://bugs.webkit.org/show_bug.cgi?id=56843
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
-
-2011-03-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Teach update-webkit about gyp
- https://bugs.webkit.org/show_bug.cgi?id=56881
-
- This makes it possible for someone who builds from Xcode
- to just run update-webkit --gyp and have the project files
- generated after update automatically.
-
- I also added a stand-alone "generate-project-files" script
- wrapping Source/gyp/configure. This makes running gyp simpler
- since most people will not have gyp or Source/gyp in their path.
-
- * Scripts/build-webkit:
- * Scripts/generate-project-files: Added.
- * Scripts/update-webkit:
-
-2011-03-22 Anton D'Auria <adauria@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- Add +[WebApplicationCache getOriginsWithCache]
- https://bugs.webkit.org/show_bug.cgi?id=56722
-
- * DumpRenderTree/LayoutTestController.cpp:
- (originsWithApplicationCacheCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp: Added stub.
- (LayoutTestController::originsWithApplicationCache):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Added stub.
- (LayoutTestController::originsWithApplicationCache):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Pass array of origin's database identifiers.
- (originsArrayToJS): Helper function for converting array of WebSecurityOrigins to a JS array of origin identifiers.
- (LayoutTestController::originsWithApplicationCache):
- (LayoutTestController::originsWithLocalStorage):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Added stub.
- (LayoutTestController::originsWithApplicationCache):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Added stub.
- (LayoutTestController::originsWithApplicationCache):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: Added stub.
- (LayoutTestController::originsWithApplicationCache):
-
-2011-03-22 Eric Seidel <eric@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add support to build-webkit for building with gyp-generated project files
- https://bugs.webkit.org/show_bug.cgi?id=56877
-
- build-webkit is a cesspool. This change just hacks in --gyp support for Mac.
- Eventually we'll want to support gyp-generated projects in a more general manner.
-
- * Scripts/build-webkit:
-
-2011-03-22 David Kilzer <ddkilzer@apple.com>
-
- <http://webkit.org/b/56781> Add --dsym switch to enable dsym generation when building with Xcode
-
- Reviewed by Joseph Pecoraro.
-
- * Scripts/build-webkit: Updated usage statement to include
- --dsym.
- * Scripts/webkitdirs.pm: Added $generateDsym variable.
- (generateDsym): Added. Call determineGenerateDsym() and
- return $generateDsym.
- (determineGenerateDsym): Added. Parse @ARGV for --dsym and set
- $generateDsym.
- (argumentsForXcode): Added. Returns additional arguments for
- xcodebuild based on command-line switches.
- (XcodeOptions): Updated to include argumentsForXcode() in the
- array returned.
-
-2011-03-22 Adam Roben <aroben@apple.com>
-
- Make Leopard Debug bots and Windows XP Debug (Tests) core builders
-
- These bots are consistently green again.
-
- Fixes <http://webkit.org/b/56830> Leopard Debug bots and Windows XP Debug (Tests) should be
- core builders
-
- Rubber-stamped by Antti Koivisto.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot.__init__): Loosened the regexps for Leopard and Windows.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuildBotTest.test_builder_name_regexps): Updated expectations.
-
-2011-03-21 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r81597.
- http://trac.webkit.org/changeset/81597
- https://bugs.webkit.org/show_bug.cgi?id=56801
-
- Change results in lots of unexpected flaky on the dashboard.
- (Requested by pfeldman on #webkit).
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-21 Sam Weinig <sam@webkit.org>
-
- Fix failing tests on the WebKit2 bots.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2011-03-21 Daniel Sievers <sievers@google.com>
-
- Reviewed by Simon Fraser.
-
- [Chromium] Make RenderAsTextBehavior and LayerTreeAsTextBehavior tweakable from the DumpRenderTree commandline
- https://bugs.webkit.org/show_bug.cgi?id=56139
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setShowDebugLayerTree):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
-
-2011-03-21 Adam Roben <aroben@apple.com>
-
- Try again to get buildbot to show run-javascriptcore-tests's actual.html as an HTML file
-
- Fixes <http://webkit.org/b/56746> build.webkit.org shows run-javascriptcore-tests's HTML
- output as plain text
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunJavaScriptCoreTests): List actual.html as one of our log files so it will get uploaded
- to the master.
- (RunJavaScriptCoreTests.commandComplete): Reading the actual.html file here won't work,
- since we're running on the build master, not the slave. Instead, turn the raw source of
- actual.html which the build slave uploaded into an HTML log.
-
-2011-03-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- new-run-webkit-tests: run tests in ascending alphabetical order per dir
- https://bugs.webkit.org/show_bug.cgi?id=56760
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2011-03-21 Leandro Gracia Gil <leandrogracia@chromium.org>
-
- Reviewed by Steve Block.
-
- Media Stream API patch 0: adding compilation guards.
- https://bugs.webkit.org/show_bug.cgi?id=56458
-
- Adding options to enable the media stream API feature in Chromium.
-
- * Scripts/build-webkit:
-
-2011-03-21 Qi Zhang <qi.2.zhang@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Add a command line option to capture stdout and stderr for DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=56323
-
- Using freopen to redirect STDOUT and STDERR when DumpRenderTree command line provide
- "--stdout" or "--stderr" option.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::~DumpRenderTree):
- (WebCore::DumpRenderTree::processArgsLine):
- (WebCore::DumpRenderTree::loadNextTestInStandAloneMode):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::setRedirectOutputFileName):
- (WebCore::DumpRenderTree::setRedirectErrorFileName):
- * DumpRenderTree/qt/main.cpp:
- (isOption):
- (takeOptionValue):
- (printUsage):
- (main):
-
-2011-03-21 Adam Roben <aroben@apple.com>
-
- Fix exceptions on the buildbot due to my last change
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunJavaScriptCoreTests.commandComplete): Catch exceptions due to actual.html not existing.
-
-2011-03-21 Adam Roben <aroben@apple.com>
-
- Teach buildbot to treat run-javascriptcore-tests's actual.html as an HTML file
-
- Fixes <http://webkit.org/b/56746> build.webkit.org shows run-javascriptcore-tests's HTML
- output as plain text
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunJavaScriptCoreTests): Removed the logfiles variable, which can only handle plaintext
- logs.
- (RunJavaScriptCoreTests.commandComplete): Use the addHTMLLog method to upload actual.html to
- the build master. This will correctly treat it as HTML.
-
-2011-03-20 Bill Budge <bbudge@chromium.org>
-
- Reviewed by Adam Barth.
-
- Rename ThreadSafeShared to ThreadSafeRefCounted
- https://bugs.webkit.org/show_bug.cgi?id=56714
-
- No new tests. Exposes no new functionality.
-
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeRefCounted.h: Copied from DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeShared.h.
- * DumpRenderTree/ForwardingHeaders/wtf/ThreadSafeShared.h: Removed.
- * Scripts/do-webcore-rename:
-
-2011-03-19 Anton D'Auria <adauria@apple.com>
-
- Reviewed by Dan Bernstein.
-
- Add stub to LayoutTestControllerGtk.cpp to fix GTK build
- https://bugs.webkit.org/show_bug.cgi?id=56719
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Adding stub.
- (LayoutTestController::clearApplicationCacheForOrigin):
-
-2011-03-19 Anton D'Auria <adauria@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- ApplicationCacheGroup is not obsolete after being deleted via ApplicationCacheStorage::deleteEntriesForOrigin
- https://bugs.webkit.org/show_bug.cgi?id=56415
-
- * DumpRenderTree/LayoutTestController.cpp:
- (clearApplicationCacheForOriginCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp: Adding stubs.
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::clearApplicationCacheForOrigin):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Adding stub.
- (LayoutTestController::clearApplicationCacheForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Adding stub.
- (LayoutTestController::clearApplicationCacheForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Adding stub.
- (LayoutTestController::clearApplicationCacheForOrigin):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: Adding stub.
- (LayoutTestController::clearApplicationCacheForOrigin):
-
-2011-03-18 Dan Bernstein <mitz@apple.com>
-
- Revised build fix for r81135.
-
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Windows build fix
-
- * WebKitTestRunner/config.h: Add a missing #endif.
-
-2011-03-18 Andreas Kling <kling@webkit.org>
-
- Unbreak Qt build after r81494.
-
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2011-03-18 Sam Weinig <sam@webkit.org>
-
- Fix windows build. This was really Adam Roben's fault. I swear!
-
- * WebKitTestRunner/config.h:
-
-2011-03-18 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Pixel tests don't work in WebKitTestRunner on Windows
- https://bugs.webkit.org/show_bug.cgi?id=56630
-
- Cross-platformize (Mac and Windows CG) the pixel dumping code in WebKitTestRunner to use WebKit2
- built-in snapshotting instead of using the window server on the Mac.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::beginTesting):
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::setPixelResult):
- (WTR::InjectedBundle::shouldDumpPixels):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
- Take the snapshot in the bundle and send it to the UIProcess for dumping.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- * WebKitTestRunner/cg: Added.
- * WebKitTestRunner/cg/TestInvocationCG.cpp: Copied from WebKitTestRunner/mac/TestInvocationMac.mm.
- (WTR::createCGContextFromImage):
- (WTR::computeMD5HashStringForContext):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/mac/TestInvocationMac.mm: Removed.
- Making pixel dumping code shared for CG ports. Also use the WTF/MD5 instead of platform specific code.
-
- * WebKitTestRunner/win/TestInvocationWin.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- Keep stub for Cairo build.
-
- * WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops: Added.
- Add CG configuration.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- Add new files.
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Don't allow Leaks Viewer's vertical scrollbar to cover up long function names
-
- Rubber-stamped by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css:
- (.data-grid .data-container): Use overflow-y:auto instead of the Inspector's default
- overflow-y:overlay so that the scrollbar doesn't overlay the content.
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Don't ellipsize long or indented function names in Leaks Viewer
-
- Fixes <http://webkit.org/b/56037> Leaks viewer needs horizontal
- scrollbar
-
- Reviewed by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css:
- (.data-grid .data-container):
- (.data-grid td > div, .data-grid th > div):
- Allow the contents to extend to the right.
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Fix some leaks in DRT seen on the leaks bot
-
- Fixes <http://webkit.org/b/56638> addURLToRedirectCallback and
- setWillSendRequestClearHeaderCallback in DRT are leaky
-
- Reviewed by Alexey Proskuryakov.
-
- * DumpRenderTree/ForwardingHeaders/wtf/OwnArrayPtr.h: Added.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (addURLToRedirectCallback):
- (setWillSendRequestClearHeaderCallback):
- Use OwnArrayPtr to cause the strings to be deleted.
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Fix a NSURLCredential leak seen on the leaks bot
-
- Fixes <http://webkit.org/b/56637> -[SynchronousLoader
- connection:didReceiveAuthenticationChallenge:] is leaky
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (-[SynchronousLoader connection:didReceiveAuthenticationChallenge:]): Use a RetainPtr to
- cause the NSURLCredential to be released.
-
-2011-03-18 John Knottenbelt <jknotten@chromium.org>
-
- Unreviewed.
-
- Remove unnecessary brackets around my email address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Remove some files I accidentally added in r81454
-
- * WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops: Removed.
- * WebKitTestRunner/cg/TestInvocationCG.cpp: Removed.
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Ignore an NSNumberFormatter leak on SnowLeopard
-
- * Scripts/old-run-webkit-tests:
- (countAndPrintLeaks): Ignore leaks in -[NSNumberFormatter
- getObjectValue:forString:errorDescription:].
-
-2011-03-18 Adam Roben <aroben@apple.com>
-
- Fix a leak beneath LayoutTestController::authenticateSession seen on the bots
-
- Rubber-stamped by Mark Rowe.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::authenticateSession): Use a RetainPtr to cause the NSURLRequest to be
- released.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Address a review comment I missed in r81445
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js:
- (LeaksParserWorker.prototype._parseLeaks): Anchor the RegExp used to find the number of
- leaked bytes to speed up searching on long lines.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Mark leaky builds orange, even if all regression tests passed
-
- Fixes <http://webkit.org/b/56609> SnowLeopard Intel Leaks bot appears green on
- build.webkit.org when all tests pass even though there are still leaks
-
- Reviewed by Dan Bernstein.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitLeakTests): Set the warnOnWarnings property to True so that the entire build will
- be marked orange if this build step generates warnings.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Allow values in Leaks Viewer to be shown as percentages
-
- Double-clicking on a column will toggle between showing percentages and showing real values.
-
- Fixes <http://webkit.org/b/56628> Would like to view values as percentages of the total
- number of leaked bytes in Leaks Viewer
-
- Reviewed by Joe Pecoraro.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js:
- (LeaksParserWorker.prototype._incorporateLeaks): Calculate the (never-shown) top-level
- node's totalTime, which is used in calculating percentages.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (monkeyPatchInspectorObjects): Only format values as bytes if we aren't supposed to be
- showing them as percentages.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Show the number of leaked bytes, not just leaked allocations, in Leaks Viewer
-
- The Self and Total columns now report the number of leaked bytes. The new Calls column shows
- the number of leaked allocations. And the new Average column shows the average number of
- leaked bytes per call.
-
- Fixes <http://webkit.org/b/56344> Leaks Viewer should show how many bytes were leaked, not
- just how many allocations
-
- Reviewed by Joe Pecoraro.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js:
- (LeaksParserWorker.prototype._parseLeaks): Parse the number of leaked bytes from the "Leak:"
- line and store it with the leak stack.
- (LeaksParserWorker.prototype._createNode): Initialize the averageTime and numberOfCalls
- properties.
- (LeaksParserWorker.prototype._incorporateLeaks): Updated to get the stack from the .stack
- property, and changed to store the number of leaked bytes in .selfTime/.totalTime.
- .numberOfCalls now holds the number of leaked allocations.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (Preferences): Set samplingCPUProfiler to false so that the Average and Calls columns will
- appear.
- (monkeyPatchInspectorObjects): Format the values as bytes.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Make Leaks Viewer able to count leaks in builds that didn't fail any regression tests
-
- Fixes <http://webkit.org/b/56626> Leaks Viewer omits recent builds which didn't fail any
- regression tests
-
- Reviewed by James Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js:
- (RecentBuildsLoader.prototype.start): Get the number of leaks out of the "text" array, which
- is always populated, even when all regression tests pass.
-
-2011-03-10 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Tony Chang.
-
- Add a check logic for reftests in case that a reftest is marked AS REBASELINE.
-
- https://bugs.webkit.org/show_bug.cgi?id=56076
-
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Skip a compositing-sensitive test when accelerated compositing is disabled
-
- Reviewed by Sam Weinig.
-
- * Scripts/old-run-webkit-tests: Skip media/media-document-audio-repaint.html when
- accelerated compositing is disabled.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Start using PlatformSpecificScheduler for the Mac builders
-
- The current set of file/directory patterns should work for Mac builders. We may discover
- that there are more files and directories we can exclude from the Mac builds, but they can
- be added later.
-
- Fixes <http://webkit.org/b/56593> Mac builders do lots of unnecessary builds
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Moved the Mac builders into two
- PlatformSpecificSchedulers: one for Leopard, and one for SnowLeopard.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Allow "mac-leopard" and "mac-snowleopard" platforms, and
- cleaned up patterns a little bit.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): Fixed some expected results.
- (ShouldBuildTest.test_should_build): Start testing "mac-leopard" and "mac-snowleopard"
- platforms.
-
-2011-03-17 Jeff Miller <jeffm@apple.com>
-
- Use a consistent set of file patterns in the svn:ignore property for all .xcodeproj directories, specifically:
-
- *.mode*
- *.pbxuser
- *.perspective*
- project.xcworkspace
- xcuserdata
-
- * DumpRenderTree/DumpRenderTree.xcodeproj: Modified property svn:ignore.
- * MiniBrowser/MiniBrowser.xcodeproj: Modified property svn:ignore.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj: Modified property svn:ignore.
- * WebKitLauncher/WebKitLauncher.xcodeproj: Modified property svn:ignore.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj: Modified property svn:ignore.
-
-2011-03-17 Adam Roben <aroben@apple.com>
-
- Make old-run-webkit-tests pick up mac-wk2 results when running in WebKit2 mode on Windows
-
- Fixes <http://webkit.org/b/56563> Running WebKit2 tests on Windows should use results from
- mac-wk2
-
- Reviewed by Anders Carlsson.
-
- * Scripts/old-run-webkit-tests:
- (expectedDirectoryForTest): Clean up the code to search in extra Mac platform result
- directories on Windows. Add mac-wk2 to the set of extra platforms we look in on Windows when
- we're running in WebKit2 mode.
-
-2011-03-17 Mikhail Naganov <mnaganov@chromium.org>
-
- Reviewed by Yury Semikhatsky.
-
- Web Inspector: Clean up Inspector strings.
- https://bugs.webkit.org/show_bug.cgi?id=56557
-
- Modify the script to deal correctly with "\xNN" escapes, and to
- check strings in Chromium's DevTools.js.
-
- * Scripts/check-inspector-strings:
-
-2011-03-17 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Benjamin Poulain.
-
- Update autoinstall to install mechanize 0.2.4
- https://bugs.webkit.org/show_bug.cgi?id=56499
-
- Newer versions of mechanize support HTTPS proxies, which is necessary
- for people using webkit-patch behind firewalls.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- * Scripts/webkitpy/thirdparty/__init__.py:
-
-2011-03-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- REGRESSION (r81084): media/invalid-media-url-crash.html and editing/execCommand/indent-paragraphs.html failing on WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=56541
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- Check for an empty host in addition to a null host. This bug was introduced
- when porting off of the KURL code and onto the WKURLRef version.
-
-2011-03-16 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- Add Lucas Forschler to the list of WebKit committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-16 Sam Weinig <sam@webkit.org>
-
- Reviewed upon and dictated through Adam Roben.
-
- Escape crashing function names in results.html. This fixes an issue
- when a crash involves a type with templates.
-
- * Scripts/old-run-webkit-tests:
-
-2011-03-16 Daniel Sievers <sievers@google.com>
-
- Reviewed by James Robinson.
-
- Add setting to always force compositing mode
- https://bugs.webkit.org/show_bug.cgi?id=56156
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setForceCompositingMode):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
-
-2011-03-15 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Ignore files that will be used by reftests in old-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=55936
-
- * Scripts/old-run-webkit-tests:
-
-2011-03-15 Felipe Oliveira da Silva Netto <f.dachshund@gmail.com>
-
- Reviewed by Adam Roben.
-
- Function relativeScriptsDir doesn't return the correct relative
- Scripts directory.
-
- * Scripts/webkitdirs.pm:
- (relativeScriptsDir): Ensure we use the directory that contains
- webkitdirs.pm, not the one that contains the original script that
- was invoked.
-
-2011-03-15 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fixes for long linker commands on Win and method return error, plus a Mac
- fix to link against the Security framework after recent WebKitSystemInterface changes.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::originsWithLocalStorage):
- * wx/build/settings.py:
- * wx/build/waf_extensions.py:
-
-2011-03-15 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add script to convert a patch to a prettypatch and show in the default browser
- https://bugs.webkit.org/show_bug.cgi?id=56416
-
- This can be used either like
- $ svn-create-patch | show-pretty-diff
- or
- $ show-pretty-diff patch.diff
-
- * Scripts/show-pretty-diff: Added.
-
-2011-03-15 Brian Weinstein <bweinstein@apple.com>
-
- Rubber-stamped by Adam Roben.
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-15 Anders Carlsson <andersca@apple.com>
-
- Try to fix the Windows build.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp:
- (NPDeallocateCalledBeforeNPShutdown::TestObject::~TestObject):
-
-2011-03-15 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Make sure that NP_Shutdown is always the last NPP function called
- https://bugs.webkit.org/show_bug.cgi?id=56391
-
- Add a test that times out if an NP_Deallocate object is called after NP_Shutdown.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::PluginTest):
- (PluginTest::NP_Shutdown):
- (PluginTest::registerNPShutdownFunction):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp: Added.
- (NPDeallocateCalledBeforeNPShutdown::NPDeallocateCalledBeforeNPShutdown):
- (NPDeallocateCalledBeforeNPShutdown::TestObject::~TestObject):
- (NPDeallocateCalledBeforeNPShutdown::ScriptableObject::hasProperty):
- (NPDeallocateCalledBeforeNPShutdown::ScriptableObject::getProperty):
- (NPDeallocateCalledBeforeNPShutdown::NPP_New):
- (NPDeallocateCalledBeforeNPShutdown::NPP_GetValue):
- (NPDeallocateCalledBeforeNPShutdown::shutdown):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NP_Shutdown):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2011-03-15 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Tony Chang.
-
- Autofilled form elements are assigned fixed background color but not text color
- https://bugs.webkit.org/show_bug.cgi?id=48382
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setAutofilledCallback): Added.
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setAutofilled): Added.
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setAutofilled): Added.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setAutofilled): Added.
- (LayoutTestController::setValueForUser): Style tweak.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setAutofilled): Added (stub).
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setAutofilled): Added (stub).
-
-2011-03-15 Dan Bernstein <mitz@apple.com>
-
- Build fix after r81135.
-
- * TestWebKitAPI/Configurations/InjectedBundle.xcconfig:
-
-2011-03-15 Dan Bernstein <mitz@apple.com>
-
- Build fix after r81135.
-
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig:
- * WebKitTestRunner/mac/TestControllerMac.mm:
- * WebKitTestRunner/mac/TestInvocationMac.mm:
- * WebKitTestRunner/mac/main.mm:
-
-2011-03-15 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Adam Barth.
-
- REGRESSION(80977): breaks Qt ARMv7 Linux Release bot
- https://bugs.webkit.org/show_bug.cgi?id=56349
-
- * QtTestBrowser/QtTestBrowser.pro: Link against fontconfig
- on platforms where we use it. Copied from DumpRenderTree.pro.
-
-2011-03-15 Dan Bernstein <mitz@apple.com>
-
- Build fix after r81135.
-
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp:
- * DumpRenderTree/mac/WebArchiveDumpSupportMac.mm:
-
-2011-03-15 Kevin Ollivier <kevino@theolliviers.com>
-
- Reviewed by Darin Adler.
-
- Introduce WTF_USE_EXPORT_MACROS, which will allow us to put shared library import/export
- info into the headers rather than in export symbol definition files, but disable it on
- all platforms initially so we can deal with port build issues one port at a time.
-
- https://bugs.webkit.org/show_bug.cgi?id=27551
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
- * DumpRenderTree/chromium/config.h:
- * DumpRenderTree/config.h:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * TestWebKitAPI/TestWebKitAPIPrefix.h:
- * WebKitAPITest/HostWindow.cpp:
- * WebKitAPITest/TestsController.cpp:
- * WebKitAPITest/config.h: Added.
- * WebKitAPITest/main.cpp:
- * WebKitAPITest/tests/WebViewDestruction.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.cpp:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- * WebKitTestRunner/InjectedBundle/GCController.cpp:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- * WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp:
- * WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp:
- * WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp:
- * WebKitTestRunner/TestController.cpp:
- * WebKitTestRunner/TestInvocation.cpp:
- * WebKitTestRunner/config.h: Added.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- * WebKitTestRunner/qt/main.cpp:
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- * WebKitTestRunner/win/TestControllerWin.cpp:
- * WebKitTestRunner/win/TestInvocationWin.cpp:
- * WebKitTestRunner/win/main.cpp:
- * wx/build/settings.py:
-
-2011-03-15 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Shinichiro Hamaji.
-
- [NRWT] Add support for reftests to new-run-webkit-tests.
-
- https://bugs.webkit.org/show_bug.cgi?id=55457
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/dryrun.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/test_files.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-15 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Fix compilation warning after r80892
- https://bugs.webkit.org/show_bug.cgi?id=56302
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::originsWithLocalStorage):
-
-2011-03-15 Robert Hogan <robert@webkit.org>
-
- Reviewed by Adam Barth.
-
- Document the qmakearg argument, and hint how to build webkit2 on Qt
- https://bugs.webkit.org/show_bug.cgi?id=56326
-
- * Scripts/build-webkit: add --qmakearg to build-webkit --help
-
-2011-03-15 Adam Roben <aroben@apple.com>
-
- Make Windows 7 Release (Tests) a core builder
-
- We can probably make Windows XP Debug (Tests) a core builder, too, but we should probably
- give it a few more days of greenness first.
-
- Fixes <http://webkit.org/b/55665> Windows 7 Release (Tests) should be a core builder
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot): Added a regexp to match Windows 7 Release (Tests).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuildBotTest): Updated the list of builders to match the current list on build.webkit.org.
- Updated the core regexps to match the buildbot module. Updated the expected results to match
- the current set of core builders.
-
-2011-03-14 Adam Roben <aroben@apple.com>
-
- Add forgotten file from r81116
-
- * TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops: Added.
-
-2011-03-14 Sam Weinig <sam@webkit.org>
-
- Reviewed by Adam Roben.
-
- about:blank fake responses don't get serialized when sent the UIProcess
- <rdar://problem/9108119>
- https://bugs.webkit.org/show_bug.cgi?id=56357
-
- * TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp: Added.
- (TestWebKitAPI::decidePolicyForResponse):
- (TestWebKitAPI::TEST):
- Add test that loads of about:blank have a response with a MIMEType of text/html.
-
- * TestWebKitAPI/PlatformUtilities.h:
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::MIMETypeForWKURLResponse):
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- (TestWebKitAPI::Util::MIMETypeForWKURLResponse):
- Add helper to get the MIMEType from a WKURLResponse.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Add new files.
-
-2011-03-14 Jarkko Sakkinen <jarkko.j.sakkinen@gmail.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Command-line options for QGLWidget and WebGL to QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=56006
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::initializeView):
- * QtTestBrowser/main.cpp:
- (LauncherApplication::handleUserOptions):
-
-2011-03-14 James Kozianski <koz@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Add method to make BuildBot return test outputs
- https://bugs.webkit.org/show_bug.cgi?id=54374
-
- The Builder.latest_cached_build will be used by the new rebaseline
- script to determine the build to use baselines from.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-03-14 Adam Roben <aroben@apple.com>
-
- Test that WKBundlePageCanHandleRequest returns true for empty document URLs
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Store the result of the test.
- (TestWebKitAPI::setInjectedBundleClient): Hook up our callback.
- (TestWebKitAPI::TEST): Register "emptyscheme" as an empty document scheme, load a page to
- ensure the web process is initialized, then ask the bundle to run the test and assert that
- it succeeded.
-
- * TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp: Added.
- (TestWebKitAPI::CanHandleRequestTest::CanHandleRequestTest): Just call up to the base class.
- (TestWebKitAPI::canHandleURL): Helper function to test whether WebKit2 claims to be able to
- handle a given URL.
- (TestWebKitAPI::runTest): Check that empty document URLs can be handled (and that an unknown
- URL type cannot be handled).
- (TestWebKitAPI::CanHandleRequestTest::didReceiveMessage): Run the test and return the
- result.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
- Added new files to the project.
-
-2011-03-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r81094.
- http://trac.webkit.org/changeset/81094
- https://bugs.webkit.org/show_bug.cgi?id=56355
-
- Broke the chromium DRT related build. (Requested by dave_levin
- on #webkit).
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
-
-2011-03-14 Daniel Sievers <sievers@google.com>
-
- Reviewed by Simon Fraser.
-
- [Chromium] Make RenderAsTextBehavior and LayerTreeAsTextBehavior tweakable from the DumpRenderTree commandline
- https://bugs.webkit.org/show_bug.cgi?id=56139
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::layerTreeAsText):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setShowDebugLayerTree):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
-
-2011-03-14 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Adam Roben.
-
- [Qt][WK2]Unbreak InjectedBundle on Qt
- https://bugs.webkit.org/show_bug.cgi?id=54109
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame): Use new WebKit2
- API's instead of KURL to analyze the URL.
- * WebKitTestRunner/StringFunctions.h:
- (WTR::adoptWK): Moved from InjectedBundlePage.cpp to make it available globally
- in the WebKitTestRunner project.
- (WTR::toWK): Use adoptWK.
- (WTR::operator<<): Added helper for printing a WKURL.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Do not link
- against WebCore.
-
-2011-03-14 Balazs Kelemen <kbalazs@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- check-webkit-style falsely should not complain about WebKit2 API headers in the Shared directory
- https://bugs.webkit.org/show_bug.cgi?id=56321
-
- * Scripts/webkitpy/style/checker.py: Add the patch "Source/WebKit2/Shared/API/c"
- to the list of exceptions for WebKit2 C API headers.
-
-2011-03-14 Adam Roben <aroben@apple.com>
-
- Show the list of recent leaky builds in reverse chronological order
-
- Previously they were being shown in a deterministic but surprising order based on
- lexicographically sorting the build offsets (-1, -10, -2, -3...).
-
- Fixes <http://webkit.org/b/56342> Leaks Viewer shows recent builds in a strange order
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js:
- (RecentBuildsLoader.prototype.start): Sort the builds by revision before passing them to our
- callback.
-
-2011-03-14 Adam Roben <aroben@apple.com>
-
- Show a list of up to 10 recent leaky builds when Leaks Viewer loads
-
- Fixes <http://webkit.org/b/56043> Leaks Viewer should present a list of recent builds to
- analyze
-
- Reviewed by David Kilzer and Joe Pecoraro.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css:
- (#url-prompt): Made this a bit taller to make room for the list of builds.
-
- (#recent-builds-loading-indicator):
- (#recent-builds-list):
- Added styles for the build list and loading indicator.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer.loaded): Pass the URL from the query through decodeURIComponent before loading
- it. This will unescape it.
- (LeaksViewer.urlPromptButtonClicked): Moved code from here to _urlChosenFromPrompt.
- (LeaksViewer._didLoadRecentBuilds): Added. Stores the builds and updates the prompt.
- (LeaksViewer._displayURLPrompt): Start loading the recent leaky builds.
- (LeaksViewer._updateURLPrompt): Create a list of the recent leaky builds and add them to the
- prompt UI.
- (LeaksViewer._urlChosenFromPrompt): Added. Code came from urlPromptButtonClicked. This is
- now also used when a recent build is clicked.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/RecentBuildsLoader.js: Added.
- (RecentBuildsLoader): Store the callback.
- (RecentBuildsLoader.prototype.start): Load the N most recent builds from the specified
- builder. Find the revision number, leak count, and results URL for each one. Pass the
- resulting info to our callback.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js:
- (range): Added this helper function to return an array containing the integers [0, n).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html: Added
- RecentBuildsLoader.js and added text to the prompt UI to show the recent builds.
-
-2011-03-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Adam Roben.
-
- Fix two memory leaks within LayoutTestController's storage support.
-
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::originsWithLocalStorage): Don't leak the JSStringRef that is returned
- by JSStringCreateWithCFString.
- (LayoutTestController::deleteLocalStorageForOrigin): Don't leak the WebSecurityOrigin that we
- allocate.
-
-2011-03-14 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Oliver Hunt.
-
- <http://webkit.org/b/56304> REGRESSION(r80892): 100,000+ leaks seen on the build bot
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions): Remove duplicate entries.
-
-2011-03-14 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Dan Bernstein.
-
- DumpRenderTree Perl Support fails to build with ARCHS="i386 x86_64"
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
- Add whitespace when joining "-arch" with the architectures passed in as arguments.
-
-2011-03-14 Daniel Bates <dbates@rim.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=55438
- Add double quotes around value of -DCMAKE_WINCE_SDK that I inadvertently did not add
- when landing changeset 81041 <http://trac.webkit.org/changeset/81041>.
-
- * Scripts/build-webkit:
-
-2011-03-14 Daniel Bates <dbates@rim.com>
-
- Reviewed by David Kilzer.
-
- Cleanup: Separate port-specific implementation details from webkitdirs::buildCMakeProject()
- https://bugs.webkit.org/show_bug.cgi?id=55438
-
- Separate out the EFL- and WinCE-specific logic from the port-independent logic in
- webkitdirs::buildCMakeProject(). Also, remove redundant code for generating the
- CMake arguments for feature defines.
-
- * Scripts/build-webkit:
- - Added cMakeArgsFromFeatures() to convert the @features array to CMake arguments.
- - Modified EFL and WinCE-specific building logic to call buildCMakeProjectOrExit().
- - Sorted forward declarations.
- - Initialize $makeArgs with the empty string so as to simplify its use in string operations;
- Modified call sites as needed.
- * Scripts/webkitdirs.pm:
- - Added cleanCMakeGeneratedProject() to clean a CMake build.
- - Added buildCMakeGeneratedProject() to build using generated build system.
- - Added buildCMakeProjectOrExit() which is a facade for building a CMake project.
- - Added generateBuildSystemFromCMakeProject() to generate the build system from
- a CMake project.
- - Removed buildCMakeProject(). This functionality is in buildCMakeProjectOrExit().
-
-2011-03-14 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Steve Block.
-
- Detach Geolocation from Frame when Page destroyed.
- https://bugs.webkit.org/show_bug.cgi?id=52877
-
- Extend the layout test controller to expose the number of pending
- geolocation requests, so that we can test that the requests have
- been cancelled on page close.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (numberOfPendingGeolocationPermissionRequestsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate numberOfPendingGeolocationPermissionRequests]):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
-
-
-2011-03-14 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Modify my email address in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-13 Joe Wild <joseph.wild@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] QtLauncher does not load the same set of fonts as the DRT
- https://bugs.webkit.org/show_bug.cgi?id=34959
-
- This patch adds the option "-use-test-fonts" to the QtTestBrowser.
- When this option is used the webkit fonts are loaded the same
- as they are in DumpRenderTree. This option can be used on
- QtTestBrowser and run-launcher. It can only be used
- on Linux systems with FcInit and is configured as such.
-
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/main.cpp:
- (initWebKitTestFonts):
- (launcherMain):
- (LauncherApplication::handleUserOptions):
-
-2011-03-12 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Mark Rowe.
-
- <rdar://problem/8995822> Build DumpRenderTree perl support only for the architectures
- DumpRenderTree is being built for.
-
- * DumpRenderTree/mac/PerlSupport/Makefile:
-
-2011-03-12 Dan Bernstein <mitz@apple.com>
-
- Suggested by Mark Rowe.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig: Leave C++ exceptions enabled
- as they were before r80915.
-
-2011-03-12 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Sam Weinig.
-
- Should be able to download a PDF to the Downloads folder
- https://bugs.webkit.org/show_bug.cgi?id=56256
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- Update for API changes.
-
-2011-03-11 Anton D'Auria <adauria@apple.com>
-
- Reviewed and landed by Brady Eidson.
-
- https://bugs.webkit.org/show_bug.cgi?id=51878
- Add WebKit1 API to view and delete local storage
-
- Added tests that write to LocalStorage, delete one origin, get list of origins with local storage, delete all origins.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/LayoutTestController.cpp:
- (syncLocalStorageCallback):
- (observeStorageTrackerNotificationsCallback):
- (deleteAllLocalStorageCallback):
- (deleteLocalStorageForOriginCallback):
- (originsWithLocalStorageCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/StorageTrackerDelegate.h: Added.
- * DumpRenderTree/StorageTrackerDelegate.mm: Added.
- (-[StorageTrackerDelegate init]):
- (-[StorageTrackerDelegate logNotifications:controller:]):
- (-[StorageTrackerDelegate originModified:]):
- (-[StorageTrackerDelegate dealloc]):
- (-[StorageTrackerDelegate setControllerToNotifyDone:]):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- (observeStorageTrackerNotifications):
- (syncLocalStorage):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::syncLocalStorage):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- (allocateGlobalControllers):
- (releaseGlobalControllers):
- * DumpRenderTree/mac/DumpRenderTreeMac.h:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::syncLocalStorage):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::syncLocalStorage):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::clearAllApplicationCaches):
- (LayoutTestController::syncLocalStorage):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::syncLocalStorage):
- (LayoutTestController::observeStorageTrackerNotifications):
- (LayoutTestController::clearAllDatabases):
- (LayoutTestController::deleteAllLocalStorage):
- (LayoutTestController::originsWithLocalStorage):
- (LayoutTestController::deleteLocalStorageForOrigin):
-
-2011-03-11 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Adam Roben.
-
- Crash calling WebContext::clearResourceCaches(InMemoryResourceCachesOnly) before the Web
- Process has finished launching.
- https://bugs.webkit.org/show_bug.cgi?id=56208
-
- * TestWebKitAPI/Tests/WebKit2/SendingMessagesToTheWebProcessBeforeItIsValid.cpp: Added.
- (TestWebKitAPI::TEST):
- Test that calling WKContextClearResourceCaches works with both options when called before
- the Web Process is valid.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add the new test.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Ditto.
-
-2011-03-11 Adam Roben <aroben@apple.com>
-
- Make it possible to view all leaks from a build at once in Leaks Viewer
-
- You can now give Leaks Viewer the URL of a build results page (e.g.,
- <http://build.webkit.org/results/SnowLeopard%20Intel%20Leaks/r80847%20(15493)/>), and it
- will load all the leaks files from that build.
-
- Fixes <http://webkit.org/b/56030> Leaks Viewer: Would like to be able to look at all leaks
- files from a particular build at once, rather than one at a time
-
- Reviewed by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksLoader.js: Added.
- (LeaksLoader): Initialize our properties.
- (LeaksLoader.prototype.start): If the URL ends in .txt, assume it's a single leaks file and
- load it. Otherwise assume it's a build results page URL and start fetching the leaks files
- from that page.
- (LeaksLoader.prototype._loadLeaksFiles): Tell our client how many leaks files we're loading
- so it can provide feedback. Then load each one and pass it to the client.
- (LeaksLoader.prototype._loadLeaksFromResultsPage): Load the HTML of the results page, parse
- it into a DOM, pull out all the links to leaks files, and load each one.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParser.js: Added.
- (LeaksParser): Initialize our worker.
- (LeaksParser.prototype.addLeaksFile): Tell the worker about the leaks file's contents.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksParserWorker.js: Added.
- This code mostly came from Worker.js.
- (LeaksParserWorker): Initialize our profile.
- (LeaksParserWorker.prototype.addLeaksFile): Parse the leaks file and incorporate it into our
- profile.
- (LeaksParserWorker.prototype._parseLeaks):
- (LeaksParserWorker.prototype._createNode):
- (LeaksParserWorker.prototype._incorporateLeaks):
- Moved these functions here from LeaksViewer. _incorporateLeaks is essentially just a renamed
- version of createProfile which adds to this.profile instead of making a new profile each
- time.
- (onmessage): Parse the file and send back the new profile.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css:
- (#loading-indicator):
- (#spinner):
- (#loading-indicator-label):
- Tweaked styles to accomodate a longer label.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer.loaded): Set up a loader and parser.
-
- (LeaksViewer.get filesLeftToParse):
- (LeaksViewer.set filesLeftToParse):
- Added these simple accessors.
-
- (LeaksViewer._didCountLeaksFiles): Callback from LeaksLoader. Stores the count.
- (LeaksViewer._didLoadLeaksFile): Callback from LeaksLoader. Passes the file contents off to
- the parser.
- (LeaksViewer._didParseLeaksFile): Callback from LeaksParser. If all files have been parsed,
- tell the ProfilerAgent and mark that we're done loading. (Code came from the old
- _loadLeaksFromURL function).
- (LeaksViewer._loadLeaksFromURL): Now just calls through to the loader.
- (LeaksViewer._loadingIndicatorText): Added. Returns the text that should show up in the
- loading indicator, including the number of files being loaded.
- (LeaksViewer._loadingStatusChanged): Update the loading indicator's label, too.
- (LeaksViewer._updateLoadingIndicatorLabel): Added. Just updates the label!
- (LeaksViewer._updateTitle): Moved code to compute the "Loading" text to
- _loadingIndicatorText.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Utilities.js: Added.
- (getResource): Moved here from LeaksViewer.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Worker.js: Subsumed by
- LeaksParserWorker.js.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html: Added new JS
- files, added a #loading-indicator-label element, and tweaked the prompt wording.
-
-2011-03-11 Adam Roben <aroben@apple.com>
-
- Don't trigger a build when build.webkit.org's HTML files are modified
-
- Fixes <http://webkit.org/b/56190> Windows bots shouldn't have built r80848/r80851, but did
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Added build.webkit.org's public_html directory to the list of
- directories that shouldn't trigger builds. Re-sorted the list.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): Added a test to cover the above change.
-
-2011-03-11 Adam Roben <aroben@apple.com>
-
- Roll out r80848
-
- It was accidentally committed.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer._loadLeaksFromURL):
-
-2011-03-11 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- kill hung lighttpd processes on the chromium win bot
- https://bugs.webkit.org/show_bug.cgi?id=56152
-
- Sometimes this process doesn't exit and it holds on to
- a log file that we can't delete or copy, causing the tests
- to go red.
-
- * BuildSlaveSupport/win/kill-old-processes:
-
-2011-03-11 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [Chromium] missing HTMLInputElement::setValueForUser() to tests
- https://bugs.webkit.org/show_bug.cgi?id=55854
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setValueForUser): Added.
- * DumpRenderTree/chromium/LayoutTestController.h:
-
-2011-03-10 Peter Kasting <pkasting@google.com>
-
- Reviewed by Dimitri Glazkov.
-
- Clean up some gross code in TestShellWin.cpp. No functional change.
- https://bugs.webkit.org/show_bug.cgi?id=56048
-
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (checkLayoutTestSystemDependencies):
-
-2011-03-10 Keith Kyzivat <keith.kyzivat@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Buildfix for platforms where X11 is not available (e.g. Symbian)
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts): Guard X11-specific code with Q_WS_X11.
-
-2011-03-10 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Make single backing store the default for EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=55753
-
- Set single backing store the default for EWebLauncher.
-
- * EWebLauncher/main.c:
- (main):
-
-2011-03-10 Adam Roben <aroben@apple.com>
-
- Ignore errors from files being held open when creating a test result archive
-
- Fixes <http://webkit.org/b/55581> Test results don't get uploaded if test-result-archive
- fails to delete the results directory
-
- Reviewed by Mark Rowe.
-
- * BuildSlaveSupport/test-result-archive:
- (archiveTestResults): Ignore errno 2 when deleting the results directory, since it can be
- thrown when a process is holding a file open.
-
-2011-03-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r80701.
- http://trac.webkit.org/changeset/80701
- https://bugs.webkit.org/show_bug.cgi?id=56126
-
- fast/dom/Geolocation/window-close-crash.html fails on Snow
- Leopard release builds (Requested by mihaip on #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2011-03-10 Philippe Normand <pnormand@igalia.com>
-
- Reviewed by Gustavo Noronha Silva.
-
- [GTK] run-gtk-tests doesn't fail if a test crashes
- https://bugs.webkit.org/show_bug.cgi?id=56089
-
- * Scripts/run-gtk-tests: gtester -k exits with a 0 exit status
- even if a test crashes. So run the tests individually and if a
- test fails remember its exit code so run-gtk-test fails too, if
- required.
-
-2011-01-26 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Detach Geolocation from Frame when Page destroyed.
- https://bugs.webkit.org/show_bug.cgi?id=52877
-
- Extend the layout test controller to expose the number of pending
- geolocation requests, so that we can test that the requests have
- been cancelled on page close.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (numberOfPendingGeolocationPermissionRequestsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate numberOfPendingGeolocationPermissionRequests]):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
-
-
-2011-03-09 Adam Roben <aroben@apple.com>
-
- Hide Leaks Viewer's URL prompt by default
-
- We will show it as needed. I think I left it visible by default by accident after doing some
- testing.
-
- Fixes <http://webkit.org/b/56031> Leaks Viewer: URL prompt overlay shouldn't appear when a
- URL is passed as a query parameter, but does
-
- Reviewed by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html:
-
-2011-03-09 Adam Roben <aroben@apple.com>
-
- Don't use Element.classList or box-shadow in Leaks Viewer
-
- They aren't supported by Safari 5. Luckily we have substitutes for them!
-
- Fixes <http://webkit.org/b/56035> Leaks viewer doesn't work in Safari 5
-
- Reviewed by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css:
- (#url-prompt): Use -webkit-box-shadow instead of box-shadow.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js:
- (LeaksViewer.urlPromptButtonClicked):
- (LeaksViewer._displayURLPrompt):
- (LeaksViewer._setLoadingIndicatorHidden):
- Use add/removeStyleClass (from utilities.js) instead of Element.classList.
-
-2011-03-09 Adam Roben <aroben@apple.com>
-
- Add a link to the Leaks Viewer tool on the build.webkit.org homepage
-
- Rubber-stamped by David Kilzer.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2011-03-09 Adam Roben <aroben@apple.com>
-
- Add a Leaks Viewer tool to build.webkit.org
-
- This tool parses leaks from the files generated by the leaks bot and displays them in a
- view similar to the Web Inspector's Profiles pane (in fact, it uses the Web Inspector's
- code).
-
- The URL of the leaks file can be entered in a prompt when the tools is first shown, or can
- be passed to the tool via the "url" query parameter.
-
- Only one leaks file can be viewed at a time for now. Only the number of leaks, as opposed to
- the number of leaked bytes, is shown. And this tool has made apparent some bugs in the Web
- Inspector's Heavy profile view. But it's still pretty useful as-is.
-
- Fixes <http://webkit.org/b/56028> Would like a Shark-like tool for viewing leaks from leak bots
-
- Reviewed by Darin Adler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.css: Added.
- (#url-prompt-container): This is the dark overlay that is shown behind the URL prompt.
- (#url-prompt): This is the prompt itself.
-
- (#loading-indicator):
- (#loading-indicator > img):
- These show a spinner in the bottom-right when we're loading a leaks file.
-
- (.percent-time-status-bar-item): Hide the Percent button since we never want to show leaks
- as percentages.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/LeaksViewer.js: Added.
- (LeaksViewer.loaded): Initialize ourselves and start loading the leaks file (or prompt for a
- URL if one wasn't given to us as a query parameter).
-
- (LeaksViewer.get loading):
- (LeaksViewer.set loading):
- (LeaksViewer.get url):
- (LeaksViewer.set url):
- Pretty simple accessors.
-
- (LeaksViewer.urlPromptButtonClicked): Start loading the URL from the prompt and hide the
- prompt.
- (LeaksViewer._displayURLPrompt): Show the prompt and focus the URL input.
- (LeaksViewer._loadLeaksFromURL): Start fetching the leaks file. When we've retrieved the
- file, hand it off to a Web Worker that will parse it into a fake "profile", then hand off
- the profile to the Web Inspector code once it's been created.
- (LeaksViewer._loadingStatusChanged): Update our loading indicator and title.
- (LeaksViewer._setLoadingIndicatorHidden): Simply hide or show the indicator.
- (LeaksViewer._updateTitle): Set our title based on our URL and loading status.
- (getResource): Helper function to fetch a resource via XHR and pass it to a callback.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js: Added.
- (WebInspector.UIString): Just a simple implementation since this tool isn't localized.
- (ProfilerAgent.getProfile): Store the callback.
- (ProfilerAgent.profileReady): Call the callback.
- (monkeyPatchInspectorObjects): Fix up WebInspector.ProfileDataGridNode to show the self leak
- count and total leak counts as real values, not percentages or milliseconds.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/Worker.js: Added.
- (onmessage): Create a profile based on the leaks file and pass it back to our caller.
- (parseLeaks): Extract call stacks out of a leaks file.
- (createNode): Helper function to create a new empty profile node.
- (createProfile): Take the leak stacks and turn them into a fake "profile" for consumption by
- WebInspector.ProfileView.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/index.html: Added.
-
-2011-03-09 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- Combine multiple --ignore-tests values
- https://bugs.webkit.org/show_bug.cgi?id=56016
-
- * Scripts/old-run-webkit-tests:
-
-2011-03-08 Kenji Imasaki <imasaki@chromium.org>
-
- Reviewed by David Levin.
-
- Adding myself to the committer file.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-08 Jessie Berlin <jberlin@apple.com>
-
- Rubber-stamped by Adam Roben.
-
- Fix two leaks I introduced into the API tests.
-
- * TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp:
- (TestWebKitAPI::TEST):
-
-2011-03-08 Jessie Berlin <jberlin@apple.com>
-
- Reviewed by Anders Carlsson.
-
- Crash in CFNetwork visiting google.com
- https://bugs.webkit.org/show_bug.cgi?id=55958
-
- Add a test for not trying to copy a null CFURLResponse.
-
- * TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp: Added.
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2011-03-08 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [NRWT] Renamed a FailureWithType class to a ComparisonTestFailure class.
-
- FailureWithType is a confusing naming because we have removed test_type/* classes in r79840.
-
- https://bugs.webkit.org/show_bug.cgi?id=55450
-
- * Scripts/webkitpy/layout_tests/layout_package/test_failures.py:
-
-2011-03-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] Add layoutTestController.setValueForUser() after r80412
- https://bugs.webkit.org/show_bug.cgi?id=55862
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setValueForUser): Implement setValueForUser()
-
-2011-03-08 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Adam Barth.
-
- Add script_shell_command to WebKitPort
- https://bugs.webkit.org/show_bug.cgi?id=55925
-
- Add a central place where we generate the shell command from the script name.
- This function will be used later to detect the correct script interpreter on Win32.
-
- * Scripts/webkitpy/common/config/ports.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/tool/steps/abstractstep.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2011-03-07 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- add webkit-patch attach-to-bug for posting to bugzilla from the commandline
- https://bugs.webkit.org/show_bug.cgi?id=55749
-
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/attachtobug.py: Added.
- * Scripts/webkitpy/tool/steps/options.py:
-
-2011-03-07 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by David Levin.
-
- Add support for DataTransferItems
- https://bugs.webkit.org/show_bug.cgi?id=55115
-
- Enable data transfer items in DRT.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2011-03-06 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [test dashboard] pull treemap files
- https://bugs.webkit.org/show_bug.cgi?id=55852
-
- * TestResultServer/handlers/dashboardhandler.py:
-
-2011-03-03 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- [NRWT] Clear output image file used by DumpRenderTree to make sure the
- previous image should not be used in the ChromiumDriver.
-
- Also make sure that output image from the ChromiumDriver should be ''
- (empty string) if a test crashes for consistency with the WebKitDriver
- implementation.
-
- https://bugs.webkit.org/show_bug.cgi?id=55746
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2011-03-07 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] fast/js/navigator-language.html fails locally
- https://bugs.webkit.org/show_bug.cgi?id=55880
-
- Add LANG variable to the clean environment when running
- old-run-webkit-tests script.
-
- * Scripts/old-run-webkit-tests:
-
-2011-03-07 Tony Chang <tony@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- [Chromium] Find .checksum files without .pngs and vice-versa
- https://bugs.webkit.org/show_bug.cgi?id=55236
-
- * Scripts/find-mismatched-layout-test-results: Added. A script for finding
- mismatched results.
-
-2011-03-07 Chris Fleizach <cfleizach@apple.com>
-
- Reviewed by Beth Dakin.
-
- AX: WK1 needs to use the ScrollView attachment for AXScrollArea, WK2 should not use this element.
- https://bugs.webkit.org/show_bug.cgi?id=55706
-
- The rootElement in DRT should point to the scroll view. In WK1, that will be the parent of the rootObject.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (AccessibilityController::focusedElement):
- Remove FIXME comment about caching the focusedElement. In fact, we shouldn't cache this
- because it could change at any time.
- (AccessibilityController::rootElement):
-
-2011-03-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Add unableToImplementPolicy callback for WebKit2 policy client
- <rdar://problem/9071902>
- https://bugs.webkit.org/show_bug.cgi?id=55884
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- Update policy client initialization struct for new member.
-
-2011-03-07 Sam Weinig <sam@webkit.org>
-
- Reviewed by Anders Carlsson.
-
- Replace WebKit2's decidePolicyForMIMEType with decidePolicyForResponse
- https://bugs.webkit.org/show_bug.cgi?id=55827
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (decidePolicyForResponse):
- (-[BrowserWindowController awakeFromNib]):
- * TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp:
- (TestWebKitAPI::decidePolicyForResponse):
- (TestWebKitAPI::TEST):
- Update tools for new name.
-
-2011-03-06 Daniel Bates <dbates@rim.com>
-
- Reviewed by Eric Seidel and David Kilzer.
-
- Fix misspelled word in build-webkit's checkForJavaSDK() and sort forward declarations
- https://bugs.webkit.org/show_bug.cgi?id=55503
-
- Fix misspelled word "Dowloads" [sic] in the message printed to standard output
- in checkForJavaSDK().
-
- Also, remove extraneous space in function prototype for unlinkZeroFiles.
-
- * Scripts/build-webkit:
-
-2011-03-05 Brian Weinstein <bweinstein@apple.com>
-
- Reviewed by Sam Weinig.
-
- Fix Web Process crashes caused by https://bugs.webkit.org/show_bug.cgi?id=53919.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame): Retain the WKURLRequestRef returned
- by willSendRequestForFrame. The API expects a retained reference to the URL request.
-
-2011-03-05 Ilya Sherman <isherman@chromium.org>
-
- Reviewed by Darin Adler.
-
- HTMLInputElement::setValue() should schedule change event when the element is focused
- In service of https://code.google.com/p/chromium/issues/detail?id=42716
- https://bugs.webkit.org/show_bug.cgi?id=53160
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setValueForUserCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setValueForUser): Stubbed out; need real implementation.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setValueForUser): Expose HTMLInputElement::setValueForUser() to tests
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setValueForUser): Stubbed out; need real implementation.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setValueForUser): Stubbed out; need real implementation.
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setValueForUser): Stubbed out; need real implementation.
-
-2011-03-04 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Alexey Proskuryakov.
-
- <rdar://problem/9055252> DumpRenderTree is crashing with GuardMalloc
-
- GuardMalloc does not expect the memory containing its malloc_zone_t to ever be read-only.
-
- * DumpRenderTree/mac/CheckedMalloc.cpp:
- (protectionOfRegion): Retrieve the protection flags for the VM region containing the given address.
- (makeLargeMallocFailSilently): Save the initial protection flags, temporarily make the region writeable,
- and then restore the initial protection flags when we're done.
-
-2011-03-04 Evan Martin <evan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [gdb] pretty-print KURL in gdb
- https://bugs.webkit.org/show_bug.cgi?id=55788
-
- * gdb/webkit.py: extend the pretty-printers to print WTF::CString
- and KURLGooglePrivate. As always, "p/r" can be used to sidestep
- pretty-printing.
-
-2011-03-03 Timothy Hatcher <timothy@apple.com>
-
- Update the tests that use WKPageRunJavaScriptInMainFrame use the WKSerializedScriptValueRef.
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/JavaScriptTest.cpp:
- (TestWebKitAPI::javaScriptCallback):
- * TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp:
- (TestWebKitAPI::didRunJavaScript):
- * TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp:
- (TestWebKitAPI::nullJavaScriptCallback):
- * TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp:
- (TestWebKitAPI::didRunJavaScript):
-
-2011-03-03 Timothy Hatcher <timothy@apple.com>
-
- Make run-api-tests show failed if a test fails.
-
- https://webkit.org/b/55725
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-api-tests:
- (runTest): Remove "my" from the nested $result assignment so the
- check outside the condition sees the real result.
-
-2011-03-02 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- [Chromium][DRT] WebTask should use webkit_support::TaskAdaptor
- https://bugs.webkit.org/show_bug.cgi?id=55434
-
- Changed WebTask to be a subclass of webkit_support::TaskAdaptor
- and passed the object webkit_support::PostDelayedTask directly.
-
- Note that the change keeps postTask() as is because it has a
- semantics taht webkit_support::PostDelayedTask() has; It jumps to
- the main thread.
-
- * DumpRenderTree/chromium/Task.cpp:
- (postDelayedTask):
- * DumpRenderTree/chromium/Task.h:
- (WebTask::Run):
-
-2011-03-03 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [QT] Implement mock client-based geolocation for layout testing
- https://bugs.webkit.org/show_bug.cgi?id=54334
-
- Implement testing for Client-Based geolocation for QtWebkit.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setGeolocationPermission):
- (LayoutTestController::setMockGeolocationError):
- (LayoutTestController::setMockGeolocationPosition):
-
-2011-03-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r80237.
- http://trac.webkit.org/changeset/80237
- https://bugs.webkit.org/show_bug.cgi?id=55714
-
- Windows bots aren't ready to be core (Requested by aroben on
- #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-03-03 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT: AttributeError: TestRunner2 instance has no attribute '_cancel_workers'
- https://bugs.webkit.org/show_bug.cgi?id=55694
-
- Fixes for interruptions in NRWT:
- - Make TestRunInterruptedException be pickleable correctly (the base
- Exception class defines a __reduce__ that does not include the reason)
- - Fix ordering of returned arguments from TestRunner2._run_tests
- (interrupted and keyboard_interrupted were reversed)
- - Fix cancel_workers callsites (was using old name).
- - In handle_exception re-raise actual exception instance that was thrown
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-03-03 Qi Zhang <qi.2.zhang@nokia.com>
-
- Unreviewed.
-
- Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-03 Tony Gentilcore <tonyg@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- Teach sheriffbot to answer whois commands
- https://bugs.webkit.org/show_bug.cgi?id=55687
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py:
-
-2011-03-03 Victoria Kirst <vrk@google.com>
-
- Reviewed by Eric Carlson.
-
- Enable media tests in chromium-gpu/test_expectations
- https://bugs.webkit.org/show_bug.cgi?id=53608
-
- Add media folder to the list of GPU test paths.
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-03-03 Adam Roben <aroben@apple.com>
-
- Work around a bug in KURL's parsing of Windows-style absolute file: URLs
-
- Fixes <http://webkit.org/b/55674> Many tests fail in WebKit2 mode on Windows due to
- incorrect parsing of absolute Windows-style file: URLs
-
- Reviewed by Tim Hatcher.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::createWKURL): Add a "localhost" host to file: URLs we create to work around
- <http://webkit.org/b/55683>.
-
-2011-03-03 Tony Chang <tony@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- [chromium] Run kill-old-processes on the chromium-win bot too
- https://bugs.webkit.org/show_bug.cgi?id=55630
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/win/kill-old-processes: Add wdiff.exe to the kill list.
-
-2011-03-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Reviewed by Martin Robinson.
-
- [GTK] DRT needs implementation of EventSender.scheduleAsynchronousClick
- https://bugs.webkit.org/show_bug.cgi?id=53960
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (sendClick):
- (scheduleAsynchronousClickCallback):
-
-2011-03-03 Adam Roben <aroben@apple.com>
-
- Look for Windows-style paths when checking whether a test is an Inspector test
-
- WTR part of <http://webkit.org/b/55672> <rdar://problem/9080867> All inspector tests time
- out or crash on Windows 7 Release (WebKit2 Tests)
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldOpenWebInspector): Also look for backslashes, since that's what we'll get on
- Windows.
-
-2011-03-03 Adam Roben <aroben@apple.com>
-
- Make Windows 7 Release (Tests) a core builder
-
- We can probably make Windows XP Debug (Tests) a core builder, too, but we should probably
- give it a few more days of greenness first.
-
- Fixes <http://webkit.org/b/55665> Windows 7 Release (Tests) should be a core builder
-
- Reviewed by Andreas Kling.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (BuildBot): Added a regexp to match Windows 7 Release (Tests).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuildBotTest): Updated the list of builders to match the current list on build.webkit.org.
- Updated the core regexps to match the buildbot module. Updated the expected results to match
- the current set of core builders.
-
-2011-03-03 Benjamin Poulain <benjamin.poulain@nokia.com>
-
- Reviewed by Andreas Kling.
-
- Adding myself as a reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-03 Lukasz Slachciak <l.slachciak@samsung.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] Extended application cache database API and added unit tests file.
- https://bugs.webkit.org/show_bug.cgi?id=55335
-
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: removed external declaration
- of webkit_application_cache_set_maximum_size due to API exposal.
-
-2011-03-02 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Adam Barth.
-
- make webkit-patch upload work for security bugs
- https://bugs.webkit.org/show_bug.cgi?id=55655
-
- The problem is that we shell out to prepare-ChangeLog,
- which does not authenticate with bugzilla. All it needs from
- bugzilla is the bug title though. We just pass it through from
- webkit-patch instead.
-
- * Scripts/prepare-ChangeLog:
- * Scripts/webkitpy/common/net/bugzilla/bug.py:
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
-
-2011-03-01 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- [test-dashboard] make gtest JSON match layout-tests JSON
- https://bugs.webkit.org/show_bug.cgi?id=55556
-
- http://trac.webkit.org/changeset/80090 stopped converting time_ms to t.
- Make this code match.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
-
-2011-03-02 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Tony Chang.
-
- NRWT - implement Linux Hardy 64-bit port support. This involves
- adding support for non-'x86' architectures and updating the
- "deduplicate_tests" script to correctly understand that
- port.name() is not always equal to basename(port.baseline_path()).
-
- This change introduces two new port names: 'chromium-linux-x86'
- and 'chromium-linux-x86_64'. Using the prior 'chromium-linux'
- flag will cause the code to determine which one to use at
- runtime, just like we currently do with 'chromium-win'.
-
- https://bugs.webkit.org/show_bug.cgi?id=55535
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- Handle 'return_stderr' keyword arg to run_command()
- * Scripts/webkitpy/layout_tests/deduplicate_tests.py:
- * Scripts/webkitpy/layout_tests/deduplicate_tests_unittest.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
-
-2011-03-02 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fix, make sure we put the wxWebKit dylib in the right directory and
- update symlinks accordingly.
-
- * wx/packaging/build-mac-installer.py:
-
-2011-03-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r80139.
- http://trac.webkit.org/changeset/80139
- https://bugs.webkit.org/show_bug.cgi?id=55620
-
- failing and crashing tests on Snow Leopard bot (Requested by
- mihaip1 on #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2011-03-02 Adam Roben <aroben@apple.com>
-
- Wait for force a paint in WebKitTestRunner until we're actually ready to dump the output
-
- This matches DumpRenderTree on Windows.
-
- Fixes <http://webkit.org/b/55469> <rdar://problem/9068539> REGRESSION (r79863): Lots of
- dom/html/level2/html/HTMLFrameElement*.html tests crashing in FrameView::paintOverhangAreas
- in WebKit2
-
- Reviewed by Beth Dakin.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump): Moved code to force a paint here...
- (WTR::InjectedBundlePage::didFinishLoadForFrame): ...from here.
-
-2011-03-02 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by David Levin.
-
- Add feature define for data transfer items
- https://bugs.webkit.org/show_bug.cgi?id=55510
-
- * Scripts/build-webkit:
-
-2011-03-02 Adam Roben <aroben@apple.com>
-
- Look in the new-to-SnowLeopard location for crash logs on SnowLeopard and newer
-
- ReportCrash saves logs to ~/Library/Logs/CrashReporter on Leopard, but to
- ~/Library/Logs/DiagnosticReports on SnowLeopard. old-run-webkit-tests was only looking in
- the former location, but was getting lucky on some SnowLeopard machines because symlinks
- were being created there pointing into DiagnosticReports. For machines without these
- symlinks, crash logs were not getting captured.
-
- Fixes <http://webkit.org/b/55607> old-run-webkit-tests doesn't capture crash logs on some
- SnowLeopard machines
-
- Reviewed by Eric Seidel.
-
- * Scripts/old-run-webkit-tests:
- (captureSavedCrashLog): Look in ~/Library/Logs/DiagnosticReports on SnowLeopard and newer.
-
-2011-03-02 Adam Roben <aroben@apple.com>
-
- Don't try to capture crash logs on platforms that haven't implemented that feature
-
- Fixes <http://webkit.org/b/55504> Use of uninitialized value in numeric lt (<) at
- Tools/Scripts/old-run-webkit-tests line 1778 seen on Qt bots after a crash
-
- Reviewed by Joseph Pecoraro.
-
- * Scripts/old-run-webkit-tests:
- (captureSavedCrashLog): Bail if we don't have a crash log glob.
- (findNewestFileMatchingGlob): Fix a buggy test for when no paths match the glob. This isn't
- strictly required to fix bug 55504, but seems worthwhile.
-
-2011-01-26 John Knottenbelt <jknotten@chromium.org>
-
- Reviewed by Dmitry Titov.
-
- Detach Geolocation from Frame when Page destroyed.
- https://bugs.webkit.org/show_bug.cgi?id=52877
-
- Extend the layout test controller to expose the number of pending
- geolocation requests, so that we can test that the requests have
- been cancelled on page close.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (numberOfPendingGeolocationPermissionRequestsCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/mac/UIDelegate.h:
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate numberOfPendingGeolocationPermissionRequests]):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::numberOfPendingGeolocationPermissionRequests):
-
-
-2011-03-01 Kent Tamura <tkent@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- Assertion fails when a form validation bubble appears
- https://bugs.webkit.org/show_bug.cgi?id=55550
-
- Test: fast/forms/interactive-validation-attach-assertion.html
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo): Enable the interactive validation feature by
- default. This matches to Chromium browser.
-
-2011-03-01 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Kent Tamura.
-
- Remove efl port style exception of Webcore/JavaScriptCore
- https://bugs.webkit.org/show_bug.cgi?id=55549
-
- WebCore and JavaScriptCore need to adhere WebKit coding style.
-
- * Scripts/webkitpy/style/checker.py:
-
-2011-03-01 Tony Chang <tony@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- [chromium] clean up temp files on chromium-mac builder too
- https://bugs.webkit.org/show_bug.cgi?id=55525
-
- * BuildSlaveSupport/chromium/remove-crash-logs:
-
-2011-02-28 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- wrap json in a function call to afford cross-domain loading
- https://bugs.webkit.org/show_bug.cgi?id=55353
-
- Also delete the code that compacts the JSON. It turns out this
- breaks the rebaseline tool and is probably a premature optimization anyways.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/tool/commands/rebaselineserver.py:
-
-2011-03-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r80079.
- http://trac.webkit.org/changeset/80079
- https://bugs.webkit.org/show_bug.cgi?id=55547
-
- "Broke the Win debug build?" (Requested by dcheng on #webkit).
-
- * Scripts/build-webkit:
-
-2011-03-01 Mark Rowe <mrowe@apple.com>
-
- Reviewed by Sam Weinig.
-
- Update verification scripts to handle WebKit2.
-
- * Scripts/check-for-global-initializers: Skip object files that use RefCountedLeakChecker.
- * Scripts/check-for-inappropriate-files-in-framework: Add some inappropriate file types for
- WebKit2.
-
-2011-03-01 Daniel Cheng <dcheng@chromium.org>
-
- Reviewed by David Levin.
-
- Add feature define for data transfer items
- https://bugs.webkit.org/show_bug.cgi?id=55510
-
- * Scripts/build-webkit:
-
-2011-02-23 Joseph Pecoraro <joepeck@webkit.org>
-
- Reviewed by Timothy Hatcher.
-
- All Console Messages should be passed to ChromeClients.
- https://bugs.webkit.org/show_bug.cgi?id=54926
-
- Update DumpRenderTree's UIDelegate to use the new console message delegate.
-
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:addMessageToConsole:withSource:]):
-
-2011-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Barth.
-
- Tragically, we stopped running the python unit tests
- on Chromium Win just as I was getting them to be green.
- This patch turns them back on.
-
- https://bugs.webkit.org/show_bug.cgi?id=55521
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2011-03-01 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Disable
- webkitpy.common.system.executive_unittest.ExecutiveTest.\
- test_kill_all fails on win until it can be properly triaged.
-
- https://bugs.webkit.org/show_bug.cgi?id=54790
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
- 2011-03-01 Helder Correia <helder@sencha.com>
-
- Unreviewed. Add myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Give up if a crash log for the web process is taking too long to be saved on Windows
-
- This should keep the bots from getting stuck while waiting for a crash log, if writing a
- crash log ever hangs or the UI process for some reason doesn't notice it's finished.
-
- Fixes <http://webkit.org/b/55499> WebKitTestRunner can hang forever waiting for a crash log
- to be saved for the web process
-
- Reviewed by Steve Falkenburg.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::runRunLoopUntil): Moved code to run the run loop here here from platformRunUntil.
- Generalized the code slightly to handle the optional object to wait on.
- (WTR::TestController::platformRunUntil): Use the new runRunLoopUntil function, and also use
- it (with a timeout) when waiting for a crash log for the web process to be saved. This will
- prevent us from waiting forever.
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Give WebKitLauncherWin's PDB file a name different from WebKit's
-
- WebKitLauncherWin (which builds WebKit.exe) and WebKit (which builds WebKit.dll) were
- fighting over the same PDB file, meaning that one of them was going to lose and not have
- symbols. WebKitLauncherWin's PDB file is now named WebKitLauncherWin.pdb.
-
- Fixes <http://webkit.org/b/55495> Crashes in WebKit.dll have bad backtraces for some test
- runs (due to missing symbols)
-
- Reviewed by David Kilzer.
-
- * WebKitLauncherWin/WebKitLauncherWinCommon.vsprops: Use the project name,
- "WebKitLauncherWin", instead of the target name, "WebKit", when naming the PDB file.
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Count web process crashes toward the --exit-after-n-crashes-or-timeouts limit
-
- Fixes <http://webkit.org/b/55492> Web process crashes aren't counted toward the
- --exit-after-n-crashes-or-timeouts limit
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (stopRunningTestsEarlyIfNeeded): Include web process crashes in the computation, and print
- the number of tests that caused the web process to crash when exiting early.
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Save a crash log when the web process crashes
-
- On Windows, WebKitTestRunner now detects when the web process is crashing and waits to exit
- until it has finished crashing, which guarantees that the crash log will have had time to be
- saved, too. On Mac, we always wait until ReportCrash has exited before capturing the crash
- log, so all we have to do is choose the right crash log out of the CrashReporter directory.
-
- Fixes <http://webkit.org/b/44121> <rdar://problem/8320759> When the web process crashes and
- a crash log is being saved, WebKitTestRunner thinks the web process has become unresponsive
-
- Reviewed by Sam Weinig.
-
- * Scripts/old-run-webkit-tests:
- (testCrashedOrTimedOut): Don't kill WebKitTestRunner when the web process crashes. It will
- kill itself. On Windows, this will cause us to wait until the crash log has been saved. On
- Mac, it should have no effect. Capture saved crash logs for web process crashes, too.
- (captureSavedCrashLog): Added $webProcessCrashed argument. On Mac, look for
- WebProces_*.crash files when the web process crashes.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize): Added an initializationUserData argument. Updated for
- initializePlatformDefaults -> platformInitialize rename. Pass the initializationUserData
- along to platformInitialize.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: See above.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp:
- (WKBundleInitialize): Pass along the initializationUserData to the InjectedBundle.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::InjectedBundle::platformInitialize):
- Updated function signature.
-
- * WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp:
- (WTR::exceptionFilter): Added. Tells the UI process we're crashing by signaling the
- webProcessCrashingEvent, then lets the crash continue as normal.
-
- (WTR::InjectedBundle::platformInitialize): Hook up exceptionFilter. Retrieve the name of the
- event we should use to tell the UI process we're crashing from the initializationUserData,
- and get a handle to that event.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController): Initialize new members.
- (WTR::TestController::processDidCrash): Removed unnecessary WKPageRef argument. Changed to
- only print the "#CRASHED - WebProcess" message once, since this can be called more than once
- when a crash log is being saved on Windows. Exit right away if specified. (This is the
- default.)
-
- * WebKitTestRunner/TestController.h: Added new members.
-
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformInitialize): Set up the event the web process will use to tell
- us it's crashing.
- (WTR::TestController::platformRunUntil): Pass MWMO_INPUTAVAILABLE to
- ::MsgWaitForMultipleObjectsEx so we'll process messages that have already been seen by
- ::PeekMessage. (This is unrelated to the bug fix.) Notice when the webProcessCrashingEvent
- has been signaled. When this happens, print the "#CRASHED - WebProcess" message right away
- so the test harness will know the web process has crashed and not try to kill us, then wait
- for the web process to finish crashing so a crash log will have time to be saved.
- (WTR::toWK): Simple hepler function.
- (WTR::TestController::platformInitializeContext): Pass along the name of the event the web
- process should use to tell us it is crashing in the context's initialization user data.
-
-2011-03-01 Dimitri Glazkov <dglazkov@chromium.org>
-
- Reviewed by Tony Gentilcore.
-
- Move the checks to exclude Python/Perl tests for Chromium Win build to the right place.
- https://bugs.webkit.org/show_bug.cgi?id=55476
-
- Chromium Win uses BuildAndTestFactory, not TestFactory.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Moved to the right place.
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Test that the WebKit2 responsiveness timer doesn't fire too early
-
- Test for <http://webkit.org/b/55417> <rdar://problem/9065287> RunLoop::Timer fires 1000x too
- early on Windows
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/PlatformUtilities.h: Added sleep().
-
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::processDidBecomeUnresponsive):
- (TestWebKitAPI::setInjectedBundleClient):
- (TestWebKitAPI::setPageLoaderClient):
- Simple helper functions.
-
- (TestWebKitAPI::TEST): Load an HTML file to make sure the web process is initialized. Then
- tell the web process to pause and press the spacebar key. The spacebar keypress should cause
- the responsiveness timer to start, but the web process should unpause before it has a chance
- to fire. Run until the web process has unpaused, and assert that the timer didn't fire.
-
- * TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp: Added.
- (TestWebKitAPI::ResponsivenessTimerDoesntFireEarlyTest::ResponsivenessTimerDoesntFireEarlyTest):
- Call up to the base class.
- (TestWebKitAPI::ResponsivenessTimerDoesntFireEarlyTest::didReceiveMessage): When asked to
- pause, sleep for 0.5 seconds, then send back a message saying we paused.
-
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::sleep): Added. Calls through to usleep.
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp:
- (TestWebKitAPI::Util::sleep): Added. Calls through to ::Sleep.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
- Added new files.
-
-2011-03-01 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Clean up the project files and move common options to WebKit.pri.
-
- * WebKitTestRunner/qt/WebKitTestRunner.pro: Deduplicate.
-
-
-2011-03-01 Adam Roben <aroben@apple.com>
-
- Skip another multiprocessing test on Windows
-
- It is sometimes failing (and may be leaving child Python processes around).
- <http://webkit.org/b/55087> tracks the failure.
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- (FuncitonTests.test_get__processes): Skip this test on Windows.
-
-2011-03-01 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: reduce inspector tests flakiness.
- https://bugs.webkit.org/show_bug.cgi?id=55401
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
-
-2011-02-28 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by James Robinson.
-
- NRWT should still upload results when it exits early due to too many failures
- https://bugs.webkit.org/show_bug.cgi?id=55432
-
- Only keyboard interrupts should prevent results from being uploaded.
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-28 Alice Liu <alice.liu@apple.com>
-
- Reviewed by Adam Roben and Gavin Barraclough.
-
- Test for https://bugs.webkit.org/show_bug.cgi?id=54898
- InjectedBundleNodeHandle dies too early in WKBundleHitTestResultGetNodeHandle.
-
- * TestWebKitAPI/InjectedBundleController.h:
- (TestWebKitAPI::InjectedBundleController::bundle):
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp: Added.
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp: Added.
- (TestWebKitAPI::HitTestResultNodeHandleTest::HitTestResultNodeHandleTest):
- (TestWebKitAPI::HitTestResultNodeHandleTest::getContextMenuFromDefaultMenu):
- (TestWebKitAPI::HitTestResultNodeHandleTest::didCreatePage):
- * TestWebKitAPI/mac/PlatformWebViewMac.mm:
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- * TestWebKitAPI/win/PlatformWebViewWin.cpp:
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
-
- Added files to:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj:
-
-2011-02-28 Adam Roben <aroben@apple.com>
-
- Start running InjectedBundle API tests on Windows
-
- A new project, TestWebKitAPIInjectedBundle, builds the injected bundle DLL.
-
- Fixes <http://webkit.org/b/55420> run-api-tests doesn't run injected bundle tests on Windows
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops: Added.
- * TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops: Added.
- These are just extracted from TestWebKitAPI.vcproj.
-
- * TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops: Added. Just sets
- up the DLL's filename.
-
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp: Fixed DLL name.
- (TestWebKitAPI::Util::createInjectedBundlePath): Changed to use kCFAllocatorNull instead of
- 0 (== kCFAllocatorDefault) so that CF won't try to deallocate our C string.
-
- * TestWebKitAPI/win/TestWebKitAPI.sln: Added TestWebKitAPIInjectedBundle. Removed the bogus
- "all" configuration.
-
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Changed to use the new .vsprops files. Added
- injected bundle tests. Let VS resort things.
-
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj: Copied from Tools/TestWebKitAPI/win/TestWebKitAPI.vcproj.
-
-2011-02-28 Adam Roben <aroben@apple.com>
-
- Add a test for the paint rect passed via WM_PAINT to windowless plugins
-
- Test for <http://webkit.org/b/55365> <rdar://problem/9031089> REGRESSION (r79040): WebKit2:
- Large portions of pages with plugins paint black
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPP_HandleEvent):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- Added NPP_HandleEvent. Just returns 0 at this level.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowlessPaintRectCoordinates.cpp: Added.
- (WindowlessPaintRectCoordinates::WindowlessPaintRectCoordinates): Call up to the base class.
- (WindowlessPaintRectCoordinates::NPP_New): Mark ourselves as windowless.
- (WindowlessPaintRectCoordinates::NPP_HandleEvent): Check that the paint rect passed via
- WM_PAINT has the expected coordinates.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_HandleEvent): Give the PluginTest a chance to handle the event before doing anything
- else.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj: Added new file, let VS
- resort things.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFinishLoadForFrame): Added a call to WKBundlePageForceRepaint.
- This is roughly equivalent to the call to -[WebView displayIfNeeded] in -[FrameLoadDelegate
- webView:didFinishLoadForFrame:] in DumpRenderTree.
-
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView): Tell the WKView it's in a window so that plugins
- can start running.
-
-2011-02-28 Adam Roben <aroben@apple.com>
-
- Tell MiniBrowser's WKViews that they're in a window
-
- Fixes <http://webkit.org/b/55364> Plugins don't work in MiniBrowser on Windows
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create): Call WKViewSetIsInWindow after creating the view.
-
-2011-02-28 Alexis Menard <alexis.menard@openbossa.org>
-
- Reviewed by Csaba Osztrogonác.
-
- The new QML tests require QML_IMPORT_PATH variable to be set in order to
- load the proper plugin.
-
- * Scripts/run-qtwebkit-tests:
-
-2011-02-28 Joone Hur <joone.hur@collabora.co.uk>
-
- Unreviewed, fix spelling mistake.
-
- hardware-accelated => hardware-accelerated.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-02-28 Kristian Amlie <kristian.amlie@nokia.com>
-
- Reviewed by Andreas Kling.
-
- Made sure that the build-webkit --qmake argument is always respected.
-
- Previously, it would be respected during the build, but not during
- the early feature detection. The build would also fail if qmake was
- not in your path, even if you specified --qmake with a valid qmake
- binary.
-
- [Qt] WebKit patches required to work with a modularized version of Qt
- https://bugs.webkit.org/show_bug.cgi?id=53916
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
-
-2011-02-27 Ojan Vafai <ojan@chromium.org>
-
- Fix failing tests from http://trac.webkit.org/changeset/79837.
-
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- This was just a mistake that would break if someone tried printing with this configuration.
- * Scripts/webkitpy/layout_tests/layout_package/printing_unittest.py:
- Method signature changed. Didn't notice that this method was being calling in a unittest.
-
-2011-02-24 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Eric Seidel.
-
- [NRWT] Remove test_types/* classes.
-
- This is the last patch in the series of efforts which tried to remove test_types classes.
- A single_test_runner module will take over responsibilities of test_type classes.
-
- From this patch, we won't display statistics per test_type even if a '--verbose' option is given.
-
- https://bugs.webkit.org/show_bug.cgi?id=55123
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_results_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py:
- * Scripts/webkitpy/layout_tests/test_types/__init__.py: Removed.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py: Removed.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py: Removed.
- * Scripts/webkitpy/layout_tests/test_types/test_type_base_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py: Removed.
-
-2011-02-25 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- Change results.json format to the one used by unexpected_results.json
- https://bugs.webkit.org/show_bug.cgi?id=52267
-
- Also add runtimes in milliseconds to the JSON and make the output format more compact.
- Named the file full_results.json to avoid conflicting with the results.json
- file the test-results server currently serves up.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/printing.py:
- * Scripts/webkitpy/layout_tests/layout_package/result_summary.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_runner.py:
-
-2011-02-27 Adam Roben <aroben@apple.com>
-
- Followup fix to r79827
-
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::webViewAddMessageToConsole): Replaced call to urlSuitableForTestResult with
- lastPathComponent. This matches what we did here before r79827, and matches Mac.
-
-2011-02-27 Dan Bernstein <mitz@apple.com>
-
- Reviewed by Adam Roben.
-
- Make bisect-builds print a trac link for the regression range
- https://bugs.webkit.org/show_bug.cgi?id=55331
-
- * Scripts/bisect-builds:
-
-2011-02-27 Adam Roben <aroben@apple.com>
-
- Use iswalpha instead of isalpha when dealing with wchar_ts in EditingDelegate
-
- Fixes <http://webkit.org/b/55062> <rdar://problem/9059907> Crash beneath
- EditingDelegate::checkSpellingOfString when running fast/forms/input-text-maxlength.html or
- fast/forms/input-text-paste-maxlength.html on Windows with full page heap enabled
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/EditingDelegate.cpp:
- (indexOfFirstWordCharacter):
- (wordLength):
- Use iswalpha instead of isalpha, since TCHAR is really just wchar_t.
-
-2011-02-27 Adam Roben <aroben@apple.com>
-
- Make ResourceLoadDelegate print URLs relative to the main resource on Windows
-
- This matches Mac. (In fact, the code was ported from Mac!)
-
- Fixes <http://webkit.org/b/55328> URLs printed by ResourceLoadDelegate on Windows don't
- match Mac
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (substringFromIndex): Added. Emulates -[NSString substringFromIndex:].
- (urlSuitableForTestResult): Ported code from -[NSURL(DRTExtras)
- _drt_descriptionSuitableForTestResult].
- (cfStringRefToWString): Moved here from LayoutTestControllerWin.cpp.
-
- * DumpRenderTree/win/DumpRenderTreeWin.h: Added declaration of cfStringRefToWString.
-
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Moved cfStringRefToWString to
- DumpRenderTree.cpp.
-
-2011-02-27 Adam Roben <aroben@apple.com>
-
- Change the order of Chang Shu's email addresses so the first one is their Bugzilla username
-
- This makes Bugzilla autocompletion work correctly.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2011-02-27 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] fast/loader/user-stylesheet-fast-path.html fails
- https://bugs.webkit.org/show_bug.cgi?id=50911
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setUserStyleSheetLocation):
- Use QUrl::fromEncoded since the passed string is already encoded.
-
-2011-02-27 Adam Roben <aroben@apple.com>
-
- Ensure $testResultsDirectory is an absolute path before setting up Windows crash log saving
-
- Windows 7 (and maybe Vista?) launches the post-mortem debugger with a working directory that
- is different from old-run-webkit-test's. Because of this, the path to the crash log file
- (which is relative to $testResultsDirectory) must be an absolute path. See the bug for more
- details.
-
- Fixes <http://webkit.org/b/55318> Crash logs aren't saved on Windows 7 when a relative
- --results-directory path is used (like on the test slaves)
-
- Reviewed by Dan Bernstein.
-
- * Scripts/old-run-webkit-tests: Moved the call to setUpWindowsCrashLogSaving after we've
- made $testResultsDirectory an absolute path.
-
-2011-02-26 Dominic Mazzoni <dmazzoni@google.com>
-
- Reviewed by Adam Barth.
-
- m_dumpAccessibilityNotifications should be initialized.
- https://bugs.webkit.org/show_bug.cgi?id=54874
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::AccessibilityController):
-
-2011-02-26 Vsevolod Vlasov <vsevik@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- DumpRenderTree should reset frame opener between tests.
- https://bugs.webkit.org/show_bug.cgi?id=54874
-
- Added clearOpener() calls between tests.
- Some tests are using window.open() to change current window location.
- This changes window.opener property whose nullity is checked before
- showing xml viewer.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-02-26 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Fix the focus in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=55288
-
- Give focus to the web view when a load starts.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::urlChanged):
-
-2011-02-26 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Reviewed by Adam Barth.
-
- [EFL] Add coding style exceptions for EFL port
- https://bugs.webkit.org/show_bug.cgi?id=54733
-
- The EFL APIs use EFL naming style, which includes both lower-cased and camel-cased,
- underscore-sparated values. But, style checking rule have found parameter_name errors
- in efl directories so far.
-
- * Scripts/webkitpy/style/checker.py: Add prameter_name rule's exception and efl directories.
-
-2011-02-26 David Levin <levin@chromium.org>
-
- Reviewed by Darin Adler.
-
- check-webkit-style should check for spaces after periods in comments
- https://bugs.webkit.org/show_bug.cgi?id=55253
-
- * Scripts/webkitpy/style/checkers/cpp.py: Added the check.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added tests
- and fixed the name of one related test.
-
-2011-02-26 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Make it possible to test the targetdensity-dpi support
- https://bugs.webkit.org/show_bug.cgi?id=55142
-
- Test the viewport meta tag feature targetdensity-dpi by
- adding extra arguments to dumpConfigurationForViewport
-
- Add the new arguments to the shared header and all
- implementation.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (dumpConfigurationForViewportCallback):
- * DumpRenderTree/LayoutTestController.h:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::dumpConfigurationForViewport):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
-
-2011-02-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r79764.
- http://trac.webkit.org/changeset/79764
- https://bugs.webkit.org/show_bug.cgi?id=55295
-
- "broke Chromium builds" (Requested by rniwa on #webkit).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-02-26 Yongjun Zhang <yongjun_zhang@apple.com>
-
- Reviewed by David Kilzer.
-
- https://bugs.webkit.org/show_bug.cgi?id=48781
-
- Add a resource load delegate method to query if WebCore should paint the default broken image for failed images.
-
- Add a new resource load client method (shouldPaintBrokenImage). WebKit client can decide if WebCore
- should paint the default broken image when an image fails to load or decode.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setShouldPaintBrokenImageCallback):
- (LayoutTestController::staticFunctions):
- (LayoutTestController::setShouldPaintBrokenImage):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::shouldPaintBrokenImage):
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (-[ResourceLoadDelegate webView:shouldPaintBrokenImageForURL:]):
-
-2011-02-26 Vsevolod Vlasov <vsevik@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- DumpRenderTree should reset frame opener between tests.
- https://bugs.webkit.org/show_bug.cgi?id=54874
-
- Added clearOpener() calls between tests.
- Some tests are using window.open() to change current window location.
- This changes window.opener property whose nullity is checked before
- showing xml viewer.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-02-25 Lukasz Slachciak <l.slachciak@samsung.com>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [EFL] Added EWebLauncher command line option to turn on/off frame flattening
- https://bugs.webkit.org/show_bug.cgi?id=54809
-
- * EWebLauncher/main.c: Handling -f option added.
- (on_key_down):
- (browserCreate):
- (main):
-
-2011-02-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r79324.
- http://trac.webkit.org/changeset/79324
- https://bugs.webkit.org/show_bug.cgi?id=55260
-
- Leopard Debug is once again running out of address space while
- linking (Requested by aroben on #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-25 Tony Chang <tony@chromium.org>
-
- Reviewed by James Robinson.
-
- Clean up temp files left by crashing DRTs on chromium-win
- https://bugs.webkit.org/show_bug.cgi?id=55182
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/chromium/remove-crash-logs: Added.
-
-2011-02-25 Adam Roben <aroben@apple.com>
-
- Double-check that modifying the registry worked
-
- On Windows Vista/7 with UAC enabled, regtool will fail to modify the registry, but it will
- still return a successful exit code. So we double-check here that the value we tried to
- write to the registry was really written.
-
- Fixes <http://webkit.org/b/55227> old-run-webkit-tests falsely claims to be saving crash
- logs on Windows Vista/7
-
- Reviewed by Darin Adler.
-
- * Scripts/old-run-webkit-tests:
- (writeRegistryString): After trying to write the string value, check that it was really
- written.
-
-2011-02-25 Adam Roben <aroben@apple.com>
-
- Set the 32-bit post-mortem debugger on 64-bit OSes
-
- The post-mortem debugger is controlled by some registry values in
- HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug. On 64-bit OSes, you can either
- set the values in that key, which will be used for 64-bit apps, or in the equivalent key
- under Wow6432Node, which will be used for 32-bit apps. Since DumpRenderTree and
- WebKitTestRunner are 32-bit, we want to use the latter location.
-
- Fixes <http://webkit.org/b/55225> old-run-webkit-tests sets the post-mortem debugger for
- 64-bit apps, but should set it for 32-bit apps instead
-
- Reviewed by Darin Adler.
-
- * Scripts/old-run-webkit-tests:
- (readRegistryString):
- (writeRegistryString):
- Pass --wow32 to regtool so it will get/set values beneath Wow6432Node, which is where
- Windows looks for the post-mortem debugger values when a 32-bit app crashes on a 64-bit OS.
- Passing --wow32 on a 32-bit OS will not have any effect.
-
-2011-02-25 Adam Roben <aroben@apple.com>
-
- Clean up code to set up crash log saving on Windows
-
- Fixes <http://webkit.org/b/55224> old-run-webkit-test's Windows registry code is ugly
-
- Reviewed by David Kilzer.
-
- * Scripts/old-run-webkit-tests:
- (readRegistryString):
- (writeRegistryString):
- Moved code to read strings from and write strings to the registry here...
-
- (setUpWindowsCrashLogSaving): ...from here.
-
-2011-02-25 Adam Roben <aroben@apple.com>
-
- Work around Cygwin's crash-suppression behavior
-
- Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which any processes it launches will
- inherit. This is bad for testing/debugging, as it causes the post-mortem debugger not to be
- invoked. (Cygwin does this because it makes crashes more UNIX-y.) We reset the error mode
- when our test apps launch to work around Cygwin's behavior.
-
- Fixes <http://webkit.org/b/55222> Test apps crash silently (without invoking post-mortem
- debugger) when launched from Cygwin 1.7
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (main):
- * TestWebKitAPI/win/main.cpp:
- (main):
- * WebKitAPITest/main.cpp:
- (main):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformInitialize):
- Call ::SetErrorMode(0) to undo Cygwin's folly.
-
-2011-02-24 Jocelyn Turcotte <jocelyn.turcotte@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Revert the support for QNAM affined to a different thread.
- https://bugs.webkit.org/show_bug.cgi?id=55149
-
- Qt 4.8 will have QNAM use its own thread internally by default,
- no need to keep this complexity in WebKit.
-
- This mainly reverts:
- http://trac.webkit.org/changeset/73710
- http://trac.webkit.org/changeset/73712
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::~LauncherWindow):
- (LauncherWindow::initializeView):
- (LauncherWindow::createChrome):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- * QtTestBrowser/webpage.cpp:
- (WebPage::WebPage):
- * QtTestBrowser/webpage.h:
-
-2011-02-24 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Add a script for creating gypi files
- https://bugs.webkit.org/show_bug.cgi?id=55113
-
- This is a trivial script to create gypi files from the source code in
- the current directory.
-
- * Scripts/make-gypi: Added.
-
-2011-02-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r79628.
- http://trac.webkit.org/changeset/79628
- https://bugs.webkit.org/show_bug.cgi?id=55195
-
- "broke chromium win tests" (Requested by dpranke on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
-
-2011-02-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- rebaseline-chromium-webkit-tests can't handle GPU variants
- https://bugs.webkit.org/show_bug.cgi?id=55002
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-02-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- nrwt: log command used to start web server to --verbose
-
- https://bugs.webkit.org/show_bug.cgi?id=55188
-
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2011-02-24 Victoria Kirst <vrk@google.com>
-
- Reviewed by Mihai Parparita.
-
- [chromium] Move media-file.js and video-test.js back to media/ for UILayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=55089
-
- This adds an alias into the media/ directory so that http/tests/media
- tests can access the media resources when running in an httpd process.
-
- * Scripts/webkitperl/httpd.pm:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2011-02-24 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- nrwt: enable multiple processes by default on Chromium Win.
-
- https://bugs.webkit.org/show_bug.cgi?id=55163
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
-
-2011-02-24 Sam Weinig <sam@webkit.org>
-
- Attempt to fix Qt.
-
- * WebKitTestRunner/TestInvocation.cpp:
-
-2011-02-24 James Robinson <jamesr@chromium.org>
-
- Unreviewed, rolling out r79598.
- http://trac.webkit.org/changeset/79598
- https://bugs.webkit.org/show_bug.cgi?id=55089
-
- Appears to be causing trouble with httpd on windows
-
- * Scripts/webkitperl/httpd.pm:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2011-02-24 Sam Weinig <sam@webkit.org>
-
- Reviewed by Darin Adler.
-
- Add basic pixel testing support to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=55161
-
- * Scripts/old-run-webkit-tests:
- Don't print color space information when using WebKitTestRunner since
- we don't need to change the screen.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- Add call to initializePlatformDefaults.
-
- (WTR::InjectedBundle::done):
- Return a dictionary on completion with both the text output and pixel dump override.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- Add declaration for initializePlatformDefaults.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- (WTR::LayoutTestController::dumpAsText):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::shouldDumpPixels):
- Make setting dumpAsText override the dump pixels preference.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm: Added.
- (WTR::InjectedBundle::initializePlatformDefaults):
- Set platform defaults matching DumpRenderTree.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp: Added.
- (WTR::InjectedBundle::initializePlatformDefaults):
- * WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp: Added.
- (WTR::InjectedBundle::initializePlatformDefaults):
- Add stubs for initializePlatformDefaults.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runTest):
- (WTR::TestController::runTestingServerLoop):
- (WTR::TestController::run):
- Parse expected pixel results out of stdin and setup the invocation with it.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- Initialize new members.
-
- (WTR::TestInvocation::~TestInvocation):
- (WTR::TestInvocation::setIsPixelTest):
- (WTR::sizeWebViewForCurrentTest):
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- Dump pixels in addition to text by calling dumpPixelsAndCompareWithExpected.
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- Use -[NSColorSpace genericRGBColorSpace] instead of the main screen color space.
-
- * WebKitTestRunner/mac/TestInvocationMac.mm: Added.
- (WTR::createCGContextFromPlatformView):
- (WTR::computeMD5HashStringForContext):
- (WTR::dumpBitmap):
- (WTR::forceRepaintFunction):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- Add mac specific pixel dumping support. Right now, we always pull pixels
- from the window server.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
- Add new files.
-
-2011-02-24 Chang Shu <cshu@webkit.org>
-
- Reviewed by Kenneth Rohde Christiansen.
-
- [Qt] Launch MiniBrowser if the test run is WebKit2.
- https://bugs.webkit.org/show_bug.cgi?id=55145
-
- * Scripts/old-run-webkit-tests:
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
-
-2011-02-24 Victoria Kirst <vrk@google.com>
-
- Reviewed by Mihai Parparita.
-
- [chromium] Move media-file.js and video-test.js back to media/ for UILayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=55089
-
- This adds an alias into the media/ directory so that http/tests/media
- tests can access the media resources when running in an httpd process.
-
- * Scripts/webkitperl/httpd.pm:
- * Scripts/webkitpy/layout_tests/port/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/port/http_server.py:
-
-2011-02-24 Andrew Wilson <atwilson@chromium.org>
-
- Unreviewed, rolling out r79570.
- http://trac.webkit.org/changeset/79570
- https://bugs.webkit.org/show_bug.cgi?id=54874
-
- Breaks chromium build because glue/mocks/mock_web_frame.h/cc
- was not updated
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-02-24 Mahesh Kulkarni <mahesh.kulkarni@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] add android 2.2 user agent to QtTestBrowser
- https://bugs.webkit.org/show_bug.cgi?id=55085
-
- Credit to Forrest Hodgkins to find right user-agent which works for youtube.
- * QtTestBrowser/useragentlist.txt:
-
-2011-02-24 Adam Roben <aroben@apple.com>
-
- Change FrameLoadDelegate to support any number of delegates with delayed work to process
-
- This makes our behavior match Mac more closely, and allows us to remove an incorrect
- assertion that was firing during some tests. (The assertion was claiming that there was
- never more than one delegate with delayed work to process, but that was not the case.)
-
- Fixes <http://webkit.org/b/55146> Assertion failure in FrameLoadDelegate::locationChangeDone
- when running http/tests/navigation/back-twice-without-commit.html
-
- Reviewed by Eric Carlson.
-
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (delegatesWithDelayedWork): Added. Returns all FrameLoadDelegates that have delayed work to
- process. A single delegate may appear in this Vector more than once (just as, on Mac, a
- single delegate may have multiple performSelector requests).
- (processWorkTimer): Pass the HWND to ::KillTimer, for pedantic brownie points. Added an
- assertion that the timer firing is the shared process work timer. Instead of using the
- single, global "delegate waiting for timer" delegate, give all delegates that have delayed
- work to process a chance to process their work.
- (FrameLoadDelegate::locationChangeDone): If we don't already have an active timer for
- processing delayed work, create one. Then add ourselves to the delegatesWithDelayedWork
- Vector so our processWork function will be called when the timer fires.
-
-2011-02-24 Vsevolod Vlasov <vsevik@chromium.org>
-
- Reviewed by Alexey Proskuryakov.
-
- DumpRenderTree should reset frame opener between tests.
- https://bugs.webkit.org/show_bug.cgi?id=54874
-
- Added clearOpener() calls between tests.
- Some tests are using window.open() to change current window location.
- This changes window.opener property whose nullity is checked before
- showing xml viewer.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::reset):
-
-2011-02-24 Adam Roben <aroben@apple.com>
-
- Don't trigger Windows builds for changes to WebCore.exp.in or the top-level GNUmakefile.am
-
- Fixes <http://webkit.org/b/55144> Windows builders should not have built r79343 or r79440,
- but did
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Loosened the pattern for GNUmakefile.am to include the
- top-level GNUmakefile.am, and loosened the pattern for .exp files to include WebCore.exp.in.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): Added some more tests.
-
-2011-02-24 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] MinGW build fails to link
- https://bugs.webkit.org/show_bug.cgi?id=55050
-
- Prepend the libraries of subcomponents instead of appending them
- to fix the library order according to the dependency of the libraries
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro:
- * WebKitTestRunner/qt/WebKitTestRunner.pro:
-
-2011-02-24 Gabor Loki <loki@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] Remove ARMv5 Release buildbot.
-
- Remove ARMv5 Release buildbot, because there is very little difference
- between ARMv5 and ARMv7 Release bots, and there is also very little
- interest in ARMv5 build slave (compared to ARMv7).
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-22 Ojan Vafai <ojan@chromium.org>
-
- Reviewed by Tony Chang.
-
- fix revision number finding when creating git patches
- https://bugs.webkit.org/show_bug.cgi?id=55024
-
- HEAD~n does not walk merge commits correctly. git log however does.
-
- * Scripts/webkitpy/common/checkout/scm.py:
- * Scripts/webkitpy/common/checkout/scm_unittest.py:
-
-2011-02-23 Kenneth Russell <kbr@google.com>
-
- Unreviewed, rolling out r79387.
- https://bugs.webkit.org/show_bug.cgi?id=54885
-
- Reapply the code changes from r79038 since they weren't the root
- cause of the test timeouts.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
-
-2011-02-23 Siddharth Mathur <siddharth.mathur@nokia.com>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Make sure Symbian binary UIDs are unique
-
- * MiniBrowser/qt/MiniBrowser.pro: Resolve the UID collision with
- QtTestBrowser.pro by changing the UID.
-
-2011-02-23 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Darin Adler.
-
- Rename PLATFORM(CF) to USE(CF)
- https://bugs.webkit.org/show_bug.cgi?id=53540
-
- * DumpRenderTree/config.h:
-
-2011-02-23 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- nrwt: turn on multiprocessing on chromium_linux, clean up unit tests for worker model defaults
- https://bugs.webkit.org/show_bug.cgi?id=55016
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py: Added.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2011-02-23 Tony Chang <tony@chromium.org>
-
- Reviewed by Kent Tamura.
-
- [chromium] DumpRenderTree --check-layout-test-sys-deps leaks 4 temp dirs
- https://bugs.webkit.org/show_bug.cgi?id=55004
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (WebKitSupportTestEnvironment::WebKitSupportTestEnvironment):
- (WebKitSupportTestEnvironment::~WebKitSupportTestEnvironment):
- (main): Use a C++ object to ensure that TearDownTestEnvironment
- gets called when --check-layout-test-sys-deps is called
-
-2011-02-23 Gopal Raghavan <gopal.1.raghavan@nokia.com>
-
- Reviewed by Anders Carlsson.
-
- [Qt] [Qt] check webkit style fails in qt/tests
- https://bugs.webkit.org/show_bug.cgi?id=54998
-
- check-webkit-style was complaining about missing config.h in WebKit/qt/test/qdeclarativewebview. This patch was originally part of 50222. Reviewer suggested to split and create a separate patch for checker.
-
- * Scripts/webkitpy/style/checker.py:
-
-2011-02-22 Vsevolod Vlasov <vsevik@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- DumpRenderTree should dump as text if test path contains "dumpAsText/"
- https://bugs.webkit.org/show_bug.cgi?id=54873
-
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController::setShouldDumpAsText):
- (LayoutTestController::setShouldGeneratePixelResults):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (shouldDumpAsText):
- (dump):
- (runTest):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (shouldDumpAsText):
- (runTest):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::isDumpAsTextTest):
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (shouldDumpAsText):
- (runTest):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
-
-2011-02-22 Kenneth Russell <kbr@google.com>
-
- Reviewed by James Robinson.
-
- Many tests started timing out on the chrome mac canaries around r79035
- https://bugs.webkit.org/show_bug.cgi?id=54885
-
- Revert the code changes, but not the Chromium DEPS roll, from
- r79038 to see whether this clears up the timing-out tests. Was not
- able to reproduce the timeouts locally with a Release mode build
- of DRT (on Snow Leopard).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
-
-2011-02-22 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by James Robinson.
-
- nrwt: --platform chromium-gpu doesn't work with --worker-model=processes
- https://bugs.webkit.org/show_bug.cgi?id=55009
-
- * Scripts/webkitpy/layout_tests/port/chromium_gpu.py:
-
-2011-02-18 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Default to 500 for --exit-after-n-failures
- https://bugs.webkit.org/show_bug.cgi?id=54773
-
- Make 500 the default value for --exit-after-n-failures (ORWT bots
- already default to this as of r75726). Similarly, change the default for
- --exit-after-n-crashes-or-timeouts to 20.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2011-02-02 Martin Robinson <mrobinson@igalia.com>
-
- Reviewed by Xan Lopez.
-
- [GTK] DRT needs an implementation of LayoutTestController.setSelectTrailingWhitespace
- https://bugs.webkit.org/show_bug.cgi?id=53603
-
- Add support for LayoutTestController.setSelectTrailingWhitespace by calling through
- to DumpRenderTreeSupportGtk for this functionality.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Always call LayoutTestController.setSelectTrailingWhitespace to
- false when reseting values between tests.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setSelectTrailingWhitespaceEnabled): Call LayoutTestController.setSelectTrailingWhitespace
- with the appropriate value.
-
-2011-02-22 Adam Roben <aroben@apple.com>
-
- Don't trigger a Windows build when the top-level ChangeLog changes
-
- r79320 is an example of a change that shouldn't have built on Windows, but did, because of
- this bug.
-
- Fixes <http://webkit.org/b/54957> Windows bots build when top-level ChangeLog changes, but
- shouldn't
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build): Modified the ChangeLog pattern to match the top-level
- ChangeLog, and re-sorted it in the list.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): Added a test that ChangeLogs don't trigger builds.
-
-2011-02-22 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r78691.
- http://trac.webkit.org/changeset/78691
- https://bugs.webkit.org/show_bug.cgi?id=54956
-
- Leopard Debug is successfully building again (Requested by
- aroben on #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-22 Ilya Tikhonovsky <loislo@chromium.org>
-
- Reviewed by Pavel Feldman.
-
- Web Inspector: flakyness of inspector tests.
- https://bugs.webkit.org/show_bug.cgi?id=54729
-
- As far as we have the protocol with sequence numbers we can simplify test harness support
- and drop out chomium specific methods.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- (DRTDevToolsAgent::sendMessageToInspectorFrontend):
- (DRTDevToolsAgent::runtimePropertyChanged):
- (DRTDevToolsAgent::asyncCall):
- (DRTDevToolsAgent::call):
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.cpp: Removed.
- * DumpRenderTree/chromium/DRTDevToolsCallArgs.h: Removed.
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::sendMessageToBackend):
- (DRTDevToolsClient::asyncCall):
- (DRTDevToolsClient::call):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
-
-2011-02-22 Andras Becsi <abecsi@webkit.org>
-
- Reviewed by Laszlo Gombos.
-
- [Qt] Redesign the build system
- https://bugs.webkit.org/show_bug.cgi?id=51339
-
- Part 2.
-
- Build WebCore as a static library, compile the WebKit API and WebKit2 API
- in a final step and link to WebKit2, WebCore and JSC libraries to fix
- linking issues resulting from stripped away symbols.
-
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundle.pro: Remove superfluous includepaths.
-
-2011-02-21 Lukasz Slachciak <l.slachciak@samsung.com>
-
- Reviewed by Antonio Gomes.
-
- [EFL] Restored spatial navigation option in EWebLauncher since #18662 bug is closed
- https://bugs.webkit.org/show_bug.cgi?id=54806
-
- * EWebLauncher/main.c:
- (on_key_down): calling ewk_view_setting_spatial_navigation_set when "F12" pressed added.
-
-2011-02-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Kent Tamura.
-
- nrwt: revert behavior on 10.5 to "old-threads". It's possible
- that r79062 has introduced a bunch of flakiness, although I
- can't explain why right now. This change should restore the
- old behavior, and then we can look at the build logs to see
- if the tests stop timing out or being flaky.
-
- https://bugs.webkit.org/show_bug.cgi?id=54925
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-02-21 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Dimitri Glazkov.
-
- nrwt: fix typo causing us to try and repeatedly shut down the servers
- https://bugs.webkit.org/show_bug.cgi?id=54904
-
- * Scripts/webkitpy/layout_tests/layout_package/worker_mixin.py:
-
-2011-02-21 Alejandro G. Castro <alex@igalia.com>
-
- Reviewed by Csaba Osztrogonác.
-
- REGRESSION(r79157):
- plugins/get-url-with-javascript-destroying-plugin.html make the
- next test crash
- https://bugs.webkit.org/show_bug.cgi?id=54863
-
- * GNUmakefile.am:
-
-2011-02-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- test-webkitpy: stop skipping a bunch of tests on win32
- https://bugs.webkit.org/show_bug.cgi?id=54788
-
- * Scripts/webkitpy/common/net/testoutputset_unittest.py:
- * Scripts/webkitpy/test/main.py:
-
-2011-02-20 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Fix various bugs related to handling of dir separators and real
- vs. fake filesystems that were causing test-webkitpy to fail
- tests on win32. These bugs have a variety of causes but are
- lumped together because they should be easy to review.
-
- https://bugs.webkit.org/show_bug.cgi?id=54700
-
- * Scripts/webkitpy/common/net/testoutput.py:
- Here we were using os.path.sep but not escaping it prior to
- using in a regexp, which caused bad things on win32.
- * Scripts/webkitpy/common/net/testoutput_unittest.py:
- Same here.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- Here we were using the native filesystem instead of the mock
- filesystem, making some tests unnecessarily platform dependent.
- Also we weren't setting the default configuration for the
- TestChromiumWinPort.
- * Scripts/webkitpy/layout_tests/update_webgl_conformance_tests.py:
- Here we *shouldn't* use os.path.join(), just so the code becomes
- less platform dependent.
- * Scripts/webkitpy/style/checker.py:
- Here we should be using os.path.sep instead of "/"; the tests
- require the native filesystem.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- Here the underlying code is using os.path.sep, so we probably
- should as well.
- * Scripts/webkitpy/style/test_expectations_unittest.py:
- Here we should be using the filesystem hanging of the port
- object (which is the mocked filesystem) rather than the native
- one.
-
-2011-02-20 Anders Carlsson <andersca@apple.com>
-
- Reviewed by Maciej Stachowiak.
-
- Crash when a plug-in requests a javascript: url that destroys the plug-in
- https://bugs.webkit.org/show_bug.cgi?id=54837
- <rdar://problem/9005475>
-
- Add new plug-in test.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_GetURL):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- * DumpRenderTree/TestNetscapePlugIn/Tests/GetURLWithJavaScriptURLDestroyingPlugin.cpp: Added.
- (GetURLWithJavaScriptURLDestroyingPlugin::GetURLWithJavaScriptURLDestroyingPlugin):
- (GetURLWithJavaScriptURLDestroyingPlugin::NPP_New):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2011-02-19 Patrick Gansterer <paroga@webkit.org>
-
- Reviewed by Andreas Kling.
-
- Make WinCE a core builder
- https://bugs.webkit.org/show_bug.cgi?id=54801
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
-
-2011-02-19 Lukasz Slachciak <l.slachciak@samsung.com>
-
- Reviewed by Andreas Kling.
-
- Fixed problem with launching EWebLauncher with "run-launcher --efl". Incorrect path referring to non-existing .libs directory ws set.
- https://webkit.org/b/54778
-
- * Scripts/webkitdirs.pm:
-
-2011-02-18 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style: Misses brace style error when the line with the { has a } in it.
- https://bugs.webkit.org/show_bug.cgi?id=54769
-
- * Scripts/webkitpy/style/checkers/cpp.py: Fixed the check for the close brace
- to only look after the last open brace, so that the open brace in this line
- "} else {" will still be able to trigger the error.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added related unit tests.
-
-2011-02-18 Zan Dobersek <zandobersek@gmail.com>
-
- Reviewed by Martin Robinson.
-
- [Gtk] Re-enable meter tag support
- https://bugs.webkit.org/show_bug.cgi?id=54762
-
- Meter tag is supported on the Gtk port, enable it by default.
-
- * Scripts/build-webkit:
-
-2011-02-18 David Levin <levin@chromium.org>
-
- Reviewed by Eric Seidel.
-
- check-webkit-style falsely complains about WebKitGTK+ public headers
- https://bugs.webkit.org/show_bug.cgi?id=54650
-
- * Scripts/webkitpy/style/checker.py: Add some exceptions for the gtk files.
- * Scripts/webkitpy/style/checkers/cpp.py: Restrict the checks for WEBKIT_API
- to the chromium directory (and improved the checks slightly).
- * Scripts/webkitpy/style/checkers/cpp_unittest.py: Added corresponding tests.
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by James Robinson.
-
- new-run-webkit-tests: enable multiple processes by default on
- mac. This change removes the artificial restrictions we placed
- on the # of child processes we used with the old threading
- model, and switches to the new message-based model and multiple
- processes, where available. If multiple processes are not
- available (Leopard / Python 2.5), then we use the 'inline' model
- instead of the 'old-threads' model on the 'mac' port or one
- process on the 'chromium-mac' port. We need additional testing
- to see if the new 'threads' model works reliably and is worth
- supporting, or if we should just live with things being slightly
- slow.
-
- https://bugs.webkit.org/show_bug.cgi?id=54596
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-18 Andrew Wilson <atwilson@chromium.org>
-
- Unreviewed, rolling out r79047.
- http://trac.webkit.org/changeset/79047
- https://bugs.webkit.org/show_bug.cgi?id=54596
-
- Broke canary bots - please watch the canaries the next time
- you land this
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-02-18 Emil A Eklund <eae@chromium.org>
-
- Reviewed by Darin Adler.
-
- Crash in EventHandler::sendContextMenuEventForKey
- https://bugs.webkit.org/show_bug.cgi?id=54495
-
- Add support for the context menu key (VK_APPS) to EventSender for
- platforms that support the key.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/gtk/EventSender.cpp:
- (keyDownCallback):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::keyDown):
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- new-run-webkit-tests: enable multiple processes by default on mac
- https://bugs.webkit.org/show_bug.cgi?id=54596
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Skip pretty patch unit tests if ruby isn't installed.
-
- https://bugs.webkit.org/show_bug.cgi?id=54699
-
- * Scripts/webkitpy/common/prettypatch_unittest.py:
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Skip mac.test_skipped_file_paths() when running on win32; the
- test has hardcoded '/' directory separators and since it's a
- port-specific test and we have coverage on other ports it's not
- worth it to make the test more generic.
-
- https://bugs.webkit.org/show_bug.cgi?id=54698
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Fix webkitpy.layout_tests.port.config_unittest to work on Win32.
-
- https://bugs.webkit.org/show_bug.cgi?id=54703
-
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Change the default port we're mocking out on win32 when we
- run mock_drt_unittest. Normally we'd default to the
- port-specific default, but that would be "win", which doesn't
- currently work.
-
- https://bugs.webkit.org/show_bug.cgi?id=54708
-
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
-
-2011-02-18 Kenneth Russell <kbr@google.com>
-
- Reviewed by James Robinson.
-
- [chromium] Clean up initialization of minimum timer interval
- https://bugs.webkit.org/show_bug.cgi?id=54772
-
- Use new GetForegroundTabTimerInterval function in webkit_support
- to reset the minimum timer interval before each test.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- r78494 fixed the chromium_win unittest failing under win32,
- but not cygwin. This fixes cygwin as well.
-
- https://bugs.webkit.org/show_bug.cgi?id=54652
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
-
-2011-02-18 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai, Mihai Parparita.
-
- new-run-webkit-tests: r78522 made it impossible to create a
- 'chromium-win' or 'chromium-mac' port; they would always get the
- version tacked on to the end. It turns out that we actually need
- to be able to create these ports in order for
- rebaseline-chromium-webkit-tests to work correctly given the
- broken coverage of our layout bots. As soon as we get SL and
- Win 7 bots running reliably on the canaries, we can get rid of
- this change. Note that we only need to change the chromium_mac
- and win ports because linux doesn't yet use versions and that
- script doesn't work with non-chromium ports.
-
- Also, this change fixes a bug where we were using
- "platform/chromium-win-win7" and
- "platform/chromium-mac-snowleopard" as the baseline dirs for
- Win 7 and SL; we should've been using the generic directories
- instead since they are the newest versions of the os's.
-
- https://bugs.webkit.org/show_bug.cgi?id=54691
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/rebaseline_chromium_webkit_tests.py:
-
-2011-02-16 MORITA Hajime <morrita@google.com>
-
- Reviewed by Kent Tamura.
-
- [Chromium][DRT] some PostDelayedTask() accesses possibly dangling this pointer.
- http://webkit.org/b/53899
-
- Replaced static invocation wrappers with MethodTask objects,
- which are removed on WebViewHost destructor.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestCheckingOfText):
- (WebViewHost::scheduleAnimation):
- (WebViewHost::closeWidgetSoon):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost::HostMethodTask::HostMethodTask):
- (WebViewHost::HostMethodTask::runIfValid):
- (WebViewHost::taskList):
-
-2011-02-07 Hayato Ito <hayato@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Get rid of code which writes test results from test_type's
- compare_output() method.
- Writing test results now happens in single_test_runner, using
- newly introduced test_result_writer module.
-
- Subsequent patches will eliminate test_type/* classes.
-
- https://bugs.webkit.org/show_bug.cgi?id=53908
-
- * Scripts/webkitpy/layout_tests/layout_package/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/layout_package/test_result_writer.py: Added.
- * Scripts/webkitpy/layout_tests/test_types/image_diff.py:
- * Scripts/webkitpy/layout_tests/test_types/test_type_base.py:
- * Scripts/webkitpy/layout_tests/test_types/text_diff.py:
-
-2011-02-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Add blacklist of remaining webkitpy/* modules that fail on
- Win32, so that test-webkitpy will at least run cleanly.
-
- https://bugs.webkit.org/show_bug.cgi?id=54709
-
- * Scripts/webkitpy/layout_tests/test/main.py:
-
-2011-02-17 Simon Fraser <simon.fraser@apple.com>
-
- Reviewed by Sam Weinig.
-
- Set a preference to ensure that scrollbars are in a predictable
- state for DRT.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2011-02-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- test-webkitpy doesn't work with the multiprocessing module on win32
- or cygwin, so we skip it for now.
-
- https://bugs.webkit.org/show_bug.cgi?id=54520
-
- * Scripts/webkitpy/layout_tests/layout_package/manager_worker_broker_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/run_webkit_tests_unittest.py:
-
-2011-02-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Adam Roben.
-
- Fix version, baseline_search_path for chromium-win-win7. Also
- fix chromium_win_unittests, and fix port_testcase.make_port()
- to correctly use the options passed into it and only set
- results_directory() if necessary.
-
- https://bugs.webkit.org/show_bug.cgi?id=54652
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
-
-2011-02-17 Dirk Pranke <dpranke@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- Fix a hang in new-run-webkit-tests when run with
- --dry-run --worker-model=processes
-
- https://bugs.webkit.org/show_bug.cgi?id=54595
-
- * Scripts/webkitpy/layout_tests/layout_package/test_runner2.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_unittest.py:
-
-2011-02-17 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Build fixes after recent changes.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setMinimumTimerInterval):
- * wx/build/settings.py:
-
-2011-02-17 Csaba Osztrogonác <ossy@webkit.org>
-
- Reviewed by Andreas Kling.
-
- [Qt] ImageDiff sometimes hangs
- https://bugs.webkit.org/show_bug.cgi?id=54641
-
- * DumpRenderTree/qt/ImageDiff.cpp: Clear actualImage and baselineImage after all comparison.
- (main):
-
-2011-02-17 Peter Varga <pvarga@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- The run-sunspider --v8-suite doesn't work
- https://bugs.webkit.org/show_bug.cgi?id=54660
-
- * Scripts/run-sunspider:
-
-2011-02-17 Gabor Rapcsanyi <rgabor@webkit.org>
-
- Reviewed by Csaba Osztrogonác.
-
- [NRWT] Fix environment setup on Qt port.
- https://bugs.webkit.org/show_bug.cgi?id=54549
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
-
-2011-02-16 Yael Aharon <yael.aharon@nokia.com>
-
- Reviewed by Andreas Kling.
-
- [Qt] Enable tiled backing store by default in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=54581
-
- Instead of a flag to turn it on, a new flag is defined to turn
- tiled backing store off.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions::WindowOptions):
-
-2011-02-16 Eric Seidel <eric@webkit.org>
-
- Reviewed by Mihai Parparita.
-
- flaky test archive uploads are always 22 bytes long
- https://bugs.webkit.org/show_bug.cgi?id=54593
-
- Speculative fix for the 22-bytes bug.
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
-
-2011-02-16 Anna Cavender <annacc@chromium.org>
-
- Reviewed by Mihai Parparita.
-
- http/tests/media should be served over HTTP (not from local file)
- https://bugs.webkit.org/show_bug.cgi?id=54028
-
- Removed special file:// treatment of http/tests/media
-
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/base.py:
-
-2011-02-16 Mihai Parparita <mihaip@chromium.org>
-
- Reviewed by Ojan Vafai.
-
- ChangeLog.parse_latest_entry_from_file does not handle rolled over ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=54609
-
- r78737 rolled over ChangeLogs, and webkit-patch complains when landing
- patches such as this one that are the first to add an entry to the
- ChangeLog (since they don't see a second date line to know where the
- entry ends).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
-
-== Rolled over to ChangeLog-2011-02-16 ==
diff --git a/Tools/ChangeLog-2012-10-02 b/Tools/ChangeLog-2012-10-02
deleted file mode 100644
index 017168e35..000000000
--- a/Tools/ChangeLog-2012-10-02
+++ /dev/null
@@ -1,28362 +0,0 @@
-2012-10-02 Daniel Bates <dbates@webkit.org>
-
- Define watch list "webkitperl", "SVNScripts", and "XSS" to watch for changes
- to Tools/Scripts/{VCSUtils.pm, webkitdirs.pm, webkitperl}, Tools/Scripts/svn-*
- scripts, and files whose name contains the word "XSS", respectively. Subscribe
- myself to these lists.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-02 Roger Fong <roger_fong@apple.com>
-
- executive_unittest.py fails on Apple Windows bots but not when run locally.
- https://bugs.webkit.org/show_bug.cgi?id=98196
-
- Reviewed by Eric Seidel.
-
- Making the test more flexible to check for cygwin and allow different outputs from process.wait().
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.serial_test_kill_process):
-
-2012-10-02 Roger Fong <roger_fong@apple.com>
-
- Ignore failing line of SpacebarScrolling API test on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=84961
-
- Reviewed by Anders Carlsson.
-
- Test is failing because of https://bugs.webkit.org/show_bug.cgi?id=97946.
- Ignoring the line that fails on Windows for now until the larger problem at hand is fixed.
-
- * TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp:
- (TestWebKitAPI::TEST):
-
-2012-10-02 Tony Chang <tony@chromium.org>
-
- check-webkit-style can't handle qt-arm, qt-win, qt-mac, qt-5.0, qt-5.0-wk1 and qt-5.0-wk2 TestExpecatations
- https://bugs.webkit.org/show_bug.cgi?id=98140
-
- Reviewed by Eric Seidel.
-
- Fix a bug where we were always using the host OS rather than using what was passed in as part of the
- port name on Qt.
-
- There's also a bug with being able to test for qt-5.0 expectations files when on a system with
- Qt 4.8 installed. I'm not sure how to solve that, so for now, stop emitting a style warning about
- not checking a file.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._search_paths): Use passed in OS.
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check): Don't warn if we don't know about the TestExpectations file.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_determine_port_from_expectations_path): Added a test case for the OS fix.
- Add a commented out test for the version case.
-
-2012-10-02 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Remove the last bits of MSYS support from webkitperl.
- https://bugs.webkit.org/show_bug.cgi?id=98195
-
- Reviewed by Eric Seidel.
-
- No ports currently need MinGW/MSYS support, so remove the last
- hackish bits related to it from our Perl code.
-
- * Scripts/commit-log-editor:
- (createCommitMessage):
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitdirs.pm:
- (isAnyWindows):
- (isWindows):
-
-2012-10-02 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Remove MSYS-related changes to the http testing infrastructure.
- https://bugs.webkit.org/show_bug.cgi?id=98183
-
- Reviewed by Eric Seidel.
-
- In the process of removing the cruft that has accumulated in our
- Apache configuration code, we can basically revert r77161 which
- added some MSYS (mingw)-specific code to old-run-webkit-tests,
- since it is not being used by any port anymore.
-
- * Scripts/run-webkit-httpd: Remove isMsys()-dependent hacks.
- * Scripts/webkitperl/httpd.pm:
- (getHTTPDPath): Remove isMsys() code path.
- (getDefaultConfigForTestDirectory): Revert isMsys() hacks.
- (getHTTPDConfigPathForTestDirectory): Do not point to the noew
- removed apache2-msys-httpd.conf.
- (convertMsysPath): Removed.
-
-2012-10-02 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Make sure the touch-points in the touch-events have the correct state.
- https://bugs.webkit.org/show_bug.cgi?id=98110
-
- Reviewed by Adam Barth.
-
- TestWebPlugin can now be configured to print out some details about
- events. For now, details for only touch events are printed. This is
- used to verify that touch-points in the touch-events are properly
- set.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (pointState):
- (printTouchList):
- (printEventDetails):
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::handleInputEvent):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
-
-2012-10-02 Zan Dobersek <zandobersek@gmail.com>
-
- [XvfbDriver] First tests in each worker occasionally crash
- https://bugs.webkit.org/show_bug.cgi?id=96203
-
- Reviewed by Dirk Pranke.
-
- Often in debug builds, the first tests in each worker crash because they
- can't yet open the Xvfb display assigned to them. This indicates Xvfb hasn't
- yet been set up.
-
- To avoid this, the execution should halt for a small amount of time before tests
- are run so the Xvfb process has enough time to get ready. At the moment this is
- done right after the Xvfb process is spawned and the execution halts for one
- second. That value is overriden to zero when testing to not prolong the testing time.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver.__init__):
- (XvfbDriver._start):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.make_driver):
-
-2012-10-02 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Use XvfbDriver for layout tests
- https://bugs.webkit.org/show_bug.cgi?id=98162
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Use XvfbDriver for layout tests on EFL port.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start): Set DUMPRENDERTREE_TEMP and LOCAL_RESOURCE_ROOT
- environment variables in XvfbDriver as those are needed for
- TestRunner::pathToLocalResource().
-
-2012-10-02 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Several tests launch g_object_ref/unref assertion messages
- https://bugs.webkit.org/show_bug.cgi?id=95062
-
- Reviewed by Martin Robinson.
-
- Only increase and decrease reference count of the accessibility
- UI element if it actually exists.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
-
-2012-10-02 Douglas Stockwell <dstockwell@chromium.org>
-
- [chromium] running layout tests on mountainlion should use chromium TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=98119
-
- Reviewed by Adam Barth.
-
- Some basic support for mountainlion has already been committed but it failed to refer
- to the chromium TestExpectations.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_all_test_configurations):
-
-2012-10-02 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- webkitpy: Stop listening on port 8081 when using Apache.
- https://bugs.webkit.org/show_bug.cgi?id=98155
-
- Reviewed by Eric Seidel.
-
- No test currently uses this port, and the lighttpd configuration
- does not open it.
-
- This helps the efforts of bringing some consistency to the Apache
- configuration at the moment by opening the same ports in the
- webkitpy side and in the httpd.conf side (the idea is to remove
- the httpd.conf side later), and also makes the behavior consistent
- across the two servers we currently support.
-
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd.__init__):
-
-2012-10-02 Csaba Osztrogonác <ossy@webkit.org>
-
- [WK2] REGRESSION(r128623): It made layout tests extremely slow
- https://bugs.webkit.org/show_bug.cgi?id=96862
-
- Reviewed by Simon Hausmann.
-
- Disable calling the extremely slow WKBundleSetDatabaseQuota() between tests until proper fix.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2012-10-02 Philip Rogers <pdr@google.com>
-
- Fix PerfTest standard deviation calculation.
- https://bugs.webkit.org/show_bug.cgi?id=98115
-
- Reviewed by Ryosuke Niwa.
-
- Previously our standard deviation calculation was incorrect. This patch
- updates perftest.py's algorithm to calculate the sample standard deviation
- (with Bessel's correction) using Knuth's online algorithm:
- http://en.wikipedia.org/wiki/Algorithms_for_calculating_variance#Online_algorithm
- An existing test has been modified to prove our new results.
-
- This patch also updates runner.js to use Bessel's correction in
- its sample standard deviation calculation, which is more accurate
- for small sample sizes.
-
- Additionally, runner.js has been modified to not calculate
- the 'sum' statistic, which was not very useful.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
-
- The unused variable valueSum has also been removed.
-
- (PageLoadingPerfTest.run):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
-
- This test calculates the stdev of {2000, 3000, ..., 20000} which
- was hand-calculated using a spreadsheet.
-
- (TestPageLoadingPerfTest.test_run):
-
-2012-10-01 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- webkitpy should accept a different httpd.conf specified by the user
- https://bugs.webkit.org/show_bug.cgi?id=98071
-
- Reviewed by Dirk Pranke.
-
- The existing httpd.conf variants (or lighttpd.conf, for that
- matter) we have do not always suit the user's system. This is
- particularly true on Linux/Unix, where Apache can be installed in
- a plethora of ways and the LoadModule calls can fail to specify
- the proper module paths.
-
- For now, we start accepting the WEBKIT_HTTP_SERVER_CONF_PATH
- environment variable, which allows the user to specify the
- absolute path to another http server configuration file that might
- work on the user's system.
-
- In the long term, we should try to generate our configuration file
- and stop requiring all the different httpd.conf files we have as
- well as this hack.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._path_to_apache_config_file):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_path_to_apache_config_file):
-
-2012-10-01 Emil A Eklund <eae@chromium.org>
-
- Unreviewed, upgrade eae to reviewer.
- http://lists.webkit.org/mailman/private/webkit-committers/2012-October/000191.html
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-01 Ming Xie <mxie@rim.com>
-
- [BlackBerry] Add a early return in buildCMakeProjectOrExit()
- https://bugs.webkit.org/show_bug.cgi?id=98052
-
- Reviewed by Rob Buis.
-
- This option allows our build to only run the CMake build configuration
- step when environment variable GENERATE_CMAKE_PROJECT_ONLY is specified.
-
- * Scripts/webkitdirs.pm:
- (buildCMakeProjectOrExit):
-
-2012-10-01 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [webkitpy] Detect the multiple names of the wdiff binary in the Port class.
- https://bugs.webkit.org/show_bug.cgi?id=98039
-
- Reviewed by Dirk Pranke.
-
- Unify the duplicate checks for the wdiff binary present in
- different ports into the base Port class.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port._path_to_wdiff):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._path_to_wdiff): Removed.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._path_to_wdiff): Removed.
-
-2012-10-01 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [chromium] Remove custom implementation of _path_to_apache_config_file in chromium_linux.
- https://bugs.webkit.org/show_bug.cgi?id=98042
-
- Reviewed by Dirk Pranke.
-
- The Chromium-based ports inherit from Port these days, so get rid
- of the custom implementation of _path_to_apache_config_file() in
- favor of the more portable one in the Port class.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._path_to_apache_config_file):
-
-2012-10-01 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [chromium] Remove duplicated _is_redhat_based() implementation from chromium_linux.py.
- https://bugs.webkit.org/show_bug.cgi?id=98035
-
- Reviewed by Dirk Pranke.
-
- Since the Chromium port classes inherit from Port these days, it
- can rely on the same implementation of _is_redhat_based() present
- there instead of duplicating it.
-
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._is_redhat_based): Removed.
-
-2012-10-01 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [GTK] Rely on the general implementation for detecting the Apache server path.
- https://bugs.webkit.org/show_bug.cgi?id=98033
-
- Reviewed by Martin Robinson.
-
- The implemenentation of _path_to_apache() in base.py already
- checks for the same paths gtk.py tries; the only difference is
- that all of the are tried regardless of the current distro.
-
- Doing so is more portable, and lets us remove some distro-checking
- from the code.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._path_to_apache): Remove.
-
-2012-10-01 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed, update the URL of the Szeged SVN mirror.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-10-01 Yuta Kitamura <yutak@chromium.org>
-
- Unreviewed. Create WebSocket watch list, and add myself to that list.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-09-30 Taiju Tsuiki <tzik@chromium.org>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-30 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Add a test to verify that a plugin does not receive touch-events unless it explicitly requests for them
- https://bugs.webkit.org/show_bug.cgi?id=97975
-
- Reviewed by Adam Barth.
-
- TestWebPlugin can now be configured to accept touch events or not. Use this
- configurability to verify that a plugin does not receive touch events unless
- it explicitly requests for them.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::initialize):
- (TestWebPlugin::parseBoolean):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
-
-2012-09-28 Mariusz Grzegorczyk <mariusz.g@samsung.com>
-
- [WK2][GTK][EFL] Share WebKit2-GTK plugin process implementation with EFL port
- https://bugs.webkit.org/show_bug.cgi?id=91844
-
- Reviewed by Simon Hausmann.
-
- Turn on Netscape Plugin API option by default.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-09-28 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations is broken
- https://bugs.webkit.org/show_bug.cgi?id=97619
-
- Reviewed by Ojan Vafai.
-
- The new expectations format is causing two problems for
- webkit-patch rebaseline expectations
-
- 1) the transformation into and out of the old syntax (which is
- still used internally) is somewhat lossy, e.g., we're not
- preserving the case of Bug(x) identifiers. Also, we can't
- tell if the input was [ WontFix ] or [ Skip WontFix Pass ]
- 2) the new syntax is more lenient, allowing for multiple ways to
- specify the same result, e.g., "[ Skip ]" may or may not be
- missing.
-
- As a result, we end up rewriting a whole bunch of lines for
- purely syntactic differences.
-
- Both of these things are bugs that need to be fixed, but
- we should also not just rewrite lines that shouldn't be
- modified.
-
- This patch fixes the last issue (no rewriting).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationLine._format_line):
- (TestExpectations.remove_rebaselined_tests):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RebaseliningTest.test_remove):
-
-2012-09-28 Dirk Pranke <dpranke@chromium.org>
-
- virtual directories should just rename the beginning of the test path
- https://bugs.webkit.org/show_bug.cgi?id=97925
-
- Reviewed by Ojan Vafai.
-
- We were replacing all occurrences of the base prefix of a
- virtual test suite with the virtual name, instead of just the
- first. So, where we had softwarecompositing running the
- compositing tests, any compositing test that actually had
- "compositing" in the test base name would get that expanded
- incorrectly.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.populated_virtual_test_suites):
- (Port.lookup_virtual_test_base):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2012-09-28 Ojan Vafai <ojan@chromium.org>
-
- Garden-o-matic sometimes things buildbot warnings are failures
- https://bugs.webkit.org/show_bug.cgi?id=97926
-
- Reviewed by Tony Chang.
-
- It turns out the JSON clearly tells us if it's a failure.
- We want to skip all warnings even if they don't have "warning" in the text.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
-
-2012-09-28 Harald Tveit Alvestrand <harald@alvestrand.no>
-
- Implement the GetStats interface on PeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95193
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCStatsRequestSucceededTask):
- (RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
- (MockWebRTCPeerConnectionHandler::getStats):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-28 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] XvfbDriver should choose the next free display
- https://bugs.webkit.org/show_bug.cgi?id=88414
-
- Reviewed by Dirk Pranke.
-
- This change how the XvfbDriver choose the next display. Before
- this the choosing are based on the worker number but it caused
- errors when several nrwt run on the same time. This add process
- based free diplay search.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver.__init__):
- (XvfbDriver._next_free_display):
- (XvfbDriver._start):
- (XvfbDriver.stop):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.make_driver):
- (XvfbDriverTest.test_start_no_pixel_tests):
- (XvfbDriverTest.test_start_pixel_tests):
- (XvfbDriverTest.test_start_arbitrary_worker_number):
- (XvfbDriverTest.test_next_free_display):
- (XvfbDriverTest):
- (XvfbDriverTest.test_start_next_worker):
-
-2012-09-28 Huang Dongsung <luxtella@company100.net>
-
- [GTK] Enable CSS Shaders layout LayoutTests on GTK+
- https://bugs.webkit.org/show_bug.cgi?id=97821
-
- Reviewed by Martin Robinson.
-
- This feature is disabled via Settings by default, but for testing,
- we enable it using layoutTestController.overridePreferences. Add the
- necessary plumbing for DRT.
-
- WTR already works because support was added for Apple Mac earlier.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Feature is off by default.
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::overridePreference): Add handling of WebKitCSSCustomFilterEnabled.
-
-2012-09-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Make NRWT use wk2/TestExpectations file
- https://bugs.webkit.org/show_bug.cgi?id=97894
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitpy/layout_tests/port/qt.py: Remove unnecessary _skipped_file_search_paths function.
- (QtPort.expectations_files): Add wk2 if --webkit-test-runner option added.
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py: Remove unnecessary test__skipped_file_search_paths function.
- (QtPortTest._assert_search_path): Removed.
- (QtPortTest.test_expectations_files): Add wk2 if --webkit-test-runner option added, and code cleanup.
-
-2012-09-28 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] EFL's layoutTestController.keepWebHistory should enable visited links tracking
- https://bugs.webkit.org/show_bug.cgi?id=97901
-
- Reviewed by Kenneth Rohde Christiansen.
-
- EFL's DRT testRunner.keepWebHistory should enable visited links tracking in order
- to be consistent with WTR implementation and also several tests rely on that (fast/history).
-
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::keepWebHistory):
-
-2012-09-28 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] EFL DRT should disable visited links tracking by default
- https://bugs.webkit.org/show_bug.cgi?id=97881
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Visited links tracking is disabled by default for each test.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-09-28 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed, rolling out r129863.
- http://trac.webkit.org/changeset/129863
- https://bugs.webkit.org/show_bug.cgi?id=97173
-
- Broken debug WK2 layout test
-
- * MiniBrowser/efl/main.c:
- (quit):
- (main):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::initEcoreEvas):
- (WTR::PlatformWebView::~PlatformWebView):
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2012-09-28 Kai Koehne <kai.koehne@digia.com>
-
- [Qt] Use qInstallMessageHandler()
- https://bugs.webkit.org/show_bug.cgi?id=96648
-
- Reviewed by Jocelyn Turcotte.
-
- qInstallMsgHandler() got deprecated in Qt 5.
-
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (messageHandler):
- (main):
- * WebKitTestRunner/qt/main.cpp:
- (messageHandler):
- (main):
-
-2012-09-28 Eunmi Lee <eunmi15.lee@samsung.com>
-
- [EFL][WK2] Refactoring initialization and shutdown codes of EFL libraries.
- https://bugs.webkit.org/show_bug.cgi?id=97173
-
- Reviewed by Gyuyoung Kim.
-
- The initialization and shutdown are done inside the webkit, so we don't
- have to call them out of the webkit.
-
- * MiniBrowser/efl/main.c:
- (quit):
- (main):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::initEcoreEvas):
- (WTR::PlatformWebView::~PlatformWebView):
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2012-09-27 Alexandre Elias <aelias@chromium.org>
-
- [chromium] DumpRenderTree support for software compositing
- https://bugs.webkit.org/show_bug.cgi?id=96853
-
- Reviewed by James Robinson.
-
- This adds software compositor support to DumpRenderTree. The only
- thing needed is a minimal OutputSurfaceSoftware that holds a
- viewport-sized bitmap. Then, I added virtual test suite
- platform/chromium/virtual/softwarecompositing -- a mirror of the
- compositing/ directory with --enable-software-compositing, and
- expectations for not yet supported tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::softwareCompositingEnabled):
- (TestShell::setSoftwareCompositingEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- * DumpRenderTree/chromium/WebViewHostOutputSurface.cpp:
- (WebKit::WebViewHostOutputSurface::create3d):
- (WebKit):
- (WebKit::WebViewHostOutputSurface::createSoftware):
- (WebKit::WebViewHostOutputSurface::WebViewHostOutputSurface):
- (WebKit::WebViewHostOutputSurface::bindToClient):
- (WebKit::WebViewHostOutputSurface::surfaceSoftware):
- * DumpRenderTree/chromium/WebViewHostOutputSurface.h:
- (WebKit):
- (WebViewHostOutputSurface):
- * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
- (WebKit):
- (WebKit::WebViewHostSoftwareOutputDevice::lockForWrite):
- (WebKit::WebViewHostSoftwareOutputDevice::unlockForWrite):
- (WebKit::WebViewHostSoftwareOutputDevice::lockForRead):
- (WebKit::WebViewHostSoftwareOutputDevice::unlockForRead):
- (WebKit::WebViewHostSoftwareOutputDevice::viewportChanged):
- * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h: Copied from Tools/DumpRenderTree/chromium/WebViewHostOutputSurface.cpp.
- (WebKit):
- (WebViewHostSoftwareOutputDevice):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-09-27 Nasko Oskov <nasko@chromium.org>
-
- Move DumpRenderTree to use newer version of the name method of
- WebFrame and the willCheckAndDispatchMessageEvent method of WebFrameClient
- https://bugs.webkit.org/show_bug.cgi?id=95254
-
- Reviewed by Adam Barth.
-
- The WebFrame name() method is removed and replaced by better named
- uniqueName() method, so DRT needs to be updated to use this new version.
- Also the willCheckAndDispatchMessageEvent in WebFrameClient gained
- one more parameter, which had to be added in DRT.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (dumpFramesAsText):
- (dumpFramesAsPrintedText):
- (dumpFrameScrollPosition):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::unableToImplementPolicyWithError):
- (WebViewHost::willCheckAndDispatchMessageEvent):
- (WebViewHost::printFrameDescription):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-09-27 Julie Parent <jparent@chromium.org>
-
- Add webkit_unit_tests to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=97814
-
- Reviewed by Dirk Pranke.
-
- webkit_unit_tests run on the same bots as test_shell_tests.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2012-09-27 Florin Malita <fmalita@chromium.org>
-
- [Perftest] PerfTestRunner exception when using nested git checkouts
- https://bugs.webkit.org/show_bug.cgi?id=97796
-
- Reviewed by Ryosuke Niwa.
-
- In order to support separate Chromium vs. WebKit git trees, PerfTestsRunner needs to
- instantiate per-repository SCM objects when collecting revision information.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_results_dict):
-
-2012-09-27 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [Mac][DRT] Add support to allow non-array modifier arguments in keyDown()
- https://bugs.webkit.org/show_bug.cgi?id=97805
-
- Reviewed by Alexey Proskuryakov.
-
- Add support for handling a string as modifier argument to keyDown().
- This support has already been added to other ports, so implementing
- this on Mac too, to be consistent with the other ports.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (modifierFlags):
- (buildModifierFlags):
-
-2012-09-27 Dirk Pranke <dpranke@chromium.org>
-
- efl wk2 bots weren't looking at platform/wk2/TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=97815
-
- Unreviewed, build fix.
-
- Should clean up this logic later so that we're just using the
- implementation in base ...
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._search_paths):
- (EflPort.expectations_files):
-
-2012-09-27 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: make warning about missing BUG identifiers per-port configurable
- https://bugs.webkit.org/show_bug.cgi?id=97751
-
- Reviewed by Ojan Vafai.
-
- Prior to this change linting TestExpectations files (checking their style)
- would raise warnings if lines were missing a BUG modifier, even
- though such a modifier is actually optional in the syntax. As we
- migrate the entries over from the Skipped files, these warnings
- will generate a lot of noise, and it's not yet clear that we
- actually want to require the modifiers on all ports.
-
- So, this change makes this per-port configurable so that they
- will generate warnings in the Chromium TestExpectations and not
- anywhere else.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._parse_modifiers):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (MiscTests.test_parse_warning):
- (SemanticTests.test_missing_bugid):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.warn_if_bug_missing_in_test_expectations):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.warn_if_bug_missing_in_test_expectations):
-
-2012-09-27 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Push more fonts for layout tests to match chromium-linux
- https://bugs.webkit.org/show_bug.cgi?id=97746
-
- Reviewed by Dirk Pranke.
-
- * DumpRenderTree/chromium/android_fallback_fonts.xml: Added the new fonts into fallback list. Removed the Android system fallback font DroidSansFallback.ttf.
- * Scripts/webkitpy/layout_tests/port/builders.py: Add chromium-android to pass style check.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.check_build): Added check for md5sum and forwarder utilities to give better error message when they are missing.
- (ChromiumAndroidPort.check_sys_deps): Allow host font files to come from one of multiple directories.
- (ChromiumAndroidPort._path_to_md5sum):
- (ChromiumAndroidDriver._setup_md5sum_and_push_data_if_needed):
- (ChromiumAndroidDriver._push_fonts):
- (ChromiumAndroidDriver._push_test_resources):
-
-2012-09-27 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Enhance MediaConstraints to make it easier to get the constraint data
- https://bugs.webkit.org/show_bug.cgi?id=97559
-
- Reviewed by Adam Barth.
-
- Refactoring for the new WebMediaConstraints api.
-
- * DumpRenderTree/chromium/MockConstraints.cpp:
- (MockConstraints::verify):
-
-2012-09-27 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Rename MockConstraints::verify to verifyConstraints
- https://bugs.webkit.org/show_bug.cgi?id=97779
-
- Reviewed by Csaba Osztrogonác.
-
- The Mac OS X sdk has a macro called verify :/
-
- * DumpRenderTree/chromium/MockConstraints.cpp:
- (MockConstraints::verifyConstraints):
- * DumpRenderTree/chromium/MockConstraints.h:
- (MockConstraints):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (WebUserMediaClientMock::requestUserMedia):
-
-2012-09-27 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update getUserMedia to match the latest specification
- https://bugs.webkit.org/show_bug.cgi?id=97540
-
- Reviewed by Adam Barth.
-
- http://dev.w3.org/2011/webrtc/editor/getusermedia.html#navigatorusermedia
- Navigator.getUserMedia is changed so that the audio and video members can either
- be a bool or a constraints object.
-
- * public/WebUserMediaRequest.h:
- (WebKit):
- (WebUserMediaRequest):
- * src/WebUserMediaRequest.cpp:
- (WebKit::WebUserMediaRequest::audioConstraints):
- (WebKit):
- (WebKit::WebUserMediaRequest::videoConstraints):
-
-2012-09-26 Laszlo Gombos <l.gombos@samsung.com>
-
- Unreviewed. Update my e-mail address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-26 Dirk Pranke <dpranke@chromium.org>
-
- modify old-run-webkit-tests to support TestExpectations files a little
- https://bugs.webkit.org/show_bug.cgi?id=97276
-
- Reviewed by Daniel Bates.
-
- This patch adds minimal support to old-run-webkit-tests so that
- it can read a TestExpectations file and skip the tests listed
- there. It will skip *all* tests, regardless of the expectation
- (even if the test is listed as [ Pass ]), and it will only look
- at the TestExpectations file if there isn't a Skipped file next
- to it.
-
- This will allow us to switch to using just using
- TestExpectations files without making old-run-webkit-tests
- totally useless.
-
- * Scripts/old-run-webkit-tests:
- (readSkippedFiles):
- (processSkippedFileEntry): Added.
- (startsWith): Added.
-
-2012-09-26 Dirk Pranke <dpranke@chromium.org>
-
- The style bot spams about skia_test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=97699
-
- Reviewed by Adam Barth.
-
- Remove the warning about a missing skia_test_expectations.txt
- file for now. There are some situations where it would be
- helpful to get this warning as it might indicate that the user
- is going to get results different than what they're expecting,
- but at the moment it looks difficult if not impossible to get
- those warnings and not also get warnings that we don't care
- about, so the noise is outweighing the value of the signal.
-
- This at least will stop the false negatives we're getting on the
- style bots. If it turns out people do need the warning we can
- add it back in in some other more conditional way.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.expectations_files):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_expectations):
- (_assert_command):
-
-2012-09-26 David Michael Barr <davidbarr@chromium.org>
-
- Unreviewed. Upgrade myself from contributor to committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-26 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove deprecated code from perftestrunner.py
- https://bugs.webkit.org/show_bug.cgi?id=97724
-
- Reviewed by Adam Barth.
-
- Remove the code deprecated in r129580 now that we have landed r129597,
- which updated master.cfg to use new options, and restarted the buildbot master.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._generate_and_show_results):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_with_slave_config_json):
- (test_parse_args):
-
-2012-09-26 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=97629
- http/tests/security/cross-frame-access-put.html failing on Mac WK2 bots after
- being unskipped
-
- Reviewed by Tim Horton.
-
- The test was failing because we were failing to use the fake window origin. We
- should really always use the fake origin. This patch eliminates
- _shouldUseFakeOrigin in favor of always using it.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[WebKitTestRunnerWindow setFrameOrigin:]):
- (-[WebKitTestRunnerWindow setFrame:display:animate:]):
- (-[WebKitTestRunnerWindow setFrame:display:]):
- (-[WebKitTestRunnerWindow frameRespectingFakeOrigin]):
-
-2012-09-26 Tony Chang <tony@chromium.org>
-
- C++ style checker should warn when the indentation is wrong
- https://bugs.webkit.org/show_bug.cgi?id=97602
-
- Reviewed by Ojan Vafai.
-
- Rewrite the indentation checker to ensure that indentation is always a factor of 4
- and that we only indent 4 spaces from the previous line.
-
- I deleted some of the old indentation checking code since it was filtered out
- and didn't match the webkit style.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_indentation_amount): New function that checks indentation. Intentionally runs after
- other indentation checks.
- (check_style): Delete the old indentation code since we were already filtering out the whitespace/labels warnings.
- (CppChecker): Remove the whitespace/labels filter.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppStyleTest.test_multi_line_comments): Force 4 space indent.
- (CppStyleTest.test_explicit_single_argument_constructors):
- (CppStyleTest.test_explicit_single_argument_constructors.Foo):
- (CppStyleTest.test_explicit_single_argument_constructors.Qualifier):
- (CppStyleTest.test_slash_star_comment_on_single_line):
- (CppStyleTest.test_braces):
- (CppStyleTest.test_spacing_before_last_semicolon):
- (CppStyleTest.test_static_or_global_stlstrings):
- (CppStyleTest.test_indent): Added macro test case.
- (CppStyleTest.test_build_class):
- (NoNonVirtualDestructorsTest.test_no_error):
- (NoNonVirtualDestructorsTest.test_no_error.Foo):
- (NoNonVirtualDestructorsTest.test_no_error.Qualified):
- (NoNonVirtualDestructorsTest.test_no_destructor_when_virtual_needed):
- (NoNonVirtualDestructorsTest.test_no_destructor_when_virtual_needed.Foo):
- (NoNonVirtualDestructorsTest.test_destructor_non_virtual_when_virtual_needed):
- (NoNonVirtualDestructorsTest.test_destructor_non_virtual_when_virtual_needed.Foo):
- (NoNonVirtualDestructorsTest.test_no_warn_when_derived):
- (NoNonVirtualDestructorsTest.test_no_warn_when_derived.Foo):
- (NoNonVirtualDestructorsTest.test_internal_braces):
- (NoNonVirtualDestructorsTest.test_internal_braces.Foo):
- (NoNonVirtualDestructorsTest.test_inner_class_needs_virtual_destructor):
- (NoNonVirtualDestructorsTest.test_inner_class_needs_virtual_destructor.Foo):
- (NoNonVirtualDestructorsTest.test_inner_class_needs_virtual_destructor.Foo.Goo):
- (NoNonVirtualDestructorsTest.test_outer_class_needs_virtual_destructor):
- (NoNonVirtualDestructorsTest.test_outer_class_needs_virtual_destructor.Foo):
- (NoNonVirtualDestructorsTest.test_outer_class_needs_virtual_destructor.Foo.Goo):
- (NoNonVirtualDestructorsTest.test_qualified_class_needs_virtual_destructor):
- (NoNonVirtualDestructorsTest.test_qualified_class_needs_virtual_destructor.Qualified):
- (NoNonVirtualDestructorsTest.test_multi_line_declaration_no_error):
- (NoNonVirtualDestructorsTest.test_multi_line_declaration_no_error.Foo):
- (NoNonVirtualDestructorsTest.test_multi_line_declaration_with_error):
- (NoNonVirtualDestructorsTest.test_multi_line_declaration_with_error.Foo):
- (WebKitStyleTest.test_indentation):
- (WebKitStyleTest.test_braces): Add test for call params spanning lines.
-
-2012-09-26 Adam Barth <abarth@webkit.org>
-
- Rollout messages should be clickable in bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=97711
-
- Reviewed by Simon Fraser.
-
- If we say Bug NNNN instead of just NNNN, bugzilla will autolink to the
- actual bug.
-
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/createbug.py:
- (CreateBug.run):
-
-2012-09-26 Marcelo Lira <marcelo.lira@openbossa.org>
-
- run-perf-tests must expand environment variables in user provided paths
- https://bugs.webkit.org/show_bug.cgi?id=97686
-
- Reviewed by Ryosuke Niwa.
-
- The run-perf-tests command line options that receive paths from the
- user now expand any possible environment variables, because Python's
- file handling methods do not handle those.
-
- Examples:
- run-perf-tests --platform=qt --release --output-json-path=~/perf-results
- run-perf-tests --platform=qt --release --output-json-path=$HOME/perf-results
-
- Also removed unused imports.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args._expand_path): expand environment variables in a path passed via command line
- (PerfTestsRunner._parse_args):
-
-2012-09-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r129654.
- http://trac.webkit.org/changeset/129654
- https://bugs.webkit.org/show_bug.cgi?id=97702
-
- breaks chromium windows build (Requested by schenney on
- #webkit).
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-26 Michael Saboff <msaboff@apple.com>
-
- Unreviewed build change.
-
- Reverting inadvertent change to project file.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2012-09-26 Harald Tveit Alvestrand <harald@alvestrand.no>
-
- Implement the GetStats interface on PeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95193
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCStatsRequestSucceededTask):
- (RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
- (MockWebRTCPeerConnectionHandler::getStats):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-26 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] Policy client: dumping from decidePolicyForResponse callback
- https://bugs.webkit.org/show_bug.cgi?id=97034
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Provided dumping from WTR Policy client 'decidePolicyForResponse' callback.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::decidePolicyForResponse):
-
-2012-09-26 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- [Qt][WTR] Build fix for MSVC.
- https://bugs.webkit.org/show_bug.cgi?id=97667
-
- Reviewed by Csaba Osztrogonác.
-
- WTR misses InjectedBundle headers. Adding $$PWD to Target.pri is required for MSVC. Clean build is necessary on Windows.
-
- * WebKitTestRunner/InjectedBundle/Target.pri:
-
-2012-09-26 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] [DRT] eventSender.keyDown() doesn't support Ctrl key modifier
- https://bugs.webkit.org/show_bug.cgi?id=97665
-
- Reviewed by Rob Buis.
-
- This patch fixes test fast/forms/input-text-option-delete.html.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (keyDownCallback):
-
-2012-09-26 Dinu Jacob <dinu.s.jacob@intel.com>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-26 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Remove color codes characters from run-gtk-tests output when not writing to a TTY
- https://bugs.webkit.org/show_bug.cgi?id=97660
-
- Reviewed by Philippe Normand.
-
- Remove also the '\r' characters returned by TTY output to try to fix
- the double line endings of the script output in the bots.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): Compile a regexp for color codes if stdout
- it not a TTY.
- (TestRunner._run_test_command.parse_line): Remove color codes and
- '\r' characters from the line returned by the pseudo-terminal if
- stdout is not a TTY.
- * gtk/common.py:
- (parse_output_lines): Fix the last chunk check to make sure we
- always send entire lines to the callback, otherwise color codes
- regexp might fail if the line is not complete.
-
-2012-09-25 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [DRT][WTR] Support overriding the 'WebKitDisplayImagesKey' preference
- https://bugs.webkit.org/show_bug.cgi?id=96883
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::overridePreference): Support the
- 'WebKitDisplayImagesKey' preference.
-
-2012-09-26 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable some of the unstable CSS features
- https://bugs.webkit.org/show_bug.cgi?id=97572
-
- Reviewed by Martin Robinson.
-
- Enable the <style scoped> support via DumpRenderTreeSupportGtk method
- whenever resetting defualts to consistent values.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-09-26 Zan Dobersek <zandobersek@gmail.com>
-
- REGRESSION (r126189): No more mismatch-did-not-occur failures in reftests
- https://bugs.webkit.org/show_bug.cgi?id=97112
-
- Reviewed by Dirk Pranke.
-
- Don't use the reftest's image hash when gathering output of its reference.
- This indirectly forces the driver to return the reference's image output
- as well. This specifically solves the problem when the reftest and its
- mismatch reference are equal but the unexpected match failure is not
- reported due to missing image output of the reference file.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
- (TestDriver.run_test):
-
-2012-09-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Update master.cfg to invoke run-perf-tests with --no-show-results and --reset-results
- https://bugs.webkit.org/show_bug.cgi?id=97613
-
- Reviewed by Dirk Pranke.
-
- Use options added in r129580.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunAndUploadPerfTests):
-
-2012-09-25 Peter Rybin <peter.rybin@gmail.com>
-
- Web Inspector: Fix logging in pure protocol test harness
- https://bugs.webkit.org/show_bug.cgi?id=97579
-
- Reviewed by Yury Semikhatsky.
-
- JavaScript alert implementation in DumpRenderTree gets immediate flush to make sure that
- the message survives crash or kill by timeout.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::runJavaScriptAlert):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::runModalAlertDialog):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onJavaScriptAlert):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewScriptAlert):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::javaScriptAlert):
- * DumpRenderTree/win/UIDelegate.cpp:
- (UIDelegate::runJavaScriptAlertPanelWithMessage):
-
-2012-09-25 Dan Bernstein <mitz@apple.com>
-
- Tools part of <rdar://problem/11455228> [mac] Stop using screen fonts
- https://bugs.webkit.org/show_bug.cgi?id=97620
-
- Reviewed by John Sullivan.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Enable screen font substitution when
- running the tests.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Ditto.
-
-2012-09-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. "values" doesn't necessarily contain multiple values but it needs to be always parsed as an array.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.parse_output):
-
-2012-09-25 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests: cleanup options and results generation code
- https://bugs.webkit.org/show_bug.cgi?id=97611
-
- Reviewed by Dirk Pranke.
-
- Previously, --test-results-server triggered old JSOn format where the outermost structure was a dictionary
- instead of an array, and also implicitly triggered --no-show-results, caused the old outputs not to merge,
- and prevented the generation of results page. Also, it was not obvious that --source-json-path is an option
- used only on buildbot slaves.
-
- This patch will:
- - Remove the old format since perf-o-matic supports new format now.
- - Add --reset-results option so that we can explicitly clear existing outputs.
- - Add --slave-config-json-path option to replace --source-json-path option.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args): Added --reset-results and --slave-config-json-path options.
- (PerfTestsRunner._generate_and_show_results): Refactored. Also removed the code to strip "values" from
- results since perf-o-matic can parse and store these values now.
- (PerfTestsRunner._merge_outputs_if_needed): Renamed from _merge_outputs_if_needed.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_with_json_output): Test a harmless behavioral change to generate resuls page even when
- --test-results-server is present.
- (test_run_with_description):
- (test_run_generates_json_by_default):
- (test_run_merges_output_by_default): Added.
- (test_run_respects_reset_results): Added.
- (test_run_with_slave_config_json):
- (test_run_with_bad_slave_config_json): Use --slave-config-json-path instead of --source-json-path to make
- sure this optioon works as well.
- (test_run_with_multiple_repositories):
- (test_run_with_upload_json):
-
-2012-09-25 Simon Fraser <simon.fraser@apple.com>
-
- Fix SnowLeopard build by adding #ifdefs.
-
- Fix crashes on some tests where the CFURLRef appears to be null.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm:
- (WTR::testPathFromURL):
- (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame):
-
-2012-09-25 Simon Fraser <simon.fraser@apple.com>
-
- Speculative build fix for Production builds.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-09-25 Simon Fraser <simon.fraser@apple.com>
-
- Fix the build after r129566.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
-
-2012-09-25 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: AccessibilityUIElementChromium.cpp won't build on Windows without wtf/StringExtras.h
- https://bugs.webkit.org/show_bug.cgi?id=97614
-
- Unreviewed, fixing windows breakage.
-
- Added wtf/StringExtras.h to the includes to fix the Chromium/Windows build.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
-
-2012-09-24 Simon Fraser <simon.fraser@apple.com>
-
- <rdar://problem/12351906> Have DumpRenderTree and WebKitTestRunner crash logs show which test crashed
-
- Reviewed by Mark Rowe.
-
- Use a new WebKitSytemInterface function to add data to crash logs about which
- test was running when the crash happened.
-
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig: Make sure WEBKIT_SYSTEM_INTERFACE_LIBRARY is defined.
- * DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig: link with the WebKitSystemInterface library.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (testPathFromURL): Given a (probably) file URL, return the part after "/LayoutTests/"
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]): Tell Crash Reporter which test was running,
- if we're the main frame and the test is active.
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig: Make sure WEBKIT_SYSTEM_INTERFACE_LIBRARY is defined.
- * WebKitTestRunner/Configurations/InjectedBundle.xcconfig: link the injected bundle with the WebKitSystemInterface library.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame): Call platformDidStartProvisionalLoadForFrame().
- (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame): Stub for non-Mac platforms.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- Add a platformDidStartProvisionalLoadForFrame() for platform-specific work.
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm: Added.
- (WTR::testPathFromURL): Given a (probably) file URL, return the part after "/LayoutTests/"
- (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame): Tell Crash Reporter which test was running,
- if we're the main frame.
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Add InjectedBundlePageMac.mm.
-
-2012-09-25 Julie Parent <jparent@chromium.org>
-
- Make test_shell_tests show up in flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=97585
-
- Reviewed by Dirk Pranke.
-
- test_shell_tests run only on chromium.org, and on the same bots as
- the layout tests, so do not use the generic fallbacks.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2012-09-25 Lucas Forschler <lforschler@apple.com>
-
- Python tests fail on Windows bots when running with more than one child process. Temporarily use only one child process until the problem can be fixed.
- https://bugs.webkit.org/show_bug.cgi?id=97465
-
- Reviewed by Tim Horton.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunPythonTests.start):
-
-2012-09-25 Mike West <mkwst@chromium.org>
-
- Unreviewed. Adding myself as a committer.
-
- Yay. :)
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-25 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=95397
- Need to merge didFirstVisuallyNonEmptyLayout and
- didNewFirstVisuallyNonEmptyLayout
- -and corresponding-
- <rdar://problem/10791680>
-
- Reviewed by Sam Weinig.
-
- Account for the new member of the PageLoadClient.
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
- The NewFirstVisuallyNonEmptyLayoutForImages has existed for a while,
- but it did not have the right target membership.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
- Use new didLayout API instead of old
- didNewFirstVisuallyNonEmptyLayout API.
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::didLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::didLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::didLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::didLayout):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
-
-2012-09-25 Benjamin Poulain <bpoulain@apple.com>
-
- Add missing support for Geolocation tests on WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=97518
-
- Reviewed by Sam Weinig.
-
- There are two main features added to the tooling to make the test run:
- -Add support for error reporting for position errors through setMockGeolocationPositionUnavailableError.
- -Support the 3 states permission: undefined-allowed-denied.
-
- * WebKitTestRunner/GeolocationProviderMock.cpp:
- (WTR::GeolocationProviderMock::GeolocationProviderMock):
- (WTR::GeolocationProviderMock::setPosition):
- (WTR::GeolocationProviderMock::setPositionUnavailableError):
- (WTR::GeolocationProviderMock::startUpdating):
- (WTR::GeolocationProviderMock::sendPositionIfNeeded):
- (WTR::GeolocationProviderMock::sendErrorIfNeeded):
- * WebKitTestRunner/GeolocationProviderMock.h:
- (GeolocationProviderMock):
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::setMockGeolocationPositionUnavailableError):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setMockGeolocationPositionUnavailableError):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::decidePolicyForGeolocationPermissionRequest):
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::setGeolocationPermission):
- (WTR::TestController::setMockGeolocationPosition):
- (WTR::TestController::setMockGeolocationPositionUnavailableError):
- (WTR::TestController::handleGeolocationPermissionRequest):
- (WTR::TestController::decidePolicyForGeolocationPermissionRequestIfPossible):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-09-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r129517.
- http://trac.webkit.org/changeset/129517
- https://bugs.webkit.org/show_bug.cgi?id=97582
-
- Link errors in chromium (Requested by alecf on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockConstraints.cpp: Removed.
- * DumpRenderTree/chromium/MockConstraints.h: Removed.
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCVoidRequestTask::RTCVoidRequestTask):
- (isSupportedConstraint):
- (isValidConstraint):
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (WebKit::WebUserMediaClientMock::requestUserMedia):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- (WebKit):
- (WebUserMediaClientMock):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost):
-
-2012-09-25 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Chromium doesn't pass accessibility text range and line number tests
- https://bugs.webkit.org/show_bug.cgi?id=97246
-
- Reviewed by Chris Fleizach.
-
- Provide a chromium implementation of some AccessibilityUIElement
- methods needed by accessibility tests.
-
- Enables four existing tests to pass on Chromium:
- Tests: accessibility/textarea-insertion-point-line-number.html
- accessibility/textarea-line-for-index.html
- accessibility/textarea-selected-text-range.html
- accessibility/textbox-role-reports-selection.html
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::insertionPointLineNumberGetterCallback):
- (AccessibilityUIElement::selectedTextRangeGetterCallback):
- (AccessibilityUIElement::lineForIndexCallback):
- (AccessibilityUIElement::setSelectedTextRangeCallback):
-
-2012-09-25 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Android's build archives have grown from 38M to 102M in 11 days
- https://bugs.webkit.org/show_bug.cgi?id=97336
-
- Reviewed by Adam Barth.
-
- Each WebKit target results in four APKs in the out/{Debug,Release}/ directory,
- while we really only need one. Ignoring the unsigned APKs removes six from
- the archive will make sure that we only archive a single APK per target,
- bringing its size back to rougly 40 megabytes.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2012-09-25 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update getUserMedia to match the latest specification
- https://bugs.webkit.org/show_bug.cgi?id=97540
-
- Reviewed by Adam Barth.
-
- Adding mock support for the enhanced getUserMedia call.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockConstraints.cpp: Copied from Source/WebCore/platform/chromium/support/WebMediaConstraints.cpp.
- (MockConstraints):
- (MockConstraints::isSupported):
- (MockConstraints::isValid):
- (MockConstraints::verify):
- * DumpRenderTree/chromium/MockConstraints.h: Copied from Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h.
- (WebKit):
- (MockConstraints):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCVoidRequestTask::RTCVoidRequestTask):
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (UserMediaRequestTask):
- (UserMediaRequestTask::UserMediaRequestTask):
- (WebUserMediaClientMock::requestUserMedia):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- (WebUserMediaClientMock):
- (WebUserMediaClientMock::taskList):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost):
-
-2012-09-25 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL] Do not dump inspector output in DRT
- https://bugs.webkit.org/show_bug.cgi?id=97018
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Some inspector-related layout tests expect console output from the
- inspector view to be suppressed. Do that by setting a property in
- the inspector view that makes the onConsoleMessage callback return
- early and not output anything.
-
- Using evas_object_data_{get,set} is not very beautiful, but it is
- still better than properly subclassing Ewk_View and having to
- implement something similar to drt_view_console_message_enable_set().
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createWebInspectorView):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onConsoleMessage):
-
-2012-09-25 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs support for setWillSendRequestReturnsNullOnRedirect
- https://bugs.webkit.org/show_bug.cgi?id=97542
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement support for setWillSendRequestReturnsNullOnRedirect
- in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::willSendRequestReturnsNullOnRedirect):
- (WTR::TestRunner::setWillSendRequestReturnsNullOnRedirect):
- (TestRunner):
-
-2012-09-25 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] [DRT] fast/forms/textarea-live-pseudo-selectors.html failed
- https://bugs.webkit.org/show_bug.cgi?id=97189
-
- Reviewed by Rob Buis.
-
- Translate ASCII key code to BlackBerry key code for BACKSPACE and DELETE key.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (keyDownCallback):
-
-2012-09-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] WTR bundle client loads binary data as text
- https://bugs.webkit.org/show_bug.cgi?id=97532
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WTR::InjectedBundlePage::decidePolicyForResponse now checks response MIME type
- and returns WKBundlePagePolicyActionPassThrough if it cannot be shown.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::decidePolicyForResponse):
-
-2012-09-25 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed, another test case adjustment after r129459. Python 2.7 doesn't
- seem to be a requirement yet so the assertDictEqual method is not yet available
- on all builders. Assert that the empty dictionary length equals 0 instead.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_interpret_test_failures):
-
-2012-09-24 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build with latest Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=97479
-
- Reviewed by Tor Arne Vestbø.
-
- The variables for syncqt handling are now set in api.pri, but let's add a comment here that we can
- remove them from default_pre.prf once we're past Qt 5 beta2.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-25 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed, adjusting the test cases after r129459. The JSON data
- for reftests now contains the 'reftest_type' key and no more 'is_reftest'
- or 'is_mismatch_reftest' keys.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (EndToEndTest.test_reftest_with_two_notrefs):
-
-2012-09-24 Zan Dobersek <zandobersek@gmail.com>
-
- Unexpected reftest passes are only reported when pixel testing is enabled in results.html as well
- https://bugs.webkit.org/show_bug.cgi?id=97426
-
- Reviewed by Ojan Vafai.
-
- The 'is_reftest' member of the TestResult class has been replaced by the reftest_type
- member which is a set containing either '!=', '==', both or none if the test represented
- by the object is not a reftest.
-
- When summarizing results, the test dictionary is updated to contain the 'reftest_type' key
- if the test is a reftest. The value of this key is a list of all the reftest types of this test.
-
- The test failure interpretation method has been refactored, it now reports only
- missing results of various formats and image diff percent in case of image or
- reftest mismatch.
-
- Unit tests have been modified accordingly.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner._update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (LayoutTestRunnerTests.test_update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (interpret_test_failures):
- (summarize_results):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_interpret_test_failures):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.run):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (EndToEndTest.test_reftest_with_two_notrefs):
-
-2012-09-24 Sam Weinig <sam@webkit.org>
-
- Use NSUserDefaults rather than an environment variable to control whether to use an XPC Service for the WebProcess
- https://bugs.webkit.org/show_bug.cgi?id=97514
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (argumentsForRunAndDebugMacWebKitApp):
- Push "-WebKit2UseXPCServiceForWebProcess YES" as arguments when --use-web-process-xpc-service
- is provided to set the user default. Move adding of @ARGV to after custom additions as calling
- shouldUseXPCServiceForWebProcess() can change @ARGV.
-
- (runMacWebKitApp):
- (execMacWebKitAppForDebugging):
- Stop setting the WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS environment variable.
-
-2012-09-24 Laszlo Gombos <l.gombos@samsung.com>
-
- [GTK][EFL] Make sure cairo is built with fontconfig support
- https://bugs.webkit.org/show_bug.cgi?id=97513
-
- Reviewed by Martin Robinson.
-
- The GTK and EFL port of WebKit requires a version of cairo that is built with fontconfig support.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-09-24 Benjamin Poulain <bpoulain@apple.com>
-
- Fix Geolocation error reporting in the test support
- https://bugs.webkit.org/show_bug.cgi?id=97386
-
- Reviewed by Sam Weinig.
- The TestRunner was exposing internal implementation details of
- the Geolocation object through setMockGeolocationError().
-
- In practice, only the error code PositionUnavailable is supported
- or even implemented.
-
- Exposing setMockGeolocationError() does not make sense for WebKit2 as
- passing generic errors from the UIProcess is a bad idea. This is the
- opportunity to clean TestRunner and prepare and interface suitable for WebKit2.
-
- * DumpRenderTree/TestRunner.cpp:
- (setMockGeolocationPositionUnavailableErrorCallback):
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/mac/MockGeolocationProvider.h:
- * DumpRenderTree/mac/MockGeolocationProvider.mm:
- (-[MockGeolocationProvider dealloc]):
- (-[MockGeolocationProvider resetError]):
- (-[MockGeolocationProvider setPosition:]):
- (-[MockGeolocationProvider setPositionUnavailableErrorWithMessage:]):
- (-[MockGeolocationProvider lastPosition]):
- (-[MockGeolocationProvider timerFired]):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- (TestRunner::setMockGeolocationPositionUnavailableError):
-
-2012-09-24 Nikhil Bansal <n.bansal@samsung.com>
-
- [EFL][WK2] TestRunner needs touch events support.
- https://bugs.webkit.org/show_bug.cgi?id=96465
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Simulate touch events in WebkitTestRunner for touch related
- layout tests. This patch uses ewk_view_feed_touch_event() to
- generate touch events.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR):
- (WTR::setEvasModifiers):
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::~EventSenderProxy):
- (WTR::EventSenderProxy::sendTouchEvent):
- (WTR::EventSenderProxy::addTouchPoint):
- (WTR::EventSenderProxy::updateTouchPoint):
- (WTR::EventSenderProxy::setTouchModifier):
- (WTR::EventSenderProxy::touchStart):
- (WTR::EventSenderProxy::touchMove):
- (WTR::EventSenderProxy::touchEnd):
- (WTR::EventSenderProxy::touchCancel):
- (WTR::EventSenderProxy::clearTouchPoints):
- (WTR::EventSenderProxy::releaseTouchPoint):
- (WTR::EventSenderProxy::cancelTouchPoint):
-
-2012-09-24 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] TestRunner does not support overridePreference with value "0"
- https://bugs.webkit.org/show_bug.cgi?id=97457
-
- Reviewed by Alexey Proskuryakov.
-
- testRunner.overridePreference() was marked as taking a boolean
- in argument in testRunner.idl even though the test cases are
- passing strings to it. The current code works if the test
- case wants to enable a setting and therefore passes "1" string.
- However, if the test wants to disable a setting and passes "0"
- string, the current code also evaluates this to true causing
- certain test cases to fail.
-
- The argument to testRunner.overridePreference() is now of string
- type and a function has been added to convert the string passed
- by the test to a boolean value.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::toBool):
- (WTR):
- (WTR::TestRunner::overridePreference):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r129343.
- http://trac.webkit.org/changeset/129343
- https://bugs.webkit.org/show_bug.cgi?id=97479
-
- It broke the build (Requested by Ossy_NIGHT on #webkit).
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-24 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Unskip the Shadow DOM layout tests
- https://bugs.webkit.org/show_bug.cgi?id=90776
-
- Reviewed by Ryosuke Niwa.
-
- Enable Shadow DOM through DumpRenderTreeSupport when resetting defaults in between tests.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-09-24 Zan Dobersek <zandobersek@gmail.com>
-
- REGRESSION (r129211-r129218): http/tests/loading/redirect-with-no-location-crash.html failing on GTK Linux 64-bit Release WK2 (Tests)
- https://bugs.webkit.org/show_bug.cgi?id=97404
-
- Reviewed by Philippe Normand.
-
- Print out the 'didReceiveTitle' information when dumping frame load callbacks.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewTitleChanged):
-
-2012-09-24 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build with latest Qt 5
-
- Reviewed by Tor Arne Vestbø.
-
- The variables for syncqt handling are now set in api.pri, but let's add a comment here that we can
- remove them from default_pre.prf once we're past Qt 5 beta2.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-22 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Layout tests would be easier to write if AccessibilityController could find an element by id
- https://bugs.webkit.org/show_bug.cgi?id=97301
-
- Reviewed by Chris Fleizach.
-
- Adds a new accessibleElementById method to AccessibilityController, to make it
- easier to write cross-platform layout tests.
-
- Implemented for Chromium and for Mac (DRT and WKTR).
-
- * DumpRenderTree/AccessibilityController.cpp:
- (getAccessibleElementByIdCallback):
- (AccessibilityController::getJSClass):
- * DumpRenderTree/AccessibilityController.h:
- (AccessibilityController):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::findAccessibleElementByIdRecursive):
- (AccessibilityController::getAccessibleElementById):
- (AccessibilityController::accessibleElementByIdGetterCallback):
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h:
- (AccessibilityController):
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::accessibleElementById):
- * DumpRenderTree/mac/AccessibilityCommonMac.h: added
- * DumpRenderTree/mac/AccessibilityCommonMac.mm: added
- (+[NSString stringWithJSStringRef:]):
- (-[NSString createJSStringRef]):
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (findAccessibleObjectById):
- (AccessibilityController::accessibleElementById):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::accessibleElementById):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- (WTR::AccessibilityController::accessibleElementById):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.h:
- (AccessibilityController):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h: added
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm: added
- (+[NSString stringWithJSStringRef:]):
- (-[NSString createJSStringRef]):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
- (WTR::findAccessibleObjectById):
- (WTR):
- (WTR::AccessibilityController::accessibleElementById):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2012-09-22 Zan Dobersek <zandobersek@gmail.com>
-
- Unexpected reftest passes are only reported when pixel testing is enabled
- https://bugs.webkit.org/show_bug.cgi?id=97242
-
- Reviewed by Dirk Pranke.
-
- LayoutTestRunner should know whether the finished test it's handling is
- a reftest. This is necessary when updating result summary for reftests
- when pixel testing is not enabled - in these circumstances an unexpectedly
- passing reftest was not reported as such due to pixel testing then being
- determined by searching for reftest failures in failures list, which were
- not found in an empty failure list of a passing test. Now the TestResult
- objects have a member variable indicating the test is a reftest whenever
- that's the case.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner._update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (LayoutTestRunnerTests.test_update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner.run):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.__init__):
-
-2012-09-21 Sam Weinig <sam@webkit.org>
-
- WebProcess XPC services need have their environment set without disrupting all other XPC services
- https://bugs.webkit.org/show_bug.cgi?id=95161
-
- Reviewed by Anders Carlsson.
-
- Remove setting the __XPC_* environment variables.
-
- * Scripts/webkitdirs.pm:
- (setUpGuardMallocIfNeeded):
- (runMacWebKitApp):
- (execMacWebKitAppForDebugging):
-
-2012-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo in additional-platform-directory patch just landed
- https://bugs.webkit.org/show_bug.cgi?id=97380
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.relative_test_filename):
- (Port.relative_perf_test_filename):
-
-2012-09-21 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: don't require additional-platform-directory to be an abspath or live under LayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=97380
-
- Reviewed by Ojan Vafai.
-
- There doesn't seem to be a good reason for this restriction and
- it's useful to be able to point to directories outside the
- checkout for results (e.g., for local failures due to a 10.7.4
- install ;).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.relative_test_filename):
- (Port.relative_perf_test_filename):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_additional_platform_directory):
-
-2012-09-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: drop support for old TestExpectations syntax
- https://bugs.webkit.org/show_bug.cgi?id=97364
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._collect_matching_tests):
- (TestExpectationParser):
- (TestExpectationParser._tokenize_line):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (SkippedTests.test_skipped_entry_dont_exist):
- (ExpectationSyntaxTests.assert_tokenize_exp):
- (ExpectationSyntaxTests.test_bare_name):
- (ExpectationSyntaxTests.test_bare_name_and_bugs):
- (ExpectationSyntaxTests.test_comments):
- (ExpectationSyntaxTests.test_config_modifiers):
- (ExpectationSyntaxTests.test_unknown_config):
- (ExpectationSyntaxTests.test_unknown_expectation):
- (ExpectationSyntaxTests.test_skip):
- (ExpectationSyntaxTests.test_slow):
- (ExpectationSyntaxTests.test_wontfix):
- (ExpectationSyntaxTests.test_blank_line):
- (ExpectationSyntaxTests.test_warnings):
- (RebaseliningTest.test_no_get_rebaselining_failures):
-
-2012-09-21 Simon Fraser <simon.fraser@apple.com>
-
- Improve WTR unresponsiveness output a little
- https://bugs.webkit.org/show_bug.cgi?id=97370
-
- Reviewed by Timothy Horton.
-
- Distinguish between conditions that already set the errorMessage,
- and unresponsiveness due to slow about:blank loads when WTR
- reports unresponsiveness.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-09-21 Chris Rogers <crogers@google.com>
-
- Add Web Audio support for deprecated/legacy APIs
- https://bugs.webkit.org/show_bug.cgi?id=97050
-
- Reviewed by Eric Carlson.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-09-21 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: update remaining tests to use the new expectation syntax
- https://bugs.webkit.org/show_bug.cgi?id=97362
-
- Reviewed by Ojan Vafai.
-
- This patch updates all the unit tests that were still using the
- old TestExpectations syntax to use the new syntax *except* for
- the tests that were specifically testing that we parsed the old
- syntax correctly.
-
- Also, a block of tests for the new syntax were duplicated, so
- I've deleted the duplicate.
-
- Note that the old syntax is still supported so this change should
- produce no visible changes.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (MiscTests.test_multiple_results):
- (MiscTests.test_category_expectations):
- (MiscTests.test_error_on_different_platform):
- (MiscTests.test_error_on_different_build_type):
- (MiscTests.test_overrides):
- (MiscTests.test_overrides__directory):
- (MiscTests.test_overrides__duplicate):
- (MiscTests.test_more_specific_override_resets_skip):
- (SkippedTests.check):
- (SkippedTests.test_duplicate_skipped_test_fails_lint):
- (SkippedTests.test_skipped_file_overrides_expectations):
- (SkippedTests.test_skipped_dir_overrides_expectations):
- (SkippedTests.test_skipped_file_overrides_overrides):
- (SkippedTests.test_skipped_dir_overrides_overrides):
- (ExpectationSyntaxTests.disabled_test_missing_expectation):
- (ExpectationSyntaxTests.disabled_test_missing_colon):
- (ExpectationSyntaxTests.disabled_test_too_many_colons):
- (ExpectationSyntaxTests.disabled_test_too_many_equals_signs):
- (ExpectationSyntaxTests):
- (ExpectationSyntaxTests.test_unrecognized_expectation):
- (ExpectationSyntaxTests.test_macro):
- (SemanticTests.test_bug_format):
- (SemanticTests.test_bad_bugid):
- (SemanticTests.test_missing_bugid):
- (SemanticTests.test_slow_and_timeout):
- (SemanticTests.test_rebaseline):
- (test_missing_file):
- (test_ambiguous):
- (test_more_modifiers):
- (test_order_in_file):
- (test_macro_overrides):
- (OldExpectationParserTests):
- (OldExpectationParserTests._tokenize):
- (OldExpectationParserTests.test_tokenize_extra_colon):
- (OldExpectationParserTests.test_tokenize_missing_equal):
- (OldExpectationParserTests.test_tokenize_extra_equal):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_skip_failing_tests):
- (MainTest.test_additional_expectations):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_valid_expectations):
- (TestExpectationsTestCase.test_invalid_expectations):
- (TestExpectationsTestCase.test_tab):
-
-2012-09-21 Benjamin Poulain <bpoulain@apple.com>
-
- [WK2] Add basic testing support for Geolocation
- https://bugs.webkit.org/show_bug.cgi?id=97278
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update the Geolocation testing to use the proper API in the UIProcess.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/GNUmakefile.am:
-
- * WebKitTestRunner/GeolocationProviderMock.cpp: Added.
- (WTR::startUpdatingCallback):
- (WTR::stopUpdatingCallback):
- (WTR::GeolocationProviderMock::GeolocationProvierMock):
- (WTR::GeolocationProviderMock::setMockGeolocationPosition):
- (WTR::GeolocationProviderMock::startUpdating):
- (WTR::GeolocationProviderMock::stopUpdating):
- (GeolocationProviderMock):
- The GeolocationProvider store the location update and deliver them as needed.
-
- WebCore GeolocationController do not support asynchronous update on start/stop. This is not
- a problem in this case because all the messages between the WebProcess and the UIProcess are
- asynchronous. Because of this, unlike GeolocationClientMock, we do not use a timer for event
- delivery.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::setGeolocationPermission):
- (WTR::InjectedBundle::setMockGeolocationPosition):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setGeolocationPermission):
- (WTR::TestRunner::setMockGeolocationPosition):
- From the InjectedBundle, we now pass the information to the UIProcess so that
- GeolocationProvider and the TestController can respond appropriately.
-
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::decidePolicyForGeolocationPermissionRequest):
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- (WTR::TestController::setMockGeolocationPosition):
- * WebKitTestRunner/TestController.h:
- (TestController):
- (WTR::TestController::setGeolocationPermission):
- (WTR::TestController::isGeolocationPermissionAllowed):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2012-09-21 Joanmarie Diggs <jdiggs@igalia.com>
-
- REGRESSION (r127882): accessibility/spinbutton-value.html failing on GTK
- https://bugs.webkit.org/show_bug.cgi?id=96196
-
- Reviewed by Martin Robinson.
-
- The "regression" is that a new test was added but the support was missing
- in the Gtk port for spin buttons.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::valueDescription): Updated the FIXME comment to
- indicate that this cannot be implemented until it is implemented in ATK.
- URL of the newly-filed ATK bug included for reference.
-
-2012-09-21 Dirk Pranke <dpranke@chromium.org>
-
- Fix test_skip_and_wontfix failure
- https://bugs.webkit.org/show_bug.cgi?id=97225
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (SemanticTests.test_skip_and_wontfix):
-
-2012-09-21 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Implement ViewState methods in PageClientImpl in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=97202
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::focus): Focus the view.
-
-2012-09-21 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [WTR] Memory leaks in InjectedBundleController::initialize()
- https://bugs.webkit.org/show_bug.cgi?id=97329
-
- Reviewed by Alexey Proskuryakov.
-
- Fix leaks in InjectedBundleController::initialize() by adopting
- strings created with WKStringCreateWithUTF8CString().
-
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::initialize):
-
-2012-09-21 Marcelo Lira <marcelo.lira@openbossa.org>
-
- [Qt][WK2] Removed duplicated code from EventSenderProxy::keyDown
- https://bugs.webkit.org/show_bug.cgi?id=97235
-
- Reviewed by Luiz Agostini.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::keyDown):
-
-2012-09-21 Gergely Kis <gergely@homejinni.com>
-
- Add MIPS build slave to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=96713
-
- Reviewed by Csaba Osztrogonác.
-
- Added a build slave for MIPS, and enabled a builder for
- Qt Linux MIPS32R2 little-endian release build.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-09-21 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Switch back to a fixed fifo path for Android
- https://bugs.webkit.org/show_bug.cgi?id=97230
-
- Reviewed by Tony Chang.
-
- Because not all external storage cards will be formated using a file
- system that supports named pipes, Chromium has been changed to creating
- the pipes in a temporary folder on the internal storage. Adapt this in
- WebKit so we can continue to run layout tests.
-
- This also includes an *unreviewed* fix for a breakage in the webkitpy
- tests I made in r129221. Two lines and related to this code, so I decided
- to include it in this change.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_test):
- (ChromiumAndroidDriver._update_version):
-
-2012-09-20 Peter Beverloo <peter@chromium.org>
-
- Leverage Chromium's code to set up FIFOs for Chromium Android layout tests
- https://bugs.webkit.org/show_bug.cgi?id=97227
-
- Reviewed by Tony Chang.
-
- We switched Chromium to using FIFOs in order to achieve better consistency,
- which was done by Marcus in r157541. Remove all custom WebKit code in
- favor of Chromium's implementation.
-
- Remove more FIFO code in the test runner itself, including the code in
- DumpRenderTree that invoked it. We can now switch to Chromium's brand
- new FIFO-creating code, which is being set-up for all test targets build
- for Android, including DumpRenderTree, TestWebKitAPI and webkit_unit_tests.
-
- This also changes the ChromiumAndroidDriver._remove_all_pipes method to
- delete the files individually. "rm" would fail if one of the earlier files
- does not exist, and the "-f" argument doesn't seem to be reliable.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_test):
- (ChromiumAndroidDriver._get_external_storage):
- (ChromiumAndroidDriver._drt_cmd_line):
- (ChromiumAndroidDriver._remove_all_pipes):
- (ChromiumAndroidDriver.stop):
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-09-21 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] EventSender needs to implement scheduleAsynchronousClick
- https://bugs.webkit.org/show_bug.cgi?id=97326
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement scheduleAsynchronousClick() in WebKitTestRunner's
- EventSender by sending a "MouseDown" and a "MouseUp" message
- asynchronously to the WebProcess.
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::createMouseMessageBody):
- (WTR):
- (WTR::EventSendingController::mouseDown):
- (WTR::EventSendingController::mouseUp):
- (WTR::EventSendingController::scheduleAsynchronousClick):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveMessageFromInjectedBundle):
-
-2012-09-21 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Error out early if we don't have ICU available
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/configure.prf:
-
-2012-09-21 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Bail out when trying to build WebKit with Qt != 5
-
- Reviewed by Tor Arne Vestbø.
-
- Moved check for Qt version out of default_pre into top-level WebKit.pro,
- because we never reach default_pre.prf due to the lack of .qmake.conf support
- in older versions of Qt/QMake.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-21 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs to print frame load delegate information
- https://bugs.webkit.org/show_bug.cgi?id=42705
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added missing dumping from WTR::InjectedBundlePage::didFailLoadWithErrorForFrame.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
-
-2012-09-21 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EventSender should mimic CTRL+o emacs shortcut
- https://bugs.webkit.org/show_bug.cgi?id=97224
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for mimicking CTRL+o emacs shortcut in EFL's
- EventSender in DumpRenderTree and WebKitTestRunner.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (sendKeyDown):
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::EventSenderProxy::keyDown):
-
-2012-09-21 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Re-fix clean builds
-
- Reviewed by Tor Arne Vestbø.
-
- Re-introduce the sanitization for LIBS when creating a module to use
- LIBS_PRIVATE and otherwise do _not_ use LIBS_PRIVATE. We decided to
- continue to use QT, LIBS and PKGCONFIG instead of their _PRIVATE variants
- throughout the code base, so just using LIBS_PRIVATE in linkAgainstLibrary()
- causes build issues when depending system libraries end up in LIBS before
- LIBS_PRIVATE.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-20 Simon Fraser <simon.fraser@apple.com>
-
- Comment out a failing webkitpy unit test until Dirk can fix it.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (SemanticTests.test_skip_and_wontfix):
-
-2012-09-20 Dirk Pranke <dpranke@chromium.org>
-
- make Skip, WontFix be the only expectations on a line
- https://bugs.webkit.org/show_bug.cgi?id=97225
-
- Reviewed by Ojan Vafai.
-
- It is now incorrect in the new syntax to have a line like:
-
- foo.html [ WontFix Crash ]
-
- This will generate a lint warning and be treated as an invalid
- line. Fixing this caused a whole bunch of unit tests to need updating
- to no longer be marked as WontFix :). Also, this patch adjusts
- the warnings so that missing Bug() identifiers will cause lint
- warnings but will *not* cause the line to be treated as invalid.
- Fixing these issues also revealed that test_hung_thread was no
- longer testing the right logic, so I adjusted the timeouts in
- test.py to make that test work again.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (Worker._run_test_in_another_thread):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_summarized_results_wontfix):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._parse_modifiers):
- (TestExpectationParser._tokenize_line_using_new_format):
- (TestExpectationLine.is_invalid):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (BasicTests.test_basic):
- (test_get_test_set):
- (test_parse_warning):
- (test_pixel_tests_flag):
- (SemanticTests.test_missing_bugid):
- (SemanticTests):
- (SemanticTests.test_skip_and_wontfix):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_hung_thread):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_basic):
- (PrintExpectationsTest.test_multiple):
- (PrintExpectationsTest.test_full):
- (PrintExpectationsTest.test_exclude):
- (PrintExpectationsTest.test_csv):
-
-2012-09-20 Lucas Forschler <lforschler@apple.com>
-
- Unreviewed. Start running tests on the mac-ews.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2012-09-20 Tony Chang <tony@chromium.org>
-
- [chromium] Enable more clang warnings
- https://bugs.webkit.org/show_bug.cgi?id=97257
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Add -Wunused-parameter. Don't add -Wglobal-constructors because
- there are lots of violations in these files.
-
-2012-09-19 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should record individual value instead of statistics
- https://bugs.webkit.org/show_bug.cgi?id=97155
-
- Reviewed by Hajime Morita.
-
- Parse the list of individual value reported by tests and include them as "values".
- We strip "values" from the output JSON when uploading it to the perf-o-matic
- since it doesn't know how to parse "values" or ignore it.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output): Parse and report "values".
- (PageLoadingPerfTest.run): Report indivisual page loading time in "values".
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest.test_run):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_and_show_results): Strip "values" from each result
- until we update perf-o-matic.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_memory_test):
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_with_slave_config_json):
- (test_run_with_multiple_repositories):
-
-2012-09-20 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix production builds
-
- Unreviewed trivial fix: Follow up r129119 and avoid clobbering LIBS through the use of LIBS_PRIVATE.
-
- Otherwise the libQtWebKit.prl file for example contains -lWebKit1 -lWebCore, etc.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-20 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION: layout test results doesn't show diffs
- https://bugs.webkit.org/show_bug.cgi?id=97182
-
- Reviewed by Ojan Vafai.
-
- Go back to storing TEXT, AUDIO, and IMAGE+TEXT in results.json
- so that results.html (and hopefully garden-o-matic) can
- determine which things actually failed. However, we keep mapping
- these results to Failure so that we still only have a single
- expectation type for them.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectations):
- (TestExpectations.result_was_expected):
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (determine_result_type):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_retrying_and_flaky_tests):
-
-2012-09-20 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Extend UserMediaRequest with a ownerDocument method
- https://bugs.webkit.org/show_bug.cgi?id=97095
-
- Reviewed by Adam Barth.
-
- Extending WebUserMediaClientMock to check that the owning document is valid,
- and that the document has a frame.
-
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (WebKit::WebUserMediaClientMock::requestUserMedia):
-
-2012-09-20 Stephen Chenney <schenney@chromium.org>
-
- [Chromium] DRT does not support --dump-all-pixels flag
- https://bugs.webkit.org/show_bug.cgi?id=95098
-
- Reviewed by Dirk Pranke.
-
- Add support for the --pixel-tests and shorthand -p option in Chromium DumpRenderTree. Use
- of this flag causes pixel results to be created for all tests, regardless of
- individual test options. If an individual test provides a pixel hash it will be used,
- otherwise the hash will be empty. This replaces a previously defined but unused option
- --dump-all-pixels, and is useful primarily when debugging DRT instances.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest): Add a parameter and code to force pixel results for the test.
- (main): Add parameter handling for --pixels-test and -p, and remove --dump-all-pixels.
-
-2012-09-20 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] run-api-tests should not buffer test stdout
- https://bugs.webkit.org/show_bug.cgi?id=88474
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner._run_test_command): Use os.forkpty() instead of
- subprocess.Popen() so that gtest sends the output with colors to
- stdout. Use common.parse_output_lines() to parse the output and
- write it to stdout while it's read.
- (TestRunner._run_test_command.parse_line): Parse the line to get
- the test pid and write the line to stdout.
- (TestRunner._run_test_command.waitpid): Helper function to call
- waitpid handling EINTR.
- (TestRunner._run_test_command.return_code_from_exit_status):
- Helper function to convert exit status of test commands to a
- return code.
- * gtk/common.py:
- (parse_output_lines): Helper function that uses select to read
- the given file descriptor and call the given callback for every
- line read.
-
-2012-09-20 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix initial build
-
- Reviewed by Tor Arne Vestbø.
-
- When building QtWebKit the first time there is no qt_webkit.pri module pri file, and therefore
- $$QT.webkit.name isn't set and so creating_module isn't set. That has all sorts of implications
- causing incorrect linking for Makefile.api, etc.
-
- Fix the determination by simply checking if MODULE is set, which only happens in api.pri.
-
- * qmake/mkspecs/features/webkit_modules.prf:
-
-2012-09-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r129091.
- http://trac.webkit.org/changeset/129091
- https://bugs.webkit.org/show_bug.cgi?id=97205
-
- It broke perf tests everywhere (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output):
- (PageLoadingPerfTest.run):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest.test_run):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_and_show_results):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_memory_test):
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_with_slave_config_json):
- (test_run_with_multiple_repositories):
-
-2012-09-20 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] QtWebKit module header includes private dependencies
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf: Don't try to sanitize LIBS, because we can make sure
- that LIBS_PRIVATE is set from the beginning. Moved the creating_module and PKGCONFIG/QT(_PRIVATE)
- sanitization into webkit_modules.prf. creating_module determination requires TARGET to be set, so
- we can't do it in default_pre.
- * qmake/mkspecs/features/webkit_modules.prf:
-
-2012-09-20 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build with MingW
-
- Reviewed by Tor Arne Vestbø.
-
- Don't try to compile WebCore, etc. with debug symbols for production
- builds, it's just too big.
-
- * qmake/mkspecs/features/production_build.prf:
-
-2012-09-20 Michał Pakuła vel Rutka <m.pakula@samsung.com>
-
- [EFL][DRT]DumpRenderTree needs to reset focus state when test starts.
- https://bugs.webkit.org/show_bug.cgi?id=97087
-
- Reviewed by Gyuyoung Kim.
-
- Add focusing a main frame on settings reset.
- After editing/undo/undo-iframe-location-change was executed a frame
- was left in unfocused state. This caused flakiness in two tests results.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-09-20 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Add eventSender.gestureTap
- https://bugs.webkit.org/show_bug.cgi?id=66173
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement support for sending raw QGesture events.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::gestureTap):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
-
-2012-09-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r129007.
- http://trac.webkit.org/changeset/129007
- https://bugs.webkit.org/show_bug.cgi?id=97172
-
- It broke the build on the Qt bots (Requested by Ossy on
- #webkit).
-
- * qmake/config.tests/gccdepends/empty.cpp:
- * qmake/config.tests/gccdepends/gccdepends.pro:
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-19 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should record indivisual value instead of statistics
- https://bugs.webkit.org/show_bug.cgi?id=97155
-
- Reviewed by Hajime Morita.
-
- Parse the list of indivisual value reported by tests and include them as "values".
- We strip "values" from the output JSON when uploading it to the perf-o-matic
- since it doesn't know how to parse "values" or ignore it.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output): Parse and report "values".
- (PageLoadingPerfTest.run): Report indivisual page loading time in "values".
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest.test_run):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_and_show_results): Strip "values" from each result
- until we update perf-o-matic.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_memory_test):
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_with_slave_config_json):
- (test_run_with_multiple_repositories):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- Fix regex groups for bug matching in flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=97152
-
- Unreviewed, build fix.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (htmlForBugs):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: print unexpected results using new TestExpectations syntax
- https://bugs.webkit.org/show_bug.cgi?id=97159
-
- Unreviewed, build fix.
-
- Change new-run-webkit-tests to print out failures using the new
- syntax when there are unexpected results, e.g.:
-
- 52 tests ran as expected, 19 didn't:
-
-
- Regressions: Unexpected failures : (2)
- failures/flaky/text.html [ Failure ]
- failures/unexpected/text-image-checksum.html [ Failure ]
-
- and so forth
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._print_unexpected_results):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- update flakiness dashboard after cutover to new test expectations syntax
- https://bugs.webkit.org/show_bug.cgi?id=97152
-
- Unreviewed, build fix.
-
- Handle (??) the new Bug notations as well. Hopefully we don't
- still need the old ones.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (filterBugs):
- (htmlForBugs):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- update flakiness dashboard after cutover to new test expectations syntax
- https://bugs.webkit.org/show_bug.cgi?id=97152
-
- Reviewed by Ryosuke Niwa.
-
- This change clones the TestExpectation parsing state machine
- from python into javascript.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (parsedExpectations.lines.forEach):
- (parsedExpectations):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-09-19 Dana Jansens <danakj@chromium.org>
-
- Add backer@chromium.org as contributor
- https://bugs.webkit.org/show_bug.cgi?id=97150
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- fix MISSING after TestExpectations conversion
- https://bugs.webkit.org/show_bug.cgi?id=97148
-
- Unreviewed, expectations change / build fix.
-
- * Scripts/convert-test-expectations:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: convert chromium TestExpectations to the new syntax
- https://bugs.webkit.org/show_bug.cgi?id=97139
-
- Reviewed by Ryosuke Niwa.
-
- Add in a file temporarily that does the conversion of
- test expectations formats
-
- * Tools/Scripts/convert-test-expectations: Added.
-
-2012-09-19 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION: run-perf-tests no longer reports the total test time
- https://bugs.webkit.org/show_bug.cgi?id=97138
-
- Reviewed by Tony Chang.
-
- Report the finished time as a info-level log as opposed to a debug level log.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._run_single_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.normalizeFinishedTime): Added. It replaces all finished times by 0.1 seconds.
- (test_run_test_pause_before_testing):
- (test_run_test_set_for_parser_tests):
- (test_run_memory_test):
- (_test_run_with_json_output):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- Support new TestExpectations format alongside old one
- https://bugs.webkit.org/show_bug.cgi?id=96588
-
- Reviewed by Ojan Vafai.
-
- This patch adds support for actually reading in lines formatted
- in the new style, and when we re-serialize/write out the file,
- all lines will be written in the new style. Note that reading in
- the old style is still supported, and no updates are being made
- to the actual TestExpectations files as part of this change.
-
- This change updates most but not all of the unit tests to use
- the new syntax. I will update the rest when (or before where
- possible) I drop support for the old format.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectationParser._tokenize_line):
- (TestExpectationParser._tokenize_line_using_new_format):
- (TestExpectationLine.to_string):
- (TestExpectationLine._format_line):
- (TestExpectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_parse_warning):
- (SkippedTests.test_skipped_entry_dont_exist):
- (NewExpectationSyntaxTests.test_warnings):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- (RebaseliningTest.test_remove):
- (RebaseliningTest.test_no_get_rebaselining_failures):
- (TestExpectationParserTests.test_tokenize_blank):
- (TestExpectationParserTests.test_tokenize_extra_colon):
- (TestExpectationParserTests.test_tokenize_missing_equal):
- (TestExpectationParserTests.test_tokenize_extra_equal):
- (TestExpectationSerializationTests.test_unparsed_to_string):
- (TestExpectationSerializationTests.test_unparsed_list_to_string):
- (TestExpectationSerializationTests.test_parsed_to_string):
- (TestExpectationSerializationTests.test_format_line):
- (TestExpectationSerializationTests.test_string_roundtrip):
- (TestExpectationSerializationTests.test_list_roundtrip):
- (TestExpectationSerializationTests.test_reconstitute_only_these):
- (TestExpectationSerializationTests.test_string_whitespace_stripping):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_lint_test_files__errors):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_basic):
- (PrintExpectationsTest.test_multiple):
- (PrintExpectationsTest.test_full):
- (PrintExpectationsTest.test_exclude):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_expectations_noop):
- (test_overrides_are_included_correctly):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- implement first part of support for the new TestExpectations syntax
- https://bugs.webkit.org/show_bug.cgi?id=96569
-
- Reviewed by Ryosuke Niwa.
-
- This patch implements support for parsing a line of the new
- format for the TestExpectations file and converting it back into
- the old format for compatibility. This routine is not yet used
- by anything.
-
- The new format is documented at:
- http://trac.webkit.org/wiki/TestExpectations
-
- but, in short:
-
- [bugs] [ "[" modifiers "]" ] test_name [ "[" expectations "]" ]
-
- - Comments are indicated with "#" instead of "//"
- - If no expectations are specified we default to Skip for
- compatibility with the Skipped files (these two changes make
- Skipped files a subset of TestExpectations files)
-
- - All of the tokens are now CamelCase instead of ALLCAPS.
- - FAIL -> Failure
- - IMAGE -> ImageOnlyFailure
- - WONTFIX -> WontFix
- - modifiers refer to just the platforms and configurations
- (release/debug) that the line applies to.
- - WontFix, Rebaseline, Slow, and Skip move to the right-hand side as
- expectations
- - expectations will typically be written out in lexicographic order
- - We use webkit.org/b/12345, crbug.com/12345, and Bug(dpranke)
- instead of BUGWK12345, BUGCR12345, and BUGDPRANKE.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser):
- (TestExpectationParser._tokenize_line_using_new_format):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (NewExpectationSyntaxTests):
- (NewExpectationSyntaxTests.assert_exp):
- (NewExpectationSyntaxTests.test_bare_name):
- (NewExpectationSyntaxTests.test_bare_name_and_bugs):
- (NewExpectationSyntaxTests.test_comments):
- (NewExpectationSyntaxTests.test_config_modifiers):
- (NewExpectationSyntaxTests.test_unknown_config):
- (NewExpectationSyntaxTests.test_unknown_expectation):
- (NewExpectationSyntaxTests.test_skip):
- (NewExpectationSyntaxTests.test_slow):
- (NewExpectationSyntaxTests.test_wontfix):
- (NewExpectationSyntaxTests.test_blank_line):
- (NewExpectationSyntaxTests.test_warnings):
-
-2012-09-19 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: replace TEXT, AUDIO, and IMAGE+TEXT with FAIL
- https://bugs.webkit.org/show_bug.cgi?id=96845
-
- Reviewed by Ojan Vafai.
-
- In preparation for the new TestExpectations syntax, we replace
- all TEXT, IMAGE+TEXT, and AUDIO failures with FAIL. This will
- make switching to the new syntax lossless (i.e., we lose
- information now, not then).
-
- Note that we can still parse in results.json files that have the
- old data for backwards compatibility.
-
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- (JSONTestResult._failure_types_from_actual_result):
- * Scripts/webkitpy/common/net/resultsjsonparser_unittest.py:
- (ResultsJSONParserTest):
- (test_basic):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_summarized_results_wontfix):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- (TestExpectations.remove_pixel_failures):
- (TestExpectations.has_pixel_failures):
- (TestExpectations.suffixes_for_expectations):
- (TestExpectations.get_rebaselining_failures):
- (TestExpectations.remove_configuration_from_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (assert_bad_expectations):
- (BasicTests):
- (BasicTests.test_basic):
- (MiscTests):
- (MiscTests.test_multiple_results):
- (MiscTests.test_result_was_expected):
- (MiscTests.test_remove_pixel_failures):
- (MiscTests.test_suffixes_for_expectations):
- (test_get_expectations_string):
- (test_parse_warning):
- (test_error_on_different_platform):
- (test_error_on_different_build_type):
- (test_overrides):
- (test_overrides__directory):
- (test_overrides__duplicate):
- (test_pixel_tests_flag):
- (test_more_specific_override_resets_skip):
- (SkippedTests.test_skipped_file_overrides_expectations):
- (SkippedTests.test_skipped_dir_overrides_expectations):
- (SkippedTests.test_skipped_file_overrides_overrides):
- (SkippedTests.test_skipped_dir_overrides_overrides):
- (ExpectationSyntaxTests.test_missing_colon):
- (ExpectationSyntaxTests.test_too_many_equals_signs):
- (SemanticTests.test_bug_format):
- (SemanticTests.test_bad_bugid):
- (SemanticTests.test_missing_bugid):
- (SemanticTests.test_rebaseline):
- (test_missing_file):
- (test_more_modifiers):
- (test_order_in_file):
- (test_macro_overrides):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- (RebaseliningTest.test_remove):
- (TestExpectationSerializationTests.test_serialize_parsed_expectations):
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (determine_result_type):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_test_expectations):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_retrying_and_flaky_tests):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_valid_expectations):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_basic):
- (PrintExpectationsTest.test_multiple):
- (PrintExpectationsTest.test_full):
- (PrintExpectationsTest.test_exclude):
- (PrintExpectationsTest.test_csv):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_does_not_include_overrides):
- (test_overrides_are_included_correctly):
-
-2012-09-19 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: A few control types are returning the wrong answer for isReadOnly
- https://bugs.webkit.org/show_bug.cgi?id=96735
-
- Reviewed by Chris Fleizach.
-
- Exposing isReadOnly in an AccessibilityObject to DumpRenderTree.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::isReadOnlyGetterCallback):
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
-
-2012-09-19 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [WTR] Memory leaks in TestRunner::deliverWebIntent()
- https://bugs.webkit.org/show_bug.cgi?id=97111
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix memory leaks in deliverWebIntent() by adopting strings
- created with WKStringCreateWithUTF8CString().
-
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::deliverWebIntent):
-
-2012-09-19 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix incremental builds with all-in-one-files and gccdepends
-
- Reviewed by Tor Arne Vestbø.
-
- Pass -MP to gcc when we use the gcc depends feature, to ensure that implicit rules
- are not only created for header files but also for .cpp files. AllInOne.cpp files
- include other .cpp files, and when those are removed we need those dummy rules to
- avoid a "No rule to make Foo.cpp required by AllInOne.o" error.
-
- * qmake/config.tests/gccdepends/empty.cpp:
- (main):
- * qmake/config.tests/gccdepends/gccdepends.pro:
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-19 Rick Byers <rbyers@chromium.org>
-
- Do touch adjustment on GestureTapDown
- https://bugs.webkit.org/show_bug.cgi?id=96677
-
- Reviewed by Antonio Gomes.
-
- Allow radius to be set for GestureTapDown events.
- * DumpRenderTree/chromium/TestRunner/EventSender.cpp:
- (EventSender::gestureEvent):
-
-2012-09-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DRT does not support overriding 'WebKitCSSRegionsEnabled' preference
- https://bugs.webkit.org/show_bug.cgi?id=97100
-
- Reviewed by Gyuyoung Kim.
-
- EFL's DRT now supports overriding the 'WebKitCSSRegionsEnabled'
- preference, in order to match WebKitTestRunner functionality.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::overridePreference):
-
-2012-09-18 Kangil Han <kangil.han@samsung.com>
-
- [WK2][WTR] CodeGeneratorTestRunner could keep original copyright.
- https://bugs.webkit.org/show_bug.cgi?id=96181
-
- Reviewed by Daniel Bates.
-
- This patch enabled derived files, in DerivedSources/InjectedBundle, to keep original copyright.
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- (new):
- (_parseLicenseBlock):
- (_parseLicenseBlockFromFile):
- (_defaultLicenseBlock):
- (_licenseBlock):
- (_generateHeaderFile):
- (_generateImplementationFile):
-
-2012-09-18 Byungwoo Lee <bw80.lee@samsung.com>
-
- Title string should be changed when document.title is set to ''.
- https://bugs.webkit.org/show_bug.cgi?id=96793
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Change dump format of dumpTitleChanges more understandable.
- Uses single quotation marks for the title string.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::didReceiveTitleForFrame):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveTitle):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameTitleChanged):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewTitleChanged):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didReceiveTitle:forFrame:]):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::titleChanged):
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::didReceiveTitle):
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (LayoutWebViewEventHandler::OnReceivedTitleEvent):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
-
-2012-09-18 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- EWS shouldn't sleep if there are new patches in its queue
- https://bugs.webkit.org/show_bug.cgi?id=83038
-
- Reviewed by Eric Seidel.
-
- EWS tries to process a security patch. Of course it can't, because the EWS isn't
- the member of the security group. But the problem is that after it can't process
- the attachment, it says that queue is empty (but it isn't!) and it sleeps 2 minutes
- and push the security patch to the end of the queue.
- Now it stays in the loop until it finds a patch or the queue gets empty.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractPatchQueue._next_patch):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractPatchQueueTest.test_next_patch):
-
-2012-09-18 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] InjectedBundle::booleanForKey() should handle literals effectively
- https://bugs.webkit.org/show_bug.cgi?id=97014
-
- Reviewed by Kenneth Rohde Christiansen.
-
- According to http://trac.webkit.org/wiki/EfficientStrings WTF::StringBuilder::appendLiteral() shall
- be used for literals rather than WTF::StringBuilder::append().
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::booleanForKey):
-
-2012-09-18 Simon Hausmann <simon.hausmann@digia.com>
-
- Update my e-mail address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-18 Andras Becsi <andras.becsi@digia.com>
-
- Update my e-mail address.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-18 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] qt_webkit.pri should not be listed in Tools.pro
-
- Reviewed and rubber-stamped by Simon Hausmann and Tor Arne Vestbø.
-
- Since r128751 the module pri file is auto-generated
- but it was still listed in OTHER_FILES.
-
- * Tools.pro: Remove unneeded line.
-
-2012-09-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build with some versions of the gold linker
-
- Reviewed by Tor Arne Vestbø.
-
- Don't unconditionally pass --no-keep-memory to the linker, some versions might not support it.
- Instead run a compile/link test first to see if it works.
-
- * qmake/config.tests/gnuld/gnuld.pro: Added.
- * qmake/config.tests/gnuld/main.cpp: Added.
- (main):
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-09-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Remove forced use of gold.
-
- Reviewed by Tor Arne Vestbø.
-
- The choice of what linker to use with WebKit should be taken by Qt's build system and ideally the same for all
- modules of Qt. Then in turn it is usually up to the administrator of the machine. Recent Debian based systems
- often offer the automatic use of gold through a symlink and a dpkg-diversion when installing the gold package.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-09-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Prospective Qt/Windows cross-compiling fix
-
- Reviewed by Tor Arne Vestbø.
-
- The win32 scope is not set when cross-compiling from Linux to Windows.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-18 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL] Remove background view on EWebLauncher and MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=96905
-
- Reviewed by Gyuyoung Kim.
-
- The size of webview was changed after adding url bar.
- And the background view is not necessary anymore, since it was used for debugging back in the day.
-
- * EWebLauncher/main.c:
- (_ELauncher):
- (on_ecore_evas_resize):
- (browserCreate):
- * MiniBrowser/efl/main.c:
- (_MiniBrowser):
- (on_ecore_evas_resize):
- (browserCreate):
-
-2012-09-18 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] run-webkit-tests unable to find TestExpectations for WK2
- https://bugs.webkit.org/show_bug.cgi?id=96998
-
- Reviewed by Philippe Normand.
-
- We should look for TestExpectations files in all the locations where
- we currently look for Skipped files. This will allow
- run-webkit-tests to look for TestExpectations files in
- platform/gtk-wk2 and platform/wk2 if the "-2" flag is used.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.expectations_files):
-
-2012-09-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix build without the QtQuick module
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-09-18 Stephanie Lewis <slewis@apple.com>
-
- Build fix after http://trac.webkit.org/projects/webkit/changeset/128852.
-
- Unreviewed.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (poseAsClass):
-
-2012-09-18 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- Unreviewed update of email addresses for Berlin QtWebKit office.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-17 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] fast/loader/display-image-unset-can-block-image-and-can-reload-in-place.html failing after r128645
- https://bugs.webkit.org/show_bug.cgi?id=96899
-
- Reviewed by Martin Robinson.
-
- When overriding the 'WebKitDisplayImageKey' preference, use the
- 'auto-load-images' property of WebKitWebSettings as the property which
- should be updated with the corresponding preference value.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::overridePreference):
-
-2012-09-17 Pratik Solanki <psolanki@apple.com>
-
- DumpRenderTree and WebKitTestRunner should compile with -Wundef on Mac
- https://bugs.webkit.org/show_bug.cgi?id=96973
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/PlatformWebView.h: Use #ifdef __OBJC__ and not #if.
-
-2012-09-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove "unexpected EOF" warnings
- https://bugs.webkit.org/show_bug.cgi?id=96970
-
- Reviewed by Ojan Vafai.
-
- After debugging this a bit, it looks like there aren't any cases
- that I can reproduce where a read() of zero indicates something
- actually wrong; either it is a prelude to a crash, or a false
- negative. So, I'm removing these warnings and adding a comment.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
-
-2012-09-17 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] ASAN bot is crashing at the end of the run
- https://bugs.webkit.org/show_bug.cgi?id=96967
-
- Reviewed by Abhishek Arya.
-
- The ASAN bot is crashing attempting to decode some output into
- UTF-8; there's no reason to do this, so let's not do this and
- see if something else is going on as well.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._get_crash_log):
-
-2012-09-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --results-directory isn't getting printed properly
- https://bugs.webkit.org/show_bug.cgi?id=96965
-
- Reviewed by Ojan Vafai.
-
- options.results_directory isn't actually initialized with the
- default values until after we call print_config(), so this
- changes things to print the value directly.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_config):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_config):
-
-2012-09-17 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Enable VIDEO_TRACK
- https://bugs.webkit.org/show_bug.cgi?id=96949
-
- Reviewed by Antonio Gomes.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-09-17 Rick Byers <rbyers@chromium.org>
-
- Add handling of new GestureTapCancel in DRT
-
- https://bugs.webkit.org/show_bug.cgi?id=96183
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleInputEvent):
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::gestureTapCancel):
-
-2012-09-17 Philip Rogers <pdr@google.com>
-
- Teach style checker about preprocessor directive indentation rules
- https://bugs.webkit.org/show_bug.cgi?id=96874
-
- Reviewed by Adam Barth.
-
- Preprocessor directives (#ifdef, #include, #define, etc.) should not be indented.
- This is not explicit in our style guide but is generally followed in our code.
- Searching for violations in our codebase shows these are rarely indented:
- #include - indented in 6 files
- #ifdef - indented in 0 files
- #ifndef - indented in 1 file
- #define - indented in 11 files
- #if - indented in 7 files
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_directive_indentation):
-
- This is the simple test where we look for spaces followed by a #.
-
- (check_style):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
-
- A few tests needed to be modified because they had unintentionally indented
- preprocessor directives.
-
- (CppStyleTest.test_build_class.Foo):
- (CppStyleTest.test_build_class):
- (CppStyleTest.test_build_class.DERIVE_FROM_GOO):
- (WebKitStyleTest.test_line_breaking):
- (WebKitStyleTest.test_directive_indentation):
-
-2012-09-17 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Auto-generate the module pri file for QtWebKit
-
- Reviewed by Simon Hausmann.
-
- * qmake/qt_webkit.pri: Removed.
-
-2012-09-14 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --additional-platform-dir is broken on chromium ports
- https://bugs.webkit.org/show_bug.cgi?id=96840
-
- Reviewed by Ojan Vafai.
-
- Looks like I broke this when cleaning things up as part of
- adding ML support. Fixing and adding a test.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_check_build):
- (test_additional_platform_directory):
-
-2012-09-13 Stephanie Lewis <slewis@apple.com>
-
- mac-future ignores previous platform TestExpectations.
- https://bugs.webkit.org/show_bug.cgi?id=96718.
-
- Reviewed by Dirk Pranke.
-
- TestExpectations match an expectation's configuraton against a list of configurations that are
- valid for that port. That list does not contain mac-future so none of the expectations can be
- applied.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort._generate_all_test_configurations):
-
-2012-09-14 Adam Barth <abarth@webkit.org>
-
- Remove webkitPostMessage
- https://bugs.webkit.org/show_bug.cgi?id=96577
-
- Reviewed by Ojan Vafai.
-
- Add ENABLE_LEGACY_VENDOR_PREFIXES flag.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-09-14 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] webarchive/loading/javascript-url-iframe-crash.html fails
- https://bugs.webkit.org/show_bug.cgi?id=96817
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame): This callback
- got overlooked when adding logging elsewhere.
-
-2012-09-14 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Build fix for DumpRenderTree following r128628
- https://bugs.webkit.org/show_bug.cgi?id=96808
-
- Reviewed by Tony Chang.
-
- When building DumpRenderTree from the Chromium project, a compile error
- shows up because including the header ForwardIOStreamsAndroid.h cannot
- be located. TestWebKitAPI does this correctly.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-09-14 Dana Jansens <danakj@chromium.org>
-
- Change cc-bugs@google.com watchlist to cc-bugs@chromium.org
- https://bugs.webkit.org/show_bug.cgi?id=96805
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-09-14 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Support the --{in,out,err}-fifo arguments on TestWebKitAPI and webkit_unit_tests
- https://bugs.webkit.org/show_bug.cgi?id=96687
-
- Reviewed by Tony Chang.
-
- Android's DumpRenderTree currently supports these arguments, implemented
- as part of TestShellAndroid:
- http://trac.webkit.org/browser/trunk/Tools/DumpRenderTree/chromium/TestShellAndroid.cpp?rev=128496
-
- They're used by the layout test runner to get the STDOUT and STDERR while
- a layout test run is in process, which is a safer alternative to parsing
- all the logcat output manually. The implementation can be seen here:
- http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py?rev=128496#L590
-
- This patch generalizes parsing of and applying the effects of these arguments
- so that they can be used for TestWebKitAPI and webkit_unit_tests as well.
- After this patch, this will make it possible to pull out the output-reading
- code from Android's layout test port and generalize it so it can be re-used
- in the new test-runner for the other two test suites.
-
- This has no effect when compiling and running these tests as part of Chromium
- code, which has a much more advanced test-runner that does parse complete log
- output, but also directly depends on code licensed under Apache 2.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit):
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-09-14 Zoltan Horvath <zoltan@webkit.org>
-
- check-webkit-style should not warn in case of NONCOPYABLE and FAST_ALLOCATED macros
- https://bugs.webkit.org/show_bug.cgi?id=96656
-
- Reviewed by Adam Barth.
-
- We should allow to use WTF_MAKE_NONCOPYABLE(ClassName) and WTF_MAKE_FAST_ALLOCATED
- macros in 1 line.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_style.definitions):
- (check_style): Add rule.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_line_breaking): Add unittest.
-
-2012-09-14 Christophe Dumez <christophe.dumez@intel.com>
-
- WebKitTestRunner needs layoutTestController.dumpDatabaseCallbacks
- https://bugs.webkit.org/show_bug.cgi?id=57570
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement testRunner.dumpDatabaseCallbacks in WebKitTestRunner
- and dump the information expected by the test cases.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting): Explicitly set the default
- database quota.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::securityOriginToStr): New convenience function to convert
- a security origin to the string expected in test results.
- (WTR):
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didExceedDatabaseQuota):
- (WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota): Minor
- refactoring to share code with didExceedDatabaseQuota.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::dumpDatabaseCallbacks):
- (WTR::TestRunner::shouldDumpDatabaseCallbacks):
- (TestRunner):
-
-2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Set force_static_libs_as_shared early enough to be caught by configure
-
- Rubber-stamped by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove old cruft from the qmake build system
-
- Rubber-stamped by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Enable force_static_libs_as_shared for development
-
- Not enabled for buildbots or production-builds (part of Qt5)
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make force_static_libs_as_shared work on Mac OS
-
- We had to move a few LIBS += around that were in the wrong place,
- and not caught when everything was just linked into the final
- QtWebKit library.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/force_static_libs_as_shared.prf:
-
-2012-09-14 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix build of WTR on Windows
-
- Reviewed by Tor Arne Vestbø.
-
- WTR/qt/main.cpp includes TestController.h, which lives in just WTR/
- With qmake's unix makefile generator as well as with the MingW generator,
- the directory where the pro file lives (WTR/) is automatically added to
- the include search path, but not so with MSVC. Instead of relying on qmake's
- implicit feature here, add WTR/ explicitly to the include search path.
-
- * WebKitTestRunner/Target.pri:
-
-2012-09-14 Christophe Dumez <christophe.dumez@intel.com>
-
- WebKitTestRunner needs layoutTestController.setStopProvisionalFrameLoads
- https://bugs.webkit.org/show_bug.cgi?id=42691
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add implementation for testrunner.setStopProvisionalFrameLoads()
- in WebKitTestRunner.
-
- Original patch by Alexey Proskuryakov.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- (WTR::TestRunner::setStopProvisionalFrameLoads):
- (WTR::TestRunner::shouldStopProvisionalFrameLoads):
-
-2012-09-14 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix handling of debug/release/debug_and_release/build_all
-
- We now pick up the defaults from Qt, in default_pre (CONFIG already
- contains the appropriate values for debug and release). We then let
- the command line arguments to qmake, or the project files themselves,
- override the configuration, and finally we sanitize the configuration
- in default_post.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/mac/default_pre.prf:
-
-2012-09-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- WebKitTestRunner needs layoutTestController.setTabKeyCyclesThroughElements
- https://bugs.webkit.org/show_bug.cgi?id=42687
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement testRunner.setTabKeyCyclesThroughElements for
- WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setTabKeyCyclesThroughElements):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- EventSendingController::keyDown does not support non-array modifier arguments
- https://bugs.webkit.org/show_bug.cgi?id=96727
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for handling a string as modifier argument to
- EventSendingController::keyDown.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::parseModifierArray):
-
-2012-09-14 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs layoutTestController.setCustomPolicyDelegate
- https://bugs.webkit.org/show_bug.cgi?id=42546
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Exported TestRunner::setCustomPolicyDelegate() method.
- Allowed Policy Delegate dumping even if we're not in 'waitUntilDone' mode.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
-
-2012-09-14 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Clear application cache between tests in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=96543
-
- Reviewed by Philippe Normand.
-
- Call the new DumpRenderTreeSupportGtk method to clear application cache
- after each test in DumpRenderTree.
-
- Set the XDG_CACHE_HOME environment variable when running DumpRenderTree
- as well. It's now being set in XvfbDriver._start so that each driver is assigned
- a cache directory that's constructed out of the driver's name and its worker
- number. These directories are located in the layout tests results directory.
- At least on the builders this ensures a driver-specific empty cache directory
- with each test run.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
-
-2012-09-14 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix linking on Windows
-
- Reviewed by Tor Arne Vestbø.
-
- When compiling code _after_ QtWebKit.dll, we need to make sure that the QWEBKIT_EXPORT
- macro turns into an import macro, which means QT_MAKEDLL should only be set _up until_
- the QtWebKit.dll creation in the build process and be off afterwards. This is done in
- win32/default_post.prf using a !contains(QT, webkit): DEFINES += QT_MAKEDLL.
-
- r128450 sanitized the values of QT and PKGCONFIG to only contain the dependencies we
- want for QtWebKit.dll, but unfortunately that code was applied to any binary built also
- after the module. Therefore QT did never contain webkit anymore and we always passed
- QT_MAKEDLL to DEFINES, resulting in QWEBKIT_EXPORT to _not_ turn into an import macro.
-
- This patch introduces a creating_module configuration that is used to
- scope the qt/pkgconfig sanitization.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-14 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner is not dumping some frame load callbacks information
- https://bugs.webkit.org/show_bug.cgi?id=96740
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Dump information expected by the test cases about the following
- frame load callbacks:
- "didDisplayInsecureContentForFrame"
- "didRunInsecureContentForFrame"
- "didDetectXSSForFrame"
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willPerformClientRedirectForFrame): Print a URL
- as expected by test results by calling pathSuitableForTestResult() instead
- of printing raw URL.
- (WTR::InjectedBundlePage::didDisplayInsecureContentForFrame):
- (WTR::InjectedBundlePage::didRunInsecureContentForFrame):
- (WTR::InjectedBundlePage::didDetectXSSForFrame):
-
-2012-09-14 Peter Beverloo <peter@chromium.org>
-
- The runtime/unsigned category should be valid in the cpp style-checker.
- https://bugs.webkit.org/show_bug.cgi?id=96748
-
- Reviewed by Csaba Osztrogonác.
-
- This is causing the webkitpy tests to fail because it's not listed in the
- category array. Furthermore, change an "int" to "long" because it's
- throwing a double error in one of the earlier asserts.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (CppChecker):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_names):
-
-2012-09-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Evas_Object* is a ref'ed structure, so tread it as such
- https://bugs.webkit.org/show_bug.cgi?id=96659
-
- Reviewed by Adam Barth.
-
- Replace OwnPtr<Evas_Object> with RefPtr.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (calculateDifference):
- (printImageDifferences):
- (readImageFromStdin):
- (main):
-
-2012-09-14 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed, rolling out r128507.
- http://trac.webkit.org/changeset/128507
- https://bugs.webkit.org/show_bug.cgi?id=96659
-
- Revert. r128507 makes too many crashes in EFL layout test bots.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (calculateDifference):
- (printImageDifferences):
- (readImageFromStdin):
- (main):
-
-2012-09-13 Kevin Funk <kevin.funk@kdab.com>
-
- Make compile with both OS(WINCE) and PLATFORM(QT) support
- https://bugs.webkit.org/show_bug.cgi?id=95536
-
- Reviewed by Simon Hausmann.
-
- Fix wince support in qmake files
-
- * Tools.pro:
- * qmake/mkspecs/features/configure.prf:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-13 KwangYong Choi <ky0.choi@samsung.com>
-
- [WK2] Add color picker API support for WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=95058
-
- Reviewed by Gyuyoung Kim.
-
- Initialization code for color picker callbacks in UI client.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
-
-2012-09-13 Yuta Kitamura <yutak@chromium.org>
-
- Upgrade yutak to reviewer
- https://bugs.webkit.org/show_bug.cgi?id=96721
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-13 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- Make the style checker report usage of "unsigned int"
- https://bugs.webkit.org/show_bug.cgi?id=96693
-
- Reviewed by Dirk Pranke.
-
- Add a rule to check for uses of unsigned int, as the updated coding style recomends.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_language):
-
-2012-09-13 Philip Rogers <pdr@google.com>
-
- Add gender-neutral form of webkit-patch land-cowboy
- https://bugs.webkit.org/show_bug.cgi?id=96709
-
- Reviewed by Adam Barth.
-
- Add webkit-patch land-cowhand, the confident and courageous form of webkit-patch for everyone.
-
- * Scripts/webkitpy/tool/commands/download.py:
- (LandCowhand):
-
-2012-09-13 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL] Remove some parameters in browserCreate()
- https://bugs.webkit.org/show_bug.cgi?id=96499
-
- Reviewed by Kenneth Rohde Christiansen.
-
- There are too many parameters in browserCreate(). Lots of it seems like settings from command line argument.
- And I have moved some parameters into User_Arguments.
-
- * EWebLauncher/main.c:
- (_User_Arguments):
- (_ELauncher):
- (on_key_down):
- (browserCreate):
- (findThemePath):
- (parseUserArguments):
- (main):
-
-2012-09-13 Mark Lam <mark.lam@apple.com>
-
- Unreviewed. Adding myself to the committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-13 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests output cryptic error when the config file is missing.
- https://bugs.webkit.org/show_bug.cgi?id=96453
-
- Reviewed by Tony Chang.
-
- Add a special error message when a configuration file is missing.
-
- Also update the help message of --source-json-path to signify the fact it specifies
- the configuration file on performance tests bots.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._generate_and_show_results):
- (PerfTestsRunner._merge_slave_config_json):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (_test_run_with_json_output): Make upload to fail by default and assert the result
- in the function so that we can return logs instead.
- (_test_run_with_json_output.mock_upload_json):
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_respects_no_results):
- (test_run_with_slave_config_json):
- (test_run_with_bad_slave_config_json):
- (test_run_with_multiple_repositories):
-
-2012-09-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Evas_Object* is a ref'ed structure, so tread it as such
- https://bugs.webkit.org/show_bug.cgi?id=96659
-
- Reviewed by Adam Barth.
-
- Replace OwnPtr<Evas_Object> with RefPtr.
-
- * DumpRenderTree/efl/ImageDiff.cpp:
- (calculateDifference):
- (printImageDifferences):
- (readImageFromStdin):
- (main):
-
-2012-09-13 Csaba Osztrogonác <ossy@webkit.org>
-
- One more unreviewed trivial fix after r128399.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Fix URLs of the SVN mirror server.
-
-2012-09-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed trivial fix after r128399.
-
- * BuildSlaveSupport/wait-for-SVN-server.py: Renamed from Tools/BuildSlaveSupport/build.webkit.org-config/wait-for-SVN-server.py.
- (getLatestSVNRevision):
- (waitForSVNRevision):
-
-2012-09-13 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [WK2][WTR] WebKitTestRunner needs testRunner.callShouldCloseOnWebView
- https://bugs.webkit.org/show_bug.cgi?id=96366
-
- Reviewed by Anders Carlsson.
-
- Implement testRunner.callShouldCloseOnWebView for WebKitTestRunner
- by calling shouldClose() on the FrameLoader.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::callShouldCloseOnWebView):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r128453.
- http://trac.webkit.org/changeset/128453
- https://bugs.webkit.org/show_bug.cgi?id=96681
-
- Having tests use the same appcache directory leads to timeouts
- (Requested by zdobersek on #webkit).
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
-
-2012-09-13 James Robinson <jamesr@chromium.org>
-
- [chromium] Temporarily remove Android Builder (dbg) from garden-o-matic view
- https://bugs.webkit.org/show_bug.cgi?id=96678
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-09-13 Rob Buis <rbuis@rim.com>
-
- Unreviewed changes to watchlist.
-
- - Add myself to BlackBerry bugs
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-09-13 Stephen Chenney <schenney@chromium.org>
-
- Add an SVG entry to the watchlist
-
- Unreviewed config change.
-
- * Scripts/webkitpy/common/config/watchlist:
- - Created a new SVG watchlist label covering WebCore/svg and WebCore/rendering/svg
- - Added myself and pdr as watchers
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Make WebKit2 work on Windows with Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=76776
-
- Reviewed by Tor Arne Vestbø.
-
- WebKit2 should compile with Qt on Windows now, so enable it. This patch in fact corrects
- the check to disable WebKit when we don't have USE_3D_GRAPHICS available, because we need
- that for the GL TextureMapper (it's only built when that feature is set).
-
- * qmake/mkspecs/features/configure.prf:
-
-2012-09-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Ensure that QT is finalized before loading qt_module.prf
-
- As qt_module.prf does dependency tracking based on the content of the
- QT variable. The intermediate WebKit modules modify the variable in
- their .pri files, so we have to ensure we've loaded all the modules
- before loading qt_module.
-
- Reviewed by Tor Arne Vestbø.
- Patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> on 2012-09-13
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/webkit_modules.prf: Added.
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix build of Qt WTR/MiniBrowser with MSVC and nmake
- https://bugs.webkit.org/show_bug.cgi?id=96633
-
- Reviewed by Csaba Osztrogonác.
-
- WTR and MiniBrowser both have DRT in their include path (for the shared font stuff). Batch
- builds with MSVC and nmake result in nmake picking up main.cpp from the wrong directory.
- It's the usual problem and the usual solution is to rename one of the conflicting files.
- This patch chooses to rename DRT instead of WTR and MBR.
-
- Fixed include order at the same time to match style guide.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp: Renamed from Tools/DumpRenderTree/qt/main.cpp.
- (messageHandler):
- (isOption):
- (takeOptionValue):
- (printUsage):
- (main):
-
-2012-09-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- The Script run-launcher should support -2 in combination with --efl
- https://bugs.webkit.org/show_bug.cgi?id=96639
-
- Reviewed by Simon Hausmann.
-
- Support running the MiniBrowser then supplied -2 as argument.
-
- * Scripts/run-launcher:
-
-2012-09-13 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Unreviewed, add my Intel email address to the list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't overwrite LIBS_PRIVATE when sanitizing LIBS
-
- Reviewed by Ossy.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-13 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [EFL][DRT] Implement LayoutTestController::layerTreeAsText
- https://bugs.webkit.org/show_bug.cgi?id=82294
-
- Reviewed by Gyuyoung Kim.
-
- Implement layerTreeAsText using the DumpRenderTreeSupportEfl method.
-
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::layerTreeAsText):
-
-2012-09-13 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Clear application cache between tests in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=96543
-
- Reviewed by Philippe Normand.
-
- Call the new DumpRenderTreeSupportGtk method to clear application cache
- after each test.
-
- Set the XDG_CACHE_HOME environment variable when running DumpRenderTree
- as well. Currently it points to a subdirectory in the layout tests results
- directory. At least on the builders this ensures an empty cache directory
- with each test run.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
-
-2012-09-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make sure LIBS, PKGCONFIG, and QT, do not affect QtWebKit's prl file
-
- Unless it's actually a dependency of the public QtWebKit API.
-
- We could replace every occurance of LIBS, PKGCONFIG, and QT, in the pri
- files with their _PRIVATE equivivalent, but that's likely to break when
- someone adds a new QT/LIBS/PKGCONFIG += foo line somewhere. Instead we
- clean up the variables in default_post.
-
- This means that the CONFIG -= explicitlib in linkAgainstLibrary() is no
- longer needed, as it was a workaround for the intermediate libraries ending
- up in the prl file. And, since CONFIG -= staticlib was there to support
- the explicitlib option, we can remove that too (as well as the exception
- for gprof, since it would be empty). If gprof needs tweaks to always link
- statically they should go in gprof.prf.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-13 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] "Infinite" loop in AccessibilityUIElementGtk.cpp
- https://bugs.webkit.org/show_bug.cgi?id=96632
-
- Reviewed by Carlos Garcia Campos.
-
- Fix this by using atk_object_get_n_accessible_children instead of
- calling getChildren() from childCount.
-
- * WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp:
- (WTR::AccessibilityUIElement::childrenCount): Avoid the infinite
- loop by using atk_object_get_n_accessible_children().
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][Win] Enable USE(3D_GRAPHICS)
- https://bugs.webkit.org/show_bug.cgi?id=90879
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable it on Windows as well as on QNX (bug fixed).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] The ANGLE build on Windows breaks with GnuWin32's flex because it is too old
- https://bugs.webkit.org/show_bug.cgi?id=96359
-
- Reviewed by Tor Arne Vestbø.
-
- GnuWin32's flex is 2.5.4 and that is too old for ANGLE's preprocessor
- lexer. The only viable alternative I could find on Windows that provides
- binaries is the winflexbison distribution (http://sourceforge.net/projects/winflexbison/),
- so let's use that one instead.
-
- * Scripts/webkitdirs.pm:
- (checkRequiredSystemConfig):
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Add configuration for production builds
- https://bugs.webkit.org/show_bug.cgi?id=96607
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add configuration tweaks for production builds, to ease memory pressure with the GNU toolchain
- and enable all-in-one-files optimizations.
-
- * qmake/mkspecs/features/production_build.prf: Added.
-
-2012-09-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] GStreamer detection does not work when cross-compiling
- https://bugs.webkit.org/show_bug.cgi?id=96608
-
- Reviewed by Kenneth Rohde Christiansen.
-
- When cross-compiling it is not safe to just use system(pkg-config),
- because there is a high probability that it will find packages in the
- host system instead of in the target one. Instead use qmake's new
- packagesExist() function that takes care of this delicate aspect of
- cross compilation by setting PKG_CONFIG_SYSROOT_DIR and
- PKG_CONFIG_LIBDIR accordingly.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-09-13 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WTR] More efficient string handling in InjectedBundlePage
- https://bugs.webkit.org/show_bug.cgi?id=96609
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update StringBuilder usage in InjectedBundlePage to follow
- the latest recommandations for efficient string handling:
- http://trac.webkit.org/wiki/EfficientStrings
-
- This involves using appendLiteral() or appendNumber()
- instead of append() whenever possible.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpPath):
- (WTR::rangeToStr):
- (WTR::styleDecToStr):
- (WTR::frameToStr):
- (WTR::dumpResourceURL):
- (WTR):
- (WTR::dumpFrameDescriptionSuitableForTestResult):
- (WTR::dumpRequestDescriptionSuitableForTestResult):
- (WTR::dumpResponseDescriptionSuitableForTestResult):
- (WTR::dumpErrorDescriptionSuitableForTestResult):
- (WTR::InjectedBundlePage::didReceiveIntentForFrame):
- (WTR::InjectedBundlePage::registerIntentServiceForFrame):
- (WTR::InjectedBundlePage::didStartProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
- (WTR::InjectedBundlePage::didCommitLoadForFrame):
- (WTR::InjectedBundlePage::didFinishProgress):
- (WTR::dumpFrameScrollPosition):
- (WTR::dumpFrameText):
- (WTR::dumpDescendantFramesText):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didReceiveTitleForFrame):
- (WTR::InjectedBundlePage::didCancelClientRedirectForFrame):
- (WTR::InjectedBundlePage::willPerformClientRedirectForFrame):
- (WTR::InjectedBundlePage::didFinishDocumentLoadForFrame):
- (WTR::InjectedBundlePage::didHandleOnloadEventsForFrame):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- (WTR::InjectedBundlePage::didReceiveResponseForResource):
- (WTR::InjectedBundlePage::didFinishLoadForResource):
- (WTR::InjectedBundlePage::didFailLoadForResource):
- (WTR::InjectedBundlePage::shouldCacheResponse):
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
- (WTR::InjectedBundlePage::willAddMessageToConsole):
- (WTR::InjectedBundlePage::willSetStatusbarText):
- (WTR::InjectedBundlePage::willRunJavaScriptAlert):
- (WTR::InjectedBundlePage::willRunJavaScriptConfirm):
- (WTR::InjectedBundlePage::willRunJavaScriptPrompt):
- (WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota):
- (WTR::InjectedBundlePage::shouldBeginEditing):
- (WTR::InjectedBundlePage::shouldEndEditing):
- (WTR::InjectedBundlePage::shouldInsertNode):
- (WTR::InjectedBundlePage::shouldInsertText):
- (WTR::InjectedBundlePage::shouldDeleteRange):
- (WTR::InjectedBundlePage::shouldChangeSelectedRange):
- (WTR::InjectedBundlePage::shouldApplyStyle):
- (WTR::InjectedBundlePage::didBeginEditing):
- (WTR::InjectedBundlePage::didEndEditing):
- (WTR::InjectedBundlePage::didChange):
- (WTR::InjectedBundlePage::didChangeSelection):
- (WTR::InjectedBundlePage::supportsFullScreen):
- (WTR::InjectedBundlePage::enterFullScreenForElement):
- (WTR::InjectedBundlePage::exitFullScreenForElement):
- (WTR::InjectedBundlePage::beganEnterFullScreen):
- (WTR::InjectedBundlePage::beganExitFullScreen):
- (WTR::InjectedBundlePage::closeFullScreen):
- (WTR::dumpBackForwardListItem):
- (WTR::InjectedBundlePage::dumpBackForwardList):
-
-2012-09-13 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [Qt][WK2] Memory leaks in Qt's TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=96603
-
- Reviewed by Csaba Osztrogonác.
-
- Fix memory leaks in Qt's TestRunner code by adopting WKString
- created with WKStringCreateWithUTF8CString().
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::initializeInjectedBundlePath):
- (WTR::TestController::initializeTestPluginDirectory):
-
-2012-09-13 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK][NRWT] Lower timeout value to 6 seconds (12 for debug configuration)
- https://bugs.webkit.org/show_bug.cgi?id=96506
-
- Reviewed by Dirk Pranke.
-
- Lower the timeout value to 6 seconds for release configuration and 12 seconds
- for debug configuration. These are the same values the Chromium port uses.
-
- Currently the value is lowered only for the DumpRenderTree, WebKitTestRunner (and
- the layout tests under WebKit2 generally) requires more attention and gardening
- than what the current effort produces.
-
- The unit test is updated as well to test these changes.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_default_timeout_ms):
- (GtkPortTest.assertLinesEqual):
-
-2012-09-12 Csaba Osztrogonác <ossy@webkit.org>
-
- Add SVN mirror handling feature to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=85887
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add SVN mirrors for Qt buildslaves hosted in Szeged.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ConfigureBuild.__init__): Add SVNMirror property to be able to watch which slaves use which mirror on build.webkit.org.
- (ConfigureBuild.start):
- (CheckOutSource.__init__): Set baseURL to the SVNMirror or the default http://svn.webkit.org/repository/webkit/
- (WaitForSVNServer): Add new buildstep for waiting the SVNMirror to be in sync with http://svn.webkit.org/repository/webkit/
- (Factory.__init__):
- (BuildFactory.__init__):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- (BuildAndPerfTestFactory.__init__):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestFactory.__init__):
- (DownloadAndPerfTestWebKit2Factory.__init__):
- (loadBuilderConfig): Use kwargs instead of args to be able to add the optional SVNMirror factory argument.
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (SVNMirrorTest):
- (SVNMirrorTest.setUp): Load config.json once at startup.
- (SVNMirrorTest.get_SVNMirrorFromConfig): Get the SVNMirror from config.json for a given buildslave.
- (SVNMirrorTest.test_CheckOutSource): Compare CheckOutSource.baseURL with SVNMirror in config.json for all builders
- * BuildSlaveSupport/build.webkit.org-config/wait-for-SVN-server.py: Added.
- (getLatestSVNRevision): Get the latest SVN revison from the given server.
- (waitForSVNRevision): Wait until the given SVN revision is committed to the given server. It doesn't wait if the
- SVN revision is empty (force build triggered without revision) or the server is unavailable.
-
-2012-09-12 Kangil Han <kangil.han@samsung.com>
-
- [WK2][WTR] Set waitUntilDone watchdog timer value equal to WK1.
- https://bugs.webkit.org/show_bug.cgi?id=81606
-
- Reviewed by Tim Horton.
-
- 6 seconds is harsh for some jquery test cases.
- Therefore, adjust the value to match DumpRenderTree.
-
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR):
-
-2012-09-12 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL] Support download attribute feature
- https://bugs.webkit.org/show_bug.cgi?id=96462
-
- Reviewed by Gyuyoung Kim.
-
- Enable DOWNLOAD_ATTRIBUTE feature for EFL port,
- and add "download,request" callback to the DumpRenderTree for EFL.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onDownloadRequest):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-09-12 Stephanie Lewis <slewis@apple.com>
-
- Reduce parallism on the wk2 testers.
- https://bugs.webkit.org/show_bug.cgi?id=95906
-
- Reviewed by Dirk Pranke.
-
- The wk2 testers on Mountain Lion are getting stuck and timing out. The problem appears to be due to
- resource contention. Reducing the number of processes alleviates the issue.
-
- Starting by reducing 25%.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_child_processes):
-
-2012-09-12 Brady Eidson <beidson@apple.com>
-
- Assert in NetscapePlugin::destroy() with async plugin init
- <rdar://problem/12277595> and https://bugs.webkit.org/show_bug.cgi?id=96576
-
- Reviewed by Anders Carlsson.
-
- Expose NPN_Invoke to plug-in tests:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_Invoke):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest):
-
- Add a test that uses NPN_Invoke on the window object from inside NPP_New to remove the plug-in element:
- * DumpRenderTree/TestNetscapePlugIn/Tests/InvokeDestroysPluginWithinNPP_New.cpp: Added.
- (InvokeDestroysPluginWithinNPP_New):
- (InvokeDestroysPluginWithinNPP_New::InvokeDestroysPluginWithinNPP_New):
- (InvokeDestroysPluginWithinNPP_New::NPP_New):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
-
-2012-09-12 Dirk Pranke <dpranke@chromium.org>
-
- refactor TestExpectations tokenization slightly in preparation for the new syntax
- https://bugs.webkit.org/show_bug.cgi?id=96564
-
- Reviewed by Ojan Vafai.
-
- This change changes how we will tokenize/lex the
- TestExpectations files, in preparation for supporting both the
- old syntax and the new one. This change by itself should be a
- no-op.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._tokenize_line):
- (TestExpectationParser):
- (TestExpectationParser._tokenize_line_using_old_format):
- (TestExpectationParser._tokenize_line_using_new_format):
-
-2012-09-12 Dirk Pranke <dpranke@chromium.org>
-
- remove unused testexpectations editing code from webkitpy, garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=96562
-
- Reviewed by Adam Barth.
-
- This code was prototyped but never fully realized. Removing
- until it reanimates :).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor.py: Removed.
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py: Removed.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (BuildCoverageExtrapolator.extrapolate_test_configurations):
- (GardeningHTTPRequestHandler._run_webkit_patch):
- (GardeningHTTPRequestHandler.ping):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-09-12 Lucas Forschler <lforschler@apple.com>
-
- Remove unused bot, apple-xserve-1.
- https://bugs.webkit.org/show_bug.cgi?id=96570
-
- Reviewed by Stephanie Lewis.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-09-12 Xan Lopez <xlopez@igalia.com>
-
- [GTK] We attempt to rebase documentation even if it's not present
- https://bugs.webkit.org/show_bug.cgi?id=96553
-
- Reviewed by Martin Robinson.
-
- Do not make the documentation rebase step fatal. This allows make
- install to succeed when there's no documentation generated.
-
- * gtk/generate-gtkdoc:
-
-2012-09-12 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Respect WEBKITOUTPUTDIR when running EFL tests
- https://bugs.webkit.org/show_bug.cgi?id=96528
-
- Reviewed by Dirk Pranke.
-
- Expose user set WEBKITOUTPUTDIR to the web process.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver._start): Add WEBKITOUTPUTDIR to the environment
- of the web process and its potential jhbuild wrapper.
-
-2012-09-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitdirs: fix uname version handling for cygwin
- https://bugs.webkit.org/show_bug.cgi?id=96436
-
- Reviewed by Jon Honeycutt.
-
- Newer versions of cygwin embed an additional version string
- inside parentheses, so you get "1.7.16(0.249/5/3)" instead of "1.7.16".
- Update the code to handle that.
-
- * Scripts/webkitdirs.pm:
- (setupAppleWinEnv):
-
-2012-09-12 Christophe Dumez <christophe.dumez@intel.com>
-
- Regression(r128338): Broke Windows build
- https://bugs.webkit.org/show_bug.cgi?id=96537
-
- Unreviewed build fix.
-
- Fix Apple-Win build by allocating array dynamically
- since its size is not constant.
-
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::stringArrayToJS):
-
-2012-09-12 Alex Sakhartchouk <alexst@chromium.org>
-
- [chromium] Add a virtual test suite for fast/hidpi
- https://bugs.webkit.org/show_bug.cgi?id=90192
-
- Reviewed by Dirk Pranke.
-
- Add a virtual test suite to make sure the pixel tests in fast/hidpi give the same result
- on the hardware accelerated path as the software path.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-09-12 Adam Klein <adamk@chromium.org>
-
- [chromium] Add content_browsertests to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=96535
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2012-09-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs to implement originsWithApplicationCache
- https://bugs.webkit.org/show_bug.cgi?id=96496
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add implementation for originsWithApplicationCache to
- WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::stringArrayToJS):
- (WTR):
- (WTR::TestRunner::originsWithApplicationCache):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Fix Qt/Windows build with Python3
- https://bugs.webkit.org/show_bug.cgi?id=96473
-
- Reviewed by Csaba Osztrogonác.
-
- In Python 3 print is a real function, so we must use parentheses around
- the function parameters. This is backwards compatible with Python 2.
-
- * Scripts/generate-win32-export-forwards:
-
-2012-09-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed trivial build fix for Qt/Windows after bug #96358.
-
- As pointed out by Kevin, we should inject the "set PATH=..." statement
- to add the GnuWin32 directory only if that directory actually exists.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-12 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [WK2] Memory leaks in TestControllerEfl
- https://bugs.webkit.org/show_bug.cgi?id=96525
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix memory leaks in EFL's TestRunner code by adopting an allocation
- of WKString created with WKStringCreateWithUTF8CString().
-
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::initializeInjectedBundlePath):
- (WTR::TestController::initializeTestPluginDirectory):
-
-2012-09-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks
- https://bugs.webkit.org/show_bug.cgi?id=96374
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement support for dumpApplicationCacheDelegateCallbacks
- and disallowIncreaseForApplicationCacheQuota in
- WebKitTestRunner and properly dump the information
- expected by the tests.
-
- If the application cache quota is reached for a given
- security origin, WebKitTestRunner will reset the quota
- to its default value, unless intructed not to via
- disallowIncreaseForApplicationCacheQuota().
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- (WTR::TestRunner::disallowIncreaseForApplicationCacheQuota):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::dumpApplicationCacheDelegateCallbacks):
- (TestRunner):
- (WTR::TestRunner::shouldDisallowIncreaseForApplicationCacheQuota):
- (WTR::TestRunner::shouldDumpApplicationCacheDelegateCallbacks):
-
-2012-09-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove deprecated and unused sets import from chromium_android driver
- https://bugs.webkit.org/show_bug.cgi?id=96485
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
-
-2012-09-12 Zan Dobersek <zandobersek@gmail.com>
-
- Flakiness dashboard doesn't recognize new Chromium Android test builder
- https://bugs.webkit.org/show_bug.cgi?id=96523
-
- Reviewed by Ojan Vafai.
-
- Properly return 'ANDROID' as the Chromium platform for Android builders.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (chromiumPlatform):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-09-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Build on Windows requires bison/flex in PATH
- https://bugs.webkit.org/show_bug.cgi?id=96358
-
- Reviewed by Tor Arne Vestbø.
-
- The build requires flex, bison, etc. and they need to be in the PATH when building. On Mac OS X
- and Linux that is rarely a problem given how easily available the tools are. On Windows however
- a separate installation of various GNU tools is required as the operating system doesn't come with
- them. To make the development more convenient, Qt 5 provides a copy of the most essential tools in
- the gnuwin32 directory of the qt5.git top-level repository.
-
- This patch tries to detect the presence of those tools and prepends them to the PATH if found.
-
- This is required in preparation for the elimination of qt5/qtwebkit.pri, which currently expands
- PATH before calling build-webkit. It it also required for the upcoming introduction of win_flex
- as dependency over flex, which can be done with less hassle when qt5's gnuwin32 directory has been
- updated with the new tool.
-
- * Scripts/webkitdirs.pm:
- (checkRequiredSystemConfig):
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Update build-jsc after r128174
-
- Reviewed by Ossy.
-
- * Scripts/build-jsc:
-
-2012-09-12 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Teach addStrictSubdirOrderBetween to handle more than two targets
-
- By hard-coding the names of the targets we defined we ended up just
- redefining the previous target when using addStrictSubdirOrderBetween
- more than once in a single project file.
-
- We now embed the two base targets into the target names.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-12 Philippe Liard <pliard@google.com>
-
- Depend on {base,net} GYP targets rather than {base,net}_java.
- https://bugs.webkit.org/show_bug.cgi?id=95690
-
- Reviewed by Adam Barth.
-
- {base,net}_java became 'private' targets on the Chromium side that
- clients should not depend on (see
- https://chromiumcodereview.appspot.com/10913083/).
- This removes a bunch of trailing white spaces additionally in
- TestWebkitAPI.gyp (which includes non-trailing white space changes).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-09-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix the build with ENABLE_NETSCAPE_PLUGIN_API=0
- https://bugs.webkit.org/show_bug.cgi?id=96494
-
- Reviewed by Tor Arne Vestbø.
-
- WK2's ENABLE_PLUGIN_PROCESS uses the NPAPI functions unconditionally, so disable the
- plugin process feature if we don't have NPAPI.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-09-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r128280.
- http://trac.webkit.org/changeset/128280
- https://bugs.webkit.org/show_bug.cgi?id=96498
-
- it broke compilation on windows debug bot (Requested by loislo
- on #webkit).
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Make it possible to build with "make release" and "make debug" on Windows
- https://bugs.webkit.org/show_bug.cgi?id=96488
-
- Reviewed by Tor Arne Vestbø.
-
- A "make debug" is passed through recursively and currently it aborts at Makefile.DerivedSources
- because there are no such targets. We want the generated sources to be independent from release
- or debug build configurations, so it is sufficient to provide fake debug and release targets that
- redirect to the same general-purpose target (first) of creating the derived sources.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-09-12 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [EFL] Make DumpRenderTree smarter at finding the fonts
- http://webkit.org/b/96281
-
- Reviewed by Gyuyoung Kim.
-
- Respect WEBKITOUTPUTDIR and expand the font dir from it.
- Use CString consistently.
-
- * DumpRenderTree/efl/FontManagement.cpp:
- (buildPath):
- (getCoreFontFiles):
- (addFontDirectory):
- (addFontFiles):
- (getCustomBuildDir):
- (getPlatformFontsPath):
- (addFontsToEnvironment):
-
-2012-09-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs to implement dumpApplicationCacheDelegateCallbacks
- https://bugs.webkit.org/show_bug.cgi?id=96374
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement support for dumpApplicationCacheDelegateCallbacks
- and disallowIncreaseForApplicationCacheQuota in
- WebKitTestRunner and properly dump the information
- expected by the tests.
-
- If the application cache quota is reached for a given
- security origin, WebKitTestRunner will reset the quota
- to its default value, unless intructed not to via
- disallowIncreaseForApplicationCacheQuota().
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didReachApplicationCacheOriginQuota):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- (WTR::TestRunner::disallowIncreaseForApplicationCacheQuota):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::dumpApplicationCacheDelegateCallbacks):
- (TestRunner):
- (WTR::TestRunner::shouldDisallowIncreaseForApplicationCacheQuota):
- (WTR::TestRunner::shouldDumpApplicationCacheDelegateCallbacks):
-
-2012-09-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] [WTR] WebKitTestRunner needs TestRunner.workerThreadCount
- https://bugs.webkit.org/show_bug.cgi?id=96388
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Exported TestRunner.workerThreadCount as readonly attribute.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp: Added workerThreadCount() method implementation.
- (WTR::TestRunner::workerThreadCount): Returns count of worker threads.
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h: Added workerThreadCount() method.
- (TestRunner):
-
-2012-09-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Consume a user gesture when creating a new view.
- https://bugs.webkit.org/show_bug.cgi?id=96373
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
-
-2012-09-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] Some of TestRunner special options are not reset before testing
- https://bugs.webkit.org/show_bug.cgi?id=96384
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Now values of the following special options are reset:
- void setAcceptsEditing(in boolean value);
- void setCloseRemainingWindowsWhenComplete(in boolean value);
- void setXSSAuditorEnabled(in boolean value);
- void setAllowFileAccessFromFileURLs(in boolean value);
- void setPluginsEnabled(in boolean value);
- void setPopupBlockingEnabled(in boolean value);
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2012-09-11 Ryuan Choi <ryuan.choi@samsung.com>
-
- [CMAKE] Supply feature defines to CodeGeneratorTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=96273
-
- Reviewed by Gyuyoung Kim.
-
- Passed FEATURE_DEFINES_WITH_SPACE_SEPARATOR to CodeGeneratorTestRunner
- in order to distinguish compile time options such as ENABLE(TOUCH_EVENTS).
-
- * WebKitTestRunner/CMakeLists.txt:
-
-2012-09-11 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] rename webkit_resources
- https://bugs.webkit.org/show_bug.cgi?id=95874
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-09-11 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] don't include content shell builders in the garden-o-matic view
- https://bugs.webkit.org/show_bug.cgi?id=96418
-
- Reviewed by James Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-09-11 Adam Klein <adamk@chromium.org>
-
- Garden-o-matic should ignore a wider variety of warnings in buildbot json
- https://bugs.webkit.org/show_bug.cgi?id=96411
-
- Reviewed by Adam Barth.
-
- Previously only the exact string "warning" was treated as a warning
- result. This patch treats any string with "warning" as a substring
- as a warning (e.g., "warnings", as seen on the cr-win buildbots).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
-
-2012-09-11 Marcelo Lira <marcelo.lira@openbossa.org>
-
- Restore original value of mock scrollbars enabled in InternalSettings
- https://bugs.webkit.org/show_bug.cgi?id=87680
-
- Reviewed by Adam Barth.
-
- Added backup support for mock scrollbars state in
- InternalSettings::Backup, and removed support for these
- from Qt's DumpRenderTree.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::setFrameFlatteningEnabled):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
-
-2012-09-11 Dan Bernstein <mitz@apple.com>
-
- Fixed a bug where kill-old-processes failed to kill clang++.
-
- Rubber-stamped by Alexey Proskuryakov.
-
- * BuildSlaveSupport/kill-old-processes: Escape the + signs in "clang++"
- where it is passed as a regular expression to killall.
-
-2012-09-11 Philippe Liard <pliard@google.com>
-
- Make sure that md5sum is not setup on non-Chromium Android platforms.
- https://bugs.webkit.org/show_bug.cgi?id=96393
-
- Reviewed by Adam Barth.
-
- Previously md5sum was setup in ChromiumAndroidDriver's constructor
- which is also invoked on non-Chromium Android platforms. The following patch
- moves this logic to _startup_test() which is guaranteed to be invoked
- only on Android.
-
- This also updates the prompt unit test in chromium_android_unittest.py.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_md5sum_and_push_data_if_needed):
- (ChromiumAndroidDriver._setup_test):
-
-2012-09-11 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Rewrite the EFL-related Find modules
- https://bugs.webkit.org/show_bug.cgi?id=95237
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/efl/CMakeLists.txt: Stop setting the LINK_FLAGS
- property and include all the Enlightenment Foundation Libraries
- required by the target.
- * EWebLauncher/CMakeLists.txt: Ditto.
- * MiniBrowser/efl/CMakeLists.txt: Ditto.
- * TestWebKitAPI/PlatformEfl.cmake: Add missing include directories
- now that they are not added implicitly.
- * WebKitTestRunner/CMakeLists.txt: Stop setting the LINK_FLAGS
- property.
- * WebKitTestRunner/PlatformEfl.cmake: Stop setting the LINK_FLAGS
- property and include all the Enlightenment Foundation Libraries
- required by the target.
-
-2012-09-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs to implement setApplicationCacheOriginQuota
- https://bugs.webkit.org/show_bug.cgi?id=96379
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add implementation for setApplicationCacheOriginQuota
- to WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setApplicationCacheOriginQuota):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-11 Luciano Wolf <luciano.wolf@openbossa.org>
-
- [Qt] [WK2] editing/inserting/typing-tab-designmode tests are failing
- https://bugs.webkit.org/show_bug.cgi?id=91988
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Regular key events generated by Qt for the tab key fill both
- keyCode and keyText, so we should do the same for our fake events.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::keyDown):
-
-2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] WebKitTestRunner needs testRunner.setSpatialNavigationEnabled
- https://bugs.webkit.org/show_bug.cgi?id=96269
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Exported missing testRunner.setSpatialNavigationEnabled() method.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setSpatialNavigationEnabled):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-11 Philippe Liard <pliard@chromium.org>
-
- Support LayoutTests on non-rooted devices for Chromium Android.
- https://bugs.webkit.org/show_bug.cgi?id=95346
-
- Reviewed by Dirk Pranke.
-
- We were requiring root permissions to sync resource files with the
- device by comparing host and device files' timestamp after we
- synchronized the device and host clocks.
- We now rely on md5sum provided by Chromium to handle data files
- synchronization.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._check_driver_build_up_to_date):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_test):
- (ChromiumAndroidDriver._push_executable):
- (ChromiumAndroidDriver._push_test_resources):
- (ChromiumAndroidDriver._read_prompt):
-
-2012-09-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix output paths on Windows
-
- Reviewed by Tor Arne Vestbø.
-
- BUILD_ROOT_RELATIVE_TO_OUT_PWD was calculated incorrectly Windows, resulting in an incorrect
- DESTDIR transformation at the end of default_post.prf. The calculation should be baased no qmake
- paths, which can use drive letters but always use forward slashes. So the use of QMAKE_DIR_SEP is
- incorrect here and instead for the calculation we should use forward slashes.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix passing of defines from the build system
-
- We explicitly have to pass -DENABLE_FOO=0 for every single feature
- that's not explicitly enabled in WEBKIT_CONFIG, since Platform.h
- will add it's own defaults if the features are not defined.
-
- At some point we might want to run a configure-test to inspect what
- Platform.h will do, so we can sync up the build system's view of
- the feature-defines with the compile-time situation.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix --qt option to build-webkit
-
- Reviewed by Ossy.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Add a configure step to the Qt build system
-
- This allows building the Qt port using just 'qmake WebKit.pro'. Using
- the build-webkit script is still supported, and will add slightly more
- logic to the build, such as detecting the need for clean or incremental
- builds.
-
- Internally, the build system now uses a new variable, WEBKIT_CONFIG, for
- all things related to configuring the build, such as use/have/enable flags,
- and these are translated to defines in default_post. Project files should
- no longer check contains(DEFINES,...) to detect features, but use the new
- enable?(), use?(), and have?() functions. The no_webkit1 and no_webkit2
- options have been translated into WEBKIT_CONFIG options as well, and can
- be checked using build?().
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (buildQMakeProjects):
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/.qmake.cache: Added.
- * qmake/configure.pri: Removed.
- * qmake/configure.pro: Removed.
- * qmake/dump-features: Added.
- * qmake/mkspecs/features/configure.prf: Added.
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/features.pri:
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/gprof.prf:
- * qmake/mkspecs/features/mac/default_pre.prf:
- * qmake/mkspecs/features/win32/default_pre.prf:
-
-2012-09-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner needs to implement clearApplicationCacheForOrigin
- https://bugs.webkit.org/show_bug.cgi?id=96372
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement clearApplicationCacheForOrigin() in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::clearApplicationCacheForOrigin):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-11 Peter Beverloo <peter@chromium.org>
-
- Don't ignore .pak files when making an archive for Android
- https://bugs.webkit.org/show_bug.cgi?id=96375
-
- Reviewed by Jochen Eisinger.
-
- The .pak files do need to be pushed to the device, which is currently
- preventing the layout test runner from correctly pushing all files.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2012-09-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] WebKitTestRunner needs layoutTestController.setMinimumTimerInterval
- https://bugs.webkit.org/show_bug.cgi?id=96256
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Exported TestRunner::setMinimumTimerInterval() method.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setMinimumTimerInterval):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-11 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: add RTCPeerConnection::onnegotiationneeded
- https://bugs.webkit.org/show_bug.cgi?id=96097
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::addStream):
- (MockWebRTCPeerConnectionHandler::removeStream):
-
-2012-09-11 Peter Beverloo <peter@chromium.org>
-
- Recognize the "--chromium-android" argument in run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=96369
-
- Reviewed by Jochen Eisinger.
-
- Chromium for the Android platform cannot determine the platform based on
- the host itself, so we'll use the --chromium-android argument as the build
- master passes to run-webkit-tests. Make sure the layout test runner
- can pick the right port when doing so.
-
- * Scripts/run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (port_options):
-
-2012-09-11 Simon Hausmann <simon.hausmann@nokia.com>
-
- [QT] Fix build with newer qmake from Qt 5
-
- Rubber-stamped by Tor Arne Vestbø.
-
- Support for "qmake -query QMAKE_MKSPECS" was removed from qmake. Replace
- it with the use of QT_HOST_DATA/mkspecs.
- Based on patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
- (qtMakeCommand):
-
-2012-09-11 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove Qt 4 syncqt, no longer needed
-
- Reviewed by Simon Hausmann.
-
- * qmake/syncqt-4.8: Removed.
-
-2012-09-11 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] Fix the build with recent Qt5
- https://bugs.webkit.org/show_bug.cgi?id=96283
-
- Reviewed by Simon Hausmann.
-
- We should not use deprecated Qt API because doing that results
- in build failure since all the deprecated API was disabled
- in qtbase (https://codereview.qt-project.org/#change,24890).
-
- * DumpRenderTree/qt/main.cpp:
- (main):
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/raw/View.cpp:
- (View::exposeEvent):
- (main):
-
-2012-09-11 Christophe Dumez <christophe.dumez@intel.com>
-
- WTR needs an implementation of applicationCacheDiskUsageForOrigin
- https://bugs.webkit.org/show_bug.cgi?id=87188
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add implementation for applicationCacheDiskUsageForOrigin()
- in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::applicationCacheDiskUsageForOrigin):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-10 Joanmarie Diggs <jdiggs@igalia.com>
-
- Properly expose <legend> elements to ATs
- https://bugs.webkit.org/show_bug.cgi?id=84137
-
- Reviewed by Chris Fleizach.
-
- Created a new WebCore Accessibility Role, LegendRole. Used it to map to
- the expected platform role, ATK_ROLE_LABEL. Also established the needed
- AtkRelation pair, label-for/labelled-by between the legend and fieldset.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString): added "Legend" string for WebAccessibilityRoleLegend
-
-2012-09-10 Jer Noble <jer.noble@apple.com>
-
- Unreviewed; rolling out r128081.
- http://trac.webkit.org/changeset/128081
- https://bugs.webkit.org/show_bug.cgi?id=96134
-
- New test http/tests/media/video-donottrack.html fails to run on Apple test bots.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::TestRunner):
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-10 Christophe Dumez <christophe.dumez@intel.com>
-
- TestExpectationsChecker._determine_port_from_expectations_path() does not support cascaded TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=96205
-
- Reviewed by Tony Chang.
-
- _determine_port_from_expectations_path() was calling port.path_to_test_expectations_file()
- internally, which means that it would support only 1 TestExpectations file per port. This
- is an issue for ports such as EFL that support cascased TestExpectations (efl-wk2 -> efl
- and efl-wk1 -> efl).
-
- This patch makes _determine_port_from_expectations_path() call port.expectations_files()
- instead so that all the ports TestExpectations are recognized. The ports are also
- constructed twice, with "webkit_test_runner" option set to True and False so that we
- retrieve the TestExpectations paths for both WebKit1 and WebKit2.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_expectations_path):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py: Add corresponding unit test.
- (TestExpectationsTestCase.test_determine_port_from_expectations_path):
-
-2012-09-10 Ryuan Choi <ryuan.choi@samsung.com>
-
- [WTR] Generated source files should include config.h
- https://bugs.webkit.org/show_bug.cgi?id=96254
-
- Reviewed by Benjamin Poulain.
-
- Current coding style has encouraged to include config.h at the first position,
- But derived sources, generated by CodeGeneratorTestRunner.pm, don't follow
- this rule.
- Therefore, this patch added it.
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- (_generateImplementationFile):
-
-2012-09-10 Rick Byers <rbyers@chromium.org>
-
- Add handling of new GestureTapCancel in DRT
-
- https://bugs.webkit.org/show_bug.cgi?id=96183
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleInputEvent):
-
-2012-09-10 Brady Eidson <beidson@apple.com>
-
- Javascript in foreground tabs should not wait synchronously for plug-ins to load
- <rdar://problem/12067415> and https://bugs.webkit.org/show_bug.cgi?id=96167
-
- Reviewed by Geoff Garen.
-
- Enhance the "Slow NPP_New" plug-in to also be able to return properties to javascript.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/SlowNPPNew.cpp:
- (PluginObject):
- (SlowNPPNew::PluginObject::PluginObject):
- (SlowNPPNew::PluginObject::~PluginObject):
- (SlowNPPNew::PluginObject::hasProperty):
- (SlowNPPNew::PluginObject::getProperty):
- (SlowNPPNew::NPP_GetValue):
- (SlowNPPNew):
-
-2012-09-10 Tim Horton <timothy_horton@apple.com>
-
- WKTR often reports an unresponsive WebProcess on Mac bots
- https://bugs.webkit.org/show_bug.cgi?id=95906
-
- Reviewed by Dan Bernstein.
-
- Attempt to work around resource contention issues by increasing the NRWT
- timeout when running against WKTR, as well as WKTR's own WebProcess timeout.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_timeout_ms): Default timeout when using WKTR -> 80 seconds.
- * WebKitTestRunner/TestController.cpp:
- (WTR): LongTimeout (used when waiting for WebProcess to finish) -> 60 seconds.
-
-2012-09-07 Jer Noble <jer.noble@apple.com>
-
- <audio> and <video> should send Do Not Track when appropriate
- https://bugs.webkit.org/show_bug.cgi?id=96134
-
- Reviewed by Eric Carlson.
-
- Add a testRunner JS API for calling setShouldSendDoNotTrackHTTPHeader to DRT and
- WTR. Add FrameLoaderClient client methods for retrieving that value.
-
- * DumpRenderTree/TestRunner.cpp:
- (setShouldSendDoNotTrackHTTPHeaderCallback): Pass through to the TestRunner.
- (TestRunner::staticFunctions): Add the setShouldSendDoNotTrackHTTPHeader function.
- * DumpRenderTree/TestRunner.h:
- (TestRunner::setShouldSendDoNotTrackHTTPHeader): Simple setter.
- (TestRunner::shouldSendDoNotTrackHTTPHeader): Simple getter.
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webViewShouldSendDoNotTrackHTTPHeader:]):
- Pass the question on to the TestRunner.
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- Add the setShouldSendDoNotTrackHTTPHeader client function.
- (WTR::InjectedBundlePage::shouldSendDoNotTrackHTTPHeader):
- Pass the question on to the TestRunner.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::shouldSendDoNotTrackHTTPHeader): Simple getter.
- (WTR::TestRunner::setShouldSendDoNotTrackHTTPHeader): Simple Setter.
-
-2012-09-10 Ojan Vafai <ojan@chromium.org>
-
- Make EFL bots work on the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=96164
-
- Reviewed by Tony Chang.
-
- Also, update outdated unittests that had started failing.
-
- * TestResultServer/static-dashboards/builders.js:
- (isWebkitTestRunner):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (nonChromiumPlatform):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-09-10 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Remove the Descriptor postfix
- https://bugs.webkit.org/show_bug.cgi?id=96268
-
- Reviewed by Adam Barth.
-
- After consideration I realized that there is no need whatsoever in using the Descriptor prefix
- in the WekKit embedder API. Removed from WebRTCSessionDescription and WebRTCICECandidate to start with.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (MockWebRTCPeerConnectionHandler::createOffer):
- (MockWebRTCPeerConnectionHandler::createAnswer):
- (MockWebRTCPeerConnectionHandler::setLocalDescription):
- (MockWebRTCPeerConnectionHandler::setRemoteDescription):
- (MockWebRTCPeerConnectionHandler::localDescription):
- (MockWebRTCPeerConnectionHandler::remoteDescription):
- (MockWebRTCPeerConnectionHandler::addICECandidate):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-10 Arnaud Renevier <a.renevier@sisa.samsung.com>
-
- [Gtk] failure to build jhbuild dependencies with cups 1.6
- https://bugs.webkit.org/show_bug.cgi?id=95991
-
- Reviewed by Gustavo Noronha Silva.
-
- Bump gtk+ and gnome-themes-standard dependencies to 3.4.2 to allow
- building with cups >= 1.6 [GNOME #670373].
-
- * gtk/jhbuild.modules:
-
-2012-09-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][DRT] Encoding issue in printed console messages
- https://bugs.webkit.org/show_bug.cgi?id=96263
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Correctly handle CONSOLE messages that contain non-ascii
- characters in EFL's DRT. We need to use String::fromUTF8()
- to construct a WTF::String from a raw string.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onConsoleMessage):
-
-2012-09-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] User style sheet location should be reset before each test
- https://bugs.webkit.org/show_bug.cgi?id=96262
-
- Reviewed by Kenneth Rohde Christiansen.
-
- User style sheet location is reset before each test now.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2012-09-10 Simon Hausmann <simon.hausmann@nokia.com>
-
- Fix build of WTR with Qt on Windows
- https://bugs.webkit.org/show_bug.cgi?id=96249
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Windows loves to define min and max as macros, which beautifully
- clashes in many places where min and max are used as variable or method
- names. It can be convinced not to do this when min and max are already
- define as macros (expanding to themselves). We have this kind of
- workaround in config.h files all over WebKit and as it turns out when
- building WTR with Qt on Windows we do end up with such a clash. Therefore
- we need the same workaround.
-
- * WebKitTestRunner/config.h:
-
-2012-09-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] New fast/forms/number/number-interactive-validation-required.html fails
- https://bugs.webkit.org/show_bug.cgi?id=95936
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable interactive form validation setting in WebKitTestRunner as
- we are currently doing in DumpRenderTree. This is needed for some
- tests to pass.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-09-09 Zan Dobersek <zandobersek@gmail.com>
-
- Clean up the code in XvfbDriver
- https://bugs.webkit.org/show_bug.cgi?id=96202
-
- Reviewed by Philippe Normand.
-
- Changes:
- - Remove unneeded imports,
- - assign the _lock_file member variable when the display number is determined,
- - no need for parentheses around a single string format argument,
- - use FileSystem.exists method when checking if lock file is present as it
- makes the intention much more clearer.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
- (XvfbDriver.stop):
-
-2012-09-09 Patrick Gansterer <paroga@webkit.org>
-
- Make the String initialization on the function side of String::number()
- https://bugs.webkit.org/show_bug.cgi?id=95940
-
- Reviewed by Benjamin Poulain.
-
- * TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp:
- (testBoundaries):
- (testNumbers):
-
-2012-09-09 Pierre Rossi <pierre.rossi@gmail.com>
-
- [WK2] expose element rect for color input type
- https://bugs.webkit.org/show_bug.cgi?id=91664
-
- Reviewed by Simon Hausmann.
-
- Update the QML logic in MiniBrowser to take advantage of this.
- The picker size is now hardcoded and we try to place it below the
- input element if possible.
-
- * MiniBrowser/qt/qml/ColorChooser.qml:
-
-2012-09-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] New fast/events/tab-focus-link-in-canvas fails from r126908
- https://bugs.webkit.org/show_bug.cgi?id=95329
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Explicitely disable TabToLinks setting in WebKitTestRunner.
- Tests override the "WebKitTabToLinksPreferenceKey" preference
- to enable it.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-09-08 Kenichi Ishibashi <bashi@chromium.org>
-
- webkit.py gdb pretty printer can't print CString
- https://bugs.webkit.org/show_bug.cgi?id=96068
-
- Reviewed by Tony Chang.
-
- Update WTFCStringPrinter to follow r126191.
-
- * gdb/webkit.py:
- (WTFCStringPrinter.to_string):
-
-2012-09-07 Benjamin Poulain <bpoulain@apple.com>
-
- Rename the ustring() accessor to string()
- https://bugs.webkit.org/show_bug.cgi?id=95919
-
- Reviewed by Geoffrey Garen.
-
- Update EFL's DRT.
-
- Fix some string conversion that have been made useless
- with recent changes.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::queueLoad):
- (TestRunner::addOriginAccessWhitelistEntry):
- (TestRunner::removeOriginAccessWhitelistEntry):
- (TestRunner::setUserStyleSheetLocation):
- (TestRunner::setValueForUser):
- (TestRunner::elementDoesAutoCompleteForElementWithId):
- (TestRunner::execCommand):
- (TestRunner::findString):
- (TestRunner::isCommandEnabled):
- (TestRunner::clearApplicationCacheForOrigin):
- (TestRunner::setDomainRelaxationForbiddenForURLScheme):
- (TestRunner::pauseAnimationAtTimeOnElementWithId):
- (TestRunner::pauseTransitionAtTimeOnElementWithId):
- (toInt):
- (TestRunner::overridePreference):
- (TestRunner::addUserScript):
- (TestRunner::addUserStyleSheet):
- (TestRunner::evaluateInWebInspector):
- (TestRunner::evaluateScriptInIsolatedWorld):
- (TestRunner::setTextDirection):
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
- (LoadItem::invoke):
- (LoadHTMLStringItem::invoke):
- (ScriptItem::invoke):
-
-2012-09-06 Jeffrey Pfau <jpfau@apple.com>
-
- Extend third-party storage blocking API to optionally allow blocking all storage
- https://bugs.webkit.org/show_bug.cgi?id=95915
-
- Reviewed by Brady Eidson.
-
- Modified API test to use new revised API.
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
-
-2012-09-07 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: WebCore accessibility roles should be cross-platform
- https://bugs.webkit.org/show_bug.cgi?id=94870
-
- Reviewed by Chris Fleizach.
-
- Add debug strings to Chromium for new accessibility roles.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString):
-
-2012-09-07 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Chromium needs access to canvasHasFallbackContent
- https://bugs.webkit.org/show_bug.cgi?id=96124
-
- Reviewed by Chris Fleizach.
-
- Distinguish between canvas roles with and without fallback
- content on Chromium.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (getRole):
-
-2012-09-07 Ojan Vafai <ojan@chromium.org>
-
- Handle non-existant TestExpectations files gracefully
- https://bugs.webkit.org/show_bug.cgi?id=96149
-
- Reviewed by Eric Seidel.
-
- Even when we get rid of Skipped files, we shouldn't have each port
- require a TestExpectations file for each platform if it doesn't
- need one.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.expectations_dict):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_nonexistant_expectations):
-
-2012-09-07 Tony Chang <tony@chromium.org>
-
- Regression: check-webkit-style no longer checks TestExpectations for syntax errors
- https://bugs.webkit.org/show_bug.cgi?id=96136
-
- Reviewed by Ojan Vafai.
-
- When we renamed the file to TestExpectations, it was no longer considered a text file so
- it was no longer being checked. Since then, test_expectations_overrides() has been removed
- from the port object, so I've removed that from the check. I'm not sure what it was
- supposed to do.
-
- * Scripts/webkitpy/style/checker.py:
- (CheckerDispatcher._file_type): Mark TestExpectations as a text file.
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations): Remove overrides param.
- (TestExpectationsChecker.check): Remove overrides param.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.assert_lines_lint): Remove overrides param.
-
-2012-09-07 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Use same default minimum logical font size in DRT and WTR
- https://bugs.webkit.org/show_bug.cgi?id=96116
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): Set minimum
- logical font size to 9 to match the value used in WTR.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting): Explicitly set the minimum
- logical font size to 9 (default value in WK2)
-
-2012-09-07 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: add RTCPeerConnection::createAnswer
- https://bugs.webkit.org/show_bug.cgi?id=96092
-
- Reviewed by Adam Barth.
-
- Expanding and enhancing MockWebRTCPeerConnectionHandler.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::createOffer):
- (MockWebRTCPeerConnectionHandler::createAnswer):
- (MockWebRTCPeerConnectionHandler::setLocalDescription):
- (MockWebRTCPeerConnectionHandler::setRemoteDescription):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-07 Dean Jackson <dino@apple.com>
-
- Unreviewed changes to watchlist.
-
- - Add new WebGL and Filters definitions
- - Add myself to OpenGL bugs
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-09-07 Peter Beverloo <peter@chromium.org>
-
- Actually trigger the Android Tester
- https://bugs.webkit.org/show_bug.cgi?id=96118
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-09-07 Dominic Mazzoni <dmazzoni@google.com>
-
- New time input needs accessibility
- https://bugs.webkit.org/show_bug.cgi?id=96032
-
- Reviewed by Chris Fleizach.
-
- Add support for valueDescription for testing.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (getValueDescription):
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::valueDescriptionGetterCallback):
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
-
-2012-09-07 Peter Beverloo <peter@chromium.org>
-
- Add the google-android-tests build slave to the master's config
- https://bugs.webkit.org/show_bug.cgi?id=96113
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-09-07 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [WK2] [EFL] Set theme for WebKit2 API test runner
- https://bugs.webkit.org/show_bug.cgi?id=96100
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Set the theme generated by the build for the WebKit2 API test runner.
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
-
-2012-09-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed. Add Gábor Ballabás as contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-09-07 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- [Qt] Fix ROOT_BUILD_DIR on Windows MSVC build.
- https://bugs.webkit.org/show_bug.cgi?id=96078
-
- Reviewed by Tor Arne Vestbø.
-
- Correct JSC, DumpRenderTree, ImageDiff, QtTestBrowser binaries location by adding $$toSystemPath to ROOT_BUILD_DIR generation.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-09-07 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Add TestExpectations file for efl-wk1
- https://bugs.webkit.org/show_bug.cgi?id=96019
-
- Reviewed by Gyuyoung Kim.
-
- Update TestExpectations cascading for EFL port
- so that we use efl-wk1 -> efl search paths
- for WebKit1 EFL.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._search_paths):
-
-2012-09-07 Zan Dobersek <zandobersek@gmail.com>
-
- [NRWT] XvfbDriver should stop the Xvfb more aggressively
- https://bugs.webkit.org/show_bug.cgi?id=95097
-
- Reviewed by Dirk Pranke.
-
- The Xvfb process is now killed when the XvfbDriver is stopping. Simply
- terminating the process does not always work as expected, leading to timeouts
- in run-webkit-tests on the buildbot. The lock file Xvfb creates is also removed
- as it's not removed by the killed Xvfb process.
-
- Also included is a thorough unittest for XvfbDriver. Proper starting of the driver
- is tested in different circumstances - whether pixel tests are enabled or not,
- with an arbitrary worker number or with an Xorg process already running on the system.
- The stopping of the driver is tested by checking that the Xvfb process is truly killed
- and then set to None.
-
- * BuildSlaveSupport/kill-old-processes:
- Kill any stale Xvfb processes at the start of the build cycle so no Xvfb
- is left running, potentially clogging up a display at a certain position.
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.__init__):
- The _running_pids is now a dictionary with process names as keys and pids
- as values.
- (MockExecutive.check_running_pid):
- Check whether the passed-in pid is in the _running_pids dictionary's values.
- (MockExecutive):
- (MockExecutive.running_pids):
- This method returns the list of all the process pids of which the name passes
- through the process_name_filter.
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- Use the Executive object of the port's host to check for running pids and open
- new subprocesses or kill them throughout the class.
- (XvfbDriver._start):
- Use the _server_process_constructor to make testing the XvfbDriver possible. Also,
- start the server process after it's created.
- (XvfbDriver.stop):
- Now kills the Xvfb process instead of terminating it and waiting for it to close.
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py: Added.
- (XvfbDriverTest):
- (XvfbDriverTest.make_driver):
- (XvfbDriverTest.assertDriverStartSuccessful):
- (XvfbDriverTest.test_start_no_pixel_tests):
- (XvfbDriverTest.test_start_pixel_tests):
- (XvfbDriverTest.test_start_arbitrary_worker_number):
- (XvfbDriverTest.test_start_existing_xorg_process):
- (XvfbDriverTest.test_stop):
- (XvfbDriverTest.test_stop.FakeXvfbProcess):
-
-2012-09-06 Peter Beverloo <peter@chromium.org>
-
- Introduce the Chromium Android Release (Tests) bot
- https://bugs.webkit.org/show_bug.cgi?id=95980
-
- Reviewed by Adam Barth.
-
- This adds the Chromium Android Release (Tests) bot to the WebKit waterfall,
- which will be running layout tests on actual Android devices. Right now,
- four Galaxy Nexus phones are attached.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-09-06 James Robinson <jamesr@chromium.org>
-
- [chromium] Use WebCompositorSupport functions instead of WebCompositor statics
- https://bugs.webkit.org/show_bug.cgi?id=96007
-
- Reviewed by Adrienne Walker.
-
- Fixes initialization / settings code to use WebCompositorSupport.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::setPerTilePaintingEnabled):
-
-2012-09-06 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Provide implementation for PlatformWebView::windowFrame()
- https://bugs.webkit.org/show_bug.cgi?id=95995
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Provide proper implementation for PlatformWebView::windowFrame()
- in EFL's WebKitTestRunner.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::windowFrame):
-
-2012-09-06 Fady Samuel <fsamuel@chromium.org>
-
- Fix WTF.Lrint on 32-bit platforms
- https://bugs.webkit.org/show_bug.cgi?id=96003
-
- Reviewed by Benjamin Poulain.
-
- Fixed failing WTF.Lrint test on 32-bit platforms.
-
- * TestWebKitAPI/Tests/WTF/MathExtras.cpp:
- (TestWebKitAPI::TEST):
-
-2012-09-06 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add the local and remote description functionality to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95839
-
- Reviewed by Adam Barth.
-
- In addition to adding the new methods to MockWebRTCPeerConnectionHandler I cleaned
- up the task definitions a bit. There was no need to have them in the header file.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask):
- (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCVoidRequestTask):
- (RTCVoidRequestTask::RTCVoidRequestTask):
- (MockWebRTCPeerConnectionHandler::createOffer):
- (MockWebRTCPeerConnectionHandler::setLocalDescription):
- (MockWebRTCPeerConnectionHandler::setRemoteDescription):
- (MockWebRTCPeerConnectionHandler::localDescription):
- (MockWebRTCPeerConnectionHandler::remoteDescription):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-06 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix build on Mac OS X 10.6
- https://bugs.webkit.org/show_bug.cgi?id=95200
-
- Reviewed by Tor Arne Vestbø.
-
- The build on Mac OS X 10.6 is broken when using QuickTime. Enable it only for
- 10.7 and newer.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-09-06 Christophe Dumez <christophe.dumez@intel.com>
-
- [WKTR] addSelectionKey should be mapped to "Control" modifiers on other OSes than Mac
- https://bugs.webkit.org/show_bug.cgi?id=95973
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Correctly map "addSelectionKey" to "Control" modifier
- in WKTR's EventSender on other OSes than Mac OS X,
- instead of mapping it to the "Meta" modifier.
-
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::parseModifier):
-
-2012-09-06 Balazs Kelemen <kbalazs@webkit.org>
-
- [nrwt] Harden against empty stdout/stderr after stopping a crashed/timed out driver
- https://bugs.webkit.org/show_bug.cgi?id=95710
-
- Reviewed by Dirk Pranke.
-
- The stdout / stderr output can be None so make sure
- we won't raise an exception in this case.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
-
-2012-09-06 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Sanitize URLs in EWebLauncher / Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=95849
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Sanitize URLs passed by the user as program
- argument or typed in the URL bar in order to
- be more tolerant.
-
- * EWebLauncher/CMakeLists.txt:
- * EWebLauncher/main.c:
- (main):
- * EWebLauncher/url_bar.c:
- (_url_bar_url_get_with_protocol):
- (on_urlbar_key_down):
- * EWebLauncher/url_utils.c: Added.
- (has_scheme):
- (url_from_user_input): Add utility function to construct a
- URL from user input.
- * EWebLauncher/url_utils.h: Added.
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c:
- (main):
-
-2012-09-06 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Various small Windows / MSVC build fixes
- https://bugs.webkit.org/show_bug.cgi?id=95934
-
- Reviewed by Kenneth Rohde Christiansen.
-
- setFocus takes a boolean as argument: Don't try to implicitly convert
- an enum to a boolean, MSVC doesn't like that. The intent here is to
- enable focus, so just pass true.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::focus):
-
-2012-09-06 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix build with ANGLE on platforms that provide EGL/GLESv2
- https://bugs.webkit.org/show_bug.cgi?id=95965
-
- Reviewed by Tor Arne Vestbø.
-
- Add ANGLE as a static library module to the Qt WebKit build system.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/modules/angle.prf: Added.
-
-2012-09-06 Andras Becsi <andras.becsi@nokia.com>
-
- [WK2] Make [Qt]ViewportHandler cross platform
- https://bugs.webkit.org/show_bug.cgi?id=91257
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove initial scale from viewport info item since it is
- set to -1 after applied thus it does not hold any valuable
- information.
-
- * MiniBrowser/qt/qml/ViewportInfoItem.qml:
-
-2012-09-05 Tony Chang <tony@chromium.org>
-
- [chromium] Remove dependency on webkit_user_agent
- https://bugs.webkit.org/show_bug.cgi?id=95886
-
- Reviewed by Adam Barth.
-
- The code isn't used by DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-09-05 Rick Byers <rbyers@chromium.org>
-
- Update chromium DumpRenderTree for new WebGestureEvent fields
- https://bugs.webkit.org/show_bug.cgi?id=95573
-
- Reviewed by James Robinson.
-
- Update EventSender to write gesture details into the appropriate
- type-specific WebGestureEvent fields.
- * DumpRenderTree/chromium/TestRunner/EventSender.cpp:
- (EventSender::gestureEvent):
- (EventSender::gestureFlingStart):
-
-2012-09-05 Dirk Pranke <dpranke@chromium.org>
-
- NRWT lies about the number of tests that it's skipping when used with --repeat-each
- https://bugs.webkit.org/show_bug.cgi?id=95789
-
- Reviewed by Ojan Vafai.
-
- Fix miscalculation in log message.
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_found):
-
-2012-09-05 Kenichi Ishibashi <bashi@chromium.org>
-
- Unreviewed, rolling out r127612, r127660, and r127664.
- http://trac.webkit.org/changeset/127612
- http://trac.webkit.org/changeset/127660
- http://trac.webkit.org/changeset/127664
- https://bugs.webkit.org/show_bug.cgi?id=95920
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::SuccessCallbackTask::SuccessCallbackTask):
- (MockWebRTCPeerConnectionHandler::SuccessCallbackTask::runIfValid):
- (MockWebRTCPeerConnectionHandler::FailureCallbackTask::FailureCallbackTask):
- (MockWebRTCPeerConnectionHandler::FailureCallbackTask::runIfValid):
- (MockWebRTCPeerConnectionHandler::createOffer):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
- (SuccessCallbackTask):
- (FailureCallbackTask):
-
-2012-09-05 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- Ignore-metrics includes scroll offsets.
- https://bugs.webkit.org/show_bug.cgi?id=95845
-
- Reviewed by Dirk Pranke.
-
- Strip scroll-offsets the same way scroll-height and scroll-width is stripped.
-
- * Scripts/old-run-webkit-tests:
- (stripMetrics):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput):
-
-2012-09-05 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed test fix.
-
- Including a plugin source file into the build that was added in r127595.
-
- * GNUmakefile.am:
-
-2012-09-05 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add the local and remote description functionality to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95839
-
- Reviewed by Adam Barth.
-
- In addition to adding the new methods to MockWebRTCPeerConnectionHandler I cleaned
- up the task definitions a bit. There was no need to have them in the header file.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask):
- (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCVoidRequestTask):
- (RTCVoidRequestTask::RTCVoidRequestTask):
- (MockWebRTCPeerConnectionHandler::createOffer):
- (MockWebRTCPeerConnectionHandler::setLocalDescription):
- (MockWebRTCPeerConnectionHandler::setRemoteDescription):
- (MockWebRTCPeerConnectionHandler::localDescription):
- (MockWebRTCPeerConnectionHandler::remoteDescription):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-05 Kangil Han <kangil.han@samsung.com>
-
- [EFL] Remove '+=' usage in String
- https://bugs.webkit.org/show_bug.cgi?id=95808
-
- Reviewed by Benjamin Poulain.
-
- Replaced use of String operator '+=' with StringBuilder.append*() in order to adopt efficient String concatenation.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (descriptionSuitableForTestResult):
-
-2012-09-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Provide implementation for TestRunner::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=95842
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Provide proper implementation for TestRunner::pathToLocalResource()
- in EFL WKTR, identical to the one for DumpRenderTree.
-
- Map /tmp to ${DUMPRENDERTREE_TEMP} environment variable and
- /tmp/LayoutTests to ${LOCAL_RESOURCE_ROOT} so that local resources
- are found my WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp:
- (WTR::TestRunner::pathToLocalResource):
-
-2012-09-05 Brady Eidson <beidson@apple.com>
-
- Frequent crashes in PluginView::scriptObject under runtimeObjectCustomGetOwnPropertySlot
- <rdar://problem/12142226> and https://bugs.webkit.org/show_bug.cgi?id=95026
-
- Reviewed by Andy Estes.
-
- Add a plug-in that always fails to initialize:
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPPNewFails.cpp: Added.
- (NPPNewFails):
- (NPPNewFails::NPPNewFails):
- (NPPNewFails::NPP_New):
-
- Add it to all the project files:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2012-09-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix makefile race condition between derived sources and target
-
- r121966 removed too much of the old qmake logic, including the rule
- that ensured that qmake_all would not trigger dual runs of qmake --
- one of the derived sources -qmake-all rule, and one for making the
- derived sources.
-
- We now follow a similar pattern as before, by introducing a custom
- target that explicitly depends on the derived sources' qmake-all before
- doing a manual run of make. That ensures a single qmake run for the derived
- sources.
-
- https://bugs.webkit.org/show_bug.cgi?id=93847
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-09-05 Christophe Dumez <christophe.dumez@intel.com>
-
- WKTR doesn't implement dumpWillCacheResponse()
- https://bugs.webkit.org/show_bug.cgi?id=94607
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Define shouldCacheResponse() callback in resource
- load client and provide implementation for
- dumpWillCacheResponse() in WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::shouldCacheResponse):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::dumpWillCacheResponse):
- (WTR::TestRunner::shouldDumpWillCacheResponse):
- (TestRunner):
-
-2012-09-05 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- [DRT] LTC:: Move printing related APIs from LayoutTestController to Internals
- https://bugs.webkit.org/show_bug.cgi?id=92735
-
- Reviewed by Hajime Morita.
-
- Move numberOfPages, pageProperty & pageSizeAndMarginsInPixels in Internals and remove duplicated code from DumprenderTree & WebkitTestRunner.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::addUserStyleSheet):
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::hasCustomPageSizeStyle):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- (TestRunner::abortModal):
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-09-05 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Automate the use of AllInOne files in the Qt build
- https://bugs.webkit.org/show_bug.cgi?id=95837
-
- Reviewed by Tor Arne Vestbø.
-
- New feature file that implements the all-in-one file automation by
- adding the requested all-in-one files to SOURCES and removing the files
- it includes from SOURCES.
-
- * qmake/mkspecs/features/use_all_in_one_files.prf: Added.
-
-2012-09-04 Tim Horton <timothy_horton@apple.com>
-
- Have NRWT log more output when crash logs are missing
- https://bugs.webkit.org/show_bug.cgi?id=95814
-
- Reviewed by Dan Bernstein.
-
- Log the stderr and stdout of the test, in order to provide slightly more
- context when the WebProcess times out while running tests.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
-
-2012-09-04 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Include device serial number in ChromiumAndroidDriver log messages
- https://bugs.webkit.org/show_bug.cgi?id=95770
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._log_error): Added to replace original _log.error().
- (ChromiumAndroidDriver._log_debug): Added to replace original _log.debug().
- (ChromiumAndroidDriver._abort): Added to replace original raise AssertionError().
- (ChromiumAndroidDriver._push_executable):
- (ChromiumAndroidDriver._push_fonts):
- (ChromiumAndroidDriver._push_test_resources):
- (ChromiumAndroidDriver._run_adb_command):
- (ChromiumAndroidDriver._get_last_stacktrace):
- (ChromiumAndroidDriver._get_crash_log):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver._start_once):
- (ChromiumAndroidDriver._start_once.deadlock_detector):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_get_crash_log):
-
-2012-09-04 Satish Sampath <satish@chromium.org>
-
- Run git commands within the checkout directory
- https://bugs.webkit.org/show_bug.cgi?id=95742
-
- Reviewed by Eric Seidel.
-
- git commands run from scm/git.py are sometimes run with cwd set to the
- checkout_root and other times with whatever directory was the default cwd.
- Instead all these should run with the checkout root set as the cwd
- (except where we explicitly need a different path)
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git._run_git):
- (Git.find_checkout_root):
- (Git.discard_local_commits):
- (Git.local_commits):
- (Git.working_directory_is_clean):
- (Git.clean_working_directory):
- (Git.add_list):
- (Git.delete_list):
- (Git.exists):
- (Git._current_branch):
- (Git._changes_files_for_commit):
- (Git.revisions_changing_file):
- (Git.svn_revision):
- (Git._run_git_svn_find_rev):
- (Git.contents_at_revision):
- (Git.diff_for_file):
- (Git.show_head):
- (Git.committer_email_for_revision):
- (Git.apply_reverse_diff):
- (Git.revert_files):
- (Git.commit_with_message):
- (Git._commit_on_branch):
- (Git.svn_commit_log):
- (Git.last_svn_commit_log):
- (Git.svn_blame):
- (Git._branch_ref_exists):
- (Git.delete_branch):
- (Git.remote_merge_base):
- (Git.commit_locally_with_message):
- (Git.push_local_commits_to_server):
- (Git.commit_ids_from_commitish_arguments):
- (Git.commit_message_for_local_commit):
- (Git.files_changed_summary_for_commit):
-
-2012-09-04 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add the async createOffer functionality to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95734
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::SuccessCallbackTask::SuccessCallbackTask):
- (MockWebRTCPeerConnectionHandler::SuccessCallbackTask::runIfValid):
- (MockWebRTCPeerConnectionHandler::FailureCallbackTask::FailureCallbackTask):
- (MockWebRTCPeerConnectionHandler::FailureCallbackTask::runIfValid):
- (MockWebRTCPeerConnectionHandler::createOffer):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::taskList):
- (SuccessCallbackTask):
- (FailureCallbackTask):
-
-2012-09-04 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Output time and thread info in crash log
- https://bugs.webkit.org/show_bug.cgi?id=95768
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._get_logcat): Add '-v threadtime' to adb logcat command line to get time and thread info.
-
-2012-09-04 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Change the MediaStreamTrackList track added/removed signaling
- https://bugs.webkit.org/show_bug.cgi?id=95721
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- (MockWebMediaStreamCenter::didAddMediaStreamTrack):
- (MockWebMediaStreamCenter::didRemoveMediaStreamTrack):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- (MockWebMediaStreamCenter):
-
-2012-09-04 Tony Chang <tony@chromium.org>
-
- Elide test names when running new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=95626
-
- Reviewed by Dirk Pranke.
-
- When the test name exceeds the number of terminal columns, it leaves
- text on the screen. Avoid this by eliding the test name when running
- tests. This is similar to what ninja does when compiling.
-
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream):
- (MeteredStream.number_of_columns): Helper method to get number of
- terminal columns. Won't work on Win32 python, but meh.
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._test_status_line): New method for eliding the text. Doesn't use \u2026
- because stderr appears to be ascii only.
- (Printer.print_started_test): Route through _test_status_line.
- (Printer.print_finished_test): Route through _test_status_line.
- (Printer._print_test_trace): Route through _test_status_line.
- (Printer._print_baseline): Route through _test_status_line.
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (test_test_status_line): Test for _test_status_line.
-
-2012-09-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Print API missing documentation when generating gtkdoc
- https://bugs.webkit.org/show_bug.cgi?id=95703
-
- Reviewed by Carlos Garcia Campos.
-
- Print out API missing documentation when generating gtkdoc. This makes it
- easier to fix documentation errors.
-
- * gtk/generate-gtkdoc:
- (print_missing_api): Added.
- (generate_doc): Inline the rebase step, since it now reports an error
- when you try to rebase without generating documentation first.
- * gtk/gtkdoc.py:
- (GTKDoc.rebase_installed_docs): Raise an error when rebasing without
- generating documentation first to enable a small cleanup at the caller.
- (GTKDoc.api_missing_documentation): Added.
-
-2012-09-04 Vincent Scheib <scheib@chromium.org>
-
- [Chromium] Allow asyncronous response of pointer lock requests in layout tests.
- https://bugs.webkit.org/show_bug.cgi?id=95628
-
- Reviewed by James Robinson.
-
- Future tests need the ability to respond asynchronously that
- pointer lock requests have been accepted or rejected. This patch
- adds the following:
- testRunner.setPointerLockWillRespondAsynchronously();
- testRunner.didAcquirePointerLock();
- testRunner.didNotAcquirePointerLock();
-
- Tested in existing test:
- pointerlockchange-pointerlockerror-events.html
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::didAcquirePointerLock):
- (DRTTestRunner::didNotAcquirePointerLock):
- (DRTTestRunner::setPointerLockWillRespondAsynchronously):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestPointerLock):
- (WebViewHost::didAcquirePointerLock):
- (WebViewHost::didNotAcquirePointerLock):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- (WebViewHost::setPointerLockWillRespondAsynchronously):
-
-2012-09-04 Ojan Vafai <ojan@chromium.org>
-
- Move content shell bots to their own builder group
- https://bugs.webkit.org/show_bug.cgi?id=95765
-
- Reviewed by Adam Barth.
-
- In their current state of instability, they add too much noise. Once they get more stable,
- we can add them back to the regular group or just have them replace the other bots.
-
- Also, fix the filter for Apple Windows bots since some of them are now "Apple Win ...".
-
- * TestResultServer/static-dashboards/builders.js:
- (isWebkitTestRunner):
- (isChromiumContentShellTestRunner):
- (isChromiumWebkitTipOfTreeTestRunner):
- (loadBuildersList):
-
-2012-09-03 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Change the focus when the web view is clicked in MiniBrowser and EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=95689
-
- Reviewed by Kenneth Rohde Christiansen.
-
- In Minibrowser & EWebLauncher, the web view loses the focus when url bar is clicked.
- So, there are bugs that key events are always generated in url bar although
- the user clicked the web view.
-
- This patch recovers the focus of the web view when left button is pressed and
- adds for MiniBrowser to toggle the focus when middle button is pressed
- like EWebLauncher already did.
-
- * EWebLauncher/main.c:
- (on_mouse_down):
- * MiniBrowser/efl/main.c:
- (on_mouse_down):
- (browserCreate):
-
-2012-09-03 Tao Bai <michaelbai@chromium.org>
-
- Added ANDROID_GDBSERVER definition for Ant
- https://bugs.webkit.org/show_bug.cgi?id=95265
-
- Reviewed by Adam Barth.
-
- ANDROID_GDBSERVER will replace ANDROID_TOOLCHAIN, because the ANDROID_TOOLCHAIN
- is only used for finding the gdbserver.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-09-03 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add Ice-related functionality to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95565
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::updateICE):
- (MockWebRTCPeerConnectionHandler::addICECandidate):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-09-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Fix resizing issues related to URL bar in Minibrowser / EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=95670
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix layout issues related to the URL bar in Minibrowser
- and EWebLauncher when the window is resized.
-
- The URL bar was not resized accordingly and the Web
- page was moved behing the URL bar, hiding part of it.
-
- * EWebLauncher/main.c:
- (on_ecore_evas_resize):
- (closeWindow):
- * EWebLauncher/url_bar.c:
- (url_bar_width_set):
- (url_bar_add):
- * EWebLauncher/url_bar.h:
- * MiniBrowser/efl/main.c:
- (on_ecore_evas_resize):
- (main):
-
-2012-09-01 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Remove hard-coded skipped directories in chromium_android.py
- https://bugs.webkit.org/show_bug.cgi?id=95605
-
- Reviewed by Dirk Pranke.
-
- Now skipping rules are put in LayoutTests/platform/chromium-android/TestExpectations.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.check_sys_deps):
- (ChromiumAndroidPort.expectations_files):
- (ChromiumAndroidPort.clean_up_test_run):
-
-2012-09-01 Joanmarie Diggs <jdiggs@igalia.com>
-
- [Gtk] Incorrect/unexpected characters in the text of certain accessibles
- https://bugs.webkit.org/show_bug.cgi?id=95180
-
- Reviewed by Chris Fleizach.
-
- The bug that was fixed stood in the way of fully implementing stringValue().
- Testing that the bug is fixed requires stringValue() to be fully implemented
- and object replacement characters to be printable.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (replaceCharactersForResults): New method which turns object replacement
- characters into "<obj>" so that the characters can be properly shown in
- Layout Test results. Also turns "\n" into "<\\n>" so that printing the
- accessible text of a single object in the accessible tree doesn't mess up
- the readibility of the results.
- (AccessibilityUIElement::stringValue): Remove the code that immediately
- returned upon encountering an object of ATK_ROLE_PANEL and call the new
- replaceCharactersForResults() prior to returning the accessible string
- value.
-
-2012-09-01 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add MediaStream management to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=95543
-
- Reviewed by Adam Barth.
-
- Extending MockWebRTCPeerConnectionHandler to handle addStream/removeStream.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::addStream):
- (MockWebRTCPeerConnectionHandler::removeStream):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-08-31 Tony Chang <tony@chromium.org>
-
- Remove ENABLE_CSS3_FLEXBOX compile time flag
- https://bugs.webkit.org/show_bug.cgi?id=95382
-
- Reviewed by Ojan Vafai.
-
- Everyone is already enabling this by default and the spec has stablized.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-08-31 Pratik Solanki <psolanki@apple.com>
-
- objc_msgSend and IMP should be cast appropriately before using
- https://bugs.webkit.org/show_bug.cgi?id=95242
-
- Reviewed by Benjamin Poulain.
-
- Fix for older compilers. Pass id as the return type to the template
- instead of relying on default type.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (drt_NSFontManager_availableFontFamilies):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::wtr_NSFontManager_availableFontFamilies):
-
-2012-08-31 Zan Dobersek <zandobersek@gmail.com>
-
- nrwt: use scm instead of calling svn directly to get the revision in json results generator
- https://bugs.webkit.org/show_bug.cgi?id=89616
-
- Reviewed by Eric Seidel.
-
- Add the new 'executive' optional function argument to the SCM.in_working_directory
- class method. This way we get to reuse an Executive instance which is necessary in testing
- when we're operating with a mock version of the object.
-
- In JSONResultsGeneratorBase, it's now possible to get the current SVN revision by using
- the SCMDetector with the generator's FileSystem and Executive instances.
-
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- (SCMDetector.detect_scm_system):
- * Scripts/webkitpy/common/checkout/scm/detection_unittest.py:
- (SCMDetectorTest.test_detect_scm_system): Update the unit test to capture the mock
- Executive output and test it against expected output.
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.in_working_directory):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.in_working_directory):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.__init__):
- (JSONResultsGeneratorBase._get_svn_revision):
-
-2012-08-31 Jon Lee <jonlee@apple.com>
-
- [Tests] Add basic tests to http/tests/notifications
- https://bugs.webkit.org/show_bug.cgi?id=95493
- <rdar://problem/12209303>
-
- Reviewed by Alexey Proskuryakov.
-
- Add permission request support for WTR.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- (WTR::TestController::decidePolicyForNotificationPermissionRequest): Always allow.
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-08-31 Jon Lee <jonlee@apple.com>
-
- [DRT] Make simulating a web click on a notification a queued task
- https://bugs.webkit.org/show_bug.cgi?id=95546
- <rdar://problem/12214170>
-
- Reviewed by Alexey Proskuryakov.
-
- Making the web click happen asynchronously better mimics user interaction with the platform.
-
- * DumpRenderTree/TestRunner.h: Add a flag that determines whether we have a pending notification click.
- (TestRunner::hasPendingWebNotificationClick): Exposed so that dump() can check that the flag is
- not set.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Assert that the flag is not set.
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::simulateWebNotificationClick): Set the flag, then add a task to click the
- notification. In the case where the block gets executed after the flag has been unset, we avoid
- performing the click.
-
-2012-08-31 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] ImageDiff output is not in the expected form if image dimensions differ
- https://bugs.webkit.org/show_bug.cgi?id=95575
-
- Reviewed by Csaba Osztrogonác.
-
- Output 100% difference in the case of differing image dimensions so
- the test harness knows that we won't produce any output further.
- This matches the behavior of other ports.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2012-08-31 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r127261.
- http://trac.webkit.org/changeset/127261
- https://bugs.webkit.org/show_bug.cgi?id=95572
-
- This patch depends on other build fixes (see blockers of bug
- 95466) which should land first (Requested by milian on
- #webkit).
-
- * qmake/mkspecs/features/features.prf:
-
-2012-08-31 Milian Wolff <milian.wolff@kdab.com>
-
- [Qt] Support WebKit2/QML on QNX
- https://bugs.webkit.org/show_bug.cgi?id=95466
-
- Reviewed by Noam Rosenthal.
-
- Enable USE(3D_GRAPHICS) on QNX again, paired with the other bug fixes
- this should finally work now.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-08-30 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Skip compositing/webgl and platform/chromium/virtual/threaded/compositing/webgl tests
- https://bugs.webkit.org/show_bug.cgi?id=95400
-
- Reviewed by Dirk Pranke.
-
- WebGL is not enabled and should be skipped on Android (http://crbug.com/135877).
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.skipped_layout_tests):
-
-2012-08-30 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Tries to run empty string when calling generate-gtkdoc when not using jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=95499
-
- Unreviewed. One more fix to avoid trying to run the empty string.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2012-08-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r127171.
- http://trac.webkit.org/changeset/127171
- https://bugs.webkit.org/show_bug.cgi?id=95505
-
- testRunner does not need dumpWebNotificationCallbacks().
- (Requested by jonlee on #webkit).
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::TestRunner):
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/mac/MockWebNotificationProvider.mm:
- (-[MockWebNotificationProvider webView:didShowNotification:]):
- (-[MockWebNotificationProvider webView:didClickNotification:]):
- (-[MockWebNotificationProvider webView:didCloseNotifications:]):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForNotificationRequestFromOrigin:listener:]):
-
-2012-08-30 Pratik Solanki <psolanki@apple.com>
-
- objc_msgSend and IMP should be cast appropriately before using
- https://bugs.webkit.org/show_bug.cgi?id=95242
-
- Reviewed by Benjamin Poulain.
-
- Use wtfObjcMsgSend and wtfCallIMP templates which do appropriate casts
- to a function pointer with right types when calling objc_msgSend and an
- IMP method directly.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (drt_NSFontManager_availableFontFamilies):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::wtr_NSFontManager_availableFontFamilies):
-
-2012-08-30 Benjamin Poulain <bpoulain@apple.com>
-
- Replace JSC::UString by WTF::String
- https://bugs.webkit.org/show_bug.cgi?id=95271
-
- Reviewed by Geoffrey Garen.
-
- Get rid of UString.
-
- * DumpRenderTree/efl/WorkQueueItemEfl.cpp:
- * gdb/webkit.py:
- (WTFStringPrinter.to_string):
- (JSCIdentifierPrinter.to_string):
- (JSCJSStringPrinter.to_string):
- (add_pretty_printers):
-
-2012-08-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt should have TestExpectations everywhere we have Skipped files for apple ports
- https://bugs.webkit.org/show_bug.cgi?id=95495
-
- Reviewed by Ojan Vafai.
-
- This is a follow-on to bug 95370 that adds in support for
- platform/wk2/TestExpectations and
- platform/{mac,win}-$version/TestExpectations.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_expectations_files):
-
-2012-08-30 Dirk Pranke <dpranke@chromium.org>
-
- executive.run_in_parallel() hangs if given nothing to do
- https://bugs.webkit.org/show_bug.cgi?id=95387
-
- Reviewed by Ojan Vafai.
-
- Check to make sure that Executive.run_in_parallel() requires
- a non-empty list of commands to execute; passing an empty list
- seems surely like a programming error.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.run_in_parallel):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_in_parallel_assert_nonempty):
-
-2012-08-30 Dirk Pranke <dpranke@chromium.org>
-
- decide what (and how) we should set the tolerance for ref test pixel compares and test for that
- https://bugs.webkit.org/show_bug.cgi?id=94746
-
- Reviewed by Ojan Vafai.
-
- Add an assertion to diff_image() to check that we are passing
- tolerance=0 explicitly when diffing ref test results.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
-
-2012-08-30 Dirk Pranke <dpranke@chromium.org>
-
- NRWT should look in mac-wk2 for a TestExpecations file
- https://bugs.webkit.org/show_bug.cgi?id=95370
-
- Reviewed by Ojan Vafai.
-
- Adds support for mac-wk2 and win-wk2 to expectations_files()
- for the apple mac and apple win ports.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_expectations_files):
-
-2012-08-30 Jon Lee <jonlee@apple.com>
-
- [Mac] Add testRunner.dumpWebNotificationCallbacks() to DRT
- https://bugs.webkit.org/show_bug.cgi?id=95232
- <rdar://problem/12190776>
-
- Reviewed by Alexey Proskuryakov.
-
- Add additional output when running test, if testRunner.dumpWebNotificationCallbacks() is called.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::TestRunner):
- (dumpWebNotificationCallbacksCallback):
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- (TestRunner::dumpWebNotificationCallbacks):
- (TestRunner::setDumpWebNotificationCallbacks):
- * DumpRenderTree/mac/MockWebNotificationProvider.mm:
- (-[WebNotification _drt_descriptionSuitableForTestResult]):
- (-[MockWebNotificationProvider webView:didShowNotification:]):
- (-[MockWebNotificationProvider webView:didClickNotification:]):
- (-[MockWebNotificationProvider webView:didCloseNotifications:]):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForNotificationRequestFromOrigin:listener:]):
-
-2012-08-30 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Introduce MediaConstraints
- https://bugs.webkit.org/show_bug.cgi?id=95198
-
- Reviewed by Adam Barth.
-
- Extending the MockWebRTCPeerConnectionHandler with MediaConstraints functionality.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (isSupportedConstraint):
- (isValidConstraint):
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-08-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] Add didReceiveServerRedirectForProvisionalLoadForFrame dumping
- https://bugs.webkit.org/show_bug.cgi?id=95454
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added didReceiveServerRedirectForProvisionalLoadForFrame dumping to WTR.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame):
-
-2012-08-30 Leo Yang <leoyang@rim.com>
-
- Update my email address.
-
- Not reviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-30 Jochen Eisinger <jochen@chromium.org>
-
- [NRWT] Add support for recognizing arbitrary process names in crash lines
- https://bugs.webkit.org/show_bug.cgi?id=95435
-
- Reviewed by Adam Barth.
-
- When running layout tests in the chromium port using the content shell,
- we want to be able to report sub-process crashes as well.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver._check_for_driver_crash):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_check_for_driver_crash):
-
-2012-08-29 Zan Dobersek <zandobersek@gmail.com>
-
- Random test-webkitpy failures on the buildbot
- https://bugs.webkit.org/show_bug.cgi?id=95096
-
- Reviewed by Dirk Pranke.
-
- Suppress occasional errors when running test-webkitpy on GTK builders
- by running these tests serially. The 64-bit Release builder is especially
- prone to these as it can run up to 24 tests in parallel.
-
- Despite the tests not being run in parallel, the testing only lasts a handful
- of seconds more, so this is a worthy trade-off to avoid unnecessary
- false-alarm redness on the GTK builders.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunPythonTests.start):
-
-2012-08-29 Benjamin Poulain <bpoulain@apple.com>
-
- REGRESSION(r126780): Crash using StringImpl::is8Bit before checking if there is an impl
- https://bugs.webkit.org/show_bug.cgi?id=95380
-
- Reviewed by Michael Saboff.
-
- * TestWebKitAPI/Tests/WTF/WTFString.cpp:
- Add very basic tests for String::ascii(). This covers the case of null strings that caused
- the crash.
-
-2012-08-29 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Canvas should have a distinct role
- https://bugs.webkit.org/show_bug.cgi?id=95248
-
- Reviewed by Chris Fleizach.
-
- Add support for canvas accessibility role.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString):
-
-2012-08-29 José Dapena Paz <jdapena@igalia.com>
-
- [Gtk] Process Gtk 3.4 smooth scroll events properly
- https://bugs.webkit.org/show_bug.cgi?id=88070
-
- Added continousMouseScrollBy support in WebKitTestRunner, and added
- implementation for gtk, and stub for Qt, mac and EFL.
-
- Added layout tests support for smooth scroll in Gtk 3.4, and use smooth
- scroll for emulating multi-tick mouseScrollBy events.
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (mouseScrollByCallback):
- (continuousMouseScrollByCallback):
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::mouseScrollBy):
- (WTR):
- (WTR::EventSendingController::continuousMouseScrollBy):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
- (WTR):
- (WTR::EventSenderProxy::mouseScrollBy):
- (WTR::EventSenderProxy::continuousMouseScrollBy):
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR):
- (WTR::EventSenderProxy::continuousMouseScrollBy):
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::continuousScrollBy):
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::continuousMouseScrollBy):
- (WTR):
-
-2012-08-29 Alex Sakhartchouk <alexst@chromium.org>
-
- [chromium] Support high DIP pixel tests with DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=94935
-
- Reviewed by James Robinson.
-
- Adding device scale factor into the drt image dumping code
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::reset):
- (DRTTestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setDeviceScaleFactor):
- (WebViewHost::paintInvalidatedRegion):
- (WebViewHost::canvas):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-08-29 Kevin Funk <kevin.funk@kdab.com>
-
- Fix check-webkit-style (and probably others) when WebKit is in a git submodule
- https://bugs.webkit.org/show_bug.cgi?id=95177
-
- Reviewed by Dirk Pranke.
-
- Find the real checkout root by using 'git rev-parse --show-toplevel' instead of '--git-dir'
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
-
-2012-08-29 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations wrongly touches other platforms' TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=95222
-
- Reviewed by Adam Barth.
-
- The code we had to remove REBASELINE lines from the
- TestExpectations files did not handle multiple files (in a
- cascade) correctly; we weren't limiting lines to a particular
- file correctly in without_rebaseline_modifier(). This patch
- fixes that and corrects the tests (which weren't correct and
- didn't cover things very well).
-
- Note also that the webkit-patch rebaseline-commands are still
- using the include_overrides=False option in a couple places;
- this is never correct or needed at this point. This patch fixes
- the usage for webkit-patch rebaseline-expectations, but I still
- need to fix rebaseline-test-internal, which I will do in a
- separate patch (see bug 95268).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.remove_rebaselined_tests.without_rebaseline_modifier):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RebaseliningTest.assertRemove):
- (RebaseliningTest.test_remove):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations._update_expectations_files):
-
-2012-08-29 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations hangs
- https://bugs.webkit.org/show_bug.cgi?id=95243
-
- Reviewed by Tony Chang.
-
- Don't try to run no commands in parallel; report an error
- instead that we didn't find any tests to rebaseline.
-
- Filed bug 95387 as well to make sure run_in_parallel() doesn't hang forever.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_assert_command):
- (test_rebaseline_expectations_noop):
-
-2012-08-29 Brady Eidson <beidson@apple.com>
-
- REGRESSION: Not sending NPP_SetWindow is causing Flash to not throttle itself
- <rdar://problem/12133021> and https://bugs.webkit.org/show_bug.cgi?id=95274
-
- Reviewed by Sam Weinig.
-
- Add a test plug-in that calls back into the page with info on the NPWindow passed
- in to NPP_SetWindow.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/LogNPPSetWindow.cpp: Added.
- (LogNPPSetWindow):
- (LogNPPSetWindow::LogNPPSetWindow):
- (LogNPPSetWindow::NPP_SetWindow):
-
-2012-08-29 Jon Lee <jonlee@apple.com>
-
- [Mac] Basic DRT support for web notifications
- https://bugs.webkit.org/show_bug.cgi?id=79492
- <rdar://problem/10357639>
-
- Reviewed by Alexey Proskuryakov.
-
- This patch implements the stubs for web notification support on DRT. Assume that when
- Notification.requestPermission() is called, the user always chooses to allow it. This can be easily
- overridden in layout tests with testRunner.denyWebNotificationPermission() when needed.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Add MockWebNotificationProvider.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Set MockWebNotificationProvider singleton as the provider for the
- web view.
- (resetWebViewToConsistentStateBeforeTesting): Make sure to reset the provider's state between each test.
-
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::grantWebNotificationPermission): Set permission to granted for specified origin.
- (TestRunner::denyWebNotificationPermission): Set permission to denied for specified origin.
- (TestRunner::removeAllWebNotificationPermissions):
- (TestRunner::simulateWebNotificationClick): Retrieve the notification ID from the JS notification object, and
- simulate the click. This is similar to how WTR performs the click.
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForNotificationRequestFromOrigin:listener:]): Assume when asked, the
- user allows web notifications.
-
- * DumpRenderTree/mac/MockWebNotificationProvider.h: Added. Maintains a list of registered web views, known permissions,
- a map of notification IDs to WebNotification instances, and a map of the WebViews from which the notifications were dispatched.
- * DumpRenderTree/mac/MockWebNotificationProvider.mm: Added.
- (+[MockWebNotificationProvider shared]): The provider is a singleton.
- (-[MockWebNotificationProvider init]): Instantiate the permissions map.
- (-[MockWebNotificationProvider registerWebView:]):
- (-[MockWebNotificationProvider unregisterWebView:]):
- (-[MockWebNotificationProvider showNotification:fromWebView:]): Add the notification to the maps. Tell the web view that the
- notification did show.
- (-[MockWebNotificationProvider cancelNotification:]): Tell the web view the notification did close.
- (-[MockWebNotificationProvider notificationDestroyed:]): Remove the notification from the maps. Here we don't make a callback.
- (-[MockWebNotificationProvider clearNotifications:]): Remove the specified notifications from the maps. Here we don't make a callback.
- (-[MockWebNotificationProvider webView:didShowNotification:]): Delegate callback. Dispatch the show event.
- (-[MockWebNotificationProvider webView:didClickNotification:]): Delegate callback. Dispatch the click event.
- (-[MockWebNotificationProvider webView:didCloseNotifications:]): Delegate callback. Dispatch the close event.
- (-[MockWebNotificationProvider simulateWebNotificationClick:]): Tell the web view we clicked the notification.
- (-[MockWebNotificationProvider policyForOrigin:]): Look in the permission dictionary.
- (-[MockWebNotificationProvider setWebNotificationOrigin:permission:]): Set the permission for the origin in the dictionary.
- (-[MockWebNotificationProvider removeAllWebNotificationPermissions]): Clear the permission map.
- (-[MockWebNotificationProvider reset]): Remove all mappings and permissions.
-
-2012-08-29 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Adjust wtf include header style
- https://bugs.webkit.org/show_bug.cgi?id=95368
-
- Reviewed by Yong Li.
-
- Switch to #include <wtf/...> like the other ports.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- * DumpRenderTree/blackberry/PNGImageEncoder.cpp:
- * DumpRenderTree/blackberry/PNGImageEncoder.h:
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h:
- * DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp:
-
-2012-08-29 Roger Fong <roger_fong@apple.com>
-
- Update cygwin-downloader.zip to match modified downloader script.
- https://bugs.webkit.org/show_bug.cgi?id=76936
-
- Rubber Stamped by Jon Honeycutt.
-
- cygwin-downloader.py was modified in http://trac.webkit.org/changeset/126948.
- Updating zip to reflect changes.
-
- * CygwinDownloader/cygwin-downloader.zip:
-
-2012-08-29 Dominik Röttsches <dominik.rottsches@intel.com>
-
- Stylechecker warns about comparison to zero when comparing to 0.5
- https://bugs.webkit.org/show_bug.cgi?id=94913
-
- Reviewed by Dirk Pranke.
-
- According to the python documentation, \W is the character group with all
- non-alphanumeric characters, equivalent to [^a-zA-Z0-9_], which is equal to
- to [^\w]. We need to exclude the dot "." as well, so that floating point
- values do not trigger this warning. Adding a unit test that shows the problem.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_comparisons_to_zero): Modifying the regex to not get triggered by comparing to floats.
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_null_false_zero): Unit test exposing this issue.
-
-2012-08-29 Jon Lee <jonlee@apple.com>
-
- WTR build fixes.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/WebNotificationProvider.cpp:
- (WTR::WebNotificationProvider::showWebNotification): Make ML happier.
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2012-08-29 Jon Lee <jonlee@apple.com>
-
- [WK2] Basic WTR support for web notifications
- https://bugs.webkit.org/show_bug.cgi?id=95154
- <rdar://problem/12184492>
-
- Reviewed by Alexey Proskuryakov.
-
- Implement WTR support, without platform event output (bug 95233).
-
- Legacy APIs will not be supported, since many of the tests are skipped
- on ports that do test notifications, and the issue with using file:// as the origin means a lot of the permissions
- tests won't work. Bugs 81048 and 81697 will track migrating the existing tests to use the new testRunner API, and move
- the tests to http/tests/notifications.
-
- Permissions will be handled only in the injected bundle. This allows tests to set permission synchronously, and not
- require a chain of setTimeout()'s when writing a notification test. Clicking a notification, however, should
- be invoked from the UIProcess.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage): When told to "Reset", clear out all of the permissions.
- (WTR::InjectedBundle::postSimulateWebNotificationClick): Tell the bundle client to simulate a click based on the
- notification's internal ID.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::grantWebNotificationPermission): Manually set the permission using WKBundle SPI.
- (WTR::TestRunner::denyWebNotificationPermission): Manually set the permission using WKBundle SPI.
- (WTR::TestRunner::removeAllWebNotificationPermissions):
- (WTR::TestRunner::simulateWebNotificationClick): Post a message through the injected bundle.
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
-
- Because supporting web notifications goes beyond a couple functions, move all of the logic into a WebNotificationProvider
- class.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): When the injected bundle sends a message to simulate a click,
- TestInvocation forwards that request to the TestController.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Set the provider.
- (WTR::TestController::resetStateToConsistentValues): Tell the provider to reset.
- (WTR::TestController::simulateWebNotificationClick): Tell the provider to simulate a user clicking on a platform notification.
- * WebKitTestRunner/TestController.h: Holds an instance to the provider.
-
- The provider maintains a pointer to one notification manager (presumably the web process associated with WTR), and a set
- of notification IDs that have been "shown" by the platform. This allows us to simulate a click on a notification.
- * WebKitTestRunner/WebNotificationProvider.h: Added.
- * WebKitTestRunner/WebNotificationProvider.cpp: Added.
- (WTR::WebNotificationProvider::showWebNotification): Adds the notification to set of shown notifications. Notifies provider that
- the notification got shown.
- (WTR::WebNotificationProvider::closeWebNotification): Removes the notification from the set. Notifies provider that the notification
- got closed.
- (WTR::WebNotificationProvider::addNotificationManager): Maintains one manager, which is fine for testing purposes.
- (WTR::WebNotificationProvider::removeNotificationManager): Maintains one manager.
- (WTR::WebNotificationProvider::notificationPermissions): When the web process starts, it maintains an initial set of known
- permissions. For testing purposes, we always want this set to be empty.
- (WTR::WebNotificationProvider::simulateWebNotificationClick): Notifies provider that the notification got "clicked".
- (WTR::WebNotificationProvider::reset): To reset the state, we pretend that we closed all of the platform notifications.
-
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj: Add WebNotificationProvider.
-
-2012-08-29 Kamil Blank <k.blank@samsung.com>
-
- [EFL] Add setting API for allow universal/file access from file URLs.
- https://bugs.webkit.org/show_bug.cgi?id=83121
-
- Reviewed by Eric Seidel.
-
- Implementation of setAllowUniversalAccessFromFileURLs and setAllowFileAccessFromFileURLs.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::setAllowUniversalAccessFromFileURLs):
- (TestRunner::setAllowFileAccessFromFileURLs):
-
-2012-08-29 Jon Lee <jonlee@apple.com>
-
- Update TestRunner API for web notifications
- https://bugs.webkit.org/show_bug.cgi?id=95093
- <rdar://problem/12179649>
-
- Reviewed by Alexey Proskuryakov.
-
- As it turns out the patch for this accidentally got squashed into the commit for
- bug 95099 (r126909). This amendment patch adds some comments about the renaming
- of the older TestRunner API for web notifications.
-
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
-
-2012-08-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r126972.
- http://trac.webkit.org/changeset/126972
- https://bugs.webkit.org/show_bug.cgi?id=95349
-
- accessibility/canvas-description-and-role.html has been
- failing consistently on several bots and Dominic needs some
- time to investigate why (Requested by jchaffraix on #webkit).
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString):
-
-2012-08-29 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Resolve CMake warnings on overlapping search paths for EFL jhbuild-enabled build
- https://bugs.webkit.org/show_bug.cgi?id=84707
-
- Reviewed by Gustavo Noronha Silva.
-
- Most of the warnings have been fixed now that FindCairo.cmake and
- FindGLIB.cmake have been rewritten. The remaining one, related to
- FindFontconfig.cmake, shows up when building on a 64-bit
- Debian-based systems.
-
- jhbuild installs libraries into lib64/ by default on 64-bit Linux
- installations, while CMake does not look for libraries in lib64/
- when /etc/debian_version exists on the system. The FIND_LIBRARY()
- would then sometimes end up using the system installation instead of
- the jhbuild one, causing mismatches and, when pkg-config is not used
- at all, failing to find libraries altogether.
-
- * efl/jhbuildrc: Set the CMAKE_LIBRARY_PATH environment variable
- when use_lib64 is set to force CMake to look into lib64/ regardless
- of the presence of /etc/debian_version.
-
-2012-08-29 Dominik Röttsches <dominik.rottsches@intel.com>
-
- The 2d.imageData.object.round canvas test is failing
- https://bugs.webkit.org/show_bug.cgi?id=40272
-
- Reviewed by Benjamin Poulain.
-
- Updating patch to address Benjamin's review comments.
- Adding a WTF test to test lrint implementation.
-
- * TestWebKitAPI/CMakeLists.txt: Added MathExtras.cpp test file.
- * TestWebKitAPI/GNUmakefile.am: Added MathExtras.cpp test file.
- * TestWebKitAPI/TestWebKitAPI.gypi: Added MathExtras.cpp test file.
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added MathExtras.cpp test file.
- * TestWebKitAPI/Tests/WTF/MathExtras.cpp: Added this test file containing a test for lrint().
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added MathExtras.cpp test file.
-
-2012-08-29 Florin Malita <fmalita@chromium.org>
-
- Unreviewed, updating Kelly Norton's email address at his request.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-29 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] The nrwt should check the contents of the skipped files with --lint-test-files
- https://bugs.webkit.org/show_bug.cgi?id=93723
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser.expectation_for_skipped_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (SkippedTests.test_skipped_entry_dont_exist):
-
-2012-08-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120113.
- http://trac.webkit.org/changeset/120113
- https://bugs.webkit.org/show_bug.cgi?id=95320
-
- Wrong fix for the problem, experimentally rolling it out for
- bug 95237. (Requested by rakuco on #webkit).
-
- * efl/jhbuildrc:
-
-2012-08-29 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Canvas should have a distinct role
- https://bugs.webkit.org/show_bug.cgi?id=95248
-
- Reviewed by Chris Fleizach.
-
- Add support for canvas accessibility role.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString):
-
-2012-08-28 Eric Seidel <eric@webkit.org>
-
- cr-ews bot doesn't set CWD correctly when zipping layout test results
- https://bugs.webkit.org/show_bug.cgi?id=91265
-
- Reviewed by Kenneth Russell.
-
- This should make the zips slightly less cumbersome to deal with.
-
- * Scripts/webkitpy/common/system/workspace.py:
- (Workspace.create_zip):
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- (WorkspaceTest.test_create_zip):
- (WorkspaceTest.test_create_zip_exception):
-
-2012-08-28 Benjamin Poulain <benjamin@webkit.org>
-
- Fix the Commiters script
-
- Unreviewed.
-
- Remove Roger Fong from the Contributor list, he appears in the Commiter list since r126949.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-28 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-28 Roger Fong <roger_fong@apple.com>
-
- Add minires to list of required cygwin install packages.
- https://bugs.webkit.org/show_bug.cgi?id=76936
-
- Reviewed by Tim Horton.
-
- * CygwinDownloader/cygwin-downloader.py:
-
-2012-08-28 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Upstream layout test expectations (Part 2)
- https://bugs.webkit.org/show_bug.cgi?id=95212
-
- Reviewed by Adam Barth.
-
- - Now run both gpu path and non-gpu path of 2d canvas layout tests
- because both are used in chromium-android.
-
- - Exclude all webgl tests because webgl is not enabled yet.
-
- - Removed 'win' from the baseline fallback list. This was a mistake.
-
- - Moved some small directories to TestExpectations from skipped_layout_tests().
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort):
- (ChromiumAndroidPort.skipped_layout_tests):
-
-2012-08-28 Joanmarie Diggs <jdiggs@igalia.com>
-
- Implement AccessibilityUIElement::titleUIElement() and AccessibilityUIElement::stringValue()
- https://bugs.webkit.org/show_bug.cgi?id=95185
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::titleUIElement): Implemented
- Gets the ATK_RELATION_LABELLED_BY target.
- (AccessibilityUIElement::stringValue): Implemented for all roles but ATK_ROLE_PANEL.
- Gets the string from atk_text_get_text(). Will implement for ATK_ROLE_PANEL after
- bug 95180 is fixed.
-
-2012-08-28 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Crash due to object getting deleted inside updateBackingStore
- https://bugs.webkit.org/show_bug.cgi?id=94619
-
- Reviewed by Chris Fleizach.
-
- Change isValid to !isDetached after deleting isValid from
- chromium WebAccessibilityObject as being redundant.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::isValidGetterCallback):
-
-2012-08-28 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r126914.
- http://trac.webkit.org/changeset/126914
- https://bugs.webkit.org/show_bug.cgi?id=95239
-
- it breaks everything and fixes nothing (Requested by pizlo on
- #webkit).
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp:
- (CppBoundClass::~CppBoundClass):
- (CppBoundClass::invoke):
- (CppBoundClass::getProperty):
- (CppBoundClass::setProperty):
- (CppBoundClass::bindCallback):
- (CppBoundClass::bindProperty):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (applyFontMap):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printResourceDescription):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::winNotificationReceived):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::worldIDForWorld):
- (WTR::TestRunner::evaluateScriptInIsolatedWorld):
-
-2012-08-28 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Rename first/second to key/value in HashMap iterators
- https://bugs.webkit.org/show_bug.cgi?id=82784
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp:
- (CppBoundClass::~CppBoundClass):
- (CppBoundClass::invoke):
- (CppBoundClass::getProperty):
- (CppBoundClass::setProperty):
- (CppBoundClass::bindCallback):
- (CppBoundClass::bindProperty):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (applyFontMap):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printResourceDescription):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::winNotificationReceived):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::worldIDForWorld):
- (WTR::TestRunner::evaluateScriptInIsolatedWorld):
-
-2012-08-27 Jon Lee <jonlee@apple.com>
-
- Update TestRunner API for web notifications
- https://bugs.webkit.org/show_bug.cgi?id=95093
- <rdar://problem/12179649>
-
- Reviewed by Jessie Berlin.
-
- This is work toward providing Mac support for web notifications in DRT and WTR (77969).
-
- Some of the legacy APIs are less than ideal, and not tenable with the WTR infrastructure.
- This first patch renames the TestRunner calls to use the term "web notifications" instead of
- "desktop notifications", deprecates a couple API calls that are not used by anyone, and adds
- additional calls that will be used in the tests that test the standard API.
-
- * DumpRenderTree/TestRunner.h:
- (TestRunner): For consistency, rename a couple member variables. Remove unused checkDesktopNotificationPermission()
- and areDesktopNotificationPermissionRequestsIgnored(). Remove origin mapping since each port implements its own solution.
- * DumpRenderTree/TestRunner.cpp: Push grantWebNotificationPermission() to individual ports.
- (TestRunner::TestRunner):
- (ignoreLegacyWebNotificationPermissionRequestsCallback): Renamed.
- (simulateLegacyWebNotificationClickCallback): Renamed.
- (grantWebNotificationPermissionCallback): Renamed.
- (denyWebNotificationPermissionCallback): Added.
- (removeAllWebNotificationPermissionsCallback): Added.
- (simulateWebNotificationClickCallback): Added.
- (TestRunner::staticFunctions):
- (TestRunner::ignoreLegacyWebNotificationPermissionRequests):
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner): Added bindings for new APIs.
- (DRTTestRunner::grantWebNotificationPermission):
- (DRTTestRunner::denyWebNotificationPermission): Stub.
- (DRTTestRunner::removeAllWebNotificationPermissions): Stub.
- (DRTTestRunner::simulateWebNotificationClick): Stub.
- (DRTTestRunner::simulateLegacyWebNotificationClick):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
-
- Added stubs.
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm: Later patch will contain implementation of this API.
- * DumpRenderTree/qt/TestRunnerQt.cpp: Added Qt-based stubs.
- * DumpRenderTree/win/TestRunnerWin.cpp:
-
-2012-08-28 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- [webkit-patch] gets stuck into an infinite loop if bugzilla doesn't respond in time.
- https://bugs.webkit.org/show_bug.cgi?id=94700
-
- Reviewed by Eric Seidel.
-
- Interrupting download with a timeout would be a possible solution.
- I imported the socket module and used the setdefaulttimeout() method.
- Fixing it is important, because EWS bots need to be restarted regularly
- because of this bug.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla._get_browser):
- (Bugzilla.setdefaulttimeout):
-
-2012-08-28 Gabor Rapcsanyi <rgabor@webkit.org>
-
- [Qt] Keep QT_QPA_PLATFORM_PLUGIN_PATH environment variable in NRWT
- https://bugs.webkit.org/show_bug.cgi?id=95194
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.setup_environ_for_server):
-
-2012-08-28 Andras Becsi <andras.becsi@nokia.com>
-
- [watchlist] Unreviewed, subscribe to Qt bugs.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-28 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] New test introduced in r126611 fails: fast/css/image-set-setting.html
- https://bugs.webkit.org/show_bug.cgi?id=95054
-
- Reviewed by Eric Seidel.
-
- Enable CSS_IMAGE_SET for the Qt build.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-08-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Enable CSS sticky position
- https://bugs.webkit.org/show_bug.cgi?id=95172
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-08-27 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Memory cache should be cleared in between test runs
- https://bugs.webkit.org/show_bug.cgi?id=95105
-
- Reviewed by Martin Robinson.
-
- Call the new DumpRenderTreeSupportGtk helper method after every test
- to clear the memory cache.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest):
-
-2012-08-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r126836.
- http://trac.webkit.org/changeset/126836
- https://bugs.webkit.org/show_bug.cgi?id=95163
-
- Broke all Apple ports, EFL, and Qt. (Requested by tkent on
- #webkit).
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp:
- (CppBoundClass::~CppBoundClass):
- (CppBoundClass::invoke):
- (CppBoundClass::getProperty):
- (CppBoundClass::setProperty):
- (CppBoundClass::bindCallback):
- (CppBoundClass::bindProperty):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (applyFontMap):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printResourceDescription):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::winNotificationReceived):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::worldIDForWorld):
- (WTR::TestRunner::evaluateScriptInIsolatedWorld):
-
-2012-08-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Rename first/second to key/value in HashMap iterators
- https://bugs.webkit.org/show_bug.cgi?id=82784
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp:
- (CppBoundClass::~CppBoundClass):
- (CppBoundClass::invoke):
- (CppBoundClass::getProperty):
- (CppBoundClass::setProperty):
- (CppBoundClass::bindCallback):
- (CppBoundClass::bindProperty):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (applyFontMap):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printResourceDescription):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::winNotificationReceived):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::worldIDForWorld):
- (WTR::TestRunner::evaluateScriptInIsolatedWorld):
-
-2012-08-24 James Robinson <jamesr@chromium.org>
-
- WebGL should not flip textures on presentation if contents are unchanged
- https://bugs.webkit.org/show_bug.cgi?id=94961
-
- Reviewed by Kenneth Russell.
-
- Run some compositing webgl tests in threaded mode to catch regressions specific to that mode.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-08-27 Gavin Peters <gavinp@chromium.org>
-
- [webkit-patch] Don't crash chrome-channels command when a previously unknown platform shows up.
- https://bugs.webkit.org/show_bug.cgi?id=95104
-
- Reviewed by Adam Barth.
-
- Today I found out this command was broken by the new iOS platform showing up on omahaproxy. Now the webkit-patch chrome-channels command gracefully handles new, previously unknown platforms. Also, it prints iOS in the proper mixed case.
-
- * Scripts/webkitpy/common/net/omahaproxy.py:
- (OmahaProxy):
- (OmahaProxy.get_revisions):
- * Scripts/webkitpy/common/net/omahaproxy_unittest.py:
- (OmahaProxyTest):
- (OmahaProxyTest.test_get_revisions):
-
-2012-08-27 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL][WK2] Free Url_Bar on program exit
- https://bugs.webkit.org/show_bug.cgi?id=95086
-
- Reviewed by Eric Seidel.
-
- Fix a memory leak by freeing the Url_Bar on program exit.
-
- * MiniBrowser/efl/main.c:
- (main): Call url_bar_del() to free the Url_Bar.
-
-2012-08-27 James Robinson <jamesr@chromium.org>
-
- [chromium] Fix exit code status logic in run-chromium-webkit-unit-tests
- https://bugs.webkit.org/show_bug.cgi?id=95115
-
- Reviewed by Adam Barth.
-
- Use VCSUtils utility function to check if webkit_unit_tests terminates normally so we generate a non-zero exit
- code if the unit tests crash.
-
- * Scripts/run-chromium-webkit-unit-tests:
-
-2012-08-27 Benjamin Poulain <benjamin@webkit.org>
-
- Add ECMAScript Number to String conversion to WTF::String
- https://bugs.webkit.org/show_bug.cgi?id=95016
-
- Reviewed by Geoffrey Garen.
-
- * TestWebKitAPI/Tests/WTF/WTFString.cpp:
- (TestWebKitAPI::testNumberToStringECMAScript):
- (TestWebKitAPI): Add tests for String's ECMAString number conversion.
-
-2012-08-27 Philippe Normand <pnormand@igalia.com>
-
- [GStreamer][Qt] WebAudio support
- https://bugs.webkit.org/show_bug.cgi?id=94806
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml: Enable WebAudio support.
-
-2012-08-27 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- Rename RegisterProtocolHandler API to NavigatorContentUtils
- https://bugs.webkit.org/show_bug.cgi?id=94920
-
- Reviewed by Adam Barth.
-
- Renamed 'register-protocol-handler' feature to 'navigator-content-utils'.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-08-24 Benjamin Poulain <bpoulain@apple.com>
-
- Unify Number to StringImpl conversion
- https://bugs.webkit.org/show_bug.cgi?id=94879
-
- Reviewed by Geoffrey Garen.
-
- Add testing for the new IntegerToStringConversion.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp: Added.
-
-2012-08-23 James Robinson <jamesr@chromium.org>
-
- [chromium] Convert WebLayerTreeView interface into pure virtual
- https://bugs.webkit.org/show_bug.cgi?id=94866
-
- Reviewed by Adrienne Walker.
-
- Updates DumpRenderTree's WebViewHost to vend a WebCompositorOutputSurface so DumpRenderTree can run compositing
- tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- * DumpRenderTree/chromium/WebViewHostOutputSurface.cpp: Copied from Source/WebKit/chromium/src/WebLayerTreeViewImpl.h.
- (WebKit):
- (WebKit::WebViewHostOutputSurface::WebViewHostOutputSurface):
- (WebKit::WebViewHostOutputSurface::~WebViewHostOutputSurface):
- (WebKit::WebViewHostOutputSurface::bindToClient):
- (WebKit::WebViewHostOutputSurface::capabilities):
- (WebKit::WebViewHostOutputSurface::context3D):
- (WebKit::WebViewHostOutputSurface::sendFrameToParentCompositor):
- * DumpRenderTree/chromium/WebViewHostOutputSurface.h: Copied from Source/WebKit/chromium/src/WebLayerTreeViewImpl.h.
- (WebKit):
- (WebViewHostOutputSurface):
-
-2012-08-24 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Many 'Unexpected EOF ...' when a test crashes
- https://bugs.webkit.org/show_bug.cgi?id=94865
-
- Reviewed by Dirk Pranke.
-
- Android detects crash of test by checking if the return value of read() is None.
- Added a parameter 'treat_no_data_as_crash' to let ServerProcess know the special requirement of Android.
- If set, ServerProcess will set _crashed unconditionaly when there is no data.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._android_server_process_constructor):
- (ChromiumAndroidDriver._start_once):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.__init__):
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
-
-2012-08-24 Arnaud Renevier <a.renevier@sisa.samsung.com>
-
- build-webkit --gtk fails with Can't exec ""
- https://bugs.webkit.org/show_bug.cgi?id=94944
-
- Reviewed by Martin Robinson.
-
- When jhbuild wrapper is not needed, do unshift a blank string to build
- arguments.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
-
-2012-08-24 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add readyState functionality to RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=94813
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::stop):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-08-24 Michael Brüning <michaelbruening@gmail.com>
-
- Unreviewed. Adding myself to committers list.
-
- Also updated email information.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-24 Michael Brüning <michaelbruening@gmail.com>
-
- [Qt][WK2] Make viewport related experimental.test properties encapsulated.
- https://bugs.webkit.org/show_bug.cgi?id=88320
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Changed the access to the viewport attributes to use the viewport object that is introduced by this change.
-
- * MiniBrowser/qt/qml/ViewportInfoItem.qml:
-
-2012-08-23 Dirk Pranke <dpranke@chromium.org>
-
- leak detection broken after r126247 on mac
- https://bugs.webkit.org/show_bug.cgi?id=94893
-
- Unreviewed, build fix.
-
- Adds is_snowleopard(), is_lion back() in for the mac port. We'll
- probably need an is_mountainlion() or equivalent at some point,
- I'm guessing (but I've deleted the leopard code).
-
- * Scripts/webkitpy/layout_tests/port/leakdetector.py:
- (LeakDetector._callstacks_to_exclude_from_leaks):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- (MacPort.is_snowleopard):
- (MacPort.is_lion):
-
-2012-08-23 Julien Chaffraix <jchaffraix@webkit.org>
-
- [Chromium] Enable AtomicString && CString && WTFString && StringImpl unit tests
- https://bugs.webkit.org/show_bug.cgi?id=94871
-
- Reviewed by Benjamin Poulain.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- Added the missing files to Chromium's build system.
-
-2012-08-23 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [watchlist] Unreviewed, subscribe to WebKit2-EFL bugs.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-23 Ryosuke Niwa <rniwa@webkit.org>
-
- Replay tests take forever to load
- https://bugs.webkit.org/show_bug.cgi?id=94764
-
- Reviewed by Adam Barth.
-
- Don't load about:blank at the beginning. This appears to clog the DRT.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayPerfTest.run_single):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestReplayPerfTest.test_run_single):
- (TestReplayPerfTest.test_run_single_fails_when_output_has_error):
-
-2012-08-23 Kenneth Russell <kbr@google.com>
-
- Unreviewed, rolling out r126497.
- http://trac.webkit.org/changeset/126497
- https://bugs.webkit.org/show_bug.cgi?id=94764
-
- Caused webkitpy-test step to start failing.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayPerfTest.run_single):
-
-2012-08-23 Emil A Eklund <eae@chromium.org>
-
- Add saturation arithmetic support to FractionalLayoutUnit
- https://bugs.webkit.org/show_bug.cgi?id=94364
-
- Reviewed by Benjamin Poulain.
-
- Add test for new saturatedArithmetic functions.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/SaturatedArithmeticOperations.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2012-08-23 Ryosuke Niwa <rniwa@webkit.org>
-
- Replay tests take forever to load
- https://bugs.webkit.org/show_bug.cgi?id=94764
-
- Reviewed by Adam Barth.
-
- Don't load about:blank at the beginning. This appears to clog the DRT.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayPerfTest.run_single):
-
-2012-08-23 Wei Jia <wjia@chromium.org>
-
- create different WebKit::WebMediaPlayer based on URL
- https://bugs.webkit.org/show_bug.cgi?id=91301
-
- Reviewed by Adam Barth.
-
- Pass URL to createMediaPlayer. This corresponds to change in base
- class WebKit::WebFrameClient.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createMediaPlayer): add URL as additional argument.
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-08-23 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed, upgrade gyuyoung to reviewer.
- http://lists.webkit.org/pipermail/webkit-dev/2012-August/022004.html
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-23 Carlos Garcia Campos <cgarcia@igalia.com>
-
- REGRESSION(r126306): it broke the plugin process
- https://bugs.webkit.org/show_bug.cgi?id=94797
-
- Reviewed by Xan Lopez.
-
- * GNUmakefile.am:
-
-2012-08-23 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Add url bar to EWebLauncher and MiniBrowser/Efl.
- https://bugs.webkit.org/show_bug.cgi?id=63966
-
- Reviewed by Kenneth Rohde Christiansen.
-
- EWebLauncher and MiniBrowser/Efl did not have functionality that users
- navigates the site which they want.
- This patch adds the urlbar and functionality to load url which users want.
-
- * CMakeLists.txt:
- Added to share urlbar theme for both EWebLauncher and MiniBrowser/Efl.
- * EWebLauncher/CMakeLists.txt:
- Added urlbar.c and dependency of urlbar theme.
- In addition, changed macro name to THEME_DIR to share the code easily.
- * EWebLauncher/ControlTheme/CMakeLists.txt: Added for urlbar theme.
- * EWebLauncher/ControlTheme/entry.edc: Implemented urlbar theme.
- * EWebLauncher/main.c:
- Implemented to use the urlbar.
- In addition, remove unnecessary border of webview to control webview and urlbar easily.
- (_ELauncher):
- (on_url_changed):
- (browserCreate):
- (closeWindow):
- (findThemePath):
- * EWebLauncher/url_bar.c: Implemented functionality of the urlbar.
- (_url_bar_url_get_with_protocol):
- (on_urlbar_key_down):
- (on_urlbar_mouse_down):
- (on_urlbar_focus_out):
- (url_bar_add):
- (url_bar_del):
- (url_bar_url_set):
- * EWebLauncher/url_bar.h: Added.
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c: Implemented to use the urlbar.
- (_MiniBrowser):
- (on_url_changed):
- (browserCreate):
-
-2012-08-23 Balazs Kelemen <kbalazs@webkit.org>
-
- [nrwt, WTR] Remove workaround for timeout handing from r126062
- https://bugs.webkit.org/show_bug.cgi?id=94609
-
- Reviewed by Dirk Pranke.
-
- Don't try to reset state if a timeout occured but inform
- the harness that the web process is no longer reliable.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test): Remove the workaround. Furthermore, handle the case when
- the pid is unknown.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::run):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dumpWebProcessUnresponsiveness):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
-
-2012-08-23 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-22 Alexis Menard <alexis@webkit.org>
-
- Unreviewed update of my email.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-22 Dirk Pranke <dpranke@chromium.org>
-
- Fix typos in r126374
- https://bugs.webkit.org/show_bug.cgi?id=94665
- Unreviewed, build fix.
-
- Fix two issues that snuck in, one that caused a crash if there
- were no baselines to optimize and one that occurred as a result
- of failing to rename a variable when I changed the recursion to
- a loop in the previous patch.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._optimize_by_pushing_results_up):
-
-2012-08-22 Dirk Pranke <dpranke@chromium.org>
-
- Baseline optimizer should try to optimize per-port if global optimization fails
- https://bugs.webkit.org/show_bug.cgi?id=94665
-
- Reviewed by Adam Barth.
-
- Add a fallback strategy for optimizing baselines if the default
- one fails; this one simply attempts to shift baselines up in the
- tree and consolidates them if a parent and child in the fallback
- path have the same result. This strategy is somewhat flawed in
- that we will always put something in a parent dir even if we
- "shouldn't"; for example, if chromium-mac produces a different
- result from chromium-win and chromium-linux, then the new
- algorithm will move the mac result into platform/chromium,
- leaving chromium-mac empty. This result is still correct, but
- perhaps confusing.
-
- I haven't done much testing of this algorithm yet, so it's not
- clear how many cases where this does a better job than the
- default algorithm and how many it'll do a worse job.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._find_optimal_result_placement):
- (BaselineOptimizer._optimize_by_most_specific_common_directory):
- (BaselineOptimizer):
- (BaselineOptimizer._optimize_by_pushing_results_up):
- (BaselineOptimizer._find_in_fallbackpath):
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_platform_mac_different):
-
-2012-08-22 Dirk Pranke <dpranke@chromium.org>
-
- add debug info, another test to webkit-patch optimize-baselines
- https://bugs.webkit.org/show_bug.cgi?id=94762
-
- Reviewed by Adam Barth.
-
- This patch adds more debug logging for optimize-baselines so
- that you can tell the before and after states and figure out
- what the command is actually deciding to do.
-
- Also, this command adds a (disabled) test for the problem in bug
- 94665. It's disabled because we don't have the fix yet (that
- will be posted in a patch to that bug).
-
- There should be no functional changes in this patch apart from
- the additional logging.
-
- Note that adding the debug logging exposed a bug in
- filesystem_mock.relpath() (that would return None if the path
- wasn't a subpath of the start); the real relpath computes a
- relpath with parent dirs. Fixing this revealed a bad check in
- the style checker's change_directory() call which was checking
- for None.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._find_optimal_result_placement):
- (BaselineOptimizer):
- (BaselineOptimizer._optimize_by_most_specific_common_directory):
- (BaselineOptimizer._move_baselines):
- (BaselineOptimizer.optimize):
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.disabled_test_platform_mac_different):
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem):
- (MockFileSystem.__init__):
- (MockFileSystem.relpath):
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- (RealFileSystemTest.test_sep):
- * Scripts/webkitpy/style/main.py:
- (change_directory):
-
-2012-08-22 Alejandro Piñeiro <apinheiro@igalia.com>
-
- Dojo toggle buttons should expose ROLE_TOGGLE_BUTTON not ROLE_PUSH_BUTTON
- https://bugs.webkit.org/show_bug.cgi?id=73819
-
- Reviewed by Chris Fleizach.
-
- Added a new role, Toggle Button, based on whether aria-pressed is present.
- http://www.w3.org/TR/wai-aria/states_and_properties#aria-pressed
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString): added "ToggleButton" string for WebAccessibilityRoleToggleButton
-
-2012-08-23 Victor Carbune <victor@rosedu.org>
-
- Add myself to the committer list
- https://bugs.webkit.org/show_bug.cgi?id=94659
-
- Reviewed by James Robinson.
-
- Added my email and IRC handle.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-22 Scott Graham <scottmg@chromium.org>
-
- Don't unconditionally define NOMINMAX on Windows
- https://bugs.webkit.org/show_bug.cgi?id=94742
-
- Reviewed by Adrienne Walker.
-
- Avoids a warning when building on Windows when NOMINMAX is defined
- elsewhere or on the command line.
-
- * TestWebKitAPI/config.h:
-
-2012-08-22 Zan Dobersek <zandobersek@gmail.com>
-
- REGRESSION(r126189): Reftest mismatches are (again) run through ImageDiff with 0.1 tolerance
- https://bugs.webkit.org/show_bug.cgi?id=94704
-
- Reviewed by Dirk Pranke.
-
- Use tolerance=0 when acquiring diff image of reftest output.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_output_with_reference):
-
-2012-08-22 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Add MockWebRTCPeerConnectionHandler
- https://bugs.webkit.org/show_bug.cgi?id=93091
-
- Reviewed by Adam Barth.
-
- Add a skeleton MockWebRTCPeerConnectionHandler to DumpRenderTree,
- to complete the infrastructure for RTCPeerConnection.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.h.
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.h.
- (WebKit):
- (MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
-
-2012-08-21 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge TestExpectationSerializer into TestExpectationLine
- https://bugs.webkit.org/show_bug.cgi?id=94638
-
- Reviewed by Dimitri Glazkov.
-
- Moved all methods except, list_to_string which was moved to TestExpectations
- from TestExpectationSerializer to TestExpectationLine and removed TestExpectationSerializer.
-
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- (TestExpectationEditorTests.assert_remove_roundtrip):
- (TestExpectationEditorTests.assert_update_roundtrip):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (ParseError.__repr__):
- (TestExpectationLine):
- (TestExpectationLine.create_passing_expectation):
- (TestExpectationLine.to_string): Moved from TestExpectationSerializer.
- (TestExpectationLine.to_csv): Ditto.
- (TestExpectationLine._serialize_parsed_expectations): Ditto.
- (TestExpectationLine._serialize_parsed_modifiers): Ditto.
- (TestExpectationLine._format_line):
- (TestExpectations.remove_configuration_from_test):
- (TestExpectations.remove_rebaselined_tests):
- (TestExpectations.add_skipped_tests):
- (TestExpectations):
- (TestExpectations.list_to_string): Moved from TestExpectationSerializer.
- (TestExpectations.list_to_string.serialize):
- (TestExpectations.list_to_string.nones_out):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (TestExpectationSerializationTests): Renamed from TestExpectationSerializerTests.
- (TestExpectationSerializationTests.__init__):
- (TestExpectationSerializationTests.assert_round_trip):
- (TestExpectationSerializationTests.assert_list_round_trip):
- (TestExpectationSerializationTests.test_unparsed_to_string):
- (TestExpectationSerializationTests.test_unparsed_list_to_string):
- (TestExpectationSerializationTests.test_parsed_to_string):
- (TestExpectationSerializationTests.test_serialize_parsed_expectations):
- (TestExpectationSerializationTests.test_serialize_parsed_modifier_string):
- (TestExpectationSerializationTests.test_format_line):
- (TestExpectationSerializationTests.test_reconstitute_only_these):
- * Scripts/webkitpy/tool/commands/expectations.py:
- (OptimizeExpectations.execute):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.execute):
- (PrintExpectations._format_lines):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningExpectationsUpdater.update_expectations):
-
-2012-08-22 Alexandre Elias <aelias@chromium.org>
-
- Unreviewed, add aelias@chromium.org to committers
-
- I (aelias@chromium.org) have been approved for commit access and Apple
- has confirmed receipt of my committer agreement.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-22 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] Support posting injected bundle messages to a page
- https://bugs.webkit.org/show_bug.cgi?id=94630
-
- Reviewed by Sam Weinig.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- * TestWebKitAPI/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::initialize):
- (TestWebKitAPI::InjectedBundleController::didReceiveMessageToPage):
- * TestWebKitAPI/InjectedBundleController.h:
- * TestWebKitAPI/InjectedBundleTest.h:
- (TestWebKitAPI::InjectedBundleTest::didReceiveMessageToPage):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::didReceiveMessageToPage):
- (WTR::InjectedBundle::initialize):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- Updated for new client API call.
-
-2012-08-22 Dominic Mazzoni <dmazzoni@google.com>
-
- REGRESSION (r125710): accessibility/accessibility-node-reparent.html, accessibility/accessibility-node-memory-management.html failing on GTK Linux
- https://bugs.webkit.org/show_bug.cgi?id=94200
-
- Reviewed by Chris Fleizach.
-
- Adds reference counting for AtkObjects referenced by
- AccessibilityUIElementGtk. This prevents bogus results and
- assertion failures on AccessibilityUIElements whose underlying
- object has been deleted (as opposed to just made defunct).
-
- This fixes two tests that were previously failing because of this bug.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
-
-2012-08-22 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Split WebCore/platform into a separate library
- https://bugs.webkit.org/show_bug.cgi?id=94435
-
- Reviewed by Martin Robinson.
-
- More people have been reporting problems when linking WebCore because
- the command line limit is being exceeded. Splitting WebCore a bit more
- is in order.
-
- * GNUmakefile.am: link libWebCorePlatform into DRT
-
-2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- Unreviewed buildfix for Qt-minimal after r126291
-
- Disable smooth scrolling when request-animation-frame has been disabled either
- explicitly or as part of --minimal.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-08-22 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Optionally support smooth-scrolling on all platforms
- https://bugs.webkit.org/show_bug.cgi?id=74926
-
- Reviewed by Simon Hausmann.
-
- Enabled SMOOTH_SCROLLING on Qt, and expose the enable scroll animator
- setting in QtTestBrowser so it can be tested.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleScrollAnimator):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- (WindowOptions):
- (LauncherWindow):
- * qmake/mkspecs/features/features.pri:
-
-2012-08-22 Dominik Röttsches <dominik.rottsches@intel.com>
-
- Unreviewed, adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-21 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] contextClick and getMenuItemTitle callbacks are leaky in DRT's EventSender
- https://bugs.webkit.org/show_bug.cgi?id=94669
-
- Reviewed by Carlos Garcia Campos.
-
- Fix memory leaks in DRT's EventSender code.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (getMenuItemTitleCallback): Use JSRetainPtr and don't leak.
- (contextClickCallback): Use GOwnPtr to manage memory of a
- newly-allocated list automatically.
-
-2012-08-21 Dirk Pranke <dpranke@chromium.org>
-
- Add mountain lion to perf-tests, layout tests
- https://bugs.webkit.org/show_bug.cgi?id=94553
-
- Reviewed by Adam Barth.
-
- This patch adds support for the 'mac-mountainlion' platform and
- stamps out the last references to 'mac-leopard' as a supported
- name.
-
- This patch does a small amount of refactoring to try and make
- things a little clearer how we treat the "most recent version"
- specially for baselines and skipped files, and so you only
- should have to touch the VERSION_FALLBACK_ORDER constants on the
- ports, but unfortunately changing this list changes a bunch of
- the unit tests which are doing exact matches for correctness, so
- you have to touch more than a couple files :(. There's probably
- still more refactoring that can be done so that we don't have to
- do all of this functional testing to feel completely correct.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo._determine_mac_version):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py:
- (TestPlatformInfo.test_os_version):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.__init__):
- (ApplePort):
- (ApplePort._skipped_file_search_paths):
- (ApplePort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_mac):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- (MacPort._build_driver_flags):
- (MacPort.should_retry_crashes):
- (MacPort.default_baseline_search_path):
- (MacPort.operating_system):
- (MacPort.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest):
- (MacTest.test_skipped_file_search_paths):
- (test_versions):
- (test_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
- (WinPort.default_baseline_search_path):
-
-2012-08-21 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] fast/xmlhttprequest/xmlhttprequest-nonexistent-file.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=94617
-
- Reviewed by Martin Robinson.
-
- Set the 'enable-file-access-from-file-uris' setting to true when
- resetting default values. The other ports do this as well, giving
- documents with local security origin permission to load other
- local resources.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-08-21 Kent Tamura <tkent@chromium.org>
-
- [Chromium] DRT produces wrong back-forward list
- https://bugs.webkit.org/show_bug.cgi?id=94575
-
- Reviewed by Adam Barth.
-
- DRT clears its history state before running every tests. However
- HistoryController in WebCore isn't reset. So, it is possible that
- 'isNewNavigation' flag is false even though the navigation should be
- handled as "new" for DRT.
-
- This change might fix a problem of
- fast/forms/select/select-state-restore.html (Bug 90207).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad):
- Treat the first page load (m_pageID == -1) as new navigation except for about:blank.
- Without this change, a navigation entry for this loading won't be recorded.
-
-2012-08-21 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Enable CSS Text Decoration by default
- https://bugs.webkit.org/show_bug.cgi?id=94483
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-08-21 Benjamin Poulain <bpoulain@apple.com>
-
- Store CString data in the CStringBuffer to avoid the double indirection
- https://bugs.webkit.org/show_bug.cgi?id=94562
-
- Reviewed by Darin Adler.
-
- Add test coverage for WTF::CString.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/CString.cpp:
-
-2012-08-21 Dirk Pranke <dpranke@chromium.org>
-
- Text Autosizing: ::first-letter pseudo-element is incorrectly sized
- https://bugs.webkit.org/show_bug.cgi?id=94540
-
- Reviewed by Ojan Vafai.
-
- Revert the changes in bugs 94517 and 94396 so that we are
- actually looking for stderr output from ImageDiff and doing
- image compares on ref tests on the wk2 ports again.
-
- Also, do an actual diff_image() call if the hash checks fail on
- reftests, and only fail the test if we get real diffs (or don't,
- for mismatches).
-
- Lastly, clean up the log messages to be more helpful.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
-
-2012-08-21 Dirk Pranke <dpranke@chromium.org>
-
- _compare_image() swaps actual and expected images by mistake
- https://bugs.webkit.org/show_bug.cgi?id=94567
-
- Reviewed by Ojan Vafai.
-
- Re-work the code so that we consistently pass (expected, actual)
- across all of the compare/diff routines.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_compare_test):
- (SingleTestRunner._compare_output):
- (SingleTestRunner._compare_text):
- (SingleTestRunner._compare_audio):
- (SingleTestRunner._compare_image):
- (SingleTestRunner._run_reftest):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
-
-2012-08-21 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Move the commit-queue to building release only. Previously,
- we built debug too, but for some reason the debug build doesn't work on
- the bots. We can re-enable debug builds once we fix the underlying
- problem.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue.build_style):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2012-08-21 Ryosuke Niwa <rniwa@webkit.org>
-
- TestExpectationsParser doesn't warn about test files that don't exist.
- https://bugs.webkit.org/show_bug.cgi?id=94632
-
- Reviewed by Dirk Pranke.
-
- Exit early and warn when the test file doesn't exist as well when a test directory doesn't exist.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._parse_line):
- (TestExpectationParser._check_test_exists):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_parse_warning):
-
-2012-08-20 Ryosuke Niwa <rniwa@webkit.org>
-
- Move free functions in test_expectations to TestExpectations class
- https://bugs.webkit.org/show_bug.cgi?id=94557
-
- Reviewed by Dirk Pranke.
-
- Moved test_result_was_expected, test_remove_pixel_failures, and test_suffixes_for_expectations into TestExpectations
- to allow further refactoring.
-
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- (JSONTestResult.did_run_as_expected):
- (JSONTestResult._tokenize):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- (TestExpectations.result_was_expected):
- (TestExpectations.remove_pixel_failures):
- (TestExpectations.has_pixel_failures):
- (TestExpectations.suffixes_for_expectations):
- (TestExpectations.matches_an_expected_result):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (MockBugManager.create_bug):
- (test_result_was_expected):
- (test_remove_pixel_failures):
- (test_suffixes_for_expectations):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations._tests_to_rebaseline):
-
-2012-08-21 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed build fix for newer Qt 5: The meaning of private_includes changed to be fully
- self-contained. The module name is not appended automatically anymore.
-
- * qmake/qt_webkit.pri:
-
-2012-08-20 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Add stop_when_done parameter to ChromiumAndroidDriver.run_test()
- https://bugs.webkit.org/show_bug.cgi?id=94558
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.run_test):
-
-2012-08-20 Ryosuke Niwa <rniwa@webkit.org>
-
- Cleanup TestExpectationParser.parse
- https://bugs.webkit.org/show_bug.cgi?id=94545
-
- Reviewed by Dirk Pranke.
-
- Refactor TestExpectations to simplify the code.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser.parse): Merged _tokenize_list.
- (TestExpectationParser._parse_line): Removed the call to _check_modifiers_against_expectations
- since the check is now done in _parser_modifiers.
- (TestExpectationParser._parse_modifiers): Merged _check_modifiers_against_expectations.
- (TestExpectationParser._tokenize_line): Renamed from _tokenize.
- (TestExpectationParser._split_space_separated): No longer calls lower() on all modifiers.
- This is done on a local variable in _parse_modifiers, preserving the original case.
- (TestExpectations.remove_rebaselined_tests.without_rebaseline_modifier): Check the existence
- of 'rebaseline' against parsed modifiers.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (TestExpectationParserTests._tokenize):
- (TestExpectationParserTests.test_tokenize_valid_with_comment): Preserves case.
- (TestExpectationParserTests.test_tokenize_valid_with_multiple_modifiers): Ditto.
- (TestExpectationSerializerTests._tokenize):
- (TestExpectationSerializerTests.assert_list_round_trip): Call parse since _tokenize_list has
- been merged into parse.
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_csv): Preserves the case.
-
-2012-08-20 Gustavo Noronha Silva <gns@gnome.org>
-
- [jhbuild] EFL now runs jhbuild update for every build
- https://bugs.webkit.org/show_bug.cgi?id=94267
-
- Reviewed by Martin Robinson.
-
- Try to fix WinCE build by returning the empty string instead of
- env when no jhbuild infrastructure is found.
-
- * Scripts/webkitdirs.pm:
- (jhbuildWrapperPrefixIfNeeded):
-
-2012-08-20 Benjamin Poulain <benjamin@webkit.org>
-
- Add a watcher for WTF changes
-
- Unreviewed.
-
- Add myself as a watcher for changes in WTF.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Move jhbuild dependencies based on SVN to tarballs
- https://bugs.webkit.org/show_bug.cgi?id=90374
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Moved all the dependencies based on SVN to tarballs taken from a
- equivalent snapshot from the official git mirror. This will make
- update-webkitefl not dependent on network connection after the first
- run. The bots will not fail if EFL SVN server in unreachable.
- The reason why git mirror is not used directly is to minimize the
- total size of source code we need to download.
-
- * efl/jhbuild.modules:
-
-2012-08-20 Simon Fraser <simon.fraser@apple.com>
-
- Lots of "error, test and reference image have different properties" in pixel test output
- https://bugs.webkit.org/show_bug.cgi?id=92578
-
- Reviewed by Dirk Pranke.
-
- Improve ImageDiff's error reporting when test result image and expected image
- differ in their properties.
-
- * DumpRenderTree/cg/ImageDiffCG.cpp:
-
-2012-08-20 Nate Chapin <japhet@chromium.org>
-
- Unsafe vsprintf usage in TestNetscapePlugin
- https://bugs.webkit.org/show_bug.cgi?id=94522
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (pluginLogWithArguments): Using vsnprintf instead of vsprintf to ensure we don't overflow
- the message buffer.
- (testDocumentOpen):
- (testWindowOpen):
-
-2012-08-20 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Enable XHR Response BLOB
- https://bugs.webkit.org/show_bug.cgi?id=94525
-
- Reviewed by Rob Buis.
-
- Turn on the XHR response blob feature for the BlackBerry port.
-
- * Scripts/webkitperl/FeatureList.pm: Add the feature and enable it.
-
-2012-08-20 Dirk Pranke <dpranke@chromium.org>
-
- Fix change for timeout detection to not crash if we have no output :)
- https://bugs.webkit.org/show_bug.cgi?id=94505
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
-
-2012-08-20 Dirk Pranke <dpranke@chromium.org>
-
- temporarily disable ImageDiff on WK2 ports for ref tests
- https://bugs.webkit.org/show_bug.cgi?id=94517
-
- Reviewed by Brady Eidson.
-
- ImageDiff appears to be unable to handle the pngs returned from
- WebKitTestRunner, so we disable checking images by default
- for ref tests on wk2 ports (unless pixel tests is explicitly enabled).
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_output_with_reference):
-
-2012-08-20 Dirk Pranke <dpranke@chromium.org>
-
- Add missing FIXME: to previous change.
- https://bugs.webkit.org/show_bug.cgi?id=94505
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
-
-2012-08-20 Dirk Pranke <dpranke@chromium.org>
-
- Intermittenly, many WebKit2 tests have results from the wrong test compared to the test just run, giving false failures.
- https://bugs.webkit.org/show_bug.cgi?id=94505
-
- Reviewed by Ojan Vafai.
-
- It looks like if the webprocess times out, WTR may tell NRWT
- that the test completed, but not properly reset its internal
- state, and then return stale output for subsequent tests.
-
- This patch modifies NRWT temporarily to check for
- "Timed out waiting for final message from web process" in stdout
- and treat that as a timeout (and thus kill WTR); this seems
- to solve the cascade of failures, but of course there's probably
- still a bug in WTR that needs to be fixed.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
-
-2012-08-20 Dirk Pranke <dpranke@chromium.org>
-
- NRWT reports unexpected EOF
- https://bugs.webkit.org/show_bug.cgi?id=94387
-
- Reviewed by Adam Barth.
-
- Stop logging "Unexpected EOF" when we are reading the last few
- bytes from stdout/stderr after stopping the subprocess.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
- (ServerProcess.stop):
-
-2012-08-20 Brady Eidson <beidson@apple.com>
-
- Temporarily disable the 20+ crash and 500+ failure options on WK2 bots.
- https://bugs.webkit.org/show_bug.cgi?id=94506
-
- Reviewed by Dirk Pranke.
-
- When running WK2 tests, don't add the "abort early" command line options.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ConfigureBuild.start):
- (RunWebKitTests):
- (RunWebKitTests.start):
- (RunWebKit2Tests.start):
-
-2012-08-19 Stephanie Lewis <slewis@apple.com>
-
- Add mountain lion to build config.
- https://bugs.webkit.org/show_bug.cgi?id=94441
-
- Reviewed by Adam Barth.
-
- Add Mountain Lion to the build trigger configurations.
-
- * Scripts/webkitpy/common/config/build.py:
- (_should_file_trigger_build):
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest):
- (ShouldBuildTest.test_should_build):
-
-2012-08-17 Kiran Muppala <cmuppala@apple.com>
-
- Add self to webkit contributors list
- https://bugs.webkit.org/show_bug.cgi?id=94409
-
- Reviewed by Dirk Pranke.
-
- Add name, email and irc handle to webkit contributors list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-17 Ryosuke Niwa <rniwa@webkit.org>
-
- Perfalizer should differentiate results with and without the patch
- https://bugs.webkit.org/show_bug.cgi?id=94399
-
- Reviewed by Dirk Pranke.
-
- Add "with 12345" and "without 12345" descriptions in results JSON so that graphs in
- the results page are labled accordingly.
-
- Also use _build_without_patch when building without a patch so that we get the right error message.
-
- * Scripts/webkitpy/tool/commands/perfalizer.py:
- (PerfalizerTask.run):
- (PerfalizerTask._run_perf_test):
- * Scripts/webkitpy/tool/commands/perfalizer_unittest.py:
- (PerfalizerTaskTest._create_and_run_perfalizer.run_perf_test):
-
-2012-08-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: don't fail tests if ImageDiff fails on the wk2 ports
- https://bugs.webkit.org/show_bug.cgi?id=94396
-
- Reviewed by Ryosuke Niwa.
-
- It appears that WTR is generating PNGs that ImageDiff doesn't
- like, and so we're getting lots of "can not get ImageDiff"
- errors (see bug 81962). The change in r124581 made this a test
- failure, and this is causing the WK2 bots to frequently abort
- with 500+ failures.
-
- This change makes ImageDiff errors not be test failures just for
- WK2 for now until we can better triage what's going on.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
-
-2012-08-17 James Robinson <jamesr@chromium.org>
-
- [chromium] Add a style check for #include "cc/..." in chromium files
- https://bugs.webkit.org/show_bug.cgi?id=94382
-
- Reviewed by Adam Barth.
-
- Adds a style check to make sure new chromium code follows the correct convention for including cc files.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_include_line):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (OrderOfIncludesTest.test_check_cc_includes):
-
-2012-08-17 Ojan Vafai <ojan@chromium.org>
-
- Delete some dead code from the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=94380
-
- Reviewed by Dirk Pranke.
-
- This code became dead in one of the refactors of how we handle BuilderGroups.
- There's no bug here, it's just dead code.
- * TestResultServer/static-dashboards/builders.js:
- (requestBuilderList):
- (loadBuildersList):
-
-2012-08-17 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Add content shell bots to the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=94369
-
- Reviewed by Ojan Vafai.
-
- The bots are named $OS (Content Shell).
-
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumWebkitTipOfTreeTestRunner):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-08-17 Shadi Khalek <shadi@chromium.org>
-
- Add AV perf layout tests to webkit flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=94255
-
- Reviewed by Ojan Vafai.
-
- Added missing mappings to LEGACY_BUILDER_MASTERS_TO_GROUPS.
- The isChromiumDepsAVTestRunner() filter does not work on current builder names.
- It assumes the new names they are getting renamed to (AV Linux, AV Win7).
-
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumTipOfTreeAVTestRunner):
- (loadBuildersList):
-
-2012-08-17 Milian Wolff <milian.wolff@kdab.com>
-
- [Qt] QtWebKit fails to build with OpenGL support on QNX
- https://bugs.webkit.org/show_bug.cgi?id=93278
-
- Reviewed by Noam Rosenthal.
-
- Change the order in which we define WTF_USE_3D_GRAPHICS and ENABLE_WEBGL.
- First, we now defined WTF_USE_3D_GRAPHICS=1, but only if QT_CONFIG
- contains opengl. Furthermore, we disable this feature on win32-* as usual,
- but now also disable it on QNX.
-
- Then, we set ENABLE_WEBGL=1 but only if we previously set WTF_USE_3D_GRAPHICS=1.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-08-16 Gustavo Noronha Silva <gns@gnome.org>
-
- [jhbuild] EFL now runs jhbuild update for every build
- https://bugs.webkit.org/show_bug.cgi?id=94267
-
- Reviewed by Dirk Pranke.
-
- This change makes EFL's approach to jhbuild more in line with the one
- used by WebKitGTK+. update-webkitefl-libs will only be called by build-
- webkit if --update-efl is given explicitly. The EWS bot will do that
- from now on.
-
- * Scripts/webkitdirs.pm:
- (jhbuildWrapperPrefixIfNeeded): return jhbuild wrapper only if the
- Dependencies directory exists also for EFL
- (generateBuildSystemFromCMakeProject): no longer run update-webkitefl-libs
- (buildCMakeProjectOrExit): build update-webkitefl-libs if --update-efl is
- given
- * Scripts/webkitpy/common/config/ports.py:
- (EflPort.build_webkit_command): make EWS bots pass --update-efl to build-webkit
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_efl_port): add unit testing for EFL port
-
-2012-08-16 Kent Tamura <tkent@chromium.org>
-
- Add forms-bugs@chromium.org as a contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-16 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed warning fix, sys.argv is a python construct.
-
- * Scripts/update-webkitefl-libs:
-
-2012-08-16 Dirk Pranke <dpranke@chromium.org>
-
- NRWT cutting off the output from LayoutTest run under Valgrind
- https://bugs.webkit.org/show_bug.cgi?id=94011
-
- Reviewed by Ojan Vafai.
-
- Make NRWT work with valgrind again ... I needed to rework the
- driver infrastructure so that we could get the stderr written
- between a test completing and a process being stopped and
- associate it with the DriverOutput for the test; this meant that
- run_test() needed to stop the driver at the end of the test
- directly if/when appropriate. This also entailed reworking
- run_test() so that we would gather stderr and stdout
- consistently regardless of whether this was a normal test, or
- stop_when_done, or a crash or timeout.
-
- Also, I had to rework the process_stop_time() (and renamed it to
- driver_stop_timeout) so that it would be longer if --time-out-ms
- was long as well (so that valgrind would get enough time to
- run), and I reworked driver.stop(kill_directly=True) to just
- driver.stop(timeout=0.0).
-
- Lastly, adding the new stop_when_done parameter entailed
- touching a lot of test mock functions :(.
-
- This change appeared to be well-covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (Worker._run_test):
- (Worker._run_test_with_timeout):
- (Worker._run_test_in_another_thread):
- (Worker._run_test_in_another_thread.SingleTestThread.run):
- (Worker._run_test_in_this_thread):
- (Worker._run_single_test):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (run_single_test):
- (SingleTestRunner.__init__):
- (SingleTestRunner._run_compare_test):
- (SingleTestRunner._run_rebaseline):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.driver_stop_timeout):
- (Port.variable.default_configuration):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.driver_stop_timeout):
- (ChromiumAndroidDriver.stop):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
- (Driver.stop):
- (DriverProxy.run_test):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.stop):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.write):
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
- (ServerProcess.stop):
- (ServerProcess.kill):
- (ServerProcess):
- (ServerProcess._kill):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.__init__):
- (MockProc.wait):
- (TestServerProcess.test_basic):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver.run_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run.RecordingTestDriver.run_test):
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.run_single):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPageLoadingPerfTest.MockDriver.run_test):
- (TestReplayPerfTest.ReplayTestPort.__init__.ReplayTestDriver.run_test):
- (TestReplayPerfTest.test_run_single.run_test):
- (TestReplayPerfTest.test_run_single_fails_when_output_has_error.run_test):
- (TestReplayPerfTest.test_prepare.run_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.TestDriver.run_test):
-
-2012-08-16 Roger Fong <roger_fong@apple.com>
-
- Typo in old-run-webkit-tests script from https://bugs.webkit.org/show_bug.cgi?id=93904.
- https://bugs.webkit.org/show_bug.cgi?id=94228
-
- Reviewed by Tim Horton.
-
- I previously made the change but made a typo that causes the script not ignore mismatch ref tests.
-
- * Scripts/old-run-webkit-tests:
- (isUsedInReftest):
-
-2012-08-16 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Pass the --strip-binary argument to the apk test generator
- https://bugs.webkit.org/show_bug.cgi?id=94224
-
- Reviewed by Adam Barth.
-
- The native test generator currently relies on the $STRIP environment
- variable to be available, which it shouldn't do. Instead, pass it as an
- argument to the script. The $STRIP variable is being deprecated.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-16 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Update format of JS console message to keep consistent with other ports.
- https://bugs.webkit.org/show_bug.cgi?id=94058
-
- Reviewed by Yong Li.
- Reviewed internally by George Staikos.
-
- 1. Remove line number if it's zero.
- 2. Print only file name for "file://" URL.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::addMessageToConsole):
-
-2012-08-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Make DRT results more reliable on X11
-
- Reviewed by Jocelyn Turcotte.
-
- Disable desktop setting awareness, to prevent QApplication on X11 from reading palette settings from
- the running desktop environment.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
-
-2012-08-16 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Remove FontQt4, HAVE_QRAWFONT flag and the related dead code
- https://bugs.webkit.org/show_bug.cgi?id=93960
-
- Reviewed by Simon Hausmann.
-
- Following the removal of Qt 4 support from trunk in r124879.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-08-16 Taiju Tsuiki <tzik@chromium.org>
-
- Add deleteFileSystem support to DumpRenderTree for chromium
- https://bugs.webkit.org/show_bug.cgi?id=94071
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::deleteFileSystem): Added
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-08-15 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename LayoutTestController to TestRunner in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=93942
-
- Reviewed by Simon Fraser.
-
- Renamed the class and relevant files.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Removed.
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: Copied from Tools/WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl.
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (WTR::InjectedBundle::testRunner):
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Removed.
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.cpp.
- * WebKitTestRunner/InjectedBundle/TestRunner.h: Copied from Tools/WebKitTestRunner/InjectedBundle/LayoutTestController.h.
- (TestRunner):
- * WebKitTestRunner/InjectedBundle/efl/LayoutTestControllerEfl.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/efl/LayoutTestControllerEfl.cpp.
- (WTR::waitToDumpWatchdogTimerCallback):
- (WTR::TestRunner::platformInitialize):
- (WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- (WTR::TestRunner::pathToLocalResource):
- (WTR::TestRunner::platformName):
- * WebKitTestRunner/InjectedBundle/gtk/LayoutTestControllerGtk.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/gtk/LayoutTestControllerGtk.cpp.
- (WTR::waitToDumpWatchdogTimerCallback):
- (WTR::TestRunner::platformInitialize):
- (WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- (WTR::TestRunner::pathToLocalResource):
- (WTR::TestRunner::platformName):
- * WebKitTestRunner/InjectedBundle/mac/LayoutTestControllerMac.mm: Removed.
- * WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm: Copied from Tools/WebKitTestRunner/InjectedBundle/mac/LayoutTestControllerMac.mm.
- (WTR::TestRunner::platformInitialize):
- (WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
- (WTR::waitUntilDoneWatchdogTimerFired):
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- (WTR::TestRunner::pathToLocalResource):
- (WTR::TestRunner::platformName):
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp.
- (WTR::WatchdogTimerHelper::timerFired):
- (WTR::TestRunner::platformInitialize):
- (WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- (WTR::TestRunner::pathToLocalResource):
- (WTR::TestRunner::platformName):
- * WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/win/LayoutTestControllerWin.cpp.
- (WTR::TestRunner::platformInitialize):
- (WTR::TestRunner::invalidateWaitToDumpWatchdogTimer):
- (WTR::waitToDumpWatchdogTimerFired):
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- (WTR::TestRunner::pathToLocalResource):
- (WTR::TestRunner::platformName):
- * WebKitTestRunner/PlatformEfl.cmake:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/win/InjectedBundle.vcproj:
-
-2012-08-15 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] DumpRenderTree timeouts before NRWT timeouts
- https://bugs.webkit.org/show_bug.cgi?id=94155
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.create_driver): Force no_timeout=True
-
-2012-08-15 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a hyperlink to perf-o-matic from build.webkit.org/root.html
- https://bugs.webkit.org/show_bug.cgi?id=93749
-
- Reviewed by Csaba Osztrogonác.
-
- Added the hyperlink to webkit-perf.appspot.com. Also added hyperlinks to the waterfall display
- of performance tests.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2012-08-15 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
-
- [css3-text] Add CSS3 Text decoration compile flag
- https://bugs.webkit.org/show_bug.cgi?id=93863
-
- Reviewed by Julien Chaffraix.
-
- This patch handles the compile flag implementation, which will come disabled by
- default, thus not exposing the CSS3 text decoration features to the web, unless
- when explicitly enabling it with "--css3-text-decoration" build parameter.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-08-15 Beth Dakin <bdakin@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=93693
- [WK2] REGRESSION(125091): pixel results don't sow scrollbars
- anymore
-
- Reviewed by Sam Weinig.
-
- Use new API WKBundlePageCreateSnapshotWithOptions().
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump):
-
-2012-08-15 Alexey Proskuryakov <ap@apple.com>
-
- Add rfong to Bugzilla CC "contributor" list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-15 Scott Graham <scottmg@chromium.org>
-
- Rename window.internals.fastMallocStatistics to mallocStatistics
- https://bugs.webkit.org/show_bug.cgi?id=94033
-
- Reviewed by Adam Barth.
-
- * GNUmakefile.am:
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_memory_test):
-
-2012-08-15 Peter Beverloo <peter@chromium.org>
-
- Fix a warning in TestWebKitAPI's MediaTime test-suite
- https://bugs.webkit.org/show_bug.cgi?id=94096
-
- Reviewed by Adam Barth.
-
- This warning is visible when building the file with certain GCC versions,
- including the one used by Chromium for Android. The warning is visible in
- the cr-android build bot output:
-
- MediaTime.cpp:152: warning: this decimal constant is unsigned only in ISO C90
-
- * TestWebKitAPI/Tests/WTF/MediaTime.cpp:
- (TestWebKitAPI::TEST):
-
-2012-08-15 Kevin Funk <kevin.funk@kdab.com>
-
- Fix the 'git log' call in VCSUtils.pm for Windows
- https://bugs.webkit.org/show_bug.cgi?id=94113
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Failed because of invalid enquoting characters.
-
- * Scripts/VCSUtils.pm:
-
-2012-08-14 Gustavo Noronha Silva <gns@gnome.org>
-
- [jhbuild] move md5sum checking to update-webkit-libs-jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=93208
-
- Reviewed by Martin Robinson.
-
- This change makes the md5sum check and saving be done by the script
- that performs the dependencies update. build-webkit no longer prefixes
- calls to commands with jhbuild-wrapper if jhbuild has not been
- bootstrapped by the developer and --update-gtk is not given.
-
- * Scripts/update-webkit-libs-jhbuild:
- (getMD5HashForFile): moved from webkitdirs.
- (jhbuildConfigurationChanged): ditto.
- (saveJhbuildMd5): ditto.
- (cleanJhbuild): ditto, and changed to run jhbuild clean before removing
- jhbuild.
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary): use jhbuildWrapperPrefixIfNeeded.
- (buildAutotoolsProject): ditto.
- (jhbuildWrapperPrefixIfNeeded): add a code branch for GTK+.
- (generateBuildSystemFromCMakeProject): call update-webkitefl-libs
- unconditionally for EFL.
- * jhbuild/jhbuild-wrapper:
- (update_webkit_libs_jhbuild): removed, jhbuild-wrapper no longer runs the
- update script itself
- (ensure_jhbuild): remove update call.
-
-2012-08-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] Add support for Web Intents MessagePorts
- https://bugs.webkit.org/show_bug.cgi?id=89072
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Use WKBundleIntent instead of WebIntentData in
- WebKitTestRunner. WTR now prints the number of
- MessagePorts in received Web intents as
- expected by the following layout tests:
- webintents/web-intents-invoke-port.html
- webintents/web-intents-obj-constructor.html
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveIntentForFrame):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::deliverWebIntent):
-
-2012-08-14 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r125516. Revert the erroneous rename since we need to keep exposing
- layoutTestController in Chromium port as explained r124785.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
-
-2012-08-14 Dan Bernstein <mitz@apple.com>
-
- fast/events/overflow-scroll-fake-mouse-move.html and fast/events/frame-scroll-fake-mouse-move.html are failing in WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=94045
-
- Reviewed by Geoff Garen.
-
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow _hasKeyAppearance]): Added. Returns [self isKeyWindow]. This is
- needed now that WebView uses -_hasKeyAppearance instead of -isKeyWindow.
-
-2012-08-14 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] Fix some typos in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=94047
-
- Reviewed by Jon Honeycutt.
-
- * MiniBrowser/mac/AppDelegate.m:
- (didReceiveMessageFromInjectedBundle): (-[BrowserAppDelegate init]):
- * MiniBrowser/mac/WebBundle/WebBundleMain.m:
- (didReceiveMessage):
- (WKBundleInitialize):
-
-2012-08-14 Roger Fong <roger_fong@apple.com>
-
- old-run-webkit-tests should skip all file extensions for ref tests, not just .html.
- https://bugs.webkit.org/show_bug.cgi?id=93904
-
- Reviewed by Tim Horton.
-
- old-run-webkit-tests ref test only skipped .html test.
- They need to skip .html, .shtml, .xml, .xhtml, .pl, .htm, .php, .svg, .mht.
-
- * Scripts/old-run-webkit-tests:
- (isUsedInReftest): Skip all extensions for ref tests.
-
-2012-08-14 Lauro Neto <lauro.neto@openbossa.org>
-
- Convert signals/slots to Q_* macros.
-
- [Qt] Use Q_SLOTS and Q_SIGNALS instead of slots and signals
- https://bugs.webkit.org/show_bug.cgi?id=93996
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Change usage of keyword-conflicting 'signals' and 'slots' for
- Q_SIGNALS and Q_SLOTS macro.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (NetworkAccessManager):
- (WebPage):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
- * DumpRenderTree/qt/GCControllerQt.h:
- (GCController):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/qt/TextInputControllerQt.h:
- (TextInputController):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (WindowOptions):
- * MiniBrowser/qt/UrlLoader.h:
- (UrlLoader):
- * QtTestBrowser/cookiejar.h:
- (TestBrowserCookieJar):
- * QtTestBrowser/fpstimer.h:
- (FpsTimer):
- * QtTestBrowser/launcherwindow.h:
- (LauncherWindow):
- * QtTestBrowser/locationedit.h:
- (LocationEdit):
- * QtTestBrowser/mainwindow.h:
- (MainWindow):
- * QtTestBrowser/urlloader.h:
- (UrlLoader):
- * QtTestBrowser/webinspector.h:
- (WebInspector):
- * QtTestBrowser/webpage.h:
- (WebPage):
- * QtTestBrowser/webview.h:
- (WebViewGraphicsBased):
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- (WatchdogTimerHelper):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WrapperWindow):
- * WebKitTestRunner/qt/main.cpp:
- (Launcher):
-
-2012-08-14 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs layoutTestController.dumpResourceLoadCallbacks
- https://bugs.webkit.org/show_bug.cgi?id=42332
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added Resource Callbacks logging. Several aux dumping functions are added.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::isFileScheme):
- (WTR):
- (WTR::pathSuitableForTestResult):
- (WTR::urlSuitableForTestResult):
- (WTR::InjectedBundlePage::resetAfterTest):
- (WTR::dumpRequestDescriptionSuitableForTestResult):
- (WTR::dumpResponseDescriptionSuitableForTestResult):
- (WTR::dumpErrorDescriptionSuitableForTestResult):
- (WTR::InjectedBundlePage::didInitiateLoadForResource):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
- (WTR::InjectedBundlePage::didReceiveResponseForResource):
- (WTR::InjectedBundlePage::didFinishLoadForResource):
- (WTR::InjectedBundlePage::didFailLoadForResource):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpResourceLoadCallbacks):
- (WTR::LayoutTestController::shouldDumpResourceLoadCallbacks):
- (LayoutTestController):
-
-2012-08-14 Alexis Menard <alexis.menard@openbossa.org>
-
- Update INdT build bot to Mountain Lion.
- https://bugs.webkit.org/show_bug.cgi?id=93963
-
- Reviewed by Csaba Osztrogonác.
-
- We updated the machine as well as the OS as the Qt port is now running
- on top of Qt5.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-08-14 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Remove unneeded build logic for Android
- https://bugs.webkit.org/show_bug.cgi?id=93962
-
- Reviewed by Dimitri Glazkov.
-
- The Android SDK and NDK have been checked in to the Chromium tree, which
- allows WebKit to leverage those as well. They will already be pulled in
- through a DEPS change made last week, and by not setting the ANDROID_NDK_ROOT
- environment variable, the envsetup.sh will set the project files up
- appropriately for us.
-
- * Scripts/webkitdirs.pm:
-
-2012-08-14 Sergio Villar Senin <svillar@igalia.com>
-
- [WK2] [GTK] Plugin tests failing in WK2 bot
- https://bugs.webkit.org/show_bug.cgi?id=93954
-
- Reviewed by Carlos Garcia Campos.
-
- Plugin tests are failing in the WK2 bot because we aren't exporting
- the Netscape plugin when creating the product archive.
-
- * BuildSlaveSupport/built-product-archive: added TestNetscapePlugin
- to the list of directories to export.
- (archiveBuiltProduct):
-
-2012-08-14 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Fix apk generation for the Android platform
- https://bugs.webkit.org/show_bug.cgi?id=93841
-
- Unreviewed build fix.
-
- APK generation was broken as the configuration file assumed compilation
- would only occur in the Chromium tree. Pass the path to Chromium's source
- base directory as a property to ant.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-14 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] REGRESSION (r122428) WebKit2APITests/TestWebKitFindController fails "next" test
- https://bugs.webkit.org/show_bug.cgi?id=91083
-
- Reviewed by Carlos Garcia Campos.
-
- Unskipped a couple of API tests that should work fine from now on.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-08-14 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] Compare results between different platforms
- https://bugs.webkit.org/show_bug.cgi?id=90555
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_search_path):
- (Port):
- (Port.compare_baseline):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-08-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename LayoutTestController to TestRunner in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=93758
-
- Reviewed by Tony Chang.
-
- Renamed LayoutTestController to TestRunner. For Chromium port, it's renamed to DRTTestRunner
- since it already has TestRunner class shared between DumpRenderTree and content_shell.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/PixelDumpSupport.cpp:
- * DumpRenderTree/StorageTrackerDelegate.h:
- * DumpRenderTree/StorageTrackerDelegate.mm:
- * DumpRenderTree/TestRunner.cpp:
- * DumpRenderTree/TestRunner.h:
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- * DumpRenderTree/chromium/NotificationPresenter.h:
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebPermissions.cpp:
- * DumpRenderTree/chromium/WebPermissions.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- * DumpRenderTree/efl/EditingCallbacks.cpp:
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/EditingDelegate.mm:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * DumpRenderTree/mac/HistoryDelegate.mm:
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- * DumpRenderTree/mac/PolicyDelegate.h:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/EditingDelegate.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/HistoryDelegate.cpp:
- * DumpRenderTree/win/PolicyDelegate.h:
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/win/UIDelegate.cpp:
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
-
-2012-08-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] String returned by g_path_get_dirname() must be freed
- https://bugs.webkit.org/show_bug.cgi?id=93885
-
- Reviewed by Philippe Normand.
-
- Fix a memory leak in GTK's DRT code.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (pathFromSoupURI): Free the string returned by g_path_get_dirname().
-
-2012-08-14 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK build fix after r125508.
-
- Do the renaming in GNUmakefile.am as well, LayoutTestController -> TestRunner.
-
- * GNUmakefile.am:
-
-2012-08-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename files that declare and define LayoutTestController in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=93899
-
- Reviewed by Tony Chang.
-
- Renamed files and fixed style errors.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/LayoutTestController.cpp: Removed.
- * DumpRenderTree/LayoutTestController.h: Removed.
- * DumpRenderTree/PixelDumpSupport.cpp:
- * DumpRenderTree/StorageTrackerDelegate.mm:
- * DumpRenderTree/TestRunner.cpp: Copied from Tools/DumpRenderTree/LayoutTestController.cpp.
- * DumpRenderTree/TestRunner.h: Copied from Tools/DumpRenderTree/LayoutTestController.h.
- (LayoutTestController):
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp: Removed.
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp: Copied from Tools/DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp.
- * DumpRenderTree/chromium/DRTTestRunner.cpp: Copied from Tools/DumpRenderTree/chromium/LayoutTestController.cpp.
- * DumpRenderTree/chromium/DRTTestRunner.h: Copied from Tools/DumpRenderTree/chromium/LayoutTestController.h.
- * DumpRenderTree/chromium/LayoutTestController.cpp: Removed.
- * DumpRenderTree/chromium/LayoutTestController.h: Removed.
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebPermissions.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- * DumpRenderTree/efl/EditingCallbacks.cpp:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp: Removed.
- * DumpRenderTree/efl/TestRunnerEfl.cpp: Copied from Tools/DumpRenderTree/efl/LayoutTestControllerEfl.cpp.
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp: Removed.
- * DumpRenderTree/gtk/TestRunnerGtk.cpp: Copied from Tools/DumpRenderTree/gtk/LayoutTestControllerGtk.cpp.
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- * DumpRenderTree/mac/EditingDelegate.mm:
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- * DumpRenderTree/mac/HistoryDelegate.mm:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm: Removed.
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- * DumpRenderTree/mac/PolicyDelegate.mm:
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- * DumpRenderTree/mac/TestRunnerMac.mm: Copied from Tools/DumpRenderTree/mac/LayoutTestControllerMac.mm.
- * DumpRenderTree/mac/UIDelegate.mm:
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp: Removed.
- * DumpRenderTree/qt/LayoutTestControllerQt.h: Removed.
- * DumpRenderTree/qt/TestRunnerQt.cpp: Copied from Tools/DumpRenderTree/qt/LayoutTestControllerQt.cpp.
- * DumpRenderTree/qt/TestRunnerQt.h: Copied from Tools/DumpRenderTree/qt/LayoutTestControllerQt.h.
- (WebCore):
- (LayoutTestController):
- (LayoutTestController::setCloseRemainingWindowsWhenComplete):
- (LayoutTestController::dumpSelectionRect):
- (LayoutTestController::setCallCloseOnWebViews):
- (LayoutTestController::addDisallowedURL):
- (LayoutTestController::abortModal):
- * DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp:
- * DumpRenderTree/win/DumpRenderTree.cpp:
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/EditingDelegate.cpp:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- * DumpRenderTree/win/HistoryDelegate.cpp:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp: Removed.
- * DumpRenderTree/win/PolicyDelegate.cpp:
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- * DumpRenderTree/win/TestRunnerWin.cpp: Copied from Tools/DumpRenderTree/win/LayoutTestControllerWin.cpp.
- (LayoutTestController::setUserStyleSheetEnabled):
- (resolveCygwinPath):
- * DumpRenderTree/win/UIDelegate.cpp:
- * DumpRenderTree/wscript:
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp: Removed.
- * DumpRenderTree/wx/TestRunnerWx.cpp: Copied from Tools/DumpRenderTree/wx/LayoutTestControllerWx.cpp.
-
-2012-08-13 Alex Christensen <alex.christensen@flexsim.com>
-
- Windows 64 bit compliance
- https://bugs.webkit.org/show_bug.cgi?id=93275
-
- Reviewed by Brent Fulgham.
-
- Fixed a few compile and link problems for Win64
-
- * WinLauncher/WinLauncher.cpp:
- * win/DLLLauncher/DLLLauncherMain.cpp:
-
-2012-08-13 MORITA Hajime <morrita@google.com>
-
- Unreviewed update for webcomponents-bugzilla address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-11 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [CMake] Rewrite FindLibSoup2.cmake.
- https://bugs.webkit.org/show_bug.cgi?id=93191
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/efl/CMakeLists.txt: Use LIBSOUP_FOO instead of
- LIBSOUP24_FOO, and do not use LIBSOUP24_LDFLAGS, as it is not
- needed anymore.
- * EWebLauncher/CMakeLists.txt: Ditto.
- * MiniBrowser/efl/CMakeLists.txt: Ditto.
- * TestWebKitAPI/PlatformEfl.cmake: Ditto.
- * WebKitTestRunner/CMakeLists.txt: Ditto.
- * WebKitTestRunner/PlatformEfl.cmake: Ditto.
-
-2012-08-13 Brady Eidson <beidson@apple.com>
-
- With asynchronous plug-in initialization, WebProcess and PluginProcess can deadlock
- <rdar://problem/12062125> and https://bugs.webkit.org/show_bug.cgi?id=93894
-
- Reviewed by Alexey Proskuryakov.
-
- Add a test that calls out to NPP_Evaluate for some JS inside of NPP_New.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSWithinNPP_New.cpp: Added.
- (EvaluteJSWithinNPP_New):
- (EvaluteJSWithinNPP_New::EvaluteJSWithinNPP_New):
- (EvaluteJSWithinNPP_New::NPP_New):
-
-2012-08-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r125422.
- http://trac.webkit.org/changeset/125422
- https://bugs.webkit.org/show_bug.cgi?id=93902
-
- Broke the Android canary build (Requested by fmalita on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-13 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [CMake] Remove glib-related Find modules and write single new one instead.
- https://bugs.webkit.org/show_bug.cgi?id=93786
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/efl/CMakeLists.txt: Use GLIB_* instead of Glib_*.
- * EWebLauncher/CMakeLists.txt: Ditto.
- * MiniBrowser/efl/CMakeLists.txt: Ditto.
- * WebKitTestRunner/PlatformEfl.cmake: Ditto.
-
-2012-08-13 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Fix apk generation for the Android platform
- https://bugs.webkit.org/show_bug.cgi?id=93841
-
- Reviewed by Dimitri Glazkov.
-
- APK generation was broken as the configuration file assumed compilation
- would only occur in the Chromium tree. Pass the path to Chromium's source
- base directory as a property to ant.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-13 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] [WTR] InjectedBundlePage::didFailLoadForResource invokes wrong callback
- https://bugs.webkit.org/show_bug.cgi?id=93825
-
- Reviewed by Antonio Gomes.
-
- Corrected from didFinishLoadForResource() invoke to didFailLoadForResource() invoke.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFailLoadForResource):
-
-2012-08-13 Kwang Yul Seo <skyul@company100.net>
-
- [Qt] Add gprof.prf to build WebKit with gprof enabled
- https://bugs.webkit.org/show_bug.cgi?id=90283
-
- Reviewed by Eric Seidel.
-
- * qmake/mkspecs/features/functions.prf:
- gprof does not support profiling a shared library.
- To profile WebKit, applications must link QtWebKit statically.
-
- * qmake/mkspecs/features/gprof.prf: Added.
- Add -pg option to both QMAKE_CXXFLAGS and QMAKE_LFLAGS.
-
-2012-08-13 KwangYong Choi <ky0.choi@samsung.com>
-
- [TestNetscapePlugin][X11] Additional key up event handler routine is required
- https://bugs.webkit.org/show_bug.cgi?id=91357
-
- Reviewed by Eric Seidel.
-
- Fixed key up event handler routine to pass http/tests/plugins/plugin-document-
- has-focus.html on X11 architecture. The test can not be done without this patch.
- All other ports implemented it already.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventX11): Modified key up event handler for X11
-
-2012-08-13 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Replace Skipped list by TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=93796
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable cascaded TestExpectations for EFL port so
- that we can use TestExpectations in WK2-EFL.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._search_paths):
- (EflPort):
- (EflPort.expectations_files):
-
-2012-08-13 Peter Gal <galpeter@inf.u-szeged.hu>
-
- REGRESSION(r125153): It broke the 'Unexpected no expected results' case
- https://bugs.webkit.org/show_bug.cgi?id=93789
-
- Reviewed by Csaba Osztrogonác.
-
- Fix the regex, so the text won't be a capturing group.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests._parseNewRunWebKitTestsOutput):
-
-2012-08-12 MORITA Hajime <morrita@google.com>
-
- Unreviewed, added a proxy address to contributors_who_are_not_committers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-12 Loïc Yhuel <loic.yhuel@softathome.com>
-
- [Qt] Make it possible to build without QtTest/QtPrintSupport
- https://bugs.webkit.org/show_bug.cgi?id=93492
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/DumpRenderTree.pro: Optional printsupport
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore):
- (WebCore::DumpRenderTree::dryRunPrint): Does nothing if no printsupport
- * QtTestBrowser/QtTestBrowser.pro: Optional printsupport
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome): No print menu if no printsupport
- (LauncherWindow::print): Does nothing if no printsupport
- * QtTestBrowser/launcherwindow.h:
- * Tools.pro: Disable DRT/WTR if QtTest not present
- * qmake/mkspecs/features/default_pre.prf: printsupport no more mandatory
- * qmake/mkspecs/features/features.prf: Qt module availability tests
-
-2012-08-12 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg unittest cleanup: Show DeprecationWarnings with python >= 2.7 too
- https://bugs.webkit.org/show_bug.cgi?id=90161
-
- Reviewed by Eric Seidel.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
-
-2012-08-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Unreviewed trivial build fix: Newer Qt versions don't implicitly include qwindowsysteminterface.h
- through the QTestLib headers anymore.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
-
-2012-08-11 Sam Weinig <sam@webkit.org>
-
- Remove ability to run MiniBrowser in threaded mode, it hasn't worked for a long time
- https://bugs.webkit.org/show_bug.cgi?id=93774
-
- Reviewed by Dan Bernstein.
-
- Remove support for opening windows using the shared thread WKContextRef. WKContextGetSharedThreadContext()
- is going away, due to not working for a long time, and the first step is removing all the callers.
-
- While here, remove the BrowserStatisticsWindow, which was not providing interesting information.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate newWindow:]):
- (-[BrowserAppDelegate openPanelDidEnd:returnCode:contextInfo:]):
- * MiniBrowser/mac/BrowserStatisticsWindow.xib: Removed.
- * MiniBrowser/mac/BrowserStatisticsWindowController.h: Removed.
- * MiniBrowser/mac/BrowserStatisticsWindowController.m: Removed.
- * MiniBrowser/mac/MainMenu.xib:
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2012-08-11 Sam Weinig <sam@webkit.org>
-
- Enable XPC Service based WebProcess with runtime flag
- https://bugs.webkit.org/show_bug.cgi?id=93773
-
- Reviewed by Dan Bernstein.
-
- Convert --use-web-process-xpc-service passed to run-safari (and similar scripts)
- to setting WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS=YES in the environment and setting
- up __XPC_DYLD_FRAMEWORK_PATH and __XPC_DYLD_INSERT_LIBRARIES variables. NOTE: using
- the XPC service is not the default code path.
-
- * Scripts/webkitdirs.pm:
- (shouldUseXPCServiceForWebProcess):
- (determineShouldUseXPCServiceForWebProcess):
- Add functions to extract --use-web-process-xpc-service from ARGV and set a
- global variable.
-
- (printHelpAndExitForRunAndDebugWebKitAppIfNeeded):
- Add help text for --use-web-process-xpc-service.
-
- (runMacWebKitApp):
- Set the WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS environment variable and DYLD
- if --use-web-process-xpc-service was passed on the command line.
-
- (execMacWebKitAppForDebugging):
- Set the WEBKIT_USE_XPC_SERVICE_FOR_WEB_PROCESS environment variable and DYLD
- if --use-web-process-xpc-service was passed on the command line. Also, bail
- if both --use-web-process-xpc-service and --target-web-process are passed on
- the command line, as we don't currently support using both.
-
-2012-08-11 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Bump harfbuzz dependency to v0.9.2
- https://bugs.webkit.org/show_bug.cgi?id=93762
-
- Reviewed by Eric Seidel.
-
- EFL port has used harfbuzz 0.9.0 ver. However, the 0.9.2 version was released on 10th Aug 2012.
- In addition, 0.9.0 ver. was disappeared. So, EFL port needs to use 0.9.2 ver. from now on.
-
- * efl/jhbuild.modules:
-
-2012-08-10 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should upload memory statistics to perf-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=93690
-
- Reviewed by Dirk Pranke.
-
- Upload JS Heap and FastMalloc results for a test X/Y as: X/Y:JSHeap and X/Y:FastMalloc.
- Note "JS Heap" is converted to the CamelCase JSHeap.
-
- Also did some refactoring in PerfTest.parse_output and PerfTestRunnerTest and updated
- some helps in PerfTest.parse_output per arv's comments.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output): Include JSHeap and FastMalloc statistics in results as well as of Time.
- Also refactored it to avoid hard-coding indices in _result_classes and moved complied regular
- exressions out of the function to avoid re-compiling them every time the method runs.
- (PerfTest.output_statistics): Convert ':' to ': ' as well as '/'.
- (ChromiumStylePerfTest.parse_output): Removed an unused variable.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args): Uploaded some helps per arv's feedback.
- (PerfTestsRunner._output_json_path): Extracted from _generate_and_show_results to be used in
- PerfTestRunnerTest.create_runner.
- (PerfTestsRunner._generate_and_show_results):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner): Extracted runner.load_output_json from various tests.
- (test_run_memory_test): Added.
- (PerfTestRunner): Extracted _event_target_wrapper_and_inspector_results from various tests.
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_generates_json_by_default):
- (test_run_generates_and_show_results_page):
- (test_run_with_json_source):
- (test_run_with_multiple_repositories):
-
-2012-08-10 Benjamin Poulain <bpoulain@apple.com>
-
- Add support for String initialization from literal to WTFString
- https://bugs.webkit.org/show_bug.cgi?id=93426
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/StringImpl.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WTF/WTFString.cpp: Copied from Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-08-10 Xianzhu Wang <wangxianzhu@chromium.org>
-
- NRWT crashes when DRT with --encode-binary crashes just before it dumps pixels
- https://bugs.webkit.org/show_bug.cgi?id=93728
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (ContentBlock.decode_content): Check self.content is not None before calling base64.b64decode().
-
-2012-08-10 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android][NRWT] Executable might not be pushed correctly when there are multiple builds
- https://bugs.webkit.org/show_bug.cgi?id=93688
-
- Reviewed by Dirk Pranke.
-
- There might be other better methods, but this change is the smallest.
- I think the chance of equal timestamp can be ignored because we flock
- to avoid concurrent linkers.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._push_executable): Changed '<' to '!=' to compare the timestamp.
-
-2012-08-09 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Skip layout tests directories that are not applicable
- https://bugs.webkit.org/show_bug.cgi?id=93670
-
- Reviewed by Dirk Pranke.
-
- Added back ChromiumAndroidPort.skipped_layout_tests to skip some whole directories.
- The method is more convenient to skip whole directories than SKIP in TestExpectations
- because its higher priority. Will still use TestExpectations to skip individual tests.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.skipped_layout_tests):
-
-2012-08-09 Elliott Sprehn <esprehn@chromium.org>
-
- Add myself to the Contributor list.
- https://bugs.webkit.org/show_bug.cgi?id=93653
-
- Reviewed by Dirk Pranke.
-
- Add my email to the contributor list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-09 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: should log progress like ninja does
- https://bugs.webkit.org/show_bug.cgi?id=93563
-
- Reviewed by Ojan Vafai.
-
- This change modifies the output of nrwt in the
- non--debug-rwt-logging modes.
-
- In non-verbose mode, the output changes from:
- "Testing (50%): 96 ran as expected, 4 didn't, 100 left"
- to:
- "[100/200] foo.html (+4)"
- or:
- "[100/200] foo.html failed unexpectedly (text diff)"
-
- which indicates the earliest test currently running (optionally plus the
- count of other currently-executing tests if we're running tests in parallel)
- or the result of said test.
-
- If the test produces unexpected results, that line is flushed
- rather than erased (so we no longer need the %d didn't running
- tally).
-
- In --verbose mode, the output is similar, but every test gets a
- line (and tests are logged in order of them being started, not
- order of them being completed) (and in --details mode, the
- first line of each test matches --verbose but the other lines
- are unchanged).
-
- The overall result should be easier to read and is simpler to
- implement as well (apart from managing the number of tests that
- have started but not completed, which is slightly annoying).
-
- This also matches the output style for test-webkitpy, more-or-less.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- (LayoutTestRunner._update_summary_with_result):
- (LayoutTestRunner._handle_started_test):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (FakePrinter):
- (FakePrinter.print_started_test):
- (FakePrinter.print_finished_test):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.__init__):
- (Printer.print_started_test):
- (Printer.print_finished_test):
- (Printer._print_test_trace):
- (Printer._print_progress):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (test_details):
-
-2012-08-09 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] Add a process model constant for multiple processes
- https://bugs.webkit.org/show_bug.cgi?id=93642
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/mac/AppDelegate.h: Updated process model enum to match WebKit.
-
-2012-08-09 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r125178.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.parse_output): Don't include non-time results in the JSON output.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py: Updated the test outputs so to match
- actual test outputs.
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: Ditto.
-
-2012-08-09 Zoltan Horvath <zoltan@webkit.org>
-
- JSHeap and FastMallocStatistics based memory measurement for performance-tests
- https://bugs.webkit.org/show_bug.cgi?id=90858
-
- Reviewed by Ryosuke Niwa.
-
- Measure the memory usage of the performancetests with the help of the windows.memory.usedJSHeapSize
- object and the window.internals.fastMallocStatistics() function call.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output):
- (PerfTest.output_statistics):
-
-2012-08-09 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][Win] Build system bug revealed by r124835
- https://bugs.webkit.org/show_bug.cgi?id=93339
-
- Reviewed by Tor Arne Vestbø.
-
- Don't add "LC_ALL=c" on Windows in svnRevisionForDirectory() and in pathRelativeToSVNRepositoryRootForPath().
-
- * Scripts/VCSUtils.pm:
- (isWindows): Copied from webkitdirs.pm.
- (svnRevisionForDirectory):
- (pathRelativeToSVNRepositoryRootForPath):
-
-2012-08-08 Dirk Pranke <dpranke@chromium.org>
-
- update bot parsing of new-run-webkit-tests' output
- https://bugs.webkit.org/show_bug.cgi?id=93537
-
- Reviewed by Ryosuke Niwa.
-
- This change updates the way we parse the output from
- new-run-webkit-tests on the bots so that we can show a summary
- of the results properly after I re-land the changes that were
- reverted in r124994 and r124870.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests._parseNewRunWebKitTestsOutput):
-
-2012-08-08 Shane Stephens <shanestephens@google.com>
-
- Compile flag for CSS Hierarchies
- https://bugs.webkit.org/show_bug.cgi?id=92433
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-08-08 Benjamin Poulain <bpoulain@apple.com>
-
- Use char* instead of LChar* for the public interface of String construction from literals
- https://bugs.webkit.org/show_bug.cgi?id=93402
-
- Reviewed by Michael Saboff.
-
- * TestWebKitAPI/Tests/WTF/StringImpl.cpp:
- (TestWebKitAPI::TEST):
-
-2012-08-08 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: rename finder.py to layout_test_finder.py
- https://bugs.webkit.org/show_bug.cgi?id=93557
-
- Reviewed by Ryosuke Niwa.
-
- One last cleanup per old review feedback from rniwa.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py: Renamed from Tools/Scripts/webkitpy/layout_tests/controllers/finder.py.
- (LayoutTestFinder):
- (LayoutTestFinder.__init__):
- (LayoutTestFinder.find_tests):
- (LayoutTestFinder._strip_test_dir_prefixes):
- (LayoutTestFinder._strip_test_dir_prefix):
- (LayoutTestFinder._read_test_names_from_file):
- (LayoutTestFinder._strip_comments):
- (LayoutTestFinder.skip_tests):
- (LayoutTestFinder.split_into_chunks):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
-
-2012-08-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Perf EWS IRC bot
- https://bugs.webkit.org/show_bug.cgi?id=92913
-
- Reviewed by Dirk Pranke.
-
- Adds the preliminary implementation of perfalizer, a IRC bot that runs performance tests
- based on IRC requests.
-
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.head_svn_revision): The actual implementation returns string, so match that.
- (MockSCM.svn_revision): Ditto.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.add_attachment_to_bug): Added mimetype.
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzilla.add_attachment_to_bug): Ditto.
- * Scripts/webkitpy/common/system/filesystem.py:
- (FileSystem.copytree): Added.
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.copytree): Added.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: Rebaselined tests
- that had assumed revision numbers were integers.
- (test_run_with_json_output):
- (test_run_with_description):
- (test_run_generates_json_by_default):
- (test_run_generates_and_show_results_page):
- (test_run_with_json_source):
- (test_run_with_multiple_repositories):
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/perfalizer.py: Added.
- (PerfalizerTask):
- (PerfalizerTask.__init__):
- (PerfalizerTask._copy_build_product_without_patch):
- (PerfalizerTask.run):
- (PerfalizerTask.parent_command):
- (PerfalizerTask.run_webkit_patch):
- (PerfalizerTask._json_path):
- (PerfalizerTask._results_page_path):
- (PerfalizerTask._run_perf_test):
- (PerfalizerTask.run_command):
- (PerfalizerTask.command_passed):
- (PerfalizerTask.command_failed):
- (PerfalizerTask.refetch_patch):
- (PerfalizerTask.expected_failures):
- (PerfalizerTask.build_style):
- (PerfTest): IRC command.
- (PerfTest.execute):
- (Perfalizer): IRC bot.
- (Perfalizer.begin_work_queue):
- (Perfalizer.work_item_log_path):
- (Perfalizer._is_old_failure):
- (Perfalizer.next_work_item):
- (Perfalizer.process_work_item):
- (Perfalizer.handle_unexpected_error):
- (Perfalizer.handle_script_error):
- * Scripts/webkitpy/tool/commands/perfalizer_unittest.py: Added.
- (PerfalizerTaskTest):
- (PerfalizerTaskTest._create_and_run_perfalizer):
- (PerfalizerTaskTest._create_and_run_perfalizer.logger):
- (PerfalizerTaskTest._create_and_run_perfalizer.run_webkit_patch):
- (PerfalizerTaskTest._create_and_run_perfalizer.run_perf_test):
- (PerfalizerTaskTest.test_run):
- (PerfalizerTaskTest.test_run_with_clean_fails):
- (PerfalizerTaskTest.test_run_with_update_fails):
- (PerfalizerTaskTest.test_run_with_build_fails):
- (PerfalizerTaskTest.test_run_with_perf_test_fails):
- (PerfalizerTaskTest.test_run_without_results_page):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractPatchQueueTest.test_upload_results_archive_for_patch): Rebaselined.
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- (test_attach_to_bug): Ditto.
- (test_attach_to_bug_no_description_or_comment): Ditto.
-
-2012-08-08 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations needs to support multiple expectations files
- https://bugs.webkit.org/show_bug.cgi?id=89051
-
- Reviewed by Adam Barth.
-
- fixed the bug described above, added unit test in
- test_expectations_unittest, and updated the tool tests
- to not contain all of the "missing skia expectations" warnings.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.remove_rebaselined_tests):
- (TestExpectations.remove_rebaselined_tests.without_rebaseline_modifier):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RebaseliningTest.assertRemove):
- (RebaseliningTest.test_remove):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations._update_expectations_files):
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_expectations):
-
-2012-08-08 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] MiniBrowser crashes on quit if any windows were previously closed
- https://bugs.webkit.org/show_bug.cgi?id=93529
-
- Reviewed by John Sullivan.
-
- * MiniBrowser/mac/AppDelegate.h:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- (-[BrowserAppDelegate newWindow:]):
- (-[BrowserAppDelegate browserWindowWillClose:]):
- (-[BrowserAppDelegate applicationWillTerminate:]):
- (-[BrowserAppDelegate frontmostBrowserWindowController]):
- Track browser windows explicitly, not relying on [NSApp windows]. Closed windows
- are not automatically removed from the list until deallocated, so a refcounting
- error can result in working on a closed window.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController dealloc]): Moved code from -windowWillClose: here.
- Releasing data members is -dealloc's job.
- (-[BrowserWindowController windowWillClose:]): Notify BrowserAppDelegate that
- the window is no longer open. Autorelease self, making sure that WKView and
- then WebPageProxy get released.
- (-[BrowserWindowController applicationTerminating]): Don't release _webView.pageRef.
- WKView is responsible for its lifetime.
- (closePage): Ditto.
-
-2012-08-08 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Apply all Linux layout test expectations
- https://bugs.webkit.org/show_bug.cgi?id=92653
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.skipped_layout_tests): Removed. Skip these tests in TestExpectations instead.
-
-2012-08-08 Josh Hawn <jhawn@apple.com>
-
- Add MountainLion WebKit Bots.
- https://bugs.webkit.org/show_bug.cgi?id=93417
-
- Reviewed by Stephanie Lewis.
-
- Mountain Lion is now available, so we've added the appropriate Apple bots,
- mirroring the configuration of the Lion bots.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- Added 10 "apple-mini-###" slaves.
- Added MountainLion Builders and Schedulers.
-
-2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] Coding style violation was brought with r125031
- https://bugs.webkit.org/show_bug.cgi?id=93503
-
- Reviewed by Alexey Proskuryakov.
-
- WKURLResponseCopyMimeType is corrected to WKURLResponseCopyMIMEType.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveResponseForResource):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpProgressFinishedCallback): Removed trailing whitespace that was brought with the same revision.
-
-2012-08-08 Peter Beverloo <peter@chromium.org>
-
- Buildmaster changes in preparation of a Chromium Android tester
- https://bugs.webkit.org/show_bug.cgi?id=92251
-
- Reviewed by Adam Barth.
-
- Slightly update the build master's configuration in preparation of adding
- a Chromium Android tester.
-
- The change in built-product-archive is required as the out/ directory
- for Android has a number of unstripped .so binaries and unaligned APKs,
- causing the default release.zip file to be 2.7 gigabytes. By excluding
- these file types, the file is only 59.7 megabytes. We can't disable
- them for all of Chromium, as Mac and Linux do use their .so files.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (ArchiveBuiltProduct): Pass the full platform name instead of just the
- generic type, i.e. chromium-android instead of chromium.
- (ExtractBuiltProduct): Dito, stay consistent for this script.
- (RunUnitTests): Pass --chromium-android as well as --chromium. Since we
- now read the full platform name, stay on the safe side with 'win'
- even though there (as far as I know) is no win-* platform.
- (RunChromiumWebKitUnitTests): Dito. The platform wasn't being passed
- at all, but we'll be needing different handling here.
- (unitTestsSupported): Next to refactoring work required, as we'll be
- running this test on a device, there is no reason to disable this
- in the master's configuration.
- * BuildSlaveSupport/built-product-archive:
- (main): Determine the generic platform.
- (archiveBuiltProduct): Use an identical set of ignorePatterns, but
- extend the list with .so, .pak and -unaligned.apk for Android.
-
-2012-08-08 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Stop running tests on the mac-ews while we wait for more
- hardware. As requested by lforschler.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2012-08-08 Peter Beverloo <peter@chromium.org>
-
- The cr-android EWS should actually be building Chromium for Android
- https://bugs.webkit.org/show_bug.cgi?id=93489
-
- Reviewed by Adam Barth.
-
- The cr-android EWS bots should be building Chromium for Android, which
- requires some additional flags to Chromium's default configuration.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort.update_webkit_command):
- (ChromiumAndroidPort.build_webkit_command):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_chromium_android_port):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (ChromiumAndroidEWS):
- * Scripts/webkitpy/tool/steps/update_unittest.py:
- (UpdateTest.test_update_command_non_interactive):
- (UpdateTest.test_update_command_interactive):
-
-2012-08-08 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] MiniBrowser crashes on window.open()
- https://bugs.webkit.org/show_bug.cgi?id=93413
-
- Reviewed by Dan Bernstein.
-
- * MiniBrowser/mac/BrowserWindowController.m: (createNewPage): This is a "create"
- API, so it needs to return a retained result.
-
- * MiniBrowser/mac/WebBundle/WebBundleMain.m: (didClearWindowObjectForFrame):
- When this function is called, URL appears to be poorly defined. Sometimes, it's
- the new URL, other times it's the old one. An "old" URL is null in a new page.
-
-2012-08-08 Loïc Yhuel <loic.yhuel@softathome.com>
-
- [Qt] Compile errors with OpenGLES2
- https://bugs.webkit.org/show_bug.cgi?id=93206
-
- Reviewed by Noam Rosenthal.
-
- Fix build with OpenGLES2 on Linux desktop
-
- * qmake/mkspecs/features/features.prf: Don't use GLX with OpenGLES2
-
-2012-08-08 Peter Beverloo <peter@chromium.org>
-
- Introduce cr-android bots in the EWS system
- https://bugs.webkit.org/show_bug.cgi?id=93472
-
- Reviewed by Adam Barth.
-
- This adds the queue to the EWS scripts. Two builders are ready to be
- attached to the queue. All webkitpy tests pass with this change applied.
-
- * QueueStatusServer/model/queues.py:
- (Queue):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (ChromiumAndroidEWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest.test_builder_ewses):
-
-2012-08-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix GTK+ build with GTK2 after r121475.
-
- * TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp: Add missing
- include required when building with GTK2.
-
-2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] [WTR] Provide Resource Response dumping.
- https://bugs.webkit.org/show_bug.cgi?id=93454
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added missing dumpResourceResponseMIMETypes() method to testRunner. Provided resource response dumping.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveResponseForResource):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::dumpProgressFinishedCallback):
- (WTR::LayoutTestController::dumpResourceResponseMIMETypes):
- (WTR::LayoutTestController::shouldDumpResourceResponseMIMETypes):
- (LayoutTestController):
-
-2012-08-08 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][Win] Fix compilation of DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=93461
-
- Reviewed by Tor Arne Vestbø.
-
- DRT includes stdint.h, for which we have wrappers in Source/JavaScriptCore/os-win32. Use these not only
- for libraries but any building template.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-08-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] [WTR] Refactoring: LayoutTestController::shouldDumpProgressFinishedCallback() should be const
- https://bugs.webkit.org/show_bug.cgi?id=93457
-
- Reviewed by Csaba Osztrogonác.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (WTR::LayoutTestController::shouldDumpProgressFinishedCallback): Added constness.
-
-2012-08-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed typo fix after r124988.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
-
-2012-08-07 YoungTaeck Song <youngtaeck.song@samsung.com>
-
- [WK2][EFL] Implement accelerated compositing on WK2 Efl port
- https://bugs.webkit.org/show_bug.cgi?id=89840
-
- Reviewed by Noam Rosenthal.
-
- Implement accelerated composition with TiledBackingStore on WK2 Efl port.
- Add OPENGL_LIBRARIES in CMakeList.txt.
-
- * MiniBrowser/efl/CMakeLists.txt:
- * WebKitTestRunner/PlatformEfl.cmake:
-
-2012-08-07 Csaba Osztrogonác <ossy@webkit.org>
-
- [NRWT] REGRESSION(r124967): New tests without expected results handled as failures
- https://bugs.webkit.org/show_bug.cgi?id=93434
-
- Reviewed by Tony Chang.
-
- Change back "missing results" to "no expected result found", because master.cfg's results parser expects it.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
-
-2012-08-07 Csaba Osztrogonác <ossy@webkit.org>
-
- buildbot: Remove the configuration of hfreyther*
- https://bugs.webkit.org/show_bug.cgi?id=91849
-
- Unreviewed typo fix after r123757.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-08-07 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION: PrettyPatchTest.test_pretty_diff_encodings has been failing on Chromium Windows
- https://bugs.webkit.org/show_bug.cgi?id=93192
-
- Unreviewed, build fix.
-
- Disabling the test for now as PrettyPatch is just broken on win32.
-
- * Scripts/webkitpy/common/prettypatch_unittest.py:
- (test_pretty_diff_encodings):
-
-2012-08-07 Dirk Pranke <dpranke@chromium.org>
-
- [NRWT] Would like an output mode similar to ORWT verbose one
- https://bugs.webkit.org/show_bug.cgi?id=88702
-
- Reviewed by Ryosuke Niwa.
-
- Change the --verbose logging for new-run-webkit-tests so that
- it matches ORWT more; we just print one line per test. Use
- --debug-rwt-logging to get the full debug stream (aka old ORWT
- --verbose).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_retrying_and_flaky_tests):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (print_options):
- (Printer._print_result_summary_entry):
- (Printer._print_one_line_summary):
- (Printer._print_test_result):
- (Printer._print_baseline):
- (Printer._print_unexpected_results):
-
-2012-08-07 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: handle errors from image diff better
- https://bugs.webkit.org/show_bug.cgi?id=92934
-
- Reviewed by Ojan Vafai.
-
- Re-land the change in r124801 with a fix ... in the case where
- the ImageDiff is passed a tolerance and passes the fuzzy check,
- we were returning the wrong value (missing an empty error
- string) and crashing; this patch fixes that and adds a test for
- that case (TestImageDiffer.test_image_diff_passed).
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image.ImageDiffTestPort.diff_image):
- (TestResultWriterTest):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_diff_image_crashed):
- * Scripts/webkitpy/layout_tests/port/image_diff.py:
- (ImageDiffer.diff_image):
- (ImageDiffer._read):
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py:
- (TestImageDiffer.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_diff_image_crashed):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_diff_image):
- (PortTestCase.test_diff_image_crashed):
- (PortTestCase.test_diff_image_crashed.make_proc):
- * Scripts/webkitpy/layout_tests/port/server_process_mock.py:
- (MockServerProcess.__init__):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_tolerance.ImageDiffTestPort.diff_image):
-
-2012-08-07 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --no-build isn't working
- https://bugs.webkit.org/show_bug.cgi?id=93415
-
- Reviewed by Ryosuke Niwa.
-
- Turns out our optimization to avoid calling
- webkit-build-directory N times for each worker broke --no-build.
-
- Fixing, and adding a test.
-
- Also, the gtk port wasn't using the default check_build() logic,
- but I don't know why not. Removing their custom hook and will
- verify that this is okay in the review ...
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.check_build):
- (Port._build_path):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_check_build):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_path_to_apache_config_file):
- (test_check_build):
- (test_check_build.build_driver_called):
-
-2012-08-07 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should support --no-show-results
- https://bugs.webkit.org/show_bug.cgi?id=93409
-
- Reviewed by Dirk Pranke.
-
- Add the support for --no-show-results.
-
- Also replace only local paths to jquery and flot instead of embedding them.
- The results page is still standalone in that it tries to load scripts
- from both webkit.org and local filesystem.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_and_show_results):
- (PerfTestsRunner._generate_output_files):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner_and_setup_results_template):
- (test_run_generates_and_show_results_page):
- (test_run_respects_no_show_results):
-
-2012-08-07 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy hangs in a new checkout on snow leopard
- https://bugs.webkit.org/show_bug.cgi?id=93301
-
- Reviewed by Ryosuke Niwa.
-
- This change works around what appears to be a bug in Python
- 2.6.1 (the version that ships on Mac Snow Leopard) that causes
- the multiprocessing module to hang after we use the
- autoinstaller; I'm guessing it's some sort of python sockets
- issue. I was unable to reproduce this with 2.6.5 or newer
- versions of Python.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller.install):
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_mechanize):
- (AutoinstallImportHook._install_pep8):
- (AutoinstallImportHook._install_pylint):
- (AutoinstallImportHook._install_buildbot):
- (AutoinstallImportHook._install_coverage):
- (AutoinstallImportHook._install_eliza):
- (AutoinstallImportHook._install_irc):
- (AutoinstallImportHook._install_webpagereplay):
- (AutoinstallImportHook._install):
- (autoinstall_everything):
-
-2012-08-07 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android][NRWT] Fix 2 FIXMEs in chromium_android.py
- https://bugs.webkit.org/show_bug.cgi?id=93381
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._push_executable): Remove temporary lines as the chromium change has been landed: http://src.chromium.org/viewvc/chrome?view=rev&revision=150371
- (ChromiumAndroidDriver._setup_performance): Update all scaling governor files.
- (ChromiumAndroidDriver._teardown_performance): Update all scaling governor files.
-
-2012-08-07 W. James MacLean <wjmaclean@chromium.org>
-
- [chromium] Add support to DumpRenderTree [EventSender] for GestureTapDown events.
- https://bugs.webkit.org/show_bug.cgi?id=93286
-
- Reviewed by James Robinson.
-
- Adds support to generate GestureTapDown events from EventSender, to facilitate
- link highlighting layout tests.
-
- Added a GestureTapEvent to one existing test, more tests to follow when LinkHighlight CLs start to land.
-
- * DumpRenderTree/chromium/TestRunner/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureTapDown):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/EventSender.h:
- (EventSender):
-
-2012-08-07 Marcelo Lira <marcelo.lira@openbossa.org>
-
- [Qt] Add support for the Gamepad API
- https://bugs.webkit.org/show_bug.cgi?id=90637
-
- Reviewed by Alexis Menard.
-
- If the libudev library is present, the GAMEPAD flag is
- turned on by default for the Qt port.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.prf:
-
-2012-08-07 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Turn on CSS Variables
- https://bugs.webkit.org/show_bug.cgi?id=93376
-
- Reviewed by Antonio Gomes.
-
- Turn on CSS Variables for BlackBerry port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-08-07 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Make it possible to build without QtQuick
-
- Reviewed by Simon Hausmann.
-
- * Tools.pro:
- * qmake/mkspecs/features/features.prf:
-
-2012-08-02 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Remove Qt 4 specific code paths
- https://bugs.webkit.org/show_bug.cgi?id=88161
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::touchCancel):
- (EventSender::sendTouchEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
- * DumpRenderTree/qt/ImageDiff.pro:
- * DumpRenderTree/qt/main.cpp:
- (main):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/cookiejar.cpp:
- (TestBrowserCookieJar::TestBrowserCookieJar):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::setDiskCache):
- * qmake/configure.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/functions.prf:
- * qmake/mkspecs/features/qtwebkit.prf: Removed.
- * qmake/mkspecs/features/unix/default_pre.prf:
-
-2012-08-07 Andras Becsi <andras.becsi@nokia.com>
-
- [Qt][WK2] MiniBrowser should only synthesize multiple touch points if Ctrl is pressed
- https://bugs.webkit.org/show_bug.cgi?id=93277
-
- Reviewed by Jocelyn Turcotte.
-
- MiniBrowser's multi-touch mocking does not check if Ctrl is pressed
- when registering multiple touch points based on pressed mouse buttons
- and sends inconsistent touch events to the WebView which triggers an
- assert in the pinch gesture recognizer.
- MiniBrowserApplication::updateTouchPoint should only register multiple
- touch points if the Ctrl button is pressed else it should ignore the
- update request.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::updateTouchPoint):
-
-2012-08-07 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r124800): It broke NRWT result parsing of build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=93346
-
- Rubber-stamped by Simon Hausmann.
-
- Change back "unexpected" to "Unexpected", because master.cfg's results parser expects it.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_retrying_and_flaky_tests):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._print_unexpected_results):
-
-2012-08-06 Balazs Kelemen <kbalazs@webkit.org>
-
- [NRWT] runs platform specific tests that it shouldn't with --force
- https://bugs.webkit.org/show_bug.cgi?id=91089
-
- Reviewed by Dirk Pranke.
-
- Ignore other platform's directories from platform/.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._expanded_paths):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_platform_tests_are_found):
- Updated integration test in accordance to the new behavior.
-
-2012-08-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Enable link prefetch
- https://bugs.webkit.org/show_bug.cgi?id=93281
-
- Reviewed by Kentaro Hara.
-
- * Scripts/webkitperl/FeatureList.pm: Enable LINK_PREFETCH feature.
-
-2012-08-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r124801.
- http://trac.webkit.org/changeset/124801
- https://bugs.webkit.org/show_bug.cgi?id=93338
-
- It broke NRWT (Requested by Ossy on #webkit).
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image.ImageDiffTestPort.diff_image):
- (TestResultWriterTest):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/image_diff.py:
- (ImageDiffer.diff_image):
- (ImageDiffer._read):
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py:
- (TestImageDiffer.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/server_process_mock.py:
- (MockServerProcess.__init__):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_tolerance.ImageDiffTestPort.diff_image):
-
-2012-08-06 Wei James <james.wei@intel.com>
-
- [Chromium]duplicated command line options in Android LayoutTest
- https://bugs.webkit.org/show_bug.cgi?id=93233
-
- Reviewed by Tony Chang.
-
- Duplicated options found in Android layout test command line:
- --encode-binary and --enable-hardware-gpu.
-
- If there are multiple ChromiumAndroidPort instances,
- these two options will be appended for multiple times.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.additional_drt_flag):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.additional_drt_flag):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidTwoPortsTest):
- (ChromiumAndroidTwoPortsTest.test_options_with_two_ports):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line):
-
-2012-08-03 Brady Eidson <beidson@apple.com>
-
- Out-of-process plug-ins should support asynchronous initialization
- <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919
-
- Reviewed by Anders Carlsson.
-
- Add a plug-in with an NPP_New that takes 550ms (a reasonable trade-off between a solid test and a slow running test)
- for testing asynchronous plug-in initialization.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/Tests/SlowNPPNew.cpp: Copied from Source/WebKit2/Shared/Plugins/PluginProcessCreationParameters.h.
- (SlowNPPNew):
- (SlowNPPNew::SlowNPPNew):
- (SlowNPPNew::NPP_New):
-
-2012-08-06 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Virtual test suites fail
- https://bugs.webkit.org/show_bug.cgi?id=92515
-
- Reviewed by Dirk Pranke.
-
- The failure is because our bypassing of DriverProxy.
- Repeat the logic of virtual tests in DriverProxy in ChromiumAndroidDriver
- and restart DRT when the command line changes.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver.cmd_line): Added comments about why we override this and have _drt_cmd_line().
- (ChromiumAndroidDriver.run_test): Repeat the logic of virtual tests in DriverProxy.
- (ChromiumAndroidDriver.start): Restart DRT when the command line changes.
- (ChromiumAndroidDriver._start_once):
-
-2012-08-06 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Remove NRWT --shard-ref-tests
- https://bugs.webkit.org/show_bug.cgi?id=91539
-
- This is basically a revert of "[Chromium-Android] Run ref tests together to avoid expensive driver restarts"
- (https://bugs.webkit.org/show_bug.cgi?id=91533, http://trac.webkit.org/changeset/122914),
- with some conflicts resolved (because of refactory of Manager/LayoutTestRunner/Sharder classes).
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- (Sharder.shard_tests):
- (Sharder._shard_in_two):
- (Sharder._shard_by_directory):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (SharderTests):
- (SharderTests.get_test_input):
- (SharderTests.get_shards):
- (SharderTests.test_shard_by_dir):
- (SharderTests.test_shard_in_two):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._test_input_for_file):
- (Manager._test_is_slow):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-08-06 Luciano Wolf <luciano.wolf@openbossa.org>
-
- [Qt] Default sizes for input-text and text-area are different when running DRT/WTR
- https://bugs.webkit.org/show_bug.cgi?id=91990
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Initializing TestFonts information into WTR binary. Doing it
- later leads to wrong font names usage (Dejavu Serif instead
- of Liberation Serif).
-
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-08-06 Jeff Timanus <twiz@chromium.org>
-
- Add twiz@{chromium|google}.org to the set of non-committer contributors.
- https://bugs.webkit.org/show_bug.cgi?id=93288
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-06 Adam Barth <abarth@webkit.org>
-
- REGRESSION(124789): EWS errors out because --print option is missing
- https://bugs.webkit.org/show_bug.cgi?id=93299
-
- Unreviewed.
-
- The --print option doesn't exist anymore. Let's try --quiet instead.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2012-08-06 Ryosuke Niwa <rniwa@webkit.org>
-
- run-webkit-tests should have ability to add description to its JSON output
- https://bugs.webkit.org/show_bug.cgi?id=93296
-
- Reviewed by Dirk Pranke.
-
- Add --description option.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._generate_and_show_results):
- (PerfTestsRunner._generate_results_dict):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_with_description):
-
-2012-08-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: handle errors from image diff better
- https://bugs.webkit.org/show_bug.cgi?id=92934
-
- Reviewed by Ojan Vafai.
-
- Currently if ImageDiff crashes, returns a weird exit code, or
- produces any stderr output, it's basically swallowed. This
- change ensures that we log errors to stderr, and also appends
- the error to the stderr for the test (so it'll show up in
- results.html).
-
- Most importantly, it'll cause diff_image() to fail and we'll
- report ImageHashMismatch ... this may be kinda untrue, but I
- think it's better than ignoring the error.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._compare_image):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image.ImageDiffTestPort.diff_image):
- (TestResultWriterTest):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.diff_image):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_diff_image_crashed):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
- * Scripts/webkitpy/layout_tests/port/image_diff.py:
- (ImageDiffer.diff_image):
- (ImageDiffer._read):
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py:
- (TestImageDiffer.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_diff_image_crashed):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_diff_image):
- (PortTestCase):
- (PortTestCase.test_diff_image_crashed):
- (PortTestCase.test_diff_image_crashed.make_proc):
- * Scripts/webkitpy/layout_tests/port/server_process_mock.py:
- (MockServerProcess.__init__):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.diff_image):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_tolerance.ImageDiffTestPort.diff_image):
-
-2012-08-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up printing.py
- https://bugs.webkit.org/show_bug.cgi?id=93026
-
- Reviewed by Dirk Pranke.
-
- This patch cleans up the implementation of printing.py now
- that we're not using all the original complexity.
-
- There should be no changes in functionality and everything
- should be covered by the existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.__init__):
- (Printer.__del__):
- (Printer.print_config):
- (Printer.print_found):
- (Printer.print_expected):
- (Printer.print_workers_and_shards):
- (Printer):
- (Printer._print_expected_results_of_type):
- (Printer.print_results):
- (Printer._print_timing_statistics):
- (Printer._print_aggregate_test_statistics):
- (Printer._print_individual_test_times):
- (Printer._print_test_list_timing):
- (Printer._print_directory_timings):
- (Printer._print_statistics_for_test_timings):
- (Printer._print_result_summary):
- (Printer._print_result_summary_entry):
- (Printer._print_one_line_summary):
- (Printer.print_finished_test):
- (Printer._print_test_result):
- (Printer._print_test_trace):
- (Printer._print_baseline):
- (Printer._print_unexpected_test_result):
- (Printer._print_progress):
- (Printer._print_unexpected_results):
- (Printer._print_unexpected_results.add_result):
- (Printer._print_quiet):
- (Printer._print_default):
- (Printer._print_debug):
- (Printer._print_for_bot):
- (Printer.write_update):
- (Printer.writeln):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_printer):
- (Testprinter.test_print_config):
- (Testprinter.test_print_one_line_summary):
- (Testprinter.test_print_unexpected_results):
- (test_details):
-
-2012-08-06 Dirk Pranke <dpranke@chromium.org>
-
- change bots to pass --debug-rwt-logging instead of --verbose to new-run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=93043
-
- Reviewed by Ryosuke Niwa.
-
- in preparation for the cleanup of the logging flags in new-run-webkit-tests.
-
- * Scripts/run-webkit-tests:
-
-2012-08-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up logging, part 1
- https://bugs.webkit.org/show_bug.cgi?id=93018
-
- Reviewed by Ojan Vafai.
-
- remove --print, --help-printing from nrwt, add three new options:
- --quiet, which just logs warnings,errors, and unexpected results
- --debug-rwt-logging, a new name for --verbose
- --details, to get the old --print trace-everything behavior
-
- This patch does not implement the new "one line per test"
- --verbose behavior specified in bug 88702, and there's a bunch
- of internal cleanup I can do in printing.py that I'll defer to
- a later patch to make things easier to review.
-
- This patch deletes a lot of unit tests that are no longer
- necessary since there aren't so many logging combinations.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (parse_args):
- (passing_run):
- (StreamTestingMixin.assertContains):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_full_results_html):
- (MainTest.test_no_tests_found):
- (MainTest.test_no_tests_found_2):
- (MainTest.test_repeat_each_iterations_num_tests):
- (MainTest.test_additional_platform_directory):
- (RebaselineTest.assertBaselines):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (print_options):
- (Printer.__init__):
- (Printer.enabled):
- (Printer.print_unexpected_results):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (TestUtilityFunctions.test_print_options):
- (Testprinter.get_result_summary):
- (Testprinter.test_configure_and_cleanup):
- (Testprinter.test_print_config):
- (Testprinter.test_print_one_line_summary):
- (Testprinter.test_print_unexpected_results):
- (test_details):
- (test_default):
- (test_quiet):
- (test_verbose):
-
-2012-08-06 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Store test executable, data and fonts in /data/local/tmp
- https://bugs.webkit.org/show_bug.cgi?id=91910
-
- /data/local/tmp is a directory with permission 0777 by default.
- Place DumpRenderTree resources here so that both the native test app and
- the NRWT script can access them even if adb shell isn't running as root.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (createFIFO): Set fifo mode to 0666 to allow unrooted adb shell to access.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.driver_cmd_line):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_test):
- (ChromiumAndroidDriver._push_executable):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.make_port):
- (ChromiumAndroidPortTest.test_expectations_files):
- (ChromiumAndroidDriverTest.test_drt_cmd_line):
-
-2012-08-06 Abhishek Arya <inferno@chromium.org>
-
- [Chromium] Re-expose layoutTestController as various fuzzers depend on it
- https://bugs.webkit.org/show_bug.cgi?id=93282
-
- Reviewed by Ryosuke Niwa.
-
- Unfortunately, various fuzzers used in the Chromium project still depends on
- window.layoutTestController. Re-expose the object while they're making the transition.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
-
-2012-08-06 Balazs Kelemen <kbalazs@webkit.org>
-
- WTR should be able to load external resources
- https://bugs.webkit.org/show_bug.cgi?id=89382
-
- Reviewed by Ryosuke Niwa.
-
- Allow to load an external resource as the main frame
- and allow all subsequent external loads for such a main
- frame. This behavior is necessary for being able to run
- performance tests (https://bugs.webkit.org/show_bug.cgi?id=84008).
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::isLocalHost):
- (WTR):
- (WTR::isHTTPOrHTTPSScheme):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
-
-2012-08-06 Balazs Kelemen <kbalazs@webkit.org>
-
- [WK2] REGRESSION(124596) lot of web process unresponsiveness appears on Apple bots
- https://bugs.webkit.org/show_bug.cgi?id=93120
-
- Reviewed by Csaba Osztrogonác.
-
- Set the short timeout back to 15 seconds and add more time to WebKitTestRunner
- so it will be able to detect an unresponsive web process.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_timeout_ms):
- * WebKitTestRunner/TestController.cpp:
- (WTR):
-
-2012-08-06 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck.
-
- * GNUmakefile.am: Add jhbuildutils.py to EXTRA_DIST.
-
-2012-08-06 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] EFL's LayoutTestController needs removeAllVisitedLinks implementation
- https://bugs.webkit.org/show_bug.cgi?id=82724
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::removeAllVisitedLinks):
-
-2012-08-06 Mario Sanchez Prada <msanchez@igalia.com>
-
- [WK2][GTK] Implement a new spell checker API for WebKit2GTK+
- https://bugs.webkit.org/show_bug.cgi?id=90268
-
- Reviewed by Martin Robinson.
-
- Ignore WebKitTextChecker.* private files for gtk-doc.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options):
-
-2012-08-06 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Roll out r124728 because of build bot test fail.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-05 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Change my email address for watch list.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-08-04 Nico Weber <thakis@chromium.org>
-
- [Chromium Mac] Tests are exiting early due to failures to load missingImage.png
- https://bugs.webkit.org/show_bug.cgi?id=93186
-
- Reviewed by Ryosuke Niwa.
-
- Add missingImage.png to DumpRenderTree.app's Resource folder.
- Depends on http://crrev.com/150037 rolling into webkit first.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-08-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Stop exposing window.layoutTestController in layout tests in favor of window.testRunner
- https://bugs.webkit.org/show_bug.cgi?id=93173
-
- Reviewed by Adam Barth.
-
- Don't expose window.layoutTestController since all layout tests use window.testRunner
- instead of window.layoutTestController as of r124685.
-
- We can safely rename classes and files to use TestRunner once this patch is landed.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::makeWindowObject):
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp:
- (notifyTestCompletion):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::waitUntilDone):
- (PluginTest::notifyDone):
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp:
- (ConvertPoint::NPP_SetWindow):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (handleEventCarbon):
- (handleEventCocoa):
- (handleEventWin):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::initJSObjects):
- * Scripts/bencher:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::makeWindowObject):
-
-2012-08-04 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed: Web Inspector: extend instrumenting methods set in ReportMemoryUsage clang plugin
- Three methods addString, addVectorPtr and addInstrumentedVectorPtr were added to the list of instrumentation methods.
-
- * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp:
- (clang::ReportMemoryUsageConsumer::ReportMemoryUsageConsumer):
-
-2012-08-03 Yaron Friedman <yfriedman@chromium.org>
-
- [Chrome-Android] - Prepare apk tests for switch to checked in SDK.
- https://bugs.webkit.org/show_bug.cgi?id=92931
-
- Reviewed by Adam Barth.
-
- Pass Android-specific gyp variables to the native test generator,
- avoiding any dependencies on environment variables during build time.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-03 Rick Byers <rbyers@chromium.org>
-
- Double tap gesture should send dblclick event
- https://bugs.webkit.org/show_bug.cgi?id=92412
-
- Reviewed by Adam Barth.
-
- Enable EventSender to set the tap count on tap gesture events. The
- delta X/Y parameters were not actually being used anymore (used to be
- used for radius information).
-
- * DumpRenderTree/chromium/TestRunner/EventSender.cpp:
- (EventSender::gestureEvent):
-
-2012-08-03 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should generate JSON output and results page by default
- https://bugs.webkit.org/show_bug.cgi?id=93042
-
- Reviewed by Eric Seidel.
-
- Generate results JSON and page named PerfTestResults.json and PerfTestResults.html by default.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.perf_results_directory): Added.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner): Added _DEFAULT_JSON_FILENAME.
- (PerfTestsRunner._parse_args): Added --no-results option in the case a user doens't want to generate
- results JSON or results page.
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_and_show_results): Extracted from run. Set the default json file path using
- port's perf_results_directory and call show_results_html_file at the end if the results page is generated.
- (PerfTestsRunner._generate_results_dict): Renamed from _generate_output to disambiguate it from
- _generate_and_show_results.
- (PerfTestsRunner._generate_output_files): Takes results page's path instead of a boolean indicating
- whether results page should be generated or not.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner_and_setup_results_template):
- (test_run_respects_results_output): Added.
- (test_run_generates_json_by_default): Added.
- (test_run_generates_and_show_results_page): Added a check to ensure show_results_html_file is called.
-
-2012-08-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r124628.
- http://trac.webkit.org/changeset/124628
- https://bugs.webkit.org/show_bug.cgi?id=93155
-
- Causes random crashes of DRT on Chromium bots (Requested by
- dimich on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp: Removed.
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h: Removed.
-
-2012-08-03 Brady Eidson <beidson@apple.com>
-
- Small part of "Out-of-process plug-ins should support asynchronous initialization."
- <rdar://problem/10598594> and https://bugs.webkit.org/show_bug.cgi?id=92919
-
- Reviewed by Anders Carlsson.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues): Reset all preferences related to asynchronous plugin initialization.
-
-2012-08-02 Jeffrey Pfau <jpfau@apple.com>
-
- Add API for enabling blanket third-party data blocking
- https://bugs.webkit.org/show_bug.cgi?id=93022
-
- Reviewed by Anders Carlsson.
-
- Added test for default setting of new third-party storage blocking API.
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
-
-2012-08-03 Arvid Nilsson <anilsson@rim.com>
-
- Unreviewed, adding self to committers.py after becoming committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-08-03 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- Limited the number of queried cached build infos in URLs used by Garden-o-matic.
- https://bugs.webkit.org/show_bug.cgi?id=92992.
-
- Reviewed by Adam Barth.
-
- I added a limit to the cached builds that are included in the URL to avoid too long URLs in Garden-o-matic.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-08-03 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Add MockWebRTCPeerConnectionHandler
- https://bugs.webkit.org/show_bug.cgi?id=93091
-
- Reviewed by Adam Barth.
-
- Add a skeleton MockWebRTCPeerConnectionHandler to DumpRenderTree,
- to complete the infrastructure for RTCPeerConnection.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.h.
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::initialize):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.h.
- (WebKit):
- (MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
-
-2012-08-03 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [Qt][WK2] There's no way to test the gesture tap on WTR
- https://bugs.webkit.org/show_bug.cgi?id=92895
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WTR doesn't create the QQuickItem from C++, not from QML, so a call
- to componentComplete() was added to mimic the QML behaviour.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed, rolling out r124567.
- http://trac.webkit.org/changeset/124567
- https://bugs.webkit.org/show_bug.cgi?id=89382
-
- Broke some tests with external resources
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willSendRequestForFrame):
-
-2012-08-03 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, rolling out r124614.
- http://trac.webkit.org/changeset/124614
- https://bugs.webkit.org/show_bug.cgi?id=91727
-
- gstreamer core .po files mess up the build again
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/jhbuild.modules:
-
-2012-08-03 Philippe Normand <pnormand@igalia.com>
-
- [GTK][jhbuild] Switch to GStreamer 0.11 build
- https://bugs.webkit.org/show_bug.cgi?id=91727
-
- Reviewed by Gustavo Noronha Silva.
-
- Switch build-webkit --gtk to GStreamer 0.11 support and build the
- necessary GStreamer git modules from JHBuild.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Build WebKit with GStreamer 0.11 support.
- * gtk/jhbuild.modules: GStreamer build support.
-
-2012-08-03 Nico Weber <thakis@chromium.org>
-
- [chromium mac] DumpRenderTree compile fails with warning/error in LayoutTestHelper.mm with 10.7sdk
- https://bugs.webkit.org/show_bug.cgi?id=92820
-
- Reviewed by Jochen Eisinger.
-
- When building with the 10.7 SDK, use newer functions to switch color
- profiles. Note that these newer functions aren't available on 10.6,
- but we don't intend to ship DRT to users, and no bots that currently
- build with the 10.7 SDK ship their binaries to 10.6 testers.
-
- The new code was copied from Apple's DRT/mac/LayoutTestHelper.m.
-
- * DumpRenderTree/chromium/LayoutTestHelper.mm:
- (installLayoutTestColorProfile):
- (restoreUserColorProfile):
- (saveCurrentColorProfile):
-
-2012-08-03 Benjamin Poulain <benjamin@webkit.org>
-
- StringImpl created from literal should be BufferInternal
- https://bugs.webkit.org/show_bug.cgi?id=92940
-
- Reviewed by Anders Carlsson.
-
- Add tests for the contruction of strings from literal.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/AtomicString.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WTF/StringImpl.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [nrwt] fix unit tests after turned pixel testing to be a per test setting
- https://bugs.webkit.org/show_bug.cgi?id=93112
-
- Reviewed by Csaba Osztrogonác.
-
- Change unit tests in accordance of per test switching of pixel testing.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_no_timeout):
-
-2012-08-03 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Populate .qmake.cache from the top-level project file
-
- This makes it possible to build webkit without using the perl build
- script. The duplicated logic in build-webkit will be removed when we
- remove the Qt4 code paths. The build-webkit script will then simply
- call 'qmake WebKit.pro' from WEBKITOUTPUTDIR.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/win32/default_pre.prf:
-
-2012-08-03 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Move build config default to build-webkit instead of default_pre
-
- Allows the qmake buildsystem have its own default.
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-08-03 Mario Sanchez Prada <msanchez@igalia.com>
-
- Unreviewed build fix for GTK after r124581.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (runTest): Fix wrong variable name in ASSERT.
-
-2012-08-03 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Always save CONFIG & DEFINES in default_pre
-
- Always doing it is cheaper than checking whether it needs to be done.
- apart from that, it would break configuration initiated from another
- project.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-08-03 Joone Hur <joone.hur@intel.com>
-
- [EFL][DRT] fast/loader/stop-provisional-loads.html fails
- https://bugs.webkit.org/show_bug.cgi?id=92219
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This patch adds the ability to tell DRT to call ewk_frame_stop
- inside of a didStartProvisionalLoadForFrame signal handler.
- It allows to pass fast/loader/stop-provisional-loads.html.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameProvisionalLoad):
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [WTR] process unresponsiveness is reported to the wrong test
- https://bugs.webkit.org/show_bug.cgi?id=88404
-
- 2nd unreviewed buildfix.
-
- * WebKitTestRunner/TestInvocation.cpp:
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [WTR] process unresponsiveness is reported to the wrong test
- https://bugs.webkit.org/show_bug.cgi?id=88404
-
- Unreviewed buildfix. Also made the change on the array size
- suggested on review because I forgot it when landed.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [WTR] process unresponsiveness is reported to the wrong test
- https://bugs.webkit.org/show_bug.cgi?id=88404
-
- Reviewed by Zoltan Herczeg.
-
- Do resetting to consistent state after the finished test,
- not before the next. This way we can report unresponsiveness
- to the test that triggered it, and we do a restart before the
- next test so it will start in a functional state.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._check_for_driver_crash):
- Print the error line for unresponsive web process, otherwise
- it's hard to tell what happened.
- * WebKitTestRunner/TestController.cpp:
- (WTR):
- Decreased the default short timeout so we can detect unresponsiveness
- before the timer of the test harness times out. It was unnecessarily
- high anyway, we should get answer from the web process in those cases
- when the short timeout is used in less than a second.
- (WTR::TestController::runTest):
- (WTR::TestController::run):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation): Make the dump function static as it doesn't need an object.
-
-2012-08-03 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] (REGRESSION 124581) : EFL 64-bit Debug bot is red and build is exiting early after 20 test crashes
- https://bugs.webkit.org/show_bug.cgi?id=93084
-
- Reviewed by Csaba Osztrogonác.
-
- Fix regression introduced in r124581.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (getFinalTestURL): Convert the path into a full file URL.
- (runTest):
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- All ports should support per test switching of pixel testing
- https://bugs.webkit.org/show_bug.cgi?id=92398
-
- Reviewed by Dirk Pranke.
-
- Teach all test drivers to accept a per test control of whether
- to dump pixels. Drivers now accept a -p/--pixel-test argument
- on the standart input that means that running the current
- test as pixel test is allowed (even if the expected hash is
- missing). Removed the --pixel-tests command line option since
- there is no need for it anymore.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.h:
- (TestCommand::TestCommand):
- (TestCommand):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeCommon.cpp: Added.
- (CommandTokenizer):
- (CommandTokenizer::CommandTokenizer):
- (CommandTokenizer::pump):
- (CommandTokenizer::next):
- (CommandTokenizer::hasNext):
- (die):
- (parseInputLine):
- Common logic to parse the input line from the standard input (or from the command line
- in standalone mode). Made it somewhat general so we can easily add more arguments if
- there is a need.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
- (main):
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityController.cpp.
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityController.h.
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.cpp.
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.h.
- Renamed these files with a Chromium suffix because they were clashing with the common ones used by other ports after adding the root
- DumpRenderTree directory to the include path.
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
- (TestShell):
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (parseCommandLineOptions):
- (runTest):
- (shouldDumpPixelsAndCompareWithExpected):
- (main):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGlobalsFromCommandLineOptions):
- (dump):
- (runTest):
- (main):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (dumpRenderTree):
- (dump):
- (runTest):
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/main.cpp:
- (isOption):
- (printUsage):
- (main):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (runTest):
- (dllLauncherEntryPoint):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/wscript:
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (dump):
- (runTest):
- (MyApp::OnInit):
- * GNUmakefile.am:
-
- * Scripts/old-run-webkit-tests:
- * Scripts/old-run-webkit-tests:
- Pass --pixel-test before the hash.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.should_run_as_pixel_test): Removed now that all ports supports it.
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line): Don't pass --pixel-tests anymore.
- (Driver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.should_run_as_pixel_test):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.should_run_as_pixel_test):
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestCommand::TestCommand):
- (TestCommand):
- (WTR):
- (CommandTokenizer):
- (WTR::CommandTokenizer::CommandTokenizer):
- (WTR::CommandTokenizer::pump):
- (WTR::CommandTokenizer::next):
- (WTR::CommandTokenizer::hasNext):
- (WTR::die):
- (WTR::parseInputLine):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
- Duplicate the logic for parsing the command line because
- unfortunately there is no way to share code between
- WebKitTestRunner and DumpRenderTree.
-
-2012-08-03 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: clang plugin for checking native memory instrumentation coverage.
- https://bugs.webkit.org/show_bug.cgi?id=92650
-
- Reviewed by Yury Semikhatsky.
-
- This is the clang plugin for checking native memory instrumentation coverage.
- The idea: InspectorMemoryAgent traverses through instrumented objects and collects pointers and their sizes and types.
- It is doing that with help of reportMemoryUsage function that needs to be implemented in each, significant
- from native memory footprint point of view, WebCore class.
- This plugin checks that the list of class members is matching with the list of members reported in reportMemoryUsage function
- and makes a warning for the each member that needs to be reported.
-
- * clang/ReportMemoryUsagePlugin/CMakeLists.txt: Added.
- * clang/ReportMemoryUsagePlugin/Makefile: Added.
- * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp: Added.
- (clang):
- (AddMemberCallVisitor):
- (clang::AddMemberCallVisitor::VisitCallExpr):
- (clang::AddMemberCallVisitor::instrumentedMembers):
- (ReportMemoryUsageVisitor):
- (clang::ReportMemoryUsageVisitor::ReportMemoryUsageVisitor):
- (clang::ReportMemoryUsageVisitor::VisitCXXMethodDecl):
- (clang::ReportMemoryUsageVisitor::emitWarning):
- (clang::ReportMemoryUsageVisitor::findInstrumentationMethod):
- (clang::ReportMemoryUsageVisitor::needsToBeInstrumented):
- (clang::ReportMemoryUsageVisitor::CheckMembersCoverage):
- (ReportMemoryUsageConsumer):
- (clang::ReportMemoryUsageConsumer::ReportMemoryUsageConsumer):
- (clang::ReportMemoryUsageConsumer::HandleTranslationUnit):
- (ReportMemoryUsageAction):
- (clang::ReportMemoryUsageAction::CreateASTConsumer):
- (clang::ReportMemoryUsageAction::ParseArgs):
- * clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp: Added.
- (aNamespace):
- (MemoryInstrumentation):
- (MemoryClassInfo):
- (aNamespace::MemoryClassInfo::MemoryClassInfo):
- (aNamespace::MemoryClassInfo::addMember):
- (aNamespace::MemoryClassInfo::addInstrumentedMember):
- (OwnPtr):
- (aNamespace::OwnPtr::OwnPtr):
- (RefPtr):
- (aNamespace::RefPtr::RefPtr):
- (Vector):
- (String):
- (NotInstrumentedClass):
- (InstrumentedClass):
- (aNamespace::InstrumentedClass::reportMemoryUsage):
- (InstrumentedChildClass):
- (aNamespace::InstrumentedChildClass::reportMemoryUsage):
- (InstrumentedChildChildClass):
- (InstrumentedChildChildClass::reportMemoryUsage):
- (main):
-
-2012-08-03 Joone Hur <joone.hur@intel.com>
-
- [EFL][DRT] WebKitAnimation API compile-time disabled
- https://bugs.webkit.org/show_bug.cgi?id=84593
-
- Reviewed by Laszlo Gombos.
-
- Enable ENABLE_ANIMATION_API by default on the Efl port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-08-03 Balazs Kelemen <kbalazs@webkit.org>
-
- WTR should be able to load external resources
- https://bugs.webkit.org/show_bug.cgi?id=89382
-
- Reviewed by Ryosuke Niwa.
-
- Allow to load an external resource as the main frame
- and allow all subsequent external loads for such a main
- frame. This behavior is necessary for being able to run
- performance tests (wkb.ug/84008).
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::isLocalHost):
- (WTR):
- (WTR::isHTTPOrHTTPSScheme):
- (WTR::InjectedBundlePage::willSendRequestForFrame):
-
-2012-08-02 Joone Hur <joone.hur@intel.com>
-
- [GTK] Build break when building DumpRenderTree/gtk/EditingCallbacks.cpp
- https://bugs.webkit.org/show_bug.cgi?id=93061
-
- Unreviewed, Fix build break for WebKitGtk+.
-
- Use webkit_dom_element_get_class_name instead of webkit_dom_html_element_get_class_name.
-
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- (shouldShowDeleteInterfaceForElement):
-
-2012-08-02 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy can fail on a clean checkout
- https://bugs.webkit.org/show_bug.cgi?id=93039
-
- Reviewed by Adam Barth.
-
- Now that we run tests in parallel that can cause the installer
- to try and install packages in parallel (even the same package),
- and that probably won't work. We fix this by autoinstalling
- everything up front (serially).
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (autoinstall_everything):
-
-2012-06-15 David Barton <dbarton@mathscribe.com>
-
- MathML: nested square root symbols have varying descenders
- https://bugs.webkit.org/show_bug.cgi?id=43819
-
- Reviewed by Eric Seidel.
-
- Allow the STIXGeneral font to be used during layout tests, especially for MathML.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
-
-2012-08-02 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: some tests need to run by themselves
- https://bugs.webkit.org/show_bug.cgi?id=92926
-
- Reviewed by Ojan Vafai.
-
- Due to timing issues some of the executive tests will collide
- and fail if they're run concurrently. This patch adds support
- for writing tests that will be executed one at a time
- (serially); to get them, add "serial_" to the front of the test
- method name.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.serial_test_kill_process):
- (ExecutiveTest.serial_test_kill_all):
- (ExecutiveTest.serial_test_check_running_pid):
- (ExecutiveTest.serial_test_running_pids):
- (ExecutiveTest.serial_test_run_in_parallel):
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- (Tester._test_names):
-
-2012-08-02 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: integrate proper support for integration tests
- https://bugs.webkit.org/show_bug.cgi?id=92925
-
- Reviewed by Ojan Vafai.
-
- This patch merges the custom loader I used for integration tests
- into the main test-webkitpy code. Integration tests are not run
- by default yet, but at least they can be run.
-
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockTestShellTest.test_test_shell_parse_options):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_path_to_apache_config_file):
- * Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py:
- (WebsocketserverTest):
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester._run_tests):
- (Tester._test_names):
- (Tester._log_exception):
- (_Loader):
- (_Loader.getTestCaseNames):
- (_Loader.getTestCaseNames.isTestMethod):
-
-2012-08-02 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: clean up runner in preparation for running tests serially as necessary
- https://bugs.webkit.org/show_bug.cgi?id=92922
-
- Reviewed by Ojan Vafai.
-
- In order to run some tests by themselves (serially, rather than
- in parallel with other tests), we will need to be able to run
- multiple test suites; this causes us to move loading the logic
- for finding test method names out of the runner and into main.
-
- I'm taking advantage of this to simplify some other stuff from
- the runner as well; it is now very simple and doesn't expose its
- dependency on unittest.TestResult at all (nor will the Printer
- use TestResult).
-
- Subsequent patches will move the custom loader from
- port_testcase so that we can properly choose whether to run
- integration tests and/or serial tests, and then update the
- appropriate tests to run only serially.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- (Tester):
- (Tester._check_imports):
- (Tester._test_names):
- (Tester._all_test_names):
- * Scripts/webkitpy/test/printer.py:
- (Printer.__init__):
- (Printer.write_update):
- (Printer):
- (Printer.print_finished_test):
- (Printer.print_result):
- * Scripts/webkitpy/test/runner.py:
- (unit_test_name):
- (Runner.__init__):
- (Runner.run):
- (Runner.handle):
- (_Worker.handle):
- * Scripts/webkitpy/test/runner_unittest.py:
- (FakeLoader.loadTestsFromName):
- (RunnerTest.test_run):
-
-2012-08-02 Adam Barth <abarth@webkit.org>
-
- Turn on tests for the mac-ews, for realz this time.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2012-08-02 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Run layout tests on multiple devices in parallel
- https://bugs.webkit.org/show_bug.cgi?id=92877
-
- Reviewed by Dirk Pranke.
-
- Moved methods that run command on a particular device from ChromiumAndroidPort to ChromiumAndroidDriver.
- The drivers run adb commands with the '-s serial_number' parameter which specifies the device according to the work_number.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.default_child_processes): Default to the number of attached devices.
- (ChromiumAndroidPort.test_expectations): Removed because it is unused.
- (ChromiumAndroidPort.setup_test_run): Most contents moved into ChromiumAndroidDriver._setup_test()
- (ChromiumAndroidPort.clean_up_test_run): Now the http server is stopped here.
- (ChromiumAndroidPort._get_devices):
- (ChromiumAndroidPort._get_device_serial):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver.__del__):
- (ChromiumAndroidDriver._setup_test): Original contents of ChromiumAndroidPort.setup_test_run().
- (ChromiumAndroidDriver._push_executable): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._push_fonts): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._push_test_resources): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._synchronize_datetime): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._run_adb_command): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._teardown_performance): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver._get_crash_log): Moved from ChromiumAndroidPort.
- (ChromiumAndroidDriver.cmd_line):
- (ChromiumAndroidDriver._file_exists_on_device):
- (ChromiumAndroidDriver._remove_all_pipes):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver._start_once):
- (ChromiumAndroidDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (MockRunCommand):
- (MockRunCommand.__init__):
- (MockRunCommand.mock_run_command_fn):
- (MockRunCommand.mock_no_device):
- (MockRunCommand.mock_one_device):
- (MockRunCommand.mock_two_devices):
- (MockRunCommand.mock_no_tombstone_dir):
- (MockRunCommand.mock_no_tombstone_file):
- (MockRunCommand.mock_ten_tombstones):
- (MockRunCommand.mock_logcat):
- (ChromiumAndroidPortTest):
- (ChromiumAndroidPortTest.make_port):
- (ChromiumAndroidPortTest.test_driver_cmd_line):
- (ChromiumAndroidPortTest.test_get_devices_no_device):
- (ChromiumAndroidPortTest.test_get_devices_one_device):
- (ChromiumAndroidPortTest.test_get_devices_two_devices):
- (ChromiumAndroidPortTest.test_get_device_serial_no_device):
- (ChromiumAndroidPortTest.test_get_device_serial_one_device):
- (ChromiumAndroidPortTest.test_get_device_serial_two_devices):
- (ChromiumAndroidDriverTest):
- (ChromiumAndroidDriverTest.setUp):
- (ChromiumAndroidDriverTest.test_get_last_stacktrace):
- (ChromiumAndroidDriverTest.test_get_crash_log):
- (ChromiumAndroidDriverTest.test_cmd_line):
- (ChromiumAndroidDriverTwoDriversTest):
- (ChromiumAndroidDriverTwoDriversTest.test_two_drivers):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
- (Driver._get_crash_log): Added to allow subclasses to override.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args): Removed the --adb-args command-line parameter because now we select device automatically. Added --adb-device to specify devices.
-
-2012-08-02 Dinu Jacob <dinu.jacob@nokia.com>
-
- WebKitTestRunner needs layoutTestController.setUserStyleSheetEnabled
- https://bugs.webkit.org/show_bug.cgi?id=42679
-
- Reviewed by Eric Seidel.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl: Added
- setUserStyleSheetEnabled and setUserStyleSheetLocation.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::LayoutTestController): Initialize new members added.
- (WTR::LayoutTestController::setUserStyleSheetEnabled): Added.
- (WTR::LayoutTestController::setUserStyleSheetLocation): Added.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h: Added members
- userStyleSheetEnabled, and m_userStyleSheetLocation and methods
- setUserStyleSheetEnabled, and setUserStyleSheetLocation.
-
-2012-08-02 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: Fire speech start event at the same time as sound start event
- https://bugs.webkit.org/show_bug.cgi?id=92971
-
- Reviewed by Adam Barth.
-
- Update the MockWebSpeechRecognizer to not fire "speech started" events
- separately.
-
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- (MockWebSpeechRecognizer::start):
-
-2012-08-02 Philippe Normand <pnormand@igalia.com>
-
- [GTK] make sometimes using a single core
- https://bugs.webkit.org/show_bug.cgi?id=92998
-
- Reviewed by Martin Robinson.
-
- In the GTK 64-bit Release buildbot some builds use a single core
- for the make process. I suspect this is because in those cases
- nproc reports a single core available. The proposed solution is to
- always rely on all the cores available in the machine.
-
- * Scripts/webkitdirs.pm:
- (determineNumberOfCPUs):
-
-2012-08-02 Adam Barth <abarth@webkit.org>
-
- Re-land http://trac.webkit.org/changeset/94441 now that lforschler is ready.
-
- This patch enables testing on the mac-ews bots.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
-
-2012-08-02 Adam Barth <abarth@webkit.org>
-
- [Chromium] Merge final nits to DumpRenderTree.gyp for Android
- https://bugs.webkit.org/show_bug.cgi?id=90920
-
- Reviewed by Tony Chang.
-
- This patch contains the last few small changes to DumpRenderTree.gyp
- from the chromium-android branch. After this change, this file will be
- fully merged.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-08-02 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Toggle the type of ant compile for webkit_unit_tests and TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=92858
-
- Reviewed by Adam Barth.
-
- Now that the sdk_build variable is available, we can remove these two differences
- as well. This goes together with Adam's bug 90920.
-
- After this patch, the whole Tools/ directory will be unforked :-).
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-08-02 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- [Qt] MSVC specific buildfix for DRT.
- https://bugs.webkit.org/show_bug.cgi?id=92978
-
- Reviewed by Simon Hausmann.
-
- DumpRenderTree/qt subdirectory is missing from generated makefile under MSVC build, need to be added to the pro file.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2012-08-02 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [EFL][WK2] WTR is failing when X server is not running
- https://bugs.webkit.org/show_bug.cgi?id=92719
-
- Reviewed by Hajime Morita.
-
- EFL's WebKitTestRunner doesn't execute tests when X server is not running.
- This patch fixes the problem by checking environment variable before ecore x initialization.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.setup_environ_for_server):
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2012-08-01 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION(r123893): Reftest mismatches are run through ImageDiff with 0.1 tolerance
- https://bugs.webkit.org/show_bug.cgi?id=92847
-
- Reviewed by Ojan Vafai.
-
- I was failing to distinguish between 'None' and 0 :(. Fixed and added tests.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.diff_image):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_diff_image.make_proc):
- (PortTestCase.test_diff_image):
-
-2012-08-01 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: clean up handling of tests to skip
- https://bugs.webkit.org/show_bug.cgi?id=92909
-
- Reviewed by Ryosuke Niwa.
-
- This change moves the handling of tests to skip into main.py
- where it is at least slightly more findable and generic.
-
- Also fix a couple of lint nits.
-
- * Scripts/webkitpy/test/finder.py:
- (Finder.__init__):
- (Finder.skip):
- (Finder._default_names):
- * Scripts/webkitpy/test/main.py:
- (main):
- (Tester.skip):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_no_tests_found):
- * Scripts/webkitpy/test/runner_unittest.py:
-
-2012-08-01 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: remove --skip-integrationtests flag
- https://bugs.webkit.org/show_bug.cgi?id=92907
-
- Reviewed by Ryosuke Niwa.
-
- This flag is no longer used since the tests complete quickly.
-
- Also clean up the unused skip_if_parallel arg in finder, and
- make a couple of lint fixes.
-
- * Scripts/webkitpy/test/finder.py:
- (Finder.find_names):
- (Finder._default_names):
- * Scripts/webkitpy/test/finder_unittest.py:
- (FinderTest.check_names):
- (FinderTest.test_default_names):
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester.run):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_no_tests_found):
-
-2012-08-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Generalize SheriffIRCBot to prepare for PerfBot
- https://bugs.webkit.org/show_bug.cgi?id=92912
-
- Reviewed by Adam Barth.
-
- Renamed SheriffIRCBot to IRCBot and generalized to support non-sheriffbot IRC bot in the future.
- This will be useful when I add an experimental perf EWS IRC bot.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Whois.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest):
- * Scripts/webkitpy/tool/bot/ircbot.py: Moved from Tools/Scripts/webkitpy/tool/bot/sheriffircbot.py.
- (Eliza): Moved from irc_command.
- (Eliza.__init__):
- (Eliza.execute):
- (IRCBot):
- (IRCBot.__init__):
- (IRCBot.irc_delegate):
- (IRCBot._parse_command_and_args):
- (IRCBot.process_message):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py: Moved from Tools/Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py.
- (run):
- (IRCBotTest):
- (IRCBotTest.test_eliza): Moved from IRCCommandTest.
- (IRCBotTest.test_parse_command_and_args):
- (IRCBotTest.test_exception_during_command):
- * Scripts/webkitpy/tool/bot/sheriffircbot.py: Removed.
- * Scripts/webkitpy/tool/bot/sheriffircbot_unittest.py: Removed.
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- (SheriffBot.begin_work_queue):
- * Scripts/webkitpy/webkitpy.pyproj:
-
-2012-08-01 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: reenable the test for --verbose working in child processes
- https://bugs.webkit.org/show_bug.cgi?id=92894
-
- Reviewed by Ryosuke Niwa.
-
- This change rewrites the test to not use outputcapture, meaning
- that the MockHost can propagate to Worker properly and things
- work again :).
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_verbose_in_child_processes):
-
-2012-08-01 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests --build-directory doesn't work
- https://bugs.webkit.org/show_bug.cgi?id=92051
-
- Reviewed by Dirk Pranke.
-
- The bug was caused by not prepending build_directory even when one is defined.
- Fixed that.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._build_path):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_build_path):
-
-2012-08-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123865.
- http://trac.webkit.org/changeset/123865
- https://bugs.webkit.org/show_bug.cgi?id=92891
-
- This patch is causing the style-queue to fall behind
- (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractReviewQueue.begin_work_queue):
- (StyleQueue.__init__):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
-
-2012-08-01 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests throws an exception when the output json is malformed
- https://bugs.webkit.org/show_bug.cgi?id=92887
-
- Reviewed by Dirk Pranke.
-
- Catch exceptions and gracefully fail. Also split _generate_json into smaller methods.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_output): Extracted from _generate_json.
- (PerfTestsRunner._merge_source_json): Ditto; catch all exceptions since they are too many
- exceptions to consder here.
- (PerfTestsRunner._merge_outputs): Ditto.
- (PerfTestsRunner._generate_output_files): Extracted from _generate_json.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (_test_run_with_json_output): Don't assert logs when we except an non-zero exit code.
- (create_runner_and_setup_results_template): Extracted from test_run_generates_results_page.
- (test_run_generates_results_page):
- (test_run_with_bad_output_json): Added.
- (test_run_with_bad_json_source): Added.
- (test_run_with_upload_json):
-
-2012-08-01 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Regression(r124135): nrwt: --verbose logging does not work right on windows
- https://bugs.webkit.org/show_bug.cgi?id=92845
-
- Reviewed by Dirk Pranke.
-
- Disabled the failing test. The Workers spawned by this test are using Host()
- instead of MockHost() and trying to access the real filesystem instead of the
- MockFilesytem.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.disabled_test_verbose):
-
-2012-08-01 Arnaud Renevier <a.renevier@sisa.samsung.com>
-
- keyring.get_password may raise an exception.
- https://bugs.webkit.org/show_bug.cgi?id=92876
-
- Reviewed by Dirk Pranke.
-
- keyring.get_password sometimes raises an exception. We wrap this call,
- and also set_password to avoid breaking webkit-patch in that case.
-
- * Scripts/webkitpy/common/net/credentials.py:
- (Credentials._offer_to_store_credentials_in_keyring):
- (Credentials.read_credentials):
-
-2012-08-01 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Layout Test fast/text/descent-clip-in-scaled-page.html is failing on linux since it was added
- https://bugs.webkit.org/show_bug.cgi?id=91386
-
- Reviewed by Tony Chang.
-
- Added font mapping from SubpixelPositioningAhem to Ahem on Linux and Android
- (used in layout test fast/text/descent-clip-in-scaled-page.html).
- Added font mapping from SubpixelPositioning to Times New Roman on Android to match Linux
- (used in platform/chromium-linux/fast/text/chromium-linux-text-subpixel-positioning.html)
-
- * DumpRenderTree/chromium/android_main_fonts.xml:
- * DumpRenderTree/chromium/fonts.conf:
-
-2012-08-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r124325.
- http://trac.webkit.org/changeset/124325
- https://bugs.webkit.org/show_bug.cgi?id=92865
-
- broke android build (Requested by mnaganov on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-08-01 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Dump a backtrace in case of a crash on the UIProcess
- https://bugs.webkit.org/show_bug.cgi?id=92843
-
- Reviewed by Csaba Osztrogonác.
-
- We are already dumping the backtraces when automated tests are
- crashing, but only for the WebProcess. This patch adds the same
- hooks for the UIProcess.
-
- * TestWebKitAPI/efl/main.cpp:
- (main):
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2012-08-01 Adam Barth <abarth@webkit.org>
-
- [Chromium] Merge final nits to DumpRenderTree.gyp for Android
- https://bugs.webkit.org/show_bug.cgi?id=90920
-
- Reviewed by Tony Chang.
-
- This patch contains the last few small changes to DumpRenderTree.gyp
- from the chromium-android branch. After this change, this file will be
- fully merged.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-08-01 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] ImageDiff should use float division instead of integer
- https://bugs.webkit.org/show_bug.cgi?id=92859
-
- Reviewed by Zoltan Herczeg.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2012-08-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r124313.
- http://trac.webkit.org/changeset/124313
- https://bugs.webkit.org/show_bug.cgi?id=92855
-
- Compilation failed on Chromium ports (Requested by yosin on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeCommon.cpp: Removed.
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams):
- (TestParams::TestParams):
- (TestShell):
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (parseCommandLineOptions):
- (getFinalTestURL):
- (getExpectedPixelHash):
- (runTest):
- (shouldDumpPixelsAndCompareWithExpected):
- (main):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGlobalsFromCommandLineOptions):
- (dump):
- (runTest):
- (main):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (dumpRenderTree):
- (dump):
- (runTest):
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (runTest):
- (dllLauncherEntryPoint):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/wscript:
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (dump):
- (runTest):
- (MyApp::OnInit):
- * GNUmakefile.am:
- * Scripts/old-run-webkit-tests:
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.supports_switching_pixel_tests_per_test):
- (Port):
- (Port._supports_switching_pixel_tests_per_test):
- (Port.should_run_as_pixel_test):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line):
- (Driver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._supports_switching_pixel_tests_per_test):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.supports_switching_pixel_tests_per_test):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-08-01 Balazs Kelemen <kbalazs@webkit.org>
-
- All ports should support per test switching of pixel testing
- https://bugs.webkit.org/show_bug.cgi?id=92398
-
- Reviewed by Dirk Pranke.
-
- Teach all test drivers to accept a per test control of whether
- to dump pixels. Drivers now accept a -p/--pixel-test argument
- on the standart input that means that running the current
- test as pixel test is allowed (even if the expected hash is
- missing). Removed the --pixel-tests command line option since
- there is no need for it anymore.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.h:
- (TestCommand::TestCommand):
- (TestCommand):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/DumpRenderTreeCommon.cpp: Added.
- (CommandTokenizer):
- (CommandTokenizer::CommandTokenizer):
- (CommandTokenizer::pump):
- (CommandTokenizer::next):
- (CommandTokenizer::hasNext):
- (die):
- (parseInputLine):
- Common logic to parse the input line from the standard input (or from the command line
- in standalone mode). Made it somewhat general so we can easily add more arguments if
- there is a need.
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (runTest):
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::runFileTest):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams::TestParams):
- (TestShell):
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (parseCommandLineOptions):
- (runTest):
- (shouldDumpPixelsAndCompareWithExpected):
- (main):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGlobalsFromCommandLineOptions):
- (dump):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (dumpRenderTree):
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
- (runTest):
- (dllLauncherEntryPoint):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/wscript:
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (dump):
- (runTest):
- (MyApp::OnInit):
- * Scripts/old-run-webkit-tests: Pass --pixel-test before the hash.
- Changed the separator form ' to : because it don't need to be escaped
- when passing manually on the comand line.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.should_run_as_pixel_test): Removed now that all ports supports it.
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line): Don't pass --pixel-tests anymore.
- (Driver._command_from_driver_input):
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestCommand::TestCommand):
- (TestCommand):
- (WTR):
- (CommandTokenizer):
- (WTR::CommandTokenizer::CommandTokenizer):
- (WTR::CommandTokenizer::pump):
- (WTR::CommandTokenizer::next):
- (WTR::CommandTokenizer::hasNext):
- (WTR::die):
- (WTR::parseInputLine):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
- Duplicate the logic for parsing the command line because
- unfortunately there is no way to share code between
- WebKitTestRunner and DumpRenderTree.
-
-2012-08-01 Martin Robinson <mrobinson@igalia.com>
-
- Add the jhbuild source directory to the __builtin__ object
-
- Reviewed by Philippe Normand.
-
- It seems that the jhbuild script explicitly looks for the SRCDIR __builtin__ when
- initializing. This is necessary for loading the jhbuild from the checkout directory.
-
- * jhbuild/jhbuildutils.py:
- (enter_jhbuild_environment_if_available): Set SRCDIR to the source directory.
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move actual test-running code into layout_test_runner.py
- https://bugs.webkit.org/show_bug.cgi?id=92806
-
- Reviewed by Ryosuke Niwa.
-
- This is the final patch in manager-refactoring series (for now).
- This moves all of the logic to actually run the tests into
- layout_test_runner (in a new LayoutTestRunner) class. Now
- the mechanics of actually executing all of the tests are
- contained in one file (of course the actual work of talking to
- DRT/WTR and diff'ing the results is still in single_test_runner).
-
- Now manager is left with setting up and tearing down the test
- environment, finding the tests to run, and processing the
- results of the tests, which is a pretty managable amount of code
- (no pun intended).
-
- The unit tests for manager were split in two and all of the
- runner-specific tests moved into layout_test_runner_unittest.
- They were significantly cleaned up to be easier to read and
- maintain as a part of this.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (TestRunInterruptedException):
- (TestRunInterruptedException.__init__):
- (TestRunInterruptedException.__reduce__):
- (LayoutTestRunner):
- (LayoutTestRunner.__init__):
- (LayoutTestRunner.test_key):
- (LayoutTestRunner.run_tests):
- (LayoutTestRunner.run_tests.worker_factory):
- (LayoutTestRunner.run_tests.instead):
- (LayoutTestRunner._mark_interrupted_tests_as_skipped):
- (LayoutTestRunner._interrupt_if_at_failure_limits):
- (LayoutTestRunner._interrupt_if_at_failure_limits.interrupt_if_at_failure_limit):
- (LayoutTestRunner._update_summary_with_result):
- (LayoutTestRunner.start_servers_with_lock):
- (LayoutTestRunner.stop_servers_with_lock):
- (LayoutTestRunner.handle):
- (LayoutTestRunner._handle_started_test):
- (LayoutTestRunner._handle_finished_test_list):
- (LayoutTestRunner._handle_finished_test_list.find):
- (LayoutTestRunner._handle_finished_test):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (FakePrinter):
- (FakePrinter.print_workers_and_shards):
- (FakePrinter.print_finished_test):
- (FakePrinter.write):
- (FakePrinter.write_update):
- (FakePrinter.flush):
- (LockCheckingRunner):
- (LockCheckingRunner.__init__):
- (LockCheckingRunner.handle_finished_list):
- (LayoutTestRunnerTests):
- (LayoutTestRunnerTests._runner):
- (LayoutTestRunnerTests._result_summary):
- (LayoutTestRunnerTests._run_tests):
- (LayoutTestRunnerTests.test_http_locking):
- (LayoutTestRunnerTests.test_perf_locking):
- (LayoutTestRunnerTests.test_interrupt_if_at_failure_limits):
- (LayoutTestRunnerTests.test_update_summary_with_result):
- (LayoutTestRunnerTests.test_servers_started):
- (LayoutTestRunnerTests.test_servers_started.start_http_server):
- (LayoutTestRunnerTests.test_servers_started.start_websocket_server):
- (LayoutTestRunnerTests.test_servers_started.stop_http_server):
- (LayoutTestRunnerTests.test_servers_started.stop_websocket_server):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- (Manager.__init__):
- (Manager._is_http_test):
- (Manager):
- (Manager._is_websocket_test):
- (Manager._websocket_tests):
- (Manager._prepare_lists):
- (Manager._is_ref_test):
- (Manager.run):
- (Manager._run_tests):
- (Manager._look_for_new_crash_logs):
- (Manager._show_results_html_file):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_look_for_new_crash_logs):
- (ResultSummaryTest.summarized_results):
- (ResultSummaryTest.test_summarized_results_wontfix):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move sharding logic into layout_test_runner.py
- https://bugs.webkit.org/show_bug.cgi?id=92805
-
- Reviewed by Ryosuke Niwa.
-
- The sharding logic is specific to how we actually run the tests,
- so it belongs in this file instead of manager.py or finder.py.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (Worker._run_single_test):
- (TestShard):
- (TestShard.__init__):
- (TestShard.__repr__):
- (TestShard.__eq__):
- (Sharder):
- (Sharder.__init__):
- (Sharder.shard_tests):
- (Sharder.shard_tests.or):
- (Sharder._shard_in_two):
- (Sharder._shard_every_file):
- (Sharder._shard_by_directory):
- (Sharder._resize_shards):
- (Sharder._resize_shards.divide_and_round_up):
- (Sharder._resize_shards.extract_and_flatten):
- (Sharder._resize_shards.split_at):
- (Sharder._dir_for_test_input):
- (Sharder.test_key):
- (Sharder.natural_sort_key):
- (Sharder.natural_sort_key.tryint):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py: Added.
- (SharderTests):
- (SharderTests.get_test_input):
- (SharderTests.get_shards):
- (SharderTests.get_shards.split):
- (SharderTests.assert_shards):
- (SharderTests.test_shard_by_dir):
- (SharderTests.test_shard_by_dir_sharding_ref_tests):
- (SharderTests.test_shard_every_file):
- (SharderTests.test_shard_in_two):
- (SharderTests.test_shard_in_two_sharding_ref_tests):
- (SharderTests.test_shard_in_two_has_no_locked_shards):
- (SharderTests.test_shard_in_two_has_no_unlocked_shards):
- (SharderTests.test_multiple_locked_shards):
- (NaturalCompareTest):
- (NaturalCompareTest.assert_cmp):
- (NaturalCompareTest.test_natural_compare):
- (KeyCompareTest):
- (KeyCompareTest.setUp):
- (KeyCompareTest.setUp.split):
- (KeyCompareTest.assert_cmp):
- (KeyCompareTest.test_test_key):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager._prepare_lists):
- (Manager._is_ref_test):
- (Manager._run_tests):
- (Manager._handle_finished_test):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.get_options):
- (ManagerTest.test_interrupt_if_at_failure_limits):
- (ManagerTest.test_update_summary_with_result):
- (ManagerTest.test_needs_servers.get_manager_with_tests):
- (ManagerTest.integration_test_needs_servers.get_manager_with_tests):
- (ManagerTest.test_look_for_new_crash_logs.get_manager_with_tests):
- (ManagerTest.test_servers_started):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: rename worker.py to layout_test_runner.py
- https://bugs.webkit.org/show_bug.cgi?id=92804
-
- Reviewed by Ojan Vafai.
-
- Home stretch of this round of manager refactoring ... I will be
- moving all of the actual test-running code (which includes the
- code that shards the tests for the workers) into a different
- module, and it makes sense for that module to contain the actual
- worker code, so I'm renaming worker.py to layout_test_runner.py.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py: Renamed from Tools/Scripts/webkitpy/layout_tests/controllers/worker.py.
- (Worker):
- (Worker.__init__):
- (Worker.__del__):
- (Worker.start):
- (Worker.handle):
- (Worker._update_test_input):
- (Worker._run_test):
- (Worker.stop):
- (Worker._timeout):
- (Worker._kill_driver):
- (Worker._run_test_with_timeout):
- (Worker._clean_up_after_test):
- (Worker._run_test_in_another_thread):
- (Worker._run_test_in_another_thread.SingleTestThread):
- (Worker._run_test_in_another_thread.SingleTestThread.__init__):
- (Worker._run_test_in_another_thread.SingleTestThread.run):
- (Worker._run_test_in_this_thread):
- (Worker._run_single_test):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests.worker_factory):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up names in sharding code
- https://bugs.webkit.org/show_bug.cgi?id=92785
-
- Reviewed by Ryosuke Niwa.
-
- More refactoring ... this makes the methods use TestInputs
- consistently (and updates the names accordingly) and improves
- encapsulation a bit. The sharding code is now pretty
- self-contained.
-
- This change adds no new functionality and is covered by the
- existing (updated) tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (TestShard.visible.__init__):
- (TestShard.visible.__repr__):
- (Manager._dir_for_test_input):
- (Manager._shard_tests):
- (Manager._shard_in_two):
- (Manager._shard_every_file):
- (Manager._shard_by_directory):
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerWrapper._test_input_for_file):
- (ShardingTests.get_shards):
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput.__init__):
- (TestInput.__repr__):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up TestInputs in preparation for cleaning up sharding
- https://bugs.webkit.org/show_bug.cgi?id=92784
-
- Reviewed by Ryosuke Niwa.
-
- Currently, in order to shard the tests you need to refer to
- state in the manager as well as the state in the TestInputs;
- this change embeds the necessary state into the TestInputs so
- sharding them can be a standalone operation.
-
- The actual clean up of the sharding will follow in a subsequent patch.
-
- Covered by existing tests; no new functionality. However, I did
- rework the sharding tests to be less dependent on the test
- scaffolding and easier to follow.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._test_input_for_file):
- (Manager._shard_in_two):
- (Manager._shard_every_file):
- (Manager._shard_by_directory):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerWrapper._test_input_for_file):
- (ShardingTests.assert_shards):
- (ShardingTests.test_shard_by_dir):
- (ShardingTests.test_shard_by_dir_sharding_ref_tests):
- (ShardingTests.test_shard_every_file):
- (ShardingTests.test_shard_in_two):
- (ShardingTests.test_shard_in_two_sharding_ref_tests):
- (ShardingTests.test_shard_in_two_has_no_unlocked_shards):
- (ShardingTests.test_multiple_locked_shards):
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- (TestInput.__init__):
- (TestInput.__repr__):
-
-2012-07-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Dump a backtrace in case of a crash
- https://bugs.webkit.org/show_bug.cgi?id=92489
-
- Reviewed by Csaba Osztrogonác.
-
- Dump a stack trace in case of a unexpected signal. This should
- provide a better report at the build bots when WTR crashes.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (main):
- * TestWebKitAPI/efl/InjectedBundleController.cpp:
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-07-31 Joshua Netterfield <jnetterfield@rim.com>
-
- [BlackBerry] Enable CSS Filter Effects
- https://bugs.webkit.org/show_bug.cgi?id=92685
-
- Reviewed by Rob Buis.
-
- Enable CSS filter effects, with the exception of custom effects (CSS shaders) and reference effects (SVG effects)
-
- Internally reviewed by Arvid Nilsson <anilsson@rim.com> and Antonio Gomes <agomes@rim.com>.
-
- * Scripts/webkitperl/FeatureList.pm: Acknowledge CSS filter effects.
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up prepare_lists_and_print_output, run, set_up_run a bit
- https://bugs.webkit.org/show_bug.cgi?id=92781
-
- Reviewed by Ryosuke Niwa.
-
- More refactoring ... rename prepare_lists_and_print_output to
- just prepare_lists so that it only has a single purpose, and
- clean up the surrounding code a bit as well.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._collect_tests):
- (Manager._prepare_lists):
- (Manager._set_up_run):
- (Manager.run):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up self._test_files_list vs. self._test_files, other nits
- https://bugs.webkit.org/show_bug.cgi?id=92702
-
- Reviewed by Ojan Vafai.
-
- Get rid of self._test_files, rename self._test_files_list to
- self._test_names (removing the confusion between the two fields).
-
- Also inline the one call to _parse_expectations, remove the one
- use of more_tests_to_skip, and fix a couple of minor nits.
-
- * Scripts/webkitpy/layout_tests/controllers/finder.py:
- (LayoutTestFinder.split_into_chunks):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager._collect_tests):
- (Manager._http_tests):
- (Manager._websocket_tests):
- (Manager._is_perf_test):
- (Manager.prepare_lists_and_print_output):
- (Manager.needs_servers):
- (Manager.run):
- (Manager._mark_interrupted_tests_as_skipped):
- (Manager._update_summary_with_result):
- (Manager._upload_json_files):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_interrupt_if_at_failure_limits):
- (ManagerTest.test_needs_servers.get_manager_with_tests):
- (ManagerTest.test_servers_started):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --verbose logging does not work right on windows
- https://bugs.webkit.org/show_bug.cgi?id=92673
-
- Reviewed by Ojan Vafai.
-
- Add a test for r124090.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_verbose):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION(124116): Number of skipped tests isn't printed anymore
- https://bugs.webkit.org/show_bug.cgi?id=92736
-
- Reviewed by Tony Chang.
-
- Add the skipped number back in; it was useful ... also clean up
- the formatting a little bit.
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_found):
-
-2012-07-31 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: Throw exception for start() when already started
- https://bugs.webkit.org/show_bug.cgi?id=92756
-
- Reviewed by Adam Barth.
-
- Fix the task queue in MockWebSpeechRecognizer.
- It's important that we remove the task from the queue before we run
- it, as running the task could alter the queue's state.
-
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- (MockWebSpeechRecognizer::abort):
- (MockWebSpeechRecognizer::setError):
- (MockWebSpeechRecognizer::clearTaskQueue):
- (MockWebSpeechRecognizer::StepTask::runIfValid):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- (MockWebSpeechRecognizer):
-
-2012-07-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move handling the initial list of tests to skip to finder
- https://bugs.webkit.org/show_bug.cgi?id=92701
-
- Reviewed by Ryosuke Niwa.
-
- More refactoring of manager ...
-
- * Scripts/webkitpy/layout_tests/controllers/finder.py:
- (LayoutTestFinder.skip_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._collect_tests):
- (Manager.prepare_lists_and_print_output):
-
-2012-07-31 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] Kill the concept of secondary shared process
- https://bugs.webkit.org/show_bug.cgi?id=92676
-
- Reviewed by Sam Weinig.
-
- * MiniBrowser/win/BrowserView.cpp: (BrowserView::create): Update Windows build fix.
- Don't create a new context for every view.
-
-2012-07-31 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Don't use ninja for building Chromium for Android
- https://bugs.webkit.org/show_bug.cgi?id=92764
-
- Reviewed by Adam Barth.
-
- When Ninja projects files are generated (which will be done for Android),
- make sure that the Android builder doesn't unintentionally switch to
- using Ninja. We should make that switch at a predetermined time.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2012-07-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Add a mechanism to dump the stack trace in case of a crash
- https://bugs.webkit.org/show_bug.cgi?id=92666
-
- Reviewed by Csaba Osztrogonác.
-
- Move crash signal handlers to WTFInstallReportBacktraceOnCrashHook()
- and eliminate some duplicated code.
-
- * DumpRenderTree/qt/main.cpp:
- (main):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-07-31 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move EventSender into TestRunner.a
- https://bugs.webkit.org/show_bug.cgi?id=92277
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestRunner/EventSender.cpp: Renamed from Tools/DumpRenderTree/chromium/EventSender.cpp.
- * DumpRenderTree/chromium/TestRunner/EventSender.h: Renamed from Tools/DumpRenderTree/chromium/EventSender.h.
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::Internal::eventSender):
- (TestInterfaces::Internal):
- (TestInterfaces::Internal::Internal):
- (TestInterfaces::Internal::~Internal):
- (TestInterfaces::Internal::setWebView):
- (TestInterfaces::Internal::setDelegate):
- (TestInterfaces::Internal::bindTo):
- (TestInterfaces::Internal::resetAll):
- (TestInterfaces::eventSender):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::eventSender):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
-
-2012-07-31 Jochen Eisinger <jochen@chromium.org>
-
- Unreviewed. Update watchlist
-
- * Scripts/webkitpy/common/config/watchlist: Turned out to be less useful than I had hoped
-
-2012-07-31 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, update watchlist
-
- * Scripts/webkitpy/common/config/watchlist:
- - Improve "Forms" filename pattern.
- - tkent stops watching Chromium DRT. It was not so helpful.
-
-2012-07-31 Martin Robinson <mrobinson@igalia.com>
-
- [jhbuild] Also try to load jhbuild Python module from the source checkout
-
- Reviewed by Philippe Normand.
-
- JHBuild also seems to have an installation mode where it prefers to load its
- Python modules from the source checkout. This seems to be used particularly
- on the GTK+ 64-bit release bot. We should fall back to this mode.
-
- * jhbuild/jhbuildutils.py:
- (enter_jhbuild_environment_if_available): Use the source checkout if there
- is no installation path.
-
-2012-07-30 Ryosuke Niwa <rniwa@webkit.org>
-
- Revert r124153 and land the "right" build fix per ap's comment on the bug 92676.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2012-07-30 Sam Weinig <sam@webkit.org>
-
- Rename WebKit2.h to WebKit2_C.h
- https://bugs.webkit.org/show_bug.cgi?id=92704
-
- Reviewed by Dan Bernstein.
-
- * MiniBrowser/mac/MiniBrowser_Prefix.pch:
- * MiniBrowser/win/BrowserView.h:
- * TestWebKitAPI/config.h:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/WebKitTestRunnerPrefix.h:
- * WebKitTestRunner/config.h:
- Update for changed header file name.
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- chromium win compile broken after removing webkit.py
- https://bugs.webkit.org/show_bug.cgi?id=92549
-
- Reviewed by Ryosuke Niwa.
-
- Remove the stub file for webkit.py now that it's no longer
- necessary.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py: Removed.
-
-2012-07-30 Ryosuke Niwa <rniwa@webkit.org>
-
- Windows build fix attempt after r124092.
-
- * MiniBrowser/win/BrowserView.cpp:
- (BrowserView::create):
-
-2012-07-30 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove erroneously committed debugging print call from a test.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_generates_results_page):
-
-2012-07-30 Arnaud Renevier <a.renevier@sisa.samsung.com>
-
- webkit-patch: system keyring is not used to read my password
- https://bugs.webkit.org/show_bug.cgi?id=92532
-
- Reviewed by Dirk Pranke.
-
- In case no username can be fetched from environment, git or keychain,
- prompt for username, and try to get password from keyring associated
- with that username.
-
- * Scripts/webkitpy/common/net/credentials.py:
- (Credentials.read_credentials):
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- (test_keyring_without_git_repo_nor_keychain):
- (test_keyring_without_git_repo_nor_keychain.MockKeyring):
- (test_keyring_without_git_repo_nor_keychain.MockKeyring.get_password):
- (test_keyring_without_git_repo_nor_keychain.FakeCredentials):
- (test_keyring_without_git_repo_nor_keychain.FakeCredentials._credentials_from_keychain):
- (test_keyring_without_git_repo_nor_keychain.FakeCredentials._credentials_from_environment):
- (test_keyring_without_git_repo_nor_keychain.FakeUser):
- (test_keyring_without_git_repo_nor_keychain.FakeUser.prompt):
- (test_keyring_without_git_repo_nor_keychain.FakeUser.prompt_password):
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move the code that identifies the chunk of tests to run into finder
- https://bugs.webkit.org/show_bug.cgi?id=92694
-
- Reviewed by Ryosuke Niwa.
-
- Another patch to make manager.py smaller and clearer; this patch moves
- the handling of breaking the list of tests into chunks (--run-part,
- --run-chunk) from manager.py to finder.py.
-
- There are no functional changes and this is covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/finder.py:
- (Finder.__init__):
- (Finder._read_test_files):
- (Finder):
- (Finder.split_into_chunks_if_necessary):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager._collect_tests):
- (Manager._parse_expectations):
- (Manager.prepare_lists_and_print_output):
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: split test-finding code out from manager.py
- https://bugs.webkit.org/show_bug.cgi?id=92693
-
- Reviewed by Ryosuke Niwa.
-
- In the interest of making manager.py smaller, this patch moves
- the code that actually takes the command line arguments and
- --test-file lists of tests to run and expands them into an
- actual list of tests out into a separate module.
-
- * Scripts/webkitpy/layout_tests/controllers/finder.py: Added.
- (LayoutTestFinder):
- (LayoutTestFinder.__init__):
- (LayoutTestFinder.find_tests):
- (LayoutTestFinder._strip_test_dir_prefixes):
- (LayoutTestFinder._strip_test_dir_prefix):
- (LayoutTestFinder._read_test_names_from_file):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._collect_tests):
- (Manager._handle_finished_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (strip_comments):
-
-2012-07-30 Adam Barth <abarth@webkit.org>
-
- commit-queue is corrupting ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=92681
-
- Reviewed by Tony Chang.
-
- Some commits made with the commit-queue are ending up with duplicate
- ChangeLog entries. I've hot-patched the servers to not use a special
- merge driver for ChangeLogs, which should fix this issue. This patch
- removes the merge driver from our cold-boot.sh script so that we won't
- use it on new commit-queue instances.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-28 Sam Weinig <sam@webkit.org>
-
- Add ability to load from a string to the ObjC WK API
- https://bugs.webkit.org/show_bug.cgi?id=92590
-
- Reviewed by Dan Bernstein.
-
- Add tests for [WKBrowsingContextController loadHTMLString:baseURL:]. We will be able
- to greatly improve these tests (to test more than just not crashing) when methods to
- access page content are added (soon!).
-
- Adds:
- Test: WKBrowsingContextLoadDelegateTest_SimpleLoadOfHTMLString
- Test: WKBrowsingContextLoadDelegateTest_SimpleLoadOfHTMLString_NilBaseURL
- Test: WKBrowsingContextLoadDelegateTest_SimpleLoadOfHTMLString_NilHTMLStringAndBaseURL
-
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm:
- Adds tests and refactors delegates to not use global state.
-
-2012-07-30 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [CMake] TestWebKitAPI bundle should link with WTF
- https://bugs.webkit.org/show_bug.cgi?id=92616
-
- Reviewed by Antonio Gomes.
-
- Fixes build when shared core is disabled.
-
- * TestWebKitAPI/CMakeLists.txt:
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up handling of 'expected' stats
- https://bugs.webkit.org/show_bug.cgi?id=92527
-
- Reviewed by Tony Chang.
-
- This patch alters the way we compute and log the "expected"
- results and how we treat skipped tests; we will now log the
- number of skipped tests separately from the categories, e.g.:
-
- Found 31607 tests; running 24464.
- Expect: 23496 passes (23496 now, 0 wontfix)
- Expect: 548 failures ( 543 now, 5 wontfix)
- Expect: 420 flaky ( 245 now, 175 wontfix)
-
- (so that the "expect" totals add up to the "running" totals);
- in addition, the totals in the one-line-progress reflect the
- number of tests we will actually run. If --iterations or
- --repeat-each are specified, the number of tests we run are
- multiplied as appropriate, but the "expect" numbers are
- unchanged, since we don't count multiple invocations of the same
- test multiple times. In addition, if we are using --run-part or
- --run-chunk, the tests we don't run are treated as skipped
- for consistency. We will also log the values for --iterations
- and --repeat each as part of the found/running line.
-
- Previously the code had parsed and re-parsed the
- TestExpectations files several times in an attempt to come up
- with some sane statistics, but this was expensive and lead to
- confusing layer; treating files as skipped in the way described
- above is more consistent and cleaner.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._split_into_chunks_if_necessary):
- (Manager.prepare_lists_and_print_output):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_interrupt_if_at_failure_limits):
- (ManagerTest.test_update_summary_with_result):
- (ManagerTest.test_look_for_new_crash_logs):
- (ResultSummaryTest.get_result_summary):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser.expectation_for_skipped_test):
- (TestExpectations.__init__):
- (TestExpectations.add_skipped_tests):
- Here we make add_skipped_tests() public, so that we can update
- the expectations for tests that we are skipping due to
- --run-part or --run-chunk; we use the wontfix flag so that
- the tests that are intentionally skipped aren't considered
- "fixable".
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (SkippedTests.check):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_found):
- (Printer):
- (Printer.print_expected):
- (Printer._print_result_summary):
- (Printer._print_result_summary_entry):
- Here we split out printing the number of tests found and run
- from the expected results, to be clearer and so that we don't
- have to reparse the expectations to update the stats.
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_result_summary):
-
-2012-07-30 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- Propagate gesture events to plugins.
- https://bugs.webkit.org/show_bug.cgi?id=92281
-
- Reviewed by Adam Barth.
-
- Update TestWebPlugin to receive events, and output logs for the events.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleInputEvent):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin::acceptsInputEvents):
- (TestWebPlugin):
-
-2012-07-30 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [jhbuild] gnutls 2.12.14 does not build with glibc 2.16.0
- https://bugs.webkit.org/show_bug.cgi?id=90643
-
- Reviewed by Gustavo Noronha Silva.
-
- The 2.x series of gnutls has a version of Gnulib that is
- incompatible with glibc 2.16.0, which now does not define gets()
- by default.
-
- After talking to kov, mrobinson and philn, it looks like it makes
- sense to simply remove gnutls from jhbuild.modules and rely on the
- version installed on the system being recent enough.
-
- This means at least version 2.12.8 for PKCS11 support, or at the
- very least 2.11.0 (these are the minimum versions enforced by
- glib-networking's configure.ac).
-
- * efl/jhbuild.modules: Do not build gnutls anymore, make
- glib-networking depend on glib instead, and move the libgcrypt
- dependency to eet, which is what currently needs it.
- * gtk/jhbuild.modules: Do not build gnutls anymore.
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: --verbose logging does not work right on windows
- https://bugs.webkit.org/show_bug.cgi?id=92673
-
- Unreviewed, build fix.
-
- The --verbose log level is not being propagated to the worker
- processes on windows properly; this has been broken ever since I
- refactored logging into the message pool directly :(.
-
- Also, fixing this revealed that outputcapture wasn't saving and
- restoring log levels correctly, so I had to fix that as well.
-
- * Scripts/webkitpy/common/message_pool.py:
- (_MessagePool._start_workers):
- (_MessagePool._worker_log_level):
- (_Worker.__init__):
- (_Worker._set_up_logging):
- (_WorkerLogHandler.__init__):
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.capture_output):
- (OutputCapture.restore_output):
-
-2012-07-30 Dirk Pranke <dpranke@chromium.org>
-
- After r123895, new-run-webkit-tests can fail with TypeError when a test crashes
- https://bugs.webkit.org/show_bug.cgi?id=92664
-
- Reviewed by Michael Saboff.
-
- Updated to handle crash_logs being returned as a tuple of (stderr, crash_log).
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.look_for_new_crash_logs):
-
-2012-07-30 Stephen White <senorblanco@chromium.org>
-
- Added a SkiaGraphics definition to the watchlist file; cc'ed myself
- to that group. Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-07-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123966 and r123967.
- http://trac.webkit.org/changeset/123966
- http://trac.webkit.org/changeset/123967
- https://bugs.webkit.org/show_bug.cgi?id=92656
-
- This patch is causing assertion failures on the debug bot
- (also rolling out a dependent patch) (Requested by mrobinson
- on #webkit).
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options):
-
-2012-07-30 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add a non-subprocess jhbuild environment and use it for run-gtk-tests
- https://bugs.webkit.org/show_bug.cgi?id=92626
-
- Reviewed by Gustavo Noronha Silva.
-
- Instead of always shelling out to enter a jhbuild environment, add a Python
- hook for entering a jhbuild environment directly. This avoids requiring a
- script to be wrapped in jhbuild.
-
- * GNUmakefile.am: Remove gtk/run-api-tests from the distribution list.
- * Scripts/run-gtk-tests: Move most of the logic from run-api-tests here
- with additional code for entering a jhbuild environment directly.
- * gtk/run-api-tests: Removed.
- * jhbuild/jhbuild-wrapper: Use the new helper methods defined in jhbuildutils.py.
- * jhbuild/jhbuildutils.py: Add some new helper methods here including
- a method which can transform the current environment into a jhbuild-ified one.
-
-2012-07-30 Alexander Pavlov <apavlov@chromium.org>
-
- Unreviewed, upgrade apavlov to reviewer.
- http://lists.webkit.org/mailman/private/webkit-committers/2012-July/000184.html
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-30 Robin Cao <robin.cao@torchmobile.com.cn>
-
- [BlackBerry] Adapt to changes in the SharedArray platform API
- https://bugs.webkit.org/show_bug.cgi?id=92631
-
- Reviewed by Rob Buis.
-
- Adapt to changes in the SharedArray platform API. No behavioural change.
-
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::webHistoryItemCount):
-
-2012-07-30 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][NRWT] REGRESSION(123729): Forcing pixel tests with -p doesn't work
- https://bugs.webkit.org/show_bug.cgi?id=92627
-
- Reviewed by Noam Rosenthal.
-
- Remove the default behavior I added in r123729 so that we run all tests as pixel
- test with -p. It was intentional but it seems like we don't have consensus on
- that we want it.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._supports_switching_pixel_tests_per_test):
-
-2012-07-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WTR] Enforce SHIFT modifier to upper case keys in event sender.
- https://bugs.webkit.org/show_bug.cgi?id=92366
-
- Reviewed by Antonio Gomes.
-
- Add SHIFT modifier for capital letters as VK_
- codes do not distinguish between lows and caps and also to be consistent
- with other ports which send caps as lowercase letters with the shift key down.
-
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::EventSenderProxy::keyDown):
-
-2012-07-29 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL][jhbuild] Make run-with-jhbuild become the jhbuild process itself.
- https://bugs.webkit.org/show_bug.cgi?id=92592
-
- Reviewed by Eric Seidel.
-
- Adapt to the changes made to GTK+'s run-with-jhbuild in r123979
- and make EFL's run-with-jhbuild call os.execve() instead of
- launching a subprocess as well.
-
- This should make it possible to interrupt execution of jhbuild
- cleanly.
-
- * efl/run-with-jhbuild:
-
-2012-07-28 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests should generate a results page
- https://bugs.webkit.org/show_bug.cgi?id=92575
-
- Reviewed by Eric Seidel.
-
- Added the ability to generate a results page that summarizes performance test results from
- multiple runs of run-perf-tests when --output-json-path is specified and --test-results-server
- is not specified. We cannot generate a results page when --test-results-server is specified
- because perf-o-matic cannot parse the new JSON format.
-
- The new JSON format is simply an array of the old JSON output. This JSON is then merged into
- results-template.html along with jQuery and copied as a HTML file of the same filename as
- the output JSON file with a .html extension.
-
- We merge all scripts and the JSON output into the results page as opposed to including them
- with the src content attribute to make it standalone so that we may post it on Bugzilla or
- e-mail it to someone else without breaking it.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.run):
- (PerfTestsRunner._generate_json): Merge "contents" with the existing JSON file when generating
- a results page, and generate the results page from results-template.html merged with jQuery and
- the generated JSON output.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (_test_run_with_json_output): Extracted from test_run_with_upload_json to be shared with
- several test cases.
- (_test_run_with_json_output.mock_upload_json): Ditto.
- (test_run_with_json_output): Refactored to use _test_run_with_json_output.
- (test_run_generates_results_page): Added. Tests the new feature.
- (test_run_with_json_source): Refactored to use _test_run_with_json_output.
- (test_run_with_multiple_repositories): Ditto.
- (test_run_with_upload_json): Ditto.
-
-2012-07-29 Rik Cabanier <cabanier@adobe.com>
-
- Add ENABLE_CSS_COMPOSITING flag
- https://bugs.webkit.org/show_bug.cgi?id=92553
-
- Reviewed by Dirk Schulze.
-
- Adds compiler flag CSS_COMPOSITING to build systems to enable CSS blending and compositing. See spec https://dvcs.w3.org/hg/FXTF/rawfile/tip/compositing/index.html
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-29 Gustavo Noronha Silva <gns@gnome.org>
-
- Reviewed by Martin Robinson.
-
- Make the jhbuild wrapper scripts become the jhbuild process
- instead of starting it as a child. This should make it possible to
- interrupt execution of jhbuild cleanly.
-
- * gtk/run-with-jhbuild:
- * jhbuild/jhbuild-wrapper:
-
-2012-07-29 Mike West <mkwst@chromium.org>
-
- Extend `application/x-webkit-test-netscape` plugins to better support multiple frames.
- https://bugs.webkit.org/show_bug.cgi?id=92478
-
- Reviewed by Adam Barth.
-
- DumpRenderTree currently understands
- `<object src="data:application/x-webkit-test-netscape,alertwhenloaded">`.
- It would be useful if it understood `logifloaded`, which could give
- more context regarding test expectations, and can be written in such
- as way as to support plugins loaded into multiple iframes in a single
- test.
-
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_New):
- Adding support for `logifloaded`.
-
-2012-07-28 Peter Kasting <pkasting@google.com>
-
- Fix Chromium/Win compile.
- https://bugs.webkit.org/show_bug.cgi?id=88787
-
- Unreviewed, build fix.
-
- Chromium/Win needs _USE_MATH_DEFINES but doesn't define PLATFORM(WIN).
- The other files in WebKit that define this macro (both in
- WebCore/platform/graphics/cg) do it by unconditionally #defining it to 1
- above the #include of "config.h", so copy that pattern here.
-
- * TestWebKitAPI/Tests/WTF/MediaTime.cpp:
-
-2012-07-28 Mario Sanchez Prada <msanchez@igalia.com>
-
- [WK2][GTK] Implement a new spell checker API for WebKit2GTK+
- https://bugs.webkit.org/show_bug.cgi?id=90268
-
- Reviewed by Martin Robinson.
-
- Ignore WebKitTextChecker.* private files for gtk-doc.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options):
-
-2012-07-28 Philippe Normand <pnormand@igalia.com>
-
- [GTK] Transparent Media controls timeline and panel
- https://bugs.webkit.org/show_bug.cgi?id=85279
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: Provide gnome-themes-standard build
- support, this is necessary so the media controls panel colors are
- properly initialized from the GTK+ theme.
-
-2012-07-27 Kihong Kwon <kihong.kwon@samsung.com>
-
- [EFL] Support for HTML media capture
- https://bugs.webkit.org/show_bug.cgi?id=91842
-
- Reviewed by Ryosuke Niwa.
-
- Add HTML media capture feature to the feature list.
- In addition, enable that on the Efl port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- "webkit-patch rebaseline <test>" fails with exit_code 1
- https://bugs.webkit.org/show_bug.cgi?id=91560
-
- Reviewed by Adam Barth.
-
- webkit-patch rebaseline-json crashes in an svn checkout if it
- tries to add files and there are no files to add; arguably
- svn.add() should be robust against this, but rebaseline-json
- shouldn't be calling it, either. This patch fixes the latter and
- adds better debugging info to garden-o-matic so we can see what
- caused the crash.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand._rebaseline):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaselineall):
- (GardeningHTTPRequestHandler.rebaselineall.error_handler):
- (GardeningHTTPRequestHandler):
-
-2012-07-27 Brady Eidson <beidson@apple.com>
-
- Plugins should not be allowed to override standard properties/attributes in non-standard worlds
- <rdar://problem/11975252> and https://bugs.webkit.org/show_bug.cgi?id=92519
-
- Reviewed by Anders Carlsson.
-
- Add a test plugin which overrides all properties it is asked about:
- * DumpRenderTree/TestNetscapePlugIn/Tests/PluginScriptableObjectOverridesAllProperties.cpp: Added.
- (PluginScriptableObjectOverridesAllProperties):
- (PluginScriptableObjectOverridesAllProperties::PluginScriptableObjectOverridesAllProperties):
- (PluginObject):
- (PluginScriptableObjectOverridesAllProperties::PluginObject::PluginObject):
- (PluginScriptableObjectOverridesAllProperties::PluginObject::~PluginObject):
- (PluginScriptableObjectOverridesAllProperties::PluginObject::hasProperty):
- (PluginScriptableObjectOverridesAllProperties::PluginObject::getProperty):
- (PluginScriptableObjectOverridesAllProperties::NPP_GetValue):
-
- Expose NPN_MemAlloc to the test plugin:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_MemAlloc):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest):
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
-
-2012-07-27 Rafael Brandao <rafael.lobo@openbossa.org>
-
- "webkit-patch upload" should strip colors from patch if necessary
- https://bugs.webkit.org/show_bug.cgi?id=92306
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/git.py: Explicity remove colors from diff.
-
-2012-07-27 Eric Seidel <eric@webkit.org>
-
- clean-pending-commit throws exception when encountering Ossy
- https://bugs.webkit.org/show_bug.cgi?id=92534
-
- Reviewed by Adam Barth.
-
- Mark a couple strings as unicode so that reviewers with unicode names do not cause
- clean-pending-commit to barf.
-
- * Scripts/webkitpy/tool/commands/upload.py:
- (CleanPendingCommit._flags_to_clear_on_patch):
- (CleanPendingCommit.execute):
- (AssignToCommitter._assign_bug_to_last_patch_attacher):
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- chromium win compile broken after removing webkit.py
- https://bugs.webkit.org/show_bug.cgi?id=92549
-
- Unreviewed, build fix.
-
- It turns out that this file is listed in the chromium downstream
- 'browser_tests.isolate' file, and so deleting it broke gyp.
- Adding a stub file back in until we can remove the entry from
- the file.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py: Added.
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove 'webkit.py' and the 'WebKitPort'
- https://bugs.webkit.org/show_bug.cgi?id=92450
-
- Reviewed by Ryosuke Niwa.
-
- This patch finishes the work of merging WebKitPort into Port.
- Now Port is way too big :).
-
- This is all cutting and pasting; no new functionality and
- no changes in the tests.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort):
- (ApplePort.__init__):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_layout_tests):
- (Port):
- (Port._port_flag_for_scripts):
- (Port._arguments_for_configuration):
- (Port._run_script):
- (Port._build_driver):
- (Port._build_driver_flags):
- (Port._tests_for_other_platforms):
- (Port._runtime_feature_list):
- (Port.nm_command):
- (Port._modules_to_search_for_symbols):
- (Port._symbols_string):
- (Port._missing_feature_to_skipped_tests):
- (Port._missing_symbol_to_skipped_tests):
- (Port._has_test_in_directories):
- (Port._skipped_tests_for_unsupported_features):
- (Port._wk2_port_name):
- (Port._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_check_build):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort):
- (EflPort.__init__):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort):
- (GtkPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (TestWebKitPort):
- (TestWebKitPort.__init__):
- (TestWebKitPort.all_test_configurations):
- (TestWebKitPort._symbols_string):
- (TestWebKitPort._tests_for_other_platforms):
- (TestWebKitPort._tests_for_disabled_features):
- (PortTestCase):
- (PortTestCase.test_diff_image):
- (PortTestCase.test_path_to_test_expectations_file):
- (PortTestCase.test_skipped_directories_for_symbols):
- (test_skipped_directories_for_features):
- (test_skipped_directories_for_features_no_matching_tests_in_test_list):
- (test_skipped_tests_for_unsupported_features_empty_test_list):
- (test_skipped_layout_tests):
- (test_skipped_file_search_paths):
- (test_root_option):
- (test_test_expectations):
- (test_build_driver):
- (_assert_config_file_for_platform):
- (test_linux_distro_detection):
- (test_apache_config_file_name_for_platform):
- (test_path_to_apache_config_file):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.__init__):
- (QtPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/webkit.py: Removed.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Removed.
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- (get_test_baselines.AllPlatformsPort):
- (get_test_baselines.AllPlatformsPort.__init__):
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
- (get_test_config.TestMacPort):
-
-2012-07-27 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WTR] LayoutTestController.deliverWebIntent() needs to be implemented
- https://bugs.webkit.org/show_bug.cgi?id=92228
-
- Reviewed by Anders Carlsson.
-
- Implement LayoutTestController.deliverWebIntent() to
- allow test cases to deliver a Web intent and test this
- functionality.
-
- This functionality is needed by:
- - webintents/web-intents-delivery.html
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::deliverWebIntent):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-27 Jer Noble <jer.noble@apple.com>
-
- Unreviewed build fix.
-
- Wrap MSVC-specific fixes is a COMPILER() check, not a PLATFORM() check.
-
- * TestWebKitAPI/Tests/WTF/MediaTime.cpp:
-
-2012-07-27 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] NRWT better handling of DRT deadlocks and crashes
- https://bugs.webkit.org/show_bug.cgi?id=92299
-
- Reviewed by Dirk Pranke.
-
- 1. Changed the deadlock detector thread target from a method of driver to a function to avoid its reference to the
- current driver (see the bug for the problem of the reference.
- 2. Let the deadlock detector thread exit early when the normal_startup_event is set to avoid it from blocking the main thread when the main thread is exiting.
- 3. Extracted common loop until timeout logic into ChromiumAndroidDriver._loop_with_timeout().
- 4. Use the "for i in range(n)" style suggested by dpranke in https://bugs.webkit.org/show_bug.cgi?id=89124 in several functions.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort._run_adb_command): Reduced the verbose output.
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._loop_with_timeout): Extracted common loop until timeout logic here.
- (ChromiumAndroidDriver._all_pipes_created):
- (ChromiumAndroidDriver._remove_all_pipes):
- (ChromiumAndroidDriver._start): Changed the retry loop style.
- (ChromiumAndroidDriver._start_once): Changed the loop style and code related to deadlock detector.
- (ChromiumAndroidDriver._start_once.deadlock_detector): Moved the original ChromiumAndroidDriver._deadlock_detector() here.
- (ChromiumAndroidDriver.stop): Changed the loop style.
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move collect_tests(), parse_expectations() into manager
- https://bugs.webkit.org/show_bug.cgi?id=92423
-
- Reviewed by Ojan Vafai.
-
- This is the first in a series of patches refactoring
- run_webkit_tests.py and manager.py to make them more
- maintainable; all this patch does is move a couple of functions
- into manager.run_tests() so manager's public interface is
- simple.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._collect_tests):
- (Manager._parse_expectations):
- (Manager._split_into_chunks_if_necessary):
- (Manager.run):
- (read_test_files):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_http_locking):
- (ManagerTest.test_perf_locking):
- (ManagerTest.integration_test_needs_servers.get_manager_with_tests):
- (ManagerTest.test_look_for_new_crash_logs.get_manager_with_tests):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: print filtered stderr after a crash correctly
- https://bugs.webkit.org/show_bug.cgi?id=92428
-
- Reviewed by Adam Barth.
-
- Some ports will run the stderr output from DRT/WTR through a
- filter after a crash in order to print a more useful stack
- trace; while that gets written to the crash log correctly, we
- don't log it to the debug output properly. This change fixes
- that and makes it clearer that we're logging stderr, not the
- crash log.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._handle_error):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.test_get_crash_log):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_get_crash_log):
-
-2012-07-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move image diffing code to a separate module
- https://bugs.webkit.org/show_bug.cgi?id=92447
-
- Reviewed by Ryosuke Niwa.
-
- This patch moves the code to talk to ImageDiff into its own
- module, and adds more tests for it. In addition, the patch
- modifies diff_image() so that we don't automatically stop
- ImageDiff after a single invocation, and thus subsequent
- diffs may be slightly faster. (Note that the chromium ports
- don't use any of this code; that is not changed by this patch).
-
- The main motivation for this change is to move more "generic"
- code out of the port/* classes, and in particular to move more
- code out of webkit.py so that we can eventually eliminate it by
- merging it into base.py.
-
- This patch also splits MockServerProcess out from driver_unittest.py
- so that it can be re-used.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.diff_image):
- (Port.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- (Driver._start):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_stop_cleans_up_properly):
- (DriverTest.test_two_starts_cleans_up_properly):
- (DriverTest.test_start_actually_starts):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/image_diff.py: Added.
- (ImageDiffer):
- (ImageDiffer.__init__):
- (ImageDiffer.diff_image):
- (ImageDiffer._start):
- (ImageDiffer._read):
- (ImageDiffer.stop):
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py: Added.
- (for):
- (FakePort):
- (FakePort.__init__):
- (FakePort._path_to_image_diff):
- (FakePort.setup_environ_for_server):
- (TestImageDiffer):
- (TestImageDiffer.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.test_diff_image):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_diff_image__missing_both):
- (PortTestCase.test_diff_image):
- (PortTestCase.test_diff_image.make_proc):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._start):
- * Scripts/webkitpy/layout_tests/port/server_process_mock.py: Added.
- (MockServerProcess):
- (MockServerProcess.__init__):
- (MockServerProcess.write):
- (MockServerProcess.has_crashed):
- (MockServerProcess.read_stdout_line):
- (MockServerProcess.read_stdout):
- (MockServerProcess.pop_all_buffered_stderr):
- (MockServerProcess.read_either_stdout_or_stderr_line):
- (MockServerProcess.start):
- (MockServerProcess.stop):
- (MockServerProcess.kill):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_driver_flags):
- (WebKitPort._symbols_string):
-
-2012-07-27 Tom Hudson <hudson@google.com>
-
- Activate committer bit granted April 6th so I can garden.
- https://bugs.webkit.org/show_bug.cgi?id=92500
-
- Reviewed by Jochen Eisinger.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-27 Jer Noble <jer.noble@apple.com>
-
- Support a rational time class for use by media elements.
- https://bugs.webkit.org/show_bug.cgi?id=88787
-
- Add unit tests for the WTF::MediaTime class.
-
- Reviewed by Eric Carlson.
-
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/MediaTime.cpp: Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- (WTF::operator<<):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-27 Balazs Kelemen <kbalazs@webkit.org>
-
- [NRWT] should have a way to restrict pixel tests for individual directories
- https://bugs.webkit.org/show_bug.cgi?id=91754
-
- Unreviewed attempt to fix the chaos I introduced.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
-
-2012-07-27 YoungTaeck Song <youngtaeck.song@samsung.com>
-
- [WK2][EFL] Add an ACCELERATED_COMPOSITING implementation for Efl WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=91581
-
- Reviewed by Noam Rosenthal.
-
- Add a MiniBrowser's option for selecting evas engine.
-
- * MiniBrowser/efl/main.c:
- (browserCreate):
- (main):
-
-2012-07-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123869.
- http://trac.webkit.org/changeset/123869
- https://bugs.webkit.org/show_bug.cgi?id=92501
-
- "it did not fix anything but made things even worst"
- (Requested by kbalazs on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::setDumpPixelsForAllTests):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/main.cpp:
- (main):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._should_fetch_expected_checksum):
- (SingleTestRunner._overwrite_baselines):
- (SingleTestRunner._compare_output):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker._update_test_input):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.supports_switching_pixel_tests_per_test):
- (Port):
- (Port._supports_switching_pixel_tests_per_test):
- (Port.should_run_as_pixel_test):
- (Port._should_run_as_pixel_test):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line):
- (Driver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.check_sys_deps):
- (QtPort):
- (QtPort._supports_switching_pixel_tests_per_test):
- (QtPort._should_run_as_pixel_test):
- (QtPort._default_pixel_test_directories):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.supports_switching_pixel_tests_per_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_pixel_test_directories):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-07-27 Balazs Kelemen <kbalazs@webkit.org>
-
- [NRWT] should have a way to restrict pixel tests for individual directories
- https://bugs.webkit.org/show_bug.cgi?id=91754
-
- Reviewed by Zoltan Herczeg.
-
- Rollout r123729 because it made Qt debug bots crasy.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::setDumpPixels):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/main.cpp:
- (main):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._should_fetch_expected_checksum):
- (SingleTestRunner._overwrite_baselines):
- (SingleTestRunner._compare_output):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker._update_test_input):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.lookup_virtual_test_args):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line):
- (Driver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.virtual_test_suites):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_missing_and_unexpected_results):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-07-27 Adam Barth <abarth@webkit.org>
-
- webkit.review.bot should run clean-review-queue and clean-pending-commit periodically
- https://bugs.webkit.org/show_bug.cgi?id=92472
-
- Reviewed by Eric Seidel.
-
- We need to run these command periodically to keep cruft from
- accumulating in bugs.webkit.org. Rather than running them manually, we
- should just have a bot run them. This patch has the style-queue run the
- commands, which admittedly is a bit odd but it doesn't seem worthwhile
- to create another bot specifically for this purposes.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractReviewQueue):
- (StyleQueue.begin_work_queue):
- (StyleQueue):
- (StyleQueue.clean_bugzilla):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
-
-2012-07-27 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [Cairo] Add complex font drawing using HarfbuzzNG
- https://bugs.webkit.org/show_bug.cgi?id=91864
-
- Reviewed by Simon Hausmann and Martin Robinson.
-
- Bringing Harfbuzz support to EFL with this patch, so we need HarfBuzz in the pulled in jhbuild dependencies.
-
- * WebKitTestRunner/CMakeLists.txt: Adding additional header include directories.
- * efl/jhbuild.modules: Adding source for HarfBuzz release version 0.9.0.
-
-2012-07-27 KwangYong Choi <ky0.choi@samsung.com>
-
- [WK2][EFL][WTR] TestNetscapePlugin is required.
- https://bugs.webkit.org/show_bug.cgi?id=88756
-
- Reviewed by Simon Hausmann.
-
- libTestNetscapePlugin.so should be required for DRT/WTR/EFL.
-
- * CMakeLists.txt:
- * DumpRenderTree/TestNetscapePlugin/CMakeList.txt:
-
-2012-07-27 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Memory leaks in EFL DRT
- https://bugs.webkit.org/show_bug.cgi?id=92347
-
- Reviewed by Simon Hausmann.
-
- Fix a memory leak in EFL's DRT code by adopting an allocation
- of JSString created with JSStringCreateWithUTF8CString.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onWindowObjectCleared):
-
-2012-07-27 Adam Barth <abarth@webkit.org>
-
- Simplify ExpectedFailures
- https://bugs.webkit.org/show_bug.cgi?id=92216
-
- Reviewed by Eric Seidel.
-
- This patch simplifies the ExpectedFailures class we use to remember
- which tests are currently failing on the bots. When we wrote this code
- originally, we weren't entirely sure how it would work. Now that we
- understand it more clearly, we can write the code more clearly.
-
- * Scripts/webkitpy/tool/bot/expectedfailures.py:
- (_has_failures):
- (_is_trustworthy):
- (ExpectedFailures.__init__):
- (ExpectedFailures.failures_were_expected):
- (ExpectedFailures.unexpected_failures_observed):
- (ExpectedFailures.update):
- * Scripts/webkitpy/tool/bot/expectedfailures_unittest.py:
- (ExpectedFailuresTest._assert_can_trust):
- (ExpectedFailuresTest.test_failures_were_expected):
- (ExpectedFailuresTest.test_unexpected_failures_observed):
- (ExpectedFailuresTest.test_unexpected_failures_observed_when_tree_is_hosed):
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- (PatchAnalysisTask._test):
- (PatchAnalysisTask._build_and_test_without_patch):
- (PatchAnalysisTask._test_patch):
-
-2012-07-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] REGRESSION(r119127): resetting window.internals settings between tests doesn't work properly
- https://bugs.webkit.org/show_bug.cgi?id=88064
-
- Reviewed by Zoltan Herczeg.
-
- Use resetInternalsObject() instead of injectInternalsObject().
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::resetAfterTest):
-
-2012-07-26 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Remove forwarding headers from MiniBrowser/Efl.
- https://bugs.webkit.org/show_bug.cgi?id=91627
-
- Reviewed by Kentaro Hara.
-
- * MiniBrowser/efl/CMakeLists.txt: Remove unnecessary forwarding headers.
-
-2012-07-26 Yoshifumi Inoue <yosin@chromium.org>
-
- [Forms] Introduce runtime feature flags for input type datetime, datetimelocal, month, time, week
- https://bugs.webkit.org/show_bug.cgi?id=92339
-
- Reviewed by Kent Tamura.
-
- This patch enables runtime features for input type datetime, datetime-local,
- month, time and week for Chromium DRT.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell): Call enableInputType{DateTime,DateTimeLocal,Month,Time,Week}.
-
-2012-07-26 Jeffrey Pfau <jpfau@apple.com>
-
- Reloading substitute-data/alternate html string for unreachableURL will add an item to the back-forward-history for each reload
- https://bugs.webkit.org/show_bug.cgi?id=84041
-
- Reviewed by Brady Eidson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/BackForwardList.mm: Added.
- (-[BackForwardListTest webView:didFinishLoadForFrame:]):
- (-[BackForwardListTest webView:didFailProvisionalLoadWithError:forFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123799.
- http://trac.webkit.org/changeset/123799
- https://bugs.webkit.org/show_bug.cgi?id=92431
-
- broke the Apple Mac build (Requested by bweinstein on
- #webkit).
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin::acceptsInputEvents):
- (TestWebPlugin::handleInputEvent):
-
-2012-07-26 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: pass --verbose twice on the bots to ensure getting the debug output for now
- https://bugs.webkit.org/show_bug.cgi?id=92172
-
- Reviewed by Tony Chang.
-
- Right now new-run-webkit-tests --verbose prints out too much
- information (it's like --verbose + debugging). I plan to fix
- this in bug 88702, and also clean up and simplify all of the
- --print options, but in preparation for these changes I need to
- pass --verbose twice to get the same level of output
- temporarily (for compatibility).
-
- * Scripts/run-webkit-tests:
-
-2012-07-26 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- Propagate gesture events to plugins.
- https://bugs.webkit.org/show_bug.cgi?id=92281
-
- Reviewed by Adam Barth.
-
- Update TestWebPlugin to receive events, and output logs for the events.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleInputEvent):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin::acceptsInputEvents):
- (TestWebPlugin):
-
-2012-07-26 Balazs Kelemen <kbalazs@webkit.org>
-
- [nrwt] get rid of --skip-pixel-test-if-no-baseline
- https://bugs.webkit.org/show_bug.cgi?id=92377
-
- Reviewed by Adam Barth.
-
- Remove the option and all code paths that handled it.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.should_run_as_pixel_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_repeat_each):
-
-2012-07-26 Olivier Blin <olivier.blin@softathome.com>
-
- Add FastMalloc statistics in window.internals
- https://bugs.webkit.org/show_bug.cgi?id=91274
-
- Reviewed by Ryosuke Niwa.
-
- * GNUmakefile.am:
-
-2012-07-26 Olivier Blin <olivier.blin@softathome.com>
-
- Add FastMalloc statistics in window.internals
- https://bugs.webkit.org/show_bug.cgi?id=91274
-
- Reviewed by Ryosuke Niwa.
-
- * GNUmakefile.am:
-
-2012-07-20 Holger Hans Peter Freyther <holger@moiji-mobile.com>
-
- buildbot: Remove the configuration of hfreyther*
- https://bugs.webkit.org/show_bug.cgi?id=91849
-
- Reviewed by Adam Roben.
-
- The machine running these configs was decommissioned and
- there is no replacement at this point. Remove them from the
- configuration.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Remove hfreyther* from
- the config. The Qt Linux SH4 and Qt Linux MIPS schedulers are orphaned, remove
- them too.
-
-2012-07-26 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed speculative Mac buildfix after r123729 - 2nd attempt.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runTest):
-
-2012-07-26 Balazs Kelemen <kbalazs@webkit.org>
-
- Unreviewed speculative buildfix after r123729.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::runTest): Fix sign errors.
-
-2012-07-26 Zoltan Nyul <zoltan.nyul@intel.com>
-
- [EFL] EFL port should use XDG paths
- https://bugs.webkit.org/show_bug.cgi?id=91719
-
- Reviewed by Kenneth Rohde Christiansen.
-
- The appcache/localstorage/webdatabase path should be set in the
- ewk_main.cpp instead of the DumpRenderTree, and the XDG_DATA_HOME and
- XDG_CACHE_HOME should be set to different directory for each processes
- for the layout-tests.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::initialize):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.setup_environ_for_server):
- * efl/jhbuild.modules:
-
-2012-07-26 Balazs Kelemen <kbalazs@webkit.org>
-
- [NRWT] should have a way to restrict pixel tests for individual directories
- https://bugs.webkit.org/show_bug.cgi?id=91754
-
- Reviewed by Dirk Pranke.
-
- Added --pixel-test-directories option to nrwt. It implies --pixel-tests.
- If the platform supports this option only tests from these directories will
- be executed as pixel tests. Furthermore, platforms can have a default set of
- pixel test directories. To support the feature the test harness have to be
- able to inform the driver whether to dump pixels for each tests. For this
- purpose I changed WTR and the Qt DRT to handle a --pixel-test argument from
- the standard output and made NRWT use this argument with these drivers.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::processLine):
- (WebCore::DumpRenderTree::setDumpPixelsForAllTests):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/main.cpp:
- (main):
- Handle the --pixel-test argument.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._should_fetch_expected_checksum):
- (SingleTestRunner._overwrite_baselines):
- (SingleTestRunner._compare_output):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker._update_test_input):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.supports_switching_pixel_tests_per_test): Ports can override this to inform
- the harness that --pixel-test argument is supported. True for WTR, otherwise calls
- private version that can be overridden by the actual platform. Only true with WTR
- and Qt DRT currently. This supposed to exist only temporary until there are ports
- that doesn't support the feature in their DRT's.
- (Port):
- (Port._supports_switching_pixel_tests_per_test):
- (Port.should_run_as_pixel_test):
- (Port._should_run_as_pixel_test): Ports can override this to define their
- default set of pixel tests directories.
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.cmd_line): Don't pass --pixel-tests if the platform supports per test
- --pixel-test.
- (Driver._command_from_driver_input): Pass --pixel-test if it is supported and pixel
- tests are enabled.
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.check_sys_deps):
- (QtPort):
- (QtPort._supports_switching_pixel_tests_per_test):
- (QtPort._should_run_as_pixel_test):
- (QtPort._default_pixel_test_directories): Only compositing will be our default pixel
- test directory for the time being.
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.supports_switching_pixel_tests_per_test):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- Handle the --pixel-test-directory option. It expect a directory below LayoutTests
- and can be specified multiple times. Added fixme's that we should improve how we
- handle these arguments.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_pixel_test_directories):
- Added an integration test for the feature.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
- Handle the --pixel-test argument.
-
-2012-07-26 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Regression(r123604): webintents/web-intents-obj-constructor.html is crashing
- https://bugs.webkit.org/show_bug.cgi?id=92349
-
- Reviewed by Kentaro Hara.
-
- Fix crash occurring after r123604, which replaced strdup()
- usage with eina_stringshare_add(). Unfortunately, the DRT
- was not updated accordingly to use eina_stringshare_del()
- instead of free() on the values returned by Ewk_Intent
- getters and it was causing
- webintents/web-intents-obj-constructor.html to crash.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameIntentNew):
-
-2012-07-26 Adam Barth <abarth@webkit.org>
-
- Unreviewed attempt to fix the chromium-win build.
-
- * DumpRenderTree/chromium/TestRunner/TestRunner.cpp:
-
-2012-07-26 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- [DRT] LTC:: pageNumberForElementById() could be moved to Internals
- https://bugs.webkit.org/show_bug.cgi?id=92091
-
- Reviewed by Adam Barth.
-
- Move the pageNumberForElementById from LayoutTestCotroller to Internals and
- remove the old platform specific implementations as it exclusively tests WebCore functionality.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setPrinting):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-25 Adam Barth <abarth@webkit.org>
-
- TestRunner.a should contain a TestRunner object
- https://bugs.webkit.org/show_bug.cgi?id=92313
-
- Reviewed by Kent Tamura.
-
- This patch adds a stub implementation of TestRunner, which is the new
- home for our implementation of window.testRunner. A future patch will
- migrate functions from LayoutTestController to TestRunner.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.h:
- * DumpRenderTree/chromium/TestRunner/TestRunner.cpp: Added.
- * DumpRenderTree/chromium/TestRunner/TestRunner.h: Added.
-
-2012-07-25 Wei James <james.wei@intel.com>
-
- [Chromium] Fix infinite loop issue for chromium android layout test
- https://bugs.webkit.org/show_bug.cgi?id=92197
-
- Reviewed by Adam Barth.
-
- The change brought in by r123530 will cause infinite loop when running
- Chromium Android Layout Test.
- Revert the change for this line only.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort._build_path):
-
-2012-07-25 Adam Barth <abarth@webkit.org>
-
- Jochen is our a newest reviewer!
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-25 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] don't use webkit_support methods directly from test runners but through the test delegate
- https://bugs.webkit.org/show_bug.cgi?id=92256
-
- Reviewed by Adam Barth.
-
- This will allow for the content_shell to provide its own implementation
- for setting the Gamepad data instead.
-
- * DumpRenderTree/chromium/TestRunner/GamepadController.cpp:
- (GamepadController::setDelegate):
- (GamepadController::reset):
- (GamepadController::connect):
- (GamepadController::disconnect):
- (GamepadController::setId):
- (GamepadController::setButtonCount):
- (GamepadController::setButtonData):
- (GamepadController::setAxisCount):
- (GamepadController::setAxisData):
- * DumpRenderTree/chromium/TestRunner/GamepadController.h:
- (GamepadController):
- * DumpRenderTree/chromium/TestRunner/TestDelegate.h:
- (WebKit):
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::Internal):
- (TestInterfaces::Internal::~Internal):
- (TestInterfaces::Internal::setDelegate):
- (TestInterfaces::setDelegate):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setGamepadData):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-07-25 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WTR] LayoutTestController.sendWebIntentResponse() needs to be implemented
- https://bugs.webkit.org/show_bug.cgi?id=92227
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement LayoutTestController.sendWebIntentResponse() so
- that a test case can reply to a Web intent request and
- test this functionality.
-
- In order to support this functionality, we need to keep
- a pointer to the current intent request in
- InjectedBundlePage::didReceiveIntentForFrame() so that
- we can reuse it later in
- LayoutTestController::sendWebIntentResponse().
-
- The following tests need this functionality:
- - webintents/web-intents-failure.html
- - webintents/web-intents-reply.html
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didReceiveIntentForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- (WTR::InjectedBundlePage::currentIntentRequest):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::sendWebIntentResponse):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2][WTR] Alt, Shift and Ctrl keys are not handled by EventSenderProxy.
- https://bugs.webkit.org/show_bug.cgi?id=92241
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Alt, Shift and Ctrl keys were not handled by EventSenderProxy.
- It caused failure of fast/events/keydown-leftright-keys.html test.
-
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp: Added handling of Alt, Shift and Ctrl keys.
- (WTR::keyName):
-
-2012-07-25 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Fix timeout issues when debugging WebProcess.
- https://bugs.webkit.org/show_bug.cgi?id=92245
-
- Reviewed by Dirk Pranke.
-
- Fix timeout issues when debugging the WebProcess
- under valgrind or gdb.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.default_timeout_ms):
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformInitialize):
-
-2012-07-25 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] NRWT driver should not restart between reftests
- https://bugs.webkit.org/show_bug.cgi?id=92267
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.start): Resets self._pixel_tests when the pixel_tests parameter changes.
-
-2012-07-25 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update MediaStreamTrack to match the specification
- https://bugs.webkit.org/show_bug.cgi?id=90180
-
- Reviewed by Adam Barth.
-
- Adding a Mock WebMediaStreamCenter to enable better LayoutTests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp: Added.
- (WebKit):
- (WebKit::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
- (WebKit::MockWebMediaStreamCenter::queryMediaStreamSources):
- (WebKit::MockWebMediaStreamCenter::didEnableMediaStreamTrack):
- (WebKit::MockWebMediaStreamCenter::didDisableMediaStreamTrack):
- (WebKit::MockWebMediaStreamCenter::didStopLocalMediaStream):
- (WebKit::MockWebMediaStreamCenter::didCreateMediaStream):
- (WebKit::MockWebMediaStreamCenter::constructSDP):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp.
- (WebKit):
- (MockWebMediaStreamCenter):
- (WebKit::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
-
-2012-07-25 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] Rename baseline_search_path() to default_baseline_search_path()
- https://bugs.webkit.org/show_bug.cgi?id=92122
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_version_dir):
- (Port.baseline_search_path):
- (Port):
- (Port.default_baseline_search_path):
- (Port.expected_baselines):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_additional_platform_directory):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.default_baseline_search_path):
-
-2012-07-25 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Use eina_stringshare_add instead of strdup.
- https://bugs.webkit.org/show_bug.cgi?id=92072
-
- Reviewed by Kentaro Hara.
-
- Eina of EFL libraries supports a string functionality that replaces strdup. So, EFL port needs
- to replace strdup with eina_stringshare_add function.
-
- DumpRenderTree also needs to be modified according to ewk APIs's parameter change.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (dumpFramesAsText):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameIntentNew):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onJavaScriptPrompt):
-
-2012-07-25 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [WTR][EFL] Wheel events are not emitted
- https://bugs.webkit.org/show_bug.cgi?id=92094
-
- Reviewed by Csaba Osztrogonác.
-
- Wheel events are not emitted, therefore, layout tests that use mouseScrollBy method are failing.
-
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::dispatchMouseScrollByEvent):
- (WTR::EventSenderProxy::mouseScrollBy):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::focus):
-
-2012-07-25 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Add ewk_main.{cpp,h} to EFL WK2
- https://bugs.webkit.org/show_bug.cgi?id=92101
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added a centralized place for general initialization in UI process for EFL WK2.
-
- * MiniBrowser/efl/main.c: Added using of newly added ewk_init() and ewk_shutdown() functions.
- (main):
- * WebKitTestRunner/efl/main.cpp: Ditto.
- (main):
-
-2012-07-24 Benjamin Poulain <bpoulain@apple.com> && Joseph Pecoraro <pecoraro@apple.com>
-
- QualifiedName's HashSet should be big enough to hold at least all the static names
- https://bugs.webkit.org/show_bug.cgi?id=91891
-
- Reviewed by Darin Adler.
-
- Add a test for WTF::hashTableCapacityForSize.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/HashSet.cpp: Added.
- (InitialCapacityTestHashTraits):
- (TestWebKitAPI::testInitialCapacity):
- (TestWebKitAPI::generateTestCapacityUpToSize):
- (TestWebKitAPI::TEST):
-
-2012-07-24 Adam Barth <abarth@webkit.org>
-
- The EWS bots get flaky when we hit the failure limit
- https://bugs.webkit.org/show_bug.cgi?id=92212
-
- Reviewed by Eric Seidel.
-
- Previously we were missing some failure types, which means we didn't
- notice that the bots were hitting the failure limit.
-
- * Scripts/webkitpy/common/net/layouttestresults.py:
- (LayoutTestResults.failing_test_results):
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- (LayoutTestResultsTest.test_results_from_string):
- (LayoutTestResultsTest.test_tests_matching_failure_types):
-
-2012-07-24 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Unreviewed build fix.
-
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp: Include unistd.h
- for usleep(3).
-
-2012-07-24 Dirk Pranke <dpranke@chromium.org>
-
- make test-webkitpy at least kinda work in parallel on win32
- https://bugs.webkit.org/show_bug.cgi?id=91700
-
- Reviewed by Adam Barth.
-
- This change makes the hoop-jumping we have to do to make running
- new-run-webkit-tests in parallel on win32 generic so that we can
- re-use it for test-webkitpy as well.
-
- * Scripts/new-run-webkit-tests:
- * Scripts/test-webkitpy:
- * Scripts/webkitpy/common/multiprocessing_bootstrap.py: Copied from Tools/Scripts/new-run-webkit-tests.
- (run):
- * Scripts/webkitpy/test/main.py:
- (main):
- (Tester._log_exception):
-
-2012-07-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123499.
- http://trac.webkit.org/changeset/123499
- https://bugs.webkit.org/show_bug.cgi?id=92161
-
- Android fails to compile (Requested by zhenyao on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp: Removed.
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h: Removed.
-
-2012-07-24 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: never finds binaries in the 'out' dir on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=91890
-
- Reviewed by Tony Chang.
-
- Attempt to fix this bug yet again; it turns out that --root and
- --build-directory don't have the same meaning (--root should
- include the configuration, --build-directory should not).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._build_path):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._static_build_path):
- (ChromiumPort.default_results_directory):
- (ChromiumPort._build_path):
- (ChromiumPort):
- (ChromiumPort._build_path_with_configuration):
- (ChromiumPort._build_path_with_configuration.does):
- (ChromiumPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort._build_path):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._build_path_with_configuration):
- (ChromiumAndroidPort._path_to_driver):
- (ChromiumAndroidPort._path_to_forwarder):
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidPort._push_fonts):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._determine_driver_path_statically):
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort._modules_to_search_for_symbols):
- (ChromiumMacPort._path_to_driver):
- (ChromiumMacPort._path_to_helper):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- (ChromiumWinPort._path_to_helper):
- (ChromiumWinPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_build_path):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-07-24 Peter Beverloo <peter@chromium.org>
-
- Android-chromium layout tests failing with GPU related crash
- https://bugs.webkit.org/show_bug.cgi?id=92126
-
- Reviewed by Adam Barth.
-
- Remove support for the "--enable-hardware-gpu" flag from run_webkit_tests,
- as it's not being used by any port anymore, and neither is being passed
- on to the test runner. Instead, append the flag directly to DRT for the
- Chromium Android port, which does rely on this functionality.
-
- The ChromiumAndroidUnitTest tests didn't catch this as the property was
- set to True, but it's unable to detect whether they'll actually be used.
- No occurrances of "--enable-hardware-gpu" exist in either Tools/Scripts/
- or Tools/BuildSlaveSupport/, so nothing upstream seems to rely on the flag.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.test_attributes):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-07-24 Alexander Shalamov <alexander.shalamov@intel.com>
-
- [WTR][EFL] Multiple mouse clicks are not emitted in EventSenderProxyEfl
- https://bugs.webkit.org/show_bug.cgi?id=92107
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fixes mouse click events in EventSenderProxyEfl.
-
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::dispatchMouseDownEvent):
- (WTR::EventSenderProxy::dispatchEvent):
-
-2012-07-24 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update MediaStreamTrack to match the specification
- https://bugs.webkit.org/show_bug.cgi?id=90180
-
- Reviewed by Adam Barth.
-
- Adding a Mock WebMediaStreamCenter to enable better LayoutTests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp: Added.
- (WebKit):
- (WebKit::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
- (WebKit::MockWebMediaStreamCenter::queryMediaStreamSources):
- (WebKit::MockWebMediaStreamCenter::didEnableMediaStreamTrack):
- (WebKit::MockWebMediaStreamCenter::didDisableMediaStreamTrack):
- (WebKit::MockWebMediaStreamCenter::didStopLocalMediaStream):
- (WebKit::MockWebMediaStreamCenter::didCreateMediaStream):
- (WebKit::MockWebMediaStreamCenter::constructSDP):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp.
- (WebKit):
- (MockWebMediaStreamCenter):
- (WebKit::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
-
-2012-07-23 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix regressions in replay performance tests
- https://bugs.webkit.org/show_bug.cgi?id=92052
-
- Reviewed by Dirk Pranke.
-
- Fix regression that accumulated over time to make replay tests work again.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest): Use the main document URL in the request since the main frame's
- URL hadn't been updated yet When requesting a new URL on the main frame.
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayServer.wait_until_ready): Waiting for 6 seconds (3 tries) seems enough.
- (ReplayPerfTest.prepare): Pass self._archive_path to run_signle as that is the current contract.
- (ReplayPerfTest.run_single): Use the archive path to generate -expected.png path.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestReplayPerfTest.test_run_single):
- (TestReplayPerfTest.test_prepare):
- (TestReplayPerfTest.test_prepare_calls_run_single.run_single):
- (TestReplayPerfTest):
-
-2012-07-24 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] MSVC: unresolved external symbol __DllMainCRTStartup@12
- https://bugs.webkit.org/show_bug.cgi?id=91229
-
- Reviewed by Jocelyn Turcotte.
-
- In order to successfully link a DLL on Windows we need to have at least
- one object file (or compilation unit). The forward export header files were
- supposed to be that, but unfortunately the rule in win32/default_post.prf for
- creating the header files had some bugs, among others that it did an exists()
- check on the depending static library. At the time qmake is ran those libraries
- do not exist yet and therefore the corresponding extra compiler rules were never
- created, resulting in empty OBJECTS/SOURCES.
-
- Even without such an exists() check, qmake extra compilers require the files
- referred to in the .input variable to exist at qmake time. In this case the input
- files were the static libraries, which do not exist yet.
-
- This patch solves this by using a qmake extra target instead of extra
- compiler, which does not have this limitation. The target is referenced
- through the extension of GENERATED_SOURCES.
-
- The patch also adds a d/_debug suffix for debug builds, do allow for separate
- symbol exports if necessary.
-
- * Scripts/generate-win32-export-forwards: Support multiple input files, i.e.
- consider the last argument to be the output file and everything else input.
- * qmake/mkspecs/features/win32/default_post.prf:
-
-2012-07-24 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add quirks for running the web process in a profiler shell, like valgrind
- https://bugs.webkit.org/show_bug.cgi?id=87672
-
- Reviewed by Jocelyn Turcotte.
-
- Add --no-timeout-at-all command line switch to not time out no matter how
- long the web process does it's job. --no-timeout is not enough for profiling
- purposes because it only affects the timeout when we are waiting for the end
- of the test. We use another timeout to control how much we wait for the web
- process to initialize before and reset after the test and it could also easily
- expire when running under valgrind. We should keep the behavior of --no-timeout
- to not disable this timout check because --no-timeout is used by performace tests
- and those should not wait for the web process to initialize and reset more than
- normal tests.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runUntil):
- * WebKitTestRunner/TestController.h:
-
-2012-07-24 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Fix a class/struct mismatch error in TestDelegate.h (showing up on clang)
- https://bugs.webkit.org/show_bug.cgi?id=92097
-
- Unreviewed build fix.
-
- WebContextMenuData is declared as a struct in Source/WebKit/chromium/public/WebContextMenuData.h,
- but TestDelegate.h forward declares it as a class.
-
- * DumpRenderTree/chromium/TestRunner/TestDelegate.h:
- (WebKit):
-
-2012-07-23 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Fix compilation against namespaced Qt
-
- Reviewed by Simon Hausmann.
-
- * QtTestBrowser/launcherwindow.h:
- * WebKitTestRunner/PlatformWebView.h:
-
-2012-07-24 Peter Beverloo <peter@chromium.org>
-
- Update a few Chromium Android contributors in committers.py
- https://bugs.webkit.org/show_bug.cgi?id=92090
-
- Reviewed by Kent Tamura.
-
- Add Sami Kyostila, who has been doing significant work on Chromium's
- compositor. Add IRC nicknames for John Mellor and Tien-Ren Chen, and
- remove John Grabowski who changed projects, and add my webkit.org alias.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-24 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] Enable touch slider when touch events are enabled
- https://bugs.webkit.org/show_bug.cgi?id=91013
-
- Reviewed by Kenneth Rohde Christiansen.
-
- TOUCH_SLIDER guards are used in WebCore, so we should really
- be setting the corresponding ENABLE define in features.prf.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-07-24 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] EWebLauncher should not require config.h in the style check
- https://bugs.webkit.org/show_bug.cgi?id=92070
-
- Reviewed by Kentaro Hara.
-
- * Scripts/webkitpy/style/checker.py:
- Remove the include rules from the style-check for EWebLauncher because
- EWebLauncher is simple EFL application.
-
-2012-07-24 Jochen Eisinger <jochen@chromium.or>
-
- [Chromium] EventSender shouldn't know about TestShell
- https://bugs.webkit.org/show_bug.cgi?id=91449
-
- Reviewed by Adam Barth.
-
- Original patch by Adam Barth.
-
- This patch removes the dependency from EventSender to TestShell. Most
- of EventSender works directly with a WebView, but there are a handful
- of references to WebViewHost. We don't want to re-use WebViewHost in
- ContentShell because we want to use the multi-process embedding
- environment for WebViews.
-
- To avoid the dependency on WebViewHost, this patch introduces
- TestDelegate, which is an abstract base class for WebViewHost. In
- ContentShell, we'll need another object to implement these functions.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::keyDown):
- (makeMenuItemStringsFor):
- (EventSender::contextClick):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
- (EventSender::setDelegate):
- (EventSender::setWebView):
- (EventSender::webview):
- * DumpRenderTree/chromium/TestRunner/TestDelegate.h: Added.
- (WebKit):
- (TestDelegate):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::fillSpellingSuggestionList):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-07-24 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Make WebIntents and WebIntentsTag a build option for the build-webkit script
- https://bugs.webkit.org/show_bug.cgi?id=91841
-
- Reviewed by Philippe Normand.
-
- And it will also be disabled when building with --minimal.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-23 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r123360.
- http://trac.webkit.org/changeset/123360
- https://bugs.webkit.org/show_bug.cgi?id=91890
-
- broke the chromium bots
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._static_build_path):
- (ChromiumPort.default_results_directory):
- (ChromiumPort._build_path):
- (ChromiumPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort._build_path):
- (ChromiumAndroidPort._path_to_driver):
- (ChromiumAndroidPort._path_to_forwarder):
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidPort._push_fonts):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._determine_driver_path_statically):
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort._modules_to_search_for_symbols):
- (ChromiumMacPort._path_to_driver):
- (ChromiumMacPort._path_to_helper):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- (ChromiumWinPort._path_to_helper):
- (ChromiumWinPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_build_path):
-
-2012-07-23 Adam Barth <abarth@webkit.org>
-
- [Chromium] TestInterfaces should be responsible for owning and binding AccessibilityController and TextInputController
- https://bugs.webkit.org/show_bug.cgi?id=91459
-
- Reviewed by Ryosuke Niwa.
-
- Rather than having TestShell own and bind each of these JavaScript APIs
- individually, TestShell should delegate that work to TestInterfaces.
- This patch moves AccessibilityController and TextInputController to be
- the responsibility of TestInterfaces.
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::TestInterfaces):
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::setWebView):
- (TestInterfaces::bindTo):
- (TestInterfaces::resetAll):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- (TestInterfaces::accessibilityController):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::accessibilityController):
- (TestShell):
-
-2012-07-23 Balazs Kelemen <kbalazs@webkit.org>
-
- nrwt swallows early exceptions
- https://bugs.webkit.org/show_bug.cgi?id=91884
-
- Reviewed by Dirk Pranke.
-
- Put everything in a try block so we won't miss any error.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
-
-2012-07-23 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] WebKitTestRunner needs to print information about Web intents
- https://bugs.webkit.org/show_bug.cgi?id=90873
-
- Reviewed by Anders Carlsson.
-
- Print out information about new intents requests and intent
- services registrations in WebKitTestRunner. This is expected
- by tests under webintents/*.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- (WTR::InjectedBundlePage::didReceiveIntentForFrame):
- (WTR):
- (WTR::InjectedBundlePage::registerIntentServiceForFrame):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
-
-2012-07-23 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: never finds binaries in the 'out' dir on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=91890
-
- Reviewed by Tony Chang.
-
- We were figuring out which directory look in for binaries by
- testing for the base directory (the directory above
- Debug/Release). In chromium-win's case, we look in src/build,
- which always exists because there are checked-in files in it,
- which means we'd always pick that directory over src/out. All of
- the other ports' build_path() implementation was including
- Debug/Release. If we matched that, we wouldn't have a problem,
- so this change fixes that and updates all of the callers of the
- chromium ports' implementation to not pass configuration as part
- of the path to look up; we still need to pass configuration in
- some cases (to test if the build is out of date between debug
- and release) so the implementation gets slightly more
- complicated.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._static_build_path):
- (ChromiumPort.default_results_directory):
- (ChromiumPort._build_path):
- (ChromiumPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort._build_path):
- (ChromiumAndroidPort._path_to_driver):
- (ChromiumAndroidPort._path_to_forwarder):
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidPort._push_fonts):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._determine_driver_path_statically):
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort._modules_to_search_for_symbols):
- (ChromiumMacPort._path_to_driver):
- (ChromiumMacPort._path_to_helper):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- (ChromiumWinPort._path_to_helper):
- (ChromiumWinPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_build_path):
-
-2012-07-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123339.
- http://trac.webkit.org/changeset/123339
- https://bugs.webkit.org/show_bug.cgi?id=92006
-
- massive media tests failure (Requested by philn on #webkit).
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/jhbuild.modules:
-
-2012-07-23 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Clean up the MockWebKitPlatformSupport object at shutdown
- https://bugs.webkit.org/show_bug.cgi?id=91857
-
- Reviewed by Adam Barth.
-
- Made a few changes so that the destructor could be called at shutdown.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (WebKitSupportTestEnvironment::WebKitSupportTestEnvironment):
- (WebKitSupportTestEnvironment):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::create):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (MockWebKitPlatformSupport):
- (MockWebKitPlatformSupport::~MockWebKitPlatformSupport):
-
-2012-07-23 Philippe Normand <pnormand@igalia.com>
-
- [GTK][jhbuild] Switch to GStreamer 0.11 build
- https://bugs.webkit.org/show_bug.cgi?id=91727
-
- Reviewed by Gustavo Noronha Silva.
-
- Switch build-webkit --gtk to GStreamer 0.11 support and build the
- necessary GStreamer git modules from JHBuild.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Build WebKit with GStreamer 0.11 support.
- * gtk/jhbuild.modules: GStreamer build support.
-
-2012-07-23 Christophe Dumez <christophe.dumez@intel.com>
-
- WebKit2 needs layoutTestController.setAlwaysAcceptCookies
- https://bugs.webkit.org/show_bug.cgi?id=42778
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for layoutTestController.setAlwaysAcceptCookies()
- since it is required by some tests.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setAlwaysAcceptCookies):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-23 Kent Tamura <tkent@chromium.org>
-
- Rename ENABLE_METER_TAG and ENABLE_PROGRESS_TAG to ENABLE_METER_ELEMENT and ENABLE_PROGRESS_ELEMENT respectively
- https://bugs.webkit.org/show_bug.cgi?id=91941
-
- Reviewed by Kentaro Hara.
-
- A flag name for an elmement should be ENABLE_*_ELEMENT.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-07-22 Kent Tamura <tkent@chromium.org>
-
- Rename ENABLE_DETAILS to ENABLE_DETAILS_ELEMENT
- https://bugs.webkit.org/show_bug.cgi?id=91928
-
- Reviewed by Kentaro Hara.
-
- A flag name for an elmement should be ENABLE_*_ELEMENT.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-07-20 Kent Tamura <tkent@chromium.org>
-
- Rename ENABLE_DATALIST to ENABLE_DATALIST_ELEMENT
- https://bugs.webkit.org/show_bug.cgi?id=91846
-
- Reviewed by Kentaro Hara.
-
- A flag name for an elmement should be ENABLE_*_ELEMENT.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-07-20 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Store test pipes in /data/local/tmp
- https://bugs.webkit.org/show_bug.cgi?id=91909
-
- In the previous change (bug 91873, r123258) we placed the pipes in /sdcard/native_tests.
- However after tests we found some devices don't allow the app to create pipes there.
- So /data/local/tmp is a better place for the pipes.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
-
-2012-07-20 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chomium-Android] Place DRT input/output pipes where both app and unrooted shell can read/write
- https://bugs.webkit.org/show_bug.cgi?id=91873
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
-
-2012-07-20 Han Shen <shenhan@google.com>
-
- [Chromium] Compilation fails under gcc 4.7
- https://bugs.webkit.org/show_bug.cgi?id=90227
-
- Reviewed by Tony Chang.
-
- Disable warnings about c++0x compatibility in gcc newer than 4.6.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-07-20 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION: run-perf-tests --pause-before-testing is broken
- https://bugs.webkit.org/show_bug.cgi?id=91789
-
- Reviewed by Ryosuke Niwa.
-
- Turns out start() wasn't actually starting things :(. Fixed, and
- added tests.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_read_prompt):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- (Driver._start):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_read_block):
- (DriverTest.test_read_binary_block):
- (DriverTest.test_read_base64_block):
- (DriverTest.test_stop_cleans_up_properly):
- (DriverTest.test_two_starts_cleans_up_properly):
- (DriverTest.test_start_actually_starts):
- (MockServerProcess.__init__):
- (MockServerProcess.start):
-
-2012-07-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Don't include WebCore headers in TestInterfaces so it's safe to include from outside of WebCore
- https://bugs.webkit.org/show_bug.cgi?id=91847
-
- Reviewed by Adam Barth.
-
- This allows for including the TestIntefaces.h from content shell
- without introducing a dependency to WebCore/wtf
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::Internal):
- (TestInterfaces::Internal::Internal):
- (TestInterfaces::Internal::~Internal):
- (TestInterfaces::Internal::bindTo):
- (TestInterfaces::Internal::resetAll):
- (TestInterfaces::TestInterfaces):
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::bindTo):
- (TestInterfaces::resetAll):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (TestInterfaces):
-
-2012-07-20 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [Qt] Make WTR use the same color palette as DRT
- https://bugs.webkit.org/show_bug.cgi?id=91870
-
- Reviewed by Noam Rosenthal.
-
- Make sure that WebKitTestRunner and DumpRenderTree use the same palette: the
- standard from QWindowsStyle.
-
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts): Moved code to platformInitialize since setting style is not
- exactly font related.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::InjectedBundle::platformInitialize): Force the usage of the style's
- palette. Because at this point QApplication was already instantiated, the
- default palette was already initialized to be the system one, so we need to
- explicitly set the palette to be the standard from style. This is not needed in
- DRT because there we set the style before instantiating QApplication.
-
-2012-07-20 Tony Chang <tony@chromium.org>
-
- Baseline align text in the flakiness dashboard toolbar
- https://bugs.webkit.org/show_bug.cgi?id=91784
-
- Reviewed by Ojan Vafai.
-
- Baseline align the flex items.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.css:
- (.forms): Add box-align: baseline
- (.forms > *): Use block display to force flex items rather than box.
- (#tests-form): Add box-align: baseline
- (#tests-form > *): Use block display to force flex items rather than box.
-
-2012-07-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r123220.
- http://trac.webkit.org/changeset/123220
- https://bugs.webkit.org/show_bug.cgi?id=91880
-
- broke Debug build (Requested by philn on #webkit).
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/jhbuild.modules:
-
-2012-07-20 Philippe Normand <pnormand@igalia.com>
-
- [GTK][jhbuild] Switch to GStreamer 0.11 build
- https://bugs.webkit.org/show_bug.cgi?id=91727
-
- Reviewed by Gustavo Noronha Silva.
-
- Switch build-webkit --gtk to GStreamer 0.11 support and build the
- necessary GStreamer git modules from JHBuild.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Build WebKit with GStreamer 0.11 support.
- * gtk/jhbuild.modules: GStreamer build support.
-
-2012-07-20 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Proxy configuration should honor the no_proxy environment variable
- https://bugs.webkit.org/show_bug.cgi?id=91747
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add ProxyResolverSoup to the list of classes that contain GObjects
- in style checker script so that it does not complain about naming
- convention issues that are mandated by GObject.
-
- * Scripts/webkitpy/style/checker.py:
-
-2012-07-20 Zeno Albisser <zeno@webkit.org>
-
- [Qt][WK2] Add configure tests for Xrender and GLX.
- https://bugs.webkit.org/show_bug.cgi?id=91845
-
- GraphicsSurface on linux requires Xcomposite, Xrender
- and GLX. If any of these requirements is not met,
- we should disable GraphicsSurface.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/config.tests/glx/glx.cpp: Added.
- (main):
- * qmake/config.tests/glx/glx.pro: Added.
- * qmake/config.tests/libXrender/libXrender.cpp: Added.
- (main):
- * qmake/config.tests/libXrender/libXrender.pro: Added.
- * qmake/configure.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-20 Kangil Han <kangil.han@samsung.com>
-
- [EFL][WK2][WTR] Implement EventSenderProxy
- https://bugs.webkit.org/show_bug.cgi?id=91731
-
- Reviewed by Kentaro Hara.
-
- This is an initial EFL port implementation of EventSenderProxy.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (WTR):
- (EventSenderProxy):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- * WebKitTestRunner/PlatformEfl.cmake:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp: Added.
- (WTR):
- (WTREvent):
- (WTR::WTREvent::WTREvent):
- (WTR::KeyEventInfo::KeyEventInfo):
- (KeyEventInfo):
- (WTR::evasMouseButton):
- (WTR::setEvasModifiers):
- (WTR::dispatchMouseDownEvent):
- (WTR::dispatchMouseUpEvent):
- (WTR::dispatchMouseMoveEvent):
- (WTR::dispatchMouseScrollByEvent):
- (WTR::keyPadName):
- (WTR::keyName):
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::dispatchEvent):
- (WTR::EventSenderProxy::replaySavedEvents):
- (WTR::EventSenderProxy::sendOrQueueEvent):
- (WTR::EventSenderProxy::mouseDown):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
- (WTR::EventSenderProxy::mouseScrollBy):
- (WTR::EventSenderProxy::leapForward):
- (WTR::EventSenderProxy::keyDown):
- (WTR::EventSenderProxy::addTouchPoint):
- (WTR::EventSenderProxy::updateTouchPoint):
- (WTR::EventSenderProxy::setTouchModifier):
- (WTR::EventSenderProxy::touchStart):
- (WTR::EventSenderProxy::touchMove):
- (WTR::EventSenderProxy::touchEnd):
- (WTR::EventSenderProxy::touchCancel):
- (WTR::EventSenderProxy::clearTouchPoints):
- (WTR::EventSenderProxy::releaseTouchPoint):
- (WTR::EventSenderProxy::cancelTouchPoint):
- (WTR::EventSenderProxy::setTouchPointRadius):
-
-2012-07-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed, rolling out r123085.
- http://trac.webkit.org/changeset/123085
- https://bugs.webkit.org/show_bug.cgi?id=91719
-
- r123085 causes crashes on EFL layout test bot.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/InjectedBundle/efl/LayoutTestControllerEfl.cpp:
- (WTR::LayoutTestController::platformInitialize):
-
-2012-07-20 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [WTR] Add *explicit* keyword to constructor which has a parameter
- https://bugs.webkit.org/show_bug.cgi?id=91745
-
- Reviewed by Adam Barth.
-
- Add *explicit* keyword to contructor which has a parameter in order to avoid implicit type conversion.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
-
-2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [WK2] Add methods to get/set a custom text encoding
- https://bugs.webkit.org/show_bug.cgi?id=90604
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added support for setting custom character encoding in MiniBrowser.
- Use 'F3' to set the custom character encoding.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-07-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: executive_unittest still failing when run in parallel
- https://bugs.webkit.org/show_bug.cgi?id=91795
-
- Reviewed by Adam Barth.
-
- It turns out that test_kill_process and test_kill_all are both
- launching the same process, and so if they're run at the same
- time, test_kill_all interferes w/ test_kill_process.
-
- Merging the two tests solves the issue :).
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_kill_process):
- (ExecutiveTest._assert_windows_image_name):
- (ExecutiveTest):
- (ExecutiveTest.test_windows_image_name):
-
-2012-07-19 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [WK2] Add a callback to handle delete request in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=91483
-
- Reviewed by Dirk Pranke.
-
- Add a callback to handle delete request and quit the main loop when
- window is asked to be deleted so that all the resources allocated
- for the window will be freed properly.
-
- * MiniBrowser/efl/main.c:
- (closeWindow):
- (browserCreate):
-
-2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Enable CSS shaders in Qt (software mode)
- https://bugs.webkit.org/show_bug.cgi?id=85140
-
- Reviewed by Simon Hausmann.
-
- Enable CSS_SHADERS when WEBGL and CSS_FILTERS are enabled.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-07-19 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] Enable CSS shaders in Qt (software mode)
- https://bugs.webkit.org/show_bug.cgi?id=85140
-
- Reviewed by Simon Hausmann.
-
- Enable CSS_SHADERS when WEBGL and CSS_FILTERS are enabled.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-07-19 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: fix executive_unittest nits, including a missing 'errno' import
- https://bugs.webkit.org/show_bug.cgi?id=91770
-
- Reviewed by Adam Barth.
-
- The missing errno import is causing a flaky failure when run in
- parallel on the bots.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.assert_interpreter_for_content):
-
-2012-07-19 Oliver Hunt <oliver@apple.com>
-
- Make style bot handle underscores in names more reasonably
- https://bugs.webkit.org/show_bug.cgi?id=91777
-
- Reviewed by Gavin Barraclough.
-
- This patch adds a naming/readability/underscores category for style errors.
- That allows us to use underscores in those portions of JSC (and potentially
- gtk?) without turning off all naming checks for the effected directories.
- We also filter out the DFG_OPERATION warning, and a few other minor changes
- to make the style bot less noisy when running over JSC at least.
-
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_identifier_name_in_declaration):
- (CppChecker):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_names):
-
-2012-07-19 Dirk Pranke <dpranke@chromium.org>
-
- config_standalone.py is crashing on apple win's cygwin port
- https://bugs.webkit.org/show_bug.cgi?id=91682
-
- Reviewed by Adam Roben.
-
- Work around a weird interaction of ctypes and cygwin that
- is causing unit tests to crash for me locally.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._win32_check_running_pid):
-
-2012-07-19 Xabier Rodriguez Calvar <calvaris@igalia.com>
-
- [GTK] WebKit test runner ignores all system environment variables
- https://bugs.webkit.org/show_bug.cgi?id=90284
-
- Reviewed by Dirk Pranke.
-
- Added support in unit test framework to pass a custom environment
- variable to the tests by using the --additional-env-var parameter.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.setup_environ_for_server): Adding environment variables
- that come through the additional_env_var option.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_additional_env_var): Added unit test for the
- additional_env_var option
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args): Added the --additional-env-var parameter.
-
-2012-07-19 Joshua Bell <jsbell@chromium.org>
-
- Roll out r121610 and r122487 which may have been causing flaky crashes
- https://bugs.webkit.org/show_bug.cgi?id=91637
-
- Reviewed by Kentaro Hara.
-
- Flaky crashes started in random tests following r121610. It's not clear
- that r121610 is to blame, but we'd like to prove or disprove it.
- If this doesn't resolve the crashes, this patch should be rolled out.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest):
- * DumpRenderTree/TestNetscapePlugIn/Tests/LeakWindowScriptableObject.cpp: Removed.
-
-2012-07-19 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt][WK2] Map the elementRect exposed in QML to the view for popup menu
- https://bugs.webkit.org/show_bug.cgi?id=91645
-
- Reviewed by Simon Hausmann.
-
- Also improved the logic slightly for edge cases.
-
- * MiniBrowser/qt/qml/ItemSelector.qml:
-
-2012-07-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Bump libsoup dependency to v2.39.4.1 to fix cookie issues
- https://bugs.webkit.org/show_bug.cgi?id=91741
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Bump libsoup dependency in jhbuild to v2.39.4.1 to fix issues
- with cookies in non-suffixed/private domains [GNOME #679230].
-
- * efl/jhbuild.modules:
-
-2012-07-19 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Remove support for Qt versions before 4.8.0
- https://bugs.webkit.org/show_bug.cgi?id=91730
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove Qt version check #ifdefs for Qt versions before 4.8.0.
-
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setAlwaysBlockCookies):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
-
-2012-07-19 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Enable MHTML support by default at build time
- https://bugs.webkit.org/show_bug.cgi?id=89987
-
- Reviewed by Carlos Garcia Campos.
-
- Enable MHTML support by default for GTK in build-webkit.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-19 Zoltan Nyul <zoltan.nyul@intel.com>
-
- [EFL][WK2] Using different cache directory for each WTR process
- https://bugs.webkit.org/show_bug.cgi?id=91719
-
- Reviewed by Kenneth Rohde Christiansen.
-
- The testrunner script may be running multiple processes in
- parallel, and it makes appcache tests fail if they are using the same
- directory. I modified the EFL's LayoutTestController to use the
- DUMPRENDERTREE_TEMP for application cache directory because it's
- different for each process.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/InjectedBundle/efl/LayoutTestControllerEfl.cpp:
- (WTR::LayoutTestController::platformInitialize):
-
-2012-07-19 Mario Sanchez Prada <msanchez@igalia.com>
-
- [WK2][GTK] Complete implementation of AccessibilityController in WKTR for GTK
- https://bugs.webkit.org/show_bug.cgi?id=89224
-
- Reviewed by Chris Fleizach.
-
- Implement logAccessibilityEvents() and resetToConsistentState(),
- so we can ask WKTR from the layout tests for logging all the
- accessibility related events into the result.
-
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- (WTR::AccessibilityController::AccessibilityController):
- (WTR):
- (WTR::AccessibilityController::logAccessibilityEvents):
- (WTR::AccessibilityController::resetToConsistentState):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.h:
- (AccessibilityController):
- * WebKitTestRunner/InjectedBundle/gtk/AccessibilityControllerGtk.cpp: Added.
- (WTR):
- (WTR::printAccessibilityEvent):
- (WTR::axObjectEventListener):
- (WTR::AccessibilityController::logAccessibilityEvents):
- (WTR::AccessibilityController::resetToConsistentState):
-
- Ensure we reset the accessibility controller to a consistent
- whenever a test has finished running.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done):
-
-2012-07-19 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL][Wk2] Add a bot that runs WTR / WebKit2 tests
- https://bugs.webkit.org/show_bug.cgi?id=90788
-
- Reviewed by Kentaro Hara.
-
- Adding EFL 64bit WK2 BuildAndTest bot. At this point, we cannot transfer
- the build product from one bot to the other due to link path issues with jhbuild,
- so we do a full build and test cycle for WebKit2 on this bot.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Adding the new slave.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Adding a new factory for building and testing WebKit2.
- (BuildAndTestWebKit2Factory):
-
-2012-07-18 Mihnea Ovidenie <mihnea@adobe.com>
-
- Unreviewed. Adding Andrei Bucur, Mihai Balan and Raul Hudea to the contributors list.
- They are Adobe contributors working on CSSRegions.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-18 Christophe Dumez <christophe.dumez@intel.com>
-
- [CMake][EFL] Should try to find the same libsoup version pulled by jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=91626
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update jhbuild to pull libsoup 2.39.3 tarball from Gnome FTP instead
- of fetching a tag from Gnome GIT. We need to do this to map the version
- of libsoup that is required by our CMake config.
-
- * efl/jhbuild.modules:
-
-2012-07-18 MORITA Hajime <morrita@google.com>
-
- Add window resize benchmark
- https://bugs.webkit.org/show_bug.cgi?id=91070
-
- Reviewed by Ryosuke Niwa.
-
- Added some more output filters to take care of html5.html output.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: merge WebKitDriver into Driver
- https://bugs.webkit.org/show_bug.cgi?id=91696
-
- Reviewed by Adam Barth.
-
- As part of merging WebKitPort into Port, we also should merge
- WebKitDriver into Driver, since all of the non-test Drivers now
- inherit from WebKitDriver.
-
- There are no functional changes in this patch, and all the changes should
- be covered by the existing tests.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._driver_class):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._check_file_exists):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._drt_cmd_line):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_read_prompt):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver):
- (Driver.__init__):
- (Driver.__del__):
- (Driver.run_test):
- (Driver.has_crashed):
- (Driver.start):
- (Driver._start):
- (Driver.stop):
- (Driver.cmd_line):
- (Driver._check_for_driver_crash):
- (Driver._command_from_driver_input):
- (Driver._read_first_block):
- (Driver._read_optional_image_block):
- (Driver._read_header):
- (Driver._process_stdout_line):
- (Driver._strip_eof):
- (Driver._read_block):
- (ContentBlock):
- (ContentBlock.__init__):
- (ContentBlock.decode_content):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.make_port):
- (DriverTest._assert_wrapper):
- (DriverTest.test_read_block):
- (DriverTest):
- (DriverTest.test_read_binary_block):
- (DriverTest.test_read_base64_block):
- (DriverTest.test_no_timeout):
- (DriverTest.test_check_for_driver_crash):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.__init__):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.pid):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.name):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.has_crashed):
- (DriverTest.test_check_for_driver_crash.FakeServerProcess.stop):
- (DriverTest.test_check_for_driver_crash.assert_crash):
- (DriverTest.test_creating_a_port_does_not_write_to_the_filesystem):
- (DriverTest.test_stop_cleans_up_properly):
- (DriverTest.test_two_starts_cleans_up_properly):
- (MockServerProcess):
- (MockServerProcess.__init__):
- (MockServerProcess.has_crashed):
- (MockServerProcess.read_stdout_line):
- (MockServerProcess.read_stdout):
- (MockServerProcess.read_either_stdout_or_stderr_line):
- (MockServerProcess.start):
- (MockServerProcess.stop):
- (MockServerProcess.kill):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._read_image_diff):
- (WebKitPort.skipped_layout_tests):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_path_to_apache_config_file):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver):
- (XvfbDriver.stop):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy.common.system.executive_unittest.ExecutiveTest.test_kill_process is flaky
- https://bugs.webkit.org/show_bug.cgi?id=91698
-
- Unreviewed, build fix.
-
- This is a workaround for the test failing (apparently mostly?)
- when run in parallel with other tests. The underlying bug still
- needs to be diagnosed as we shouldn't be getting ECHILD from
- process.wait().
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_kill_process):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- Disable running python unit tests in parallel on win32 for now.
- https://bugs.webkit.org/show_bug.cgi?id=91697
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
-
-2012-07-18 Dave Tu <dtu@chromium.org>
-
- [chromium] Add gl_tests to flakiness dashboard.
- https://bugs.webkit.org/show_bug.cgi?id=91680
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- fix python unit tests failing under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=91678
-
- Reviewed by Adam Barth.
-
- Fix a case where executive.kill_process was failing under cygwin
- (apple win port) in an unexpected way.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.kill_process):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: run tests in parallel by default
- https://bugs.webkit.org/show_bug.cgi?id=91422
-
- Reviewed by Adam Barth.
-
- We use multiprocessing.cpu_count() for the default number of
- jobs to run; memory overhead should be very low, so this should
- be fine.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
-
-2012-07-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Pravin D to the list of contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-18 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] feature detection in orwt/nrwt does not work with force_static_libs_as_shared
- https://bugs.webkit.org/show_bug.cgi?id=91514
-
- Reviewed by Dirk Pranke.
-
- Analyzing libQtWebKit.so is not enough in the case of force_static_libs_as_shared.
- We need to analyze all the shared library or at least the WebCore one.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
- In orwt it is hard coded to search for symbols in the WebCore library.
- While in theory it is possible that symbols for a given feature are not
- located in that, it doesn't happen in practice, so returning the path of
- the WebCore library for a force_static_libs_as_shared build is enough to
- fix the bug and it doesn't require a bigger refactoring. For a default
- build we still return the path of the QtWebKit lib.
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._modules_to_search_for_symbols):
- Enumerate all dynamic libraries, not just the QtWebKit one.
-
-2012-07-18 Tony Chang <tony@chromium.org>
-
- [chromium] Unreviewed, more compile fixes on Chromium Win.
-
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (TestShell::waitTestFinished):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
-
-2012-07-18 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Add central error management to EFL port
- https://bugs.webkit.org/show_bug.cgi?id=91598
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Map WebKitNetworkError to NSURLErrorDomain when
- printing in DumpRenderTree so that the output
- matches the expected one.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (descriptionSuitableForTestResult):
-
-2012-07-18 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: start merging port/webkit.py into port/base.py
- https://bugs.webkit.org/show_bug.cgi?id=91559
-
- Reviewed by Ojan Vafai.
-
- Since all the non-test port implementations now derive from
- WebKitPort, there's no real point in keeping WebKitPort distinct
- from Port. This patch starts merging the two by moving nearly
- all of the webkit implementations of routines with no default
- behavior into base.py. The few that didn't move rely on
- additional infrastructure that should be refactored differently
- (like the image diffing, which should probably be its own
- class) and deserve their own patches.
-
- This patch should just be moving code around, and require no
- additional tests; in fact, we can delete the tests that were
- asserting virtual methods in the base class.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_search_path):
- (Port.check_build):
- (Port):
- (Port._check_driver):
- (Port._check_port_build):
- (Port.check_image_diff):
- (Port.driver_name):
- (Port.default_results_directory):
- (Port.to.setup_environ_for_server):
- (Port._path_to_apache):
- (Port._is_redhat_based):
- (Port._is_debian_based):
- (Port._apache_config_file_name_for_platform):
- (Port._path_to_apache_config_file):
- (Port._build_path):
- (Port._path_to_driver):
- (Port._path_to_webcore_library):
- (Port._path_to_helper):
- (Port._path_to_image_diff):
- (Port._path_to_wdiff):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_httpd_returns_error_code):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort):
- (WebKitPort._build_driver_flags):
- (WebKitPort._read_image_diff):
- (WebKitPort.skipped_layout_tests):
-
-2012-07-18 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Moving the mock create* WebRTC calls into a shadow Platform class
- https://bugs.webkit.org/show_bug.cgi?id=86215
-
- Reviewed by Adam Barth.
-
- Adding a shadow Platform object that is used to override some WebKit::Platform funtions to
- instead create mock objects. No actual mock objects created yet.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (WebKitSupportTestEnvironment::WebKitSupportTestEnvironment):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp: Copied from Tools/DumpRenderTree/chromium/config.h.
- (MockWebKitPlatformSupport::create):
- (MockWebKitPlatformSupport::MockWebKitPlatformSupport):
- (MockWebKitPlatformSupport::cryptographicallyRandomValues):
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h: Copied from Tools/DumpRenderTree/chromium/config.h.
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/config.h:
-
-2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [CMake][EFL] Build and run TestWebKitAPI unit tests
- https://bugs.webkit.org/show_bug.cgi?id=90671
-
- Reviewed by Daniel Bates.
-
- This patch enables almost for free a significant amount of test for the
- WebKit C API, WTF and KURL. It makes easy for CMake based ports to
- enable TestWebKitAPI since the missing bits to implement are
- relatively simple.
-
- * CMakeLists.txt:
- * TestWebKitAPI/CMakeLists.txt: Added.
- * TestWebKitAPI/PlatformEfl.cmake: Added.
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/config.h:
- * TestWebKitAPI/efl/InjectedBundleController.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * TestWebKitAPI/efl/PlatformUtilities.cpp: Added.
- (TestWebKitAPI):
- (Util):
- (TestWebKitAPI::Util::run):
- (TestWebKitAPI::Util::sleep):
- (TestWebKitAPI::Util::createURLForResource):
- (TestWebKitAPI::Util::createInjectedBundlePath):
- (TestWebKitAPI::Util::URLForNonExistentResource):
- * TestWebKitAPI/efl/PlatformWebView.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::initEcoreEvas):
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::page):
- * TestWebKitAPI/efl/main.cpp: Added.
- (checkForUseX11WindowArgument):
- (main):
-
-2012-07-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [CMake][EFL] Building jsc causes reconfiguration
- https://bugs.webkit.org/show_bug.cgi?id=91387
-
- Reviewed by Daniel Bates.
-
- We should remove CMakeCache only when running build-webkit script,
- otherwise it will cause a reconfiguration every time someone calls
- generateBuildSystemFromCMakeProject(). We were re-building "jsc" and
- not running WebKit2 unit tests on the bots because the project was
- reconfigured with default values by the scripts that run these tests.
-
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (removeCMakeCache):
- (generateBuildSystemFromCMakeProject):
-
-2012-07-18 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL][DRT] Add support for Web Inspector in WebKit-EFL DRT
- https://bugs.webkit.org/show_bug.cgi?id=87935
-
- Reviewed by Andreas Kling.
-
- Web Inspector will be shown when path or url contains "inspector/".
- Dumprendertree should wait util web inspector resources are loaded totally
- and handle the signals for creating or removing a view of web inspector.
- ("inspector,view,create" and "inspector,view,close")
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (shouldOpenWebInspector):
- (createLayoutTestController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::createWebInspectorView):
- (DumpRenderTreeChrome::removeWebInspectorView):
- (DumpRenderTreeChrome::waitInspectorLoadFinished):
- (DumpRenderTreeChrome::onInspectorViewCreate):
- (DumpRenderTreeChrome::onInspectorViewClose):
- (DumpRenderTreeChrome::onInspectorFrameLoadFinished):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onConsoleMessage):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::showWebInspector):
- (LayoutTestController::closeWebInspector):
- (LayoutTestController::evaluateInWebInspector):
-
-2012-07-18 Simon Hausmann <simon.hausmann@nokia.com>
-
- [ANGLE] On QT, use Bison and Flex during ANGLE build
- https://bugs.webkit.org/show_bug.cgi?id=91108
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/default_post.prf: Add support for variable_out to our generators, to allow
- generating not only for SOURCES but also ANGLE_SOURCES (in this bug)
-
-2012-07-18 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] plugin tests should not be disabled for WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=91604
-
- Reviewed by Simon Hausmann.
-
- Instead of not building TestNetscapePlugIn, we could programatically
- disable actually loading it from WTR until https://bugs.webkit.org/show_bug.cgi?id=86620
- has been solved, so we can still test plugins on WebKit1.
-
- * Tools.pro:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::initializeTestPluginDirectory):
-
-2012-07-18 Mario Sanchez Prada <msanchez@igalia.com>
-
- [WK2][GTK] Implement AccessibilityUIElement in WKTR for GTK
- https://bugs.webkit.org/show_bug.cgi?id=89223
-
- Reviewed by Chris Fleizach.
-
- Implemented AccessibilityUIElement in WKTR for GTK, based in the
- implementation present in DumpRenderTree.
-
- Added new files in gtk/ and updated the cross-platform ones.
-
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp: Added.
- (WTR):
- (WTR::attributeSetToString):
- (WTR::checkElementState):
- (WTR::indexRangeInTable):
- (WTR::alterCurrentValue):
- (WTR::AccessibilityUIElement::AccessibilityUIElement):
- (WTR::AccessibilityUIElement::~AccessibilityUIElement):
- (WTR::AccessibilityUIElement::isEqual):
- (WTR::AccessibilityUIElement::getChildren):
- (WTR::AccessibilityUIElement::getChildrenWithRange):
- (WTR::AccessibilityUIElement::childrenCount):
- (WTR::AccessibilityUIElement::elementAtPoint):
- (WTR::AccessibilityUIElement::indexOfChild):
- (WTR::AccessibilityUIElement::childAtIndex):
- (WTR::AccessibilityUIElement::linkedUIElementAtIndex):
- (WTR::AccessibilityUIElement::ariaOwnsElementAtIndex):
- (WTR::AccessibilityUIElement::ariaFlowToElementAtIndex):
- (WTR::AccessibilityUIElement::disclosedRowAtIndex):
- (WTR::AccessibilityUIElement::rowAtIndex):
- (WTR::AccessibilityUIElement::selectedChildAtIndex):
- (WTR::AccessibilityUIElement::selectedChildrenCount):
- (WTR::AccessibilityUIElement::selectedRowAtIndex):
- (WTR::AccessibilityUIElement::titleUIElement):
- (WTR::AccessibilityUIElement::parentElement):
- (WTR::AccessibilityUIElement::disclosedByRow):
- (WTR::AccessibilityUIElement::attributesOfLinkedUIElements):
- (WTR::AccessibilityUIElement::attributesOfDocumentLinks):
- (WTR::AccessibilityUIElement::attributesOfChildren):
- (WTR::AccessibilityUIElement::allAttributes):
- (WTR::AccessibilityUIElement::stringAttributeValue):
- (WTR::AccessibilityUIElement::numberAttributeValue):
- (WTR::AccessibilityUIElement::uiElementAttributeValue):
- (WTR::AccessibilityUIElement::boolAttributeValue):
- (WTR::AccessibilityUIElement::isAttributeSettable):
- (WTR::AccessibilityUIElement::isAttributeSupported):
- (WTR::AccessibilityUIElement::parameterizedAttributeNames):
- (WTR::AccessibilityUIElement::role):
- (WTR::AccessibilityUIElement::subrole):
- (WTR::AccessibilityUIElement::roleDescription):
- (WTR::AccessibilityUIElement::title):
- (WTR::AccessibilityUIElement::description):
- (WTR::AccessibilityUIElement::orientation):
- (WTR::AccessibilityUIElement::stringValue):
- (WTR::AccessibilityUIElement::language):
- (WTR::AccessibilityUIElement::helpText):
- (WTR::AccessibilityUIElement::x):
- (WTR::AccessibilityUIElement::y):
- (WTR::AccessibilityUIElement::width):
- (WTR::AccessibilityUIElement::height):
- (WTR::AccessibilityUIElement::clickPointX):
- (WTR::AccessibilityUIElement::clickPointY):
- (WTR::AccessibilityUIElement::intValue):
- (WTR::AccessibilityUIElement::minValue):
- (WTR::AccessibilityUIElement::maxValue):
- (WTR::AccessibilityUIElement::valueDescription):
- (WTR::AccessibilityUIElement::insertionPointLineNumber):
- (WTR::AccessibilityUIElement::isActionSupported):
- (WTR::AccessibilityUIElement::isEnabled):
- (WTR::AccessibilityUIElement::isRequired):
- (WTR::AccessibilityUIElement::isFocused):
- (WTR::AccessibilityUIElement::isSelected):
- (WTR::AccessibilityUIElement::isExpanded):
- (WTR::AccessibilityUIElement::isChecked):
- (WTR::AccessibilityUIElement::hierarchicalLevel):
- (WTR::AccessibilityUIElement::speak):
- (WTR::AccessibilityUIElement::ariaIsGrabbed):
- (WTR::AccessibilityUIElement::ariaDropEffects):
- (WTR::AccessibilityUIElement::lineForIndex):
- (WTR::AccessibilityUIElement::rangeForLine):
- (WTR::AccessibilityUIElement::rangeForPosition):
- (WTR::AccessibilityUIElement::boundsForRange):
- (WTR::AccessibilityUIElement::stringForRange):
- (WTR::AccessibilityUIElement::attributedStringForRange):
- (WTR::AccessibilityUIElement::attributedStringRangeIsMisspelled):
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
- (WTR::AccessibilityUIElement::attributesOfColumnHeaders):
- (WTR::AccessibilityUIElement::attributesOfRowHeaders):
- (WTR::AccessibilityUIElement::attributesOfColumns):
- (WTR::AccessibilityUIElement::attributesOfRows):
- (WTR::AccessibilityUIElement::attributesOfVisibleCells):
- (WTR::AccessibilityUIElement::attributesOfHeader):
- (WTR::AccessibilityUIElement::rowCount):
- (WTR::AccessibilityUIElement::columnCount):
- (WTR::AccessibilityUIElement::indexInTable):
- (WTR::AccessibilityUIElement::rowIndexRange):
- (WTR::AccessibilityUIElement::columnIndexRange):
- (WTR::AccessibilityUIElement::cellForColumnAndRow):
- (WTR::AccessibilityUIElement::horizontalScrollbar):
- (WTR::AccessibilityUIElement::verticalScrollbar):
- (WTR::AccessibilityUIElement::selectedTextRange):
- (WTR::AccessibilityUIElement::setSelectedTextRange):
- (WTR::AccessibilityUIElement::increment):
- (WTR::AccessibilityUIElement::decrement):
- (WTR::AccessibilityUIElement::showMenu):
- (WTR::AccessibilityUIElement::press):
- (WTR::AccessibilityUIElement::setSelectedChild):
- (WTR::AccessibilityUIElement::accessibilityValue):
- (WTR::AccessibilityUIElement::documentEncoding):
- (WTR::AccessibilityUIElement::documentURI):
- (WTR::AccessibilityUIElement::url):
- (WTR::AccessibilityUIElement::addNotificationListener):
- (WTR::AccessibilityUIElement::removeNotificationListener):
- (WTR::AccessibilityUIElement::isFocusable):
- (WTR::AccessibilityUIElement::isSelectable):
- (WTR::AccessibilityUIElement::isMultiSelectable):
- (WTR::AccessibilityUIElement::isVisible):
- (WTR::AccessibilityUIElement::isOffScreen):
- (WTR::AccessibilityUIElement::isCollapsed):
- (WTR::AccessibilityUIElement::isIgnored):
- (WTR::AccessibilityUIElement::hasPopup):
- (WTR::AccessibilityUIElement::takeFocus):
- (WTR::AccessibilityUIElement::takeSelection):
- (WTR::AccessibilityUIElement::addSelection):
- (WTR::AccessibilityUIElement::removeSelection):
- (WTR::AccessibilityUIElement::textMarkerRangeForElement):
- (WTR::AccessibilityUIElement::textMarkerRangeLength):
- (WTR::AccessibilityUIElement::previousTextMarker):
- (WTR::AccessibilityUIElement::nextTextMarker):
- (WTR::AccessibilityUIElement::stringForTextMarkerRange):
- (WTR::AccessibilityUIElement::textMarkerRangeForMarkers):
- (WTR::AccessibilityUIElement::startTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::endTextMarkerForTextMarkerRange):
- (WTR::AccessibilityUIElement::textMarkerForPoint):
- (WTR::AccessibilityUIElement::accessibilityElementForTextMarker):
- (WTR::AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute):
- (WTR::AccessibilityUIElement::indexForTextMarker):
- (WTR::AccessibilityUIElement::isTextMarkerValid):
- (WTR::AccessibilityUIElement::textMarkerForIndex):
-
- Add documentEncoding and documentURI to AccessibilityUIElement.idl.
-
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
-
-2012-07-18 Alexis Menard <alexis.menard@openbossa.org>
-
- [EFL] Build fix in WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=91567
-
- Reviewed by Kentaro Hara.
-
- sleep() is defined in unistd.h, we need to include it.
-
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
-
-2012-07-18 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] Unreviewed gardening after r122913
- https://bugs.webkit.org/show_bug.cgi?id=91601
-
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TrivialMockPort.process_kill_time):
-
-2012-07-17 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Run ref tests together to avoid expensive driver restarts
- https://bugs.webkit.org/show_bug.cgi?id=91533
-
- Reviewed by Dirk Pranke.
-
- Though DriverProxy maintains two drivers to support pixel tests and non-pixel tests,
- chromium-android uses another way because it can't support multiple drivers.
- It restarts the driver when pixel-test mode changes (e.g. when running a ref test after
- a normal test in --no-pixel-tests mode). However restarting driver is expensive on
- Android (several seconds each time). To reduce the cost, a command line option
- '--shard-ref-tests' is added to group ref tests in dedicated shards.
- The option is by default enabled on Android.
-
- Will remove the option once DRT supports switching pixel test mode during one run.
- (https://bugs.webkit.org/show_bug.cgi?id=91538, https://bugs.webkit.org/show_bug.cgi?id=91539)
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._shard_tests):
- (Manager._shard_in_two):
- (Manager._shard_by_directory):
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker._update_test_input):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-07-17 Don Olmstead <don.olmstead@am.sony.com>
-
- NRWT The time before server_process kills DRT should be variable
- https://bugs.webkit.org/show_bug.cgi?id=91542
-
- Reviewed by Dirk Pranke.
-
- Added the ability to configure the amount of time
- server_process waits before killing the DRT process
- during the call to stop.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.variable.process_kill_time):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.stop):
-
-2012-07-17 Alexis Menard <alexis.menard@openbossa.org>
-
- webkitdirs.pm should fallback to uname -m if arch is not present.
- https://bugs.webkit.org/show_bug.cgi?id=91543
-
- Reviewed by Martin Robinson.
-
- It seems that coreutils is moving away from the 'arch' command. Archlinux
- for example doesn't ship it anymore (coreutils 8.17). We can then fallback
- to 'uname -m' to find out the architecture.
-
- * Scripts/webkitdirs.pm:
- (determineArchitecture):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: rename printer.print_update to printer.write_update to match metered_stream
- https://bugs.webkit.org/show_bug.cgi?id=91557
-
- Reviewed by Ojan Vafai.
-
- Now that all of the printing logic is in printer.py, I want the
- public interface to printer to follow the meteredstream
- interface where possible. renaming write_update() gets us close.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- (Manager._set_up_run):
- (Manager.start_servers_with_lock):
- (Manager.stop_servers_with_lock):
- (Manager._clobber_old_results):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.write_update):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_write_update):
-
-2012-07-17 Tony Chang <tony@chromium.org>
-
- Fix a bug where optimize-baselines would incorrectly fail to optimize
- https://bugs.webkit.org/show_bug.cgi?id=91551
-
- Reviewed by Adam Barth.
-
- In some cases, optimize-baseline would correctly optimize the results, but because
- we weren't filtering the virtual ports out of _results_by_port_name, we thought
- that we had failed to optimize.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._find_optimal_result_placement): No virtual filtering here.
- (BaselineOptimizer._filtered_results_by_port_name): New function that filters out virtual directories.
- (BaselineOptimizer.optimize): Filter out virtual ports.
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (TestBaselineOptimizer._move_baselines): Add a stub so we don't actual move results.
- (BaselineOptimizerTest._assertOptimization): Call optimize and verify that the right files were moved.
- (BaselineOptimizerTest._assertOptimizationFailed): Add a method for when optimization should fail.
- (BaselineOptimizerTest.test_common_directory_includes_root): Update since this test should fail.
- (BaselineOptimizerTest.test_virtual_ports_filtered): New test case that demonstrates the bug.
-
-2012-07-17 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Add --encode-binary command line option for DRT
- https://bugs.webkit.org/show_bug.cgi?id=91532
-
- Reviewed by Adam Barth.
-
- When the option presents, DRT will encode binary output data in base64.
- ChromiumAndroidPort will pass the option because 'adb shell' doesn't support
- binary data output.
-
- This change is a refactoring to replace the original hard-coded code for Android.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::TestEventPrinter):
- (TestEventPrinter::handleAudio): New function replacing the original handleAudioHeader
- (TestEventPrinter::handleImage):
- (TestEventPrinter::handleBinary): Extracted common function for handleAudio and handleImage
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::initialize):
- (TestShell::dump):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- (TestShell::setEncodeBinary):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py: Add --encode-binary to additional_drt_flags
- (ChromiumAndroidPort.__init__):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move per-test result output into printing.py
- https://bugs.webkit.org/show_bug.cgi?id=91465
-
- Reviewed by Ojan Vafai.
-
- This moves the last substantive logging/printing code from the
- manager into printing.py. Subsequent patches in this thread can
- largely focus on cleaning up printing.py and will leave the rest
- of the code alone.
-
- This patch also removes manager.update() and
- manager.update_summary(), two routines that were no longer being
- used or needed (they have been dead for a long time but I didn't
- notice them until now).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.results_directory):
- (Manager._look_for_new_crash_logs):
- (Manager._update_summary_with_result):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_finished_test):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move config-specific logging to printing.py
- https://bugs.webkit.org/show_bug.cgi?id=91450
-
- Reviewed by Ojan Vafai.
-
- More refactoring ... this moves the 'config' output to
- printing.py.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._resize_shards):
- (Manager._run_tests):
- (Manager._upload_json_files):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.get_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_config):
- (Printer.print_workers_and_shards):
- (Printer._print_config):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_fallback_path_in_config):
- (Testprinter.test_print_config):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up logging when we're only running one chunk of the tests
- https://bugs.webkit.org/show_bug.cgi?id=91447
-
- Reviewed by Ojan Vafai.
-
- Apparently we were creating a 'tests_run.txt' in the results
- directory if we were only running one chunk of the tests; after
- 3+ years of hacking on this code, that was news to me, so I'm
- guessing no one uses this. I'm removing this, and changing the
- _print_expected calls to debug messages to simplify the
- layering.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._split_into_chunks_if_necessary):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- Fix regression in style checker introduced in r122868.
- https://bugs.webkit.org/show_bug.cgi?id=91470
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_FileState.__init__):
-
-2012-07-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move the bulk of the "expected" output to printing.py
- https://bugs.webkit.org/show_bug.cgi?id=91442
-
- Reviewed by Ojan Vafai.
-
- More printing-related refactoring. This moves all of the code
- that prints the results we expect to get, but doesn't move a few
- dangling printfs (those'll get hit in a later patch).
-
- No functional changes; covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._split_into_chunks_if_necessary):
- (Manager.prepare_lists_and_print_output):
- (Manager.print_config):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_expected):
- (Printer):
- (Printer._print_expected_results_of_type):
- (Printer._num_digits):
- (Printer._print_expected):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_expected):
-
-2012-07-17 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Replace 0 by NULL in public headers documentation
- https://bugs.webkit.org/show_bug.cgi?id=91470
-
- Reviewed by Dirk Pranke.
-
- Fix style checking to properly detect C headers as C
- files. Without this change, the style script would
- complain if we use NULL (instead of 0 / null) in C
- headers.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_FileState.__init__):
- (_FileState.is_c):
- (_FileState.is_c_or_objective_c):
-
-2012-07-17 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [chromium] remove --test-shell support from DRT
- https://bugs.webkit.org/show_bug.cgi?id=86927
-
- Reviewed by Adam Barth.
-
- Now no one use --test-shell. All of us use the standard DRT mode.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp: Removed support of --test-shell and --pixel-tests=filename options. (--pixel-tests without '=' is kept for DRT mode.)
- (runTest):
- (main):
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::TestEventPrinter):
- (TestEventPrinter::~TestEventPrinter):
- (TestEventPrinter::handleTestHeader):
- (TestEventPrinter::handleTimedOut):
- (TestEventPrinter::handleTextHeader):
- (TestEventPrinter::handleTextFooter):
- (TestEventPrinter::handleAudioHeader):
- (TestEventPrinter::handleAudioFooter):
- (TestEventPrinter::handleImage): Removed the unused filename parameter.
- (TestEventPrinter::handleTestFooter):
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter): Made it a concrete class because we have only one implementation.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::initialize):
- (TestShell::dumpImage):
- * DumpRenderTree/chromium/TestShell.h:
- (TestParams): Removed pixelFileName field.
- (TestShell):
-
-2012-07-17 Xianzhu Wang <wangxianzhu@chromium.org>
-
- remove ChromiumDriver from NRWT
- https://bugs.webkit.org/show_bug.cgi?id=88478
-
- Now WebKitDriver has replaced ChromiumDriver since test_shell mode is deperecated.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py: Removed ChromiumDriver code.
- (ChromiumPort._driver_class): Removed. WebKitPort._driver_class() will be used.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
-
-2012-07-17 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- Unreviewed. Add QtGraphics, TextureMapper and OpenGL to watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-07-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122828.
- http://trac.webkit.org/changeset/122828
- https://bugs.webkit.org/show_bug.cgi?id=91516
-
- DumpRenderTree crashes after printing test results. (Requested
- by vsevik on #webkit).
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::TestInterfaces):
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::bindTo):
- (TestInterfaces::resetAll):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::accessibilityController):
- (TestShell):
-
-2012-07-17 Gabor Ballabas <gaborb@inf.u-szeged.hu>
-
- [Qt][V8] Remove the V8 related codepaths and configuration
- https://bugs.webkit.org/show_bug.cgi?id=90863
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit: Remove --v8 option.
-
-2012-07-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122834.
- http://trac.webkit.org/changeset/122834
- https://bugs.webkit.org/show_bug.cgi?id=91492
-
- it broke the chromium (Requested by kkristof on #webkit).
-
- * Scripts/build-webkit:
-
-2012-07-17 Gabor Ballabas <gaborb@inf.u-szeged.hu>
-
- [Qt][V8] Remove the V8 related codepaths and configuration
- https://bugs.webkit.org/show_bug.cgi?id=90863
-
- Reviewed by Simon Hausmann.
-
- * Scripts/build-webkit: Remove --v8 option.
-
-2012-07-17 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Add --use-test-fonts option to Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=91402
-
- Reviewed by Tor Arne Vestbø.
-
- Same stuff that already exists for QtTestBrowser.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
-
-2012-07-17 Adam Barth <abarth@webkit.org>
-
- [Chromium] TestInterfaces should be responsible for owning and binding AccessibilityController and TextInputController
- https://bugs.webkit.org/show_bug.cgi?id=91459
-
- Reviewed by Ryosuke Niwa.
-
- Rather than having TestShell own and bind each of these JavaScript APIs
- individually, TestShell should delegate that work to TestInterfaces.
- This patch moves AccessibilityController and TextInputController to be
- the responsibility of TestInterfaces.
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::TestInterfaces):
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::setWebView):
- (TestInterfaces::bindTo):
- (TestInterfaces::resetAll):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- (TestInterfaces::accessibilityController):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::accessibilityController):
- (TestShell):
-
-2012-07-17 Adam Barth <abarth@webkit.org>
-
- [Chromium] Move TextInputController into TestRunner.a
- https://bugs.webkit.org/show_bug.cgi?id=91457
-
- Reviewed by Ryosuke Niwa.
-
- This patch is purely moving code. TextInputController is one of the
- objects exposed to JavaScript and so should be in the TestRunner
- library.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/TextInputController.cpp: Renamed from Tools/DumpRenderTree/chromium/TextInputController.cpp.
- * DumpRenderTree/chromium/TestRunner/TextInputController.h: Renamed from Tools/DumpRenderTree/chromium/TextInputController.h.
-
-2012-07-17 Adam Barth <abarth@webkit.org>
-
- [Chromium] TextInputController shouldn't know about TestShell
- https://bugs.webkit.org/show_bug.cgi?id=91455
-
- Reviewed by Kent Tamura.
-
- This patch uses the same pattern we used for the
- AccessibilityController to remove the dependency on TestShell.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- * DumpRenderTree/chromium/TextInputController.cpp:
- (TextInputController::TextInputController):
- (TextInputController::insertText):
- (TextInputController::doCommand):
- (TextInputController::setMarkedText):
- (TextInputController::unmarkText):
- (TextInputController::hasMarkedText):
- (TextInputController::markedRange):
- (TextInputController::selectedRange):
- (TextInputController::firstRectForCharacterRange):
- (TextInputController::validAttributesForMarkedText):
- (TextInputController::setComposition):
- * DumpRenderTree/chromium/TextInputController.h:
- (WebKit):
- (TextInputController):
- (TextInputController::setWebView):
-
-2012-07-17 David Barr <davidbarr@chromium.org>
-
- Introduce ENABLE_CSS_IMAGE_ORIENTATION compile flag
- https://bugs.webkit.org/show_bug.cgi?id=89055
-
- Reviewed by Kent Tamura.
-
- The css3-images module is at candidate recommendation.
- http://www.w3.org/TR/2012/CR-css3-images-20120417/#the-image-orientation
-
- Add a configuration option for CSS image-orientation support, disabling it by default.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] Move Task.(cpp|h) into TestRunner.a
- https://bugs.webkit.org/show_bug.cgi?id=91446
-
- Reviewed by Ryosuke Niwa.
-
- Task is a dependency of EventSender, which needs to move into TestRunner.a.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/Task.cpp: Renamed from Tools/DumpRenderTree/chromium/Task.cpp.
- * DumpRenderTree/chromium/TestRunner/Task.h: Renamed from Tools/DumpRenderTree/chromium/Task.h.
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] Move AccessibilityController and AccessibilityUIElement into TestRunner.a
- https://bugs.webkit.org/show_bug.cgi?id=91443
-
- Reviewed by Tony Chang.
-
- Purely a file move (and a sorting of #includes).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/AccessibilityController.cpp: Renamed from Tools/DumpRenderTree/chromium/AccessibilityController.cpp.
- * DumpRenderTree/chromium/TestRunner/AccessibilityController.h: Renamed from Tools/DumpRenderTree/chromium/AccessibilityController.h.
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.cpp: Renamed from Tools/DumpRenderTree/chromium/AccessibilityUIElement.cpp.
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElement.h: Renamed from Tools/DumpRenderTree/chromium/AccessibilityUIElement.h.
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] AccessibilityController shouldn't know anything about TestShell
- https://bugs.webkit.org/show_bug.cgi?id=91441
-
- Reviewed by Tony Chang.
-
- This patch is a precursor to moving AccessibilityController.cpp into TestRunner.a.
-
- * DumpRenderTree/chromium/AccessibilityController.cpp:
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::getFocusedElement):
- (AccessibilityController::getRootElement):
- * DumpRenderTree/chromium/AccessibilityController.h:
- (WebKit):
- (AccessibilityController):
- (AccessibilityController::setWebView):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] Introduce TestInterfaces to hold all the JavaScript interfaces needed for LayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=91312
-
- Reviewed by Ryosuke Niwa.
-
- Looking forward to moving more objects into TestRunner.a, we're going
- to need an object to own all the interfaces and to put them through
- their lifecycle.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp: Added.
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h: Added.
-
-2012-07-16 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][WK2] Add APIs to support theme.
- https://bugs.webkit.org/show_bug.cgi?id=90107
-
- Reviewed by Hajime Morita.
-
- Override default theme path for MiniBrowser and WebKitTestRunner.
-
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c:
- (browserCreate):
- * WebKitTestRunner/PlatformEfl.cmake:
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-07-16 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][DRT] Implement dumpFrameScrollPosition
- https://bugs.webkit.org/show_bug.cgi?id=87638
-
- Reviewed by Hajime Morita.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (dumpFrameScrollPosition): Implemented.
- (shouldDumpFrameScrollPosition): Fixed wrong condition like other ports.
-
-2012-07-16 Don Olmstead <don.olmstead@am.sony.com>
-
- NRWRT Should provide a VS project to work on
- https://bugs.webkit.org/show_bug.cgi?id=91436
-
- Reviewed by Dirk Pranke.
-
- Adding VS2010 project for modifying webkitpy. Uses pytools
- <http://pytools.codeplex.com> which integrates python into
- Visual Studio.
-
- * Scripts/webkitpy/webkitpy.pyproj: Added.
- * Scripts/webkitpy/webkitpy.sln: Added.
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] Move GamepadController into TestRunner.a
- https://bugs.webkit.org/show_bug.cgi?id=91311
-
- Reviewed by Tony Chang.
-
- GamepadController looks like a simple class to move into TestRunner.a
- because it has almost zero dependence on TestShell.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp: Renamed from Tools/DumpRenderTree/chromium/CppBoundClass.cpp.
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.h: Renamed from Tools/DumpRenderTree/chromium/CppBoundClass.h.
- * DumpRenderTree/chromium/TestRunner/CppVariant.cpp: Renamed from Tools/DumpRenderTree/chromium/CppVariant.cpp.
- * DumpRenderTree/chromium/TestRunner/CppVariant.h: Renamed from Tools/DumpRenderTree/chromium/CppVariant.h.
- - GamepadController depends on these bindings helpers.
- * DumpRenderTree/chromium/TestRunner/GamepadController.cpp: Renamed from Tools/DumpRenderTree/chromium/GamepadController.cpp.
- * DumpRenderTree/chromium/TestRunner/GamepadController.h: Renamed from Tools/DumpRenderTree/chromium/GamepadController.h.
- - Just moved these files and removed the unused TestShell
- references.
- * DumpRenderTree/chromium/TestRunner/Stub.cpp: Removed.
- - No longer needed.
- * DumpRenderTree/chromium/TestShell.cpp:
- - Update call to constructor to avoid passing in this.
-
-2012-07-16 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-android] Don't use test_shell mode of DRT
- https://bugs.webkit.org/show_bug.cgi?id=88542
-
- Reviewed by Dirk Pranke.
-
- Test shell mode is about to be removed.
- Switch to use DRT mode for chromium-android.
-
- Summary of changes:
- 1. ChromiumAndroidDriver now inherits from WebKitDriver instead of ChromiumDriver (to be deprecated).
- 2. Conforms to the DRT mode protocol for input/output of DumpRenderTree.
- 3. Added support for Android 'adb shell' input/output (base64, newline mode, etc.)
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (DRTPrinter::handleImage): Outputs base64 on Android.
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit): Changed err_file to err_fifo, required by python ServerProcess.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.create_driver): Override to create driver without DriverProxy to ensure 1 Driver per run.
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver.cmd_line):
- (ChromiumAndroidDriver._deadlock_detector):
- (ChromiumAndroidDriver._drt_cmd_line):
- (ChromiumAndroidDriver.start):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver._start_once):
- (ChromiumAndroidDriver.run_test):
- (ChromiumAndroidDriver.stop):
- (ChromiumAndroidDriver._command_from_driver_input):
- (ChromiumAndroidDriver._read_prompt):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.test_driver_cmd_line):
- (ChromiumAndroidDriverTest.test_cmd_line):
- (ChromiumAndroidDriverTest):
- (ChromiumAndroidDriverTest.test_drt_cmd_line):
- (ChromiumAndroidDriverTest.test_read_prompt):
- (ChromiumAndroidDriverTest.test_command_from_driver_input):
- (ChromiumAndroidDriverTest.test_write_command_and_read_line):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.__init__): Added universal_newlines to handle Android 'adb shell' line ends.
- (ServerProcess._start):
- (ServerProcess._wait_for_data_and_update_buffers_using_select): Handles unexpected EOF which indicates crash on Android.
- (ServerProcess.stop): Added kill_directly parameter to kill the process without waiting it (which always timeouts for Android).
- (ServerProcess.replace_outputs): Added to combine different input/output pipes into one ServerProcess.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._command_from_driver_input):
- (WebKitDriver.run_test): Changed timeout origin so that slow start() on Android won't cause timeout of layout test case.
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (MockServerProcess.read_stdout):
- (MockServerProcess.start):
- (MockServerProcess):
- (MockServerProcess.stop):
- (MockServerProcess.kill):
- (WebKitDriverTest.test_read_block):
- (WebKitDriverTest.test_read_binary_block):
- (WebKitDriverTest.test_read_base64_block):
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move a bunch of printing code from manager.py to printing.py
- https://bugs.webkit.org/show_bug.cgi?id=91439
-
- Reviewed by Ojan Vafai.
-
- All of the logic that handles what gets logged should eventually
- live in printing.py; this patch moves a large chunk of code that
- prints all of the stuff after the run completes.
-
- There are no functional changes, this is just moving code
- around. Covered by existing tests (updated as necessary).
-
- This code is all pretty messy and most of it should be deleted
- (or extracted after the fact from results.json), but I'm saving
- that for further patches. My goal is just to manager.py to a
- more manageable state.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.prepare_lists_and_print_output):
- (Manager.run):
- (Manager._mark_interrupted_tests_as_skipped):
- (Manager._update_summary_with_result):
- (Manager._num_digits):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_interrupt_if_at_failure_limits):
- (ResultSummaryTest.summarized_results):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- (ResultSummary.add):
- Here we had to add a list of the slow tests to the result
- summary so that we didn't need to call back into the manager and
- the test expectations object to figure out if a test is SLOW.
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_results):
- (Printer):
- (Printer._print_timing_statistics):
- (Printer._print_aggregate_test_statistics):
- (Printer._print_individual_test_times):
- (Printer._print_test_list_timing):
- (Printer._print_directory_timings):
- (Printer._print_statistics_for_test_timings):
- (Printer._print_result_summary):
- (Printer._print_result_summary_entry):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_unexpected_results.get_unexpected_results):
- (Testprinter):
-
-2012-07-16 Adam Barth <abarth@webkit.org>
-
- [Chromium] Create a stub TestRunner.a target
- https://bugs.webkit.org/show_bug.cgi?id=91309
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/Stub.cpp: Added.
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: clean up logging to make it ninja-esque
- https://bugs.webkit.org/show_bug.cgi?id=91297
-
- Reviewed by Adam Barth.
-
- This patch changes the output of test-webkitpy to be closer to
- what ninja produces. Namely:
-
- If you are running with stderr writing to a tty (and not -v), we
- will no longer print '...' as tests complete. Instead, we use a
- metered stream and print entries of the form:
- '[X/Y] test_name passed/failed/erred'
- where X is the current test # and Y is the total number of tests.
-
- If you are running with stderr piped to a file or other non-tty
- object (or with -v), you get the same output, one per line for
- every test.
-
- In addition, if tests fail or err out, you get the stack trace
- immediately; you don't have to wait until the end of the run.
-
- Lastly, this change cleans up the unit tests for test-webkitpy
- itself to not confuse the logger and to work cleanly w/ multiple
- processes. It looks like between this and all the clean up in
- MessagePool that happened as it landed, we can now run
- multiprocessing tests in parallel.
-
- * Scripts/webkitpy/test/finder.py:
- (Finder._default_names):
- * Scripts/webkitpy/test/finder_unittest.py:
- (FinderTest.setUp):
- (FinderTest.tearDown):
- * Scripts/webkitpy/test/printer.py:
- (Printer.__init__):
- (Printer.configure):
- (Printer.print_started_test):
- (Printer.print_finished_test):
- (Printer._test_line):
- (Printer.print_result):
- * Scripts/webkitpy/test/runner.py:
- (Runner.run):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.setUp):
- (RunnerTest):
- (RunnerTest.tearDown):
- (RunnerTest.assert_run):
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest.test_timing):
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: handle failures properly when running in parallel
- https://bugs.webkit.org/show_bug.cgi?id=91416
-
- Reviewed by Adam Barth.
-
- It turns out that unittest.TestResults contain a handle to the
- test method itself, which isn't picklable; it's sufficient to just
- store the test name instead of the actual method. By doing so
- we can move the test_name() method from the printer to the
- runner where it belongs (so the printer is less dependent on the
- unittest framework's data structures).
-
- This change should really have a test but I don't know how to
- write one that properly captures the behavior and won't cause
- test-webkitpy itself to fail. I've verified the fix by hand, at
- least, in the meantime.
-
- * Scripts/webkitpy/test/printer.py:
- (Printer.__init__):
- (Printer.print_result):
- * Scripts/webkitpy/test/runner.py:
- (_test_name):
- (Runner.all_test_names):
- (_Worker.handle):
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: handle failures properly when running in parallel
- https://bugs.webkit.org/show_bug.cgi?id=91416
-
- Reviewed by Tony Chang.
-
- It turns out that unittest.TestResults contain a handle to the
- test method itself, which isn't picklable; it's sufficient to just
- store the test name instead of the actual method. By doing so
- we can move the test_name() method from the printer to the
- runner where it belongs (so the printer is less dependent on the
- unittest framework's data structures).
-
- This change should really have a test but I don't know how to
- write one that properly captures the behavior and won't cause
- test-webkitpy itself to fail. I've verified the fix by hand, at
- least, in the meantime.
-
- * Scripts/webkitpy/test/printer.py:
- (Printer.__init__):
- (Printer.print_result):
- * Scripts/webkitpy/test/runner.py:
- (_test_name):
- (Runner.all_test_names):
- (_Worker.handle):
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: run tests in parallel
- https://bugs.webkit.org/show_bug.cgi?id=91294
-
- Reviewed by Ojan Vafai.
-
- This change adds support for running tests in parallel. This is
- not yet on by default, since the logging isn't very pretty w/
- parallel tests.
-
- Also, there are some (multiprocessing-related) tests that can't be
- run in parallel and so we skip them in that situation; I need to
- come up with a mechanism for dealing with this, since you
- apparently can't use multiprocessing as both a parent and a
- child process.
-
- * Scripts/webkitpy/test/finder.py:
- (Finder.find_names):
- (Finder._default_names):
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester.run):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_no_tests_found):
- * Scripts/webkitpy/test/runner.py:
- (Runner.run):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest.test_timing):
-
-2012-07-16 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: use message pools
- https://bugs.webkit.org/show_bug.cgi?id=91292
-
- Reviewed by Ojan Vafai.
-
- Restructure the test-running code to be message-driven and
- use a MessagePool; note that this does not yet actually run the
- tests in parallel.
-
- Also clean up the unit tests so that the fake loader is passed
- to the _Worker properly, and reduce a lot of the cut&pasted code
- in the tests.
-
- No functional changes; covered by existing tests.
-
- * Scripts/webkitpy/test/printer.py:
- (Printer.print_started_test):
- (Printer.print_finished_test):
- * Scripts/webkitpy/test/runner.py:
- (Runner.__init__):
- (Runner.run):
- (Runner.handle):
- (_Worker):
- (_Worker.__init__):
- (_Worker.handle):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.assert_run):
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest.test_timing):
-
-2012-07-16 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix Qt5 module dependencies
- https://bugs.webkit.org/show_bug.cgi?id=91388
-
- Reviewed by Laszlo Gombos.
-
- Removed ancient qtscript and qtxmlpatterns module dependencies.
-
- * qmake/qt_webkit.pri:
-
-2012-07-16 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- run-webkit-test returns 254 at exit even when it succeeds
- https://bugs.webkit.org/show_bug.cgi?id=91370
-
- Reviewed by Simon Hausmann.
-
- sys.exit() is implemented by raising SystemExit which inherits from
- BaseException. Since we are catching BaseException, run_webkit_tests.py
- was always returning an error code.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2012-07-15 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix make distcheck.
-
- * GNUmakefile.am: Add missing file to compilation.
-
-2012-07-15 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Add EFLWebKit2PublicAPI, EFLWebKit2PlatformSpecific to watch list.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-07-15 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Add gyuyoung.kim@samsung.com to watch list.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-07-15 Joseph Pecoraro <pecoraro@apple.com>
-
- Windowless WebView not firing JavaScript load event if there is a media element
- https://bugs.webkit.org/show_bug.cgi?id=91331
-
- Reviewed by Eric Carlson.
-
- Test a windowless WebView loading a page with a media element. The load
- event should happen on the next spin of the run loop, but we spin check
- the page, with a timeout of 250ms.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.html: Added.
- * TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm: Added.
- (-[WindowlessWebViewWithMediaFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (TestWebKitAPI::spinLoop): Spin check with timeout. Runs a block each spin to early bail.
- (TestWebKitAPI::TEST):
-
-2012-07-14 Benjamin Poulain <bpoulain@apple.com>
-
- [Mac] Do not try to update the cache model for every WebPreferences change
- https://bugs.webkit.org/show_bug.cgi?id=91302
-
- Reviewed by Joseph Pecoraro.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122665.
- http://trac.webkit.org/changeset/122665
- https://bugs.webkit.org/show_bug.cgi?id=91321
-
- Broke Mac builds (Requested by rniwa on #webkit).
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm: Removed.
-
-2012-07-13 Benjamin Poulain <bpoulain@apple.com>
-
- [Mac] Do not try to update the cache model for every WebPreferences change
- https://bugs.webkit.org/show_bug.cgi?id=91302
-
- Reviewed by Joseph Pecoraro.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-test outputs the wrong number of tests executed when some are skipped.
- https://bugs.webkit.org/show_bug.cgi?id=89894
-
- Reviewed by Ojan Vafai.
-
- Fix the logging of the actual number of tests run so that tests
- that are skipped aren't included.
-
- Also revamp the 'expected' output so we distinguish the number
- of tests found from the number of tests run (to account for
- --repeat-each and --iterations).
-
- Covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.prepare_lists_and_print_output):
- (Manager._log_num_workers):
- (Manager.run):
- (Manager._print_result_summary):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- (ResultSummary.add):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_one_line_summary):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_one_line_summary):
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: actually print the exception name and message for otherwise unhandled exceptions
- https://bugs.webkit.org/show_bug.cgi?id=91305
-
- Reviewed by Adam Barth.
-
- Two more places where I was printing the stack trace but not the
- exception itself :(. These two spots can't easily be
- unit-tested, but I tested them by hand.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
-
-2012-07-13 Josh Hawn <jhawn@apple.com>
-
- Fix for WebContext::getWebCoreStatistics() causes crash if no m_process
- https://bugs.webkit.org/show_bug.cgi?id=91116
-
- Reviewed by Simon Fraser.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Added new test file.
- * TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp: Added.
- (TestWebKitAPI::wkContextGetStatisticsCallback):
- Tests that callback function receives an error.
- (TestWebKitAPI::TEST):
- Creates a dummy web context object (no web process).
- Calls WKContextGetStatistics with the web context and test callback.
- The test callback should get an expected error.
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: move printing-related code out of the runner
- https://bugs.webkit.org/show_bug.cgi?id=91289
-
- Reviewed by Ryosuke Niwa.
-
- More refactoring ... this moves all printing-related stuff out
- of runner.py and into printer.py.
-
- No functional changes; covered by existing tests.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- * Scripts/webkitpy/test/printer.py:
- (Printer.__init__):
- (Printer):
- (Printer.test_name):
- (Printer.print_started_test):
- (Printer.print_finished_test):
- (Printer.print_result):
- * Scripts/webkitpy/test/runner.py:
- (Runner.__init__):
- (Runner.all_test_names):
- (Runner.run):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest.test_timing):
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: split printing/logging code for test-webkitpy out into a new class
- https://bugs.webkit.org/show_bug.cgi?id=91282
-
- Reviewed by Ojan Vafai.
-
- This patch is the first step at splitting all of the
- printing/logging code out separately from the actual
- test-running code.
-
- This is just moving stuff around; no new functionality and no
- new tests needed.
-
- * Scripts/webkitpy/test/finder_unittest.py:
- (FinderTest.setUp):
- * Scripts/webkitpy/test/main.py:
- (Tester.__init__):
- (Tester._parse_args):
- (Tester.run):
- (Tester._run_tests):
- (Tester._log_exception):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_no_tests_found):
- * Scripts/webkitpy/test/printer.py: Added.
- (Printer):
- (Printer.__init__):
- (Printer.configure):
- (Printer.configure.filter):
- (_CaptureAndPassThroughStream):
- (_CaptureAndPassThroughStream.__init__):
- (_CaptureAndPassThroughStream.write):
- (_CaptureAndPassThroughStream._message_is_from_pdb):
- (_CaptureAndPassThroughStream.flush):
- (_CaptureAndPassThroughStream.getvalue):
-
-2012-07-13 James Simonsen <simonjam@chromium.org>
-
- [Navigation Timing] Imported W3C tests contain duplicates and are DOS formatted
- https://bugs.webkit.org/show_bug.cgi?id=91184
-
- Reviewed by Adam Barth.
-
- The upstream 'html5' tests are just duplicates of the 'html' tests.
-
- * Scripts/import-w3c-performance-wg-tests:
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: hide yield_to_caller from callers in MessagePool :)
- https://bugs.webkit.org/show_bug.cgi?id=91269
-
- Reviewed by Adam Barth.
-
- yield_to_caller() was an optimization/hack to allow us to run
- both manager and worker in a single process/loop without
- starving the manager while the worker is running tests. The
- worker was required to call yield_to_caller() periodically. It
- turns out that I can get equivalent responsiveness by yielding
- inside the MessagePool every time the worker posts a message, and this
- allows me to no longer need the worker to call the routine. Thus
- I rename yield_to_caller() to _yield_to_manager() to be a little
- clearer about its purpose.
-
- Tested by existing tests.
-
- * Scripts/webkitpy/common/message_pool.py:
- (_Worker.run):
- (_Worker.post):
- (_Worker._yield_to_manager):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.handle):
-
-2012-07-13 Adam Barth <abarth@webkit.org>
-
- EWSTools should be able to build a commit-queue instance from scratch
- https://bugs.webkit.org/show_bug.cgi?id=91264
-
- Reviewed by Eric Seidel.
-
- I've been using this script to build commit-queue instances on Google
- Compute Engine and it seems to work.
-
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh: Added.
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: make worker.start() and worker.stop() optional in the messagepool
- https://bugs.webkit.org/show_bug.cgi?id=91170
-
- Reviewed by Ojan Vafai.
-
- test-webkitpy will use messagepool workers that don't actually
- have any per-worker state, so they don't need start() and stop()
- methods. Now we will only call the methods if they exist; this
- means that workers only need to expose a handle() method.
-
- * Scripts/webkitpy/common/message_pool.py:
- (_Worker.terminate):
- (_Worker.run):
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- NRWT doesn't print exceptions
- https://bugs.webkit.org/show_bug.cgi?id=91129
-
- Reviewed by Ojan Vafai.
-
- Although we printed exceptions in most cases, if an unexpected
- exception (like a runtime error) was raised when creating a
- port, we wouldn't. This patch fixes that, and also cleans up
- how we were logging exceptions from the workers to be less
- verbose.
-
- Because of the corner cases where these errors are occurring,
- it's difficult to write automated unit tests for them. I've
- tested it quite a bit by hand, though.
-
- * Scripts/webkitpy/common/message_pool.py:
- (_MessagePool._close):
- (_MessagePool._handle_worker_exception):
- (_Worker.run):
- (_Worker._raise):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
-
-2012-07-13 Wei James <james.wei@intel.com>
-
- enable TestWebKitAPI/webkit_unit_tests apk on x86 android platform by adding abi support
- https://bugs.webkit.org/show_bug.cgi?id=91194
-
- Reviewed by Adam Barth.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-07-13 Simon Pena <spena@igalia.com>
-
- [GTK] Gardening: update API tests skipped list
- https://bugs.webkit.org/show_bug.cgi?id=91224
-
- Unreviewed gardening.
-
- Skip "next" and "previous" tests of FindController until bug #91083
- is fixed.
-
- * gtk/run-api-tests:
- (TestRunner):
-
-2012-07-13 Zeno Albisser <zeno@webkit.org>
-
- [Qt][WK2] Implement GraphicsSurface for Linux/GLX.
- https://bugs.webkit.org/show_bug.cgi?id=90881
-
- Enable GraphicsSurface for Linux based platforms
- whenever the Xcomposite extension is available.
-
- Reviewed by Noam Rosenthal.
-
- * qmake/config.tests/libXcomposite/libXcomposite.cpp: Added.
- (main):
- * qmake/config.tests/libXcomposite/libXcomposite.pro: Added.
- Add a configure test to detect Xcomposite extension and
- activate GraphicsSurface on linux in case the extension is available.
- * qmake/configure.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-13 David Grogan <dgrogan@chromium.org>
-
- nrwt: don't choke when printing invalid utf-8 to stderr
- https://bugs.webkit.org/show_bug.cgi?id=91181
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (TestResultWriter.write_stderr):
-
-2012-07-13 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: more class renaming cleanup
- https://bugs.webkit.org/show_bug.cgi?id=91182
-
- Reviewed by Adam Barth.
-
- More removing of the unnecessary "Test" prefix.
-
- * Scripts/webkitpy/test/finder.py:
- (_DirectoryTree):
- (Finder.add_tree):
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
- * Scripts/webkitpy/test/runner.py:
- (Runner):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_regular):
- (RunnerTest.test_verbose):
- (RunnerTest.test_timing):
-
-2012-07-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][EFL] Facilitate debugging of the Web Process
- https://bugs.webkit.org/show_bug.cgi?id=90768
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add a new --webprocess-cmd-prefix argument to
- run-webkit-tests script for EFL port. If provided,
- the prefix will be prepended to the command used
- to spawn the Web process. This can be used for
- debugging purposes with prefixes such as:
- "xterm -title renderer -e gdb --args".
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.__init__):
- (EflPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformRunUntil): Implement support for
- m_noTimeout timeout value.
-
-2012-07-12 Adam Barth <abarth@webkit.org>
-
- Fix crash in the commit-queue. We need to initialize self.port during __init__.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue.__init__):
- (CommitQueue.begin_work_queue):
-
-2012-07-12 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: rename test_finder to finder
- https://bugs.webkit.org/show_bug.cgi?id=91175
-
- Reviewed by Adam Barth.
-
- Rename test_finder -> finder, TestFinder -> Finder to remove
- some of the stutter in the names.
-
- * Scripts/webkitpy/test/finder.py: Renamed from Tools/Scripts/webkitpy/test/test_finder.py.
- * Scripts/webkitpy/test/finder_unittest.py: Renamed from Tools/Scripts/webkitpy/test/test_finder_unittest.py.
- * Scripts/webkitpy/test/main.py:
- (Tester.__init__):
-
-2012-07-12 Adam Barth <abarth@webkit.org>
-
- CommitQueue is confused about what port it is using
- https://bugs.webkit.org/show_bug.cgi?id=91040
-
- Reviewed by Dirk Pranke.
-
- On EC2, we explicitly pass --port to the commit-queue, but that
- requires editing the start-queue.sh script locally on each bot. In
- moving to Google Compute Engine, we're try to avoid any local edits to
- the EWSTools.
-
- Rather than passing --port to the commit-queue, this patch teaches the
- CommitQueue which port its running, which is the approach we use for
- the EWS bots.
-
- Mutating tool._deprecated_port is a bit ugly, but it's what we're doing
- currently for the EWS bots.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue):
- (CommitQueue.begin_work_queue):
- (CommitQueue.run_command):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest.test_commit_queue):
- (mock_run_webkit_patch):
- (test_rollout):
- (test_rollout_lands):
- (test_manual_reject_during_processing):
-
-2012-07-12 James Simonsen <simonjam@chromium.org>
-
- [Navigation Timing] Import the W3C Navigation Timing test suite
- https://bugs.webkit.org/show_bug.cgi?id=84887
-
- Reviewed by Tony Gentilcore.
-
- * Scripts/import-w3c-performance-wg-tests: Added.
-
-2012-07-12 Adam Barth <abarth@webkit.org>
-
- Unreviewed. Nit: git config files use tabs, not spaces.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-12 Kwang Yul Seo <skyul@company100.net>
-
- Unreviewed. Add Dongsung Huang to the list of contributors. He
- has submitted over 30 patches on texture mapper, canvas and image decoders.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-12 Kwang Yul Seo <skyul@company100.net>
-
- Unreviewed. Change my irc nickname to kseo.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up logging handlers, lint common.message_pool
- https://bugs.webkit.org/show_bug.cgi?id=91152
-
- Reviewed by Ojan Vafai.
-
- The unix implementation of multiprocessing clones any logging
- handlers from the parent process into the child; we currently
- don't want this behavior in our code, so I was hand-removing the
- installed handlers in the child process I knew about. After thinking
- about it further, I think it was simpler and safe enough to just
- remove all handlers in the child, since the message pool
- propagates any message from the child back into the parent.
-
- We can always change this in the future if it turns out to be an issue.
-
- I'm also fixing a couple of other lint warnings while I'm at it.
-
- * Scripts/webkitpy/common/message_pool.py:
- (_MessagePool.__exit__):
- (_MessagePool._handle_worker_exception):
- (_Worker._set_up_logging):
-
-2012-07-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: rename manager_worker_broker to message_pool
- https://bugs.webkit.org/show_bug.cgi?id=91145
-
- Reviewed by Ojan Vafai.
-
- Since the MessagePool interface is more generic (and simpler)
- now and will be reused by test-webkitpy, I'm renaming it and
- moving it to webkitpy.common.
-
- * Scripts/webkitpy/common/message_pool.py: Renamed from Tools/Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py.
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (TestRunInterruptedException.__reduce__):
- (Manager._run_tests.worker_factory):
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
-
-2012-07-12 Dirk Pranke <dpranke@chromium.org>
-
- nrwt crashes saving the output for a platform-specific expected test reference
- https://bugs.webkit.org/show_bug.cgi?id=90872
-
- Reviewed by Ojan Vafai.
-
- The expected output for a test is copied alongside the test
- itself in the layout-test-results directory; in other words, for
- foo/bar-expected.txt sits alongside foo/bar.html even if we're
- actually using platform/mac/foo/bar-expected.txt.
-
- Unless the test is a reftest, in which case we would copy the
- output to platform/mac/foo/bar-expected.html and set a
- 'ref_file' parameter in results.json to indicate the path. This
- can be useful in the cases where we have multiple references for
- a single test or when multiple tests share the same reference.
-
- We found a bug where we weren't creating platform/mac/foo under
- the results directory, and so this wasn't actually working.
- However, treating reftests differently seems like a bad thing,
- so we should probably be consistent. This change puts the
- -expected.html next to the test, and reworks test_result_writer
- so that we create directories uniformly and consistently.
-
- Note that we weren't catching this problem in unit tests because
- the MockFileSystem creates a directory automatically if it
- doesn't exist; this was done intentionally for convenience, but
- is really a bug and should be fixed; see https://bugs.webkit.org/show_bug.cgi?id=91028.
-
- I have not added additional tests here since fixing that bug
- should be sufficient.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (interpret_test_failures):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_interpret_test_failures):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- (TestResultWriter._write_binary_file):
- (TestResultWriter):
- (TestResultWriter._write_text_file):
- (TestResultWriter.write_output_files):
- (TestResultWriter.write_stderr):
- (TestResultWriter.write_crash_log):
- (TestResultWriter.create_text_diff_and_write_result):
- (TestResultWriter.write_image_diff_files):
- (write_reftest):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (EndToEndTest.test_reftest_with_two_notrefs):
-
-2012-07-12 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: reimplement manager_worker_broker in a much simpler form
- https://bugs.webkit.org/show_bug.cgi?id=90513
-
- Reviewed by Ojan Vafai.
-
- This is a wholesale replacement of the MessagePool() implementation
- and the other classes in manager_worker_broker.py. All of the
- BrokerConnection*, Broker*, etc. classes are gone, and there are now
- just a MessagePool class and a _Worker class. Happiness ensues.
-
- I'm removing manager_worker_broker_unittest.py as well; we get
- nearly complete coverage from the integration tests, and will
- get more coverage when test-webkitpy moves to use this as well,
- so having unit tests seems like unnecessary overhead. (running
- coverage numbers with test-webkitpy shows that pretty much the only
- uncovered lines are lines that are only run in the child processes,
- which coverage doesn't handle at the moment).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_MessagePool.__init__):
- (_MessagePool.run):
- (_MessagePool._start_workers):
- (_MessagePool):
- (_MessagePool.wait):
- (_MessagePool._close):
- (_MessagePool._handle_done):
- (_MessagePool._can_pickle):
- (_MessagePool._loop):
- (WorkerException):
- (_Message.__init__):
- (_Message.__repr__):
- (_Worker):
- (_Worker.__init__):
- (_Worker.terminate):
- (_Worker._close):
- (_Worker.run):
- (_Worker.post):
- (_Worker.yield_to_caller):
- (_Worker._post):
- (_Worker._raise):
- (_Worker._set_up_logging):
- (_WorkerLogHandler.__init__):
- (_WorkerLogHandler.emit):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py: Removed.
-
-2012-07-12 Tony Chang <tony@chromium.org>
-
- [chromium] Remove drag and drop API methods that are no longer used
- https://bugs.webkit.org/show_bug.cgi?id=90996
-
- Reviewed by Adam Barth.
-
- Migrate DRT to use the methods that take modifier keys.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::doDragDrop):
- (EventSender::doMouseUp):
- (EventSender::doMouseMove):
- (EventSender::beginDragWithFiles):
-
-2012-07-12 Ojan Vafai <ojan@chromium.org>
-
- Allow putting ranges in user.py list prompts
- https://bugs.webkit.org/show_bug.cgi?id=91115
-
- Reviewed by Adam Barth.
-
- Ranges are inclusive and denoted by a dash. This is useful for rebaselining a whole port
- since the items are listed with each port's builders being contiguous.
-
- * Scripts/webkitpy/common/system/user.py:
- (User._wait_on_list_response):
- * Scripts/webkitpy/common/system/user_unittest.py:
- (UserTest.test_prompt_with_multiple_lists.run_prompt_test):
- (UserTest.test_prompt_with_multiple_lists):
-
-2012-07-12 Arnaud Renevier <arno@renevier.net>
-
- [GTK] Implement disableImageLoading in DRT
- https://bugs.webkit.org/show_bug.cgi?id=87973
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::disableImageLoading):
-
-2012-07-12 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Internal symbols are exported on Linux
- https://bugs.webkit.org/show_bug.cgi?id=90981
-
- Reviewed by Jocelyn Turcotte.
-
- I should've re-enabled ELF symbol visibility when removing the symbol map in
- r106650.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-07-11 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/91024> Build against the latest SDK when targeting older OS X versions.
-
- Reviewed by Dan Bernstein.
-
- The deployment target is already set to the version that we're targeting, and it's that setting
- which determines which functionality from the SDK is available to us.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-07-11 Mark Rowe <mrowe@apple.com>
-
- Replace definitions of BUILDING_ON / TARGETING macros with macros that will error when used.
-
- Part of <http://webkit.org/b/91015> Remove BUILDING_ON / TARGETING macros in favor of system availability macros.
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestNetscapePlugIn/PluginObject.h: Remove the macros completely from here since
- they're completely unused in TestNetscapePlugIn.
- * DumpRenderTree/config.h:
-
-2012-07-11 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/91015> Remove BUILDING_ON / TARGETING macros in favor of system availability macros
-
- This removal was handled by a script that translates the relevant macros in to the equivalent checks
- using the system availability macros.
-
- Reviewed by Filip Pizlo.
-
- * DumpRenderTree/cf/WebArchiveDumpSupport.cpp:
- * DumpRenderTree/mac/CheckedMalloc.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/mac/TextInputController.m:
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
-
-2012-07-11 Robert Kroeger <rjkroege@chromium.org>
-
- Suppress horizontal conversion of PlatformWheelEvents when hasPreciseScrollingDeltas is true
- https://bugs.webkit.org/show_bug.cgi?id=89580
-
- WebKit GTK and Chromium Linux force vertical wheel events to
- scroll horizontally when over horizontal scroll bars. This is
- undesirable for touchpad scrolling with
- hasPreciseScrollingDeltas() == true. Modified DumpRenderTree to
- let a layout test specify this attribute so that the change's impact
- on scrolling can be tested in a layout test.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::handleMouseWheel):
-
-2012-07-11 Simon Fraser <simon.fraser@apple.com>
-
- Fix the build by declaring -isPaginated before use.
-
- * MiniBrowser/mac/BrowserWindowController.m:
-
-2012-07-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122358.
- http://trac.webkit.org/changeset/122358
- https://bugs.webkit.org/show_bug.cgi?id=91037
-
- Build break on WebKit Win (Requested by hayato on #webkit).
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::doDragDrop):
- (EventSender::doMouseUp):
- (EventSender::doMouseMove):
- (EventSender::beginDragWithFiles):
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: add a MessagePool abstraction that the manager will call to replace the broker
- https://bugs.webkit.org/show_bug.cgi?id=90511
-
- Reviewed by Ojan Vafai.
-
- This change introduces the new MessagePool abstraction that will
- replace the classes in manager_worker_broker. It is a minimal
- interface that tries to follow the conventions in
- multiprocessing.Pool and concurrency.futures ... it provides a
- context manager and a run() method that sends N messages to M
- workers processes (starting workers as necessary) and waits for
- them all to complete, handling cleanup as necessary. The caller
- is responsible for providing a handle() method to handle
- messages received from the workers.
-
- This interface basically hides all of the multiprocessing logic from
- the manager class.
-
- The initial implementation of MessagePool is a simple shim
- around the existing broker classes; a subsequent change will
- replace all the other classes with a much simpler
- implementation.
-
- No additional tests are provided for now; existing tests should
- provide adequate coverage, and I will add new unit tests for the
- MessagePool class when I replace the existing implementation.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (TestRunInterruptedException.__reduce__):
- (Manager.__init__):
- (Manager._run_tests):
- (Manager._run_tests.instead):
- (Manager.handle):
- (Manager._handle_started_test):
- (Manager._handle_finished_test_list):
- (Manager._handle_finished_test):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (_MessagePool):
- (_MessagePool.__init__):
- (_MessagePool.__enter__):
- (_MessagePool.__exit__):
- (_MessagePool.run):
- (_MessagePool.wait):
- (_MessagePool.is_done):
- (_MessagePool._worker_is_done):
- (_MessagePool._close):
- (_MessagePool.handle_done):
- (_MessagePool.handle_started_test):
- (_MessagePool.handle_finished_test):
- (_MessagePool.handle_finished_test_list):
- (_MessagePool.handle_exception):
- (_MessagePool._log_messages):
- (_MessagePool._handle_worker_exception):
- (_WorkerState):
- (_WorkerState.for):
- (_WorkerState.__init__):
- (_WorkerState.__repr__):
- (_get_broker):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (make_broker):
-
-2012-07-11 Simon Fraser <simon.fraser@apple.com>
-
- Add an option to enter paginated mode in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=91035
-
- Reviewed by Dan Bernstein.
-
- Add an item to the Debug menu for MiniBrowser that puts
- the web view into paginated mode. For now, we only
- do left-to-right pagination, with a fixed column width.
-
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController validateMenuItem:]): Update the checked
- state of the menu item.
- (-[BrowserWindowController isPaginated]): Return YES if paginated.
- (-[BrowserWindowController togglePaginationMode:]): Toggle in
- and out of pagination mode.
- * MiniBrowser/mac/MainMenu.xib: Add the debug menu item.
-
-2012-07-11 Adam Barth <abarth@webkit.org>
-
- commit-queue instances on Compute Engine are missing git-svn
- https://bugs.webkit.org/show_bug.cgi?id=91034
-
- Reviewed by Eric Seidel.
-
- git-svn is needed to actually commit to SVN from a git working copy.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-11 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: lint code in webkitpy.layout_tests.models
- https://bugs.webkit.org/show_bug.cgi?id=90416
-
- Reviewed by Ojan Vafai.
-
- Cleaning up errors reported from lint-webkitpy.
-
- Also, suppress the warnings about wildcard imports in pylintrc;
- we have nothing particularly against them.
-
- * Scripts/webkitpy/layout_tests/models/test_configuration.py:
- (TestConfigurationConverter.combinations):
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- (TestConfigurationTest.test_hash.query_unknown_key):
- (TestConfigurationTest.test_eq):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (ParseError.__init__):
- (TestExpectationLine.__init__):
- (TestExpectationsModel.get_expectations_string):
- (TestExpectationsModel):
- (TestExpectationsModel.expectation_to_string):
- (TestExpectationsModel.add_expectation_line):
- (TestExpectationsModel._clear_expectations_for_test):
- (TestExpectationsModel._remove_from_sets):
- (TestExpectations.get_expectations_string):
- (TestExpectations.expectation_to_string):
- (TestExpectations._report_warnings):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (Base.__init__):
- (parse_exp):
- (SkippedTests.check):
- (TestExpectationParserTests.test_parse_empty_string):
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (FailureTimeout.__init__):
- (FailureCrash.__init__):
- (FailureImageHashMismatch.__init__):
- (FailureReftestMismatch.__init__):
- (FailureReftestMismatchDidNotOccur.__init__):
- (FailureReftestNoImagesGenerated.__init__):
- * Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
- (TestFailuresTest.test_unknown_failure_type.UnknownFailure.message):
- (TestFailuresTest.test_unknown_failure_type):
- (TestFailuresTest):
- (TestFailuresTest.test_message_is_virtual):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.loads):
- (TestResult.has_failure_matching_types):
- * Scripts/webkitpy/pylintrc:
-
-2012-07-11 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up names in worker.py
- https://bugs.webkit.org/show_bug.cgi?id=90510
-
- Reviewed by Ojan Vafai.
-
- This is the last patch in the series of refactoring worker.py;
- all this does is change some names of methods, instance
- variables, and method parameters to be clearer (it also changes
- some code in manager.py and manager_worker.py to be consistent).
-
- There are no functional changes in this patch and the existing
- tests should cover everything.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.prepare_lists_and_print_output):
- (Manager._run_tests.worker_factory):
- (Manager._run_tests):
- (Manager._show_results_html_file):
- (Manager.handle_finished_test_list):
- (_WorkerState.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_Broker.post_message):
- (_Broker._dispatch_message):
- (AbstractWorker.__init__):
- (AbstractWorker.run):
- (AbstractWorker.yield_to_caller):
- (AbstractWorker.post):
- (_WorkerConnection.__init__):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestWorker.start):
- (_TestWorker.handle):
- (_TestWorker.stop):
- (_TestsMixin):
- (_TestsMixin.test_name):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.__del__):
- (Worker.start):
- (Worker.handle):
- (Worker._run_test):
- (Worker.stop):
- (Worker._timeout):
- (Worker._kill_driver):
- (Worker._run_test_with_timeout):
- (Worker._clean_up_after_test):
- (Worker._run_test_in_another_thread.SingleTestThread.run):
- (Worker._run_test_in_this_thread):
- (Worker._run_single_test):
-
-2012-07-11 Adam Barth <abarth@webkit.org>
-
- The commit-queue needs some extra git config to be able to commit
- https://bugs.webkit.org/show_bug.cgi?id=91025
-
- Reviewed by Eric Seidel.
-
- In order for the commit-queue to actually commit, it needs to know the
- location of the SVN server.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-11 Adam Barth <abarth@webkit.org>
-
- Teach EWSTools how to configure SVN auth credentials
- https://bugs.webkit.org/show_bug.cgi?id=91021
-
- Reviewed by Eric Seidel.
-
- To move the commit-queue over to Google Compute Engine, we need a way
- to configure the commit-queue's credentials during the machine build
- process. There doesn't seem to be a nice command line way of
- configuring SVN auth credentials. I tried doing a bogus commit and
- supplying the credentials that way, but that's super hacky.
-
- The approach in this patch is to write the config file directly. The
- format of these configurations files is documented in the SVN book, so
- this approach doesn't see too sketchy.
-
- * EWSTools/configure-svn-auth.sh: Added.
-
-2012-07-11 Ojan Vafai <ojan@chromium.org>
-
- Dedupe suffixes passed to webkit-patch rebaseline
- https://bugs.webkit.org/show_bug.cgi?id=91017
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (Rebaseline._suffixes_to_update):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_multiple_builders_and_tests_command_line):
-
-2012-07-11 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix. Add new directories and a new LayoutTestController method.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setStorageDatabaseIdleInterval):
- * waf/build/settings.py:
-
-2012-07-11 Tony Chang <tony@chromium.org>
-
- [chromium] Remove drag and drop API methods that are no longer used
- https://bugs.webkit.org/show_bug.cgi?id=90996
-
- Reviewed by Adam Barth.
-
- Migrate DRT to use the methods that take modifier keys.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::doDragDrop):
- (EventSender::doMouseUp):
- (EventSender::doMouseMove):
- (EventSender::beginDragWithFiles):
-
-2012-07-11 Mark Rowe <mrowe@apple.com>
-
- Add a Mountain Lion version of libWebKitSystemInterface.a.
-
- Reviewed by John Sullivan.
-
- * Scripts/copy-webkitlibraries-to-product-directory: Include libWebKitSystemInterfaceMountainLion.a in the list of libraries to copy.
-
-2012-07-09 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/90835> Teach bisect-builds to work with a Safari.app that has entitlements.
-
- Reviewed by Dan Bernstein.
-
- * Scripts/bisect-builds: Use safariPathFromSafariBundle to determine which binary within the application
- should be invoked.
-
-2012-07-11 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] fast/events/keydown-function-keys.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=90891
-
- Reviewed by Martin Robinson.
-
- Work around the context menu being shown on F10 key being pressed by
- unbiding the key when running tests in DumpRenderTree. The problem
- appears when using a recent version of the xkeyboard-config package.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting):
-
-2012-07-11 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- [Qt] QRawWebView should notify when rendering is done, so that pixel results can be grabbed at the appropriate moment.
- https://bugs.webkit.org/show_bug.cgi?id=90641
-
- Reviewed by Jocelyn Turcotte.
-
- * MiniBrowser/qt/raw/View.h: Comment used old class name (WKView).
- (View):
-
-2012-07-11 Min Qin <qinmin@chromium.org>
-
- [Android] sending an extra to the DRT apk so that DRT can be run in a seperate thread
- https://bugs.webkit.org/show_bug.cgi?id=90831
-
- Reviewed by Adam Barth.
-
- On android, DRT needs to run in a background thread to avoid ANR.
- However, the java tests are running on UI thread by default.
- We need to send an intent extra to the apk so that it can run on a sub thread.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._start_once):
-
-2012-07-11 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(r107171): Fix --timeout option of Qt's DRT
- https://bugs.webkit.org/show_bug.cgi?id=90966
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/qt/main.cpp:
- (main): Don't remove the argument, because takeOptionValue() did it before.
-
-2012-07-11 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- First commit; moving myself to commiters.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-11 Balazs Ankes <bank@inf.u-szeged.hu>
-
- webkit-patch land should automatically add svn:mime-type for .png files
- https://bugs.webkit.org/show_bug.cgi?id=75825
-
- Reviewed by Dirk Pranke.
-
- Refactor the png.py to avoid code duplication.
-
- * Scripts/webkitpy/common/checksvnconfigfile.py: Added.
- (check):
- (config_file_path):
- (errorstr_autoprop):
- (errorstr_png):
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.check):
- * Scripts/webkitpy/tool/commands/download.py:
- (Land):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py: Added.
- (AddSvnMimetypeForPng):
- (AddSvnMimetypeForPng.__init__):
- (AddSvnMimetypeForPng.run):
- (AddSvnMimetypeForPng._check_pngs):
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py: Added.
- (MockSCMDetector):
- (MockSCMDetector.__init__):
- (MockSCMDetector.display_name):
- (AddSvnMimetypeForPngTest):
- (AddSvnMimetypeForPngTest.test_run):
-
-2012-07-11 Hayato Ito <hayato@chromium.org>
-
- Unreviewed gardening.
- One more fix for r122292.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-07-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122301.
- http://trac.webkit.org/changeset/122301
- https://bugs.webkit.org/show_bug.cgi?id=90947
-
- Android builder started to fail (Requested by hayato on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-07-10 Adam Barth <abarth@webkit.org>
-
- [Chromium] Merge final nits to DumpRenderTree.gyp for Android
- https://bugs.webkit.org/show_bug.cgi?id=90920
-
- Reviewed by Tony Chang.
-
- This patch contains the last few small changes to DumpRenderTree.gyp
- from the chromium-android branch. After this change, this file will be
- fully merged.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-07-10 Adam Barth <abarth@webkit.org>
-
- [Chromium-Android] Add apk test targets for webkit_unit_tests and TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=90918
-
- Reviewed by Tony Chang.
-
- The rules are similar to what we have added for DumpRenderTree apk.
- All references to gtest_target_type can be removed once we enable APK
- tests on the all bots.
-
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-07-10 Kenneth Russell <kbr@google.com>
-
- Add --no-build option to perf test runner
- https://bugs.webkit.org/show_bug.cgi?id=90916
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- Support --no-build option to perf tests, as in layout tests.
-
-2012-07-10 Adam Barth <abarth@webkit.org>
-
- EWSTools should be able to build a chromium-ews bot from scratch
- https://bugs.webkit.org/show_bug.cgi?id=90912
-
- Reviewed by Eric Seidel.
-
- I've been using this script to kick off the build process for the
- chromium-ews bots on Google Compute Engine.
-
- * EWSTools/GoogleComputeEngine: Added.
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh: Added.
-
-2012-07-10 Alec Flett <alecflett@chromium.org>
-
- Add alecflett to the list of committers
- https://bugs.webkit.org/show_bug.cgi?id=90903
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-10 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Unreviewed fix of webkitpy unittest break about chromium_android.py
- caused by r122251.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_cmd_line):
-
-2012-07-10 Ojan Vafai <ojan@chromium.org>
-
- webkit-patch rebaseline doesn't work for audio/pixel tests
- https://bugs.webkit.org/show_bug.cgi?id=90905
-
- Reviewed by Adam Barth.
-
- We just need to pass the correct suffix list to rebaseline-test-internal
- and optimize-baselines. By default, pass all suffixes.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (Rebaseline):
- (Rebaseline.__init__):
- (Rebaseline._suffixes_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_multiple_builders_and_tests_command_line):
-
-2012-07-10 Adam Barth <abarth@webkit.org>
-
- Remove LayoutTestController and WebKitTestRunner support for Hixie76 WebSockets
- https://bugs.webkit.org/show_bug.cgi?id=90853
-
- Reviewed by Eric Seidel.
-
- WebKit no longer implements the Hixie76 version of the WebSocket
- protocol. We don't need to support it in our test framework.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2012-07-10 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Fix typos in chromium_android.py in r151492
- https://bugs.webkit.org/show_bug.cgi?id=90904
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.setup_test_run):
-
-2012-07-10 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Use setup_test_runner() instead of start_helper() to setup test environment
- https://bugs.webkit.org/show_bug.cgi?id=90894
-
- Reviewed by Adam Barth.
-
- start_helper() is actually start_pixel_test_helper() since r115601 (bug 81729).
- Should use setup_test_runner() to setup test environment for chromium-android.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.setup_test_run): Renamed from start_helper(). Added cache cleanup code.
- (ChromiumAndroidPort.clean_up_test_run): Renamed from stop_helper().
- (ChromiumAndroidPort._path_to_helper): Returns None as we don't have a helper now.
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._path_to_forwarder): Original _path_to_helper().
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver.cmd_line):
-
-2012-07-09 Ojan Vafai <ojan@chromium.org>
-
- Improve webkit-patch rebaseline to work for more cases
- https://bugs.webkit.org/show_bug.cgi?id=90504
-
- Reviewed by Adam Barth.
-
- -Makes it work for the build.chromium.org bots.
- -Lets you rebaseline all builders instead of just one.
- -Lets you pass in the builders or tests to rebaseline.
-
- * Scripts/webkitpy/common/host.py:
- (Host.buildbot_for_builder_name):
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Builder.__init__):
- (Builder.latest_layout_test_results):
- Provide a way to get to the LayoutTestResults of the latest build.
- Most of the time we only need to get the latest one and the Chromium bots
- only expose the full_results.json file for the latest build.
-
- (Builder):
- (Builder._fetch_file_from_results):
- (Builder.fetch_layout_test_results):
- Move these functions into Builder so that Builder and Build can both
- fetch layout test results.
-
- (Build.results_zip_url):
- (Build.layout_test_results):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuilderTest.test_latest_layout_test_results):
- (BuildTest.test_layout_test_results):
- * Scripts/webkitpy/common/system/user.py:
- (User.prompt_with_multiple_lists):
- Prompt with multiple sublists, but still have a global numbering.
- This lets the build.chromium.org bots be clearly separated from the
- build.webkit.org bots, which helps understand the builder names.
-
- (User):
- (User._wait_on_list_response):
- (User.prompt_with_list):
- * Scripts/webkitpy/common/system/user_unittest.py:
- (UserTest.test_prompt_with_multiple_lists):
- (UserTest.test_prompt_with_multiple_lists.run_prompt_test):
- (UserTest.test_prompt_with_multiple_lists.run_prompt_test.mock_raw_input):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.is_chromium):
- Provide a way to tell if a port is a Chromium port that doesn't involve string
- manipulation on the port name or builder name.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (builder_path_from_name):
- (all_builder_names):
- Memoizing here is incorrect because the test override _exact_matches,
- so these can return different values. In either case, I'm pretty sure these
- are not remotely hot codepaths. I manually inspected all call sites and they're
- all in high-level calls (e.g. execute calls for webkit-patch commands) and not
- called in a loop.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.is_chromium):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._results_url):
- (AbstractParallelRebaselineCommand.__init__):
- (Rebaseline.__init__):
- (Rebaseline):
- (Rebaseline._builders_to_pull_from):
- (Rebaseline._tests_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline.mock_builders_to_pull_from):
- (test_rebaseline):
- (test_rebaseline_command_line_flags):
- (test_rebaseline_multiple_builders):
- (test_rebaseline_multiple_builders.mock_builders_to_pull_from):
- (test_rebaseline_multiple_builders.mock_tests_to_update):
- (test_rebaseline_multiple_builders_and_tests_command_line):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockTool.irc):
- (MockTool):
- (MockTool.buildbot_for_builder_name):
-
-2012-07-10 Alice Cheng <alice_cheng@apple.com>
-
- Editing: Reproducible crasher when pasting a 0x0 image into Mail
- https://bugs.webkit.org/show_bug.cgi?id=90640
- <rdar://problem/11141920>
-
- Reviewed by Brady Eidson.
-
- Test cases for the patch. 0x0 images don't get a resource representation in the WebArchive, so we need a null check.
-
- * TestWebKitAPI/Tests/mac/0.png: Added.
- * TestWebKitAPI/Tests/mac/WebViewCanPasteZeroPng.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-10 Leandro Gracia Gil <leandrogracia@chromium.org>
-
- WebSurroundingText layout tests should use the same code path as the rest of the feature.
- https://bugs.webkit.org/show_bug.cgi?id=90807
-
- Reviewed by Adam Barth.
-
- Make the textSurroundingNode method take a pair of point coordinates
- instead of a node offset.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::textSurroundingNode):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-10 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(r122175): It broke the Windows build
- https://bugs.webkit.org/show_bug.cgi?id=90850
-
- Reviewed by Noam Rosenthal.
-
- * qmake/mkspecs/features/features.prf: Disable USE(3D_GRAPHICS) on Windows temporarily until proper fix.
-
-2012-07-10 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][NRWT] Enable cascaded TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=89108
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_expectations_files):
- (QtPortTest.test_expectations_files):
-
-2012-07-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] WebKit DRT and WTR fail to build due to undefined reference to WTF::MD5::*
- https://bugs.webkit.org/show_bug.cgi?id=90868
-
- Unreviewed EFL build fix.
-
- Correct CMake configuration to have EFL's DRT and WebKitTestRunner link
- WTF library. This is needed to resolve undefined reference to WTF::MD5::*.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * WebKitTestRunner/PlatformEfl.cmake:
-
-2012-07-10 Adam Barth <abarth@webkit.org>
-
- LayoutTestController.dumpConfigurationForViewport should move to Internals
- https://bugs.webkit.org/show_bug.cgi?id=45652
-
- Reviewed by Eric Seidel.
-
- Remove dumpConfigurationForViewport from LayoutTestController. This API
- has been replaced by an API on Internals that does the same thing in a
- port-agnostic way.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-07-09 Matt Falkenhagen <falken@chromium.org>
-
- Add ENABLE_DIALOG_ELEMENT and skeleton files
- https://bugs.webkit.org/show_bug.cgi?id=90521
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-09 Kent Tamura <tkent@chromium.org>
-
- Improve the boilerplate generated by prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=89560
-
- Reviewed by Ryosuke Niwa.
-
- Produce the following boilerplate:
-
- > 2012-06-20 Kent Tamura <tkent@chromium.org>
- >
- > Need a short description (Oops!).
- > Need the bug URL (Oops!).
- >
- > Reviewed by NOBODY (Oops!).
- >
- > Additional information of the change such as approach, rationale. Please add per-function descriptions below. (Oops!).
- >
- > No new tests (Oops!).
-
- * Scripts/prepare-ChangeLog:
- (generateNewChangeLogs): Generate the updated template.
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.update_with_unreviewed_message):
- Update the pattern for the beginning of the boilerplate.
- (ChangeLog.set_short_description_and_bug_url):
- - Use self._changelog_indent
- - Update the pattern for the description line
- - Skip the bug boilerplate.
- We substitute the specified bug URL to the description boilerplate
- because we need to add it even if the bug URL boilerplate is missing.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py: Update the boilerplate data.
- (test_set_short_description_and_bug_url):
- - Update the description boilerplate.
- - Add a test for a case with both of the description boilerplace and the
- bug URL boilerplate.
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest.test_ensure_bug_url): Update the expected boilerplate.
-
-2012-07-09 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- Shared code that is guarded with ENABLE(WEBGL) should be guarded with USE()
- https://bugs.webkit.org/show_bug.cgi?id=90506
-
- Reviewed by Martin Robinson.
-
- Always enable the WTF_USE_3D_GRAPHICS flag in features.prf if we're compiling with Qt5
- or if the OpenGL module is enabled.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-07-09 Yongjun Zhang <yongjun_zhang@apple.com>
-
- Consider closing unused localStorage database after a timeout.
- https://bugs.webkit.org/show_bug.cgi?id=90713
-
- For a localStorage, if there is no active document referencing to it for certain amount of time (300 seconds),
- we can close the underlying sqlite database.
-
- Reviewed by Brady Eidson.
-
- * DumpRenderTree/LayoutTestController.cpp: add a JS method setStorageDatabaseIdleInterval to testRunner
- to set a different timeout value for closing localStorage database.
- (setStorageDatabaseIdleIntervalCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setStorageDatabaseIdleInterval): add empty method.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setStorageDatabaseIdleInterval): ditto.
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setStorageDatabaseIdleInterval): ditto.
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setStorageDatabaseIdleInterval): ditto.
-
-2012-07-09 Adam Klein <adamk@chromium.org>
-
- Rename WebCore::WebKitMutationObserver to WebCore::MutationObserver
- https://bugs.webkit.org/show_bug.cgi?id=90810
-
- Reviewed by Ojan Vafai.
-
- * DumpRenderTree/gtk/EventSender.cpp:
-
-2012-07-09 Mihai Parparita <mihaip@chromium.org>
-
- Handle missing results in TestResultsServer better
- https://bugs.webkit.org/show_bug.cgi?id=90816
-
- Reviewed by Ojan Vafai.
-
- If we can't load the results JSON, don't try to wrap it with the JSONP
- callback invocation.
-
- * TestResultServer/handlers/testfilehandler.py:
- (GetFile.get):
-
-2012-07-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122124.
- http://trac.webkit.org/changeset/122124
- https://bugs.webkit.org/show_bug.cgi?id=90815
-
- It broke NRWT on Qt (Requested by Ossy_HOME on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_skipped_path):
- (QtPortTest.test_skipped_file_search_path):
-
-2012-07-09 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Implement dumpFrameScrollPosition in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=89356
-
- Reviewed by Martin Robinson.
-
- Implement dumpFrameScrollPosition, acquiring the scroll position
- through WebKitDOMDOMWindow of the WebKitDOMDocument loaded in the frame
- whose scroll position is being dumped.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpFrameScrollPosition):
-
-2012-07-09 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][NRWT] Enable cascaded TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=89108
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_expectations_files):
- (QtPortTest.test_expectations_files):
-
-2012-07-09 Dan Bernstein <mitz@apple.com>
-
- Fixed clean builds of the All target in the DumpRenderTree project.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj: Let Xcode know that the
- DumpRenderTree Perl Support target depends on the DumpRenderTree target.
-
-2012-07-09 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Unskip the CSS Regions layout tests
- https://bugs.webkit.org/show_bug.cgi?id=90771
-
- Reviewed by Martin Robinson.
-
- Use the DumpRenderTreeSupportGtk method for enabling the CSS Regions,
- calling it when resetting the defaults in DumpRenderTree or when the
- settings value is overriden through the testRunner.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference):
-
-2012-07-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r122107.
- http://trac.webkit.org/changeset/122107
- https://bugs.webkit.org/show_bug.cgi?id=90794
-
- Build failure on Mac debug bots (Requested by falken_ on
- #webkit).
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-09 Matt Falkenhagen <falken@chromium.org>
-
- Add ENABLE_DIALOG_ELEMENT and skeleton files
- https://bugs.webkit.org/show_bug.cgi?id=90521
-
- Reviewed by Kent Tamura.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-08 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, rolling out r122076.
- http://trac.webkit.org/changeset/122076
- https://bugs.webkit.org/show_bug.cgi?id=89560
-
- Broke sheriffbot rollout
-
- * Scripts/prepare-ChangeLog:
- (generateNewChangeLogs):
-
-2012-07-08 Leandro Gracia Gil <leandrogracia@chromium.org>
-
- Update the description of LayoutTestController::textSurroundingElement
- https://bugs.webkit.org/show_bug.cgi?id=90620
-
- Reviewed by Adam Barth.
-
- Rename and fix the description of the method as its behaviour changed
- during the review of https://bugs.webkit.org/show_bug.cgi?id=82461
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::textSurroundingNode):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-08 Kent Tamura <tkent@chromium.org>
-
- Improve the template generated by prepare-ChangeLog
- https://bugs.webkit.org/show_bug.cgi?id=89560
-
- Reviewed by Ryosuke Niwa.
-
- Produce the following template:
-
- > 2012-06-20 Kent Tamura <tkent@chromium.org>
- >
- > Need a short description (Oops!).
- > Need the bug URL (Oops!).
- >
- > Reviewed by Ryosuke Niwa.
- >
- > Additional information of the change such as approach, rationale. Please add per-function descriptions below. (Oops!).
- >
- > No new tests (Oops!).
-
- * Scripts/prepare-ChangeLog:
- (generateNewChangeLogs):
-
-2012-07-08 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [wx] Unreviewed. Fix notificaitons directory path after notifications move.
-
- * waf/build/settings.py:
-
-2012-07-07 Nuno Lopes <nlopes@apple.com>
-
- Fix build with recent clang.
- https://bugs.webkit.org/show_bug.cgi?id=90712
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (DOMWindowExtensionBasic):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (DOMWindowExtensionNoCache):
- * TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp:
- (TestWebKitAPI::DocumentStartUserScriptAlertCrashTest::initialize):
-
-2012-07-06 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Add a configuration option for disabling unstable features in releases
- https://bugs.webkit.org/show_bug.cgi?id=87995
-
- Reviewed by Martin Robinson.
-
- Pass the --enable-unstable-features flag when building the Gtk port through build-webkit.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2012-07-06 Jessie Berlin <jberlin@apple.com>
-
- WKContext should ask for its initialization data when it needs it so the client doesn't have
- to keep it up to date.
- https://bugs.webkit.org/show_bug.cgi?id=90627
-
- Reviewed by Anders Carlsson.
-
- Add tests and update other WKContextInjectedBundleClients.
-
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate init]):
- Updated for the change to WKContextInjectedBundleClient.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- Ditto.
-
- * TestWebKitAPI/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::createInitializationDictionaryForInjectedBundleTest):
- Moved the logic to create the initialization dictionary here ...
- (TestWebKitAPI::Util::createContextForInjectedBundleTest):
- ... from here so that it can be used without automatically using
- WKContextSetInitializationUserDataForInjectedBundle.
- * TestWebKitAPI/PlatformUtilities.h:
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- Add the new test files.
- * TestWebKitAPI/GNUmakefile.am:
- Ditto.
-
- * TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- Check that the message received from the injected bundle matches the user data it was
- initialized with.
- (TestWebKitAPI::getInjectedBundleInitializationUserData):
- Return the user data that the injected bundle should be initialized with.
- (TestWebKitAPI::TEST):
- Set up WKContextInjectedBundleClient and load a page.
- * TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp: Added.
- (TestWebKitAPI::GetInjectedBundleInitializationUserDataCallbackTest::initialize):
- Send the initialization user data back up to the UI Process.
-
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- Check that the message received from the injected bundle matches the user data it was
- initialized with in the callback.
- (TestWebKitAPI::getInjectedBundleInitializationUserData):
- Return the user data that the injected bundle should be initialized with.
- (TestWebKitAPI::TEST):
- Set up the context and use WKContextSetInitializationUserDataForInjectedBundle to set the
- initialization user data (which should be overridden by the user data returned in
- getInjectedBundleInitializationUserData).
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp: Added.
- (TestWebKitAPI::InjectedBundleInitializationUserDataCallbackWinsTest::initialize):
- Send the initialization user data back up to the UI Process.
-
-2012-07-06 Dongwoo Im <dw.im@samsung.com>
-
- [EFL][GTK] jhbuild : Disable pixman demos build depending on GTK+
- https://bugs.webkit.org/show_bug.cgi?id=90593
-
- Reviewed by Philippe Normand.
-
- * efl/jhbuild.modules: Give '--enable-gtk=no' option to pixman.
- * gtk/jhbuild.modules: Give '--enable-gtk=no' option to pixman.
-
-2012-07-06 Luciano Wolf <luciano.wolf@openbossa.org>
-
- [Qt] DumpRenderTree does not use 'monospace' font when directed
- https://bugs.webkit.org/show_bug.cgi?id=85203
-
- The test fonts used for Qt tests were moved to the Liberation font family.
-
- Due to this change we are skipping tons of tests. They will be gradually
- unskipped in batches, ASAP.
-
- Also, the now unneeded special font configuration for Qt5 WK1 was removed.
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- (WebKit::initializeTestFonts):
-
-2012-07-06 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Buildfix for newer Qt5
- https://bugs.webkit.org/show_bug.cgi?id=90519
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowser.pro: We also need to depend on gui-private in the MiniBrowser to get access to these headers.
- * MiniBrowser/qt/MiniBrowserApplication.h: Include qpa/qwindowsysteminterface.h instead of deprecated qwindowsysteminterface_qpa.h
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp: Include qpa/qwindowsysteminterface.h instead of deprecated qwindowsysteminterface_qpa.h
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Make use of Qt5 qmake's changed makefile recursion behavior
-
- When not using the -r option, qmake now interleaves qmake and make calls,
- so we don't need custom logic for this. There's also an option to supress
- the effect of the -r option, which we use to make WebKit.pro the only
- project file parsed in a recursive qmake-run.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Remove custom qmake logic for module creation
-
- Qmake now has the necessary hooks to cleanly override the build locations.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Add top-level .qmake.conf
-
- With Qt5, this makes setting $QMAKEPATH externally unnecessary.
-
- The magic in the perl scripts to set QMAKEPATH is still there, as it doesn't
- hurt, and is still required for Qt4.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Unify qtFeatureDefaults code paths
-
- There's no reason to run qmake on features.prf directly anymore, as we
- can selectivly run configure tests in the project file now.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- * qmake/configure.pri:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Don't let qt_webkit.pri proclaim its own location
-
- This won't work any more with recent Qt5 versions, as the forwarding
- pri is created by qt_module_config, which needs MODULE_PRI to be set
- up already.
-
- We also need to load build_config, not qt_module.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/qt_webkit.pri:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Remove redundant CONFIG+=module
-
- qt_module_config takes care of that.
-
- In api.pri we are actually testing the flag ourselves, so now we need to
- test a related flag qt_module_config sets instead.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-07-06 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Switch to new-style Qt 5 configure tests
-
- Use explicit project file action instead of syncqt magic.
-
- https://bugs.webkit.org/show_bug.cgi?id=90461
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
- * qmake/configure.pri: Copied from Tools/qmake/configure.pro.
- * qmake/configure.pro:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
- * qmake/sync.profile: Removed.
-
-2012-07-05 Jason Liu <jason.liu@torchmobile.com.cn>
-
- Add Jason Liu to committers.py.
- https://bugs.webkit.org/show_bug.cgi?id=90654
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-05 Benjamin Poulain <bpoulain@apple.com>
-
- Double release of resources if the load is canceled in a callback of ResourceLoader::didFinishLoading
- https://bugs.webkit.org/show_bug.cgi?id=90431
-
- Reviewed by Anders Carlsson.
-
- Add a Mac API test.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.html: Added.
- * TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm: Added.
- (-[CancelLoadFromResourceLoadDelegate webView:resource:didFinishLoadingFromDataSource:]):
- (-[CancelLoadFromResourceLoadDelegateFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-07-05 Dave Tharp <dtharp@codeaurora.org>
-
- Adding myself as committer to committers.py
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-05 Alexey Proskuryakov <ap@apple.com>
-
- [Mac][WK2] Enable HTTPS tests
- https://bugs.webkit.org/show_bug.cgi?id=90600
-
- Reviewed by Brady Eidson.
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (dumpRenderTree): Removed a misleading comment.
- It explained why we were doing this here instead of a frame load delegate, but that's
- just history, not an explanation of why we need this code.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm: (WTR::InjectedBundle::platformInitialize):
- Ignore certificate errors for localhost and 127.0.0.1. Since this is only needed
- for tests, it seems appropriate to have platform specific solutions in every WTR,
- and not add a WebKit2 API.
-
-2012-07-05 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove rpath-hacks in qt_webkit.pri
-
- Having it in qt_webkit.pri meant that all client apps would inherit the rpath,
- even if they were not using QtWebKit.
-
- This is a regression for people who build client apps against a non-installed
- QtWebKit, as the client app will be missing a rpath to the standalone WebKit
- build dir. This can be solved by LD_LIBRARY_PATH or custom QMAKE_RPATHDIR
- logic, until the real issue is fixed in Qt.
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/rpath.prf:
- * qmake/qt_webkit.pri:
-
-2012-07-05 Dongwoo Im <dw.im@samsung.com>
-
- [EFL] Enable the CUSTOM_SCHEME_HANDLER feature as default.
- https://bugs.webkit.org/show_bug.cgi?id=88608
-
- Reviewed by Hajime Morita.
-
- * Scripts/webkitperl/FeatureList.pm: Enable the CUSTOM_SCHEME_HANDLER feature as default.
-
-2012-07-05 Ryuan Choi <ryuan.choi@samsung.com>
-
- [Wk2][EFL] EFL needs a WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=87659
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add an implementation of WebKitTestRunner for Efl port.
-
- * CMakeLists.txt: Includes WebKitTestRunner build script.
- * Scripts/build-webkittestrunner: Added knowledge of WebKitTestRunner/Efl.
- * Scripts/webkitpy/layout_tests/port/efl.py: Ditto.
- (EflPort.setup_environ_for_server):
- * WebKitTestRunner/CMakeLists.txt: Added.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- * WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp: Added.
- * WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp: Added.
- * WebKitTestRunner/InjectedBundle/efl/LayoutTestControllerEfl.cpp: Added.
- * WebKitTestRunner/PlatformEfl.cmake: Added.
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/TestController.cpp:
- * WebKitTestRunner/config.h: Added knowledge of WebKitTestRunner/Efl.
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp: Added.
- * WebKitTestRunner/efl/TestControllerEfl.cpp: Added.
- * WebKitTestRunner/efl/main.cpp: Added.
- (main):
-
-2012-07-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][EFL] Ewk_View needs API to load HTML data
- https://bugs.webkit.org/show_bug.cgi?id=90540
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update EFL MiniBrowser to catch the "load,error" signal
- on the view and display an error page.
-
- * MiniBrowser/efl/main.c:
- (on_error):
- (browserCreate):
-
-2012-07-05 Sergio Villar Senin <svillar@igalia.com>
-
- Hidden dirs are not copied when creating the built product archive
- https://bugs.webkit.org/show_bug.cgi?id=90559
-
- Reviewed by Carlos Garcia Campos.
-
- Hidden dirs are not copied inside the built product archive
- because the recursive copy command was ignoring them. We need those
- hidden directories for the GTK WebKit2 testing bot to work fine.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct): replaced "*" by "." to include hidden
- dirs/files.
-
-2012-07-04 Yoshifumi Inoue <yosin@chromium.org>
-
- Unreviewed Chromium gardening, Disable always failed python tests on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=90587
-
- PortTest.qt_linux and mac_lion are always failed on Chromium Windows at
- creating child process.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (PortTest.disabled_test_qt_linux):
- (PortTest.disabled_test_mac_lion):
-
-2012-07-04 Yoshifumi Inoue <yosin@chromium.org>
-
- [Tools] webkit_unittest.py got assertion
- https://bugs.webkit.org/show_bug.cgi?id=90579
-
- Reviewed by Hajime Morita.
-
- This patch updates expectation of assertion in test_skipped_directories_for_symbols().
- r121874 added new (exclude) directory (inspector/styles/variables), however it didn't
- update one of two assertions.
-
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
-
-2012-07-04 Balazs Ankes <bank@inf.u-szeged.hu>
-
- webkit-patch should add reviewer if "Reviewed by NOBODY ..." is missing
- https://bugs.webkit.org/show_bug.cgi?id=67935
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.set_reviewer):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_set_reviewer):
- (test_set_short_description_and_bug_url):
-
-2012-07-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121862.
- http://trac.webkit.org/changeset/121862
- https://bugs.webkit.org/show_bug.cgi?id=90569
-
- It broke built-product-archive for GTK, Qt and EFL (Requested
- by svillar on #webkit).
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2012-07-04 Sergio Villar Senin <svillar@igalia.com>
-
- Hidden dirs are not copied when creating the built product archive
- https://bugs.webkit.org/show_bug.cgi?id=90559
-
- Reviewed by Carlos Garcia Campos.
-
- Hidden dirs are not copied inside the built product archive because
- the recursive copy command was ignoring them. We need those hidden
- directories for the GTK WebKit2 testing bot to work fine.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct): removed the trailing "*" from the copy
- command.
-
-2012-07-04 John Mellor <johnme@chromium.org>
-
- Text Autosizing: Add compile flag and runtime setting
- https://bugs.webkit.org/show_bug.cgi?id=87394
-
- This patch renames Font Boosting to Text Autosizing.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Replace deprecated IN_PWD with PWD
-
- Reviewed by Csaba Osztrogonác.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't try to build WTR twice
-
- Reviewed by Csaba Osztrogonác.
-
- * Tools.pro:
-
-2012-07-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121821.
- http://trac.webkit.org/changeset/121821
- https://bugs.webkit.org/show_bug.cgi?id=90551
-
- This patch did not receive a high-quality review and has a
- number of errors (Requested by abarth on #webkit).
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Build.results_url):
- * Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:
- (ChromiumBuilder.accumulated_results_url):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand.__init__):
- (Rebaseline):
- (Rebaseline._builder_to_pull_from):
- (Rebaseline._tests_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline.mock_builder_to_pull_from):
- (test_rebaseline):
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Get rid of un-needed QT += declarative for Qt 5
-
- The declarative module has been renamed to quick1 in Qt 5, and the
- engine-only module for Qt 5 is named 'qml'. For many of the instances
- we could just remove 'declarative', since the project file was only
- used for Qt5/WebKit2 builds. In the other cases the module was wrapped
- in a haveQt(4) scope.
-
- Reviewed by Csaba Osztrogonác.
-
- * MiniBrowser/qt/MiniBrowser.pro:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Remove a few un-needed load(features) after r121777
-
- The features are computed by configure.pro and cached in .qmake.cache.
-
- Reviewed by Jocelyn Turcotte..
-
- * MiniBrowser/qt/raw/Target.pri:
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Use haveQtModule() in project files instead of manual checks
-
- Reviewed by Jocelyn Turcotte.
-
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-04 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Fix haveQtModule() check
-
- Without {} brackets we were pulling out the value of the module.name variable.
-
- Reviewed by Jocelyn Turcotte.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-07-04 Sergio Villar Senin <svillar@igalia.com>
-
- [WK2] [GTK] WK2 testing bot unable to find the InjectedBundle library
- https://bugs.webkit.org/show_bug.cgi?id=90541
-
- Reviewed by Carlos Garcia Campos.
-
- We must add the contents of WebKitBuild/*/Libraries/ directory to
- the file to be uploaded to b.w.o to successfully run WebKit2 tests
- in the WebKit2 testing bot.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct): appended Libraries to the list of
- neededDirectories.
-
-2012-07-04 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] WebKit2 testing bot unable to find the build directory
- https://bugs.webkit.org/show_bug.cgi?id=90523
-
- Reviewed by Carlos Garcia Campos.
-
- The presence of GNUmakefile was used to determine whether a given
- directory was a valid build directory or not. That's not correct for
- testing bots as we export only the minimum required stuff to run the
- tests.
-
- * gtk/common.py:
- (get_build_path.is_valid_build_directory): added an extra check.:
-
-2012-07-04 Joe Thomas <joethomas@motorola.com>
-
- Adding myself to committers list.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][EFL] Ewk_View should report the load progress
- https://bugs.webkit.org/show_bug.cgi?id=90457
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update EFL MiniBrowser so that it listens for the
- "load,progress" on the Ewk_View and updates its
- window title accordingly.
-
- * MiniBrowser/efl/main.c:
- (title_set):
- (on_title_changed):
- (on_progress):
- (browserCreate):
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- disable failing mock-chromium-mac python unit tests
-
- Unreviewed, build fix.
-
- Disable these tests until I can figure out why they're failing
- on the bots.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (PortTest.disabled_test_chromium_mac_lion):
- (PortTest.disabled_test_chromium_mac_lion_in_test_shell_mode):
-
-2012-07-03 Ian Vollick <vollick@chromium.org>
-
- Add vollick to the list of committers
- https://bugs.webkit.org/show_bug.cgi?id=90512
-
- Reviewed by Adrienne Walker.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-07-03 Ojan Vafai <ojan@chromium.org>
-
- Improve webkit-patch rebaseline to work for more cases
- https://bugs.webkit.org/show_bug.cgi?id=90504
-
- Reviewed by Dirk Pranke.
-
- -Makes it work for the build.chromium.org bots.
- -Lets you rebaseline all builders instead of just one.
- -Lets you pass in the builder or test to rebaseline.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Build.results_url):
- Make this work for build.chromium.org builders as well.
-
- * Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py:
- (ChromiumBuilder):
- (ChromiumBuilder.latest_cached_build):
- ChromiumBuilder doesn't support large parts of the Builder interface.
- This provides the bare minimum for this patch to work. Eventually,
- we should create a single interface that can be supported for both
- sets of buildbots.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (builder_path_from_name):
- (all_builder_names):
- memoizing here is incorrect because the test override _exact_matches,
- so these can return different values. In either case, I'm pretty sure these
- are not remotely hot codepaths.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand.__init__):
- (Rebaseline):
- (Rebaseline.__init__):
- (Rebaseline._builders_to_pull_from):
- (Rebaseline._builder_with_name):
- (Rebaseline._tests_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline.mock_builders_to_pull_from):
- (test_rebaseline):
- (test_rebaseline_command_line_flags):
- (test_rebaseline_multiple_builders):
- (test_rebaseline_multiple_builders.mock_builders_to_pull_from):
- (test_rebaseline_multiple_builders.mock_tests_to_update):
-
-2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable CSS variables support at compile time
- https://bugs.webkit.org/show_bug.cgi?id=90448
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Turn on CSS_VARIABLES flag by default on EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up exception handling and make sure we log some more failures
- https://bugs.webkit.org/show_bug.cgi?id=90503
-
- Reviewed by Ojan Vafai.
-
- There were several places where exceptions weren't getting
- logged, most notably if you passed a bad value to --platform.
- This change tests that and cleans things up a bit; more cleanup
- will be possible when we rework the manager_worker_broker code.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (_BrokerConnection.raise_exception):
- (_InlineWorkerConnection.raise_exception):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.run):
- (Worker.kill_driver):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory.get):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_unsupported_platfrom):
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix mock port
- https://bugs.webkit.org/show_bug.cgi?id=90500
-
- Reviewed by Ojan Vafai.
-
- The MockDRT code was never updated when we switched the chromium
- ports to using "drt mode" by default. This change updates that
- code, fixes a typo in the chromium port that went undetected
- (default_test_timeout_ms -> default_timeout_ms), and adds tests
- that actually exercise some of the mock ports. These tests are
- useful in that they will exercise the port-specific code in an
- end-to-end-manner, but they are a bit slow for some reason (>1s
- each) that I need to look into.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.stop):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (TestChromiumAndroidPort.test_default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (main):
- (parse_options):
- (MockTestShell):
- (MockTestShell.output_for_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTTest.assertTest):
- (MockTestShellTest):
- (MockTestShellTest.make_drt):
- (MockTestShellTest.test_test_shell_parse_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (PortTest):
- (PortTest.assert_mock_port_works):
- (PortTest.test_chromium_mac_lion):
- (PortTest.test_chromium_mac_lion_in_test_shell_mode):
- (PortTest.test_qt_linux):
- (PortTest.test_mac_lion):
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make the worker class stand alone with a cleaner interface
- https://bugs.webkit.org/show_bug.cgi?id=90409
-
- Reviewed by Ojan Vafai.
-
- Currently the Worker class derives from AbstractWorker, which is
- kind of crufty and awkward; it would be better if we did not
- rely on shared state.
-
- This change changes that so that Worker derives from object, and
- exposes the following interface:
- __init__() - called in the manager process
- safe_init() - called in the worker process to initialize
- unpicklable state
- handle() - a single routine to handle all messages
- cleanup() - called so the worker can clean up
-
- Also, all of the "administrative" messages that are handled by
- the worker (notification of start/stop/etc.) move into
- manager_worker_broker - this reduces worker.py to just handling
- the mechanics of actually running each test.
-
- For the moment, we do this by creating Yet Another wrapper/proxy
- class in manager_worker_broker, but this will get simpler
- shortly when the rest of m_w_b is cleaned up.
-
- With this change worker is now in its new form but there will be
- a follow-on change that cleans up some names and other minor
- things.
-
- This change is again mostly just moving things around and should
- be covered by the (updated) existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (AbstractWorker.__init__):
- (AbstractWorker.run):
- (AbstractWorker):
- (AbstractWorker.handle_stop):
- (AbstractWorker.handle_test_list):
- (AbstractWorker.yield_to_broker):
- (AbstractWorker.post_message):
- (_WorkerConnection.__init__):
- (_Process.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker):
- (_TestWorker.__init__):
- (_TestWorker.name):
- (_TestWorker.cleanup):
- (_TestWorker.handle):
- (_TestWorker.safe_init):
- (_TestWorker.stop):
- (_TestsMixin.handle_finished_test):
- (_TestsMixin.setUp):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker):
- (Worker.__init__):
- (Worker.safe_init):
- (Worker.handle):
-
-2012-07-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: moving child process logging code into manager_worker_broker
- https://bugs.webkit.org/show_bug.cgi?id=90408
-
- Reviewed by Ojan Vafai.
-
- Users of manager_worker_broker should not have to be aware of
- whether they're in the same process or different processes and
- configure logging themselves; mwb should hide this complexity.
- We can't quite do this completely/correctly yet, since the
- manager expects to get a list of messages to log, but this
- change fixes the worker side of it, at least.
-
- This is just moving code around, there is no new functionality
- and this should be covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (AbstractWorker.__init__):
- (_WorkerConnection.__init__):
- (_WorkerConnection.post_message):
- (_WorkerConnection):
- (_WorkerConnection.set_up_logging):
- (_WorkerConnection.clean_up_logging):
- (_InlineWorkerConnection.run):
- (_MultiProcessWorkerConnection.run):
- (_WorkerLogHandler):
- (_WorkerLogHandler.__init__):
- (_WorkerLogHandler.emit):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.run):
- (_TestsMixin.handle_done):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.run):
- (Worker._run_test):
- (Worker.cleanup):
- (Worker.run_single_test):
-
-2012-07-03 Tony Chang <tony@chromium.org>
-
- [chromium] Don't archive build files generated by VS2010
- https://bugs.webkit.org/show_bug.cgi?id=90493
-
- Reviewed by Ojan Vafai.
-
- In particular, the pch (pre compiled header) files are gigantic, making
- release.zip almost a 1gb in size.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2012-07-03 Tony Chang <tony@chromium.org>
-
- [chromium] Unreviewed, update .gitignore to handle VS2010 files.
-
- * .gitignore:
- * DumpRenderTree/DumpRenderTree.gyp/.gitignore:
- * TestWebKitAPI/TestWebKitAPI.gyp/.gitignore:
-
-2012-07-03 Ojan Vafai <ojan@chromium.org>
-
- Have webkit-patch rebaseline use rebaseline-test-internal
- https://bugs.webkit.org/show_bug.cgi?id=90491
-
- Reviewed by Dirk Pranke.
-
- This lets it handle new files, reduces duplicate code and lays the
- groundwork for making rebaseline have a richer interface.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- (MockBuild):
- (MockBuild.__init__):
- (MockBuilder.build):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand._files_to_add):
- (Rebaseline):
- (Rebaseline._builder_to_pull_from):
- (Rebaseline._tests_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_overrides_are_included_correctly):
- (test_rebaseline):
- (test_rebaseline.mock_builder_to_pull_from):
- (test_rebaseline.mock_tests_to_update):
-
-2012-07-03 Ojan Vafai <ojan@chromium.org>
-
- Rename rebaseline-test to rebaseline-test-internal
- https://bugs.webkit.org/show_bug.cgi?id=90485
-
- Reviewed by Adam Barth.
-
- It's now only used by other rebaseline commands. It's still useful to leave it
- as it's own command to aid in debugging when something goes wrong. In a followup
- patch, I'll make webkit-patch rebaseline cover any use-cases that rebaseline-test
- might have covered.
-
- We no longer need the --print-scm-changes option since the only caller always passes
- that option in.
-
- Also, make all the arguments command-line flags instead. Simplifies the code
- a bit in my opinion.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest):
- (RebaselineTest.__init__):
- (RebaselineTest.execute):
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_all):
-
-2012-07-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] Get rid of using DumpRenderTreeSupportQt
- https://bugs.webkit.org/show_bug.cgi?id=90262
-
- Unreviewed build fix.
-
- Reverting r121550 manually because it caused build
- break on ARM and Mac. It turned out that the Qt build
- system is too broken for this change now, first we have
- to address two issues:
- * symbol hiding was forbidden accidentally on x86 Linux
- * Qt lacks a separate library for test support
-
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::resetAfterTest):
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2012-07-03 Tony Chang <tony@chromium.org>
-
- [chromium] Handle trailing backslash on %VSINSTALLDIR%
- https://bugs.webkit.org/show_bug.cgi?id=90410
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitdirs.pm:
- (buildChromiumVisualStudioProject): Handle VSINSTALLDIR ending in a backslash, the backslash escapes the closing double quote.
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- Make the skia_test_expectations.txt file optional.
- https://bugs.webkit.org/show_bug.cgi?id=90400
-
- Reviewed by Dirk Pranke.
-
- It used to be optional. This regressed at some point. It's important that it be
- optional so that webkit-patch commands work in a pure-webkit checkout for chromium bots.
- Specifically, this was breaking webkit-patch rebaseline-test when it would go to update
- TestExpectations.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_expectations_dict):
-
-2012-07-03 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [jhbuild][EFL] Bump libffi dependency.
- https://bugs.webkit.org/show_bug.cgi?id=85373
-
- Reviewed by Gustavo Noronha Silva.
-
- Update libffi to 3.0.11, which fixes the build on some platforms
- where 3.0.10 had problems.
-
- * efl/jhbuild.modules:
-
-2012-07-03 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Enable microdata support for BlackBerry.
- https://bugs.webkit.org/show_bug.cgi?id=90429
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make use of .qmake.cache for caching features
-
- Instead of loading() features from the files that need them (and re-running
- a bunch of checks), we now run feature detection as part of configure.pro,
- and have build-webkit write the computed feature-defines and CONFIG to
- .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
- when building WebKit.pro.
-
- At some point we'll be able to selectivly prevent running of config tests
- in configure.pro, which means we don't need a separate code-path for
- the build-webkit --help case.
-
- We should also move the code in build-webkit that now uses .webkit.config
- to detect clean builds, to use .qmake.cache, since we now store the same
- thing there.
-
- Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (buildQMakeProjects):
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/.qmake.conf: Added.
- * qmake/configure.pro:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-03 Nico Weber <thakis@chromium.org>
-
- -Wunused-private-field cleanup, linux edition
- https://bugs.webkit.org/show_bug.cgi?id=90463
-
- Reviewed by Stephen White.
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/GamepadController.h:
- (GamepadController):
- * DumpRenderTree/chromium/NotificationPresenter.h:
- (NotificationPresenter::NotificationPresenter):
- (NotificationPresenter):
-
-2012-07-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121766.
- http://trac.webkit.org/changeset/121766
- https://bugs.webkit.org/show_bug.cgi?id=90465
-
- It caused flakey build errors on the bots (Requested by Ossy
- on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (buildQMakeProjects):
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/.qmake.conf: Removed.
- * qmake/configure.pro:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-03 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Enable Custom Scheme Handlers for BlackBerry.
- https://bugs.webkit.org/show_bug.cgi?id=90422
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-03 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Enable RegisterProtocolHandler for BlackBerry.
- https://bugs.webkit.org/show_bug.cgi?id=90422
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-03 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Add run API tests as a step on the build bots
- https://bugs.webkit.org/show_bug.cgi?id=87252
-
- Reviewed by Daniel Bates.
-
- Run EFL API test suite on the build bots.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunEflAPITests):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- * Scripts/run-efl-tests: Added.
-
-2012-07-03 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make use of .qmake.cache for caching features
-
- Instead of loading() features from the files that need them (and re-running
- a bunch of checks), we now run feature detection as part of configure.pro,
- and have build-webkit write the computed feature-defines and CONFIG to
- .qmake.cache, which is then loaded by qmake _before_ even defaults_pre
- when building WebKit.pro.
-
- At some point we'll be able to selectivly prevent running of config tests
- in configure.pro, which means we don't need a separate code-path for
- the build-webkit --help case.
-
- We should also move the code in build-webkit that now uses .webkit.config
- to detect clean builds, to use .qmake.cache, since we now store the same
- thing there.
-
- Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitdirs.pm:
- (qtFeatureDefaults):
- (buildQMakeProjects):
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/.qmake.conf: Added.
- * qmake/configure.pro:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-07-03 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> Joel Dillon <joel.dillon@codethink.co.uk>
-
- [Qt][Win] Fix broken QtWebKit5.lib linking
- https://bugs.webkit.org/show_bug.cgi?id=88321
-
- Reviewed by Kenneth Rohde Christiansen.
-
- On windows the import/export definition is part of the symbol's signature.
- Define STATICALLY_LINKED_WITH_$$library for each dependend module
- that is being linked statically to make sure that they can be linked together
- later on.
-
- Also do not compile Assertions.cpp in DumpRenderTree anymore since all the
- used symbols are exported and it would cause a duplicate symbols error.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * qmake/mkspecs/features/default_post.prf:
-
-2012-07-03 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- master.cfg cleanup, pass BuildStep instances instead of BuildStep subclasses
- https://bugs.webkit.org/show_bug.cgi?id=89001
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (UploadBuiltProduct.__init__):
- (UploadTestResults.__init__):
- (ExtractTestResults.__init__):
- (Factory.__init__):
- (BuildFactory.__init__):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- (BuildAndPerfTestFactory.__init__):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestFactory.__init__):
-
-2012-07-03 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- Update unit test after r121724.
- https://bugs.webkit.org/show_bug.cgi?id=90444
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-07-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121749.
- http://trac.webkit.org/changeset/121749
- https://bugs.webkit.org/show_bug.cgi?id=90441
-
- Tests crash on the paralel NRWT Qt bot (Requested by Ossy on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._build_driver):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
- (XvfbDriver._start.x_filter):
- (XvfbDriver.stop):
-
-2012-07-03 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] XvfbDriver should choose the next free display
- https://bugs.webkit.org/show_bug.cgi?id=88414
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver.__init__):
- (XvfbDriver._start):
- (XvfbDriver._start.next_free_id):
- (XvfbDriver.stop):
-
-2012-07-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable MICRODATA support
- https://bugs.webkit.org/show_bug.cgi?id=90377
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Turn on MICRODATA flag for EFL port by default.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-02 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Enable scoped style for BlackBerry.
- https://bugs.webkit.org/show_bug.cgi?id=90418
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-07-02 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Use PUBLIC_BUILD to enable/disable DRT
- https://bugs.webkit.org/show_bug.cgi?id=90271
-
- Reviewed by George Staikos.
-
- RIM PR #154707
-
- Currently DRT code will be compiled only if ENABLE_DRT is set, and it's not
- defined by default.
- We should enable DRT by default unless PUBLIC_BUILD is set. In this way we don't
- need to rebuild webkit before running DRT.
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments):
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- webkit-patch rebaseline-expectations should share code with rebaseline-all
- https://bugs.webkit.org/show_bug.cgi?id=90413
-
- Reviewed by Dirk Pranke.
-
- Make them share code. In addition to reducing code duplication this makes
- rebaseline-expectations considerably faster by rebaselining in parallel.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand):
- (AbstractParallelRebaselineCommand._run_webkit_patch):
- (AbstractParallelRebaselineCommand._rebaseline):
- (RebaselineJson):
- (RebaselineJson.execute):
- (RebaselineExpectations):
- (RebaselineExpectations._update_expectations_file):
- (RebaselineExpectations._tests_to_rebaseline):
- (RebaselineExpectations._add_tests_to_rebaseline_for_port):
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_all):
- (test_rebaseline_expectations.run_in_parallel):
- (test_rebaseline_expectations):
-
-2012-07-02 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Update DumpRenderTree to have it work interactively in parallel
- https://bugs.webkit.org/show_bug.cgi?id=88326
-
- Reviewed by Rob Buis.
-
- 1. Test name is sent to torch-launcher via PPS message(from host machine).
- So we get test list by monitoring and receiving PPS message instead of
- reading file index.drt.
- 2. Torch-launcher create a <test file>.done file when it finished a test.
- 3. We don't need to search for Ref-tests in DumpRenderTree.cpp any more. NRWT
- will get them for us.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::DumpRenderTree):
- (BlackBerry::WebKit::DumpRenderTree::doneDrt):
- (BlackBerry::WebKit::DumpRenderTree::runRemainingTests):
- (BlackBerry::WebKit::DumpRenderTree::ensurePPS):
- (WebKit):
- (BlackBerry::WebKit::DumpRenderTree::handlePPSData):
- (BlackBerry::WebKit::DumpRenderTree::waitForTest):
- (BlackBerry::WebKit::DumpRenderTree::runTests):
- (BlackBerry::WebKit::DumpRenderTree::dump):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
-
-2012-07-02 Adam Barth <abarth@webkit.org>
-
- Remove flashplugin-installer from the EWS image because it causes some tests to crash
- https://bugs.webkit.org/show_bug.cgi?id=90403
-
- Reviewed by Tony Chang.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-02 Leandro Gracia Gil <leandrogracia@chromium.org>
-
- [Chromium] Implement a Layout Test for editing/SurroundingText
- https://bugs.webkit.org/show_bug.cgi?id=82461
-
- Reviewed by Ryosuke Niwa.
-
- Add a new method to the layout test controller in order to retrieve the
- text surrounding a provided element.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::textSurroundingElement):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- Delete unused rebaseline method in gardeningserver.py
- https://bugs.webkit.org/show_bug.cgi?id=90396
-
- Reviewed by Eric Seidel.
-
- As best I can tell, the only usage was in this unittest.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.updateexpectations):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-07-02 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r121497): It switched off and broke many unittests
- https://bugs.webkit.org/show_bug.cgi?id=90371
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest): Use snowleopard as os_version instead of leopard, because it isn't supported anymore.
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_all_test_configurations): Remove leopard testcases, because it isn't supported anymore.
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase): Inherit class PortTestCase from unittest.TestCase instead of object.
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- Move rebaseline-all command from the gardening-server down into webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=90395
-
- Reviewed by Adam Barth.
-
- This is just moving code. It it in preparation for making rebaseline-expectations
- use the same code in order to get the parallelism benefits and reduces the amount
- of code we have for doing rebaselines.
-
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CheckoutTest.test_apply_patch):
- Updated due to the change to executive_mock.
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.run_command):
- Update to print out the input passed to stdin.
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- Updated due to executive_mock change.
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineAll):
- (RebaselineAll._run_webkit_patch):
- (RebaselineAll._builders_to_fetch_from):
- (RebaselineAll._rebaseline_commands):
- (RebaselineAll._files_to_add):
- (RebaselineAll._optimize_baselines):
- (RebaselineAll._rebaseline):
- (RebaselineAll.execute):
- All this code is just copy-pasted except for mechanical changes
- (e.g. self.server.tool --> self._tool) and the reading in of the
- JSON from stdin instead of the post body.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_all):
- Copied the test-case out of gardeningserver_unittest.py.
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler):
- (GardeningHTTPRequestHandler.rebaseline):
- (GardeningHTTPRequestHandler.rebaselineall):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaselineall):
- (GardeningServerTest.test_rebaselineall.run_command):
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- Remove Leopard support from the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=90390
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (nonChromiumPlatform):
- (chromiumPlatform):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
-
-2012-07-02 Ojan Vafai <ojan@chromium.org>
-
- Fix posting from garden-o-matic. This broke in moving away from jquery's ajax method
- in http://trac.webkit.org/changeset/121617.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js:
-
-2012-07-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Read fonts path when running layout tests from alternative fonts dir when main dir doesn't exist
- https://bugs.webkit.org/show_bug.cgi?id=89437
-
- Reviewed by Martin Robinson.
-
- If main fonts directory doesn't exist, try with an alternative
- fonts directory at build directory.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (getOutputDir):
- (getFontsPath):
- (initializeFonts):
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::getOutputDir):
- (WTR):
- (WTR::getFontsPath):
- (WTR::inititializeFontConfigSetting):
-
-2012-07-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Don't run the tests with jhbuild wrapper if it's already running under jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=89435
-
- Reviewed by Martin Robinson.
-
- * Scripts/new-run-webkit-tests: Don't run the tests with the
- jhbuild wrapper if there isn't a Dependencies directory inside the
- build directory.
-
-2012-06-29 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Simplify detection of non-installed module file
-
- Has the additional advantage that we do not rely on additional information.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/qt_webkit.pri:
-
-2012-07-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Add Gamepad support
- https://bugs.webkit.org/show_bug.cgi?id=90170
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/webkitperl/FeatureList.pm: Turn on GAMEPAD flag
- by default for EFL port.
- * efl/jhbuild.modules: Bump dependency versions of EFL libs
- since the latest Eeze is required for gamepad support.
-
-2012-07-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- Using the default start cylinder for fdisk causes a warning about the
- partition not starting on physical sector boundary. The Ubuntu forums
- recommend using a number that's divisible by 8, which is what we do in
- this patch.
-
- * EWSTools/cold-boot.sh:
-
-2012-07-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- It turns out we need to use Ubuntu 10.04 to get the right image results
- for chromium-linux. This patch updates our scripts to be compatible
- with Ubuntu 10.04.
-
- * EWSTools/cold-boot.sh:
- - fdisk doesn't have p and 1 as default commands in 10.04.
- * EWSTools/start-queue.sh:
- - git doesn't understanding the -B argument in 10.04. We've been
- using this change locally on the EC2 bots for a while.
-
-2012-07-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- * EWSTools/boot.sh:
- - We need to start the screen in detached mode so that we can run
- it remotely via ssh.
-
-2012-07-01 Adam Barth <abarth@webkit.org>
-
- Unreviewed.
-
- * EWSTools/cold-boot.sh:
- - Turns out we need to sudo this command in order for it to
- actually dimiss the EULA screen. :)
-
-2012-06-29 Adam Barth <abarth@webkit.org>
-
- Turns out we need zip too.
-
- * EWSTools/cold-boot.sh:
-
-2012-06-29 Adam Barth <abarth@webkit.org>
-
- Add a cold-boot.sh script for the EWS
- https://bugs.webkit.org/show_bug.cgi?id=90330
-
- Unreviewed.
-
- * EWSTools/cold-boot.sh: Added.
- - This script can take us from a cold GCE instance to a running EWS
- bot in one fell swoop.
- * EWSTools/start-queue.sh:
- - The if-block at the top of this script was causing trouble. I
- removed it from the bots a while ago. Now that we're using SVN to
- cold-boot the EWS bots, we need to make this change in the repo.
-
-2012-06-29 Luiz Agostini <luiz.agostini@nokia.com>
-
- [Qt][WK2] Private non-QtQuick API
- https://bugs.webkit.org/show_bug.cgi?id=84532
-
- MiniBrowserRaw is an usage example for the QRawWebView API.
- It is only an example and is not fully implemented.
-
- Reviewed by Noam Rosenthal.
-
- * MiniBrowser/qt/raw/DerivedSources.pri: Added.
- * MiniBrowser/qt/raw/MiniBrowserRaw.pro: Added.
- * MiniBrowser/qt/raw/Target.pri: Added.
- * MiniBrowser/qt/raw/View.cpp: Added.
- * MiniBrowser/qt/raw/View.h: Added.
- * Scripts/webkitpy/style/checker.py:
- * Tools.pro:
-
-2012-06-29 Ojan Vafai <ojan@chromium.org>
-
- Remove leopard bots from garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=90328
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2012-06-29 Ojan Vafai <ojan@chromium.org>
-
- garden-o-matic broken: TypeError: 'undefined' is not an object (evaluating 'buildLocations[currentIndex].url')
- https://bugs.webkit.org/show_bug.cgi?id=90243
-
- Reviewed by Dirk Pranke.
-
- jQuery was trying to be too smart and parsing the jsonp as json because of it's content-type.
- Excise jQuery and just use XHR directly since it's easier to maintain something where we control it
- all.
-
- Not really sure how to unittest this. I tested it all manually of course.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js:
- Made net.ajax a drop-in replacement for the features of $.ajax that we were using.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- Not related to this patch, but figured I'd update the failing test while I was at it.
-
-2012-06-29 Yaron Friedman <yfriedman@chromium.org>
-
- Fix layout test runner for Android after https://bugs.webkit.org/show_bug.cgi?id=88134
- https://bugs.webkit.org/show_bug.cgi?id=90309
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.start_http_server):
-
-2012-06-29 James Weatherall <wez@chromium.org>
-
- NPObjectWrapper may not address all window script object lifetime issues
- https://bugs.webkit.org/show_bug.cgi?id=85679
-
- TestNetscapePlugin now has a leak-window-scriptable-object test which takes a reference to the window script object, and a second reference to it via the "self" property, and does not release those references. This is used to simulate a leaky plugin in layout tests of the NPAPI scripting interface glue code.
-
- Reviewed by Nate Chapin.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_GetProperty):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest):
- * DumpRenderTree/TestNetscapePlugIn/Tests/LeakWindowScriptableObject.cpp: Added.
- (LeakWindowScriptableObject):
- (LeakWindowScriptableObject::LeakWindowScriptableObject):
- (LeakWindowScriptableObject::NPP_New):
-
-2012-06-29 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: add comment about how determine_full_port_name() works for apple ports, fix -wk2 bug
- https://bugs.webkit.org/show_bug.cgi?id=90314
-
- Reviewed by Ojan Vafai.
-
- Add comments and fix a bug in how we would handle the mac-wk2
- and win-wk2 port names after confusion around in bug 90312 :).
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.determine_full_port_name):
-
-2012-06-29 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove support for mac leopard from chromium configurations
- https://bugs.webkit.org/show_bug.cgi?id=90313
-
- Reviewed by Tony Chang.
-
- Google has shipped the last version of Chrome that will support
- Mac OS 10.5 (Leopard), and we no longer have bots that run this
- configuration, so we're removing support for it.
-
- A subsequent change will remove the baselines in platform/chromium-mac-leopard.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_complex_shadowing):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_versions):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_mac):
- (FactoryTest.test_chromium_mac):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_and_copy_test_with_lion_result):
-
-2012-06-29 Ojan Vafai <ojan@chromium.org>
-
- Fix optimize-baselines to not move baselines from win to win-7sp0
- https://bugs.webkit.org/show_bug.cgi?id=90312
-
- Reviewed by Dirk Pranke.
-
- It used to consider win-7sp0 as the common directory for all the Apple
- windows ports and incorrectly move results out of win.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_win_does_not_drop_to_win_7sp0):
- (BaselineOptimizerTest.test_common_directory_includes_root):
-
-2012-06-28 Ojan Vafai <ojan@chromium.org>
-
- Fix rebaselining for Qt and Apple ports
- https://bugs.webkit.org/show_bug.cgi?id=90204
-
- Reviewed by Dirk Pranke.
-
- -Apporpriately put wk2 results in the -wk2 directories.
- -Since Qt and Apple-Win don't have bots that correspond to the
- platform/qt and platform/win directories, we need to fudge it
- and always put the results in those directories for those ports.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (rebaseline_override_dir):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (_builder_options):
- Identify webkit2 builders by the WK2 in the builder name.
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._baseline_directory):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_baseline_directory):
-
-2012-06-29 Zoltan Horvath <zoltan@webkit.org>
-
- Add support for --force parameter to run-performance-tests
- https://bugs.webkit.org/show_bug.cgi?id=90279
-
- Reviewed by Dirk Pranke.
-
- It's helpful to be able to run tests from the Skipped list of the performance tests.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._collect_tests):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py: Add test.
- (test_collect_tests_with_skipped_list):
-
-2012-06-29 Tony Chang <tony@chromium.org>
-
- [GTK] Enable CSS grid layout LayoutTests on GTK+
- https://bugs.webkit.org/show_bug.cgi?id=90226
-
- Reviewed by Martin Robinson.
-
- This feature is disabled via Settings by default, but for testing,
- we enable it using layoutTestController.overridePreferences. Add the
- necessary plumbing for DRT.
-
- WTR already works because support was added for Apple Mac earlier.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Feature is off by default.
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::overridePreference): Add handling of WebKitCSSGridLayoutEnabled.
-
-2012-06-29 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- [Qt] Added Qt port for garden-o-matic.
- https://bugs.webkit.org/show_bug.cgi?id=82719
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-06-29 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] Get rid of using DumpRenderTreeSupportQt
- https://bugs.webkit.org/show_bug.cgi?id=90262
-
- Reviewed by Alexey Proskuryakov.
-
- Now that we decided to not support v8 in WebKit2
- we can get rid of using DumpRenderTreeSupportQt
- in WebKitTestRunner.
-
- * Tools.pro:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::resetAfterTest):
- (WTR::InjectedBundlePage::didClearWindowForFrame):
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
-
-2012-06-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Revert r121540, it broke most Qt builds
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-06-29 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Make build-webkit reject uknown configurations, eg. --profile
-
- The qmake-based buildsystem doesn't support it.
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-06-29 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Don't add Qt module dependencies in features.prf
-
- The required dependencies are already added in WebCore.pri.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-06-27 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Use LIBS_PRIVATE instead of putting dependencies into LIBS
-
- Reviewed by Tor Arne Vestbø..
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-06-28 Ryosuke Niwa <rniwa@webkit.org>
-
- DOMHTMLCollection::item may return a wrong element after namedItem is called
- https://bugs.webkit.org/show_bug.cgi?id=90240
-
- Reviewed by Antti Koivisto.
-
- Add a WebKit API test since namedItem is not used in the JS/V8 binding code.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.html: Copied from Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html.
- * TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm: Copied from Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm.
- (TestWebKitAPI::TEST):
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove the 'google-chrome' port code
- https://bugs.webkit.org/show_bug.cgi?id=88824
-
- Reviewed by Ojan Vafai.
-
- NRWT now supports passing additional baseline directories
- and expectations files on the command line, so there's no need
- to support the concept of a 'google-chrome' port directly.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_test_expectations_file):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.__init__):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.__init__):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_win):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py: Removed.
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py: Removed.
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up how arguments are passed to workers
- https://bugs.webkit.org/show_bug.cgi?id=90126
-
- Reviewed by Ojan Vafai.
-
- The way arguments are passed to workers has been crufty. It
- turns out it can be a lot cleaner via two things:
- 1) using a factory method instead of instantiating objects
- directly in manager_worker_broker removes the need for passing
- 'worker arguments' to the broker.
- 2) it turns out that since mock hosts and test ports are purely
- in-memory constructions, they can be pickled and passed to child
- workers, meaning that the worker no longer needs hacky code to
- pass the port in a special case or to guess what to do if we
- don't have a host - all of the test-specific logic can move to
- the test file, where we can stub out the mock host's
- port_factory to return the same already-created port when it
- needs to be shared.
-
- This change also moves WorkerException to manager_worker_broker.py
- where it belongs, and removes several useless tests that were
- just a maintenance burden (and would've needed rewriting when we
- change the rest of the broker implementation).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests.worker_factory):
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker.py:
- (get):
- (WorkerException):
- (AbstractWorker.__init__):
- (_ManagerConnection.__init__):
- (_ManagerConnection.start_worker):
- (_InlineManager.__init__):
- (_InlineManager.start_worker):
- (_MultiProcessManager._can_pickle_host):
- (_MultiProcessManager):
- (_MultiProcessManager.start_worker):
- (_WorkerConnection.__init__):
- (_InlineWorkerConnection.__init__):
- (_InlineWorkerConnection.join):
- (_InlineWorkerConnection.run):
- (_Process.run):
- (_MultiProcessWorkerConnection.__init__):
- (_MultiProcessWorkerConnection.start):
- (_MultiProcessWorkerConnection):
- (_MultiProcessWorkerConnection.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (_TestWorker.__init__):
- (_TestWorker.run):
- (_TestsMixin.test_name):
- (_TestsMixin.test_cancel):
- (_TestsMixin.test_done):
- (_TestsMixin.test_unknown_message):
- (InlineBrokerTests.setUp):
- (MultiProcessBrokerTests.setUp):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker.run):
- * Scripts/webkitpy/layout_tests/controllers/worker_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (passing_run):
- (logging_run):
- (run_and_capture):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_exception_raised):
- (MainTest.test_keyboard_interrupt):
- (MainTest.test_retrying_and_flaky_tests):
- (MainTest.test_run_order__inline):
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: don't try to catch worker exceptions in run_webkit_tests.__main__
- https://bugs.webkit.org/show_bug.cgi?id=90125
-
- Reviewed by Ojan Vafai.
-
- It turns out run_webkit_tests.py wasn't really using
- WorkerException and the catch we had for it was pointless. I've
- removed the symbol import and moved it to the integration tests
- where it is needed. Eventually the definition of the exception
- moves to the broker module, and so minimizing the number of
- users of it is a good thing.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_exception_raised):
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up passing of log messages between processes
- https://bugs.webkit.org/show_bug.cgi?id=90123
-
- Reviewed by Ojan Vafai.
-
- It turns out log messages are perfectly picklable by themselves
- and contain the process id of the process that generated the
- message, so if we just pass the record from the worker to the
- manager and call logger.handle() in the manager, everything just
- works :).
-
- The change is covered by existing tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._log_messages):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (_WorkerLogHandler.emit):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream.__init__):
- (_LogHandler.emit):
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- add a pylint wrapper for linting python code
- https://bugs.webkit.org/show_bug.cgi?id=90232
-
- Reviewed by Adam Barth.
-
- Currently we use 'pep8' to check python code in
- check-webkit-style. pep8 is fast but simple; pylint is slower
- but has much more robust linting capabilities and will catch
- variable typos and all sorts of other things. Eventually we
- should switch check-webkit-style to use this, but our code is
- far from linting now so it needs to be cleaned up first.
-
- This change adds the infrastructure and a wrapper so we can
- start doing that.
-
- * Scripts/lint-webkitpy: Added.
- * Scripts/webkitpy/pylintrc: Added.
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_pylint):
-
-2012-06-28 Tony Chang <tony@chromium.org>
-
- [GTK] Use WEBKITOUTPUTDIR to find fonts in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=90215
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts): Check for WEBKITOUTPUTDIR first.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server): Copy the environment variable to the child process.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::inititializeFontConfigSetting): Check for WEBKITOUTPUTDIR first.
-
-2012-06-28 Dirk Pranke <dpranke@chromium.org>
-
- derive ChromiumPort from WebKitPort in NRWT in order to support skipping tests if symbols are missing
- https://bugs.webkit.org/show_bug.cgi?id=89706
-
- Reviewed by Ojan Vafai.
-
- Try again to land the change first landed in r121363. This patch
- adds a bunch more tests and reworks the handling of
- port-specific default values for --pixel-tests and --time-out-ms
- to be more consistent (adding a default_pixel_tests() method,
- pushing the webkit default_timeout_ms() value up into base.py,
- and overriding it properly in the chromium and apple mac ports.
-
- Also change the logic in
- run_webkit_tests._setup_derived_options() to not second-guess
- what the port wants the timeout value to be for debug builds;
- computing this in two different places led to several bugs.
-
- This change also changes the Chromium unittest ports to derive
- from ChromiumPortTestCase instead of PortTestCase, so that we
- ensure that we're running the same tests on all port variants
- more easily. There's more cleanup that can be done here, but
- this is good enough for now
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_pixel_tests):
- (Port):
- (Port.default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort.__init__):
- (ChromiumPort.default_pixel_tests):
- (ChromiumPort.default_timeout_ms):
- (ChromiumPort.driver_name):
- (ChromiumPort._driver_class):
- (ChromiumPort._missing_symbol_to_skipped_tests):
- (ChromiumPort.skipped_layout_tests):
- (ChromiumPort.setup_test_run):
- (ChromiumPort._path_to_image_diff):
- (ChromiumPort._convert_path):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- (ChromiumAndroidPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- split off from chromium_unittest.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort.start_http_server):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_default_timeout_ms):
- (PortTestCase):
- (PortTestCase.test_default_pixel_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.default_pixel_tests):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._modules_to_search_for_symbols):
- (WebKitPort):
- (WebKitPort._symbols_string):
- (WebKitPort._skipped_tests_for_unsupported_features):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (TestWebKitPort._symbols_string):
- (TestWebKitPort._tests_for_disabled_features):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
-
-2012-06-28 Joshua Bell <jsbell@chromium.org>
-
- run-bindings-tests should return non-zero exit code on test failure
- https://bugs.webkit.org/show_bug.cgi?id=90205
-
- Reviewed by Adam Barth.
-
- * Scripts/run-bindings-tests:
- (main):
-
-2012-06-28 Terry Anderson <tdanderson@chromium.org>
-
- [chromium] Reset the device scale factor to 1 before each test is run
- https://bugs.webkit.org/show_bug.cgi?id=90212
-
- Reviewed by Adam Barth.
-
- Some tests change the device scale factor, so this needs to be reset to
- 1.0 at the start of each test to avoid test flakiness.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
-
-2012-06-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Cleanup HTMLFormCollection
- https://bugs.webkit.org/show_bug.cgi?id=90111
-
- Reviewed by Andreas Kling.
-
- Add a WebKit API test using copy-paste design pattern per kling's request.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html: Added.
- * TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm: Added.
- (-[HTMLFormCollectionNamedItemTest webView:didFinishLoadForFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-06-28 Tim Horton <timothy_horton@apple.com>
-
- [mac] WKTR windows still don't stay off screen sometimes
- https://bugs.webkit.org/show_bug.cgi?id=90214
- <rdar://problem/11760263>
-
- Reviewed by Simon Fraser.
-
- In some cases, the system itself will consult [WebKitTestRunnerWindow frame], so we should refrain from
- overriding it and instead provide a different method to use when we want the web-facing "fake" window origin
- (for PlatformWebView::windowFrame()).
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[WebKitTestRunnerWindow frameRespectingFakeOrigin]):
- (WTR::PlatformWebView::windowFrame):
-
-2012-06-28 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add unit tests for GtkInputMethodFilter
- https://bugs.webkit.org/show_bug.cgi?id=88698
-
- Reviewed by Carlos Garcia Campos.
-
- Add unit tests for GtkInputMethodFilter in the WebCore platform layer.
- This change adds the TestGtk test suite which will be used for all non-API
- layer GTK unit tests.
-
- * TestWebKitAPI/GNUmakefile.am: Update the build to include the new tests.
- * TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp: Added.
- (TestWebKitAPI::PlatformWebView::PlatformWebView): Remove the call to gtk_init here
- as it's now in main.cpp.
- * TestWebKitAPI/gtk/main.cpp: Change the g_type_init call to gtk_init, because now
- a majority of all unit tests depend on GTK+ being initialized.
-
-2012-06-28 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable support for HTML5 datalist
- https://bugs.webkit.org/show_bug.cgi?id=90157
-
- Reviewed by Martin Robinson.
-
- Turn on DATALIST flag by default on EFL port to
- support HTML5 datalist tag.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-28 Tony Chang <tony@chromium.org>
-
- Enable CSS grid layout LayoutTests on platform Mac
- https://bugs.webkit.org/show_bug.cgi?id=90113
-
- Reviewed by Ojan Vafai.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Reset the value to NO between tests.
-
-2012-06-28 Mike Fenton <mifenton@rim.com>
-
- [BlackBerry] Add watchlist options for Blackberry and editing.
- https://bugs.webkit.org/show_bug.cgi?id=90193
-
- Unreviewed.
-
- Add BlackBerry and Editing watchlist and monitor them.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-06-28 Tim Horton <timothy_horton@apple.com>
-
- Unreviewed, upgrade myself to a reviewer!
-
- http://www.webkit.org/blog/2082/tim-horton-is-now-a-webkit-reviewer/
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-28 Terry Anderson <tdanderson@chromium.org>
-
- [Chromium] Chromium's LayoutTestController is missing setBackingScaleFactor
- https://bugs.webkit.org/show_bug.cgi?id=83635
-
- Reviewed by Adam Barth.
-
- Added InvokeCallbackTask, a new derived class of MethodTask. When
- setBackingScaleFactor is called, a call to setDeviceScaleFactor in
- WebView is made and then postTask is used to invoke the callback
- function specified in testRunner.setBackingScaleFactor.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (InvokeCallbackTask):
- (InvokeCallbackTask::InvokeCallbackTask):
- (InvokeCallbackTask::runIfValid):
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
-
-2012-06-28 Ojan Vafai <ojan@chromium.org>
-
- Make rebaseline-test and rebaseline-expectations work for non-Chromium ports
- https://bugs.webkit.org/show_bug.cgi?id=90186
-
- Reviewed by Adam Barth.
-
- This makes rebaselining work for all ports that have a TestExpectations file
- in the tree. I didn't test other ports.
-
- This doesn't address 100% of the problem. The rebaseline code puts the expectations
- in the most specific directory and relies on optimize-baselines to merge baselines
- appropriately. This only works if every platform directory has an equivalent bot
- that runs the tests, which is not true for most ports.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Builder._revision_and_build_for_filename):
- Some bots have filenames that aren't revision/build number pairs
- e.g. they are random junk like aQhxvx. Handle this gracefully.
- (Builder._fetch_revision_to_build_map):
- (Builder._file_info_list_to_revision_to_build_list):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (BuilderTest.test_build_and_revision_for_filename):
- (BuilderTest.test_file_info_list_to_revision_to_build_list):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- Update the list of builders. This list needs to be kept up
- to date for the rebaseline tool to work.
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._results_url):
- (RebaselineExpectations._run_webkit_patch):
- (RebaselineExpectations._rebaseline_port):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- Qt port uses qmake to determine the right version. Systems without qmake correctly fallback
- to a specific version.
-
-2012-06-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][NRWT] Fix baseline and skipped file search path.
- https://bugs.webkit.org/show_bug.cgi?id=89882
-
- Unreviewed trivial typo fix after r121430.
-
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_search_path):
- (QtPortTest._assert_skipped_path):
-
-2012-06-28 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][NRWT] Fix baseline and skipped file search path.
- https://bugs.webkit.org/show_bug.cgi?id=89882
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._search_paths):
- (QtPort):
- (QtPort.baseline_search_path):
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
- (QtPortTest._assert_skipped_path):
- (QtPortTest.test_baseline_search_path):
- (QtPortTest.test_skipped_file_search_path):
-
-2012-06-28 Alexander Pavlov <apavlov@chromium.org>
-
- [Qt] inspector/styles/inject-stylesheet.html makes 4 tests flakey (TEXT PASS)
- https://bugs.webkit.org/show_bug.cgi?id=90167
-
- Reviewed by Csaba Osztrogonác.
-
- DRT should remove user stylesheets from the page group when resetting before running another test.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-06-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][DRT] Reset AcceleratedCompositingEnabled between tests
- https://bugs.webkit.org/show_bug.cgi?id=90164
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
-
-2012-06-28 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Restore original value of mock scrollbars between tests
- https://bugs.webkit.org/show_bug.cgi?id=90155
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::setMockScrollbarsEnabled):
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
-
-2012-06-27 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/90096> Building within Xcode sometimes does a full rebuild after building via build-webkit
-
- We need to ensure that build-webkit uses the same setting for SHARED_PRECOMPS_DIR
- as what Xcode itself will use when building, otherwise switching between the two
- can result in the precompiled headers being rebuilt and thus the entire world
- rebuilding.
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
-
-2012-06-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121363, r121367, r121384, and
- r121390.
- http://trac.webkit.org/changeset/121363
- http://trac.webkit.org/changeset/121367
- http://trac.webkit.org/changeset/121384
- http://trac.webkit.org/changeset/121390
- https://bugs.webkit.org/show_bug.cgi?id=90134
-
- It broke debug NRWT on GTK and on Qt (Requested by Ossy_NIGHT
- on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort.__init__):
- (ChromiumPort._check_file_exists):
- (ChromiumPort.default_results_directory):
- (ChromiumPort._driver_class):
- (ChromiumPort._build_path):
- (ChromiumPort._path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.__init__):
- (WebKitPort._webcore_symbols_string):
- (WebKitPort._skipped_tests_for_unsupported_features):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (TestWebKitPort._webcore_symbols_string):
- (WebKitPortUnitTests.test_default_options):
-
-2012-06-27 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo in r121384 :(
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.default_test_timeout_ms):
-
-2012-06-27 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: default timeout for debug bots broke in r121363
- https://bugs.webkit.org/show_bug.cgi?id=90112
-
- Unreviewed, build fix.
-
- I forgot to account for release and debug having different
- default values :(.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.default_test_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort):
- (WebKitPort.default_test_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitPortUnitTests.test_default_options):
-
-2012-06-27 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix a couple of issues running under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=90035
-
- Reviewed by Eric Seidel.
-
- These were causing unit tests to fail on cygwin (apple win bot).
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/performance_tests/perftest.py:
-
-2012-06-27 Adam Barth <abarth@webkit.org>
-
- [Chromium] DumpRenderTree on Android should call SkUseTestFontConfigFile once available
- https://bugs.webkit.org/show_bug.cgi?id=89801
-
- Reviewed by Nate Chapin.
-
- Let's call SkUseTestFontConfigFile now that it exists.
-
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit):
-
-2012-06-27 Dirk Pranke <dpranke@chromium.org>
-
- Fix typo introduced in r121363.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._symbols_string):
-
-2012-06-27 Mark Hahnenberg <mhahnenberg@apple.com>
-
- Moving from committers to reviewers :-)
-
- Rubber stamped by Filip Pizlo.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-27 Dirk Pranke <dpranke@chromium.org>
-
- Derive ChromiumPort from WebKitPort to add support for missing symbols to skip tests
- https://bugs.webkit.org/show_bug.cgi?id=89706
-
- Reviewed by Adam Barth.
-
- Based on the original patch by Raymond Toy.
-
- This patch changes ChromiumPort to derive from webkit.WebKitPort
- instead of base.Port. This is a long-awaited change and a
- precursor to merging base.Port and webkit.WebKitPort, but is
- driven by the desire to dynamically detect whether the MP3 and
- AAC codecs are compiled into DRT on Chromium, for which we
- wanted to re-use the existing logic in WebKit port for determine
- what to skip at compile time.
-
- Most of the changes are shuffling things around so that we don't
- change any other logic and so we override the necessary methods
- in WebKitPort (and try to follow the same method definition
- order where possible).
-
- Also, on the Chromium port the mp3 and aac codecs are actually
- defined in a separate library, so scanning webcore isn't
- sufficient. This patch generalizes the symbol lookup to handle
- multiple libraries, and uses different libraries as appropriate
- for Chromium.
-
- The only functional/visible changes should be in the value
- returned for skipped_layout_tests().
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort.__init__):
- (ChromiumPort.driver_name):
- (ChromiumPort._driver_class):
- (ChromiumPort._missing_symbol_to_skipped_tests):
- (ChromiumPort.skipped_layout_tests):
- (ChromiumPort.setup_test_run):
- (ChromiumPort._path_to_image_diff):
- (ChromiumPort._convert_path):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_missing_symbol_to_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumLinuxPort._modules_to_search_for_symbols):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort):
- (WebKitPort.__init__):
- (WebKitPort._symbols_string):
- (WebKitPort._modules_to_search_for_symbols):
-
-2012-06-27 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(r121339): It broke the build on the Qt Windows bots
- https://bugs.webkit.org/show_bug.cgi?id=90081
-
- Buildfix for Qt 4.8 Windows. Use the former path for Qt 4.8, and the newer one for Qt 5.
-
- Reviewed by Noam Rosenthal.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-06-27 Sergio Villar Senin <svillar@igalia.com>
-
- [WK2] [GTK] WebKit2 testing bot fails to run tests due to missing files
- https://bugs.webkit.org/show_bug.cgi?id=90061
-
- Reviewed by Gustavo Noronha Silva.
-
- Add "-no-install -no-fast-install" to the LDFLAGS in bots. With
- this flag libtool tells the linker to set the rpath for the output
- file to the full path of the .libs directory, instead of using a
- wrapper script to set up the LD_LIBRARY_PATH. This will allow us
- to directly reuse builds in the pure testing bots.
-
- * BuildSlaveSupport/gtk/daemontools-buildbot.conf:
-
-2012-06-27 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] No need to save and restore TEMPLATE in a function
-
- This was a leftover from when the logic was not in its own function scope.
-
- QMAKE_FRAMEWORK_BUNDLE_NAME on the other hand is exported in qtLibraryTarget, which
- will surprisingly affect the global scope as well, so we have to save and restore it.
-
- Original patch by Oswald Buddenhagen <oswald.buddenhagen@nokia.com> on 2012-06-27
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-06-27 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Fix lookup location for sqlite sources
-
- Don't look in the install dir - we are unlikely to find anything there
- unless we are doing a developer build.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-06-27 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Add support for the Gamepad API
- https://bugs.webkit.org/show_bug.cgi?id=87503
-
- Reviewed by Carlos Garcia Campos.
-
- Enable the gamepad support for the GTK port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix gcc build after r121302
- https://bugs.webkit.org/show_bug.cgi?id=90055
-
- Reviewed by Mark Rowe.
-
- Assume RTTI is always disabled so that gtest builds on XCode 3.2.6.
-
- It appears that gcc doesn't like window.get().* inside a template so replace that by [window.get() *] instead.
-
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm:
- (TestWebKitAPI::AcceptsFirstMouse::runTest):
-
-2012-06-27 Csaba Osztrogonác <ossy@webkit.org>
-
- Add master.cfg unittest to help migration - pass BuildStep instances instead of BuildStep subclasses
- https://bugs.webkit.org/show_bug.cgi?id=89564
-
- Reviewed by Tony Chang.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (BuildStepsConstructorTest):
- (BuildStepsConstructorTest.generateTests):
- (BuildStepsConstructorTest.createTest):
- (BuildStepsConstructorTest.createTest.doTest):
-
-2012-06-26 Mark Hahnenberg <mhahnenberg@apple.com>
-
- Add support for preciseTime() to WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=90027
-
- Reviewed by Darin Adler.
-
- It would be nice to be able to use preciseTime() in WebKitTestRunner like we can in DumpRenderTree.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::preciseTime):
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-06-26 Lucas Forschler <lforschler@apple.com>
-
- Teach the Apple port how to build the test tools in build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=89540
-
- Reviewed by Jon Lee & Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests.start): pass --no-build since tools should now be in the downloaded archive
- (RunUnitTests.start): ditto
- * Scripts/build-webkit: add tools to the projects build list
-
-2012-06-26 Ojan Vafai <ojan@chromium.org>
-
- Only show the platform-appropriate builders for non-layout test failures in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=90025
-
- Reviewed by Simon Fraser.
-
- Move the chromium-specific filtering code into config.js and replace it with a method on each platform
- config. Also, let the webkit test step name be webkit_tests (build.chromium.org) or layout-test (build.webkit.org).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-06-26 Ojan Vafai <ojan@chromium.org>
-
- Fix failing garden-o-matic unittests
- https://bugs.webkit.org/show_bug.cgi?id=90021
-
- Reviewed by Adam Barth.
-
- These had all just fallen out of date.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
-
-2012-06-26 Ojan Vafai <ojan@chromium.org>
-
- Fix platform picker change handler in garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=90010
-
- Reviewed by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- The old code never worked. This is hard to test because change handlers require
- a user-initiated action and the code is changing the window's location, which would
- navigate the test page.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- Fix the CSS so it doesn't cause the tabstrip to be disconnected from the tabs on Linux
- due to the large margin-bottom.
-
-2012-06-26 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- webkitpy: Make webkit-patch patches-to-review useful
- https://bugs.webkit.org/show_bug.cgi?id=89470
-
- Reviewed by Eric Seidel.
-
- webkit-patch patches-to-review will now output the list of
- bugs with patches pending for review that has the user on CC,
- excluding patches with cq-, sorted by the age of the patch.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (BugzillaQueries.fetch_bugs_from_review_queue):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzillaQueries.fetch_bugs_from_review_queue):
- (MockBugzilla.__init__):
- (MockBugzilla.authenticate):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PatchesToReview):
- (PatchesToReview.__init__):
- (PatchesToReview._print_report):
- (PatchesToReview._generate_report):
- (PatchesToReview.execute):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (QueryCommandsTest.test_patches_to_review):
-
-2012-06-26 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: broken for chromium on vista
- https://bugs.webkit.org/show_bug.cgi?id=89988
-
- Reviewed by Tony Chang.
-
- r121194 removed support for 'chromium-win-vista' as a separate
- port, but this actually prevented the code from running on vista
- at all, which is unduly harsh and broke the websocket tests on
- the (non-webkit) chromium bots that are still running on vista.
-
- It's probably good enough to pretend that vista is win7 instead;
- some layout tests will still fail but at least things'll run.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.determine_full_port_name):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_versions):
-
-2012-06-26 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup: Pass CheckOutSource instance instead of class to BuildStep.addStep
- https://bugs.webkit.org/show_bug.cgi?id=89215
-
- We need it because it is deprecated and will be dropped in buildbot 0.8.7
-
- Reviewed by Tony Chang.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (CheckOutSource.__init__):
- (Factory.__init__):
-
-2012-06-26 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt][Win] Symbols are not exported in QtWebKit5.dll
- https://bugs.webkit.org/show_bug.cgi?id=88873
-
- Reviewed by Tor Arne Vestbø.
-
- When linking the target dll make sure to re-export the symbols from
- the static libraries marked as export, with the help of a little python
- script and a qmake extra compiler.
-
- * Scripts/generate-win32-export-forwards: Added.
- * qmake/mkspecs/features/win32/default_post.prf:
-
-2012-06-25 Jocelyn Turcotte <turcotte.j@gmail.com>
-
- Add a note about hostname completion not working well with --cc completion
-
- Reviewed by Simon Hausmann.
-
- Hostname completion tries to resolve anything after an @ sign which is present
- in the completed list of contributor emails to CC.
-
- * Scripts/webkit-tools-completion.sh:
-
-2012-06-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121244.
- http://trac.webkit.org/changeset/121244
- https://bugs.webkit.org/show_bug.cgi?id=89966
-
- skip list path is incorrect now. (Requested by Ossy on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.baseline_search_path):
- (QtPort._skipped_file_search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_baseline_search_path):
-
-2012-06-26 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][NRWT] Fix baseline and skipped file search path.
- https://bugs.webkit.org/show_bug.cgi?id=89882
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_baseline_search_path):
-
-2012-06-26 Tony Chang <tony@chromium.org>
-
- [Qt] Enable grid layout LayoutTests
- https://bugs.webkit.org/show_bug.cgi?id=89909
-
- Reviewed by Csaba Osztrogonác.
-
- These tests pass, we just need to hook up the overridePreference.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings): Reset grid layout and regions between tests.
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- (LayoutTestController::overridePreference): Add WebKitCSSGridLayoutEnabled.
-
-2012-06-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r121236.
- http://trac.webkit.org/changeset/121236
- https://bugs.webkit.org/show_bug.cgi?id=89956
-
- It's broke the nrwt on qt and gtk platform (Requested by
- kkristof on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._build_driver):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
- (XvfbDriver._start.x_filter):
- (XvfbDriver.stop):
-
-2012-06-26 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [NRWT] XvfbDriver should choose the next free display
- https://bugs.webkit.org/show_bug.cgi?id=88414
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._driver_class):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver.__init__):
- (XvfbDriver._start):
- (XvfbDriver._start.next_free_id):
- (XvfbDriver.stop):
-
-2012-06-25 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Make it possible to build WebKit without QtWidgets
- https://bugs.webkit.org/show_bug.cgi?id=78109
-
- Reviewed by Tor Arne Vestbø.
-
- * Tools.pro: Disable various tools that depend on WK1.
- * qmake/mkspecs/features/default_post.prf: Add WK1 as supported static lib in WEBKIT
- * qmake/mkspecs/features/default_pre.prf: Disable WK1 if QtWidgets is not built.
- * qmake/mkspecs/modules/webkit1.prf: Added.
-
-2012-06-25 Dirk Pranke <dpranke@chromium.org>
-
- put vista back for chromium (non-webkit) bots ...
- https://bugs.webkit.org/show_bug.cgi?id=89929
-
- Unreviewed, build fix.
-
- Turns out we've only gotten rid of vista on the webkit tests so
- far. Put vista back for the other chromium bots ...
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (chromiumPlatform):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-06-25 Dirk Pranke <dpranke@chromium.org>
-
- update flakiness dashboard after removing chromium-vista bots
- https://bugs.webkit.org/show_bug.cgi?id=89925
-
- Unreviewed, build fix.
-
- More changes missed in r121194 :(.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (chromiumPlatform):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-06-25 Dirk Pranke <dpranke@chromium.org>
-
- remove support for chromium vista from tools
- https://bugs.webkit.org/show_bug.cgi?id=89915
-
- Reviewed by Tony Chang.
-
- This change is all deleting code and updating tests to handle
- the configuration being gone. All tests now pass except for a
- few unittests for the flakiness dashboard which were failing
- before this patch.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_complex_shadowing):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_versions):
- (ChromiumWinTest.test_baseline_path):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
-
-2012-06-25 Scott Graham <scottmg@chromium.org>
-
- [Chromium] add empty impl of WebThemeEngine::getSize() for DRT
- https://bugs.webkit.org/show_bug.cgi?id=89907
-
- Not reviewed. Fix build in Chromium.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- (WebThemeEngineDRTWin::getSize):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h:
- (WebThemeEngineDRTWin):
-
-2012-06-25 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Implement Network Information API
- https://bugs.webkit.org/show_bug.cgi?id=87067
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * efl/jhbuild.modules: Add eeze library dependency.
-
-2012-06-25 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Fix Win32 debug build
-
- Reviewed by Tor Arne Vestbø.
-
- Consolidate use_all_in_one_files into mac/unix/win32 default_pre.prf.
-
- * qmake/mkspecs/features/unix/default_pre.prf:
- * qmake/mkspecs/features/win32/default_pre.prf: Added.
-
-2012-06-24 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [Qt] Enable <input type="color"> support by default
- https://bugs.webkit.org/show_bug.cgi?id=89653
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This feature is complete for Qt WebKit2. Enabling by default
- will help to mature the implementation.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-06-24 Dan Bernstein <mitz@apple.com>
-
- Made debug-{minibrowser,safari,test-runner} work with LLDB.
-
- Reviewed by Sam Weinig.
-
- * Scripts/debug-minibrowser: Pass INCLUDE_OPTIONS_FOR_DEBUGGING to
- printHelpAndExitForRunAndDebugWebKitAppIfNeeded().
- * Scripts/debug-safari: Ditto.
- * Scripts/debug-test-runner: Ditto.
- * Scripts/webkitdirs.pm:
- (debugger): Added. Calls determineDebugger() if needed and returns the chosen debugger.
- (determineDebugger): Added. Sets the debugger to "lldb" if the --use-lldb switch is present,
- and to "gdb" otherwise.
- (printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Changed to print help for the
- --target-web-process and --use-lldb switches if passed INCLUDE_OPTIONS_FOR_DEBUGGING.
- (execMacWebKitAppForDebugging): Changed to use the chosen debugger.
-
-2012-06-24 Adam Barth <abarth@webkit.org>
-
- [Chromium] Release media resources after each LayoutTest on Android
- https://bugs.webkit.org/show_bug.cgi?id=89720
-
- Reviewed by Eric Carlson.
-
- The LayoutTests can hang when run on Android because we sometimes run
- out of media resources. This patch causes us to release our media
- resources after each test in order to avoid running out of this
- resource. In production, there are other mechanisms that manage this
- resource.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2012-06-23 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] REGRESSION(r120918): Causes flaky DND tests
- https://bugs.webkit.org/show_bug.cgi?id=89770
-
- Reviewed by Martin Robinson.
-
- Connect to the run-file-chooser signal of the WebKitWebView and
- return TRUE so no file chooser dialog is run. This prevents certain
- test failures.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (webViewRunFileChooser):
- (createWebView):
-
-2012-06-23 Dan Bernstein <mitz@apple.com>
-
- debug-{minibrowser,safari,test-runner} fail when gdb is not installed in /usr/bin.
-
- Reviewed by Sam Weinig.
-
- * Scripts/webkitdirs.pm:
- (execMacWebKitAppForDebugging): Use xcrun to locate gdb.
-
-2012-06-23 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip GTK+ unit test /webkit2/WebKitFindController/hide.
-
- It fails always when running it in Xvfb.
-
- * gtk/run-api-tests:
- (TestRunner):
-
-2012-06-23 Wajahat Siddiqui <mdwajahatali.siddiqui@motorola.com>
-
- [GTK][WK2]Mis-spelt defaultWindowTitle
- https://bugs.webkit.org/show_bug.cgi?id=89808
-
- Reviewed by Carlos Garcia Campos.
-
- * MiniBrowser/gtk/BrowserWindow.c:
-
-2012-06-23 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] Add a new webkit2 tests slave bot
- https://bugs.webkit.org/show_bug.cgi?id=89336
-
- Reviewed by Csaba Osztrogonác.
-
- Slave configuration for a new GTK 64 bit release bot that will run
- WebKit2 tests.
-
- Also BuildAndTest now accepts the "triggers" parametter,
- this means that apart from building and testing it can trigger
- some other build/test sequences in other slaves.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (BuildAndTestFactory.__init__):
-
-2012-06-23 Kwang Yul Seo <skyul@company100.net>
-
- Unreviewed. Update my email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-22 Adam Barth <abarth@webkit.org>
-
- [Chromium] DumpRenderTree on Android needs to configure fonts for testing
- https://bugs.webkit.org/show_bug.cgi?id=89721
-
- Reviewed by Nate Chapin.
-
- This patch teaches DumpRenderTree to configure Skia to use the fallback
- fonts that the LayoutTests assume. This patch reduces the number result
- differences between chromium-android and chromium-linux.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit):
- * DumpRenderTree/chromium/android_fallback_fonts.xml: Added.
- * DumpRenderTree/chromium/android_main_fonts.xml: Added.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
-
-2012-06-22 Alexandru Chiculita <achicu@adobe.com>
-
- [CSS Shaders] Re-enable the CSS Shaders compile time flag on Safari Mac
- https://bugs.webkit.org/show_bug.cgi?id=89781
-
- Reviewed by Dean Jackson.
-
- Added CSS Shaders as enabled by default on Safari for Mac.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-22 Adam Barth <abarth@webkit.org>
-
- Add support for test_expectations_android.txt for overriding test expecations on the chromium-android branch
- https://bugs.webkit.org/show_bug.cgi?id=89791
-
- Reviewed by Dirk Pranke.
-
- Downstream, the chromium-android port maintains a test expectations
- file to keep track of which tests pass or fail. That causes them to
- keep a patch in chromium_android.py in their branch.
-
- This patch teaches chromium_android.py to use test_expectations_android.txt.
- We don't intend to use this file upstream, but having this code patch
- upstream lets us unfork webkitpy.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.expectations_files):
-
-2012-06-22 Dirk Pranke <dpranke@chromium.org>
-
- run_webkit_tests.py failed with AttributeError(''NoneType' object has no attribute 'pid'')
- https://bugs.webkit.org/show_bug.cgi?id=89734
-
- Reviewed by Ryosuke Niwa.
-
- Fix a crash in ServerProcess if you called .pid() after it
- crashed during a write(). We had a test for this case but the
- test wasn't calling pid(), just has_crashed(). Fixed the problem
- and the test.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.__init__):
- (ServerProcess.pid):
- (ServerProcess._start):
- (ServerProcess.stop):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (FakeServerProcess._start):
- (TestServerProcess.test_broken_pipe):
-
-2012-06-22 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Disable c++0x compatibility warnings in JavaScriptCore.gyp when building for Android
- https://bugs.webkit.org/show_bug.cgi?id=88853
-
- Reviewed by Steve Block.
-
- The Android exclusions were necessary to fix a gyp generation error, as
- the gcc_version variable wasn't being defined for Android. Remove these
- exceptions when Chromium is able to define the gcc_version variable.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-06-22 Mario Sanchez Prada <msanchez@igalia.com>
-
- Unreviewed gardening. Unskipping test passing after fixing bug 88419.
-
- * gtk/run-api-tests:
- (TestRunner): Unskip WTF.HashMap.
-
-2012-06-22 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Allow DumpRenderTree to dump about:blank
- https://bugs.webkit.org/show_bug.cgi?id=89685
-
- Reviewed by Ryosuke Niwa.
-
- We need to allow DumpRenderTree to dump about:blank page, then it will be consistent with other ports,
- additionaly this behavior is required for running WTR performance tests.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
-
-2012-06-21 Adam Barth <abarth@webkit.org>
-
- [Chromium] Reset mediaPlaybackRequiresUserGesture WebSettings after each test
- https://bugs.webkit.org/show_bug.cgi?id=89718
-
- Reviewed by Kent Tamura.
-
- We should reset this WebSetting to its default value so that it behaves
- consistently across tests.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-06-21 Zoltan Horvath <zoltan@webkit.org>
-
- DRT/WTR python interface handles about:blank incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=89563
-
- Reviewed by Dirk Pranke.
-
- Currently DRT/WTR python interface's _command_from_driver_input function
- puts the test directory path before about:blank. Remove this incorrect behavior.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._command_from_driver_input):
-
-2012-06-21 Dirk Pranke <dpranke@chromium.org>
-
- reenable perf tests on win
- https://bugs.webkit.org/show_bug.cgi?id=89690
-
- Reviewed by Ryosuke Niwa.
-
- Only the replay tests don't work, and those are disabled by
- default. This change also fixes the undefined _log reference
- that was causing a crash.
-
- * Scripts/run-perf-tests:
-
-2012-06-21 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120937.
- http://trac.webkit.org/changeset/120937
- https://bugs.webkit.org/show_bug.cgi?id=89679
-
- This patch brought buildbot master down (Requested by svillar
- on #webkit).
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-21 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Combine WebKit API tests into fewer binaries
- https://bugs.webkit.org/show_bug.cgi?id=88458
-
- Reviewed by Carlos Garcia Campos.
-
- Instead of creating one binary per-test file, create binaries for each
- category of tests. Right now this includes WTF and the WebKit2 C API,
- but later tests can be added for the GTK+ platform layer and the WebKit1
- and WebKit2 API layers.
-
- * TestWebKitAPI/GNUmakefile.am: Compile only two test binaries, one for the WebKit2
- C API and one for WTF. Refresh the source list to ensure that new test are active.
- * gtk/run-api-tests: Change the way that tests are skipped by splitting out the
- concept of skipping a test and skipping a suite (program) of tests. Test cases are
- skipped because of legitimate failures, but entire programs are skipped because of
- problems in the harness. As of right now a test program is only skipped if the
- accessibility bus cannot be started.
- (SkippedTest.__init__): Make the test case a required argument and have one skipped
- test case per SkippedTest instance.
- (SkippedTest.__str__): Ditto.
- (TestRunner): Update the directory list. We only have two gtest binaries now and they are
- in one directory. Reformat the test list to make it slightly easier to read.
- (TestRunner.__init__): Add the _skipped_test_program member, which handles entire
- test programs that are skipped.
- (TestRunner._setup_testing_environment): Use the new member.
- (TestRunner._test_cases_to_skip): Collect all skipped test cases now instead of just
- the first SkippedTest that matches.
- (TestRunner._should_run_test_program): Take a look at the new member to make this
- decision.
- (TestRunner._run_test_command): Use the name test_program instead of test
- to disambiguate between test cases and test suites.
- (TestRunner._run_test_glib): ditto.
- (TestRunner._run_test_google): Ditto.
- (TestRunner._run_test): Ditto.
- (TestRunner.run_tests): Ditto.
-
-2012-06-21 Yong Li <yoli@rim.com>
-
- Unreviewed. Moving myself from committer to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-21 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] Add a new webkit2 tests slave bot
- https://bugs.webkit.org/show_bug.cgi?id=89336
-
- Reviewed by Philippe Normand.
-
- Slave configuration for a new GTK bot that will run WebKit2 tests.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-21 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [Qt] Add a custom Color Chooser widget to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=87988
-
- Reviewed by Alexis Menard.
-
- Added custom color chooser example for the MiniBrowser.
-
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
- * MiniBrowser/qt/qml/ColorChooser.qml: Added.
-
-2012-06-21 Vivek Galatage <vivekgalatage@gmail.com>
-
- Remove the warning "File not found" in MiniBrowser post-build event
- https://bugs.webkit.org/show_bug.cgi?id=89601
-
- Reviewed by Adam Roben.
-
- * MiniBrowser/MiniBrowserPostBuild.cmd:
-
-2012-06-21 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] DRT in standalone mode hangs after the first test
- https://bugs.webkit.org/show_bug.cgi?id=89613
-
- Reviewed by Csaba Osztrogonác.
-
- Break an inline signal slot chain that ends up in setting
- LayoutTestController::m_hasDumped too early. In LayoutTestController::maybeDump()
- we emit done() which starts the chain that finishes in DumpRenderTree::open().
- The next line in maybeDump sets m_hasDumped to true. We could simply reorder
- these two lines but it seems to be wrong in general to start the next load
- from this call chain. The server mode (when DRT is runned by the test harness)
- also uses a queued connection to read the next test from stdin.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processArgsLine):
-
-2012-06-20 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: SpeechRecognition should hook up with ActiveDOMObject more
- https://bugs.webkit.org/show_bug.cgi?id=89217
-
- Reviewed by Adam Barth.
-
- Add a method for checking whether the mock speech
- recognition was aborted.
-
- Also redo the way the mock posts tasks. Instead of posting them all at once,
- maintain an internal queue of task objects, and call postTask() for them
- once at the time. This means that for example when the page is navigated
- away and abort() is called, that call doesn't end up after a bunch
- of previously posted events on the event loop.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::wasMockSpeechRecognitionAborted):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- (WebKit::ClientCallTask::ClientCallTask):
- (WebKit::ResultTask::ResultTask):
- (WebKit::NoMatchTask::NoMatchTask):
- (WebKit::ErrorTask::ErrorTask):
- (MockWebSpeechRecognizer::start):
- (MockWebSpeechRecognizer::abort):
- (MockWebSpeechRecognizer::setError):
- (MockWebSpeechRecognizer::MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::startTaskQueue):
- (MockWebSpeechRecognizer::StepTask::runIfValid):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- (MockWebSpeechRecognizer::hasBeenAborted):
- (MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::taskList):
- (Task):
- (MockWebSpeechRecognizer::Task::Task):
- (MockWebSpeechRecognizer::Task::~Task):
- (StepTask):
- (MockWebSpeechRecognizer::StepTask::StepTask):
-
-2012-06-21 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Add support for window.showModalDialog in WebKit2GTK+
- https://bugs.webkit.org/show_bug.cgi?id=79500
-
- Reviewed by Carlos Garcia Campos.
-
- Add support for modal dialogs in GTK's MiniBrowser.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (webViewRunAsModal):
- (webViewCreate):
- (webViewDecidePolicy):
- (browser_window_new):
- * MiniBrowser/gtk/BrowserWindow.h:
- * MiniBrowser/gtk/main.c:
- (createBrowserWindow):
-
-2012-06-20 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build fix.
- The wrapper script that launched new- and old-run-webkit-tests
- was discarding the --wincairo argument needed to get the proper
- test infrastructure to build under WinCairo.
-
- * Scripts/run-webkit-tests: Emulate the Qt, Wx, Chromium, etc.,
- behavior to chain the --wincairo flag through to the new build
- and test scripts.
-
-2012-06-20 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/89606> Teach run-safari and debug-safari to work with a Safari.app that has entitlements
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitdirs.pm:
- (executableHasEntitlements):
- (safariPathFromSafariBundle):
-
-2012-06-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120821.
- http://trac.webkit.org/changeset/120821
- https://bugs.webkit.org/show_bug.cgi?id=89605
-
- It made duplicated reviewer entries (Requested by Ossy on
- #webkit).
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.set_reviewer):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_set_reviewer):
- (test_set_short_description_and_bug_url):
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- nrwt outputs empty files for wdiff output if wdiff is not installed
- https://bugs.webkit.org/show_bug.cgi?id=88709
-
- Reviewed by Tony Chang.
-
- Reviewed by Tony Chang.
-
- Don't write -wdiff or -pretty.html files if wdiff or prettypatch
- aren't available, and clean up the handling for them in the port
- code.
-
- * Scripts/webkitpy/run_webkit_tests_integrationtest.py:
- (MainTest.test_output_diffs):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (TestResultWriter.create_text_diff_and_write_result):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.check_pretty_patch):
- (Port.check_wdiff):
- (Port._wdiff_missing_message):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort.check_build):
- (ChromiumLinuxPort._wdiff_missing_message):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.check_build):
- (ChromiumMacPort):
- (ChromiumMacPort._wdiff_missing_message):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest):
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix unit tests for ensuring svn revision is correct
- https://bugs.webkit.org/show_bug.cgi?id=89498
-
- Reviewed by Eric Seidel.
-
- Reviewed by Eric Seidel.
-
- Fix the unit tests for testing that we are embedding the SVN
- revision in the results json for NRWT properly; this was broken
- in r120646 but because the MockHost worked differently than the
- real one (by always initializing the MockSCM object) we didn't
- notice. Unfortunately, just changing the default breaks all
- sorts of unit tests ...
-
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- (MockHost._initialize_scm):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_no_svn_revision):
- (ResultSummaryTest.test_svn_revision):
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests appends "/Debug" or "/Release" to $WEBKITOUTPUTDIR
- https://bugs.webkit.org/show_bug.cgi?id=69360
-
- Reviewed by Eric Seidel.
-
- Reviewed by Eric Seidel.
-
- Propagate the 'port_implementation' part of the platform (i.e.,
- gtk,qt,chromium) to webkit-build-directory so that we can pick
- up the gtk-specific handling of WEBKITOUTPUTDIR ...
-
- I didn't write any additional tests for this; testing it
- properly is an integration test between the python code and the
- perl code, which I verified by hand.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.__init__):
- (Config.build_directory):
- * Scripts/webkitpy/layout_tests/port/config_mock.py:
- (MockConfig.__init__):
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.test_build_directory_passes_port_implementation):
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- Fix import sorting missed in r120846
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- Fix chromium win http servers after breakage introduced in r120846.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.start_http_server):
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd.__init__):
-
-2012-06-20 Dirk Pranke <dpranke@chromium.org>
-
- tweak output of webkit-patch print-{baselines,expectations}
- https://bugs.webkit.org/show_bug.cgi?id=89588
-
- Reviewed by Tony Chang.
-
- Minor tweaks to the output to make it more readable, including
- turning off csv by default for print-baselines with multiple ports.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.execute):
- (PrintBaselines.execute):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.run_test):
- (PrintExpectationsTest.test_multiple):
- (PrintBaselinesTest.setUp):
- (PrintBaselinesTest.test_multiple):
-
-2012-06-18 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests should spin-up enough httpd processes to avoid timeouts
- https://bugs.webkit.org/show_bug.cgi?id=88134
-
- Reviewed by Tony Chang.
-
- Change NRWT to spin up 2*min(child_processes, locked_shards)
- http servers by default so that we are less likely to get a
- bunch of http timeouts at the beginning of a test run.
-
- Note that I had to tweak executive_mock to support mocked stderr
- because the apache_http_server code reads stderr when starting a
- process to ensure it started okay.
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockProcess.__init__):
- * Scripts/webkitpy/common/system/outputcapture.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- (Manager.start_servers_with_lock):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.start_http_server):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort.start_http_server):
- (TestPort._path_to_apache):
- (TestPort):
- (TestPort._path_to_apache_config_file):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd.__init__):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py: Added
- (LayoutTestApacheHttpd.__init__):
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd.__init__):
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase.__init__):
-
-2012-06-20 Tom Zakrajsek <tomz@codeaurora.org>
-
- Unreviewed: Back out accidentally checked in debug print which broke a test
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.parse_output):
-
-2012-06-20 Tom Zakrajsek <tomz@codeaurora.org>
-
- Import themaninblue.com/experiment/AnimationBenchmark/ as performance tests
- https://bugs.webkit.org/show_bug.cgi?id=78789
-
- Reviewed by Ryosuke Niwa.
-
- Updated parser to include fps as a valid unit.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- (PerfTest.parse_output):
-
-2012-06-20 Balazs Ankes <bank@inf.u-szeged.hu>
-
- webkit-patch should add reviewer if "Reviewed by NOBODY ..." is missing
- https://bugs.webkit.org/show_bug.cgi?id=67935
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.set_reviewer):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_set_reviewer):
- (test_set_short_description_and_bug_url):
-
-2012-06-20 Simon Hausmann <simon.hausmann@nokia.com>
-
- Unreviewed trivial permissions fix.
-
- * qmake/mkspecs/features/features.prf: Don't mark this file as executable.
-
-2012-06-19 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][Regression] Build break after r120786
- https://bugs.webkit.org/show_bug.cgi?id=89549
-
- Unreviewed build fix for Efl port.
-
- * DumpRenderTree/efl/CMakeLists.txt: Added disassembler in includes.
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- NRWT spins up and down the WebSocket server when running a single HTTP test from the command line
- https://bugs.webkit.org/show_bug.cgi?id=64489
-
- Reviewed by Tony Chang.
-
- This change changes NRWT so that we don't start the websocket
- server if we aren't running websocket tests and don't start the
- HTTP server if we aren't running http tests.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._websocket_tests):
- (Manager.start_servers_with_lock):
- (Manager.stop_servers_with_lock):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_servers_started):
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: add a -p flag to pass through captured output to enable debugging
- https://bugs.webkit.org/show_bug.cgi?id=89158
-
- Reviewed by Eric Seidel.
-
- Normally when outputcapture runs it intercepts stdout/stderr,
- which makes running under the debugger difficult and mostly
- pointless (since you can't see any output). This change adds a
- flag to test-webkitpy (-p) that will cause outputcapture to pass
- through the output as well as capture it.
-
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.stream_wrapper):
- (OutputCapture._capture_output_with_name):
- * Scripts/webkitpy/common/system/outputcapture_unittest.py:
- (OutputCaptureTest.setUp):
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester._run_tests):
- (Tester._log_exception):
- (_CaptureAndPassThroughStream):
- (_CaptureAndPassThroughStream.__init__):
- (_CaptureAndPassThroughStream.write):
- (_CaptureAndPassThroughStream._message_is_from_pdb):
- (_CaptureAndPassThroughStream.flush):
- (_CaptureAndPassThroughStream.getvalue):
-
-2012-06-19 Adam Barth <abarth@webkit.org>
-
- garden-o-matic fails to rebaseline tests with MISSING results
- https://bugs.webkit.org/show_bug.cgi?id=89521
-
- Reviewed by Kenneth Russell.
-
- If the bots report "MISSING", we should try to find PNG and TXT results on the server.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
-
-2012-06-19 Adam Barth <abarth@webkit.org>
-
- svn.delete_list fails to delete empty parent directories
- https://bugs.webkit.org/show_bug.cgi?id=89520
-
- Reviewed by Dirk Pranke.
-
- These functions were calling scm.delete and scm.add, which already
- delete the parent directory. We'd get an exception when we tried to
- delete the parent directory again.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN._add_parent_directories):
- (SVN._delete_parent_directories):
-
-2012-06-19 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- webkitpy: Simplify fetch_bugs_matching_search()
- https://bugs.webkit.org/show_bug.cgi?id=89497
-
- Reviewed by Adam Barth.
-
- Removed parameter with default value. It's not being used
- and the handling of the parameter was wrong. Saves a check.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (BugzillaQueries.fetch_bugs_matching_search):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzillaQueries.fetch_bugs_matching_search):
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove unneeded imports in layout_tests/port/chromium.py
- https://bugs.webkit.org/show_bug.cgi?id=89522
-
- Reviewed by Eric Seidel.
-
- They were no longer being used. No tests necessary.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
-
-2012-06-19 Adam Barth <abarth@webkit.org>
-
- Missing results aren't shown in garden-o-matic
-
- Reviewed by Kenneth Russell.
-
- Previously we didn't know to look for text and image results when the
- bot told us that results were missing.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- Fix regression introduced in r120646 where the svn revision isn't saved in results.json
-
- Unreviewed, build fix.
-
- It turns out that we store the svn revision two different ways
- in the JSON, and I only caught one of them :(. This should fix
- the other.
-
- Also, this part of the code is poorly tested. I will investigate
- adding at least a basic test for this in a separate fix.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION (NRWT): Results for new non-text-only tests are always put in the most-specific platform directory
- https://bugs.webkit.org/show_bug.cgi?id=78127
-
- Reviewed by Ryosuke Niwa.
-
- Add the --add-platform-exceptions flag from ORWT, and ensure
- that --new-baseline is equivalent to --reset-results
- --add-platform-exceptions. Also fix the default logic for where to
- put PNGs and render tree dumps if --new-test-results is true:
- if --add-platform-exceptions is False, baselines should go in
- the least-specific platform directory (e.g., platform/mac)
- rather than the most-specific (platform/mac-snowleopard).
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner):
- (SingleTestRunner.run):
- (SingleTestRunner._run_rebaseline):
- (SingleTestRunner._add_missing_baselines):
- (SingleTestRunner._location_for_new_baseline):
- (SingleTestRunner._overwrite_baselines):
- (SingleTestRunner._save_baseline_data):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_path):
- (Port):
- (Port.baseline_platform_dir):
- (Port.baseline_version_dir):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RebaselineTest.assertBaselines):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- NRWT should not take memory used as disk cache into account when deciding how many processes to launch
- https://bugs.webkit.org/show_bug.cgi?id=81379
-
- Reviewed by Eric Seidel.
-
- The 'free memory' calculation we were running on the mac seemed
- to underestimate how many children we can run in parallel, and
- it was complex. This patch replaces that calculation with a
- simpler one that reserves 2GB for overhead and assumes 256MB per
- DRT/WTR, so if we had 4GB of RAM we can run up to 8 DRTs.
-
- Also, there was a bug where we were truncating the memory
- installed on the machine to 4GB by casting to an int instead of
- a long; this was probably the source of some of the earlier
- problems when using total memory.
-
- This patch also removes the no-longer-needed restrictions on the
- number of workers on beefy Lion boxes for both Apple Mac and Chromium
- Mac; we should now use all of the cores by default.
-
- The memory calculations have only been implemented on the mac;
- having the calculation in base.default_child_processes() was IMO
- misleading, and so this patch also moves the computation into
- the MacPort. I have not heard of the # of workers being an issue
- on any other ports, so this should be fine.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.total_bytes_memory):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (PlatformInfo.total_bytes_memory):
- (PlatformInfo.total_bytes_memory):
- (PlatformInfo._win_version_tuple_from_cmd):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py:
- (TestPlatformInfo.test_total_bytes_memory):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_default_child_processes):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_child_processes):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (TestMacPort.test_default_child_processes):
-
-2012-06-19 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests reports unexpected pass of pixel tests when pixel testing is disabled
- https://bugs.webkit.org/show_bug.cgi?id=85446
-
- Reviewed by Simon Fraser.
-
- Embed whether pixel testing was enabled into the results.json.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
-
-2012-06-19 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Modify HTTPS port to 8443 for performance tests
- https://bugs.webkit.org/show_bug.cgi?id=89442
-
- Reviewed by Ryosuke Niwa.
-
- We should be consistent with the default HTTPS port and with the changelog of r119188.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayServer.__init__):
-
-2012-06-19 Mike West <mkwst@chromium.org>
-
- Introduce ENABLE_CSP_NEXT configuration flag.
- https://bugs.webkit.org/show_bug.cgi?id=89300
-
- Reviewed by Adam Barth.
-
- The 1.0 draft of the Content Security Policy spec is just about to
- move to Last Call. We'll hide work on the upcoming 1.1 spec behind
- this ENABLE flag, disabled by default.
-
- Spec: https://dvcs.w3.org/hg/content-security-policy/raw-file/tip/csp-specification.dev.html
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-06-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController does not support setTextDirection
- https://bugs.webkit.org/show_bug.cgi?id=87481
-
- Reviewed by Hajime Morita.
-
- Implement setTextDirection in EFL's LayoutTestController and
- properly reset its value between test cases to avoid flakiness.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setTextDirection):
-
-2012-06-19 Kristóf Kosztyó <kkristof@inf.u-szeged.hu>
-
- [Qt] Temporarily disable xvfb driver in nrwt
- https://bugs.webkit.org/show_bug.cgi?id=88414
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._build_driver):
-
-2012-06-18 Joone Hur <joone.hur@intel.com>
-
- [EFL] Fontconfig can't be linked properly
- https://bugs.webkit.org/show_bug.cgi?id=89418
-
- Unreviewed build fix.
-
- Make Fontconfig be linked correctly.
-
- * MiniBrowser/efl/CMakeLists.txt: add FONTCONFIG_LIBRARIES to MiniBrowser_LIBRARIES.
-
-2012-06-18 Joone Hur <joone.hur@intel.com>
-
- Unreviewed. Updating email for committers.py script.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-18 Simon Fraser <simon.fraser@apple.com>
-
- Fix a typo that caused TestFailures to have a syntax error.
-
- Sadly TestFailures is broken for another reason now too:
- https://bugs.webkit.org/show_bug.cgi?id=89419
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js:
- (ViewController.prototype._domForBuildName):
-
-2012-06-18 Simon Fraser <simon.fraser@apple.com>
-
- Provide bug links for suspicious commits
- https://bugs.webkit.org/show_bug.cgi?id=89408
-
- Reviewed by Adam Barth.
-
- Add links to bugs for the suspicious commits if we have bug data.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Bugzilla.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
- (ol.notifications>li ul.causes>li>div.description>span>span.bugID::before):
- (ol.notifications>li ul.causes>li>div.description>span>span.bugID>a):
-
-2012-06-18 Amy Ousterhout <aousterh@chromium.org>
-
- [Chromium] DeviceOrientation Cleanup
- https://bugs.webkit.org/show_bug.cgi?id=89354
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/WebViewHost.h: added OVERRIDE specifier for virtual function
- (WebViewHost):
-
-2012-06-18 James Robinson <jamesr@chromium.org>
-
- [chromium] Stop passing deprecated 'direct' parameter to webkit_support::CreateGraphicsContext3D
- https://bugs.webkit.org/show_bug.cgi?id=89254
-
- Reviewed by Adrienne Walker.
-
- This parameter doesn't mean anything since this codepath is only used for onscreen contexts and is deprecated
- upstream.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createGraphicsContext3D):
-
-2012-06-18 Simon Fraser <simon.fraser@apple.com>
-
- Minor fix suggested by Adam Barth.
-
- Use $(this._what).empty(); rather than removing children one at a time.
- For some reason removeAllChildren() is undefined on this node.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
-
-2012-06-18 Simon Fraser <simon.fraser@apple.com>
-
- Show TOT revision in garden-o-matic, and make the revisions into links
- https://bugs.webkit.org/show_bug.cgi?id=89396
-
- Reviewed by Adam Barth.
-
- The "latest revision" notification now reads "Latest revision processed by every bot: NN (trunk is at NN)"
- where the revisions are links to trac.
-
- To avoid setting innerHTML, I made base.createLinkNode() and used it in a bunch of places, which had
- the knock-on effect of flipping the target and href attributes for anchors in some test output.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js:
- (ViewController.prototype._displayTesters.updateList.list):
- (ViewController.prototype._displayTesters.updateList):
- (ViewController.prototype._domForRegressionRange.trac.commitDataForRevisionRange):
- (ViewController.prototype._domForRegressionRange):
- (ViewController.prototype._domForAuxiliaryUIElements):
- (ViewController.prototype._domForBuildName):
- (ViewController.prototype):
- (ViewController.prototype.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
-
-2012-06-18 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r100558): NRWT should work without SVN or GIT
- https://bugs.webkit.org/show_bug.cgi?id=76630
-
- Reviewed by Dirk Pranke.
-
- NRWT is not supposed to have a requirement that we have an
- actual SVN or Git checkout, and we were unnecessarily
- initializing the checkout. This patch removes that line :).
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
-
-2012-06-18 Zan Dobersek <zandobersek@gmail.com>
-
- [garden-o-matic] Add support for the GTK builders
- https://bugs.webkit.org/show_bug.cgi?id=89360
-
- Reviewed by Adam Barth.
-
- Add the 'gtk' platform, essentially a copy of the 'apple' platform since
- both get their data from build.webkit.org.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-06-18 Nico Weber <thakis@chromium.org>
-
- [chromium/mac] Unbreak smooth scrolling.
- https://bugs.webkit.org/show_bug.cgi?id=89327
-
- Reviewed by Dimitri Glazkov.
-
- Broken by Sam in r115589 / r115591.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-06-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120541, r120547, and r120548.
- http://trac.webkit.org/changeset/120541
- http://trac.webkit.org/changeset/120547
- http://trac.webkit.org/changeset/120548
- https://bugs.webkit.org/show_bug.cgi?id=89383
-
- This approach doesn't work for WebKit2 (Requested by abarth on
- #webkit).
-
- * DumpRenderTree/LayoutTestController.cpp:
- (setBackingScaleFactorCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::setBackingScaleFactor):
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::postSetBackingScaleFactor):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setBackingScaleFactor):
- (WTR):
- (WTR::LayoutTestController::callSetBackingScaleFactorCallback):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-06-18 Zan Dobersek <zandobersek@gmail.com>
-
- REGRESSION(r120546): It made 3 webkitpy tests fail
- https://bugs.webkit.org/show_bug.cgi?id=89332
-
- Reviewed by Adam Barth.
-
- Update the BaselineOptimizer unittest after r120546.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_no_add_mac_future):
- (BaselineOptimizerTest.test_mac_future):
- (BaselineOptimizerTest.test_complex_shadowing):
-
-2012-06-18 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests output gets confused when logging
- https://bugs.webkit.org/show_bug.cgi?id=63793
-
- Reviewed by Adam Barth.
-
- Ship all of the log messages generated in the worker back
- to the manager; this allows the messages to be properly
- serialized to stderr and for the meter to flush its output correctly.
-
- Note however that this will likely result in messages to be
- logged out of order between workers; I'm not sure that there's
- an easy way to fix this short of buffering a potentially
- unbounded amount of data. It might be better to just log through
- stderr unless we're in 'metering' mode, but it's also worth
- noting that we already get messages out of order through stderr
- on Windows.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.handle_done):
- (Manager.handle_finished_test):
- (Manager._log_messages):
- * Scripts/webkitpy/layout_tests/controllers/worker.py:
- (Worker.__init__):
- (Worker._set_up_logging):
- (Worker.run):
- (Worker._run_test):
- (Worker.cleanup):
- (Worker.run_single_test):
- (_WorkerLogHandler):
- (_WorkerLogHandler.__init__):
- (_WorkerLogHandler.emit):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream.write):
- (MeteredStream.writeln):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.writeln):
-
-2012-06-18 Zan Dobersek <zandobersek@gmail.com>
-
- [garden-o-matic] Builder names without underscores cause incorrect BuildSelector behavior
- https://bugs.webkit.org/show_bug.cgi?id=89362
-
- Reviewed by Simon Fraser.
-
- Replace white spaces, braces and dots in the builder name with underscores. This
- way the JQuery tabs will be properly matched with the according container.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
-
-2012-06-18 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: metered output doesn't handle ^C cleanly
- https://bugs.webkit.org/show_bug.cgi?id=89249
-
- Reviewed by Tony Chang.
-
- If you ctrl-c a running nrwt (w/o --verbose), then all but
- two characters of the last update are erased, and then we print
- "interrupted, exiting" as an update, which itself then gets
- erased. Fix this so that we flush the meter (making the last
- update persistent, so that we print the ^C for a visual clue),
- print the interrupt message, and move on ...
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream.flush):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._write):
- (Printer):
- (Printer.flush):
-
-2012-06-18 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Change back "linuxish" to "linux" and include WebFontRendering.cpp on Android
- https://bugs.webkit.org/show_bug.cgi?id=89228
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
-
-2012-06-18 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] Get rid of DumpRenderTreeSupportGtk::{in|de}crementAccessibilityValue
- https://bugs.webkit.org/show_bug.cgi?id=89226
-
- Reviewed by Martin Robinson.
-
- Implement increment() and decrement() functions in term of the AtkValue interface,
- instead of using DumpRenderTreeSupportGtk helper class.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (alterCurrentValue):
- (AccessibilityUIElement::increment):
- (AccessibilityUIElement::decrement):
-
-2012-06-17 Simon Fraser <simon.fraser@apple.com>
-
- garden-o-matic 'Results' panel is broken for the Apple platform
- https://bugs.webkit.org/show_bug.cgi?id=89310
-
- Reviewed by Adam Barth.
-
- For platforms that don't use accumulated build directories on the server,
- carry along buildLocation data with buildInfo, so that we know where to
- look for the test results files for a given test.
-
- Renamed historicalResultsSummaryURLs to historicalResultsLocations because
- it now returns an array of objects with buildNumber, revision and url info.
-
- Fixed results.fetchResultsURLs() to use this data to find results.
-
- Fixed the results display to not scroll when you click on a test to see the results.
- Made the h3s look less ugly
-
- Don't try to show the flakiness dashboard for the Apple platform.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/results.css:
- (.results-view .top-panel):
- (.results-view h3):
-
-2012-06-16 Simon Fraser <simon.fraser@apple.com>
-
- Make garden-o-matic work for the Apple Mac port
- https://bugs.webkit.org/show_bug.cgi?id=84642
-
- Reviewed by Adam Barth.
-
- Make garden-o-matic work for the Apple, webkit.org-hosted builders and testers. This involved
- educating the scripts in various ways:
- * Wrap up platform-related differences in config.kPlatforms[]
- * Add a <select> to switch between platforms, and support a url parameter, ?platform=chromium/apple
- * The webkit.org bots don't accumulate test results into a single directory like the chromium.org ones do,
- so add config.haveBuilderAccumulatedResults and logic in fetchResultsByBuilder() to find the most
- recent build with valid results.
- * The webkit.org bots often generate results directories with no layout test data (e.g. when testers
- try to test a build that has already been deleted). Make walkHistory() more robust here.
- * webkit.org uses differently named test result directories, that include the SVN revision as
- well as the build number. That forces us to fetch more build info before we can get the
- result directory URL.
- * chromium.org serves raw directory listings for a builder's results directories. webkit.org serves
- those with Twisted, so rather than scrape directory listings, we use buildbot JSON to find results
- dirs.
- * Various URLs differ between webkit.org and chromium.org
- * Better UI for the failures info, so that some info is visible even when not hovered.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/LayoutTestResultsLoader.js:
- (LayoutTestResultsLoader.prototype.set _fetchAndParseNRWTResults):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/model.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/net.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/summary-mock.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/failures.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/perf.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/notifications.css:
- (ol.notifications>li table.failures):
- (ol.notifications>li:hover table.failures):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/onebar.css:
- (#onebar #platform-picker):
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-06-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120536.
- http://trac.webkit.org/changeset/120536
- https://bugs.webkit.org/show_bug.cgi?id=89296
-
- Does not compile on chromium-linux (Requested by abarth on
- #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
-
-2012-06-16 Adam Barth <abarth@webkit.org>
-
- layoutTestController.setBackingScaleFactor is redundant with (and less awesome than) internals.settings.setDeviceScaleFactor
- https://bugs.webkit.org/show_bug.cgi?id=89274
-
- Reviewed by Levi Weintraub.
-
- Delete (mostly stub) implementations of layoutTestController.setBackingScaleFactor.
- Note: The WebKit2 API that setBackingScaleFactor exercises is still
- tested by API-level tests.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-06-16 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Move chromium/public/linuxish/WebFontRendering.h out of linuxish directory
- https://bugs.webkit.org/show_bug.cgi?id=89228
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
-
-2012-06-15 Adam Barth <abarth@webkit.org>
-
- garden-o-matic's results.js should use RequestTracker
- https://bugs.webkit.org/show_bug.cgi?id=89257
-
- Reviewed by Dimitri Glazkov.
-
- We wrote results.js before we recognized the RequestTracker pattern.
- This patch replaces the manual implementations of RequestTracker with
- the real deal.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
-
-2012-06-15 Darin Adler <darin@apple.com>
-
- * Scripts/webkitpy/bindings: Added property svn:ignore.
-
-2012-06-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120511.
- http://trac.webkit.org/changeset/120511
- https://bugs.webkit.org/show_bug.cgi?id=89255
-
- Breaks at least Android builder (Requested by wangxianzhu on
- #webkit).
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
-
-2012-06-15 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Move chromium/public/linuxish/WebFontRendering.h out of linuxish directory
- https://bugs.webkit.org/show_bug.cgi?id=89228
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
-
-2012-06-15 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove DummyOptions and clean up the code in Port.get_option() and Port.set_option_default()
- https://bugs.webkit.org/show_bug.cgi?id=89135
-
- Re-land change in r120370 with fix in
- PortFactory.get_from_builder_name() that changes BuilderOptions
- to an actual optparse.Values object.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.get_option):
- (Port.set_option_default):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_setup_environ_for_server_register_cygwin):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (_builder_options):
- (PortFactory.get_from_builder_name):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_get_from_builder_name):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_expectations_path):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockOptions.ensure_value):
-
-2012-06-15 Bill Budge <bbudge@chromium.org>
-
- Add bbudge@chromium.org to committers.py
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-15 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed style fix after r120351.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/default.css:
- (body.interface):
-
-2012-06-15 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup, remove unnecessary workaround
- https://bugs.webkit.org/show_bug.cgi?id=88994
-
- Reviewed by Lucas Forschler.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-06-15 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations should only rebaseline the appropriate suffixes for the failure in question
- https://bugs.webkit.org/show_bug.cgi?id=88581
-
- Reviewed by Adam Barth.
-
- Make sure we only optimize the suffixes we rebaselined during
- rebaseline-expectations, and not all suffixes for a test.
- While optimizing is somewhere between harmless and good, it's also confusing :)
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations._rebaseline_port):
- (RebaselineExpectations.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
-
-2012-06-15 Csaba Osztrogonác <ossy@webkit.org>
-
- Update builder.html template for newer buildmaster
- https://bugs.webkit.org/show_bug.cgi?id=89207
-
- Rebasing builder.html template from v0.8.3 to v0.8.6p1.
-
- Reviewed by Zoltan Herczeg.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/builder.html:
-
-2012-06-15 Csaba Osztrogonác <ossy@webkit.org>
-
- Add ForceScheduler to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=88982
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add title support to Ewk_View
- https://bugs.webkit.org/show_bug.cgi?id=89095
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update the MiniBrowser so it listens for the "title,change"
- signal on the view and keeps the browser window title
- up-to-date.
-
- * MiniBrowser/efl/main.c:
- (on_title_changed):
- (browserCreate):
-
-2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][EFL] Implement navigation back/forward in Ewk_View
- https://bugs.webkit.org/show_bug.cgi?id=89173
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement navigation back / forward in MiniBrowser. Use
- 'F1' to navigate back and 'F2' to navigate forward.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController does not support titleTextDirection
- https://bugs.webkit.org/show_bug.cgi?id=86475
-
- Reviewed by Hajime Morita.
-
- Add titleTextDirection getter and setter to LayoutTestController and
- expose its value to JavaScript.
- Update the titleTextDirection value from EFL's "title,changed"
- callback in DumpRenderTree.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (getTitleTextDirectionCallback):
- (LayoutTestController::staticValues):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::titleTextDirection):
- (LayoutTestController::setTitleTextDirection):
- (LayoutTestController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameTitleChanged):
-
-2012-06-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Implement reload / stop in Ewk_View
- https://bugs.webkit.org/show_bug.cgi?id=89168
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement view reload / stop loading in MiniBrowser.
- Use 'F5' for reload and 'F6' for stopping the load.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (browserCreate):
-
-2012-06-15 Hironori Bono <hbono@chromium.org>
-
- Allow platforms to choose whether to remove markers on editing
- https://bugs.webkit.org/show_bug.cgi?id=88838
-
- Reviewed by Hajime Morita.
-
- This change implements WebViewHost::checkTextOfParagraph so DumpRenderTree can
- run grammar tests.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::checkTextOfParagraph): Implement this function with our mock spell checker and grammar checker.
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost): Override WebSpellCheckClient::checkTextOfParagraph.
-
-2012-06-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120370.
- http://trac.webkit.org/changeset/120370
- https://bugs.webkit.org/show_bug.cgi?id=89183
-
- Broke webkit-patch rebaseline (Requested by zdobersek on
- #webkit).
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (DummyOptions):
- (DummyOptions.__init__):
- (DummyOptions.__init__.this):
- (Port.__init__):
- (Port.get_option):
- (Port.set_option_default):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.RegisterCygwinOption):
- (ChromiumWinTest.RegisterCygwinOption.__init__):
- (ChromiumWinTest.test_setup_environ_for_server_register_cygwin):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_expectations_path):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockOptions.update):
-
-2012-06-14 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Initialize font rendering in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=89133
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
- * DumpRenderTree/chromium/TestShellAndroid.cpp:
- (platformInit):
-
-2012-06-14 Dongwoo Im <dw.im@samsung.com>
-
- [EFL] [DRT] Reset the WebAudio setting on DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=88622
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp: Reset the setting of the Web Audio feature as default.
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-06-14 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Should retry a few times when failed to start DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=89124
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver._start_once):
-
-2012-06-14 Tony Gentilcore <tonyg@chromium.org>
-
- Update webpagereplay to 1.1.2
- https://bugs.webkit.org/show_bug.cgi?id=89118
-
- This includes the following patch which avoids pkg_resources import errors:
- http://code.google.com/p/web-page-replay/source/detail?r=476
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_webpagereplay):
-
-2012-06-14 Ryosuke Niwa <rniwa@webkit.org>
-
- Get rid of FAIL test expectation
- https://bugs.webkit.org/show_bug.cgi?id=89137
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_summarized_results_wontfix):
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (result_was_expected):
- (suffixes_for_expectations):
- (TestExpectationsModel._add_test):
- (TestExpectations):
- (TestExpectations.get_rebaselining_failures):
- (TestExpectations.remove_configuration_from_test):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (FunctionsTest.test_result_was_expected):
- (FunctionsTest.test_suffixes_for_expectations):
- (TestExpectationSerializerTests.test_parsed_expectations_string):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_test_expectations):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_valid_expectations):
-
-2012-06-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove DummyOptions and clean up the code in Port.get_option() and Port.set_option_default()
- https://bugs.webkit.org/show_bug.cgi?id=89135
-
- Reviewed by Ryosuke Niwa.
-
- This patch is just some minor cleanup and simplification. There
- should be no functional changes here.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port.get_option):
- (Port.set_option_default):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_setup_environ_for_server_register_cygwin):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker._determine_port_from_expectations_path):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockOptions.ensure_value):
-
-2012-06-14 Ian Vollick <vollick@chromium.org>
-
- [chromium] Certain settings in CCSettings could be global
- https://bugs.webkit.org/show_bug.cgi?id=88384
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- (TestShell::setPerTilePaintingEnabled):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-06-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120352.
- http://trac.webkit.org/changeset/120352
- https://bugs.webkit.org/show_bug.cgi?id=89120
-
- It seems something is still wrong with it :/ (Requested by
- Ossy on #webkit).
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (Factory.__init__):
- (BuildFactory.__init__):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- (BuildAndPerfTestFactory.__init__):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestFactory.__init__):
- (DownloadAndPerfTestWebKit2Factory.__init__):
-
-2012-06-14 Jia Pu <jpu@apple.com>
-
- Mark text with text alternative with blue underline.
- https://bugs.webkit.org/show_bug.cgi?id=83047
-
- Reviewed by NOBODY Enrica Casucci.
-
- * DumpRenderTree/mac/TextInputController.m:
- (+[TextInputController isSelectorExcludedFromWebScript:]):
- (+[TextInputController webScriptNameForSelector:]):
- (-[TextInputController dictatedStringWithPrimaryString:alternative:alternativeOffset:alternativeLength:]):
-
-2012-06-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120353.
- http://trac.webkit.org/changeset/120353
- https://bugs.webkit.org/show_bug.cgi?id=89119
-
- It seems we still need this workaround (Requested by Ossy on
- #webkit).
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-06-14 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup, remove unnecessary workaround
- https://bugs.webkit.org/show_bug.cgi?id=88994
-
- Reviewed by Lucas Forschler.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-06-14 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup, pass BuildStep instances instead of BuildStep subclasses
- https://bugs.webkit.org/show_bug.cgi?id=89001
-
- Reviewed by Lucas Forschler.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (Factory.__init__):
- (BuildFactory.__init__):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- (BuildAndPerfTestFactory.__init__):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestFactory.__init__):
- (DownloadAndPerfTestWebKit2Factory.__init__):
-
-2012-06-14 Csaba Osztrogonác <ossy@webkit.org>
-
- Unhide login form on the build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=88981
-
- Reviewed by Lucas Forschler.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/default.css:
-
-2012-06-14 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Add support in DumpRenderTree for tracking repaints
- https://bugs.webkit.org/show_bug.cgi?id=87658
-
- Reviewed by Martin Robinson.
-
- Reimplement the displayWebView method in DumpRenderTree - force a
- repaint before starting tracking repaints and resetting them.
-
- When gathering pixel output from a web view, if tracking repaints,
- paint an overlay over the output with the overlay being clear in the
- areas where the repaints occurred.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (displayWebView):
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (paintOverlay):
- (fillRepaintOverlayIntoContext):
- (createBitmapContextFromWebView):
-
-2012-06-14 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests doesn't find similar platform tests for a keyword
- https://bugs.webkit.org/show_bug.cgi?id=37956
-
- Reviewed by Ryosuke Niwa.
-
- This patches adds support for NRWT so that if you type
- "new-run-webkit-tests foo" it will run all the tests in foo as
- well as platform/foo for all of the platforms that are normally
- searched (this only applies to directories, not to individual tests).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.collect_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.tests):
- (Port):
- (Port._expanded_paths):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_no_http_tests):
- (MainTest):
- (MainTest.test_platform_tests_are_found):
-
-2012-06-14 Dirk Pranke <dpranke@chromium.org>
-
- NRWT should honor --skipped=[default|ignore|only], like ORWT does
- https://bugs.webkit.org/show_bug.cgi?id=66308
-
- Reviewed by Ryosuke Niwa.
-
- This patch adds support for ORWT's --skipped=(default|ignore|only)
- flag and cleans up the interaction between that and --ignore.
-
- Individual tests (but not directories) explicitly listed on the
- command line will always be run regardless of what is passed
- for --skipped and --ignore.
-
- This patch also changes the "found" and "running" log messages
- since it wasn't clear how the skipped tests were included in those numbers.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.collect_tests):
- (Manager.prepare_lists_and_print_output):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_ignore_flag):
- (MainTest):
- (MainTest.test_skipped_flag):
-
-2012-06-14 Takashi Toyoshima <toyoshim@chromium.org>
-
- new-run-webkit-websocketserver must handle TLS related arguments
- https://bugs.webkit.org/show_bug.cgi?id=89079
-
- Reviewed by Dirk Pranke.
-
- PyWebSocket class must accept private_key, certificate, and
- ca_certificate arguments and pass them to launching pywebsocket.
- Also add ca_certificate handling to new-run-webkit-websocketserver.
-
- * Scripts/new-run-webkit-websocketserver:
- (main):
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- (PyWebSocket.__init__):
- (PyWebSocket._prepare_config):
-
-2012-06-14 Qi Zhang <qi.2.zhang@nokia.com>
-
- Unreviewed. Update my email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-14 Takashi Toyoshima <toyoshim@chromium.org>
-
- Update pywebsocket to 0.7.6 from 0.7.4
- https://bugs.webkit.org/show_bug.cgi?id=88975
-
- Reviewed by Kent Tamura.
-
- This new version of pywebsocket introduce following features.
- - Allow handlers to send a close frame with empty body in response of
- a client initiated closing handshake
- - Implement perframe compression extension
- - Support client certificate authentication
-
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py:
- (_create_control_frame):
- (Stream._receive_frame):
- (Stream.send_message):
- (Stream.receive_message):
- (Stream._send_closing_handshake):
- (Stream.close_connection):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py:
- (ExtensionParsingException):
- (ExtensionParsingException.__init__):
- (_parse_extension_param):
- (_parse_extension):
- (parse_extensions):
- (format_extension):
- (format_extensions):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py:
- (_parse_compression_method):
- (_create_accepted_method_desc):
- (PerFrameCompressionExtensionProcessor):
- (PerFrameCompressionExtensionProcessor.__init__):
- (PerFrameCompressionExtensionProcessor._lookup_compression_processor):
- (PerFrameCompressionExtensionProcessor._get_compression_processor_response):
- (PerFrameCompressionExtensionProcessor.get_extension_response):
- (PerFrameCompressionExtensionProcessor.setup_stream_options):
- (PerFrameCompressionExtensionProcessor.get_compression_processor):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py:
- (parse_token_list):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py:
- (Handshaker._parse_extensions):
- (Handshaker._send_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py:
- (WebSocketServer._create_sockets):
- (_get_logger_from_class):
- (_configure_logging):
- (_build_option_parser):
- (_main.if):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py:
- (RepeatedXorMasker.mask):
-
-2012-06-14 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Remove USE(QT_IMAGE_DECODER) macro, since we don't use it anymore
-
- Reviewed by Noam Rosenthal.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-06-14 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] Add implementation for registerIntentService in WebFrameLoaderClient
- https://bugs.webkit.org/show_bug.cgi?id=88399
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update initialization of WKPageLoaderClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-06-14 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Implement setDomainRelaxationForbiddenForURLScheme in EFL DRT
- https://bugs.webkit.org/show_bug.cgi?id=84577
-
- Reviewed by Ryosuke Niwa.
-
- Add missing implementation setDomainRelaxationForbiddenForURLScheme to EFL's
- LayoutTestController.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setDomainRelaxationForbiddenForURLScheme):
-
-2012-06-13 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient
- https://bugs.webkit.org/show_bug.cgi?id=88340
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update initialization of WKPageLoaderClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-06-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120268.
- http://trac.webkit.org/changeset/120268
- https://bugs.webkit.org/show_bug.cgi?id=89060
-
- WebCompositor::setPerTilePaintingEnabled hits an assertion in
- DEBUG (Requested by dominicc|work on #webkit).
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-06-13 Tim Horton <timothy_horton@apple.com>
-
- REGRESSION (r120252): run-webkit-tests on Mac fails
- https://bugs.webkit.org/show_bug.cgi?id=89057
-
- Reviewed by Dan Bernstein.
-
- get_option will happily return None (the default only kicks in if
- the option is actually *not set*). We should instead check get_option's
- return value and default to "x86_64" architecture ourselves.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.__init__):
-
-2012-06-13 Ian Vollick <vollick@chromium.org>
-
- [chromium] Certain settings in CCSettings could be global
- https://bugs.webkit.org/show_bug.cgi?id=88384
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests does not support --32-bit like ORWT did
- https://bugs.webkit.org/show_bug.cgi?id=71634
-
- Reviewed by Ojan Vafai.
-
- This patch adds support for 32-bit apple mac builds, adding the
- --32-bit flag for compatibility with ORWT and fixing the port
- architecture() definition to actually return the correct values.
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (port_options):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort):
- (MacPort.__init__):
- (MacPort._build_driver_flags):
- (MacPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_sample_process_throws_exception):
- (test_32bit):
- (test_32bit.run_script):
- (test_64bit):
- (test_64bit.run_script):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._build_driver):
- (WebKitPort._build_driver_flags):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort):
-
-2012-06-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove webkitpy code to support legacy test_expectations.txt files
- https://bugs.webkit.org/show_bug.cgi?id=89038
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_test_expectations_file):
- (Port.expectations_dict):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_uses_test_expectations_file):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitPortTest.test_path_to_test_expectations_file):
- (test_test_expectations):
- * Scripts/webkitpy/style/checker.py:
- (CheckerDispatcher.should_skip_without_warning):
- (CheckerDispatcher._create_checker):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase._expect_port_for_expectations_path):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._check_test_expectations):
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- (CommitTest.test_check_test_expectations):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove port.test_expectations() and port.test_expectations_overrides()
- https://bugs.webkit.org/show_bug.cgi?id=88948
-
- Reviewed by Ojan Vafai.
-
- In the final patch of this run, we remove the
- test_expectations() and test_expectation_overrides() methods
- from the Port class - callers must now use just
- expectations_dict().
-
- Note that support for the cascade in new-run-webkit-tests is
- complete but only Chromium uses it; webkit-patch
- rebaseline-expectations still does not support updating entries
- in any file other than the first expectations file, however.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_test_expectations_file):
- (Port.uses_test_expectations_file):
- (Port.expectations_files):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_additional_expectations):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (TestGoogleChromePort.test_get_google_chrome_port):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (test_test_expectations):
- (test_legacy_test_expectations):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: implement the actual cascade of TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=88947
-
- Reviewed by Ojan Vafai.
-
- This change implements the actual cascade by removing the
- concept of 'overrides' from the TestExpectations object and
- parsing each file separately.
-
- There is an actual semantic change in this patch, in that
- setting an expectation on a directory in one file will override
- the expectations on any individual tests set in prior files. The
- test_overrides__directory() unit test verifies this.
-
- Otherwise, this patch mostly consists of deleting code :).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationsModel.__init__):
- (TestExpectationsModel.add_expectation_line):
- (TestExpectationsModel._add_test):
- (TestExpectationsModel._already_seen_better_match):
- (TestExpectations.__init__):
- (TestExpectations._add_expectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (test_overrides__directory):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: update callers to use port.expectation_dict() instead of test_expectations() and test_expectations_overrides()
- https://bugs.webkit.org/show_bug.cgi?id=88946
-
- Reviewed by Ojan Vafai.
-
- In preparation for fully supporting cascading expectations files
- and removing the 'overrides' concept.
-
- There should be no functional changes in this patch.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_update_summary_with_result):
- (ResultSummaryTest.get_result_summary):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (parse_exp):
- (SkippedTests.check):
- (RemoveConfigurationsTest.test_remove):
- (test_remove_line):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations.FakePort.__init__):
- (LintTest.test_all_configurations.FakePort.expectations_dict):
- (LintTest.test_lint_test_files__errors):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_overrides_are_included_correctly):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: rework the TestExpectations style checker in preparation for the cascade
- https://bugs.webkit.org/show_bug.cgi?id=88945
-
- Reviewed by Ojan Vafai.
-
- This patch changes the style checker to call the
- TestExpectations parser directly and be oblivious as to what the
- port's actual expectations are.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.__init__):
- (TestExpectationsChecker.check_test_expectations):
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: restructure the port classes to handle multiple expectations files
- https://bugs.webkit.org/show_bug.cgi?id=88944
-
- Reviewed by Ojan Vafai.
-
- This patch restructures the Port classes so that each port
- returns a list of TestExpectations files to be used (in a new, public,
- expectations_files() method), and the base implementation rolls them
- up into the ordered expectations_dict(), which becomes a public
- method.
-
- port.path_to_test_expectations_file(), port.test_expectations(),
- and port.test_expectations_overrides() are then reimplemented as
- wrappers around port.expectations_dict().
- port.test_expectations() and port.test_expectations_overrides()
- will eventually be removed when the cascade is fully completed,
- and port.path_to_test_expectations_file() will be removed when
- the rebaselining tool supports the cascade
- (expectations_files() may also become private at that point).
-
- There should be no functional changes in this patch, but a bunch
- of custom logic gets deleted!
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.expectations_dict):
- (Port):
- (Port.expectations_files):
- (Port.test_expectations):
- (Port.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_additional_expectations):
- (PortTest.test_uses_test_expectations_file):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.all_baseline_variants):
- (ChromiumPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_overrides_and_builder_names):
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (_expectations_files):
- (GoogleChromeLinux32Port.expectations_files):
- (GoogleChromeLinux64Port.expectations_files):
- (GoogleChromeMacPort.expectations_files):
- (GoogleChromeWinPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (TestGoogleChromePort._verify_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_expectations_ordering):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort._skipped_file_search_paths):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_expectations):
- (test_overrides_are_included_correctly):
-
-2012-06-13 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Update URL of WinCairoRequirements.zip download.
- https://bugs.webkit.org/show_bug.cgi?id=89009
-
- Reviewed by Martin Robinson.
-
- * Tools/Scripts/update-webkit-dependency: Put fallback code
- to download a "last update" time from servers that don't properly
- report Last-Modified in their HTTP header.
- * Tools/Scripts/update-webkit-wincairo-libs: Change download link
- for the WinCairo build requirements bundle.
-
-2012-06-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: preliminary cleanup before supporting cascading expectations files
- https://bugs.webkit.org/show_bug.cgi?id=88942
-
- Reviewed by Ojan Vafai.
-
- This change just prepares the TestExpectations parser to get filenames
- along with the expectations, and improves the warning messages so that
- they contain the filenames along with the line numbers.
-
- There should be no functional changes in this patch.
-
- * Scripts/webkitpy/layout_tests/controllers/test_expectations_editor_unittest.py:
- (TestExpectationEditorTests.make_parsed_expectation_lines):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser.parse):
- (TestExpectationParser.expectation_for_skipped_test):
- (TestExpectationParser._tokenize):
- (TestExpectationParser._tokenize_list):
- (TestExpectationLine):
- (TestExpectationsModel.__init__):
- (TestExpectationsModel._already_seen_better_match):
- (TestExpectations.__init__):
- (TestExpectations._shorten_filename):
- (TestExpectations._report_warnings):
- (TestExpectations._add_skipped_tests):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (TestExpectationParserTests._tokenize):
- (TestExpectationParserTests.test_tokenize_blank):
- (TestExpectationParserTests.test_tokenize_missing_colon):
- (TestExpectationParserTests.test_tokenize_extra_colon):
- (TestExpectationParserTests.test_tokenize_empty_comment):
- (TestExpectationParserTests.test_tokenize_comment):
- (TestExpectationParserTests.test_tokenize_missing_equal):
- (TestExpectationParserTests.test_tokenize_extra_equal):
- (TestExpectationParserTests.test_tokenize_valid):
- (TestExpectationParserTests.test_tokenize_valid_with_comment):
- (TestExpectationParserTests.test_tokenize_valid_with_multiple_modifiers):
- (TestExpectationParserTests.test_parse_empty_string):
- (TestExpectationSerializerTests._tokenize):
- (TestExpectationSerializerTests.assert_round_trip):
- (TestExpectationSerializerTests.assert_list_round_trip):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningExpectationsUpdater.update_expectations):
-
-2012-06-13 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Enable link prefetch support in the developer builds
- https://bugs.webkit.org/show_bug.cgi?id=89011
-
- Reviewed by Martin Robinson.
-
- Enable the link prefetch support for Gtk by default in developer
- builds.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-13 Csaba Osztrogonác <ossy@webkit.org>
-
- Update buildbot master in autoinstaller to match build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=88992
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_buildbot):
-
-2012-06-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r120209.
- http://trac.webkit.org/changeset/120209
- https://bugs.webkit.org/show_bug.cgi?id=89007
-
- Broke the WebKit2 mac build. (Requested by andersca on
- #webkit).
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-06-13 Zoltan Horvath <zoltan@webkit.org>
-
- check-webkit-style needs to respect Qt API coding style
- https://bugs.webkit.org/show_bug.cgi?id=88995
-
- Reviewed by Csaba Osztrogonác.
-
- Add -whitespace/declaration exception to Qt API files.
-
- * Scripts/webkitpy/style/checker.py:
-
-2012-06-13 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] Add implementation for dispatchIntent in WebFrameLoaderClient
- https://bugs.webkit.org/show_bug.cgi?id=88340
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update initialization of WKPageLoaderClient.
-
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-06-13 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Handle multiple held buttons in touch mocking.
- https://bugs.webkit.org/show_bug.cgi?id=88865
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add handling for multiple held mouse-buttons in the appropiate places.
- To do this last-pos and start-pos are now also read from the last recorded
- touch-point instead from object-global variables.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- (MiniBrowserApplication::updateTouchPoint):
- * MiniBrowser/qt/MiniBrowserApplication.h:
- (MiniBrowserApplication):
-
-2012-06-13 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Make it possible to disable -Werror in production builds
-
- Reviewed by Tor Arne Vestbø.
-
- Don't do -Werror if build-webkit is called with --qmakearg=CONFIG+=production_build,
- something qt5.git's qtwebkit.pri will soon do.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-06-13 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] Store and compare md5sum of jhbuild files to trigger cleaning Dependencies
- https://bugs.webkit.org/show_bug.cgi?id=85790
-
- Reviewed by Gustavo Noronha Silva.
-
- Add md5 checks for jhbuild configuration for EFL, reusing the gtk jhbuild related
- code in webkitdirs.pm.
-
- * Scripts/webkitdirs.pm:
- (jhbuildConfigurationChanged):
- (saveJhbuildMd5):
- (cleanJhbuild):
- (buildAutotoolsProject):
- (generateBuildSystemFromCMakeProject):
-
-2012-06-13 Qi Zhang <qi.2.zhang@nokia.com>
-
- [Qt] Add configure test for zlib and set WTF_USE_ZLIB if found
- https://bugs.webkit.org/show_bug.cgi?id=88763
-
- Add configure test for zlib and set WTF_USE_ZLIB if found to enable websocket
- extension.
-
- Reviewed by Simon Hausmann.
-
- * qmake/config.tests/libzlib: Added.
- * qmake/config.tests/libzlib/libzlib.cpp: Added.
- (main):
- * qmake/config.tests/libzlib/libzlib.pro: Added.
- * qmake/mkspecs/features/features.prf:
- * qmake/sync.profile:
-
-2012-06-13 Robin Cao <robin.cao@torchmobile.com.cn>
-
- [BlackBerry] Enable MEDIA_STREAM by default
- https://bugs.webkit.org/show_bug.cgi?id=88849
-
- Reviewed by Antonio Gomes.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-13 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- Prevent stderr output from messing up detection of build path
-
- https://bugs.webkit.org/show_bug.cgi?id=88075
-
- Warnings such as 'perl: warning: Setting locale failed' will otherwise
- end up as the build path when calling out to webkit-build-directory.
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.build_directory):
-
-2012-06-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Update the builder name for Apple Lion builders.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-06-13 Joel Dillon <joel.dillon@codethink.co.uk>
-
- [Qt][Win]QtTestBrowser somehow picks up DumpRenderTree's main.cpp, causing a failure to link
- https://bugs.webkit.org/show_bug.cgi?id=88874
-
- Reviewed by Simon Hausmann.
-
- Rename main.cpp in QtTestBrowser because on Windows
- it conflicts with main.cpp from DumpRenderTree.
-
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp: Renamed from Tools/QtTestBrowser/main.cpp.
- (launcherMain):
- (LauncherApplication):
- (LauncherApplication::urls):
- (LauncherApplication::isRobotized):
- (LauncherApplication::robotTimeout):
- (LauncherApplication::robotExtraTime):
- (LauncherApplication::applyDefaultSettings):
- (LauncherApplication::LauncherApplication):
- (requiresGraphicsView):
- (LauncherApplication::handleUserOptions):
- (main):
-
-2012-06-12 Lucas Forschler <lforschler@apple.com>
-
- Wrap bot types inside ().
- https://bugs.webkit.org/show_bug.cgi?id=88893
-
- Reviewed by Stephanie Lewis.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [soup] Prevent setting or editing httpOnly cookies from JavaScript
- https://bugs.webkit.org/show_bug.cgi?id=88760
-
- Reviewed by Gustavo Noronha Silva.
-
- Update libsoup to v2.39.2, glib to v2.33.2 and glib-networking
- to v2.33.2 for both GTK and EFL ports.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-06-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable SHADOW_DOM flag
- https://bugs.webkit.org/show_bug.cgi?id=87732
-
- Reviewed by Kentaro Hara.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): Enable
- SHADOW_DOM by default in DRT.
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onFocusCanCycle): Enable focus cycling in EFL DRT to behave like
- Chromium and Mac ports.
- (drtViewAdd):
- * Scripts/webkitperl/FeatureList.pm: Enable SHADOW_DOM flag by default
- at compile time for EFL port.
-
-2012-06-12 Ashod Nakashian <ashodnakashian@yahoo.com>
-
- WinLauncher should show loading errors
- https://bugs.webkit.org/show_bug.cgi?id=80760
-
- Reviewed by Brent Fulgham.
-
- * WinLauncher/WinLauncher.cpp: Added load-fail handler to show messagebox with error.
- (WinLauncherWebHost::didFailProvisionalLoadWithError):
- * WinLauncher/WinLauncher.h:
- (WinLauncherWebHost::didFailProvisionalLoadWithError):
- (WinLauncherWebHost):
-
-2012-06-12 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][WK2] Add MiniBrowserEfl.
- https://bugs.webkit.org/show_bug.cgi?id=61850
-
- Reviewed by Chang Shu.
-
- Implement MiniBrowser for EFL.
-
- * CMakeLists.txt:
- * MiniBrowser/efl/CMakeLists.txt: Added.
- * MiniBrowser/efl/main.c: Added.
- (_MiniBrowser):
- (main_signal_exit):
- (on_ecore_evas_resize):
- (browserCreate):
- (main):
-
-2012-06-12 Helder Correia <helder.correia@nokia.com>
-
- Unreviewed. Update my email address in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-12 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] Resolve CMake warnings on overlapping search paths for EFL jhbuild-enabled build
- https://bugs.webkit.org/show_bug.cgi?id=84707
-
- Fixing CMAKE prefix path for 64bit systems to avoid CMAKE warnings on those.
- use_lib64 variable is preconfigured to True by jhbuild.
-
- Reviewed by Dirk Pranke.
-
- * efl/jhbuildrc:
-
-2012-06-12 Dana Jansens <danakj@chromium.org>
-
- Add zlieber@chromium.org to contributors list
- https://bugs.webkit.org/show_bug.cgi?id=88904
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-12 Lucas Forschler <lforschler@apple.com>
-
- Rename Apple bots to a standard convention.
- https://bugs.webkit.org/show_bug.cgi?id=88893
-
- Note: This has the side effect of grouping all of the Apple bots together in the waterfall.
-
- Reviewed by Simon Fraser.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-12 Mike West <mkwst@chromium.org>
-
- Make document.documentURI readonly from JavaScript
- https://bugs.webkit.org/show_bug.cgi?id=65187
-
- Reviewed by Alexey Proskuryakov.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/SetDocumentURI.html: Added.
- * TestWebKitAPI/Tests/mac/SetDocumentURI.mm: Added.
- (-[SetDocumentURITest webView:didFinishLoadForFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-06-12 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] enable LEGACY_WEBKIT_BLOB_BUILDER flag
- https://bugs.webkit.org/show_bug.cgi?id=88715
-
- Reviewed by Noam Rosenthal.
-
- Enable LEGACY_WEBKIT_BLOB_BUILDER flag by default on EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-06-12 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Fix -Werror for the buildbots
- https://bugs.webkit.org/show_bug.cgi?id=88223
-
- Rubber-stamped by Tor Arne Vestbø.
-
- Revert a part of r119269 to enable Werror again for non qt-developer-builds. (for bots for example)
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-06-12 Balazs Kelemen <kbalazs@webkit.org>
-
- [REGRESSION][WTR] Build fail with werror after r120054
- https://bugs.webkit.org/show_bug.cgi?id=88862
-
- Reviewed by Csaba Osztrogonác.
-
- Some static helpers become unused after counterValueForElementById
- has moved to Internals. Let's remove them.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
-
-2012-06-12 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Slave losts cause build break on bots
- https://bugs.webkit.org/show_bug.cgi?id=38980
-
- Minor fix after r59261.
-
- Reviewed by Tor Arne Vestbø.
-
- * Scripts/build-webkit:
- (unlinkZeroFiles): Don't remove 0 byte sized directories, because they are always 0 byte sized on Windows.
-
-2012-06-11 Kaustubh Atrawalkar <kaustubh@motorola.com>
-
- [DRT] LTC:: counterValueForElementById() could be moved to Internals.
- https://bugs.webkit.org/show_bug.cgi?id=84406
-
- Reviewed by Hajime Morita.
-
- Move the counterValueForElementById from LayoutTestCotroller to Internals and
- remove the old platform specific implementations as it exclusively tests WebCore functionality.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setPOSIXLocale):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-06-11 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: Make SpeechRecognitionError an Event
- https://bugs.webkit.org/show_bug.cgi?id=88784
-
- Reviewed by Adam Barth.
-
- Make it possible to have MockWebSpeechRecognizer fire error events.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::setMockSpeechRecognitionError):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- (WebKit):
- (ErrorTask):
- (WebKit::ErrorTask::ErrorTask):
- (MockWebSpeechRecognizer::addMockResult):
- (MockWebSpeechRecognizer::setError):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- (MockWebSpeechRecognizer):
-
-2012-06-11 Ojan Vafai <ojan@chromium.org>
-
- Don't show the ASAN builders in garden-o-matic since they don't get block WebKit rolls.
- https://bugs.webkit.org/show_bug.cgi?id=88836
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
-
-2012-06-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Remove CMakeCache.txt before building
- https://bugs.webkit.org/show_bug.cgi?id=88717
-
- Reviewed by Antonio Gomes.
-
- Remove CMake cache file before every build to avoid using outdated
- build flags when new features get enabled. This will avoid unexpected
- failures on the bots due to outdated build flags.
-
- * Scripts/webkitdirs.pm:
- (generateBuildSystemFromCMakeProject):
-
-2012-06-11 Vincent Scheib <scheib@chromium.org>
-
- Add new Pointer Lock spec attribute webkitPointerLockElement.
- https://bugs.webkit.org/show_bug.cgi?id=88799
-
- Reviewed by Dimitri Glazkov.
-
- Part of a series of refactoring changes to update pointer lock API to
- the fullscreen locking style. https://bugs.webkit.org/show_bug.cgi?id=84402
-
- New attribute webkitPointerLockElement added. Follow up patches
- will remove the previous isLocked attribute. Tests updated to use
- the new attribute.
-
- WebViewHost logic required modification to correctly repond to
- a lock, unlock, pointerLockElement call series. Specifically,
- unlocking must be queued after a lock command is issued always
- as the lock state may not be set yet with a lock request in flight.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestPointerUnlock): Always post didLosePointerLock task.
- (WebViewHost::didLosePointerLock): Signal didLosePointerLock only if pointer was locked.
-
-2012-06-11 Alexis Menard <alexis.menard@openbossa.org>
-
- [CSS3 Backgrounds and Borders] Protect box-decoration-break behind a feature flag.
- https://bugs.webkit.org/show_bug.cgi?id=88804
-
- Reviewed by Tony Chang.
-
- Protect box-decoration-break behind a feature flag enabled by default.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-06-11 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [CMAKE][EFL] Remove duplicated executable output path
- https://bugs.webkit.org/show_bug.cgi?id=88765
-
- Reviewed by Daniel Bates.
-
- CMake files for EFL port have redefined executable output path. However, EFL port doesn't
- need to define again because it is already defined in top-level CMake file.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * EWebLauncher/CMakeLists.txt:
-
-2012-06-11 Ojan Vafai <ojan@chromium.org>
-
- Don't consider show warnings in the garden-o-matic UI for non-layout test failures
- https://bugs.webkit.org/show_bug.cgi?id=88816
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- Expose a way to clear AsynchronousCaches.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- Clear the buildInfo cache at the beginning of each test in order to avoid having one test affect another.
-
-2012-06-11 Dirk Pranke <dpranke@chromium.org>
-
- nrwt exits early too frequently
- https://bugs.webkit.org/show_bug.cgi?id=73843
-
- Reviewed by Ryosuke Niwa.
-
- Change the defaults for new-run-webkit-tests for both
- --exit-after-n-failures and --exit-after-n-crashes-or-timeouts
- to zero (i.e., we will never exit early by default).
-
- If people want their buildbots to exit early it is their
- responsibility to update their buildbot configs appropriately.
-
- Note that we have tests that ensure that these flags work for
- non-zero numbers, but we don't have tests that either test the
- default or ensure that zero means "run all of the tests". I
- think that's okay but can add tests if others disagree.
-
- Also note that it looks like no changes on the build.webkit.org
- master.cfg are necessary; all of the bots seem to be using the
- RunWebKitTests wrapper which is already setting the flags. There
- is a NewRunWebKitTests wrapper, but that looks to be unused; I
- will delete that in a separate patch.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-06-11 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Reset CacheModel before running each test
- https://bugs.webkit.org/show_bug.cgi?id=87534
-
- Reviewed by Gustavo Noronha Silva.
-
- Reset cache model to default before running each test to fix some
- flaky tests on EFL build bots. Also fix case value in setCacheModel.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setCacheModel):
-
-2012-06-11 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] Memory leaks in DRT EventSender.cpp
- https://bugs.webkit.org/show_bug.cgi?id=88774
-
- Reviewed by Martin Robinson.
-
- Fix a few possible memory leaks in EventSender code.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (contextClickCallback): Free the event returned by gdk_event_new().
- (mouseDownCallback): Ditto.
- (mouseUpCallback): Ditto.
-
-2012-06-11 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] REGRESSION (r119788): tests rely on pathToLocalResource are failing after r119788
- https://bugs.webkit.org/show_bug.cgi?id=88661
-
- Reviewed by Dirk Pranke.
-
- Pass string length explicitly when creating String object from
- non-null-terminated UChar* returned by characters().
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2012-06-11 David Dorwin <ddorwin@chromium.org>
-
- [chromium] Provide access to the WebPlugin created by the helper plugin widget
- https://bugs.webkit.org/show_bug.cgi?id=88028
-
- Reviewed by Adam Barth.
-
- Added isPlaceholder() to WebPlugin.
-
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin::isPlaceholder):
-
-2012-06-11 Tony Chang <tony@chromium.org>
-
- rebaseline from garden-o-matic leaves N processes each time it is run
- https://bugs.webkit.org/show_bug.cgi?id=88586
-
- Reviewed by Dirk Pranke.
-
- This appears to only be a problem on python 2.7. Maybe a bug causing
- pools to not be garbage collected?
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.run_in_parallel): close() and join() the process pool.
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_in_parallel):
-
-2012-06-11 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Add config tests for WEBP imagedecoder library, modify HAVE(decoderlibrary) to USE(...)
- https://bugs.webkit.org/show_bug.cgi?id=87841
-
- Reviewed by Simon Hausmann.
-
- * qmake/config.tests/libwebp/libwebp.cpp: Added.
- (main):
- * qmake/config.tests/libwebp/libwebp.pro: Added.
- * qmake/sync.profile:
-
-2012-06-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Expose layoutTestController as testRunner
- https://bugs.webkit.org/show_bug.cgi?id=88210
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::makeWindowObject):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::initJSObjects):
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::makeWindowObject):
-
-2012-06-09 Dominic Cooney <dominicc@chromium.org>
-
- [Chromium] Remove JavaScriptCore dependencies from gyp
- https://bugs.webkit.org/show_bug.cgi?id=88510
-
- Reviewed by Adam Barth.
-
- Chromium doesn't support JSC any more and there doesn't seem to be
- a strong interest in using GYP as the common build system in other
- ports.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * Scripts/generate-project-files: Removed.
-
-2012-06-09 Sukolsak Sakshuwong <sukolsak@google.com>
-
- Add UNDO_MANAGER flag
- https://bugs.webkit.org/show_bug.cgi?id=87908
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-06-08 Ryosuke Niwa <rniwa@webkit.org>
-
- webkit-patch land-safely should set cq? if the patch author is not in committers.py
- https://bugs.webkit.org/show_bug.cgi?id=88689
-
- Reviewed by Dirk Pranke.
-
- When posting a patch on Bugzilla, trun cq+ into cq? if the Bugzilla login is not listed
- in committers.py or the contributor cannot commit. If anything, the contributor can still
- set cq+ on thier patches manually so I don't think this will be an issue for people who
- don't list their Bugzille email on committers.py.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla._commit_queue_flag):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (test_commit_queue_flag):
- (test_commit_queue_flag.assert_commit_queue_flag):
-
-2012-06-08 Dirk Pranke <dpranke@chromium.org>
-
- remove obsolete NewRunWebKitTests buildbot master factory classes
- https://bugs.webkit.org/show_bug.cgi?id=88693
-
- Reviewed by Ryosuke Niwa.
-
- I believe these aren't used any more ...
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests.getText2):
- (BuildAndTestLeaksFactory):
-
-2012-06-08 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Build DumpRenderTree with Android SDK
- https://bugs.webkit.org/show_bug.cgi?id=88598
-
- Change WebKit side of DRT related code according to some recent changes at chromium side.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort._path_to_driver):
-
-2012-06-08 Wei James <james.wei@intel.com>
-
- Add app_abi option for DumpRenderTree_apk
- https://bugs.webkit.org/show_bug.cgi?id=88626
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-06-08 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add API to get the library version to WebKit2 GTK+
- https://bugs.webkit.org/show_bug.cgi?id=88426
-
- Reviewed by Martin Robinson.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Add built sources to the list of files, but
- ignore enum types and marshallers.
-
-2012-06-07 Vincent Scheib <scheib@chromium.org>
-
- Layout Test pointer-lock/pointerlockchange-pointerlockerror-events.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=88604
-
- Reviewed by Kent Tamura.
-
- DumpRenderTree fixed to not call didLosePointerLock if pointer is not currently locked.
- Fixes debug only assert crash in pointer-lock/pointerlockchange-pointerlockerror-events.html test.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::requestPointerUnlock):
-
-2012-06-08 Hans Wennborg <hans@chromium.org>
-
- Speech JavaScript API: mock WebSpeechRecognizer for DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=87976
-
- Reviewed by Kent Tamura.
-
- Provide a mock implementation of WebSpeechRecognizer for
- DumpRenderTree. This will allow better testing of the API via layout
- tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::addMockSpeechRecognitionResult):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp: Added.
- (MockWebSpeechRecognizer::create):
- (MockWebSpeechRecognizer::start):
- (MockWebSpeechRecognizer::stop):
- (MockWebSpeechRecognizer::abort):
- (MockWebSpeechRecognizer::MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::~MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::ResultTask::runIfValid):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h: Added.
- (WebKit):
- (MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::addMockResult):
- (MockWebSpeechRecognizer::taskList):
- (ClientCallTask):
- (MockWebSpeechRecognizer::ClientCallTask::ClientCallTask):
- (ResultTask):
- (MockWebSpeechRecognizer::ResultTask::ResultTask):
- (NoMatchTask):
- (MockWebSpeechRecognizer::NoMatchTask::NoMatchTask):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::speechRecognizer):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- (WebViewHost::mockSpeechRecognizer):
-
-2012-06-07 Kinuko Yasuda <kinuko@chromium.org>
-
- check-webkit-style needs to be taught about <public/Foo.h>
- https://bugs.webkit.org/show_bug.cgi?id=88524
-
- Reviewed by David Levin.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_classify_include):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (OrderOfIncludesTest.test_public_primary_header):
- (OrderOfIncludesTest.test_classify_include):
-
-2012-06-07 Joshua Lock <joshua.lock@intel.com>
-
- [EFL][DRT] Normalize file:///tmp/LayoutTests in LayoutTestController::pathToLocalResource()
- https://bugs.webkit.org/show_bug.cgi?id=67255
-
- Reviewed by Dirk Pranke.
-
- Implement pathToLocalResource to redirect file:///tmp URL's to
- DUMPRENDERTREE_TEMP and file:///tmp/LayoutTests to point to the
- LayoutTests sub-directory of the WebKit source tree.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::pathToLocalResource):
-
-2012-06-07 Tony Payne <tpayne@chromium.org>
-
- [chromium] Allow LayoutTests under new git workflow
- https://bugs.webkit.org/show_bug.cgi?id=88575
-
- On Windows, chromium indirects through git.bat. Adds the same hack that
- is currently used for discovering svn.bat to support the new git
- workflow.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git): Replaces all hard-coded references to 'git' with the class
- variable executable_name.
- (Git._check_git_architecture):
- (Git.in_working_directory):
- (Git.find_checkout_root):
- (Git.read_git_config):
- (Git.discard_local_commits):
- (Git.local_commits):
- (Git.working_directory_is_clean):
- (Git.clean_working_directory):
- (Git.status_command):
- (Git.add_list):
- (Git.delete_list):
- (Git.exists):
- (Git._current_branch):
- (Git.changed_files):
- (Git._changes_files_for_commit):
- (Git.revisions_changing_file):
- (Git.conflicted_files):
- (Git.svn_revision):
- (Git.create_patch):
- (Git._run_git_svn_find_rev):
- (Git.contents_at_revision):
- (Git.diff_for_file):
- (Git.show_head):
- (Git.committer_email_for_revision):
- (Git.apply_reverse_diff):
- (Git.revert_files):
- (Git.commit_with_message):
- (Git._commit_on_branch):
- (Git.svn_commit_log):
- (Git.last_svn_commit_log):
- (Git.svn_blame):
- (Git._branch_ref_exists):
- (Git.delete_branch):
- (Git.remote_merge_base):
- (Git.commit_locally_with_message):
- (Git.push_local_commits_to_server):
- (Git.commit_ids_from_commitish_arguments):
- (Git.commit_message_for_local_commit):
- (Git.files_changed_summary_for_commit):
- * Scripts/webkitpy/common/host.py:
- (Host._engage_awesome_windows_hacks): Adds an awesome 'git.bat' hack
- that duplicates the logic in the existing 'svn.bat' hack.
-
-2012-06-07 Ojan Vafai <ojan@chromium.org>
-
- Style build architectures like build versions for non-layout test failures
- https://bugs.webkit.org/show_bug.cgi?id=88590
-
- Reviewed by Tony Chang.
-
- Since we show the list of failing tests after the architecture, we want the
- buildtype and architecture to be grouped together visually.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/styles/failures.css:
- (.effects a.failing-builder>span.architecture):
-
-2012-06-07 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Remove header dependency of ImageDiff to WTF
- https://bugs.webkit.org/show_bug.cgi?id=88422
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (untestedCompareImages):
-
-2012-06-07 Dongwoo Im <dw.im@samsung.com>
-
- [EFL] [DRT] DRT enables WebAudio when WebAudio feature is enabled.
- https://bugs.webkit.org/show_bug.cgi?id=88491
-
- Reviewed by Dirk Pranke.
-
- DRT should enable WebAudio when WebAudio feature is enabled,
- so that the WebAudio feature could be tested by the Layouttest.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp: Enable WebAudio when WebAudio feature is enabled.
- (LayoutTestController::overridePreference):
-
-2012-06-07 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations should only rebaseline the appropriate suffixes for the failure in question
- https://bugs.webkit.org/show_bug.cgi?id=88581
-
- Reviewed by Ojan Vafai.
-
- webkit-paptch rebaseline-expectations was ignoring what the
- expected results for a test were and pulling down all the result
- files from a bot. This could lead to us pulling down old,
- incorrect .txt or .png files. With this patch we will now only
- pull down expectations of the appropriate file types (so an
- IMAGE failure will only pull the png and not the txt file).
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (has_pixel_failures):
- (suffixes_for_expectations):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (FunctionsTest.test_suffixes_for_expectations):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand.__init__):
- (RebaselineExpectations._is_supported_port):
- (RebaselineExpectations._update_expectations_file):
- (RebaselineExpectations._tests_to_rebaseline):
- (RebaselineExpectations._rebaseline_port):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_overrides_are_included_correctly):
-
-2012-06-07 Ojan Vafai <ojan@chromium.org>
-
- Fix recent null pointer error regression in the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=88573
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/builders.js:
- (requestBuilderList):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-06-07 Konrad Piascik <kpiascik@rim.com>
-
- Add Konrad Piascik to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=88560
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-07 Tony Chang <tony@chromium.org>
-
- [chromium] Win mock scrollbars appear to overflow by a pixel to the right and bottom
- https://bugs.webkit.org/show_bug.cgi?id=77368
-
- Reviewed by Ojan Vafai.
-
- It doesn't look like we ever get a rect with width or height of 0.
- I ran css1, css2.1, fast/forms, and tables without any crashes.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- (webRectToSkIRect): Correctly convert a WebRect to a SkIRect.
-
-2012-06-07 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests --lint-test-files gives an error when run on linux
- https://bugs.webkit.org/show_bug.cgi?id=88551
-
- Reviewed by Ojan Vafai.
-
- We weren't mapping the expectations properly for the
- google-chrome ports.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_test_expectations_file):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (TestGoogleChromePort.test_path_to_expectations):
-
-2012-06-07 Daniel Erat <derat@chromium.org>
-
- [chromium] Add LayoutTestController::setTextSubpixelPositioning() for Linux.
- https://bugs.webkit.org/show_bug.cgi?id=88263
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (LayoutTestController::reset):
- (LayoutTestController::setTextSubpixelPositioning):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/chromium/fonts.conf:
-
-2012-06-07 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] Assertions in gtk_widget_draw when acquiring pixel output
- https://bugs.webkit.org/show_bug.cgi?id=88060
-
- Reviewed by Martin Robinson.
-
- Spin the main loop before acquiring the pixel content. This ensures things
- like late size allocations are finished before calling gtk_widget_draw,
- avoiding assertions and subsequent empty pixel results.
-
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView):
-
-2012-06-06 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [Qt] Improve the visual of the viewport info box
- https://bugs.webkit.org/show_bug.cgi?id=88410
-
- Reviewed by Tor Arne Vestbø.
-
- Improve the visual and make it possible to see the content more easy.
-
- * MiniBrowser/qt/qml/ViewportInfoItem.qml:
-
-2012-06-06 Mariusz Grzegorczyk <mariusz.g@samsung.com>
-
- [EFL][WK2] Compile webkit1 and webkit2 by default.
- https://bugs.webkit.org/show_bug.cgi?id=85041
-
- Reviewed by Chang Shu.
-
- Compile webkit1 and webkit2 while running Tools/Scripts/build-webkit --efl.
- Webkit2 build can be skipped by adding --no-webkit2 option to build-webkit script.
-
- * Scripts/build-webkit:
-
-2012-06-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r119662.
- http://trac.webkit.org/changeset/119662
- https://bugs.webkit.org/show_bug.cgi?id=88487
-
- Broke builds (Requested by rniwa on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (untestedCompareImages):
-
-2012-06-06 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Remove header dependency of ImageDiff to WTF
- https://bugs.webkit.org/show_bug.cgi?id=88422
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/ImageDiff.cpp:
- (untestedCompareImages):
-
-2012-06-06 Amy Ousterhout <aousterh@chromium.org>
-
- [WebKit] DeviceOrientation cleanup
- https://bugs.webkit.org/show_bug.cgi?id=88406
-
- Reviewed by Kent Tamura.
-
- Updated LayoutTestController to use new public default constructor in WebDeviceOrientation.h.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::setMockDeviceOrientation):
-
-2012-05-29 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: add support for an ordered dict of test expectations
- https://bugs.webkit.org/show_bug.cgi?id=87802
-
- Reviewed by Ojan Vafai.
-
- As per https://bugs.webkit.org/show_bug.cgi?id=65834 we want to
- support a cascaded list of test expectations files. An easy way
- to think of this is as an ordered dictionary of name -> contents
- for files, where the name is usually a path on disk (I say
- usually because we want to support other kinds of expectations
- like the compile-time skips for unsupported features in
- webkit.py, and we want to continue to support "in-memory" test
- expectations that don't require a filesystem).
-
- Conveniently there is an OrderedDict implementation in Python
- 2.7+ and it is available as a backport, so the first step in
- adding this support is to use that implementation. Subsequent
- patches will update the test_expectations.py module (and other
- callers) to access the dict directly.
-
- This patch just changes the base internal implementation and
- provides wrappers for compatibility. The derived ports
- (WebKitPort, TestPort, etc.) still need to be updated.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._expectations_dict):
- (Port.test_expectations):
- (Port):
- (Port._expectations_overrides_dict):
- (Port.test_expectations_overrides):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_expectations_ordering):
- (PortTestCase):
- (PortTestCase.test_expectations_overrides_ordering):
- * Scripts/webkitpy/thirdparty/ordered_dict.py: Added.
- (OrderedDict):
- (OrderedDict.__init__):
- (OrderedDict.clear):
- (OrderedDict.__setitem__):
- (OrderedDict.__delitem__):
- (OrderedDict.__iter__):
- (OrderedDict.__reversed__):
- (OrderedDict.popitem):
- (OrderedDict.__reduce__):
- (OrderedDict.__repr__):
- (OrderedDict.copy):
- (OrderedDict.fromkeys):
-
-2012-06-06 Mario Sanchez Prada <msanchez@igalia.com>
-
- Unreviewed gardening. Unit test fails on GTK 64bit debug bot.
-
- * gtk/run-api-tests:
- (TestRunner): Skip TestWebKitAPI/WTF/TestHashMap.
-
-2012-06-06 Dirk Pranke <dpranke@chromium.org>
-
- nrwt should look in 'out' for binaries on chromium win to support ninja
- https://bugs.webkit.org/show_bug.cgi?id=88273
-
- Reviewed by Tony Chang.
-
- This patch standardizes the search algorithm the chromium ports
- use to figure out which driver to run. We will look in a
- chromium location before a webkit location (e.g., in
- Source/WebKit/chromium/out before out/) and we will look in the
- "legacy" directory (xcodebuild) before the directory ninja uses
- (out).
-
- Unfortunately due to the way the test code is set up testing the
- properly requires some duplication of test code. I will fix that
- in a followup patch.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- (ChromiumPort._static_build_path):
- (ChromiumPort._build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort):
- (ChromiumLinuxPort._determine_driver_path_statically):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_build_path):
- (ChromiumLinuxPortTest):
- (ChromiumLinuxPortTest.test_driver_name_option):
- (ChromiumLinuxPortTest.path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path):
- (ChromiumMacPortTest):
- (ChromiumMacPortTest.test_driver_name_option):
- (ChromiumMacPortTest.path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_overrides_and_builder_names):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_build_path):
- (ChromiumWinTest.test_operating_system):
- (ChromiumWinTest):
- (ChromiumWinTest.test_driver_name_option):
- (ChromiumWinPortTest.path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.assert_build_path):
-
-2012-06-06 Jessie Berlin <jberlin@apple.com>
-
- Remove very red Windows WebKit2 testers
- https://bugs.webkit.org/show_bug.cgi?id=88452
-
- Reviewed by Steve Falkenburg.
-
- Remove the Windows 7 Release WK2 testers so that the hardware can be repurposed. We are
- need to focus on getting the WK1 testers green.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-06 Dirk Pranke <dpranke@chromium.org>
-
- get rebaselining tools to kinda work with the skia overrides file
- https://bugs.webkit.org/show_bug.cgi?id=88456
-
- Reviewed by Ryosuke Niwa.
-
- Update rebaseline-expectations so that we read in the overrides
- when looking for tests to rebaseline, but don't read in the
- overrides when we are writing the expectations file back out.
- This prevents the overrides from getting written into the main
- file. This is kind of a hack but will have to do until we
- support multiple expectations files properly.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations._expectations):
- (RebaselineExpectations._update_expectations_file):
- (RebaselineExpectations._tests_to_rebaseline):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_overrides_are_included_correctly):
-
-2012-06-06 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: two manager_worker_broker_unittest tests are broken
- https://bugs.webkit.org/show_bug.cgi?id=88445
-
- Reviewed by Ojan Vafai.
-
- These tests were never updated when we removed the
- --worker-model argument, and we were passing 'inline' instead of
- 1 (for the number of workers) :(. As a result we were creating
- multiprocessing queues unnecessarily and that was failing on cygwin.
-
- * Scripts/webkitpy/layout_tests/controllers/manager_worker_broker_unittest.py:
- (InterfaceTest.test_managerconnection_is_abstract):
- (InterfaceTest.test_workerconnection_is_abstract):
-
-2012-06-06 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION(r117789): "webkit-patch rebaseline-expectations" copies contents in skia_test_expectations.txt into test_expectations.txt
- https://bugs.webkit.org/show_bug.cgi?id=87406
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._update_expectations_file):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_does_not_include_overrides):
-
-2012-06-06 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: perf tests unit tests fail on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=88279
-
- Reviewed by Ryosuke Niwa.
-
- I'm seeing weird failures running the unit tests in my win32
- checkout, and we don't really expect webpagereplay to work on
- win32 anyway, so I'm skipping the import of that module for now
- and adding a warning.
-
- * Scripts/run-perf-tests:
- * Scripts/webkitpy/performance_tests/perftest.py:
-
-2012-06-06 Yong Li <yoli@rim.com>
-
- Unreviewed. Update my email address in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-06 Robert Kroeger <rjkroege@chromium.org>
-
- Add Robert Kroeger to commiters.py
- https://bugs.webkit.org/show_bug.cgi?id=88415
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-06 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] http/tests/globalhistory testcases do not pass
- https://bugs.webkit.org/show_bug.cgi?id=82579
-
- Reviewed by Csaba Osztrogonác.
-
- DRT has provided callbacks for ewk_view "global history delegate" signals.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (isGlobalHistoryTest): Aux function to ident global history testcase.
- (createLayoutTestController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onTitleChanged): Handles also some global history testcases.
- (DumpRenderTreeChrome::onWebViewNavigatedWithData): New callback function.
- (DumpRenderTreeChrome::onWebViewServerRedirect): Ditto.
- (DumpRenderTreeChrome::onWebViewClientRedirect): Ditto.
- (DumpRenderTreeChrome::onWebViewPopulateVisitedLinks): Ditto.
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-06-06 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt] run-qtwebkit-tests hangs with -j1
- run-qtwebkit-tests used to hang when wk2 API tests were run with -j1 and --timeout.
- This could happen due to an uncancelled timer after results were returned. This timer was
- started only if --timeout was set.
- https://bugs.webkit.org/show_bug.cgi?id=85475
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/run-qtwebkit-tests:
- (run_test):
-
-2012-06-06 Michael Brüning <michael.bruning@nokia.com>
-
- [Qt][WK2] Add preferredMinimumContentsWidth to the viewport info in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=88327
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/MiniBrowser.qrc: Added contents_width.png.
- * MiniBrowser/qt/icons/contents_width.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml: Added button for toggling preferredMinimumContentsWidth.
- * MiniBrowser/qt/qml/ViewportInfoItem.qml: Added display of preferredMinimumContentsWidth.
-
-2012-06-05 Jon Lee <jonlee@apple.com>
-
- Buildbot fix.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: We lose the type attribute earlier
- in the function. Store in a local variable.
- (loadBuilderConfig):
-
-2012-06-05 Jon Lee <jonlee@apple.com>
-
- Buildbot fix.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (loadBuilderConfig):
-
-2012-06-04 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up win-specific path handling and tests
- https://bugs.webkit.org/show_bug.cgi?id=88281
-
- Reviewed by Adam Barth.
-
- There was a bunch of inconsistent logic for handling path
- conversions for win32 and cygwin paths due to us sometimes
- looking at sys.platform and sometimes using mock hosts. This
- patch cleans everything up so that we are required to pass
- PlatformInfo objects to the path module and stop trying to do
- different things when running on cygwin or win32 hosts (except
- in the path_unittest module itself).
-
- This may slightly reduce test coverage for the win32 code paths
- but will be a lot easier to follow and maintain.
-
- * Scripts/webkitpy/common/system/path.py:
- (abspath_to_uri):
- (_convert_path):
- * Scripts/webkitpy/common/system/path_unittest.py:
- (AbspathTest.platforminfo):
- (AbspathTest.test_abspath_to_uri_cygwin):
- (AbspathTest.test_abspath_to_uri_unixy):
- (AbspathTest.test_abspath_to_uri_win):
- (AbspathTest.test_abspath_to_uri_escaping_unixy):
- (AbspathTest.test_abspath_to_uri_escaping_cygwin):
- (AbspathTest.test_stop_cygpath_subprocess):
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.__init__):
- (PlatformInfo.is_cygwin):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_cygwin):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.test_to_uri):
- (Driver.uri_to_test):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_test_to_uri):
- (DriverTest.test_uri_to_test):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockDRTPortTest.make_port):
- (MockDRTTest.input_line):
- (MockChromiumDRTTest.test_pixeltest__fails):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.show_results_html_file):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_unexpected_failures):
- (MainTest.test_results_directory_absolute):
- (MainTest.test_results_directory_default):
- (MainTest.test_results_directory_relative):
-
-2012-06-05 Jon Lee <jonlee@apple.com>
-
- Workaround buildbot bug when merging build requests.
- https://bugs.webkit.org/show_bug.cgi?id=88158
-
- Reviewed by Mark Rowe.
-
- For expediency, we still want testers to pick the latest build to test, but to ensure
- that the builders are reporting the correct revision number, we should let the building bots
- run as they normally would. That is, the builder picks the oldest revision, and merges
- subsequent requests. Because merged requests get appended to the list of changes for a given
- build, the last change in that list is also the latest change. When we used pickLatestBuild
- for the builders, this was not the case (it would always report the penultimate change).
-
- http://trac.buildbot.net/ticket/2309 is tracking the buildbot bug.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Remove the mergeRequests override
- for all Apple builders.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg: Have only non-building bots pick
- the latest build to run.
- (loadBuilderConfig):
-
-2012-06-05 Jessie Berlin <jberlin@apple.com>
-
- [Win] DumpRenderTree should call resetInternalsObject
- https://bugs.webkit.org/show_bug.cgi?id=88346
-
- Reviewed by Simon Fraser.
-
- Invoke it on Windows in the same place it is invoked on Mac.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
-
-2012-06-05 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] Fix two more memory leaks in DRT
- https://bugs.webkit.org/show_bug.cgi?id=88255
-
- Reviewed by Martin Robinson.
-
- Fixed memory leaks in GTK's DRT code.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (dumpHistoryItem): webkit_web_history_item_get_target() returns a
- g_strdup()'d string. So, use GOwnPtr to manage memory automatically.
- * DumpRenderTree/gtk/PixelDumpSupportGtk.cpp:
- (createBitmapContextFromWebView): Free the cairo surface.
-
-2012-06-05 Allan Sandfeld Jensen <allan.jensen@nokia.com>
-
- [Qt] Building when a top directory is named Source
- https://bugs.webkit.org/show_bug.cgi?id=77727
-
- Reviewed by Tor Arne Vestbø.
-
- Change regex to only replace the last instance of OUT_PWD.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-06-05 Dongwoo Im <dw.im@samsung.com>
-
- Add 'isProtocolHandlerRegistered' and 'unregisterProtocolHandler'.
- https://bugs.webkit.org/show_bug.cgi?id=73176
-
- Reviewed by Adam Barth.
-
- Two more APIs are added in Custom Scheme Handler specification.
- http://dev.w3.org/html5/spec/Overview.html#custom-handlers
- One is 'isProtocolHandlerRegistered' to query whether the specific URL
- is registered or not.
- The other is 'unregisterProtocolHandler' to remove the registered URL.
-
- * Scripts/webkitperl/FeatureList.pm: Add a macro 'ENABLE_CUSTOM_SCHEME_HANDLER'.
-
-2012-06-05 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK][WK2] Implement API for Geolocation permission requests in the GTK port
- https://bugs.webkit.org/show_bug.cgi?id=83879
-
- Reviewed by Carlos Garcia Campos.
-
- Make minibrowser connect to the new 'permission requests' signal
- to allow users handle the Geolocation permission requests.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (geolocationRequestDialogCallback): Callback for the dialog asking
- the user for allowing or not geolocation permission requests.
- (webViewDecidePermissionRequest): Launch a dialog to ask the user
- whether to allow or deny geolocation permission requests.
- (browserWindowConstructed): Connect to 'permission-request' signal.
-
-2012-06-04 Chase Phillips <cmp@google.com>
-
- Make a builder group support+expect multiple loads.
- https://bugs.webkit.org/show_bug.cgi?id=88260
-
- Change BuilderGroup to allow expecting multiple
- loads. This allows merging results for a given set
- of builders into one group.
-
- Add a test that verifies that the group count
- increments correctly based on successful and failed
- list loads.
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup):
- (BuilderGroup.prototype.setbuilder):
- (BuilderGroup.prototype.append):
- (BuilderGroup.prototype.loaded):
- (requestBuilderList.xhr.onload):
- (requestBuilderList.xhr.onerror):
- (onErrorLoadingBuilderList):
- (loadBuildersList):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
- * TestResultServer/static-dashboards/run-unittests.html:
-
-2012-06-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Python test fix attempt for Chromium Windows.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.uri_to_test):
-
-2012-06-04 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- Turn LEGACY_VIEWPORT_ADAPTION USE flag into an ENABLE flag.
- https://bugs.webkit.org/show_bug.cgi?id=88243
-
- Reviewed by Adam Barth.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-06-04 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy.layout_tests.port.server_process_unittest.TestServerProcess.test_basic is flaky
- https://bugs.webkit.org/show_bug.cgi?id=88280
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TestServerProcess.test_basic):
-
-2012-06-04 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy is hanging under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=88269
-
- Reviewed by Ryosuke Niwa.
-
- The 'multiprocessing' module doesn't work correctly under Cygwin yet,
- so we need to skip any tests that use it.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.run_in_parallel):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_in_parallel):
-
-2012-06-04 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy is failing on win32 after r115054
- https://bugs.webkit.org/show_bug.cgi?id=88264
-
- Reviewed by Ryosuke Niwa.
-
- The failing http_server test was improperly suppressed (the
- tuple was missing a comma, and so wasn't a tuple at all, just a
- string) and so we were skipping *all* tests on win32. The right
- way to skip a single test is to disable it inside the test
- itself.
-
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_start_cmd):
- * Scripts/webkitpy/test/test_finder.py:
- (TestFinder._default_names):
- * Scripts/webkitpy/test/main.py:
- (Tester.run): Add error message if we don't find any tests to run.
- * Scripts/webkitpy/test/main_unittest.py:
-
-
-2012-06-04 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] Memory leaks in AccessibilityUIElementGtk.cpp
- https://bugs.webkit.org/show_bug.cgi?id=88215
-
- Reviewed by Martin Robinson.
-
- Fixed memory leaks in AccessibilityUIElement by using GOwnPtr
- for newly allocated strings.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (attributeSetToString):
- (AccessibilityUIElement::allAttributes):
-
-2012-06-04 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [GTK] Memory leaks in DumpRenderTree.cpp
- https://bugs.webkit.org/show_bug.cgi?id=88213
-
- Reviewed by Martin Robinson.
-
- Fixed memory leaks in DumpRenderTree.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (appendString): Accepts const gchar* as the second argument.
- (dumpFramesAsText): Free the string returned by g_strdup_printf().
- (dumpHistoryItem): Free the string returned by g_uri_parse_scheme().
-
-2012-06-04 David Dorwin <ddorwin@chromium.org>
-
- Enable Chromium media player to instantiate a plugin
- https://bugs.webkit.org/show_bug.cgi?id=87399
-
- Reviewed by Kent Tamura.
-
- Adds WebHelperPlugin, an off-screen widget that contains an <object> tag.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPopupMenu):
-
-2012-06-04 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK][WK2] Implement geolocation provider for the GTK port
- https://bugs.webkit.org/show_bug.cgi?id=83877
-
- Reviewed by Carlos Garcia Campos.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Ignore WebKitGeolocationProvider files.
-
-2012-06-04 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] Reset "WebKitTabToLinksPreferenceKey" in DumpRenderTreeChrome::resetDefaultsToConsistentValues
- https://bugs.webkit.org/show_bug.cgi?id=87668
-
- Reviewed by Ryosuke Niwa.
-
- Layout test controller "WebKitTabToLinksPreferenceKey" setting should be reset to false
- otherwise LayoutTests/fast/html/tab-order.html is failing as it has a link inside the test description which might
- be included in focus chain (if "WebKitTabToLinksPreferenceKey" setting is set to true).
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-06-04 Tomasz Morawski <t.morawski@samsung.com>
-
- [EFL] Refactor ewk_view_context_paint code.
- https://bugs.webkit.org/show_bug.cgi?id=85588
-
- Reviewed by Hajime Morita.
-
- * DumpRenderTree/efl/CMakeLists.txt: Added include directory.
-
-2012-06-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Compilation warning in DumpRenderTreeView.cpp on 64-Bit
- https://bugs.webkit.org/show_bug.cgi?id=87869
-
- Reviewed by Andreas Kling.
-
- Replace %lld by PRId64 macro to print an int64_t value and silent a
- compilation warning on 64-Bit.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onExceededApplicationCacheQuota):
-
-2012-06-03 Varun Jain <varunjain@google.com>
-
- [chromium] Add new gesture type (two finger tap) that triggers context menu.
- https://bugs.webkit.org/show_bug.cgi?id=88173
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/EventSender.cpp:
- (EventSender::EventSender):
- (EventSender::gestureTwoFingerTap):
- (EventSender::gestureEvent):
- * DumpRenderTree/chromium/EventSender.h:
- (EventSender):
-
-2012-06-02 Zeno Albisser <zeno@webkit.org>
-
- Fix and enable WebGL for WebKit2 on Qt.
- https://bugs.webkit.org/show_bug.cgi?id=86214
-
- Enable WebGL by default for Qt MiniBrowser.
-
- Reviewed by Noam Rosenthal.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-06-02 Ryosuke Niwa <rniwa@webkit.org>
-
- Teach svn-apply how to apply changes in test_expectations.txt to TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=88164
-
- Reviewed by Kentaro Hara.
-
- Just like r74856, adjust git/svn headers from test_expectations.txt to TestExpectations.
- Also replace all occurrences of /test_expectations.txt: by /TestExpectations: in change log entries.
-
- * Scripts/VCSUtils.pm:
- (adjustPathForRecentRenamings):
- (fixChangeLogPatch):
-
-2012-06-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename test_expectations.txt to TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=86690
-
- Reviewed by Dirk Pranke.
-
- Make webkitpy aware of both test_expectations.txt and TestExpectations while we rename files.
- We can the code to read test_expectations.txt once we've successfully transitioned.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._check_path_does_not_exist):
- (TestExpectationParser._tokenize):
- (TestExpectations): Removed TEST_LIST, which is not used anywhere.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_test_expectations_file): Moved from WebKitPort and ChromiumPort. Returns the path to
- test_expectations.txt if one exists and the path to TestExpectations otherwise.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_virtual_methods): path_to_test_expectations_file and test_expectations are no longer
- virtual.
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.path_from_chromium_base):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.test_expectations):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (add_unit_tests_to_mock_filesystem): Use TestExpectations instead of test_expectations.txt.
- (TestPort.__init__):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.baseline_search_path):
- (WebKitPort.test_expectations):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py: Added some test cases. We should move these
- tests to base as a follow up.
- (WebKitPortTest.test_path_to_test_expectations_file):
- (test_test_expectations):
- (test_legacy_test_expectations):
- * Scripts/webkitpy/style/checker.py:
- (CheckerDispatcher.should_skip_without_warning): Replace the check for legacy drt_expectations.txt
- with one for TestExpectations.
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker): Accept both test_expectations.txt and TestExpectations in warning outputs.
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase._expect_port_for_expectations_path): Test both TestExpectations and
- test_expectations.txt.
- (TestExpectationsTestCase.test_determine_port_from_expectations_path):
- (TestExpectationsTestCase.assert_lines_lint):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._check_test_expectations):
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- (CommitTest._test_check_test_expectations): Extracted from test_check_test_expectations.
- (CommitTest.test_check_test_expectations): For TestExpectations.
- (CommitTest.test_check_legacy_test_expectations): For test_expectations.txt
- * TestResultServer/static-dashboards/dashboard_base.js:
- (requestExpectationsFile): Look for TestExpectations first, and fallback to test_expectations.txt.
- Error only when neither exists.
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (processMissingAndExtraExpectations):
- (htmlForTestsWithExpectationsButNoFailures):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-06-01 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Remove dependency from ImageDiff to WTF
- https://bugs.webkit.org/show_bug.cgi?id=88147
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-06-01 Dirk Pranke <dpranke@chromium.org>
-
- NRWT seems to leak (more?) temp dirs
- https://bugs.webkit.org/show_bug.cgi?id=88126
-
- Re-land r119297 with chromium fix (weren't calling the
- super() method if not in --test-shell mode in start().
- Add unit tests to chromium_unittest as well to check.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumDriver.start):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__del__):
- (WebKitDriver._start):
- (WebKitDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_check_for_driver_crash):
- (WebKitDriverTest.test_stop_cleans_up_properly):
- (WebKitDriverTest):
- (WebKitDriverTest.test_two_starts_cleans_up_properly):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumDriverTest.test_stop_cleans_up_properly):
- (ChromiumDriverTest.test_two_starts_cleans_up_properly):
-
-2012-06-01 Tim Horton <timothy_horton@apple.com>
-
- Lots of "failed download-built-product" on Apple bots
- https://bugs.webkit.org/show_bug.cgi?id=88158
-
- Reviewed by Jessie Berlin.
-
- Disable mergeRequests on all Apple builders. This is a speculative fix.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-06-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r119297.
- http://trac.webkit.org/changeset/119297
- https://bugs.webkit.org/show_bug.cgi?id=88156
-
- May have broken Chromium bots (Requested by rniwa on #webkit).
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__del__):
- (WebKitDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_check_for_driver_crash):
- (WebKitDriverTest.test_stop_cleans_up_properly):
-
-2012-06-01 Dirk Pranke <dpranke@chromium.org>
-
- nrwt seems to leak tmpdirs
- https://bugs.webkit.org/show_bug.cgi?id=88126
-
- Reviewed by Ojan Vafai.
-
- Fix leak possibly introduced in r118979 - we now will
- make sure we clean up any stale temp directories during the
- start routine and attempt to clean up again in __del__. It
- turns out that asserting in __del__ logs a message but is
- caught by the runtime, so it's mostly useless.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__del__):
- (WebKitDriver._start):
- (WebKitDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_check_for_driver_crash):
- (WebKitDriverTest.test_stop_cleans_up_properly):
- (WebKitDriverTest):
- (WebKitDriverTest.test_two_starts_cleans_up_properly):
-
-2012-06-01 Michael Saboff <msaboff@apple.com>
-
- WebFrame::_stringByEvaluatingJavaScriptFromString methods don't handle nil string
- https://bugs.webkit.org/show_bug.cgi?id=88109
-
- Reviewed by Geoffrey Garen.
-
- Additional test case.
-
- * TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm:
- (TestWebKitAPI::TEST):
-
-2012-06-01 Simon Hausmann <simon.hausmann@nokia.com>
-
- [Qt] Use -Werror only in developer builds
-
- Rubber-stamped by Tor Arne Vestbø.
-
- In production builds -Werror with custom toolchains and wierd system
- headers, -Werror is of no use and just creates confusion. So use it
- only if Qt is configured with -developer-build.
-
- * qmake/mkspecs/features/default_pre.prf: Move qt_developer_build determination here...
- * qmake/mkspecs/features/unix/default_post.prf: ... so that we can use it here to do -Werror
- only if qt_developer_build is set.
-
-2012-06-01 Jochen Eisinger <jochen@chromium.org>
-
- [watchlist] Add myself to loader and v8 bindings changes
- https://bugs.webkit.org/show_bug.cgi?id=88112
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-06-01 Jacky Jiang <zhajiang@rim.com>
-
- Adding Jacky Jiang to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=88122
-
- Reviewed by Rob Buis.
-
- Adding myself to committers.py as a Committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-06-01 Jessie Berlin <jberlin@apple.com>
-
- Fix Windows build.
-
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
-
-2012-06-01 Jessie Berlin <jberlin@apple.com>
-
- Windows WK2 MouseMoveAfterCrash API test failing
- https://bugs.webkit.org/show_bug.cgi?id=69982
-
- Disable the test on Windows to get the bots greener.
-
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
- (TestWebKitAPI::TEST):
-
-2012-06-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL port does not enable WEB_INTENTS_TAG flag
- https://bugs.webkit.org/show_bug.cgi?id=86866
-
- Reviewed by Adam Barth.
-
- Catch new "intent,service,register" signal on the frame and print out
- information about the Web Intent service in EFL's DumpRenderTree.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameIntentServiceRegistration):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-06-01 Martin Robinson <mrobinson@igalia.com>
-
- The ChangeLog parser cannot handle reviewers with initials in their name
- https://bugs.webkit.org/show_bug.cgi?id=87864
-
- Reviewed by Ryosuke Niwa.
-
- Add support in the ChangeLog parser for reviewer names that have
- initials in them.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry): Add a new group of regular expressions that need a backreference
- in the replacement string. This allows for matching the word characters before a
- period, without totally throwing them away.
- (ChangeLogEntry._parse_reviewer_text): Use the new regular expression.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_fuzzy_reviewer_match_initial): Add a test for a reviewer name that has an initial.
-
-2012-06-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController needs to implement deliverWebIntent
- https://bugs.webkit.org/show_bug.cgi?id=86865
-
- Reviewed by Adam Barth.
-
- Add deliverWebIntent method to LayoutTestController and provide
- implementation for EFL port.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (deliverWebIntentCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::deliverWebIntent):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::deliverWebIntent):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::deliverWebIntent):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::deliverWebIntent):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::deliverWebIntent):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::deliverWebIntent):
-
-2012-06-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make Qt Creator aware of files in webkitpy/perl for easy editing
-
- Reviewed by Simon Hausmann.
-
- * Tools.pro:
-
-2012-06-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Add public page loading performance tests using web-page-replay
- https://bugs.webkit.org/show_bug.cgi?id=84008
-
- Reviewed by Dirk Pranke.
-
- Add the primitive implementation of replay performance tests. We use web-page-replay (http://code.google.com/p/web-page-replay/)
- to cache data locally. Each replay test is represented by a text file with .replay extension containing a single URL.
- To hash out bugs and isolate them from the rest of performance tests, replay tests are hidden behind --replay flag.
-
- Run "run-perf-tests --replay PerformanceTests/Replay" after changing the system network preference to forward HTTP and HTTPS requests
- to localhost:8080 and localhost:8443 respectively (i.e. configure the system as if there are HTTP proxies at ports 8080 and 8443)
- excluding: *.webkit.org, *.googlecode.com, *.sourceforge.net, pypi.python.org, and www.adambarth.com for thirdparty Python dependencies.
- run-perf-tests starts web-page-replay, which provides HTTP proxies at ports 8080 and 8443 to replay pages.
-
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.is_external_http_test): Added.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver._command_from_driver_input): Allow test names that starts with http:// or https://.
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.__init__): Takes port.
- (PerfTest.prepare): Added. Overridden by ReplayPerfTest.
- (PerfTest):
- (PerfTest.run): Calls run_single.
- (PerfTest.run_single): Extracted from PageLoadingPerfTest.run.
- (ChromiumStylePerfTest.__init__):
- (PageLoadingPerfTest.__init__):
- (PageLoadingPerfTest.run):
- (ReplayServer): Added. Responsible for starting and stopping replay.py in the web-page-replay.
- (ReplayServer.__init__):
- (ReplayServer.wait_until_ready): Wait until port 8080 is ready. I have tried looking at the piped output from web-page-replay
- but it caused a dead lock on some web pages.
- (ReplayServer.stop):
- (ReplayServer.__del__):
- (ReplayPerfTest):
- (ReplayPerfTest.__init__):
- (ReplayPerfTest._start_replay_server):
- (ReplayPerfTest.prepare): Creates test.wpr and test-expected.png to cache the page when a replay test is ran for the first time.
- The subsequent runs of the same test will just use test.wpr.
- (ReplayPerfTest.run_single):
- (PerfTestFactory):
- (PerfTestFactory.create_perf_test):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- (TestReplayPerfTest):
- (TestReplayPerfTest.ReplayTestPort):
- (TestReplayPerfTest.ReplayTestPort.__init__):
- (TestReplayPerfTest.ReplayTestPort.__init__.ReplayTestDriver):
- (TestReplayPerfTest.ReplayTestPort.__init__.ReplayTestDriver.run_test):
- (TestReplayPerfTest.ReplayTestPort._driver_class):
- (TestReplayPerfTest.MockReplayServer):
- (TestReplayPerfTest.MockReplayServer.__init__):
- (TestReplayPerfTest.MockReplayServer.stop):
- (TestReplayPerfTest._add_file):
- (TestReplayPerfTest._setup_test):
- (TestReplayPerfTest.test_run_single):
- (TestReplayPerfTest.test_run_single.run_test):
- (TestReplayPerfTest.test_run_single_fails_without_webpagereplay):
- (TestReplayPerfTest.test_prepare_fails_when_wait_until_ready_fails):
- (TestReplayPerfTest.test_run_single_fails_when_output_has_error):
- (TestReplayPerfTest.test_run_single_fails_when_output_has_error.run_test):
- (TestReplayPerfTest.test_prepare):
- (TestReplayPerfTest.test_prepare.run_test):
- (TestReplayPerfTest.test_prepare_calls_run_single):
- (TestReplayPerfTest.test_prepare_calls_run_single.run_single):
- (TestPerfTestFactory.test_regular_test):
- (TestPerfTestFactory.test_inspector_test):
- (TestPerfTestFactory.test_page_loading_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner):
- (PerfTestsRunner._parse_args): Added --replay flag to enable replay tests.
- (PerfTestsRunner._collect_tests): Collect .replay files when replay tests are enabled.
- (PerfTestsRunner._collect_tests._is_test_file):
- (PerfTestsRunner.run): Exit early if one of calls to prepare() fails.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (create_runner):
- (run_test):
- (_tests_for_runner):
- (test_run_test_set):
- (test_run_test_set_kills_drt_per_run):
- (test_run_test_pause_before_testing):
- (test_run_test_set_for_parser_tests):
- (test_run_test_set_with_json_output):
- (test_run_test_set_with_json_source):
- (test_run_test_set_with_multiple_repositories):
- (test_run_with_upload_json):
- (test_upload_json):
- (test_upload_json.MockFileUploader.upload_single_text_file):
- (_add_file):
- (test_collect_tests):
- (test_collect_tests_with_multile_files):
- (test_collect_tests_with_multile_files.add_file):
- (test_collect_tests_with_skipped_list):
- (test_collect_tests_with_page_load_svg):
- (test_collect_tests_should_ignore_replay_tests_by_default):
- (test_collect_tests_with_replay_tests):
- (test_parse_args):
- * Scripts/webkitpy/thirdparty/__init__.py: Added the dependency for web-page-replay version 1.1.1.
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_webpagereplay):
-
-2012-05-31 Yaron Friedman <yfriedman@chromium.org>
-
- Support building the Android port of chromium with Ninja
- https://bugs.webkit.org/show_bug.cgi?id=87545
-
- Reviewed by Adam Barth.
-
- Ensures that shared libraries are looked up in a generator-agnostic
- way and that output is placed in the correct directory.
-
- Depends on http://codereview.chromium.org/10386188/
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-05-31 Ryosuke Niwa <rniwa@webkit.org>
-
- [Chromium] Chromium DRT should be able to load external resources
- https://bugs.webkit.org/show_bug.cgi?id=87893
-
- Reviewed by Dirk Pranke.
-
- Allow external resources to be loaded when the main frame's URL is also an external resource.
- This change is analogous to r118231 for Mac port.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (blockRequest):
- (isLocalhost):
- (hostIsUsedBySomeTestsToGenerateError):
- (WebViewHost::willSendRequest):
-
-2012-05-31 Anders Carlsson <andersca@apple.com>
-
- Build fixes.
-
- Disable the C++11 extensions warning.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
-
-2012-05-31 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] window.internals settings are not reset between tests
- https://bugs.webkit.org/show_bug.cgi?id=87783
-
- Reviewed by Mihai Parparita.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::done): Call resetAfterTest().
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::prepare): Renamed from "reset" for clarity.
- (WTR::InjectedBundlePage::resetAfterTest): Added a function that resets internals.
- This needs to be done after a tets, because the code assumes that there is an object
- with this name in global scope.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
-
-2012-05-31 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] EFL's DRT navigation_policy_decision implementation
- https://bugs.webkit.org/show_bug.cgi?id=85006
-
- Reviewed by Tor Arne Vestbø.
-
- Added navigation_policy_decision implementation for DumpRenderTreeView.
- Added LayoutTestController::setCustomPolicyDelegate implementation.
- Modified LayoutTestController::waitForPolicyDelegate.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/DumpRenderTreeEfl.h:
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (navigationTypeToString): aux function
- (onNavigationPolicyDecision): navigation_policy_decision implementation
- (drtViewAdd):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setCustomPolicyDelegate):
- (LayoutTestController::waitForPolicyDelegate):
-
-2012-05-31 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- [EFL][DRT] LayoutTestController does not implement clearApplicationCacheForOrigin
- https://bugs.webkit.org/show_bug.cgi?id=86195
-
- Reviewed by Gustavo Noronha Silva.
-
- Implement clearApplicationCacheForOrigin in EFL
- LayoutTestController.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::clearApplicationCacheForOrigin):
-
-2012-05-31 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Simplify QT_VERSION_CHECKS for Qt5 by introducing HAVE(QT5)
- https://bugs.webkit.org/show_bug.cgi?id=87955
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- * DumpRenderTree/qt/EventSenderQt.cpp:
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp:
- * DumpRenderTree/qt/main.cpp:
- * QtTestBrowser/cookiejar.cpp:
- * QtTestBrowser/launcherwindow.cpp:
- * WebKitTestRunner/InjectedBundle/qt/LayoutTestControllerQt.cpp:
- * qmake/mkspecs/features/default_post.prf:
-
-2012-05-31 Zoltan Horvath <zoltan@webkit.org>
-
- [Qt] Don't enforce the version of libpng for the config test when passing the option to the linker
-
- Rubber-stamped by Kenneth Rohde Christiansen.
-
- * qmake/config.tests/libpng/libpng.pro:
-
-2012-05-30 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Automatically install 64-bit linker for Android
- https://bugs.webkit.org/show_bug.cgi?id=79780
-
- Reviewed by Adam Barth.
-
- Change the update-webkit-chromium script to check whether the 64-bit
- linker needs to be installed as part of the update process. The actual
- code for doing these checks and "installing" it has been added to the
- webkitdirs.pm script.
-
- The linker itself is part of the third_party/aosp repository, which
- will be pulled in through the DEPS change.
-
- * Scripts/update-webkit-chromium:
- * Scripts/webkitdirs.pm:
- (chromiumInstall64BitAndroidLinkerIfNeeded):
- (chromiumReplaceAndroidLinkerIfNeeded):
-
-2012-05-30 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=87803
- Layout tests often fail trying to stat nonexistent logs
-
- Reviewed by Dirk Pranke.
-
- CrashReporter removes logs using a heuristic to conserve space. Wrap a
- try/catch block around accessing the logs as a precaution.
-
- * Scripts/webkitpy/common/system/crashlogs.py:
- (CrashLogs._find_newest_log_darwin):
-
-2012-05-30 Gavin Peters <gavinp@chromium.org>
-
- Add a LayoutTest for prerender remove after stop.
- https://bugs.webkit.org/show_bug.cgi?id=87860
-
- These very boring mocks in DumpRenderTree mean that the basic Prerendering API
- can be tested by LayoutTests now.
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebPrerenderingSupport.cpp: Added.
- (MockWebPrerenderingSupport::MockWebPrerenderingSupport):
- (MockWebPrerenderingSupport::~MockWebPrerenderingSupport):
- (MockWebPrerenderingSupport::add):
- (MockWebPrerenderingSupport::cancel):
- (MockWebPrerenderingSupport::abandon):
- * DumpRenderTree/chromium/MockWebPrerenderingSupport.h: Added.
- (MockWebPrerenderingSupport):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willAddPrerender):
- (WebViewHost::setWebWidget):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-05-30 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=87717
- Unresponsive WebProcesses can be mistaken for WebProcess crashes.
-
- Reviewed by Dirk Pranke.
-
- Change the error message from #CRASHED to #UNRESPONSIVE PROCESS
- If there isn't a crash log found for the process add a message saying
- the process was unresponsive.
-
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver._check_for_driver_crash):
- (WebKitDriver.run_test):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_check_for_driver_crash.assert_crash):
- (WebKitDriverTest):
- (WebKitDriverTest.test_check_for_driver_crash):
- * WebKitTestRunner/TestController.cpp:
- (WTR):
- (WTR::TestController::runTest):
-
-2012-05-30 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=87714
- Mac crash logs can take a really long time to be written out.
-
- Reviewed by Dirk Pranke.
-
- Make a second pass looking for crash logs after the tests have completed running.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (use_trac_links_in_results_html):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.repository_paths):
- (Port.look_for_new_crash_logs):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.look_for_new_crash_logs):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_get_crash_log):
- (test_look_for_new_crash_logs):
- (test_look_for_new_crash_logs.fake_time_cb):
-
-2012-05-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Fix 2.9 issues with c_str() type by using the wx fprintf wrapper.
-
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (LayoutWebViewEventHandler::OnAlertEvent):
- (LayoutWebViewEventHandler::OnConfirmEvent):
- (LayoutWebViewEventHandler):
- (LayoutWebViewEventHandler::OnPromptEvent):
- (LayoutWebViewEventHandler::OnConsoleMessageEvent):
- (LayoutWebViewEventHandler::OnReceivedTitleEvent):
-
-2012-05-30 Ojan Vafai <ojan@chromium.org>
-
- Only give lint errors for -expected.png png files that lack a checksum
- https://bugs.webkit.org/show_bug.cgi?id=87875
-
- Reviewed by Tony Chang.
-
- We have other pngs in the tree, e.g. for the inspector, that legitimately
- lack a checksum.
-
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.check):
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_check):
-
-2012-05-30 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: seems to leak temp dirs
- https://bugs.webkit.org/show_bug.cgi?id=87795
-
- Reviewed by Ojan Vafai.
-
- There appears to be a bug where the chromium bots are creating
- temporary directories and not cleaning them up that started
- after the switch to WebKitDriver. It's possible that __del__
- wasn't getting called in a timely manner (or at all), and it's
- generally bad style to rely on __del__ being called, so this
- code changes things so that we create a temp dir in
- driver.start() and remove it in driver.stop(). We could be
- paranoid and leave the __del__ code in, but there doesn't seem
- to be much advantage to it. If there are bugs that result in
- drivers being started but not stopped, we have other problems.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.__init__):
- (MockFileSystem._mktemp):
- (MockFileSystem.mkdtemp):
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitDriver.__init__):
- (WebKitDriver._start):
- (WebKitDriver.stop):
- * Scripts/webkitpy/layout_tests/port/webkit_unittest.py:
- (WebKitDriverTest.test_check_for_driver_crash):
- (WebKitDriverTest):
- (WebKitDriverTest.test_creating_a_port_does_not_write_to_the_filesystem):
- (WebKitDriverTest.test_stop_cleans_up_properly):
-
-2012-05-30 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DRT should print the number of MessagePorts for new each new intent
- https://bugs.webkit.org/show_bug.cgi?id=86841
-
- Reviewed by Adam Barth.
-
- Print the number of MessagePorts for each new intent in EFL's DRT.
- This output is expected by several Web Intents test cases.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameIntentNew):
-
-2012-05-30 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] Unreviewed build fix after removal of setJavaScriptProfilingEnabled.
-
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-30 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Ewk_Intent_Request's postResult/postFailure should take serialized script values in argument
- https://bugs.webkit.org/show_bug.cgi?id=87829
-
- Reviewed by Adam Barth.
-
- EFL's LayoutTestController now makes uses of the new helper method in
- DumpRenderTreeSupportEfl in order to send the intent response. This is
- now needed because the Ewk_Intent_Request postResult / postFailure
- methods were made private.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::sendWebIntentResponse):
-
-2012-05-30 Xueqing Huang <huangxueqing@baidu.com>
-
- eventSender.beginDragWithFiles should be implemented in Windows, which blocked drag and drop related tests.
- https://bugs.webkit.org/show_bug.cgi?id=86296
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/win/DRTDataObject.cpp: Added.
- (cfHDropFormat):
- (cfFileNameWFormat):
- (cfUrlWFormat):
- (WCEnumFormatEtc):
- (WCEnumFormatEtc::WCEnumFormatEtc):
- (WCEnumFormatEtc::QueryInterface):
- (WCEnumFormatEtc::AddRef):
- (WCEnumFormatEtc::Release):
- (WCEnumFormatEtc::Next):
- (WCEnumFormatEtc::Skip):
- (WCEnumFormatEtc::Reset):
- (WCEnumFormatEtc::Clone):
- (DRTDataObject::createInstance):
- (DRTDataObject::DRTDataObject):
- (DRTDataObject::~DRTDataObject):
- (DRTDataObject::QueryInterface):
- (DRTDataObject::AddRef):
- (DRTDataObject::Release):
- (DRTDataObject::GetData):
- (DRTDataObject::GetDataHere):
- (DRTDataObject::QueryGetData):
- (DRTDataObject::GetCanonicalFormatEtc):
- (DRTDataObject::SetData):
- (DRTDataObject::CopyMedium):
- (DRTDataObject::EnumFormatEtc):
- (DRTDataObject::DAdvise):
- (DRTDataObject::DUnadvise):
- (DRTDataObject::EnumDAdvise):
- (DRTDataObject::clearData):
- * DumpRenderTree/win/DRTDataObject.h: Added.
- (DRTDataObject):
- * DumpRenderTree/win/DRTDropSource.cpp: Added.
- (DRTDropSource::DRTDropSource):
- (DRTDropSource::~DRTDropSource):
- (DRTDropSource::QueryInterface):
- (DRTDropSource::AddRef):
- (DRTDropSource::Release):
- (DRTDropSource::createInstance):
- (DRTDropSource::QueryContinueDrag):
- (DRTDropSource::GiveFeedback):
- * DumpRenderTree/win/DRTDropSource.h: Added.
- (DRTDropSource):
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/EventSender.cpp:
- (beginDragWithFilesCallback):
-
-2012-05-30 Marcelo Lira <marcelo.lira@openbossa.org>
-
- WebKit2: Implement layoutTestController.setPluginsEnabled() in WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=58593
-
- Adds the ability to change the pluginsEnabled flag in WebCore::Settings
- to WebKitTestRunner's LayoutTestController. The flag is modified via the
- public C API of the WebProcess.
-
- Reviewed by Darin Adler.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setPluginsEnabled): Just calls the
- WKBundleSetPluginsEnabled function in the public C API of WebProcess.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2012-05-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] http/tests/navigation/new-window-redirect-history.html does not pass
- https://bugs.webkit.org/show_bug.cgi?id=87848
-
- Reviewed by Csaba Osztrogonác.
-
- The reason was that DumpRenderTreeChrome::extraViews() returned copy of the vector
- and dumpBackForwardListForWebViews() used iterators belonging actually to different vectors
- (browser->extraViews().begin() and browser->extraViews().end()) as if they had belonged to the same vector.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::extraViews):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] EFL's DRT needs "postProgressFinishedNotification" message
- https://bugs.webkit.org/show_bug.cgi?id=87833
-
- Reviewed by Tor Arne Vestbø.
-
- Print "postProgressFinishedNotification" message if frame load finished
- to unskip http/tests/loading/progress-finished-callback.html.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onFrameLoadFinished):
-
-2012-05-30 Mariusz Grzegorczyk <mariusz.g@samsung.com>, Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][WK2] Fix WebKit2-EFL build
- https://bugs.webkit.org/show_bug.cgi?id=83693
-
- Reviewed by Carlos Garcia Campos.
-
- * CMakeLists.txt: Guard Webkit1 related codes with ENABLE_WEBKIT.
-
-2012-05-29 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt] Modified ORWT and NRWT to check for test expectations in platform/qt-5.0-wk1 too
- (They only used to check for Skipped in platform/qt-5.0-wk1)
- https://bugs.webkit.org/show_bug.cgi?id=87376
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/old-run-webkit-tests:
- (buildPlatformResultHierarchy):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.baseline_search_path):
-
-2012-05-29 Ojan Vafai <ojan@chromium.org>
-
- Add a linter error for pngs that lack an embedded checksum
- https://bugs.webkit.org/show_bug.cgi?id=87793
-
- Reviewed by Dirk Pranke.
-
- * Scripts/read-checksum-from-png:
- * Scripts/webkitpy/common/read_checksum_from_png.py: Renamed from Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png.py.
- (read_checksum):
- * Scripts/webkitpy/common/read_checksum_from_png_unittest.py: Renamed from Tools/Scripts/webkitpy/layout_tests/read_checksum_from_png_unittest.py.
- (ReadChecksumFromPngTest):
- (ReadChecksumFromPngTest.test_read_checksum):
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/style/checkers/png.py:
- (PNGChecker.check):
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_check):
-
-2012-05-29 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=87720
- WebProcess is often killed due to being unresponsive on the bots
-
- Reviewed by Alexey Proskuryakov.
-
- Blind attempt to improve flakiness on the bots by reducing the number
- of crashes due to an unresponsive process. This helped on my personal machine
- under stress conditions. I don't have enough cores to hit the problem
- under normal conditions.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR):
-
-2012-05-29 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: rename 'rm' to 'delete' in rebaseline scm output
- https://bugs.webkit.org/show_bug.cgi?id=87779
-
- Reviewed by Eric Seidel.
-
- Update output to match the names in scm.py as per
- https://bugs.webkit.org/show_bug.cgi?id=87451#c26 .
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_test_and_print_scm_changes):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaselineall):
-
-2012-05-29 Stephanie Lewis <slewis@apple.com>
-
- https://bugs.webkit.org/show_bug.cgi?id=87711
-
- Reviewed by Jessie Berlin.
-
- Remove Snowleopard testers so the hardware can be repurposed. The lion bots
- are better maintained.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-05-29 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch optimize-baselines should add/delete files in batches from the vcs
- https://bugs.webkit.org/show_bug.cgi?id=87538
-
- Reviewed by Ojan Vafai.
-
- Invoking git and svn on one file at a time is kinda slow. We
- should batch the add and rm operations together.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._move_baselines):
-
-2012-05-29 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should rebaseline baselines in parallel
- https://bugs.webkit.org/show_bug.cgi?id=87451
-
- Reviewed by Ojan Vafai.
-
- This modifies garden-o-matic so that we will fetch all
- of the baselines in parallel from the bots, and then
- optimize the baselines serially (since that should be fairly
- quick and we get into trouble if we optimize in parallel due
- to concurrent access to the source control system).
-
- This change adds a flag to webkit-patch rebaseline-test (--print-scm-changes)
- so that the files that need to be modified in the SCM are returned to
- garden-o-matic rather than actually added or removed. This is done so that
- we can run multiple rebaseline-tests in parallel (we can't modify the SCM
- concurrently). In order to safely return the files (as a JSON dict) I
- needed to shift all of the logging in rebaseline-test to use the logging
- module (and hence log to stderr).
-
- I also had to stub out a line in chromium.py that would get confused if
- the skia overrides file didn't exist in a mock checkout.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.popen):
- (Executive):
- (Executive.run_in_parallel):
- (_run_command_thunk):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.run_in_parallel):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_run_in_parallel):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._expectations_file_contents):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand.__init__):
- (RebaselineTest.__init__):
- (RebaselineTest._copy_existing_baseline):
- (RebaselineTest._save_baseline):
- (RebaselineTest):
- (RebaselineTest._add_to_scm):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest.execute):
- (RebaselineExpectations._rebaseline_port):
- (RebaselineExpectations.execute):
- (Rebaseline._builder_to_pull_from):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_test):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (test_rebaseline_expectations):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler._rebaseline_commands):
- (GardeningHTTPRequestHandler):
- (GardeningHTTPRequestHandler._files_to_add):
- (GardeningHTTPRequestHandler._optimize_baselines):
- (GardeningHTTPRequestHandler.rebaselineall):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest._post_to_path):
- (GardeningServerTest.test_rebaselineall):
- (GardeningServerTest.test_rebaselineall.run_command):
-
-2012-05-29 Benjamin Poulain <bpoulain@apple.com>
-
- Fix the type of dispatch_time() offset
-
- Rubber-stamped by Joseph Pecoraro.
-
- In r118631, I erroneously used the type NSTimeInterval for the delta of dispatch_time().
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
-
-2012-05-29 Arvid Nilsson <anilsson@rim.com>
-
- 2012-05-29 Arvid Nilsson <anilsson@rim.com>
-
- [BlackBerry] OpenGL content is not rendered on simulator
- https://bugs.webkit.org/show_bug.cgi?id=87721
-
- Reviewed by George Staikos.
-
- Fixed by enabling GLES2 support in simulator builds.
-
- To experiment with building without OpenGL support, you can set the
- DISABLE_GLES2 environment variable to a non-empty string and rebuild.
-
- PR #150695
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments):
-
-2012-05-29 David Barr <davidbarr@chromium.org>
-
- Introduce ENABLE_CSS_IMAGE_RESOLUTION compile flag
- https://bugs.webkit.org/show_bug.cgi?id=87685
-
- Reviewed by Eric Seidel.
-
- Add a configuration option for CSS image-resolution support, disabling it by default.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-05-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Don't add cxx-flags to QMAKE_CFLAGS
-
- Prevents warnings such as: "command line option ‘-Wno-c++0x-compat’ is
- valid for C++/ObjC++ but not for C [enabled by default]"
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-05-29 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Sync up favicon-implementation with WebView url changes in r118158
-
- https://bugs.webkit.org/show_bug.cgi?id=87133
-
- We now base64-encode the page url in the image-provider url, so that any
- normalization done by QUrl will not mess up the page-url. The logic of
- creating and parsing the provider-url has been moved into the image
- provider, to keep it in one place.
-
- We were also releasing icons (even ones we hadn't retained), which we can't
- do since we don't know when the icon url is no longer in use.
-
- Reviewed-by Simon Hausmann.
-
- * MiniBrowser/qt/icons/favicon.png:
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-05-29 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] Refactoring. Get rid of unnecessary singleCharacterString() function
- https://bugs.webkit.org/show_bug.cgi?id=87654
-
- Reviewed by Csaba Osztrogonác.
-
- Event sender provides strings for all the key events.
- Also KeyEventInfo constructor parameters order was changed to simplify the case when
- a key event has empty string.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (KeyEventInfo::KeyEventInfo):
- (keyPadNameFromJSValue):
- (keyNameFromJSValue):
-
-2012-05-23 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Cancel potential url-edit when going back/forward
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-05-29 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Compilation warning in DumpRenderTreeView.cpp
- https://bugs.webkit.org/show_bug.cgi?id=87636
-
- Reviewed by Filip Pizlo.
-
- Fix compilation error in DumpRenderTreeView.cpp due to wrong format
- specifier in printf. Also fix the return type for
- onExceededApplicationCacheQuota callback.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (onExceededApplicationCacheQuota):
-
-2012-05-29 Hironori Bono <hbono@chromium.org>
-
- Adding Hironori Bono to committers.py.
- https://bugs.webkit.org/show_bug.cgi?id=87697
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-28 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
-
- [BlackBerry] http authenticate dialog popup only once no matter authentication pass or fail
- https://bugs.webkit.org/show_bug.cgi?id=80135
-
- Reviewed by Rob Buis.
-
- Implemented interface function didReceiveAuthenticationChallenge in class
- DumpRenderTree.
-
- Resubmit the patch reverted by r115104 after the digest infinite loop
- issue for BlackBerry porting get identified and fixed.
-
- Internally reviewed by Joe Mason <jmason@rim.com>
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (drtCredentialDescription):
- (BlackBerry::WebKit::DumpRenderTree::didReceiveAuthenticationChallenge):
- (WebKit):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (WebCore):
- (DumpRenderTree):
-
-2012-05-25 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- WebKitTestRunner needs to support layoutTestController.setJavaScriptProfilingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=42328
-
- Reviewed by Eric Seidel.
-
- Removed unneeded setJavaScriptProfilingEnabled function from DRT after its
- move to windows.internals.settings.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- (DRTDevToolsAgent):
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- * DumpRenderTree/chromium/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/qt/LayoutTestControllerQt.cpp:
- * DumpRenderTree/qt/LayoutTestControllerQt.h:
- (LayoutTestController):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
- (LayoutTestController):
-
-2012-05-28 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Move allowRoundingHacks to Internals interface
- https://bugs.webkit.org/show_bug.cgi?id=87328
-
- Reviewed by Hajime Morita.
-
- Remove allowRoundingHacks functions, because it is able to work in the
- cross-port way through the Internals interface.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
-
-2012-05-28 Luke Macpherson <macpherson@chromium.org>
-
- Fix mac build with older XCode by defining NSEC_PER_MSEC.
- https://bugs.webkit.org/show_bug.cgi?id=87616
-
- Reviewed by Hajime Morita.
-
- The following patch introduced the use of NSEC_PER_MSEC which is not defined for older XCode versions.
- http://trac.webkit.org/changeset/118631/trunk/Tools/DumpRenderTree/mac/FrameLoadDelegate.mm
- Patch just adds a #ifndef / #define check.
-
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
-
-2012-05-27 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Enable blob support for the EFL port
- https://bugs.webkit.org/show_bug.cgi?id=85363
-
- Reviewed by Hajime Morita.
-
- Enable Blob support by default for the EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-27 Benjamin Poulain <bpoulain@apple.com>
-
- When pages are loaded from AppCache with DeferredLoading, willSendRequest() is never called
- https://bugs.webkit.org/show_bug.cgi?id=87582
-
- Reviewed by Darin Adler.
-
- Extend DumpRenderTree to support loading the main resource deferred with a delay. This makes it
- possible to test pages in a similar way as they are loaded in Browsers.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (LayoutTestController::LayoutTestController):
- (setUseDeferredFrameLoadingCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController::useDeferredFrameLoading):
- (LayoutTestController::setUseDeferredFrameLoading):
- (LayoutTestController):
- * DumpRenderTree/mac/FrameLoadDelegate.mm:
- (-[FrameLoadDelegate webView:didStartProvisionalLoadForFrame:]):
-
-2012-05-27 David Barton <dbarton@mathscribe.com>
-
- [watchlist] Improve MathML rule
- https://bugs.webkit.org/show_bug.cgi?id=87592
-
- Reviewed by Adam Barth.
-
- The old rule "filename": r".*mathml" works fine because "filename" is a prefix match,
- but if this changed the rule would be slow. We protect against this, clarify the rule,
- and make it more similar to existing rules.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-05-27 David Barton <dbarton@mathscribe.com>
-
- [watchlist] Add myself & a rule for MathML
- https://bugs.webkit.org/show_bug.cgi?id=87586
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-05-26 David Kilzer <ddkilzer@apple.com>
-
- Use xcrun to find path to nm for Mac port
- <http://webkit.org/b/87588>
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.nm_command): Add. Tries to find a path for the nm
- command using xcrun. Falls back to returning 'nm'.
- * Scripts/webkitpy/layout_tests/port/webkit.py:
- (WebKitPort.nm_command): Add. Returns 'nm'.
- (WebKitPort._webcore_symbols_string): Call self.nm_command().
-
-2012-05-25 Lynn Neir <lynn.neir@skype.net>
-
- Added windows implementation in DRT for TextInputController, https://bugs.webkit.org/show_bug.cgi?id=32021
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/FrameLoadDelegate.cpp:
- (FrameLoadDelegate::FrameLoadDelegate):
- (FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld):
- * DumpRenderTree/win/FrameLoadDelegate.h:
- (FrameLoadDelegate):
- * DumpRenderTree/win/TextInputController.cpp: Added.
- (setMarkedTextCallback):
- (hasMarkedTextCallback):
- (unmarkTextCallback):
- (markedRangeCallback):
- (insertTextCallback):
- (firstRectForCharacterRangeCallback):
- (selectedRangeCallback):
- (TextInputController::makeWindowObject):
- (TextInputController::getJSClass):
- (TextInputController::staticValues):
- (TextInputController::staticFunctions):
- * DumpRenderTree/win/TextInputController.h: Added.
- (TextInputController):
- * DumpRenderTree/win/TextInputControllerWin.cpp: Added.
- (TextInputController::setMarkedText):
- (TextInputController::hasMarkedText):
- (TextInputController::unmarkText):
- (TextInputController::markedRange):
- (TextInputController::insertText):
- (TextInputController::firstRectForCharacterRange):
- (TextInputController::selectedRange):
-
-2012-05-25 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: change scm.add(), scm.delete() to accept multiple paths
- https://bugs.webkit.org/show_bug.cgi?id=87528
-
- Reviewed by Ojan Vafai.
-
- launching git or svn for individual files can be slow; this
- change will hand multiple paths at once to git and svn so they
- can be added in a batch.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.add_list):
- (Git.delete_list):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.add):
- (SCM):
- (SCM.add_list):
- (SCM.delete):
- (SCM.delete_list):
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.add):
- (MockSCM):
- (MockSCM.add_list):
- (MockSCM.delete):
- (MockSCM.delete_list):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (_shared_test_exists):
- (_shared_test_added_files):
- (_test_delete_list):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.add_list):
- (SVN.delete_list):
-
-2012-05-25 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [NRWT] Add unit testing for perf tests on locked shards
- https://bugs.webkit.org/show_bug.cgi?id=87489
-
- Reviewed by Dirk Pranke.
-
- Adding utests that makes sure that perf tests are running in locked
- shards and by passing --no-http won't break NRWT (r118421).
-
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ShardingTests):
- (ShardingTests.test_shard_by_dir):
- (ShardingTests.test_shard_every_file):
- (ShardingTests.test_shard_in_two):
- (ShardingTests.test_multiple_locked_shards):
- (LockCheckingManager):
- (LockCheckingManager.__init__):
- (LockCheckingManager.handle_finished_list):
- (ManagerTest.test_http_locking):
- (ManagerTest):
- (ManagerTest.test_perf_locking):
- * Scripts/webkitpy/layout_tests/port/test.py:
-
-2012-05-25 Jessie Berlin <jberlin@apple.com>
-
- [Win] fast/events/keydown-leftright-keys.html failing since introduction in r118001
- https://bugs.webkit.org/show_bug.cgi?id=87511
-
- Reviewed by Alexey Proskuryakov.
-
- Update the Windows implementation of keyDown to match the Mac one changed in r118001.
-
- * DumpRenderTree/win/EventSender.cpp:
- (keyDownCallback):
-
-2012-05-25 Ken Buchanan <kenrb@chromium.org>
-
- Adding Ken Buchanan to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=87443
-
- Unreviewed.
-
- Adding self to committers.py as a Committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-25 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Buildfix for newer Qt5
- https://bugs.webkit.org/show_bug.cgi?id=87257
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/MiniBrowserApplication.h: QtDeclarative -> QtQml renaming.
-
-2012-05-25 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed fix after r118484.
-
- Enable CSS_EXCLUSIONS and CSS_REGIONS.
- They were enabled uncoditinally before r118484.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-05-24 Tim Horton <timothy_horton@apple.com>
-
- Add feature defines for web-facing parts of CSS Regions and Exclusions
- https://bugs.webkit.org/show_bug.cgi?id=87442
- <rdar://problem/10887709>
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-24 Hironori Bono <hbono@chromium.org>
-
- Enable grammar checking on Chromium when we paste text (Take 2)
- https://bugs.webkit.org/show_bug.cgi?id=74393
-
- Reviewed by Ryosuke Niwa.
-
- This change enables grammar checking on Chromium and implements a mock grammar
- checker to fix a failing test.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockGrammarCheck.cpp: Added.
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/MockGrammarCheck.h: Added.
- (WebKit):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck): Call MockGrammarCheck::checkGrammarOfString to check grammatical errors.
-
-2012-05-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] [DRT] Add support for WebKitOfflineWebApplicationCacheEnabled preference
- https://bugs.webkit.org/show_bug.cgi?id=86842
-
- Reviewed by Antonio Gomes.
-
- Add support for overriding the application cache support preference
- through EFL's LayoutTestController.
-
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::overridePreference):
-
-2012-05-24 Sudarsana Nagineni <sudarsana.nagineni@linux.intel.com>
-
- [EFL] Remove unnecessary extra call to set developer extras setting on the test startup
- https://bugs.webkit.org/show_bug.cgi?id=85209
-
- Reviewed by Antonio Gomes.
-
- Set developer extras setting called twice on the test startup. Hence, removing
- an unnecessary extra call which set wrong value.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-05-24 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should not fetch from debug bots if it also knows about the release bots
- https://bugs.webkit.org/show_bug.cgi?id=86916
-
- Reviewed by Adam Barth.
-
- Note that if release and debug are failing differently, debug
- will be ignored ...
-
- Note: also change the use of a fake port name from
- "mock-port-name" to "test-mac-leopard" to make it more friendly
- to the port factory ("mock" actually is a real port).
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler._builders_to_fetch_from):
- (GardeningHTTPRequestHandler.rebaselineall):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaselineall):
- (GardeningServerTest.test_rebaseline_new_port):
-
-2012-05-24 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix baseline search path for official chrome builders
- https://bugs.webkit.org/show_bug.cgi?id=87432
-
- Reviewed by Tony Chang.
-
- The official chrome builders need to use the win7 and SL
- baseline paths, not the XP and Leopard paths. Linux is correct.
-
- * Scripts/webkitpy/layout_tests/port/google_chrome.py:
- (GoogleChromeMacPort.determine_full_port_name):
- (GoogleChromeWinPort.determine_full_port_name):
- * Scripts/webkitpy/layout_tests/port/google_chrome_unittest.py:
- (TestGoogleChromePort._verify_baseline_search_path_startswith):
- (TestGoogleChromePort.test_get_google_chrome_port):
-
-2012-05-24 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [NRWT] REGRESSION(r116021): Assertion when running with --no-http
- https://bugs.webkit.org/show_bug.cgi?id=86800
-
- Reviewed by Dirk Pranke.
-
- Don't launch a HTTP server with lock based only on the existence of
- locked shards since we now run perf on locked shards too.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
-
-2012-05-24 Jochen Eisinger <jochen@chromium.org>
-
- Add --driver-name option to run_webkit_tests.py to allow for selecting alternative DRT binaries
- https://bugs.webkit.org/show_bug.cgi?id=87128
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.driver_name):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_driver_name_option):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-05-24 John Mellor <johnme@chromium.org>
-
- Font Boosting: Add compile flag and runtime setting
- https://bugs.webkit.org/show_bug.cgi?id=87394
-
- Reviewed by Adam Barth.
-
- Add ENABLE_FONT_BOOSTING.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-05-24 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] [DRT] keyboard-related tests do not pass
- https://bugs.webkit.org/show_bug.cgi?id=85369
-
- Reviewed by Gustavo Noronha Silva.
-
- Add SHIFT modifier for capital letters as VK_
- codes do not distinguish between lows and caps and also to be consistent
- with other ports which send caps as lowercase letters with the shift key down.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyNameFromJSValue):
-
-2012-05-24 Alexey Proskuryakov <ap@apple.com>
-
- [WK2] Let the client give local files universal access on a case by case basis
- https://bugs.webkit.org/show_bug.cgi?id=87174
- <rdar://problem/11024330>
-
- Reviewed by Maciej Stachowiak.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: (WTR::InjectedBundlePage::InjectedBundlePage):
- Added initialization of a new structure member to prevent build failure.
-
-2012-05-24 Raphael Kubo da Costa <rakuco@webkit.org>
-
- [EFL] Modify keycode conversion functions to return keycodes with location information after r118001.
- https://bugs.webkit.org/show_bug.cgi?id=87203
-
- Reviewed by Andreas Kling.
-
- Add the required changes to make
- fast/events/keydown-leftright-keys.html pass after r118001.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (keyNameFromJSValue): Translate "{left,right}{Shift,Alt,Control}"
- into the proper X11 keysym definitions.
-
-2012-05-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r118352.
- http://trac.webkit.org/changeset/118352
- https://bugs.webkit.org/show_bug.cgi?id=87390
-
- Caused 6 editing/spelling tests crash/fail on chromium in
- debug. (Requested by vsevik on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockGrammarCheck.cpp: Removed.
- * DumpRenderTree/chromium/MockGrammarCheck.h: Removed.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck):
-
-2012-05-24 Peter Beverloo <peter@chromium.org>
-
- Add John Mellor as a contributor
- https://bugs.webkit.org/show_bug.cgi?id=87389
-
- Reviewed by Kenneth Rohde Christiansen.
-
- John will be working on Font Boosting and is very involved with various
- web-facing subjects of Chrome for Android, such as viewport.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-24 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][DRT] LayoutTestController's setCacheModel() implementation
- https://bugs.webkit.org/show_bug.cgi?id=86840
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues): Reset dead decoded data deletion interval.
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::setCacheModel): Implementation added.
-
-2012-05-24 Hironori Bono <hbono@chromium.org>
-
- Enable grammar checking on Chromium when we paste text.
- https://bugs.webkit.org/show_bug.cgi?id=74393
-
- Reviewed by Hajime Morita.
-
- This change enables grammar checking on Chromium and implements a mock grammar
- checker to fix a failing test.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockGrammarCheck.cpp: Added.
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/MockGrammarCheck.h: Added.
- (WebKit):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck): Call MockGrammarCheck::checkGrammarOfString to check grammatical errors.
-
-2012-05-24 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed fix, add ENABLE_CSS3_FLEXBOX after r118304.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-05-24 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's LayoutTestController needs to implement sendWebIntentResponse
- https://bugs.webkit.org/show_bug.cgi?id=86867
-
- Reviewed by Adam Barth.
-
- Add implementation for sendWebIntentResponse() in EFL's
- LayoutTestController and add empty implementation for other ports.
-
- * DumpRenderTree/LayoutTestController.cpp:
- (sendWebIntentResponseCallback):
- (LayoutTestController::staticFunctions):
- * DumpRenderTree/LayoutTestController.h:
- (LayoutTestController):
- * DumpRenderTree/blackberry/LayoutTestControllerBlackBerry.cpp:
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::currentIntentRequest):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- (DumpRenderTreeChrome::onFrameIntentNew):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/efl/LayoutTestControllerEfl.cpp:
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/gtk/LayoutTestControllerGtk.cpp:
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/mac/LayoutTestControllerMac.mm:
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/win/LayoutTestControllerWin.cpp:
- (LayoutTestController::sendWebIntentResponse):
- * DumpRenderTree/wx/LayoutTestControllerWx.cpp:
- (LayoutTestController::sendWebIntentResponse):
-
-2012-05-24 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] The EFL port has no support for title directionality
- https://bugs.webkit.org/show_bug.cgi?id=86462
-
- Reviewed by Gustavo Noronha Silva.
-
- Update "title,changed" signal handlers in DRT and EWebLauncher to
- reflect the change from const char* to Ewk_Text_With_Direction* type
- for the title.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::onTitleChanged):
- * EWebLauncher/main.c:
- (title_set):
- (on_title_changed):
- (on_key_down):
-
-2012-05-23 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Change EFL debug build name with more detail one
- https://bugs.webkit.org/show_bug.cgi?id=87254
-
- Reviewed by Ryosuke Niwa.
-
- EFL Linux Debug buildbot name needs to be consistent with other EFL buildbot name.
- In addition, remove efl-linux-debug triggerable since nobody uses it.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-05-23 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Fix WebCore library path and rebaseline result
- https://bugs.webkit.org/show_bug.cgi?id=86355
-
- Reviewed by Dirk Pranke.
-
- Currently EFL DRT uses wrong WebCore library path when running DRT.
- Therefore, this patch adjusted the path correctly.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._path_to_webcore_library):
-
-2012-05-23 Ojan Vafai <ojan@chromium.org>
-
- add back the ability to disable flexbox
- https://bugs.webkit.org/show_bug.cgi?id=87147
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-23 Tony Chang <tony@chromium.org>
-
- Remove the Chromium Grid Layout bot from the waterfall
- https://bugs.webkit.org/show_bug.cgi?id=87311
-
- Reviewed by Ryosuke Niwa.
-
- I removed the compiler define in r117613, so we don't need a separate
- bot to compile/test this code.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-05-23 Ian Vollick <vollick@chromium.org>
-
- Add vollick to list of contributors.
- https://bugs.webkit.org/show_bug.cgi?id=87305
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-23 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Fix chromium_android_unittest
- https://bugs.webkit.org/show_bug.cgi?id=87196
-
- Reviewed by Tony Chang.
-
- Update unit tests after ChromiumAndroidPort supported apk based
- DumpRenderTree.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- (ChromiumAndroidPortTest.mock_run_command_fn): Moved out from test_get_last_stacktrace so that other tests can use it as a common command line handler.
- (ChromiumAndroidPortTest.test_get_last_stacktrace):
- (ChromiumAndroidPortTest.test_get_crash_log): Added to test our overridden _get_crash_log()
- (ChromiumAndroidDriverTest):
- (ChromiumAndroidDriverTest.setUp):
- (ChromiumAndroidDriverTest.test_cmd_line): Added to test our overridden cmd_line()
- (ChromiumAndroidDriverTest.test_write_command_and_read_line): Added test of unexpected EOF (indicating crash on Android)
-
-2012-05-23 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- [watchlist] Add myself and create a watch rule to catch Attribute related patches
- https://bugs.webkit.org/show_bug.cgi?id=87303
-
- Reviewed by Alexis Menard.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-05-23 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should not fetch from debug bots if it also knows about the release bots
- https://bugs.webkit.org/show_bug.cgi?id=86916
-
- Reviewed by Adam Barth.
-
- This change pushes all of the logic for rebaselining a cluster
- of failures (a list of tests failing a list of suffixes on a
- list of bots) onto the server, so there is a single call from
- the web page; we will then be able to optimize the performance
- of the rebaselining better.
-
- Also remove the 'optimizebaseline' entry point on garden-o-matic
- (and the client-side call) since we don't need it any more.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaselineall):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
-
-2012-05-21 Ryosuke Niwa <rniwa@webkit.org>
-
- Mac DRT should be able to load external URLs for replay performance tests
- https://bugs.webkit.org/show_bug.cgi?id=86191
-
- Reviewed by Alexey Proskuryakov.
-
- Let external URL requests go through if the test file is not a local file or hosted at localhost.
- e.g. "DumpRenderTree http://webkit.org/" as supposed to "DumpRenderTree test.html" or
- "DumpRenderTree http://localhost:8000/".
-
- * DumpRenderTree/mac/ResourceLoadDelegate.mm:
- (isLocalhost):
- (hostIsUsedBySomeTestsToGenerateError):
- (-[ResourceLoadDelegate webView:resource:willSendRequest:redirectResponse:fromDataSource:]):
-
-2012-05-23 Malcolm MacLeod <malcolm.macleod@tshwanedje.com>
-
- [wx] In wxWebKit release builds on MSW, keep release settings but also build the
- debug symbols for easier debugging.
- https://bugs.webkit.org/show_bug.cgi?id=87151
-
- Reviewed by Kevin Ollivier.
-
- * waf/build/settings.py:
- (common_configure):
-
-2012-05-23 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Move myself to reviewers.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-05-23 Dongwoo Im <dw.im@samsung.com>
-
- [EFL] Implements the registerProtocolHandler method and option.
- https://bugs.webkit.org/show_bug.cgi?id=73638
-
- Reviewed by Andreas Kling.
-
- * Scripts/webkitperl/FeatureList.pm: Turn on the ENABLE_REGISTER_PROTOCOL_HANDLER option as default on EFL port.
-
-2012-05-23 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] EventSender should properly handle (left|right)(control|shift|alt) after r118001
- https://bugs.webkit.org/show_bug.cgi?id=87221
-
- Reviewed by Martin Robinson.
-
- Convert leftAlt, leftControl, leftShift, rightAlt, rightControl and
- rightShift key names into proper GDK key symbols.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (createKeyPressEvent):
-
-2012-04-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com>
-
- [Qt] Make the web view's url property follow the active url
-
- https://bugs.webkit.org/show_bug.cgi?id=77554
-
- Update the location bar in the minibrowser to behave
- a bit more like normal browsers in terms of when the url will change
- and how active focus is handled.
-
- Reviewed by Simon Hausmann.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-05-23 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Remove references to $$QT_SOURCE_TREE
-
- With a modularized Qt, it's ambigious. What we really want is qtbase,
- which qtcore is a proxy for (we assume it will always live in qtbase).
-
- Reviewed by Tor Arne Vestbø.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2012-05-23 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Fix qmake conditional for c++-11 compat warnings
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-05-23 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DRT does not print didFailProvisionalLoadWithError messages
- https://bugs.webkit.org/show_bug.cgi?id=85956
-
- Reviewed by Gustavo Noronha Silva.
-
- Catch new "load,provisional,failed" signal and print
- didFailProvisionalLoadWithError messages when LayoutTestController's
- dumpFrameLoadCallbacks() returns true. Also make sure the
- didFailLoadWithError message is not printed in case of provisional
- load failure.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::onFrameCreated):
- (DumpRenderTreeChrome::onFrameProvisionalLoadFailed):
- (DumpRenderTreeChrome::onFrameLoadError):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2012-05-23 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] EFL's DRT needs to call Settings::setValidationMessageTimerMagnification(-1)
- https://bugs.webkit.org/show_bug.cgi?id=86366
-
- Reviewed by Antonio Gomes.
-
- Call Settings::setValidationMessageTimerMagnification(-1) between the tests.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-05-22 Darin Adler <darin@apple.com>
-
- * Scripts/webkitpy/thirdparty/mod_pywebsocket: Added property svn:ignore.
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake: Added property svn:ignore.
-
-2012-05-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Run DumpRenderTree as an apk (C++ and gyp part)
- https://bugs.webkit.org/show_bug.cgi?id=86922
-
- Because we have new platformInit() in TestShellAndroid.cpp, and
- we still need the timeout part in TestShellLinux.cpp, TestShellLinux.cpp
- is split into TestShellPosix.cpp and TestShellX11.cpp.
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Added. Handles command lines to redirect stdin/stdout/stderr.
- (platformInit):
- * DumpRenderTree/chromium/TestShellGtk.cpp: Removed. Merged into TestShellX11.cpp
- * DumpRenderTree/chromium/TestShellLinux.cpp: Removed. Split into TestShellPosix.cpp and TestShellX11.cpp.
- * DumpRenderTree/chromium/TestShellPosix.cpp: Split from TestShellLinux.cpp, containing the timeout handling part, compiled when os_posix=1 (excluding mac).
- (AlarmHandler):
- (TestShell::waitTestFinished):
- * DumpRenderTree/chromium/TestShellX11.cpp: Split from TestShellLinux.cpp, containing the fontconfig part, compiled when use_x11=1
- (openStartupDialog): from TestShellGtk.cpp
- (checkLayoutTestSystemDependencies): from TestShellGtk.cpp.
- (setupFontconfig):
- (platformInit):
-
-2012-05-22 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Implement touch event
- https://bugs.webkit.org/show_bug.cgi?id=86720
-
- Reviewed by Hajime Morita.
-
- Currently EFL DRT doesn't support touch event.
- Therefore, this patch enabled it and implemented some eventSender function callbacks.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (TouchEventInfo::TouchEventInfo):
- (TouchEventInfo):
- (touchPointList):
- (sendTouchEvent):
- (addTouchPointCallback):
- (touchStartCallback):
- (updateTouchPointCallback):
- (touchMoveCallback):
- (cancelTouchPointCallback):
- (touchCancelCallback):
- (releaseTouchPointCallback):
- (touchEndCallback):
- (clearTouchPointsCallback):
- (setTouchModifierCallback):
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-05-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Fix chromium_android_unittest
- https://bugs.webkit.org/show_bug.cgi?id=87196
-
- Not reviewed.
- Temporarily disable chromium_android_unittest.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest):
- (ChromiumAndroidDriverTest):
-
-2012-05-22 Jessie Berlin <jberlin@apple.com>
-
- WebKitTestRunner needs an implementation of layoutTestController.setDefersLoading
- https://bugs.webkit.org/show_bug.cgi?id=64313
-
- Reviewed by Jon Honeycutt.
-
- Add it.
-
- * WebKitTestRunner/InjectedBundle/Bindings/LayoutTestController.idl:
- Make sure to generate the binding.
-
- * WebKitTestRunner/InjectedBundle/LayoutTestController.cpp:
- (WTR::LayoutTestController::setDefersLoading):
- Call WKBundlePageSetDefersLoading.
- * WebKitTestRunner/InjectedBundle/LayoutTestController.h:
-
-2012-05-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Run DumpRenderTree as an apk (python part)
- https://bugs.webkit.org/show_bug.cgi?id=86923
-
- chromium_android.py is modified to support running DumpRenderTree as
- an apk, so that we can run the tests (e.g. video) requiring features
- implemented in Java on Android.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.default_child_processes):
- (ChromiumAndroidPort.check_wdiff):
- (ChromiumAndroidPort.check_build):
- (ChromiumAndroidPort.start_helper):
- (ChromiumAndroidPort.skipped_layout_tests):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort._path_to_driver):
- (ChromiumAndroidPort._get_crash_log):
- (ChromiumAndroidPort._push_executable):
- (ChromiumAndroidPort._run_adb_command):
- (ChromiumAndroidPort._get_last_stacktrace):
- (ChromiumAndroidPort._get_logcat):
- (ChromiumAndroidPort._setup_performance):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._command_wrapper):
- (ChromiumAndroidDriver.cmd_line):
- (ChromiumAndroidDriver._file_exists_on_device):
- (ChromiumAndroidDriver._deadlock_detector):
- (ChromiumAndroidDriver._start):
- (ChromiumAndroidDriver.run_test):
- (ChromiumAndroidDriver.stop):
- (ChromiumAndroidDriver._write_command_and_read_line):
- (ChromiumAndroidDriver._output_image):
- (ChromiumAndroidDriver._get_stderr):
-
-2012-05-22 Joshua Bell <jsbell@chromium.org>
-
- [Chromium] Reverting r118084 - webkit_tests failing on chromium mac.
-
- Unreviewed gardening.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.driver_name):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_overrides_and_builder_names):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-05-22 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium] Move conditions in DumpRenderTree.gypi into DumpRenderTree.gyp
- https://bugs.webkit.org/show_bug.cgi?id=87176
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
-
-2012-05-22 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add --driver-name option to run_webkit_tests.py to allow for selecting alternative DRT binaries
- https://bugs.webkit.org/show_bug.cgi?id=87128
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.driver_name):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortTest.test_driver_name_option):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort._path_to_driver):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2012-05-22 Jessie Berlin <jberlin@apple.com>
-
- WTR fix after r118001.
-
- Rubber-stamped by Alexey Proskuryakov.
-
- Update the WTR implementation of keyDown to match the DRT one changed in r118001.
-
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::keyDown):
-
-2012-05-22 Kausalya Madhusudhanan <kmadhusu@chromium.org>
-
- [Chromium] Use overloaded printBegin() webkit API to support auto fit to page functionality.
- https://bugs.webkit.org/show_bug.cgi?id=86684
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/LayoutTestController.cpp:
- (LayoutTestController::numberOfPages):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printPage):
-
-== Rolled over to ChangeLog-2012-05-22 ==
diff --git a/Tools/ChangeLog-2013-04-24 b/Tools/ChangeLog-2013-04-24
deleted file mode 100644
index 2c65dea21..000000000
--- a/Tools/ChangeLog-2013-04-24
+++ /dev/null
@@ -1,39024 +0,0 @@
-2013-04-23 David Grogan <dgrogan@chromium.org>
-
- Unreviewed. Remove myself from watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-23 Jessie Berlin <jberlin@apple.com>
-
- NRWT: confusing warning about a line being in a Skipped file when it is really just listed
- in _missing_symbol_to_skipped_tests in base.py
- https://bugs.webkit.org/show_bug.cgi?id=108884
-
- Reviewed by Tim Horton.
-
- Remove symbol-based skipped list detection.
-
- * Scripts/webkitpy/port/base.py:
- (Port._missing_feature_to_skipped_tests):
- (Port._skipped_tests_for_unsupported_features):
- * Scripts/webkitpy/port/port_testcase.py:
- (PortTestCase.test_path_to_test_expectations_file):
-
-2013-04-23 Benjamin Poulain <bpoulain@apple.com>
-
- Remove wxWebKit support from the Tools
- https://bugs.webkit.org/show_bug.cgi?id=115005
-
- Reviewed by Andreas Kling.
-
- The wxWebKit port is no longer actively maintained by Kevin
- on webkit.org. Remove the code until new maintainers resume the work.
-
- * DumpRenderTree/DumpRenderTree.h:
- * DumpRenderTree/config.h:
- * DumpRenderTree/wscript: Removed.
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp: Removed.
- * DumpRenderTree/wx/DumpRenderTreeWx.h: Removed.
- * DumpRenderTree/wx/GCControllerWx.cpp: Removed.
- * DumpRenderTree/wx/TestRunnerWx.cpp: Removed.
- * DumpRenderTree/wx/WorkQueueItemWx.cpp: Removed.
- * Scripts/build-dumprendertree:
- * Scripts/build-jsc:
- (buildMyProject):
- * Scripts/build-webkit:
- * Scripts/old-run-webkit-tests:
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
- (argumentsForConfiguration):
- (determineConfigurationProductDir):
- (determinePassedArchitecture):
- (builtDylibPathForName):
- (determineIsQt):
- (isAppleWebKit):
- (launcherPath):
- (launcherName):
- (checkRequiredSystemConfig):
- * Scripts/webkitpy/common/config/contributionareas.py:
- * waf/build/build_utils.py: Removed.
- * waf/build/settings.py: Removed.
- * waf/build/waf_extensions.py: Removed.
- * waf/build/wxpresets.py: Removed.
- * wx/browser/browser.cpp: Removed.
- * wx/browser/wscript: Removed.
- * wx/install-unix-extras: Removed.
- * wx/packaging/build-debian-installer.py: Removed.
- * wx/packaging/build-mac-installer.py: Removed.
- * wx/packaging/build-win-installer.py: Removed.
- * wx/packaging/debian/changelog: Removed.
- * wx/packaging/debian/compat: Removed.
- * wx/packaging/debian/control: Removed.
- * wx/packaging/debian/copyright: Removed.
- * wx/packaging/debian/python-webkitwx.install: Removed.
- * wx/packaging/debian/rules: Removed.
- * wx/packaging/wxWebKitInstaller.iss.in: Removed.
-
-2013-04-23 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Fix test_build_check for Qt on Mac after r148075.
- https://bugs.webkit.org/show_bug.cgi?id=115038
-
- Reviewed by Csaba Osztrogonác.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RunTest.test_build_check):
- run-webkit-tests is supposed to fail, if it is run on a different
- platform than specified on the command line.
- However, Qt allows exactly this for Qt-platforms to allow comparing
- of test results of different baselines.
- Before r148075 "chromium-linux-x86" was used for testing.
- This patch changes the port_name to gtk when running the test on mac.
-
-2013-04-23 Xan Lopez <xlopez@igalia.com>
-
- [BlackBerry] Do not access BackForwardListImpl from DRT
- https://bugs.webkit.org/show_bug.cgi?id=115041
-
- Reviewed by Carlos Garcia Campos.
-
- Use the right class to access the bflist functionality.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::dumpBackForwardListForWebView):
-
-2013-04-23 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add webkit_uri_request_get_http_headers to WebKit2 GTK+ API
- https://bugs.webkit.org/show_bug.cgi?id=112160
-
- Reviewed by Andreas Kling.
-
- * MiniBrowser/gtk/GNUmakefile.am: Add missing libsoup flags to
- CPPFLAGS.
-
-2013-04-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] Make EFL WKView API shareable between ports
- https://bugs.webkit.org/show_bug.cgi?id=114734
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
-
- Updated project files accordingly to updated WKView API files
- structure.
-
-2013-04-23 Andreas Kling <akling@apple.com>
-
- Add Benjamin Poulain's @apple.com address to his entry. Unreviewed.
-
- * Scripts/webkitpy/common/config/contributors.json:
-
-2013-04-23 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- Respect image-rendering setting for determing image-rendering quality
- https://bugs.webkit.org/show_bug.cgi?id=113405
-
- Reviewed by Benjamin Poulain.
-
- Remove CSS4 Images option. It is not ready for implementation.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-04-22 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/114989> Add a user default to allow use of the Safari binary rather than SafariForWebKitDevelopment
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (skipSafariExecutableEntitlementChecks): Look for the SkipSafariExecutableEntitlementChecks default in the
- /Library/Preferences/org.webkit.BuildConfiguration preference domain.
- (safariPathFromSafariBundle): If the user default is set asking us to skip the entitlement checks, return
- the path to the regular Safari binary.
-
-2013-04-22 Ryuan Choi <ryuan.choi@samsung.com>
-
- Unreviewed Efl build fix after r148921
-
- * TestWebKitAPI/CMakeLists.txt:
-
-2013-04-22 Benjamin Poulain <benjamin@webkit.org>
-
- Remove the memory instrumentation code
- https://bugs.webkit.org/show_bug.cgi?id=114931
-
- Reviewed by Andreas Kling.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp: Removed.
-
-2013-04-22 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Enable introspection always for developer builds
- https://bugs.webkit.org/show_bug.cgi?id=114983
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary): Always enable introspection
- when using build-webkit.
- * gtk/jhbuildrc: Enable documentation for all jhbuild modules and explicitly
- choose the memory gsettings backend while in the jhbuild. This eliminates
- warnings from programs that fall back to the memory backend.
-
-2013-04-22 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Set up libPlatform.la
- https://bugs.webkit.org/show_bug.cgi?id=114168
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Link the DumpRenderTree executable against both libPlatform.la and libPlatformGtk.la libraries.
-
-2013-04-22 Xuefei Ren <xren@blackberry.com>
-
- fix build warning(unused parameter)
- https://bugs.webkit.org/show_bug.cgi?id=114855
-
- Reviewed by Rob Buis.
-
- remove warning(unused parameter) in
- Tools/DumpRenderTree/blackberry/EventSender.cpp
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (getDragModeCallback):
-
-2013-04-22 Alberto Garcia <agarcia@igalia.com>
-
- [BlackBerry] Add dummy implementation of AccessibilityController::accessibleElementById()
- https://bugs.webkit.org/show_bug.cgi?id=114939
-
- Reviewed by Carlos Garcia Campos.
-
- This was added in r129308.
-
- * DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp:
- (AccessibilityController::accessibleElementById):
-
-2013-04-21 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- Unreviewed EFL build fix after r148855.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2013-04-21 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][WK2] Mark WKViewClientWebProcessCallbacks API test as failing
- https://bugs.webkit.org/show_bug.cgi?id=114922
-
- Reviewed by Gyuyoung Kim.
-
- Mark WKViewClientWebProcessCallbacks API test as failing on WK2 EFL.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2013-04-20 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Fix baseline positioning issue by updating Freetype
- https://bugs.webkit.org/show_bug.cgi?id=106775
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: Bump the Freetype Jhbuild dependency to 2.4.11.
- * gtk/patches/freetype6-2.4.11-truetype-font-height-fix.patch: Added. This is the Freetype
- patch (committed as e0469372) that fixes rounding issues for smaller fonts. It is bound to be included
- in the 2.4.12 release of Freetype (not released yet) but is provided here as its effect on baselines is
- considered positive and will reduce the amout of future rebaselining.
-
-2013-04-20 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Fix unit test webkit2/WebKitFindController/hide
- https://bugs.webkit.org/show_bug.cgi?id=89810
-
- Reviewed by Carlos Garcia Campos.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip test webkit2/WebKitFindController/hide.
-
-2013-04-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fixes for the flakiness dashboard.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
-
-2013-04-17 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Make the 32 bits bot only build and run API tests
- https://bugs.webkit.org/show_bug.cgi?id=113532
-
- Reviewed by Martin Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: make the 32 bits bot use the new BuildAndAPITest type
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (BuildAndAPITestFactory): new factory that builds and runs API tests, only used by the GTK+ 32 bits bot at the
- moment;
- (BuildAndAPITestFactory.__init__): add API tests step for platforms that have it.
-
-2013-04-19 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Only use thin archives on Linux
-
- Rubber-stamped by Jocelyn Turcotte.
-
- Since "thin archive" is a feature of GNU's ar
- we limit the usage to Linux to avoid problems
- with other configurations (eg. macx-g++).
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2013-04-19 Krzysztof Czech <k.czech@samsung.com>
-
- [GTK][WK2] accessibility/language-attribute.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=106342
-
- Reviewed by Gyuyoung Kim.
-
- Adds support for getting language information.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::language):
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove the isToTWebKit member variable from the BuilderGroup interface
- https://bugs.webkit.org/show_bug.cgi?id=114805
-
- Reviewed by Benjamin Poulain.
-
- Remove the isToTWebKit member variable from the BuilderGroup and all its usages as it now defaults to true for every
- builder group. The isTipOfTreeWebKitBuilder method now returns true by default but should be removed in a follow-up patch.
- The BuilderGroup constructor does not accept the isToTWebKit parameter anymore so all the callsites are adjusted accordingly.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup):
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (isTipOfTreeWebKitBuilder):
- (expectationsMap):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] htmlForIndividualTests unit test should include its dummy builder under the webkit.org builder master
- https://bugs.webkit.org/show_bug.cgi?id=114804
-
- Reviewed by Benjamin Poulain.
-
- The htmlForIndividualTests unit test should include its dummy builder under the sole supported webkit.org builder master
- just so the unit tests properly functions.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove Chromium-specific helper functions that were used in the builder-loading code
- https://bugs.webkit.org/show_bug.cgi?id=114803
-
- Reviewed by Benjamin Poulain.
-
- Remove three Chromium-specific helper functions that were used to determine Chromium DEPS, Content Shell and WebKit ToT
- test runners. These are not required anymore and thus removed along with a couple of unit tests that were testing these
- methods' correct behavior.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove the Chromium-specific builder masters
- https://bugs.webkit.org/show_bug.cgi?id=114802
-
- Reviewed by Benjamin Poulain.
-
- Remove all the Chromium-specific builder masters, the webkit.org builder master is the only one currently supported.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove all the Chromium-specific builder groups
- https://bugs.webkit.org/show_bug.cgi?id=114801
-
- Reviewed by Benjamin Poulain.
-
- Remove all the Chromium-specific builder groups, all of these are not supported anymore.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Only accept the 'group' parameter if present in the layout tests builders group
- https://bugs.webkit.org/show_bug.cgi?id=114799
-
- Reviewed by Benjamin Poulain.
-
- The layout tests builder group is the only one supported, all the other Chromium-specific builder groups are
- bound to be removed.
-
- * TestResultServer/static-dashboards/history.js:
- (.):
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove Chromium-specific builder loading code from loadBuildersList
- https://bugs.webkit.org/show_bug.cgi?id=114797
-
- Reviewed by Benjamin Poulain.
-
- Remove anything Chromium-specific from the builder-loading code, specifically removing support for loading builder data
- for anything other that the layout-tests type and removing support for loading builder data from builders connected
- to the Chromium-specific builder groups which are no longer supported.
-
- * TestResultServer/static-dashboards/builders.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] The currentBuilderGroupCategory method should return the layout tests builder groups by default
- https://bugs.webkit.org/show_bug.cgi?id=114796
-
- Reviewed by Benjamin Poulain.
-
- With the Chromium builders no longer uploading results and the layout-tests test type the only one supported by the
- WebKit's dashboard, the currentBuilderGroupCategory can now return LAYOUT_TESTS_BUILDER_GROUPS as the default builder
- group category.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Narrow down the test types list to only layout-tests
- https://bugs.webkit.org/show_bug.cgi?id=114795
-
- Reviewed by Ryosuke Niwa.
-
- Remove all the redundant test types that the webkit.org builders do not upload results for. All of the removed
- test types were specific to the Chromium builders.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] The revision rows for aggregate results should no longer include Chromium revisions
- https://bugs.webkit.org/show_bug.cgi?id=114760
-
- Reviewed by Benjamin Poulain.
-
- With the Chromium builders no longer present there's no need to display the Chromium revision range under the
- aggregate results. Only the first half of the htmlForRevisionRows method (the one returning the table row listing the
- WebKit revisions) is now relevant - the method is therefor removed and its callsites updated to directly call the
- htmlForTableRow method that returns the table row containing all the relevant WebKit revisions.
-
- * TestResultServer/static-dashboards/aggregate_results.js:
- (htmlForSummaryTable):
- (htmlForTestType):
-
-2013-04-19 Zan Dobersek <zdobersek@igalia.com>
-
- [Dashboard] Remove Chromium-specific cases from the construction of the chart HTML for aggregate results
- https://bugs.webkit.org/show_bug.cgi?id=114759
-
- Reviewed by Benjamin Poulain.
-
- Aggregate results are not viewable for Chromium builders anymore, meaning the WebKit revisions are shown by default.
- This means the code in the chartHTML method can be simplified, defaulting the revision key to WEBKIT_REVISIONS_KEY
- and the revision label to 'WebKit Revision'.
-
- * TestResultServer/static-dashboards/aggregate_results.js:
- (chartHTML):
-
-2013-04-18 Xuefei Ren <xren@blackberry.com>
-
- remove build warning(unused parameter)
- https://bugs.webkit.org/show_bug.cgi?id=114670
-
- Reviewed by Rob Buis.
-
- remove builde warning (unused parameter) in
- Tools/DumpRenderTree/blackberry
-
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::addMessageToConsole):
- (BlackBerry::WebKit::DumpRenderTree::didReceiveResponseForFrame):
- * DumpRenderTree/blackberry/EventSender.cpp:
- (getDragModeCallback):
- (setDragModeCallback):
- (mouseWheelToCallback):
- (contextClickCallback):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
- (beginDragWithFilesCallback):
- (leapForwardCallback):
- (keyDownCallback):
- (textZoomInCallback):
- (textZoomOutCallback):
- (zoomPageInCallback):
- (zoomPageOutCallback):
- (addTouchPointCallback):
- (updateTouchPointCallback):
- (setTouchModifierCallback):
- (touchStartCallback):
- (touchCancelCallback):
- (touchMoveCallback):
- (touchEndCallback):
- (clearTouchPointsCallback):
- (cancelTouchPointCallback):
- (releaseTouchPointCallback):
- (scalePageByCallback):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::authenticateSession):
- (TestRunner::setSpatialNavigationEnabled):
- (TestRunner::apiTestNewWindowDataLoadBaseURL):
- (TestRunner::setPluginsEnabled):
- (TestRunner::setApplicationCacheOriginQuota):
- (TestRunner::addMockSpeechInputResult):
- (TestRunner::setViewModeMediaFeature):
- (TestRunner::deleteLocalStorageForOrigin):
- (TestRunner::applicationCacheDiskUsageForOrigin):
- (TestRunner::grantWebNotificationPermission):
- (TestRunner::denyWebNotificationPermission):
- (TestRunner::simulateWebNotificationClick):
- (TestRunner::simulateLegacyWebNotificationClick):
-
-2013-04-18 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- [WK2][EFL] Text Checker's settings refactor
- https://bugs.webkit.org/show_bug.cgi?id=111713
-
- Reviewed by Andreas Kling.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- Use a new text checker API to enable spell checking.
-
-2013-04-18 Seokju Kwon <seokju.kwon@gmail.com>
-
- [EFL] Add a newline to the end of log message
- https://bugs.webkit.org/show_bug.cgi?id=114659
-
- Reviewed by Gyuyoung Kim.
-
- Move a newline to info() definition.
-
- * EWebLauncher/main.c:
- (on_load_finished):
- (on_tooltip_text_set):
- (on_tooltip_text_unset):
- (on_inputmethod_changed):
- (on_focus_out):
- (on_focus_in):
- (on_key_down):
- (windowCreate):
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_download_request):
- (on_download_finished):
- (on_download_failed):
- (on_refresh_button_clicked):
- (on_popup_menu_discarded):
- (on_popup_menu_item_clicked):
- (popup_menu_populate):
- (on_popup_menu_show):
- (on_window_create):
- (context_popup_item_selected_cb):
- (on_context_menu_show):
- (on_context_menu_hide):
- (window_create):
-
-2013-04-17 Zan Dobersek <zandobersek@gmail.com>
-
- [Dashboard] Remove code for showing 'WebKit roll' annotations in timelines for Chromium builders
- https://bugs.webkit.org/show_bug.cgi?id=114755
-
- Reviewed by Ryosuke Niwa.
-
- The Chromium builders are no longer available to inspect so there's no need for the code that used to show
- the 'WebKit roll' annotations in the Chromium builders' timeline.
-
- * TestResultServer/static-dashboards/timeline_explorer.js:
-
-2013-04-17 Zan Dobersek <zandobersek@gmail.com>
-
- [Dashboard] Clean up the timeline updating code, removing Chromium-specific cases
- https://bugs.webkit.org/show_bug.cgi?id=114756
-
- Reviewed by Ryosuke Niwa.
-
- Clean up the updating of the timeline in the timeline explorer, defaulting to the webkit.org build master when
- constructing the results URL and removing the possible row addition containing the Chromium commit range that
- only applied to Chromium builders in the first place. Also removes the now-redundant shouldShowWebKitRevisionsOnly
- method.
-
- * TestResultServer/static-dashboards/timeline_explorer.js:
-
-2013-04-17 Alberto Garcia <agarcia@igalia.com>
-
- media-stream and xslt are no longer configurable options in the GTK+ port
- https://bugs.webkit.org/show_bug.cgi?id=114736
-
- Reviewed by Martin Robinson.
-
- media-stream support was removed in r145199 and XSLT is a hard
- requirement since r145859. Attempting to pass those options to the
- configure script, only results in a warning.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2013-04-17 Michał Pakuła vel Rutka <m.pakula@samsung.com>
-
- [EFL][WK2] Implement context menu in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=102932
-
- Reviewed by Gyuyoung Kim.
-
- Added context menu support for EFL port using Elementary context popup.
-
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (context_popup_item_selected_cb):
- (context_popup_populate):
- (on_context_menu_show):
- (on_context_menu_hide):
- (window_create):
-
-2013-04-17 Csaba Osztrogonác <ossy@webkit.org>
-
- REGRESSION(r148588): It broke the Qt WK2 EWS
- https://bugs.webkit.org/show_bug.cgi?id=114737
-
- Reviewed by Jocelyn Turcotte.
-
- * Scripts/webkitpy/common/config/ews.json: "Qt WK2 EWS" should use qt-wk2 port.
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port):
- (QtPort.build_webkit_command): qt port shouldn't build WebKit2.
- (QtPort.run_webkit_tests_command): qt port runs WK1 tests.
- (QtWK2Port): Added.
- (QtWK2Port.build_webkit_command): qt-wk2 port builds WK1 and WK2 too.
- (QtWK2Port.run_webkit_tests_command): qt-wk2 port runs WK2 tests.
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_qt_port):
- (DeprecatedPortTest):
- (DeprecatedPortTest.test_qt_wk2_port):
-
-2013-04-17 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_efl_port): Adjusting the expected outcome of the EFL build-webkit command after r148589.
-
-2013-04-17 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Enable sub-pixel layout.
- https://bugs.webkit.org/show_bug.cgi?id=113199
-
- Reviewed by Jocelyn Turcotte.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-04-16 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Add Efl WebKit2 EWS bot
- https://bugs.webkit.org/show_bug.cgi?id=114564
-
- Reviewed by Ryosuke Niwa.
-
- Added EflWK2EWS, and add myself a watcher for EflWK2EWS.
- Also add a deprecated EflWK2Port class.
-
- Besides clean up eflews watchers.
-
- * QueueStatusServer/config/queues.py:
- * Scripts/webkitpy/common/config/ews.json:
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port):
- (EflPort.build_webkit_command):
- (EflWK2Port):
- (EflWK2Port.build_webkit_command):
-
-2013-04-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Isolate Early Warning System definitions into a JSON
- https://bugs.webkit.org/show_bug.cgi?id=114558
-
- Reviewed by Benjamin Poulain.
-
- Added ews.json to common/config, and made tool/commands/__init__.py call
- AbstractEarlyWarningSystem.load_ews_classes to instantiate classes based on ews.json.
-
- Reland the patch since the EWS failure was a false positive.
-
- * Scripts/webkitpy/common/config/ews.json: Extracted from earlywarningsystem.py.
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
- (AbstractEarlyWarningSystem.__init__):
- (AbstractEarlyWarningSystem.load_ews_classes): Added. Loads ews.json.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSystemTest._default_expected_logs):
- (_test_ews):
- (test_ewses):
-
-2013-04-16 Sam Weinig <sam@webkit.org>
-
- Fix fallout after r148545.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Remove calls to non-existent API functions.
-
-2013-04-13 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Disable WinEWS tests, simply not enough bots.
-
- All bots are running consistently now but the queue still keeps growing.
- Until we get more bots or make the tests faster, it doesn't seem wise to keep running tests.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-04-16 Ryosuke Niwa <rniwa@webkit.org>
-
- The list of contributors in committers.py should be a separate JSON
- https://bugs.webkit.org/show_bug.cgi?id=114673
-
- Reviewed by Anders Carlsson.
-
- Added webkitpy/common/config/contributors.json, made CommitterList load it.
-
- * EWSTools/start-queue-mac.sh:
- * EWSTools/start-queue.sh:
- * Scripts/webkitpy/common/checkout/commitinfo.py:
- (CommitInfo.committer):
- * Scripts/webkitpy/common/config/contributors.json: Added.
- * Scripts/webkitpy/common/config/committers.py:
- (Reviewer.__init__):
- (CommitterList.__init__):
- (CommitterList.load_json): Added.
- (CommitterList.load_json.emails):
- (CommitterList.load_json.nicks):
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- (MockCommitInfo.author):
-
-2013-04-16 Manuel Rego Casasnovas <rego@igalia.com>
-
- [EFL] Bump libsoup dependency to 2.42.0
- https://bugs.webkit.org/show_bug.cgi?id=113927
-
- Reviewed by Gyuyoung Kim.
-
- Update libsoup required version to v2.42.0 and GLib to v2.36.0 as
- required by libsoup for EFL port.
-
- * efl/jhbuild.modules:
- * efl/patches/libsoup-2.40-auth-fix.patch: Removed as it's already
- included in v2.42.0.
-
-2013-04-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Account class from committers.py
- https://bugs.webkit.org/show_bug.cgi?id=114671
-
- Reviewed by Csaba Osztrogonác.
-
- Account class was added to support watch list email addresses that are not associated with
- a particular contributor but nobody uses these email address since Chromium port forked.
-
- Remove it.
-
- Also removed account_by_login from CommitterList since it was never called except its unittests.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- * Scripts/webkitpy/common/config/committers.py:
- (Contributor):
- (Contributor.matches_glob):
- (Reviewer.__init__):
- (CommitterList.__init__):
- (CommitterList._email_to_account_map):
- (CommitterList._login_to_account_map):
- (CommitterList.contributors_by_fuzzy_match):
- (CommitterList.contributor_by_email):
- (CommitterList.contributor_by_name):
- (CommitterList.committer_by_email):
- (CommitterList.reviewer_by_email):
- * Scripts/webkitpy/common/config/committers_unittest.py:
- (CommittersTest.test_committer_lookup):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla._commit_queue_flag):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (test_commit_queue_flag):
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- (WatchListParser._validate):
-
-2013-04-16 Mike West <mkwst@chromium.org>
-
- Unreviewed update to the watchlist.
-
- Removing 'mkwst+watchlist@chromium.org' from committers.py and the
- watchist file; moving to 'mkwst@chromium.org' instead.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Move webkitpy.layout_tests.port to webkitpy.port
- https://bugs.webkit.org/show_bug.cgi?id=114668
-
- Reviewed by Maciej Stachowiak.
-
- Moved. Port objects knows a lot more than just layout_tests. They doesn't belong down in layout_tests.
-
- * Scripts/webkitpy/common/host.py:
- * Scripts/webkitpy/common/host_mock.py:
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- * Scripts/webkitpy/layout_tests/lint_test_expectations.py:
- * Scripts/webkitpy/layout_tests/port: Removed.
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:
- * Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py:
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- * Scripts/webkitpy/performance_tests/perftest.py:
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- * Scripts/webkitpy/port: Copied from Tools/Scripts/webkitpy/layout_tests/port.
- * Scripts/webkitpy/port/apple.py:
- * Scripts/webkitpy/port/base.py:
- * Scripts/webkitpy/port/base_unittest.py:
- * Scripts/webkitpy/port/config_unittest.py:
- (ConfigTest.test_default_configuration__standalone):
- * Scripts/webkitpy/port/driver_unittest.py:
- * Scripts/webkitpy/port/efl.py:
- * Scripts/webkitpy/port/efl_unittest.py:
- * Scripts/webkitpy/port/factory.py:
- * Scripts/webkitpy/port/factory_unittest.py:
- * Scripts/webkitpy/port/gtk.py:
- * Scripts/webkitpy/port/gtk_unittest.py:
- * Scripts/webkitpy/port/image_diff.py:
- * Scripts/webkitpy/port/image_diff_unittest.py:
- * Scripts/webkitpy/port/leakdetector_unittest.py:
- * Scripts/webkitpy/port/mac.py:
- * Scripts/webkitpy/port/mac_unittest.py:
- * Scripts/webkitpy/port/mock_drt.py:
- * Scripts/webkitpy/port/mock_drt_unittest.py:
- * Scripts/webkitpy/port/port_testcase.py:
- * Scripts/webkitpy/port/qt.py:
- * Scripts/webkitpy/port/qt_unittest.py:
- * Scripts/webkitpy/port/server_process_unittest.py:
- * Scripts/webkitpy/port/test.py:
- * Scripts/webkitpy/port/win.py:
- * Scripts/webkitpy/port/win_unittest.py:
- * Scripts/webkitpy/port/xvfbdriver.py:
- * Scripts/webkitpy/port/xvfbdriver_unittest.py:
- * Scripts/webkitpy/tool/bot/botinfo_unittest.py:
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- * Scripts/webkitpy/tool/commands/perfalizer_unittest.py:
- * Scripts/webkitpy/tool/commands/queries.py:
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- * Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py:
-
-2013-04-16 Commit Queue <rniwa@webkit.org>
-
- Unreviewed, rolling out r148498.
- http://trac.webkit.org/changeset/148498
- https://bugs.webkit.org/show_bug.cgi?id=114669
-
- Appears to have broken EWS (Requested by rniwa on #webkit).
-
- * Scripts/webkitpy/common/config/ews.json: Removed.
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
- (AbstractEarlyWarningSystem.__init__):
- (AbstractEarlyWarningSystem.handle_script_error.does):
- (GtkEWS):
- (GtkWK2EWS):
- (EflEWS):
- (QtEWS):
- (QtWK2EWS):
- (WinEWS):
- (MacEWS):
- (MacWK2EWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSystemTest._default_expected_logs):
- (_test_ews):
- (test_ewses):
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Isolate Early Warning System definitions into a JSON
- https://bugs.webkit.org/show_bug.cgi?id=114558
-
- Reviewed by Benjamin Poulain.
-
- Added ews.json to common/config, and made tool/commands/__init__.py call
- AbstractEarlyWarningSystem.load_ews_classes to instantiate classes based on ews.json.
-
- * Scripts/webkitpy/common/config/ews.json: Extracted from earlywarningsystem.py.
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
- (AbstractEarlyWarningSystem.__init__):
- (AbstractEarlyWarningSystem.load_ews_classes): Added. Loads ews.json.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSystemTest._default_expected_logs):
- (_test_ews):
- (test_ewses):
-
-2013-04-15 Ryosuke Niwa <rniwa@webkit.org>
-
- WKR gets stuck when there are many merges
- https://bugs.webkit.org/show_bug.cgi?id=114632
-
- Reviewed by Andreas Kling.
-
- Move the last revision forward when it exists in a branch.
- Otherwise, we'll be stuck looping over revisions made to merge patches.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot.next_work_item):
-
-2013-04-15 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Missing a few packages for building on stock Fedora
- https://bugs.webkit.org/show_bug.cgi?id=113916
-
- Reviewed by Philippe Normand.
-
- * gtk/install-dependencies: add packages that are missing.
-
-2013-04-15 Zan Dobersek <zdobersek@igalia.com>
-
- REGRESSION (r148360): Failure in webkitpy.tool.multicommandtool_unittest.MultiCommandToolTest.test_command_help
- https://bugs.webkit.org/show_bug.cgi?id=114602
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- (CommandTest.test_required_arguments): Reset the static argument_names variable on the TrivialCommand
- interface so its value doesn't leak into the following tests.
-
-2013-04-15 Zan Dobersek <zandobersek@gmail.com>
-
- Deprecate land-cowboy in favor of land-cowhand
- https://bugs.webkit.org/show_bug.cgi?id=104470
-
- Reviewed by Darin Adler.
-
- Move the LandCowboy command implementation under the LandCowhand command and deprecate the former.
-
- * Scripts/webkitpy/tool/commands/download.py:
- (LandCowhand):
- (LandCowboy):
- (LandCowboy._prepare_state):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (test_land_cowhand): Adjust the unit tests by testing both LandCowhand and LandCowboy,
- also checking the deprecation message in the output of the latter.
-
-2013-04-15 Jonathan Liu <net147@gmail.com>
-
- Improve Windows cmd.exe detection
- https://bugs.webkit.org/show_bug.cgi?id=114620
-
- Reviewed by Jocelyn Turcotte.
-
- The current detection code handles Windows cmd.exe and Cygwin shell
- but not does not handle MSYS shell correctly. Simplify and improve the
- detection by checking MINGW_IN_SHELL instead as used in other places
- (e.g. qt_functions.prf).
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2013-04-15 Manuel Rego Casasnovas <rego@igalia.com>
-
- [webkitpy] Use $NUMBER_OF_PROCESSORS in Executive.cpu_count()
- https://bugs.webkit.org/show_bug.cgi?id=114506
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.cpu_count): Modify function in order to use the environment
- variable $NUMBER_OF_PROCESSORS if it is defined and it is an integer
- greater than 0.
-
-2013-04-15 Xan Lopez <xlopez@igalia.com>
-
- [BlackBerry] ASSERT in StyleResolver::ensureScopeResolver()
- https://bugs.webkit.org/show_bug.cgi?id=114615
-
- Reviewed by Carlos Garcia Campos.
-
- Enable the style scoped feature if we have support for it.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2013-04-15 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] QtMultimedia not used when GStreamer is not found
- https://bugs.webkit.org/show_bug.cgi?id=111842
-
- Reviewed by Philippe Normand.
-
- Fallback to using QtMultimedia when native libraries are not found.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix attempt for webkitbot. Unicodify everything.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Whois.execute):
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- webkitbot should provide full name, email address, and IRC nicknames on whois
- https://bugs.webkit.org/show_bug.cgi?id=114494
-
- Reviewed by Benjamin Poulain.
-
- A response like the one below is useless. Improve it:
- webkitbot: rniwa: zdobersek is zdobersek (zandobersek@gmail.com). Why do you ask?
-
- We now report full name, email address, committer/reviewer status, and IRC nickname.
-
- Also teach webkitbot how to respond to ping.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (PingPong): Moved
- (PingPong.execute):
- (Whois._full_record_and_nick): Renamed and rewritten.
- (Whois.execute):
-
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois): Updated test cases as needed.
-
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_help): Added ping.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot): Teached WKR how to respond to hi.
-
-2013-04-13 Anders Carlsson <andersca@apple.com>
-
- Add form delegate method that's invoked right before sending a submit event to a form element
- https://bugs.webkit.org/show_bug.cgi?id=114575
-
- Reviewed by Dan Bernstein.
-
- Add a test.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm: Added.
- (-[FormDelegate willSendSubmitEventToForm:inFrame:withValues:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
- * TestWebKitAPI/mac/PlatformUtilitiesMac.mm:
- (TestWebKitAPI::Util::toSTD):
- Don't crash when a null NSString is passed to toSTD.
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Python test fix attempt after r148360.
-
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- (test_command_help):
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge AbstractDeclarativeCommand into Command as a comment suggests
- https://bugs.webkit.org/show_bug.cgi?id=114559
-
- Reviewed by Antti Koivisto.
-
- Merged two classes as the comment right above AbstractDeclarativeCommand suggested.
- We need to merge a lot more classes to make webkitpy hackable.
-
- * Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
- (AbstractLocalServerCommand):
- (AbstractLocalServerCommand.__init__):
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- (AbstractSequencedCommand):
- (AbstractSequencedCommand.__init__):
- * Scripts/webkitpy/tool/commands/adduserstogroups.py:
- (AddUsersToGroups):
- * Scripts/webkitpy/tool/commands/analyzechangelog.py:
- (AnalyzeChangeLog):
- (AnalyzeChangeLog.__init__):
- * Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py:
- * Scripts/webkitpy/tool/commands/bugfortest.py:
- (BugForTest):
- * Scripts/webkitpy/tool/commands/bugsearch.py:
- (BugSearch):
- * Scripts/webkitpy/tool/commands/chromechannels.py:
- (ChromeChannels):
- (__init__):
- * Scripts/webkitpy/tool/commands/download.py:
- (AbstractPatchProcessingCommand):
- * Scripts/webkitpy/tool/commands/findusers.py:
- (FindUsers):
- * Scripts/webkitpy/tool/commands/openbugs.py:
- (OpenBugs):
- * Scripts/webkitpy/tool/commands/queries.py:
- (BugsToCommit):
- (PatchesInCommitQueue):
- (PatchesToCommitQueue):
- (PatchesToCommitQueue.__init__):
- (PatchesToReview):
- (PatchesToReview.__init__):
- (PatchesToReview.execute):
- (WhatBroke):
- (ResultsFor):
- (FailureReason):
- (FindFlakyTests):
- (TreeStatus):
- (CrashLog):
- (PrintExpectations):
- (PrintExpectations.__init__):
- (PrintBaselines):
- (PrintBaselines.__init__):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractQueue.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- * Scripts/webkitpy/tool/commands/suggestnominations.py:
- (SuggestNominations):
- (SuggestNominations.__init__):
- * Scripts/webkitpy/tool/commands/upload.py:
- (CommitMessageForCurrentDiff):
- (CommitMessageForCurrentDiff.__init__):
- (CleanPendingCommit):
- (CleanReviewQueue):
- (AssignToCommitter):
- (PostCommits):
- (PostCommits.__init__):
- (MarkBugFixed):
- (MarkBugFixed.__init__):
- (CreateBug):
- (CreateBug.__init__):
- * Scripts/webkitpy/tool/multicommandtool.py:
- (Command):
- (Command.__init__):
- (Command.main):
- (HelpCommand):
- (HelpCommand.__init__):
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- (TrivialCommand):
- (TrivialCommand.__init__):
- (LikesToRetry):
- (LikesToRetry.__init__):
- (CommandTest.test_name_with_arguments):
- (CommandTest.test_required_arguments):
- (test_command_help):
-
-2013-04-13 Ed Bartosh <bartosh@gmail.com>
-
- [EFL] --minimal build fails with error: 'ViewModeInvalid' is not a member of 'WebCore::Page'
- https://bugs.webkit.org/show_bug.cgi?id=114048
-
- Reviewed by Gyuyoung Kim.
-
- Wrapped view media related code in #if ENABLE(VIEW_MODE_CSS_MEDIA)
-
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::setViewModeMediaFeature):
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge watchlistloader into host since it's an unnecessary indirection
- https://bugs.webkit.org/show_bug.cgi?id=114555
-
- Reviewed by Antti Koivisto.
-
- We don't need a class to load a file.
-
- * Scripts/webkitpy/common/host.py:
- (Host.watch_list):
- * Scripts/webkitpy/common/watchlist/watchlistloader.py: Removed.
- * Scripts/webkitpy/common/watchlist/watchlistloader_unittest.py: Removed.
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename JSONResultsGeneratorBase to JSONResultsGenerator
- https://bugs.webkit.org/show_bug.cgi?id=114553
-
- Reviewed by Philippe Normand.
-
- Renamed now that we've got rid of the old JSONResultsGenerator in r148352.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGenerator):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- (JSONGeneratorTest._test_json_generation):
- (JSONGeneratorTest._verify_json_results):
-
-2013-04-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove more Chromium specific code from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=114552
-
- Reviewed by Philippe Normand.
-
- * Scripts/webkitpy/common/host.py:
- (Host.checkout):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase):
- (JSONResultsGeneratorBase.__init__):
- (JSONResultsGeneratorBase._is_results_all_of_type):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port.expected_filename):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- * Scripts/webkitpy/tool/commands/queues.py:
- (PatchProcessingQueue._new_port_name_from_old):
- (CommitQueue.did_pass_testing_ews):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._results_url):
- (Rebaseline._builder_with_name):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockTool.irc):
-
-2013-04-13 Zan Dobersek <zdobersek@igalia.com>
-
- Fix flakiness dashboard unit test failures
- https://bugs.webkit.org/show_bug.cgi?id=114518
-
- Reviewed by Ryosuke Niwa.
-
- Fix the current failures in unit tests for the flakiness dashboard by adjusting failing
- test cases to simulate loading the builders list from the webkit.org build master, replacing
- the Chromium builders and platforms that are used in tests with builders and platforms for the
- Apple Mac Lion WebKit2 port, and removing two test cases that were testing Chromium-specific
- functionality of the dashboard.
-
- This is sort of an interlude to the flakiness dashboard cleanup, with the removal of Chromium-specific
- code and hopefully general simplification of the dashboard codebase coming in near future.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- (test):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-04-12 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX: Make AccessibilityUIElementIOS.mm build on iOS
-
- Reviewed by Chris Fleizach.
-
- * DumpRenderTree/ios/AccessibilityUIElementIOS.mm: Declare
- -_accessibilityPath from the WebAccessibilityObjectWrapper
- class.
- (_CGPathEnumerationIteration): Remove unused CGPoint* variable.
-
-2013-04-12 Jeffrey Pfau <jpfau@apple.com>
-
- Unreviewed, remove an old email address for myself.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-04-12 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- [WK2] WebPageProxy loadURL() won't work when called just after terminateProcess()
- https://bugs.webkit.org/show_bug.cgi?id=110743
-
- Reviewed by Benjamin Poulain.
-
- Adding a new test file to check if loading a page just after WebProcess
- has crashed (or was terminated) works. The test executes the
- following steps (Load, Crash, Load), thus stressing WebProcess
- reattach and process termination code path.
-
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp:
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp: Added.
- (TestWebKitAPI):
- (WebKit2CrashLoader):
- (TestWebKitAPI::WebKit2CrashLoader::WebKit2CrashLoader):
- (TestWebKitAPI::WebKit2CrashLoader::loadUrl):
- (TestWebKitAPI::WebKit2CrashLoader::crashWebProcess):
- (TestWebKitAPI::didFinishLoad):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/WebKit2.pro:
-
-2013-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- [Mac] REGRESSION: Auto substitution strips new lines
- https://bugs.webkit.org/show_bug.cgi?id=114537
-
- Reviewed by Enrica Casucci.
-
- Add a rule to replace "helloleworld" by "hello\nworld" for testing purpose.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2013-04-09 Roger Fong <roger_fong@apple.com>
-
- Re-enable WinEWS tests.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-04-12 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Split GtkAuthenticationDialog in two widgets
- https://bugs.webkit.org/show_bug.cgi?id=103644
-
- Reviewed by Xan Lopez.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Do not generate api docs for
- WebKitAuthenticationDialog which is private in WebKit2.
- (get_webkit1_options): Do not generate api docs for
- webkitauthenticationdialog which is private in WebKit1.
-
-2013-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- WebKit Queues should capitalize K in Wk2
- https://bugs.webkit.org/show_bug.cgi?id=114524
-
- Reviewed by Philippe Normand.
-
- * QueueStatusServer/model/queues.py:
- (Queue.display_name):
-
-2013-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- [Mac] Enable spellchecking tests added in r141471
- https://bugs.webkit.org/show_bug.cgi?id=108525
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- (resetDefaultsToConsistentValues):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2013-04-12 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Enable WebKit2 building on GTK EWSs
- https://bugs.webkit.org/show_bug.cgi?id=114500
-
- Reviewed by Philippe Normand.
-
- Add configuration in order to be able to setup GTK EWSs building
- WebKit2. A new queue gtk-wk2-ews is added.
-
- * QueueStatusServer/config/queues.py:
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port):
- (GtkWK2Port):
- (GtkWK2Port.build_webkit_command):
- (GtkWK2Port.run_webkit_tests_command):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_gtk_port):
- (DeprecatedPortTest):
- (DeprecatedPortTest.test_gtk_wk2_port):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (GtkWK2EWS):
-
-2013-04-12 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Chromium scripts
- https://bugs.webkit.org/show_bug.cgi?id=114492
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/run-chromium-webkit-unit-tests: Removed.
- * Scripts/update-webkit-chromium: Removed.
-
-2013-04-12 Commit Queue <rniwa@webkit.org>
-
- Unreviewed, rolling out r148262.
- http://trac.webkit.org/changeset/148262
- https://bugs.webkit.org/show_bug.cgi?id=114493
-
- Cairo dep should now build, rolling r148247 back in (Requested
- by zdobersek on #webkit).
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/jhbuild.modules:
-
-2013-04-11 Commit Queue <rniwa@webkit.org>
-
- Unreviewed, rolling out r148247.
- http://trac.webkit.org/changeset/148247
- https://bugs.webkit.org/show_bug.cgi?id=114490
-
- Cairo dep fails to build on builders due to missing EGL
- headers (Requested by zdobersek on #webkit).
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
- * gtk/jhbuild.modules:
-
-2013-04-11 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add accelerated 2D canvas support using cairo-gl
- https://bugs.webkit.org/show_bug.cgi?id=104672
-
- Reviewed by Alejandro G. Castro.
-
- Since the value of ACCELERATED_2D_CANVAS relies on some somewhat unusual
- dependencies, don't override value of the setting determined by configure.
- This will make it easier for people using build-webkit, but not the
- WebKit JHBuild.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Add a blacklist for settings to never override.
- * gtk/jhbuild.modules: Build CairoGL.
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- build.webkit.org should link to webkit-queues instead of webkit-commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=114477
-
- Reviewed by Benjamin Poulain.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Leaks builder should not be triggered upon new commits
- https://bugs.webkit.org/show_bug.cgi?id=114475
-
- Reviewed by Jessie Berlin.
-
- Don't trigger them on new checkins. Wait for Mountain Lion (Build), which already triggers
- the leak builder when builds are done.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-04-11 Kalev Lember <kalevlember@gmail.com>
-
- [GTK] Windows build failure after r136056
- https://bugs.webkit.org/show_bug.cgi?id=114121
-
- Reviewed by Martin Robinson.
-
- * TestWebKitAPI/config.h: Make sure defines are correct for other
- Windows ports than apple-win.
-
-2013-04-11 Ojan Vafai <ojan@chromium.org>
-
- Remove myself from watchlists.
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. Don't hard-code queues.webkit.org at least during the transition.
-
- * QueueStatusServer/templates/statusbubble.html:
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Use webkit-queues.appspot.com instead of webkit-commit-queue.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=114397
-
- Reviewed by Benjamin Poulain.
-
- Reland the patch since Alan appears to have finished the migration.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer):
-
-2013-04-11 Brian Holt <brian.holt@samsung.com>
-
- [Gtk] Combo boxes should be arrow-out-of-able similar to list boxes when caret-browsing is enabled.
- https://bugs.webkit.org/show_bug.cgi?id=76796
-
- Reviewed by Chris Fleizach.
-
- Make the Gtk window for the DRT a toplevel so that it gets the
- focus from the window manager when the test starts.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (main):
-
-2013-04-04 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- Use CSS4 image-rendering to determing image scaling quality
- https://bugs.webkit.org/show_bug.cgi?id=113405
-
- Reviewed by Simon Fraser.
-
- Introduce new flag to enable experimental support for CSS4 Images.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove code for Chromium from wkbuild.py
- https://bugs.webkit.org/show_bug.cgi?id=114423
-
- Reviewed by Benjamin Poulain.
-
- * BuildSlaveSupport/build.webkit.org-config/wkbuild.py:
- (_should_file_trigger_build):
- * BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py:
- (ShouldBuildTest):
-
-2013-04-11 Philippe Normand <pnormand@igalia.com>
-
- Unreviewed, update my IRC nickname.
-
- * Scripts/webkitpy/common/config/committers.py: I no longer use philn-tp.
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove the rest of Chromium code from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=114420
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/webkitpy/common/config/urls.py:
- (view_revision_url):
- * Scripts/webkitpy/common/host.py:
- (Host._engage_awesome_locale_hacks):
- (Host.initialize_scm):
- (Host):
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- (MockHost.checkout):
- * Scripts/webkitpy/common/net/buildbot/chromiumbuildbot.py: Removed.
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase._insert_generic_metadata):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._tokenize_line):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (ExpectationSyntaxTests.test_bare_name_and_bugs):
- (ExpectationSyntaxTests.test_warnings):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skips_perf_test):
- (Port.path_to_test_expectations_file):
- (Port._port_flag_for_scripts):
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_function_definition):
- (check_include_line):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (OrderOfIncludesTest.test_check_wtf_includes):
- (WebKitStyleTest.test_webkit_export_check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_valid_expectations):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Rollout.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_help):
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- (SheriffBotTest.test_command_aliases):
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- roll-chromium-deps doesn't roll DEPS
- https://bugs.webkit.org/show_bug.cgi?id=114421
-
- Reviewed by Antti Koivisto.
-
- Roll DEPS. Rolling DEPS. Rolled DEPS.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (RollChromiumDEPS.execute):
-
-2013-04-11 Glenn Adams <glenn@skynav.com>
-
- [webkitpy] Remove lingering return_exit_code usage in scm_mock and rebaselineserver.
- https://bugs.webkit.org/show_bug.cgi?id=114418
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.add): Remove optional remove_exit_code argument.
- (MockSCM.add_list): Remove optional remove_exit_code argument and return value.
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- (_rebaseline_test): Use ScriptError to capture SCM.add() failure and exit code.
- (_move_test_baselines): Use ScriptError to capture SCM.add() failure and exit code.
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix roll-chromium-deps and hi.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Hi.execute):
- (RollChromiumDEPS.execute):
-
-2013-04-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove webkitpy code to roll Chromium DEPS
- https://bugs.webkit.org/show_bug.cgi?id=114415
-
- Reviewed by Benjamin Poulain.
-
- Removed the code to roll Chromium DEPS in WebKit.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.bug_id_for_this_commit):
- * Scripts/webkitpy/common/checkout/checkout_mock.py:
- (MockCheckout.commit_message_for_this_commit):
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CheckoutTest.test_suggested_reviewers):
- * Scripts/webkitpy/common/checkout/deps.py: Removed.
- * Scripts/webkitpy/common/checkout/deps_mock.py: Removed.
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (RollChromiumDEPS): Teach webkitbot a sense of humor.
- (RollChromiumDEPS.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_create_bug):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_revert):
- * Scripts/webkitpy/tool/bot/sheriff.py:
- (Sheriff.post_rollout_patch):
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/roll.py: Removed.
- * Scripts/webkitpy/tool/commands/roll_unittest.py: Removed.
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py: Removed.
- * Scripts/webkitpy/tool/steps/updatechromiumdeps.py: Removed.
- * Scripts/webkitpy/tool/steps/updatechromiumdeps_unittest.py: Removed.
-
-2013-04-11 Glenn Adams <glenn@skynav.com>
-
- [webkitpy] SVNTest fails four tests when using subversion client 1.7 or later
- https://bugs.webkit.org/show_bug.cgi?id=114386
-
- Reviewed by Benjamin Poulain.
-
- Subversion client 1.7 uses a new locking scheme that invalidates the technique used
- in test_svn_lock(), so skip that test for 1.7 (or later) until a new technique
- can be implemented. Further, 1.7 changed svn add to not add intermediate directories
- by default and to return exit code 1 if a file/dir had already been added.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (test_svn_lock): Skip body of test if subversion client 1.7 or later.
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.add_list): Use --parents option and handle exit code 1 if subversion client 1.7 or later.
-
-2013-04-10 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed.
-
- * GNUmakefile.am: Removing extra whitespace that's producing warnings.
-
-2013-04-10 Glenn Adams <glenn@skynav.com>
-
- [webkitpy] Remove unused return_exit_code argument and returned values from SCM.{add,add_list}
- https://bugs.webkit.org/show_bug.cgi?id=114410
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.add_list): Remove optional return_exit_code argument. Remove return value.
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.add): Remove optional return_exit_code argument.
- (SCM.add_list): Remove optional return_exit_code argument.
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.add_list): Remove optional return_exit_code argument. Remove return value.
-
-2013-04-10 Eric Seidel <eric@webkit.org>
-
- Remove myself from the watchlists, I'm getting too much bug mail. :)
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-10 Commit Queue <rniwa@webkit.org>
-
- Unreviewed, rolling out r148158.
- http://trac.webkit.org/changeset/148158
- https://bugs.webkit.org/show_bug.cgi?id=114405
-
- We need to migrate status data (Requested by rniwa on
- #webkit).
-
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer):
-
-2013-04-10 Benjamin Poulain <bpoulain@apple.com>
-
- Mass remove all the empty directories
-
- Rubberstamped by Ryosuke Niwa.
-
- * BuildSlaveSupport/gtk/crashmon/log: Removed.
- * BuildSlaveSupport/gtk/xvfb/log: Removed.
- * DumpRenderTree/ForwardingHeaders/wtf: Removed.
- * DumpRenderTree/unix/TestNetscapePlugin/ForwardingHeaders/WebKit: Removed.
- * MiniBrowser/gtk/WebBundle: Removed.
- * MiniBrowser/win: Removed.
- * QtTestPlatformPlugin/mac: Removed.
- * Scripts/webkitpy/tool/bot/testdata: Removed.
- * Scripts/webkitpy/tool/commands/data/rebaselineserver: Removed.
- * efl/ImageDiff: Removed.
- * iExploder/htdocs: Removed.
- * iExploder/iexploder-1.7.2/output: Removed.
- * iExploder/tools: Removed.
- * qmake/config.tests/libexecdir: Removed.
- * qmake/config.tests/libjpeg: Removed.
- * qmake/config.tests/libpng: Removed.
-
-2013-04-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Use webkit-queeus.appspot.com instead of webkit-commit-queue.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=114397
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer):
-
-2013-04-10 Adam Barth <abarth@webkit.org>
-
- Remove abarth from watchlists
- https://bugs.webkit.org/show_bug.cgi?id=114390
-
- Reviewed by Ryosuke Niwa.
-
- I'm trying to cut down on the amount of bugmail I get so that I'll have
- more of a chance to notice a piece of bugmail directed at me.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-10 Ryosuke Niwa <rniwa@webkit.org>
-
- webkit-test-results.appspot.com loads the dashboard for Chromium by default
- https://bugs.webkit.org/show_bug.cgi?id=114381
-
- Reviewed by Benjamin Poulain.
-
- Changed the defaults.
-
- * TestResultServer/static-dashboards/builders.js:
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2013-04-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Chromium EWS bots from the queue status server
- https://bugs.webkit.org/show_bug.cgi?id=113988
-
- Reviewed by Benjamin Poulain.
-
- Removed Chromium EWS bots. Also updated it to use webkit-queues.appspot.com.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/config/queues.py:
- * QueueStatusServer/model/queues.py:
- (Queue.short_name):
- (Queue.display_name):
- * QueueStatusServer/model/queues_unittest.py:
- (QueueTest.test_short_name):
- (QueueTest.test_display_name):
- (QueueTest.test_name_with_underscores):
- * QueueStatusServer/templates/activebots.html:
-
-2013-04-10 Ojan Vafai <ojan@chromium.org>
-
- Change all instances of test-results.appspot.com to webkit-test-results.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=114370
-
- Reviewed by Ryosuke Niwa.
-
- Finish the transition of WebKit over to it's own instance of the flakiness dashboard.
- Unfortunately, there's no way to test this until this is committed and there is
- a master restart.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/notifications_unittests.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- * TestResultServer/generate_builders_json.py:
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/loader.js:
-
-2013-04-10 Glenn Adams <glenn@skynav.com>
-
- [Qt] Fix regression to test-webkitpy.
- https://bugs.webkit.org/show_bug.cgi?id=114368
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (PortFactory._default_port): Return qt-linux instead of chromium-linux as default port for linux/freebsd.
- (PortFactory.get): Remove obsolete chromium port related code.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_child_processes): Prevent type error if can't determine total memory.
-
-2013-04-10 Anders Carlsson <andersca@apple.com>
-
- Remove unneeded headers from FrameLoader.h
- https://bugs.webkit.org/show_bug.cgi?id=114223
-
- Reviewed by Geoffrey Garen.
-
- Add back headers implicitly included by other headers.
-
- * WebKitTestRunner/WorkQueueManager.cpp:
-
-2013-04-10 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Include a crash-fixing patch for the at-spi2-atk dependency
- https://bugs.webkit.org/show_bug.cgi?id=114365
-
- Reviewed by Martin Robinson.
-
- Add a patch for the at-spi2-atk 2.8.0 dependency that is applied through the Jhbuild setup.
- The patch addresses crashes in the tally_event_reply method. It is already committed into the
- at-spi2-atk source tree and will be available with the next stable release, after which the
- patch should be removed and the dependency version bumped.
-
- * gtk/jhbuild.modules:
- * gtk/patches/at-spi2-atk-2.8.0-null-check-after-cleanup.patch: Added.
-
-2013-04-10 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build fix. Correct DropBox download link.
-
- * Scripts/update-webkit-wincairo-libs: Revise download URL to
- match change in DropBox server behavior.
-
-2013-04-09 Geoffrey Garen <ggaren@apple.com>
-
- Removed an annoying message from svn-create-patch
- https://bugs.webkit.org/show_bug.cgi?id=114332
-
- Reviewed by Alexey Proskuryakov.
-
- I see this message basically every time I write a patch, so it must not
- be true.
-
- * Scripts/svn-create-patch:
- (generateDiff):
-
-2013-04-10 Anton Obzhirov <a.obzhirov@samsung.com>
-
- [GTK] Add support for Page Visibility
- https://bugs.webkit.org/show_bug.cgi?id=97324
-
- Reviewed by Sam Weinig.
-
- Implemented test runner API for page visibility layout tests.
-
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::resetPageVisibility):
- (TestRunner::setPageVisibility):
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-04-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [ATK] REGRESSION(r148033): Add a stub for AccessibilityUIElement::pathDescription().
- https://bugs.webkit.org/show_bug.cgi?id=114342
-
- Reviewed by Gyuyoung Kim.
-
- Commit 148033 only added an implementation for the Mac port, which made
- other ports fail most tests since loading the injected bundle failed
- with a missing symbol.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::pathDescription):
-
-2013-04-10 Artur Moryc <a.moryc@samsung.com>
-
- [EFL] Add spell checking option to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=114282
-
- Reviewed by Ryosuke Niwa.
-
- Spell checking is enabled by adding a flag (t/text-checking)
- with launching MiniBrowser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
-
-2013-04-10 Zan Dobersek <zdobersek@igalia.com>
-
- REGRESSION (r146518): WebKit2APITests/TestInspector is failing
- https://bugs.webkit.org/show_bug.cgi?id=113281
-
- Reviewed by Darin Adler.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Remove the skip entry for the WebKit2APITests/TestInspector unit test.
-
-2013-04-09 Glenn Adams <glenn@skynav.com>
-
- Fix trivial test-webkitpy regression introduced by http://trac.webkit.org/changeset/148075.
-
- Unreviewed.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RunTest.test_build_check):
-
-2013-04-09 Glenn Adams <glenn@skynav.com>
-
- [webkitpy] Remove chromium ports.
- https://bugs.webkit.org/show_bug.cgi?id=114326
-
- Reviewed by Dirk Pranke.
-
- As a side effect, also:
-
- - remove chromium builders from webkitpy.layout_tests.port.builders
- - remove chromium builders from rebaseline
- - rewrite chromium dependent tests in rebaseline_unittest
- - remove chromium platform from garden-o-matic
- - select apple platform as default platform in garden-o-matic
- - remove chromium port dependencies from a few other tests (run_webkit_tests_integrationtest, factory_unittest, style.checkers.test_expectations_unittest)
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_move_baselines):
- (BaselineOptimizerTest.test_efl):
- (BaselineOptimizerTest.test_no_add_mac_future):
- (BaselineOptimizerTest.test_win_does_not_drop_to_win_7sp0):
- (BaselineOptimizerTest.test_common_directory_includes_root):
- (BaselineOptimizerTest.test_complex_shadowing):
- (BaselineOptimizerTest.test_virtual_ports_filtered):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_win.py: Removed.
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py: Removed.
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (platform_options):
- (PortFactory):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_qt):
- (FactoryTest.test_get_from_builder_name):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RunTest.test_build_check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.test_determine_port_from_expectations_path):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (Rebaseline._builders_to_pull_from):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_BaseTestCase):
- (_BaseTestCase.setUp):
- (TestRebaselineTest.setUp):
- (TestRebaselineTest.test_baseline_directory):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (TestRebaselineExpectations.test_rebaseline_expectations):
-
-2013-04-09 Ryosuke Niwa <rniwa@webkit.org>
-
- newcommitbot (WKR) requires a subversion checkout
- https://bugs.webkit.org/show_bug.cgi?id=114309
-
- Reviewed by Benjamin Poulain.
-
- Directly talk to the subversion server instead of relying on a local checkout.
- This allows us to run WKR off of a git clone.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot.next_work_item):
- (NewCommitBot.process_work_item):
-
-2013-04-09 Ryosuke Niwa <rniwa@webkit.org>
-
- webkitbot refers to sheriffbot in help
- https://bugs.webkit.org/show_bug.cgi?id=114307
-
- Reviewed by Benjamin Poulain.
-
- Fixed the bug by proxying the IRC nickname of "sheriffbot" via Sheriff object.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Help):
- (Help.execute):
- (RollChromiumDEPS.execute):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_help):
- * Scripts/webkitpy/tool/bot/sheriff.py:
- (Sheriff.name):
-
-2013-04-06 Roger Fong <roger_fong@apple.com>
-
- Kill old processes between runs on WinEWS bots.
- Temporarily disable tests to let bots catch up again.
-
- * EWSTools/start-queue-win.sh:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-04-09 Glenn Adams <glenn@skynav.com>
-
- [webkitpy] Remove chromium deprecated port support.
- https://bugs.webkit.org/show_bug.cgi?id=114228
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port): Removed chromium ports from port name to port class mapping.
- (ChromiumPort): Removed.
- (ChromiumAndroidPort): Removed.
- (ChromiumXVFBPort): Removed.
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_chromium_port): Removed.
- (DeprecatedPortTest.test_chromium_android_port): Removed.
- (DeprecatedPortTest.test_chromium_xvfb_port): Removed.
- * Scripts/webkitpy/tool/steps/update_unittest.py:
- (UpdateTest.test_update_command_non_interactive): Use mac instead of chromium ports.
- (UpdateTest.test_update_command_interactive): Use mac instead of chromium ports.
-
-2013-04-09 Chris Fleizach <cfleizach@apple.com>
-
- AX: The bounding paths should be made available through accessibility
- https://bugs.webkit.org/show_bug.cgi?id=113817
-
- Reviewed by David Kilzer.
-
- Add a pathDescription property for testing so that it's possible
- to verify that a path is being returned correctly.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (getPathDescriptionCallback):
- (AccessibilityUIElement::pathDescription):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
- (_CGPathEnumerationIteration):
- (AccessibilityUIElement::pathDescription):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::pathDescription):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::pathDescription):
- (WTR):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::pathDescription):
- (WTR):
-
-2013-04-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL] Declare TEST_THEME_DIR in a single place.
- https://bugs.webkit.org/show_bug.cgi?id=114285
-
- Reviewed by Anders Carlsson.
-
- Adapt to the renaming of `THEME_DIR' to `TEST_THEME_DIR'.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::createInspectorView):
- (DumpRenderTreeChrome::initialize):
- (DumpRenderTreeChrome::onDownloadRequest):
- * EWebLauncher/CMakeLists.txt:
- * EWebLauncher/main.c:
- (findThemePath):
- * EWebLauncher/url_bar.c:
- (url_bar_add):
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c:
- (window_create):
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/PlatformEfl.cmake:
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2013-04-09 ChangSeok Oh <changseok.oh@collabora.com>
-
- [GTK][AC] upversion of clutter and its dependecy
- https://bugs.webkit.org/show_bug.cgi?id=114016
-
- Reviewed by Gustavo Noronha Silva.
-
- Upversion of clutter to 1.14, cogl to 1.14 and clutter-gtk to 1.4.4.
-
- * gtk/jhbuild-optional.modules:
-
-2013-04-09 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [WK2] Drop WebProcess capabilities on Linux using seccomp filters
- https://bugs.webkit.org/show_bug.cgi?id=89875
-
- Reviewed by Maciej Stachowiak.
-
- Add unit tests to verify if the handling of the open, openat, creat syscall
- is being done right. We check if the Read/Write/ReadAndWrite permissions
- are respected, if the canonical path is being resolved and if
- the permissions are falling back to the topmost parent directory with a
- policy set when the directory being opened has no policy.
-
- We also test if any attempt of blocking SIGSYS is silently ignored.
- SIGSYS cannot be blocked because in it's handler is where we hook
- syscalls to the broker process.
-
- Also added libseccomp to EFL's jhbuild to make the life of developers
- willing to help easier.
-
- * Scripts/webkitperl/FeatureList.pm:
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp: Added.
- (TestWebKitAPI):
- (SeccompEnvironment):
- (TestWebKitAPI::SeccompEnvironment::SetUp):
- (TestWebKitAPI::SeccompEnvironment::TearDown):
- (TestWebKitAPI::dummyHandler):
- (TestWebKitAPI::TEST):
- (TestWebKitAPI::stressTest):
- * efl/jhbuild.modules:
- * qmake/mkspecs/features/features.pri:
-
-2013-04-09 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION: Autocorrection doesn't work in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=113846
-
- Reviewed by Alexey Proskuryakov.
-
- The problem was that we were replacing NSSpellCheck's dictionary with our own
- in DumpRenderTree but we were not adding necessary corrections to the dictionary.
-
- Fixed the bug by having NSSpellChecker correct "mesage" and "wouldn" to "message"
- and "would" respectively in DumpRenderTree.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2013-04-09 Benjamin Poulain <benjamin@webkit.org>
-
- Remove the gyp files for Tools
- https://bugs.webkit.org/show_bug.cgi?id=114248
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/DumpRenderTree.gyp: Removed.
- * DumpRenderTree/DumpRenderTree.gyp/.gitignore: Removed.
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp: Removed.
- * DumpRenderTree/DumpRenderTree.gypi: Removed.
- * TestWebKitAPI/TestWebKitAPI.gyp: Removed.
- * TestWebKitAPI/TestWebKitAPI.gyp/.gitignore: Removed.
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp: Removed.
- * TestWebKitAPI/TestWebKitAPI.gypi: Removed.
-
-2013-04-08 Ryosuke Niwa <rniwa@webkit.org>
-
- WKR (new-commit-bot) is too slow
- https://bugs.webkit.org/show_bug.cgi?id=110087
-
- Reviewed by Geoffrey Garen.
-
- Running "svn up" or "git svn fetch" is way too slow (takes 2-3 minutes) on the machine I'm running the bot.
- Just run "svn log -r <revision>" instead to cut down the delay.
-
- Unfortunately, this work around doesn't work in a git checkout but who cares given I'm the one running the bot.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot):
- (NewCommitBot.next_work_item):
- (NewCommitBot._is_empty_log):
- (NewCommitBot._update_checkout):
-
-2013-04-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. Can't remove appendCustomBuildFlags.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (appendCustomBuildFlags):
-
-2013-04-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Chromium builders from build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=113990
-
- Reviewed by Benjamin Poulain.
-
- Removed.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (InstallGtkDependencies):
- (RunUnitTests.start):
- (RunWebKit2Tests.start):
- (Factory.__init__):
- (unitTestsSupported):
- (TestFactory.__init__):
- (BuildAndTestFactory.__init__):
- (BuildAndPerfTestFactory.__init__):
- (BuildAndPerfTestWebKit2Factory.__init__):
- (DownloadAndPerfTestFactory.__init__):
- (loadBuilderConfig):
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2013-04-08 Benjamin Poulain <benjamin@webkit.org>
-
- Remove HTML Notification
- https://bugs.webkit.org/show_bug.cgi?id=114231
-
- Reviewed by Ryosuke Niwa.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-04-08 Glenn Adams <glenn@skynav.com>
-
- Remove chromium EWS support, and fix broken test.
- https://bugs.webkit.org/show_bug.cgi?id=114221
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractChromiumEWS): Removed.
- (ChromiumLinuxEWS): Removed.
- (ChromiumLinuxDebugEWS): Removed.
- (ChromiumWindowsEWS): Removed.
- (ChromiumAndroidEWS): Removed.
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSystemTest): Fix misspelled class name.
- (test_ewses): Fix entry point name to ensure test is run.
-
-2013-04-08 Patrick Gansterer <paroga@webkit.org>
-
- [WIN] Remove WebKit2 source code
- https://bugs.webkit.org/show_bug.cgi?id=114096
-
- Reviewed by Anders Carlsson.
-
- Remove the windows specific parts of the MiniBrowser.
-
- * MiniBrowser/MiniBrowser.vcproj: Removed.
- * MiniBrowser/MiniBrowserLauncher.vcproj: Removed.
- * MiniBrowser/MiniBrowserPostBuild.cmd: Removed.
- * MiniBrowser/MiniBrowserPreBuild.cmd: Removed.
- * MiniBrowser/win/BrowserView.cpp: Removed.
- * MiniBrowser/win/BrowserView.h: Removed.
- * MiniBrowser/win/BrowserWindow.cpp: Removed.
- * MiniBrowser/win/BrowserWindow.h: Removed.
- * MiniBrowser/win/MiniBrowser.cpp: Removed.
- * MiniBrowser/win/MiniBrowser.h: Removed.
- * MiniBrowser/win/MiniBrowser.rc: Removed.
- * MiniBrowser/win/main.cpp: Removed.
- * MiniBrowser/win/resource.h: Removed.
- * MiniBrowser/win/stdafx.cpp: Removed.
- * MiniBrowser/win/stdafx.h: Removed.
-
-2013-04-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Use port 6665 instead of 6667 since the latter doesn't seem to work well.
-
- * Scripts/webkitpy/common/config/irc.py:
-
-2013-04-08 Arunprasad Rajkumar <arunprasadr@nds.com>
-
- Call Netscape Plugin's toString() and valueOf() instead of providing default implementation
- https://bugs.webkit.org/show_bug.cgi?id=113139
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters:
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
- * DumpRenderTree/TestNetscapePlugIn/Tests/ToStringAndValueOfObject.cpp: Added.
- (ToStringAndValueOfObject):
- (ToStringAndValueOfObject::ToStringAndValueOfObject):
- (ScriptableObject):
- (ToStringAndValueOfObject::ScriptableObject::hasMethod):
- (ToStringAndValueOfObject::ScriptableObject::invoke):
- (ToStringAndValueOfObject::ScriptableObject::pluginTest):
- (ToStringAndValueOfObject::NPP_GetValue):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2013-04-08 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Bump gnome-themes-standard to 3.6.0
- https://bugs.webkit.org/show_bug.cgi?id=114155
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: As now we depend on GTK+ 3.6.0 bump the
- dependency of gnome-themes-standard accordingly.
-
-2013-04-08 David Levin <levin@chromium.org>
-
- Remove my watchlist entries.
- https://bugs.webkit.org/show_bug.cgi?id=114180
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-08 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL] Mark ShouldGoToBackForwardListItem API test as failing
- https://bugs.webkit.org/show_bug.cgi?id=114161
-
- Reviewed by Gyuyoung Kim.
-
- Mark ShouldGoToBackForwardListItem API test as failing for EFL port
- as it is crashing due to Bug 111074.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2013-04-07 David Kilzer <ddkilzer@apple.com>
-
- Remove the rest of SVG_DOM_OBJC_BINDINGS
- <http://webkit.org/b/114112>
-
- Reviewed by Geoffrey Garen.
-
- * Scripts/webkitperl/FeatureList.pm:
- - Remove --svg-dom-objc-bindings switch.
- * qmake/mkspecs/features/features.pri:
- - Remove reference to ENABLE_SVG_DOM_OBJC_BINDINGS.
-
-2013-04-07 Ed Bartosh <bartosh@gmail.com>
-
- [EFL] -minimal build fails with error: WebCore::FrameSelection::notifyAccessibilityForSelectionChange()
- https://bugs.webkit.org/show_bug.cgi?id=114089
-
- Reviewed by Chris Fleizach.
-
- Wrapped accessibility related code in #if HAVE(ACCESSIBILITY)
- * DumpRenderTree/AccessibilityController.cpp:
- * DumpRenderTree/AccessibilityUIElement.cpp:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::DumpRenderTreeChrome):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
-
-2013-04-06 Laszlo Gombos <l.gombos@samsung.com>
-
- Build fix after r147857, remove remaining USE(JSC) guards.
-
- Unreviewed.
-
- * DumpRenderTree/config.h:
- * TestWebKitAPI/config.h:
- * WebKitTestRunner/config.h:
-
-2013-04-06 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename sheriffbot to webkitbot
- https://bugs.webkit.org/show_bug.cgi?id=114109
-
- Reviewed by Benjamin Poulain.
-
- Renamed since sheriffbot will be used in Blink.
-
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- (SheriffBot):
- (SheriffBot.begin_work_queue):
-
-2013-04-06 Oliver Hunt <oliver@apple.com>
-
- Unify the many and varied stack trace mechanisms, and make the result sane.
- https://bugs.webkit.org/show_bug.cgi?id=114072
-
- Reviewed by Filip Pizlo.
-
- The commandline jsc executable no longer requires arguments, so
- I've made run-jsc work without them.
-
- * Scripts/run-jsc:
-
-2013-04-06 Ed Bartosh <bartosh@gmail.com>
-
- [EFL] build fails with error: 'UINT_MAX' was not declared in this scope
- https://bugs.webkit.org/show_bug.cgi?id=114086
-
- Reviewed by Tim Horton.
-
- * DumpRenderTree/AccessibilityUIElement.cpp: Included limits.h
-
-2013-04-06 Zan Dobersek <zdobersek@igalia.com>
-
- Remove remaining PLATFORM(CHROMIUM) guards in TestWebKitAPI, WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=114083
-
- Reviewed by Ryosuke Niwa.
-
- Remove the remaining three occurrences of the PLATFORM(CHROMIUM) build guards
- in TestWebKitAPI and WebKitTestRunner.
-
- * TestWebKitAPI/config.h:
- * TestWebKitAPI/mac/InjectedBundleControllerMac.mm:
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
-
-2013-04-06 Geoffrey Garen <ggaren@apple.com>
-
- Rolled out 147820 and 147818 because they caused plugins tests to ASSERT
- https://bugs.webkit.org/show_bug.cgi?id=114094
-
- Reviewed by Anders Carlsson.
-
- * Scripts/run-jsc:
-
-2013-04-05 Ojan Vafai <ojan@chromium.org>
-
- Move the flakiness dashboard to the new instance at webkit-test-results.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=114080
-
- Reviewed by Ryosuke Niwa.
-
- This way, the WebKit and Blink dashboard code can change as appropriate without
- needing to consider the other project's needs. This still doesn't update the
- buildbots to upload to the new location, or the dashboard code to pull the
- results.json files from the new location, but it at least allows for changing the
- UI code (e.g. the WebKit one can remove all knowledge of the Chromium bots).
-
- * TestResultServer/app.yaml:
-
-2013-04-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Re-enable testing on the commit queue
- https://bugs.webkit.org/show_bug.cgi?id=114078
-
- Reviewed by Darin Adler.
-
- Re-enabled the feature and the associated tests.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- (CommitQueueTask.run):
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (CommitQueueTaskTest._run_through_task):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest._mock_test_result):
-
-2013-04-05 Oliver Hunt <oliver@apple.com>
-
- Unify the many and varied stack trace mechanisms, and make the result sane.
- https://bugs.webkit.org/show_bug.cgi?id=114072
-
- Reviewed by Filip Pizlo.
-
- The commandline jsc executable no longer requires arguments, so
- I've made run-jsc work without them.
-
- * Scripts/run-jsc:
-
-2013-04-05 Chris Fleizach <cfleizach@apple.com>
-
- AX: Make SVG Group containers accessible elements
- https://bugs.webkit.org/show_bug.cgi?id=113939
-
- Reviewed by Simon Fraser.
-
- Implement axController.elementAtPoint for iOS.
- Implement a correct version of clickPoint for iOS.
-
- * DumpRenderTree/ios/AccessibilityControllerIOS.mm:
- (AccessibilityController::elementAtPoint):
- * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
-
-2013-04-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r147773 and r147774.
- http://trac.webkit.org/changeset/147773
- http://trac.webkit.org/changeset/147774
- https://bugs.webkit.org/show_bug.cgi?id=114056
-
- Causing some exceptions on AppEngine I don't understand
- (Requested by rniwa on #webkit).
-
- * QueueStatusServer/config/queues.py:
- * QueueStatusServer/model/queues.py:
- (Queue.short_name):
- (Queue.display_name):
- * QueueStatusServer/model/queues_unittest.py:
- (QueueTest.test_short_name):
- (QueueTest.test_display_name):
- (QueueTest.test_name_with_underscores):
-
-2013-04-05 Geoffrey Garen <ggaren@apple.com>
-
- Fixed run-bindings-tests by removing V8
- https://bugs.webkit.org/show_bug.cgi?id=114053
-
- Reviewed by Benjamin Poulain.
-
- * Scripts/run-bindings-tests:
- (main):
-
-2013-04-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix.
-
- * QueueStatusServer/model/queues.py:
- (Queue.short_name):
- (Queue.display_name):
-
-2013-04-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Chromium EWS bots from the queue status server
- https://bugs.webkit.org/show_bug.cgi?id=113988
-
- Reviewed by Benjamin Poulain.
-
- Removed Chromium EWS bots.
-
- * QueueStatusServer/config/queues.py:
- * QueueStatusServer/model/queues.py:
- (Queue.short_name):
- (Queue.display_name):
- * QueueStatusServer/model/queues_unittest.py:
- (QueueTest.test_short_name):
- (QueueTest.test_display_name):
- (QueueTest.test_name_with_underscores):
-
-2013-04-05 Rijubrata Bhaumik <rijubrata.bhaumik@intel.com>
-
- [EFL] Enable indexed database
- https://bugs.webkit.org/show_bug.cgi?id=107248
-
- Reviewed by Alexis Menard.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-04-05 Dimitri Glazkov <dglazkov@chromium.org>
-
- Remove vestiges of Chromium bits from watchlists.
- https://bugs.webkit.org/show_bug.cgi?id=114047
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitpy/common/config/watchlist: Removed vestiges.
-
-2013-04-05 Chris Fleizach <cfleizach@apple.com>
-
- Add James Craig to the contributors list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-04-04 Kent Tamura <tkent@chromium.org>
-
- Remove ChromiumPublicApi pattern, and cc/message rules for it.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-04 Benjamin Poulain <bpoulain@apple.com>
-
- Temporarily disable the Python unittests broken by the commit queue not running layout tests
- https://bugs.webkit.org/show_bug.cgi?id=113997
-
- Reviewed by Ryosuke Niwa.
-
- Disable the tests until Ryosuke gets the time and hardware to have
- a testing commit-queue.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (CommitQueueTaskTest):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest):
-
-2013-04-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Chromium builders from build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=113990
-
- Reviewed by Benjamin Poulain.
-
- Land the part to disable triggering of Chromium builders first so that we may start
- deleting more Chromium code that breaks the update step.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-04-04 Benjamin Poulain <bpoulain@apple.com>
-
- Remove Chromium's DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=113989
-
- Reviewed by Kent Tamura.
-
- On second thought, let's not go to Camelot. It is a silly place.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
-
-2013-04-04 Geoffrey Garen <ggaren@apple.com>
-
- Nixed the defunct chromium folder from DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=113993
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/chromium: Removed.
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp: Removed.
- * DumpRenderTree/chromium/DRTDevToolsAgent.h: Removed.
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp: Removed.
- * DumpRenderTree/chromium/DRTDevToolsClient.h: Removed.
- * DumpRenderTree/chromium/DumpRenderTree.cpp: Removed.
- * DumpRenderTree/chromium/ImageDiff.cpp: Removed.
- * DumpRenderTree/chromium/LayoutTestHelper.mm: Removed.
- * DumpRenderTree/chromium/LayoutTestHelperWin.cpp: Removed.
- * DumpRenderTree/chromium/MockPlatform.cpp: Removed.
- * DumpRenderTree/chromium/MockPlatform.h: Removed.
- * DumpRenderTree/chromium/MockWebPrerenderingSupport.cpp: Removed.
- * DumpRenderTree/chromium/MockWebPrerenderingSupport.h: Removed.
- * DumpRenderTree/chromium/Task.cpp: Removed.
- * DumpRenderTree/chromium/Task.h: Removed.
- * DumpRenderTree/chromium/TestEventPrinter.cpp: Removed.
- * DumpRenderTree/chromium/TestEventPrinter.h: Removed.
- * DumpRenderTree/chromium/TestNavigationController.cpp: Removed.
- * DumpRenderTree/chromium/TestNavigationController.h: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h: Removed.
- * DumpRenderTree/chromium/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h: Removed.
- * DumpRenderTree/chromium/TestRunner: Removed.
- * DumpRenderTree/chromium/TestRunner/public: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src: Removed.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockConstraints.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockConstraints.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDTMFSenderHandler.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDTMFSenderHandler.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDataChannelHandler.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDataChannelHandler.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechInputController.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechInputController.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechRecognizer.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechRecognizer.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/NotificationPresenter.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/NotificationPresenter.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/config.h: Removed.
- * DumpRenderTree/chromium/TestShell.cpp: Removed.
- * DumpRenderTree/chromium/TestShell.h: Removed.
- * DumpRenderTree/chromium/TestShellAndroid.cpp: Removed.
- * DumpRenderTree/chromium/TestShellMac.mm: Removed.
- * DumpRenderTree/chromium/TestShellPosix.cpp: Removed.
- * DumpRenderTree/chromium/TestShellStub.cpp: Removed.
- * DumpRenderTree/chromium/TestShellWin.cpp: Removed.
- * DumpRenderTree/chromium/TestShellX11.cpp: Removed.
- * DumpRenderTree/chromium/WebViewHost.cpp: Removed.
- * DumpRenderTree/chromium/WebViewHost.h: Removed.
- * DumpRenderTree/chromium/android_fallback_fonts.xml: Removed.
- * DumpRenderTree/chromium/android_main_fonts.xml: Removed.
- * DumpRenderTree/chromium/config.h: Removed.
- * DumpRenderTree/chromium/fonts.conf: Removed.
-
-2013-04-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove the rebaseline queue server since nobody except maybe one person from Google uses it.
-
- Rubber stamped by Benjamin Poulain.
-
- * RebaselineQueueServer: Removed.
- * RebaselineQueueServer/app.yaml: Removed.
- * RebaselineQueueServer/handlers: Removed.
- * RebaselineQueueServer/handlers/__init__.py: Removed.
- * RebaselineQueueServer/handlers/builderqueue.py: Removed.
- * RebaselineQueueServer/handlers/pages.py: Removed.
- * RebaselineQueueServer/index.yaml: Removed.
- * RebaselineQueueServer/main.py: Removed.
- * RebaselineQueueServer/model: Removed.
- * RebaselineQueueServer/model/__init__.py: Removed.
- * RebaselineQueueServer/model/queueentry.py: Removed.
- * RebaselineQueueServer/static: Removed.
- * RebaselineQueueServer/static/builder-frame-empty.html: Removed.
- * RebaselineQueueServer/static/styles.css: Removed.
- * RebaselineQueueServer/templates: Removed.
- * RebaselineQueueServer/templates/builder-picker.html: Removed.
- * RebaselineQueueServer/templates/builder-queue-edit.html: Removed.
- * RebaselineQueueServer/templates/builder-queue-list.html: Removed.
- * RebaselineQueueServer/templates/home.html: Removed.
-
-2013-04-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix setup-commit-queue and temporarily disable testing on commit-queue
- https://bugs.webkit.org/show_bug.cgi?id=113979
-
- Reviewed by Benjamin Poulain.
-
- Use commit-queue@webkit.org instead of webkit.bot.review@gmail.com in commit-queue,
- and temporarily disable tests in commit-queue as we don't have enough resources at the moment.
-
- * EWSTools/setup-commit-queue.sh:
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- (CommitQueueTask.run):
-
-2013-04-04 Dirk Pranke <dpranke@chromium.org>
-
- temporarily make flakiness dashboard work again webkit.org bots
- https://bugs.webkit.org/show_bug.cgi?id=113972
-
- Reviewed by Ojan Vafai.
-
- This patch disables the chromium.org layout test bots TestExpectations
- parsing temporarily until we can work out the right way to split into
- two instances for webkit.org and chromium.org and figure out which
- code to delete where :).
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
-
-2013-04-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix webkitpy tests after r147678.
-
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (CommitQueueTest.test_commit_queue):
- (test_manual_reject_during_processing):
-
-2013-04-04 Ryosuke Niwa <rniwa@webkit.org>
-
- The commit queue should use Mac MountainLion port
- https://bugs.webkit.org/show_bug.cgi?id=113971
-
- Reviewed by Lucas Forschler.
-
- * EWSTools/setup-commit-queue.sh: Copied from Tools/EWSTools/GoogleComputeEngine/build-commit-queue.sh.
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue):
-
-2013-04-04 Dirk Pranke <dpranke@chromium.org>
-
- turn off running tests on chromium linux EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=113959
-
- Reviewed by Geoffrey Garen.
-
- Now that the Chromium port is no longer being maintained
- there's little point in running the tests. Soon we should
- just shut this bot off altogether.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (ChromiumLinuxEWS):
-
-2013-04-04 Andrew Scherkus <scherkus@chromium.org>
-
- Unreviewed. Removing feature-media-reviews@chromium.org from Media watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-04-04 Pierre Rossi <pierre.rossi@gmail.com>
-
- Indentation fix to get webkit-patch working again after r147625
-
- Unreviewed.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
- (MacWK2EWS):
-
-2013-04-04 Lucas Forschler <lforschler@apple.com>
-
- Turn tests back on for Mac WK1/WK2 EWS.
-
- Unreviewed.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
- (MacWK2EWS):
-
-2013-04-04 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WK2] MiniBrowser custom URI scheme support
- https://bugs.webkit.org/show_bug.cgi?id=112419
-
- Reviewed by Carlos Garcia Campos.
-
- Add support for about URIs in MiniBrowser. An example about page is show
- with URI "about:minibrowser", the rest of the cases it will show a
- proper message explaining that the about page didn't exist.
-
- Internally it uses "minibrowser-about" prefix instead of "about", but
- from the user point of view it works with "about" prefix.
-
- * MiniBrowser/gtk/BrowserWindow.c: Add miniBrowserAboutScheme constant.
- (getInternalURI): Method to convert URIs from "about" prefix to
- "minibrowser-about".
- (getExternalURI): Opposite method.
- (webViewURIChanged): Use "about" prefix to show the URI to users.
- (webViewEnterFullScreen): Ditto.
- (browser_window_load_uri): Use "minibrowser-about" prefix internally.
- * MiniBrowser/gtk/main.c: Add miniBrowserAboutScheme constant.
- (aboutURISchemeRequestCallback): Callback to manage about calls.
- (main): Register the URI scheme to manage about URIs.
-
-2013-04-03 Roger Fong <roger_fong@apple.com>
-
- Re-enable WinEWS tests.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-04-03 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK][Jhbuild] Move ATK to the main moduleset, bump ATK, at-spi2-(atk|core) versions to 2.8.0
- https://bugs.webkit.org/show_bug.cgi?id=113883
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild-optional.modules: Remove the ATK entry as it is now placed in jhbuild.modules.
- * gtk/jhbuild.modules: Add ATK to the list of webkitgtk-testing-dependencies metamodule, using the 2.8.0 version.
- The at-spi2-core and at-spi2-atk versions are also increased to 2.8.0.
-
-2013-04-03 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Include Pango in jhbuild-optional.modules
- https://bugs.webkit.org/show_bug.cgi?id=113878
-
- Reviewed by Martin Robinson.
-
- Since r147547 Pango 1.32.0 is required. Including the module in the
- JHBuild optional moduleset.
-
- * gtk/jhbuild-optional.modules: Add Pango module.
-
-2013-04-03 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Add getter for JSC TestRunner to DumpRenderTreeQt.
- https://bugs.webkit.org/show_bug.cgi?id=113864
-
- Moving setDefersLoading from TestRunnerQt to TestRunner
- requires access to the non-Qt TestRunner.
- As long as we instantiate both TestRunner and TestRunnerQt,
- we need a separate getter for the non-Qt TestRunner instance.
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebPage::resetSettings):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree::jscTestRunner):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::setDefersLoading):
- Moving setDefersLoading from TestRunnerQt
- to TestRunner.
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-04-03 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WK2] Unskip /webkit2/WebKitWebContext/uri-scheme
- https://bugs.webkit.org/show_bug.cgi?id=104779
-
- Reviewed by Carlos Garcia Campos.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip /webkit2/WebKitWebContext/uri-scheme as it is
- passing in current trunk.
-
-2013-04-03 Pierre Rossi <pierre.rossi@digia.com>
-
- Fix HAVE(QTTESTSUPPORT) logic
-
- build_qttestsupport has not been added to WEBKIT_CONFIG in detectFeatures,
- resulting in HAVE(QTTESTSUPPORT) never being true.
- Move that logic down in sanitizeFeatures.
-
- Rubber-stamped by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-04-03 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Bump required versions of some dependencies
- https://bugs.webkit.org/show_bug.cgi?id=113282
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: Update libsoup, glib, at-spi2 and gtk+ versions.
-
-2013-04-03 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-
- [GTK] gst-plugins-good fails to build with newer Linux(v4l2)
- https://bugs.webkit.org/show_bug.cgi?id=113809
-
- Reviewed by Philippe Normand.
-
- Newer Linux kernels have removed some deprecated macros from v4l2
- headers, causing gst-plugins-good's build to break. We don't need it
- right now, so just disable it.
-
- * gtk/jhbuild.modules: disable v4l2 usage in gst-plugins-good.
-
-2013-03-28 Jesus Sanchez-Palencia <jesus.palencia@openbossa.org>
-
- [Qt] Switch ContextMenu implementation to CROSS_PLATFORM_CONTEXT_MENU
- https://bugs.webkit.org/show_bug.cgi?id=113535
-
- Reviewed by Simon Hausmann.
-
- Adding USE_CROSS_PLATFORM_CONTEXT_MENUS to WEBKIT_CONFIG.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-04-03 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Move logic of simple forwarding functions to TestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=113863
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::setTextDirection):
- (TestRunner::goBack):
- (TestRunner::evaluateScriptInIsolatedWorld):
- (TestRunner::addUserStyleSheet):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-04-03 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Disable media support using QuickTime if deployment target != SDK
-
- We link to a single libWebKitSystemInterface static lib, so unless the
- deployment target matches the SDK let's not pretend like we'll be able
- to run on anything lower than the SDK version.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-04-02 James Craig <james@cookiecrook.com>
-
- AXRoleDescripton for DL is "list"; should be "description list"
- https://bugs.webkit.org/show_bug.cgi?id=111665
-
- Reviewed by Chris Fleizach.
-
- Defining the role and description strings.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
-
-2013-04-02 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Disable running tests on Win EWS queue.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-04-02 Lucas Forschler <lforschler@apple.com>
-
- Disable running tests on the MAC WK2 EWS queue.
-
- Unreviewed.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacWK2EWS):
-
-2013-04-02 Julie Parent <jparent@chromium.org>
-
- Dashboard refactor: Move dashboard specific history related features to History.
- https://bugs.webkit.org/show_bug.cgi?id=113717
-
- Reviewed by Ojan Vafai.
-
- Each dashboard now creates its own History object, with a custom
- configuration. This changes from just overriding global functions
- to passing in callbacks for generatePage, handleValidHashParameter,
- and handleQueryParameterChange. Same with passing in defaultStateValues
- and DB_SPECIFIC_INVALIDATING_PARAMS, rather than overriding the global
- variables.
-
- All functions related to these features are now (mostly) private
- function on History.
-
- Loader no longer needs a loadingComplete callback, since it can just
- initialize the history object itself.
-
- * TestResultServer/static-dashboards/aggregate_results.js:
- (handleValidHashParameter):
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- (.switch.return):
- (handleQueryParameterChange):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- * TestResultServer/static-dashboards/history.js:
- (.):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
- * TestResultServer/static-dashboards/timeline_explorer.js:
- (generatePage):
- (initCurrentBuilderTestResults):
- * TestResultServer/static-dashboards/treemap.js:
- (generatePage):
- (.switch.return):
- (handleQueryParameterChange):
-
-2013-04-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r147401.
- http://trac.webkit.org/changeset/147401
- https://bugs.webkit.org/show_bug.cgi?id=113767
-
- The patch makes it extremely hard to set up the dependencies
- properly on the GTK builders (Requested by zdobersek on
- #webkit).
-
- * gtk/jhbuild.modules:
-
-2013-04-02 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Empty tooltip shown when hovering over popup menu items
- https://bugs.webkit.org/show_bug.cgi?id=113382
-
- Reviewed by Gyuyoung Kim.
-
- Do not show the empty tooltip box if the text is null.
-
- * MiniBrowser/efl/main.c:
- (popup_menu_populate):
-
-2013-04-02 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Bump required versions of some dependencies
- https://bugs.webkit.org/show_bug.cgi?id=113282
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: Update libsoup, glib, at-spi2 and gtk+ versions.
-
-2013-04-01 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r147319.
- http://trac.webkit.org/changeset/147319
- https://bugs.webkit.org/show_bug.cgi?id=113707
-
- The unit test is still failing on the buildbot (Requested by
- zdobersek on #webkit).
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2013-04-01 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WK2] Unskip /webkit2/WebKitWebContext/uri-scheme
- https://bugs.webkit.org/show_bug.cgi?id=104779
-
- Reviewed by Carlos Garcia Campos.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip /webkit2/WebKitWebContext/uri-scheme as it is
- passing in current trunk.
-
-2013-03-31 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r147289.
- http://trac.webkit.org/changeset/147289
- https://bugs.webkit.org/show_bug.cgi?id=113678
-
- broke Win7 (dbg) build (Requested by shinyak|gardener on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/public/WebUserMediaClientMock.h.
- (WebTestRunner):
- (WebUserMediaClientMock):
- (WebTestRunner::WebUserMediaClientMock::~WebUserMediaClientMock):
- (WebTestRunner::WebUserMediaClientMock::taskList):
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_function_definition):
-
-2013-03-31 Adam Barth <abarth@webkit.org>
-
- configure-svn-config.sh fails
- https://codereview.chromium.org/13392007/
-
- Reviewed by Eric Seidel.
-
- This script was trying to use "svn checkout" to dowload a file from
- svn.webkit.org, but "svn checkout" only works with directories.
- Instead, we should use "svn export".
-
- * EWSTools/configure-svn-config.sh:
-
-2013-03-31 Wei Jia <wjia@chromium.org>
-
- Allow WebUserMediaClientMock to be used by client
- https://bugs.webkit.org/show_bug.cgi?id=113633
-
- Reviewed by Adam Barth.
-
- Export WebUserMediaClientMock.
- Allow files in chromium/TestRunner/public to have WEBKIT_EXPORT.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebUserMediaClientMock.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.h.
- (WebUserMediaClientMock):
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.h: Removed.
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_function_definition):
-
-2013-03-29 Alexey Proskuryakov <ap@apple.com>
-
- Expose FeatureObserver data to WebKit clients
- https://bugs.webkit.org/show_bug.cgi?id=113613
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Added an initializer for featuresUsedInPage.
-
-2013-03-29 Greg Hughes <ghughes@apple.com>
-
- Allow multiple searchKeys to be passed to AXUIElementCopyParameterizedAttributeValue
- https://bugs.webkit.org/show_bug.cgi?id=112276
-
- Reviewed by Chris Fleizach.
-
- Added support to test accessibility search predicates with multiple keys.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (uiElementForSearchPredicateCallback):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/ios/AccessibilityUIElementIOS.mm:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::uiElementForSearchPredicate):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::uiElementForSearchPredicate):
-
-2013-03-29 Ryosuke Niwa <rniwa@webkit.org>
-
- Fix a typo in r147147 to fix Mac EWS.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (PatchProcessingQueue._new_port_name_from_old):
-
-2013-03-28 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Build break with latest EFL libraries after r146265
- https://bugs.webkit.org/show_bug.cgi?id=113558
-
- Unreviewed build fix.
-
- * TestWebKitAPI/PlatformWebView.h:
- * WebKitTestRunner/PlatformWebView.h:
-
-2013-03-28 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Unreviewed. Fix build break when running --update-efl in WebKit EFL.
-
- * efl/jhbuild.modules: Remove to run autogen.sh in libgcrypt autogen. It causes configuration fail
- in libgcrypt build.
-
-2013-03-28 Lucas Forschler <lforschler@apple.com>
-
- Disable running tests on Mac EWS until we can find a way to keep the queue at a reasonable length.
-
- Unreviewed.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
-
-2013-03-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Use the right OS name on Mac EWS instead of mac-future.
-
- Rubber-stamped by Dirk Pranke.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (PatchProcessingQueue._new_port_name_from_old):
- (PatchProcessingQueue.begin_work_queue):
- (PatchProcessingQueue._upload_results_archive_for_patch):
-
-2013-03-28 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Build GTK-specific, non-layer-violating source code into WebCore-independent libPlatformGtk.la
- https://bugs.webkit.org/show_bug.cgi?id=112546
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Reference the platformgtk_cppflags amongst the libWebCoreInternals' CPPFLAGS. GtkVersioning.c file has
- moved back to Source/WebCore/platform. Fix an indentation issue as well.
-
-2013-03-28 Ming Xie <mxie@blackberry.com>
-
- [BlackBerry] Committer Email Updates
- https://bugs.webkit.org/show_bug.cgi?id=113435
-
- Reviewed by Rob Buis.
-
- Add the @blackberry.com email address for all our BlackBerry
- WebKit committers. This is the first step for our email address
- migration.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-28 Philippe Normand <pnormand@igalia.com>
-
- [jhbuild] GStreamer system plugins conflict with the ones built in jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=113508
-
- Reviewed by Martin Robinson.
-
- Prevent the GStreamer plugin scanner to load system-wide
- plugins. Only the ones built in JHBuild should be loaded and used
- at runtime.
-
- * efl/jhbuildrc:
- * gtk/jhbuildrc:
-
-2013-03-27 Philippe Normand <pnormand@igalia.com>
-
- [GTK] run-launcher --gtk -2 fails on a WK2-only build
- https://bugs.webkit.org/show_bug.cgi?id=113386
-
- Reviewed by Carlos Garcia Campos.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName): The WebKit2GTK .so name change from 1.0
- version to 3.0. Reflect this change so the builtDylibPathForName
- function doesn't fail to report the library as found.
-
-2013-03-28 Jaehun Lim <ljaehun.lim@samsung.com>
-
- [CMAKE] Build fix after r147052. Add WebKit2/Shared/Plugins to include path
- https://bugs.webkit.org/show_bug.cgi?id=113484
-
- Unreviewed build fix.
-
- Add "WebKit2/Shared/Plugins" to include path for TestWebKitAPI, WebKitTestRunner.
-
- * TestWebKitAPI/CMakeLists.txt:
- * WebKitTestRunner/CMakeLists.txt:
-
-2013-03-27 Mario Sanchez Prada <mario.prada@samsung.com>
-
- Revision for the internal jhbuild is too old
- https://bugs.webkit.org/show_bug.cgi?id=113324
-
- Reviewed by Martin Robinson.
-
- Update the minimum required version to a point where jhbuild won't
- fail installing packages when trying to remove a symlink to a directory.
-
- * jhbuild/jhbuild-wrapper: Updated revision.
-
-2013-03-27 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK][jhbuild] gst-plugins-good mixes system libsoup-gnome with custom libsoup
- https://bugs.webkit.org/show_bug.cgi?id=113203
-
- Reviewed by Philippe Normand.
-
- We build our libsoup without GNOME support. gst-plugins-good does separate
- pkg-config checks for libsoup-gnome and libsoup, causing the build to use
- libsoup-gnome from the system and soup from the jhbuild prefix. This may lead to
- build failures as the headers of those diverge. We do not use souphttpsrc, so
- disable it when building gst-plugins-good.
-
- * gtk/jhbuild.modules: disable soup support in gst-plugins-good.
-
-2013-03-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r146852. Please another reference to the Lion leaks builder.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-03-27 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK][webkitpy] A huge list of warnings about missing bugs in expectations when running NRWT with WKTR
- https://bugs.webkit.org/show_bug.cgi?id=113421
-
- Reviewed by Dirk Pranke.
-
- When running the layout tests with WKTR through NRWT, the GTK port also uses the generic WK2 TestExpectations file.
- This file contains a large amount of expectations that are not listing a specific bug modifier, so this produces an
- equally large amount of warnings due to the GTK port preferring for every expectation to have the bug modifier present
- in the GTK-specific TestExpectations files.
-
- To avoid this only enable the warnings only when not using WKTR.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.warn_if_bug_missing_in_test_expectations):
-
-2013-03-27 Antti Koivisto <antti@apple.com>
-
- Fix Zalan's email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-27 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg cleanup
- https://bugs.webkit.org/show_bug.cgi?id=113195
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
-
-2013-03-27 Csaba Osztrogonác <ossy@webkit.org>
-
- master.cfg fine-tuning for Qt Mountain Lion Release bot
- https://bugs.webkit.org/show_bug.cgi?id=113191
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- - Rename the slave due to its location change.
- - Update the platform of the slave.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunQtAPITests): Enable running WK2 API tests on Qt.
- (RunQtAPITests.start):
- (RunWebKit2Tests.start): Force pixel tests on the Qt Mountain Lion Release builder.
- (BuildAndTestWebKit2Factory): Added. (Build WK1 and WK2 too, but run only WK2 tests.)
-
-2013-03-27 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][jhbuild] Evas fails to build when Wayland is present on the system
- https://bugs.webkit.org/show_bug.cgi?id=113403
-
- Reviewed by Kenneth Rohde Christiansen.
-
- As of Evas 1.7.5, when Wayland is detected on the system, support for
- both Wayland SHM and Wayland EGL is automatically enabled in autoconf.
- The code, however, seems to depend on a few other flags which must be
- explicitly enabled.
-
- If those additional GL-related options are passed, we end up
- having issues on the WebKit side, so disable Wayland support for
- now.
-
- * efl/jhbuild.modules:
-
-2013-03-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r146864.
- http://trac.webkit.org/changeset/146864
- https://bugs.webkit.org/show_bug.cgi?id=113391
-
- causes crashes on Wk2 EFL release bot (Requested by drott on
- #webkit).
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-27 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [jhbuild] Correctly specify an alternate number of make jobs.
- https://bugs.webkit.org/show_bug.cgi?id=113396
-
- Reviewed by Philippe Normand.
-
- So far, we were using the `MAKEFLAGS' environment variable to pass the
- number of compilation jobs we wanted to jhbuild. jhbuild itself, on the
- other hand, prefers to use the `jobs' variable from jhbuildrc for that.
-
- We now behave more closely to the rest of the WebKit tools by first
- checking the `NUMBER_OF_PROCESSORS' environment variable and, if it is
- not set, just letting jhbuild itself figure out how many jobs to use.
-
- * efl/jhbuildrc:
- * gtk/jhbuildrc:
-
-2013-03-27 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Remove Qt specific WorkQueueItem definitions.
- https://bugs.webkit.org/show_bug.cgi?id=112891
-
- This patch is preparation work for removing
- WorkQueue related code from TestRunnerQt and
- replacing it with generic TestRunner code.
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::queueBackNavigation):
- (TestRunnerQt::queueForwardNavigation):
- (TestRunnerQt::queueLoadHTMLString):
- (TestRunnerQt::queueReload):
- (TestRunnerQt::queueLoadingScript):
- (TestRunnerQt::queueNonLoadingScript):
- (TestRunner::queueLoad):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
- * DumpRenderTree/qt/WorkQueueItemQt.cpp:
- (LoadItem::invoke):
- (LoadHTMLStringItem::invoke):
- (LoadAlternateHTMLStringItem::invoke):
- (ReloadItem::invoke):
- (ScriptItem::invoke):
- (BackForwardItem::invoke):
- * DumpRenderTree/qt/WorkQueueItemQt.h:
- (LoadAlternateHTMLStringItem::LoadAlternateHTMLStringItem):
- (LoadAlternateHTMLStringItem):
-
-2013-03-26 Julie Parent <jparent@chromium.org>
-
- Flakiness dashboard: simplify logic around which tests to show.
- https://bugs.webkit.org/show_bug.cgi?id=113250
-
- Reviewed by Ojan Vafai.
-
- The different filters for showing results are only used for layout
- tests, otherwise, we show everything.
-
- Change the defaults to false (what layout tests used), and only
- look at the values when viewing layout tests.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (htmlForTestsWithExpectationsButNoFailures):
- (shouldHideTest):
-
-2013-03-26 Isaac Levy <ilevy@google.com>
-
- Update bots on test-results.appspot
- https://bugs.webkit.org/show_bug.cgi?id=113333
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.jsonp:
-
-2013-03-26 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): A follow-up to 146859, skipping the complete WebKit2APITests/TestInspector unit test.
-
-2013-03-26 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Enable release/debug/2/webkit2 options for run-qtwebkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=113287
-
- Reviewed by Jocelyn Turcotte.
-
- * Scripts/run-qtwebkit-tests:
- (Options.__init__):
-
-2013-03-26 Rijubrata Bhaumik <rijubrata.bhaumik@intel.com>
-
- [EFL] Enable IndexedDB by default
- https://bugs.webkit.org/show_bug.cgi?id=107248
-
- Reviewed by Laszlo Gombos.
-
- * Scripts/webkitperl/FeatureList.pm:
- Enable IndexedDB by default on EFL.
-
-2013-03-26 Alan Cutter <alancutter@chromium.org>
-
- Sheriffbot should explain rollout failures in a human readable form.
- https://bugs.webkit.org/show_bug.cgi?id=107092
-
- Reviewed by Ryosuke Niwa.
-
- Improved sheriffbot's error reporting when a rollout command fails to reverse diff files (the most common failure).
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Rollout._check_diff_failure):
- (Rollout.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_rollout):
-
-2013-03-26 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skipping a failing unit test after r146518.
-
-2013-03-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove Lion leaks builder
- https://bugs.webkit.org/show_bug.cgi?id=113252
-
- Reviewed by Andreas Kling.
-
- Removed.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-03-25 Kent Tamura <tkent@chromium.org>
-
- Rename ENABLE_INPUT_TYPE_DATETIME
- https://bugs.webkit.org/show_bug.cgi?id=113254
-
- Reviewed by Kentaro Hara.
-
- Rename ENABLE_INPUT_TYPE_DATETIME to ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE.
- Actually I'd like to remove the code, but we shouldn't remove it yet
- because we shipped products with it on some platforms.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-03-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove one more line that was intended to be removed in r146657.
-
- * Scripts/webkitpy/layout_tests/models/test_run_results.py:
- (summarize_results):
-
-2013-03-25 Roger Fong <roger_fong@apple.com>
-
- No longer run bindings tests on WinEWS bots which are causing hangs on the bots.
- Re-enable WinEWS tests.
-
- * Scripts/webkitpy/common/config/ports.py:
- (WinPort.run_bindings_tests_command):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r146793.
- http://trac.webkit.org/changeset/146793
- https://bugs.webkit.org/show_bug.cgi?id=113248
-
- Fix did not work (Requested by rfong on #webkit).
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-25 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION(r146657): Test failures reported incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=113223
-
- Reviewed by Dirk Pranke.
-
- The bug was caused by BuildBotPrinter not taking the new behavior into account.
-
- Fixed the bug by exposing enabled_pixel_tests_in_retry flag via ResultDetails object and have BuildBotPrinter
- treat ['TEXT', 'IMAGE+TEXT'] as a regular failure when the flag is set true.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
-
- * Scripts/webkitpy/layout_tests/models/test_run_results.py:
- (RunDetails.__init__):
- (summarize_results): Remove the line I intended to remove in r146657.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (logging_run): Return details instead of the exit code.
- (run_and_capture): Ditto.
-
- (RunTest.test_full_results_html):
- (RunTest.test_hung_thread):
- (RunTest.test_no_tests_found):
- (RunTest.test_no_tests_found_2):
- (RunTest.test_repeat_each_iterations_num_tests):
- (RunTest.test_run_singly_actually_runs_tests):
- (RunTest.test_test_list):
- (RunTest.test_missing_and_unexpected_results):
- (RunTest.test_pixel_test_directories):
- (RunTest.test_missing_and_unexpected_results_with_custom_exit_code):
- (RunTest.test_crash_with_stderr):
- (RunTest.test_no_image_failure_with_image_diff):
- (RunTest.test_crash_log):
- (RunTest.test_exit_after_n_failures_upload):
- (RunTest.test_results_directory_absolute):
- (RunTest.test_results_directory_relative):
- (RunTest.test_retrying_and_flaky_tests):
- (RunTest.test_retrying_force_pixel_tests): Added a test case to ensure enabled_pixel_tests_in_retry is set.
- (RunTest.test_retrying_uses_retries_directory):
- (RunTest.test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist):
- (RunTest.test_output_diffs):
- (EndToEndTest.test_reftest_with_two_notrefs):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
-
- * Scripts/webkitpy/layout_tests/views/buildbot_results.py:
- (BuildBotPrinter.print_results):
- (BuildBotPrinter.print_unexpected_results):
- (BuildBotPrinter.print_unexpected_results.add_result): Don't treat ['TEXT', 'IMAGE+TEXT'] as flaky
- when we forced pixel tests in retry (i.e. pixel test was initially disabled).
-
-2013-03-25 Julie Parent <jparent@chromium.org>
-
- Dashboard refactor: Move cross dashboard history related code into history.js.
- https://bugs.webkit.org/show_bug.cgi?id=113104
-
- Reviewed by Ojan Vafai.
-
- All functions relating to cross dashboard behavior move from being
- globals to methods on the history.History object. Names stay the same,
- except many are made private, ones that should have been constants now
- are, and the long standing TODO to change "currentState" to
- dashboardSpecificState is done.
-
- We now create a global history object in dashboard_base, as an
- intermediate measure. Once the dashboard specific code is
- added to history, each DB will need to create its own, and this
- global will be eliminated.
-
- * TestResultServer/static-dashboards/aggregate_results.js:
- (handleValidHashParameter):
- (htmlForBuilder):
- (rawValuesHTML):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseDashboardSpecificParameters):
- (defaultValue):
- (currentBuilderGroupCategory):
- (currentBuilderGroupName):
- (handleLocationChange):
- (expectationsMap):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- (.switch.return):
- (platformAndBuildType):
- (individualTests):
- (substringList):
- (processMissingAndExtraExpectations):
- (pathToFailureLog):
- (showPopupForBuild):
- (htmlForTestsWithExpectationsButNoFailures):
- (shouldHideTest):
- (isCrossBuilderView):
- (tableHeaders):
- (htmlForSingleTestRow):
- (htmlForTableColumnHeader):
- (generatePageForExpectationsUpdate):
- (handleUpdate):
- (nextUpdate):
- (setUpdateIndex):
- (htmlForIndividualTestOnAllBuildersWithResultsLinks):
- (.appendExpectationsItem):
- (loadExpectations):
- (.dummyNode.onload):
- (loadExpectationsLayoutTests):
- (appendExpectations):
- (htmlForNavBar):
- (checkBoxToToggleState):
- (linkHTMLToToggleState):
- (generatePageForBuilder):
- (isInvalidKeyForCrossBuilderView):
- (handleQueryParameterChange):
- (showLegend):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- (test):
- * TestResultServer/static-dashboards/history.js:
- (.):
- * TestResultServer/static-dashboards/history_unittests.js:
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
- * TestResultServer/static-dashboards/timeline_explorer.js:
- (generatePage):
- (initCurrentBuilderTestResults):
- (selectBuild):
- (showResultsDelta):
- * TestResultServer/static-dashboards/treemap.js:
- (generatePage):
- (.switch.return):
- (handleFocus):
- * TestResultServer/static-dashboards/ui.js:
-
-2013-03-25 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Enable WinEWS tests again.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-25 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [HarfBuzz] ICU detection fix in HarfBuzz obsoletes our workaround
- https://bugs.webkit.org/show_bug.cgi?id=112166
-
- HarfBuzz 0.9.14 merged my patch for icu detection without
- pkg-config files, as needed by for example Ubuntu 12.04.
- This obsoletes our local workaround. Removed it for GTK and EFL.
-
- Reviewed by Martin Robinson.
-
- * efl/jhbuild.modules: Patch reference removed, version bumped to 0.9.14.
- * efl/patches/harfbuzz-icu-detection-fix.patch: Removed.
- * gtk/jhbuild.modules: Patch reference removed, version bumped to 0.9.14.
- * gtk/patches/harfbuzz-icu-detection-fix.patch: Removed.
-
-2013-03-22 Kiran Muppala <cmuppala@apple.com>
-
- Unreviewed. Move self from contributor to committer list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-22 Ryosuke Niwa <rniwa@webkit.org>
-
- EWS should use a human readable port name when uploading layout test archives
- https://bugs.webkit.org/show_bug.cgi?id=113099
-
- Reviewed by Dirk Pranke.
-
- Use new port's object's name() method to report human readable port names.
- This will also help us resolving the bug to apply layout test results posted by EWS.
-
- * Scripts/webkitpy/tool/bot/botinfo.py:
- (BotInfo.__init__): Take port's name.
- (BotInfo.summary_text):
-
- * Scripts/webkitpy/tool/bot/botinfo_unittest.py:
- (BotInfoTest.test_summary_text):
-
- * Scripts/webkitpy/tool/bot/flakytestreporter.py:
- (FlakyTestReporter.__init__): Preserve the old behavior since we don't have a real port object here.
-
- * Scripts/webkitpy/tool/commands/queues.py:
- (PatchProcessingQueue.__init__): Initialize self._port.
- (PatchProcessingQueue._upload_results_archive_for_patch): Intansitate a real port object if needed,
- and use that for the attachment filename and the comment posted.
-
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (PatchProcessingQueueTest.test_upload_results_archive_for_patch): Port name is updated to be
- "mac-snowleopard" as expected for TestPort.
-
-2013-03-22 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Turn off EWS test on Win again.
- The battle continues.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-22 Ryosuke Niwa <rniwa@webkit.org>
-
- NRWT: Enable pixel tests when retrying tests
- https://bugs.webkit.org/show_bug.cgi?id=112898
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run): Call _force_pixel_tests_if_needed before retrying tests and set pixel_tests False
- if we've forced pixel tests in the retry.
- (Manager._run_tests):
- (Manager._clean_up_run): Fixed the capitalizations.
- (Manager._force_pixel_tests_if_needed): Added.
-
- * Scripts/webkitpy/layout_tests/models/test_run_results.py:
- (_interpret_test_failures): Now that this function maybe called multiple times, only set
- 'image_diff_percent' if it doesn't already exist.
-
- (summarize_results): When the first attempt resulted in a text failure and the second attempt
- resulted in image and text failures and we've forced to run pixel tests in the retry run,
- treat this as a regular regression instead of a flakiness.
-
- Also update test_dict with retry_result so that image_diff_percent maybe filled in if retry
- run had image diffs.
-
- * Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py:
- (summarized_results):
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (parse_full_results): Moved out of EndToEndTest to be used in test_retrying_force_pixel_tests.
- Also removed some dead code.
-
- (RunTest.test_retrying_force_pixel_tests): Added. Assert that we generate and only generate
- pixel results in retries when pixel tests is turned off. Also assert that image_diff_percent
- is set and pixel_tests_enabled is set to false.
- (EndToEndTest.test_reftest_with_two_notrefs):
-
-2013-03-22 Tim Horton <timothy_horton@apple.com>
-
- Make it possible to run layout tests on Retina MBP
- https://bugs.webkit.org/show_bug.cgi?id=93673
-
- Reviewed by Ryosuke Niwa.
-
- Use NSWindow SPI and override -backingScaleFactor so that WKTR and DRT
- windows on 2x machines still run at 1x.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow):
- Reset the window resolution to 1x on creation.
- * DumpRenderTree/mac/DumpRenderTreeWindow.h: Add NSWindow details.
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow backingScaleFactor]): Override, always return 1.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[WebKitTestRunnerWindow backingScaleFactor]): Override, always return 1.
- (WTR::PlatformWebView::PlatformWebView):
- Add NSWindow details, reset the window resolution to 1x on creation.
-
-2013-03-19 Ryosuke Niwa <rniwa@webkit.org>
-
- Leak bots shouldn't build
- https://bugs.webkit.org/show_bug.cgi?id=112774
-
- Reviewed by Simon Fraser.
-
- Since leak bots use regular debug builds, there is no need to build on these bots.
- Simply downloading builds will dramatically improve the cycle time of these bots.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (TestLeaksFactory): Renamed from BuildAndTestLeaksFactory and changed to inherit from
- TestFactory instead of BuildAndTestFactory.
-
-2013-03-22 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Fix the TestWebKitAPI build
- https://bugs.webkit.org/show_bug.cgi?id=113044
-
- Reviewed by Tor Arne Vestbø.
-
- The generate-forwarding-headers script would only be run
- after the targets in InjectedBundle.pri since the second
- addStrictSubdirOrderBetween call in
- Tools/TestWebKitAPI/TestWebKitAPI.pro would overwrite
- the derived_sources -> injected_bundle order in SUBDIRS.
-
- Fix it by only moving the dependent target at the end of
- SUBDIRS, don't touch its dependency.
-
- * qmake/mkspecs/features/functions.prf:
-
-2013-03-22 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] View is not focused when fullscreen mode toggled
- https://bugs.webkit.org/show_bug.cgi?id=113009
-
- Reviewed by Laszlo Gombos.
-
- Set focus on view when fullscreen mode enabled/disabled
- by FullScreen API.
-
- * MiniBrowser/efl/main.c:
- (on_fullscreen_accept):
- (on_fullscreen_deny):
-
-2013-03-21 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is no longer saving retry results in the retries/ subdirectory
- https://bugs.webkit.org/show_bug.cgi?id=112995
-
- Reviewed by Ojan Vafai.
-
- I think this has been broken a long time, unfortunately. This
- patch should fix that.
-
- In order to do so, I had to pass the directory to use from
- the Worker object through the SingleTestWriter to the
- TestResultWriter. While I was plumbing that through, I rationalized
- the order of the parameter arguments a bit ...
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (Worker._run_single_test):
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (run_single_test):
- (SingleTestRunner.__init__):
- (SingleTestRunner._run_compare_test):
- (SingleTestRunner._run_rebaseline):
- (SingleTestRunner._run_reftest):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (write_test_result):
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RunTest.test_retrying_uses_retries_directory):
-
-2013-03-21 Filip Pizlo <fpizlo@apple.com>
-
- JSC profiler should have an at-a-glance report of the success of DFG optimization
- https://bugs.webkit.org/show_bug.cgi?id=112988
-
- Reviewed by Geoffrey Garen.
-
- * Scripts/display-profiler-output:
-
-2013-03-21 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] Linux ASAN WebKit canary is running out of memory
- https://bugs.webkit.org/show_bug.cgi?id=112978
-
- Reviewed by Tony Chang.
-
- Running the AddressSanitizer on a crash takes a lot of
- memory, so we should serialize access to it to avoid running
- out of memory on a machine.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._get_crash_log):
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
- (HttpLock.__init__):
- (HttpLock.wait_for_httpd_lock):
-
-2013-03-21 Min Qin <qinmin@chromium.org>
-
- Cleanup android media layout test code
- https://bugs.webkit.org/show_bug.cgi?id=112944
-
- Reviewed by Adam Barth.
-
- Chromium change: https://codereview.chromium.org/12892010/
- The current android layout tests are using WebmediaPlayerInProcessAndroid class.
- The code path has been largely diverged from that of the WebMediaPlayerImplAndroid.
- It is not worth the effort to keep the code path, and the layout tests will not reflect the actual behavior on the browser.
- Instead, we should switch to use content shell for layout tests.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2013-03-21 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] add missing project dependencies to DRT to fix Mac Valgrind
- https://bugs.webkit.org/show_bug.cgi?id=112953
-
- Reviewed by Tony Chang.
-
- When I created the DumpRenderTree_resources target in r144863 I
- forgot to declare the needed dependencies on the other resource
- targets. Due to a quirk of ordering, this appears to have been fine
- w/ ninja but not w/ Xcode (which is still being used on the chromium
- mac valgrind bots). Declaring the dependencies fixes the build
- failures.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-21 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Correct assert in Empty BitmapImage Test.
- https://bugs.webkit.org/show_bug.cgi?id=112934
-
- Reviewed by Tim Horton.
-
- * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp:
- (TestWebKitAPI::TEST): Use proper RefPtr and adoptRef
- to avoid ref counting assertion when leaving test scope.
-
-2013-03-21 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] generate-feature-defines-files is incompatible with Python3
- https://bugs.webkit.org/show_bug.cgi?id=112956
-
- Reviewed by Martin Robinson.
-
- Make the generate-feature-defines-files compatible with Python3 by calling the items()
- method on the dictionary objects when iterating through said dictionaries.
-
- * gtk/generate-feature-defines-files:
- (write_feature_defines_header):
- (write_flattened_feature_defines_file):
-
-2013-03-20 Ryosuke Niwa <rniwa@webkit.org>
-
- kill-old-processes spits out error messages on Mac
- https://bugs.webkit.org/show_bug.cgi?id=112878
-
- Reviewed by Jessie Berlin.
-
- Use grep -E instead of grep -P since grep on Mac doesn't seem to support the latter even though it's
- included in the list of options grep --help shows.
-
- Also use double-slash in escaping ++ in clang++ since the slashes needs to escape + inside the shell.
-
- * BuildSlaveSupport/kill-old-processes:
- (main):
-
-2013-03-21 Alberto Garcia <agarcia@igalia.com>
-
- [BlackBerry] AccessibilityUIElement: add dummy implementations of scroll methods
- https://bugs.webkit.org/show_bug.cgi?id=112597
-
- Reviewed by Xan Lopez.
-
- These were introduced for the Chromium port in r105295. We need
- dummy implementations in order to compile the BlackBerry port.
-
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
-
-2013-03-21 Roger Fong <roger_fong@apple.com>
-
- Re-enable WinEWS tests following r146376.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-21 Zoltan Horvath <zoltan@webkit.org>
-
- Unreviewed. Add Bem Jones-Bey to the list of contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-21 Claudio Saavedra <csaavedra@igalia.com>
-
- [GTK] Missing atk in install-dependencies script
- https://bugs.webkit.org/show_bug.cgi?id=112272
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/install-dependencies: Add missing atk dependency.
-
-2013-03-21 Claudio Saavedra <csaavedra@igalia.com>
-
- [GTK] Missing backslash in install-dependencies script
- https://bugs.webkit.org/show_bug.cgi?id=112907
-
- Reviewed by Philippe Normand.
-
- * gtk/install-dependencies: Add missing backslash to dependencies
- list.
-
-2013-03-20 Ryosuke Niwa <rniwa@webkit.org>
-
- EWS bots have stopped uploading results to bugzilla
- https://bugs.webkit.org/show_bug.cgi?id=101091
-
- Reviewed by Adam Barth.
-
- The bug was caused by LayoutTestResultsReader passing a relative file path to the archive zip
- to workspace.archive_zip. Because archive_zip uses the results directory as the working directory,
- this relative file path resoled to a file inside a non-existent directory for "zip".
-
- Fixed the bug by resolving both test results directory and zip archive paths in
- LayoutTestResultsReader.archive.
-
- Also made workspace.create_zip print the source_path so that we may debug these issues more easily
- in the future.
-
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.splitext): Don't assume the entire file path is a file extension when there is no ".".
-
- * Scripts/webkitpy/common/system/workspace.py:
- (Workspace.create_zip): Log the source path when "zip" failed.
-
- * Scripts/webkitpy/common/system/workspace_mock.py:
- (MockWorkspace.create_zip): Record zip_path and source_path for testing.
-
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- (WorkspaceTest.test_create_zip_exception): Test that.
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- (LayoutTestResultsReader.archive): Resolve paths before passing them to workspace.create_zip.
- This is the actual bug fix.
-
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (test_archive_last_layout_test_results_with_relative_path): Added a test case.
-
-2013-03-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebThemeEngine implementations to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=112751
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.cpp.
- (WebTestRunner::WebTestThemeControlWin::WebTestThemeControlWin):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeControlWin::~WebTestThemeControlWin):
- (WebTestRunner::WebTestThemeControlWin::box):
- (WebTestRunner::WebTestThemeControlWin::line):
- (WebTestRunner::WebTestThemeControlWin::triangle):
- (WebTestRunner::WebTestThemeControlWin::roundRect):
- (WebTestRunner::WebTestThemeControlWin::oval):
- (WebTestRunner::WebTestThemeControlWin::circle):
- (WebTestRunner::WebTestThemeControlWin::nestedBoxes):
- (WebTestRunner::WebTestThemeControlWin::markState):
- (WebTestRunner::WebTestThemeControlWin::draw):
- (WebTestRunner::WebTestThemeControlWin::drawTextField):
- (WebTestRunner::WebTestThemeControlWin::drawProgressBar):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.h.
- (WebTestRunner):
- (WebTestThemeControlWin):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.h.
- (WebTestRunner):
- (WebTestThemeEngineMac):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.mm.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebTestRunner::WebTestThemeEngineMac::paintScrollbarThumb):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineMac::paintHIThemeScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Added.
- (WebTestRunner::WebTestThemeEngineWin::paintButton):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineWin::paintMenuList):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarArrow):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarTrack):
- (WebTestRunner::WebTestThemeEngineWin::paintSpinButton):
- (WebTestRunner::WebTestThemeEngineWin::paintTextField):
- (WebTestRunner::WebTestThemeEngineWin::paintTrackbar):
- (WebTestRunner::WebTestThemeEngineWin::paintProgressBar):
- (WebTestRunner::WebTestThemeEngineWin::getSize):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTWin.h.
- (WebTestRunner):
- (WebTestThemeEngineWin):
- (WebTestRunner::WebTestThemeEngineWin::WebTestThemeEngineWin):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Removed.
-
-2013-03-20 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build fix for TestWebKitAPI under VS2010
-
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommonWinCairo.props: Added.
- New property sheet that does not link against CoreFoundation and
- CFNetwork.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props:
- Use new TestWebKitAPICommonWinCairo property sheet.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props:
- Ditto.
-
-2013-03-20 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Unreviewed build fix for VS2010.
-
- Had to add WinCairo-specific property sheets to deal with some
- library and path differences with the main Apple port.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommonWinCairo.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebugWinCairo.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffReleaseWinCairo.props: Added.
-
-2013-03-20 Benjamin Poulain <bpoulain@apple.com>
-
- [WK2] Remove VIEW_MODE_CSS_MEDIA from WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=112849
-
- Reviewed by Sam Weinig.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
-
-2013-03-20 Brent Fulgham <bfulgham@webkit.org>
-
- [WinCairo] Build WebKit Tools under VS2010
- https://bugs.webkit.org/show_bug.cgi?id=112821
-
- Reviewed by Tim Horton.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
- Add WinCairo-specific build target.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj: Add WinCairo-specific build target.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeWinCairo.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
- Add WinCairo-specific build target.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
- Add WinCairo-specific build target.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj: Add
- WinCairo-specific build target.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props: Added.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj: Add WinCairo-
- specific build target.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Add
- WinCairo-specific build target.
- * win/record-memory/record-memory.vcxproj: Add WinCairo target.
- * win/record-memory/record-memoryDebugWinCairo.props: Added.
- * win/record-memory/record-memoryReleaseWinCairo.props: Added.
-
-2013-03-20 Roger Fong <roger_fong@apple.com>
-
- API test gardening AppleWin port.
-
- The BitmapImageEmptyFrameTest should only be tested on Cairo not on AppleWin port.
-
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2013-03-20 Roger Fong <roger_fong@apple.com>
-
- Test fix for Win EWS bots, catch various errors and restart script if necessary.
-
- * EWSTools/start-queue-win.sh:
-
-2013-03-20 Sami Kyostila <skyostil@chromium.org>
-
- Unreviewed, add myself to committers.py.
-
-2013-03-20 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Unreviewed. Adding another email for me.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-20 Justin Novosad <junov@google.com>
-
- [Chromium] Code cleanup: removing support for non-deferred 2d canvas rendering
- https://bugs.webkit.org/show_bug.cgi?id=112605
-
- Reviewed by James Robinson.
-
- Deleting all the code that was used for propagating and supporting
- the Chromium setting for disabling deferred 2d canvas rendering.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- (TestShell::runFileTest):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2013-03-20 Ádám Kallai <kadam@inf.u-szeged.hu>
-
- [Qt] Qt 4.8 tool related stuff removal from webkitpy.
- https://bugs.webkit.org/show_bug.cgi?id=112699.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._search_paths):
- (QtPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
- (QtPortTest._assert_search_path):
- (QtPortTest._assert_expectations_files):
-
-2013-03-19 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Enable kerning by default
- https://bugs.webkit.org/show_bug.cgi?id=112704
-
- Reviewed by Jocelyn Turcotte.
-
- Disable kerning by default, since some reference test expectations
- expect kerning to be default off.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::reset):
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
-
-2013-03-20 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Remove empty function stubs from TestRunnerQt.
- https://bugs.webkit.org/show_bug.cgi?id=112799
-
- We are reducing the code in TestRunnerQt step by step,
- in order to finally replace all of it with the generic
- TestRunner implementation.
- This patch removes several simple function stubs that
- currently do not implement any actual functionality.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-03-20 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Don't show the SearchBar by default when MiniBrowser opened
- https://bugs.webkit.org/show_bug.cgi?id=112687
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Hide the SearchBar by default on window creation.
-
- * MiniBrowser/efl/main.c:
- (window_create):
-
-2013-03-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r146304.
- http://trac.webkit.org/changeset/146304
- https://bugs.webkit.org/show_bug.cgi?id=112788
-
- to many expectations to update (Requested by antonm on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Removed.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp.
- (WebThemeControlDRTWin::WebThemeControlDRTWin):
- (WebThemeControlDRTWin::~WebThemeControlDRTWin):
- (WebThemeControlDRTWin::box):
- (WebThemeControlDRTWin::line):
- (WebThemeControlDRTWin::triangle):
- (WebThemeControlDRTWin::roundRect):
- (WebThemeControlDRTWin::oval):
- (WebThemeControlDRTWin::circle):
- (WebThemeControlDRTWin::nestedBoxes):
- (WebThemeControlDRTWin::markState):
- (WebThemeControlDRTWin::draw):
- (WebThemeControlDRTWin::drawTextField):
- (WebThemeControlDRTWin::drawProgressBar):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h.
- (WebThemeControlDRTWin):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h.
- (WebThemeEngineDRTMac):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebThemeEngineDRTMac::paintScrollbarThumb):
- (stateToHIEnableState):
- (WebThemeEngineDRTMac::paintHIThemeScrollbarThumb):
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Added.
- (webRectToSkIRect):
- (drawControl):
- (drawTextField):
- (drawProgressBar):
- (WebThemeEngineDRTWin::paintButton):
- (WebThemeEngineDRTWin::paintMenuList):
- (WebThemeEngineDRTWin::paintScrollbarArrow):
- (WebThemeEngineDRTWin::paintScrollbarThumb):
- (WebThemeEngineDRTWin::paintScrollbarTrack):
- (WebThemeEngineDRTWin::paintSpinButton):
- (WebThemeEngineDRTWin::paintTextField):
- (WebThemeEngineDRTWin::paintTrackbar):
- (WebThemeEngineDRTWin::paintProgressBar):
- (WebThemeEngineDRTWin::getSize):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h.
- (WebThemeEngineDRTWin):
- (WebThemeEngineDRTWin::WebThemeEngineDRTWin):
-
-2013-03-19 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Support -webkit-font-smoothing
- https://bugs.webkit.org/show_bug.cgi?id=106009
-
- Reviewed by Jocelyn Turcotte.
-
- Set shouldUseFontSmoothing to false to match WebKitTestRunner.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::reset):
-
-2013-03-20 Krzysztof Czech <k.czech@samsung.com>
-
- [GTK] accessibility/aria-scrollbar-role.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=98358
-
- Reviewed by Martin Robinson.
-
- Adds support for checking accessibility object's orientation.
- Orientation is checked by retrieving proper state of accessibility object.
-
- * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp:
- (checkElementState):
- (AccessibilityUIElement::orientation):
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::orientation):
-
-2013-03-19 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebThemeEngine implementations to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=112751
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.cpp.
- (WebTestRunner::WebTestThemeControlWin::WebTestThemeControlWin):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeControlWin::~WebTestThemeControlWin):
- (WebTestRunner::WebTestThemeControlWin::box):
- (WebTestRunner::WebTestThemeControlWin::line):
- (WebTestRunner::WebTestThemeControlWin::triangle):
- (WebTestRunner::WebTestThemeControlWin::roundRect):
- (WebTestRunner::WebTestThemeControlWin::oval):
- (WebTestRunner::WebTestThemeControlWin::circle):
- (WebTestRunner::WebTestThemeControlWin::nestedBoxes):
- (WebTestRunner::WebTestThemeControlWin::markState):
- (WebTestRunner::WebTestThemeControlWin::draw):
- (WebTestRunner::WebTestThemeControlWin::drawTextField):
- (WebTestRunner::WebTestThemeControlWin::drawProgressBar):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.h.
- (WebTestRunner):
- (WebTestThemeControlWin):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.h.
- (WebTestRunner):
- (WebTestThemeEngineMac):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.mm.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebTestRunner::WebTestThemeEngineMac::paintScrollbarThumb):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineMac::paintHIThemeScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Added.
- (WebTestRunner::WebTestThemeEngineWin::paintButton):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineWin::paintMenuList):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarArrow):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarTrack):
- (WebTestRunner::WebTestThemeEngineWin::paintSpinButton):
- (WebTestRunner::WebTestThemeEngineWin::paintTextField):
- (WebTestRunner::WebTestThemeEngineWin::paintTrackbar):
- (WebTestRunner::WebTestThemeEngineWin::paintProgressBar):
- (WebTestRunner::WebTestThemeEngineWin::getSize):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTWin.h.
- (WebTestRunner):
- (WebTestThemeEngineWin):
- (WebTestRunner::WebTestThemeEngineWin::WebTestThemeEngineWin):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Removed.
-
-2013-03-19 Tony Chang <tony@chromium.org>
-
- Move testRunner.setTouchDragDropEnabled to internals.settings
- https://bugs.webkit.org/show_bug.cgi?id=112739
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner): Remove unnecessary code.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner): Remove unnecessary code.
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo): Always set to false.
-
-2013-03-19 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Migrate to WEBKIT_USE_NEW_WEBFILESYSTEMTYPE
- https://bugs.webkit.org/show_bug.cgi?id=112754
-
- Reviewed by Darin Fisher.
-
- Remove old code behind ifndef WEBKIT_USE_NEW_WEBFILESYSTEMTYPE
- now that it's always defined.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-03-19 Kenneth Russell <kbr@google.com>
-
- Unreviewed, rolling out r146290.
- http://trac.webkit.org/changeset/146290
- https://bugs.webkit.org/show_bug.cgi?id=112751
-
- Broke Chromium Mac build.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Removed.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp.
- (WebThemeControlDRTWin::WebThemeControlDRTWin):
- (WebThemeControlDRTWin::~WebThemeControlDRTWin):
- (WebThemeControlDRTWin::box):
- (WebThemeControlDRTWin::line):
- (WebThemeControlDRTWin::triangle):
- (WebThemeControlDRTWin::roundRect):
- (WebThemeControlDRTWin::oval):
- (WebThemeControlDRTWin::circle):
- (WebThemeControlDRTWin::nestedBoxes):
- (WebThemeControlDRTWin::markState):
- (WebThemeControlDRTWin::draw):
- (WebThemeControlDRTWin::drawTextField):
- (WebThemeControlDRTWin::drawProgressBar):
- * DumpRenderTree/chromium/WebThemeControlDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h.
- (WebThemeControlDRTWin):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h.
- (WebThemeEngineDRTMac):
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebThemeEngineDRTMac::paintScrollbarThumb):
- (stateToHIEnableState):
- (WebThemeEngineDRTMac::paintHIThemeScrollbarThumb):
- (WebThemeEngineDRTMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Added.
- (webRectToSkIRect):
- (drawControl):
- (drawTextField):
- (drawProgressBar):
- (WebThemeEngineDRTWin::paintButton):
- (WebThemeEngineDRTWin::paintMenuList):
- (WebThemeEngineDRTWin::paintScrollbarArrow):
- (WebThemeEngineDRTWin::paintScrollbarThumb):
- (WebThemeEngineDRTWin::paintScrollbarTrack):
- (WebThemeEngineDRTWin::paintSpinButton):
- (WebThemeEngineDRTWin::paintTextField):
- (WebThemeEngineDRTWin::paintTrackbar):
- (WebThemeEngineDRTWin::paintProgressBar):
- (WebThemeEngineDRTWin::getSize):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h.
- (WebThemeEngineDRTWin):
- (WebThemeEngineDRTWin::WebThemeEngineDRTWin):
-
-2013-03-19 Krzysztof Czech <k.czech@samsung.com>
-
- [EFL] canvas-fallback-content.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=111998
-
- Reviewed by Chris Fleizach.
-
- Adds support for getting platform name.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticValues):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::platformName):
-
-2013-03-19 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebThemeEngine implementations to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=112751
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::themeEngine):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.cpp: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.cpp.
- (WebTestRunner::WebTestThemeControlWin::WebTestThemeControlWin):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeControlWin::~WebTestThemeControlWin):
- (WebTestRunner::WebTestThemeControlWin::box):
- (WebTestRunner::WebTestThemeControlWin::line):
- (WebTestRunner::WebTestThemeControlWin::triangle):
- (WebTestRunner::WebTestThemeControlWin::roundRect):
- (WebTestRunner::WebTestThemeControlWin::oval):
- (WebTestRunner::WebTestThemeControlWin::circle):
- (WebTestRunner::WebTestThemeControlWin::nestedBoxes):
- (WebTestRunner::WebTestThemeControlWin::markState):
- (WebTestRunner::WebTestThemeControlWin::draw):
- (WebTestRunner::WebTestThemeControlWin::drawTextField):
- (WebTestRunner::WebTestThemeControlWin::drawProgressBar):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeControlWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeControlDRTWin.h.
- (WebTestRunner):
- (WebTestThemeControlWin):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.h.
- (WebTestRunner):
- (WebTestThemeEngineMac):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineMac.mm: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTMac.mm.
- (+[FakeActiveWindow alwaysActiveWindow]):
- (+[FakeActiveWindow alwaysInactiveWindow]):
- (-[FakeActiveWindow initWithActiveControls:]):
- (-[FakeActiveWindow _hasActiveControls]):
- (WebTestRunner::WebTestThemeEngineMac::paintScrollbarThumb):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineMac::paintHIThemeScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineMac::paintNSScrollerScrollbarThumb):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.cpp: Added.
- (WebTestRunner::WebTestThemeEngineWin::paintButton):
- (WebTestRunner):
- (WebTestRunner::WebTestThemeEngineWin::paintMenuList):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarArrow):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarThumb):
- (WebTestRunner::WebTestThemeEngineWin::paintScrollbarTrack):
- (WebTestRunner::WebTestThemeEngineWin::paintSpinButton):
- (WebTestRunner::WebTestThemeEngineWin::paintTextField):
- (WebTestRunner::WebTestThemeEngineWin::paintTrackbar):
- (WebTestRunner::WebTestThemeEngineWin::paintProgressBar):
- (WebTestRunner::WebTestThemeEngineWin::getSize):
- * DumpRenderTree/chromium/TestRunner/src/WebTestThemeEngineWin.h: Renamed from Tools/DumpRenderTree/chromium/WebThemeEngineDRTWin.h.
- (WebTestRunner):
- (WebTestThemeEngineWin):
- (WebTestRunner::WebTestThemeEngineWin::WebTestThemeEngineWin):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- * DumpRenderTree/chromium/TestShellMac.mm:
- (platformInit):
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp: Removed.
-
-2013-03-19 Kenneth Rohde Christiansen <kenneth@webkit.org> and Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Separate WebView further from EwkView
- https://bugs.webkit.org/show_bug.cgi?id=111591
-
- Reviewed by Caio Marcelo de Oliveira Filho.
-
- Updated EFL PlatformWebView to meet the new WKView API and ewk view private API.
- PlatformWKView is pointer to Evas_Object for EFL, as this is more natural and
- since we can afford it having EWKViewGetWKView() private API to access WKView.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI::PlatformWebView::page):
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
- (TestWebKitAPI::PlatformWebView::simulateMouseMove):
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::EventSenderProxy::dispatchEvent):
- (WTR::EventSenderProxy::keyDown):
- (WTR::EventSenderProxy::sendTouchEvent):
- (WTR::EventSenderProxy::setTouchModifier):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::resizeTo):
- (WTR::PlatformWebView::page):
- (WTR::PlatformWebView::focus):
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2013-03-19 Roger Fong <roger_fong@apple.com>
-
- Changes to VS2010 project files should only trigger builds on Windows bots.
- https://bugs.webkit.org/show_bug.cgi?id=112731
-
- Reviewed by Timothy Horton.
-
- * BuildSlaveSupport/build.webkit.org-config/wkbuild.py:
- (_should_file_trigger_build):
-
-2013-03-19 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. webkitpy tests fix for Windows, runtests.py run-webkit-tests arguments changed.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_webkit_run_unit_tests):
-
-2013-03-19 Julie Parent <jparent@chromium.org>
-
- Dashboards: Introduce history namespace and unit tests.
- https://bugs.webkit.org/show_bug.cgi?id=112645
-
- Reviewed by Ojan Vafai.
-
- Laying the framework for introducing the new history object and
- namespace. This moves only static functions into the history
- namespace, and moves corresponding unit tests into seperate
- unit test file.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseCrossDashboardParameters):
- (parseDashboardSpecificParameters):
- (parseParameters):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (.switch.return):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/history.js: Added.
- * TestResultServer/static-dashboards/history_unittests.js: Added.
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/timeline_explorer.js:
- * TestResultServer/static-dashboards/treemap.html:
- * TestResultServer/static-dashboards/treemap.js:
- (.switch.return):
- * TestResultServer/static-dashboards/ui.js:
-
-2013-03-19 Daniel Bates <dbates@webkit.org>
-
- svn-apply has trouble applying a patch that adds a Windows newline to EOF
- https://bugs.webkit.org/show_bug.cgi?id=112732
-
- Reviewed by Eric Seidel.
-
- Fixes an issues where a diff that adds a Windows line ending (CRLF) to the end
- of an existing file cannot be applied.
-
- In particular, svn-{apply, unapply} compensate for differences in line endings
- by converting the line endings in a diff to match the line endings in the target
- file. The diff(1) command precedes the last line of a diff that adds a newline
- character to the end of a file with the special character sequence "\n \\ No newline at end of file\n"
- Svn-{apply, unapply} converts the newline characters (\n) in this character sequence
- to \r\n (CRLF) when the target file has Windows line endings and patch(1) complains
- when applying this modified diff. Instead, svn-{apply, unapply} should not modify
- the newline characters in this special character sequence to match the line endings
- in the target file.
-
- * Scripts/VCSUtils.pm:
- (parseDiff):
- * Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl:
- Added tests:
- - "SVN: Patch adds Windows newline to EOF and IndexPath has Windows line endings"
- - "SVN: Patch adds Mac newline to EOF and IndexPath has Mac line endings"
- - "Git: Patch adds Windows newline to EOF and IndexPath has Windows line endings"
- - "Git: Patch adds Mac newline to EOF and IndexPath has Mac line endings"
- (escapeNewLineCharacters): Added.
- (toMacLineEndings): Added.
-
-2013-03-19 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove compositor settings that don't go through WebKit
- https://bugs.webkit.org/show_bug.cgi?id=112718
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2013-03-19 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r146101.
- https://bugs.webkit.org/show_bug.cgi?id=111884
-
- re-enable custom freetype on asan; this needs to be on
- now that the bot is running lucid.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-19 Alberto Garcia <agarcia@igalia.com>
-
- [BlackBerry] Enable USE_SYSTEM_MALLOC by default
- https://bugs.webkit.org/show_bug.cgi?id=112365
-
- Reviewed by Benjamin Poulain.
-
- Enable USE_SYSTEM_MALLOC by default via FeatureList.pm instead of
- harcoding it in wtf/Platform.h
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-19 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Make ImageDiff similar to Chromium's ImageDiff
- https://bugs.webkit.org/show_bug.cgi?id=94782
-
- Based on patch by Csaba Osztrogonác.
- Reviewed by Jocelyn Turcotte.
-
- The diff image is generated with bright red indicating errors, but letting the base image
- shine through so the context of the error-pixel can be identified.
-
- * DumpRenderTree/qt/ImageDiff.cpp:
- (main):
-
-2013-03-18 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Fix the build of QtTestBrowser if the print preview dialog is disabled in Qt
-
- Rubber-stamped by Csaba Osztrogonác.
-
- Check for QT_NO_PRINTPREVIEWDIALOG instead of QT_NO_PRINTER
- since the latter might not cover the former.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::print):
-
-2013-03-18 Simon Fraser <simon.fraser@apple.com>
-
- Style tweeks to default.css.
-
- Rubber-stamped by David Kilzer.
-
- Give visited links a different color to other links, so you can
- see which builds you've viewed.
-
- Make the <small> text less tiny.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/default.css:
- (small):
- (a:link,a:visited,a:active):
- (a:visited):
-
-2013-03-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove the temporary hack for webkit-perf.appspot.com and cleanup the code
- https://bugs.webkit.org/show_bug.cgi?id=112494
-
- Reviewed by Dirk Pranke.
-
- Removed the code to override webkit-perf.appspot.com by perf.webkit.org.
- Also merged two pairs of methods to cleanup the code.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.run): Merged _upload_and_show_results.
- (PerfTestsRunner._generate_results): Merged _generate_output_files.
-
-2013-03-18 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] build xdisplaycheck when building DRT
- https://bugs.webkit.org/show_bug.cgi?id=112636
-
- Reviewed by Tony Chang.
-
- It appears that we need xdisplaycheck to be built in order for
- Xvfb to be started correctly on the bots, and DRT was missing
- a dependency on it. This may be the cause of the ASAN bot not
- starting up properly (it only builds DRT).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-18 David Levin <levin@chromium.org>
-
- Implement icon change notification dump for Chromium's test shell.
- https://bugs.webkit.org/show_bug.cgi?id=112614
-
- This was previously implemented for some other platforms in r58111
- and r116547.
-
- In r122806, fast/dom/icon-url-property.html stopped using it, but
- it is useful for tests, so I plan to re-add it to that test again.
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::didChangeIcon): Add handler so that
- icon change notifications from WebKit may be logged in test output.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner): Expose dumpIconChanges.
- (WebTestRunner::TestRunner::reset): Clear the new dump variable.
- (WebTestRunner::TestRunner::shouldDumpIconChanges): Expose the dump vairable.
- (WebTestRunner):
- (WebTestRunner::TestRunner::dumpIconChanges): Implement the test method.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didChangeIcon):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didChangeIcon): Add the output about changing the icon.
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-03-18 Julie Parent <jparent@chromium.org>
-
- Cleanup: Move js for treemap and aggregate_results into own js files.
- https://bugs.webkit.org/show_bug.cgi?id=112618
-
- Reviewed by Dirk Pranke.
-
- No functional changes, just moving the code into separate js file
- rather than inlined in the html, so we can test it, make it more
- modular, etc. Other dashboard types are already done this way.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/aggregate_results.js: Copied from Tools/TestResultServer/static-dashboards/aggregate_results.html.
- (generatePage):
- (handleValidHashParameter):
- (htmlForBuilder):
- (rawValuesHTML):
- (chartHTML):
- (filteredValues):
- (chart):
- (htmlForRevisionRows):
- (wrapHTMLInTable):
- (htmlForSummaryTable):
- (valuesPerExpectation):
- (htmlForTestType):
- (htmlForTableRow):
- (extendedEncode):
- * TestResultServer/static-dashboards/treemap.html:
- * TestResultServer/static-dashboards/treemap.js: Copied from Tools/TestResultServer/static-dashboards/treemap.html.
- (humanReadableTime):
- (convertToWebTreemapFormat):
- (reverseSortByAverage):
- (generatePage):
- (focusPath):
- (.switch.return):
- (handleQueryParameterChange):
- (extractName):
- (fullName):
- (handleFocus.):
- (handleFocus):
-
-2013-03-18 Zan Dobersek <zdobersek@igalia.com>
-
- [webkitpy] '/usr/bin/interdiff' output while running test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=112622
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/tool/steps/haslanded_unittest.py:
- (HasLandedTest): Pipe the stdout and stderr output of the subprocess call to subprocess.PIPE, eliminating unnecessary output.
-
-2013-03-18 Zan Dobersek <zdobersek@igalia.com>
-
- [NRWT][GTK] Add gtk-wk1 directory to the list of baseline search paths when using DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=112619
-
- Reviewed by Dirk Pranke.
-
- When using DumpRenderTree on the Gtk port, NRWT should look for baselines first in the LayoutTests/platform/gtk-wk1
- directory and then fall back to the generic LayoutTests/platform/gtk directory.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.default_baseline_search_path): Implement the method on the GtkPort class, mapping every search path to the
- Port._webkit_baseline_path method.
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_default_baseline_search_path): Add a test for the changes that are being introduced.
- (GtkPortTest.test_port_specific_expectations_files): Wrap a couple of long lines.
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineTest.test_baseline_directory): Enhance one and add an additional test case for baseline directories
- that are expected based on the builder name.
-
-2013-03-18 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Create WebFileSystemType enum to allow easier filesystem refactoring
- https://bugs.webkit.org/show_bug.cgi?id=112571
-
- Reviewed by Adam Barth.
-
- Update function declarations for new WebFileSystemType enum. (All
- changes are behind an #ifdef so we can sync required changes in embedders.)
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::openFileSystem):
- (WebViewHost::deleteFileSystem):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-03-18 Julie Parent <jparent@chromium.org>
-
- Cleanup: Move timeline_exporer js out of html file into js.
- https://bugs.webkit.org/show_bug.cgi?id=112188
-
- Reviewed by Dirk Pranke.
-
- Moves the javascript out of the html file and into a new js file.
- This follows the format of flakiness_dashboard.{html|js}.
-
- Also moves code from dashboard_base that is used only by this one
- dashboard, and makes it private to the dashboard.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/timeline_explorer.js: Copied from Tools/TestResultServer/static-dashboards/timeline_explorer.html.
- (generatePage):
- (initCurrentBuilderTestResults):
- (shouldShowWebKitRevisionsOnly):
- (updateTimelineForBuilder.):
- (updateTimelineForBuilder):
- (selectBuild):
- (updateBuildIndicator):
- (.addRow):
- (.addNumberRow):
- (.inspectorNode.getElementsByTagName.0.onclick):
- (.inspectorNode.getElementsByTagName.1.onclick):
- (.inspectorNode.getElementsByTagName.2.onclick):
- (updateBuildInspector):
- (showResultsDelta):
- (decompressResults.addFlakyDelta):
- (decompressResults):
-
-2013-03-18 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r145272.
- http://trac.webkit.org/changeset/145272
- https://bugs.webkit.org/show_bug.cgi?id=111884
-
- Turns out the ASAN build is still broken; possibly there's
- something still setting LD_LIBRARY_PATH, or possibly there's
- something else wrong. In the meantime, we need it to work again.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-18 Ryosuke Niwa <rniwa@webkit.org>
-
- delete-stale-build-files is too aggressive
- https://bugs.webkit.org/show_bug.cgi?id=112595
-
- Reviewed by Tim Horton.
-
- It appears that whitelisting file extensions to keep is not a good idea.
- Blacklist files to delete instead, and only delete .o files for now.
- We can add more file extensions as needed.
-
- * BuildSlaveSupport/delete-stale-build-files:
-
-2013-03-18 Simon Fraser <simon.fraser@apple.com>
-
- Disable accessibility notifications after each test
- https://bugs.webkit.org/show_bug.cgi?id=112579
-
- Reviewed by Tim Horton.
-
- In WebKitTestRunner, if any tests triggered accessibility notifications,
- the global notification handler would thereafter be active, and fire
- notifications for all subsequent tests.
-
- Fix by implementing AccessibilityController::resetToConsistentState() for
- Mac, and using it to clear the global notification handler.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm:
- (WTR::AccessibilityController::addNotificationListener): Remove stupid comment.
- (WTR::AccessibilityController::removeNotificationListener): Explicitly call
- -stopObserving so that unregistering the observer doesn't rely on object lifetimes
- (e.g. because of -autorelease).
- (WTR::AccessibilityController::logAccessibilityEvents): Stub.
- (WTR::AccessibilityController::resetToConsistentState): Remove the notification listener
- if there is one.
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h:
- Add -stopObserving
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm:
- (-[AccessibilityNotificationHandler dealloc]): Call -stopObserving
- (-[AccessibilityNotificationHandler stopObserving]): Unregister from the notification
- center.
-
-2013-03-18 Dana Jansens <danakj@chromium.org>
-
- [chromium] Remove WebGraphicsContext3DInProcessImpl support from DRT.
- https://bugs.webkit.org/show_bug.cgi?id=112392
-
- Reviewed by James Robinson.
-
- Removes the command line flag option from DRT.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
-
-2013-03-18 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] plugins/plugin-clip-subframe.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=112570
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Add the LogNPPSetWindow.cpp file to the build.
-
-2013-03-17 Morten Stenshorne <mstensho@opera.com>
-
- Add reload button (and F5 accelerator) to the GtkLauncher toolbar
- https://bugs.webkit.org/show_bug.cgi?id=112442
-
- Reviewed by Gustavo Noronha Silva.
-
- * GtkLauncher/main.c:
- (reloadCb):
- (createToolbar):
- (createWindow):
-
-2013-03-15 Simon Fraser <simon.fraser@apple.com>
-
- REGRESSION (r144884?): WebKit2.DOMWindowExtensionBasic API test is asserting
- https://bugs.webkit.org/show_bug.cgi?id=112205
-
- Disable this API test until Geoff can fix it.
-
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp:
- (TestWebKitAPI::TEST):
-
-2013-03-15 Jochen Eisinger <jochen@chromium.org>
-
- plugins/netscape-plugin-setwindow-size*.html and plugins/pass-different-npp-struct.html should be async
- https://bugs.webkit.org/show_bug.cgi?id=112478
-
- Reviewed by Tony Chang.
-
- There is nothing that ensures that the log messages from the plugin
- come in before the layout test finished loading.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp:
- (PassDifferentNPPStruct::NPP_SetWindow):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_SetWindow):
-
-2013-03-15 Simon Fraser <simon.fraser@apple.com>
-
- Have the mac port support per_test_timeout in webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=112466
-
- Reviewed by Dirk Pranke.
-
- Both WTR and DRT handle --timeout arguments, so we can
- have the scripts pass the timeout values down to the tools.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.supports_per_test_timeout):
-
-2013-03-15 Rouslan Solomakhin <rouslan@chromium.org>
-
- Remove setAsynchronousSpellCheckingEnabled from test runners
- https://bugs.webkit.org/show_bug.cgi?id=112362
-
- Reviewed by Tony Chang.
-
- Remove setAsynchronousSpellCheckingEnabled from test runners. The setting is now
- in internals.settings, so all ports can share it.
-
- * DumpRenderTree/TestRunner.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/TestRunner.h: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/efl/TestRunnerEfl.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/gtk/TestRunnerGtk.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/mac/TestRunnerMac.mm: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/qt/TestRunnerQt.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/qt/TestRunnerQt.h: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/win/TestRunnerWin.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
- * DumpRenderTree/wx/TestRunnerWx.cpp: Remove setAsynchronousSpellCheckingEnabled() method.
-
-2013-03-15 Simon Fraser <simon.fraser@apple.com>
-
- Fix the stupid unit tests.
-
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_sample_process):
-
-2013-03-14 Simon Fraser <simon.fraser@apple.com>
-
- Collect samples for unresponsive web processes
- https://bugs.webkit.org/show_bug.cgi?id=112409
-
- Reviewed by Tim Horton.
-
- When we detect that a subprocess was unresponsive, run the 'sample'
- tool on that process, for the Mac port.
-
- The sample will be linked to from the results.html page, next
- to the crash log link.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._look_for_new_crash_logs): Before looking for crash logs,
- look for samples on disk.
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer.py:
- (TestResultWriter):
- (TestResultWriter.copy_sample_file): Teach TestResultWriter about
- -sample.txt files, and have it copy their contents to a new file
- next to the test that spawned them (as we do for crash logs).
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.look_for_new_samples): Base class does nothing for sampling.
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver._check_for_driver_crash): Kick off a sample if we detected
- that the subprocess was unresponsive.
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.sample_file_path): Utility to generate the file path
- to the generated sample files at the top level of layout-test-results.
- (MacPort.look_for_new_crash_logs): Fix typo
- (MacPort.look_for_new_samples): New function to find sample files.
- (MacPort.sample_process): Use the utility function to get the file path.
-
-2013-03-15 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Remove simple getters and setters from TestRunnerQt
- https://bugs.webkit.org/show_bug.cgi?id=112343
-
- Reviewed by Benjamin Poulain.
-
- The removed functions and boolean members
- are being replaced by the implementations in the
- generic TestRunner.h.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (DumpRenderTree::dumpFrameScrollPosition):
- (DumpRenderTree::dumpFramesAsText):
- (DumpRenderTree::dump):
- (DumpRenderTree::titleChanged):
- (DumpRenderTree::dumpDatabaseQuota):
- (DumpRenderTree::dumpApplicationCacheQuota):
- (DumpRenderTree::statusBarMessage):
- (DumpRenderTree::createWindow):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::reset):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-03-15 Ryosuke Niwa <rniwa@webkit.org>
-
- Update the link on build.webkit.org to refer to perf.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=112416
-
- Reviewed by Philip Rogers.
-
- Updated the link. Also updated the template to use HTML5 DOCTYPE.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2013-03-15 Tobias Mueller <tobiasmue@gnome.org>
-
- Build fix for Tools/GtkLauncher/Programs_GtkLauncher-main.o if gstreamer is not installed
- https://bugs.webkit.org/show_bug.cgi?id=112394
-
- Reviewed by Philippe Normand.
-
- * GtkLauncher/main.c:
- (main): Guard using the gstreamer function with #ifdef WTF_USE_GSTREAMER
-
-2013-03-14 Andreas Kling <akling@apple.com>
-
- REGRESSION(r145169): [Mac][WK2] http/tests/security/cross-frame-access-put.html fails.
- <http://webkit.org/b/111815>
- <rdar://problem/13380145>
-
- Reviewed by Anders Carlsson.
-
- Add PlatformWebView::didInitializeClients() and call it after setting up all the clients
- after creating a PlatformWebView. Otherwise, the initial WindowAndViewFramesChanged message
- will be sent before there's a UI client set up to adjust the frame with WTR's fake origin.
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::createWebViewWithOptions):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::didInitializeClients):
-
-2013-03-14 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][MiniBrowser] Add a search field to the MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=112122
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement a search field to test API ewk_view_text_find() and add a shortcut 'ctrl' + f.
-
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (search_box_show):
- (search_box_hide):
- (on_key_down):
- (on_url_changed):
- (on_search_field_aborted):
- (on_search_field_activated):
- (on_search_field_clicked):
- (on_search_backward_button_clicked):
- (on_search_forward_button_clicked):
- (window_create):
-
-2013-03-14 Julie Parent <jparent@chromium.org>
-
- Cleanup: Remove g_resourceLoader.
- https://bugs.webkit.org/show_bug.cgi?id=112305
-
- Reviewed by Dirk Pranke.
-
- Removing another global.
-
- Now, each dashboard creates its own loader, rather than having
- a general global one.
-
- Remove usage of g_resourceLoader.isLoadingComplete from
- handleLocationChange by ensuring that handleLocationChange is
- never called before the loader is done. It was called in two
- places before: 1 was from the callback when the loader is done,
- so that was obviously true, and the other was from onhashchange,
- where it would just return rather than running. Instead, lets
- only register the onhashchange handler once the loader is
- setup, so the check is no longer necessary.
-
- Remove isLoadingComplete since it is now unused.
-
- Callback for loader is now initializeHistory, rather than just
- handleLocationChange which will set up the hashchange handler now.
- This will all eventually be moving to a new History object.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/dashboard_base.js:
- (handleLocationChange):
- (intializeHistory):
- (decompressResults):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2013-03-14 Manuel Rego Casasnovas <rego@igalia.com>
-
- Add selectTrailingWhitespaceEnabled setting to WebCore::Page
- https://bugs.webkit.org/show_bug.cgi?id=109404
-
- Reviewed by Tony Chang.
-
- Removes all the code related to smartInsertDeleteEnabled and
- selectTrailingWhitespaceEnabled settings as they will be managed from
- internals from now on.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (WebKit):
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::didStopLoading):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::applyTo): Set default values for
- smartInsertDeleteEnabled and selectTrailingWhitespaceEnabled settings as
- Chromium DRT default values are different from Chromium browser.
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
-
-2013-03-14 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Disable DRT on Windows
-
- Reviewed by Jocelyn Turcotte.
-
- We don't run and maintain DRT on Windows, so let's not try to maintain the build of it.
-
- * qmake/mkspecs/features/configure.prf:
-
-2013-03-14 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Add an API for adding and removing user style sheets from a page group
- https://bugs.webkit.org/show_bug.cgi?id=110728
-
- Reviewed by Gyuyoung Kim.
-
- Use the page group to create the view object.
-
- * MiniBrowser/efl/main.c:
- (window_create):
-
-2013-03-14 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Improve the handling of mock geolocation, device orientation and motion clients
-
- Reviewed by Tor Arne Vestbø.
-
- The mock versions of these web facing features should be instantiated when
- running in DumpRenderTree only. In order for them to work, no extra Qt modules
- such as QtLocation are actually needed.
-
- This patch decouples enabling device orientation/motion and geolocation from
- the underlying Qt modules and makes them available in developer builds
- (!production_build) and backed by mock backends when running in drt.
-
- So if the Qt 5 modules are available, they'll be used (unless drtRun). For
- developers the web facing features are always enabled (although requests will
- time out) and the mock backends are enabled inside DRT, allowing for the layout
- tests to run with less dependencies.
-
- In addition this also enables the mock device motion client, which was
- previously never instantiated.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-03-14 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Removing no-ops and simple setters/getters from TestRunnerQt
- https://bugs.webkit.org/show_bug.cgi?id=112340
-
- Reviewed by Simon Hausmann.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (DumpRenderTree::dump):
- Replace shouldDumpBackForwardList() with TestController:dumpBackForwardList().
- (DumpRenderTree::dumpApplicationCacheQuota):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::reset):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-03-14 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Port DRT to use TestRunner::dumpAsText()
- https://bugs.webkit.org/show_bug.cgi?id=112260
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- (WebCore::methodNameStringForFailedTest):
- Change parameter from type TestRunnerQt* to TestRunner*.
- (WebCore::DumpRenderTree::dump):
- TestRunnerQt::shouldDumpPixels() always returned true in our case.
- Instead we should rely on TestRunner::generatePixelResults().
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::reset):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-03-13 Kunihiko Sakamoto <ksakamoto@chromium.org>
-
- Implement FontLoader interface
- https://bugs.webkit.org/show_bug.cgi?id=98395
-
- Reviewed by Eric Seidel.
-
- Enable FontLoadEvents runtime flag for TestShell.
-
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
-
-2013-03-13 Julie Parent <jparent@chromium.org>
-
- CLeanup: remove unnecessary call to parseParameters.
- https://bugs.webkit.org/show_bug.cgi?id=112309
-
- Reviewed by Ojan Vafai.
-
- We call parseCrossDashboardParameters when the dashboard initially
- loads to set the state required for loadBuildersList, and then we
- call it again once we are fully done with loading, so there is no
- reason to call it in the middle of the loading process here.
-
- * TestResultServer/static-dashboards/loader.js:
- (.):
-
-2013-03-13 Elliott Sprehn <esprehn@chromium.org>
-
- Unreviewed. Now I'm a reviewer :)
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-13 Ryosuke Niwa <rniwa@webkit.org>
-
- Threaded HTML Parser is missing feature define flags in all but Chromium port's build files
- https://bugs.webkit.org/show_bug.cgi?id=112277
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-03-13 Adam Barth <abarth@webkit.org>
-
- run-perf-tests should support content_shell
- https://bugs.webkit.org/show_bug.cgi?id=112291
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2013-03-13 Oliver Hunt <oliver@apple.com>
-
- Simplify Checked<> multiplication
- https://bugs.webkit.org/show_bug.cgi?id=112286
-
- Reviewed by James Robinson.
-
- Add tests for multiplication by zero and max to ensure we don't
- mess them up should we ever make changes to Checked<> in future.
-
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
- (TestWebKitAPI):
-
-2013-03-13 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Unreviewed prospective Windows build fix
-
- Do the usual thing, include the moc generated code in the .cpp file instead
- of compiling it standalone, to ensure that config.h is included, too, and
- NOMINMAX is defined to avoid the min/max conflict when also including qdatetime.h.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
-
-2013-03-13 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Port TestRunner::findString to shared interface
- https://bugs.webkit.org/show_bug.cgi?id=112147
-
- Reviewed by Jocelyn Turcotte.
-
- This patch also removes DumpRenderTree and some other helper classes from
- the WebCore namespace, to which they do not really belong.
-
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (DumpRenderTree::DumpRenderTree):
- (DumpRenderTree::~DumpRenderTree):
- (DumpRenderTree::instance):
- (DumpRenderTree::setShouldTimeout):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::contextClick):
- (EventSender::sendEvent):
- (EventSender::postEvent):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender::isGraphicsBased):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::TestRunnerQt):
- (TestRunner::findString):
- (TestRunnerQt::setMockDeviceOrientation):
- (TestRunnerQt::setGeolocationPermission):
- (TestRunnerQt::numberOfPendingGeolocationPermissionRequests):
- (TestRunnerQt::setMockGeolocationPositionUnavailableError):
- (TestRunnerQt::setMockGeolocationPosition):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-03-13 Mikhail Naganov <mnaganov@chromium.org>
-
- [Chromium] Rename android_build_type to android_webview_build in .gyp files.
- https://bugs.webkit.org/show_bug.cgi?id=112129
-
- Reviewed by Adam Barth.
-
- Following Chromium
- http://src.chromium.org/viewvc/chrome?view=rev&revision=187556
- this is being renamed to better explain what it does.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-13 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Unreviewed trivial typo fix
-
- * DumpRenderTree/qt/DumpRenderTree.pro: It's TestRunner.h, not
- TextRunner.h. Thanks Zeno :)
-
-2013-03-12 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Prepare DRT for transition to shared TestRunner interface
- https://bugs.webkit.org/show_bug.cgi?id=112144
-
- Reviewed by Benjamin Poulain.
-
- Prepare Qt's DRT for a transition from the QObject based TestRunner to
- the JSC C API based one.
-
- This is impplemented by instantiating the QObject based testRunner in
- the global object, then instantiating the JSC C based TestRunner
- separately and placing it "behind" the QObject based testRunner through
- injection of the individual functions through proxies. (prototype
- chaining doesn't work due to the this object and Function.prototype.bind
- doesn't work due to the native function)
-
- This allows for porting over method by method by removing the method
- from the QObject TestRunnerQt and implementing it in the JSC C based
- TestRunner.
-
- In order for this to link and run dummy implementations of all the
- necessary TestRunner functions are provided.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::initJSObjects):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::~TestRunner):
- (TestRunner::addDisallowedURL):
- (TestRunner::queueLoad):
- (TestRunner::removeAllVisitedLinks):
- (TestRunner::setAcceptsEditing):
- (TestRunner::simulateLegacyWebNotificationClick):
- (TestRunner::setWindowIsKey):
- (TestRunner::setAlwaysAcceptCookies):
- (TestRunner::addOriginAccessWhitelistEntry):
- (TestRunner::setWebViewEditable):
- (TestRunner::clearAllApplicationCaches):
- (TestRunner::setTextDirection):
- (TestRunner::notifyDone):
- (TestRunner::numberOfPendingGeolocationPermissionRequests):
- (TestRunner::overridePreference):
- (TestRunner::pathToLocalResource):
- (TestRunner::removeAllWebNotificationPermissions):
- (TestRunner::simulateWebNotificationClick):
- (TestRunner::closeIdleLocalStorageDatabases):
- (TestRunner::focusWebView):
- (TestRunner::setBackingScaleFactor):
- (TestRunner::removeChromeInputField):
- (TestRunner::addChromeInputField):
- (TestRunner::originsWithLocalStorage):
- (TestRunner::deleteAllLocalStorage):
- (TestRunner::deleteLocalStorageForOrigin):
- (TestRunner::observeStorageTrackerNotifications):
- (TestRunner::syncLocalStorage):
- (TestRunner::windowCount):
- (TestRunner::setWaitToDump):
- (TestRunner::waitForPolicyDelegate):
- (TestRunner::webHistoryItemCount):
- (TestRunner::showWebInspector):
- (TestRunner::closeWebInspector):
- (TestRunner::evaluateInWebInspector):
- (TestRunner::setSerializeHTTPLoads):
- (TestRunner::apiTestNewWindowDataLoadBaseURL):
- (TestRunner::setCustomPolicyDelegate):
- (TestRunner::setDatabaseQuota):
- (TestRunner::setDomainRelaxationForbiddenForURLScheme):
- (TestRunner::resetPageVisibility):
- (TestRunner::keepWebHistory):
- (TestRunner::goBack):
- (TestRunner::originsWithApplicationCache):
- (TestRunner::applicationCacheDiskUsageForOrigin):
- (TestRunner::display):
- (TestRunner::dispatchPendingLoadRequests):
- (TestRunner::clearPersistentUserStyleSheet):
- (TestRunner::callShouldCloseOnWebView):
- (TestRunner::copyDecodedHostName):
- (TestRunner::clearBackForwardList):
- (TestRunner::clearAllDatabases):
- (TestRunner::clearApplicationCacheForOrigin):
- (TestRunner::apiTestGoToCurrentBackForwardItem):
- (TestRunner::authenticateSession):
- (TestRunner::abortModal):
- (TestRunner::setStorageDatabaseIdleInterval):
- (TestRunner::setAsynchronousSpellCheckingEnabled):
- (TestRunner::setXSSAuditorEnabled):
- (TestRunner::setSpatialNavigationEnabled):
- (TestRunner::setScrollbarPolicy):
- (TestRunner::setJavaScriptCanAccessClipboard):
- (TestRunner::setAutomaticLinkDetectionEnabled):
- (TestRunner::setUserStyleSheetEnabled):
- (TestRunner::setUserStyleSheetLocation):
- (TestRunner::setUseDashboardCompatibilityMode):
- (TestRunner::setTabKeyCyclesThroughElements):
- (TestRunner::setSmartInsertDeleteEnabled):
- (TestRunner::setSelectTrailingWhitespaceEnabled):
- (TestRunner::setPrivateBrowsingEnabled):
- (TestRunner::setPluginsEnabled):
- (TestRunner::setPopupBlockingEnabled):
- (TestRunner::setMockSpeechInputDumpRect):
- (TestRunner::setPersistentUserStyleSheetLocation):
- (TestRunner::setMockGeolocationPosition):
- (TestRunner::setMockGeolocationPositionUnavailableError):
- (TestRunner::setMockDeviceOrientation):
- (TestRunner::setMainFrameIsFirstResponder):
- (TestRunner::setIconDatabaseEnabled):
- (TestRunner::setGeolocationPermission):
- (TestRunner::setDefersLoading):
- (TestRunner::setCacheModel):
- (TestRunner::setAuthorAndUserStylesEnabled):
- (TestRunner::setAllowFileAccessFromFileURLs):
- (TestRunner::setAppCacheMaximumSize):
- (TestRunner::setAllowUniversalAccessFromFileURLs):
- (TestRunner::setApplicationCacheOriginQuota):
- (TestRunner::denyWebNotificationPermission):
- (TestRunner::grantWebNotificationPermission):
- (TestRunner::setValueForUser):
- (TestRunner::setViewModeMediaFeature):
- (TestRunner::setPageVisibility):
- (TestRunner::addMockSpeechInputResult):
- (TestRunner::removeOriginAccessWhitelistEntry):
- (TestRunner::addUserScript):
- (TestRunner::isCommandEnabled):
- (TestRunner::evaluateScriptInIsolatedWorld):
- (TestRunner::evaluateScriptInIsolatedWorldAndReturnValue):
- (TestRunner::copyEncodedHostName):
- (TestRunner::addUserStyleSheet):
- (TestRunner::findString):
- (TestRunner::execCommand):
- (TestRunner::localStorageDiskUsageForOrigin):
-
-2013-03-12 Julie Parent <jparent@chromium.org>
-
- Cleanup: Move flatten-trie to loader.
- https://bugs.webkit.org/show_bug.cgi?id=112196
-
- Reviewed by Dirk Pranke.
-
- flatten-trie is used only by the loader, so move it there and make it
- private, rather than global in dashbaord_base. Moved the corresponding
- unit test from flakiness_dashboard_unittests to loader_unittests.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-03-12 Oliver Hunt <oliver@apple.com>
-
- Unbreak api tests
-
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
- (TestWebKitAPI):
-
-2013-03-12 Tim Horton <timothy_horton@apple.com>
-
- Unreviewed, disabling tests for Win EWS.
-
- win-ews obviously cannot keep up with running tests, it's >300 behind.
- Probably doesn't help that its (likely) running tests serially.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-12 Tim Horton <timothy_horton@apple.com>
-
- Add a --build-directory argument to delete-stale-build-files
- https://bugs.webkit.org/show_bug.cgi?id=112198
-
- Reviewed by Ryosuke Niwa.
-
- * BuildSlaveSupport/delete-stale-build-files:
- (main): Add --build-directory argument.
-
-2013-03-12 Oliver Hunt <oliver@apple.com>
-
- Appease MSVC
-
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
- (TestWebKitAPI):
-
-2013-03-12 Oliver Hunt <oliver@apple.com>
-
- Add more Checked<> tests
- https://bugs.webkit.org/show_bug.cgi?id=112190
-
- Reviewed by Geoffrey Garen.
-
- Tests!
-
- * TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp:
- (TestWebKitAPI):
-
-2013-03-12 Julie Parent <jparent@chromium.org>
-
- Cleanup: Move loading complete function into callback, rather than global.
- https://bugs.webkit.org/show_bug.cgi?id=112167
-
- Reviewed by Dirk Pranke.
-
- Stop calling global functions, pass in proper handler to Loader
- constructor. Note that the callback is optional, as tests, and
- some potential dashboards, do not need one.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-03-12 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][WK2] Add popup menu support to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=108934
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement popup menu support in MiniBrowser by handling popup_menu_show
- and popup_menu_hide smart functions on the view and using the Ewk popup
- menu API.
-
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (on_popup_menu_discarded):
- (on_popup_menu_item_clicked):
- (popup_menu_populate):
- (on_popup_menu_show):
- (on_popup_menu_hide):
- (window_create): Use calloc() instead of malloc() to allocate memory for
- Browser_Window. This makes sure all the structs members are initialized
- to 0 (such as the new elm_popup_menu pointer).
-
-2013-03-12 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Set up the libPlatformGtk.la library
- https://bugs.webkit.org/show_bug.cgi?id=111738
-
- Reviewed by Martin Robinson.
-
- * GNUmakefile.am: Reference platformgtk_cppflags variable along with webcoregtk_cppflags variable.
- Adjust the path to GtkVersioning.c, the file has moved under Source/Platform.
- * TestWebKitAPI/GNUmakefile.am: Reference platformgtk_cppflags variable along with webcoregtk_cppflags variable.
-
-2013-03-12 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Enable Web Audio in development builds
- https://bugs.webkit.org/show_bug.cgi?id=111831
-
- Reviewed by Philippe Normand.
-
- Web Audio is already quite well supported on the GTK port but still has a few issues
- that must be addressed before it is enabled by default. Despite that it should be enabled
- in development builds just so we are up-to-date with future feature infrastructure changes.
- The Web Audio-related layout tests are not run yet due to missing support in DRT/WKTR, but
- that's an obvious goal before enabling the feature in release builds.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-11 Andreas Kling <akling@apple.com>
-
- [Mac][WK1] Add support for alert() in MiniBrowser.
- <http://webkit.org/b/112090>
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/mac/WK1BrowserWindowController.m:
- (-[WK1BrowserWindowController webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
-
-2013-03-11 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: Create ui.Errors
- https://bugs.webkit.org/show_bug.cgi?id=111785
-
- Reviewed by Ojan Vafai.
-
- Create ui.Errors for handling errors the dashboards
- encounter. Loader now has a Error object that it can add to,
- and individual dashboards can show errors when desired.
- Currently, only flakiness_db shows errors, but this is
- generic and there is no reason why other dbs wouldn't want to
- show errors.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (resourceLoadingComplete):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/ui.js:
- (.):
-
-2013-03-08 Geoffrey Garen <ggaren@apple.com>
-
- Some StringHasher tests are broken because of missing null termination
- https://bugs.webkit.org/show_bug.cgi?id=111284
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WTF/StringHasher.cpp:
- (TestWebKitAPI): Added null termination since C strings are null-terminated.
- (TestWebKitAPI::TEST): Removed #ifdef's that disabled this testing since
- the bug caught by it is now fixed.
-
-2013-03-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r145200.
- http://trac.webkit.org/changeset/145200
- https://bugs.webkit.org/show_bug.cgi?id=112063
-
- Broke a couple of unit tests (Requested by zdobersek on
- #webkit).
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-11 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] WebKit2-only build fails
- https://bugs.webkit.org/show_bug.cgi?id=112033
-
- Reviewed by Gustavo Noronha Silva.
-
- * GNUmakefile.am: Split the list of files the docs-build.stamp target depends on into the
- generic part, WebKit1-specific part and WebKit2-specific part.
- * TestWebKitAPI/GNUmakefile.am: The TestGtk executable should not link agains libwebkitgtk
- as it is not WebKit1-specific, but should rather link to libWebCore.la and libWebCoreGtk.la
- directly.
-
-2013-03-11 Dima Gorbik <dgorbik@apple.com>
-
- Adding myself to the committers list.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-11 Jeff Rogers <jrogers@rim.com>
-
- [BlackBerry] Disable MathML support
- https://bugs.webkit.org/show_bug.cgi?id=111929
-
- Reviewed by Rob Buis.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-11 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][GTK][WKTR] Regression(r145231): Undefined symbol in libTestRunnerInjectedBundle.so
- https://bugs.webkit.org/show_bug.cgi?id=111970
-
- Reviewed by Chris Fleizach.
-
- Provide dummy implementation for AccessibilityUIElement::supportedActions() in ATK
- or libTestRunnerInjectedBundle.so cannot be loaded in EFL / GTK otherwise, due to
- undefined symbol.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::supportedActions):
- (WTR):
-
-2013-03-11 Chris Hopman <cjhopman@chromium.org>
-
- [chromium] Android apk targets should depend directly on Java library targets
- https://bugs.webkit.org/show_bug.cgi?id=111746
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- Make DumpRenderTree_apk depend directly on base_java and net_java.
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
- Make TestWebKitAPI_apk depend directly on base_java.
-
-2013-03-11 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove obsolete user gesture methods from WebFrame
- https://bugs.webkit.org/show_bug.cgi?id=111696
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::handleInputEvent):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
-
-2013-03-10 Silvia Pfeiffer <silviapf@chromium.org>
-
- Unreviewed, add myself to commiters.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-08 Julie Parent <jparent@chromium.org>
-
- Cleanup: Remove dead code.
- https://bugs.webkit.org/show_bug.cgi?id=111900
-
- Reviewed by Dirk Pranke.
-
- Treemap overrides a global function that used to be in
- dashboard_base, but was removed months ago in
- https://bugs.webkit.org/show_bug.cgi?id=99246, so this code has
- no caller.
-
- * TestResultServer/static-dashboards/treemap.html:
-
-2013-03-08 Harald Alvestrand <hta@chromium.org>
-
- Implemented new API for RTCStatsReport object.
- https://bugs.webkit.org/show_bug.cgi?id=110333
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp:
- (WebTestRunner::MockWebRTCPeerConnectionHandler::getStats):
-
-2013-03-08 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] use custom freetype on linux asan builds again
- https://bugs.webkit.org/show_bug.cgi?id=111884
-
- Reviewed by Tony Chang.
-
- We no longer need the workaround after chromium r186540.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-08 Ryosuke Niwa <rniwa@webkit.org>
-
- Warning about the user not having edit rights on Bugzilla is confusing new contributors
- https://bugs.webkit.org/show_bug.cgi?id=111798
-
- Reviewed by Dirk Pranke.
-
- Don't scare people by the warning. Instead, tell them to ignore it if they don't have EditBugs privileges.
-
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
-
-2013-03-08 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove WebLayerTreeViewClient and WebLayerTreeView::Settings
- https://bugs.webkit.org/show_bug.cgi?id=111632
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-03-08 Benjamin Poulain <benjamin@webkit.org>
-
- [Mac] Add a feature flag for 'view-mode' Media Feature, disable it on Mac
- https://bugs.webkit.org/show_bug.cgi?id=111297
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setViewModeMediaFeature):
-
-2013-03-08 Chris Fleizach <cfleizach@apple.com>
-
- [Mac] [WK2] platform/mac/accessibility/press-action-is-first.html fails
- https://bugs.webkit.org/show_bug.cgi?id=111814
-
- Reviewed by Ryosuke Niwa.
-
- Add the needed supportedActions() attribute to WKTestRunner.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::supportedActions):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::supportedActions):
-
-2013-03-08 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL] Memory leak at WKViewClientWebProcessCallbacks API test
- https://bugs.webkit.org/show_bug.cgi?id=111851
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp:
- (TestWebKitAPI::TEST):
-
- Fixed WKURLRef instance leaking.
-
-2013-03-08 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL] [WK2] Some authentication tests fail in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=106407
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add patch from upstream for libsoup 2.40 to fix several authentication
- test cases.
-
- * efl/jhbuild.modules:
- * efl/patches/libsoup-2.40-auth-fix.patch: Added.
-
-2013-03-08 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Enable Web Audio in development builds
- https://bugs.webkit.org/show_bug.cgi?id=111831
-
- Reviewed by Philippe Normand.
-
- Web Audio is already quite well supported on the GTK port but still has a few issues
- that must be addressed before it is enabled by default. Despite that it should be enabled
- in development builds just so we are up-to-date with future feature infrastructure changes.
- The Web Audio-related layout tests are not run yet due to missing support in DRT/WKTR, but
- that's an obvious goal before enabling the feature in release builds.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-03-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] delay clearing the TestRunners until the main view was deleted
- https://bugs.webkit.org/show_bug.cgi?id=111823
-
- Reviewed by Eric Seidel.
-
- During WebViewHost::shutdown, we navigate the WebView to about:blank.
- This may call into the test runners which assume that the delegate is
- always non-NULL.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
-
-2013-03-07 Alan Cutter <alancutter@chromium.org>
-
- Sheriffbot whois command can't search by full name
- https://bugs.webkit.org/show_bug.cgi?id=111825
-
- Reviewed by Eric Seidel.
-
- Allowed multiple arguments to Sheriffbot's whois command.
- Updated test expectations.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Whois.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois):
-
-2013-03-07 Nils Barth <nbarth@chromium.org>
-
- Add Nils Barth and Koji Hara to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=111806
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-07 Glenn Adams <glenn@skynav.com>
-
- run-pert-tests should have a --test-runner-count option
- https://bugs.webkit.org/show_bug.cgi?id=111726
-
- Reviewed by Ryosuke Niwa.
-
- Add --test-runner-count option to run-perf-tests, with default value of 4.
- This option allows command line configuration of the number of times to invoke
- the test runner (serially, not in parallel) when running a specific test in
- a test set.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest): Add DEFAULT_TEST_RUNNER_COUNT constant.
- (PerfTest.__init__): Rename process_run_count to test_runner_count (throughout).
- (PerfTest.run): Rename process_run_count to test_runner_count.
- (SingleProcessPerfTest.__init__): Add test_runner_count optional argument.
- (ChromiumStylePerfTest.__init__): Add test_runner_count optional argument.
- (ReplayPerfTest.__init__): Add test_runner_count optional argument.
- (PerfTestFactory.create_perf_test): Add test_runner_count optional argument.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args): Add '--test-runner-count' option.
- (PerfTestsRunner._collect_tests): Use test_runner_count when creating PerfTest.
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest._test_run_with_json_output): Add optional compare_logs argument.
- (MainTest.test_run_with_repeat):
- (MainTest.test_run_with_test_runner_count): Add new test for test-runner-count option semantics.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.test_default_args): Add test for default option argument values.
- (MainTest.test_parse_args): Add test for test-runner-count option parsing.
-
-2013-03-07 Christian Biesinger <cbiesinger@chromium.org>
-
- Add myself to reviewers.py
- https://bugs.webkit.org/show_bug.cgi?id=111757
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-03-07 Glenn Adams <glenn@skynav.com>
-
- run-perf-tests should have a --repeat option
- https://bugs.webkit.org/show_bug.cgi?id=100030
-
- Reviewed by Ryosuke Niwa.
-
- Add --repeat option to run-perf-tests, with default value of 1. When greater
- than 1, runs test set specified number of times. Note that multiple runs are
- not aggregated for statistical purposes.
-
- Incidentally fixed typo: s/suceeds/succeeds/.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args): Add repeat option.
- (PerfTestsRunner.run): Add outer repeat loop.
- (PerfTestsRunner._generate_results): Split from original _generate_and_show_results.
- (PerfTestsRunner._upload_and_show_results): Split from original _generate_and_show_results.
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest._test_run_with_json_output): Add repeat optional argument for generating expected logs. Fix typo.
- (MainTest._test_run_with_json_output.mock_upload_json): Fix typo.
- (MainTest.test_run_with_json_output): Fix typo.
- (MainTest.test_run_with_description): Fix typo.
- (MainTest.test_run_respects_no_results): Fix typo.
- (MainTest.test_run_with_slave_config_json): Fix typo.
- (MainTest.test_run_with_multiple_repositories): Fix typo.
- (MainTest.test_run_with_upload_json): Fix typo.
- (MainTest.test_run_with_upload_json_should_generate_perf_webkit_json): Fix typo.
- (MainTest.test_run_with_repeat): Added new test for repeat count semantics.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.test_parse_args): Add test for repeat option parsing.
-
-2013-03-07 Julie Parent <jparent@chromium.org>
-
- showAllRuns checkbox no longer works on the stats dashboard
- https://bugs.webkit.org/show_bug.cgi?id=111673
-
- Reviewed by Ojan Vafai.
-
- Stats dashboard does not have any DB_SPECIFIC_INVALIDATING_PARAMETERS,
- so we were trying to index into an undefined object.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (invalidateQueryParameters):
-
-2013-03-07 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Update #include for WebStorageNamespace.h
- https://bugs.webkit.org/show_bug.cgi?id=111748
-
- Reviewed by Adam Barth.
-
- In anticipation of removing
- WK/chromium/public/WebStorageNamespace.h (once downstream
- references have been updated)
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
-
-2013-03-07 Dirk Pranke <dpranke@chromium.org>
-
- run-perf-tests fails due to svn_revision not working on a pure git clone
- https://bugs.webkit.org/show_bug.cgi?id=110839
-
- Reviewed by Ryosuke Niwa.
-
- Previously we would call git svn find-rev to look up the commit for
- a given revision, and that'll hang in a pure git checkout.
-
- This patch changes the way we look up svn revisions in a git
- repository to use git log --grep 'git-svn-id', which is much faster
- than grepping ourselves. It also renames timestamp_of_latest_commit()
- to timestamp_of_revision() in order to accurately reflect what
- the method is doing. Note that this patch only changes the logic
- inside latest_revision() and svn_revision(). I'll file a separate
- bug to change git_commit_from_svn_revision().
-
- This patch also contains some fixes to unit tests that had bit-rotted
- or were otherwise fragile, so that test-webkitpy --all would pass
- cleanly, and a fix to outputcapture so that
- test-webkitpy -p would work correctly again.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.svn_revision):
- (Git.timestamp_of_revision):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.svn_revision):
- (SCM.timestamp_of_revision):
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.timestamp_of_revision):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (_shared_test_commit_with_message):
- (test_commit_without_authorization):
- (test_timestamp_of_revision):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.timestamp_of_revision):
- * Scripts/webkitpy/common/system/outputcapture.py:
- Importing unittest2 directly may not be safe if this module is
- imported before the autoinstaller gets a chance to set things up
- properly. We don't actually need unittest2 here.
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_results_dict):
-
-2013-03-07 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL] Bump libsoup dependency to 2.40.3 to fix regressions
- https://bugs.webkit.org/show_bug.cgi?id=111756
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Bump libsoup to v2.40.3 to fix the regressions introduced by
- previous v2.40.0 bump.
-
- * efl/jhbuild.modules:
-
-2013-03-07 Roger Fong <roger_fong@apple.com>
-
- Re-enable Win EWS tests.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-07 Dirk Pranke <dpranke@chromium.org>
-
- [nrwt] handle corrupt http server pid files cleanly
- https://bugs.webkit.org/show_bug.cgi?id=111628
-
- Reviewed by Eric Seidel.
-
- If the pid file from a previous http server is corrupt for some
- reason, NRWT will just raise errors and not clean it up or recover.
- This patch fixes that to at least delete the pid file and
- not throw; not that we may still have stale http servers left on
- the system, since there's no way to know which pid to kill if
- the file was corrupted.
-
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase.start):
- (HttpServerBase.stop):
- (HttpServerBase._remove_pid_file):
- * Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py: Added.
- (TestHttpServerBase):
- (TestHttpServerBase.test_corrupt_pid_file):
-
-2013-03-07 Chris Fleizach <cfleizach@apple.com>
-
- AX: Can't activate links with VoiceOver in Safari
- https://bugs.webkit.org/show_bug.cgi?id=111755
-
- Reviewed by Tim Horton.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (supportedActionsCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::supportedActions):
-
-2013-03-07 Roger Fong <roger_fong@apple.com>
-
- Windows debug layout tests are crashing like crazy again.
- Disable tests on Win EWS bots temporarily.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-07 Roger Fong <roger_fong@apple.com>
-
- Make EWS bots build and test in release.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-03-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] don't track the top loading frame if no layout test is currently running
- https://bugs.webkit.org/show_bug.cgi?id=111716
-
- Reviewed by Kentaro Hara.
-
- In DRT, we synchronously stop the test and start loading the next test
- URL. However, in content_shell, this happens asynchronously. It's
- important that the top loading frame is not changed due to stray
- navigation events before the next test starts.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::setTopLoadingFrame):
-
-2013-03-06 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: Move all dashboard ui related code into ui.js.
- https://bugs.webkit.org/show_bug.cgi?id=111621
-
- Reviewed by Ojan Vafai.
-
- Creates ui.js, a package for the common UI code the various
- dashboards use. HTML generation is now in the ui.html namespace
- and popup handling is in ui.popup.
- Also moves the event listening for popups to ui.popup.show and
- removes it on ui.popup.hid rather than having listener always
- around.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (showPopupForBuild):
- (htmlForNavBar):
- (generatePageForIndividualTests.if):
- (generatePageForIndividualTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
- * TestResultServer/static-dashboards/ui.js: Added.
- (.):
-
-2013-03-06 Krzysztof Czech <k.czech@samsung.com>
-
- [EFL] Missing implementation of AccessibilityControllerEfl and AccessibilityUIElementEfl files
- https://bugs.webkit.org/show_bug.cgi?id=110584
-
- Reviewed by Gyuyoung Kim.
-
- Adds missing implementation of AccessibilityControllerEfl
- and AccessibilityUIElementEfl files. Modify DumpRenderTreeChrome
- so that it can make accessibilityController as a js object.
-
- * DumpRenderTree/AccessibilityController.h:
- (AccessibilityController):
- * DumpRenderTree/AccessibilityUIElement.h:
- * DumpRenderTree/atk/AccessibilityControllerAtk.cpp:
- (AccessibilityController::childElementById): Moved declaration to base class.
- Implementation can be shared among other ports.
- * DumpRenderTree/efl/AccessibilityControllerEfl.cpp: Copied from Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp.
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
- (AccessibilityController::accessibleElementById):
- * DumpRenderTree/efl/AccessibilityUIElementEfl.cpp: Copied from Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp.
- (AccessibilityUIElement::helpText):
- * DumpRenderTree/efl/CMakeLists.txt:
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::DumpRenderTreeChrome):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- (DumpRenderTreeChrome::onWindowObjectCleared):
- (DumpRenderTreeChrome::accessibilityController):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
-
-2013-03-06 Benjamin Poulain <benjamin@webkit.org>
-
- WebKitTestRunner needs layoutTestController.elementDoesAutoCompleteForElementWithId
- https://bugs.webkit.org/show_bug.cgi?id=42696
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
-
-2013-03-06 Roger Fong <roger_fong@apple.com>
-
- Re-enable WinEWS test and decrease iterations before clean build back to 10.
-
- * EWSTools/start-queue-win.sh:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-06 Manuel Rego Casasnovas <rego@igalia.com>
-
- [WK2][GTK] Fix unit test WebKit2APITests/WebKitWebView/mouse-target
- https://bugs.webkit.org/show_bug.cgi?id=82866
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unflag WebKit2APITests/WebKitWebView/mouse-target test as
- it is passing now.
-
-2013-03-06 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: remove dashboard time logging.
- https://bugs.webkit.org/show_bug.cgi?id=111608
-
- Reviewed by Dirk Pranke.
-
- Remove logTime. It was never accurate, and the dev tools
- have better ways to measure this if anyone cares to look
- into dashboard perf.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (processTestRunsForBuilder):
- (appendHTML):
-
-2013-03-06 Tony Chang <tony@chromium.org>
-
- [chromium] making DumpRenderTree_resources a separate bundle breaks xcode
- https://bugs.webkit.org/show_bug.cgi?id=111509
-
- Reviewed by Dirk Pranke.
-
- Add DumpRenderTree.pak to DumpRenderTree.app again.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-06 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] introduce WebUserGestureIndicator
- https://bugs.webkit.org/show_bug.cgi?id=111531
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
-
-2013-03-06 Alan Cutter <alancutter@chromium.org>
-
- sheriffbot roll-chromium-deps shouldn't create a bug with None as the new revision.
- https://bugs.webkit.org/show_bug.cgi?id=73482
-
- Reviewed by Ryosuke Niwa.
-
- Added input checking to the UpdateChromiumDEPS step.
- Removed the default use of LKGR when the revision input is invalid. "LKGR" must be explicitly given instead.
-
- * Scripts/webkitpy/tool/bot/irc_command.py: Updated input validation and error message handling.
- (RollChromiumDEPS):
- (RollChromiumDEPS._parse_args):
- (RollChromiumDEPS.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py: Updated unit tests.
- (IRCCommandTest.test_roll_chromium_deps):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py: Updated unit tests.
- (IRCBotTest.test_roll_chromium_deps_to_lkgr):
- * Scripts/webkitpy/tool/commands/roll_unittest.py: Updated unit tests.
- * Scripts/webkitpy/tool/steps/updatechromiumdeps.py: Added input validation and added new error handling cases. Changed the logic of deciding to use LKGR to be only when the input is "LKGR".
- (UpdateChromiumDEPS._fetch_last_known_good_revision):
- (UpdateChromiumDEPS):
- (UpdateChromiumDEPS._parse_revision_number):
- (UpdateChromiumDEPS._validate_revisions):
- (UpdateChromiumDEPS.run):
- * Scripts/webkitpy/tool/steps/updatechromiumdeps_unittest.py: Added unit tests.
- (UpdateChromiumDEPSTest):
- (UpdateChromiumDEPSTest.test_parse_revision_number):
- * Scripts/webkitpy/tool/commands/roll.py: Updated help text.
- (RollChromiumDEPS):
- (PostChromiumDEPSRoll):
-
-2013-03-06 Andras Becsi <andras.becsi@digia.com>
-
- [Qt][MiniBrowser] Touch mocking broken for chained getures
- https://bugs.webkit.org/show_bug.cgi?id=111430
-
- Reviewed by Jocelyn Turcotte.
-
- Make it possible again to use touch mocking to test gesture chains
- like pan->pinch->pan->pinch without lifting the primary "finger".
- For this to work we need to track the pressed mouse buttons and
- only synthesize touch release events when the ctrl key is released
- if no mouse button is pressed. Else the pressed mouse button(s)
- should result in a stationary touch point in a touch update event.
- Since it has been fixed in Qt 5.0.1 use QGuiApplication::keyboardModifiers()
- to check for the state of the ctrl key modifier instead of getting
- it from the mouse events.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::MiniBrowserApplication):
- (MiniBrowserApplication::notify):
-
-2013-03-05 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] don't use custom freetype on linux asan for now
- https://bugs.webkit.org/show_bug.cgi?id=111516
-
- Unreviewed, build fix.
-
- Turns out the custom lib is getting picked up by other binaries
- on our bot, which is bad.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-05 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] making DumpRenderTree_resources a separate bundle breaks xcode
- https://bugs.webkit.org/show_bug.cgi?id=111509
-
- Unreviewed, build fix.
-
- Actually comment out the flag :(.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-05 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] making DumpRenderTree_resources a separate bundle breaks xcode
- https://bugs.webkit.org/show_bug.cgi?id=111509
-
- Unreviewed, build fix.
-
- r144863 appears to have broken the xcode build; I'm temporarily
- trying this instead, and if this doesn't work, I'll revert the
- other changes.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-05 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] build a DumpRenderTree.pak even on windows
- https://bugs.webkit.org/show_bug.cgi?id=111504
-
- Reviewed by Tony Chang.
-
- The Chromium Aura build uses the default theme to draw
- controls, and that theme requires the ui ResourceBundle
- to be initialized. On every other platform, we build
- a DumpRenderTree.pak that works for this, but on Windows we
- still compile the resources directly into DRT. As a first step,
- let's build the pak file. I will then need to land a patch
- in Chromium to actually load it. Then I can go back and move
- the resources over to just use the .pak file and no longer need
- the .rc's.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-03-05 Julie Parent <jparent@chromium.org>
- Dashboard cleanup: move string utilities into their own namespace.
-
- https://bugs.webkit.org/show_bug.cgi?id=111485
-
- Reviewed by Ojan Vafai.
-
- One of many pieces to clean up dashboard_base.
-
- Moves string utility functions into separate file (string.js) and into their own namespace rather than cluttering up the global scope.
-
- * TestResultServer/static-dashboards/aggregate_results.html:
- * TestResultServer/static-dashboards/dashboard_base.js:
- (isTreeMap):
- (isFlakinessDashboard):
- * TestResultServer/static-dashboards/flakiness_dashboard.html:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (determineWKPlatform):
- (chromiumPlatform):
- (platformAndBuildType):
- (substringList):
- (individualTestsForSubstringList):
- (filterBugs):
- (populateExpectationsData):
- (processMissingTestsWithExpectations):
- (processMissingAndExtraExpectations):
- (htmlForSingleTestRow):
- (.dummyNode.onload):
- (expectationsTitle):
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
- * TestResultServer/static-dashboards/string.js: Added.
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2013-03-05 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Build break with latest EFL libraries
- https://bugs.webkit.org/show_bug.cgi?id=111028
-
- Reviewed by Dirk Pranke.
-
- * MiniBrowser/efl/CMakeLists.txt: Added ECORE_XXX_INCLUDE_DIRS.
- * TestWebKitAPI/PlatformEfl.cmake: Ditto.
- * WebKitTestRunner/PlatformEfl.cmake: Ditto.
-
-2013-03-05 Roger Fong <roger_fong@apple.com>
-
- Increase number of WinEWS iterations to 20.
- Don't reboot after each iteration set.
- Make EWS bots just build temporarily so that the queue catches up again.
-
- * EWSTools/start-queue-win.sh:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-03-04 James Robinson <jamesr@chromium.org>
-
- [chromium] Move check for threaded compositing from WebCompositorSupport to Platform
- https://bugs.webkit.org/show_bug.cgi?id=111386
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
-
-2013-03-05 Min Qin <qinmin@chromium.org>
-
- Copy dictionary to the external storage before running layout test on android
- https://bugs.webkit.org/show_bug.cgi?id=111480
-
- Reviewed by Adam Barth.
-
- TestWebKitPlatformSupport now needs to read an external dictionary file.
- This file does not exist on the device. We need to copy it before running layout tests.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._setup_md5sum_and_push_data_if_needed):
- (ChromiumAndroidDriver._push_platform_resources):
-
-2013-03-05 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] DRT crashes in an Aura/Win build
- https://bugs.webkit.org/show_bug.cgi?id=111394
-
- Reviewed by Tony Chang.
-
- When building (and running) with use_aura=1, we assume that
- we're using the default theme engine, but DRT creates the
- DRTWin theme engine and overwrites the default, leading to crashes
- in basically every test from the mismatch.
-
- This fix gets us down to at least "lots of crashes" :).
-
- * DumpRenderTree/chromium/TestShellWin.cpp:
- (platformInit):
-
-2013-03-05 Eric Seidel <eric@webkit.org>
-
- Add html-parser-threaded perf test now that the threaded parser is enabled by default
- https://bugs.webkit.org/show_bug.cgi?id=111200
-
- Reviewed by Ryosuke Niwa.
-
- Had to teach run-perf-tests to ignore one more warning.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
-
-2013-03-05 Jochen Eisinger <jochen@chromium.org>
-
- Update list of builders for test results server
- https://bugs.webkit.org/show_bug.cgi?id=111166
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.jsonp:
-
-2013-03-05 Martin Robinson <mrobinson@igalia.com> and Tomas Popela <tpopela@redhat.com>
-
- [GTK] Move basic dependency installation to a script
- https://bugs.webkit.org/show_bug.cgi?id=110692
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/install-dependencies: Added. A Script which installs all dependencies
- necessary for building for Debian-based distributions and Fedora.
-
-2013-03-05 James Robinson <jamesr@chromium.org>
-
- Chromium DumpRenderTree dumps a core every time it's run (Linux/Debug)
- https://bugs.webkit.org/show_bug.cgi?id=111440
-
- Reviewed by Adrienne Walker.
-
- Remove unnecessary WebCompositorSupport::shutdown call
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
-
-2013-03-05 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed build fix.
-
- * GNUmakefile.am: add generate-feature-defines-files scripts to EXTRA_DIST.
-
-2013-03-05 Andras Becsi <andras.becsi@digia.com>
-
- [Qt][MiniBrowser] Improve the update of touch indicators
- https://bugs.webkit.org/show_bug.cgi?id=111429
-
- Reviewed by Jocelyn Turcotte.
-
- MiniBrowserApplication::sendTouchEvent sends an empty list
- to BrowserWindow::updateVisualMockTouchPoints if the control
- button is released, in which case the touch indicators should
- be hidden so that we never end up with a leftover indicator
- sticking on the screen.
- This patch also simplifies the lookup of the indicator items by
- replacing the findChild search in the item tree with a QHash
- that stores the touch ID's and the pointers to the corresponding
- indicator items.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::updateVisualMockTouchPoints):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
-
-2013-03-05 Tim Horton <timothy_horton@apple.com>, Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- [WK2] WTR needs an implementation of setAsynchronousSpellCheckingEnabled
- https://bugs.webkit.org/show_bug.cgi?id=81042
-
- Reviewed by Enrica Casucci.
-
- Add setAsynchronousSpellCheckingEnabled implementation for
- WebKitTestRunner to have the possibility to test asynchronous
- spell checking implementation from bug 109577.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setAsynchronousSpellCheckingEnabled):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2013-03-05 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add the getStreamById method on RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=111311
-
- Reviewed by Adam Barth.
-
- Changing mocks to be more realistic.
-
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp:
- (WebTestRunner::MockWebRTCPeerConnectionHandler::addStream):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::removeStream):
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
- (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
-
-2013-03-05 Jochen Eisinger <jochen@chromium.org>
-
- Add content shell bots to garden-o-matic for general failurse
- https://bugs.webkit.org/show_bug.cgi?id=111168
-
- Reviewed by Adam Barth.
-
- All but the WebKit (Content Shell) Android bot is stable enough. While
- they're not green yet, there must not be any non-layout test failures on
- them.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2013-03-04 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove deprecated WebTestRunner::setFocus API
- https://bugs.webkit.org/show_bug.cgi?id=111354
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
-
-2013-03-04 Jochen Eisinger <jochen@chromium.org>
-
- Run the bindings generation tests on EWS and CQ bots
- https://bugs.webkit.org/show_bug.cgi?id=111358
-
- Reviewed by Adam Barth.
-
- The tests are super fast and not flaky.
-
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.run_bindings_tests_command):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort.run_webkit_tests_command):
- (MockPort):
- (MockPort.run_bindings_tests_command):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_webkit_run_unit_tests):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
-
-2013-03-04 Eric Seidel <eric@webkit.org>
-
- run-webkit-tests should support --profile and --profiler= just like run-perf-tests does
- https://bugs.webkit.org/show_bug.cgi?id=111384
-
- Reviewed by Ryosuke Niwa.
-
- Sometimes I want to know why various LayoutTests are slow
- without having to convert them into PerformanceTests in order
- to use our fancy profiling. The Driver already knows how to
- do the right thing, we just need to expose the options to the user.
-
- Handling of these options is already unittested in the perftests_unittest.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2013-03-04 Alan Cutter <alancutter@chromium.org>
-
- check-webkit-style says "Have to enable auto props in the subversion config file"
- https://bugs.webkit.org/show_bug.cgi?id=107724
-
- Reviewed by Tony Chang.
-
- Added a standard svn config file for WebKit developers to use.
- Updated the style and commit queue bot build scripts to load this file.
-
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
- * EWSTools/configure-svn-config.sh: Copied from Tools/EWSTools/GoogleComputeEngine/build-commit-queue.sh.
- * svn-config: Added.
-
-2013-03-04 James Robinson <jamesr@chromium.org>
-
- [chromium] Switch to new webkit_support::CreateLayerTreeView interface
- https://bugs.webkit.org/show_bug.cgi?id=111285
-
- Reviewed by Adrienne Walker.
-
- This removes the need for WebCompositorSupport::initialize and exposes
- slightly fewer entry points across the repository boundary.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::webCompositorThread):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
-
-2013-03-04 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Get rid of some AppleWin VS2010 build warnings.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props:
-
-2013-03-04 David Kilzer <ddkilzer@apple.com>
-
- BUILD FIX (r144657): Fix DumpRenderTree build failure on iOS
-
- Tools/DumpRenderTree/ios/AccessibilityControllerIOS.mm:95:29: error: class method '+stringWithJSStringRef:' not found (return type defaults to 'id') [-Werror,-Wobjc-method-access]
- NSString *idAttribute = [NSString stringWithJSStringRef:idAttributeRef];
- ^ ~~~~~~~~~~~~~~~~~~~~~
- 1 error generated.
-
- * DumpRenderTree/ios/AccessibilityControllerIOS.mm: Import
- AccessibilityCommonMac.h.
-
-2013-03-04 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][EFL] Add callbacks to the WKViewClient to handle Web Process crash and relaunch
- https://bugs.webkit.org/show_bug.cgi?id=109828
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added API test for newly added Web Process crash and Web Process relaunch WKViewClient
- callbacks.
-
- * TestWebKitAPI/CMakeLists.txt:
-
- Tests located in 'TestWebKitAPI/Tests/WebKit2' subdirectories are also
- considered.
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::setPageLoaderClient):
- (TestWebKitAPI::webProcessCrashed):
- (TestWebKitAPI::webProcessDidRelaunch):
- (TestWebKitAPI::setViewClient):
- (TestWebKitAPI::TEST):
-
-2013-03-04 Chris Fleizach <cfleizach@apple.com>
-
- AX: Upstream iOS Accessibility DumpRenderTree changes
- https://bugs.webkit.org/show_bug.cgi?id=111220
-
- Reviewed by David Kilzer.
-
- Upstream the iOS changes for accessibility in DumpRenderTree.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (headerElementAtIndexCallback):
- (linkedElementCallback):
- (elementsForRangeCallback):
- (increaseTextSelectionCallback):
- (decreaseTextSelectionCallback):
- (assistiveTechnologySimulatedFocusCallback):
- (stringForSelectionCallback):
- (getIPhoneLabelCallback):
- (getIPhoneHintCallback):
- (getIPhoneValueCallback):
- (getIPhoneIdentifierCallback):
- (getIPhoneTraitsCallback):
- (getIPhoneIsElementCallback):
- (getIPhoneElementTextPositionCallback):
- (getIPhoneElementTextLengthCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/ios: Added.
- * DumpRenderTree/ios/AccessibilityControllerIOS.mm: Added.
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::elementAtPoint):
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
- (findAccessibleObjectById):
- (AccessibilityController::accessibleElementById):
- (AccessibilityController::setLogFocusEvents):
- (AccessibilityController::setLogScrollingStartEvents):
- (AccessibilityController::setLogValueChangeEvents):
- (AccessibilityController::setLogAccessibilityEvents):
- (AccessibilityController::addNotificationListener):
- (AccessibilityController::removeNotificationListener):
- * DumpRenderTree/ios/AccessibilityUIElementIOS.mm: Added.
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (concatenateAttributeAndValue):
- (AccessibilityUIElement::iphoneLabel):
- (AccessibilityUIElement::iphoneHint):
- (AccessibilityUIElement::iphoneValue):
- (AccessibilityUIElement::iphoneIdentifier):
- (AccessibilityUIElement::iphoneTraits):
- (AccessibilityUIElement::iphoneIsElement):
- (AccessibilityUIElement::iphoneElementTextPosition):
- (AccessibilityUIElement::iphoneElementTextLength):
- (AccessibilityUIElement::url):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::childrenCount):
- (AccessibilityUIElement::elementAtPoint):
- (AccessibilityUIElement::indexOfChild):
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::headerElementAtIndex):
- (AccessibilityUIElement::linkedElement):
- (AccessibilityUIElement::linkedUIElementAtIndex):
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::rowAtIndex):
- (AccessibilityUIElement::titleUIElement):
- (AccessibilityUIElement::parentElement):
- (AccessibilityUIElement::disclosedByRow):
- (AccessibilityUIElement::increaseTextSelection):
- (AccessibilityUIElement::decreaseTextSelection):
- (AccessibilityUIElement::stringForSelection):
- (AccessibilityUIElement::stringForRange):
- (AccessibilityUIElement::attributedStringForRange):
- (AccessibilityUIElement::attributedStringRangeIsMisspelled):
- (AccessibilityUIElement::elementsForRange):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfDocumentLinks):
- (AccessibilityUIElement::attributesOfChildren):
- (AccessibilityUIElement::allAttributes):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- (AccessibilityUIElement::boolAttributeValue):
- (AccessibilityUIElement::isAttributeSettable):
- (AccessibilityUIElement::isAttributeSupported):
- (AccessibilityUIElement::parameterizedAttributeNames):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::subrole):
- (AccessibilityUIElement::roleDescription):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::orientation):
- (AccessibilityUIElement::stringValue):
- (AccessibilityUIElement::language):
- (AccessibilityUIElement::helpText):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (AccessibilityUIElement::valueDescription):
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::isEnabled):
- (AccessibilityUIElement::isRequired):
- (AccessibilityUIElement::isFocused):
- (AccessibilityUIElement::isSelected):
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::isChecked):
- (AccessibilityUIElement::hierarchicalLevel):
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
- (AccessibilityUIElement::lineForIndex):
- (AccessibilityUIElement::boundsForRange):
- (AccessibilityUIElement::attributesOfColumnHeaders):
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfColumns):
- (AccessibilityUIElement::attributesOfRows):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::attributesOfHeader):
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
- (AccessibilityUIElement::indexInTable):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::cellForColumnAndRow):
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::assistiveTechnologySimulatedFocus):
- (AccessibilityUIElement::setSelectedTextRange):
- (AccessibilityUIElement::increment):
- (AccessibilityUIElement::decrement):
- (AccessibilityUIElement::showMenu):
- (AccessibilityUIElement::press):
- (AccessibilityUIElement::accessibilityValue):
- (AccessibilityUIElement::documentEncoding):
- (AccessibilityUIElement::documentURI):
- (_accessibilityNotificationCallback):
- (AccessibilityUIElement::addNotificationListener):
- (AccessibilityUIElement::removeNotificationListener):
- (AccessibilityUIElement::isFocusable):
- (AccessibilityUIElement::isSelectable):
- (AccessibilityUIElement::isMultiSelectable):
- (AccessibilityUIElement::isSelectedOptionActive):
- (AccessibilityUIElement::isVisible):
- (AccessibilityUIElement::isOffScreen):
- (AccessibilityUIElement::isCollapsed):
- (AccessibilityUIElement::isIgnored):
- (AccessibilityUIElement::hasPopup):
- (AccessibilityUIElement::takeFocus):
- (AccessibilityUIElement::takeSelection):
- (AccessibilityUIElement::addSelection):
- (AccessibilityUIElement::removeSelection):
- (AccessibilityUIElement::uiElementForSearchPredicate):
- (AccessibilityUIElement::numberAttributeValue):
-
-2013-03-04 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] pass all focus handling methods through the WebTestDelegate
- https://bugs.webkit.org/show_bug.cgi?id=111328
-
- Reviewed by Nico Weber.
-
- In content_shell, the focus handling is asynchronous. To allow for
- switching the focus synchronously between WebViews, we need to intercept
- didFocus and didBlur and forward it to the WebTestDelegate.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- (WebTestRunner::WebTestDelegate::setFocus):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::didFocus):
- (WebTestRunner::WebTestProxy::didBlur):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::setWindowIsKey):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didFocus):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::didBlur):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didFocus):
- (WebViewHost::didBlur):
- (WebViewHost::setFocus):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-03-04 Claudio Saavedra <csaavedra@igalia.com>
-
- [GTK] No need to manually add system paths to jhbuildrc
- https://bugs.webkit.org/show_bug.cgi?id=110850
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/jhbuildrc: Remove calls to addpath() for items that jhbuild
- already takes care of.
-
-2013-03-04 Kinuko Yasuda <kinuko@chromium.org>
-
- [chromium] TestWebKitAPI WTF.StringHasher_addCharacters is broken on Chromium Android
- https://bugs.webkit.org/show_bug.cgi?id=111284
-
- Disabling the failing two tests on Android.
-
- Reviewed by Jochen Eisinger.
-
- * TestWebKitAPI/Tests/WTF/StringHasher.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2013-03-04 Kunihiko Sakamoto <ksakamoto@chromium.org>
-
- Add build flag for FontLoader
- https://bugs.webkit.org/show_bug.cgi?id=111289
-
- Reviewed by Benjamin Poulain.
-
- Add ENABLE_FONT_LOAD_EVENTS build flag (disabled by default).
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-03-03 Benjamin Poulain <benjamin@webkit.org>
-
- [Mac] Get rid of a useless method from DOMHTMLInputElement
- https://bugs.webkit.org/show_bug.cgi?id=111279
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::setValueForUser):
- The method _setValueForUser: was added for testing. This feature is already
- exposed by DOMHTMLInputElement as a private API and it is how this code is exercised
- in real use cases. Get rid of the method created for testing, use the real thing
- instead.
-
-2013-03-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Some perf. tests have variances that differ greatly between runs
- https://bugs.webkit.org/show_bug.cgi?id=97510
-
- Reviewed by Benjamin Poulain.
-
- Use multiple instances of DumpRenderTree or WebKitTestRunner to amortize the effect of the runtime
- environment on test results (we run each instance after one another, not in parallel).
-
- We use 4 instances of the test runner, each executing 5 in-process iterations, for the total of 20
- iterations as it was done previously in single process. These values are hard-coded in perftest.py
- and runner.js but they are to be configurable in the future.
-
- Set of 5 iterations obtained by the same test runner is treated as an "iteration group" and each
- metric now reports an array of the length 4 with each element containing an array of 5 iteration
- values obtained by each test runner instance as opposed to a flattened array of 20 iteration values.
-
- Unfortunately, we can use the same trick on Dromaeo because we're already doing only 5 iterations
- and repeating the entire Dromaeo 4 times will take too long. We need to disable more Dromaeo tests
- as needed. To this end, added SingleProcessPerfTest to preserve the old behavior.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTestMetric.append_group): Renamed from append.
- (PerfTestMetric.grouped_iteration_values): Added.
- (PerfTestMetric.flattened_iteration_values): Renamed from iteration_values.
-
- (PerfTest.__init__): Takes the number of processes (drivers) to run tests with.
- This parameter is only used by SingleProcessPerfTest.
-
- (PerfTest.run): Repeat tests using different driver processes.
- (PerfTest._run_with_driver): Returns a boolean instead of a list of measured metrics
- since metrics are shared between multiple drivers (i.e. multiple calls to _run_with_driver).
- We instead use _ensure_metrics to obtain the matched metrics and store the data there.
- (PerfTest._ensure_metrics): Added.
-
- (SingleProcessPerfTest): Added. Used to run Dromaeo tests where running it on 4 different
- instances of DumpRenderTree/WebKitTestRunner takes too long.
- (SingleProcessPerfTest.__init__):
-
- (ReplayPerfTest._run_with_driver): Updated to use _ensure_metrics.
-
- (PerfTestFactory): Use SingleProcessPerfTest to run Dromaeo tests.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py: Updated various tests that expect
- _run_with_driver to return a list of metrics. Now it returns a boolean indicating whether
- the test succeeded or not. Obtain the dictionary of metrics via test._metrics instead.
-
- (TestPerfTestMetric.test_append): Updated per name and added some test cases for
- grouped_iteration_values.
-
- (TestPerfTest._assert_results_are_correct):
-
- (TestSingleProcessPerfTest): Added.
- (TestSingleProcessPerfTest.test_use_only_one_process):
- (TestSingleProcessPerfTest.test_use_only_one_process.run_single):
-
- (TestReplayPerfTest.test_run_with_driver_accumulates_results):
- (TestReplayPerfTest.test_run_with_driver_accumulates_memory_results):
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py: Updated values of
- sample standard deviations since we're now running tests 4 times.
- (MainTest._test_run_with_json_output.mock_upload_json):
- (MainTest.test_run_with_upload_json_should_generate_perf_webkit_json):
-
-2013-03-03 Alexandre Elias <aelias@chromium.org>
-
- [chromium] Remove WebLayerTreeView::setViewportSize call
- https://bugs.webkit.org/show_bug.cgi?id=110727
-
- Reviewed by James Robinson.
-
- After https://codereview.chromium.org/12328080 lands,
- setViewportSize is called from the Chromium side. The multiplication
- by deviceScaleFactor here was prone to off-by-one errors.
- The layoutSize() function was only used here so delete it as well.
-
- DumpRenderTree WebViewHost must now call this method as well.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- (WebViewHost::setWindowRect):
- (WebViewHost::setDeviceScaleFactor):
- (WebViewHost::updateViewportSize):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-27 Darin Adler <darin@apple.com>
-
- StringHasher functions require alignment that call sites do not all guarantee
- https://bugs.webkit.org/show_bug.cgi?id=110171
-
- Reviewed by Benjamin Poulain.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/WTF.pro:
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- Added the StringHasher.cpp file.
-
- * TestWebKitAPI/Tests/WTF/StringHasher.cpp: Added. Contains a bunch of tests
- for the functions in the StringHasher class.
-
-2013-03-02 Benjamin Poulain <bpoulain@apple.com>
-
- Move computedStyleIncludingVisitedInfo from TestRunner to Internals
- https://bugs.webkit.org/show_bug.cgi?id=109772
-
- Reviewed by Andreas Kling.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-03-01 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: do not visit raw pointers by default.
- https://bugs.webkit.org/show_bug.cgi?id=110943
-
- Reviewed by Yury Semikhatsky.
-
- Unfortunately in many cases raw pointer may point to an object that has been deleted.
- There is no working solution to solve this problem in general.
- It could be solved only on case by case basis.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp:
- (TestWebKitAPI::TEST):
-
-2013-03-01 Jason Anderssen <janderssen@gmail.com>
-
- Move markerTextForListItem from TestRunner to Internals
- https://bugs.webkit.org/show_bug.cgi?id=110939
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-03-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Don't use legacy test names when returning results from PerfTest.run
- https://bugs.webkit.org/show_bug.cgi?id=111148
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTestMetric.name): Renamed from metric.
- (PerfTest.test_name_without_file_extension): Extracted from legacy_chromium_bot_compatible_test_name.
- (PerfTest.run): Use metric name instead of the legacy name to store iteration values.
- (ChromiumStylePerfTest.parse_and_log_output): Use the metric name to store results as done in PerfTest.run.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTestMetric.test_init_set_time_metric):
- (TestPerfTestMetric.legacy_chromium_bot_compatible_test_name): Removed. The integration tests test this.
- (TestReplayPerfTest.test_run_with_driver_accumulates_results):
- (TestReplayPerfTest.test_run_with_driver_accumulates_memory_results):
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._generate_results_dict): Updated to iterate over (test, metrics) pair. Use view_source_url
- to obtain the trac URL instead of hard coding it.
- (PerfTestsRunner._run_tests_set):
-
-2013-03-01 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Add an extra project that assembles all project build logs on Windows into a single file.
- https://bugs.webkit.org/show_bug.cgi?id=111202
-
- This is useful for running VCExpress builds from command line because there is
- no unified solution output, only per project build logs.
- The project will be run as the last project in the solution.
-
- * win/AssembleBuildLogs: Added.
- * win/AssembleBuildLogs/AssembleBuildLogs.vcxproj: Added.
- * win/AssembleBuildLogs/AssembleBuildLogs.vcxproj.filters: Added.
- * win/AssembleBuildLogs/AssembleLogs.cmd: Added.
- * win/AssembleBuildLogs/README: Added.
-
-2013-03-01 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Increase number of patches processed before clean building on WinEWS bots.
-
- * EWSTools/start-queue-win.sh:
-
-2013-03-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Don't return statistics in PerfTest.run
- https://bugs.webkit.org/show_bug.cgi?id=111145
-
- Reviewed by Dirk Pranke.
-
- Simply return a list of values obtained in each iteration from PerfTest.run.
- Also simplify various methods as needed.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTestMetric.__init__): Moved the code to convert 'Time' metric to 'FrameRate' and 'Runs'
- as needed from PerfTestsRunner._generate_results_dict.
-
- (PerfTestMetric.legacy_chromium_bot_compatible_test_name): Always append the metric name now
- that we don't have to worry about the backward compatibility here.
-
- (PerfTestMetric.iteration_values): Added.
- (PerfTestMetric.unit): Added.
- (PerfTestMetric.metric_to_unit):
- (PerfTestMetric.time_unit_to_metric): Extracted from PerfTestsRunner._generate_results_dict.
-
- (PerfTest.run):
- (PerfTest.log_statistics): Merged compute_statistics and self.output_statistics.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTestMetric.test_init_set_missing_unit):
- (TestPerfTestMetric.test_init_set_time_metric): Added.
- (TestPerfTestMetric.test_legacy_chromium_bot_compatible_test_name):
- (TestPerfTestMetric.test_append):
- (TestPerfTestMetric.test_compute_statistics): Removed. Integration tests check some of these
- test cases and it's not critical to keep math right as they're not used in output JSON anymore.
- (TestPerfTest._assert_results_are_correct):
- (TestReplayPerfTest.test_run_with_driver_accumulates_results):
- (TestReplayPerfTest.test_run_with_driver_accumulates_memory_results):
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_results_dict):
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (EventTargetWrapperTestData): The metric name shows up at the end of the test name as expected.
- (SomeParserTestData): Ditto.
- (MemoryTestData): Ditto.
-
-2013-03-01 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Enable LINK_PREFETCH
- https://bugs.webkit.org/show_bug.cgi?id=111158
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-03-01 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Update features.pri with new features
- https://bugs.webkit.org/show_bug.cgi?id=111157
-
- Reviewed by Jocelyn Turcotte.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-03-01 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] put WebTestProxy::scheduleComposite back in place
- https://bugs.webkit.org/show_bug.cgi?id=111146
-
- Reviewed by Nico Weber.
-
- The call was removed in http://trac.webkit.org/changeset/144398 because
- DRT doesn't need it. However, content shell depends on this call.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::scheduleComposite):
-
-2013-02-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge PerfTestRunner._run_single_test into PerfTestRunner._run_tests_set
- https://bugs.webkit.org/show_bug.cgi?id=111142
-
- Reviewed by Adam Barth.
-
- Merged _run_single_test into _run_tests_set. The code looks much cleaner now.
-
- Also removed _print_status since it's never used anywhere.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.run):
- (PerfTestsRunner._run_tests_set):
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest.run_test):
- (MainTest.test_run_test_set):
- (MainTest.test_run_test_set_kills_drt_per_run):
- (MainTest.test_run_test_set_for_parser_tests):
-
-2013-02-28 Kiran Muppala <cmuppala@apple.com>
-
- Disable window occlusion detection for WebKitTestRunner Web View on Mac
- https://bugs.webkit.org/show_bug.cgi?id=111116
-
- Reviewed by Simon Fraser.
-
- Window occlusion notifications were causing WebKitTestRunner's Web View
- to be detected as occluded and causing a few JavaScript timer layout
- tests to fail. https://bugs.webkit.org/show_bug.cgi?id=111025, fixed this
- by initializing the page visibility to "visible" after creating the view.
- But a better solution is to disable window occlusion detection, so that
- not only the page but also the view is treated as visible.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions): Remove call to
- setVisibilityState, since it is no longer necessary.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView): Disable window occlusion
- detection for the created WKView.
-
-2013-02-28 Li Yin <li.yin@intel.com>
-
- [chromium] Events can't be triggered on MediaStreamTrack
- https://bugs.webkit.org/show_bug.cgi?id=110930
-
- Reviewed by Kentaro Hara.
-
- Related code was moved to MediaStreamCenterChromium::didStopLocalMediaStream
-
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.cpp:
- (WebTestRunner::MockWebMediaStreamCenter::didStopLocalMediaStream):
-
-2013-02-27 James Robinson <jamesr@chromium.org>
-
- [chromium] Use DumpRenderTree-specific interface for DRT's compositor embedding
- https://bugs.webkit.org/show_bug.cgi?id=111017
-
- Reviewed by Adam Barth.
-
- This decouples DumpRenderTree from WebLayerTreeViewClient.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHostDRTLayerTreeViewClient):
- (WebViewHostDRTLayerTreeViewClient::WebViewHostDRTLayerTreeViewClient):
- (WebViewHostDRTLayerTreeViewClient::~WebViewHostDRTLayerTreeViewClient):
- (WebViewHostDRTLayerTreeViewClient::Layout):
- (WebViewHostDRTLayerTreeViewClient::ScheduleComposite):
- (WebViewHost::initializeLayerTreeView):
- * DumpRenderTree/chromium/WebViewHost.h:
- (webkit_support):
- (WebViewHost):
-
-2013-02-28 Ryuan Choi <ryuan.choi@samsung.com>
-
- Unreviewed, add my secondary email address to the list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-28 Philip Rogers <pdr@google.com>
-
- Add Philip Rogers as a reviewer.
-
- Unreviewed update of committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-28 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge more methods on PerfTest
- https://bugs.webkit.org/show_bug.cgi?id=111030
-
- Reviewed by Dirk Pranke.
-
- Merged parse_output into _run_with_driver as it was the only caller. Also merged _should_ignore_line_in_stderr
- and _should_ignore_line_in_parser_test_result into _filter_output since it was their only caller.
-
- This makes the control flow a lot more comprehensible.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest._run_with_driver):
- (PerfTest._should_ignore_line):
- (PerfTest._filter_output):
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTest._assert_results_are_correct):
- (test_ignored_stderr_lines):
-
-2013-02-28 Robert Hogan <robert@webkit.org>
-
- Update my IRC nick
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-28 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Enable thin archives before parsing the project files
-
- Rubber-stamped by Simon Hausmann.
-
- The targetSubDir() function can be called before default_post.prf has been
- parsed therefore the gnu_thin_archives option has to be set in default_pre.prf
- which is parsed before the main project file.
- This issue was revealed by r144299 and fixes the clean build.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
-
-2013-02-28 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Enable CANVAS_PATH flag
- https://bugs.webkit.org/show_bug.cgi?id=108508
-
- Reviewed by Simon Hausmann.
-
- Also enable CANVAS_PATH flag for Qt.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-02-28 Andras Becsi <andras.becsi@digia.com>
-
- [Qt][TestWebKitAPI] The activeBuildConfig() function has been replaced with targetSubDir()
-
- Rubber-stamped by Csaba Osztrogonác.
-
- Besides suppressing a warning about the non-existing function this
- fixes the build if there is a subdirectory (eg. debug-and-release).
-
- * TestWebKitAPI/InjectedBundle.pri:
- * TestWebKitAPI/TestWebKitAPI.pri:
-
-2013-02-28 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WTR] WTR cannot load injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=111063
-
- Reviewed by Csaba Osztrogonác.
-
- WTR was not able to load injected bundle because of undefined
- symbols for AccessibilityUIElement::scrollToMakeVisible().
- Adding empty implementation of this function to AccessibilityUIElementAtk.cpp
- solves the problem.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::scrollToMakeVisible):
-
-2013-02-28 Alberto Garcia <albgarcia@rim.com>
-
- [BlackBerry] TestRunnerBlackBerry: remove layerTreeAsText, it's gone from upstream
- https://bugs.webkit.org/show_bug.cgi?id=110464
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
-
-2013-02-28 Xan Lopez <xlopez@rim.com>
-
- [BlackBerry] DumpRenderTreeSupport: update the set position methods
- https://bugs.webkit.org/show_bug.cgi?id=110578
-
- Reviewed by Rob Buis.
-
- TestRunner::setMockGeolocationPosition() changed in r130416:
- http://trac.webkit.org/changeset/130416/trunk/Tools/DumpRenderTree/TestRunner.h
-
- DumpRenderTreeSupport::setMockGeolocationError() was renamed to
- setMockGeolocationPositionUnavailableError() in r129444:
- http://trac.webkit.org/changeset/129444/trunk/Source/WebKit/blackberry/WebKitSupport/DumpRenderTreeSupport.h
-
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::setMockGeolocationPosition):
- (TestRunner::setMockGeolocationPositionUnavailableError):
-
-2013-02-28 Xan Lopez <xlopez@rim.com>
-
- [BlackBerry] WorkQueueItemBlackBerry: use the new FrameLoader API
- https://bugs.webkit.org/show_bug.cgi?id=110465
-
- Reviewed by Rob Buis.
-
- * DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp:
- (LoadItem::invoke):
-
-2013-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- PerfTestRunner doesn't need _needs_http and _has_http_lock
- https://bugs.webkit.org/show_bug.cgi?id=111037
-
- Reviewed by Adam Barth.
-
- Delete these variables in favor of using a local variable.
-
- Member variables are like global variables. They introduce implicit dependencies
- between member functions.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._start_http_servers):
- (PerfTestsRunner):
- (PerfTestsRunner._stop_http_servers):
- (PerfTestsRunner.run):
-
-2013-02-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r144224.
- http://trac.webkit.org/changeset/144224
- https://bugs.webkit.org/show_bug.cgi?id=111045
-
- Caused plugins/pass-different-npp-struct.html to time out
- (Requested by abarth on #webkit).
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp:
- (PassDifferentNPPStruct::NPP_SetWindow):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_SetWindow):
-
-2013-02-27 Adam Barth <abarth@webkit.org>
-
- [Chromium] Enable threaded HTML parser by default in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=110907
-
- Reviewed by Eric Seidel.
-
- This patch changes --enable-threaded-html-parser into
- --disable-threaded-html-parser and thereby enables the threaded HTML
- parser by default for the Chromium port.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-27 Kiran Muppala <cmuppala@apple.com>
-
- Initialize page visibility after creating WebKitTestRunner WebView on Mac
- https://bugs.webkit.org/show_bug.cgi?id=111025
-
- Reviewed by Simon Fraser.
-
- Set page visibility to "visible" after creating WebView to override
- visibility state inferred from window occlusion notifications on Mac.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions): Add call to
- setVisibilityState.
-
-2013-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Merge PageLoadingPerfTest into ReplayPerfTest
- https://bugs.webkit.org/show_bug.cgi?id=111027
-
- Reviewed by Dirk Pranke.
-
- Merged two classes.
-
- We should really move ahead with the bug 100991 and get rid of PageLoadingPerfTest
- part of ReplayPerfTest.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayPerfTest): Moved _FORCE_GC_FILE here.
- (ReplayPerfTest.__init__):
- (ReplayPerfTest._run_with_driver): Moved from PageLoadingPerfTest.
- (ReplayPerfTest.run_single): Load the GC page as run_single on PageLoadingPerfTest did.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestReplayPerfTest):
- (TestReplayPerfTest.test_run_single.run_test):
- (TestReplayPerfTest.test_run_single): Make sure test_time is passed down properly from output.
- (TestReplayPerfTest.test_run_with_driver_accumulates_results): Renamed from
- TestPageLoadingPerfTest.test_run.
- (TestReplayPerfTest.test_run_with_driver_accumulates_results.mock_run_signle):
- (TestReplayPerfTest.test_run_with_driver_accumulates_memory_results): Renamed from
- TestPageLoadingPerfTest.test_run_with_memory_output
- (TestReplayPerfTest.test_run_with_driver_accumulates_memory_results.mock_run_signle):
- (TestReplayPerfTest.test_prepare_calls_run_single):
-
-2013-02-27 Eric Seidel <eric@webkit.org>
-
- Add --additional-drt-flag option to run-perf-tests to make it easy to test runtime options
- https://bugs.webkit.org/show_bug.cgi?id=111021
-
- Reviewed by Dirk Pranke.
-
- The underlying code (which is shared with run-webkit-tests)
- already knew how to support this option, it just wasn't exposed
- via the run-perf-tests front-end. This patch fixes that.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2013-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Stop uploading results to webkit-perf.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=110954
-
- Reviewed by Benjamin Poulain.
-
- Pass in perf.webkit.org instead of webkit-perf.appspot.com as the test results server.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunAndUploadPerfTests):
-
-2013-02-27 James Simonsen <simonjam@chromium.org>
-
- [chromium] Lower priority of preloaded images
- https://bugs.webkit.org/show_bug.cgi?id=110527
-
- Plumb the didChangePriority signal into DRT so it can be tested.
-
- Reviewed by Nate Chapin.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner::WebTestProxy::didChangeResourcePriority):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpResourcePriorities):
- (WebTestRunner):
- (WebTestRunner::TestRunner::dumpResourceRequestPriorities):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- (WebTestRunner::WebTestProxyBase::willSendRequest):
- (WebTestRunner::WebTestProxyBase::didChangeResourcePriority):
- (WebTestRunner):
-
-2013-02-27 Chris Fleizach <cfleizach@apple.com>
-
- AX: Mac platform should support ability to scroll an element into visible
- https://bugs.webkit.org/show_bug.cgi?id=109860
-
- Reviewed by Beth Dakin.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (scrollToMakeVisibleCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::scrollToMakeVisible):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::scrollToMakeVisible):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::scrollToMakeVisible):
- (WTR):
-
-2013-02-27 John Bauman <jbauman@chromium.org>
-
- Plugin in iframe may not display
- https://bugs.webkit.org/show_bug.cgi?id=109879
-
- Reviewed by Simon Fraser.
-
- LogNPPSetWindow will be used with other ports as well.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
-
-2013-02-27 Jochen Eisinger <jochen@chromium.org>
-
- plugins/netscape-plugin-setwindow-size*.html and plugins/pass-different-npp-struct.html should be async
- https://bugs.webkit.org/show_bug.cgi?id=110973
-
- Reviewed by Adam Barth.
-
- There is nothing that ensures that the log messages from the plugin
- come in before the layout test finished loading.
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp:
- (PassDifferentNPPStruct::NPP_SetWindow):
- * DumpRenderTree/TestNetscapePlugIn/main.cpp:
- (NPP_SetWindow):
-
-2013-02-27 Glenn Adams <glenn@skynav.com>
-
- Add ENABLE_CSS3_TEXT_LINE_BREAK flag.
- https://bugs.webkit.org/show_bug.cgi?id=110944
-
- Reviewed by Dean Jackson.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-02-27 Yong Li <yong.li.webkit@outlook.com>
-
- Unreviewed. Remove myself from watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-27 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- Switch QtWebKit to GStreamer 1.0.
- https://bugs.webkit.org/show_bug.cgi?id=106669.
-
- Original patch by Sebastian Dröge.
- Reviewed by Csaba Osztrogonác.
-
- Build with GStreamer 1.0 if available, but support GStreamer 0.10
- temporarily to make upgrading easy and the patch suitable for Qt5.
-
- * qmake/mkspecs/features/features.prf:
-
-2013-02-27 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- Unreviewed. Added myself to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r144192.
- http://trac.webkit.org/changeset/144192
- https://bugs.webkit.org/show_bug.cgi?id=110984
-
- Stored svn password on wrong computer (Requested by kkristof
- on #webkit).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-27 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- Unreviewed. Added myself to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r144155. The report page is located at /api/report, not /api/test/report.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._upload_json):
-
-2013-02-27 Ryosuke Niwa <rniwa@webkit.org>
-
- Stop uploading results to webkit-perf.appspot.com
- https://bugs.webkit.org/show_bug.cgi?id=110954
-
- Reviewed by Benjamin Poulain.
-
- When the specified test results server was webkit-perf.appspot.com, replace it by perf.webkit.org.
- Also, always use the new JSON format. Removed the code to generate the old format.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_and_show_results):
- (PerfTestsRunner._generate_results_dict):
- (PerfTestsRunner._merge_slave_config_json):
- (PerfTestsRunner._generate_output_files):
-
-2013-02-27 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r144136, r144143, and r144147.
- http://trac.webkit.org/changeset/144136
- http://trac.webkit.org/changeset/144143
- http://trac.webkit.org/changeset/144147
- https://bugs.webkit.org/show_bug.cgi?id=110950
-
- Caused some timeouts and flaky crashes (Requested by abarth on
- #webkit).
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Use perf.webkit.org JSON format in results page
- https://bugs.webkit.org/show_bug.cgi?id=110842
-
- Reviewed by Benjamin Poulain.
-
- Change the default JSON format from that of webkit-perf.appspot.com to that of perf.webkit.org.
-
- A whole bunch of integration tests have been updated to use the new JSON format.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_and_show_results): Renamed output and output_path to legacy_output
- and legacy_output_json_path respectively.
- (PerfTestsRunner._generate_results_dict): Don't assume meta build information is always available.
- (PerfTestsRunner._generate_output_files): Make json_output, which is used to generate the default
- JSON file and the results page out of perf_webkit_output instead of legacy_output.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest.test_run_memory_test):
- (MainTest._test_run_with_json_output.mock_upload_json):
- (MainTest):
- (MainTest.test_run_with_json_output):
- (MainTest.test_run_with_description):
- (MainTest.test_run_generates_json_by_default):
- (MainTest.test_run_merges_output_by_default):
- (MainTest.test_run_respects_reset_results):
- (MainTest.test_run_generates_and_show_results_page):
- (MainTest.test_run_with_slave_config_json):
- (MainTest.test_run_with_multiple_repositories):
- (MainTest.test_run_with_upload_json):
- (MainTest.test_run_with_upload_json_should_generate_perf_webkit_json):
-
-2013-02-26 Adam Barth <abarth@webkit.org>
-
- [Chromium] Enable threaded HTML parser by default in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=110907
-
- Reviewed by Eric Seidel.
-
- This patch changes --enable-threaded-html-parser into
- --disable-threaded-html-parser and thereby enables the threaded HTML
- parser by default for the Chromium port.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-26 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] Re-enable the fixed version of freetype on linux
- https://bugs.webkit.org/show_bug.cgi?id=110542
-
- Reviewed by Tony Chang.
-
- Re-land the change in r143794 to switch to building with a fixed
- version of FreeType for just DumpRenderTree. This allows us to share
- one version of pixel baselines for both Lucid and Precise, and run the
- layout tests in a stock Precise install (instead of a Lucid chroot).
- Going forward, this approach isolates us from os-level changes to the
- version of FreeType. Note that Chromium itself still uses the system
- FreeType and is unaffected by this change.
-
- This setting can still be turned off (at compile/gyp-time) by
- manually setting use_custom_freetype=0.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-02-26 Nico Weber <thakis@chromium.org>
-
- [chromium] content shell drt: Enable WebKit::setLayoutTestMode()
- https://bugs.webkit.org/show_bug.cgi?id=110890
-
- Reviewed by Jochen Eisinger.
-
- Several functions in webkit check that bit to change rendering
- in layout test mode. For example, platform/graphics/skia/FrontSkia.cpp
- disables font smoothing in this mode. TestShell and DRT both set
- this flag, so content shell drt should set it too.
-
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
-
-2013-02-26 Vivek Galatage <vivek.vg@samsung.com>
-
- new-commit-bot: Fix the unit test newcommitbot-unittest.py due to r144040
- https://bugs.webkit.org/show_bug.cgi?id=110884
-
- Reviewed by Csaba Osztrogonác.
-
- Adding the missing spaces before ':' in the unit test.
-
- * Scripts/webkitpy/tool/commands/newcommitbot_unittest.py:
-
-2013-02-26 Vivek Galatage <vivek.vg@samsung.com>
-
- new-commit-bot: Some IRC clients doesn't linkify rollout messages
- https://bugs.webkit.org/show_bug.cgi?id=110861
-
- Reviewed by Ryosuke Niwa.
-
- Adding the space before ':' in order to fix the links shown for the rollout message.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot._summarize_commit_log):
-
-2013-02-26 Joone Hur <joone.hur@intel.com>
-
- [GTK] Add Clutter to jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=110245
-
- Reviewed by Martin Robinson.
-
- Add clutter, cogl, clutter-gtk, and atk to the optional moduleset.
- This allows to build WebKitGtk+ with clutter as an acceleration backend
- within the jhbuild environment.
-
- * gtk/jhbuild-optional.modules:
-
-2013-02-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Another fix attempt after r143991 since having \r? after a greedy match doesn't help.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.value_from_svn_info):
-
-2013-02-25 Alan Cutter <alancutter@chromium.org>
-
- GCE EWS bots failing intermittently on HTTP 502 error while updating their status
- https://bugs.webkit.org/show_bug.cgi?id=110845
-
- Unreviewed EWS bot fix.
-
- Switch the Queue Status Server address the EWS bots use to a more direct URL that
- doesn't seem to be having problems from GCE like queues.webkit.org.
-
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer):
-
-2013-02-25 Dirk Pranke <dpranke@chromium.org>
-
- Forgot to delete a no-longer-needed unit test after r143980.
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_path_to_image_diff):
-
-2013-02-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix. run-perf-tests was reporting with revision numbers ending with \r.
- Don't include \r at the end of svn info lines on Windows.
-
- This is similar to r143839.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.value_from_svn_info):
-
-2013-02-25 James Simonsen <simonjam@chromium.org>
-
- [Resource Timing] Update test suite so it can be exported to the W3C
- https://bugs.webkit.org/show_bug.cgi?id=107343
-
- Reviewed by Tony Gentilcore.
-
- * Scripts/export-w3c-performance-wg-tests: Clean up output.
- * Scripts/import-w3c-performance-wg-tests:
-
-2013-02-25 Anders Carlsson <andersca@apple.com>
-
- Add a new unavailablePluginButtonClicked callback that takes a WKDictionary of plug-in information
- https://bugs.webkit.org/show_bug.cgi?id=110821
- <rdar://problem/13265303>
-
- Reviewed by Beth Dakin.
-
- Update for WebKit2 changes.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::createWebViewWithOptions):
- (WTR::TestController::unavailablePluginButtonClicked):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2013-02-21 Jeffrey Pfau <jpfau@apple.com>
-
- Optionally partition cache to prevent using cache for tracking
- https://bugs.webkit.org/show_bug.cgi?id=110269
-
- Reviewed by Maciej Stachowiak.
-
- Add test suite for public suffix functions on Mac.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/PublicSuffix.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST_F):
-
-2013-02-25 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: reenable multiple http shards on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=110814
-
- Reviewed by Tony Chang.
-
- The underlying bug in DumpRenderTree that was causing us to look for a
- pac file and timeout under load was fixed a while ago.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.relative_test_filename):
-
-2013-02-25 Dirk Pranke <dpranke@chromium.org>
-
- Make ninja the default w/ build-webkit --chromium on windows.
- https://bugs.webkit.org/show_bug.cgi?id=110731
-
- Unreviewed - TBR'ing thakis :).
-
- * Scripts/update-webkit-chromium:
-
-2013-02-25 Anders Carlsson <andersca@apple.com>
-
- Add a new pluginDidFail callback that takes a WKDictionary of plug-in information
- https://bugs.webkit.org/show_bug.cgi?id=110793
- <rdar://problem/13265303>
-
- Reviewed by Sam Weinig.
-
- Update for WebKit2 API changes.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- Fix python unit tests after yoli's email address update in http://trac.webkit.org/changeset/143922
- https://bugs.webkit.org/show_bug.cgi?id=110775
-
- Unreviewed, basically a rebaseline.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- [chromium] Try to get the webkit builder to use msvs again
- https://bugs.webkit.org/show_bug.cgi?id=110771
-
- Reviewed by Eric Seidel.
-
- The msvs gyp generator apparently doesn't write the sln file on every
- run, so check the vcxproj file instead.
-
- * Scripts/webkitdirs.pm:
- (determineIsChromiumNinja):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- [chromium] try to unbreak run-chromium-webkit-unit-tests on the mac bots
- https://bugs.webkit.org/show_bug.cgi?id=110767
-
- Reviewed by Eric Seidel.
-
- The tester runs gyp, which generates out/Release/build.ninja. The bot
- scripts use existence (and timestamp) of that file to decide if the
- current build is supposed to be ninja or xcodebuild. The file exists,
- so the snapshot is extracted to out/Release. The snapshot doesn't
- contain build.ninja however due to
- http://trac.webkit.org/changeset/140375 , so after extracting the
- snapshot the scripts think that this is an xcodebuild build. So remove
- the part of that revision that removed ninja files from the archive,
- and the bots should be happy again.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- Fix tests after r143910
- https://bugs.webkit.org/show_bug.cgi?id=110757
-
- Reviewed by Andreas Kling.
-
- While here, also add a test for the bug r143910 fixed.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ScriptErrorTest.test_message_with_output):
- (ScriptErrorTest):
- (ScriptErrorTest.test_message_with_tuple):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- [chromium] Apparently built-product-archive is written in Python, not Perl :-/
- https://bugs.webkit.org/show_bug.cgi?id=110755
-
- Reviewed by Jochen Eisinger.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
- (extractBuiltProduct):
-
-2013-02-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r143895.
- http://trac.webkit.org/changeset/143895
- https://bugs.webkit.org/show_bug.cgi?id=110758
-
- broke a bunch of tests (Requested by thakis__ on #webkit).
-
- * Scripts/update-webkit-chromium:
-
-2013-02-25 Andreas Kling <akling@apple.com>
-
- Unreviewed, fix simple mistake in r143903.
- <http://webkit.org/b/110746>
-
- Reviewed by Andreas Kling.
-
- Pass git revision, not svn revision, to git shell command.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.timestamp_of_latest_commit):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- [chromium] Let built-product-archive log which directory it's archiving from and extracting to
- https://bugs.webkit.org/show_bug.cgi?id=110748
-
- Reviewed by Jochen Eisinger.
-
- One of the mac testers runs DRT from out/ but WebKitUnitTests from
- xcodebuild. I'm trying to understand what's going on.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
- (extractBuiltProduct):
-
-2013-02-23 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: replace String with const char* in MemoryObjectInfo
- https://bugs.webkit.org/show_bug.cgi?id=110599
-
- Reviewed by Yury Semikhatsky.
-
- Due to potentially dynamic nature of names and classNames we need to make a copy of the strings
- that were given us via MemoryInstrumentation calls.
- So I extended client api with registerString method that pushes the strings
- down to the serializer.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp:
- (TestWebKitAPI::Helper::Helper):
- (Helper):
- (TestWebKitAPI::Helper::addNode):
- (TestWebKitAPI::TEST):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- Make ScriptError not crash when args is a tuple
- https://bugs.webkit.org/show_bug.cgi?id=110747
-
- Reviewed by Jochen Eisinger.
-
- I'm trying to understand the error on
- http://build.webkit.org/builders/Chromium%20Win%20Release%20%28Tests%29/builds/34563/steps/layout-test/logs/stdio
- better. I'll likely have to revert the ninja switch on windows, but
- having error reporting code that doesn't itself crash sounds like a
- good thing to have anyways.
-
- The problem is that '%s' % (1, 2) errors out, and args is sometimes a
- tuple not a list.
-
- * Scripts/run-chromium-webkit-unit-tests:
- * Scripts/webkitpy/common/system/executive.py:
- (ScriptError.__init__):
-
-2013-02-25 Laszlo Gombos <l.gombos@samsung.com>
-
- [EFL] Align feature defaults
- https://bugs.webkit.org/show_bug.cgi?id=110715
-
- Enable 3D_RENDERING in FeatureList.pm as it is enabled by default in
- OptionsEfl.cmake.
-
- Reviewed by Gyuyoung Kim.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-25 Ryosuke Niwa <rniwa@webkit.org>
-
- run-perf-tests reports wrong commit time
- https://bugs.webkit.org/show_bug.cgi?id=110746
-
- Reviewed by Andreas Kling.
-
- The bug was caused by running "svn info" on a subdirectory, which returns a timestamp
- of when the subdirectory was last modified.
-
- Run "svn info -r <revision> <repository root>" instead. Specifying revision number is
- insufficient since running "svn log -r <revision>" on a partial checkout only returns
- an empty result if the revision didn't modify the subdirectory.
-
- For git, there is no partial checkout, so we just need to pass in "-r" option to keep
- the interface compatible with svn.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.timestamp_of_latest_commit):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.timestamp_of_latest_commit):
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.timestamp_of_latest_commit):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (test_timestamp_of_latest_commit):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.timestamp_of_latest_commit):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._generate_results_dict):
-
-2013-02-25 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebRuntimeFeatures configuration to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=110712
-
- Reviewed by Nico Weber.
-
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-25 Nico Weber <thakis@chromium.org>
-
- Make ninja the default build system for build-webkit --chromium on windows
- https://bugs.webkit.org/show_bug.cgi?id=110731
-
- Reviewed by Jochen Eisinger.
-
- With http://crbug.com/169945 fixed, this should now work.
-
- * Scripts/update-webkit-chromium:
-
-2013-02-24 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] GTK+ 2 build broken since GTK_API_VERSION_2 moved to autoconfig.h
- https://bugs.webkit.org/show_bug.cgi?id=110702
-
- Reviewed by Martin Robinson.
-
- * GtkLauncher/main.c: include autotoolsconfig.h.
- * Scripts/webkitpy/style/checker.py: make GtkLauncher/main.c exempt of
- the include ordering check, since it uses autotoolsconfig.h which needs to
- come first.
-
-2013-02-24 Hajime Morrita <morrita@google.com>
-
- [Custom Elements] Implement bare-bone document.register()
- https://bugs.webkit.org/show_bug.cgi?id=100229
-
- Reviewed by Adam Barth.
-
- Added enableCustomDOMElements flag.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-23 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] DumpRenderTree TestShell::initialize should take Platform* now that WebKitPlatformSupport is empty
- https://bugs.webkit.org/show_bug.cgi?id=110606
-
- Reviewed by Adam Barth.
-
- Part of a larger refactoring series; see tracking bug 82948.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (WebKitSupportTestEnvironment::WebKitSupportTestEnvironment):
- (WebKitSupportTestEnvironment::mockPlatform):
- (WebKitSupportTestEnvironment):
- * DumpRenderTree/chromium/MockPlatform.cpp: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp.
- (MockPlatform::create):
- (MockPlatform::MockPlatform):
- (MockPlatform::~MockPlatform):
- (MockPlatform::setInterfaces):
- (MockPlatform::cryptographicallyRandomValues):
- (MockPlatform::createMediaStreamCenter):
- (MockPlatform::createRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/MockPlatform.h: Copied from Tools/DumpRenderTree/chromium/MockWebKitPlatformSupport.h.
- (MockPlatform):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp: Removed.
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2013-02-23 Ryosuke Niwa <rniwa@webkit.org>
-
- Chromium Windows Perf bot fix. Tolerate CR at the end of the line that contains the timestamp.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.timestamp_of_latest_commit):
-
-2013-02-23 Jason Anderssen <janderssen@gmail.com>
-
- Move setAutofilled from TestRunner to WebCore
- https://bugs.webkit.org/show_bug.cgi?id=110521
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
-
-2013-02-22 Ryosuke Niwa <rniwa@webkit.org>
-
- Upload results to perf.webkit.org in addition to the one specified by --test-results-server
- https://bugs.webkit.org/show_bug.cgi?id=108577
-
- Reviewed by Dirk Pranke.
-
- Upload results to perf.webkit.org using new JSON format as well as the host specified by
- --test-results-server. The new format is needed to provide extra information perf.webkit.org
- need such as the subversion commit time and test URLs. This is a temporarily measure until
- we complete the transition and the old JSON format and the code to upload results to
- webkit-perf.appspot.com can be deleted.
-
- This patch adds scm.timestamp_of_latest_commit to obtain the timestamp of the latest commit present
- in a svn checkout or a git clone. This information is embedded in JSON submitted to perf.webkit.org
- so that the app can sort performance test results based on the timestamp of the last commit.
-
- It also changes the repository names returned by port objects to be properly capitalized
- human readable names such as WebKit instead of lowercased names such as webkit since these names
- are displayed on perf.webkit.org for humans. Several users of this feature has been updated
- to explicitly lowercase the names.
-
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.timestamp_of_latest_commit): Added. Obtains the timestamp of the last commit. Unfortunately,
- git's timestamp granularity is seconds so we're losing some information compared to using a regular
- subversion client. To make matters worse, git doesn't have any option to show ISO-format timestamp in
- UTC so we're going to manually fiddle with timezone.
-
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.timestamp_of_latest_commit): Added.
-
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- (MockSCM.timestamp_of_latest_commit): Added.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (test_timestamp_of_latest_commit): Added a test for Git.timestamp_of_latest_commit.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.timestamp_of_latest_commit): Added. With svn, all we need to do is to use --xml option and parse
- the timestamp which is always in UTC.
-
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase._insert_generic_metadata): Lowercase the name. Note that the name
- 'chromium' needs to be substituted by 'chrome' for historical reasons.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.repository_paths): Return WebKit instead of webkit as noted above.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.repository_paths): Return Chromium instead of chromium as noted above.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__): Store the current time in UTC as well as in local time.
- (PerfTestsRunner._collect_tests):
-
- (PerfTestsRunner._generate_and_show_results): Retrieve both regular output and one for perf.webkit.org,
- and upload them appropriately.
-
- (PerfTestsRunner._generate_results_dict): Store WebKit and Chromium revisions at which tests were ran
- in revisions_for_perf_webkit and construct an output for perf.webkit.org.
-
- (PerfTestsRunner._datetime_in_ES5_compatible_iso_format): Added.
-
- (PerfTestsRunner._merge_slave_config_json): Merge slave configuration files into both regular output
- and one for perf.webkit.org. Here, we prefix each key with "builder" for perf.webkit.org.
- e.g. "processor" would be renamed to "builderProcessor".
-
- (PerfTestsRunner._generate_output_files):
-
- (PerfTestsRunner._upload_json): Added a remote path as an argument since we upload JSONs to /api/report
- on perf.webkit.org whereas we upload it to /api/test/report on webkit-perf.appspot.com. Also added the code
- to parse response as JSON when possible since perf.webkit.org returns a JSON response as opposed to
- webkit-perf.appspot.com which spits out a plaintext response.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest._test_run_with_json_output.mock_upload_json): Tolerate perf.webkit.org/api/report for now.
- (MainTest._test_run_with_json_output): Store a UTC time as perftestrunner would do.
- (MainTest.test_run_with_upload_json_should_generate_perf_webkit_json): Added.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.test_upload_json): Moved from itegrationtest.py since it really is a unit test. Also added test
- cases to parse JSON responses.
- (MainTest.test_upload_json.MockFileUploader): Refactored.
- (MainTest.test_upload_json.MockFileUploader.reset): Added.
- (MainTest.test_upload_json.MockFileUploader.__init__):
- (MainTest.test_upload_json.MockFileUploader.upload_single_text_file):
-
-2013-02-22 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Update bot config for OpenSource bots to add two new Win7 Debug testers and get rid of WinXP Debug testers.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-02-22 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r143794.
- http://trac.webkit.org/changeset/143794
- https://bugs.webkit.org/show_bug.cgi?id=110542
-
- debug linux builds broken?
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-02-22 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] enable the fixed version of freetype on linux
- https://bugs.webkit.org/show_bug.cgi?id=110542
-
- Reviewed by Tony Chang.
-
- Switch to building with a fixed version of FreeType for
- just DumpRenderTree. This allows us to share one version
- of pixel baselines for both Lucid and Precise, and run
- the layout tests in a stock Precise install (instead of a Lucid
- chroot). Going forward, this approach isolates us from os-level
- changes to the version of FreeType. Note that Chromium itself
- still uses the system FreeType and is unaffected by this change.
-
- This setting can still be turned off (at compile/gyp-time) by
- manually setting use_custom_freetype=0.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-02-22 Anders Carlsson <andersca@apple.com>
-
- Move pluginLoadPolicy to the page loader client
- https://bugs.webkit.org/show_bug.cgi?id=110635
-
- Reviewed by Sam Weinig.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::createWebViewWithOptions):
-
-2013-02-22 Kenneth Russell <kbr@google.com>
-
- Unreviewed. Changed gman's primary address for auto-complete in Bugzilla.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-22 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [WTR] Do not dump information about empty subframes.
- https://bugs.webkit.org/show_bug.cgi?id=110585
-
- Reviewed by Simon Fraser.
-
- Follow DumpRenderTree more closely by skipping empty frames
- (frames which have no document). We are not really interested in
- showing anything about them.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::dumpDescendantFramesText): Do not print subframe names when they
- have no associated Document.
-
-2013-02-21 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][DRT] Do not dump empty frames.
- https://bugs.webkit.org/show_bug.cgi?id=110474
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Follow the original Mac implementation more closely by skipping
- empty frames (frames which have no document). We are not really
- interested in showing anything about them.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (dumpFramesAsText):
-
-2013-02-21 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] support the lucid version of freetype on precise in DRT
- https://bugs.webkit.org/show_bug.cgi?id=107338
-
- Reviewed by Tony Chang.
-
- Modify the DRT build so that we can optionally link against
- a fixed version of Freetype2. This allows us to share pixel test
- results across multiple versions of Ubuntu without having to
- worry about differences in font rendering.
-
- At the moment this feature is off by default. Eventually it will
- be on by default on linux.
-
- Note that this only affects DRT; the regular Chromium binary
- (and, for now, content_shell) will still use the system version
- of Freetype.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-02-21 Rouslan Solomakhin <rouslan@chromium.org>
-
- [Chromium] Remove the word "cheher" from the list of misspelled words
- https://bugs.webkit.org/show_bug.cgi?id=110447
-
- Reviewed by Tony Chang.
-
- Other platforms do not mark "cheher" as a misspelled word in layout tests.
- This change is to bring Chromium platform in line with the rest of the
- platforms.
-
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::hasInCache): Changed "cheher" to "wellcome".
- (WebTestRunner::MockSpellCheck::fillSuggestionList): Removed "cheher" misspelling and "checker" suggestion.
- (WebTestRunner::MockSpellCheck::initializeIfNeeded): Removed "cheher" misspelling.
-
-2013-02-21 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] document WebTestDelegate and WebTestRunner interfaces
- https://bugs.webkit.org/show_bug.cgi?id=110472
-
- Reviewed by Adam Barth.
-
- Also remove the default implementation of the remaining WebTestDelegate
- methods now that all embedders provide this interface.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
-
-2013-02-19 Mark Hahnenberg <mhahnenberg@apple.com>
-
- Objective-C API: Need a way to use the Objective-C JavaScript API with WebKit
- https://bugs.webkit.org/show_bug.cgi?id=106059
-
- Reviewed by Geoffrey Garen.
-
- Added new tests for the WebKit API portion of the JSC Objective-C API.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/JSContextBackForwardCache1.html: Added.
- * TestWebKitAPI/Tests/mac/JSContextBackForwardCache2.html: Added.
- * TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm: Added.
- (-[MyConsole log:]):
- (-[MyConsole printHelloWorld]):
- (-[MyConsole add:to:]):
- (-[DidCreateJavaScriptContextFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[DidCreateJavaScriptContextFrameLoadDelegate webView:didCreateJavaScriptContext:forFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2013-02-21 Stephen Chenney <schenney@chromium.org>
-
- Unreviewed, add myself as a reviewer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-21 Jer Noble <jer.noble@apple.com>
-
- Unreviewed; add myself to the Media watchlist and update my committers.py setting to Reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-21 Martin Robinson <mrobinson@igalia.com>
-
- gtk/DumpRenderTree.cpp is missing <locale.h> include
- https://bugs.webkit.org/show_bug.cgi?id=109386
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp: Fix the WebKitGTK+ Mac build
- by include locale.h when we use setlocale.
-
-2013-02-21 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Move feature overriding to the configure phase
- https://bugs.webkit.org/show_bug.cgi?id=110293
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary): Rename the feature file to
- WebKitFeatureOverrides.txt to better match the other filenames used in
- the new feature processing.
- * gtk/generate-feature-defines-files: Added. A script which takes as an argument
- the default features, overrides them with the contents of WebKitFeatureOverrrides.txt
- and writes WebKitFeatures.txt and WebKitFeatures.h.
- * gtk/override-feature-defines: Removed.
-
-2013-02-21 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] Remove obsolete DEPENDPATH assignment
-
- Reviewed by Simon Hausmann
-
- qmake now adds CONFIG+=depend_includepath by default, making manual
- DEPENDPATH setup unnecessary.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2013-02-20 Vivek Galatage <vivekg@webkit.org>
-
- Unreviewed. Changing primary email id.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-14 James Robinson <jamesr@chromium.org>
-
- [chromium] Request WebLayerTreeView for DumpRenderTree via explicit testing path
- https://bugs.webkit.org/show_bug.cgi?id=109634
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- (WebViewHost::initializeLayerTreeView):
-
-2013-02-20 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Re-enable 3D CSS transforms when using build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=110402
-
- Reviewed by Xan Lopez.
-
- * Scripts/webkitperl/FeatureList.pm: Enable 3D rendering by default
- when building WebKitGTK+.
-
-2013-02-20 Roger Fong <roger_fong@apple.com>
-
- Get VS2010 Solution B&I ready.
- <rdar://problem/1322988>
-
- Rubberstamped by Timothy Horton.
-
- Add Production configurations.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherProduction.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeProduction.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherProduction.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffProduction.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj:
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginProduction.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props:
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj:
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIProduction.props: Added.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIRelease.props:
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj:
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj:
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props:
- * WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props:
- * win/record-memory/record-memory.vcxproj:
- * win/record-memory/record-memoryProduction.props: Added.
- * win/record-memory/record-memoryRelease.props:
-
-2013-02-20 Dirk Schulze <krit@webkit.org>
-
- Enable CANVAS_PATH flag
- https://bugs.webkit.org/show_bug.cgi?id=108508
-
- Reviewed by Simon Fraser.
-
- Enable CANVAS_PATH flag on trunk.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-20 Tony Chang <tony@chromium.org>
-
- Parse author names with commas in ChangeLogs
- https://bugs.webkit.org/show_bug.cgi?id=110356
-
- Reviewed by Dirk Pranke.
-
- Paweł's name has a comma in it, which was confusing the ChangeLog parser.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry): Move name splitting regexp into a constant.
- (ChangeLogEntry._parse_reviewer_text): Use _split_reviewer_names.
- (ChangeLogEntry._split_reviewer_names): Rename to be more specific.
- (ChangeLogEntry._split_author_names_with_emails): Rename to be more specific and require emails.
- (ChangeLogEntry._parse_author_text): Use _split_author_names_with_emails.
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_parse_authors): Test case with Paweł's name.
-
-2013-02-15 Dirk Schulze <krit@webkit.org>
-
- [Chromium] Add runtime flag for CanvasPath
- https://bugs.webkit.org/show_bug.cgi?id=109997
-
- Reviewed by Adam Barth.
-
- Added runtime flag for Canvas Path. Enabled it by default for TestShell. Otherwise
- the constructor for Path on DOMWindow would never be activatable, since the script
- is running after creating the DOMWindow object.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2013-02-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] use a WebTestProxyBase pointer to identify the window we need the history for
- https://bugs.webkit.org/show_bug.cgi?id=110346
-
- Reviewed by Adam Barth.
-
- Using an index is very brittle, as the TestRunner API does not define
- any ordering of windows.
-
- Also, make TestRunner::shouldDumpBackForwardList() so content shell can
- trigger the capturing in the browser process before generating the
- text dump.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner):
- (WebTestRunner::WebTestDelegate::captureHistoryForWindow):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::captureTree):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::captureHistoryForWindow):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-19 Rouslan Solomakhin <rouslan@chromium.org>
-
- [Chromium] Serve spellcheck suggestions for editing/spelling/spelling-changed-text.html from cache
- https://bugs.webkit.org/show_bug.cgi?id=109220
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::hasInCache): Added a method to detect whether spellcheck results can be served from cache.
- (WebTestRunner):
- (WebTestRunner::MockSpellCheck::fillSuggestionList): Modified to suggest "checker" for the word "cheher".
- (WebTestRunner::MockSpellCheck::initializeIfNeeded): Modified to mark "cheher" as misspelling.
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::requestCheckingOfText): Modified to serve spellcheck suggestions from cache when possible.
-
-2013-02-20 Xabier Rodriguez Calvar <calvaris@igalia.com>
-
- [Gtk] HTML5 Media controls require a design refresh
- https://bugs.webkit.org/show_bug.cgi?id=83869
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGtkFontSettings): Added gnome as default icon theme for
- the DRT.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::initializeGtkSettings): Added gnome as default icon theme for
- the WTR.
- * gtk/jhbuild.modules: Added gnome-icon-theme-symbolic as external
- dependency.
-
-2013-02-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move most of the remaining mocks to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=110217
-
- Reviewed by Nico Weber.
-
- While most of the functionality provided by these mocks is also
- available in the content module, there is no straight forward way to
- inject the mock results required for layout tests.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner):
- (WebTestRunner::WebTestProxy::geolocationClient):
- (WebTestRunner::WebTestProxy::speechInputController):
- (WebTestRunner::WebTestProxy::speechRecognizer):
- (WebTestRunner::WebTestProxy::deviceOrientationClient):
- (WebTestRunner::WebTestProxy::requestPointerLock):
- (WebTestRunner::WebTestProxy::requestPointerUnlock):
- (WebTestRunner::WebTestProxy::isPointerLocked):
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechInputController.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebSpeechInputController.cpp.
- (WebTestRunner::MockWebSpeechInputController::MockWebSpeechInputController):
- (WebTestRunner):
- (WebTestRunner::MockWebSpeechInputController::~MockWebSpeechInputController):
- (WebTestRunner::MockWebSpeechInputController::setDelegate):
- (WebTestRunner::MockWebSpeechInputController::addMockRecognitionResult):
- (WebTestRunner::MockWebSpeechInputController::setDumpRect):
- (WebTestRunner::MockWebSpeechInputController::clearResults):
- (WebTestRunner::MockWebSpeechInputController::startRecognition):
- (WebTestRunner::MockWebSpeechInputController::cancelRecognition):
- (WebTestRunner::MockWebSpeechInputController::stopRecording):
- (WebTestRunner::MockWebSpeechInputController::speechTaskFired):
- (WebTestRunner::MockWebSpeechInputController::SpeechTask::SpeechTask):
- (WebTestRunner::MockWebSpeechInputController::SpeechTask::stop):
- (WebTestRunner::MockWebSpeechInputController::SpeechTask::runIfValid):
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechInputController.h: Renamed from Tools/DumpRenderTree/chromium/MockWebSpeechInputController.h.
- (WebKit):
- (WebTestRunner):
- (MockWebSpeechInputController):
- (WebTestRunner::MockWebSpeechInputController::taskList):
- (SpeechTask):
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechRecognizer.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp.
- (WebTestRunner::MockWebSpeechRecognizer::MockWebSpeechRecognizer):
- (WebTestRunner):
- (WebTestRunner::MockWebSpeechRecognizer::~MockWebSpeechRecognizer):
- (WebTestRunner::MockWebSpeechRecognizer::setDelegate):
- (WebTestRunner::MockWebSpeechRecognizer::start):
- (WebTestRunner::MockWebSpeechRecognizer::stop):
- (WebTestRunner::MockWebSpeechRecognizer::abort):
- (WebTestRunner::MockWebSpeechRecognizer::addMockResult):
- (WebTestRunner::MockWebSpeechRecognizer::setError):
- (WebTestRunner::MockWebSpeechRecognizer::startTaskQueue):
- (WebTestRunner::MockWebSpeechRecognizer::clearTaskQueue):
- (WebTestRunner::MockWebSpeechRecognizer::StepTask::runIfValid):
- * DumpRenderTree/chromium/TestRunner/src/MockWebSpeechRecognizer.h: Renamed from Tools/DumpRenderTree/chromium/MockWebSpeechRecognizer.h.
- (WebKit):
- (WebTestRunner):
- (MockWebSpeechRecognizer):
- (WebTestRunner::MockWebSpeechRecognizer::wasAborted):
- (WebTestRunner::MockWebSpeechRecognizer::client):
- (WebTestRunner::MockWebSpeechRecognizer::handle):
- (WebTestRunner::MockWebSpeechRecognizer::taskList):
- (Task):
- (WebTestRunner::MockWebSpeechRecognizer::Task::Task):
- (WebTestRunner::MockWebSpeechRecognizer::Task::~Task):
- (StepTask):
- (WebTestRunner::MockWebSpeechRecognizer::StepTask::StepTask):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- (WebTestRunner::TestInterfaces::windowOpened):
- (WebTestRunner):
- (WebTestRunner::TestInterfaces::windowClosed):
- (WebTestRunner::TestInterfaces::windowList):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::requestPointerLock):
- (WebTestRunner):
- (WebTestRunner::TestRunner::requestPointerUnlock):
- (WebTestRunner::TestRunner::isPointerLocked):
- (WebTestRunner::TestRunner::didAcquirePointerLockInternal):
- (WebTestRunner::TestRunner::didNotAcquirePointerLockInternal):
- (WebTestRunner::TestRunner::didLosePointerLockInternal):
- (WebTestRunner::TestRunner::windowCount):
- (WebTestRunner::TestRunner::setMockDeviceOrientation):
- (WebTestRunner::TestRunner::numberOfPendingGeolocationPermissionRequests):
- (WebTestRunner::TestRunner::setGeolocationPermission):
- (WebTestRunner::TestRunner::setMockGeolocationPosition):
- (WebTestRunner::TestRunner::setMockGeolocationPositionUnavailableError):
- (WebTestRunner::TestRunner::addMockSpeechInputResult):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::addMockSpeechRecognitionResult):
- (WebTestRunner::TestRunner::setMockSpeechRecognitionError):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::didAcquirePointerLock):
- (WebTestRunner::TestRunner::didNotAcquirePointerLock):
- (WebTestRunner::TestRunner::didLosePointerLock):
- (WebTestRunner::TestRunner::setPointerLockWillRespondAsynchronously):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner):
- (TestRunner):
- (HostMethodTask):
- (WebTestRunner::TestRunner::HostMethodTask::HostMethodTask):
- (WebTestRunner::TestRunner::HostMethodTask::runIfValid):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::setInterfaces):
- (WebTestRunner::WebTestProxyBase::setDelegate):
- (WebTestRunner::WebTestProxyBase::reset):
- (WebTestRunner::WebTestProxyBase::captureTree):
- (WebTestRunner::WebTestProxyBase::geolocationClientMock):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::deviceOrientationClientMock):
- (WebTestRunner::WebTestProxyBase::speechInputControllerMock):
- (WebTestRunner::WebTestProxyBase::speechRecognizerMock):
- (WebTestRunner::WebTestProxyBase::geolocationClient):
- (WebTestRunner::WebTestProxyBase::speechInputController):
- (WebTestRunner::WebTestProxyBase::speechRecognizer):
- (WebTestRunner::WebTestProxyBase::deviceOrientationClient):
- (WebTestRunner::WebTestProxyBase::requestPointerLock):
- (WebTestRunner::WebTestProxyBase::requestPointerUnlock):
- (WebTestRunner::WebTestProxyBase::isPointerLocked):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost):
-
-2013-02-20 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Make debug builds possible on 32bit Linux
- https://bugs.webkit.org/show_bug.cgi?id=110231
-
- Reviewed by Tor Arne Vestbø.
-
- Use the stabs format for debug builds to make the object files
- a bit smaller so that they can be linked on a 32bit system.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2013-02-20 Takashi Toyoshima <toyoshim@chromium.org>
-
- Unreviewed. Add myself to watch lists.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-19 Joshua Bell <jsbell@chromium.org>
-
- Remove warning from run-bindings-tests
- https://bugs.webkit.org/show_bug.cgi?id=110285
-
- Reviewed by Kentaro Hara.
-
- Since wkrev.com/139331 run-bindings-tests has been harmlessly emitting
- "Unknown option: idlattributesfile". That option was removed from
- bindings/scripts/preprocess-idls.pl but was still being passed by
- the test script. Remove it.
-
- * Scripts/webkitpy/bindings/main.py:
- (BindingsTests.generate_supplemental_dependency): Remove unused arg.
-
-2013-02-19 Elliott Sprehn <esprehn@chromium.org>
-
- Unreviewed. Add myself to watch lists.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-19 Hans Muller <hmuller@adobe.com>
-
- Unreviewed, corrected primary email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-19 Hans Muller <hmuller@adobe.com>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-19 Pravin D <pravind@webkit.org>
-
- Unreviewed, changing primary email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-19 Alan Cutter <alancutter@chromium.org>
-
- REGRESSION: Sheriffbot is failing to process rollout requests
- https://bugs.webkit.org/show_bug.cgi?id=106945
-
- Reviewed by Adam Barth.
-
- Modified Sheriffbot build script to track the svn repo from git and add bot user details to the git repo config file.
- This resolves problems when Sheriffbot attempts to perform a rollout request.
-
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
- * EWSTools/configure-git-svn.sh: Copied from Tools/EWSTools/create-webkit-git.
- * EWSTools/configure-git-user.sh: Renamed from Tools/EWSTools/create-webkit-git.
-
-2013-02-19 Claudio Saavedra <csaavedra@igalia.com>
-
- Unreviewed build fix.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
- Bump harfbuzz module to 0.9.7. See related bug 110145.
-
-2013-02-19 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Skip the build with a warning if certain tools cannot be found in the PATH
- https://bugs.webkit.org/show_bug.cgi?id=110215
-
- Reviewed by Tor Arne Vestbø.
-
- Check that gperf, python, ruby, perl, bison and flex are in the PATH before
- continuing the build. Otherwise skip with an error message explaining which
- programs are missing from the build.
-
- * qmake/mkspecs/features/configure.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2013-02-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r143319.
- http://trac.webkit.org/changeset/143319
- https://bugs.webkit.org/show_bug.cgi?id=110214
-
- Causes build issues on win32 (Requested by carewolf on
- #webkit).
-
- * qmake/mkspecs/features/features.pri:
-
-2013-02-19 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Enable MathML
- https://bugs.webkit.org/show_bug.cgi?id=110205
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.pri:
-
-2013-02-17 Andrei Bucur <abucur@adobe.com>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-19 Hajime Morrita <morrita@google.com>
-
- Unreviewed, updated spelling of my name.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-18 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed. Adjust expectations.
-
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp:
- (TestWebKitAPI::TEST):
-
-2013-02-18 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed GTK gardening.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Skipped the ReloadPageAfterCrash unit test as it is flakily timing out.
-
-2013-02-18 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- [Qt][WK2] Remove duped test name and append new test in project file
- https://bugs.webkit.org/show_bug.cgi?id=110117
-
- A new WK2 API test has landed recently (ResizeWindowAfterCrash), this patch will
- add this test into the runnable test suite and remove a duped test in project file.
-
- Reviewed by Jocelyn Turcotte.
-
- * TestWebKitAPI/Tests/WebKit2/WebKit2.pro:
-
-2013-02-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove log spew from dumpAllBackForwardLists
- https://bugs.webkit.org/show_bug.cgi?id=110108
-
- Reviewed by Nico Weber.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
-
-2013-02-18 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][WK2] Disable failing API tests
- https://bugs.webkit.org/show_bug.cgi?id=110081
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Disable DOMWindowExtensionBasic WK2 test on EFL port as it times out.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2013-02-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Disable the build if certain configure checks fail
- https://bugs.webkit.org/show_bug.cgi?id=110094
-
- Reviewed by Tor Arne Vestbø.
-
- Allow for the build to be skipped (clear out SUBDIRS) if certain
- configure conditions aren't met.
-
- * qmake/mkspecs/features/configure.prf:
-
-2013-02-15 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt][WK2] Support WK2 API tests
- https://bugs.webkit.org/show_bug.cgi?id=109843
-
- Reviewed by Jocelyn Turcotte.
-
- * TestWebKitAPI/DerivedSources.pri: Added.
- * TestWebKitAPI/InjectedBundle.pri: Added.
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/TestWebKitAPI.pri:
- * TestWebKitAPI/TestWebKitAPI.pro:
- * TestWebKitAPI/Tests/JavaScriptCore/JavaScriptCore.pro: Added.
- * TestWebKitAPI/Tests/WTF/WTF.pro:
- * TestWebKitAPI/Tests/WebKit2/WebKit2.pro: Added.
- * TestWebKitAPI/qt/PlatformUtilitiesQt.cpp:
- (TestWebKitAPI::Util::sleep):
- (TestWebKitAPI::Util::createInjectedBundlePath):
- (TestWebKitAPI::Util::createURLForResource):
- (TestWebKitAPI::Util::isKeyDown):
- (Util):
- * TestWebKitAPI/qt/PlatformWebViewQt.cpp: Added.
- (TestWebKitAPI):
- (WrapperWindow):
- (TestWebKitAPI::WrapperWindow::WrapperWindow):
- (TestWebKitAPI::WrapperWindow::handleStatusChanged):
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI::PlatformWebView::page):
- (TestWebKitAPI::PlatformWebView::focus):
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
- (TestWebKitAPI::PlatformWebView::simulateAltKeyPress):
- (TestWebKitAPI::PlatformWebView::simulateMouseMove):
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- * TestWebKitAPI/qt/main.cpp:
- (addQtWebProcessToPath):
- (main):
-
-2013-02-18 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][WK2] Refactor Ewk_Favicon code and stop relying on internal C++ API
- https://bugs.webkit.org/show_bug.cgi?id=108598
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update EFL's MiniBrowser to make use of new Ewk_Favicon API.
-
- * MiniBrowser/efl/main.c:
- (update_view_favicon):
- (on_view_favicon_changed):
- (window_create):
-
-2013-02-18 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-13 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: reportLeaf method doesn't report the leaf node properly.
- https://bugs.webkit.org/show_bug.cgi?id=109554
-
- In some cases leaves have no pointer so with the old schema we can't generate nodeId for them because we
- can't insert 0 into hashmap. It happens when we call addPrivateBuffer method.
-
- Drive by fix: I introduced a client interface for the HeapGraphSerializer.
- It helps me to do the tests for the serializer.
-
- Reviewed by Yury Semikhatsky.
-
- It is covered by newly added tests in TestWebKitAPI.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp: Added.
- (TestWebKitAPI):
- (HeapGraphReceiver):
- (TestWebKitAPI::HeapGraphReceiver::HeapGraphReceiver):
- (TestWebKitAPI::HeapGraphReceiver::printGraph):
- (TestWebKitAPI::HeapGraphReceiver::dumpNodes):
- (TestWebKitAPI::HeapGraphReceiver::dumpEdges):
- (TestWebKitAPI::HeapGraphReceiver::dumpBaseToRealNodeId):
- (TestWebKitAPI::HeapGraphReceiver::dumpStrings):
- (TestWebKitAPI::HeapGraphReceiver::serializer):
- (TestWebKitAPI::HeapGraphReceiver::chunkPart):
- (TestWebKitAPI::HeapGraphReceiver::dumpPart):
- (TestWebKitAPI::HeapGraphReceiver::stringValue):
- (TestWebKitAPI::HeapGraphReceiver::intValue):
- (TestWebKitAPI::HeapGraphReceiver::nodeToString):
- (TestWebKitAPI::HeapGraphReceiver::edgeToString):
- (TestWebKitAPI::HeapGraphReceiver::printNode):
- (Helper):
- (TestWebKitAPI::Helper::Helper):
- (TestWebKitAPI::Helper::addNode):
- (TestWebKitAPI::Helper::addEdge):
- (TestWebKitAPI::Helper::done):
- (Object):
- (TestWebKitAPI::Helper::Object::Object):
- (TestWebKitAPI::TEST):
- (Owner):
- (TestWebKitAPI::Owner::Owner):
- (TestWebKitAPI::Owner::reportMemoryUsage):
-
-2013-02-18 Ryosuke Niwa <rniwa@webkit.org>
-
- WKR build fix. Always use ascii since irclib/ircbot doesn't support unicode.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot.next_work_item):
-
-2013-02-17 Kangil Han <kangil.han@samsung.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-17 Alan Cutter <alancutter@chromium.org>
-
- GCE EWS bots are all offline
- https://bugs.webkit.org/show_bug.cgi?id=110069
-
- Reviewed by Eric Seidel.
-
- Updated GCE EWS build scripts to use the gcel-10-04-v20130104 image instead of the obsoleted ubuntu-10-04-v20120621.
- This changed the ephemeral disk path to /dev/sdb and required /etc/hosts to be chmodded to 644.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh:
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
- * EWSTools/build-vm.sh:
- * EWSTools/start-queue.sh:
-
-2013-02-18 Eugene Klyuchnikov <eustas@chromium.org>
-
- Unreviewed, add myself to commiters.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-17 Dongwoo Joshua Im <dw.im@samsung.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-17 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Fix typo in script.
-
- * EWSTools/start-queue-win.sh:
-
-2013-02-15 Roger Fong <roger_fong@apple.com>
-
- Pass in bot name as parameter to start-queue-win script.
- https://bugs.webkit.org/show_bug.cgi?id=109998.
-
- Reviewed by Darin Adler.
-
- * EWSTools/start-queue-win.sh:
-
-2013-02-18 Byungwoo Lee <bw80.lee@samsung.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-17 Ryosuke Niwa <rniwa@webkit.org>
-
- Rename new-commit-bot to WKR to disambiguate it from commit-queue.
-
- Rubber-stamped by Andreas Kling.
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot.begin_work_queue):
-
-2013-02-16 Glenn Adams <glenn@skynav.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-16 Ryosuke Niwa <rniwa@webkit.org>
-
- new-commit-bot should report the full name of committer and reviewer instead of just nicks
- https://bugs.webkit.org/show_bug.cgi?id=110040
-
- Reviewed by Darin Adler.
-
- Have it report names like "Ryosuke Niwa (rniwa)" instead of just "rniwa".
-
- * Scripts/webkitpy/tool/commands/newcommitbot.py:
- (NewCommitBot):
- (NewCommitBot._summarize_commit_log):
- * Scripts/webkitpy/tool/commands/newcommitbot_unittest.py:
-
-2013-02-16 Ryosuke Niwa <rniwa@webkit.org>
-
- We need a CIA replacement
- https://bugs.webkit.org/show_bug.cgi?id=110008
-
- Reviewed by Andreas Kling.
-
- Added new-commit-bot.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- (QueueEngine.__init__):
- (QueueEngine): Made the sleep tiem configurable.
- (QueueEngine._sleep_message):
- (QueueEngine._sleep):
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (QueueEngineTest.test_sleep_message):
- * Scripts/webkitpy/tool/commands/__init__.py:
- * Scripts/webkitpy/tool/commands/newcommitbot.py: Added.
- (PingPong): Added. Implements the ping pong protocol.
- (NewCommitBot):
- (NewCommitBot.begin_work_queue):
- (NewCommitBot.work_item_log_path):
- (NewCommitBot.next_work_item): Update SVN revision and report any new commits made since
- the last time we checked the head SVN revision.
- (NewCommitBot.process_work_item):
- (NewCommitBot._update_checkout): svn up.
- (NewCommitBot._new_svn_revisions): Returns a range of new revisions.
- (NewCommitBot._summarize_commit_log): Summarize a commit log to be posted on IRC.
- (NewCommitBot.handle_unexpected_error):
- (NewCommitBot.handle_script_error):
- * Scripts/webkitpy/tool/commands/newcommitbot_unittest.py: Added.
- (NewCommitBotTest.test_summarize_commit_log_basic): Tests for summarizing non-rollout commits.
- (NewCommitBotTest.test_summarize_commit_log_rollout): Tests for summarizing rollouts.
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractQueue.execute):
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (MockQueueEngine.__init__):
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- (SheriffBotTest.test_command_aliases):
- * Scripts/webkitpy/tool/main.py:
- (WebKitPatch):
-
-2013-02-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] initialize all variables of TestRunner classes
- https://bugs.webkit.org/show_bug.cgi?id=110013
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
-
-2013-02-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] destroy the TestPlugin when the destroy() method is invoked.
- https://bugs.webkit.org/show_bug.cgi?id=110012
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::destroy):
-
-2013-02-15 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- [WK2] Write a test to simulate crashed WebProcess followed by Window resize
- https://bugs.webkit.org/show_bug.cgi?id=109842
-
- Reviewed by Benjamin Poulain.
-
- This new test will kill WebProcess, followed by next resizing the Window. It helps to
- identify if the port is testing for WebPageProxy data members state (e.g. DrawingArea, Frames)
- before making calls into them.
-
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didFinishLoad):
- (TestWebKitAPI::didCrash):
- (TestWebKitAPI::TEST):
-
-2013-02-15 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- Add CString operators for comparison with const char*
- https://bugs.webkit.org/show_bug.cgi?id=109947
-
- Reviewed by Darin Adler.
-
- Add tests for WTF::CString's comparison operators.
-
- * TestWebKitAPI/Tests/WTF/CString.cpp:
- (TEST):
-
-2013-02-15 Zan Dobersek <zdobersek@igalia.com>
-
- webkit-patch suggest-reviewers should limit itself to 5 reviewers
- https://bugs.webkit.org/show_bug.cgi?id=107528
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/checkout.py:
- (Checkout.suggested_reviewers): Iterate through the sorted commit info list,
- scraping reviewers from the commit information and in the end producing a list
- of reviewers that's sorted from the most to least recent activity of any reviewer
- that has reviewed or authored patches for the changed files.
- * Scripts/webkitpy/tool/commands/queries.py:
- (SuggestReviewers): Use the SuggestReviewers step instead of reimplementing much of
- the same logic.
- (SuggestReviewers._prepare_state): Force the reviewer suggestion because the option
- defaults to False.
- * Scripts/webkitpy/tool/steps/suggestreviewers.py:
- (SuggestReviewers.run): Only list the first five suggested reviewers, now printed out
- on a single line. Only ask for CC-ing the suggested reviewers to the bug if the
- bug ID is located in the command's state.
-
-2013-02-15 Pablo Flouret <pablof@motorola.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-15 Roger Fong <roger_fong@apple.com>
-
- Get Win EWS startup script checked into tree so we can make changes to all the EWS bots more easily.
-
- * EWSTools/start-queue-win.sh: Added.
-
-2013-02-15 Andreas Kling <akling@apple.com>
-
- Unbreak webkit-patch -- can't have both Committer and Contributor entry with same e-mail address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-15 Joanmarie Diggs <jdiggs@igalia.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-15 Ryosuke Niwa <rniwa@webkit.org>
-
- NRWT: ML Debug Test bot is timing out after cleaning up ports
- https://bugs.webkit.org/show_bug.cgi?id=109912
-
- Reviewed by Simon Fraser.
-
- Added more debug messgaes to diagnose the issue.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
-
-2013-02-15 Claudio Saavedra <csaavedra@igalia.com>
-
- Unreviewed. Add myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-15 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- Unreviewed. Update Yi Shen, Antonio Gomes and Laszlo Gombos'
- emails on their behalf.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-15 Andrey Lushnikov <lushnikov@chromium.org>
-
- Web Inspector: implement smart braces functionality
- https://bugs.webkit.org/show_bug.cgi?id=109200
-
- Reviewed by Pavel Feldman.
-
- Fix eventSender.keyDown implementation to correctly process opening
- round brace symbol.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::keyDown):
-
-2013-02-15 Jochen Eisinger <jochen@chromium.org>
-
- Speculative build fix for chromium-win.
-
- Unreviewed build fix.
-
- Add declarations of the copy constructor and assignment operator to
- WebTestProxyBase, so VS doesn't try to generate them.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
-
-2013-02-15 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Port GCController to JSC C API
- https://bugs.webkit.org/show_bug.cgi?id=109690
-
- Reviewed by Benjamin Poulain.
-
- Rename TestRunner to TestRunnerQt to avoid conflict when
- including TestRunner.h in the future.
-
- Replaced QObject based GCController implementation with JSC C API
- based one.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::open):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::methodNameStringForFailedTest):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::testRunner):
- (DumpRenderTree):
- * DumpRenderTree/qt/GCControllerQt.cpp:
- (GCController::getJSObjectCount):
- * DumpRenderTree/qt/GCControllerQt.h: Removed.
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunnerQt::TestRunnerQt):
- (TestRunnerQt::reset):
- (TestRunnerQt::dumpNotifications):
- (TestRunnerQt::processWork):
- (TestRunnerQt::maybeDump):
- (TestRunnerQt::dumpAsText):
- (TestRunnerQt::waitUntilDone):
- (TestRunnerQt::setViewModeMediaFeature):
- (TestRunnerQt::webHistoryItemCount):
- (TestRunnerQt::keepWebHistory):
- (TestRunnerQt::notifyDone):
- (TestRunnerQt::windowCount):
- (TestRunnerQt::grantWebNotificationPermission):
- (TestRunnerQt::ignoreLegacyWebNotificationPermissionRequests):
- (TestRunnerQt::denyWebNotificationPermission):
- (TestRunnerQt::removeAllWebNotificationPermissions):
- (TestRunnerQt::simulateWebNotificationClick):
- (TestRunnerQt::simulateLegacyWebNotificationClick):
- (TestRunnerQt::display):
- (TestRunnerQt::displayInvalidatedRegion):
- (TestRunnerQt::clearBackForwardList):
- (TestRunnerQt::pathToLocalResource):
- (TestRunnerQt::dumpEditingCallbacks):
- (TestRunnerQt::dumpFrameLoadCallbacks):
- (TestRunnerQt::dumpProgressFinishedCallback):
- (TestRunnerQt::dumpUserGestureInFrameLoadCallbacks):
- (TestRunnerQt::dumpResourceLoadCallbacks):
- (TestRunnerQt::dumpResourceResponseMIMETypes):
- (TestRunnerQt::dumpWillCacheResponse):
- (TestRunnerQt::dumpHistoryCallbacks):
- (TestRunnerQt::setWillSendRequestReturnsNullOnRedirect):
- (TestRunnerQt::setWillSendRequestReturnsNull):
- (TestRunnerQt::setWillSendRequestClearHeader):
- (TestRunnerQt::setDeferMainResourceDataLoad):
- (TestRunnerQt::queueBackNavigation):
- (TestRunnerQt::queueForwardNavigation):
- (TestRunnerQt::queueLoad):
- (TestRunnerQt::queueLoadHTMLString):
- (TestRunnerQt::queueReload):
- (TestRunnerQt::queueLoadingScript):
- (TestRunnerQt::queueNonLoadingScript):
- (TestRunnerQt::provisionalLoad):
- (TestRunnerQt::timerEvent):
- (TestRunnerQt::encodeHostName):
- (TestRunnerQt::decodeHostName):
- (TestRunnerQt::closeWebInspector):
- (TestRunnerQt::setDeveloperExtrasEnabled):
- (TestRunnerQt::setAsynchronousSpellCheckingEnabled):
- (TestRunnerQt::showWebInspector):
- (TestRunnerQt::evaluateInWebInspector):
- (TestRunnerQt::goBack):
- (TestRunnerQt::setDefersLoading):
- (TestRunnerQt::setAllowUniversalAccessFromFileURLs):
- (TestRunnerQt::setAllowFileAccessFromFileURLs):
- (TestRunnerQt::setAppCacheMaximumSize):
- (TestRunnerQt::setAutofilled):
- (TestRunnerQt::setValueForUser):
- (TestRunnerQt::setFixedContentsSize):
- (TestRunnerQt::setPrivateBrowsingEnabled):
- (TestRunnerQt::setSpatialNavigationEnabled):
- (TestRunnerQt::setPopupBlockingEnabled):
- (TestRunnerQt::setPluginsEnabled):
- (TestRunnerQt::setPOSIXLocale):
- (TestRunnerQt::setWindowIsKey):
- (TestRunnerQt::setMainFrameIsFirstResponder):
- (TestRunnerQt::setJavaScriptCanAccessClipboard):
- (TestRunnerQt::setXSSAuditorEnabled):
- (TestRunnerQt::dispatchPendingLoadRequests):
- (TestRunnerQt::clearAllApplicationCaches):
- (TestRunnerQt::clearApplicationCacheForOrigin):
- (TestRunnerQt::localStorageDiskUsageForOrigin):
- (TestRunnerQt::setApplicationCacheOriginQuota):
- (TestRunnerQt::applicationCacheDiskUsageForOrigin):
- (TestRunnerQt::originsWithApplicationCache):
- (TestRunnerQt::setCacheModel):
- (TestRunnerQt::setDatabaseQuota):
- (TestRunnerQt::clearAllDatabases):
- (TestRunnerQt::addOriginAccessWhitelistEntry):
- (TestRunnerQt::removeOriginAccessWhitelistEntry):
- (TestRunnerQt::setCustomPolicyDelegate):
- (TestRunnerQt::waitForPolicyDelegate):
- (TestRunnerQt::overridePreference):
- (TestRunnerQt::setUserStyleSheetLocation):
- (TestRunnerQt::setCaretBrowsingEnabled):
- (TestRunnerQt::setAuthorAndUserStylesEnabled):
- (TestRunnerQt::setUserStyleSheetEnabled):
- (TestRunnerQt::setDomainRelaxationForbiddenForURLScheme):
- (TestRunnerQt::callShouldCloseOnWebView):
- (TestRunnerQt::setScrollbarPolicy):
- (TestRunnerQt::setSmartInsertDeleteEnabled):
- (TestRunnerQt::setSelectTrailingWhitespaceEnabled):
- (TestRunnerQt::execCommand):
- (TestRunnerQt::isCommandEnabled):
- (TestRunnerQt::findString):
- (TestRunnerQt::markerTextForListItem):
- (TestRunnerQt::computedStyleIncludingVisitedInfo):
- (TestRunnerQt::elementDoesAutoCompleteForElementWithId):
- (TestRunnerQt::authenticateSession):
- (TestRunnerQt::setIconDatabaseEnabled):
- (TestRunnerQt::setMockDeviceOrientation):
- (TestRunnerQt::setGeolocationPermission):
- (TestRunnerQt::numberOfPendingGeolocationPermissionRequests):
- (TestRunnerQt::setGeolocationPermissionCommon):
- (TestRunnerQt::setMockGeolocationPositionUnavailableError):
- (TestRunnerQt::setMockGeolocationPosition):
- (TestRunnerQt::addMockSpeechInputResult):
- (TestRunnerQt::setMockSpeechInputDumpRect):
- (TestRunnerQt::startSpeechInput):
- (TestRunnerQt::evaluateScriptInIsolatedWorldAndReturnValue):
- (TestRunnerQt::evaluateScriptInIsolatedWorld):
- (TestRunnerQt::addUserStyleSheet):
- (TestRunnerQt::removeAllVisitedLinks):
- (TestRunnerQt::addURLToRedirect):
- (TestRunnerQt::originsWithLocalStorage):
- (TestRunnerQt::deleteAllLocalStorage):
- (TestRunnerQt::deleteLocalStorageForOrigin):
- (TestRunnerQt::observeStorageTrackerNotifications):
- (TestRunnerQt::syncLocalStorage):
- (TestRunnerQt::resetPageVisibility):
- (TestRunnerQt::setPageVisibility):
- (TestRunnerQt::setAutomaticLinkDetectionEnabled):
- (TestRunnerQt::setTextDirection):
- (TestRunnerQt::setAlwaysAcceptCookies):
- (TestRunnerQt::setAlwaysBlockCookies):
- (TestRunnerQt::setAudioData):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunnerQt):
-
-2013-02-14 Karen Grunberg <kareng@chromium.org>
-
- adding myself as a committer
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-14 Glenn Adams <glenn@skynav.com>
-
- new-run-webkit-tests needs a shared TestExpectations between all WebKit ports
- https://bugs.webkit.org/show_bug.cgi?id=37565
-
- Introduce generic TestExpectations file that applies as a fallback for all ports, the location of which
- is LayoutTests/TestExpectations.
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py:
- (FakePort.path_to_generic_test_expectations_file):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.path_to_generic_test_expectations_file):
- (Port):
- (Port._port_specific_expectations_files):
- (Port.expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_expectations_ordering):
- (test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._port_specific_expectations_files):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_expectations_files):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_paths):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._update_expectations_file):
-
-2013-02-14 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move pixel generation logic to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109686
-
- Reviewed by Stephen White.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::~TestInterfaces):
- (WebTestRunner::TestInterfaces::setWebView):
- (WebTestRunner::TestInterfaces::proxy):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebTestRunner):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::setWebView):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::display):
- (WebTestRunner::TestRunner::displayInvalidatedRegion):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::setWebView):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::reset):
- (WebTestRunner::WebTestProxyBase::capturePixels):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::paintRect):
- (WebTestRunner::WebTestProxyBase::paintInvalidatedRegion):
- (WebTestRunner::WebTestProxyBase::paintPagesWithBoundaries):
- (WebTestRunner::WebTestProxyBase::canvas):
- (WebTestRunner::WebTestProxyBase::displayRepaintMask):
- (WebTestRunner::WebTestProxyBase::display):
- (WebTestRunner::WebTestProxyBase::displayInvalidatedRegion):
- (WebTestRunner::WebTestProxyBase::discardBackingStore):
- (WebTestRunner::WebTestProxyBase::setWindowRect):
- (WebTestRunner::WebTestProxyBase::userMediaClient):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::showDevTools):
- (TestShell::closeDevTools):
- (TestShell::dump):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setWindowRect):
- (WebViewHost::setDeviceScaleFactor):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-14 Tony Chang <tony@chromium.org>
-
- Unreviewed, set svn:eol-style native for .sln, .vcproj, and .vsprops files.
- https://bugs.webkit.org/show_bug.cgi?id=96934
-
- * CLWrapper/CLWrapper.sln: Modified property svn:eol-style.
- * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherCommon.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebug.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebugAll.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherProduction.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherRelease.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/DumpRenderTreeLauncherReleaseCairoCFLite.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherCommon.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherDebug.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherDebugAll.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherProduction.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherRelease.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffLauncherReleaseCairoCFLite.vsprops: Added property svn:eol-style.
- * DumpRenderTree/win/ImageDiffWinCairoCommon.vsprops: Added property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops: Added property svn:eol-style.
- * MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops: Added property svn:eol-style.
- * TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/WebKitTestRunner.sln: Modified property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops: Added property svn:eol-style.
- * WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherCommon.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherDebug.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherDebugAll.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherDebugCairoCFLite.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherProduction.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherRelease.vsprops: Added property svn:eol-style.
- * WinLauncher/WinLauncherLauncherReleaseCairoCFLite.vsprops: Added property svn:eol-style.
-
-2013-02-14 Tony Chang <tony@chromium.org>
-
- Unreviewed, set svn:eol-style CRLF for .sln files.
-
- * CLWrapper/CLWrapper.sln: Modified property svn:eol-style.
- * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style.
- * WebKitTestRunner/WebKitTestRunner.sln: Modified property svn:eol-style.
-
-2013-02-14 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Errors when building WebKit2 with Clang
- https://bugs.webkit.org/show_bug.cgi?id=109603
-
- Reviewed by Alexey Proskuryakov.
-
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::resizeTo): Cast the width and height parameters to the integer
- type when constructing the GtkAllocation.
-
- * CLWrapper/CLWrapper.sln: Modified property svn:eol-style.
- * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style.
- * WebKitTestRunner/WebKitTestRunner.sln: Modified property svn:eol-style.
-
-2013-02-14 Roger Fong <roger_fong@apple.com>
-
- Add eol-style=native to solution files. Add a new solution file.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln: Added property svn:eol-style.
- * TestWebKitAPI/TestWebKitAPI.vcxproj: Added property svn:eol-style. Modified property svn:ignore.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.sln: Added.
-
-2013-02-14 Mario Sanchez Prada <mario.prada@samsung.com>
-
- [GTK] Missing call to g_object_ref while retrieving accessible table cells
- https://bugs.webkit.org/show_bug.cgi?id=106903
-
- Reviewed by Martin Robinson.
-
- Both DRT and WKTR need to call g_object_unref() now that an extra
- reference is added in the implementation of atk_table_ref_at().
-
- * DumpRenderTree/atk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::cellForColumnAndRow): Call g_object_unref
- before returning the new instance of AccessibilityUIElement.
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::cellForColumnAndRow): Ditto.
-
-2013-02-14 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142841.
- http://trac.webkit.org/changeset/142841
- https://bugs.webkit.org/show_bug.cgi?id=109791
-
- Caused webkit_unit_tests to crash on chromium bots. (Requested
- by atwilson_ on #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- (WebViewHost::initializeLayerTreeView):
-
-2013-02-13 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][jhbuild] Silence GSettings-related warning.
- https://bugs.webkit.org/show_bug.cgi?id=109749
-
- Reviewed by Martin Robinson.
-
- Apply the same change done to the GTK+ port in r109127; this
- silences the warnings printed by glib about the memory GSettings
- backend being used.
-
- Not only does this make the bots (as well as manual runs of, say,
- WebKitTestRunner) much more silent, but it also removes an stderr
- line (which run-perf-tests considers as a failure).
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.setup_environ_for_server): Explicitly set the
- GSETTINGS_BACKEND environment variable to "memory".
-
-2013-02-14 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move mock notification presenter to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109706
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner::WebTestProxy::notificationPresenter):
- * DumpRenderTree/chromium/TestRunner/src/NotificationPresenter.cpp: Renamed from Tools/DumpRenderTree/chromium/NotificationPresenter.cpp.
- (WebTestRunner::NotificationPresenter::NotificationPresenter):
- (WebTestRunner):
- (WebTestRunner::NotificationPresenter::~NotificationPresenter):
- (WebTestRunner::NotificationPresenter::grantPermission):
- (WebTestRunner::NotificationPresenter::simulateClick):
- (WebTestRunner::NotificationPresenter::show):
- (WebTestRunner::NotificationPresenter::cancel):
- (WebTestRunner::NotificationPresenter::objectDestroyed):
- (WebTestRunner::NotificationPresenter::checkPermission):
- (WebTestRunner::NotificationPresenter::requestPermission):
- * DumpRenderTree/chromium/TestRunner/src/NotificationPresenter.h: Renamed from Tools/DumpRenderTree/chromium/NotificationPresenter.h.
- (WebTestRunner):
- (NotificationPresenter):
- (WebTestRunner::NotificationPresenter::setDelegate):
- (WebTestRunner::NotificationPresenter::reset):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setDelegate):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::notificationPresenter):
- (WebTestRunner):
- (WebTestRunner::TestRunner::grantWebNotificationPermission):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebKit):
- (WebTestRunner):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::notificationPresenter):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::resetTestController):
- * DumpRenderTree/chromium/TestShell.h:
- (WebKit):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-02-13 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Add separate DumpRenderTree VS2010 solution file.
-
- * DumpRenderTree/DumpRenderTree.vcxproj: Added property svn:ignore.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln: Added.
-
-2013-02-12 James Robinson <jamesr@chromium.org>
-
- [chromium] Request WebLayerTreeView for DumpRenderTree via explicit testing path
- https://bugs.webkit.org/show_bug.cgi?id=109634
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- (WebViewHost::initializeLayerTreeView):
-
-2013-02-13 David Farler <dfarler@apple.com>
-
- TestWebKitAPI fails to build for iphonesimulator: 'CFNetwork/CFNetworkDefs.h' file not found
- https://bugs.webkit.org/show_bug.cgi?id=109766
-
- Reviewed by David Kilzer.
-
- * TestWebKitAPI/Configurations/Base.xcconfig:
- - Don't search Mac OS X header search paths when building on iOS
-
-2013-02-13 Zan Dobersek <zdobersek@igalia.com>
-
- The 'global isinf/isnan' compiler quirk required when using clang with libstdc++
- https://bugs.webkit.org/show_bug.cgi?id=109325
-
- Reviewed by Anders Carlsson.
-
- Prefix calls to the isinf and isnan methods with std::, declaring we want to use the
- two methods as they're provided by the C++ standard library being used.
-
- * DumpRenderTree/TestRunner.cpp:
- (setAppCacheMaximumSizeCallback):
- (setApplicationCacheOriginQuotaCallback):
- (setDatabaseQuotaCallback):
-
-2013-02-13 Alan Cutter <alancutter@chromium.org>
-
- cr-linux debug should use clang and maybe be a components build
- https://bugs.webkit.org/show_bug.cgi?id=108512
-
- Reviewed by Adam Barth.
-
- Modified GCE cr-linux-debug-ews bot build scripts to configure clang over gcc for build performance.
- Build bots will update clang with each bot cycle.
- Updated GCE image paths to suit gcutil 1.6.1.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh:
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
- * EWSTools/configure-clang-linux.sh: Copied from Tools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh.
- * EWSTools/start-queue.sh:
-
-2013-02-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142747.
- http://trac.webkit.org/changeset/142747
- https://bugs.webkit.org/show_bug.cgi?id=109746
-
- broke component build (Requested by alecf_gardening on
- #webkit).
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp: Removed.
-
-2013-02-13 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] fix TestRunner build with enable_webrtc=0
- https://bugs.webkit.org/show_bug.cgi?id=109700
-
- Reviewed by Tony Chang.
-
- We can't use ENABLE() macros in the TestRunner library, however,
- ENABLE_WEBRTC is defined by build/common.gypi, so we can use it.
-
- * DumpRenderTree/chromium/TestRunner/src/MockConstraints.cpp:
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.cpp:
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDTMFSenderHandler.cpp:
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDataChannelHandler.cpp:
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::userMediaClient):
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
-
-2013-02-12 Roger Fong <roger_fong@apple.com>
-
- TestWebKitAPI and record-memory projects and property sheets for VS2010.
- https://bugs.webkit.org/show_bug.cgi?id=107034
-
- Reviewed by Brent Fulgham.
-
- * TestWebKitAPI/TestWebKitAPI.vcxproj: Added.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj: Added.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters: Added.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPostBuild.cmd: Copied from Tools/TestWebKitAPI/win/TestWebKitAPIPostBuild.cmd.
- * TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPreBuild.cmd: Copied from Tools/TestWebKitAPI/win/TestWebKitAPIPreBuild.cmd.
- * win/record-memory: Added.
- * win/record-memory/main.cpp: Copied from Tools/record-memory-win/main.cpp.
- * win/record-memory/record-memory.vcxproj: Added.
- * win/record-memory/record-memory.vcxproj.filters: Added.
- * win/record-memory/record-memoryCommon.props: Added.
- * win/record-memory/record-memoryDebug.props: Added.
- * win/record-memory/record-memoryRelease.props: Added.
-
-2013-02-13 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Use the source id when creating new tracks
- https://bugs.webkit.org/show_bug.cgi?id=109688
-
- Reviewed by Adam Barth.
-
- Switching mock to new API.
-
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp:
- (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
-
-2013-02-13 Brent Fulgham <bfulgham@webkit.org>
-
- [Windows] Unreviewed VS2010 fix to add $(ConfigurationBuildDir)/private
- to include paths, to match VS2005 build behavior.
-
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props:
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props:
- * WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props:
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props:
-
-2013-02-13 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142736.
- http://trac.webkit.org/changeset/142736
- https://bugs.webkit.org/show_bug.cgi?id=109716
-
- Broke ABI, nightly builds crash on launch (Requested by ap on
- #webkit).
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions):
-
-2013-02-13 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][EFL][WTR] Regression(r141836): WTR crashes on exit
- https://bugs.webkit.org/show_bug.cgi?id=109456
-
- Reviewed by Anders Carlsson.
-
- WebView instance must not live longer than EwkView, as EwkView owns
- objects that page proxy refers to, doing otherwise leads to a crash.
-
- Test controller has own ptr containing WebView. Invoking of ewk_shutdown()
- leads to evas objects deletion. So, the problem was that test controller was
- deleted after ewk_shutdown() had been called in main() function causing
- crashes on WTR exit.
-
- The patch introduces a scope for test controller so that it is deleted first.
-
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2013-02-13 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: reportLeaf method doesn't report the leaf node properly.
- https://bugs.webkit.org/show_bug.cgi?id=109554
-
- In some cases leaves have no pointer so with the old schema we can't generate nodeId for them because we
- can't insert 0 into hashmap. It happens when we call addPrivateBuffer method.
-
- Drive by fix: I introduced a client interface for the HeapGraphSerializer.
- It helps me to do the tests for the serializer.
-
- Reviewed by Yury Semikhatsky.
-
- It is covered by newly added tests in TestWebKitAPI.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp: Added.
- (TestWebKitAPI):
- (HeapGraphReceiver):
- (TestWebKitAPI::HeapGraphReceiver::HeapGraphReceiver):
- (TestWebKitAPI::HeapGraphReceiver::printGraph):
- (TestWebKitAPI::HeapGraphReceiver::dumpNodes):
- (TestWebKitAPI::HeapGraphReceiver::dumpEdges):
- (TestWebKitAPI::HeapGraphReceiver::dumpBaseToRealNodeId):
- (TestWebKitAPI::HeapGraphReceiver::dumpStrings):
- (TestWebKitAPI::HeapGraphReceiver::serializer):
- (TestWebKitAPI::HeapGraphReceiver::chunkPart):
- (TestWebKitAPI::HeapGraphReceiver::dumpPart):
- (TestWebKitAPI::HeapGraphReceiver::stringValue):
- (TestWebKitAPI::HeapGraphReceiver::intValue):
- (TestWebKitAPI::HeapGraphReceiver::nodeToString):
- (TestWebKitAPI::HeapGraphReceiver::edgeToString):
- (TestWebKitAPI::HeapGraphReceiver::printNode):
- (Helper):
- (TestWebKitAPI::Helper::Helper):
- (TestWebKitAPI::Helper::addNode):
- (TestWebKitAPI::Helper::addEdge):
- (TestWebKitAPI::Helper::done):
- (Object):
- (TestWebKitAPI::Helper::Object::Object):
- (TestWebKitAPI::TEST):
- (Owner):
- (TestWebKitAPI::Owner::Owner):
- (TestWebKitAPI::Owner::reportMemoryUsage):
-
-2013-02-13 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [WK2] Remove web intents callbacks
- https://bugs.webkit.org/show_bug.cgi?id=109654
-
- Reviewed by Benjamin Poulain.
-
- Web intents was removed by r142549.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions):
-
-2013-02-12 Adenilson Cavalcanti <cavalcantii@gmail.com>
-
- [WK2] Page reloading will crash UIProcess after WebProcess was killed
- https://bugs.webkit.org/show_bug.cgi?id=109305
-
- Reviewed by Benjamin Poulain.
-
- Adding a new test to simulate the case of WebProcess crash followed by a trying
- to load a new page.
-
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::didFinishLoad):
- (TestWebKitAPI::TEST):
-
-2013-02-11 Brent Fulgham <bfulgham@webkit.org>
-
- Update WebKitDirs.pm for new Windows paths
- https://bugs.webkit.org/show_bug.cgi?id=107714
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitdirs.pm: For each existing Windows environment
- variable, also include creation of the 'new' variables. The
- 'old' variables will be removed in a future update.
- (windowsSourceSourceDir): New helper routine to return the
- actual 'Source' folder of the WebKit source tree.
-
-2013-02-12 Alec Flett <alecflett@chromium.org>
-
- Fix signedness in WebTestProxy
- https://bugs.webkit.org/show_bug.cgi?id=109623
-
- Reviewed by Adam Barth.
-
- Fix signedness problem, using size_t instead of int.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
-
-2013-02-12 Raymond Toy <rtoy@google.com>
-
- Add alias
- https://bugs.webkit.org/show_bug.cgi?id=109621
-
- No review needed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move text dump generation to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109575
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestRunner::WebTestDelegate::captureHistoryForWindow):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.cpp: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestCommon.h.
- (WebTestRunner::normalizeLayoutTestURL):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::checkResponseMimeType):
- (WebTestRunner):
- (WebTestRunner::TestRunner::shouldDumpAsText):
- (WebTestRunner::TestRunner::shouldGeneratePixelResults):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::captureTree):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
- (TestShell::captureHistoryForWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::captureHistoryForWindow):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-02-12 Jessie Berlin <jberlin@apple.com>
-
- Rollout r142618, it broke all the Mac builds.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp: Removed.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2013-02-12 Yury Semikhatsky <yurys@chromium.org>
-
- Unreviewed. Fix Chromium compilation after r142618.
-
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp:
- (TestWebKitAPI::HeapGraphReceiver::printNode):
-
-2013-02-12 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add an optional moduleset with hard to get packages (including libsecret)
- https://bugs.webkit.org/show_bug.cgi?id=109195
-
- Reviewed by Philippe Normand.
-
- Add an optional moduleset that includes libsecret. This moduleset will
- be used to install some annoyingly hard to obtain dependencies on older
- distributions.
-
- * gtk/jhbuild-optional.modules: Added.
- * gtk/jhbuild.modules: Add a reference to the new moduleset file.
-
-2013-02-12 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: reportLeaf method doesn't report the leaf node properly.
- https://bugs.webkit.org/show_bug.cgi?id=109554
-
- In some cases leaves have no pointer. As example when we report a leaf via addPrivateBuffer.
- This patch has new set of tests for HeapGraphSerializer.
-
- Reviewed by Yury Semikhatsky.
-
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebCore/HeapGraphSerializerTest.cpp: Added.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed followup to r142606, the EFL port also enables the CSS image-set
- feature so the new configuration option's default value should reflect that.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Enable CSS Variables feature in development builds
- https://bugs.webkit.org/show_bug.cgi?id=109474
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitperl/FeatureList.pm: Enable the feature on development
- builds of the GTK port.
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Enable CSS image-set support in development builds
- https://bugs.webkit.org/show_bug.cgi?id=109475
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitperl/FeatureList.pm: Add the configuration option for the feature.
- Note that the Mac port also enables the feature but does so in Platform.h as the feature
- is also enabled for the iOS port which can't at the moment be detected via webkitperl.
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Enable DOM4 events constructors in development builds
- https://bugs.webkit.org/show_bug.cgi?id=109471
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitperl/FeatureList.pm: Enable the feature for the GTK port as well.
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- Remove unnecessary variables from FeatureList.pm
- https://bugs.webkit.org/show_bug.cgi?id=109558
-
- Reviewed by Daniel Bates.
-
- A small cleanup, removing unused variables for which the related configuration
- options were already removed.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-12 Zan Dobersek <zdobersek@igalia.com>
-
- Remove ENABLE_XHR_RESPONSE_BLOB handling from various build systems
- https://bugs.webkit.org/show_bug.cgi?id=109481
-
- Reviewed by Daniel Bates.
-
- The ENABLE_XHR_RESPONSE_BLOB feature define was removed from the code
- back in r120574. There are still occurrences of it in various build systems
- which should all be removed as they are useless.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move webrtc mocks to testrunner library
- https://bugs.webkit.org/show_bug.cgi?id=109041
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (WebKitSupportTestEnvironment):
- (WebKitSupportTestEnvironment::mockPlatform):
- (main):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.cpp:
- (MockWebKitPlatformSupport::setInterfaces):
- (MockWebKitPlatformSupport::createMediaStreamCenter):
- (MockWebKitPlatformSupport::createRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/MockWebKitPlatformSupport.h:
- (WebTestRunner):
- (MockWebKitPlatformSupport):
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner):
- (WebTestRunner::WebTestProxy::showContextMenu):
- (WebTestRunner::WebTestProxy::userMediaClient):
- * DumpRenderTree/chromium/TestRunner/src/MockConstraints.cpp: Renamed from Tools/DumpRenderTree/chromium/MockConstraints.cpp.
- (WebTestRunner::MockConstraints::verifyConstraints):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockConstraints.h: Renamed from Tools/DumpRenderTree/chromium/MockConstraints.h.
- (WebKit):
- (WebTestRunner):
- (MockConstraints):
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp.
- (WebTestRunner):
- (WebTestRunner::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
- (WebTestRunner::MockWebMediaStreamCenter::queryMediaStreamSources):
- (WebTestRunner::MockWebMediaStreamCenter::didEnableMediaStreamTrack):
- (WebTestRunner::MockWebMediaStreamCenter::didDisableMediaStreamTrack):
- (WebTestRunner::MockWebMediaStreamCenter::didAddMediaStreamTrack):
- (WebTestRunner::MockWebMediaStreamCenter::didRemoveMediaStreamTrack):
- (WebTestRunner::MockWebMediaStreamCenter::didStopLocalMediaStream):
- (MockWebAudioDestinationConsumer):
- (WebTestRunner::MockWebAudioDestinationConsumer::~MockWebAudioDestinationConsumer):
- (WebTestRunner::MockWebMediaStreamCenter::didCreateMediaStream):
- * DumpRenderTree/chromium/TestRunner/src/MockWebMediaStreamCenter.h: Renamed from Tools/DumpRenderTree/chromium/MockWebMediaStreamCenter.h.
- (WebKit):
- (WebTestRunner):
- (MockWebMediaStreamCenter):
- (WebTestRunner::MockWebMediaStreamCenter::MockWebMediaStreamCenter):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDTMFSenderHandler.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.cpp.
- (WebTestRunner):
- (DTMFSenderToneTask):
- (WebTestRunner::DTMFSenderToneTask::DTMFSenderToneTask):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::setClient):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::currentToneBuffer):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::canInsertDTMF):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::insertDTMF):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDTMFSenderHandler.h: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.h.
- (WebTestRunner):
- (MockWebRTCDTMFSenderHandler):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::taskList):
- (WebTestRunner::MockWebRTCDTMFSenderHandler::clearToneBuffer):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDataChannelHandler.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCDataChannelHandler.cpp.
- (WebTestRunner):
- (DataChannelReadyStateTask):
- (WebTestRunner::DataChannelReadyStateTask::DataChannelReadyStateTask):
- (WebTestRunner::MockWebRTCDataChannelHandler::MockWebRTCDataChannelHandler):
- (WebTestRunner::MockWebRTCDataChannelHandler::setClient):
- (WebTestRunner::MockWebRTCDataChannelHandler::bufferedAmount):
- (WebTestRunner::MockWebRTCDataChannelHandler::sendStringData):
- (WebTestRunner::MockWebRTCDataChannelHandler::sendRawData):
- (WebTestRunner::MockWebRTCDataChannelHandler::close):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCDataChannelHandler.h: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCDataChannelHandler.h.
- (WebTestRunner):
- (MockWebRTCDataChannelHandler):
- (WebTestRunner::MockWebRTCDataChannelHandler::taskList):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.cpp: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp.
- (WebTestRunner):
- (RTCSessionDescriptionRequestSuccededTask):
- (WebTestRunner::RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask):
- (WebTestRunner::RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCStatsRequestSucceededTask):
- (WebTestRunner::RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
- (RTCVoidRequestTask):
- (WebTestRunner::RTCVoidRequestTask::RTCVoidRequestTask):
- (RTCPeerConnectionStateTask):
- (WebTestRunner::RTCPeerConnectionStateTask::RTCPeerConnectionStateTask):
- (RemoteDataChannelTask):
- (WebTestRunner::RemoteDataChannelTask::RemoteDataChannelTask):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::initialize):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::createOffer):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::createAnswer):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::setLocalDescription):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::setRemoteDescription):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::localDescription):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::remoteDescription):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::updateICE):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::addICECandidate):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::addStream):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::removeStream):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::getStats):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::createDataChannel):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::createDTMFSender):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::stop):
- * DumpRenderTree/chromium/TestRunner/src/MockWebRTCPeerConnectionHandler.h: Renamed from Tools/DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h.
- (WebKit):
- (WebTestRunner):
- (MockWebRTCPeerConnectionHandler):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::taskList):
- (WebTestRunner::MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- (WebTestRunner::TestInterfaces::setDelegate):
- (WebTestRunner::TestInterfaces::delegate):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::createMediaStreamCenter):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::createWebRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::userMediaClient):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.cpp: Renamed from Tools/DumpRenderTree/chromium/WebUserMediaClientMock.cpp.
- (WebTestRunner):
- (UserMediaRequestTask):
- (WebTestRunner::UserMediaRequestTask::UserMediaRequestTask):
- (MockExtraData):
- (WebTestRunner::WebUserMediaClientMock::WebUserMediaClientMock):
- (WebTestRunner::WebUserMediaClientMock::requestUserMedia):
- (WebTestRunner::WebUserMediaClientMock::cancelUserMediaRequest):
- * DumpRenderTree/chromium/TestRunner/src/WebUserMediaClientMock.h: Renamed from Tools/DumpRenderTree/chromium/WebUserMediaClientMock.h.
- (WebTestRunner):
- (WebUserMediaClientMock):
- (WebTestRunner::WebUserMediaClientMock::~WebUserMediaClientMock):
- (WebTestRunner::WebUserMediaClientMock::taskList):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-11 Timothy Loh <timloh@chromium.com>
-
- webkit-patch upload regenerates the WebCore ChangeLog every time it's called
- https://bugs.webkit.org/show_bug.cgi?id=108983
-
- Reviewed by Ryosuke Niwa.
-
- This patch puts the behaviour from Bug 74358 behind the flag (default=OFF)
- `--update-changelogs', and removes the flag `--no-prepare-changelogs'.
- The flag name change from prepare to update is since we still want to
- prepare changelogs in the default case when none currently exist.
-
- * Scripts/webkitpy/tool/commands/commandtest.py:
- (CommandsTest.assert_execute_outputs):
- * Scripts/webkitpy/tool/steps/options.py:
- (Options):
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog.options):
- (PrepareChangeLog.run):
-
-2013-02-11 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move printPage() implementation to testRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109436
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::showContextMenu):
- (WebTestRunner::WebTestProxy::printPage):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::printPage):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-02-11 James Robinson <jamesr@chromium.org>
-
- [Chromium] Get rid of WebAnimationController
- https://bugs.webkit.org/show_bug.cgi?id=109235
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-02-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Disable delete button controller on non-Mac ports and delete EditorClient::shouldShowDeleteInterface
- https://bugs.webkit.org/show_bug.cgi?id=109534
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- (shouldShowDeleteInterfaceForElement):
-
-2013-02-11 Nico Weber <thakis@chromium.org>
-
- Remove web intents code
- https://bugs.webkit.org/show_bug.cgi?id=109501
-
- Reviewed by Eric Seidel.
-
- See thread "Removing ENABLE(WEB_INTENTS) code" on webkit-dev.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner::WebTestProxy::didEndEditing):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-02-11 Benjamin Poulain <benjamin@webkit.org>
-
- Kill TestRunner::setMinimumTimerInterval; implement the feature with InternalSettings
- https://bugs.webkit.org/show_bug.cgi?id=109349
-
- Reviewed by Sam Weinig.
-
- Get rid of TestRunner's setMinimumTimerInterval and all the related functions.
-
- This also fixes an oddity:
- TestRunners were initialized with a minimum timer interval of 10 milliseconds instead
- of using the default value. All with the same copy of an outdated comment.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetWebViewToConsistentStateBeforeTesting):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-02-11 Dean Jackson <dino@apple.com>
-
- Remove use of plugInStartLabelImage
- https://bugs.webkit.org/show_bug.cgi?id=108273
-
- Reviewed by Simon Fraser.
-
- Take two - after rollout in r142405.
- Removed plugInStartLabelImage entry from client structure.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2013-02-11 Tony Chang <tony@chromium.org>
-
- Move setFrameFlatteningEnabled from layoutTestController to window.internals.settings
- https://bugs.webkit.org/show_bug.cgi?id=87149
-
- Reviewed by Simon Fraser.
-
- Remove testRunner.setFrameFlatteningEnabled from DRT and WTR. WebKit API
- methods are left because there may be users of it. Add a test for Apple Mac
- to ensure that the API for the preference still works using overridePreference.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-02-11 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Windows 7 Debug mode build fix.
-
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
-
-2013-02-11 Tiancheng Jiang <tijiang@rim.com>
-
- [BlackBerry] Set mouse document position for mouse event in DRT.
- https://bugs.webkit.org/show_bug.cgi?id=109094.
-
- Reviewed by Rob Buis.
-
- RIM PR 246976.
- Internally Reviewed by Nima Ghanavatian & Genevieve Mak.
-
- Set mouse document position when we create mouse event in DRT.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (setMouseEventDocumentPos):
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
-
-2013-02-11 Mike Lattanzio <mlattanzio@rim.com>
-
- [BlackBerry] Add graphics subdirectory to include path.
- https://bugs.webkit.org/show_bug.cgi?id=109437
-
- Reviewed by Rob Buis.
-
- Add browser/platform/graphics to include path.
-
- Internal review by Jeff Rogers.
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments):
-
-2013-02-11 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- [EFL][WKTR] Regression(r141836) fast/dom/Window/mozilla-focus-blur.html started failing
- https://bugs.webkit.org/show_bug.cgi?id=109438
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Some refactoring in r141836 caused the view not to get focus if the focused
- frame is not the main one. The idea of the code was to remove focus from the
- view if the focused frame was not the main one, and then focus the view again.
- However, after the refactoring, the second step never happened: Focus was
- removed but not given again.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::focus):
-
-2013-02-11 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Don't generate documentation if building neither WebKit1 nor WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=109420
-
- Reviewed by Philippe Normand.
-
- Don't generate the GTK documentation if neither of the WebKit1 and WebKit2
- layers was built. This just results in unnecessary errors being spewed out
- by the gtkdoc utilities.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2013-02-11 Antoine Quint <graouts@apple.com>
-
- Unreviewed change to add myself to the Inspector IDLs watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-11 Krzysztof Czech <k.czech@samsung.com>
-
- [GTK][EFL] Shares WebKit-GTK's DumpRenderTree accessibility implementation with other Webkit ports
- https://bugs.webkit.org/show_bug.cgi?id=105007
-
- Reviewed by Martin Robinson.
-
- Shares specific ATK's accessibility implementation.
- Keeps platform specific methods in EFL and GTK's directories.
-
- * DumpRenderTree/atk/AccessibilityCallbacks.h: Renamed from Tools/DumpRenderTree/gtk/AccessibilityCallbacks.h.
- * DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp: Renamed from Tools/DumpRenderTree/gtk/AccessibilityCallbacks.cpp.
- (printAccessibilityEvent):
- (axObjectEventListener):
- (connectAccessibilityCallbacks):
- (disconnectAccessibilityCallbacks):
- * DumpRenderTree/atk/AccessibilityControllerAtk.cpp: Copied from Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp.
- (AccessibilityController::AccessibilityController):
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::elementAtPoint):
- (AccessibilityController::setLogFocusEvents):
- (AccessibilityController::setLogScrollingStartEvents):
- (AccessibilityController::setLogValueChangeEvents):
- (AccessibilityController::setLogAccessibilityEvents):
- (AccessibilityController::addNotificationListener):
- (AccessibilityController::removeNotificationListener):
- * DumpRenderTree/atk/AccessibilityUIElementAtk.cpp: Copied from Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp.
- (coreAttributeToAtkAttribute):
- (roleToString):
- (replaceCharactersForResults):
- (AccessibilityUIElement::AccessibilityUIElement):
- (AccessibilityUIElement::~AccessibilityUIElement):
- (AccessibilityUIElement::getLinkedUIElements):
- (AccessibilityUIElement::getDocumentLinks):
- (AccessibilityUIElement::getChildren):
- (AccessibilityUIElement::getChildrenWithRange):
- (AccessibilityUIElement::rowCount):
- (AccessibilityUIElement::columnCount):
- (AccessibilityUIElement::childrenCount):
- (AccessibilityUIElement::elementAtPoint):
- (AccessibilityUIElement::linkedUIElementAtIndex):
- (AccessibilityUIElement::getChildAtIndex):
- (AccessibilityUIElement::indexOfChild):
- (attributeSetToString):
- (AccessibilityUIElement::allAttributes):
- (AccessibilityUIElement::attributesOfLinkedUIElements):
- (AccessibilityUIElement::attributesOfDocumentLinks):
- (AccessibilityUIElement::titleUIElement):
- (AccessibilityUIElement::parentElement):
- (AccessibilityUIElement::attributesOfChildren):
- (AccessibilityUIElement::parameterizedAttributeNames):
- (AccessibilityUIElement::role):
- (AccessibilityUIElement::subrole):
- (AccessibilityUIElement::roleDescription):
- (AccessibilityUIElement::title):
- (AccessibilityUIElement::description):
- (AccessibilityUIElement::stringValue):
- (AccessibilityUIElement::language):
- (AccessibilityUIElement::x):
- (AccessibilityUIElement::y):
- (AccessibilityUIElement::width):
- (AccessibilityUIElement::height):
- (AccessibilityUIElement::clickPointX):
- (AccessibilityUIElement::clickPointY):
- (AccessibilityUIElement::orientation):
- (AccessibilityUIElement::intValue):
- (AccessibilityUIElement::minValue):
- (AccessibilityUIElement::maxValue):
- (AccessibilityUIElement::valueDescription):
- (checkElementState):
- (AccessibilityUIElement::isEnabled):
- (AccessibilityUIElement::insertionPointLineNumber):
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- (AccessibilityUIElement::isRequired):
- (AccessibilityUIElement::isFocused):
- (AccessibilityUIElement::isSelected):
- (AccessibilityUIElement::hierarchicalLevel):
- (AccessibilityUIElement::ariaIsGrabbed):
- (AccessibilityUIElement::ariaDropEffects):
- (AccessibilityUIElement::isExpanded):
- (AccessibilityUIElement::isChecked):
- (AccessibilityUIElement::attributesOfColumnHeaders):
- (AccessibilityUIElement::attributesOfRowHeaders):
- (AccessibilityUIElement::attributesOfColumns):
- (AccessibilityUIElement::attributesOfRows):
- (AccessibilityUIElement::attributesOfVisibleCells):
- (AccessibilityUIElement::attributesOfHeader):
- (AccessibilityUIElement::indexInTable):
- (indexRangeInTable):
- (AccessibilityUIElement::rowIndexRange):
- (AccessibilityUIElement::columnIndexRange):
- (AccessibilityUIElement::lineForIndex):
- (AccessibilityUIElement::boundsForRange):
- (AccessibilityUIElement::stringForRange):
- (AccessibilityUIElement::attributedStringForRange):
- (AccessibilityUIElement::attributedStringRangeIsMisspelled):
- (AccessibilityUIElement::uiElementForSearchPredicate):
- (AccessibilityUIElement::cellForColumnAndRow):
- (AccessibilityUIElement::selectedTextRange):
- (AccessibilityUIElement::setSelectedTextRange):
- (AccessibilityUIElement::stringAttributeValue):
- (AccessibilityUIElement::numberAttributeValue):
- (AccessibilityUIElement::boolAttributeValue):
- (AccessibilityUIElement::isAttributeSettable):
- (AccessibilityUIElement::isAttributeSupported):
- (alterCurrentValue):
- (AccessibilityUIElement::increment):
- (AccessibilityUIElement::decrement):
- (AccessibilityUIElement::press):
- (AccessibilityUIElement::showMenu):
- (AccessibilityUIElement::disclosedRowAtIndex):
- (AccessibilityUIElement::ariaOwnsElementAtIndex):
- (AccessibilityUIElement::ariaFlowToElementAtIndex):
- (AccessibilityUIElement::selectedRowAtIndex):
- (AccessibilityUIElement::rowAtIndex):
- (AccessibilityUIElement::disclosedByRow):
- (AccessibilityUIElement::accessibilityValue):
- (AccessibilityUIElement::documentEncoding):
- (AccessibilityUIElement::documentURI):
- (AccessibilityUIElement::url):
- (AccessibilityUIElement::addNotificationListener):
- (AccessibilityUIElement::removeNotificationListener):
- (AccessibilityUIElement::isFocusable):
- (AccessibilityUIElement::isSelectable):
- (AccessibilityUIElement::isMultiSelectable):
- (AccessibilityUIElement::isSelectedOptionActive):
- (AccessibilityUIElement::isVisible):
- (AccessibilityUIElement::isOffScreen):
- (AccessibilityUIElement::isCollapsed):
- (AccessibilityUIElement::isIgnored):
- (AccessibilityUIElement::hasPopup):
- (AccessibilityUIElement::takeFocus):
- (AccessibilityUIElement::takeSelection):
- (AccessibilityUIElement::addSelection):
- (AccessibilityUIElement::removeSelection):
- (AccessibilityUIElement::scrollToMakeVisible):
- (AccessibilityUIElement::scrollToMakeVisibleWithSubFocus):
- (AccessibilityUIElement::scrollToGlobalPoint):
- * DumpRenderTree/efl/CMakeLists.txt: Adds ATK headers, libraries, new sources.
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (AccessibilityController::focusedElement):
- (AccessibilityController::rootElement):
- (AccessibilityController::accessibleElementById):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::helpText):
- * GNUmakefile.am: Adds renamed sources.
-
-2013-02-11 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] clear the webcache from within the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109405
-
- Reviewed by Kentaro Hara.
-
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::resetAll):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2013-02-11 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add a destructor to EventSender
- https://bugs.webkit.org/show_bug.cgi?id=109401
-
- Reviewed by Kentaro Hara.
-
- Otherwise, the compiler will automatically generate a destructor, for
- which we need to unnecessarily include WebContextMenuData.h in the
- header.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::~EventSender):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebKit):
- (EventSender):
-
-2013-02-10 Tim Horton <timothy_horton@apple.com>
-
- Unreviewed attempted build fix for Gtk after r142412
-
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2013-02-10 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142413.
- http://trac.webkit.org/changeset/142413
- https://bugs.webkit.org/show_bug.cgi?id=109383
-
- didn't fix the gtk build (Requested by thorton on #webkit).
-
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
-
-2013-02-10 Tim Horton <timothy_horton@apple.com>
-
- Unreviewed attempted build fix for Gtk after r142412
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
-
-2013-02-10 Tim Horton <timothy_horton@apple.com>
-
- WKTR should propagate view creation options to opened windows
- https://bugs.webkit.org/show_bug.cgi?id=109381
-
- Reviewed by Simon Fraser.
-
- * WebKitTestRunner/PlatformWebView.h:
- (WTR::PlatformWebView::options):
- Add storage and a getter for PlatformWebView's creation options dictionary.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- Propagate creation options from parent to child PlatformWebView when creating subwindows.
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- Store creation options on the PlatformWebView.
-
-2013-02-10 Kent Tamura <tkent@chromium.org>
-
- Unreviewed, rolling out r142347.
- http://trac.webkit.org/changeset/142347
- https://bugs.webkit.org/show_bug.cgi?id=108273
-
- Because a depending change r142343 was rolled out.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2013-02-10 Kent Tamura <tkent@chromium.org>
-
- [Chromium] Build fix for r142371
- https://bugs.webkit.org/show_bug.cgi?id=109313
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebKit):
-
-2013-02-10 Zan Dobersek <zdobersek@igalia.com>
-
- gtkdoc-scangobj throwing warnings when using Clang, causes generate-gtkdoc to fail
- https://bugs.webkit.org/show_bug.cgi?id=109315
-
- Reviewed by Philippe Normand.
-
- * GNUmakefile.am: Define the CC environment variable to the CC compiler that the whole
- project was configured to use. This ensures both the regular build and the gtkdoc-scangobj
- program use the same compiler.
- * gtk/generate-gtkdoc: Add '-Qunused-arguments' to the CFLAGS in case we're using Clang. This
- forces Clang to suppress unused arguments warnings that can unnecessarily cause generate-gtkdoc
- script to fail.
-
-2013-02-09 David Farler <dfarler@apple.com>
-
- Make TestWebKitAPI work for iOS
- https://bugs.webkit.org/show_bug.cgi?id=108978
-
- Reviewed by Joseph Pecoraro.
-
- * TestWebKitAPI/Configurations/Base.xcconfig:
- Added back FRAMEWORK_SEARCH_PATHS for Lion builds.
-
-2013-02-09 David Farler <dfarler@apple.com>
-
- Make TestWebKitAPI work for iOS
- https://bugs.webkit.org/show_bug.cgi?id=108978
-
- Reviewed by David Kilzer.
-
- * Makefile: Added TestWebKitAPI to iOS MODULES list.
- * TestWebKitAPI/Configurations/Base.xcconfig:
- - Include FeatureDefines
- - Removed VALID_ARCHS
- - Removed FRAMEWORK_SEARCH_PATHS - allows building against other SDKs
- - Excluded source files per platform
- * TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig:
- - framework and library switches per platform
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- - Remove explicit framework and library linking (moved to xcconfigs)
- - Added iOS main.mm
- * TestWebKitAPI/config.h:
- - Guard importing Cocoa.h and WebKit2_C.h on iOS
- * TestWebKitAPI/ios/mainIOS.mm: Copied from Tools/TestWebKitAPI/mac/main.mm.
- * TestWebKitAPI/mac/mainMac.mm: Renamed from Tools/TestWebKitAPI/mac/main.mm.
-
-2013-02-09 Justin Schuh <jschuh@chromium.org>
-
- [CHROMIUM] Suppress c4267 build warnings for Win64 tests
- https://bugs.webkit.org/show_bug.cgi?id=109359
-
- Reviewed by Abhishek Arya.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2013-02-09 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a link to EFL perf bot on build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=109342
-
- Reviewed by Gyuyoung Kim.
-
- Added.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2013-02-09 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- Unreviewed. Update my IRC nickname in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-09 David Farler <dfarler@apple.com>
-
- build-webkit: document sdk, debug, release, device, and simulator options
- https://bugs.webkit.org/show_bug.cgi?id=109221
-
- Reviewed by David Kilzer.
-
- * Scripts/build-webkit: Add options to usage
- * Scripts/webkitdirs.pm: Remove --deploy and --devel checks
-
-2013-02-09 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move context menu data tracking to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109313
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner::WebTestProxy::showContextMenu):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::setContextMenuData):
- (WebTestRunner::EventSender::contextClick):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebKit):
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::showContextMenu):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::showContextMenu):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-09 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move methods that change initial testRunner state to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109043
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebKit):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::configureForTestWithURL):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebKit):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::showDevTools):
- (WebTestRunner):
- (WebTestRunner::TestRunner::showWebInspector):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::configureForTestWithURL):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2013-02-09 Nico Weber <thakis@chromium.org>
-
- Add myself as a reviewer. (Yay!!!!!)
- https://bugs.webkit.org/show_bug.cgi?id=109110
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-08 Benjamin Poulain <bpoulain@apple.com>
-
- Move workerThreadCount from TestRunner to WebCore Internals
- https://bugs.webkit.org/show_bug.cgi?id=109239
-
- Reviewed by Darin Adler.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticValues):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::webHistoryItemCount):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
-
-2013-02-08 Dean Jackson <dino@apple.com>
-
- Remove use of plugInStartLabelImage
- https://bugs.webkit.org/show_bug.cgi?id=108273
-
- Reviewed by Simon Fraser.
-
- Removed plugInStartLabelImage entry from client structure.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2013-02-07 Timothy Hatcher <timothy@apple.com>
-
- Fix the WebInspectorAPI watch list.
-
- Reviewed by Joseph Pecoraro.
-
- * Scripts/webkitpy/common/config/watchlist: Fix the regrexs.
- Added InjectedScriptSource.js and Console.idl.
-
-2013-02-08 Roger Fong <roger_fong@apple.com>
-
- DumpRenderTree, ImageDiff and TestNetscapePlugin projects, property sheets and resources for VS2010 solution.
- https://bugs.webkit.org/show_bug.cgi?id=107034.
-
- Reviewed by Brent Fulgham.
-
- * DumpRenderTree/DumpRenderTree.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeApple.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeCommon.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebug.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherDebug.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePostBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePreBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommon.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebug.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherDebug.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPostBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPreBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.def: Copied from DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.def.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.rc: Copied from DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.rc.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginDebug.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPostBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPreBuild.cmd: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props: Added.
- * DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/resource.h: Copied from DumpRenderTree/TestNetscapePlugIn/win/resource.h.
- * DumpRenderTree/TestNetscapePlugIn/Tests/win/CallJSThatDestroysPlugin.cpp: Copied from DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp.
- * DumpRenderTree/TestNetscapePlugIn/win/CallJSThatDestroysPlugin.cpp: Removed.
-
-2013-02-08 Harald Alvestrand <hta@google.com>
-
- Fix and test for missing return
-
- RTCPeerConnection.getStats() fails when remote stats are instantiated.
- https://bugs.webkit.org/show_bug.cgi?id=109292
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2013-02-08 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Removing the deprecated WebMediaStreamDescriptor and WebMediaStreamComponent shims
- https://bugs.webkit.org/show_bug.cgi?id=109296
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.cpp:
- (MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler):
- * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.h:
- (MockWebRTCDTMFSenderHandler):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::createDTMFSender):
-
-2013-02-08 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Update my entries in the watchlist
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-08 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] copy normalizeLayoutTestURL code to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=109269
-
- Reviewed by Kent Tamura.
-
- The method doesn't have any external dependencies, so there's no reason
- it should be on the delegate. It's still required by TestShell, however,
- by making a copy, we can avoid implementing this in content shell.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.cpp:
- (WebTestRunner::WebPermissions::allowImage):
- (WebTestRunner::WebPermissions::allowScriptFromSource):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::windowCount):
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-08 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL] Make the Performance bot also build WebKit.
- https://bugs.webkit.org/show_bug.cgi?id=109273
-
- Reviewed by Philippe Normand.
-
- There has not been much benefit in fetching binaries compiled by
- another bot; it makes the build bot take 6 to 7 minutes to upload
- the binaries to build.webkit.org, we need to manually override
- LD_LIBRARY_PATH to find the compiled libraries and still have
- other path-related problems.
-
- Since we have enough horsepower in the perf bot, let's experiment
- with building WebKit there instead.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-02-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] turn TestRunner library into a component build
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Reviewed by Adam Barth.
-
- To achieve this, we need to drop all dependencies on WTF.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (WebTestRunner::MockGrammarCheck::checkGrammarOfString):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (WebTestRunner):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::spellCheckWord):
- (WebTestRunner::MockSpellCheck::initializeIfNeeded):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (isASCIIAlpha):
- (isNotASCIIAlpha):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::deliverWebIntent):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
-
-2013-02-07 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed followup to r142232.
-
- Work around a bug in jhbuild that was incorrectly composing the source
- package URL by adjusting slightly the repository and module paths.
-
- * gtk/jhbuild.modules:
-
-2013-02-07 Zan Dobersek <zdobersek@igalia.com>
-
- Use a mirror for the sourceware.org repo used in jhbuild
-
- Unreviewed.
-
- The ftp://sourceware.org site is down, causing errors when running jhbuild
- and subsequently failing complete builds on the builders. Use the mirrors.kernel.org
- mirror to get sources for the desired libffi dependency.
-
- * gtk/jhbuild.modules:
-
-2013-02-07 David Farler <dfarler@apple.com>
-
- Makefiles should work for arbitrary SDKs and architectures on Apple ports
- https://bugs.webkit.org/show_bug.cgi?id=107863
-
- Reviewed by Mark Rowe.
-
- * DumpRenderTree/Makefile: SDKROOT=iphone* => -target All-iOS
- * Makefile: Only build some projects for iOS
-
-2013-02-07 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Another temporary EWS bot fix. It'll totally work this time.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-02-07 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Fix syntax error in runtests.py.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-02-07 Roger Fong <roger_fong@apple.com>
-
- Temporary fix for Win EWS bots.
- Don't build DRT since it has already been built in the build step.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-02-07 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Cleanup command-line defines
- https://bugs.webkit.org/show_bug.cgi?id=109213
-
- Reviewed by Xan Lopez.
-
- * TestWebKitAPI/config.h: Include the autotoolsconfig.h header to pick
- up defines from autoconf.
-
-2013-02-07 Ryosuke Niwa <rniwa@webkit.org>
-
- git.svn_revision doesn't fetch the same revision as svn.svn_revision
- https://bugs.webkit.org/show_bug.cgi?id=108684
-
- Reviewed by Dirk Pranke.
-
- Always call git log on the checkout root.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.svn_revision):
-
-2013-02-07 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Patch for testing Win EWS bots.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-02-07 Gavin Peters <gavinp@chromium.org>
-
- Unreviewed, rolling out r142165.
- http://trac.webkit.org/changeset/142165
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Broke linux_aura builds.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- (WebTaskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (append):
- (isNotASCIIAlpha):
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTaskList::WebTaskList):
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Removed.
-
-2013-02-07 Benjamin Poulain <bpoulain@apple.com>
-
- Move pauseAnimation/pauseTransition from TestRunner to Internals
- https://bugs.webkit.org/show_bug.cgi?id=109107
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
-
-2013-02-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] turn TestRunner library into a component build
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Reviewed by Adam Barth.
-
- To achieve this, we need to drop all dependencies on WTF.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (WebTestRunner::MockGrammarCheck::checkGrammarOfString):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (WebTestRunner):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::spellCheckWord):
- (WebTestRunner::MockSpellCheck::initializeIfNeeded):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (isASCIIAlpha):
- (isNotASCIIAlpha):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::deliverWebIntent):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
-
-2013-02-07 Eunmi Lee <eunmi15.lee@samsung.com>
-
- Do not check enum's casing for WebKit2 C API.
- https://bugs.webkit.org/show_bug.cgi?id=109128
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add "-readability/enum_casing" for WebKit2 C APIs because we use word
- which starts with non-capital letter 'k' for types of enums.
-
- * Scripts/webkitpy/style/checker.py:
-
-2013-02-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed warning fix.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (BuildAndTestFactory.__init__):
- (DownloadAndPerfTestWebKit2Factory.__init__):
-
-2013-02-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed typo fix after r142121.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2013-02-07 Vivek Galatage <vivek.vg@samsung.com>
-
- [Qt] QtTestBrowser should provide option to enable/disable Javascript
- https://bugs.webkit.org/show_bug.cgi?id=107461
-
- Reviewed by Jocelyn Turcotte.
-
- Option to enable/disable Javascript would be handy option to test
- certain functionalities of web pages with/without Javascript.
-
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleJavaScriptEnabled):
- * QtTestBrowser/launcherwindow.h:
- (LauncherWindow):
-
-2013-02-07 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL] Add a WebKit2 Performance bot.
- https://bugs.webkit.org/show_bug.cgi?id=109188
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Add the
- efl-linux-perf-1 slave (a 64-bit Release WK2 Perf bot), and make
- the "EFL Linux 64-bit Release" bot trigger it.
-
-2013-02-07 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] CHHW - Characters that are using 32 bits encoding get trunked to 16bits
- https://bugs.webkit.org/show_bug.cgi?id=109126
- PR 292540
-
- Reviewed by Yong Li.
-
- Change char code to 4 bytes.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (keyDownCallback):
-
-2013-02-07 Gavin Peters <gavinp@chromium.org>
-
- Unreviewed, rolling out r142090.
- http://trac.webkit.org/changeset/142090
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- lots of selection expectations failures
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- (WebTaskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (append):
- (isNotASCIIAlpha):
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTaskList::WebTaskList):
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Removed.
-
-2013-02-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] turn TestRunner library into a component build
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Reviewed by Adam Barth.
-
- To achieve this, we need to drop all dependencies on WTF.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (WebTestRunner::MockGrammarCheck::checkGrammarOfString):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (WebTestRunner):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::spellCheckWord):
- (WebTestRunner::MockSpellCheck::initializeIfNeeded):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (isASCIIAlpha):
- (isNotASCIIAlpha):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::deliverWebIntent):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
-
-2013-02-07 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Use GNU ar's thin archive format for intermediate static libs
- https://bugs.webkit.org/show_bug.cgi?id=109052
-
- Reviewed by Jocelyn Turcotte.
-
- With debug builds we exceed the 4GiB limit of GNU ar when creating the WebCore
- intermediate static library which results in build failure even with a x86_64
- toolchain (http://sourceware.org/bugzilla/show_bug.cgi?id=14625).
-
- When using a GNU toolchain we can use the thin archive format for these static
- libraries which also has the benefit of not copying the object files, thus
- drastically reducing disk usage and overall compile time.
-
- Currently qmake does not support GNU ar's thin archive format so for
- now we need to do the magic in the build system as a stopgap solution.
-
- * qmake/mkspecs/features/configure.prf:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2013-02-05 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Compile WTF tests of TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=108935
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add initial stubs and files for building at least the WTF tests.
- The WK2 tests need more platform code, in particular PlatformWebView
- and injected bundle support.
-
- * TestWebKitAPI/TestWebKitAPI.pri: Added.
- * TestWebKitAPI/TestWebKitAPI.pro: Added.
- * TestWebKitAPI/Tests/WTF/WTF.pro: Added.
- * TestWebKitAPI/qt/InjectedBundleControllerQt.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::InjectedBundleController::platformInitialize):
- * TestWebKitAPI/qt/PlatformUtilitiesQt.cpp: Added.
- (Util):
- (TestWebKitAPI::Util::run):
- (TestWebKitAPI::Util::sleep):
- (TestWebKitAPI::Util::createInjectedBundlePath):
- (TestWebKitAPI::Util::createURLForResource):
- (TestWebKitAPI::Util::URLForNonExistentResource):
- * TestWebKitAPI/qt/main.cpp: Added.
- (main):
- * Tools.pro:
- * qmake/mkspecs/features/default_post.prf:
-
-2013-02-06 Roger Fong <roger_fong@apple.com>
-
- VS2010 WinLauncher project, property sheets and resources.
- https://bugs.webkit.org/show_bug.cgi?id=107037.
-
- Reviewed by Brent Fulgham.
-
- * WinLauncher/WinLauncher.vcxproj: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.ico: Copied from WinLauncher/WinLauncher.ico.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.rc: Copied from WinLauncher/WinLauncherLauncher.rc.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.user: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc: Copied from WinLauncher/WinLauncher.rc.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.user: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd: Copied from WinLauncher/WinLauncherPostBuild.cmd.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd: Copied from WinLauncher/WinLauncherPreBuild.cmd.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h: Copied from WinLauncher/resource.h.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props: Added.
- * WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h: Copied from WinLauncher/WinLauncherLauncherResource.h.
- * WinLauncher/WinLauncher.vcxproj/small.ico: Copied from WinLauncher/small.ico.
-
-2013-02-06 Terry Anderson <tdanderson@chromium.org>
-
- Add support for gesture scroll events that do not propagate to enclosing scrollables
- https://bugs.webkit.org/show_bug.cgi?id=108849
-
- Reviewed by Antonio Gomes.
-
- Modify chromium's DRT EventSender to support the new event type
- GestureScrollUpdateWithoutPropagation.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::gestureScrollUpdateWithoutPropagation):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::handleInputEvent):
-
-2013-02-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142032.
- http://trac.webkit.org/changeset/142032
- https://bugs.webkit.org/show_bug.cgi?id=109095
-
- component build still broken (Requested by jochen__ on
- #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- (WebTaskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (append):
- (isNotASCIIAlpha):
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTaskList::WebTaskList):
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Removed.
-
-2013-02-06 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] turn TestRunner library into a component build
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Reviewed by Adam Barth.
-
- To achieve this, we need to drop all dependencies on WTF.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (WebTestRunner::MockGrammarCheck::checkGrammarOfString):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (WebTestRunner):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::spellCheckWord):
- (WebTestRunner::MockSpellCheck::initializeIfNeeded):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (isASCIIAlpha):
- (isNotASCIIAlpha):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::deliverWebIntent):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
-
-2013-02-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r142025.
- http://trac.webkit.org/changeset/142025
- https://bugs.webkit.org/show_bug.cgi?id=109091
-
- broke the build (Requested by tdanderson on #webkit).
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
-
-2013-02-06 Terry Anderson <tdanderson@chromium.org>
-
- Add support for gesture scroll events that do not propagate to enclosing scrollables
- https://bugs.webkit.org/show_bug.cgi?id=108849
-
- Reviewed by Antonio Gomes.
-
- Modify chromium's DRT EventSender to support the new event type
- GestureScrollUpdateWithoutPropagation.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::gestureScrollUpdateWithoutPropagation):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
-
-2013-02-06 Zan Dobersek <zdobersek@igalia.com>
-
- [TestResultServer] Adjust the name of the GTK 64-bit debug builder
- https://bugs.webkit.org/show_bug.cgi?id=109016
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.jsonp: The GTK 64-bit debug
- builder was adjusted to build WebKit1 only, with the name changed accordingly.
- Reflect that change here as well.
-
-2013-02-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r141991.
- http://trac.webkit.org/changeset/141991
- https://bugs.webkit.org/show_bug.cgi?id=109047
-
- Fails to compile on all Chromium platforms (Requested by
- schenney on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- (WebTaskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (append):
- (isNotASCIIAlpha):
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTaskList::WebTaskList):
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Removed.
-
-2013-02-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r141995.
- http://trac.webkit.org/changeset/141995
- https://bugs.webkit.org/show_bug.cgi?id=109046
-
- May allow me to roll out the real problem (Requested by
- schenney on #webkit).
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::sendWebIntentResponse):
- (WebTestRunner::TestRunner::deliverWebIntent):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
-
-2013-02-06 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] fix android build which doesn't support intents
-
- Unreviewed build fix.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::sendWebIntentResponse):
- (WebTestRunner::TestRunner::deliverWebIntent):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
-
-2013-02-06 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] turn TestRunner library into a component build
- https://bugs.webkit.org/show_bug.cgi?id=108466
-
- Reviewed by Adam Barth.
-
- To achieve this, we need to drop all dependencies on WTF.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElementList::getOrCreate):
- (WebTestRunner::AccessibilityUIElementList::createRoot):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElementList):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner::CppBoundClass::~CppBoundClass):
- (WebTestRunner::CppBoundClass::invoke):
- (WebTestRunner::CppBoundClass::getProperty):
- (WebTestRunner::CppBoundClass::setProperty):
- (WebTestRunner::CppBoundClass::bindCallback):
- (WebTestRunner::CppBoundClass::bindGetterCallback):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::getAsCppVariant):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- (CppBoundClass):
- (WebTestRunner::CppBoundClass::bindProperty):
- (WebTestRunner::CppBoundClass::bindFallbackCallback):
- (WebTestRunner::CppBoundClass::bindFallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner::CppVariant::toString):
- (WebTestRunner::CppVariant::toInt32):
- (WebTestRunner::CppVariant::toDouble):
- (WebTestRunner::CppVariant::toBoolean):
- (WebTestRunner::CppVariant::toStringVector):
- (WebTestRunner::CppVariant::invoke):
- (WebTestRunner::CppVariant::invokeDefault):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (CppVariant):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::reset):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::dispatchMessage):
- (WebTestRunner::EventSender::leapForward):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::makeMenuItemStringsFor):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::addTouchPoint):
- (WebTestRunner::EventSender::releaseTouchPoint):
- (WebTestRunner::EventSender::updateTouchPoint):
- (WebTestRunner::EventSender::cancelTouchPoint):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp:
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- (WebTestRunner::MockGrammarCheck::checkGrammarOfString):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h:
- (WebTestRunner):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (WebTestRunner::MockSpellCheck::spellCheckWord):
- (WebTestRunner::MockSpellCheck::initializeIfNeeded):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp:
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestCommon.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (isASCIIAlpha):
- (isNotASCIIAlpha):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp:
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h:
- (TestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::deliverWebIntent):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner::TextInputController::markedRange):
- (WebTestRunner::TextInputController::selectedRange):
- (WebTestRunner::TextInputController::firstRectForCharacterRange):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp:
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- * DumpRenderTree/chromium/TestRunner/src/config.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
-
-2013-02-06 Mike West <mkwst@chromium.org>
-
- Add an ENABLE_NOSNIFF feature flag.
- https://bugs.webkit.org/show_bug.cgi?id=109029
-
- Reviewed by Jochen Eisinger.
-
- This new flag will control the behavior of 'X-Content-Type-Options: nosniff'
- when processing script and other resource types.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-02-06 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Implement DTMF support in RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=106782
-
- Reviewed by Adam Barth.
-
- Adding Mock functionality for the DTMFSender.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.cpp: Added.
- (DTMFSenderToneTask):
- (DTMFSenderToneTask::DTMFSenderToneTask):
- (MockWebRTCDTMFSenderHandler::MockWebRTCDTMFSenderHandler):
- (MockWebRTCDTMFSenderHandler::setClient):
- (MockWebRTCDTMFSenderHandler::currentToneBuffer):
- (MockWebRTCDTMFSenderHandler::canInsertDTMF):
- (MockWebRTCDTMFSenderHandler::insertDTMF):
- * DumpRenderTree/chromium/MockWebRTCDTMFSenderHandler.h: Copied from Source/Platform/chromium/public/WebMediaStreamTrack.h.
- (MockWebRTCDTMFSenderHandler):
- (MockWebRTCDTMFSenderHandler::taskList):
- (MockWebRTCDTMFSenderHandler::clearToneBuffer):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::createDTMFSender):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2013-02-06 Christophe Dumez <ch.dumez@sisa.samsung.com>
-
- Unreviewed. Update my email address in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-05 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [CMake] Don't warn unused cmake variables which aren't used by cmake ports
- https://bugs.webkit.org/show_bug.cgi?id=108761
-
- Reviewed by Laszlo Gombos.
-
- Ignore unused macro variables which aren't used by cmake ports.
-
- * Scripts/webkitdirs.pm:
- (generateBuildSystemFromCMakeProject):
-
-2013-02-05 Julie Parent <jparent@chromium.org>
-
- Add cc_unittests to the dashboards
- https://bugs.webkit.org/show_bug.cgi?id=108878
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2013-02-05 Adam Barth <abarth@webkit.org>
-
- DumpRenderTree should be able to enable the threaded parser
- https://bugs.webkit.org/show_bug.cgi?id=108970
-
- Reviewed by Eric Seidel.
-
- We can now enable the parser at runtime using --enable-threaded-html-parser.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setThreadedHTMLParser):
- (TestShell):
-
-2013-02-05 Benjamin Poulain <bpoulain@apple.com>
-
- Make StringBuilder::toAtomicString() consistent with StringBuilder::toString() for strings of null length
- https://bugs.webkit.org/show_bug.cgi?id=108894
-
- Reviewed by Andreas Kling.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- Extend the tests to check toAtomicString() on an empty builder.
-
-2013-02-05 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove methods from the WebTestRunner interface that are only used by WebTestProxyBase
- https://bugs.webkit.org/show_bug.cgi?id=108926
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebKit):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-02-05 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove unneccessary 0 checks for testRunner now that the TestRunner library owns it
- https://bugs.webkit.org/show_bug.cgi?id=108923
-
- Reviewed by Kentaro Hara.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::shouldBeginEditing):
- (WebTestRunner::WebTestProxyBase::shouldEndEditing):
- (WebTestRunner::WebTestProxyBase::shouldInsertNode):
- (WebTestRunner::WebTestProxyBase::shouldInsertText):
- (WebTestRunner::WebTestProxyBase::shouldChangeSelectedRange):
- (WebTestRunner::WebTestProxyBase::shouldDeleteRange):
- (WebTestRunner::WebTestProxyBase::shouldApplyStyle):
- (WebTestRunner::WebTestProxyBase::didBeginEditing):
- (WebTestRunner::WebTestProxyBase::didChangeSelection):
- (WebTestRunner::WebTestProxyBase::didChangeContents):
- (WebTestRunner::WebTestProxyBase::didEndEditing):
- (WebTestRunner::WebTestProxyBase::createView):
- (WebTestRunner::WebTestProxyBase::setStatusText):
- (WebTestRunner::WebTestProxyBase::didStopLoading):
- (WebTestRunner::WebTestProxyBase::isSmartInsertDeleteEnabled):
- (WebTestRunner::WebTestProxyBase::isSelectTrailingWhitespaceEnabled):
- (WebTestRunner::WebTestProxyBase::willPerformClientRedirect):
- (WebTestRunner::WebTestProxyBase::didCancelClientRedirect):
- (WebTestRunner::WebTestProxyBase::didStartProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didReceiveServerRedirectForProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didFailProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didCommitProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didReceiveTitle):
- (WebTestRunner::WebTestProxyBase::didFinishDocumentLoad):
- (WebTestRunner::WebTestProxyBase::didHandleOnloadEvents):
- (WebTestRunner::WebTestProxyBase::didFailLoad):
- (WebTestRunner::WebTestProxyBase::didFinishLoad):
- (WebTestRunner::WebTestProxyBase::didChangeLocationWithinPage):
- (WebTestRunner::WebTestProxyBase::didDisplayInsecureContent):
- (WebTestRunner::WebTestProxyBase::didRunInsecureContent):
- (WebTestRunner::WebTestProxyBase::didDetectXSS):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- (WebTestRunner::WebTestProxyBase::willRequestResource):
- (WebTestRunner::WebTestProxyBase::didCreateDataSource):
- (WebTestRunner::WebTestProxyBase::willSendRequest):
- (WebTestRunner::WebTestProxyBase::didReceiveResponse):
- (WebTestRunner::WebTestProxyBase::didFinishResourceLoad):
- (WebTestRunner::WebTestProxyBase::didFailResourceLoad):
- (WebTestRunner::WebTestProxyBase::runModalBeforeUnloadDialog):
- (WebTestRunner::WebTestProxyBase::locationChangeDone):
- (WebTestRunner::WebTestProxyBase::decidePolicyForNavigation):
- (WebTestRunner::WebTestProxyBase::willCheckAndDispatchMessageEvent):
-
-2013-02-04 Alan Cutter <alancutter@chromium.org>
-
- EWS bots don't remove untracked files after processing a patch
- https://bugs.webkit.org/show_bug.cgi?id=108891
-
- Reviewed by Adam Barth.
-
- Added option to remove untracked files in the bot's repo.
-
- * EWSTools/start-queue.sh:
-
-2013-02-04 Benjamin Poulain <bpoulain@apple.com>
-
- Kill suspendAnimation(), resumeAnimation() and numberOfActiveAnimations() from DRT/WTR; use Internals
- https://bugs.webkit.org/show_bug.cgi?id=108741
-
- Reviewed by Tony Chang.
-
- Remove all support for suspendAnimation(), resumeAnimation() and numberOfActiveAnimations().
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-02-04 Nico Weber <thakis@chromium.org>
-
- [chromium] Try to get WebKit building with enable_web_intents set to 0 on Windows too.
- https://bugs.webkit.org/show_bug.cgi?id=108887
-
- Reviewed by Kentaro Hara.
-
- This is a follow-up to http://trac.webkit.org/changeset/141614. The
- Mac and Linux linkers didn't complain about the reference to
- WebIntent in that function for some reason (probably because it's
- a dead function that's stripped).
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-02-04 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: Make builder a real dashboardSpecificParameter.
- https://bugs.webkit.org/show_bug.cgi?id=108706
-
- Reviewed by Dirk Pranke.
-
- Add builder to g_defaultDashboardSpecificParameter maps for the
- dashboards where it is used (flakiness, timeline, treemap).
- Default it to null, and then update reads of it to check the
- builder group's default if one is not set, rather than trying to
- set and track this everywhere.
- This allows us to remove tons of special-casing of builder parsing,
- including where we used to add it to the query string even when the
- user did not specify it.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- (handleQueryParameterChange):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2013-02-04 Julie Parent <jparent@chromium.org>
-
- Setting tests on flakiness dashboard should invalidate builder.
- https://bugs.webkit.org/show_bug.cgi?id=108521
-
- Reviewed by Dirk Pranke.
-
- When you move into a cross builder view, builder should not still be
- set. Currently, it is deleted from the internal state, but still shows
- up in the url, causing the current state and the hash to not match.
-
- To see this in action, load the flakiness dashboard, select a builder,
- and then click on an individual test, to get into individual test view.
- The url will still have the builder you selected listed, even though it
- is cleared in the UI.
-
- The fix is to consider 'tests' to be a parameter that invalidates builder.
-
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
-
-2013-02-04 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [EFL][WK2] Introduce a WebView class as counterpart for WKViewRef
- https://bugs.webkit.org/show_bug.cgi?id=107931
-
- Reviewed by Anders Carlsson.
-
- Change platformView to be a WKView and use WKViewGetEvasObject
- for the places where an Evas_Object is needed.
-
- Instead of extracting the Ecore_Evas* from the m_view we use
- the m_window instead, which actually holds the it.
-
- * TestWebKitAPI/PlatformWebView.h:
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI::PlatformWebView::resizeTo):
- (TestWebKitAPI::PlatformWebView::page):
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
- (TestWebKitAPI::PlatformWebView::simulateMouseMove):
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- * WebKitTestRunner/PlatformWebView.h:
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::EventSenderProxy::sendTouchEvent):
- (WTR::EventSenderProxy::setTouchModifier):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::~PlatformWebView):
- (WTR::PlatformWebView::resizeTo):
- (WTR::PlatformWebView::page):
- (WTR::PlatformWebView::focus):
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2013-02-04 Timothy Loh <timloh@chromium.com>
-
- Don't update author info in PrepareChangeLog and allow users to skip the PrepareChangeLog step entirely.
- https://bugs.webkit.org/show_bug.cgi?id=108788
-
- Reviewed by Ryosuke Niwa.
-
- As per discussion in Bug 74358, it's probably preferable to remove the
- behaviour of updating the author details in a ChangeLog entry. We also
- want to be able to skip preparing change logs (e.g. rebaselining many
- tests), so a --no-prepare-changelogs option is added to webkit-patch.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry._parse_entry):
- (ChangeLogEntry.date): Added
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_parse_log_entries_from_changelog):
- * Scripts/webkitpy/tool/commands/commandtest.py:
- (CommandsTest.assert_execute_outputs):
- * Scripts/webkitpy/tool/steps/options.py:
- (Options): Added --no-prepare-changelogs
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog.options):
- (PrepareChangeLog._merge_entries): date_line() gets the entire line, including
- the author's name and email, but we only want to replace the date.
- (PrepareChangeLog.run):
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest.test_resolve_existing_entry): Added tests for changed
- authors. Removed unneeded variable.
-
-2013-02-04 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Remove WebEventSender and WebAccessibilityController from public TestRunner API
- https://bugs.webkit.org/show_bug.cgi?id=108467
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebAccessibilityController.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebEventSender.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestRunner):
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner):
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- (WebTestRunner::TestInterfaces::setWebView):
- (WebTestRunner::TestInterfaces::webView):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebAccessibilityController.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebEventSender.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::setWebView):
- (WebTestRunner::WebTestInterfaces::setDelegate):
- (WebTestRunner::WebTestInterfaces::bindTo):
- (WebTestRunner::WebTestInterfaces::resetAll):
- (WebTestRunner::WebTestInterfaces::setTestIsRunning):
- (WebTestRunner::WebTestInterfaces::webView):
- (WebTestRunner::WebTestInterfaces::testRunner):
- (WebTestRunner::WebTestInterfaces::testInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::setInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebTestRunner.cpp: Removed.
- * DumpRenderTree/chromium/TestShell.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-02-04 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
-
- [EFL] Add "full screen" parameter to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=108850
-
- Reviewed by Antonio Gomes.
-
- Implements the {-F,--full-screen}={true,false} parameter to WebKit EFL's
- MiniBrowser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
- Added '-F/--full-screen' parameter functionality.
-
-2013-02-04 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove WebTestPlugin from the public TestRunner API
- https://bugs.webkit.org/show_bug.cgi?id=108467
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestPlugin.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::createPlugin):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp.
- (WebTestRunner::TestPlugin::TestPlugin):
- (WebTestRunner):
- (WebTestRunner::TestPlugin::~TestPlugin):
- (WebTestRunner::TestPlugin::initialize):
- (WebTestRunner::TestPlugin::destroy):
- (WebTestRunner::TestPlugin::updateGeometry):
- (WebTestRunner::TestPlugin::parsePrimitive):
- (WebTestRunner::TestPlugin::parseColor):
- (WebTestRunner::TestPlugin::parseOpacity):
- (WebTestRunner::TestPlugin::parseBoolean):
- (WebTestRunner::TestPlugin::initScene):
- (WebTestRunner::TestPlugin::drawScene):
- (WebTestRunner::TestPlugin::destroyScene):
- (WebTestRunner::TestPlugin::initProgram):
- (WebTestRunner::TestPlugin::initPrimitive):
- (WebTestRunner::TestPlugin::drawPrimitive):
- (WebTestRunner::TestPlugin::loadShader):
- (WebTestRunner::TestPlugin::loadProgram):
- (WebTestRunner::TestPlugin::handleInputEvent):
- (WebTestRunner::TestPlugin::handleDragStatusUpdate):
- (WebTestRunner::TestPlugin::create):
- (WebTestRunner::TestPlugin::mimeType):
- * DumpRenderTree/chromium/TestRunner/src/TestPlugin.h: Added.
- (WebTestRunner):
- (TestPlugin):
- (WebTestRunner::TestPlugin::scriptableObject):
- (WebTestRunner::TestPlugin::canProcessDrag):
- (WebTestRunner::TestPlugin::paint):
- (WebTestRunner::TestPlugin::updateFocus):
- (WebTestRunner::TestPlugin::updateVisibility):
- (WebTestRunner::TestPlugin::acceptsInputEvents):
- (WebTestRunner::TestPlugin::didReceiveResponse):
- (WebTestRunner::TestPlugin::didReceiveData):
- (WebTestRunner::TestPlugin::didFinishLoading):
- (WebTestRunner::TestPlugin::didFailLoading):
- (WebTestRunner::TestPlugin::didFinishLoadingFrameRequest):
- (WebTestRunner::TestPlugin::didFailLoadingFrameRequest):
- (WebTestRunner::TestPlugin::isPlaceholder):
- (WebTestRunner::TestPlugin::prepareTexture):
- (WebTestRunner::TestPlugin::context):
- (Scene):
- (WebTestRunner::TestPlugin::Scene::Scene):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::createPlugin):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPlugin):
-
-2013-02-04 Gustavo Noronha Silva <gns@gnome.org>
-
- Add a new method for obtaining a build-type-dependent path,
- instead of modifying all call sites to pass it in.
-
- Reviewed by Martin Robinson.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): use the new method, which takes a tuple.
- (TestRunner._setup_testing_environment): ditto.
- * gtk/common.py:
- (get_build_path): accept a tuple that may include Release and
- Debug as build types, for searching.
- (build_path_for_build_types): new method that finds the path when
- it is dependent on the build type.
- (build_path): restore its original behaviour.
-
-2013-02-04 David Kilzer <ddkilzer@apple.com>
-
- Remove duplicate entry from DumpRenderTree Xcode project
-
- $ uniq Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj | diff -u - Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj | patch -p0 -R
- patching file Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- Remove duplicate.
-
-2013-02-04 David Kilzer <ddkilzer@apple.com>
-
- Sort TestWebKitAPI Xcode project file
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
-
-2013-02-03 Alan Cutter <alancutter@chromium.org>
-
- PatchLogs are not getting created on QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=108593
-
- Reviewed by Eric Seidel.
-
- Added missing "added" patch event to submit-to-ews handler.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/handlers/submittoews.py:
- (SubmitToEWS._add_attachment_to_ews_queues):
-
-2013-02-03 Douglas Stockwell <dstockwell@chromium.org>
-
- Unreviewed. Add dstockwell as a contributor in comitters.py and to the watchlist for animation
- https://bugs.webkit.org/show_bug.cgi?id=108777
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-02-03 Sam Weinig <sam@webkit.org>
-
- Fix failing test.
-
- * TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp:
- (TestWebKitAPI::didFinishLoadForFrame):
-
-2013-02-03 Timothy Loh <timloh@chromium.com>
-
- Make ChangeLogEntry detect annotations by prepare-ChangeLog (Added/Removed/Copied from/Renamed from) as clean.
- https://bugs.webkit.org/show_bug.cgi?id=108433
-
- Reviewed by Eric Seidel.
-
- PrepareChangeLog is supposed to update the file/function list if we
- haven't touched it, but the existing regex doesn't handle the
- annotations prepare-ChangeLog adds (e.g. "Added.")
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry.is_touched_files_text_clean):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_is_touched_files_text_clean):
-
-2013-02-02 Dean Jackson <dino@apple.com>
-
- Add Antoine Quint to the list of committers
- https://bugs.webkit.org/show_bug.cgi?id=108750
-
- No review necessary.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-02 Patrick Gansterer <paroga@webkit.org>
-
- [CMake] Adopt the WinCE port to new CMake
- https://bugs.webkit.org/show_bug.cgi?id=108754
-
- Reviewed by Laszlo Gombos.
-
- * WinCELauncher/CMakeLists.txt: Mark WinCELauncher
- as WIN32 target to use the correct entry point.
-
-2013-02-02 Alexey Proskuryakov <ap@apple.com>
-
- One is not allowed to use commit-queue to make oneself a committer.
-
- * Scripts/webkitpy/common/config/committers.py: Rolled out r141693.
- Also, changed e-mail order for Yongjun Zhang, so that Bugzilla autocomplete works.
-
-2013-02-02 Antoine Quint <graouts@apple.com>
-
- Add Antoine Quint to the list of committers
- https://bugs.webkit.org/show_bug.cgi?id=108750
-
- Reviewed by Dean Jackson.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-02-01 Adrian Perez de Castro <aperez@igalia.com>
-
- [GTK] Building fails in an armv5tel board
- https://bugs.webkit.org/show_bug.cgi?id=108083
-
- Reviewed by Martin Robinson.
-
- In some systems in which $architecture is filled-in from "uname -m"
- the value may not start with "arm-", but with "armvN", where "N" is
- an architecture version number. The regexp in isARM() is modified
- so it covers these kind of cases.
-
- * Scripts/webkitdirs.pm:
- (isARM):
-
-2013-02-01 Gregg Tavares <gman@google.com>
-
- Update LayoutTests scripts to skip webgl folder on ports
- https://bugs.webkit.org/show_bug.cgi?id=108705
-
- Reviewed by Dirk Pranke.
-
- I'm working on checking in the WebGL Conformance Tests
- as layout tests into LayoutTests/webgl. For ports
- that do not have WebGL enabled this changes will
- skip tests in the "webgl" folder.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._missing_symbol_to_skipped_tests):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_skipped_directories_for_symbols):
-
-2013-02-01 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Fix for webkitpy tests.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2013-02-01 Jer Noble <jer.noble@apple.com>
-
- LLDB: add synthetic provider for WTF::HashTable
- https://bugs.webkit.org/show_bug.cgi?id=108718
-
- Reviewed by Darin Adler.
-
- Add a synthetic provider which will emit the contents of a given
- WTF::HashTable. This allows clients using Xcode/lldb to enumerate
- the hash contents.
-
- * lldb/lldb_webkit.py:
- (__lldb_init_module):
- (__lldb_init_module.lldb_webkit):
- (WTFHashTable_SummaryProvider):
- (WTFVectorProvider.has_children):
- (WTFHashTableProvider):
- (WTFHashTableProvider.__init__):
- (WTFHashTableProvider.num_children):
- (WTFHashTableProvider.get_child_index):
- (WTFHashTableProvider.get_child_at_index):
- (WTFHashTableProvider.tableSize):
- (WTFHashTableProvider.keyCount):
- (WTFHashTableProvider.update):
- (WTFHashTableProvider.has_children):
-
-2013-02-01 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Fix webkitpy tests since a build_style is not specified in some cases.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-02-01 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Re-try enabling Win-EWS tests for the third time.
- https://bugs.webkit.org/show_bug.cgi?id=107968
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-01-31 Roger Fong <roger_fong@apple.com>
-
- Fix test scripts for EWS bots to get them running once and for all.
- https://bugs.webkit.org/show_bug.cgi?id=108422
-
- Reviewed by Timothy Horton.
-
- Disabling --quiet option on Windows for now because that fails when we try to use /dev/null.
- runtests.py was not passing in a configuration to run-webkit-tests which causes DRT to build in release by default.
- However, we build in Debug only on the EWS Windows bots, which caused the build to fail.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.options):
- (RunTests.run):
-
-2013-02-01 Nico Weber <thakis@chromium.org>
-
- [chromium] Build webkit with enable_web_intents set to 0.
- https://bugs.webkit.org/show_bug.cgi?id=108408
-
- Reviewed by Tony Chang.
-
- I'll then make chromium build fine with that, then switch
- enable_web_intents to 0, roll that into webkit, and then
- actually remove the code hidden behind this flag.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-02-01 Zan Dobersek <zdobersek@igalia.com>
-
- Set the GTK 64-bit Debug builder to build and test only WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=108648
-
- Reviewed by Philippe Normand.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json: Change the builder name, type and
- build directory to note that the builder builds and tests only the WebKit1 port on the GTK platform.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (CompileWebKit1Only): Add the new build class that builds only the WebKit1 port of the builder's platform.
- (BuildAndTestWebKit1OnlyFactory): Add the new factory that uses the CompileWebKit1Only build class
- for building and testing only WebKit1 on the builder's platform.
-
-2013-02-01 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move ownership of TestRunner object to TestInterfaces
- https://bugs.webkit.org/show_bug.cgi?id=108464
-
- Reviewed by Adam Barth.
-
- Before, TestShell owned the class. This also removes the last include
- from DumpRenderTree to TestRunner/src.
-
- This also deletes TestDelegate and uses WebTestDelegate everywhere
- instead.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebKit):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h:
- (WebTestRunner):
- (WebTestRunner::AccessibilityController::setDelegate):
- (AccessibilityController):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::makeMenuItemStringsFor):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebTestRunner):
- (WebTestRunner::EventSender::setDelegate):
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp:
- (WebTestRunner::GamepadController::setDelegate):
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.h:
- (WebTestRunner):
- (GamepadController):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner::TestInterfaces::TestInterfaces):
- (WebTestRunner::TestInterfaces::~TestInterfaces):
- (WebTestRunner::TestInterfaces::setWebView):
- (WebTestRunner::TestInterfaces::setDelegate):
- (WebTestRunner::TestInterfaces::bindTo):
- (WebTestRunner::TestInterfaces::resetAll):
- (WebTestRunner):
- (WebTestRunner::TestInterfaces::setTestIsRunning):
- (WebTestRunner::TestInterfaces::testRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebTestRunner):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebKit):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::Internal::testRunner):
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::setDelegate):
- (WebTestRunner::WebTestInterfaces::Internal::setTestIsRunning):
- * DumpRenderTree/chromium/TestRunner/src/WebTestRunner.cpp: Added.
- (WebTestRunner):
- (WebTestRunner::WebTestRunner::WebTestRunner):
- (WebTestRunner::WebTestRunner::shouldDumpEditingCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpAsText):
- (WebTestRunner::WebTestRunner::setShouldDumpAsText):
- (WebTestRunner::WebTestRunner::shouldGeneratePixelResults):
- (WebTestRunner::WebTestRunner::setShouldGeneratePixelResults):
- (WebTestRunner::WebTestRunner::shouldDumpChildFrameScrollPositions):
- (WebTestRunner::WebTestRunner::shouldDumpChildFramesAsText):
- (WebTestRunner::WebTestRunner::shouldDumpAsAudio):
- (WebTestRunner::WebTestRunner::audioData):
- (WebTestRunner::WebTestRunner::shouldDumpFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::setShouldDumpFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpUserGestureInFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::stopProvisionalFrameLoads):
- (WebTestRunner::WebTestRunner::shouldDumpTitleChanges):
- (WebTestRunner::WebTestRunner::shouldDumpCreateView):
- (WebTestRunner::WebTestRunner::canOpenWindows):
- (WebTestRunner::WebTestRunner::shouldDumpResourceLoadCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpResourceRequestCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpResourceResponseMIMETypes):
- (WebTestRunner::WebTestRunner::webPermissions):
- (WebTestRunner::WebTestRunner::shouldDumpStatusCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpProgressFinishedCallback):
- (WebTestRunner::WebTestRunner::shouldDumpBackForwardList):
- (WebTestRunner::WebTestRunner::deferMainResourceDataLoad):
- (WebTestRunner::WebTestRunner::shouldDumpSelectionRect):
- (WebTestRunner::WebTestRunner::testRepaint):
- (WebTestRunner::WebTestRunner::sweepHorizontally):
- (WebTestRunner::WebTestRunner::isPrinting):
- (WebTestRunner::WebTestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- (WebTestRunner::WebTestRunner::setTitleTextDirection):
- (WebTestRunner::WebTestRunner::httpHeadersToClear):
- (WebTestRunner::WebTestRunner::shouldBlockRedirects):
- (WebTestRunner::WebTestRunner::willSendRequestShouldReturnNull):
- (WebTestRunner::WebTestRunner::setTopLoadingFrame):
- (WebTestRunner::WebTestRunner::topLoadingFrame):
- (WebTestRunner::WebTestRunner::policyDelegateDone):
- (WebTestRunner::WebTestRunner::policyDelegateEnabled):
- (WebTestRunner::WebTestRunner::policyDelegateIsPermissive):
- (WebTestRunner::WebTestRunner::policyDelegateShouldNotifyDone):
- (WebTestRunner::WebTestRunner::shouldInterceptPostMessage):
- (WebTestRunner::WebTestRunner::isSmartInsertDeleteEnabled):
- (WebTestRunner::WebTestRunner::isSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::runFileTest):
- (TestShell::resetTestController):
- (TestShell::dump):
- (TestShell::bindJSObjectsToWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::testRunner):
- (TestShell):
-
-2013-02-01 Alan Cutter <alancutter@chromium.org>
-
- PatchLog process durations are increasing linearly with time (faulty data logging)
- https://bugs.webkit.org/show_bug.cgi?id=108621
-
- Reviewed by Eric Seidel.
-
- Added a check to prevent a stop event from happening to the same patch multiple times.
-
- * QueueStatusServer/loggers/recordpatchevent.py:
- (RecordPatchEvent.stopped):
-
-2013-02-01 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WK2] MiniBrowser fullscreen signals support
- https://bugs.webkit.org/show_bug.cgi?id=108005
-
- Reviewed by Carlos Garcia Campos.
-
- Shows a label for 2 seconds using overlay (if GTK >= 3.2.0) and hides
- the toolbar when entering fullscreen. When leaving fullscreen the
- label is hidden (if it's not hidden yet) and the toolbar is shown again.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (_BrowserWindow):
- (fullScreenMessageTimeoutCallback):
- (webViewEnterFullScreen):
- (webViewLeaveFullScreen):
- (browserWindowFinalize):
- (browserWindowConstructed):
-
-2013-02-01 Alexis Menard <alexis@webkit.org>
-
- Enable unprefixed CSS transitions by default.
- https://bugs.webkit.org/show_bug.cgi?id=108216
-
- Reviewed by Dean Jackson.
-
- Rename the flag CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED
- to CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED which will be used later to
- guard the unprefixing work for CSS Transforms and animations.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-01-31 David Farler <dfarler@apple.com>
-
- Provide a sensible default architecture when building on iOS SDKs
- https://bugs.webkit.org/show_bug.cgi?id=108395
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (determineArchitecture): Anchor SDK regex matches at the beginning.
-
-2013-01-31 Ryosuke Niwa <rniwa@webkit.org>
-
- buildbot should not rely on webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=107379
-
- Reviewed by Eric Seidel.
-
- Move all Python files used in buildbot configuration into BuildSlaveSupport directory.
- Once this patch is landed, we can stop restarting the master on webkitpy changes.
-
- * BuildSlaveSupport/build.webkit.org-config/committer_auth.py:
- * BuildSlaveSupport/build.webkit.org-config/htdigestparser.py: Copied from Tools/Scripts/webkitpy/common/net/htdigestparser.py.
- * BuildSlaveSupport/build.webkit.org-config/htdigestparser_unittest.py: Copied from Tools/Scripts/webkitpy/common/net/htdigestparser_unittest.py.
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- * BuildSlaveSupport/build.webkit.org-config/wkbuild.py: Copied from Tools/Scripts/webkitpy/common/config/build.py.
- * BuildSlaveSupport/build.webkit.org-config/wkbuild_unittest.py: Copied from Tools/Scripts/webkitpy/common/config/build_unittest.py.
- (ShouldBuildTest.test_should_build):
- * Scripts/webkitpy/common/config/build.py: Removed.
- * Scripts/webkitpy/common/config/build_unittest.py: Removed.
- * Scripts/webkitpy/common/net/htdigestparser.py: Removed.
- * Scripts/webkitpy/common/net/htdigestparser_unittest.py: Removed.
-
-2013-01-31 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r141349.
- http://trac.webkit.org/changeset/141349
- https://bugs.webkit.org/show_bug.cgi?id=108422
-
- "yet another windows ews fix needed" (Requested by lforschler
- on #webkit).
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-01-31 Rouslan Solomakhin <rouslan@chromium.org>
-
- [Chromium] Suggest 'uppercase' for multi-word misspelling 'upper case'
- https://bugs.webkit.org/show_bug.cgi?id=108509
-
- Reviewed by Tony Chang.
-
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (append): Added utility function to append WebString to WebVector.
- (MockSpellCheck::fillSuggestionList): Suggest 'uppercase' for misspelling 'upper case'.
-
-2013-01-31 David Farler <dfarler@apple.com>
-
- Provide a sensible default architecture when building on iOS SDKs
- https://bugs.webkit.org/show_bug.cgi?id=108395
-
- Reviewed by Joseph Pecoraro.
-
- * Scripts/webkitdirs.pm:
- (determineArchitecture):
- Check for iphoneos and iphonesimulator SDKs for a default arch.
- (determineXcodeSDK): Added.
- (xcodeSDK): Added.
- (XcodeOptions): Add ARCHS= if defined.
-
-2013-01-31 Christopher Cameron <ccameron@chromium.org>
-
- Fix rubber-band effect on non-scrollable pages
- https://bugs.webkit.org/show_bug.cgi?id=107611
-
- Add mouseWheelBegin function to EventSender to allow
- event-based rubber-banding tests.
-
- Reviewed by Antonio Gomes.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::mouseDragBegin):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
-
-2013-01-31 James Robinson <jamesr@chromium.org>
-
- [chromium] Notify the WebWidget when the WebViewHost is about to tear down compositing support
- https://bugs.webkit.org/show_bug.cgi?id=108518
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::shutdown):
-
-2013-01-31 Pratik Solanki <psolanki@apple.com>
-
- DumpRenderTree should put NSSound calls inside USE(APPKIT)
- https://bugs.webkit.org/show_bug.cgi?id=108499
-
- Reviewed by Andy Estes.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
-
-2013-01-30 Brian Weinstein <bweinstein@apple.com>
-
- Add a call to the page UI client to determine if a plug-in should load
- https://bugs.webkit.org/show_bug.cgi?id=108407
- <rdar://problem/13066332>
-
- Add entries for the new function in the necessary structs.
-
- Reviewed by Anders Carlsson.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController awakeFromNib]):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createOtherPage):
- (WTR::TestController::createWebViewWithOptions):
-
-2013-01-31 Florin Malita <fmalita@chromium.org>
-
- [Chromium] Unreviewed gardening.
-
- Win build fix after http://trac.webkit.org/changeset/141471.
-
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (MockSpellCheck::spellCheckWord):
-
-2013-01-31 Enrica Casucci <enrica@apple.com>
-
- WebKit2: provide new bundle APIs to allow bundle clients to be notified of pasteboard access.
- https://bugs.webkit.org/show_bug.cgi?id=108396.
- <rdar://problem/12920461>
-
- Reviewed by Alexey Proskuryakov.
-
- Adding new WebKit2 test with relevant bundle, to test the new APIs.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
- (TestWebKitAPI::setInjectedBundleClient):
- * TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp: Added.
- (PasteboardNotificationsTest):
- (TestWebKitAPI::willWriteToPasteboard):
- (TestWebKitAPI::getPasteboardDataForRange):
- (TestWebKitAPI::didWriteToPasteboard):
- (TestWebKitAPI::PasteboardNotificationsTest::PasteboardNotificationsTest):
- (TestWebKitAPI::PasteboardNotificationsTest::didCreatePage):
- * TestWebKitAPI/Tests/WebKit2/execCopy.html: Added.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: Updated to reflect
- changes in InjectedBundleEditorClient.
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2013-01-31 Rouslan Solomakhin <rouslan@chromium.org>
-
- [Chromium] Add two-word misspelling to mock spellchecker
- https://bugs.webkit.org/show_bug.cgi?id=108498
-
- Reviewed by Tony Chang.
-
- Some layout tests verify spellcheck behavior when multiple words are
- marked as a single misspelling. This change adds a two-word misspelling
- 'upper case' to the mock spellchecker used by layout tests.
-
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp:
- (MockSpellCheck::spellCheckWord): Modified to handle spaces in misspellings.
- (MockSpellCheck::initializeIfNeeded): Modified to use a vector instead of a hash table.
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
- (MockSpellCheck): Changed misspellings container from hash table to vector.
-
-2013-01-31 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Prospective build fix.
-
- Reviewed by Jocelyn Turcotte.
-
- Don't create .prl files for intermediate libs as their contents get
- injected within -Wl,-whole-archive -lFoo -wl,-no-whole-archive.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2013-01-31 Alan Cutter <alancutter@chromium.org>
-
- EWS graphs have unusual data for patch waiting times
- https://bugs.webkit.org/show_bug.cgi?id=108427
-
- Reviewed by Eric Seidel.
-
- The max_patches_waiting QueueLog property may have missed recording patches waiting in idle times when no events are fired to update it. I added a cron job to take care of this issue.
- The patch wait duration in PatchLogs was being incorrectly updated after a patch expired and was picked up again from the queue. That period should really count towards the processing time instead.
- Added a WarningLog to record if any erroneous situations occur due to invalid contents in the datastore. These basically highlight if any "impossible" execution paths get executed.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/cron.yaml:
- * QueueStatusServer/handlers/syncqueuelogs.py: Copied from Tools/QueueStatusServer/model/patchlog.py.
- (SyncQueueLogs):
- (SyncQueueLogs.get):
- * QueueStatusServer/loggers/recordpatchevent.py:
- (RecordPatchEvent.added):
- (RecordPatchEvent.retrying):
- (RecordPatchEvent.started):
- (RecordPatchEvent.stopped):
- (RecordPatchEvent.updated):
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/patchlog.py:
- (PatchLog.lookup):
- (PatchLog):
- (PatchLog.lookup_if_exists):
- (PatchLog.calculate_process_duration):
- (PatchLog._generate_key):
- * QueueStatusServer/model/queuelog.py:
- (QueueLog.update_max_patches_waiting):
- (QueueLog._get_or_create_txn):
- (QueueLog):
- (QueueLog._get_patches_waiting):
- * QueueStatusServer/model/warninglog.py: Copied from Tools/QueueStatusServer/model/patchlog.py.
- (WarningLog):
- (WarningLog.record):
-
-2013-01-31 Anders Carlsson <andersca@apple.com>
-
- Remove Web Intents code from WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=108506
-
- Reviewed by Simon Fraser.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2013-01-31 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Rename WebMediaStreamDescriptor and WebMediaStreamComponent to WebMediaStream and WebMediaStreamTrack
- https://bugs.webkit.org/show_bug.cgi?id=108458
-
- Reviewed by Adam Barth.
-
- Only renames, no other code changes.
-
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- (MockWebMediaStreamCenter::didEnableMediaStreamTrack):
- (MockWebMediaStreamCenter::didDisableMediaStreamTrack):
- (MockWebMediaStreamCenter::didAddMediaStreamTrack):
- (MockWebMediaStreamCenter::didRemoveMediaStreamTrack):
- (MockWebMediaStreamCenter::didStopLocalMediaStream):
- (MockWebMediaStreamCenter::didCreateMediaStream):
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- (MockWebMediaStreamCenter):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::addStream):
- (MockWebRTCPeerConnectionHandler::removeStream):
- (MockWebRTCPeerConnectionHandler::getStats):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (UserMediaRequestTask::UserMediaRequestTask):
- (WebUserMediaClientMock::requestUserMedia):
-
-2013-01-31 Zan Dobersek <zdobersek@igalia.com>
-
- REGRESSION (r141402): incorrectly set injected bundle path when running GTK unit tests
- https://bugs.webkit.org/show_bug.cgi?id=108496
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): Add the build type as a member on the TestRunner interface.
- (TestRunner._setup_testing_environment): Use the build type member to determine correct path
- to the injected bundle.
-
-2013-01-31 Christophe Dumez <dchris@gmail.com>
-
- [EFL] Disable Web Intents
- https://bugs.webkit.org/show_bug.cgi?id=108457
-
- Reviewed by Alexey Proskuryakov.
-
- Remove EFL DRT code related to Web intents.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- (DumpRenderTreeChrome::onFrameCreated):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::sendWebIntentResponse):
- (TestRunner::deliverWebIntent):
- * Scripts/webkitperl/FeatureList.pm: Turn off WEB_INTENTS flag
- for EFL port.
-
-2013-01-31 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Disable force_static_libs_as_shared in developer builds if wk2 is enabled
-
- Reviewed by Jocelyn Turcotte.
-
- This is a temporary workaround during the development of #108471, where we move files around
- but some link time dependencies might remain.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2013-01-31 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Make it possible to compile WebKit2 Qt related files without access to internal WK2 C++ API
- https://bugs.webkit.org/show_bug.cgi?id=108472
-
- Reviewed by Andreas Kling.
-
- Add a new module to the qmake build system that represents the part of the WebKit2 Qt integration
- that doesn't depend on WebKit2 internals.
-
- * qmake/mkspecs/features/webkit_modules.prf:
- * qmake/mkspecs/modules/webkit2qml.prf: Copied from Source/WebKit2/WebKit2.pro.
-
-2013-01-31 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove dead transitional code from WebViewImpl
- https://bugs.webkit.org/show_bug.cgi?id=107889
-
- Reviewed by Adam Barth.
-
- ScrollingCoordinatorChromiumTests need to initialize compositing, so its implementation of
- WebWidgetClient has to support the new compositor initialization path.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- (WebViewHost::setWebWidget):
-
-2013-01-31 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] run-gtk-tests does not respect the -d argument
- https://bugs.webkit.org/show_bug.cgi?id=107822
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner.__init__): use the value for the debug option to decide what
- build_type to request a path for.
- * gtk/common.py:
- (get_build_path): now accepts a build_type argument instead of trying both
- Release and Debug in order, defaults to release.
- (build_path): takes and passes a build_type argument, no default value.
-
-2013-01-31 Christophe Dumez <dchris@gmail.com>
-
- Update Christophe Dumez's email address
- https://bugs.webkit.org/show_bug.cgi?id=108453
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update my email address in committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-31 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move runModalBeforeUnloadDialog to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=108442
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestRunner::WebTestProxy::runModalBeforeUnloadDialog):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::runModalBeforeUnloadDialog):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-31 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move postMessage related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=108343
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::willCheckAndDispatchMessageEvent):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::willCheckAndDispatchMessageEvent):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willCheckAndDispatchMessageEvent):
-
-2013-01-30 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move remaining resource load related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=108334
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::allowExternalPages):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::canHandleRequest):
- (WebTestRunner::WebTestProxy::cannotHandleRequestError):
- (WebTestRunner::WebTestProxy::didCreateDataSource):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::canHandleRequest):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::cannotHandleRequestError):
- (WebTestRunner::WebTestProxyBase::didCreateDataSource):
- (WebTestRunner::WebTestProxyBase::willSendRequest):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::canHandleRequest):
- (WebViewHost::didCreateDataSource):
- (WebViewHost::willSendRequest):
- (WebViewHost::allowExternalPages):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-30 Hajime Morrita <morrita@google.com>
-
- Unreviewed test failure fix for r141341.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2013-01-30 Levi Weintraub <leviw@chromium.org>
-
- [Chromium] WebPluginContainerImpl adding imbalanced touch handler refs
- https://bugs.webkit.org/show_bug.cgi?id=108381
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp: Adding an attribute that
- tickles the case in WebPluginContainerImpl that imbalanced touch handler refs in Document.
-
-2013-01-30 Julie Parent <jparent@chromium.org>
-
- Add a concept of dashboard parameters that invalidate others
- https://bugs.webkit.org/show_bug.cgi?id=108362
-
- Reviewed by Dirk Pranke.
-
- There are certain parameters to the dashboards, that when selected,
- invalidate others, such as selecting the test type invalidates the
- builder group. Add this concept to dashboard_base and allow specifc
- dashboard to add their own invalidating parameters.
-
- The result is that when the user takes a specific action, like changing
- the test type, the builder would get reset to the default for the new
- test type, rather than erroring or not matching the query param, as is
- the current behavior.
-
- Also deletes some unused code (selectBuilder).
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (invalidateQueryParameters):
- (setQueryParameter):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
- * TestResultServer/static-dashboards/treemap.html:
-
-2013-01-30 Kiran Muppala <cmuppala@apple.com>
-
- Disable process suppression of DumpRenderTree on Mac
- https://bugs.webkit.org/show_bug.cgi?id=108400
-
- Reviewed by Jessie Berlin.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (prepareConsistentTestingEnvironment): Take assertion to prevent
- process suppression.
-
-2013-01-30 Roger Fong <roger_fong@apple.com>
-
- Enable tests for Windows EWS!
- https://bugs.webkit.org/show_bug.cgi?id=107968.
- Patch by Lucas Forschler.
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-01-30 Christophe Dumez <christophe.dumez@intel.com>
-
- Add a StringTypeAdapter for ASCIILiteral
- https://bugs.webkit.org/show_bug.cgi?id=108338
-
- Reviewed by Benjamin Poulain.
-
- Add API tests for operator+() taking an ASCIILiteral.
-
- * TestWebKitAPI/Tests/WTF/StringOperators.cpp:
- (TestWebKitAPI::TEST):
-
-2013-01-30 Roger Fong <roger_fong@apple.com>
-
- Modify runtests.py script so that --skip-failing-tests option is not added when platform is cygwin.
-
- Rubberstamped by Timothy Horton.
-
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
-
-2013-01-30 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r141205.
- http://trac.webkit.org/changeset/141205
- https://bugs.webkit.org/show_bug.cgi?id=108353
-
- Command for running tests on windows needs to be investigated.
- (Requested by lforschler on #webkit).
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-01-30 Tony Chang <tony@chromium.org>
-
- [Chromium] Enable textarea resize corner for tests
- https://bugs.webkit.org/show_bug.cgi?id=108385
-
- Reviewed by Ojan Vafai.
-
- We should test what we ship. Also, this makes us pass more tests in content_shell.
-
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset): Turn on resize corner.
-
-2013-01-30 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move custom policy delegate to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=108328
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::decidePolicyForNavigation):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::policyDelegateEnabled):
- (WebTestRunner::WebTestRunner::policyDelegateIsPermissive):
- (WebTestRunner::WebTestRunner::policyDelegateShouldNotifyDone):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateEnabled):
- (WebTestRunner):
- (WebTestRunner::TestRunner::policyDelegateIsPermissive):
- (WebTestRunner::TestRunner::policyDelegateShouldNotifyDone):
- (WebTestRunner::TestRunner::setCustomPolicyDelegate):
- (WebTestRunner::TestRunner::waitForPolicyDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::decidePolicyForNavigation):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::decidePolicyForNavigation):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-30 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt][WK1] Support better testing of Web Notifications
- https://bugs.webkit.org/show_bug.cgi?id=107696
-
- Reviewed by Jocelyn Turcotte.
-
- Do not dump notification output to the console by default, instead allow the
- tests that need this feature to enable it.
-
- Implement denyWebNotificationPermission and removeAllWebNotificationPermissions.
- Remove unused m_desktopNotificationAllowedOrigins variable.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::TestRunner):
- (TestRunner::reset):
- (TestRunner::dumpNotifications):
- (TestRunner::grantWebNotificationPermission):
- (TestRunner::denyWebNotificationPermission):
- (TestRunner::removeAllWebNotificationPermissions):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
-
-2013-01-30 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move methods from WebTestDelegate to WebTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=108309
-
- Reviewed by Adam Barth.
-
- By moving more logic to the TestRunner library, we can share more
- code with content shell.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::createView):
- (WebTestRunner::WebTestProxy::isSmartInsertDeleteEnabled):
- (WebTestRunner::WebTestProxy::isSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::isSmartInsertDeleteEnabled):
- (WebTestRunner::WebTestRunner::isSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::isSmartInsertDeleteEnabled):
- (WebTestRunner):
- (WebTestRunner::TestRunner::isSelectTrailingWhitespaceEnabled):
- (WebTestRunner::TestRunner::setSmartInsertDeleteEnabled):
- (WebTestRunner::TestRunner::setSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::createView):
- (WebTestRunner::WebTestProxyBase::isSmartInsertDeleteEnabled):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::isSelectTrailingWhitespaceEnabled):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createView):
- (WebViewHost::didStartLoading):
- (WebViewHost::didStopLoading):
- (WebViewHost::isSmartInsertDeleteEnabled):
- (WebViewHost::isSelectTrailingWhitespaceEnabled):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-30 Kwang Yul Seo <skyul@company100.net>
-
- Unreviewed. Add Jae Hyun Park to contributor list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-29 Alan Cutter <alancutter@chromium.org>
-
- Need a cr-linux debug EWS bot
- https://bugs.webkit.org/show_bug.cgi?id=98957
-
- Reviewed by Eric Seidel.
-
- Added cr-linux-debug-ews bot to webkit-patch, QueueStatusServer and GCE build scripts.
-
- * EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh: Added.
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/config/queues.py: Added.
- * QueueStatusServer/model/queues.py:
- (Queue.__init__):
- (Queue.queue_with_name):
- (Queue.all):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (ChromiumLinuxDebugEWS):
-
-2013-01-29 Alan Cutter <alancutter@chromium.org>
-
- Tidy up Sheriffbot's Sheriffs command's unit tests
- https://bugs.webkit.org/show_bug.cgi?id=108262
-
- Reviewed by Eric Seidel.
-
- Added the use of MockWeb instead of the filesystem to test the sheriffs command.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Sheriffs._retrieve_webkit_sheriffs):
- (Sheriffs.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_sheriffs):
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_0.js: Removed.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_1.js: Removed.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_2.js: Removed.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_malformed.js: Removed.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_zero.js: Removed.
-
-2013-01-29 Lucas Forschler <lforschler@apple.com>
-
- Enable tests for Windows EWS!
- https://bugs.webkit.org/show_bug.cgi?id=107968
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (WinEWS):
-
-2013-01-29 Alan Cutter <alancutter@chromium.org>
-
- MockWeb should be able to serve mock web content
- https://bugs.webkit.org/show_bug.cgi?id=108240
-
- Reviewed by Dirk Pranke.
-
- Added the ability to have MockWeb serve mock web data.
-
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- * Scripts/webkitpy/common/net/web_mock.py:
- (MockWeb.__init__):
- (MockWeb.get_binary):
-
-2013-01-29 Jessie Berlin <jberlin@apple.com>
-
- run-api-tests should have an option to specify root
- https://bugs.webkit.org/show_bug.cgi?id=108210
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/run-api-tests:
- Add the option and use it to set the configuration product directory. Since it is supposed
- to point to the built products, do not build the products if root is specified (this mimics
- the behavior of run-javascriptcore-tests).
-
-2013-01-29 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
-
- [EFL] Add Toggle fullscreen (F11) to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=108122
-
- Reviewed by Antonio Gomes.
-
- Adds fullscreen mode toggle (F11) option to MiniBrowser using native API.
-
- * MiniBrowser/efl/main.c:
- (on_key_down): Add 'F11' key handler.
-
-2013-01-29 Patrick Gansterer <paroga@webkit.org>
-
- [CMake] Use offical Windows CE support
- https://bugs.webkit.org/show_bug.cgi?id=108061
-
- Reviewed by Laszlo Gombos.
-
- Recent version of CMake has added Windows CE support, but uses a
- slightly different interface than the patched version used before.
- Change the command line parameters to use the offical CMake binaries.
-
- * Scripts/webkitdirs.pm:
- (cmakeBasedPortArguments):
-
-2013-01-29 Alan Cutter <alancutter@chromium.org>
-
- QueueStatusServer needs pages to display historical queue data
- https://bugs.webkit.org/show_bug.cgi?id=107659
-
- Reviewed by Eric Seidel.
-
- Created a /queue-charts/<queue-name> handler to present queue and patch data using Google Chart Tools.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/config/charts.py: Copied from Tools/QueueStatusServer/model/queuelog.py.
- (get_time_unit):
- * QueueStatusServer/filters/webkit_extras.py:
- (webkit_linkify):
- (webkit_bug_id):
- (webkit_attachment_id):
- (results_link):
- (queue_status_link):
- (queue_charts_link):
- * QueueStatusServer/handlers/queuecharts.py: Added.
- (QueueCharts):
- (QueueCharts.get):
- (QueueCharts._get_min_med_max):
- (QueueCharts._get_patch_data):
- (QueueCharts._get_patch_logs):
- (QueueCharts._get_queue_data):
- (QueueCharts._get_queue_logs):
- (QueueCharts._get_time_unit):
- (QueueCharts._get_timestamp):
- (QueueCharts._get_view_range):
- * QueueStatusServer/handlers/queuestatus.py:
- (QueueStatus.get):
- * QueueStatusServer/index.yaml:
- * QueueStatusServer/main.py:
- * QueueStatusServer/model/queuelog.py:
- (QueueLog):
- (QueueLog.create_key):
- (QueueLog.get_at):
- (QueueLog.get_current):
- (QueueLog.get_or_create):
- (QueueLog._get_or_create_txn):
- * QueueStatusServer/stylesheets/charts.css: Added.
- (.chart):
- (.choices):
- * QueueStatusServer/templates/queuecharts.html: Added.
- * QueueStatusServer/templates/queuestatus.html:
-
-2013-01-29 Mario Sanchez Prada <mario.prada@samsung.com>
-
- [GTK] Missing build flags when building with Harfbuzz
- https://bugs.webkit.org/show_bug.cgi?id=108174
-
- Reviewed by Martin Robinson.
-
- Add FREETYPE_CFLAGS and FREETYPE_LIBS to makefiles so -lharfbuzz
- parameter will be added to linking lines when needed.
-
- * GNUmakefile.am: Added FREETYPE_CFLAGS and FREETYPE_LIBS.
- * MiniBrowser/gtk/GNUmakefile.am: Ditto.
- * TestWebKitAPI/GNUmakefile.am: Ditto.
-
-2013-01-29 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Implement resources API using injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=107457
-
- Reviewed by Sam Weinig.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unksip resources unit tests.
-
-2013-01-29 Michael Brüning <michael.bruning@digia.com>
-
- Unreviewed, updated my email information.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-29 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] delete DRTTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=108082
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.cpp: Removed.
- * DumpRenderTree/chromium/DRTTestRunner.h: Removed.
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::testFinished):
- (WebTestRunner::WebTestDelegate::testTimedOut):
- (WebTestRunner::WebTestDelegate::isBeingDebugged):
- (WebTestRunner::WebTestDelegate::layoutTestTimeout):
- (WebTestRunner::WebTestDelegate::closeRemainingWindows):
- (WebTestRunner::WebTestDelegate::navigationEntryCount):
- (WebTestRunner::WebTestDelegate::windowCount):
- (WebTestRunner::WebTestDelegate::setCustomPolicyDelegate):
- (WebTestRunner::WebTestDelegate::waitForPolicyDelegate):
- (WebTestRunner::WebTestDelegate::goToOffset):
- (WebTestRunner::WebTestDelegate::reload):
- (WebTestRunner::WebTestDelegate::loadURLForFrame):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::policyDelegateDone):
- (WebTestRunner::WebTestRunner::shouldInterceptPostMessage):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::WorkQueue::~WorkQueue):
- (WebTestRunner):
- (WebTestRunner::TestRunner::WorkQueue::processWorkSoon):
- (WebTestRunner::TestRunner::WorkQueue::processWork):
- (WebTestRunner::TestRunner::WorkQueue::reset):
- (WebTestRunner::TestRunner::WorkQueue::addWork):
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::policyDelegateDone):
- (WebTestRunner::TestRunner::shouldInterceptPostMessage):
- (WebTestRunner::TestRunner::waitUntilDone):
- (WebTestRunner::TestRunner::notifyDone):
- (WebTestRunner::TestRunner::completeNotifyDone):
- (WorkItemBackForward):
- (WebTestRunner::WorkItemBackForward::WorkItemBackForward):
- (WebTestRunner::WorkItemBackForward::run):
- (WebTestRunner::TestRunner::queueBackNavigation):
- (WebTestRunner::TestRunner::queueForwardNavigation):
- (WorkItemReload):
- (WebTestRunner::WorkItemReload::run):
- (WebTestRunner::TestRunner::queueReload):
- (WorkItemLoadingScript):
- (WebTestRunner::WorkItemLoadingScript::WorkItemLoadingScript):
- (WebTestRunner::WorkItemLoadingScript::run):
- (WorkItemNonLoadingScript):
- (WebTestRunner::WorkItemNonLoadingScript::WorkItemNonLoadingScript):
- (WebTestRunner::WorkItemNonLoadingScript::run):
- (WebTestRunner::TestRunner::queueLoadingScript):
- (WebTestRunner::TestRunner::queueNonLoadingScript):
- (WorkItemLoad):
- (WebTestRunner::WorkItemLoad::WorkItemLoad):
- (WebTestRunner::WorkItemLoad::run):
- (WebTestRunner::TestRunner::queueLoad):
- (WorkItemLoadHTMLString):
- (WebTestRunner::WorkItemLoadHTMLString::WorkItemLoadHTMLString):
- (WebTestRunner::WorkItemLoadHTMLString::run):
- (WebTestRunner::TestRunner::queueLoadHTMLString):
- (WebTestRunner::TestRunner::locationChangeDone):
- (WebTestRunner::TestRunner::windowCount):
- (WebTestRunner::TestRunner::setCloseRemainingWindowsWhenComplete):
- (WebTestRunner::TestRunner::setCustomPolicyDelegate):
- (WebTestRunner::TestRunner::waitForPolicyDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- (WorkItem):
- (WebTestRunner::TestRunner::WorkItem::~WorkItem):
- (WorkQueue):
- (WebTestRunner::TestRunner::WorkQueue::WorkQueue):
- (WebTestRunner::TestRunner::WorkQueue::setFrozen):
- (WebTestRunner::TestRunner::WorkQueue::isEmpty):
- (WebTestRunner::TestRunner::WorkQueue::taskList):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::runFileTest):
- (TestShell::loadURL):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::testRunner):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::testFinished):
- (WebViewHost::testTimedOut):
- (WebViewHost::isBeingDebugged):
- (WebViewHost::layoutTestTimeout):
- (WebViewHost::closeRemainingWindows):
- (WebViewHost::navigationEntryCount):
- (WebViewHost::windowCount):
- (WebViewHost::setCustomPolicyDelegate):
- (WebViewHost::waitForPolicyDelegate):
- (WebViewHost::goToOffset):
- (WebViewHost::reload):
- (WebViewHost::loadURLForFrame):
- (WebViewHost::shutdown):
- (WebViewHost::testRunner):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebTestRunner):
- (WebViewHost):
-
-2013-01-28 Timothy Loh <timloh@chromium.com>
-
- Refactor ChangeLog and PrepareChangeLog to use FileSystem objects
- https://bugs.webkit.org/show_bug.cgi?id=107903
-
- Reviewed by Eric Seidel.
-
- To make ChangeLog and PrepareChangeLog easier to test, we can use
- FileSystem objects instead of just passing around paths.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLog.__init__):
- (ChangeLog.parse_latest_entry_from_file):
- (ChangeLog.parse_entries_from_file):
- (ChangeLog.latest_entry):
- (ChangeLog.update_with_unreviewed_message):
- (ChangeLog.set_reviewer):
- (ChangeLog.set_short_description_and_bug_url):
- (ChangeLog.delete_entries):
- (ChangeLog.prepend_text):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (ChangeLogTest):
- (test_parse_log_entries_from_changelog):
- (test_latest_entry_parse_single_entry):
- (test_set_reviewer):
- (test_set_short_description_and_bug_url):
- (test_delete_entries):
- (test_prepend_text):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (ReadableTextFileObject.__init__):
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog._ensure_bug_url):
- (PrepareChangeLog._resolve_existing_entry):
- (PrepareChangeLog.run):
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (test_ensure_bug_url):
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
- (_assert_message_for_revert_output):
-
-2013-01-28 Raymond Toy <rtoy@google.com>
-
- Add myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=107992
-
- Reviewed by kbr@google.com.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-28 Joseph Pecoraro <pecoraro@apple.com>
-
- [Mac] Update PageVisibilityState when WebView is hidden / visible
- https://bugs.webkit.org/show_bug.cgi?id=107509
-
- Reviewed by Sam Weinig.
-
- Add a test that PageVisibility of WK1 WebViews and WK2 WKViews
- automatically changes between hidden and visible as the view is added
- and removed from window, or when it is in a window that changes
- visibility, for instance by minimizing / deminimizing.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html: Added.
- * TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm: Added.
- (-[PageVisibilityStateDelegate webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:]):
- (runJavaScriptAlert):
- (PageVisibilityStateWithWindowChanges):
- (TestWebKitAPI::PageVisibilityStateWithWindowChanges::initializeView):
- (TestWebKitAPI::PageVisibilityStateWithWindowChanges::teardownView):
- (TestWebKitAPI::PageVisibilityStateWithWindowChanges::runTest):
- (TestWebKitAPI::TEST_F):
- Test visibility state of a page in a WebView/WKView with different window states.
-
- * TestWebKitAPI/mac/WebKitAgnosticTest.h:
- * TestWebKitAPI/mac/WebKitAgnosticTest.mm:
- (TestWebKitAPI::WebKitAgnosticTest::teardownView):
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit1Test):
- (TestWebKitAPI::WebKitAgnosticTest::runWebKit2Test):
- Add a WK1 and WK2 teardownView to balance initializeView.
-
-2013-01-28 Joseph Pecoraro <pecoraro@apple.com>
-
- Improve PageVisibility API with enums
- https://bugs.webkit.org/show_bug.cgi?id=107364
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::resetPageVisibility):
- (TestRunner::setPageVisibility):
- Update the WK1 test code to use the new WK1 enums.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::setVisibilityState):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setPageVisibility):
- (WTR::TestRunner::resetPageVisibility):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::setVisibilityState):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- Update the WK2 test code to use the new WK2 API and enums.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::setPageVisibilityStateWithEvalContinuation):
- (TestWebKitAPI::assertSerializedScriptValueIsStringValue):
- (TestWebKitAPI::didRunStep1StateChangeVisibleToHidden):
- (TestWebKitAPI::didRunStep2StateChangeHiddenToPrerender):
- (TestWebKitAPI::didRunStep3StateChangePrerenderToPreview):
- (TestWebKitAPI::didRunStep4InStatePreview):
- (TestWebKitAPI::TEST):
- Test the new WK2 API with all enum types.
-
-2013-01-28 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove temporary define used for updating TestRunner API
-
- Unreviewed. Clean-up change.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
-
-2013-01-28 James Craig <james@cookiecrook.com>
-
- HTML5 promotes DL from specific 'definition list' to superset 'description list'; accessibility strings and accessors should be updated to match.
- https://bugs.webkit.org/show_bug.cgi?id=107650
-
- Reviewed by Chris Fleizach.
-
- Updating accessibility strings and accessors for DL/DT/DD.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/Utilities.js:
- (createDescriptionList):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ViewController.js:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
-
-2013-01-28 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WTR] Update layoutTestController.pathToLocalResource
- https://bugs.webkit.org/show_bug.cgi?id=107538
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp:
- (WTR::TestRunner::pathToLocalResource): Update implementation based on
- DRT code.
-
-2013-01-28 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK][WTR] Move getTopLevelPath() to utilities file
- https://bugs.webkit.org/show_bug.cgi?id=107541
-
- Reviewed by Martin Robinson.
-
- * WebKitTestRunner/GNUmakefile.am: Add new files.
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::getOutputDir): Uses the moved method from InjectedBundleUtilities.
- * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp: Added.
- (WTR):
- (WTR::topLevelPath): Implementation moved from ActivateFontsGtk.
- * WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h: Added.
- (WTR): Add new method header and documentation.
-
-2013-01-28 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL] Include Ecore_Getopt.h in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=108067
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Be explicit and include Ecore_Getopt.h since we use it for parsing
- command line options. It is safer than relying on other headers
- including it for us.
-
- * MiniBrowser/efl/main.c:
-
-2013-01-28 Renata Hodovan <reni@webkit.org>
-
- [WK2] Putting QtWebProcess into a chrooted sandbox
- https://bugs.webkit.org/show_bug.cgi?id=90005
-
- Reviewed by Anders Carlsson and Zoltan Herczeg.
-
- Add feature flag for suid sandbox in linux.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-27 David Farler <dfarler@apple.com>
-
- REGRESSION (r140912): Broke specifying non-trivial ARCHS value to make / build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=108028
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/Makefile: Reverted.
- * Makefile: Reverted.
- * Scripts/webkitdirs.pm: Reverted.
-
-2013-01-27 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- Fixing atomicIncrement implementation for Windows by dropping support before XP SP2.
- https://bugs.webkit.org/show_bug.cgi?id=106740
-
- Reviewed by Benjamin Poulain.
-
- * DumpRenderTree/config.h:
- * WinLauncher/stdafx.h:
-
-2013-01-26 David Farler <dfarler@apple.com>
-
- Makefiles should work for arbitrary SDKs and architectures on Apple ports
- https://bugs.webkit.org/show_bug.cgi?id=107863
-
- Reviewed by David Kilzer.
-
- * Makefile:
- Added temporary filters for projects not yet building on iOS.
- * DumpRenderTree/Makefile:
- Building with iOS SDKs -> -target All-iOS
- * Scripts/webkitdirs.pm:
- (determineConfiguration):
- Added --configuration switch detection.
- (determineArchitecture):
- Added --architecture and ARCH=(.*) switch detection.
- (argumentsForConfiguration):
- (determineXcodeSDK):
- Look for --device, --simulator, and --sdk switches.
- (xcodeSDK):
- Added.
- (XcodeOptions):
- Determine Xcode SDK and generate -arch switches.
-
-2013-01-25 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move tracking of the top loading frame to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=107948
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::WorkQueue::processWorkSoon):
- (DRTTestRunner::WorkQueue::processWork):
- (DRTTestRunner::completeNotifyDone):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::setTopLoadingFrame):
- (WebTestRunner::WebTestRunner::topLoadingFrame):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setTopLoadingFrame):
- (WebTestRunner):
- (WebTestRunner::TestRunner::topLoadingFrame):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- (WebTestRunner::TestRunner::locationChangeDone):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didStartProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didFailProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didFailLoad):
- (WebTestRunner::WebTestProxyBase::didFinishLoad):
- (WebTestRunner::WebTestProxyBase::locationChangeDone):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::reset):
- (WebViewHost::updateURL):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r140774.
- http://trac.webkit.org/changeset/140774
- https://bugs.webkit.org/show_bug.cgi?id=107932
-
- Tests ScrollingCoordinatorChromiumTest.fastScrollingByDefault
- and fastScrollingForFixedPosition are failing (Requested by
- keishi on #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- (WebViewHost::setWebWidget):
-
-2013-01-25 Alan Cutter <alancutter@chromium.org>
-
- Quick fix for Chromium EWS bots running out of space due to a tmp file leak
- https://bugs.webkit.org/show_bug.cgi?id=107905
-
- Reviewed by Eric Seidel.
-
- Added line to EWS loop to clear /tmp of known Chromium test leak.
- Directories named ".org.chromium.Chromium.XXXXXX" not getting cleaned up.
-
- * EWSTools/start-queue.sh:
-
-2013-01-25 Ryosuke Niwa <rniwa@webkit.org>
-
- Update Anne's email address
- https://bugs.webkit.org/show_bug.cgi?id=107866
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-24 Alan Cutter <alancutter@chromium.org>
-
- HTTP 500 error between QueueStatusServer and bot(s)
- https://bugs.webkit.org/show_bug.cgi?id=107184
-
- Reviewed by Adam Barth.
-
- Removed the use of memcache which was the source of the exception.
-
- * QueueStatusServer/handlers/updatestatus.py:
- (UpdateStatus.post):
- * QueueStatusServer/model/attachment.py:
- (Attachment):
- (Attachment.summary):
-
-2013-01-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r140653.
- http://trac.webkit.org/changeset/140653
- https://bugs.webkit.org/show_bug.cgi?id=107916
-
- Causes a temp file leak on the bots (Requested by abarth on
- #webkit).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController):
-
-2013-01-24 Eric Seidel <eric@webkit.org>
-
- Skip haslanded_unittest.py on systems which do not have interdiff installed
- https://bugs.webkit.org/show_bug.cgi?id=106402
-
- Unreviewed.
-
- * Scripts/webkitpy/tool/steps/haslanded_unittest.py:
- (HasLandedTest):
-
-2013-01-24 Ryosuke Niwa <rniwa@webkit.org>
-
- Disable the failing webkitpy test for now.
-
- * Scripts/webkitpy/tool/steps/haslanded_unittest.py:
-
-2013-01-24 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Fixing the diff_parser to correctly identify git diffs even with leading comments.
- https://bugs.webkit.org/show_bug.cgi?id=107871
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
- * Scripts/webkitpy/tool/steps/haslanded.py:
-
-2013-01-24 James Robinson <jamesr@chromium.org>
-
- [chromium] Remove dead transitional code from WebViewImpl
- https://bugs.webkit.org/show_bug.cgi?id=107889
-
- Reviewed by Adrienne Walker.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- (WebViewHost::setWebWidget):
-
-2013-01-24 Joshua Bell <jsbell@chromium.org>
-
- Add watchlist for IndexedDB development, and add myself and others.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-24 Martin Robinson <mrobinson@igalia.com>
-
- Abstract the logic for appending a UChar32 onto StringBuilder
- https://bugs.webkit.org/show_bug.cgi?id=107505
-
- Reviewed by Darin Adler.
-
- * TestWebKitAPI/Tests/WTF/StringBuilder.cpp:
- (TestWebKitAPI::TEST): Added a simple test for appending UChar32.
-
-2013-01-24 Erik Arvidsson <arv@chromium.org>
-
- Unreviewed, rolling out r140703.
- http://trac.webkit.org/changeset/140703
- https://bugs.webkit.org/show_bug.cgi?id=107556
-
- r140561 was not the reason for the Android breakage
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
- (TestShell::closeWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
- (WebViewHost::shutdown):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-24 Dean Jackson <dino@apple.com>
-
- Allow some plugin snapshot UI content to come from Injected Bundle
- https://bugs.webkit.org/show_bug.cgi?id=107852
-
- Reviewed by Anders Carlsson.
-
- Null implementations of plugInStartLabelTitle, plugInStartLabelSubtitle and
- plugInExtraStyleSheet.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage):
-
-2013-01-24 Erik Arvidsson <arv@chromium.org>
-
- Unreviewed, rolling out r140561.
- http://trac.webkit.org/changeset/140561
- https://bugs.webkit.org/show_bug.cgi?id=107556
-
- Suspected to break Android which prevens WebKit roll
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
- (TestShell::closeWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-24 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Adding "has-landed" command to webkit-patch which compares a
- committed patch to the changes which exist locally (ignoring the
- ChangeLog file).
-
- https://bugs.webkit.org/show_bug.cgi?id=106402
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- (git_diff_to_svn_diff):
- * Scripts/webkitpy/common/net/bugzilla/bug.py:
- (Bug.commit_revision):
- * Scripts/webkitpy/common/net/bugzilla/bug_unittest.py:
- (BugTest.test_is_in_comments):
- (BugTest):
- (BugTest.test_commit_revision):
- * Scripts/webkitpy/tool/commands/upload.py:
- (HasLanded):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/haslanded.py: Added.
- (HasLanded):
- (HasLanded.convert_to_svn):
- (HasLanded.strip_change_log):
- (run):
-
- * Scripts/webkitpy/common/net/bugzilla/bug.py:
- (Bug.commit_revision):
- * Scripts/webkitpy/common/net/bugzilla/bug_unittest.py:
- (BugTest.test_is_in_comments):
- (BugTest):
- (BugTest.test_commit_revision):
- * Scripts/webkitpy/tool/commands/upload.py:
- (HasLanded):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/haslanded.py: Added.
- (HasLanded):
- (HasLanded.convert_to_svn):
- (HasLanded.strip_change_log):
- (HasLanded.diff_diff):
- (HasLanded.run):
- * Scripts/webkitpy/tool/steps/haslanded_unittest.py: Added.
- (HasLandedTest):
- (HasLandedTest.test_run):
- (test_convert_to_svn_and_strip_change_log):
-
-2013-01-24 Dan Carney <dcarney@google.com>
-
- [chromium] move most WebViewHost printf calls to WebTestProxy
- https://bugs.webkit.org/show_bug.cgi?id=107553
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::unableToImplementPolicyWithError):
- (WebTestRunner::WebTestProxy::didAddMessageToConsole):
- (WebTestRunner::WebTestProxy::runModalAlertDialog):
- (WebTestRunner::WebTestProxy::runModalConfirmDialog):
- (WebTestRunner::WebTestProxy::runModalPromptDialog):
- (WebTestRunner::WebTestProxy::runModalBeforeUnloadDialog):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::reset):
- (WebTestRunner::WebTestProxyBase::setLogConsoleOutput):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::unableToImplementPolicyWithError):
- (WebTestRunner::WebTestProxyBase::didAddMessageToConsole):
- (WebTestRunner::WebTestProxyBase::runModalAlertDialog):
- (WebTestRunner::WebTestProxyBase::runModalConfirmDialog):
- (WebTestRunner::WebTestProxyBase::runModalPromptDialog):
- (WebTestRunner::WebTestProxyBase::runModalBeforeUnloadDialog):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::showDevTools):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didAddMessageToConsole):
- (WebViewHost::runModalAlertDialog):
- (WebViewHost::runModalConfirmDialog):
- (WebViewHost::runModalPromptDialog):
- (WebViewHost::runModalBeforeUnloadDialog):
- (WebViewHost::unableToImplementPolicyWithError):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-23 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Give webkit_support a chance to reset state between layout test runs
- https://bugs.webkit.org/show_bug.cgi?id=107132
-
- Reviewed by Adam Barth.
-
- We currently only have need for this on OS(ANDROID), but now it
- would be useful to have a hook for resetting state on all
- platforms. Will soon be using this for IDBFactory initialization.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController): Call webkit_support::ResetTestEnvironment()
-
-2013-01-23 Alan Cutter <alancutter@chromium.org>
-
- QueueStatusServer crashes in production on next-patch
- https://bugs.webkit.org/show_bug.cgi?id=107775
-
- Reviewed by Adam Barth.
-
- Replaced Python 2.5 incompatible call to timedelta.total_seconds().
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/model/patchlog.py:
- (PatchLog.calculate_wait_duration):
- (PatchLog.calculate_process_duration):
- (PatchLog):
- (PatchLog._time_delta_to_seconds):
-
-2013-01-23 Ryosuke Niwa <rniwa@webkit.org>
-
- The previous patch wasn't complete. Finish reverting r139998 for real.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (ProfilerAgent.getProfile):
-
-2013-01-23 Ryosuke Niwa <rniwa@webkit.org>
-
- Revert r139998 for now since the Leaks Viewer pulls in a specific version of Inspector code.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (ProfilerAgent.getProfile):
-
-2013-01-23 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Remove unused header files in chromium/public/platform/
- https://bugs.webkit.org/show_bug.cgi?id=107741
-
- Reviewed by James Robinson.
-
- These header files have migrated to the new Platform directory.
- This patch updates the remaining #include references and removes
- the old files that did nothing but redirect to the new ones.
-
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp:
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h:
-
-2013-01-23 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Bump webkitgtk-test-fonts dependency to cover fallbacks for Tamil, Bengali, and others
- https://bugs.webkit.org/show_bug.cgi?id=107727
-
- Reviewed by Gustavo Noronha Silva.
-
- * gtk/jhbuild.modules: Update the JHBuild moduleset to point to the new webkitgtk-test-fonts.
- We are using the git repository now that github has deprecated the downloads feature.
-
-2013-01-23 Tony Chang <tony@chromium.org>
-
- Unreviewed, set svn:eol-style to CRLF on Windows .sln files.
-
- * CLWrapper/CLWrapper.sln: Modified property svn:eol-style.
- * DumpRenderTree/DumpRenderTree.sln: Modified property svn:eol-style.
- * MIDLWrapper/MIDLWrapper.sln: Modified property svn:eol-style.
- * WebKitTestRunner/WebKitTestRunner.sln: Modified property svn:eol-style.
-
-2013-01-23 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Update some #includes in DumpRenderTree for headers in the new Platform directory
- https://bugs.webkit.org/show_bug.cgi?id=107145
-
- Reviewed by Adam Barth.
-
- Part of a larger refactoring series; see tracking bug 82948.
-
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/MockWebPrerenderingSupport.h:
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- * DumpRenderTree/chromium/MockWebSpeechInputController.h:
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- * DumpRenderTree/chromium/TestNavigationController.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.h:
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp:
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.cpp:
- * DumpRenderTree/chromium/WebThemeEngineDRTWin.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
-
-2013-01-23 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Use after free in plugins/geturlnotify-during-document-teardown.html
- https://bugs.webkit.org/show_bug.cgi?id=107556
-
- Reviewed by Tony Chang.
-
- WebViewHost initiates a navigation to about:blank in its destructor.
- However, since WebTestProxy inherits from WebViewHost, at this point
- the WebViewClient and WebFrameClient interfaces are already partially
- destructed resulting in the use after free.
-
- This does not affect the chromium implementation since it doesn't
- invoke WebKit API methods in its destructor.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::~TestShell):
- (TestShell::closeWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::~WebViewHost):
- (WebViewHost::shutdown):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-23 Andrei Bucur <abucur@adobe.com>
-
- [CSS Regions] Create Regions watchlist
- https://bugs.webkit.org/show_bug.cgi?id=107281
-
- Reviewed by Adam Barth.
-
- This patch adds 4 new definitions:
- - RegionsDevelopment - used to track the development progress for regions
- - RegionsExpectationsMore and RegionsExpectationsLess - used to track expectations changes for the regions tests
- - RegionsUsage - used to track changes that make use of regions in all the code base
-
- For now, the Adobe internal tracker is the only email address listening for these patterns.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-22 Pavel Feldman <pfeldman@chromium.org>
-
- Web Inspector: only allow evaluateForTestInFrontend for front-ends under test.
- https://bugs.webkit.org/show_bug.cgi?id=107523
-
- Reviewed by Yury Semikhatsky.
-
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- (DRTDevToolsClient::isUnderTest):
- (DRTDevToolsClient::call):
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- (DRTDevToolsClient):
-
-2013-01-23 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Removing command line shortening as it makes it difficult to see the command during errors.
- https://bugs.webkit.org/show_bug.cgi?id=107643
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/executive.py:
- (ScriptError):
- (ScriptError.__init__):
- * Scripts/webkitpy/common/system/executive_unittest.py:
-
-2013-01-23 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Adding myself as contributor in committers.py (as requested by eseidel).
- https://bugs.webkit.org/show_bug.cgi?id=107647
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-22 Alan Cutter <alancutter@chromium.org>
-
- Add monitoring of patches and queues to the QueueStatusServer
- https://bugs.webkit.org/show_bug.cgi?id=107612
-
- Reviewed by Adam Barth.
-
- Created classes for recording events into the datastore and integrated them into the existing handlers.
- Code for presenting the recorded data will come in a separate patch.
-
- * QueueStatusServer/app.yaml:
- * QueueStatusServer/config/__init__.py: Added.
- * QueueStatusServer/config/logging.py: Copied from Tools/QueueStatusServer/model/queuestatus.py.
- * QueueStatusServer/config/messages.py: Copied from Tools/QueueStatusServer/model/queuestatus.py.
- * QueueStatusServer/handlers/nextpatch.py:
- (NextPatch.get):
- (NextPatch._assign_patch):
- * QueueStatusServer/handlers/releasepatch.py:
- (ReleasePatch.post):
- * QueueStatusServer/handlers/updatestatus.py:
- (UpdateStatus.post):
- * QueueStatusServer/handlers/updateworkitems.py:
- (UpdateWorkItems._parse_work_items_string):
- (UpdateWorkItems):
- (UpdateWorkItems._update_work_items_from_request):
- (UpdateWorkItems._queue_from_request):
- (UpdateWorkItems.post):
- * QueueStatusServer/loggers/__init__.py: Added.
- * QueueStatusServer/loggers/recordbotevent.py: Copied from Tools/QueueStatusServer/model/queuestatus.py.
- (RecordBotEvent):
- (RecordBotEvent.activity):
- * QueueStatusServer/loggers/recordpatchevent.py: Added.
- (RecordPatchEvent):
- (RecordPatchEvent.added):
- (RecordPatchEvent.retrying):
- (RecordPatchEvent.started):
- (RecordPatchEvent.stopped):
- (RecordPatchEvent.updated):
- (RecordPatchEvent._get_patches_waiting):
- * QueueStatusServer/model/patchlog.py: Copied from Tools/QueueStatusServer/model/queuestatus.py.
- (PatchLog):
- (PatchLog.lookup):
- (PatchLog.calculate_wait_duration):
- (PatchLog.calculate_process_duration):
- * QueueStatusServer/model/queuelog.py: Copied from Tools/QueueStatusServer/handlers/nextpatch.py.
- (QueueLog):
- (QueueLog.get_current):
- (QueueLog.create_key):
- * QueueStatusServer/model/queuestatus.py:
- (QueueStatus.is_retry_request):
-
-2013-01-22 Timothy Loh <timloh@chromium.com>
-
- prepare-Changelog should support updating the list of changed files
- https://bugs.webkit.org/show_bug.cgi?id=74358
-
- Reviewed by Eric Seidel.
-
- Needing to re-make ChangeLog entries when the list of files/functions
- changes is a bit annoying, it'd be nice to have this more automated.
- This patch makes `webkit-patch update' update the date line and bug
- description if needed, and if the list of changed files/functions has
- changed, either updates the list (if there are no annotations), or
- otherwise appends the new list below.
-
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog._resolve_existing_entry):
- (PrepareChangeLog):
- (PrepareChangeLog._merge_entries):
- (PrepareChangeLog.run):
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest.test_resolve_existing_entry):
- (make_entry):
- (test_ensure_bug_url):
-
-2013-01-22 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Use Python 2.7 unittest syntax in our unittests
- https://bugs.webkit.org/show_bug.cgi?id=105607
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/**/*_unittest.py:
-
-2013-01-22 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Convert disable-msg to disable for new pylint.
- https://bugs.webkit.org/show_bug.cgi?id=107627
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVNRepository.has_authorization_for_realm):
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Builder.force_build):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive2.run_command):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.reference_files):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_default_configuration):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_expectations_ordering):
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase._check_that_all_ports_are_available):
- * Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
- (AbstractLocalServerCommand.execute):
- * Scripts/webkitpy/tool/commands/download.py:
- (AbstractPatchProcessingCommand):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (AbstractParallelRebaselineCommand):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_BaseTestCase.setUp):
- (TestAnalyzeBaselines.setUp):
-
-2013-01-22 Frank Farzan <frankf@chromium.org>
-
- Flakiness dashboard: update builders.jsonp
- https://bugs.webkit.org/show_bug.cgi?id=107610
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.jsonp:
-
-2013-01-22 Frank Farzan <frankf@chromium.org>
-
- Add Android instrumentation tests from ChromiumLinux waterfall
- https://bugs.webkit.org/show_bug.cgi?id=107597
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
-
-2013-01-21 Kentaro Hara <haraken@chromium.org>
-
- Implement UIEvent constructor
- https://bugs.webkit.org/show_bug.cgi?id=107430
-
- Reviewed by Adam Barth.
-
- Editor's draft: https://dvcs.w3.org/hg/d4e/raw-file/tip/source_respec.htm
-
- UIEvent constructor is implemented under a DOM4_EVENTS_CONSTRUCTOR flag,
- which is enabled on Safari and Chromium for now.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-22 Timothy Loh <timloh@chromium.com>
-
- Add functions to ChangeLog - parse bug desc/changed functions, delete/prepend entries
- https://bugs.webkit.org/show_bug.cgi?id=107478
-
- Reviewed by Eric Seidel.
-
- On the road to resolving Bug 74358, we need a few more functions in
- changelog.py.
- To make things easier to mock, change @staticmethods to @classmethods.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry):
- (ChangeLogEntry._parse_reviewer_text):
- (ChangeLogEntry._split_contributor_names):
- (ChangeLogEntry._parse_author_name_and_email):
- (ChangeLogEntry._parse_author_text):
- (ChangeLogEntry._parse_touched_functions):
- (ChangeLogEntry._parse_bug_description):
- (ChangeLogEntry._parse_entry):
- (ChangeLogEntry.date_line):
- (ChangeLogEntry.bug_description):
- (ChangeLogEntry.touched_functions):
- (ChangeLogEntry.touched_files_text):
- (ChangeLogEntry.is_touched_files_text_clean):
- (ChangeLog):
- (ChangeLog.parse_latest_entry_from_file):
- (ChangeLog._separate_revision_and_line):
- (ChangeLog.parse_entries_from_file):
- (ChangeLog.set_short_description_and_bug_url):
- (ChangeLog.delete_entries):
- (ChangeLog.prepend_text):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_parse_log_entries_from_changelog):
- (test_latest_entry_parse):
- (test_set_short_description_and_bug_url):
- (test_delete_entries):
- (test_prepend_text):
-
-2013-01-22 Lucas Forschler <lforschler@apple.com>
-
- Create a MAC EWS startup shell script.
-
- Reviewed by Ryosuke Niwa.
-
- * EWSTools/start-queue-mac.sh: Added.
-
-2013-01-22 Joseph Pecoraro <pecoraro@apple.com>
-
- [Mac] Enable Page Visibility (PAGE_VISIBILITY_API)
- https://bugs.webkit.org/show_bug.cgi?id=107230
-
- Reviewed by David Kilzer.
-
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::resetPageVisibility):
- Fix a typo in the original implementation. resetPageVisibility should
- pass initialState YES so an event is not dispatched, which causes
- issues in multiple tests. This now matches other ports.
-
-2013-01-22 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable CSS Image Orientation feature
- https://bugs.webkit.org/show_bug.cgi?id=99040
-
- Reviewed by Martin Robinson.
-
- Enable the CSS Image Orientation feature in the development
- builds of the GTK port. The feature is still disabled in the release
- builds.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-22 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable the <template> element support in development builds
- https://bugs.webkit.org/show_bug.cgi?id=106575
-
- Reviewed by Martin Robinson.
-
- Enable the <template> element support in the development builds of the GTK port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-22 Zan Dobersek <zandobersek@gmail.com>
-
- Prettify the output of the override-feature-defines script
- https://bugs.webkit.org/show_bug.cgi?id=106542
-
- Reviewed by Martin Robinson.
-
- The output now clearly lists the feature defines being overridden
- along with the default and overriding values for each feature define.
-
- * gtk/override-feature-defines:
- (adjust_feature_defines_makefile):
- (adjust_feature_defines_makefile.override_feature_define):
-
-2013-01-22 Zan Dobersek <zdobersek@igalia.com>
-
- Remove uses of deprecated unittest.TestCase aliases
- https://bugs.webkit.org/show_bug.cgi?id=102252
-
- Reviewed by Adam Barth.
-
- Replace the deprecated assertEquals method of the TestCase interface
- used in some webkitpy unittests with the assertEqual method.
-
- * Scripts/webkitpy/common/system/profiler_unittest.py:
- (ProfilerFactoryTest._assert_default_profiler_name):
- (ProfilerFactoryTest.test_default_profiler_output):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_win32_start_and_stop):
-
-2013-01-22 Jer Noble <jer.noble@apple.com>
-
- REGRESSION(r140344): Repeated crashes in WKTR PlatformWebView::viewSupportsOptions().
- https://bugs.webkit.org/show_bug.cgi?id=107562
-
- Rubber-stamped by Alexy Proskuryakov.
-
- The input to WKBooleanGetValue() is not NULL-safe, so NULL check its inputs before calling.
-
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::viewSupportsOptions):
-
-2013-01-22 Alexey Proskuryakov <ap@apple.com>
-
- One is not allowed to use commit-queue to make oneself a committer.
-
- * Scripts/webkitpy/common/config/committers.py: Removing eustas@chromium.org.
-
-2013-01-22 Eugene Klyuchnikov <eustas@chromium.org>
-
- Add myself to commiters.py
- https://bugs.webkit.org/show_bug.cgi?id=107546
-
- Reviewed by Kentaro Hara.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-22 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Implement TestRunner::setTextDirection
- https://bugs.webkit.org/show_bug.cgi?id=107131
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Reset direction to default value.
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::setTextDirection): Implement method using
- gtk_widget_set_direction.
-
-2013-01-22 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move spell checking mocks to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=107455
-
- Reviewed by Kent Tamura.
-
- The content module doesn't provide its own WebSpellCheckClient.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::fillSpellingSuggestionList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner):
- (WebTestProxyBase):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::makeMenuItemStringsFor):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.cpp: Renamed from Tools/DumpRenderTree/chromium/MockGrammarCheck.cpp.
- (MockGrammarCheck::checkGrammarOfString):
- * DumpRenderTree/chromium/TestRunner/src/MockGrammarCheck.h: Renamed from Tools/DumpRenderTree/chromium/MockGrammarCheck.h.
- (WebKit):
- (MockGrammarCheck):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.cpp: Renamed from Tools/DumpRenderTree/chromium/MockSpellCheck.cpp.
- (MockSpellCheck::MockSpellCheck):
- (MockSpellCheck::~MockSpellCheck):
- (isNotASCIIAlpha):
- (MockSpellCheck::spellCheckWord):
- (MockSpellCheck::fillSuggestionList):
- (MockSpellCheck::initializeIfNeeded):
- * DumpRenderTree/chromium/TestRunner/src/MockSpellCheck.h: Renamed from Tools/DumpRenderTree/chromium/MockSpellCheck.h.
- (MockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.cpp: Added.
- (WebTestRunner::SpellCheckClient::SpellCheckClient):
- (WebTestRunner):
- (WebTestRunner::SpellCheckClient::~SpellCheckClient):
- (WebTestRunner::SpellCheckClient::setDelegate):
- (WebTestRunner::SpellCheckClient::spellCheck):
- (WebTestRunner::SpellCheckClient::checkTextOfParagraph):
- (WebTestRunner::SpellCheckClient::requestCheckingOfText):
- (WebTestRunner::SpellCheckClient::finishLastTextCheck):
- (WebTestRunner::SpellCheckClient::autoCorrectWord):
- * DumpRenderTree/chromium/TestRunner/src/SpellCheckClient.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebTestRunner):
- (SpellCheckClient):
- (WebTestRunner::SpellCheckClient::taskList):
- (WebTestRunner::SpellCheckClient::mockSpellCheck):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::setDelegate):
- (WebTestRunner::WebTestProxyBase::spellCheckClient):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::WebViewHost):
- (WebViewHost::setWebWidget):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-22 Krzysztof Czech <k.czech@samsung.com>
-
- [EFL] Adds Accessibility support to wk1
- https://bugs.webkit.org/show_bug.cgi?id=107440
-
- Reviewed by Gyuyoung Kim.
-
- * DumpRenderTree/efl/CMakeLists.txt: Adds ATK headers and libraries.
-
-2013-01-21 Joseph Pecoraro <pecoraro@apple.com>
-
- [Mac] WK1 MiniBrowser should clear delegates before releasing webview
- https://bugs.webkit.org/show_bug.cgi?id=107506
-
- Reviewed by Dan Bernstein.
-
- * MiniBrowser/mac/WK1BrowserWindowController.m:
- (-[WK1BrowserWindowController dealloc]):
-
-2013-01-21 Dirk Schulze <dschulze@adobe.com>
-
- Add build flag for Canvas's Path object (disabled by default)
- https://bugs.webkit.org/show_bug.cgi?id=107473
-
- Reviewed by Dean Jackson.
-
- Add CANVAS_PATH build flag to build systems.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-21 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Add APIs to set/get view source mode
- https://bugs.webkit.org/show_bug.cgi?id=106633
-
- Reviewed by Gyuyoung Kim.
-
- Added a shotcut 'F8' in Minibrowser to display a source code
- of the web page in a new window.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_window_create):
- (window_create):
- (elm_main):
-
-2013-01-21 Nico Weber <thakis@chromium.org>
-
- [chromium] Don't archive generated source files.
- https://bugs.webkit.org/show_bug.cgi?id=106736
-
- Reviewed by Eric Seidel.
-
- They shouldn't be needed to run tests. They don't need a lot of space,
- but add many lines to the "extracting" stdout. This attempts to reduce
- that noise a bit.
-
- * BuildSlaveSupport/built-product-archive:
- (archiveBuiltProduct):
-
-2013-01-21 Benjamin Poulain <benjamin@webkit.org>
-
- Mac DumpRenderTree's installSignalHandlers() is unreachable code
- https://bugs.webkit.org/show_bug.cgi?id=107383
-
- Reviewed by Sam Weinig.
-
- The CrashHandler of DumpRenderTree were originally used for restoring
- the color profile of the main display even if DRT crashes.
-
- That feature was later limited to pixel tests only in r29999.
-
- In r104351, the DRT was changed to use device color space. Making the crash
- handlers useless, but they were left in the code since the error reporting
- code was still reachable.
-
- Later, r124581 refactored the code and dumpPixelsForCurrentTest
- is being used before being assigned its value.
- This did cause any regression because the code had become useless with the previous change.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- Remove crashHandler() and installSignalHandlers() as they have become useless and
- have been unreachable code for 6 months.
- (dumpRenderTree):
- Remove the code that was unreachable due to dumpPixelsForCurrentTest being always false
- at those points.
-
-2013-01-21 Nico Weber <thakis@chromium.org>
-
- Make ninja the default build system for build-webkit --chromium on mac
- https://bugs.webkit.org/show_bug.cgi?id=106737
-
- Reviewed by Eric Seidel.
-
- * Scripts/update-webkit-chromium:
-
-2013-01-21 Christophe Dumez <christophe.dumez@intel.com>
-
- Regression(r140262): Causes a lot of flakiness
- https://bugs.webkit.org/show_bug.cgi?id=107454
-
- Reviewed by Alexey Proskuryakov.
-
- r140262 introduced a lot of flakiness due to fixed layout mode
- not getting disabled on the view after being enabled for
- specific test cases. This patch makes sure fixed layout mode
- properly gets reset in WebKitTestRunner to avoid flakiness.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::updateLayoutType):
-
-2013-01-21 Gustavo Noronha Silva <gns@gnome.org>
-
- REGRESSION (r140285): GTK uses WKPageResourceLoadClient which was removed
- https://bugs.webkit.org/show_bug.cgi?id=107421
-
- Unreviewed build fix.
-
- * Scripts/run-gtk-tests:
- (TestRunner): skip Resource tests.
-
-2013-01-21 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WKTR] platformRunUntil() should keep the main loop running
- https://bugs.webkit.org/show_bug.cgi?id=107442
-
- Reviewed by Noam Rosenthal.
-
- EFL's implementation of platformRunUntil() should keep the main loop
- running and avoid calling sleep() between calls to
- ecore_main_loop_iterate(). This call to sleep seems to be a source
- of deadlocks (see Bug 106884).
-
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformRunUntil):
-
-2013-01-21 Vivek Galatage <vivek.vg@samsung.com>
-
- QtTestBrowser should provide way to clear selected elements
- https://bugs.webkit.org/show_bug.cgi?id=107437
-
- Reviewed by Simon Hausmann.
-
- Provide a way to "Clear selection" in the "Develop" menu to clear the previous search highlight.
- Invoke the clearSelection prior to highlighting new elements.
-
- * QtTestBrowser/launcherwindow.cpp:
- (ElementHighlight):
- (LauncherWindow::createChrome):
- (LauncherWindow::selectElements):
- (LauncherWindow::clearSelection):
- * QtTestBrowser/launcherwindow.h:
- (LauncherWindow):
-
-2013-01-21 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move methods interacting with willSendRequest to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=107270
-
- Reviewed by Kent Tamura.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::waitForPolicyDelegate):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- (WebTestRunner::WebTestRunner::httpHeadersToClear):
- (WebTestRunner::WebTestRunner::shouldBlockRedirects):
- (WebTestRunner::WebTestRunner::willSendRequestShouldReturnNull):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::httpHeadersToClear):
- (WebTestRunner):
- (WebTestRunner::TestRunner::shouldBlockRedirects):
- (WebTestRunner::TestRunner::willSendRequestShouldReturnNull):
- (WebTestRunner::TestRunner::setWillSendRequestClearHeader):
- (WebTestRunner::TestRunner::setWillSendRequestReturnsNullOnRedirect):
- (WebTestRunner::TestRunner::setWillSendRequestReturnsNull):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::willSendRequest):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-21 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Stop building WebKit2 on GTK EWSs
- https://bugs.webkit.org/show_bug.cgi?id=107435
-
- Reviewed by Philippe Normand.
-
- The WebKit2 build of the GTK is at the moment not efficiently maintainable,
- so stop building it on GTK EWSs.
-
- * Scripts/webkitpy/common/config/ports.py:
- (GtkPort.build_webkit_command):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_gtk_port):
-
-2013-01-21 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update the RTCPeerConnection states to match the latest specification
- https://bugs.webkit.org/show_bug.cgi?id=107120
-
- Reviewed by Adam Barth.
-
- Updating mock to use the new states.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCPeerConnectionStateTask::RTCPeerConnectionStateTask):
- (MockWebRTCPeerConnectionHandler::initialize):
- (MockWebRTCPeerConnectionHandler::updateICE):
-
-2013-01-20 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Extend diff_parser to support the --full-index output.
- https://bugs.webkit.org/show_bug.cgi?id=107408
-
- Reviewed by Maciej Stachowiak.
-
- * Scripts/webkitpy/common/checkout/diff_parser.py:
- (git_diff_to_svn_diff):
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
- (DiffParserTest):
- (DiffParserTest.test_git_diff_to_svn_diff):
- (git_diff_to_svn_diff):
-
-2013-01-20 Yoshifumi Inoue <yosin@chromium.org>
-
- Dragging over an element with scrollbars should scroll the element when dragging near edges
- https://bugs.webkit.org/show_bug.cgi?id=39725
-
- Reviewed by Hajime Morita.
-
- This patch introduces canceling drag-and-drop by escape key for testing
- behavior after cancellation drag-and-drop.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::doMouseUp):
- (WebTestRunner::EventSender::finishDragAndDrop):
- (WebTestRunner::EventSender::keyDown):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h: Added VKEY_ESCAPE.
-
-2013-01-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move frame generation related methods to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=107268
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::setWillSendRequestReturnsNull):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::display):
- (WebTestRunner::WebTestDelegate::displayInvalidatedRegion):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::display):
- (WebTestRunner):
- (WebTestRunner::TestRunner::displayInvalidatedRegion):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::display):
- (WebViewHost::displayInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move speech related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=107266
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::displayInvalidatedRegion):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- (WebTestRunner::WebTestDelegate::addMockSpeechInputResult):
- (WebTestRunner::WebTestDelegate::setMockSpeechInputDumpRect):
- (WebTestRunner::WebTestDelegate::addMockSpeechRecognitionResult):
- (WebTestRunner::WebTestDelegate::setMockSpeechRecognitionError):
- (WebTestRunner::WebTestDelegate::wasMockSpeechRecognitionAborted):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner):
- (WebTestRunner::TestRunner::addMockSpeechInputResult):
- (WebTestRunner::TestRunner::setMockSpeechInputDumpRect):
- (WebTestRunner::TestRunner::addMockSpeechRecognitionResult):
- (WebTestRunner::TestRunner::setMockSpeechRecognitionError):
- (WebTestRunner::TestRunner::wasMockSpeechRecognitionAborted):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::addMockSpeechInputResult):
- (WebViewHost::setMockSpeechInputDumpRect):
- (WebViewHost::addMockSpeechRecognitionResult):
- (WebViewHost::setMockSpeechRecognitionError):
- (WebViewHost::wasMockSpeechRecognitionAborted):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move notification related methods to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=107269
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- (WebTestRunner::WebTestDelegate::grantWebNotificationPermission):
- (WebTestRunner::WebTestDelegate::simulateLegacyWebNotificationClick):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner):
- (WebTestRunner::TestRunner::grantWebNotificationPermission):
- (WebTestRunner::TestRunner::simulateLegacyWebNotificationClick):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::grantWebNotificationPermission):
- (WebViewHost::simulateLegacyWebNotificationClick):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move geolocation related methods to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=107267
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::numberOfPendingGeolocationPermissionRequests):
- (WebTestRunner::WebTestDelegate::setGeolocationPermission):
- (WebTestRunner::WebTestDelegate::setMockGeolocationPosition):
- (WebTestRunner::WebTestDelegate::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::numberOfPendingGeolocationPermissionRequests):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setGeolocationPermission):
- (WebTestRunner::TestRunner::setMockGeolocationPosition):
- (WebTestRunner::TestRunner::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::numberOfPendingGeolocationPermissionRequests):
- (WebViewHost::setGeolocationPermission):
- (WebViewHost::setMockGeolocationPosition):
- (WebViewHost::setMockGeolocationPositionUnavailableError):
- * DumpRenderTree/chromium/WebViewHost.h:
-
-2013-01-19 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed build fix for Qt WK2 after r140258.
- Use the size_t type instead of unsigned for the variable
- which holds the position of the first null character in the
- console message.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willAddMessageToConsole):
-
-2013-01-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r140260.
- http://trac.webkit.org/changeset/140260
- https://bugs.webkit.org/show_bug.cgi?id=107387
-
- breaks fast/text/hyphens.html, fast/text/hyphenate-* (but
- nothing else) (Requested by thakis__ on #webkit).
-
- * Scripts/update-webkit-chromium:
-
-2013-01-19 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- Delegated scrolling: Assertion on attempt to show a CSS sticky element
- https://bugs.webkit.org/show_bug.cgi?id=106890
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enabled fixed layout mode in WTR for 'fast/css/sticky' tests.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldUseFixedLayout):
- (WTR):
- (WTR::updateLayoutType):
-
-2013-01-19 Nico Weber <thakis@chromium.org>
-
- Make ninja the default build system for build-webkit --chromium on mac
- https://bugs.webkit.org/show_bug.cgi?id=106737
-
- Reviewed by Eric Seidel.
-
- * Scripts/update-webkit-chromium:
-
-2013-01-19 Zan Dobersek <zdobersek@igalia.com>
-
- [WK2] svg/dom/fuzz-path-parser.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=107133
-
- Reviewed by Alexey Proskuryakov.
-
- Console messages can contain null characters before the end of string.
- Appending such message to the StringBuilder as a WTFString appends the
- complete string, including the null character. This later cuts off everything
- after the null character when the string is being printed out to the test
- output.
-
- To avoid this, truncate the string up to the first null character. This
- preserves the newline character appended immediately after this and
- stops giving incorrect output.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::willAddMessageToConsole):
-
-2013-01-19 Eric Seidel <eric@webkit.org>
-
- Update error regexps so that Parser/html-parser-srcdoc.html can "pass"
- https://bugs.webkit.org/show_bug.cgi?id=107367
-
- Reviewed by Ryosuke Niwa.
-
- Using srcdoc instead of document.write changes the error output
- ever so slightly. Clearly we were already trying to ignore these
- messages, just not succeeding. This change makes this new test "pass" correctly.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
-
-2013-01-18 Dan Winship <danw@gnome.org>
-
- REGRESSION (r139071): run-webkit-httpd complains at launch
- https://bugs.webkit.org/show_bug.cgi?id=107310
-
- Reviewed by Alexey Proskuryakov.
-
- * Scripts/webkitperl/httpd.pm:
- (getApacheVersion): use preferred perl syntax
-
-2013-01-18 Julie Parent <jparent@chromium.org>
-
- Add back 'group' as a default cross dashboard parameter, but with null as its value.
- https://bugs.webkit.org/show_bug.cgi?id=107336
-
- We need to have 'group' listed as a parameter, else we never parse it,
- as we only parse parameters with defaults.
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
-
-2013-01-18 Emil A Eklund <eae@chromium.org>
-
- Update LayoutUnit rounding unit test
- https://bugs.webkit.org/show_bug.cgi?id=107322
-
- Reviewed by Levi Weintraub.
-
- Update the LayoutUnitRounding test to use fromFloatRound for
- values that cannot accurately be represented as a LayoutUnit
- (the default behavior is to floor the value to the nearest
- LayoutUnit).
-
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp:
- (TestWebKitAPI::TEST):
-
-2013-01-18 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- VCSUtils.pm: Stop calling git repo-config.
- https://bugs.webkit.org/show_bug.cgi?id=107294
-
- Reviewed by Dirk Pranke.
-
- The `repo-config' git command has been deprecated since early
- 2008, and recent versions have started warning it is deprecated.
-
- Basically revert r27870 and use the `config' command all the time.
-
- * Scripts/VCSUtils.pm:
- (gitConfig):
-
-2013-01-18 Levi Weintraub <leviw@chromium.org>
-
- LayoutUnit should round half consistently, not away from zero
- https://bugs.webkit.org/show_bug.cgi?id=107208
-
- Reviewed by Eric Seidel.
-
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp: Updating to reflect and
- cover this change in rounding behavior.
-
-2013-01-18 Tim Horton <timothy_horton@apple.com>
-
- [mac] DumpRenderTree/WebKitTestRunner should not participate in Exposé/Mission Control
- https://bugs.webkit.org/show_bug.cgi?id=107234
-
- Reviewed by Simon Fraser.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (createWebViewAndOffscreenWindow): Disable participation in Exposé via NSWindowCollectionBehaviorStationary.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView): Ditto.
-
-2013-01-18 Tim Horton <timothy_horton@apple.com>
-
- [mac] DumpRenderTree/WebKitTestRunner should disable NSBeep
- https://bugs.webkit.org/show_bug.cgi?id=107251
-
- Reviewed by Simon Fraser.
-
- Disable NSBeep in DumpRenderTree and WebKitTestRunner using NSSound SPI.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dumpRenderTree):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
-
-2013-01-18 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Enable indexed database for development builds
- https://bugs.webkit.org/show_bug.cgi?id=107299
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/webkitperl/FeatureList.pm: Enable indexed database by default
- for GTK+ development builds.
-
-2013-01-18 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Improve table-guessing heuristics
- https://bugs.webkit.org/show_bug.cgi?id=107042
-
- Reviewed by Chris Fleizach.
-
- Implement parentElementCallback on Chromium to make testing easier.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::parentElementCallback):
-
-2013-01-18 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add property for IndexedDB database path to WebKitGTK+
- https://bugs.webkit.org/show_bug.cgi?id=106136
-
- Reviewed by Gustavo Noronha Silva.
-
- During testing, set the web database directory to DUMPRENDERTREE_TEMP
- before falling back to the old default. This is necessary because
- indexed database tests require that each DRT shard is using a different
- IDB database location.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (temporaryDatabaseDirectory): Added this helper for getting the
- database directory.
- (setDefaultsToConsistentStateValuesForTesting): Use the new helper.
-
-2013-01-18 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Enable API test InjectedBundleFrameHitTest on EFL
- https://bugs.webkit.org/show_bug.cgi?id=107264
-
- Reviewed by Laszlo Gombos.
-
- Enable API test InjectedBundleFrameHitTest for hit-testing,
- since it is now passing on both Debug and Release builds.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2013-01-18 Manuel Rego Casasnovas <rego@igalia.com>
-
- [GTK] Implement TestRunner::addUserScript
- https://bugs.webkit.org/show_bug.cgi?id=107275
-
- Reviewed by Philippe Normand.
-
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::addUserScript): Implement method using
- DumpRenderTreeSupportGtk::addUserScript.
-
-2013-01-18 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- Unreviewed, add my secondary email address to the list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-18 Dan Carney <dcarney@google.com>
-
- [chromium] move pointerlock functions to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=107241
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::didAcquirePointerLock):
- (WebTestRunner::WebTestDelegate::didNotAcquirePointerLock):
- (WebTestRunner::WebTestDelegate::didLosePointerLock):
- (WebTestRunner::WebTestDelegate::setPointerLockWillRespondAsynchronously):
- (WebTestRunner::WebTestDelegate::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner):
- (WebTestRunner::TestRunner::didAcquirePointerLock):
- (WebTestRunner::TestRunner::didNotAcquirePointerLock):
- (WebTestRunner::TestRunner::didLosePointerLock):
- (WebTestRunner::TestRunner::setPointerLockWillRespondAsynchronously):
- (WebTestRunner::TestRunner::setPointerLockWillFailSynchronously):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-14 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] Update freetype in jhbuild to 2.4.11 and activate subpixel layout
- https://bugs.webkit.org/show_bug.cgi?id=106774
-
- Reviewed by Martin Robinson.
-
- In order to fix a long standing linespacing/font ascent & descent issue
- we found that FreeType commit b0962ac34e660 solves that problem.
- Let's update FreeType accordingly, but bump it to 2.4.11 due to the
- maintainer recommending several security updates after that said commit.
-
- Also, in order to avoid extra rebaselining, let's activate subpixel
- layout at the same time.
-
- * efl/jhbuild.modules: New freetype 2.4.11
-
-2013-01-17 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - Accept http/file URL when running drt-launcher from command line
- https://bugs.webkit.org/show_bug.cgi?id=107107
- PR 282192
-
- Reviewed by Rob Buis.
-
- The DRT application will convert relative/absolute file path to
- file://<real-file-path> format, so we only check for http/file prefix.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::isFullUrl):
- (WebKit):
- (BlackBerry::WebKit::DumpRenderTree::runCurrentTest):
-
-2013-01-17 Frank Farzan <frankf@chromium.org>
-
- Flakiness dashboard: Add ChromiumFYI master
- https://bugs.webkit.org/show_bug.cgi?id=107180
-
- Reviewed by Ojan Vafai.
-
- This is needed to enable Chrome Android bots
- to upload results for instrumentation tests.
-
- * TestResultServer/generate_builders_json.py:
- (main):
- * TestResultServer/static-dashboards/builders.jsonp:
-
-2013-01-17 Frank Farzan <frankf@chromium.org>
-
- Add Chrome on Android instrumentation test types to flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=106964
-
- Reviewed by Ojan Vafai.
-
- Specifically, add these test types:
-
- androidwebview_instrumentation_tests
- chromiumtestshell_instrumentation_tests
- contentshell_instrumentation_tests
-
- Also, add ChromiumFYI to the list of masters.
-
- * TestResultServer/static-dashboards/builders.js:
- (loadBuildersList):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (currentBuilderGroupCategory):
-
-2013-01-17 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Fixing webkitpy's SCM unit tests.
- https://bugs.webkit.org/show_bug.cgi?id=106429
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/detection_unittest.py:
- (SCMDetectorTest.test_detect_scm_system):
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.in_working_directory):
- (Git.read_git_config):
- (Git._assert_can_squash):
- (Git.remote_branch_ref):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (GitSVNTest.test_commit_with_message_multiple_local_commits_always_squash):
- (GitTestWithMock):
- (GitTestWithMock.make_scm):
- (GitTestWithMock.test_create_patch):
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.assert_outputs):
- (OutputCaptureTestCaseBase):
- * Scripts/webkitpy/test/printer.py:
- (Printer.configure):
-
-2013-01-17 Julie Parent <jparent@chromium.org>
-
- Flakiness dashboard assumes there must be ToT tests
- https://bugs.webkit.org/show_bug.cgi?id=107155
-
- Remove group as a default parameter, since we can't actually know
- the name of a group initially. Instead, introduces
- currentBuilderGroupName which returns the current builder group
- if it has been explicitly set, or picks the first one available
- as a default. Allows us to remove some extra code tracking this
- stuff as well.
-
- Reviewed by Ojan Vafai.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseCrossDashboardParameters):
- (currentBuilderGroupName):
- (currentBuilderGroup):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (platformAndBuildType):
- * TestResultServer/static-dashboards/loader.js:
- (.):
-
-2013-01-16 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove NodeListsNodeData when it's no longer needed
- https://bugs.webkit.org/show_bug.cgi?id=107074
-
- Reviewed by Darin Adler.
-
- Generalize the warning a little so that it's also ignored on PerformanceTests/DOM/TraverseChildNodes.html
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
-
-2013-01-17 Simon Fraser <simon.fraser@apple.com>
-
- Ref test images are upside-down in WebKit2
- https://bugs.webkit.org/show_bug.cgi?id=105457
-
- Reviewed by Sam "Speedy" Weinig.
-
- The bitmap context created in TestInvocation::dumpPixelsAndCompareWithExpected()
- from the window snapshot contained a flipped copy of the image, causing all ref
- and pixel images to be upside-down.
-
- * WebKitTestRunner/cg/TestInvocationCG.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2013-01-17 Timothy Loh <timloh@google.com>
-
- Replaced specifiers variable with is_debug in builders.py
- https://bugs.webkit.org/show_bug.cgi?id=107057
-
- Reviewed by Dirk Pranke.
-
- Replaced specifiers variable with is_debug in builders.py to simplify
- Bug 106259. The other specifiers are not used elsewhere in the code.
- Fixed builder_name_for_port_name to return a debug builder if we don't
- have a release builder.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (all_port_names):
- (builder_name_for_port_name):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineExpectations.test_rebaseline_expectations):
-
-2013-01-17 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Build with LevelDB when IndexedDB is enabled
- https://bugs.webkit.org/show_bug.cgi?id=103220
-
- Reviewed by Gustavo Noronha Silva.
-
- * Scripts/webkitpy/style/checker.py: Do not style check the leveldb source code
- as it does not conform to WebKit style.
-
-2013-01-17 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Fix misuse of ASSERT on ecore_evas_init()
- https://bugs.webkit.org/show_bug.cgi?id=107119
-
- Reviewed by Laszlo Gombos.
-
- Do not use ASSERT on ecore_evas_init(), since the expression inside
- the macro compiles out of release builds.
-
- * TestWebKitAPI/PlatformEfl.cmake: Enable API test UserMessage.
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::initEcoreEvas): Remove ASSERT on ecore_evas_init().
-
-2013-01-17 Eugene Klyuchnikov <eustas@chromium.org>
-
- Web Inspector: Profiler: split "getProfile" to "getCPUProfile" and "loadHeapSnapshot"
- https://bugs.webkit.org/show_bug.cgi?id=104545
-
- Reviewed by Yury Semikhatsky.
-
- Adopt signature changes.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/LeaksViewer/WebInspectorShims.js:
- (ProfilerAgent.getCPUProfile): Renamed.
- (ProfilerAgent.getHeapSnapshot): Added.
-
-2013-01-17 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK][EFL] NWRT should check that Xvfb is installed
- https://bugs.webkit.org/show_bug.cgi?id=71767
-
- Reviewed by Dirk Pranke.
-
- EFL and GTK ports now check that Xvfb is installed before running
- layout tests. The command line used to check whether Xvfb is present
- is a simple `which Xvfb` that should return 0 as the exit code upon
- success.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.show_results_html_file):
- (EflPort):
- (EflPort.check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver):
- (XvfbDriver.check_xvfb):
-
-2013-01-16 Alan Cutter <alancutter@chromium.org>
-
- sheriffbot can't tell me who "kov" is
- https://bugs.webkit.org/show_bug.cgi?id=106184
-
- Reviewed by Eric Seidel.
-
- Added glob style searching to the CommitterList contributors_by_search_string function so exact matches are favoured.
-
- * Scripts/webkitpy/common/config/committers.py:
- (Account.matches_glob):
- (CommitterList.contributors_by_search_string):
- * Scripts/webkitpy/common/config/committers_unittest.py:
- (CommittersTest.test_committer_lookup):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Whois):
-
-2013-01-16 David Kilzer <ddkilzer@apple.com>
-
- Use xcrun to find path to make for Mac port
- <http://webkit.org/b/107091>
-
- Reviewed by Dan Bernstein.
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort._build_java_test_support): Call self.make_command().
- (MacPort.make_command): Add. Call xcrun_find().
- (MacPort.nm_command): Use self.xcrun_find().
- (MacPort.xcrun_find): Add. Extract from nm_command().
-
-2013-01-16 Sam Weinig <sam@webkit.org>
-
- Make debug-safari --target-web-process work again
- https://bugs.webkit.org/show_bug.cgi?id=107088
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (execMacWebKitAppForDebugging):
- The shim is now called SecItemShim.
-
-2013-01-16 Alan Cutter <alancutter@chromium.org>
-
- GCE build scripts don't take working directory into account when calling findzone.sh
- https://bugs.webkit.org/show_bug.cgi?id=106962
-
- Reviewed by Adam Barth.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
-
-2013-01-16 Alan Cutter <alancutter@chromium.org>
-
- start-queue.sh does not pass remaining parameters correctly
- https://bugs.webkit.org/show_bug.cgi?id=107054
-
- Reviewed by Adam Barth.
-
- start-queue.sh now passes all remaining params to the webkit-patch command.
- Previously only one additional queue parameter could be sent.
-
- * EWSTools/start-queue.sh:
-
-2013-01-16 Xueqing Huang <huangxueqing@baidu.com>
-
- check-webkit-style script cannot running in Chinese windows.
- https://bugs.webkit.org/show_bug.cgi?id=87548
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo._win_version_tuple_from_cmd):
-
-2013-01-16 Dirk Pranke <dpranke@chromium.org>
-
- Delete an extraneous print statement.
- https://bugs.webkit.org/show_bug.cgi?id=106562
-
- Delete the extraneous print statement introduced in r139841.
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_found):
-
-2013-01-16 Zan Dobersek <zdobersek@igalia.com>
-
- Please reinstate --pixel
- https://bugs.webkit.org/show_bug.cgi?id=101995
-
- Reviewed by Dirk Pranke.
-
- Add the '--pixel' and '--no-pixel' options for NRWT as aliases for
- the '--pixel-tests' (or '-p') and '--no-pixel-tests' options respectively.
- Some developers are still used to these options that were available in the ORWT.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
-
-2013-01-16 Eric Seidel <eric@webkit.org>
-
- Remove --shark* support from sunspider/run-sunspider now that Shark is dead
- https://bugs.webkit.org/show_bug.cgi?id=99512
-
- Reviewed by Darin Adler.
-
- * Scripts/run-sunspider:
-
-2013-01-16 Eric Seidel <eric@webkit.org>
-
- Remove webkitpy Visual Studio files, as core developers are not interested in maintaining them
- https://bugs.webkit.org/show_bug.cgi?id=106036
-
- Reviewed by Darin Adler.
-
- * Scripts/webkitpy/webkitpy.pyproj: Removed.
- * Scripts/webkitpy/webkitpy.sln: Removed.
-
-2013-01-16 Chris Hopman <cjhopman@chromium.org>
-
- [Chromium] Remove hardcoded chromium_*.jar in gyp files
- https://bugs.webkit.org/show_bug.cgi?id=104049
-
- Reviewed by Eric Seidel.
-
- Targets with dependencies (direct/indirect) on a java target receive
- the chromium_*.jar paths in the variable input_jars_paths. Targets
- should use that rather than hardcoding where they think the jar will
- be. These can be passed directly to ant as INPUT_JARS_PATHS rather
- than as --jars to generate_native_test.py.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2013-01-16 Dan Carney <dcarney@google.com>
-
- [chromium] move setMockDeviceOrientation to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106895
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestRunner::WebTestDelegate::setDeviceOrientation):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setMockDeviceOrientation):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setDeviceOrientation):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] route more webkit_support and webviewhost callbacks through WebTestDelegate
- https://bugs.webkit.org/show_bug.cgi?id=106904
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::notifyDone):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::setDeviceScaleFactor):
- (WebTestRunner::WebTestDelegate::setFocus):
- (WebTestRunner::WebTestDelegate::setAcceptAllCookies):
- (WebTestRunner::WebTestDelegate::pathToLocalResource):
- (WebTestRunner::WebTestDelegate::setLocale):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setAlwaysAcceptCookies):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setWindowIsKey):
- (WebTestRunner::TestRunner::pathToLocalResource):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::setPOSIXLocale):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::taskList):
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setDeviceScaleFactor):
- (WebViewHost::setFocus):
- (WebViewHost::setAcceptAllCookies):
- (WebViewHost::pathToLocalResource):
- (WebViewHost::setLocale):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-16 Sergio Villar Senin <svillar@igalia.com>
-
- [GTK] build-webkit fails if the jhbuild wrapper is not used
- https://bugs.webkit.org/show_bug.cgi?id=106769
-
- Reviewed by Martin Robinson.
-
- Return an empty array instead of "" in
- jhbuildWrapperPrefixIfNeeded() because otherwise that empty string
- will not be recognized as a valid command when the returned array
- is directly passed to perl's system() call.
-
- * Scripts/webkitdirs.pm:
- (jhbuildWrapperPrefixIfNeeded):
-
-2013-01-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add title text direction attribute to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=106907
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::setTitleTextDirection):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setTitleTextDirection):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didReceiveTitle):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveTitle):
-
-2013-01-16 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- NRWT still confused about test count with --repeat-each and --iterations
- https://bugs.webkit.org/show_bug.cgi?id=106562
-
- Reviewed by Dirk Pranke.
-
- Fix the printed unique test count and skipped count. This
- seems to have broken in r127688 ("NRWT lies about the number
- of tests that it's skipping when used with --repeat-each").
-
- Also add a test for print_found()
-
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_found):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_details):
- (Testprinter):
- (Testprinter.test_found):
-
-2013-01-15 Zan Dobersek <zdobersek@igalia.com>
-
- Unreviewed follow-up to r139769.
-
- Note that omitting the WebKit1 code from the build now
- works for GTK as well.
-
- * Scripts/build-webkit:
-
-2013-01-15 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: truncate output to the terminal width when necessary
- https://bugs.webkit.org/show_bug.cgi?id=106973
-
- Reviewed by Ojan Vafai.
-
- this implements the same logic for test-webkitpy that we have
- for run-webkit-tests (and ninja).
-
- No tests written as this is exercised by running test-webkitpy itself.
-
- * Scripts/webkitpy/test/printer.py:
- (Printer.configure):
- (Printer._test_line):
-
-2013-01-15 Dirk Pranke <dpranke@chromium.org>
-
- remove extraneous output in test-webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=106971
-
- Reviewed by Ojan Vafai.
-
- We weren't ignoring or capturing the echoed output from
- these two tests, and getting noise in the logs as a result.
-
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_auto_stringify_args):
- (ExecutiveTest.test_popen_args):
-
-2013-01-15 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy.layout_tests.servers.http_server_unittest.TestHttpServer.test_win32_start_and_stop is flaky
- https://bugs.webkit.org/show_bug.cgi?id=106974
-
- Reviewed by Ryosuke Niwa.
-
- I forgot to stub out the call to check to ensure that the ports were
- available, so this test could fail if something was listening on 8000 or
- 8443 on the machine.
-
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_win32_start_and_stop):
-
-2013-01-15 Levi Weintraub <leviw@chromium.org>
-
- Unreviewed, rolling out r139792.
- http://trac.webkit.org/changeset/139792
- https://bugs.webkit.org/show_bug.cgi?id=106970
-
- Broke the windows build.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::notifyDone):
- (DRTTestRunner::reset):
- (DRTTestRunner::setAlwaysAcceptCookies):
- (DRTTestRunner::setWindowIsKey):
- (DRTTestRunner::pathToLocalResource):
- (DRTTestRunner::setPOSIXLocale):
- (InvokeCallbackTask):
- (InvokeCallbackTask::InvokeCallbackTask):
- (InvokeCallbackTask::runIfValid):
- (DRTTestRunner::setBackingScaleFactor):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- (DRTTestRunner::taskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::setDatabaseQuota):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setDatabaseQuota):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setPendingExtraData):
- (WebViewHost::setDeviceScaleFactor):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-15 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r139357. The port name of MacWK2EWS should be 'mac-wk2'.
-
- * Scripts/webkitpy/common/config/ports.py:
- (MacWK2Port):
-
-2013-01-15 Alan Cutter <alancutter@chromium.org>
-
- Extend sheriffbot's "help" command to be able to get help on individual commands
- https://bugs.webkit.org/show_bug.cgi?id=106629
-
- Reviewed by Eric Seidel.
-
- Added a help command to sheriffbot.
- Fixed some style issues and ordered the commands alphabetically.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (IRCCommand):
- (IRCCommand.execute):
- (IRCCommand.usage):
- (IRCCommand.help):
- (CreateBug):
- (CreateBug.execute):
- (Help):
- (Help.execute):
- (Help._post_command_help):
- (Hi):
- (Hi.execute):
- (Restart):
- (RollChromiumDEPS):
- (RollChromiumDEPS._parse_args):
- (RollChromiumDEPS._expand_irc_nickname):
- (RollChromiumDEPS.execute):
- (Rollout):
- (Rollout._extract_revisions):
- (Rollout.execute):
- (Sheriffs):
- (Sheriffs.execute):
- (Whois):
- (Whois.execute):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_help):
-
-2013-01-15 Enrica Casucci <enrica@apple.com>
-
- Add a new set of WebKit2 APIs for text search and
- search results management.
- https://bugs.webkit.org/show_bug.cgi?id=106834.
- <rdar://problem/12597159>
-
- Added new test for the new WebKit2 API for
- text search.
-
- Reviewed by Simon Fraser.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2/FindMatches.mm: Added.
-
-2013-01-15 Levi Weintraub <leviw@chromium.org>
-
- [chromium] route more webkit_support and webviewhost callbacks through WebTestDelegate
- https://bugs.webkit.org/show_bug.cgi?id=106904
-
- Reverting 139794. It broke the build. It appears that a header file,
- WebTextDirection.h, was left out.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner::setTitleTextDirection):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didReceiveTitle):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveTitle):
-
-2013-01-15 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] route more webkit_support and webviewhost callbacks through WebTestDelegate
- https://bugs.webkit.org/show_bug.cgi?id=106904
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::notifyDone):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::setDeviceScaleFactor):
- (WebTestRunner::WebTestDelegate::setFocus):
- (WebTestRunner::WebTestDelegate::setAcceptAllCookies):
- (WebTestRunner::WebTestDelegate::pathToLocalResource):
- (WebTestRunner::WebTestDelegate::setLocale):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setAlwaysAcceptCookies):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setWindowIsKey):
- (WebTestRunner::TestRunner::pathToLocalResource):
- (WebTestRunner::TestRunner::setBackingScaleFactor):
- (WebTestRunner::TestRunner::setPOSIXLocale):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner::TestRunner::taskList):
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setDeviceScaleFactor):
- (WebViewHost::setFocus):
- (WebViewHost::setAcceptAllCookies):
- (WebViewHost::pathToLocalResource):
- (WebViewHost::setLocale):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-15 Zan Dobersek <zdobersek@igalia.com>
-
- Tests with WontFix expectation are (indirectly) skipped
- https://bugs.webkit.org/show_bug.cgi?id=105860
-
- Reviewed by Dirk Pranke.
-
- Only skip the WontFix expectation if there are no other layout test
- expectations (like Failure, ImageOnlyFailure) listed for the test.
- This makes it possible to run an expected failure for which there
- is no reason or interest to fix. There are some ports that would like
- to exercise this behavior as well as specific test cases that should use
- such expectations.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._tokenize_line): Only add the SKIP modifier for a
- WONTFIX test if there are no expectations listed. The warning is adjusted
- to reflect the new behavior.
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py: Add
- and adjust test cases for these changes.
- (ExpectationSyntaxTests.test_wontfix):
- (SemanticTests.test_skip_and_wontfix):
-
-2013-01-15 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add title text direction attribute to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=106907
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::setTitleTextDirection):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setTitleTextDirection):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::didReceiveTitle):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didReceiveTitle):
-
-2013-01-15 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: change the default # of locked shards on chromium_win to 1
- https://bugs.webkit.org/show_bug.cgi?id=106938
-
- Reviewed by Eric Seidel.
-
- It looks like LigHTTPd might be buggy or unstable if we are
- running multiple http tests in parallel; see
- http://code.google.com/p/chromium/issues/detail?id=169530 for more
- context as well. This change will stop running http tests in parallel
- and we can see if this fixes things.
-
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort.default_max_locked_shards):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_path_to_image_diff):
- (ChromiumWinTest):
- (ChromiumWinTest.test_default_max_locked_shards):
-
-2013-01-15 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebDatabase related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106905
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::clearAllDatabases):
- (WebTestRunner::WebTestDelegate::setDatabaseQuota):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::clearAllDatabases):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setDatabaseQuota):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::clearAllDatabases):
- (WebViewHost::setDatabaseQuota):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-15 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Renaming CleanWorkingDirectory step to DiscardLocalChanges to make
- functionality match the name.
- https://bugs.webkit.org/show_bug.cgi?id=106870
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/commands/download.py:
- (Clean):
- (Update):
- (Build):
- (BuildAndTest):
- (CheckStyle):
- (BuildAttachment):
- (BuildAndTestAttachment):
- (AbstractPatchApplyingCommand):
- (ApplyWatchList):
- (AbstractPatchLandingCommand):
- (CreateRollout):
- * Scripts/webkitpy/tool/steps/__init__.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- (CleanWorkingDirectory.options):
- (CleanWorkingDirectory.run):
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py:
- * Scripts/webkitpy/tool/steps/discardlocalchanges.py: Copied from Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py.
- * Scripts/webkitpy/tool/steps/discardlocalchanges_unittest.py: Copied from Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py.
-
-2013-01-15 Zan Dobersek <zandobersek@gmail.com>
-
- [Autotools] Add support for WebKit2-only builds
- https://bugs.webkit.org/show_bug.cgi?id=106889
-
- Reviewed by Gustavo Noronha Silva.
-
- * GNUmakefile.am: Only build the GtkLauncher and DumpRenderTree if building WebKit1.
- * Scripts/build-webkit: Pass along the information on whether to build WebKit1 when
- building the GTK port through build-webkit.
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject): Add the --disable-webkit1 configuration flag to the build
- arguments when not building WebKit1.
- (buildGtkProject): Pass along the information on whether to build WebKit1 when building
- through the Autotools build system.
-
-2013-01-15 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable Performance Timeline, Resource Timing, Navigation Timing features
- https://bugs.webkit.org/show_bug.cgi?id=106197
-
- Reviewed by Martin Robinson.
-
- * Scripts/webkitperl/FeatureList.pm: Add the configuration options for all three
- features. Enable them on GTK, meaning they will be enabled in development builds
- (i.e. when building with build-webkit).
-
-2013-01-15 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Enable CSS Image Resolution feature
- https://bugs.webkit.org/show_bug.cgi?id=99038
-
- Reviewed by Gustavo Noronha Silva.
-
- Enable the CSS Image Resolution feature for the development
- builds of the GTK port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-15 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Stop passing the unstable features flag to configure script when using build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=106579
-
- Reviewed by Gustavo Noronha Silva.
-
- The --enable-unstable-features flag is not required to be passed anymore
- to the configure script as it was removed in r138252.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2013-01-15 Tony Chang <tony@chromium.org>
-
- [chromium] Unreviewed, fix a bug where we don't properly shutdown lighttpd.
-
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd._check_and_kill): Pass /pid so taskkill.exe doesn't error out on us.
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_win32_start_and_stop):
-
-2013-01-15 Joshua Bell <jsbell@chromium.org>
-
- Unreviewed. Adding Michael Pruett as contributor.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-15 Victor Carbune <victor@rosedu.org>
-
- Unreviewed. Update my email addresses.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-15 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Waiting on the gdb process will lead to deadlock
- https://bugs.webkit.org/show_bug.cgi?id=106906
-
- Reviewed by Philippe Normand.
-
- Use communicate() rather than wait() on the Popen object that's running the gdb
- command. This avoids the deadlock that occurs on the GTK builders.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._get_gdb_output):
-
-2013-01-15 Zan Dobersek <zdobersek@igalia.com>
-
- [GTK] Limit the number of frames printed out when backtracing with gdb
- https://bugs.webkit.org/show_bug.cgi?id=106901
-
- Reviewed by Philippe Normand.
-
- Printing an unlimited number of frames when dumping the gdb backtracing
- output can cause timeouts in the builders. This patch limits the number
- of frames that are printed out to 1024.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._get_gdb_output):
-
-2013-01-15 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Fix ImageDiff's image format conversion
- https://bugs.webkit.org/show_bug.cgi?id=106880
-
- Reviewed by Csaba Osztrogonác.
-
- Besides actually doing the conversion this also silences the suspicious warning:
- "ignoring return value of function declared with warn_unused_result attribute".
-
- * ImageDiff/qt/ImageDiff.cpp:
- (main): QImage::convertToFormat, contrary to the assumed behaviour, returns a
- copy of the image in the given format and does not alter the image itself.
-
-2013-01-15 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move remaining methods that just set a boolean flag to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106823
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldDumpBackForwardList):
- (WebTestRunner::WebTestRunner::deferMainResourceDataLoad):
- (WebTestRunner::WebTestRunner::shouldDumpSelectionRect):
- (WebTestRunner::WebTestRunner::testRepaint):
- (WebTestRunner::WebTestRunner::sweepHorizontally):
- (WebTestRunner::WebTestRunner::isPrinting):
- (WebTestRunner::WebTestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpBackForwardList):
- (WebTestRunner):
- (WebTestRunner::TestRunner::deferMainResourceDataLoad):
- (WebTestRunner::TestRunner::shouldDumpSelectionRect):
- (WebTestRunner::TestRunner::testRepaint):
- (WebTestRunner::TestRunner::sweepHorizontally):
- (WebTestRunner::TestRunner::isPrinting):
- (WebTestRunner::TestRunner::shouldStayOnPageAfterHandlingBeforeUnload):
- (WebTestRunner::TestRunner::dumpBackForwardList):
- (WebTestRunner::TestRunner::setDeferMainResourceDataLoad):
- (WebTestRunner::TestRunner::dumpSelectionRect):
- (WebTestRunner::TestRunner::repaintSweepHorizontally):
- (WebTestRunner::TestRunner::setPrinting):
- (WebTestRunner::TestRunner::setShouldStayOnPageAfterHandlingBeforeUnload):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-01-14 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: stub out show_results_html for mock ports
- https://bugs.webkit.org/show_bug.cgi?id=106848
-
- Reviewed by Ojan Vafai.
-
- We were accidentally using the underlying ports'
- show_results_html_file() implementation, which would, unsurprisingly,
- fail in many cases (e.g., running mock-efl on the mac).
-
- No test added since we don't generally add tests for the mock
- implementation.
-
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- (MockDRTPort.show_results_html_file):
-
-2013-01-14 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Changing clean_working_directory/clean_local_commits and related
- functions to have consistent naming.
-
- https://bugs.webkit.org/show_bug.cgi?id=104198
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory.py:
- * Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py:
-
-2013-01-14 Alan Cutter <alancutter@chromium.org>
-
- Fix EWS GCE build scripts to detect which zone is available
- https://bugs.webkit.org/show_bug.cgi?id=106524
-
- Reviewed by Adam Barth.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh:
- * EWSTools/GoogleComputeEngine/findzone.sh: Added.
-
-2013-01-14 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Adding an error string to AmbiguousCommitError.
- https://bugs.webkit.org/show_bug.cgi?id=106846
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (AmbiguousCommitError.__init__):
-
-2013-01-14 Dirk Pranke <dpranke@chromium.org>
-
- kill whole lighttpd process tree for chromium win
- https://bugs.webkit.org/show_bug.cgi?id=106838
-
- Reviewed by Tony Chang.
-
- Land a speculative fix for lighttpd.exe hanging on some chromium bots;
- I think a test is causing a httpd server child process to wedge and
- killing the parent httpd server process isn't sufficient to ensure
- that the children are also killed.
-
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- (Lighttpd._check_and_kill):
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_start_cmd):
- (TestHttpServer):
- (TestHttpServer.test_win32_start_and_stop):
- (TestHttpServer.test_win32_start_and_stop.wait_for_action):
- (TestHttpServer.test_win32_start_and_stop.mock_returns):
- (TestHttpServer.test_win32_start_and_stop.mock_returns.return_value_thunk):
-
-2013-01-14 Nico Weber <thakis@chromium.org>
-
- [chromium] Enable `update-webkit --chromium --ninja` on windows
- https://bugs.webkit.org/show_bug.cgi?id=106836
-
- Reviewed by Eric Seidel.
-
- After running this, build-webkit --chromium will use ninja to build.
- Apparently there are some minor issues with that still, so it's
- not quite ready for use yet.
-
- * Scripts/webkitdirs.pm:
- (determineIsChromiumNinja):
- (buildChromium):
-
-2013-01-14 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: use the same search path for baselines and TestExpectations on apple mac
- https://bugs.webkit.org/show_bug.cgi?id=105599
-
- Reviewed by Ryosuke Niwa.
-
- Bug 105583 revealed some confusion due to the fact that the Apple
- Mac port used a different list of directories to search for baselines
- and TestExpectations files (actually, pretty much every port does).
-
- It seems like a good idea to use the same list for both by default, but
- making this happen will affect every port in slightly different ways, so
- we'll try this on the Apple Mac port first.
-
- Note that the effective changes for this are that:
- 1) The apple mac port will look in platform/wk2 for baselines where
- it didn't before (it will look after looking in mac-wk2 but before
- the non-wk2 dirs)
- 2) The apple mac-snowleopard port will use the expectations in
- mac-lion as well as the expectations in mac-snowleopard, although
- I'm not even sure if mac-snowleopard is still supported ...
-
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_baseline_search_path):
- (MacPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_baseline_search_path):
-
-2013-01-14 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Need to implement ColorWellRole
- https://bugs.webkit.org/show_bug.cgi?id=106756
-
- Reviewed by Chris Fleizach.
-
- Returns a string representation of the value of a color
- when the role is Color Well, to make it easy to write layout
- tests for color controls.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
-
-2013-01-14 Dominic Mazzoni <dmazzoni@google.com>
-
- Chromium: Error in AccessibilityUIElement::intValueGetterCallback
- https://bugs.webkit.org/show_bug.cgi?id=106682
-
- Reviewed by Chris Fleizach.
-
- Modify Chromium's DRT implementation of intValue to return a
- different value depending on the role.
-
- There are actually platform-specific differences in what should
- be returned in the "value" of an object, so Chromium normally keeps
- these separate (i.e. valueForRange, headingLevel, hierarchicalLevel, etc.)
- but this is a fine simplification to make cross-platform tests easier.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::intValueGetterCallback):
-
-2013-01-14 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move remaining methods to dump WebViewClient callbacks to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106785
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::setStatusText):
- (WebTestRunner::WebTestProxy::didStopLoading):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldDumpStatusCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpProgressFinishedCallback):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpStatusCallbacks):
- (WebTestRunner):
- (WebTestRunner::TestRunner::shouldDumpProgressFinishedCallback):
- (WebTestRunner::TestRunner::dumpWindowStatusChanges):
- (WebTestRunner::TestRunner::dumpProgressFinishedCallback):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::setStatusText):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::didStopLoading):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didStopLoading):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-14 Andrey Lushnikov <lushnikov@chromium.org>
-
- Web Inspector: devtools front-end doesn't have focus in TestShell
- https://bugs.webkit.org/show_bug.cgi?id=106778
-
- Reviewed by Pavel Feldman.
-
- Focus devTools window after loadURL method.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2013-01-14 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][jhbuild] Build the GStreamer-related dependencies with the "configure" script
- https://bugs.webkit.org/show_bug.cgi?id=106573
-
- Reviewed by Philippe Normand.
-
- Similarly to what's been described in bug 106569, we're building
- from release tarballs, so there's no reason to regenerate the
- autoconf-related stuff with autogen.sh, especially since we might
- run into trouble with automake 1.13 and deprecated macros.
-
- * efl/jhbuild.modules:
-
-2013-01-14 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] The Qt's configuration isn't honoured regarding the use of the system libpng and libjpeg
- https://bugs.webkit.org/show_bug.cgi?id=104909
-
- Reviewed by Simon Hausmann.
-
- To be able to build redistribuable binary packages, Qt's configure switches
- -qt-libpng and -qt-libjpeg are used to avoid having the binaries trying to
- dynamically link to optional system libraries.
- QtWebKit is doing its own configure checks for those libraries, thus adding a
- runtime dependency that might not be fulfilled if the packager's machine had
- those libraries while the user's machine won't.
-
- Since in most cases where WebKit will want to use those system libraries, Qt will
- also be using them, remove these configure tests from WebKit.
-
- * qmake/config.tests/libjpeg/libjpeg.cpp: Removed.
- * qmake/config.tests/libjpeg/libjpeg.pro: Removed.
- * qmake/config.tests/libpng/libpng.cpp: Removed.
- * qmake/config.tests/libpng/libpng.pro: Removed.
- * qmake/mkspecs/features/features.prf:
-
-2013-01-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][jhbuild] Bump the EFL dependencies in jhbuild to 1.7.5.
- https://bugs.webkit.org/show_bug.cgi?id=106574
-
- Reviewed by Laszlo Gombos.
-
- Rely on a more recent stable release, which includes support for
- Lua 5.2 in Edje and other assorted minor fixes.
-
- While here, also use the "configure" script to build the libraries
- instead of relying on autogen.sh, which is not really needed with
- a release tarball and may have problems with automake 1.13.
-
- * efl/jhbuild.modules:
-
-2013-01-14 Andrey Lushnikov <lushnikov@chromium.org>
-
- Web Inspector: fix DRT to deliver simulated events to devtools front-end
- https://bugs.webkit.org/show_bug.cgi?id=106650
-
- Reviewed by Pavel Feldman.
-
- Add separated m_devToolsTestInterfaces object to testShell which is
- bind to devTools webview.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
- (TestShell::showDevTools):
- (TestShell::resetTestController):
- (TestShell::bindJSObjectsToWindow):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2013-01-14 Alan Cutter <alancutter@chromium.org>
-
- Sheriffbot command aliases need test cases
- https://bugs.webkit.org/show_bug.cgi?id=106754
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/commands/sheriffbot_unittest.py:
- (SheriffBotTest.test_command_aliases):
-
-2013-01-13 Alan Cutter <alancutter@chromium.org>
-
- Allow users to misspell the "sheriffs" command in sheriffbot
- https://bugs.webkit.org/show_bug.cgi?id=106628
-
- Reviewed by Steve Block.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
-
-2013-01-13 Alan Cutter <alancutter@chromium.org>
-
- Make "gardeners" an alias for "sheriffs" in sherrifbot
- https://bugs.webkit.org/show_bug.cgi?id=106627
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
-
-2013-01-13 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] webkitpy-test: executive.py stringify_args error on the release test bot
- https://bugs.webkit.org/show_bug.cgi?id=105380
-
- Reviewed by Eric Seidel.
-
- Fix a regression introduced in r137692 where we were double-encoding
- the arguments to popen(); this was only an issue on windows, where
- we would try to encode something to mbcs, then try to encode it
- to unicode as if the input as ascii.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.run_command):
-
-2013-01-13 Alan Cutter <alancutter@chromium.org>
-
- State who told sheriffbot to roll the Chromium deps and to what revision
- https://bugs.webkit.org/show_bug.cgi?id=106626
-
- Reviewed by Eric Seidel.
-
- Added optional argument to post-chromium-deps-roll so Sheriffbot can specify ChangeLog message.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (RollChromiumDEPS._expand_irc_nickname):
- (RollChromiumDEPS.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_roll_chromium_deps):
- * Scripts/webkitpy/tool/bot/sheriff.py:
- (Sheriff.post_chromium_deps_roll):
- * Scripts/webkitpy/tool/commands/roll.py:
- (RollChromiumDEPS._prepare_state):
- (PostChromiumDEPSRoll):
- (PostChromiumDEPSRoll._prepare_state):
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- (PostRollCommandsTest.test_prepare_state):
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:
- (PrepareChangeLogForDEPSRoll.run):
-
-2013-01-13 Alan Cutter <alancutter@chromium.org>
-
- Add Alan Cutter as contributor
- https://bugs.webkit.org/show_bug.cgi?id=106747
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-13 Jonathan Liu <net147@gmail.com>
-
- Fix CONFIG missing link_pkgconfig on Windows
- https://bugs.webkit.org/show_bug.cgi?id=106647
-
- Some libraries (e.g. libxslt, libxml2 and sqlite3) fail to link
- properly on Windows because they are added to PKGCONFIG but
- CONFIG does not contain link_pkgconfig.
-
- This is because link_pkgconfig is added in unix/default_pre.prf
- which is only used for UNIX platforms. To fix this, move it to
- the general default_pre.prf.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/unix/default_pre.prf:
-
-2013-01-12 Nico Weber <thakis@chromium.org>
-
- nrwt/chromium: Don't prefer chromium over webkit build directories
- https://bugs.webkit.org/show_bug.cgi?id=105597
-
- Reviewed by Dirk Pranke.
-
- Rely on the new timestamp logic instead. Requested by dpranke in
- https://bugs.webkit.org/show_bug.cgi?id=105498
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._static_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_build_path):
-
-2013-01-12 Nico Weber <thakis@chromium.org>
-
- Use ninja by default on Linux for build-webkit --chromium, bot edition
- https://bugs.webkit.org/show_bug.cgi?id=104434
-
- Reviewed by Eric Seidel.
-
- r139557 changed update-webkit to pick ninja by default on linux, but
- the bots run update-webkit-chromium directly so they didn't see this.
- Move the default for ninja into update-webkit-chromium so that it's
- picked up by the bots, and let update-webkit forward non-default
- options to there.
-
- This way, the default is in one place only and both developers (who
- usually use update-webkit which then shells out to
- updat-webkit-chromium) and bots (which use update-webkit-chromium
- directly) see the same behavior.
-
- * Scripts/update-webkit:
- * Scripts/update-webkit-chromium:
-
-2013-01-12 Nico Weber <thakis@chromium.org>
-
- Make ninja the default build system on Linux for build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=104434
-
- Reviewed by Eric Seidel.
-
- * Scripts/update-webkit:
-
-2013-01-12 Alan Cutter <alancutter@chromium.org>
-
- Migrate the remaining bots in EC2 to Google Compute Engine
- https://bugs.webkit.org/show_bug.cgi?id=106005
-
- Reviewed by Eric Seidel.
-
- Updated bot scripts for launching feeder-queue, style-queue and sheriffbot on GCE.
-
- * EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh: Copied from Tools/EWSTools/build-repo.sh.
- * EWSTools/boot.sh:
- * EWSTools/build-repo.sh:
- * EWSTools/start-queue.sh:
-
-2013-01-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move inspector related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106654
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::showDevTools):
- (WebTestRunner::WebTestDelegate::closeDevTools):
- (WebTestRunner::WebTestDelegate::evaluateInWebInspector):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::showWebInspector):
- (WebTestRunner):
- (WebTestRunner::TestRunner::closeWebInspector):
- (WebTestRunner::TestRunner::evaluateInWebInspector):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::showDevTools):
- (WebViewHost::closeDevTools):
- (WebViewHost::evaluateInWebInspector):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-11 Julie Parent <jparent@chromium.org>
-
- Builder should not be a valid parameter for stats dashboard
- https://bugs.webkit.org/show_bug.cgi?id=106698
-
- Reviewed by Dirk Pranke.
-
- Since builder is a dashboard specific parameter, dashboard_base
- should not be handling it in handleValidHashParameterWrapper, rather,
- each specific dashboard should in its handleValidHashParameter function.
-
- Note that the FIXME in dashboard_base about this was actually wrong -
- we don't want to move it to g_crossDashboardState, because it isn't
- actually cross dashboard state.
-
- In fact, flakiness and treemap have the code in
- handleValidHashParameter, but it is currently dead code because
- dashboard_base gets to it first.
-
- Added the proper handling to timeline_explorer, since builder is
- valid there.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/timeline_explorer.html:
-
-2013-01-11 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION: buildbot mangles error messages with timestamps run-webkit-tests outputs
- https://bugs.webkit.org/show_bug.cgi?id=106688
-
- Reviewed by Eric Seidel.
-
- Update the regular expression used to strip the garbage at the beginning.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests.nrwt_log_message_regexp):
-
-2013-01-11 Pratik Solanki <psolanki@apple.com>
-
- TestRunner leaks when running tests
- https://bugs.webkit.org/show_bug.cgi?id=106683
-
- Reviewed by Simon Fraser.
-
- Remove extra ref() that we missed out on deleting when refactoring window.layoutTestController
- to window.testRunner in r124705. This caused the TestRunner object to be leaked when running
- tests.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::makeWindowObject):
-
-2013-01-11 Julie Parent <jparent@chromium.org>
-
- Dashboard Cleanup: Add isLoadingComplete to the loader.Loader object.
- https://bugs.webkit.org/show_bug.cgi?id=106247
-
- Old code nulled out the loader instance when it completed loading and
- then later used the fact that it was null to determine if it had loaded
- or not. This is not only unintuitive, but it also prevents using the
- loader object later on.
-
- Added new method, used it, added unit test for it.
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (resourceLoadingComplete):
- (handleLocationChange):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-01-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Try CRLF to LF change in r139407 again.
-
- * BuildSlaveSupport/delete-stale-build-files:
- (main):
- (webkitBuildDirectory):
- * BuildSlaveSupport/kill-old-processes:
- (main):
-
-2013-01-11 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Disable the unit tests timeout when running from make check
- https://bugs.webkit.org/show_bug.cgi?id=106670
-
- Reviewed by Philippe Normand.
-
- * GNUmakefile.am: Pass --timeout=-1 to run-gtk-test.
-
-2013-01-11 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Yet another unreviewed fix after r139431.
-
- * Scripts/run-launcher: Pass the arguments to `jhbuild-wrapper' in
- the correct order.
-
-2013-01-11 Dan Carney <dcarney@google.com>
-
- [chromium] move some whitespace and resize related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106655
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestRunner::WebTestDelegate::setClientWindowRect):
- (WebTestRunner::WebTestDelegate::setSelectTrailingWhitespaceEnabled):
- (WebTestRunner::WebTestDelegate::setSmartInsertDeleteEnabled):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setSmartInsertDeleteEnabled):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setSelectTrailingWhitespaceEnabled):
- (WebTestRunner::TestRunner::enableAutoResizeMode):
- (WebTestRunner::TestRunner::disableAutoResizeMode):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setClientWindowRect):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-11 Mario Sanchez Prada <mario.prada@samsung.com>
-
- Unreviewed. Update my e-mail addresses.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-11 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Another unreviewed fix after r139431.
-
- In a way, this is also a generic bug fix, since previously isEfl()
- would fail when called from run-efl-tests and we thus did not use
- jhbuild to run our tests. This now resulted in us calling
- "jhbuild-wrapper run" without specifying a platform.
-
- * Scripts/run-efl-tests: Pass "--efl" to ARGV manually for isEfl()
- to work.
-
-2013-01-11 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt][WK1] Web Audio support
- https://bugs.webkit.org/show_bug.cgi?id=106651
-
- Reviewed by Jocelyn Turcotte.
-
- Implements support for dumping audio data in DumpRenderTree.
-
- Adds WebAudio to toggleable features in QtTestBrowser.
-
- Enables LEGACY_WEB_AUDIO. This feature is required for 2/3 of the web audio regression tests. It is enabled by default
- because it has no effect when WEB_AUDIO is not enabled. This combination matches the settings in FeatureList.pm.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::reset):
- (TestRunner::overridePreference):
- (TestRunner::setAudioData):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner::shouldDumpAsAudio):
- (TestRunner::audioData):
- (TestRunner):
- * QtTestBrowser/launcherwindow.cpp:
- (LauncherWindow::applyPrefs):
- (LauncherWindow::createChrome):
- (LauncherWindow::toggleWebAudio):
- * QtTestBrowser/launcherwindow.h:
- (WindowOptions::WindowOptions):
- (WindowOptions):
- (LauncherWindow):
- * qmake/mkspecs/features/features.prf:
- * qmake/mkspecs/features/features.pri:
-
-2013-01-11 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Unreviewed jhbuild-related fix after r139431.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.__init__): Pass a string to set_option_default(), since
- shlex.split() will be called on it later.
-
-2013-01-11 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed typo fixes after r139431.
-
- * Scripts/run-javascriptcore-tests:
-
-2013-01-11 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [jhbuild] Remove the "run-with-jhbuild" scripts.
- https://bugs.webkit.org/show_bug.cgi?id=106572
-
- Reviewed by Martin Robinson.
-
- Both ports which use jhbuild were mostly duplicating the
- `run-with-jhbuild' script in their own directories for no clear reason.
-
- The script itself was just a thin wrapper around the `jhbuild-wrapper',
- so just start using that directly and get rid of a useless middle man.
-
- Adjust scripts which called run-with-jhbuild to call jhbuild-wrapper
- instead.
-
- * Scripts/run-javascriptcore-tests:
- * Scripts/run-launcher:
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
- (buildAutotoolsProject):
- (jhbuildWrapperPrefixIfNeeded):
- (generateBuildSystemFromCMakeProject):
- (buildCMakeGeneratedProject):
- * Scripts/webkitpy/common/multiprocessing_bootstrap.py:
- (run):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.__init__):
- (EflPort._image_diff_command):
- * efl/run-with-jhbuild: Removed.
- * gtk/run-with-jhbuild: Removed.
-
-2013-01-11 Alan Cutter <alancutter@chromium.org>
-
- Allow arbitrary queue launch parameters in EWSTools/start-queue.sh
- https://bugs.webkit.org/show_bug.cgi?id=106636
-
- Reviewed by Adam Barth.
-
- This parameter will allow the bot boot script to use start-queue.sh and provide an IRC password for sheriffbot.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/screen-config:
- * EWSTools/start-queue.sh:
-
-2013-01-10 Ryosuke Niwa <rniwa@webkit.org>
-
- kill-old-processes and delete-stale-build-files use CRLF linebreaks
- https://bugs.webkit.org/show_bug.cgi?id=106622
-
- Reviewed by Simon Fraser.
-
- Use LF instead of CRLF in kill-old-processes and delete-stale-build-files.
- Also escape clang\+\+ correctly in kill-old-processes.
-
- * BuildSlaveSupport/delete-stale-build-files:
- * BuildSlaveSupport/kill-old-processes:
-
-2013-01-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r139357. It was missing a comma.
-
- * QueueStatusServer/model/queues.py:
- (Queue):
-
-2013-01-10 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Fixing AuthenticationError when running test-webkitpy as a non-committer.
- https://bugs.webkit.org/show_bug.cgi?id=106420
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.push_local_commits_to_server):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVNRepository):
- (SVNRepository.has_authorization_for_realm):
-
-2013-01-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][jhbuild] Use tarballs for gstreamer instead of git
- https://bugs.webkit.org/show_bug.cgi?id=106552
-
- Reviewed by Laszlo Gombos.
-
- Use tarballs for gstreamer instead of git in EFL's jhbuild
- to work around intermittent network issues on our build
- bots. Tarballs are fully cached and require no network
- operation if their checksum matches.
-
- * efl/jhbuild.modules:
-
-2013-01-10 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Mac WK2 EWS bots
- https://bugs.webkit.org/show_bug.cgi?id=106590
-
- Reviewed by Adam Barth.
-
- Added MacWK2EWS, and made myself a watcher for MacEWS and MacWK2EWS.
- Also add a deprecated MacWK2Port class.
-
- * QueueStatusServer/model/queues.py:
- (Queue):
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.port):
- (MacWK2Port):
- (MacWK2Port.run_webkit_tests_command):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (MacEWS):
- (MacWK2EWS):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (_test_ewses):
-
-2013-01-10 Dan Carney <dcarney@google.com>
-
- [chromium] move webpermissionclient related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106548
-
- Reviewed by Jochen Eisinger.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner::WebTestDelegate::normalizeLayoutTestURL):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebKit):
- (WebTestRunner::WebTestRunner::webPermissions):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setDelegate):
- (WebTestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::webPermissions):
- (WebTestRunner::TestRunner::dumpPermissionClientCallbacks):
- (WebTestRunner::TestRunner::setImagesAllowed):
- (WebTestRunner::TestRunner::setScriptsAllowed):
- (WebTestRunner::TestRunner::setStorageAllowed):
- (WebTestRunner::TestRunner::setPluginsAllowed):
- (WebTestRunner::TestRunner::setAllowDisplayOfInsecureContent):
- (WebTestRunner::TestRunner::setAllowRunningOfInsecureContent):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner):
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.cpp: Renamed from Tools/DumpRenderTree/chromium/WebPermissions.cpp.
- (WebTestRunner):
- (WebTestRunner::WebPermissions::WebPermissions):
- (WebTestRunner::WebPermissions::~WebPermissions):
- (WebTestRunner::WebPermissions::allowImage):
- (WebTestRunner::WebPermissions::allowScriptFromSource):
- (WebTestRunner::WebPermissions::allowStorage):
- (WebTestRunner::WebPermissions::allowPlugins):
- (WebTestRunner::WebPermissions::allowDisplayingInsecureContent):
- (WebTestRunner::WebPermissions::allowRunningInsecureContent):
- (WebTestRunner::WebPermissions::setImagesAllowed):
- (WebTestRunner::WebPermissions::setScriptsAllowed):
- (WebTestRunner::WebPermissions::setStorageAllowed):
- (WebTestRunner::WebPermissions::setPluginsAllowed):
- (WebTestRunner::WebPermissions::setDisplayingInsecureContentAllowed):
- (WebTestRunner::WebPermissions::setRunningInsecureContentAllowed):
- (WebTestRunner::WebPermissions::setDelegate):
- (WebTestRunner::WebPermissions::setDumpCallbacks):
- (WebTestRunner::WebPermissions::reset):
- * DumpRenderTree/chromium/TestRunner/src/WebPermissions.h: Renamed from Tools/DumpRenderTree/chromium/WebPermissions.h.
- (WebTestRunner):
- (WebPermissions):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::resetTestController):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::normalizeLayoutTestURL):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-10 Alan Cutter <alancutter@chromium.org>
-
- Split EWS tool cold-boot.sh into modular components
- https://bugs.webkit.org/show_bug.cgi?id=106527
-
- Reviewed by Adam Barth.
-
- Split cold-boot.sh script up into build-vm.sh, build-repo.sh and build-boot-cmd.sh.
- Updated GCE bot build scripts to match.
- Unable to test scripts directly as they depend on being in the repository to work!
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/build-boot-cmd.sh: Copied from Tools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh.
- * EWSTools/build-repo.sh: Copied from Tools/EWSTools/cold-boot.sh.
- * EWSTools/build-vm.sh: Renamed from Tools/EWSTools/cold-boot.sh.
-
-2013-01-10 Julie Parent <jparent@chromium.org>
-
- Dashboard Cleanup: Do not generate the page if we are about to reload.
- https://bugs.webkit.org/show_bug.cgi?id=106584
-
- Reviewed by Dirk Pranke.
-
- Move the logic to determine if we should generate the page into
- parseParameters() since that is where we have the knowledge to
- determine it, and return that value to handleLocationChange,
- rather than passing the changed parameters back to handleLocationChange
- and having it make the decision.
-
- This is logically equivalent, save one case: when we are about to do
- a reload, we know that there is no reason to generate the page. Old
- code was causing an extra page generation in this case.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
- (handleLocationChange):
-
-2013-01-10 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [jhbuild] Use the "configure" script to build glib
- https://bugs.webkit.org/show_bug.cgi?id=106569
-
- Reviewed by Martin Robinson.
-
- So far both EFL and GTK have been using autogen.sh to build glib.
- While that does work most of the time, it's not really needed since
- we are downloading and building stable releases from tarballs.
- Additionally, autogen.sh fails to work with automake 1.13 due to the
- usage of some macros that have been removed (this has already been
- fixed in glib master).
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2013-01-10 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Changing tests to be consistent and use self.scm rather then recreating the scm object.
- (Missed a couple)
- https://bugs.webkit.org/show_bug.cgi?id=106536
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2013-01-10 Tony Chang <tony@chromium.org>
-
- Speed up supplemental dependency computation
- https://bugs.webkit.org/show_bug.cgi?id=106503
-
- Reviewed by Adam Barth.
-
- Pass the IDL attributes file for generating the bindings in WebKitTestRunner.
-
- * WebKitTestRunner/CMakeLists.txt:
-
-2013-01-10 Zan Dobersek <zandobersek@gmail.com>
-
- Remove the ENABLE_ANIMATION_API feature define occurences
- https://bugs.webkit.org/show_bug.cgi?id=106544
-
- Reviewed by Simon Fraser.
-
- The Animation API code was removed in r137243. The ENABLE_ANIMATION_API
- feature define handling still lingers in various build systems and configurations
- but is of no use, so it should be removed.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-01-10 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Add support for loading web process extensions
- https://bugs.webkit.org/show_bug.cgi?id=105631
-
- Reviewed by Gustavo Noronha Silva.
-
- * MiniBrowser/gtk/GNUmakefile.am:
- * MiniBrowser/gtk/main.c:
- (main): Set WEBKIT_INJECTED_BUNDLE env var to use the injected
- bundle lib from build dir.
- * Scripts/webkitpy/style/checker.py: Add exceptions for GTK+ API
- located in WebProcess/InjectedBundle/API/gtk.
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Scan also files in
- WebProcess/InjectedBundle/API/gtk to generate API docs.
- (get_webkit2_options.injected_bundle_src_path): Helper function to
- build paths in WebProcess/InjectedBundle/API/gtk.
-
-2013-01-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Writing immediately to created windows (open) fails
- https://bugs.webkit.org/show_bug.cgi?id=105276
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Do not reset 'about:blank' url for the new pages in mini browser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
-
-2013-01-10 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Changing tests to be consistent and use self.scm rather then recreating the scm object.
- https://bugs.webkit.org/show_bug.cgi?id=106536
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
-
-2013-01-10 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Converting to unittest2 so we can use assertItemsEqual, making tests
- not dependent on order of items.
- https://bugs.webkit.org/show_bug.cgi?id=106532
-
- Before:
- Ran 1733 tests in 38.385s
- FAILED (failures=1, errors=22)
-
- After:
- Ran 1733 tests in 32.298s
- FAILED (failures=0, errors=22)
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_unittest2):
-
-2013-01-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Add gstreamer 1.0.5 to jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=106178
-
- Reviewed by Laszlo Gombos.
-
- Add gstreamer 1.0.5 to EFL's jhbuild configuration.
-
- * efl/jhbuild.modules:
-
-2013-01-09 Alan Cutter <alancutter@chromium.org>
-
- Updated parameters in GCE build scripts so they now work.
- https://bugs.webkit.org/show_bug.cgi?id=106523
-
- Reviewed by Adam Barth.
-
- * EWSTools/GoogleComputeEngine/build-chromium-ews.sh:
- * EWSTools/GoogleComputeEngine/build-commit-queue.sh:
- * EWSTools/cold-boot.sh:
-
-2013-01-09 Mark Pilgrim <pilgrim@chromium.org>
-
- [Chromium] Remove some stray references to WebKitPlatformSupport.h in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=106520
-
- Reviewed by James Robinson.
-
- Part of a larger refactoring series. See tracking bug 82948.
-
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.h:
- * DumpRenderTree/chromium/WebThemeEngineDRTMac.mm:
-
-2013-01-09 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: Remove code for currentState and window.location.hash getting out of state
- https://bugs.webkit.org/show_bug.cgi?id=106514
-
- This is old code, as these can no longer get out of sync.
- permmaLinkURLHash is generated from currentState, which is set only
- from the location. The commment about how these can get out of sync
- refers to a function that no longer exists.
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (handleLocationChange):
-
-2013-01-09 Julie Parent <jparent@chromium.org>
-
- Dashboard Cleanup: Reload the page as soon as we know we need to.
- https://bugs.webkit.org/show_bug.cgi?id=106515
-
- No need to continue parsing all of the data once we know that
- we need to do a reload.
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
-
-2013-01-09 Eric Seidel <eric@webkit.org>
-
- run-perf-tests --chromium-android --profile should show symbols for the kernel
- https://bugs.webkit.org/show_bug.cgi?id=106498
-
- Reviewed by Adam Barth.
-
- Turns out this was easy, once I finally read the output from "perf report".
- It appears there may be a bug in "perf record" on android, as it complains
- about not being able to read from /proc/kallsyms even when
- /proc/sys/kernel/kptr_restrict is 0. For now I've not bothered
- to keep /proc/sys/kernel/kptr_restrict as 0 during the actual record
- but rather just flip it to 0 long enough to grab the /proc/kallsyms
- and then flip it back to whatever the device had.
-
- /proc/sys/kernel/kptr_restrict controls what /proc/kallsyms returns
- on Linux. /proc/kallsyms contains a mapping of kernel addresses
- to symbol names. Its world-readable, but will return all 0s if you
- don't have permission to see the kernel symbols. kptr_restrict
- supports values 0, 1, 2. Where 0 means "everyone can see the real symbols"
- 1 is only a specific group, and 2 is "no one, not even root".
- By default kptr_restrict is 2 on Android it seems.
- More kptr_restrict docs: http://lwn.net/Articles/420403/
-
- I also took this opportunity to clean up how the perf record command
- was built for use/display in AndroidPerf.profile_after_exit and
- change to always using long-form names for the arguments (to hopefully help readability).
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (AndroidPerf.__init__):
- (profile_after_exit):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._update_kallsyms_cache):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
-
-2013-01-09 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: remove dead code.
- https://bugs.webkit.org/show_bug.cgi?id=106509
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
-
-2013-01-09 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] accessibility/aria-labelledby-overrides-label.html requires a proper baseline
- https://bugs.webkit.org/show_bug.cgi?id=105638
-
- Reviewed by Martin Robinson.
-
- The test was failing for two reasons:
- - AccessibilityRenderObject::correspondingLabelForControlElement() was
- not ignoring the ARIA labelled-by property
- - AccessibilityController::accessibleElementById() was not implemented
-
- Because getting an element by ID cannot be done in the UIProcess, the
- decision was made to expose the element's ID as an accessible attribute
- of the object.
-
- In addition, fixing the bug in AccessibilityRenderObject made it possible
- to eliminate the Gtk platform-specific expectations for another test.
-
- * DumpRenderTree/gtk/AccessibilityControllerGtk.cpp:
- (childElementById): Added. Walks the tree looking for the AtkObject
- Attribute which exposes the HTML element's ID.
- (AccessibilityController::accessibleElementById): Implemented.
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::title): Modified to print out "AXTitle: " even
- when there is no title, as is done with the Mac port.
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp:
- (WTR::childElementById): Added. Walks the tree looking for the AtkObject
- Attribute which exposes the HTML element's ID.
- (WTR):
- (WTR::AccessibilityController::accessibleElementById): Implemented.
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::title): Modified to print out "AXTitle: "
- even when there is no title, as is done with the Mac port.
-
-2013-01-09 Gregg Tavares <gman@google.com>
-
- Add Gregg Tavares as a committer
- https://bugs.webkit.org/show_bug.cgi?id=106492
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-09 Roger Fong <roger_fong@apple.com>
-
- Enable seamless iFrames for Windows DRT.
- https://bugs.webkit.org/show_bug.cgi?id=106468.
-
- Rubberstamped by Timothy Horton.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
-
-2013-01-09 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] Implement eventSender.scheduleAsynchronousKeyDown
- https://bugs.webkit.org/show_bug.cgi?id=93979
-
- Reviewed by Benjamin Poulain.
-
- Implement eventSender.scheduleAsynchronousKeyDown() in
- WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::createKeyDownMessageBody):
- (WTR::EventSendingController::keyDown):
- (WTR::EventSendingController::scheduleAsynchronousKeyDown):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::didReceiveKeyDownMessageFromInjectedBundle):
- (WTR::TestController::didReceiveMessageFromInjectedBundle):
- (WTR::TestController::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2013-01-09 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move resource load callback dumping to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106449
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestRunner::WebTestDelegate::makeURLErrorDescription):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::assignIdentifierToRequest):
- (WebTestRunner::WebTestProxy::willRequestResource):
- (WebTestRunner::WebTestProxy::willSendRequest):
- (WebTestRunner::WebTestProxy::didReceiveResponse):
- (WebTestRunner::WebTestProxy::didFinishResourceLoad):
- (WebTestRunner::WebTestProxy::didFailResourceLoad):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldDumpResourceLoadCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpResourceRequestCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpResourceLoadCallbacks):
- (WebTestRunner::TestRunner::shouldDumpResourceRequestCallbacks):
- (WebTestRunner::TestRunner::shouldDumpResourceResponseMIMETypes):
- (WebTestRunner):
- (WebTestRunner::TestRunner::dumpResourceLoadCallbacks):
- (WebTestRunner::TestRunner::dumpResourceRequestCallbacks):
- (WebTestRunner::TestRunner::dumpResourceResponseMIMETypes):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::reset):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::assignIdentifierToRequest):
- (WebTestRunner::WebTestProxyBase::willRequestResource):
- (WebTestRunner::WebTestProxyBase::willSendRequest):
- (WebTestRunner::WebTestProxyBase::didReceiveResponse):
- (WebTestRunner::WebTestProxyBase::didFinishResourceLoad):
- (WebTestRunner::WebTestProxyBase::didFailResourceLoad):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willSendRequest):
- (WebViewHost::makeURLErrorDescription):
- (WebViewHost::reset):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-09 Dan Carney <dcarney@google.com>
-
- [chromium] move dumpcreateview methods to testrunner library
- https://bugs.webkit.org/show_bug.cgi?id=106434
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldDumpCreateView):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpCreateView):
- (WebTestRunner):
- (WebTestRunner::TestRunner::dumpCreateView):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-01-09 Csaba Osztrogonác <ossy@webkit.org>
-
- webkitpy cleanup: Merge additional_comment_text into comment_text
- https://bugs.webkit.org/show_bug.cgi?id=106421
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/committervalidator.py:
- (CommitterValidator.reject_patch_from_commit_queue):
- (CommitterValidator.reject_patch_from_review_queue):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla.set_flag_on_attachment):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzilla.set_flag_on_attachment):
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem._post_reject_message_on_bug):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2013-01-09 Mario Sanchez Prada <mario.prada@samsung.com>
-
- [GTK] Raise version of gdk-pixbuf in jhbuild up to 2.26.5
- https://bugs.webkit.org/show_bug.cgi?id=106464
-
- Reviewed by Martin Robinson.
-
- Current version in jhbuild.modules (2.26.0) is giving trouble to
- when trying to build WebKitGTK from scratch, due to a segmentation
- fault error in gdk-pixbuf-query-loader during the 'make'
- phase. Raising the version to 2.26.5 fixes this issue.
-
- * gtk/jhbuild.modules: Version raised, checksums updated.
-
-2013-01-09 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][NRWT] Pass --timeout to DRT/WTR if a test is marked as SLOW.
- https://bugs.webkit.org/show_bug.cgi?id=90968.
-
- Reviewed by Csaba Osztrogonác.
-
- Added functionality in DRT and WTR to use any timeout value while running
- slow tests (eventually, any test). Now NRWT --time-out-ms determines the
- timeout value for the test. Added a flag in NRWT (supports_per_test_timeout)
- to indicate whether the current port supports setting timeout value
- per test (it's False by default; I enabled it only on Qt).
- Also corrected a typo in driver.py
-
- * DumpRenderTree/DumpRenderTree.h:
- (TestCommand::TestCommand):
- (TestCommand):
- * DumpRenderTree/DumpRenderTreeCommon.cpp:
- (parseInputLine):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.supports_per_test_timeout):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.run_test):
- (Driver._command_from_driver_input):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.supports_per_test_timeout):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setCustomTimeout):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::getCustomTimeout):
- (WTR):
- (WTR::TestCommand::TestCommand):
- (TestCommand):
- (WTR::parseInputLine):
- (WTR::TestController::runTest):
- (WTR::TestController::runUntil):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::setCustomTimeout):
- (WTR):
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
-
-2013-01-08 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- Regression(r138681): Add HAVE(ACCESSIBILITY) guard to atk files
- https://bugs.webkit.org/show_bug.cgi?id=106290
-
- Reviewed by Martin Robinson.
-
- Some atk files don't use HAVE(ACCESSIBILITY). It might make build errors when
- the macro isn't enabled.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
-
-2013-01-08 Martin Robinson <mrobinson@igalia.com>
-
- WebKitTestRunner needs support for setHandlesAuthenticationChallenges
- https://bugs.webkit.org/show_bug.cgi?id=103653
-
- Reviewed by Anders Carlsson.
-
- Implement setHandlesAuthenticationChallenges in the UIProcess by sending credentials
- and the enabled boolean to the UIProcess and then implementing the didReceiveAuthenticationChallengeInFrame
- client callback.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: Exposed the new TestRunner
- methods to the JavaScript API.
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setHandlesAuthenticationChallenges): Added this callback for the JavaScript API.
- (WTR::TestRunner::setAuthenticationUsername): Ditto.
- (WTR::TestRunner::setAuthenticationPassword): Ditto.
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner): Added new declarations for the above.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions): Hook up the new didReceiveSynchronousMessageFromInjectedBundle
- callback.
- (WTR::TestController::resetStateToConsistentValues): Reset the credentials and enabled boolean between tests.
- (WTR::TestController::didReceiveAuthenticationChallengeInFrame): Handle the callback by using
- the authentication information passed from the InjectedBundle.
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::setHandlesAuthenticationChallenges): Added setter to allow TestInvocation
- to communicate with the TestController.
- (WTR::TestController::setAuthenticationUsername): Ditto.
- (WTR::TestController::setAuthenticationPassword): Ditto.
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Handle the messages sending authentication
- information from the InjectedBundle.
- (WTR::TestInvocation::outputText): Added this method so that the TestController can output
- text to the TestInvocation text output.
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation): Added declaration for new method.
-
-2013-01-08 Benjamin Poulain <benjamin@webkit.org>
-
- Add myself as a watcher for Web Geolocation
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- [webkitpy] Call setup_test_run method of the parent Port interface when method is called on subclasses
- https://bugs.webkit.org/show_bug.cgi?id=106364
-
- Reviewed by Eric Seidel.
-
- When the setup_test_run method is called on the subclasses of the base Port
- interface, the parent method should also be called via super(), despite the
- parent method not doing anything at the moment.
-
- The according calls to super() are required in the ChromiumPort, EflPort
- and GtkPort implementations.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.setup_test_run):
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.setup_test_run):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_test_run):
-
-2013-01-08 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: Remove globals g_buildersThatFailedToLoad and g_staleBuilders
- https://bugs.webkit.org/show_bug.cgi?id=106356
-
- g_buildersThatFailedToLoad and g_staleBuilders were globals defined in
- dashboard_base, assigned by Loader, and used only by dashboard_base to
- create error messages. Moved the variables to be privates on the Loader
- object, moved error message creation to _getLoadingErrorMessages on the
- Loader object, and now pass the errors back to dashboard base via the
- resourceLoadingComplete callback.
-
- Also removed the now unused clearError function, it was only being used
- by unit tests to clean up global state.
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (resourceLoadingComplete):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- [EFL][GTK] Make the PulseAudioSanitizer an object on the EflPort, GtkPort
- https://bugs.webkit.org/show_bug.cgi?id=106354
-
- Reviewed by Eric Seidel.
-
- Put the PulseAudioSanitizer object on the EflPort and GtkPort interfaces
- instead of those two inheriting from it. Also add a mock object of the
- sanitizer that's used in unit tests.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort):
- (EflPort.__init__):
- (EflPort.setup_test_run):
- (EflPort.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py: Also correct the
- importing order.
- (EflPortTest.make_port): Put a mock PulseAudioSanitizer on the instance.
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort):
- (GtkPort.__init__):
- (GtkPort.setup_test_run):
- (GtkPort.clean_up_test_run):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py: Also correct the
- importing order.
- (GtkPortTest.make_port): Put a mock PulseAudioSanitizer on the instance.
- * Scripts/webkitpy/layout_tests/port/pulseaudio_sanitizer.py:
- (PulseAudioSanitizer.unload_pulseaudio_module): Stylize the method as public.
- (PulseAudioSanitizer.restore_pulseaudio_module): Ditto.
- * Scripts/webkitpy/layout_tests/port/pulseaudio_sanitizer_mock.py: Added.
- (PulseAudioSanitizerMock): A simple mock interface for PulseAudioSanitizer.
- (PulseAudioSanitizerMock.unload_pulseaudio_module):
- (PulseAudioSanitizerMock.restore_pulseaudio_module):
-
-2013-01-08 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move dumpFrameLoadCallbacks and friends to the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106324
-
- Reviewed by Adam Barth.
-
- Since the frame load callbacks are part of the WebFrameClient, the
- WebTestProxy is now intercepting both WebViewClient and WebFrameClient
- methods.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner):
- (WebTestRunner::WebTestProxy::WebTestProxy):
- (WebTestProxy):
- (WebTestRunner::WebTestProxy::didInvalidateRect):
- (WebTestRunner::WebTestProxy::didScrollRect):
- (WebTestRunner::WebTestProxy::scheduleComposite):
- (WebTestRunner::WebTestProxy::scheduleAnimation):
- (WebTestRunner::WebTestProxy::setWindowRect):
- (WebTestRunner::WebTestProxy::show):
- (WebTestRunner::WebTestProxy::didAutoResize):
- (WebTestRunner::WebTestProxy::postAccessibilityNotification):
- (WebTestRunner::WebTestProxy::startDragging):
- (WebTestRunner::WebTestProxy::shouldBeginEditing):
- (WebTestRunner::WebTestProxy::shouldEndEditing):
- (WebTestRunner::WebTestProxy::shouldInsertNode):
- (WebTestRunner::WebTestProxy::shouldInsertText):
- (WebTestRunner::WebTestProxy::shouldChangeSelectedRange):
- (WebTestRunner::WebTestProxy::shouldDeleteRange):
- (WebTestRunner::WebTestProxy::shouldApplyStyle):
- (WebTestRunner::WebTestProxy::didBeginEditing):
- (WebTestRunner::WebTestProxy::didChangeSelection):
- (WebTestRunner::WebTestProxy::didChangeContents):
- (WebTestRunner::WebTestProxy::didEndEditing):
- (WebTestRunner::WebTestProxy::registerIntentService):
- (WebTestRunner::WebTestProxy::dispatchIntent):
- (WebTestRunner::WebTestProxy::willPerformClientRedirect):
- (WebTestRunner::WebTestProxy::didCancelClientRedirect):
- (WebTestRunner::WebTestProxy::didStartProvisionalLoad):
- (WebTestRunner::WebTestProxy::didReceiveServerRedirectForProvisionalLoad):
- (WebTestRunner::WebTestProxy::didFailProvisionalLoad):
- (WebTestRunner::WebTestProxy::didCommitProvisionalLoad):
- (WebTestRunner::WebTestProxy::didReceiveTitle):
- (WebTestRunner::WebTestProxy::didFinishDocumentLoad):
- (WebTestRunner::WebTestProxy::didHandleOnloadEvents):
- (WebTestRunner::WebTestProxy::didFailLoad):
- (WebTestRunner::WebTestProxy::didFinishLoad):
- (WebTestRunner::WebTestProxy::didChangeLocationWithinPage):
- (WebTestRunner::WebTestProxy::didDisplayInsecureContent):
- (WebTestRunner::WebTestProxy::didRunInsecureContent):
- (WebTestRunner::WebTestProxy::didDetectXSS):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::setTestIsRunning):
- (WebTestRunner::WebTestRunner::shouldDumpFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::setShouldDumpFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::shouldDumpUserGestureInFrameLoadCallbacks):
- (WebTestRunner::WebTestRunner::stopProvisionalFrameLoads):
- (WebTestRunner::WebTestRunner::shouldDumpTitleChanges):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setTestIsRunning):
- (WebTestRunner):
- (WebTestRunner::TestRunner::shouldDumpFrameLoadCallbacks):
- (WebTestRunner::TestRunner::setShouldDumpFrameLoadCallbacks):
- (WebTestRunner::TestRunner::shouldDumpUserGestureInFrameLoadCallbacks):
- (WebTestRunner::TestRunner::stopProvisionalFrameLoads):
- (WebTestRunner::TestRunner::shouldDumpTitleChanges):
- (WebTestRunner::TestRunner::dumpFrameLoadCallbacks):
- (WebTestRunner::TestRunner::dumpUserGestureInFrameLoadCallbacks):
- (WebTestRunner::TestRunner::setStopProvisionalFrameLoads):
- (WebTestRunner::TestRunner::dumpTitleChanges):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::webView):
- (WebTestRunner::WebTestInterfaces::Internal::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::setWebView):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::Internal::setTestIsRunning):
- (WebTestRunner::WebTestInterfaces::setWebView):
- (WebTestRunner::WebTestInterfaces::setTestIsRunning):
- (WebTestRunner::WebTestInterfaces::webView):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::willPerformClientRedirect):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::didCancelClientRedirect):
- (WebTestRunner::WebTestProxyBase::didStartProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didReceiveServerRedirectForProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didFailProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didCommitProvisionalLoad):
- (WebTestRunner::WebTestProxyBase::didReceiveTitle):
- (WebTestRunner::WebTestProxyBase::didFinishDocumentLoad):
- (WebTestRunner::WebTestProxyBase::didHandleOnloadEvents):
- (WebTestRunner::WebTestProxyBase::didFailLoad):
- (WebTestRunner::WebTestProxyBase::didFinishLoad):
- (WebTestRunner::WebTestProxyBase::didChangeLocationWithinPage):
- (WebTestRunner::WebTestProxyBase::didDisplayInsecureContent):
- (WebTestRunner::WebTestProxyBase::didRunInsecureContent):
- (WebTestRunner::WebTestProxyBase::didDetectXSS):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
- (TestShell::testFinished):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didStartProvisionalLoad):
- (WebViewHost::didReceiveServerRedirectForProvisionalLoad):
- (WebViewHost::didFailProvisionalLoad):
- (WebViewHost::didCommitProvisionalLoad):
- (WebViewHost::didReceiveTitle):
- (WebViewHost::didFailLoad):
- (WebViewHost::didFinishLoad):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Lower the default timeout value for WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=106353
-
- Reviewed by Dirk Pranke.
-
- The default timeout value for WebKitTestRunner should be lowered.
- The current value (80 seconds) is irrational and just leads to producing
- text failures for layout tests that genuinely time out. This just leads
- to more deviation from the GTK WK1 port in terms of test expectations.
-
- The value used is the same as when running the DumpRenderTree, that's
- 6 seconds in release builds and 12 seconds in debug builds.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_default_timeout_ms):
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- test-webkitpy shows failure output on my linux box
- https://bugs.webkit.org/show_bug.cgi?id=101261
-
- Reviewed by Eric Seidel.
-
- Mock out the PulseAudioSanitizer methods when creating testing instances
- of EflPort and GtkPort interfaces in unit tests. This stops throwing up
- PulseAudio output when the sanitizer was trying to unload modules which
- were already unloaded by another unit test that was being run in parallel.
-
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py:
- (EflPortTest):
- (EflPortTest.make_port):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest):
- (GtkPortTest.make_port):
-
-2013-01-08 Julie Parent <jparent@chromium.org>
-
- Dashboard Cleanup: Remove g_hasDoneInitialPageGeneration
- https://bugs.webkit.org/show_bug.cgi?id=106254
-
- Remove the global variable g_hasDoneInitialPageGeneration. It was used
- only to figure out if we should call addBuilderLoadErrors during
- handleLocationChange, which was called when the loader completed and on
- any hash change, but we only ever wanted to call addBuilderLoadErrors
- on the initial loader load. Moved the call of addBuilderLoadErrors to
- resourceLoadingComplete rather than handleLocationChange, so now we
- only call it when we want to, and the check can go away completely.
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (addBuilderLoadErrors):
- (resourceLoadingComplete):
- (handleLocationChange):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2013-01-08 Dominic Mazzoni <dmazzoni@google.com>
-
- Add aboxhall@chromium.org to accessibility watchlist.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-08 Dan Winship <danw@gnome.org>
-
- Add Apache 2.4 support for Fedora 18
- https://bugs.webkit.org/show_bug.cgi?id=104478
-
- Reviewed by Martin Robinson.
-
- Apache 2.4's httpd.conf is slightly incompatible with 2.2's, so we
- need a separate config.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port._apache_version):
- (Port._apache_config_file_name_for_platform):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/run-webkit-httpd:
- * Scripts/webkitperl/httpd.pm:
- (getApacheVersion):
- (getDefaultConfigForTestDirectory):
- (getHTTPDConfigPathForTestDirectory):
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- Make the override-feature-defines script compatible with Python v3
- https://bugs.webkit.org/show_bug.cgi?id=105742
-
- Reviewed by Martin Robinson.
-
- Instead of printing output through a statement, use the print function and format
- the output using the str.format method. This makes the script runnable with Python v3.
-
- * gtk/override-feature-defines:
- (adjust_feature_defines_makefile):
-
-2013-01-08 Heikki Paajanen <heikki.paajanen@palm.com>
-
- [Qt] Fix libxml2 config test
- https://bugs.webkit.org/show_bug.cgi?id=106317
-
- Reviewed by Simon Hausmann.
-
- Don't assume standard include/libxml2, libxml-2.0.pc should know
- where it's headers are.
-
- * qmake/config.tests/libxml2/libxml2.cpp: Fix include
-
-2013-01-08 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Make Tools/gtk/generate-gtkdoc compatible with Python 3
- https://bugs.webkit.org/show_bug.cgi?id=106195
-
- Reviewed by Philippe Normand.
-
- Perform changes in the generate-gtkdoc script and common and gtkdoc modules
- to make the Python code compatible with Python 3. This includes modifying
- print statements, exception handling, dictionary iteration and
- byte-sequence-to-string conversion.
-
- * gtk/common.py:
- (get_build_path):
- (pkg_config_file_variable):
- (gtk_version_of_pkg_config_file):
- * gtk/generate-gtkdoc:
- (print_missing_api):
- * gtk/gtkdoc.py:
- (GTKDoc.__init__):
- (GTKDoc._run_command):
-
-2013-01-02 Steve Block <steveblock@chromium.org>
-
- Add chromium.org email address for Steve Block.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2013-01-07 Filip Pizlo <fpizlo@apple.com>
-
- Rationalize closure call heuristics and profiling
- https://bugs.webkit.org/show_bug.cgi?id=106270
-
- Reviewed by Oliver Hunt.
-
- Add ability to use display-profiler-output via a pipe, and add the ability to dump
- all generated code ('display *' or 'd *').
-
- * Scripts/display-profiler-output:
-
-2013-01-07 Ryosuke Niwa <rniwa@webkit.org>
-
- Sorted more xcodeproj files.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj:
-
-2013-01-07 Ryosuke Niwa <rniwa@webkit.org>
-
- Sorted xcodeproj files.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2013-01-07 Dan Bernstein <mitz@apple.com>
-
- [mac] WebKit1 clients can’t tell when a frame has been removed from the hierarchy
- https://bugs.webkit.org/show_bug.cgi?id=106261
-
- Reviewed by Simon Fraser.
-
- Added a test for -[WebFrameLoadDelegate webView:didRemoveFrameFromHierarchy:].
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm: Added.
- (-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didFinishLoadForFrame:]):
- (-[DidRemoveFrameFromHierarchyFrameLoadDelegate webView:didRemoveFrameFromHierarchy:]):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2013-01-07 Ojan Vafai <ojan@chromium.org>
-
- Add the Apple MountainLion bots to garden-o-matic.
- Eventually, we really should move away from hardcoding
- the list of bots.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2013-01-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move web audio related methods to testrunner library
- https://bugs.webkit.org/show_bug.cgi?id=106211
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebKit):
- (WebTestRunner::WebTestRunner::shouldDumpAsAudio):
- (WebTestRunner::WebTestRunner::audioData):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpAsAudio):
- (WebTestRunner):
- (WebTestRunner::TestRunner::audioData):
- (WebTestRunner::TestRunner::setAudioData):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
-
-2013-01-07 Mike West <mkwst@chromium.org>
-
- Make the IFRAME_SEAMLESS flag runtime-enabled.
- https://bugs.webkit.org/show_bug.cgi?id=106213
-
- Reviewed by Ojan Vafai.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- Ensure that seamless IFrames are enabled for layout tests in each of
- the ports that support seamless IFrames.
-
-2013-01-07 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move dumpAsText and friends to the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=106222
-
- Reviewed by Adam Barth.
-
- This moves dumpAsText, dumpChildFramesAsText, and dumpChildFrameScrollPositions to the TestRunner library.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h:
- (WebTestRunner::WebTestRunner::shouldDumpAsText):
- (WebTestRunner::WebTestRunner::setShouldDumpAsText):
- (WebTestRunner::WebTestRunner::shouldGeneratePixelResults):
- (WebTestRunner::WebTestRunner::setShouldGeneratePixelResults):
- (WebTestRunner::WebTestRunner::shouldDumpChildFrameScrollPositions):
- (WebTestRunner::WebTestRunner::shouldDumpChildFramesAsText):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpAsText):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setShouldDumpAsText):
- (WebTestRunner::TestRunner::shouldGeneratePixelResults):
- (WebTestRunner::TestRunner::setShouldGeneratePixelResults):
- (WebTestRunner::TestRunner::shouldDumpChildFrameScrollPositions):
- (WebTestRunner::TestRunner::shouldDumpChildFramesAsText):
- (WebTestRunner::TestRunner::dumpAsText):
- (WebTestRunner::TestRunner::dumpChildFrameScrollPositions):
- (WebTestRunner::TestRunner::dumpChildFramesAsText):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-01-07 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix attempt after r138810.
-
- Apparently python 2.6 is really bad at floating point computation.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (MainTest.test_run_memory_test):
-
-2013-01-07 Ryosuke Niwa <rniwa@webkit.org>
-
- Extract a class to represent a test result to simplify PerfTest.parse_output and PageLoadPerfTest._run_with_driver
- https://bugs.webkit.org/show_bug.cgi?id=106172
-
- Reviewed by Tony Chang.
-
- Extracted PerfTestMetric, which represents a test result and knows how to compute statistics and convert itself
- to a dictionary. A metric is a type of measurement each test makes such as "Time", "Malloc", and "JSHeap".
- A single test (e.g. html5-full-render.html) may have multiple metrics, each of which is reported as a separate
- test on perf-o-matic and perf. test's results page.
-
- Also, use python's compute_statistics instead of reading statistics off of DriverOutput to simplify the code.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTestMetric): Added.
- (PerfTestMetric.__init__): Added.
- (PerfTestMetric.metric): Added.
- (PerfTestMetric.has_values): Added.
- (PerfTestMetric.legacy_chromium_bot_compatible_test_name): Added. Following the legacy convention, "Malloc" and
- "JSHeap" will use "test_name:Malloc" whereas "Time" uses "test_name" itself. We should eventually move these
- conversions to be done on the client side (perf-o-matic and results page).
- (PerfTestMetric.append): Added.
- (PerfTestMetric.to_dict): Added. Computes the statistics and generates the dictionary object that represents
- a result for this metric.
- (PerfTestMetric.metric_to_unit): Added. Each metric maps to exactly one unit (it's not one-to-one).
- (PerfTestMetric.compute_statistics): Moved from PerfTest.
-
- (PerfTest._create_driver): Extracted from PerfTest.run.
- (PerfTest.run): Given an array of PerfTestMetric, generate the results dictionary. Also print out results
- as needed.
- (PerfTest._run_with_driver):
- (PerfTest): Removed _result_classes and _result_class_regex. "result class" is the old name for "metric".
- (PerfTest.parse_output): Dramatically simplified. We now just return an array of PerfTestMetric's. Also ignore
- all keys except "values". We rely on PerfTestMetric to compute the statistics for us.
-
- (ChromiumStylePerfTest.run): Added and merged _run_with_driver. Since chromium style perf tests are so different
- from other perf tests, there isn't much point in sharing the code here.
-
- (PageLoadingPerfTest._run_with_driver): Simplified. Just create an array of PerfTestMetric's without computing
- statistics for the measured values.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTestMetric): Added.
- (TestPerfTestMetric.test_init_set_missing_unit): Added.
- (TestPerfTestMetric.test_legacy_chromium_bot_compatible_test_name): Added.
- (TestPerfTestMetric.test_has_values): Added.
- (TestPerfTestMetric.test_append): Added.
- (TestPerfTestMetric.test_compute_statistics.compute_statistics):
- (TestPerfTestMetric.test_compute_statistics): Added a trivial test case.
-
- (TestPerfTest._assert_results_are_correct): Updated as needed.
- (TestPageLoadingPerfTest.test_run): Ditto. Notice that we no longer log anything in _run_with_driver. It's done
- in PerfTest.run now after generating the results dictionary.
- (TestPageLoadingPerfTest.test_run_with_memory_output): Ditto.
-
-2013-01-07 Julien Chaffraix <jchaffraix@webkit.org>
-
- Support size_t multiplication and division operators on LayoutUnit
- https://bugs.webkit.org/show_bug.cgi?id=83848
-
- Reviewed by Emil A Eklund.
-
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp:
- Added some simple tests for the new operators using size_t.
-
-2013-01-07 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] run-webkit-tests cleanup for parallel NRWT
- https://bugs.webkit.org/show_bug.cgi?id=106220
-
- Reviewed by Dirk Pranke.
-
- * Scripts/run-webkit-tests:
- (useNewRunWebKitTests):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort):
- (QtPort.default_child_processes):
-
-2013-01-07 Philippe Normand <pnormand@igalia.com>
-
- Create a GStreamerAudio watchlist and add myself to it.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Add svn:executable to a bunch of scripts in BuildSlaveSupport.
- Also removed the empty mac directory.
-
- * BuildSlaveSupport/built-product-archive: Added property svn:executable.
- * BuildSlaveSupport/download-built-product: Added property svn:executable.
- * BuildSlaveSupport/mac: Removed.
- * BuildSlaveSupport/test-result-archive: Added property svn:executable.
-
-2013-01-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a script to delete stale zero-byte build files
- https://bugs.webkit.org/show_bug.cgi?id=106131
-
- Reviewed by Tony Chang.
-
- Delete zero-byte build files on Mac port for now. It doesn't do anything on other ports.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DeleteStaleBuildFiles): Added.
- (Factory.__init__): Add DeleteStaleBuildFiles step.
- * BuildSlaveSupport/delete-stale-build-files: Added.
- (main): Delete zero-byte files except ones intentionally generated by our build process.
- (webkitBuildDirectory): Copied from build-product-archive.
-
-2013-01-04 Michael Pruett <michael@68k.org>
-
- [GTK] Fix build error on GTK due to r138836
- https://bugs.webkit.org/show_bug.cgi?id=106154
-
- Reviewed by Kentaro Hara.
-
- * GNUmakefile.am:
-
-2013-01-04 Dan Bernstein <mitz@apple.com>
-
- [mac] WebKit1 has no equivalent of WKBundleNodeHandleCopyHTMLTableCellElementCellAbove
- https://bugs.webkit.org/show_bug.cgi?id=106121
-
- Reviewed by Adele Peterson.
-
- Added test for -[DOMTHMLTableCellElement _cellAbove].
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm: Added.
- (-[HTMLTableCellElementCellAboveTest webView:didFinishLoadForFrame:]):
- (TestWebKitAPI):
- (TestWebKitAPI::expectCellAboveCell):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/mac/DOMHTMLTableCellElementCellAbove.html: Added.
-
-2013-01-04 Eric Seidel <eric@webkit.org>
-
- FlakyTestReporter should be re-enabled and taught how to post patches
- https://bugs.webkit.org/show_bug.cgi?id=103839
-
- Reviewed by Adam Barth.
-
- This moves LayoutTestResultsReader off of the DeprecatedPort object.
- It also adds a real Port object to the EWS and CommitQueue objects
- using a new PatchProcessingQueue superclass.
- PatchProcessingQueue doesn't seem to be the cleanest insertion point
- but works for this purpose.
- I also moved _upload_results_archive_for_patch into PatchProcessingQueue
- to resolve a FIXME.
-
- This required some hacks/shiming between the non-specific "old"
- port names which the EWS system is currently using, and the new
- port objects. This shimming is done in PatchProcessingQueue._new_port_name_from_old.
-
- Hopefully this will fix the flaky test reporter and results uploading.
- Certainly it's another small step towards getting rid of the old ports.py
- infrastructure and making the NRWT Port class common webkitpy infrastructure.
-
- Now that DeprecatedPort is no longer used for the results directory
- I removed all the explicit results-dir code which webkit-patch was using
- in --non-interactive mode to tell NRWT to use a results-dir it understood. :)
-
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort.run_perl_unittests_command):
- * Scripts/webkitpy/common/config/ports_mock.py:
- (MockPort.name):
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCapture.assert_outputs):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.determine_full_port_name):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- (LayoutTestResultsReader.__init__):
- (LayoutTestResultsReader):
- (LayoutTestResultsReader._read_file_contents):
- (LayoutTestResultsReader._create_layout_test_results):
- (LayoutTestResultsReader._create_unit_test_results):
- (LayoutTestResultsReader.results):
- (LayoutTestResultsReader.archive):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_missing_layout_test_results):
- (LayoutTestResultsReaderTest.test_create_unit_test_results):
- (test_missing_unit_test_results_path):
- (test_layout_test_results):
- (test_archive_last_layout_test_results):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
- (AbstractEarlyWarningSystem.__init__):
- (AbstractEarlyWarningSystem.begin_work_queue):
- (AbstractEarlyWarningSystem.run_command):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractPatchQueue.work_item_log_path):
- (PatchProcessingQueue):
- (PatchProcessingQueue._new_port_name_from_old):
- (PatchProcessingQueue.begin_work_queue):
- (PatchProcessingQueue._upload_results_archive_for_patch):
- (CommitQueue):
- (CommitQueue.begin_work_queue):
- (CommitQueue.run_command):
- (AbstractReviewQueue):
- (AbstractReviewQueue.__init__):
- (AbstractReviewQueue.begin_work_queue):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractPatchQueueTest.test_next_patch):
- (PatchProcessingQueueTest):
- (PatchProcessingQueueTest.test_upload_results_archive_for_patch):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2013-01-04 Dana Jansens <danakj@chromium.org>
-
- [chromium] Remove lost-compositor-context layout tests
- https://bugs.webkit.org/show_bug.cgi?id=106089
-
- Reviewed by James Robinson.
-
- Remove the loseCompositorContext() test function.
-
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2013-01-04 Adam Klein <adamk@chromium.org>
-
- Remove ENABLE_MUTATION_OBSERVERS #define
- https://bugs.webkit.org/show_bug.cgi?id=105459
-
- Reviewed by Ryosuke Niwa.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2013-01-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Statistics used in perftest_unittest.py and perftest_integrationtest.py are bogus
- https://bugs.webkit.org/show_bug.cgi?id=106078
-
- Reviewed by Tony Chang.
-
- This patch updates values for individual iterations in dummy performance tests used in
- perftest_unittest.py and perftest_integrationtest.py so that they match up with
- statistics such as stdev and median reported in those tests. This change is required
- to resolve the bug 97510.
-
- This patch also refactors integration tests by extracting *TestData classes that
- centralizes the definitions of each dummy performance test's text (DRT output),
- runner output, and parsed results (JSON) so that we may share more data between
- python tests.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest._assert_results_are_correct): Extracted from test_parse_output.
- Use self.assertAlmostEqual when comparing the standard deviation.
- (MainTest.test_parse_output):
- (test_parse_output_with_failing_line):
- (test_parse_output_with_description): Use _assert_results_are_correct.
- (test_parse_output_with_subtests): Ditto.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py:
- (InspectorPassTestData): Extracted from tests below.
- (EventTargetWrapperTestData): Ditto.
- (SomeParserTestData): Ditto.
- (MemoryTestData): Ditto.
- (TestDriver.run_test): Moved test definitions out of the method.
- (MainTest._normalize_output): Truncate standard deviations at 5th decimal point.
- (MainTest._load_output_json): Extracted from create_runner.
- (MainTest.create_runner):
- (MainTest.test_run_test_set_for_parser_tests):
- (MainTest.test_run_memory_test):
- (MainTest._test_run_with_json_output):
- (MainTest.test_run_with_json_output):
- (MainTest.test_run_with_description):
- (MainTest.test_run_generates_json_by_default):
- (MainTest.test_run_merges_output_by_default):
- (MainTest.test_run_respects_reset_results):
- (MainTest.test_run_generates_and_show_results_page):
- (MainTest.test_run_with_slave_config_json):
- (MainTest.test_run_with_multiple_repositories):
-
-2013-01-04 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [WebKit2] Clicking on a word that is selected in an editable area deletes it
- https://bugs.webkit.org/show_bug.cgi?id=106045
-
- Reviewed by Carlos Garcia Campos.
-
- Update test results to confirm that compositions without preedits do not trigger
- a composition confirmation.
-
- * TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp:
- (TestWebKitAPI::verifyCanceledComposition):
-
-2013-01-04 Sailesh Agrawal <sail@chromium.org>
-
- [Mac] [WK2] platform/mac/fast/events/numpad-keycode-mapping.html fails
- https://bugs.webkit.org/show_bug.cgi?id=105958
-
- Reviewed by Alexey Proskuryakov.
-
- Ported code from DumpRenderTree to WebKitTestRunner to map all numpad keys.
-
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (KeyMappingEntry):
- (WTR):
- (WTR::EventSenderProxy::keyDown): Added all numpad keys.
-
-2013-01-03 Chris Fleizach <cfleizach@apple.com>
-
- REGRESSION: [Mac] Intermittent crash in WTR::AccessibilityUIElement::isEqual
- https://bugs.webkit.org/show_bug.cgi?id=106073
-
- Reviewed by Ryosuke Niwa.
-
- Check that the element being compared to is not nil.
- This crash is happening because one of the accessibility tests does an isEqual comparison within a callback function.
- It looks like occasionally, one of the elements passed in to the isEqual is nil because the notification handler is on the accessibility
- controller, and the notification is being delivered after the document objects are cleared. This shouldn't happen but I've seen it
- sometimes before on parallel WebKitTestRunner runs.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (AccessibilityUIElement::isEqual):
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::isEqual):
-
-2013-01-03 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Downloads can be flaky, so try downloading multiple times.
- https://bugs.webkit.org/show_bug.cgi?id=105976
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._download_to_stream):
-
-2013-01-03 Eric Seidel <eric@webkit.org>
-
- Rename Tool.port to deprecated_port in preparation for removing more callers
- https://bugs.webkit.org/show_bug.cgi?id=106076
-
- Reviewed by Ryosuke Niwa.
-
- This resolves a long-standing FIXME to rename this method. :)
-
- * Scripts/webkitpy/tool/bot/botinfo.py:
- (BotInfo.summary_text):
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Rollout._update_working_copy):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- (LayoutTestResultsReader._create_layout_test_results):
- (LayoutTestResultsReader._create_unit_test_results):
- (LayoutTestResultsReader._results_directory):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (test_missing_unit_test_results_path):
- * Scripts/webkitpy/tool/main.py:
- (WebKitPatch.deprecated_port):
- * Scripts/webkitpy/tool/mocktool.py:
- (MockTool.deprecated_port):
- * Scripts/webkitpy/tool/steps/build.py:
- (Build.build):
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- (CheckStyle.run):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._check_test_expectations):
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog.run):
- * Scripts/webkitpy/tool/steps/preparechangelogfordepsroll.py:
- (PrepareChangeLogForDEPSRoll.run):
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert.py:
- (PrepareChangeLogForRevert.run):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- (StepsTest.test_runtests_args):
- * Scripts/webkitpy/tool/steps/update.py:
- (Update._update_command):
-
-2013-01-03 Eric Seidel <eric@webkit.org>
-
- Add myself to the webkitpy watchlist.
-
- Unreviewed.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2013-01-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Cleanup perftest* tests and add a test for computing statistics
- https://bugs.webkit.org/show_bug.cgi?id=105685
-
- Reviewed by Eric Seidel.
-
- Add a test for PerfTest.compute_statistics (moved and renamed from PageLoadingPerfTest.calculate_statistics) and
- extracted perftestsrunner_itegrationtests.py from perftestsrunner_unittests.py.
-
- Also fixed a bug in compute_statistics that the mean ('avg') value can have a large rounding errors in some cases.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.compute_statistics): Moved from PageLoadingPerfTest to prepare for the bug 97510. Also compute the mean
- directly from sorted_values instead of using the one from Knuth's online algorithm. This approach gives more
- accurate result for the mean.
- (PageLoadingPerfTest.run_single):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_compute_statistics):
- (MainTest.test_compute_statistics.compute_statistics): Added.
- (TestPageLoadingPerfTest.test_run): floatify values.
- (TestPageLoadingPerfTest.test_run_with_memory_output): Ditto. Also got rid of ".0" from mean values now that Python
- correctly recognizes them as integers.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py: Copied from
- Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py.
- (TestDriver): Moved out of MainTest.
- (MainTest): Got rid of assertWritten and all unit tests.
- (MainTest._normalize_output): Renamed from normalizeFinishedTime to match the PEP8 naming convention.
- (MainTest.test_run_test_set_kills_drt_per_run.TestDriverWithStopCount):
- (MainTest.test_run_test_set_for_parser_tests):
- (MainTest.test_run_memory_test):
- (MainTest._test_run_with_json_output):
- (MainTest.test_run_generates_json_by_default):
- (MainTest.test_run_merges_output_by_default):
- (MainTest.test_run_respects_reset_results):
- (MainTest.test_run_generates_and_show_results_page): Use runner.load_output_json() instead of manually loading and
- parsing output JSON files. Just verify that the output path is correct instead.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest): Removed all integration tests.
- (MainTest.create_runner): Simplified.
-
-2013-01-03 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: remove usage of global g_defaultBuilderName
- https://bugs.webkit.org/show_bug.cgi?id=106043
-
- Use now public defaultBuilder() from the BuilderGroup, rather
- than global variable.
-
- Also eliminates the setup() and initBuilders() functions since we
- no longer need to track the global.
-
- Reviewed by Adam Barth.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup.prototype.defaultBuilder):
- (BuilderGroup.prototype.master):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (parseParameters):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (updateDefaultBuilderState):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-01-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Disable an intermittently failing unit test for now.
- The failure is tracked by the bug 106051.
-
- * TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm:
- (TestWebKitAPI::TEST):
-
-2013-01-03 Dan Bernstein <mitz@apple.com>
-
- No way to obtain a DOMNode given a JS wrapper for a Node
- https://bugs.webkit.org/show_bug.cgi?id=106033
-
- Added a test for +[DOMNode _nodeFromJSWrapper:].
-
- Reviewed by Sam Weinig.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2013-01-03 Emil A Eklund <eae@chromium.org>
-
- Fix overflow in LayoutUnit::ceil and floor for SATURATED_LAYOUT_ARITHMETIC
- https://bugs.webkit.org/show_bug.cgi?id=105961
-
- Reviewed by Levi Weintraub.
-
- Add tests for LayoutUnit::ceil and floor.
-
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp:
- (TestWebKitAPI::TEST):
- (TestWebKitAPI):
-
-2013-01-03 Julie Parent <jparent@chromium.org>
-
- Add unit test for default builder for the dashboards.
- https://bugs.webkit.org/show_bug.cgi?id=105972
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2013-01-03 Tony Chang <tony@chromium.org>
-
- Generate internal.settings from Settings.in
- https://bugs.webkit.org/show_bug.cgi?id=104740
-
- Reviewed by Adam Barth.
-
- * GNUmakefile.am: Compile new generated files on GTK+.
- * qmake/mkspecs/features/default_post.prf: Qt: Make it so an action
- with both extra_sources and add_output_to_sources=false will still
- compile the files in extra_sources. This makes it possible to compile
- InternalSettingsGenerated.cpp and not be confused by
- InternalSettingsGenerated.idl.
-
-2013-01-03 Zan Dobersek <zandobersek@gmail.com>
-
- [style] WebIDL-reflecting uppercase enums reported as style violation
- https://bugs.webkit.org/show_bug.cgi?id=105832
-
- Reviewed by Tony Chang.
-
- Recognize the enum as WebIDL-reflecting one if there's a comment present that
- indicates this. In enums spanning over multiple lines, the comment is expected
- on the first line. In enums placed in one line, the comment is expected at the
- end of that line.
-
- WebIDL-reflecting enum values are required to be written in uppercase and as such
- violate the common rule of these values being written in InterCaps. Annotating
- enums this way makes it possible to avoid false style violation reports.
-
- The comment is of form '// Web(?:Kit)?IDL enum'.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_EnumState.__init__):
- (_EnumState.process_clean_line):
- (check_enum_casing):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (NoNonVirtualDestructorsTest.test_enum_casing):
-
-2013-01-03 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Adding favicon.ico to the garden-o-matic.
- https://bugs.webkit.org/show_bug.cgi?id=105982
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/favicon.ico:
-
-2013-01-03 Jonathan Liu <net147@gmail.com>
-
- [Qt] Fix library linking order
- https://bugs.webkit.org/show_bug.cgi?id=105818
-
- Some Qt libraries are linked before the private static libraries
- that depend on them which results in QtWebKit failing to link.
-
- Copy Qt module dependencies from QT to QT_PRIVATE when creating
- module to ensure the Qt libraries are linked after the private
- static libraries that depend on them.
-
- Reviewed by Tor Arne Vestbø.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2013-01-02 Byungwoo Lee <bw80.lee@samsung.com>
-
- [EFL][WK2] Fix tooltip bugs in MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=102209
-
- Reviewed by Gyuyoung Kim.
-
- Set tooltip on the elm_window instead of ewk_view, and add delay to
- show the tooltip window.
-
- Setting tooltip on the ewk_view makes elementary error message because
- ewk_view is not an elementary widget. To remove the error message,
- tooltip should be set on the elm_window.
-
- Most browsers show the tooltip after a mouse pointer stays on an
- element object that has tooltip text.
- But elm_tooltip widget itself doesn't have delay or handle mouse
- events to show/hide.
-
- So additional codes are added to show/hide tooltip widget along with
- mouse events.
- 1) When a mouse pointer stays for a second on an element which has
- tooltip text, then tooltip widget is displayed.
- 2) When a mouse pointer is moved or out of ewk_view, hide the tooltip
- widget.
-
- * MiniBrowser/efl/main.c:
- (_Tooltip_Information):
- (_Browser_Window):
- (on_tooltip_show):
- (window_tooltip_hide):
- (window_tooltip_update):
- (on_mouse_in):
- (on_mouse_move):
- (on_mouse_out):
- (window_free):
- (on_tooltip_text_set):
- (on_tooltip_text_unset):
- (window_create):
-
-2013-01-02 Tony Chang <tony@chromium.org>
-
- Unreviewed, rolling out r138661.
- http://trac.webkit.org/changeset/138661
- https://bugs.webkit.org/show_bug.cgi?id=104740
-
- Compile problems on EFL
-
- * GNUmakefile.am:
- * qmake/mkspecs/features/default_post.prf:
-
-2013-01-02 Tony Chang <tony@chromium.org>
-
- Generate internal.settings from Settings.in
- https://bugs.webkit.org/show_bug.cgi?id=104740
-
- Reviewed by Adam Barth.
-
- * GNUmakefile.am: Compile new generated files on GTK+.
- * qmake/mkspecs/features/default_post.prf: Qt: Make it so an action
- with both extra_sources and add_output_to_sources=false will still
- compile the files in extra_sources. This makes it possible to compile
- InternalSettingsGenerated.cpp and not be confused by
- InternalSettingsGenerated.idl.
-
-2013-01-02 Adam Barth <abarth@webkit.org>
-
- Remove old-run-webkit-tests support from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=105619
-
- Reviewed by Eric Seidel.
-
- This patch removes support for webkitpy parsing the
- old-run-webkit-tests results format. There doesn't seem to be any
- reason to keep this code around anymore now that most bots have
- switched to new-run-webkit-tests.
-
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Builder.fetch_layout_test_results):
- * Scripts/webkitpy/common/net/layouttestresults.py:
- (path_for_layout_test):
- (LayoutTestResults.results_from_string):
- (LayoutTestResults):
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- (LayoutTestResultsTest.test_results_from_string):
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (test_flaky_test_failure):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_missing_layout_test_results):
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- (PatchAnalysisTask._test_patch):
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (QueuesTest.assert_queue_outputs):
-
-2013-01-02 Heikki Paajanen <heikki.paajanen@palm.com>
-
- [Qt][WK2] Add simple UI to find text from page
- https://bugs.webkit.org/show_bug.cgi?id=96481
-
- Reviewed by Jocelyn Turcotte.
-
- Find bar that slides between navigation bar and WebView.
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::toggleFind):
- * MiniBrowser/qt/BrowserWindow.h:
- (BrowserWindow):
- * MiniBrowser/qt/MiniBrowser.qrc:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
- * MiniBrowser/qt/icons/find.png: Added.
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2013-01-02 Christophe Dumez <christophe.dumez@intel.com>
-
- Regression(r138603): Caused 2 webkitpy tests to fail
- https://bugs.webkit.org/show_bug.cgi?id=105913
-
- Reviewed by Kentaro Hara.
-
- Fix 2 webkitpy tests that started to fail after
- r138603.
-
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest._sheriff_test_data_url): Make sure the
- returned test file URL is valid no matter what the
- current working directory is.
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_help): Add "sheriffs" command to the
- list of available commands.
-
-2013-01-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2] plugins/clicking-missing-plugin-fires-delegate.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=105897
-
- Reviewed by Alexey Proskuryakov.
-
- Dump in WebKitTestRunner the message that is expected by layout tests
- when the missing plugin button is clicked.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::createWebViewWithOptions):
- (WTR::TestController::unavailablePluginButtonClicked):
- (WTR):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2013-01-01 KwangYong Choi <ky0.choi@samsung.com>
-
- [EFL] Enable MHTML feature
- https://bugs.webkit.org/show_bug.cgi?id=105815
-
- Reviewed by Laszlo Gombos.
-
- Enable MHTML feature for EFL port by default.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2013-01-01 Alan Cutter <alancutter@chromium.org>
-
- sheriff-bot should know who the gardeners/sheriffs are
- https://bugs.webkit.org/show_bug.cgi?id=105698
-
- Reviewed by Eric Seidel.
-
- Added a "sheriffs" command to sheriffbot to fetch the current Chromium Webkit sheriffs.
-
- * Scripts/webkitpy/tool/bot/irc_command.py:
- (Current):
- (Current._retrieve_webkit_sheriffs):
- (Current.execute):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_current):
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_0.js: Added.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_1.js: Added.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_2.js: Added.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_malformed.js: Added.
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_zero.js: Added.
-
-2012-12-31 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] Move ImageDiff to the Tools directory root
- https://bugs.webkit.org/show_bug.cgi?id=105421
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/gtk/GNUmakefile.ImageDiff.am: Removed.
- * GNUmakefile.am:
- * ImageDiff/gtk/ImageDiff.cpp: Renamed from Tools/DumpRenderTree/gtk/ImageDiff.cpp.
-
-2012-12-30 Mike West <mkwst@chromium.org>
-
- Add myself to watchlists for CSP and console logs.
- https://bugs.webkit.org/show_bug.cgi?id=105874
-
- Reviewed by Dirk Pranke.
-
- Because I really, really, really need more email.
-
- * Scripts/webkitpy/common/config/committers.py:
- Add mkwst+watchlist@chromium.org as a contributor.
- * Scripts/webkitpy/common/config/watchlist:
- Create watchlist categories for 1) the various mechanisms used to
- generate console messages, and 2) CSP usage and files.
-
-2012-12-30 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Enable TEMPLATE_ELEMENT feature
- https://bugs.webkit.org/show_bug.cgi?id=105865
-
- Reviewed by Laszlo Gombos.
-
- * Scripts/webkitperl/FeatureList.pm: Enable template element feature for EFL port.
-
-2012-12-30 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK gardening of the unit tests.
-
- Skip the TestInspectorServer unit test that's timing out completely.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-29 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation plugin: do not generate 'not instrumented' warning for instrumented mutable members.
- https://bugs.webkit.org/show_bug.cgi?id=105855
-
- Reviewed by Vsevolod Vlasov.
-
- Extract MemberExpr from ImplicitCastExpr. It happens when we instrument a mutable member because
- addMember expects const T& and the mutable ref to member implicitly converts into const ref to member.
-
- * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp:
- (ReportMemoryUsageVisitor):
- (clang::AddMemberCallVisitor::VisitCallExpr):
- (clang::ReportMemoryUsageVisitor::VisitCXXMethodDecl):
- (clang::ReportMemoryUsageVisitor::checkMembersCoverage):
-
-2012-12-29 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation plugin: move function bodies out of class declarations.
- https://bugs.webkit.org/show_bug.cgi?id=105852
-
- Reviewed by Alexander Pavlov.
-
- * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp:
- (clang):
- (AddMemberCallVisitor):
- (ReportMemoryUsageVisitor):
- (clang::ReportMemoryUsageAction::ParseArgs):
- (clang::AddMemberCallVisitor::VisitCallExpr):
- (clang::ReportMemoryUsageVisitor::VisitCXXMethodDecl):
- (clang::ReportMemoryUsageVisitor::emitWarning):
- (clang::ReportMemoryUsageVisitor::findInstrumentationMethod):
- (clang::ReportMemoryUsageVisitor::needsToBeInstrumented):
- (clang::ReportMemoryUsageVisitor::CheckMembersCoverage):
-
-2012-12-29 Zan Dobersek <zandobersek@gmail.com>
-
- [webkitpy] Omit webkitpy/thirdparty/BeautifulSoup.py from code coverage checking
- https://bugs.webkit.org/show_bug.cgi?id=105835
-
- Reviewed by Dirk Pranke.
-
- The BeautifulSoup module is a third-party import and as such we don't have much control
- over its testing. Because of that it should be omitted from code coverage checking.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
-
-2012-12-28 Martin Robinson <mrobinson@igalia.com>
-
- [GTK][WK2] Add support for IME Composition
- https://bugs.webkit.org/show_bug.cgi?id=65093
-
- Reviewed by Carlos Garcia Campos.
-
- Update unit tests for GtkInputMethodFilter to note whether or not an event
- was a fake event synthesized for composition purposes. This is now used
- for WebKit2.
-
- * TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp:
- (TestWebKitAPI::TestInputMethodFilter::sendSimpleKeyEvent):
- (TestWebKitAPI::TestInputMethodFilter::sendKeyEventWithCompositionResults):
- (TestWebKitAPI::TEST):
- * gtk/generate-gtkdoc:
- (get_webkit2_options): Skip new files in the WebKit2 source directory for documentation
- generation.
-
-2012-12-27 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation. Update clang plugin according to the current state of memory instrumentation code.
- https://bugs.webkit.org/show_bug.cgi?id=105800
-
- Reviewed by Yury Semikhatsky.
-
- * clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp:
- (clang::ReportMemoryUsageConsumer::ReportMemoryUsageConsumer):
- (clang):
-
-2012-12-27 Zan Dobersek <zandobersek@gmail.com>
-
- Create a GTK build system watchlist and add myself to it
- https://bugs.webkit.org/show_bug.cgi?id=105769
-
- Reviewed by Dirk Pranke.
-
- Add a GTK build system watchlist, watching the configure.ac, GNUmakefile.am files
- and the input GNUmakefile.features.am.in file. The GNUmakefile.list.am files are
- omitted on purpose due to relatively high change rate they are exposed to.
-
- The new watchlist would be of use to me as the GTK build system recently went
- through a series of changes that included a changed policy on adding configuration
- flags to configure.ac and subsequent additions to GNUmakefile.am files. A PSA on the
- mailing list about this change will be published later, but I'd also like to be
- notified of any pending changes to these files just so I can check the changes are
- in compliance with the new policy.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-12-26 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed. Replace find("Tools") with rfind("Tools") because base dir of WebKit may have Tools word.
- As example ..../DevTools/src/third_party/WebKit
-
- * Scripts/webkitpy/common/webkit_finder.py:
- (WebKitFinder.webkit_base):
-
-2012-12-25 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Refactor snapshot taking code
- https://bugs.webkit.org/show_bug.cgi?id=105687
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Call WKViewCreateSnapshot() instead of WKViewGetSnapshot()
- since the function was renamed to follow naming style.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2012-12-24 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: propagate member type as edge type to the serialized heap graph.
- https://bugs.webkit.org/show_bug.cgi?id=105725
-
- Reviewed by Yury Semikhatsky.
-
- MemberType value names were adjusted according to Style Guide.
- Existing tests were extended with link type validation.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-12-24 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - Crashed when running pixels tests
- https://bugs.webkit.org/show_bug.cgi?id=105711
-
- RIM PR 270003
-
- Reviewed by George Staikos.
-
- Calling window->post() here will result in buffer swapping which is
- only allowed in UI thread now, and I found we don't need to call it
- for GL renderer.
-
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
- (createBitmapContextFromWebView):
-
-2012-12-22 Dan Winship <danw@gnome.org>
-
- Add a patch to fix libxml2 2.9.0 regression
- https://bugs.webkit.org/show_bug.cgi?id=104494
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules:
- * gtk/patches/libxml2-2.9.0-dtd.patch: patch from upstream
-
-2012-12-23 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- Unreviewed update of status to reviewer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-23 Philippe Normand <pnormand@igalia.com>
-
- [GTK][jhbuild] Bump GStreamer to 1.0.4
- https://bugs.webkit.org/show_bug.cgi?id=105640
-
- Reviewed by Martin Robinson.
-
- * gtk/jhbuild.modules: Update GStreamer modules to 1.0.4.
-
-2012-12-21 Nico Weber <thakis@chromium.org>
-
- chromium: webkit-build-directory doesn't handle ninja output dirs
- https://bugs.webkit.org/show_bug.cgi?id=105671
-
- Reviewed by Daniel Bates.
-
- Teach webkit-build-directory to detect the ninja build directory.
-
- * Scripts/webkitdirs.pm:
- (determineBaseProductDir):
- (determineIsChromiumNinja):
-
-2012-12-21 Ryosuke Niwa <rniwa@webkit.org>
-
- [Mountain Lion] platform/mac/editing/spelling/removing-underline-after-accepting-autocorrection-using-punctuation.html failing
- https://bugs.webkit.org/show_bug.cgi?id=95477
-
- Reviewed by Sam Weinig.
-
- Co-authored by Jia Pu.
-
- Specify a fixed autocorrection dictionary in resetDefaultsToConsistentValues() so that
- we can have consistent autocorrection behavior when running tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues):
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-12-21 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Add WebKit1-specific TestExpectations file
- https://bugs.webkit.org/show_bug.cgi?id=97562
-
- Reviewed by Dirk Pranke.
-
- Implement the expectations_files method inside the GtkPort class that
- returns the list of the TestExpectations files the current test configuration
- requires. The method is implemented in a similar way as on the EFL port.
- A unit test is also added.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort._search_paths):
- (GtkPort):
- (GtkPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_expectations_files):
-
-2012-12-21 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL] Enable feature option for the CSS sticky position
- https://bugs.webkit.org/show_bug.cgi?id=105630
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable CSS sticky position feature by default for the
- EFL port. This feature option was added in r138252.
-
- No new tests. Existing layout tests pass.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-21 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- [WK2] REGRESSION(r138232): It made 4 tests timeout
- https://bugs.webkit.org/show_bug.cgi?id=105623
-
- Reviewed by Kenneth Rohde Christiansen.
-
- r138232 changed functionality so that empty text output
- no longer leads to a dump() call, which leads to a timeout.
- Instead do a text dump if there is text output or if there
- is no audio output.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::dumpResults):
-
-2012-12-21 Zeno Albisser <zeno@webkit.org>
-
- [Qt][Mac] run-launcher cannot find Qt5WebKitWidgets.
- https://bugs.webkit.org/show_bug.cgi?id=105309
-
- On Windows the library name is Qt5WebKitWidgets as well.
- So r138136 should not have adjusted the library name for Windows.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
-
-2012-12-21 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Add new TestExpectations for qt-5.0-mac-wk2.
- https://bugs.webkit.org/show_bug.cgi?id=105424
-
- This change will allow us to run a very specific
- subset of the available LayoutTests on a mac buildbot.
- The new baseline search path for mac will look as follows:
- qt-5.0-mac-wk2 -> qt-5.0-wk2 -> qt-5.0 -> qt-mac -> qt
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._search_paths):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest):
-
-2012-12-20 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Build break with latest EFL libraries.
- https://bugs.webkit.org/show_bug.cgi?id=104827
-
- Reviewed by Laszlo Gombos.
-
- The eo EFL package is introduced and evas and ecore use it since 1.8.
- While introducing Eo, EFL changed several structures of Evas and Ecore
- from own specific class to Eo.
-
- So, this patch adds FindEo and changes declaration of Evas, Evas_Object,
- Ecore_Timer to build with latest EFL libraries.
-
- * DumpRenderTree/efl/CMakeLists.txt: Includes eo EFL library.
- * EWebLauncher/CMakeLists.txt: Ditto.
- * MiniBrowser/efl/CMakeLists.txt: Ditto.
- * ImageDiff/PlatformEfl.cmake: Ditto.
- * TestWebKitAPI/PlatformEfl.cmake: Ditto.
- * TestWebKitAPI/PlatformWebView.h: Modified declaration of Evas_Object.
- * WebKitTestRunner/InjectedBundle/TestRunner.h: Modified declaration of Ecore_Timer.
- * WebKitTestRunner/PlatformEfl.cmake: Includes eo EFL library.
- * WebKitTestRunner/PlatformWebView.h: Modified declaration of Evas_Object.
-
-2012-12-20 Dirk Pranke <dpranke@chromium.org>
-
- TestExpectation fallback is broken
- https://bugs.webkit.org/show_bug.cgi?id=105583
-
- Reviewed by Ryosuke Niwa.
-
- When I added support for the -wk2 in port names, it looks
- like I broke the way we computed the list of TestExpectations
- files so that the implementation-version directory was left out :(.
- Fixed and cleaned up the tests.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.expectations_files):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (TestWebKitPort.__init__):
- (PortTestCase.test_skipped_directories_for_symbols):
- (test_skipped_directories_for_features):
- (test_skipped_directories_for_features_no_matching_tests_in_test_list):
- (test_skipped_tests_for_unsupported_features_empty_test_list):
- (test_skipped_layout_tests):
- (test_expectations_files):
-
-2012-12-20 Anders Carlsson <andersca@apple.com>
-
- Don't include WebKit2 headers when building TestWebKitAPI on windows
- https://bugs.webkit.org/show_bug.cgi?id=105582
-
- Reviewed by Tim Horton.
-
- * TestWebKitAPI/config.h:
- * TestWebKitAPI/win/main.cpp:
-
-2012-12-20 Ryosuke Niwa <rniwa@webkit.org>
-
- REGRESSION(r133820?): SimplifyMarkupTest API test asserts
- https://bugs.webkit.org/show_bug.cgi?id=105370
-
- Reviewed by Simon Fraser.
-
- Re-enable the test.
-
- * TestWebKitAPI/Tests/mac/SimplifyMarkup.mm:
- (TestWebKitAPI::TEST):
-
-2012-12-20 Nico Weber <thakis@chromium.org>
-
- chromium nrwt: Pick the newest binary found in DEFAULT_BUILD_DIRECTORIES, not the first
- https://bugs.webkit.org/show_bug.cgi?id=105498
-
- Reviewed by Dirk Pranke.
-
- Use the newest binary available rather than an than always picking one
- build directory over another based on iteration order.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._static_build_path):
- Check for timestamps.
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_build_path_timestamps):
- Test that out / xcodebuild selection happens based on timestamps
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinPortTest.test_build_path_timestamps):
- Test that out / build selection happens based on timestamps
-
-2012-12-19 Simon Fraser <simon.fraser@apple.com>
-
- Lots of sticky tests failing in WK2
- https://bugs.webkit.org/show_bug.cgi?id=105464
-
- Reviewed by Beth Dakin.
-
- WebKitTestRunner had a race between snapshotting in the UI process,
- and resettting after the test in the web process. InjectedBundle::done()
- was a bad place to call page()->resetAfterTest(), because of this race;
- it could reset the scroll position before the UI snapshot had been obtained.
-
- Fix by moving the call to page()->resetAfterTest() into didReceiveMessage(),
- for the "Reset" message which will come in before the next test.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::done):
-
-2012-12-19 Filip Pizlo <fpizlo@apple.com>
-
- DFG speculation checks that take JumpList should consolidate OSRExits
- https://bugs.webkit.org/show_bug.cgi?id=105401
-
- Reviewed by Oliver Hunt.
-
- Update the profiler to understand that an OSR exit may have multiple
- candidate exit sites.
-
- * Scripts/display-profiler-output:
-
-2012-12-20 Eric Seidel <eric@webkit.org>
-
- EWSes do not need to dump build/test logs when things pass
- https://bugs.webkit.org/show_bug.cgi?id=105402
-
- Reviewed by Dirk Pranke.
-
- When we were first writing the commit-queue and EWS system
- and running them locally, we thought it was important to see the
- build/test output as it happened. Now these queues have been running
- for years, and we don't use this feature anymore. So this patch
- makes us stop tee-ing the output directly to stdout, and instead
- only print any output from commands when they fail.
-
- I also added some logging when we execute each command
- since we are no longer printing the command output itself.
- This should make it much easier to see errors with the EWS
- system itself, now that all the passing-build output is removed.
-
- This required updating a zillion unittests, since we have a bunch of
- "integration" style testing of the queue-bots. Many of the unittests for the bots were
- already approximating this behavior by using a "logging" Executive.
- I disabled logging in those cases to avoid redundant logging in those tests.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.command_for_printing):
- (Executive.run_command):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.command_for_printing):
- (MockExecutive.run_command):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_auto_stringify_args):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._default_expected_logs):
- (_test_ews):
- (_test_ewses):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractQueue.run_webkit_patch):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractQueueTest._assert_run_webkit_patch):
- (CommitQueueTest.test_commit_queue):
- (test_rollout):
- (test_rollout_lands):
- (test_manual_reject_during_processing):
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
-
-2012-12-20 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: support clickPoint in DRT for chromium
- https://bugs.webkit.org/show_bug.cgi?id=97359
-
- Reviewed by Chris Fleizach.
-
- Implement clickPointX, clickPointY, and elementAtPoint for Chromium, so that
- several more tests can pass.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElement::clickPointXGetterCallback):
- (WebTestRunner):
- (WebTestRunner::AccessibilityUIElement::clickPointYGetterCallback):
- (WebTestRunner::AccessibilityUIElement::elementAtPointCallback):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
-
-2012-12-20 Dan Bernstein <mitz@apple.com>
-
- prepare-ChangeLog adds "Additional information of the change such as approach, rationale" where it doesn't make sense
- https://bugs.webkit.org/show_bug.cgi?id=99268
-
- Reviewed by Alexey Proskuryakov.
-
- * Scripts/prepare-ChangeLog:
- (generateNewChangeLogs): Removed the "Additional information of the change" line.
-
-2012-12-20 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip unit test /webkit/atk/getTextInParagraphAndBodyModerate
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [Qt] Move ImageDiff to the Tools directory root
- https://bugs.webkit.org/show_bug.cgi?id=105420
-
- Reviewed by Tor Arne Vestbø.
-
- Moved ImageDiff from outside DumpRenderTree because it is also a
- dependency when running pixel tests for WebKit2.
-
- * ImageDiff/ImageDiff.pro: Renamed from Tools/DumpRenderTree/qt/ImageDiff.pro.
- * ImageDiff/qt/ImageDiff.cpp: Renamed from Tools/DumpRenderTree/qt/ImageDiff.cpp.
- * Tools.pro:
-
-2012-12-20 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Remove the --enable-unstable-features configuration option
- https://bugs.webkit.org/show_bug.cgi?id=105327
-
- Reviewed by Martin Robinson.
-
- Add a missing feature option for the CSS sticky position feature.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-20 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Skip unit test WebKit2.ForceRepaint that times out
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-20 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] MiniBrowser does not play Infinite Gangnam Style
- https://bugs.webkit.org/show_bug.cgi?id=103531
-
- Reviewed by Kenneth Rohde Christiansen.
-
- For EFL we would like this feature to be built by default.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-20 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] EWS bots should call qmake always
- https://bugs.webkit.org/show_bug.cgi?id=90049
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-12-20 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] fix stray printf in TestRunner's WebTestProxy
- https://bugs.webkit.org/show_bug.cgi?id=105515
-
- Reviewed by Ryosuke Niwa.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::shouldInsertNode):
-
-2012-12-20 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [WK2] WebAudio WKTR support
- https://bugs.webkit.org/show_bug.cgi?id=95084
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implementing audio data dump support for WebKitTestRunner,
- by adding the API to the IDL, enabling IPC for transferring
- the audio data as bytebuffer and dumping it according
- to run-webkit-tests script's expectations.
- This enables audio testing on WebKit2 ports.
- Based on initial wip-patch from Philippe Normand - thanks.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl: Adding setAudioData API.
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp: Assign audio buffer data to a local WKDataRef after extracting it from WK2 using WKBundleDataFromUint8Array bundle API.
- (WTR::TestRunner::setAudioData):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h: Add a whatToDump state for dumping Audio.
- (TestRunner):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: Add audio to the message that's transferred to the WKTR process.
- (WTR::InjectedBundle::done):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h: Allow setting and audio result handle to be transferred.
- (WTR::InjectedBundle::setAudioResult):
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump): Dummy handling the Audio case in the switch, build fix for Mac.
- * WebKitTestRunner/TestInvocation.cpp: Audio dump support, dump audio if we haven't received a text dump from the web process.
- (WTR::TestInvocation::dumpResults):
- (WTR):
- (WTR::TestInvocation::dumpAudio):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Storing received audio data before dumping.
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
-
-2012-12-20 Alberto Garcia <agarcia@igalia.com>
-
- [GTK] Count failed and timed out tests separately
- https://bugs.webkit.org/show_bug.cgi?id=105448
-
- Reviewed by Carlos Garcia Campos.
-
- Display the number of tests that fail, time out and are skipped
- separately in the buildbot page.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunGtkAPITests.commandComplete):
- (RunGtkAPITests.evaluateCommand):
- (RunGtkAPITests.getText2):
- * Scripts/run-gtk-tests:
- (TestRunner.run_tests):
-
-2012-12-19 Ryosuke Niwa <rniwa@webkit.org>
-
- PerfTest.parse_output does too much
- https://bugs.webkit.org/show_bug.cgi?id=105391
-
- Reviewed by Tony Chang.
-
- Moved the code to filter lines into PerfTest._filter_output, which has been renamed from _filter_stderr.
- Also moved the code to output test results into PerfTest._run_with_driver.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.__init__): Added _description.
- (PerfTest.description): Added.
- (PerfTest._run_with_driver): Moved the code to output test description and test results.
- (PerfTest._filter_output): Moved and renamed from PerfTest._filter_stderr.
- (PerfTest.parse_output): Removed the code to output test results. Return test results and description
- respectively. Also removed the code that allowed some tests to omit values since all tests report each
- iteration now since r136492.
- (PerfTest.output_statistics): Removed the code to print test description, now done in _run_with_driver.
- (ChromiumStylePerfTest._run_with_driver): Added. Chromium style tests are sufficiently different from
- regular PerfTest that it doesn't make much sense to share _run_with_driver. But really, we should just
- get rid of this type of test altogether in favor of regular performance tests that uses runner.js.
- (ChromiumStylePerfTest.parse_and_log_output): Renamed from parse_output.
- (PageLoadingPerfTest._run_with_driver): Removed the explicit '' for the test description.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output): Removed the expected logs since parse_output no longer prints out results.
- Also added a call to _filter_output since parse_output doesn't filter the output text anymore.
- (MainTest.test_parse_output_with_failing_line): Added a call to _filter_output. Also added ',' after 'Time:'
- so that it's not string-concatenated with the next line.
- (MainTest.test_parse_output_with_description): Added; a test for PerfTest.description().
- (MainTest.test_parse_output_with_subtests): Removed the expected logs, and added a call to _filter_output.
-
-2012-12-19 Alexis Menard <alexis@webkit.org>
-
- Implement CSS parsing for CSS transitions unprefixed.
- https://bugs.webkit.org/show_bug.cgi?id=104804
-
- Reviewed by Dean Jackson.
-
- Add a new flag ENABLE_CSS_TRANSFORMS_ANIMATIONS_TRANSITIONS_UNPREFIXED
- to cover the work of unprefixing Transforms, Animations and
- Transitions. It will let the possibility of each ports to turn it off
- in their release branches until we're confident that these CSS
- properties are ready to be unprefixed.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-12-19 Julien Chaffraix <jchaffraix@webkit.org>
-
- 2 clampTo unit tests are failing
- https://bugs.webkit.org/show_bug.cgi?id=105253
-
- Reviewed by Emil A Eklund.
-
- Removed clampToUnsigned as it was actually testing exactly what
- clampToUnsignedLong was doing. Also made clampToIntFloat more robust
- to precision loss (fix suggested by Emil).
-
- * TestWebKitAPI/Tests/WTF/MathExtras.cpp:
-
-2012-12-19 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Move ImageDiff to the Tools directory root
- https://bugs.webkit.org/show_bug.cgi?id=105305
-
- Reviewed by Laszlo Gombos.
-
- We previously moved this directory from the DRT directory to
- efl/ImageDiff. The major reason for doing so was because ImageDiff does
- not depend on DumpRenderTree but for legacy reasons was living inside the
- DRT folder, even though it is needed when running pixel tests for WK2.
-
- Now we are moving to Tool directory root as other ports agreed to do the same.
-
- * CMakeLists.txt:
- * ImageDiff/CMakeLists.txt: Added.
- * ImageDiff/PlatformEfl.cmake: Added.
- * ImageDiff/efl/ImageDiff.cpp: Renamed from Tools/efl/ImageDiff/ImageDiff.cpp.
- * efl/ImageDiff/CMakeLists.txt: Removed.
-
-2012-12-19 Zeno Albisser <zeno@webkit.org>
-
- [Qt][Mac] run-launcher cannot find Qt5WebKitWidgets.
- https://bugs.webkit.org/show_bug.cgi?id=105309
-
- The version number is only used as a part
- of the library name on Linux.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
-
-2012-12-19 Alberto Garcia <agarcia@igalia.com>
-
- [GTK] Tests that time out are not considered as failures.
- https://bugs.webkit.org/show_bug.cgi?id=105318
-
- Reviewed by Martin Robinson.
-
- Fix parsing of the GTK API tests log files.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunGtkAPITests.commandComplete):
-
-2012-12-18 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed, rolling out r138061.
- https://bugs.webkit.org/show_bug.cgi?id=105396
-
- Original patch:
- http://trac.webkit.org/changeset/138061
- https://bugs.webkit.org/show_bug.cgi?id=97359
-
- It is crashing on Debug bots
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElement::elementAtPointCallback):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
-
-2012-12-18 Alice Liu <alice.liu@apple.com>
-
- Test for https://bugs.webkit.org/show_bug.cgi?id=105106
- Add SPI to WebKit1 WebFrame for hit testing
-
- Reviewed by Dan Bernstein.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added file Tests/mac/ElementAtPointInWebFrame.mm
- * TestWebKitAPI/Tests/mac/ElementAtPointInWebFrame.mm: Added.
- (TestWebKitAPI::TEST): Loads html with two divs positioned in the 2nd and 4th quadrants of the webview.
- Then hit-tests at three points, expecting to hit the two divs and body element.
-
-2012-12-18 Alice Liu <alice.liu@apple.com>
-
- Test for https://bugs.webkit.org/show_bug.cgi?id=105262
- Add SPI to WebKit1 WebFrame for node conversion to JSValueRef
-
- Reviewed by Anders Carlsson.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added file Tests/mac/JSWrapperForNodeInWebFrame.mm.mm
- * TestWebKitAPI/Tests/mac/JSWrapperForNodeInWebFrame.mm.mm: Added.
- (TestWebKitAPI::TEST): Tests for the correct JS wrapper for a DOMNode, provided a WebScriptWorld.
- Loads html with a single div element. In an isolated world, creates a property on that node.
- Also, in the standard world, creates a different property on that node. Then tests for 4 things:
- - Existence of the isolated property in the isolated world.
- - Existence of the standard property in the standard world.
- - Non-existence of the isolated property in the standard world.
- - Non-existence of the standard property in the isolated world.
-
-2012-12-18 Simon Fraser <simon.fraser@apple.com>
-
- Disable the SimplifyMarkup API test, wich asserts in debug builds.
- Tracked by https://bugs.webkit.org/show_bug.cgi?id=105370.
-
- * TestWebKitAPI/Tests/mac/SimplifyMarkup.mm:
- (TestWebKitAPI::TEST):
-
-2012-12-18 Joseph Pecoraro <pecoraro@apple.com>
-
- [Mac] Add Build Phase to Check Headers for Inappropriate Macros (Platform.h macros)
- https://bugs.webkit.org/show_bug.cgi?id=104279
-
- Reviewed by David Kilzer.
-
- Add a build phase script that checks a framework's header files for
- Platform.h and Compiler.h macros. Also add some tests for the script.
-
- * Scripts/check-for-inappropriate-macros-in-external-headers: Added.
- Script to be used in build phases to check for inappropriate macros in headers.
-
- * Scripts/test-webkitruby: Added.
- Script that can be used to run all webkitruby tests.
-
- * Scripts/test-webkit-scripts:
- Also run the ruby tests.
-
- * Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/fake-data-failing-expected.txt: Added.
- * Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/pass-expected.txt: Added.
- * Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Fail.h: Added.
- * Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Pass.h: Added.
- * Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb: Added.
- Tests for the new script.
-
-2012-12-18 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: support clickPoint in DRT for chromium
- https://bugs.webkit.org/show_bug.cgi?id=97359
-
- Reviewed by Chris Fleizach.
-
- Implement clickPointX, clickPointY, and elementAtPoint for Chromium, so that
- several more tests can pass.
-
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElement::clickPointXGetterCallback):
- (WebTestRunner):
- (WebTestRunner::AccessibilityUIElement::clickPointYGetterCallback):
- (WebTestRunner::AccessibilityUIElement::elementAtPointCallback):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
-
-2012-12-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Build fix after r138045.
-
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._collect_tests): Use relative_path. We skip only when this path
- is not explicitly specified. The condition was backwards but never matched so we
- always ran the test regardless of whether it's listed in the skipped list or not.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests_with_ignored_skipped_list): Renamed so that it actually runs.
-
-2012-12-18 Emil A Eklund <eae@chromium.org>
-
- TestWebKitAPI/Tests/WebCore/LayoutUnit fails on mac
- https://bugs.webkit.org/show_bug.cgi?id=105332
-
- Reviewed by Levi Weintraub.
-
- Create new test suite for LayoutUnit tests as the KURL tests are
- of the incompatible TEST_F type.
-
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::TEST_F):
-
-2012-12-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Running a skipped test with run-perf-tests could alert the user
- https://bugs.webkit.org/show_bug.cgi?id=105219
-
- Reviewed by Eric Seidel.
-
- Force run skipped performance tests explicitly specified in the command line.
- Also warn the user when the specified paths don't exist.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.relative_test_filename):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._collect_tests):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests_with_skipped_list_and_files):
-
-2012-12-18 Yaron Friedman <yfriedman@chromium.org>
-
- Chrome Android java output is too verbose
- https://bugs.webkit.org/show_bug.cgi?id=105247
-
- Reviewed by Tony Chang.
-
- Pass -quiet to ant to suppress extraneous output.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-12-18 Ryosuke Niwa <rniwa@webkit.org>
-
- Consider removing --pause-before-testing option
- https://bugs.webkit.org/show_bug.cgi?id=105248
-
- Reviewed by Eric Seidel.
-
- Remove --pause-before-testing option.
-
- * Tools/Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverProxy.start): Removed.
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.__init__):
- (PerfTest.test_path): Renamed from path_or_url.
- (PerfTest.run):
- (PerfTest): Removed "driver" argument.
- (PerfTest._run_with_driver):
- (PerfTest.run_single):
- (ChromiumStylePerfTest.__init__):
- (PageLoadingPerfTest.__init__):
- (PageLoadingPerfTest.run_single):
- (PageLoadingPerfTest._run_with_driver): Renamed from run so that PerfTest.run can create a driver for us.
- (ReplayPerfTest.__init__):
- (ReplayPerfTest.prepare):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_memory_output):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._run_tests_set): Removed the code to create a driver and pause before running the test.
- (PerfTestsRunner._run_single_test): Removed "driver" argument.
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (run_test):
- (test_run_test_pause_before_testing): Removed.
-
-2012-12-18 Alberto Garcia <agarcia@igalia.com>
-
- [GTK] Tests that time out are not considered as failures.
- https://bugs.webkit.org/show_bug.cgi?id=105318
-
- Reviewed by Martin Robinson.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunGtkAPITests.commandComplete):
- Consider log lines that end with TIMEOUT as errors.
-
- * Scripts/run-gtk-tests:
- (TestRunner.run_tests):
- Consider timeouts as failures when returning the number of failed
- tests.
-
-2012-12-18 Pravin D <pravin.d@samsung.com>
-
- Unreviewed, adding secondary email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-18 Pravin D <pravin.d@samsung.com>
-
- Unreviewed, promoting myself to committer's list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] ImageDiff does not build on WebKit2 only builds
- https://bugs.webkit.org/show_bug.cgi?id=105288
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Moved ImageDiff to the efl/ folder inside Tools/ (so we don't pollute
- the folder with things which are EFL-specific.
-
- ImageDiff will be built by default now regardless of WebKit API flavor
- you choose.
-
- * CMakeLists.txt:
- * DumpRenderTree/efl/CMakeLists.txt:
- * efl/ImageDiff/CMakeLists.txt: Added.
- * efl/ImageDiff/ImageDiff.cpp: Renamed from Tools/DumpRenderTree/efl/ImageDiff.cpp.
-
-2012-12-18 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [EFL][WK2] When creating new windows, use the opener's context
- https://bugs.webkit.org/show_bug.cgi?id=105283
-
- Reviewed by Laszlo Gombos.
-
- Use the context of the opener if exists.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_window_create):
- (window_create):
- (elm_main):
-
-2012-12-18 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL][WK2] Gardening of TestWebKitAPI tests
- https://bugs.webkit.org/show_bug.cgi?id=105268
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Some tests were marked as failing but are passing and the newly added
- LayoutUnit should have it's own binary because it conflicts with the
- fixture used by KURL and is failing on the bots because of that.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2012-12-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move webintent related methods to TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=105164
-
- Reviewed by Darin Fisher.
-
- Also deleted the unused deliveredIntentFailure and
- deliveredIntentResult methods.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebKit):
- (WebTestRunner::WebTestDelegate::setCurrentWebIntentRequest):
- (WebTestRunner::WebTestDelegate::currentWebIntentRequest):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::registerIntentService):
- (WebTestRunner::WebTestProxy::dispatchIntent):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::sendWebIntentResponse):
- (WebTestRunner):
- (WebTestRunner::TestRunner::deliverWebIntent):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::postAccessibilityNotification):
- (WebTestRunner::WebTestProxyBase::registerIntentService):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::dispatchIntent):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::setCurrentWebIntentRequest):
- (WebViewHost::currentWebIntentRequest):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebKit):
- (WebViewHost):
-
-2012-12-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move editing callback dumping to the WebTestProxy
- https://bugs.webkit.org/show_bug.cgi?id=105013
-
- Reviewed by Darin Fisher.
-
- To decide whether or not to dump the editing callbacks, the WebTestProxy
- needs to query the TestRunner. For this purpose, I introduce a
- WebTestRunner class that just exposes the shouldDumpEditingCallbacks
- method. In contrast to e.g. WebEventSender, the WebTestRunner is just
- an interface, and it is not owned by the WebTestInterfaces, but the
- embedder of the TestRunner library must provide it. This will change
- once all TestRunner methods are in the library.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- (DRTTestRunner::taskList):
- (DRTTestRunner::WorkQueue::taskList):
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h:
- (WebTestRunner):
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestRunner):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::shouldBeginEditing):
- (WebTestRunner::WebTestProxy::shouldEndEditing):
- (WebTestRunner::WebTestProxy::shouldInsertNode):
- (WebTestRunner::WebTestProxy::shouldInsertText):
- (WebTestRunner::WebTestProxy::shouldChangeSelectedRange):
- (WebTestRunner::WebTestProxy::shouldDeleteRange):
- (WebTestRunner::WebTestProxy::shouldApplyStyle):
- (WebTestRunner::WebTestProxy::didBeginEditing):
- (WebTestRunner::WebTestProxy::didChangeSelection):
- (WebTestRunner::WebTestProxy::didChangeContents):
- (WebTestRunner::WebTestProxy::didEndEditing):
- * DumpRenderTree/chromium/TestRunner/public/WebTestRunner.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h.
- (WebTestRunner):
- (WebTestRunner::WebTestRunner::shouldDumpEditingCallbacks):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::~TestRunner):
- (WebTestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::shouldDumpEditingCallbacks):
- (WebTestRunner::TestRunner::dumpEditingCallbacks):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestRunner::WebTestInterfaces::Internal::testRunner):
- (WebTestRunner::WebTestInterfaces::Internal::setTestRunner):
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::Internal):
- (WebTestRunner::WebTestInterfaces::testRunner):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::setTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::postAccessibilityNotification):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::shouldBeginEditing):
- (WebTestRunner::WebTestProxyBase::shouldEndEditing):
- (WebTestRunner::WebTestProxyBase::shouldInsertNode):
- (WebTestRunner::WebTestProxyBase::shouldInsertText):
- (WebTestRunner::WebTestProxyBase::shouldChangeSelectedRange):
- (WebTestRunner::WebTestProxyBase::shouldDeleteRange):
- (WebTestRunner::WebTestProxyBase::shouldApplyStyle):
- (WebTestRunner::WebTestProxyBase::didBeginEditing):
- (WebTestRunner::WebTestProxyBase::didChangeSelection):
- (WebTestRunner::WebTestProxyBase::didChangeContents):
- (WebTestRunner::WebTestProxyBase::didEndEditing):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::shouldBeginEditing):
- (WebViewHost::shouldEndEditing):
- (WebViewHost::shouldInsertNode):
- (WebViewHost::shouldInsertText):
- (WebViewHost::shouldChangeSelectedRange):
- (WebViewHost::shouldDeleteRange):
- (WebViewHost::shouldApplyStyle):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-12-17 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Fix methods in TestRunner that directly modify the settings instead of going through WebPreferences
- https://bugs.webkit.org/show_bug.cgi?id=105154
-
- Reviewed by Tony Chang.
-
- If the settings are modified directly, the embedder can't keep track of
- them and might accidentially override the changed settings.
-
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setAsynchronousSpellCheckingEnabled):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setMinimumTimerInterval):
- (WebTestRunner::TestRunner::setTouchDragDropEnabled):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
-
-2012-12-17 Julien Chaffraix <jchaffraix@webkit.org>
-
- Unreviewed unit test skipping.
-
- Filed https://bugs.webkit.org/show_bug.cgi?id=105253 to re-enable them.
-
- * TestWebKitAPI/Tests/WTF/MathExtras.cpp:
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-12-17 Dean Jackson <dino@apple.com>
-
- Unreviewed. Add Silvia Pfeiffer to contributor list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-17 Dirk Pranke <dpranke@chromium.org>
-
- build.webkit.org - add more google windows bots
- https://bugs.webkit.org/show_bug.cgi?id=105225
-
- Reviewed by Eric Seidel.
-
- Adds two more windows bots (google-windows-3, a builder, and
- google-windows-4, a tester) for the Chromium configs.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-12-17 Eric Seidel <eric@webkit.org>
-
- Cleanup --profiler=perf code a little and allow up to 1000 report files (instead of 100)
- https://bugs.webkit.org/show_bug.cgi?id=105217
-
- Reviewed by Dirk Pranke.
-
- Previously --profile would fail strangely if find_unused_filename returned None
- (which would happen as soon as we had 100 report files).
- Now we'll search through 1000 filenames before giving up (and assert if we failed to find one).
- I also made some minor cleanups to the output of perf, and tried to make the
- commands more self-documenting by using long-names for args.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (SingleFileOutputProfiler.__init__):
- (Perf.attach_to_pid):
- (Perf.profile_after_exit):
-
-2012-12-17 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r137198.
- http://trac.webkit.org/changeset/137198
- https://bugs.webkit.org/show_bug.cgi?id=105212
-
- This patch is causing API behavior compatibility problems
- (Requested by zdobersek on #webkit).
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback):
-
-2012-12-17 Elliott Sprehn <esprehn@chromium.org>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-17 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: shuffle code around for cleanup in run_webkit_tests.py
- https://bugs.webkit.org/show_bug.cgi?id=105078
-
- Reviewed by Ojan Vafai.
-
- This patch reorders functions so that run_webkit_tests can be
- understood in a top-down matter better, and to make things slightly
- more sensible when I merge manager.py into it.
-
- Also, this adds tests for the actual main() routine, which had several
- bugs get through testing a week or two ago.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
- (parse_args):
- (_set_up_derived_options):
- (run):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (RunTest):
- (RunTest.test_no_http_tests):
- (PortTest.disabled_test_mac_lion):
- (MainTest):
- (MainTest.test_exception_handling):
- (MainTest.test_exception_handling.interrupting_run):
- (MainTest.test_exception_handling.successful_run):
- (MainTest.test_exception_handling.successful_run.FakeRunDetails):
- (MainTest.test_exception_handling.exception_raising_run):
-
-2012-12-17 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: move --lint-test-files code into its own module
- https://bugs.webkit.org/show_bug.cgi?id=105077
-
- Reviewed by Eric Seidel.
-
- It really didn't need to be in run_webkit_tests.py anymore.
- This patch adds a new lint-test-expectations scripts to Tools/Scripts;
- rwt --lint-test-files is still supported for backwards compatibility
- for now.
-
- * Scripts/lint-test-expectations: Added.
- * Scripts/webkitpy/layout_tests/lint_test_expectations.py: Added.
- (lint):
- (main):
- * Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py: Added.
- (FakePort):
- (FakePort.__init__):
- (FakePort.test_configuration):
- (FakePort.expectations_dict):
- (FakePort.skipped_layout_tests):
- (FakePort.all_test_configurations):
- (FakePort.configuration_specifier_macros):
- (FakePort.get_option):
- (FakeFactory):
- (FakeFactory.__init__):
- (FakeFactory.get):
- (FakeFactory.all_port_names):
- (LintTest):
- (LintTest.test_all_configurations):
- (LintTest.test_lint_test_files):
- (LintTest.test_lint_test_files__errors):
- (MainTest):
- (MainTest.test_success):
- (MainTest.test_success.interrupting_lint):
- (MainTest.test_success.successful_lint):
- (MainTest.test_success.exception_raising_lint):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (StreamTestingMixin.assertNotEmpty):
-
-2012-12-17 Adam Klein <adamk@chromium.org>
-
- build-webkit: rename --template-tag to --template-element to match ENABLE #define name
- https://bugs.webkit.org/show_bug.cgi?id=105072
-
- Reviewed by Laszlo Gombos.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-17 Julien Chaffraix <jchaffraix@webkit.org>
-
- Add some unit testing for WTF::clampTo* functions
- https://bugs.webkit.org/show_bug.cgi?id=105060
-
- Reviewed by Emil A Eklund.
-
- The new tests are targeted at clamping to int / unsigned and float as those are
- the one explicitely exposed through more dedicated functions (like clampToInteger,
- clampToPositiveInteger and clampToFloat).
-
- * TestWebKitAPI/Tests/WTF/MathExtras.cpp:
-
-2012-12-17 Eric Seidel <eric@webkit.org>
-
- rpt --profile --chromium-android throws exception
- https://bugs.webkit.org/show_bug.cgi?id=105061
-
- Reviewed by Daniel Bates.
-
- Somehow popen(args) got turned into popen(*args) at some point,
- which caused my new stringify code to fail when args was passed by name.
- Fixed and tested.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._stringify_args):
- (Executive):
- (Executive.popen):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_popen_args):
-
-2012-12-17 Mark Pilgrim <pilgrim@chromium.org>
-
- Use Platform::current() instead of webKitPlatformSupport() in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=105054
-
- Reviewed by Jochen Eisinger.
-
- Part of a refactoring series; see tracking bug 82948.
-
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/Task.cpp:
- (postTask):
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp:
-
-2012-12-17 Emil A Eklund <eae@chromium.org>
-
- Clamp values in LayoutUnit::operator/ when SATURATED_LAYOUT_ARITHMETIC is enabled
- https://bugs.webkit.org/show_bug.cgi?id=104955
-
- Reviewed by Julien Chaffraix.
-
- Add tests for LayoutUnit.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/ForwardingHeaders: Added.
- * TestWebKitAPI/ForwardingHeaders/WebCore: Added.
- * TestWebKitAPI/ForwardingHeaders/WebCore/LayoutUnit.h: Added.
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
-
-2012-12-17 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] removed unused preferences from testRunner.overridePreference
- https://bugs.webkit.org/show_bug.cgi?id=105169
-
- Reviewed by Tony Chang.
-
- Most notably this removes the code related to font family maps which is
- now handled via window.internals.settings
-
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::overridePreference):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::applyTo):
-
-2012-12-17 James Robinson <jamesr@chromium.org>
-
- [chromium] Move creation of WebLayerTreeView to WebWidgetClient
- https://bugs.webkit.org/show_bug.cgi?id=105071
-
- Reviewed by Adrienne Walker.
-
- Update WebViewHost for the new WebWidgetClient interface.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::initializeLayerTreeView):
- (WebViewHost::layerTreeView):
- (WebViewHost::~WebViewHost):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-12-17 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- [EFL][WK2] window_create doesn't receive the url
- https://bugs.webkit.org/show_bug.cgi?id=105184
-
- Reviewed by Alexis Menard.
-
- * MiniBrowser/efl/main.c: Use the url supplied to window_create
- (on_window_create):
-
-2012-12-17 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: MemoryInstrumentation doesn't detect reportMemoryUsage method defined in a base class.
- https://bugs.webkit.org/show_bug.cgi?id=105026
-
- Reviewed by Yury Semikhatsky.
-
- Old SFINAE test was replaced with new one based on this article:
- http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
-
- New test which covers this problem was added.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-12-17 Anthony Scian <ascian@rim.com>
-
- [Blackberry] Static code analysis warning fixes
- https://bugs.webkit.org/show_bug.cgi?id=105129
-
- Reviewed by Rob Buis.
-
- Added null checks for fopen calls, no recovery attempted; access fault prevention only.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::createFile):
- (BlackBerry::WebKit::DumpRenderTree::runTest):
-
-2012-12-17 John Mellor <johnme@chromium.org>
-
- Add Anton Vayvod and Tim Volodine as contributors in committers.py
- https://bugs.webkit.org/show_bug.cgi?id=105025
-
- Unreviewed. Adds two contributors to committers.py.
- They are initially contributing to the Text Autosizing feature (master bug: 84186).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- Unreviewed, add myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-17 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] remove some unnecessary CONFIG additions
-
- Reviewed by Simon Hausmann.
-
- qt is already added by spec_pre.prf, warn_on and depend_includepath by
- default_pre.prf.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-12-17 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed, rolling out r137892.
- http://trac.webkit.org/changeset/137892
- https://bugs.webkit.org/show_bug.cgi?id=105026
-
- it broke compilation on windows
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-12-14 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: MemoryInstrumentation doesn't detect reportMemoryUsage method defined in a base class.
- https://bugs.webkit.org/show_bug.cgi?id=105026
-
- Reviewed by Yury Semikhatsky.
-
- Old SFINAE test was replaced with new one based on this article:
- http://stackoverflow.com/questions/1966362/sfinae-to-check-for-inherited-member-functions
-
- New test which covers this problem was added.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-12-17 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] rely on automatic output directory setup
-
- Reviewed by Simon Hausmann.
-
- Now being a proper qt module (by virtue of having load(qt_build_config)
- in .qmake.conf), webkit gets the path setup goodies for free.
-
- This also fixes Makefile.api.Debug/Release trying to generate qrc_WebKit.cpp
- at the same time, instead of the debug and release version ending up in different
- directories as they should.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-12-17 Charles Wei <charles.wei@torchmobile.com.cn>
-
- [BlackBerry] Need to re-enable video track
- https://bugs.webkit.org/show_bug.cgi?id=105155
-
- Reviewed by George Staikos.
-
- Just enable Video Track for BlackBerry.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-17 János Badics <jbadics@inf.u-szeged.hu>
-
- Unreviewed. Added myself to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-17 Jonathan Liu <net147@gmail.com>
-
- Fix linking of libraries with -Wl,-whole-archive
- https://bugs.webkit.org/show_bug.cgi?id=104436
-
- Reviewed by Simon Hausmann.
-
- If there is more than one library in LIBS linked with
- -Wl,-whole-archive -l... -Wl,-no-whole-archive, qmake tries to
- merge the duplicate flags in LIBS which causes linking to fail.
-
- Add no_smart_library_merge to CONFIG to prevent the duplicate
- flags from being removed when using -Wl,-whole-archive.
-
- * qmake/mkspecs/features/functions.prf:
-
-2012-12-16 Arvid Nilsson <anilsson@rim.com>
-
- [BlackBerry] Adapt to new BlackBerry::Platform::TouchPoint API
- https://bugs.webkit.org/show_bug.cgi?id=105143
- RIM PR 171941
-
- Reviewed by Rob Buis.
- Internally reviewed by George Staikos.
-
- Adapt to new method names and encapsulation of TouchPoint data members.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (addTouchPointCallback):
- (updateTouchPointCallback):
- (touchEndCallback):
- (releaseTouchPointCallback):
- (sendTouchEvent):
-
-2012-12-16 Maciej Stachowiak <mjs@apple.com>
-
- Add a script to compute the mean and 95% confidence interval (using two-sided t-test) of a sample set
- https://bugs.webkit.org/show_bug.cgi?id=105148
-
- Reviewed by Filip Pizlo.
-
- Usage examples:
-
- $ sampstat --help
- Usage: sampstat [options] [FILES]
- Compute the mean and 95% confidence interval of a sample set.
- Standard input or files must contain two or more decimal numbers, one per line.
-
- Options:
- -h, --help show this help message and exit
- -u UNIT, --unit=UNIT assume values are in units of UNIT
- -v, --verbose print all values (with units)
-
- $ sampstat -u MB memresults.txt
- 2356.90 MB +/- 101.34 MB (4.3%)
-
- $ sampstat -v -u MB memresults.txt
- 2318.21 MB
- 2399.56 MB
- 2352.93 MB
- ----------------
- Mean: 2356.90 MB +/- 101.34 MB (4.3%)
-
-
- * Scripts/sampstat: Added.
- (sum): Helper function to compute the sum of a list.
- (arithmeticMean): Compute the meam of a list.
- (standardDeviation): Compute the sample standard deviation (unbiased estimator).
- (standardError): Compute the sample standard error.
- (tDist): Compute t(.025, n-1), the t-value for atwo-sided 95% confidence interval.
- (twoSidedConfidenceInterval): Compute the two-sided confidence interval range about the mean.
-
-2012-12-15 Nima Ghanavatian <nghanavatian@rim.com>
-
- [BlackBerry] Pass key modifiers with touch and mouse events
- https://bugs.webkit.org/show_bug.cgi?id=105108
-
- Reviewed by Rob Buis.
-
- Update DRT to new api.
-
- Internally reviewed by Gen Mak.
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (mouseDownCallback):
- (mouseUpCallback):
- (mouseMoveToCallback):
-
-2012-12-15 Zan Dobersek <zandobersek@gmail.com>
-
- Stop the XvfbDriver before proceeding with its starting setup
- https://bugs.webkit.org/show_bug.cgi?id=105006
-
- Reviewed by Philippe Normand.
-
- Just as with the base Driver implementation, stop the XvfbDriver
- before proceeding with setting up lock files and a new Xvfb instance.
- This forces any driver or Xvfb instances that are currently under
- the driver's control to be closed/killed and cleaned up after.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
-
-2012-12-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: make port_name a required parameter to the non-test ports
- https://bugs.webkit.org/show_bug.cgi?id=105057
-
- Reviewed by Eric Seidel.
-
- This is just minor code cleanup along the path to making Port
- constructors simpler and pushing more logic into the port factory.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.make_port):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (TestWebKitPort.__init__):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort):
- (TestPort.determine_full_port_name):
- (TestPort.__init__):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.make_driver):
- (XvfbDriverTest.test_stop):
-
-2012-12-14 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic doesn't know about reftests
- https://bugs.webkit.org/show_bug.cgi?id=101976
-
- Reviewed by Eric Seidel.
-
- Attempt to make garden-o-matic properly aware of reftests again.
-
- This is re-landing r137407 with a change to
- rebaselineWithStatusUpdates() to actually pass the filtered
- failureInofLost to checkout.rebaseline().
-
- Unfortunately, the testing coverage for this whole module is almost
- non-existent, and it's not obvious that there's a good way to
- stub out checkout.rebaseline() to test that the right thing
- happens. I verified the change manually.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
-
-2012-12-14 Ryosuke Niwa <rniwa@webkit.org>
-
- "Running 1 DumpRenderTree over X shards" is not a helpful output
- https://bugs.webkit.org/show_bug.cgi?id=104858
-
- Reviewed by Dirk Pranke.
-
- The word "shard" is not typically used in test frameworks. This word is confusing for many WebKit
- contributors who typically don't have much experience on distributed computations and databases.
- So only print this message out in the debug mode.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_workers_and_shards):
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Add --profiler=PROFILER option to run-perf-tests to allow specifying which profiler to use on platforms with many
- https://bugs.webkit.org/show_bug.cgi?id=104891
-
- Reviewed by Ryosuke Niwa.
-
- I also implemented a very simple "Sample" Profiler using
- Mac OS X's /usr/bin/sample command line tool.
-
- The real reason for this abstraction is to make it easy
- to support both perf and pprof on linux which seem to
- be about equally popular among those I ask in the Chrome team.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (ProfilerFactory):
- (ProfilerFactory.available_profilers_by_name):
- (ProfilerFactory.default_profiler_name):
- (Sample):
- (Sample.__init__):
- (Sample.attach_to_pid):
- (Sample.profile_after_exit):
- (IProfiler.attach_to_pid):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Unreviewed, fixing typo in python unittest.
-
- I changed the default profiler on linux from pprof to perf in
- bug 104971. I failed to update the unittest results at that time.
-
- * Scripts/webkitpy/common/system/profiler_unittest.py:
- (ProfilerFactoryTest.test_basic):
-
-2012-12-13 Ian Vollick <vollick@chromium.org>
-
- [chromium] Add a virtual test suite for enabling opt-in to composited scrolling
- https://bugs.webkit.org/show_bug.cgi?id=104911
-
- Reviewed by Dirk Pranke.
-
- Adds two virtual tests suites to run the tests in
- compositing/overflow/ and scrollbars/ with the flag
- --enable-accelerated-overflow-scroll, which I've also plumbed through
- in the usual way.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h:
- (WebPreferences):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp:
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAcceleratedCompositingForOverflowScrollEnabled):
- (TestShell):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Use 'perf' to profile on linux instead of google-pprof by default
- https://bugs.webkit.org/show_bug.cgi?id=104971
-
- Reviewed by Dirk Pranke.
-
- This makes Chromium Linux match Chromium Android and use the perf
- tool by default. Once https://bugs.webkit.org/show_bug.cgi?id=104891
- lands it will be possible to use pprof again on Linux.
-
- This is slightly more advanced than the AndroidPerf profiler as
- instead of using a timeout on "perf record" I instead watch
- for the termination of the target process and then control-C
- the 'perf record' process. This required me to add two new
- methods to Executive, one to have a limited-time wait() and
- the second to be able to send a control-C. I chose to add
- these to Executive to make them easier to mock/fix-for-win32
- at a later time if needed.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.wait_limited):
- (Executive.interrupt):
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (Perf):
- (Perf.__init__):
- (Perf._perf_path):
- (Perf.attach_to_pid):
- (Perf._first_ten_lines_of_profile):
- (Perf.profile_after_exit):
-
-2012-12-13 Julie Parent <jparent@chromium.org>
-
- Dashboard cleanup: remove usage of global g_builders.
- https://bugs.webkit.org/show_bug.cgi?id=104941
-
- Reviewed by Dirk Pranke.
-
- The dashboards use a lot of global state, which makes hacking on them
- complicated. This change removes the use of one such global: g_builders.
- In most cases, we can just use currentBuilderGroup().builders instead,
- which is now currentBuilders().
- Surprisingly, the most changes were required to the unit tests, since
- they were even bigger offenders of bad hygiene, relying on global state
- set by other tests, randomly clobbering global variables in ways the
- real code doesn't, etc.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup.prototype.setup):
- * TestResultServer/static-dashboards/dashboard_base.js:
- (.switch.return):
- (htmlForTestTypeSwitcher):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (generatePage):
- (getAllTestsTrie):
- (processTestRunsForAllBuilders):
- (showPopupForBuild):
- (generatePageForExpectationsUpdate):
- (loadExpectationsLayoutTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- (stubResultsByBuilder):
- (test):
- * TestResultServer/static-dashboards/loader.js:
- (.):
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Callers should not have to stringify args before calling Executive run_command/popen
- https://bugs.webkit.org/show_bug.cgi?id=104975
-
- Reviewed by Dirk Pranke.
-
- One could argue that we should match the python call syntax here,
- but I think it's a more friendly API if we automagically handle
- stringification of args in run_command, etc.
- This removes map(unicode, args) from several callsites.
-
- When I first tried to land this change, I didn't realize that
- Executive._command_for_printing depended on this behavior
- having been applied to args in run_command. The fix is to
- call _stringify_args in both run_command and popen.
- This is slightly redundant, but given how short args have to be
- (due to shell limits), I don't think the double-encode check
- matters in practice.
-
- This is slightly complicated by the fact that apache_http_server.py
- is the one caller in our codebase which uses shell=True.
- shell=True is a well-documented trail-of-tears:
- http://stackoverflow.com/questions/3172470/actual-meaning-of-shell-true-in-subprocess
- but to support this legacy (windows-only) code (which I can't easily test)
- I've added an if-hack to avoid stringifying the the popen(shell=True) case.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.run_command):
- (Executive._stringify_args):
- (Executive.popen):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ExecutiveTest.test_auto_stringify_args):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (attach_to_pid):
-
-2012-12-13 Adrienne Walker <enne@chromium.org>
-
- Unreviewed, rolling out r137645, r137646, and r137667.
- http://trac.webkit.org/changeset/137645
- http://trac.webkit.org/changeset/137646
- http://trac.webkit.org/changeset/137667
- https://bugs.webkit.org/show_bug.cgi?id=104911
-
- Breaks some overflow layout tests
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- Unreviewed, rolling out r137661.
- http://trac.webkit.org/changeset/137661
- https://bugs.webkit.org/show_bug.cgi?id=104891
-
- broke unit tests, run-webkit-tests
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive._run_command_with_teed_output):
- (Executive.run_command):
- (Executive.popen):
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (GooglePProf.profile_after_exit):
- (IProfiler.attach_to_pid):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move rundetails, summarize_results into test_run_results
- https://bugs.webkit.org/show_bug.cgi?id=104963
-
- Reviewed by Eric Seidel.
-
- More cleanup; this the plain-old-data functions out of manager.py
- and into test_run_results next to the other aggregate data structures.
-
- Also this cleans up a bunch of test code and reduces duplication.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_look_for_new_crash_logs):
- * Scripts/webkitpy/layout_tests/models/test_run_results.py:
- (TestRunResults.__init__):
- (TestRunResults.add):
- (RunDetails):
- (RunDetails.__init__):
- (_interpret_test_failures):
- (summarize_results):
- * Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py: Added.
- (get_result):
- (run_results):
- (summarized_results):
- (InterpretTestFailuresTest):
- (InterpretTestFailuresTest.setUp):
- (InterpretTestFailuresTest.test_interpret_test_failures):
- (SummarizedResultsTest):
- (SummarizedResultsTest.setUp):
- (SummarizedResultsTest.test_no_svn_revision):
- (SummarizedResultsTest.test_svn_revision):
- (SummarizedResultsTest.test_summarized_results_wontfix):
- * Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:
- (BuildBotPrinterTests.get_printer):
- (BuildBotPrinterTests.test_print_unexpected_results):
- (BuildBotPrinterTests.test_print_results):
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Make --profile output easier to understand for pprof on linux
- https://bugs.webkit.org/show_bug.cgi?id=104957
-
- Reviewed by Dirk Pranke.
-
- pprof is kinda mysterious, so we print some information
- on how to use it, and how to learn how to read the sample dump.
- This is similar to what we've done for perf output for Chromium Android.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (GooglePProf._pprof_path):
- (GooglePProf.profile_after_exit):
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- Revert r137407 - it didn't actually work right.
- https://bugs.webkit.org/show_bug.cgi?id=101976
-
- Unreviewed, build fix.
-
- Turns out that rebaselining was completely broken with this change :(
- We're passing in a list of test names rather than the list of
- failureInfo objects.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
-
-2012-12-13 Antoine Labour <piman@chromium.org>
-
- [chromium] Small fixes for WebPluginContainer::setWebLayer
- https://bugs.webkit.org/show_bug.cgi?id=104953
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp: Clean up
- dangling pointers, force correct invalidation of the layer.
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- Add --profiler=PROFILER option to run-perf-tests to allow specifying which profiler to use on platforms with many
- https://bugs.webkit.org/show_bug.cgi?id=104891
-
- Reviewed by Dirk Pranke.
-
- I also implemented a very simple "Sample" Profiler using
- Mac OS X's /usr/bin/sample command line tool.
-
- I also moved the map(unicode, args) call into Executive.popen
- so that all callers don't have to do it themselves.
-
- The real reason for this abstraction is to make it easy
- to support both perf and pprof on linux which seem to
- be about equally popular among those I ask in the Chrome team.
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.popen):
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (ProfilerFactory):
- (ProfilerFactory.available_profilers_by_name):
- (ProfilerFactory.default_profiler_name):
- (Sample):
- (Sample.__init__):
- (Sample.attach_to_pid):
- (Sample.profile_after_exit):
- (IProfiler.attach_to_pid):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- support -wk2 port names properly in webkitpy.layout_tests.port
- https://bugs.webkit.org/show_bug.cgi?id=104761
-
- Reviewed by Eric Seidel.
-
- Our support for WK2 port names was inconsistent at best; this patch
- modifies the code so that <port_name>-wk2 is supported for all ports that
- have WK2 implementations and is equivalent to specifying <port_name>
- and -2/--webkit-test-runner. In addition, this modifies
- builders.all_port_names() to include the wk2 variants.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort.determine_full_port_name):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.determine_full_port_name):
- (Port.__init__):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.make_port):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_baseline_search_path):
- * Scripts/webkitpy/layout_tests/port/win.py:
- (WinPort.default_baseline_search_path):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineExpectations.test_rebaseline_expectations):
-
-2012-12-13 Ian Vollick <vollick@chromium.org>
-
- [chromium] Add a virtual test suite for enabling opt-in to composited scrolling
- https://bugs.webkit.org/show_bug.cgi?id=104911
-
- Reviewed by Adrienne Walker.
-
- Adds two virtual tests suites to run the tests in
- compositing/overflow/ and scrollbars/ with the flag
- --enable-accelerated-compositing-for-overflow-scroll
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- delete extraneous self.fail in mastercfg_unittest.py
- https://bugs.webkit.org/show_bug.cgi?id=104940
-
- Reviewed by Eric Seidel.
-
- This was accidentally introduced in r137404.
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- Fix a mis-named variable after r137621.
- https://bugs.webkit.org/show_bug.cgi?id=104871
-
- Unreviewed, build fix.
-
- * Scripts/webkitpy/layout_tests/views/buildbot_results.py:
- (BuildBotPrinter.print_results):
- * Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:
-
-2012-12-13 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: rename ResultSummary
- https://bugs.webkit.org/show_bug.cgi?id=104871
-
- Reviewed by Eric Seidel.
-
- This patch changes the names of ResultSummary and related modules,
- classes, and variables as a part of the larger clean up in bug 103824.
-
- This change is basically a bunch of search and replaces:
- - result_summary.py -> test_run_results.py
- - class ResultSummary -> class TestRunResults
- - "result_summary" or "rs" as a generic variable name -> "run_results",
- when it doesn't matter (or we don't know) if this refers to the
- initial pass over the tests or the retry pass.
- - "result_summary" as a variable containing the results of the initial,
- complete test run -> "initial_results"
- - "retry_summary" as a variable containing the results of retried
- results -> "retry_results"
- - ResultSummary.results (the property) -> TestRunResults.results_by_name
- - ResultSummary.failures (the property) -> TestRunResults.failures_by_name
- - RunDetails.result_summary -> RunDetails.initial_results
- - RunDetails.retry_summary -> RunDetails.retry_results
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.__init__):
- (LayoutTestRunner.run_tests):
- (LayoutTestRunner._mark_interrupted_tests_as_skipped):
- (LayoutTestRunner._interrupt_if_at_failure_limits):
- (LayoutTestRunner._interrupt_if_at_failure_limits.interrupt_if_at_failure_limit):
- (LayoutTestRunner._update_summary_with_result):
- (LayoutTestRunner._handle_finished_test):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (FakePrinter.print_expected):
- (LayoutTestRunnerTests.test_interrupt_if_at_failure_limits):
- (LayoutTestRunnerTests.test_update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (RunDetails.__init__):
- (summarize_results):
- (Manager.run):
- (Manager._look_for_new_crash_logs):
- (Manager._tests_to_retry):
- (Manager._upload_json_files):
- (Manager._stats_trie):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_look_for_new_crash_logs):
- (SummarizeResultsTest):
- (SummarizeResultsTest.get_run_results):
- (SummarizeResultsTest.summarized_results):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator.__init__):
- (JSONLayoutResultsGenerator._get_modifier_char):
- (JSONLayoutResultsGenerator._insert_failure_summaries):
- (JSONLayoutResultsGenerator._get_failure_summary_entry):
- * Scripts/webkitpy/layout_tests/models/test_run_results.py: Renamed from Tools/Scripts/webkitpy/layout_tests/models/result_summary.py.
- (TestRunResults):
- (TestRunResults.__init__):
- (TestRunResults.add):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_test_results):
- (MainTest.test_basic):
- * Scripts/webkitpy/layout_tests/views/buildbot_results.py:
- (BuildBotPrinter.print_results):
- (BuildBotPrinter.print_run_results):
- (BuildBotPrinter._print_run_results_entry):
- * Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:
- (BuildBotPrinterTests.get_run_results):
- (BuildBotPrinterTests.test_print_unexpected_results.get_unexpected_results):
- (BuildBotPrinterTests):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_expected):
- (Printer._print_expected_results_of_type):
- (Printer.print_results):
- (Printer._print_timing_statistics):
- (Printer._print_worker_statistics):
- (Printer._print_aggregate_test_statistics):
- (Printer._print_individual_test_times):
- (Printer._print_directory_timings):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
-
-2012-12-13 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] The WebKit2 bots are building and executing WebKit1 tests
- https://bugs.webkit.org/show_bug.cgi?id=104690
-
- Reviewed by Csaba Osztrogonác.
-
- Pass --no-webkit1 option to the EFL WK2 bots when building. This
- will disable WK1 API and thus, the WK1 API tests.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (CompileWebKit2Only):
- (BuildAndTestFactory):
- (BuildAndTestFactory.__init__):
- (BuildAndTestWebKit2OnlyFactory):
- Now bots using BuildAndTestWebKit2OnlyFactory (for instance only EFL) will
- get --no-webkit1 as a parameter on the build-webkit script.
- * Scripts/build-webkit:
- Added support for -no-webkit1 for the Qt and EFL port.
-
-2012-12-13 Eric Seidel <eric@webkit.org>
-
- build-webkit --chromium-android forces Make even when update-webkit used --ninja
- https://bugs.webkit.org/show_bug.cgi?id=104839
-
- Reviewed by Tony Chang.
-
- This was recommended by Peter as part of:
- https://bugs.webkit.org/show_bug.cgi?id=104434#c4
- Fixing this makes build-webkit --chromium-android work for the common (ninja) case.
-
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2012-12-13 Julie Parent <jparent@chromium.org>
-
- Loader_unittests should reset state between runs.
- https://bugs.webkit.org/show_bug.cgi?id=104862
-
- Reviewed by Dirk Pranke.
-
- The loader_unittests were not resetting state between runs, leaving
- a lot of data behind in global objects that the dashboard and tests
- rely on. A handful were resetting just a few objects. Use the common
- resetGlobals() method instead.
-
- * TestResultServer/static-dashboards/loader_unittests.js:
-
-2012-12-13 Andras Becsi <andras.becsi@digia.com>
-
- [Qt][WK2] Fix painting on Mac with retina display
- https://bugs.webkit.org/show_bug.cgi?id=104574
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove setting the devicePixelRatio experimental property
- since the value is now automatically picked up from Qt.
-
- * MiniBrowser/qt/qml/BrowserWindow.qml:
-
-2012-12-13 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- [EFL][GTK] Don't call deprecated g_type_init when glib => 2.35
- https://bugs.webkit.org/show_bug.cgi?id=103209
-
- Reviewed by Kenneth Rohde Christiansen.
-
- g_type_init() is deprecated from 2.35.0 onwards. Don't call it
- in that case to avoid warnings and/or build failure.
-
- * DumpRenderTree/gtk/ImageDiff.cpp:
- (main):
-
-2012-12-13 Claudio Saavedra <csaavedra@igalia.com>
-
- [Tools] Add exception for gtk_style_context_get()
- https://bugs.webkit.org/show_bug.cgi?id=104896
-
- Reviewed by Martin Robinson.
-
- Add new exception for gtk_style_context_get().
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_for_null): Add exception for gtk_style_context_get().
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (WebKitStyleTest.test_null_false_zero): Add a unit
- test for the new exception.
-
-2012-12-13 Joaquim Rocha <jrocha@igalia.com>
-
- REGRESSION (r137432): The /webkit2/WebKitCookieManager/accept-policy unit test is failing
- https://bugs.webkit.org/show_bug.cgi?id=104790
-
- Reviewed by Carlos Garcia Campos.
-
- Unskip the GTK accept policy test.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-13 Xingnan Wang <xingnan.wang@intel.com>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-12 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Fix typo in NRWT.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.is_reference_html_file):
-
-2012-12-12 Roger Fong <roger_fong@apple.com>
-
- Fix detection of ref test files in old and new run webkit tests.
- https://bugs.webkit.org/show_bug.cgi?id=104850.
-
- Reviewed by Timothy Horton.
-
- * Scripts/old-run-webkit-tests:
- (isUsedInReftest):
- Add notref and ref prefix and suffix cases to isUsedinReftest.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port):
- (Port.is_reference_html_file):
- Typo in NRWT.
-
-2012-12-12 Dirk Pranke <dpranke@chromium.org>
-
- rework ChromiumAndroidDriver.start() et. al to avoid funky layering
- https://bugs.webkit.org/show_bug.cgi?id=104856
-
- Reviewed by Eric Seidel.
-
- r137523 / bug 10357 introduced some back-and-forth hopping during
- driver.start() in the chromium android port. This patch cleans it
- up a bit.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._start_once):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.start):
- (Driver._start):
-
-2012-12-12 Eric Seidel <eric@webkit.org>
-
- Add support for run-perf-tests --chromium-android --profile
- https://bugs.webkit.org/show_bug.cgi?id=103587
-
- Reviewed by Dirk Pranke.
-
- This makes it possible to profile PerformanceTests on an Android device
- using run-perf-tests --chromium-android --profile.
- CPU profiling on Android is sadly non-trivial, but this goes a long
- ways towards making it more accessible to non-Android developers.
-
- Although this script requires your device to be flashed with a
- userdebug build (an annoyingly non-trivial endeavor for external contributors)
- it endeavors to detect and explain the common errors encountered
- while trying to setup a device for perf-based profiling.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (GooglePProf.profile_after_exit): Discovered that pprof will just hang if passed a missing file.
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (AndroidPerf):
- (AndroidPerf.__init__):
- (AndroidPerf.check_configuration):
- (AndroidPerf.print_setup_instructions):
- (_file_exists_on_device):
- (_run_adb_command):
- (attach_to_pid):
- (_perf_version_string):
- (_find_perfhost_binary):
- (_perfhost_path):
- (_first_ten_lines_of_profile):
- (profile_after_exit):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver.__init__.methods):
- (ChromiumAndroidDriver._find_or_create_symfs):
- (ChromiumAndroidDriver._start_once):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver._run_post_start_tasks):
- (ChromiumAndroidDriver._pid_from_android_ps_output):
- (ChromiumAndroidDriver._pid_on_target):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_pid_from_android_ps_output):
- (AndroidPerfTest):
- (AndroidPerfTest.test_perf_output_regexp):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver._setup_environ_for_driver):
- (Driver):
- (Driver._start):
- (Driver._run_post_start_tasks):
- (Driver._pid_on_target):
-
-2012-12-12 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove deprecated ORWT compatibility command line flags
- https://bugs.webkit.org/show_bug.cgi?id=104301
-
- Reviewed by Eric Seidel.
-
- The command line flags for --noshow-results, --[no-]launch-safari,
- and --use-remote-links-to-tests were for compatibility with
- old-run-webkit-tests, but the compatibility is not needed any more
- since NRWT is basically default and the scripts that passed the
- old flags have been updated.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
-
-2012-12-12 John Griggs <jgriggs@rim.com>
-
- 2012-12-12 John Griggs <jgriggs@rim.com>
-
- [BlackBerry] Update Media Controls
- https://bugs.webkit.org/show_bug.cgi?id=104443
- https://przilla.ott.qnx.com/bugzilla/show_bug.cgi?id=204748
-
- Update Media Controls for BlackBerry platform to allow audio, embedded video and fullscreen video controls to be positioned and styled differently.
-
- Reviewed by Rob Buis.
-
- BlackBerry-specific update to Media Controls - No new tests required.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-12 Justin Novosad <junov@google.com>
-
- Adding myself to SkiaGraphics watchlist
-
- Unreviewed
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-12-12 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Add authentication support to DRT and fix exposed issues in the libsoup backend
- https://bugs.webkit.org/show_bug.cgi?id=104285
-
- Reviewed by Gustavo Noronha Silva.
-
- Add support to DumpRenderTree for running authentication tests. Since the DRT
- expects an authentication callback, we add one to DRTSupport to avoid #ifdefs
- in platform-independent code for GTK+.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues): Reset the authentication password and username.
- (authenticationCallback): Added.
- (createWebView): Attach the authentiation callback during startup.
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (soupURIToKURL): soup_uri_to_string does not preserve passwords embedded
- in the URL so we add a somewhat messy method of re-adding them when they exist.
- It would be nice to use soupURIToKURL here, but it seems we cannot use KURL without
- pulling in lots of WebCore code so we use string search and replace.
- (TestRunner::queueLoad): Use the new helper.
-
-2012-12-12 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should prefer efl/ over efl-wk1/ and efl-wk2/ when rebaselining
- https://bugs.webkit.org/show_bug.cgi?id=102389
-
- Reviewed by Tony Chang.
-
- The code wasn't aware of both the efl-wk1 and efl-wk2 variants,
- because all_port_names() by itself doesn't tell you about the
- variants. Work around this for now, and filed bug 104761 to
- address the underlying problem.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_efl):
-
-2012-12-12 Krzysztof Czech <k.czech@samsung.com>
-
- [EFL] Possibility to turn off accessibility feature for WebKit-EFL.
- https://bugs.webkit.org/show_bug.cgi?id=103036
-
- Reviewed by Laszlo Gombos.
-
- Guard dependencies for accessibility (ATK), so that they can be turned off.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/PlatformEfl.cmake:
-
-2012-12-12 Simon Fraser <simon.fraser@apple.com>
-
- Add some entries in the watchlist, and register me for them.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-12-12 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: Native Memory Instrumentation: remove fake root MemoryObjectInfo.
- https://bugs.webkit.org/show_bug.cgi?id=104796
-
- Reviewed by Yury Semikhatsky.
-
- It was not a good idea to introduce a fake root MemoryObjectInfo.
- It makes a problem when we visit an object without its own MemoryObjectType.
-
- Example: RenderBox has a global pointer to a hash map.
- HashMap doesn't have its own object type because it is a generic container.
- It will inherit object type from the fake root memory object info.
- The same could happen for another container in another class with other MemoryObjectType.
-
- This fact forces me to create custom process method for root objects
- because they need to have their own MemoryObjectInfo with customisable memory object type.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
- Drive by fix: InstrumentedPointer* was replaced with Wrapper* because actually it is using
- for instrumented and not instrumented object classes.
-
-2012-12-12 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Remove the last of unnecessary configuration options in configure.ac
- https://bugs.webkit.org/show_bug.cgi?id=104793
-
- Reviewed by Martin Robinson.
-
- Removing the filters and indexed database features from the list of features
- being configurable through the configure script. This is not the case anymore
- as the corresponding configuration options are being removed.
-
- * Scripts/webkitdirs.pm:
- (buildAutotoolsProject):
-
-2012-12-12 Mario Sanchez Prada <mario@webkit.org>
-
- [GTK][WK2] New API to detect display/execution of insecure content
- https://bugs.webkit.org/show_bug.cgi?id=104578
-
- Reviewed by Martin Robinson.
-
- Add coding style exception for 'readability/enum_casing' in GTK.
-
- The GTK+ API use upper case, underscore separated, words in
- certain types of enums (e.g. signals, properties).
-
- * Scripts/webkitpy/style/checker.py: Added exception, both for
- WebKitGTK+ and WebKit2GTK+.
-
-2012-12-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Fix build on chromium-win
-
- Unreviewed build-fix.
-
- MSVS indeed doesn't have snprintf, adding wtf/StringExtras.h include
- to work around that.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp:
-
-2012-12-12 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build on Mac
-
- Reviewed by Csaba Osztrogonác.
-
- On Mac OS X we have sqlite as a system library available.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-12-12 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK gardening.
-
- Skipping another unit test that regressed in r137432.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-12 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix linkage against SQLite
- https://bugs.webkit.org/show_bug.cgi?id=104781
-
- Reviewed by Csaba Osztrogonác.
-
- Detect SQLite either through pkg-config, from the SQLITE3SRCDIR
- environment variable or from qtbase via a qt5.git build. Bail out early
- with an error message if neither option applies.
-
- This removes the usage of $$QT.core.sources and the dependency on Qt's
- system-sqlite configure setting. We should always favour a system
- library over a copy in Qt.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-12-12 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Change the data channel descriptor pattern to a handler pattern
- https://bugs.webkit.org/show_bug.cgi?id=104543
-
- Reviewed by Kent Tamura.
-
- Adding mocks to be able to test this refactoring.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/MockWebRTCDataChannelHandler.cpp: Added.
- (DataChannelReadyStateTask):
- (DataChannelReadyStateTask::DataChannelReadyStateTask):
- (MockWebRTCDataChannelHandler::MockWebRTCDataChannelHandler):
- (MockWebRTCDataChannelHandler::setClient):
- (MockWebRTCDataChannelHandler::bufferedAmount):
- (MockWebRTCDataChannelHandler::sendStringData):
- (MockWebRTCDataChannelHandler::sendRawData):
- (MockWebRTCDataChannelHandler::close):
- * DumpRenderTree/chromium/MockWebRTCDataChannelHandler.h: Added.
- (MockWebRTCDataChannelHandler):
- (MockWebRTCDataChannelHandler::taskList):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCPeerConnectionReadyStateTask::RTCPeerConnectionReadyStateTask):
- (RemoteDataChannelTask::RemoteDataChannelTask):
- (MockWebRTCPeerConnectionHandler::createDataChannel):
- (MockWebRTCPeerConnectionHandler::stop):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-12-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] WebTestPlugin must not depend on WTF::String
- https://bugs.webkit.org/show_bug.cgi?id=104783
-
- Reviewed by Kent Tamura.
-
- In a component build, we can't access the WTF that is part of the
- WebKit component. Accessing WTF instead will pull in a separate copy
- into the TestRunner library. Instead of WTF::String::number use
- snprintf() to print numbers.
-
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp:
-
-2012-12-12 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Do not automatically enable force_static_libs_as_shared when using debug_and_release
- https://bugs.webkit.org/show_bug.cgi?id=104562
-
- Reviewed by Tor Arne Vestbø.
-
- force_static_libs_as_shared creates issues on Mac if QtWebKit is built as a framework.
- QtWebProcess, for example, will link to the framework's release library and will rely
- on DYLD_IMAGE_SUFFIX to switch to the debug build. Since QtWebProcess will also links
- directly to the debug build of WebCore, and that QtWebKit release will link in the
- release build of WebCore, both the debug and release version will be loaded.
-
- To fix this properly we should make sure that applications always link to the release
- build of dependent libraries by bypassing resolveFinalLibraryName.
- Disable it for now as force_static_libs_as_shared is mainly for development while
- debug_and_release is mainly for production builds.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-12-12 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK gardening of the unit tests.
-
- Skip two unit tests that regressed during the hackfest.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-12-11 Ryosuke Niwa <rniwa@webkit.org>
-
- Add Koji Ishii to the list of contributors.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-11 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Make isActionSupported cross-platform.
- https://bugs.webkit.org/show_bug.cgi?id=104681
-
- Reviewed by Chris Fleizach.
-
- Replace isActionSupported, which takes a platform-specific
- argument, with three cross-platform methods.
-
- * DumpRenderTree/AccessibilityUIElement.cpp:
- (isPressActionSupportedCallback):
- (isIncrementActionSupportedCallback):
- (isDecrementActionSupportedCallback):
- (AccessibilityUIElement::getJSClass):
- * DumpRenderTree/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp:
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner::AccessibilityUIElement::AccessibilityUIElement):
- (WebTestRunner::AccessibilityUIElement::isPressActionSupportedCallback):
- (WebTestRunner):
- (WebTestRunner::AccessibilityUIElement::isIncrementActionSupportedCallback):
- (WebTestRunner::AccessibilityUIElement::isDecrementActionSupportedCallback):
- (WebTestRunner::AccessibilityUIElement::incrementCallback):
- (WebTestRunner::AccessibilityUIElement::decrementCallback):
- (WebTestRunner::AccessibilityUIElement::pressCallback):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (AccessibilityUIElement):
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- * DumpRenderTree/mac/AccessibilityUIElementMac.mm:
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- * DumpRenderTree/win/AccessibilityUIElementWin.cpp:
- (AccessibilityUIElement::isPressActionSupported):
- (AccessibilityUIElement::isIncrementActionSupported):
- (AccessibilityUIElement::isDecrementActionSupported):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR::AccessibilityUIElement::isPressActionSupported):
- (WTR::AccessibilityUIElement::isIncrementActionSupported):
- (WTR::AccessibilityUIElement::isDecrementActionSupported):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm:
- (WTR::AccessibilityUIElement::isPressActionSupported):
- (WTR):
- (WTR::AccessibilityUIElement::isIncrementActionSupported):
- (WTR::AccessibilityUIElement::isDecrementActionSupported):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove result_summary.total_tests_by_expectation
- https://bugs.webkit.org/show_bug.cgi?id=104756
-
- Reviewed by Eric Seidel.
-
- This field wasn't being used by anything.
-
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic doesn't know about reftests
- https://bugs.webkit.org/show_bug.cgi?id=101976
-
- Reviewed by Ojan Vafai.
-
- This is a first attempt at fixing this, sort of a "stop-the-bleeding"
- fix. We will now look at the list of tests we're asked to rebaseline,
- and log which ones are reftests into the status area, and rebaseline
- the rest.
-
- Longer-term, we should display feedback in the results area based on
- which tests we're looking at. If the test list contains no reftests,
- we should behave as today; if the list is all reftest, we should
- probably disable the button, and if the list is a mix, we should
- probably display an alert next to the button or something. It would
- also be nice to annotate which tests were reftests, maybe with a
- "(reftest)" next to the test name or something.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results.js:
- (.):
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui/results_unittests.js:
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- REGRESSION(r133380): new tests without expected file reported as failing tests on the bots
- https://bugs.webkit.org/show_bug.cgi?id=101469
-
- Reviewed by Ryosuke Niwa.
-
- Fix parsing of NRWT's output to identify missing results separately
- from other regressions.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests._parseNewRunWebKitTestsOutput):
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (MasterCfgTest.test_nrwt_leaks_parsing):
- (test_nrwt_missing_results):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- buildbot: change run-webkit-tests --no-launch-safari to --no-show-results
- https://bugs.webkit.org/show_bug.cgi?id=104299
-
- Reviewed by Ryosuke Niwa.
-
- Since --no-show-results is the more generically-named flag that NRWT uses.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- remove --use-remote-links-to-tests from buildbot configs (except apple win)
- https://bugs.webkit.org/show_bug.cgi?id=104291
-
- Reviewed by Csaba Osztrogonác.
-
- This flag is ignored by NRWT and was just implemented for compatibility.
- ORWT still uses it, though.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (RunWebKitTests):
- (RunWebKitTests.start):
-
-2012-12-11 Anders Carlsson <andersca@apple.com>
-
- ASSERT running platform/mac/plugins/convert-point.html on the WK2 bots
- https://bugs.webkit.org/show_bug.cgi?id=104735
-
- Reviewed by Jon Honeycutt.
-
- Do the testing from within NPP_New instead of NPN_SetWindow. Plug-ins aren't supposed to do any real work inside NPP_SetWindow,
- and doing so will more easily trigger the assertion failure. Ideally we should get rid of the initial sync painting pass, but this
- gets the test passing again!
-
- * DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp:
- (ConvertPoint::NPP_New):
-
-2012-12-11 Julie Parent <jparent@chromium.org>
-
- Dashboard unit tests should not make xhrs.
- https://bugs.webkit.org/show_bug.cgi?id=104598
-
- Reviewed by Dirk Pranke.
-
- The unit test were requesting 25 files that they did not use.
- Stub out loader.request to avoid making the xhrs.
- Result: order of magnitude speed improvement in test run time (from ~1600ms to 160ms on my machine).
-
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
-
-2012-12-11 Filip Pizlo <fpizlo@apple.com>
-
- Profiler should show bytecode dumps as they would have been visible to the JITs, including the profiling data that the JITs would see
- https://bugs.webkit.org/show_bug.cgi?id=104647
-
- Reviewed by Oliver Hunt.
-
- Added a "profiling" (or "p") command to show the profiling data that the JITs saw
- for each JIT compilation of a code block.
-
- Also added instruction counts in the "full" display and made the "full" display the
- default thing you see.
-
- * Scripts/display-profiler-output:
-
-2012-12-11 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r137371.
- http://trac.webkit.org/changeset/137371
- https://bugs.webkit.org/show_bug.cgi?id=104434
-
- Various scripts are not ready for out/ as the build directory,
- this can't work as written.
-
- * Scripts/update-webkit:
- * Scripts/webkitdirs.pm:
- (buildChromium):
-
-2012-12-11 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK build functionality fix.
-
- Turns out the CSP feature was not enabled, that's why all the tests were failing.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-11 Eric Seidel <eric@webkit.org>
-
- Make Ninja the default build system for build-webkit --chromium
- https://bugs.webkit.org/show_bug.cgi?id=104434
-
- Reviewed by Daniel Bates.
-
- As far as I can tell, most Chromium developers are now using Ninja
- as their default build system instead of the native Xcode/Visual Studio/Make.
- This change makes Ninja the default for developers as well as all Chromium webkit bots.
-
- Developers can pass --no-ninja to get the platform-native buildsystem instead of Ninja.
- It's possible we may wish to make this a per-platform default, and have
- Ninja only be the default for Mac/Linux.
-
- There was a thread on webkit-dev discussing this change:
- http://lists.webkit.org/pipermail/webkit-dev/2012-December/023113.html
-
- * Scripts/update-webkit:
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: record the order and run times of all of the tests in a single file
- https://bugs.webkit.org/show_bug.cgi?id=104184
-
- Reviewed by Ryosuke Niwa.
-
- Replace the N tests_run*.txt files that we output into
- layout-test-results with a single packed JSON trie that contains
- the test ordering and run statistics. This can eventually be uploaded
- to the TestResultsServer to replace the times.json file we currently
- upload as well, and will let us replay the results of a previous
- run fairly deterministically.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (Worker.__init__):
- (Worker.start):
- (Worker._run_test):
- (Worker.stop):
- (Worker._clean_up_after_test):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._upload_json_files):
- (Manager._copy_results_html_file):
- (Manager):
- (Manager._stats_trie):
- (Manager._stats_trie._worker_number):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_retrying_and_flaky_tests):
- (EndToEndTest.test_end_to_end):
- (EndToEndTest.test_reftest_with_two_notrefs):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- check-webkit-style complaining about TestExpectations lines a patch didn't modify
- https://bugs.webkit.org/show_bug.cgi?id=104687
-
- Reviewed by Ojan Vafai.
-
- Way back in bug 60466 / r86165, we changed the style checker
- for TestExpectations to ensure that the entire file linted, not
- just the lines modified by a patch, in order to ensure that a
- new line didn't cause errors elsewhere in the file (e.g., by
- introducing duplicate lines). At the time, errors in the
- expectations files were fatal and we didn't have a separate step
- on the bots that would lint the files to ensure things were still
- okay, so this was probably the right thing to do, but it could
- cause some patches to fail the style check even though the patches
- themselves were fine.
-
- However, now errors aren't always fatal, and we have a separate build
- step to lint the files. So, we should probably not punish the
- patches and the style checker should filter out "unrelated" errors.
-
- In theory we should be comparing the output pre- and post-patch
- to filter out pre-existing errors, but I don't think the style
- checker has that ability.
-
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase.assert_lines_lint):
-
-2012-12-11 Dirk Pranke <dpranke@chromium.org>
-
- nrwt isn't rejecting unrecognized expectations
- https://bugs.webkit.org/show_bug.cgi?id=104701
-
- Reviewed by Ojan Vafai.
-
- NRWT is silently ignoring unrecognized expectations like "Text"
- and "Audio" (largely because I haven't fully removed support for
- the old syntax and keywords and restructured the code to do the
- proper checking). Temporarily change the tokenizer to reject
- unrecognized expectations until I can make those changes.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationParser._tokenize_line):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (ExpectationSyntaxTests.test_unknown_expectation):
- (TestExpectationSerializationTests.disabled_test_string_whitespace_stripping):
-
-2012-12-11 Martin Robinson <mrobinson@igalia.com>
-
- Fix a typo in my previous commit that is causing test failures.
-
- Reviewed by Gustavo Noronha Silva.
-
- There was an extra bit of statement appended after the end of a conditional. Somehow
- this compiled and caused test failures.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (continuousMouseScrollByCallback):
-
-2012-12-11 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Spurious stderr output from the event sender
- https://bugs.webkit.org/show_bug.cgi?id=104678
-
- Reviewed by Gustavo Noronha Silva.
-
- Eliminate some spurious stderr output from the EventSender by using an early return
- instead of an assertion that prints a warning to the console.
-
- * DumpRenderTree/gtk/EventSender.cpp:
- (continuousMouseScrollByCallback): We don't support continuous scroll events that
- move by page, but we should just fail silently instead of printing an error.
-
-2012-12-11 Joone Hur <joone.hur@intel.com>
-
- [GTK] Add GraphicsLayerActor
- https://bugs.webkit.org/show_bug.cgi?id=91940
-
- Reviewed by Gustavo Noronha Silva.
-
- Add GraphicsLayerActor to the list of classes that contain GObjects
- in the style checker script so that it does not complain about GObject
- coding style.
-
- * Scripts/webkitpy/style/checker.py:
-
-2012-12-11 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] remove hack which avoids unused .obj directories all over the place
-
- Reviewed by Simon Hausmann.
-
- The feature is subject to upstreaming in Qt itself in
- https://codereview.qt-project.org/#change,42011
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-12-11 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] move SQLITE3SRCDIR assignment to only use site
-
- Reviewed by Simon Hausmann.
-
- Target.pri includes WebCore.pri the almost first thing, so that is
- covered as well.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-12-11 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] delete dead include paths
-
- Reviewed by Simon Hausmann.
-
- followup to https://bugs.webkit.org/show_bug.cgi?id=93446
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
-
-2012-12-11 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Implement some missing FrameLoaderClient message in DRT
- https://bugs.webkit.org/show_bug.cgi?id=104444
-
- Reviewed by Gustavo Noronha Silva.
-
- Install a FrameLoadEvent callback that prints the necessary output for some
- missing FrameLoader events.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (frameLoadEventCallback): Added.
- (createWebView): Install the FrameLoader event callback.
-
-2012-12-11 Oswald Buddenhagen <oswald.buddenhagen@digia.com>
-
- [Qt] change setup of QMAKE_MOC
-
- Reviewed by Simon Hausmann.
-
- don't load(moc) explicitly - turns out that this breaks
- debug_and_release builds (the feature does not like being loaded before
- default_post has been loaded).
- so instead just do a minimal call to find the moc executable.
-
- as it's in fact only two files which need it, so de-centralize this call
- for the sake of saving some cpu cycles spent in qmake.
-
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-12-11 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Fix the linking of debug builds on Mac with force_static_libs_as_shared
- https://bugs.webkit.org/show_bug.cgi?id=104559
-
- Reviewed by Tor Arne Vestbø.
-
- "contains(libraries, $$TARGET): return(true)" fails for intermediate libraries since
- at this point TARGET may contain the "_debug" suffix.
-
- Fix it by moving the TARGET adjustment later in the file.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-12-11 Martin Robinson <mrobinson@igalia.com>
-
- [Coverity] [GTK] Remove some redundant null checks in DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=104570
-
- Reviewed by Daniel Bates.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (descriptionSuitableForTestResult): Remove a redundant null check.
-
-2012-12-11 Alberto Garcia <agarcia@igalia.com>
-
- Remove unused GErrors
- https://bugs.webkit.org/show_bug.cgi?id=104657
-
- Reviewed by Martin Robinson.
-
- Replace unused GErrors with null pointers.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeFonts):
- * DumpRenderTree/gtk/EditingCallbacks.cpp:
- (dumpRange):
- * WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp:
- (WTR::inititializeFontConfigSetting):
-
-2012-12-11 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Bump the jhbuild libsoup version to fix an authentication issue
- https://bugs.webkit.org/show_bug.cgi?id=104448
-
- Reviewed by Gustavo Noronha Silva.
-
- Bump the libsoup version to one from the git repository. This requires updating
- GLib as well which in turn requires adjusting the CFLAGS we pass when compiling
- the scanobj step of the gtkdoc generation.
-
- * gtk/generate-gtkdoc:
- * gtk/jhbuild.modules:
-
-2012-12-11 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed functionality fix for the GTK port.
-
- Enable the MicroData feature support for the GTK port in the FeatureList module.
- This feature listing now again affects which features are enabled and which disabled
- on the development builds of the GTK port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-11 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] MiniBrowser is not built
- https://bugs.webkit.org/show_bug.cgi?id=104629
-
- Reviewed by Gyuyoung Kim.
-
- As we are finding an elementary package in Tools/MiniBrowser/efl/CMakeList.txt since r137203,
- we need to check if the package is found in the same place not in the Tools/CMakeList.txt.
-
- * CMakeLists.txt:
- * MiniBrowser/efl/CMakeLists.txt:
-
-2012-12-11 Xabier Rodriguez Calvar <calvaris@igalia.com>
-
- [GTK][jhbuild] Switch to GStreamer 1.0 build
- https://bugs.webkit.org/show_bug.cgi?id=91727
-
- Reviewed by Philippe Normand.
-
- Switch build-webkit --gtk to GStreamer 1.0 support and build the
- necessary GStreamer git modules from JHBuild.
-
- * gtk/jhbuild.modules: Added GStreamer 1.0.3 build support.
-
-2012-12-11 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Feature enabling/disabling should be possible through build-webkit
- https://bugs.webkit.org/show_bug.cgi?id=99271
-
- Reviewed by Gustavo Noronha Silva.
-
- Refactor the code in webkitdirs.pm that builds an autotools project to generate
- autogen.sh arguments, make arguments and installation prefix from the passed-in
- parameters rather than generating all of that in build-webkit. The autogen.sh
- arguments now contain only enable/disable flags for options that are actually
- configurable in configure.ac, the flag value actually reflecting whether the feature
- is enabled or disabled in the feature list.
-
- Other features are overridable through modifying the GNUmakefile.features.am file.
- All these features are now stored in the build directory and upon change trigger
- a rerun of the autogen.sh script, pretty much like the autogen.sh arguments do.
-
- The override-feature-defines script is called by autogen.sh, before GNUmakefile.in is
- generated when calling autoreconf. Its task is to copy the GNUmakefile.features.am.in
- into GNUmakefile.features.am and modify it if there's a text file in the build directory
- that contains all the feature defines the build-webkit script has written. If the build
- is not done through build-webkit (and there's no file in build directory listing all the
- feature defines) the script does not advance further from copying.
-
- This approach is taken to overcome the rigidness of the automake system as it's impossible
- to effectively generate and use GNUmakefile.features.am or even GNUmakefile.features file
- after the autoreconf command execution in autogen.sh.
-
- * Scripts/build-jsc:
- (buildMyProject):
- * Scripts/build-webkit:
- * Scripts/webkitdirs.pm:
- (runAutogenForAutotoolsProjectIfNecessary):
- (mustReRunAutogen):
- (buildAutotoolsProject):
- (buildGtkProject):
- * Scripts/webkitperl/FeatureList.pm: Update the features that are currently enabled in
- Source/WebCore/GNUmakefile.features.am.in but aren't in the feature list.
- * Scripts/webkitpy/style/checker.py: Source/WebCore/GNUmakefile.features.am.in is recognized
- as a text file and tabulation errors are reported. Skip the file to suppress them.
- * gtk/override-feature-defines: Added.
- (copy_feature_defines_makefile):
- (adjust_feature_defines_makefile):
- (adjust_feature_defines_makefile.override_feature_define):
- (override_feature_defines):
-
-2012-12-10 Yury Semikhatsky <yurys@chromium.org>
-
- Memory instrumentation: make sure each edge is reported only once
- https://bugs.webkit.org/show_bug.cgi?id=104630
-
- Reviewed by Pavel Feldman.
-
- Test that outgoing edges are reported only once if we come to the same
- object twice: first by an address of a base class and then by a real address
- of the object.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-12-10 Dana Jansens <danakj@chromium.org>
-
- [chromium] Remove WebCompositorOutputSurface implementations from DRT
- https://bugs.webkit.org/show_bug.cgi?id=104046
-
- Reviewed by Darin Fisher.
-
- The classes are now provided through WebCompositorSupport.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
- * DumpRenderTree/chromium/WebViewHostOutputSurface.cpp: Removed.
- * DumpRenderTree/chromium/WebViewHostOutputSurface.h: Removed.
- * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.cpp: Removed.
- * DumpRenderTree/chromium/WebViewHostSoftwareOutputDevice.h: Removed.
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- change --no-launch-safari to --no-show-results in scripts
- https://bugs.webkit.org/show_bug.cgi?id=104298
-
- Reviewed by Eric Seidel.
-
- Since Safari only exists on the Apple ports, NRWT calls the
- command line flag --[no-]show-results instead. This updates
- the scripts to use the new flag (but not the buildbot config yet).
-
- * Scripts/generate-coverage-data:
- * Scripts/webkit-tools-completion.sh:
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix mapping of AUDIO onto FAIL when printing unexpected results
- https://bugs.webkit.org/show_bug.cgi?id=104597
-
- Reviewed by Ojan Vafai.
-
- This was broken in the recent printer refactoring.
-
- * Scripts/webkitpy/layout_tests/views/buildbot_results.py:
- (BuildBotPrinter.print_unexpected_results.add_result.is_expected):
- * Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py:
- (BuildBotPrinterTests.get_result):
- (BuildBotPrinterTests.test_print_unexpected_results):
- (BuildBotPrinterTests.test_print_unexpected_results.get_unexpected_results):
- (BuildBotPrinterTests):
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- old-run-webkit-tests: add --show-results properly
- https://bugs.webkit.org/show_bug.cgi?id=104608
-
- Reviewed by Eric Seidel.
-
- Rework r137219 / bug 104601 to use the correct perl idiom.
-
- * Scripts/old-run-webkit-tests:
-
-2012-12-10 Aaron Colwell <acolwell@chromium.org>
-
- Unreviewed. Adding Aaron Colwell to the contributor list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-10 Anders Carlsson <andersca@apple.com>
-
- Remove WebKit2 tests on Windows
- https://bugs.webkit.org/show_bug.cgi?id=104607
-
- Reviewed by Tim Horton.
-
- Stop building WebKit2 tests and remove associated files.
-
- * TestWebKitAPI/win/InjectedBundleControllerWin.cpp: Removed.
- * TestWebKitAPI/win/PlatformUtilitiesWin.cpp: Removed.
- * TestWebKitAPI/win/PlatformWebViewWin.cpp: Removed.
- * TestWebKitAPI/win/TestWebKitAPI.sln: Removed.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj:
- * TestWebKitAPI/win/TestWebKitAPIGenerated.vcproj: Removed.
- * TestWebKitAPI/win/TestWebKitAPIGeneratedCommon.vsprops: Removed.
- * TestWebKitAPI/win/TestWebKitAPIInjectedBundle.vcproj: Removed.
- * TestWebKitAPI/win/WindowMessageObserver.h: Removed.
- * TestWebKitAPI/win/copy-resources.cmd: Removed.
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- old-run-webkit-tests: support --no-show-results for compatibility w/ NRWT
- https://bugs.webkit.org/show_bug.cgi?id=104601
-
- Reviewed by Eric Siedel.
-
- This flag is being added so we can move all of the calling scripts
- over to using --no-show-results instead of --no-launch-safari.
-
- * Scripts/old-run-webkit-tests:
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: use the default logic for skipping platform-specific tests for chromium
- https://bugs.webkit.org/show_bug.cgi?id=104403
-
- Reviewed by Stephen White.
-
- I thought I had fixed this a while ago, but the chromium port was
- using custom logic to figure out which platform/* tests to run (or
- skip) and as a result we were getting some odd behavior (like running
- tests in chromium-linux on chromium-mac, but only when there was
- an expectation listed for the test).
-
- Ports are supposed to only run the tests found under their
- baseline_search_path() by default.
-
- Not writing a test for this; theoretically there shouldn't been a
- test checking that the behavior for Chromium was *different* than
- the other ports before.
-
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort._missing_symbol_to_skipped_tests):
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- fix regression in test-webkitpy after r137189
- https://bugs.webkit.org/show_bug.cgi?id=104589
-
- Reviewed by Eric Seidel.
-
- Need to specify full port names.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_build_check):
-
-2012-12-10 Laszlo Gombos <l.gombos@samsung.com>
-
- [EFL] Change the minimum required EFL version to 1.6
- https://bugs.webkit.org/show_bug.cgi?id=104431
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Change the minimum required EFL version to 1.6 from 1.7.
- The elementary EFL package is only required to build MiniBrowser,
- so I moved the required only to the Minibrowser CMake file.
-
- * MiniBrowser/efl/CMakeLists.txt: In addition removed
- ENABLE_GLIB_SUPPORT as it is obsolete and it was always set to be on.
-
-2012-12-10 Dean Jackson <dino@apple.com>
-
- Unreviewed. Adding Antoine to the contributor list so his name autocompletes in bugzilla.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-10 Zan Dobersek <zandobersek@gmail.com>
-
- REGRESSION (r118735): svg/dom/complex-svgView-specification.html, svg/dom/SVGViewSpec.html, svg/dom/viewspec-parser.html failing on GTK Linux 64-bit Release
- https://bugs.webkit.org/show_bug.cgi?id=87734
-
- Reviewed by Martin Robinson.
-
- When willSendRequest should return null in testing, cancel the SoupMessage
- instead of setting the request's URI to about:blank.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (willSendRequestCallback):
-
-2012-12-10 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Move the test implementation of WebKit::WebPlugin to the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=104537
-
- Reviewed by Tony Chang.
-
- In order to hide implementation details from the public TestRunner API,
- I moved the plugin to WebTestPluginImpl and added a static create
- method to WebTestPlugin. Also, I renamed the plugin from TestWebPlugin
- to WebTestPlugin to be more in line with other classes in the
- TestRunner API.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestPlugin.h: Added.
- (WebTestRunner):
- (WebTestPlugin):
- * DumpRenderTree/chromium/TestRunner/src/WebTestPlugin.cpp: Renamed from Tools/DumpRenderTree/chromium/TestWebPlugin.cpp.
- (WebTestRunner::WebTestPlugin::create):
- (WebTestRunner):
- (WebTestRunner::WebTestPlugin::WebTestPlugin):
- (WebTestRunner::WebTestPlugin::~WebTestPlugin):
- (WebTestRunner::WebTestPlugin::mimeType):
- * DumpRenderTree/chromium/TestWebPlugin.h: Removed.
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createPlugin):
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- run_webkit_tests throws exception when DRT is not present
- https://bugs.webkit.org/show_bug.cgi?id=104565
-
- Reviewed by Jochen Eisinger.
-
- Don't actually try to print the bot results if there aren't
- any because we exited before running any tests.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_build_check):
-
-2012-12-10 Benjamin Poulain <benjamin@webkit.org>
-
- Add convenience methods to use ListHashSet for a LRU cache
- https://bugs.webkit.org/show_bug.cgi?id=104499
-
- Reviewed by Sam Weinig.
-
- Test the new methods added to ListHashSet.
-
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/GNUmakefile.am:
- * TestWebKitAPI/TestWebKitAPI.gypi:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WTF/ListHashSet.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch print-expectations doesn't work right for platforms w/ shared expectations
- https://bugs.webkit.org/show_bug.cgi?id=104405
-
- Reviewed by Eric Seidel.
-
- If multiple ports shared a TestExpectations file, webkit-patch
- print-expectations would use the expectation for the first port
- using that file and print the result for all ports, rather than
- re-parse and print each port separately (e.g., we might print
- the chromium-linux expectation for a file for both chromium-linux
- and chromium-mac). Discovered while testing/debugging the fix
- for bug 104403.
-
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestPort._skipped_tests_for_unsupported_features):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations._model):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.test_platform):
-
-2012-12-10 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix total number of tests computed in the result summary
- https://bugs.webkit.org/show_bug.cgi?id=104061
-
- Reviewed by Jochen Eisinger.
-
- Good thing I left this open, because I actually broke it again
- the same way in a merge. Fix the computation of the one_line_summary
- again, and add tests for it (also clean up some redundant tests).
-
- Also, add constants into the test port code so that the knowledge
- of how many tests should fail and how is next to the list of tests,
- rather than a totally different place.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestList.__getitem__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_test_results):
- (MainTest.setUp):
- (MainTest.test_basic):
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_test_list_with_prefix):
- (MainTest.test_missing_and_unexpected_results_with_custom_exit_code.CustomExitCodePort):
- (MainTest.test_tolerance.ImageDiffTestPort):
- (EndToEndTest.parse_full_results):
-
-2012-12-10 Mike West <mkwst@chromium.org>
-
- Log to console when script is blocked by sandbox attributes.
- https://bugs.webkit.org/show_bug.cgi?id=104365
-
- Reviewed by Ojan Vafai.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- Ignoring the new console message in perftests, as it broke parsing
- for the Parser/html-parser.html microbenchmark.
-
-2012-12-10 Filip Pizlo <fpizlo@apple.com>
-
- JSC profiling and debug dump code should use inferred names when possible
- https://bugs.webkit.org/show_bug.cgi?id=104519
-
- Reviewed by Oliver Hunt.
-
- The format I'm using for referring to a code block is now name#hash. For example,
- v8-crypto has something called bnpSquareTo#B5QFbU. The profiler allows you to use
- either the hash, the inferred name, or the combined hash and full name when referring
- to blocks.
-
- * Scripts/display-profiler-output:
-
-2012-12-09 Filip Pizlo <fpizlo@apple.com>
-
- Profiler should say things about OSR exits
- https://bugs.webkit.org/show_bug.cgi?id=104497
-
- Reviewed by Oliver Hunt.
-
- Adds support for displaying OSR exit information for full summary (just displays the
- counts and the number of recompilations), bytecode display (says which bytecodes
- exited), and DFG display (annotates disassembly with taken OSR exits and their
- counts).
-
- * Scripts/display-profiler-output:
-
-2012-12-10 Alexis Menard <alexis@webkit.org>
-
- [CSS3 Backgrounds and Borders] Remove CSS3_BACKGROUND feature flag.
- https://bugs.webkit.org/show_bug.cgi?id=104539
-
- Reviewed by Antonio Gomes.
-
- As discussed on webkit-dev it is not needed to keep this feature flag
- as support for <position> type is a small feature that is already
- implemented by three other UAs. It was useful while landing this
- feature as partial bits were landed one after one.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-12-10 Martin Robinson <mrobinson@igalia.com>
-
- Build fix.
-
- Add a patchfile missing from my previous commit.
-
- * gtk/patches/harfbuzz-icu-detection-fix.patch: Added.
-
-2012-12-10 Martin Robinson <mrobinson@igalia.com>
-
- REGRESSION(137127): Causes assertion failures on the debug bots
- https://bugs.webkit.org/show_bug.cgi?id=104549
-
- Reviewed by Alejandro G. Castro.
-
- After handling the new TextOutput message we should return the method
- handling messages received.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Fix a missing early return.
-
-2012-12-09 Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-
- [Soup] utilize multipart/x-mixed-replace support recently added to libsoup
- https://bugs.webkit.org/show_bug.cgi?id=94515
-
- Reviewed by Martin Robinson.
-
- This change requires a very recent libsoup, so update our jhbuild
- requirements.
-
- * gtk/jhbuild.modules: depend on soup version that adds the multipart/x-mixed-replace
- support
- * efl/jhbuild.modules: ditto
-
-2012-12-10 Zoltan Nyul <zoltan.nyul@intel.com>
-
- Implement testRunner.setViewModeMediaFeature() in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=103886
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement testRunner.setViewModeMediaFeature() in WebKitTestRunner.
- This API is required by layout tests.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setViewModeMediaFeature):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-12-10 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] Bring Harfbuzz-ng support to Gtk
- https://bugs.webkit.org/show_bug.cgi?id=92098
-
- Reviewed by Gustavo Noronha Silva.
-
- Add HarfBuzz dependency.
-
- * GNUmakefile.am: Add FreeType/HarfBuzz CFLAGS to the WebCore Internals library.
- * gtk/jhbuild.modules: Add HarfBuzz to the JHbuild and remove Pango, since it
- should no longer affect layout test results.
-
-2012-12-10 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Use QLibraryInfo::LibraryExecutablesPath unconditionally
- https://bugs.webkit.org/show_bug.cgi?id=104541
-
- Reviewed by Jocelyn Turcotte.
-
- We now depend on a Qt 5 version that is guaranteed to have this API, so we
- can remove the configure checks for it.
-
- * qmake/config.tests/libexecdir/libexecdir.cpp: Removed.
- * qmake/config.tests/libexecdir/libexecdir.pro: Removed.
- * qmake/mkspecs/features/features.prf:
-
-2012-12-10 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
-
- REGRESSION(r135863): GtkLauncher --help no longer displays all help options
- https://bugs.webkit.org/show_bug.cgi?id=104382
-
- Reviewed by Philippe Normand.
-
- Remove gst_init() because it steals the GOptionContext.
- gst_init_get_option_group() already does the initialization job.
-
- * GtkLauncher/main.c:
- (main):
-
-2012-12-10 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK][WTR] Implement AccessibilityUIElement::titleUIElement
- https://bugs.webkit.org/show_bug.cgi?id=102953
-
- Reviewed by Martin Robinson.
-
- Implement AccessibilityUIElement::titleUIElement in the ATK backend
- in the same manner it is implemented in DumpRenderTree. Both implementations
- are updated to unref the relation set before the final function return
- rather than at the end of each loop through the relations held in the said
- relation set.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::titleUIElement):
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::AccessibilityUIElement::titleUIElement):
-
-2012-12-10 Martin Robinson <mrobinson@igalia.com>
-
- Fix the WebKit2 debug build
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Fix a typo of WKStringGetTypeID().
-
-2012-12-10 Martin Robinson <mrobinson@igalia.com>
-
- [WTR] Move text output accumulation to the UIProcess
- https://bugs.webkit.org/show_bug.cgi?id=104214
-
- Reviewed by Darin Adler.
-
- Instead of accumulating text output in the InjectedBundle and then sending it to the UIProcess
- once a test is finished, immediately send any text output to the UIProcess. This will allow
- WebKitTestRunner to output text from the UIProcess as well.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp: Remove the handling of the text output
- StringBuilder. Add a method to send output to the UIProcess.
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp: Change code that appends to the StringBuilder
- to use the new outputText method.
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp: Ditto.
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp: Ditto.
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation): Intialize the StringBuilder.
- (WTR::TestInvocation::invoke): Clear the StringBuilder when a new tests starts.
- (WTR::TestInvocation::dumpResults): m_textOutput is a StringBuilder now so the
- method of printing the text is slightly different.
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle): Handle the new TextOutput
- message by appending the results to the StringBuilder.
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation): Switch the type of m_textOutput.
-
-2012-12-10 Mihnea Ovidenie <mihnea@adobe.com>
-
- Unreviewed. Adding Mihai Maerean to the list of contributors, working on CSSRegions.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-10 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] accessibility/language-attribute.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=98369
-
- Reviewed by Chris Fleizach.
-
- The test is failing for two reasons: Not exposing the language
- for accessible objects and AccessibilityUIElement::language() not
- being implemented.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::language): Implemented.
-
-2012-12-10 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] accessibility/editable-webarea-context-menu-point.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=98364
-
- Reviewed by Chris Fleizach.
-
- The test is failing because the clickPoint values remain unchanged. The
- values remain unchanged because ATK lacks a means to keep track of this
- information.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::clickPointX): Added comment that ATK doesn't have clickPoint details
- (AccessibilityUIElement::clickPointY): Added comment that ATK doesn't have clickPoint details
-
-2012-12-09 Alejandro Piñeiro <apinheiro@igalia.com>
-
- [GTK] lack of implemention of AccessibilityUIElementGtk::isSelectable and AccessibilityUIElementGtk::isMultiSelectable
- https://bugs.webkit.org/show_bug.cgi?id=104481
-
- Reviewed by Martin Robinson.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::isSelectable): Implement this by checking
- the current state of the AtkObject.
- (AccessibilityUIElement::isMultiSelectable): Implement this by
- checking the current state of the AtkObject.
-
-2012-12-09 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] accessibility/placeholder.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=98373
-
- Reviewed by Martin Robinson.
-
- The test was failing because the placeholder text was not supported and
- AccessibilityUIElement::stringAttributeValue() was not implemented.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (coreAttributeToAtkAttribute): New convenience method to convert WebCore attribute
- names into AtkObject attribute names
- (AccessibilityUIElement::stringAttributeValue): implemented
-
-2012-12-09 Dan Winship <danw@gnome.org>
-
- [GTK] Bump libxml2 requirement in jhbuild.modules
- https://bugs.webkit.org/show_bug.cgi?id=104477
-
- Reviewed by Martin Robinson.
-
- Fedora 18's Apache depends on symbols in libxml2 2.9.0, so the
- tests won't run if we only have libxml2 2.8.0 installed in the
- jhbuild root.
-
- * gtk/jhbuild.modules:
-
-2012-12-09 Zan Dobersek <zandobersek@gmail.com>
-
- Remove testRunner.disableImageLoading()
- https://bugs.webkit.org/show_bug.cgi?id=98083
-
- Reviewed by Gustavo Noronha Silva.
-
- Remove the disableImageLoading methods and callback.
- No tests use the method anymore and all ports except Wx
- now support this behavior through overriding the
- WebKitDisplayImagesKey preference.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::overridePreference): Add support for overriding the
- WebKitDisplayImagesKey preference which is now the preferred way
- of disabling image loading.
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
-
-2012-12-09 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] accessibility/label-for-control-hittest.html is failing
- https://bugs.webkit.org/show_bug.cgi?id=98368
-
- Reviewed by Martin Robinson.
-
- The test was failing because AccessibilityUIElement::elementAtPoint was
- not implemented.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (AccessibilityUIElement::elementAtPoint): implemented
-
-2012-12-09 Jon Lee <jonlee@apple.com>
-
- [WK2] Move button image to injected bundle
- https://bugs.webkit.org/show_bug.cgi?id=104107
- <rdar://problem/12813842>
-
- Reviewed by Simon Fraser.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::InjectedBundlePage): Update the bundle page UI client.
-
-2012-12-08 Halton Huo <halton.huo@intel.com>
-
- [CMake] Add CMake style checker
- https://bugs.webkit.org/show_bug.cgi?id=104240
-
- Reviewed by Eric Seidel.
-
- The CMake style checker is followed by existing style checkers like cpp, python.
- Unit test is added as well.
-
- * Scripts/webkitpy/style/checker.py: Use CMakeChecker CMAKE type files(.cmake or CMakeLists.txt)
- (FileType):
- (CheckerDispatcher._file_type):
- (CheckerDispatcher._create_checker):
- * Scripts/webkitpy/style/checkers/cmake.py: Added.
- (CMakeChecker):
- (CMakeChecker.__init__):
- (CMakeChecker.check):
- (CMakeChecker._process_line):
- (CMakeChecker._check_trailing_whitespace):
- (CMakeChecker._check_no_space_cmds):
- (CMakeChecker._check_one_space_cmds):
- (CMakeChecker._check_non_lowercase_cmd):
- (CMakeChecker._check_indent):
- * Scripts/webkitpy/style/checkers/cmake_unittest.py: Added.
- (CMakeCheckerTest):
- (CMakeCheckerTest.test_init):
- (CMakeCheckerTest.test_init._mock_handle_style_error):
- (CMakeCheckerTest.test_check):
- (CMakeCheckerTest.test_check._mock_handle_style_error):
-
-2012-12-08 Kondapally Kalyan <kalyan.kondapally@intel.com>
-
- [EFL] Enable WebGL by default.
- https://bugs.webkit.org/show_bug.cgi?id=102991.
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable WebGL by default.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-07 Scott Violet <sky@chromium.org>
-
- [chromium] Remove linux theme related files and switch to default
- https://bugs.webkit.org/show_bug.cgi?id=103897
-
- Reviewed by Dimitri Glazkov.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): linux->default
-
-2012-12-07 Mike Lattanzio <mlattanzio@rim.com>
-
- [BlackBerry] Update BlackBerry Port to use new Graphics::createBuffer BufferType enum values.
- https://bugs.webkit.org/show_bug.cgi?id=104121
-
- Reviewed by Rob Buis.
-
- Update createBuffer call to reflect new BufferType enum.
- Internal PR 254649
- Internal Review: Jakob Petsovits
-
- DRT is always backed for maximum compatibility.
-
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
- (createBitmapContextFromWebView):
-
-2012-12-07 Jochen Eisinger <jochen@chromium.org>
-
- Add 'CHROMIUM_DEVEL_SANDBOX' to the environment variables to copy for layout test drivers
- https://bugs.webkit.org/show_bug.cgi?id=104355
-
- Reviewed by Dirk Pranke.
-
- This enables chromium's content_shell driver to run with the full SUID
- sandbox.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.setup_environ_for_server):
-
-2012-12-07 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL] Fix tools for WebKit2-only builds
- https://bugs.webkit.org/show_bug.cgi?id=103904
-
- Reviewed by Laszlo Gombos.
-
- The libewebkit2.so should be used for library path for EFL WebKit2.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
-
-2012-12-07 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - Update implementation of TestRunner.setCustomPolicyDelegate()
- https://bugs.webkit.org/show_bug.cgi?id=104243
-
- RIM PR 259337
-
- Reviewed by Rob Buis.
-
- 1. Implement calculation of navigation originating in
- didDecidePolicyForNavigationAction().
- 2. Implement policy delegate for resource response.
- 3. Enable customPolicyDelegate if waitForPolicyDelegate() is called.
- 4. Minor optional updates in dump() and dumpFrameLoadCallbacks().
-
- The patch fixed the following tests:
- - http/tests/download
- - fast/forms/mailto/formenctype-attribute-button-html.html
- - fast/forms/mailto/formenctype-attribute-input-html.html
- - fast/encoding/mailto-always-utf-8.html
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::DumpRenderTree):
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (BlackBerry::WebKit::DumpRenderTree::dump):
- (BlackBerry::WebKit::DumpRenderTree::didFinishLoadForFrame):
- (BlackBerry::WebKit::DumpRenderTree::didDecidePolicyForNavigationAction):
- (BlackBerry::WebKit::DumpRenderTree::didDecidePolicyForResponse):
- (BlackBerry::WebKit::DumpRenderTree::setCustomPolicyDelegate):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::setCustomPolicyDelegate):
- (TestRunner::waitForPolicyDelegate):
- (TestRunner::overridePreference):
-
-2012-12-07 Gwang Yoon Hwang <ryumiel@company100.net>
-
- [Qt] Adjust library name in layout_tests/port/qt.py after Qt5-r40
- https://bugs.webkit.org/show_bug.cgi?id=104348
-
- Reviewed by Csaba Osztrogonác.
-
- After Qt-5.0.0-r40, the library was renamed from QtWebKitWidgets to
- Qt5WebKitWidgets. run-webkit-tests were still looking for QtWebKitWidgets
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._path_to_webcore_library):
-
-2012-12-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed fix, unbreak run-launcher after library renaming.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
-
-2012-12-06 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed fix after r136896, unbreak --debug-rwt to make bots result verbose again.
- https://bugs.webkit.org/show_bug.cgi?id=104296
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (main):
-
-2012-12-06 Rick Byers <rbyers@chromium.org>
-
- CSS cursor property should support webkit-image-set
- https://bugs.webkit.org/show_bug.cgi?id=99493
-
- Reviewed by Beth Dakin.
-
- Add ENABLE_MOUSE_CURSOR_SCALE - disabled by default
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-12-06 Vivek Galatage <vivek.vg@samsung.com>
-
- Unreviewed. Fixing the email address order to work correctly with bugzilla.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-06 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] when forwarding events through the WebPluginContainer, create a UserGestureIndicator if processing a user gesture
- https://bugs.webkit.org/show_bug.cgi?id=104306
-
- Reviewed by Dimitri Glazkov.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::handleInputEvent): add support for printing the user gesture status
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
-
-2012-12-06 Dirk Pranke <dpranke@chromium.org>
-
- new-run-webkit-tests --lint-test-files seems to be broken
- https://bugs.webkit.org/show_bug.cgi?id=104296
-
- Unreviewed, build fix.
-
- My recent refactoring caused me to not initialize the printer
- before calling lint(); this patch restructures the code to make
- the lint routine self-contained and do all the work necessary.
- This will also make it easier to move this code out into a standalone
- file.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations):
- (LintTest.test_lint_test_files):
- (LintTest.test_lint_test_files__errors):
-
-2012-12-05 Filip Pizlo <fpizlo@apple.com>
-
- DFG profiler should be helpful about gem installation
- https://bugs.webkit.org/show_bug.cgi?id=104217
-
- Reviewed by Oliver Hunt.
-
- 'json' and 'highline' are not installed by default on the ruby distributions with
- which I am familiar, and the default error messages don't make me happy. This makes
- display-profiler-output print a helpful message if those gems are not found.
-
- * Scripts/display-profiler-output:
-
-2012-12-05 Filip Pizlo <fpizlo@apple.com>
-
- Profiler should print a helpful message if you pass the wrong arguments
- https://bugs.webkit.org/show_bug.cgi?id=104222
-
- Reviewed by Oliver Hunt.
-
- * Scripts/display-profiler-output:
-
-2012-12-06 Ojan Vafai <ojan@chromium.org>
-
- Allow for CCing a secondary email address from watchlists
- https://bugs.webkit.org/show_bug.cgi?id=104286
-
- Reviewed by Dirk Pranke.
-
- Change my watchlist CC address so I can filter these separately from
- when people explicitly CC me and update the watchlist parser to allow that.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
- * Scripts/webkitpy/common/watchlist/watchlistparser.py:
- (WatchListParser._validate):
- * Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py:
- (WatchListParserTest.test_cc_rule_with_invalid_email):
- (WatchListParserTest.test_cc_rule_with_secondary_email):
-
-2012-12-06 Max Vujovic <mvujovic@adobe.com>
-
- Unreviewed. Add myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-06 Yael Aharon <yael.aharon@intel.com>
-
- [EFL] [WK2] fast/dom/vertical-scrollbar-in-rtl.html makes fast/regions tests flaky
- https://bugs.webkit.org/show_bug.cgi?id=104139
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Resize the window back to 800x600 between tests.
- This should be a no-op if the test did not resize the window.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-12-06 Tommy Widenflycht <tommyw@google.com>
-
- Speech Recognition API: Change the error code to a string on SpeechRecognitionError
- https://bugs.webkit.org/show_bug.cgi?id=104254
-
- Reviewed by Adam Barth.
-
- Changes the mock error function to take a string instead of an int.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::setMockSpeechRecognitionError):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- (WebTestRunner::ErrorTask::ErrorTask):
- (MockWebSpeechRecognizer::setError):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- (MockWebSpeechRecognizer):
-
-2012-12-06 Andras Becsi <andras.becsi@digia.com>
-
- [Qt][Mac] Fix libxslt and libxml2 config tests
- https://bugs.webkit.org/show_bug.cgi?id=104164
-
- Reviewed by Simon Hausmann.
-
- We should not use pkg-config on Mac instead use direct include
- paths and add needed libraries to the linker options to detect
- libxslt and libxml2 provided by the system.
- Previously we would always fall back to qtxmlpatterns.
-
- * qmake/config.tests/libxml2/libxml2.pro:
- * qmake/config.tests/libxslt/libxslt.pro:
-
-2012-12-06 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Fix the build if the path contains "+" character
- https://bugs.webkit.org/show_bug.cgi?id=104120
-
- Reviewed by Tor Arne Vestbø.
-
- The second parameter of qmake's replace() is regular expression, so
- we have to escape special characters in paths passed to replace().
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
- * qmake/mkspecs/features/functions.prf:
-
-2012-12-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r136825.
- http://trac.webkit.org/changeset/136825
- https://bugs.webkit.org/show_bug.cgi?id=104251
-
- It made 100+ test fail on Qt-WK2 pixel bot, and 1800+ test
- flakey on Qt-WK2 non-pixel bot (Requested by Ossy on #webkit).
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-12-06 Yael Aharon <yael.aharon@intel.com>
-
- [EFL] [WK2] fast/dom/vertical-scrollbar-in-rtl.html makes fast/regions tests flaky
- https://bugs.webkit.org/show_bug.cgi?id=104139
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Resize the window back to 800x600 between tests.
- This should be a no-op if the test did not resize the window.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-12-06 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r136784 and r136802.
- http://trac.webkit.org/changeset/136784
- http://trac.webkit.org/changeset/136802
- https://bugs.webkit.org/show_bug.cgi?id=104231
-
- breaks chromium canary (Requested by morrita on #webkit).
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest):
-
-2012-12-05 Ryosuke Niwa <rniwa@webkit.org>
-
- Add myself to watch changes in PerformanceTests/*.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-12-05 Shinya Kawanaka <shinyak@chromium.org>
-
- [Chromium] DRT on Windows crashes when a testcase has a progress element in indeterminate state
- https://bugs.webkit.org/show_bug.cgi?id=102459
-
- Reviewed by Dimitri Glazkov.
-
- Since WebThemeControlDRTWin::markState does not consider indeterminate state, DRT caused a crash.
-
- * DumpRenderTree/chromium/WebThemeControlDRTWin.cpp:
- (WebThemeControlDRTWin::markState):
-
-2012-12-05 Filip Pizlo <fpizlo@apple.com>
-
- DFG profiler should be able to display where a code block was inlined into, and what it inlined
- https://bugs.webkit.org/show_bug.cgi?id=104216
-
- Reviewed by Oliver Hunt.
-
- Added an "inlines" command that shows the inline stacks that a code block participated
- in. Also cleaned up some of the ways we print compilation units.
-
- * Scripts/display-profiler-output:
-
-2012-12-05 Halton Huo <halton.huo@intel.com>
-
- [CMake] Unify coding style for CMake files
- https://bugs.webkit.org/show_bug.cgi?id=103605
-
- Reviewed by Laszlo Gombos.
-
- Update cmake files(.cmake, CMakeLists.txt) with following style rules:
- 1. Indentation
- 1.1 Use spaces, not tabs.
- 1.2 Four spaces as indent.
- 2. Spacing
- 2.1 Place one space between control statements and their parentheses.
- For eg, if (), else (), elseif (), endif (), foreach (),
- endforeach (), while (), endwhile (), break ().
- 2.2 Do not place spaces between function and macro statements and
- their parentheses. For eg, macro(), endmacro(), function(),
- endfunction().
- 2.3 Do not place spaces between a command or function or macro and its
- parentheses, or between a parenthesis and its content. For eg,
- message("testing") not message( "testing") or message ("testing" )
- 2.4 No space at line ending.
- 3. Lowercase when call commands macros and functions. For eg,
- add_executable() not ADD_EXECUTABLE(), set() not SET().
-
- * CMakeLists.txt:
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
- * DumpRenderTree/efl/CMakeLists.txt:
- * EWebLauncher/CMakeLists.txt:
- * EWebLauncher/ControlTheme/CMakeLists.txt:
- * MiniBrowser/efl/CMakeLists.txt:
- * TestWebKitAPI/CMakeLists.txt:
- * TestWebKitAPI/PlatformEfl.cmake:
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/PlatformEfl.cmake:
- * WinCELauncher/CMakeLists.txt:
- * clang/ReportMemoryUsagePlugin/CMakeLists.txt:
-
-2012-12-05 Scott Violet <sky@chromium.org>
-
- [chromium] Remove linux theme related files and switch to default
- https://bugs.webkit.org/show_bug.cgi?id=103897
-
- Reviewed by Tony Chang.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): linux->default
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: run_webkit_tests_integrationtest.py depends on being able to share a port w/ between master and worker
- https://bugs.webkit.org/show_bug.cgi?id=78168
-
- Reviewed by Ojan Vafai.
-
- This patch adds a single ordered list to ResultSummary that contains
- the results of every test run in order of result received, and
- modifies the TestResults class to contain the list of references used
- for each test as well as the pid of the driver; this allows us to stop
- having to override the test drivers to record the tests, and makes the
- integration tests that test rdering, retries, restarts, etc. black-box
- tests.
-
- * Scripts/webkitpy/layout_tests/controllers/single_test_runner.py:
- (SingleTestRunner._run_rebaseline):
- (SingleTestRunner._compare_output):
- (SingleTestRunner._run_reftest):
- (SingleTestRunner._compare_output_with_reference):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- (ResultSummary.add):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.__init__):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput.__init__):
- (Driver.run_test):
- * Scripts/webkitpy/layout_tests/port/test.py:
- (TestDriver):
- (TestDriver.__init__):
- (TestDriver.run_test):
- (TestDriver.stop):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (get_tests_run):
- (get_test_batches):
- (get_test_results):
- (MainTest.test_batch_size):
- (MainTest.test_dryrun):
- (MainTest.test_natural_order):
- (MainTest.test_natural_order_test_specified_multiple_times):
- (MainTest.test_random_order):
- (MainTest.test_random_order_test_specified_multiple_times):
- (MainTest.test_no_order):
- (MainTest.test_no_order_test_specified_multiple_times):
- (MainTest.test_no_order_with_directory_entries_in_natural_order):
- (MainTest.test_repeat_each):
- (MainTest.test_ignore_flag):
- (MainTest.test_skipped_flag):
- (MainTest.test_iterations):
- (MainTest.test_run_chunk):
- (MainTest.test_run_part):
- (MainTest.test_run_singly):
- (MainTest.test_skip_failing_tests):
- (MainTest.test_single_file):
- (MainTest.test_single_file_with_prefix):
- (MainTest.test_single_skipped_file):
- (MainTest.test_test_list):
- (MainTest.test_test_list_with_prefix):
- (MainTest.test_exit_after_n_failures):
- (MainTest.test_exit_after_n_crashes):
- (MainTest.test_run_order__inline):
- (MainTest.test_reftest_run):
- (MainTest.test_reftest_run_reftests_if_pixel_tests_are_disabled):
- (MainTest.test_reftest_skip_reftests_if_no_ref_tests):
- (MainTest.test_reftest_expected_html_should_be_ignored):
- (MainTest.test_reftest_driver_should_run_expected_html):
- (MainTest.test_reftest_driver_should_run_expected_mismatch_html):
- (MainTest.test_no_http_tests):
- (MainTest.test_platform_tests_are_found):
-
-2012-12-05 Dana Jansens <danakj@chromium.org>
-
- [chromium] Make WebCompositorOutputSurface an empty class when USE_CC_OUTPUT_SURFACE is defined.
- https://bugs.webkit.org/show_bug.cgi?id=103967
-
- Reviewed by James Robinson.
-
- Use the WebCompositorSupport methods to create an OutputSurface. If they
- fail, then fall back to the WebViewHost methods.
-
- Once the chromium side lands, the WebCompositorSupport methods will stop
- failing, and will replace the WebViewHost ones.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::createOutputSurface):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: split all of the buildbot-specific output into its own file
- https://bugs.webkit.org/show_bug.cgi?id=104165
-
- Reviewed by Ojan Vafai.
-
- Now that we have the RunDetails object we can move all of the
- buildbot-specific knowledge out of the core test-running code
- and into the outermost run_webkit_tests layer.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (passing_run):
- (logging_run):
- (run_and_capture):
- (MainTest.test_all):
- (MainTest.test_max_locked_shards):
- (MainTest.test_child_processes_2):
- (MainTest.test_child_processes_min):
- (MainTest.test_full_results_html):
- (MainTest.test_hung_thread):
- (MainTest.test_keyboard_interrupt):
- (MainTest.test_no_tests_found):
- (MainTest.test_no_tests_found_2):
- (MainTest.test_repeat_each_iterations_num_tests):
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_test_list):
- (MainTest.test_unexpected_failures):
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_pixel_test_directories):
- (MainTest.test_missing_and_unexpected_results_with_custom_exit_code):
- (MainTest.test_crash_with_stderr):
- (MainTest.test_no_image_failure_with_image_diff):
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
- (MainTest.test_exit_after_n_failures_upload):
- (MainTest.test_results_directory_absolute):
- (MainTest.test_results_directory_default):
- (MainTest.test_results_directory_relative):
- (MainTest.test_retrying_and_flaky_tests):
- (MainTest.test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist):
- (MainTest.test_output_diffs):
- (MainTest.test_unsupported_platform):
- (MainTest.test_verbose_in_child_processes):
- (EndToEndTest.test_end_to_end):
- (EndToEndTest.test_reftest_with_two_notrefs):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
- * Scripts/webkitpy/layout_tests/views/buildbot_results.py: Added.
- (BuildBotPrinter):
- (BuildBotPrinter.__init__):
- (BuildBotPrinter.print_results):
- (BuildBotPrinter._print):
- (BuildBotPrinter.print_result_summary):
- (BuildBotPrinter._print_result_summary_entry):
- (BuildBotPrinter.print_unexpected_results):
- (BuildBotPrinter.print_unexpected_results.add_to_dict_of_lists):
- (BuildBotPrinter.print_unexpected_results.add_result):
- * Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py: Added.
- (BuildBotPrinterTests):
- (BuildBotPrinterTests.assertEmpty):
- (BuildBotPrinterTests.assertNotEmpty):
- (BuildBotPrinterTests.get_printer):
- (BuildBotPrinterTests.get_result):
- (BuildBotPrinterTests.get_result_summary):
- (BuildBotPrinterTests.test_print_unexpected_results):
- (BuildBotPrinterTests.test_print_unexpected_results.get_unexpected_results):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer):
- (Printer.__init__):
- (Printer.print_results):
- (Printer._print_statistics_for_test_timings):
- (Printer._print_baseline):
- (Printer._print_debug):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_printer):
- (Testprinter.get_result):
- (Testprinter.test_configure_and_cleanup):
- (Testprinter.test_print_config):
- (Testprinter.test_print_one_line_summary):
- (Testprinter.test_test_status_line):
- (Testprinter.test_details):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: collect all of the information about a run into a new RunDetails class
- https://bugs.webkit.org/show_bug.cgi?id=104158
-
- Reviewed by Ojan Vafai.
-
- This patch collects the information from both test passes (the
- main one and the retries) as well as the summarized results and
- the exit code into a RunDetails class, so that the integration
- tests can more easily tell what happened.
-
- Also, change the way the --lint-test-files works slightly so that
- we don't need to create a printer object (and hence we need to
- rework the tests that are testing logging).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (RunDetails):
- (RunDetails.__init__):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (passing_run):
- (run_and_capture):
- (LintTest.test_lint_test_files):
- (LintTest.test_lint_test_files__errors):
- (MainTest.test_verbose_in_child_processes):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove --no-record-results
- https://bugs.webkit.org/show_bug.cgi?id=104072
-
- Reviewed by Ojan Vafai.
-
- The command line flag was only being used in the unit tests and
- wasn't really needed once we started using a mock filesystem.
-
- Also, reformat a bunch of long lines ...
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (parse_args):
- (passing_run):
- (logging_run):
- (MainTest.test_repeat_each_iterations_num_tests):
- (MainTest.test_test_list):
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_pixel_test_directories):
- (MainTest.test_missing_and_unexpected_results_with_custom_exit_code):
- (MainTest.test_crash_with_stderr):
- (MainTest.test_no_image_failure_with_image_diff):
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
- (MainTest.test_exit_after_n_failures_upload):
- (MainTest.test_results_directory_absolute):
- (MainTest.test_results_directory_relative):
- (MainTest.test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist):
- (MainTest.test_additional_expectations):
- (MainTest.test_output_diffs):
- (EndToEndTest.test_end_to_end):
- (EndToEndTest.test_reftest_with_two_notrefs):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: only summarize the results one way
- https://bugs.webkit.org/show_bug.cgi?id=104064
-
- Reviewed by Ojan Vafai.
-
- Change manager.summarize_results so that we always (and only)
- include both expected and unexpected results. Previously we
- would summarize the results twice, once with expected results
- and once without. This made the code much more confusing than
- it needed to be.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.summarized_results):
- (ResultSummaryTest.test_no_svn_revision):
- (ResultSummaryTest.test_svn_revision):
- (ResultSummaryTest.test_summarized_results_wontfix):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_results):
- (Printer._print_unexpected_results):
- (Printer._print_unexpected_results.add_result):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_unexpected_results.get_unexpected_results):
- (Testprinter):
-
-2012-12-05 Filip Pizlo <fpizlo@apple.com>
-
- DFG profiler should display more information
- https://bugs.webkit.org/show_bug.cgi?id=104163
-
- Reviewed by Gavin Barraclough.
-
- Added the following:
-
- - Distinguish between source counts and bytecode counts.
-
- - Add a "full" summary view that shows both kinds of counts, plus inline counts.
-
- - Add a "source" command to see the source.
-
- - Add a "bytecode" command to see the bytecode and counts.
-
- * Scripts/display-profiler-output:
-
-2012-12-05 Yong Li <yoli@rim.com>
-
- [BlackBerry] Build with libjpegturbo
- https://bugs.webkit.org/show_bug.cgi?id=104152
-
- Reviewed by Rob Buis.
-
- RIM PR# 196975.
- Make sure the right include path for libjpeg is included.
-
- * Scripts/webkitdirs.pm:
- (blackberryCMakeArguments):
-
-2012-12-05 Joseph Pecoraro <pecoraro@apple.com>
-
- Remove stale check in check-for-webkit-framework-include-consistency
- https://bugs.webkit.org/show_bug.cgi?id=103775
-
- Reviewed by David Kilzer.
-
- The underlying issue was fixed in r81173.
-
- * Scripts/check-for-webkit-framework-include-consistency:
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: simplify the finding of tests to retry
- https://bugs.webkit.org/show_bug.cgi?id=104067
-
- Reviewed by Ryosuke Niwa.
-
- I think this makes the code a little clearer; note that
- we were no longer using the include_missing flag.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.run):
- (Manager._failed_test_names):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove two unused parameters from a function
- https://bugs.webkit.org/show_bug.cgi?id=104059
-
- Reviewed by Ryosuke Niwa.
-
- Also remove an old, stale FIXME.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (interpret_test_failures):
- (summarize_results):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.test_interpret_test_failures):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: return result_summaries from LayoutTestRunner.run_tests()
- https://bugs.webkit.org/show_bug.cgi?id=104051
-
- Reviewed by Ojan Vafai.
-
- This patch completes the refactoring that makes the result summary
- an object returned from the layout test runner, rather than having
- it passed in and modified. This makes the split of duties between
- the manager and runner clearer and makes the data flow more
- functionally.
-
- Also clean up some minor lint issues.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.__init__):
- (LayoutTestRunner.run_tests):
- (LayoutTestRunner._mark_interrupted_tests_as_skipped):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (FakePrinter.print_expected):
- (LockCheckingRunner.__init__):
- (LayoutTestRunnerTests._runner):
- (LayoutTestRunnerTests._run_tests):
- (LayoutTestRunnerTests.test_interrupt_if_at_failure_limits):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.run):
- (Manager._run_tests):
-
-2012-12-05 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: move creation of the resultsummary objects into Manager._run_tests()
- https://bugs.webkit.org/show_bug.cgi?id=104048
-
- Reviewed by Ojan Vafai.
-
- This is a preparatory step to making the resultsummary just get
- returned from the layout_test_runner; this does most of manager-side
- changes.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._prepare_lists):
- (Manager.run):
- (Manager._run_tests):
-
-2012-12-05 Leo Yang <leoyang@rim.com>
-
- [BlackBerry] Enable CSS_IMAGE_RESOLUTION
- https://bugs.webkit.org/show_bug.cgi?id=104132
-
- Reviewed by Yong Li.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-05 Filip Pizlo <fpizlo@apple.com>
-
- JSC profiler should not count executions of op_call_put_result because doing so changes DFG codegen
- https://bugs.webkit.org/show_bug.cgi?id=104102
-
- Reviewed by Oliver Hunt.
-
- Modify the profiler to not output counts for op_call_put_result, since there
- won't be any. Also fix a few weird bugs, like providing better error reporting
- when you type something incorrectly and not reporting counts for slow paths
- in the old JIT since those counts are actually not what you think they are
- (we don't actually count slow path executions separately).
-
- * Scripts/display-profiler-output:
-
-2012-12-05 Andras Becsi <andras.becsi@digia.com>
-
- Fix compilation for Qt5.0.0 stable branch.
- https://bugs.webkit.org/show_bug.cgi?id=103870
-
- Reviewed by Simon Hausmann.
-
- Fix the use of renamed QWindow functions.
- Patch by Andras Becsi <andras.becsi@digia.com>
-
- * MiniBrowser/qt/BrowserWindow.cpp:
- (BrowserWindow::BrowserWindow):
- (BrowserWindow::onTitleChanged):
- * MiniBrowser/qt/raw/View.cpp:
- (View::View):
-
-2012-12-05 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- [WK2] InjectedBundle should check Intent url for null
- https://bugs.webkit.org/show_bug.cgi?id=104117
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WKIntentServiceInfoCopyHref() can return null, we need to check
- for that in InjectedBundlePage::registerIntentServiceForFrame()
- to avoid crashing.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::registerIntentServiceForFrame):
-
-2012-12-04 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
-
- Change email address of Jonathan Dong
- https://bugs.webkit.org/show_bug.cgi?id=103976
-
- Unreviewed, change my email address from jonathan.dong@torchmobile.com.cn
- to jonathan.dong.webkit@gmail.com in committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-04 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - Tests under "dumpAsText" directory should be dumped as text
- https://bugs.webkit.org/show_bug.cgi?id=103986
-
- Reviewed by Rob Buis.
-
- Also move declaration of webSettingTransaction to before any WebSettings
- ::setXXX() calls so that it works as expected (commit only once in the
- function scope).
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (shouldDumpAsText):
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-12-04 Filip Pizlo <fpizlo@apple.com>
-
- display-profiler-output should be able to show source code
- https://bugs.webkit.org/show_bug.cgi?id=104073
-
- Reviewed by Oliver Hunt.
-
- Display source code in the summary, using a one-line shortening.
-
- * Scripts/display-profiler-output:
-
-2012-12-04 Filip Pizlo <fpizlo@apple.com>
-
- display-profiler-output should not use reflective infocation to resolve command names
-
- Rubber stamped by Mark Hahnenberg.
-
- Reflection is amazing, but here it was just kind of a bit much.
-
- * Scripts/display-profiler-output:
-
-2012-12-02 Filip Pizlo <fpizlo@apple.com>
-
- JSC should be able to report profiling data associated with the IR dumps and disassembly
- https://bugs.webkit.org/show_bug.cgi?id=102999
-
- Reviewed by Gavin Barraclough.
-
- Added a tool that allows you to grok the output from JSC's new profiler. Currently,
- this still gets confused a bit about the execution counts of a method running
- standalone versus a method running inlined, but other than that, it's pretty cool.
- See the attached "sampling profiling session" attached to the bug to see it in
- action.
-
- Also had to feed EFL's build system.
-
- * DumpRenderTree/efl/CMakeLists.txt:
- * Scripts/display-profiler-output: Added.
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix total number of tests computed in the result summary
- https://bugs.webkit.org/show_bug.cgi?id=104061
-
- Unreviewed, build fix.
-
- One of the recent changes to the resultsummary refactoring caused
- us to not include the number of skipped tests in the total number
- of tests, throwing off the totals printed in print_one_line_summary().
-
- Unfortunately, given the current state of the code it is difficult
- to construct an accurate unit test for this. I have verified the
- fix by hand, and will write a test once the remaining refactoring
- patches land, at which point it will be trivial to test it.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._prepare_lists):
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is not returning the exit status properly
- https://bugs.webkit.org/show_bug.cgi?id=103830
-
- Unreviewed, build fix.
-
- The fix in r136474 wasn't quite right either, and would return
- the correct exceptional status, but not the correct failing status.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: make paths and test_names passed arguments in Manager._prepare_lists et al
- https://bugs.webkit.org/show_bug.cgi?id=104047
-
- Reviewed by Eric Seidel.
-
- The code becomes cleaner if we are just passing values around rather
- than hanging them off the manager object, helps move _prepare_lists()
- to a pure function, and is needed to eventually make the
- result_summary object something returned from runner.run_tests()
- (note that two more patches are needed for that to happen).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager._http_tests):
- (Manager._prepare_lists):
- (Manager.needs_servers):
- (Manager._set_up_run):
- (Manager.run):
- (Manager._run_tests):
- (Manager._upload_json_files):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_needs_servers.get_manager):
- (ManagerTest.test_needs_servers):
- (ManagerTest.integration_test_needs_servers.get_manager):
- (ManagerTest.integration_test_needs_servers):
- (ManagerTest.test_look_for_new_crash_logs.get_manager):
- (ManagerTest):
- (ManagerTest.test_look_for_new_crash_logs):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator.__init__):
- (JSONLayoutResultsGenerator._get_modifier_char):
-
-2012-12-04 Adam Barth <abarth@webkit.org>
-
- commit-queue can get stuck with a local commit
- https://bugs.webkit.org/show_bug.cgi?id=104032
-
- Reviewed by Dirk Pranke.
-
- Previously the commit-queue would only clean down to HEAD. If the
- commit-queue gets interrupted in the middle of a commit (e.g., after
- the local commit but before the dcommit), then it can end up with a
- patch locally committed. That patch will then prevent the commit-queue
- from functioning.
-
- This patch teaches the commit-queue to clean down to the merge base,
- which will remove any local commits.
-
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git.working_directory_is_clean):
- (Git.clean_working_directory):
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit._commit_warning):
- (Commit.run):
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: store only the total number of tests in the result summary
- https://bugs.webkit.org/show_bug.cgi?id=103963
-
- Reviewed by Ryosuke Niwa.
-
- The result summary only needs the total number of tests that will
- be run (including repetitions) in order to provide the correct stats;
- it doesn't actually need to know how many unique tests there are, or
- or how many repetitions there are.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (LayoutTestRunnerTests._result_summary):
- (LayoutTestRunnerTests.test_update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._prepare_lists):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_look_for_new_crash_logs):
- (ResultSummaryTest.get_result_summary):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_result_summary):
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: do less work when ctrl-c'ed
- https://bugs.webkit.org/show_bug.cgi?id=103961
-
- Reviewed by Ryosuke Niwa.
-
- Do less work when we are ctrl-c'ed, because the statistics aren't
- that useful anyway. While we're at it, modify summarize_results
- to be aware that we don't always retry results (instead of pretending
- that the retry produced the same results the initial run did).
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- (Manager.run):
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: result summaries should not require a list of tests to skip
- https://bugs.webkit.org/show_bug.cgi?id=103951
-
- Reviewed by Ryosuke Niwa.
-
- We shouldn't really be passing a list of tests to skip to the
- ResultSummary objects; they should be handled like any other
- test result as much as possible.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (LayoutTestRunnerTests._result_summary):
- (LayoutTestRunnerTests.test_update_summary_with_result):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._prepare_lists):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ManagerTest.test_look_for_new_crash_logs):
- (ResultSummaryTest.get_result_summary):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.get_result_summary):
-
-2012-12-04 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: derive per-thread, per-worker stats from result summaries
- https://bugs.webkit.org/show_bug.cgi?id=103943
-
- Reviewed by Ojan Vafai.
-
- This patch changes the manager and printing code to pull more
- information from the ResultSummary object rather than tracking
- additional statistics on the side. This allows us to consolidate
- a bunch of logic and remove a bunch of free-floating lists and dicts of
- of values. We add the shard_name and worker_name to each TestResult,
- and then modify print_timing_statistics() and upload_json_files()
- to just need the result summaries.
-
- Note that this patch also changes the timing statistics slightly
- so that the individual test times are the times to run just the
- tests themselves (TestResult.test_run_time) and do not include the
- times taken to run the ref tests, compute diffs, etc. The aggregated
- per-worker and per-shard statistics still use the total time to
- process each test (TestResult.total_run_time).
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.__init__):
- (LayoutTestRunner.run_tests):
- (LayoutTestRunner._handle_finished_test_list):
- (LayoutTestRunner._handle_finished_test):
- (Worker.handle):
- (Worker._run_test):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- (Manager.run):
- (Manager._upload_json_files):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.summarized_results):
- * Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py:
- (JSONLayoutResultsGenerator.__init__):
- (JSONLayoutResultsGenerator._get_test_timing):
- * Scripts/webkitpy/layout_tests/models/test_results.py:
- (TestResult.__init__):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.print_results):
- (Printer._print_timing_statistics):
- (Printer):
- (Printer._print_worker_statistics):
- (Printer._print_aggregate_test_statistics):
- (Printer._print_individual_test_times):
- (Printer._print_directory_timings):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_unexpected_results.get_unexpected_results):
- (Testprinter):
-
-2012-12-04 Adam Barth <abarth@webkit.org>
-
- Remove obsolete code from webkitpy
- https://bugs.webkit.org/show_bug.cgi?id=104029
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask.py:
- (CommitQueueTask.run):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit.options):
- * Scripts/webkitpy/tool/steps/options.py:
- (Options):
-
-2012-12-04 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move WebPreferences and methods for modifying them to the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=103841
-
- Reviewed by Darin Fisher.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebPreferences.h: Renamed from Tools/DumpRenderTree/chromium/WebPreferences.h.
- (WebKit):
- (WebTestRunner):
- (WebPreferences):
- (WebTestRunner::WebPreferences::WebPreferences):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner):
- (WebTestDelegate):
- (WebTestRunner::WebTestDelegate::localFileToDataURL):
- (WebTestRunner::WebTestDelegate::rewriteLayoutTestsURL):
- (WebTestRunner::WebTestDelegate::preferences):
- (WebTestRunner::WebTestDelegate::applyPreferences):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner::TestRunner::setUserStyleSheetEnabled):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setUserStyleSheetLocation):
- (WebTestRunner::TestRunner::setAuthorAndUserStylesEnabled):
- (WebTestRunner::TestRunner::setPopupBlockingEnabled):
- (WebTestRunner::TestRunner::setJavaScriptCanAccessClipboard):
- (WebTestRunner::TestRunner::setXSSAuditorEnabled):
- (WebTestRunner::TestRunner::setAllowUniversalAccessFromFileURLs):
- (WebTestRunner::TestRunner::setAllowFileAccessFromFileURLs):
- (WebTestRunner::TestRunner::overridePreference):
- (WebTestRunner::TestRunner::setPluginsEnabled):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/chromium/TestRunner/src/WebPreferences.cpp: Renamed from Tools/DumpRenderTree/chromium/WebPreferences.cpp.
- (WebTestRunner::WebPreferences::reset):
- (WebTestRunner):
- (WebTestRunner::WebPreferences::applyTo):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::preferences):
- (TestShell):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::localFileToDataURL):
- (WebViewHost::rewriteLayoutTestsURL):
- (WebViewHost::preferences):
- (WebViewHost::applyPreferences):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-12-04 Zan Dobersek <zandobersek@gmail.com>
-
- Many webkitpy unit tests can be run standalone, are executable
- https://bugs.webkit.org/show_bug.cgi?id=103900
-
- Reviewed by Eric Seidel.
-
- There's no need anymore to run unit tests in standalone mode as they
- are now handled by test-webkitpy in a formidable fashion. This makes
- it possible for this patch to remove the following unnecessary bits:
- - remove shebang lines from unit test files,
- - remove calls to unittest.main(),
- - make unit test files non-executable.
-
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
- (DiffParserTest.test_git_mnemonicprefix):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (GitTestWithMock.test_push_local_commits_to_server_without_username_and_with_password):
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest.test_should_build):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_chromium_xvfb_port):
- * Scripts/webkitpy/common/find_files_unittest.py:
- (TestWinNormalize.test_win):
- * Scripts/webkitpy/common/lru_cache_unittest.py:
- (LRUCacheTest.test_set_again):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_results_zip_url):
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- (test_keyring_without_git_repo_nor_keychain):
- * Scripts/webkitpy/common/net/omahaproxy_unittest.py:
- (OmahaProxyTest.test_get_revisions):
- * Scripts/webkitpy/common/net/unittestresults_unittest.py:
- * Scripts/webkitpy/common/newstringio_unittest.py:
- (NewStringIOTest.test_with):
- * Scripts/webkitpy/common/read_checksum_from_png_unittest.py:
- (ReadChecksumFromPngTest.test_read_checksum):
- * Scripts/webkitpy/common/system/file_lock_integrationtest.py:
- * Scripts/webkitpy/common/system/filesystem_mock_unittest.py:
- (MockFileSystemTest.test_normpath):
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- (RealFileSystemTest.test_sep):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py:
- (TestPlatformInfo.test_total_bytes_memory):
- * Scripts/webkitpy/common/system/zipfileset_unittest.py:
- (ZipFileSetTest.test_namelist):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- * Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py:
- (TestResultWriterTest.test_reftest_diff_image):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py:
- (JSONGeneratorTest.test_test_timings_trie):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (TestExpectationSerializationTests.test_string_whitespace_stripping):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (KeyCompareTest.test_test_key):
- * Scripts/webkitpy/layout_tests/port/builders_unittest.py:
- (BuildersTest.test_path_from_name):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidTwoPortsTest.test_options_with_two_ports):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortLoggingTest.test_check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- (ChromiumPortLoggingTest.test_check_sys_deps):
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.test_default_configuration__scripterror):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_start_actually_starts):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_get_from_builder_name):
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- * Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (PortTest.disabled_test_mac_lion):
- * Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py:
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (VerboseTest.test_log_args):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (test_details):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTestFactory.test_inspector_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_parse_args):
- * Scripts/webkitpy/style/checker_unittest.py:
- * Scripts/webkitpy/style/checkers/changelog_unittest.py:
- (ChangeLogCheckerTest.test_no_error):
- * Scripts/webkitpy/style/checkers/common_unittest.py:
- (TabCheckerTest.test_tab):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppCheckerTest.test_ne):
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- * Scripts/webkitpy/style/checkers/text_unittest.py:
- (TextCheckerTest.test_init):
- * Scripts/webkitpy/style/checkers/watchlist_unittest.py:
- * Scripts/webkitpy/style/checkers/xcodeproj_unittest.py:
- (XcodeProjectFileCheckerTest.test_detect_development_region):
- * Scripts/webkitpy/style/checkers/xml_unittest.py:
- (XMLCheckerTest.test_no_error):
- * Scripts/webkitpy/style/patchreader_unittest.py:
- * Scripts/webkitpy/test/finder_unittest.py:
- (FinderTest.test_paths):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_run):
- * Scripts/webkitpy/test/skip_unittest.py:
- (SkipTest.test_skip_if_true):
- * Scripts/webkitpy/thirdparty/__init___unittest.py:
- (ThirdpartyTest.test_imports):
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py:
- (TestTranslation.test_include_rewriting):
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (QueueEngineTest.tearDown):
- * Scripts/webkitpy/tool/grammar_unittest.py:
- (GrammarTest.test_join_with_separators):
- * Scripts/webkitpy/tool/mocktool_unittest.py:
- (MockOptionsTest.test_kwarg__set):
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- (test_command_help):
-
-2012-12-04 Zan Dobersek <zandobersek@gmail.com>
-
- Many webkitpy module files are executable, have shebang line
- https://bugs.webkit.org/show_bug.cgi?id=103985
-
- Reviewed by Dirk Pranke.
-
- Remove the executable bit from webkitpy module files that are
- unnecessarily executable. Remove the shebang line from webkitpy
- module files, they are of no use. Only non-third-party files are
- changed.
-
- * Scripts/webkitpy/bindings/main.py:
- * Scripts/webkitpy/common/config/watchlist:
- * Scripts/webkitpy/common/find_files.py:
- * Scripts/webkitpy/common/lru_cache.py:
- * Scripts/webkitpy/common/multiprocessing_bootstrap.py:
- * Scripts/webkitpy/common/net/file_uploader.py:
- * Scripts/webkitpy/common/newstringio.py:
- * Scripts/webkitpy/common/read_checksum_from_png.py:
- * Scripts/webkitpy/common/system/autoinstall.py:
- * Scripts/webkitpy/common/system/file_lock.py:
- * Scripts/webkitpy/common/system/file_lock_mock.py:
- * Scripts/webkitpy/common/version_check.py:
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- * Scripts/webkitpy/layout_tests/models/test_input.py:
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/base.py:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- * Scripts/webkitpy/layout_tests/port/http_lock.py:
- * Scripts/webkitpy/layout_tests/port/image_diff.py:
- * Scripts/webkitpy/layout_tests/port/mock_drt.py:
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- * Scripts/webkitpy/layout_tests/servers/http_server.py:
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- * Scripts/webkitpy/layout_tests/servers/websocket_server.py:
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- * Scripts/webkitpy/layout_tests/views/printing.py:
- * Scripts/webkitpy/performance_tests/perftest.py:
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- * Scripts/webkitpy/style/checkers/changelog.py:
- * Scripts/webkitpy/style/checkers/cpp.py:
- * Scripts/webkitpy/style/checkers/xcodeproj.py:
- * Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py:
- (main): There's no need to run this module in standalone because
- it's wrapped by the Tools/Scripts/update-webgl-conformance-tests script.
- * Scripts/webkitpy/tool/commands/upload.py:
- * Scripts/webkitpy/tool/comments.py:
- * Scripts/webkitpy/tool/main.py:
-
-2012-12-04 Ryosuke Niwa <rniwa@webkit.org>
-
- Add a Chromium Android Release (Perf) to the list of perf. bots.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2012-12-04 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Insert the jhbuild wrapper command at the beginning of the command list
- https://bugs.webkit.org/show_bug.cgi?id=103991
-
- Reviewed by Martin Robinson.
-
- Insert the Tools/gtk/run-with-jhbuild wrapper at the beginning of the
- command that's being formed in multiprocessing bootstrap. The wrapper is
- an executable Python script while the command being wrapped perhaps isn't
- and therefore requires the Python interpreter to be listed at the beginning
- of the command sublist that is then executed by the wrapper.
-
- Specifically, the webkitpy/layout_tests/run_webkit_tests.py module file
- is about to lose the executable bit and the Python-signaling shebang line.
- The Jhbuild wrapper simply executes the command that's passed, but that errs
- in this case unless the Python executable is executed and the module file
- is passed to it as an argument.
-
- * Scripts/webkitpy/common/multiprocessing_bootstrap.py:
- (run):
-
-2012-12-04 Peter Beverloo <peter@chromium.org>
-
- Add the Chromium Android Release (Perf) bot
- https://bugs.webkit.org/show_bug.cgi?id=103891
-
- Reviewed by Eric Seidel.
-
- Add configuration for the bot itself. It will be triggered by the Chromium
- Android Release builder. When running for Android, the DownloadAndPerfTest
- factory will also add the OutputAndroidDeviceStatus step.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (DownloadAndPerfTestFactory.__init__):
-
-2012-12-04 Peter Beverloo <peter@chromium.org>
-
- [Chromium] The ChromiumAndroidDriver constructor should not rely on adb being available
- https://bugs.webkit.org/show_bug.cgi?id=103758
-
- Reviewed by Eric Seidel.
-
- Lazily initialize the adb command parameters rather than initializing it in the
- constructor now that there is an assert if adb is not available on the system and
- we're not in a Chromium Android checkout.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._push_file_if_needed):
- (ChromiumAndroidDriver._run_adb_command):
- (ChromiumAndroidDriver.cmd_line):
- (ChromiumAndroidDriver._start_once):
- (ChromiumAndroidDriver._read_prompt):
- (ChromiumAndroidDriver):
- (ChromiumAndroidDriver._adb_command):
-
-2012-12-03 Ryosuke Niwa <rniwa@webkit.org>
-
- Dromaeo should report individual test result
- https://bugs.webkit.org/show_bug.cgi?id=99800
-
- Reviewed by Eric Seidel.
-
- Ignore subtest results spit out by Dromaeo tests.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest): Added a line to ignore.
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output_with_subtests): Added.
-
-2012-12-03 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed, functionality fix after r136437.
-
- Calling sys.exit actually raises a SystemExit exception that
- is then handled in the second block and causes the script to
- return an 'exceptional' exit code rather than the code presenting
- the number of failed tests.
-
- This is just a temporary fix to get the faultless bots green while
- they are unnecessarily red at the moment. The problem and a proper
- fix will be properly addressed.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
-
-2012-12-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r136460.
- http://trac.webkit.org/changeset/136460
- https://bugs.webkit.org/show_bug.cgi?id=103958
-
- This patch caused compile error when building DumpRenderTree
- (Requested by tasak on #webkit).
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest):
-
-2012-12-03 Scott Violet <sky@chromium.org>
-
- [chromium] Remove linux theme related files and switch to default
- https://bugs.webkit.org/show_bug.cgi?id=103897
-
- Reviewed by Darin Fisher.
-
- * Scripts/webkitpy/common/config/build_unittest.py:
- (ShouldBuildTest): linux->default
-
-2012-12-03 Roger Fong <roger_fong@apple.com>
-
- Disable WebKit2 API tests on Apple Windows port.
- https://bugs.webkit.org/show_bug.cgi?id=103929.
-
- Reviewed by Timothy Horton.
-
- * Scripts/run-api-tests:
- (runTestsBySuite):
-
-2012-12-03 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy's run_webkit_tests should initialize the printer earlier on
- https://bugs.webkit.org/show_bug.cgi?id=103661
-
- Reviewed by Eric Seidel.
-
- Initialize the printer before computing the derived options
- from the command line arguments, so that we can safely log from
- port methods.
-
- Also clean up a few miscellaneous lint warnings.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.path_to_adb):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.default_child_processes):
- (MacPort.sample_process):
- (MacPort.start_helper):
- (MacPort.stop_helper):
- (MacPort.nm_command):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_default_child_processes):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (_set_up_derived_options):
-
-2012-12-03 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: autoinstaller is failing on windows
- https://bugs.webkit.org/show_bug.cgi?id=103699
-
- Reviewed by Tony Chang.
-
- Attempt to fix the python autoinstaller to work for pylint on win32
- again ... it turns out one of the dependent packages contains
- a write-protected test file and windows will choke when it tries to move
- it into place. Fortunately we can just delete the file prior to
- installing it in the final location, but we have to jump through
- a couple of hoops to do so.
-
- Also, make sure that we're flattening nested module names like
- "logilab/common" into either safe basenames (logilab_common) or
- host-specific subdirs (logilab\common) as needed.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._url_downloaded_path):
- (AutoInstaller._install):
- (AutoInstaller.install):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_pylint):
-
-2012-12-03 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up exception propagation / handling for interrupts and early exits
- https://bugs.webkit.org/show_bug.cgi?id=103830
-
- Reviewed by Ojan Vafai.
-
- The code for propagating early exits out of the test run was
- convoluted and hard to follow. By adjusting the WorkerException to
- derive from BaseException rather than Exception (which is a fair
- way of representing an error that was really unexpected/unrecoverable
- anyway) and pushing the TestRunInterruptedException into the
- ResultSummary (which is also fair since it was more of a result
- than an exception) this allows us to consolidate and clean up
- a bunch of the try/catch logic and pass fewer state flags around.
-
- There are no real functional changes to this patch; there's an
- API change in that we stop exporting TestRunInterruptedException
- and WorkerException out of the Manager, and the existence of the
- MessagePool is now completely hidden.
-
- * Scripts/webkitpy/common/message_pool.py:
- (WorkerException):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- (Manager.run):
- * Scripts/webkitpy/layout_tests/controllers/manager_unittest.py:
- (ResultSummaryTest.summarized_results):
- * Scripts/webkitpy/layout_tests/models/result_summary.py:
- (ResultSummary.__init__):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (run):
- (main):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_exception_raised.of):
- (MainTest.test_exception_raised):
- (MainTest.test_run_force):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.test_print_unexpected_results.get_unexpected_results):
- (Testprinter):
-
-2012-12-03 Julien BRIANCEAU <jbrianceau@nds.com>
-
- Add Qt/SH4 build slave to build.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=103384
-
- Reviewed by Csaba Osztrogonác.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-12-03 Alexis Menard <alexis@webkit.org>
-
- Enable CSS3 background-position offset by default
- https://bugs.webkit.org/show_bug.cgi?id=103917
-
- Reviewed by Benjamin Poulain.
-
- Even though each port may enable or not the feature we still need
- to pass it at configure time otherwise it will be disabled.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-12-03 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-12-03 Laszlo Gombos <l.gombos@samsung.com>
-
- [CMake] Enable building WebKit2-only build for the EFL port
- https://bugs.webkit.org/show_bug.cgi?id=103820
-
- Reviewed by Gyuyoung Kim.
-
- Set ENABLE_WEBKIT2 to OFF if build-webkit was run with --no-webkit2.
- Never set ENABLE_WEBKIT in build-webkit. This will simplyfy invoking
- cmake directly. Initialize $cmakeArgs to avoid potential
- warnings when running the script.
-
- * Scripts/build-webkit:
-
-2012-12-03 Tommy Widenflycht <tommyw@google.com>
-
- Speech Recognition API: Update SpeechRecognitionEvent to match the specification
- https://bugs.webkit.org/show_bug.cgi?id=103407
-
- Reviewed by Kentaro Hara.
-
- Changing the mock to use the new results delivery API.
-
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
-
-2012-12-03 Alexis Menard <alexis@webkit.org>
-
- [Qt] Enable CSS3 background-position offsets by default.
- https://bugs.webkit.org/show_bug.cgi?id=103877
-
- Reviewed by Tor Arne Vestbø.
-
- Enable by default CSS3 background-position offsets.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-12-03 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL][WK2] Use float variable for zoom levels for MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=103863
-
- Reviewed by Gyuyoung Kim.
-
- Use float instead of int for zoomLevels variables for a clearer expression
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-12-02 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL][WK2] Add support for a zoom level setting to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=99285
-
- Reviewed by Gyuyoung Kim.
-
- Add support for a zoom level setting to MiniBrowser.
- Shortcuts for setting operations are same as common browsers:
- Ctrl + '+' to zoom in, Ctrl + '-' to zoom out and Ctrl + '0' to zoom to default.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-12-02 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL][WK2] ECORE_GETOPT_VALUE_BOOL need to be used for Eina_Bool
- https://bugs.webkit.org/show_bug.cgi?id=103835
-
- Reviewed by Kentaro Hara.
-
- Because legacy_behavior_enabled is Eina_Bool, ECORE_GETOPT_VALUE_BOOL need to be used
-
- * MiniBrowser/efl/main.c:
- (elm_main):
-
-2012-12-02 Mike West <mkwst@chromium.org>
-
- Garden-o-matic shouldn't die when blank JSON results are received.
- https://bugs.webkit.org/show_bug.cgi?id=103838
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- If the JSONP string doesn't contain '(' or ')', return an empty object.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
- Check that this behavior stays in place.
-
-2012-12-02 Eric Seidel <eric@webkit.org>
-
- run-perf-tests --profile should use iprofiler instead of instruments on Mac
- https://bugs.webkit.org/show_bug.cgi?id=103765
-
- Unreviewed. Updating the unittests after my previous change.
-
- * Scripts/webkitpy/common/system/profiler_unittest.py:
- (ProfilerFactoryTest.test_basic):
-
-2012-12-02 Julie Parent <jparent@chromium.org>
-
- Remove dead code in flakiness dashboard for obsolete buildDir option
- https://bugs.webkit.org/show_bug.cgi?id=103792
-
- Reviewed by Dirk Pranke.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (initBuilders):
-
-2012-12-02 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: clean up logic for retrying failed tests a bit
- https://bugs.webkit.org/show_bug.cgi?id=103829
-
- Reviewed by Ojan Vafai.
-
- The code for determining when to retry test failures and
- show the results.html file was awkward and could stand some
- cleaning up. This patch should have no functional changes.
-
- The routine called _get_failures() returned a dict of test names
- to failure types, but we only ever used the names, so I've converted
- it to return a list (and renamed it); also, the show_results_html()
- file was calling that routine to figure out if anything failed, when
- the information was already in the result_summary (as either
- unexpected_results or total_failures), so we were doing unnecessary work.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager.__init__):
- (Manager.run):
- (Manager._run_tests):
- (Manager._failed_test_names):
- (Manager._copy_results_html_file):
-
-2012-12-02 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove unused methods in manager.py
- https://bugs.webkit.org/show_bug.cgi?id=103828
-
- Reviewed by Eric Seidel.
-
- These two methods weren't being called by anything and were no
- longer needed.
-
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._get_failures):
- (Manager._upload_json_files):
-
-2012-12-02 Laszlo Gombos <l.gombos@samsung.com>
-
- Correct the spelling of the cmakeargs argument
- https://bugs.webkit.org/show_bug.cgi?id=103814
-
- Reviewed by Darin Adler.
-
- The script expects cmakeargs (plural), so lets get the
- documentation of the script report the same.
-
- * Scripts/build-webkit:
-
-2012-12-02 Mike West <mkwst@chromium.org>
-
- [gtk] Enable the CSP_NEXT runtime flag.
- https://bugs.webkit.org/show_bug.cgi?id=103810
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (resetDefaultsToConsistentValues):
- Turn on the CSP_NEXT runtime flag when running tests under GTK.
-
-2012-12-02 Eric Seidel <eric@webkit.org>
-
- run-perf-tests --profile should use iprofiler instead of instruments on Mac
- https://bugs.webkit.org/show_bug.cgi?id=103765
-
- Reviewed by Ryosuke Niwa.
-
- Stephanie pointed out that iprofiler is the newer command-line interface
- to replace /usr/bin/instruments in Instruments 4 (which according to the
- interblags is supported on everything since 10.6.6), so I've moved --profile
- to use iprofiler on Mac.
-
- I also made the IProfiler class wait for iprofiler to complete so that
- iprofiler won't continue running after run-perf-tests is complete (and
- spam over the top of your shell output).
-
- There are a couple of "got-chas" to this approach:
- 1. iprofiler will ask for your password the first time you run it, which may
- cause your first test to fail. /usr/bin/instruments doesn't seem to do that.
- 2. iprofiler has nice (but kinda awkward for our purposes) support for separate
- directory and basename arguments, making IProfiler a somewhat awkward
- baseclass of SingleFileOutputProfiler
-
- I suspect we'll iterate from here. It does seem slightly faster than
- /usr/bin/instruments was.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (IProfiler):
- (IProfiler.__init__):
- (IProfiler.attach_to_pid):
-
-2012-12-02 Yongjun Zhang <yongjun_zhang@apple.com>
-
- Need a method to close all idle localstorage databases immediately.
- https://bugs.webkit.org/show_bug.cgi?id=103469
-
- Reviewed by David Kilzer.
-
- Add an JS method to TestRunner, to enable testing closing idle local storage databases in
- DumpRenderTree layout tests.
-
- * DumpRenderTree/TestRunner.cpp:
- (closeIdleLocalStorageDatabasesCallback):
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::closeIdleLocalStorageDatabases):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::closeIdleLocalStorageDatabases):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::closeIdleLocalStorageDatabases):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::closeIdleLocalStorageDatabases):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (TestRunner::closeIdleLocalStorageDatabases):
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- (TestRunner::closeIdleLocalStorageDatabases):
-
-2012-12-02 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][WK2] MiniBrowser should have a legacy mode
- https://bugs.webkit.org/show_bug.cgi?id=103679
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add an option to start MiniBrowser in legacy mode.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
-
-2012-12-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r136236.
- http://trac.webkit.org/changeset/136236
- https://bugs.webkit.org/show_bug.cgi?id=103833
-
- [chromium] Flakey crashes in SpeechRecognitionEvent::emma
- during GC. (Requested by mkwst on #webkit).
-
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
-
-2012-12-01 Zan Dobersek <zandobersek@gmail.com>
-
- [XvfbDriver] XvfbDriverTest.test_next_free_display is flaky on builders using XvfbDriver
- https://bugs.webkit.org/show_bug.cgi?id=103806
-
- Reviewed by Dirk Pranke.
-
- There are occasional mishaps on builders where XvfbDriver doesn't properly
- clean up the Xvfb instance it was managing so the related guard lock files
- are still existing when the webkitpy unit tests are run. This can cause failures
- in XvfbDriverTest.test_next_free_display as the test tries to acquire displays
- with a specific number but is unable to due to the stale locks.
-
- The solution to this is to use MockFileLock when inside unit test. This is achievable
- by creating a file lock through the SystemHost instance connected to the Port object,
- the latter available to the Driver.
-
- * Scripts/webkitpy/common/system/file_lock_mock.py:
- (MockFileLock.acquire_lock): Return True to signal lock acquiring succeeded.
- (MockFileLock.release_lock): Return True to signal lock releasing succeeded.
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._next_free_display): Create the file lock through a mockable way.
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.test_next_free_display): Enable back the unit test.
-
-2012-12-01 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] A11y tests in WK2 report badly-formatted AX roles
- https://bugs.webkit.org/show_bug.cgi?id=102947
-
- Reviewed by Xan Lopez.
-
- As in DRT, convert the ATK accessibility roles to corresponding AXRoles.
- These are expected in both tests and their baselines.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::roleToString):
- (WTR):
- (WTR::AccessibilityUIElement::role):
-
-2012-11-30 Mike West <mkwst@chromium.org>
-
- CSP 1.1: Make the CSP_NEXT flag runtime enabled.
- https://bugs.webkit.org/show_bug.cgi?id=103652
-
- Reviewed by Adam Barth.
-
- Ensures that the new SecurityPolicy runtime flag is enabled for Chromium's tests.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-11-30 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Removed temporary debugging change from DRT (r136300).
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
-
-2012-11-30 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Temporary change to DRT for debugging purposes.
-
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (dump):
-
-2012-11-29 Tommy Widenflycht <tommyw@google.com>
-
- Speech Recognition API: Update SpeechRecognitionEvent to match the specification
- https://bugs.webkit.org/show_bug.cgi?id=103407
-
- Reviewed by Adam Barth.
-
- Changing the mock to use the new results delivery API.
-
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
-
-2012-11-30 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>
-
- [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
- https://bugs.webkit.org/show_bug.cgi?id=99314
-
- Reviewed by Tor Arne Vestbø.
-
- This big change separates QtWebKit into QtWebKit and QtWebKitWidgets as
- shared libraries.
-
- It's a big refactoring that mostly involves moving WebCore dependent
- code into QtWebKit and accessing it through exported QWebFrameAdapter
- and QWebPageAdapter classes.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump): Adapt to internal API changes.
- * MiniBrowser/qt/MiniBrowser.pro:
- * Scripts/webkitpy/style/checker.py: Adapt Qt exceptions to new paths.
- * Scripts/webkitpy/style/checker_unittest.py:
- (GlobalVariablesTest.test_path_rules_specifier):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/webkit_modules.prf:
- * qmake/mkspecs/modules/webkitwidgets.prf: Removed.
-
-2012-11-30 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed trivial fix.
-
- Add empty.cpp back, it was removed accidentally by r129092.
-
- * qmake/config.tests/gccdepends/empty.cpp: Added.
-
-2012-11-30 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Add support for prepare_docs and generate_docs
-
- Follow-up to changes in Qt in how documentation is built.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-11-30 Zan Dobersek <zandobersek@gmail.com>
-
- Finally remove webkitpy.common.system.deprecated_logging
- https://bugs.webkit.org/show_bug.cgi?id=103624
-
- Reviewed by Adam Barth.
-
- Remove the deprecated logging module and its unit tests now that such logging is not
- used anymore in webkitpy.
-
- The tee and OutputTee classes are moved into a new module, webkitpy.common.system.outputtee.
- The tee class is renamed to Tee to conform with the usual guidelines.
-
- Only unit test for the Tee class is currently provided as the OutputTee is not currently
- using the webkitpy Filesystem abstraction that would make its functionality testable.
-
- * Scripts/webkitpy/common/system/executive.py: tee (now Tee) is now in a new module.
- (Executive.run_and_throw_if_fail):
- * Scripts/webkitpy/common/system/outputtee.py: Renamed from Tools/Scripts/webkitpy/common/system/deprecated_logging.py.
- (Tee):
- (Tee.__init__):
- (Tee.write):
- (OutputTee):
- (OutputTee.__init__):
- (OutputTee.add_log):
- (OutputTee.remove_log):
- (OutputTee._open_log_file):
- (OutputTee._tee_outputs_to_files):
- * Scripts/webkitpy/common/system/outputtee_unittest.py: Renamed from Tools/Scripts/webkitpy/common/system/deprecated_logging_unittest.py.
- (SimpleTeeTest):
- (SimpleTeeTest.test_simple_tee):
- * Scripts/webkitpy/tool/bot/queueengine.py: OutputTee is now in a new module.
- * Scripts/webkitpy/webkitpy.pyproj: Remove the deprecated_logging module and related unit test file.
-
-2012-11-30 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Add support for PlatformWebView::simulateRightClick() in TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=103634
-
- Reviewed by Gyuyoung Kim.
-
- Add support for PlatformWebView::simulateRightClick() and enable
- WebKit2 API test HitTestResultNodeHandle.
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::simulateRightClick):
- (TestWebKitAPI):
-
-2012-11-30 Mihai Maerean <mmaerean@adobe.com>
-
- [CSSRegions] when WebKit uses V8, there should be a single variable to store if the CSS Regions feature is enabled
- https://bugs.webkit.org/show_bug.cgi?id=101192
-
- Reviewed by Hajime Morita.
-
- Removed the CSS Regions flag in Settings and switched to using the new flag I have added in RuntimeEnabledFeatures.
-
- Tests: No new tests because there is no functional change.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-11-29 Rafael Weinstein <rafaelw@chromium.org>
-
- [HTMLTemplateElement] Add feature flag
- https://bugs.webkit.org/show_bug.cgi?id=103694
-
- Reviewed by Adam Barth.
-
- This flag will guard the implementation of the HTMLTemplateElement.
- http://dvcs.w3.org/hg/webcomponents/raw-file/tip/spec/templates/index.html
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-29 Dirk Pranke <dpranke@chromium.org>
-
- Ignore errors when removing directories on win32 during autoinstall
- https://bugs.webkit.org/show_bug.cgi?id=103699
-
- Unreviewed, build fix.
-
- I think this will work on win32; if not, I'll have to actually
- reproduce this :). The problem is that the logilab files
- appear to contain a write-protected file, and deleting those
- is problematic on windows.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._install):
- (AutoInstaller.install):
-
-2012-11-29 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: autoinstaller is failing on windows
- https://bugs.webkit.org/show_bug.cgi?id=103699
-
- Unreviewed, build fix.
-
- We're attempting to create directories with forward slashes in them;
- this is a no-no on windows.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._create_scratch_directory_inner):
-
-2012-11-29 Dirk Pranke <dpranke@chromium.org>
-
- Fix python unit tests after r136158 (android port tests failing)
- https://bugs.webkit.org/show_bug.cgi?id=103581
-
- Unreviewed, build fix.
-
- The unit tests apparently weren't ran for this patch; we failed
- to update the mock executive calls out to adb to determine various
- aspects of the environment, and were failing to create drivers.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (MockRunCommand.mock_run_command_fn):
-
-2012-11-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r136175 and r136177.
- http://trac.webkit.org/changeset/136175
- http://trac.webkit.org/changeset/136177
- https://bugs.webkit.org/show_bug.cgi?id=103683
-
- Changes did not correct Windows build. (Requested by bfulgham
- on #webkit).
-
- * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp:
-
-2012-11-29 Brent Fulgham <bfulgham@webkit.org>
-
- [Windows, WinCairo] Unreviewed build correction. Correct debug
- build case on build machine.
-
- * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp:
-
-2012-11-29 Brent Fulgham <bfulgham@webkit.org>
-
- [Windows, WinCairo] Unreviewed build correction. Hide the
- unexported 'notSolidColor' symbol when testing against
- the BitmapImage class to avoid having to deal with a
- debug-only symbol in the Windows export definition file.
-
- * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp:
-
-2012-11-29 Peter Beverloo <peter@chromium.org>
-
- run-perf-tests --chromium-android should not require adb in my path
- https://bugs.webkit.org/show_bug.cgi?id=103581
-
- Reviewed by Eric Seidel.
-
- Remove the need to have "adb" available in the path for Layout and Performance
- tests. We'll determine the versions of the "adb" version in path (if any) and
- the one provided in the Chromium Android checkout. Unless the "adb" available
- in the path is newer, the provided version will be used.
-
- Some other minor nits addressed:
- - The path_to_forwarder/path_to_md5sum should not be in the "private overrides"
- section, as they're not overriding anything and are used by the driver.
- - Make _restart_adb_as_root slightly more robust by waiting for the device
- to come back online regardless of the output.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.__init__):
- (ChromiumAndroidPort.check_build):
- (ChromiumAndroidPort.path_to_adb):
- (ChromiumAndroidPort):
- (ChromiumAndroidPort.path_to_forwarder):
- (ChromiumAndroidPort.path_to_md5sum):
- (ChromiumAndroidPort._path_to_helper):
- (ChromiumAndroidPort._determine_adb_version):
- (ChromiumAndroidPort._get_devices):
- (ChromiumAndroidDriver.__init__):
- (ChromiumAndroidDriver._setup_md5sum_and_push_data_if_needed):
- (ChromiumAndroidDriver._push_executable):
- (ChromiumAndroidDriver._restart_adb_as_root):
-
-2012-11-29 Martin Robinson <mrobinson@igalia.com>
-
- [GTK] [WebKit2] Embed the HTTP authentication dialog into the WebView
- https://bugs.webkit.org/show_bug.cgi?id=103277
-
- Reviewed by Carlos Garcia Campos.
-
- Skip the new WebKit2GtkAuthenticationDialog files so that they are not processed
- during gtkdoc generation.
-
- * gtk/generate-gtkdoc:
- (get_webkit2_options):
-
-2012-11-29 Eric Seidel <eric@webkit.org>
-
- run-perf-tests --chromium-android fails due to Skia INFO logging
- https://bugs.webkit.org/show_bug.cgi?id=103585
-
- Reviewed by Adam Barth.
-
- Ignore all INFO logging from Chromium code.
- Also added some basic testing of the ignored-stderr lines code.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_ignored_stderr_lines):
-
-2012-11-29 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Add support for PlatformWebView::simulateMouseMove() in TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=103252
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for PlatformWebView::simulateMouseMove() and enable
- WebKit2 API test MouseMoveAfterCrash.
-
- * TestWebKitAPI/PlatformEfl.cmake: Enable MouseMoveAfterCrash API
- test.
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::onWebProcessCrashed): Handle 'webprocess,crashed' signal
- to prevent loading an error page since the test case is reloading actual
- page after web process has terminated and recovered.
- (TestWebKitAPI):
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::simulateMouseMove): Implemented.
-
-2012-11-29 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Fix installation of QtWebProcess binary
- https://bugs.webkit.org/show_bug.cgi?id=101735
-
- Reviewed by Simon Hausmann.
-
- Add config test to detect the availability of support
- for "program executables" in Qt (libexec).
-
- This test can be removed after the Qt5 release.
-
- * Tools.pro:
- * qmake/mkspecs/features/features.prf:
- * qmake/config.tests/libexecdir/libexecdir.cpp:
- * qmake/config.tests/libexecdir/libexecdir.pro:
-
-2012-11-29 Eric Seidel <eric@webkit.org>
-
- run-perf-tests does not work when the layout test directory does not exist
- https://bugs.webkit.org/show_bug.cgi?id=103572
-
- Reviewed by Ryosuke Niwa.
-
- Make sure that Profiler() calls maybe_make_directory for the output_dir
- before ever using it. It's a little awkward to create the directory
- from the constructor, but its simplest that way as the various subclasses
- all use the directory at different times.
-
- Since this required having a filesystem in Profiler (and I didn't want
- to grab inside Workspace to get one), I just made Profiler expect a
- SystemHost instead of a separate filesystem, executive and workspace.
-
- * Scripts/webkitpy/common/system/profiler.py:
- (ProfilerFactory.create_profiler):
- (Profiler.__init__):
- (SingleFileOutputProfiler.__init__):
- (GooglePProf.__init__):
- (GooglePProf.profile_after_exit):
- (Instruments.__init__):
- (Instruments.attach_to_pid):
- * Scripts/webkitpy/common/system/profiler_unittest.py:
- (ProfilerFactoryTest.test_basic):
-
-2012-11-28 Vivek Galatage <vivek.vg@samsung.com>
-
- Adding secondary email id
- https://bugs.webkit.org/show_bug.cgi?id=103594
-
- Unreviewed. Adding secondary email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-28 Kent Tamura <tkent@chromium.org>
-
- garden-o-matic: Use indeterminate <progress> in the status area
- https://bugs.webkit.org/show_bug.cgi?id=103494
-
- Reviewed by Adam Barth.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui.js:
- Wrap the "Processing..." message with an indeterminate progress bar.
- We keep the message as a fallback content.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/ui_unittests.js:
- Follow the above change.
-
-2012-11-28 Nima Ghanavatian <nghanavatian@rim.com>
-
- Adding Nima Ghanavatian to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=103533
-
- Reviewed by Rob Buis.
-
- Adding myself to committers.py as a Committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-28 peavo@outlook.com <peavo@outlook.com>
-
- [WinCairo] Crash when requesting favicon.
- https://bugs.webkit.org/show_bug.cgi?id=102689
-
- Reviewed by Brent Fulgham.
-
- * TestWebKitAPI/Tests/WebCore/win: Added.
- * TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp: Added.
- (TestWebKitAPI::BitmapImageTest::BitmapImageTest): Allocate frame in constructor.
- (TestWebKitAPI::BitmapImageTest::frameCount): Override frameCount() method.
- (TestWebKitAPI::TEST): Added new test.
- * TestWebKitAPI/config.h: Make sure defines are correct for WinCairo.
- * TestWebKitAPI/win/TestWebKitAPI.vcproj: Added new test.
-
-2012-11-28 Eric Seidel <eric@webkit.org>
-
- run-perf-tests should have a --profile option for easy profiling
- https://bugs.webkit.org/show_bug.cgi?id=99517
-
- Reviewed by Adam Barth.
-
- This is a very basic implementation which works on Mac and Linux
- and makes it trivial for anyone to profile a PerformanceTest.
-
- Currently it's not "hard" to profile a PerformanceTest
- but lowering the barriers to entry here allows all of us to focus
- less on the tools and more on the code.
-
- This also paves the way for adding easy mobile-profiling (e.g. chromium-android)
- which is actually "hard", and this option will make much easier.
-
- * Scripts/webkitpy/common/system/profiler.py: Added.
- (ProfilerFactory):
- (ProfilerFactory.create_profiler):
- (Profiler):
- (Profiler.__init__):
- (Profiler.adjusted_environment):
- (Profiler.attach_to_pid):
- (Profiler.did_stop):
- (SingleFileOutputProfiler):
- (SingleFileOutputProfiler.__init__):
- (GooglePProf):
- (GooglePProf.__init__):
- (GooglePProf.adjusted_environment):
- (GooglePProf.did_stop):
- (Instruments):
- (Instruments.__init__):
- (Instruments.attach_to_pid):
- * Scripts/webkitpy/common/system/profiler_unittest.py: Added.
- (ProfilerFactoryTest):
- (ProfilerFactoryTest.test_basic):
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (Driver.__init__):
- (Driver._start):
- (Driver.stop):
- (Driver.cmd_line):
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.parse_output):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (MainTest.test_parse_output):
- (MainTest.test_parse_output_with_failing_line):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner.run):
-
-2012-11-28 Zan Dobersek <zandobersek@gmail.com>
-
- Remove deprecated logging usage from QueueEngine
- https://bugs.webkit.org/show_bug.cgi?id=103532
-
- Reviewed by Dirk Pranke.
-
- Replace usage of deprecated logging in webkitpy.tool.bot.queueengine with
- logging through the Logger object. The unit test is modified to reflect
- these changes.
-
- After these changes the deprecated logging (i.e. logging to stderr) is not
- used anymore through webkitpy and can be removed.
-
- * Scripts/webkitpy/tool/bot/queueengine.py:
- (QueueEngine.exit_after_handled_error):
- (QueueEngine.run):
- (QueueEngine._stopping):
- (QueueEngine._sleep):
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (QueueEngineTest._run_engine):
-
-2012-11-28 Nate Chapin <japhet@chromium.org>
-
- Move empty loading to DocumentLoader, simplify FrameLoader::init()
- https://bugs.webkit.org/show_bug.cgi?id=101512
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad): This function doesn't play nicely with empty urls and incorrectly
- interprets them as a non-empty load. This change is required for
- http/tests/navigation/new-window-redirect-history.html to continue to pass in chromium.
- * TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp: This test relies on a callback that no longer
- is sent for about:blank loads. Hook into didFinishLoadForFrame() instead.
- (TestWebKitAPI::didFinishLoadForFrame):
- (TestWebKitAPI::TEST):
-
-2012-11-28 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Allow plugins to opt-in to receive synthetic mouse events out of touch events.
- https://bugs.webkit.org/show_bug.cgi?id=103092
-
- Reviewed by Tony Chang.
-
- Update the test web-plugin to be able to opt-in to receive synthesized mouse events created
- from touch events.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (parseTouchEventRequestType):
- (TestWebPlugin::TestWebPlugin):
- (TestWebPlugin::initialize):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
-
-2012-11-28 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Add support for PlatformWebView::simulateSpacebarKeyPress() in TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=103123
-
- Reviewed by Laszlo Gombos.
-
- Add support for PlatformWebView::simulateSpacebarKeyPress().
- This functionality is needed by WebKit2 API test MouseMoveAfterCrash
- which is going to be unskipped in bug #103252.
-
- * TestWebKitAPI/efl/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::sleep):
- * TestWebKitAPI/efl/PlatformWebView.cpp: Use usleep() instead of
- sleep().
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress):
- (TestWebKitAPI):
-
-2012-11-28 Yael Aharon <yael.aharon@intel.com>
-
- Minor cleanup in TestInvocation
- https://bugs.webkit.org/show_bug.cgi?id=103512
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove a function declaration that is not defined and not used.
- Fix spelling error in m_webProcessIsUnresponsive.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-11-28 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Unreviewed. Use my personal email as bugzilla email.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-28 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-26 Andrey Adaikin <aandrey@chromium.org>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-28 Tommy Widenflycht <tommyw@google.com>
-
- Add basic implementation for MediaStreamAudioDestinationNode
- https://bugs.webkit.org/show_bug.cgi?id=101815
-
- Reviewed by Chris Rogers.
-
- Adds a bit of code that exercises the WebKit API.
-
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- (MockWebMediaStreamSourceConsumer):
- (MockWebMediaStreamSourceConsumer::~MockWebMediaStreamSourceConsumer):
- (MockWebMediaStreamCenter::didCreateMediaStream):
-
-2012-11-28 Matt Falkenhagen <falken@chromium.org>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-27 Li Yin <li.yin@intel.com>
-
- Unreviewed. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-27 Christophe Dumez <christophe.dumez@intel.com>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-27 Vivek Galatage <vivek.vg@samsung.com>
-
- Unreviewd. Adding myself to committers list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-27 Tony Chang <tony@chromium.org>
-
- Bring back partytime!
- https://bugs.webkit.org/show_bug.cgi?id=103466
-
- Reviewed by Adam Barth.
-
- "code 404, message Unknown function images/partytime_gif" since we didn't
- allow .gif or .png files to be served.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler):
-
-2012-11-27 Adam Barth <abarth@webkit.org>
-
- run-perf-tests fails on Android because of stderr output
- https://bugs.webkit.org/show_bug.cgi?id=103462
-
- Reviewed by Ryosuke Niwa.
-
- The chromium-android port produces some stderr output that causes
- run-perf-tests to get sad and not record the results of the performance
- test. This patch teaches run-perf-test to ignore this output much in
- the same way that it currently ignores some stdout messages.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTest.run):
- (PerfTest._should_ignore_line):
- (PerfTest):
- (PerfTest._should_ignore_line_in_stderr):
- (PerfTest._filter_stderr):
- (PerfTest._should_ignore_line_in_parser_test_result):
-
-2012-11-27 Tony Chang <tony@chromium.org>
-
- Fix garden-o-matic for non-chromium ports
- https://bugs.webkit.org/show_bug.cgi?id=103458
-
- Reviewed by Adam Barth.
-
- I was getting a 403 error when trying to select any non-chromium port.
-
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- (ReflectionHandler._handle_request): Use the path without query params.
-
-2012-11-27 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][WK2] 3D pixel tests are failing
- https://bugs.webkit.org/show_bug.cgi?id=102833
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Generate a snapshot of the view in the UI process instead of the web process.
- We have to use Texture Mapper in order to correctly paint 3D transforms etc.
-
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::writeFunction):
- (WTR::paintRepaintRectOverlay):
- (WTR):
- (WTR::TestInvocation::forceRepaintDoneCallback):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2012-11-27 Adam Barth <abarth@webkit.org>
-
- Make it possible to run performance tests on Chromium Android
- https://bugs.webkit.org/show_bug.cgi?id=103268
-
- Reviewed by Ryosuke Niwa.
-
- Based on a patch by Peter Beverloo.
-
- This patch (almost) makes it possible to run WebKit performance tests
- on the Chromium port for Android. There are a few things I had to do
- in order to make this happen:
-
- 1) The worker number when creating a driver for a port is zero-based
- for layout tests and elsewhere. Android uses this to determine
- which device it has to run on, so make it zero based for performance
- tests as well.
-
- 2) Tests aren't available on the Android device, so we start an HTTP
- server that serves the tests to the device or emulator.
-
- The one shortcoming of this patch is that chromium-android produces
- some stderr output that confuses run-perf-tests. I'll address that
- issue in a subsequent CL. This patch also depends on
- https://codereview.chromium.org/11416182 in order to work.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.start_http_server):
- (ChromiumAndroidDriver._command_from_driver_input):
- * Scripts/webkitpy/performance_tests/perftest.py:
- (ReplayPerfTest.prepare):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- (PerfTestsRunner._parse_args):
- (PerfTestsRunner._start_servers):
- (PerfTestsRunner):
- (PerfTestsRunner._stop_servers):
- (PerfTestsRunner.run):
- (PerfTestsRunner._run_tests_set):
-
-2012-11-27 Zan Dobersek <zandobersek@gmail.com>
-
- Remove use of deprecated logging from webkitpy.common and webkitpy.layout_tests
- https://bugs.webkit.org/show_bug.cgi?id=103408
-
- Reviewed by Dirk Pranke.
-
- Remove the use of the deprecated log and error methods by replacing them with
- logging through Python's logging.Logger objects.
-
- This patch covers such changes in webkitpy.common and webkitpy.layout_tests and also
- updates any affected unit test.
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry._parse_entry):
- * Scripts/webkitpy/common/checkout/checkout.py:
- * Scripts/webkitpy/common/checkout/checkout_unittest.py:
- (CheckoutTest.test_apply_patch):
- * Scripts/webkitpy/common/checkout/deps_mock.py:
- (MockDEPS.write_variable):
- * Scripts/webkitpy/common/checkout/scm/detection.py:
- (SCMDetector.default_scm):
- * Scripts/webkitpy/common/checkout/scm/detection_unittest.py:
- (SCMDetectorTest.test_detect_scm_system):
- * Scripts/webkitpy/common/checkout/scm/git.py:
- (Git._check_git_architecture):
- (Git._commit_on_branch):
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.ensure_clean_working_directory):
- (SCM.ensure_no_local_commits):
- (SCM.will.commit_locally_with_message):
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVN.apply_reverse_diff):
- * Scripts/webkitpy/common/net/bugzilla/attachment.py:
- (Attachment._validate_flag_value):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla.py:
- (Bugzilla._fetch_bug_page):
- (Bugzilla.bug_id_for_attachment_id):
- (Bugzilla.authenticate):
- (Bugzilla._commit_queue_flag):
- (Bugzilla.add_attachment_to_bug):
- (Bugzilla.add_patch_to_bug):
- (Bugzilla.create_bug):
- (Bugzilla.clear_attachment_flags):
- (Bugzilla.set_flag_on_attachment):
- (Bugzilla.obsolete_attachment):
- (Bugzilla.add_cc_to_bug):
- (Bugzilla.post_comment_to_bug):
- (Bugzilla.close_bug_as_fixed):
- (Bugzilla.reassign_bug):
- (reopen_bug):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py:
- (MockBugzilla.create_bug):
- (MockBugzilla.reassign_bug):
- (MockBugzilla.set_flag_on_attachment):
- (MockBugzilla.post_comment_to_bug):
- (MockBugzilla.add_attachment_to_bug):
- (MockBugzilla.add_patch_to_bug):
- (MockBugzilla.reopen_bug):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (test_add_cc_to_bug):
- (_assert_reopen):
- (test_reopen_bug):
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- (MockBuilder.force_build):
- * Scripts/webkitpy/common/net/credentials.py:
- (Credentials._run_security_tool):
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- (_assert_security_call):
- * Scripts/webkitpy/common/net/irc/irc_mock.py:
- (MockIRC.post):
- (MockIRC.disconnect):
- * Scripts/webkitpy/common/net/irc/ircproxy.py:
- (IRCProxy.__init__):
- (IRCProxy.disconnect):
- * Scripts/webkitpy/common/net/irc/ircproxy_unittest.py:
- (IRCProxyTest.test_trivial):
- * Scripts/webkitpy/common/net/layouttestresults.py:
- (ORWTResultsHTMLParser._failures_from_fail_row):
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- (test_failures_from_fail_row):
- * Scripts/webkitpy/common/net/networktransaction.py:
- * Scripts/webkitpy/common/net/resultsjsonparser.py:
- (JSONTestResult._tokenize):
- (JSONTestResult._failure_types_from_actual_result):
- * Scripts/webkitpy/common/net/statusserver.py:
- (StatusServer.update_status):
- (StatusServer.update_svn_revision):
- * Scripts/webkitpy/common/net/statusserver_mock.py:
- (MockStatusServer.release_work_item):
- (MockStatusServer.update_work_items):
- (MockStatusServer.submit_to_ews):
- (MockStatusServer.update_status):
- * Scripts/webkitpy/common/net/unittestresults.py:
- (UnitTestResults.results_from_string):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.running_pids):
- (MockExecutive.run_and_throw_if_fail):
- (MockExecutive.run_command):
- (MockExecutive.popen):
- * Scripts/webkitpy/common/system/user_mock.py:
- (MockUser.confirm):
- (MockUser.open_url):
- * Scripts/webkitpy/common/system/workspace_unittest.py:
- (WorkspaceTest.test_create_zip):
- (WorkspaceTest.test_create_zip_exception):
- * Scripts/webkitpy/common/watchlist/watchlist_mock.py:
- (MockWatchList.determine_cc_and_messages):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_setup_environ_for_server_register_cygwin):
- * Scripts/webkitpy/layout_tests/port/efl_unittest.py:
- (EflPortTest.test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_build_driver):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest.test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.assertDriverStartSuccessful):
- (XvfbDriverTest.test_start_no_pixel_tests):
- (XvfbDriverTest.test_start_pixel_tests):
- (XvfbDriverTest.test_start_arbitrary_worker_number):
- (XvfbDriverTest.test_start_next_worker):
- (XvfbDriverTest.test_stop):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:
- (TestLayoutTestApacheHttpd.test_start_cmd):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_run_test_pause_before_testing):
- (test_run_memory_test):
- (_test_run_with_json_output):
- (test_run_respects_no_results):
- (test_run_generates_and_show_results_page):
- (test_run_respects_no_show_results):
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- (FeedersTest.test_commit_queue_feeder):
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- (FlakyTestReporterTest.test_create_bug_for_flaky_test):
- (test_report_flaky_tests_creating_bug):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_rollout_updates_working_copy):
- * Scripts/webkitpy/tool/bot/ircbot_unittest.py:
- (IRCBotTest.test_exception_during_command):
- (IRCBotTest.test_hi):
- (IRCBotTest.test_help):
- (IRCBotTest.test_restart):
- (IRCBotTest.test_rollout):
- (IRCBotTest.test_revert):
- (IRCBotTest.test_roll_chromium_deps):
- (IRCBotTest.test_roll_chromium_deps_to_lkgr):
- (IRCBotTest.test_multi_rollout):
- (IRCBotTest.test_rollout_with_r_in_svn_revision):
- (IRCBotTest.test_multi_rollout_with_r_in_svn_revision):
- (IRCBotTest.test_rollout_bananas):
- (IRCBotTest.test_rollout_invalidate_revision):
- (IRCBotTest.test_rollout_invalidate_reason):
- (test_multi_rollout_invalidate_reason):
- (test_rollout_no_reason):
- (test_multi_rollout_no_reason):
- * Scripts/webkitpy/tool/bot/sheriff_unittest.py:
- (SheriffTest.test_post_blame_comment_on_bug):
- * Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py:
- (ApplyWatchListLocalTest.test_args_parsing):
- (test_args_parsing_with_bug):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (test_land_cowboy):
- (test_check_style):
- (test_create_rollout):
- (test_create_rollout_resolved):
- (test_rollout):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (AbstractEarlyWarningSystemTest.test_failing_tests_message):
- (EarlyWarningSytemTest._default_expected_logs):
- (EarlyWarningSytemTest._test_builder_ews):
- (EarlyWarningSytemTest._test_testing_ews):
- * Scripts/webkitpy/tool/commands/openbugs_unittest.py:
- (OpenBugsTest.test_args_parsing):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (QueryCommandsTest.test_bugs_to_commit):
- (QueryCommandsTest.test_patches_in_commit_queue):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (FeederQueueTest.test_feeder_queue):
- (AbstractPatchQueueTest.test_next_patch):
- (AbstractPatchQueueTest.test_upload_results_archive_for_patch):
- (CommitQueueTest.test_commit_queue):
- (test_commit_queue_failure):
- (test_commit_queue_failure_with_failing_tests):
- (test_rollout):
- (test_rollout_lands):
- (test_auto_retry):
- (test_manual_reject_during_processing):
- (test_report_flaky_tests):
- (StyleQueueTest.test_style_queue_with_style_exception):
- (test_style_queue_with_watch_list_exception):
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (QueuesTest._default_begin_work_queue_logs):
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- (RollCommandsTest.test_update_chromium_deps):
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- (UploadCommandsTest.test_assign_to_committer):
- (test_post):
- (test_attach_to_bug):
- (test_attach_to_bug_no_description_or_comment):
- (test_land_safely):
- (test_prepare):
- (test_upload):
- (test_mark_bug_fixed):
- * Scripts/webkitpy/tool/steps/applywatchlist_unittest.py:
- (ApplyWatchListTest.test_apply_watch_list_local):
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- (CommitTest._test_check_test_expectations):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_webkit_run_unit_tests):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- (StepsTest._assert_step_output_with_bug):
- (StepsTest._assert_post_diff_output_for_bug):
- (StepsTest.test_post_diff):
- (StepsTest.test_post_diff_for_commit):
- (StepsTest.test_ensure_bug_is_open_and_assigned):
- (StepsTest.test_runtests_args):
- * Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py:
- (SuggestReviewersTest.test_basic):
- * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py:
- (ValidateChangeLogsTest._assert_start_line_produces_output):
-
-2012-11-27 Pratik Solanki <psolanki@apple.com>
-
- objc/objc-runtime.h does not exist on all PLATFORM(MAC)
- https://bugs.webkit.org/show_bug.cgi?id=101780
-
- Reviewed by Brent Fulgham.
-
- Clean up header includes so we don't include objc/objc-runtime.h.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- * DumpRenderTree/mac/ObjCPlugin.m:
- * TestWebKitAPI/mac/InstanceMethodSwizzler.h:
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
-
-2012-11-27 Marja Hölttä <marja@chromium.org>
-
- Add callbacks to the FrameLoaderClient when a resource is requested
- https://bugs.webkit.org/show_bug.cgi?id=92761
-
- Reviewed by Adam Barth.
-
- In Chromium, when an extension script cancels a network
- request (which happens out of process), we'd like to
- notify content scripts running on the current page about
- which elements failed to load because the requests were
- cancelled (as opposed to e.g. the network request just
- didn't work). Since the resource request itself does not
- carry any information what DOM element is was made for,
- currently a content script has to search the DOM tree and
- guess which requests will be cancelled by its counter
- part. By adding these callbacks, the embedder can make
- this connection explictly.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::dumpResourceRequestCallbacks):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- (DRTTestRunner::setShouldDumpResourceRequestCallbacks):
- (DRTTestRunner::shouldDumpResourceRequestCallbacks):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::shouldDumpResourceRequestCallbacks):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::willRequestResource):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-11-27 Víctor Manuel Jáquez Leal <vjaquez@igalia.com>
-
- [GStreamer] Verify if GStreamer was previously initialized
- https://bugs.webkit.org/show_bug.cgi?id=103151
-
- Reviewed by Philippe Normand.
-
- This patch adds the gst_init() in GtkLauncher, so we can add the
- GStreamer options in the command line through
- gst_init_get_option_group().
-
- This approach is not valid for MiniBrowser because it uses WebKit2,
- where the GStreamer backend lives in the web process, which is
- different from the UI process.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c:
- (main):
-
-2012-11-27 Andras Becsi <andras.becsi@digia.com>
-
- [Qt] Fix the build with new Qt5 hash
- https://bugs.webkit.org/show_bug.cgi?id=103406
-
- Reviewed by Csaba Osztrogonác.
-
- Remove references to deprecated QApplication::GuiServer which
- has been removed, and use QStyleFactory::create instead of
- instantiating a QWindowsStyle directly since it is about to
- become an internal class.
-
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::LauncherApplication):
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- (WTR::InjectedBundle::platformInitialize):
-
-2012-11-27 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [style] Add a style-check for enum-member names
- https://bugs.webkit.org/show_bug.cgi?id=103157
-
- Reviewed by Daniel Bates.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (_EnumState):
- (_EnumState.__init__):
- (_EnumState.process_clean_line):
- (check_enum_casing):
- (check_style):
- (process_line):
- (_process_lines):
- (CppChecker):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (NoNonVirtualDestructorsTest.test_enum_casing):
- (NoNonVirtualDestructorsTest.test_internal_braces.Foo):
-
-2012-11-26 Ryuan Choi <ryuan.choi@gmail.com>
-
- [EFL][jhbuild] Disable unnecessary options of elementary module
- https://bugs.webkit.org/show_bug.cgi?id=103360
-
- Reviewed by Gyuyoung Kim.
-
- When jhbuild configures elementary, unnecessary options may be enabled by
- user installed modules and it causes build break.
-
- * efl/jhbuild.modules:
- Added --disable-emap --disable-ethumb --disable-eweather to elementary.
-
-2012-11-26 Varun Jain <varunjain@chromium.org>
-
- LongPress and LongTap gestures should start drag/drop and open context menu respectively.
- https://bugs.webkit.org/show_bug.cgi?id=101545
-
- Reviewed by Antonio Gomes.
-
- For LongPress, we simulate drag by sending a mouse down and mouse drag
- events. If a drag is not started (because maybe there is no draggable
- element), then we show context menu instead (which is the current
- behavior for LongPress). For LongTap, we use the existing functions that
- LongPress uses to summon the context menu. LongPress initiated drag and
- drop can be enabled/disabled by the platform using the Setting
- touchDragDropEnabled which is disabled by default.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::gestureLongTap):
- (WebTestRunner::EventSender::gestureEvent):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::setTouchDragDropEnabled):
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (TestRunner):
-
-2012-11-26 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add setting to enable / disable HTML5 local storage functionality
- https://bugs.webkit.org/show_bug.cgi?id=103224
-
- Reviewed by Laszlo Gombos.
-
- Add --local-storage command line argument to MiniBrowser to
- explicitely disable HTML5 local storage functionality. This
- is useful for testing purposes.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
-
-2012-11-26 Zan Dobersek <zandobersek@gmail.com>
-
- Remove use of deprecated logging from most of webkitpy.tool
- https://bugs.webkit.org/show_bug.cgi?id=103180
-
- Reviewed by Dirk Pranke.
-
- Remove calls to log and error methods of the deprecated_logging module, replacing them
- by using Python's Logger objects. This patch covers the switch in all of webkitpy.tool
- except the QueueEngine.
-
- Unit tests are adjusted for these changes, moving output from expected stderr to expected logs.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (MockCommitQueue.run_command):
- (MockCommitQueue.command_passed):
- (MockCommitQueue.command_failed):
- (MockCommitQueue.report_flaky_tests):
- (MockCommitQueue.archive_last_test_results):
- (CommitQueueTaskTest._run_through_task):
- (CommitQueueTaskTest.test_success_case):
- (test_fast_success_case):
- (test_clean_failure):
- (test_update_failure):
- (test_apply_failure):
- (test_validate_changelog_failure):
- (test_build_failure):
- (test_red_build_failure):
- (test_flaky_test_failure):
- (test_failed_archive):
- (test_double_flaky_test_failure):
- (test_test_failure):
- (test_red_test_failure):
- (test_very_red_tree_retry):
- (test_red_tree_patch_rejection):
- (test_land_failure):
- * Scripts/webkitpy/tool/bot/feeders.py:
- (CommitQueueFeeder._update_work_items):
- (EWSFeeder.feed):
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- * Scripts/webkitpy/tool/bot/layouttestresultsreader.py:
- (LayoutTestResultsReader.archive):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (test_archive_last_layout_test_results):
- * Scripts/webkitpy/tool/bot/sheriff.py:
- * Scripts/webkitpy/tool/commands/abstractsequencedcommand.py:
- (AbstractSequencedCommand.execute):
- * Scripts/webkitpy/tool/commands/commandtest.py:
- (CommandsTest.assert_execute_outputs):
- * Scripts/webkitpy/tool/commands/download.py:
- (AbstractPatchProcessingCommand._process_patch.execute):
- (ProcessBugsMixin._fetch_list_of_patches_to_process):
- (ProcessURLsMixin._fetch_list_of_patches_to_process):
- (AbstractRolloutPrepCommand._commit_info):
- * Scripts/webkitpy/tool/commands/download_unittest.py:
- (AbstractRolloutPrepCommandTest.test_commit_info):
- (DownloadCommandsTest.test_build):
- (DownloadCommandsTest.test_build_and_test):
- (test_apply_attachment):
- (test_apply_from_bug):
- (test_apply_watch_list):
- (test_land):
- (test_land_red_builders):
- (test_check_style):
- (test_build_attachment):
- (test_land_attachment):
- (test_land_from_bug):
- (test_land_from_url):
- (test_prepare_rollout):
- (test_create_rollout):
- (test_create_rollout_resolved):
- (test_rollout):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem.handle_script_error.does):
- * Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py:
- (EarlyWarningSytemTest._default_expected_stderr):
- (EarlyWarningSytemTest._default_expected_logs):
- (EarlyWarningSytemTest._test_testing_ews):
- * Scripts/webkitpy/tool/commands/openbugs.py:
- (OpenBugs.execute):
- * Scripts/webkitpy/tool/commands/openbugs_unittest.py:
- (OpenBugsTest.test_args_parsing):
- * Scripts/webkitpy/tool/commands/perfalizer.py:
- (Perfalizer.handle_unexpected_error):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PatchesInCommitQueue.execute):
- (PatchesToCommitQueue._needs_commit_queue):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (QueryCommandsTest.test_bugs_to_commit):
- (QueryCommandsTest.test_patches_in_commit_queue):
- (QueryCommandsTest.test_patches_to_commit_queue):
- * Scripts/webkitpy/tool/commands/queues.py:
- (AbstractQueue._cc_watchers):
- (AbstractQueue.begin_work_queue):
- (FeederQueue.handle_unexpected_error):
- (CommitQueue.handle_script_error):
- (AbstractReviewQueue.handle_unexpected_error):
- (AbstractReviewQueue.handle_script_error):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (test_auto_retry):
- * Scripts/webkitpy/tool/commands/queuestest.py:
- (QueuesTest.assert_outputs):
- (QueuesTest._default_begin_work_queue_stderr):
- (QueuesTest):
- (QueuesTest._default_begin_work_queue_logs):
- (QueuesTest.assert_queue_outputs):
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- (RollCommandsTest.test_update_chromium_deps):
- (test_update_chromium_deps_older_revision):
- * Scripts/webkitpy/tool/commands/sheriffbot.py:
- (SheriffBot.handle_unexpected_error):
- * Scripts/webkitpy/tool/commands/stepsequence.py:
- (StepSequence.run_and_handle_errors):
- * Scripts/webkitpy/tool/commands/upload.py:
- (AssignToCommitter._assign_bug_to_last_patch_attacher):
- (AbstractPatchUploadingCommand._prepare_state):
- (PostCommits.execute):
- (MarkBugFixed._determine_bug_id_and_svn_revision):
- (MarkBugFixed.execute):
- (CreateBug.create_bug_from_commit):
- (CreateBug.execute):
- * Scripts/webkitpy/tool/commands/upload_unittest.py:
- (test_obsolete_attachments):
- (test_land_safely):
- (test_mark_bug_fixed):
- * Scripts/webkitpy/tool/multicommandtool.py:
- (Command.check_arguments_and_execute):
- (MultiCommandTool.main):
- * Scripts/webkitpy/tool/multicommandtool_unittest.py:
- (CommandTest.test_required_arguments):
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py:
- (AddSvnMimetypeForPng.run):
- * Scripts/webkitpy/tool/steps/applypatch.py:
- (ApplyPatch.run):
- * Scripts/webkitpy/tool/steps/build.py:
- (Build.run):
- * Scripts/webkitpy/tool/steps/checkstyle.py:
- * Scripts/webkitpy/tool/steps/closebug.py:
- (CloseBug.run):
- * Scripts/webkitpy/tool/steps/closebugforlanddiff.py:
- (CloseBugForLandDiff.run):
- * Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py:
- (CloseBugForLandDiffTest.test_empty_state):
- * Scripts/webkitpy/tool/steps/commit.py:
- (Commit.run):
- * Scripts/webkitpy/tool/steps/commit_unittest.py:
- (CommitTest._test_check_test_expectations):
- * Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py:
- (EnsureLocalCommitIfNeeded.run):
- * Scripts/webkitpy/tool/steps/obsoletepatches.py:
- (ObsoletePatches.run):
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog.run):
- * Scripts/webkitpy/tool/steps/reopenbugafterrollout.py:
- (ReopenBugAfterRollout.run):
- * Scripts/webkitpy/tool/steps/runtests.py:
- (RunTests.run):
- * Scripts/webkitpy/tool/steps/runtests_unittest.py:
- (RunTestsTest.test_webkit_run_unit_tests):
- * Scripts/webkitpy/tool/steps/steps_unittest.py:
- (StepsTest.test_update_step):
- (StepsTest.test_runtests_args):
- * Scripts/webkitpy/tool/steps/update.py:
- (Update.run):
- * Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py:
- (UpdateChangeLogsWithReviewerTest.test_guess_reviewer_from_bug):
- (UpdateChangeLogsWithReviewerTest.test_guess_reviewer_from_multipatch_bug):
- * Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py:
- (UpdateChangeLogsWithReviewer._guess_reviewer_from_bug):
- (UpdateChangeLogsWithReviewer.run):
- * Scripts/webkitpy/tool/steps/updatechromiumdeps.py:
- (UpdateChromiumDEPS._validate_revisions):
- (UpdateChromiumDEPS.run):
- * Scripts/webkitpy/tool/steps/validatechangelogs.py:
- (ValidateChangeLogs._check_changelog_diff):
- (ValidateChangeLogs.run):
- * Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py:
- (ValidateChangeLogsTest._assert_start_line_produces_output):
- * Scripts/webkitpy/tool/steps/validatereviewer.py:
- (ValidateReviewer.run):
-
-2012-11-26 Zan Dobersek <zandobersek@gmail.com>
-
- Coverage testing in webkitpy should omit some paths
- https://bugs.webkit.org/show_bug.cgi?id=103267
-
- Reviewed by Dirk Pranke.
-
- Omit testing coverage of any file under /usr directory and any file
- that is of third party origin and was autoinstalled.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
-
-2012-11-26 Jaehun Lim <ljaehun.lim@samsung.com>
-
- Text Autosizing: Add Text Autosizing APIs for WK2
- https://bugs.webkit.org/show_bug.cgi?id=100633
-
- Reviewed by Sam Weinig.
-
- Add test cases for Text Autosizing in WKPreferences.
-
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
-
-2012-11-26 Pierre Rossi <pierre.rossi@gmail.com>
-
- [Qt] REGRESSION(r135575): It made all tests assert
- https://bugs.webkit.org/show_bug.cgi?id=103169
-
- Reviewed by Simon Hausmann.
-
- This fixes another regression introduced in r135515:
- initializeWebKitQt shouldn't implicitely call initializeWebCoreQt
- since it can be called from WebKit2 to initialize QStyle for testing.
- This would then lead to things such as PlatformStrategies being
- initialized twice.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp: Also propagate the change to DRT this time.
- (WebCore::DumpRenderTree::DumpRenderTree):
-
-2012-11-24 Zan Dobersek <zandobersek@gmail.com>
-
- Add the --order option to NRWT
- https://bugs.webkit.org/show_bug.cgi?id=102229
-
- Reviewed by Dirk Pranke.
-
- The --order option controls in what order the gathered tests will be run.
- There are 3 options:
- - natural, the tests are sorted in natural order,
- - random, the tests are sorted in random order,
- - none, the tests are kept in the order in which they were specified through
- arguments or the test list.
-
- The natural option is the default one and maintains the current behavior.
-
- The none option is primarily intended to be used with the --test-list option,
- with the test list file expected to list specific test names.
- When a directory is specified as one of the paths from under which tests should
- be gathered and the none option is used, that path will expand to all the tests
- under it, with these tests sorted in the natural order.
-
- Using --order=random duplicated the behavior of the --randomize-order option, so
- the latter is removed.
-
- This patch also incorporates the change with which makes it is possible to specify
- a test via arguments or the test list multiple tests and then have the test run
- that many times.
-
- * Scripts/webkitpy/common/find_files.py:
- (find): Accept an optional sorting key that is used to sort files found in the directories
- that the given paths specify.
- (_normalized_find): Both paths that are then searched for the tests and the tests that
- were found are now kept in lists. This makes it possible to run a test multiple times
- by specifying it multiple times through arguments or the test list file.
- (_normalized_find.sort_by_directory_key):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
- (LayoutTestFinder.find_tests): Keep the paths where we should search for tests in a list.
- (LayoutTestFinder.skip_tests): Subtracting from a set of paths is necessary.
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.__init__): The Sharder class no longer needs a test path separator.
- (Sharder.__init__): Ditto.
- (Sharder._resize_shards):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (SharderTests.get_shards): Modify the Shader initializing as required.
- (SharderTests.test_multiple_locked_shards): The natural sorting and test name key unit tests
- are now moved to the base Port unit tests.
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._prepare_lists): Keep the test names in a list. Order that list as specified by
- the new --order option.
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.tests): This method should now return a list of all the tests found in the specified
- paths.
- (Port._real_tests): A list is required, so no conversion to a set is made.
- (Port):
- (Port.test_key): Place this method here for now, but it should really move into a separate
- module.
- (Port._natural_sort_key): Ditto.
- (Port._natural_sort_key.tryint):
- (Port._virtual_tests): A list is required, so the function now operates on that rather than
- on a set.
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_find_with_skipped_directories_2): Adjust the test case to check for an empty
- list rather than an empty set.
- (PortTest.test_dont_require_http_server):
- (NaturalCompareTest): The natural sorting unit tests are placed here for now.
- (NaturalCompareTest.assert_cmp):
- (NaturalCompareTest.test_natural_compare):
- (KeyCompareTest): The test name key unit tests are placed here for now.
- (KeyCompareTest.assert_cmp):
- (KeyCompareTest.test_test_key):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args): Remove the --randomize-order option, it's now possible to replicate its behavior
- by using --order=random.
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py: Add unit tests covering
- various aspects of this change.
- (MainTest.test_natural_order):
- (MainTest):
- (MainTest.test_natural_order_test_specified_multiple_times):
- (MainTest.test_random_order):
- (MainTest.test_random_order_test_specified_multiple_times):
- (MainTest.test_no_order):
- (MainTest.test_no_order_test_specified_multiple_times):
- (MainTest.test_no_order_with_directory_entries_in_natural_order):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.execute): Operate on a set of tests when printing out expectations.
-
-2012-11-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r135600.
- http://trac.webkit.org/changeset/135600
- https://bugs.webkit.org/show_bug.cgi?id=103173
-
- It made EFL API test is failed (Requested by gyuyoung_mbp on
- #webkit).
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/efl/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::sleep):
- * TestWebKitAPI/efl/PlatformWebView.cpp:
-
-2012-11-23 Alexis Menard <alexis@webkit.org>
-
- [CSS3 Backgrounds and Borders] Implement new CSS3 background-position parsing.
- https://bugs.webkit.org/show_bug.cgi?id=102104
-
- Reviewed by Julien Chaffraix.
-
- Protect the new feature behind a feature flag.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-11-23 Mario Sanchez Prada <mario@webkit.org>
-
- Unreviewed. Update my e-mail address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-23 Mateusz Leszko <m.leszko@samsung.com>
-
- [EFL][GTK] Adapt accessibility feature to WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=100757
-
- Reviewed by Laszlo Gombos.
-
- Allow to build accessibility feature in WebkitTestRunner for EFL Platform.
- Updating CMake files due to changes from Bug 99011.
-
- * WebKitTestRunner/InjectedBundle/AccessibilityController.cpp:
- (WTR::AccessibilityController::AccessibilityController):
- (WTR):
- * WebKitTestRunner/InjectedBundle/AccessibilityController.h:
- (AccessibilityController):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp:
- (WTR):
- * WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h:
- (AccessibilityUIElement):
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: - Removed gtk/gtk.h dependency.
- * WebKitTestRunner/PlatformEfl.cmake: - Adding atk includes.
-
-2012-11-16 Yury Semikhatsky <yurys@chromium.org>
-
- Memory instrumentation: extract MemoryObjectInfo declaration into a separate file
- https://bugs.webkit.org/show_bug.cgi?id=102510
-
- Reviewed by Pavel Feldman.
-
- Added missing includes.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-11-23 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Add support for PlatformWebView::simulateSpacebarKeyPress() in TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=103123
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for PlatformWebView::simulateSpacebarKeyPress() and enable
- WebKit2 API test ResponsivenessTimerDoesntFireEarly.
-
- * TestWebKitAPI/PlatformEfl.cmake: Enable ResponsivenessTimerDoesntFireEarly
- test.
- * TestWebKitAPI/efl/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::sleep): Use usleep() instead of sleep since the
- test case is passing 0.5 seconds to sleep.
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::simulateSpacebarKeyPress): Implemented.
- (TestWebKitAPI):
-
-2012-11-23 Wojciech Bielawski <w.bielawski@samsung.com>
-
- [WK2][WKTR] WebKitTestRunner needs eventSender.contextClick()
- https://bugs.webkit.org/show_bug.cgi?id=86881
-
- Reviewed by Kenneth Rohde Christiansen.
-
- eventSender object extended with contextClick() method in WebKitTestRunner.
- contextClick() method returns an array of menu items objects with field 'title' containing title of single
- context menu entry. According to some tests menu items objects shall also support 'click()' method, but it's not
- delivered in this patch.
-
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/EventSendingController.cpp:
- (WTR::EventSendingController::contextClick):
- (WTR):
- * WebKitTestRunner/InjectedBundle/EventSendingController.h:
- (EventSendingController):
-
-2012-11-23 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Compiling against QtWebkit API requires QT_DLL to be defined
- https://bugs.webkit.org/show_bug.cgi?id=102942
-
- Reviewed by Tor Arne Vestbø.
-
- Remove the requirement of having QT_DLL defined in order for the QWEBKIT_EXPORT
- macro to be defined as Q_DECL_IMPORT. Instead unify the export macro definition
- to follow the same rules as other Qt 5 modules, with the exception that instead of
- QT_BUILD_WEBKIT_LIB we continue to use BUILDING_WEBKIT, because that's used also
- in other cross-platform header files to determine the correct meaning of export
- macros.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/win32/default_post.prf:
-
-2012-11-23 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] QWebPage::shouldInterruptJavaScript should be virtual in Qt 5
- https://bugs.webkit.org/show_bug.cgi?id=103111
-
- Reviewed by Kenneth Rohde Christiansen.
-
- This function was added as a slot during Qt 4.x times because adding
- virtual functions breaks binary compatibility. This constraint is gone
- with the initial release of WebKit with Qt 5, and therefore we can
- make it virtual now.
-
- The change is fully source compatible as existing "re-implementations"
- as slots will now be called through it being a virtual function. They
- become unused slots.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::WebPage::shouldInterruptJavaScript):
- (WebPage):
- * QtTestBrowser/webpage.h:
- (WebPage):
-
-2012-11-22 Peter Beverloo <peter@chromium.org>
-
- [Chromium] Return an accurate exit code when running Android suites, and wait after restarting adb as root
- https://bugs.webkit.org/show_bug.cgi?id=103065
-
- Reviewed by Dirk Pranke.
-
- This addresses two further reliability issues in the Android test running
- scripts. Firstly, the run_tests.py script needs to have the --exit_code
- argument passed in order to return non-zero codes, which we need for the
- build master to distinguish failures from successful runs.
-
- Secondly, it modifies the layout test runner to briefly wait (through
- the wait-for-device command) after requesting a device to switch to root
- mode. Without this waiting period, commands might get lost and thereby
- unexpectedly fail.
-
- * Scripts/run-api-tests:
- * Scripts/run-chromium-webkit-unit-tests:
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._setup_test):
- (ChromiumAndroidDriver._restart_adb_as_root):
-
-2012-11-22 Simon Hausmann <simon.hausmann@digia.com>, Pierre Rossi <pierre.rossi@digia.com>
-
- [Qt] Separate QWidget dependant code into separate WebKitWidgets static library
- https://bugs.webkit.org/show_bug.cgi?id=102800
-
- Reviewed by Tor Arne Vestbø.
-
- This patch separates code that needs to use QWidget related APIs in
- WebKit/qt/WebCoreSupport and Api from code that doesn't. This means for
- example FrameLoaderClientQt.cpp remains in the WebKit1 static library,
- while qwebpage.cpp and qwebframe.cpp become part of the WebKitWidgets
- static library. WebKit1 is compiled without QT += widgets and therefore
- any widget related dependency has been moved "up" and out of WebKit1 into
- the WebKitWidgets library.
-
- Between the code in WebKit.a and WebKitWidgets.a new adapters and
- interfaces have been introduced, such as QWebPageAdapter and
- QWebFrameAdapter. QWebPageAdapter, when used from WebKit1, is a way to
- call out into the API layer, implemented by QWebPage (QWebPagePrivate).
- The other way around if QWebPage wants to access WebCore or
- WebCoreSupport related functionality, it will go through
- QWebPageAdapater (as base class). The separation in the direction up
- into the API layer is complete with this patch, no code in WebKit1
- depends on QtWidgets. The separation the other way around, code in the
- API layer not using any WebCore types, is not complete yet.
-
- Some classes such as QWebSettings, QWebElement or
- DumpRenderTreeSupportQt remain in WebKit1. While they are API layer,
- they do not depend on widget related Qt APIs and they make much more
- use of WebCore internal APIs and therefore are easier to keep in
- WebKit1.
-
- In the future we plan to place a real shared library boundary between
- WebKit1 and WebKitWidgets, by keeping the WebKit1 static library as
- part of the QtWebKit shared library and by turning the WebKitWidgets
- static library into a shared one.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::WebPage::resetSettings):
- (WebCore::WebPage::createWindow):
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::initJSObjects):
- (WebCore::DumpRenderTree::dumpFrameScrollPosition):
- (WebCore::DumpRenderTree::dumpFramesAsText):
- (WebCore::DumpRenderTree::dump):
- (WebCore::DumpRenderTree::createWindow):
- (WebCore::DumpRenderTree::pageAdapter):
- (WebCore):
- (WebCore::DumpRenderTree::mainFrameAdapter):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::contextClick):
- (EventSender::scalePageBy):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::reset):
- (TestRunner::display):
- (TestRunner::closeWebInspector):
- (TestRunner::showWebInspector):
- (TestRunner::evaluateInWebInspector):
- (TestRunner::setFrameFlatteningEnabled):
- (TestRunner::goBack):
- (TestRunner::setDefersLoading):
- (TestRunner::pauseAnimationAtTimeOnElementWithId):
- (TestRunner::pauseTransitionAtTimeOnElementWithId):
- (TestRunner::numberOfActiveAnimations):
- (TestRunner::setCaretBrowsingEnabled):
- (TestRunner::setAuthorAndUserStylesEnabled):
- (TestRunner::callShouldCloseOnWebView):
- (TestRunner::setSmartInsertDeleteEnabled):
- (TestRunner::setSelectTrailingWhitespaceEnabled):
- (TestRunner::execCommand):
- (TestRunner::isCommandEnabled):
- (TestRunner::findString):
- (TestRunner::elementDoesAutoCompleteForElementWithId):
- (TestRunner::setMockDeviceOrientation):
- (TestRunner::setGeolocationPermission):
- (TestRunner::numberOfPendingGeolocationPermissionRequests):
- (TestRunner::setMockGeolocationPositionUnavailableError):
- (TestRunner::setMockGeolocationPosition):
- (TestRunner::evaluateScriptInIsolatedWorld):
- (TestRunner::addUserStyleSheet):
- (TestRunner::setMinimumTimerInterval):
- * DumpRenderTree/qt/TextInputControllerQt.cpp:
- (TextInputController::selectedRange):
- (TextInputController::firstRectForCharacterRange):
- (TextInputController::unmarkText):
- * DumpRenderTree/qt/WorkQueueItemQt.cpp:
- (LoadAlternateHTMLStringItem::invoke):
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/production_build.prf:
- * qmake/mkspecs/features/webkit_modules.prf:
- * qmake/mkspecs/modules/webkitwidgets.prf: Added.
-
-2012-11-22 Christophe Dumez <christophe.dumez@intel.com>
-
- WebKitTestRunner needs layoutTestController.setCacheModel
- https://bugs.webkit.org/show_bug.cgi?id=42684
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for testRunner.setCacheModel to WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setCacheModel):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-11-22 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] TestController::platformRunUntil should not do busy waiting
- https://bugs.webkit.org/show_bug.cgi?id=101327
-
- Reviewed by Simon Hausmann.
-
- Avoid busy waiting for events in platformRunUntil while making
- sure we don't change the behavior of modal event loops.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::~TestController):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformDestroy):
- (WTR):
- * WebKitTestRunner/gtk/TestControllerGtk.cpp:
- (WTR::TestController::platformDestroy):
- (WTR):
- * WebKitTestRunner/mac/TestControllerMac.mm:
- (WTR::TestController::platformDestroy):
- (WTR):
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (TestController::RunLoop): Helper class to handle
- the event loop logic
- (WTR):
- (WTR::TestController::RunLoop::RunLoop):
- (WTR::TestController::RunLoop::runUntil): Use QEventLoop to implement
- the run loop. This is the appropriate API to push the WaitForMoreEvents
- flag to QCoreApplication::processEvents and also being able to exit the
- loop if we have timed out.
- (WTR::TestController::RunLoop::notifyDone):
- (WTR::TestController::RunLoop::timerFired):
- (WTR::TestController::RunLoop::runModal):
- (WTR::TestController::notifyDone):
- (WTR::TestController::platformInitialize):
- (WTR::TestController::platformDestroy):
- (WTR::TestController::platformRunUntil):
- (WTR::TestController::runModal):
- * WebKitTestRunner/win/TestControllerWin.cpp:
- (WTR::TestController::platformDestroy):
- (WTR):
-
-2012-11-22 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] Enable WKPreferences and AboutBlankLoad API tests
- https://bugs.webkit.org/show_bug.cgi?id=102926
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add missing bits needed by WKPreferences and AboutBlankLoad API
- tests in the test harness and enable these tests on EFL port.
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp:
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/efl/PlatformUtilities.cpp:
- (TestWebKitAPI::Util::MIMETypeForWKURLResponse):
- (Util):
-
-2012-11-21 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK][WTR] Implement AccessibilityUIElement::stringValue
- https://bugs.webkit.org/show_bug.cgi?id=102951
-
- Reviewed by Martin Robinson.
-
- Implement AccessibilityUIElement::stringValue in the ATK backend
- in the same manner it is implemented in DumpRenderTree.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp:
- (WTR::replaceCharactersForResults):
- (WTR):
- (WTR::AccessibilityUIElement::stringValue):
-
-2012-11-21 Vineet Chaudhary <rgf748@motorola.com>
-
- Unreviewed. Adding myself to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-21 Tien-Ren Chen <trchen@chromium.org>
-
- [chromium] Device scale factor should be no-op when applyDeviceScaleFactorInCompositor == 0
- https://bugs.webkit.org/show_bug.cgi?id=100061
-
- Reviewed by Adam Barth.
-
- On Android we're using a different pixel scaling implementation
- (WebCore::Settings::applyDefaultDeviceScaleFactorInCompositor() == 0) than other
- platforms. In this mode, we don't make use of device-independent pixels. Device
- scale factor is provided to WebKit and get merged into page scale factor. Other
- than that device scale factor should have no effects on rendering.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-11-21 Fady Samuel <fsamuel@chromium.org>
-
- Clear MousePressed state on context menu to avoid initiating a drag
- https://bugs.webkit.org/show_bug.cgi?id=101786
-
- Reviewed by Ojan Vafai.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::EventSender):
- (WebTestRunner::EventSender::contextClick):
- Only send a MouseUp on Windows. Keep the current mouse pressed state when
- calling up a context menu.
-
-2012-11-21 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] KURL unit test crashing when tiled backing store is enabled on Release Bots
- https://bugs.webkit.org/show_bug.cgi?id=102895
-
- Reviewed by Gyuyoung Kim.
-
- Change the link order so it wont override the new operator on gtest.
- Looks like it was crashing because an allocator mismatch (using libc's
- new and later fastMalloc delete. Thanks to Kangil Han for hinting on
- the fastMalloc issue.
-
- * TestWebKitAPI/CMakeLists.txt:
-
-2012-11-21 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed, rolling out r135340.
- http://trac.webkit.org/changeset/135340
- https://bugs.webkit.org/show_bug.cgi?id=102492
-
- It broke Safari's internal build
-
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- (new):
- (GenerateModule):
- (GenerateInterface):
- (finish):
-
-2012-11-21 Yael Aharon <yael.aharon@intel.com>, Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
- https://bugs.webkit.org/show_bug.cgi?id=101526
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Turn on WTF_USE_TILED_BACKING_STORE for EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
- * TestWebKitAPI/CMakeLists.txt: No include KURL.cpp because of API test crash.
-
-2012-11-21 Jongseok Yang <js45.yang@samsung.com>
-
- [EFL][WK2] Rename ewk_view_setting_encoding_custom_XXX to ewk_view_custom_encoding_XXX
- https://bugs.webkit.org/show_bug.cgi?id=102867
-
- Reviewed by Gyuyoung Kim.
-
- Rename ewk_view_setting_encoding_custom_XXX to ewk_view_custom_encoding_XXX.
-
- ewk_view_setting_encoding_custom_XXX APIs might be misunderstanded as the "setting" word
- because ewk_view_setting_encoding_custom_set triggers the "reload" operation.
- And ewk_view_setting_XXX is not correct because there is ewk_settings object for settings.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-11-20 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r133859.
- http://trac.webkit.org/changeset/133859
- https://bugs.webkit.org/show_bug.cgi?id=102875
-
- This patch makes API test broken (Requested by gyuyoung on
- #webkit).
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-20 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Add Ewk_Window_Features API and related UI callbacks
- https://bugs.webkit.org/show_bug.cgi?id=99114
-
- Reviewed by Gyuyoung Kim.
-
- Implemented window_create and window_close smartcallback functions.
-
- * MiniBrowser/efl/main.c:
- (on_window_create):
- (on_window_close):
- (window_create):
-
-2012-11-20 Ojan Vafai <ojan@chromium.org>
-
- Simplify builder filters now that we have lists of which builders run which tests
- https://bugs.webkit.org/show_bug.cgi?id=102849
-
- Reviewed by Dirk Pranke.
-
- We only need filters when we load the same master for multiple groups in the
- same test type, i.e. when we need to only include some of the builders that run
- a given test suite on a given master.
-
- Also, get rid of the DEFAULT_BUILDER enum. We were always using the first builder anyways.
- Now just make it a method on BuilderGroup.
-
- * TestResultServer/static-dashboards/builders.js:
- (BuilderGroup.prototype.append):
- (BuilderGroup.prototype.setup):
- (BuilderGroup.prototype._defaultBuilder):
- (BuilderGroup.prototype.master):
- (requestBuilderList):
- (isChromiumWebkitTipOfTreeTestRunner):
- (isChromiumWebkitDepsTestRunner):
- (loadBuildersList):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (test):
-
-2012-11-20 Ojan Vafai <ojan@chromium.org>
-
- Remove perfav master for webkit_unit_tests and test_shell_tests.
- There are no bots on this master that run these tests.
- * TestResultServer/static-dashboards/builders.js:
-
-2012-11-20 Ojan Vafai <ojan@chromium.org>
-
- Remove special case for layout tests when builders fail to load
- https://bugs.webkit.org/show_bug.cgi?id=102842
-
- Reviewed by Tony Chang.
-
- Now that we load only builders that actually run the given test
- type, we can reliably show errors to the users because it
- represents a broken bot.
- * TestResultServer/static-dashboards/loader.js:
-
-2012-11-15 Ojan Vafai <ojan@chromium.org>
-
- Generate a list of builders/test suites from the buildbot json
- https://bugs.webkit.org/show_bug.cgi?id=102443
-
- Reviewed by Dirk Pranke.
-
- Instead of the cludgy things we do now to track which bots run which tests,
- we generate all that data from the buildbots' json files.
- This is the minimal amount to keep everything working. Once this lands,
- we can also do a bunch of followup cleanup.
-
- For now we commit the generated data. In theory, in the future, we could
- have the test results server generate the data on the fly.
-
- For the sake of easily understanding what changes when we run the generate script,
- also checkin a pretty printed version of the output. The pretty printed version
- is too large to serve as part of the flakiness dashboard though.
-
- This also has the benefit of making the dashboard load much faster since
- we no longer ever need to block on requests to buildbot.
-
- * TestResultServer/generate_builders_json.py: Added.
- (master_json_url):
- (builder_json_url):
- (cached_build_json_url):
- (fetch_json):
- (insert_builder_and_test_data):
- (main):
- * TestResultServer/generate_builders_json_unittest.py: Added.
- (GenerateBuildersJsonTest):
- (GenerateBuildersJsonTest.test_master_json_url):
- (GenerateBuildersJsonTest.test_builder_json_url):
- (GenerateBuildersJsonTest.test_cached_build_json_url):
- (GenerateBuildersJsonTest.test_generate_json_data):
- (GenerateBuildersJsonTest.test_generate_json_data.dummy_fetch_json):
- * TestResultServer/static-dashboards/builders-pretty.jsonp: Added.
- * TestResultServer/static-dashboards/builders.js:
- (LOAD_BUILDBOT_DATA):
- (BuilderGroup):
- (BuilderGroup.prototype.append):
- (BuilderGroup.prototype.master):
- (requestBuilderList):
- * TestResultServer/static-dashboards/builders.jsonp: Added.
- * TestResultServer/static-dashboards/builders_unittests.js: Added.
- * TestResultServer/static-dashboards/dashboard_base.js:
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
- (showPopupForBuild):
- (htmlForTestResults):
- (htmlForIndividualTestOnAllBuildersWithResultsLinks):
- (loadExpectationsLayoutTests):
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
- (resetGlobals):
- (test):
- * TestResultServer/static-dashboards/loader.js:
- * TestResultServer/static-dashboards/loader_unittests.js:
- * TestResultServer/static-dashboards/run-embedded-unittests.html:
- * TestResultServer/static-dashboards/run-unittests.html:
- * TestResultServer/static-dashboards/timeline_explorer.html:
-
-2012-11-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [WTR][Qt] Enable fixedLayout when needed by the test
- https://bugs.webkit.org/show_bug.cgi?id=102811
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Create a flickable view for CSS Device Adaptation tests. This is
- crucial for testing them since they will change the size of the
- viewport.
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::viewSupportsOptions):
- (WTR):
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-20 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [WTR] WebKitTestRunner should be able to run tests using fixed layout
- https://bugs.webkit.org/show_bug.cgi?id=102517
-
- Reviewed by Kenneth Rohde Christiansen.
-
- WTR will now request the creation of a view that has a page using
- fixed layout for CSS Device Adaptation tests, but this feature might
- be used in the future by any other test that requires a mobile-like type
- of viewport (i.e. Viewport META tests should be ported).
-
- The viewport type of the other tests remains unchanged and is restored
- when the runner leaves the device-adapt/ folder.
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR):
- (WTR::shouldUseFixedLayout):
- (WTR::updateLayoutType):
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::viewSupportsOptions):
- (WTR):
-
-2012-11-20 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] REGRESSION(r128174): Fast build path doesn't work now
- https://bugs.webkit.org/show_bug.cgi?id=100360
-
- Reviewed by Tor Arne Vestbø.
-
- Use a separated .builtRevisions.cache file instead of .qmake.cache to cache built SVN revisions.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-11-20 Mateusz Leszko <m.leszko@samsung.com>
-
- [EFL][GTK]Sharing accessibility support in WebKitTestRunner.
- https://bugs.webkit.org/show_bug.cgi?id=99011
-
- Reviewed by Martin Robinson.
-
- Accessibility files from gtk folder are moved to atk folder due to common implementation. Event Type naming changed to default, from Gtk to ATK.
-
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityControllerGtk.cpp.
- (WTR::AccessibilityController::logAccessibilityEvents):
- * WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp: Renamed from Tools/WebKitTestRunner/InjectedBundle/gtk/AccessibilityUIElementGtk.cpp.
-
-2012-11-20 Zan Dobersek <zandobersek@gmail.com>
-
- webkitpy unit tests should run serially when checking code coverage
- https://bugs.webkit.org/show_bug.cgi?id=102693
-
- Reviewed by Dirk Pranke.
-
- When checking code coverage, the unit tests should not be run in parallel
- as this causes the tracing functions (set via sys.settrace in the coverage
- module) being overriden, resulting in incorrect coverage reports.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._run_tests):
-
-2012-11-19 Viatcheslav Ostapenko <v.ostapenko@samsung.com>
-
- [EFL] Add fallback for WebkitTestRunner if opengl is not available.
- https://bugs.webkit.org/show_bug.cgi?id=102704
-
- Reviewed by Laszlo Gombos.
-
- Add fallback to non-opengl evas engine in WebkitTestRunner if opengl is not available.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::initEcoreEvas):
-
-2012-11-19 Dimitri Glazkov <dglazkov@chromium.org>
-
- [garden-o-matic] Switch frontend to use the gardeningserver.
- https://bugs.webkit.org/show_bug.cgi?id=102712
-
- Reviewed by Dirk Pranke.
-
- Instead of serving garden-o-matic frontend as file, we now serve it from the gardening server. This enables
- using garden-o-matic in a Chrome OS device, with a separate machine as a headless server.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html: Changed CSP policy to use 'self'.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout.js: Removed now-unnecessary references to kLocalServerURL.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/checkout_unittests.js: Tweaked the test expectation.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js: Removed kLocalServerURL.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/controllers.js: Spuriously updated the name of the webkit-patch command.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js: Removed kLocalServerURL.
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Changed to use the new launch URL.
-
-2012-11-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r135172.
- http://trac.webkit.org/changeset/135172
- https://bugs.webkit.org/show_bug.cgi?id=102710
-
- Broke some WebKit2 api tests :( (Requested by japhet on
- #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad):
-
-2012-11-19 Dimitri Glazkov <dglazkov@chromium.org>
-
- [garden-o-matic] Enable serving garden-o-matic with gardeningserver.
- https://bugs.webkit.org/show_bug.cgi?id=102703
-
- Reviewed by Ojan Vafai.
-
- To enable gardening from a Chrome OS device, we need the ability to serve garden-o-matic
- from the same origin as the gardening server. This change gently massages the current
- logic to adapt an extension-sniffing-based approach of identifying static files,
- rather than requiring an explicit list.
-
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- (ReflectionHandler): Replaced STATIC_FILE_NAMES with STATIC_FILE_EXTENSIONS.
- (ReflectionHandler._handle_request): Changed the logic to smell for extensions, rather than specific files.
- * Scripts/webkitpy/tool/servers/reflectionhandler_unittest.py: Added.
-
-2012-11-19 Ojan Vafai <ojan@chromium.org>
-
- Add DOM and HTML watchlists and add myself to a bunch of lists
- https://bugs.webkit.org/show_bug.cgi?id=102707
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-11-19 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move methods that only use the WebKit API from DRTTestRunner to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=102676
-
- Reviewed by Tony Chang.
-
- In addition, I've replaced parsePageNumber with the more commonly used
- cppVariantToInt32, moved abortModal to the list of stubbed out methods,
- and removed setAutomaticLinkDetectionEnabled which wasn't used
- anywhere.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- (DRTTestRunner::overridePreference):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner::TestRunner::reset):
- (WebTestRunner):
- (WebTestRunner::TestRunner::setTabKeyCyclesThroughElements):
- (WebTestRunner::TestRunner::setAsynchronousSpellCheckingEnabled):
- (WebTestRunner::TestRunner::execCommand):
- (WebTestRunner::TestRunner::isCommandEnabled):
- (WebTestRunner::TestRunner::pauseAnimationAtTimeOnElementWithId):
- (WebTestRunner::TestRunner::pauseTransitionAtTimeOnElementWithId):
- (WebTestRunner::TestRunner::elementDoesAutoCompleteForElementWithId):
- (WebTestRunner::TestRunner::numberOfActiveAnimations):
- (WebTestRunner::TestRunner::callShouldCloseOnWebView):
- (WebTestRunner::TestRunner::setDomainRelaxationForbiddenForURLScheme):
- (WebTestRunner::TestRunner::evaluateScriptInIsolatedWorldAndReturnValue):
- (WebTestRunner::TestRunner::evaluateScriptInIsolatedWorld):
- (WebTestRunner::TestRunner::setIsolatedWorldSecurityOrigin):
- (WebTestRunner::TestRunner::setIsolatedWorldContentSecurityPolicy):
- (WebTestRunner::TestRunner::addOriginAccessWhitelistEntry):
- (WebTestRunner::TestRunner::removeOriginAccessWhitelistEntry):
- (WebTestRunner::TestRunner::hasCustomPageSizeStyle):
- (WebTestRunner::TestRunner::forceRedSelectionColors):
- (WebTestRunner::TestRunner::addUserScript):
- (WebTestRunner::TestRunner::addUserStyleSheet):
- (WebTestRunner::TestRunner::startSpeechInput):
- (WebTestRunner::TestRunner::loseCompositorContext):
- (WebTestRunner::TestRunner::markerTextForListItem):
- (WebTestRunner::TestRunner::findString):
- (WebTestRunner::TestRunner::setMinimumTimerInterval):
- (WebTestRunner::TestRunner::setAutofilled):
- (WebTestRunner::TestRunner::setValueForUser):
- (WebTestRunner::TestRunner::enableFixedLayoutMode):
- (WebTestRunner::TestRunner::setFixedLayoutSize):
- (WebTestRunner::TestRunner::selectionAsMarkup):
- (WebTestRunner::TestRunner::setTextSubpixelPositioning):
- (WebTestRunner::TestRunner::resetPageVisibility):
- (WebTestRunner::TestRunner::setPageVisibility):
- (WebTestRunner::TestRunner::setTextDirection):
- (WebTestRunner::TestRunner::textSurroundingNode):
- (WebTestRunner::TestRunner::workerThreadCount):
- (WebTestRunner::TestRunner::cppVariantToBool):
- (WebTestRunner::TestRunner::cppVariantToInt32):
- (WebTestRunner::TestRunner::cppVariantToWebString):
- (WebTestRunner::TestRunner::cppVariantToWebStringArray):
- (WebTestRunner::TestRunner::printErrorMessage): formerly logErrorToConsole
- (WebTestRunner::TestRunner::fallbackMethod):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebKit):
- (WebTestRunner::TestRunner::setWebView):
- (TestRunner):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
-
-2012-11-19 Yusuke Sato <yusukes@chromium.org>
-
- [Chromium] Flash cannot receive scroll events when threaded compositing is in use
- https://bugs.webkit.org/show_bug.cgi?id=101423
-
- Reviewed by James Robinson.
-
- Call setWantsWheelEvents(true) in initialize() so that gesture-events and transformed-events tests in
- LayoutTests/platform/chromium/plugins/ will not fail even if a buildbot introduces threaded compositing
- in the future.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::initialize):
-
-2012-11-19 Nate Chapin <japhet@chromium.org>
-
- Move empty loading to DocumentLoader, simplify FrameLoader::init()
- https://bugs.webkit.org/show_bug.cgi?id=101512
-
- Reviewed by Adam Barth.
-
- Chromium DRT has some code that doesn't play nicely with empty urls and incorrectly
- interprets them as a non-empty load. This ensures
- http/tests/navigation/new-window-redirect-history.html continues to pass
- in chromium.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad):
-
-2012-11-19 Vincent Scheib <scheib@chromium.org>
-
- [Chromium] Remove WebKit::WebRuntimeFeatures::enablePointerLock.
- https://bugs.webkit.org/show_bug.cgi?id=96946
-
- Reviewed by Adam Barth.
-
- The runtime flag functionality has already been removed.
- Now that Chromium no longer has a compile dependency on this
- API, it can be removed as well.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-11-19 Kihong Kwon <kihong.kwon@samsung.com>
-
- Add PROXIMITY_EVENTS feature
- https://bugs.webkit.org/show_bug.cgi?id=102658
-
- Reviewed by Kentaro Hara.
-
- Add PROXIMITY_EVENTS feature to FeatureList and qmake.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-11-19 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WTR] Memory leak in TestController::initialize()
- https://bugs.webkit.org/show_bug.cgi?id=102616
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Remove call to WKStringCreateWithUTF8CString() to construct
- the icon database path which was leaking memory since the
- returned WKStringRef was not adopted. The code now uses
- WTF::String instead of std::string and converts it to a
- WKStringRef using toWK().
-
- * WebKitTestRunner/StringFunctions.h:
- (WTR::toWK): Overload toWK() to take a WTF::String in
- argument.
- (WTR):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-11-19 Kentaro Hara <haraken@chromium.org>
-
- Remove IDLStructure.pm
- https://bugs.webkit.org/show_bug.cgi?id=102642
-
- Reviewed by Adam Barth.
-
- Previously IDLStructure.pm was full of regular expressions to
- parse IDL files. Now a new IDL parser is implemented, IDLStructure.pm
- just contains several data structures for the IDL parser. We can
- move them to IDLParser.pm and thus remove IDLStructure.pm.
-
- No tests. No change in generated code.
-
- * WebKitTestRunner/DerivedSources.make:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/DerivedSources.pri:
-
-2012-11-18 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL] Not to include "ewk_view_private.h" in Tools
- https://bugs.webkit.org/show_bug.cgi?id=102644
-
- Reviewed by Gyuyoung Kim.
-
- Include ewk_view.h instead of ewk_view_private.h in Tools
-
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
-
-2012-11-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r135104.
- http://trac.webkit.org/changeset/135104
- https://bugs.webkit.org/show_bug.cgi?id=102638
-
- Should not use commit queue to add people to committer list.
- (Requested by ap_ on #webkit).
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-18 Vivek Galatage <vivek.vg@samsung.com>
-
- Add myself to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=102636
-
- Reviewed by Laszlo Gombos.
-
- Add myself to committers.py
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-18 Genevieve Mak <gmak@rim.com>
-
- [BlackBerry] Enable Touch Sliders
- https://bugs.webkit.org/show_bug.cgi?id=102516
-
- Reviewed by Rob Buis.
-
- Enabled for BlackBerry only
- PR #242781
- PR #176014
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-17 Dimitri Glazkov <dglazkov@chromium.org>
-
- Remove unused code I wrote a long time ago from gardeningserver.py
- https://bugs.webkit.org/show_bug.cgi?id=102605
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py: Removed.
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py: Removed.
-
-2012-11-16 Tony Chang <tony@chromium.org>
-
- Remove ENABLE_CSS_HIERARCHIES since it's no longer in use
- https://bugs.webkit.org/show_bug.cgi?id=102554
-
- Reviewed by Andreas Kling.
-
- As mentioned in https://bugs.webkit.org/show_bug.cgi?id=79939#c41 ,
- we're going to revist this feature once additional vendor support is
- achieved.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move stubs from DRTTestRunner to TestRunner
- https://bugs.webkit.org/show_bug.cgi?id=102489
-
- Reviewed by Adam Barth.
-
- This is part of moving all methods from DRTTestRunner to TestRunner.
- Instead of keeping one stub per method, I'm using a shared stub to
- clean up the code.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner::TestRunner::TestRunner):
- (WebTestRunner):
- (WebTestRunner::TestRunner::fallbackMethod):
- (WebTestRunner::TestRunner::notImplemented):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner):
- (TestRunner):
- (WebTestRunner::TestRunner::setDelegate):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createMainWindow):
- (TestShell::~TestShell):
-
-2012-11-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] fake drag drop operations in the WebTestProxyBase instead of the WebViewHost
- https://bugs.webkit.org/show_bug.cgi?id=102495
-
- Reviewed by Adam Barth.
-
- When a drag operation is initiated in a layout test, we need to
- simulate a corresponding drop event, otherwise the WebViewImpl will sit
- there waiting for it. Instead of having the embedder taking care of
- this, move this into the TestRunner library.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::startDragging):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::startDragging):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-11-16 Tien-Ren Chen <trchen@chromium.org>
-
- Rename applyDefaultDeviceScaleFactorInCompositor to setApplyDeviceScaleFactorInCompositor
- https://bugs.webkit.org/show_bug.cgi?id=102462
-
- Reviewed by James Robinson.
-
- As we no longer have this "default" device scale factor.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
-
-2012-11-15 Takashi Sakamoto <tasak@google.com>
-
- [Win] key event's location does not work on Windows platform.
- https://bugs.webkit.org/show_bug.cgi?id=89742
-
- Reviewed by Brent Fulgham.
-
- Modified keyDownCallback to use lparam to specify left-hand keys or
- right-hand keys.
-
- * DumpRenderTree/win/EventSender.cpp:
- (makeKeyDataForScanCode):
- Given a virtual keycode, generate scancode and extended key bit of
- lparam.
- (keyDownCallback):
- Use lparam for left-hand and right-hand keys, because Windows doesn't
- directly provide a virtual keycode which distinguishes between
- left-hand and right-hand. For example, when control key is pressed,
- wparam has VK_CONTROL, neither VK_RCONTROL nor VK_LCONTROL.
-
-2012-11-16 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Add missing WebRTCPeerConnectionHandlerClient::didAddRemoteDataChannel
- https://bugs.webkit.org/show_bug.cgi?id=102386
-
- Reviewed by Adam Barth.
-
- Adding mock data channel functionality.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::openDataChannel):
-
-2012-11-16 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] delete unused testRunner methods
- https://bugs.webkit.org/show_bug.cgi?id=102479
-
- Reviewed by Adam Barth.
-
- These methods aren't used by any layout test. Remove them to avoid bit rot
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::reset):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::shouldBeginEditing):
- (WebViewHost::shouldEndEditing):
- (WebViewHost::shouldInsertNode):
- (WebViewHost::shouldInsertText):
- (WebViewHost::shouldChangeSelectedRange):
- (WebViewHost::shouldDeleteRange):
- (WebViewHost::shouldApplyStyle):
- (WebViewHost::startDragging):
- (WebViewHost::enterFullScreenNow):
- (WebViewHost::exitFullScreenNow):
-
-2012-11-15 Alexey Proskuryakov <ap@apple.com>
-
- Private Browsing is a per-page setting that sets a global value
- https://bugs.webkit.org/show_bug.cgi?id=67870
-
- Reviewed by Sam Weinig.
-
- * DumpRenderTree/mac/DumpRenderTree.mm: (setDefaultsToConsistentValuesForTesting):
- Call _switchNetworkLoaderToNewTestingSession before making other settings, so that
- they would actually apply to the testing session.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::initialize):
- (WTR::InjectedBundle::beginTesting):
- Only call WKBundleSwitchNetworkLoaderToNewTestingSession once per process, matching
- WebKit1. I'm not fully sure what is going wrong, but apparently creating mutiple
- sessions with the same identifier doesn't quite work.
-
-2012-11-16 Yael Aharon <yael.aharon@intel.com>
-
- Unreviewed. Help bugzilla find me.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-16 Peter Beverloo <peter@chromium.org>
-
- Running TestWebKitAPI and webkit_unit_tests for Chromium Android should defer to the Chromium-sided test runner
- https://bugs.webkit.org/show_bug.cgi?id=102245
-
- Reviewed by Tony Chang.
-
- When running TestWebKitAPI and webkit_unit_test for Chromium Android, defer
- the actual running part to the test runner which lives on the Chromium side.
- Re-implementing or even generalizing the device-interaction part in WebKit
- is error prone and not worth the effort.
-
- * Scripts/run-api-tests:
- * Scripts/run-chromium-webkit-unit-tests:
-
-2012-11-15 Yury Semikhatsky <yurys@chromium.org>
-
- Memory instrumentation: add code for reporting stack traces of unknown instrumented objects
- https://bugs.webkit.org/show_bug.cgi?id=102384
-
- Reviewed by Pavel Feldman.
-
- Updated return type in accord with the changes in MemoryInstrumentationClient.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-11-15 Gustavo Noronha Silva <gns@gnome.org>
-
- [GTK] Split WebCore/platform into a separate library
- https://bugs.webkit.org/show_bug.cgi?id=94435
-
- Reviewed by Martin Robinson.
-
- More people have been reporting problems when linking WebCore because
- the command line limit is being exceeded. Splitting WebCore a bit more
- is in order.
-
- * GNUmakefile.am: link libWebCorePlatform into DRT
-
-2012-11-15 Dana Jansens <danakj@chromium.org>
-
- [chromium] Stop using the WebCompositorSupport methods for changing settings
- https://bugs.webkit.org/show_bug.cgi?id=101968
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setPerTilePaintingEnabled):
- (TestShell::setAcceleratedAnimationEnabled):
-
-2012-11-15 Tony Chang <tony@chromium.org>
-
- Generate Settings from a .in file
- https://bugs.webkit.org/show_bug.cgi?id=100393
-
- Reviewed by Adam Barth.
-
- Add the generated WebCore files to the include dir.
-
- * TestWebKitAPI/CMakeLists.txt:
- * WebKitTestRunner/CMakeLists.txt:
-
-2012-11-15 Roger Fong <roger_fong@apple.com>
-
- Make old-run-webkit-tests handle setting the results directory properly.
- https://bugs.webkit.org/show_bug.cgi?id=102273
- <rdar://problem/11571607>
-
- Reviewed by Timothy Horton.
-
- A call to chdirWebkit in old-run-webkit-tests set the current working directory to the OpenSource folder.
- Thus setting --results-directory to OpenSource/layout-test-results would create OpenSource/layout-test-results inside the main OpenSource folder.
- This caused many other problems including failure to upload test results and failed future test runs.
- The solution is to save the current working directory before calling chdirWebKit and then reconstructing the full path to the results directory
- using the saved directory when setting $testResultsDirectory.
-
- * Scripts/old-run-webkit-tests:
-
-2012-11-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r134800 and r134805.
- http://trac.webkit.org/changeset/134800
- http://trac.webkit.org/changeset/134805
- https://bugs.webkit.org/show_bug.cgi?id=102417
-
- This patch broke chromium port (Requested by jianli on
- #webkit).
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::openDataChannel):
-
-2012-11-15 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Add missing WebRTCPeerConnectionHandlerClient::didAddRemoteDataChannel
- https://bugs.webkit.org/show_bug.cgi?id=102386
-
- Reviewed by Adam Barth.
-
- Adding mock data channel functionality.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::openDataChannel):
-
-2012-11-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r134649 and r134665.
- http://trac.webkit.org/changeset/134649
- http://trac.webkit.org/changeset/134665
- https://bugs.webkit.org/show_bug.cgi?id=102413
-
- Broke a ton of downstream chromium tests (Requested by japhet
- on #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad):
-
-2012-11-15 Andreas Kling <akling@apple.com>
-
- Update my e-mail address.
-
- Rubber-stamped by Anders Koivisto.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-15 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] Bump Harfbuzz to allow fixing bug 101009 on EFL
- https://bugs.webkit.org/show_bug.cgi?id=101323
-
- Reviewed by Martin Robinson.
-
- Bumping Harfbuzz to newer version so that we can remove the
- ifdef round the fix for bug 101009 for EFL, too.
- We're using the zip snapshot since jhbuild can fallback to the previously
- downloaded blob in case of network failures which leads to better
- buildbot robustness. This zip snapshot currently needs to be locally
- patched to fix ICU detection on systems that don't have icu pkg-config files.
- The patch is suggested for merging into HarfBuzz. We can remove it locally
- once it's accepted into HarfBuzz upstream.
-
- * efl/patches/harfbuzz-icu-detection-fix.patch: Applied after retrieving source to fix harfbuzz detection on systems that don't have pkg-config files for it.
- * efl/jhbuild.modules: Bumping harfbuzz version.
-
-2012-11-15 Alexey Proskuryakov <ap@apple.com>
-
- [Mac] Implement WTR --no-timeout-at-all option
- https://bugs.webkit.org/show_bug.cgi?id=102251
-
- Reviewed by Eric Carlson.
-
- * WebKitTestRunner/mac/TestControllerMac.mm: (WTR::TestController::platformRunUntil):
- Just do it, and convert to Objective C on the way for simplicity.
-
-2012-11-14 Ryuan Choi <ryuan.choi@gmail.com>
-
- [EFL] Port tiled backing store
- https://bugs.webkit.org/show_bug.cgi?id=71352
-
- Reviewed by Gyuyoung Kim.
-
- * EWebLauncher/main.c: Added option to test the WebCore's tiled backing store.
- (_User_Arguments):
- (windowCreate):
- (parseUserArguments):
-
-2012-11-14 Andy Estes <aestes@apple.com>
-
- Fix the build.
-
- * TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h:
-
-2012-11-14 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: consolidate webkit-base-finding code
- https://bugs.webkit.org/show_bug.cgi?id=102007
-
- Reviewed by Eric Seidel.
-
- This patch creates a new "WebKitFinder" class that other
- modules can use to find the top of the WebKit tree and
- commonly used subdirectories. This logic was in the
- webkitpy.layout_test.port classes but wasn't specific to those
- classes and now can be used by other modules without needing a port
- (e.g., by the check-webkit-style python linter).
-
- This code is somewhat redundant with the code for find_checkout_root()
- in the scm modules, but it does not rely on the presence of a version
- control system to work. This is a requirement for some uses of the
- tree (e.g., Chromium tester checkouts).
-
- This patch removes most of the logic from the layout_tests.port.config
- module and makes that as private as possible. Now we just need to move
- the default_configuration and flag_from_configuration logic into
- DeprecatedPort (or someplace else appropriate) and we can finish
- getting rid of the Config class (but that is a separate patch).
-
- * Scripts/webkitpy/common/webkit_finder.py: Added.
- (WebKitFinder):
- (WebKitFinder.__init__):
- (WebKitFinder.webkit_base):
- (WebKitFinder.path_from_webkit_base):
- (WebKitFinder.path_to_script):
- (WebKitFinder.layout_tests_dir):
- (WebKitFinder.perf_tests_dir):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.__init__):
- (Port):
- (Port.webkit_base):
- (Port.path_from_webkit_base):
- (Port.path_to_script):
- (Port.layout_tests_dir):
- (Port.perf_tests_dir):
- (Port.set_option_default):
- (Port._run_script):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_diff_text):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort._determine_driver_path_statically):
- * Scripts/webkitpy/layout_tests/port/chromium_unittest.py:
- * Scripts/webkitpy/layout_tests/port/config.py:
- (Config.__init__):
- (Config.build_directory):
- (Config.default_configuration):
- (Config._read_configuration):
- * Scripts/webkitpy/layout_tests/port/config_mock.py: Removed.
- * Scripts/webkitpy/layout_tests/port/config_unittest.py:
- (ConfigTest.test_default_configuration__standalone):
- (ConfigTest.test_default_configuration__scripterror):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.make_port):
- (DriverTest.test_no_timeout):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/mac.py:
- (MacPort.show_results_html_file):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (TestWebKitPort.__init__):
- (PortTestCase.make_port):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.make_driver):
- (XvfbDriverTest.test_stop):
- * Scripts/webkitpy/style/checkers/python.py:
- (Pylinter.__init__):
-
-2012-11-14 Dana Jansens <danakj@chromium.org>
-
- [chromium] WebPreferences reset() should set perTilePainting and acceleratedAnimation settings to false.
- https://bugs.webkit.org/show_bug.cgi?id=102296
-
- Reviewed by James Robinson.
-
- These settings are always set by TestShell anyhow, but we should be
- setting them to false here along with everything else.
-
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
-
-2012-11-08 Andy Estes <aestes@apple.com>
-
- [WebKit2] Need API in UIProcess to enable loading of custom protocols
- https://bugs.webkit.org/show_bug.cgi?id=101674
-
- Reviewed by Brady Eidson.
-
- Add an API test that implements a custom protocol and attempts to load
- a resource requiring that protocol in a WKView. The test passes only if
- didFinishLoadForFrame: fires.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm: Added.
- (+[TestProtocol canInitWithRequest:]):
- (+[TestProtocol canonicalRequestForRequest:]):
- (+[TestProtocol requestIsCacheEquivalent:toRequest:]):
- (-[TestProtocol startLoading]):
- (-[TestProtocol stopLoading]):
- * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
- * TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextControllerInternal.h.
- * TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm: Copied from Source/WebKit2/UIProcess/API/mac/WKBrowsingContextControllerInternal.h.
- (-[TestBrowsingContextLoadDelegate initWithBlockToRunOnLoad:]):
- (-[TestBrowsingContextLoadDelegate browsingContextControllerDidFinishLoad:]):
-
-2012-11-14 Ojan Vafai <ojan@chromium.org>
-
- Fix some defuct flakiness dashboard unittests.
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-11-14 Glenn Adams <glenn@skynav.com>
-
- webkitpy: print-expectations - add --paths option to print only paths of test expectation files
- https://bugs.webkit.org/show_bug.cgi?id=102269
-
- Reviewed by Dirk Pranke.
-
- Add --paths option to print-expectations command in order to obtain list of applicable
- test expectation file paths.
-
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.__init__):
- (PrintExpectations.execute):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (PrintExpectationsTest.run_test):
- (PrintExpectationsTest.test_paths):
-
-2012-11-14 James Robinson <jamesr@chromium.org>
-
- webgl-background-color.html started failing
- https://bugs.webkit.org/show_bug.cgi?id=102247
-
- Reviewed by Adrienne Walker.
-
- The compositor thread should outlive the WebView.
-
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2012-11-14 Nate Chapin <japhet@chromium.org>
-
- Move empty loading to DocumentLoader, simplify FrameLoader::init()
- https://bugs.webkit.org/show_bug.cgi?id=101512
-
- Reviewed by Adam Barth.
-
- Chromium DRT has some code that doesn't play nicely with empty urls and incorrectly
- interprets them as a non-empty load. This ensures
- http/tests/navigation/new-window-redirect-history.html continues to pass
- in chromium.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::updateForCommittedLoad):
-
-2012-11-14 Zan Dobersek <zandobersek@gmail.com>
-
- Remove uses of deprecated unittest.TestCase aliases
- https://bugs.webkit.org/show_bug.cgi?id=102253
-
- Reviewed by Dirk Pranke.
-
- Replace the deprecated unittest.TestCase methods with the corresponding methods
- everywhere inside the Tools directory. The following replacements are done:
- - assertEquals -> assertEqual
- - assert_ -> assertTrue
- - failUnlessRaises -> assertRaises
-
- * BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py:
- (SVNMirrorTest.test_CheckOutSource):
- * QueueStatusServer/model/queuepropertymixin_unittest.py:
- (QueuePropertyMixinTest.test_queue_property):
- * QueueStatusServer/model/queues_unittest.py:
- (QueueTest._assert_short_name):
- (QueueTest._assert_display_name):
- (QueueTest._assert_name_with_underscores):
- * QueueStatusServer/model/workitems_unittest.py:
- (WorkItemsTest.test_display_position_for_attachment):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_parse_log_entries_from_changelog):
- (test_parse_log_entries_from_annotated_file):
- (_assert_parse_reviewer_text_and_list):
- (_assert_parse_reviewer_text_list):
- (_assert_fuzzy_reviewer_match):
- (_assert_parse_authors):
- (test_latest_entry_parse):
- (test_latest_entry_parse_single_entry):
- (test_set_reviewer):
- (test_set_short_description_and_bug_url):
- * Scripts/webkitpy/common/checkout/diff_parser_unittest.py:
- (DiffParserTest.test_diff_parser):
- * Scripts/webkitpy/common/checkout/scm/scm_unittest.py:
- (GitSVNTest.test_revisions_changing_files_with_local_commit):
- (GitSVNTest.test_upstream_branch):
- (GitSVNTest.test_create_patch_with_rm_and_changed_files):
- (GitTestWithMock.test_push_local_commits_to_server_with_username_and_password):
- * Scripts/webkitpy/common/config/ports_unittest.py:
- (DeprecatedPortTest.test_mac_port):
- (DeprecatedPortTest.test_gtk_port):
- (DeprecatedPortTest.test_efl_port):
- (DeprecatedPortTest.test_qt_port):
- (DeprecatedPortTest.test_chromium_port):
- (DeprecatedPortTest.test_chromium_android_port):
- (DeprecatedPortTest.test_chromium_xvfb_port):
- * Scripts/webkitpy/common/config/urls_unittest.py:
- (URLsTest.test_parse_bug_id):
- (URLsTest.test_parse_attachment_id):
- * Scripts/webkitpy/common/find_files_unittest.py:
- (TestWinNormalize.assert_filesystem_normalizes):
- * Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py:
- (test_url_creation):
- (test_parse_bug_id):
- (_assert_dictionaries_equal):
- (test_parse_bugs_from_xml):
- (test_attachment_detail_bug_parsing):
- (_assert_result_count):
- (test_request_page_parsing):
- (test_quip_page_parsing):
- (EditUsersParserTest._assert_login_userid_pairs):
- * Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py:
- (test_status_parsing):
- (test_latest_cached_build):
- (test_results_zip_url):
- * Scripts/webkitpy/common/net/credentials_unittest.py:
- (test_credentials_from_environment):
- * Scripts/webkitpy/common/net/failuremap_unittest.py:
- (FailureMapTest.test_failing_revisions):
- (FailureMapTest.test_new_failures):
- (FailureMapTest.test_new_failures_with_old_revisions):
- (FailureMapTest.test_new_failures_with_more_old_revisions):
- (FailureMapTest.test_tests_failing_for):
- (FailureMapTest.test_failing_tests):
- * Scripts/webkitpy/common/net/layouttestresults_unittest.py:
- (LayoutTestResultsTest.test_set_failure_limit_count):
- * Scripts/webkitpy/common/net/unittestresults_unittest.py:
- (UnitTestResultsTest.test_nostring):
- (UnitTestResultsTest.test_emptystring):
- * Scripts/webkitpy/common/read_checksum_from_png_unittest.py:
- (ReadChecksumFromPngTest.test_read_checksum):
- * Scripts/webkitpy/common/system/deprecated_logging_unittest.py:
- (LoggingTest.assert_log_equals):
- * Scripts/webkitpy/common/system/executive_unittest.py:
- (ScriptErrorTest.test_string_from_args):
- (ScriptErrorTest.test_message_with_output):
- (ExecutiveTest.test_run_command_with_bad_command):
- (ExecutiveTest.test_run_command_with_unicode):
- (ExecutiveTest.serial_test_run_in_parallel):
- * Scripts/webkitpy/common/system/filesystem_mock_unittest.py:
- (MockFileSystemTest.quick_check):
- * Scripts/webkitpy/common/system/filesystem_unittest.py:
- (GenericFileSystemTests.test_glob__trailing_asterisk):
- (GenericFileSystemTests.test_glob__leading_asterisk):
- (GenericFileSystemTests.test_glob__middle_asterisk):
- (GenericFileSystemTests.test_glob__period_is_escaped):
- (RealFileSystemTest.test_chdir):
- (RealFileSystemTest.test_remove_file_with_retry):
- (RealFileSystemTest.test_sep):
- * Scripts/webkitpy/common/system/logtesting.py:
- (TestLogStream.assertMessages):
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- (GetLoggerTest.test_get_logger_in_webkitpy):
- (GetLoggerTest.test_get_logger_not_in_webkitpy):
- * Scripts/webkitpy/common/system/outputcapture.py:
- (OutputCaptureTestCaseBase.assertStdout):
- (OutputCaptureTestCaseBase.assertStderr):
- * Scripts/webkitpy/common/system/path_unittest.py:
- (AbspathTest.test_abspath_to_uri_cygwin):
- (AbspathTest.test_abspath_to_uri_unixy):
- (AbspathTest.test_abspath_to_uri_win):
- (AbspathTest.test_abspath_to_uri_escaping_unixy):
- (AbspathTest.test_abspath_to_uri_escaping_cygwin):
- * Scripts/webkitpy/common/system/platforminfo_unittest.py:
- (TestPlatformInfo.test_real_code):
- (TestPlatformInfo.test_os_name_and_wrappers):
- (TestPlatformInfo.test_os_version):
- (TestPlatformInfo.test_total_bytes_memory):
- * Scripts/webkitpy/common/system/user_unittest.py:
- (UserTest.test_confirm.mock_raw_input):
- (UserTest.test_confirm):
- * Scripts/webkitpy/common/system/zipfileset_unittest.py:
- (ZipFileSetTest.test_open):
- (ZipFileSetTest.test_read):
- * Scripts/webkitpy/common/watchlist/watchlist_unittest.py:
- (WatchListTest.test_filename_definition_no_matches):
- (WatchListTest.test_filename_definition):
- (WatchListTest.test_cc_rules_simple):
- (WatchListTest.test_cc_rules_complex):
- (WatchListTest.test_cc_and_message_rules_complex):
- (WatchListTest.test_cc_and_message_rules_no_matches):
- (WatchListTest.test_added_match):
- (WatchListTest.test_deleted_match):
- (WatchListTest.test_more_and_less_match):
- (WatchListTest.test_complex_match):
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py:
- (LockCheckingRunner.handle_finished_list):
- (LayoutTestRunnerTests.test_interrupt_if_at_failure_limits):
- (LayoutTestRunnerTests.test_update_summary_with_result):
- (LayoutTestRunnerTests.test_servers_started):
- (SharderTests.assert_shards):
- (SharderTests.test_shard_in_two_has_no_locked_shards):
- (SharderTests.test_shard_in_two_has_no_unlocked_shards):
- (NaturalCompareTest.assert_cmp):
- (KeyCompareTest.assert_cmp):
- * Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py:
- (TestConfigurationTest.test_items):
- (TestConfigurationTest.test_keys):
- (TestConfigurationTest.test_str):
- (TestConfigurationTest.test_repr):
- (TestConfigurationTest.test_hash):
- (TestConfigurationTest.test_eq):
- (TestConfigurationTest.test_values):
- (SpecifierSorterTest.test_init):
- (SpecifierSorterTest.test_add_specifier):
- (SpecifierSorterTest.test_add_macros):
- (SpecifierSorterTest.test_category_priority):
- (SpecifierSorterTest.test_specifier_priority):
- (SpecifierSorterTest.test_sort_specifiers):
- (TestConfigurationConverterTest.test_symmetric_difference):
- (TestConfigurationConverterTest.test_to_config_set):
- (TestConfigurationConverterTest.test_macro_expansion):
- (TestConfigurationConverterTest.test_to_specifier_lists):
- (TestConfigurationConverterTest.test_macro_collapsing):
- (TestConfigurationConverterTest.test_converter_macro_collapsing):
- (TestConfigurationConverterTest.test_specifier_converter_access):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (assert_exp):
- (MiscTests.test_result_was_expected):
- (MiscTests.test_remove_pixel_failures):
- (MiscTests.test_suffixes_for_expectations):
- (MiscTests.test_get_expectations_string):
- (SkippedTests.check):
- (ExpectationSyntaxTests.assert_tokenize_exp):
- (SemanticTests.test_bad_bugid):
- (SemanticTests.test_missing_bugid):
- (TestExpectationSerializationTests.test_reconstitute_only_these):
- * Scripts/webkitpy/layout_tests/models/test_failures_unittest.py:
- (TestFailuresTest.test_crashes):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_nonexistant_expectations):
- (PortTest.test_additional_expectations):
- * Scripts/webkitpy/layout_tests/port/builders_unittest.py:
- (BuildersTest.test_path_from_name):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.test_attributes):
- (ChromiumAndroidPortTest.test_default_timeout_ms):
- (ChromiumAndroidPortTest.test_get_devices_one_device):
- (ChromiumAndroidPortTest.test_get_devices_two_devices):
- (ChromiumAndroidPortTest.test_get_device_serial_one_device):
- (ChromiumAndroidPortTest.test_get_device_serial_two_devices):
- (ChromiumAndroidPortTest.test_must_require_http_server):
- (ChromiumAndroidDriverTest.test_get_last_stacktrace):
- (ChromiumAndroidDriverTest.test_get_crash_log):
- (ChromiumAndroidDriverTest.test_cmd_line):
- (ChromiumAndroidDriverTest.test_read_prompt):
- (ChromiumAndroidDriverTest.test_command_from_driver_input):
- (ChromiumAndroidDriverTwoDriversTest.test_two_drivers):
- (ChromiumAndroidTwoPortsTest.test_options_with_two_ports):
- * Scripts/webkitpy/layout_tests/port/chromium_linux_unittest.py:
- (ChromiumLinuxPortTest.assert_architecture):
- (ChromiumLinuxPortTest.test_determine_architecture_fails):
- (ChromiumLinuxPortTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.assert_name):
- (ChromiumMacPortTest.test_baseline_path):
- (ChromiumMacPortTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_default_max_locked_shards):
- (ChromiumPortTestCase.test_default_timeout_ms):
- (ChromiumPortTestCase.test_default_pixel_tests):
- (ChromiumPortTestCase.test_all_test_configurations):
- (ChromiumPortTestCase.test_default_configuration):
- (ChromiumPortTestCase.test_diff_image):
- (ChromiumPortTestCase.test_diff_image_crashed):
- (ChromiumPortTestCase.test_expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_win_unittest.py:
- (ChromiumWinTest.test_setup_environ_for_server_cygpath):
- (ChromiumWinTest.assert_name):
- (ChromiumWinTest.test_baseline_path):
- (ChromiumWinTest.test_path_to_image_diff):
- * Scripts/webkitpy/layout_tests/port/driver_unittest.py:
- (DriverTest.test_read_block):
- (DriverTest.test_read_binary_block):
- (DriverTest.test_read_base64_block):
- (DriverTest.test_no_timeout):
- (DriverTest.test_check_for_driver_crash.assert_crash):
- (DriverTest.test_creating_a_port_does_not_write_to_the_filesystem):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_get_from_builder_name):
- * Scripts/webkitpy/layout_tests/port/gtk_unittest.py:
- (GtkPortTest.test_default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/http_lock_unittest.py:
- (HttpLockTest.test_current_lock_pid):
- * Scripts/webkitpy/layout_tests/port/image_diff_unittest.py:
- (TestImageDiffer.test_diff_image_failed):
- (TestImageDiffer.test_diff_image_passed):
- * Scripts/webkitpy/layout_tests/port/leakdetector_unittest.py:
- (LeakDetectorTest.test_leaks_args):
- (test_parse_leaks_output):
- (test_leaks_files_in_directory):
- (test_count_total_leaks):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_default_timeout_ms):
- (assert_name):
- (test_setup_environ_for_server):
- (_assert_search_path):
- (test_32bit):
- (test_64bit):
- * Scripts/webkitpy/layout_tests/port/mock_drt_unittest.py:
- (MockTestShellTest.test_pixeltest__fails):
- (MockTestShellTest.test_test_shell_parse_options):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_default_max_locked_shards):
- (PortTestCase.test_default_timeout_ms):
- (PortTestCase.test_default_pixel_tests):
- (PortTestCase.test_diff_image):
- (PortTestCase.test_diff_image_crashed):
- (PortTestCase.test_get_crash_log):
- (PortTestCase.assert_build_path):
- (PortTestCase.test_expectations_ordering):
- (_assert_config_file_for_platform):
- (test_path_to_apache_config_file):
- (test_additional_platform_directory):
- * Scripts/webkitpy/layout_tests/port/qt_unittest.py:
- (QtPortTest._assert_search_path):
- (QtPortTest._assert_expectations_files):
- (QtPortTest.test_setup_environ_for_server):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
- (TestServerProcess.test_basic):
- (TestServerProcess.test_broken_pipe):
- * Scripts/webkitpy/layout_tests/port/win_unittest.py:
- (WinPortTest._assert_search_path):
- (WinPortTest._assert_version):
- (WinPortTest.test_runtime_feature_list):
- (WinPortTest.test_expectations_files):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations):
- (MainTest.test_all):
- (MainTest.test_repeat_each):
- (MainTest.test_skipped_flag):
- (MainTest.test_iterations):
- (MainTest.test_run_chunk):
- (MainTest.test_run_part):
- (MainTest.test_run_singly):
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_single_file):
- (MainTest.test_single_file_with_prefix):
- (MainTest.test_single_skipped_file):
- (MainTest.test_stderr_is_saved):
- (MainTest.test_test_list):
- (MainTest.test_test_list_with_prefix):
- (MainTest.test_missing_and_unexpected_results):
- (MainTest.test_pixel_test_directories):
- (MainTest.test_missing_and_unexpected_results_with_custom_exit_code):
- (MainTest.test_crash_log):
- (MainTest.test_web_process_crash_log):
- (MainTest.test_exit_after_n_failures_upload):
- (MainTest.test_exit_after_n_failures):
- (MainTest.test_exit_after_n_crashes):
- (MainTest.test_retrying_and_flaky_tests):
- (MainTest.test_run_order__inline):
- (MainTest.test_reftest_run):
- (MainTest.test_reftest_run_reftests_if_pixel_tests_are_disabled):
- (MainTest.test_reftest_skip_reftests_if_no_ref_tests):
- (MainTest.test_reftest_expected_html_should_be_ignored):
- (MainTest.test_reftest_driver_should_run_expected_html):
- (MainTest.test_reftest_driver_should_run_expected_mismatch_html):
- (MainTest.test_output_diffs):
- (MainTest.test_unsupported_platform):
- (EndToEndTest.test_end_to_end):
- (RebaselineTest.test_reset_results):
- (RebaselineTest.test_missing_results):
- (RebaselineTest.test_new_baseline):
- * Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py:
- (BaseTest.integration_test_server__normal):
- (BaseTest.integration_test_server__fails):
- (BaseTest.integration_test_port_and_root):
- * Scripts/webkitpy/layout_tests/servers/http_server_unittest.py:
- (TestHttpServer.test_start_cmd):
- * Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py:
- (RegularTest.test_logging_not_included):
- (RegularTest._basic):
- (RegularTest.test_basic):
- (RegularTest.test_log_after_update):
- (RegularTest.test_log_args):
- (TtyTest.test_basic):
- (TtyTest.test_log_after_update):
- (VerboseTest.test_basic):
- (VerboseTest.test_log_after_update):
- (VerboseTest.test_log_args):
- * Scripts/webkitpy/layout_tests/views/printing_unittest.py:
- (Testprinter.assertWritten):
- (test_test_status_line):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (MainTest.assertWritten):
- * Scripts/webkitpy/style/checker_unittest.py:
- (GlobalVariablesTest.test_webkit_base_filter_rules):
- (CheckerDispatcherSkipTest._assert_should_skip_without_warning):
- (CheckerDispatcherCarriageReturnTest.test_should_check_and_strip_carriage_returns):
- (CheckerDispatcherDispatchTest.assert_checker):
- (CheckerDispatcherDispatchTest.test_changelog_paths):
- (CheckerDispatcherDispatchTest.test_cpp_paths):
- (CheckerDispatcherDispatchTest.test_json_paths):
- (CheckerDispatcherDispatchTest.test_python_paths):
- (CheckerDispatcherDispatchTest.test_text_paths):
- (CheckerDispatcherDispatchTest.test_xml_paths):
- (StyleProcessorConfigurationTest.test_init):
- (StyleProcessorConfigurationTest.test_write_style_error_emacs):
- (StyleProcessorConfigurationTest.test_write_style_error_vs7):
- (StyleProcessor_EndToEndTest.test_init):
- (StyleProcessor_EndToEndTest.test_process):
- (StyleProcessor_CodeCoverageTest.test_process__checker_dispatched):
- * Scripts/webkitpy/style/checkers/changelog_unittest.py:
- (ChangeLogCheckerTest.assert_error.handle_style_error):
- (ChangeLogCheckerTest.test_init):
- * Scripts/webkitpy/style/checkers/common_unittest.py:
- (CarriageReturnCheckerTest.assert_carriage_return):
- (TabCheckerTest.assert_tab):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (CppFunctionsTest.test_convert_to_lower_with_underscores):
- (CppFunctionsTest.test_create_acronym):
- (CppFunctionsTest.test_parameter):
- (CppFunctionsTest.test_single_line_view):
- (CppFunctionsTest.test_create_skeleton_parameters):
- (CppFunctionsTest.test_find_parameter_name_index):
- (CppFunctionsTest.test_parameter_list):
- (CppFunctionsTest.test_check_parameter_against_text):
- (CppStyleTestBase.perform_lint):
- (CppStyleTestBase.assert_lint):
- (CppStyleTestBase.assert_lint_one_of_many_errors_re):
- (CppStyleTestBase.assert_multi_line_lint):
- (CppStyleTestBase.assert_language_rules_check):
- (CppStyleTestBase.assert_include_what_you_use):
- (CppStyleTestBase.assert_blank_lines_check):
- (CppStyleTestBase.assert_positions_equal):
- (FunctionDetectionTest.perform_function_detection):
- (CppStyleTest.test_get_line_width):
- (CppStyleTest.test_find_next_multi_line_comment_start):
- (CppStyleTest.test_find_next_multi_line_comment_end):
- (CppStyleTest.test_remove_multi_line_comments_from_range):
- (CppStyleTest.test_position):
- (CppStyleTest.test_rfind_in_lines):
- (CppStyleTest.test_close_expression):
- (CppStyleTest.test_include_what_you_use_no_implementation_files):
- (CppStyleTest.test_include_what_you_use):
- (CppStyleTest.test_files_belong_to_same_module):
- (CppStyleTest.test_cleanse_line):
- (CppStyleTest.test_multiline_strings):
- (CppStyleTest.test_newline_at_eof.do_test):
- (CppStyleTest.test_invalid_utf8.do_test):
- (CppStyleTest.test_is_blank_line):
- (CppStyleTest.test_allow_blank_line_before_closing_namespace):
- (CppStyleTest.test_allow_blank_line_before_if_else_chain):
- (CppStyleTest.test_else_on_same_line_as_closing_braces):
- (CppStyleTest.test_build_header_guard):
- (CppStyleTest.test_legal_copyright):
- (CleansedLinesTest.test_init):
- (CleansedLinesTest.test_init_empty):
- (CleansedLinesTest.test_collapse_strings):
- (CheckForFunctionLengthsTest.assert_function_lengths_check):
- (PassPtrTest.assert_pass_ptr_check):
- (LeakyPatternTest.assert_leaky_pattern_check):
- (WebKitStyleTest.test_parameter_names):
- (WebKitStyleTest.test_webkit_export_check):
- (CppCheckerTest.test_init):
- * Scripts/webkitpy/style/checkers/jsonchecker_unittest.py:
- (JSONCheckerTest.assert_error.handle_style_error):
- (JSONCheckerTest.test_init):
- * Scripts/webkitpy/style/checkers/png_unittest.py:
- (PNGCheckerTest.test_init):
- (PNGCheckerTest.test_check):
- * Scripts/webkitpy/style/checkers/python_unittest.py:
- (PythonCheckerTest.test_init):
- (PythonCheckerTest.test_check):
- * Scripts/webkitpy/style/checkers/test_expectations_unittest.py:
- (TestExpectationsTestCase._expect_port_for_expectations_path):
- (TestExpectationsTestCase.assert_lines_lint):
- * Scripts/webkitpy/style/checkers/text_unittest.py:
- (TextStyleTestCase.assertNoError):
- (TextStyleTestCase.assertError.error_for_test):
- (TextStyleTestCase.assertError):
- (TextCheckerTest.test_init):
- * Scripts/webkitpy/style/checkers/watchlist_unittest.py:
- (WatchListTest.test_basic_error_message.handle_style_error):
- (WatchListTest):
- * Scripts/webkitpy/style/checkers/xcodeproj_unittest.py:
- (XcodeProjectFileCheckerTest.assert_error):
- * Scripts/webkitpy/style/checkers/xml_unittest.py:
- (XMLCheckerTest.assert_error.handle_style_error):
- (XMLCheckerTest.test_init):
- * Scripts/webkitpy/style/error_handlers_unittest.py:
- (DefaultStyleErrorHandlerTest._check_initialized):
- (DefaultStyleErrorHandlerTest.test_non_reportable_error):
- (DefaultStyleErrorHandlerTest.test_max_reports_per_category):
- (DefaultStyleErrorHandlerTest.test_line_numbers):
- * Scripts/webkitpy/style/filereader_unittest.py:
- (TextFileReaderTest._assert_file_reader):
- (TextFileReaderTest.test_process_file__does_not_exist):
- (TextFileReaderTest.test_count_delete_only_file):
- * Scripts/webkitpy/style/filter_unittest.py:
- (CategoryFilterTest.test_init):
- (CategoryFilterTest.test_init_default_arguments):
- (CategoryFilterTest.test_str):
- (FilterConfigurationTest.test_init):
- (FilterConfigurationTest.test_default_arguments):
- * Scripts/webkitpy/style/main_unittest.py:
- (ChangeDirectoryTest._assert_result):
- * Scripts/webkitpy/style/optparser_unittest.py:
- (ArgumentPrinterTest.test_to_flag_string):
- (ArgumentParserTest.test_parse_default_arguments):
- (ArgumentParserTest.test_parse_explicit_arguments):
- (ArgumentParserTest.test_parse_files):
- (CommandOptionValuesTest.test_init):
- * Scripts/webkitpy/style/patchreader_unittest.py:
- (PatchReaderTest._assert_checked):
- * Scripts/webkitpy/test/finder_unittest.py:
- (FinderTest.test_additional_system_paths):
- (FinderTest.test_to_module):
- (FinderTest.check_names):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_individual_names_are_not_run_twice):
- (TesterTest.test_integration_tests_are_not_found_by_default):
- (TesterTest.test_integration_tests_are_found):
- (TesterTest.integration_test_coverage_works):
- * Scripts/webkitpy/test/runner_unittest.py:
- (RunnerTest.test_run):
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (_expect_validate):
- * Scripts/webkitpy/tool/bot/expectedfailures_unittest.py:
- (ExpectedFailuresTest._assert_can_trust):
- (ExpectedFailuresTest.test_unexpected_failures_observed):
- (ExpectedFailuresTest.test_unexpected_failures_observed_when_tree_is_hosed):
- * Scripts/webkitpy/tool/bot/feeders_unittest.py:
- (test_patches_with_acceptable_review_flag):
- * Scripts/webkitpy/tool/bot/irc_command_unittest.py:
- (IRCCommandTest.test_whois):
- (IRCCommandTest.test_create_bug):
- (IRCCommandTest.test_roll_chromium_deps):
- (IRCCommandTest.test_rollout):
- * Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py:
- (LayoutTestResultsReaderTest.test_missing_layout_test_results):
- (test_missing_unit_test_results_path):
- (test_layout_test_results):
- * Scripts/webkitpy/tool/bot/queueengine_unittest.py:
- (LoggingDelegate.process_work_item):
- (LoggingDelegate.handle_unexpected_error):
- (QueueEngineTest.test_trivial):
- (QueueEngineTest.test_unexpected_error):
- (QueueEngineTest.test_handled_error):
- (QueueEngineTest._test_terminating_queue):
- * Scripts/webkitpy/tool/commands/openbugs_unittest.py:
- (OpenBugsTest.test_find_bugs_in_string):
- * Scripts/webkitpy/tool/commands/queries_unittest.py:
- (FailureReasonTest.test_blame_line_for_revision):
- (PrintExpectationsTest.run_test):
- (PrintBaselinesTest.test_basic):
- (PrintBaselinesTest.test_multiple):
- (PrintBaselinesTest.test_csv):
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
- (AbstractQueueTest.test_log_directory):
- (AbstractPatchQueueTest.test_next_patch):
- (test_auto_retry):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test):
- (test_rebaseline_test_with_results_directory):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (test_rebaseline_test_internal_with_move_overwritten_baselines_to):
- (TestRebaselineJson.test_rebaseline_all):
- (TestRebaselineJson.test_rebaseline_debug):
- (TestRebaselineJson.test_move_overwritten):
- (TestRebaselineJson.test_no_optimize):
- (TestRebaselineJson.test_results_directory):
- (TestRebaseline.test_rebaseline):
- (TestRebaselineExpectations.test_rebaseline_expectations_noop):
- (TestRebaselineExpectations.disabled_test_overrides_are_included_correctly):
- (TestAnalyzeBaselines.test_default):
- (TestAnalyzeBaselines.test_missing_baselines):
- * Scripts/webkitpy/tool/commands/roll_unittest.py:
- (PostRollCommandsTest.test_prepare_state):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
- * Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py:
- (AddSvnMimetypeForPngTest.test_run):
- * Scripts/webkitpy/tool/steps/preparechangelog_unittest.py:
- (PrepareChangeLogTest.test_ensure_bug_url):
- * Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py:
- (_assert_message_for_revert_output):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest._test_merge):
- (JsonResultsTest._test_get_test_list):
-
-2012-11-14 János Badics <jbadics@inf.u-szeged.hu>
-
- [Qt][ARM] Fix 'nullptr' is a keyword in C++11 [-Wc++0x-compat] warning
- https://bugs.webkit.org/show_bug.cgi?id=102083
-
- Reviewed by Csaba Osztrogonác.
-
- Modified compiler name regex in condition that tests if -std=c++0x, c++11,
- gnu++0x or gnu++11 are enabled in order to match linux-arm-gnueabi-g++ too,
- thus enabling -Wno-c++0x-compat also on ARM compiler.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-11-14 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- REGRESSION(r133757): Causing webkitpy unit tests to fail
- https://bugs.webkit.org/show_bug.cgi?id=101444
-
- Reviewed by Csaba Osztrogonác.
-
- Updated the bot name on the unit tests.
-
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineTest.test_baseline_directory):
-
-2012-11-14 Byungwoo Lee <bw80.lee@samsung.com>
-
- [EFL][WK2] Rename variables, structures and functions of the MiniBrowser.
- https://bugs.webkit.org/show_bug.cgi?id=101517
-
- Reviewed by Gyuyoung Kim.
-
- Rename variables, structures and functions of the MiniBrowser
- for the naming consistency.
-
- 1) Browser_Window* {app_data|browser_window|window} -> window
-
- 2) Browser_Window::webview -> Browser_Window::ewk_view
- The webkit API functions are ewk_view_xxx not webview_xxx.
- So using ewk_view will be better than webview.
-
- 3) Browser_Window::window -> Browser_Window::elm_window
- The name is changed to be distinguished with 'Browser_Window *window'
-
- 4) browser_{window|view}_find() -> window_find_with_{elm_window|ewk_view}()
- This is changed because the name of the function can be confused.
- Currently, browser_window_find() returns Browser_Window*. And
- browser_view_find() also returns Browser_Window*.
-
- 5) FileSelectorData -> File_Selector_Data / AuthData -> Auth_Data
- The type definition is moved to the top of the source file
- and the name is changed to follow EFL style.
-
- * MiniBrowser/efl/main.c:
- (miniBrowserViewSmartClass):
- (_Browser_Window):
- (_File_Selector_Data):
- (_Auth_Data):
- (window_find_with_ewk_view):
- (window_free):
- (on_key_down):
- (view_focus_set):
- (on_mouse_down):
- (title_set):
- (on_title_changed):
- (on_url_changed):
- (on_back_forward_list_changed):
- (on_new_window):
- (on_close_window):
- (on_progress):
- (on_error):
- (on_download_request):
- (close_file_picker):
- (on_filepicker_parent_deletion):
- (on_filepicker_deletion):
- (on_fileselector_done):
- (on_file_chooser_request):
- (on_download_finished):
- (on_download_failed):
- (on_favicon_received):
- (on_view_icon_changed):
- (on_url_bar_activated):
- (on_url_bar_clicked):
- (on_back_button_clicked):
- (on_forward_button_clicked):
- (on_refresh_button_clicked):
- (on_javascript_alert):
- (on_javascript_confirm):
- (on_javascript_prompt):
- (on_window_geometry_get):
- (on_window_geometry_set):
- (on_fullscreen_deny):
- (on_fullscreen_enter):
- (on_fullscreen_exit):
- (auth_popup_close):
- (on_auth_cancel):
- (on_auth_ok):
- (on_authentication_request):
- (on_tooltip_text_set):
- (on_tooltip_text_unset):
- (on_home_button_clicked):
- (on_window_deletion):
- (window_create):
-
-2012-11-14 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- webkitpy: Update the EFL list of bots
- https://bugs.webkit.org/show_bug.cgi?id=102121
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update the EFL bots so we can use garden-o-matic.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-11-13 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][WK2] New window size should consult the window attributes
- https://bugs.webkit.org/show_bug.cgi?id=102122
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Take into account the size that was specified in window.open
- when creating a new window. This avoids ugly flashing on the screen.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_new_window):
- (window_create):
- (elm_main):
-
-2012-11-13 Dana Jansens <danakj@chromium.org>
-
- [chromium] Plumb WebCompositorSupport settings through WebLayerTreeSettings as well, in preparation for removing the settings from WebCompositorSupport
- https://bugs.webkit.org/show_bug.cgi?id=102146
-
- Reviewed by James Robinson.
-
- Pass settings that go through WebCompositorSupport also through
- WebLayerTreeSettings. When the compositor starts using those instead,
- we can remove the callers to the WebCompositorSupport setters.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- (TestShell::setPerTilePaintingEnabled):
- (TestShell::setAcceleratedAnimationEnabled):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-11-13 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed, rolling out r134503.
- http://trac.webkit.org/changeset/134503
-
- Roll out a patch that was landed just to investigate svn
- trouble
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-13 Kentaro Hara <haraken@chromium.org>
-
- Unreviewed. Investigating svn trouble. Test commit.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r134446.
- http://trac.webkit.org/changeset/134446
- https://bugs.webkit.org/show_bug.cgi?id=101968
-
- Need to try a different strategy for landing a two-sided patch
- (3/3).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- (TestShell::setPerTilePaintingEnabled):
- (TestShell::setAcceleratedAnimationEnabled):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-11-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r134449.
- http://trac.webkit.org/changeset/134449
- https://bugs.webkit.org/show_bug.cgi?id=102076
-
- Re-rolling in the patch, it was innocent.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2012-11-13 Dimitri Glazkov <dglazkov@chromium.org>
-
- Unreviewed, rolling out r134424.
- http://trac.webkit.org/changeset/134424
- https://bugs.webkit.org/show_bug.cgi?id=102076
-
- Made fast/dom/Window/open-window-min-size.html crash.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2012-11-12 Dana Jansens <danakj@chromium.org>
-
- [chromium] Remove the WebCompositorSupport methods for changing settings, plumb everything through WebLayerTreeSettings
- https://bugs.webkit.org/show_bug.cgi?id=101968
-
- Reviewed by James Robinson.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setPerTilePaintingEnabled):
- (TestShell::setAcceleratedAnimationEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-11-13 Dirk Pranke <dpranke@chromium.org>
-
- Fix webkitpy issues arising from a partially-installed pylint.
- Unreviewed, build fix.
-
- This patch ensures that we will re-install the pylint and logilab
- packages if any of them are missing, not just the pylint package.
-
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_pylint):
-
-2012-11-13 No'am Rosenthal <noam.rosenthal@nokia.com>
-
- Unreviewed, adding my new email address to committers.py and watchlist.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-11-13 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [CMake] Incorrect dependency calculation when generating forwarding headers
- https://bugs.webkit.org/show_bug.cgi?id=102076
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Explicitly call generate-forwarding-headers.pl on ${WEBKIT2_DIR} as
- well, since some dependencies pulled in via the WebKit2/WebKit2_C.h
- include in config.h are only generated from there.
-
- This is a bit redundant since this is also done in WebKit2's
- PlatformEfl.cmake, however the WTF and WebCore API tests do not depend
- on WebKit2 so the script may not have been called when these tests are
- being built.
-
- * TestWebKitAPI/PlatformEfl.cmake:
-
-2012-11-13 Zeno Albisser <zeno@webkit.org>
-
- Unreviewed: Adding watchlist definition for CoordinatedGraphics.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-11-13 Hugo Parente Lima <hugo.lima@openbossa.org>
-
- [cmake] Do not use GLOB to add WTR IDL files to buildsystem.
- https://bugs.webkit.org/show_bug.cgi?id=101785
-
- Reviewed by Caio Marcelo de Oliveira Filho.
-
- Using *.idl makes impossible to add IDL files depending on compiler flags,
- like a possible GamepadController.idl file found on Chromium.
-
- * WebKitTestRunner/CMakeLists.txt:
-
-2012-11-13 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] TestRunner should depend on webkit_wtf_support instead of compiling the files itself
- https://bugs.webkit.org/show_bug.cgi?id=102075
-
- Reviewed by Pavel Feldman.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-11-13 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][DRT] Remove extra layoutFrame() call when preparing to send an event via EventSender.
- https://bugs.webkit.org/show_bug.cgi?id=102074
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (feedMouseEvent): Do not call DumpRenderTreeSupportEfl::layoutFrame()
- when sending an event, as it causes additional repaints that create
- wrong pixel results for tests such as
- fast/repaint/overflow-auto-in-overflow-auto-scrolled.html.
-
-2012-11-13 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Enable Mutation observer
- https://bugs.webkit.org/show_bug.cgi?id=102066
-
- Reviewed by Pavel Feldman.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-11-13 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - platform/blackberry/editing/text-iterator/findString-markers.html failed
- https://bugs.webkit.org/show_bug.cgi?id=102056
-
- Reviewed by Rob Buis.
-
- RIM PR 235836
-
- TestRunner::findString() was changed to call Page::findString() instead
- of WebPage::findNextString(). Page::findString() doesn't update
- TextMatch markers.
- Work-around by calling both Page::findString() and WebPage::findNextString().
-
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::findString):
-
-2012-11-12 Jochen Eisinger <jochen@chromium.org>
-
- Add the TestRunner public API to the ChromiumPublicApi watchlist, and introduce an entry for ChromiumTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=101957
-
- Reviewed by Adam Barth.
-
- Chromium now also depends on the TestRunner public API, and as such, similar rules as for the Chromium WebKit API should apply.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-11-13 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move tracking of damaged regions from WebViewHost to WebTestProxy
- https://bugs.webkit.org/show_bug.cgi?id=101927
-
- Reviewed by Adam Barth.
-
- This will allow for sharing the code with content_shell
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::display):
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h:
- (WebKit):
- (WebTestProxyBase):
- (WebTestRunner::WebTestProxy::didInvalidateRect):
- (WebTestRunner::WebTestProxy::didScrollRect):
- (WebTestRunner::WebTestProxy::scheduleComposite):
- (WebTestRunner::WebTestProxy::scheduleAnimation):
- (WebTestRunner::WebTestProxy::setWindowRect):
- (WebTestRunner::WebTestProxy::show):
- (WebTestRunner::WebTestProxy::didAutoResize):
- (WebTestRunner::WebTestProxy::postAccessibilityNotification):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp:
- (WebTestRunner::WebTestProxyBase::setPaintRect):
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::paintRect):
- (WebTestRunner::WebTestProxyBase::didInvalidateRect):
- (WebTestRunner::WebTestProxyBase::didScrollRect):
- (WebTestRunner::WebTestProxyBase::scheduleComposite):
- (WebTestRunner::WebTestProxyBase::scheduleAnimation):
- (WebTestRunner::WebTestProxyBase::show):
- (WebTestRunner::WebTestProxyBase::setWindowRect):
- (WebTestRunner::WebTestProxyBase::didAutoResize):
- (WebTestRunner::WebTestProxyBase::postAccessibilityNotification):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::scheduleAnimation):
- (WebViewHost::show):
- (WebViewHost::setWindowRect):
- (WebViewHost::WebViewHost):
- (WebViewHost::proxy):
- (WebViewHost::setProxy):
- (WebViewHost::reset):
- (WebViewHost::paintInvalidatedRegion):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up lint errors, part 1
- https://bugs.webkit.org/show_bug.cgi?id=102024
-
- Reviewed by Adam Barth.
-
- This patch cleans up a lot of miscellaneous minor lint errors that
- apparently aren't caught by unit tests, and suppresses a few
- false positives.
-
- Also, this patch removes the garden-o-matic "rollout" entry point
- since it's no longer being used by the frontend (rather than
- fix it to not generate lint errors).
-
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive2.run_command):
- * Scripts/webkitpy/common/system/filesystem_mock.py:
- (MockFileSystem.copyfile):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._http_tests):
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.reference_files):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._teardown_performance):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.TestAndroidPort.__init__):
- (ChromiumPortTestCase.test_default_configuration):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase):
- (PortTestCase.test_driver_cmd_line):
- (PortTestCase.test_expectations_ordering):
- * Scripts/webkitpy/layout_tests/servers/http_server_base.py:
- (HttpServerBase._check_that_all_ports_are_available):
- * Scripts/webkitpy/style/checkers/python.py:
- (Pylinter):
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- (GardenOMatic.__init__):
- * Scripts/webkitpy/tool/commands/queues.py:
- (CommitQueue):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler):
- (GardeningHTTPRequestHandler.localresult):
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up lint errors, part 2
- https://bugs.webkit.org/show_bug.cgi?id=102029
-
- Reviewed by Adam Barth.
-
- This cleans up the remaining lint errors in webkitpy with four exceptions:
- 1) we don't lint thirdparty/ autoinstalled code, obviously
- 2) there's an intentional error in the unit tests for pylint itself
- 3) the implementation of webkit-patch optimize-expectations has
- an error but I think we can and should just remove that command as well.
- 4) I have not yet linted the test code
-
- * Scripts/webkitpy/common/newstringio.py:
- * Scripts/webkitpy/common/checkout/scm/scm.py:
- (SCM.find_checkout_root):
- (SCM.will.remote_merge_base):
- * Scripts/webkitpy/common/checkout/scm/scm_mock.py:
- * Scripts/webkitpy/common/checkout/scm/svn.py:
- (SVNRepository.has_authorization_for_realm):
- (SVN.__init__):
- * Scripts/webkitpy/common/config/contributionareas.py:
- (ContributionAreas.names):
- * Scripts/webkitpy/common/config/ports.py:
- (DeprecatedPort):
- * Scripts/webkitpy/common/net/buildbot/buildbot.py:
- (Builder.force_build):
- * Scripts/webkitpy/common/net/buildbot/buildbot_mock.py:
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_posix_threading):
- (check_spacing):
- * Scripts/webkitpy/style/optparser.py:
- (ArgumentParser._create_option_parser):
- * Scripts/webkitpy/tool/commands/abstractlocalservercommand.py:
- (AbstractLocalServerCommand.execute):
- * Scripts/webkitpy/tool/commands/download.py:
- (AbstractPatchProcessingCommand):
- (AbstractPatchProcessingCommand._process_patch):
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (AbstractEarlyWarningSystem):
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- remove 'webkit-patch optimize-expectations'
- https://bugs.webkit.org/show_bug.cgi?id=102032
-
- Reviewed by Adam Barth.
-
- Removing this command because it is totally broken (probably
- broke when I added support for multiple files in a cascade)
- and doesn't seem to do anything much useful. It certainly
- didn't actually optimize things.
-
- * Scripts/webkitpy/tool/commands/expectations.py: Removed.
-
-2012-11-12 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - Update Pixel Dump Support for OpenGL renderer
- https://bugs.webkit.org/show_bug.cgi?id=101894
-
- Reviewed by Rob Buis.
-
- RIM PR 241686
- Also remove an un-needed pixel lock, and fix a klocwork error in SKIA
- code path.
-
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
- (readPixelsUserInterfaceThread):
- (createBitmapContextFromWebView):
-
-2012-11-12 Daniel Bates <dbates@webkit.org>
-
- Perl errors from Tools/Scripts/copy-webkitlibraries-to-product-directory
- https://bugs.webkit.org/show_bug.cgi?id=101980
-
- Reviewed by Mark Rowe.
-
- Remove library libWebKitSystemInterfaceLeopard.a and libWebKitSystemInterfaceSnowLeopard.a
- from the list of libraries to copy to the specified built products directory
- as these libraries were removed from the repository in <http://trac.webkit.org/changeset/133670>.
-
- * Scripts/copy-webkitlibraries-to-product-directory:
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: integrate pylint into check-webkit-style, part I
- https://bugs.webkit.org/show_bug.cgi?id=101285
-
- Reviewed by Ojan Vafai.
-
- This patch re-works lint-webkitpy so that the logic is pushed
- into check-webkit-style (mostly); we don't yet control which
- messages are displayed using the rules in webkitpy/style/checker.py
- (we're still using the pylintrc to suppress messages instead),
- but otherwise things work. For now we will only report pylint
- "errors", not warnings.
-
- * Scripts/lint-webkitpy:
- * Scripts/webkitpy/style/checker.py:
- * Scripts/webkitpy/style/checkers/python.py:
- (PythonChecker):
- (PythonChecker.check):
- (PythonChecker._check_pep8):
- (PythonChecker._check_pylint):
- (Pylinter):
- (Pylinter.__init__):
- (Pylinter.run):
- (_FilteredStringIO):
- (_FilteredStringIO.__init__):
- (_FilteredStringIO.write):
- (_FilteredStringIO._filter):
- * Scripts/webkitpy/style/checkers/python_unittest.py:
- (PythonCheckerTest.test_check):
- * Scripts/webkitpy/style/checkers/python_unittest_input.py:
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: remove a bunch of broken chromium-specific flags
- https://bugs.webkit.org/show_bug.cgi?id=101979
-
- Reviewed by Tony Chang.
-
- There were a bunch of chromium-specific flags that used to be
- supported by NRWT (and handled and passed on to DRT) but have
- probably been broken for a long time and are currently ignored.
-
- This patch removes all of those flags; the rule of thumb going forward
- is that we should only add flags that affect how the python code functions.
- If a flag is just passed verbatim to DRT, the user can use --additional-drt-flag
- for that.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.setUp):
-
-2012-11-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Add --device-pixel-ratio command line option to EFL MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=101930
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added --device-pixel-ratio command line option to EFL MiniBrowser which sets
- the ratio between the CSS units and device pixels when the content is unscaled.
- Option is applied for all the views created by mini browser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
-
-2012-11-12 Dirk Pranke <dpranke@chromium.org>
-
- remove the chromium-mac-mountainlion TestExpectations file
- https://bugs.webkit.org/show_bug.cgi?id=101789
-
- Reviewed by Ojan Vafai.
-
- Nearly all of the tests have been updated for 10.8 and the remaining
- failures have been merged into the main TestExpectations file. We
- don't need this hook any more.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.operating_system):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_path_to_image_diff):
-
-2012-11-12 Peter Beverloo <peter@chromium.org>
-
- [Chromium-Android] Restart the device's shell in root before pushing data
- https://bugs.webkit.org/show_bug.cgi?id=101944
-
- Reviewed by Adam Barth.
-
- Setting up md5sum and pushing the executable, fonts and test resources was
- unintentionally being done prior to executing the "adb root" command,
- which restarts the device's shell to be root. Since test data is still
- being pushed to /data/local/tmp, writing to which requires root access,
- devices not running as root would throw a ScriptError.
-
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidDriver._setup_test):
-
-2012-11-12 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Support ResourceRequest's setTimeoutInterval
- https://bugs.webkit.org/show_bug.cgi?id=101731
-
- Reviewed by Simon Hausmann.
-
- Enable XHR_TIMEOUT now that we support the necessary feature.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-11-12 Gustavo Noronha Silva <gns@gnome.org>
-
- Unreviewed. Removing myself from the list of address to CC on EWS
- build failure; the CC turned out to just be too noisy so I'm
- tracking those in a different way.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (GtkEWS):
-
-2012-11-12 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Can not load MHTML documents
- https://bugs.webkit.org/show_bug.cgi?id=101765
-
- Reviewed by Simon Hausmann.
-
- Enable MHTML feature.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-11-12 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Schedule the RTCDataChannel events to be triggered at idle state
- https://bugs.webkit.org/show_bug.cgi?id=101751
-
- Reviewed by Adam Barth.
-
- Makes the data channel mocks to be synchronous instead of asynchronous to be able to
- properly test RTCDataChannel event handling.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::sendStringData):
- (MockWebRTCPeerConnectionHandler::sendRawData):
-
-2012-11-12 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move TestRunner implementation into WebTestRunner namespace
- https://bugs.webkit.org/show_bug.cgi?id=101837
-
- Reviewed by Adam Barth.
-
- That way, we don't get collisions when linking e.g. against chromium's
- net test support library.
-
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (WebTestRunner):
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (WebTestRunner):
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.h:
- (WebTestRunner):
-
-2012-11-12 Zeno Albisser <zeno@webkit.org>
-
- [Qt] MiniBrowser should not strongly depend on QtTestSupport.
- https://bugs.webkit.org/show_bug.cgi?id=101775
-
- Introducing HAVE(QTTESTSUPPORT) to allow building
- MiniBrowser without QtTestSupport.
- This is necessary when using a production build.
-
- Reviewed by Tor Arne Vestbø.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * qmake/mkspecs/features/configure.prf:
- * qmake/mkspecs/features/features.prf:
-
-2012-11-11 Kangil Han <kangil.han@samsung.com>
-
- Change build congratulation message in EFL
- https://bugs.webkit.org/show_bug.cgi?id=101833
-
- Reviewed by Gyuyoung Kim.
-
- EFL port is currently supporting both WK1 and WK2.
- But, build congratulation message still shows WK1(EWebLauncher) only.
- Therefore, this patch adopts WK2 reference execution(MiniBrowser) in its message.
-
- From 'To run EWebLauncher with this newly-built code, use the'
- to 'To run EWebLauncher/MiniBrowser with this newly-built code, use the'.
-
- * Scripts/build-webkit:
- (writeCongrats):
- * Scripts/webkitdirs.pm:
- (launcherName):
-
-2012-11-09 Ryosuke Niwa <rniwa@webkit.org>
-
- People with dichromacy can't tell crashes and passes on flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=101711
-
- Reviewed by Ojan Vafai.
-
- Lower the brightness of orange, and raise the brightness of green so that
- people with color blindnes can still distinguish passes and crashes easily.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_tests.css:
- (.P):
- (.C):
-
-2012-11-09 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Deleting all files relating to the deprecated PeerConnection00
- https://bugs.webkit.org/show_bug.cgi?id=101730
-
- Reviewed by Adam Barth.
-
- Since RTCPeerConenction has superseeded PeerConnection00 this patch removes all
- files relating to the old API.
-
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.cpp:
- * DumpRenderTree/chromium/MockWebMediaStreamCenter.h:
- (MockWebMediaStreamCenter):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-11-09 Yael Aharon <yael.aharon@intel.com>
-
- [EFL] Give the view a size in TestWebKitAPI
- https://bugs.webkit.org/show_bug.cgi?id=101770
-
- Reviewed by Laszlo Gombos.
-
- 2 tests are currently failing, because they expect us to paint, but we don't paint if the view size is empty.
-
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::PlatformWebView::PlatformWebView):
- (TestWebKitAPI::PlatformWebView::~PlatformWebView):
- (TestWebKitAPI):
- (TestWebKitAPI::PlatformWebView::resizeTo):
-
-2012-11-09 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r134068.
- http://trac.webkit.org/changeset/134068
- https://bugs.webkit.org/show_bug.cgi?id=101766
-
- Caused crashes on the bots. (Requested by rakuco on #webkit).
-
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-11-09 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Bump the jhbuild Cairo version to 1.12.8
- https://bugs.webkit.org/show_bug.cgi?id=101721
-
- Bump the Cairo version in Jhbuild moduleset to 1.12.8. This version
- should fix multiple failures in canvas tests and also contains
- fixes for X-related crashes that occurred from the 1.12.4 version onwards.
-
- * gtk/jhbuild.modules:
-
-2012-11-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [WTR][Cairo] Do not call paintRepaintRectOverlay() when there is no repaint rect.
- https://bugs.webkit.org/show_bug.cgi?id=101759
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Improve
- the check for an empty repaintRect -- we need to check if the
- WKArrayRef has any items. `if (repaintRect)' will return true
- regardless of whether the array is empty or not.
-
-
-2012-11-09 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Stop watchlist from triggering QtBuildSystem rule on DerivedSources
-
- Having DerivedSources.pri in the watchlist regexp was creating too much
- noise.
-
- Reviewed by Ossy.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-11-09 Dominik Röttsches <dominik.rottsches@intel.com>
-
- webkitpy/layouttests integration test fails if high shards/processes environment variables are used
- https://bugs.webkit.org/show_bug.cgi?id=101455
-
- Reviewed by Dirk Pranke.
-
- Updating test to disregard WEBKIT_TEST_MAX_LOCKED_SHARDS environment variable.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_max_locked_shards):
-
-2012-11-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][DRT] Force a repaint before tracking repaint rects.
- https://bugs.webkit.org/show_bug.cgi?id=101743
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Do like other ports and force a repaint before we start tracking
- repaints so that the pixel results generated look more in line
- with what's expected.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (displayWebView): Call DRTSupport::forceLayout() before start
- tracking repaints.
-
-2012-11-09 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] DRT - eventSender.keyDown() needs to support pageUp, pageDown, home, end key
- https://bugs.webkit.org/show_bug.cgi?id=100937
-
- Reviewed by Rob Buis.
-
- 1. Translate these keys to their corresponding BlackBerry key code.
- 2. Break down a KeyChar event to a KeyDown/KeyUp pair. This is required
- because we only handle scrolling on a KeyDown event in WebPage::keyEvent()
- , and internally a KeyChar event is interpreted as a KeyDown event + a
- KeyUp event in InputHandler::handleKeyboardInput().
-
- Tests fixed:
- 1. editing/input/scroll-viewport-page-up-down.html
- 2. editing/selection/move-begin-end.html
- 3. fast/forms/select-popup-pagekeys.html
-
- * DumpRenderTree/blackberry/EventSender.cpp:
- (keyDownCallback):
-
-2012-11-09 Simon Hausmann <simon.hausmann@digia.com>
-
- Unreviewed prospective Qt/Windows build bot fix:
-
- Make determination of qmake mkspec work with older versions of Qt that
- still create a "mkspecs/default" directory.
-
- * Scripts/webkitdirs.pm:
- (qtMakeCommand):
-
-2012-11-09 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Introduce a WebTestProxy to override methods in WebViewClient for layout tests
- https://bugs.webkit.org/show_bug.cgi?id=101452
-
- Reviewed by Adam Barth.
-
- The WebTestProxy is template, so it can derive from an implementation
- of the WebViewClient interface. That way, WebTestProxy can hook into
- individual methods of the WebViewClient and forward all the rest to the
- actual implementation.
-
- To demonstrate how I want to use this, I moved the
- postAccessibilityNotification method from WebViewHost to WebTestProxy.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/TestRunner/public/WebTestProxy.h: Added.
- (WebKit):
- (WebTestRunner):
- (WebTestProxyBase):
- (WebTestProxy):
- (WebTestRunner::WebTestProxy::WebTestProxy):
- (WebTestRunner::WebTestProxy::~WebTestProxy):
- (WebTestRunner::WebTestProxy::postAccessibilityNotification):
- * DumpRenderTree/chromium/TestRunner/src/WebTestProxy.cpp: Added.
- (WebTestRunner):
- (WebTestRunner::WebTestProxyBase::WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::~WebTestProxyBase):
- (WebTestRunner::WebTestProxyBase::setInterfaces):
- (WebTestRunner::WebTestProxyBase::setDelegate):
- (WebTestRunner::WebTestProxyBase::doPostAccessibilityNotification):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createNewWindow):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-11-09 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Build with MSVC fails to use nmake instead of make
- https://bugs.webkit.org/show_bug.cgi?id=98645
-
- Reviewed by Tor Arne Vestbø.
-
- Don't rely on the "default" mkspec but instead query the target
- mkspec variable from qmake to find the right qmake.conf.
-
- * Scripts/webkitdirs.pm:
- (qtMakeCommand):
-
-2012-11-08 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL] about:blank should display the blank page
- https://bugs.webkit.org/show_bug.cgi?id=101566
-
- Reviewed by Laszlo Gombos.
-
- Add a check to return early without prepending http:// scheme, if the
- URL is 'about:blank'.
-
- * EWebLauncher/url_utils.c:
- (url_from_user_input):
-
-2012-11-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add proper support for fullscreen API to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=101615
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement fullscreen API support in MiniBrowser. When entering
- fullscreen a popup is shown to notify the user that something
- is displayed in fullscreen and to advertise that the Escape
- key can be used to exit fullscreen. This behavior is according
- to specification.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_fullscreen_accept):
- (on_fullscreen_deny):
- (on_fullscreen_enter):
- (on_fullscreen_exit):
- (window_create):
-
-2012-11-08 Slavomir Kaslev <skaslev@google.com>
-
- [Chromium] DumpRenderTree fix for canvas in software compositing
- https://bugs.webkit.org/show_bug.cgi?id=101509
-
- Reviewed by Adrienne Walker.
-
- Don't use accelerated canvas 2d when in software compositing mode.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::runFileTest):
-
-2012-11-08 Jakob Petsovits <jpetsovits@rim.com>
-
- [BlackBerry] Rework the API to use document coordinates
- https://bugs.webkit.org/show_bug.cgi?id=101608
- RIM PR 173292
-
- Reviewed by Adam Treat.
-
- Adapt to changed WebPage API.
- See Source/WebKit/blackberry/ChangeLog for details.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::DumpRenderTree):
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-11-08 Yael Aharon <yael.aharon@intel.com>
-
- [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
- https://bugs.webkit.org/show_bug.cgi?id=101526
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Turn on WTF_USE_TILED_BACKING_STORE for EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-08 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix build with MSVC 2012 and Angle
- https://bugs.webkit.org/show_bug.cgi?id=101588
-
- Reviewed by Tor Arne Vestbø.
-
- Angle includes STL's <memory> header file, which with MSVC 2012 includes stdint.h. MSVC 2012
- does ship stdint.h, but it's lacking other headers such as inttypes.h.
-
- So for the rest of WebKit we have to continue to use our own versions of these files from
- JavaScriptCore/os-win32. But for Angle we are just including a shipped STL header file (memory)
- and so it's up to the compiler to make that work, i.e. using the stdint.h it ships.
-
- This patch moves the addition of JavaScriptCore/os-win32 out of default_post.prf, so that it
- doesn't apply to each and every target anymore. In particular it won't apply to Angle anymore,
- because its presence causes a build issue where due to the addition of os-win32/ we end up
- including our own stdint.h but are lacking WTF/ to be in the include search path (which our own
- stdint.h requires). So out of default_post.prf and into WTF.pri, our own wrappers are now only
- used where WTF is also needed, and since os-win32/stdint.h depends on wtf/Platform.h, it seems
- like a logical location.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-11-08 Dominik Röttsches <dominik.rottsches@intel.com>
-
- Unreviewed, rolling out r133859.
- http://trac.webkit.org/changeset/133859
- https://bugs.webkit.org/show_bug.cgi?id=101526
-
- Breaks EFL bots test execution.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-08 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Reduce the number of clean builds
- https://bugs.webkit.org/show_bug.cgi?id=100844
-
- Reviewed by Tor Arne Vestbø.
-
- A change in any Qt project file shouldn't trigger clean
- build always, but only if the incremental build failed.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-11-08 Kangil Han <kangil.han@samsung.com>
-
- [EFL][MiniBrowser] Add encoding detector option.
- https://bugs.webkit.org/show_bug.cgi?id=100931
-
- Reviewed by Gyuyoung Kim.
-
- Add a runtime option to enable/disable encoding detector.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (elm_main):
-
-2012-11-08 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] DumpRenderTree does not honor the shouldDumpPixels boolean argument of dumpAsText
- https://bugs.webkit.org/show_bug.cgi?id=101485
-
- Reviewed by Csaba Osztrogonác.
-
- [Qt] DumpRenderTree does not honor the shouldDumpPixels boolean argument of dumpAsText
-
- Support dumpAsText(true) which means we should not dump a render tree
- but should dump pixels. All other platforms already support it.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::reset):
- (TestRunner::dumpAsText):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner::shouldDumpPixels):
- (TestRunner):
-
-2012-11-08 Yael Aharon <yael.aharon@intel.com>
-
- [EFL] Turn on WTF_USE_TILED_BACKING_STORE by default
- https://bugs.webkit.org/show_bug.cgi?id=101526
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Turn on WTF_USE_TILED_BACKING_STORE for EFL port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-11-07 Csaba Osztrogonác <ossy@webkit.org>
-
- Make wait-for-SVN-server.py accept empty string as revision
- https://bugs.webkit.org/show_bug.cgi?id=98014
-
- Reviewed by Dirk Pranke.
-
- * BuildSlaveSupport/wait-for-SVN-server.py:
- (waitForSVNRevision):
-
-2012-11-07 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should handle concurrent requests
- https://bugs.webkit.org/show_bug.cgi?id=101407
-
- Reviewed by Ojan Vafai.
-
- Garden-o-Matic is implemented on top of the BaseHttpServer
- python library, which implements a single-threaded (one request at
- a time) server. This means that we can only rebaseline one test at
- a time, and when using a local results file, even fetching the results
- for diffs is single-threaded.
-
- Mixing in the ThreadingMixin enables concurrent requests (subject
- to the global python interpreter lock). Given that we're doing all
- of the work in webkit-patch subprocesses, I think this is safe.
-
- Of course, it may not be safe to do some of the subprocesses in
- parallel (e.g., rollout), but I think as long as we don't issue
- commands that touch overlapping sets of files things should be fine.
- The file locking over modifying testexpectations should keep that
- from being corrupted.
-
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPServer):
- (GardeningHTTPRequestHandler):
-
-2012-11-07 Andreas Kling <akling@apple.com>
-
- Remove build-webkit dependency on Java SDK for Apple Mac WebKit.
- <http://webkit.org/b/101492>
-
- Reviewed by Anders Carlsson.
-
- Don't check for a Java SDK before building the Apple Mac port. It's no longer needed for
- the build after the Java bridge was removed.
-
- * Scripts/build-webkit:
- (cMakeArgsFromFeatures):
-
-2012-11-07 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Allow client to override setWindowFrame() / getWindowFrame()
- https://bugs.webkit.org/show_bug.cgi?id=101496
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Provide implementation for on_window_geometry_get() / on_window_geometry_set()
- smart functions that interact with the elm_win widget.
-
- * MiniBrowser/efl/main.c:
- (on_window_geometry_get):
- (on_window_geometry_set):
- (window_create):
-
-2012-11-07 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][WK2][AC] API tests crash
- https://bugs.webkit.org/show_bug.cgi?id=101480
-
- Reviewed by Kenneth Rohde Christiansen.
-
- When AC is enabled, 8 API tests are crashing. We need to properly set the evas engine for these tests.
-
- * TestWebKitAPI/efl/PlatformWebView.cpp:
- (TestWebKitAPI::initEcoreEvas):
-
-2012-11-07 Peter Beverloo <peter@chromium.org>
-
- Don't show the Android tester in garden-o-matic yet
- https://bugs.webkit.org/show_bug.cgi?id=101476
-
- Reviewed by Adam Barth.
-
- The Android tester just started running layout tests, and doesn't upload its
- results yet. Don't show it for now. This exception will be removed once it
- has a baseline of greenness.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-11-07 Balazs Kelemen <kbalazs@webkit.org>
-
- WebKitTestRunner flakily hangs when running pixel tests on Qt
- https://bugs.webkit.org/show_bug.cgi?id=100686
-
- Reviewed by Csaba Osztrogonác.
-
- Make WebKitTestRunner harden against the situation when the coordinated
- graphics rendering synchronisation fails. If we time out when waiting
- for the forced repaint to finish it usually a symptom of the synchronisation
- has been broken. In this case all other tests will fail with the same error.
- The underlying problem is not yet known. Ths patch make us report this situation
- as web process unresponsiveness, so the test harness will kill us and launch
- a new instance. This will make our pixel test bot usable while it should not limit
- us debugging the underlying bug.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::run):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::TestInvocation):
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dumpWebProcessUnresponsiveness):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation): Introduce new members to hold our state
- that was local to invoke() so far.
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-11-07 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Open link in this window action
- https://bugs.webkit.org/show_bug.cgi?id=101226
-
- Reviewed by Simon Hausmann.
-
- Populates the context-menu with the new action when the default action is to open in a new window.
-
- * QtTestBrowser/webview.cpp:
- (createContextMenu):
-
-2012-11-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Add ewk_settings_preferred_minimum_contents_width_get/set API
- https://bugs.webkit.org/show_bug.cgi?id=101467
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added ewk_settings_preferred_minimum_contents_width_get/set API which is used for setting/getting
- of default minimum contents width for non viewport meta element sites.
- Set default minimum contents width to '0' for MiniBrowser as it should behave like desktop browser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
-
-2012-11-07 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] Add EFL to garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=101444
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added the EFL bots running layout tests to the garden-o-matic report
- page. We are skipping here the bot that just builds WebKit EFL to make
- the data fetching faster.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-11-07 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Make EWK classes Ewk_Objects
- https://bugs.webkit.org/show_bug.cgi?id=101057
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Now all the existing EWK classes share common Ewk_Object ref/unref API.
-
- * MiniBrowser/efl/main.c:
- (close_file_picker):
- (on_file_chooser_request):
-
-2012-11-07 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Unreviewed. Add Qt EWS bots to the watchers list.
-
- * Scripts/webkitpy/tool/commands/earlywarningsystem.py:
- (QtEWS):
- (QtWK2EWS):
-
-2012-11-07 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- WebKitTestRunner needs to turn on 'setContinuousSpellCheckingEnabled'
- https://bugs.webkit.org/show_bug.cgi?id=93611
-
- Reviewed by Gyuyoung Kim.
-
- WebKitTestRunner enables spelling feature to pass the layout tests from editing/spelling.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Enables spelling by WebKit2 C API.
-
-2012-11-07 Dominik Röttsches <dominik.rottsches@intel.com>
-
- [EFL] Switch the efl-linux-slave-2 to Wk2 Release
- https://bugs.webkit.org/show_bug.cgi?id=101345
-
- Reviewed by Gyuyoung Kim.
-
- Switching efl-linux-slave-2 to Wk2 Release.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-11-07 Christophe Dumez <christophe.dumez@intel.com>
-
- Add replaceWithLiteral() method to WTF::String
- https://bugs.webkit.org/show_bug.cgi?id=101257
-
- Reviewed by Benjamin Poulain.
-
- Add API tests for String::replaceWithLiteral() and corresponding
- StringImpl methods.
-
- * TestWebKitAPI/CMakeLists.txt: Add WTFString API tests to CMake.
- * TestWebKitAPI/Tests/WTF/StringImpl.cpp:
- (TestWebKitAPI::TEST):
- (TestWebKitAPI):
- * TestWebKitAPI/Tests/WTF/WTFString.cpp:
- (TestWebKitAPI::TEST):
-
-2012-11-07 Oswald Buddenhagen <oswald.buddenhagen@nokia.com>
-
- [Qt] Fix build of modules depending on QtWebKit when using prefix
- https://bugs.webkit.org/show_bug.cgi?id=101437
-
- Reviewed by Simon Hausmann.
-
- Remove setting of MODULE_QMAKE_OUTDIR from here, it's been moved to .qmake.conf.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-11-06 Dan Beam <dbeam@chromium.org>
-
- Enable REQUEST_AUTOCOMPLETE for chromium port
- https://bugs.webkit.org/show_bug.cgi?id=101376
-
- Reviewed by Adam Barth.
-
- This patch enables the feature flag REQUEST_AUTOCOMPLETE in WebKit/chromium only to allow web authors to start to use
- HTMLFormElement#requestAutocomplete as the chrome-side work progresses further.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
- Enables the requestAutocomplete runtime feature flag during tests.
-
-2012-11-06 KyungTae Kim <ktf.kim@samsung.com>
-
- [WK2][EFL] Add shortcut for setting a pagination mode on Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=100301
-
- Reviewed by Gyuyoung Kim.
-
- Setting pagination modes is for a paginated view - left to right / right to left / top to bottom / bottom to top.
- Assign a shortcut "F7" to set pagination modes for tests.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-11-06 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL][EWebLauncher] Use Ctrl +/- to zoom in EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=100207
-
- Reviewed by Gyuyoung Kim.
-
- Use "Ctrl -" instead of "F7" to zoom out, and use "Ctrl +" instead of "F8" to zoom in,
- and use "Ctrl 0" to set to default zoom level.
- They are more common shortcuts on usual browsers.
-
- * EWebLauncher/main.c:
- (on_key_down):
-
-2012-11-06 Oliver Hunt <oliver@apple.com>
-
- Don't warn about RefPtr* parameters
- https://bugs.webkit.org/show_bug.cgi?id=101403
-
- Reviewed by Gavin Barraclough.
-
- RefPtr<>* is a valid parameter type.
-
- * Scripts/webkitpy/style/checkers/cpp.py:
- (check_function_definition_and_pass_ptr):
- * Scripts/webkitpy/style/checkers/cpp_unittest.py:
- (PassPtrTest.test_ref_ptr_parameter_value):
-
-2012-11-06 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [WTR] Reset EventSender before running each test.
- https://bugs.webkit.org/show_bug.cgi?id=101353
-
- Reviewed by Simon Fraser.
-
- Contrary to what was done to at least some ports in DumpRenderTree,
- EventSender did not currently reset its values in WTR. This caused
- flakiness if a test such as editing/selection/fake-doubleclick.html was
- run twice in a row, since the click count was not reset across each
- run.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController): Do not create m_eventSenderProxy
- in the constructor anymore, it is created in
- resetStateToConsistentValues now.
- (WTR::TestController::resetStateToConsistentValues): Recreate
- m_eventSenderProxy every time this method is run.
- * WebKitTestRunner/TestController.h: Make m_eventSenderProxy an OwnPtr
- and guard it with a platform #ifdef.
- * WebKitTestRunner/gtk/EventSenderProxyGtk.cpp:
- (WTR::EventSenderProxy::~EventSenderProxy): Add an empty
- implementation.
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::~EventSenderProxy): Ditto.
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::~EventSenderProxy): Ditto.
-
-2012-11-06 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Refactor Ewk_Auth_Request, Ewk_Url_Scheme_Request and Ewk_Download_Job to be Ewk_Objects
- https://bugs.webkit.org/show_bug.cgi?id=101383
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Ewk_Auth_Request, Ewk_Url_Scheme_Request and Ewk_Download_Job are Ewk_Objects now.
-
- * MiniBrowser/efl/main.c:
- (auth_popup_close):
- (on_authentication_request):
-
-2012-11-06 Tommy Widenflycht <tommyw@google.com>
-
- [chromium] MediaStream API: Remove the valgrind issue with MockWebRTCPeerConnectionHandler
- https://bugs.webkit.org/show_bug.cgi?id=101336
-
- Reviewed by Andreas Kling.
-
- This patch changes the delete to delete [] to match the new[].
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
-
-2012-11-06 Mihai Balan <mibalan@adobe.com>
-
- Add Adobe's bug tracker to committers.py
- https://bugs.webkit.org/show_bug.cgi?id=101338
-
- Reviewed by Kentaro Hara.
-
- Adding Adobe's bug tracker mailing list to committers.py
- to enable its inclusion in the autocomplete list.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-06 Sami Kyostila <skyostil@chromium.org>
-
- [chromium] Enable fixed position compositing on Android DRT
- https://bugs.webkit.org/show_bug.cgi?id=100263
-
- Reviewed by James Robinson.
-
- Chrome on Android forces composited mode for every page and creates
- stacking contexts and graphics layers for fixed positioned elements.
- Change the DumpRenderTree settings to match this.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setAcceleratedCompositingForFixedPositionEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.additional_drt_flag):
-
-2012-11-06 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][WTR] EventSender: Get rid of the WTRMouseButton enum.
- https://bugs.webkit.org/show_bug.cgi?id=101340
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Get rid of an enum which was basically a duplicate of the
- WKEventMouseButton one in the shared API.
-
- The only difference is that it also had a case for a 4th mouse
- button that we treat in a special way in evasMouseButton() now.
-
- * WebKitTestRunner/EventSenderProxy.h:
- (EventSenderProxy):
- * WebKitTestRunner/efl/EventSenderProxyEfl.cpp:
- (WTR::evasMouseButton):
- (WTR::EventSenderProxy::EventSenderProxy):
- (WTR::EventSenderProxy::mouseUp):
- (WTR::EventSenderProxy::mouseMoveTo):
- (WTR::EventSenderProxy::mouseScrollBy):
- (WTR::EventSenderProxy::leapForward):
-
-2012-11-06 Jussi Kukkonen <jussi.kukkonen@intel.com>
-
- [EFL][WK2] Minibrowser forgets http variables when url includes ampersand
- https://bugs.webkit.org/show_bug.cgi?id=101061
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Elementary entry only returns 'markup' text, meaning ampersands
- in a url will become "&amp;". Use elm_entry_markup_to_utf8() and
- elm_entry_utf8_to_markup() when interacting with the entry.
-
- * MiniBrowser/efl/main.c:
- (on_url_changed):
- (on_url_bar_activated):
-
-2012-11-06 Balazs Kelemen <kbalazs@webkit.org>
-
- DumpRenderTree should have --pixel-tests option again
- https://bugs.webkit.org/show_bug.cgi?id=98648
-
- Reviewed by Dirk Pranke.
-
- Add back the --pixel-tests command line option to DumpRenderTree.
- It was removed r124581 because tools don't use it after that patch.
- However, it turned out that it is useful for debugging and working
- with pixel tests.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (parseCommandLineOptions):
- (runTest):
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (initializeGlobalsFromCommandLineOptions):
- (runTest):
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (initializeGlobalsFromCommandLineOptions):
- (runTest):
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (isOption):
- (printUsage):
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::processLine):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (WebCore::DumpRenderTree::setShouldDumpPixelsForAllTests):
- (DumpRenderTree):
- * DumpRenderTree/win/DumpRenderTree.cpp:
- (runTest):
- (dllLauncherEntryPoint):
- * DumpRenderTree/wx/DumpRenderTreeWx.cpp:
- (runTest):
- (MyApp::OnInit):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::runTest):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline*: fix typo for --results-directory
- https://bugs.webkit.org/show_bug.cgi?id=101295
-
- Reviewed by Ojan Vafai.
-
- Had --results_directory instead of --results-directory in both the
- code and the unit test.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineJson.test_results_directory):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline*: fix handling of local file urls
- https://bugs.webkit.org/show_bug.cgi?id=101296
-
- Reviewed by Ojan Vafai.
-
- When using --results-directory, we need to make sure we're converting
- paths to file:/// urls for urllib to work correctly. Also, this
- patch reworks the unit tests to get better coverage (of the execute()
- command) and reduce copy/pasting of mock options.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._rebaseline_test_and_update_expectations):
- (RebaselineTest.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineTest.setUp):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test_with_results_directory):
- (test_rebaseline_test_internal_with_move_overwritten_baselines_to):
-
-2012-11-05 Kenneth Russell <kbr@google.com>
-
- Added secondary email address and IRC nick.
- https://bugs.webkit.org/show_bug.cgi?id=101290
-
- Unreviewed change to committers.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-05 Glenn Adams <glenn@skynav.com>
-
- Add IRC alias for Glenn Adams
- https://bugs.webkit.org/show_bug.cgi?id=101262
-
- Reviewed by Eric Seidel.
-
- Add IRC alias for Glenn Adams.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-05 Dima Gorbik <dgorbik@apple.com>
-
- Back out controversial changes from Bug 98665.
- https://bugs.webkit.org/show_bug.cgi?id=101244
-
- Reviewed by David Kilzer.
-
- Backing out changes from Bug 98665 until further discussions take place on rules for including Platform.h in Assertions.h.
-
- * DumpRenderTree/mac/MockGeolocationProvider.mm:
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: lint, clean up rebaseline.py
- https://bugs.webkit.org/show_bug.cgi?id=101240
-
- Reviewed by Ojan Vafai.
-
- Miscellaneous cleanup of lint errors and warnings.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (RebaselineTest._test_root):
- (OptimizeBaselines._optimize_baseline):
- (OptimizeBaselines.execute):
- (AnalyzeBaselines.__init__):
- (AbstractParallelRebaselineCommand):
- (AbstractParallelRebaselineCommand._builders_to_fetch_from):
- (AbstractParallelRebaselineCommand._files_to_add):
- (AbstractParallelRebaselineCommand._rebaseline):
- (RebaselineExpectations.__init__):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_BaseTestCase.setUp):
- (TestAnalyzeBaselines.setUp):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch optimize-baselines should take a --platform arg
- https://bugs.webkit.org/show_bug.cgi?id=97623
-
- Reviewed by Ojan Vafai.
-
- So that we can optionally limit/control which platforms' results
- are affected.
-
- This patch adds --platform to analyze-baselines as well.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (_baseline_search_hypergraph):
- (BaselineOptimizer.__init__):
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (TestBaselineOptimizer.__init__):
- (BaselineOptimizerTest.test_move_baselines):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (OptimizeBaselines.__init__):
- (OptimizeBaselines.execute):
- (AnalyzeBaselines.__init__):
- (AnalyzeBaselines.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestAnalyzeBaselines.test_default):
- (TestAnalyzeBaselines.test_missing_baselines):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations should take a --platform arg
- https://bugs.webkit.org/show_bug.cgi?id=97621
-
- Reviewed by Ojan Vafai.
-
- So that we can limit which platforms we attempt to rebaseline;
- this can reduce the noise the command produces if some ports
- have errors or warnings in their TestExpectations files and/or
- help produce more predictable results.
-
- In testing this patch, I realized that the rebaseline-in-parallel
- commands (rebaseline-json, rebaseline-expectations, etc.) can
- cause multiple rebaseline-test-internal commands to attempt to
- modify the TestExpectations files concurrently, and that we needed
- to lock the files to prevent corruption; it would be nice if
- we can split the updating-the-expectations-files out separately
- from updating the filesystem (much like we do with the scm updates)
- to avoid this concurrency.
-
- * Scripts/webkitpy/common/system/file_lock_mock.py: Added.
- (MockFileLock):
- (MockFileLock.__init__):
- (MockFileLock.acquire_lock):
- (MockFileLock.release_lock):
- * Scripts/webkitpy/common/system/systemhost.py:
- (SystemHost.copy_current_environment):
- (SystemHost):
- (SystemHost.make_file_lock):
- * Scripts/webkitpy/common/system/systemhost_mock.py:
- (MockSystemHost.copy_current_environment):
- (MockSystemHost):
- (MockSystemHost.make_file_lock):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._update_expectations_file):
- (RebaselineExpectations.__init__):
- (RebaselineExpectations._add_tests_to_rebaseline_for_port):
- (RebaselineExpectations.execute):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up options for specifying multiple platforms at once
- https://bugs.webkit.org/show_bug.cgi?id=101140
-
- Reviewed by Ojan Vafai.
-
- This patch reworks how we display the help strings for --platform
- options and how we filter out platforms matching a glob. This will
- be useful as I add patches to ensure that all the webkit-patch
- commands are using --platform consistently to filter ports.
-
- There should be no functional changes resulting from this patch.
-
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (platform_options):
- (PortFactory.all_port_names):
- (PortFactory.get_from_builder_name):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.__init__):
- (PrintBaselines.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (RebaselineJson.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineExpectations.setUp):
- (TestRebaselineExpectations.test_rebaseline_expectations):
-
-2012-11-05 Peter Beverloo <peter@chromium.org>
-
- The layout test runner shouldn't wait for data if stdout/stderr have been closed
- https://bugs.webkit.org/show_bug.cgi?id=101233
-
- Reviewed by Dirk Pranke.
-
- Trying to read the file descriptor for the stdout or stderr pipes when DumpRenderTree
- has crashed during a Chromium Android layout test-run, which uses FIFOs for
- communication, causes the File.fileno() method to raise a ValueError. Return early
- if either of the pipes has already been closed.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._wait_for_data_and_update_buffers_using_select):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline is broken
- https://bugs.webkit.org/show_bug.cgi?id=101235
-
- Reviewed by Ojan Vafai.
-
- It didn't get updated to handle the change in parsing --suffixes
- properly, and the unit test didn't get updated either, masking the
- problem.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (Rebaseline._tests_to_update):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_rebaseline):
-
-2012-11-05 Dirk Pranke <dpranke@chromium.org>
-
- lint-webkitpy doesn't autoinstall pylint properly.
- https://bugs.webkit.org/show_bug.cgi?id=101106
-
- Reviewed by Ojan Vafai.
-
- Re-land r133381 with fix; ironically, lint-webkitpy would've
- complained about the problem. Also modify pylintrc and clean up
- any other lint errors in the modified files.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._set_up_target_dir):
- (AutoInstaller):
- (AutoInstaller._make_package):
- (AutoInstaller._create_scratch_directory):
- (AutoInstaller._install):
- (AutoInstaller.install):
- * Scripts/webkitpy/pylintrc:
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._ensure_autoinstalled_dir_is_in_sys_path):
- (AutoinstallImportHook):
- (AutoinstallImportHook.find_module):
- (AutoinstallImportHook._install_pylint):
- (AutoinstallImportHook._install_coverage):
- (AutoinstallImportHook._install_eliza):
- (AutoinstallImportHook._install_webpagereplay):
- (AutoinstallImportHook._install):
- * Scripts/webkitpy/thirdparty/__init___unittest.py:
- (ThirdpartyTest.test_import_hook.MockImportHook.__init__):
- (ThirdpartyTest.test_import_hook):
- (ThirdpartyTest.test_imports):
-
-2012-11-05 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL] Fix build warning in EWebLauncher/main.c
- https://bugs.webkit.org/show_bug.cgi?id=101197
-
- Reviewed by Kentaro Hara.
-
- Because the strp of _Ecore_Getopt_Value is char** (Ecore_Getopt.h),
- The parameter of ECORE_GETOPT_VALUE_STR should be char*
-
- * EWebLauncher/main.c:
- (_User_Arguments):
-
-2012-11-05 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [EFL][WK2] Add --window-size command line option to EFL MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=100942
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added window-size (-s) command line option to EFL MiniBrowser.
-
- * MiniBrowser/efl/main.c:
- (window_create):
- (parse_window_size):
- (elm_main):
-
-2012-11-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] The icon database path should be set by the client
- https://bugs.webkit.org/show_bug.cgi?id=101182
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable favicon database functionality in MiniBrowser since
- it is used and it is no longer enabled by default.
-
- * MiniBrowser/efl/main.c:
- (elm_main):
-
-2012-11-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- Reviewed by Simon Hausmann.
-
- Reland with build fixes.
-
- Turned test runners to use the new QtTestSupport.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Removed.
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Removed.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize): Removed the comment from here
- because it was just lying, apparently two times. First, it is not incorrect
- to reinitialize our font set and clear font caches, it is what the tests
- expect. Second, the use of QRawFont has nothing to do with the font cache.
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r133381.
- http://trac.webkit.org/changeset/133381
- https://bugs.webkit.org/show_bug.cgi?id=101161
-
- It made webkit-patch useless (Requested by Ossy_weekend on
- #webkit).
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._create_scratch_directory):
- (AutoInstaller._install):
- (AutoInstaller.install):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook.__init__):
- (AutoinstallImportHook._install_pylint):
- (AutoinstallImportHook._install_coverage):
- (AutoinstallImportHook._install_eliza):
- (AutoinstallImportHook._install):
- * Scripts/webkitpy/thirdparty/__init___unittest.py:
- (ThirdpartyTest.test_import_hook.MockImportHook.__init__):
- (ThirdpartyTest.test_import_hook):
-
-2012-11-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r133403, r133404, and r133409.
- http://trac.webkit.org/changeset/133403
- http://trac.webkit.org/changeset/133404
- http://trac.webkit.org/changeset/133409
- https://bugs.webkit.org/show_bug.cgi?id=101158
-
- "Broke tests" (Requested by kbalazs on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp: Renamed from Source/WebCore/platform/qt/QtTestSupport.cpp.
- (WebKit):
- (WebKit::initializeTestFonts):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- (WebKit):
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::handleUserOptions):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize):
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- 2nd unreviewed buildfix.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
-
-2012-11-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- Unreviewed buildfix.
-
- * WebKitTestRunner/Target.pri:
-
-2012-11-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- Reviewed by Simon Hausmann.
-
- Reland with build fix.
-
- Turned test runners to use the new QtTestSupport.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Removed.
- * MiniBrowser/qt/MiniBrowser.pro:
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Removed.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize): Removed the comment from here
- because it was just lying, apparently two times. First, it is not incorrect
- to reinitialize our font set and clear font caches, it is what the tests
- expect. Second, the use of QRawFont has nothing to do with the font cache.
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-03 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r133397.
- http://trac.webkit.org/changeset/133397
- https://bugs.webkit.org/show_bug.cgi?id=101155
-
- "Broke Qt. No way to force the damn bots to do a clean build.
- I'm giving up." (Requested by kbalazs on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp: Renamed from Source/WebCore/platform/qt/QtTestSupport.cpp.
- (WebKit):
- (WebKit::initializeTestFonts):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- (WebKit):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize):
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- Reviewed by Simon Hausmann.
-
- Turned test runners to use the new QtTestSupport.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Removed.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize): Removed the comment from here
- because it was just lying, apparently two times. First, it is not incorrect
- to reinitialize our font set and clear font caches, it is what the tests
- expect. Second, the use of QRawFont has nothing to do with the font cache.
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-02 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline is broken
- https://bugs.webkit.org/show_bug.cgi?id=101081
-
- Reviewed by Ojan Vafai.
-
- I broke this in r133061 and the unit tests weren't covering this
- code path. Fixed the issue and the tests. --results-directory
- doesn't make sense for either 'webkit-patch rebaseline' or
- 'webkit-patch rebaseline-expectations', so we don't want to expose
- that as a command line option, but they all call a common
- _rebaseline() routine that references options.results_directory,
- so we need to set a default value.
-
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineExpectations.execute):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline):
- (TestRebaseline.test_rebaseline):
-
-2012-11-02 Dirk Pranke <dpranke@chromium.org>
-
- lint-webkitpy doesn't autoinstall pylint properly
- https://bugs.webkit.org/show_bug.cgi?id=101106
-
- Reviewed by Ojan Vafai.
-
- Turns out the autoinstalling code for pylint didn't install
- pylint's dependencies, and the autoinstaller code didn't work
- using nested directories (e.g., "logilab/astng"). Fix those issues,
- clean up the autoinstaller code, and add tests to make sure everything
- imports successfully.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller._create_scratch_directory):
- (AutoInstaller._install):
- (AutoInstaller.install):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._ensure_autoinstalled_dir_is_in_sys_path):
- (AutoinstallImportHook._install_pylint):
- (AutoinstallImportHook._install_coverage):
- (AutoinstallImportHook._install_eliza):
- (AutoinstallImportHook._install):
- * Scripts/webkitpy/thirdparty/__init___unittest.py:
- (ThirdpartyTest.test_import_hook.MockImportHook.__init__):
- (ThirdpartyTest.test_import_hook):
- (ThirdpartyTest.test_imports):
-
-2012-11-02 Dirk Pranke <dpranke@chromium.org>
-
- nrwt prints an awkward result message for missing results
- https://bugs.webkit.org/show_bug.cgi?id=100915
-
- Reviewed by Ojan Vafai.
-
- Completely rework how we print out the description of
- each tests's result - we now will print either "passed" or "failed",
- followed by " unexpectedly" if we weren't expecting the result,
- followed by a short description of each type of failure that happened
- (in parentheses). Also reworked the description of each type of
- failure slightly to be clearer.
-
- Also rework the tests to make sure we have coverage of all of the
- messages. Examples of the new output are posted as an attachment to
- the bug.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- * Scripts/webkitpy/layout_tests/models/test_failures.py:
- (FailureTimeout.message):
- (FailureMissingResult.message):
- (FailureTextMismatch.message):
- (FailureMissingImageHash.message):
- (FailureMissingImage.message):
- (FailureImageHashMismatch.message):
- (FailureImageHashIncorrect.message):
- (FailureReftestMismatch.message):
- (FailureReftestMismatchDidNotOccur.message):
- (FailureReftestNoImagesGenerated.message):
- (FailureMissingAudio.message):
- (FailureAudioMismatch.message):
- (FailureEarlyExit.message):
- * Scripts/webkitpy/layout_tests/port/test.py:
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_run_singly_actually_runs_tests):
- (MainTest.test_missing_and_unexpected_results):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer._print_result_summary_entry):
- (Printer.print_finished_test):
- (Printer._result_message):
- (Printer._print_unexpected_results):
- * Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py:
- * Scripts/webkitpy/tool/commands/queues_unittest.py:
-
-2012-11-02 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up logging in common.system.autoinstall
- https://bugs.webkit.org/show_bug.cgi?id=101090
-
- Reviewed by Ojan Vafai.
-
- This module logged way too much, much of which was logging that
- was either really redundant or useful only during initial development.
- This patch deletes a lot of code and tweaks the remaining log messages
- to be more useful now.
-
- Also, clean up a bunch of lint errors and warnings.
-
- * Scripts/webkitpy/common/system/autoinstall.py:
- (AutoInstaller.__init__):
- (AutoInstaller._write_file):
- (AutoInstaller._set_up_target_dir):
- (AutoInstaller._create_scratch_directory):
- (AutoInstaller._url_downloaded_path):
- (AutoInstaller._is_downloaded):
- (AutoInstaller._record_url_downloaded):
- (AutoInstaller._extract_targz):
- (AutoInstaller._extract_all):
- (AutoInstaller._unzip):
- (AutoInstaller._download_to_stream):
- (AutoInstaller._download):
- (AutoInstaller._install):
- (AutoInstaller.install):
-
-2012-11-02 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch analyze-baselines output is weak
- https://bugs.webkit.org/show_bug.cgi?id=100998
-
- Reviewed by Ojan Vafai.
-
- Currently analyze-baselines prints a list of baselines that have
- the same checksum per line, but the format is hard to read;
- this patch cleans up the output to print by directory instead
- and use the same format I recently added for debugging optimize-baselines,
- then refactors the code so that we share and adds tests for
- analyze-baselines (which was untested).
-
- Also, I got rid of a couple of unnecessarily-hardcoded port names,
- and modified the baseline optimizer to log the current world when
- optimize fails.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer.read_results_by_directory):
- (BaselineOptimizer.write_by_directory):
- (BaselineOptimizer.optimize):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (OptimizeBaselines.execute):
- (AnalyzeBaselines.__init__):
- (AnalyzeBaselines._write):
- (AnalyzeBaselines._analyze_baseline):
- (AnalyzeBaselines.execute):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_FakeOptimizer):
- (_FakeOptimizer.read_results_by_directory):
- (TestAnalyzeBaselines):
- (TestAnalyzeBaselines.setUp):
- (TestAnalyzeBaselines.test_default):
- (TestAnalyzeBaselines.test_missing_baselines):
-
-2012-11-02 Adam Barth <abarth@webkit.org>
-
- ENABLE(UNDO_MANAGER) is disabled everywhere and is not under active development
- https://bugs.webkit.org/show_bug.cgi?id=100711
-
- Reviewed by Eric Seidel.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-11-02 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r133303.
- http://trac.webkit.org/changeset/133303
- https://bugs.webkit.org/show_bug.cgi?id=101068
-
- "Broke qt wk2 build (seems like bots fails to rerun qmake if
- needed)" (Requested by kbalazs on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * DumpRenderTree/qt/QtInitializeTestFonts.cpp: Renamed from Source/WebCore/platform/qt/QtTestSupport.cpp.
- (WebKit):
- (WebKit::initializeTestFonts):
- * DumpRenderTree/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- (WebKit):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Copied from Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp.
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize):
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-02 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WK2] setPlatformStrategies always asserts after r132744
- https://bugs.webkit.org/show_bug.cgi?id=100838
-
- Reviewed by Simon Hausmann.
-
- Turned test runners to use the new QtTestSupport.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (main):
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::open):
- * QtTestBrowser/QtTestBrowser.pro:
- * QtTestBrowser/qttestbrowser.cpp:
- (LauncherApplication::handleUserOptions):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp:
- (WTR::activateFonts):
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Removed.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Removed.
- * WebKitTestRunner/InjectedBundle/qt/InjectedBundleQt.cpp:
- * WebKitTestRunner/InjectedBundle/qt/TestRunnerQt.cpp:
- (WTR::TestRunner::platformInitialize): Removed the comment from here
- because it was just lying, apparently two times. First, it is not incorrect
- to reinitialize our font set and clear font caches, it is what the tests
- expect. Second, the use of QRawFont has nothing to do with the font cache.
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/qt/main.cpp:
- (main):
-
-2012-11-02 Peter Beverloo <peter@chromium.org>
-
- Output Android's device status before running tests on the bots
- https://bugs.webkit.org/show_bug.cgi?id=100944
-
- Reviewed by Dirk Pranke.
-
- This adds a new step to the build master which will be run prior to the
- actual tests-suites on the Chromium Android tester, and soon the Chromium
- Android Perf bot. For each attached device, it outputs the build
- information, battery level, battery temperature and username.
-
- The Android tester currently is very flaky, and this will help tremendously
- in being able to figure out what's wrong with the bot.
-
- * BuildSlaveSupport/build.webkit.org-config/master.cfg:
- (OutputAndroidDeviceStatus):
- (TestFactory.__init__):
- * BuildSlaveSupport/chromium/output-android-device-status: Added.
- (GetAttachedDevices):
- (AndroidDeviceStatus):
- (AndroidDeviceStatus.__init__):
- (AndroidDeviceStatus._run_adb_command):
- (AndroidDeviceStatus.device_type):
- (AndroidDeviceStatus.device_build):
- (AndroidDeviceStatus.device_fingerprint):
- (AndroidDeviceStatus.battery_level):
- (AndroidDeviceStatus.battery_temperature):
- (AndroidDeviceStatus.username):
- (main):
-
-2012-11-02 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] WTR: Make sure that eventSender.mouseDown sends a press event for the second press
- https://bugs.webkit.org/show_bug.cgi?id=101033
-
- Reviewed by Simon Hausmann.
-
- eventSender.mouseDown doesn't work properly since r133153 where
- MouseButtonDblClick events aren't interpreted as Press events anymore.
- The problem is that mouseDown sends a DblClick event instead of a Press,
- while the correct way is to send both events.
-
- Since QQuickWebView isn't doing anything with DblClick events anymore,
- simply send Press events all the time and let WebCore figure out
- where the double clicks are.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::updateClickCountForButton):
- (WTR::EventSenderProxy::mouseDown):
-
-2012-11-02 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add HTTP authentication support to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=100953
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add HTTP authentication support to MiniBrowser. An authentication
- dialog now pops up to ask the user for credentials whenever
- a Web site requires authentication.
-
- * MiniBrowser/efl/main.c:
- (auth_popup_close):
- (on_auth_cancel):
- (on_auth_ok):
- (on_authentication_request):
- (window_create):
-
-2012-11-01 Yury Semikhatsky <yurys@chromium.org>
-
- Memory instrumentation: do not call checkCountedObject with wrong pointers
- https://bugs.webkit.org/show_bug.cgi?id=100958
-
- Reviewed by Alexander Pavlov.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp: test that if there
- if there is class A derived from classes B and C and we have pointer B* to an
- object of class A then MemoryInstrumentationClient::checkoutCountedObject won't
- be called for B* but only for A*
-
- Also MemoryInstrumentation implementation used in the test was refactored to
- allow passing client as a parameter. The client implementation was extracted into
- a top-level class MemoryInstrumentationTestClient.
-
-2012-11-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Make File Chooser dialog modal in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=100962
-
- Reviewed by Gyuyoung Kim.
-
- Make File Chooser dialog modal in MiniBrowser and make
- sure it is closed and freed when its parent window is
- closed.
-
- * MiniBrowser/efl/main.c:
- (close_file_picker):
- (on_filepicker_parent_deletion):
- (on_file_chooser_request):
-
-2012-11-01 Seonae Kim <sunaeluv.kim@samsung.com>
-
- [EFL][DRT] Support Geolocation
- https://bugs.webkit.org/show_bug.cgi?id=97427
-
- Reviewed by Gyuyoung Kim.
-
- Implement methods to use GeolocationClientMock in DumpRenderTree.
- This client attaches to the page whenever a view is created.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createView):
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::setMockGeolocationPosition):
- (TestRunner::setMockGeolocationPositionUnavailableError):
- (TestRunner::setGeolocationPermission):
- (TestRunner::numberOfPendingGeolocationPermissionRequests):
-
-2012-11-01 Ryosuke Niwa <rniwa@webkit.org>
-
- Remove tests no longer needed after r133229.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
- (TestPerfTestFactory.test_inspector_test):
- * Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py:
- (test_collect_tests_with_skipped_list):
-
-2012-11-01 Nico Weber <thakis@chromium.org>
-
- [chromium] Try to find ninja if it's not in the path already
- https://bugs.webkit.org/show_bug.cgi?id=100988
-
- Reviewed by Ryosuke Niwa.
-
- Similar to the gclient detection logic in update-webkit-chromium
-
- * Scripts/webkitdirs.pm:
- (buildChromiumNinja):
-
-2012-11-01 Eric Seidel <eric@webkit.org>
-
- Add Glenn Adams to the Contributor list
- https://bugs.webkit.org/show_bug.cgi?id=100982
-
- Reviewed by Adam Barth.
-
- I CC him enough on bugs it would help me to have him listed here.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-01 Jer Noble <jer.noble@apple.com>
-
- Add Python-LLDB support for WTF::Vector types.
- https://bugs.webkit.org/show_bug.cgi?id=100980
-
- Reviewed by Anders Carlsson.
-
- Add a synthetic child provider for WTF::Vector types.
-
- * lldb/lldb_webkit.py:
- (__lldb_init_module): Add both the summary and synthetic providers for WTF::Vector
- (WTFVector_SummaryProvider): Wrapper around WTFVectorProvider
- (WTFVectorProvider):
- (WTFVectorProvider.__init__):
- (WTFVectorProvider.num_children): Return m_size+2 children to account for synthesized children.
- (WTFVectorProvider.get_child_index): Synthesize child indexes for each entry in the Vector.
- (WTFVectorProvider.get_child_at_index): Synthesize children for each entry in the Vector.
- (WTFVectorProvider.update): Retrieve state from the underlying Vector.
- (WTFVectorProvider.has_children): Vectors always have children.
-
-2012-11-01 Zoltan Horvath <zoltan@webkit.org>
-
- Remove PageLoad directory entry from PerformanceTests pattern_map
- https://bugs.webkit.org/show_bug.cgi?id=100989
-
- Reviewed by Ryosuke Niwa.
-
- Since we removed PageLoad directory from PerformanceTests we don't need this entry in pattern_map.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PerfTestFactory):
-
-2012-11-01 Jer Noble <jer.noble@apple.com>
-
- Add LLDB-Python scripts to support WebKit data types.
- https://bugs.webkit.org/show_bug.cgi?id=100898
-
- Reviewed by Anders Carlsson.
-
- Add Summary providers for common WebKit string types.
-
- * lldb/lldb_webkit.py: Added.
- (__lldb_init_module): Register these providers with the debugger.
- (WTFString_SummaryProvider): Wrapper around WTFStringProvider.
- (WTFStringImpl_SummaryProvider): Wrapper around WTFStringImplProvider.
- (WTFAtomicString_SummaryProvider): Ditto.
- (guess_string_length): Walk through the string looking for a null-byte(s).
- (ustring_to_string): Walk through the string, extracting two-byte values, and concatenate them.
- (lstring_to_string): Walk through the string, extracting byte values, and concatenate them.
- (WTFStringImplProvider):
- (WTFStringImplProvider.__init__):
- (WTFStringImplProvider.get_length): Extract the m_length variable.
- (WTFStringImplProvider.get_data8): Extract the m_data8 variable.
- (WTFStringImplProvider.get_data16): Extract the m_data16 variable.
- (WTFStringImplProvider.to_string): Pass the appropriate data variable to {u,l}string_to_string.
- (WTFStringImplProvider.is_8bit): Check the m_hashAndFlags variable.
- (WTFStringProvider):
- (WTFStringProvider.__init__):
- (WTFStringProvider.stringimpl): Extract the m_impl variable.
- (WTFStringProvider.get_length): Pass through to WTFStringImplProvider.
- (WTFStringProvider.to_string): Ditto.
-
-2012-11-01 Peter Beverloo <peter@chromium.org>
-
- [Chromium-Android] Apache doesn't properly clean up ipc semaphores after a layout test run
- https://bugs.webkit.org/show_bug.cgi?id=100950
-
- Reviewed by Dirk Pranke.
-
- When a test run would fail to complete due to an exception in one of
- the workers, the HTTP server wouldn't get a chance to gracefully shut
- down. This caused too much IPC semaphores to be left on the server,
- causing Apache to fail to start in subsequent runs.
-
- By unifying the Android-specific code with other ports, we no longer
- fail to call the ChromiumPort/Base setup_test_run() and clean_up_test_run()
- methods either. Furthermore, the number_of_servers argument for starting
- the HTTP server is now available as well.
-
- Because not all tests require an HTTP server, it's not guaranteed that
- it will be started. Android depends on this, so add a new method to Port
- and override it for Android: requires_http_server().
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py:
- (LayoutTestRunner.run_tests):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (Manager._run_tests):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.requires_http_server):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_dont_require_http_server):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort.requires_http_server):
- (ChromiumAndroidPort.start_http_server):
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidPortTest.test_must_require_http_server):
-
-2012-11-01 Adam Roben <aroben@webkit.org>
-
- Crash beneath WKRelease after failed load in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=100954
-
- Reviewed by Sam Weinig.
-
- There were just some simple retain/release bugs.
-
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController updateTextFieldFromURL:]):
- (-[WK2BrowserWindowController updateProvisionalURLForFrame:]):
- Don't try to release null URLs.
-
- (-[WK2BrowserWindowController updateCommittedURLForFrame:]): Don't
- release a URL for which we don't have ownership.
-
-2012-10-31 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Fix editing/text-iterator/findString-expected.html fail
- https://bugs.webkit.org/show_bug.cgi?id=100902
-
- Reviewed by Yong Li.
-
- PR 210039
-
- Fix the test my using the Page::findString method instead of our own in-page searcher.
- This also syncs some of the changes we did regarding String usage.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::dumpFramesAsText):
- (BlackBerry::WebKit::dumpHistoryItem):
- (BlackBerry::WebKit::dumpBackForwardListForWebView):
- (BlackBerry::WebKit::DumpRenderTree::dump):
- (BlackBerry::WebKit::DumpRenderTree::didFinishDocumentLoadForFrame):
- (BlackBerry::WebKit::DumpRenderTree::didReceiveTitleForFrame):
- (BlackBerry::WebKit::DumpRenderTree::runJavaScriptAlert):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::setMockGeolocationError):
- (TestRunner::layerTreeAsText):
- (TestRunner::findString):
- (TestRunner::setStorageDatabaseIdleInterval):
-
-2012-11-01 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add File Chooser dialog support to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=100822
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add very basic file picker dialog to MiniBrowser so that
- the user can select a file from the file system when
- clicking an input element of type "file".
-
- * MiniBrowser/efl/main.c:
- (close_file_picker):
- (on_filepicker_deletion):
- (on_fileselector_done):
- (on_file_chooser_request):
- (window_create):
-
-2012-11-01 Yael Aharon <yael.aharon@intel.com>
-
- Unreviewed. Change my email address.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-11-01 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Double clicks/taps aren't passed down to the page
- https://bugs.webkit.org/show_bug.cgi?id=100949
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Touch mocking shouldn't transform double click events as well,
- this adds an extra touch update between clicks which prevents
- double-tap detection from triggering on web pages.
-
- Tested on the mobile version of Google maps.
-
- * MiniBrowser/qt/MiniBrowserApplication.cpp:
- (MiniBrowserApplication::notify):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- NRWT: lint warnings don't show up by default
- https://bugs.webkit.org/show_bug.cgi?id=100914
-
- Reviewed by Ryosuke Niwa.
-
- NRWT wasn't printing any warnings if you had errors in your
- TestExpectations files; this means you would only notice this
- with --lint-test-files, which is probably bad. I'm not sure
- when this requested, but perhaps when we changed the
- warnings to not be fatal if you weren't linting the files.
-
- Now they're still not fatal, but at least we print them.
-
- Also fix one warning message where we were printing the test name twice.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectationsModel._already_seen_better_match):
- (TestExpectations._report_warnings):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (MiscTests.test_parse_warnings_are_logged_if_not_in_lint_mode(self): Added.
-
-2012-10-31 Terry Anderson <tdanderson@chromium.org>
-
- Missing stderr output when using run-webkit-tests
- https://bugs.webkit.org/show_bug.cgi?id=100709
-
- Reviewed by Dirk Pranke.
-
- Appends #EOF to the end of the stderr output only at the end of a test,
- not possibly part-way through. This will allow all of the stderr output
- to appear on the results page after running run-webkit-tests.
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::handleTextFooter):
- (TestEventPrinter::handleTestFooter):
-
-2012-10-30 Mark Lam <mark.lam@apple.com>
-
- A JSC printf (support for %J+s and %b).
- https://bugs.webkit.org/show_bug.cgi?id=100566.
-
- Reviewed by Michael Saboff.
-
- Added regression tests for VMInspector::fprintf() sprintf() and snprintf().
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/JavaScriptCore: Added.
- * TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp: Added.
-
-2012-10-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Added viewport at-rule to the CSS parser and tokenizer
- https://bugs.webkit.org/show_bug.cgi?id=95961
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable CSS Device Adaptation by default on EFL.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-10-31 Terry Anderson <tdanderson@chromium.org>
-
- [touchadjustment] touch-links-two-finger-tap test pass incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=100619
-
- Reviewed by Antonio Gomes.
-
- Store the touch area when sending a GestureTwoFingerTap event.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::gestureEvent):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- nrwt is not killing stuck DRTs on chromium win
- https://bugs.webkit.org/show_bug.cgi?id=100886
-
- Unreviewed, build fix.
-
- In the original implementation of NRWT for Chromium, we used
- to assume that DRT would always manage to exit on its own and
- so NRWT wouldn't attempt to kill DRT if it was stuck (this was the
- "hung worker" problem, and meant that if DRT hung, NRWT would hang).
-
- Eventually, we merged the chromium code with the other ports and
- now will always try to shut down DRTs if a test times out, but as
- part of that merge we left in a code path where we wouldn't
- shut the driver down on windows. This was resulting in stray
- DRTs being left around, and NRWT sometimes not exiting cleanly as
- a result.
-
- No unit tests added because this was a windows-only code path (hence
- hard to test) and that is now gone.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.stop):
-
-2012-10-31 Ami Fischman <fischman@chromium.org>
-
- [chromium] DRT and WTR should clear the cache between tests
- https://bugs.webkit.org/show_bug.cgi?id=93195
-
- Reviewed by Tony Chang.
-
- This change makes chromium DRT match the GTK+, Qt, and EFL ports.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::resetTestController): added a WebCache::clear() call to achieve the goal of the bug.
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- Fix typos introduced in r133061.
- Unreviewed, build fix.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- (ReflectionHandler._serve_file):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should work for local results
- https://bugs.webkit.org/show_bug.cgi?id=100805
-
- Reviewed by Adam Barth.
-
- This is the next step in making garden-o-matic replace
- 'webkit-patch rebaseline-server' and be able to deal with local
- results. garden-o-matic now accepts a '--results-directory' option
- that will point to a layout-test-results directory. At the moment
- this will only work if you are also filtering to a single bot/
- platform at a time (we can't handle multiple bots' worth of local
- results, but that is a logical next step).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- (GardenOMatic.__init__):
- (GardenOMatic.execute):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (RebaselineTest.__init__):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest._rebaseline_test_and_update_expectations):
- (RebaselineTest.execute):
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- (AbstractParallelRebaselineCommand._rebaseline):
- (RebaselineJson.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_BaseTestCase):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (test_rebaseline_test_internal_with_move_overwritten_baselines_to):
- (TestRebaselineJson.test_rebaseline_all):
- (TestRebaselineJson.test_rebaseline_debug):
- (TestRebaselineJson.test_move_overwritten):
- (TestRebaselineJson.test_no_optimize):
- (TestRebaselineExpectations.test_rebaseline_expectations):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPRequestHandler.rebaselineall):
- (GardeningHTTPRequestHandler):
- (GardeningHTTPRequestHandler.localresult):
- * Scripts/webkitpy/tool/servers/reflectionhandler.py:
- (ReflectionHandler.do_POST):
- (ReflectionHandler):
- (ReflectionHandler.do_HEAD):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- garden-o-matic should support gardening a single port and specifying how to deal with overwritten baselines
- https://bugs.webkit.org/show_bug.cgi?id=100563
-
- Reviewed by Ojan Vafai.
-
- This patch starts the process of making garden-o-matic more useful for
- bringing up a single new port in two ways. The goal is to fully
- obsolete webkit-patch rebaseline-server.
-
- First, it adds support for the --platform arguments to garden-o-matic
- (so that the UI will default to the right cluster of bots), and if the platform arg
- specifies a single bot, filters the results down to just that bot.
-
- Second, it adds support for --move-overwritten-baselines and changes
- the implementation of the move_overwritten_baselines setting in builders.py
- so that it is only used if this flag is provided.
-
- Future patches will make it possible to use local copies of the build
- results (rather than going to the bots) and other optimizations to make
- it faster to review lots of changes on a single bot.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- (GardenOMatic):
- (GardenOMatic.execute):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (AbstractRebaseliningCommand.__init__):
- (RebaselineTest):
- (OptimizeBaselines):
- (AnalyzeBaselines):
- (AbstractParallelRebaselineCommand):
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- (AbstractParallelRebaselineCommand._rebaseline):
- (Rebaseline.__init__):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPServer.url):
- (GardeningHTTPRequestHandler.rebaselineall):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: fix running modules and classes on the command line
- https://bugs.webkit.org/show_bug.cgi?id=100787
-
- Reviewed by Eric Seidel.
-
- Handling modules and classes are arguments on the command line
- was broken due to the way we were parsing test names looking for
- parallel and serial tests.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._test_names):
- (_Loader):
- * Scripts/webkitpy/test/main_unittest.py:
- (TestStubs.integration_test_empty):
- (TestStubs):
- (TestStubs.serial_test_empty):
- (TestStubs.serial_integration_test_empty):
- (TesterTest._find_test_names):
- (TesterTest):
- (TesterTest.test_individual_names_are_not_run_twice):
- (TesterTest.test_integration_tests_are_not_found_by_default):
- (TesterTest.test_integration_tests_are_found):
-
-2012-10-31 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: refactor common command line arguments for --platform, rebaseline commands
- https://bugs.webkit.org/show_bug.cgi?id=100800
-
- Reviewed by Ojan Vafai.
-
- This change shuffles around how we share command-line options
- between NRWT and the various webkit-patch rebaselining commands.
-
- There are no functional changes in this patch but it should make
- things clearer and will be useful in a couple of upcoming patches.
-
- * Scripts/webkitpy/layout_tests/port/__init__.py:
- * Scripts/webkitpy/layout_tests/port/factory.py:
- (platform_options):
- (configuration_options):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/tool/commands/queries.py:
- (PrintExpectations.__init__):
- (PrintBaselines.__init__):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (AbstractRebaseliningCommand):
- (AbstractRebaseliningCommand.__init__):
- (RebaselineTest.__init__):
- (OptimizeBaselines.__init__):
- (AnalyzeBaselines.__init__):
- (AbstractParallelRebaselineCommand):
- (RebaselineJson.__init__):
- (RebaselineExpectations.__init__):
- (Rebaseline.__init__):
-
-2012-10-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [NRWT] Xvfb driver is leaking application cache files
- https://bugs.webkit.org/show_bug.cgi?id=100864
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Application Cache looks for XDG_CACHE_HOME which is now
- prepended with DUMPRENDERTREE_TEMP and cleaned up when
- the test worker finishes his job.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._start):
-
-2012-10-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] DRT doesn't clean up after itself
- https://bugs.webkit.org/show_bug.cgi?id=100346
-
- Reviewed by Kenneth Rohde Christiansen.
-
- The test driver exports an environment variable DUMPRENDERTREE_TEMP
- which is used by both DRT and WTR as the folder for storing icons,
- databases, application cache, etc, overriding the default XDG_* path.
-
- We don't need to create these folders because in fact, they are never
- used and also never cleaned. Things created inside DUMPRENDERTREE_TEMP
- are automatically removed after the test run.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.setup_environ_for_server):
-
-2012-10-31 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [WTR] WebKitTestRunner is not cleaning up the icon database
- https://bugs.webkit.org/show_bug.cgi?id=100678
-
- Reviewed by Kenneth Rohde Christiansen.
-
- The icon database was not being set to the temporary folder created for
- the test runner by the test driver, which is removed automatically
- after the run.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-10-31 Mike West <mkwst@chromium.org>
-
- Script run from an isolated world should bypass a page's CSP.
- https://bugs.webkit.org/show_bug.cgi?id=97398
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- (DRTTestRunner::setIsolatedWorldContentSecurityPolicy):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- Adding a mechanism to set the Content Security Policy for an
- isolated world to Chromium's testRunner.
-
-2012-10-31 Michał Pakuła vel Rutka <m.pakula@samsung.com>
-
- [EFL][DRT] EventSender requires contextClick implementation
- https://bugs.webkit.org/show_bug.cgi?id=86091
-
- Reviewed by Gyuyoung Kim.
-
- Add contextClick for DumpRenderTreeEventSender basing on WebKit GTK
- implementation.
-
- * DumpRenderTree/efl/EventSender.cpp:
- (getMenuItemTitleCallback):
- (setMenuItemTitleCallback):
- (menuItemClickCallback):
- (contextClickCallback):
-
-2012-10-30 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [WTR] Memory leaks in TestWebKitAPI::didReceiveMessageFromInjectedBundle()
- https://bugs.webkit.org/show_bug.cgi?id=100770
-
- Reviewed by Sam Weinig.
-
- Adopt strings returned by WKStringCreateWithUTF8CString() in
- didReceiveMessageFromInjectedBundle() to avoid memory leaks.
-
- * TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp:
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
-
-2012-10-30 Kangil Han <kangil.han@samsung.com>
-
- Fix broken python unit test
- https://bugs.webkit.org/show_bug.cgi?id=100810
-
- Reviewed by Dirk Pranke.
-
- BUG 100755 has broken python unit test, e.g. assertion fail, since it modified baseline path.
- Therefore, this patch fixes it.
-
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaselineTest.test_baseline_directory):
-
-2012-10-30 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline*: add more helpful logging
- https://bugs.webkit.org/show_bug.cgi?id=100562
-
- Reviewed by Ojan Vafai.
-
- This change rewires the garden-o-matic and rebaseline* commands
- in webkit-patch so that --verbose propagates through all the
- subcommand invocations properly, and cleans up the logging so
- that you can actually tell what is happening. For now, we
- leave all of the logging at the logging.DEBUG level, which
- means that it gets mixed in will all the other debug logging noise
- and is harder to read, but we'll fix that in subsequent patches.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer._platform):
- (BaselineOptimizer._move_baselines):
- (BaselineOptimizer.optimize):
- * Scripts/webkitpy/tool/commands/gardenomatic.py:
- (GardenOMatic.execute):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest._copy_existing_baseline):
- (RebaselineTest._rebaseline_test):
- (OptimizeBaselines._optimize_baseline):
- (OptimizeBaselines.execute):
- (AbstractParallelRebaselineCommand._run_webkit_patch):
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- (AbstractParallelRebaselineCommand._files_to_add):
- (AbstractParallelRebaselineCommand._optimize_baselines):
- (AbstractParallelRebaselineCommand._rebaseline):
- (RebaselineExpectations._add_tests_to_rebaseline_for_port):
- (Rebaseline.execute):
- * Scripts/webkitpy/tool/servers/gardeningserver.py:
- (GardeningHTTPServer.__init__):
- (GardeningHTTPRequestHandler):
- (GardeningHTTPRequestHandler._run_webkit_patch):
- (GardeningHTTPRequestHandler.rebaselineall):
-
-2012-10-30 Dirk Pranke <dpranke@chromium.org>
-
- clean up tests for webkit-patch rebaseline* commands
- https://bugs.webkit.org/show_bug.cgi?id=100793
-
- Reviewed by Ojan Vafai.
-
- The tests in rebaseline_unittest.py had a lot of code cloning,
- and many of the tests tested whether things passed or failed by
- looking at what was logged instead of what was actually done;
- as a result the tests were kinda hard to understand and harder to
- maintain.
-
- This patch adds hooks to MockWeb() and MockExecutive() so we can
- directly see which URLs were fetched and calls invoked, and
- then reworks all of the unit tests to be easier to follow and
- maintain and not sensitive to the logging. Also there were a
- couple of tests that were redundant.
-
- There are no functional changes in this patch, and I verified that
- the coverage remains the same.
-
- * Scripts/webkitpy/common/net/web_mock.py:
- (MockWeb.__init__):
- (MockWeb.get_binary):
- * Scripts/webkitpy/common/system/executive_mock.py:
- (MockExecutive.__init__):
- (MockExecutive.run_command):
- (MockExecutive.kill_all):
- (MockExecutive):
- (MockExecutive.kill_process):
- (MockExecutive.popen):
- (MockExecutive.run_in_parallel):
- (MockExecutive2):
- (MockExecutive2.__init__):
- (MockExecutive2.run_command):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (_BaseTestCase):
- (_BaseTestCase.setUp):
- (_BaseTestCase._expand):
- (_BaseTestCase._read):
- (_BaseTestCase._write):
- (_BaseTestCase._zero_out_test_expectations):
- (TestRebaselineTest):
- (TestRebaselineTest.test_baseline_directory):
- (TestRebaselineTest.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_no_existing_result):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (test_rebaseline_test_internal_with_move_overwritten_baselines_to):
- (TestRebaselineJson):
- (TestRebaselineJson.setUp):
- (TestRebaselineJson.tearDown):
- (TestRebaselineJson.test_rebaseline_all):
- (TestRebaselineJson.test_rebaseline_debug):
- (TestRebaseline):
- (TestRebaseline.test_tests_to_update):
- (TestRebaseline.test_rebaseline):
- (TestRebaseline.test_rebaseline.rebaseline_stub):
- (TestRebaselineExpectations):
- (TestRebaselineExpectations.setUp):
- (TestRebaselineExpectations.test_rebaseline_expectations):
- (TestRebaselineExpectations.test_rebaseline_expectations_noop):
- (TestRebaselineExpectations.disabled_test_overrides_are_included_correctly):
-
-2012-10-30 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy: fix import of coverage so that it works in a clean install
- https://bugs.webkit.org/show_bug.cgi?id=100780
-
- Reviewed by Tony Chang.
-
- The coverage module is written so that the parent directory needs
- to be in PYTHONPATH; work around that ...
-
- * Scripts/webkitpy/test/main_unittest.py:
- (TestStubs.test_empty):
- (TesterTest.test_individual_names_are_not_run_twice):
- (TesterTest):
- (TesterTest.integration_test_coverage_works):
- * Scripts/webkitpy/thirdparty/__init__.py:
- (AutoinstallImportHook._install_coverage):
-
-2012-10-30 Anders Carlsson <andersca@apple.com>
-
- Another build fix.
-
- * TestWebKitAPI/Tests/WebKit2/WebArchive.cpp:
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle):
-
-2012-10-30 Anders Carlsson <andersca@apple.com>
-
- Build fix.
-
- * WebKitTestRunner/mac/EventSenderProxy.mm:
- (WTR::EventSenderProxy::mouseScrollBy):
-
-2012-10-30 Rick Byers <rbyers@chromium.org>
-
- [touchadjustment] touch-links-longpress tests passes incorrectly
- https://bugs.webkit.org/show_bug.cgi?id=96810
-
- Reviewed by Antonio Gomes.
-
- Add support for suppling width/height information for longpress
- gesture (as for other gestures like tapDown) for the purposes
- of touch adjustment.
-
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::gestureEvent):
-
-2012-10-29 Anders Carlsson <andersca@apple.com>
-
- Build WebKit as C++11 on Mac
- https://bugs.webkit.org/show_bug.cgi?id=100720
-
- Reviewed by Daniel Bates.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- Add CLANG_CXX_LANGUAGE_STANDARD=gnu++0x.
-
-2012-10-30 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][JHBUILD] Update EFL libraries to v1.7.1 stable release
- https://bugs.webkit.org/show_bug.cgi?id=100759
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update Bump EFL libraries to the new stable release (v1.7.1)
- in JHBuild to pull the latest bug fixes.
-
- * efl/jhbuild.modules:
-
-2012-10-29 Anders Carlsson <andersca@apple.com>
-
- String::createCFString should return a RetainPtr
- https://bugs.webkit.org/show_bug.cgi?id=100419
-
- Reviewed by Andreas Kling.
-
- Update callers of String::createCFString.
-
- * WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm:
- (WTR::InjectedBundlePage::platformDidStartProvisionalLoadForFrame):
-
-2012-10-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] WebKitTestRunner needs testRunner.queueLoadHTMLString
- https://bugs.webkit.org/show_bug.cgi?id=100747
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added testRunner.queueLoadHTMLString implementation.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::queueLoadHTMLString):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::queueLoadHTMLString):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WorkQueueManager.cpp:
- (WTR::WorkQueueManager::queueLoadHTMLString):
- (WTR):
- * WebKitTestRunner/WorkQueueManager.h:
- (WorkQueueManager):
-
-2012-10-30 Kangil Han <kangil.han@samsung.com>
-
- [EFL] Baseline search path should consider both WK1 and WK2 on layout test.
- https://bugs.webkit.org/show_bug.cgi?id=100755
-
- Reviewed by Gyuyoung Kim.
-
- Current implementation doesn't consider WK1 case in baseline search path.
- Therefore, this patch fixes it.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.default_baseline_search_path):
-
-2012-10-30 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [QT][DRT] Remove unneeded testRunner.setMediaType() implementation
- https://bugs.webkit.org/show_bug.cgi?id=100740
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Removed unneeded testRunner.setMediaType() implementation, as tests use
- cross-platform window.internals.settings.setMediaTypeOverride instead.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
-
-2012-10-30 Kangil Han <kangil.han@samsung.com>
-
- [EFL][DRT] Bitmap should show whole view area.
- https://bugs.webkit.org/show_bug.cgi?id=100642
-
- Reviewed by Gyuyoung Kim.
-
- css sticky position test cases haven't been passed even though implementation has been landed by BUG 95182.
- This is because current create bitmap implementation refers to geometry position that considers scroll movement even though
- paint does it. Therefore, this patch always reflects current view size and remove duplicated graphic operation to dump correct bitmap image.
-
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView):
-
-2012-10-30 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL] Refactor tooltip callback signal in WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=100571
-
- Reviewed by Gyuyoung Kim.
-
- Separate tooltip callback signal into 'tooltip,text,set'
- and 'tooltip,text,unset' to be consistent with WebKit2.
-
- * EWebLauncher/main.c:
- (on_tooltip_text_set):
- (on_tooltip_text_unset):
- (browserCreate):
-
-2012-10-29 Csaba Osztrogonác <ossy@webkit.org>
-
- Unreviewed, rolling out r132819.
- http://trac.webkit.org/changeset/132819
- https://bugs.webkit.org/show_bug.cgi?id=100388
-
- It made layout testing 40% slower and storage tests assert
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::reset):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
-
-2012-10-29 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] TestRunner needs to compile ChromiumCurrentTime and ChromiumThreading in components build
- https://bugs.webkit.org/show_bug.cgi?id=100658
-
- Reviewed by Tony Chang.
-
- Before, this was compiled into DumpRenderTree. I also dropped the
- include_dirs and dependencies block as TestRunner already has them.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-10-29 Takashi Sakamoto <tasak@google.com>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-28 Mark Rowe <mrowe@apple.com>
-
- Simplify Xcode configuration settings that used to vary between OS versions.
-
- Reviewed by Dan Bernstein.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/DebugRelease.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
-
-2012-10-28 Mark Rowe <mrowe@apple.com>
-
- Remove references to unsupported OS and Xcode versions.
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig: Removed.
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig: Removed.
- * MiniBrowser/Configurations/DebugRelease.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig: Removed.
- * TestWebKitAPI/Configurations/DebugRelease.xcconfig:
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig: Removed.
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
-
-2012-10-26 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: change non-verbose log format for webkit-patch
- https://bugs.webkit.org/show_bug.cgi?id=100561
-
- Reviewed by Ojan Vafai.
-
- Logging the module name and the log level is annoying and nearly useless.
- For starters, this change removes that unless you are doing verbose/
- debug logging. In the future we should split out the concepts of
- verbose and debug logging (like we did in test-webkitpy and
- run-webkit-tests) so that you could get this in debug logging.
-
- * Scripts/webkitpy/common/system/logutils.py:
- (_default_handlers):
- (configure_logging):
- * Scripts/webkitpy/common/system/logutils_unittest.py:
- (ConfigureLoggingTest.test_info_message):
- (ConfigureLoggingTest):
- (ConfigureLoggingTest.test_debug_message):
- (ConfigureLoggingTest.test_two_messages):
- (ConfigureLoggingVerboseTest):
- (ConfigureLoggingVerboseTest._logging_level):
- (ConfigureLoggingVerboseTest.test_info_message):
- (ConfigureLoggingVerboseTest.test_debug_message):
- (ConfigureLoggingCustomLevelTest.test_logged_message):
-
-2012-10-29 Christophe Dumez <christophe.dumez@intel.com>
-
- [CMAKE] Add TestNetscapePlugIn/Tests/NPRuntimeCallsWithNullNPP.cpp to CMakeLists.txt
- https://bugs.webkit.org/show_bug.cgi?id=100681
-
- Reviewed by Anders Carlsson.
-
- Add TestNetscapePlugIn/Tests/NPRuntimeCallsWithNullNPP.cpp to CMake since
- it is needed by plugins/npruntime/npruntime-calls-with-null-npp.html
- layout test.
-
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
-
-2012-10-29 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Flaky security tests
- https://bugs.webkit.org/show_bug.cgi?id=100388
-
- Reviewed by Jocelyn Turcotte.
-
- Disable text dumping and load a blank URL to ensure the documentLoader is cleared
- before we start dumping text for the new page. Otherwise messages from the old page
- may end up in the text output of the new test.
-
- This matches what WebKitTestRunner does, and reuses the Qt code for waiting for flag.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- (WebCore::runUntil):
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (WebCore::DumpRenderTree::finishedResetting):
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/DumpRenderTreeQt.h:
- (DumpRenderTree):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::resetDumping):
- (TestRunner::reset):
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
-
-2012-10-29 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] Enable Shadow DOM at runtime if compiled with SHADOW_DOM support
- https://bugs.webkit.org/show_bug.cgi?id=100668
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable Shadow DOM functionality at run time in WebKitTestRunner
- if compiled with SHADOW_DOM flag set. This is needed to run
- the Shadow DOM layout tests.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2012-10-29 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][AC] Fix bugs preventing us from running layout tests with AC turned on
- https://bugs.webkit.org/show_bug.cgi?id=100598
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Make sure to use opengl_x11 engine when AC is turned on and X11 is in use.
- We cannot create a gl context otherwise.
-
- * MiniBrowser/efl/main.c:
- (elm_main):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::initEcoreEvas):
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (initEcoreEvas):
- * EWebLauncher/efl/main.c:
- (windowCreate):
-
-2012-10-29 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][WK2] REGRESSION(r132342): fast/events/frame-tab-focus.html fails
- https://bugs.webkit.org/show_bug.cgi?id=100646
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::focus): Improve the check we perform to
- decide whether the focus should be taken out of the view before
- focusing it again so that we do not unnecessarily unfocus it and
- cause blur/focus events to be triggered. Instead of just verifying
- if the Evas_Object representing the view has focus, use the WK C
- API to check that the currently focused frame is not the main
- frame.
-
-2012-10-29 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r132782.
- http://trac.webkit.org/changeset/132782
- https://bugs.webkit.org/show_bug.cgi?id=100653
-
- It made 400+ tests fail and 180 tests flakey on Qt (Requested
- by Ossy on #webkit).
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-10-29 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Flaky security tests
- https://bugs.webkit.org/show_bug.cgi?id=100388
-
- Reviewed by Jocelyn Turcotte.
-
- Disable text output and load a blank URL to ensure the documentLoader is cleared
- before we start dumping text for the new page. Otherwise messages from the old page
- may end up in the text output of the new test.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::resetToConsistentStateBeforeTesting):
-
-2012-10-29 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove remaining usages of webkit_support from the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=100344
-
- Reviewed by Adam Barth.
-
- The most important part is to not rely on calling out to gdk/X11 to
- translate keycodes to hardware keycodes, as this is not possible inside
- the sandbox.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (WebKit):
- (webkit_support):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::doDragDrop):
- (WebTestRunner::EventSender::updateClickCountForButton):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::handleMouseWheel):
- (WebTestRunner::EventSender::gestureEvent):
- (WebTestRunner::EventSender::gestureFlingCancel):
- (WebTestRunner::EventSender::gestureFlingStart):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp: Added.
- (WebTestRunner):
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h.
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::getCurrentTimeInMillisecond):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::Internal::getAbsoluteWebStringFromUTF8Path):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::getCurrentTimeInMillisecond):
- (WebViewHost::getAbsoluteWebStringFromUTF8Path):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-29 Jonathan Dong <jonathan.dong@torchmobile.com.cn>
-
- Unreviewed. Add jonathan.dong@torchmobile.com.cn as a committer.
- https://bugs.webkit.org/show_bug.cgi?id=100629
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-27 Dan Bernstein <mitz@apple.com>
-
- REAL_PLATFORM_NAME build setting is no longer needed
- https://bugs.webkit.org/show_bug.cgi?id=100587
-
- Reviewed by Mark Rowe.
-
- Removed the definition of REAL_PLATFORM_NAME and replaced references to it with references
- to PLATFORM_NAME.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- * DumpRenderTree/mac/Configurations/CompilerVersion.xcconfig:
- * DumpRenderTree/mac/Configurations/DebugRelease.xcconfig:
- * MiniBrowser/Configurations/Base.xcconfig:
- * MiniBrowser/Configurations/CompilerVersion.xcconfig:
- * TestWebKitAPI/Configurations/Base.xcconfig:
- * TestWebKitAPI/Configurations/CompilerVersion.xcconfig:
- * WebKitTestRunner/Configurations/Base.xcconfig:
- * WebKitTestRunner/Configurations/CompilerVersion.xcconfig:
- * WebKitTestRunner/Configurations/DebugRelease.xcconfig:
-
-2012-10-26 Anders Carlsson <andersca@apple.com>
-
- Crash when making NPRuntime calls with a null NPP pointer
- https://bugs.webkit.org/show_bug.cgi?id=100569
-
- Reviewed by Darin Adler.
-
- Add new NPRuntimeCallsWithNullNPP plug-in test.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj:
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp:
- (PluginTest::NPN_ReleaseVariantValue):
- (PluginTest::netscapeFuncs):
- * DumpRenderTree/TestNetscapePlugIn/PluginTest.h:
- (PluginTest):
- * DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeCallsWithNullNPP.cpp: Added.
- (NPRuntimeCallsWithNullNPP):
- (NPRuntimeCallsWithNullNPP::NPRuntimeCallsWithNullNPP):
- (NPRuntimeCallsWithNullNPP::NPP_New):
- * DumpRenderTree/TestNetscapePlugIn/win/TestNetscapePlugin.vcproj:
- * DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro:
- * GNUmakefile.am:
-
-2012-10-26 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Notification should be sent when accessibilityIsIgnored changes
- https://bugs.webkit.org/show_bug.cgi?id=99547
-
- Reviewed by Chris Fleizach.
-
- Add additional accessibility notifications.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2012-10-25 Roger Fong <roger_fong@apple.com>
-
- Get rid of (<X%) failing output for old-run-webkit-tests.
- https://bugs.webkit.org/show_bug.cgi?id=100447
-
- Reviewed by Jessie Berlin.
-
- Not a particularly useful piece of information. It's pretty much never above 1%.
- new-run-webkit-tests does not output this either.
-
- * Scripts/old-run-webkit-tests:
- (printResults):
-
-2012-10-26 Xianzhu Wang <wangxianzhu@chromium.org>
-
- Build bot gives incorrect link to EWS build failure
- https://bugs.webkit.org/show_bug.cgi?id=100436
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py:
- (MockCommitQueue.__init__):
- (MockCommitQueue.command_failed): Return incremental failure_status_id
- (CommitQueueTaskTest.test_red_tree_patch_rejection): Check failure_status_id
- * Scripts/webkitpy/tool/bot/patchanalysistask.py:
- (PatchAnalysisTask._test_patch): Use the failure_status_id of test with patch when test without patch fails and test with patch has unexpected failures.
-
-2012-10-26 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- webkitpy: Pass the `Listen' Apache directive from webkitpy, not the httpd.conf files.
- https://bugs.webkit.org/show_bug.cgi?id=98602
-
- Reviewed by Dirk Pranke.
-
- Unify all the different `Listen' directives present in the several
- httpd.conf files we have in LayoutTests/http/conf. For one, we
- were already passing `Listen 127.0.0.1:8000' via webkitpy before,
- and opening the other ports from the conf files.
-
- The configuration files differed mostly in the way they handled
- IPV6 ports. Some of them did not listen to IPV6 ports because the
- systems which used them sometimes did not have IPV6 support. The
- `http_server_supports_ipv6' method has been added to Port to
- address that. cygwin, on its turn, still seems to use Apache 1.3,
- which does not support IPV6 at all; the newly-added method has a
- special case for that. Plus, perform a socket.getaddrinfo() call
- the same way Apache itself does so we are sure we only enable IPV6
- when setting that up in the httpd server is not going to fail.
-
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_cygwin):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_version_dir):
- (Port.to.start_websocket_server):
- (Port.to):
- (Port.to.http_server_supports_ipv6):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_http_server_supports_ipv6):
- (PortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd):
- (LayoutTestApacheHttpd.__init__):
-
-2012-10-26 David Barton <dbarton@mathscribe.com>
-
- Unreviewed. Update my IRC nickname to a registered one.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-26 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix the LLInt build on Windows
- https://bugs.webkit.org/show_bug.cgi?id=97648
-
- Reviewed by Tor Arne Vestbø.
-
- Added BIN_EXTENSION variable - similar to automake - that expands to .exe as suffix for
- executable programs on Windows. Empty otherwise. Also added support for force_build_all
- to allow overriding us disabling build_all for TEMPLATE = app.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-10-26 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Support pixel tests for BlackBerry DRT
- https://bugs.webkit.org/show_bug.cgi?id=100210
-
- Reviewed by Rob Buis.
-
- (The following 2 files are missed in previous patch(r132582), adding them
- again.)
-
- * DumpRenderTree/blackberry/build: Added.
- * DumpRenderTree/blackberry/src.pro: Added.
- Adds 2 files for building ImageDiff, by Christopher Wells.
-
-2012-10-26 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- Add feature flags for CSS Device Adaptation
- https://bugs.webkit.org/show_bug.cgi?id=95960
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-10-26 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r132552.
- http://trac.webkit.org/changeset/132552
- https://bugs.webkit.org/show_bug.cgi?id=100486
-
- Makes typeahead tests crash in debug. (Requested by pfeldman
- on #webkit).
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::doDragDrop):
- (WebTestRunner::EventSender::updateClickCountForButton):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::handleMouseWheel):
- (WebTestRunner::EventSender::gestureEvent):
- (WebTestRunner::EventSender::gestureFlingCancel):
- (WebTestRunner::EventSender::gestureFlingStart):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp: Removed.
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h: Removed.
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- (WebKit):
- (webkit_support):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-26 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Support pixel tests for BlackBerry DRT
- https://bugs.webkit.org/show_bug.cgi?id=100210
-
- Reviewed by Rob Buis.
-
- The implementation is based on the patch from Christopher Wells.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::DumpRenderTree):
- (BlackBerry::WebKit::DumpRenderTree::runTest):
- (BlackBerry::WebKit::DumpRenderTree::runCurrentTest):
- (BlackBerry::WebKit::DumpRenderTree::resetToConsistentStateBeforeTesting):
- (BlackBerry::WebKit::DumpRenderTree::runTests):
- (BlackBerry::WebKit::DumpRenderTree::dump):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
-
- * DumpRenderTree/blackberry/PNGImageEncoder.cpp:
- (BGRAtoRGBA):
- (encodeBitmapToPNG):
- * DumpRenderTree/blackberry/PNGImageEncoder.h:
- The changes to PNGImageEncoder files are from master_40, patched by Tyler
- Abbott and Rob Buis.
-
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp:
- (createBitmapContextFromWebView):
- (computeMD5HashStringForBitmapContext):
- (printPNG):
- (dumpBitmap):
- * DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h:
- (BitmapContext::createByAdoptingData):
- (BitmapContext::~BitmapContext):
- (BitmapContext):
- (BitmapContext::BitmapContext):
-
- * DumpRenderTree/blackberry/build: Added.
- * DumpRenderTree/blackberry/src.pro: Added.
- Adds 2 files for building ImageDiff, by Christopher Wells.
-
-2012-10-25 Min Qin <qinmin@chromium.org>
-
- Fix a layout test crash if a TestWebkitPlugin is put inside an iframe
- https://bugs.webkit.org/show_bug.cgi?id=100406
-
- Reviewed by Adam Barth.
-
- Resize the context with an empty rect will cause a gl_error in gles2_cmd_decoder.cc.
- Don't paint the plugin if m_rect is empty.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::updateGeometry):
-
-2012-10-25 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Display tooltip in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=99322
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Display tooltip in MiniBrowser using elm_object_tooltip_text_set().
-
- * MiniBrowser/efl/main.c:
- (on_tooltip_text_set):
- (on_tooltip_text_unset):
- (window_create):
-
-2012-10-25 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove remaining usages of webkit_support from the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=100344
-
- Reviewed by Adam Barth.
-
- The most important part is to not rely on calling out to gdk/X11 to
- translate keycodes to hardware keycodes, as this is not possible inside
- the sandbox.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (WebKit):
- (webkit_support):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h:
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::doDragDrop):
- (WebTestRunner::EventSender::updateClickCountForButton):
- (WebTestRunner::EventSender::mouseDown):
- (WebTestRunner::EventSender::mouseUp):
- (WebTestRunner::EventSender::mouseMoveTo):
- (WebTestRunner::EventSender::keyDown):
- (WebTestRunner::EventSender::replaySavedEvents):
- (WebTestRunner::EventSender::contextClick):
- (WebTestRunner::EventSender::beginDragWithFiles):
- (WebTestRunner::EventSender::sendCurrentTouchEvent):
- (WebTestRunner::EventSender::handleMouseWheel):
- (WebTestRunner::EventSender::gestureEvent):
- (WebTestRunner::EventSender::gestureFlingCancel):
- (WebTestRunner::EventSender::gestureFlingStart):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.cpp: Added.
- (WebTestRunner):
- (WebTestRunner::NativeKeyCodeForWindowsKeyCode):
- * DumpRenderTree/chromium/TestRunner/src/KeyCodeMapping.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h.
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::getCurrentTimeInMillisecond):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::Internal::getAbsoluteWebStringFromUTF8Path):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::getCurrentTimeInMillisecond):
- (WebViewHost::getAbsoluteWebStringFromUTF8Path):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-25 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r132514.
- http://trac.webkit.org/changeset/132514
- https://bugs.webkit.org/show_bug.cgi?id=100440
-
- "Broke chromium content_browsertests AccessibilityAriaMenu
- AccessibilityInputRange AccessibilityListMarkers" (Requested
- by scheib on #webkit).
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2012-10-25 Dirk Pranke <dpranke@chromium.org>
-
- rwt --lint-test-files doesn't handle the cascade properly
- https://bugs.webkit.org/show_bug.cgi?id=100315
-
- Reviewed by Ojan Vafai.
-
- We were only linting the first file in each port's list of
- expectations.
-
- This change pushes more of the logic for linting files into
- the TestExpectations classes themselves, but it's still a bit of
- a hack. A better solution will require splitting out the actual
- parsing of the files from the TestExpectations constructor.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations):
- (TestExpectations.__init__):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (parse_exp):
- (SkippedTests.check):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (lint):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (LintTest.test_all_configurations.FakePort.__init__):
- (LintTest.test_all_configurations):
- (LintTest.test_lint_test_files__errors):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.check_test_expectations):
-
-2012-10-25 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK gardening.
-
- Skipping the atspi-basic-hierarchy test case in the TestWebKitAccessibility
- WebKit2 API test since the test is currently failing.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-10-25 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: Notification should be sent when accessibilityIsIgnored changes
- https://bugs.webkit.org/show_bug.cgi?id=99547
-
- Reviewed by Chris Fleizach.
-
- Add additional accessibility notifications.
-
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postAccessibilityNotification):
-
-2012-10-25 Dominik Röttsches <dominik.rottsches@intel.com>
-
- Conditionalize XHR timeout support
- https://bugs.webkit.org/show_bug.cgi?id=100356
-
- Reviewed by Adam Barth.
-
- Adding XHR_TIMEOUT feature in perl and qmake files.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-10-25 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Unreviewed. Update my contact info.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-25 Terry Anderson <tdanderson@chromium.org>
-
- Unreviewed. Adding myself as a committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-25 Zeno Albisser <zeno@webkit.org>
-
- [Qt] Adjust library name in webkitdirs.pm after r131300.
- https://bugs.webkit.org/show_bug.cgi?id=100376
-
- The library was renamed from QtWebKit to QtWebKitWidgets.
- run-launcher was still looking for QtWebKit.
-
- Reviewed by Simon Hausmann.
-
- * Scripts/webkitdirs.pm:
- (builtDylibPathForName):
-
-2012-10-22 Mikhail Naganov <mnaganov@chromium.org>
-
- [Chromium] Add supportMultipleWindows setting, needed for Android
- https://bugs.webkit.org/show_bug.cgi?id=99716
-
- Reviewed by Adam Barth.
-
- Add supportMultipleWindows settings for reusing the same view when
- opening popups. This is required for emulating the behavior of
- Android WebView. Adding into WebCore, as other ports might want to
- use this setting in the future.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::overridePreference):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-10-25 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] JavaScript popups are not focused when opened
- https://bugs.webkit.org/show_bug.cgi?id=100354
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Move focus to the JavaScript popups when opened so that the key events
- are forwarded to the popups instead of web view.
-
- * MiniBrowser/efl/main.c:
- (on_javascript_alert):
- (on_javascript_confirm):
- (on_javascript_prompt):
-
-2012-10-25 Eugene Klyuchnikov <eustas.bug@gmail.com>
-
- Web Inspector: Fix "check-inspector-strings" script and fix localized strings.
- https://bugs.webkit.org/show_bug.cgi?id=100090
-
- Reviewed by Vsevolod Vlasov.
-
- Script "check-inspector-strings" seems to be broken.
- Fixed it, refined search algorithm.
-
- * Scripts/check-inspector-strings: Fixed and refined.
-
-2012-10-24 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: fix a couple of minor crashing issues under cygwin
- https://bugs.webkit.org/show_bug.cgi?id=100309
-
- Reviewed by Ojan Vafai.
-
- Cygwin was crashing on a null object reference and then
- an oserror in kill().
-
- * Scripts/webkitpy/common/system/executive.py:
- (Executive.kill_process):
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.stop):
-
-2012-10-24 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: truncate meter lines properly on windows
- https://bugs.webkit.org/show_bug.cgi?id=100062
-
- Reviewed by Tony Chang.
-
- This change adds the code to figure out the terminal width
- on windows (it was already there for Unixen) and moves it
- to a platform-specific object.
-
- * Scripts/webkitpy/common/system/platforminfo.py:
- (PlatformInfo.terminal_width):
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.total_bytes_memory):
- (MockPlatformInfo):
- (MockPlatformInfo.terminal_width):
- * Scripts/webkitpy/layout_tests/views/metered_stream.py:
- (MeteredStream.__init__):
- (MeteredStream.number_of_columns):
- (MeteredStream.flush):
- * Scripts/webkitpy/layout_tests/views/printing.py:
- (Printer.__init__):
- (Printer._test_status_line):
-
-2012-10-24 Dirk Pranke <dpranke@chromium.org>
-
- tweak debug logging in webkit-patch optimize-baselines
- https://bugs.webkit.org/show_bug.cgi?id=100294
-
- Reviewed by Ojan Vafai.
-
- This changes the logging to print out the baselines found
- (and their checksums) even when we don't do anything.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer.py:
- (BaselineOptimizer.optimize):
-
-2012-10-24 Sailesh Agrawal <sail@chromium.org>
-
- Incorrect keycodes for numpad /, -, +, .
- https://bugs.webkit.org/show_bug.cgi?id=99188
-
- Reviewed by Tony Chang.
-
- Add key mappings for all numpad keys.
-
- * DumpRenderTree/mac/EventSendingController.mm:
- (KeyMappingEntry):
- (-[EventSendingController keyDown:withModifiers:withLocation:]): Added all numpad keys.
-
-2012-10-24 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: clean up references to Skipped files
- https://bugs.webkit.org/show_bug.cgi?id=100045
-
- Reviewed by Ojan Vafai.
-
- Since they are no longer used or needed ...
-
- * Scripts/webkitpy/layout_tests/port/apple.py:
- (ApplePort._generate_all_test_configurations):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.skipped_layout_tests):
- (Port.expectations_files):
- (Port._wk2_port_name):
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort):
- * Scripts/webkitpy/layout_tests/port/mac_unittest.py:
- (MacTest.test_default_timeout_ms):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (test_expectations_files):
- (test_expectations_files.platform_dirs):
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.__init__):
-
-2012-10-24 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Use include paths relative to Source/ in the TestRunner's public API
- https://bugs.webkit.org/show_bug.cgi?id=100079
-
- Reviewed by Adam Barth.
-
- For a inside-chromium build, we usually don't add the WebKit API paths
- as include paths, so including files by name only does not work.
-
- Eventually we might want to move to a model where all includes are
- relative to Source/, so we're using that here already now.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/chromium/TestRunner/public/WebEventSender.h:
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
-
-2012-10-24 Ojan Vafai <ojan@chromium.org>
-
- Show an error when there are no completed builds in the past 20 runs
- https://bugs.webkit.org/show_bug.cgi?id=100266
-
- Reviewed by Dimitri Glazkov.
-
- Right now we get a cryptic JS error in the console when loading the gtk port. This at least gives an error in
- the notification stream. We should probably tweak this UI to make it so we can make
- errors in the notification stream stick out (e.g. make the text red).
-
- We should also consider making the number of runs to load dynamic (e.g. if 20 runs don't work,
- try 40).
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/garden-o-matic.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
-
-2012-10-24 Ian Vollick <vollick@chromium.org>
-
- [chromium] Explicitly disable accelerated animations in DRT
- https://bugs.webkit.org/show_bug.cgi?id=100241
-
- Reviewed by Adrienne Walker.
-
- Disable accelerated animations by default in DRT.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::setAcceleratedAnimationEnabled):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
-
-2012-10-24 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Move the QQuickWebViewExperimental pointer to QQuickWebViewPrivate
- https://bugs.webkit.org/show_bug.cgi?id=100253
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- Use QQuickWebView::experimental rather than creating a new instance.
-
-2012-10-24 Thiago Marcos P. Santos <thiago.santos@intel.com>
-
- [EFL] run-webkit-tests writes garbage on stderr when running on Xvfb
- https://bugs.webkit.org/show_bug.cgi?id=100243
-
- Reviewed by Kenneth Rohde Christiansen.
-
- These errors generate noise on the reports and in some cases, like when
- running perf tests, makes the test fail. By using Xext, we can add a
- dummy handler to ignore these errors.
-
- We could have added this handler on the top level EWK API, but that
- would be intrusive and could override handlers defined by the user.
-
- * WebKitTestRunner/PlatformEfl.cmake:
- * WebKitTestRunner/efl/main.cpp:
- (dummyExtensionErrorHandler):
- (main):
-
-2012-10-24 Carlos Garcia Campos <cgarcia@igalia.com>
-
- Unreviewed. Fix the GTK+ build.
-
- * TestWebKitAPI/GNUmakefile.am: Add GTK_FLAGS to
- libTestWebKitAPIMain and webcore cflags to TestGtk.
-
-2012-10-24 Zeno Albisser <zeno@webkit.org>
-
- Implement GraphicsSurface for Windows.
- https://bugs.webkit.org/show_bug.cgi?id=98147
-
- Reviewed by Kenneth Rohde Christiansen.
-
- * qmake/mkspecs/features/features.prf:
- Activate GraphicsSurface on windows in case opengles2 (ANGLE)
- is available in QT_CONFIG.
-
-2012-10-24 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][WK2] fast/repaint/delete-into-nested-block.html and fast/repaint/4776765.html are flaky
- https://bugs.webkit.org/show_bug.cgi?id=100010
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Force the main view to receive focus even if Evas already
- considers it to be focused.
-
- It might happen that a different frame is focused by a page and
- the focus change notification does not reach Evas. When another
- test is run, the main frame is then not considered to be focused
- by WebCore, and things such as focus rings are not drawn as
- expected.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::focus):
-
-2012-10-24 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r132333.
- http://trac.webkit.org/changeset/132333
- https://bugs.webkit.org/show_bug.cgi?id=100234
-
- Crashes many tests on the EFL-WK2 bot. (Requested by rakuco on
- #webkit).
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformInitializeContext):
-
-2012-10-24 Dongwoo Joshua Im <dw.im@samsung.com>
-
- [GTK] Fix build break - undefined reference to 'gtk_init'
- https://bugs.webkit.org/show_bug.cgi?id=100221
-
- Unreviewed build fix.
-
- GTK_LIBS is needed for TestWTF.
-
- * TestWebKitAPI/GNUmakefile.am:
-
-2012-10-24 Grzegorz Czajkowski <g.czajkowski@samsung.com>
-
- WebKitTestRunner needs to turn on 'setContinuousSpellCheckingEnabled'
- https://bugs.webkit.org/show_bug.cgi?id=93611
-
- Reviewed by Hajime Morita.
-
- WebKitTestRunner enables spelling feature to pass the layout tests from editing/spelling.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- Enables spelling by WebKit2 C API.
-
- * WebKitTestRunner/efl/TestControllerEfl.cpp:
- (WTR::TestController::platformInitializeContext):
- Attaches WKTextChecker's client and sets default language for WebKit2-EFL port.
-
-2012-10-24 Mario Sanchez Prada <mario@webkit.org>
-
- [WK2] [GTK] TestWebKitAccessibility is not being run
- https://bugs.webkit.org/show_bug.cgi?id=100102
-
- Reviewed by Carlos Garcia Campos.
-
- Removed wrong early return in _start_accessibility_daemons().
-
- * Scripts/run-gtk-tests:
- (TestRunner._lookup_atspi2_binary): Removed wrong line.
-
-2012-10-24 Noel Gordon <noel.gordon@gmail.com>
-
- [chromium] Plumb DRT WebkitShouldRespectImageOrientation through to page settings
- https://bugs.webkit.org/show_bug.cgi?id=100197
-
- Reviewed by Kent Tamura.
-
- fast/images/exif-orientation.html and fast/images/exif-orientation-css.html require a DRT
- WebkitShouldRespectImageOrientation preference. Add the chromium implementation for this
- preference and plumb it through to page settings.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::overridePreference): Update the tests WebkitShouldRespectImageOrientation
- setting in DRT prefs.
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset): Disable the preference before and after each test.
- (WebPreferences::applyTo): Apply the preference to the page settings of each test.
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
-
-2012-10-23 Carlos Garcia Campos <cgarcia@igalia.com>
-
- [GTK] TestWebKitAPI/TestWebKit2 and TestWebKitAPI/TestGtk link to the installed libs
- https://bugs.webkit.org/show_bug.cgi?id=100134
-
- Reviewed by Martin Robinson.
-
- Do not share the LDADD variable among TestWTF, TestWebKit2 and
- TestGtk.
-
- * TestWebKitAPI/GNUmakefile.am:
-
-2012-10-23 Kihong Kwon <kihong.kwon@samsung.com>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-23 Dan Bernstein <mitz@apple.com>
-
- Tools changes for <rdar://problem/2966974> [mac] Kerning and ligatures are not enabled by default
- https://bugs.webkit.org/show_bug.cgi?id=100188
-
- Reviewed by Sam Weinig.
-
- Disable kerning and ligatures by default when running the tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (resetDefaultsToConsistentValues): Set a value of NO for the
- WebKitKerningAndLigaturesEnabledByDefault user default.
- * WebKitTestRunner/mac/main.mm:
- (main): Register a value of NO for the WebKitKerningAndLigaturesEnabledByDefault user
- default.
-
-2012-10-23 Simon Fraser <simon.fraser@apple.com>
-
- Allow tests to run with a tile cache, and optionally dump the tile cache via layerTreeAsText()
- https://bugs.webkit.org/show_bug.cgi?id=100159
-
- Reviewed by Tim Horton.
-
- Make WebKitTestRunner use a WKView with a tile cache for tests run in a directory
- whose path includes "tiled-drawing". It does this by passing around a WKDictionary
- of options, and if the current PlatformWebView doesn't support those options, it will
- create a new one.
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView): Add a WKDictionaryRef options dictionary argument.
- (WTR::PlatformWebView::viewSupportsOptions): Returns true if the view
- supports the options in the WKDictionaryRef.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Call createWebViewWithOptions() with
- no options in the normal case.
- (WTR::TestController::createWebViewWithOptions): Moved code into this fuction
- so we can call it in two places.
- (WTR::TestController::ensureViewSupportsOptions): If the current view
- doesn't support the given options, throw it away and makea new one that does.
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldUseTiledDrawing): Return true if the directory contains "tiled-drawing".
- (WTR::updateTiledDrawingForCurrentTest): Tell the TestController to check whether
- the view supports the given options. No-op for non-Mac platforms.
- (WTR::TestInvocation::invoke): Call updateTiledDrawingForCurrentTest().
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[TestRunnerWKView initWithFrame:contextRef:pageGroupRef:useTiledDrawing:]):
- (-[TestRunnerWKView _shouldUseTiledDrawingArea]): Subclass the WKView so we can return
- a custom value from this method.
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::viewSupportsOptions):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
-
-2012-10-23 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r132276.
- http://trac.webkit.org/changeset/132276
- https://bugs.webkit.org/show_bug.cgi?id=100189
-
- It broke the Qt-WK2 build intentionally (Requested by
- Ossy_night on #webkit).
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR):
- (WTR::TestInvocation::invoke):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView):
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView):
-
-2012-10-23 Martin Robinson <mrobinson@igalia.com>
-
- [GTK][Soup] Implement the default authentication dialog via WebCoreSupport
- https://bugs.webkit.org/show_bug.cgi?id=99351
-
- Reviewed by Carlos Garcia Campos.
-
- We no longer need to turn off the soup authentication dialog soup feature,
- because it's not installed.
-
- * DumpRenderTree/gtk/DumpRenderTree.cpp:
- (setDefaultsToConsistentStateValuesForTesting): Don't turn off the feature any longer.
-
-2012-10-23 Simon Fraser <simon.fraser@apple.com>
-
- Allow tests to run with a tile cache, and optionally dump the tile cache via layerTreeAsText()
- https://bugs.webkit.org/show_bug.cgi?id=100159
-
- Reviewed by Tim Horton.
-
- Make WebKitTestRunner use a WKView with a tile cache for tests run in a directory
- whose path includes "tiled-drawing". It does this by passing around a WKDictionary
- of options, and if the current PlatformWebView doesn't support those options, it will
- create a new one.
-
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView): Add a WKDictionaryRef options dictionary argument.
- (WTR::PlatformWebView::viewSupportsOptions): Returns true if the view
- supports the options in the WKDictionaryRef.
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize): Call createWebViewWithOptions() with
- no options in the normal case.
- (WTR::TestController::createWebViewWithOptions): Moved code into this fuction
- so we can call it in two places.
- (WTR::TestController::ensureViewSupportsOptions): If the current view
- doesn't support the given options, throw it away and makea new one that does.
- * WebKitTestRunner/TestController.h:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::shouldUseTiledDrawing): Return true if the directory contains "tiled-drawing".
- (WTR::updateTiledDrawingForCurrentTest): Tell the TestController to check whether
- the view supports the given options. No-op for non-Mac platforms.
- (WTR::TestInvocation::invoke): Call updateTiledDrawingForCurrentTest().
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/gtk/PlatformWebViewGtk.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/mac/PlatformWebViewMac.mm:
- (-[TestRunnerWKView initWithFrame:contextRef:pageGroupRef:useTiledDrawing:]):
- (-[TestRunnerWKView _shouldUseTiledDrawingArea]): Subclass the WKView so we can return
- a custom value from this method.
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::viewSupportsOptions):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
- * WebKitTestRunner/win/PlatformWebViewWin.cpp:
- (WTR::PlatformWebView::PlatformWebView): New constructor parameter.
-
-2012-10-23 David Barton <dbarton@mathscribe.com>
-
- [MathML] Symbol font uses greek letters for roman ones on linux and Windows
- https://bugs.webkit.org/show_bug.cgi?id=99921
-
- Reviewed by Eric Seidel.
-
- Enable the STIXSizeOneSym font for testing.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (allowedFontFamilySet):
- * WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm:
- (WTR::allowedFontFamilySet):
-
-2012-10-23 Tony Chang <tony@chromium.org>
-
- [chromium] Chromium window build system does not rebuild correctly when enabling/disabling a feature
- https://bugs.webkit.org/show_bug.cgi?id=38926
-
- Reviewed by Eric Seidel.
-
- Remove hack for clobbering build when features.gypi changes. Now that
- Chromium requires VS2010 or newer, this bug has gone away.
-
- * Scripts/update-webkit:
-
-2012-10-23 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] remove the const qualifier from WebTestDelegate::printMessage
- https://bugs.webkit.org/show_bug.cgi?id=100082
-
- Reviewed by Adam Barth.
-
- There's no reason the method should be const, and indeed for
- content_shell we want to send an IPC which is a non-const operation.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::printMessage):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printMessage):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-23 Kenneth Rohde Christiansen <kenneth@webkit.org>
-
- Add support for resolution media query
- https://bugs.webkit.org/show_bug.cgi?id=99077
-
- Reviewed by Antti Koivisto.
-
- Add support for the RESOLUTION_MEDIA_QUERY feature flag.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-10-23 Bruno de Oliveira Abinader <bruno.abinader@basyskom.com>
-
- Adding myself to commiters.py
- https://bugs.webkit.org/show_bug.cgi?id=100122
-
- Unreviewed update to commiters.py.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-23 Timothy Hatcher <timothy@apple.com>
-
- Unreviewed watchlist change to monitor Inspector IDLs.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-23 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] [WTR] WebKitTestRunner needs testRunner.queueForwardNavigation
- https://bugs.webkit.org/show_bug.cgi?id=99700
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implemented testRunner.queueForwardNavigation, made little refactoring in Work Queue
- to obviate code duplication.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::queueBackNavigation):
- (WTR):
- (WTR::InjectedBundle::queueForwardNavigation):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::queueForwardNavigation):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WorkQueueManager.cpp:
- (NavigationItem):
- (WTR::NavigationItem::NavigationItem):
- (WTR::NavigationItem::invoke):
- (WTR):
- (WTR::WorkQueueManager::queueBackNavigation):
- (WTR::WorkQueueManager::queueForwardNavigation):
- * WebKitTestRunner/WorkQueueManager.h:
- (WorkQueueManager):
-
-2012-10-23 Simon Hausmann <simon.hausmann@digia.com>
-
- Unreviewed trivial Qt build fix: Fix build without USE_3D_GRAPHICS
-
- Disable USE_GRAPHICS_SURFACE if we don't have USE_3D_GRAPHICS because
- GraphicsSurface.h needs GraphicsContext3D.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-10-23 Simon Pena <spena@igalia.com>
-
- Unreviewed. Adding myself as committer.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-22 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Move the call to RegisterIsolatedFileSystem to the WebTestDelegate interface
- https://bugs.webkit.org/show_bug.cgi?id=100048
-
- Reviewed by Adam Barth.
-
- The call needs to be done outside of the sandbox.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::beginDragWithFiles):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::registerIsolatedFileSystem):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::registerIsolatedFileSystem):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-22 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: remove unneeded debug messages from find_files()
- https://bugs.webkit.org/show_bug.cgi?id=100041
-
- Reviewed by Adam Barth.
-
- This routine gets called all the time when loading the virtual
- suites, and the debug messages were spamming me.
-
- * Scripts/webkitpy/common/find_files.py:
- (_normalized_find):
-
-2012-10-22 Tony Chang <tony@chromium.org>
-
- [chromium] Add Mac 10.7 Debug bot since it's on the waterfall
- https://bugs.webkit.org/show_bug.cgi?id=100028
-
- Reviewed by Eric Seidel.
-
- garden-o-matic can't baseline without this entry.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
-
-2012-10-22 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] introduce WebTask to the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=99964
-
- Reviewed by Adam Barth.
-
- I'm also removing the dependency on webkit_support, and instead go
- through the WebTestDelegate interface.
-
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTDevToolsAgent.cpp:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- (DRTDevToolsAgent::taskList):
- * DumpRenderTree/chromium/DRTDevToolsClient.cpp:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- (DRTDevToolsClient::taskList):
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (InvokeCallbackTask::InvokeCallbackTask):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner::taskList):
- (DRTTestRunner::WorkQueue::taskList):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCSessionDescriptionRequestSuccededTask::RTCSessionDescriptionRequestSuccededTask):
- (RTCSessionDescriptionRequestFailedTask::RTCSessionDescriptionRequestFailedTask):
- (RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
- (RTCVoidRequestTask::RTCVoidRequestTask):
- (StringDataTask::StringDataTask):
- (CharPtrDataTask::CharPtrDataTask):
- (DataChannelReadyStateTask::DataChannelReadyStateTask):
- (RTCPeerConnectionReadyStateTask::RTCPeerConnectionReadyStateTask):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::taskList):
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::SpeechTask::SpeechTask):
- * DumpRenderTree/chromium/MockWebSpeechInputController.h:
- (MockWebSpeechInputController::taskList):
- (MockWebSpeechInputController):
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.cpp:
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- (MockWebSpeechRecognizer::taskList):
- (MockWebSpeechRecognizer):
- (MockWebSpeechRecognizer::StepTask::StepTask):
- * DumpRenderTree/chromium/Task.cpp: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/Task.cpp.
- (WebTestRunner):
- (WebTestRunner::invokeTask):
- (TaskWrapper):
- (WebTestRunner::TaskWrapper::TaskWrapper):
- (WebTestRunner::TaskWrapper::~TaskWrapper):
- (WebTestRunner::TaskWrapper::Run):
- (postTask):
- (postDelayedTask):
- * DumpRenderTree/chromium/Task.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestRunner.h.
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/public/WebTask.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/Task.h.
- (WebTestRunner):
- (WebTask):
- (WebTaskList):
- (WebMethodTask):
- (WebTestRunner::WebMethodTask::WebMethodTask):
- (WebTestRunner::WebMethodTask::~WebMethodTask):
- (WebTestRunner::WebMethodTask::run):
- (WebTestRunner::WebMethodTask::cancel):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestRunner):
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::scheduleAsynchronousClick):
- (WebTestRunner::KeyDownTask::KeyDownTask):
- (WebTestRunner::EventSender::scheduleAsynchronousKeyDown):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebTestRunner::EventSender::taskList):
- (EventSender):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (WebTestRunner):
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h:
- * DumpRenderTree/chromium/TestRunner/src/WebTask.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/src/Task.cpp.
- (WebTestRunner):
- (WebTestRunner::WebTask::WebTask):
- (WebTestRunner::WebTask::~WebTask):
- (WebTestRunner::WebTaskList::WebTaskList):
- (WebTestRunner::WebTaskList::~WebTaskList):
- (WebTestRunner::WebTaskList::registerTask):
- (WebTestRunner::WebTaskList::unregisterTask):
- (WebTestRunner::WebTaskList::revokeAll):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::postTask):
- (WebTestRunner):
- (WebTestRunner::WebTestInterfaces::Internal::postDelayedTask):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/WebUserMediaClientMock.cpp:
- (UserMediaRequestTask::UserMediaRequestTask):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- (WebUserMediaClientMock::taskList):
- (WebUserMediaClientMock):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::postTask):
- (WebViewHost::postDelayedTask):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
- (WebViewHost::taskList):
- (WebViewHost::HostMethodTask::HostMethodTask):
-
-2012-10-22 Ojan Vafai <ojan@chromium.org>
-
- Update flakiness dashboard to match the state of the builders.
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumDepsGTestRunner):
- Broaden the filter since Chromium naming scheme is not consistent.
- (loadBuildersList):
- The main Chromium master now only runs builders, no tests.
- * TestResultServer/static-dashboards/dashboard_base.js:
- Remove test suites that no longer run on any of these masters.
-
-2012-10-22 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] add a method for printing message to the WebTestDelegate
- https://bugs.webkit.org/show_bug.cgi?id=99960
-
- Reviewed by Adam Barth.
-
- When using the TestRunner library from the content_shell, we can't print
- message directly but need to send them to the browser process.
-
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h:
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp:
- (WebTestRunner::AccessibilityController::fallbackCallback):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h:
- (WebTestRunner::AccessibilityController::setDelegate):
- (AccessibilityController):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::EventSender::dumpFilenameBeingDragged):
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp:
- (GamepadController::connect):
- (GamepadController::disconnect):
- (GamepadController::setId):
- (GamepadController::setButtonCount):
- (GamepadController::setButtonData):
- (GamepadController::setAxisCount):
- (GamepadController::setAxisData):
- (GamepadController::fallbackCallback):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::setDelegate):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp:
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::printMessage):
- (WebTestRunner):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::didBeginEditing):
- (WebViewHost::lastContextMenuData):
- (WebViewHost::clearContextMenuData):
- (WebViewHost::setEditCommand):
- (WebViewHost::clearEditCommand):
- (WebViewHost::fillSpellingSuggestionList):
- (WebViewHost::setGamepadData):
- (WebViewHost::printMessage):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-22 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- I now only watch Selectors instead of all of CSS.
-
- Unreviewed update of watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-22 Yury Semikhatsky <yurys@chromium.org>
-
- Make sure base and derived class pointers are different in MemoryInstrumentationTest.instrumentedWithMultipleAncestors
- https://bugs.webkit.org/show_bug.cgi?id=99987
-
- Reviewed by Alexander Pavlov.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp: changed first parent
- class in the list so that it has virtual table as well as the second one. This
- way we may be sure that pointer to the second ancestor class will differ from
- the pointer to the derived class.
-
-2012-10-22 Yury Semikhatsky <yurys@chromium.org>
-
- Unreviewed. Fix compilation after r132059.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-22 Dominik Röttsches <dominik.rottsches@intel.com>
-
- Adding Cairo and Harfbuzz watchlist entries
-
- Unreviewed watchlist update.
-
- Added myself to these new ones and SVG.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-22 Yury Semikhatsky <yurys@chromium.org>
-
- Web Inspector: do not double count memory of objects with multiple ancestors
- https://bugs.webkit.org/show_bug.cgi?id=99958
-
- Reviewed by Alexander Pavlov.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp: Test that there
- is no double counting in case of multiple inheritance.
-
-2012-10-22 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] Basic gesture event handling
- https://bugs.webkit.org/show_bug.cgi?id=66173
-
- Reviewed by Simon Hausmann.
-
- Add support for eventSender.gestureLongPress.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::gestureLongPress):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
-
-2012-10-22 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [WTR] Properly initialize TestRunner::m_dumpSelectionRect.
- https://bugs.webkit.org/show_bug.cgi?id=99970
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Follow-up to r131476: actually initialize m_dumpSelectionRect to
- some value to avoid some flakyness in the tests.
-
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::TestRunner):
-
-2012-10-22 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Don't build any of the tools in production_build
-
- Reviewed by Simon Hausmann.
-
- * Tools.pro:
- * qmake/mkspecs/features/configure.prf:
-
-2012-10-22 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Move OBJECTS_DIR and friends to default_pre.prf
-
- The introduction of load(qt_build_config) in .qmake.conf meant
- that we started loading qtmodule.pri, which in turn set both
- MOC_DIR, RCC_DIR, and OBJECTS_DIR.
-
- We were setting OBJECTS_DIR in default_post under a isEmpty() guard
- so that project files could override the objects dir. Instead of
- using the isEmpty() check we move it to defaul_pre, which will
- override the qtmodule.pri settings, but still allow project files
- to override it.
-
- Reviewed by Ossy.
-
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-10-22 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs testRunner.queueLoadingScript and testRunner.queueNonLoadingScript
- https://bugs.webkit.org/show_bug.cgi?id=42675
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added implementation of testRunner.queueLoadingScript and testRunner.queueNonLoadingScript.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::queueLoadingScript):
- (WTR):
- (WTR::InjectedBundle::queueNonLoadingScript):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::queueLoadingScript):
- (WTR):
- (WTR::TestRunner::queueNonLoadingScript):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WorkQueueManager.cpp:
- (WTR):
- (WTR::runJavaScriptFunction):
- (ScriptItem):
- (WTR::ScriptItem::ScriptItem):
- (WTR::ScriptItem::invoke):
- (WTR::WorkQueueManager::queueBackNavigation):
- (WTR::WorkQueueManager::queueLoadingScript):
- (WTR::WorkQueueManager::queueNonLoadingScript):
- * WebKitTestRunner/WorkQueueManager.h:
- (WorkQueueManager):
-
-2012-10-22 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed, a follow-up to r132034 where I forgot to address
- Ojan's review comment about the race condition in handleLocationChange.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (handleLocationChange):
-
-2012-10-22 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultServer] Move the resource loading into a dedicated class
- https://bugs.webkit.org/show_bug.cgi?id=99246
-
- Reviewed by Ojan Vafai.
-
- A new 'loader' namespace is created, containing the request method (previously located in dashboard_base.js)
- and the new Loader object, which handles the loading of all the necessary data the dashboard might require.
-
- * TestResultServer/static-dashboards/aggregate_results.html: Include the loader.js source file.
- * TestResultServer/static-dashboards/builders.js:
- (requestBuilderList): Use the request method located in the loader namespace instead of the removed doXHR method.
- (onBuilderListLoad): Now parses the response text of the passed-in XHR. When all the builder lists are loaded the
- resource loader object is notified appropriately.
- (onErrorLoadingBuilderList): The partial function that calls this function also adds an XHR parameter.
- * TestResultServer/static-dashboards/dashboard_base.js: Much of the resource loading-related code is moved to loader.js.
- The Loader object is now used to load all the required resources.
- (parseParameters): Don't push the 'builder' parameter into the current state if the unit tests are being run.
- (resourceLoadingComplete): This method gets called when all the resources are loaded and the dashboard should
- proceed with generating the page.
- (handleLocationChange):
- * TestResultServer/static-dashboards/flakiness_dashboard.html: Include the loader.js source file.
- * TestResultServer/static-dashboards/flakiness_dashboard.js: The request method has been relocated to the loader namespace.
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js: The affected test cases are modified appropriately.
- (test):
- * TestResultServer/static-dashboards/loader.js: Added.
- (.): A new namespace is introduced, publicly exporting the request method that performs an XHR operation and a Loader object
- which oversees resource loading. The loading is done in steps, first loading the builders list, after that the results files
- the current dashboard needs, and lastly the TestExpectations files if they are required by the dashboard. When done the loader
- calls the resourceLoadingComplete method located in dashboard_base.js. This signals the dashboard all resources are available
- and it can proceed with generating the dashboard page.
- * TestResultServer/static-dashboards/loader_unittests.js: Added. Contains unit tests for the Loader object, covering the
- incremental loading and the loading of results files and TestExpectations files. The builders list loading is currently not
- tested as the unit tests page overrides related methods that possibly affect other tests' behavior.
- * TestResultServer/static-dashboards/run-unittests.html: Now includes the loader.js and loader_unittests.js source file.
- Refactors the code a bit due to changes in how onBuilderListLoad behaves.
- * TestResultServer/static-dashboards/timeline_explorer.html: Now includes the loader.js source file.
- * TestResultServer/static-dashboards/treemap.html: Ditto. Also refactors the code to take into account
- that all the test files are now loaded before generating the dashboard page.
-
-2012-10-21 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] introduce a public API for the TestRunner library
- https://bugs.webkit.org/show_bug.cgi?id=99904
-
- Reviewed by Adam Barth.
-
- The API decouples the public API from the underlying implementation, so
- embedders can depend on it. I'm also changing DRT to consume the
- TestRunner API through the public API, except for DRTTestRunner and all
- places that require Task.h. These two will be migrated in later changes.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTDevToolsAgent.h:
- * DumpRenderTree/chromium/DRTDevToolsClient.h:
- * DumpRenderTree/chromium/MockSpellCheck.cpp:
- (MockSpellCheck::fillSuggestionList):
- * DumpRenderTree/chromium/MockSpellCheck.h:
- (MockSpellCheck):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- * DumpRenderTree/chromium/MockWebSpeechInputController.h:
- * DumpRenderTree/chromium/MockWebSpeechRecognizer.h:
- * DumpRenderTree/chromium/TestRunner/public/WebAccessibilityController.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebKit):
- (WebTestRunner):
- (WebAccessibilityController):
- * DumpRenderTree/chromium/TestRunner/public/WebEventSender.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebKit):
- (WebTestRunner):
- (WebEventSender):
- * DumpRenderTree/chromium/TestRunner/public/WebTestDelegate.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebKit):
- (WebTestRunner):
- (WebTestDelegate):
- * DumpRenderTree/chromium/TestRunner/public/WebTestInterfaces.h: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h.
- (WebKit):
- (WebTestRunner):
- (WebTestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp:
- (WebTestRunner):
- (WebTestRunner::makeMenuItemStringsFor):
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h:
- (WebTestRunner):
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h:
- (TestDelegate):
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h:
- (TestInterfaces):
- * DumpRenderTree/chromium/TestRunner/src/WebAccessibilityController.cpp: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebTestRunner):
- (WebTestRunner::WebAccessibilityController::WebAccessibilityController):
- (WebTestRunner::WebAccessibilityController::setFocusedElement):
- (WebTestRunner::WebAccessibilityController::notificationReceived):
- (WebTestRunner::WebAccessibilityController::shouldLogAccessibilityEvents):
- * DumpRenderTree/chromium/TestRunner/src/WebEventSender.cpp: Copied from Tools/DumpRenderTree/chromium/TestRunner/src/TestDelegate.h.
- (WebTestRunner):
- (WebTestRunner::WebEventSender::WebEventSender):
- (WebTestRunner::WebEventSender::doDragDrop):
- * DumpRenderTree/chromium/TestRunner/src/WebTestInterfaces.cpp: Added.
- (WebTestRunner):
- (WebTestInterfaces::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::testInterfaces):
- (WebTestRunner::WebTestInterfaces::Internal::accessibilityController):
- (WebTestRunner::WebTestInterfaces::Internal::eventSender):
- (WebTestRunner::WebTestInterfaces::Internal::Internal):
- (WebTestRunner::WebTestInterfaces::Internal::~Internal):
- (WebTestRunner::WebTestInterfaces::Internal::setDelegate):
- (WebTestRunner::WebTestInterfaces::Internal::clearContextMenuData):
- (WebTestRunner::WebTestInterfaces::Internal::clearEditCommand):
- (WebTestRunner::WebTestInterfaces::Internal::fillSpellingSuggestionList):
- (WebTestRunner::WebTestInterfaces::Internal::setEditCommand):
- (WebTestRunner::WebTestInterfaces::Internal::lastContextMenuData):
- (WebTestRunner::WebTestInterfaces::Internal::setGamepadData):
- (WebTestRunner::WebTestInterfaces::WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::~WebTestInterfaces):
- (WebTestRunner::WebTestInterfaces::setWebView):
- (WebTestRunner::WebTestInterfaces::setDelegate):
- (WebTestRunner::WebTestInterfaces::bindTo):
- (WebTestRunner::WebTestInterfaces::resetAll):
- (WebTestRunner::WebTestInterfaces::accessibilityController):
- (WebTestRunner::WebTestInterfaces::eventSender):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::initialize):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::eventSender):
- (TestShell::accessibilityController):
- (TestShell):
- * DumpRenderTree/chromium/WebUserMediaClientMock.h:
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::finishLastTextCheck):
- (WebViewHost::fillSpellingSuggestionList):
- * DumpRenderTree/chromium/WebViewHost.h:
- (WebViewHost):
-
-2012-10-21 Viatcheslav Ostapenko <v.ostapenko@samsung.com>
-
- Unreviewed. Updating my emails.
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-20 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][DRT] Implement tracking and painting repaint rectangles.
- https://bugs.webkit.org/show_bug.cgi?id=99838
-
- Reviewed by Gyuyoung Kim.
-
- Implement displayWebView() and start tracking/painting the repaint
- rectangles for the repaint tests that rely on it.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (displayWebView):
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
- * DumpRenderTree/efl/PixelDumpSupportEfl.cpp:
- (createBitmapContextFromWebView):
-
-2012-10-19 Dan Bernstein <mitz@apple.com>
-
- Add bundle API for hit-testing
- https://bugs.webkit.org/show_bug.cgi?id=99907
-
- Reviewed by Sam Weinig.
-
- Added an API test for WKBundleFrameCreateHitTest().
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj: Added InjectedBundleFrameHitTest.cpp,
- InjectedBundleFrameHitTest_bundle.cpp, and link-with-title.html.
-
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp: Added.
- (TestWebKitAPI::didReceiveMessageFromInjectedBundle): Checks that the message contains the
- title of the link in link-with-title.html.
- (TestWebKitAPI::setInjectedBundleClient):
- (TestWebKitAPI::TEST):
- * TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp: Added.
- (TestWebKitAPI::InjectedBundleFrameHitTestTest::InjectedBundleFrameHitTestTest):
- (TestWebKitAPI::didFinishLoadForFrameCallback): Hit tests at (50, 50) and sends the link title
- from the result back to the UI process.
- (TestWebKitAPI::InjectedBundleFrameHitTestTest::didCreatePage):
- (TestWebKitAPI::InjectedBundleFrameHitTestTest::frameLoadFinished):
- * TestWebKitAPI/Tests/WebKit2/link-with-title.html: Added.
-
-2012-10-19 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131944.
- http://trac.webkit.org/changeset/131944
- https://bugs.webkit.org/show_bug.cgi?id=99891
-
- On second thoughts, not such a great idea (Requested by jamesr
- on #webkit).
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createNewWindow):
-
-2012-10-19 Alexandre Elias <aelias@chromium.org>
-
- [chromium] API to pass impl thread via WebLayerTreeView
- https://bugs.webkit.org/show_bug.cgi?id=99863
-
- Reviewed by James Robinson.
-
- This adds an API to pass the compositor impl thread via WebView and
- WebLayerTreeView. This is currently a no-op change, but in the future
- this codepath will supercede WebCompositor. The goal is to avoid statics
- in compositor initialization.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::createNewWindow):
-
-2012-10-19 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [Cairo][WTR] Implement the painting of repaint rectangles.
- https://bugs.webkit.org/show_bug.cgi?id=99839
-
- Reviewed by Martin Robinson.
-
- Implement the required code to paint the gray overlay with
- transparent regions for the repaint rectangles, as other ports
- already do and as is already done in most WK1 ports.
-
- * WebKitTestRunner/cairo/TestInvocationCairo.cpp:
- (WTR::paintRepaintRectOverlay):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-09-08 Alpha Lam <hclam@chromium.org>
-
- [chromium] Implement deferred image decoding
- https://bugs.webkit.org/show_bug.cgi?id=94240
-
- Reviewed by Stephen White.
-
- Add --enable-deferred-image-decoding to DRT.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setDeferredImageDecodingEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-10-19 Dongwoo Joshua Im <dw.im@samsung.com>
-
- Rename ENABLE_CSS3_TEXT_DECORATION to ENABLE_CSS3_TEXT
- https://bugs.webkit.org/show_bug.cgi?id=99804
-
- Reviewed by Julien Chaffraix.
-
- CSS3 text related properties will be implemented under this flag,
- including text decoration, text-align-last, and text-justify.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
-
-2012-10-19 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] renderToOffscreenBuffer should not be set if the real render loop is active
- https://bugs.webkit.org/show_bug.cgi?id=99831
-
- Reviewed by Jocelyn Turcotte.
-
- Do not set renderToOffscreenBuffer if we have called setRenderWithoutShowing.
- We do not need it in this case and these things are actually conflicting.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::PlatformWebView):
- (WTR::PlatformWebView::windowShapshotEnabled): Added a comment
- describing why this workaround is needed.
-
-2012-10-19 Zan Dobersek <zandobersek@gmail.com>
-
- [WK2][GTK] Fullscreen tests timing out in bots
- https://bugs.webkit.org/show_bug.cgi?id=93973
-
- Reviewed by Philippe Normand.
-
- Add webcore_cppflags to the CPPFLAGS for WebKitTestRunner and the
- injected bundle library. webcore_cppflags contains all the feature
- defines' macros so the ENABE(*) compilation guards should now work
- properly (i.e. enable the code behind them when the feature is enabled).
-
- * WebKitTestRunner/GNUmakefile.am:
-
-2012-10-19 Simon Hausmann <simon.hausmann@digia.com>
-
- Unreviewed, rolling out r131734.
- http://trac.webkit.org/changeset/131734
-
- Broke ANGLE build where we end up with @echo foo && @echo -n
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-10-19 Carlos Garcia Campos <cgarcia@igalia.com>
-
- REGRESSION (r130640 - r130644): TestCookieManager API test is failing
- https://bugs.webkit.org/show_bug.cgi?id=98738
-
- Reviewed by Philippe Normand.
-
- * Scripts/run-gtk-tests:
- (TestRunner): Unskip /webkit2/WebKitCookieManager/accept-policy.
-
-2012-10-19 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Update the RuntimeEnabledFeatures flags
- https://bugs.webkit.org/show_bug.cgi?id=99714
-
- Reviewed by Adam Barth.
-
- Enabling the DeprecatedPeerConnection so that all tests still run.
-
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
-
-2012-10-18 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: labelForElement is slow when there are a lot of DOM elements
- https://bugs.webkit.org/show_bug.cgi?id=97825
-
- Reviewed by Ryosuke Niwa.
-
- Implement titleUIElement in the chromium port of DRT, and
- fix getAccessibleElementById so that it ensures the backing store
- is up-to-date.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:
- (AccessibilityController::getAccessibleElementById):
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::titleUIElementCallback):
-
-2012-10-17 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: NMI provide data for mixing with tcmalloc heap dumps.
- https://bugs.webkit.org/show_bug.cgi?id=99457
-
- Reviewed by Yury Semikhatsky.
-
- countObjectSize now requires pointer to object as the first argument.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-18 Dirk Pranke <dpranke@chromium.org>
-
- make move_overwritten_baselines_to work again while rebaselining
- https://bugs.webkit.org/show_bug.cgi?id=99793
-
- Reviewed by Ojan Vafai.
-
- We used to have code that would help when rebaselining results
- for new ports (e.g., when moving from Lion to Mountain Lion) but
- it appears that code bitrotted during all the refactoring since
- the last time we needed this. This patch makes things work
- again, adds more tests that will hopefully make clearer what
- is supposed to work, and renames various parameters to be
- consistent.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- (move_overwritten_baselines_to):
- (builder_path_for_port_name):
- * Scripts/webkitpy/tool/commands/rebaseline.py:
- (RebaselineTest.__init__):
- (RebaselineTest._copy_existing_baseline):
- (RebaselineTest._rebaseline_test):
- (RebaselineTest.execute):
- (AbstractParallelRebaselineCommand._rebaseline_commands):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (test_rebaseline_json_with_move_overwritten_baselines_to):
- (test_rebaseline_test_internal_with_move_overwritten_baselines_to):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (GardeningServerTest.test_rebaselineall):
-
-2012-10-18 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Skip really old flaky failing jscore date test.
- There's a bug tracking it here: https://bugs.webkit.org/show_bug.cgi?id=53712.
-
- * Scripts/run-javascriptcore-tests:
-
-2012-10-18 Byungwoo Lee <bw80.lee@samsung.com>
-
- Fix build warning.
- https://bugs.webkit.org/show_bug.cgi?id=99788
-
- Reviewed by Kentaro Hara.
-
- Use return value of mktemp() for removing -Wunused-result.
-
- * MiniBrowser/efl/main.c:
- (on_download_request):
-
-2012-10-18 Benjamin Poulain <bpoulain@apple.com>
-
- [WK2] WebKit2 does not build without PLUGIN_PROCESS on Mac
- https://bugs.webkit.org/show_bug.cgi?id=99771
-
- Reviewed by Anders Carlsson.
-
- * DumpRenderTree/mac/MockWebNotificationProvider.mm: The file was not including config.h,
- effectively breaking feature flags.
-
-2012-10-18 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [EFL][DRT] Make textareas resizable by default.
- https://bugs.webkit.org/show_bug.cgi?id=99719
-
- Reviewed by Gyuyoung Kim.
-
- Enable painting the textarea resizer at the corner by default,
- just as it already is the case for WK2. This eases the work needed
- to get the pixel tests in shape and run by the bots, as both the
- WK1 and WK2 ports will have more similar results.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::resetDefaultsToConsistentValues):
-
-2012-10-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Add a webkit_test_support target that WebTestingSupport
- https://bugs.webkit.org/show_bug.cgi?id=99772
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-10-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] move TestRunner files into a src/ sub directory
- https://bugs.webkit.org/show_bug.cgi?id=99776
-
- Reviewed by Adam Barth.
-
- This is in preparation of adding a public API to the TestRunner library.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * DumpRenderTree/DumpRenderTree.gypi:
- * DumpRenderTree/chromium/DRTTestRunner.h:
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityControllerChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.h.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp.
- * DumpRenderTree/chromium/TestRunner/src/AccessibilityUIElementChromium.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.h.
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp.
- * DumpRenderTree/chromium/TestRunner/src/CppBoundClass.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/CppBoundClass.h.
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/CppVariant.cpp.
- * DumpRenderTree/chromium/TestRunner/src/CppVariant.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/CppVariant.h.
- * DumpRenderTree/chromium/TestRunner/src/EventSender.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/EventSender.cpp.
- * DumpRenderTree/chromium/TestRunner/src/EventSender.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/EventSender.h.
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/GamepadController.cpp.
- * DumpRenderTree/chromium/TestRunner/src/GamepadController.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/GamepadController.h.
- * DumpRenderTree/chromium/TestRunner/src/Task.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/Task.cpp.
- * DumpRenderTree/chromium/TestRunner/src/Task.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/Task.h.
- * DumpRenderTree/chromium/TestRunner/src/TestDelegate.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TestDelegate.h.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp.
- * DumpRenderTree/chromium/TestRunner/src/TestInterfaces.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TestInterfaces.h.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TestRunner.cpp.
- * DumpRenderTree/chromium/TestRunner/src/TestRunner.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TestRunner.h.
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.cpp: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TextInputController.cpp.
- * DumpRenderTree/chromium/TestRunner/src/TextInputController.h: Renamed from Tools/DumpRenderTree/chromium/TestRunner/TextInputController.h.
-
-2012-10-18 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] garden-o-matic should ignore the 10.8 Tests bot
- https://bugs.webkit.org/show_bug.cgi?id=99765
-
- Reviewed by Adam Barth.
-
- It's really more of an FYI bot at this point and can be safely
- ignored like the Content Shell bots.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-10-18 Jochen Eisinger <jochen@chromium.org>
-
- [chromium] Simplify TestInterfaces, as this class won't be directly exposed in the TestRunner library's interface
- https://bugs.webkit.org/show_bug.cgi?id=99766
-
- Reviewed by Adam Barth.
-
- This reverts http://trac.webkit.org/changeset/123240
-
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.cpp:
- (TestInterfaces::TestInterfaces):
- (TestInterfaces::~TestInterfaces):
- (TestInterfaces::setWebView):
- (TestInterfaces::setDelegate):
- (TestInterfaces::bindTo):
- (TestInterfaces::resetAll):
- (TestInterfaces::accessibilityController):
- (TestInterfaces::eventSender):
- * DumpRenderTree/chromium/TestRunner/TestInterfaces.h:
- (TestInterfaces):
-
-2012-10-18 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131810.
- http://trac.webkit.org/changeset/131810
- https://bugs.webkit.org/show_bug.cgi?id=99762
-
- Broke linux debug webkit_unit_tests (Requested by
- danakj|gardening on #webkit).
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-10-18 Alpha Lam <hclam@chromium.org>
-
- [chromium] Implement deferred image decoding
- https://bugs.webkit.org/show_bug.cgi?id=94240
-
- Reviewed by Stephen White.
-
- Add --enable-deferred-image-decoding to DRT.
-
- * DumpRenderTree/chromium/DumpRenderTree.cpp:
- (main):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::TestShell):
- (TestShell::resetWebSettings):
- * DumpRenderTree/chromium/TestShell.h:
- (TestShell::setDeferredImageDecodingEnabled):
- (TestShell):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (WebPreferences::reset):
- (WebPreferences::applyTo):
- * DumpRenderTree/chromium/WebPreferences.h:
- (WebPreferences):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.virtual_test_suites):
-
-2012-10-18 Dirk Pranke <dpranke@chromium.org>
-
- webkitpy: fix chromium bot configs in builders.py
- https://bugs.webkit.org/show_bug.cgi?id=99638
-
- Reviewed by Ojan Vafai.
-
- Updating after the great bot-renaming and deleting a test case
- that is no longer needed.
-
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
-
-2012-10-18 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] Add 10.8 bot into fallback path, make work with garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=99748
-
- Reviewed by Ryosuke Niwa.
-
- Subject pretty much says it all ...
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_versions):
- (ChromiumMacPortTest.test_baseline_path):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_baseline_directory):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_expectations):
-
-2012-10-18 Timothy Hatcher <timothy@apple.com>
-
- Teach prepare-ChangeLog how to handle non-function properties in JavaScript prototypes.
-
- https://bugs.webkit.org/show_bug.cgi?id=99747
-
- Reviewed by Joseph Pecoraro.
-
- * Scripts/prepare-ChangeLog:
- (get_function_line_ranges_for_javascript): Clear currentIdentifiers when comma is encountered
- so it does not tack those identifiers onto the next changed function.
-
-2012-10-18 James Simonsen <simonjam@chromium.org>
-
- Add a script for exporting http/tests/w3c/webperf/submission to W3C
- https://bugs.webkit.org/show_bug.cgi?id=99675
-
- Reviewed by Tony Gentilcore.
-
- This does the inverse of Scripts/import-w3c-performance-wg-tests.
-
- * Scripts/export-w3c-performance-wg-tests: Added.
-
-2012-10-18 Pablo Flouret <pablof@motorola.com>
-
- Implement css3-conditional's @supports rule
- https://bugs.webkit.org/show_bug.cgi?id=86146
-
- Reviewed by Antti Koivisto.
-
- * Scripts/webkitperl/FeatureList.pm:
- * qmake/mkspecs/features/features.pri:
- Add an ENABLE_CSS3_CONDITIONAL_RULES flag.
-
-2012-10-18 Xiaobo Wang <xbwang@torchmobile.com.cn>
-
- [BlackBerry] Dump DRT output to stdout if test is passed as command line argument
- https://bugs.webkit.org/show_bug.cgi?id=99150
-
- Reviewed by Rob Buis.
-
- Fixed some code style errors as well.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::runTest):
- (BlackBerry::WebKit::DumpRenderTree::runRemainingTests):
- (BlackBerry::WebKit::DumpRenderTree::runTests):
- (BlackBerry::WebKit::DumpRenderTree::isHTTPTest):
- (BlackBerry::WebKit::DumpRenderTree::dump):
- (BlackBerry::WebKit::DumpRenderTree::addMessageToConsole):
- * DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h:
- (DumpRenderTree):
-
-2012-10-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Improved support for silent builds
-
- Reviewed by Tor Arne Vestbø.
-
- Silence our extra compilers when CONFIG+=silent is set.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-10-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Reduce memory pressure at link time with less compromise on speed of linking
-
- Reviewed by Csaba Osztrogonác.
-
- Revert r131718 that made us pass -fno-keep-memory to the linker for any
- i386 builds. The downside of passing that option is that it slows down
- the process of linking and as Ossy determined, release builds do _not_
- take as much memory (2.x GB) for linking but much less (~350MB).
-
- However there is one condition where even release builds do take up too
- much memory, and that is when Qt is configured with
- -separate-debug-info, because it adds a -g next to -O2. The recent
- introduction of loading qt_build_config enabled us to read qmodule.pri,
- which adds the -g if Qt is configured with -separate-debug-info. So
- instead of playing with -fno-keep-memory (which is a last resort
- measure for debug builds) we should tweak our existing mechanism of
- dealing with the debug info:
-
- production_build.prf tries to ensure that we use -g only in static
- libraries that contain API facing code, so that we get nice backtraces
- at least into the API layer. For other static libraries such as WebCore
- we skip -g via CONFIG += no_debug_info. One of the conditions for
- enabling this tweak is CONFIG(debug, debug|release). This patch adds
- contains(QT_CONFIG,separate_debug_info) to the conditions.
-
- The patch also extend the CONFIG += no_debug_info part with the removal
- of no_separate_debug_info. There is no point in running an extra
- build step to strip out debug info into a separate file if at the same
- time we tell the compiler to not generate any debug info altogether.
-
- * qmake/mkspecs/features/production_build.prf:
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-10-18 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] OpenGL rendering is not possible on bots using Xvfb
- https://bugs.webkit.org/show_bug.cgi?id=99463
-
- Reviewed by Jocelyn Turcotte.
-
- Added a workaround to be able to disallow UI side OpenGL rendering
- if the environment is not suitable because it can be extremely slow
- with a software backend.
-
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort.setup_environ_for_server): Let the environment variable
- QT_WEBKIT_DISABLE_UIPROCESS_DUMPPIXELS reach the driver. This variable
- should be defined on bots that don't have a suitable OpenGL environment.
- * WebKitTestRunner/PlatformWebView.h:
- (PlatformWebView):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged): Don't try to create an OpenGL
- surface and set the setRenderWithoutShowing flag on the window if the
- variable is set.
- (WTR::PlatformWebView::windowSnapshotImage):
- (WTR::PlatformWebView::windowShapshotEnabled):
- (WTR):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected): Use the old method
- of evaluating pixel results if the snapshot is not supported, that is to check
- the image we got from the web process. This is necessary for the bots to be able
- to run ref tests.
-
-2012-10-15 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Implement pixel snapshot generation in WTR
- https://bugs.webkit.org/show_bug.cgi?id=95992
-
- Reviewed by Jocelyn Turcotte.
-
- Switch the Qt implementation of the PlatformWebView to use
- QQuickWindow::grabWindow to generate the pixel results. This way
- we will go through the scenegraph and test the actual rendering backend.
- We use QQuickWindowPrivate::setRenderWithoutShowing to avoid the need of
- showing the window.
-
- * WebKitTestRunner/Target.pri: Had to added a bunch
- of modules to be able to use QQuickWindowPrivate.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2012-10-15 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] Do a forced repaint before generating pixel results
- https://bugs.webkit.org/show_bug.cgi?id=98654
-
- Reviewed by Jocelyn Turcotte.
-
- Do a forced repaint before grabbing the pixel snapshot. This extra
- synchronisation is necessary with the CoordinatedGraphics rendering
- backend because it has a fully asynchronous nature. This patch make
- us using the window snapshot for pixel results which is necessary to
- capture animations and other dynamic content. The actual grabbing of
- the window has not been implemented in this patch. It will come in
- a follow-up.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump): Store results in member variables.
- Don't close output channels yet.
- (WTR::TestInvocation::dumpResults): Added. This is where we dump
- the results if no error happened.
- (WTR):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::forceRepaintDoneCallback):
- (WTR):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Clean up variables controlling Qt module creation/handling
-
- Reviewed by Tor Arne Vestbø.
-
- We now depend on a Qt 5 version that is new enough to allow us to
- clean this up. Qt's default_pre.prf uses MODULE_QMAKE_OUTDIR, but
- the other MODULE_BASE_* variables are onl used in qmodule.prf.
-
- * qmake/mkspecs/features/default_pre.prf:
-
-2012-10-18 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Reduce memory pressure during link time
-
- Reviewed by Tor Arne Vestbø.
-
- If possible always pass -fkeep-memory to the linker on i386. The
- library has grown so big that we need this not only for i386 debug
- builds but at least also for release.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-10-17 Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Modularize documentation for QtWebKit
-
- Running 'make docs' would fail unless 'make qmake_all' was ran first,
- but qmake_all involved generating all the derived sources, which seems
- overly complex just for building documentation.
-
- We solve this by preventing all subdirs except QtWebKit from having a
- docs target. This would normally work fine on its own, but since we
- use CONFIG += ordered, there's now a missing doc target for the
- immediate dependency of the QtWebKit subdir. We solve this by adding
- a dummy-target ourselves.
-
- Finally, we clean up the qdocconf file to match the rest of the Qt
- documentation modularization efforts.
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/default_post.prf:
-
-2012-10-17 Zoltan Horvath <zoltan@webkit.org>
-
- Remove the JSHeap memory measurement of the PageLoad performacetests since it creates bogus JSGlobalDatas
- https://bugs.webkit.org/show_bug.cgi?id=99609
-
- Reviewed by Ryosuke Niwa.
-
- Remove the implementation since it creates bogus JSGlobalDatas in the layout tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump):
-
-2012-10-17 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] stop falling back to platform/mac for LayoutTest results
- https://bugs.webkit.org/show_bug.cgi?id=99666
-
- Reviewed by James Robinson.
-
- Previously the Chromium ports would fall back to results in
- platform/mac if a result was not found in platform/chromium-*.
- This allowed us to share a lot of results w/ the Apple Mac port,
- but often surprised people (especially at Apple ;) when changing
- something in that directory would break a Chromium build.
-
- The tests that are deleted in baselineoptimizer were for cases
- that are no longer relevant or possible in the current fallback
- graph.
-
- * Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:
- (BaselineOptimizerTest.test_move_baselines):
- (BaselineOptimizerTest.test_chromium_covers_mac_win_linux):
- * Scripts/webkitpy/layout_tests/port/chromium_android.py:
- (ChromiumAndroidPort):
- * Scripts/webkitpy/layout_tests/port/chromium_linux.py:
- (ChromiumLinuxPort):
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort):
- * Scripts/webkitpy/layout_tests/port/chromium_win.py:
- (ChromiumWinPort):
- * TestResultServer/static-dashboards/flakiness_dashboard.js:
-
-2012-10-17 Shashi Shekhar <shashishekhar@google.com>
-
- Remove redundant sdk_build parameter.
- https://bugs.webkit.org/show_bug.cgi?id=99648
-
- Reviewed by Adam Barth.
-
- sdk_build parameter is no longer needed.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
- * TestWebKitAPI/TestWebKitAPI.gyp/TestWebKitAPI.gyp:
-
-2012-10-17 Joanmarie Diggs <jdiggs@igalia.com>
-
- [GTK] AccessibilityUIElement::role() should be consistent across platforms wherever possible
- https://bugs.webkit.org/show_bug.cgi?id=99640
-
- Reviewed by Chris Fleizach.
-
- Convert AtkRole instances to the Mac/Safari-style AXRole string.
-
- * DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp:
- (roleToString): New method to convert AtkRole instances to the Mac/Safari-style AXRole string
- (AccessibilityUIElement::role): Output the Mac/Safair-style AXRole string rather than the AtkRole's name
-
-2012-10-17 Anders Carlsson <andersca@apple.com>
-
- Clean up Vector.h
- https://bugs.webkit.org/show_bug.cgi?id=99622
-
- Reviewed by Benjamin Poulain.
-
- Remove ReversedProxy test.
-
- * TestWebKitAPI/Tests/WTF/Vector.cpp:
-
-2012-10-17 Scott Graham <scottmg@chromium.org>
-
- Integer overflows/underflows in all Gamepad controller api calls.
- https://bugs.webkit.org/show_bug.cgi?id=97262
-
- Reviewed by Abhishek Arya.
-
- Range check controller inputs. This code is not exposed to the web,
- but makes fuzzers try less hard to break uninteresting code.
-
- * DumpRenderTree/chromium/TestRunner/GamepadController.cpp:
- (GamepadController::setButtonCount):
- (GamepadController::setButtonData):
- (GamepadController::setAxisCount):
- (GamepadController::setAxisData):
-
-2012-10-17 Joseph Pecoraro <pecoraro@apple.com>
-
- Unreviewed watchlist email change.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-17 Dan Carney <dcarney@google.com>
-
- Bind isolatedWorldSecurityOrigin to world
- https://bugs.webkit.org/show_bug.cgi?id=99582
-
- Reviewed by Adam Barth.
-
- Added ability to unset isolatedWorldSecurityOrigin.
-
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::setIsolatedWorldSecurityOrigin):
-
-2012-10-17 Joseph Pecoraro <pecoraro@apple.com>
-
- Unreviewed watchlist addition.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-17 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- plugins: Allow a plugin to dictate whether it can receive drag events or not.
- https://bugs.webkit.org/show_bug.cgi?id=99355
-
- Reviewed by Tony Chang.
-
- Update the TestWebPlugin to implement the new |canProcessDrag| interface.
-
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin::canProcessDrag):
-
-2012-10-17 Dominic Mazzoni <dmazzoni@google.com>
-
- Unreviewed. Create an accessibility watchlist.
-
- * Scripts/webkitpy/common/config/committers.py:
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-17 Jochen Eisinger <jochen@chromium.org>
-
- [gyp] fix bundle resources for DumpRenderTree on mac
- https://bugs.webkit.org/show_bug.cgi?id=99558
-
- Reviewed by Adam Barth.
-
- mac_bundle_resources doesn't propagate to targets that depend on it,
- so I'm wrapping it in an all_dependent_settings block.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-10-17 Harald Alvestrand <hta@google.com>
-
- Add myself to the MediaStream watchlist
- https://bugs.webkit.org/show_bug.cgi?id=99589
-
- Reviewed by Adam Barth.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] InjectedBundlePage::decidePolicyForNavigationAction() should print only filename part of local URLs
- https://bugs.webkit.org/show_bug.cgi?id=99581
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Now InjectedBundlePage::decidePolicyForNavigationAction() prints only filename part of local URLs (URLs where scheme
- equals to 'file').
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::decidePolicyForNavigationAction):
-
-2012-10-17 Harald Alvestrand <hta@google.com>
-
- Implement the Selector argument to RTCPeerConnection.getStats
- https://bugs.webkit.org/show_bug.cgi?id=99460
-
- Reviewed by Adam Barth.
-
- The MockWebRTCPeerConnectionHandler will return one object only
- when it gets a selector, and an even number when there is no selector.
- This allows to verify that the argument is passed, but not its value.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2012-10-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs layoutTestController.queueReload
- https://bugs.webkit.org/show_bug.cgi?id=42672
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added implementation of testRunner.queueReload().
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::queueReload):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::queueReload):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/WorkQueueManager.cpp:
- (WTR::WorkQueueManager::queueReload):
- (WTR):
- * WebKitTestRunner/WorkQueueManager.h:
- (WorkQueueManager):
-
-2012-10-17 Mark Rowe <mrowe@apple.com>
-
- Fix the build with a newer version of clang.
-
- Reviewed by Dan Bernstein.
-
- Update to accommodate the renamed methods in WebCoreStatistics.
-
- * DumpRenderTree/mac/PixelDumpSupportMac.mm:
- (createPagedBitmapContext):
-
-2012-10-17 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- WebKitTestRunner needs testRunner.queueLoad
- https://bugs.webkit.org/show_bug.cgi?id=42674
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added testRunner.queueLoad() and testRunner.queueBackNavigation() implementation to WTR including
- Work Queue implementation. Work Queue is managed by WorkQueueManager which belongs to UI process
- (as the needed functionality, like loading initiation, has to be invoked from UI process) and
- exchanges messages with Injected bundle.
-
- * WebKitTestRunner/CMakeLists.txt:
- * WebKitTestRunner/GNUmakefile.am:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::InjectedBundle):
- (WTR::InjectedBundle::didReceiveMessage):
- (WTR::InjectedBundle::done):
- (WTR::InjectedBundle::shouldProcessWorkQueue):
- (WTR):
- (WTR::InjectedBundle::processWorkQueue):
- (WTR::InjectedBundle::queueBackNavigation):
- (WTR::InjectedBundle::queueLoad):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::didFinishLoadForFrame):
- (WTR::InjectedBundlePage::didFailLoadWithErrorForFrame):
- (WTR::InjectedBundlePage::locationChangeForFrame):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.h:
- (InjectedBundlePage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::queueBackNavigation):
- (WTR):
- (WTR::TestRunner::queueLoad):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
- * WebKitTestRunner/TestController.h:
- (WTR::TestController::workQueueManager):
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- (WTR::TestInvocation::didReceiveSynchronousMessageFromInjectedBundle):
- * WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj:
- * WebKitTestRunner/WorkQueueManager.cpp: Added.
- (WTR):
- (WTR::mainPage):
- (WTR::goToItemAtIndex):
- (WTR::WorkQueueManager::WorkQueueManager):
- (WTR::WorkQueueManager::clearWorkQueue):
- (WTR::WorkQueueManager::processWorkQueue):
- (WTR::WorkQueueManager::queueLoad):
- (WTR::WorkQueueManager::queueBackNavigation):
- (WTR::WorkQueueManager::enqueue):
- * WebKitTestRunner/WorkQueueManager.h: Added.
- (WTR):
- (WorkQueueManager):
- (WTR::WorkQueueManager::isWorkQueueEmpty):
- (WorkQueueItem):
- (WTR::WorkQueueManager::WorkQueueItem::~WorkQueueItem):
- * WebKitTestRunner/win/WebKitTestRunner.vcproj:
-
-2012-10-16 Andy Estes <aestes@apple.com>
-
- [WebKit2] Create Objective-C API for adding and removing user scripts
- https://bugs.webkit.org/show_bug.cgi?id=99528
-
- Reviewed by Anders Carlsson.
-
- Add three new API tests.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
- (expectScriptValueIsString):
- (expectScriptValueIsBoolean):
- (expectScriptValueIsUndefined):
-
-2012-10-16 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] add Mountain Lion baselines
- https://bugs.webkit.org/show_bug.cgi?id=99505
-
- Reviewed by Ojan Vafai.
-
- This change adds a temporary 10.8/MountainLion-specific
- expectations file for Chromium so that the bot can be green
- while we are updating all the baselines and triaging failures.
-
- * Scripts/webkitpy/layout_tests/port/chromium_mac.py:
- (ChromiumMacPort.expectations_files):
- * Scripts/webkitpy/layout_tests/port/chromium_mac_unittest.py:
- (ChromiumMacPortTest.test_ml_expectations):
-
-2012-10-16 Dima Gorbik <dgorbik@apple.com>
-
- Remove Platform.h include from the header files.
- https://bugs.webkit.org/show_bug.cgi?id=98665
-
- Reviewed by Eric Seidel.
-
- We don't want other clients that include WebKit headers to know about Platform.h.
-
- * DumpRenderTree/mac/MockGeolocationProvider.mm:
-
-2012-10-16 Tommy Widenflycht <tommyw@google.com>
-
- MediaStream API: Add the chromium API for RTCDataChannel
- https://bugs.webkit.org/show_bug.cgi?id=99435
-
- Reviewed by Adam Barth.
-
- Adding mock support for WebRTCDataChannel.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (StringDataTask):
- (StringDataTask::StringDataTask):
- (CharPtrDataTask):
- (CharPtrDataTask::CharPtrDataTask):
- (DataChannelReadyStateTask):
- (DataChannelReadyStateTask::DataChannelReadyStateTask):
- (RTCPeerConnectionReadyStateTask):
- (RTCPeerConnectionReadyStateTask::RTCPeerConnectionReadyStateTask):
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::initialize):
- (MockWebRTCPeerConnectionHandler::stop):
- (MockWebRTCPeerConnectionHandler::openDataChannel):
- (MockWebRTCPeerConnectionHandler::closeDataChannel):
- (MockWebRTCPeerConnectionHandler::sendStringData):
- (MockWebRTCPeerConnectionHandler::sendRawData):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-2012-10-16 Chris Rogers <crogers@google.com>
-
- Rename some AudioNodes
- https://bugs.webkit.org/show_bug.cgi?id=99358
-
- Reviewed by Daniel Bates.
-
- * Scripts/do-webcore-rename:
-
-2012-10-16 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Implement testRunner.dumpSelectionRect() in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=69545
-
- Reviewed by Simon Fraser.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp:
- (WTR::InjectedBundlePage::dump): Set the
- kWKSnapshotOptionsPaintSelectionRectangle option if
- testRunner.dumpSelectionRect() is called.
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (WTR::TestRunner::dumpSelectionRect):
- (WTR::TestRunner::shouldDumpSelectionRect):
- (TestRunner):
-
-2012-10-16 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131461.
- http://trac.webkit.org/changeset/131461
- https://bugs.webkit.org/show_bug.cgi?id=99474
-
- Broke win7 bots (Requested by danakj|gardening on #webkit).
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
-
-2012-10-16 Zoltan Horvath <zoltan@webkit.org>
-
- [chromium] Provide used JSHeap size in chromium's DRT for pageloadtest memory measurements
- https://bugs.webkit.org/show_bug.cgi?id=99288
-
- Reviewed by Ryosuke Niwa.
-
- Provide used JSHeap size as we did it for the Apple port.
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::handleDumpMemoryHeader): Add new function to print the JSHeap memory result.
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter): handleDumpMemoryHeader declaration.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump): Dump JSHeap value.
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix nmake wipeclean on Windows
-
- Reviewed by Tor Arne Vestbø.
-
- Delete all subdirectories and no files instead of ".".
-
- * qmake/mkspecs/features/configure.prf:
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix wipeclean on Windows
-
- Reviewed by Csaba Osztrogonác.
-
- Make sure to close the .qmake.cache file after opening it, otherwise it cannot be deleted on
- a clean build because this process (build-webkit) is still using it due to Windows' exclusive
- way of opening files.
-
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Fix determination of changed files from SVN revisions
-
- Reviewed by Csaba Osztrogonác.
-
- isSVN() doesn't work from within the build directory, so change to the source directory before
- doing any VCS operations.
-
- * Scripts/VCSUtils.pm:
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
-
- Fix build-webkit bailing out of !isSVN() and !isGit()
-
- Reviewed by Tor Arne Vestbø.
-
- Added missing else case with early return.
-
- * Scripts/VCSUtils.pm:
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>, Tor Arne Vestbø <tor.arne.vestbo@digia.com>
-
- [Qt] Add logic for triggering clean builds on changes to build system files
-
- Reviewed by Csaba Osztrogonác.
-
- Re-use the existing logic that gives us a range between old and new SVN revision and
- parse the summarized output of diff to see if any of the changed files include files
- that are part of the Qt build system. If they change we likely need a clean build and
- trigger it just to be on the safe side and reduce the amount of manual intervention
- needed on the Qt build bots.
-
- * Scripts/VCSUtils.pm:
- * Scripts/webkitdirs.pm:
- (buildQMakeProjects):
-
-2012-10-16 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- Fix the paths for QtGraphics related WebKit2 files.
-
- Unreviewed update of watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-16 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- CSS and TouchAdjustment - I am watching you!
-
- Unreviewed update of watchlist.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-16 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Silence C++11 warnings with older versions of clang
-
- Rubber-stamped by Tor Arne Vestbø.
-
- Some clang versions support -Wno-c++11-extensions and some use -Wno-c++0x-extensions.
- We cater both :)
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-10-16 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2] Provide WKURL API for resolving the relative URL with the given base URL
- https://bugs.webkit.org/show_bug.cgi?id=99317
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added API test for newly added WKURLCreateWithBaseURL().
-
- * TestWebKitAPI/PlatformEfl.cmake:
- * TestWebKitAPI/Tests/WebKit2/WKURL.cpp: Added.
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-10-16 Zan Dobersek <zandobersek@gmail.com>
-
- [GTK] Decrease the Cario jhbuild dep version back to 1.10.2
- https://bugs.webkit.org/show_bug.cgi?id=99443
-
- Reviewed by Philippe Normand.
-
- Crashes started to occur after the Cairo version in the JHBuild dependencies
- was bumped up to 1.12.4. This change brings it back down to 1.10.2, which
- worked fine.
-
- * gtk/jhbuild.modules:
-
-2012-10-16 Szilard Ledan <szledan@inf.u-szeged.hu>
-
- Separate WebKit2 instances use the same local storage
- https://bugs.webkit.org/show_bug.cgi?id=89666
-
- Reviewed by Simon Hausmann.
-
- TestController has been modified to get the local storage from
- DUMPRENDERTREE_TEMP environment variable. If it's undefined
- then it works with the default directory. The aim is for the parallelly
- started WTRs to use separate directories. It was implemented for WK1
- long time ago and it works fine.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
-
-2012-10-15 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Display page favicons in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=99265
-
- Reviewed by Gyuyoung Kim.
-
- Display current page favicon in the URL bar.
- This uses the new favicon database API in
- EFL WebKit2.
-
- * MiniBrowser/efl/main.c:
- (on_favicon_received):
- (on_view_icon_changed):
- (window_create):
-
-2012-10-15 Simon Fraser <simon.fraser@apple.com>
-
- Update the url bar in MiniBrowser when getting the committed URL
- https://bugs.webkit.org/show_bug.cgi?id=99388
-
- Reviewed by Sam Weinig.
-
- Fix both WK1 and WK2 window controllers to update the URL in the
- text field when transitioning to the committed URL. This fixes
- the URL when dragging local files into the window.
-
- * MiniBrowser/mac/WK1BrowserWindowController.m:
- (-[WK1BrowserWindowController webView:didCommitLoadForFrame:]):
- * MiniBrowser/mac/WK2BrowserWindowController.m:
- (-[WK2BrowserWindowController updateTextFieldFromURL:]):
- (-[WK2BrowserWindowController updateProvisionalURLForFrame:]):
- (-[WK2BrowserWindowController updateCommittedURLForFrame:]):
- (-[WK2BrowserWindowController didCommitLoadForFrame:]):
-
-2012-10-15 Ojan Vafai <ojan@chromium.org>
-
- Don't show the content shell and android test bots for webkit ToT
- https://bugs.webkit.org/show_bug.cgi?id=99380
-
- Reviewed by Dirk Pranke.
-
- Content shell used to coincidentally be skipped because it spelled WebKit correctly.
- Now skip it explicitly. The Android bot is up and running, but only has a stub for
- running tests. Skip it so we don't show a false error.
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumWebkitTipOfTreeTestRunner):
-
-2012-10-15 Zoltan Horvath <zoltan@webkit.org>
-
- Add MountainLion Performance-bot to the Performance bots waterfall link
- https://bugs.webkit.org/show_bug.cgi?id=99378
-
- Reviewed by Dirk Pranke.
-
- Add MountainLion Performance-bot to the Performance bots waterfall link on the buildbots frontpage.
-
- * BuildSlaveSupport/build.webkit.org-config/templates/root.html:
-
-2012-10-15 Yael Aharon <yael.aharon@intel.com>
-
- [EFL][WK2] Cannot set evas engine from command line
- https://bugs.webkit.org/show_bug.cgi?id=99286
-
- Reviewed by Kenneth Rohde Christiansen.
-
- If an engine name is passed on the command line, pass it along to evas.
-
- * MiniBrowser/efl/main.c:
- (elm_main):
-
-2012-10-15 Ojan Vafai <ojan@chromium.org>
-
- Lower the minimum time required to keep a test in the test results json
- https://bugs.webkit.org/show_bug.cgi?id=99346
-
- Reviewed by Eric Seidel.
-
- On the run-webkit-tests side, we floor the time. So, 5 seconds is too close to
- the 6 second timeout. Lower the time so that we can get a better sense of tests
- that are close to timing out.
-
- * TestResultServer/model/jsonresults.py:
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_merge_keep_test_with_all_pass_but_slow_time):
-
-2012-10-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131306 and r131307.
- http://trac.webkit.org/changeset/131306
- http://trac.webkit.org/changeset/131307
- https://bugs.webkit.org/show_bug.cgi?id=99354
-
- It made layout testing extremely slow again (Requested by
- Ossy_night on #webkit).
-
- * WebKitTestRunner/Target.pri:
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::windowSnapshotImage):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-15 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131327.
- http://trac.webkit.org/changeset/131327
- https://bugs.webkit.org/show_bug.cgi?id=99353
-
- broke the build (Requested by danakj|gardening on #webkit).
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter):
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump):
-
-2012-10-15 Kenichi Ishibashi <bashi@chromium.org>
-
- [WebSocket] Update pywebsocket to 0.7.8
- https://bugs.webkit.org/show_bug.cgi?id=99293
-
- Reviewed by Yuta Kitamura.
-
- Version 0.7.8 supports WebSocket frames and messages compression
- with blocks in which BFINAL bit is set to 1.
- We need this feature to add a test case of compression extension.
-
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py:
- (DeflateFrameExtensionProcessor.__init__):
- (DeflateFrameExtensionProcessor.set_bfinal):
- (DeflateFrameExtensionProcessor._outgoing_filter):
- (DeflateMessageProcessor.__init__):
- (DeflateMessageProcessor.set_bfinal):
- (DeflateMessageProcessor._process_outgoing_message):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py:
- (_Deflater.compress_and_finish):
- (_RFC1979Deflater.filter):
-
-2012-10-15 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultServer] TestExpectations should only be loaded for the flakiness dashboard
- https://bugs.webkit.org/show_bug.cgi?id=99245
-
- Reviewed by Ojan Vafai.
-
- Only load the TestExpectations when using the flakiness dashboard. Other dashboards
- don't need them so there's no reason to load them.
-
- * TestResultServer/static-dashboards/dashboard_base.js:
- (isFlakinessDashboard):
- (appendJSONScriptElements):
-
-2012-10-15 Zoltan Horvath <zoltan@webkit.org>
-
- [chromium] Provide used JSHeap size in chromium's DRT for pageloadtest memory measurements
- https://bugs.webkit.org/show_bug.cgi?id=99288
-
- Reviewed by Ryosuke Niwa.
-
- Provide used JSHeap size as we did it for the Apple port.
-
- * DumpRenderTree/chromium/TestEventPrinter.cpp:
- (TestEventPrinter::handleDumpMemoryHeader): Add new function to print the JSHeap memory result.
- * DumpRenderTree/chromium/TestEventPrinter.h:
- (TestEventPrinter): handleDumpMemoryHeader declaration.
- * DumpRenderTree/chromium/TestShell.cpp:
- (TestShell::dump): Dump JSHeap value.
-
-2012-10-15 George Staikos <staikos@webkit.org>
-
- [BlackBerry] Adapt to Platform API changes in string handling
- https://bugs.webkit.org/show_bug.cgi?id=99248
-
- Reviewed by Yong Li.
-
- Convert usage of WebString, char* and std::string to BlackBerry::Platform::String.
-
- * DumpRenderTree/blackberry/DumpRenderTree.cpp:
- (BlackBerry::WebKit::DumpRenderTree::runTest):
- * DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp:
- (LoadHTMLStringItem::invoke):
- (ScriptItem::invoke):
-
-2012-10-15 Kangil Han <kangil.han@samsung.com>
-
- [EFL][EWebLauncher] Add encoding detector option.
- https://bugs.webkit.org/show_bug.cgi?id=98726
-
- Reviewed by Gyuyoung Kim.
-
- Added an option to test WebCore's encoding detector functionality on EWebLauncher.
- With this patch, EWebLauncher would display text correctly even if web page wouldn't specify charset information.
-
- * EWebLauncher/main.c:
- (_User_Arguments):
- (windowCreate):
- (parseUserArguments):
-
-2012-10-15 Ilya Tikhonovsky <loislo@chromium.org>
-
- Build fix for Mac debug build.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-15 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Implement pixel snapshot generation in WTR
- https://bugs.webkit.org/show_bug.cgi?id=95992
-
- Reviewed by Jocelyn Turcotte.
-
- Switch the Qt implementation of the PlatformWebView to use
- QQuickWindow::grabWindow to generate the pixel results. This way
- we will go through the scenegraph and test the actual rendering backend.
- We use QQuickWindowPrivate::setRenderWithoutShowing to avoid the need of
- showing the window.
-
- * WebKitTestRunner/Target.pri: Had to added a bunch
- of modules to be able to use QQuickWindowPrivate.
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::WrapperWindow::handleStatusChanged):
- (WTR::PlatformWebView::windowSnapshotImage):
-
-2012-10-15 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] Do a forced repaint before generating pixel results
- https://bugs.webkit.org/show_bug.cgi?id=98654
-
- Reviewed by Jocelyn Turcotte.
-
- Do a forced repaint before grabbing the pixel snapshot. This extra
- synchronisation is necessary with the CoordinatedGraphics rendering
- backend because it has a fully asynchronous nature. This patch make
- us using the window snapshot for pixel results which is necessary to
- capture animations and other dynamic content. The actual grabbing of
- the window has not been implemented in this patch. It will come in
- a follow-up.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump): Store results in member variables.
- Don't close output channels yet.
- (WTR::TestInvocation::dumpResults): Added. This is where we dump
- the results if no error happened.
- (WTR):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::forceRepaintDoneCallback):
- (WTR):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-15 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Separate Qt WebKit into Qt WebKit and Qt WebKit Widgets
- https://bugs.webkit.org/show_bug.cgi?id=88162
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Rename the QtWebKit module to QtWebKitWidgets.
-
- * DumpRenderTree/qt/DumpRenderTree.pro:
- * MiniBrowser/qt/MiniBrowser.pro:
- * MiniBrowser/qt/raw/Target.pri:
- * QtTestBrowser/QtTestBrowser.pro:
- * Scripts/webkitpy/layout_tests/port/qt.py:
- (QtPort._path_to_webcore_library):
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/Target.pri:
- * qmake/mkspecs/features/default_post.prf:
- * qmake/mkspecs/features/webkit_modules.prf:
- * qmake/mkspecs/features/win32/default_post.prf:
-
-2012-10-11 Kinuko Yasuda <kinuko@chromium.org>
-
- [chromium] Removes unnecessary dependencies in DumpRenderTree.gyp
- https://bugs.webkit.org/show_bug.cgi?id=99132
-
- Reviewed by Kent Tamura.
-
- Removing webkit_support:blob dependency for DumpRenderTree target as it doesn't seem necessary.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-10-15 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt][WK2] Buildfix for newer Qt5.
- https://bugs.webkit.org/show_bug.cgi?id=99303
-
- Reviewed by Simon Hausmann.
-
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::resizeTo):
-
-2012-10-14 Jon Lee <jonlee@apple.com>
-
- Allow notification origin permission request when no js callback is provided
- https://bugs.webkit.org/show_bug.cgi?id=63615
- <rdar://problem/11059590>
-
- Reviewed by Sam Weinig.
-
- Teach DRT to look at the existing entries in the permission hash map when permission is requested.
-
- * DumpRenderTree/mac/MockWebNotificationProvider.h: Expose policyForOrigin.
- * DumpRenderTree/mac/MockWebNotificationProvider.mm:
- (-[MockWebNotificationProvider setWebNotificationOrigin:permission:]):
- * DumpRenderTree/mac/UIDelegate.mm:
- (-[UIDelegate webView:decidePolicyForNotificationRequestFromOrigin:listener:]): Look at whether a
- policy for the origin already exists. If so, accept or deny the request as appropriate. Otherwise,
- accept by default.
-
-2012-10-13 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultServer] Unit tests require an update after r131239
- https://bugs.webkit.org/show_bug.cgi?id=99236
-
- Reviewed by Ojan Vafai.
-
- Replacing 'Webkit' with 'WebKit' in builder names througout the unit tests
- after the Chromium builders have been renamed recently.
-
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js:
-
-2012-10-12 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultServer] Add support for non-Chromium TestExpectations files
- https://bugs.webkit.org/show_bug.cgi?id=98422
-
- Reviewed by Ojan Vafai.
-
- Loads TestExpectations files for several other non-Chromium ports, parses them and
- properly distributes them per various platforms.
-
- * TestResultServer/static-dashboards/dashboard_base.js: g_expectations is replaced by
- g_expectationsByPlatform, an object that holds raw TestExpectations file contents for
- various platforms.
- (requestExpectationsFiles): First traverses through the platforms tree to gather all
- the TestExpectations files that should be loaded, then loads them in parallel.
- (appendJSONScriptElements):
- * TestResultServer/static-dashboards/flakiness_dashboard.js: The platforms tree is reorganized
- to describe each platform and possible subplatforms plainly yet in detail. The PLATFORM_FALLBACKS
- object is removed as it's not used anywhere. g_allTestsByPlatformAndBuildType is now filled by
- traversing the platforms tree.
- (traversePlatformsTree.traverse):
- (traversePlatformsTree): A helper function that traverses the platforms tree, invoking
- callback on each leaf node.
- (determineWKPlatform): A helper function to determine whether the builder is running WebKit1 or
- WebKit2 layer of a given platform.
- (chromiumPlatform): Chromium-specific platforms are now properly prefixed with 'CHROMIUM_'.
- (TestTrie): A new class that holds all the tests in a trie. The trie is constructed by iterating
- through the tests for each builder, adding each test to the trie.
- (TestTrie.prototype.forEach.traverse):
- (TestTrie.prototype.forEach): A helper function that traverses the tests trie, invoking callback on each leaf.
- (TestTrie.prototype._addTest): Aligns the test into the specified trie based on the test's path.
- (getAllTestsTrie): Instead of in list, the problematic tests from each builder are now stored in a trie.
- (individualTestsForSubstringList): Modified to traverse the trie instead of iterating the list.
- (allTestsWithResult): Ditto.
- (platformObjectForName): Splits the platform name by underscores and finds the appropriate platform object.
- (getParsedExpectations): Now operates on the passed-in parameter rather than on a global variable.
- (addTestToAllExpectationsForPlatform): Links expectations and modifiers to the test on the specified platform
- and any build type the modifiers might apply to (or all build types if there are no such modifiers).
- (processExpectationsForPlatform): Determines if the expectation should actually be processed for the given
- platform by checking if any platform's fallback platforms support platform modifier unions and if any modifiers
- represent such an union. If so, the expectation is then only processed if the given platform is in the union
- the modifier presents or there are no such modifiers.
- (processExpectations): Processes all acquired expectations by traversing the platforms tree and taking into
- account possible fallback platforms.
- (processTestRunsForBuilder):
- (realModifiers.return.modifiers.filter):
- (realModifiers): Modifiers other than build configurations and bug handles are now filtered out only if they
- are present in the platform's platform modifier unions or represent subplatforms of a platform that supports
- platform modifier unions.
- * TestResultServer/static-dashboards/flakiness_dashboard_unittests.js: The test cases are updated and expanded
- where necessary to cover the changes.
- (resetGlobals):
- (test): Added a TestTrie test.
-
-2012-10-12 Dirk Pranke <dpranke@chromium.org>
-
- Update chromium bot names in garden-o-matic.
-
- Unreviewed, build fix.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
-
-2012-10-12 Ojan Vafai <ojan@chromium.org>
-
- Fix bot name filters now that the Chromium bots have been renamed.
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumWebkitTipOfTreeTestRunner):
- (isChromiumWebkitDepsTestRunner):
- (isChromiumTipOfTreeGTestRunner):
-
-2012-10-12 Dirk Pranke <dpranke@chromium.org>
-
- [chromium] add ML bot and update bot names
- https://bugs.webkit.org/show_bug.cgi?id=99209
-
- Reviewed by Eric Seidel.
-
- This change adds proper baseline support for Mac10.8 (Mountain
- Lion or ML) to chromium and updates the bot names from "Webkit"
- to "WebKit" and ensures that all the bots have the OS version in
- the name on Mac and Win.
-
- We don't yet include a ML bot in garden-o-matic since it isn't
- green yet.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/builders_unittests.js:
- (.):
- * Scripts/webkitpy/layout_tests/port/builders.py:
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort):
- * Scripts/webkitpy/layout_tests/port/factory_unittest.py:
- (FactoryTest.test_get_from_builder_name):
- * Scripts/webkitpy/tool/commands/rebaseline_unittest.py:
- (TestRebaseline.test_baseline_directory):
- (TestRebaseline.test_rebaseline_updates_expectations_file_noop):
- (test_rebaseline_updates_expectations_file):
- (test_rebaseline_does_not_include_overrides):
- (test_rebaseline_test):
- (test_rebaseline_test_and_print_scm_changes):
- (test_rebaseline_and_copy_test):
- (test_rebaseline_and_copy_test_with_lion_result):
- (test_rebaseline_and_copy_no_overwrite_test):
- (test_rebaseline_expectations):
- * Scripts/webkitpy/tool/servers/gardeningserver_unittest.py:
- (BuildCoverageExtrapolatorTest.test_extrapolate):
-
-2012-10-12 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [Qt][WK2] REGRESSION(r131057): It made plugins/plugin-document-back-forward.html timeout
- https://bugs.webkit.org/show_bug.cgi?id=99152
-
- Reviewed by Simon Fraser.
-
- Even though Response was already checked in WTR WKBundlePagePolicyClient decidePolicyForResponse callback,
- this check did not take plugins into consideration when deciding whether we can show the given MIME type or not
- so added another check in WTR UI process which also includes plugins.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::decidePolicyForResponse):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-10-12 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Add tests of WebSocketEnabled preference
- https://bugs.webkit.org/show_bug.cgi?id=84982
-
- Reviewed by Yong Li.
-
- PR 209265.
-
- Allow WebSocketsEnabled preference setting.
-
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::overridePreference):
-
-2012-10-12 Tommy Widenflycht <tommyw@google.com>
-
- Creating a MediaStream subscription in watchlist
- https://bugs.webkit.org/show_bug.cgi?id=99172
-
- Reviewed by Yuta Kitamura.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-12 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131160.
- http://trac.webkit.org/changeset/131160
- https://bugs.webkit.org/show_bug.cgi?id=99163
-
- "It should not be landed without it's follow-up because it
- break pixal and ref tests without it." (Requested by kbalazs
- on #webkit).
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-12 Jochen Eisinger <jochen@chromium.org>
-
- Create a separate gyp target for dependencies of DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=99023
-
- Reviewed by Tony Chang.
-
- This allows for pulling in the fonts and helpers required to run layout
- tests in the content_shell without depending on DumpRenderTree.
-
- * DumpRenderTree/DumpRenderTree.gyp/DumpRenderTree.gyp:
-
-2012-10-12 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt][WTR] Do a forced repaint before generating pixel results
- https://bugs.webkit.org/show_bug.cgi?id=98654
-
- Reviewed by Jocelyn Turcotte.
-
- Do a forced repaint before grabbing the pixel snapshot. This extra
- synchronisation is necessary with the CoordinatedGraphics rendering
- backend because it has a fully asynchronous nature. This patch make
- us using the window snapshot for pixel results which is necessary to
- capture animations and other dynamic content. The actual grabbing of
- the window has not been implemented in this patch. It will come in
- a follow-up.
-
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::invoke):
- (WTR::TestInvocation::dump): Store results in member variables.
- Don't close output channels yet.
- (WTR::TestInvocation::dumpResults): Added. This is where we dump
- the results if no error happened.
- (WTR):
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
- * WebKitTestRunner/TestInvocation.h:
- (TestInvocation):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- (WTR::PlatformWebView::windowSnapshotImage):
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::forceRepaintDoneCallback):
- (WTR):
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-12 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed compile error fix for chromium windows bot.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-12 Ilya Tikhonovsky <loislo@chromium.org>
-
- Another unreviewed fix for clang builders.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-12 Ilya Tikhonovsky <loislo@chromium.org>
-
- Unreviewed compile error fix for clang builders.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-11 Ilya Tikhonovsky <loislo@chromium.org>
-
- Web Inspector: NMI move instrumentation tests from chromium test set to the cross platform test set.
- https://bugs.webkit.org/show_bug.cgi?id=99046
-
- Reviewed by Yury Semikhatsky.
-
- * TestWebKitAPI/Tests/WTF/MemoryInstrumentationTest.cpp:
-
-2012-10-11 Takashi Sakamoto <tasak@google.com>
-
- [WebKit IDL] remove all module from idl files.
- https://bugs.webkit.org/show_bug.cgi?id=99007
-
- Reviewed by Kentaro Hara.
-
- Since current WebIDL spec doesn't support "module", remove
- module from all idl files.
-
- No new tests. I ran run-bindings-tests and no error was reported.
-
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarker.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityTextMarkerRange.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/GCController.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/Bindings/TextInputController.idl:
- Removed "module".
-
-2012-10-11 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r131107.
- http://trac.webkit.org/changeset/131107
- https://bugs.webkit.org/show_bug.cgi?id=99126
-
- Causes an ASSERT (Requested by abarth|gardening on #webkit).
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:
- (AccessibilityController::getAccessibleElementById):
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::titleUIElementCallback):
-
-2012-10-11 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL][WK2] Add support for Inspector
- https://bugs.webkit.org/show_bug.cgi?id=98639
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Enable developer extensions when browser is created.
- And Inspector can be opened by pressing Ctrl+i on browser.
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (window_create):
-
-2012-10-11 Gyuyoung Kim <gyuyoung.kim@samsung.com>
-
- [EFL] Remove "web" word in web inspector
- https://bugs.webkit.org/show_bug.cgi?id=98724
-
- Reviewed by Laszlo Gombos.
-
- *web* word is redundant in web inspector. Beside r130494 and r130479 removed *web* from EFL WK2.
-
- * DumpRenderTree/efl/DumpRenderTreeChrome.cpp:
- (DumpRenderTreeChrome::createInspectorView):
- (DumpRenderTreeChrome::removeInspectorView):
- (DumpRenderTreeChrome::waitInspectorLoadFinished):
- (DumpRenderTreeChrome::onInspectorViewCreate):
- (DumpRenderTreeChrome::onInspectorViewClose):
- (DumpRenderTreeChrome::onInspectorFrameLoadFinished):
- * DumpRenderTree/efl/DumpRenderTreeChrome.h:
- (DumpRenderTreeChrome):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::showWebInspector):
- (TestRunner::closeWebInspector):
- * EWebLauncher/main.c:
- (on_inspector_ecore_evas_resize):
- (on_key_down):
- (on_inspector_view_create):
- (on_inspector_view_close):
- (on_inspector_view_destroyed):
- (browserCreate):
- (webInspectorCreate):
- (closeWindow):
- (main_signal_exit):
-
-2012-10-11 Timothy Hatcher <timothy@apple.com>
-
- Unreviewed watch list addition for Inspector.json.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-11 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: labelForElement is slow when there are a lot of DOM elements
- https://bugs.webkit.org/show_bug.cgi?id=97825
-
- Reviewed by Ryosuke Niwa.
-
- Implement titleUIElement in the chromium port of DRT, and
- fix getAccessibleElementById so that it ensures the backing store
- is up-to-date.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityControllerChromium.cpp:
- (AccessibilityController::getAccessibleElementById):
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (AccessibilityUIElement::titleUIElementCallback):
-
-2012-10-11 Dirk Pranke <dpranke@chromium.org>
-
- test-webkitpy runs individual tests twice
- https://bugs.webkit.org/show_bug.cgi?id=99098
-
- Reviewed by Adam Barth.
-
- If you were to run 'test-webkitpy webkitpy.test.main_unittests.TesterTests.test_no_tests_found',
- it would actually run the test twice. This fixes that.
-
- * Scripts/webkitpy/test/main.py:
- (Tester._parse_args):
- (Tester._test_names):
- * Scripts/webkitpy/test/main_unittest.py:
- (TesterTest.test_no_tests_found):
- (TesterTest):
- (TesterTest.test_individual_names_are_not_run_twice):
-
-2012-10-11 Xianzhu Wang <wangxianzhu@chromium.org>
-
- [Chromium-Android] Exception when the layout test driver is stopped
- https://bugs.webkit.org/show_bug.cgi?id=99084
-
- Reviewed by Dirk Pranke.
-
- On chromium-android, the process is killed directly in ServerProcess.stop() as the pipes are closed first.
- Should not try to read data from the pipes after the process is killed.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess.stop): Don't read data after the process is killed.
-
-2012-10-11 Mario Sanchez Prada <msanchez@igalia.com>
-
- [GTK] REGRESSION(r131033): Favicons don't work in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=99019
-
- Reviewed by Carlos Garcia Campos.
-
- Enable the favicons database by specifying the default path for
- the directory where the actual data will be stored.
-
- * MiniBrowser/gtk/main.c:
- (main): Set the default directory for the favicon database calling
- webkit_web_context_set_favicon_database_directory().
-
-2012-10-11 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [EFL][WK2] NWTR should launch MiniBrowser instead of EWebLauncher after test run
- https://bugs.webkit.org/show_bug.cgi?id=99075
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Pass the '-2' flag when executing run-launcher script after
- testing with WebKitTestRunner.
-
- * Scripts/webkitpy/layout_tests/port/efl.py:
- (EflPort.show_results_html_file):
-
-2012-10-11 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add support for Javascript popup boxes to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=99021
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add support for JavaScript popups (alert, confirm, prompt)
- to MiniBrowser.
-
- * MiniBrowser/efl/main.c:
- (miniBrowserViewSmartClass):
- (browser_view_find):
- (quit_event_loop):
- (on_ok_clicked):
- (on_javascript_alert):
- (on_javascript_confirm):
- (on_javascript_prompt):
- (window_create):
- (elm_main):
-
-2012-10-11 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][jhbuild] Disable elm-web in elementary
- https://bugs.webkit.org/show_bug.cgi?id=99005
-
- Reviewed by Laszlo Gombos.
-
- * efl/jhbuild.modules: Added --disable-web to elementary.
-
-2012-10-11 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- REGRESSION (r129478-r129480): http/tests/loading/text-content-type-with-binary-extension.html failing on Apple MountainLion Debug WK2 (Tests)
- https://bugs.webkit.org/show_bug.cgi?id=98527
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added decidePolicyForResponse callback for WTR PagePolicyClient.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::initialize):
- (WTR::TestController::decidePolicyForResponse):
- (WTR):
- * WebKitTestRunner/TestController.h:
- (TestController):
-
-2012-10-11 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] Make sure that -Wno-c++0x-compat is set even with production_build
-
- Reviewed by Simon Hausmann.
-
- This makes sure that QtWebKit can be built inside Qt without nullptr
- and narrowing warnings producing noise during compilation.
-
- * qmake/mkspecs/features/unix/default_post.prf:
-
-2012-10-11 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Revisit setting API names and documentation
- https://bugs.webkit.org/show_bug.cgi?id=98793
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Make frame flattening setting APIs to be consistent with others.
-
- * MiniBrowser/efl/main.c:
- (window_create):
-
-2012-10-11 Vivek Galatage <vivekgalatage@gmail.com>
-
- Fix committers.py for the names of contributors to appear on webkit.org/team.html
- https://bugs.webkit.org/show_bug.cgi?id=99004
-
- Reviewed by Yuta Kitamura
-
- Some of the nicknames in the committers.py file are using the single quotes (')
- but while parsing these, JSON throws an error: Single quotes (') are not allowed in JSON
- Hence coverting these single quotes to (") so as the contributor names appear properly
- on http://www.webkit.org/team.html
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-10 Lucas Forschler <lforschler@apple.com>
-
- Remove Apple Mac Snow Leopard bots.
-
- * BuildSlaveSupport/build.webkit.org-config/config.json:
-
-2012-10-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add toolbar buttons to MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=98883
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Add toolbar buttons to MiniBrowser to support
- navigation back / forward, refresh and go
- to home page.
-
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (on_back_forward_list_changed):
- (on_back_button_clicked):
- (on_forward_button_clicked):
- (on_refresh_button_clicked):
- (on_home_button_clicked):
- (create_toolbar_button):
- (window_create):
-
-2012-10-10 Andy Estes <aestes@apple.com>
-
- Fix the Lion build after r130948.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm:
-
-2012-10-10 Andy Estes <aestes@apple.com>
-
- Speculative build fix for Snow Leopard after r130948.
-
- * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm: Pull the
- declaration of backgroundColorQuery out of a block to appease GCC.
-
-2012-10-10 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com>
-
- [WK2][WTR] WebKitTestRunner UI process should be aware of Custom Policy Delegate
- https://bugs.webkit.org/show_bug.cgi?id=95974
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Added TestController::decidePolicyForNavigationAction() function as a 'decidePolicyForNavigationAction' WKPagePolicyClient callback
- for WTR UI process. WTR bundle client notifies UI process about Custom Policy Delegate via newly added message,
- so that TestController is aware of whether Custom Policy Delegate as enabled and
- permissive. This data is used then in TestController::decidePolicyForNavigationAction for making policy decision.
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::setCustomPolicyDelegate):
- (WTR):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setCustomPolicyDelegate):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::TestController):
- (WTR::TestController::initialize):
- (WTR::TestController::resetStateToConsistentValues):
- (WTR::TestController::setCustomPolicyDelegate):
- (WTR):
- (WTR::TestController::decidePolicyForNavigationAction):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-10-10 Zoltan Horvath <zoltan@webkit.org>
-
- Pageload tests should measure memory usage
- https://bugs.webkit.org/show_bug.cgi?id=93958
-
- Reviewed by Ryosuke Niwa.
-
- Add JS Heap and Heap memory measurement to PageLoad tests.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (dump): Print memory results with DRT.
- * Scripts/old-run-webkit-tests:
- (readFromDumpToolWithTimer): Hadle memory results.
- * Scripts/webkitpy/layout_tests/port/driver.py:
- (DriverOutput.__init__): Add new parameter for the results.
- (Driver.__init__): Initialize the new parameter.
- (Driver.run_test):
- (Driver._read_first_block): Add support for the new headers.
- (Driver._process_stdout_line):
- (ContentBlock.__init__):
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PageLoadingPerfTest.calculate_statistics): Move statistics calculation into a function.
- (PageLoadingPerfTest.run): Handle the new memory results.
- (PageLoadingPerfTest.run.in):
- (PageLoadingPerfTest):
- * Scripts/webkitpy/performance_tests/perftest_unittest.py: Add test for memory results of pageloadtests.
- (TestPageLoadingPerfTest.MockDriver.__init__):
- (TestPageLoadingPerfTest.MockDriver.run_test):
- (TestPageLoadingPerfTest.test_run_with_memory_output):
-
-2012-10-04 Andy Estes <aestes@apple.com>
-
- [WebKit2] Create an API for adding and removing user stylesheets from a page group
- https://bugs.webkit.org/show_bug.cgi?id=98432
-
- Reviewed by Sam Weinig.
-
- Add three new API tests:
-
- - Test adding a user stylesheet before a page is created. This tests
- the code path where the sheet is sent to the web process as part of
- the new page's WebPageCreationParameters.
- - Test adding a user stylesheet after a page is created. This tests the
- code patch where the sheet is sent as a separate message to all
- processes containing the given page group.
- - Test removing all user stylesheets.
-
- * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
- * TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm: Added.
- (-[UserContentTestLoadDelegate initWithBlockToRunOnLoad:]):
- (-[UserContentTestLoadDelegate browsingContextControllerDidFinishLoad:]):
- (expectScriptValue):
- * TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm:
-
-2012-10-10 Dan Bernstein <mitz@apple.com>
-
- Changed debug-safari, debug-minibrowser and debug-test-runner to use LLDB by default when
- using Xcode 4.5 or later.
-
- Reviewed by Anders Carlsson.
-
- * Scripts/webkitdirs.pm:
- (determineDebugger): Changed the default debugger from GDB to LLDB when the Xcode version
- is 4.5 or later. Added a --use-gdb switch for overriding this.
- (printHelpAndExitForRunAndDebugWebKitAppIfNeeded): Updated to mention --use-gdb and the
- how the default debugger choice depends on the Xcode version. Also changed the description
- of --no-saved-state to use the same terminology Xcode’s scheme editor uses to describe this
- option, and clarified to which OS X versions it applies.
-
-2012-10-10 Antonio Gomes <agomes@rim.com>
-
- Unreviewed watch list addition.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-10 Dirk Pranke <dpranke@chromium.org>
-
- NRWT crashes on too many timeouts
- https://bugs.webkit.org/show_bug.cgi?id=97047
-
- Reviewed by Tony Chang.
-
- Apparently if you kill a subprocess directly python doesn't
- auto-close the file descriptors.
-
- * Scripts/webkitpy/layout_tests/port/server_process.py:
- (ServerProcess._reset):
- * Scripts/webkitpy/layout_tests/port/server_process_unittest.py:
-
-2012-10-10 Zan Dobersek <zandobersek@gmail.com>
-
- [TestResultServer] Enable CORS for test files
- https://bugs.webkit.org/show_bug.cgi?id=98918
-
- Reviewed by Dirk Pranke.
-
- Serve the JSON test files with the Access-Control-Allow-Origin
- response header to enable cross-origin sharing of these files.
- This eases up hacking on TestResultServer.
-
- * TestResultServer/handlers/testfilehandler.py:
- (GetFile._serve_json):
-
-2012-10-10 Andreas Kling <kling@webkit.org>
-
- Future-proof the WTF.DoubleHashCollisions test.
- <http://webkit.org/b/98853>
-
- Reviewed by Anders Carlsson.
-
- Add a check that the two keys that are supposed to clobber each other actually end up
- in the same bucket with the DefaultHash<double> hash function.
-
- * TestWebKitAPI/Tests/WTF/HashMap.cpp:
- (TestWebKitAPI::bucketForKey):
- (TestWebKitAPI):
- (TestWebKitAPI::TEST):
-
-2012-10-10 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Test drivers should handle repaint rects
- https://bugs.webkit.org/show_bug.cgi?id=68870
-
- Reviewed by Zoltan Herczeg.
-
- Implemented masking the area not covered by repaint rects.
- This is equivalent with the implementation for Mac.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::dump):
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::display):
- * WebKitTestRunner/qt/PlatformWebViewQt.cpp:
- * WebKitTestRunner/qt/TestInvocationQt.cpp:
- (WTR::TestInvocation::dumpPixelsAndCompareWithExpected):
-
-2012-10-10 Vivek Galatage <vivekgalatage@gmail.com>
-
- [Qt]QtTestBrowser should have default url(google.com) when no command line args
- https://bugs.webkit.org/show_bug.cgi?id=98880
-
- Reviewed by Simon Hausmann.
-
- Making QtTestBrowser use www.google.com as default url when no arguments are passed
-
- * QtTestBrowser/qttestbrowser.cpp:
- (main):
-
-2012-10-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Port MiniBrowser to Elementary
- https://bugs.webkit.org/show_bug.cgi?id=98748
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Port MiniBrowser to Elementary to simplify the
- code and make future improvements easier. The
- URL bar is now an Elementary Entry widget and
- supports additional functionality like copy /
- paste.
-
- * CMakeLists.txt:
- * EWebLauncher/url_bar.c:
- (on_urlbar_key_down): Remove WK2-specific code
- now that this file is no longer used by MiniBrowser.
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (window_free):
- (window_close):
- (view_focus_set):
- (on_mouse_down):
- (title_set):
- (on_title_changed):
- (on_url_changed):
- (on_close_window):
- (on_progress):
- (quit):
- (on_url_bar_activated):
- (on_url_bar_clicked):
- (on_window_deletion):
- (window_create):
- (elm_main):
- * efl/jhbuild.modules: Add Elementary to jhbuild and bump
- EFL dependencies to 1.7.
-
-2012-10-10 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][SOUP] ResourceError.isCancellation() is not carried over IPC
- https://bugs.webkit.org/show_bug.cgi?id=98882
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Do not display the error page in MiniBrowser if the loading
- error corresponds to a cancellation.
-
- * MiniBrowser/efl/main.c:
- (on_error):
-
-2012-10-09 Jocelyn Turcotte <jocelyn.turcotte@digia.com>
-
- [Qt] WTR: Fix an assert triggered by EventSenderProxy::touchEnd
- https://bugs.webkit.org/show_bug.cgi?id=98735
-
- Reviewed by Kenneth Rohde Christiansen.
-
- ASSERT: "itemForTouchPointId.isEmpty()" in file qt5/qtdeclarative/src/quick/items/qquickwindow.cpp, line 1563
- This assert is caused by QQuickWindow not registering our TouchPointReleased
- since it expects QTouchEvent::touchPointStates() to be filled by the event's sender.
-
- This patch calculates the touchPointStates like QQuickWindowPrivate::touchEventWithPoints does.
-
- * WebKitTestRunner/qt/EventSenderProxyQt.cpp:
- (WTR::EventSenderProxy::sendTouchEvent):
-
-2012-10-10 Allan Sandfeld Jensen <allan.jensen@digia.com>
-
- [Qt] DumpRenderTree needs a beginDragWithFiles implementation
- https://bugs.webkit.org/show_bug.cgi?id=50902
-
- Reviewed by Simon Hausmann.
-
- Implement support for beginDragWithFiles. This function similates dragging without going
- though regular event handling. Which allows us to test effects of dropping files on
- different elements.
-
- * DumpRenderTree/qt/EventSenderQt.cpp:
- (EventSender::EventSender):
- (EventSender::mouseUp):
- (EventSender::mouseMoveTo):
- (EventSender::beginDragWithFiles):
- * DumpRenderTree/qt/EventSenderQt.h:
- (EventSender):
-
-2012-10-10 KwangYong Choi <ky0.choi@samsung.com>
-
- [EFL][WTR][CMake] Add a missing TestNetscapePlugin file
- https://bugs.webkit.org/show_bug.cgi?id=98637
-
- Reviewed by Kenneth Rohde Christiansen.
-
- PluginScriptableObjectOverridesAllProperties.cpp is used during
- plugins/npruntime/overrides-all-properties.html test introduced by r123936.
-
- * DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt:
-
-2012-10-10 Kenichi Ishibashi <bashi@chromium.org>
-
- Update pywebsocket to 0.7.7
- https://bugs.webkit.org/show_bug.cgi?id=98872
-
- Reviewed by Yuta Kitamura.
-
- This version contains server-side permessage-compress extension support.
- We need this version to add tests for permessage-compress extension.
-
- I confirmed all tests under http/tests/websocket passed.
-
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py:
- (parse_frame):
- (FragmentedFrameBuilder.__init__):
- (FragmentedFrameBuilder.build):
- (create_closing_handshake_body):
- (StreamOptions.__init__):
- (Stream.__init__):
- (Stream._receive_frame._receive_bytes):
- (Stream._receive_frame):
- (Stream.receive_filtered_frame):
- (Stream.send_message):
- (Stream._get_message_from_frame):
- (Stream):
- (Stream._process_close_message):
- (Stream._process_ping_message):
- (Stream._process_pong_message):
- (Stream.receive_message):
- (Stream._send_closing_handshake):
- (Stream.get_last_received_opcode):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py:
- (Dispatcher.transfer_data):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py:
- (ExtensionProcessorInterface.name):
- (DeflateStreamExtensionProcessor):
- (DeflateStreamExtensionProcessor.name):
- (_log_compression_ratio):
- (_log_decompression_ratio):
- (DeflateFrameExtensionProcessor):
- (DeflateFrameExtensionProcessor.name):
- (DeflateFrameExtensionProcessor._outgoing_filter):
- (DeflateFrameExtensionProcessor._incoming_filter):
- (CompressionExtensionProcessorBase):
- (CompressionExtensionProcessorBase.for):
- (CompressionExtensionProcessorBase.__init__):
- (CompressionExtensionProcessorBase.name):
- (CompressionExtensionProcessorBase._get_compression_processor_response):
- (CompressionExtensionProcessorBase.set_compression_processor_hook):
- (PerFrameCompressionExtensionProcessor):
- (PerFrameCompressionExtensionProcessor.__init__):
- (PerFrameCompressionExtensionProcessor.name):
- (PerFrameCompressionExtensionProcessor._lookup_compression_processor):
- (DeflateMessageProcessor):
- (DeflateMessageProcessor.__init__):
- (DeflateMessageProcessor.name):
- (DeflateMessageProcessor.get_extension_response):
- (DeflateMessageProcessor.setup_stream_options):
- (DeflateMessageProcessor.setup_stream_options._OutgoingMessageFilter):
- (DeflateMessageProcessor.setup_stream_options._OutgoingMessageFilter.__init__):
- (DeflateMessageProcessor.setup_stream_options._OutgoingMessageFilter.filter):
- (DeflateMessageProcessor.setup_stream_options._IncomingMessageFilter):
- (DeflateMessageProcessor.setup_stream_options._IncomingMessageFilter.__init__):
- (DeflateMessageProcessor.setup_stream_options._IncomingMessageFilter.decompress_next_message):
- (DeflateMessageProcessor.setup_stream_options._IncomingMessageFilter.filter):
- (DeflateMessageProcessor.setup_stream_options._OutgoingFrameFilter):
- (DeflateMessageProcessor.setup_stream_options._OutgoingFrameFilter.__init__):
- (DeflateMessageProcessor.setup_stream_options._OutgoingFrameFilter.set_compression_bit):
- (DeflateMessageProcessor.setup_stream_options._OutgoingFrameFilter.filter):
- (DeflateMessageProcessor.setup_stream_options._IncomingFrameFilter):
- (DeflateMessageProcessor.setup_stream_options._IncomingFrameFilter.__init__):
- (DeflateMessageProcessor.setup_stream_options._IncomingFrameFilter.filter):
- (DeflateMessageProcessor.set_c2s_max_window_bits):
- (DeflateMessageProcessor.set_c2s_no_context_takeover):
- (DeflateMessageProcessor.enable_outgoing_compression):
- (DeflateMessageProcessor.disable_outgoing_compression):
- (DeflateMessageProcessor._process_incoming_message):
- (DeflateMessageProcessor._process_outgoing_message):
- (DeflateMessageProcessor._process_incoming_frame):
- (DeflateMessageProcessor._process_outgoing_frame):
- (PerMessageCompressionExtensionProcessor):
- (PerMessageCompressionExtensionProcessor.__init__):
- (PerMessageCompressionExtensionProcessor.name):
- (PerMessageCompressionExtensionProcessor._lookup_compression_processor):
- (MuxExtensionProcessor):
- (MuxExtensionProcessor.__init__):
- (MuxExtensionProcessor.name):
- (MuxExtensionProcessor.get_extension_response):
- (MuxExtensionProcessor.setup_stream_options):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py:
- (do_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py:
- (validate_subprotocol):
- (check_request_line):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/draft75.py: Removed.
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py:
- (Handshaker.do_handshake):
- (Handshaker._set_protocol):
- (Handshaker._create_stream):
- (Handshaker):
- (Handshaker._create_handshake_response):
- (Handshaker._send_handshake):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py:
- (send_message):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py: Added.
- (MuxUnexpectedException):
- (MuxNotImplementedException):
- (LogicalConnectionClosedException):
- (PhysicalConnectionError):
- (PhysicalConnectionError.__init__):
- (LogicalChannelError):
- (LogicalChannelError.__init__):
- (_encode_channel_id):
- (_encode_number):
- (_create_add_channel_response):
- (_create_drop_channel):
- (_create_flow_control):
- (_create_new_channel_slot):
- (_create_fallback_new_channel_slot):
- (_parse_request_text):
- (_ControlBlock):
- (_ControlBlock.__init__):
- (_MuxFramePayloadParser):
- (_MuxFramePayloadParser.that):
- (_MuxFramePayloadParser.__init__):
- (_MuxFramePayloadParser.read_channel_id):
- (_MuxFramePayloadParser.read_inner_frame):
- (_MuxFramePayloadParser._read_number):
- (_MuxFramePayloadParser._read_size_and_contents):
- (_MuxFramePayloadParser._read_add_channel_request):
- (_MuxFramePayloadParser._read_add_channel_response):
- (_MuxFramePayloadParser._read_flow_control):
- (_MuxFramePayloadParser._read_drop_channel):
- (_MuxFramePayloadParser._read_new_channel_slot):
- (_MuxFramePayloadParser.read_control_blocks):
- (_MuxFramePayloadParser.remaining_data):
- (_LogicalRequest):
- (_LogicalRequest.__init__):
- (_LogicalRequest.is_https):
- (_LogicalConnection):
- (_LogicalConnection.__init__):
- (_LogicalConnection.get_local_addr):
- (_LogicalConnection.get_remote_addr):
- (_LogicalConnection.get_memorized_lines):
- (_LogicalConnection.write):
- (_LogicalConnection.write_control_data):
- (_LogicalConnection.notify_write_done):
- (_LogicalConnection.append_frame_data):
- (_LogicalConnection.read):
- (_LogicalConnection.set_read_state):
- (_LogicalStream):
- (_LogicalStream.interprets):
- (_LogicalStream.__init__):
- (_LogicalStream._create_inner_frame):
- (_LogicalStream._write_inner_frame):
- (_LogicalStream.replenish_send_quota):
- (_LogicalStream.consume_receive_quota):
- (_LogicalStream.send_message):
- (_LogicalStream._receive_frame):
- (_LogicalStream.receive_message):
- (_LogicalStream._send_closing_handshake):
- (_LogicalStream.send_ping):
- (_LogicalStream._send_pong):
- (_LogicalStream.close_connection):
- (_LogicalStream._drain_received_data):
- (_OutgoingData):
- (_OutgoingData.__init__):
- (_PhysicalConnectionWriter):
- (_PhysicalConnectionWriter.__init__):
- (_PhysicalConnectionWriter.put_outgoing_data):
- (_PhysicalConnectionWriter._write_data):
- (_PhysicalConnectionWriter.run):
- (_PhysicalConnectionWriter.stop):
- (_PhysicalConnectionReader):
- (_PhysicalConnectionReader.__init__):
- (_PhysicalConnectionReader.run):
- (_Worker):
- (_Worker.__init__):
- (_Worker.run):
- (_MuxHandshaker):
- (_MuxHandshaker.__init__):
- (_MuxHandshaker._create_stream):
- (_MuxHandshaker._create_handshake_response):
- (_MuxHandshaker._send_handshake):
- (_LogicalChannelData):
- (_LogicalChannelData.__init__):
- (_HandshakeDeltaBase):
- (_HandshakeDeltaBase.that):
- (_HandshakeDeltaBase.__init__):
- (_HandshakeDeltaBase.create_headers):
- (_MuxHandler):
- (_MuxHandler.are):
- (_MuxHandler.__init__):
- (_MuxHandler.start):
- (_MuxHandler.add_channel_slots):
- (_MuxHandler.wait_until_done):
- (_MuxHandler.notify_write_done):
- (_MuxHandler.send_control_data):
- (_MuxHandler.send_data):
- (_MuxHandler._send_drop_channel):
- (_MuxHandler._send_error_add_channel_response):
- (_MuxHandler._create_logical_request):
- (_MuxHandler._do_handshake_for_logical_request):
- (_MuxHandler._add_logical_channel):
- (_MuxHandler._process_add_channel_request):
- (_MuxHandler._process_flow_control):
- (_MuxHandler._process_drop_channel):
- (_MuxHandler._process_control_blocks):
- (_MuxHandler._process_logical_frame):
- (_MuxHandler.dispatch_message):
- (_MuxHandler.notify_worker_done):
- (_MuxHandler.notify_reader_done):
- (_MuxHandler.fail_physical_connection):
- (_MuxHandler.fail_logical_channel):
- (use_mux):
- (start):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py:
- (_StandaloneRequest.get_protocol):
- (_StandaloneRequest):
- (_alias_handlers):
- (WebSocketServer.__init__):
- (WebSocketServer._create_sockets):
- (WebSocketServer.server_bind):
- (WebSocketServer.server_activate):
- (WebSocketRequestHandler.parse_request):
- (_configure_logging):
- (_build_option_parser):
- (_main):
- (_main.if):
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py:
- * Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py:
- (_Deflater.compress):
- (_RFC1979Deflater.filter):
-
-2012-10-09 Damian Kaleta <dkaleta@apple.com>
-
- extract-localizable-strings script should be able to handle paths to files containing whitespaces.
- https://bugs.webkit.org/show_bug.cgi?id=98844
-
- Reviewed by Dan Bernstein.
-
- * Scripts/extract-localizable-strings: Added ability to handle whitespace.
-
-2012-10-09 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [Cairo] Bump Cairo to fix more canvas/philip tests
- https://bugs.webkit.org/show_bug.cgi?id=97658
-
- Reviewed by Martin Robinson.
-
- Bumping cairo to version 1.12.4 which fixes more canvas/philip tests.
-
- * efl/jhbuild.modules:
- * gtk/jhbuild.modules:
-
-2012-10-09 Julien Chaffraix <jchaffraix@webkit.org>
-
- Unreviewed Chromium Windows build fix after r130823.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString): Re-added the 'default' label as some cases are not handled.
-
-2012-10-09 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Add drop event for plugins.
- https://bugs.webkit.org/show_bug.cgi?id=98827
-
- Reviewed by Adam Barth.
-
- Update the test plugin to receive drop events.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleDragStatusUpdate):
-
-2012-10-09 Dominic Mazzoni <dmazzoni@google.com>
-
- AX: 5 accessibility tests just need minor tweaks to pass on chromium
- https://bugs.webkit.org/show_bug.cgi?id=98311
-
- Reviewed by Chris Fleizach.
-
- Update roleToString on Chromium to include all missing roles,
- which enables some layout tests to pass.
-
- * DumpRenderTree/chromium/TestRunner/AccessibilityUIElementChromium.cpp:
- (roleToString):
-
-2012-10-09 Dirk Pranke <dpranke@chromium.org>
-
- webkit-patch rebaseline-expectations doesn't work w/o failures specified
- https://bugs.webkit.org/show_bug.cgi?id=98810
-
- Reviewed by Ojan Vafai.
-
- If you try to mark a test as foo.html [ Rebaseline ] it wasn't
- getting picked up for rebaselining; we needed to think the test
- was failing.
-
- * Scripts/webkitpy/layout_tests/models/test_expectations.py:
- (TestExpectations.get_rebaselining_failures):
- * Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py:
- (RebaseliningTest.test_get_rebaselining_failures):
-
-2012-10-09 Daniel Bates <dbates@webkit.org>
-
- VCSUtils.pm doesn't support SVN 1.7 diff files
- <https://bugs.webkit.org/show_bug.cgi?id=80762>
-
- Reviewed by Eric Seidel.
-
- Implement support for the SVN 1.7 diff format.
-
- * Scripts/VCSUtils.pm:
- (parseChunkRange): Modified to support parsing an SVN 1.7 chunk range
- that begins and ends with "##" (e.g. ## -0,0 +1,7 ##). For comparison,
- earlier versions of SVN parsed chunk ranges of the form "@@ -0,0 +1,7 @@".
-
- (parseSvnDiffHeader): Modified to parse an SVN 1.7 binary diff; SVN 1.7
- has an unusual display format for a binary diff. It repeats the first
- two lines of the diff header.
-
- (parseSvnProperty): Modified to ignore both an SVN 1.7 chunk range and
- lines of the form "\ No newline at end of property". SVN 1.7 emits the latter
- message after a property value that doesn't end in a newline.
-
- (parseSvnPropertyValue): Stop parsing an SVN property value when we encounter
- a line of the form "\ No newline at end of property" (emitted by svn diff as of
- SVN 1.7).
-
- * Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl:
- - Added the following unit tests:
- "Line count is 0"
- "New line count is 1"
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl:
- - Added the following unit tests:
- "svn:executable followed by custom property using SVN 1.7 syntax"
- "svn:executable followed by custom property without newline using SVN 1.7 syntax"
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl:
- - Updated test results for test "binary file".
- - Added unit test "binary file using SVN 1.7 syntax".
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl:
- - Added the following unit tests:
- "simple: add svn:executable using SVN 1.7 syntax"
- "simple: delete svn:executable using SVN 1.7 syntax"
- "add svn:mime-type and add svn:executable using SVN 1.7 syntax"
-
- * Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl:
- - Added the following unit tests:
- "singe-line '+' change using SVN 1.7 syntax"
- "single-line '-' change using SVN 1.7 syntax"
-
-2012-10-09 James Robinson <jamesr@chromium.org>
-
- Unreviewed, rolling out r128488.
- http://trac.webkit.org/changeset/128488
- https://bugs.webkit.org/show_bug.cgi?id=96678
-
- The bot is fixed now
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/config.js:
- (.):
-
-2012-10-09 Zan Dobersek <zandobersek@gmail.com>
-
- XvfbDriver unit test is flaky on Linux builders
- https://bugs.webkit.org/show_bug.cgi?id=98346
-
- Reviewed by Adam Barth.
-
- Temporarily skip the XvfbDriver test case that tests
- the display number of the next free display. The test
- is flaky on Linux builders.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.disabled_test_next_free_display):
-
-2012-10-09 Ojan Vafai <ojan@chromium.org>
-
- Don't duplicated build numbers when merging flakiness dashboard JSON
- https://bugs.webkit.org/show_bug.cgi?id=98812
-
- Reviewed by Dirk Pranke.
-
- In general, build numbers are not unique, but we should basically never
- get the same build number uploaded twice in a row. This is a workaround
- for https://bugs.webkit.org/show_bug.cgi?id=97643, which frequently hits this
- because we update results_small.json and timeout updating results.json and then
- we retry the whole request.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults.merge):
- * TestResultServer/model/jsonresults_unittest.py:
- (JsonResultsTest.test_merge_duplicate_build_number):
-
-2012-10-09 Alexis Menard <alexis@webkit.org>
-
- [GTK] Shadow builds are not working anymore.
- https://bugs.webkit.org/show_bug.cgi?id=98785
-
- Reviewed by Martin Robinson.
-
- When setting WEBKITOUTPUTDIR the build was failing with a python
- error : the os.execve expect three arguments. Also the condition
- to check whether we build the GTK port with jhbuild or not was buggy
- as it was always assuming an in source build. We can use now jhbuildutils
- which has a convenient function to locate the directory where
- the dependencies built with jhbuild are and take into account WEBKITOUTPUTDIR.
- If the Dependencies path does not exist then the build was not done using
- jhbuild so we can fallback to a regular build against system libraries.
-
- * gtk/run-with-jhbuild:
-
-2012-10-08 Simon Fraser <simon.fraser@apple.com>
-
- Remove DRT/WTR implementations of layerTreeAsText
- https://bugs.webkit.org/show_bug.cgi?id=98697
-
- Reviewed by Tim Horton, James Robinson, Alexey Proskuryakov.
-
- Remove code related to layerTreeAsText(), which is now on window.internals.
-
- * DumpRenderTree/TestRunner.cpp:
- (TestRunner::staticFunctions):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- * DumpRenderTree/chromium/DRTTestRunner.cpp:
- (DRTTestRunner::DRTTestRunner):
- * DumpRenderTree/chromium/DRTTestRunner.h:
- (DRTTestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- * DumpRenderTree/mac/TestRunnerMac.mm:
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- * DumpRenderTree/qt/TestRunnerQt.h:
- (TestRunner):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
-
-2012-10-09 Zoltan Horvath <zoltan@webkit.org>
-
- Unreviewed. Remove myself from QtWebKit2 subscriptions.
-
- * Scripts/webkitpy/common/config/watchlist:
-
-2012-10-09 Harald Alvestrand <hta@google.com>
-
- Change PeerConnection getStats function to single value local / remote
- elements in RTCStatsReport.
- https://bugs.webkit.org/show_bug.cgi?id=98753
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2012-10-09 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Make sure events are transformed correctly for plugins.
- https://bugs.webkit.org/show_bug.cgi?id=89250
-
- Reviewed by Tony Chang.
-
- Update the test plugin to print event details for mouse and gesture events.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (printEventDetails):
-
-2012-10-09 Simon Hausmann <simon.hausmann@digia.com>
-
- Unreviewed trivial Qt build fix: Remove stray closing braces from r130758.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-10-09 Simon Hausmann <simon.hausmann@digia.com>
-
- [Qt] Clean up Qt module detection
-
- Reviewed by Tor Arne Vestbø.
-
- Replace the use of MOBILITY_CONFIG (not supported anymore) with modern use of haveQtModule.
-
- * qmake/mkspecs/features/features.prf:
-
-2012-10-09 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [GTK] Respect WEBKITOUTPUTDIR in run-with-jhbuild.
- https://bugs.webkit.org/show_bug.cgi?id=98732
-
- Reviewed by Gustavo Noronha Silva.
-
- Follow-up to r113066: if the WEBKITOUTPUTDIR environment variable
- was used when running update-webkitgtk-libs,
- WebKitBuild/Dependencies will not exist, so we now check its
- contents first and then fall back to WebKitBuild/.
-
- * gtk/run-with-jhbuild:
-
-2012-10-09 Zan Dobersek <zandobersek@gmail.com>
-
- Unreviewed GTK gardening.
-
- Skipping the accept-policy test in TestCookieManager API test that's
- currently failing. The test failure is covered by
- https://bugs.webkit.org/show_bug.cgi?id=98738.
-
- * Scripts/run-gtk-tests:
- (TestRunner):
-
-2012-10-09 Laszlo Gombos <l.gombos@samsung.com>
-
- [Qt] Remove redundant JAVASCRIPTCORE_JIT variable
- https://bugs.webkit.org/show_bug.cgi?id=50000
-
- Reviewed by Simon Hausmann.
-
- Use ENABLE_JIT instead.
-
- * qmake/mkspecs/features/valgrind.prf:
-
-2012-10-08 Kiran Muppala <cmuppala@apple.com>
-
- Throttle DOM timers on hidden pages.
- https://bugs.webkit.org/show_bug.cgi?id=98474
-
- Reviewed by Maciej Stachowiak.
-
- Implement testRunner.setPageVisibility on mac for testing throttling
- of timers on hidden pages using DumpRenderTree.
-
- * DumpRenderTree/mac/Configurations/Base.xcconfig:
- Fix build error on mac-ews bot. Add JSC copy of ICU headers to search path.
-
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::resetPageVisibility):
- (TestRunner::setPageVisibility):
-
-2012-10-08 Dirk Pranke <dpranke@chromium.org>
-
- results.html and garden-o-matic are ignoring IMAGE failures when expected to FAIL
- https://bugs.webkit.org/show_bug.cgi?id=98706
-
- Reviewed by Ojan Vafai.
-
- FAIL is supposed to map onto Failure which is supposed to map
- onto the old [ TEXT, IMAGE_PLUS_TEXT, AUDIO ] mapping.
- results.html was including IMAGE in this and garden-o-matic was
- including CRASH and TIMEOUT as well :(.
-
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/results_unittests.js:
-
-2012-10-08 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL] Build ControlTheme only when necessary
- https://bugs.webkit.org/show_bug.cgi?id=98519
-
- Reviewed by Eric Seidel.
-
- * EWebLauncher/ControlTheme/CMakeLists.txt:
- Added custom command keyword not to build ControlTheme every time.
- In addition, removed `ALL` keyword because targets, which use ControlTheme,
- already have dependency.
-
-2012-10-08 Peter Rybin <peter.rybin@gmail.com>
-
- Do not swallow fatal messages in qt/DumpRenderTree
- https://bugs.webkit.org/show_bug.cgi?id=98211
-
- Reviewed by Eric Seidel.
-
- Fix condition in message type filtering.
-
- * DumpRenderTree/qt/DumpRenderTreeMain.cpp:
- (messageHandler):
-
-2012-10-08 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Unreviewed. Moving myself from Committer to Reviewer list.
- http://lists.webkit.org/pipermail/webkit-dev/2012-October/022460.html
-
- * Scripts/webkitpy/common/config/committers.py:
-
-2012-10-08 Dirk Pranke <dpranke@chromium.org>
-
- nrwt: [chromium] run http tests in parallel on bigger machines
- https://bugs.webkit.org/show_bug.cgi?id=98562
-
- Reviewed by Eric Seidel.
-
- The "locked tests" shard (which includes the http tests and the
- perf tests) is the long pole on machines where we have 4 or more
- workers, so we should start making sure that
- we can run http tests in parallel, following the normal sharding
- rules (all tests in the same directory are in the same shard by
- default). We should still probably limit the number of workers
- hitting the web server in parallel where we can; a heuristic of
- no more than 25% of them seems okay for a start. This will
- likely only affect developer workstations and a couple of bots
- at first, so should be low risk and a good reward.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.default_max_locked_shards):
- * Scripts/webkitpy/layout_tests/port/chromium.py:
- (ChromiumPort.default_max_locked_shards):
- * Scripts/webkitpy/layout_tests/port/chromium_port_testcase.py:
- (ChromiumPortTestCase.test_default_max_locked_shards):
- * Scripts/webkitpy/layout_tests/port/port_testcase.py:
- (PortTestCase.test_default_max_locked_shards):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (_set_up_derived_options):
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_max_locked_shards):
-
-2012-10-08 Zan Dobersek <zandobersek@gmail.com>
-
- GTK port should warn if bug modifier is missing in TestExpectations
- https://bugs.webkit.org/show_bug.cgi?id=98678
-
- Reviewed by Dirk Pranke.
-
- Reimplement the warn_if_bug_missing_in_test_expectations method in
- GtkPort, returning True for producing a warning in such cases.
-
- * Scripts/webkitpy/layout_tests/port/gtk.py:
- (GtkPort.warn_if_bug_missing_in_test_expectations):
-
-2012-10-08 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][DRT] Switch default backing store to single
- https://bugs.webkit.org/show_bug.cgi?id=98591
-
- Reviewed by Eric Seidel.
-
- There are two backing stores for WebKit/Efl, Single Backing Store(SBS) and
- Tiled Backing Store(TBS), and DRT/Efl has used TBS.
- But, TBS is not suitable to run pixel tests because it does not have a good way
- to render mock scrollbars well.
-
- So, this patch changes the default backing store to SBS.
- In addition, this changes the environment variable from DRT_USE_SINGLE_BACKING_STORE
- to DRT_USE_TILED_BACKING_STORE.
-
- * DumpRenderTree/efl/DumpRenderTreeView.cpp:
- (shouldUseTiledBackingStore):
- (chooseAndInitializeAppropriateSmartClass):
-
-2012-10-08 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [WK2][WTR] WebKitTestRunner needs testRunner.dispatchPendingLoadRequests
- https://bugs.webkit.org/show_bug.cgi?id=98638
-
- Reviewed by Eric Seidel.
-
- Add implementation for testRunner.dispatchPendingLoadRequests in
- WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::dispatchPendingLoadRequests):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-10-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add support for window.close in Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=98667
-
- Reviewed by Laszlo Gombos.
-
- When calling window.close() from JavaScript, MiniBrowser
- now closes the given window.
-
- * MiniBrowser/efl/main.c:
- (window_close):
- (on_ecore_evas_delete):
- (on_close_window):
- (window_create):
-
-2012-10-08 Ojan Vafai <ojan@chromium.org>
-
- Properly strip new tests from the test results json if they are pass/nodata/skip.
- https://bugs.webkit.org/show_bug.cgi?id=98669
-
- Reviewed by Eric Seidel.
-
- In _merge_json, we had a codepath that didn't call _normalize_results_json
- for tests that aren't already in the aggregated results.
- Instead, now do all the merging first and then normalize the aggregated results.
-
- * TestResultServer/model/jsonresults.py:
- (JsonResults._merge_json):
- (JsonResults._merge_tests):
- (JsonResults._normalize_results):
- (JsonResults):
- (JsonResults._should_delete_leaf):
- * TestResultServer/model/jsonresults_unittest.py:
- Removed test_merge_build_directory_hierarchy_old_version since there is
- no longer any version 3 json to support.
- (JsonResultsTest.test_merge_remove_new_test):
- (JsonResultsTest.test_merge_prune_extra_results_with_new_result_of_same_type):
-
-2012-10-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Simplify frame flattening support in MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=98657
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Simplify frame flattening support code in MiniBrowser to
- avoid passing the setting around to window_create()
- function().
-
- * MiniBrowser/efl/main.c:
- (on_key_down):
- (on_new_window):
- (window_create):
- (main):
-
-2012-10-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Use Ctrl+n shortcut to create a new window in MiniBrowser / EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=98655
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Use "Ctrl+n" shortcut instead of "F9" to open a new window in
- MiniBrowser and EWebLauncher. This is the shortcut that is
- commonly used for this action.
-
- * EWebLauncher/main.c:
- (on_key_down):
- * MiniBrowser/efl/main.c:
- (on_key_down):
-
-2012-10-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add support for window.create in Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=98649
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Calling window.create() from JavaScript now creates a
- new window in Minibrowser, as directed.
-
- * MiniBrowser/efl/main.c:
- (on_new_window):
- (window_create):
-
-2012-10-08 Andreas Kling <kling@webkit.org>
-
- Using float/double as WTF hash table key is unreliable.
- <http://webkit.org/b/98627>
-
- Reviewed by Geoffrey Garen.
-
- Add a test case checking that using double as the hash table key type won't
- have problems distinguishing between keys that are considered equal by operator==
- but have different binary representations.
-
- * TestWebKitAPI/Tests/WTF/HashMap.cpp:
- (TestDoubleHashTraits):
-
-2012-10-08 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Use URL instead of URI in the API
- https://bugs.webkit.org/show_bug.cgi?id=98643
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Update Minibrowser to reflect API changes. We now
- use URL instead of URI in WK2 EFL API.
-
- * EWebLauncher/url_bar.c:
- (on_urlbar_key_down):
- * MiniBrowser/efl/CMakeLists.txt:
- * MiniBrowser/efl/main.c:
- (on_url_changed):
- (window_create):
-
-2012-10-08 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Reenable plugin tests
- https://bugs.webkit.org/show_bug.cgi?id=98528
-
- Reviewed by Csaba Osztrogonác.
-
- Uncomment this function so we can pick up the test plugin.
- It was commented out because of https://bugs.webkit.org/show_bug.cgi?id=86620
- and that bug seems to be fixed now.
-
- * WebKitTestRunner/qt/TestControllerQt.cpp:
- (WTR::TestController::initializeTestPluginDirectory):
-
-2012-10-08 Jinwoo Song <jinwoo7.song@samsung.com>
-
- [EFL][WK2] Support multiple window creation for MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=97884
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement the multiple window creation for MiniBrowser and bind the 'F9' key for opening a new window.
- Also, refactored MiniBrowser codes according to EFL coding style.
-
- * MiniBrowser/efl/main.c:
- (_Browser_Window):
- (window_free):
- (main_signal_exit):
- (on_ecore_evas_delete):
- (on_ecore_evas_resize):
- (on_key_down):
- (on_title_changed):
- (on_url_changed):
- (on_progress):
- (window_create):
- (main):
-
-2012-10-07 Seokju Kwon <seokju.kwon@samsung.com>
-
- [EFL] Add Web Inspector to EWebLauncher
- https://bugs.webkit.org/show_bug.cgi?id=91718
-
- Reviewed by Gyuyoung Kim.
-
- Implementation of Web Inspector in EWebLauncher.
- The Web Inspector can be opened or closed by pressing ctrl+i on web page.
-
- * EWebLauncher/main.c:
- (on_browser_ecore_evas_resize):
- (on_web_inspector_ecore_evas_resize):
- (on_key_down):
- (on_web_inspector_view_create):
- (on_web_inspector_view_close):
- (on_web_inspector_view_destroyed):
- (browserCreate):
- (webInspectorCreate):
- (windowCreate):
- (closeWindow):
- (main_signal_exit):
- (parseUserArguments):
-
-2012-10-07 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
-
- Rename first/second to key/value in HashMap iterators
- https://bugs.webkit.org/show_bug.cgi?id=82784
-
- Reviewed by Eric Seidel.
-
- * DumpRenderTree/chromium/MockWebSpeechInputController.cpp:
- (MockWebSpeechInputController::addMockRecognitionResult):
- * DumpRenderTree/chromium/NotificationPresenter.cpp:
- (NotificationPresenter::simulateClick):
- (NotificationPresenter::show):
- * DumpRenderTree/chromium/TestRunner/CppBoundClass.cpp:
- (CppBoundClass::~CppBoundClass):
- (CppBoundClass::invoke):
- (CppBoundClass::getProperty):
- (CppBoundClass::setProperty):
- (CppBoundClass::bindCallback):
- (CppBoundClass::bindProperty):
- * DumpRenderTree/chromium/WebPreferences.cpp:
- (applyFontMap):
- * DumpRenderTree/chromium/WebViewHost.cpp:
- (WebViewHost::printResourceDescription):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * DumpRenderTree/win/AccessibilityControllerWin.cpp:
- (AccessibilityController::~AccessibilityController):
- (AccessibilityController::winNotificationReceived):
- * DumpRenderTree/win/ResourceLoadDelegate.cpp:
- (ResourceLoadDelegate::descriptionSuitableForTestResult):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (worldIDForWorld):
- (TestRunner::evaluateScriptInIsolatedWorld):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionBasic::willDestroyPage):
- * TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp:
- (TestWebKitAPI::DOMWindowExtensionNoCache::willDestroyPage):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::worldIDForWorld):
- (WTR::TestRunner::evaluateScriptInIsolatedWorld):
-
-2012-10-07 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Unreviewed, rolling out r130596.
- http://trac.webkit.org/changeset/130596
- https://bugs.webkit.org/show_bug.cgi?id=98616
-
- Broke build bots without IPV6 support
-
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_cygwin):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_version_dir):
- (Port.to.start_websocket_server):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_operating_system):
- (PortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd):
- (LayoutTestApacheHttpd.__init__):
-
-2012-10-07 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- webkitpy: Pass the `Listen' Apache directive from Apache, not the httpd.conf files.
- https://bugs.webkit.org/show_bug.cgi?id=98602
-
- Reviewed by Eric Seidel.
-
- Unify all the different `Listen' directives present in the several
- httpd.conf files we have in LayoutTests/http/conf. For one, we
- were already passing `Listen 127.0.0.1:8000' via webkitpy before,
- and opening the other ports from the conf files.
-
- The configuration files differed mostly in the way they handled
- IPV6 ports. Some of them did not listen to IPV6 ports because the
- systems which used them sometimes did not have IPV6 support. The
- `http_server_supports_ipv6' method has been added to Port to
- address that. cygwin, on its turn, still seems to use Apache 1.3,
- which does not support IPV6 at all; the newly-added method has a
- special case for that.
-
- * Scripts/webkitpy/common/system/platforminfo_mock.py:
- (MockPlatformInfo.is_cygwin):
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.baseline_version_dir):
- (Port.to.start_websocket_server):
- (Port.to):
- (Port.to.http_server_supports_ipv6):
- * Scripts/webkitpy/layout_tests/port/base_unittest.py:
- (PortTest.test_http_server_supports_ipv6):
- (PortTest.test_build_path):
- * Scripts/webkitpy/layout_tests/servers/apache_http_server.py:
- (LayoutTestApacheHttpd):
- (LayoutTestApacheHttpd.__init__):
-
-2012-10-05 Simon Fraser <simon.fraser@apple.com>
-
- Attempt to fix the SnowLeopard build to making the implementation of
- -isPaginated come before its use.
-
- * MiniBrowser/mac/WK1BrowserWindowController.m:
- (-[WK1BrowserWindowController reload:]):
- (-[WK1BrowserWindowController forceRepaint:]):
- (-[WK1BrowserWindowController goBack:]):
- (-[WK1BrowserWindowController goForward:]):
- (-[WK1BrowserWindowController isPaginated]):
-
-2012-10-05 Simon Fraser <simon.fraser@apple.com>
-
- Provide a way to run WebKit1
- https://bugs.webkit.org/show_bug.cgi?id=98568
-
- Reviewed by Tim Horton.
-
- Make it possible to create both WebKit1 and WebKit2 windows in MiniBrowser.
-
- Turn BrowserWindowController into a base class; subclassed by
- WK1BrowserWindowController and WK2BrowserWindowController, each of
- which implement the BrowserController protocol.
-
- Use Command-N to get a WebKit1 window, and Command-Option-N to
- get a WK2 window. Also add "Open Location" to focus the URL bar,
- and code to add an http:// if missing.
-
- Hook up window title callbacks; append " [WK1/2]" to window title
- as appropriate.
-
- * MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj:
- * MiniBrowser/mac/AppDelegate.m:
- (-[BrowserAppDelegate newWindow:]):
- (-[BrowserAppDelegate openPanelDidEnd:returnCode:contextInfo:]):
- * MiniBrowser/mac/BrowserWindowController.h:
- * MiniBrowser/mac/BrowserWindowController.m:
- (-[BrowserWindowController initWithWindow:]):
- (-[BrowserWindowController windowDidLoad]):
- (-[BrowserWindowController openLocation:]):
- (-[BrowserWindowController loadURLString:]):
- (-[BrowserWindowController applicationTerminating]):
- (-[BrowserWindowController addProtocolIfNecessary:]):
- * MiniBrowser/mac/MainMenu.xib:
- * MiniBrowser/mac/WK1BrowserWindowController.h: Copied from Tools/MiniBrowser/mac/BrowserWindowController.h.
- (WebView):
- * MiniBrowser/mac/WK1BrowserWindowController.m: Added.
- (-[WK1BrowserWindowController awakeFromNib]):
- (-[WK1BrowserWindowController dealloc]):
- (-[WK1BrowserWindowController loadURLString:]):
- (-[WK1BrowserWindowController fetch:]):
- (-[WK1BrowserWindowController showHideWebView:]):
- (-[WK1BrowserWindowController removeReinsertWebView:]):
- (-[WK1BrowserWindowController validateMenuItem:]):
- (-[WK1BrowserWindowController reload:]):
- (-[WK1BrowserWindowController forceRepaint:]):
- (-[WK1BrowserWindowController goBack:]):
- (-[WK1BrowserWindowController goForward:]):
- (-[WK1BrowserWindowController validateUserInterfaceItem:]):
- (-[WK1BrowserWindowController validateToolbar]):
- (-[WK1BrowserWindowController windowShouldClose:]):
- (-[WK1BrowserWindowController windowWillClose:]):
- (-[WK1BrowserWindowController applicationTerminating]):
- (-[WK1BrowserWindowController currentZoomFactor]):
- (-[WK1BrowserWindowController canZoomIn]):
- (-[WK1BrowserWindowController zoomIn:]):
- (-[WK1BrowserWindowController canZoomOut]):
- (-[WK1BrowserWindowController zoomOut:]):
- (-[WK1BrowserWindowController canResetZoom]):
- (-[WK1BrowserWindowController resetZoom:]):
- (-[WK1BrowserWindowController toggleZoomMode:]):
- (-[WK1BrowserWindowController isPaginated]):
- (-[WK1BrowserWindowController togglePaginationMode:]):
- (-[WK1BrowserWindowController find:]):
- (-[WK1BrowserWindowController dumpSourceToConsole:]):
- (-[WK1BrowserWindowController webView:didStartProvisionalLoadForFrame:]):
- (-[WK1BrowserWindowController webView:didReceiveTitle:forFrame:]):
- * MiniBrowser/mac/WK2BrowserWindowController.h: Copied from Tools/MiniBrowser/mac/BrowserWindowController.h.
- * MiniBrowser/mac/WK2BrowserWindowController.m: Copied from Tools/MiniBrowser/mac/BrowserWindowController.m.
- (-[WK2BrowserWindowController initWithContext:pageGroup:]):
- (-[WK2BrowserWindowController dealloc]):
- (-[WK2BrowserWindowController fetch:]):
- (-[WK2BrowserWindowController showHideWebView:]):
- (-[WK2BrowserWindowController removeReinsertWebView:]):
- (-[WK2BrowserWindowController validateMenuItem:]):
- (-[WK2BrowserWindowController reload:]):
- (-[WK2BrowserWindowController forceRepaint:]):
- (-[WK2BrowserWindowController goBack:]):
- (-[WK2BrowserWindowController goForward:]):
- (-[WK2BrowserWindowController validateUserInterfaceItem:]):
- (-[WK2BrowserWindowController validateToolbar]):
- (-[WK2BrowserWindowController windowShouldClose:]):
- (-[WK2BrowserWindowController windowWillClose:]):
- (-[WK2BrowserWindowController applicationTerminating]):
- (-[WK2BrowserWindowController currentZoomFactor]):
- (-[WK2BrowserWindowController setCurrentZoomFactor:]):
- (-[WK2BrowserWindowController canZoomIn]):
- (-[WK2BrowserWindowController zoomIn:]):
- (-[WK2BrowserWindowController canZoomOut]):
- (-[WK2BrowserWindowController zoomOut:]):
- (-[WK2BrowserWindowController canResetZoom]):
- (-[WK2BrowserWindowController resetZoom:]):
- (-[WK2BrowserWindowController toggleZoomMode:]):
- (-[WK2BrowserWindowController isPaginated]):
- (-[WK2BrowserWindowController togglePaginationMode:]):
- (-[WK2BrowserWindowController dumpSourceToConsole:]):
- (didStartProvisionalLoadForFrame):
- (didReceiveServerRedirectForProvisionalLoadForFrame):
- (didFailProvisionalLoadWithErrorForFrame):
- (didCommitLoadForFrame):
- (didFinishDocumentLoadForFrame):
- (didFinishLoadForFrame):
- (didFailLoadWithErrorForFrame):
- (didSameDocumentNavigationForFrame):
- (didReceiveTitleForFrame):
- (didFirstLayoutForFrame):
- (didFirstVisuallyNonEmptyLayoutForFrame):
- (didRemoveFrameFromHierarchy):
- (didDisplayInsecureContentForFrame):
- (didRunInsecureContentForFrame):
- (didDetectXSSForFrame):
- (didStartProgress):
- (didChangeProgress):
- (didFinishProgress):
- (didBecomeUnresponsive):
- (didBecomeResponsive):
- (processDidExit):
- (didChangeBackForwardList):
- (decidePolicyForNavigationAction):
- (decidePolicyForNewWindowAction):
- (decidePolicyForResponse):
- (createNewPage):
- (showPage):
- (closePage):
- (runJavaScriptAlert):
- (runJavaScriptConfirm):
- (runJavaScriptPrompt):
- (setStatusText):
- (mouseDidMoveOverElement):
- (getWindowFrame):
- (setWindowFrame):
- (runBeforeUnloadConfirmPanel):
- (runOpenPanel):
- (-[WK2BrowserWindowController awakeFromNib]):
- (-[WK2BrowserWindowController didStartProgress]):
- (-[WK2BrowserWindowController didChangeProgress:]):
- (-[WK2BrowserWindowController didFinishProgress]):
- (-[WK2BrowserWindowController updateProvisionalURLForFrame:]):
- (-[WK2BrowserWindowController didStartProvisionalLoadForFrame:]):
- (-[WK2BrowserWindowController didReceiveServerRedirectForProvisionalLoadForFrame:]):
- (-[WK2BrowserWindowController didFailProvisionalLoadWithErrorForFrame:]):
- (-[WK2BrowserWindowController didFailLoadWithErrorForFrame:]):
- (-[WK2BrowserWindowController didSameDocumentNavigationForFrame:]):
- (-[WK2BrowserWindowController didCommitLoadForFrame:]):
- (-[WK2BrowserWindowController loadURLString:]):
- (-[WK2BrowserWindowController performFindPanelAction:]):
- (-[WK2BrowserWindowController find:]):
-
-2012-10-05 Sudarsana Nagineni <sudarsana.nagineni@intel.com>
-
- [WK2][WTR] WebKitTestRunner needs testRunner.setSerializeHTTPLoads
- https://bugs.webkit.org/show_bug.cgi?id=98524
-
- Reviewed by Alexey Proskuryakov.
-
- Add implementation for testRunner.setSerializeHTTPLoads in
- WebKitTestRunner.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setSerializeHTTPLoads):
- (WTR):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
-
-2012-10-05 Richard Larocque <rlarocque@chromium.org>
-
- TestResultsServer does not display sync_integration_tests results
- https://bugs.webkit.org/show_bug.cgi?id=98551
-
- Reviewed by Ojan Vafai.
-
- Allow builders whose name contains "Sync" to pass through the
- isChromiumWebkitDepsTestRunner filter.
-
- The test expectations in flakiness_dashboard_unittests.js have been
- updated to match the new behaviour.
-
- * TestResultServer/static-dashboards/builders.js:
- (isChromiumDepsGTestRunner):
-
-2012-10-05 Roger Fong <roger_fong@apple.com>
-
- Tests in webkitpy involving child processes are flaky.
- Skipping run_webkit_tests_integrationtest.py.
- https://bugs.webkit.org/show_bug.cgi?id=98559
-
- Reviewed by Dirk Pranke.
-
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_verbose_in_child_processes):
-
-2012-10-05 Zan Dobersek <zandobersek@gmail.com>
-
- [Gtk] fast/xsl/xslt-missing-namespace-in-xslt.xml is failing on the 64-bit Debug builder
- https://bugs.webkit.org/show_bug.cgi?id=91009
-
- Reviewed by Martin Robinson.
-
- Include libxml2 into the jhbuild module. Version 2.8.0 introduces
- a more correct (but not completely correct) behavior in the
- fast/xsl/xslt-missing-namespace-in-xslt.html test.
-
- * gtk/jhbuild.modules:
-
-2012-10-05 Rob Buis <rbuis@rim.com>
-
- [BlackBerry] Implement TestRunner.setMockDeviceOrientation
- https://bugs.webkit.org/show_bug.cgi?id=98542
-
- Reviewed by Antonio Gomes.
-
- PR 120681
-
- This fixes tests in fast/dom/DeviceOrientation.
-
- * DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp:
- (TestRunner::setMockDeviceOrientation):
-
-2012-10-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] Implement UIClient focus callbacks in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=98256
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement UIClient's focus callbacks for the main page in
- WebKitTestRunner.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::focus):
- (WTR::TestController::initialize):
-
-2012-10-05 Mark Hahnenberg <mhahnenberg@apple.com>
-
- JSC should have a way to gather and log Heap memory use and pause times
- https://bugs.webkit.org/show_bug.cgi?id=98431
-
- Reviewed by Geoffrey Garen.
-
- * DumpRenderTree/mac/DumpRenderTree.mm:
- (main): Added a check as to whether we should dump our JSC Heap statistics on exit.
-
-2012-10-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Fix mktemp() compilation warning in Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=98493
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Fix wrong mktemp usage causing a compilation warning
- in MiniBrowser.
-
- * MiniBrowser/efl/main.c:
- (on_download_request):
-
-2012-10-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] Avoid duplication of UIClient callbacks for main page and other pages
- https://bugs.webkit.org/show_bug.cgi?id=98503
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Avoid the need for duplicating UIClient callbacks for main page
- and other pages by passing the view as clientInfo
- for those callbacks.
-
- Previously, callbacks for the main page were passed the
- TestController as clientInfo while the callbacks for other pages
- were passed the PlatformWebView as clientInfo. This was error prone
- and leads to useless code duplication.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::getWindowFrame):
- (WTR::setWindowFrame):
- (WTR::runBeforeUnloadConfirmPanel):
- (WTR::TestController::createOtherPage):
- (WTR::TestController::initialize):
- (WTR::TestController::decidePolicyForNotificationPermissionRequest):
-
-2012-10-05 Sadrul Habib Chowdhury <sadrul@chromium.org>
-
- [chromium] Allow dragging into plugins.
- https://bugs.webkit.org/show_bug.cgi?id=98277
-
- Reviewed by Tony Chang.
-
- Update the TestWebPlugin to receive drag events and print them out.
-
- * DumpRenderTree/chromium/TestWebPlugin.cpp:
- (TestWebPlugin::handleDragStatusUpdate):
- * DumpRenderTree/chromium/TestWebPlugin.h:
- (TestWebPlugin):
-
-2012-10-05 Jongseok Yang <js45.yang@samsung.com>
-
- [EFL][WK2] Remove "web" word from ewk_web_error APIs
- https://bugs.webkit.org/show_bug.cgi?id=97886
-
- Reviewed by Gyuyoung Kim.
-
- Remove "web" word from ewk_web_error APIs.
- "web" word was redundant because "ewk" means "EFL WebKit" and WK APIs for error does not have "web" word.
-
- * MiniBrowser/efl/main.c:
- (on_error):
-
-2012-10-05 Csaba Osztrogonác <ossy@webkit.org>
-
- [Qt] Enable CSS compositing by default
- https://bugs.webkit.org/show_bug.cgi?id=98490
-
- Reviewed by Simon Hausmann.
-
- * qmake/mkspecs/features/features.pri:
-
-2012-10-05 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r130466.
- http://trac.webkit.org/changeset/130466
- https://bugs.webkit.org/show_bug.cgi?id=98495
-
- It made 12 tests crash on Qt-WK2 (Requested by Ossy on
- #webkit).
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::focus):
- (WTR::TestController::initialize):
-
-2012-10-05 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Fix window resizing / moving in WK1 and WKTR
- https://bugs.webkit.org/show_bug.cgi?id=98486
-
- Reviewed by Gyuyoung Kim.
-
- Fix PlatformWebView::windowFrame() and
- PlatformWebView::setWindowFrame() in EFL's WKTR so
- that it resizes / moves the window, not the view.
-
- The new code matches the implementation in EwkView's
- UIClient.
-
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::PlatformWebView::windowFrame):
- (WTR::PlatformWebView::setWindowFrame):
-
-2012-10-04 KyungTae Kim <ktf.kim@samsung.com>
-
- [EFL][WK2] Fix destination path when download with suggested filename on the Minibrowser
- https://bugs.webkit.org/show_bug.cgi?id=98334
-
- Reviewed by Gyuyoung Kim.
-
- Add callback functions for download requests to Minibrowser to set the destination path for download.
- Set the destination path with suggested file name as (destination folder) + (suggested file name).
- The 'destination folder' should be a specific folder user selected, but is set to '/tmp' for now.
-
- Additionally, for printing out the download status,
- use the info macro and set the verbose variable to 1 to enable it.
-
- * MiniBrowser/efl/main.c:
- (on_download_request):
- (on_download_finished):
- (on_download_failed):
- (browserCreate):
-
-2012-10-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] Implement UIClient focus callbacks in WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=98256
-
- Reviewed by Kenneth Rohde Christiansen.
-
- Implement UIClient's focus callbacks in WebKitTestRunner.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::focus):
- (WTR::TestController::initialize):
-
-2012-10-04 Rik Cabanier <cabanier@adobe.com>
-
- Turn Compositing on by default in WebKit build
- https://bugs.webkit.org/show_bug.cgi?id=98315
-
- Reviewed by Simon Fraser.
-
- enable -webkit-blend-mode on trunk.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-10-04 Ryuan Choi <ryuan.choi@samsung.com>
-
- [EFL][WK2] Add APIs to get/set the frame flattening.
- https://bugs.webkit.org/show_bug.cgi?id=95982
-
- Reviewed by Gyuyoung Kim.
-
- * MiniBrowser/efl/main.c: Added frame flattening option to test.
- (browserCreate):
- (main):
-
-2012-10-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Add libxml 2.8.0 to jhbuild
- https://bugs.webkit.org/show_bug.cgi?id=98418
-
- Reviewed by Laszlo Gombos.
-
- Add libxml 2.8.0 to EFL's jhbuild for consistency.
-
- * efl/jhbuild.modules:
-
-2012-10-03 Benjamin Poulain <bpoulain@apple.com>
-
- [WK2] Support all attributes of GeolocationPosition
- https://bugs.webkit.org/show_bug.cgi?id=98212
-
- Reviewed by Sam Weinig.
-
- Expand WebKitTestRunner and DumpRenderTree to test all the attributes
- of GeolocationPosition.
-
- * DumpRenderTree/TestRunner.cpp:
- (setMockGeolocationPositionCallback):
- * DumpRenderTree/TestRunner.h:
- (TestRunner):
- * DumpRenderTree/efl/TestRunnerEfl.cpp:
- (TestRunner::setMockGeolocationPosition):
- * DumpRenderTree/gtk/TestRunnerGtk.cpp:
- (TestRunner::setMockGeolocationPosition):
- * DumpRenderTree/mac/TestRunnerMac.mm:
- (TestRunner::setMockGeolocationPosition):
- * DumpRenderTree/win/TestRunnerWin.cpp:
- (TestRunner::setMockGeolocationPosition):
- * DumpRenderTree/wx/TestRunnerWx.cpp:
- (TestRunner::setMockGeolocationPosition):
- * WebKitTestRunner/GeolocationProviderMock.cpp:
- (WTR::GeolocationProviderMock::setPosition):
- * WebKitTestRunner/GeolocationProviderMock.h:
- (GeolocationProviderMock):
- * WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm:
- (_platformTypeVariableDeclaration):
- Use a proper constructor for the JSValueRef, it is an opaque type, we are not supposed
- to build the pointer outself.
- This is necessary to support optional JSValueRef properly.
-
- * WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl:
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::setMockGeolocationPosition):
- * WebKitTestRunner/InjectedBundle/InjectedBundle.h:
- (InjectedBundle):
- * WebKitTestRunner/InjectedBundle/TestRunner.cpp:
- (WTR::TestRunner::setMockGeolocationPosition):
- * WebKitTestRunner/InjectedBundle/TestRunner.h:
- (TestRunner):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::setMockGeolocationPosition):
- * WebKitTestRunner/TestController.h:
- (TestController):
- * WebKitTestRunner/TestInvocation.cpp:
- (WTR::TestInvocation::didReceiveMessageFromInjectedBundle):
-
-2012-10-04 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Make the Xvfb driver recognize `X' as a valid X server binary.
- https://bugs.webkit.org/show_bug.cgi?id=98434
-
- Reviewed by Dirk Pranke.
-
- The X server binary can also be called `X', so account for that
- possibility in the _next_free_display regexp.
-
- Additionally, make the regular expression require at least one
- space character after the `ps comm' part.
-
- * Scripts/webkitpy/layout_tests/port/xvfbdriver.py:
- (XvfbDriver._next_free_display):
- * Scripts/webkitpy/layout_tests/port/xvfbdriver_unittest.py:
- (XvfbDriverTest.test_next_free_display):
-
-2012-10-04 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- webkitpy: Accept WEBKITOUTPUTDIR in Port._setup_environ_for_server.
- https://bugs.webkit.org/show_bug.cgi?id=98436
-
- Reviewed by Dirk Pranke.
-
- The Xvfb driver (ab)uses Port._setup_environ_for_server() to set
- the environment for the server process, and the WEBKITOUTPUTDIR
- environment variable was not being passed through, causing the
- build directory to be wrongfully set to WebKitBuild/ all the time.
-
- * Scripts/webkitpy/layout_tests/port/base.py:
- (Port.to.setup_environ_for_server):
-
-2012-10-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL][WK2] Add setting to allow file access from file:// URLs
- https://bugs.webkit.org/show_bug.cgi?id=98121
-
- Reviewed by Laszlo Gombos.
-
- Allow file access from file:// URLs by default in Minibrowser
- to facilitate testing.
-
- * MiniBrowser/efl/main.c:
- (browserCreate):
-
-2012-10-04 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Run unit tests with Xvfb
- https://bugs.webkit.org/show_bug.cgi?id=98389
-
- Reviewed by Laszlo Gombos.
-
- Run EFL unit tests with Xvfb, similarly to GTK port.
-
- * Scripts/run-efl-tests:
-
-2012-10-04 Adrian Perez de Castro <aperez@igalia.com>
-
- [GTK] Enable inspector by default in GtkLauncher/MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=98333
-
- Reviewed by Xan Lopez.
-
- Both MiniBrowser and GtkLauncher are tools for testing, so in
- the end every time we want to test the inspector we have to
- manually enable enable the “developer extras” setting when using
- them. It make sense to have this setting enabled by default.
-
- * GtkLauncher/main.c:
- (main):
- * MiniBrowser/gtk/main.c:
- (main):
-
-2012-10-04 Harald Alvestrand <hta@google.com>
-
- Change RTCPeerConnection GetStats to use Date timestamp format
- https://bugs.webkit.org/show_bug.cgi?id=98263
-
- Reviewed by Yury Semikhatsky.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2012-10-04 Dirk Pranke <dpranke@chromium.org>
-
- [NRWT] --skipped option is ignored when --test-list is used
- https://bugs.webkit.org/show_bug.cgi?id=98260
-
- Reviewed by Ojan Vafai.
-
- Adds a --skipped=always flag that will skip any tests listed in
- TestExpectations even if they're listed explicitly on the
- command line.
-
- This is most useful if you are using --test-list to specify a
- long list of files but you still want to skip some of them
- depending on what's in TestExpectations.
-
- * Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py:
- (LayoutTestFinder.skip_tests):
- * Scripts/webkitpy/layout_tests/run_webkit_tests.py:
- (parse_args):
- * Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:
- (MainTest.test_skipped_flag):
-
-2012-10-04 Sheriff Bot <webkit.review.bot@gmail.com>
-
- Unreviewed, rolling out r130377.
- http://trac.webkit.org/changeset/130377
- https://bugs.webkit.org/show_bug.cgi?id=98392
-
- Chromium Win compilation is broken (Requested by yurys on
- #webkit).
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2012-10-04 Harald Alvestrand <hta@google.com>
-
- Change RTCPeerConnection GetStats to use Date timestamp format
- https://bugs.webkit.org/show_bug.cgi?id=98263
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (MockWebRTCPeerConnectionHandler::getStats):
-
-2012-10-04 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- Unreviewed, remove unused $legacyWebKitBlobBuilderSupport variable after r130343.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-10-03 Philip Rogers <pdr@google.com>
-
- Force GC between PageLoad tests.
- https://bugs.webkit.org/show_bug.cgi?id=98203
-
- Reviewed by Ryosuke Niwa.
-
- Previously, our PageLoad PerfTests had multi-modal distributions,
- typically with a small cluster at 1-2x the median. This turned out
- to be caused by not garbage collecting between tests!
-
- This patch adds a new file, force-gc.html, and loads this file between
- PageLoad tests to force a GC. I manually verified that this cleans up
- our perf test outliers.
-
- * Scripts/webkitpy/performance_tests/perftest.py:
- (PageLoadingPerfTest.__init__):
- (PageLoadingPerfTest):
- (PageLoadingPerfTest.run_single):
-
- This function now loads two pages: one to force a gc and
- then the test to run.
-
- * Scripts/webkitpy/performance_tests/perftest_unittest.py:
-
- Modified several existing tests to show that the force-gc file
- is loaded.
-
- (MockPort):
- (MockPort.__init__):
- (MockPort.perf_tests_dir):
- (TestPageLoadingPerfTest.MockDriver.__init__):
- (TestPageLoadingPerfTest.MockDriver.run_test):
- (TestPageLoadingPerfTest.test_run):
- (TestPageLoadingPerfTest.test_run_with_bad_output):
- (TestReplayPerfTest.ReplayTestPort):
- (TestReplayPerfTest.ReplayTestPort.__init__):
- (TestReplayPerfTest.test_run_single.run_test):
- (TestReplayPerfTest.test_run_single):
- (TestReplayPerfTest.test_run_single_fails_when_output_has_error):
- (TestPerfTestFactory.test_regular_test):
- (TestPerfTestFactory.test_inspector_test):
- (TestPerfTestFactory.test_page_loading_test):
-
-2012-10-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [EFL] Enable use of X11 in DumpRenderTree / WebKitTestRunner
- https://bugs.webkit.org/show_bug.cgi?id=98231
-
- Reviewed by Gyuyoung Kim.
-
- Enable use of X11 in DumpRenderTree / WebKitTestRunner.
- Call ecore_evas_new() instead of ecore_evas_buffer_new()
- in EFL's DumpRenderTree and WebKitTestRunner.
- It is safe to do this now that we are using XvfbDriver
- for the layout tests.
-
- * DumpRenderTree/efl/DumpRenderTree.cpp:
- (parseCommandLineOptions):
- (initEcoreEvas):
- * WebKitTestRunner/efl/PlatformWebViewEfl.cpp:
- (WTR::initEcoreEvas):
- * WebKitTestRunner/efl/main.cpp:
- (main):
-
-2012-10-03 Dirk Pranke <dpranke@chromium.org>
-
- run-webkit-tests tests on win32 after r127302
- https://bugs.webkit.org/show_bug.cgi?id=98323
-
- Reviewed by Eric Seidel.
-
- run-webkit-tests tests on win32 after r127302
- https://bugs.webkit.org/show_bug.cgi?id=98323
-
- Reviewed by Eric Seidel.
-
- Looks like when we converted the json-building logic to use scm
- to try and get the svn revision, we missed a win32-ism and
- didn't check to make sure had initialized the scm subsystem.
-
- This change fixes that and renames _initialize_scm to be a public method.
-
- * Scripts/webkitpy/common/host.py:
- (Host.initialize_scm):
- * Scripts/webkitpy/common/host_mock.py:
- (MockHost.__init__):
- (MockHost.initialize_scm):
- * Scripts/webkitpy/layout_tests/controllers/manager.py:
- (summarize_results):
- * Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:
- (JSONResultsGeneratorBase.get_json):
- (JSONResultsGeneratorBase._get_result_char):
- (JSONResultsGeneratorBase._get_svn_revision):
- * Scripts/webkitpy/performance_tests/perftestsrunner.py:
- (PerfTestsRunner.__init__):
- * Scripts/webkitpy/style/checkers/test_expectations.py:
- (TestExpectationsChecker.__init__):
- * Scripts/webkitpy/style/main.py:
- (CheckWebKitStyle.main):
- * Scripts/webkitpy/tool/main.py:
- (WebKitPatch.handle_global_options):
- * Scripts/webkitpy/tool/servers/rebaselineserver.py:
- (get_test_baselines):
-
-2012-10-03 Adrian Perez de Castro <aperez@igalia.com>
-
- [GTK] Make inspector directly useable in GtkLauncher/MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=98310
-
- Reviewed by Martin Robinson.
-
- Make MiniBrowser/GtkLauncher define the path to the inspector
- resources by setting the WEBKIT_INSPECTOR_PATH environment
- variable pointing to the copy of the inspector resources in
- the build directory. If the environment variable is already
- defined, its value is not overwritten. The path is derived
- from the WEBKIT_EXEC_PATH macro defined in the makefiles.
-
- * GNUmakefile.am:
- * GtkLauncher/main.c:
- (main):
- * MiniBrowser/gtk/main.c:
- (main):
-
-2012-10-03 Benjamin Poulain <bpoulain@apple.com>
-
- Fix Geolocation/window-close-crash.html and harden WebKitTestRunner for Geolocation
- https://bugs.webkit.org/show_bug.cgi?id=97608
-
- Reviewed by Sam Weinig.
-
- The test fast/dom/Geolocation/window-close-crash.html was crashing because
- handleGeolocationPermissionRequest() was executed on the wrong pointer. Depending on how
- the page was created, the void* clientInfo can either be a PlatformWebView or
- a TestController.
-
- Using the global TestController fixes the issue.
-
- * WebKitTestRunner/GeolocationProviderMock.cpp:
- (WTR::GeolocationProviderMock::setPosition):
- (WTR::GeolocationProviderMock::setPositionUnavailableError):
- To be reliable, the test fast/dom/Geolocation/maximum-age.html needs the setting the position
- to clear the error and vice versa.
- This is the same behavior as GeolocationClientMock and MockGeolocationProvider of WebKit1.
-
- (WTR::GeolocationProviderMock::sendPositionIfNeeded):
- (WTR::GeolocationProviderMock::sendErrorIfNeeded):
- Some tests expect the position/error cant be sent multiple time,
- just keep the position after sending.
-
- * WebKitTestRunner/TestController.cpp:
- (WTR::decidePolicyForGeolocationPermissionRequest):
- (WTR::TestController::decidePolicyForGeolocationPermissionRequestIfPossible):
- * WebKitTestRunner/TestController.h:
- Let's play as if we did not know what is in GeolocationPermissionRequestManagerProxy like a real
- client would have to do.
-
-2012-10-03 Otto Derek Cheung <otcheung@rim.com>
-
- [BlackBerry] Implementing the NetworkInfo API for BB port
- https://bugs.webkit.org/show_bug.cgi?id=98273
-
- Reviewed by Rob Buis.
-
- Enabling NetworkInfo API for the BlackBerry port.
-
- * Scripts/webkitperl/FeatureList.pm:
-
-2012-10-03 Anders Carlsson <andersca@apple.com>
-
- Exception thrown when running accessibility/container-node-delete-causes-crash.html test
- https://bugs.webkit.org/show_bug.cgi?id=98291
-
- Reviewed by Andreas Kling.
-
- The accessibility/container-node-delete-causes-crash.html test will cause a full accessibility tree
- to be created by trying to look up an element with a non-existent ID. This caused an exception to be thrown
- when trying to access the children of an element that didn't have any children. Fix this by adding
- BEGIN_AX_OBJC_EXCEPTIONS/END_AX_OBJC_EXCEPTIONS around the call to get the children.
-
- * DumpRenderTree/mac/AccessibilityControllerMac.mm:
- (findAccessibleObjectById):
-
-2012-10-03 Ojan Vafai <ojan@chromium.org>
-
- Make partytime work when loading garden-o-matic from trac.webkit.org
- https://bugs.webkit.org/show_bug.cgi?id=98283
-
- Reviewed by Adam Barth.
-
- CSP was blocking the reqest for partytime.gif because 'self' wasn't on the img-src directive.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/garden-o-matic.html:
-
-2012-10-03 Roger Fong <roger_fong@apple.com>
-
- Unreviewed. Adding sys.platform check to skip a failing assert on the Apple Windows platform.
- https://bugs.webkit.org/show_bug.cgi?id=98288
-
- * Scripts/webkitpy/layout_tests/port/chromium_android_unittest.py:
- (ChromiumAndroidDriverTest.test_command_from_driver_input):
-
-2012-10-03 Ojan Vafai <ojan@chromium.org>
-
- Get rid of warning about non-existant platform name when loading garden-o-matic
- https://bugs.webkit.org/show_bug.cgi?id=98282
-
- Reviewed by Adam Barth.
-
- If you loaded without a platform query parameter we'd return "null" as the platform name
- instead of null.
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base.js:
- * BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/scripts/base_unittests.js:
-
-2012-10-03 Balazs Kelemen <kbalazs@webkit.org>
-
- [Qt] Enable mock scrollbars
- https://bugs.webkit.org/show_bug.cgi?id=98011
-
- Reviewed by Csaba Osztrogonác.
-
- Enable mock scrollbars for the Qt port. This patch will require a huge rebaseline.
-
- * DumpRenderTree/qt/DumpRenderTreeQt.cpp:
- (WebCore::DumpRenderTree::DumpRenderTree):
- * WebKitTestRunner/TestController.cpp:
- (WTR::TestController::resetStateToConsistentValues):
-
-2012-10-03 Alberto Garcia <agarcia@igalia.com>
-
- [GTK] [WK2] Add favicon support to the MiniBrowser
- https://bugs.webkit.org/show_bug.cgi?id=98063
-
- Reviewed by Carlos Garcia Campos.
-
- Set the icon in the URI text entry using the favicon property of
- the WebKitWebView.
-
- * MiniBrowser/gtk/BrowserWindow.c:
- (_BrowserWindow):
- (updateUriEntryIcon):
- (uriEntryTextChanged):
- (faviconChanged):
- (browserWindowFinalize):
- (browser_window_init):
- (browserWindowConstructed):
-
-2012-10-03 Raphael Kubo da Costa <raphael.kubo.da.costa@intel.com>
-
- [Qt][DRT] Add support for overriding the "WebKitDisplayImagesKey" preference.
- https://bugs.webkit.org/show_bug.cgi?id=98200
-
- Reviewed by Csaba Osztrogonác.
-
- * DumpRenderTree/qt/TestRunnerQt.cpp:
- (TestRunner::overridePreference):
-
-2012-10-03 Zoltan Arvai <zarvai@inf.u-szeged.hu>
-
- [Qt][WRT] Fix build error with MSVC on Windows.
- https://bugs.webkit.org/show_bug.cgi?id=97697
-
- Reviewed by Simon Hausmann.
-
- WTR build is failing when WebKit directory is located on a longer path.
- This seems to caused by source files that has the same name in
- WTR and DRT directories. The solution is removing referencies
- from Target.pri to DRT directory and adding an alternate version of
- the required files to WTR. Those files simply include the real ones from DRT.
-
- * WebKitTestRunner/InjectedBundle/Target.pri:
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.cpp: Added.
- * WebKitTestRunner/InjectedBundle/qt/QtInitializeTestFonts.h: Added.
-
-2012-10-03 Christophe Dumez <christophe.dumez@intel.com>
-
- [WK2][WKTR] TestRunner.setAlwaysAcceptCookies() causes flakiness
- https://bugs.webkit.org/show_bug.cgi?id=98238
-
- Reviewed by Csaba Osztrogonác.
-
- Reset AlwaysAcceptCookies setting between tests to avoid
- flakiness due to TestRunner.setAlwaysAcceptCookies().
-
- * WebKitTestRunner/InjectedBundle/InjectedBundle.cpp:
- (WTR::InjectedBundle::beginTesting):
-
-2012-10-03 Harald Alvestrand <hta@google.com>
-
- Add data passing to the GetStats interface of RTCPeerConnection
- https://bugs.webkit.org/show_bug.cgi?id=98003
-
- Reviewed by Adam Barth.
-
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.cpp:
- (RTCStatsRequestSucceededTask::RTCStatsRequestSucceededTask):
- (MockWebRTCPeerConnectionHandler::MockWebRTCPeerConnectionHandler):
- (MockWebRTCPeerConnectionHandler::addStream):
- (MockWebRTCPeerConnectionHandler::removeStream):
- (MockWebRTCPeerConnectionHandler::getStats):
- * DumpRenderTree/chromium/MockWebRTCPeerConnectionHandler.h:
- (MockWebRTCPeerConnectionHandler):
-
-== Rolled over to ChangeLog-2012-10-02 ==
diff --git a/Tools/CodeCoverage/results-template.html b/Tools/CodeCoverage/results-template.html
deleted file mode 100644
index 42c5c2480..000000000
--- a/Tools/CodeCoverage/results-template.html
+++ /dev/null
@@ -1,358 +0,0 @@
-<!doctype html>
-<html>
- <head>
- <style type='text/css'>
- table, tr, td
- {
- border-spacing: 1px;
- padding: 0px;
- }
- td.textColumn
- {
- white-space: nowrap;
- font-family: Courier, monospace;
- }
-
- #directories, #codeviewer
- {
- overflow: scroll;
- background-color: white;
- position: absolute;
- width: 50%;
- height: 100%;
- }
-
- #directories
- {
- left: 0%;
- }
-
- #codeviewer
- {
- left: 50%;
- }
-
- ul
- {
- padding: 1px 0px 1px 8px;
- margin: 0px;
- list-style-type: none;
- }
-
- li.file
- {
- /* 8px is to match the width of downArrow and rightArrow because files don't have an image before them. */
- padding: 0px 0px 0px 8px;
- }
-
- div.graphsContainer
- {
- right: 0px;
- width: 300px;
- position: absolute;
- display: inline-block;
- }
- div.codeCoverage
- {
- right: 0px;
- width: 150px;
- position: absolute;
- display: inline-block;
- }
- div.branchCoverage
- {
- right: 150px;
- width: 150px;
- position: absolute;
- display: inline-block;
- }
-
- </style>
- <script type='text/javascript'>
-
- // This is the contents of the images left of directories.
- var downArrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYHFioBcCRLNAAAAJhJREFUGNOFzrEKwjAURuHTJHUspekDZGmhdlawCEqoUDK19O1cnX0dFxcnQXyIOAhKSsUzXr4Lf3Q8nf3leuNXy8IgBmeRYh5IAYOziDxLsdv1LNo3K/IsRQAcdhu0TgKgdUJnG4A3ipVk7NoAjV2LkvKLAKrSUBcGgLowVKX5PASTe2eJF4re2XCcn3R/PKcnH3nvPX96AbbuOGLOrLT1AAAAAElFTkSuQmCC';
- var rightArrow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAkAAAAJCAYAAADgkQYQAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYHFiojpUQK0AAAAKZJREFUGNNjmL1k/f+379//xweYlXXMGo6dvcDw/x8jg7y0OAMzMzMDOmBiYGBg+PP7P8OO/ccYOqctZLh2+x52RTDw9t0nhtlLNjDMWbqB4d2HD9gVwcDVW/cYumcsZXj56i0DAwMDAws2RdqqCgwBHo4MIiKCmIqEBPgYgrycGbTVFVE0sTAwMDCwMjMyONqYMbjYWjCwsmL6jmH24rX/37zBH04AHAxpneY+98AAAAAASUVORK5CYII=';
-
- function getHeatBackgroundColor(hits, maxHits)
- {
- if (hits === -1)
- return 'white'; // Non-code lines are white.
- else if (hits === 0)
- return 'orange'; // Unexecuted lines are orange.
- else {
- // Executed lines are between red and green.
- var relativeHeat = Math.floor(hits / maxHits * 255);
- return 'rgb(' + relativeHeat + ',' + (255 - relativeHeat) + ', 0)';
- }
- }
-
- function getCoverageBackgroundColor(coverage)
- {
- var value = Math.floor(coverage * 255);
- return 'rgb(' + (255 - value) + ',' + value + ', 0)';
- }
-
- function expandClicked(event)
- {
- var children = this.parentNode.lastChild;
- if (children.style.display === '') {
- children.style.display = 'none';
- this.src = rightArrow;
- } else {
- children.style.display = '';
- this.src = downArrow;
- }
- }
-
- function processFile(fileData, contents)
- {
- var lines = contents.split('\n');
- var hits = new Array();
- var branchesNumerator = new Array();
- var branchesDenominator = new Array();
-
- for (var i = 0; i < lines.length; i++) {
- hits[i] = -1;
- branchesNumerator[i] = -1;
- branchesDenominator[i] = -1;
- }
-
- for (var i = 0; i < fileData.hitLines.length; i++)
- hits[fileData.hitLines[i] - 1] = fileData.hits[i];
-
- for (var i = 0; i < fileData.branchLines.length; i++) {
- branchesNumerator[fileData.branchLines[i] - 1] = fileData.branchesTaken[i];
- branchesDenominator[fileData.branchLines[i] - 1] = fileData.branchesPossible[i];
- }
-
- var table = document.createElement('table');
-
- for (var i = 0; i < lines.length; i++) {
- var row = document.createElement('tr');
-
- var branchesColumn = document.createElement('td');
- if (branchesNumerator[i] != -1)
- branchesColumn.appendChild(document.createTextNode('(' + branchesNumerator[i] + '/' + branchesDenominator[i] + ')'));
-
- var hitsColumn = document.createElement('td');
- if (hits[i] != -1)
- hitsColumn.appendChild(document.createTextNode(hits[i]));
-
- var textColumn = document.createElement('td');
- textColumn.style.background = getHeatBackgroundColor(hits[i], fileData.maxHeat);
- textColumn.style.className = 'textColumn';
- textColumn.appendChild(document.createTextNode(lines[i]));
-
- row.appendChild(branchesColumn);
- row.appendChild(hitsColumn);
- row.appendChild(textColumn);
- table.appendChild(row);
- }
-
- return table;
- }
-
- function fileClicked(event)
- {
- var xhr = new XMLHttpRequest();
- xhr.onreadystatechange = function()
- {
- if (xhr.readyState === XMLHttpRequest.DONE) {
- var codeviewer = document.getElementById('codeviewer');
- codeviewer.replaceChild(processFile(xhr.fileData, xhr.responseText), codeviewer.firstChild);
- }
- }
- xhr.fileData = event.target.fileData;
- xhr.open('GET', '../../' + event.target.fileData.filename.substring(1), true);
- xhr.send();
- event.stopPropagation();
- }
-
- function makeGraphs(dirOrFile)
- {
- var codeCoverage = document.createElement('div');
- codeCoverage.className = 'codeCoverage';
- var codeCoveragePercent = dirOrFile.totalLines ? Math.floor(dirOrFile.totalHitLines / dirOrFile.totalLines * 100) + '%' : '-';
- var codeCoverageText = codeCoveragePercent + ' (' + dirOrFile.totalHitLines + '/' + dirOrFile.totalLines + ')';
- codeCoverage.appendChild(document.createTextNode(codeCoverageText));
- codeCoverage.style.backgroundColor = getCoverageBackgroundColor(dirOrFile.coverage);
-
- var branchCoverage = document.createElement('div');
- branchCoverage.className = 'branchCoverage';
- var branchCoveragePercent = dirOrFile.totalBranchesPossible ? Math.floor(dirOrFile.totalBranchesTaken / dirOrFile.totalBranchesPossible * 100) + '%' : '-';
- branchCoverage.appendChild(document.createTextNode(branchCoveragePercent + ' (' + dirOrFile.totalBranchesTaken + '/' + dirOrFile.totalBranchesPossible + ')'));
- branchCoverage.style.backgroundColor = getCoverageBackgroundColor(dirOrFile.branchCoverage);
-
- var graphsContainer = document.createElement('div');
- graphsContainer.className = 'graphsContainer';
- graphsContainer.appendChild(codeCoverage);
- graphsContainer.appendChild(branchCoverage);
- return graphsContainer;
- }
-
- function makeFileListItem(fileData, filename)
- {
- var li = document.createElement('li');
- li.className = 'file';
- var a = document.createElement('a');
- a.appendChild(document.createTextNode(filename));
- a.href = '#';
- a.addEventListener('click', fileClicked.bind(a));
- a.fileData = fileData;
- li.appendChild(a);
- li.appendChild(makeGraphs(fileData));
- return li;
- }
-
- function makeDirectoryListItem(dir, dirName)
- {
- var li = document.createElement('li');
- var children = document.createElement('ul');
-
- // Recursively add all sorted subdirectories and files.
- var fileNames = dir.files ? Object.keys(dir.files).sort() : [];
- var subdirNames = dir.subdirs ? Object.keys(dir.subdirs).sort() : [];
- for (var i = 0; i < subdirNames.length; i++) {
- var subdir = subdirNames[i];
- children.appendChild(makeDirectoryListItem(dir.subdirs[subdir], subdir));
- }
- for (var i = 0; i < fileNames.length; i++) {
- var file = fileNames[i];
- children.appendChild(makeFileListItem(dir.files[file], file, dir.maxHeat, dir.totalHeat));
- }
-
- var img = document.createElement('img');
- img.addEventListener('click', expandClicked.bind(img));
-
- // These four directories are expanded by default.
- if (dirName === '' || dirName === 'Source' || dirName === 'Tools' || dirName === 'WebKitBuild') {
- img.src = downArrow;
- children.style.display = '';
- } else {
- img.src = rightArrow;
- children.style.display = 'none';
- }
-
- li.appendChild(img);
- li.appendChild(document.createTextNode(dirName));
- li.appendChild(makeGraphs(dir));
- li.appendChild(children);
- return li;
- }
-
- // Collect total coverage for a directory and its subdirectories.
- function collectDirectoryTotals(directory)
- {
- directory.totalBranchesPossible = 0;
- directory.totalBranchesTaken = 0;
- directory.totalHitLines = 0;
- directory.totalLines = 0;
- directory.totalHeat = 0;
- directory.maxHeat = 0;
- if (directory.subdirs) {
- for (var subdirName in directory.subdirs) {
- var subdir = directory.subdirs[subdirName];
-
- collectDirectoryTotals(subdir);
-
- directory.totalBranchesPossible += subdir.totalBranchesPossible;
- directory.totalBranchesTaken += subdir.totalBranchesTaken;
- directory.totalHitLines += subdir.totalHitLines;
- directory.totalLines += subdir.totalLines;
- directory.totalHeat += subdir.totalHeat;
- directory.maxHeat = Math.max(directory.maxHeat, subdir.maxHeat);
- }
- }
- if (directory.files) {
- for (var fileName in directory.files) {
- var file = directory.files[fileName];
-
- file.totalBranchesPossible = 0;
- file.totalBranchesTaken = 0;
- file.totalHitLines = 0;
- file.totalLines = file.hitLines.length;
- file.totalHeat = 0;
-
- for (var i = 0; i < file.branchesPossible.length; i++) {
- file.totalBranchesPossible += file.branchesPossible[i];
- file.totalBranchesTaken += file.branchesTaken[i];
- }
- for (var i = 0; i < file.hits.length; i++) {
- file.totalHeat += file.hits[i];
- if (file.hits[i])
- file.totalHitLines++;
- }
-
- directory.totalBranchesPossible += file.totalBranchesPossible;
- directory.totalBranchesTaken += file.totalBranchesTaken;
- directory.totalHitLines += file.totalHitLines;
- directory.totalLines += file.totalLines;
- directory.totalHeat += file.totalHeat;
- directory.maxHeat = Math.max(directory.maxHeat, file.maxHeat);
- }
- }
- directory.coverage = directory.totalHitLines / directory.totalLines;
- directory.branchCoverage = directory.totalBranchesPossible ? directory.totalBranchesTaken / directory.totalBranchesPossible : 1;
- }
-
- function addFileToDirectory(filename, filedata, directory)
- {
- var slashIndex = filename.indexOf('/', 1);
- if (slashIndex === -1) {
- if (!directory.files)
- directory.files = {};
- directory.files[filename.substring(1)] = filedata;
- } else {
- if (!directory.subdirs)
- directory.subdirs = {};
- var subdirName = filename.substring(1, slashIndex);
- if (!directory.subdirs[subdirName])
- directory.subdirs[subdirName] = {};
- addFileToDirectory(filename.substring(slashIndex), filedata, directory.subdirs[subdirName]);
- }
- }
-
- function updateReport(data)
- {
- var rootDirectory = {};
- for (var i = 0; i < data.length; i++)
- addFileToDirectory(data[i].filename, data[i], rootDirectory);
-
- collectDirectoryTotals(rootDirectory);
-
- var report = document.createElement('div');
- var codeCoverageHeader = document.createElement('div');
- codeCoverageHeader.className = 'codeCoverage';
- codeCoverageHeader.appendChild(document.createTextNode('Code Coverage'));
- var branchCoverageHeader = document.createElement('div');
- branchCoverageHeader.className = 'branchCoverage';
- branchCoverageHeader.appendChild(document.createTextNode('Branch Coverage'));
- var ul = document.createElement('ul');
- ul.appendChild(makeDirectoryListItem(rootDirectory, ''));
-
- report.appendChild(codeCoverageHeader);
- report.appendChild(branchCoverageHeader);
- report.appendChild(document.createTextNode('Directories'));
- report.appendChild(ul);
-
- var directories = document.getElementById('directories');
- directories.replaceChild(report, directories.firstChild);
- }
-
- function bodyLoaded()
- {
- updateReport(JSON.parse(document.getElementById('json').textContent));
- }
-
- </script>
- </head>
- <body onload='bodyLoaded();'>
- <div id='directories'>
- loading data...
- </div>
- <div id='codeviewer'>
- </div>
- <script id='json' type='application/json'>%CoverageDataJSON%</script>
- </body>
-</html>
diff --git a/Tools/CygwinDownloader/cygwin-downloader.py b/Tools/CygwinDownloader/cygwin-downloader.py
deleted file mode 100644
index 01fa69cca..000000000
--- a/Tools/CygwinDownloader/cygwin-downloader.py
+++ /dev/null
@@ -1,158 +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",
- "minires",
- "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/Tools/CygwinDownloader/cygwin-downloader.zip b/Tools/CygwinDownloader/cygwin-downloader.zip
deleted file mode 100644
index 4b247874b..000000000
--- a/Tools/CygwinDownloader/cygwin-downloader.zip
+++ /dev/null
Binary files differ
diff --git a/Tools/CygwinDownloader/make-zip.sh b/Tools/CygwinDownloader/make-zip.sh
deleted file mode 100755
index 4a389a9de..000000000
--- a/Tools/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/Tools/CygwinDownloader/setup.py b/Tools/CygwinDownloader/setup.py
deleted file mode 100644
index c3171d91b..000000000
--- a/Tools/CygwinDownloader/setup.py
+++ /dev/null
@@ -1,4 +0,0 @@
-from distutils.core import setup
-import py2exe
-
-setup(console=['cygwin-downloader.py'])
diff --git a/Tools/DumpRenderTree/AccessibilityController.cpp b/Tools/DumpRenderTree/AccessibilityController.cpp
index 80c689c68..d035dea99 100644
--- a/Tools/DumpRenderTree/AccessibilityController.cpp
+++ b/Tools/DumpRenderTree/AccessibilityController.cpp
@@ -130,6 +130,29 @@ static JSValueRef removeNotificationListenerCallback(JSContextRef context, JSObj
return JSValueMakeUndefined(context);
}
+static JSValueRef enableEnhancedAccessibilityCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
+ if (argumentCount == 1)
+ controller->enableEnhancedAccessibility(JSValueToBoolean(context, arguments[0]));
+ return JSValueMakeUndefined(context);
+}
+
+static JSValueRef getEnhancedAccessibilityEnabledCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
+ return JSValueMakeBoolean(context, controller->enhancedAccessibilityEnabled());
+}
+
+static JSValueRef getPlatformNameCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ AccessibilityController* controller = static_cast<AccessibilityController*>(JSObjectGetPrivate(thisObject));
+ JSRetainPtr<JSStringRef> platformName(controller->platformName());
+ if (!platformName.get())
+ return JSValueMakeUndefined(context);
+ return JSValueMakeString(context, platformName.get());
+}
+
JSClassRef AccessibilityController::getJSClass()
{
static JSStaticFunction staticFunctions[] = {
@@ -141,12 +164,15 @@ JSClassRef AccessibilityController::getJSClass()
{ "accessibleElementById", getAccessibleElementByIdCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "addNotificationListener", addNotificationListenerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "removeNotificationListener", removeNotificationListenerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "enableEnhancedAccessibility", enableEnhancedAccessibilityCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0 }
};
static JSStaticValue staticValues[] = {
{ "focusedElement", getFocusedElementCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "rootElement", getRootElementCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "enhancedAccessibilityEnabled", getEnhancedAccessibilityEnabledCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "platformName", getPlatformNameCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0, 0 }
};
@@ -164,5 +190,6 @@ void AccessibilityController::resetToConsistentState()
setLogValueChangeEvents(false);
setLogScrollingStartEvents(false);
setLogAccessibilityEvents(false);
+ platformResetToConsistentState();
}
#endif // HAVE(ACCESSIBILITY)
diff --git a/Tools/DumpRenderTree/AccessibilityController.h b/Tools/DumpRenderTree/AccessibilityController.h
index 1bb066fa0..9f66dd6ee 100644
--- a/Tools/DumpRenderTree/AccessibilityController.h
+++ b/Tools/DumpRenderTree/AccessibilityController.h
@@ -28,6 +28,7 @@
#include "AccessibilityUIElement.h"
#include <JavaScriptCore/JSObjectRef.h>
+#include <JavaScriptCore/JSRetainPtr.h>
#include <string>
#include <wtf/HashMap.h>
#include <wtf/Platform.h>
@@ -35,6 +36,7 @@
#include <windows.h>
#endif
#if HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+#include "AccessibilityNotificationHandlerAtk.h"
#include <atk/atk.h>
#endif
@@ -62,6 +64,12 @@ public:
bool addNotificationListener(JSObjectRef functionCallback);
void removeNotificationListener();
+ // Enhanced accessibility.
+ void enableEnhancedAccessibility(bool);
+ bool enhancedAccessibilityEnabled();
+
+ JSRetainPtr<JSStringRef> platformName() const;
+
#if PLATFORM(WIN)
// Helper methods so this class can add the listeners on behalf of AccessibilityUIElement.
void winAddNotificationListener(PlatformUIElement, JSObjectRef functionCallback);
@@ -85,9 +93,15 @@ private:
HashMap<PlatformUIElement, JSObjectRef> m_notificationListeners;
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA) || PLATFORM(IOS)
RetainPtr<NotificationHandler> m_globalNotificationHandler;
#endif
+
+#if HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+ RefPtr<AccessibilityNotificationHandler> m_globalNotificationHandler;
+#endif
+
+ void platformResetToConsistentState();
};
#endif // AccessibilityController_h
diff --git a/Tools/DumpRenderTree/AccessibilityTextMarker.h b/Tools/DumpRenderTree/AccessibilityTextMarker.h
index aeb078d78..7809ea459 100644
--- a/Tools/DumpRenderTree/AccessibilityTextMarker.h
+++ b/Tools/DumpRenderTree/AccessibilityTextMarker.h
@@ -28,13 +28,13 @@
#include <JavaScriptCore/JSObjectRef.h>
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) || PLATFORM(IOS)
#define SUPPORTS_AX_TEXTMARKERS 1
#else
#define SUPPORTS_AX_TEXTMARKERS 0
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
typedef CFTypeRef PlatformTextMarker;
typedef CFTypeRef PlatformTextMarkerRange;
@@ -58,7 +58,7 @@ public:
private:
static JSClassRef getJSClass();
-#if PLATFORM(MAC)
+#if SUPPORTS_AX_TEXTMARKERS && PLATFORM(MAC)
RetainPtr<PlatformTextMarker> m_textMarker;
#else
PlatformTextMarker m_textMarker;
@@ -78,7 +78,7 @@ public:
private:
static JSClassRef getJSClass();
-#if PLATFORM(MAC)
+#if SUPPORTS_AX_TEXTMARKERS && PLATFORM(MAC)
RetainPtr<PlatformTextMarkerRange> m_textMarkerRange;
#else
PlatformTextMarkerRange m_textMarkerRange;
diff --git a/Tools/DumpRenderTree/AccessibilityUIElement.cpp b/Tools/DumpRenderTree/AccessibilityUIElement.cpp
index 77d11a221..1d77d7717 100644
--- a/Tools/DumpRenderTree/AccessibilityUIElement.cpp
+++ b/Tools/DumpRenderTree/AccessibilityUIElement.cpp
@@ -202,32 +202,82 @@ static JSValueRef attributedStringRangeIsMisspelledCallback(JSContextRef context
return JSValueMakeBoolean(context, toAXElement(thisObject)->attributedStringRangeIsMisspelled(location, length));
}
+static JSValueRef uiElementCountForSearchPredicateCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityUIElement* startElement = nullptr;
+ bool isDirectionNext = true;
+ JSValueRef searchKey = nullptr;
+ JSRetainPtr<JSStringRef> searchText = nullptr;
+ bool visibleOnly = false;
+ bool immediateDescendantsOnly = false;
+ if (argumentCount >= 5 && argumentCount <= 6) {
+ if (JSValueIsObject(context, arguments[0]))
+ startElement = toAXElement(JSValueToObject(context, arguments[0], exception));
+
+ isDirectionNext = JSValueToBoolean(context, arguments[1]);
+
+ searchKey = arguments[2];
+
+ if (JSValueIsString(context, arguments[3]))
+ searchText.adopt(JSValueToStringCopy(context, arguments[3], exception));
+
+ visibleOnly = JSValueToBoolean(context, arguments[4]);
+
+ if (argumentCount == 6)
+ immediateDescendantsOnly = JSValueToBoolean(context, arguments[5]);
+ }
+
+ return JSValueMakeNumber(context, toAXElement(thisObject)->uiElementCountForSearchPredicate(context, startElement, isDirectionNext, searchKey, searchText.get(), visibleOnly, immediateDescendantsOnly));
+}
+
static JSValueRef uiElementForSearchPredicateCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
- AccessibilityUIElement* startElement = 0;
+ AccessibilityUIElement* startElement = nullptr;
bool isDirectionNext = true;
+ JSValueRef searchKey = nullptr;
+ JSRetainPtr<JSStringRef> searchText = nullptr;
bool visibleOnly = false;
- JSValueRef searchKey = 0;
- JSStringRef searchText = 0;
- if (argumentCount == 5) {
- JSObjectRef startElementObject = JSValueToObject(context, arguments[0], exception);
- if (startElementObject)
- startElement = toAXElement(startElementObject);
- isDirectionNext = JSValueToBoolean(context, arguments[1]);
+ bool immediateDescendantsOnly = false;
+ if (argumentCount >= 5 && argumentCount <= 6) {
+ if (JSValueIsObject(context, arguments[0]))
+ startElement = toAXElement(JSValueToObject(context, arguments[0], exception));
+
+ isDirectionNext = JSValueToBoolean(context, arguments[1]);
searchKey = arguments[2];
if (JSValueIsString(context, arguments[3]))
- searchText = JSValueToStringCopy(context, arguments[3], exception);
+ searchText.adopt(JSValueToStringCopy(context, arguments[3], exception));
visibleOnly = JSValueToBoolean(context, arguments[4]);
+
+ if (argumentCount == 6)
+ immediateDescendantsOnly = JSValueToBoolean(context, arguments[5]);
}
- JSObjectRef resultObject = AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->uiElementForSearchPredicate(context, startElement, isDirectionNext, searchKey, searchText, visibleOnly));
+
+ return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->uiElementForSearchPredicate(context, startElement, isDirectionNext, searchKey, searchText.get(), visibleOnly, immediateDescendantsOnly));
+}
- if (searchText)
- JSStringRelease(searchText);
+static JSValueRef selectTextWithCriteriaCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount < 2 || argumentCount > 4)
+ return JSValueMakeUndefined(context);
- return resultObject;
+ JSRetainPtr<JSStringRef> ambiguityResolution(Adopt, JSValueToStringCopy(context, arguments[0], exception));
+ JSValueRef searchStrings = arguments[1];
+ JSStringRef replacementString = nullptr;
+ if (argumentCount == 3)
+ replacementString = JSValueToStringCopy(context, arguments[2], exception);
+ JSStringRef activityString = nullptr;
+ if (argumentCount == 4)
+ activityString = JSValueToStringCopy(context, arguments[3], exception);
+
+ JSRetainPtr<JSStringRef> result(Adopt, toAXElement(thisObject)->selectTextWithCriteria(context, ambiguityResolution.get(), searchStrings, replacementString, activityString));
+ if (replacementString)
+ JSStringRelease(replacementString);
+ if (activityString)
+ JSStringRelease(activityString);
+ return JSValueMakeString(context, result.get());
}
static JSValueRef indexOfChildCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
@@ -267,12 +317,13 @@ static JSValueRef elementsForRangeCallback(JSContextRef context, JSObjectRef fun
Vector<AccessibilityUIElement> elements;
toAXElement(thisObject)->elementsForRange(location, length, elements);
+ JSValueRef arrayResult = JSObjectMakeArray(context, 0, 0, 0);
+ JSObjectRef arrayObj = JSValueToObject(context, arrayResult, 0);
unsigned elementsSize = elements.size();
- JSValueRef valueElements[elementsSize];
for (unsigned k = 0; k < elementsSize; ++k)
- valueElements[k] = AccessibilityUIElement::makeJSAccessibilityUIElement(context, elements[k]);
+ JSObjectSetPropertyAtIndex(context, arrayObj, k, AccessibilityUIElement::makeJSAccessibilityUIElement(context, elements[k]), 0);
- return JSObjectMakeArray(context, elementsSize, valueElements, 0);
+ return arrayResult;
}
static JSValueRef increaseTextSelectionCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
@@ -281,6 +332,26 @@ static JSValueRef increaseTextSelectionCallback(JSContextRef context, JSObjectRe
return JSValueMakeUndefined(context);
}
+static JSValueRef scrollPageUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->scrollPageUp());
+}
+
+static JSValueRef scrollPageDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->scrollPageDown());
+}
+
+static JSValueRef scrollPageLeftCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->scrollPageLeft());
+}
+
+static JSValueRef scrollPageRightCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->scrollPageRight());
+}
+
static JSValueRef decreaseTextSelectionCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
toAXElement(thisObject)->decreaseTextSelection();
@@ -293,6 +364,11 @@ static JSValueRef assistiveTechnologySimulatedFocusCallback(JSContextRef context
return JSValueMakeUndefined(context);
}
+static JSValueRef fieldsetAncestorElementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->fieldsetAncestorElement());
+}
+
#endif
static JSValueRef childAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
@@ -349,6 +425,15 @@ static JSValueRef ariaFlowToElementAtIndexCallback(JSContextRef context, JSObjec
return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->ariaFlowToElementAtIndex(indexNumber));
}
+static JSValueRef ariaControlsElementAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ int indexNumber = 0;
+ if (argumentCount == 1)
+ indexNumber = JSValueToNumber(context, arguments[0], exception);
+
+ return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->ariaControlsElementAtIndex(indexNumber));
+}
+
static JSValueRef selectedRowAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
int indexNumber = 0;
@@ -378,6 +463,19 @@ static JSValueRef isEqualCallback(JSContextRef context, JSObjectRef function, JS
return JSValueMakeBoolean(context, toAXElement(thisObject)->isEqual(toAXElement(otherElement)));
}
+static JSValueRef setValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> valueText = 0;
+ if (argumentCount == 1) {
+ if (JSValueIsString(context, arguments[0]))
+ valueText.adopt(JSValueToStringCopy(context, arguments[0], exception));
+ }
+
+ toAXElement(thisObject)->setValue(valueText.get());
+
+ return JSValueMakeUndefined(context);
+}
+
static JSValueRef setSelectedChildCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
JSObjectRef element = 0;
@@ -389,6 +487,24 @@ static JSValueRef setSelectedChildCallback(JSContextRef context, JSObjectRef fun
return JSValueMakeUndefined(context);
}
+static JSValueRef setSelectedChildAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount == 1) {
+ unsigned indexNumber = JSValueToNumber(context, arguments[0], exception);
+ toAXElement(thisObject)->setSelectedChildAtIndex(indexNumber);
+ }
+ return JSValueMakeUndefined(context);
+}
+
+static JSValueRef removeSelectionAtIndexCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount == 1) {
+ unsigned indexNumber = JSValueToNumber(context, arguments[0], exception);
+ toAXElement(thisObject)->removeSelectionAtIndex(indexNumber);
+ }
+ return JSValueMakeUndefined(context);
+}
+
static JSValueRef elementAtPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
int x = 0;
@@ -450,6 +566,20 @@ static JSValueRef boolAttributeValueCallback(JSContextRef context, JSObjectRef f
return result;
}
+static JSValueRef setBoolAttributeValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ JSStringRef attribute = nullptr;
+ bool value = false;
+ if (argumentCount == 2) {
+ attribute = JSValueToStringCopy(context, arguments[0], exception);
+ value = JSValueToBoolean(context, arguments[1]);
+ }
+ toAXElement(thisObject)->setBoolAttributeValue(attribute, value);
+ if (attribute)
+ JSStringRelease(attribute);
+ return JSValueMakeUndefined(context);
+}
+
static JSValueRef stringAttributeValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
JSStringRef attribute = 0;
@@ -462,6 +592,44 @@ static JSValueRef stringAttributeValueCallback(JSContextRef context, JSObjectRef
return result;
}
+static JSValueRef convertElementsToObjectArray(JSContextRef context, Vector<AccessibilityUIElement>& elements, JSValueRef* exception)
+{
+ JSValueRef arrayResult = JSObjectMakeArray(context, 0, 0, 0);
+ JSObjectRef arrayObj = JSValueToObject(context, arrayResult, 0);
+
+ size_t elementCount = elements.size();
+ for (size_t i = 0; i < elementCount; ++i)
+ JSObjectSetPropertyAtIndex(context, arrayObj, i, AccessibilityUIElement::makeJSAccessibilityUIElement(context, elements[i]), 0);
+
+ return arrayResult;
+}
+
+static JSValueRef columnHeadersCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ Vector<AccessibilityUIElement> elements;
+ toAXElement(thisObject)->columnHeaders(elements);
+ return convertElementsToObjectArray(context, elements, exception);
+}
+
+static JSValueRef rowHeadersCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ Vector<AccessibilityUIElement> elements;
+ toAXElement(thisObject)->rowHeaders(elements);
+ return convertElementsToObjectArray(context, elements, exception);
+}
+
+static JSValueRef uiElementArrayAttributeValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount != 1)
+ return JSValueMakeUndefined(context);
+
+ JSRetainPtr<JSStringRef> attribute(Adopt, JSValueToStringCopy(context, arguments[0], exception));
+
+ Vector<AccessibilityUIElement> elements;
+ toAXElement(thisObject)->uiElementArrayAttributeValue(attribute.get(), elements);
+ return convertElementsToObjectArray(context, elements, exception);
+}
+
static JSValueRef uiElementAttributeValueCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
JSRetainPtr<JSStringRef> attribute;
@@ -545,6 +713,36 @@ static JSValueRef pressCallback(JSContextRef context, JSObjectRef function, JSOb
return JSValueMakeUndefined(context);
}
+static JSValueRef scrollToMakeVisibleWithSubFocusCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ unsigned x = 0;
+ unsigned y = 0;
+ unsigned width = 0;
+ unsigned height = 0;
+ if (argumentCount == 4) {
+ x = JSValueToNumber(context, arguments[0], exception);
+ y = JSValueToNumber(context, arguments[1], exception);
+ width = JSValueToNumber(context, arguments[2], exception);
+ height = JSValueToNumber(context, arguments[3], exception);
+ }
+
+ toAXElement(thisObject)->scrollToMakeVisibleWithSubFocus(x, y, width, height);
+ return JSValueMakeUndefined(context);
+}
+
+static JSValueRef scrollToGlobalPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ unsigned x = 0;
+ unsigned y = 0;
+ if (argumentCount == 2) {
+ x = JSValueToNumber(context, arguments[0], exception);
+ y = JSValueToNumber(context, arguments[1], exception);
+ }
+
+ toAXElement(thisObject)->scrollToGlobalPoint(x, y);
+ return JSValueMakeUndefined(context);
+}
+
static JSValueRef scrollToMakeVisibleCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
toAXElement(thisObject)->scrollToMakeVisible();
@@ -575,6 +773,14 @@ static JSValueRef removeSelectionCallback(JSContextRef context, JSObjectRef func
return JSValueMakeUndefined(context);
}
+static JSValueRef lineTextMarkerRangeForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* textMarker = nullptr;
+ if (argumentCount == 1)
+ textMarker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->lineTextMarkerRangeForTextMarker(textMarker));
+}
+
static JSValueRef textMarkerRangeForElementCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
AccessibilityUIElement* uiElement = 0;
@@ -584,6 +790,17 @@ static JSValueRef textMarkerRangeForElementCallback(JSContextRef context, JSObje
return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->textMarkerRangeForElement(uiElement));
}
+static JSValueRef selectedTextMarkerRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->selectedTextMarkerRange());
+}
+
+static JSValueRef resetSelectedTextMarkerRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ toAXElement(thisObject)->resetSelectedTextMarkerRange();
+ return JSValueMakeUndefined(context);
+}
+
static JSValueRef attributedStringForTextMarkerRangeContainsAttributeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
AccessibilityTextMarkerRange* markerRange = 0;
@@ -664,6 +881,38 @@ static JSValueRef stringForTextMarkerRangeCallback(JSContextRef context, JSObjec
return JSValueMakeString(context, markerRangeString.get());
}
+static JSValueRef endTextMarkerForBoundsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ int x = 0;
+ int y = 0;
+ int width = 0;
+ int height = 0;
+ if (argumentCount == 4) {
+ x = JSValueToNumber(context, arguments[0], exception);
+ y = JSValueToNumber(context, arguments[1], exception);
+ width = JSValueToNumber(context, arguments[2], exception);
+ height = JSValueToNumber(context, arguments[3], exception);
+ }
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->endTextMarkerForBounds(x, y, width, height));
+}
+
+static JSValueRef startTextMarkerForBoundsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ int x = 0;
+ int y = 0;
+ int width = 0;
+ int height = 0;
+ if (argumentCount == 4) {
+ x = JSValueToNumber(context, arguments[0], exception);
+ y = JSValueToNumber(context, arguments[1], exception);
+ width = JSValueToNumber(context, arguments[2], exception);
+ height = JSValueToNumber(context, arguments[3], exception);
+ }
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->startTextMarkerForBounds(x, y, width, height));
+}
+
static JSValueRef textMarkerForPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
int x = 0;
@@ -715,6 +964,119 @@ static JSValueRef accessibilityElementForTextMarkerCallback(JSContextRef context
return AccessibilityUIElement::makeJSAccessibilityUIElement(context, toAXElement(thisObject)->accessibilityElementForTextMarker(marker));
}
+static JSValueRef startTextMarkerCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->startTextMarker());
+}
+
+static JSValueRef endTextMarkerCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->endTextMarker());
+}
+
+static JSValueRef leftWordTextMarkerRangeForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->leftWordTextMarkerRangeForTextMarker(marker));
+}
+
+static JSValueRef rightWordTextMarkerRangeForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->rightWordTextMarkerRangeForTextMarker(marker));
+}
+
+static JSValueRef previousWordStartTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->previousWordStartTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef nextWordEndTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->nextWordEndTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef paragraphTextMarkerRangeForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->paragraphTextMarkerRangeForTextMarker(marker));
+}
+
+static JSValueRef previousParagraphStartTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->previousParagraphStartTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef nextParagraphEndTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->nextParagraphEndTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef sentenceTextMarkerRangeForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarkerRange::makeJSAccessibilityTextMarkerRange(context, toAXElement(thisObject)->sentenceTextMarkerRangeForTextMarker(marker));
+}
+
+static JSValueRef previousSentenceStartTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->previousSentenceStartTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef nextSentenceEndTextMarkerForTextMarkerCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityTextMarker* marker = nullptr;
+ if (argumentCount == 1)
+ marker = toTextMarker(JSValueToObject(context, arguments[0], exception));
+
+ return AccessibilityTextMarker::makeJSAccessibilityTextMarker(context, toAXElement(thisObject)->nextSentenceEndTextMarkerForTextMarker(marker));
+}
+
+static JSValueRef setSelectedVisibleTextRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ AccessibilityUIElement* uiElement = toAXElement(thisObject);
+ AccessibilityTextMarkerRange* textMarkerRange = nullptr;
+ if (argumentCount == 1)
+ textMarkerRange = toTextMarkerRange(JSValueToObject(context, arguments[0], exception));
+
+ if (uiElement)
+ return JSValueMakeBoolean(context, uiElement->setSelectedVisibleTextRange(textMarkerRange));
+
+ return JSValueMakeBoolean(context, false);
+}
+
// Static Value Getters
static JSValueRef getARIADropEffectsCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
@@ -723,6 +1085,12 @@ static JSValueRef getARIADropEffectsCallback(JSContextRef context, JSObjectRef t
return JSValueMakeString(context, dropEffects.get());
}
+static JSValueRef getClassListCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> classList(Adopt, toAXElement(thisObject)->classList());
+ return JSValueMakeString(context, classList.get());
+}
+
static JSValueRef getARIAIsGrabbedCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
return JSValueMakeBoolean(context, toAXElement(thisObject)->ariaIsGrabbed());
@@ -757,6 +1125,12 @@ static JSValueRef getRoleDescriptionCallback(JSContextRef context, JSObjectRef t
return JSValueMakeString(context, roleDesc.get());
}
+static JSValueRef getComputedRoleStringCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> compRole(Adopt, toAXElement(thisObject)->computedRoleString());
+ return JSValueMakeString(context, compRole.get());
+}
+
static JSValueRef getTitleCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
JSRetainPtr<JSStringRef> title(Adopt, toAXElement(thisObject)->title());
@@ -920,6 +1294,11 @@ static JSValueRef getIsCheckedCallback(JSContextRef context, JSObjectRef thisObj
return JSValueMakeBoolean(context, toAXElement(thisObject)->isChecked());
}
+static JSValueRef getIsIndeterminate(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->isIndeterminate());
+}
+
static JSValueRef getIsVisibleCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
{
return JSValueMakeBoolean(context, toAXElement(thisObject)->isVisible());
@@ -1017,58 +1396,91 @@ static JSValueRef removeNotificationListenerCallback(JSContextRef context, JSObj
return JSValueMakeUndefined(context);
}
-#if PLATFORM(IOS)
+#if PLATFORM(GTK) || PLATFORM(EFL)
+static JSValueRef characterAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ int offset = -1;
+ if (argumentCount == 1)
+ offset = JSValueToNumber(context, arguments[0], exception);
-static JSValueRef stringForSelectionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+ JSRetainPtr<JSStringRef> characterAtOffset(Adopt, toAXElement(thisObject)->characterAtOffset(offset));
+ return JSValueMakeString(context, characterAtOffset.get());
+}
+
+static JSValueRef wordAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> labelString(Adopt, toAXElement(thisObject)->stringForSelection());
- return JSValueMakeString(context, labelString.get());
+ int offset = -1;
+ if (argumentCount == 1)
+ offset = JSValueToNumber(context, arguments[0], exception);
+
+ JSRetainPtr<JSStringRef> wordAtOffset(Adopt, toAXElement(thisObject)->wordAtOffset(offset));
+ return JSValueMakeString(context, wordAtOffset.get());
}
-static JSValueRef getIPhoneLabelCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef lineAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> labelString(Adopt, toAXElement(thisObject)->iphoneLabel());
- return JSValueMakeString(context, labelString.get());
+ int offset = -1;
+ if (argumentCount == 1)
+ offset = JSValueToNumber(context, arguments[0], exception);
+
+ JSRetainPtr<JSStringRef> lineAtOffset(Adopt, toAXElement(thisObject)->lineAtOffset(offset));
+ return JSValueMakeString(context, lineAtOffset.get());
}
-static JSValueRef getIPhoneHintCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef sentenceAtOffsetCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> hintString(Adopt, toAXElement(thisObject)->iphoneHint());
- return JSValueMakeString(context, hintString.get());
+ int offset = -1;
+ if (argumentCount == 1)
+ offset = JSValueToNumber(context, arguments[0], exception);
+
+ JSRetainPtr<JSStringRef> sentenceAtOffset(Adopt, toAXElement(thisObject)->sentenceAtOffset(offset));
+ return JSValueMakeString(context, sentenceAtOffset.get());
}
-static JSValueRef getIPhoneValueCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+#elif PLATFORM(IOS)
+
+static JSValueRef getIsSearchFieldCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> valueString(Adopt, toAXElement(thisObject)->iphoneValue());
- return JSValueMakeString(context, valueString.get());
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->isSearchField());
+}
+
+static JSValueRef getIsTextAreaCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->isTextArea());
}
-static JSValueRef getIPhoneIdentifierCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef stringForSelectionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> valueString(Adopt, toAXElement(thisObject)->iphoneIdentifier());
+ JSRetainPtr<JSStringRef> labelString(Adopt, toAXElement(thisObject)->stringForSelection());
+ return JSValueMakeString(context, labelString.get());
+}
+
+static JSValueRef getIdentifierCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> valueString(Adopt, toAXElement(thisObject)->identifier());
return JSValueMakeString(context, valueString.get());
}
-static JSValueRef getIPhoneTraitsCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef getTraitsCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
- JSRetainPtr<JSStringRef> valueString(Adopt, toAXElement(thisObject)->iphoneTraits());
+ JSRetainPtr<JSStringRef> valueString(Adopt, toAXElement(thisObject)->traits());
return JSValueMakeString(context, valueString.get());
}
-static JSValueRef getIPhoneIsElementCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef getElementTextPositionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
- return JSValueMakeBoolean(context, toAXElement(thisObject)->iphoneIsElement());
+ return JSValueMakeNumber(context, toAXElement(thisObject)->elementTextPosition());
}
-static JSValueRef getIPhoneElementTextPositionCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef getElementTextLengthCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
- return JSValueMakeNumber(context, toAXElement(thisObject)->iphoneElementTextPosition());
+ return JSValueMakeNumber(context, toAXElement(thisObject)->elementTextLength());
}
-static JSValueRef getIPhoneElementTextLengthCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef hasContainedByFieldsetTraitCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef, JSValueRef*)
{
- return JSValueMakeNumber(context, toAXElement(thisObject)->iphoneElementTextLength());
+ return JSValueMakeBoolean(context, toAXElement(thisObject)->hasContainedByFieldsetTrait());
}
#endif // PLATFORM(IOS)
@@ -1102,8 +1514,8 @@ JSStringRef AccessibilityUIElement::speak() { return 0; }
JSStringRef AccessibilityUIElement::rangeForLine(int line) { return 0; }
JSStringRef AccessibilityUIElement::rangeForPosition(int, int) { return 0; }
void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement*) const { }
-unsigned AccessibilityUIElement::selectedChildrenCount() const { return 0; }
-AccessibilityUIElement AccessibilityUIElement::selectedChildAtIndex(unsigned) const { return 0; }
+void AccessibilityUIElement::setSelectedChildAtIndex(unsigned) const { }
+void AccessibilityUIElement::removeSelectionAtIndex(unsigned) const { }
AccessibilityUIElement AccessibilityUIElement::horizontalScrollbar() const { return 0; }
AccessibilityUIElement AccessibilityUIElement::verticalScrollbar() const { return 0; }
AccessibilityUIElement AccessibilityUIElement::uiElementAttributeValue(JSStringRef) const { return 0; }
@@ -1111,6 +1523,11 @@ AccessibilityUIElement AccessibilityUIElement::uiElementAttributeValue(JSStringR
#if !PLATFORM(MAC) && !PLATFORM(IOS)
JSStringRef AccessibilityUIElement::pathDescription() const { return 0; }
+void AccessibilityUIElement::setValue(JSStringRef) { }
+#endif
+
+#if !PLATFORM(COCOA)
+void AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef, Vector<AccessibilityUIElement>&) const { }
#endif
#if !PLATFORM(WIN)
@@ -1122,13 +1539,31 @@ bool AccessibilityUIElement::isEqual(AccessibilityUIElement* otherElement)
}
#endif
+#if !PLATFORM(MAC)
+void AccessibilityUIElement::setBoolAttributeValue(JSStringRef, bool) { }
+#endif
+
#if !SUPPORTS_AX_TEXTMARKERS
+AccessibilityTextMarkerRange AccessibilityUIElement::lineTextMarkerRangeForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
AccessibilityTextMarkerRange AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement*)
{
return 0;
}
+AccessibilityTextMarkerRange AccessibilityUIElement::selectedTextMarkerRange()
+{
+ return nullptr;
+}
+
+void AccessibilityUIElement::resetSelectedTextMarkerRange()
+{
+}
+
int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange*)
{
return 0;
@@ -1154,6 +1589,16 @@ AccessibilityUIElement AccessibilityUIElement::accessibilityElementForTextMarker
return 0;
}
+AccessibilityTextMarker AccessibilityUIElement::endTextMarkerForBounds(int x, int y, int width, int height)
+{
+ return 0;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::startTextMarkerForBounds(int x, int y, int width, int height)
+{
+ return 0;
+}
+
AccessibilityTextMarker AccessibilityUIElement::textMarkerForPoint(int x, int y)
{
return 0;
@@ -1194,6 +1639,71 @@ AccessibilityTextMarker AccessibilityUIElement::textMarkerForIndex(int)
return 0;
}
+AccessibilityTextMarker AccessibilityUIElement::startTextMarker()
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::endTextMarker()
+{
+ return nullptr;
+}
+
+bool AccessibilityUIElement::setSelectedVisibleTextRange(AccessibilityTextMarkerRange*)
+{
+ return false;
+}
+
+AccessibilityTextMarkerRange AccessibilityUIElement::leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarkerRange AccessibilityUIElement::rightWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::previousWordStartTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::nextWordEndTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarkerRange AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarkerRange AccessibilityUIElement::sentenceTextMarkerRangeForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::previousSentenceStartTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
+AccessibilityTextMarker AccessibilityUIElement::nextSentenceEndTextMarkerForTextMarker(AccessibilityTextMarker*)
+{
+ return nullptr;
+}
+
#endif
// Destruction
@@ -1207,6 +1717,9 @@ static void finalize(JSObjectRef thisObject)
JSObjectRef AccessibilityUIElement::makeJSAccessibilityUIElement(JSContextRef context, const AccessibilityUIElement& element)
{
+ if (!element.platformUIElement())
+ return nullptr;
+
return JSObjectMake(context, AccessibilityUIElement::getJSClass(), new AccessibilityUIElement(element));
}
@@ -1217,6 +1730,7 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "role", getRoleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "subrole", getSubroleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "roleDescription", getRoleDescriptionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "computedRoleString", getComputedRoleStringCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "title", getTitleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "description", getDescriptionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "language", getLanguageCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1247,6 +1761,7 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "isSelectedOptionActive", getIsSelectedOptionActiveCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isExpanded", getIsExpandedCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isChecked", getIsCheckedCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "isIndeterminate", getIsIndeterminate, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isVisible", getIsVisibleCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isOffScreen", getIsOffScreenCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isCollapsed", getIsCollapsedCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1260,21 +1775,23 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "orientation", getOrientationCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaIsGrabbed", getARIAIsGrabbedCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaDropEffects", getARIADropEffectsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "classList", getClassListCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isIgnored", isIgnoredCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "speak", speakCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "selectedChildrenCount", selectedChildrenCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "horizontalScrollbar", horizontalScrollbarCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "verticalScrollbar", verticalScrollbarCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "startTextMarker", startTextMarkerCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "endTextMarker", endTextMarkerCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#if PLATFORM(IOS)
- { "iphoneLabel", getIPhoneLabelCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneHint", getIPhoneHintCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneValue", getIPhoneValueCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneIdentifier", getIPhoneIdentifierCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneTraits", getIPhoneTraitsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneIsElement", getIPhoneIsElementCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneElementTextPosition", getIPhoneElementTextPositionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "iphoneElementTextLength", getIPhoneElementTextLengthCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "identifier", getIdentifierCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "traits", getTraitsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "elementTextPosition", getElementTextPositionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "elementTextLength", getElementTextLengthCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "stringForSelection", stringForSelectionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "hasContainedByFieldsetTrait", hasContainedByFieldsetTraitCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "isSearchField", getIsSearchFieldCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "isTextArea", getIsTextAreaCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#endif // PLATFORM(IOS)
#if PLATFORM(MAC) && !PLATFORM(IOS)
{ "supportedActions", supportedActionsCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1297,7 +1814,9 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "stringForRange", stringForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "attributedStringForRange", attributedStringForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "attributedStringRangeIsMisspelled", attributedStringRangeIsMisspelledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "uiElementCountForSearchPredicate", uiElementCountForSearchPredicateCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "uiElementForSearchPredicate", uiElementForSearchPredicateCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "selectTextWithCriteria", selectTextWithCriteriaCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "childAtIndex", childAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "linkedUIElementAtIndex", linkedUIElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "indexOfChild", indexOfChildCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1315,9 +1834,13 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "titleUIElement", titleUIElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setSelectedTextRange", setSelectedTextRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "stringAttributeValue", stringAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "uiElementArrayAttributeValue", uiElementArrayAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "rowHeaders", rowHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "columnHeaders", columnHeadersCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "uiElementAttributeValue", uiElementAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "numberAttributeValue", numberAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "boolAttributeValue", boolAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setBoolAttributeValue", setBoolAttributeValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isAttributeSupported", isAttributeSupportedCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isAttributeSettable", isAttributeSettableCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isPressActionSupported", isPressActionSupportedCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1332,6 +1855,7 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "disclosedRowAtIndex", disclosedRowAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaOwnsElementAtIndex", ariaOwnsElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ariaFlowToElementAtIndex", ariaFlowToElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "ariaControlsElementAtIndex", ariaControlsElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "selectedRowAtIndex", selectedRowAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "rowAtIndex", rowAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isEqual", isEqualCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1341,7 +1865,10 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "takeSelection", takeSelectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "addSelection", addSelectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "removeSelection", removeSelectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "lineTextMarkerRangeForTextMarker", lineTextMarkerRangeForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "textMarkerRangeForElement", textMarkerRangeForElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "selectedTextMarkerRange", selectedTextMarkerRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "resetSelectedTextMarkerRange", resetSelectedTextMarkerRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "attributedStringForTextMarkerRangeContainsAttribute", attributedStringForTextMarkerRangeContainsAttributeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "indexForTextMarker", indexForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isTextMarkerValid", isTextMarkerValidCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -1351,21 +1878,48 @@ JSClassRef AccessibilityUIElement::getJSClass()
{ "endTextMarkerForTextMarkerRange", endTextMarkerForTextMarkerRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "accessibilityElementForTextMarker", accessibilityElementForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "textMarkerRangeLength", textMarkerRangeLengthCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "endTextMarkerForBounds", endTextMarkerForBoundsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "startTextMarkerForBounds", startTextMarkerForBoundsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "textMarkerForPoint", textMarkerForPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "nextTextMarker", nextTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "previousTextMarker", previousTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "stringForTextMarkerRange", stringForTextMarkerRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "leftWordTextMarkerRangeForTextMarker", leftWordTextMarkerRangeForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "rightWordTextMarkerRangeForTextMarker", rightWordTextMarkerRangeForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "previousWordStartTextMarkerForTextMarker", previousWordStartTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "nextWordEndTextMarkerForTextMarker", nextWordEndTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "paragraphTextMarkerRangeForTextMarker", paragraphTextMarkerRangeForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "previousParagraphStartTextMarkerForTextMarker", previousParagraphStartTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "nextParagraphEndTextMarkerForTextMarker", nextParagraphEndTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "sentenceTextMarkerRangeForTextMarker", sentenceTextMarkerRangeForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "previousSentenceStartTextMarkerForTextMarker", previousSentenceStartTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "nextSentenceEndTextMarkerForTextMarker", nextSentenceEndTextMarkerForTextMarkerCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setSelectedChild", setSelectedChildCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setSelectedChildAtIndex", setSelectedChildAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "removeSelectionAtIndex", removeSelectionAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setValue", setValueCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setSelectedVisibleTextRange", setSelectedVisibleTextRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "selectedChildAtIndex", selectedChildAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "scrollToMakeVisible", scrollToMakeVisibleCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-#if PLATFORM(IOS)
+ { "scrollToGlobalPoint", scrollToGlobalPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "scrollToMakeVisibleWithSubFocus", scrollToMakeVisibleWithSubFocusCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ { "characterAtOffset", characterAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "wordAtOffset", wordAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "lineAtOffset", lineAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "sentenceAtOffset", sentenceAtOffsetCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#elif PLATFORM(IOS)
{ "linkedElement", linkedElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "headerElementAtIndex", headerElementAtIndexCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "elementsForRange", elementsForRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "increaseTextSelection", increaseTextSelectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "decreaseTextSelection", decreaseTextSelectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "scrollPageUp", scrollPageUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "scrollPageDown", scrollPageDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "scrollPageLeft", scrollPageLeftCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "scrollPageRight", scrollPageRightCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "assistiveTechnologySimulatedFocus", assistiveTechnologySimulatedFocusCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-
+ { "fieldsetAncestorElement", fieldsetAncestorElementCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
#endif
{ 0, 0, 0 }
};
diff --git a/Tools/DumpRenderTree/AccessibilityUIElement.h b/Tools/DumpRenderTree/AccessibilityUIElement.h
index ebbf7f3d4..4abf9e9aa 100644
--- a/Tools/DumpRenderTree/AccessibilityUIElement.h
+++ b/Tools/DumpRenderTree/AccessibilityUIElement.h
@@ -31,7 +31,7 @@
#include <wtf/Platform.h>
#include <wtf/Vector.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#ifdef __OBJC__
typedef id PlatformUIElement;
#else
@@ -46,13 +46,14 @@ typedef struct objc_object* PlatformUIElement;
typedef COMPtr<IAccessible> PlatformUIElement;
#elif HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+#include "AccessibilityNotificationHandlerAtk.h"
#include <atk/atk.h>
typedef AtkObject* PlatformUIElement;
#else
typedef void* PlatformUIElement;
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#ifdef __OBJC__
typedef id NotificationHandler;
#else
@@ -66,7 +67,7 @@ public:
AccessibilityUIElement(const AccessibilityUIElement&);
~AccessibilityUIElement();
- PlatformUIElement platformUIElement() { return m_element; }
+ PlatformUIElement platformUIElement() const { return m_element; }
static JSObjectRef makeJSAccessibilityUIElement(JSContextRef, const AccessibilityUIElement&);
@@ -105,8 +106,10 @@ public:
// Attributes - platform-independent implementations
JSStringRef stringAttributeValue(JSStringRef attribute);
double numberAttributeValue(JSStringRef attribute);
+ void uiElementArrayAttributeValue(JSStringRef attribute, Vector<AccessibilityUIElement>& elements) const;
AccessibilityUIElement uiElementAttributeValue(JSStringRef attribute) const;
bool boolAttributeValue(JSStringRef attribute);
+ void setBoolAttributeValue(JSStringRef attribute, bool value);
bool isAttributeSupported(JSStringRef attribute);
bool isAttributeSettable(JSStringRef attribute);
bool isPressActionSupported();
@@ -115,11 +118,13 @@ public:
JSStringRef role();
JSStringRef subrole();
JSStringRef roleDescription();
+ JSStringRef computedRoleString();
JSStringRef title();
JSStringRef description();
JSStringRef language();
JSStringRef stringValue();
JSStringRef accessibilityValue() const;
+ void setValue(JSStringRef);
JSStringRef helpText() const;
JSStringRef orientation() const;
double x();
@@ -145,6 +150,8 @@ public:
void setSelectedChild(AccessibilityUIElement*) const;
unsigned selectedChildrenCount() const;
AccessibilityUIElement selectedChildAtIndex(unsigned) const;
+ void setSelectedChildAtIndex(unsigned) const;
+ void removeSelectionAtIndex(unsigned) const;
bool isExpanded() const;
bool isChecked() const;
@@ -152,6 +159,7 @@ public:
bool isOffScreen() const;
bool isCollapsed() const;
bool isIgnored() const;
+ bool isIndeterminate() const;
bool hasPopup() const;
int hierarchicalLevel() const;
double clickPointX();
@@ -159,6 +167,7 @@ public:
JSStringRef documentEncoding();
JSStringRef documentURI();
JSStringRef url();
+ JSStringRef classList() const;
// CSS3-speech properties.
JSStringRef speak();
@@ -175,6 +184,8 @@ public:
JSStringRef columnIndexRange();
int rowCount();
int columnCount();
+ void rowHeaders(Vector<AccessibilityUIElement>& elements) const;
+ void columnHeaders(Vector<AccessibilityUIElement>& elements) const;
// Tree/Outline specific attributes
AccessibilityUIElement selectedRowAtIndex(unsigned);
@@ -185,6 +196,7 @@ public:
// ARIA specific
AccessibilityUIElement ariaOwnsElementAtIndex(unsigned);
AccessibilityUIElement ariaFlowToElementAtIndex(unsigned);
+ AccessibilityUIElement ariaControlsElementAtIndex(unsigned);
// ARIA Drag and Drop
bool ariaIsGrabbed() const;
@@ -200,13 +212,31 @@ public:
JSStringRef stringForRange(unsigned location, unsigned length);
JSStringRef attributedStringForRange(unsigned location, unsigned length);
bool attributedStringRangeIsMisspelled(unsigned location, unsigned length);
- AccessibilityUIElement uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly);
+ unsigned uiElementCountForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly);
+ AccessibilityUIElement uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly);
+ JSStringRef selectTextWithCriteria(JSContextRef, JSStringRef ambiguityResolution, JSValueRef searchStrings, JSStringRef replacementString, JSStringRef activity);
#if PLATFORM(IOS)
void elementsForRange(unsigned location, unsigned length, Vector<AccessibilityUIElement>& elements);
JSStringRef stringForSelection();
void increaseTextSelection();
void decreaseTextSelection();
AccessibilityUIElement linkedElement();
+
+ bool scrollPageUp();
+ bool scrollPageDown();
+ bool scrollPageLeft();
+ bool scrollPageRight();
+
+ bool hasContainedByFieldsetTrait();
+ AccessibilityUIElement fieldsetAncestorElement();
+#endif
+
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ // Text-specific
+ JSStringRef characterAtOffset(int offset);
+ JSStringRef wordAtOffset(int offset);
+ JSStringRef lineAtOffset(int offset);
+ JSStringRef sentenceAtOffset(int offset);
#endif
// Table-specific
@@ -217,14 +247,33 @@ public:
AccessibilityUIElement verticalScrollbar() const;
// Text markers.
+ AccessibilityTextMarkerRange lineTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
AccessibilityTextMarkerRange textMarkerRangeForElement(AccessibilityUIElement*);
AccessibilityTextMarkerRange textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker);
AccessibilityTextMarker startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*);
AccessibilityTextMarker endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*);
+ AccessibilityTextMarker endTextMarkerForBounds(int x, int y, int width, int height);
+ AccessibilityTextMarker startTextMarkerForBounds(int x, int y, int width, int height);
AccessibilityTextMarker textMarkerForPoint(int x, int y);
AccessibilityTextMarker previousTextMarker(AccessibilityTextMarker*);
AccessibilityTextMarker nextTextMarker(AccessibilityTextMarker*);
AccessibilityUIElement accessibilityElementForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker startTextMarker();
+ AccessibilityTextMarker endTextMarker();
+ AccessibilityTextMarkerRange leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarkerRange rightWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker previousWordStartTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker nextWordEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarkerRange paragraphTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker previousParagraphStartTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker nextParagraphEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarkerRange sentenceTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker previousSentenceStartTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarker nextSentenceEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ AccessibilityTextMarkerRange selectedTextMarkerRange();
+ void resetSelectedTextMarkerRange();
+ bool setSelectedVisibleTextRange(AccessibilityTextMarkerRange*);
+
JSStringRef stringForTextMarkerRange(AccessibilityTextMarkerRange*);
int textMarkerRangeLength(AccessibilityTextMarkerRange*);
bool attributedStringForTextMarkerRangeContainsAttribute(JSStringRef, AccessibilityTextMarkerRange*);
@@ -243,17 +292,17 @@ public:
void removeNotificationListener();
#if PLATFORM(IOS)
- JSStringRef iphoneLabel();
- JSStringRef iphoneValue();
- JSStringRef iphoneTraits();
- JSStringRef iphoneHint();
- JSStringRef iphoneIdentifier();
- bool iphoneIsElement();
- int iphoneElementTextPosition();
- int iphoneElementTextLength();
+ JSStringRef traits();
+ JSStringRef identifier();
+ int elementTextPosition();
+ int elementTextLength();
AccessibilityUIElement headerElementAtIndex(unsigned);
// This will simulate the accessibilityDidBecomeFocused API in UIKit.
void assistiveTechnologySimulatedFocus();
+
+ bool isTextArea() const;
+ bool isSearchField() const;
+
#endif // PLATFORM(IOS)
#if PLATFORM(MAC) && !PLATFORM(IOS)
@@ -269,10 +318,14 @@ private:
static JSClassRef getJSClass();
PlatformUIElement m_element;
+#if PLATFORM(COCOA)
// A retained, platform specific object used to help manage notifications for this object.
-#if PLATFORM(MAC)
NotificationHandler m_notificationHandler;
#endif
+
+#if HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+ RefPtr<AccessibilityNotificationHandler> m_notificationHandler;
+#endif
};
#endif // AccessibilityUIElement_h
diff --git a/Tools/DumpRenderTree/CMakeLists.txt b/Tools/DumpRenderTree/CMakeLists.txt
new file mode 100644
index 000000000..eb7c1f4ff
--- /dev/null
+++ b/Tools/DumpRenderTree/CMakeLists.txt
@@ -0,0 +1,129 @@
+set(DumpRenderTree_SOURCES
+ AccessibilityController.cpp
+ AccessibilityTextMarker.cpp
+ AccessibilityUIElement.cpp
+ CyclicRedundancyCheck.cpp
+ DumpRenderTreeCommon.cpp
+ GCController.cpp
+ JavaScriptThreading.cpp
+ PixelDumpSupport.cpp
+ TestRunner.cpp
+ WorkQueue.cpp
+)
+
+set(DumpRenderTree_LIBRARIES
+ JavaScriptCore
+ WTF
+ WebCoreTestSupport
+ WebKit
+)
+
+set(DumpRenderTree_INCLUDE_DIRECTORIES
+ ${WEBCORE_DIR}
+ ${WEBCORE_DIR}/bindings
+ ${WEBCORE_DIR}/bridge
+ ${WEBCORE_DIR}/bridge/jsc
+ ${WEBCORE_DIR}/css
+ ${WEBCORE_DIR}/dom
+ ${WEBCORE_DIR}/editing
+ ${WEBCORE_DIR}/history
+ ${WEBCORE_DIR}/html
+ ${WEBCORE_DIR}/inspector
+ ${WEBCORE_DIR}/loader
+ ${WEBCORE_DIR}/loader/cache
+ ${WEBCORE_DIR}/loader/icon
+ ${WEBCORE_DIR}/page
+ ${WEBCORE_DIR}/page/animation
+ ${WEBCORE_DIR}/platform
+ ${WEBCORE_DIR}/platform/animation
+ ${WEBCORE_DIR}/platform/graphics
+ ${WEBCORE_DIR}/platform/graphics/transforms
+ ${WEBCORE_DIR}/platform/network
+ ${WEBCORE_DIR}/platform/text
+ ${WEBCORE_DIR}/plugins
+ ${WEBCORE_DIR}/rendering
+ ${WEBCORE_DIR}/rendering/shapes
+ ${WEBCORE_DIR}/rendering/style
+ ${JAVASCRIPTCORE_DIR}
+ ${JAVASCRIPTCORE_DIR}/API
+ ${JAVASCRIPTCORE_DIR}/assembler
+ ${JAVASCRIPTCORE_DIR}/bytecode
+ ${JAVASCRIPTCORE_DIR}/dfg
+ ${JAVASCRIPTCORE_DIR}/disassembler
+ ${JAVASCRIPTCORE_DIR}/heap
+ ${JAVASCRIPTCORE_DIR}/interpreter
+ ${JAVASCRIPTCORE_DIR}/jit
+ ${JAVASCRIPTCORE_DIR}/llint
+ ${JAVASCRIPTCORE_DIR}/parser
+ ${JAVASCRIPTCORE_DIR}/profiler
+ ${JAVASCRIPTCORE_DIR}/runtime
+ ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
+ ${DERIVED_SOURCES_DIR}/ForwardingHeaders
+ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
+ ${TOOLS_DIR}/DumpRenderTree
+ ${WTF_DIR}
+ ${CMAKE_SOURCE_DIR}/Source
+ ${CMAKE_BINARY_DIR}
+ ${DERIVED_SOURCES_DIR}
+ ${DERIVED_SOURCES_WEBCORE_DIR}
+ ${WEBCORE_DIR}/bindings/js
+ ${WEBCORE_DIR}/testing/js
+)
+
+set(TestNetscapePlugin_SOURCES
+ TestNetscapePlugIn/PluginObject.cpp
+ TestNetscapePlugIn/PluginTest.cpp
+ TestNetscapePlugIn/TestObject.cpp
+ TestNetscapePlugIn/main.cpp
+
+ TestNetscapePlugIn/Tests/DocumentOpenInDestroyStream.cpp
+ TestNetscapePlugIn/Tests/EvaluateJSAfterRemovingPluginElement.cpp
+ TestNetscapePlugIn/Tests/FormValue.cpp
+ TestNetscapePlugIn/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp
+ TestNetscapePlugIn/Tests/GetURLWithJavaScriptURL.cpp
+ TestNetscapePlugIn/Tests/GetURLWithJavaScriptURLDestroyingPlugin.cpp
+ TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp
+ TestNetscapePlugIn/Tests/LogNPPSetWindow.cpp
+ TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp
+ TestNetscapePlugIn/Tests/NPPNewFails.cpp
+ TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp
+ TestNetscapePlugIn/Tests/NPRuntimeCallsWithNullNPP.cpp
+ TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp
+ TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp
+ TestNetscapePlugIn/Tests/NullNPPGetValuePointer.cpp
+ TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp
+ TestNetscapePlugIn/Tests/PluginScriptableNPObjectInvokeDefault.cpp
+ TestNetscapePlugIn/Tests/PluginScriptableObjectOverridesAllProperties.cpp
+ TestNetscapePlugIn/Tests/PrivateBrowsing.cpp
+ TestNetscapePlugIn/Tests/ToStringAndValueOfObject.cpp
+ TestNetscapePlugIn/Tests/URLRedirect.cpp
+)
+
+set(TestNetscapePlugin_LIBRARIES
+ JavaScriptCore
+ WTF
+ WebCoreTestSupport
+ WebKit
+)
+
+list(APPEND TestNetscapePlugin_LIBRARIES
+ WebKit
+)
+
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
+
+include_directories(${DumpRenderTree_INCLUDE_DIRECTORIES})
+include_directories(SYSTEM ${DumpRenderTree_SYSTEM_INCLUDE_DIRECTORIES})
+
+add_executable(DumpRenderTree ${DumpRenderTree_SOURCES})
+target_link_libraries(DumpRenderTree ${DumpRenderTree_LIBRARIES})
+set_target_properties(DumpRenderTree PROPERTIES FOLDER "Tools")
+
+if (ENABLE_NETSCAPE_PLUGIN_API)
+ add_library(TestNetscapePlugin SHARED ${TestNetscapePlugin_SOURCES})
+ target_link_libraries(TestNetscapePlugin ${TestNetscapePlugin_LIBRARIES})
+endif ()
+
+if (WIN32)
+ add_dependencies(DumpRenderTree DumpRenderTreeLib)
+endif ()
diff --git a/Tools/DumpRenderTree/DefaultPolicyDelegate.m b/Tools/DumpRenderTree/DefaultPolicyDelegate.m
deleted file mode 100644
index 4515bfb0e..000000000
--- a/Tools/DumpRenderTree/DefaultPolicyDelegate.m
+++ /dev/null
@@ -1,34 +0,0 @@
-//
-// DefaultPolicyDelegate.m
-// DumpRenderTree
-//
-// Created by Anders Carlsson on 7/9/13.
-//
-//
-
-#import "DefaultPolicyDelegate.h"
-
-#import <WebKit/WebPolicyDelegatePrivate.h>
-#import <WebKit/WebViewPrivate.h>
-
-@implementation DefaultPolicyDelegate
-
-- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id <WebPolicyDecisionListener>)listener
-{
- if ([WebView _canHandleRequest:request]) {
- [listener use];
- return;
- }
-
- WebNavigationType navType = [[actionInformation objectForKey:WebActionNavigationTypeKey] intValue];
- if (navType == WebNavigationTypePlugInRequest) {
- [listener use];
- return;
- }
-
- // The default WebKit policy delegate passes the URL along to -[NSWorkspace openURL:] here,
- // but we don't want to do that so we just ignore the navigation completely.
- [listener ignore];
-}
-
-@end
diff --git a/Tools/DumpRenderTree/DumpRenderTree.h b/Tools/DumpRenderTree/DumpRenderTree.h
index 47f88e58f..2a2ea1467 100644
--- a/Tools/DumpRenderTree/DumpRenderTree.h
+++ b/Tools/DumpRenderTree/DumpRenderTree.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -34,7 +34,7 @@
#include <wtf/Platform.h>
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include "DumpRenderTreeMac.h"
#elif PLATFORM(WIN)
#include "DumpRenderTreeWin.h"
@@ -42,8 +42,6 @@
#include "DumpRenderTreeGtk.h"
#elif PLATFORM(EFL)
#include "DumpRenderTreeEfl.h"
-#elif PLATFORM(BLACKBERRY)
-#include "DumpRenderTreeBlackBerry.h"
#endif
#include <string>
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln
deleted file mode 100644
index 285e25259..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree.sln
+++ /dev/null
@@ -1,56 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestNetscapePlugin", "TestNetscapePlugin\TestNetscapePlugin.vcxproj", "{C0737398-3565-439E-A2B8-AB2BE4D5430C}"
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiffLauncher", "ImageDiff\ImageDiffLauncher.vcxproj", "{DD7949B6-F2B4-47C2-9C42-E21E84CB1017}"
- ProjectSection(ProjectDependencies) = postProject
- {59CC0547-70AC-499C-9B19-EC01C6F61137} = {59CC0547-70AC-499C-9B19-EC01C6F61137}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ImageDiff", "ImageDiff\ImageDiff.vcxproj", "{59CC0547-70AC-499C-9B19-EC01C6F61137}"
- ProjectSection(ProjectDependencies) = postProject
- {C0737398-3565-439E-A2B8-AB2BE4D5430C} = {C0737398-3565-439E-A2B8-AB2BE4D5430C}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTree", "DumpRenderTree\DumpRenderTree.vcxproj", "{6567DFD4-D6DE-4CD5-825D-17E353D160E1}"
- ProjectSection(ProjectDependencies) = postProject
- {DD7949B6-F2B4-47C2-9C42-E21E84CB1017} = {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "DumpRenderTreeLauncher", "DumpRenderTree\DumpRenderTreeLauncher.vcxproj", "{2974EA02-840B-4995-8719-8920A61006F1}"
- ProjectSection(ProjectDependencies) = postProject
- {6567DFD4-D6DE-4CD5-825D-17E353D160E1} = {6567DFD4-D6DE-4CD5-825D-17E353D160E1}
- EndProjectSection
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {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
- {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|Win32.ActiveCfg = Debug|Win32
- {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Debug|Win32.Build.0 = Debug|Win32
- {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|Win32.ActiveCfg = Release|Win32
- {DD7949B6-F2B4-47C2-9C42-E21E84CB1017}.Release|Win32.Build.0 = Release|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
- {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
- {2974EA02-840B-4995-8719-8920A61006F1}.Debug|Win32.ActiveCfg = Debug|Win32
- {2974EA02-840B-4995-8719-8920A61006F1}.Debug|Win32.Build.0 = Debug|Win32
- {2974EA02-840B-4995-8719-8920A61006F1}.Release|Win32.ActiveCfg = Release|Win32
- {2974EA02-840B-4995-8719-8920A61006F1}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj
deleted file mode 100644
index 06dafbb07..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj
+++ /dev/null
@@ -1,282 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{6567DFD4-D6DE-4CD5-825D-17E353D160E1}</ProjectGuid>
- <RootNamespace>DumpRenderTree</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\AccessibilityController.cpp" />
- <ClCompile Include="..\..\AccessibilityTextMarker.cpp" />
- <ClCompile Include="..\..\AccessibilityUIElement.cpp" />
- <ClCompile Include="..\..\cairo\PixelDumpSupportCairo.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\..\cg\PixelDumpSupportCG.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\..\CyclicRedundancyCheck.cpp" />
- <ClCompile Include="..\..\DumpRenderTreeCommon.cpp" />
- <ClCompile Include="..\..\GCController.cpp" />
- <ClCompile Include="..\..\JavaScriptThreading.cpp" />
- <ClCompile Include="..\..\PixelDumpSupport.cpp" />
- <ClCompile Include="..\..\TestRunner.cpp" />
- <ClCompile Include="..\..\win\AccessibilityControllerWin.cpp" />
- <ClCompile Include="..\..\win\AccessibilityUIElementWin.cpp" />
- <ClCompile Include="..\..\win\DRTDataObject.cpp" />
- <ClCompile Include="..\..\win\DRTDesktopNotificationPresenter.cpp" />
- <ClCompile Include="..\..\win\DRTDropSource.cpp" />
- <ClCompile Include="..\..\win\DumpRenderTree.cpp" />
- <ClCompile Include="..\..\win\EditingDelegate.cpp" />
- <ClCompile Include="..\..\win\EventSender.cpp" />
- <ClCompile Include="..\..\win\FrameLoadDelegate.cpp" />
- <ClCompile Include="..\..\win\GCControllerWin.cpp" />
- <ClCompile Include="..\..\win\HistoryDelegate.cpp" />
- <ClCompile Include="..\..\win\MD5.cpp" />
- <ClCompile Include="..\..\win\PixelDumpSupportWin.cpp" />
- <ClCompile Include="..\..\win\PolicyDelegate.cpp" />
- <ClCompile Include="..\..\win\ResourceLoadDelegate.cpp" />
- <ClCompile Include="..\..\win\TestRunnerWin.cpp" />
- <ClCompile Include="..\..\win\TextInputController.cpp" />
- <ClCompile Include="..\..\win\TextInputControllerWin.cpp" />
- <ClCompile Include="..\..\win\UIDelegate.cpp" />
- <ClCompile Include="..\..\win\WorkQueueItemWin.cpp" />
- <ClCompile Include="..\..\WorkQueue.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\AccessibilityController.h" />
- <ClInclude Include="..\..\AccessibilityTextMarker.h" />
- <ClInclude Include="..\..\AccessibilityUIElement.h" />
- <ClInclude Include="..\..\cairo\PixelDumpSupportCairo.h">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
- </ClInclude>
- <ClInclude Include="..\..\cg\PixelDumpSupportCG.h">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
- </ClInclude>
- <ClInclude Include="..\..\config.h" />
- <ClInclude Include="..\..\CyclicRedundancyCheck.h" />
- <ClInclude Include="..\..\DumpRenderTree.h" />
- <ClInclude Include="..\..\DumpRenderTreePrefix.h" />
- <ClInclude Include="..\..\GCController.h" />
- <ClInclude Include="..\..\JavaScriptThreading.h" />
- <ClInclude Include="..\..\PixelDumpSupport.h" />
- <ClInclude Include="..\..\TestRunner.h" />
- <ClInclude Include="..\..\win\DraggingInfo.h" />
- <ClInclude Include="..\..\win\DRTDataObject.h" />
- <ClInclude Include="..\..\win\DRTDesktopNotificationPresenter.h" />
- <ClInclude Include="..\..\win\DRTDropSource.h" />
- <ClInclude Include="..\..\win\DumpRenderTreeWin.h" />
- <ClInclude Include="..\..\win\EditingDelegate.h" />
- <ClInclude Include="..\..\win\EventSender.h" />
- <ClInclude Include="..\..\win\FrameLoadDelegate.h" />
- <ClInclude Include="..\..\win\HistoryDelegate.h" />
- <ClInclude Include="..\..\win\MD5.h" />
- <ClInclude Include="..\..\win\PolicyDelegate.h" />
- <ClInclude Include="..\..\win\ResourceLoadDelegate.h" />
- <ClInclude Include="..\..\win\TextInputController.h" />
- <ClInclude Include="..\..\win\UIDelegate.h" />
- <ClInclude Include="..\..\WorkQueue.h" />
- <ClInclude Include="..\..\WorkQueueItem.h" />
- <CustomBuildStep Include="MD5.h" />
- <CustomBuildStep Include="..\cairo\PixelDumpSupportCairo.h">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
- </CustomBuildStep>
- <CustomBuildStep Include="..\cg\PixelDumpSupportCG.h" />
- </ItemGroup>
- <ItemGroup>
- <None Include="DumpRenderTreePostBuild.cmd" />
- <None Include="DumpRenderTreePreBuild.cmd" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters
deleted file mode 100644
index 17161e70e..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTree.vcxproj.filters
+++ /dev/null
@@ -1,197 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Controllers">
- <UniqueIdentifier>{f76f7e03-4f6a-46fd-a3e6-3cc4d2f7e918}</UniqueIdentifier>
- </Filter>
- <Filter Include="Delegates">
- <UniqueIdentifier>{964367be-8e77-444f-9b05-7c906d89e35e}</UniqueIdentifier>
- </Filter>
- <Filter Include="Support">
- <UniqueIdentifier>{59309c9f-8148-4c01-a552-888c6c065f73}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\AccessibilityController.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\GCController.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestRunner.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\AccessibilityControllerWin.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\DRTDataObject.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\DRTDropSource.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\EventSender.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\GCControllerWin.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\TestRunnerWin.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\TextInputController.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\TextInputControllerWin.cpp">
- <Filter>Controllers</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\DRTDesktopNotificationPresenter.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\HistoryDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\PolicyDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\ResourceLoadDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\UIDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\EditingDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\FrameLoadDelegate.cpp">
- <Filter>Delegates</Filter>
- </ClCompile>
- <ClCompile Include="..\..\AccessibilityTextMarker.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\AccessibilityUIElementWin.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\AccessibilityUIElement.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\CyclicRedundancyCheck.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\DumpRenderTreeCommon.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\DumpRenderTree.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\MD5.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\PixelDumpSupport.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\WorkQueueItemWin.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\cairo\PixelDumpSupportCairo.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\cg\PixelDumpSupportCG.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\win\PixelDumpSupportWin.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\WorkQueue.cpp">
- <Filter>Support</Filter>
- </ClCompile>
- <ClCompile Include="..\..\JavaScriptThreading.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\AccessibilityController.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\GCController.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\TestRunner.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\DRTDataObject.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\DRTDropSource.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\EventSender.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\TextInputController.h">
- <Filter>Controllers</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\DRTDesktopNotificationPresenter.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\HistoryDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\PolicyDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\ResourceLoadDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\UIDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\EditingDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\FrameLoadDelegate.h">
- <Filter>Delegates</Filter>
- </ClInclude>
- <ClInclude Include="..\..\config.h" />
- <ClInclude Include="..\..\AccessibilityTextMarker.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\AccessibilityUIElement.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\DumpRenderTreePrefix.h" />
- <ClInclude Include="..\..\CyclicRedundancyCheck.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\DraggingInfo.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\DumpRenderTree.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\DumpRenderTreeWin.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\win\MD5.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\PixelDumpSupport.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\cairo\PixelDumpSupportCairo.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\cg\PixelDumpSupportCG.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\WorkQueue.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\WorkQueueItem.h">
- <Filter>Support</Filter>
- </ClInclude>
- <ClInclude Include="..\..\JavaScriptThreading.h" />
- </ItemGroup>
- <ItemGroup>
- <None Include="DumpRenderTreePostBuild.cmd" />
- <None Include="DumpRenderTreePreBuild.cmd" />
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeApple.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeApple.props
deleted file mode 100644
index b5045231e..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeApple.props
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)\..\..\cg;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- <Link>
- <AdditionalDependencies>CoreGraphics$(DebugSuffix).lib;CoreFoundation$(DebugSuffix).lib;CFNetwork$(DebugSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeCommon.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeCommon.props
deleted file mode 100644
index fe840d2f6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeCommon.props
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)\..\..;$(ProjectDir)\..\..\win;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\DumpRenderTree\ForwardingHeaders;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\Include\WebCoreTestSupport;$(ConfigurationBuildDir)\Include\WebCore;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;$(WebKit_Libraries)\Include\WebCore;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- <DisableSpecificWarnings>4146;%(DisableSpecificWarnings)</DisableSpecificWarnings>
- <ForcedIncludeFiles>DumpRenderTreePrefix.h;%(ForcedIncludeFiles)</ForcedIncludeFiles>
- </ClCompile>
- <Link>
- <AdditionalOptions>/NXCOMPAT %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>WTF$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;WebKitGUID$(DebugSuffix).lib;WebKit$(DebugSuffix).lib;WebCoreTestSupport$(DebugSuffix).lib;gdi32.lib;ole32.lib;oleaut32.lib;user32.lib;shlwapi.lib;oleacc.lib;comsuppw.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebug.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebug.props
deleted file mode 100644
index 9c75bc73f..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebug.props
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="DumpRenderTreeCommon.props" />
- <Import Project="DumpRenderTreeApple.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props
deleted file mode 100644
index 77fc5cc88..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeDebugWinCairo.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\cURL.props" />
- <Import Project="..\..\..\..\Source\WebKit\WebKit.vcxproj\WebKit\WebKitCFLite.props" />
- <Import Project="DumpRenderTreeCommon.props" />
- </ImportGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)\..\..\cairo;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj
deleted file mode 100644
index 620391b42..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncher.vcxproj
+++ /dev/null
@@ -1,230 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{2974EA02-840B-4995-8719-8920A61006F1}</ProjectGuid>
- <RootNamespace>DumpRenderTreeLauncher</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="DumpRenderTreeLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'">
- <Link>
- <AdditionalOptions>/SAFESEH %(AdditionalOptions)</AdditionalOptions>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\win\DLLLauncher\DLLLauncherMain.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props
deleted file mode 100644
index 7a96a94db..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherCommon.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <TargetName>DumpRenderTree</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <PreprocessorDefinitions>USE_CONSOLE_ENTRY_POINT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)DumpRenderTree$(DebugSuffix).exe</OutputFile>
- <SubSystem>Console</SubSystem>
- <ProgramDatabaseFile>$(TargetDir)$(TargetName)Launcher.pdb</ProgramDatabaseFile>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherDebug.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherDebug.props
deleted file mode 100644
index d71530a4b..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="DumpRenderTreeLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherProduction.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherProduction.props
deleted file mode 100644
index bbac39e8e..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="DumpRenderTreeLauncherCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props
deleted file mode 100644
index e0b4f3e74..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeLauncherRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="DumpRenderTreeLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePostBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePreBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePreBuild.cmd
deleted file mode 100644
index 43c41c896..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreePreBuild.cmd
+++ /dev/null
@@ -1,20 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
-
-mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree"
-mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders"
-mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\runtime"
-mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
-
-xcopy /y /d "%PROJECTDIR%\..\..\ForwardingHeaders\wtf\*.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
-xcopy /y /d "%PROJECTDIR%\..\..\ForwardingHeaders\runtime\*.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\runtime"
-
-if "%CONFIGURATIONNAME%"=="Debug_Cairo_CFLite" xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\wtf\MD5.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
-if "%CONFIGURATIONNAME%"=="Release_Cairo_CFLite" xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\wtf\MD5.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
-
-if "%CONFIGURATIONNAME%"=="Debug_Cairo" xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\wtf\MD5.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
-if "%CONFIGURATIONNAME%"=="Release_Cairo" xcopy /y /d "%CONFIGURATIONBUILDDIR%\include\WebCore\ForwardingHeaders\wtf\MD5.h" "%CONFIGURATIONBUILDDIR%\include\DumpRenderTree\ForwardingHeaders\wtf"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeProduction.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeProduction.props
deleted file mode 100644
index d019339ad..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeProduction.props
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="DumpRenderTreeApple.props" />
- <Import Project="DumpRenderTreeCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props
deleted file mode 100644
index 8bcd226d6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeRelease.props
+++ /dev/null
@@ -1,10 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="DumpRenderTreeCommon.props" />
- <Import Project="DumpRenderTreeApple.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props
deleted file mode 100644
index d2e6434d8..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/DumpRenderTree/DumpRenderTreeReleaseWinCairo.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\cURL.props" />
- <Import Project="..\..\..\..\Source\WebKit\WebKit.vcxproj\WebKit\WebKitCFLite.props" />
- <Import Project="DumpRenderTreeCommon.props" />
- </ImportGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)\..\..\cairo;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- </ClCompile>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj
deleted file mode 100644
index fefaa7214..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiff.vcxproj
+++ /dev/null
@@ -1,191 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{59CC0547-70AC-499C-9B19-EC01C6F61137}</ProjectGuid>
- <RootNamespace>ImageDiff</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\cg\ImageDiffCG.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\..\win\ImageDiffCairo.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\..\win\ImageDiffWin.cpp" />
- </ItemGroup>
- <ItemGroup>
- <None Include="ImageDiffPostBuild.cmd" />
- <None Include="ImageDiffPreBuild.cmd" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommon.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommon.props
deleted file mode 100644
index 481dd6611..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommon.props
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalOptions>/NXCOMPAT %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>WTF$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;CoreGraphics$(DebugSuffix).lib;CoreFoundation$(DebugSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommonWinCairo.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommonWinCairo.props
deleted file mode 100644
index 4a7b11db6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffCommonWinCairo.props
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ConfigurationBuildDir)\include;$(ConfigurationBuildDir)\include\private;$(ConfigurationBuildDir)\include\private\JavaScriptCore;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>NOMINMAX;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalOptions>/NXCOMPAT %(AdditionalOptions)</AdditionalOptions>
- <AdditionalDependencies>JavaScriptCore.lib;CFLite.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <SubSystem>Console</SubSystem>
- </Link>
- </ItemDefinitionGroup>
-</Project>
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebug.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebug.props
deleted file mode 100644
index e1a01da8e..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="ImageDiffCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebugWinCairo.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebugWinCairo.props
deleted file mode 100644
index 1ede8e67f..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffDebugWinCairo.props
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="ImageDiffCommonWinCairo.props" />
- </ImportGroup>
-</Project>
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj
deleted file mode 100644
index 3c6d90c3c..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncher.vcxproj
+++ /dev/null
@@ -1,172 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{DD7949B6-F2B4-47C2-9C42-E21E84CB1017}</ProjectGuid>
- <RootNamespace>ImageDiffLauncher</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="ImageDiffLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="..\..\..\win\DLLLauncher\DLLLauncherMain.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props
deleted file mode 100644
index d2518ea56..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherCommon.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <TargetName>ImageDiff</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <PreprocessorDefinitions>USE_CONSOLE_ENTRY_POINT;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)ImageDiff$(DebugSuffix).exe</OutputFile>
- <SubSystem>Console</SubSystem>
- <ProgramDatabaseFile>$(TargetDir)$(TargetName)Launcher.pdb</ProgramDatabaseFile>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherDebug.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherDebug.props
deleted file mode 100644
index caeb2c270..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="ImageDiffLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherProduction.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherProduction.props
deleted file mode 100644
index c927a95f3..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="ImageDiffLauncherCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props
deleted file mode 100644
index a9b230b60..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffLauncherRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="ImageDiffLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPostBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPreBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffProduction.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffProduction.props
deleted file mode 100644
index 731805d77..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="ImageDiffCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props
deleted file mode 100644
index 274a760b7..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="ImageDiffCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffReleaseWinCairo.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffReleaseWinCairo.props
deleted file mode 100644
index d3a08b48d..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/ImageDiff/ImageDiffReleaseWinCairo.props
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="ImageDiffCommonWinCairo.props" />
- </ImportGroup>
-</Project>
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.def b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.def
deleted file mode 100644
index a0ea7a984..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.def
+++ /dev/null
@@ -1,4 +0,0 @@
-EXPORTS
- NP_GetEntryPoints @1
- NP_Initialize @2
- NP_Shutdown @3
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.rc b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.rc
deleted file mode 100644
index a9446c9f7..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.rc
+++ /dev/null
@@ -1,102 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#include "windows.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 ""windows.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", "Simple Netscape plug-in that handles test content for WebKit"
- VALUE "FileExtents", "testnetscape|png"
- VALUE "FileOpenName", "test netscape content|PNG image"
- VALUE "LegalCopyright", "Copyright Apple Inc. 2007-2009"
- VALUE "MIMEType", "application/x-webkit-test-netscape|image/png"
- VALUE "OriginalFilename", "npTestNetscapePlugin.dll"
- VALUE "ProductName", "WebKit Test PlugIn"
- 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/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj
deleted file mode 100644
index cbba93b14..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj
+++ /dev/null
@@ -1,225 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\TestNetscapePlugIn\main.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\PluginObject.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\PluginTest.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\TestObject.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\DocumentOpenInDestroyStream.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\EvaluateJSAfterRemovingPluginElement.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\FormValue.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLNotifyWithURLThatFailsToLoad.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLWithJavaScriptURL.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLWithJavaScriptURLDestroyingPlugin.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetUserAgentWithNullNPPFromNPPNew.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\LogNPPSetWindow.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPDeallocateCalledBeforeNPShutdown.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPPNewFails.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPPSetWindowCalledDuringDestruction.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeCallsWithNullNPP.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeObjectFromDestroyedPlugin.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeRemoveProperty.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NullNPPGetValuePointer.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PassDifferentNPPStruct.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PluginScriptableNPObjectInvokeDefault.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PluginScriptableObjectOverridesAllProperties.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PrivateBrowsing.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\ToStringAndValueOfObject.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\CallJSThatDestroysPlugin.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\DrawsGradient.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\DumpWindowRect.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\GetValueNetscapeWindow.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\NPNInvalidateRectInvalidatesWindow.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowGeometryInitializedBeforeSetWindow.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowlessPaintRectCoordinates.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowRegionIsSetToClipRect.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\win\WindowedPluginTest.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\win\WindowGeometryTest.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\TestNetscapePlugIn\PluginObject.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\PluginTest.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\TestObject.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\win\WindowedPluginTest.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\win\WindowGeometryTest.h" />
- <ClInclude Include="resource.h" />
- </ItemGroup>
- <ItemGroup>
- <None Include="TestNetscapePlugin.def" />
- <None Include="TestNetscapePluginPostBuild.cmd" />
- <None Include="TestNetscapePluginPreBuild.cmd" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="TestNetscapePlugin.rc" />
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{C0737398-3565-439E-A2B8-AB2BE4D5430C}</ProjectGuid>
- <RootNamespace>TestNetscapePlugin</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestNetscapePluginDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">
- <Link />
- </ItemDefinitionGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters
deleted file mode 100644
index da42a5708..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePlugin.vcxproj.filters
+++ /dev/null
@@ -1,139 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <ClCompile Include="..\..\TestNetscapePlugIn\main.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\PluginObject.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\PluginTest.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\TestObject.cpp" />
- <ClCompile Include="..\..\TestNetscapePlugIn\win\WindowedPluginTest.cpp">
- <Filter>win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\win\WindowGeometryTest.cpp">
- <Filter>win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\DocumentOpenInDestroyStream.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\EvaluateJSAfterRemovingPluginElement.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\FormValue.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLNotifyWithURLThatFailsToLoad.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLWithJavaScriptURL.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetURLWithJavaScriptURLDestroyingPlugin.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\GetUserAgentWithNullNPPFromNPPNew.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\LogNPPSetWindow.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPDeallocateCalledBeforeNPShutdown.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPPNewFails.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPPSetWindowCalledDuringDestruction.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeCallsWithNullNPP.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeObjectFromDestroyedPlugin.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NPRuntimeRemoveProperty.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\NullNPPGetValuePointer.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PassDifferentNPPStruct.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PluginScriptableNPObjectInvokeDefault.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PluginScriptableObjectOverridesAllProperties.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\PrivateBrowsing.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\ToStringAndValueOfObject.cpp">
- <Filter>Tests</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\CallJSThatDestroysPlugin.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\DrawsGradient.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\DumpWindowRect.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\GetValueNetscapeWindow.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\NPNInvalidateRectInvalidatesWindow.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowGeometryInitializedBeforeSetWindow.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowlessPaintRectCoordinates.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- <ClCompile Include="..\..\TestNetscapePlugIn\Tests\win\WindowRegionIsSetToClipRect.cpp">
- <Filter>Tests\win</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\..\TestNetscapePlugIn\PluginObject.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\PluginTest.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\TestObject.h" />
- <ClInclude Include="..\..\TestNetscapePlugIn\win\WindowedPluginTest.h">
- <Filter>win</Filter>
- </ClInclude>
- <ClInclude Include="..\..\TestNetscapePlugIn\win\WindowGeometryTest.h">
- <Filter>win</Filter>
- </ClInclude>
- <ClInclude Include="resource.h">
- <Filter>Resources</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <Filter Include="win">
- <UniqueIdentifier>{aa1f1b22-247a-4070-93ee-9c1bb139a200}</UniqueIdentifier>
- </Filter>
- <Filter Include="Resources">
- <UniqueIdentifier>{a13508d3-bda2-4026-bd33-320d54d4ae5a}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests">
- <UniqueIdentifier>{33b0adeb-c8af-4e7a-b827-3ea7ed8a095b}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests\win">
- <UniqueIdentifier>{62e11b7d-49c8-463f-8897-fcc43d8f314c}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="TestNetscapePlugin.def">
- <Filter>Resources</Filter>
- </None>
- <None Include="TestNetscapePluginPostBuild.cmd" />
- <None Include="TestNetscapePluginPreBuild.cmd" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="TestNetscapePlugin.rc">
- <Filter>Resources</Filter>
- </ResourceCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props
deleted file mode 100644
index ff33e6f28..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginCommon.props
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <TargetName>np$(ProjectName)$(DebugSuffix)</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir);$(ProjectDir)..\..\TestNetscapePlugIn;$(ProjectDir)..\..\TestNetscapePlugIn\win;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\include;$(WebKit_Libraries)\include\private;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>snprintf=_snprintf;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- <Link>
- <AdditionalDependencies>Msimg32.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <ModuleDefinitionFile>TestNetscapePlugin.def</ModuleDefinitionFile>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginDebug.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginDebug.props
deleted file mode 100644
index d56c0e6b4..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="TestNetscapePluginCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPostBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPreBuild.cmd b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginProduction.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginProduction.props
deleted file mode 100644
index d367b0c63..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="TestNetscapePluginCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props
deleted file mode 100644
index 478ed3a84..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/TestNetscapePluginRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="TestNetscapePluginCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/resource.h b/Tools/DumpRenderTree/DumpRenderTree.vcxproj/TestNetscapePlugin/resource.h
deleted file mode 100644
index b0ce34048..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.vcxproj/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/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj b/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
deleted file mode 100644
index 97672ab9f..000000000
--- a/Tools/DumpRenderTree/DumpRenderTree.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,1327 +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 = (
- 2D403F211508736C005358D2 /* PBXTargetDependency */,
- A84F609108B1370E00E9745F /* PBXTargetDependency */,
- A84F608F08B1370E00E9745F /* PBXTargetDependency */,
- 141BF238096A451E00E0753C /* PBXTargetDependency */,
- 5DC82A701023C93D00FD1D3B /* PBXTargetDependency */,
- );
- name = All;
- productName = All;
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 0F37A4A711E6628700275F54 /* PluginObjectMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */; };
- 0F37A4AA11E6629100275F54 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B5A752A108AF5D1F00138E45 /* QuartzCore.framework */; };
- 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 */; };
- 1A14C8A51406DE0400B254F7 /* SupportsCarbonEventModel.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A14C8A31406DE0400B254F7 /* SupportsCarbonEventModel.cpp */; };
- 1A1E4298141141C400388758 /* PrivateBrowsing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A1E4296141141C400388758 /* PrivateBrowsing.cpp */; };
- 1A215A8111F2609C008AD0F5 /* PluginTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A215A7F11F2609C008AD0F5 /* PluginTest.cpp */; };
- 1A215A8211F2609C008AD0F5 /* PluginTest.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A215A8011F2609C008AD0F5 /* PluginTest.h */; };
- 1A215BE711F27658008AD0F5 /* DocumentOpenInDestroyStream.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A215A7511F26072008AD0F5 /* DocumentOpenInDestroyStream.cpp */; };
- 1A24BAA9120734EE00FBB059 /* NPRuntimeObjectFromDestroyedPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A24BAA8120734EE00FBB059 /* NPRuntimeObjectFromDestroyedPlugin.cpp */; };
- 1A2FB84E178C80930059FD96 /* DefaultPolicyDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A2FB84C178C80920059FD96 /* DefaultPolicyDelegate.h */; };
- 1A2FB84F178C80930059FD96 /* DefaultPolicyDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2FB84D178C80930059FD96 /* DefaultPolicyDelegate.m */; };
- 1A31EB3813466AC100017372 /* ConvertPoint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A31EB3713466AC100017372 /* ConvertPoint.cpp */; };
- 1A3E28AA1311D73B00501349 /* GetURLWithJavaScriptURLDestroyingPlugin.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A3E28A91311D73B00501349 /* GetURLWithJavaScriptURLDestroyingPlugin.cpp */; };
- 1A4CCD4F171375A300981040 /* ToStringAndValueOfObject.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A4CCD4E171375A300981040 /* ToStringAndValueOfObject.cpp */; };
- 1A5CC1F5137DD2EC00A5D7E7 /* GetURLWithJavaScriptURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A5CC1F3137DD2EC00A5D7E7 /* GetURLWithJavaScriptURL.cpp */; };
- 1A66C35114576A920099A115 /* ContentsScaleFactor.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A66C34F14576A920099A115 /* ContentsScaleFactor.cpp */; };
- 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 */; };
- 1AC77DCF120605B6005C19EF /* NPRuntimeRemoveProperty.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AC77DCE120605B6005C19EF /* NPRuntimeRemoveProperty.cpp */; };
- 1ACF898D132EF41C00E915D4 /* NPDeallocateCalledBeforeNPShutdown.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ACF898B132EF41C00E915D4 /* NPDeallocateCalledBeforeNPShutdown.cpp */; };
- 1AD4CB2212A6D1350027A7AF /* GetUserAgentWithNullNPPFromNPPNew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD4CB2012A6D1350027A7AF /* GetUserAgentWithNullNPPFromNPPNew.cpp */; };
- 1AD8683F163B2FD000A28583 /* NPRuntimeCallsWithNullNPP.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD8683D163B2FD000A28583 /* NPRuntimeCallsWithNullNPP.cpp */; };
- 1AD9D2FE12028409001A70D1 /* PluginScriptableNPObjectInvokeDefault.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AD9D2FD12028409001A70D1 /* PluginScriptableNPObjectInvokeDefault.cpp */; };
- 1AFF66BC137DEFD200791696 /* GetURLNotifyWithURLThatFailsToLoad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AFF66BB137DEA8300791696 /* GetURLNotifyWithURLThatFailsToLoad.cpp */; };
- 23BCB8900EA57623003C6289 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23BCB88F0EA57623003C6289 /* OpenGL.framework */; };
- 29CFBA10122736E600BC30C0 /* AccessibilityTextMarker.h in Headers */ = {isa = PBXBuildFile; fileRef = 29CFBA0E122736E600BC30C0 /* AccessibilityTextMarker.h */; };
- 29CFBA11122736E600BC30C0 /* AccessibilityTextMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29CFBA0F122736E600BC30C0 /* AccessibilityTextMarker.cpp */; };
- 29CFBA2E12273A1000BC30C0 /* AccessibilityTextMarkerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29CFBA2D12273A1000BC30C0 /* AccessibilityTextMarkerMac.mm */; };
- 2CE88FA217124D8C00734FC0 /* JavaScriptThreading.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2CE88FA117124CEE00734FC0 /* JavaScriptThreading.cpp */; };
- 2D403F05150871F9005358D2 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AE8257EF08D22389000507AB /* Carbon.framework */; };
- 2D403F06150871F9005358D2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A84F608908B136DA00E9745F /* Cocoa.framework */; };
- 2D403F08150871F9005358D2 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 23BCB88F0EA57623003C6289 /* OpenGL.framework */; };
- 2D403F1B15087209005358D2 /* LayoutTestHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D403EA215087142005358D2 /* LayoutTestHelper.m */; };
- 31117B3C15D9A56A00163BC8 /* MockWebNotificationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = 31117B3A15D9A56A00163BC8 /* MockWebNotificationProvider.h */; };
- 31117B3D15D9A56A00163BC8 /* MockWebNotificationProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = 31117B3B15D9A56A00163BC8 /* MockWebNotificationProvider.mm */; };
- 3A5626CB131CA02A002BE6D9 /* StorageTrackerDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3A5626C1131C8B17002BE6D9 /* StorageTrackerDelegate.mm */; };
- 3A5626CC131CA036002BE6D9 /* StorageTrackerDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A5626C0131C8B17002BE6D9 /* StorageTrackerDelegate.h */; };
- 417DAA1D137B3E24007C57FB /* WebCoreTestSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 417DAA1C137B3E24007C57FB /* WebCoreTestSupport.h */; };
- 440590711268453800CFD48D /* WebArchiveDumpSupportMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 440590701268453800CFD48D /* WebArchiveDumpSupportMac.mm */; };
- 4437730E125CBC3600AAE02C /* WebArchiveDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 44A997830FCDE86400580F10 /* WebArchiveDumpSupport.cpp */; };
- 4437730F125CBC4D00AAE02C /* WebArchiveDumpSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = 44A997820FCDE86400580F10 /* WebArchiveDumpSupport.h */; };
- 4AD6A11413C8124000EA9737 /* FormValue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4AD6A11313C8124000EA9737 /* FormValue.cpp */; };
- 5106803E15CC7B10001A8A23 /* SlowNPPNew.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5106803D15CC7B10001A8A23 /* SlowNPPNew.cpp */; };
- 51134C9916014FDC001AA513 /* InvokeDestroysPluginWithinNPP_New.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51134C9816014FDB001AA513 /* InvokeDestroysPluginWithinNPP_New.cpp */; };
- 5113DE6715F6CBE5005EC8B3 /* NPPNewFails.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5113DE6615F6CBE5005EC8B3 /* NPPNewFails.cpp */; };
- 515C0CD015EE785700F5A613 /* LogNPPSetWindow.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515C0CCF15EE785700F5A613 /* LogNPPSetWindow.cpp */; };
- 515F429C15C07872007C8F90 /* PluginScriptableObjectOverridesAllProperties.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 515F429B15C07872007C8F90 /* PluginScriptableObjectOverridesAllProperties.cpp */; };
- 5185F6B210714E07007AA393 /* HistoryDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5185F69F10714A57007AA393 /* HistoryDelegate.mm */; };
- 5185F6B310714E12007AA393 /* HistoryDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 5185F69E10714A57007AA393 /* HistoryDelegate.h */; };
- 51CACBD815D96FD000EB53A2 /* EvaluateJSWithinNPP_New.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51CACBD715D96FD000EB53A2 /* EvaluateJSWithinNPP_New.cpp */; };
- 53CBB832134E42F3001CE6A4 /* CyclicRedundancyCheck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 53CBB830134E42F3001CE6A4 /* CyclicRedundancyCheck.cpp */; };
- 53CBB833134E42F3001CE6A4 /* CyclicRedundancyCheck.h in Headers */ = {isa = PBXBuildFile; fileRef = 53CBB831134E42F3001CE6A4 /* CyclicRedundancyCheck.h */; };
- 5DB9AC970F722C3600684641 /* AHEM____.TTF in Copy Font Files */ = {isa = PBXBuildFile; fileRef = AA7F10C20CB3C1030003BDC9 /* AHEM____.TTF */; };
- 5DB9AC980F722C3600684641 /* WebKitWeightWatcher100.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09710DAC3CB600C8B4E5 /* WebKitWeightWatcher100.ttf */; };
- 5DB9AC990F722C3600684641 /* WebKitWeightWatcher200.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09720DAC3CB600C8B4E5 /* WebKitWeightWatcher200.ttf */; };
- 5DB9AC9A0F722C3600684641 /* WebKitWeightWatcher300.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09730DAC3CB600C8B4E5 /* WebKitWeightWatcher300.ttf */; };
- 5DB9AC9B0F722C3600684641 /* WebKitWeightWatcher400.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09740DAC3CB600C8B4E5 /* WebKitWeightWatcher400.ttf */; };
- 5DB9AC9C0F722C3600684641 /* WebKitWeightWatcher500.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09750DAC3CB600C8B4E5 /* WebKitWeightWatcher500.ttf */; };
- 5DB9AC9D0F722C3600684641 /* WebKitWeightWatcher600.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09760DAC3CB600C8B4E5 /* WebKitWeightWatcher600.ttf */; };
- 5DB9AC9E0F722C3600684641 /* WebKitWeightWatcher700.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09770DAC3CB600C8B4E5 /* WebKitWeightWatcher700.ttf */; };
- 5DB9AC9F0F722C3600684641 /* WebKitWeightWatcher800.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09780DAC3CB600C8B4E5 /* WebKitWeightWatcher800.ttf */; };
- 5DB9ACA00F722C3600684641 /* WebKitWeightWatcher900.ttf in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 375F09790DAC3CB600C8B4E5 /* WebKitWeightWatcher900.ttf */; };
- 5DE8AE4413A2C15900D6A37D /* libWebCoreTestSupport.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DE8AE4313A2C15800D6A37D /* libWebCoreTestSupport.dylib */; };
- 80045AED147718E7008290A8 /* AccessibilityNotificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 80045AEB147718E7008290A8 /* AccessibilityNotificationHandler.h */; };
- 80045AEE147718E7008290A8 /* AccessibilityNotificationHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 80045AEC147718E7008290A8 /* AccessibilityNotificationHandler.mm */; };
- 8465E2C70FFA8DF2003B8342 /* PixelDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.cpp */; };
- 8CCDA82A151A72D10003F937 /* SampleFont.sfont in Copy Font Files */ = {isa = PBXBuildFile; fileRef = 8CCDA81F151A56550003F937 /* SampleFont.sfont */; };
- 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */ = {isa = PBXBuildFile; fileRef = 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */; };
- 9340995108540CAE007F3BC8 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9335435F03D75502008635CE /* WebKit.framework */; };
- 9830F31F15C81181005AB206 /* DumpRenderTreeCommon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */; };
- 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 */; };
- A8D79CEA0FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h in Headers */ = {isa = PBXBuildFile; fileRef = A8D79CE80FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h */; };
- A8D79CEB0FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m in Sources */ = {isa = PBXBuildFile; fileRef = A8D79CE90FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m */; };
- AA5A15EF16E15CD000F7C561 /* AccessibilityControllerIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = AA5A15ED16E15CD000F7C561 /* AccessibilityControllerIOS.mm */; };
- AA5A15F016E15CD000F7C561 /* AccessibilityUIElementIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = AA5A15EE16E15CD000F7C561 /* AccessibilityUIElementIOS.mm */; };
- 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 /* TestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC0131D80C9772010087317D /* TestRunner.cpp */; };
- BC0131DB0C9772010087317D /* TestRunner.h in Headers */ = {isa = PBXBuildFile; fileRef = BC0131D90C9772010087317D /* TestRunner.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 */; };
- BC0E26150E2DA4C6001B6BC3 /* AccessibilityCommonMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC0E26140E2DA4C6001B6BC3 /* AccessibilityCommonMac.mm */; };
- BC47412A0D038A4C0072B006 /* JavaScriptThreading.h in Headers */ = {isa = PBXBuildFile; fileRef = BC4741290D038A4C0072B006 /* JavaScriptThreading.h */; };
- 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 /* TestRunnerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCA18B220C9B014B00114369 /* TestRunnerMac.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 */; };
- C031182B134E4A2B00919757 /* NPPSetWindowCalledDuringDestruction.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C031182A134E4A2B00919757 /* NPPSetWindowCalledDuringDestruction.cpp */; };
- C06F9ABC1267A7060058E1F6 /* PassDifferentNPPStruct.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C06F9ABB1267A7060058E1F6 /* PassDifferentNPPStruct.cpp */; };
- C0E720751281C828004EF533 /* EvaluateJSAfterRemovingPluginElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0E720741281C828004EF533 /* EvaluateJSAfterRemovingPluginElement.cpp */; };
- C0EC3C9C12787F0500939164 /* NullNPPGetValuePointer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0EC3C9B12787F0500939164 /* NullNPPGetValuePointer.cpp */; };
- E1B7816511AF31B7007E1BC2 /* MockGeolocationProvider.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1B7808711AF1669007E1BC2 /* MockGeolocationProvider.mm */; };
- E1B7816711AF31C3007E1BC2 /* MockGeolocationProvider.h in Headers */ = {isa = PBXBuildFile; fileRef = E1B7808511AF1643007E1BC2 /* MockGeolocationProvider.h */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- 141BF237096A451E00E0753C /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 141BF21E096A441D00E0753C;
- remoteInfo = TestNetscapePlugIn;
- };
- 2D403F201508736C005358D2 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 2D403EB2150871F9005358D2;
- remoteInfo = LayoutTestHelper;
- };
- 378C802315AB589B00746821 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 9340994A08540CAE007F3BC8;
- remoteInfo = DumpRenderTree;
- };
- 5DC82A6F1023C93D00FD1D3B /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 5DC82A661023C8DE00FD1D3B;
- remoteInfo = "DumpRenderTree Perl Support";
- };
- 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 PBXCopyFilesBuildPhase section */
- 5DB9ACAA0F722C4400684641 /* Copy Font Files */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = DumpRenderTree.resources;
- dstSubfolderSpec = 7;
- files = (
- 5DB9AC970F722C3600684641 /* AHEM____.TTF in Copy Font Files */,
- 8CCDA82A151A72D10003F937 /* SampleFont.sfont in Copy Font Files */,
- 5DB9AC980F722C3600684641 /* WebKitWeightWatcher100.ttf in Copy Font Files */,
- 5DB9AC990F722C3600684641 /* WebKitWeightWatcher200.ttf in Copy Font Files */,
- 5DB9AC9A0F722C3600684641 /* WebKitWeightWatcher300.ttf in Copy Font Files */,
- 5DB9AC9B0F722C3600684641 /* WebKitWeightWatcher400.ttf in Copy Font Files */,
- 5DB9AC9C0F722C3600684641 /* WebKitWeightWatcher500.ttf in Copy Font Files */,
- 5DB9AC9D0F722C3600684641 /* WebKitWeightWatcher600.ttf in Copy Font Files */,
- 5DB9AC9E0F722C3600684641 /* WebKitWeightWatcher700.ttf in Copy Font Files */,
- 5DB9AC9F0F722C3600684641 /* WebKitWeightWatcher800.ttf in Copy Font Files */,
- 5DB9ACA00F722C3600684641 /* WebKitWeightWatcher900.ttf in Copy Font Files */,
- );
- name = "Copy Font Files";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PluginObjectMac.mm; sourceTree = "<group>"; };
- 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; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; };
- 14770FE00A22ADF7009342EE /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = "<group>"; };
- 1A14C8A31406DE0400B254F7 /* SupportsCarbonEventModel.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SupportsCarbonEventModel.cpp; sourceTree = "<group>"; };
- 1A1E4296141141C400388758 /* PrivateBrowsing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrivateBrowsing.cpp; sourceTree = "<group>"; };
- 1A215A7511F26072008AD0F5 /* DocumentOpenInDestroyStream.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentOpenInDestroyStream.cpp; sourceTree = "<group>"; };
- 1A215A7F11F2609C008AD0F5 /* PluginTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginTest.cpp; sourceTree = "<group>"; };
- 1A215A8011F2609C008AD0F5 /* PluginTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PluginTest.h; sourceTree = "<group>"; };
- 1A24BAA8120734EE00FBB059 /* NPRuntimeObjectFromDestroyedPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPRuntimeObjectFromDestroyedPlugin.cpp; sourceTree = "<group>"; };
- 1A2FB84C178C80920059FD96 /* DefaultPolicyDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DefaultPolicyDelegate.h; sourceTree = "<group>"; };
- 1A2FB84D178C80930059FD96 /* DefaultPolicyDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DefaultPolicyDelegate.m; sourceTree = "<group>"; };
- 1A31EB3713466AC100017372 /* ConvertPoint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConvertPoint.cpp; sourceTree = "<group>"; };
- 1A3E28A91311D73B00501349 /* GetURLWithJavaScriptURLDestroyingPlugin.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetURLWithJavaScriptURLDestroyingPlugin.cpp; sourceTree = "<group>"; };
- 1A4CCD4E171375A300981040 /* ToStringAndValueOfObject.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ToStringAndValueOfObject.cpp; sourceTree = "<group>"; };
- 1A5CC1F3137DD2EC00A5D7E7 /* GetURLWithJavaScriptURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetURLWithJavaScriptURL.cpp; sourceTree = "<group>"; };
- 1A66C34F14576A920099A115 /* ContentsScaleFactor.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ContentsScaleFactor.cpp; 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>"; };
- 1AC77DCE120605B6005C19EF /* NPRuntimeRemoveProperty.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPRuntimeRemoveProperty.cpp; sourceTree = "<group>"; };
- 1ACF898B132EF41C00E915D4 /* NPDeallocateCalledBeforeNPShutdown.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPDeallocateCalledBeforeNPShutdown.cpp; sourceTree = "<group>"; };
- 1AD4CB2012A6D1350027A7AF /* GetUserAgentWithNullNPPFromNPPNew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetUserAgentWithNullNPPFromNPPNew.cpp; sourceTree = "<group>"; };
- 1AD8683D163B2FD000A28583 /* NPRuntimeCallsWithNullNPP.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPRuntimeCallsWithNullNPP.cpp; sourceTree = "<group>"; };
- 1AD9D2FD12028409001A70D1 /* PluginScriptableNPObjectInvokeDefault.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginScriptableNPObjectInvokeDefault.cpp; sourceTree = "<group>"; };
- 1AFF66BB137DEA8300791696 /* GetURLNotifyWithURLThatFailsToLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetURLNotifyWithURLThatFailsToLoad.cpp; sourceTree = "<group>"; };
- 23BCB88F0EA57623003C6289 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
- 29CFBA0E122736E600BC30C0 /* AccessibilityTextMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTextMarker.h; sourceTree = "<group>"; };
- 29CFBA0F122736E600BC30C0 /* AccessibilityTextMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTextMarker.cpp; sourceTree = "<group>"; };
- 29CFBA2D12273A1000BC30C0 /* AccessibilityTextMarkerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityTextMarkerMac.mm; path = mac/AccessibilityTextMarkerMac.mm; sourceTree = "<group>"; };
- 2CE88FA117124CEE00734FC0 /* JavaScriptThreading.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JavaScriptThreading.cpp; sourceTree = "<group>"; };
- 2D403EA215087142005358D2 /* LayoutTestHelper.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = LayoutTestHelper.m; path = mac/LayoutTestHelper.m; sourceTree = "<group>"; };
- 2D403F19150871F9005358D2 /* LayoutTestHelper */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = LayoutTestHelper; sourceTree = BUILT_PRODUCTS_DIR; };
- 31117B3A15D9A56A00163BC8 /* MockWebNotificationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MockWebNotificationProvider.h; path = mac/MockWebNotificationProvider.h; sourceTree = "<group>"; };
- 31117B3B15D9A56A00163BC8 /* MockWebNotificationProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MockWebNotificationProvider.mm; path = mac/MockWebNotificationProvider.mm; sourceTree = "<group>"; };
- 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>"; };
- 3A5626C0131C8B17002BE6D9 /* StorageTrackerDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StorageTrackerDelegate.h; sourceTree = "<group>"; };
- 3A5626C1131C8B17002BE6D9 /* StorageTrackerDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StorageTrackerDelegate.mm; sourceTree = "<group>"; };
- 417DAA1C137B3E24007C57FB /* WebCoreTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebCoreTestSupport.h; path = WebCoreTestSupport/WebCoreTestSupport.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 440590701268453800CFD48D /* WebArchiveDumpSupportMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebArchiveDumpSupportMac.mm; path = mac/WebArchiveDumpSupportMac.mm; sourceTree = "<group>"; };
- 44A997820FCDE86400580F10 /* WebArchiveDumpSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebArchiveDumpSupport.h; path = cf/WebArchiveDumpSupport.h; sourceTree = "<group>"; };
- 44A997830FCDE86400580F10 /* WebArchiveDumpSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebArchiveDumpSupport.cpp; path = cf/WebArchiveDumpSupport.cpp; sourceTree = "<group>"; };
- 4AD6A11313C8124000EA9737 /* FormValue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FormValue.cpp; sourceTree = "<group>"; };
- 5106803D15CC7B10001A8A23 /* SlowNPPNew.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SlowNPPNew.cpp; path = TestNetscapePlugIn/Tests/SlowNPPNew.cpp; sourceTree = SOURCE_ROOT; };
- 51134C9816014FDB001AA513 /* InvokeDestroysPluginWithinNPP_New.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InvokeDestroysPluginWithinNPP_New.cpp; sourceTree = "<group>"; };
- 5113DE6615F6CBE5005EC8B3 /* NPPNewFails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPPNewFails.cpp; sourceTree = "<group>"; };
- 515C0CCF15EE785700F5A613 /* LogNPPSetWindow.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LogNPPSetWindow.cpp; sourceTree = "<group>"; };
- 515F429B15C07872007C8F90 /* PluginScriptableObjectOverridesAllProperties.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PluginScriptableObjectOverridesAllProperties.cpp; sourceTree = "<group>"; };
- 5185F69E10714A57007AA393 /* HistoryDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HistoryDelegate.h; path = mac/HistoryDelegate.h; sourceTree = "<group>"; };
- 5185F69F10714A57007AA393 /* HistoryDelegate.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; name = HistoryDelegate.mm; path = mac/HistoryDelegate.mm; sourceTree = "<group>"; };
- 51CACBD715D96FD000EB53A2 /* EvaluateJSWithinNPP_New.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = EvaluateJSWithinNPP_New.cpp; path = TestNetscapePlugIn/Tests/EvaluateJSWithinNPP_New.cpp; sourceTree = SOURCE_ROOT; };
- 53CBB830134E42F3001CE6A4 /* CyclicRedundancyCheck.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CyclicRedundancyCheck.cpp; sourceTree = "<group>"; };
- 53CBB831134E42F3001CE6A4 /* CyclicRedundancyCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CyclicRedundancyCheck.h; sourceTree = "<group>"; };
- 5DE8AE4313A2C15800D6A37D /* libWebCoreTestSupport.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libWebCoreTestSupport.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- 80045AEB147718E7008290A8 /* AccessibilityNotificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AccessibilityNotificationHandler.h; path = mac/AccessibilityNotificationHandler.h; sourceTree = "<group>"; };
- 80045AEC147718E7008290A8 /* AccessibilityNotificationHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityNotificationHandler.mm; path = mac/AccessibilityNotificationHandler.mm; sourceTree = "<group>"; };
- 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = PixelDumpSupport.cpp; sourceTree = "<group>"; };
- 8CCDA81F151A56550003F937 /* SampleFont.sfont */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SampleFont.sfont; path = fonts/SampleFont.sfont; 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; };
- 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DumpRenderTreeCommon.cpp; sourceTree = "<group>"; };
- 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>"; };
- A8D79CE80FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DumpRenderTreeFileDraggingSource.h; sourceTree = "<group>"; };
- A8D79CE90FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = DumpRenderTreeFileDraggingSource.m; sourceTree = "<group>"; };
- AA5A15ED16E15CD000F7C561 /* AccessibilityControllerIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityControllerIOS.mm; path = ios/AccessibilityControllerIOS.mm; sourceTree = "<group>"; };
- AA5A15EE16E15CD000F7C561 /* AccessibilityUIElementIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityUIElementIOS.mm; path = ios/AccessibilityUIElementIOS.mm; 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 /* TestRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = TestRunner.cpp; sourceTree = "<group>"; };
- BC0131D90C9772010087317D /* TestRunner.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = TestRunner.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>"; };
- BC0E26140E2DA4C6001B6BC3 /* AccessibilityCommonMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityCommonMac.mm; path = mac/AccessibilityCommonMac.mm; sourceTree = "<group>"; };
- BC4741290D038A4C0072B006 /* JavaScriptThreading.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptThreading.h; sourceTree = "<group>"; };
- BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; 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 /* TestRunnerMac.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = TestRunnerMac.mm; path = mac/TestRunnerMac.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; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; 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; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; path = GCController.cpp; sourceTree = "<group>"; };
- C031182A134E4A2B00919757 /* NPPSetWindowCalledDuringDestruction.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NPPSetWindowCalledDuringDestruction.cpp; sourceTree = "<group>"; };
- C06F9ABB1267A7060058E1F6 /* PassDifferentNPPStruct.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PassDifferentNPPStruct.cpp; sourceTree = "<group>"; };
- C0E720741281C828004EF533 /* EvaluateJSAfterRemovingPluginElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EvaluateJSAfterRemovingPluginElement.cpp; sourceTree = "<group>"; };
- C0EC3C9B12787F0500939164 /* NullNPPGetValuePointer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NullNPPGetValuePointer.cpp; sourceTree = "<group>"; };
- E1B7808511AF1643007E1BC2 /* MockGeolocationProvider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MockGeolocationProvider.h; path = mac/MockGeolocationProvider.h; sourceTree = "<group>"; };
- E1B7808711AF1669007E1BC2 /* MockGeolocationProvider.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = MockGeolocationProvider.mm; path = mac/MockGeolocationProvider.mm; 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 */,
- 0F37A4AA11E6629100275F54 /* QuartzCore.framework in Frameworks */,
- 141BF435096A455900E0753C /* WebKit.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 2D403F03150871F9005358D2 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2D403F05150871F9005358D2 /* Carbon.framework in Frameworks */,
- 2D403F06150871F9005358D2 /* Cocoa.framework in Frameworks */,
- 2D403F08150871F9005358D2 /* OpenGL.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 */,
- 5DE8AE4413A2C15900D6A37D /* libWebCoreTestSupport.dylib in Frameworks */,
- 23BCB8900EA57623003C6289 /* OpenGL.framework in Frameworks */,
- 9340995108540CAE007F3BC8 /* WebKit.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 = (
- 1A2FB84C178C80920059FD96 /* DefaultPolicyDelegate.h */,
- 1A2FB84D178C80930059FD96 /* DefaultPolicyDelegate.m */,
- 9830F31E15C81181005AB206 /* DumpRenderTreeCommon.cpp */,
- 32A70AAB03705E1F00C91783 /* DumpRenderTreePrefix.h */,
- 1422A2750AF6F4BD00E1A883 /* Delegates */,
- 1422A2690AF6F45200E1A883 /* Controllers */,
- BCB284870CFA81ED007E533E /* PixelDump */,
- A803FF7409CAAD08009B2A37 /* DumpRenderTree.h */,
- BCA18C460C9B5B9400114369 /* DumpRenderTree.mm */,
- A8B91BF70CF522B4008F91FF /* CheckedMalloc.cpp */,
- A8B91BF90CF522B4008F91FF /* CheckedMalloc.h */,
- BC4741290D038A4C0072B006 /* JavaScriptThreading.h */,
- BCA18C0A0C9B59EF00114369 /* DumpRenderTreeMac.h */,
- BCA18B730C9B08F100114369 /* DumpRenderTreeDraggingInfo.h */,
- BCA18B740C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm */,
- A8D79CE80FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h */,
- A8D79CE90FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m */,
- 2CE88FA117124CEE00734FC0 /* JavaScriptThreading.cpp */,
- 44A997820FCDE86400580F10 /* WebArchiveDumpSupport.h */,
- 44A997830FCDE86400580F10 /* WebArchiveDumpSupport.cpp */,
- 440590701268453800CFD48D /* WebArchiveDumpSupportMac.mm */,
- BC9D90210C97472D0099A4A3 /* WorkQueue.cpp */,
- BC9D90220C97472E0099A4A3 /* WorkQueue.h */,
- BC9D90230C97472E0099A4A3 /* WorkQueueItem.h */,
- A8B91AD20CF3B305008F91FF /* AppKit Overrides */,
- A8B91AC40CF3B170008F91FF /* ObjCPlugin */,
- 141BF1F5096A439800E0753C /* TestNetscapePlugIn */,
- 2D403EA015087135005358D2 /* LayoutTestHelper */,
- 9345229B0BD12B2C0086EDA0 /* Resources */,
- 417DA9181373674D007C57FB /* WebCoreTestSupport */,
- A803FF6409CAACC1009B2A37 /* Frameworks */,
- 9340995508540CAF007F3BC8 /* Products */,
- BCB281ED0CFA711D007E533E /* Configurations */,
- );
- name = DumpRenderTree;
- sourceTree = "<group>";
- };
- 141BF1F5096A439800E0753C /* TestNetscapePlugIn */ = {
- isa = PBXGroup;
- children = (
- 1A215A6E11F25FF1008AD0F5 /* Tests */,
- 141BF448096A45C800E0753C /* Info.plist */,
- 1AC6C77F0D07589B00CD3161 /* main.cpp */,
- 1AC6C7800D07589B00CD3161 /* PluginObject.cpp */,
- 141BF447096A45C800E0753C /* PluginObject.h */,
- 0F37A4A611E6628700275F54 /* PluginObjectMac.mm */,
- 1A215A7F11F2609C008AD0F5 /* PluginTest.cpp */,
- 1A215A8011F2609C008AD0F5 /* PluginTest.h */,
- 1AC6C7810D07589B00CD3161 /* TestObject.cpp */,
- 1A8F024C0BB9B056008CFA34 /* TestObject.h */,
- );
- path = TestNetscapePlugIn;
- sourceTree = "<group>";
- };
- 1422A2690AF6F45200E1A883 /* Controllers */ = {
- isa = PBXGroup;
- children = (
- BC0E26140E2DA4C6001B6BC3 /* AccessibilityCommonMac.mm */,
- BCD08B390E1057EF00A7D0C1 /* AccessibilityController.cpp */,
- BCD08A580E10496B00A7D0C1 /* AccessibilityController.h */,
- AA5A15ED16E15CD000F7C561 /* AccessibilityControllerIOS.mm */,
- BCD08B700E1059D200A7D0C1 /* AccessibilityControllerMac.mm */,
- 80045AEB147718E7008290A8 /* AccessibilityNotificationHandler.h */,
- 80045AEC147718E7008290A8 /* AccessibilityNotificationHandler.mm */,
- 29CFBA0F122736E600BC30C0 /* AccessibilityTextMarker.cpp */,
- 29CFBA0E122736E600BC30C0 /* AccessibilityTextMarker.h */,
- 29CFBA2D12273A1000BC30C0 /* AccessibilityTextMarkerMac.mm */,
- BC0E24DF0E2D9451001B6BC2 /* AccessibilityUIElement.cpp */,
- BC0E24DE0E2D9451001B6BC2 /* AccessibilityUIElement.h */,
- AA5A15EE16E15CD000F7C561 /* AccessibilityUIElementIOS.mm */,
- BC0E26140E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm */,
- BCA18B360C9B021900114369 /* AppleScriptController.h */,
- BCA18B370C9B021900114369 /* AppleScriptController.m */,
- BCA18B6B0C9B08DB00114369 /* EventSendingController.h */,
- BCA18B6C0C9B08DB00114369 /* EventSendingController.mm */,
- BCF6C64F0C98E9C000AC063E /* GCController.cpp */,
- 14770FE00A22ADF7009342EE /* GCController.h */,
- BCA18B210C9B014B00114369 /* GCControllerMac.mm */,
- E1B7808511AF1643007E1BC2 /* MockGeolocationProvider.h */,
- E1B7808711AF1669007E1BC2 /* MockGeolocationProvider.mm */,
- 31117B3A15D9A56A00163BC8 /* MockWebNotificationProvider.h */,
- 31117B3B15D9A56A00163BC8 /* MockWebNotificationProvider.mm */,
- BCA18B6D0C9B08DB00114369 /* NavigationController.h */,
- BCA18B6E0C9B08DB00114369 /* NavigationController.m */,
- BCA18B2F0C9B01B400114369 /* ObjCController.h */,
- BCA18B300C9B01B400114369 /* ObjCController.m */,
- BC0131D80C9772010087317D /* TestRunner.cpp */,
- BC0131D90C9772010087317D /* TestRunner.h */,
- BCA18B220C9B014B00114369 /* TestRunnerMac.mm */,
- 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 */,
- 5185F69E10714A57007AA393 /* HistoryDelegate.h */,
- 5185F69F10714A57007AA393 /* HistoryDelegate.mm */,
- BCA18B5B0C9B08C200114369 /* PolicyDelegate.h */,
- BCA18B5C0C9B08C200114369 /* PolicyDelegate.mm */,
- BCA18B5D0C9B08C200114369 /* ResourceLoadDelegate.h */,
- BCA18B5E0C9B08C200114369 /* ResourceLoadDelegate.mm */,
- 3A5626C0131C8B17002BE6D9 /* StorageTrackerDelegate.h */,
- 3A5626C1131C8B17002BE6D9 /* StorageTrackerDelegate.mm */,
- BCA18B5F0C9B08C200114369 /* UIDelegate.h */,
- BCA18B600C9B08C200114369 /* UIDelegate.mm */,
- );
- name = Delegates;
- sourceTree = "<group>";
- };
- 1A215A6E11F25FF1008AD0F5 /* Tests */ = {
- isa = PBXGroup;
- children = (
- 1A31EB3613466AC100017372 /* mac */,
- 1A215A7511F26072008AD0F5 /* DocumentOpenInDestroyStream.cpp */,
- C0E720741281C828004EF533 /* EvaluateJSAfterRemovingPluginElement.cpp */,
- 51CACBD715D96FD000EB53A2 /* EvaluateJSWithinNPP_New.cpp */,
- 4AD6A11313C8124000EA9737 /* FormValue.cpp */,
- 1AFF66BB137DEA8300791696 /* GetURLNotifyWithURLThatFailsToLoad.cpp */,
- 1A5CC1F3137DD2EC00A5D7E7 /* GetURLWithJavaScriptURL.cpp */,
- 1A3E28A91311D73B00501349 /* GetURLWithJavaScriptURLDestroyingPlugin.cpp */,
- 1AD4CB2012A6D1350027A7AF /* GetUserAgentWithNullNPPFromNPPNew.cpp */,
- 51134C9816014FDB001AA513 /* InvokeDestroysPluginWithinNPP_New.cpp */,
- 515C0CCF15EE785700F5A613 /* LogNPPSetWindow.cpp */,
- 1ACF898B132EF41C00E915D4 /* NPDeallocateCalledBeforeNPShutdown.cpp */,
- 5113DE6615F6CBE5005EC8B3 /* NPPNewFails.cpp */,
- C031182A134E4A2B00919757 /* NPPSetWindowCalledDuringDestruction.cpp */,
- 1AD8683D163B2FD000A28583 /* NPRuntimeCallsWithNullNPP.cpp */,
- 1A24BAA8120734EE00FBB059 /* NPRuntimeObjectFromDestroyedPlugin.cpp */,
- 1AC77DCE120605B6005C19EF /* NPRuntimeRemoveProperty.cpp */,
- C0EC3C9B12787F0500939164 /* NullNPPGetValuePointer.cpp */,
- C06F9ABB1267A7060058E1F6 /* PassDifferentNPPStruct.cpp */,
- 1AD9D2FD12028409001A70D1 /* PluginScriptableNPObjectInvokeDefault.cpp */,
- 515F429B15C07872007C8F90 /* PluginScriptableObjectOverridesAllProperties.cpp */,
- 1A1E4296141141C400388758 /* PrivateBrowsing.cpp */,
- 5106803D15CC7B10001A8A23 /* SlowNPPNew.cpp */,
- 1A4CCD4E171375A300981040 /* ToStringAndValueOfObject.cpp */,
- );
- path = Tests;
- sourceTree = "<group>";
- };
- 1A31EB3613466AC100017372 /* mac */ = {
- isa = PBXGroup;
- children = (
- 1A66C34F14576A920099A115 /* ContentsScaleFactor.cpp */,
- 1A31EB3713466AC100017372 /* ConvertPoint.cpp */,
- 1A14C8A31406DE0400B254F7 /* SupportsCarbonEventModel.cpp */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- 2D403EA015087135005358D2 /* LayoutTestHelper */ = {
- isa = PBXGroup;
- children = (
- 2D403EA215087142005358D2 /* LayoutTestHelper.m */,
- );
- name = LayoutTestHelper;
- sourceTree = "<group>";
- };
- 417DA9181373674D007C57FB /* WebCoreTestSupport */ = {
- isa = PBXGroup;
- children = (
- 417DAA1C137B3E24007C57FB /* WebCoreTestSupport.h */,
- );
- name = WebCoreTestSupport;
- sourceTree = "<group>";
- };
- 9340995508540CAF007F3BC8 /* Products */ = {
- isa = PBXGroup;
- children = (
- 9340995408540CAF007F3BC8 /* DumpRenderTree */,
- B5A7526708AF4A4A00138E45 /* ImageDiff */,
- 2D403F19150871F9005358D2 /* LayoutTestHelper */,
- 141BF233096A44CF00E0753C /* TestNetscapePlugIn.plugin */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 9345229B0BD12B2C0086EDA0 /* Resources */ = {
- isa = PBXGroup;
- children = (
- AA7F10C20CB3C1030003BDC9 /* AHEM____.TTF */,
- 8CCDA81F151A56550003F937 /* SampleFont.sfont */,
- 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 */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- A803FF6409CAACC1009B2A37 /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- BCB284B20CFA82CB007E533E /* ApplicationServices.framework */,
- AE8257EF08D22389000507AB /* Carbon.framework */,
- A84F608908B136DA00E9745F /* Cocoa.framework */,
- A817090308B164D300CCB9FB /* JavaScriptCore.framework */,
- 5DE8AE4313A2C15800D6A37D /* libWebCoreTestSupport.dylib */,
- 23BCB88F0EA57623003C6289 /* OpenGL.framework */,
- B5A752A108AF5D1F00138E45 /* QuartzCore.framework */,
- 9335435F03D75502008635CE /* WebKit.framework */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- A8B91AC40CF3B170008F91FF /* ObjCPlugin */ = {
- isa = PBXGroup;
- children = (
- BCA18B760C9B08F100114369 /* ObjCPlugin.h */,
- BCA18B770C9B08F100114369 /* ObjCPlugin.m */,
- BCA18B780C9B08F100114369 /* ObjCPluginFunction.h */,
- BCA18B790C9B08F100114369 /* ObjCPluginFunction.m */,
- BCA18B250C9B015C00114369 /* WorkQueueItemMac.mm */,
- );
- 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 = (
- 53CBB830134E42F3001CE6A4 /* CyclicRedundancyCheck.cpp */,
- 53CBB831134E42F3001CE6A4 /* CyclicRedundancyCheck.h */,
- BCB284F30CFA84F2007E533E /* ImageDiffCG.cpp */,
- 8465E2C60FFA8DF2003B8342 /* PixelDumpSupport.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 */,
- 1A215A8211F2609C008AD0F5 /* PluginTest.h in Headers */,
- 1A8F02E80BB9B4EC008CFA34 /* TestObject.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 9340994B08540CAE007F3BC8 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 80045AED147718E7008290A8 /* AccessibilityNotificationHandler.h in Headers */,
- 29CFBA10122736E600BC30C0 /* AccessibilityTextMarker.h in Headers */,
- BC0E24E00E2D9451001B6BC2 /* AccessibilityUIElement.h in Headers */,
- BCA18B380C9B021900114369 /* AppleScriptController.h in Headers */,
- A8B91BFF0CF522B4008F91FF /* CheckedMalloc.h in Headers */,
- 53CBB833134E42F3001CE6A4 /* CyclicRedundancyCheck.h in Headers */,
- BCA18B7A0C9B08F100114369 /* DumpRenderTreeDraggingInfo.h in Headers */,
- A8D79CEA0FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.h in Headers */,
- BCA18C0B0C9B59EF00114369 /* DumpRenderTreeMac.h in Headers */,
- A8B91AE20CF3B372008F91FF /* DumpRenderTreePasteboard.h in Headers */,
- 9340994C08540CAE007F3BC8 /* DumpRenderTreePrefix.h in Headers */,
- A8B91AE00CF3B372008F91FF /* DumpRenderTreeWindow.h in Headers */,
- BCA18B610C9B08C200114369 /* EditingDelegate.h in Headers */,
- BCA18B6F0C9B08DB00114369 /* EventSendingController.h in Headers */,
- BCA18B630C9B08C200114369 /* FrameLoadDelegate.h in Headers */,
- 14770FE20A22ADF7009342EE /* GCController.h in Headers */,
- 5185F6B310714E12007AA393 /* HistoryDelegate.h in Headers */,
- BC47412A0D038A4C0072B006 /* JavaScriptThreading.h in Headers */,
- E1B7816711AF31C3007E1BC2 /* MockGeolocationProvider.h in Headers */,
- 31117B3C15D9A56A00163BC8 /* MockWebNotificationProvider.h in Headers */,
- BCA18B710C9B08DB00114369 /* NavigationController.h in Headers */,
- BCA18B310C9B01B400114369 /* ObjCController.h in Headers */,
- BCA18B7D0C9B08F100114369 /* ObjCPlugin.h in Headers */,
- BCA18B7F0C9B08F100114369 /* ObjCPluginFunction.h in Headers */,
- BCB284C70CFA83C4007E533E /* PixelDumpSupport.h in Headers */,
- BCB284D00CFA83CC007E533E /* PixelDumpSupportCG.h in Headers */,
- BCA18B650C9B08C200114369 /* PolicyDelegate.h in Headers */,
- 1A2FB84E178C80930059FD96 /* DefaultPolicyDelegate.h in Headers */,
- BCA18B670C9B08C200114369 /* ResourceLoadDelegate.h in Headers */,
- 3A5626CC131CA036002BE6D9 /* StorageTrackerDelegate.h in Headers */,
- BC0131DB0C9772010087317D /* TestRunner.h in Headers */,
- BCA18B3C0C9B024900114369 /* TextInputController.h in Headers */,
- BCA18B690C9B08C200114369 /* UIDelegate.h in Headers */,
- 4437730F125CBC4D00AAE02C /* WebArchiveDumpSupport.h in Headers */,
- 417DAA1D137B3E24007C57FB /* WebCoreTestSupport.h in Headers */,
- BC9D90250C97472E0099A4A3 /* WorkQueue.h in Headers */,
- BC9D90260C97472E0099A4A3 /* WorkQueueItem.h in Headers */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- B5A7525B08AF4A4A00138E45 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXHeadersBuildPhase section */
-
-/* Begin PBXLegacyTarget section */
- 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */ = {
- isa = PBXLegacyTarget;
- buildArgumentsString = "$(ACTION)";
- buildConfigurationList = 5DC82A6E1023C92A00FD1D3B /* Build configuration list for PBXLegacyTarget "DumpRenderTree Perl Support" */;
- buildPhases = (
- );
- buildToolPath = make;
- buildWorkingDirectory = "$(SRCROOT)/mac/PerlSupport";
- dependencies = (
- 378C802415AB589B00746821 /* PBXTargetDependency */,
- );
- name = "DumpRenderTree Perl Support";
- passBuildSettingsInEnvironment = 1;
- productName = "DumpRenderTree Perl Support";
- };
-/* End PBXLegacyTarget 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";
- };
- 2D403EB2150871F9005358D2 /* LayoutTestHelper */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 2D403F15150871F9005358D2 /* Build configuration list for PBXNativeTarget "LayoutTestHelper" */;
- buildPhases = (
- 2D403ED8150871F9005358D2 /* Sources */,
- 2D403F03150871F9005358D2 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = LayoutTestHelper;
- productInstallPath = "$(HOME)/bin";
- productName = DumpRenderTree;
- productReference = 2D403F19150871F9005358D2 /* LayoutTestHelper */;
- productType = "com.apple.product-type.tool";
- };
- 9340994A08540CAE007F3BC8 /* DumpRenderTree */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 149C29BF08902C6D008A9EFC /* Build configuration list for PBXNativeTarget "DumpRenderTree" */;
- buildPhases = (
- 9340994B08540CAE007F3BC8 /* Headers */,
- 9340994D08540CAE007F3BC8 /* Sources */,
- 9340994F08540CAE007F3BC8 /* Frameworks */,
- 5DB9ACAA0F722C4400684641 /* Copy Font Files */,
- );
- 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;
- attributes = {
- };
- buildConfigurationList = 149C29C308902C6D008A9EFC /* Build configuration list for PBXProject "DumpRenderTree" */;
- compatibilityVersion = "Xcode 2.4";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 08FB7794FE84155DC02AAC07 /* DumpRenderTree */;
- productRefGroup = 9340995508540CAF007F3BC8 /* Products */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- A84F608D08B1370600E9745F /* All */,
- 9340994A08540CAE007F3BC8 /* DumpRenderTree */,
- B5A7525A08AF4A4A00138E45 /* ImageDiff */,
- 141BF21E096A441D00E0753C /* TestNetscapePlugIn */,
- 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */,
- 2D403EB2150871F9005358D2 /* LayoutTestHelper */,
- );
- };
-/* 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 = (
- 1A66C35114576A920099A115 /* ContentsScaleFactor.cpp in Sources */,
- 1A4CCD4F171375A300981040 /* ToStringAndValueOfObject.cpp in Sources */,
- 1A31EB3813466AC100017372 /* ConvertPoint.cpp in Sources */,
- 1A215BE711F27658008AD0F5 /* DocumentOpenInDestroyStream.cpp in Sources */,
- C0E720751281C828004EF533 /* EvaluateJSAfterRemovingPluginElement.cpp in Sources */,
- 51CACBD815D96FD000EB53A2 /* EvaluateJSWithinNPP_New.cpp in Sources */,
- 4AD6A11413C8124000EA9737 /* FormValue.cpp in Sources */,
- 1AFF66BC137DEFD200791696 /* GetURLNotifyWithURLThatFailsToLoad.cpp in Sources */,
- 1A5CC1F5137DD2EC00A5D7E7 /* GetURLWithJavaScriptURL.cpp in Sources */,
- 1A3E28AA1311D73B00501349 /* GetURLWithJavaScriptURLDestroyingPlugin.cpp in Sources */,
- 1AD4CB2212A6D1350027A7AF /* GetUserAgentWithNullNPPFromNPPNew.cpp in Sources */,
- 51134C9916014FDC001AA513 /* InvokeDestroysPluginWithinNPP_New.cpp in Sources */,
- 515C0CD015EE785700F5A613 /* LogNPPSetWindow.cpp in Sources */,
- 1AC6C8490D07638600CD3161 /* main.cpp in Sources */,
- 1ACF898D132EF41C00E915D4 /* NPDeallocateCalledBeforeNPShutdown.cpp in Sources */,
- 5113DE6715F6CBE5005EC8B3 /* NPPNewFails.cpp in Sources */,
- C031182B134E4A2B00919757 /* NPPSetWindowCalledDuringDestruction.cpp in Sources */,
- 1AD8683F163B2FD000A28583 /* NPRuntimeCallsWithNullNPP.cpp in Sources */,
- 1A24BAA9120734EE00FBB059 /* NPRuntimeObjectFromDestroyedPlugin.cpp in Sources */,
- 1AC77DCF120605B6005C19EF /* NPRuntimeRemoveProperty.cpp in Sources */,
- C0EC3C9C12787F0500939164 /* NullNPPGetValuePointer.cpp in Sources */,
- C06F9ABC1267A7060058E1F6 /* PassDifferentNPPStruct.cpp in Sources */,
- 1AC6C84A0D07638600CD3161 /* PluginObject.cpp in Sources */,
- 0F37A4A711E6628700275F54 /* PluginObjectMac.mm in Sources */,
- 1AD9D2FE12028409001A70D1 /* PluginScriptableNPObjectInvokeDefault.cpp in Sources */,
- 515F429C15C07872007C8F90 /* PluginScriptableObjectOverridesAllProperties.cpp in Sources */,
- 1A215A8111F2609C008AD0F5 /* PluginTest.cpp in Sources */,
- 1A1E4298141141C400388758 /* PrivateBrowsing.cpp in Sources */,
- 5106803E15CC7B10001A8A23 /* SlowNPPNew.cpp in Sources */,
- 1A14C8A51406DE0400B254F7 /* SupportsCarbonEventModel.cpp in Sources */,
- 1AC6C84B0D07638600CD3161 /* TestObject.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 2D403ED8150871F9005358D2 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 2D403F1B15087209005358D2 /* LayoutTestHelper.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- 9340994D08540CAE007F3BC8 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC0E26150E2DA4C6001B6BC3 /* AccessibilityCommonMac.mm in Sources */,
- BCD08B3A0E1057EF00A7D0C1 /* AccessibilityController.cpp in Sources */,
- BCD08B710E1059D200A7D0C1 /* AccessibilityControllerMac.mm in Sources */,
- 80045AEE147718E7008290A8 /* AccessibilityNotificationHandler.mm in Sources */,
- 29CFBA11122736E600BC30C0 /* AccessibilityTextMarker.cpp in Sources */,
- 29CFBA2E12273A1000BC30C0 /* AccessibilityTextMarkerMac.mm in Sources */,
- BC0E24E10E2D9451001B6BC2 /* AccessibilityUIElement.cpp in Sources */,
- BC0E26150E2DA4C6001B6BC2 /* AccessibilityUIElementMac.mm in Sources */,
- BCA18B390C9B021900114369 /* AppleScriptController.m in Sources */,
- A8B91BFD0CF522B4008F91FF /* CheckedMalloc.cpp in Sources */,
- 53CBB832134E42F3001CE6A4 /* CyclicRedundancyCheck.cpp in Sources */,
- BCA18C470C9B5B9400114369 /* DumpRenderTree.mm in Sources */,
- 9830F31F15C81181005AB206 /* DumpRenderTreeCommon.cpp in Sources */,
- BCA18B7B0C9B08F100114369 /* DumpRenderTreeDraggingInfo.mm in Sources */,
- A8D79CEB0FC28B2C004AC8FE /* DumpRenderTreeFileDraggingSource.m in Sources */,
- A8B91ADA0CF3B32F008F91FF /* DumpRenderTreePasteboard.m in Sources */,
- A8B91ADC0CF3B32F008F91FF /* DumpRenderTreeWindow.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 */,
- AA5A15EF16E15CD000F7C561 /* AccessibilityControllerIOS.mm in Sources */,
- 5185F6B210714E07007AA393 /* HistoryDelegate.mm in Sources */,
- 2CE88FA217124D8C00734FC0 /* JavaScriptThreading.cpp in Sources */,
- E1B7816511AF31B7007E1BC2 /* MockGeolocationProvider.mm in Sources */,
- 31117B3D15D9A56A00163BC8 /* MockWebNotificationProvider.mm in Sources */,
- BCA18B720C9B08DB00114369 /* NavigationController.m in Sources */,
- BCA18B320C9B01B400114369 /* ObjCController.m in Sources */,
- BCA18B7E0C9B08F100114369 /* ObjCPlugin.m in Sources */,
- BCA18B800C9B08F100114369 /* ObjCPluginFunction.m in Sources */,
- 8465E2C70FFA8DF2003B8342 /* PixelDumpSupport.cpp in Sources */,
- BCB284CD0CFA83C8007E533E /* PixelDumpSupportCG.cpp in Sources */,
- BCB284D60CFA83D1007E533E /* PixelDumpSupportMac.mm in Sources */,
- BCA18B660C9B08C200114369 /* PolicyDelegate.mm in Sources */,
- AA5A15F016E15CD000F7C561 /* AccessibilityUIElementIOS.mm in Sources */,
- BCA18B680C9B08C200114369 /* ResourceLoadDelegate.mm in Sources */,
- 3A5626CB131CA02A002BE6D9 /* StorageTrackerDelegate.mm in Sources */,
- BC0131DA0C9772010087317D /* TestRunner.cpp in Sources */,
- BCA18B240C9B014B00114369 /* TestRunnerMac.mm in Sources */,
- BCA18B490C9B02C400114369 /* TextInputController.m in Sources */,
- 1A2FB84F178C80930059FD96 /* DefaultPolicyDelegate.m in Sources */,
- BCA18B6A0C9B08C200114369 /* UIDelegate.mm in Sources */,
- 4437730E125CBC3600AAE02C /* WebArchiveDumpSupport.cpp in Sources */,
- 440590711268453800CFD48D /* WebArchiveDumpSupportMac.mm in Sources */,
- BC9D90240C97472E0099A4A3 /* WorkQueue.cpp in Sources */,
- BCA18B260C9B015C00114369 /* WorkQueueItemMac.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 */;
- };
- 2D403F211508736C005358D2 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 2D403EB2150871F9005358D2 /* LayoutTestHelper */;
- targetProxy = 2D403F201508736C005358D2 /* PBXContainerItemProxy */;
- };
- 378C802415AB589B00746821 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 9340994A08540CAE007F3BC8 /* DumpRenderTree */;
- targetProxy = 378C802315AB589B00746821 /* PBXContainerItemProxy */;
- };
- 5DC82A701023C93D00FD1D3B /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 5DC82A661023C8DE00FD1D3B /* DumpRenderTree Perl Support */;
- targetProxy = 5DC82A6F1023C93D00FD1D3B /* 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 = {
- INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist;
- };
- name = Debug;
- };
- 141BF223096A441E00E0753C /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */;
- buildSettings = {
- INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist;
- };
- 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;
- };
- 2D403F16150871F9005358D2 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- PRODUCT_NAME = LayoutTestHelper;
- };
- name = Debug;
- };
- 2D403F17150871F9005358D2 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- PRODUCT_NAME = LayoutTestHelper;
- };
- name = Release;
- };
- 2D403F18150871F9005358D2 /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)";
- PRODUCT_NAME = LayoutTestHelper;
- SKIP_INSTALL = NO;
- };
- name = Production;
- };
- 5DC82A671023C8DE00FD1D3B /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "DumpRenderTree Perl Support";
- };
- name = Debug;
- };
- 5DC82A681023C8DE00FD1D3B /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "DumpRenderTree Perl Support";
- };
- name = Release;
- };
- 5DC82A691023C8DE00FD1D3B /* Production */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "DumpRenderTree Perl Support";
- };
- name = Production;
- };
- 90CBC3500F748B1300A712B7 /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281EE0CFA713D007E533E /* Base.xcconfig */;
- buildSettings = {
- WEBKIT_FRAMEWORK_RESOURCES_PATH = WebKit.framework/Versions/A/Resources;
- };
- name = Production;
- };
- 90CBC3510F748B1300A712B7 /* Production */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)";
- PRODUCT_NAME = All;
- };
- name = Production;
- };
- 90CBC3520F748B1300A712B7 /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB281F00CFA713D007E533E /* DumpRenderTree.xcconfig */;
- buildSettings = {
- INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)";
- SKIP_INSTALL = NO;
- };
- name = Production;
- };
- 90CBC3530F748B1300A712B7 /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283D80CFA7AFD007E533E /* ImageDiff.xcconfig */;
- buildSettings = {
- INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)";
- SKIP_INSTALL = NO;
- };
- name = Production;
- };
- 90CBC3540F748B1300A712B7 /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCB283DE0CFA7C20007E533E /* TestNetscapePlugIn.xcconfig */;
- buildSettings = {
- INFOPLIST_FILE = TestNetscapePlugIn/mac/Info.plist;
- INSTALL_PATH = "$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)";
- SKIP_INSTALL = NO;
- };
- name = Production;
- };
- 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 */,
- 90CBC3540F748B1300A712B7 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- 149C29BF08902C6D008A9EFC /* Build configuration list for PBXNativeTarget "DumpRenderTree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C29C008902C6D008A9EFC /* Debug */,
- 149C29C108902C6D008A9EFC /* Release */,
- 90CBC3520F748B1300A712B7 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- 149C29C308902C6D008A9EFC /* Build configuration list for PBXProject "DumpRenderTree" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 149C29C408902C6D008A9EFC /* Debug */,
- 149C29C508902C6D008A9EFC /* Release */,
- 90CBC3500F748B1300A712B7 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- 2D403F15150871F9005358D2 /* Build configuration list for PBXNativeTarget "LayoutTestHelper" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 2D403F16150871F9005358D2 /* Debug */,
- 2D403F17150871F9005358D2 /* Release */,
- 2D403F18150871F9005358D2 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- 5DC82A6E1023C92A00FD1D3B /* Build configuration list for PBXLegacyTarget "DumpRenderTree Perl Support" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 5DC82A671023C8DE00FD1D3B /* Debug */,
- 5DC82A681023C8DE00FD1D3B /* Release */,
- 5DC82A691023C8DE00FD1D3B /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- A84F609208B1371400E9745F /* Build configuration list for PBXAggregateTarget "All" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- A84F609308B1371400E9745F /* Debug */,
- A84F609408B1371400E9745F /* Release */,
- 90CBC3510F748B1300A712B7 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- B5A7526408AF4A4A00138E45 /* Build configuration list for PBXNativeTarget "ImageDiff" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- B5A7526508AF4A4A00138E45 /* Debug */,
- B5A7526608AF4A4A00138E45 /* Release */,
- 90CBC3530F748B1300A712B7 /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h b/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h
index e2f45d67c..1d42a474c 100644
--- a/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h
+++ b/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.h
@@ -26,6 +26,8 @@
// (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 !PLATFORM(IOS)
+
#import <Cocoa/Cocoa.h>
// An implementation of NSDraggingSource for use with DumpRenderTreeDraggingInfo when dragging files
@@ -37,3 +39,5 @@
- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)flag;
@end
+
+#endif
diff --git a/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m b/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m
deleted file mode 100644
index 449d9185e..000000000
--- a/Tools/DumpRenderTree/DumpRenderTreeFileDraggingSource.m
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright (c) 2009, 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.
-
-#import "DumpRenderTreeFileDraggingSource.h"
-
-@implementation DumpRenderTreeFileDraggingSource
-
-- (NSDragOperation)draggingSourceOperationMaskForLocal:(BOOL)flag
-{
- return NSDragOperationCopy;
-}
-
-@end
diff --git a/Tools/DumpRenderTree/DumpRenderTreePrefix.h b/Tools/DumpRenderTree/DumpRenderTreePrefix.h
index 010ca019d..105b54356 100644
--- a/Tools/DumpRenderTree/DumpRenderTreePrefix.h
+++ b/Tools/DumpRenderTree/DumpRenderTreePrefix.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2005 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2005 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -26,17 +26,17 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifdef __OBJC__
-
-#import <Foundation/Foundation.h>
-
+#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H && defined(BUILDING_WITH_CMAKE)
+#include "cmakeconfig.h"
#endif
-#if defined(WIN32) || defined(_WIN32)
+#include <wtf/Platform.h>
-// 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
+#ifdef __OBJC__
+#import <Foundation/Foundation.h>
+#endif
+#if OS(WINDOWS)
+#undef WEBCORE_EXPORT
+#define WEBCORE_EXPORT WTF_IMPORT_DECLARATION
#endif
diff --git a/Tools/DumpRenderTree/ForwardingHeaders/runtime/ArrayBufferView.h b/Tools/DumpRenderTree/ForwardingHeaders/runtime/ArrayBufferView.h
new file mode 100644
index 000000000..7731671c8
--- /dev/null
+++ b/Tools/DumpRenderTree/ForwardingHeaders/runtime/ArrayBufferView.h
@@ -0,0 +1 @@
+#include <JavaScriptCore/ArrayBufferView.h>
diff --git a/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSArrayBufferView.h b/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSArrayBufferView.h
new file mode 100644
index 000000000..e38a8040f
--- /dev/null
+++ b/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSArrayBufferView.h
@@ -0,0 +1 @@
+#include <JavaScriptCore/JSArrayBufferView.h>
diff --git a/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h b/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h
index 4c5dcb983..4c5dcb983 100755..100644
--- a/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h
+++ b/Tools/DumpRenderTree/ForwardingHeaders/runtime/JSExportMacros.h
diff --git a/Tools/DumpRenderTree/ForwardingHeaders/runtime/TypedArrayInlines.h b/Tools/DumpRenderTree/ForwardingHeaders/runtime/TypedArrayInlines.h
new file mode 100644
index 000000000..6a61945ea
--- /dev/null
+++ b/Tools/DumpRenderTree/ForwardingHeaders/runtime/TypedArrayInlines.h
@@ -0,0 +1 @@
+#include <JavaScriptCore/TypedArrayInlines.h>
diff --git a/Tools/DumpRenderTree/GCController.cpp b/Tools/DumpRenderTree/GCController.cpp
index 06a04fbca..781a828eb 100644
--- a/Tools/DumpRenderTree/GCController.cpp
+++ b/Tools/DumpRenderTree/GCController.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/DumpRenderTree/GCController.h b/Tools/DumpRenderTree/GCController.h
index afc1de087..79ceafc9f 100644
--- a/Tools/DumpRenderTree/GCController.h
+++ b/Tools/DumpRenderTree/GCController.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006 Apple Computer, Inc. All rights reserved.
+ * Copyright (C) 2006 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/DumpRenderTree/JavaScriptThreading.cpp b/Tools/DumpRenderTree/JavaScriptThreading.cpp
index 66de156c7..e2f9bade6 100644
--- a/Tools/DumpRenderTree/JavaScriptThreading.cpp
+++ b/Tools/DumpRenderTree/JavaScriptThreading.cpp
@@ -13,7 +13,7 @@
* 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
+ * 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.
*
@@ -36,22 +36,25 @@
#include <stdlib.h>
#include <wtf/Assertions.h>
#include <wtf/HashSet.h>
+#include <wtf/Lock.h>
+#include <wtf/Threading.h>
+#include <wtf/ThreadingPrimitives.h>
#include <wtf/Vector.h>
static const size_t javaScriptThreadsCount = 4;
static bool javaScriptThreadsShouldTerminate;
static JSContextGroupRef javaScriptThreadsGroup;
-static Mutex& javaScriptThreadsMutex()
+static Lock& javaScriptThreadsMutex()
{
- DEFINE_STATIC_LOCAL(Mutex, staticMutex, ());
+ DEPRECATED_DEFINE_STATIC_LOCAL(Lock, staticMutex, ());
return staticMutex;
}
typedef HashSet<ThreadIdentifier> ThreadSet;
static ThreadSet& javaScriptThreads()
{
- DEFINE_STATIC_LOCAL(ThreadSet, staticJavaScriptThreads, ());
+ DEPRECATED_DEFINE_STATIC_LOCAL(ThreadSet, staticJavaScriptThreads, ());
ASSERT(!javaScriptThreadsMutex().tryLock());
return staticJavaScriptThreads;
}
@@ -68,26 +71,26 @@ void runJavaScriptThread(void*)
JSGlobalContextRef ctx;
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
ctx = JSGlobalContextCreateInGroup(javaScriptThreadsGroup, 0);
}
JSStringRef scriptRef;
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
scriptRef = JSStringCreateWithUTF8CString(script);
}
while (true) {
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
JSValueRef exception = 0;
JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
ASSERT(!exception);
}
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
const size_t valuesCount = 1024;
JSValueRef values[valuesCount];
for (size_t i = 0; i < valuesCount; ++i)
@@ -95,7 +98,7 @@ void runJavaScriptThread(void*)
}
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
if (javaScriptThreadsShouldTerminate)
break;
}
@@ -104,7 +107,7 @@ void runJavaScriptThread(void*)
if (rand() % 5)
continue;
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
ThreadIdentifier thread = currentThread();
detachThread(thread);
javaScriptThreads().remove(thread);
@@ -112,7 +115,7 @@ void runJavaScriptThread(void*)
break;
}
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
JSStringRelease(scriptRef);
JSGarbageCollect(ctx);
JSGlobalContextRelease(ctx);
@@ -122,7 +125,7 @@ void startJavaScriptThreads()
{
javaScriptThreadsGroup = JSContextGroupCreate();
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
for (size_t i = 0; i < javaScriptThreadsCount; ++i)
javaScriptThreads().add(createThread(&runJavaScriptThread, 0, 0));
@@ -131,13 +134,13 @@ void startJavaScriptThreads()
void stopJavaScriptThreads()
{
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
javaScriptThreadsShouldTerminate = true;
}
Vector<ThreadIdentifier, javaScriptThreadsCount> threads;
{
- MutexLocker locker(javaScriptThreadsMutex());
+ LockHolder locker(javaScriptThreadsMutex());
copyToVector(javaScriptThreads(), threads);
ASSERT(threads.size() == javaScriptThreadsCount);
}
@@ -145,7 +148,10 @@ void stopJavaScriptThreads()
for (size_t i = 0; i < javaScriptThreadsCount; ++i)
waitForThreadCompletion(threads[i]);
- javaScriptThreads().clear();
+ {
+ LockHolder locker(javaScriptThreadsMutex());
+ javaScriptThreads().clear();
+ }
JSContextGroupRelease(javaScriptThreadsGroup);
}
diff --git a/Tools/DumpRenderTree/JavaScriptThreading.h b/Tools/DumpRenderTree/JavaScriptThreading.h
index 43795a1a2..5bbe9cafe 100644
--- a/Tools/DumpRenderTree/JavaScriptThreading.h
+++ b/Tools/DumpRenderTree/JavaScriptThreading.h
@@ -12,7 +12,7 @@
* 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
+ * 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.
*
diff --git a/Tools/DumpRenderTree/Makefile b/Tools/DumpRenderTree/Makefile
deleted file mode 100644
index 344ef480b..000000000
--- a/Tools/DumpRenderTree/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-SCRIPTS_PATH = ../Scripts
-
-ifneq (,$(findstring iphoneos,$(SDKROOT)))
- OTHER_OPTIONS += -target All-iOS
-else ifneq (,$(findstring iphonesimulator,$(SDKROOT)))
- OTHER_OPTIONS += -target All-iOS
-endif
-
-include ../../Makefile.shared
diff --git a/Tools/DumpRenderTree/PixelDumpSupport.cpp b/Tools/DumpRenderTree/PixelDumpSupport.cpp
index 165291174..aeb902ceb 100644
--- a/Tools/DumpRenderTree/PixelDumpSupport.cpp
+++ b/Tools/DumpRenderTree/PixelDumpSupport.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -41,8 +41,6 @@
#include "PixelDumpSupportCG.h"
#elif USE(CAIRO)
#include "PixelDumpSupportCairo.h"
-#elif PLATFORM(BLACKBERRY)
-#include "PixelDumpSupportBlackBerry.h"
#endif
void dumpWebViewAsPixelsAndCompareWithExpected(const std::string& expectedHash)
diff --git a/Tools/DumpRenderTree/PixelDumpSupport.h b/Tools/DumpRenderTree/PixelDumpSupport.h
index 3bd8820c7..a0ec1e1c7 100644
--- a/Tools/DumpRenderTree/PixelDumpSupport.h
+++ b/Tools/DumpRenderTree/PixelDumpSupport.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/DumpRenderTree/PlatformQt.cmake b/Tools/DumpRenderTree/PlatformQt.cmake
new file mode 100644
index 000000000..a914dfd8d
--- /dev/null
+++ b/Tools/DumpRenderTree/PlatformQt.cmake
@@ -0,0 +1,55 @@
+list(APPEND DumpRenderTree_INCLUDE_DIRECTORIES
+ "${DERIVED_SOURCES_DIR}/ForwardingHeaders/QtWebKit"
+ "${DERIVED_SOURCES_DIR}/ForwardingHeaders/QtWebKitWidgets"
+ "${WEBCORE_DIR}/Modules/notifications"
+ "${WEBCORE_DIR}/platform/qt"
+ "${WEBKIT_DIR}/qt/WebCoreSupport"
+ "${WEBKIT_DIR}/qt/WidgetSupport"
+ TestNetscapePlugIn
+ TestNetscapePlugIn/ForwardingHeaders
+ qt
+)
+
+list(REMOVE_ITEM DumpRenderTree_SOURCES
+ JavaScriptThreading.cpp
+ PixelDumpSupport.cpp
+ WorkQueueItem.cpp
+)
+
+list(APPEND DumpRenderTree_SOURCES
+ qt/DumpRenderTreeMain.cpp
+ qt/DumpRenderTreeQt.cpp
+ qt/EventSenderQt.cpp
+ qt/GCControllerQt.cpp
+ qt/TestRunnerQt.cpp
+ qt/TextInputControllerQt.cpp
+ qt/WorkQueueItemQt.cpp
+ qt/testplugin.cpp
+)
+
+qt5_add_resources(DumpRenderTree_SOURCES
+ qt/DumpRenderTree.qrc
+)
+
+list(APPEND DumpRenderTree_SYSTEM_INCLUDE_DIRECTORIES
+ ${ICU_INCLUDE_DIRS}
+ ${Qt5Gui_PRIVATE_INCLUDE_DIRS}
+ ${Qt5Widgets_INCLUDE_DIRS}
+)
+
+list(APPEND DumpRenderTree_LIBRARIES
+ ${Qt5PrintSupport_LIBRARIES}
+ ${Qt5Test_LIBRARIES}
+ ${Qt5Widgets_LIBRARIES}
+ WebKitWidgets
+)
+
+if (WIN32)
+ add_definitions(-DWEBCORE_EXPORT=)
+ add_definitions(-DSTATICALLY_LINKED_WITH_WTF -DSTATICALLY_LINKED_WITH_JavaScriptCore)
+endif ()
+
+if (ENABLE_X11_TARGET AND ENABLE_NETSCAPE_PLUGIN_API)
+ add_definitions(-DXP_UNIX)
+ link_libraries(${X11_X11_LIB})
+endif ()
diff --git a/Tools/DumpRenderTree/StorageTrackerDelegate.h b/Tools/DumpRenderTree/StorageTrackerDelegate.h
deleted file mode 100644
index 73032ef59..000000000
--- a/Tools/DumpRenderTree/StorageTrackerDelegate.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-class TestRunner;
-
-@interface StorageTrackerDelegate : NSObject {
- unsigned numberOfNotificationsToLog;
- TestRunner* controllerToNotifyDone;
-}
-
-- (void)logNotifications:(unsigned)number controller:(TestRunner*)controller;
-- (void)originModified:(NSNotification *)notification;
-- (void)setControllerToNotifyDone:(TestRunner*)controller;
-
-@end
diff --git a/Tools/DumpRenderTree/StorageTrackerDelegate.mm b/Tools/DumpRenderTree/StorageTrackerDelegate.mm
deleted file mode 100644
index 121fa1753..000000000
--- a/Tools/DumpRenderTree/StorageTrackerDelegate.mm
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2011 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 "config.h"
-#import "StorageTrackerDelegate.h"
-
-#import "TestRunner.h"
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <WebKit/WebStorageManagerPrivate.h>
-
-@implementation StorageTrackerDelegate
-
-- (id)init
-{
- self = [super init];
- if (!self)
- return nil;
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(originModified:) name:WebStorageDidModifyOriginNotification object:nil];
-
- return self;
-}
-
-- (void)logNotifications:(unsigned)number controller:(TestRunner*)controller
-{
- controllerToNotifyDone = controller;
-
- numberOfNotificationsToLog = number;
-}
-
-- (void)originModified:(NSNotification *)notification
-{
- if (!numberOfNotificationsToLog)
- return;
-
- numberOfNotificationsToLog--;
-
- if (numberOfNotificationsToLog == 0 && controllerToNotifyDone) {
- NSArray *origins = [[WebStorageManager sharedWebStorageManager] origins];
- for (WebSecurityOrigin *origin in origins)
- printf("Origin identifier: '%s'\n", [[origin databaseIdentifier] UTF8String]);
-
- controllerToNotifyDone->notifyDone();
- }
-}
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self name:WebStorageDidModifyOriginNotification object:nil];
-
- [super dealloc];
-}
-
-- (void)setControllerToNotifyDone:(TestRunner*)controller
-{
- controllerToNotifyDone = controller;
-}
-
-
-@end
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
index 512032359..c431667b2 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/CMakeLists.txt
@@ -26,20 +26,36 @@ set(WebKitTestNetscapePlugin_SOURCES
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PluginScriptableObjectOverridesAllProperties.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/PrivateBrowsing.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/ToStringAndValueOfObject.cpp
+ ${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/URLRedirect.cpp
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/Tests/x11/CallInvalidateRectWithNullNPPArgument.cpp
)
set(WebKitTestNetscapePlugin_INCLUDE_DIRECTORIES
${WEBKIT_TESTNETSCAPEPLUGIN_DIR}
- ${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/unix/ForwardingHeaders
+ ${WEBKIT_TESTNETSCAPEPLUGIN_DIR}/ForwardingHeaders
${WEBCORE_DIR}
+ ${WTF_DIR}
+)
+
+set(WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES
+ ${X11_INCLUDE_DIR}
)
include_directories(${WebKitTestNetscapePlugin_INCLUDE_DIRECTORIES})
+include_directories(SYSTEM ${WebKitTestNetscapePlugin_SYSTEM_INCLUDE_DIRECTORIES})
set(WebKitTestNetscapePlugin_LIBRARIES
${X11_LIBRARIES}
)
+if (WTF_OS_UNIX)
+ add_definitions(-DXP_UNIX)
+endif ()
+
add_library(TestNetscapePlugin SHARED ${WebKitTestNetscapePlugin_SOURCES})
target_link_libraries(TestNetscapePlugin ${WebKitTestNetscapePlugin_LIBRARIES})
+set_target_properties(TestNetscapePlugin PROPERTIES LIBRARY_OUTPUT_DIRECTORY ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/plugins)
+WEBKIT_SET_EXTRA_COMPILER_FLAGS(TestNetscapePlugin)
+
+# Suppress unused parameter warnings for sources in WebKit2.
+ADD_TARGET_PROPERTIES(TestNetscapePlugin COMPILE_FLAGS "-Wno-unused-parameter")
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npapi.h b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h
index 627bc97a9..627bc97a9 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npapi.h
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npapi.h
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npfunctions.h b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h
index 54a603dbb..54a603dbb 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npfunctions.h
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npfunctions.h
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npruntime.h b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h
index e435ae2ab..e435ae2ab 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npruntime.h
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/ForwardingHeaders/WebKit/npruntime.h
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp
index 75631842f..982452b68 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp
@@ -30,10 +30,14 @@
#include "PluginTest.h"
#include "TestObject.h"
#include <assert.h>
+#include <memory>
#include <stdarg.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
+#include <wtf/Platform.h>
+#include <wtf/ExportMacros.h>
+#include <wtf/Assertions.h>
// Helper function which takes in the plugin window object for logging to the console object.
static void pluginLogWithWindowObject(NPObject* windowObject, NPP instance, const char* message)
@@ -60,6 +64,7 @@ static void pluginLogWithWindowObject(NPObject* windowObject, NPP instance, cons
browser->releaseobject(consoleObject);
}
+WTF_ATTRIBUTE_PRINTF(2, 0)
void pluginLogWithArguments(NPP instance, const char* format, va_list args)
{
const size_t messageBufferSize = 2048;
@@ -80,6 +85,7 @@ void pluginLogWithArguments(NPP instance, const char* format, va_list args)
}
// Helper function to log to the console object.
+WTF_ATTRIBUTE_PRINTF(2, 3)
void pluginLog(NPP instance, const char* format, ...)
{
va_list args;
@@ -770,11 +776,15 @@ static bool testGetPropertyReturnValue(PluginObject* obj, const NPVariant* args,
return true;
}
-static char* toCString(const NPString& string)
+static std::unique_ptr<char[]> toCString(const NPString& string)
{
- char* result = static_cast<char*>(malloc(string.UTF8Length + 1));
- memcpy(result, string.UTF8Characters, string.UTF8Length);
- result[string.UTF8Length] = '\0';
+ size_t length = string.UTF8Length;
+ std::unique_ptr<char[]> result(new char[length + 1]);
+ if (!result)
+ return result;
+
+ memcpy(result.get(), string.UTF8Characters, length);
+ result[length] = '\0';
return result;
}
@@ -785,30 +795,27 @@ static bool testPostURLFile(PluginObject* obj, const NPVariant* args, uint32_t a
return false;
NPString urlString = NPVARIANT_TO_STRING(args[0]);
- char* url = toCString(urlString);
+ auto url = toCString(urlString);
NPString targetString = NPVARIANT_TO_STRING(args[1]);
- char* target = toCString(targetString);
+ auto target = toCString(targetString);
NPString pathString = NPVARIANT_TO_STRING(args[2]);
- char* path = toCString(pathString);
+ auto path = toCString(pathString);
NPString contentsString = NPVARIANT_TO_STRING(args[3]);
- FILE* tempFile = fopen(path, "w");
+ FILE* tempFile = fopen(path.get(), "w");
if (!tempFile)
return false;
- if (!fwrite(contentsString.UTF8Characters, contentsString.UTF8Length, 1, tempFile))
- return false;
-
+ size_t count = fwrite(contentsString.UTF8Characters, contentsString.UTF8Length, 1, tempFile);
fclose(tempFile);
- NPError error = browser->posturl(obj->npp, url, target, pathString.UTF8Length, path, TRUE);
+ if (!count)
+ return false;
- free(path);
- free(target);
- free(url);
+ NPError error = browser->posturl(obj->npp, url.get(), target.get(), pathString.UTF8Length, path.get(), TRUE);
BOOLEAN_TO_NPVARIANT(error == NPERR_NO_ERROR, *result);
return true;
@@ -967,15 +974,14 @@ bool testWindowOpen(NPP npp)
static bool testSetStatus(PluginObject* obj, const NPVariant* args, uint32_t argCount, NPVariant* result)
{
- char* message = 0;
+ std::unique_ptr<char[]> message;
if (argCount && NPVARIANT_IS_STRING(args[0])) {
NPString statusString = NPVARIANT_TO_STRING(args[0]);
message = toCString(statusString);
}
-
- browser->status(obj->npp, message);
- free(message);
+ browser->status(obj->npp, message.get());
+
return true;
}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h
index 98f183951..6b9bd07a4 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h
@@ -85,4 +85,4 @@ extern bool testWindowOpen(NPP npp);
extern void* createCoreAnimationLayer();
#endif
-#endif // PluginObject_h
+#endif
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm
deleted file mode 100644
index e7850e7a9..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginObjectMac.mm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2010 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 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 "PluginObject.h"
-
-
-#include <QuartzCore/QuartzCore.h>
-
-@interface TestPluginLayer : CALayer
-@end
-
-@implementation TestPluginLayer
-
-- (void)drawInContext:(CGContextRef)context
-{
- CGRect bounds = [self bounds];
- const char* text = "Test Plug-in";
- CGContextSelectFont(context, "Helvetica", 24, kCGEncodingMacRoman);
- CGContextShowTextAtPoint(context, bounds.origin.x + 3.0f, bounds.origin.y + bounds.size.height - 30.0f, text, strlen(text));
-}
-
-@end
-
-void* createCoreAnimationLayer()
-{
- CALayer *caLayer = [[TestPluginLayer alloc] init];
-
- NSNull *nullValue = [NSNull null];
- NSDictionary *actions = [NSDictionary dictionaryWithObjectsAndKeys:
- nullValue, @"anchorPoint",
- nullValue, @"bounds",
- nullValue, @"contents",
- nullValue, @"contentsRect",
- nullValue, @"opacity",
- nullValue, @"position",
- nullValue, @"shadowColor",
- nullValue, @"sublayerTransform",
- nullValue, @"sublayers",
- nullValue, @"transform",
- nullValue, @"zPosition",
- nil];
- // Turn off default animations.
- [caLayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]];
- [caLayer setNeedsDisplayOnBoundsChange:YES];
-
- [caLayer setBounds:CGRectMake(0, 0, 200, 100)];
- [caLayer setAnchorPoint:CGPointZero];
-
- CGColorRef color = CGColorCreateGenericRGB(0.5, 0.5, 1, 1);
- [caLayer setBackgroundColor:color];
- CGColorRelease(color);
-
- [caLayer setLayoutManager:[CAConstraintLayoutManager layoutManager]];
-
- CALayer *sublayer = [CALayer layer];
- // Turn off default animations.
- [sublayer setStyle:[NSDictionary dictionaryWithObject:actions forKey:@"actions"]];
-
- color = CGColorCreateGenericRGB(0, 0, 0, 0.75);
- [sublayer setBackgroundColor:color];
- CGColorRelease(color);
- [sublayer setBounds:CGRectMake(0, 0, 180, 20)];
-
- [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinY
- relativeTo:@"superlayer"
- attribute:kCAConstraintMinY]];
- [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMinX
- relativeTo:@"superlayer"
- attribute:kCAConstraintMinX]];
- [sublayer addConstraint:[CAConstraint constraintWithAttribute:kCAConstraintMaxX
- relativeTo:@"superlayer"
- attribute:kCAConstraintMaxX]];
-
- [caLayer addSublayer:sublayer];
- return caLayer;
-}
-
-
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp
index c2195c5b1..da78148d4 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp
@@ -28,6 +28,9 @@
#include "PluginObject.h"
#include <assert.h>
#include <string.h>
+#include <wtf/Platform.h>
+#include <wtf/ExportMacros.h>
+#include <wtf/Assertions.h>
#if defined(XP_UNIX) || defined(ANDROID)
#include <unistd.h>
@@ -133,6 +136,11 @@ bool PluginTest::NPP_URLNotify(const char* url, NPReason, void* notifyData)
return false;
}
+void PluginTest::NPP_URLRedirectNotify(const char*, int32_t, void* notifyData)
+{
+ NPN_URLRedirectResponse(notifyData, true);
+}
+
NPError PluginTest::NPP_GetValue(NPPVariable variable, void *value)
{
// We don't know anything about plug-in values so just return NPERR_GENERIC_ERROR.
@@ -156,6 +164,11 @@ NPError PluginTest::NPN_GetURLNotify(const char *url, const char *target, void *
return browser->geturlnotify(m_npp, url, target, notifyData);
}
+NPError PluginTest::NPN_PostURLNotify(const char *url, const char *target, uint32_t len, const char* buf, NPBool file, void *notifyData)
+{
+ return browser->posturlnotify(m_npp, url, target, len, buf, file, notifyData);
+}
+
NPError PluginTest::NPN_GetValue(NPNVariable variable, void* value)
{
return browser->getvalue(m_npp, variable, value);
@@ -228,6 +241,11 @@ void PluginTest::NPN_ReleaseVariantValue(NPVariant* variant)
browser->releasevariantvalue(variant);
}
+void PluginTest::NPN_URLRedirectResponse(void* notifyData, NPBool allow)
+{
+ browser->urlredirectresponse(m_npp, notifyData, allow);
+}
+
#ifdef XP_MACOSX
bool PluginTest::NPN_ConvertPoint(double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace)
{
@@ -254,6 +272,7 @@ void PluginTest::executeScript(const char* script)
browser->releasevariantvalue(&browserResult);
}
+WTF_ATTRIBUTE_PRINTF(2, 3)
void PluginTest::log(const char* format, ...)
{
va_list args;
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h
index f8a9aaee3..d7a5163ff 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h
@@ -31,6 +31,10 @@
#include <map>
#include <string>
+#if defined(_MSC_VER) && _MSC_VER < 1900
+#define snprintf _snprintf
+#endif
+
// Helper classes for implementing has_member
typedef char (&no_tag)[1];
typedef char (&yes_tag)[2];
@@ -68,12 +72,14 @@ public:
virtual int16_t NPP_HandleEvent(void* event);
virtual bool NPP_URLNotify(const char* url, NPReason, void* notifyData);
+ virtual void NPP_URLRedirectNotify(const char* url, int32_t status, void* notifyData);
virtual NPError NPP_GetValue(NPPVariable, void* value);
virtual NPError NPP_SetValue(NPNVariable, void *value);
// NPN functions.
NPError NPN_GetURL(const char* url, const char* target);
NPError NPN_GetURLNotify(const char* url, const char* target, void* notifyData);
+ NPError NPN_PostURLNotify(const char *url, const char *target, uint32_t len, const char* buf, NPBool file, void *notifyData);
NPError NPN_GetValue(NPNVariable, void* value);
void NPN_InvalidateRect(NPRect* invalidRect);
bool NPN_Invoke(NPObject *, NPIdentifier methodName, const NPVariant *args, uint32_t argCount, NPVariant *result);
@@ -91,6 +97,7 @@ public:
void NPN_ReleaseObject(NPObject*);
bool NPN_RemoveProperty(NPObject*, NPIdentifier propertyName);
void NPN_ReleaseVariantValue(NPVariant*);
+ void NPN_URLRedirectResponse(void* notifyData, NPBool allow);
#ifdef XP_MACOSX
bool NPN_ConvertPoint(double sourceX, double sourceY, NPCoordinateSpace sourceSpace, double *destX, double *destY, NPCoordinateSpace destSpace);
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp
index 9e65f1118..971f9ead3 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp
@@ -24,6 +24,7 @@
*/
#include "TestObject.h"
+
#include "PluginObject.h"
#include <string.h>
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp
index 322d3fec4..887e1521e 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp
@@ -25,8 +25,6 @@
#include "PluginTest.h"
-#include "PluginTest.h"
-
#include "PluginObject.h"
using namespace std;
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp
index 0e238e607..a9a5962dd 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp
@@ -85,4 +85,3 @@ private:
};
static PluginTest::Register<NPRuntimeObjectFromDestroyedPlugin> npRuntimeObjectFromDestroyedPlugin("npruntime-object-from-destroyed-plugin");
-
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/URLRedirect.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/URLRedirect.cpp
new file mode 100644
index 000000000..b834703da
--- /dev/null
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/URLRedirect.cpp
@@ -0,0 +1,167 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 "PluginTest.h"
+
+#include <string.h>
+
+using namespace std;
+
+class URLRedirect : public PluginTest {
+public:
+ URLRedirect(NPP npp, const string& identifier)
+ : PluginTest(npp, identifier)
+ {
+ }
+
+ struct Redirect {
+ int redirectsRemaining;
+ bool async;
+ bool hasFired;
+ };
+
+ std::map<void*, Redirect> redirects;
+
+private:
+ // This is the test object.
+ class TestObject : public Object<TestObject> { };
+
+ // This is the scriptable object. It has a single "testObject" property and an "evaluate" function.
+ class ScriptableObject : public Object<ScriptableObject> {
+ public:
+ bool hasMethod(NPIdentifier methodName)
+ {
+ return identifierIs(methodName, "get") || identifierIs(methodName, "getAsync") || identifierIs(methodName, "serviceAsync");
+ }
+
+ bool get(const NPVariant* args, uint32_t argCount, NPVariant* result, bool async)
+ {
+ if (argCount != 3 || !NPVARIANT_IS_STRING(args[0]) || !(NPVARIANT_IS_BOOLEAN(args[1]) || NPVARIANT_IS_DOUBLE(args[1]) || NPVARIANT_IS_INT32(args[1])) || !NPVARIANT_IS_STRING(args[2]))
+ return false;
+
+ const NPString* notifyString = &NPVARIANT_TO_STRING(args[2]);
+ basic_string<NPUTF8> notify(notifyString->UTF8Characters, notifyString->UTF8Length);
+ NPIdentifier notifyMethod = pluginTest()->NPN_GetStringIdentifier(notify.c_str());
+
+ Redirect& redirect = static_cast<URLRedirect*>(pluginTest())->redirects[reinterpret_cast<void*>(notifyMethod)];
+ if (NPVARIANT_IS_DOUBLE(args[1]))
+ redirect.redirectsRemaining = NPVARIANT_TO_DOUBLE(args[1]);
+ else if (NPVARIANT_IS_INT32(args[1]))
+ redirect.redirectsRemaining = NPVARIANT_TO_INT32(args[1]);
+ else if (NPVARIANT_IS_BOOLEAN(args[1]))
+ redirect.redirectsRemaining = NPVARIANT_TO_BOOLEAN(args[1]);
+ redirect.async = async;
+ redirect.hasFired = true;
+
+ const NPString* urlString = &NPVARIANT_TO_STRING(args[0]);
+ basic_string<NPUTF8> url(urlString->UTF8Characters, urlString->UTF8Length);
+
+ pluginTest()->NPN_GetURLNotify(url.c_str(), 0, reinterpret_cast<void*>(notifyMethod));
+
+ VOID_TO_NPVARIANT(*result);
+ return true;
+ }
+
+ bool serviceAsync(const NPVariant* args, uint32_t argCount, NPVariant* result)
+ {
+ if (argCount)
+ return false;
+
+ NPBool seen = 0;
+ URLRedirect* plugin = static_cast<URLRedirect*>(pluginTest());
+ for (auto& redirect : plugin->redirects) {
+ if (redirect.second.hasFired)
+ continue;
+ redirect.second.hasFired = true;
+ plugin->NPN_URLRedirectResponse(redirect.first, redirect.second.redirectsRemaining);
+ if (redirect.second.redirectsRemaining)
+ --redirect.second.redirectsRemaining;
+ seen = 1;
+ }
+
+ BOOLEAN_TO_NPVARIANT(seen, *result);
+ return true;
+ }
+
+ bool invoke(NPIdentifier methodName, const NPVariant* args, uint32_t argCount, NPVariant* result)
+ {
+ if (identifierIs(methodName, "get"))
+ return get(args, argCount, result, false);
+
+ if (identifierIs(methodName, "getAsync"))
+ return get(args, argCount, result, true);
+
+ if (identifierIs(methodName, "serviceAsync"))
+ return serviceAsync(args, argCount, result);
+
+ return false;
+ }
+ };
+
+ virtual NPError NPP_GetValue(NPPVariable variable, void *value)
+ {
+ if (variable != NPPVpluginScriptableNPObject)
+ return NPERR_GENERIC_ERROR;
+
+ *(NPObject**)value = ScriptableObject::create(this);
+
+ return NPERR_NO_ERROR;
+ }
+
+ virtual bool NPP_URLNotify(const char* url, NPReason reason, void* notifyData)
+ {
+ NPVariant args[2];
+
+ NPObject* windowScriptObject;
+ NPN_GetValue(NPNVWindowNPObject, &windowScriptObject);
+
+ NPIdentifier callbackIdentifier = notifyData;
+
+ INT32_TO_NPVARIANT(reason, args[0]);
+ STRINGZ_TO_NPVARIANT(url, args[1]);
+
+ NPVariant browserResult;
+ if (NPN_Invoke(windowScriptObject, callbackIdentifier, args, 2, &browserResult))
+ NPN_ReleaseVariantValue(&browserResult);
+
+ return true;
+ }
+
+ virtual void NPP_URLRedirectNotify(const char*, int32_t, void* notifyData)
+ {
+ Redirect& redirect = redirects[notifyData];
+ if (redirect.async) {
+ redirect.hasFired = false;
+ return;
+ }
+
+ NPN_URLRedirectResponse(notifyData, redirect.redirectsRemaining);
+ if (redirect.redirectsRemaining)
+ --redirect.redirectsRemaining;
+ }
+};
+
+static PluginTest::Register<URLRedirect> urlRedirect("url-redirect");
+
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp
deleted file mode 100644
index 5353d8333..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ContentsScaleFactor.cpp
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PluginTest.h"
-
-using namespace std;
-
-class ContentsScaleFactor : public PluginTest {
-public:
- ContentsScaleFactor(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- , m_cachedContentsScaleFactor(1.0)
- {
- }
-
-private:
- double contentsScaleFactor()
- {
- double contentsScaleFactor = 1.0;
- NPN_GetValue(NPNVcontentsScaleFactor, &contentsScaleFactor);
- return contentsScaleFactor;
- }
-
- double cachedContentsScaleFactor()
- {
- return m_cachedContentsScaleFactor;
- }
-
- class ScriptableObject : public Object<ScriptableObject> {
- public:
- bool hasProperty(NPIdentifier propertyName)
- {
- return identifierIs(propertyName, "contentsScaleFactor")
- || identifierIs(propertyName, "cachedContentsScaleFactor");
- }
-
- bool getProperty(NPIdentifier propertyName, NPVariant* result)
- {
- if (identifierIs(propertyName, "contentsScaleFactor")) {
- DOUBLE_TO_NPVARIANT(pluginTest()->contentsScaleFactor(), *result);
- return true;
- }
-
- if (identifierIs(propertyName, "cachedContentsScaleFactor")) {
- DOUBLE_TO_NPVARIANT(pluginTest()->cachedContentsScaleFactor(), *result);
- return true;
- }
- return false;
- }
-
- private:
- ContentsScaleFactor* pluginTest() const { return static_cast<ContentsScaleFactor*>(Object<ScriptableObject>::pluginTest()); }
-
- };
-
- virtual NPError NPP_New(NPMIMEType pluginType, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData *saved)
- {
- m_cachedContentsScaleFactor = contentsScaleFactor();
- return NPERR_NO_ERROR;
- }
-
- virtual NPError NPP_GetValue(NPPVariable variable, void* value)
- {
- if (variable != NPPVpluginScriptableNPObject)
- return NPERR_GENERIC_ERROR;
-
- *(NPObject**)value = ScriptableObject::create(this);
-
- return NPERR_NO_ERROR;
- }
-
- virtual NPError NPP_SetValue(NPNVariable variable, void* value)
- {
- switch (variable) {
- case NPNVcontentsScaleFactor:
- m_cachedContentsScaleFactor = *(double*)value;
- return NPERR_NO_ERROR;
- default:
- return NPERR_GENERIC_ERROR;
- }
- }
- double m_cachedContentsScaleFactor;
-};
-
-static PluginTest::Register<ContentsScaleFactor> contentsScaleFactor("contents-scale-factor");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp
deleted file mode 100644
index 1d851ead7..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/ConvertPoint.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PluginTest.h"
-
-using namespace std;
-
-// Test that NPN_ConvertPoint converts correctly.
-class ConvertPoint : public PluginTest {
-public:
- ConvertPoint(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- {
- }
-
- bool testConvert(double x, double y, NPCoordinateSpace sourceSpace, NPCoordinateSpace destSpace)
- {
- // First convert from src to dest.
- double destX, destY;
- if (!NPN_ConvertPoint(x, y, sourceSpace, &destX, &destY, destSpace))
- return false;
-
- // Then convert back to src
- double srcX, srcY;
- if (!NPN_ConvertPoint(destX, destY, destSpace, &srcX, &srcY, sourceSpace))
- return false;
-
-
- // Then compare.
- if (srcX != x || srcY != y)
- return false;
-
- return true;
- }
-
- bool testConvert()
- {
- static const NPCoordinateSpace spaces[] = { NPCoordinateSpacePlugin, NPCoordinateSpaceWindow, NPCoordinateSpaceFlippedWindow, NPCoordinateSpaceScreen, NPCoordinateSpaceFlippedScreen };
-
- static const size_t numSpaces = sizeof(spaces) / sizeof(spaces[0]);
- for (size_t i = 0; i < numSpaces; ++i) {
- for (size_t j = 0; j < numSpaces; ++j) {
- if (!testConvert(1234, 5678, spaces[i], spaces[j]))
- return false;
- }
- }
- return true;
- }
-private:
- NPError NPP_New(NPMIMEType pluginType, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *saved)
- {
- if (testConvert())
- executeScript("document.getElementById('result').innerHTML = 'SUCCESS!'");
-
- executeScript("setTimeout(function() { testRunner.notifyDone() }, 0)");
- return NPERR_NO_ERROR;
- }
-};
-
-static PluginTest::Register<ConvertPoint> convertPoint("convert-point");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/SupportsCarbonEventModel.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/SupportsCarbonEventModel.cpp
deleted file mode 100644
index 51cbce2bf..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/mac/SupportsCarbonEventModel.cpp
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PluginTest.h"
-
-using namespace std;
-
-// Test that we report that we support the Carbon event model in 32-bit.
-class SupportsCarbonEventModel : public PluginTest {
-public:
- SupportsCarbonEventModel(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- {
- }
-
-private:
- bool runTest()
- {
-#ifdef NP_NO_CARBON
- // There's no support for Carbon, so we can't test anything.
- return true;
-#else
- NPBool supportsCarbonEventModel = false;
- if (NPN_GetValue(NPNVsupportsCarbonBool, &supportsCarbonEventModel) != NPERR_NO_ERROR)
- return false;
-
- return supportsCarbonEventModel;
-#endif
- }
-
- virtual NPError NPP_New(NPMIMEType pluginType, uint16_t mode, int16_t argc, char *argn[], char *argv[], NPSavedData *saved)
- {
- if (runTest())
- executeScript("document.getElementById('result').innerHTML = 'SUCCESS!'");
-
- return NPERR_NO_ERROR;
- }
-};
-
-static PluginTest::Register<SupportsCarbonEventModel> supportsCarbonEventModel("supports-carbon-event-model");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/CallJSThatDestroysPlugin.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/CallJSThatDestroysPlugin.cpp
deleted file mode 100644
index 39c6365a6..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/CallJSThatDestroysPlugin.cpp
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PluginTest.h"
-
-#include <string.h>
-#include <vector>
-
-using namespace std;
-
-// Test that evaluating JavaScript that removes the plug-in from the page
-// destroys the plug-in asynchronously.
-class CallJSThatDestroysPlugin : public PluginTest {
-public:
- CallJSThatDestroysPlugin(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- , m_isDestroyed(false)
- , m_window(0)
- {
- }
- ~CallJSThatDestroysPlugin();
-
- void runTest();
-
-private:
- virtual NPError NPP_New(NPMIMEType, uint16_t, int16_t, char*[], char*[], NPSavedData*);
- virtual NPError NPP_Destroy(NPSavedData**);
-
- bool m_isDestroyed;
- HWND m_window;
-};
-
-static PluginTest::Register<CallJSThatDestroysPlugin> registrar("call-javascript-that-destroys-plugin");
-
-static const LPCWSTR pluginTestProperty = L"PluginTestProperty";
-static const UINT runTestWindowMessage = WM_USER + 1;
-static const LPCWSTR messageWindowClassName = L"CallJSThatDestroysPluginMessageWindow";
-
-CallJSThatDestroysPlugin::~CallJSThatDestroysPlugin()
-{
- ::RemovePropW(m_window, pluginTestProperty);
- ::DestroyWindow(m_window);
-}
-
-void CallJSThatDestroysPlugin::runTest()
-{
- executeScript("var plugin = document.getElementsByTagName('embed')[0]; plugin.parentElement.removeChild(plugin);");
- if (!m_isDestroyed)
- log("Success: executed script, and plug-in is not yet destroyed.");
-}
-
-static LRESULT CALLBACK wndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
-{
- if (msg != runTestWindowMessage)
- return ::DefWindowProcW(hwnd, msg, wParam, lParam);
-
- CallJSThatDestroysPlugin* pluginTest = reinterpret_cast<CallJSThatDestroysPlugin*>(::GetPropW(hwnd, pluginTestProperty));
- pluginTest->runTest();
- return 0;
-}
-
-NPError CallJSThatDestroysPlugin::NPP_New(NPMIMEType, uint16_t, int16_t, char*[], char*[], NPSavedData*)
-{
- assert(!m_window);
-
- waitUntilDone();
-
- WNDCLASSEXW wndClass = {0};
- wndClass.cbSize = sizeof(wndClass);
- wndClass.lpfnWndProc = wndProc;
- wndClass.hCursor = LoadCursor(0, IDC_ARROW);
- wndClass.hInstance = GetModuleHandle(0);
- wndClass.lpszClassName = messageWindowClassName;
-
- ::RegisterClassExW(&wndClass);
- m_window = ::CreateWindowExW(0, messageWindowClassName, 0, WS_CHILD, 0, 0, 0, 0, HWND_MESSAGE, 0, GetModuleHandle(0), 0);
-
- ::SetPropW(m_window, pluginTestProperty, reinterpret_cast<HANDLE>(this));
- ::PostMessageW(m_window, runTestWindowMessage, 0, 0);
-
- return NPERR_NO_ERROR;
-}
-
-NPError CallJSThatDestroysPlugin::NPP_Destroy(NPSavedData**)
-{
- m_isDestroyed = true;
- log("Plug-in destroyed.");
- notifyDone();
- return NPERR_NO_ERROR;
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DrawsGradient.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DrawsGradient.cpp
deleted file mode 100644
index 2b0619832..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DrawsGradient.cpp
+++ /dev/null
@@ -1,118 +0,0 @@
-/* Copyright (C) 2010 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. 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 INC. 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 "WindowedPluginTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// Just fills its window with some gradients
-
-class DrawsGradient : public WindowedPluginTest {
-public:
- DrawsGradient(NPP, const string& identifier);
-
-private:
- void paint(HDC) const;
-
- LRESULT onPaint(WPARAM, LPARAM, bool& handled);
- LRESULT onPrintClient(WPARAM, LPARAM, bool& handled);
-
- virtual LRESULT wndProc(UINT message, WPARAM, LPARAM, bool& handled);
-};
-
-static PluginTest::Register<DrawsGradient> registrar("draws-gradient");
-
-DrawsGradient::DrawsGradient(NPP npp, const string& identifier)
- : WindowedPluginTest(npp, identifier)
-{
-}
-
-LRESULT DrawsGradient::wndProc(UINT message, WPARAM wParam, LPARAM lParam, bool& handled)
-{
- LRESULT result = 0;
-
- switch (message) {
- case WM_PAINT:
- result = onPaint(wParam, lParam, handled);
- break;
- case WM_PRINTCLIENT:
- result = onPrintClient(wParam, lParam, handled);
- break;
- default:
- handled = false;
- }
-
- return result;
-}
-
-LRESULT DrawsGradient::onPaint(WPARAM, LPARAM, bool& handled)
-{
- PAINTSTRUCT paintStruct;
- HDC dc = ::BeginPaint(window(), &paintStruct);
- if (!dc)
- return 0;
-
- paint(dc);
- ::EndPaint(window(), &paintStruct);
-
- handled = true;
- return 0;
-}
-
-LRESULT DrawsGradient::onPrintClient(WPARAM wParam, LPARAM, bool& handled)
-{
- paint(reinterpret_cast<HDC>(wParam));
-
- handled = true;
- return 0;
-}
-
-void DrawsGradient::paint(HDC dc) const
-{
- RECT clientRect;
- if (!::GetClientRect(window(), &clientRect))
- return;
-
- TRIVERTEX vertices[] = {
- // Upper-left: green
- { clientRect.left, clientRect.top, 0, 0xff00, 0, 0 },
- // Upper-right: blue
- { clientRect.right, clientRect.top, 0, 0, 0xff00, 0 },
- // Lower-left: yellow
- { clientRect.left, clientRect.bottom, 0xff00, 0xff00, 0, 0 },
- // Lower-right: red
- { clientRect.right, clientRect.bottom, 0xff00, 0, 0, 0 },
- };
-
- GRADIENT_TRIANGLE mesh[] = {
- // Upper-left triangle
- { 0, 1, 2 },
- // Lower-right triangle
- { 1, 2, 3 },
- };
-
- ::GradientFill(dc, vertices, _countof(vertices), mesh, _countof(mesh), GRADIENT_FILL_TRIANGLE);
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DumpWindowRect.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DumpWindowRect.cpp
deleted file mode 100644
index fc2fd45a8..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/DumpWindowRect.cpp
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "WindowGeometryTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// This plugin dumps its window rect (relative to the test harness window) to the console when it
-// is instantiated.
-
-class DumpWindowRect : public WindowGeometryTest {
-public:
- DumpWindowRect(NPP, const string& identifier);
-
-private:
- virtual void performWindowGeometryTest();
-};
-
-static PluginTest::Register<DumpWindowRect> registrar("dump-window-rect");
-
-DumpWindowRect::DumpWindowRect(NPP npp, const string& identifier)
- : WindowGeometryTest(npp, identifier)
-{
-}
-
-
-void DumpWindowRect::performWindowGeometryTest()
-{
- RECT rect;
- if (!::GetClientRect(window(), &rect)) {
- log("::GetClientRect failed");
- return;
- }
-
- // MSDN says that calling ::MapWindowPoints this way will tell it to treat the points as a rect.
- if (!::MapWindowPoints(window(), testHarnessWindow(), reinterpret_cast<LPPOINT>(&rect), 2)) {
- log("::MapWindowPoints failed");
- return;
- }
-
- log("Plugin window rect: {left=%d, top=%d, right=%d, bottom=%d}", rect.left, rect.top, rect.right, rect.bottom);
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp
deleted file mode 100644
index 32fd99b63..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/GetValueNetscapeWindow.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PluginTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// NPN_GetValue(NPNVnetscapeWindow) should return a valid HWND.
-
-class GetValueNetscapeWindow : public PluginTest {
-public:
- GetValueNetscapeWindow(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- , m_didReceiveInitialSetWindowCall(false)
- {
- }
-
-private:
- virtual NPError NPP_SetWindow(NPP instance, NPWindow* window)
- {
- if (m_didReceiveInitialSetWindowCall)
- return NPERR_NO_ERROR;
- m_didReceiveInitialSetWindowCall = true;
-
- HWND hwnd;
- NPError error = NPN_GetValue(NPNVnetscapeWindow, &hwnd);
- if (error != NPERR_NO_ERROR) {
- pluginLog(instance, "NPN_GetValue(NPNVnetscapeWindow) failed with error %d", error);
- return NPERR_GENERIC_ERROR;
- }
-
- if (!::IsWindow(hwnd)) {
- pluginLog(instance, "::IsWindow returned FALSE");
- return NPERR_GENERIC_ERROR;
- }
-
- if (hwnd == window->window) {
- pluginLog(instance, "NPN_GetValue(NPNVnetscapeWindow) returned the same value as NPWindow::window");
- return NPERR_GENERIC_ERROR;
- }
-
- pluginLog(instance, "NPN_GetValue(NPNVnetscapeWindow) succeeded");
- return NPERR_NO_ERROR;
- }
-
- bool m_didReceiveInitialSetWindowCall;
-};
-
-static PluginTest::Register<GetValueNetscapeWindow> getValueNetscapeWindow("get-value-netscape-window");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp
deleted file mode 100644
index 6d5484b1f..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/NPNInvalidateRectInvalidatesWindow.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "WindowedPluginTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// NPN_InvalidateRect should invalidate the plugin's HWND.
-
-static const wchar_t instancePointerProperty[] = L"org.webkit.TestNetscapePlugin.NPNInvalidateRectInvalidatesWindow.InstancePointer";
-
-class TemporaryWindowMover {
-public:
- TemporaryWindowMover(HWND);
- ~TemporaryWindowMover();
-
- bool moveSucceeded() const { return m_moveSucceeded; }
-
-private:
- static const UINT standardSetWindowPosFlags = SWP_NOACTIVATE | SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_NOZORDER;
- bool m_moveSucceeded;
- HWND m_window;
- RECT m_savedWindowRect;
-};
-
-TemporaryWindowMover::TemporaryWindowMover(HWND window)
- : m_window(window)
-{
- m_moveSucceeded = false;
-
- if (!::GetWindowRect(m_window, &m_savedWindowRect))
- return;
-
- if (!::SetWindowPos(m_window, 0, 0, 0, 0, 0, SWP_SHOWWINDOW | standardSetWindowPosFlags))
- return;
-
- m_moveSucceeded = true;
-};
-
-TemporaryWindowMover::~TemporaryWindowMover()
-{
- if (!m_moveSucceeded)
- return;
-
- ::SetWindowPos(m_window, 0, m_savedWindowRect.left, m_savedWindowRect.top, 0, 0, SWP_HIDEWINDOW | standardSetWindowPosFlags);
-}
-
-class NPNInvalidateRectInvalidatesWindow : public WindowedPluginTest {
-public:
- NPNInvalidateRectInvalidatesWindow(NPP, const string& identifier);
- ~NPNInvalidateRectInvalidatesWindow();
-
-private:
- virtual LRESULT wndProc(UINT message, WPARAM, LPARAM, bool& handled);
-
- void onPaint();
- void testInvalidateRect();
-
- virtual NPError NPP_SetWindow(NPP, NPWindow*);
-
- TemporaryWindowMover* m_windowMover;
-};
-
-NPNInvalidateRectInvalidatesWindow::NPNInvalidateRectInvalidatesWindow(NPP npp, const string& identifier)
- : WindowedPluginTest(npp, identifier)
- , m_windowMover(0)
-{
-}
-
-NPNInvalidateRectInvalidatesWindow::~NPNInvalidateRectInvalidatesWindow()
-{
- delete m_windowMover;
-}
-
-NPError NPNInvalidateRectInvalidatesWindow::NPP_SetWindow(NPP instance, NPWindow* npWindow)
-{
- NPError error = WindowedPluginTest::NPP_SetWindow(instance, npWindow);
- if (error != NPERR_NO_ERROR)
- return error;
-
- if (!window())
- return NPERR_NO_ERROR;
-
- // The test harness's window (the one that contains the WebView) is off-screen and hidden.
- // We need to move it on-screen and make it visible in order for the plugin's window to
- // accumulate an update region when the DWM is disabled.
-
- HWND testHarnessWindow = this->testHarnessWindow();
- if (!testHarnessWindow) {
- pluginLog(instance, "Failed to get test harness window");
- return NPERR_GENERIC_ERROR;
- }
-
- m_windowMover = new TemporaryWindowMover(testHarnessWindow);
- if (!m_windowMover->moveSucceeded()) {
- pluginLog(instance, "Failed to move test harness window on-screen");
- return NPERR_GENERIC_ERROR;
- }
-
- // Wait until we receive a WM_PAINT message to ensure that the window is on-screen before we do
- // the NPN_InvalidateRect test.
- waitUntilDone();
- return NPERR_NO_ERROR;
-}
-
-LRESULT NPNInvalidateRectInvalidatesWindow::wndProc(UINT message, WPARAM wParam, LPARAM lParam, bool& handled)
-{
- if (message == WM_PAINT)
- onPaint();
-
- handled = false;
- return 0;
-}
-
-void NPNInvalidateRectInvalidatesWindow::onPaint()
-{
- testInvalidateRect();
- notifyDone();
- delete m_windowMover;
- m_windowMover = 0;
-}
-
-void NPNInvalidateRectInvalidatesWindow::testInvalidateRect()
-{
- RECT clientRect;
- if (!::GetClientRect(window(), &clientRect)) {
- pluginLog(m_npp, "::GetClientRect failed");
- return;
- }
-
- if (::IsRectEmpty(&clientRect)) {
- pluginLog(m_npp, "Plugin's HWND has not been sized when NPP_SetWindow is called");
- return;
- }
-
- // Clear the invalid region.
- if (!::ValidateRect(window(), 0)) {
- pluginLog(m_npp, "::ValidateRect failed");
- return;
- }
-
- // Invalidate our lower-right quadrant.
- NPRect rectToInvalidate;
- rectToInvalidate.left = (clientRect.right - clientRect.left) / 2;
- rectToInvalidate.top = (clientRect.bottom - clientRect.top) / 2;
- rectToInvalidate.right = clientRect.right;
- rectToInvalidate.bottom = clientRect.bottom;
- NPN_InvalidateRect(&rectToInvalidate);
-
- RECT invalidRect;
- if (!::GetUpdateRect(window(), &invalidRect, FALSE)) {
- pluginLog(m_npp, "::GetUpdateRect failed");
- return;
- }
-
- if (invalidRect.left != rectToInvalidate.left || invalidRect.top != rectToInvalidate.top || invalidRect.right != rectToInvalidate.right || invalidRect.bottom != rectToInvalidate.bottom) {
- pluginLog(m_npp, "Expected invalid rect {left=%u, top=%u, right=%u, bottom=%u}, but got {left=%d, top=%d, right=%d, bottom=%d}", rectToInvalidate.left, rectToInvalidate.top, rectToInvalidate.right, rectToInvalidate.bottom, invalidRect.left, invalidRect.top, invalidRect.right, invalidRect.bottom);
- return;
- }
-
- pluginLog(m_npp, "Plugin's HWND has been invalidated as expected");
-}
-
-static PluginTest::Register<NPNInvalidateRectInvalidatesWindow> registrar("npn-invalidate-rect-invalidates-window");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp
deleted file mode 100644
index 1c75d27a8..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowGeometryInitializedBeforeSetWindow.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PluginTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// Plugin's HWND should be sized/positioned before NPP_SetWindow is called.
-
-class WindowGeometryInitializedBeforeSetWindow : public PluginTest {
-public:
- WindowGeometryInitializedBeforeSetWindow(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- , m_didReceiveInitialSetWindowCall(false)
- {
- }
-
-private:
- virtual NPError NPP_SetWindow(NPP instance, NPWindow* window)
- {
- if (m_didReceiveInitialSetWindowCall)
- return NPERR_NO_ERROR;
- m_didReceiveInitialSetWindowCall = true;
-
- if (window->type != NPWindowTypeWindow) {
- pluginLog(instance, "window->type should be NPWindowTypeWindow but was %d", window->type);
- return NPERR_GENERIC_ERROR;
- }
-
- HWND hwnd = reinterpret_cast<HWND>(window->window);
- RECT rect;
- if (!::GetClientRect(hwnd, &rect)) {
- pluginLog(instance, "::GetClientRect failed");
- return NPERR_GENERIC_ERROR;
- }
-
- if (::IsRectEmpty(&rect)) {
- pluginLog(instance, "Plugin's HWND has not been sized when NPP_SetWindow is called");
- return NPERR_GENERIC_ERROR;
- }
-
- if ((rect.right - rect.left) != window->width || (rect.bottom - rect.top) != window->height) {
- pluginLog(instance, "Size of HWND's rect and size of NPWindow's rect are not equal");
- return NPERR_GENERIC_ERROR;
- }
-
- pluginLog(instance, "Plugin's HWND has been sized before NPP_SetWindow was called");
- return NPERR_NO_ERROR;
- }
-
- bool m_didReceiveInitialSetWindowCall;
-};
-
-static PluginTest::Register<WindowGeometryInitializedBeforeSetWindow> windowGeometryInitializedBeforeSetWindow("window-geometry-initialized-before-set-window");
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp
deleted file mode 100644
index 7a0098b84..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowRegionIsSetToClipRect.cpp
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (C) 2010, 2011 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. 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 INC. 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 "WindowGeometryTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// The plugin's window's window region should be set to the plugin's clip rect.
-
-class WindowRegionIsSetToClipRect : public WindowGeometryTest {
-public:
- WindowRegionIsSetToClipRect(NPP, const string& identifier);
-
-private:
- virtual void performWindowGeometryTest();
-};
-
-static PluginTest::Register<WindowRegionIsSetToClipRect> registrar("window-region-is-set-to-clip-rect");
-
-WindowRegionIsSetToClipRect::WindowRegionIsSetToClipRect(NPP npp, const string& identifier)
- : WindowGeometryTest(npp, identifier)
-{
-}
-
-void WindowRegionIsSetToClipRect::performWindowGeometryTest()
-{
- RECT regionRect;
- if (::GetWindowRgnBox(window(), &regionRect) == ERROR) {
- log("::GetWindowRgnBox failed, or window has no window region");
- return;
- }
-
- // This expected rect is based on the layout of window-region-is-set-to-clip-rect.html.
- RECT expectedRect = { 50, 50, 100, 100 };
- if (!::EqualRect(&regionRect, &expectedRect)) {
- log("Expected region rect {left=%u, top=%u, right=%u, bottom=%u}, but got {left=%d, top=%d, right=%d, bottom=%d}", expectedRect.left, expectedRect.top, expectedRect.right, expectedRect.bottom, regionRect.left, regionRect.top, regionRect.right, regionRect.bottom);
- return;
- }
-
- log("PASS: Plugin's window's window region has been set as expected");
-
- // While we're here, check that our window class doesn't have the CS_PARENTDC style, which
- // defeats clipping by ignoring the window region and always clipping to the parent window.
- // FIXME: It would be nice to have a pixel test that shows that we're
- // getting clipped correctly, but unfortunately window regions are ignored
- // during WM_PRINT (see <http://webkit.org/b/49034>).
- wchar_t className[512];
- if (!::GetClassNameW(window(), className, _countof(className))) {
- log("::GetClassName failed with error %u", ::GetLastError());
- return;
- }
-
-#ifdef DEBUG_ALL
- const wchar_t webKitDLLName[] = L"WebKit_debug.dll";
-#else
- const wchar_t webKitDLLName[] = L"WebKit.dll";
-#endif
- HMODULE webKitModule = ::GetModuleHandleW(webKitDLLName);
- if (!webKitModule) {
- log("::GetModuleHandleW failed with error %u", ::GetLastError());
- return;
- }
-
- WNDCLASSW wndClass;
- if (!::GetClassInfoW(webKitModule, className, &wndClass)) {
- log("::GetClassInfoW failed with error %u", ::GetLastError());
- return;
- }
-
- if (wndClass.style & CS_PARENTDC)
- log("FAIL: Plugin's window's class has the CS_PARENTDC style, which will defeat clipping");
- else
- log("PASS: Plugin's window's class does not have the CS_PARENTDC style");
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowlessPaintRectCoordinates.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowlessPaintRectCoordinates.cpp
deleted file mode 100644
index ffc92ea2e..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/Tests/win/WindowlessPaintRectCoordinates.cpp
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PluginTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-// The rect passed in the WM_PAINT event for a windowless plugin should be relative to the page's
-// HWND and clipped to the plugin's bounds.
-
-class WindowlessPaintRectCoordinates : public PluginTest {
-public:
- WindowlessPaintRectCoordinates(NPP, const string& identifier);
-
-private:
- virtual NPError NPP_New(NPMIMEType, uint16_t mode, int16_t argc, char* argn[], char* argv[], NPSavedData*);
- virtual int16_t NPP_HandleEvent(void* event);
-};
-
-static PluginTest::Register<WindowlessPaintRectCoordinates> registrar("windowless-paint-rect-coordinates");
-
-WindowlessPaintRectCoordinates::WindowlessPaintRectCoordinates(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
-{
-}
-
-NPError WindowlessPaintRectCoordinates::NPP_New(NPMIMEType, uint16_t, int16_t, char*[], char*[], NPSavedData*)
-{
- browser->setvalue(m_npp, NPPVpluginWindowBool, 0);
- return NPERR_NO_ERROR;
-}
-
-int16_t WindowlessPaintRectCoordinates::NPP_HandleEvent(void* typelessEvent)
-{
- NPEvent* event = static_cast<NPEvent*>(typelessEvent);
- if (!event) {
- pluginLog(m_npp, "NPP_HandleEvent was passed a null event pointer");
- return 0;
- }
-
- if (event->event != WM_PAINT)
- return 0;
-
- RECT* paintRect = reinterpret_cast<RECT*>(event->lParam);
- if (!paintRect) {
- pluginLog(m_npp, "A null paint rect was passed in the WM_PAINT event");
- return 1;
- }
-
- // Keep these values in sync with windowless-paint-rect-coordinates.html.
- RECT expectedRect = { 100, 100, 200, 200 };
-
- if (::EqualRect(paintRect, &expectedRect))
- pluginLog(m_npp, "Success");
- else
- pluginLog(m_npp, "Expected paint rect {left=%d, top=%d, right=%d, bottom=%d}, but got {left=%d, top=%d, right=%d, bottom=%d}", expectedRect.left, expectedRect.top, expectedRect.right, expectedRect.bottom, paintRect->left, paintRect->top, paintRect->right, paintRect->bottom);
-
- return 1;
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist b/Tools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist
deleted file mode 100644
index ef45e66d2..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/mac/Info.plist
+++ /dev/null
@@ -1,69 +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>TestNetscapePlugIn</string>
- <key>CFBundleGetInfoString</key>
- <string>420+, Copyright 2006-2009 Apple 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>image/png</key>
- <dict>
- <key>WebPluginExtensions</key>
- <array>
- <string>png</string>
- </array>
- <key>WebPluginTypeDescription</key>
- <string>PNG image</string>
- </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/Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp
index 256acc003..6a7303f13 100644
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp
+++ b/Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp
@@ -41,10 +41,17 @@ extern "C" void GlobalToLocal(Point*);
using namespace std;
+#if defined(__GNUC__)
+#define CRASH() do { \
+ *(int *)(uintptr_t)0xbbadbeef = 0; \
+ __builtin_trap(); /* More reliable, but doesn't say BBADBEEF. */ \
+} while (false)
+#else
#define CRASH() do { \
*(int *)(uintptr_t)0xbbadbeef = 0; \
((void(*)())0)(); /* More reliable, but doesn't say BBADBEEF */ \
-} while(false)
+} while (false)
+#endif
static bool getEntryPointsWasCalled;
static bool initializeWasCalled;
@@ -116,6 +123,7 @@ NPError STDCALL NP_GetEntryPoints(NPPluginFuncs *pluginFuncs)
pluginFuncs->print = NPP_Print;
pluginFuncs->event = NPP_HandleEvent;
pluginFuncs->urlnotify = NPP_URLNotify;
+ pluginFuncs->urlredirectnotify = NPP_URLRedirectNotify;
pluginFuncs->getvalue = NPP_GetValue;
pluginFuncs->setvalue = NPP_SetValue;
@@ -324,7 +332,10 @@ NPError NPP_Destroy(NPP instance, NPSavedData **save)
if (obj->onPaintEvent)
free(obj->onPaintEvent);
-
+
+ if (obj->evaluateScriptOnMouseDownOrKeyDown)
+ free(obj->evaluateScriptOnMouseDownOrKeyDown);
+
if (obj->logDestroy)
pluginLog(instance, "NPP_Destroy");
@@ -345,29 +356,30 @@ NPError NPP_SetWindow(NPP instance, NPWindow *window)
{
PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
- if (obj) {
- obj->lastWindow = *window;
+ if (!obj)
+ return NPERR_GENERIC_ERROR;
- if (obj->logSetWindow) {
- pluginLog(instance, "NPP_SetWindow: %d %d", (int)window->width, (int)window->height);
- obj->logSetWindow = FALSE;
- executeScript(obj, "testRunner.notifyDone();");
- }
+ obj->lastWindow = *window;
- if (obj->onSetWindow)
- executeScript(obj, obj->onSetWindow);
+ if (obj->logSetWindow) {
+ pluginLog(instance, "NPP_SetWindow: %d %d", (int)window->width, (int)window->height);
+ obj->logSetWindow = FALSE;
+ executeScript(obj, "testRunner.notifyDone();");
+ }
- if (obj->testWindowOpen) {
- testWindowOpen(instance);
- obj->testWindowOpen = FALSE;
- }
+ if (obj->onSetWindow)
+ executeScript(obj, obj->onSetWindow);
- if (obj->testKeyboardFocusForPlugins) {
- obj->eventLogging = true;
- executeScript(obj, "eventSender.keyDown('A');");
- }
+ if (obj->testWindowOpen) {
+ testWindowOpen(instance);
+ obj->testWindowOpen = FALSE;
}
-
+
+ if (obj->testKeyboardFocusForPlugins) {
+ obj->eventLogging = true;
+ executeScript(obj, "eventSender.keyDown('A');");
+ }
+
return obj->pluginTest->NPP_SetWindow(window);
}
@@ -796,6 +808,12 @@ void NPP_URLNotify(NPP instance, const char *url, NPReason reason, void *notifyD
handleCallback(obj, url, reason, notifyData);
}
+void NPP_URLRedirectNotify(NPP instance, const char *url, int32_t status, void *notifyData)
+{
+ PluginObject* obj = static_cast<PluginObject*>(instance->pdata);
+ obj->pluginTest->NPP_URLRedirectNotify(url, status, notifyData);
+}
+
NPError NPP_GetValue(NPP instance, NPPVariable variable, void *value)
{
#ifdef XP_UNIX
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.cpp
deleted file mode 100644
index be7bfb31c..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.cpp
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2010, 2011 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. 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 INC. 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 "WindowGeometryTest.h"
-
-#include "PluginObject.h"
-
-using namespace std;
-
-WindowGeometryTest::WindowGeometryTest(NPP npp, const string& identifier)
- : WindowedPluginTest(npp, identifier)
- , m_testHarnessWindowWasVisible(false)
-{
-}
-
-void WindowGeometryTest::startTest()
-{
- // In WebKit1, our window's window region will be set immediately. In WebKit2, it won't be set
- // until the UI process paints. Since the UI process will also show our window when it paints,
- // we can detect when the paint occurs (and thus when our window region should be set) by
- // starting with our plugin element hidden, then making it visible and waiting for a
- // WM_WINDOWPOSCHANGED event to tell us our window has been shown.
-
- waitUntilDone();
-
- // If the test harness window isn't visible, we might not receive a WM_WINDOWPOSCHANGED message
- // when our window is made visible. So we temporarily show the test harness window during this test.
- showTestHarnessWindowIfNeeded();
-
- // Make our window visible. (In WebKit2, this won't take effect immediately.)
- executeScript("document.getElementsByTagName('embed')[0].style.visibility = 'visible';");
-
- // We trigger a UI process paint after a slight delay to ensure that the UI process has
- // received the "make the plugin window visible" message before it paints.
- // FIXME: It would be nice to have a way to guarantee that the UI process had received that
- // message before we triggered a paint. Hopefully that would let us get rid of this semi-
- // arbitrary timeout.
- ::SetTimer(window(), triggerPaintTimerID, 250, 0);
-}
-
-void WindowGeometryTest::finishTest()
-{
- performWindowGeometryTest();
- hideTestHarnessWindowIfNeeded();
- notifyDone();
-}
-
-void WindowGeometryTest::showTestHarnessWindowIfNeeded()
-{
- HWND testHarnessWindow = this->testHarnessWindow();
- m_testHarnessWindowWasVisible = ::IsWindowVisible(testHarnessWindow);
- if (m_testHarnessWindowWasVisible)
- return;
- ::ShowWindow(testHarnessWindow, SW_SHOWNA);
-}
-
-void WindowGeometryTest::hideTestHarnessWindowIfNeeded()
-{
- if (m_testHarnessWindowWasVisible)
- return;
- ::ShowWindow(testHarnessWindow(), SW_HIDE);
-}
-
-LRESULT WindowGeometryTest::wndProc(UINT message, WPARAM wParam, LPARAM lParam, bool& handled)
-{
- switch (message) {
- case WM_TIMER:
- if (wParam != triggerPaintTimerID)
- break;
- handled = true;
- ::KillTimer(window(), wParam);
- // Tell the UI process to paint.
- ::PostMessageW(::GetParent(window()), WM_PAINT, 0, 0);
- break;
- case WM_WINDOWPOSCHANGED: {
- WINDOWPOS* windowPos = reinterpret_cast<WINDOWPOS*>(lParam);
- if (!(windowPos->flags & SWP_SHOWWINDOW))
- break;
- finishTest();
- break;
- }
-
- }
-
- return 0;
-}
-
-NPError WindowGeometryTest::NPP_GetValue(NPPVariable variable, void* value)
-{
- if (variable != NPPVpluginScriptableNPObject)
- return NPERR_GENERIC_ERROR;
-
- *static_cast<NPObject**>(value) = ScriptObject::create(this);
-
- return NPERR_NO_ERROR;
-}
-
-bool WindowGeometryTest::ScriptObject::hasMethod(NPIdentifier methodName)
-{
- return methodName == pluginTest()->NPN_GetStringIdentifier("startTest");
-}
-
-bool WindowGeometryTest::ScriptObject::invoke(NPIdentifier identifier, const NPVariant*, uint32_t, NPVariant*)
-{
- assert(identifier == pluginTest()->NPN_GetStringIdentifier("startTest"));
- static_cast<WindowGeometryTest*>(pluginTest())->startTest();
- return true;
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.h b/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.h
deleted file mode 100644
index 4878a6941..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowGeometryTest.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2010, 2011 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. 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 INC. 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 WindowGeometryTest_h
-#define WindowGeometryTest_h
-
-#include "WindowedPluginTest.h"
-
-class WindowGeometryTest : public WindowedPluginTest {
-public:
- WindowGeometryTest(NPP, const std::string& identifier);
-
-private:
- struct ScriptObject : Object<ScriptObject> {
- bool hasMethod(NPIdentifier);
- bool invoke(NPIdentifier, const NPVariant*, uint32_t, NPVariant*);
- };
-
- static const UINT_PTR triggerPaintTimerID = 1;
-
- void startTest();
- void finishTest();
-
- void showTestHarnessWindowIfNeeded();
- void hideTestHarnessWindowIfNeeded();
-
- // For subclasses to implement
- virtual void performWindowGeometryTest() = 0;
-
- // WindowedPluginTest
- virtual LRESULT wndProc(UINT message, WPARAM, LPARAM, bool& handled);
-
- // PluginTest
- virtual NPError NPP_GetValue(NPPVariable, void*);
-
- bool m_testHarnessWindowWasVisible;
-};
-
-#endif // WindowGeometryTest_h
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp b/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp
deleted file mode 100644
index 2e75ca162..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "WindowedPluginTest.h"
-
-using namespace std;
-
-static const wchar_t instancePointerProperty[] = L"org.webkit.TestNetscapePlugin.WindowedPluginTest.InstancePointer";
-
-WindowedPluginTest::WindowedPluginTest(NPP npp, const string& identifier)
- : PluginTest(npp, identifier)
- , m_window(0)
- , m_originalWndProc(0)
-{
-}
-
-HWND WindowedPluginTest::testHarnessWindow() const
-{
- return ::GetAncestor(window(), GA_ROOT);
-}
-
-NPError WindowedPluginTest::NPP_SetWindow(NPP instance, NPWindow* window)
-{
- HWND newWindow = reinterpret_cast<HWND>(window->window);
- if (newWindow == m_window)
- return NPERR_NO_ERROR;
-
- if (m_window) {
- ::RemovePropW(m_window, instancePointerProperty);
- ::SetWindowLongPtr(m_window, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(m_originalWndProc));
- m_originalWndProc = 0;
- }
-
- m_window = newWindow;
- if (!m_window)
- return NPERR_NO_ERROR;
-
- m_originalWndProc = reinterpret_cast<WNDPROC>(::SetWindowLongPtrW(m_window, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(staticWndProc)));
- ::SetPropW(m_window, instancePointerProperty, this);
-
- return NPERR_NO_ERROR;
-}
-
-LRESULT WindowedPluginTest::staticWndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- WindowedPluginTest* instance = reinterpret_cast<WindowedPluginTest*>(::GetPropW(hwnd, instancePointerProperty));
-
- bool handled = false;
- LRESULT result = instance->wndProc(message, wParam, lParam, handled);
- if (handled)
- return result;
-
- return ::CallWindowProcW(instance->m_originalWndProc, hwnd, message, wParam, lParam);
-}
diff --git a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h b/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h
deleted file mode 100644
index b50746ae3..000000000
--- a/Tools/DumpRenderTree/TestNetscapePlugIn/win/WindowedPluginTest.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 WindowedPluginTest_h
-#define WindowedPluginTest_h
-
-#include "PluginTest.h"
-
-class WindowedPluginTest : public PluginTest {
-protected:
- WindowedPluginTest(NPP, const std::string& identifier);
-
- HWND window() const { return m_window; }
- HWND testHarnessWindow() const;
-
- // For derived classes to override
- virtual LRESULT wndProc(UINT message, WPARAM, LPARAM, bool& handled) = 0;
-
- // PluginTest
- virtual NPError NPP_SetWindow(NPP, NPWindow*);
-
-private:
- static LRESULT CALLBACK staticWndProc(HWND, UINT message, WPARAM, LPARAM);
-
- HWND m_window;
- WNDPROC m_originalWndProc;
-};
-
-#endif // WindowedPluginTest_h
diff --git a/Tools/DumpRenderTree/TestRunner.cpp b/Tools/DumpRenderTree/TestRunner.cpp
index fdb3aaaf1..b5270dc46 100644
--- a/Tools/DumpRenderTree/TestRunner.cpp
+++ b/Tools/DumpRenderTree/TestRunner.cpp
@@ -11,7 +11,7 @@
* 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
+ * 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.
*
@@ -32,20 +32,24 @@
#include "WorkQueue.h"
#include "WorkQueueItem.h"
+#include <JavaScriptCore/APICast.h>
#include <JavaScriptCore/JSContextRef.h>
#include <JavaScriptCore/JSCTestRunnerUtils.h>
#include <JavaScriptCore/JSObjectRef.h>
#include <JavaScriptCore/JSRetainPtr.h>
#include <cstring>
#include <locale.h>
+#include <runtime/ArrayBufferView.h>
+#include <runtime/JSArrayBufferView.h>
+#include <runtime/TypedArrayInlines.h>
#include <stdio.h>
#include <wtf/Assertions.h>
#include <wtf/CurrentTime.h>
#include <wtf/MathExtras.h>
-#include <wtf/OwnArrayPtr.h>
#include <wtf/RefPtr.h>
+#include <wtf/StdLibExtras.h>
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) && !PLATFORM(IOS)
#include <Carbon/Carbon.h>
#endif
@@ -55,7 +59,7 @@ const unsigned TestRunner::viewHeight = 600;
const unsigned TestRunner::w3cSVGViewWidth = 480;
const unsigned TestRunner::w3cSVGViewHeight = 360;
-TestRunner::TestRunner(const std::string& testPathOrURL, const std::string& expectedPixelHash)
+TestRunner::TestRunner(const std::string& testURL, const std::string& expectedPixelHash)
: m_disallowIncreaseForApplicationCacheQuota(false)
, m_dumpApplicationCacheDelegateCallbacks(false)
, m_dumpAsAudio(false)
@@ -106,15 +110,18 @@ TestRunner::TestRunner(const std::string& testPathOrURL, const std::string& expe
, m_areLegacyWebNotificationPermissionRequestsIgnored(false)
, m_customFullScreenBehavior(false)
, m_hasPendingWebNotificationClick(false)
- , m_testPathOrURL(testPathOrURL)
+ , m_databaseDefaultQuota(-1)
+ , m_databaseMaxQuota(-1)
+ , m_testURL(testURL)
, m_expectedPixelHash(expectedPixelHash)
, m_titleTextDirection("ltr")
+ , m_timeout(0)
{
}
-PassRefPtr<TestRunner> TestRunner::create(const std::string& testPathOrURL, const std::string& expectedPixelHash)
+PassRefPtr<TestRunner> TestRunner::create(const std::string& testURL, const std::string& expectedPixelHash)
{
- return adoptRef(new TestRunner(testPathOrURL, expectedPixelHash));
+ return adoptRef(new TestRunner(testURL, expectedPixelHash));
}
// Static Functions
@@ -328,22 +335,22 @@ static JSValueRef setCloseRemainingWindowsWhenCompleteCallback(JSContextRef cont
return JSValueMakeUndefined(context);
}
-static JSValueRef setEncodedAudioDataCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+static JSValueRef setAudioResultCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
- JSRetainPtr<JSStringRef> encodedAudioData(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- size_t maxLength = JSStringGetMaximumUTF8CStringSize(encodedAudioData.get());
- OwnArrayPtr<char> encodedAudioDataBuffer = adoptArrayPtr(new char[maxLength + 1]);
- JSStringGetUTF8CString(encodedAudioData.get(), encodedAudioDataBuffer.get(), maxLength + 1);
+ // FIXME (123058): Use a JSC API to get buffer contents once such is exposed.
+ JSC::JSArrayBufferView* jsBufferView = JSC::jsDynamicCast<JSC::JSArrayBufferView*>(toJS(toJS(context), arguments[0]));
+ ASSERT(jsBufferView);
+ RefPtr<JSC::ArrayBufferView> bufferView = jsBufferView->impl();
+ const char* buffer = static_cast<const char*>(bufferView->baseAddress());
+ std::vector<char> audioData(buffer, buffer + bufferView->byteLength());
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- controller->setEncodedAudioData(encodedAudioDataBuffer.get());
+ controller->setAudioResult(audioData);
controller->setDumpAsAudio(true);
-
+
return JSValueMakeUndefined(context);
}
@@ -388,11 +395,11 @@ static JSValueRef addURLToRedirectCallback(JSContextRef context, JSObjectRef fun
ASSERT(!*exception);
size_t maxLength = JSStringGetMaximumUTF8CStringSize(origin.get());
- OwnArrayPtr<char> originBuffer = adoptArrayPtr(new char[maxLength + 1]);
+ auto originBuffer = std::make_unique<char[]>(maxLength + 1);
JSStringGetUTF8CString(origin.get(), originBuffer.get(), maxLength + 1);
maxLength = JSStringGetMaximumUTF8CStringSize(destination.get());
- OwnArrayPtr<char> destinationBuffer = adoptArrayPtr(new char[maxLength + 1]);
+ auto destinationBuffer = std::make_unique<char[]>(maxLength + 1);
JSStringGetUTF8CString(destination.get(), destinationBuffer.get(), maxLength + 1);
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
@@ -460,73 +467,6 @@ static JSValueRef clearAllDatabasesCallback(JSContextRef context, JSObjectRef fu
return JSValueMakeUndefined(context);
}
-static JSValueRef syncLocalStorageCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
-
- controller->syncLocalStorage();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef observeStorageTrackerNotificationsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
-
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- unsigned numNotifications = JSValueToNumber(context, arguments[0], exception);
-
- ASSERT(!*exception);
-
- controller->observeStorageTrackerNotifications(numNotifications);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef deleteAllLocalStorageCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- controller->deleteAllLocalStorage();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef deleteLocalStorageForOriginCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
-
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> url(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- controller->deleteLocalStorageForOrigin(url.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef localStorageDiskUsageForOriginCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
-
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> originURL(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- return JSValueMakeNumber(context, controller->localStorageDiskUsageForOrigin(originURL.get()));
-}
-
-static JSValueRef originsWithLocalStorageCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- return controller->originsWithLocalStorage(context);
-}
-
static JSValueRef clearBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac & windows implementation
@@ -706,6 +646,12 @@ static JSValueRef numberOfPendingGeolocationPermissionRequestsCallback(JSContext
return JSValueMakeNumber(context, controller->numberOfPendingGeolocationPermissionRequests());
}
+static JSValueRef isGeolocationProviderActiveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ return JSValueMakeBoolean(context, controller->isGeolocationProviderActive());
+}
+
static JSValueRef queueBackNavigationCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac & windows implementation
@@ -873,21 +819,6 @@ static JSValueRef setAppCacheMaximumSizeCallback(JSContextRef context, JSObjectR
return JSValueMakeUndefined(context);
}
-static JSValueRef setApplicationCacheOriginQuotaCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- // Has mac implementation
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
-
- double size = JSValueToNumber(context, arguments[0], NULL);
- if (!std::isnan(size))
- controller->setApplicationCacheOriginQuota(static_cast<unsigned long long>(size));
-
- return JSValueMakeUndefined(context);
-}
-
static JSValueRef setAuthenticationPasswordCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac & windows implementation
@@ -1113,38 +1044,6 @@ static JSValueRef setMockGeolocationPositionUnavailableErrorCallback(JSContextRe
return JSValueMakeUndefined(context);
}
-static JSValueRef addMockSpeechInputResultCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> result(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- double confidence = JSValueToNumber(context, arguments[1], exception);
-
- JSRetainPtr<JSStringRef> language(Adopt, JSValueToStringCopy(context, arguments[2], exception));
- ASSERT(!*exception);
-
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- controller->addMockSpeechInputResult(result.get(), confidence, language.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setMockSpeechInputDumpRectCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- bool dumpRect = JSValueToBoolean(context, arguments[0]);
-
- TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- controller->setMockSpeechInputDumpRect(dumpRect);
-
- return JSValueMakeUndefined(context);
-}
-
static JSValueRef setNewWindowsCopyBackForwardListCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac implementation
@@ -1325,6 +1224,43 @@ static JSValueRef setTabKeyCyclesThroughElementsCallback(JSContextRef context, J
return JSValueMakeUndefined(context);
}
+#if PLATFORM(IOS)
+static JSValueRef setTelephoneNumberParsingEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount < 1)
+ return JSValueMakeUndefined(context);
+
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ controller->setTelephoneNumberParsingEnabled(JSValueToBoolean(context, arguments[0]));
+
+ return JSValueMakeUndefined(context);
+}
+
+static JSValueRef setPagePausedCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount < 1)
+ return JSValueMakeUndefined(context);
+
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ controller->setPagePaused(JSValueToBoolean(context, arguments[0]));
+
+ return JSValueMakeUndefined(context);
+}
+#endif
+
+#if ENABLE(IOS_TEXT_AUTOSIZING)
+static JSValueRef setTextAutosizingEnabledCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ if (argumentCount < 1)
+ return JSValueMakeUndefined(context);
+
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ controller->setTextAutosizingEnabled(JSValueToBoolean(context, arguments[0]));
+
+ return JSValueMakeUndefined(context);
+}
+#endif
+
static JSValueRef setUseDashboardCompatibilityModeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
// Has mac implementation
@@ -1404,7 +1340,7 @@ static JSValueRef setWillSendRequestClearHeaderCallback(JSContextRef context, JS
ASSERT(!*exception);
size_t maxLength = JSStringGetMaximumUTF8CStringSize(header.get());
- OwnArrayPtr<char> headerBuffer = adoptArrayPtr(new char[maxLength + 1]);
+ auto headerBuffer = std::make_unique<char[]>(maxLength + 1);
JSStringGetUTF8CString(header.get(), headerBuffer.get(), maxLength + 1);
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
@@ -1551,12 +1487,10 @@ static JSValueRef closeWebInspectorCallback(JSContextRef context, JSObjectRef fu
static JSValueRef evaluateInWebInspectorCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- double callId = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!*exception);
- JSRetainPtr<JSStringRef> script(Adopt, JSValueToStringCopy(context, arguments[1], exception));
+ JSRetainPtr<JSStringRef> script(Adopt, JSValueToStringCopy(context, arguments[0], exception));
ASSERT(!*exception);
- controller->evaluateInWebInspector(static_cast<long>(callId), script.get());
+ controller->evaluateInWebInspector(script.get());
return JSValueMakeUndefined(context);
}
@@ -1822,26 +1756,27 @@ static JSValueRef getGlobalFlagCallback(JSContextRef context, JSObjectRef thisOb
return JSValueMakeBoolean(context, controller->globalFlag());
}
-static JSValueRef getWebHistoryItemCountCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef getDatabaseDefaultQuotaCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- return JSValueMakeNumber(context, controller->webHistoryItemCount());
+ return JSValueMakeNumber(context, controller->databaseDefaultQuota());
}
-#if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(WIN) || PLATFORM(EFL)
-static JSValueRef getPlatformNameCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+static JSValueRef getDatabaseMaxQuotaCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
- JSRetainPtr<JSStringRef> platformName(controller->platformName());
- if (!platformName.get())
- return JSValueMakeUndefined(context);
- return JSValueMakeString(context, platformName.get());
+ return JSValueMakeNumber(context, controller->databaseMaxQuota());
+}
+
+static JSValueRef getWebHistoryItemCountCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ return JSValueMakeNumber(context, controller->webHistoryItemCount());
}
-#endif
static JSValueRef getSecureEventInputIsEnabledCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
{
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) && !PLATFORM(IOS)
return JSValueMakeBoolean(context, IsSecureEventInputEnabled());
#else
return JSValueMakeBoolean(context, false);
@@ -1855,6 +1790,13 @@ static JSValueRef getTitleTextDirectionCallback(JSContextRef context, JSObjectRe
return JSValueMakeString(context, titleDirection.get());
}
+static JSValueRef getInspectorTestStubURLCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef* exception)
+{
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ JSRetainPtr<JSStringRef> url(Adopt, controller->inspectorTestStubURL());
+ return JSValueMakeString(context, url.get());
+}
+
static bool setGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
@@ -1862,6 +1804,22 @@ static bool setGlobalFlagCallback(JSContextRef context, JSObjectRef thisObject,
return true;
}
+static bool setDatabaseDefaultQuotaCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
+{
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ controller->setDatabaseDefaultQuota(JSValueToNumber(context, value, exception));
+ ASSERT(!*exception);
+ return true;
+}
+
+static bool setDatabaseMaxQuotaCallback(JSContextRef context, JSObjectRef thisObject, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
+{
+ TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
+ controller->setDatabaseMaxQuota(JSValueToNumber(context, value, exception));
+ ASSERT(!*exception);
+ return true;
+}
+
static JSValueRef ignoreLegacyWebNotificationPermissionRequestsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
TestRunner* controller = static_cast<TestRunner*>(JSObjectGetPrivate(thisObject));
@@ -1975,11 +1933,16 @@ static JSValueRef simulateWebNotificationClickCallback(JSContextRef context, JSO
return JSValueMakeUndefined(context);
}
-static JSValueRef numberOfDFGCompiles(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+static JSValueRef failNextNewCodeBlock(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
{
if (argumentCount < 1)
return JSValueMakeUndefined(context);
+ return JSC::failNextNewCodeBlock(context);
+}
+
+static JSValueRef numberOfDFGCompiles(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
return JSC::numberOfDFGCompiles(context, arguments[0]);
}
@@ -2028,11 +1991,11 @@ JSStaticValue* TestRunner::staticValues()
static JSStaticValue staticValues[] = {
{ "globalFlag", getGlobalFlagCallback, setGlobalFlagCallback, kJSPropertyAttributeNone },
{ "webHistoryItemCount", getWebHistoryItemCountCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-#if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(WIN) || PLATFORM(EFL)
- { "platformName", getPlatformNameCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-#endif
{ "secureEventInputIsEnabled", getSecureEventInputIsEnabledCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "titleTextDirection", getTitleTextDirectionCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "databaseDefaultQuota", getDatabaseDefaultQuotaCallback, setDatabaseDefaultQuotaCallback, kJSPropertyAttributeNone },
+ { "databaseMaxQuota", getDatabaseMaxQuotaCallback, setDatabaseMaxQuotaCallback, kJSPropertyAttributeNone },
+ { "inspectorTestStubURL", getInspectorTestStubURLCallback, 0, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0, 0 }
};
return staticValues;
@@ -2089,6 +2052,7 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "originsWithApplicationCache", originsWithApplicationCacheCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "goBack", goBackCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "ignoreLegacyWebNotificationPermissionRequests", ignoreLegacyWebNotificationPermissionRequestsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "isGeolocationProviderActive", isGeolocationProviderActiveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "isCommandEnabled", isCommandEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "keepWebHistory", keepWebHistoryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "numberOfPendingGeolocationPermissionRequests", numberOfPendingGeolocationPermissionRequestsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -2112,8 +2076,7 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "setAllowFileAccessFromFileURLs", setAllowFileAccessFromFileURLsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setAlwaysAcceptCookies", setAlwaysAcceptCookiesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setAppCacheMaximumSize", setAppCacheMaximumSizeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setApplicationCacheOriginQuota", setApplicationCacheOriginQuotaCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setEncodedAudioData", setEncodedAudioDataCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setAudioResult", setAudioResultCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setAuthenticationPassword", setAuthenticationPasswordCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setAuthenticationUsername", setAuthenticationUsernameCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setAuthorAndUserStylesEnabled", setAuthorAndUserStylesEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -2135,8 +2098,6 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "setMockDeviceOrientation", setMockDeviceOrientationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setMockGeolocationPositionUnavailableError", setMockGeolocationPositionUnavailableErrorCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setMockGeolocationPosition", setMockGeolocationPositionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "addMockSpeechInputResult", addMockSpeechInputResultCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setMockSpeechInputDumpRect", setMockSpeechInputDumpRectCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setNewWindowsCopyBackForwardList", setNewWindowsCopyBackForwardListCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setPageVisibility", setPageVisibilityCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setPOSIXLocale", setPOSIXLocaleCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -2149,6 +2110,13 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "setSpatialNavigationEnabled", setSpatialNavigationEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setStopProvisionalFrameLoads", setStopProvisionalFrameLoadsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setTabKeyCyclesThroughElements", setTabKeyCyclesThroughElementsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#if PLATFORM(IOS)
+ { "setTelephoneNumberParsingEnabled", setTelephoneNumberParsingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "setPagePaused", setPagePausedCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#endif
+#if ENABLE(IOS_TEXT_AUTOSIZING)
+ { "setTextAutosizingEnabled", setTextAutosizingEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+#endif
{ "setUseDashboardCompatibilityMode", setUseDashboardCompatibilityModeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setUserStyleSheetEnabled", setUserStyleSheetEnabledCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setUserStyleSheetLocation", setUserStyleSheetLocationCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -2171,12 +2139,6 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "addOriginAccessWhitelistEntry", addOriginAccessWhitelistEntryCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setScrollbarPolicy", setScrollbarPolicyCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "authenticateSession", authenticateSessionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "deleteAllLocalStorage", deleteAllLocalStorageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "syncLocalStorage", syncLocalStorageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "observeStorageTrackerNotifications", observeStorageTrackerNotificationsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "deleteLocalStorageForOrigin", deleteLocalStorageForOriginCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "localStorageDiskUsageForOrigin", localStorageDiskUsageForOriginCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "originsWithLocalStorage", originsWithLocalStorageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setShouldPaintBrokenImage", setShouldPaintBrokenImageCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setTextDirection", setTextDirectionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "setShouldStayOnPageAfterHandlingBeforeUnload", setShouldStayOnPageAfterHandlingBeforeUnloadCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
@@ -2192,6 +2154,7 @@ JSStaticFunction* TestRunner::staticFunctions()
{ "denyWebNotificationPermission", denyWebNotificationPermissionCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "removeAllWebNotificationPermissions", removeAllWebNotificationPermissionsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "simulateWebNotificationClick", simulateWebNotificationClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { "failNextNewCodeBlock", failNextNewCodeBlock, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "numberOfDFGCompiles", numberOfDFGCompiles, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ "neverInlineFunction", neverInlineFunction, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
{ 0, 0, 0 }
@@ -2202,37 +2165,37 @@ JSStaticFunction* TestRunner::staticFunctions()
void TestRunner::queueLoadHTMLString(JSStringRef content, JSStringRef baseURL)
{
- WorkQueue::shared()->queue(new LoadHTMLStringItem(content, baseURL));
+ WorkQueue::singleton().queue(new LoadHTMLStringItem(content, baseURL));
}
void TestRunner::queueLoadAlternateHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL)
{
- WorkQueue::shared()->queue(new LoadHTMLStringItem(content, baseURL, unreachableURL));
+ WorkQueue::singleton().queue(new LoadHTMLStringItem(content, baseURL, unreachableURL));
}
void TestRunner::queueBackNavigation(int howFarBack)
{
- WorkQueue::shared()->queue(new BackItem(howFarBack));
+ WorkQueue::singleton().queue(new BackItem(howFarBack));
}
void TestRunner::queueForwardNavigation(int howFarForward)
{
- WorkQueue::shared()->queue(new ForwardItem(howFarForward));
+ WorkQueue::singleton().queue(new ForwardItem(howFarForward));
}
void TestRunner::queueLoadingScript(JSStringRef script)
{
- WorkQueue::shared()->queue(new LoadingScriptItem(script));
+ WorkQueue::singleton().queue(new LoadingScriptItem(script));
}
void TestRunner::queueNonLoadingScript(JSStringRef script)
{
- WorkQueue::shared()->queue(new NonLoadingScriptItem(script));
+ WorkQueue::singleton().queue(new NonLoadingScriptItem(script));
}
void TestRunner::queueReload()
{
- WorkQueue::shared()->queue(new ReloadItem);
+ WorkQueue::singleton().queue(new ReloadItem);
}
void TestRunner::ignoreLegacyWebNotificationPermissionRequests()
@@ -2243,7 +2206,6 @@ void TestRunner::ignoreLegacyWebNotificationPermissionRequests()
void TestRunner::waitToDumpWatchdogTimerFired()
{
const char* message = "FAIL: Timed out waiting for notifyDone to be called\n";
- fprintf(stderr, "%s", message);
fprintf(stdout, "%s", message);
notifyDone();
}
diff --git a/Tools/DumpRenderTree/TestRunner.h b/Tools/DumpRenderTree/TestRunner.h
index f5133922b..d51ac6feb 100644
--- a/Tools/DumpRenderTree/TestRunner.h
+++ b/Tools/DumpRenderTree/TestRunner.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -30,7 +30,6 @@
#define TestRunner_h
#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
#include <map>
#include <set>
#include <string>
@@ -40,7 +39,7 @@
class TestRunner : public RefCounted<TestRunner> {
public:
- static PassRefPtr<TestRunner> create(const std::string& testPathOrURL, const std::string& expectedPixelHash);
+ static PassRefPtr<TestRunner> create(const std::string& testURL, const std::string& expectedPixelHash);
static const unsigned viewWidth;
static const unsigned viewHeight;
@@ -53,6 +52,8 @@ public:
void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
void addDisallowedURL(JSStringRef url);
+ const std::set<std::string>& allowedHosts() const { return m_allowedHosts; }
+ void setAllowedHosts(std::set<std::string> hosts) { m_allowedHosts = WTFMove(hosts); }
void addURLToRedirect(std::string origin, std::string destination);
const std::string& redirectionDestinationForURL(std::string);
void clearAllApplicationCaches();
@@ -75,6 +76,7 @@ public:
void keepWebHistory();
void notifyDone();
int numberOfPendingGeolocationPermissionRequests();
+ bool isGeolocationProviderActive();
void overridePreference(JSStringRef key, JSStringRef value);
JSStringRef pathToLocalResource(JSContextRef, JSStringRef url);
void queueBackNavigation(int howFarBackward);
@@ -90,7 +92,6 @@ public:
void setAllowUniversalAccessFromFileURLs(bool);
void setAllowFileAccessFromFileURLs(bool);
void setAppCacheMaximumSize(unsigned long long quota);
- void setApplicationCacheOriginQuota(unsigned long long);
void setAuthorAndUserStylesEnabled(bool);
void setCacheModel(int);
void setCustomPolicyDelegate(bool setDelegate, bool permissive);
@@ -104,8 +105,6 @@ public:
void setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma);
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
void setMockGeolocationPositionUnavailableError(JSStringRef message);
- void addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language);
- void setMockSpeechInputDumpRect(bool flag);
void setPersistentUserStyleSheetLocation(JSStringRef path);
void setPluginsEnabled(bool);
void setPopupBlockingEnabled(bool);
@@ -119,16 +118,20 @@ public:
void setXSSAuditorEnabled(bool flag);
void setSpatialNavigationEnabled(bool);
void setScrollbarPolicy(JSStringRef orientation, JSStringRef policy);
- void startSpeechInput(JSContextRef inputElement);
+#if PLATFORM(IOS)
+ void setTelephoneNumberParsingEnabled(bool enable);
+ void setPagePaused(bool paused);
+#endif
+
void setPageVisibility(const char*);
void resetPageVisibility();
void waitForPolicyDelegate();
size_t webHistoryItemCount();
int windowCount();
-
-#if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(WIN) || PLATFORM(EFL)
- JSRetainPtr<JSStringRef> platformName() const;
+
+#if ENABLE(IOS_TEXT_AUTOSIZING)
+ void setTextAutosizingEnabled(bool);
#endif
// Legacy here refers to the old TestRunner API for handling web notifications, not the legacy web notification API.
@@ -273,17 +276,23 @@ public:
bool globalFlag() const { return m_globalFlag; }
void setGlobalFlag(bool globalFlag) { m_globalFlag = globalFlag; }
+ double databaseDefaultQuota() const { return m_databaseDefaultQuota; }
+ void setDatabaseDefaultQuota(double quota) { m_databaseDefaultQuota = quota; }
+
+ double databaseMaxQuota() const { return m_databaseMaxQuota; }
+ void setDatabaseMaxQuota(double quota) { m_databaseMaxQuota = quota; }
+
bool deferMainResourceDataLoad() const { return m_deferMainResourceDataLoad; }
void setDeferMainResourceDataLoad(bool flag) { m_deferMainResourceDataLoad = flag; }
bool useDeferredFrameLoading() const { return m_useDeferredFrameLoading; }
void setUseDeferredFrameLoading(bool flag) { m_useDeferredFrameLoading = flag; }
- const std::string& testPathOrURL() const { return m_testPathOrURL; }
+ const std::string& testURL() const { return m_testURL; }
const std::string& expectedPixelHash() const { return m_expectedPixelHash; }
- const std::string& encodedAudioData() const { return m_encodedAudioData; }
- void setEncodedAudioData(const std::string& encodedAudioData) { m_encodedAudioData = encodedAudioData; }
+ const std::vector<char>& audioResult() const { return m_audioResult; }
+ void setAudioResult(const std::vector<char>& audioData) { m_audioResult = audioData; }
void addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
void removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains);
@@ -298,7 +307,9 @@ public:
void setDeveloperExtrasEnabled(bool);
void showWebInspector();
void closeWebInspector();
- void evaluateInWebInspector(long callId, JSStringRef script);
+ void evaluateInWebInspector(JSStringRef script);
+ JSStringRef inspectorTestStubURL();
+
void evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script);
void evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script);
@@ -327,13 +338,6 @@ public:
// Simulate a request an embedding application could make, populating per-session credential storage.
void authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password);
- JSValueRef originsWithLocalStorage(JSContextRef);
- void deleteAllLocalStorage();
- void deleteLocalStorageForOrigin(JSStringRef originIdentifier);
- long long localStorageDiskUsageForOrigin(JSStringRef originIdentifier);
- void observeStorageTrackerNotifications(unsigned number);
- void syncLocalStorage();
-
void setShouldPaintBrokenImage(bool);
bool shouldPaintBrokenImage() const { return m_shouldPaintBrokenImage; }
@@ -350,8 +354,10 @@ public:
bool hasPendingWebNotificationClick() const { return m_hasPendingWebNotificationClick; }
+ void setCustomTimeout(int duration) { m_timeout = duration; }
+
private:
- TestRunner(const std::string& testPathOrURL, const std::string& expectedPixelHash);
+ TestRunner(const std::string& testURL, const std::string& expectedPixelHash);
void setGeolocationPermissionCommon(bool allow);
@@ -407,22 +413,27 @@ private:
bool m_customFullScreenBehavior;
bool m_hasPendingWebNotificationClick;
+ double m_databaseDefaultQuota;
+ double m_databaseMaxQuota;
+
std::string m_authenticationUsername;
std::string m_authenticationPassword;
- std::string m_testPathOrURL;
+ std::string m_testURL;
std::string m_expectedPixelHash; // empty string if no hash
std::string m_titleTextDirection;
std::set<std::string> m_willSendRequestClearHeaders;
-
- // base64 encoded WAV audio data is stored here.
- std::string m_encodedAudioData;
+ std::set<std::string> m_allowedHosts;
+
+ std::vector<char> m_audioResult;
std::map<std::string, std::string> m_URLsToRedirect;
-
+
static JSClassRef getJSClass();
static JSStaticValue* staticValues();
static JSStaticFunction* staticFunctions();
+
+ int m_timeout;
};
#endif // TestRunner_h
diff --git a/Tools/DumpRenderTree/WorkQueue.cpp b/Tools/DumpRenderTree/WorkQueue.cpp
index f38d81a34..68f5afffe 100644
--- a/Tools/DumpRenderTree/WorkQueue.cpp
+++ b/Tools/DumpRenderTree/WorkQueue.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -35,6 +35,7 @@
#include "WorkQueueItem.h"
#endif
#include <wtf/Assertions.h>
+#include <wtf/NeverDestroyed.h>
static const unsigned queueLength = 1024;
@@ -42,9 +43,9 @@ static WorkQueueItem* theQueue[queueLength];
static unsigned startOfQueue;
static unsigned endOfQueue;
-WorkQueue* WorkQueue::shared()
+WorkQueue& WorkQueue::singleton()
{
- static WorkQueue* sharedInstance = new WorkQueue;
+ static NeverDestroyed<WorkQueue> sharedInstance;
return sharedInstance;
}
diff --git a/Tools/DumpRenderTree/WorkQueue.h b/Tools/DumpRenderTree/WorkQueue.h
index 649c6c1f5..0697e7c3e 100644
--- a/Tools/DumpRenderTree/WorkQueue.h
+++ b/Tools/DumpRenderTree/WorkQueue.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -29,11 +29,15 @@
#ifndef WorkQueue_h
#define WorkQueue_h
+#include <wtf/Forward.h>
+
class WorkQueueItem;
class WorkQueue {
+friend class WTF::NeverDestroyed<WorkQueue>;
+
public:
- static WorkQueue* shared();
+ static WorkQueue& singleton();
void queue(WorkQueueItem*);
WorkQueueItem* dequeue();
diff --git a/Tools/DumpRenderTree/WorkQueueItem.h b/Tools/DumpRenderTree/WorkQueueItem.h
index a5823c156..6a49f593f 100644
--- a/Tools/DumpRenderTree/WorkQueueItem.h
+++ b/Tools/DumpRenderTree/WorkQueueItem.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -132,7 +132,7 @@ private:
class BackItem : public BackForwardItem {
public:
- BackItem(unsigned howFar)
+ BackItem(int howFar)
: BackForwardItem(-howFar)
{
}
@@ -140,7 +140,7 @@ public:
class ForwardItem : public BackForwardItem {
public:
- ForwardItem(unsigned howFar)
+ ForwardItem(int howFar)
: BackForwardItem(howFar)
{
}
diff --git a/Tools/DumpRenderTree/atk/AccessibilityCallbacks.h b/Tools/DumpRenderTree/atk/AccessibilityCallbacks.h
deleted file mode 100644
index 7225757e6..000000000
--- a/Tools/DumpRenderTree/atk/AccessibilityCallbacks.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 AccessibilityCallbacks_h
-#define AccessibilityCallbacks_h
-
-void connectAccessibilityCallbacks();
-void disconnectAccessibilityCallbacks();
-
-#endif
diff --git a/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp b/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp
deleted file mode 100644
index 1ea4f4aac..000000000
--- a/Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 "AccessibilityCallbacks.h"
-
-#if HAVE(ACCESSIBILITY)
-
-#include "AccessibilityController.h"
-#include "DumpRenderTree.h"
-#include <atk/atk.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-#if PLATFORM(GTK)
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include <webkit/webkit.h>
-#endif
-
-#if PLATFORM(EFL)
-#include "DumpRenderTreeChrome.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#endif
-
-static guint stateChangeListenerId = 0;
-static guint focusEventListenerId = 0;
-static guint activeDescendantChangedListenerId = 0;
-static guint childrenChangedListenerId = 0;
-static guint propertyChangedListenerId = 0;
-static guint visibleDataChangedListenerId = 0;
-
-static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue)
-{
- // Do not handle state-change:defunct signals, as the AtkObject
- // associated to them will not be valid at this point already.
- if (!signalName || !g_strcmp0(signalName, "state-change:defunct"))
- return;
-
- if (!accessible || !ATK_IS_OBJECT(accessible))
- return;
-
- const gchar* objectName = atk_object_get_name(accessible);
- AtkRole objectRole = atk_object_get_role(accessible);
-
- // Try to always provide a name to be logged for the object.
- if (!objectName || *objectName == '\0')
- objectName = "(No name)";
-
- GOwnPtr<gchar> signalNameAndValue(signalValue ? g_strdup_printf("%s = %s", signalName, signalValue) : g_strdup(signalName));
- printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n", signalNameAndValue.get(), objectName, objectRole);
-}
-
-static gboolean axObjectEventListener(GSignalInvocationHint *signalHint, guint numParamValues, const GValue *paramValues, gpointer data)
-{
- // At least we should receive the instance emitting the signal.
- if (numParamValues < 1)
- return TRUE;
-
- AtkObject* accessible = ATK_OBJECT(g_value_get_object(&paramValues[0]));
- if (!accessible || !ATK_IS_OBJECT(accessible))
- return TRUE;
-
- GSignalQuery signalQuery;
- GOwnPtr<gchar> signalName;
- GOwnPtr<gchar> signalValue;
-
- g_signal_query(signalHint->signal_id, &signalQuery);
-
- if (!g_strcmp0(signalQuery.signal_name, "state-change")) {
- signalName.set(g_strdup_printf("state-change:%s", g_value_get_string(&paramValues[1])));
- signalValue.set(g_strdup_printf("%d", g_value_get_boolean(&paramValues[2])));
- } else if (!g_strcmp0(signalQuery.signal_name, "focus-event")) {
- signalName.set(g_strdup("focus-event"));
- signalValue.set(g_strdup_printf("%d", g_value_get_boolean(&paramValues[1])));
- } else if (!g_strcmp0(signalQuery.signal_name, "children-changed")) {
- signalName.set(g_strdup("children-changed"));
- signalValue.set(g_strdup_printf("%d", g_value_get_uint(&paramValues[1])));
- } else if (!g_strcmp0(signalQuery.signal_name, "property-change"))
- signalName.set(g_strdup_printf("property-change:%s", g_quark_to_string(signalHint->detail)));
- else
- signalName.set(g_strdup(signalQuery.signal_name));
-
- printAccessibilityEvent(accessible, signalName.get(), signalValue.get());
-
- return TRUE;
-}
-
-void connectAccessibilityCallbacks()
-{
- // Ensure no callbacks are connected before.
- disconnectAccessibilityCallbacks();
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object, which will create the full hierarchy.
-#if PLATFORM(GTK)
- DumpRenderTreeSupportGtk::getRootAccessibleElement(mainFrame);
-#elif PLATFORM(EFL)
- DumpRenderTreeSupportEfl::rootAccessibleElement(browser->mainFrame());
-#endif
-
- // Add global listeners for AtkObject's signals.
- stateChangeListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:state-change");
- focusEventListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:focus-event");
- activeDescendantChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:active-descendant-changed");
- childrenChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:children-changed");
- propertyChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:property-change");
- visibleDataChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:visible-data-changed");
-
- // Ensure the Atk interface types are registered, otherwise
- // the AtkDocument signal handlers below won't get registered.
- GObject* dummyAxObject = G_OBJECT(g_object_new(ATK_TYPE_OBJECT, 0));
- AtkObject* dummyNoOpAxObject = atk_no_op_object_new(dummyAxObject);
- g_object_unref(G_OBJECT(dummyNoOpAxObject));
- g_object_unref(dummyAxObject);
-}
-
-void disconnectAccessibilityCallbacks()
-{
- // AtkObject signals.
- if (stateChangeListenerId) {
- atk_remove_global_event_listener(stateChangeListenerId);
- stateChangeListenerId = 0;
- }
- if (focusEventListenerId) {
- atk_remove_global_event_listener(focusEventListenerId);
- focusEventListenerId = 0;
- }
- if (activeDescendantChangedListenerId) {
- atk_remove_global_event_listener(activeDescendantChangedListenerId);
- activeDescendantChangedListenerId = 0;
- }
- if (childrenChangedListenerId) {
- atk_remove_global_event_listener(childrenChangedListenerId);
- childrenChangedListenerId = 0;
- }
- if (propertyChangedListenerId) {
- atk_remove_global_event_listener(propertyChangedListenerId);
- propertyChangedListenerId = 0;
- }
- if (visibleDataChangedListenerId) {
- atk_remove_global_event_listener(visibleDataChangedListenerId);
- visibleDataChangedListenerId = 0;
- }
-}
-
-#endif
diff --git a/Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp b/Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp
deleted file mode 100644
index ddeaf2834..000000000
--- a/Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- *
- * 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"
-
-#if HAVE(ACCESSIBILITY)
-
-#include "AccessibilityCallbacks.h"
-#include "AccessibilityUIElement.h"
-#include "DumpRenderTree.h"
-
-#include <atk/atk.h>
-
-static bool loggingAccessibilityEvents = false;
-
-AccessibilityController::AccessibilityController()
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
-}
-
-AccessibilityUIElement AccessibilityController::elementAtPoint(int x, int y)
-{
- // FIXME: implement
- return 0;
-}
-
-
-void AccessibilityController::setLogFocusEvents(bool)
-{
-}
-
-void AccessibilityController::setLogScrollingStartEvents(bool)
-{
-}
-
-void AccessibilityController::setLogValueChangeEvents(bool)
-{
-}
-
-void AccessibilityController::setLogAccessibilityEvents(bool logAccessibilityEvents)
-{
- if (logAccessibilityEvents == loggingAccessibilityEvents)
- return;
-
- if (!logAccessibilityEvents) {
- disconnectAccessibilityCallbacks();
- loggingAccessibilityEvents = false;
- return;
- }
-
- connectAccessibilityCallbacks();
- loggingAccessibilityEvents = true;
-}
-
-bool AccessibilityController::addNotificationListener(JSObjectRef)
-{
- return false;
-}
-
-void AccessibilityController::removeNotificationListener()
-{
-}
-
-AtkObject* AccessibilityController::childElementById(AtkObject* parent, const char* id)
-{
- if (!ATK_IS_OBJECT(parent))
- return 0;
-
- bool parentFound = false;
- AtkAttributeSet* attributeSet(atk_object_get_attributes(parent));
- for (AtkAttributeSet* attributes = attributeSet; attributes; attributes = attributes->next) {
- AtkAttribute* attribute = static_cast<AtkAttribute*>(attributes->data);
- if (!strcmp(attribute->name, "html-id")) {
- if (!strcmp(attribute->value, id))
- parentFound = true;
- break;
- }
- }
- atk_attribute_set_free(attributeSet);
-
- if (parentFound)
- return parent;
-
- int childCount = atk_object_get_n_accessible_children(parent);
- for (int i = 0; i < childCount; i++) {
- AtkObject* result = childElementById(atk_object_ref_accessible_child(parent, i), id);
- if (ATK_IS_OBJECT(result))
- return result;
- }
-
- return 0;
-}
-
-#endif
diff --git a/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp b/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp
deleted file mode 100644
index 009b8a8d8..000000000
--- a/Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp
+++ /dev/null
@@ -1,1070 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- *
- * 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"
-
-#if HAVE(ACCESSIBILITY)
-
-#include <JavaScriptCore/JSStringRef.h>
-#include <atk/atk.h>
-#include <wtf/Assertions.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-#include <wtf/unicode/CharacterNames.h>
-
-static String coreAttributeToAtkAttribute(JSStringRef attribute)
-{
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(attribute);
- GOwnPtr<gchar> buffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(attribute, buffer.get(), bufferSize);
-
- String attributeString = String::fromUTF8(buffer.get());
- if (attributeString == "AXPlaceholderValue")
- return "placeholder-text";
-
- return "";
-}
-
-static String getAttributeSetValueForId(AtkObject* accessible, const char* id)
-{
- const char* attributeValue = 0;
- AtkAttributeSet* attributeSet = atk_object_get_attributes(accessible);
- for (AtkAttributeSet* attributes = attributeSet; attributes; attributes = attributes->next) {
- AtkAttribute* atkAttribute = static_cast<AtkAttribute*>(attributes->data);
- if (!strcmp(atkAttribute->name, id)) {
- attributeValue = atkAttribute->value;
- break;
- }
- }
-
- String atkAttributeValue = String::fromUTF8(attributeValue);
- atk_attribute_set_free(attributeSet);
-
- return atkAttributeValue;
-}
-
-static inline String roleToString(AtkRole role)
-{
- switch (role) {
- case ATK_ROLE_ALERT:
- return "AXRole: AXAlert";
- case ATK_ROLE_CANVAS:
- return "AXRole: AXCanvas";
- case ATK_ROLE_CHECK_BOX:
- return "AXRole: AXCheckBox";
- case ATK_ROLE_COLUMN_HEADER:
- return "AXRole: AXColumnHeader";
- case ATK_ROLE_COMBO_BOX:
- return "AXRole: AXComboBox";
- case ATK_ROLE_DOCUMENT_FRAME:
- return "AXRole: AXWebArea";
- case ATK_ROLE_ENTRY:
- return "AXRole: AXTextField";
- case ATK_ROLE_FOOTER:
- return "AXRole: AXFooter";
- case ATK_ROLE_FORM:
- return "AXRole: AXForm";
- case ATK_ROLE_GROUPING:
- return "AXRole: AXGroup";
- case ATK_ROLE_HEADING:
- return "AXRole: AXHeading";
- case ATK_ROLE_IMAGE:
- return "AXRole: AXImage";
- case ATK_ROLE_IMAGE_MAP:
- return "AXRole: AXImageMap";
- case ATK_ROLE_LABEL:
- return "AXRole: AXLabel";
- case ATK_ROLE_LINK:
- return "AXRole: AXLink";
- case ATK_ROLE_LIST:
- return "AXRole: AXList";
- case ATK_ROLE_LIST_BOX:
- return "AXRole: AXListBox";
- case ATK_ROLE_LIST_ITEM:
- return "AXRole: AXListItem";
- case ATK_ROLE_MENU:
- return "AXRole: AXMenu";
- case ATK_ROLE_MENU_BAR:
- return "AXRole: AXMenuBar";
- case ATK_ROLE_MENU_ITEM:
- return "AXRole: AXMenuItem";
- case ATK_ROLE_PAGE_TAB:
- return "AXRole: AXTab";
- case ATK_ROLE_PAGE_TAB_LIST:
- return "AXRole: AXTabGroup";
- case ATK_ROLE_PANEL:
- return "AXRole: AXGroup";
- case ATK_ROLE_PARAGRAPH:
- return "AXRole: AXParagraph";
- case ATK_ROLE_PASSWORD_TEXT:
- return "AXRole: AXPasswordField";
- case ATK_ROLE_PUSH_BUTTON:
- return "AXRole: AXButton";
- case ATK_ROLE_RADIO_BUTTON:
- return "AXRole: AXRadioButton";
- case ATK_ROLE_ROW_HEADER:
- return "AXRole: AXRowHeader";
- case ATK_ROLE_RULER:
- return "AXRole: AXRuler";
- case ATK_ROLE_SCROLL_BAR:
- return "AXRole: AXScrollBar";
- case ATK_ROLE_SCROLL_PANE:
- return "AXRole: AXScrollArea";
- case ATK_ROLE_SECTION:
- return "AXRole: AXDiv";
- case ATK_ROLE_SEPARATOR:
- return "AXRole: AXHorizontalRule";
- case ATK_ROLE_SLIDER:
- return "AXRole: AXSlider";
- case ATK_ROLE_SPIN_BUTTON:
- return "AXRole: AXSpinButton";
- case ATK_ROLE_TABLE:
- return "AXRole: AXTable";
- case ATK_ROLE_TABLE_CELL:
- return "AXRole: AXCell";
- case ATK_ROLE_TABLE_COLUMN_HEADER:
- return "AXRole: AXColumnHeader";
- case ATK_ROLE_TABLE_ROW:
- return "AXRole: AXRow";
- case ATK_ROLE_TABLE_ROW_HEADER:
- return "AXRole: AXRowHeader";
- case ATK_ROLE_TOGGLE_BUTTON:
- return "AXRole: AXToggleButton";
- case ATK_ROLE_TOOL_BAR:
- return "AXRole: AXToolbar";
- case ATK_ROLE_TOOL_TIP:
- return "AXRole: AXUserInterfaceTooltip";
- case ATK_ROLE_TREE:
- return "AXRole: AXTree";
- case ATK_ROLE_TREE_TABLE:
- return "AXRole: AXTreeGrid";
- case ATK_ROLE_TREE_ITEM:
- return "AXRole: AXTreeItem";
- case ATK_ROLE_WINDOW:
- return "AXRole: AXWindow";
- case ATK_ROLE_UNKNOWN:
- return "AXRole: AXUnknown";
- default:
- // We want to distinguish ATK_ROLE_UNKNOWN from a known AtkRole which
- // our DRT isn't properly handling.
- return "AXRole: FIXME not identified";
- }
-}
-
-static inline gchar* replaceCharactersForResults(gchar* str)
-{
- String uString = String::fromUTF8(str);
-
- // The object replacement character is passed along to ATs so we need to be
- // able to test for their presence and do so without causing test failures.
- uString.replace(objectReplacementCharacter, "<obj>");
-
- // The presence of newline characters in accessible text of a single object
- // is appropriate, but it makes test results (especially the accessible tree)
- // harder to read.
- uString.replace("\n", "<\\n>");
-
- return g_strdup(uString.utf8().data());
-}
-
-static bool checkElementState(PlatformUIElement element, AtkStateType stateType)
-{
- if (!ATK_IS_OBJECT(element))
- return false;
-
- GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(element)));
- return atk_state_set_contains_state(stateSet.get(), stateType);
-}
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
-{
- if (m_element)
- g_object_ref(m_element);
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
-{
- if (m_element)
- g_object_ref(m_element);
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
- if (m_element)
- g_object_unref(m_element);
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>& elements)
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>&)
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& children)
-{
- int count = childrenCount();
- for (int i = 0; i < count; i++) {
- AtkObject* child = atk_object_ref_accessible_child(ATK_OBJECT(m_element), i);
- children.append(AccessibilityUIElement(child));
- }
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement>& elementVector, unsigned start, unsigned end)
-{
- for (unsigned i = start; i < end; i++) {
- AtkObject* child = atk_object_ref_accessible_child(ATK_OBJECT(m_element), i);
- elementVector.append(AccessibilityUIElement(child));
- }
-}
-
-int AccessibilityUIElement::rowCount()
-{
- if (!m_element)
- return 0;
-
- ASSERT(ATK_IS_TABLE(m_element));
-
- return atk_table_get_n_rows(ATK_TABLE(m_element));
-}
-
-int AccessibilityUIElement::columnCount()
-{
- if (!m_element)
- return 0;
-
- ASSERT(ATK_IS_TABLE(m_element));
-
- return atk_table_get_n_columns(ATK_TABLE(m_element));
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- if (!m_element)
- return 0;
-
- ASSERT(ATK_IS_OBJECT(m_element));
-
- return atk_object_get_n_accessible_children(ATK_OBJECT(m_element));
-}
-
-AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y)
-{
- if (!m_element)
- return 0;
-
- return AccessibilityUIElement(atk_component_ref_accessible_at_point(ATK_COMPONENT(m_element), x, y, ATK_XY_WINDOW));
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
-{
- // FIXME: implement
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- Vector<AccessibilityUIElement> children;
- getChildrenWithRange(children, index, index + 1);
-
- if (children.size() == 1)
- return children.at(0);
-
- return 0;
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
-{
- // FIXME: implement
- return 0;
-}
-
-static char* getAtkAttributeSetAsString(AtkObject* accessible)
-{
- GString* str = g_string_new(0);
-
- AtkAttributeSet* attributeSet = atk_object_get_attributes(accessible);
- for (AtkAttributeSet* attributes = attributeSet; attributes; attributes = attributes->next) {
- AtkAttribute* attribute = static_cast<AtkAttribute*>(attributes->data);
- GOwnPtr<gchar> attributeData(g_strconcat(attribute->name, ":", attribute->value, NULL));
- g_string_append(str, attributeData.get());
- if (attributes->next)
- g_string_append(str, ", ");
- }
- atk_attribute_set_free(attributeSet);
-
- return g_string_free(str, FALSE);
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- if (!m_element || !ATK_IS_OBJECT(m_element))
- return JSStringCreateWithCharacters(0, 0);
-
- GOwnPtr<char> attributeData(getAtkAttributeSetAsString(ATK_OBJECT(m_element)));
- return JSStringCreateWithUTF8CString(attributeData.get());
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- if (!m_element)
- return 0;
-
- AtkRelationSet* set = atk_object_ref_relation_set(ATK_OBJECT(m_element));
- if (!set)
- return 0;
-
- AtkObject* target = 0;
- int count = atk_relation_set_get_n_relations(set);
- for (int i = 0; i < count; i++) {
- AtkRelation* relation = atk_relation_set_get_relation(set, i);
- if (atk_relation_get_relation_type(relation) == ATK_RELATION_LABELLED_BY) {
- GPtrArray* targetList = atk_relation_get_target(relation);
- if (targetList->len)
- target = static_cast<AtkObject*>(g_ptr_array_index(targetList, 0));
- }
- }
-
- g_object_unref(set);
- return target ? AccessibilityUIElement(target) : 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::parentElement()
-{
- if (!m_element)
- return 0;
-
- ASSERT(ATK_IS_OBJECT(m_element));
-
- AtkObject* parent = atk_object_get_parent(ATK_OBJECT(m_element));
- return parent ? AccessibilityUIElement(parent) : 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfChildren()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::role()
-{
- AtkRole role = atk_object_get_role(ATK_OBJECT(m_element));
- if (!role)
- return JSStringCreateWithCharacters(0, 0);
-
- String roleString = roleToString(role);
- return JSStringCreateWithUTF8CString(roleString.utf8().data());
-}
-
-JSStringRef AccessibilityUIElement::subrole()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::roleDescription()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- const gchar* name = atk_object_get_name(ATK_OBJECT(m_element));
- GOwnPtr<gchar> axTitle(g_strdup_printf("AXTitle: %s", name ? name : ""));
-
- return JSStringCreateWithUTF8CString(axTitle.get());
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- const gchar* description = atk_object_get_description(ATK_OBJECT(m_element));
-
- if (!description)
- return JSStringCreateWithCharacters(0, 0);
-
- GOwnPtr<gchar> axDesc(g_strdup_printf("AXDescription: %s", description));
-
- return JSStringCreateWithUTF8CString(axDesc.get());
-}
-
-JSStringRef AccessibilityUIElement::stringValue()
-{
- if (!m_element || !ATK_IS_TEXT(m_element))
- return JSStringCreateWithCharacters(0, 0);
-
- GOwnPtr<gchar> text(atk_text_get_text(ATK_TEXT(m_element), 0, -1));
- GOwnPtr<gchar> textWithReplacedCharacters(replaceCharactersForResults(text.get()));
- GOwnPtr<gchar> axValue(g_strdup_printf("AXValue: %s", textWithReplacedCharacters.get()));
-
- return JSStringCreateWithUTF8CString(axValue.get());
-}
-
-JSStringRef AccessibilityUIElement::language()
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- const gchar* locale = atk_object_get_object_locale(ATK_OBJECT(m_element));
- if (!locale)
- return JSStringCreateWithCharacters(0, 0);
-
- GOwnPtr<char> axValue(g_strdup_printf("AXLanguage: %s", locale));
- return JSStringCreateWithUTF8CString(axValue.get());
-}
-
-double AccessibilityUIElement::x()
-{
- int x, y;
-
- atk_component_get_position(ATK_COMPONENT(m_element), &x, &y, ATK_XY_SCREEN);
-
- return x;
-}
-
-double AccessibilityUIElement::y()
-{
- int x, y;
-
- atk_component_get_position(ATK_COMPONENT(m_element), &x, &y, ATK_XY_SCREEN);
-
- return y;
-}
-
-double AccessibilityUIElement::width()
-{
- int width, height;
-
- atk_component_get_size(ATK_COMPONENT(m_element), &width, &height);
-
- return width;
-}
-
-double AccessibilityUIElement::height()
-{
- int width, height;
-
- atk_component_get_size(ATK_COMPONENT(m_element), &width, &height);
-
- return height;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- // Note: This is not something we have in ATK.
- return 0.f;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- // Note: This is not something we have in ATK.
- return 0.f;
-}
-
-JSStringRef AccessibilityUIElement::orientation() const
-{
- if (!m_element || !ATK_IS_OBJECT(m_element))
- return JSStringCreateWithCharacters(0, 0);
-
- const char* axOrientation = 0;
- if (checkElementState(m_element, ATK_STATE_HORIZONTAL))
- axOrientation = "AXOrientation: AXHorizontalOrientation";
- else if (checkElementState(m_element, ATK_STATE_VERTICAL))
- axOrientation = "AXOrientation: AXVerticalOrientation";
-
- if (!axOrientation)
- return JSStringCreateWithCharacters(0, 0);
-
- return JSStringCreateWithUTF8CString(axOrientation);
-}
-
-double AccessibilityUIElement::intValue() const
-{
- GValue value = { 0, { { 0 } } };
-
- if (!ATK_IS_VALUE(m_element))
- return 0.0f;
-
- atk_value_get_current_value(ATK_VALUE(m_element), &value);
- if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
- return g_value_get_float(&value);
-}
-
-double AccessibilityUIElement::minValue()
-{
- GValue value = { 0, { { 0 } } };
-
- if (!ATK_IS_VALUE(m_element))
- return 0.0f;
-
- atk_value_get_minimum_value(ATK_VALUE(m_element), &value);
- if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
- return g_value_get_float(&value);
-}
-
-double AccessibilityUIElement::maxValue()
-{
- GValue value = { 0, { { 0 } } };
-
- if (!ATK_IS_VALUE(m_element))
- return 0.0f;
-
- atk_value_get_maximum_value(ATK_VALUE(m_element), &value);
- if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
- return g_value_get_float(&value);
-}
-
-JSStringRef AccessibilityUIElement::valueDescription()
-{
- // FIXME: implement after it has been implemented in ATK.
- // See: https://bugzilla.gnome.org/show_bug.cgi?id=684576
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- return checkElementState(m_element, ATK_STATE_ENABLED);
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- // FIXME: implement
- return 0;
-}
-
-bool AccessibilityUIElement::isPressActionSupported()
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- return checkElementState(m_element, ATK_STATE_REQUIRED);
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- if (!ATK_IS_OBJECT(m_element))
- return false;
-
- GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element)));
- gboolean isFocused = atk_state_set_contains_state(stateSet.get(), ATK_STATE_FOCUSED);
-
- return isFocused;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- return checkElementState(m_element, ATK_STATE_SELECTED);
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- // FIXME: implement
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- return false;
-}
-
-JSStringRef AccessibilityUIElement::ariaDropEffects() const
-{
- return 0;
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- if (!ATK_IS_OBJECT(m_element))
- return false;
-
- GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element)));
- gboolean isExpanded = atk_state_set_contains_state(stateSet.get(), ATK_STATE_EXPANDED);
-
- return isExpanded;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- if (!ATK_IS_OBJECT(m_element))
- return false;
-
- GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element)));
- gboolean isChecked = atk_state_set_contains_state(stateSet.get(), ATK_STATE_CHECKED);
-
- return isChecked;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumns()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRows()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfHeader()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- // FIXME: implement
- return 0;
-}
-
-static JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
-{
- GOwnPtr<gchar> rangeString(g_strdup("{0, 0}"));
-
- if (!element)
- return JSStringCreateWithUTF8CString(rangeString.get());
-
- ASSERT(ATK_IS_OBJECT(element));
-
- AtkObject* axTable = atk_object_get_parent(ATK_OBJECT(element));
- if (!axTable || !ATK_IS_TABLE(axTable))
- return JSStringCreateWithUTF8CString(rangeString.get());
-
- // Look for the cell in the table.
- gint indexInParent = atk_object_get_index_in_parent(ATK_OBJECT(element));
- if (indexInParent == -1)
- return JSStringCreateWithUTF8CString(rangeString.get());
-
- int row = -1;
- int column = -1;
- row = atk_table_get_row_at_index(ATK_TABLE(axTable), indexInParent);
- column = atk_table_get_column_at_index(ATK_TABLE(axTable), indexInParent);
-
- // Get the actual values, if row and columns are valid values.
- if (row != -1 && column != -1) {
- int base = 0;
- int length = 0;
- if (isRowRange) {
- base = row;
- length = atk_table_get_row_extent_at(ATK_TABLE(axTable), row, column);
- } else {
- base = column;
- length = atk_table_get_column_extent_at(ATK_TABLE(axTable), row, column);
- }
- rangeString.set(g_strdup_printf("{%d, %d}", base, length));
- }
-
- return JSStringCreateWithUTF8CString(rangeString.get());
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- // Range in table for rows.
- return indexRangeInTable(m_element, true);
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- // Range in table for columns.
- return indexRangeInTable(m_element, false);
-}
-
-int AccessibilityUIElement::lineForIndex(int)
-{
- // FIXME: implement
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::stringForRange(unsigned, unsigned)
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned, unsigned)
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location, unsigned length)
-{
- // FIXME: implement
- return false;
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
-{
- // FIXME: implement
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned column, unsigned row)
-{
- if (!m_element)
- return 0;
-
- ASSERT(ATK_IS_TABLE(m_element));
-
- // Adopt the AtkObject representing the cell because
- // at_table_ref_at() transfers full ownership.
- GRefPtr<AtkObject> foundCell = adoptGRef(atk_table_ref_at(ATK_TABLE(m_element), row, column));
- return foundCell ? AccessibilityUIElement(foundCell.get()) : 0;
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
- // FIXME: implement
-}
-
-JSStringRef AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- String atkAttributeName = coreAttributeToAtkAttribute(attribute);
- if (atkAttributeName.isEmpty())
- return JSStringCreateWithCharacters(0, 0);
-
- String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element), atkAttributeName.utf8().data());
- return JSStringCreateWithUTF8CString(attributeValue.utf8().data());
-}
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return 0.0f;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
-{
- return false;
-}
-
-static void alterCurrentValue(PlatformUIElement element, int factor)
-{
- if (!element)
- return;
-
- ASSERT(ATK_IS_VALUE(element));
-
- GValue currentValue = G_VALUE_INIT;
- atk_value_get_current_value(ATK_VALUE(element), &currentValue);
-
- GValue increment = G_VALUE_INIT;
- atk_value_get_minimum_increment(ATK_VALUE(element), &increment);
-
- GValue newValue = G_VALUE_INIT;
- g_value_init(&newValue, G_TYPE_FLOAT);
-
- g_value_set_float(&newValue, g_value_get_float(&currentValue) + factor * g_value_get_float(&increment));
- atk_value_set_current_value(ATK_VALUE(element), &newValue);
-
- g_value_unset(&newValue);
- g_value_unset(&increment);
- g_value_unset(&currentValue);
-}
-
-void AccessibilityUIElement::increment()
-{
- alterCurrentValue(m_element, 1);
-}
-
-void AccessibilityUIElement::decrement()
-{
- alterCurrentValue(m_element, -1);
-}
-
-void AccessibilityUIElement::press()
-{
- if (!m_element)
- return;
-
- ASSERT(ATK_IS_OBJECT(m_element));
-
- if (!ATK_IS_ACTION(m_element))
- return;
-
- // Only one action per object is supported so far.
- atk_action_do_action(ATK_ACTION(m_element), 0);
-}
-
-void AccessibilityUIElement::showMenu()
-{
- // FIXME: implement
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::rowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedByRow()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::accessibilityValue() const
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentEncoding()
-{
- AtkRole role = atk_object_get_role(ATK_OBJECT(m_element));
- if (role != ATK_ROLE_DOCUMENT_FRAME)
- return JSStringCreateWithCharacters(0, 0);
-
- return JSStringCreateWithUTF8CString(atk_document_get_attribute_value(ATK_DOCUMENT(m_element), "Encoding"));
-}
-
-JSStringRef AccessibilityUIElement::documentURI()
-{
- AtkRole role = atk_object_get_role(ATK_OBJECT(m_element));
- if (role != ATK_ROLE_DOCUMENT_FRAME)
- return JSStringCreateWithCharacters(0, 0);
-
- return JSStringCreateWithUTF8CString(atk_document_get_attribute_value(ATK_DOCUMENT(m_element), "URI"));
-}
-
-JSStringRef AccessibilityUIElement::url()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::addNotificationListener(JSObjectRef functionCallback)
-{
- // FIXME: implement
- return false;
-}
-
-void AccessibilityUIElement::removeNotificationListener()
-{
- // FIXME: implement
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- if (!ATK_IS_OBJECT(m_element))
- return false;
-
- GRefPtr<AtkStateSet> stateSet = adoptGRef(atk_object_ref_state_set(ATK_OBJECT(m_element)));
- gboolean isFocusable = atk_state_set_contains_state(stateSet.get(), ATK_STATE_FOCUSABLE);
-
- return isFocusable;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- return checkElementState(m_element, ATK_STATE_SELECTABLE);
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- return checkElementState(m_element, ATK_STATE_MULTISELECTABLE);
-}
-
-bool AccessibilityUIElement::isSelectedOptionActive() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- if (!m_element || !ATK_IS_OBJECT(m_element))
- return false;
-
- return equalIgnoringCase(getAttributeSetValueForId(ATK_OBJECT(m_element), "aria-haspopup"), "true");
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::addSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToMakeVisible()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height)
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToGlobalPoint(int x, int y)
-{
- // FIXME: implement
-}
-
-#endif
diff --git a/Tools/DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp
deleted file mode 100644
index 5b6b699f9..000000000
--- a/Tools/DumpRenderTree/blackberry/AccessibilityControllerBlackBerry.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "AccessibilityController.h"
-
-#include "AccessibilityUIElement.h"
-#include "NotImplemented.h"
-
-AccessibilityController::AccessibilityController()
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
-}
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- notImplemented();
- return 0;
-}
-
-void AccessibilityController::setLogFocusEvents(bool)
-{
- notImplemented();
-}
-
-void AccessibilityController::setLogScrollingStartEvents(bool)
-{
- notImplemented();
-}
-
-void AccessibilityController::setLogValueChangeEvents(bool)
-{
- notImplemented();
-}
-
-AccessibilityUIElement AccessibilityController::elementAtPoint(int, int)
-{
- notImplemented();
- return 0;
-}
-
-void AccessibilityController::setLogAccessibilityEvents(bool)
-{
- notImplemented();
-}
-
-bool AccessibilityController::addNotificationListener(JSObjectRef)
-{
- return false;
-}
-
-void AccessibilityController::removeNotificationListener()
-{
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef)
-{
- notImplemented();
- return 0;
-}
diff --git a/Tools/DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp
deleted file mode 100644
index dc6635466..000000000
--- a/Tools/DumpRenderTree/blackberry/AccessibilityUIElementBlackBerry.cpp
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * Copyright (C) 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "AccessibilityUIElement.h"
-
-#include "NotImplemented.h"
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
-{
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
-{
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>&)
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>&)
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>&)
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement>&, unsigned, unsigned)
-{
- notImplemented();
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int, int)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::parentElement()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfChildren()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::role()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::subrole()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::roleDescription()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringValue()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::language()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::x()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::y()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::width()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::height()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::orientation() const
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::minValue()
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::maxValue()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::valueDescription()
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- notImplemented();
- return 0;
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isPressActionSupported()
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- notImplemented();
- return 0;
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::ariaDropEffects() const
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumns()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRows()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfHeader()
-{
- notImplemented();
- return 0;
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- notImplemented();
- return 0;
-}
-
-int AccessibilityUIElement::lineForIndex(int)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned, unsigned)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringForRange(unsigned, unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement*, bool, JSValueRef, JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned, unsigned)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- notImplemented();
- return 0;
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned, unsigned)
-{
- notImplemented();
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-void AccessibilityUIElement::increment()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::decrement()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::showMenu()
-{
- notImplemented();
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::rowAtIndex(unsigned)
-{
- notImplemented();
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedByRow()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::accessibilityValue() const
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::documentEncoding()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::documentURI()
-{
- notImplemented();
- return 0;
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement*)
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringAttributeValue(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-double AccessibilityUIElement::intValue() const
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::url()
-{
- notImplemented();
- return 0;
-}
-
-
-bool AccessibilityUIElement::addNotificationListener(JSObjectRef)
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isSelectedOptionActive() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- notImplemented();
- return false;
-}
-
-void AccessibilityUIElement::scrollToMakeVisible()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int, int, int, int)
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::scrollToGlobalPoint(int, int)
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::addSelection()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- notImplemented();
-}
-
-int AccessibilityUIElement::columnCount()
-{
- notImplemented();
- return 0;
-}
-
-void AccessibilityUIElement::removeNotificationListener()
-{
- notImplemented();
-}
-
-void AccessibilityUIElement::press()
-{
- notImplemented();
-}
-
-int AccessibilityUIElement::rowCount()
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned, unsigned)
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned, unsigned)
-{
- notImplemented();
- return 0;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- notImplemented();
- return false;
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- notImplemented();
- return false;
-}
-
diff --git a/Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp b/Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp
deleted file mode 100644
index 4f803af04..000000000
--- a/Tools/DumpRenderTree/blackberry/DumpRenderTree.cpp
+++ /dev/null
@@ -1,987 +0,0 @@
-/*
- * Copyright (C) 2009, 2010, 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "DumpRenderTree.h"
-
-#include "APICast.h"
-#include "AccessibilityController.h"
-#include "BackForwardController.h"
-#include "BackForwardListBlackBerry.h"
-#include "Credential.h"
-#include "DatabaseTracker.h"
-#include "DocumentLoader.h"
-#include "DumpRenderTree/GCController.h"
-#include "DumpRenderTreeSupport.h"
-#include "EditingBehaviorTypes.h"
-#include "EditorClientBlackBerry.h"
-#include "EditorInsertAction.h"
-#include "Element.h"
-#include "EventSender.h"
-#include "Frame.h"
-#include "FrameLoaderTypes.h"
-#include "FrameTree.h"
-#include "FrameView.h"
-#include "HTTPParsers.h"
-#include "HistoryItem.h"
-#include "HitTestResult.h"
-#include "IntSize.h"
-#include "JSDOMBinding.h"
-#include "MouseEvent.h"
-#include "Node.h"
-#include "NotImplemented.h"
-#include "Page.h"
-#include "PageGroup.h"
-#include "PixelDumpSupport.h"
-#include "PixelDumpSupportBlackBerry.h"
-#include "Range.h"
-#include "RenderTreeAsText.h"
-#include "ScriptController.h"
-#include "SecurityOrigin.h"
-#include "Settings.h"
-#include "TestRunner.h"
-#include "TextAffinity.h"
-#include "Timer.h"
-#include "WebCoreTestSupport.h"
-#include "WebPage.h"
-#include "WebPageClient.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <BlackBerryPlatformLayoutTest.h>
-#include <BlackBerryPlatformPrimitives.h>
-#include <WebSettings.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <unistd.h>
-#include <wtf/NonCopyingSort.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/Vector.h>
-
-#define SDCARD_PATH "/developer"
-
-volatile bool testDone;
-
-RefPtr<TestRunner> gTestRunner;
-
-WebCore::Frame* mainFrame = 0;
-WebCore::Frame* topLoadingFrame = 0;
-bool waitForPolicy = false;
-bool runFromCommandLine = false;
-
-// FIXME: Assuming LayoutTests has been copied to /developer/LayoutTests/
-static const char* const kSDCLayoutTestsURI = "file:///developer/LayoutTests/";
-static const char* httpTestSyntax = "http/tests/";
-static const char* localTestSyntax = "local/";
-static const char* httpPrefixURL = "http://127.0.0.1:8000/";
-
-using namespace std;
-
-static String drtAffinityDescription(WebCore::EAffinity affinity)
-{
- if (affinity == WebCore::UPSTREAM)
- return String("NSSelectionAffinityUpstream");
- if (affinity == WebCore::DOWNSTREAM)
- return String("NSSelectionAffinityDownstream");
- return "";
-}
-
-static String drtDumpPath(WebCore::Node* node)
-{
- WebCore::Node* parent = node->parentNode();
- String str = String::format("%s", node->nodeName().utf8().data());
- if (parent) {
- str.append(" > ");
- str.append(drtDumpPath(parent));
- }
- return str;
-}
-
-static String drtRangeDescription(WebCore::Range* range)
-{
- if (!range)
- return "(null)";
- return String::format("range from %d of %s to %d of %s", range->startOffset(), drtDumpPath(range->startContainer()).utf8().data(), range->endOffset(), drtDumpPath(range->endContainer()).utf8().data());
-}
-
-static String drtFrameDescription(WebCore::Frame* frame)
-{
- String name = frame->tree()->uniqueName().string();
- if (frame == mainFrame) {
- if (!name.isNull() && name.length())
- return String::format("main frame \"%s\"", name.utf8().data());
- return "main frame";
- }
- if (!name.isNull())
- return String::format("frame \"%s\"", name.utf8().data());
- return "frame (anonymous)";
-}
-
-static WTF::String drtCredentialDescription(WebCore::Credential&)
-{
- // TODO: Implementation needed.
- return "<unknown>";
-}
-
-static bool shouldLogFrameLoadDelegates(const String& url)
-{
- return url.contains("loading/");
-}
-
-static bool shouldDumpAsText(const String& url)
-{
- return url.contains("dumpAsText/");
-}
-
-namespace BlackBerry {
-namespace WebKit {
-
-DumpRenderTree* DumpRenderTree::s_currentInstance = 0;
-
-static void createFile(const String& fileName)
-{
- FILE* fd = fopen(fileName.utf8().data(), "wb");
- if (fd)
- fclose(fd);
-}
-
-static bool isFullUrl(const String& url)
-{
- static Vector<String> *prefixes = 0;
- if (!prefixes) {
- prefixes = new Vector<String>();
- prefixes->append("http://");
- prefixes->append("file://");
- }
- for (unsigned i = 0; i < prefixes->size(); ++i) {
- if (url.startsWith(prefixes->at(i), false))
- return true;
- }
- return false;
-}
-
-DumpRenderTree::DumpRenderTree(BlackBerry::WebKit::WebPage* page)
- : m_gcController(0)
- , m_accessibilityController(0)
- , m_page(page)
- , m_enablePixelTests(getenv("pixelTests"))
- , m_waitToDumpWatchdogTimer(this, &DumpRenderTree::waitToDumpWatchdogTimerFired)
- , m_workTimer(this, &DumpRenderTree::processWork)
- , m_acceptsEditing(true)
- , m_policyDelegateEnabled(false)
- , m_policyDelegateIsPermissive(false)
-{
- const char* workerNumber = getenv("WORKER_NUMBER") ? getenv("WORKER_NUMBER") : "0";
- String sdcardPath = SDCARD_PATH;
- m_resultsDir = sdcardPath + "/results/";
- m_doneFile = sdcardPath + "/done" + workerNumber;
- m_currentTestFile = sdcardPath + "/current" + workerNumber + ".drt";
- m_page->resetVirtualViewportOnCommitted(false);
- m_page->setVirtualViewportSize(Platform::IntSize(800, 600));
- s_currentInstance = this;
-}
-
-DumpRenderTree::~DumpRenderTree()
-{
- delete m_gcController;
- delete m_accessibilityController;
-}
-
-void DumpRenderTree::runTest(const String& url, const String& imageHash)
-{
- mainFrame->loader()->stopForUserCancel();
- resetToConsistentStateBeforeTesting(url, imageHash);
- if (shouldLogFrameLoadDelegates(url))
- gTestRunner->setDumpFrameLoadCallbacks(true);
- if (!runFromCommandLine) {
- createFile(m_resultsDir + *m_currentTest + ".dump.crash");
-
- String stdoutFile = m_resultsDir + *m_currentTest + ".dump";
- String stderrFile = m_resultsDir + *m_currentTest + ".stderr";
-
- // FIXME: we should preserve the original stdout and stderr here but aren't doing
- // that yet due to issues with dup, etc.
- freopen(stdoutFile.utf8().data(), "wb", stdout);
- freopen(stderrFile.utf8().data(), "wb", stderr);
- }
- FILE* current = fopen(m_currentTestFile.utf8().data(), "w");
- if (current) {
- fwrite(m_currentTest->utf8().data(), 1, m_currentTest->utf8().length(), current);
- fclose(current);
- }
- BlackBerry::Platform::NetworkRequest request;
- STATIC_LOCAL_STRING(s_get, "GET");
- request.setRequestUrl(url, s_get);
- m_page->load(request);
-}
-
-void DumpRenderTree::doneDrt()
-{
- fclose(stdout);
- fclose(stderr);
- unlink(getPPSPath().c_str());
-
- // Notify the external world that we're done.
- createFile(m_doneFile);
- (m_page->client())->notifyRunLayoutTestsFinished();
-}
-
-void DumpRenderTree::runCurrentTest()
-{
- String imageHash = "";
- int posSplitter = m_currentTest->find('?');
- if (posSplitter > 1 && (unsigned)posSplitter < m_currentTest->length() - 1) {
- imageHash = m_currentTest->substring(posSplitter + 1);
- m_currentTest->truncate(posSplitter);
- }
- if (isHTTPTest(m_currentTest->utf8().data())) {
- m_currentHttpTest = m_currentTest->utf8().data();
- m_currentHttpTest.remove(0, strlen(httpTestSyntax));
- runTest(httpPrefixURL + m_currentHttpTest, imageHash);
- } else if (isFullUrl(*m_currentTest))
- runTest(*m_currentTest, imageHash);
- else
- runTest(kSDCLayoutTestsURI + *m_currentTest, imageHash);
-}
-
-void DumpRenderTree::runRemainingTests()
-{
- if (runFromCommandLine) {
- doneDrt();
- return;
- }
-
- // FIXME: fflush should not be necessary but is temporarily required due to a bug in stdio output.
- fflush(stdout);
- fflush(stderr);
-
- if (m_currentTest >= m_tests.end() - 1) {
- m_tests.clear();
- if (m_bufferedTests.size() > 0) {
- m_tests.append(m_bufferedTests);
- m_bufferedTests.clear();
- m_currentTest = m_tests.begin();
- runCurrentTest();
- }
- return;
- }
-
- m_currentTest++;
- runCurrentTest();
-}
-
-void DumpRenderTree::resetToConsistentStateBeforeTesting(const String& url, const String& imageHash)
-{
- gTestRunner = TestRunner::create(url.utf8().data(), imageHash.utf8().data());
-
- if (shouldDumpAsText(url)) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
- gTestRunner->setIconDatabaseEnabled(false);
-
- DumpRenderTreeSupport::resetGeolocationMock(m_page);
-
- topLoadingFrame = 0;
- m_loadFinished = false;
- m_policyDelegateEnabled = false;
- m_policyDelegateIsPermissive = false;
- waitForPolicy = false;
- testDone = false;
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- WebSettings* settings = m_page->settings();
- // Apply new settings to current page, see more in the destructor of WebSettingsTransaction.
- WebSettingsTransaction webSettingTransaction(settings);
-
- settings->setTextReflowMode(WebSettings::TextReflowDisabled);
- settings->setJavaScriptEnabled(true);
- settings->setLoadsImagesAutomatically(true);
- settings->setJavaScriptOpenWindowsAutomatically(true);
- settings->setZoomToFitOnLoad(false);
- settings->setDefaultFontSize(16);
- settings->setDefaultFixedFontSize(13);
- settings->setMinimumFontSize(1);
- STATIC_LOCAL_STRING(s_arial, "Arial");
- STATIC_LOCAL_STRING(s_courier, "Courier New");
- STATIC_LOCAL_STRING(s_times, "Times");
- settings->setSerifFontFamily(s_times);
- settings->setFixedFontFamily(s_courier);
- settings->setSansSerifFontFamily(s_arial);
- settings->setStandardFontFamily(s_times);
- settings->setXSSAuditorEnabled(false);
- settings->setMaximumPagesInCache(0);
- settings->setPluginsEnabled(true);
-
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->clearBackForwardList(false);
-
- setAcceptsEditing(true);
- DumpRenderTreeSupport::setLinksIncludedInFocusChain(true);
-#if ENABLE(STYLE_SCOPED)
- DumpRenderTreeSupport::setStyleScopedEnabled(true);
-#endif
-
- m_page->setVirtualViewportSize(Platform::IntSize(800, 600));
- m_page->resetVirtualViewportOnCommitted(false);
- m_page->setUserScalable(true);
- m_page->setJavaScriptCanAccessClipboard(true);
-
- if (WebCore::Page* page = DumpRenderTreeSupport::corePage(m_page)) {
- page->setTabKeyCyclesThroughElements(true);
-
- // FIXME: Remove this once BlackBerry uses resetInternalsObject: https://bugs.webkit.org/show_bug.cgi?id=86899.
- page->settings()->setEditingBehaviorType(WebCore::EditingUnixBehavior);
-
- page->settings()->setDOMPasteAllowed(true);
- page->settings()->setValidationMessageTimerMagnification(-1);
- page->settings()->setInteractiveFormValidationEnabled(true);
- page->settings()->setAllowFileAccessFromFileURLs(true);
- page->settings()->setAllowUniversalAccessFromFileURLs(true);
- page->settings()->setAuthorAndUserStylesEnabled(true);
- page->settings()->setUsePreHTML5ParserQuirks(false);
- // FIXME: Other ports also clear history/backForwardList allong with visited links.
- page->group().removeVisitedLinks();
- if ((mainFrame = page->mainFrame())) {
- mainFrame->tree()->clearName();
- mainFrame->loader()->setOpener(0);
- // [WebKit bug #86899] Reset JS state settings.
- JSGlobalContextRef jsContext = toGlobalRef(mainFrame->script()->globalObject(WebCore::mainThreadNormalWorld())->globalExec());
- WebCoreTestSupport::resetInternalsObject(jsContext);
- }
- }
-
- // For now we manually garbage collect between each test to make sure the device won't run out of memory due to lazy collection.
- DumpRenderTreeSupport::garbageCollectorCollect();
-}
-
-void DumpRenderTree::runTests()
-{
- m_gcController = new GCController();
- m_accessibilityController = new AccessibilityController();
- if (!ensurePPS()) {
- fprintf(stderr, "Failed to open PPS file '%s', error=%d\n", getPPSPath().c_str(), errno);
- (m_page->client())->notifyRunLayoutTestsFinished();
- return;
- }
-
- mainFrame = DumpRenderTreeSupport::corePage(m_page)->mainFrame();
-
- if (const char* testFile = getenv("drtTestFile")) {
- runFromCommandLine = true;
- addTest(testFile);
- } else {
- // Get Test file name from PPS: /pps/services/drt/input
- // Example: test_file::fast/js/arguments.html
- waitForTest();
- }
-}
-
-void DumpRenderTree::addTest(const char* testFile)
-{
- String test(testFile);
- if (test == "#DONE")
- doneDrt();
- else if (!test.isEmpty()) {
- if (m_tests.isEmpty()) {
- // No test is being run, initialize iterator and start test
- m_tests.append(test);
- m_currentTest = m_tests.begin();
- runCurrentTest();
- } else
- m_bufferedTests.append(test);
- }
-}
-
-String DumpRenderTree::dumpFramesAsText(WebCore::Frame* frame)
-{
- String s;
- WebCore::Element* documentElement = frame->document()->documentElement();
- if (!documentElement)
- return s.utf8().data();
-
- if (frame->tree()->parent())
- s = String::format("\n--------\nFrame: '%s'\n--------\n", frame->tree()->uniqueName().string().utf8().data());
-
- s = s + documentElement->innerText() + "\n";
-
- if (gTestRunner->dumpChildFramesAsText()) {
- WebCore::FrameTree* tree = frame->tree();
- for (WebCore::Frame* child = tree->firstChild(); child; child = child->tree()->nextSibling())
- s = s + dumpFramesAsText(child);
- }
- return s;
-}
-
-static void dumpToFile(const String& data)
-{
- fwrite(data.utf8().data(), 1, data.utf8().length(), stdout);
-}
-
-bool DumpRenderTree::isHTTPTest(const String& test)
-{
- if (test.length() < strlen(httpTestSyntax))
- return false;
- String testLower = test.lower();
- int lenHttpTestSyntax = strlen(httpTestSyntax);
- return testLower.substring(0, lenHttpTestSyntax) == httpTestSyntax
- && testLower.substring(lenHttpTestSyntax, strlen(localTestSyntax)) != localTestSyntax;
-}
-
-void DumpRenderTree::invalidateAnyPreviousWaitToDumpWatchdog()
-{
- m_waitToDumpWatchdogTimer.stop();
- waitForPolicy = false;
-}
-
-String DumpRenderTree::renderTreeDump() const
-{
- if (mainFrame) {
- if (mainFrame->view() && mainFrame->view()->layoutPending())
- mainFrame->view()->layout();
-
- return externalRepresentation(mainFrame);
- }
- return "";
-}
-
-static bool historyItemCompare(const RefPtr<WebCore::HistoryItem>& a, const RefPtr<WebCore::HistoryItem>& b)
-{
- return codePointCompare(a->urlString(), b->urlString()) < 0;
-}
-
-static String dumpHistoryItem(PassRefPtr<WebCore::HistoryItem> item, int indent, bool current)
-{
- String result;
-
- int start = 0;
- if (current) {
- result = result + "curr->";
- start = 6;
- }
- for (int i = start; i < indent; i++)
- result = result + ' ';
-
- String url = item->urlString();
- if (url.contains("file://")) {
- static String layoutTestsString("/LayoutTests/");
- static String fileTestString("(file test):");
-
- String res = url.substring(url.find(layoutTestsString) + layoutTestsString.length());
- if (res.isEmpty())
- return result;
-
- result = result + fileTestString;
- result = result + res;
- } else
- result = result + url;
-
- String target = item->target();
- if (!target.isEmpty())
- result = result + " (in frame \"" + target + "\")";
-
- if (item->isTargetItem())
- result = result + " **nav target**";
- result = result + '\n';
-
- WebCore::HistoryItemVector children = item->children();
- // Must sort to eliminate arbitrary result ordering which defeats reproducible testing.
- nonCopyingSort(children.begin(), children.end(), historyItemCompare);
- unsigned resultSize = children.size();
- for (unsigned i = 0; i < resultSize; ++i)
- result = result + dumpHistoryItem(children[i], indent + 4, false);
-
- return result;
-}
-
-static String dumpBackForwardListForWebView()
-{
- String result = "\n============== Back Forward List ==============\n";
- // FORMAT:
- // " (file test):fast/loader/resources/click-fragment-link.html **nav target**"
- // "curr-> (file test):fast/loader/resources/click-fragment-link.html#testfragment **nav target**"
- WebCore::BackForwardListBlackBerry* bfList = static_cast<WebCore::BackForwardListBlackBerry*>(mainFrame->page()->backForward()->client());
-
- int maxItems = bfList->capacity();
- WebCore::HistoryItemVector entries;
- bfList->backListWithLimit(maxItems, entries);
- unsigned resultSize = entries.size();
- for (unsigned i = 0; i < resultSize; ++i)
- result = result + dumpHistoryItem(entries[i], 8, false);
-
- result = result + dumpHistoryItem(bfList->currentItem(), 8, true);
-
- bfList->forwardListWithLimit(maxItems, entries);
- resultSize = entries.size();
- for (unsigned i = 0; i < resultSize; ++i)
- result = result + dumpHistoryItem(entries[i], 8, false);
-
- result = result + "===============================================\n";
-
- return result;
-}
-
-void DumpRenderTree::dump()
-{
- if (testDone)
- return;
-
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- String dumpFile = m_resultsDir + *m_currentTest + ".dump";
-
- String resultMimeType = "text/plain";
- String responseMimeType = mainFrame->loader()->documentLoader()->responseMIMEType();
-
- bool dumpAsText = gTestRunner->dumpAsText() || responseMimeType == "text/plain";
- String data = dumpAsText ? dumpFramesAsText(mainFrame) : renderTreeDump();
-
- if (gTestRunner->dumpBackForwardList())
- data = data + dumpBackForwardListForWebView();
-
- String result = "Content-Type: " + resultMimeType + "\n" + data;
-
- dumpToFile(result);
-
- if (!runFromCommandLine) {
- // There are two scenarios for dumping pixels:
- // 1. When the test case explicitly asks for it by calling dumpAsText(true) with that extra true passed as a parameter value, from JavaScript
- bool explicitPixelResults = gTestRunner->dumpAsText() && gTestRunner->generatePixelResults();
- // 2. When the test case implicitly allows it by not calling dumpAsText() at all (with no parameters).
- bool implicitPixelResults = !gTestRunner->dumpAsText();
-
- // But only if m_enablePixelTests is set, to say that the user wants to run pixel tests at all.
- bool generatePixelResults = m_enablePixelTests && (explicitPixelResults || implicitPixelResults);
- if (generatePixelResults) {
- // signal end of text block
- fputs("#EOF\n", stdout);
- dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner->expectedPixelHash());
- }
-
- String crashFile = dumpFile + ".crash";
- unlink(crashFile.utf8().data());
-
- String doneFile = m_resultsDir + *m_currentTest + ".done";
- createFile(doneFile);
- }
- testDone = true;
- runRemainingTests();
-}
-
-void DumpRenderTree::setWaitToDumpWatchdog(double interval)
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
- m_waitToDumpWatchdogTimer.startOneShot(interval);
-}
-
-void DumpRenderTree::waitToDumpWatchdogTimerFired(WebCore::Timer<DumpRenderTree>*)
-{
- gTestRunner->waitToDumpWatchdogTimerFired();
-}
-
-void DumpRenderTree::processWork(WebCore::Timer<DumpRenderTree>*)
-{
- if (topLoadingFrame)
- return;
-
- if (WorkQueue::shared()->processWork() && !gTestRunner->waitToDump())
- dump();
-}
-
-void DumpRenderTree::locationChangeForFrame(WebCore::Frame* frame)
-{
- if (frame != topLoadingFrame)
- return;
-
- topLoadingFrame = 0;
- WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue
- if (gTestRunner->waitToDump())
- return;
-
- if (WorkQueue::shared()->count())
- m_workTimer.startOneShot(0);
- else
- dump();
-}
-
-// FrameLoadClient delegates.
-bool DumpRenderTree::willSendRequestForFrame(WebCore::Frame* frame, WebCore::ResourceRequest& request, const WebCore::ResourceResponse& redirectResponse)
-{
- if (!testDone && (gTestRunner->willSendRequestReturnsNull() || (gTestRunner->willSendRequestReturnsNullOnRedirect() && !redirectResponse.isNull()))) {
- request = WebCore::ResourceRequest();
- return false;
- }
-
- return true;
-}
-
-void DumpRenderTree::didStartProvisionalLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didStartProvisionalLoadForFrame\n", drtFrameDescription(frame).utf8().data());
-
- if (!testDone && gTestRunner->dumpUserGestureInFrameLoadCallbacks())
- printf("Frame with user gesture \"%s\" - in didStartProvisionalLoadForFrame\n", WebCore::ScriptController::processingUserGesture() ? "true" : "false");
-
- if (!topLoadingFrame && !testDone)
- topLoadingFrame = frame;
-
- if (!testDone && gTestRunner->stopProvisionalFrameLoads()) {
- printf("%s - stopping load in didStartProvisionalLoadForFrame callback\n", drtFrameDescription(frame).utf8().data());
- frame->loader()->stopForUserCancel();
- }
-}
-
-void DumpRenderTree::didCommitLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didCommitLoadForFrame\n", drtFrameDescription(frame).utf8().data());
-
- gTestRunner->setWindowIsKey(true);
-}
-
-void DumpRenderTree::didFailProvisionalLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFailProvisionalLoadWithError\n", drtFrameDescription(frame).utf8().data());
-
- locationChangeForFrame(frame);
-}
-
-void DumpRenderTree::didFailLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFailLoadWithError\n", drtFrameDescription(frame).utf8().data());
-
- locationChangeForFrame(frame);
-}
-
-void DumpRenderTree::didFinishLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFinishLoadForFrame\n", drtFrameDescription(frame).utf8().data());
-
- if (frame == topLoadingFrame) {
- m_loadFinished = true;
- locationChangeForFrame(frame);
- }
-}
-
-void DumpRenderTree::didFinishDocumentLoadForFrame(WebCore::Frame* frame)
-{
- if (!testDone) {
- if (gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFinishDocumentLoadForFrame\n", drtFrameDescription(frame).utf8().data());
- else {
- unsigned pendingFrameUnloadEvents = frame->document()->domWindow()->pendingUnloadEventListeners();
- if (pendingFrameUnloadEvents)
- printf("%s - has %u onunload handler(s)\n", drtFrameDescription(frame).utf8().data(), pendingFrameUnloadEvents);
- }
- }
-}
-
-void DumpRenderTree::didClearWindowObjectInWorld(WebCore::DOMWrapperWorld*, JSGlobalContextRef context, JSObjectRef windowObject)
-{
- JSValueRef exception = 0;
-
- gTestRunner->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);
- WebCoreTestSupport::injectInternalsObject(context);
-}
-
-void DumpRenderTree::didReceiveTitleForFrame(const String& title, WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didReceiveTitle: %s\n", drtFrameDescription(frame).utf8().data(), title.utf8().data());
-
- if (gTestRunner->dumpTitleChanges())
- printf("TITLE CHANGED: %s\n", title.utf8().data());
-}
-
-// ChromeClient delegates.
-void DumpRenderTree::addMessageToConsole(const String& message, unsigned lineNumber, const String&)
-{
- printf("CONSOLE MESSAGE: ");
- if (lineNumber)
- printf("line %d: ", lineNumber);
- String newMessage = message;
- int pos = message.find("file://");
- if (pos >= 0) {
- newMessage = message.substring(0, pos);
- String remaining = message.substring(pos);
- String fileName;
- int indexFile = remaining.reverseFind('/') + 1;
- if (indexFile > 0 && unsigned(indexFile) < remaining.length())
- fileName = remaining.substring(indexFile);
- else
- fileName = "file:";
- newMessage.append(fileName);
- }
- printf("%s\n", newMessage.utf8().data());
-}
-
-void DumpRenderTree::runJavaScriptAlert(const String& message)
-{
- if (!testDone)
- printf("ALERT: %s\n", message.utf8().data());
-}
-
-bool DumpRenderTree::runJavaScriptConfirm(const String& message)
-{
- if (!testDone)
- printf("CONFIRM: %s\n", message.utf8().data());
- return true;
-}
-
-String DumpRenderTree::runJavaScriptPrompt(const String& message, const String& defaultValue)
-{
- if (!testDone)
- printf("PROMPT: %s, default text: %s\n", message.utf8().data(), defaultValue.utf8().data());
- return defaultValue;
-}
-
-bool DumpRenderTree::runBeforeUnloadConfirmPanel(const String& message)
-{
- if (!testDone)
- printf("CONFIRM NAVIGATION: %s\n", message.utf8().data());
- return true;
-}
-
-void DumpRenderTree::setStatusText(const String& status)
-{
- if (gTestRunner->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", status.utf8().data());
-}
-
-void DumpRenderTree::exceededDatabaseQuota(WebCore::SecurityOrigin* origin, const String& name)
-{
- if (!testDone && gTestRunner->dumpDatabaseCallbacks())
- printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n", origin->protocol().utf8().data(), origin->host().utf8().data(), origin->port(), name.utf8().data());
-
- WebCore::DatabaseTracker::tracker().setQuota(mainFrame->document()->securityOrigin(), 5 * 1024 * 1024);
-}
-
-bool DumpRenderTree::allowsOpeningWindow()
-{
- return gTestRunner->canOpenWindows();
-}
-
-void DumpRenderTree::windowCreated(BlackBerry::WebKit::WebPage* page)
-{
- page->settings()->setJavaScriptOpenWindowsAutomatically(true);
-}
-
-// EditorClient delegates.
-void DumpRenderTree::didBeginEditing()
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidBeginEditing:%s\n", "WebViewDidBeginEditingNotification");
-}
-
-void DumpRenderTree::didEndEditing()
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidEndEditing:%s\n", "WebViewDidEndEditingNotification");
-}
-
-void DumpRenderTree::didChange()
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChange:%s\n", "WebViewDidChangeNotification");
-}
-
-void DumpRenderTree::didChangeSelection()
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeSelection:%s\n", "WebViewDidChangeSelectionNotification");
-}
-
-bool DumpRenderTree::shouldBeginEditingInDOMRange(WebCore::Range* range)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", drtRangeDescription(range).utf8().data());
- return m_acceptsEditing;
-}
-
-bool DumpRenderTree::shouldEndEditingInDOMRange(WebCore::Range* range)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n", drtRangeDescription(range).utf8().data());
- return m_acceptsEditing;
-}
-
-bool DumpRenderTree::shouldDeleteDOMRange(WebCore::Range* range)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldDeleteDOMRange:%s\n", drtRangeDescription(range).utf8().data());
- return m_acceptsEditing;
-}
-
-bool DumpRenderTree::shouldChangeSelectedDOMRangeToDOMRangeAffinityStillSelecting(WebCore::Range* fromRange, WebCore::Range* toRange, int affinity, bool stillSelecting)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n", drtRangeDescription(fromRange).utf8().data(), drtRangeDescription(toRange).utf8().data(), drtAffinityDescription(static_cast<WebCore::EAffinity>(affinity)).utf8().data(), stillSelecting ? "TRUE" : "FALSE");
- return m_acceptsEditing;
-}
-
-static const char* insertActionString(WebCore::EditorInsertAction action)
-{
- switch (action) {
- case WebCore::EditorInsertActionTyped:
- return "WebViewInsertActionTyped";
- case WebCore::EditorInsertActionPasted:
- return "WebViewInsertActionPasted";
- case WebCore::EditorInsertActionDropped:
- return "WebViewInsertActionDropped";
- }
- ASSERT_NOT_REACHED();
- return "WebViewInsertActionTyped";
-}
-
-bool DumpRenderTree::shouldInsertNode(WebCore::Node* node, WebCore::Range* range, int action)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n", drtDumpPath(node).utf8().data(), drtRangeDescription(range).utf8().data(), insertActionString((WebCore::EditorInsertAction)action));
- return m_acceptsEditing;
-}
-
-bool DumpRenderTree::shouldInsertText(const String& text, WebCore::Range* range, int action)
-{
- if (!testDone && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n", text.utf8().data(), drtRangeDescription(range).utf8().data(), insertActionString((WebCore::EditorInsertAction)action));
- return m_acceptsEditing;
-}
-
-void DumpRenderTree::didDecidePolicyForNavigationAction(const WebCore::NavigationAction& action, const WebCore::ResourceRequest& request, WebCore::Frame* frame)
-{
- if (testDone || !m_policyDelegateEnabled)
- return;
-
- const char* typeDescription;
- switch (action.type()) {
- case WebCore::NavigationTypeLinkClicked:
- typeDescription = "link clicked";
- break;
- case WebCore::NavigationTypeFormSubmitted:
- typeDescription = "form submitted";
- break;
- case WebCore::NavigationTypeBackForward:
- typeDescription = "back/forward";
- break;
- case WebCore::NavigationTypeReload:
- typeDescription = "reload";
- break;
- case WebCore::NavigationTypeFormResubmitted:
- typeDescription = "form resubmitted";
- break;
- case WebCore::NavigationTypeOther:
- typeDescription = "other";
- break;
- default:
- typeDescription = "illegal value";
- }
-
- bool shouldWaitForResponse = !request.url().string().startsWith("mailto:");
- printf("Policy delegate: attempt to load %s with navigation type '%s'", request.url().string().utf8().data(), typeDescription);
- // Originating part, borrowed from Chromium.
- RefPtr<WebCore::Node> node;
- for (const WebCore::Event* event = action.event(); event; event = event->underlyingEvent()) {
- if (event->isMouseEvent()) {
- const WebCore::MouseEvent* mouseEvent = static_cast<const WebCore::MouseEvent*>(event);
- node = frame->eventHandler()->hitTestResultAtPoint(mouseEvent->absoluteLocation(), false).innerNonSharedNode();
- break;
- }
- }
- if (node.get())
- printf(" originating from %s\n", drtDumpPath(node.get()).utf8().data());
- else
- printf("\n");
-
- if (waitForPolicy && !shouldWaitForResponse)
- gTestRunner->notifyDone();
-}
-
-void DumpRenderTree::didDecidePolicyForResponse(const WebCore::ResourceResponse& response)
-{
- if (!testDone && m_policyDelegateEnabled) {
- if (WebCore::contentDispositionType(response.httpHeaderField("Content-Disposition")) == WebCore::ContentDispositionAttachment)
- printf("Policy delegate: resource is an attachment, suggested file name '%s'\n", response.suggestedFilename().utf8().data());
- if (waitForPolicy)
- gTestRunner->notifyDone();
- }
-}
-
-void DumpRenderTree::didDispatchWillPerformClientRedirect()
-{
- if (!testDone && gTestRunner->dumpUserGestureInFrameLoadCallbacks())
- printf("Frame with user gesture \"%s\" - in willPerformClientRedirect\n", WebCore::ScriptController::processingUserGesture() ? "true" : "false");
-}
-
-void DumpRenderTree::didHandleOnloadEventsForFrame(WebCore::Frame* frame)
-{
- if (!testDone && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didHandleOnloadEventsForFrame\n", drtFrameDescription(frame).utf8().data());
-}
-
-void DumpRenderTree::didReceiveResponseForFrame(WebCore::Frame*, const WebCore::ResourceResponse& response)
-{
- if (!testDone && gTestRunner->dumpResourceResponseMIMETypes())
- printf("%s has MIME type %s\n", response.url().lastPathComponent().utf8().data(), response.mimeType().utf8().data());
-}
-
-bool DumpRenderTree::didReceiveAuthenticationChallenge(WebCore::Credential& credential)
-{
- if (!gTestRunner->handlesAuthenticationChallenges()) {
- credential = WebCore::Credential();
- printf("%s - didReceiveAuthenticationChallenge - Simulating cancelled authentication\n", drtCredentialDescription(credential).utf8().data());
- return false;
- }
- const char* user = gTestRunner->authenticationUsername().c_str();
- const char* password = gTestRunner->authenticationPassword().c_str();
- credential = WebCore::Credential(user, password, WebCore::CredentialPersistenceForSession);
- printf("%s - didReceiveAuthenticationChallenge - Responding with %s:%s\n", drtCredentialDescription(credential).utf8().data(), user, password);
- return true;
-}
-
-void DumpRenderTree::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
- m_policyDelegateEnabled = setDelegate;
- m_policyDelegateIsPermissive = permissive;
-}
-}
-}
-
-// Static dump() function required by cross-platform DRT code.
-void dump()
-{
- BlackBerry::WebKit::DumpRenderTree* dumper = BlackBerry::WebKit::DumpRenderTree::currentInstance();
- if (!dumper)
- return;
-
- dumper->dump();
-}
diff --git a/Tools/DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h b/Tools/DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h
deleted file mode 100644
index 6aa4a8a3d..000000000
--- a/Tools/DumpRenderTree/blackberry/DumpRenderTreeBlackBerry.h
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * Copyright (C) 2009, 2010, 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#ifndef DumpRenderTreeBlackBerry_h
-#define DumpRenderTreeBlackBerry_h
-
-#include "BlackBerryGlobal.h"
-
-
-#include "DumpRenderTreeClient.h"
-#include "Timer.h"
-#include <BlackBerryPlatformLayoutTest.h>
-#include <FindOptions.h>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-namespace WebCore {
-class Credential;
-class DOMWrapperWorld;
-class Frame;
-class Range;
-}
-
-extern WebCore::Frame* mainFrame;
-extern WebCore::Frame* topLoadingFrame;
-extern bool waitForPolicy;
-
-class AccessibilityController;
-class GCController;
-
-namespace BlackBerry {
-namespace WebKit {
-class WebPage;
-
-class DumpRenderTree : public BlackBerry::WebKit::DumpRenderTreeClient, public BlackBerry::Platform::LayoutTestClient {
-public:
- DumpRenderTree(WebPage*);
- virtual ~DumpRenderTree();
-
- static DumpRenderTree* currentInstance() { return s_currentInstance; }
-
- void dump();
-
- void setWaitToDumpWatchdog(double interval);
-
- WebPage* page() { return m_page; }
-
- bool loadFinished() const { return m_loadFinished; }
-
- // FrameLoaderClient delegates
- bool willSendRequestForFrame(WebCore::Frame*, WebCore::ResourceRequest&, const WebCore::ResourceResponse&);
- void didStartProvisionalLoadForFrame(WebCore::Frame*);
- void didCommitLoadForFrame(WebCore::Frame*);
- void didFailProvisionalLoadForFrame(WebCore::Frame*);
- void didFailLoadForFrame(WebCore::Frame*);
- void didFinishLoadForFrame(WebCore::Frame*);
- void didFinishDocumentLoadForFrame(WebCore::Frame*);
- void didClearWindowObjectInWorld(WebCore::DOMWrapperWorld*, JSGlobalContextRef, JSObjectRef windowObject);
- void didReceiveTitleForFrame(const String& title, WebCore::Frame*);
- void didDecidePolicyForNavigationAction(const WebCore::NavigationAction&, const WebCore::ResourceRequest&, WebCore::Frame*);
- void didDecidePolicyForResponse(const WebCore::ResourceResponse&);
- void didDispatchWillPerformClientRedirect();
- void didHandleOnloadEventsForFrame(WebCore::Frame*);
- void didReceiveResponseForFrame(WebCore::Frame*, const WebCore::ResourceResponse&);
- bool policyDelegateEnabled() const { return m_policyDelegateEnabled; }
- bool policyDelegateIsPermissive() const { return m_policyDelegateIsPermissive; }
-
- // ChromeClient delegates
- void addMessageToConsole(const String& message, unsigned lineNumber, const String& sourceID);
- void runJavaScriptAlert(const String& message);
- bool runJavaScriptConfirm(const String& message);
- String runJavaScriptPrompt(const String& message, const String& defaultValue);
- bool runBeforeUnloadConfirmPanel(const String& message);
- void setStatusText(const String&);
- void exceededDatabaseQuota(WebCore::SecurityOrigin*, const String& name);
- bool allowsOpeningWindow();
- void windowCreated(WebPage*);
-
- // EditorClient delegates
- void setAcceptsEditing(bool acceptsEditing) { m_acceptsEditing = acceptsEditing; }
-
- void didBeginEditing();
- void didEndEditing();
- void didChange();
- void didChangeSelection();
- bool shouldBeginEditingInDOMRange(WebCore::Range*);
- bool shouldEndEditingInDOMRange(WebCore::Range*);
- bool shouldDeleteDOMRange(WebCore::Range*);
- bool shouldChangeSelectedDOMRangeToDOMRangeAffinityStillSelecting(WebCore::Range* fromRange, WebCore::Range* toRange, int affinity, bool stillSelecting);
- bool shouldInsertNode(WebCore::Node*, WebCore::Range*, int insertAction);
- bool shouldInsertText(const String&, WebCore::Range*, int insertAction);
-
- bool didReceiveAuthenticationChallenge(WebCore::Credential&);
-
- // BlackBerry::Platform::BlackBerryPlatformLayoutTestClient method
- virtual void addTest(const char* testFile);
- void setCustomPolicyDelegate(bool setDelegate, bool permissive);
-private:
- void runTest(const String& url, const String& imageHash);
- void runTests();
- void runCurrentTest();
-
- void processWork(WebCore::Timer<DumpRenderTree>*);
-
-private:
- static DumpRenderTree* s_currentInstance;
-
- String dumpFramesAsText(WebCore::Frame*);
- void locationChangeForFrame(WebCore::Frame*);
-
- void doneDrt();
- bool isHTTPTest(const String& test);
- String renderTreeDump() const;
- void resetToConsistentStateBeforeTesting(const String& url, const String& imageHash);
- void runRemainingTests();
- void invalidateAnyPreviousWaitToDumpWatchdog();
- void waitToDumpWatchdogTimerFired(WebCore::Timer<DumpRenderTree>*);
-
- Vector<String> m_tests;
- Vector<String>::iterator m_currentTest;
- Vector<String> m_bufferedTests;
-
- String m_resultsDir;
- String m_doneFile;
- String m_currentHttpTest;
- String m_currentTestFile;
-
- GCController* m_gcController;
- AccessibilityController* m_accessibilityController;
- WebPage* m_page;
- bool m_enablePixelTests;
- WebCore::Timer<DumpRenderTree> m_waitToDumpWatchdogTimer;
- WebCore::Timer<DumpRenderTree> m_workTimer;
-
- bool m_acceptsEditing;
- bool m_loadFinished;
- bool m_policyDelegateEnabled;
- bool m_policyDelegateIsPermissive;
-};
-}
-}
-
-#endif // DumpRenderTreeBlackBerry_h
diff --git a/Tools/DumpRenderTree/blackberry/EventSender.cpp b/Tools/DumpRenderTree/blackberry/EventSender.cpp
deleted file mode 100644
index 7fafb9eb0..000000000
--- a/Tools/DumpRenderTree/blackberry/EventSender.cpp
+++ /dev/null
@@ -1,451 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- * Copyright (C) 2009 Torch Mobile Inc. http://www.torchmobile.com/
- * Copyright (C) 2009, 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "EventSender.h"
-
-#include "DumpRenderTreeBlackBerry.h"
-#include "DumpRenderTreeSupport.h"
-#include "IntPoint.h"
-#include "NotImplemented.h"
-#include "WebKitThreadViewportAccessor.h"
-#include "WebPage.h"
-
-#include <BlackBerryPlatformKeyboardEvent.h>
-#include <BlackBerryPlatformMouseEvent.h>
-#include <BlackBerryPlatformTouchEvent.h>
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSValueRef.h>
-#include <wtf/Vector.h>
-
-using namespace WebCore;
-
-static IntPoint lastMousePosition;
-static Vector<BlackBerry::Platform::TouchPoint> touches;
-static bool touchActive = false;
-
-void sendTouchEvent(BlackBerry::Platform::TouchEvent::Type);
-
-// Callbacks
-
-static JSValueRef getDragModeCallback(JSContextRef context, JSObjectRef, JSStringRef, JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static bool setDragModeCallback(JSContextRef context, JSObjectRef, JSStringRef, JSValueRef, JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseWheelToCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-void setMouseEventDocumentPos(BlackBerry::Platform::MouseEvent &event, const BlackBerry::WebKit::WebPage* page)
-{
- // We have added document viewport position and document content position as members of the mouse event, when we create the event, we should initialize them as well.
- BlackBerry::Platform::ViewportAccessor* viewportAccessor = page->webkitThreadViewportAccessor();
- IntPoint documentContentPos = viewportAccessor->roundToDocumentFromPixelContents(BlackBerry::Platform::FloatPoint(viewportAccessor->pixelContentsFromViewport(lastMousePosition)));
- IntPoint documentViewportMousePos = viewportAccessor->roundToDocumentFromPixelContents(BlackBerry::Platform::FloatPoint(lastMousePosition));
- event.populateDocumentPosition(documentViewportMousePos, documentContentPos);
-}
-
-static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- BlackBerry::WebKit::WebPage* page = BlackBerry::WebKit::DumpRenderTree::currentInstance()->page();
- BlackBerry::Platform::MouseEvent event(BlackBerry::Platform::MouseEvent::ScreenLeftMouseButton, 0, lastMousePosition, IntPoint::zero(), 0, 0, 0);
-
- setMouseEventDocumentPos(event, page);
-
- page->mouseEvent(event);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- BlackBerry::WebKit::WebPage* page = BlackBerry::WebKit::DumpRenderTree::currentInstance()->page();
- BlackBerry::Platform::MouseEvent event(0, BlackBerry::Platform::MouseEvent::ScreenLeftMouseButton, lastMousePosition, IntPoint::zero(), 0, 0, 0);
-
- setMouseEventDocumentPos(event, page);
-
- page->mouseEvent(event);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int x = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- int y = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
-
- lastMousePosition = IntPoint(x, y);
- BlackBerry::WebKit::WebPage* page = BlackBerry::WebKit::DumpRenderTree::currentInstance()->page();
- BlackBerry::Platform::MouseEvent event(BlackBerry::Platform::MouseEvent::ScreenLeftMouseButton, BlackBerry::Platform::MouseEvent::ScreenLeftMouseButton, lastMousePosition, IntPoint::zero(), 0, 0, 0);
-
- setMouseEventDocumentPos(event, page);
-
- page->mouseEvent(event);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef beginDragWithFilesCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef leapForwardCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
- ASSERT(!*exception);
- unsigned charCode = 0;
- bool needsShiftKeyModifier = false;
- if (JSStringIsEqualToUTF8CString(character, "leftArrow"))
- charCode = KEYCODE_LEFT;
- else if (JSStringIsEqualToUTF8CString(character, "rightArrow"))
- charCode = KEYCODE_RIGHT;
- else if (JSStringIsEqualToUTF8CString(character, "upArrow"))
- charCode = KEYCODE_UP;
- else if (JSStringIsEqualToUTF8CString(character, "downArrow"))
- charCode = KEYCODE_DOWN;
- else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
- charCode = KEYCODE_PG_UP;
- else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
- charCode = KEYCODE_PG_DOWN;
- else if (JSStringIsEqualToUTF8CString(character, "home"))
- charCode = KEYCODE_HOME;
- else if (JSStringIsEqualToUTF8CString(character, "end"))
- charCode = KEYCODE_END;
- else if (JSStringIsEqualToUTF8CString(character, "delete"))
- charCode = KEYCODE_BACKSPACE;
- else {
- charCode = JSStringGetCharactersPtr(character)[0];
- if (0x8 == charCode)
- charCode = KEYCODE_BACKSPACE;
- else if (0x7F == charCode)
- charCode = KEYCODE_DELETE;
- else if (WTF::isASCIIUpper(charCode))
- needsShiftKeyModifier = true;
- }
- JSStringRelease(character);
-
- static const JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
- bool needsAltKeyModifier = false;
- bool needsCtrlKeyModifier = false;
- if (argumentCount > 1) {
- if (JSObjectRef modifiersArray = JSValueToObject(context, arguments[1], 0)) {
- int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty, 0), 0);
- for (int i = 0; i < modifiersCount; ++i) {
- JSStringRef string = JSValueToStringCopy(context, JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0), 0);
- if (JSStringIsEqualToUTF8CString(string, "shiftKey"))
- needsShiftKeyModifier = true;
- else if (JSStringIsEqualToUTF8CString(string, "altKey"))
- needsAltKeyModifier = true;
- else if (JSStringIsEqualToUTF8CString(string, "ctrlKey"))
- needsCtrlKeyModifier = true;
- JSStringRelease(string);
- }
- }
- }
-
- BlackBerry::WebKit::WebPage* page = BlackBerry::WebKit::DumpRenderTree::currentInstance()->page();
-
- unsigned modifiers = 0;
- if (needsShiftKeyModifier)
- modifiers |= KEYMOD_SHIFT;
- if (needsAltKeyModifier)
- modifiers |= KEYMOD_ALT;
- if (needsCtrlKeyModifier)
- modifiers |= KEYMOD_CTRL;
-
- page->keyEvent(BlackBerry::Platform::KeyboardEvent(charCode, BlackBerry::Platform::KeyboardEvent::KeyDown, modifiers));
- page->keyEvent(BlackBerry::Platform::KeyboardEvent(charCode, BlackBerry::Platform::KeyboardEvent::KeyUp, modifiers));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomInCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomOutCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageInCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageOutCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef addTouchPointCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int x = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- int y = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
-
- int id = touches.isEmpty() ? 0 : touches.last().id() + 1;
-
- // pixelViewportPosition is unused in the WebKit layer, so use this for screen position
- IntPoint pos(x, y);
-
- BlackBerry::Platform::TouchPoint touch(id, BlackBerry::Platform::TouchPoint::TouchPressed, pos, pos, 0);
-
- // Unfortunately we don't know the scroll position at this point, so use pos for the content position too.
- // This assumes scroll position is 0,0
- touch.populateDocumentPosition(pos, pos);
-
- touches.append(touch);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef updateTouchPointCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- int x = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
- int y = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
- ASSERT(!exception || !*exception);
-
- if (index < 0 || index >= (int)touches.size())
- return JSValueMakeUndefined(context);
-
- BlackBerry::Platform::TouchPoint& touch = touches[index];
-
- // pixelViewportPosition is unused in the WebKit layer
- IntPoint pos(x, y);
-
- // Unfortunately we don't know the scroll position at this point, so use pos for the content position too.
- // This assumes scroll position is 0,0
- touch.populateDocumentPosition(pos, pos);
- touch.setScreenPosition(pos);
- touch.updateState(BlackBerry::Platform::TouchPoint::TouchMoved);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setTouchModifierCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchStartCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- if (!touchActive) {
- sendTouchEvent(BlackBerry::Platform::TouchEvent::TouchStart);
- touchActive = true;
- } else
- sendTouchEvent(BlackBerry::Platform::TouchEvent::TouchMove);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchCancelCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchMoveCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- sendTouchEvent(BlackBerry::Platform::TouchEvent::TouchMove);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchEndCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- for (unsigned i = 0; i < touches.size(); ++i)
- if (touches[i].state() != BlackBerry::Platform::TouchPoint::TouchReleased) {
- sendTouchEvent(BlackBerry::Platform::TouchEvent::TouchMove);
- return JSValueMakeUndefined(context);
- }
- sendTouchEvent(BlackBerry::Platform::TouchEvent::TouchEnd);
- touchActive = false;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearTouchPointsCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- touches.clear();
- touchActive = false;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef cancelTouchPointCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t, const JSValueRef[], JSValueRef*)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef releaseTouchPointCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- if (index < 0 || index >= (int)touches.size())
- return JSValueMakeUndefined(context);
-
- touches[index].updateState(BlackBerry::Platform::TouchPoint::TouchReleased);
- return JSValueMakeUndefined(context);
-}
-
-void sendTouchEvent(BlackBerry::Platform::TouchEvent::Type type)
-{
- BlackBerry::Platform::TouchEvent event;
- event.m_type = type;
- event.m_points.assign(touches.begin(), touches.end());
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->touchEvent(event);
-
- Vector<BlackBerry::Platform::TouchPoint> t;
-
- for (Vector<BlackBerry::Platform::TouchPoint>::iterator it = touches.begin(); it != touches.end(); ++it) {
- if (it->state() != BlackBerry::Platform::TouchPoint::TouchReleased) {
- it->updateState(BlackBerry::Platform::TouchPoint::TouchStationary);
- t.append(*it);
- }
- }
- touches = t;
-}
-
-static JSValueRef scalePageByCallback(JSContextRef context, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- float scaleFactor = JSValueToNumber(context, arguments[0], exception);
- float x = JSValueToNumber(context, arguments[1], exception);
- float y = JSValueToNumber(context, arguments[2], exception);
-
- BlackBerry::WebKit::WebPage* page = BlackBerry::WebKit::DumpRenderTree::currentInstance()->page();
- if (!page)
- return JSValueMakeUndefined(context);
-
- DumpRenderTreeSupport::scalePageBy(page, scaleFactor, x, y);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "mouseWheelTo", mouseWheelToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "contextClick", contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseDown", mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseUp", mouseUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseMoveTo", mouseMoveToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "beginDragWithFiles", beginDragWithFilesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "leapForward", leapForwardCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "keyDown", keyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomIn", textZoomInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomOut", textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "addTouchPoint", addTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "cancelTouchPoint", cancelTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "clearTouchPoints", clearTouchPointsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "releaseTouchPoint", releaseTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scalePageBy", scalePageByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setTouchModifier", setTouchModifierCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchCancel", touchCancelCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchEnd", touchEndCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchMove", touchMoveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchStart", touchStartCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "updateTouchPoint", updateTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageIn", zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageOut", zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticValues[] = {
- { "dragMode", getDragModeCallback, setDragModeCallback, kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef)
-{
- static JSClassRef eventSenderClass = 0;
-
- if (!eventSenderClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticFunctions;
- classDefinition.staticValues = staticValues;
-
- eventSenderClass = JSClassCreate(&classDefinition);
- }
-
- return eventSenderClass;
-}
-
-void replaySavedEvents()
-{
- notImplemented();
-}
-
-JSObjectRef makeEventSender(JSContextRef context)
-{
- return JSObjectMake(context, getClass(context), 0);
-}
-
diff --git a/Tools/DumpRenderTree/blackberry/EventSender.h b/Tools/DumpRenderTree/blackberry/EventSender.h
deleted file mode 100644
index 66f719629..000000000
--- a/Tools/DumpRenderTree/blackberry/EventSender.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#ifndef EventSender_h
-#define EventSender_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeEventSender(JSContextRef);
-void replaySavedEvents();
-
-#endif
diff --git a/Tools/DumpRenderTree/blackberry/GCControllerBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/GCControllerBlackBerry.cpp
deleted file mode 100644
index 8e8bd965b..000000000
--- a/Tools/DumpRenderTree/blackberry/GCControllerBlackBerry.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2009, 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "DumpRenderTree/GCController.h"
-
-#include "DumpRenderTreeSupport.h"
-
-void GCController::collect() const
-{
- DumpRenderTreeSupport::garbageCollectorCollect();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- DumpRenderTreeSupport::garbageCollectorCollectOnAlternateThread(waitUntilDone);
-}
-
-size_t GCController::getJSObjectCount() const
-{
- return DumpRenderTreeSupport::javaScriptObjectsCount();
-}
-
diff --git a/Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp b/Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp
deleted file mode 100644
index bc4e7ab85..000000000
--- a/Tools/DumpRenderTree/blackberry/PNGImageEncoder.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- *
- * Portions of this file are Copyright 2005 Google Inc.
- */
-
-#include "config.h"
-#include "PNGImageEncoder.h"
-
-
-extern "C" {
-#include "png.h"
-}
-
-#include <wtf/OwnArrayPtr.h>
-
-// This code is almost a mirror of the code in WebCore/platform/image-encoders/skia/PNGImageEncoder.cpp
-// since we can't include this private WebCore file in a WebKit-client application.
-
-// Keep the premultipied for as it is the most faithful information
-static void BGRAtoRGBA(const unsigned char* input, int numberOfPixels, unsigned char* output)
-{
- for (int x = 0; x < numberOfPixels; x++) {
- output[0] = input[2];
- output[1] = input[1];
- output[2] = input[0];
- output[3] = input[3];
- input += 4;
- output += 4;
- }
-}
-
-// Passed around as the io_ptr in the png structs so our callbacks know where
-// to write data.
-struct PNGEncoderState {
- PNGEncoderState(Vector<unsigned char>* o) : m_out(o) { }
- Vector<unsigned char>* m_out;
-};
-
-// Called by libpng to flush its internal buffer to ours.
-void encoderWriteCallback(png_structp png, png_bytep data, png_size_t size)
-{
- PNGEncoderState* state = static_cast<PNGEncoderState*>(png_get_io_ptr(png));
- ASSERT(state->m_out);
-
- size_t oldSize = state->m_out->size();
- state->m_out->resize(oldSize + size);
- memcpy(&(*state->m_out)[oldSize], data, size);
-}
-
-// Automatically destroys the given write structs on destruction to make
-// cleanup and error handling code cleaner.
-class PNGWriteStructDestroyer {
-public:
- PNGWriteStructDestroyer(png_struct** ps, png_info** pi)
- : m_pngStruct(ps)
- , m_pngInfo(pi)
- {
- }
-
- ~PNGWriteStructDestroyer()
- {
- png_destroy_write_struct(m_pngStruct, m_pngInfo);
- }
-
-private:
- png_struct** m_pngStruct;
- png_info** m_pngInfo;
-};
-
-typedef void (*PixelConversionFunc)(const unsigned char*, int, unsigned char*);
-static bool encodeImpl(const unsigned char* input, int imageWidth, int imageHeight, int bytesPerRow, Vector<unsigned char>* output, PixelConversionFunc conversionFunc)
-{
- int inputColorComponents = 4;
- int outputColorComponents = 4;
- int pngOutputColorType = PNG_COLOR_TYPE_RGB_ALPHA;
-
- if (imageWidth < 0)
- imageWidth = 0;
-
- if (imageHeight < 0)
- imageHeight = 0;
-
- // Row stride should be at least as long as the length of the data.
- if (inputColorComponents * imageWidth > bytesPerRow) {
- ASSERT(false);
- return false;
- }
-
- png_struct* pngPtr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
- if (!pngPtr)
- return false;
-
- png_info* infoPtr = png_create_info_struct(pngPtr);
- if (!infoPtr) {
- png_destroy_write_struct(&pngPtr, 0);
- return false;
- }
- PNGWriteStructDestroyer destroyer(&pngPtr, &infoPtr);
-
- if (setjmp(png_jmpbuf(pngPtr))) {
- // The destroyer will ensure that the structures are cleaned up in this
- // case, even though we may get here as a jump from random parts of the
- // PNG library called below.
- return false;
- }
-
- // Set our callback for libpng to give us the data.
- PNGEncoderState state(output);
- png_set_write_fn(pngPtr, &state, encoderWriteCallback, 0);
-
- png_set_IHDR(pngPtr, infoPtr, imageWidth, imageHeight, 8, pngOutputColorType,
- PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT,
- PNG_FILTER_TYPE_DEFAULT);
- png_write_info(pngPtr, infoPtr);
-
- OwnArrayPtr<unsigned char> rowPixels = adoptArrayPtr(new unsigned char[imageWidth * outputColorComponents]);
- for (int y = 0; y < imageHeight; y ++) {
- conversionFunc(&input[y * bytesPerRow], imageWidth, rowPixels.get());
- png_write_row(pngPtr, rowPixels.get());
- }
-
- png_write_end(pngPtr, infoPtr);
- return true;
-}
-
-bool encodeBitmapToPNG(unsigned char* data, int width, int height, Vector<unsigned char>* output)
-{
- bool result = encodeImpl(data, width, height, width * 4, output, BGRAtoRGBA);
- return result;
-}
diff --git a/Tools/DumpRenderTree/blackberry/PNGImageEncoder.h b/Tools/DumpRenderTree/blackberry/PNGImageEncoder.h
deleted file mode 100644
index 7a320a757..000000000
--- a/Tools/DumpRenderTree/blackberry/PNGImageEncoder.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#ifndef PNGImageEncoder_h
-#define PNGImageEncoder_h
-
-#include <wtf/Vector.h>
-
-bool encodeBitmapToPNG(unsigned char* data, int width, int height, WTF::Vector<unsigned char>* output);
-
-#endif // PNGImageEncoder_h
diff --git a/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp
deleted file mode 100644
index 82b448d13..000000000
--- a/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.cpp
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "PixelDumpSupportBlackBerry.h"
-
-#include "BackingStore.h"
-#include "BlackBerryPlatformExecutableMessage.h"
-#include "BlackBerryPlatformGraphics.h"
-#include "BlackBerryPlatformGraphicsContext.h"
-#include "BlackBerryPlatformGraphicsImpl.h"
-#include "BlackBerryPlatformMessageClient.h"
-#include "DumpRenderTreeBlackBerry.h"
-#include "PNGImageEncoder.h"
-#include "PixelDumpSupport.h"
-#include "WebPage.h"
-#include "WebPageClient.h"
-
-#include <BlackBerryPlatformWindow.h>
-#include <wtf/MD5.h>
-#include <wtf/Vector.h>
-
-using namespace BlackBerry::WebKit;
-using namespace BlackBerry;
-using namespace WTF;
-
-void readPixelsUserInterfaceThread(BlackBerry::Platform::Graphics::PlatformGraphicsContext* context, const BlackBerry::Platform::IntRect& srcRect, unsigned char* pixels)
-{
- context->readPixels(srcRect, pixels, false, false);
-}
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool /*onscreen*/, bool /*incrementalRepaint*/, bool /*sweepHorizontally*/, bool /*drawSelectionRect*/)
-{
- Platform::Graphics::Window* window = DumpRenderTree::currentInstance()->page()->client()->window();
- ASSERT(window);
-
- // The BackingStore has a queue of pending jobs, which are run on idle
- // and which may not have been run yet.
- BackingStore* backingStore = DumpRenderTree::currentInstance()->page()->backingStore();
- while (backingStore->hasBlitJobs())
- backingStore->blitOnIdle();
-
- const Platform::IntRect& windowRect = window->viewportRect();
- const Platform::IntSize& windowSize = window->viewportSize();
- unsigned char* data = new unsigned char[windowSize.width() * windowSize.height() * 4];
-
- BlackBerry::Platform::Graphics::Buffer* buffer = BlackBerry::Platform::Graphics::createBuffer(windowSize, BlackBerry::Platform::Graphics::AlwaysBacked);
- BlackBerry::Platform::Graphics::Drawable* drawable = BlackBerry::Platform::Graphics::lockBufferDrawable(buffer);
- if (drawable) {
- backingStore->drawContents(drawable, windowRect, windowSize);
- BlackBerry::Platform::userInterfaceThreadMessageClient()->dispatchSyncMessage(
- BlackBerry::Platform::createFunctionCallMessage(&readPixelsUserInterfaceThread, drawable, windowRect, data));
- BlackBerry::Platform::Graphics::releaseBufferDrawable(buffer);
- }
- BlackBerry::Platform::Graphics::destroyBuffer(buffer);
- return BitmapContext::createByAdoptingData(data, windowSize.width(), windowSize.height());
-}
-
-void computeMD5HashStringForBitmapContext(BitmapContext* context, char hashString[33])
-{
- int pixelsWide = context->m_width;
- int pixelsHigh = context->m_height;
- int bytesPerRow = context->m_width * 4;
- unsigned char* pixelData = context->m_data;
-
- MD5 md5;
- for (int i = 0; i < pixelsHigh; ++i) {
- md5.addBytes(pixelData, 4 * pixelsWide);
- pixelData += bytesPerRow;
- }
-
- Vector<uint8_t, 16> hash;
- md5.checksum(hash);
-
- hashString[0] = '\0';
- for (int i = 0; i < 16; ++i)
- snprintf(hashString, 33, "%s%02x", hashString, hash[i]);
-}
-
-static void printPNG(BitmapContext* context, const char* checksum)
-{
- Vector<unsigned char> pngData;
- encodeBitmapToPNG(context->m_data, context->m_width, context->m_height, &pngData);
- printPNG(pngData.data(), pngData.size(), checksum);
-}
-
-void dumpBitmap(BitmapContext* context, const char* checksum)
-{
- printPNG(context, checksum);
-}
diff --git a/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h b/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h
deleted file mode 100644
index 87c6bf08a..000000000
--- a/Tools/DumpRenderTree/blackberry/PixelDumpSupportBlackBerry.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#ifndef PixelDumpSupportBlackBerry_h
-#define PixelDumpSupportBlackBerry_h
-
-#include <stdio.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-
-class BitmapContext : public RefCounted<BitmapContext> {
-public:
-
- static PassRefPtr<BitmapContext> createByAdoptingData(unsigned char* data, int width, int height)
- {
- return adoptRef(new BitmapContext(data, width, height));
- }
-
- ~BitmapContext()
- {
- delete m_data;
- }
-
- unsigned char* m_data;
- int m_width, m_height;
-
-private:
-
- BitmapContext(unsigned char* data, int width, int height)
- : m_data(data)
- , m_width(width)
- , m_height(height)
- {
- }
-};
-
-#endif // PixelDumpSupportBlackBerry_h
diff --git a/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp
deleted file mode 100644
index 04a215e75..000000000
--- a/Tools/DumpRenderTree/blackberry/TestRunnerBlackBerry.cpp
+++ /dev/null
@@ -1,713 +0,0 @@
-/*
- * Copyright (C) 2009, 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "TestRunner.h"
-
-#include "DatabaseTracker.h"
-#include "Document.h"
-#include "DocumentLoader.h"
-#include "DocumentMarker.h"
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeBlackBerry.h"
-#include "DumpRenderTreeSupport.h"
-#include "EditingBehaviorTypes.h"
-#include "EditorClientBlackBerry.h"
-#include "Element.h"
-#include "Frame.h"
-#include "HTMLInputElement.h"
-#include "JSElement.h"
-#include "KURL.h"
-#include "NotImplemented.h"
-#include "Page.h"
-#include "RenderTreeAsText.h"
-#include "SchemeRegistry.h"
-#include "SecurityOrigin.h"
-#include "SecurityPolicy.h"
-#include "Settings.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-
-#include <JavaScriptCore/APICast.h>
-#include <SharedPointer.h>
-#include <WebPage.h>
-#include <WebSettings.h>
-
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/text/CString.h>
-
-using WebCore::toElement;
-using WebCore::toJS;
-
-TestRunner::~TestRunner()
-{
-}
-
-void TestRunner::addDisallowedURL(JSStringRef url)
-{
- UNUSED_PARAM(url);
- notImplemented();
-}
-
-void TestRunner::clearAllDatabases()
-{
-#if ENABLE(DATABASE)
- WebCore::DatabaseTracker::tracker().deleteAllDatabases();
-#endif
-}
-
-void TestRunner::clearBackForwardList()
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->clearBackForwardList(true);
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
- notImplemented();
-}
-
-JSStringRef TestRunner::copyDecodedHostName(JSStringRef name)
-{
- UNUSED_PARAM(name);
- notImplemented();
- return 0;
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef name)
-{
- UNUSED_PARAM(name);
- notImplemented();
- return 0;
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
- notImplemented();
-}
-
-void TestRunner::display()
-{
- notImplemented();
-}
-
-static String jsStringRefToWebCoreString(JSStringRef str)
-{
- size_t strArrSize = JSStringGetMaximumUTF8CStringSize(str);
- OwnArrayPtr<char> strArr = adoptArrayPtr(new char[strArrSize]);
- JSStringGetUTF8CString(str, strArr.get(), strArrSize);
- return String::fromUTF8(strArr.get());
-}
-
-void TestRunner::execCommand(JSStringRef name, JSStringRef value)
-{
- if (!mainFrame)
- return;
-
- String nameStr = jsStringRefToWebCoreString(name);
- String valueStr = jsStringRefToWebCoreString(value);
-
- mainFrame->editor()->command(nameStr).execute(valueStr);
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef name)
-{
- if (!mainFrame)
- return false;
-
- String nameStr = jsStringRefToWebCoreString(name);
-
- return mainFrame->editor()->command(nameStr).isEnabled();
-}
-
-void TestRunner::keepWebHistory()
-{
- notImplemented();
-}
-
-void TestRunner::notifyDone()
-{
- if (m_waitToDump && (!topLoadingFrame || BlackBerry::WebKit::DumpRenderTree::currentInstance()->loadFinished()) && !WorkQueue::shared()->count())
- dump();
-
- m_waitToDump = false;
- waitForPolicy = false;
-}
-
-JSStringRef TestRunner::pathToLocalResource(JSContextRef, JSStringRef url)
-{
- return JSStringRetain(url);
-}
-
-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
-{
- size_t urlArrSize = JSStringGetMaximumUTF8CStringSize(url);
- OwnArrayPtr<char> urlArr = adoptArrayPtr(new char[urlArrSize]);
- JSStringGetUTF8CString(url, urlArr.get(), urlArrSize);
-
- WebCore::KURL base = mainFrame->loader()->documentLoader()->response().url();
- WebCore::KURL absolute(base, urlArr.get());
-
- JSRetainPtr<JSStringRef> absoluteURL(Adopt, JSStringCreateWithUTF8CString(absolute.string().utf8().data()));
- WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target));
-}
-
-void TestRunner::setAcceptsEditing(bool acceptsEditing)
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->setAcceptsEditing(acceptsEditing);
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long quota)
-{
- UNUSED_PARAM(quota);
- notImplemented();
-}
-
-void TestRunner::setAuthorAndUserStylesEnabled(bool enable)
-{
- mainFrame->page()->settings()->setAuthorAndUserStylesEnabled(enable);
-}
-
-void TestRunner::setCacheModel(int)
-{
- notImplemented();
-}
-
-void TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->setCustomPolicyDelegate(setDelegate, permissive);
-}
-
-void TestRunner::clearApplicationCacheForOrigin(OpaqueJSString*)
-{
- // FIXME: Implement to support deleting all application caches for an origin.
- notImplemented();
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef)
-{
- // FIXME: Implement to support getting disk usage in bytes for an origin.
- notImplemented();
- return 0;
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
- // FIXME: Implement to get origins that contain application caches.
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
- if (!mainFrame)
- return;
-
- WebCore::DatabaseTracker::tracker().setQuota(mainFrame->document()->securityOrigin(), quota);
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
- WebCore::SchemeRegistry::setDomainRelaxationForbiddenForURLScheme(forbidden, jsStringRefToWebCoreString(scheme));
-}
-
-void TestRunner::setIconDatabaseEnabled(bool iconDatabaseEnabled)
-{
- UNUSED_PARAM(iconDatabaseEnabled);
- notImplemented();
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool flag)
-{
- UNUSED_PARAM(flag);
- notImplemented();
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef path)
-{
- UNUSED_PARAM(path);
- notImplemented();
-}
-
-void TestRunner::setPopupBlockingEnabled(bool flag)
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setJavaScriptOpenWindowsAutomatically(!flag);
-}
-
-void TestRunner::setPrivateBrowsingEnabled(bool flag)
-{
- UNUSED_PARAM(flag);
- notImplemented();
-}
-
-void TestRunner::setXSSAuditorEnabled(bool flag)
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setXSSAuditorEnabled(flag);
-}
-
-void TestRunner::setTabKeyCyclesThroughElements(bool cycles)
-{
- if (!mainFrame)
- return;
-
- mainFrame->page()->setTabKeyCyclesThroughElements(cycles);
-}
-
-void TestRunner::setUseDashboardCompatibilityMode(bool flag)
-{
- UNUSED_PARAM(flag);
- notImplemented();
-}
-
-void TestRunner::setUserStyleSheetEnabled(bool flag)
-{
- UNUSED_PARAM(flag);
- notImplemented();
-}
-
-void TestRunner::setUserStyleSheetLocation(JSStringRef path)
-{
- String pathStr = jsStringRefToWebCoreString(path);
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setUserStyleSheetLocation(pathStr);
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
- setCustomPolicyDelegate(true, true);
- setWaitToDump(true);
- waitForPolicy = true;
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
- SharedArray<BlackBerry::WebKit::WebPage::BackForwardEntry> backForwardList;
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->getBackForwardList(backForwardList);
- return backForwardList.length();
-}
-
-int TestRunner::windowCount()
-{
- notImplemented();
- return 0;
-}
-
-void TestRunner::setWaitToDump(bool waitToDump)
-{
- // Change from 30s to 35s because some test cases in multipart need 30 seconds,
- // refer to http/tests/multipart/resources/multipart-wait-before-boundary.php please.
- static const double kWaitToDumpWatchdogInterval = 35.0;
- m_waitToDump = waitToDump;
- if (m_waitToDump)
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->setWaitToDumpWatchdog(kWaitToDumpWatchdogInterval);
-}
-
-void TestRunner::setWindowIsKey(bool windowIsKey)
-{
- m_windowIsKey = windowIsKey;
- notImplemented();
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
- notImplemented();
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
- if (!mainFrame)
- return;
-
- String keyStr = jsStringRefToWebCoreString(key);
- String valueStr = jsStringRefToWebCoreString(value);
-
- if (keyStr == "WebKitUsesPageCachePreferenceKey")
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setMaximumPagesInCache(1);
- else if (keyStr == "WebKitUsePreHTML5ParserQuirks")
- mainFrame->page()->settings()->setUsePreHTML5ParserQuirks(true);
- else if (keyStr == "WebKitTabToLinksPreferenceKey")
- DumpRenderTreeSupport::setLinksIncludedInFocusChain(valueStr == "true" || valueStr == "1");
- else if (keyStr == "WebKitHyperlinkAuditingEnabled")
- mainFrame->page()->settings()->setHyperlinkAuditingEnabled(valueStr == "true" || valueStr == "1");
- else if (keyStr == "WebSocketsEnabled")
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setWebSocketsEnabled(valueStr == "true" || valueStr == "1");
- else if (keyStr == "WebKitDefaultTextEncodingName")
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setDefaultTextEncodingName(valueStr);
- else if (keyStr == "WebKitDisplayImagesKey")
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setLoadsImagesAutomatically(valueStr == "true" || valueStr == "1");
-}
-
-void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
- UNUSED_PARAM(alwaysAcceptCookies);
- notImplemented();
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
-{
- DumpRenderTreeSupport::setMockGeolocationPosition(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
- String messageStr = jsStringRefToWebCoreString(message);
- DumpRenderTreeSupport::setMockGeolocationPositionUnavailableError(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page(), messageStr);
-}
-
-void TestRunner::showWebInspector()
-{
- notImplemented();
-}
-
-void TestRunner::closeWebInspector()
-{
- notImplemented();
-}
-
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
-{
- UNUSED_PARAM(callId);
- UNUSED_PARAM(script);
- notImplemented();
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- UNUSED_PARAM(worldID);
- UNUSED_PARAM(globalObject);
- UNUSED_PARAM(script);
- notImplemented();
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- UNUSED_PARAM(worldID);
- UNUSED_PARAM(globalObject);
- UNUSED_PARAM(script);
- notImplemented();
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
- UNUSED_PARAM(source);
- UNUSED_PARAM(runAtStart);
- UNUSED_PARAM(allFrames);
- notImplemented();
-}
-
-void TestRunner::addUserStyleSheet(JSStringRef, bool)
-{
- notImplemented();
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::setWebViewEditable(bool)
-{
- notImplemented();
-}
-
-void TestRunner::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
- notImplemented();
- return false;
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool)
-{
- notImplemented();
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- WebCore::SecurityPolicy::addOriginAccessWhitelistEntry(*WebCore::SecurityOrigin::createFromString(jsStringRefToWebCoreString(sourceOrigin)),
- jsStringRefToWebCoreString(destinationProtocol),
- jsStringRefToWebCoreString(destinationHost),
- allowDestinationSubdomains);
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- WebCore::SecurityPolicy::removeOriginAccessWhitelistEntry(*WebCore::SecurityOrigin::createFromString(jsStringRefToWebCoreString(sourceOrigin)),
- jsStringRefToWebCoreString(destinationProtocol),
- jsStringRefToWebCoreString(destinationHost),
- allowDestinationSubdomains);
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool enabled)
-{
- if (!mainFrame)
- return;
-
- mainFrame->page()->settings()->setAllowFileAccessFromFileURLs(enabled);
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool enabled)
-{
- if (!mainFrame)
- return;
-
- mainFrame->page()->settings()->setAllowUniversalAccessFromFileURLs(enabled);
-}
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
- notImplemented();
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool flag)
-{
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->setJavaScriptCanAccessClipboard(flag);
-}
-
-void TestRunner::setPluginsEnabled(bool)
-{
- notImplemented();
-}
-
-void TestRunner::abortModal()
-{
- notImplemented();
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
- notImplemented();
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long)
-{
- notImplemented();
-}
-
-void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
-{
- DumpRenderTreeSupport::setMockDeviceOrientation(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page(), canProvideAlpha, alpha, canProvideBeta, beta, canProvideGamma, gamma);
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef, double, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
- setGeolocationPermissionCommon(allow);
- DumpRenderTreeSupport::setMockGeolocationPermission(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page(), allow);
-}
-
-void TestRunner::setViewModeMediaFeature(const JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::setSerializeHTTPLoads(bool)
-{
- // FIXME: Implement if needed for https://bugs.webkit.org/show_bug.cgi?id=50758.
- notImplemented();
-}
-
-void TestRunner::setTextDirection(JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::goBack()
-{
- // FIXME: implement to enable loader/navigation-while-deferring-loads.html
- notImplemented();
-}
-
-void TestRunner::setDefersLoading(bool)
-{
- // FIXME: implement to enable loader/navigation-while-deferring-loads.html
- notImplemented();
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned)
-{
- notImplemented();
-}
-
-void TestRunner::syncLocalStorage()
-{
- notImplemented();
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
- notImplemented();
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
- return DumpRenderTreeSupport::numberOfPendingGeolocationPermissionRequests(BlackBerry::WebKit::DumpRenderTree::currentInstance()->page());
-}
-
-bool TestRunner::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
-{
- WebCore::FindOptions options = 0;
-
- String nameStr = jsStringRefToWebCoreString(target);
-
- JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length"));
- size_t length = 0;
- if (optionsArray) {
- JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0);
- if (!JSValueIsNumber(context, lengthValue))
- return false;
- length = static_cast<size_t>(JSValueToNumber(context, lengthValue, 0));
- }
-
- for (size_t i = 0; i < length; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0);
- if (!JSValueIsString(context, value))
- continue;
-
- JSRetainPtr<JSStringRef> optionName(Adopt, JSValueToStringCopy(context, value, 0));
-
- if (JSStringIsEqualToUTF8CString(optionName.get(), "CaseInsensitive"))
- options |= WebCore::CaseInsensitive;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "AtWordStarts"))
- options |= WebCore::AtWordStarts;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "TreatMedialCapitalAsWordStart"))
- options |= WebCore::TreatMedialCapitalAsWordStart;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "Backwards"))
- options |= WebCore::Backwards;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "WrapAround"))
- options |= WebCore::WrapAround;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "StartInSelection"))
- options |= WebCore::StartInSelection;
- }
-
- // FIXME: we don't need to call WebPage::findNextString(), this is a workaround
- // so that test platform/blackberry/editing/text-iterator/findString-markers.html can pass.
-
- // Our layout tests assume find will wrap and highlight all matches.
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->findNextString(nameStr.utf8().data(),
- !(options & WebCore::Backwards), !(options & WebCore::CaseInsensitive), true /* wrap */, true /* highlightAllMatches */, false /* selectActiveMatchOnClear */);
-
- return mainFrame->page()->findString(nameStr, options);
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef)
-{
- // FIXME: Implement.
-}
-
-void TestRunner::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value)
-{
- JSC::ExecState* exec = toJS(context);
- WebCore::Element* element = toElement(toJS(exec, nodeObject));
- if (!element)
- return;
- WebCore::HTMLInputElement* inputElement = element->toInputElement();
- if (!inputElement)
- return;
-
- inputElement->setValueForUser(jsStringRefToWebCoreString(value));
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef)
-{
- // FIXME: Implement to support getting disk usage by all application caches for an origin.
- return 0;
-}
-
-void TestRunner::addChromeInputField()
-{
-}
-
-void TestRunner::removeChromeInputField()
-{
-}
-
-void TestRunner::focusWebView()
-{
-}
-
-void TestRunner::setBackingScaleFactor(double)
-{
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool)
-{
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef)
-{
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef)
-{
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef)
-{
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef)
-{
-}
-
-void TestRunner::resetPageVisibility()
-{
- notImplemented();
-}
-
-void TestRunner::setPageVisibility(const char*)
-{
- notImplemented();
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool)
-{
- notImplemented();
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double)
-{
- // FIXME: Implement this.
- notImplemented();
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
- notImplemented();
-}
diff --git a/Tools/DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp b/Tools/DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp
deleted file mode 100644
index 827b5ebce..000000000
--- a/Tools/DumpRenderTree/blackberry/WorkQueueItemBlackBerry.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2009, 2010, 2012 Research In Motion Limited. All rights reserved.
- *
- * 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 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
- */
-
-#include "config.h"
-#include "WorkQueueItem.h"
-
-#include "DumpRenderTreeBlackBerry.h"
-#include "Frame.h"
-#include "FrameLoadRequest.h"
-#include "KURL.h"
-#include "WebPage.h"
-#include <wtf/OwnArrayPtr.h>
-
-using namespace WebCore;
-
-bool LoadItem::invoke() const
-{
- size_t targetArrSize = JSStringGetMaximumUTF8CStringSize(m_target.get());
- size_t urlArrSize = JSStringGetMaximumUTF8CStringSize(m_url.get());
- OwnArrayPtr<char> target = adoptArrayPtr(new char[targetArrSize]);
- OwnArrayPtr<char> url = adoptArrayPtr(new char[urlArrSize]);
- size_t targetLen = JSStringGetUTF8CString(m_target.get(), target.get(), targetArrSize) - 1;
- JSStringGetUTF8CString(m_url.get(), url.get(), urlArrSize);
-
- Frame* frame;
- if (target && targetLen)
- frame = mainFrame->tree()->find(target.get());
- else
- frame = mainFrame;
-
- if (!frame)
- return false;
-
- KURL kurl = KURL(KURL(), url.get());
- frame->loader()->load(FrameLoadRequest(frame, ResourceRequest(kurl)));
- return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
- size_t contentSize = JSStringGetMaximumUTF8CStringSize(m_content.get());
- size_t baseURLSize = JSStringGetMaximumUTF8CStringSize(m_baseURL.get());
- size_t unreachableURLSize = JSStringGetMaximumUTF8CStringSize(m_unreachableURL.get());
- OwnArrayPtr<char> content = adoptArrayPtr(new char[contentSize]);
- OwnArrayPtr<char> baseURL = adoptArrayPtr(new char[baseURLSize]);
- OwnArrayPtr<char> unreachableURL = adoptArrayPtr(new char[unreachableURLSize]);
- JSStringGetUTF8CString(m_content.get(), content.get(), contentSize);
- JSStringGetUTF8CString(m_baseURL.get(), baseURL.get(), baseURLSize);
- JSStringGetUTF8CString(m_unreachableURL.get(), unreachableURL.get(), unreachableURLSize);
- STATIC_LOCAL_STRING(s_textHtml, "text/html");
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->loadString(BlackBerry::Platform::String::fromUtf8(content.get()), BlackBerry::Platform::String::fromUtf8(baseURL.get()), s_textHtml, unreachableURLSize ? BlackBerry::Platform::String::fromUtf8(unreachableURL.get()) : BlackBerry::Platform::String::emptyString());
- return true;
-}
-
-bool ReloadItem::invoke() const
-{
- mainFrame->loader()->reload(true);
- return true;
-}
-
-bool ScriptItem::invoke() const
-{
- BlackBerry::WebKit::JavaScriptDataType type;
- BlackBerry::Platform::String result;
- size_t scriptArrSize = JSStringGetMaximumUTF8CStringSize(m_script.get());
- OwnArrayPtr<char> script = adoptArrayPtr(new char[scriptArrSize]);
- JSStringGetUTF8CString(m_script.get(), script.get(), scriptArrSize);
- BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->executeJavaScript(BlackBerry::Platform::String::fromRawData(script.get(), scriptArrSize), type, result);
- return true;
-}
-
-bool BackForwardItem::invoke() const
-{
- return BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->goBackOrForward(m_howFar);
-}
-
diff --git a/Tools/DumpRenderTree/blackberry/build b/Tools/DumpRenderTree/blackberry/build
deleted file mode 100755
index fb8dce473..000000000
--- a/Tools/DumpRenderTree/blackberry/build
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-
-# This file builds the ImageDiff executable, to run
-# on the host machine.
-
-which qmake-qt4 > /dev/null
-if [ $? -eq 0 ] ; then
- qmake-qt4
-else
- qmake
-fi
-make
diff --git a/Tools/DumpRenderTree/blackberry/src.pro b/Tools/DumpRenderTree/blackberry/src.pro
deleted file mode 100644
index 10967958e..000000000
--- a/Tools/DumpRenderTree/blackberry/src.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-lessThan(QT_VERSION, 4.5) {
- error("Qt 4.5 or greater is required.")
-}
-
-TEMPLATE = app
-TARGET = ImageDiff
-
-SOURCES += ../qt/ImageDiff.cpp
-DESTDIR = .
-
-unix:CONFIG += debug_and_release
-mac:CONFIG -= app_bundle
-win32: CONFIG += console
-
-QT = core gui
-
diff --git a/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp b/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp
deleted file mode 100644
index c10a3a7dc..000000000
--- a/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * (C) 2009 Brent Fulgham <bfulgham@webkit.org>
- * (C) 2010 Igalia S.L
- *
- * 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 "PixelDumpSupportCairo.h"
-
-#include "DumpRenderTree.h"
-#include "PixelDumpSupport.h"
-#include <algorithm>
-#include <ctype.h>
-#include <wtf/Assertions.h>
-#include <wtf/MD5.h>
-#include <wtf/RefPtr.h>
-#include <wtf/StringExtras.h>
-
-using namespace std;
-
-static cairo_status_t writeFunction(void* closure, const unsigned char* data, unsigned int length)
-{
- Vector<unsigned char>* in = reinterpret_cast<Vector<unsigned char>*>(closure);
- in->append(data, length);
- return CAIRO_STATUS_SUCCESS;
-}
-
-static void printPNG(cairo_surface_t* image, const char* checksum)
-{
- Vector<unsigned char> pixelData;
- // Only PNG output is supported for now.
- cairo_surface_write_to_png_stream(image, writeFunction, &pixelData);
-
- const size_t dataLength = pixelData.size();
- const unsigned char* data = pixelData.data();
-
- printPNG(data, dataLength, checksum);
-}
-
-void computeMD5HashStringForBitmapContext(BitmapContext* context, char hashString[33])
-{
- cairo_t* bitmapContext = context->cairoContext();
- cairo_surface_t* surface = cairo_get_target(bitmapContext);
-
- ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32); // ImageDiff assumes 32 bit RGBA, we must as well.
-
- size_t pixelsHigh = cairo_image_surface_get_height(surface);
- size_t pixelsWide = cairo_image_surface_get_width(surface);
- size_t bytesPerRow = cairo_image_surface_get_stride(surface);
-
- MD5 md5Context;
- unsigned char* bitmapData = static_cast<unsigned char*>(cairo_image_surface_get_data(surface));
- for (unsigned row = 0; row < pixelsHigh; row++) {
- md5Context.addBytes(bitmapData, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- Vector<uint8_t, 16> hash;
- md5Context.checksum(hash);
-
- snprintf(hashString, 33, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
- hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7],
- hash[8], hash[9], hash[10], hash[11], hash[12], hash[13], hash[14], hash[15]);
-}
-
-void dumpBitmap(BitmapContext* context, const char* checksum)
-{
- cairo_surface_t* surface = cairo_get_target(context->cairoContext());
- printPNG(surface, checksum);
-}
diff --git a/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h b/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h
deleted file mode 100644
index 071e874d0..000000000
--- a/Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * (C) 2009 Brent Fulgham <bfulgham@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 PixelDumpSupportCairo_h
-#define PixelDumpSupportCairo_h
-
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-
-#if PLATFORM(WIN)
-#include <windows.h>
-#include <cairo-win32.h>
-#elif PLATFORM(GTK) || PLATFORM(EFL)
-#include <cairo.h>
-#endif
-
-#if PLATFORM(WIN)
-typedef HBITMAP PlatformBitmapBuffer;
-#else
-typedef void* PlatformBitmapBuffer;
-#endif
-
-class BitmapContext : public RefCounted<BitmapContext> {
-public:
- static PassRefPtr<BitmapContext> createByAdoptingBitmapAndContext(PlatformBitmapBuffer buffer, cairo_t* context)
- {
- return adoptRef(new BitmapContext(buffer, context));
- }
-
- ~BitmapContext()
- {
- if (m_buffer)
-#if PLATFORM(WIN)
- DeleteObject(m_buffer);
-#else
- free(m_buffer);
-#endif
- cairo_destroy(m_context);
- }
-
- cairo_t* cairoContext() const { return m_context; }
-
-private:
-
- BitmapContext(PlatformBitmapBuffer buffer, cairo_t* context)
- : m_buffer(buffer)
- , m_context(context)
- {
- }
-
- PlatformBitmapBuffer m_buffer;
- cairo_t* m_context;
-};
-
-#endif // PixelDumpSupportCairo_h
diff --git a/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp b/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp
deleted file mode 100644
index 43936d65d..000000000
--- a/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.cpp
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2010 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 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 "WebArchiveDumpSupport.h"
-
-#include <CFNetwork/CFNetwork.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <wtf/RetainPtr.h>
-
-extern "C" {
-
-CFURLRef CFURLResponseGetURL(CFURLResponseRef);
-CFStringRef CFURLResponseGetMIMEType(CFURLResponseRef);
-CFStringRef CFURLResponseGetTextEncodingName(CFURLResponseRef);
-SInt64 CFURLResponseGetExpectedContentLength(CFURLResponseRef);
-CFHTTPMessageRef CFURLResponseGetHTTPResponse(CFURLResponseRef);
-
-CFTypeID CFURLResponseGetTypeID(void);
-
-}
-
-static void convertMIMEType(CFMutableStringRef mimeType)
-{
- // Workaround for <rdar://problem/6234318> with Dashcode 2.0
- if (CFStringCompare(mimeType, CFSTR("application/x-javascript"), kCFCompareAnchored | kCFCompareCaseInsensitive) == kCFCompareEqualTo)
- CFStringReplaceAll(mimeType, CFSTR("text/javascript"));
-}
-
-static void convertWebResourceDataToString(CFMutableDictionaryRef resource)
-{
- CFMutableStringRef mimeType = (CFMutableStringRef)CFDictionaryGetValue(resource, CFSTR("WebResourceMIMEType"));
- CFStringLowercase(mimeType, CFLocaleGetSystem());
- convertMIMEType(mimeType);
-
- CFArrayRef supportedMIMETypes = supportedNonImageMIMETypes();
- if (CFStringHasPrefix(mimeType, CFSTR("text/")) || CFArrayContainsValue(supportedMIMETypes, CFRangeMake(0, CFArrayGetCount(supportedMIMETypes)), mimeType)) {
- CFStringRef textEncodingName = static_cast<CFStringRef>(CFDictionaryGetValue(resource, CFSTR("WebResourceTextEncodingName")));
- CFStringEncoding stringEncoding;
- if (textEncodingName && CFStringGetLength(textEncodingName))
- stringEncoding = CFStringConvertIANACharSetNameToEncoding(textEncodingName);
- else
- stringEncoding = kCFStringEncodingUTF8;
-
- CFDataRef data = static_cast<CFDataRef>(CFDictionaryGetValue(resource, CFSTR("WebResourceData")));
- RetainPtr<CFStringRef> dataAsString = adoptCF(CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, data, stringEncoding));
- if (dataAsString)
- CFDictionarySetValue(resource, CFSTR("WebResourceData"), dataAsString.get());
- }
-}
-
-static void normalizeHTTPResponseHeaderFields(CFMutableDictionaryRef fields)
-{
- // Normalize headers
- if (CFDictionaryContainsKey(fields, CFSTR("Date")))
- CFDictionarySetValue(fields, CFSTR("Date"), CFSTR("Sun, 16 Nov 2008 17:00:00 GMT"));
- if (CFDictionaryContainsKey(fields, CFSTR("Last-Modified")))
- CFDictionarySetValue(fields, CFSTR("Last-Modified"), CFSTR("Sun, 16 Nov 2008 16:55:00 GMT"));
- if (CFDictionaryContainsKey(fields, CFSTR("Etag")))
- CFDictionarySetValue(fields, CFSTR("Etag"), CFSTR("\"301925-21-45c7d72d3e780\""));
- if (CFDictionaryContainsKey(fields, CFSTR("Server")))
- CFDictionarySetValue(fields, CFSTR("Server"), CFSTR("Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7l PHP/5.2.6"));
-
- // Remove headers
- CFDictionaryRemoveValue(fields, CFSTR("Connection"));
- CFDictionaryRemoveValue(fields, CFSTR("Keep-Alive"));
-}
-
-static void normalizeWebResourceURL(CFMutableStringRef webResourceURL)
-{
- static CFIndex fileUrlLength = CFStringGetLength(CFSTR("file://"));
- CFRange layoutTestsWebArchivePathRange = CFStringFind(webResourceURL, CFSTR("/LayoutTests/"), kCFCompareBackwards);
- if (layoutTestsWebArchivePathRange.location == kCFNotFound)
- return;
- CFRange currentWorkingDirectoryRange = CFRangeMake(fileUrlLength, layoutTestsWebArchivePathRange.location - fileUrlLength);
- CFStringReplace(webResourceURL, currentWorkingDirectoryRange, CFSTR(""));
-}
-
-static void convertWebResourceResponseToDictionary(CFMutableDictionaryRef propertyList)
-{
- CFDataRef responseData = static_cast<CFDataRef>(CFDictionaryGetValue(propertyList, CFSTR("WebResourceResponse"))); // WebResourceResponseKey in WebResource.m
- if (CFGetTypeID(responseData) != CFDataGetTypeID())
- return;
-
- RetainPtr<CFURLResponseRef> response = adoptCF(createCFURLResponseFromResponseData(responseData));
- if (!response)
- return;
-
- RetainPtr<CFMutableDictionaryRef> responseDictionary = adoptCF(CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
-
- RetainPtr<CFMutableStringRef> urlString = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFURLGetString(CFURLResponseGetURL(response.get()))));
- normalizeWebResourceURL(urlString.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("URL"), urlString.get());
-
- RetainPtr<CFMutableStringRef> mimeTypeString = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFURLResponseGetMIMEType(response.get())));
- convertMIMEType(mimeTypeString.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("MIMEType"), mimeTypeString.get());
-
- CFStringRef textEncodingName = CFURLResponseGetTextEncodingName(response.get());
- if (textEncodingName)
- CFDictionarySetValue(responseDictionary.get(), CFSTR("textEncodingName"), textEncodingName);
-
- SInt64 expectedContentLength = CFURLResponseGetExpectedContentLength(response.get());
- RetainPtr<CFNumberRef> expectedContentLengthNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &expectedContentLength));
- CFDictionarySetValue(responseDictionary.get(), CFSTR("expectedContentLength"), expectedContentLengthNumber.get());
-
- if (CFHTTPMessageRef httpMessage = CFURLResponseGetHTTPResponse(response.get())) {
- RetainPtr<CFDictionaryRef> allHeaders = adoptCF(CFHTTPMessageCopyAllHeaderFields(httpMessage));
- RetainPtr<CFMutableDictionaryRef> allHeaderFields = adoptCF(CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, allHeaders.get()));
- normalizeHTTPResponseHeaderFields(allHeaderFields.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("allHeaderFields"), allHeaderFields.get());
-
- CFIndex statusCode = CFHTTPMessageGetResponseStatusCode(httpMessage);
- RetainPtr<CFNumberRef> statusCodeNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberCFIndexType, &statusCode));
- CFDictionarySetValue(responseDictionary.get(), CFSTR("statusCode"), statusCodeNumber.get());
- }
-
- CFDictionarySetValue(propertyList, CFSTR("WebResourceResponse"), responseDictionary.get());
-}
-
-static CFComparisonResult compareResourceURLs(const void *val1, const void *val2, void *context)
-{
- CFStringRef url1 = static_cast<CFStringRef>(CFDictionaryGetValue(static_cast<CFDictionaryRef>(val1), CFSTR("WebResourceURL")));
- CFStringRef url2 = static_cast<CFStringRef>(CFDictionaryGetValue(static_cast<CFDictionaryRef>(val2), CFSTR("WebResourceURL")));
-
- return CFStringCompare(url1, url2, kCFCompareAnchored);
-}
-
-CFStringRef createXMLStringFromWebArchiveData(CFDataRef webArchiveData)
-{
- CFErrorRef error = 0;
- CFPropertyListFormat format = kCFPropertyListBinaryFormat_v1_0;
- RetainPtr<CFMutableDictionaryRef> propertyList = adoptCF((CFMutableDictionaryRef)CFPropertyListCreateWithData(kCFAllocatorDefault, webArchiveData, kCFPropertyListMutableContainersAndLeaves, &format, &error));
-
- if (!propertyList) {
- if (error)
- return CFErrorCopyDescription(error);
- return static_cast<CFStringRef>(CFRetain(CFSTR("An unknown error occurred converting data to property list.")));
- }
-
- RetainPtr<CFMutableArrayRef> resources = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
- CFArrayAppendValue(resources.get(), propertyList.get());
-
- while (CFArrayGetCount(resources.get())) {
- RetainPtr<CFMutableDictionaryRef> resourcePropertyList = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(resources.get(), 0);
- CFArrayRemoveValueAtIndex(resources.get(), 0);
-
- CFMutableDictionaryRef mainResource = (CFMutableDictionaryRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebMainResource"));
- normalizeWebResourceURL((CFMutableStringRef)CFDictionaryGetValue(mainResource, CFSTR("WebResourceURL")));
- convertWebResourceDataToString(mainResource);
-
- // Add subframeArchives to list for processing
- CFMutableArrayRef subframeArchives = (CFMutableArrayRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebSubframeArchives")); // WebSubframeArchivesKey in WebArchive.m
- if (subframeArchives)
- CFArrayAppendArray(resources.get(), subframeArchives, CFRangeMake(0, CFArrayGetCount(subframeArchives)));
-
- CFMutableArrayRef subresources = (CFMutableArrayRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebSubresources")); // WebSubresourcesKey in WebArchive.m
- if (!subresources)
- continue;
-
- CFIndex subresourcesCount = CFArrayGetCount(subresources);
- for (CFIndex i = 0; i < subresourcesCount; ++i) {
- CFMutableDictionaryRef subresourcePropertyList = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(subresources, i);
- normalizeWebResourceURL((CFMutableStringRef)CFDictionaryGetValue(subresourcePropertyList, CFSTR("WebResourceURL")));
- convertWebResourceResponseToDictionary(subresourcePropertyList);
- convertWebResourceDataToString(subresourcePropertyList);
- }
-
- // Sort the subresources so they're always in a predictable order for the dump
- CFArraySortValues(subresources, CFRangeMake(0, CFArrayGetCount(subresources)), compareResourceURLs, 0);
- }
-
- error = 0;
- RetainPtr<CFDataRef> xmlData = adoptCF(CFPropertyListCreateData(kCFAllocatorDefault, propertyList.get(), kCFPropertyListXMLFormat_v1_0, 0, &error));
-
- if (!xmlData) {
- if (error)
- return CFErrorCopyDescription(error);
- return static_cast<CFStringRef>(CFRetain(CFSTR("An unknown error occurred converting property list to data.")));
- }
-
- RetainPtr<CFStringRef> xmlString = adoptCF(CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, xmlData.get(), kCFStringEncodingUTF8));
- RetainPtr<CFMutableStringRef> string = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, xmlString.get()));
-
- // Replace "Apple Computer" with "Apple" in the DTD declaration.
- CFStringFindAndReplace(string.get(), CFSTR("-//Apple Computer//"), CFSTR("-//Apple//"), CFRangeMake(0, CFStringGetLength(string.get())), 0);
-
- return string.leakRef();
-}
diff --git a/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.h b/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.h
deleted file mode 100644
index 00c58184e..000000000
--- a/Tools/DumpRenderTree/cf/WebArchiveDumpSupport.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2010 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 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 WebArchiveDumpSupport_h
-#define WebArchiveDumpSupport_h
-
-#include <CoreFoundation/CoreFoundation.h>
-
-typedef struct _CFURLResponse* CFURLResponseRef;
-
-CFStringRef createXMLStringFromWebArchiveData(CFDataRef webArchiveData);
-
-// MARK: -
-// MARK: Platform-specific methods
-
-CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef responseData);
-CFArrayRef supportedNonImageMIMETypes();
-
-#endif /* WebArchiveDumpSupport_h */
diff --git a/Tools/DumpRenderTree/cg/ImageDiffCG.cpp b/Tools/DumpRenderTree/cg/ImageDiffCG.cpp
deleted file mode 100644
index 900f1ba15..000000000
--- a/Tools/DumpRenderTree/cg/ImageDiffCG.cpp
+++ /dev/null
@@ -1,265 +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.
- */
-
-#if defined(WIN32) || defined(_WIN32)
-#define max max
-#define min min
-#endif
-
-// FIXME: We need to be able to include these defines from a config.h somewhere.
-#define JS_EXPORT_PRIVATE
-#define WTF_EXPORT_PRIVATE
-
-#include <stdio.h>
-#include <wtf/Platform.h>
-#include <wtf/RetainPtr.h>
-
-#if PLATFORM(WIN)
-#include <winsock2.h>
-#include <windows.h>
-#include <fcntl.h>
-#include <io.h>
-#include <wtf/MathExtras.h>
-#endif
-
-#include <CoreGraphics/CGBitmapContext.h>
-#include <CoreGraphics/CGImage.h>
-#include <ImageIO/CGImageDestination.h>
-
-#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 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)
-{
- 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);
- RetainPtr<CGContextRef> baseContext = adoptCF(CGBitmapContextCreate(baseBuffer, width, height, 8, rowBytes, CGImageGetColorSpace(baseImage), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host));
- CGContextDrawImage(baseContext.get(), CGRectMake(0, 0, width, height), baseImage);
-
- // Draw test image in bitmap context
- void* buffer = calloc(height, rowBytes);
- RetainPtr<CGContextRef> context = adoptCF(CGBitmapContextCreate(buffer, width, height, 8, rowBytes, CGImageGetColorSpace(testImage), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host));
- CGContextDrawImage(context.get(), CGRectMake(0, 0, width, height), testImage);
-
- // 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;
-
- RetainPtr<CGImageRef> diffImage;
- // 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;
- }
-
- static CGColorSpaceRef diffColorspace = CGColorSpaceCreateDeviceGray();
- RetainPtr<CGDataProviderRef> provider = adoptCF(CGDataProviderCreateWithData(0, diffBuffer, width * height, releaseMallocBuffer));
- diffImage = adoptCF(CGImageCreate(width, height, 8, 8, width, diffColorspace, 0, provider.get(), 0, false, kCGRenderingIntentDefault));
- }
- 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", stderr);
- }
-
- 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 {
- if (CGImageGetWidth(actualImage.get()) != CGImageGetWidth(baselineImage.get()) || CGImageGetHeight(actualImage.get()) != CGImageGetHeight(baselineImage.get()))
- fprintf(stderr, "Error: test and reference images have different sizes. Test image is %lux%lu, reference image is %lux%lu\n",
- CGImageGetWidth(actualImage.get()), CGImageGetHeight(actualImage.get()),
- CGImageGetWidth(baselineImage.get()), CGImageGetHeight(baselineImage.get()));
- else if (imageHasAlpha(actualImage.get()) != imageHasAlpha(baselineImage.get()))
- fprintf(stderr, "Error: test and reference images differ in alpha. Test image %s alpha, reference image %s alpha.\n",
- imageHasAlpha(actualImage.get()) ? "has" : "does not have",
- imageHasAlpha(baselineImage.get()) ? "has" : "does not have");
- }
-
- 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/Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp b/Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
deleted file mode 100644
index 3168d20a5..000000000
--- a/Tools/DumpRenderTree/cg/PixelDumpSupportCG.cpp
+++ /dev/null
@@ -1,113 +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 "PixelDumpSupport.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
-
-using namespace std;
-
-#if PLATFORM(WIN)
-static const CFStringRef kUTTypePNG = CFSTR("public.png");
-#endif
-
-static void printPNG(CGImageRef image, const char* checksum)
-{
- 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());
-
- const UInt8* data = CFDataGetBytePtr(imageData.get());
- CFIndex dataLength = CFDataGetLength(imageData.get());
-
- printPNG(static_cast<const unsigned char*>(data), static_cast<size_t>(dataLength), checksum);
-}
-
-void computeMD5HashStringForBitmapContext(BitmapContext* context, char hashString[33])
-{
- CGContextRef bitmapContext = context->cgContext();
-
- 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 dumpBitmap(BitmapContext* context, const char* checksum)
-{
- RetainPtr<CGImageRef> image = adoptCF(CGBitmapContextCreateImage(context->cgContext()));
- printPNG(image.get(), checksum);
-}
diff --git a/Tools/DumpRenderTree/cg/PixelDumpSupportCG.h b/Tools/DumpRenderTree/cg/PixelDumpSupportCG.h
deleted file mode 100644
index 353a6b605..000000000
--- a/Tools/DumpRenderTree/cg/PixelDumpSupportCG.h
+++ /dev/null
@@ -1,84 +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>
-
-#if PLATFORM(WIN)
-#include <windows.h>
-#endif
-
-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/Tools/DumpRenderTree/config.h b/Tools/DumpRenderTree/config.h
index 05b264ed1..9e0fe4fd4 100644
--- a/Tools/DumpRenderTree/config.h
+++ b/Tools/DumpRenderTree/config.h
@@ -20,16 +20,11 @@
#define Config_H
-#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H
-#if defined(BUILDING_WITH_CMAKE)
+#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H && defined(BUILDING_WITH_CMAKE)
#include "cmakeconfig.h"
-#else
-#include "autotoolsconfig.h"
-#endif
#endif
-#include <wtf/Platform.h>
-#include <wtf/ExportMacros.h>
+#include <WebCore/PlatformExportMacros.h>
#include <runtime/JSExportMacros.h>
#ifdef __cplusplus
@@ -38,43 +33,26 @@
#include <wtf/FastMalloc.h>
#endif
-#if PLATFORM(MAC)
-#define WTF_USE_CF 1
-
-// FIXME: These can be removed after sufficient time has passed since the removal of BUILDING_ON / TARGETING macros.
-
-#define ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MIN_REQUIRED 0 / 0
-#define ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MAX_ALLOWED 0 / 0
-
-#define BUILDING_ON_LEOPARD ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MIN_REQUIRED
-#define BUILDING_ON_SNOW_LEOPARD ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MIN_REQUIRED
-#define BUILDING_ON_LION ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MIN_REQUIRED
-
-#define TARGETING_LEOPARD ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MAX_ALLOWED
-#define TARGETING_SNOW_LEOPARD ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MAX_ALLOWED
-#define TARGETING_LION ERROR_PLEASE_COMPARE_WITH_MAC_OS_X_VERSION_MAX_ALLOWED
-
-#endif // PLATFORM(MAC)
-
-#if OS(WINDOWS)
-// 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
+#if PLATFORM(COCOA)
+#define USE_CF 1
#endif
#if PLATFORM(WIN)
-#define WTF_USE_CF 1
+#define USE_CF 1
#if PLATFORM(WIN_CAIRO)
-#define WTF_USE_CAIRO 1
-#define WTF_USE_CURL 1
+#define USE_CAIRO 1
+#define USE_CURL 1
#else
-#define WTF_USE_CG 1
-#define WTF_USE_CFNETWORK 1
+#define USE_CG 1
+#define USE_CFNETWORK 1
#endif
+#undef _WIN32_WINNT
+#define _WIN32_WINNT 0x601
+
+#undef WINVER
+#define WINVER 0x0601
+
#undef _WINSOCKAPI_
#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
#endif // PLATFORM(WIN)
diff --git a/Tools/DumpRenderTree/efl/AccessibilityControllerEfl.cpp b/Tools/DumpRenderTree/efl/AccessibilityControllerEfl.cpp
deleted file mode 100644
index 8012da637..000000000
--- a/Tools/DumpRenderTree/efl/AccessibilityControllerEfl.cpp
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- * Copyright (C) 2013 Samsung Electronics. 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"
-
-#if HAVE(ACCESSIBILITY)
-
-#include "AccessibilityCallbacks.h"
-#include "AccessibilityUIElement.h"
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-
-#include <atk/atk.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- AtkObject* accessible = DumpRenderTreeSupportEfl::focusedAccessibleElement(browser->mainFrame());
- if (!accessible)
- return 0;
-
- return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- AtkObject* accessible = DumpRenderTreeSupportEfl::rootAccessibleElement(browser->mainFrame());
- if (!accessible)
- return 0;
-
- return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
-{
- AtkObject* root = DumpRenderTreeSupportEfl::rootAccessibleElement(browser->mainFrame());
- if (!root)
- return 0;
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(id);
- GOwnPtr<gchar> idBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(id, idBuffer.get(), bufferSize);
-
- AtkObject* result = childElementById(root, idBuffer.get());
- if (ATK_IS_OBJECT(result))
- return AccessibilityUIElement(result);
-
- return 0;
-}
-
-#endif
diff --git a/Tools/DumpRenderTree/efl/AccessibilityUIElementEfl.cpp b/Tools/DumpRenderTree/efl/AccessibilityUIElementEfl.cpp
deleted file mode 100644
index 9e115d9e9..000000000
--- a/Tools/DumpRenderTree/efl/AccessibilityUIElementEfl.cpp
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- * Copyright (C) 2013 Samsung Electronics. 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"
-
-#if HAVE(ACCESSIBILITY)
-
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include <JavaScriptCore/JSStringRef.h>
-#include <atk/atk.h>
-#include <wtf/Assertions.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
-#include <wtf/text/WTFString.h>
-#include <wtf/unicode/CharacterNames.h>
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- ASSERT(ATK_IS_OBJECT(m_element));
-
- String helpText = DumpRenderTreeSupportEfl::accessibilityHelpText(ATK_OBJECT(m_element));
- GOwnPtr<gchar> axHelpText(g_strdup_printf("AXHelp: %s", helpText.utf8().data()));
- return JSStringCreateWithUTF8CString(axHelpText.get());
-}
-
-#endif
diff --git a/Tools/DumpRenderTree/efl/CMakeLists.txt b/Tools/DumpRenderTree/efl/CMakeLists.txt
deleted file mode 100644
index 998019121..000000000
--- a/Tools/DumpRenderTree/efl/CMakeLists.txt
+++ /dev/null
@@ -1,143 +0,0 @@
-set(DumpRenderTree_SOURCES
- ${TOOLS_DIR}/DumpRenderTree/AccessibilityController.cpp
- ${TOOLS_DIR}/DumpRenderTree/AccessibilityTextMarker.cpp
- ${TOOLS_DIR}/DumpRenderTree/AccessibilityUIElement.cpp
- ${TOOLS_DIR}/DumpRenderTree/DumpRenderTreeCommon.cpp
- ${TOOLS_DIR}/DumpRenderTree/CyclicRedundancyCheck.cpp
- ${TOOLS_DIR}/DumpRenderTree/GCController.cpp
- ${TOOLS_DIR}/DumpRenderTree/TestRunner.cpp
- ${TOOLS_DIR}/DumpRenderTree/PixelDumpSupport.cpp
- ${TOOLS_DIR}/DumpRenderTree/WorkQueue.cpp
- ${TOOLS_DIR}/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp
- ${TOOLS_DIR}/DumpRenderTree/atk/AccessibilityControllerAtk.cpp
- ${TOOLS_DIR}/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp
- ${TOOLS_DIR}/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/AccessibilityControllerEfl.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/AccessibilityUIElementEfl.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/DumpHistoryItem.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/DumpRenderTree.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/DumpRenderTreeView.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/EditingCallbacks.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/EventSender.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/FontManagement.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/GCControllerEfl.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/JSStringUtils.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/TestRunnerEfl.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/PixelDumpSupportEfl.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/TextInputController.cpp
- ${TOOLS_DIR}/DumpRenderTree/efl/WorkQueueItemEfl.cpp
-)
-
-set(DumpRenderTree_LIBRARIES
- JavaScriptCore
- WebCoreTestSupport
- WebCore
- WebKit
- WTF
- ${CAIRO_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${ECORE_EVAS_LIBRARIES}
- ${ECORE_FILE_LIBRARIES}
- ${ECORE_INPUT_LIBRARIES}
- ${EDJE_LIBRARIES}
- ${EINA_LIBRARIES}
- ${EO_LIBRARIES}
- ${EVAS_LIBRARIES}
- ${FONTCONFIG_LIBRARIES}
- ${LIBXML2_LIBRARIES}
- ${LIBXSLT_LIBRARIES} -lm
- ${SQLITE_LIBRARIES}
- ${GLIB_LIBRARIES}
- ${LIBSOUP_LIBRARIES}
-)
-
-set(DumpRenderTree_INCLUDE_DIRECTORIES
- "${WEBKIT_DIR}/efl/ewk"
- ${WEBKIT_DIR}/efl
- ${WEBKIT_DIR}/efl/WebCoreSupport
- ${WEBCORE_DIR}
- ${WEBCORE_DIR}/bridge
- ${WEBCORE_DIR}/bridge/jsc
- ${WEBCORE_DIR}/bindings
- ${WEBCORE_DIR}/dom
- ${WEBCORE_DIR}/editing
- ${WEBCORE_DIR}/css
- ${WEBCORE_DIR}/html
- ${WEBCORE_DIR}/inspector
- ${WEBCORE_DIR}/page
- ${WEBCORE_DIR}/page/animation
- ${WEBCORE_DIR}/platform
- ${WEBCORE_DIR}/platform/animation
- ${WEBCORE_DIR}/platform/text
- ${WEBCORE_DIR}/platform/graphics
- ${WEBCORE_DIR}/platform/graphics/cairo
- ${WEBCORE_DIR}/platform/graphics/transforms
- ${WEBCORE_DIR}/platform/network
- ${WEBCORE_DIR}/platform/network/soup
- ${WEBCORE_DIR}/plugins
- ${WEBCORE_DIR}/rendering
- ${WEBCORE_DIR}/rendering/shapes
- ${WEBCORE_DIR}/rendering/style
- ${WEBCORE_DIR}/history
- ${WEBCORE_DIR}/loader
- ${WEBCORE_DIR}/loader/cache
- ${WEBCORE_DIR}/loader/icon
- ${JAVASCRIPTCORE_DIR}
- ${JAVASCRIPTCORE_DIR}/API
- ${JAVASCRIPTCORE_DIR}/assembler
- ${JAVASCRIPTCORE_DIR}/bytecode
- ${JAVASCRIPTCORE_DIR}/dfg
- ${JAVASCRIPTCORE_DIR}/disassembler
- ${JAVASCRIPTCORE_DIR}/heap
- ${JAVASCRIPTCORE_DIR}/interpreter
- ${JAVASCRIPTCORE_DIR}/jit
- ${JAVASCRIPTCORE_DIR}/llint
- ${JAVASCRIPTCORE_DIR}/profiler
- ${JAVASCRIPTCORE_DIR}/runtime
- ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
- ${TOOLS_DIR}/DumpRenderTree
- ${TOOLS_DIR}/DumpRenderTree/atk
- ${TOOLS_DIR}/DumpRenderTree/cairo
- ${TOOLS_DIR}/DumpRenderTree/efl
- ${WTF_DIR}
- ${CMAKE_SOURCE_DIR}/Source
- ${CMAKE_BINARY_DIR}
- ${DERIVED_SOURCES_WEBCORE_DIR}
- ${WEBCORE_DIR}/bindings/js
- ${WEBCORE_DIR}/testing/js
- ${CAIRO_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_FILE_INCLUDE_DIRS}
- ${ECORE_INPUT_INCLUDE_DIRS}
- ${EDJE_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
- ${FONTCONFIG_INCLUDE_DIR}
- ${GLIB_INCLUDE_DIRS}
- ${LIBSOUP_INCLUDE_DIRS}
-)
-
-if (ENABLE_ACCESSIBILITY)
- list(APPEND DumpRenderTree_INCLUDE_DIRECTORIES
- ${TOOLS_DIR}/DumpRenderTree/atk
- ${ATK_INCLUDE_DIRS}
- )
- list(APPEND DumpRenderTree_LIBRARIES
- ${ATK_LIBRARIES}
- )
-endif ()
-
-# FIXME: DOWNLOADED_FONTS_DIR should not hardcode the directory
-# structure. See <https://bugs.webkit.org/show_bug.cgi?id=81475>.
-add_definitions(-DFONTS_CONF_DIR="${TOOLS_DIR}/DumpRenderTree/gtk/fonts"
- -DDOWNLOADED_FONTS_DIR="${CMAKE_SOURCE_DIR}/WebKitBuild/Dependencies/Source/webkitgtk-test-fonts-0.0.3")
-
-include_directories(${DumpRenderTree_INCLUDE_DIRECTORIES})
-
-add_executable(DumpRenderTree ${DumpRenderTree_SOURCES})
-target_link_libraries(DumpRenderTree ${DumpRenderTree_LIBRARIES})
-set_target_properties(DumpRenderTree PROPERTIES FOLDER "Tools")
diff --git a/Tools/DumpRenderTree/efl/DumpHistoryItem.cpp b/Tools/DumpRenderTree/efl/DumpHistoryItem.cpp
deleted file mode 100644
index 125b12847..000000000
--- a/Tools/DumpRenderTree/efl/DumpHistoryItem.cpp
+++ /dev/null
@@ -1,134 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. 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 INC. 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 "DumpHistoryItem.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "ewk_private.h"
-#include <EWebKit.h>
-#include <algorithm>
-#include <cstdio>
-#include <wtf/HashMap.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/Vector.h>
-#include <wtf/text/WTFString.h>
-
-Ewk_History_Item* prevTestBFItem = 0;
-const unsigned historyItemIndent = 8;
-
-static bool compareHistoryItemsByTarget(const Ewk_History_Item* item1, const Ewk_History_Item* item2)
-{
- return WTF::codePointCompare(DumpRenderTreeSupportEfl::historyItemTarget(item1),
- DumpRenderTreeSupportEfl::historyItemTarget(item2)) < 1;
-}
-
-static void dumpHistoryItem(const Ewk_History_Item* item, int indent, bool current)
-{
- ASSERT(item);
- int start = 0;
- if (current) {
- printf("curr->");
- start = 6;
- }
- for (int i = start; i < indent; i++)
- putchar(' ');
-
- // normalize file URLs.
- const char* uri = ewk_history_item_uri_get(item);
- if (!strncasecmp(uri, "file://", sizeof("file://") - 1)) {
- const char* pos = strstr(uri, "/LayoutTests/");
- if (!pos)
- return;
-
- printf("(file test):%s", pos + sizeof("/LayoutTests/") - 1);
- } else
- printf("%s", uri);
-
- const String target = DumpRenderTreeSupportEfl::historyItemTarget(item);
- if (!target.isEmpty())
- printf(" (in frame \"%s\")", target.utf8().data());
- if (DumpRenderTreeSupportEfl::isTargetItem(item))
- printf(" **nav target**");
- putchar('\n');
-
- HistoryItemChildrenVector children = DumpRenderTreeSupportEfl::childHistoryItems(item);
-
- // Must sort to eliminate arbitrary result ordering which defeats reproducible testing.
- std::stable_sort(children.begin(), children.end(), compareHistoryItemsByTarget);
-
- const size_t size = children.size();
- for (size_t i = 0; i < size; ++i)
- dumpHistoryItem(children[i], indent + 4, false);
-}
-
-static void dumpBackForwardListForWebView(Evas_Object* view)
-{
- printf("\n============== Back Forward List ==============\n");
-
- const Ewk_History* history = ewk_view_history_get(view);
-
- // 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
- Eina_List* itemsToPrint = 0;
- void* historyItem;
- Eina_List* backwardList = ewk_history_back_list_get(history);
- EINA_LIST_FREE(backwardList, historyItem) {
- if (historyItem == prevTestBFItem) {
- eina_list_free(backwardList);
- break;
- }
- itemsToPrint = eina_list_append(itemsToPrint, historyItem);
- }
-
- const Ewk_History_Item* currentItem = ewk_history_history_item_current_get(history);
- if (currentItem)
- itemsToPrint = eina_list_append(itemsToPrint, currentItem);
-
- Eina_List* forwardList = ewk_history_forward_list_get(history);
- EINA_LIST_FREE(forwardList, historyItem) {
- ASSERT(historyItem != prevTestBFItem);
- itemsToPrint = eina_list_append(itemsToPrint, historyItem);
- }
-
- EINA_LIST_FREE(itemsToPrint, historyItem) {
- dumpHistoryItem(static_cast<Ewk_History_Item*>(historyItem), historyItemIndent, historyItem == currentItem);
- ewk_history_item_free(static_cast<Ewk_History_Item*>(historyItem));
- }
-
- printf("===============================================\n");
-}
-
-void dumpBackForwardListForWebViews()
-{
- // Dump the back forward list of the main WebView first
- dumpBackForwardListForWebView(browser->mainView());
-
- Vector<Evas_Object*>::const_iterator it = browser->extraViews().begin();
- for (; it != browser->extraViews().end(); ++it)
- dumpBackForwardListForWebView(*it);
-}
diff --git a/Tools/DumpRenderTree/efl/DumpHistoryItem.h b/Tools/DumpRenderTree/efl/DumpHistoryItem.h
deleted file mode 100644
index ea8afeaaf..000000000
--- a/Tools/DumpRenderTree/efl/DumpHistoryItem.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. 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 INC. 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 DumpHistoryItem_h
-#define DumpHistoryItem_h
-
-#include <Evas.h>
-
-void dumpBackForwardListForWebViews();
-
-#endif // DumpHistoryItem_h
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTree.cpp b/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
deleted file mode 100644
index ac85f04ab..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTree.cpp
+++ /dev/null
@@ -1,484 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. 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 INC. 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 "DumpHistoryItem.h"
-#include "DumpRenderTreeChrome.h"
-#include "DumpRenderTreeView.h"
-#include "EventSender.h"
-#include "FontManagement.h"
-#include "NotImplemented.h"
-#include "PixelDumpSupport.h"
-#include "TestRunner.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "WebCoreTestSupport.h"
-#include "WorkQueue.h"
-#include "ewk_private.h"
-#include <EWebKit.h>
-#include <Ecore.h>
-#include <Ecore_Evas.h>
-#include <Ecore_File.h>
-#include <Edje.h>
-#include <Evas.h>
-#include <fontconfig/fontconfig.h>
-#include <getopt.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <wtf/Assertions.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/StringBuilder.h>
-
-OwnPtr<DumpRenderTreeChrome> browser;
-Evas_Object* topLoadingFrame = 0;
-bool waitForPolicy = false;
-bool policyDelegateEnabled = false;
-bool policyDelegatePermissive = false;
-Ecore_Timer* waitToDumpWatchdog = 0;
-extern Ewk_History_Item* prevTestBFItem;
-
-// From the top-level DumpRenderTree.h
-RefPtr<TestRunner> gTestRunner;
-volatile bool done = false;
-
-static bool dumpPixelsForCurrentTest;
-static int dumpPixelsForAllTests = false;
-static int dumpTree = true;
-static int printSeparators = true;
-static int useTimeoutWatchdog = true;
-
-static String dumpFramesAsText(Evas_Object* frame)
-{
- if (!frame)
- return String();
-
- String result;
- const char* frameContents = ewk_frame_plain_text_get(frame);
-
- if (!frameContents)
- return String();
-
- if (browser->mainFrame() != frame) {
- result.append("\n--------\nFrame: '");
- result.append(String::fromUTF8(ewk_frame_name_get(frame)));
- result.append("'\n--------\n");
- }
-
- result.append(String::fromUTF8(frameContents));
- result.append("\n");
- eina_stringshare_del(frameContents);
-
- if (gTestRunner->dumpChildFramesAsText()) {
- Eina_List* children = DumpRenderTreeSupportEfl::frameChildren(frame);
- void* iterator;
-
- EINA_LIST_FREE(children, iterator) {
- Evas_Object* currentFrame = static_cast<Evas_Object*>(iterator);
- String tempText(dumpFramesAsText(currentFrame));
-
- if (tempText.isEmpty())
- continue;
-
- result.append(tempText);
- }
- }
-
- return result;
-}
-
-static void dumpFrameScrollPosition(Evas_Object* frame)
-{
- int x, y;
- ewk_frame_scroll_pos_get(frame, &x, &y);
- if (abs(x) > 0 || abs(y) > 0) {
- StringBuilder result;
-
- Evas_Object* parent = evas_object_smart_parent_get(frame);
-
- // smart parent of main frame is view object.
- if (parent != browser->mainView()) {
- result.append("frame '");
- result.append(ewk_frame_name_get(frame));
- result.append("' ");
- }
-
- result.append("scrolled to ");
- result.append(WTF::String::number(x));
- result.append(",");
- result.append(WTF::String::number(y));
- result.append("\n");
-
- printf("%s", result.toString().utf8().data());
- }
-
- if (gTestRunner->dumpChildFrameScrollPositions()) {
- Eina_List* children = DumpRenderTreeSupportEfl::frameChildren(frame);
- void* iterator;
-
- EINA_LIST_FREE(children, iterator) {
- Evas_Object* currentFrame = static_cast<Evas_Object*>(iterator);
- dumpFrameScrollPosition(currentFrame);
- }
- }
-}
-
-static bool shouldLogFrameLoadDelegates(const String& pathOrURL)
-{
- return pathOrURL.contains("loading/");
-}
-
-static bool shouldDumpAsText(const String& pathOrURL)
-{
- return pathOrURL.contains("dumpAsText/");
-}
-
-static bool shouldOpenWebInspector(const String& pathOrURL)
-{
- return pathOrURL.contains("inspector/");
-}
-
-static void sendPixelResultsEOF()
-{
- puts("#EOF");
- fflush(stdout);
- fflush(stderr);
-}
-
-bool shouldSetWaitToDumpWatchdog()
-{
- return !waitToDumpWatchdog && useTimeoutWatchdog;
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
- if (waitToDumpWatchdog) {
- ecore_timer_del(waitToDumpWatchdog);
- waitToDumpWatchdog = 0;
- }
- waitForPolicy = false;
-}
-
-static void onEcoreEvasResize(Ecore_Evas* ecoreEvas)
-{
- int width, height;
-
- ecore_evas_geometry_get(ecoreEvas, 0, 0, &width, &height);
- evas_object_move(browser->mainView(), 0, 0);
- evas_object_resize(browser->mainView(), width, height);
-}
-
-static void onCloseWindow(Ecore_Evas*)
-{
- notImplemented();
-}
-
-static Eina_Bool useLongRunningServerMode(int argc, char** argv)
-{
- return (argc == optind + 1 && !strcmp(argv[optind], "-"));
-}
-
-static bool parseCommandLineOptions(int argc, char** argv)
-{
- static const option options[] = {
- {"notree", no_argument, &dumpTree, false},
- {"pixel-tests", no_argument, &dumpPixelsForAllTests, true},
- {"tree", no_argument, &dumpTree, true},
- {"no-timeout", no_argument, &useTimeoutWatchdog, false},
- {0, 0, 0, 0}
- };
-
- int option;
- while ((option = getopt_long(argc, (char* const*)argv, "", options, 0)) != -1) {
- switch (option) {
- case '?':
- case ':':
- return false;
- }
- }
-
- return true;
-}
-
-static inline bool isGlobalHistoryTest(const String& cTestPathOrURL)
-{
- return cTestPathOrURL.contains("/globalhistory/");
-}
-
-static void createTestRunner(const String& testURL, const String& expectedPixelHash)
-{
- gTestRunner =
- TestRunner::create(std::string(testURL.utf8().data()),
- std::string(expectedPixelHash.utf8().data()));
-
- topLoadingFrame = 0;
- done = false;
-
- gTestRunner->setIconDatabaseEnabled(false);
-
- if (shouldLogFrameLoadDelegates(testURL))
- gTestRunner->setDumpFrameLoadCallbacks(true);
-
- gTestRunner->setDeveloperExtrasEnabled(true);
- if (shouldOpenWebInspector(testURL))
- gTestRunner->showWebInspector();
-
- gTestRunner->setDumpHistoryDelegateCallbacks(isGlobalHistoryTest(testURL));
-
- if (shouldDumpAsText(testURL)) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
-}
-
-static String getFinalTestURL(const String& testURL)
-{
- if (!testURL.startsWith("http://") && !testURL.startsWith("https://")) {
- char* cFilePath = ecore_file_realpath(testURL.utf8().data());
- const String filePath = String::fromUTF8(cFilePath);
- free(cFilePath);
-
- if (ecore_file_exists(filePath.utf8().data()))
- return String("file://") + filePath;
- }
-
- return testURL;
-}
-
-static void runTest(const char* inputLine)
-{
- TestCommand command = parseInputLine(inputLine);
- const String testPathOrURL(command.pathOrURL.c_str());
- ASSERT(!testPathOrURL.isEmpty());
- dumpPixelsForCurrentTest = command.shouldDumpPixels || dumpPixelsForAllTests;
- const String expectedPixelHash(command.expectedPixelHash.c_str());
-
- // Convert the path into a full file URL if it does not look
- // like an HTTP/S URL (doesn't start with http:// or https://).
- const String testURL = getFinalTestURL(testPathOrURL);
-
- browser->resetDefaultsToConsistentValues();
- createTestRunner(testURL, expectedPixelHash);
-
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- const bool isSVGW3CTest = testURL.contains("svg/W3C-SVG-1.1");
- const int width = isSVGW3CTest ? TestRunner::w3cSVGViewWidth : TestRunner::viewWidth;
- const int height = isSVGW3CTest ? TestRunner::w3cSVGViewHeight : TestRunner::viewHeight;
- evas_object_resize(browser->mainView(), width, height);
-
- if (prevTestBFItem)
- ewk_history_item_free(prevTestBFItem);
- const Ewk_History* history = ewk_view_history_get(browser->mainView());
- prevTestBFItem = ewk_history_history_item_current_get(history);
-
- evas_object_focus_set(browser->mainView(), EINA_TRUE);
- ewk_view_uri_set(browser->mainView(), testURL.utf8().data());
-
- ecore_main_loop_begin();
-
- gTestRunner->closeWebInspector();
- gTestRunner->setDeveloperExtrasEnabled(false);
-
- browser->clearExtraViews();
-
- // FIXME: Move to DRTChrome::resetDefaultsToConsistentValues() after bug 85209 lands.
- WebCoreTestSupport::resetInternalsObject(DumpRenderTreeSupportEfl::globalContextRefForFrame(browser->mainFrame()));
-
- ewk_view_uri_set(browser->mainView(), "about:blank");
-
- gTestRunner.clear();
- sendPixelResultsEOF();
-}
-
-static void runTestingServerLoop()
-{
- char filename[PATH_MAX];
-
- while (fgets(filename, sizeof(filename), stdin)) {
- char* newLine = strrchr(filename, '\n');
- if (newLine)
- *newLine = '\0';
-
- if (filename[0] != '\0')
- runTest(filename);
- }
-}
-
-static void adjustOutputTypeByMimeType(const Evas_Object* frame)
-{
- const String responseMimeType(DumpRenderTreeSupportEfl::responseMimeType(frame));
- if (responseMimeType == "text/plain") {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
-}
-
-static void dumpFrameContentsAsText(Evas_Object* frame)
-{
- String result;
- if (gTestRunner->dumpAsText())
- result = dumpFramesAsText(frame);
- else
- result = DumpRenderTreeSupportEfl::renderTreeDump(frame);
-
- printf("%s", result.utf8().data());
-}
-
-static bool shouldDumpFrameScrollPosition()
-{
- return !gTestRunner->dumpAsText() && !gTestRunner->dumpDOMAsWebArchive() && !gTestRunner->dumpSourceAsWebArchive();
-}
-
-static bool shouldDumpPixelsAndCompareWithExpected()
-{
- return dumpPixelsForCurrentTest && gTestRunner->generatePixelResults() && !gTestRunner->dumpDOMAsWebArchive() && !gTestRunner->dumpSourceAsWebArchive();
-}
-
-static bool shouldDumpBackForwardList()
-{
- return gTestRunner->dumpBackForwardList();
-}
-
-static bool initEfl()
-{
- if (!ecore_evas_init())
- return false;
- if (!ecore_file_init()) {
- ecore_evas_shutdown();
- return false;
- }
- if (!edje_init()) {
- ecore_file_shutdown();
- ecore_evas_shutdown();
- return false;
- }
- if (!ewk_init()) {
- edje_shutdown();
- ecore_file_shutdown();
- ecore_evas_shutdown();
- return false;
- }
-
- return true;
-}
-
-static void shutdownEfl()
-{
- ewk_shutdown();
- edje_shutdown();
- ecore_file_shutdown();
- ecore_evas_shutdown();
-}
-
-void displayWebView()
-{
- DumpRenderTreeSupportEfl::forceLayout(browser->mainFrame());
- DumpRenderTreeSupportEfl::setTracksRepaints(browser->mainFrame(), true);
- DumpRenderTreeSupportEfl::resetTrackedRepaints(browser->mainFrame());
-}
-
-void dump()
-{
- Evas_Object* frame = browser->mainFrame();
-
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- if (dumpTree) {
- adjustOutputTypeByMimeType(frame);
- dumpFrameContentsAsText(frame);
-
- if (shouldDumpFrameScrollPosition())
- dumpFrameScrollPosition(frame);
-
- if (shouldDumpBackForwardList())
- dumpBackForwardListForWebViews();
-
- if (printSeparators) {
- puts("#EOF");
- fputs("#EOF\n", stderr);
- fflush(stdout);
- fflush(stderr);
- }
- }
-
- if (shouldDumpPixelsAndCompareWithExpected())
- dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner->expectedPixelHash());
-
- done = true;
- ecore_main_loop_quit();
-}
-
-static Ecore_Evas* initEcoreEvas()
-{
- Ecore_Evas* ecoreEvas = 0;
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- ecoreEvas = ecore_evas_new("opengl_x11", 0, 0, 800, 600, 0);
- if (!ecoreEvas)
-#endif
- ecoreEvas = ecore_evas_new(0, 0, 0, 800, 600, 0);
- if (!ecoreEvas) {
- shutdownEfl();
- exit(EXIT_FAILURE);
- }
-
- ecore_evas_title_set(ecoreEvas, "EFL DumpRenderTree");
- ecore_evas_callback_resize_set(ecoreEvas, onEcoreEvasResize);
- ecore_evas_callback_delete_request_set(ecoreEvas, onCloseWindow);
- ecore_evas_show(ecoreEvas);
-
- return ecoreEvas;
-}
-
-int main(int argc, char** argv)
-{
- if (!parseCommandLineOptions(argc, argv))
- return EXIT_FAILURE;
-
- if (!initEfl())
- return EXIT_FAILURE;
-
- WTFInstallReportBacktraceOnCrashHook();
-
- OwnPtr<Ecore_Evas> ecoreEvas = adoptPtr(initEcoreEvas());
- browser = DumpRenderTreeChrome::create(ecore_evas_get(ecoreEvas.get()));
- addFontsToEnvironment();
-
- if (useLongRunningServerMode(argc, argv)) {
- printSeparators = true;
- runTestingServerLoop();
- } else {
- printSeparators = (optind < argc - 1 || (dumpPixelsForCurrentTest && dumpTree));
- for (int i = optind; i != argc; ++i)
- runTest(argv[i]);
- }
-
- ecoreEvas.clear();
-
- shutdownEfl();
- return EXIT_SUCCESS;
-}
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
deleted file mode 100644
index 5a63384d8..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.cpp
+++ /dev/null
@@ -1,873 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation
- *
- * 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 COPYRIGHT HOLDERS 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 THE COPYRIGHT
- * HOLDERS 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 "DumpRenderTreeChrome.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeView.h"
-#include "EditingCallbacks.h"
-#include "EventSender.h"
-#include "GCController.h"
-#include "KURL.h"
-#include "NotImplemented.h"
-#include "TestRunner.h"
-#include "TextInputController.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "WebCoreTestSupport.h"
-#include "WorkQueue.h"
-#include "ewk_private.h" // FIXME: create some WebCoreSupport/DumpRenderTree.cpp instead
-
-#include <EWebKit.h>
-#include <Ecore.h>
-#include <Eina.h>
-#include <Evas.h>
-#include <cstdio>
-#include <wtf/NotFound.h>
-#include <wtf/text/StringBuilder.h>
-
-#if HAVE(ACCESSIBILITY)
-#include "AccessibilityController.h"
-#endif
-
-using namespace WebCore;
-
-HashMap<unsigned long, CString> DumpRenderTreeChrome::m_dumpAssignedUrls;
-Evas_Object* DumpRenderTreeChrome::m_provisionalLoadFailedFrame = 0;
-
-PassOwnPtr<DumpRenderTreeChrome> DumpRenderTreeChrome::create(Evas* evas)
-{
- OwnPtr<DumpRenderTreeChrome> chrome = adoptPtr(new DumpRenderTreeChrome(evas));
-
- if (!chrome->initialize())
- return nullptr;
-
- return chrome.release();
-}
-
-DumpRenderTreeChrome::DumpRenderTreeChrome(Evas* evas)
- : m_mainView(0)
- , m_mainFrame(0)
- , m_evas(evas)
- , m_gcController(adoptPtr(new GCController))
-#if HAVE(ACCESSIBILITY)
- , m_axController(adoptPtr(new AccessibilityController))
-#endif
-{
-}
-
-DumpRenderTreeChrome::~DumpRenderTreeChrome()
-{
-}
-
-Evas_Object* DumpRenderTreeChrome::createNewWindow()
-{
- Evas_Object* newView = createView();
-
- ewk_view_setting_scripts_can_open_windows_set(newView, EINA_TRUE);
- ewk_view_setting_scripts_can_close_windows_set(newView, EINA_TRUE);
-
- m_extraViews.append(newView);
-
- return newView;
-}
-
-Evas_Object* DumpRenderTreeChrome::createView() const
-{
- Evas_Object* view = drtViewAdd(m_evas);
- if (!view)
- return 0;
-
- ewk_view_theme_set(view, TEST_THEME_DIR "/default.edj");
-
- evas_object_smart_callback_add(view, "download,request", onDownloadRequest, 0);
- evas_object_smart_callback_add(view, "load,resource,failed", onResourceLoadFailed, 0);
- evas_object_smart_callback_add(view, "load,resource,finished", onResourceLoadFinished, 0);
- evas_object_smart_callback_add(view, "load,started", onLoadStarted, 0);
- evas_object_smart_callback_add(view, "window,object,cleared", onWindowObjectCleared, m_gcController.get());
- evas_object_smart_callback_add(view, "statusbar,text,set", onStatusbarTextSet, 0);
- evas_object_smart_callback_add(view, "load,document,finished", onDocumentLoadFinished, 0);
- evas_object_smart_callback_add(view, "resource,request,new", onNewResourceRequest, 0);
- evas_object_smart_callback_add(view, "resource,request,willsend", onWillSendRequest, 0);
- evas_object_smart_callback_add(view, "resource,response,received", onResponseReceived, 0);
- evas_object_smart_callback_add(view, "onload,event", onWebViewOnloadEvent, 0);
- evas_object_smart_callback_add(view, "mixedcontent,run", onInsecureContentRun, 0);
- evas_object_smart_callback_add(view, "mixedcontent,displayed", onInsecureContentDisplayed, 0);
- evas_object_smart_callback_add(view, "frame,created", onFrameCreated, 0);
- evas_object_smart_callback_add(view, "navigate,with,data", onWebViewNavigatedWithData, 0);
- evas_object_smart_callback_add(view, "perform,server,redirect", onWebViewServerRedirect, 0);
- evas_object_smart_callback_add(view, "perform,client,redirect", onWebViewClientRedirect, 0);
- evas_object_smart_callback_add(view, "populate,visited,links", onWebViewPopulateVisitedLinks, 0);
- evas_object_smart_callback_add(view, "inspector,view,create", onInspectorViewCreate, 0);
- evas_object_smart_callback_add(view, "inspector,view,close", onInspectorViewClose, 0);
-
- connectEditingCallbacks(view);
-
- Evas_Object* mainFrame = ewk_view_frame_main_get(view);
- evas_object_smart_callback_add(mainFrame, "icon,changed", onFrameIconChanged, 0);
- evas_object_smart_callback_add(mainFrame, "load,provisional", onFrameProvisionalLoad, 0);
- evas_object_smart_callback_add(mainFrame, "load,provisional,failed", onFrameProvisionalLoadFailed, 0);
- evas_object_smart_callback_add(mainFrame, "load,committed", onFrameLoadCommitted, 0);
- evas_object_smart_callback_add(mainFrame, "load,finished", onFrameLoadFinished, 0);
- evas_object_smart_callback_add(mainFrame, "load,error", onFrameLoadError, 0);
- evas_object_smart_callback_add(mainFrame, "redirect,cancelled", onFrameRedirectCancelled, 0);
- evas_object_smart_callback_add(mainFrame, "redirect,load,provisional", onFrameRedirectForProvisionalLoad, 0);
- evas_object_smart_callback_add(mainFrame, "redirect,requested", onFrameRedirectRequested, 0);
- evas_object_smart_callback_add(mainFrame, "title,changed", onFrameTitleChanged, 0);
- evas_object_smart_callback_add(mainFrame, "xss,detected", onDidDetectXSS, 0);
-
- return view;
-}
-
-Evas_Object* DumpRenderTreeChrome::createInspectorView()
-{
- Evas_Object* inspectorView = drtViewAdd(m_evas);
- if (!inspectorView)
- return 0;
-
- // Inspector-related views are not expected to have their output logged.
- const bool ignoreMessages = true;
- evas_object_data_set(inspectorView, "ignore-console-messages", &ignoreMessages);
-
- ewk_view_theme_set(inspectorView, TEST_THEME_DIR "/default.edj");
-
- Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
- evas_object_smart_callback_add(mainFrame, "load,finished", onInspectorFrameLoadFinished, 0);
-
- evas_object_resize(inspectorView, TestRunner::viewWidth, TestRunner::viewHeight);
- evas_object_show(inspectorView);
- evas_object_focus_set(inspectorView, true);
-
- return inspectorView;
-}
-
-void DumpRenderTreeChrome::removeInspectorView()
-{
- Evas_Object* inspectorView = ewk_view_inspector_view_get(mainView());
- if (!inspectorView)
- return;
-
- Evas_Object* mainFrame = ewk_view_frame_main_get(inspectorView);
- evas_object_smart_callback_del(mainFrame, "load,finished", onInspectorFrameLoadFinished);
-
- evas_object_del(inspectorView);
- ewk_view_inspector_view_set(mainView(), 0);
-}
-
-void DumpRenderTreeChrome::waitInspectorLoadFinished()
-{
- // Waits until the page has finished loading.
- // Because it can't complete loading inspector.html before loading testURL.
- Evas_Object* inspectorView = ewk_view_inspector_view_get(mainView());
- if (inspectorView)
- ecore_main_loop_begin();
-}
-
-void DumpRenderTreeChrome::removeWindow(Evas_Object* view)
-{
- const size_t pos = m_extraViews.find(view);
-
- if (pos == notFound)
- return;
-
- m_extraViews.remove(pos);
- evas_object_del(view);
-}
-
-bool DumpRenderTreeChrome::initialize()
-{
- // Notifies that DRT is running for ewkView to create testable objects.
- DumpRenderTreeSupportEfl::setDumpRenderTreeModeEnabled(true);
- DumpRenderTreeSupportEfl::setMockScrollbarsEnabled(true);
-
- m_mainView = createView();
- if (!m_mainView)
- return false;
-
- ewk_view_theme_set(m_mainView, TEST_THEME_DIR "/default.edj");
-
- evas_object_name_set(m_mainView, "m_mainView");
- evas_object_move(m_mainView, 0, 0);
- evas_object_resize(m_mainView, TestRunner::viewWidth, TestRunner::viewHeight);
- evas_object_layer_set(m_mainView, EVAS_LAYER_MAX);
- evas_object_show(m_mainView);
- evas_object_focus_set(m_mainView, EINA_TRUE);
-
- m_mainFrame = ewk_view_frame_main_get(m_mainView);
-
- return true;
-}
-
-const Vector<Evas_Object*>& DumpRenderTreeChrome::extraViews() const
-{
- return m_extraViews;
-}
-
-void DumpRenderTreeChrome::clearExtraViews()
-{
- Vector<Evas_Object*>::iterator it = m_extraViews.begin();
- for (; it != m_extraViews.end(); ++it)
- evas_object_del(*it);
- m_extraViews.clear();
-}
-
-Evas_Object* DumpRenderTreeChrome::mainFrame() const
-{
- return m_mainFrame;
-}
-
-Evas_Object* DumpRenderTreeChrome::mainView() const
-{
- return m_mainView;
-}
-
-void DumpRenderTreeChrome::resetDefaultsToConsistentValues()
-{
- ewk_settings_icon_database_clear();
- ewk_settings_icon_database_path_set(0);
-
- ewk_web_database_remove_all();
- ewk_settings_web_database_default_quota_set(5 * 1024 * 1024);
-
- ewk_settings_memory_cache_clear();
- ewk_settings_application_cache_clear();
- ewk_settings_shadow_dom_enable_set(EINA_TRUE);
-
- ewk_view_setting_private_browsing_set(mainView(), EINA_FALSE);
- ewk_view_setting_spatial_navigation_set(mainView(), EINA_FALSE);
- ewk_view_setting_enable_frame_flattening_set(mainView(), EINA_FALSE);
- ewk_view_setting_application_cache_set(mainView(), EINA_TRUE);
- ewk_view_setting_enable_scripts_set(mainView(), EINA_TRUE);
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_STANDARD, "Times");
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_MONOSPACE, "Courier");
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_SERIF, "Times");
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_SANS_SERIF, "Helvetica");
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_CURSIVE, "cursive");
- ewk_view_font_family_name_set(mainView(), EWK_FONT_FAMILY_FANTASY, "fantasy");
- ewk_view_setting_font_default_size_set(mainView(), 16);
- ewk_view_setting_font_monospace_size_set(mainView(), 13);
- ewk_view_setting_font_minimum_size_set(mainView(), 0);
- ewk_view_setting_caret_browsing_set(mainView(), EINA_FALSE);
- ewk_view_setting_page_cache_set(mainView(), EINA_FALSE);
- ewk_view_setting_enable_auto_resize_window_set(mainView(), EINA_TRUE);
- ewk_view_setting_enable_plugins_set(mainView(), EINA_TRUE);
- ewk_view_setting_scripts_can_open_windows_set(mainView(), EINA_TRUE);
- ewk_view_setting_scripts_can_close_windows_set(mainView(), EINA_TRUE);
- ewk_view_setting_auto_load_images_set(mainView(), EINA_TRUE);
- ewk_view_setting_user_stylesheet_set(mainView(), 0);
- ewk_view_setting_enable_xss_auditor_set(browser->mainView(), EINA_TRUE);
- ewk_view_setting_enable_webgl_set(mainView(), EINA_TRUE);
- ewk_view_setting_enable_hyperlink_auditing_set(mainView(), EINA_FALSE);
- ewk_view_setting_include_links_in_focus_chain_set(mainView(), EINA_FALSE);
- ewk_view_setting_scripts_can_access_clipboard_set(mainView(), EINA_TRUE);
- ewk_view_setting_allow_universal_access_from_file_urls_set(mainView(), EINA_TRUE);
- ewk_view_setting_allow_file_access_from_file_urls_set(mainView(), EINA_TRUE);
- ewk_view_setting_resizable_textareas_set(mainView(), EINA_TRUE);
-
- ewk_view_zoom_set(mainView(), 1.0, 0, 0);
- ewk_view_scale_set(mainView(), 1.0, 0, 0);
- ewk_view_text_zoom_set(mainView(), 1.0);
- ewk_view_visibility_state_set(mainView(), EWK_PAGE_VISIBILITY_STATE_VISIBLE, true);
- ewk_view_text_direction_set(mainView(), EWK_TEXT_DIRECTION_DEFAULT);
-
- ewk_history_clear(ewk_view_history_get(mainView()));
-
- ewk_frame_feed_focus_in(mainFrame());
-
- ewk_cookies_clear();
- ewk_cookies_policy_set(EWK_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY);
-
- ewk_security_policy_whitelist_origin_reset();
-
-#if HAVE(ACCESSIBILITY)
- browser->accessibilityController()->resetToConsistentState();
-#endif
-
- DumpRenderTreeSupportEfl::clearFrameName(mainFrame());
- DumpRenderTreeSupportEfl::clearOpener(mainFrame());
- DumpRenderTreeSupportEfl::clearUserScripts(mainView());
- DumpRenderTreeSupportEfl::clearUserStyleSheets(mainView());
- DumpRenderTreeSupportEfl::resetGeolocationClientMock(mainView());
- DumpRenderTreeSupportEfl::setInteractiveFormValidationEnabled(mainView(), true);
- DumpRenderTreeSupportEfl::setValidationMessageTimerMagnification(mainView(), -1);
- DumpRenderTreeSupportEfl::setAuthorAndUserStylesEnabled(mainView(), true);
- DumpRenderTreeSupportEfl::setCSSGridLayoutEnabled(mainView(), false);
- DumpRenderTreeSupportEfl::setDefersLoading(mainView(), false);
- DumpRenderTreeSupportEfl::setLoadsSiteIconsIgnoringImageLoadingSetting(mainView(), false);
- DumpRenderTreeSupportEfl::setSerializeHTTPLoads(false);
- DumpRenderTreeSupportEfl::setMinimumLogicalFontSize(mainView(), 9);
- DumpRenderTreeSupportEfl::setCSSRegionsEnabled(mainView(), true);
- DumpRenderTreeSupportEfl::setShouldTrackVisitedLinks(false);
- DumpRenderTreeSupportEfl::setTracksRepaints(mainFrame(), false);
- DumpRenderTreeSupportEfl::setSeamlessIFramesEnabled(true);
- DumpRenderTreeSupportEfl::setWebAudioEnabled(mainView(), false);
-
- // Reset capacities for the memory cache for dead objects.
- static const unsigned cacheTotalCapacity = 8192 * 1024;
- ewk_settings_object_cache_capacity_set(0, cacheTotalCapacity, cacheTotalCapacity);
- DumpRenderTreeSupportEfl::setDeadDecodedDataDeletionInterval(0);
- ewk_settings_page_cache_capacity_set(3);
-
- policyDelegateEnabled = false;
- policyDelegatePermissive = false;
-}
-
-static CString pathSuitableForTestResult(const char* uriString)
-{
- if (!uriString)
- return CString();
-
- KURL uri = KURL(ParsedURLString, uriString);
-
- if (!uri.isLocalFile())
- return uri.string().utf8();
-
- String pathString = uri.path();
- size_t indexBaseName = pathString.reverseFind('/');
- String baseName;
- if (indexBaseName == notFound)
- baseName = pathString;
- else
- baseName = pathString.substring(indexBaseName + 1);
-
- String dirName;
- if (indexBaseName != notFound) {
- size_t indexDirName = pathString.reverseFind('/', indexBaseName - 1);
- if (indexDirName != notFound)
- dirName = pathString.substring(indexDirName + 1, indexBaseName - indexDirName - 1);
- }
-
- String ret = dirName + "/" + baseName;
- return ret.utf8();
-}
-
-static CString urlSuitableForTestResult(const char* uriString)
-{
- KURL uri = KURL(ParsedURLString, uriString);
- if (!uri.isLocalFile())
- return CString(uriString);
-
- unsigned startIndex = uri.pathAfterLastSlash();
- return uri.string().substring(startIndex).utf8();
-}
-
-static CString descriptionSuitableForTestResult(Ewk_Frame_Resource_Request* request)
-{
- StringBuilder builder;
- builder.appendLiteral("<NSURLRequest URL ");
- builder.append(pathSuitableForTestResult(request->url).data());
- builder.appendLiteral(", main document URL ");
- builder.append(urlSuitableForTestResult(request->first_party).data());
- builder.appendLiteral(", http method ");
-
- if (request->http_method)
- builder.append(String(request->http_method));
- else
- builder.appendLiteral("(none)");
-
- builder.append('>');
- return builder.toString().utf8();
-}
-
-static CString descriptionSuitableForTestResult(const Ewk_Frame_Resource_Response* response)
-{
- if (!response)
- return CString("(null)");
-
- StringBuilder builder;
- builder.appendLiteral("<NSURLResponse ");
- builder.append(pathSuitableForTestResult(response->url).data());
- builder.appendLiteral(", http status code ");
- builder.append(String::number(response->status_code));
- builder.append('>');
- return builder.toString().utf8();
-}
-
-static CString descriptionSuitableForTestResult(Ewk_Frame_Load_Error* error)
-{
- const char* errorDomain = error->domain;
- int errorCode = error->code;
-
- // We need to do some error mapping here to match
- // the test expectations.
- if (!strcmp(error->domain, "WebKitNetworkError")) {
- errorDomain = "NSURLErrorDomain";
- errorCode = -999;
- }
-
- if (!strcmp(errorDomain, "WebKitPolicyError"))
- errorDomain = "WebKitErrorDomain";
-
- String ret = makeString("<NSError domain ", errorDomain, ", code ", String::number(errorCode));
- if (error->failing_url && *error->failing_url != '\0')
- ret = makeString(ret, ", failing URL \"", error->failing_url, "\"");
- ret = makeString(ret, ">");
-
- return ret.utf8();
-}
-
-// Smart Callbacks
-// ---------------
-
-void DumpRenderTreeChrome::onWindowObjectCleared(void* userData, Evas_Object*, void* eventInfo)
-{
- Ewk_Window_Object_Cleared_Event* objectClearedInfo = static_cast<Ewk_Window_Object_Cleared_Event*>(eventInfo);
- JSValueRef exception = 0;
- ASSERT(gTestRunner);
-
-#if HAVE(ACCESSIBILITY)
- browser->accessibilityController()->makeWindowObject(objectClearedInfo->context, objectClearedInfo->windowObject, &exception);
- ASSERT(!exception);
-#endif
-
- GCController* gcController = static_cast<GCController*>(userData);
- ASSERT(gcController);
-
- gTestRunner->makeWindowObject(objectClearedInfo->context, objectClearedInfo->windowObject, &exception);
- ASSERT(!exception);
-
- gcController->makeWindowObject(objectClearedInfo->context, objectClearedInfo->windowObject, &exception);
- ASSERT(!exception);
-
- JSRetainPtr<JSStringRef> controllerName(Adopt, JSStringCreateWithUTF8CString("eventSender"));
- JSObjectSetProperty(objectClearedInfo->context, objectClearedInfo->windowObject,
- controllerName.get(),
- makeEventSender(objectClearedInfo->context, !DumpRenderTreeSupportEfl::frameParent(objectClearedInfo->frame)),
- kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
-
- JSRetainPtr<JSStringRef> textInputControllerName(Adopt, JSStringCreateWithUTF8CString("textInputController"));
- JSObjectSetProperty(objectClearedInfo->context, objectClearedInfo->windowObject,
- textInputControllerName.get(),
- makeTextInputController(objectClearedInfo->context),
- kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
-
- WebCoreTestSupport::injectInternalsObject(objectClearedInfo->context);
-}
-
-void DumpRenderTreeChrome::onLoadStarted(void*, Evas_Object* view, void* eventInfo)
-{
- Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
-
- // 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;
-}
-
-Eina_Bool DumpRenderTreeChrome::processWork(void*)
-{
- if (WorkQueue::shared()->processWork() && !gTestRunner->waitToDump())
- dump();
-
- return ECORE_CALLBACK_CANCEL;
-}
-
-void DumpRenderTreeChrome::topLoadingFrameLoadFinished()
-{
- topLoadingFrame = 0;
-
- WorkQueue::shared()->setFrozen(true);
- if (gTestRunner->waitToDump())
- return;
-
- if (WorkQueue::shared()->count())
- ecore_idler_add(processWork, 0 /*frame*/);
- else
- dump();
-}
-
-void DumpRenderTreeChrome::onStatusbarTextSet(void*, Evas_Object*, void* eventInfo)
-{
- if (!gTestRunner->dumpStatusCallbacks())
- return;
-
- const char* statusbarText = static_cast<const char*>(eventInfo);
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", statusbarText);
-}
-
-void DumpRenderTreeChrome::onFrameIconChanged(void*, Evas_Object* frame, void*)
-{
- if (!done && gTestRunner->dumpIconChanges()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didChangeIcons\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onFrameTitleChanged(void*, Evas_Object* frame, void* eventInfo)
-{
- const Ewk_Text_With_Direction* titleText = static_cast<const Ewk_Text_With_Direction*>(eventInfo);
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didReceiveTitle: %s\n", frameName.utf8().data(), (titleText && titleText->string) ? titleText->string : "");
- }
-
- if (!done && gTestRunner->dumpTitleChanges())
- printf("TITLE CHANGED: '%s'\n", (titleText && titleText->string) ? titleText->string : "");
-
- if (!done && gTestRunner->dumpHistoryDelegateCallbacks())
- printf("WebView updated the title for history URL \"%s\" to \"%s\".\n", ewk_frame_uri_get(frame)
- , (titleText && titleText->string) ? titleText->string : "");
-
- gTestRunner->setTitleTextDirection(titleText->direction == EWK_TEXT_DIRECTION_LEFT_TO_RIGHT ? "ltr" : "rtl");
-}
-
-void DumpRenderTreeChrome::onDocumentLoadFinished(void*, Evas_Object*, void* eventInfo)
-{
- const Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFinishDocumentLoadForFrame\n", frameName.utf8().data());
- else if (!done) {
- const unsigned pendingFrameUnloadEvents = DumpRenderTreeSupportEfl::pendingUnloadEventCount(frame);
- if (pendingFrameUnloadEvents)
- printf("%s - has %u onunload handler(s)\n", frameName.utf8().data(), pendingFrameUnloadEvents);
- }
-}
-
-void DumpRenderTreeChrome::onWillSendRequest(void*, Evas_Object*, void* eventInfo)
-{
- Ewk_Frame_Resource_Messages* messages = static_cast<Ewk_Frame_Resource_Messages*>(eventInfo);
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- printf("%s - willSendRequest %s redirectResponse %s\n",
- m_dumpAssignedUrls.contains(messages->request->identifier) ? m_dumpAssignedUrls.get(messages->request->identifier).data() : "<unknown>",
- descriptionSuitableForTestResult(messages->request).data(),
- descriptionSuitableForTestResult(messages->redirect_response).data());
-
- if (!done && gTestRunner->willSendRequestReturnsNull()) {
- // As requested by the TestRunner, don't perform the request.
- messages->request->url = 0;
- return;
- }
-
- if (!done && gTestRunner->willSendRequestReturnsNullOnRedirect() && messages->redirect_response) {
- printf("Returning null for this redirect\n");
- messages->request->url = 0;
- return;
- }
-
- KURL url = KURL(ParsedURLString, messages->request->url);
-
- if (url.isValid()
- && url.protocolIsInHTTPFamily()
- && url.host() != "127.0.0.1"
- && url.host() != "255.255.255.255"
- && url.host().lower() != "localhost") {
- printf("Blocked access to external URL %s\n", messages->request->url);
- messages->request->url = 0;
- return;
- }
-
- const std::string& destination = gTestRunner->redirectionDestinationForURL(url.string().utf8().data());
- if (destination.length())
- messages->request->url = strdup(destination.c_str());
-}
-
-void DumpRenderTreeChrome::onWebViewOnloadEvent(void*, Evas_Object*, void* eventInfo)
-{
- const Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didHandleOnloadEventsForFrame\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onInsecureContentRun(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didRunInsecureContent\n");
-}
-
-void DumpRenderTreeChrome::onInsecureContentDisplayed(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didDisplayInsecureContent\n");
-}
-
-void DumpRenderTreeChrome::onFrameCreated(void*, Evas_Object*, void* eventInfo)
-{
- Evas_Object* frame = static_cast<Evas_Object*>(eventInfo);
-
- evas_object_smart_callback_add(frame, "icon,changed", onFrameIconChanged, 0);
- evas_object_smart_callback_add(frame, "load,provisional", onFrameProvisionalLoad, 0);
- evas_object_smart_callback_add(frame, "load,provisional,failed", onFrameProvisionalLoadFailed, 0);
- evas_object_smart_callback_add(frame, "load,committed", onFrameLoadCommitted, 0);
- evas_object_smart_callback_add(frame, "load,finished", onFrameLoadFinished, 0);
- evas_object_smart_callback_add(frame, "load,error", onFrameLoadError, 0);
- evas_object_smart_callback_add(frame, "redirect,cancelled", onFrameRedirectCancelled, 0);
- evas_object_smart_callback_add(frame, "redirect,load,provisional", onFrameRedirectForProvisionalLoad, 0);
- evas_object_smart_callback_add(frame, "redirect,requested", onFrameRedirectRequested, 0);
- evas_object_smart_callback_add(frame, "title,changed", onFrameTitleChanged, 0);
- evas_object_smart_callback_add(frame, "xss,detected", onDidDetectXSS, 0);
-}
-
-void DumpRenderTreeChrome::onWebViewNavigatedWithData(void*, Evas_Object*, void* eventInfo)
-{
- if (done || !gTestRunner->dumpHistoryDelegateCallbacks())
- return;
-
- ASSERT(eventInfo);
- const Ewk_View_Navigation_Data* navigationData = static_cast<Ewk_View_Navigation_Data*>(eventInfo);
-
- ASSERT(navigationData->request);
- ASSERT(navigationData->response);
-
- const bool wasFailure = navigationData->has_substitute_data || navigationData->response->status_code >= 400;
- const bool wasRedirected = navigationData->client_redirect_source && *(navigationData->client_redirect_source);
-
- printf("WebView navigated to url \"%s\" with title \"%s\" with HTTP equivalent method \"%s\". The navigation was %s and was %s%s.\n",
- navigationData->url,
- navigationData->title,
- navigationData->request->http_method,
- wasFailure? "a failure" : "successful",
- (wasRedirected ? "a client redirect from " : "not a client redirect"),
- (wasRedirected ? navigationData->client_redirect_source : ""));
-}
-
-void DumpRenderTreeChrome::onWebViewServerRedirect(void*, Evas_Object*, void* eventInfo)
-{
- if (done || !gTestRunner->dumpHistoryDelegateCallbacks())
- return;
-
- ASSERT(eventInfo);
- const Ewk_View_Redirection_Data* data = static_cast<Ewk_View_Redirection_Data*>(eventInfo);
- printf("WebView performed a server redirect from \"%s\" to \"%s\".\n", data->source_url, data->destination_url);
-}
-
-void DumpRenderTreeChrome::onWebViewClientRedirect(void*, Evas_Object*, void* eventInfo)
-{
- if (done || !gTestRunner->dumpHistoryDelegateCallbacks())
- return;
-
- ASSERT(eventInfo);
- const Ewk_View_Redirection_Data* data = static_cast<Ewk_View_Redirection_Data*>(eventInfo);
- printf("WebView performed a client redirect from \"%s\" to \"%s\".\n", data->source_url, data->destination_url);
-}
-
-void DumpRenderTreeChrome::onWebViewPopulateVisitedLinks(void*, Evas_Object* ewkView, void*)
-{
- if (done || !gTestRunner->dumpHistoryDelegateCallbacks())
- return;
-
- printf("Asked to populate visited links for WebView \"%s\"\n", ewk_view_uri_get(ewkView));
-}
-
-void DumpRenderTreeChrome::onInspectorViewCreate(void*, Evas_Object*, void*)
-{
- Evas_Object* inspectorView = browser->createInspectorView();
- if (inspectorView)
- ewk_view_inspector_view_set(browser->mainView(), inspectorView);
-}
-
-void DumpRenderTreeChrome::onInspectorViewClose(void*, Evas_Object*, void*)
-{
- browser->removeInspectorView();
-}
-
-void DumpRenderTreeChrome::onInspectorFrameLoadFinished(void*, Evas_Object*, void*)
-{
- Evas_Object* inspectorView = ewk_view_inspector_view_get(browser->mainView());
- if (inspectorView)
- ecore_main_loop_quit();
-}
-
-void DumpRenderTreeChrome::onFrameProvisionalLoad(void*, Evas_Object* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didStartProvisionalLoadForFrame\n", frameName.utf8().data());
- }
-
- if (!topLoadingFrame && !done)
- topLoadingFrame = frame;
-
- if (!done && gTestRunner->stopProvisionalFrameLoads()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - stopping load in didStartProvisionalLoadForFrame callback\n", frameName.utf8().data());
- ewk_frame_stop(frame);
- }
-}
-
-void DumpRenderTreeChrome::onFrameProvisionalLoadFailed(void*, Evas_Object* frame, void*)
-{
- m_provisionalLoadFailedFrame = frame;
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didFailProvisionalLoadWithError\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onFrameLoadCommitted(void*, Evas_Object* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didCommitLoadForFrame\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onFrameLoadFinished(void*, Evas_Object* frame, void* eventInfo)
-{
- const Ewk_Frame_Load_Error* error = static_cast<Ewk_Frame_Load_Error*>(eventInfo);
-
- // EFL port emits both "load,finished" and "load,error" signals in error case.
- // Error case is therefore already handled in onFrameLoadError() and we don't need
- // to handle it here.
- if (error)
- return;
-
- if (!done && gTestRunner->dumpProgressFinishedCallback())
- printf("postProgressFinishedNotification\n");
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didFinishLoadForFrame\n", frameName.utf8().data());
- }
-
- if (frame == topLoadingFrame)
- topLoadingFrameLoadFinished();
-}
-
-void DumpRenderTreeChrome::onFrameLoadError(void*, Evas_Object* frame, void*)
-{
- // In case of provisional load error, we receive both "load,error" and "load,provisional,failed"
- // signals. m_provisionalLoadFailedFrame is used to avoid printing twice the load error: in
- // onFrameProvisionalLoadFailed() and onFrameLoadError().
- if (!done && gTestRunner->dumpFrameLoadCallbacks() && frame != m_provisionalLoadFailedFrame) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didFailLoadWithError\n", frameName.utf8().data());
- }
-
- if (m_provisionalLoadFailedFrame && frame == m_provisionalLoadFailedFrame)
- m_provisionalLoadFailedFrame = 0;
-
- if (frame == topLoadingFrame)
- topLoadingFrameLoadFinished();
-}
-
-void DumpRenderTreeChrome::onFrameRedirectCancelled(void*, Evas_Object* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didCancelClientRedirectForFrame\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onFrameRedirectForProvisionalLoad(void*, Evas_Object* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - didReceiveServerRedirectForProvisionalLoadForFrame\n", frameName.utf8().data());
- }
-}
-
-void DumpRenderTreeChrome::onFrameRedirectRequested(void*, Evas_Object* frame, void* eventInfo)
-{
- const char* url = static_cast<const char*>(eventInfo);
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- const String frameName(DumpRenderTreeSupportEfl::suitableDRTFrameName(frame));
- printf("%s - willPerformClientRedirectToURL: %s \n", frameName.utf8().data(), pathSuitableForTestResult(url).data());
- }
-}
-
-void DumpRenderTreeChrome::onDidDetectXSS(void*, Evas_Object* view, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didDetectXSS\n");
-}
-
-void DumpRenderTreeChrome::onResponseReceived(void*, Evas_Object*, void* eventInfo)
-{
- Ewk_Frame_Resource_Response* response = static_cast<Ewk_Frame_Resource_Response*>(eventInfo);
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- CString responseDescription(descriptionSuitableForTestResult(response));
- printf("%s - didReceiveResponse %s\n",
- m_dumpAssignedUrls.contains(response->identifier) ? m_dumpAssignedUrls.get(response->identifier).data() : "<unknown>",
- responseDescription.data());
- }
-
- if (!done && gTestRunner->dumpResourceResponseMIMETypes()) {
- printf("%s has MIME type %s\n",
- KURL(ParsedURLString, response->url).lastPathComponent().utf8().data(),
- response->mime_type);
- }
-}
-
-void DumpRenderTreeChrome::onResourceLoadFinished(void*, Evas_Object*, void* eventInfo)
-{
- unsigned long identifier = *static_cast<unsigned long*>(eventInfo);
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- printf("%s - didFinishLoading\n",
- (m_dumpAssignedUrls.contains(identifier) ? m_dumpAssignedUrls.take(identifier).data() : "<unknown>"));
-}
-
-void DumpRenderTreeChrome::onResourceLoadFailed(void*, Evas_Object*, void* eventInfo)
-{
- Ewk_Frame_Load_Error* error = static_cast<Ewk_Frame_Load_Error*>(eventInfo);
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- printf("%s - didFailLoadingWithError: %s\n",
- (m_dumpAssignedUrls.contains(error->resource_identifier) ? m_dumpAssignedUrls.take(error->resource_identifier).data() : "<unknown>"),
- descriptionSuitableForTestResult(error).data());
-}
-
-void DumpRenderTreeChrome::onNewResourceRequest(void*, Evas_Object*, void* eventInfo)
-{
- Ewk_Frame_Resource_Request* request = static_cast<Ewk_Frame_Resource_Request*>(eventInfo);
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- m_dumpAssignedUrls.add(request->identifier, pathSuitableForTestResult(request->url));
-}
-
-void DumpRenderTreeChrome::onDownloadRequest(void*, Evas_Object*, void* eventInfo)
-{
- // In case of "download,request", the URL need to be downloaded, not opened on the current view.
- // Because there is no download agent for the DumpRenderTree,
- // create a new view and load the URL on that view just for a test.
- Evas_Object* newView = browser->createView();
- if (!newView)
- return;
-
- Ewk_Download* download = static_cast<Ewk_Download*>(eventInfo);
- ewk_view_theme_set(newView, TEST_THEME_DIR "/default.edj");
- ewk_view_uri_set(newView, download->url);
-
- browser->m_extraViews.append(newView);
-}
-
-#if HAVE(ACCESSIBILITY)
-AccessibilityController* DumpRenderTreeChrome::accessibilityController() const
-{
- return m_axController.get();
-}
-#endif
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h b/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h
deleted file mode 100644
index 836596561..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeChrome.h
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation
- *
- * 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 COPYRIGHT HOLDERS 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 THE COPYRIGHT
- * HOLDERS 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 DumpRenderTreeChrome_h
-#define DumpRenderTreeChrome_h
-
-#include "GCController.h"
-
-#include <Eina.h>
-#include <Evas.h>
-#include <wtf/HashMap.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/Vector.h>
-#include <wtf/text/CString.h>
-
-#if HAVE(ACCESSIBILITY)
-#include "AccessibilityController.h"
-#endif
-
-class DumpRenderTreeChrome {
-public:
- ~DumpRenderTreeChrome();
-
- static PassOwnPtr<DumpRenderTreeChrome> create(Evas*);
-
- Evas_Object* createNewWindow();
- void removeWindow(Evas_Object*);
-
- Evas_Object* createInspectorView();
- void removeInspectorView();
- void waitInspectorLoadFinished();
-
- const Vector<Evas_Object*>& extraViews() const;
- void clearExtraViews();
-
- Evas_Object* mainFrame() const;
- Evas_Object* mainView() const;
-
- void resetDefaultsToConsistentValues();
-
-private:
- DumpRenderTreeChrome(Evas*);
-
- Evas_Object* createView() const;
- bool initialize();
-#if HAVE(ACCESSIBILITY)
- AccessibilityController* accessibilityController() const;
- OwnPtr<AccessibilityController> m_axController;
-#endif
- Evas_Object* m_mainFrame;
- Evas_Object* m_mainView;
- Evas* m_evas;
- OwnPtr<GCController> m_gcController;
- Vector<Evas_Object*> m_extraViews;
- static HashMap<unsigned long, CString> m_dumpAssignedUrls;
- static Evas_Object* m_provisionalLoadFailedFrame;
-
- // Smart callbacks
- static void onWindowObjectCleared(void*, Evas_Object*, void*);
- static void onLoadStarted(void*, Evas_Object*, void*);
-
- static Eina_Bool processWork(void*);
-
- static void topLoadingFrameLoadFinished();
-
- static void onStatusbarTextSet(void*, Evas_Object*, void*);
-
- static void onFrameTitleChanged(void*, Evas_Object*, void*);
-
- static void onDocumentLoadFinished(void*, Evas_Object*, void*);
-
- static void onWillSendRequest(void*, Evas_Object*, void*);
-
- static void onWebViewOnloadEvent(void*, Evas_Object*, void*);
-
- static void onWebViewNavigatedWithData(void*, Evas_Object*, void*);
-
- static void onWebViewServerRedirect(void*, Evas_Object*, void*);
-
- static void onWebViewClientRedirect(void*, Evas_Object*, void*);
-
- static void onWebViewPopulateVisitedLinks(void*, Evas_Object*, void*);
-
- static void onInsecureContentRun(void*, Evas_Object*, void*);
-
- static void onInsecureContentDisplayed(void*, Evas_Object*, void*);
-
- static void onFrameCreated(void*, Evas_Object*, void*);
-
- static void onInspectorViewCreate(void*, Evas_Object*, void*);
-
- static void onInspectorViewClose(void*, Evas_Object*, void*);
-
- static void onInspectorFrameLoadFinished(void*, Evas_Object*, void*);
-
- static void onFrameIconChanged(void*, Evas_Object*, void*);
-
- static void onFrameProvisionalLoad(void*, Evas_Object*, void*);
- static void onFrameProvisionalLoadFailed(void*, Evas_Object*, void*);
-
- static void onFrameLoadCommitted(void*, Evas_Object*, void*);
-
- static void onFrameLoadFinished(void*, Evas_Object*, void*);
-
- static void onFrameRedirectCancelled(void*, Evas_Object*, void*);
- static void onFrameRedirectForProvisionalLoad(void*, Evas_Object*, void*);
- static void onFrameRedirectRequested(void*, Evas_Object*, void*);
-
- static void onFrameLoadError(void*, Evas_Object*, void*);
- static void onDidDetectXSS(void*, Evas_Object*, void*);
-
- static void onResponseReceived(void*, Evas_Object*, void*);
-
- static void onResourceLoadFinished(void*, Evas_Object*, void*);
-
- static void onResourceLoadFailed(void*, Evas_Object*, void*);
-
- static void onNewResourceRequest(void*, Evas_Object*, void*);
-
- static void onDownloadRequest(void*, Evas_Object*, void*);
-};
-
-#endif // DumpRenderTreeChrome_h
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeEfl.h b/Tools/DumpRenderTree/efl/DumpRenderTreeEfl.h
deleted file mode 100644
index ebc5cd35a..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeEfl.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. Red istributions 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 COPYRIGHT HOLDERS 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 THE COPYRIGHT
- * HOLDERS 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 DumpRenderTreeEfl_h
-#define DumpRenderTreeEfl_h
-
-#include <Ecore.h>
-#include <Evas.h>
-#include <wtf/OwnPtr.h>
-
-class DumpRenderTreeChrome;
-
-extern OwnPtr<DumpRenderTreeChrome> browser;
-extern Evas_Object* topLoadingFrame;
-extern bool waitForPolicy;
-extern bool policyDelegateEnabled;
-extern bool policyDelegatePermissive;
-extern Ecore_Timer* waitToDumpWatchdog;
-
-bool shouldSetWaitToDumpWatchdog();
-
-#endif /* DumpRenderTreeEfl_h */
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp b/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp
deleted file mode 100644
index f7b425c6e..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeView.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. Red istributions 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. 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 INC. 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.
- */
-
-#define __STDC_FORMAT_MACROS
-#include "config.h"
-#include "DumpRenderTreeView.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "DumpRenderTreeEfl.h"
-#include "TestRunner.h"
-#include <EWebKit.h>
-#include <Ecore.h>
-#include <Eina.h>
-#include <Evas.h>
-#include <cstdio>
-#include <cstdlib>
-#include <inttypes.h>
-#include <wtf/NotFound.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-
-using namespace std;
-
-static Ewk_View_Smart_Class gParentSmartClass = EWK_VIEW_SMART_CLASS_INIT_NULL;
-
-static WTF::String urlSuitableForTestResult(const WTF::String& uriString)
-{
- if (uriString.isEmpty() || !uriString.startsWith("file://"))
- return uriString;
-
- const size_t index = uriString.reverseFind('/');
- return (index == WTF::notFound) ? uriString : uriString.substring(index + 1);
-}
-
-static void onConsoleMessage(Ewk_View_Smart_Data* smartData, const char* message, unsigned lineNumber, const char*)
-{
- Evas_Object* evasObject = smartData->self;
- if (evas_object_data_get(evasObject, "ignore-console-messages"))
- return;
-
- // Tests expect only the filename part of local URIs
- WTF::String newMessage = WTF::String::fromUTF8(message);
- if (!newMessage.isEmpty()) {
- const size_t fileProtocol = newMessage.find("file://");
- if (fileProtocol != WTF::notFound)
- newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.substring(fileProtocol));
- }
-
- // Ignore simple translation-related messages and unnecessary messages
- if (newMessage.contains("Localized string") || newMessage.contains("Protocol Error: the message is for non-existing domain 'Profiler'"))
- return;
-
- printf("CONSOLE MESSAGE: ");
- if (lineNumber)
- printf("line %u: ", lineNumber);
- printf("%s\n", newMessage.utf8().data());
-}
-
-static void onJavaScriptAlert(Ewk_View_Smart_Data*, Evas_Object*, const char* message)
-{
- printf("ALERT: %s\n", message);
- fflush(stdout);
-}
-
-static Eina_Bool onJavaScriptConfirm(Ewk_View_Smart_Data*, Evas_Object*, const char* message)
-{
- printf("CONFIRM: %s\n", message);
- return EINA_TRUE;
-}
-
-static Eina_Bool onBeforeUnloadConfirm(Ewk_View_Smart_Data*, Evas_Object*, const char* message)
-{
- printf("CONFIRM NAVIGATION: %s\n", message);
- return !gTestRunner->shouldStayOnPageAfterHandlingBeforeUnload();
-}
-
-static Eina_Bool onJavaScriptPrompt(Ewk_View_Smart_Data*, Evas_Object*, const char* message, const char* defaultValue, const char** value)
-{
- printf("PROMPT: %s, default text: %s\n", message, defaultValue);
- *value = eina_stringshare_add(defaultValue);
- return EINA_TRUE;
-}
-
-static Evas_Object* onWindowCreate(Ewk_View_Smart_Data*, Eina_Bool, const Ewk_Window_Features*)
-{
- return gTestRunner->canOpenWindows() ? browser->createNewWindow() : 0;
-}
-
-static Eina_Bool onWindowCloseDelayed(void* data)
-{
- Evas_Object* view = static_cast<Evas_Object*>(data);
- browser->removeWindow(view);
- return EINA_FALSE;
-}
-
-static void onWindowClose(Ewk_View_Smart_Data* smartData)
-{
- Evas_Object* view = smartData->self;
- ecore_idler_add(onWindowCloseDelayed, view);
-}
-
-static uint64_t onExceededDatabaseQuota(Ewk_View_Smart_Data* smartData, Evas_Object* frame, const char* databaseName, uint64_t currentSize, uint64_t expectedSize)
-{
- if (!gTestRunner->dumpDatabaseCallbacks())
- return 0;
-
- Ewk_Security_Origin* origin = ewk_frame_security_origin_get(frame);
- printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n",
- ewk_security_origin_protocol_get(origin),
- ewk_security_origin_host_get(origin),
- ewk_security_origin_port_get(origin),
- databaseName);
- ewk_security_origin_free(origin);
-
- return 5 * 1024 * 1024;
-}
-
-static int64_t onExceededApplicationCacheQuota(Ewk_View_Smart_Data*, Ewk_Security_Origin *origin, int64_t defaultOriginQuota, int64_t totalSpaceNeeded)
-{
- if (gTestRunner->dumpApplicationCacheDelegateCallbacks()) {
- // For example, numbers from 30000 - 39999 will output as 30000.
- // Rounding up or down does not really matter for these tests. It's
- // sufficient to just get a range of 10000 to determine if we were
- // above or below a threshold.
- int64_t truncatedSpaceNeeded = (totalSpaceNeeded / 10000) * 10000;
- printf("UI DELEGATE APPLICATION CACHE CALLBACK: exceededApplicationCacheOriginQuotaForSecurityOrigin:{%s, %s, %i} totalSpaceNeeded:~%" PRId64 "\n",
- ewk_security_origin_protocol_get(origin),
- ewk_security_origin_host_get(origin),
- ewk_security_origin_port_get(origin),
- truncatedSpaceNeeded);
- }
-
- if (gTestRunner->disallowIncreaseForApplicationCacheQuota())
- return 0;
-
- return defaultOriginQuota;
-}
-
-static bool shouldUseTiledBackingStore()
-{
- const char* useTiledBackingStore = getenv("DRT_USE_TILED_BACKING_STORE");
- return useTiledBackingStore && *useTiledBackingStore == '1';
-}
-
-static bool chooseAndInitializeAppropriateSmartClass(Ewk_View_Smart_Class* api)
-{
- return !shouldUseTiledBackingStore() ? ewk_view_single_smart_set(api) : ewk_view_tiled_smart_set(api);
-}
-
-// Taken from the file "WebKit/Tools/DumpRenderTree/chromium/WebViewHost.cpp".
-static inline const char* navigationTypeToString(const Ewk_Navigation_Type type)
-{
- switch (type) {
- case EWK_NAVIGATION_TYPE_LINK_CLICKED:
- return "link clicked";
- case EWK_NAVIGATION_TYPE_FORM_SUBMITTED:
- return "form submitted";
- case EWK_NAVIGATION_TYPE_BACK_FORWARD:
- return "back/forward";
- case EWK_NAVIGATION_TYPE_RELOAD:
- return "reload";
- case EWK_NAVIGATION_TYPE_FORM_RESUBMITTED:
- return "form resubmitted";
- case EWK_NAVIGATION_TYPE_OTHER:
- return "other";
- }
- return "illegal value";
-}
-
-static Eina_Bool onNavigationPolicyDecision(Ewk_View_Smart_Data*, Ewk_Frame_Resource_Request* request, Ewk_Navigation_Type navigationType)
-{
- if (!policyDelegateEnabled)
- return true;
-
- printf("Policy delegate: attempt to load %s with navigation type '%s'\n", urlSuitableForTestResult(request->url).utf8().data(),
- navigationTypeToString(navigationType));
-
- if (gTestRunner)
- gTestRunner->notifyDone();
-
- return policyDelegatePermissive;
-}
-
-static Eina_Bool onFocusCanCycle(Ewk_View_Smart_Data*, Ewk_Focus_Direction)
-{
- // This is the behavior of Mac and Chromium ports and is expected by some test cases.
- return true;
-}
-
-Evas_Object* drtViewAdd(Evas* evas)
-{
- static Ewk_View_Smart_Class api = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("DRT_View");
-
- if (!chooseAndInitializeAppropriateSmartClass(&api))
- return 0;
-
- if (EINA_UNLIKELY(!gParentSmartClass.sc.add))
- ewk_view_base_smart_set(&gParentSmartClass);
-
- api.add_console_message = onConsoleMessage;
- api.run_javascript_alert = onJavaScriptAlert;
- api.run_javascript_confirm = onJavaScriptConfirm;
- api.run_before_unload_confirm = onBeforeUnloadConfirm;
- api.run_javascript_prompt = onJavaScriptPrompt;
- api.window_create = onWindowCreate;
- api.window_close = onWindowClose;
- api.exceeded_application_cache_quota = onExceededApplicationCacheQuota;
- api.exceeded_database_quota = onExceededDatabaseQuota;
- api.navigation_policy_decision = onNavigationPolicyDecision;
- api.focus_can_cycle = onFocusCanCycle;
-
- return evas_object_smart_add(evas, evas_smart_class_new(&api.sc));
-}
diff --git a/Tools/DumpRenderTree/efl/DumpRenderTreeView.h b/Tools/DumpRenderTree/efl/DumpRenderTreeView.h
deleted file mode 100644
index 72ddab56d..000000000
--- a/Tools/DumpRenderTree/efl/DumpRenderTreeView.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems. 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. Red istributions 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. 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 INC. 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 DumpRenderTreeView_h
-#define DumpRenderTreeView_h
-
-#include <Evas.h>
-
-Evas_Object* drtViewAdd(Evas*);
-
-#endif // DumpRenderTreeView_h
diff --git a/Tools/DumpRenderTree/efl/EditingCallbacks.cpp b/Tools/DumpRenderTree/efl/EditingCallbacks.cpp
deleted file mode 100644
index 7a03cddd1..000000000
--- a/Tools/DumpRenderTree/efl/EditingCallbacks.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 "EditingCallbacks.h"
-
-#include "DumpRenderTree.h"
-#include "EditorClientEfl.h"
-#include "EditorInsertAction.h"
-#include "Node.h"
-#include "Range.h"
-#include "StylePropertySet.h"
-#include "TestRunner.h"
-#include "TextAffinity.h"
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-
-static WTF::String dumpPath(WebCore::Node* node)
-{
- WebCore::Node* parent = node->parentNode();
- WTF::String str = WTF::String::format("%s", node->nodeName().utf8().data());
- if (parent) {
- str.append(" > ");
- str.append(dumpPath(parent));
- }
- return str;
-}
-
-static WTF::String dumpRange(WebCore::Range* range)
-{
- if (!range)
- return "(null)";
- return WTF::String::format("range from %d of %s to %d of %s", range->startOffset(), dumpPath(range->startContainer()).utf8().data(), range->endOffset(), dumpPath(range->endContainer()).utf8().data());
-}
-
-static const char* insertActionString(WebCore::EditorInsertAction action)
-{
- switch (action) {
- case WebCore::EditorInsertActionTyped:
- return "WebViewInsertActionTyped";
- case WebCore::EditorInsertActionPasted:
- return "WebViewInsertActionPasted";
- case WebCore::EditorInsertActionDropped:
- return "WebViewInsertActionDropped";
- }
- ASSERT_NOT_REACHED();
- return "WebViewInsertActionTyped";
-}
-
-static const char* selectionAffinityString(WebCore::EAffinity affinity)
-{
- switch (affinity) {
- case WebCore::UPSTREAM:
- return "NSSelectionAffinityUpstream";
- case WebCore::DOWNSTREAM:
- return "NSSelectionAffinityDownstream";
- }
- ASSERT_NOT_REACHED();
- return "NSSelectionAffinityUpstream";
-}
-
-void shouldBeginEditing(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- WebCore::Range* range = static_cast<WebCore::Range*>(eventInfo);
- printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", dumpRange(range).utf8().data());
- }
-}
-
-void shouldEndEditing(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- WebCore::Range* range = static_cast<WebCore::Range*>(eventInfo);
- printf("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n", dumpRange(range).utf8().data());
- }
-}
-
-void shouldInsertNode(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- Ewk_Should_Insert_Node_Event* shouldInsertNodeEvent = static_cast<Ewk_Should_Insert_Node_Event*>(eventInfo);
- printf("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n",
- dumpPath(shouldInsertNodeEvent->node).utf8().data(), dumpRange(shouldInsertNodeEvent->range).utf8().data(),
- insertActionString(shouldInsertNodeEvent->action));
- }
-}
-
-void shouldInsertText(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- Ewk_Should_Insert_Text_Event* shouldInsertTextEvent = static_cast<Ewk_Should_Insert_Text_Event*>(eventInfo);
- printf("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n",
- shouldInsertTextEvent->text, dumpRange(shouldInsertTextEvent->range).utf8().data(), insertActionString(shouldInsertTextEvent->action));
- }
-}
-
-void shouldDeleteRange(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- WebCore::Range* range = static_cast<WebCore::Range*>(eventInfo);
- printf("EDITING DELEGATE: shouldDeleteDOMRange:%s\n", dumpRange(range).utf8().data());
- }
-}
-
-void shouldChangeSelectedRange(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- Ewk_Should_Change_Selected_Range_Event* shouldChangeSelectedRangeEvent = static_cast<Ewk_Should_Change_Selected_Range_Event*>(eventInfo);
- printf("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n",
- dumpRange(shouldChangeSelectedRangeEvent->fromRange).utf8().data(), dumpRange(shouldChangeSelectedRangeEvent->toRange).utf8().data(),
- selectionAffinityString(shouldChangeSelectedRangeEvent->affinity), shouldChangeSelectedRangeEvent->stillSelecting ? "TRUE" : "FALSE");
- }
-}
-
-void shouldApplyStyle(void*, Evas_Object*, void* eventInfo)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- Ewk_Should_Apply_Style_Event* shouldApplyStyleEvent = static_cast<Ewk_Should_Apply_Style_Event*>(eventInfo);
- printf("EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n",
- shouldApplyStyleEvent->style->asText().utf8().data(), dumpRange(shouldApplyStyleEvent->range).utf8().data());
- }
-}
-
-void editingBegan(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification\n");
-}
-
-void userChangedContents(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n");
-}
-
-void editingEnded(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification\n");
-}
-
-void selectionChanged(void*, Evas_Object*, void*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n");
-}
-
-void connectEditingCallbacks(Evas_Object* webView)
-{
- evas_object_smart_callback_add(webView, "editorclient,editing,begin", shouldBeginEditing, 0);
- evas_object_smart_callback_add(webView, "editorclient,editing,end", shouldEndEditing, 0);
- evas_object_smart_callback_add(webView, "editorclient,node,insert", shouldInsertNode, 0);
- evas_object_smart_callback_add(webView, "editorclient,text,insert", shouldInsertText, 0);
- evas_object_smart_callback_add(webView, "editorclient,range,delete", shouldDeleteRange, 0);
- evas_object_smart_callback_add(webView, "editorclient,selected,range,change", shouldChangeSelectedRange, 0);
- evas_object_smart_callback_add(webView, "editorclient,style,apply", shouldApplyStyle, 0);
- evas_object_smart_callback_add(webView, "editorclient,editing,began", editingBegan, 0);
- evas_object_smart_callback_add(webView, "editorclient,contents,changed", userChangedContents, 0);
- evas_object_smart_callback_add(webView, "editorclient,editing,ended", editingEnded, 0);
- evas_object_smart_callback_add(webView, "editorclient,selection,changed", selectionChanged, 0);
-}
diff --git a/Tools/DumpRenderTree/efl/EditingCallbacks.h b/Tools/DumpRenderTree/efl/EditingCallbacks.h
deleted file mode 100644
index cf535e492..000000000
--- a/Tools/DumpRenderTree/efl/EditingCallbacks.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 EditingCallbacks_h
-#define EditingCallbacks_h
-
-#include <Evas.h>
-
-void connectEditingCallbacks(Evas_Object*);
-
-#endif
diff --git a/Tools/DumpRenderTree/efl/EventSender.cpp b/Tools/DumpRenderTree/efl/EventSender.cpp
deleted file mode 100644
index 92b788991..000000000
--- a/Tools/DumpRenderTree/efl/EventSender.cpp
+++ /dev/null
@@ -1,1035 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011, 2012 Samsung Electronics
- *
- * 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 "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "IntPoint.h"
-#include "JSStringUtils.h"
-#include "NotImplemented.h"
-#include "PlatformEvent.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "ewk_private.h"
-#include <EWebKit.h>
-#include <Ecore_Input.h>
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/OpaqueJSString.h>
-#include <wtf/ASCIICType.h>
-#include <wtf/Platform.h>
-#include <wtf/text/CString.h>
-
-static bool gDragMode;
-static int gTimeOffset = 0;
-
-static int gLastMousePositionX;
-static int gLastMousePositionY;
-static int gLastClickPositionX;
-static int gLastClickPositionY;
-static int gLastClickTimeOffset;
-static int gLastClickButton;
-static int gButtonCurrentlyDown;
-static int gClickCount;
-
-static const float zoomMultiplierRatio = 1.2f;
-
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
- DomKeyLocationStandard,
- DomKeyLocationLeft,
- DomKeyLocationRight,
- DomKeyLocationNumpad
-};
-
-enum EvasKeyModifier {
- EvasKeyModifierNone = 0,
- EvasKeyModifierControl = 1 << 0,
- EvasKeyModifierShift = 1 << 1,
- EvasKeyModifierAlt = 1 << 2,
- EvasKeyModifierMeta = 1 << 3
-};
-
-enum EvasMouseButton {
- EvasMouseButtonNone,
- EvasMouseButtonLeft,
- EvasMouseButtonMiddle,
- EvasMouseButtonRight
-};
-
-enum EvasMouseEvent {
- EvasMouseEventNone = 0,
- EvasMouseEventDown = 1 << 0,
- EvasMouseEventUp = 1 << 1,
- EvasMouseEventMove = 1 << 2,
- EvasMouseEventScrollUp = 1 << 3,
- EvasMouseEventScrollDown = 1 << 4,
- EvasMouseEventScrollLeft = 1 << 5,
- EvasMouseEventScrollRight = 1 << 6,
- EvasMouseEventClick = EvasMouseEventMove | EvasMouseEventDown | EvasMouseEventUp,
-};
-
-enum ZoomEvent {
- ZoomIn,
- ZoomOut
-};
-
-enum EventQueueStrategy {
- FeedQueuedEvents,
- DoNotFeedQueuedEvents
-};
-
-struct KeyEventInfo {
- KeyEventInfo(const CString& keyName, unsigned modifiers, const CString& keyString = CString())
- : keyName(keyName)
- , keyString(keyString)
- , modifiers(modifiers)
- {
- }
-
- const CString keyName;
- const CString keyString;
- unsigned modifiers;
-};
-
-struct MouseEventInfo {
- MouseEventInfo(EvasMouseEvent event, unsigned modifiers = EvasKeyModifierNone, EvasMouseButton button = EvasMouseButtonNone, int horizontalDelta = 0, int verticalDelta = 0)
- : event(event)
- , modifiers(modifiers)
- , button(button)
- , horizontalDelta(horizontalDelta)
- , verticalDelta(verticalDelta)
- {
- }
-
- EvasMouseEvent event;
- unsigned modifiers;
- EvasMouseButton button;
- int horizontalDelta;
- int verticalDelta;
-};
-
-struct DelayedEvent {
- DelayedEvent(MouseEventInfo* eventInfo, unsigned long delay = 0)
- : eventInfo(eventInfo)
- , delay(delay)
- {
- }
-
- MouseEventInfo* eventInfo;
- unsigned long delay;
-};
-
-struct TouchEventInfo {
- TouchEventInfo(unsigned id, Ewk_Touch_Point_Type state, const WebCore::IntPoint& point)
- : state(state)
- , point(point)
- , id(id)
- {
- }
-
- unsigned id;
- Ewk_Touch_Point_Type state;
- WebCore::IntPoint point;
-};
-
-static unsigned touchModifiers;
-
-WTF::Vector<TouchEventInfo>& touchPointList()
-{
- DEFINE_STATIC_LOCAL(WTF::Vector<TouchEventInfo>, staticTouchPointList, ());
- return staticTouchPointList;
-}
-
-WTF::Vector<DelayedEvent>& delayedEventQueue()
-{
- DEFINE_STATIC_LOCAL(WTF::Vector<DelayedEvent>, staticDelayedEventQueue, ());
- return staticDelayedEventQueue;
-}
-
-
-static void feedOrQueueMouseEvent(MouseEventInfo*, EventQueueStrategy);
-static void feedMouseEvent(MouseEventInfo*);
-static void feedQueuedMouseEvents();
-
-static void setEvasModifiers(Evas* evas, unsigned modifiers)
-{
- static const char* modifierNames[] = { "Control", "Shift", "Alt", "Super" };
- for (unsigned modifier = 0; modifier < 4; ++modifier) {
- if (modifiers & (1 << modifier))
- evas_key_modifier_on(evas, modifierNames[modifier]);
- else
- evas_key_modifier_off(evas, modifierNames[modifier]);
- }
-}
-
-static EvasMouseButton translateMouseButtonNumber(int eventSenderButtonNumber)
-{
- static const EvasMouseButton translationTable[] = {
- EvasMouseButtonLeft,
- EvasMouseButtonMiddle,
- EvasMouseButtonRight,
- EvasMouseButtonMiddle // fast/events/mouse-click-events expects the 4th button to be treated as the middle button
- };
- static const unsigned translationTableSize = sizeof(translationTable) / sizeof(translationTable[0]);
-
- if (eventSenderButtonNumber < translationTableSize)
- return translationTable[eventSenderButtonNumber];
-
- return EvasMouseButtonLeft;
-}
-
-static Eina_Bool sendClick(void*)
-{
- MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventClick, EvasKeyModifierNone, EvasMouseButtonLeft);
- feedOrQueueMouseEvent(eventInfo, FeedQueuedEvents);
- return ECORE_CALLBACK_CANCEL;
-}
-
-static JSValueRef scheduleAsynchronousClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- ecore_idler_add(sendClick, 0);
- return JSValueMakeUndefined(context);
-}
-
-static void updateClickCount(int button)
-{
- if (gLastClickPositionX != gLastMousePositionX
- || gLastClickPositionY != gLastMousePositionY
- || gLastClickButton != button
- || gTimeOffset - gLastClickTimeOffset >= 1)
- gClickCount = 1;
- else
- gClickCount++;
-}
-
-static EvasKeyModifier modifierFromJSValue(JSContextRef context, const JSValueRef value)
-{
- JSRetainPtr<JSStringRef> jsKeyValue(Adopt, JSValueToStringCopy(context, value, 0));
-
- if (equals(jsKeyValue, "ctrlKey") || equals(jsKeyValue, "addSelectionKey"))
- return EvasKeyModifierControl;
- if (equals(jsKeyValue, "shiftKey") || equals(jsKeyValue, "rangeSelectionKey"))
- return EvasKeyModifierShift;
- if (equals(jsKeyValue, "altKey"))
- return EvasKeyModifierAlt;
- if (equals(jsKeyValue, "metaKey"))
- return EvasKeyModifierMeta;
-
- return EvasKeyModifierNone;
-}
-
-static unsigned modifiersFromJSValue(JSContextRef context, const JSValueRef modifiers)
-{
- // The value may either be a string with a single modifier or an array of modifiers.
- if (JSValueIsString(context, modifiers))
- return modifierFromJSValue(context, modifiers);
-
- JSObjectRef modifiersArray = JSValueToObject(context, modifiers, 0);
- if (!modifiersArray)
- return EvasKeyModifierNone;
-
- unsigned modifier = EvasKeyModifierNone;
- JSRetainPtr<JSStringRef> lengthProperty(Adopt, JSStringCreateWithUTF8CString("length"));
- int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty.get(), 0), 0);
- for (int i = 0; i < modifiersCount; ++i)
- modifier |= modifierFromJSValue(context, JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0));
- return modifier;
-}
-
-static JSValueRef getMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
- Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(JSObjectGetPrivate(object));
- CString label;
- if (ewk_context_menu_item_type_get(item) == EWK_SEPARATOR_TYPE)
- label = "<separator>";
- else
- label = ewk_context_menu_item_title_get(item);
-
- return JSValueMakeString(context, JSStringCreateWithUTF8CString(label.data()));
-}
-
-static bool setMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
- return true;
-}
-
-static JSValueRef menuItemClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- Ewk_Context_Menu_Item* item = static_cast<Ewk_Context_Menu_Item*>(JSObjectGetPrivate(thisObject));
- ewk_context_menu_item_select(ewk_context_menu_item_parent_get(item), item);
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticMenuItemFunctions[] = {
- { "click", menuItemClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticMenuItemValues[] = {
- { "title", getMenuItemTitleCallback, setMenuItemTitleCallback, kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getMenuItemClass()
-{
- static JSClassRef menuItemClass = 0;
-
- if (!menuItemClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticMenuItemFunctions;
- classDefinition.staticValues = staticMenuItemValues;
-
- menuItemClass = JSClassCreate(&classDefinition);
- }
-
- return menuItemClass;
-}
-
-static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
- if (!view)
- return JSValueMakeUndefined(context);
-
- Evas* evas = evas_object_evas_get(view);
- if (!evas)
- return JSValueMakeUndefined(context);
-
- Evas_Event_Mouse_Down mouseDown;
- mouseDown.button = 3;
- mouseDown.output.x = gLastMousePositionX;
- mouseDown.output.y = gLastMousePositionY;
- mouseDown.canvas.x = gLastMousePositionX;
- mouseDown.canvas.y = gLastMousePositionY;
- mouseDown.data = 0;
- mouseDown.modifiers = const_cast<Evas_Modifier*>(evas_key_modifier_get(evas));
- mouseDown.locks = const_cast<Evas_Lock*>(evas_key_lock_get(evas));
- mouseDown.flags = EVAS_BUTTON_NONE;
- mouseDown.timestamp = ecore_loop_time_get();
- mouseDown.event_flags = EVAS_EVENT_FLAG_NONE;
- mouseDown.dev = 0;
-
- ewk_view_context_menu_forward_event(view, &mouseDown);
- Ewk_Context_Menu* ewkMenu = ewk_view_context_menu_get(view);
-
- JSValueRef valueRef = JSObjectMakeArray(context, 0, 0, 0);
- if (ewkMenu) {
- const Eina_List* ewkMenuItems = ewk_context_menu_item_list_get(ewkMenu);
- JSValueRef arrayValues[eina_list_count(ewkMenuItems)];
-
- const Eina_List* listIterator;
- void* data;
- int index = 0;
- EINA_LIST_FOREACH(ewkMenuItems, listIterator, data)
- arrayValues[index++] = JSObjectMake(context, getMenuItemClass(), data);
-
- if (index)
- valueRef = JSObjectMakeArray(context, index - 1, arrayValues, 0);
- }
-
- return valueRef;
-}
-
-static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int button = 0;
- if (argumentCount == 1) {
- button = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
-
- if (exception && *exception)
- return JSValueMakeUndefined(context);
- }
-
- button = translateMouseButtonNumber(button);
- // If the same mouse button is already in the down position don't send another event as it may confuse Xvfb.
- if (gButtonCurrentlyDown == button)
- return JSValueMakeUndefined(context);
-
- updateClickCount(button);
-
- unsigned modifiers = argumentCount >= 2 ? modifiersFromJSValue(context, arguments[1]) : EvasKeyModifierNone;
- MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventDown, modifiers, static_cast<EvasMouseButton>(button));
- feedOrQueueMouseEvent(eventInfo, FeedQueuedEvents);
- gButtonCurrentlyDown = button;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int button = 0;
- if (argumentCount == 1) {
- button = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- if (exception && *exception)
- return JSValueMakeUndefined(context);
- }
-
- gLastClickPositionX = gLastMousePositionX;
- gLastClickPositionY = gLastMousePositionY;
- gLastClickButton = gButtonCurrentlyDown;
- gLastClickTimeOffset = gTimeOffset;
- gButtonCurrentlyDown = 0;
-
- unsigned modifiers = argumentCount >= 2 ? modifiersFromJSValue(context, arguments[1]) : EvasKeyModifierNone;
- MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventUp, modifiers, translateMouseButtonNumber(button));
- feedOrQueueMouseEvent(eventInfo, FeedQueuedEvents);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- gLastMousePositionX = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- if (exception && *exception)
- return JSValueMakeUndefined(context);
- gLastMousePositionY = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- if (exception && *exception)
- return JSValueMakeUndefined(context);
-
- MouseEventInfo* eventInfo = new MouseEventInfo(EvasMouseEventMove);
- feedOrQueueMouseEvent(eventInfo, DoNotFeedQueuedEvents);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef leapForwardCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount > 0) {
- const unsigned long leapForwardDelay = JSValueToNumber(context, arguments[0], exception);
- if (delayedEventQueue().isEmpty())
- delayedEventQueue().append(DelayedEvent(0, leapForwardDelay));
- else
- delayedEventQueue().last().delay = leapForwardDelay;
- gTimeOffset += leapForwardDelay;
- }
-
- return JSValueMakeUndefined(context);
-}
-
-static EvasMouseEvent evasMouseEventFromHorizontalAndVerticalOffsets(int horizontalOffset, int verticalOffset)
-{
- unsigned mouseEvent = 0;
-
- if (verticalOffset > 0)
- mouseEvent |= EvasMouseEventScrollUp;
- else if (verticalOffset < 0)
- mouseEvent |= EvasMouseEventScrollDown;
-
- if (horizontalOffset > 0)
- mouseEvent |= EvasMouseEventScrollRight;
- else if (horizontalOffset < 0)
- mouseEvent |= EvasMouseEventScrollLeft;
-
- return static_cast<EvasMouseEvent>(mouseEvent);
-}
-
-static JSValueRef mouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- // We need to invert scrolling values since in EFL negative z value means that
- // canvas is scrolling down
- const int horizontal = -(static_cast<int>(JSValueToNumber(context, arguments[0], exception)));
- if (exception && *exception)
- return JSValueMakeUndefined(context);
- const int vertical = -(static_cast<int>(JSValueToNumber(context, arguments[1], exception)));
- if (exception && *exception)
- return JSValueMakeUndefined(context);
-
- MouseEventInfo* eventInfo = new MouseEventInfo(evasMouseEventFromHorizontalAndVerticalOffsets(horizontal, vertical), EvasKeyModifierNone, EvasMouseButtonNone, horizontal, vertical);
- feedOrQueueMouseEvent(eventInfo, FeedQueuedEvents);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef continuousMouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- return JSValueMakeUndefined(context);
-}
-
-static KeyEventInfo* keyPadNameFromJSValue(JSStringRef character, unsigned modifiers)
-{
- if (equals(character, "leftArrow"))
- return new KeyEventInfo("KP_Left", modifiers);
- if (equals(character, "rightArrow"))
- return new KeyEventInfo("KP_Right", modifiers);
- if (equals(character, "upArrow"))
- return new KeyEventInfo("KP_Up", modifiers);
- if (equals(character, "downArrow"))
- return new KeyEventInfo("KP_Down", modifiers);
- if (equals(character, "pageUp"))
- return new KeyEventInfo("KP_Prior", modifiers);
- if (equals(character, "pageDown"))
- return new KeyEventInfo("KP_Next", modifiers);
- if (equals(character, "home"))
- return new KeyEventInfo("KP_Home", modifiers);
- if (equals(character, "end"))
- return new KeyEventInfo("KP_End", modifiers);
- if (equals(character, "insert"))
- return new KeyEventInfo("KP_Insert", modifiers);
- if (equals(character, "delete"))
- return new KeyEventInfo("KP_Delete", modifiers);
-
- return new KeyEventInfo(character->string().utf8(), modifiers, character->string().utf8());
-}
-
-static KeyEventInfo* keyNameFromJSValue(JSStringRef character, unsigned modifiers)
-{
- if (equals(character, "leftArrow"))
- return new KeyEventInfo("Left", modifiers);
- if (equals(character, "rightArrow"))
- return new KeyEventInfo("Right", modifiers);
- if (equals(character, "upArrow"))
- return new KeyEventInfo("Up", modifiers);
- if (equals(character, "downArrow"))
- return new KeyEventInfo("Down", modifiers);
- if (equals(character, "pageUp"))
- return new KeyEventInfo("Prior", modifiers);
- if (equals(character, "pageDown"))
- return new KeyEventInfo("Next", modifiers);
- if (equals(character, "home"))
- return new KeyEventInfo("Home", modifiers);
- if (equals(character, "end"))
- return new KeyEventInfo("End", modifiers);
- if (equals(character, "insert"))
- return new KeyEventInfo("Insert", modifiers);
- if (equals(character, "delete"))
- return new KeyEventInfo("Delete", modifiers);
- if (equals(character, "printScreen"))
- return new KeyEventInfo("Print", modifiers);
- if (equals(character, "menu"))
- return new KeyEventInfo("Menu", modifiers);
- if (equals(character, "leftControl"))
- return new KeyEventInfo("Control_L", modifiers);
- if (equals(character, "rightControl"))
- return new KeyEventInfo("Control_R", modifiers);
- if (equals(character, "leftShift"))
- return new KeyEventInfo("Shift_L", modifiers);
- if (equals(character, "rightShift"))
- return new KeyEventInfo("Shift_R", modifiers);
- if (equals(character, "leftAlt"))
- return new KeyEventInfo("Alt_L", modifiers);
- if (equals(character, "rightAlt"))
- return new KeyEventInfo("Alt_R", modifiers);
- if (equals(character, "F1"))
- return new KeyEventInfo("F1", modifiers);
- if (equals(character, "F2"))
- return new KeyEventInfo("F2", modifiers);
- if (equals(character, "F3"))
- return new KeyEventInfo("F3", modifiers);
- if (equals(character, "F4"))
- return new KeyEventInfo("F4", modifiers);
- if (equals(character, "F5"))
- return new KeyEventInfo("F5", modifiers);
- if (equals(character, "F6"))
- return new KeyEventInfo("F6", modifiers);
- if (equals(character, "F7"))
- return new KeyEventInfo("F7", modifiers);
- if (equals(character, "F8"))
- return new KeyEventInfo("F8", modifiers);
- if (equals(character, "F9"))
- return new KeyEventInfo("F9", modifiers);
- if (equals(character, "F10"))
- return new KeyEventInfo("F10", modifiers);
- if (equals(character, "F11"))
- return new KeyEventInfo("F11", modifiers);
- if (equals(character, "F12"))
- return new KeyEventInfo("F12", modifiers);
-
- int charCode = JSStringGetCharactersPtr(character)[0];
- if (charCode == '\n' || charCode == '\r')
- return new KeyEventInfo("Return", modifiers, "\r");
- if (charCode == '\t')
- return new KeyEventInfo("Tab", modifiers, "\t");
- if (charCode == '\x8')
- return new KeyEventInfo("BackSpace", modifiers, "\x8");
- if (charCode == ' ')
- return new KeyEventInfo("space", modifiers, " ");
- if (charCode == '\x1B')
- return new KeyEventInfo("Escape", modifiers, "\x1B");
-
- if ((character->length() == 1) && (charCode >= 'A' && charCode <= 'Z'))
- modifiers |= EvasKeyModifierShift;
-
- return new KeyEventInfo(character->string().utf8(), modifiers, character->string().utf8());
-}
-
-static KeyEventInfo* createKeyEventInfo(JSContextRef context, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!ewk_frame_view_get(browser->mainFrame()))
- return 0;
-
- if (argumentCount < 1)
- return 0;
-
- // handle location argument.
- int location = DomKeyLocationStandard;
- if (argumentCount > 2)
- location = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
-
- JSRetainPtr<JSStringRef> character(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- if (exception && *exception)
- return 0;
-
- unsigned modifiers = EvasKeyModifierNone;
- if (argumentCount >= 2)
- modifiers = modifiersFromJSValue(context, arguments[1]);
-
- return (location == DomKeyLocationNumpad) ? keyPadNameFromJSValue(character.get(), modifiers) : keyNameFromJSValue(character.get(), modifiers);
-}
-
-static void sendKeyDown(Evas* evas, KeyEventInfo* keyEventInfo)
-{
- if (!keyEventInfo)
- return;
-
- const char* keyName = keyEventInfo->keyName.data();
- const char* keyString = keyEventInfo->keyString.data();
- unsigned modifiers = keyEventInfo->modifiers;
-
- DumpRenderTreeSupportEfl::layoutFrame(browser->mainFrame());
-
- ASSERT(evas);
-
- int eventIndex = 0;
- // Mimic the emacs ctrl-o binding by inserting a paragraph
- // separator and then putting the cursor back to its original
- // position. Allows us to pass emacs-ctrl-o.html
- if ((modifiers & EvasKeyModifierControl) && !strcmp(keyName, "o")) {
- setEvasModifiers(evas, EvasKeyModifierNone);
- evas_event_feed_key_down(evas, "Return", "Return", "\r", 0, eventIndex++, 0);
- evas_event_feed_key_up(evas, "Return", "Return", "\r", 0, eventIndex++, 0);
-
- modifiers = EvasKeyModifierNone;
- keyName = "Left";
- keyString = 0;
- }
-
- setEvasModifiers(evas, modifiers);
- evas_event_feed_key_down(evas, keyName, keyName, keyString, 0, eventIndex++, 0);
- evas_event_feed_key_up(evas, keyName, keyName, keyString, 0, eventIndex++, 0);
- setEvasModifiers(evas, EvasKeyModifierNone);
-
- DumpRenderTreeSupportEfl::deliverAllMutationsIfNecessary();
-}
-
-static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- OwnPtr<KeyEventInfo> keyEventInfo = adoptPtr(createKeyEventInfo(context, argumentCount, arguments, exception));
- sendKeyDown(evas_object_evas_get(browser->mainFrame()), keyEventInfo.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef scalePageByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
- if (!view)
- return JSValueMakeUndefined(context);
-
- float scaleFactor = JSValueToNumber(context, arguments[0], exception);
- float x = JSValueToNumber(context, arguments[1], exception);
- float y = JSValueToNumber(context, arguments[2], exception);
- ewk_view_scale_set(view, scaleFactor, x, y);
-
- return JSValueMakeUndefined(context);
-}
-
-static void textZoom(ZoomEvent zoomEvent)
-{
- Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
- if (!view)
- return;
-
- float zoomFactor = ewk_view_text_zoom_get(view);
- if (zoomEvent == ZoomIn)
- zoomFactor *= zoomMultiplierRatio;
- else
- zoomFactor /= zoomMultiplierRatio;
-
- ewk_view_text_zoom_set(view, zoomFactor);
-}
-
-static void pageZoom(ZoomEvent zoomEvent)
-{
- Evas_Object* view = ewk_frame_view_get(browser->mainFrame());
- if (!view)
- return;
-
- float zoomFactor = ewk_view_page_zoom_get(view);
- if (zoomEvent == ZoomIn)
- zoomFactor *= zoomMultiplierRatio;
- else
- zoomFactor /= zoomMultiplierRatio;
-
- ewk_view_page_zoom_set(view, zoomFactor);
-}
-
-static JSValueRef textZoomInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- textZoom(ZoomIn);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- textZoom(ZoomOut);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- pageZoom(ZoomIn);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- pageZoom(ZoomOut);
- return JSValueMakeUndefined(context);
-}
-
-static Eina_Bool sendAsynchronousKeyDown(void* userData)
-{
- OwnPtr<KeyEventInfo> keyEventInfo = adoptPtr(static_cast<KeyEventInfo*>(userData));
- sendKeyDown(evas_object_evas_get(browser->mainFrame()), keyEventInfo.get());
- return ECORE_CALLBACK_CANCEL;
-}
-
-static JSValueRef scheduleAsynchronousKeyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- KeyEventInfo* keyEventInfo = createKeyEventInfo(context, argumentCount, arguments, exception);
- ecore_idler_add(sendAsynchronousKeyDown, static_cast<void*>(keyEventInfo));
- return JSValueMakeUndefined(context);
-}
-
-static void sendTouchEvent(Ewk_Touch_Event_Type type)
-{
- Eina_List* eventList = 0;
-
- for (unsigned i = 0; i < touchPointList().size(); ++i) {
- Ewk_Touch_Point* event = new Ewk_Touch_Point;
- WebCore::IntPoint point = touchPointList().at(i).point;
- event->id = touchPointList().at(i).id;
- event->x = point.x();
- event->y = point.y();
- event->state = touchPointList().at(i).state;
- eventList = eina_list_append(eventList, event);
- }
-
- ewk_frame_feed_touch_event(browser->mainFrame(), type, eventList, touchModifiers);
-
- void* listData;
- EINA_LIST_FREE(eventList, listData) {
- Ewk_Touch_Point* event = static_cast<Ewk_Touch_Point*>(listData);
- delete event;
- }
-
- for (unsigned i = 0; i < touchPointList().size(); ) {
- if (touchPointList().at(i).state == EWK_TOUCH_POINT_RELEASED)
- touchPointList().remove(i);
- else {
- touchPointList().at(i).state = EWK_TOUCH_POINT_STATIONARY;
- ++i;
- }
- }
-}
-
-static JSValueRef addTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount != 2)
- return JSValueMakeUndefined(context);
-
- int x = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- int y = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
-
- const WebCore::IntPoint point(x, y);
- const unsigned id = touchPointList().isEmpty() ? 0 : touchPointList().last().id + 1;
- TouchEventInfo eventInfo(id, EWK_TOUCH_POINT_PRESSED, point);
- touchPointList().append(eventInfo);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchStartCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- sendTouchEvent(EWK_TOUCH_START);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef updateTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount != 3)
- return JSValueMakeUndefined(context);
-
- int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- int x = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
- int y = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
- ASSERT(!exception || !*exception);
-
- if (index < 0 || index >= touchPointList().size())
- return JSValueMakeUndefined(context);
-
- WebCore::IntPoint& point = touchPointList().at(index).point;
- point.setX(x);
- point.setY(y);
- touchPointList().at(index).state = EWK_TOUCH_POINT_MOVED;
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchMoveCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- sendTouchEvent(EWK_TOUCH_MOVE);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef cancelTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount != 1)
- return JSValueMakeUndefined(context);
-
- int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- if (index < 0 || index >= touchPointList().size())
- return JSValueMakeUndefined(context);
-
- touchPointList().at(index).state = EWK_TOUCH_POINT_CANCELLED;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchCancelCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- sendTouchEvent(EWK_TOUCH_CANCEL);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef releaseTouchPointCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount != 1)
- return JSValueMakeUndefined(context);
-
- int index = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
- if (index < 0 || index >= touchPointList().size())
- return JSValueMakeUndefined(context);
-
- touchPointList().at(index).state = EWK_TOUCH_POINT_RELEASED;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef touchEndCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- sendTouchEvent(EWK_TOUCH_END);
- touchModifiers = 0;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef clearTouchPointsCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- touchPointList().clear();
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef setTouchModifierCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount != 2)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> jsModifier(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- unsigned mask = 0;
-
- if (equals(jsModifier, "alt"))
- mask |= ECORE_EVENT_MODIFIER_ALT;
- else if (equals(jsModifier, "ctrl"))
- mask |= ECORE_EVENT_MODIFIER_CTRL;
- else if (equals(jsModifier, "meta"))
- mask |= ECORE_EVENT_MODIFIER_WIN;
- else if (equals(jsModifier, "shift"))
- mask |= ECORE_EVENT_MODIFIER_SHIFT;
-
- if (JSValueToBoolean(context, arguments[1]))
- touchModifiers |= mask;
- else
- touchModifiers &= ~mask;
-
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "contextClick", contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseScrollBy", mouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "continuousMouseScrollBy", continuousMouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseDown", mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseUp", mouseUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseMoveTo", mouseMoveToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "leapForward", leapForwardCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "keyDown", keyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scheduleAsynchronousClick", scheduleAsynchronousClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scheduleAsynchronousKeyDown", scheduleAsynchronousKeyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scalePageBy", scalePageByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomIn", textZoomInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomOut", textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageIn", zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageOut", zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "addTouchPoint", addTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchStart", touchStartCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "updateTouchPoint", updateTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchMove", touchMoveCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "releaseTouchPoint", releaseTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchEnd", touchEndCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "cancelTouchPoint", cancelTouchPointCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "touchCancel", touchCancelCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "clearTouchPoints", clearTouchPointsCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "setTouchModifier", setTouchModifierCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticValues[] = {
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
- static JSClassRef eventSenderClass = 0;
-
- if (!eventSenderClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticFunctions;
- classDefinition.staticValues = staticValues;
-
- eventSenderClass = JSClassCreate(&classDefinition);
- }
-
- return eventSenderClass;
-}
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame)
-{
- if (isTopFrame) {
- gDragMode = true;
-
- // Fly forward in time one second when the main frame loads. This will
- // ensure that when a test begins clicking in the same location as
- // a previous test, those clicks won't be interpreted as continuations
- // of the previous test's click sequences.
- gTimeOffset += 1000;
-
- gLastMousePositionX = gLastMousePositionY = 0;
- gLastClickPositionX = gLastClickPositionY = 0;
- gLastClickTimeOffset = 0;
- gLastClickButton = 0;
- gButtonCurrentlyDown = 0;
- gClickCount = 0;
- }
-
- return JSObjectMake(context, getClass(context), 0);
-}
-
-static void feedOrQueueMouseEvent(MouseEventInfo* eventInfo, EventQueueStrategy strategy)
-{
- if (!delayedEventQueue().isEmpty()) {
- if (delayedEventQueue().last().eventInfo)
- delayedEventQueue().append(DelayedEvent(eventInfo));
- else
- delayedEventQueue().last().eventInfo = eventInfo;
-
- if (strategy == FeedQueuedEvents)
- feedQueuedMouseEvents();
- } else
- feedMouseEvent(eventInfo);
-}
-
-static void feedMouseEvent(MouseEventInfo* eventInfo)
-{
- if (!eventInfo)
- return;
-
- unsigned timeStamp = 0;
- Evas_Object* mainFrame = browser->mainFrame();
- Evas* evas = evas_object_evas_get(mainFrame);
- EvasMouseEvent event = eventInfo->event;
-
- setEvasModifiers(evas, eventInfo->modifiers);
-
- Evas_Button_Flags flags = EVAS_BUTTON_NONE;
-
- // FIXME: We need to pass additional information with our events, so that
- // we could construct correct PlatformWheelEvent. At the moment, max number
- // of clicks is 3
- if (gClickCount == 3)
- flags = EVAS_BUTTON_TRIPLE_CLICK;
- else if (gClickCount == 2)
- flags = EVAS_BUTTON_DOUBLE_CLICK;
-
- if (event & EvasMouseEventMove)
- evas_event_feed_mouse_move(evas, gLastMousePositionX, gLastMousePositionY, timeStamp++, 0);
- if (event & EvasMouseEventDown)
- evas_event_feed_mouse_down(evas, eventInfo->button, flags, timeStamp++, 0);
- if (event & EvasMouseEventUp)
- evas_event_feed_mouse_up(evas, eventInfo->button, flags, timeStamp++, 0);
- if (event & EvasMouseEventScrollLeft | event & EvasMouseEventScrollRight)
- evas_event_feed_mouse_wheel(evas, 1, eventInfo->horizontalDelta, timeStamp, 0);
- if (event & EvasMouseEventScrollUp | event & EvasMouseEventScrollDown)
- evas_event_feed_mouse_wheel(evas, 0, eventInfo->verticalDelta, timeStamp, 0);
-
- setEvasModifiers(evas, EvasKeyModifierNone);
-
- delete eventInfo;
-}
-
-static void feedQueuedMouseEvents()
-{
- WTF::Vector<DelayedEvent>::const_iterator it = delayedEventQueue().begin();
- for (; it != delayedEventQueue().end(); it++) {
- DelayedEvent delayedEvent = *it;
- if (delayedEvent.delay)
- usleep(delayedEvent.delay * 1000);
- feedMouseEvent(delayedEvent.eventInfo);
- }
- delayedEventQueue().clear();
-}
diff --git a/Tools/DumpRenderTree/efl/EventSender.h b/Tools/DumpRenderTree/efl/EventSender.h
deleted file mode 100644
index bded6552d..000000000
--- a/Tools/DumpRenderTree/efl/EventSender.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-// The boolean parameter refers to whether this is being called from a top-level frame.
-JSObjectRef makeEventSender(JSContextRef, bool);
-
-#endif // EventSender_h
diff --git a/Tools/DumpRenderTree/efl/FontManagement.cpp b/Tools/DumpRenderTree/efl/FontManagement.cpp
deleted file mode 100644
index eee26d141..000000000
--- a/Tools/DumpRenderTree/efl/FontManagement.cpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 "FontManagement.h"
-
-#include <Ecore_File.h>
-#include <cstdio>
-#include <fontconfig/fontconfig.h>
-#include <wtf/Vector.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/StringBuilder.h>
-
-static CString buildPath(const char* base, const char* first, ...)
-{
- va_list ap;
- StringBuilder result;
- result.append(base);
-
- if (const char* current = first) {
- va_start(ap, first);
- do {
- result.append('/');
- result.append(current);
- } while ((current = va_arg(ap, const char*)));
- va_end(ap);
- }
-
- return result.toString().utf8();
-}
-
-static Vector<CString> getCoreFontFiles()
-{
- Vector<CString> fontFilePaths;
-
- // Ahem is used by many layout tests.
- fontFilePaths.append(CString(FONTS_CONF_DIR "/AHEM____.TTF"));
- // A font with no valid Fontconfig encoding to test https://bugs.webkit.org/show_bug.cgi?id=47452
- fontFilePaths.append(CString(FONTS_CONF_DIR "/FontWithNoValidEncoding.fon"));
-
- for (int i = 1; i <= 9; i++) {
- char fontPath[EINA_PATH_MAX];
- snprintf(fontPath, EINA_PATH_MAX - 1, FONTS_CONF_DIR "/../../fonts/WebKitWeightWatcher%i00.ttf", i);
- fontFilePaths.append(CString(fontPath));
- }
-
- return fontFilePaths;
-}
-
-static void addFontDirectory(const CString& fontDirectory, FcConfig* config)
-{
- const char* fontPath = fontDirectory.data();
- if (!fontPath || !FcConfigAppFontAddDir(config, reinterpret_cast<const FcChar8*>(fontPath)))
- fprintf(stderr, "Could not add font directory %s!\n", fontPath);
-}
-
-static void addFontFiles(const Vector<CString>& fontFiles, FcConfig* config)
-{
- Vector<CString>::const_iterator it, end = fontFiles.end();
- for (it = fontFiles.begin(); it != end; ++it) {
- const char* filePath = (*it).data();
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<const FcChar8*>(filePath)))
- fprintf(stderr, "Could not load font at %s!\n", filePath);
- }
-}
-
-static CString getCustomBuildDir()
-{
- if (const char* userChosenBuildDir = getenv("WEBKIT_OUTPUTDIR")) {
- if (ecore_file_is_dir(userChosenBuildDir))
- return userChosenBuildDir;
- fprintf(stderr, "WEBKIT_OUTPUTDIR set to '%s', but path doesn't exist.\n", userChosenBuildDir);
- }
-
- return CString();
-}
-
-static CString getPlatformFontsPath()
-{
- CString customBuildDir = getCustomBuildDir();
- if (!customBuildDir.isNull()) {
- CString fontsPath = buildPath(customBuildDir.data(), "Dependencies", "Root", "webkitgtk-test-fonts", 0);
- if (!ecore_file_exists(fontsPath.data()))
- fprintf(stderr, "WEBKIT_OUTPUTDIR set to '%s', but could not local test fonts.\n", customBuildDir.data());
- return fontsPath;
- }
-
- CString fontsPath = CString(DOWNLOADED_FONTS_DIR);
- if (ecore_file_exists(fontsPath.data()))
- return fontsPath;
-
- fprintf(stderr, "Could not locate tests fonts, try setting WEBKIT_OUTPUTDIR.\n");
- return CString();
-}
-
-void addFontsToEnvironment()
-{
- FcInit();
-
- // Load our configuration file, which sets up proper aliases for family
- // names like sans, serif and monospace.
- FcConfig* config = FcConfigCreate();
- const char* fontConfigFilename = FONTS_CONF_DIR "/fonts.conf";
- if (!FcConfigParseAndLoad(config, reinterpret_cast<const FcChar8*>(fontConfigFilename), true)) {
- fprintf(stderr, "Couldn't load font configuration file from: %s\n", fontConfigFilename);
- exit(1);
- }
-
- addFontFiles(getCoreFontFiles(), config);
- addFontDirectory(getPlatformFontsPath(), config);
-
- if (!FcConfigSetCurrent(config)) {
- fprintf(stderr, "Could not set the current font configuration!\n");
- exit(1);
- }
-}
-
diff --git a/Tools/DumpRenderTree/efl/FontManagement.h b/Tools/DumpRenderTree/efl/FontManagement.h
deleted file mode 100644
index d497513ae..000000000
--- a/Tools/DumpRenderTree/efl/FontManagement.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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. 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 INC. 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 FontManagement_h
-#define FontManagement_h
-
-void addFontsToEnvironment();
-
-#endif // FontManagement_h
diff --git a/Tools/DumpRenderTree/efl/GCControllerEfl.cpp b/Tools/DumpRenderTree/efl/GCControllerEfl.cpp
deleted file mode 100644
index 1f55a5ce6..000000000
--- a/Tools/DumpRenderTree/efl/GCControllerEfl.cpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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 "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "ewk_private.h"
-
-void GCController::collect() const
-{
- DumpRenderTreeSupportEfl::garbageCollectorCollect();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- DumpRenderTreeSupportEfl::garbageCollectorCollectOnAlternateThread(waitUntilDone);
-}
-
-size_t GCController::getJSObjectCount() const
-{
- return DumpRenderTreeSupportEfl::javaScriptObjectsCount();
-}
diff --git a/Tools/DumpRenderTree/efl/JSStringUtils.cpp b/Tools/DumpRenderTree/efl/JSStringUtils.cpp
deleted file mode 100644
index 19ca55736..000000000
--- a/Tools/DumpRenderTree/efl/JSStringUtils.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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 COPYRIGHT HOLDERS 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 THE COPYRIGHT
- * HOLDERS 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 "JSStringUtils.h"
-
-bool equals(JSStringRef jsString, const char* cString)
-{
- return JSStringIsEqualToUTF8CString(jsString, cString);
-}
-
-bool equals(JSRetainPtr<JSStringRef> jsString, const char* cString)
-{
- return equals(jsString.get(), cString);
-}
diff --git a/Tools/DumpRenderTree/efl/JSStringUtils.h b/Tools/DumpRenderTree/efl/JSStringUtils.h
deleted file mode 100644
index 04d7e0812..000000000
--- a/Tools/DumpRenderTree/efl/JSStringUtils.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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 COPYRIGHT HOLDERS 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 THE COPYRIGHT
- * HOLDERS 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 JSStringUtils_h
-#define JSStringUtils_h
-
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-
-bool equals(JSStringRef, const char*);
-bool equals(JSRetainPtr<JSStringRef>, const char*);
-
-#endif // JSStringUtils_h
-
diff --git a/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp b/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp
deleted file mode 100644
index 241903988..000000000
--- a/Tools/DumpRenderTree/efl/PixelDumpSupportEfl.cpp
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. 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 "DumpRenderTreeChrome.h"
-#include "IntRect.h"
-#include "PixelDumpSupportCairo.h"
-#include "RefPtrCairo.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "ewk_view.h"
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool, bool, bool, bool drawSelectionRect)
-{
- Ewk_View_Smart_Data* smartData = static_cast<Ewk_View_Smart_Data*>(evas_object_smart_data_get(browser->mainView()));
- Ewk_View_Private_Data* privateData = static_cast<Ewk_View_Private_Data*>(smartData->_priv);
- const Evas_Object* mainFrame = browser->mainFrame();
-
- int x, y, width, height;
- evas_object_geometry_get(browser->mainFrame(), &x, &y, &width, &height);
- const Eina_Rectangle rect = { x, y, width, height };
-
- RefPtr<cairo_surface_t> surface = adoptRef(cairo_image_surface_create(CAIRO_FORMAT_ARGB32, rect.w, rect.h));
- RefPtr<cairo_t> context = adoptRef(cairo_create(surface.get()));
-
- if (!ewk_view_paint(privateData, context.get(), &rect))
- return 0;
-
- if (DumpRenderTreeSupportEfl::isTrackingRepaints(mainFrame)) {
- cairo_push_group(context.get());
-
- // Paint the gray mask over the original image.
- cairo_set_source_rgba(context.get(), 0, 0, 0, 0.66);
- cairo_paint(context.get());
-
- // Paint transparent rectangles over the mask to show the repainted regions.
- cairo_set_source_rgba(context.get(), 0, 0, 0, 0);
- cairo_set_operator(context.get(), CAIRO_OPERATOR_SOURCE);
-
- Eina_List* repaintRects = DumpRenderTreeSupportEfl::trackedRepaintRects(mainFrame);
- void* iter = 0;
- EINA_LIST_FREE(repaintRects, iter) {
- Eina_Rectangle* rect = static_cast<Eina_Rectangle*>(iter);
-
- cairo_rectangle(context.get(), rect->x, rect->y, rect->w, rect->h);
- cairo_fill(context.get());
-
- eina_rectangle_free(rect);
- }
-
- cairo_pop_group_to_source(context.get());
- cairo_paint(context.get());
- }
-
- if (drawSelectionRect) {
- const WebCore::IntRect selectionRect = DumpRenderTreeSupportEfl::selectionRectangle(mainFrame);
-
- if (!selectionRect.isEmpty()) {
- cairo_set_line_width(context.get(), 1.0);
- cairo_rectangle(context.get(), selectionRect.x(), selectionRect.y(), selectionRect.width(), selectionRect.height());
- cairo_set_source_rgba(context.get(), 1.0, 0.0, 0.0, 1.0);
- cairo_stroke(context.get());
- }
- }
-
- return BitmapContext::createByAdoptingBitmapAndContext(0, context.release().leakRef());
-}
diff --git a/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp b/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
deleted file mode 100644
index 9f66e95e9..000000000
--- a/Tools/DumpRenderTree/efl/TestRunnerEfl.cpp
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
- * Copyright (C) 2007, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2008 Nuanti Ltd.
- * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com>
- * Copyright (C) 2009,2011 Collabora Ltd.
- * Copyright (C) 2010 Joone Hur <joone@kldp.org>
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation
- *
- * 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 "TestRunner.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "JSStringUtils.h"
-#include "NotImplemented.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include "ewk_private.h"
-#include <EWebKit.h>
-#include <Ecore_File.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/OpaqueJSString.h>
-#include <KURL.h>
-#include <editing/FindOptions.h>
-#include <stdio.h>
-#include <wtf/text/WTFString.h>
-
-// Same as Mac cache model enum in Source/WebKit/mac/WebView/WebPreferences.h.
-enum {
- WebCacheModelDocumentViewer = 0,
- WebCacheModelDocumentBrowser = 1,
- WebCacheModelPrimaryWebBrowser = 2
-};
-
-TestRunner::~TestRunner()
-{
-}
-
-void TestRunner::addDisallowedURL(JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::clearBackForwardList()
-{
- Ewk_History* history = ewk_view_history_get(browser->mainView());
- if (!history)
- return;
-
- Ewk_History_Item* item = ewk_history_history_item_current_get(history);
- ewk_history_clear(history);
- ewk_history_history_item_add(history, item);
- ewk_history_history_item_set(history, item);
- ewk_history_item_free(item);
-}
-
-JSStringRef TestRunner::copyDecodedHostName(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
- // FIXME: Implement for testing fix for 6727495
- notImplemented();
-}
-
-void TestRunner::display()
-{
- displayWebView();
-}
-
-void TestRunner::keepWebHistory()
-{
- DumpRenderTreeSupportEfl::setShouldTrackVisitedLinks(true);
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
- const Ewk_History* history = ewk_view_history_get(browser->mainView());
- if (!history)
- return -1;
-
- return ewk_history_back_list_length(history) + ewk_history_forward_list_length(history);
-}
-
-void TestRunner::notifyDone()
-{
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
- waitForPolicy = false;
-}
-
-JSStringRef TestRunner::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
- String requestedUrl(url->characters(), url->length());
- String resourceRoot;
- String requestedRoot;
-
- if (requestedUrl.find("LayoutTests") != notFound) {
- // If the URL contains LayoutTests we need to remap that to
- // LOCAL_RESOURCE_ROOT which is the path of the LayoutTests directory
- // within the WebKit source tree.
- requestedRoot = "/tmp/LayoutTests";
- resourceRoot = getenv("LOCAL_RESOURCE_ROOT");
- } else if (requestedUrl.find("tmp") != notFound) {
- // If the URL is a child of /tmp we need to convert it to be a child
- // DUMPRENDERTREE_TEMP replace tmp with DUMPRENDERTREE_TEMP
- requestedRoot = "/tmp";
- resourceRoot = getenv("DUMPRENDERTREE_TEMP");
- }
-
- size_t indexOfRootStart = requestedUrl.reverseFind(requestedRoot);
- size_t indexOfSeparatorAfterRoot = indexOfRootStart + requestedRoot.length();
- String fullPathToUrl = "file://" + resourceRoot + requestedUrl.substring(indexOfSeparatorAfterRoot);
-
- return JSStringCreateWithUTF8CString(fullPathToUrl.utf8().data());
-}
-
-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
-{
- WebCore::KURL baseURL(WebCore::KURL(), String::fromUTF8(ewk_frame_uri_get(browser->mainFrame())));
- WebCore::KURL absoluteURL(baseURL, url->string());
-
- JSRetainPtr<JSStringRef> jsAbsoluteURL(
- Adopt, JSStringCreateWithUTF8CString(absoluteURL.string().utf8().data()));
-
- WorkQueue::shared()->queue(new LoadItem(jsAbsoluteURL.get(), target));
-}
-
-void TestRunner::setAcceptsEditing(bool acceptsEditing)
-{
- ewk_view_editable_set(browser->mainView(), acceptsEditing);
-}
-
-void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
- ewk_cookies_policy_set(alwaysAcceptCookies ? EWK_COOKIE_JAR_ACCEPT_ALWAYS : EWK_COOKIE_JAR_ACCEPT_NEVER);
-}
-
-void TestRunner::setCustomPolicyDelegate(bool enabled, bool permissive)
-{
- policyDelegateEnabled = enabled;
- policyDelegatePermissive = permissive;
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
- setCustomPolicyDelegate(true, false);
- waitForPolicy = true;
- setWaitToDump(true);
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
- WebCore::KURL kurl;
- kurl.setProtocol(String(protocol->characters(), protocol->length()));
- kurl.setHost(String(host->characters(), host->length()));
-
- ewk_security_policy_whitelist_origin_add(sourceOrigin->string().utf8().data(), kurl.string().utf8().data(), includeSubdomains);
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
- WebCore::KURL kurl;
- kurl.setProtocol(String(protocol->characters(), protocol->length()));
- kurl.setHost(String(host->characters(), host->length()));
-
- ewk_security_policy_whitelist_origin_del(sourceOrigin->string().utf8().data(), kurl.string().utf8().data(), includeSubdomains);
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool)
-{
- notImplemented();
-}
-
-void TestRunner::setTabKeyCyclesThroughElements(bool)
-{
- notImplemented();
-}
-
-void TestRunner::setUseDashboardCompatibilityMode(bool)
-{
- notImplemented();
-}
-
-static CString gUserStyleSheet;
-static bool gUserStyleSheetEnabled = true;
-
-void TestRunner::setUserStyleSheetEnabled(bool flag)
-{
- gUserStyleSheetEnabled = flag;
- ewk_view_setting_user_stylesheet_set(browser->mainView(), flag ? gUserStyleSheet.data() : 0);
-}
-
-void TestRunner::setUserStyleSheetLocation(JSStringRef path)
-{
- gUserStyleSheet = path->string().utf8();
-
- if (gUserStyleSheetEnabled)
- setUserStyleSheetEnabled(true);
-}
-
-void TestRunner::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value)
-{
- DumpRenderTreeSupportEfl::setValueForUser(context, nodeObject, value->string());
-}
-
-void TestRunner::setViewModeMediaFeature(JSStringRef mode)
-{
-#if ENABLE(VIEW_MODE_CSS_MEDIA)
- Evas_Object* view = browser->mainView();
- if (!view)
- return;
-
- if (equals(mode, "windowed"))
- ewk_view_mode_set(view, EWK_VIEW_MODE_WINDOWED);
- else if (equals(mode, "floating"))
- ewk_view_mode_set(view, EWK_VIEW_MODE_FLOATING);
- else if (equals(mode, "fullscreen"))
- ewk_view_mode_set(view, EWK_VIEW_MODE_FULLSCREEN);
- else if (equals(mode, "maximized"))
- ewk_view_mode_set(view, EWK_VIEW_MODE_MAXIMIZED);
- else if (equals(mode, "minimized"))
- ewk_view_mode_set(view, EWK_VIEW_MODE_MINIMIZED);
-#else
- UNUSED_PARAM(mode);
-#endif
-}
-
-void TestRunner::setWindowIsKey(bool)
-{
- notImplemented();
-}
-
-static Eina_Bool waitToDumpWatchdogFired(void*)
-{
- waitToDumpWatchdog = 0;
- gTestRunner->waitToDumpWatchdogTimerFired();
- return ECORE_CALLBACK_CANCEL;
-}
-
-void TestRunner::setWaitToDump(bool waitUntilDone)
-{
- static const double timeoutSeconds = 30;
-
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && shouldSetWaitToDumpWatchdog())
- waitToDumpWatchdog = ecore_timer_add(timeoutSeconds, waitToDumpWatchdogFired, 0);
-}
-
-int TestRunner::windowCount()
-{
- return browser->extraViews().size() + 1; // + 1 for the main view.
-}
-
-void TestRunner::setPrivateBrowsingEnabled(bool flag)
-{
- ewk_view_setting_private_browsing_set(browser->mainView(), flag);
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool flag)
-{
- ewk_view_setting_scripts_can_access_clipboard_set(browser->mainView(), flag);
-}
-
-void TestRunner::setXSSAuditorEnabled(bool flag)
-{
- ewk_view_setting_enable_xss_auditor_set(browser->mainView(), flag);
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool flag)
-{
- ewk_view_setting_spatial_navigation_set(browser->mainView(), flag);
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool flag)
-{
- ewk_view_setting_allow_universal_access_from_file_urls_set(browser->mainView(), flag);
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool flag)
-{
- ewk_view_setting_allow_file_access_from_file_urls_set(browser->mainView(), flag);
-}
-
-void TestRunner::setAuthorAndUserStylesEnabled(bool flag)
-{
- DumpRenderTreeSupportEfl::setAuthorAndUserStylesEnabled(browser->mainView(), flag);
-}
-
-void TestRunner::setMockDeviceOrientation(bool, double, bool, double, bool, double)
-{
- // FIXME: Implement for DeviceOrientation layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=30335.
- notImplemented();
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool canProvideAltitude, double altitude, bool canProvideAltitudeAccuracy, double altitudeAccuracy, bool canProvideHeading, double heading, bool canProvideSpeed, double speed)
-{
- Evas_Object* view = browser->mainView();
- if (browser->extraViews().size() > 0)
- view = browser->extraViews().last();
-
- DumpRenderTreeSupportEfl::setMockGeolocationPosition(view, latitude, longitude, accuracy, canProvideAltitude, altitude, canProvideAltitudeAccuracy, altitudeAccuracy, canProvideHeading, heading, canProvideSpeed, speed);
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
- Evas_Object* view = browser->mainView();
- if (browser->extraViews().size() > 0)
- view = browser->extraViews().last();
-
- DumpRenderTreeSupportEfl::setMockGeolocationPositionUnavailableError(view, message->string().utf8().data());
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
- setGeolocationPermissionCommon(allow);
- Evas_Object* view = browser->mainView();
- if (browser->extraViews().size() > 0)
- view = browser->extraViews().last();
-
- DumpRenderTreeSupportEfl::setMockGeolocationPermission(view, allow);
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
- Evas_Object* view = browser->mainView();
- if (browser->extraViews().size() > 0)
- view = browser->extraViews().last();
-
- return DumpRenderTreeSupportEfl::numberOfPendingGeolocationPermissionRequests(view);
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef, double, JSStringRef)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
- notImplemented();
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
- notImplemented();
-}
-
-void TestRunner::startSpeechInput(JSContextRef inputElement)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
- notImplemented();
-}
-
-void TestRunner::setIconDatabaseEnabled(bool enabled)
-{
- ewk_settings_icon_database_path_set(0);
-
- if (!enabled)
- return;
-
- String databasePath;
- const char* tempDir = getenv("TMPDIR");
-
- if (tempDir)
- databasePath = String::fromUTF8(tempDir);
- else if (tempDir = getenv("TEMP"))
- databasePath = String::fromUTF8(tempDir);
- else
- databasePath = String::fromUTF8("/tmp");
-
- databasePath.append("/DumpRenderTree/IconDatabase");
-
- if (ecore_file_mkpath(databasePath.utf8().data()))
- ewk_settings_icon_database_path_set(databasePath.utf8().data());
-}
-
-void TestRunner::setPopupBlockingEnabled(bool flag)
-{
- ewk_view_setting_scripts_can_open_windows_set(browser->mainView(), !flag);
-}
-
-void TestRunner::setPluginsEnabled(bool flag)
-{
- ewk_view_setting_enable_plugins_set(browser->mainView(), flag);
-}
-
-void TestRunner::execCommand(JSStringRef name, JSStringRef value)
-{
- DumpRenderTreeSupportEfl::executeCoreCommandByName(browser->mainView(), name->string().utf8().data(), value->string().utf8().data());
-}
-
-bool TestRunner::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
-{
- JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length"));
- JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0);
- if (!JSValueIsNumber(context, lengthValue))
- return false;
-
- WebCore::FindOptions options = 0;
-
- const size_t length = static_cast<size_t>(JSValueToNumber(context, lengthValue, 0));
- for (size_t i = 0; i < length; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0);
- if (!JSValueIsString(context, value))
- continue;
-
- JSRetainPtr<JSStringRef> optionName(Adopt, JSValueToStringCopy(context, value, 0));
-
- if (equals(optionName, "CaseInsensitive"))
- options |= WebCore::CaseInsensitive;
- else if (equals(optionName, "AtWordStarts"))
- options |= WebCore::AtWordStarts;
- else if (equals(optionName, "TreatMedialCapitalAsWordStart"))
- options |= WebCore::TreatMedialCapitalAsWordStart;
- else if (equals(optionName, "Backwards"))
- options |= WebCore::Backwards;
- else if (equals(optionName, "WrapAround"))
- options |= WebCore::WrapAround;
- else if (equals(optionName, "StartInSelection"))
- options |= WebCore::StartInSelection;
- }
-
- return DumpRenderTreeSupportEfl::findString(browser->mainView(), target->string(), options);
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef name)
-{
- return DumpRenderTreeSupportEfl::isCommandEnabled(browser->mainView(), name->string().utf8().data());
-}
-
-void TestRunner::setCacheModel(int cacheModel)
-{
- unsigned int cacheTotalCapacity;
- unsigned int cacheMinDeadCapacity;
- unsigned int cacheMaxDeadCapacity;
- double deadDecodedDataDeletionInterval;
- unsigned int pageCacheCapacity;
-
- // These constants are derived from the Mac cache model enum in Source/WebKit/mac/WebView/WebPreferences.h.
- switch (cacheModel) {
- case WebCacheModelDocumentViewer:
- pageCacheCapacity = 0;
- cacheTotalCapacity = 0;
- cacheMinDeadCapacity = 0;
- cacheMaxDeadCapacity = 0;
- deadDecodedDataDeletionInterval = 0;
- break;
- case WebCacheModelDocumentBrowser:
- pageCacheCapacity = 2;
- cacheTotalCapacity = 16 * 1024 * 1024;
- cacheMinDeadCapacity = cacheTotalCapacity / 8;
- cacheMaxDeadCapacity = cacheTotalCapacity / 4;
- deadDecodedDataDeletionInterval = 0;
- break;
- case WebCacheModelPrimaryWebBrowser:
- pageCacheCapacity = 3;
- cacheTotalCapacity = 32 * 1024 * 1024;
- cacheMinDeadCapacity = cacheTotalCapacity / 4;
- cacheMaxDeadCapacity = cacheTotalCapacity / 2;
- deadDecodedDataDeletionInterval = 60;
- break;
- default:
- fprintf(stderr, "trying to set an invalid value %d for the Cache model.", cacheModel);
- return;
- }
-
- ewk_settings_object_cache_capacity_set(cacheMinDeadCapacity, cacheMaxDeadCapacity, cacheTotalCapacity);
- DumpRenderTreeSupportEfl::setDeadDecodedDataDeletionInterval(deadDecodedDataDeletionInterval);
- ewk_settings_page_cache_capacity_set(pageCacheCapacity);
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
- notImplemented();
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
- ewk_settings_application_cache_clear();
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long quota)
-{
- Ewk_Security_Origin* origin = ewk_frame_security_origin_get(browser->mainFrame());
- ewk_security_origin_application_cache_quota_set(origin, quota);
- ewk_security_origin_free(origin);
-}
-
-void TestRunner::clearApplicationCacheForOrigin(OpaqueJSString* url)
-{
- Ewk_Security_Origin* origin = ewk_security_origin_new_from_string(url->string().utf8().data());
- ewk_security_origin_application_cache_clear(origin);
- ewk_security_origin_free(origin);
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef)
-{
- // FIXME: Implement to support getting disk usage in bytes for an origin.
- notImplemented();
- return 0;
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
- // FIXME: Implement to get origins that contain application caches.
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef)
-{
- notImplemented();
- return 0;
-}
-
-void TestRunner::clearAllDatabases()
-{
- ewk_web_database_remove_all();
-}
-
-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
- Ewk_Security_Origin* origin = ewk_frame_security_origin_get(browser->mainFrame());
- ewk_security_origin_web_database_quota_set(origin, quota);
- ewk_security_origin_free(origin);
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- notImplemented();
- return JSValueMakeUndefined(context);
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
- notImplemented();
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned)
-{
- notImplemented();
-}
-
-void TestRunner::syncLocalStorage()
-{
- notImplemented();
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
- DumpRenderTreeSupportEfl::setDomainRelaxationForbiddenForURLScheme(forbidden, scheme->string());
-}
-
-void TestRunner::goBack()
-{
- ewk_frame_back(browser->mainFrame());
-}
-
-void TestRunner::setDefersLoading(bool defers)
-{
- DumpRenderTreeSupportEfl::setDefersLoading(browser->mainView(), defers);
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long size)
-{
- ewk_settings_application_cache_max_quota_set(size);
-}
-
-static inline bool toBool(JSStringRef value)
-{
- return equals(value, "true") || equals(value, "1");
-}
-
-static inline int toInt(JSStringRef value)
-{
- return atoi(value->string().utf8().data());
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
- if (equals(key, "WebKitJavaScriptEnabled"))
- ewk_view_setting_enable_scripts_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitDefaultFontSize"))
- ewk_view_setting_font_default_size_set(browser->mainView(), toInt(value));
- else if (equals(key, "WebKitMinimumFontSize"))
- ewk_view_setting_font_minimum_size_set(browser->mainView(), toInt(value));
- else if (equals(key, "WebKitPluginsEnabled"))
- ewk_view_setting_enable_plugins_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitWebGLEnabled"))
- ewk_view_setting_enable_webgl_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitEnableCaretBrowsing"))
- ewk_view_setting_caret_browsing_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitUsesPageCachePreferenceKey"))
- ewk_view_setting_page_cache_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitHyperlinkAuditingEnabled"))
- ewk_view_setting_enable_hyperlink_auditing_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitTabToLinksPreferenceKey"))
- ewk_view_setting_include_links_in_focus_chain_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitOfflineWebApplicationCacheEnabled"))
- ewk_view_setting_application_cache_set(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitLoadSiteIconsKey"))
- DumpRenderTreeSupportEfl::setLoadsSiteIconsIgnoringImageLoadingSetting(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitCSSGridLayoutEnabled"))
- DumpRenderTreeSupportEfl::setCSSGridLayoutEnabled(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitCSSRegionsEnabled"))
- DumpRenderTreeSupportEfl::setCSSRegionsEnabled(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitWebAudioEnabled"))
- DumpRenderTreeSupportEfl::setWebAudioEnabled(browser->mainView(), toBool(value));
- else if (equals(key, "WebKitDisplayImagesKey"))
- ewk_view_setting_auto_load_images_set(browser->mainView(), toBool(value));
- else
- fprintf(stderr, "TestRunner::overridePreference tried to override unknown preference '%s'.\n", value->string().utf8().data());
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
- DumpRenderTreeSupportEfl::addUserScript(browser->mainView(), source->string(), runAtStart, allFrames);
-}
-
-void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
-{
- DumpRenderTreeSupportEfl::addUserStyleSheet(browser->mainView(), source->string(), allFrames);
-}
-
-void TestRunner::setDeveloperExtrasEnabled(bool enabled)
-{
- ewk_view_setting_enable_developer_extras_set(browser->mainView(), enabled);
-}
-
-void TestRunner::showWebInspector()
-{
- ewk_view_inspector_show(browser->mainView());
- browser->waitInspectorLoadFinished();
-}
-
-void TestRunner::closeWebInspector()
-{
- ewk_view_inspector_close(browser->mainView());
-}
-
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
-{
- DumpRenderTreeSupportEfl::evaluateInWebInspector(browser->mainView(), callId, script->string());
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned, JSObjectRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- DumpRenderTreeSupportEfl::evaluateScriptInIsolatedWorld(browser->mainFrame(), worldID, globalObject, script->string());
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
- Ewk_History* history = ewk_view_history_get(browser->mainView());
- if (!history)
- return;
-
- ewk_history_clear(history);
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
- return DumpRenderTreeSupportEfl::callShouldCloseOnWebView(browser->mainFrame());
-}
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
- notImplemented();
-}
-
-void TestRunner::setWebViewEditable(bool)
-{
- ewk_frame_editable_set(browser->mainFrame(), EINA_TRUE);
-}
-
-void TestRunner::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
-{
- notImplemented();
-}
-
-void TestRunner::abortModal()
-{
- notImplemented();
-}
-
-void TestRunner::setSerializeHTTPLoads(bool serialize)
-{
- DumpRenderTreeSupportEfl::setSerializeHTTPLoads(serialize);
-}
-
-void TestRunner::setTextDirection(JSStringRef direction)
-{
- Ewk_Text_Direction ewkDirection;
- if (JSStringIsEqualToUTF8CString(direction, "auto"))
- ewkDirection = EWK_TEXT_DIRECTION_DEFAULT;
- else if (JSStringIsEqualToUTF8CString(direction, "rtl"))
- ewkDirection = EWK_TEXT_DIRECTION_RIGHT_TO_LEFT;
- else if (JSStringIsEqualToUTF8CString(direction, "ltr"))
- ewkDirection = EWK_TEXT_DIRECTION_LEFT_TO_RIGHT;
- else {
- fprintf(stderr, "TestRunner::setTextDirection called with unknown direction: '%s'.\n", direction->string().utf8().data());
- return;
- }
-
- ewk_view_text_direction_set(browser->mainView(), ewkDirection);
-}
-
-void TestRunner::addChromeInputField()
-{
- notImplemented();
-}
-
-void TestRunner::removeChromeInputField()
-{
- notImplemented();
-}
-
-void TestRunner::focusWebView()
-{
- notImplemented();
-}
-
-void TestRunner::setBackingScaleFactor(double)
-{
- notImplemented();
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef origin)
-{
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef jsOrigin)
-{
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef jsNotification)
-{
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef title)
-{
-}
-
-void TestRunner::resetPageVisibility()
-{
- ewk_view_visibility_state_set(browser->mainView(), EWK_PAGE_VISIBILITY_STATE_VISIBLE, true);
-}
-
-void TestRunner::setPageVisibility(const char* visibility)
-{
- String newVisibility(visibility);
- if (newVisibility == "visible")
- ewk_view_visibility_state_set(browser->mainView(), EWK_PAGE_VISIBILITY_STATE_VISIBLE, false);
- else if (newVisibility == "hidden")
- ewk_view_visibility_state_set(browser->mainView(), EWK_PAGE_VISIBILITY_STATE_HIDDEN, false);
- else if (newVisibility == "prerender")
- ewk_view_visibility_state_set(browser->mainView(), EWK_PAGE_VISIBILITY_STATE_PRERENDER, false);
- else if (newVisibility == "unloaded")
- ewk_view_visibility_state_set(browser->mainView(), EWK_PAGE_VISIBILITY_STATE_UNLOADED, false);
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool)
-{
- notImplemented();
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double)
-{
- notImplemented();
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
- notImplemented();
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName() const
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("efl"));
- return platformName;
-}
diff --git a/Tools/DumpRenderTree/efl/TextInputController.cpp b/Tools/DumpRenderTree/efl/TextInputController.cpp
deleted file mode 100644
index 62b6d6be8..000000000
--- a/Tools/DumpRenderTree/efl/TextInputController.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2011 Igalia S.L.
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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.
- */
-
-#include "config.h"
-#include "TextInputController.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeChrome.h"
-#include "WebCoreSupport/DumpRenderTreeSupportEfl.h"
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/OpaqueJSString.h>
-
-static JSValueRef setMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView() || argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
- char* text = new char[bufferSize];
- JSStringGetUTF8CString(string, text, bufferSize);
- JSStringRelease(string);
-
- int start = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- int length = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
-
- DumpRenderTreeSupportEfl::setComposition(browser->mainView(), text, start, length);
-
- delete[] text;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef hasMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView())
- return JSValueMakeUndefined(context);
-
- return JSValueMakeBoolean(context, DumpRenderTreeSupportEfl::hasComposition(browser->mainView()));
-}
-
-static JSValueRef markedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView())
- return JSValueMakeUndefined(context);
-
- int start, length;
- if (!DumpRenderTreeSupportEfl::compositionRange(browser->mainView(), &start, &length))
- return JSValueMakeUndefined(context);
-
- JSValueRef arrayValues[2];
- arrayValues[0] = JSValueMakeNumber(context, start);
- arrayValues[1] = JSValueMakeNumber(context, length);
- JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
- return arrayObject;
-}
-
-static JSValueRef insertTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView() || argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
- char* text = new char[bufferSize];
- JSStringGetUTF8CString(string, text, bufferSize);
- JSStringRelease(string);
-
- DumpRenderTreeSupportEfl::confirmComposition(browser->mainView(), text);
-
- delete[] text;
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef unmarkTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView())
- return JSValueMakeUndefined(context);
-
- DumpRenderTreeSupportEfl::confirmComposition(browser->mainView(), 0);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef firstRectForCharacterRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView() || argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int location = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- int length = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
-
- WebCore::IntRect rect = DumpRenderTreeSupportEfl::firstRectForCharacterRange(browser->mainView(), location, length);
-
- JSValueRef arrayValues[4];
- arrayValues[0] = JSValueMakeNumber(context, rect.x());
- arrayValues[1] = JSValueMakeNumber(context, rect.y());
- arrayValues[2] = JSValueMakeNumber(context, rect.width());
- arrayValues[3] = JSValueMakeNumber(context, rect.height());
- JSObjectRef arrayObject = JSObjectMakeArray(context, 4, arrayValues, exception);
- return arrayObject;
-}
-
-static JSValueRef selectedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (!browser->mainView())
- return JSValueMakeUndefined(context);
-
- int start, length;
- if (!DumpRenderTreeSupportEfl::selectedRange(browser->mainView(), &start, &length))
- return JSValueMakeUndefined(context);
-
- JSValueRef arrayValues[2];
- arrayValues[0] = JSValueMakeNumber(context, start);
- arrayValues[1] = JSValueMakeNumber(context, length);
- JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
- return arrayObject;
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "setMarkedText", setMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "hasMarkedText", hasMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "markedRange", markedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "insertText", insertTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "unmarkText", unmarkTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "firstRectForCharacterRange", firstRectForCharacterRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "selectedRange", selectedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
- static JSClassRef textInputControllerClass = 0;
-
- if (!textInputControllerClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticFunctions;
-
- textInputControllerClass = JSClassCreate(&classDefinition);
- }
-
- return textInputControllerClass;
-}
-
-JSObjectRef makeTextInputController(JSContextRef context)
-{
- return JSObjectMake(context, getClass(context), 0);
-}
-
diff --git a/Tools/DumpRenderTree/efl/TextInputController.h b/Tools/DumpRenderTree/efl/TextInputController.h
deleted file mode 100644
index 5ee271983..000000000
--- a/Tools/DumpRenderTree/efl/TextInputController.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2011 Igalia S.L.
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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.
- */
-
-#ifndef TextInputController_h
-#define TextInputController_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeTextInputController(JSContextRef);
-
-#endif
diff --git a/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp b/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp
deleted file mode 100644
index 5ffec2969..000000000
--- a/Tools/DumpRenderTree/efl/WorkQueueItemEfl.cpp
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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 "DumpRenderTreeChrome.h"
-
-#include <EWebKit.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/OpaqueJSString.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-
-bool LoadItem::invoke() const
-{
- Evas_Object* targetFrame;
-
- if (!m_target->length())
- targetFrame = browser->mainFrame();
- else
- targetFrame = ewk_frame_child_find(browser->mainFrame(), m_target->string().utf8().data());
-
- ewk_frame_uri_set(targetFrame, m_url->string().utf8().data());
-
- return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
- if (!m_unreachableURL->length())
- ewk_frame_contents_set(browser->mainFrame(), m_content->string().utf8().data(), 0, 0, 0, m_baseURL->string().utf8().data());
- else
- ewk_frame_contents_alternate_set(browser->mainFrame(), m_content->string().utf8().data(), 0, 0, 0, m_baseURL->string().utf8().data(), m_unreachableURL->string().utf8().data());
-
- return true;
-}
-
-bool ReloadItem::invoke() const
-{
- ewk_view_reload(browser->mainView());
- return true;
-}
-
-bool ScriptItem::invoke() const
-{
- return ewk_frame_script_execute(browser->mainFrame(), m_script->string().utf8().data());
-}
-
-bool BackForwardItem::invoke() const
-{
- if (m_howFar == 1)
- ewk_view_forward(browser->mainView());
- else if (m_howFar == -1)
- ewk_view_back(browser->mainView());
- else
- ewk_view_navigate(browser->mainView(), m_howFar);
-
- return true;
-}
diff --git a/Tools/DumpRenderTree/fonts/SampleFont.sfont b/Tools/DumpRenderTree/fonts/SampleFont.sfont
deleted file mode 100644
index d50dfc44d..000000000
--- a/Tools/DumpRenderTree/fonts/SampleFont.sfont
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE PosingFont SYSTEM "file://localhost/System/Library/DTDs/SplicedFont.dtd">
-
-<PosingFont name="HiraMaruMono-W4" version="1.0">
- <Name type="1" string="Hiragino Maru Gothic Monospaced" language="en"/>
- <Name type="2" string="W4" language="en"/>
- <Name type="3" string="Composite Font Reference (Spliced Font) sample using Hiragino Maru Gothic W4 for Monospaced" language="en"/>
- <Name type="4" string="Hiragino Maru Gothic Monospaced W4" language="en"/>
- <FontMetrics
- unitsPerEm="1000"
- ascender="561.1"
- descender="214.3"
- lineGap="21.0"
- italicAngle="0.0"
- isFixedPitch="1"
- vertTypoLineGap="4.2"
- familyClass="1"
- />
- <Components>
- <ComponentDef name="HiraMaruPro-W4">
- <Matrix
- xx="1.0"
- xy="0.0"
- yx="0.0"
- yy="1.0"
- tx="0.0"
- ty="0.0"
- />
- <UnicodeCharSet
- uset="[[\u0020-\u007E]|[\u00A0-\u00FC]|[\u02BB-\u0336]|[\u2010-\u2044]|[\u2212-\u223C]]"
- />
- <cmapOverride>
- <map charValue="u0020" charName="SPACE" glyphRefID="231"/>
- <map charValue="u0021" charName="EXCLAMATION MARK" glyphRefID="232"/>
- <map charValue="u0022" charName="QUOTATION MARK" glyphRefID="12087"/>
- <map charValue="u0023" charName="NUMBER SIGN" glyphRefID="234"/>
- <map charValue="u0024" charName="DOLLAR SIGN" glyphRefID="235"/>
- <map charValue="u0025" charName="PERCENT SIGN" glyphRefID="236"/>
- <map charValue="u0026" charName="AMPERSAND" glyphRefID="237"/>
- <map charValue="u0027" charName="APOSTROPHE" glyphRefID="12086"/>
- <map charValue="u0028" charName="LEFT PARENTHESIS" glyphRefID="239"/>
- <map charValue="u0029" charName="RIGHT PARENTHESIS" glyphRefID="240"/>
- <map charValue="u002A" charName="ASTERISK" glyphRefID="241"/>
- <map charValue="u002B" charName="PLUS SIGN" glyphRefID="242"/>
- <map charValue="u002C" charName="COMMA" glyphRefID="243"/>
- <map charValue="u002D" charName="HYPHEN-MINUS" glyphRefID="244"/>
- <map charValue="u002E" charName="FULL STOP" glyphRefID="245"/>
- <map charValue="u002F" charName="SOLIDUS" glyphRefID="246"/>
- <map charValue="u0030" charName="DIGIT ZERO" glyphRefID="247"/>
- <map charValue="u0031" charName="DIGIT ONE" glyphRefID="248"/>
- <map charValue="u0032" charName="DIGIT TWO" glyphRefID="249"/>
- <map charValue="u0033" charName="DIGIT THREE" glyphRefID="250"/>
- <map charValue="u0034" charName="DIGIT FOUR" glyphRefID="251"/>
- <map charValue="u0035" charName="DIGIT FIVE" glyphRefID="252"/>
- <map charValue="u0036" charName="DIGIT SIX" glyphRefID="253"/>
- <map charValue="u0037" charName="DIGIT SEVEN" glyphRefID="254"/>
- <map charValue="u0038" charName="DIGIT EIGHT" glyphRefID="255"/>
- <map charValue="u0039" charName="DIGIT NINE" glyphRefID="256"/>
- <map charValue="u003A" charName="COLON" glyphRefID="257"/>
- <map charValue="u003B" charName="SEMICOLON" glyphRefID="258"/>
- <map charValue="u003C" charName="LESS-THAN SIGN" glyphRefID="259"/>
- <map charValue="u003D" charName="EQUALS SIGN" glyphRefID="260"/>
- <map charValue="u003E" charName="GREATER-THAN SIGN" glyphRefID="261"/>
- <map charValue="u003F" charName="QUESTION MARK" glyphRefID="262"/>
- <map charValue="u0040" charName="COMMERCIAL AT" glyphRefID="263"/>
- <map charValue="u0041" charName="LATIN CAPITAL LETTER A" glyphRefID="264"/>
- <map charValue="u0042" charName="LATIN CAPITAL LETTER B" glyphRefID="265"/>
- <map charValue="u0043" charName="LATIN CAPITAL LETTER C" glyphRefID="266"/>
- <map charValue="u0044" charName="LATIN CAPITAL LETTER D" glyphRefID="267"/>
- <map charValue="u0045" charName="LATIN CAPITAL LETTER E" glyphRefID="268"/>
- <map charValue="u0046" charName="LATIN CAPITAL LETTER F" glyphRefID="269"/>
- <map charValue="u0047" charName="LATIN CAPITAL LETTER G" glyphRefID="270"/>
- <map charValue="u0048" charName="LATIN CAPITAL LETTER H" glyphRefID="271"/>
- <map charValue="u0049" charName="LATIN CAPITAL LETTER I" glyphRefID="272"/>
- <map charValue="u004A" charName="LATIN CAPITAL LETTER J" glyphRefID="273"/>
- <map charValue="u004B" charName="LATIN CAPITAL LETTER K" glyphRefID="274"/>
- <map charValue="u004C" charName="LATIN CAPITAL LETTER L" glyphRefID="275"/>
- <map charValue="u004D" charName="LATIN CAPITAL LETTER M" glyphRefID="276"/>
- <map charValue="u004E" charName="LATIN CAPITAL LETTER N" glyphRefID="277"/>
- <map charValue="u004F" charName="LATIN CAPITAL LETTER O" glyphRefID="278"/>
- <map charValue="u0050" charName="LATIN CAPITAL LETTER P" glyphRefID="279"/>
- <map charValue="u0051" charName="LATIN CAPITAL LETTER Q" glyphRefID="280"/>
- <map charValue="u0052" charName="LATIN CAPITAL LETTER R" glyphRefID="281"/>
- <map charValue="u0053" charName="LATIN CAPITAL LETTER S" glyphRefID="282"/>
- <map charValue="u0054" charName="LATIN CAPITAL LETTER T" glyphRefID="283"/>
- <map charValue="u0055" charName="LATIN CAPITAL LETTER U" glyphRefID="284"/>
- <map charValue="u0056" charName="LATIN CAPITAL LETTER V" glyphRefID="285"/>
- <map charValue="u0057" charName="LATIN CAPITAL LETTER W" glyphRefID="286"/>
- <map charValue="u0058" charName="LATIN CAPITAL LETTER X" glyphRefID="287"/>
- <map charValue="u0059" charName="LATIN CAPITAL LETTER Y" glyphRefID="288"/>
- <map charValue="u005A" charName="LATIN CAPITAL LETTER Z" glyphRefID="289"/>
- <map charValue="u005B" charName="LEFT SQUARE BRACKET" glyphRefID="290"/>
- <map charValue="u005C" charName="REVERSE SOLIDUS" glyphRefID="8719"/>
- <map charValue="u005D" charName="RIGHT SQUARE BRACKET" glyphRefID="292"/>
- <map charValue="u005E" charName="CIRCUMFLEX ACCENT" glyphRefID="293"/>
- <map charValue="u005F" charName="LOW LINE" glyphRefID="294"/>
- <map charValue="u0060" charName="GRAVE ACCENT" glyphRefID="390"/>
- <map charValue="u0061" charName="LATIN SMALL LETTER A" glyphRefID="296"/>
- <map charValue="u0062" charName="LATIN SMALL LETTER B" glyphRefID="297"/>
- <map charValue="u0063" charName="LATIN SMALL LETTER C" glyphRefID="298"/>
- <map charValue="u0064" charName="LATIN SMALL LETTER D" glyphRefID="299"/>
- <map charValue="u0065" charName="LATIN SMALL LETTER E" glyphRefID="300"/>
- <map charValue="u0066" charName="LATIN SMALL LETTER F" glyphRefID="301"/>
- <map charValue="u0067" charName="LATIN SMALL LETTER G" glyphRefID="302"/>
- <map charValue="u0068" charName="LATIN SMALL LETTER H" glyphRefID="303"/>
- <map charValue="u0069" charName="LATIN SMALL LETTER I" glyphRefID="304"/>
- <map charValue="u006A" charName="LATIN SMALL LETTER J" glyphRefID="305"/>
- <map charValue="u006B" charName="LATIN SMALL LETTER K" glyphRefID="306"/>
- <map charValue="u006C" charName="LATIN SMALL LETTER L" glyphRefID="307"/>
- <map charValue="u006D" charName="LATIN SMALL LETTER M" glyphRefID="308"/>
- <map charValue="u006E" charName="LATIN SMALL LETTER N" glyphRefID="309"/>
- <map charValue="u006F" charName="LATIN SMALL LETTER O" glyphRefID="310"/>
- <map charValue="u0070" charName="LATIN SMALL LETTER P" glyphRefID="311"/>
- <map charValue="u0071" charName="LATIN SMALL LETTER Q" glyphRefID="312"/>
- <map charValue="u0072" charName="LATIN SMALL LETTER R" glyphRefID="313"/>
- <map charValue="u0073" charName="LATIN SMALL LETTER S" glyphRefID="314"/>
- <map charValue="u0074" charName="LATIN SMALL LETTER T" glyphRefID="315"/>
- <map charValue="u0075" charName="LATIN SMALL LETTER U" glyphRefID="316"/>
- <map charValue="u0076" charName="LATIN SMALL LETTER V" glyphRefID="317"/>
- <map charValue="u0077" charName="LATIN SMALL LETTER W" glyphRefID="318"/>
- <map charValue="u0078" charName="LATIN SMALL LETTER X" glyphRefID="319"/>
- <map charValue="u0079" charName="LATIN SMALL LETTER Y" glyphRefID="320"/>
- <map charValue="u007A" charName="LATIN SMALL LETTER Z" glyphRefID="321"/>
- <map charValue="u007B" charName="LEFT CURLY BRACKET" glyphRefID="322"/>
- <map charValue="u007C" charName="VERTICAL LINE" glyphRefID="323"/>
- <map charValue="u007D" charName="RIGHT CURLY BRACKET" glyphRefID="324"/>
- <map charValue="u007E" charName="TILDE" glyphRefID="631"/>
- <map charValue="u00A0" charName="NO-BREAK SPACE" glyphRefID="231"/>
- <map charValue="u00A1" charName="INVERTED EXCLAMATION MARK" glyphRefID="612"/>
- <map charValue="u00A2" charName="CENT SIGN" glyphRefID="608"/>
- <map charValue="u00A3" charName="POUND SIGN" glyphRefID="609"/>
- <map charValue="u00A5" charName="YEN SIGN" glyphRefID="291"/>
- <map charValue="u00A6" charName="BROKEN BAR" glyphRefID="323"/>
- <map charValue="u00A8" charName="DIAERESIS" glyphRefID="502"/>
- <map charValue="u00AC" charName="NOT SIGN" glyphRefID="8718"/>
- <map charValue="u00AD" charName="SOFT HYPHEN" glyphRefID="514"/>
- <map charValue="u00AF" charName="MACRON" glyphRefID="325"/>
- <map charValue="u00B4" charName="ACUTE ACCENT" glyphRefID="501"/>
- <map charValue="u00B7" charName="MIDDLE DOT" glyphRefID="331"/>
- <map charValue="u00BD" charName="VULGAR FRACTION ONE HALF" glyphRefID="614"/>
- <map charValue="u00BF" charName="INVERTED QUESTION MARK" glyphRefID="613"/>
- <map charValue="u00C4" charName="LATIN CAPITAL LETTER A WITH DIAERESIS" glyphRefID="599"/>
- <map charValue="u00C7" charName="LATIN CAPITAL LETTER C WITH CEDILLA" glyphRefID="605"/>
- <map charValue="u00D1" charName="LATIN CAPITAL LETTER N WITH TILDE" glyphRefID="606"/>
- <map charValue="u00D6" charName="LATIN CAPITAL LETTER O WITH DIAERESIS" glyphRefID="615"/>
- <map charValue="u00DC" charName="LATIN CAPITAL LETTER U WITH DIAERESIS" glyphRefID="616"/>
- <map charValue="u00DF" charName="LATIN SMALL LETTER SHARP S" glyphRefID="603"/>
- <map charValue="u00E0" charName="LATIN SMALL LETTER A WITH GRAVE" glyphRefID="627"/>
- <map charValue="u00E1" charName="LATIN SMALL LETTER A WITH ACUTE" glyphRefID="630"/>
- <map charValue="u00E2" charName="LATIN SMALL LETTER A WITH CIRCUMFLEX" glyphRefID="622"/>
- <map charValue="u00E4" charName="LATIN SMALL LETTER A WITH DIAERESIS" glyphRefID="617"/>
- <map charValue="u00E7" charName="LATIN SMALL LETTER C WITH CEDILLA" glyphRefID="604"/>
- <map charValue="u00E8" charName="LATIN SMALL LETTER E WITH GRAVE" glyphRefID="628"/>
- <map charValue="u00E9" charName="LATIN SMALL LETTER E WITH ACUTE" glyphRefID="601"/>
- <map charValue="u00EA" charName="LATIN SMALL LETTER E WITH CIRCUMFLEX" glyphRefID="623"/>
- <map charValue="u00EB" charName="LATIN SMALL LETTER E WITH DIAERESIS" glyphRefID="618"/>
- <map charValue="u00ED" charName="LATIN SMALL LETTER I WITH ACUTE" glyphRefID="602"/>
- <map charValue="u00EE" charName="LATIN SMALL LETTER I WITH CIRCUMFLEX" glyphRefID="624"/>
- <map charValue="u00EF" charName="LATIN SMALL LETTER I WITH DIAERESIS" glyphRefID="619"/>
- <map charValue="u00F1" charName="LATIN SMALL LETTER N WITH TILDE" glyphRefID="607"/>
- <map charValue="u00F3" charName="LATIN SMALL LETTER O WITH ACUTE" glyphRefID="610"/>
- <map charValue="u00F4" charName="LATIN SMALL LETTER O WITH CIRCUMFLEX" glyphRefID="625"/>
- <map charValue="u00F6" charName="LATIN SMALL LETTER O WITH DIAERESIS" glyphRefID="620"/>
- <map charValue="u00F9" charName="LATIN SMALL LETTER U WITH GRAVE" glyphRefID="600"/>
- <map charValue="u00FA" charName="LATIN SMALL LETTER U WITH ACUTE" glyphRefID="611"/>
- <map charValue="u00FB" charName="LATIN SMALL LETTER U WITH CIRCUMFLEX" glyphRefID="626"/>
- <map charValue="u00FC" charName="LATIN SMALL LETTER U WITH DIAERESIS" glyphRefID="621"/>
- <map charValue="u02BB" charName="MODIFIER LETTER TURNED COMMA" glyphRefID="295"/>
- <map charValue="u02BC" charName="MODIFIER LETTER APOSTROPHE" glyphRefID="238"/>
- <map charValue="u02DC" charName="SMALL TILDE" glyphRefID="631"/>
- <map charValue="u0300" charName="COMBINING GRAVE ACCENT" glyphRefID="390"/>
- <map charValue="u0301" charName="COMBINING ACUTE ACCENT" glyphRefID="501"/>
- <map charValue="u0302" charName="COMBINING CIRCUMFLEX ACCENT" glyphRefID="293"/>
- <map charValue="u0303" charName="COMBINING TILDE" glyphRefID="631"/>
- <map charValue="u0304" charName="COMBINING MACRON" glyphRefID="325"/>
- <map charValue="u0305" charName="COMBINING OVERLINE" glyphRefID="325"/>
- <map charValue="u0308" charName="COMBINING DIAERESIS" glyphRefID="502"/>
- <map charValue="u0332" charName="COMBINING LOW LINE" glyphRefID="294"/>
- <map charValue="u0336" charName="COMBINING LONG STROKE OVERLAY" glyphRefID="514"/>
- <map charValue="u2010" charName="HYPHEN" glyphRefID="244"/>
- <map charValue="u2011" charName="NON-BREAKING HYPHEN" glyphRefID="244"/>
- <map charValue="u2012" charName="FIGURE DASH" glyphRefID="244"/>
- <map charValue="u2013" charName="EN DASH" glyphRefID="514"/>
- <map charValue="u2014" charName="EM DASH" glyphRefID="514"/>
- <map charValue="u2018" charName="LEFT SINGLE QUOTATION MARK" glyphRefID="295"/>
- <map charValue="u2019" charName="RIGHT SINGLE QUOTATION MARK" glyphRefID="238"/>
- <map charValue="u201C" charName="LEFT DOUBLE QUOTATION MARK" glyphRefID="503"/>
- <map charValue="u201D" charName="RIGHT DOUBLE QUOTATION MARK" glyphRefID="233"/>
- <map charValue="u2039" charName="SINGLE LEFT-POINTING ANGLE QUOTATION MARK" glyphRefID="259"/>
- <map charValue="u203A" charName="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" glyphRefID="261"/>
- <map charValue="u203E" charName="OVERLINE" glyphRefID="325"/>
- <map charValue="u2044" charName="FRACTION SLASH" glyphRefID="246"/>
- <map charValue="u2212" charName="MINUS SIGN" glyphRefID="514"/>
- <map charValue="u2219" charName="BULETTE OPERATOR" glyphRefID="331"/>
- <map charValue="u223C" charName="TILDE OPERATOR" glyphRefID="631"/>
- </cmapOverride>
- </ComponentDef>
- <ComponentDef name="HiraMaruPro-W4">
- <Matrix
- xx="1.0"
- xy="0.0"
- yx="0.0"
- yy="1.0"
- tx="0.0"
- ty="0.0"
- />
- <Tracking trackingValue="1.0"/>
- <ToUnicode fromEncoding="CID Japen1">
- <mapChar fromCharValue="0x20" toCharValue="u20"/>
- <mapChar fromCharValue="0x30" toCharValue="u30"/>
- <mapChar fromCharValue="0x31" toCharValue="u31"/>
- <mapChar fromCharValue="0x32" toCharValue="u32"/>
- <mapChar fromCharValue="0x33" toCharValue="u33"/>
- <mapChar fromCharValue="0x34" toCharValue="u34"/>
- <mapChar fromCharValue="0x35" toCharValue="u35"/>
- <mapChar fromCharValue="0x36" toCharValue="u36"/>
- <mapChar fromCharValue="0x37" toCharValue="u37"/>
- <mapChar fromCharValue="0x38" toCharValue="u38"/>
- <mapChar fromCharValue="0x39" toCharValue="u39"/>
- </ToUnicode>
- </ComponentDef>
- </Components>
-</PosingFont>
diff --git a/Tools/DumpRenderTree/fonts/WebKit Layout Tests 2.ttf b/Tools/DumpRenderTree/fonts/WebKit Layout Tests 2.ttf
deleted file mode 100644
index e732fbc42..000000000
--- a/Tools/DumpRenderTree/fonts/WebKit Layout Tests 2.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKit Layout Tests.ttf b/Tools/DumpRenderTree/fonts/WebKit Layout Tests.ttf
deleted file mode 100644
index f9f997e63..000000000
--- a/Tools/DumpRenderTree/fonts/WebKit Layout Tests.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf
deleted file mode 100644
index 22b00dec7..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher100.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf
deleted file mode 100644
index 1ccadbad5..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher200.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf
deleted file mode 100644
index ab5563dfa..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher300.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf
deleted file mode 100644
index 56d279e0e..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher400.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf
deleted file mode 100644
index d827d7d85..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher500.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf
deleted file mode 100644
index 914159670..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher600.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf
deleted file mode 100644
index a2d05059d..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher700.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf
deleted file mode 100644
index d0f354bf3..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher800.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf b/Tools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf
deleted file mode 100644
index 6b895ca71..000000000
--- a/Tools/DumpRenderTree/fonts/WebKitWeightWatcher900.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp b/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp
deleted file mode 100644
index d89a8d2f6..000000000
--- a/Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2010 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- *
- * 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 "AccessibilityCallbacks.h"
-#include "AccessibilityUIElement.h"
-#include "DumpRenderTree.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-
-#include <atk/atk.h>
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- AtkObject* accessible = DumpRenderTreeSupportGtk::getFocusedAccessibleElement(mainFrame);
- if (!accessible)
- return 0;
-
- return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- AtkObject* accessible = DumpRenderTreeSupportGtk::getRootAccessibleElement(mainFrame);
- if (!accessible)
- return 0;
-
- return AccessibilityUIElement(accessible);
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
-{
- AtkObject* root = DumpRenderTreeSupportGtk::getRootAccessibleElement(mainFrame);
- if (!root)
- return 0;
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(id);
- GOwnPtr<gchar> idBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(id, idBuffer.get(), bufferSize);
-
- AtkObject* result = childElementById(root, idBuffer.get());
- if (ATK_IS_OBJECT(result))
- return AccessibilityUIElement(result);
-
- return 0;
-
-}
diff --git a/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp b/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp
deleted file mode 100644
index 30f7b6436..000000000
--- a/Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2008 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Jan Michael Alonzo
- *
- * 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 "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include <JavaScriptCore/JSStringRef.h>
-#include <atk/atk.h>
-#include <gtk/gtk.h>
-#include <wtf/Assertions.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
-#include <wtf/text/WTFString.h>
-#include <wtf/unicode/CharacterNames.h>
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- ASSERT(ATK_IS_OBJECT(m_element));
-
- CString helpText = DumpRenderTreeSupportGtk::accessibilityHelpText(ATK_OBJECT(m_element));
- GOwnPtr<gchar> axHelpText(g_strdup_printf("AXHelp: %s", helpText.data()));
- return JSStringCreateWithUTF8CString(axHelpText.get());
-}
diff --git a/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp b/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
deleted file mode 100644
index 83212e65d..000000000
--- a/Tools/DumpRenderTree/gtk/DumpRenderTree.cpp
+++ /dev/null
@@ -1,1535 +0,0 @@
-/*
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2008 Alp Toker <alp@nuanti.com>
- * Copyright (C) 2009 Jan Alonzo <jmalonzo@gmail.com>
- * Copyright (C) 2010, 2011 Igalia S.L.
- *
- * 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 "AccessibilityController.h"
-#include "EditingCallbacks.h"
-#include "EventSender.h"
-#include "GCController.h"
-#include "PixelDumpSupport.h"
-#include "SelfScrollingWebKitWebView.h"
-#include "TestRunner.h"
-#include "TextInputController.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include "WebCoreTestSupport.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <JavaScriptCore/JavaScript.h>
-#include <cassert>
-#include <cstdlib>
-#include <cstring>
-#include <getopt.h>
-#include <gtk/gtk.h>
-#include <locale.h>
-#include <webkit/webkit.h>
-#include <wtf/Assertions.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GlibUtilities.h>
-
-#if PLATFORM(X11)
-#include <fontconfig/fontconfig.h>
-#endif
-
-
-using namespace std;
-
-extern "C" {
-// This API is not yet public.
-extern gchar* webkit_web_history_item_get_target(WebKitWebHistoryItem*);
-extern gboolean webkit_web_history_item_is_target_item(WebKitWebHistoryItem*);
-extern GList* webkit_web_history_item_get_children(WebKitWebHistoryItem*);
-extern void webkit_web_settings_add_extra_plugin_directory(WebKitWebView* view, const gchar* directory);
-extern gchar* webkit_web_frame_get_response_mime_type(WebKitWebFrame* frame);
-}
-
-volatile bool done;
-static bool printSeparators;
-static int dumpPixelsForAllTests = false;
-static bool dumpPixelsForCurrentTest;
-static int dumpTree = 1;
-static int useTimeoutWatchdog = 1;
-
-AccessibilityController* axController = 0;
-RefPtr<TestRunner> gTestRunner;
-static GCController* gcController = 0;
-static WebKitWebView* webView;
-static GtkWidget* window;
-static GtkWidget* container;
-static GtkWidget* webInspectorWindow;
-WebKitWebFrame* mainFrame = 0;
-WebKitWebFrame* topLoadingFrame = 0;
-guint waitToDumpWatchdog = 0;
-bool waitForPolicy = false;
-
-// This is a list of opened webviews
-GSList* webViewList = 0;
-
-// current b/f item at the end of the previous test
-static WebKitWebHistoryItem* prevTestBFItem = NULL;
-
-const unsigned historyItemIndent = 8;
-
-static void runTest(const string& inputLine);
-
-static void didRunInsecureContent(WebKitWebFrame*, WebKitSecurityOrigin*, const char* url);
-
-static bool shouldLogFrameLoadDelegates(const string& pathOrURL)
-{
- return pathOrURL.find("loading/") != string::npos;
-}
-
-static bool shouldOpenWebInspector(const string& pathOrURL)
-{
- return pathOrURL.find("inspector/") != string::npos;
-}
-
-static bool shouldDumpAsText(const string& pathOrURL)
-{
- return pathOrURL.find("dumpAsText/") != string::npos;
-}
-
-static bool shouldEnableDeveloperExtras(const string& pathOrURL)
-{
- return true;
-}
-
-void dumpFrameScrollPosition(WebKitWebFrame* frame)
-{
- WebKitDOMDocument* document = webkit_web_frame_get_dom_document(frame);
- if (!document)
- return;
-
- WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
- if (!domWindow)
- return;
-
- glong x = webkit_dom_dom_window_get_page_x_offset(domWindow);
- glong y = webkit_dom_dom_window_get_page_y_offset(domWindow);
-
- if (abs(x) > 0 || abs(y) > 0) {
- if (webkit_web_frame_get_parent(frame))
- printf("frame '%s' ", webkit_web_frame_get_name(frame));
- printf("scrolled to %ld,%ld\n", x, y);
- }
-
- if (gTestRunner->dumpChildFrameScrollPositions()) {
- GSList* children = DumpRenderTreeSupportGtk::getFrameChildren(frame);
- for (GSList* child = children; child; child = g_slist_next(child))
- dumpFrameScrollPosition(static_cast<WebKitWebFrame*>(child->data));
- g_slist_free(children);
- }
-}
-
-void displayWebView()
-{
- DumpRenderTreeSupportGtk::forceWebViewPaint(webView);
- DumpRenderTreeSupportGtk::setTracksRepaints(mainFrame, true);
- DumpRenderTreeSupportGtk::resetTrackedRepaints(mainFrame);
-}
-
-static void appendString(gchar*& target, const gchar* string)
-{
- gchar* oldString = target;
- target = g_strconcat(target, string, NULL);
- g_free(oldString);
-}
-
-static void initializeGtkFontSettings(const char* testURL)
-{
- GtkSettings* settings = gtk_settings_get_default();
- if (!settings)
- return;
- g_object_set(settings,
- "gtk-xft-dpi", 98304, // This is 96 * 1024 or 96 DPI according to the GTK+ docs.
- "gtk-xft-antialias", 1,
- "gtk-xft-hinting", 0,
- "gtk-font-name", "Liberation Sans 12",
- "gtk-icon-theme-name", "gnome",
- NULL);
- gdk_screen_set_resolution(gdk_screen_get_default(), 96.0);
-
- // One test needs subpixel anti-aliasing turned on, but generally we
- // want all text in other tests to use to grayscale anti-aliasing.
- if (testURL && strstr(testURL, "xsettings_antialias_settings.html"))
- g_object_set(settings, "gtk-xft-rgba", "rgb", NULL);
- else
- g_object_set(settings, "gtk-xft-rgba", "none", NULL);
-}
-
-CString getTopLevelPath()
-{
- if (!g_getenv("WEBKIT_TOP_LEVEL"))
- g_setenv("WEBKIT_TOP_LEVEL", TOP_LEVEL_DIR, FALSE);
-
- return TOP_LEVEL_DIR;
-}
-
-CString getOutputDir()
-{
- const char* webkitOutputDir = g_getenv("WEBKIT_OUTPUTDIR");
- if (webkitOutputDir)
- return webkitOutputDir;
-
- CString topLevelPath = getTopLevelPath();
- GOwnPtr<char> outputDir(g_build_filename(topLevelPath.data(), "WebKitBuild", NULL));
- return outputDir.get();
-}
-
-static CString getFontsPath()
-{
- CString webkitOutputDir = getOutputDir();
- GOwnPtr<char> fontsPath(g_build_filename(webkitOutputDir.data(), "Dependencies", "Root", "webkitgtk-test-fonts", NULL));
- if (g_file_test(fontsPath.get(), static_cast<GFileTest>(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
- return fontsPath.get();
-
- // Try alternative fonts path.
- fontsPath.set(g_build_filename(webkitOutputDir.data(), "webkitgtk-test-fonts", NULL));
- if (g_file_test(fontsPath.get(), static_cast<GFileTest>(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
- return fontsPath.get();
-
- return CString();
-}
-
-static void initializeFonts(const char* testURL = 0)
-{
-#if PLATFORM(X11)
- initializeGtkFontSettings(testURL);
-
- FcInit();
-
- // If a test resulted a font being added or removed via the @font-face rule, then
- // we want to reset the FontConfig configuration to prevent it from affecting other tests.
- static int numFonts = 0;
- FcFontSet* appFontSet = FcConfigGetFonts(0, FcSetApplication);
- if (appFontSet && numFonts && appFontSet->nfont == numFonts)
- return;
-
- // Load our configuration file, which sets up proper aliases for family
- // names like sans, serif and monospace.
- FcConfig* config = FcConfigCreate();
- GOwnPtr<gchar> fontConfigFilename(g_build_filename(FONTS_CONF_DIR, "fonts.conf", NULL));
- if (!FcConfigParseAndLoad(config, reinterpret_cast<FcChar8*>(fontConfigFilename.get()), true))
- g_error("Couldn't load font configuration file from: %s", fontConfigFilename.get());
-
- CString fontsPath = getFontsPath();
- if (fontsPath.isNull())
- g_error("Could not locate test fonts at %s. Is WEBKIT_TOP_LEVEL set?", fontsPath.data());
-
- GOwnPtr<GDir> fontsDirectory(g_dir_open(fontsPath.data(), 0, 0));
- while (const char* directoryEntry = g_dir_read_name(fontsDirectory.get())) {
- if (!g_str_has_suffix(directoryEntry, ".ttf") && !g_str_has_suffix(directoryEntry, ".otf"))
- continue;
- GOwnPtr<gchar> fontPath(g_build_filename(fontsPath.data(), directoryEntry, NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<const FcChar8*>(fontPath.get())))
- g_error("Could not load font at %s!", fontPath.get());
-
- }
-
- // Ahem is used by many layout tests.
- GOwnPtr<gchar> ahemFontFilename(g_build_filename(FONTS_CONF_DIR, "AHEM____.TTF", NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(ahemFontFilename.get())))
- g_error("Could not load font at %s!", ahemFontFilename.get());
-
- for (int i = 1; i <= 9; i++) {
- GOwnPtr<gchar> fontFilename(g_strdup_printf("WebKitWeightWatcher%i00.ttf", i));
- GOwnPtr<gchar> fontPath(g_build_filename(FONTS_CONF_DIR, "..", "..", "fonts", fontFilename.get(), NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(fontPath.get())))
- g_error("Could not load font at %s!", fontPath.get());
- }
-
- // A font with no valid Fontconfig encoding to test https://bugs.webkit.org/show_bug.cgi?id=47452
- GOwnPtr<gchar> fontWithNoValidEncodingFilename(g_build_filename(FONTS_CONF_DIR, "FontWithNoValidEncoding.fon", NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(fontWithNoValidEncodingFilename.get())))
- g_error("Could not load font at %s!", fontWithNoValidEncodingFilename.get());
-
- if (!FcConfigSetCurrent(config))
- g_error("Could not set the current font configuration!");
-
- numFonts = FcConfigGetFonts(config, FcSetApplication)->nfont;
-#endif
-}
-
-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);
-
- CString innerText = DumpRenderTreeSupportGtk::getInnerText(frame);
- if (isMainFrame)
- result = g_strdup_printf("%s\n", innerText.data());
- else {
- const gchar* frameName = webkit_web_frame_get_name(frame);
- result = g_strdup_printf("\n--------\nFrame: '%s'\n--------\n%s\n", frameName, innerText.data());
- }
-
- if (gTestRunner->dumpChildFramesAsText()) {
- GSList* children = DumpRenderTreeSupportGtk::getFrameChildren(frame);
- for (GSList* child = children; child; child = g_slist_next(child)) {
- GOwnPtr<gchar> childData(dumpFramesAsText(static_cast<WebKitWebFrame*>(child->data)));
- appendString(result, childData.get());
- }
- g_slist_free(children);
- }
-
- return result;
-}
-
-static gint compareHistoryItems(gpointer* item1, gpointer* item2)
-{
- GOwnPtr<gchar> firstItemTarget(webkit_web_history_item_get_target(WEBKIT_WEB_HISTORY_ITEM(item1)));
- GOwnPtr<gchar> secondItemTarget(webkit_web_history_item_get_target(WEBKIT_WEB_HISTORY_ITEM(item2)));
- return g_ascii_strcasecmp(firstItemTarget.get(), secondItemTarget.get());
-}
-
-static void dumpHistoryItem(WebKitWebHistoryItem* item, int indent, bool current)
-{
- ASSERT(item != NULL);
- int start = 0;
- g_object_ref(item);
- if (current) {
- printf("curr->");
- start = 6;
- }
- for (int i = start; i < indent; i++)
- putchar(' ');
-
- // normalize file URLs.
- const gchar* uri = webkit_web_history_item_get_uri(item);
- gchar* uriScheme = g_uri_parse_scheme(uri);
- if (g_strcmp0(uriScheme, "file") == 0) {
- gchar* pos = g_strstr_len(uri, -1, "/LayoutTests/");
- if (!pos) {
- g_free(uriScheme);
- return;
- }
-
- GString* result = g_string_sized_new(strlen(uri));
- result = g_string_append(result, "(file test):");
- result = g_string_append(result, pos + strlen("/LayoutTests/"));
- printf("%s", result->str);
- g_string_free(result, TRUE);
- } else
- printf("%s", uri);
-
- g_free(uriScheme);
-
- GOwnPtr<gchar> target(webkit_web_history_item_get_target(item));
- if (target.get() && strlen(target.get()) > 0)
- printf(" (in frame \"%s\")", target.get());
- if (webkit_web_history_item_is_target_item(item))
- printf(" **nav target**");
- putchar('\n');
-
- if (GList* kids = webkit_web_history_item_get_children(item)) {
- // must sort to eliminate arbitrary result ordering which defeats reproducible testing
- for (GList* kid = g_list_sort(kids, (GCompareFunc) compareHistoryItems); kid; kid = g_list_next(kid)) {
- WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(kid->data);
- dumpHistoryItem(item, indent + 4, FALSE);
- g_object_unref(item);
- }
- g_list_free(kids);
- }
- g_object_unref(item);
-}
-
-static void dumpBackForwardListForWebView(WebKitWebView* view)
-{
- printf("\n============== Back Forward List ==============\n");
- WebKitWebBackForwardList* bfList = webkit_web_view_get_back_forward_list(view);
-
- // 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
- GList* itemsToPrint = NULL;
- gint forwardListCount = webkit_web_back_forward_list_get_forward_length(bfList);
- for (int i = forwardListCount; i > 0; i--) {
- WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(bfList, i);
- // something is wrong if the item from the last test is in the forward part of the b/f list
- ASSERT(item != prevTestBFItem);
- g_object_ref(item);
- itemsToPrint = g_list_prepend(itemsToPrint, item);
- }
-
- WebKitWebHistoryItem* currentItem = webkit_web_back_forward_list_get_current_item(bfList);
- g_object_ref(currentItem);
- itemsToPrint = g_list_prepend(itemsToPrint, currentItem);
-
- gint backListCount = webkit_web_back_forward_list_get_back_length(bfList);
- for (int i = -1; i >= -(backListCount); i--) {
- WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(bfList, i);
- if (item == prevTestBFItem)
- break;
- g_object_ref(item);
- itemsToPrint = g_list_prepend(itemsToPrint, item);
- }
-
- for (GList* itemToPrint = itemsToPrint; itemToPrint; itemToPrint = g_list_next(itemToPrint)) {
- WebKitWebHistoryItem* item = WEBKIT_WEB_HISTORY_ITEM(itemToPrint->data);
- dumpHistoryItem(item, historyItemIndent, item == currentItem);
- g_object_unref(item);
- }
-
- g_list_free(itemsToPrint);
- printf("===============================================\n");
-}
-
-static void dumpBackForwardListForAllWebViews()
-{
- // Dump the back forward list of the main WebView first
- dumpBackForwardListForWebView(webView);
-
- // The view list is prepended. Reverse the list so we get the order right.
- for (GSList* currentView = g_slist_reverse(webViewList); currentView; currentView = g_slist_next(currentView))
- dumpBackForwardListForWebView(WEBKIT_WEB_VIEW(currentView->data));
-}
-
-void setWaitToDumpWatchdog(guint timer)
-{
- waitToDumpWatchdog = timer;
-}
-
-bool shouldSetWaitToDumpWatchdog()
-{
- return !waitToDumpWatchdog && useTimeoutWatchdog;
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
- if (waitToDumpWatchdog) {
- g_source_remove(waitToDumpWatchdog);
- waitToDumpWatchdog = 0;
- }
-
- waitForPolicy = false;
-}
-
-static void resetDefaultsToConsistentValues()
-{
- WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
- GOwnPtr<gchar> localStoragePath(g_build_filename(g_get_user_data_dir(), "DumpRenderTreeGtk", "databases", NULL));
- g_object_set(G_OBJECT(settings),
- "enable-accelerated-compositing", FALSE,
- "enable-private-browsing", FALSE,
- "enable-developer-extras", FALSE,
- "enable-spell-checking", TRUE,
- "enable-html5-database", TRUE,
- "enable-html5-local-storage", TRUE,
- "html5-local-storage-database-path", localStoragePath.get(),
- "enable-xss-auditor", FALSE,
- "enable-spatial-navigation", FALSE,
- "javascript-can-access-clipboard", TRUE,
- "javascript-can-open-windows-automatically", TRUE,
- "enable-offline-web-application-cache", TRUE,
- "enable-universal-access-from-file-uris", TRUE,
- "enable-file-access-from-file-uris", TRUE,
- "enable-scripts", TRUE,
- "enable-dom-paste", TRUE,
- "default-font-family", "Times",
- "monospace-font-family", "Courier",
- "serif-font-family", "Times",
- "sans-serif-font-family", "Helvetica",
- "cursive-font-family", "cursive",
- "fantasy-font-family", "fantasy",
- "default-font-size", 12,
- "default-monospace-font-size", 10,
- "minimum-font-size", 0,
- "enable-caret-browsing", FALSE,
- "enable-page-cache", FALSE,
- "auto-resize-window", TRUE,
- "auto-load-images", TRUE,
- "enable-java-applet", FALSE,
- "enable-plugins", TRUE,
- "enable-hyperlink-auditing", FALSE,
- "editing-behavior", WEBKIT_EDITING_BEHAVIOR_UNIX,
- "enable-fullscreen", TRUE,
- NULL);
- webkit_web_view_set_settings(webView, settings);
- webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER);
-
- DumpRenderTreeSupportGtk::clearMainFrameName(mainFrame);
- DumpRenderTreeSupportGtk::scalePageBy(webView, 1, 0, 0);
-
- WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
- g_object_set(G_OBJECT(inspector), "javascript-profiling-enabled", FALSE, NULL);
-
- webkit_web_view_set_zoom_level(webView, 1.0);
-
- DumpRenderTreeSupportGtk::resetOriginAccessWhiteLists();
-
- WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
- webkit_web_back_forward_list_clear(list);
-
- SoupSession* session = webkit_get_default_session();
- SoupCookieJar* jar = reinterpret_cast<SoupCookieJar*>(soup_session_get_feature(session, SOUP_TYPE_COOKIE_JAR));
-
- // We only create the jar when the soup backend needs to do
- // HTTP. Should we initialize it earlier, perhaps?
- if (jar)
- g_object_set(G_OBJECT(jar), SOUP_COOKIE_JAR_ACCEPT_POLICY, SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY, NULL);
-
- setlocale(LC_ALL, "");
-
- DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(true);
- webkit_icon_database_set_path(webkit_get_icon_database(), 0);
- DumpRenderTreeSupportGtk::setDefersLoading(webView, false);
- DumpRenderTreeSupportGtk::setSerializeHTTPLoads(false);
-
- if (axController)
- axController->resetToConsistentState();
-
- DumpRenderTreeSupportGtk::clearOpener(mainFrame);
- DumpRenderTreeSupportGtk::setTracksRepaints(mainFrame, false);
-
- DumpRenderTreeSupportGtk::resetGeolocationClientMock(webView);
-
- DumpRenderTreeSupportGtk::setCSSGridLayoutEnabled(webView, false);
- DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webView, true);
- DumpRenderTreeSupportGtk::setCSSCustomFilterEnabled(webView, false);
- DumpRenderTreeSupportGtk::setExperimentalContentSecurityPolicyFeaturesEnabled(true);
- DumpRenderTreeSupportGtk::setSeamlessIFramesEnabled(true);
- DumpRenderTreeSupportGtk::setShadowDOMEnabled(true);
- DumpRenderTreeSupportGtk::setStyleScopedEnabled(true);
-
- if (gTestRunner) {
- gTestRunner->setAuthenticationPassword("");
- gTestRunner->setAuthenticationUsername("");
- gTestRunner->setHandlesAuthenticationChallenges(false);
- }
-
- gtk_widget_set_direction(GTK_WIDGET(webView), GTK_TEXT_DIR_NONE);
-}
-
-static bool useLongRunningServerMode(int argc, char *argv[])
-{
- // This assumes you've already called getopt_long
- return (argc == optind+1 && !strcmp(argv[optind], "-"));
-}
-
-static void runTestingServerLoop()
-{
- // When DumpRenderTree runs 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))
- continue;
-
- runTest(filenameBuffer);
- }
-}
-
-static void initializeGlobalsFromCommandLineOptions(int argc, char *argv[])
-{
- struct option options[] = {
- {"notree", no_argument, &dumpTree, false},
- {"pixel-tests", no_argument, &dumpPixelsForAllTests, true},
- {"tree", no_argument, &dumpTree, true},
- {"no-timeout", no_argument, &useTimeoutWatchdog, false},
- {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;
- }
- }
-}
-
-
-void dump()
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- // Grab widget focus before dumping the contents of a widget, in
- // case it was lost in the course of the test.
- gtk_widget_grab_focus(GTK_WIDGET(webView));
-
- if (dumpTree) {
- char* result = 0;
- gchar* responseMimeType = webkit_web_frame_get_response_mime_type(mainFrame);
-
- if (g_str_equal(responseMimeType, "text/plain")) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
- g_free(responseMimeType);
-
- if (gTestRunner->dumpAsText())
- result = dumpFramesAsText(mainFrame);
- else {
- // Widget resizing is done asynchronously in GTK+. We pump the main
- // loop here, to flush any pending resize requests. This prevents
- // timing issues which affect the size of elements in the output.
- // We only enable this workaround for tests that print the render tree
- // because this seems to break some dumpAsText tests: see bug 39988
- // After fixing that test, we should apply this approach to all dumps.
- while (gtk_events_pending())
- gtk_main_iteration();
-
- result = g_strdup(DumpRenderTreeSupportGtk::dumpRenderTree(mainFrame).data());
- }
-
- if (!result) {
- const char* errorMessage;
- if (gTestRunner->dumpAsText())
- errorMessage = "[documentElement innerText]";
- else if (gTestRunner->dumpDOMAsWebArchive())
- errorMessage = "[[mainFrame DOMDocument] webArchive]";
- else if (gTestRunner->dumpSourceAsWebArchive())
- errorMessage = "[[mainFrame dataSource] webArchive]";
- else
- errorMessage = "[mainFrame renderTreeAsExternalRepresentation]";
- printf("ERROR: nil result from %s", errorMessage);
- } else {
- printf("%s", result);
- g_free(result);
- if (!gTestRunner->dumpAsText() && !gTestRunner->dumpDOMAsWebArchive() && !gTestRunner->dumpSourceAsWebArchive())
- dumpFrameScrollPosition(mainFrame);
-
- if (gTestRunner->dumpBackForwardList())
- dumpBackForwardListForAllWebViews();
- }
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- fflush(stdout);
- fflush(stderr);
- }
- }
-
- if (dumpPixelsForCurrentTest
- && gTestRunner->generatePixelResults()
- && !gTestRunner->dumpDOMAsWebArchive()
- && !gTestRunner->dumpSourceAsWebArchive()) {
- DumpRenderTreeSupportGtk::forceWebViewPaint(webView);
- dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner->expectedPixelHash());
- }
-
- // FIXME: call displayWebView here when we support --paint
-
- done = true;
- gtk_main_quit();
-}
-
-static CString temporaryDatabaseDirectory()
-{
- const char* directoryFromEnvironment = g_getenv("DUMPRENDERTREE_TEMP");
- if (directoryFromEnvironment)
- return directoryFromEnvironment;
- GOwnPtr<char> fallback(g_build_filename(g_get_user_data_dir(), "gtkwebkitdrt", "databases", NULL));
- return fallback.get();
-}
-
-static void setDefaultsToConsistentStateValuesForTesting()
-{
- resetDefaultsToConsistentValues();
-
-#if PLATFORM(X11)
- webkit_web_settings_add_extra_plugin_directory(webView, TEST_PLUGIN_DIR);
-#endif
-
- webkit_set_web_database_directory_path(temporaryDatabaseDirectory().data());
-
-#if defined(GTK_API_VERSION_2)
- gtk_rc_parse_string("style \"nix_scrollbar_spacing\" "
- "{ "
- " GtkScrolledWindow::scrollbar-spacing = 0 "
- "} "
- "class \"GtkWidget\" style \"nix_scrollbar_spacing\"");
-
-#else
- GtkCssProvider* cssProvider = gtk_css_provider_new();
- gtk_css_provider_load_from_data(cssProvider,
- "@binding-set NoKeyboardNavigation { "
- " unbind \"<shift>F10\"; "
- "} "
- " * { "
- " -GtkScrolledWindow-scrollbar-spacing: 0;"
- " gtk-key-bindings: NoKeyboardNavigation; "
- "} ",
- -1, 0);
- gtk_style_context_add_provider_for_screen(gdk_display_get_default_screen(gdk_display_get_default()),
- GTK_STYLE_PROVIDER(cssProvider),
- GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
- g_object_unref(cssProvider);
-#endif
-}
-
-static void sendPixelResultsEOF()
-{
- puts("#EOF");
-
- fflush(stdout);
- fflush(stderr);
-}
-
-static void runTest(const string& inputLine)
-{
- ASSERT(!inputLine.empty());
-
- TestCommand command = parseInputLine(inputLine);
- string& testURL = command.pathOrURL;
- dumpPixelsForCurrentTest = command.shouldDumpPixels || dumpPixelsForAllTests;
-
- // Convert the path into a full file URL if it does not look
- // like an HTTP/S URL (doesn't start with http:// or https://).
- if (testURL.find("http://") && testURL.find("https://")) {
- GFile* testFile = g_file_new_for_path(testURL.c_str());
- gchar* testURLCString = g_file_get_uri(testFile);
- testURL = testURLCString;
- g_free(testURLCString);
- g_object_unref(testFile);
- }
-
- resetDefaultsToConsistentValues();
-
- gTestRunner = TestRunner::create(testURL, command.expectedPixelHash);
- topLoadingFrame = 0;
- done = false;
-
- gTestRunner->setIconDatabaseEnabled(false);
-
- if (shouldLogFrameLoadDelegates(testURL))
- gTestRunner->setDumpFrameLoadCallbacks(true);
-
- if (shouldEnableDeveloperExtras(testURL)) {
- gTestRunner->setDeveloperExtrasEnabled(true);
- if (shouldOpenWebInspector(testURL))
- gTestRunner->showWebInspector();
- if (shouldDumpAsText(testURL)) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
- }
-
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
-
- bool isSVGW3CTest = (testURL.find("svg/W3C-SVG-1.1") != string::npos);
- GtkAllocation size;
- size.x = size.y = 0;
- size.width = isSVGW3CTest ? TestRunner::w3cSVGViewWidth : TestRunner::viewWidth;
- size.height = isSVGW3CTest ? TestRunner::w3cSVGViewHeight : TestRunner::viewHeight;
- gtk_window_resize(GTK_WINDOW(window), size.width, size.height);
- gtk_widget_size_allocate(container, &size);
-
- if (prevTestBFItem)
- g_object_unref(prevTestBFItem);
- WebKitWebBackForwardList* bfList = webkit_web_view_get_back_forward_list(webView);
- prevTestBFItem = webkit_web_back_forward_list_get_current_item(bfList);
- if (prevTestBFItem)
- g_object_ref(prevTestBFItem);
-
- initializeFonts(testURL.c_str());
-
- // Focus the web view before loading the test to avoid focusing problems
- gtk_widget_grab_focus(GTK_WIDGET(webView));
- webkit_web_view_open(webView, testURL.c_str());
-
- gtk_main();
-
- // If developer extras enabled Web Inspector may have been open by the test.
- if (shouldEnableDeveloperExtras(testURL)) {
- gTestRunner->closeWebInspector();
- gTestRunner->setDeveloperExtrasEnabled(false);
- }
-
- // Also check if we still have opened webViews and free them.
- if (gTestRunner->closeRemainingWindowsWhenComplete() || webViewList) {
- while (webViewList) {
- g_object_unref(WEBKIT_WEB_VIEW(webViewList->data));
- webViewList = g_slist_next(webViewList);
- }
- g_slist_free(webViewList);
- webViewList = 0;
- }
-
- WebCoreTestSupport::resetInternalsObject(webkit_web_frame_get_global_context(mainFrame));
- DumpRenderTreeSupportGtk::clearMemoryCache();
- DumpRenderTreeSupportGtk::clearApplicationCache();
-
- // A blank load seems to be necessary to reset state after certain tests.
- webkit_web_view_open(webView, "about:blank");
-
- gTestRunner.clear();
-
- // terminate the (possibly empty) pixels block after all the state reset
- sendPixelResultsEOF();
-}
-
-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)
-{
- // if we finish all the commands, we're ready to dump state
- if (WorkQueue::shared()->processWork() && !gTestRunner->waitToDump())
- dump();
-
- return FALSE;
-}
-
-static char* getFrameNameSuitableForTestResult(WebKitWebView* view, WebKitWebFrame* frame)
-{
- char* frameName = g_strdup(webkit_web_frame_get_name(frame));
-
- if (frame == webkit_web_view_get_main_frame(view)) {
- // This is a bit strange. Shouldn't web_frame_get_name return NULL?
- if (frameName && (frameName[0] != '\0')) {
- char* tmp = g_strdup_printf("main frame \"%s\"", frameName);
- g_free(frameName);
- frameName = tmp;
- } else {
- g_free(frameName);
- frameName = g_strdup("main frame");
- }
- } else if (!frameName || (frameName[0] == '\0')) {
- g_free(frameName);
- frameName = g_strdup("frame (anonymous)");
- } else {
- char* tmp = g_strdup_printf("frame \"%s\"", frameName);
- g_free(frameName);
- frameName = tmp;
- }
-
- return frameName;
-}
-
-static void webViewLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
- // The deprecated "load-finished" signal is triggered by postProgressFinishedNotification(),
- // so we can use it here in the DRT to provide the correct dump.
- if (frame != topLoadingFrame)
- return;
- if (gTestRunner->dumpProgressFinishedCallback())
- printf("postProgressFinishedNotification\n");
-}
-
-static gboolean webViewLoadError(WebKitWebView*, WebKitWebFrame*, gchar*, gpointer, gpointer)
-{
- return TRUE; // Return true here to disable the default error page.
-}
-
-static void webViewDocumentLoadFinished(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- char* frameName = getFrameNameSuitableForTestResult(view, frame);
- printf("%s - didFinishDocumentLoadForFrame\n", frameName);
- g_free(frameName);
- } else if (!done) {
- guint pendingFrameUnloadEvents = DumpRenderTreeSupportGtk::getPendingUnloadEventCount(frame);
- if (pendingFrameUnloadEvents) {
- char* frameName = getFrameNameSuitableForTestResult(view, frame);
- printf("%s - has %u onunload handler(s)\n", frameName, pendingFrameUnloadEvents);
- g_free(frameName);
- }
- }
-}
-
-static void webViewOnloadEvent(WebKitWebView* view, WebKitWebFrame* frame, void*)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- char* frameName = getFrameNameSuitableForTestResult(view, frame);
- printf("%s - didHandleOnloadEventsForFrame\n", frameName);
- g_free(frameName);
- }
-}
-
-static void addControllerToWindow(JSContextRef context, JSObjectRef windowObject, const char* controllerName, JSValueRef controller)
-{
- JSStringRef controllerNameStr = JSStringCreateWithUTF8CString(controllerName);
- JSObjectSetProperty(context, windowObject, controllerNameStr, controller, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
- JSStringRelease(controllerNameStr);
-}
-
-static void webViewWindowObjectCleared(WebKitWebView* view, WebKitWebFrame* frame, JSGlobalContextRef context, JSObjectRef windowObject, gpointer data)
-{
- JSValueRef exception = 0;
- ASSERT(gTestRunner);
-
- gTestRunner->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- gcController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- axController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- addControllerToWindow(context, windowObject, "eventSender", makeEventSender(context, !webkit_web_frame_get_parent(frame)));
- addControllerToWindow(context, windowObject, "textInputController", makeTextInputController(context));
- WebCoreTestSupport::injectInternalsObject(context);
-}
-
-static gboolean webViewConsoleMessage(WebKitWebView* view, const gchar* message, unsigned int line, const gchar* sourceId, gpointer data)
-{
- gchar* testMessage = 0;
- const gchar* uriScheme;
-
- // Tests expect only the filename part of local URIs
- uriScheme = g_strstr_len(message, -1, "file://");
- if (uriScheme) {
- GString* tempString = g_string_sized_new(strlen(message));
- gchar* filename = g_strrstr(uriScheme, G_DIR_SEPARATOR_S);
-
- if (filename) {
- // If the path is a lone slash, keep it to avoid empty output.
- if (strlen(filename) > 1)
- filename += strlen(G_DIR_SEPARATOR_S);
- tempString = g_string_append_len(tempString, message, (uriScheme - message));
- tempString = g_string_append_len(tempString, filename, strlen(filename));
- testMessage = g_string_free(tempString, FALSE);
- }
- }
-
- fprintf(stdout, "CONSOLE MESSAGE: ");
- if (line)
- fprintf(stdout, "line %d: ", line);
- fprintf(stdout, "%s\n", testMessage ? testMessage : message);
- g_free(testMessage);
-
- return TRUE;
-}
-
-
-static gboolean webViewScriptAlert(WebKitWebView* view, WebKitWebFrame* frame, const gchar* message, gpointer data)
-{
- fprintf(stdout, "ALERT: %s\n", message);
- fflush(stdout);
- 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 (gTestRunner->dumpFrameLoadCallbacks() && !done) {
- GOwnPtr<char> frameName(getFrameNameSuitableForTestResult(view, frame));
- printf("%s - didReceiveTitle: %s\n", frameName.get(), title ? title : "");
- }
-
- if (gTestRunner->dumpTitleChanges() && !done)
- printf("TITLE CHANGED: '%s'\n", title ? title : "");
-}
-
-static bool webViewNavigationPolicyDecisionRequested(WebKitWebView* view, WebKitWebFrame* frame,
- WebKitNetworkRequest* request,
- WebKitWebNavigationAction* navAction,
- WebKitWebPolicyDecision* policyDecision)
-{
- // Use the default handler if we're not waiting for policy,
- // i.e., TestRunner::waitForPolicyDelegate
- if (!waitForPolicy)
- return FALSE;
-
- gchar* typeDescription;
- WebKitWebNavigationReason reason;
- g_object_get(G_OBJECT(navAction), "reason", &reason, NULL);
-
- switch(reason) {
- case WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED:
- typeDescription = g_strdup("link clicked");
- break;
- case WEBKIT_WEB_NAVIGATION_REASON_FORM_SUBMITTED:
- typeDescription = g_strdup("form submitted");
- break;
- case WEBKIT_WEB_NAVIGATION_REASON_BACK_FORWARD:
- typeDescription = g_strdup("back/forward");
- break;
- case WEBKIT_WEB_NAVIGATION_REASON_RELOAD:
- typeDescription = g_strdup("reload");
- break;
- case WEBKIT_WEB_NAVIGATION_REASON_FORM_RESUBMITTED:
- typeDescription = g_strdup("form resubmitted");
- break;
- case WEBKIT_WEB_NAVIGATION_REASON_OTHER:
- typeDescription = g_strdup("other");
- break;
- default:
- typeDescription = g_strdup("illegal value");
- }
-
- printf("Policy delegate: attempt to load %s with navigation type '%s'\n", webkit_network_request_get_uri(request), typeDescription);
- g_free(typeDescription);
-
- webkit_web_policy_decision_ignore(policyDecision);
- gTestRunner->notifyDone();
-
- return TRUE;
-}
-
-static void webViewStatusBarTextChanged(WebKitWebView* view, const gchar* message, gpointer data)
-{
- // Are we doing anything wrong? One test that does not call
- // dumpStatusCallbacks gets true here
- if (gTestRunner->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", message);
-}
-
-static gboolean webViewClose(WebKitWebView* view)
-{
- ASSERT(view);
-
- webViewList = g_slist_remove(webViewList, view);
- g_object_unref(view);
-
- return TRUE;
-}
-
-static void databaseQuotaExceeded(WebKitWebView* view, WebKitWebFrame* frame, WebKitWebDatabase *database)
-{
- ASSERT(view);
- ASSERT(frame);
- ASSERT(database);
-
- WebKitSecurityOrigin* origin = webkit_web_database_get_security_origin(database);
- if (gTestRunner->dumpDatabaseCallbacks()) {
- printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%s, %s, %i} database:%s\n",
- webkit_security_origin_get_protocol(origin),
- webkit_security_origin_get_host(origin),
- webkit_security_origin_get_port(origin),
- webkit_web_database_get_name(database));
- }
- webkit_security_origin_set_web_database_quota(origin, 5 * 1024 * 1024);
-}
-
-static bool
-geolocationPolicyDecisionRequested(WebKitWebView*, WebKitWebFrame*, WebKitGeolocationPolicyDecision* decision)
-{
- if (!gTestRunner->isGeolocationPermissionSet())
- return FALSE;
- if (gTestRunner->geolocationPermission())
- webkit_geolocation_policy_allow(decision);
- else
- webkit_geolocation_policy_deny(decision);
-
- return TRUE;
-}
-
-
-static WebKitWebView* webViewCreate(WebKitWebView*, WebKitWebFrame*);
-
-static gboolean webInspectorShowWindow(WebKitWebInspector*, gpointer data)
-{
- gtk_window_set_default_size(GTK_WINDOW(webInspectorWindow), TestRunner::viewWidth, TestRunner::viewHeight);
- gtk_widget_show_all(webInspectorWindow);
- return TRUE;
-}
-
-static gboolean webInspectorCloseWindow(WebKitWebInspector*, gpointer data)
-{
- gtk_widget_destroy(webInspectorWindow);
- webInspectorWindow = 0;
- return TRUE;
-}
-
-static WebKitWebView* webInspectorInspectWebView(WebKitWebInspector*, gpointer data)
-{
- webInspectorWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-
- GtkWidget* webView = self_scrolling_webkit_web_view_new();
- gtk_container_add(GTK_CONTAINER(webInspectorWindow),
- webView);
-
- return WEBKIT_WEB_VIEW(webView);
-}
-
-static void topLoadingFrameLoadFinished()
-{
- topLoadingFrame = 0;
- WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test
- if (gTestRunner->waitToDump())
- return;
-
- if (WorkQueue::shared()->count())
- g_timeout_add(0, processWork, 0);
- else
- dump();
-}
-
-static void webFrameLoadStatusNotified(WebKitWebFrame* frame, gpointer user_data)
-{
- WebKitLoadStatus loadStatus = webkit_web_frame_get_load_status(frame);
-
- if (gTestRunner->dumpFrameLoadCallbacks()) {
- GOwnPtr<char> frameName(getFrameNameSuitableForTestResult(webkit_web_frame_get_web_view(frame), frame));
-
- switch (loadStatus) {
- case WEBKIT_LOAD_PROVISIONAL:
- if (!done)
- printf("%s - didStartProvisionalLoadForFrame\n", frameName.get());
- break;
- case WEBKIT_LOAD_COMMITTED:
- if (!done)
- printf("%s - didCommitLoadForFrame\n", frameName.get());
- break;
- case WEBKIT_LOAD_FINISHED:
- if (!done)
- printf("%s - didFinishLoadForFrame\n", frameName.get());
- break;
- default:
- break;
- }
- }
-
- if ((loadStatus == WEBKIT_LOAD_FINISHED || loadStatus == WEBKIT_LOAD_FAILED)
- && frame == topLoadingFrame)
- topLoadingFrameLoadFinished();
-}
-
-static void frameCreatedCallback(WebKitWebView* webView, WebKitWebFrame* webFrame, gpointer user_data)
-{
- g_signal_connect(webFrame, "notify::load-status", G_CALLBACK(webFrameLoadStatusNotified), NULL);
- g_signal_connect(webFrame, "insecure-content-run", G_CALLBACK(didRunInsecureContent), NULL);
-}
-
-
-static CString pathFromSoupURI(SoupURI* uri)
-{
- if (!uri)
- return CString();
-
- if (g_str_equal(uri->scheme, "http") || g_str_equal(uri->scheme, "ftp")) {
- GOwnPtr<char> uriString(soup_uri_to_string(uri, FALSE));
- return CString(uriString.get());
- }
-
- GOwnPtr<gchar> parentPath(g_path_get_dirname(uri->path));
- GOwnPtr<gchar> pathDirname(g_path_get_basename(parentPath.get()));
- GOwnPtr<gchar> pathBasename(g_path_get_basename(uri->path));
- GOwnPtr<gchar> urlPath(g_strdup_printf("%s/%s", pathDirname.get(), pathBasename.get()));
- return CString(urlPath.get());
-}
-
-static CString convertSoupMessageToURLPath(SoupMessage* soupMessage)
-{
- if (!soupMessage)
- return CString();
- if (SoupURI* requestURI = soup_message_get_uri(soupMessage))
- return pathFromSoupURI(requestURI);
- return CString();
-}
-
-static CString convertNetworkRequestToURLPath(WebKitNetworkRequest* request)
-{
- return convertSoupMessageToURLPath(webkit_network_request_get_message(request));
-}
-
-static CString convertWebResourceToURLPath(WebKitWebResource* webResource)
-{
- SoupURI* uri = soup_uri_new(webkit_web_resource_get_uri(webResource));
- CString urlPath(pathFromSoupURI(uri));
- soup_uri_free(uri);
- return urlPath;
-}
-
-static CString urlSuitableForTestResult(const char* uriString)
-{
- if (!g_str_has_prefix(uriString, "file://"))
- return CString(uriString);
-
- GOwnPtr<gchar> basename(g_path_get_basename(uriString));
- return CString(basename.get());
-}
-
-static CString descriptionSuitableForTestResult(SoupURI* uri)
-{
- if (!uri)
- return CString("");
-
- GOwnPtr<char> uriString(soup_uri_to_string(uri, false));
- return urlSuitableForTestResult(uriString.get());
-}
-
-static CString descriptionSuitableForTestResult(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* webResource)
-{
- SoupURI* uri = soup_uri_new(webkit_web_resource_get_uri(webResource));
- CString description;
- WebKitWebDataSource* dataSource = webkit_web_frame_get_data_source(webFrame);
-
- if (webResource == webkit_web_data_source_get_main_resource(dataSource)
- && (!webkit_web_view_get_progress(webView) || g_str_equal(uri->scheme, "file")))
- description = CString("<unknown>");
- else
- description = convertWebResourceToURLPath(webResource);
-
- if (uri)
- soup_uri_free(uri);
-
- return description;
-}
-
-static CString descriptionSuitableForTestResult(GError* error, WebKitWebResource* webResource)
-{
- const gchar* errorDomain = g_quark_to_string(error->domain);
- CString resourceURIString(urlSuitableForTestResult(webkit_web_resource_get_uri(webResource)));
-
- if (g_str_equal(errorDomain, "webkit-network-error-quark") || g_str_equal(errorDomain, "soup_http_error_quark"))
- errorDomain = "NSURLErrorDomain";
-
- if (g_str_equal(errorDomain, "WebKitPolicyError"))
- errorDomain = "WebKitErrorDomain";
-
- // TODO: the other ports get the failingURL from the ResourceError
- GOwnPtr<char> errorString(g_strdup_printf("<NSError domain %s, code %d, failing URL \"%s\">",
- errorDomain, error->code, resourceURIString.data()));
- return CString(errorString.get());
-}
-
-static CString descriptionSuitableForTestResult(WebKitNetworkRequest* request)
-{
- SoupMessage* soupMessage = webkit_network_request_get_message(request);
-
- if (!soupMessage)
- return CString("");
-
- SoupURI* requestURI = soup_message_get_uri(soupMessage);
- SoupURI* mainDocumentURI = soup_message_get_first_party(soupMessage);
- CString requestURIString(descriptionSuitableForTestResult(requestURI));
- CString mainDocumentURIString(descriptionSuitableForTestResult(mainDocumentURI));
- CString path(convertNetworkRequestToURLPath(request));
- GOwnPtr<char> description(g_strdup_printf("<NSURLRequest URL %s, main document URL %s, http method %s>",
- path.data(), mainDocumentURIString.data(), soupMessage->method));
- return CString(description.get());
-}
-
-static CString descriptionSuitableForTestResult(WebKitNetworkResponse* response)
-{
- if (!response)
- return CString("(null)");
-
- int statusCode = 0;
- CString responseURIString(urlSuitableForTestResult(webkit_network_response_get_uri(response)));
- SoupMessage* soupMessage = webkit_network_response_get_message(response);
- CString path;
-
- if (soupMessage) {
- statusCode = soupMessage->status_code;
- path = convertSoupMessageToURLPath(soupMessage);
- } else
- path = CString("");
-
- GOwnPtr<char> description(g_strdup_printf("<NSURLResponse %s, http status code %d>", path.data(), statusCode));
- return CString(description.get());
-}
-
-static void willSendRequestCallback(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* resource, WebKitNetworkRequest* request, WebKitNetworkResponse* response)
-{
-
-
- if (!done && gTestRunner->willSendRequestReturnsNull()) {
- // As requested by the TestRunner, don't perform the request.
- webkit_network_request_set_uri(request, "about:blank");
- return;
- }
-
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- printf("%s - willSendRequest %s redirectResponse %s\n",
- convertNetworkRequestToURLPath(request).data(),
- descriptionSuitableForTestResult(request).data(),
- descriptionSuitableForTestResult(response).data());
-
- SoupMessage* soupMessage = webkit_network_request_get_message(request);
- SoupURI* uri = soup_uri_new(webkit_network_request_get_uri(request));
-
- if (SOUP_URI_IS_VALID(uri)) {
- GOwnPtr<char> uriString(soup_uri_to_string(uri, FALSE));
-
- if (SOUP_URI_VALID_FOR_HTTP(uri) && g_strcmp0(uri->host, "127.0.0.1")
- && g_strcmp0(uri->host, "255.255.255.255")
- && g_ascii_strncasecmp(uri->host, "localhost", 9)) {
- printf("Blocked access to external URL %s\n", uriString.get());
- // Cancel load of blocked resource to avoid potential
- // network-related timeouts in tests.
- webkit_network_request_set_uri(request, "about:blank");
- soup_uri_free(uri);
- return;
- }
-
- const string& destination = gTestRunner->redirectionDestinationForURL(uriString.get());
- if (!destination.empty())
- webkit_network_request_set_uri(request, destination.c_str());
- }
-
- if (uri)
- soup_uri_free(uri);
-
- if (soupMessage) {
- const set<string>& clearHeaders = gTestRunner->willSendRequestClearHeaders();
- for (set<string>::const_iterator header = clearHeaders.begin(); header != clearHeaders.end(); ++header)
- soup_message_headers_remove(soupMessage->request_headers, header->c_str());
- }
-}
-
-
-static void didReceiveResponse(WebKitWebView* webView, WebKitWebFrame*, WebKitWebResource* webResource, WebKitNetworkResponse* response)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- CString responseDescription(descriptionSuitableForTestResult(response));
- CString path(convertWebResourceToURLPath(webResource));
- printf("%s - didReceiveResponse %s\n", path.data(), responseDescription.data());
- }
-
- // TODO: add "has MIME type" whenever dumpResourceResponseMIMETypes() is supported.
- // See https://bugs.webkit.org/show_bug.cgi?id=58222.
-}
-
-static void didFinishLoading(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* webResource)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks())
- printf("%s - didFinishLoading\n", descriptionSuitableForTestResult(webView, webFrame, webResource).data());
-}
-
-static void didFailLoadingWithError(WebKitWebView* webView, WebKitWebFrame* webFrame, WebKitWebResource* webResource, GError* webError)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- CString webErrorString(descriptionSuitableForTestResult(webError, webResource));
- printf("%s - didFailLoadingWithError: %s\n", descriptionSuitableForTestResult(webView, webFrame, webResource).data(),
- webErrorString.data());
- }
-}
-
-static void didRunInsecureContent(WebKitWebFrame*, WebKitSecurityOrigin*, const char* url)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didRunInsecureContent\n");
-}
-
-static gboolean webViewRunFileChooser(WebKitWebView*, WebKitFileChooserRequest*)
-{
- // We return TRUE to not propagate the event further so the
- // default file chooser dialog is not shown.
- return TRUE;
-}
-
-static void frameLoadEventCallback(WebKitWebFrame* frame, DumpRenderTreeSupportGtk::FrameLoadEvent event, const char* url)
-{
- if (done || !gTestRunner->dumpFrameLoadCallbacks())
- return;
-
- GOwnPtr<char> frameName(getFrameNameSuitableForTestResult(webkit_web_frame_get_web_view(frame), frame));
- switch (event) {
- case DumpRenderTreeSupportGtk::WillPerformClientRedirectToURL:
- ASSERT(url);
- printf("%s - willPerformClientRedirectToURL: %s \n", frameName.get(), url);
- break;
- case DumpRenderTreeSupportGtk::DidCancelClientRedirect:
- printf("%s - didCancelClientRedirectForFrame\n", frameName.get());
- break;
- case DumpRenderTreeSupportGtk::DidReceiveServerRedirectForProvisionalLoad:
- printf("%s - didReceiveServerRedirectForProvisionalLoadForFrame\n", frameName.get());
- break;
- case DumpRenderTreeSupportGtk::DidDisplayInsecureContent:
- printf ("didDisplayInsecureContent\n");
- break;
- case DumpRenderTreeSupportGtk::DidDetectXSS:
- printf ("didDetectXSS\n");
- break;
- default:
- ASSERT_NOT_REACHED();
- }
-}
-
-static bool authenticationCallback(CString& username, CString& password)
-{
- if (!gTestRunner->handlesAuthenticationChallenges()) {
- printf("<unknown> - didReceiveAuthenticationChallenge - Simulating cancelled authentication sheet\n");
- return false;
- }
-
- username = gTestRunner->authenticationUsername().c_str();
- password = gTestRunner->authenticationPassword().c_str();
- printf("<unknown> - didReceiveAuthenticationChallenge - Responding with %s:%s\n", username.data(), password.data());
- return true;
-}
-
-static WebKitWebView* createWebView()
-{
- // It is important to declare DRT is running early so when creating
- // web view mock clients are used instead of proper ones.
- DumpRenderTreeSupportGtk::setDumpRenderTreeModeEnabled(true);
-
- DumpRenderTreeSupportGtk::setFrameLoadEventCallback(frameLoadEventCallback);
- DumpRenderTreeSupportGtk::setAuthenticationCallback(authenticationCallback);
-
- WebKitWebView* view = WEBKIT_WEB_VIEW(self_scrolling_webkit_web_view_new());
-
- g_object_connect(G_OBJECT(view),
- "signal::load-started", webViewLoadStarted, 0,
- "signal::load-finished", webViewLoadFinished, 0,
- "signal::load-error", webViewLoadError, 0,
- "signal::window-object-cleared", webViewWindowObjectCleared, 0,
- "signal::console-message", webViewConsoleMessage, 0,
- "signal::script-alert", webViewScriptAlert, 0,
- "signal::script-prompt", webViewScriptPrompt, 0,
- "signal::script-confirm", webViewScriptConfirm, 0,
- "signal::title-changed", webViewTitleChanged, 0,
- "signal::navigation-policy-decision-requested", webViewNavigationPolicyDecisionRequested, 0,
- "signal::status-bar-text-changed", webViewStatusBarTextChanged, 0,
- "signal::create-web-view", webViewCreate, 0,
- "signal::close-web-view", webViewClose, 0,
- "signal::database-quota-exceeded", databaseQuotaExceeded, 0,
- "signal::document-load-finished", webViewDocumentLoadFinished, 0,
- "signal::geolocation-policy-decision-requested", geolocationPolicyDecisionRequested, 0,
- "signal::onload-event", webViewOnloadEvent, 0,
- "signal::drag-begin", dragBeginCallback, 0,
- "signal::drag-end", dragEndCallback, 0,
- "signal::drag-failed", dragFailedCallback, 0,
- "signal::frame-created", frameCreatedCallback, 0,
- "signal::resource-request-starting", willSendRequestCallback, 0,
- "signal::resource-response-received", didReceiveResponse, 0,
- "signal::resource-load-finished", didFinishLoading, 0,
- "signal::resource-load-failed", didFailLoadingWithError, 0,
- "signal::run-file-chooser", webViewRunFileChooser, 0,
- NULL);
- connectEditingCallbacks(view);
-
- WebKitWebInspector* inspector = webkit_web_view_get_inspector(view);
- g_object_connect(G_OBJECT(inspector),
- "signal::inspect-web-view", webInspectorInspectWebView, 0,
- "signal::show-window", webInspectorShowWindow, 0,
- "signal::close-window", webInspectorCloseWindow, 0,
- NULL);
-
- if (webView) {
- WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
- webkit_web_view_set_settings(view, settings);
- }
-
- // frame-created is not issued for main frame. That's why we must do this here
- WebKitWebFrame* frame = webkit_web_view_get_main_frame(view);
- g_signal_connect(frame, "notify::load-status", G_CALLBACK(webFrameLoadStatusNotified), NULL);
- g_signal_connect(frame, "insecure-content-run", G_CALLBACK(didRunInsecureContent), NULL);
-
- return view;
-}
-
-static WebKitWebView* webViewCreate(WebKitWebView* view, WebKitWebFrame* frame)
-{
- if (!gTestRunner->canOpenWindows())
- return 0;
-
- // Make sure that waitUntilDone has been called.
- ASSERT(gTestRunner->waitToDump());
-
- WebKitWebView* newWebView = createWebView();
- g_object_ref_sink(G_OBJECT(newWebView));
- webViewList = g_slist_prepend(webViewList, newWebView);
- return newWebView;
-}
-
-static void logHandler(const gchar* domain, GLogLevelFlags level, const gchar* message, gpointer data)
-{
- if (level < G_LOG_LEVEL_DEBUG)
- fprintf(stderr, "%s\n", message);
-}
-
-int main(int argc, char* argv[])
-{
- gtk_init(&argc, &argv);
-
- // Some plugins might try to use the GLib logger for printing debug
- // messages. This will cause tests to fail because of unexpected output.
- // We squelch all debug messages sent to the logger.
- g_log_set_default_handler(logHandler, 0);
-
- initializeGlobalsFromCommandLineOptions(argc, argv);
- initializeFonts();
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-#ifdef GTK_API_VERSION_2
- container = gtk_hbox_new(TRUE, 0);
-#else
- container = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_set_homogeneous(GTK_BOX(container), TRUE);
-#endif
- gtk_container_add(GTK_CONTAINER(window), container);
- gtk_widget_show_all(window);
-
- webView = createWebView();
- gtk_box_pack_start(GTK_BOX(container), GTK_WIDGET(webView), TRUE, TRUE, 0);
- gtk_widget_realize(GTK_WIDGET(webView));
- gtk_widget_show_all(container);
- mainFrame = webkit_web_view_get_main_frame(webView);
-
- setDefaultsToConsistentStateValuesForTesting();
-
- gcController = new GCController();
- axController = new AccessibilityController();
-
- if (useLongRunningServerMode(argc, argv)) {
- printSeparators = true;
- runTestingServerLoop();
- } else {
- printSeparators = (optind < argc-1 || (dumpPixelsForCurrentTest && dumpTree));
- for (int i = optind; i != argc; ++i)
- runTest(argv[i]);
- }
-
- delete gcController;
- gcController = 0;
-
- delete axController;
- axController = 0;
-
- gtk_widget_destroy(window);
-
- return 0;
-}
diff --git a/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h b/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h
deleted file mode 100644
index e07d6f0fa..000000000
--- a/Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h
+++ /dev/null
@@ -1,48 +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>
-#include <glib.h>
-#include <wtf/text/CString.h>
-
-extern WebKitWebFrame* mainFrame;
-extern WebKitWebFrame* topLoadingFrame;
-extern bool waitForPolicy;
-extern GSList* webViewList;
-
-gchar* JSStringCopyUTF8CString(JSStringRef jsString);
-CString getTopLevelPath();
-
-void setWaitToDumpWatchdog(guint timer);
-bool shouldSetWaitToDumpWatchdog();
-
-#endif // DumpRenderTreeGtk_h
diff --git a/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp b/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp
deleted file mode 100644
index ef5a969ae..000000000
--- a/Tools/DumpRenderTree/gtk/EditingCallbacks.cpp
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 "EditingCallbacks.h"
-
-#include "DumpRenderTree.h"
-#include "TestRunner.h"
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/text/CString.h>
-
-static CString dumpNodePath(WebKitDOMNode* node)
-{
- GOwnPtr<gchar> nodeName(webkit_dom_node_get_node_name(node));
- GString* path = g_string_new(nodeName.get());
-
- WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node);
- while (parent) {
- GOwnPtr<gchar> parentName(webkit_dom_node_get_node_name(parent));
-
- g_string_append(path, " > ");
- g_string_append(path, parentName.get());
- parent = webkit_dom_node_get_parent_node(parent);
- }
-
- GOwnPtr<gchar> pathBuffer(g_string_free(path, FALSE));
- return pathBuffer.get();
-}
-
-static CString dumpRange(WebKitDOMRange* range)
-{
- if (!range)
- return "(null)";
-
- GOwnPtr<gchar> dump(g_strdup_printf("range from %li of %s to %li of %s",
- webkit_dom_range_get_start_offset(range, 0),
- dumpNodePath(webkit_dom_range_get_start_container(range, 0)).data(),
- webkit_dom_range_get_end_offset(range, 0),
- dumpNodePath(webkit_dom_range_get_end_container(range, 0)).data()));
-
- return dump.get();
-}
-
-static const char* insertActionString(WebKitInsertAction action)
-{
- switch (action) {
- case WEBKIT_INSERT_ACTION_TYPED:
- return "WebViewInsertActionTyped";
- case WEBKIT_INSERT_ACTION_PASTED:
- return "WebViewInsertActionPasted";
- case WEBKIT_INSERT_ACTION_DROPPED:
- return "WebViewInsertActionDropped";
- }
- ASSERT_NOT_REACHED();
- return "WebViewInsertActionTyped";
-}
-
-static const char* selectionAffinityString(WebKitSelectionAffinity affinity)
-{
- switch (affinity) {
- case WEBKIT_SELECTION_AFFINITY_UPSTREAM:
- return "NSSelectionAffinityUpstream";
- case WEBKIT_SELECTION_AFFINITY_DOWNSTREAM:
- return "NSSelectionAffinityDownstream";
- }
- ASSERT_NOT_REACHED();
- return "NSSelectionAffinityUpstream";
-}
-
-gboolean shouldBeginEditing(WebKitWebView* webView, WebKitDOMRange* range)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", dumpRange(range).data());
- return TRUE;
-}
-
-gboolean shouldEndEditing(WebKitWebView* webView, WebKitDOMRange* range)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldEndEditingInDOMRange:%s\n", dumpRange(range).data());
- return TRUE;
-}
-
-gboolean shouldInsertNode(WebKitWebView* webView, WebKitDOMNode* node, WebKitDOMRange* range, WebKitInsertAction action)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- printf("EDITING DELEGATE: shouldInsertNode:%s replacingDOMRange:%s givenAction:%s\n",
- dumpNodePath(node).data(), dumpRange(range).data(), insertActionString(action));
- }
- return TRUE;
-}
-
-gboolean shouldInsertText(WebKitWebView* webView, const gchar* text, WebKitDOMRange* range, WebKitInsertAction action)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- printf("EDITING DELEGATE: shouldInsertText:%s replacingDOMRange:%s givenAction:%s\n",
- text, dumpRange(range).data(), insertActionString(action));
- }
- return TRUE;
-}
-
-gboolean shouldDeleteRange(WebKitWebView* webView, WebKitDOMRange* range)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldDeleteDOMRange:%s\n", dumpRange(range).data());
- return TRUE;
-}
-
-gboolean shouldShowDeleteInterfaceForElement(WebKitWebView* webView, WebKitDOMHTMLElement* element)
-{
- return FALSE;
-}
-
-gboolean shouldChangeSelectedRange(WebKitWebView* webView, WebKitDOMRange* fromRange, WebKitDOMRange* toRange, WebKitSelectionAffinity affinity, gboolean stillSelecting)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- printf("EDITING DELEGATE: shouldChangeSelectedDOMRange:%s toDOMRange:%s affinity:%s stillSelecting:%s\n",
- dumpRange(fromRange).data(), dumpRange(toRange).data(), selectionAffinityString(affinity),
- stillSelecting ? "TRUE" : "FALSE");
- }
- return TRUE;
-}
-
-gboolean shouldApplyStyle(WebKitWebView* webView, WebKitDOMCSSStyleDeclaration* style, WebKitDOMRange* range)
-{
- if (!done && gTestRunner->dumpEditingCallbacks()) {
- GOwnPtr<gchar> styleText(webkit_dom_css_style_declaration_get_css_text(style));
- printf("EDITING DELEGATE: shouldApplyStyle:%s toElementsInDOMRange:%s\n",
- styleText.get(), dumpRange(range).data());
- }
- return TRUE;
-}
-
-void editingBegan(WebKitWebView*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidBeginEditing:WebViewDidBeginEditingNotification\n");
-}
-
-void userChangedContents(WebKitWebView*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChange:WebViewDidChangeNotification\n");
-}
-
-void editingEnded(WebKitWebView*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidEndEditing:WebViewDidEndEditingNotification\n");
-}
-
-void selectionChanged(WebKitWebView*)
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n");
-}
-
-void connectEditingCallbacks(WebKitWebView* webView)
-{
- g_object_connect(G_OBJECT(webView),
- "signal::should-begin-editing", shouldBeginEditing, 0,
- "signal::should-end-editing", shouldEndEditing, 0,
- "signal::should-insert-node", shouldInsertNode, 0,
- "signal::should-insert-text", shouldInsertText, 0,
- "signal::should-delete-range", shouldDeleteRange, 0,
- "signal::should-show-delete-interface-for-element", shouldShowDeleteInterfaceForElement, 0,
- "signal::should-change-selected-range", shouldChangeSelectedRange, 0,
- "signal::should-apply-style", shouldApplyStyle, 0,
- "signal::editing-began", editingBegan, 0,
- "signal::user-changed-contents", userChangedContents, 0,
- "signal::editing-ended", editingEnded, 0,
- "signal::selection-changed", selectionChanged, 0,
- NULL);
-}
-
diff --git a/Tools/DumpRenderTree/gtk/EditingCallbacks.h b/Tools/DumpRenderTree/gtk/EditingCallbacks.h
deleted file mode 100644
index 7a9514917..000000000
--- a/Tools/DumpRenderTree/gtk/EditingCallbacks.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 EditingCallbacks_h
-#define EditingCallbacks_h
-
-typedef struct _WebKitWebView WebKitWebView;
-void connectEditingCallbacks(WebKitWebView*);
-
-#endif
diff --git a/Tools/DumpRenderTree/gtk/EventSender.cpp b/Tools/DumpRenderTree/gtk/EventSender.cpp
deleted file mode 100644
index 8fd693564..000000000
--- a/Tools/DumpRenderTree/gtk/EventSender.cpp
+++ /dev/null
@@ -1,999 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2012 ChangSeok Oh <shivamidow@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.
- */
-
-#include "config.h"
-#include "EventSender.h"
-
-#include "DumpRenderTree.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include <GOwnPtrGtk.h>
-#include <GRefPtrGtk.h>
-#include <GtkVersioning.h>
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <cstring>
-#include <gdk/gdk.h>
-#include <gdk/gdkkeysyms.h>
-#include <webkit/webkitwebframe.h>
-#include <webkit/webkitwebview.h>
-#include <wtf/ASCIICType.h>
-#include <wtf/Platform.h>
-#include <wtf/text/CString.h>
-
-extern "C" {
- extern GtkMenu* webkit_web_view_get_context_menu(WebKitWebView*);
-}
-
-static bool dragMode;
-static int timeOffset = 0;
-
-static int lastMousePositionX;
-static int lastMousePositionY;
-static int lastClickPositionX;
-static int lastClickPositionY;
-static int lastClickTimeOffset;
-static int lastClickButton;
-static unsigned buttonCurrentlyDown;
-static int clickCount;
-GdkDragContext* currentDragSourceContext;
-
-struct DelayedMessage {
- GdkEvent* event;
- gulong delay;
-};
-
-static DelayedMessage msgQueue[1024];
-
-static unsigned endOfQueue;
-static unsigned startOfQueue;
-
-static const float zoomMultiplierRatio = 1.2f;
-
-// WebCore and layout tests assume this value.
-static const float pixelsPerScrollTick = 40;
-
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
- DOM_KEY_LOCATION_STANDARD = 0x00,
- DOM_KEY_LOCATION_LEFT = 0x01,
- DOM_KEY_LOCATION_RIGHT = 0x02,
- DOM_KEY_LOCATION_NUMPAD = 0x03
-};
-
-static void sendOrQueueEvent(GdkEvent*, bool = true);
-static void dispatchEvent(GdkEvent* event);
-static guint getStateFlags();
-
-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 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);
- timeOffset += msgQueue[endOfQueue].delay;
- ASSERT(!exception || !*exception);
- }
-
- return JSValueMakeUndefined(context);
-}
-
-bool prepareMouseButtonEvent(GdkEvent* event, int eventSenderButtonNumber, guint modifiers)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return false;
-
- // The logic for mapping EventSender button numbers to GDK button
- // numbers originates from the Windows EventSender.
- int gdkButtonNumber = 3;
- if (eventSenderButtonNumber >= 0 && eventSenderButtonNumber <= 2)
- gdkButtonNumber = eventSenderButtonNumber + 1;
-
- // fast/events/mouse-click-events expects the 4th button
- // to be event->button = 1, so send a middle-button event.
- else if (eventSenderButtonNumber == 3)
- gdkButtonNumber = 2;
-
- event->button.button = gdkButtonNumber;
- event->button.x = lastMousePositionX;
- event->button.y = lastMousePositionY;
- event->button.window = gtk_widget_get_window(GTK_WIDGET(view));
- g_object_ref(event->button.window);
- event->button.device = getDefaultGDKPointerDevice(event->button.window);
- event->button.state = modifiers | getStateFlags();
- event->button.time = GDK_CURRENT_TIME;
- event->button.axes = 0;
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
- event->button.x_root = xRoot;
- event->button.y_root = yRoot;
-
- return true;
-}
-
-static JSValueRef getMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
-{
- GtkWidget* widget = GTK_WIDGET(JSObjectGetPrivate(object));
- CString label;
- if (GTK_IS_SEPARATOR_MENU_ITEM(widget))
- label = "<separator>";
- else
- label = gtk_menu_item_get_label(GTK_MENU_ITEM(widget));
-
- JSRetainPtr<JSStringRef> itemText(Adopt, JSStringCreateWithUTF8CString(label.data()));
- return JSValueMakeString(context, itemText.get());
-}
-
-static bool setMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef value, JSValueRef* exception)
-{
- return true;
-}
-
-static JSValueRef menuItemClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GtkMenuItem* item = GTK_MENU_ITEM(JSObjectGetPrivate(thisObject));
- gtk_menu_item_activate(item);
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticMenuItemFunctions[] = {
- { "click", menuItemClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticMenuItemValues[] = {
- { "title", getMenuItemTitleCallback, setMenuItemTitleCallback, kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getMenuItemClass()
-{
- static JSClassRef menuItemClass = 0;
-
- if (!menuItemClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticMenuItemFunctions;
- classDefinition.staticValues = staticMenuItemValues;
-
- menuItemClass = JSClassCreate(&classDefinition);
- }
-
- return menuItemClass;
-}
-
-
-static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
-
- if (!prepareMouseButtonEvent(pressEvent, 2, 0)) {
- gdk_event_free(pressEvent);
- return JSObjectMakeArray(context, 0, 0, 0);
- }
-
- GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
- sendOrQueueEvent(pressEvent);
-
- JSValueRef valueRef = JSObjectMakeArray(context, 0, 0, 0);
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- GtkMenu* gtkMenu = webkit_web_view_get_context_menu(view);
- if (gtkMenu) {
- GOwnPtr<GList> items(gtk_container_get_children(GTK_CONTAINER(gtkMenu)));
- JSValueRef arrayValues[g_list_length(items.get())];
- int index = 0;
- for (GList* item = g_list_first(items.get()); item; item = g_list_next(item)) {
- arrayValues[index] = JSObjectMake(context, getMenuItemClass(), item->data);
- index++;
- }
- if (index)
- valueRef = JSObjectMakeArray(context, index - 1, arrayValues, 0);
- }
-
- releaseEvent->type = GDK_BUTTON_RELEASE;
- sendOrQueueEvent(releaseEvent);
- return valueRef;
-}
-
-static gboolean sendClick(gpointer)
-{
- GdkEvent* pressEvent = gdk_event_new(GDK_BUTTON_PRESS);
-
- if (!prepareMouseButtonEvent(pressEvent, 1, 0)) {
- gdk_event_free(pressEvent);
- return FALSE;
- }
-
- GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
- dispatchEvent(pressEvent);
- releaseEvent->type = GDK_BUTTON_RELEASE;
- dispatchEvent(releaseEvent);
-
- return FALSE;
-}
-
-static JSValueRef scheduleAsynchronousClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- g_timeout_add(0, sendClick, 0);
- return JSValueMakeUndefined(context);
-}
-
-static void updateClickCount(int button)
-{
- if (lastClickPositionX != lastMousePositionX
- || lastClickPositionY != lastMousePositionY
- || lastClickButton != button
- || timeOffset - lastClickTimeOffset >= 1)
- clickCount = 1;
- else
- clickCount++;
-}
-
-static guint gdkModifierFromJSValue(JSContextRef context, const JSValueRef value)
-{
- JSStringRef string = JSValueToStringCopy(context, value, 0);
- guint gdkModifier = 0;
- if (JSStringIsEqualToUTF8CString(string, "ctrlKey")
- || JSStringIsEqualToUTF8CString(string, "addSelectionKey"))
- gdkModifier = GDK_CONTROL_MASK;
- else if (JSStringIsEqualToUTF8CString(string, "shiftKey")
- || JSStringIsEqualToUTF8CString(string, "rangeSelectionKey"))
- gdkModifier = GDK_SHIFT_MASK;
- else if (JSStringIsEqualToUTF8CString(string, "altKey"))
- gdkModifier = GDK_MOD1_MASK;
-
- // Currently the metaKey as defined in WebCore/platform/gtk/PlatformMouseEventGtk.cpp
- // is GDK_META_MASK. This code must be kept in sync with that file.
- else if (JSStringIsEqualToUTF8CString(string, "metaKey"))
- gdkModifier = GDK_META_MASK;
-
- JSStringRelease(string);
- return gdkModifier;
-}
-
-static guint gdkModifersFromJSValue(JSContextRef context, const JSValueRef modifiers)
-{
- // The value may either be a string with a single modifier or an array of modifiers.
- if (JSValueIsString(context, modifiers))
- return gdkModifierFromJSValue(context, modifiers);
-
- JSObjectRef modifiersArray = JSValueToObject(context, modifiers, 0);
- if (!modifiersArray)
- return 0;
-
- guint gdkModifiers = 0;
- JSRetainPtr<JSStringRef> lengthProperty(Adopt, JSStringCreateWithUTF8CString("length"));
- int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, lengthProperty.get(), 0), 0);
- for (int i = 0; i < modifiersCount; ++i)
- gdkModifiers |= gdkModifierFromJSValue(context, JSObjectGetPropertyAtIndex(context, modifiersArray, i, 0));
- return gdkModifiers;
-}
-
-static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int button = 0;
- if (argumentCount == 1) {
- button = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- }
- guint modifiers = argumentCount >= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
- GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
- if (!prepareMouseButtonEvent(event, button, modifiers)) {
- gdk_event_free(event);
- return JSValueMakeUndefined(context);
- }
-
- // If the same mouse button is already in the down position don't send another event as it may confuse Xvfb.
- if (buttonCurrentlyDown == event->button.button) {
- gdk_event_free(event);
- return JSValueMakeUndefined(context);
- }
-
- buttonCurrentlyDown = event->button.button;
-
- // Normally GDK will send both GDK_BUTTON_PRESS and GDK_2BUTTON_PRESS for
- // the second button press during double-clicks. WebKit GTK+ selectively
- // ignores the first GDK_BUTTON_PRESS of that pair using gdk_event_peek.
- // Since our events aren't ever going onto the GDK event queue, WebKit won't
- // be able to filter out the first GDK_BUTTON_PRESS, so we just don't send
- // it here. Eventually this code should probably figure out a way to get all
- // appropriate events onto the event queue and this work-around should be
- // removed.
- updateClickCount(event->button.button);
- if (clickCount == 2)
- event->type = GDK_2BUTTON_PRESS;
- else if (clickCount == 3)
- event->type = GDK_3BUTTON_PRESS;
-
- sendOrQueueEvent(event);
- return JSValueMakeUndefined(context);
-}
-
-static guint getStateFlags()
-{
- if (buttonCurrentlyDown == 1)
- return GDK_BUTTON1_MASK;
- if (buttonCurrentlyDown == 2)
- return GDK_BUTTON2_MASK;
- if (buttonCurrentlyDown == 3)
- return GDK_BUTTON3_MASK;
- return 0;
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int button = 0;
- if (argumentCount == 1) {
- button = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- }
- guint modifiers = argumentCount >= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
- GdkEvent* event = gdk_event_new(GDK_BUTTON_RELEASE);
- if (!prepareMouseButtonEvent(event, button, modifiers)) {
- gdk_event_free(event);
- return JSValueMakeUndefined(context);
- }
-
- lastClickPositionX = lastMousePositionX;
- lastClickPositionY = lastMousePositionY;
- lastClickButton = buttonCurrentlyDown;
- lastClickTimeOffset = timeOffset;
- buttonCurrentlyDown = 0;
-
- sendOrQueueEvent(event);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseMoveToCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return JSValueMakeUndefined(context);
-
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- lastMousePositionX = (int)JSValueToNumber(context, arguments[0], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- lastMousePositionY = (int)JSValueToNumber(context, arguments[1], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
- GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY);
- event->motion.x = lastMousePositionX;
- event->motion.y = lastMousePositionY;
-
- event->motion.time = GDK_CURRENT_TIME;
- event->motion.window = gtk_widget_get_window(GTK_WIDGET(view));
- g_object_ref(event->motion.window);
- event->button.device = getDefaultGDKPointerDevice(event->motion.window);
-
- guint modifiers = argumentCount >= 3 ? gdkModifersFromJSValue(context, arguments[2]) : 0;
- event->motion.state = modifiers | getStateFlags();
- event->motion.axes = 0;
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(view)), lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
- event->motion.x_root = xRoot;
- event->motion.y_root = yRoot;
-
- sendOrQueueEvent(event, false);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef mouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return JSValueMakeUndefined(context);
-
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int horizontal = (int)JSValueToNumber(context, arguments[0], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- int vertical = (int)JSValueToNumber(context, arguments[1], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
- // Copy behaviour of Qt and EFL - just return in case of (0,0) mouse scroll
- if (!horizontal && !vertical)
- return JSValueMakeUndefined(context);
-
- GdkEvent* event = gdk_event_new(GDK_SCROLL);
- event->scroll.x = lastMousePositionX;
- event->scroll.y = lastMousePositionY;
- event->scroll.time = GDK_CURRENT_TIME;
- event->scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
- g_object_ref(event->scroll.window);
-
- // GTK+ only supports one tick in each scroll event that is not smooth. For the cases of more than one direction,
- // and more than one step in a direction, we can only use smooth events, supported from Gtk 3.3.18.
-#if GTK_CHECK_VERSION(3, 3, 18)
- if ((horizontal && vertical) || horizontal > 1 || horizontal < -1 || vertical > 1 || vertical < -1) {
- event->scroll.direction = GDK_SCROLL_SMOOTH;
- event->scroll.delta_x = -horizontal;
- event->scroll.delta_y = -vertical;
-
- sendOrQueueEvent(event);
- return JSValueMakeUndefined(context);
- }
-#else
- g_return_val_if_fail((!vertical || !horizontal), JSValueMakeUndefined(context));
-#endif
-
- if (horizontal < 0)
- event->scroll.direction = GDK_SCROLL_RIGHT;
- else if (horizontal > 0)
- event->scroll.direction = GDK_SCROLL_LEFT;
- else if (vertical < 0)
- event->scroll.direction = GDK_SCROLL_DOWN;
- else if (vertical > 0)
- event->scroll.direction = GDK_SCROLL_UP;
- else
- g_assert_not_reached();
-
- sendOrQueueEvent(event);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef continuousMouseScrollByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
-#if GTK_CHECK_VERSION(3, 3, 18)
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return JSValueMakeUndefined(context);
-
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int horizontal = JSValueToNumber(context, arguments[0], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
- int vertical = JSValueToNumber(context, arguments[1], exception);
- g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context));
-
- // We do not yet support continuous scrolling by page.
- if (argumentCount >= 3 && JSValueToBoolean(context, arguments[2]))
- return JSValueMakeUndefined(context);
-
- GdkEvent* event = gdk_event_new(GDK_SCROLL);
- event->scroll.x = lastMousePositionX;
- event->scroll.y = lastMousePositionY;
- event->scroll.time = GDK_CURRENT_TIME;
- event->scroll.window = gtk_widget_get_window(GTK_WIDGET(view));
- g_object_ref(event->scroll.window);
-
- event->scroll.direction = GDK_SCROLL_SMOOTH;
- event->scroll.delta_x = -horizontal / pixelsPerScrollTick;
- event->scroll.delta_y = -vertical / pixelsPerScrollTick;
-
- sendOrQueueEvent(event);
-#endif
- return JSValueMakeUndefined(context);
-}
-
-static void dragWithFilesDragDataGetCallback(GtkWidget*, GdkDragContext*, GtkSelectionData *data, guint, guint, gpointer userData)
-{
- gtk_selection_data_set_uris(data, static_cast<gchar**>(userData));
-}
-
-static void dragWithFilesDragEndCallback(GtkWidget* widget, GdkDragContext*, gpointer userData)
-{
- g_signal_handlers_disconnect_by_func(widget, reinterpret_cast<void*>(dragWithFilesDragEndCallback), userData);
- g_signal_handlers_disconnect_by_func(widget, reinterpret_cast<void*>(dragWithFilesDragDataGetCallback), userData);
- g_strfreev(static_cast<gchar**>(userData));
-}
-
-static JSValueRef beginDragWithFilesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSObjectRef filesArray = JSValueToObject(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
-
- const gchar* mainFrameURI = webkit_web_frame_get_uri(mainFrame);
- GRefPtr<GFile> testFile(adoptGRef(g_file_new_for_uri(mainFrameURI)));
- GRefPtr<GFile> parentDirectory(g_file_get_parent(testFile.get()));
- if (!parentDirectory)
- return JSValueMakeUndefined(context);
-
- // If this is an HTTP test, we still need to pass a local file path
- // to WebCore. Even though the file doesn't exist, this should be fine
- // for most tests.
- GOwnPtr<gchar> scheme(g_file_get_uri_scheme(parentDirectory.get()));
- if (g_str_equal(scheme.get(), "http") || g_str_equal(scheme.get(), "https")) {
- GOwnPtr<gchar> currentDirectory(g_get_current_dir());
- parentDirectory = adoptGRef(g_file_new_for_path(currentDirectory.get()));
- }
-
- JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
- int filesArrayLength = JSValueToNumber(context, JSObjectGetProperty(context, filesArray, lengthProperty, 0), 0);
- JSStringRelease(lengthProperty);
-
- gchar** draggedFilesURIList = g_new0(gchar*, filesArrayLength + 1);
- for (int i = 0; i < filesArrayLength; ++i) {
- JSStringRef filenameString = JSValueToStringCopy(context,
- JSObjectGetPropertyAtIndex(context, filesArray, i, 0), 0);
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(filenameString);
- GOwnPtr<gchar> filenameBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(filenameString, filenameBuffer.get(), bufferSize);
- JSStringRelease(filenameString);
-
- GRefPtr<GFile> dragFile(g_file_get_child(parentDirectory.get(), filenameBuffer.get()));
- draggedFilesURIList[i] = g_file_get_uri(dragFile.get());
- }
-
- GtkWidget* view = GTK_WIDGET(webkit_web_frame_get_web_view(mainFrame));
- g_object_connect(G_OBJECT(view),
- "signal::drag-end", dragWithFilesDragEndCallback, draggedFilesURIList,
- "signal::drag-data-get", dragWithFilesDragDataGetCallback, draggedFilesURIList,
- NULL);
-
- GdkEvent event;
- GdkWindow* viewGDKWindow = gtk_widget_get_window(view);
- memset(&event, 0, sizeof(event));
- event.type = GDK_MOTION_NOTIFY;
- event.motion.x = lastMousePositionX;
- event.motion.y = lastMousePositionY;
- event.motion.time = GDK_CURRENT_TIME;
- event.motion.window = viewGDKWindow;
- event.motion.device = getDefaultGDKPointerDevice(viewGDKWindow);
- event.motion.state = GDK_BUTTON1_MASK;
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(viewGDKWindow, lastMousePositionX, lastMousePositionY, &xRoot, &yRoot);
- event.motion.x_root = xRoot;
- event.motion.y_root = yRoot;
-
- GtkTargetList* targetList = gtk_target_list_new(0, 0);
- gtk_target_list_add_uri_targets(targetList, 0);
- gtk_drag_begin(view, targetList, GDK_ACTION_COPY, 1, &event);
- gtk_target_list_unref(targetList);
-
- return JSValueMakeUndefined(context);
-}
-
-static void sendOrQueueEvent(GdkEvent* event, bool shouldReplaySavedEvents)
-{
- // Mouse move events are queued if the previous event was queued or if a
- // delay was set up by leapForward().
- if ((dragMode && buttonCurrentlyDown) || endOfQueue != startOfQueue || msgQueue[endOfQueue].delay) {
- msgQueue[endOfQueue++].event = event;
-
- if (shouldReplaySavedEvents)
- replaySavedEvents();
-
- return;
- }
-
- dispatchEvent(event);
-}
-
-static void dispatchEvent(GdkEvent* event)
-{
- DumpRenderTreeSupportGtk::layoutFrame(mainFrame);
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view) {
- gdk_event_free(event);
- return;
- }
-
- // The widget focus may have been lost in the course of the test,
- // so force another explicit focus grab here.
- gtk_widget_grab_focus(GTK_WIDGET(view));
- gtk_main_do_event(event);
-
- if (!currentDragSourceContext) {
- gdk_event_free(event);
- return;
- }
-
- if (event->type == GDK_MOTION_NOTIFY) {
- // WebKit has called gtk_drag_start(), but because the main loop isn't
- // running GDK internals don't know that the drag has started yet. Pump
- // the main loop a little bit so that GDK is in the correct state.
- while (gtk_events_pending())
- gtk_main_iteration();
-
- // Simulate a drag motion on the top-level GDK window.
- GtkWidget* parentWidget = gtk_widget_get_parent(GTK_WIDGET(view));
- GdkWindow* parentWidgetWindow = gtk_widget_get_window(parentWidget);
- gdk_drag_motion(currentDragSourceContext, parentWidgetWindow, GDK_DRAG_PROTO_XDND,
- event->motion.x_root, event->motion.y_root,
- gdk_drag_context_get_selected_action(currentDragSourceContext),
- gdk_drag_context_get_actions(currentDragSourceContext),
- GDK_CURRENT_TIME);
-
- } else if (currentDragSourceContext && event->type == GDK_BUTTON_RELEASE) {
- // We've released the mouse button, we should just be able to spin the
- // event loop here and have GTK+ send the appropriate notifications for
- // the end of the drag.
- while (gtk_events_pending())
- gtk_main_iteration();
- }
-
- gdk_event_free(event);
-}
-
-void replaySavedEvents()
-{
- // First send all the events that are ready to be sent
- while (startOfQueue < endOfQueue) {
- if (msgQueue[startOfQueue].delay) {
- g_usleep(msgQueue[startOfQueue].delay * 1000);
- msgQueue[startOfQueue].delay = 0;
- }
-
- dispatchEvent(msgQueue[startOfQueue++].event);
- }
-
- startOfQueue = 0;
- endOfQueue = 0;
-}
-
-static GdkEvent* createKeyPressEvent(JSContextRef context, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- g_return_val_if_fail(argumentCount >= 1, 0);
- guint modifiers = argumentCount >= 2 ? gdkModifersFromJSValue(context, arguments[1]) : 0;
-
- // handle location argument.
- int location = DOM_KEY_LOCATION_STANDARD;
- if (argumentCount > 2)
- location = (int)JSValueToNumber(context, arguments[2], exception);
-
- JSStringRef character = JSValueToStringCopy(context, arguments[0], exception);
- g_return_val_if_fail((!exception || !*exception), 0);
-
- int gdkKeySym = GDK_VoidSymbol;
- if (location == DOM_KEY_LOCATION_NUMPAD) {
- if (JSStringIsEqualToUTF8CString(character, "leftArrow"))
- gdkKeySym = GDK_KP_Left;
- else if (JSStringIsEqualToUTF8CString(character, "rightArrow"))
- gdkKeySym = GDK_KP_Right;
- else if (JSStringIsEqualToUTF8CString(character, "upArrow"))
- gdkKeySym = GDK_KP_Up;
- else if (JSStringIsEqualToUTF8CString(character, "downArrow"))
- gdkKeySym = GDK_KP_Down;
- else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
- gdkKeySym = GDK_KP_Page_Up;
- else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
- gdkKeySym = GDK_KP_Page_Down;
- else if (JSStringIsEqualToUTF8CString(character, "home"))
- gdkKeySym = GDK_KP_Home;
- else if (JSStringIsEqualToUTF8CString(character, "end"))
- gdkKeySym = GDK_KP_End;
- else if (JSStringIsEqualToUTF8CString(character, "insert"))
- gdkKeySym = GDK_KP_Insert;
- else if (JSStringIsEqualToUTF8CString(character, "delete"))
- gdkKeySym = GDK_KP_Delete;
- else
- // If we get some other key specified with the numpad location,
- // crash here, so we add it sooner rather than later.
- g_assert_not_reached();
- } else {
- if (JSStringIsEqualToUTF8CString(character, "leftArrow"))
- gdkKeySym = GDK_Left;
- else if (JSStringIsEqualToUTF8CString(character, "rightArrow"))
- gdkKeySym = GDK_Right;
- else if (JSStringIsEqualToUTF8CString(character, "upArrow"))
- gdkKeySym = GDK_Up;
- else if (JSStringIsEqualToUTF8CString(character, "downArrow"))
- gdkKeySym = GDK_Down;
- else if (JSStringIsEqualToUTF8CString(character, "pageUp"))
- gdkKeySym = GDK_Page_Up;
- else if (JSStringIsEqualToUTF8CString(character, "pageDown"))
- gdkKeySym = GDK_Page_Down;
- else if (JSStringIsEqualToUTF8CString(character, "home"))
- gdkKeySym = GDK_Home;
- else if (JSStringIsEqualToUTF8CString(character, "end"))
- gdkKeySym = GDK_End;
- else if (JSStringIsEqualToUTF8CString(character, "insert"))
- gdkKeySym = GDK_Insert;
- else if (JSStringIsEqualToUTF8CString(character, "delete"))
- gdkKeySym = GDK_Delete;
- else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
- gdkKeySym = GDK_Print;
- else if (JSStringIsEqualToUTF8CString(character, "menu"))
- gdkKeySym = GDK_Menu;
- else if (JSStringIsEqualToUTF8CString(character, "F1"))
- gdkKeySym = GDK_F1;
- else if (JSStringIsEqualToUTF8CString(character, "F2"))
- gdkKeySym = GDK_F2;
- else if (JSStringIsEqualToUTF8CString(character, "F3"))
- gdkKeySym = GDK_F3;
- else if (JSStringIsEqualToUTF8CString(character, "F4"))
- gdkKeySym = GDK_F4;
- else if (JSStringIsEqualToUTF8CString(character, "F5"))
- gdkKeySym = GDK_F5;
- else if (JSStringIsEqualToUTF8CString(character, "F6"))
- gdkKeySym = GDK_F6;
- else if (JSStringIsEqualToUTF8CString(character, "F7"))
- gdkKeySym = GDK_F7;
- else if (JSStringIsEqualToUTF8CString(character, "F8"))
- gdkKeySym = GDK_F8;
- else if (JSStringIsEqualToUTF8CString(character, "F9"))
- gdkKeySym = GDK_F9;
- else if (JSStringIsEqualToUTF8CString(character, "F10"))
- gdkKeySym = GDK_F10;
- else if (JSStringIsEqualToUTF8CString(character, "F11"))
- gdkKeySym = GDK_F11;
- else if (JSStringIsEqualToUTF8CString(character, "F12"))
- gdkKeySym = GDK_F12;
- else if (JSStringIsEqualToUTF8CString(character, "leftAlt"))
- gdkKeySym = GDK_Alt_L;
- else if (JSStringIsEqualToUTF8CString(character, "leftControl"))
- gdkKeySym = GDK_Control_L;
- else if (JSStringIsEqualToUTF8CString(character, "leftShift"))
- gdkKeySym = GDK_Shift_L;
- else if (JSStringIsEqualToUTF8CString(character, "rightAlt"))
- gdkKeySym = GDK_Alt_R;
- else if (JSStringIsEqualToUTF8CString(character, "rightControl"))
- gdkKeySym = GDK_Control_R;
- else if (JSStringIsEqualToUTF8CString(character, "rightShift"))
- gdkKeySym = GDK_Shift_R;
- else {
- int charCode = JSStringGetCharactersPtr(character)[0];
- if (charCode == '\n' || charCode == '\r')
- gdkKeySym = GDK_Return;
- else if (charCode == '\t')
- gdkKeySym = GDK_Tab;
- else if (charCode == '\x8')
- gdkKeySym = GDK_BackSpace;
- else {
- gdkKeySym = gdk_unicode_to_keyval(charCode);
- if (WTF::isASCIIUpper(charCode))
- modifiers |= GDK_SHIFT_MASK;
- }
- }
- }
- JSStringRelease(character);
-
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- g_return_val_if_fail(view, 0);
-
- GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
- pressEvent->key.keyval = gdkKeySym;
- pressEvent->key.state = modifiers;
- pressEvent->key.window = gtk_widget_get_window(GTK_WIDGET(view));
- g_object_ref(pressEvent->key.window);
-#ifndef GTK_API_VERSION_2
- gdk_event_set_device(pressEvent, getDefaultGDKPointerDevice(pressEvent->key.window));
-#endif
-
- // When synthesizing an event, an invalid hardware_keycode value
- // can cause it to be badly processed by Gtk+.
- GOwnPtr<GdkKeymapKey> keys;
- gint nKeys;
- if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys.outPtr(), &nKeys))
- pressEvent->key.hardware_keycode = keys.get()[0].keycode;
-
- return pressEvent;
-}
-
-static void sendKeyDown(GdkEvent* pressEvent)
-{
- g_return_if_fail(pressEvent);
- GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
- releaseEvent->type = GDK_KEY_RELEASE;
-
- dispatchEvent(pressEvent);
- dispatchEvent(releaseEvent);
-
- DumpRenderTreeSupportGtk::deliverAllMutationsIfNecessary();
-}
-
-static JSValueRef keyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GdkEvent* pressEvent = createKeyPressEvent(context, argumentCount, arguments, exception);
- sendKeyDown(pressEvent);
-
- return JSValueMakeUndefined(context);
-}
-
-static void zoomIn(gboolean fullContentsZoom)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return;
-
- webkit_web_view_set_full_content_zoom(view, fullContentsZoom);
- gfloat currentZoom = webkit_web_view_get_zoom_level(view);
- webkit_web_view_set_zoom_level(view, currentZoom * zoomMultiplierRatio);
-}
-
-static void zoomOut(gboolean fullContentsZoom)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return;
-
- webkit_web_view_set_full_content_zoom(view, fullContentsZoom);
- gfloat currentZoom = webkit_web_view_get_zoom_level(view);
- webkit_web_view_set_zoom_level(view, currentZoom / zoomMultiplierRatio);
-}
-
-static JSValueRef textZoomInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- zoomIn(FALSE);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef textZoomOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- zoomOut(FALSE);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageInCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- zoomIn(TRUE);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef zoomPageOutCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- zoomOut(TRUE);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef scalePageByCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- float scaleFactor = JSValueToNumber(context, arguments[0], exception);
- float x = JSValueToNumber(context, arguments[1], exception);
- float y = JSValueToNumber(context, arguments[2], exception);
-
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- return JSValueMakeUndefined(context);
-
- DumpRenderTreeSupportGtk::scalePageBy(view, scaleFactor, x, y);
-
- return JSValueMakeUndefined(context);
-}
-
-static gboolean sendAsynchronousKeyDown(gpointer userData)
-{
- sendKeyDown(static_cast<GdkEvent*>(userData));
- return FALSE;
-}
-
-static JSValueRef scheduleAsynchronousKeyDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- GdkEvent* pressEvent = createKeyPressEvent(context, argumentCount, arguments, exception);
- if (pressEvent)
- g_timeout_add(0, sendAsynchronousKeyDown, static_cast<gpointer>(pressEvent));
-
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "mouseScrollBy", mouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "continuousMouseScrollBy", continuousMouseScrollByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "contextClick", contextClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseDown", mouseDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseUp", mouseUpCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "mouseMoveTo", mouseMoveToCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "beginDragWithFiles", beginDragWithFilesCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "leapForward", leapForwardCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "keyDown", keyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomIn", textZoomInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "textZoomOut", textZoomOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageIn", zoomPageInCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "zoomPageOut", zoomPageOutCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scheduleAsynchronousClick", scheduleAsynchronousClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scalePageBy", scalePageByCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "scheduleAsynchronousKeyDown", scheduleAsynchronousKeyDownCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
-
- { 0, 0, 0 }
-};
-
-static JSStaticValue staticValues[] = {
- { "dragMode", getDragModeCallback, setDragModeCallback, kJSPropertyAttributeNone },
- { 0, 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
- static JSClassRef eventSenderClass = 0;
-
- if (!eventSenderClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticFunctions;
- classDefinition.staticValues = staticValues;
-
- eventSenderClass = JSClassCreate(&classDefinition);
- }
-
- return eventSenderClass;
-}
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame)
-{
- if (isTopFrame) {
- dragMode = true;
-
- // Fly forward in time one second when the main frame loads. This will
- // ensure that when a test begins clicking in the same location as
- // a previous test, those clicks won't be interpreted as continuations
- // of the previous test's click sequences.
- timeOffset += 1000;
-
- lastMousePositionX = lastMousePositionY = 0;
- lastClickPositionX = lastClickPositionY = 0;
- lastClickTimeOffset = 0;
- lastClickButton = 0;
- buttonCurrentlyDown = 0;
- clickCount = 0;
-
- endOfQueue = 0;
- startOfQueue = 0;
-
- currentDragSourceContext = 0;
- }
-
- return JSObjectMake(context, getClass(context), 0);
-}
-
-void dragBeginCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
- currentDragSourceContext = context;
-}
-
-void dragEndCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
- currentDragSourceContext = 0;
-}
-
-gboolean dragFailedCallback(GtkWidget*, GdkDragContext* context, gpointer)
-{
- // Return TRUE here to disable the stupid GTK+ drag failed animation,
- // which introduces asynchronous behavior into our drags.
- return TRUE;
-}
diff --git a/Tools/DumpRenderTree/gtk/EventSender.h b/Tools/DumpRenderTree/gtk/EventSender.h
deleted file mode 100644
index f440f0d3d..000000000
--- a/Tools/DumpRenderTree/gtk/EventSender.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2009 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.
- */
-
-#ifndef EventSender_h
-#define EventSender_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame);
-void replaySavedEvents();
-void dragBeginCallback(GtkWidget*, GdkDragContext*, gpointer);
-void dragEndCallback(GtkWidget*, GdkDragContext*, gpointer);
-gboolean dragFailedCallback(GtkWidget*, GdkDragContext*, gpointer);
-
-#endif
diff --git a/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp b/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp
deleted file mode 100644
index 4eb5d6ec9..000000000
--- a/Tools/DumpRenderTree/gtk/GCControllerGtk.cpp
+++ /dev/null
@@ -1,50 +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"
-
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-
-#include <glib.h>
-#include <webkit/webkit.h>
-
-void GCController::collect() const
-{
- DumpRenderTreeSupportGtk::gcCollectJavascriptObjects();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- DumpRenderTreeSupportGtk::gcCollectJavascriptObjectsOnAlternateThread(waitUntilDone);
-}
-
-size_t GCController::getJSObjectCount() const
-{
- return DumpRenderTreeSupportGtk::gcCountJavascriptObjects();
-}
diff --git a/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp b/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp
deleted file mode 100644
index 0a800ec13..000000000
--- a/Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 "GtkVersioning.h"
-#include "PixelDumpSupportCairo.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include <webkit/webkit.h>
-
-static void paintOverlay(cairo_surface_t* surface)
-{
- cairo_t* context = cairo_create(surface);
-
- // Paint a transparent black overlay from which the repainted rectangles are then cleared.
- // The alpha component of the overlay should have a value of 0.66, as on other ports.
- cairo_set_source_rgba(context, 0.0, 0.0, 0.0, 0.66);
- cairo_rectangle(context, 0, 0, cairo_image_surface_get_width(surface), cairo_image_surface_get_height(surface));
- cairo_fill(context);
-
- GSList* trackedRectsList = DumpRenderTreeSupportGtk::trackedRepaintRects(mainFrame);
- for (GSList* listElement = trackedRectsList; listElement; listElement = g_slist_next(listElement)) {
- GdkRectangle* rect = static_cast<GdkRectangle*>(listElement->data);
-
- cairo_set_operator(context, CAIRO_OPERATOR_CLEAR);
- cairo_rectangle(context, rect->x, rect->y, rect->width, rect->height);
- cairo_fill(context);
- }
-
- g_slist_free_full(trackedRectsList, g_free);
- cairo_destroy(context);
-}
-
-static void fillRepaintOverlayIntoContext(cairo_t* context, gint width, gint height)
-{
- cairo_surface_t* overlaySurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
- paintOverlay(overlaySurface);
-
- cairo_set_source_surface(context, overlaySurface, 0, 0);
- cairo_rectangle(context, 0, 0, width, height);
- cairo_fill(context);
-
- cairo_surface_destroy(overlaySurface);
-}
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool, bool, bool, bool drawSelectionRect)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- GtkWidget* viewContainer = gtk_widget_get_parent(GTK_WIDGET(view));
- gint width, height;
-#ifdef GTK_API_VERSION_2
- GdkPixmap* pixmap = gtk_widget_get_snapshot(viewContainer, 0);
- gdk_pixmap_get_size(pixmap, &width, &height);
-#else
- width = gtk_widget_get_allocated_width(viewContainer);
- height = gtk_widget_get_allocated_height(viewContainer);
-#endif
-
- while (gtk_events_pending())
- gtk_main_iteration();
-
- cairo_surface_t* imageSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, width, height);
- cairo_t* context = cairo_create(imageSurface);
-
-#ifdef GTK_API_VERSION_2
- gdk_cairo_set_source_pixmap(context, pixmap, 0, 0);
- cairo_paint(context);
- g_object_unref(pixmap);
-#else
- gtk_widget_draw(viewContainer, context);
-#endif
-
- if (DumpRenderTreeSupportGtk::isTrackingRepaints(mainFrame))
- fillRepaintOverlayIntoContext(context, width, height);
-
- if (drawSelectionRect) {
- cairo_rectangle_int_t rectangle;
- DumpRenderTreeSupportGtk::rectangleForSelection(mainFrame, &rectangle);
-
- cairo_set_line_width(context, 1.0);
- cairo_rectangle(context, rectangle.x, rectangle.y, rectangle.width, rectangle.height);
- cairo_set_source_rgba(context, 1.0, 0.0, 0.0, 1.0);
- cairo_stroke(context);
- }
-
- cairo_surface_destroy(imageSurface);
- return BitmapContext::createByAdoptingBitmapAndContext(0, context);
-}
diff --git a/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp b/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp
deleted file mode 100644
index d77cfd5f1..000000000
--- a/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 "SelfScrollingWebKitWebView.h"
-
-#include <webkit/webkit.h>
-
-G_BEGIN_DECLS
-
-#ifdef GTK_API_VERSION_2
-static void sizeRequestMethod(GtkWidget*, GtkRequisition*);
-#else
-static void getPreferredSizeMethod(GtkWidget*, gint* minimum, gint* natural);
-#endif
-
-G_DEFINE_TYPE(SelfScrollingWebKitWebView, self_scrolling_webkit_web_view, WEBKIT_TYPE_WEB_VIEW)
-
-static void self_scrolling_webkit_web_view_class_init(SelfScrollingWebKitWebViewClass* klass)
-{
- GtkWidgetClass* widgetClass = GTK_WIDGET_CLASS(klass);
-#ifdef GTK_API_VERSION_2
- widgetClass->size_request = sizeRequestMethod;
-#else
- widgetClass->get_preferred_width = getPreferredSizeMethod;
- widgetClass->get_preferred_height = getPreferredSizeMethod;
-#endif
-}
-
-static void self_scrolling_webkit_web_view_init(SelfScrollingWebKitWebView* webView)
-{
-}
-
-GtkWidget* self_scrolling_webkit_web_view_new()
-{
- return GTK_WIDGET(g_object_new(self_scrolling_webkit_web_view_get_type(), "self-scrolling", TRUE, NULL));
-}
-
-#ifdef GTK_API_VERSION_2
-static void sizeRequestMethod(GtkWidget*, GtkRequisition* requisition)
-{
- requisition->width = 1;
- requisition->height = 1;
-}
-#else
-static void getPreferredSizeMethod(GtkWidget*, gint* minimum, gint* natural)
-{
- *minimum = 1;
- *natural = 1;
-}
-#endif
-
-G_END_DECLS
diff --git a/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h b/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h
deleted file mode 100644
index 648d38c97..000000000
--- a/Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 SelfScrollingWebKitWebView_h
-#define SelfScrollingWebKitWebView_h
-
-#include <webkit/webkit.h>
-
-G_BEGIN_DECLS
-
-typedef struct _SelfScrollingWebKitWebView SelfScrollingWebKitWebView;
-typedef struct _SelfScrollingWebKitWebViewClass SelfScrollingWebKitWebViewClass;
-
-struct _SelfScrollingWebKitWebView {
- WebKitWebView web_view;
-};
-
-struct _SelfScrollingWebKitWebViewClass {
- WebKitWebViewClass parent_class;
-};
-
-GtkWidget* self_scrolling_webkit_web_view_new();
-
-G_END_DECLS
-
-#endif // SelfScrollingWebKitWebView_h
diff --git a/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp b/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp
deleted file mode 100644
index 7669a0133..000000000
--- a/Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp
+++ /dev/null
@@ -1,942 +0,0 @@
-/*
- * Copyright (C) 2007, 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2007 Eric Seidel <eric@webkit.org>
- * Copyright (C) 2008 Nuanti Ltd.
- * Copyright (C) 2009 Jan Michael Alonzo <jmalonzo@gmail.com>
- * Copyright (C) 2009,2011 Collabora Ltd.
- * Copyright (C) 2010 Joone Hur <joone@kldp.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 "TestRunner.h"
-
-#include "DumpRenderTree.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <cstring>
-#include <iostream>
-#include <sstream>
-#include <stdio.h>
-#include <glib.h>
-#include <libsoup/soup.h>
-#include <webkit/webkit.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/text/WTFString.h>
-
-extern "C" {
-void webkit_web_inspector_execute_script(WebKitWebInspector* inspector, long callId, const gchar* script);
-}
-
-TestRunner::~TestRunner()
-{
- // FIXME: implement
-}
-
-void TestRunner::addDisallowedURL(JSStringRef url)
-{
- // FIXME: implement
-}
-
-void TestRunner::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);
- webkit_web_back_forward_list_add_item(list, item);
- webkit_web_back_forward_list_go_to_item(list, item);
- g_object_unref(item);
-}
-
-JSStringRef TestRunner::copyDecodedHostName(JSStringRef name)
-{
- // FIXME: implement
- return 0;
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef name)
-{
- // FIXME: implement
- return 0;
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
- // FIXME: Implement for testing fix for 6727495
-}
-
-void TestRunner::display()
-{
- displayWebView();
-}
-
-void TestRunner::keepWebHistory()
-{
- // FIXME: implement
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebBackForwardList* list = webkit_web_view_get_back_forward_list(webView);
-
- if (!list)
- return -1;
-
- // We do not add the current page to the total count as it's not
- // considered in DRT tests
- return webkit_web_back_forward_list_get_back_length(list) +
- webkit_web_back_forward_list_get_forward_length(list);
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName() const
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("gtk"));
- return platformName;
-}
-
-void TestRunner::notifyDone()
-{
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
- waitForPolicy = false;
-}
-
-JSStringRef TestRunner::pathToLocalResource(JSContextRef context, JSStringRef url)
-{
- GOwnPtr<char> urlCString(JSStringCopyUTF8CString(url));
- if (!g_str_has_prefix(urlCString.get(), "file:///tmp/LayoutTests/"))
- return JSStringRetain(url);
-
- const char* layoutTestsSuffix = urlCString.get() + strlen("file:///tmp/");
- GOwnPtr<char> testPath(g_build_filename(getTopLevelPath().data(), layoutTestsSuffix, NULL));
- GOwnPtr<char> testURI(g_filename_to_uri(testPath.get(), 0, 0));
- return JSStringCreateWithUTF8CString(testURI.get());
-}
-
-static CString soupURIToStringPreservingPassword(SoupURI* soupURI)
-{
- if (!soupURI->password) {
- GOwnPtr<char> uriString(soup_uri_to_string(soupURI, FALSE));
- return uriString.get();
- }
-
- // soup_uri_to_string does not insert the password into the string, so we need to create the
- // URI string and then reinsert any credentials that were present in the SoupURI. All tests that
- // use URL-embedded credentials use HTTP, so it's safe here.
- GOwnPtr<char> password(soupURI->password);
- GOwnPtr<char> user(soupURI->user);
- soupURI->password = 0;
- soupURI->user = 0;
-
- GOwnPtr<char> uriString(soup_uri_to_string(soupURI, FALSE));
- String absoluteURIWithoutCredentialString = String::fromUTF8(uriString.get());
- String protocolAndCredential = String::format("http://%s:%s@", user ? user.get() : "", password.get());
- return absoluteURIWithoutCredentialString.replace("http://", protocolAndCredential).utf8();
-}
-
-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
-{
- GOwnPtr<gchar> relativeURL(JSStringCopyUTF8CString(url));
- SoupURI* baseURI = soup_uri_new(webkit_web_frame_get_uri(mainFrame));
- SoupURI* absoluteURI = soup_uri_new_with_base(baseURI, relativeURL.get());
- soup_uri_free(baseURI);
-
- if (!absoluteURI) {
- WorkQueue::shared()->queue(new LoadItem(url, target));
- return;
- }
-
- CString absoluteURIString = soupURIToStringPreservingPassword(absoluteURI);
- JSRetainPtr<JSStringRef> absoluteURL(Adopt, JSStringCreateWithUTF8CString(absoluteURIString.data()));
- WorkQueue::shared()->queue(new LoadItem(absoluteURL.get(), target));
- soup_uri_free(absoluteURI);
-}
-
-void TestRunner::setAcceptsEditing(bool acceptsEditing)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- webkit_web_view_set_editable(webView, acceptsEditing);
-}
-
-void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
- SoupSession* session = webkit_get_default_session();
- SoupCookieJar* jar = reinterpret_cast<SoupCookieJar*>(soup_session_get_feature(session, SOUP_TYPE_COOKIE_JAR));
-
- /* If the jar was not created - we create it on demand, i.e, just
- in case we have HTTP requests - then we must create it here in
- order to set the proper accept policy */
- if (!jar) {
- jar = soup_cookie_jar_new();
- soup_session_add_feature(session, SOUP_SESSION_FEATURE(jar));
- g_object_unref(jar);
- }
-
- SoupCookieJarAcceptPolicy policy;
-
- if (alwaysAcceptCookies)
- policy = SOUP_COOKIE_JAR_ACCEPT_ALWAYS;
- else
- policy = SOUP_COOKIE_JAR_ACCEPT_NO_THIRD_PARTY;
-
- g_object_set(G_OBJECT(jar), SOUP_COOKIE_JAR_ACCEPT_POLICY, policy, NULL);
-}
-
-void TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
- // FIXME: implement
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
- waitForPolicy = true;
- setWaitToDump(true);
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy)
-{
- // FIXME: implement
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
- gchar* sourceOriginGChar = JSStringCopyUTF8CString(sourceOrigin);
- gchar* protocolGChar = JSStringCopyUTF8CString(protocol);
- gchar* hostGChar = JSStringCopyUTF8CString(host);
- DumpRenderTreeSupportGtk::whiteListAccessFromOrigin(sourceOriginGChar, protocolGChar, hostGChar, includeSubdomains);
- g_free(sourceOriginGChar);
- g_free(protocolGChar);
- g_free(hostGChar);
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef protocol, JSStringRef host, bool includeSubdomains)
-{
- GOwnPtr<gchar> sourceOriginGChar(JSStringCopyUTF8CString(sourceOrigin));
- GOwnPtr<gchar> protocolGChar(JSStringCopyUTF8CString(protocol));
- GOwnPtr<gchar> hostGChar(JSStringCopyUTF8CString(host));
- DumpRenderTreeSupportGtk::removeWhiteListAccessFromOrigin(sourceOriginGChar.get(), protocolGChar.get(), hostGChar.get(), includeSubdomains);
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool flag)
-{
- // FIXME: implement
-}
-
-void TestRunner::setTabKeyCyclesThroughElements(bool cycles)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebSettings* settings = webkit_web_view_get_settings(webView);
- g_object_set(G_OBJECT(settings), "tab-key-cycles-through-elements", cycles, NULL);
-}
-
-void TestRunner::setUseDashboardCompatibilityMode(bool flag)
-{
- // FIXME: implement
-}
-
-static gchar* userStyleSheet = NULL;
-static gboolean userStyleSheetEnabled = TRUE;
-
-void TestRunner::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 TestRunner::setUserStyleSheetLocation(JSStringRef path)
-{
- g_free(userStyleSheet);
- userStyleSheet = JSStringCopyUTF8CString(path);
- if (userStyleSheetEnabled)
- setUserStyleSheetEnabled(true);
-}
-
-void TestRunner::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value)
-{
- DumpRenderTreeSupportGtk::setValueForUser(context, nodeObject, value);
-}
-
-void TestRunner::setViewModeMediaFeature(JSStringRef mode)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- char* viewMode = JSStringCopyUTF8CString(mode);
-
- if (!g_strcmp0(viewMode, "windowed"))
- webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_WINDOWED);
- else if (!g_strcmp0(viewMode, "floating"))
- webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FLOATING);
- else if (!g_strcmp0(viewMode, "fullscreen"))
- webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_FULLSCREEN);
- else if (!g_strcmp0(viewMode, "maximized"))
- webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MAXIMIZED);
- else if (!g_strcmp0(viewMode, "minimized"))
- webkit_web_view_set_view_mode(view, WEBKIT_WEB_VIEW_VIEW_MODE_MINIMIZED);
-
- g_free(viewMode);
-}
-
-void TestRunner::setWindowIsKey(bool windowIsKey)
-{
- // FIXME: implement
-}
-
-static gboolean waitToDumpWatchdogFired(void*)
-{
- setWaitToDumpWatchdog(0);
- gTestRunner->waitToDumpWatchdogTimerFired();
- return FALSE;
-}
-
-void TestRunner::setWaitToDump(bool waitUntilDone)
-{
- static const int timeoutSeconds = 30;
-
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && shouldSetWaitToDumpWatchdog())
- setWaitToDumpWatchdog(g_timeout_add_seconds(timeoutSeconds, waitToDumpWatchdogFired, 0));
-}
-
-int TestRunner::windowCount()
-{
- // +1 -> including the main view
- return g_slist_length(webViewList) + 1;
-}
-
-void TestRunner::setPrivateBrowsingEnabled(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-private-browsing", flag, NULL);
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "javascript-can-access-clipboard", flag, NULL);
-}
-
-void TestRunner::setXSSAuditorEnabled(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-xss-auditor", flag, NULL);
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-spatial-navigation", flag, NULL);
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-universal-access-from-file-uris", flag, NULL);
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-file-access-from-file-uris", flag, NULL);
-}
-
-void TestRunner::setAuthorAndUserStylesEnabled(bool flag)
-{
- // FIXME: implement
-}
-
-void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
-{
- // FIXME: Implement for DeviceOrientation layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=30335.
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool, double, bool, double, bool, double, bool, double)
-{
- WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
- if (!view)
- view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- DumpRenderTreeSupportGtk::setMockGeolocationPosition(view, latitude, longitude, accuracy);
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
- WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
- if (!view)
- view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- GOwnPtr<gchar> cMessage(JSStringCopyUTF8CString(message));
- DumpRenderTreeSupportGtk::setMockGeolocationPositionUnavailableError(view, cMessage.get());
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
- setGeolocationPermissionCommon(allow);
- WebKitWebView* view = WEBKIT_WEB_VIEW(g_slist_nth_data(webViewList, 0));
- if (!view)
- view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- DumpRenderTreeSupportGtk::setMockGeolocationPermission(view, allow);
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- if (!view)
- view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- return DumpRenderTreeSupportGtk::numberOfPendingGeolocationPermissionRequests(view);
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool flag)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::startSpeechInput(JSContextRef inputElement)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setIconDatabaseEnabled(bool enabled)
-{
- WebKitIconDatabase* database = webkit_get_icon_database();
- if (enabled) {
- GOwnPtr<gchar> iconDatabasePath(g_build_filename(g_get_tmp_dir(), "DumpRenderTree", "icondatabase", NULL));
- webkit_icon_database_set_path(database, iconDatabasePath.get());
- } else
- webkit_icon_database_set_path(database, 0);
-}
-
-void TestRunner::setPopupBlockingEnabled(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "javascript-can-open-windows-automatically", !flag, NULL);
-
-}
-
-void TestRunner::setPluginsEnabled(bool flag)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- g_object_set(G_OBJECT(settings), "enable-plugins", flag, NULL);
-}
-
-void TestRunner::execCommand(JSStringRef name, JSStringRef value)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- gchar* cName = JSStringCopyUTF8CString(name);
- gchar* cValue = JSStringCopyUTF8CString(value);
- DumpRenderTreeSupportGtk::executeCoreCommandByName(view, cName, cValue);
- g_free(cName);
- g_free(cValue);
-}
-
-bool TestRunner::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
-{
- WebKitFindOptions findOptions = 0;
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(webView);
-
- JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length"));
- JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0);
- if (!JSValueIsNumber(context, lengthValue))
- return false;
-
- GOwnPtr<gchar> targetString(JSStringCopyUTF8CString(target));
-
- size_t length = static_cast<size_t>(JSValueToNumber(context, lengthValue, 0));
- for (size_t i = 0; i < length; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0);
- if (!JSValueIsString(context, value))
- continue;
-
- JSRetainPtr<JSStringRef> optionName(Adopt, JSValueToStringCopy(context, value, 0));
-
- if (JSStringIsEqualToUTF8CString(optionName.get(), "CaseInsensitive"))
- findOptions |= WebKit::WebFindOptionsCaseInsensitive;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "AtWordStarts"))
- findOptions |= WebKit::WebFindOptionsAtWordStarts;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "TreatMedialCapitalAsWordStart"))
- findOptions |= WebKit::WebFindOptionsTreatMedialCapitalAsWordStart;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "Backwards"))
- findOptions |= WebKit::WebFindOptionsBackwards;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "WrapAround"))
- findOptions |= WebKit::WebFindOptionsWrapAround;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "StartInSelection"))
- findOptions |= WebKit::WebFindOptionsStartInSelection;
- }
-
- return DumpRenderTreeSupportGtk::findString(webView, targetString.get(), findOptions);
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef name)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- gchar* cName = JSStringCopyUTF8CString(name);
- bool result = DumpRenderTreeSupportGtk::isCommandEnabled(view, cName);
- g_free(cName);
- return result;
-}
-
-void TestRunner::setCacheModel(int cacheModel)
-{
- // These constants are derived from the Mac cache model enum in Source/WebKit/mac/WebView/WebPreferences.h.
- switch (cacheModel) {
- case 0:
- webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER);
- break;
- case 1:
- webkit_set_cache_model(WEBKIT_CACHE_MODEL_DOCUMENT_BROWSER);
- break;
- case 2:
- webkit_set_cache_model(WEBKIT_CACHE_MODEL_WEB_BROWSER);
- break;
- default:
- ASSERT_NOT_REACHED();
- }
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- // FIXME: implement
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
- // FIXME: implement
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
- // FIXME: Implement to support application cache quotas.
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long quota)
-{
- // FIXME: Implement to support application cache quotas.
-}
-
-void TestRunner::clearApplicationCacheForOrigin(OpaqueJSString*)
-{
- // FIXME: Implement to support deleting all application caches for an origin.
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
-{
- // FIXME: Implement to support getting disk usage in bytes for an origin.
- return 0;
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
- // FIXME: Implement to get origins that contain application caches.
- return JSValueMakeUndefined(context);
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef name)
-{
- // FIXME: implement
- return 0;
-}
-
-void TestRunner::clearAllDatabases()
-{
- webkit_remove_all_web_databases();
-}
-
-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
- WebKitSecurityOrigin* origin = webkit_web_frame_get_security_origin(mainFrame);
- webkit_security_origin_set_web_database_quota(origin, quota);
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- // FIXME: implement
- return JSValueMakeUndefined(context);
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
- // FIXME: implement
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef originIdentifier)
-{
- // FIXME: implement
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned number)
-{
- // FIXME: implement
-}
-
-void TestRunner::syncLocalStorage()
-{
- // FIXME: implement
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
- GOwnPtr<gchar> urlScheme(JSStringCopyUTF8CString(scheme));
- DumpRenderTreeSupportGtk::setDomainRelaxationForbiddenForURLScheme(forbidden, urlScheme.get());
-}
-
-void TestRunner::goBack()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- webkit_web_view_go_back(webView);
-}
-
-void TestRunner::setDefersLoading(bool defers)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- DumpRenderTreeSupportGtk::setDefersLoading(webView, defers);
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long size)
-{
- webkit_application_cache_set_maximum_size(size);
-}
-
-static gboolean booleanFromValue(gchar* value)
-{
- return !g_ascii_strcasecmp(value, "true") || !g_ascii_strcasecmp(value, "1");
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
- GOwnPtr<gchar> originalName(JSStringCopyUTF8CString(key));
- GOwnPtr<gchar> valueAsString(JSStringCopyUTF8CString(value));
-
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- // This transformation could be handled by a hash table (and it once was), but
- // having it prominent, makes it easier for people from other ports to keep the
- // list up to date.
- const gchar* propertyName = 0;
- if (g_str_equal(originalName.get(), "WebKitJavaScriptEnabled"))
- propertyName = "enable-scripts";
- else if (g_str_equal(originalName.get(), "WebKitDefaultFontSize"))
- propertyName = "default-font-size";
- else if (g_str_equal(originalName.get(), "WebKitEnableCaretBrowsing"))
- propertyName = "enable-caret-browsing";
- else if (g_str_equal(originalName.get(), "WebKitUsesPageCachePreferenceKey"))
- propertyName = "enable-page-cache";
- else if (g_str_equal(originalName.get(), "WebKitPluginsEnabled"))
- propertyName = "enable-plugins";
- else if (g_str_equal(originalName.get(), "WebKitHyperlinkAuditingEnabled"))
- propertyName = "enable-hyperlink-auditing";
- else if (g_str_equal(originalName.get(), "WebKitWebGLEnabled"))
- propertyName = "enable-webgl";
- else if (g_str_equal(originalName.get(), "WebKitWebAudioEnabled"))
- propertyName = "enable-webaudio";
- else if (g_str_equal(originalName.get(), "WebKitDisplayImagesKey"))
- propertyName = "auto-load-images";
- else if (g_str_equal(originalName.get(), "WebKitTabToLinksPreferenceKey")) {
- DumpRenderTreeSupportGtk::setLinksIncludedInFocusChain(booleanFromValue(valueAsString.get()));
- return;
- } else if (g_str_equal(originalName.get(), "WebKitPageCacheSupportsPluginsPreferenceKey")) {
- DumpRenderTreeSupportGtk::setPageCacheSupportsPlugins(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
- return;
- } else if (g_str_equal(originalName.get(), "WebKitCSSGridLayoutEnabled")) {
- DumpRenderTreeSupportGtk::setCSSGridLayoutEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
- return;
- } else if (g_str_equal(originalName.get(), "WebKitCSSRegionsEnabled")) {
- DumpRenderTreeSupportGtk::setCSSRegionsEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
- return;
- } else if (g_str_equal(originalName.get(), "WebKitCSSCustomFilterEnabled")) {
- DumpRenderTreeSupportGtk::setCSSCustomFilterEnabled(webkit_web_frame_get_web_view(mainFrame), booleanFromValue(valueAsString.get()));
- return;
- } else {
- fprintf(stderr, "TestRunner::overridePreference tried to override "
- "unknown preference '%s'.\n", originalName.get());
- return;
- }
-
- WebKitWebSettings* settings = webkit_web_view_get_settings(view);
- GParamSpec* pspec = g_object_class_find_property(G_OBJECT_CLASS(
- WEBKIT_WEB_SETTINGS_GET_CLASS(settings)), propertyName);
- GValue currentPropertyValue = { 0, { { 0 } } };
- g_value_init(&currentPropertyValue, pspec->value_type);
-
- if (G_VALUE_HOLDS_STRING(&currentPropertyValue))
- g_object_set(settings, propertyName, valueAsString.get(), NULL);
- else if (G_VALUE_HOLDS_BOOLEAN(&currentPropertyValue))
- g_object_set(G_OBJECT(settings), propertyName, booleanFromValue(valueAsString.get()), NULL);
- else if (G_VALUE_HOLDS_INT(&currentPropertyValue))
- g_object_set(G_OBJECT(settings), propertyName, atoi(valueAsString.get()), NULL);
- else if (G_VALUE_HOLDS_FLOAT(&currentPropertyValue)) {
- gfloat newValue = g_ascii_strtod(valueAsString.get(), 0);
- g_object_set(G_OBJECT(settings), propertyName, newValue, NULL);
- } else
- fprintf(stderr, "TestRunner::overridePreference failed to override "
- "preference '%s'.\n", originalName.get());
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
- GOwnPtr<gchar> sourceCode(JSStringCopyUTF8CString(source));
- DumpRenderTreeSupportGtk::addUserScript(mainFrame, sourceCode.get(), runAtStart, allFrames);
-}
-
-void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
-{
- GOwnPtr<gchar> sourceCode(JSStringCopyUTF8CString(source));
- DumpRenderTreeSupportGtk::addUserStyleSheet(mainFrame, sourceCode.get(), allFrames);
- // FIXME: needs more investigation why userscripts/user-style-top-frame-only.html fails when allFrames is false.
-
-}
-
-void TestRunner::setDeveloperExtrasEnabled(bool enabled)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebSettings* webSettings = webkit_web_view_get_settings(webView);
-
- g_object_set(webSettings, "enable-developer-extras", enabled, NULL);
-}
-
-void TestRunner::showWebInspector()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-
- webkit_web_inspector_show(inspector);
-}
-
-void TestRunner::closeWebInspector()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
-
- webkit_web_inspector_close(inspector);
-}
-
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- WebKitWebInspector* inspector = webkit_web_view_get_inspector(webView);
- char* scriptString = JSStringCopyUTF8CString(script);
-
- webkit_web_inspector_execute_script(inspector, callId, scriptString);
- g_free(scriptString);
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
- // FIXME: Implement this.
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
- return DumpRenderTreeSupportGtk::shouldClose(mainFrame);
-}
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL)
-{
-
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
-
-}
-
-void TestRunner::setWebViewEditable(bool)
-{
-}
-
-void TestRunner::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
-{
-}
-
-void TestRunner::abortModal()
-{
-}
-
-void TestRunner::setSerializeHTTPLoads(bool serialize)
-{
- DumpRenderTreeSupportGtk::setSerializeHTTPLoads(serialize);
-}
-
-void TestRunner::setTextDirection(JSStringRef direction)
-{
- GOwnPtr<gchar> writingDirection(JSStringCopyUTF8CString(direction));
-
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- if (g_str_equal(writingDirection.get(), "auto"))
- gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_NONE);
- else if (g_str_equal(writingDirection.get(), "ltr"))
- gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_LTR);
- else if (g_str_equal(writingDirection.get(), "rtl"))
- gtk_widget_set_direction(GTK_WIDGET(view), GTK_TEXT_DIR_RTL);
- else
- fprintf(stderr, "TestRunner::setTextDirection called with unknown direction: '%s'.\n", writingDirection.get());
-}
-
-void TestRunner::addChromeInputField()
-{
-}
-
-void TestRunner::removeChromeInputField()
-{
-}
-
-void TestRunner::focusWebView()
-{
-}
-
-void TestRunner::setBackingScaleFactor(double)
-{
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef origin)
-{
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef jsOrigin)
-{
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef jsNotification)
-{
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef title)
-{
-}
-
-void TestRunner::resetPageVisibility()
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- DumpRenderTreeSupportGtk::setPageVisibility(webView, WebCore::PageVisibilityStateVisible, true);
-}
-
-void TestRunner::setPageVisibility(const char* visibility)
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- String visibilityString(visibility);
- WebCore::PageVisibilityState visibilityState = WebCore::PageVisibilityStateVisible;
-
- if (visibilityString == "visible")
- visibilityState = WebCore::PageVisibilityStateVisible;
- else if (visibilityString == "hidden")
- visibilityState = WebCore::PageVisibilityStateHidden;
- else
- return;
-
- DumpRenderTreeSupportGtk::setPageVisibility(webView, visibilityState, false);
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
-}
diff --git a/Tools/DumpRenderTree/gtk/TextInputController.cpp b/Tools/DumpRenderTree/gtk/TextInputController.cpp
deleted file mode 100644
index eed3bbe54..000000000
--- a/Tools/DumpRenderTree/gtk/TextInputController.cpp
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 "TextInputController.h"
-
-#include "DumpRenderTree.h"
-#include "WebCoreSupport/DumpRenderTreeSupportGtk.h"
-#include <GOwnPtrGtk.h>
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <cstring>
-#include <webkit/webkit.h>
-
-static JSValueRef setMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
- GOwnPtr<gchar> stringBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
- JSStringRelease(string);
-
- int start = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
-
- int length = static_cast<int>(JSValueToNumber(context, arguments[2], exception));
- ASSERT(!exception || !*exception);
-
- DumpRenderTreeSupportGtk::setComposition(view, stringBuffer.get(), start, length);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef hasMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
- return JSValueMakeBoolean(context, DumpRenderTreeSupportGtk::hasComposition(view));
-}
-
-static JSValueRef markedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- int start, length;
- if (!DumpRenderTreeSupportGtk::compositionRange(view, &start, &length))
- return JSValueMakeUndefined(context);
-
- JSValueRef arrayValues[2];
- arrayValues[0] = JSValueMakeNumber(context, start);
- arrayValues[1] = JSValueMakeNumber(context, length);
- JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
- ASSERT(!exception || !*exception);
- return arrayObject;
-}
-
-static JSValueRef insertTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
- GOwnPtr<gchar> stringBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
- JSStringRelease(string);
-
- DumpRenderTreeSupportGtk::confirmComposition(view, stringBuffer.get());
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef unmarkTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- DumpRenderTreeSupportGtk::confirmComposition(view, 0);
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef firstRectForCharacterRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- int location = static_cast<int>(JSValueToNumber(context, arguments[0], exception));
- ASSERT(!exception || !*exception);
-
- int length = static_cast<int>(JSValueToNumber(context, arguments[1], exception));
- ASSERT(!exception || !*exception);
-
- cairo_rectangle_int_t rect;
- if (!DumpRenderTreeSupportGtk::firstRectForCharacterRange(view, location, length, &rect))
- return JSValueMakeUndefined(context);
-
- JSValueRef arrayValues[4];
- arrayValues[0] = JSValueMakeNumber(context, rect.x);
- arrayValues[1] = JSValueMakeNumber(context, rect.y);
- arrayValues[2] = JSValueMakeNumber(context, rect.width);
- arrayValues[3] = JSValueMakeNumber(context, rect.height);
- JSObjectRef arrayObject = JSObjectMakeArray(context, 4, arrayValues, exception);
- ASSERT(!exception || !*exception);
-
- return arrayObject;
-}
-
-static JSValueRef selectedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
-
- int start, length;
- if (!DumpRenderTreeSupportGtk::selectedRange(view, &start, &length))
- return JSValueMakeUndefined(context);
-
- JSValueRef arrayValues[2];
- arrayValues[0] = JSValueMakeNumber(context, start);
- arrayValues[1] = JSValueMakeNumber(context, length);
- JSObjectRef arrayObject = JSObjectMakeArray(context, 2, arrayValues, exception);
- ASSERT(!exception || !*exception);
-
- return arrayObject;
-}
-
-static JSValueRef doCommandCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame);
- ASSERT(view);
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSStringRef string = JSValueToStringCopy(context, arguments[0], exception);
- ASSERT(!exception || !*exception);
-
- size_t bufferSize = JSStringGetMaximumUTF8CStringSize(string);
- GOwnPtr<gchar> stringBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
- JSStringGetUTF8CString(string, stringBuffer.get(), bufferSize);
- JSStringRelease(string);
-
- DumpRenderTreeSupportGtk::doCommand(view, stringBuffer.get());
- return JSValueMakeUndefined(context);
-}
-
-static JSStaticFunction staticFunctions[] = {
- { "setMarkedText", setMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "hasMarkedText", hasMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "markedRange", markedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "insertText", insertTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "unmarkText", unmarkTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "firstRectForCharacterRange", firstRectForCharacterRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "selectedRange", selectedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "doCommand", doCommandCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
-};
-
-static JSClassRef getClass(JSContextRef context)
-{
- static JSClassRef textInputControllerClass = 0;
-
- if (!textInputControllerClass) {
- JSClassDefinition classDefinition = {
- 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
- classDefinition.staticFunctions = staticFunctions;
-
- textInputControllerClass = JSClassCreate(&classDefinition);
- }
-
- return textInputControllerClass;
-}
-
-JSObjectRef makeTextInputController(JSContextRef context)
-{
- return JSObjectMake(context, getClass(context), 0);
-}
diff --git a/Tools/DumpRenderTree/gtk/TextInputController.h b/Tools/DumpRenderTree/gtk/TextInputController.h
deleted file mode 100644
index 53793f637..000000000
--- a/Tools/DumpRenderTree/gtk/TextInputController.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 TextInputController_h
-#define TextInputController_h
-
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeTextInputController(JSContextRef);
-
-#endif
diff --git a/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp b/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
deleted file mode 100644
index 23eca7b8b..000000000
--- a/Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
+++ /dev/null
@@ -1,102 +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 <string.h>
-#include <webkit/webkit.h>
-#include <wtf/gobject/GOwnPtr.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;
-}
-
-bool LoadItem::invoke() const
-{
- gchar* targetString = JSStringCopyUTF8CString(m_target.get());
-
- WebKitWebFrame* targetFrame;
- if (!strlen(targetString))
- targetFrame = mainFrame;
- else
- targetFrame = webkit_web_frame_find_frame(mainFrame, targetString);
- g_free(targetString);
-
- gchar* urlString = JSStringCopyUTF8CString(m_url.get());
- WebKitNetworkRequest* request = webkit_network_request_new(urlString);
- g_free(urlString);
- webkit_web_frame_load_request(targetFrame, request);
- g_object_unref(request);
-
- return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
- GOwnPtr<gchar> content(JSStringCopyUTF8CString(m_content.get()));
- GOwnPtr<gchar> baseURL(JSStringCopyUTF8CString(m_baseURL.get()));
-
- if (m_unreachableURL) {
- GOwnPtr<gchar> unreachableURL(JSStringCopyUTF8CString(m_unreachableURL.get()));
- webkit_web_frame_load_alternate_string(mainFrame, content.get(), baseURL.get(), unreachableURL.get());
- return true;
- }
- webkit_web_frame_load_string(mainFrame, content.get(), 0, 0, baseURL.get());
- return true;
-}
-
-bool ReloadItem::invoke() const
-{
- webkit_web_frame_reload(mainFrame);
- return true;
-}
-
-bool ScriptItem::invoke() const
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- gchar* scriptString = JSStringCopyUTF8CString(m_script.get());
- webkit_web_view_execute_script(webView, scriptString);
- g_free(scriptString);
- return true;
-}
-
-bool BackForwardItem::invoke() const
-{
- WebKitWebView* webView = webkit_web_frame_get_web_view(mainFrame);
- if (m_howFar == 1)
- webkit_web_view_go_forward(webView);
- else if (m_howFar == -1)
- webkit_web_view_go_back(webView);
- else {
- WebKitWebBackForwardList* webBackForwardList = webkit_web_view_get_back_forward_list(webView);
- WebKitWebHistoryItem* item = webkit_web_back_forward_list_get_nth_item(webBackForwardList, m_howFar);
- webkit_web_view_go_to_back_forward_item(webView, item);
- }
- return true;
-}
diff --git a/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF b/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF
deleted file mode 100644
index ac81cb031..000000000
--- a/Tools/DumpRenderTree/gtk/fonts/AHEM____.TTF
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon b/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon
deleted file mode 100644
index 8fff7d9c1..000000000
--- a/Tools/DumpRenderTree/gtk/fonts/FontWithNoValidEncoding.fon
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/gtk/fonts/fonts.conf b/Tools/DumpRenderTree/gtk/fonts/fonts.conf
deleted file mode 100644
index 3c55e87f3..000000000
--- a/Tools/DumpRenderTree/gtk/fonts/fonts.conf
+++ /dev/null
@@ -1,419 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
-<fontconfig>
-
- <!-- Due to patent (http://freetype.sourceforge.net/patents.html)
- issues hinting gives different results depending on the
- freetype version of the linux distribution, avoiding hinting
- gives more consistent results. When all the distributions
- release freetype the 2.4, which enables by default the
- hinting method that was patented, we could undo this change
- and try the hinting again. -->
- <match target="font">
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <!-- This system may have turned off selection of bitmap fonts, but
- we must turn it on again, because we want to be able to test that
- bitmap fonts with no valid encodings are *never* selected regardless
- of the Fontconfig settings. So force Fontconfig to select our cruddy
- bitmap font -->
- <selectfont>
- <acceptfont>
- <pattern>
- <patelt name="family">
- <string>FontWithNoValidEncoding</string>
- </patelt>
- </pattern>
- </acceptfont>
- </selectfont>
-
- <!-- The sans-serif font should be Liberation Serif -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>serif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Times</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Times New Roman</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- </match>
-
- <!-- Until we find good fonts to use for cursive and fantasy
- just use our serif font. -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>cursive</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>fantasy</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- </match>
-
- <!-- The sans-serif font should be Liberation Sans -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>sans serif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>sans</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- </match>
- <!-- We need to ensure that layout tests that use "Helvetica" don't
- fall back to the default serif font -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>Helvetica</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Arial</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Lucida Grande</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- </match>
-
- <!-- The Monospace font should be Liberation Mono -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>monospace</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Mono</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>mono</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Mono</string>
- </edit>
- </match>
- <!-- We need to ensure that layout tests that use "Courier", "Courier New",
- and "Monaco" (all monospace fonts) don't fall back to the default
- serif font -->
- <match target="pattern">
- <test qual="any" name="family">
- <string>Courier</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Mono</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Courier New</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Mono</string>
- </edit>
- </match>
- <match target="pattern">
- <test qual="any" name="family">
- <string>Monaco</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Mono</string>
- </edit>
- </match>
-
- <!-- The following hinting specializations are adapted from those in the
- Chromium test_shell. We try to duplicate their incredibly thorough
- testing here -->
- <match target="pattern">
- <test name="family" compare="eq">
- <string>NonAntiAliasedSans</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- <edit name="antialias" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>SlightHintedSerif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- <edit name="hinting" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="hintstyle" mode="assign">
- <const>hintslight</const>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>NonHintedSans</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- <!-- These deliberately contradict each other. The 'hinting' preference
- should take priority -->
- <edit name="hintstyle" mode="assign">
- <const>hintfull</const>
- </edit>
- <edit name="hinting" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>AutohintedSerif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- <edit name="hinting" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="autohint" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="hintstyle" mode="assign">
- <const>hintmedium</const>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>HintedSerif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- <edit name="hinting" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="autohint" mode="assign">
- <bool>false</bool>
- </edit>
- <edit name="hintstyle" mode="assign">
- <const>hintmedium</const>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>FullAndAutoHintedSerif</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Serif</string>
- </edit>
- <edit name="hinting" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="autohint" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="hintstyle" mode="assign">
- <const>hintfull</const>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>SubpixelEnabledSans</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- <edit name="rgba" mode="assign">
- <const>rgb</const>
- </edit>
- </match>
-
- <match target="pattern">
- <test name="family" compare="eq">
- <string>SubpixelDisabledSans</string>
- </test>
- <edit name="family" mode="assign">
- <string>Liberation Sans</string>
- </edit>
- <edit name="rgba" mode="assign">
- <const>none</const>
- </edit>
- </match>
-
- <!-- We need to enable simulated bold to for DejaVu Serif to ensure that we interpret
- this property correctly in: platform/gtk/fonts/fontconfig-synthetic-bold.html -->
- <match target="font">
- <test qual="any" name="family">
- <string>DejaVu Serif</string>
- </test>
- <test name="weight" compare="less_eq">
- <const>medium</const>
- </test>
- <test target="pattern" name="weight" compare="more">
- <const>medium</const>
- </test>
- <edit name="embolden" mode="assign">
- <bool>true</bool>
- </edit>
- <edit name="weight" mode="assign">
- <const>bold</const>
- </edit>
- </match>
-
- <!-- We need to enable simulated oblique to for DejaVu Serif to ensure that we interpret
- this property correctly in: platform/gtk/fonts/fontconfig-synthetic-oblique.html -->
- <match target="font">
- <test qual="any" name="family">
- <string>DejaVu Serif</string>
- </test>
- <test name="slant">
- <const>roman</const>
- </test>
- <test target="pattern" name="slant" compare="not_eq">
- <const>roman</const>
- </test>
- <edit name="matrix" mode="assign">
- <times>
- <name>matrix</name>
- <matrix><double>1</double><double>0.2</double>
- <double>0</double><double>1</double>
- </matrix>
- </times>
- </edit>
- <edit name="slant" mode="assign">
- <const>oblique</const>
- </edit>
- <edit name="embeddedbitmap" mode="assign">
- <bool>false</bool>
- </edit>
- </match>
-
- <!-- If this font doesn't have a family name we are falling back. The fallback
- font will certainly be one of the DejaVu fonts that we have in our
- collection since they have a wide range of characters. Fontconfig might
- choose DejaVu Sans or DejaVu Serif depending on the system, so we force
- the use of DejaVu Sans in these situations to maintain consistency. -->
- <match target="pattern">
- <test qual="all" name="family" compare="eq">
- <string></string>
- </test>
- <edit name="family" mode="append_last">
- <string>DejaVu Sans</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>
- </config>
-</fontconfig>
diff --git a/Tools/DumpRenderTree/ios/AccessibilityControllerIOS.mm b/Tools/DumpRenderTree/ios/AccessibilityControllerIOS.mm
deleted file mode 100644
index ac57ecc8c..000000000
--- a/Tools/DumpRenderTree/ios/AccessibilityControllerIOS.mm
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * 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.
- */
-
-#import "config.h"
-#import "DumpRenderTree.h"
-#import "AccessibilityController.h"
-
-#if PLATFORM(IOS)
-
-#import "AccessibilityCommonMac.h"
-#import "AccessibilityUIElement.h"
-#import <Foundation/Foundation.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-
-@interface WebHTMLView (Private)
-- (id)accessibilityFocusedUIElement;
-@end
-
-AccessibilityController::AccessibilityController()
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
-}
-
-AccessibilityUIElement AccessibilityController::elementAtPoint(int x, int y)
-{
- return rootElement().elementAtPoint(x, y);
-}
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- id webDocumentView = [[mainFrame frameView] documentView];
- if ([webDocumentView isKindOfClass:[WebHTMLView class]])
- return AccessibilityUIElement([(WebHTMLView *)webDocumentView accessibilityFocusedUIElement]);
- return 0;
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- // FIXME: we could do some caching here.
- id webDocumentView = [[mainFrame frameView] documentView];
- if ([webDocumentView isKindOfClass:[WebHTMLView class]])
- return AccessibilityUIElement([(WebHTMLView *)webDocumentView accessibilityRootElement]);
- return 0;
-}
-
-static id findAccessibleObjectById(id obj, NSString *idAttribute)
-{
- id objIdAttribute = [obj accessibilityIdentifier];
- if ([objIdAttribute isKindOfClass:[NSString class]] && [objIdAttribute isEqualToString:idAttribute])
- return obj;
-
- NSUInteger childrenCount = [obj accessibilityElementCount];
- for (NSUInteger i = 0; i < childrenCount; ++i) {
- id result = findAccessibleObjectById([obj accessibilityElementAtIndex:i], idAttribute);
- if (result)
- return result;
- }
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef idAttributeRef)
-{
- id webDocumentView = [[mainFrame frameView] documentView];
- if (![webDocumentView isKindOfClass:[WebHTMLView class]])
- return 0;
-
- id root = [(WebHTMLView *)webDocumentView accessibilityRootElement];
- NSString *idAttribute = [NSString stringWithJSStringRef:idAttributeRef];
- id result = findAccessibleObjectById(root, idAttribute);
- if (result)
- return AccessibilityUIElement(result);
-
- return 0;
-}
-
-void AccessibilityController::setLogFocusEvents(bool)
-{
-}
-
-void AccessibilityController::setLogScrollingStartEvents(bool)
-{
-}
-
-void AccessibilityController::setLogValueChangeEvents(bool)
-{
-}
-
-void AccessibilityController::setLogAccessibilityEvents(bool)
-{
-}
-
-bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
-{
- return false;
-}
-
-void AccessibilityController::removeNotificationListener()
-{
-}
-
-#endif // PLATFORM(IOS)
diff --git a/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm b/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm
deleted file mode 100644
index e66aa32a6..000000000
--- a/Tools/DumpRenderTree/ios/AccessibilityUIElementIOS.mm
+++ /dev/null
@@ -1,811 +0,0 @@
-/*
- * 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.
- */
-
-#import "config.h"
-#import "DumpRenderTree.h"
-#import "AccessibilityUIElement.h"
-
-#import "AccessibilityCommonMac.h"
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebCore/TextGranularity.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebHTMLView.h>
-#import <WebKit/WebTypesInternal.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/Vector.h>
-
-#if PLATFORM(IOS)
-
-#import <UIKit/UIKit.h>
-
-typedef void (*AXPostedNotificationCallback)(id element, NSString* notification, void* context);
-
-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 NSObject (UIAccessibilityHidden)
-- (id)accessibilityHitTest:(CGPoint)point;
-- (id)accessibilityLinkedElement;
-- (NSRange)accessibilityColumnRange;
-- (NSRange)accessibilityRowRange;
-- (id)accessibilityElementForRow:(NSInteger)row andColumn:(NSInteger)column;
-- (NSURL *)accessibilityURL;
-- (NSArray *)accessibilityHeaderElements;
-- (NSString *)accessibilityPlaceholderValue;
-- (NSString *)stringForRange:(NSRange)range;
-- (NSArray *)elementsForRange:(NSRange)range;
-- (NSString *)selectionRangeString;
-- (CGPoint)accessibilityClickPoint;
-- (void)accessibilityModifySelection:(WebCore::TextGranularity)granularity increase:(BOOL)increase;
-- (void)accessibilitySetPostedNotificationCallback:(AXPostedNotificationCallback)function withContext:(void*)context;
-- (CGFloat)_accessibilityMinValue;
-- (CGFloat)_accessibilityMaxValue;
-@end
-
-@interface NSObject (WebAccessibilityObjectWrapperPrivate)
-- (CGPathRef)_accessibilityPath;
-@end
-
-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.appendVector(valueBuffer);
-
- return JSStringCreateWithCharacters(buffer.data(), buffer.size());
-}
-
-#pragma mark iPhone Attributes
-
-JSStringRef AccessibilityUIElement::iphoneLabel()
-{
- return concatenateAttributeAndValue(@"AXLabel", [m_element accessibilityLabel]);
-}
-
-JSStringRef AccessibilityUIElement::iphoneHint()
-{
- return concatenateAttributeAndValue(@"AXHint", [m_element accessibilityHint]);
-}
-
-JSStringRef AccessibilityUIElement::iphoneValue()
-{
- return concatenateAttributeAndValue(@"AXValue", [m_element accessibilityValue]);
-}
-
-JSStringRef AccessibilityUIElement::iphoneIdentifier()
-{
- return concatenateAttributeAndValue(@"AXIdentifier", [m_element accessibilityIdentifier]);
-}
-
-JSStringRef AccessibilityUIElement::iphoneTraits()
-{
- return concatenateAttributeAndValue(@"AXTraits", [NSString stringWithFormat:@"%qu", [m_element accessibilityTraits]]);
-}
-
-bool AccessibilityUIElement::iphoneIsElement()
-{
- return [m_element isAccessibilityElement];
-}
-
-int AccessibilityUIElement::iphoneElementTextPosition()
-{
- NSRange range = [[m_element valueForKey:@"elementTextRange"] rangeValue];
- return range.location;
-}
-
-int AccessibilityUIElement::iphoneElementTextLength()
-{
- NSRange range = [[m_element valueForKey:@"elementTextRange"] rangeValue];
- return range.length;
-}
-
-JSStringRef AccessibilityUIElement::url()
-{
- NSURL *url = [m_element accessibilityURL];
- return [[url absoluteString] createJSStringRef];
-}
-
-double AccessibilityUIElement::x()
-{
- CGRect frame = [m_element accessibilityFrame];
- return frame.origin.x;
-}
-
-double AccessibilityUIElement::y()
-{
- CGRect frame = [m_element accessibilityFrame];
- return frame.origin.y;
-}
-
-double AccessibilityUIElement::width()
-{
- CGRect frame = [m_element accessibilityFrame];
- return frame.size.width;
-}
-
-double AccessibilityUIElement::height()
-{
- CGRect frame = [m_element accessibilityFrame];
- return frame.size.height;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- CGPoint centerPoint = [m_element accessibilityClickPoint];
- return centerPoint.x;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- CGPoint centerPoint = [m_element accessibilityClickPoint];
- return centerPoint.y;
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& elementVector)
-{
- NSInteger childCount = [m_element accessibilityElementCount];
- for (NSInteger k = 0; k < childCount; ++k)
- elementVector.append(AccessibilityUIElement([m_element accessibilityElementAtIndex:k]));
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement>& elementVector, unsigned location, unsigned length)
-{
- NSUInteger childCount = [m_element accessibilityElementCount];
- for (NSUInteger k = location; k < childCount && k < (location+length); ++k)
- elementVector.append(AccessibilityUIElement([m_element accessibilityElementAtIndex:k]));
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- Vector<AccessibilityUIElement> children;
- getChildren(children);
-
- return children.size();
-}
-
-AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y)
-{
- id element = [m_element accessibilityHitTest:NSMakePoint(x, y)];
- if (!element)
- return nil;
-
- return AccessibilityUIElement(element);
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- Vector<AccessibilityUIElement> children;
- getChildrenWithRange(children, index, 1);
-
- if (children.size() == 1)
- return children[0];
- return nil;
-}
-
-AccessibilityUIElement AccessibilityUIElement::headerElementAtIndex(unsigned index)
-{
- NSArray *headers = [m_element accessibilityHeaderElements];
- if (index < [headers count])
- return [headers objectAtIndex:index];
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedElement()
-{
- id linkedElement = [m_element accessibilityLinkedElement];
- if (linkedElement)
- return AccessibilityUIElement(linkedElement);
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
-{
- // FIXME: implement
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::rowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::parentElement()
-{
- id accessibilityObject = [m_element accessibilityContainer];
- if (accessibilityObject)
- return AccessibilityUIElement(accessibilityObject);
-
- return nil;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedByRow()
-{
- return 0;
-}
-
-void AccessibilityUIElement::increaseTextSelection()
-{
- [m_element accessibilityModifySelection:WebCore::CharacterGranularity increase:YES];
-}
-
-void AccessibilityUIElement::decreaseTextSelection()
-{
- [m_element accessibilityModifySelection:WebCore::CharacterGranularity increase:NO];
-}
-
-JSStringRef AccessibilityUIElement::stringForSelection()
-{
- NSString *stringForRange = [m_element selectionRangeString];
- if (!stringForRange)
- return 0;
-
- return [stringForRange createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
-{
- NSString *stringForRange = [m_element stringForRange:NSMakeRange(location, length)];
- if (!stringForRange)
- return 0;
-
- return [stringForRange createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned, unsigned)
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned, unsigned)
-{
- return false;
-}
-
-
-void AccessibilityUIElement::elementsForRange(unsigned location, unsigned length, Vector<AccessibilityUIElement>& elements)
-{
- NSArray *elementsForRange = [m_element elementsForRange:NSMakeRange(location, length)];
- for (id object in elementsForRange) {
- AccessibilityUIElement element = AccessibilityUIElement(object);
- elements.append(element);
- }
-}
-
-static void _CGPathEnumerationIteration(void *info, const CGPathElement *element)
-{
- NSMutableString *result = (NSMutableString *)info;
- switch (element->type) {
- case kCGPathElementMoveToPoint:
- [result appendString:@"\tMove to point\n"];
- break;
-
- case kCGPathElementAddLineToPoint:
- [result appendString:@"\tLine to\n"];
- break;
-
- case kCGPathElementAddQuadCurveToPoint:
- [result appendString:@"\tQuad curve to\n"];
- break;
-
- case kCGPathElementAddCurveToPoint:
- [result appendString:@"\tCurve to\n"];
- break;
-
- case kCGPathElementCloseSubpath:
- [result appendString:@"\tClose\n"];
- break;
- }
-}
-
-JSStringRef AccessibilityUIElement::pathDescription() const
-{
- NSMutableString *result = [NSMutableString stringWithString:@"\nStart Path\n"];
- CGPathRef pathRef = [m_element _accessibilityPath];
-
- CGPathApply(pathRef, result, _CGPathEnumerationIteration);
-
- return [result createJSStringRef];
-}
-
-#pragma mark Unused
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>& elementVector)
-{
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>& elementVector)
-{
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfChildren()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
-{
- if (JSStringIsEqualToUTF8CString(attribute, "AXPlaceholderValue"))
- return [[m_element accessibilityPlaceholderValue] createJSStringRef];
-
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::isPressActionSupported()
-{
- return false;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- return false;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- return false;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
-{
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
-{
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
-{
- return false;
-}
-
-JSStringRef AccessibilityUIElement::parameterizedAttributeNames()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::role()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::subrole()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::roleDescription()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::orientation() const
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::stringValue()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::language()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-double AccessibilityUIElement::intValue() const
-{
- return 0.0f;
-}
-
-double AccessibilityUIElement::minValue()
-{
- return [m_element _accessibilityMinValue];
-}
-
-double AccessibilityUIElement::maxValue()
-{
- return [m_element _accessibilityMaxValue];
-}
-
-JSStringRef AccessibilityUIElement::valueDescription()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- return -1;
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- return false;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- return false;
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- UIAccessibilityTraits traits = [m_element accessibilityTraits];
- return (traits & UIAccessibilityTraitSelected);
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- return false;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- return false;
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- return false;
-}
-
-JSStringRef AccessibilityUIElement::ariaDropEffects() const
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-int AccessibilityUIElement::lineForIndex(int index)
-{
- return -1;
-}
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- return JSStringCreateWithCharacters(0, 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::rowCount()
-{
- return -1;
-}
-
-int AccessibilityUIElement::columnCount()
-{
- return -1;
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- return -1;
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- NSRange range = [m_element accessibilityRowRange];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", (unsigned long)range.location, (unsigned long)range.length];
- return [rangeDescription createJSStringRef];
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- NSRange range = [m_element accessibilityColumnRange];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", (unsigned long)range.location, (unsigned long)range.length];
- return [rangeDescription createJSStringRef];
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
-{
- return AccessibilityUIElement([m_element accessibilityElementForRow:row andColumn:col]);
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-void AccessibilityUIElement::assistiveTechnologySimulatedFocus()
-{
- [m_element accessibilityElementDidBecomeFocused];
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
-}
-
-void AccessibilityUIElement::increment()
-{
- [m_element accessibilityIncrement];
-}
-
-void AccessibilityUIElement::decrement()
-{
- [m_element accessibilityDecrement];
-}
-
-void AccessibilityUIElement::showMenu()
-{
-}
-
-void AccessibilityUIElement::press()
-{
-}
-
-JSStringRef AccessibilityUIElement::accessibilityValue() const
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentEncoding()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentURI()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-static void _accessibilityNotificationCallback(id element, NSString* notification, void* context)
-{
- if (!context)
- return;
-
- JSObjectRef functionCallback = static_cast<JSObjectRef>(context);
-
- JSRetainPtr<JSStringRef> jsNotification(Adopt, [notification createJSStringRef]);
- JSValueRef argument = JSValueMakeString([mainFrame globalContext], jsNotification.get());
- JSObjectCallAsFunction([mainFrame globalContext], functionCallback, NULL, 1, &argument, NULL);
-}
-
-bool AccessibilityUIElement::addNotificationListener(JSObjectRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- m_notificationFunctionCallback = functionCallback;
- [platformUIElement() accessibilitySetPostedNotificationCallback:_accessibilityNotificationCallback withContext:reinterpret_cast<void*>(m_notificationFunctionCallback)];
- return true;
-}
-
-void AccessibilityUIElement::removeNotificationListener()
-{
- m_notificationFunctionCallback = 0;
- [platformUIElement() accessibilitySetPostedNotificationCallback:nil withContext:nil];
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelectedOptionActive() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- // FIXME: implement
- return false;
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::addSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- // FIXME: implement
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
-{
- // FIXME: implement
- return 0;
-}
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return 0;
-}
-#endif // PLATFORM(IOS)
diff --git a/Tools/DumpRenderTree/mac/AccessibilityCommonMac.h b/Tools/DumpRenderTree/mac/AccessibilityCommonMac.h
deleted file mode 100644
index c8b91257f..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityCommonMac.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#ifndef AccessibilityCommonMac_h
-#define AccessibilityCommonMac_h
-
-#import <JavaScriptCore/JSStringRef.h>
-
-// If an unsupported attribute is passed in, it will raise an accessibility exception. These are usually caught by the Accessibility Runtime to inform
-// the AX client app of the error. However, DRT is the AX client app, so it must catch these exceptions.
-#define BEGIN_AX_OBJC_EXCEPTIONS @try {
-#define END_AX_OBJC_EXCEPTIONS } @catch(NSException *e) { if (![[e name] isEqualToString:NSAccessibilityException]) @throw; }
-
-
-@interface NSString (JSStringRefAdditions)
-+ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef;
-- (JSStringRef)createJSStringRef;
-@end
-
-#endif // AccessibilityCommonMac_h
diff --git a/Tools/DumpRenderTree/mac/AccessibilityCommonMac.mm b/Tools/DumpRenderTree/mac/AccessibilityCommonMac.mm
deleted file mode 100644
index 082c0f0cc..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityCommonMac.mm
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#import "config.h"
-#import "AccessibilityCommonMac.h"
-
-#import <JavaScriptCore/JSStringRefCF.h>
-
-@implementation NSString (JSStringRefAdditions)
-
-+ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef
-{
- if (!jsStringRef)
- return nil;
-
- CFStringRef cfString = JSStringCopyCFString(kCFAllocatorDefault, jsStringRef);
- return [(NSString *)cfString autorelease];
-}
-
-- (JSStringRef)createJSStringRef
-{
- return JSStringCreateWithCFString((CFStringRef)self);
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm b/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
deleted file mode 100644
index 0909b86fa..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityControllerMac.mm
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2010 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 "config.h"
-#import "DumpRenderTree.h"
-#import "AccessibilityController.h"
-
-#import "AccessibilityCommonMac.h"
-#import "AccessibilityNotificationHandler.h"
-#import "AccessibilityUIElement.h"
-#import <AppKit/NSColor.h>
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLView.h>
-
-AccessibilityController::AccessibilityController()
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
- // The notification handler should be nil because removeNotificationListener() should have been called in the test.
- ASSERT(!m_globalNotificationHandler);
-}
-
-AccessibilityUIElement AccessibilityController::elementAtPoint(int x, int y)
-{
- id accessibilityObject = [[[mainFrame frameView] documentView] accessibilityHitTest:NSMakePoint(x, y)];
- return AccessibilityUIElement(accessibilityObject);
-}
-
-AccessibilityUIElement AccessibilityController::focusedElement()
-{
- id accessibilityObject = [[mainFrame accessibilityRoot] accessibilityFocusedUIElement];
- return AccessibilityUIElement(accessibilityObject);
-}
-
-AccessibilityUIElement AccessibilityController::rootElement()
-{
- // FIXME: we could do some caching here.
-
- // Layout tests expect that the root element will be the scroll area
- // containing the web area object. That will be the parent of the accessibilityRoot on WK1.
-
- id accessibilityObject = [[mainFrame accessibilityRoot] accessibilityAttributeValue:NSAccessibilityParentAttribute];
- return AccessibilityUIElement(accessibilityObject);
-}
-
-static id findAccessibleObjectById(id obj, NSString *idAttribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id objIdAttribute = [obj accessibilityAttributeValue:@"AXDRTElementIdAttribute"];
- if ([objIdAttribute isKindOfClass:[NSString class]] && [objIdAttribute isEqualToString:idAttribute])
- return obj;
- END_AX_OBJC_EXCEPTIONS
-
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *children = [obj accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- NSUInteger childrenCount = [children count];
- for (NSUInteger i = 0; i < childrenCount; ++i) {
- id result = findAccessibleObjectById([children objectAtIndex:i], idAttribute);
- if (result)
- return result;
- }
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef idAttributeRef)
-{
- NSString *idAttribute = [NSString stringWithJSStringRef:idAttributeRef];
- id root = [[mainFrame accessibilityRoot] accessibilityAttributeValue:NSAccessibilityParentAttribute];
- id result = findAccessibleObjectById(root, idAttribute);
- if (result)
- return AccessibilityUIElement(result);
-
- return 0;
-}
-
-void AccessibilityController::setLogFocusEvents(bool)
-{
-}
-
-void AccessibilityController::setLogScrollingStartEvents(bool)
-{
-}
-
-void AccessibilityController::setLogValueChangeEvents(bool)
-{
-}
-
-void AccessibilityController::setLogAccessibilityEvents(bool)
-{
-}
-
-bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- // Mac programmers should not be adding more than one global notification listener.
- // Other platforms may be different.
- if (m_globalNotificationHandler)
- return false;
- m_globalNotificationHandler = [[AccessibilityNotificationHandler alloc] init];
- [m_globalNotificationHandler.get() setCallback:functionCallback];
- [m_globalNotificationHandler.get() startObserving];
-
- return true;
-}
-
-void AccessibilityController::removeNotificationListener()
-{
- // Mac programmers should not be trying to remove a listener that's already removed.
- ASSERT(m_globalNotificationHandler);
- m_globalNotificationHandler.clear();
-}
diff --git a/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.h b/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.h
deleted file mode 100644
index 19386ceb0..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-#ifndef AccessibilityNotificationHandler_h
-#define AccessibilityNotificationHandler_h
-
-#import <JavaScriptCore/JSObjectRef.h>
-
-@interface AccessibilityNotificationHandler : NSObject {
- id m_platformElement;
- JSObjectRef m_notificationFunctionCallback;
-}
-
-- (id)init;
-- (void)setPlatformElement:(id)platformElement;
-- (void)setCallback:(JSObjectRef)callback;
-- (void)startObserving;
-
-@end
-
-#endif // AccessibilityNotificationHandler_h
diff --git a/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.mm b/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.mm
deleted file mode 100644
index 13d08c9f4..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityNotificationHandler.mm
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-#import "config.h"
-#import "DumpRenderTree.h"
-#import "AccessibilityNotificationHandler.h"
-#import "AccessibilityUIElement.h"
-
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebTypesInternal.h>
-#import <wtf/RetainPtr.h>
-
-@interface NSObject (WebAccessibilityObjectWrapperAdditions)
-+ (void)accessibilitySetShouldRepostNotifications:(BOOL)repost;
-@end
-
-@interface NSString (JSStringRefAdditions)
-- (JSStringRef)createJSStringRef;
-@end
-
-@implementation NSString (JSStringRefAdditions)
-
-- (JSStringRef)createJSStringRef
-{
- return JSStringCreateWithCFString((CFStringRef)self);
-}
-
-@end
-
-@implementation AccessibilityNotificationHandler
-
-- (id)init
-{
- if (!(self = [super init]))
- return nil;
-
- m_platformElement = nil;
- return self;
-}
-
-- (void)setPlatformElement:(id)platformElement
-{
- m_platformElement = platformElement;
-}
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- JSValueUnprotect([mainFrame globalContext], m_notificationFunctionCallback);
- m_notificationFunctionCallback = 0;
-
- [super dealloc];
-}
-
-- (void)setCallback:(JSObjectRef)callback
-{
- if (!callback)
- return;
-
- if (m_notificationFunctionCallback)
- JSValueUnprotect([mainFrame globalContext], m_notificationFunctionCallback);
-
- m_notificationFunctionCallback = callback;
- JSValueProtect([mainFrame globalContext], m_notificationFunctionCallback);
-}
-
-- (void)startObserving
-{
- // Once we start requesting notifications, it's on for the duration of the program.
- // This is to avoid any race conditions between tests turning this flag on and off. Instead
- // AccessibilityNotificationHandler can ignore events it doesn't care about.
- id webAccessibilityObjectWrapperClass = NSClassFromString(@"WebAccessibilityObjectWrapper");
- ASSERT(webAccessibilityObjectWrapperClass);
- [webAccessibilityObjectWrapperClass accessibilitySetShouldRepostNotifications:YES];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_notificationReceived:) name:@"AXDRTNotification" object:nil];
-}
-
-- (void)_notificationReceived:(NSNotification *)notification
-{
- NSString *notificationName = [[notification userInfo] objectForKey:@"notificationName"];
- if (!notificationName)
- return;
- if (m_platformElement && m_platformElement != [notification object])
- return;
-
- JSRetainPtr<JSStringRef> jsNotification(Adopt, [notificationName createJSStringRef]);
- JSValueRef notificationNameArgument = JSValueMakeString([mainFrame globalContext], jsNotification.get());
- if (m_platformElement) {
- // Listener for one element just gets one argument, the notification name.
- JSObjectCallAsFunction([mainFrame globalContext], m_notificationFunctionCallback, 0, 1, &notificationNameArgument, 0);
- } else {
- // A global listener gets the element and the notification name as arguments.
- JSValueRef arguments[2];
- arguments[0] = AccessibilityUIElement::makeJSAccessibilityUIElement([mainFrame globalContext], AccessibilityUIElement([notification object]));
- arguments[1] = notificationNameArgument;
- JSObjectCallAsFunction([mainFrame globalContext], m_notificationFunctionCallback, 0, 2, arguments, 0);
- }
-}
-
-@end
-
diff --git a/Tools/DumpRenderTree/mac/AccessibilityTextMarkerMac.mm b/Tools/DumpRenderTree/mac/AccessibilityTextMarkerMac.mm
deleted file mode 100644
index 18ddb85c6..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityTextMarkerMac.mm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2010 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 "config.h"
-
-#import "AccessibilityTextMarker.h"
-#import "DumpRenderTree.h"
-
-// MARK: AccessibilityTextMarker
-
-AccessibilityTextMarker::AccessibilityTextMarker(PlatformTextMarker marker)
- : m_textMarker(marker)
-{
-}
-
-AccessibilityTextMarker::AccessibilityTextMarker(const AccessibilityTextMarker& marker)
- : m_textMarker(marker.platformTextMarker())
-{
-}
-
-AccessibilityTextMarker::~AccessibilityTextMarker()
-{
-}
-
-bool AccessibilityTextMarker::isEqual(AccessibilityTextMarker* other)
-{
- return [(id)platformTextMarker() isEqual:(id)other->platformTextMarker()];
-}
-
-PlatformTextMarker AccessibilityTextMarker::platformTextMarker() const
-{
- return m_textMarker.get();
-}
-
-// MARK: AccessibilityTextMarkerRange
-
-AccessibilityTextMarkerRange::AccessibilityTextMarkerRange(PlatformTextMarkerRange markerRange)
- : m_textMarkerRange(markerRange)
-{
-}
-
-AccessibilityTextMarkerRange::AccessibilityTextMarkerRange(const AccessibilityTextMarkerRange& markerRange)
- : m_textMarkerRange(markerRange.platformTextMarkerRange())
-{
-}
-
-AccessibilityTextMarkerRange::~AccessibilityTextMarkerRange()
-{
-}
-
-bool AccessibilityTextMarkerRange::isEqual(AccessibilityTextMarkerRange* other)
-{
- return [(id)platformTextMarkerRange() isEqual:(id)other->platformTextMarkerRange()];
-}
-
-PlatformTextMarkerRange AccessibilityTextMarkerRange::platformTextMarkerRange() const
-{
- return m_textMarkerRange.get();
-}
diff --git a/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm b/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm
deleted file mode 100644
index f775006fc..000000000
--- a/Tools/DumpRenderTree/mac/AccessibilityUIElementMac.mm
+++ /dev/null
@@ -1,1577 +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 "config.h"
-#import "DumpRenderTree.h"
-#import "AccessibilityCommonMac.h"
-#import "AccessibilityNotificationHandler.h"
-#import "AccessibilityUIElement.h"
-
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSRetainPtr.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>
-
-
-#ifndef NSAccessibilityOwnsAttribute
-#define NSAccessibilityOwnsAttribute @"AXOwns"
-#endif
-
-#ifndef NSAccessibilityGrabbedAttribute
-#define NSAccessibilityGrabbedAttribute @"AXGrabbed"
-#endif
-
-#ifndef NSAccessibilityDropEffectsAttribute
-#define NSAccessibilityDropEffectsAttribute @"AXDropEffects"
-#endif
-
-#ifndef NSAccessibilityPathAttribute
-#define NSAccessibilityPathAttribute @"AXPath"
-#endif
-
-typedef void (*AXPostedNotificationCallback)(id element, NSString* notification, void* context);
-
-@interface NSObject (WebKitAccessibilityAdditions)
-- (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount;
-- (NSUInteger)accessibilityIndexOfChild:(id)child;
-- (NSUInteger)accessibilityArrayAttributeCount:(NSString *)attribute;
-@end
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
- , m_notificationHandler(0)
-{
- // FIXME: ap@webkit.org says ObjC objects need to be CFRetained/CFRelease to be GC-compliant on the mac.
- [m_element retain];
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
- , m_notificationHandler(0)
-{
- [m_element retain];
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
- // The notification handler should be nil because removeNotificationListener() should have been called in the test.
- ASSERT(!m_notificationHandler);
- [m_element release];
-}
-
-static NSString* descriptionOfValue(id valueObject, id focusedAccessibilityObject)
-{
- if (!valueObject)
- return NULL;
-
- if ([valueObject isKindOfClass:[NSArray class]])
- return [NSString stringWithFormat:@"<array of size %lu>", static_cast<unsigned long>([(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:NSAccessibilityRoleAttribute];
- NSString* title = [focusedAccessibilityObject accessibilityAttributeValue:NSAccessibilityTitleAttribute];
- 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;
-
- // accessibilityAttributeValue: can throw an if an attribute is not returned.
- // For DumpRenderTree's purpose, we should ignore those exceptions
- BEGIN_AX_OBJC_EXCEPTIONS
- id valueObject = [accessibilityObject accessibilityAttributeValue:attribute];
- NSString* value = descriptionOfValue(valueObject, accessibilityObject);
- [attributesString appendFormat:@"%@: %@\n", attribute, value];
- END_AX_OBJC_EXCEPTIONS
- }
-
- 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.appendVector(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)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* linkedElements = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- convertNSArrayToVector(linkedElements, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>& elementVector)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* linkElements = [m_element accessibilityAttributeValue:@"AXLinkUIElements"];
- convertNSArrayToVector(linkElements, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& elementVector)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* children = [m_element accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- convertNSArrayToVector(children, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement>& elementVector, unsigned location, unsigned length)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* children = [m_element accessibilityArrayAttributeValues:NSAccessibilityChildrenAttribute index:location maxCount:length];
- convertNSArrayToVector(children, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- Vector<AccessibilityUIElement> children;
- getChildren(children);
-
- return children.size();
-}
-
-AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y)
-{
- id element = [m_element accessibilityHitTest:NSMakePoint(x, y)];
- if (!element)
- return nil;
-
- return AccessibilityUIElement(element);
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
-{
- return [m_element accessibilityIndexOfChild:element->platformUIElement()];
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- Vector<AccessibilityUIElement> children;
- getChildrenWithRange(children, index, 1);
-
- if (children.size() == 1)
- return children[0];
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- if (index < [objects count])
- return [objects objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityOwnsAttribute];
- if (index < [objects count])
- return [objects objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- if (index < [objects count])
- return [objects objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilityDisclosedRowsAttribute];
- if (index < [rows count])
- return [rows objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedChildAtIndex(unsigned index) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* array = [m_element accessibilityAttributeValue:NSAccessibilitySelectedChildrenAttribute];
- if (index < [array count])
- return [array objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-unsigned AccessibilityUIElement::selectedChildrenCount() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilitySelectedChildrenAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilitySelectedRowsAttribute];
- if (index < [rows count])
- return [rows objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::rowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilityRowsAttribute];
- if (index < [rows count])
- return [rows objectAtIndex:index];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityTitleUIElementAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::parentElement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityParentAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedByRow()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityDisclosedByRowAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-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::stringAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSString class]])
- return [value createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementAttributeValue(JSStringRef attribute) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id uiElement = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- return AccessibilityUIElement(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSNumber class]])
- return [value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityIsAttributeSettable:[NSString stringWithJSStringRef:attribute]];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [[m_element accessibilityAttributeNames] containsObject:[NSString stringWithJSStringRef:attribute]];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-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()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString *role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityRoleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXRole", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::subrole()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilitySubroleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXSubrole", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::roleDescription()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityRoleDescriptionAttribute], m_element);
- return concatenateAttributeAndValue(@"AXRoleDescription", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* title = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityTitleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXTitle", title);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::description()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityDescriptionAttribute], m_element);
- return concatenateAttributeAndValue(@"AXDescription", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::orientation() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityOrientationAttribute], m_element);
- return concatenateAttributeAndValue(@"AXOrientation", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityValueAttribute], m_element);
- return concatenateAttributeAndValue(@"AXValue", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::language()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:@"AXLanguage"], m_element);
- return concatenateAttributeAndValue(@"AXLanguage", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityHelpAttribute], m_element);
- return concatenateAttributeAndValue(@"AXHelp", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-double AccessibilityUIElement::x()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute];
- return static_cast<double>([positionValue pointValue].x);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::y()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute];
- return static_cast<double>([positionValue pointValue].y);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::width()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute];
- return static_cast<double>([sizeValue sizeValue].width);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::height()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute];
- return static_cast<double>([sizeValue sizeValue].height);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"];
- return static_cast<double>([positionValue pointValue].x);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"];
- return static_cast<double>([positionValue pointValue].y);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::intValue() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::minValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityMinValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::maxValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityMaxValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0;
-}
-
-JSStringRef AccessibilityUIElement::valueDescription()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* valueDescription = [m_element accessibilityAttributeValue:NSAccessibilityValueDescriptionAttribute];
- if ([valueDescription isKindOfClass:[NSString class]])
- return [valueDescription createJSStringRef];
-
- END_AX_OBJC_EXCEPTIONS
- return 0;
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityInsertionPointLineNumberAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-bool AccessibilityUIElement::isPressActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityPressAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityIncrementAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityDecrementAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityEnabledAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXRequired"];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilitySelectedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityExpandedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- // On the Mac, intValue()==1 if a a checkable control is checked.
- return intValue() == 1;
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityDisclosureLevelAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::speak()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXDRTSpeechAttribute"];
- if ([value isKindOfClass:[NSString class]])
- return [value createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityGrabbedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-JSStringRef AccessibilityUIElement::ariaDropEffects() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityDropEffectsAttribute];
- if (![value isKindOfClass:[NSArray class]])
- return 0;
-
- NSMutableString* dropEffects = [NSMutableString string];
- NSInteger length = [value count];
- for (NSInteger k = 0; k < length; ++k) {
- [dropEffects appendString:[value objectAtIndex:k]];
- if (k < length - 1)
- [dropEffects appendString:@","];
- }
-
- return [dropEffects createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-// parameterized attributes
-int AccessibilityUIElement::lineForIndex(int index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityLineForIndexParameterizedAttribute forParameter:[NSNumber numberWithInt:index]];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-JSStringRef AccessibilityUIElement::rangeForLine(int line)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityRangeForLineParameterizedAttribute forParameter:[NSNumber numberWithInt:line]];
- if ([value isKindOfClass:[NSValue class]])
- return [NSStringFromRange([value rangeValue]) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::rangeForPosition(int x, int y)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityRangeForPositionParameterizedAttribute forParameter:[NSValue valueWithPoint:NSMakePoint(x, y)]];
- if ([value isKindOfClass:[NSValue class]])
- return [NSStringFromRange([value rangeValue]) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-
-JSStringRef AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- 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];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- id string = [m_element accessibilityAttributeValue:NSAccessibilityStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSString class]])
- return 0;
-
- return [string createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:NSAccessibilityAttributedStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSAttributedString class]])
- return 0;
-
- NSString* stringWithAttrs = [string description];
- return [stringWithAttrs createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:NSAccessibilityAttributedStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSAttributedString class]])
- return false;
-
- NSDictionary* attrs = [string attributesAtIndex:0 effectiveRange:nil];
- BOOL misspelled = [[attrs objectForKey:NSAccessibilityMisspelledTextAttribute] boolValue];
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
- if (misspelled)
- misspelled = [[attrs objectForKey:NSAccessibilityMarkedMisspelledTextAttribute] boolValue];
-#endif
- return misspelled;
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSMutableDictionary* parameter = [NSMutableDictionary dictionary];
- [parameter setObject:(isDirectionNext) ? @"AXDirectionNext" : @"AXDirectionPrevious" forKey:@"AXDirection"];
- if (visibleOnly)
- [parameter setObject:[NSNumber numberWithBool:YES] forKey:@"AXVisibleOnly"];
- [parameter setObject:[NSNumber numberWithInt:1] forKey:@"AXResultsLimit"];
- if (startElement && startElement->platformUIElement())
- [parameter setObject:(id)startElement->platformUIElement() forKey:@"AXStartElement"];
- if (searchKey) {
- if (JSValueIsString(context, searchKey)) {
- NSString *searchKeyParameter = nil;
- JSStringRef singleSearchKey = JSValueToStringCopy(context, searchKey, 0);
- if (singleSearchKey) {
- searchKeyParameter = [NSString stringWithJSStringRef:singleSearchKey];
- JSStringRelease(singleSearchKey);
- if (searchKeyParameter)
- [parameter setObject:searchKeyParameter forKey:@"AXSearchKey"];
- }
- }
- else if (JSValueIsObject(context, searchKey)) {
- NSMutableArray *searchKeyParameter = nil;
- JSObjectRef array = const_cast<JSObjectRef>(searchKey);
- unsigned arrayLength = 0;
- JSRetainPtr<JSStringRef> arrayLengthString(Adopt, JSStringCreateWithUTF8CString("length"));
- JSValueRef arrayLengthValue = JSObjectGetProperty(context, array, arrayLengthString.get(), 0);
- if (arrayLengthValue && JSValueIsNumber(context, arrayLengthValue))
- arrayLength = static_cast<unsigned>(JSValueToNumber(context, arrayLengthValue, 0));
-
- for (unsigned i = 0; i < arrayLength; ++i) {
- JSValueRef exception = 0;
- JSValueRef value = JSObjectGetPropertyAtIndex(context, array, i, &exception);
- if (exception)
- break;
- JSStringRef singleSearchKey = JSValueToStringCopy(context, value, &exception);
- if (exception)
- break;
- if (singleSearchKey) {
- if (!searchKeyParameter)
- searchKeyParameter = [NSMutableArray array];
- [searchKeyParameter addObject:[NSString stringWithJSStringRef:singleSearchKey]];
- JSStringRelease(singleSearchKey);
- }
- }
- if (searchKeyParameter)
- [parameter setObject:searchKeyParameter forKey:@"AXSearchKey"];
- }
- }
- if (searchText && JSStringGetLength(searchText))
- [parameter setObject:[NSString stringWithJSStringRef:searchText] forKey:@"AXSearchText"];
-
- id uiElement = [[m_element accessibilityAttributeValue:@"AXUIElementsForSearchPredicate" forParameter:parameter] lastObject];
- return AccessibilityUIElement(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumnHeaders()
-{
- // not yet defined in AppKit... odd
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* columnHeadersArray = [m_element accessibilityAttributeValue:@"AXColumnHeaderUIElements"];
- Vector<AccessibilityUIElement> columnHeadersVector;
- convertNSArrayToVector(columnHeadersArray, columnHeadersVector);
- return descriptionOfElements(columnHeadersVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRowHeaders()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rowHeadersArray = [m_element accessibilityAttributeValue:@"AXRowHeaderUIElements"];
- Vector<AccessibilityUIElement> rowHeadersVector;
- convertNSArrayToVector(rowHeadersArray, rowHeadersVector);
- return descriptionOfElements(rowHeadersVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfColumns()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* columnsArray = [m_element accessibilityAttributeValue:NSAccessibilityColumnsAttribute];
- Vector<AccessibilityUIElement> columnsVector;
- convertNSArrayToVector(columnsArray, columnsVector);
- return descriptionOfElements(columnsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfRows()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rowsArray = [m_element accessibilityAttributeValue:NSAccessibilityRowsAttribute];
- Vector<AccessibilityUIElement> rowsVector;
- convertNSArrayToVector(rowsArray, rowsVector);
- return descriptionOfElements(rowsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfVisibleCells()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* cellsArray = [m_element accessibilityAttributeValue:@"AXVisibleCells"];
- Vector<AccessibilityUIElement> cellsVector;
- convertNSArrayToVector(cellsArray, cellsVector);
- return descriptionOfElements(cellsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::attributesOfHeader()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id headerObject = [m_element accessibilityAttributeValue:NSAccessibilityHeaderAttribute];
- if (!headerObject)
- return [@"" createJSStringRef];
-
- Vector<AccessibilityUIElement> headerVector;
- headerVector.append(headerObject);
- return descriptionOfElements(headerVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::rowCount()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilityRowsAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::columnCount()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilityColumnsAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexNumber = [m_element accessibilityAttributeValue:NSAccessibilityIndexAttribute];
- if (indexNumber)
- return [indexNumber intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-JSStringRef AccessibilityUIElement::rowIndexRange()
-{
- NSRange range = NSMakeRange(0, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* indexRange = [m_element accessibilityAttributeValue:@"AXRowIndexRange"];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::columnIndexRange()
-{
- NSRange range = NSMakeRange(0, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexRange = [m_element accessibilityAttributeValue:@"AXColumnIndexRange"];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}",static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
-{
- NSArray *colRowArray = [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:col], [NSNumber numberWithUnsignedInt:row], nil];
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityAttributeValue:@"AXCellForColumnAndRow" forParameter:colRowArray];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::horizontalScrollbar() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return AccessibilityUIElement([m_element accessibilityAttributeValue:NSAccessibilityHorizontalScrollBarAttribute]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::verticalScrollbar() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return AccessibilityUIElement([m_element accessibilityAttributeValue:NSAccessibilityVerticalScrollBarAttribute]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::pathDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSMutableString *result = [NSMutableString stringWithString:@"\nStart Path\n"];
- NSBezierPath *bezierPath = [m_element accessibilityAttributeValue:NSAccessibilityPathAttribute];
-
- NSUInteger elementCount = [bezierPath elementCount];
- for (NSUInteger i = 0; i < elementCount; i++) {
- switch ([bezierPath elementAtIndex:i]) {
- case NSMoveToBezierPathElement:
- [result appendString:@"\tMove to point\n"];
- break;
-
- case NSLineToBezierPathElement:
- [result appendString:@"\tLine to\n"];
- break;
-
- case NSCurveToBezierPathElement:
- [result appendString:@"\tCurve to\n"];
- break;
-
- case NSClosePathBezierPathElement:
- [result appendString:@"\tClose\n"];
- break;
- }
- }
-
- return [result createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- NSRange range = NSMakeRange(NSNotFound, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue *indexRange = [m_element accessibilityAttributeValue:NSAccessibilitySelectedTextRangeAttribute];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString *rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
- NSRange textRange = NSMakeRange(location, length);
- NSValue *textRangeValue = [NSValue valueWithRange:textRange];
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilitySetValue:textRangeValue forAttribute:NSAccessibilitySelectedTextRangeAttribute];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::increment()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityIncrementAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::decrement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityDecrementAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::showMenu()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityShowMenuAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::press()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityPressAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement* element) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* array = [NSArray arrayWithObject:element->platformUIElement()];
- [m_element accessibilitySetValue:array forAttribute:NSAccessibilitySelectedChildrenAttribute];
- END_AX_OBJC_EXCEPTIONS
-}
-
-JSStringRef AccessibilityUIElement::accessibilityValue() const
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentEncoding()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentURI()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::url()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSURL *url = [m_element accessibilityAttributeValue:NSAccessibilityURLAttribute];
- return [[url absoluteString] createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return nil;
-}
-
-bool AccessibilityUIElement::addNotificationListener(JSObjectRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- // Mac programmers should not be adding more than one notification listener per element.
- // Other platforms may be different.
- if (m_notificationHandler)
- return false;
- m_notificationHandler = [[AccessibilityNotificationHandler alloc] init];
- [m_notificationHandler setPlatformElement:platformUIElement()];
- [m_notificationHandler setCallback:functionCallback];
- [m_notificationHandler startObserving];
-
- return true;
-}
-
-void AccessibilityUIElement::removeNotificationListener()
-{
- // Mac programmers should not be trying to remove a listener that's already removed.
- ASSERT(m_notificationHandler);
-
- [m_notificationHandler release];
- m_notificationHandler = nil;
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- bool result = false;
- BEGIN_AX_OBJC_EXCEPTIONS
- result = [m_element accessibilityIsAttributeSettable:NSAccessibilityFocusedAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return result;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelectedOptionActive() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- BOOL result = NO;
- BEGIN_AX_OBJC_EXCEPTIONS
- result = [m_element accessibilityIsIgnored];
- END_AX_OBJC_EXCEPTIONS
- return result;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXHasPopup"];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::addSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- // FIXME: implement
-}
-
-#if SUPPORTS_AX_TEXTMARKERS
-
-// Text markers
-AccessibilityTextMarkerRange AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement* element)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarkerRange = [m_element accessibilityAttributeValue:@"AXTextMarkerRangeForUIElement" forParameter:element->platformUIElement()];
- return AccessibilityTextMarkerRange(textMarkerRange);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* lengthValue = [m_element accessibilityAttributeValue:@"AXLengthForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return [lengthValue intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef attribute, AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:@"AXAttributedStringForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- if (![string isKindOfClass:[NSAttributedString class]])
- return false;
-
- NSDictionary* attrs = [string attributesAtIndex:0 effectiveRange:nil];
- if ([attrs objectForKey:[NSString stringWithJSStringRef:attribute]])
- return true;
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-int AccessibilityUIElement::indexForTextMarker(AccessibilityTextMarker* marker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexNumber = [m_element accessibilityAttributeValue:@"AXIndexForTextMarker" forParameter:(id)marker->platformTextMarker()];
- return [indexNumber intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::textMarkerForIndex(int textIndex)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXTextMarkerForIndex" forParameter:[NSNumber numberWithInteger:textIndex]];
- return AccessibilityTextMarker(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::isTextMarkerValid(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* validNumber = [m_element accessibilityAttributeValue:@"AXTextMarkerIsValid" forParameter:(id)textMarker->platformTextMarker()];
- return [validNumber boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id previousMarker = [m_element accessibilityAttributeValue:@"AXPreviousTextMarkerForTextMarker" forParameter:(id)textMarker->platformTextMarker()];
- return AccessibilityTextMarker(previousMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id nextMarker = [m_element accessibilityAttributeValue:@"AXNextTextMarkerForTextMarker" forParameter:(id)textMarker->platformTextMarker()];
- return AccessibilityTextMarker(nextMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange* markerRange)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textString = [m_element accessibilityAttributeValue:@"AXStringForTextMarkerRange" forParameter:(id)markerRange->platformTextMarkerRange()];
- return [textString createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityTextMarkerRange AccessibilityUIElement::textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* textMarkers = [NSArray arrayWithObjects:(id)startMarker->platformTextMarker(), (id)endMarker->platformTextMarker(), nil];
- id textMarkerRange = [m_element accessibilityAttributeValue:@"AXTextMarkerRangeForUnorderedTextMarkers" forParameter:textMarkers];
- return AccessibilityTextMarkerRange(textMarkerRange);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXStartTextMarkerForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return AccessibilityTextMarker(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXEndTextMarkerForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return AccessibilityTextMarker(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityTextMarker AccessibilityUIElement::textMarkerForPoint(int x, int y)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXTextMarkerForPosition" forParameter:[NSValue valueWithPoint:NSMakePoint(x, y)]];
- return AccessibilityTextMarker(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::accessibilityElementForTextMarker(AccessibilityTextMarker* marker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id uiElement = [m_element accessibilityAttributeValue:@"AXUIElementForTextMarker" forParameter:(id)marker->platformTextMarker()];
- return AccessibilityUIElement(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-#endif // SUPPORTS_AX_TEXTMARKERS
-
-JSStringRef AccessibilityUIElement::supportedActions()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *names = [m_element accessibilityActionNames];
- return [[names componentsJoinedByString:@","] createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-static NSString *convertMathMultiscriptPairsToString(NSArray *pairs)
-{
- __block NSMutableString *result = [NSMutableString string];
- [pairs enumerateObjectsUsingBlock:^(id pair, NSUInteger index, BOOL *stop) {
- for (NSString *key in pair)
- [result appendFormat:@"\t%lu. %@ = %@\n", (unsigned long)index, key, [[pair objectForKey:key] accessibilityAttributeValue:NSAccessibilitySubroleAttribute]];
- }];
-
- return result;
-}
-
-JSStringRef AccessibilityUIElement::mathPostscriptsDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *pairs = [m_element accessibilityAttributeValue:@"AXMathPostscripts"];
- return [convertMathMultiscriptPairsToString(pairs) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::mathPrescriptsDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *pairs = [m_element accessibilityAttributeValue:@"AXMathPrescripts"];
- return [convertMathMultiscriptPairsToString(pairs) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-
-void AccessibilityUIElement::scrollToMakeVisible()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:@"AXScrollToVisible"];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height)
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToGlobalPoint(int x, int y)
-{
- // FIXME: implement
-}
diff --git a/Tools/DumpRenderTree/mac/AppleScriptController.h b/Tools/DumpRenderTree/mac/AppleScriptController.h
deleted file mode 100644
index c29789c2e..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/AppleScriptController.m b/Tools/DumpRenderTree/mac/AppleScriptController.m
deleted file mode 100644
index 2eab8271e..000000000
--- a/Tools/DumpRenderTree/mac/AppleScriptController.m
+++ /dev/null
@@ -1,127 +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 "config.h"
-#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/Tools/DumpRenderTree/mac/CheckedMalloc.cpp b/Tools/DumpRenderTree/mac/CheckedMalloc.cpp
deleted file mode 100644
index b56cb280d..000000000
--- a/Tools/DumpRenderTree/mac/CheckedMalloc.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2010 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 "config.h"
-#import "CheckedMalloc.h"
-
-#import <mach/mach_init.h>
-#import <mach/mach_vm.h>
-#import <mach/vm_region.h>
-#import <malloc/malloc.h>
-#import <unistd.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);
-}
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-static vm_prot_t protectionOfRegion(mach_vm_address_t address)
-{
- mach_vm_size_t regionSize = 0;
- vm_region_basic_info_64 regionInfo;
- mach_msg_type_number_t regionInfoCount = VM_REGION_BASIC_INFO_COUNT_64;
- mach_port_t objectName;
- if (mach_vm_region(mach_task_self(), &address, &regionSize, VM_REGION_BASIC_INFO_64, (vm_region_info_t)&regionInfo, &regionInfoCount, &objectName))
- CRASH();
- return regionInfo.protection;
-}
-#endif
-
-void makeLargeMallocFailSilently()
-{
- malloc_zone_t* zone = malloc_default_zone();
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- mach_vm_address_t pageStart = reinterpret_cast<vm_address_t>(zone) & static_cast<vm_size_t>(~(getpagesize() - 1));
- vm_prot_t initialProtection = protectionOfRegion(pageStart);
-
- vm_size_t len = reinterpret_cast<vm_address_t>(zone) - pageStart + sizeof(malloc_zone_t);
- if (mach_vm_protect(mach_task_self(), pageStart, len, 0, initialProtection | VM_PROT_WRITE))
- CRASH();
-#endif
-
- savedMalloc = zone->malloc;
- savedRealloc = zone->realloc;
- zone->malloc = checkedMalloc;
- zone->realloc = checkedRealloc;
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- if (mach_vm_protect(mach_task_self(), pageStart, len, 0, initialProtection))
- CRASH();
-#endif
-}
diff --git a/Tools/DumpRenderTree/mac/CheckedMalloc.h b/Tools/DumpRenderTree/mac/CheckedMalloc.h
deleted file mode 100644
index c03bd2072..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig b/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
deleted file mode 100644
index be91f5e50..000000000
--- a/Tools/DumpRenderTree/mac/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,56 +0,0 @@
-// 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.
-
-CLANG_CXX_LANGUAGE_STANDARD = gnu++0x;
-CLANG_CXX_LIBRARY = libc++;
-CLANG_WARN_CXX0X_EXTENSIONS = NO;
-HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include ForwardingHeaders mac/InternalHeaders $(NEXT_ROOT)/usr/local/include/WebCoreTestSupport ${SRCROOT}/../../Source/JavaScriptCore/icu;
-FRAMEWORK_SEARCH_PATHS = $(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 WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST;
-DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
-PREBINDING = NO
-GCC_C_LANGUAGE_STANDARD = gnu99
-GCC_ENABLE_CPP_RTTI = NO;
-GCC_OBJC_CALL_CXX_CDTORS = YES
-GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_TREAT_WARNINGS_AS_ERRORS = YES
-GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO
-GCC_WARN_UNUSED_FUNCTION = YES
-GCC_WARN_UNUSED_VARIABLE = YES
-WARNING_CFLAGS = -Wall -W -Wno-unused-parameter -Wundef
-LINKER_DISPLAYS_MANGLED_NAMES = YES;
-
-TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR);
-
-
-TARGETING_SAME_OS_X_VERSION = $(TARGETING_SAME_OS_X_VERSION_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-TARGETING_SAME_OS_X_VERSION_1070_1070 = YES;
-TARGETING_SAME_OS_X_VERSION_1080_1080 = YES;
-TARGETING_SAME_OS_X_VERSION_1090_1090 = YES;
-
-// Don't build against an SDK unless we're targeting an older OS version.
-SDKROOT = $(SDKROOT_TARGETING_SAME_OS_X_VERSION_$(TARGETING_SAME_OS_X_VERSION));
-SDKROOT_TARGETING_SAME_OS_X_VERSION_ = macosx;
-
-WEBKIT_SYSTEM_INTERFACE_LIBRARY = WebKitSystemInterface
diff --git a/Tools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig b/Tools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig
deleted file mode 100644
index fd5ebdbd1..000000000
--- a/Tools/DumpRenderTree/mac/Configurations/DebugRelease.xcconfig
+++ /dev/null
@@ -1,41 +0,0 @@
-// 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.
-
-#include "Base.xcconfig"
-
-ARCHS = $(ARCHS_STANDARD_32_64_BIT);
-
-ONLY_ACTIVE_ARCH = YES;
-
-MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(TARGET_MAC_OS_X_VERSION_MAJOR))
-MACOSX_DEPLOYMENT_TARGET_1070 = 10.7;
-MACOSX_DEPLOYMENT_TARGET_1080 = 10.8;
-MACOSX_DEPLOYMENT_TARGET_1090 = 10.9;
-
-WEBKIT_SYSTEM_INTERFACE_LIBRARY = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_$(PLATFORM_NAME));
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphoneos = WebKitSystemInterface;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphonesimulator = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphoneos);
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1070 = WebKitSystemInterfaceLion;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1080 = WebKitSystemInterfaceMountainLion;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1090 = WebKitSystemInterfaceMountainLion;
diff --git a/Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig b/Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig
deleted file mode 100644
index cf0d22d0c..000000000
--- a/Tools/DumpRenderTree/mac/Configurations/DumpRenderTree.xcconfig
+++ /dev/null
@@ -1,28 +0,0 @@
-// 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.
-
-OTHER_LDFLAGS = -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)
-LD_RUNPATH_SEARCH_PATHS = "@loader_path/.";
-PRODUCT_NAME = DumpRenderTree
-GCC_ENABLE_OBJC_EXCEPTIONS = YES
-GCC_PREFIX_HEADER = DumpRenderTreePrefix.h
diff --git a/Tools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig b/Tools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig
deleted file mode 100644
index 35968afcf..000000000
--- a/Tools/DumpRenderTree/mac/Configurations/ImageDiff.xcconfig
+++ /dev/null
@@ -1,24 +0,0 @@
-// 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.
-
-PRODUCT_NAME = ImageDiff
diff --git a/Tools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig b/Tools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig
deleted file mode 100644
index 22ea4c230..000000000
--- a/Tools/DumpRenderTree/mac/Configurations/TestNetscapePlugIn.xcconfig
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-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/Tools/DumpRenderTree/mac/DumpRenderTree.mm b/Tools/DumpRenderTree/mac/DumpRenderTree.mm
deleted file mode 100644
index 2f301c8a2..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTree.mm
+++ /dev/null
@@ -1,1488 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 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 "config.h"
-#import "DumpRenderTree.h"
-
-#import "AccessibilityController.h"
-#import "CheckedMalloc.h"
-#import "DefaultPolicyDelegate.h"
-#import "DumpRenderTreeDraggingInfo.h"
-#import "DumpRenderTreePasteboard.h"
-#import "DumpRenderTreeWindow.h"
-#import "EditingDelegate.h"
-#import "EventSendingController.h"
-#import "FrameLoadDelegate.h"
-#import "HistoryDelegate.h"
-#import "JavaScriptThreading.h"
-#import "TestRunner.h"
-#import "MockGeolocationProvider.h"
-#import "MockWebNotificationProvider.h"
-#import "NavigationController.h"
-#import "ObjCPlugin.h"
-#import "ObjCPluginFunction.h"
-#import "PixelDumpSupport.h"
-#import "PolicyDelegate.h"
-#import "ResourceLoadDelegate.h"
-#import "StorageTrackerDelegate.h"
-#import "UIDelegate.h"
-#import "WebArchiveDumpSupport.h"
-#import "WebCoreTestSupport.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <Carbon/Carbon.h>
-#import <CoreFoundation/CoreFoundation.h>
-#import <JavaScriptCore/HeapStatistics.h>
-#import <JavaScriptCore/Options.h>
-#import <WebCore/FoundationExtras.h>
-#import <WebKit/DOMElement.h>
-#import <WebKit/DOMExtensions.h>
-#import <WebKit/DOMRange.h>
-#import <WebKit/WebArchive.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/WebDeviceOrientationProviderMock.h>
-#import <WebKit/WebDynamicScrollBarsView.h>
-#import <WebKit/WebEditingDelegate.h>
-#import <WebKit/WebFrameView.h>
-#import <WebKit/WebHistory.h>
-#import <WebKit/WebHistoryItemPrivate.h>
-#import <WebKit/WebInspector.h>
-#import <WebKit/WebKitNSStringExtras.h>
-#import <WebKit/WebPluginDatabase.h>
-#import <WebKit/WebPreferences.h>
-#import <WebKit/WebPreferencesPrivate.h>
-#import <WebKit/WebPreferenceKeysPrivate.h>
-#import <WebKit/WebResourceLoadDelegate.h>
-#import <WebKit/WebStorageManagerPrivate.h>
-#import <WebKit/WebTypesInternal.h>
-#import <WebKit/WebViewPrivate.h>
-#import <getopt.h>
-#import <wtf/Assertions.h>
-#import <wtf/FastMalloc.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/Threading.h>
-#import <wtf/ObjcRuntimeExtras.h>
-#import <wtf/OwnPtr.h>
-
-extern "C" {
-#import <mach-o/getsect.h>
-}
-
-using namespace std;
-
-@interface DumpRenderTreeApplication : NSApplication
-@end
-
-@interface DumpRenderTreeEvent : NSEvent
-@end
-
-@interface NSURLRequest (PrivateThingsWeShouldntReallyUse)
-+(void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
-@end
-
-#if USE(APPKIT)
-@interface NSSound (Details)
-+ (void)_setAlertType:(NSUInteger)alertType;
-@end
-#endif
-
-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;
-RefPtr<TestRunner> gTestRunner;
-
-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;
-static CFRunLoopTimerRef waitToDumpWatchdog = 0;
-
-// Delegates
-static FrameLoadDelegate *frameLoadDelegate;
-static UIDelegate *uiDelegate;
-static EditingDelegate *editingDelegate;
-static ResourceLoadDelegate *resourceLoadDelegate;
-static HistoryDelegate *historyDelegate;
-PolicyDelegate *policyDelegate;
-DefaultPolicyDelegate *defaultPolicyDelegate;
-StorageTrackerDelegate *storageDelegate;
-
-static int dumpPixelsForAllTests = NO;
-static bool dumpPixelsForCurrentTest = false;
-static int threaded;
-static int dumpTree = YES;
-static int useTimeoutWatchdog = YES;
-static int forceComplexText;
-static int gcBetweenTests;
-static BOOL printSeparators;
-static RetainPtr<CFStringRef> persistentUserStyleSheetLocation;
-
-static WebHistoryItem *prevTestBFItem = nil; // current b/f item at the end of the previous test
-
-#ifdef __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(imposterMethods[i]), method_getTypeEncoding(imposterMethods[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);
-
-#ifndef __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 NSSet *allowedFontFamilySet()
-{
- static NSSet *fontFamilySet = [[NSSet setWithObjects:
- @"Ahem",
- @"Al Bayan",
- @"American Typewriter",
- @"Andale Mono",
- @"Apple Braille",
- @"Apple Color Emoji",
- @"Apple Chancery",
- @"Apple Garamond BT",
- @"Apple LiGothic",
- @"Apple LiSung",
- @"Apple Symbols",
- @"AppleGothic",
- @"AppleMyungjo",
- @"Arial Black",
- @"Arial Hebrew",
- @"Arial Narrow",
- @"Arial Rounded MT Bold",
- @"Arial Unicode MS",
- @"Arial",
- @"Ayuthaya",
- @"Baghdad",
- @"Baskerville",
- @"BiauKai",
- @"Big Caslon",
- @"Brush Script MT",
- @"Chalkboard",
- @"Chalkduster",
- @"Charcoal CY",
- @"Cochin",
- @"Comic Sans MS",
- @"Copperplate",
- @"Corsiva Hebrew",
- @"Courier New",
- @"Courier",
- @"DecoType Naskh",
- @"Devanagari MT",
- @"Didot",
- @"Euphemia UCAS",
- @"Futura",
- @"GB18030 Bitmap",
- @"Geeza Pro",
- @"Geneva CY",
- @"Geneva",
- @"Georgia",
- @"Gill Sans",
- @"Gujarati MT",
- @"GungSeo",
- @"Gurmukhi MT",
- @"HeadLineA",
- @"Hei",
- @"Heiti SC",
- @"Heiti TC",
- @"Helvetica CY",
- @"Helvetica Neue",
- @"Helvetica",
- @"Herculanum",
- @"Hiragino Kaku Gothic Pro",
- @"Hiragino Kaku Gothic ProN",
- @"Hiragino Kaku Gothic Std",
- @"Hiragino Kaku Gothic StdN",
- @"Hiragino Maru Gothic Monospaced",
- @"Hiragino Maru Gothic Pro",
- @"Hiragino Maru Gothic ProN",
- @"Hiragino Mincho Pro",
- @"Hiragino Mincho ProN",
- @"Hiragino Sans GB",
- @"Hoefler Text",
- @"Impact",
- @"InaiMathi",
- @"Kai",
- @"Kailasa",
- @"Kokonor",
- @"Krungthep",
- @"KufiStandardGK",
- @"LiHei Pro",
- @"LiSong Pro",
- @"Lucida Grande",
- @"Marker Felt",
- @"Menlo",
- @"Microsoft Sans Serif",
- @"Monaco",
- @"Mshtakan",
- @"Nadeem",
- @"New Peninim MT",
- @"Optima",
- @"Osaka",
- @"Papyrus",
- @"PCMyungjo",
- @"PilGi",
- @"Plantagenet Cherokee",
- @"Raanana",
- @"Sathu",
- @"Silom",
- @"Skia",
- @"Songti SC",
- @"Songti TC",
- @"STFangsong",
- @"STHeiti",
- @"STIXGeneral",
- @"STIXSizeOneSym",
- @"STKaiti",
- @"STSong",
- @"Symbol",
- @"Tahoma",
- @"Thonburi",
- @"Times New Roman",
- @"Times",
- @"Trebuchet MS",
- @"Verdana",
- @"Webdings",
- @"WebKit WeightWatcher",
- @"Wingdings 2",
- @"Wingdings 3",
- @"Wingdings",
- @"Zapf Dingbats",
- @"Zapfino",
- nil] retain];
-
- return fontFamilySet;
-}
-
-static NSSet *systemHiddenFontFamilySet()
-{
- static NSSet *fontFamilySet = [[NSSet setWithObjects:
- @".LucidaGrandeUI",
- nil] retain];
-
- return fontFamilySet;
-}
-
-static IMP appKitAvailableFontFamiliesIMP;
-static IMP appKitAvailableFontsIMP;
-
-static NSArray *drt_NSFontManager_availableFontFamilies(id self, SEL _cmd)
-{
- static NSArray *availableFontFamilies;
- if (availableFontFamilies)
- return availableFontFamilies;
-
- NSArray *availableFamilies = wtfCallIMP<id>(appKitAvailableFontFamiliesIMP, self, _cmd);
-
- NSMutableSet *prunedFamiliesSet = [NSMutableSet setWithArray:availableFamilies];
- [prunedFamiliesSet intersectSet:allowedFontFamilySet()];
-
- availableFontFamilies = [[prunedFamiliesSet allObjects] retain];
- return availableFontFamilies;
-}
-
-static NSArray *drt_NSFontManager_availableFonts(id self, SEL _cmd)
-{
- static NSArray *availableFonts;
- if (availableFonts)
- return availableFonts;
-
- NSSet *allowedFamilies = allowedFontFamilySet();
- NSMutableArray *availableFontList = [[NSMutableArray alloc] initWithCapacity:[allowedFamilies count] * 2];
- for (NSString *fontFamily in allowedFontFamilySet()) {
- NSArray* fontsForFamily = [[NSFontManager sharedFontManager] availableMembersOfFontFamily:fontFamily];
- for (NSArray* fontInfo in fontsForFamily) {
- // Font name is the first entry in the array.
- [availableFontList addObject:[fontInfo objectAtIndex:0]];
- }
- }
-
- for (NSString *hiddenFontFamily in systemHiddenFontFamilySet()) {
- [availableFontList addObject:hiddenFontFamily];
- }
-
- availableFonts = availableFontList;
- return availableFonts;
-}
-
-static void swizzleNSFontManagerMethods()
-{
- Method availableFontFamiliesMethod = class_getInstanceMethod(objc_getClass("NSFontManager"), @selector(availableFontFamilies));
- ASSERT(availableFontFamiliesMethod);
- if (!availableFontFamiliesMethod) {
- NSLog(@"Failed to swizzle the \"availableFontFamilies\" method on NSFontManager");
- return;
- }
-
- appKitAvailableFontFamiliesIMP = method_setImplementation(availableFontFamiliesMethod, (IMP)drt_NSFontManager_availableFontFamilies);
-
- Method availableFontsMethod = class_getInstanceMethod(objc_getClass("NSFontManager"), @selector(availableFonts));
- ASSERT(availableFontsMethod);
- if (!availableFontsMethod) {
- NSLog(@"Failed to swizzle the \"availableFonts\" method on NSFontManager");
- return;
- }
-
- appKitAvailableFontsIMP = method_setImplementation(availableFontsMethod, (IMP)drt_NSFontManager_availableFonts);
-}
-
-static void activateTestingFonts()
-{
- static const char* fontFileNames[] = {
- "AHEM____.TTF",
- "WebKitWeightWatcher100.ttf",
- "WebKitWeightWatcher200.ttf",
- "WebKitWeightWatcher300.ttf",
- "WebKitWeightWatcher400.ttf",
- "WebKitWeightWatcher500.ttf",
- "WebKitWeightWatcher600.ttf",
- "WebKitWeightWatcher700.ttf",
- "WebKitWeightWatcher800.ttf",
- "WebKitWeightWatcher900.ttf",
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- "SampleFont.sfont",
-#endif
- 0
- };
-
- NSMutableArray *fontURLs = [NSMutableArray array];
- NSURL *resourcesDirectory = [NSURL URLWithString:@"DumpRenderTree.resources" relativeToURL:[[NSBundle mainBundle] executableURL]];
- for (unsigned i = 0; fontFileNames[i]; ++i) {
- NSURL *fontURL = [resourcesDirectory URLByAppendingPathComponent:[NSString stringWithUTF8String:fontFileNames[i]]];
- [fontURLs addObject:[fontURL absoluteURL]];
- }
-
- CFArrayRef errors = 0;
- if (!CTFontManagerRegisterFontsForURLs((CFArrayRef)fontURLs, kCTFontManagerScopeProcess, &errors)) {
- NSLog(@"Failed to activate fonts: %@", errors);
- CFRelease(errors);
- exit(1);
- }
-}
-
-static void adjustFonts()
-{
- swizzleNSFontManagerMethods();
- activateTestingFonts();
-}
-
-@interface DRTMockScroller : NSScroller
-@end
-
-@implementation DRTMockScroller
-
-- (NSRect)rectForPart:(NSScrollerPart)partCode
-{
- switch (partCode) {
- case NSScrollerKnob: {
- NSRect frameRect = [self frame];
- NSRect bounds = [self bounds];
- BOOL isHorizontal = frameRect.size.width > frameRect.size.height;
- CGFloat trackLength = isHorizontal ? bounds.size.width : bounds.size.height;
- CGFloat minKnobSize = isHorizontal ? bounds.size.height : bounds.size.width;
- CGFloat knobLength = max(minKnobSize, static_cast<CGFloat>(round(trackLength * [self knobProportion])));
- CGFloat knobPosition = static_cast<CGFloat>((round([self doubleValue] * (trackLength - knobLength))));
-
- if (isHorizontal)
- return NSMakeRect(bounds.origin.x + knobPosition, bounds.origin.y, knobLength, bounds.size.height);
-
- return NSMakeRect(bounds.origin.x, bounds.origin.y + + knobPosition, bounds.size.width, knobLength);
- }
- }
-
- return [super rectForPart:partCode];
-}
-
-- (void)drawKnob
-{
- if (![self isEnabled])
- return;
-
- NSRect knobRect = [self rectForPart:NSScrollerKnob];
-
- static NSColor *knobColor = [[NSColor colorWithDeviceRed:0x80 / 255.0 green:0x80 / 255.0 blue:0x80 / 255.0 alpha:1] retain];
- [knobColor set];
-
- NSRectFill(knobRect);
-}
-
-- (void)drawRect:(NSRect)dirtyRect
-{
- static NSColor *trackColor = [[NSColor colorWithDeviceRed:0xC0 / 255.0 green:0xC0 / 255.0 blue:0xC0 / 255.0 alpha:1] retain];
- static NSColor *disabledTrackColor = [[NSColor colorWithDeviceRed:0xE0 / 255.0 green:0xE0 / 255.0 blue:0xE0 / 255.0 alpha:1] retain];
-
- if ([self isEnabled])
- [trackColor set];
- else
- [disabledTrackColor set];
-
- NSRectFill(dirtyRect);
-
- [self drawKnob];
-}
-
-@end
-
-static void registerMockScrollbars()
-{
- [WebDynamicScrollBarsView setCustomScrollerClass:[DRTMockScroller class]];
-}
-
-WebView *createWebViewAndOffscreenWindow()
-{
- NSRect rect = NSMakeRect(0, 0, TestRunner::viewWidth, TestRunner::viewHeight);
- WebView *webView = [[WebView alloc] initWithFrame:rect frameName:nil groupName:@"org.webkit.DumpRenderTree"];
-
- [webView setUIDelegate:uiDelegate];
- [webView setFrameLoadDelegate:frameLoadDelegate];
- [webView setEditingDelegate:editingDelegate];
- [webView setResourceLoadDelegate:resourceLoadDelegate];
- [webView _setGeolocationProvider:[MockGeolocationProvider shared]];
- [webView _setDeviceOrientationProvider:[WebDeviceOrientationProviderMock shared]];
- [webView _setNotificationProvider:[MockWebNotificationProvider shared]];
-
- // Register the same schemes that Safari does
- [WebView registerURLSchemeAsLocal:@"feed"];
- [WebView registerURLSchemeAsLocal:@"feeds"];
- [WebView registerURLSchemeAsLocal:@"feedsearch"];
-
- [webView setContinuousSpellCheckingEnabled:YES];
- [webView setAutomaticQuoteSubstitutionEnabled:NO];
- [webView setAutomaticLinkDetectionEnabled:NO];
- [webView setAutomaticDashSubstitutionEnabled:NO];
- [webView setAutomaticTextReplacementEnabled:NO];
- [webView setAutomaticSpellingCorrectionEnabled:YES];
- [webView setGrammarCheckingEnabled:YES];
-
- [webView setDefersCallbacks:NO];
- [webView setInteractiveFormValidationEnabled:YES];
- [webView setValidationMessageTimerMagnification:-1];
-
- // 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 *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
- DumpRenderTreeWindow *window = [[DumpRenderTreeWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
-
- [window setColorSpace:[[NSScreen mainScreen] colorSpace]];
- [window setCollectionBehavior:NSWindowCollectionBehaviorStationary];
- [[window contentView] addSubview:webView];
- [window orderBack:nil];
- [window setAutodisplay:NO];
- [window _setWindowResolution:1 displayIfChanged:YES];
-
- [window startListeningForAcceleratedCompositingChanges];
-
- // 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;
-}
-
-static NSString *libraryPathForDumpRenderTree()
-{
- //FIXME: This may not be sufficient to prevent interactions/crashes
- //when running more than one copy of DumpRenderTree.
- //See https://bugs.webkit.org/show_bug.cgi?id=10906
- char* dumpRenderTreeTemp = getenv("DUMPRENDERTREE_TEMP");
- if (dumpRenderTreeTemp)
- return [[NSFileManager defaultManager] stringWithFileSystemRepresentation:dumpRenderTreeTemp length:strlen(dumpRenderTreeTemp)];
- else
- return [@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath];
-}
-
-// Called before each test.
-static void resetDefaultsToConsistentValues()
-{
- 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"];
- [defaults setBool:YES forKey:WebKitEnableFullDocumentTeardownPreferenceKey];
- [defaults setBool:YES forKey:WebKitFullScreenEnabledPreferenceKey];
- [defaults setBool:YES forKey:@"UseWebKitWebInspector"];
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- [defaults setObject:[NSDictionary dictionaryWithObjectsAndKeys:
- @"notational", @"notationl",
- @"message", @"mesage",
- @"would", @"wouldn",
- @"welcome", @"wellcome",
- @"hello\nworld", @"hellolfworld",
- nil] forKey:@"NSTestCorrectionDictionary"];
-#endif
-
- // 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);
-#ifndef __LP64__
- // See <rdar://problem/6347388>.
- ThemeScrollBarArrowStyle style;
- GetThemeScrollBarArrowStyle(&style); // Force HIToolbox to read from CFPreferences
-#endif
-
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- [defaults setBool:NO forKey:@"NSScrollAnimationEnabled"];
-#else
- [defaults setBool:NO forKey:@"AppleScrollAnimationEnabled"];
-#endif
-
- [defaults setBool:NO forKey:@"NSOverlayScrollersEnabled"];
- [defaults setObject:@"Always" forKey:@"AppleShowScrollBars"];
-
- if (initialValue)
- CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), initialValue.get(), kCFPreferencesAnyApplication, kCFPreferencesCurrentUser, kCFPreferencesAnyHost);
-
- NSString *path = libraryPathForDumpRenderTree();
- [defaults setObject:[path stringByAppendingPathComponent:@"Databases"] forKey:WebDatabaseDirectoryDefaultsKey];
- [defaults setObject:[path stringByAppendingPathComponent:@"LocalStorage"] forKey:WebStorageDirectoryDefaultsKey];
- [defaults setObject:[path stringByAppendingPathComponent:@"LocalCache"] forKey:WebKitLocalCacheDefaultsKey];
-
- [defaults setBool:NO forKey:@"WebKitKerningAndLigaturesEnabledByDefault"];
-
- WebPreferences *preferences = [WebPreferences standardPreferences];
-
- [preferences setAllowUniversalAccessFromFileURLs:YES];
- [preferences setAllowFileAccessFromFileURLs:YES];
- [preferences setStandardFontFamily:@"Times"];
- [preferences setFixedFontFamily:@"Courier"];
- [preferences setSerifFontFamily:@"Times"];
- [preferences setSansSerifFontFamily:@"Helvetica"];
- [preferences setCursiveFontFamily:@"Apple Chancery"];
- [preferences setFantasyFontFamily:@"Papyrus"];
- [preferences setPictographFontFamily:@"Apple Color Emoji"];
- [preferences setDefaultFontSize:16];
- [preferences setDefaultFixedFontSize:13];
- [preferences setMinimumFontSize:0];
- [preferences setDefaultTextEncodingName:@"ISO-8859-1"];
- [preferences setJavaEnabled:NO];
- [preferences setJavaScriptEnabled:YES];
- [preferences setEditableLinkBehavior:WebKitEditableLinkOnlyLiveWithShiftKey];
- [preferences setTabsToLinks:NO];
- [preferences setDOMPasteAllowed:YES];
- [preferences setShouldPrintBackgrounds:YES];
- [preferences setCacheModel:WebCacheModelDocumentBrowser];
- [preferences setXSSAuditorEnabled:NO];
- [preferences setExperimentalNotificationsEnabled:NO];
- [preferences setPlugInsEnabled:YES];
- [preferences setTextAreasAreResizable:YES];
-
- [preferences setPrivateBrowsingEnabled:NO];
- [preferences setAuthorAndUserStylesEnabled:YES];
- [preferences setJavaScriptCanOpenWindowsAutomatically:YES];
- [preferences setJavaScriptCanAccessClipboard:YES];
- [preferences setOfflineWebApplicationCacheEnabled:YES];
- [preferences setDeveloperExtrasEnabled:NO];
- [preferences setJavaScriptExperimentsEnabled:YES];
- [preferences setLoadsImagesAutomatically:YES];
- [preferences setLoadsSiteIconsIgnoringImageLoadingPreference:NO];
- [preferences setFrameFlatteningEnabled:NO];
- [preferences setSpatialNavigationEnabled:NO];
- if (persistentUserStyleSheetLocation) {
- [preferences setUserStyleSheetLocation:[NSURL URLWithString:(NSString *)(persistentUserStyleSheetLocation.get())]];
- [preferences setUserStyleSheetEnabled:YES];
- } else
- [preferences setUserStyleSheetEnabled:NO];
-
- // 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];
- [preferences setAcceleratedCompositingEnabled:YES];
-#if USE(CA) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- [preferences setCanvasUsesAcceleratedDrawing:YES];
- [preferences setAcceleratedDrawingEnabled:NO];
-#endif
- [preferences setWebGLEnabled:NO];
- [preferences setCSSRegionsEnabled:YES];
- [preferences setCSSGridLayoutEnabled:NO];
- [preferences setUsePreHTML5ParserQuirks:NO];
- [preferences setAsynchronousSpellCheckingEnabled:NO];
- [preferences setMockScrollbarsEnabled:YES];
- [preferences setSeamlessIFramesEnabled:YES];
-
-#if ENABLE(WEB_AUDIO)
- [preferences setWebAudioEnabled:YES];
-#endif
-
- [preferences setScreenFontSubstitutionEnabled:YES];
-
- [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain];
-
- TestRunner::setSerializeHTTPLoads(false);
-
- setlocale(LC_ALL, "");
-}
-
-// Called once on DumpRenderTree startup.
-static void setDefaultsToConsistentValuesForTesting()
-{
- // FIXME: We'd like to start with a clean state for every test, but this function can't be used more than once yet.
- [WebPreferences _switchNetworkLoaderToNewTestingSession];
-
- resetDefaultsToConsistentValues();
-
- NSString *path = libraryPathForDumpRenderTree();
- NSURLCache *sharedCache =
- [[NSURLCache alloc] initWithMemoryCapacity:1024 * 1024
- diskCapacity:0
- diskPath:[path stringByAppendingPathComponent:@"URLCache"]];
- [NSURLCache setSharedURLCache:sharedCache];
- [sharedCache release];
-}
-
-static void runThread(void* arg)
-{
- static ThreadIdentifier previousId = 0;
- ThreadIdentifier currentId = currentThread();
- // Verify 2 successive threads do not get the same Id.
- ASSERT(previousId != currentId);
- previousId = currentId;
-}
-
-static void* runPthread(void* arg)
-{
- runThread(arg);
- return 0;
-}
-
-static void testThreadIdentifierMap()
-{
- // Imitate 'foreign' threads that are not created by WTF.
- pthread_t pthread;
- pthread_create(&pthread, 0, &runPthread, 0);
- pthread_join(pthread, 0);
-
- pthread_create(&pthread, 0, &runPthread, 0);
- pthread_join(pthread, 0);
-
- // Now create another thread using WTF. On OSX, it will have the same pthread handle
- // but should get a different ThreadIdentifier.
- createThread(runThread, 0, "DumpRenderTree: test");
-}
-
-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];
- historyDelegate = [[HistoryDelegate alloc] init];
- storageDelegate = [[StorageTrackerDelegate alloc] init];
- defaultPolicyDelegate = [[DefaultPolicyDelegate 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);
- releaseAndZero(&storageDelegate);
-}
-
-static void initializeGlobalsFromCommandLineOptions(int argc, const char *argv[])
-{
- struct option options[] = {
- {"notree", no_argument, &dumpTree, NO},
- {"pixel-tests", no_argument, &dumpPixelsForAllTests, YES},
- {"tree", no_argument, &dumpTree, YES},
- {"threaded", no_argument, &threaded, YES},
- {"complex-text", no_argument, &forceComplexText, YES},
- {"gc-between-tests", no_argument, &gcBetweenTests, YES},
- {"no-timeout", no_argument, &useTimeoutWatchdog, NO},
- {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();
- adjustFonts();
- registerMockScrollbars();
-
- allocateGlobalControllers();
-
- makeLargeMallocFailSilently();
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
- NSActivityOptions options = (NSActivityUserInitiatedAllowingIdleSystemSleep | NSActivityLatencyCritical) & ~(NSActivitySuddenTerminationDisabled | NSActivityAutomaticTerminationDisabled);
- static id assertion = [[[NSProcessInfo processInfo] beginActivityWithOptions:options reason:@"DumpRenderTree should not be subject to process suppression"] retain];
- ASSERT_UNUSED(assertion, assertion);
-#endif
-}
-
-void dumpRenderTree(int argc, const char *argv[])
-{
- initializeGlobalsFromCommandLineOptions(argc, argv);
- prepareConsistentTestingEnvironment();
- addTestPluginsToPluginSearchPath(argv[0]);
-
- if (forceComplexText)
- [WebView _setAlwaysUsesComplexTextCodePath:YES];
-
-#if USE(APPKIT)
- [NSSound _setAlertType:0];
-#endif
-
- WebView *webView = createWebViewAndOffscreenWindow();
- mainFrame = [webView mainFrame];
-
- [[NSURLCache sharedURLCache] removeAllCachedResponses];
- [WebCache empty];
-
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@"localhost"];
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@"127.0.0.1"];
-
- // http://webkit.org/b/32689
- testThreadIdentifierMap();
-
- if (threaded)
- startJavaScriptThreads();
-
- if (useLongRunningServerMode(argc, argv)) {
- printSeparators = YES;
- runTestingServerLoop();
- } else {
- printSeparators = optind < argc - 1;
- for (int i = optind; i != argc; ++i)
- runTest(argv[i]);
- }
-
- if (threaded)
- stopJavaScriptThreads();
-
- NSWindow *window = [webView window];
- [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).
- [NSObject cancelPreviousPerformRequestsWithTarget:window];
-
- [window close]; // releases when closed
- [webView release];
-
- releaseGlobalControllers();
-
- [DumpRenderTreePasteboard releaseLocalPasteboards];
-
- // FIXME: This should be moved onto TestRunner and made into a HashSet
- if (disallowedURLs) {
- CFRelease(disallowedURLs);
- disallowedURLs = 0;
- }
-}
-
-int main(int argc, const char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [DumpRenderTreeApplication sharedApplication]; // Force AppKit to init itself
- dumpRenderTree(argc, argv);
- [WebCoreStatistics garbageCollectJavaScriptObjects];
- [WebCoreStatistics emptyCache]; // Otherwise SVGImages trigger false positives for Frame/Node counts
- if (JSC::Options::logHeapStatisticsAtExit())
- JSC::HeapStatistics::reportSuccess();
- [pool release];
- return 0;
-}
-
-static NSInteger compareHistoryItems(id item1, id item2, void *context)
-{
- return [[item1 target] caseInsensitiveCompare:[item2 target]];
-}
-
-static NSData *dumpAudio()
-{
- const char *encodedAudioData = gTestRunner->encodedAudioData().c_str();
-
- NSData *data = [NSData dataWithBytes:encodedAudioData length:gTestRunner->encodedAudioData().length()];
- return data;
-}
-
-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(' ');
-
- NSString *urlString = [item URLString];
- if ([[NSURL URLWithString:urlString] isFileURL]) {
- NSRange range = [urlString rangeOfString:@"/LayoutTests/"];
- urlString = [@"(file test):" stringByAppendingString:[urlString substringFromIndex:(range.length + range.location)]];
- }
-
- printf("%s", [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)
-{
- WebScriptObject* scriptObject = [f windowObject];
- NSPoint scrollPosition = NSMakePoint(
- [[scriptObject valueForKey:@"pageXOffset"] floatValue],
- [[scriptObject valueForKey:@"pageYOffset"] floatValue]);
- 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 (gTestRunner->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 (gTestRunner->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 = [libraryPathForDumpRenderTree() stringByAppendingPathComponent:@"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 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 = (gTestRunner->testPathOrURL().find("svg/W3C-SVG-1.1") != string::npos);
- if (isSVGW3CTest)
- [[mainFrame webView] setFrameSize:NSMakeSize(TestRunner::w3cSVGViewWidth, TestRunner::w3cSVGViewHeight)];
- else
- [[mainFrame webView] setFrameSize:NSMakeSize(TestRunner::viewWidth, TestRunner::viewHeight)];
-}
-
-static const char *methodNameStringForFailedTest()
-{
- const char *errorMessage;
- if (gTestRunner->dumpAsText())
- errorMessage = "[documentElement innerText]";
- else if (gTestRunner->dumpDOMAsWebArchive())
- errorMessage = "[[mainFrame DOMDocument] webArchive]";
- else if (gTestRunner->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 setWaitToDumpWatchdog(CFRunLoopTimerRef timer)
-{
- ASSERT(timer);
- ASSERT(shouldSetWaitToDumpWatchdog());
- waitToDumpWatchdog = timer;
- CFRunLoopAddTimer(CFRunLoopGetCurrent(), waitToDumpWatchdog, kCFRunLoopCommonModes);
-}
-
-bool shouldSetWaitToDumpWatchdog()
-{
- return !waitToDumpWatchdog && useTimeoutWatchdog;
-}
-
-void dump()
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
- ASSERT(!gTestRunner->hasPendingWebNotificationClick());
-
- if (dumpTree) {
- NSString *resultString = nil;
- NSData *resultData = nil;
- NSString *resultMimeType = @"text/plain";
-
- if ([[[mainFrame dataSource] _responseMIMEType] isEqualToString:@"text/plain"]) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
- if (gTestRunner->dumpAsAudio()) {
- resultData = dumpAudio();
- resultMimeType = @"audio/wav";
- } else if (gTestRunner->dumpAsText()) {
- resultString = dumpFramesAsText(mainFrame);
- } else if (gTestRunner->dumpAsPDF()) {
- resultData = dumpFrameAsPDF(mainFrame);
- resultMimeType = @"application/pdf";
- } else if (gTestRunner->dumpDOMAsWebArchive()) {
- WebArchive *webArchive = [[mainFrame DOMDocument] webArchive];
- resultString = HardAutorelease(createXMLStringFromWebArchiveData((CFDataRef)[webArchive data]));
- resultMimeType = @"application/x-webarchive";
- } else if (gTestRunner->dumpSourceAsWebArchive()) {
- WebArchive *webArchive = [[mainFrame dataSource] webArchive];
- resultString = HardAutorelease(createXMLStringFromWebArchiveData((CFDataRef)[webArchive data]));
- resultMimeType = @"application/x-webarchive";
- } else
- resultString = [mainFrame renderTreeAsExternalRepresentationForPrinting:gTestRunner->isPrinting()];
-
- if (resultString && !resultData)
- resultData = [resultString dataUsingEncoding:NSUTF8StringEncoding];
-
- printf("Content-Type: %s\n", [resultMimeType UTF8String]);
-
- if (gTestRunner->dumpAsAudio())
- printf("Content-Transfer-Encoding: base64\n");
-
- WTF::FastMallocStatistics mallocStats = WTF::fastMallocStatistics();
- printf("DumpMalloc: %li\n", mallocStats.committedVMBytes);
-
- if (resultData) {
- fwrite([resultData bytes], 1, [resultData length], stdout);
-
- if (!gTestRunner->dumpAsText() && !gTestRunner->dumpDOMAsWebArchive() && !gTestRunner->dumpSourceAsWebArchive())
- dumpFrameScrollPosition(mainFrame);
-
- if (gTestRunner->dumpBackForwardList())
- dumpBackForwardListForAllWindows();
- } else
- printf("ERROR: nil result from %s", methodNameStringForFailedTest());
-
- // Stop the watchdog thread before we leave this test to make sure it doesn't
- // fire in between tests causing the next test to fail.
- // This is a speculative fix for: https://bugs.webkit.org/show_bug.cgi?id=32339
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- }
- }
-
- if (dumpPixelsForCurrentTest && gTestRunner->generatePixelResults())
- // FIXME: when isPrinting is set, dump the image with page separators.
- dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner->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 bool shouldLogHistoryDelegates(const char* pathOrURL)
-{
- return strstr(pathOrURL, "globalhistory/");
-}
-
-static bool shouldOpenWebInspector(const char* pathOrURL)
-{
- return strstr(pathOrURL, "inspector/");
-}
-
-static bool shouldDumpAsText(const char* pathOrURL)
-{
- return strstr(pathOrURL, "dumpAsText/");
-}
-
-static bool shouldEnableDeveloperExtras(const char* pathOrURL)
-{
- return true;
-}
-
-static void resetWebViewToConsistentStateBeforeTesting()
-{
- WebView *webView = [mainFrame webView];
- [webView setEditable:NO];
- [(EditingDelegate *)[webView editingDelegate] setAcceptsEditing:YES];
- [webView makeTextStandardSize:nil];
- [webView resetPageZoom:nil];
- [webView _scaleWebView:1.0 atOrigin:NSZeroPoint];
- [webView _setCustomBackingScaleFactor:0];
- [webView setTabKeyCyclesThroughElements:YES];
- [webView setPolicyDelegate:defaultPolicyDelegate];
- [policyDelegate setPermissive:NO];
- [policyDelegate setControllerToNotifyDone:0];
- [frameLoadDelegate resetToConsistentState];
- [webView _setDashboardBehavior:WebDashboardBehaviorUseBackwardCompatibilityMode to:NO];
- [webView _clearMainFrameName];
- [[webView undoManager] removeAllActions];
- [WebView _removeAllUserContentFromGroup:[webView groupName]];
- [[webView window] setAutodisplay:NO];
- [webView setTracksRepaints:NO];
-
- resetDefaultsToConsistentValues();
-
- if (gTestRunner) {
- WebCoreTestSupport::resetInternalsObject([mainFrame globalContext]);
- // in the case that a test using the chrome input field failed, be sure to clean up for the next test
- gTestRunner->removeChromeInputField();
- }
-
- [webView setContinuousSpellCheckingEnabled:YES];
- [webView setAutomaticQuoteSubstitutionEnabled:NO];
- [webView setAutomaticLinkDetectionEnabled:NO];
- [webView setAutomaticDashSubstitutionEnabled:NO];
- [webView setAutomaticTextReplacementEnabled:NO];
- [webView setAutomaticSpellingCorrectionEnabled:YES];
- [webView setGrammarCheckingEnabled:YES];
-
- [WebView _setUsesTestModeFocusRingColor:YES];
- [WebView _resetOriginAccessWhitelists];
- [WebView _setAllowsRoundingHacks:NO];
-
- [[MockGeolocationProvider shared] stopTimer];
- [[MockWebNotificationProvider shared] reset];
-
- // Clear the contents of the general pasteboard
- [[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
-
- [mainFrame _clearOpener];
-}
-
-static void runTest(const string& inputLine)
-{
- ASSERT(!inputLine.empty());
-
- TestCommand command = parseInputLine(inputLine);
- const string& pathOrURL = command.pathOrURL;
- dumpPixelsForCurrentTest = command.shouldDumpPixels || dumpPixelsForAllTests;
-
- 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://"] || [pathOrURLString hasPrefix:@"file://"])
- 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();
-
- gTestRunner = TestRunner::create(testURL, command.expectedPixelHash);
- topLoadingFrame = nil;
- ASSERT(!draggingInfo); // the previous test should have called eventSender.mouseUp to drop!
- releaseAndZero(&draggingInfo);
- done = NO;
-
- sizeWebViewForCurrentTest();
- gTestRunner->setIconDatabaseEnabled(false);
-
- if (disallowedURLs)
- CFSetRemoveAllValues(disallowedURLs);
- if (shouldLogFrameLoadDelegates(pathOrURL.c_str()))
- gTestRunner->setDumpFrameLoadCallbacks(true);
-
- if (shouldLogHistoryDelegates(pathOrURL.c_str()))
- [[mainFrame webView] setHistoryDelegate:historyDelegate];
- else
- [[mainFrame webView] setHistoryDelegate:nil];
-
- if (shouldEnableDeveloperExtras(pathOrURL.c_str())) {
- gTestRunner->setDeveloperExtrasEnabled(true);
- if (shouldOpenWebInspector(pathOrURL.c_str()))
- gTestRunner->showWebInspector();
- if (shouldDumpAsText(pathOrURL.c_str())) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
- }
-
- 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 (gTestRunner->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];
- }
- }
-
- // If developer extras enabled Web Inspector may have been open by the test.
- if (shouldEnableDeveloperExtras(pathOrURL.c_str())) {
- gTestRunner->closeWebInspector();
- gTestRunner->setDeveloperExtrasEnabled(false);
- }
-
- resetWebViewToConsistentStateBeforeTesting();
-
- [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]);
-
- gTestRunner.clear();
-
- if (ignoreWebCoreNodeLeaks)
- [WebCoreStatistics stopIgnoringWebCoreNodeLeaks];
-
- if (gcBetweenTests)
- [WebCoreStatistics garbageCollectJavaScriptObjects];
-}
-
-void displayWebView()
-{
- WebView *webView = [mainFrame webView];
- [webView display];
-
- [webView setTracksRepaints:YES];
- [webView resetTrackedRepaints];
-}
-
-@implementation DumpRenderTreeEvent
-
-+ (NSPoint)mouseLocation
-{
- return [[[mainFrame webView] window] convertBaseToScreen:lastMousePosition];
-}
-
-@end
-
-@implementation DumpRenderTreeApplication
-
-- (BOOL)isRunning
-{
- // <rdar://problem/7686123> Java plug-in freezes unless NSApplication is running
- return YES;
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h b/Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.h
deleted file mode 100644
index 249809c94..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm b/Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm
deleted file mode 100644
index b6b22c269..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTreeDraggingInfo.mm
+++ /dev/null
@@ -1,146 +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 "config.h"
-#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;
-}
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-- (NSDraggingFormation)draggingFormation
-{
- return NSDraggingFormationDefault;
-}
-
-- (void)setDraggingFormation:(NSDraggingFormation)formation
-{
- // Ignored.
-}
-
-- (BOOL)animatesToDestination
-{
- return NO;
-}
-
-- (void)setAnimatesToDestination:(BOOL)flag
-{
- // Ignored.
-}
-
-- (NSInteger)numberOfValidItemsForDrop
-{
- return 1;
-}
-
-- (void)setNumberOfValidItemsForDrop:(NSInteger)number
-{
- // Ignored.
-}
-
-- (void)enumerateDraggingItemsWithOptions:(NSEnumerationOptions)enumOpts forView:(NSView *)view classes:(NSArray *)classArray searchOptions:(NSDictionary *)searchOptions usingBlock:(void (^)(NSDraggingItem *draggingItem, NSInteger idx, BOOL *stop))block
-{
- // Ignored.
-}
-#endif // __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-
-@end
-
diff --git a/Tools/DumpRenderTree/mac/DumpRenderTreeMac.h b/Tools/DumpRenderTree/mac/DumpRenderTreeMac.h
deleted file mode 100644
index 6c7331171..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTreeMac.h
+++ /dev/null
@@ -1,72 +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
-
-#include <CoreFoundation/CoreFoundation.h>
-
-#ifdef __OBJC__
-@class DefaultPolicyDelegate;
-@class DumpRenderTreeDraggingInfo;
-@class NavigationController;
-@class PolicyDelegate;
-@class StorageTrackerDelegate;
-@class WebFrame;
-@class WebScriptWorld;
-@class WebView;
-#else
-class DefaultPolicyDelegate;
-class DumpRenderTreeDraggingInfo;
-class NavigationController;
-class PolicyDelegate;
-class StorageTrackerDelegate;
-class WebFrame;
-class WebScriptWorld;
-class WebView;
-#endif
-
-extern CFMutableArrayRef openWindowsRef;
-extern CFMutableSetRef disallowedURLs;
-extern WebFrame* mainFrame;
-extern WebFrame* topLoadingFrame;
-extern DumpRenderTreeDraggingInfo *draggingInfo;
-extern NavigationController* gNavigationController;
-extern PolicyDelegate* policyDelegate;
-extern StorageTrackerDelegate* storageDelegate;
-extern DefaultPolicyDelegate *defaultPolicyDelegate;
-
-void setWaitToDumpWatchdog(CFRunLoopTimerRef);
-bool shouldSetWaitToDumpWatchdog();
-
-WebView* createWebViewAndOffscreenWindow();
-void setPersistentUserStyleSheetLocation(CFStringRef);
-
-unsigned worldIDForWorld(WebScriptWorld *);
-
-#endif // DumpRenderTreeMac_h
diff --git a/Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.h b/Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.h
deleted file mode 100644
index ba2754ba7..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m b/Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m
deleted file mode 100644
index 04fafd84c..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTreePasteboard.m
+++ /dev/null
@@ -1,211 +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 "config.h"
-#import "DumpRenderTreeMac.h"
-#import "DumpRenderTreePasteboard.h"
-
-#import <WebKit/WebTypesInternal.h>
-
-@interface LocalPasteboard : NSPasteboard
-{
- NSMutableArray *typesArray;
- NSMutableSet *typesSet;
- NSMutableDictionary *dataByType;
- NSInteger changeCount;
- NSString *pasteboardName;
-}
-
--(id)initWithName:(NSString *)name;
-@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] initWithName:name];
- [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)initWithName:(NSString *)name
-{
- typesArray = [[NSMutableArray alloc] init];
- typesSet = [[NSMutableSet alloc] init];
- dataByType = [[NSMutableDictionary alloc] init];
- pasteboardName = [name copy];
- return self;
-}
-
-- (void)dealloc
-{
- [typesArray release];
- [typesSet release];
- [dataByType release];
- [pasteboardName release];
- [super dealloc];
-}
-
-- (NSString *)name
-{
- return pasteboardName;
-}
-
-- (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/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.h b/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.h
deleted file mode 100644
index 3b1d77eb3..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.h
+++ /dev/null
@@ -1,52 +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>
-
-@class WebView;
-
-@interface NSWindow (Details)
-
-- (void)_setWindowResolution:(CGFloat)resolution displayIfChanged:(BOOL)displayIfChanged;
-
-@end
-
-@interface DumpRenderTreeWindow : NSWindow
-{
-}
-
-// I'm not sure why we can't just use [NSApp windows]
-+ (NSArray *)openWindows;
-
-- (WebView *)webView;
-
-- (void)startListeningForAcceleratedCompositingChanges;
-
-@end
diff --git a/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.mm b/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
deleted file mode 100644
index 4a6fd6bbc..000000000
--- a/Tools/DumpRenderTree/mac/DumpRenderTreeWindow.mm
+++ /dev/null
@@ -1,128 +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 "config.h"
-#import "DumpRenderTreeWindow.h"
-
-#import "DumpRenderTree.h"
-
-// FIXME: This file is ObjC++ only because of this include. :(
-#import "TestRunner.h"
-#import <WebKit/WebViewPrivate.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
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-
- CFRange arrayRange = CFRangeMake(0, CFArrayGetCount(openWindowsRef));
- CFIndex i = CFArrayGetFirstIndexOfValue(openWindowsRef, arrayRange, self);
- if (i != kCFNotFound)
- CFArrayRemoveValueAtIndex(openWindowsRef, i);
-
- [super close];
-}
-
-- (BOOL)isKeyWindow
-{
- return gTestRunner ? gTestRunner->windowIsKey() : YES;
-}
-
-- (BOOL)_hasKeyAppearance
-{
- return [self isKeyWindow];
-}
-
-- (void)keyDown:(NSEvent *)event
-{
- // Do nothing, avoiding the beep we'd otherwise get from NSResponder,
- // once we get to the end of the responder chain.
-}
-
-- (WebView *)webView
-{
- NSView *firstView = nil;
- if ([[[self contentView] subviews] count] > 0) {
- firstView = [[[self contentView] subviews] objectAtIndex:0];
- if ([firstView isKindOfClass:[WebView class]])
- return static_cast<WebView *>(firstView);
- }
- return nil;
-}
-
-- (void)startListeningForAcceleratedCompositingChanges
-{
- [[self webView] _setPostsAcceleratedCompositingNotifications:YES];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(webViewStartedAcceleratedCompositing:)
- name:_WebViewDidStartAcceleratedCompositingNotification object:nil];
-}
-
-- (void)webViewStartedAcceleratedCompositing:(NSNotification *)notification
-{
- // If the WebView has gone into compositing mode, turn on window autodisplay. This is necessary for CA
- // to update layers and start animations.
- // We only ever turn autodisplay on here, because we turn it off before every test.
- if ([[self webView] _isUsingAcceleratedCompositing])
- [self setAutodisplay:YES];
-}
-
-- (CGFloat)backingScaleFactor
-{
- return 1;
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/EditingDelegate.h b/Tools/DumpRenderTree/mac/EditingDelegate.h
deleted file mode 100644
index b5563c887..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/EditingDelegate.mm b/Tools/DumpRenderTree/mac/EditingDelegate.mm
deleted file mode 100644
index d6227a72c..000000000
--- a/Tools/DumpRenderTree/mac/EditingDelegate.mm
+++ /dev/null
@@ -1,192 +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 "config.h"
-#import "EditingDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "TestRunner.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 %d of %@ to %d 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 && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldBeginEditingInDOMRange:%s\n", [[range dump] UTF8String]);
- return acceptsEditing;
-}
-
-- (BOOL)webView:(WebView *)webView shouldEndEditingInDOMRange:(DOMRange *)range
-{
- if (!done && gTestRunner->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 && gTestRunner->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 && gTestRunner->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 && gTestRunner->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 && gTestRunner->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 && gTestRunner->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 && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: shouldChangeTypingStyle:%s toStyle:%s\n", [[currentStyle description] UTF8String], [[proposedStyle description] UTF8String]);
- return acceptsEditing;
-}
-
-- (void)webViewDidBeginEditing:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidBeginEditing:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChange:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChange:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidEndEditing:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidEndEditing:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChangeTypingStyle:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeTypingStyle:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)webViewDidChangeSelection:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpEditingCallbacks())
- printf("EDITING DELEGATE: webViewDidChangeSelection:%s\n", [[notification name] UTF8String]);
-}
-
-- (void)setAcceptsEditing:(BOOL)newAcceptsEditing
-{
- acceptsEditing = newAcceptsEditing;
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/EventSendingController.h b/Tools/DumpRenderTree/mac/EventSendingController.h
deleted file mode 100644
index 944057546..000000000
--- a/Tools/DumpRenderTree/mac/EventSendingController.h
+++ /dev/null
@@ -1,55 +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)scheduleAsynchronousClick;
-
-- (void)enableDOMUIEventLogging:(WebScriptObject *)node;
-
-- (void)handleEvent:(DOMEvent *)event;
-
-@end
-
-extern NSPoint lastMousePosition;
-extern NSPoint lastClickPosition; \ No newline at end of file
diff --git a/Tools/DumpRenderTree/mac/EventSendingController.mm b/Tools/DumpRenderTree/mac/EventSendingController.mm
deleted file mode 100644
index 05bfd3679..000000000
--- a/Tools/DumpRenderTree/mac/EventSendingController.mm
+++ /dev/null
@@ -1,962 +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 "config.h"
-#import "EventSendingController.h"
-
-#import "DumpRenderTree.h"
-#import "DumpRenderTreeDraggingInfo.h"
-#import "DumpRenderTreeFileDraggingSource.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
-};
-
-struct KeyMappingEntry {
- int macKeyCode;
- int macNumpadKeyCode;
- unichar character;
- NSString* characterName;
-};
-
-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(beginDragWithFiles:)
- || aSelector == @selector(clearKillRing)
- || aSelector == @selector(contextClick)
- || aSelector == @selector(enableDOMUIEventLogging:)
- || aSelector == @selector(fireKeyboardEventsToElement:)
- || aSelector == @selector(keyDown:withModifiers:withLocation:)
- || aSelector == @selector(leapForward:)
- || aSelector == @selector(mouseDown:withModifiers:)
- || aSelector == @selector(mouseMoveToX:Y:)
- || aSelector == @selector(mouseUp:withModifiers:)
- || aSelector == @selector(scheduleAsynchronousClick)
- || aSelector == @selector(scheduleAsynchronousKeyDown:withModifiers:withLocation:)
- || aSelector == @selector(textZoomIn)
- || aSelector == @selector(textZoomOut)
- || aSelector == @selector(zoomPageIn)
- || aSelector == @selector(zoomPageOut)
- || aSelector == @selector(scalePageBy:atX:andY:)
- || aSelector == @selector(mouseScrollByX:andY:)
- || aSelector == @selector(continuousMouseScrollByX:andY:))
- 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(beginDragWithFiles:))
- return @"beginDragWithFiles";
- if (aSelector == @selector(contextClick))
- return @"contextClick";
- if (aSelector == @selector(enableDOMUIEventLogging:))
- return @"enableDOMUIEventLogging";
- if (aSelector == @selector(fireKeyboardEventsToElement:))
- return @"fireKeyboardEventsToElement";
- if (aSelector == @selector(keyDown:withModifiers:withLocation:))
- return @"keyDown";
- if (aSelector == @selector(scheduleAsynchronousKeyDown:withModifiers:withLocation:))
- return @"scheduleAsynchronousKeyDown";
- if (aSelector == @selector(leapForward:))
- return @"leapForward";
- if (aSelector == @selector(mouseDown:withModifiers:))
- return @"mouseDown";
- if (aSelector == @selector(mouseUp:withModifiers:))
- return @"mouseUp";
- if (aSelector == @selector(mouseMoveToX:Y:))
- return @"mouseMoveTo";
- if (aSelector == @selector(setDragMode:))
- return @"setDragMode";
- if (aSelector == @selector(mouseScrollByX:andY:))
- return @"mouseScrollBy";
- if (aSelector == @selector(continuousMouseScrollByX:andY:))
- return @"continuousMouseScrollBy";
- if (aSelector == @selector(scalePageBy:atX:andY:))
- return @"scalePageBy";
- 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)beginDragWithFiles:(WebScriptObject*)jsFilePaths
-{
- assert(!draggingInfo);
- assert([jsFilePaths isKindOfClass:[WebScriptObject class]]);
-
- NSPasteboard *pboard = [NSPasteboard pasteboardWithUniqueName];
- [pboard declareTypes:[NSArray arrayWithObject:NSFilenamesPboardType] owner:nil];
-
- NSURL *currentTestURL = [NSURL URLWithString:[[mainFrame webView] mainFrameURL]];
-
- NSMutableArray *filePaths = [NSMutableArray array];
- for (unsigned i = 0; [[jsFilePaths webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
- NSString *filePath = (NSString *)[jsFilePaths webScriptValueAtIndex:i];
- // Have NSURL encode the name so that we handle '?' in file names correctly.
- NSURL *fileURL = [NSURL fileURLWithPath:filePath];
- NSURL *absoluteFileURL = [NSURL URLWithString:[fileURL relativeString] relativeToURL:currentTestURL];
- [filePaths addObject:[absoluteFileURL path]];
- }
-
- [pboard setPropertyList:filePaths forType:NSFilenamesPboardType];
- assert([pboard propertyListForType:NSFilenamesPboardType]); // setPropertyList will silently fail on error, assert that it didn't fail
-
- // Provide a source, otherwise [DumpRenderTreeDraggingInfo draggingSourceOperationMask] defaults to NSDragOperationNone
- DumpRenderTreeFileDraggingSource *source = [[[DumpRenderTreeFileDraggingSource alloc] init] autorelease];
- draggingInfo = [[DumpRenderTreeDraggingInfo alloc] initWithImage:nil offset:NSZeroSize pasteboard:pboard source:source];
- [[mainFrame webView] draggingEntered:draggingInfo];
-
- dragMode = NO; // dragMode saves events and then replays them later. We don't need/want that.
- leftMouseButtonDown = YES; // Make the rest of eventSender think a drag is in progress
-}
-
-- (void)updateClickCountForButton:(int)buttonNumber
-{
- if (([self currentEventTime] - lastClick >= 1) ||
- !NSEqualPoints(lastMousePosition, lastClickPosition) ||
- lastClickButton != buttonNumber) {
- clickCount = 1;
- lastClickButton = buttonNumber;
- } else
- clickCount++;
-}
-
-static int modifierFlags(const NSString* modifierName)
-{
- int flags = 0;
- if ([modifierName isEqual:@"ctrlKey"])
- flags |= NSControlKeyMask;
- else if ([modifierName isEqual:@"shiftKey"] || [modifierName isEqual:@"rangeSelectionKey"])
- flags |= NSShiftKeyMask;
- else if ([modifierName isEqual:@"altKey"])
- flags |= NSAlternateKeyMask;
- else if ([modifierName isEqual:@"metaKey"] || [modifierName isEqual:@"addSelectionKey"])
- flags |= NSCommandKeyMask;
-
- return flags;
-}
-
-static int buildModifierFlags(const WebScriptObject* modifiers)
-{
- int flags = 0;
- if ([modifiers isKindOfClass:[NSString class]])
- return modifierFlags((NSString*)modifiers);
- else if (![modifiers isKindOfClass:[WebScriptObject class]])
- return flags;
- for (unsigned i = 0; [[modifiers webScriptValueAtIndex:i] isKindOfClass:[NSString class]]; i++) {
- NSString* modifierName = (NSString*)[modifiers webScriptValueAtIndex:i];
- flags |= modifierFlags(modifierName);
- }
- return flags;
-}
-
-- (void)mouseDown:(int)buttonNumber withModifiers:(WebScriptObject*)modifiers
-{
- [[[mainFrame frameView] documentView] layout];
- [self updateClickCountForButton:buttonNumber];
-
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseDown);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:lastMousePosition
- modifierFlags:buildModifierFlags(modifiers)
- 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)mouseDown:(int)buttonNumber
-{
- [self mouseDown:buttonNumber withModifiers:nil];
-}
-
-- (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)scalePageBy:(float)scale atX:(float)x andY:(float)y
-{
- [[mainFrame webView] _scaleWebView:scale atOrigin:NSMakePoint(x, y)];
-}
-
-- (void)mouseUp:(int)buttonNumber withModifiers:(WebScriptObject*)modifiers
-{
- if (dragMode && !replayingSavedEvents) {
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(mouseUp:withModifiers:)]];
- [invocation setTarget:self];
- [invocation setSelector:@selector(mouseUp:withModifiers:)];
- [invocation setArgument:&buttonNumber atIndex:2];
- [invocation setArgument:&modifiers atIndex:3];
-
- [EventSendingController saveEvent:invocation];
- [EventSendingController replaySavedEvents];
-
- return;
- }
-
- [[[mainFrame frameView] documentView] layout];
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseUp);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:lastMousePosition
- modifierFlags:buildModifierFlags(modifiers)
- 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];
- // Per NSDragging.h: draggingSources may not implement draggedImage:endedAt:operation:
- if ([[draggingInfo draggingSource] respondsToSelector:@selector(draggedImage:endedAt:operation:)])
- [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] endedAt:lastMousePosition operation:dragOperation];
- [draggingInfo release];
- draggingInfo = nil;
- }
-}
-
-- (void)mouseUp:(int)buttonNumber
-{
- [self mouseUp:buttonNumber withModifiers: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) {
- if (draggingInfo) {
- // Per NSDragging.h: draggingSources may not implement draggedImage:movedTo:
- if ([[draggingInfo draggingSource] respondsToSelector:@selector(draggedImage:movedTo:)])
- [[draggingInfo draggingSource] draggedImage:[draggingInfo draggedImage] movedTo:lastMousePosition];
- [[mainFrame webView] draggingUpdated:draggingInfo];
- } else
- [subView mouseDragged:event];
- } else
- [subView mouseMoved:event];
- }
-}
-
-- (void)mouseScrollByX:(int)x andY:(int)y continuously:(BOOL)c
-{
- CGScrollEventUnit unit = c?kCGScrollEventUnitPixel:kCGScrollEventUnitLine;
- CGEventRef cgScrollEvent = CGEventCreateScrollWheelEvent(NULL, unit, 2, y, x);
-
- // CGEvent locations are in global display coordinates.
- CGPoint lastGlobalMousePosition = {
- lastMousePosition.x,
- [[NSScreen mainScreen] frame].size.height - lastMousePosition.y
- };
- CGEventSetLocation(cgScrollEvent, lastGlobalMousePosition);
-
- NSEvent *scrollEvent = [NSEvent eventWithCGEvent:cgScrollEvent];
- CFRelease(cgScrollEvent);
-
- NSView *subView = [[mainFrame webView] hitTest:[scrollEvent locationInWindow]];
- if (subView)
- [subView scrollWheel:scrollEvent];
-}
-
-- (void)continuousMouseScrollByX:(int)x andY:(int)y
-{
- [self mouseScrollByX:x andY:y continuously:YES];
-}
-
-- (void)mouseScrollByX:(int)x andY:(int)y
-{
- [self mouseScrollByX:x andY:y continuously:NO];
-}
-
-- (NSArray *)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]];
- NSMutableArray *menuItemStrings = [NSMutableArray array];
-
- if (subView) {
- NSMenu* menu = [subView menuForEvent:event];
-
- for (int i = 0; i < [menu numberOfItems]; ++i) {
- NSMenuItem* menuItem = [menu itemAtIndex:i];
- if (!strcmp("Inspect Element", [[menuItem title] UTF8String]))
- continue;
-
- if ([menuItem isSeparatorItem])
- [menuItemStrings addObject:@"<separator>"];
- else
- [menuItemStrings addObject:[menuItem title]];
- }
- }
-
- return menuItemStrings;
-}
-
-- (void)scheduleAsynchronousClick
-{
- [self performSelector:@selector(mouseDown:) withObject:nil afterDelay:0];
- [self performSelector:@selector(mouseUp:) withObject:nil afterDelay:0];
-}
-
-+ (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 withLocation:(unsigned long)location
-{
- NSString *eventCharacter = character;
- unsigned short keyCode = 0;
- if ([character isEqualToString:@"leftArrow"]) {
- const unichar ch = NSLeftArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7B;
- } else if ([character isEqualToString:@"rightArrow"]) {
- const unichar ch = NSRightArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7C;
- } else if ([character isEqualToString:@"upArrow"]) {
- const unichar ch = NSUpArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7E;
- } else if ([character isEqualToString:@"downArrow"]) {
- const unichar ch = NSDownArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7D;
- } else if ([character isEqualToString:@"pageUp"]) {
- const unichar ch = NSPageUpFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x74;
- } else if ([character isEqualToString:@"pageDown"]) {
- const unichar ch = NSPageDownFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x79;
- } else if ([character isEqualToString:@"home"]) {
- const unichar ch = NSHomeFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x73;
- } else if ([character isEqualToString:@"end"]) {
- const unichar ch = NSEndFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x77;
- } else if ([character isEqualToString:@"insert"]) {
- const unichar ch = NSInsertFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x72;
- } else if ([character isEqualToString:@"delete"]) {
- const unichar ch = NSDeleteFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x75;
- } else if ([character isEqualToString:@"printScreen"]) {
- const unichar ch = NSPrintScreenFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x0; // There is no known virtual key code for PrintScreen.
- } else if ([character isEqualToString:@"cyrillicSmallLetterA"]) {
- const unichar ch = 0x0430;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3; // Shares key with "F" on Russian layout.
- } else if ([character isEqualToString:@"leftControl"]) {
- const unichar ch = 0xFFE3;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3B;
- } else if ([character isEqualToString:@"leftShift"]) {
- const unichar ch = 0xFFE1;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x38;
- } else if ([character isEqualToString:@"leftAlt"]) {
- const unichar ch = 0xFFE7;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3A;
- } else if ([character isEqualToString:@"rightControl"]) {
- const unichar ch = 0xFFE4;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3E;
- } else if ([character isEqualToString:@"rightShift"]) {
- const unichar ch = 0xFFE2;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3C;
- } else if ([character isEqualToString:@"rightAlt"]) {
- const unichar ch = 0xFFE8;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3D;
- }
-
- // Compare the input string with the function-key names defined by the DOM spec (i.e. "F1",...,"F24").
- // If the input string is a function-key name, set its key code.
- for (unsigned i = 1; i <= 24; i++) {
- if ([character isEqualToString:[NSString stringWithFormat:@"F%u", i]]) {
- const unichar ch = NSF1FunctionKey + (i - 1);
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- switch (i) {
- case 1: keyCode = 0x7A; break;
- case 2: keyCode = 0x78; break;
- case 3: keyCode = 0x63; break;
- case 4: keyCode = 0x76; break;
- case 5: keyCode = 0x60; break;
- case 6: keyCode = 0x61; break;
- case 7: keyCode = 0x62; break;
- case 8: keyCode = 0x64; break;
- case 9: keyCode = 0x65; break;
- case 10: keyCode = 0x6D; break;
- case 11: keyCode = 0x67; break;
- case 12: keyCode = 0x6F; break;
- case 13: keyCode = 0x69; break;
- case 14: keyCode = 0x6B; break;
- case 15: keyCode = 0x71; break;
- case 16: keyCode = 0x6A; break;
- case 17: keyCode = 0x40; break;
- case 18: keyCode = 0x4F; break;
- case 19: keyCode = 0x50; break;
- case 20: keyCode = 0x5A; break;
- }
- }
- }
-
- // FIXME: No keyCode is set for most keys.
- if ([character isEqualToString:@"\t"])
- keyCode = 0x30;
- else if ([character isEqualToString:@" "])
- keyCode = 0x31;
- else if ([character isEqualToString:@"\r"])
- keyCode = 0x24;
- else if ([character isEqualToString:@"\n"])
- keyCode = 0x4C;
- else if ([character isEqualToString:@"\x8"])
- keyCode = 0x33;
- else if ([character isEqualToString:@"a"])
- keyCode = 0x00;
- else if ([character isEqualToString:@"b"])
- keyCode = 0x0B;
- else if ([character isEqualToString:@"d"])
- keyCode = 0x02;
- else if ([character isEqualToString:@"e"])
- keyCode = 0x0E;
-
- KeyMappingEntry table[] = {
- {0x2F, 0x41, '.', nil},
- {0, 0x43, '*', nil},
- {0, 0x45, '+', nil},
- {0, 0x47, NSClearLineFunctionKey, @"clear"},
- {0x2C, 0x4B, '/', nil},
- {0, 0x4C, 3, @"enter" },
- {0x1B, 0x4E, '-', nil},
- {0x18, 0x51, '=', nil},
- {0x1D, 0x52, '0', nil},
- {0x12, 0x53, '1', nil},
- {0x13, 0x54, '2', nil},
- {0x14, 0x55, '3', nil},
- {0x15, 0x56, '4', nil},
- {0x17, 0x57, '5', nil},
- {0x16, 0x58, '6', nil},
- {0x1A, 0x59, '7', nil},
- {0x1C, 0x5B, '8', nil},
- {0x19, 0x5C, '9', nil},
- };
- for (unsigned i = 0; i < WTF_ARRAY_LENGTH(table); ++i) {
- NSString* currentCharacterString = [NSString stringWithCharacters:&table[i].character length:1];
- if ([character isEqualToString:currentCharacterString] || [character isEqualToString:table[i].characterName]) {
- if (location == DOM_KEY_LOCATION_NUMPAD)
- keyCode = table[i].macNumpadKeyCode;
- else
- keyCode = table[i].macKeyCode;
- eventCharacter = currentCharacterString;
- break;
- }
- }
-
- NSString *charactersIgnoringModifiers = eventCharacter;
-
- int modifierFlags = 0;
-
- if ([character length] == 1 && [character characterAtIndex:0] >= 'A' && [character characterAtIndex:0] <= 'Z') {
- modifierFlags |= NSShiftKeyMask;
- charactersIgnoringModifiers = [character lowercaseString];
- }
-
- modifierFlags |= buildModifierFlags(modifiers);
-
- if (location == DOM_KEY_LOCATION_NUMPAD)
- modifierFlags |= NSNumericPadKeyMask;
-
- [[[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:keyCode];
-
- [[[[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:keyCode];
-
- [[[[mainFrame webView] window] firstResponder] keyUp:event];
-}
-
-- (void)keyDownWrapper:(NSString *)character withModifiers:(WebScriptObject *)modifiers withLocation:(unsigned long)location
-{
- [self keyDown:character withModifiers:modifiers withLocation:location];
-}
-
-- (void)scheduleAsynchronousKeyDown:(NSString *)character withModifiers:(WebScriptObject *)modifiers withLocation:(unsigned long)location
-{
- NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:[EventSendingController instanceMethodSignatureForSelector:@selector(keyDownWrapper:withModifiers:withLocation:)]];
- [invocation retainArguments];
- [invocation setTarget:self];
- [invocation setSelector:@selector(keyDownWrapper:withModifiers:withLocation:)];
- [invocation setArgument:&character atIndex:2];
- [invocation setArgument:&modifiers atIndex:3];
- [invocation setArgument:&location atIndex:4];
- [invocation performSelector:@selector(invoke) withObject:nil afterDelay:0];
-}
-
-- (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 location]);
- 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"
- location: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"
- location: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"
- location:0
- ctrlKey:NO
- altKey:NO
- shiftKey:NO
- metaKey:NO];
- [target dispatchEvent:domEvent];
-
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/FrameLoadDelegate.h b/Tools/DumpRenderTree/mac/FrameLoadDelegate.h
deleted file mode 100644
index 390a88184..000000000
--- a/Tools/DumpRenderTree/mac/FrameLoadDelegate.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.
- */
-
-#import <Foundation/Foundation.h>
-
-class AccessibilityController;
-class GCController;
-
-@interface FrameLoadDelegate : NSObject
-{
- AccessibilityController* accessibilityController;
- GCController* gcController;
-}
-
-- (void)resetToConsistentState;
-
-@end
diff --git a/Tools/DumpRenderTree/mac/FrameLoadDelegate.mm b/Tools/DumpRenderTree/mac/FrameLoadDelegate.mm
deleted file mode 100644
index 21be9227f..000000000
--- a/Tools/DumpRenderTree/mac/FrameLoadDelegate.mm
+++ /dev/null
@@ -1,466 +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 "config.h"
-#import "DumpRenderTree.h"
-#import "FrameLoadDelegate.h"
-
-#import "AccessibilityController.h"
-#import "AppleScriptController.h"
-#import "EventSendingController.h"
-#import "Foundation/NSNotification.h"
-#import "GCController.h"
-#import "TestRunner.h"
-#import "NavigationController.h"
-#import "ObjCController.h"
-#import "ObjCPlugin.h"
-#import "ObjCPluginFunction.h"
-#import "TextInputController.h"
-#import "WebCoreTestSupport.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKitSystemInterface.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/WebNSURLExtras.h>
-#import <WebKit/WebScriptWorld.h>
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/Assertions.h>
-
-#ifndef NSEC_PER_MSEC
-#define NSEC_PER_MSEC 1000000ull
-#endif
-
-@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)";
- }
-}
-
-- (NSString *)_drt_printFrameUserGestureStatus
-{
- BOOL isUserGesture = [[self webView] _isProcessingUserGesture];
- return [NSString stringWithFormat:@"Frame with user gesture \"%@\"", isUserGesture ? @"true" : @"false"];
-}
-@end
-
-@implementation FrameLoadDelegate
-
-- (id)init
-{
- if ((self = [super init])) {
- gcController = new GCController;
- accessibilityController = new AccessibilityController;
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(webViewProgressFinishedNotification:) name:WebViewProgressFinishedNotification object:nil];
- }
- return self;
-}
-
-- (void)dealloc
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
- delete gcController;
- delete accessibilityController;
- [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
-{
- // if another load started, then wait for it to complete.
- if (topLoadingFrame)
- return;
-
- // if we finish all the commands, we're ready to dump state
- if (WorkQueue::shared()->processWork() && !gTestRunner->waitToDump())
- dump();
-}
-
-- (void)resetToConsistentState
-{
- accessibilityController->resetToConsistentState();
-}
-
-- (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 (!gTestRunner->waitToDump()) {
- if (WorkQueue::shared()->count())
- [self performSelector:@selector(processWork:) withObject:nil afterDelay:0];
- else
- dump();
- }
- }
-}
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-static NSString *testPathFromURL(NSURL* url)
-{
- if ([url isFileURL]) {
- NSString *filePath = [url path];
- NSRange layoutTestsRange = [filePath rangeOfString:@"/LayoutTests/"];
- if (layoutTestsRange.location == NSNotFound)
- return nil;
-
- return [filePath substringFromIndex:NSMaxRange(layoutTestsRange)];
- }
-
- // HTTP test URLs look like: http://127.0.0.1:8000/inspector/resource-tree/resource-request-content-after-loading-and-clearing-cache.html
- if (![[url scheme] isEqualToString:@"http"] && ![[url scheme] isEqualToString:@"https"])
- return nil;
-
- if ([[url host] isEqualToString:@"127.0.0.1"] && ([[url port] intValue] == 8000 || [[url port] intValue] == 8443))
- return [url path];
-
- return nil;
-}
-#endif
-
-- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
-{
- ASSERT([frame provisionalDataSource]);
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- if (!done && [[sender mainFrame] isEqual:frame]) {
- NSURL *provisionalLoadURL = [[[frame provisionalDataSource] initialRequest] URL];
- if (NSString *testPath = testPathFromURL(provisionalLoadURL))
- WKSetCrashReportApplicationSpecificInformation((CFStringRef)[@"CRASHING TEST: " stringByAppendingString:testPath]);
- }
-#endif
-
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didStartProvisionalLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- if (!done && gTestRunner->dumpUserGestureInFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - in didStartProvisionalLoadForFrame", [frame _drt_printFrameUserGestureStatus]];
- printf ("%s\n", [string UTF8String]);
- }
-
- // 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 && gTestRunner->stopProvisionalFrameLoads()) {
- NSString *string = [NSString stringWithFormat:@"%@ - stopping load in didStartProvisionalLoadForFrame callback", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- [frame stopLoading];
- }
-
- if (!done && gTestRunner->useDeferredFrameLoading()) {
- [sender setDefersCallbacks:YES];
- int64_t deferredWaitTime = 5 * NSEC_PER_MSEC;
- dispatch_time_t when = dispatch_time(DISPATCH_TIME_NOW, deferredWaitTime);
- dispatch_after(when, dispatch_get_main_queue(), ^{
- [sender setDefersCallbacks:NO];
- });
- }
-}
-
-- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didCommitLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT(![frame provisionalDataSource]);
- ASSERT([frame dataSource]);
-
- gTestRunner->setWindowIsKey(true);
- NSView *documentView = [[mainFrame frameView] documentView];
- [[[mainFrame webView] window] makeFirstResponder:documentView];
-}
-
-- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didFailProvisionalLoadWithError", [frame _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-
- if ([error domain] == NSURLErrorDomain && ([error code] == NSURLErrorServerCertificateHasUnknownRoot || [error code] == NSURLErrorServerCertificateUntrusted)) {
- // <http://webkit.org/b/31200> In order to prevent extra frame load delegate logging being generated if the first test to use SSL
- // is set to log frame load delegate calls we ignore SSL certificate errors on localhost and 127.0.0.1 from within dumpRenderTree.
- // Those are the only hosts that we use SSL with at present. If we hit this code path then we've found another host that we need
- // to apply the workaround to.
- ASSERT_NOT_REACHED();
- 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 && gTestRunner->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 && gTestRunner->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 && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"?? - windowScriptObjectAvailable"];
- printf ("%s\n", [string UTF8String]);
- }
-
- ASSERT_NOT_REACHED();
-}
-
-- (void)didClearWindowObjectInStandardWorldForFrame:(WebFrame *)frame
-{
- // Make New-Style TestRunner
- JSContextRef context = [frame globalContext];
- JSObjectRef globalObject = JSContextGetGlobalObject(context);
- JSValueRef exception = 0;
-
- ASSERT(gTestRunner);
- gTestRunner->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- gcController->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- accessibilityController->makeWindowObject(context, globalObject, &exception);
- ASSERT(!exception);
-
- WebCoreTestSupport::injectInternalsObject(context);
-
- // Make Old-Style controllers
-
- WebView *webView = [frame webView];
- WebScriptObject *obj = [frame windowObject];
- AppleScriptController *asc = [[AppleScriptController alloc] initWithWebView:webView];
- [obj setValue:asc forKey:@"appleScriptController"];
- [asc release];
-
- EventSendingController *esc = [[EventSendingController alloc] init];
- [obj setValue:esc forKey:@"eventSender"];
- [esc release];
-
- [obj setValue:gNavigationController forKey:@"navigationController"];
-
- ObjCController *occ = [[ObjCController alloc] init];
- [obj setValue:occ forKey:@"objCController"];
- [occ release];
-
- ObjCPlugin *plugin = [[ObjCPlugin alloc] init];
- [obj setValue:plugin forKey:@"objCPlugin"];
- [plugin release];
-
- ObjCPluginFunction *pluginFunction = [[ObjCPluginFunction alloc] init];
- [obj setValue:pluginFunction forKey:@"objCPluginFunction"];
- [pluginFunction release];
-
- TextInputController *tic = [[TextInputController alloc] initWithWebView:webView];
- [obj setValue:tic forKey:@"textInputController"];
- [tic release];
-}
-
-- (void)didClearWindowObjectForFrame:(WebFrame *)frame inIsolatedWorld:(WebScriptWorld *)world
-{
- JSGlobalContextRef ctx = [frame _globalContextForScriptWorld:world];
- if (!ctx)
- return;
-
- JSObjectRef globalObject = JSContextGetGlobalObject(ctx);
- if (!globalObject)
- return;
-
- JSObjectSetProperty(ctx, globalObject, JSRetainPtr<JSStringRef>(Adopt, JSStringCreateWithUTF8CString("__worldID")).get(), JSValueMakeNumber(ctx, worldIDForWorld(world)), kJSPropertyAttributeReadOnly, 0);
-}
-
-- (void)webView:(WebView *)sender didClearWindowObjectForFrame:(WebFrame *)frame inScriptWorld:(WebScriptWorld *)world
-{
- if (world == [WebScriptWorld standardWorld])
- [self didClearWindowObjectInStandardWorldForFrame:frame];
- else
- [self didClearWindowObjectForFrame:frame inIsolatedWorld:world];
-}
-
-- (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveTitle: %@", [frame _drt_descriptionSuitableForTestResult], title];
- printf ("%s\n", [string UTF8String]);
- }
-
- if (gTestRunner->dumpTitleChanges())
- printf("TITLE CHANGED: '%s'\n", [title UTF8String]);
-}
-
-- (void)webView:(WebView *)sender didReceiveServerRedirectForProvisionalLoadForFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveServerRedirectForProvisionalLoadForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didChangeLocationWithinPageForFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->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 && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willPerformClientRedirectToURL: %@ ", [frame _drt_descriptionSuitableForTestResult], [URL _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-
- if (!done && gTestRunner->dumpUserGestureInFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - in willPerformClientRedirect", [frame _drt_printFrameUserGestureStatus]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didCancelClientRedirectForFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didCancelClientRedirectForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webView:(WebView *)sender didFinishDocumentLoadForFrame:(WebFrame *)frame
-{
- if (!done && gTestRunner->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 && gTestRunner->dumpFrameLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didHandleOnloadEventsForFrame", [frame _drt_descriptionSuitableForTestResult]];
- printf ("%s\n", [string UTF8String]);
- }
-}
-
-- (void)webViewDidDisplayInsecureContent:(WebView *)sender
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf ("didDisplayInsecureContent\n");
-}
-
-- (void)webView:(WebView *)sender didRunInsecureContent:(WebSecurityOrigin *)origin
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf ("didRunInsecureContent\n");
-}
-
-- (void)webView:(WebView *)sender didDetectXSS:(NSURL *)insecureURL
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf ("didDetectXSS\n");
-}
-
-- (void)webViewProgressFinishedNotification:(NSNotification *)notification
-{
- if (!done && gTestRunner->dumpProgressFinishedCallback())
- printf ("postProgressFinishedNotification\n");
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/GCControllerMac.mm b/Tools/DumpRenderTree/mac/GCControllerMac.mm
deleted file mode 100644
index de8a61e59..000000000
--- a/Tools/DumpRenderTree/mac/GCControllerMac.mm
+++ /dev/null
@@ -1,49 +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 "config.h"
-#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/Tools/DumpRenderTree/mac/HistoryDelegate.h b/Tools/DumpRenderTree/mac/HistoryDelegate.h
deleted file mode 100644
index c56d20368..000000000
--- a/Tools/DumpRenderTree/mac/HistoryDelegate.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * 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.
- */
-
-#import <Cocoa/Cocoa.h>
-
-@interface HistoryDelegate : NSObject
-{
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/HistoryDelegate.mm b/Tools/DumpRenderTree/mac/HistoryDelegate.mm
deleted file mode 100644
index 4c703f90a..000000000
--- a/Tools/DumpRenderTree/mac/HistoryDelegate.mm
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * 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.
- */
-#import "config.h"
-#import "HistoryDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "TestRunner.h"
-
-#import <WebKit/WebNavigationData.h>
-#import <WebKit/WebView.h>
-
-@interface NSURL (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@implementation HistoryDelegate
-
-- (void)webView:(WebView *)webView didNavigateWithNavigationData:(WebNavigationData *)navigationData inFrame:(WebFrame *)webFrame
-{
- NSURL *url = [navigationData url] ? [NSURL URLWithString:[navigationData url]] : nil;
- bool hasClientRedirect = [[navigationData clientRedirectSource] length];
- NSHTTPURLResponse *httpResponse = [[navigationData response] isKindOfClass:[NSHTTPURLResponse class]] ? (NSHTTPURLResponse *)[navigationData response] : nil;
- bool wasFailure = [navigationData hasSubstituteData] || (httpResponse && [httpResponse statusCode] >= 400);
-
- printf("WebView navigated to url \"%s\" with title \"%s\" with HTTP equivalent method \"%s\". The navigation was %s and was %s%s.\n",
- url ? [[url _drt_descriptionSuitableForTestResult] UTF8String] : "<none>",
- [navigationData title] ? [[navigationData title] UTF8String] : "",
- [navigationData originalRequest] ? [[[navigationData originalRequest] HTTPMethod] UTF8String] : "",
- wasFailure ? "a failure" : "successful",
- hasClientRedirect ? "a client redirect from " : "not a client redirect",
- hasClientRedirect ? [[navigationData clientRedirectSource] UTF8String] : "");
-}
-
-- (void)webView:(WebView *)webView didPerformClientRedirectFromURL:(NSString *)sourceURL toURL:(NSString *)destinationURL inFrame:(WebFrame *)webFrame
-{
- NSURL *source = [NSURL URLWithString:sourceURL];
- NSURL *dest = [NSURL URLWithString:destinationURL];
- printf("WebView performed a client redirect from \"%s\" to \"%s\".\n", [[source _drt_descriptionSuitableForTestResult] UTF8String], [[dest _drt_descriptionSuitableForTestResult] UTF8String]);
-}
-
-- (void)webView:(WebView *)webView didPerformServerRedirectFromURL:(NSString *)sourceURL toURL:(NSString *)destinationURL inFrame:(WebFrame *)webFrame
-{
- NSURL *source = [NSURL URLWithString:sourceURL];
- NSURL *dest = [NSURL URLWithString:destinationURL];
- printf("WebView performed a server redirect from \"%s\" to \"%s\".\n", [[source _drt_descriptionSuitableForTestResult] UTF8String], [[dest _drt_descriptionSuitableForTestResult] UTF8String]);
-}
-
-- (void)webView:(WebView *)webView updateHistoryTitle:(NSString *)title forURL:(NSString *)url
-{
- printf("WebView updated the title for history URL \"%s\" to \"%s\".\n", [[[NSURL URLWithString:url]_drt_descriptionSuitableForTestResult] UTF8String], [title UTF8String]);
-}
-
-- (void)populateVisitedLinksForWebView:(WebView *)webView
-{
- if (gTestRunner->dumpVisitedLinksCallback())
- printf("Asked to populate visited links for WebView \"%s\"\n", [[[NSURL URLWithString:[webView mainFrameURL]] _drt_descriptionSuitableForTestResult] UTF8String]);
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h b/Tools/DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h
deleted file mode 100644
index ae1371fc6..000000000
--- a/Tools/DumpRenderTree/mac/InternalHeaders/WebKit/WebTypesInternal.h
+++ /dev/null
@@ -1 +0,0 @@
-#include "../../../../Source/WebKit/mac/Misc/WebTypesInternal.h"
diff --git a/Tools/DumpRenderTree/mac/LayoutTestHelper.m b/Tools/DumpRenderTree/mac/LayoutTestHelper.m
deleted file mode 100644
index ee7bd713b..000000000
--- a/Tools/DumpRenderTree/mac/LayoutTestHelper.m
+++ /dev/null
@@ -1,211 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc. All rights reserved.
- * Copyright (C) 2012 Apple Inc.
- *
- * 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.
- */
-
-#import <AppKit/AppKit.h>
-#import <ApplicationServices/ApplicationServices.h>
-#import <signal.h>
-#import <stdio.h>
-#import <stdlib.h>
-
-// This is a simple helper app that changes the color profile of the main display
-// to GenericRGB and back when done. This program is managed by the layout
-// test script, so it can do the job for multiple DumpRenderTree while they are
-// running layout tests.
-
-#if MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-
-static CFURLRef sUserColorProfileURL;
-
-static void installLayoutTestColorProfile()
-{
- // To make sure we get consistent colors (not dependent on the chosen color
- // space of the main display), we force the generic RGB color profile.
- // This causes a change the user can see.
-
- CFUUIDRef mainDisplayID = CGDisplayCreateUUIDFromDisplayID(CGMainDisplayID());
-
- if (!sUserColorProfileURL) {
- CFDictionaryRef deviceInfo = ColorSyncDeviceCopyDeviceInfo(kColorSyncDisplayDeviceClass, mainDisplayID);
-
- if (!deviceInfo) {
- NSLog(@"No display attached to system; not setting main display's color profile.");
- CFRelease(mainDisplayID);
- return;
- }
-
- CFDictionaryRef profileInfo = (CFDictionaryRef)CFDictionaryGetValue(deviceInfo, kColorSyncCustomProfiles);
- if (profileInfo) {
- sUserColorProfileURL = (CFURLRef)CFDictionaryGetValue(profileInfo, CFSTR("1"));
- CFRetain(sUserColorProfileURL);
- } else {
- profileInfo = (CFDictionaryRef)CFDictionaryGetValue(deviceInfo, kColorSyncFactoryProfiles);
- CFDictionaryRef factoryProfile = (CFDictionaryRef)CFDictionaryGetValue(profileInfo, CFSTR("1"));
- sUserColorProfileURL = (CFURLRef)CFDictionaryGetValue(factoryProfile, kColorSyncDeviceProfileURL);
- CFRetain(sUserColorProfileURL);
- }
-
- CFRelease(deviceInfo);
- }
-
- ColorSyncProfileRef genericRGBProfile = ColorSyncProfileCreateWithName(kColorSyncGenericRGBProfile);
- CFErrorRef error;
- CFURLRef profileURL = ColorSyncProfileGetURL(genericRGBProfile, &error);
- if (!profileURL) {
- NSLog(@"Failed to get URL of Generic RGB color profile! Many pixel tests may fail as a result. Error: %@", error);
-
- if (sUserColorProfileURL) {
- CFRelease(sUserColorProfileURL);
- sUserColorProfileURL = 0;
- }
-
- CFRelease(genericRGBProfile);
- CFRelease(mainDisplayID);
- return;
- }
-
- CFMutableDictionaryRef profileInfo = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFDictionarySetValue(profileInfo, kColorSyncDeviceDefaultProfileID, profileURL);
-
- if (!ColorSyncDeviceSetCustomProfiles(kColorSyncDisplayDeviceClass, mainDisplayID, profileInfo)) {
- NSLog(@"Failed to set color profile for main display! Many pixel tests may fail as a result.");
-
- if (sUserColorProfileURL) {
- CFRelease(sUserColorProfileURL);
- sUserColorProfileURL = 0;
- }
- }
-
- CFRelease(profileInfo);
- CFRelease(genericRGBProfile);
- CFRelease(mainDisplayID);
-}
-
-static void restoreUserColorProfile(void)
-{
- // 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 (!sUserColorProfileURL)
- return;
-
- CFUUIDRef mainDisplayID = CGDisplayCreateUUIDFromDisplayID(CGMainDisplayID());
- CFMutableDictionaryRef profileInfo = CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
- CFDictionarySetValue(profileInfo, kColorSyncDeviceDefaultProfileID, sUserColorProfileURL);
- ColorSyncDeviceSetCustomProfiles(kColorSyncDisplayDeviceClass, mainDisplayID, profileInfo);
- CFRelease(mainDisplayID);
- CFRelease(profileInfo);
-}
-
-#else // For Snow Leopard and before, use older CM* API.
-
-const char colorProfilePath[] = "/System/Library/ColorSync/Profiles/Generic RGB Profile.icc";
-
-CMProfileLocation initialColorProfileLocation; // The locType field is initialized to 0 which is the same as cmNoProfileBase.
-
-static void installLayoutTestColorProfile()
-{
- // To make sure we get consistent colors (not dependent on the chosen color
- // space of the main display), we force the generic RGB color profile.
- // This causes a change the user can see.
-
- const CMDeviceScope scope = { kCFPreferencesCurrentUser, kCFPreferencesCurrentHost };
-
- CMProfileRef profile = 0;
- int error = CMGetProfileByAVID((CMDisplayIDType)kCGDirectMainDisplay, &profile);
- if (!error) {
- UInt32 size = sizeof(initialColorProfileLocation);
- error = NCMGetProfileLocation(profile, &initialColorProfileLocation, &size);
- CMCloseProfile(profile);
- }
- if (error) {
- NSLog(@"Failed to get the current color profile. Many pixel tests may fail as a result. Error: %d", (int)error);
- initialColorProfileLocation.locType = cmNoProfileBase;
- return;
- }
-
- CMProfileLocation location;
- location.locType = cmPathBasedProfile;
- strncpy(location.u.pathLoc.path, colorProfilePath, sizeof(location.u.pathLoc.path));
- error = CMSetDeviceProfile(cmDisplayDeviceClass, (CMDeviceID)kCGDirectMainDisplay, &scope, cmDefaultProfileID, &location);
- if (error) {
- NSLog(@"Failed install the GenericRGB color profile. Many pixel tests may fail as a result. Error: %d", (int)error);
- initialColorProfileLocation.locType = cmNoProfileBase;
- }
-}
-
-static void restoreUserColorProfile(void)
-{
- // 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 (initialColorProfileLocation.locType != cmNoProfileBase) {
- const CMDeviceScope scope = { kCFPreferencesCurrentUser, kCFPreferencesCurrentHost };
- int error = CMSetDeviceProfile(cmDisplayDeviceClass, (CMDeviceID)kCGDirectMainDisplay, &scope, cmDefaultProfileID, &initialColorProfileLocation);
- if (error) {
- NSLog(@"Failed to restore color profile, use System Preferences -> Displays -> Color to reset. Error: %d", (int)error);
- }
- initialColorProfileLocation.locType = cmNoProfileBase;
- }
-}
-
-#endif
-
-static void simpleSignalHandler(int sig)
-{
- // Try to restore the color profile and try to go down cleanly
- restoreUserColorProfile();
- exit(128 + sig);
-}
-
-int main(int argc, char* argv[])
-{
- NSAutoreleasePool* pool = [[NSAutoreleasePool alloc] init];
-
- // Hooks the ways we might get told to clean up...
- signal(SIGINT, simpleSignalHandler);
- signal(SIGHUP, simpleSignalHandler);
- signal(SIGTERM, simpleSignalHandler);
-
- // Save off the current profile, and then install the layout test profile.
- installLayoutTestColorProfile();
-
- // Let the script know we're ready
- printf("ready\n");
- fflush(stdout);
-
- // Wait for any key (or signal)
- getchar();
-
- // Restore the profile
- restoreUserColorProfile();
-
- [pool release];
- return 0;
-}
diff --git a/Tools/DumpRenderTree/mac/MockGeolocationProvider.h b/Tools/DumpRenderTree/mac/MockGeolocationProvider.h
deleted file mode 100644
index ba3a842a9..000000000
--- a/Tools/DumpRenderTree/mac/MockGeolocationProvider.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2010, 2012 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 MockGeolocationProvider_h
-#define MockGeolocationProvider_h
-
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/HashSet.h>
-#import <wtf/RetainPtr.h>
-
-@interface MockGeolocationProvider : NSObject<WebGeolocationProvider> {
- RetainPtr<WebGeolocationPosition> _lastPosition;
- BOOL _hasError;
- RetainPtr<NSString> _errorMessage;
- NSTimer *_timer;
- HashSet<WebView *> _registeredViews;
-}
-
-+ (MockGeolocationProvider *)shared;
-
-- (void)setPosition:(WebGeolocationPosition *)position;
-- (void)setPositionUnavailableErrorWithMessage:(NSString *)errorMessage;
-
-- (void)stopTimer;
-
-@end
-#endif
diff --git a/Tools/DumpRenderTree/mac/MockGeolocationProvider.mm b/Tools/DumpRenderTree/mac/MockGeolocationProvider.mm
deleted file mode 100644
index 4acaac04b..000000000
--- a/Tools/DumpRenderTree/mac/MockGeolocationProvider.mm
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2010, 2012 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 "config.h"
-#import "MockGeolocationProvider.h"
-
-@implementation MockGeolocationProvider
-
-+ (MockGeolocationProvider *)shared
-{
- static MockGeolocationProvider *provider = [[MockGeolocationProvider alloc] init];
- return provider;
-}
-
-- (void)dealloc
-{
- ASSERT(_registeredViews.isEmpty());
-
- _lastPosition.clear();
- _errorMessage.clear();
- [super dealloc];
-}
-
-- (void)resetError
-{
- _hasError = NO;
- _errorMessage.clear();
-}
-
-- (void)setPosition:(WebGeolocationPosition *)position
-{
- _lastPosition = position;
-
- [self resetError];
-
- if (!_timer)
- _timer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerFired) userInfo:0 repeats:NO];
-}
-
-- (void)setPositionUnavailableErrorWithMessage:(NSString *)errorMessage
-{
- _hasError = YES;
- _errorMessage = errorMessage;
-
- _lastPosition.clear();
-
- if (!_timer)
- _timer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerFired) userInfo:0 repeats:NO];
-}
-
-- (void)registerWebView:(WebView *)webView
-{
- _registeredViews.add(webView);
-
- if (!_timer)
- _timer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerFired) userInfo:0 repeats:NO];
-}
-
-- (void)unregisterWebView:(WebView *)webView
-{
- _registeredViews.remove(webView);
-}
-
-- (WebGeolocationPosition *)lastPosition
-{
- return _lastPosition.get();
-}
-
-- (void)stopTimer
-{
- [_timer invalidate];
- _timer = 0;
-}
-
-- (void)timerFired
-{
- _timer = 0;
-
- // Expect that views won't be (un)registered while iterating.
- HashSet<WebView*> views = _registeredViews;
- for (HashSet<WebView*>::iterator iter = views.begin(); iter != views.end(); ++iter) {
- if (_hasError)
- [*iter _geolocationDidFailWithMessage:_errorMessage.get()];
- else
- [*iter _geolocationDidChangePosition:_lastPosition.get()];
- }
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h
deleted file mode 100644
index 293ea49d0..000000000
--- a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2012 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 MockWebNotificationProvider_h
-#define MockWebNotificationProvider_h
-
-#import <WebKit/WebNotification.h>
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/HashMap.h>
-#import <wtf/HashSet.h>
-#import <wtf/RetainPtr.h>
-
-typedef HashMap<uint64_t, RetainPtr<WebNotification> > NotificationIDMap;
-typedef HashMap<uint64_t, WebView *> NotificationViewMap;
-
-@interface MockWebNotificationProvider : NSObject <WebNotificationProvider> {
- HashSet<WebView *> _registeredWebViews;
- NotificationIDMap _notifications;
- NotificationViewMap _notificationViewMap;
- RetainPtr<NSMutableDictionary> _permissions;
-}
-
-+ (MockWebNotificationProvider *)shared;
-
-- (void)simulateWebNotificationClick:(uint64_t)notificationID;
-- (void)setWebNotificationOrigin:(NSString *)origin permission:(BOOL)allowed;
-- (WebNotificationPermission)policyForOrigin:(WebSecurityOrigin *)origin;
-- (void)removeAllWebNotificationPermissions;
-
-- (void)reset;
-@end
-
-#endif // MockWebNotificationProvider_h
diff --git a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm b/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm
deleted file mode 100644
index adf5d9e31..000000000
--- a/Tools/DumpRenderTree/mac/MockWebNotificationProvider.mm
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2012 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 "config.h"
-#import "MockWebNotificationProvider.h"
-
-#import <WebKit/WebSecurityOriginPrivate.h>
-
-@implementation MockWebNotificationProvider
-
-+ (MockWebNotificationProvider *)shared
-{
- static MockWebNotificationProvider *provider = [[MockWebNotificationProvider alloc] init];
- return provider;
-}
-
-- (id)init
-{
- if (!(self = [super init]))
- return nil;
- _permissions = adoptNS([[NSMutableDictionary alloc] init]);
- return self;
-}
-
-- (void)registerWebView:(WebView *)webView
-{
- ASSERT(!_registeredWebViews.contains(webView));
- _registeredWebViews.add(webView);
-}
-
-- (void)unregisterWebView:(WebView *)webView
-{
- ASSERT(_registeredWebViews.contains(webView));
- _registeredWebViews.remove(webView);
-}
-
-- (void)showNotification:(WebNotification *)notification fromWebView:(WebView *)webView
-{
- ASSERT(_registeredWebViews.contains(webView));
-
- uint64_t notificationID = [notification notificationID];
- _notifications.add(notificationID, notification);
- _notificationViewMap.add(notificationID, webView);
-
- [webView _notificationDidShow:notificationID];
-}
-
-- (void)cancelNotification:(WebNotification *)notification
-{
- uint64_t notificationID = [notification notificationID];
- ASSERT(_notifications.contains(notificationID));
-
- [_notificationViewMap.get(notificationID) _notificationsDidClose:[NSArray arrayWithObject:[NSNumber numberWithUnsignedLongLong:notificationID]]];
-}
-
-- (void)notificationDestroyed:(WebNotification *)notification
-{
- _notifications.remove([notification notificationID]);
- _notificationViewMap.remove([notification notificationID]);
-}
-
-- (void)clearNotifications:(NSArray *)notificationIDs
-{
- for (NSNumber *notificationID in notificationIDs) {
- uint64_t id = [notificationID unsignedLongLongValue];
- RetainPtr<WebNotification> notification = _notifications.take(id);
- _notificationViewMap.remove(id);
- }
-}
-
-- (void)webView:(WebView *)webView didShowNotification:(uint64_t)notificationID
-{
- [_notifications.get(notificationID).get() dispatchShowEvent];
-}
-
-- (void)webView:(WebView *)webView didClickNotification:(uint64_t)notificationID
-{
- [_notifications.get(notificationID).get() dispatchClickEvent];
-}
-
-- (void)webView:(WebView *)webView didCloseNotifications:(NSArray *)notificationIDs
-{
- for (NSNumber *notificationID in notificationIDs) {
- uint64_t id = [notificationID unsignedLongLongValue];
- NotificationIDMap::iterator it = _notifications.find(id);
- ASSERT(it != _notifications.end());
- [it->value.get() dispatchCloseEvent];
- _notifications.remove(it);
- _notificationViewMap.remove(id);
- }
-}
-
-- (void)simulateWebNotificationClick:(uint64_t)notificationID
-{
- ASSERT(_notifications.contains(notificationID));
- [_notificationViewMap.get(notificationID) _notificationDidClick:notificationID];
-}
-
-- (WebNotificationPermission)policyForOrigin:(WebSecurityOrigin *)origin
-{
- NSNumber *permission = [_permissions.get() objectForKey:[origin stringValue]];
- if (!permission)
- return WebNotificationPermissionNotAllowed;
- if ([permission boolValue])
- return WebNotificationPermissionAllowed;
- return WebNotificationPermissionDenied;
-}
-
-- (void)setWebNotificationOrigin:(NSString *)origin permission:(BOOL)allowed
-{
- [_permissions.get() setObject:[NSNumber numberWithBool:allowed] forKey:origin];
-}
-
-- (void)removeAllWebNotificationPermissions
-{
- [_permissions.get() removeAllObjects];
-}
-
-- (void)reset
-{
- _notifications.clear();
- _notificationViewMap.clear();
- [self removeAllWebNotificationPermissions];
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/NavigationController.h b/Tools/DumpRenderTree/mac/NavigationController.h
deleted file mode 100644
index 8ee3432d9..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/NavigationController.m b/Tools/DumpRenderTree/mac/NavigationController.m
deleted file mode 100644
index 8c01d507b..000000000
--- a/Tools/DumpRenderTree/mac/NavigationController.m
+++ /dev/null
@@ -1,112 +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 "config.h"
-#import "NavigationController.h"
-
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebScriptObject.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/Tools/DumpRenderTree/mac/ObjCController.h b/Tools/DumpRenderTree/mac/ObjCController.h
deleted file mode 100644
index d1d001cc5..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/ObjCController.m b/Tools/DumpRenderTree/mac/ObjCController.m
deleted file mode 100644
index af237bf69..000000000
--- a/Tools/DumpRenderTree/mac/ObjCController.m
+++ /dev/null
@@ -1,296 +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 "config.h"
-#import "ObjCController.h"
-
-// Avoid compile error in DOMPrivate.h.
-@class NSFont;
-
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit/DOMAbstractView.h>
-#import <WebKit/DOMPrivate.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebView.h>
-#import <pthread.h>
-#import <wtf/Assertions.h>
-
-// Remove this once hasWebScriptKey has been made public.
-@interface WebScriptObject (StagedForPublic)
-- (BOOL)hasWebScriptKey:(NSString *)name;
-@end
-
-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(isObject:instanceOf:)
- || aSelector == @selector(objectOfClass:)
- || aSelector == @selector(arrayOfString)
- || aSelector == @selector(identityIsEqual::)
- || aSelector == @selector(longLongRoundTrip:)
- || aSelector == @selector(unsignedLongLongRoundTrip:)
- || aSelector == @selector(testWrapperRoundTripping:)
- || aSelector == @selector(accessStoredWebScriptObject)
- || aSelector == @selector(storeWebScriptObject:)
- || aSelector == @selector(testValueForKey)
- || aSelector == @selector(testHasWebScriptKey:)
- || aSelector == @selector(testArray)
- || aSelector == @selector(setSelectElement:selectedIndex:allowingMultiple:)
- )
- return NO;
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(classNameOf:))
- return @"className";
- if (aSelector == @selector(isObject:instanceOf:))
- return @"isObjectInstanceOf";
- if (aSelector == @selector(objectOfClass:))
- return @"objectOfClass";
- if (aSelector == @selector(arrayOfString))
- return @"arrayOfString";
- 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(testHasWebScriptKey:))
- return @"testHasWebScriptKey";
- if (aSelector == @selector(testArray))
- return @"testArray";
- if (aSelector == @selector(setSelectElement:selectedIndex:allowingMultiple:))
- return @"setSelectElementSelectedIndexAllowingMultiple";
-
- return nil;
-}
-
-- (BOOL)isObject:(id)object instanceOf:(NSString *)aClass
-{
- if (!object)
- return [aClass isEqualToString:@"nil"];
-
- return [object isKindOfClass:NSClassFromString(aClass)];
-}
-
-- (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;
-}
-
-- (NSArray *)arrayOfString
-{
- NSString *strings[3];
- strings[0] = @"one";
- strings[1] = @"two";
- strings[2] = @"three";
- NSArray *array = [NSArray arrayWithObjects:strings count:3];
- return array;
-}
-
-- (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)testHasWebScriptKey:(NSString *)key
-{
- ASSERT(storedWebScriptObject);
- return [storedWebScriptObject hasWebScriptKey:key];
-}
-
-- (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]];
- JSObjectRef jsObject = [storedWebScriptObject JSObject];
- ASSERT((jsObject && isWindowObject) || (!jsObject && !isWindowObject));
-#endif
- [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;
-}
-
-// MARK: -
-// MARK: Testing Objective-C DOM HTML Bindings
-
-- (void)setSelectElement:(WebScriptObject *)element selectedIndex:(int)index allowingMultiple:(BOOL)allowingMultiple
-{
- if (![element isKindOfClass:[DOMHTMLSelectElement class]])
- return;
-
- DOMHTMLSelectElement *select = (DOMHTMLSelectElement*)element;
- [select _activateItemAtIndex:index allowMultipleSelection:allowingMultiple];
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/ObjCPlugin.h b/Tools/DumpRenderTree/mac/ObjCPlugin.h
deleted file mode 100644
index a6d3e50c1..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/ObjCPlugin.m b/Tools/DumpRenderTree/mac/ObjCPlugin.m
deleted file mode 100644
index ffd9968f9..000000000
--- a/Tools/DumpRenderTree/mac/ObjCPlugin.m
+++ /dev/null
@@ -1,232 +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 "config.h"
-#import "ObjCPlugin.h"
-
-#import <WebKit/WebKit.h>
-#import <objc/runtime.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;
-
- if (aSelector == @selector(methodMappedToLongName))
- return NO;
-
- NSString *selectorName = NSStringFromSelector(aSelector);
- if ([selectorName hasPrefix:@"testConversion"])
- return NO;
-
- return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
- if (aSelector == @selector(echo:))
- return @"echo";
-
- if (aSelector == @selector(throwIfArgumentIsNotHello:))
- return @"throwIfArgumentIsNotHello";
-
- if (aSelector == @selector(methodMappedToLongName))
- return [@"" stringByPaddingToLength:4096 withString: @"long" startingAtIndex:0];
-
- 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]];
-}
-
-- (NSString *)methodMappedToLongName
-{
- return @"methodMappedToLongName";
-}
-
-- (NSString *)testConversionColon:(int)useless
-{
- return @"testConversionColon:(int)useless";
-}
-
-- (NSString *)testConversionEscapeChar$a_b$_:(int)useless
-{
- return @"testConversionEscapeChar$a_b$_:(int)useless";
-}
-
-- (void)dealloc
-{
- if (throwOnDealloc)
- [WebScriptObject throwException:@"Throwing exception on dealloc of ObjCPlugin"];
-
- [super dealloc];
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/ObjCPluginFunction.h b/Tools/DumpRenderTree/mac/ObjCPluginFunction.h
deleted file mode 100644
index 1e81b21f4..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/ObjCPluginFunction.m b/Tools/DumpRenderTree/mac/ObjCPluginFunction.m
deleted file mode 100644
index 5bf3617fc..000000000
--- a/Tools/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 "config.h"
-#import "ObjCPluginFunction.h"
-
-
-@implementation ObjCPluginFunction
-
-- (id)invokeDefaultMethodWithArguments:(NSArray *)args
-{
- return @"test";
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c b/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c
deleted file mode 100644
index 35f051c14..000000000
--- a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport.c
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * 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.
- */
-
-#include <sys/sysctl.h>
-
-int processIsCrashing(int pid)
-{
- int mib[4] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, pid };
- struct kinfo_proc info;
- size_t bufferSize = sizeof(info);
- if (sysctl(mib, sizeof(mib) / sizeof(mib[0]), &info, &bufferSize, 0, 0)) {
- perror("sysctl");
- return 0;
- }
-
- struct extern_proc proc = info.kp_proc;
-
- // The process is crashing if it is waiting to exit, is not a zombie, and has a non-zero exit code.
- return proc.p_stat != SZOMB && (proc.p_flag & P_WEXIT) && proc.p_xstat;
-}
diff --git a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm b/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm
deleted file mode 100644
index 7b4ea34e5..000000000
--- a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupportPregenerated.pm
+++ /dev/null
@@ -1,54 +0,0 @@
-# This file was automatically generated by SWIG
-package DumpRenderTreeSupport;
-require Exporter;
-require DynaLoader;
-@ISA = qw(Exporter DynaLoader);
-package DumpRenderTreeSupportc;
-bootstrap DumpRenderTreeSupport;
-package DumpRenderTreeSupport;
-@EXPORT = qw( );
-
-# ---------- BASE METHODS -------------
-
-package DumpRenderTreeSupport;
-
-sub TIEHASH {
- my ($classname,$obj) = @_;
- return bless $obj, $classname;
-}
-
-sub CLEAR { }
-
-sub FIRSTKEY { }
-
-sub NEXTKEY { }
-
-sub FETCH {
- my ($self,$field) = @_;
- my $member_func = "swig_${field}_get";
- $self->$member_func();
-}
-
-sub STORE {
- my ($self,$field,$newval) = @_;
- my $member_func = "swig_${field}_set";
- $self->$member_func($newval);
-}
-
-sub this {
- my $ptr = shift;
- return tied(%$ptr);
-}
-
-
-# ------- FUNCTION WRAPPERS --------
-
-package DumpRenderTreeSupport;
-
-*processIsCrashing = *DumpRenderTreeSupportc::processIsCrashing;
-
-# ------- VARIABLE STUBS --------
-
-package DumpRenderTreeSupport;
-
-1;
diff --git a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c b/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c
deleted file mode 100644
index f73498934..000000000
--- a/Tools/DumpRenderTree/mac/PerlSupport/DumpRenderTreeSupport_wrapPregenerated.c
+++ /dev/null
@@ -1,1167 +0,0 @@
-/* ----------------------------------------------------------------------------
- * This file was automatically generated by SWIG (http://www.swig.org).
- * Version 1.3.24
- *
- * This file is not intended to be easily readable and contains a number of
- * coding conventions designed to improve portability and efficiency. Do not make
- * changes to this file unless you know what you are doing--modify the SWIG
- * interface file instead.
- * ----------------------------------------------------------------------------- */
-
-
-#ifndef SWIG_TEMPLATE_DISAMBIGUATOR
-# if defined(__SUNPRO_CC)
-# define SWIG_TEMPLATE_DISAMBIGUATOR template
-# else
-# define SWIG_TEMPLATE_DISAMBIGUATOR
-# endif
-#endif
-
-/***********************************************************************
- * swigrun.swg
- *
- * This file contains generic CAPI SWIG runtime support for pointer
- * type checking.
- *
- ************************************************************************/
-
-/* This should only be incremented when either the layout of swig_type_info changes,
- or for whatever reason, the runtime changes incompatibly */
-#define SWIG_RUNTIME_VERSION "1"
-
-/* define SWIG_TYPE_TABLE_NAME as "SWIG_TYPE_TABLE" */
-#ifdef SWIG_TYPE_TABLE
-#define SWIG_QUOTE_STRING(x) #x
-#define SWIG_EXPAND_AND_QUOTE_STRING(x) SWIG_QUOTE_STRING(x)
-#define SWIG_TYPE_TABLE_NAME SWIG_EXPAND_AND_QUOTE_STRING(SWIG_TYPE_TABLE)
-#else
-#define SWIG_TYPE_TABLE_NAME
-#endif
-
-#include <string.h>
-
-#ifndef SWIGINLINE
-#if defined(__cplusplus) || (defined(__GNUC__) && !defined(__STRICT_ANSI__))
-# define SWIGINLINE inline
-#else
-# define SWIGINLINE
-#endif
-#endif
-
-/*
- You can use the SWIGRUNTIME and SWIGRUNTIMEINLINE macros for
- creating a static or dynamic library from the swig runtime code.
- In 99.9% of the cases, swig just needs to declare them as 'static'.
-
- But only do this if is strictly necessary, ie, if you have problems
- with your compiler or so.
-*/
-#ifndef SWIGRUNTIME
-#define SWIGRUNTIME static
-#endif
-#ifndef SWIGRUNTIMEINLINE
-#define SWIGRUNTIMEINLINE SWIGRUNTIME SWIGINLINE
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *(*swig_converter_func)(void *);
-typedef struct swig_type_info *(*swig_dycast_func)(void **);
-
-typedef struct swig_type_info {
- const char *name;
- swig_converter_func converter;
- const char *str;
- void *clientdata;
- swig_dycast_func dcast;
- struct swig_type_info *next;
- struct swig_type_info *prev;
-} swig_type_info;
-
-/*
- Compare two type names skipping the space characters, therefore
- "char*" == "char *" and "Class<int>" == "Class<int >", etc.
-
- Return 0 when the two name types are equivalent, as in
- strncmp, but skipping ' '.
-*/
-SWIGRUNTIME int
-SWIG_TypeNameComp(const char *f1, const char *l1,
- const char *f2, const char *l2) {
- for (;(f1 != l1) && (f2 != l2); ++f1, ++f2) {
- while ((*f1 == ' ') && (f1 != l1)) ++f1;
- while ((*f2 == ' ') && (f2 != l2)) ++f2;
- if (*f1 != *f2) return *f1 - *f2;
- }
- return (l1 - f1) - (l2 - f2);
-}
-
-/*
- Check type equivalence in a name list like <name1>|<name2>|...
-*/
-SWIGRUNTIME int
-SWIG_TypeEquiv(const char *nb, const char *tb) {
- int equiv = 0;
- const char* te = tb + strlen(tb);
- const char* ne = nb;
- while (!equiv && *ne) {
- for (nb = ne; *ne; ++ne) {
- if (*ne == '|') break;
- }
- equiv = SWIG_TypeNameComp(nb, ne, tb, te) == 0;
- if (*ne) ++ne;
- }
- return equiv;
-}
-
-/*
- Register a type mapping with the type-checking
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeRegisterTL(swig_type_info **tl, swig_type_info *ti) {
- swig_type_info *tc, *head, *ret, *next;
- /* Check to see if this type has already been registered */
- tc = *tl;
- while (tc) {
- /* check simple type equivalence */
- int typeequiv = (strcmp(tc->name, ti->name) == 0);
- /* check full type equivalence, resolving typedefs */
- if (!typeequiv) {
- /* only if tc is not a typedef (no '|' on it) */
- if (tc->str && ti->str && !strstr(tc->str,"|")) {
- typeequiv = SWIG_TypeEquiv(ti->str,tc->str);
- }
- }
- if (typeequiv) {
- /* Already exists in the table. Just add additional types to the list */
- if (ti->clientdata) tc->clientdata = ti->clientdata;
- head = tc;
- next = tc->next;
- goto l1;
- }
- tc = tc->prev;
- }
- head = ti;
- next = 0;
-
- /* Place in list */
- ti->prev = *tl;
- *tl = ti;
-
- /* Build linked lists */
- l1:
- ret = head;
- tc = ti + 1;
- /* Patch up the rest of the links */
- while (tc->name) {
- head->next = tc;
- tc->prev = head;
- head = tc;
- tc++;
- }
- if (next) next->prev = head;
- head->next = next;
-
- return ret;
-}
-
-/*
- Check the typename
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeCheck(const char *c, swig_type_info *ty) {
- swig_type_info *s;
- if (!ty) return 0; /* Void pointer */
- s = ty->next; /* First element always just a name */
- do {
- if (strcmp(s->name,c) == 0) {
- if (s == ty->next) return s;
- /* Move s to the top of the linked list */
- s->prev->next = s->next;
- if (s->next) {
- s->next->prev = s->prev;
- }
- /* Insert s as second element in the list */
- s->next = ty->next;
- if (ty->next) ty->next->prev = s;
- ty->next = s;
- s->prev = ty;
- return s;
- }
- s = s->next;
- } while (s && (s != ty->next));
- return 0;
-}
-
-/*
- Cast a pointer up an inheritance hierarchy
-*/
-SWIGRUNTIMEINLINE void *
-SWIG_TypeCast(swig_type_info *ty, void *ptr) {
- return ((!ty) || (!ty->converter)) ? ptr : (*ty->converter)(ptr);
-}
-
-/*
- Dynamic pointer casting. Down an inheritance hierarchy
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeDynamicCast(swig_type_info *ty, void **ptr) {
- swig_type_info *lastty = ty;
- if (!ty || !ty->dcast) return ty;
- while (ty && (ty->dcast)) {
- ty = (*ty->dcast)(ptr);
- if (ty) lastty = ty;
- }
- return lastty;
-}
-
-/*
- Return the name associated with this type
-*/
-SWIGRUNTIMEINLINE const char *
-SWIG_TypeName(const swig_type_info *ty) {
- return ty->name;
-}
-
-/*
- Return the pretty name associated with this type,
- that is an unmangled type name in a form presentable to the user.
-*/
-SWIGRUNTIME const char *
-SWIG_TypePrettyName(const swig_type_info *type) {
- /* The "str" field contains the equivalent pretty names of the
- type, separated by vertical-bar characters. We choose
- to print the last name, as it is often (?) the most
- specific. */
- if (type->str != NULL) {
- const char *last_name = type->str;
- const char *s;
- for (s = type->str; *s; s++)
- if (*s == '|') last_name = s+1;
- return last_name;
- }
- else
- return type->name;
-}
-
-/*
- Search for a swig_type_info structure
-*/
-SWIGRUNTIME swig_type_info *
-SWIG_TypeQueryTL(swig_type_info *tl, const char *name) {
- swig_type_info *ty = tl;
- while (ty) {
- if (ty->str && (SWIG_TypeEquiv(ty->str,name))) return ty;
- if (ty->name && (strcmp(name,ty->name) == 0)) return ty;
- ty = ty->prev;
- }
- return 0;
-}
-
-/*
- Set the clientdata field for a type
-*/
-SWIGRUNTIME void
-SWIG_TypeClientDataTL(swig_type_info *tl, swig_type_info *ti, void *clientdata) {
- swig_type_info *tc, *equiv;
- if (ti->clientdata) return;
- /* if (ti->clientdata == clientdata) return; */
- ti->clientdata = clientdata;
- equiv = ti->next;
- while (equiv) {
- if (!equiv->converter) {
- tc = tl;
- while (tc) {
- if ((strcmp(tc->name, equiv->name) == 0))
- SWIG_TypeClientDataTL(tl,tc,clientdata);
- tc = tc->prev;
- }
- }
- equiv = equiv->next;
- }
-}
-
-/*
- Pack binary data into a string
-*/
-SWIGRUNTIME char *
-SWIG_PackData(char *c, void *ptr, size_t sz) {
- static char hex[17] = "0123456789abcdef";
- unsigned char *u = (unsigned char *) ptr;
- const unsigned char *eu = u + sz;
- register unsigned char uu;
- for (; u != eu; ++u) {
- uu = *u;
- *(c++) = hex[(uu & 0xf0) >> 4];
- *(c++) = hex[uu & 0xf];
- }
- return c;
-}
-
-/*
- Unpack binary data from a string
-*/
-SWIGRUNTIME const char *
-SWIG_UnpackData(const char *c, void *ptr, size_t sz) {
- register unsigned char *u = (unsigned char *) ptr;
- register const unsigned char *eu = u + sz;
- for (; u != eu; ++u) {
- register int d = *(c++);
- register unsigned char uu = 0;
- if ((d >= '0') && (d <= '9'))
- uu = ((d - '0') << 4);
- else if ((d >= 'a') && (d <= 'f'))
- uu = ((d - ('a'-10)) << 4);
- else
- return (char *) 0;
- d = *(c++);
- if ((d >= '0') && (d <= '9'))
- uu |= (d - '0');
- else if ((d >= 'a') && (d <= 'f'))
- uu |= (d - ('a'-10));
- else
- return (char *) 0;
- *u = uu;
- }
- return c;
-}
-
-/*
- This function will propagate the clientdata field of type to any new
- swig_type_info structures that have been added into the list of
- equivalent types. It is like calling SWIG_TypeClientData(type,
- clientdata) a second time.
-*/
-SWIGRUNTIME void
-SWIG_PropagateClientDataTL(swig_type_info *tl, swig_type_info *type) {
- swig_type_info *equiv = type->next;
- swig_type_info *tc;
- if (!type->clientdata) return;
- while (equiv) {
- if (!equiv->converter) {
- tc = tl;
- while (tc) {
- if ((strcmp(tc->name, equiv->name) == 0) && !tc->clientdata)
- SWIG_TypeClientDataTL(tl,tc, type->clientdata);
- tc = tc->prev;
- }
- }
- equiv = equiv->next;
- }
-}
-
-/*
- Pack 'void *' into a string buffer.
-*/
-SWIGRUNTIME char *
-SWIG_PackVoidPtr(char *buff, void *ptr, const char *name, size_t bsz) {
- char *r = buff;
- if ((2*sizeof(void *) + 2) > bsz) return 0;
- *(r++) = '_';
- r = SWIG_PackData(r,&ptr,sizeof(void *));
- if (strlen(name) + 1 > (bsz - (r - buff))) return 0;
- strcpy(r,name);
- return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackVoidPtr(const char *c, void **ptr, const char *name) {
- if (*c != '_') {
- if (strcmp(c,"NULL") == 0) {
- *ptr = (void *) 0;
- return name;
- } else {
- return 0;
- }
- }
- return SWIG_UnpackData(++c,ptr,sizeof(void *));
-}
-
-SWIGRUNTIME char *
-SWIG_PackDataName(char *buff, void *ptr, size_t sz, const char *name, size_t bsz) {
- char *r = buff;
- size_t lname = (name ? strlen(name) : 0);
- if ((2*sz + 2 + lname) > bsz) return 0;
- *(r++) = '_';
- r = SWIG_PackData(r,ptr,sz);
- if (lname) {
- strncpy(r,name,lname+1);
- } else {
- *r = 0;
- }
- return buff;
-}
-
-SWIGRUNTIME const char *
-SWIG_UnpackDataName(const char *c, void *ptr, size_t sz, const char *name) {
- if (*c != '_') {
- if (strcmp(c,"NULL") == 0) {
- memset(ptr,0,sz);
- return name;
- } else {
- return 0;
- }
- }
- return SWIG_UnpackData(++c,ptr,sz);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/***********************************************************************
- * common.swg
- *
- * This file contains generic SWIG runtime support for pointer
- * type checking as well as a few commonly used macros to control
- * external linkage.
- *
- * Author : David Beazley (beazley@cs.uchicago.edu)
- *
- * Copyright (c) 1999-2000, The University of Chicago
- *
- * This file may be freely redistributed without license or fee provided
- * this copyright message remains intact.
- ************************************************************************/
-
-
-#if defined(_WIN32) || defined(__WIN32__) || defined(__CYGWIN__)
-# if !defined(STATIC_LINKED)
-# define SWIGEXPORT(a) __declspec(dllexport) a
-# else
-# define SWIGEXPORT(a) a
-# endif
-#else
-# define SWIGEXPORT(a) a
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/*************************************************************************/
-
-
-/* The static type info list */
-
-static swig_type_info *swig_type_list = 0;
-static swig_type_info **swig_type_list_handle = &swig_type_list;
-
-
-/* Register a type mapping with the type-checking */
-static swig_type_info *
-SWIG_TypeRegister(swig_type_info *ti) {
- return SWIG_TypeRegisterTL(swig_type_list_handle, ti);
-}
-
-/* Search for a swig_type_info structure */
-static swig_type_info *
-SWIG_TypeQuery(const char *name) {
- return SWIG_TypeQueryTL(*swig_type_list_handle, name);
-}
-
-/* Set the clientdata field for a type */
-static void
-SWIG_TypeClientData(swig_type_info *ti, void *clientdata) {
- SWIG_TypeClientDataTL(*swig_type_list_handle, ti, clientdata);
-}
-
-/* This function will propagate the clientdata field of type to
-* any new swig_type_info structures that have been added into the list
-* of equivalent types. It is like calling
-* SWIG_TypeClientData(type, clientdata) a second time.
-*/
-static void
-SWIG_PropagateClientData(swig_type_info *type) {
- SWIG_PropagateClientDataTL(*swig_type_list_handle, type);
-}
-
-#ifdef __cplusplus
-}
-#endif
-
-/* ---------------------------------------------------------------------- -*- c -*-
- * perl5.swg
- *
- * Perl5 runtime library
- * $Header: /cvsroot/swig/SWIG/Lib/perl5/perlrun.swg,v 1.20 2004/11/29 23:13:57 wuzzeb Exp $
- * ----------------------------------------------------------------------------- */
-
-#define SWIGPERL
-#define SWIGPERL5
-#ifdef __cplusplus
-/* Needed on some windows machines---since MS plays funny games with the header files under C++ */
-#include <math.h>
-#include <stdlib.h>
-extern "C" {
-#endif
-#include "EXTERN.h"
-#include "perl.h"
-#include "XSUB.h"
-
-/* Get rid of free and malloc defined by perl */
-#undef free
-#undef malloc
-
-#ifndef pTHX_
-#define pTHX_
-#endif
-
-#include <string.h>
-#ifdef __cplusplus
-}
-#endif
-
-/* Macro to call an XS function */
-
-#ifdef PERL_OBJECT
-# define SWIG_CALLXS(_name) _name(cv,pPerl)
-#else
-# ifndef MULTIPLICITY
-# define SWIG_CALLXS(_name) _name(cv)
-# else
-# define SWIG_CALLXS(_name) _name(PERL_GET_THX, cv)
-# endif
-#endif
-
-/* Contract support */
-
-#define SWIG_contract_assert(expr,msg) if (!(expr)) { SWIG_croak(msg); } else
-
-/* Note: SwigMagicFuncHack is a typedef used to get the C++ compiler to just shut up already */
-
-#ifdef PERL_OBJECT
-#define MAGIC_PPERL CPerlObj *pPerl = (CPerlObj *) this;
-typedef int (CPerlObj::*SwigMagicFunc)(SV *, MAGIC *);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-typedef int (CPerlObj::*SwigMagicFuncHack)(SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
-#define SWIGCLASS_STATIC
-#else
-#define MAGIC_PPERL
-#define SWIGCLASS_STATIC static
-#ifndef MULTIPLICITY
-#define SWIG_MAGIC(a,b) (SV *a, MAGIC *b)
-typedef int (*SwigMagicFunc)(SV *, MAGIC *);
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-typedef int (*SwigMagicFuncHack)(SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-
-#else
-#define SWIG_MAGIC(a,b) (struct interpreter *interp, SV *a, MAGIC *b)
-typedef int (*SwigMagicFunc)(struct interpreter *, SV *, MAGIC *);
-#ifdef __cplusplus
-extern "C" {
-#endif
-typedef int (*SwigMagicFuncHack)(struct interpreter *, SV *, MAGIC *);
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-#endif
-
-#if defined(WIN32) && defined(PERL_OBJECT) && !defined(PerlIO_exportFILE)
-#define PerlIO_exportFILE(fh,fl) (FILE*)(fh)
-#endif
-
-/* Modifications for newer Perl 5.005 releases */
-
-#if !defined(PERL_REVISION) || ((PERL_REVISION >= 5) && ((PERL_VERSION < 5) || ((PERL_VERSION == 5) && (PERL_SUBVERSION < 50))))
-# ifndef PL_sv_yes
-# define PL_sv_yes sv_yes
-# endif
-# ifndef PL_sv_undef
-# define PL_sv_undef sv_undef
-# endif
-# ifndef PL_na
-# define PL_na na
-# endif
-#endif
-
-#include <stdlib.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#define SWIG_OWNER 1
-#define SWIG_SHADOW 2
-
-/* Common SWIG API */
-
-#ifdef PERL_OBJECT
-# define SWIG_ConvertPtr(obj, pp, type, flags) \
- SWIG_Perl_ConvertPtr(pPerl, obj, pp, type, flags)
-# define SWIG_NewPointerObj(p, type, flags) \
- SWIG_Perl_NewPointerObj(pPerl, p, type, flags)
-# define SWIG_MakePackedObj(sv, p, s, type) \
- SWIG_Perl_MakePackedObj(pPerl, sv, p, s, type)
-# define SWIG_ConvertPacked(obj, p, s, type, flags) \
- SWIG_Perl_ConvertPacked(pPerl, obj, p, s, type, flags)
-
-#else
-# define SWIG_ConvertPtr(obj, pp, type, flags) \
- SWIG_Perl_ConvertPtr(obj, pp, type, flags)
-# define SWIG_NewPointerObj(p, type, flags) \
- SWIG_Perl_NewPointerObj(p, type, flags)
-# define SWIG_MakePackedObj(sv, p, s, type) \
- SWIG_Perl_MakePackedObj(sv, p, s, type )
-# define SWIG_ConvertPacked(obj, p, s, type, flags) \
- SWIG_Perl_ConvertPacked(obj, p, s, type, flags)
-#endif
-
-/* Perl-specific API */
-#ifdef PERL_OBJECT
-# define SWIG_MakePtr(sv, ptr, type, flags) \
- SWIG_Perl_MakePtr(pPerl, sv, ptr, type, flags)
-# define SWIG_SetError(str) \
- SWIG_Perl_SetError(pPerl, str)
-#else
-# define SWIG_MakePtr(sv, ptr, type, flags) \
- SWIG_Perl_MakePtr(sv, ptr, type, flags)
-# define SWIG_SetError(str) \
- SWIG_Perl_SetError(str)
-# define SWIG_SetErrorSV(str) \
- SWIG_Perl_SetErrorSV(str)
-#endif
-
-#define SWIG_SetErrorf SWIG_Perl_SetErrorf
-
-
-#ifdef PERL_OBJECT
-# define SWIG_MAYBE_PERL_OBJECT CPerlObj *pPerl,
-#else
-# define SWIG_MAYBE_PERL_OBJECT
-#endif
-
-static swig_type_info **
-SWIG_Perl_GetTypeListHandle() {
- static void *type_pointer = (void *)0;
- SV *pointer;
-
- /* first check if pointer already created */
- if (!type_pointer) {
- pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, FALSE);
- if (pointer && SvOK(pointer)) {
- type_pointer = INT2PTR(swig_type_info **, SvIV(pointer));
- }
- }
-
- return (swig_type_info **) type_pointer;
-}
-
-/*
- Search for a swig_type_info structure
- */
-SWIGRUNTIMEINLINE swig_type_info *
-SWIG_Perl_GetTypeList() {
- swig_type_info **tlh = SWIG_Perl_GetTypeListHandle();
- return tlh ? *tlh : (swig_type_info*)0;
-}
-
-#define SWIG_Runtime_GetTypeList SWIG_Perl_GetTypeList
-
-static swig_type_info *
-SWIG_Perl_TypeCheckRV(SWIG_MAYBE_PERL_OBJECT SV *rv, swig_type_info *ty) {
- swig_type_info *s;
- if (!ty) return 0; /* Void pointer */
- s = ty->next; /* First element always just a name */
- do {
- if (sv_derived_from(rv, (char *) s->name)) {
- if (s == ty->next) return s;
- /* Move s to the top of the linked list */
- s->prev->next = s->next;
- if (s->next) {
- s->next->prev = s->prev;
- }
- /* Insert s as second element in the list */
- s->next = ty->next;
- if (ty->next) ty->next->prev = s;
- ty->next = s;
- s->prev = ty;
- return s;
- }
- s = s->next;
- } while (s && (s != ty->next));
- return 0;
-}
-
-/* Function for getting a pointer value */
-
-static int
-SWIG_Perl_ConvertPtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void **ptr, swig_type_info *_t, int flags) {
- swig_type_info *tc;
- void *voidptr = (void *)0;
-
- /* If magical, apply more magic */
- if (SvGMAGICAL(sv))
- mg_get(sv);
-
- /* Check to see if this is an object */
- if (sv_isobject(sv)) {
- SV *tsv = (SV*) SvRV(sv);
- IV tmp = 0;
- if ((SvTYPE(tsv) == SVt_PVHV)) {
- MAGIC *mg;
- if (SvMAGICAL(tsv)) {
- mg = mg_find(tsv,'P');
- if (mg) {
- sv = mg->mg_obj;
- if (sv_isobject(sv)) {
- tmp = SvIV((SV*)SvRV(sv));
- }
- }
- } else {
- return -1;
- }
- } else {
- tmp = SvIV((SV*)SvRV(sv));
- }
- voidptr = (void *)tmp;
- if (!_t) {
- *(ptr) = voidptr;
- return 0;
- }
- } else if (! SvOK(sv)) { /* Check for undef */
- *(ptr) = (void *) 0;
- return 0;
- } else if (SvTYPE(sv) == SVt_RV) { /* Check for NULL pointer */
- *(ptr) = (void *) 0;
- if (!SvROK(sv))
- return 0;
- else
- return -1;
- } else { /* Don't know what it is */
- *(ptr) = (void *) 0;
- return -1;
- }
- if (_t) {
- /* Now see if the types match */
- char *_c = HvNAME(SvSTASH(SvRV(sv)));
- tc = SWIG_TypeCheck(_c,_t);
- if (!tc) {
- *ptr = voidptr;
- return -1;
- }
- *ptr = SWIG_TypeCast(tc,voidptr);
- return 0;
- }
- *ptr = voidptr;
- return 0;
-}
-
-static void
-SWIG_Perl_MakePtr(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, swig_type_info *t, int flags) {
- if (ptr && (flags & SWIG_SHADOW)) {
- SV *self;
- SV *obj=newSV(0);
- HV *hash=newHV();
- HV *stash;
- sv_setref_pv(obj, (char *) t->name, ptr);
- stash=SvSTASH(SvRV(obj));
- if (flags & SWIG_OWNER) {
- HV *hv;
- GV *gv=*(GV**)hv_fetch(stash, "OWNER", 5, TRUE);
- if (!isGV(gv))
- gv_init(gv, stash, "OWNER", 5, FALSE);
- hv=GvHVn(gv);
- hv_store_ent(hv, obj, newSViv(1), 0);
- }
- sv_magic((SV *)hash, (SV *)obj, 'P', Nullch, 0);
- SvREFCNT_dec(obj);
- self=newRV_noinc((SV *)hash);
- sv_setsv(sv, self);
- SvREFCNT_dec((SV *)self);
- sv_bless(sv, stash);
- }
- else {
- sv_setref_pv(sv, (char *) t->name, ptr);
- }
-}
-
-static SWIGINLINE SV *
-SWIG_Perl_NewPointerObj(SWIG_MAYBE_PERL_OBJECT void *ptr, swig_type_info *t, int flags) {
- SV *result = sv_newmortal();
- SWIG_MakePtr(result, ptr, t, flags);
- return result;
-}
-
-static void
- SWIG_Perl_MakePackedObj(SWIG_MAYBE_PERL_OBJECT SV *sv, void *ptr, int sz, swig_type_info *type) {
- char result[1024];
- char *r = result;
- if ((2*sz + 1 + strlen(type->name)) > 1000) return;
- *(r++) = '_';
- r = SWIG_PackData(r,ptr,sz);
- strcpy(r,type->name);
- sv_setpv(sv, result);
-}
-
-/* Convert a packed value value */
-static int
-SWIG_Perl_ConvertPacked(SWIG_MAYBE_PERL_OBJECT SV *obj, void *ptr, int sz, swig_type_info *ty, int flags) {
- swig_type_info *tc;
- const char *c = 0;
-
- if ((!obj) || (!SvOK(obj))) return -1;
- c = SvPV(obj, PL_na);
- /* Pointer values must start with leading underscore */
- if (*c != '_') return -1;
- c++;
- c = SWIG_UnpackData(c,ptr,sz);
- if (ty) {
- tc = SWIG_TypeCheck(c,ty);
- if (!tc) return -1;
- }
- return 0;
-}
-
-static SWIGINLINE void
-SWIG_Perl_SetError(SWIG_MAYBE_PERL_OBJECT const char *error) {
- if (error) sv_setpv(perl_get_sv("@", TRUE), error);
-}
-
-static SWIGINLINE void
-SWIG_Perl_SetErrorSV(SWIG_MAYBE_PERL_OBJECT SV *error) {
- if (error) sv_setsv(perl_get_sv("@", TRUE), error);
-}
-
-static void
-SWIG_Perl_SetErrorf(const char *fmt, ...) {
- va_list args;
- va_start(args, fmt);
- sv_vsetpvfn(perl_get_sv("@", TRUE), fmt, strlen(fmt), &args, Null(SV**), 0, Null(bool*));
- va_end(args);
-}
-
-/* Macros for low-level exception handling */
-#define SWIG_fail goto fail
-#define SWIG_croak(x) { SWIG_SetError(x); goto fail; }
-#define SWIG_croakSV(x) { SWIG_SetErrorSV(x); goto fail; }
-/* most preprocessors do not support vararg macros :-( */
-/* #define SWIG_croakf(x...) { SWIG_SetErrorf(x); goto fail; } */
-
-
-typedef XS(SwigPerlWrapper);
-typedef SwigPerlWrapper *SwigPerlWrapperPtr;
-
-/* Structure for command table */
-typedef struct {
- const char *name;
- SwigPerlWrapperPtr wrapper;
-} swig_command_info;
-
-/* Information for constant table */
-
-#define SWIG_INT 1
-#define SWIG_FLOAT 2
-#define SWIG_STRING 3
-#define SWIG_POINTER 4
-#define SWIG_BINARY 5
-
-/* Constant information structure */
-typedef struct swig_constant_info {
- int type;
- const char *name;
- long lvalue;
- double dvalue;
- void *pvalue;
- swig_type_info **ptype;
-} swig_constant_info;
-
-#ifdef __cplusplus
-}
-#endif
-
-/* Structure for variable table */
-typedef struct {
- const char *name;
- SwigMagicFunc set;
- SwigMagicFunc get;
- swig_type_info **type;
-} swig_variable_info;
-
-/* Magic variable code */
-#ifndef PERL_OBJECT
-#define swig_create_magic(s,a,b,c) _swig_create_magic(s,a,b,c)
- #ifndef MULTIPLICITY
- static void _swig_create_magic(SV *sv, char *name, int (*set)(SV *, MAGIC *), int (*get)(SV *,MAGIC *)) {
- #else
- static void _swig_create_magic(SV *sv, char *name, int (*set)(struct interpreter*, SV *, MAGIC *), int (*get)(struct interpreter*, SV *,MAGIC *)) {
- #endif
-#else
-# define swig_create_magic(s,a,b,c) _swig_create_magic(pPerl,s,a,b,c)
-static void _swig_create_magic(CPerlObj *pPerl, SV *sv, const char *name, int (CPerlObj::*set)(SV *, MAGIC *), int (CPerlObj::*get)(SV *, MAGIC *)) {
-#endif
- MAGIC *mg;
- sv_magic(sv,sv,'U',(char *) name,strlen(name));
- mg = mg_find(sv,'U');
- mg->mg_virtual = (MGVTBL *) malloc(sizeof(MGVTBL));
- mg->mg_virtual->svt_get = (SwigMagicFuncHack) get;
- mg->mg_virtual->svt_set = (SwigMagicFuncHack) set;
- mg->mg_virtual->svt_len = 0;
- mg->mg_virtual->svt_clear = 0;
- mg->mg_virtual->svt_free = 0;
-}
-
-
-
-
-
-
-#ifdef do_open
- #undef do_open
-#endif
-#ifdef do_close
- #undef do_close
-#endif
-#ifdef scalar
- #undef scalar
-#endif
-#ifdef list
- #undef list
-#endif
-#ifdef apply
- #undef apply
-#endif
-#ifdef convert
- #undef convert
-#endif
-#ifdef Error
- #undef Error
-#endif
-#ifdef form
- #undef form
-#endif
-#ifdef vform
- #undef vform
-#endif
-#ifdef LABEL
- #undef LABEL
-#endif
-#ifdef METHOD
- #undef METHOD
-#endif
-#ifdef Move
- #undef Move
-#endif
-#ifdef yylex
- #undef yylex
-#endif
-#ifdef yyparse
- #undef yyparse
-#endif
-#ifdef yyerror
- #undef yyerror
-#endif
-#ifdef invert
- #undef invert
-#endif
-#ifdef ref
- #undef ref
-#endif
-#ifdef ENTER
- #undef ENTER
-#endif
-
-
-/* -------- TYPES TABLE (BEGIN) -------- */
-
-static swig_type_info *swig_types[1];
-
-/* -------- TYPES TABLE (END) -------- */
-
-#define SWIG_init boot_DumpRenderTreeSupport
-
-#define SWIG_name "DumpRenderTreeSupportc::boot_DumpRenderTreeSupport"
-#define SWIG_prefix "DumpRenderTreeSupportc::"
-
-#ifdef __cplusplus
-extern "C"
-#endif
-#ifndef PERL_OBJECT
-#ifndef MULTIPLICITY
-SWIGEXPORT(void) SWIG_init (CV* cv);
-#else
-SWIGEXPORT(void) SWIG_init (pTHXo_ CV* cv);
-#endif
-#else
-SWIGEXPORT(void) SWIG_init (CV *cv, CPerlObj *);
-#endif
-
-int processIsCrashing(int);
-#ifdef PERL_OBJECT
-#define MAGIC_CLASS _wrap_DumpRenderTreeSupport_var::
-class _wrap_DumpRenderTreeSupport_var : public CPerlObj {
-public:
-#else
-#define MAGIC_CLASS
-#endif
-SWIGCLASS_STATIC int swig_magic_readonly(pTHX_ SV *sv, MAGIC *mg) {
- MAGIC_PPERL
- sv = sv; mg = mg;
- croak("Value is read-only.");
- return 0;
-}
-
-
-#ifdef PERL_OBJECT
-};
-#endif
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-XS(_wrap_processIsCrashing) {
- {
- int arg1 ;
- int result;
- int argvi = 0;
- dXSARGS;
-
- if ((items < 1) || (items > 1)) {
- SWIG_croak("Usage: processIsCrashing(pid);");
- }
- arg1 = (int) SvIV(ST(0));
- result = (int)processIsCrashing(arg1);
-
- ST(argvi) = sv_newmortal();
- sv_setiv(ST(argvi++), (IV) result);
- XSRETURN(argvi);
- fail:
- ;
- }
- croak(Nullch);
-}
-
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
-
-
-static swig_type_info *swig_types_initial[] = {
-0
-};
-
-
-/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (END) -------- */
-
-static swig_constant_info swig_constants[] = {
-{0,0,0,0,0,0}
-};
-#ifdef __cplusplus
-}
-#endif
-static swig_variable_info swig_variables[] = {
-{0,0,0,0}
-};
-static swig_command_info swig_commands[] = {
-{"DumpRenderTreeSupportc::processIsCrashing", _wrap_processIsCrashing},
-{0,0}
-};
-
-
-static void SWIG_Perl_SetTypeListHandle(swig_type_info **handle) {
- SV *pointer;
-
- /* create a new pointer */
- pointer = get_sv("swig_runtime_data::type_pointer" SWIG_RUNTIME_VERSION SWIG_TYPE_TABLE_NAME, TRUE);
- sv_setiv(pointer, PTR2IV(swig_type_list_handle));
-}
-
-static swig_type_info **
-SWIG_Perl_LookupTypePointer(swig_type_info **type_list_handle) {
- swig_type_info **type_pointer;
-
- /* first check if module already created */
- type_pointer = SWIG_Perl_GetTypeListHandle();
- if (type_pointer) {
- return type_pointer;
- } else {
- /* create a new module and variable */
- SWIG_Perl_SetTypeListHandle(type_list_handle);
- return type_list_handle;
- }
-}
-
-
-#ifdef __cplusplus
-extern "C"
-#endif
-
-XS(SWIG_init) {
- dXSARGS;
- int i;
- static int _init = 0;
- if (!_init) {
- swig_type_list_handle = SWIG_Perl_LookupTypePointer(swig_type_list_handle);
- for (i = 0; swig_types_initial[i]; i++) {
- swig_types[i] = SWIG_TypeRegister(swig_types_initial[i]);
- }
- _init = 1;
- }
-
- /* Install commands */
- for (i = 0; swig_commands[i].name; i++) {
- newXS((char*) swig_commands[i].name,swig_commands[i].wrapper, (char*)__FILE__);
- }
-
- /* Install variables */
- for (i = 0; swig_variables[i].name; i++) {
- SV *sv;
- sv = perl_get_sv((char*) swig_variables[i].name, TRUE | 0x2);
- if (swig_variables[i].type) {
- SWIG_MakePtr(sv,(void *)1, *swig_variables[i].type,0);
- } else {
- sv_setiv(sv,(IV) 0);
- }
- swig_create_magic(sv, (char *) swig_variables[i].name, swig_variables[i].set, swig_variables[i].get);
- }
-
- /* Install constant */
- for (i = 0; swig_constants[i].type; i++) {
- SV *sv;
- sv = perl_get_sv((char*)swig_constants[i].name, TRUE | 0x2);
- switch(swig_constants[i].type) {
- case SWIG_INT:
- sv_setiv(sv, (IV) swig_constants[i].lvalue);
- break;
- case SWIG_FLOAT:
- sv_setnv(sv, (double) swig_constants[i].dvalue);
- break;
- case SWIG_STRING:
- sv_setpv(sv, (char *) swig_constants[i].pvalue);
- break;
- case SWIG_POINTER:
- SWIG_MakePtr(sv, swig_constants[i].pvalue, *(swig_constants[i].ptype),0);
- break;
- case SWIG_BINARY:
- SWIG_MakePackedObj(sv, swig_constants[i].pvalue, swig_constants[i].lvalue, *(swig_constants[i].ptype));
- break;
- default:
- break;
- }
- SvREADONLY_on(sv);
- }
-
- ST(0) = &PL_sv_yes;
- XSRETURN(1);
-}
-
diff --git a/Tools/DumpRenderTree/mac/PerlSupport/Makefile b/Tools/DumpRenderTree/mac/PerlSupport/Makefile
deleted file mode 100644
index f7808dc3c..000000000
--- a/Tools/DumpRenderTree/mac/PerlSupport/Makefile
+++ /dev/null
@@ -1,82 +0,0 @@
-# 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.
-
-CONFIGURATION_BUILD_DIR ?= .
-OUTPUT_DIR=$(CONFIGURATION_BUILD_DIR)
-
-WRAPPER_DIR=$(OUTPUT_DIR)/DerivedSources/DumpRenderTree
-WRAPPER=$(WRAPPER_DIR)/DumpRenderTreeSupport_wrap.c
-PERL_MODULE=$(OUTPUT_DIR)/DumpRenderTreeSupport.pm
-DYLIB=$(OUTPUT_DIR)/DumpRenderTreeSupport.dylib
-DUMPRENDERTREE=$(OUTPUT_DIR)/DumpRenderTree
-PERL=/usr/bin/perl
-
-OSX_VERSION = $(shell sw_vers -productVersion | cut -d. -f 2)
-ifeq "$(OSX_VERSION)" "5"
-GENERATE_WRAPPER = YES
-endif
-ifeq "$(OSX_VERSION)" "6"
-GENERATE_WRAPPER = NO
-endif
-
-ifeq "$(GENERATE_WRAPPER)" "YES"
-
-SWIG=/usr/bin/swig
-
-all: $(DYLIB) $(PERL_MODULE)
-
-$(WRAPPER) $(PERL_MODULE): DumpRenderTreeSupport.c $(DUMPRENDERTREE)
- mkdir -p $(WRAPPER_DIR)
- $(SWIG) -o $(WRAPPER) -outdir $(OUTPUT_DIR) -perl -module DumpRenderTreeSupport $<
-
-
-else
-
-
-all: $(DYLIB) $(PERL_MODULE)
-
-$(WRAPPER): DumpRenderTreeSupport_wrapPregenerated.c $(DUMPRENDERTREE)
- mkdir -p $(WRAPPER_DIR)
- cp DumpRenderTreeSupport_wrapPregenerated.c $(WRAPPER)
-
-$(PERL_MODULE): DumpRenderTreeSupportPregenerated.pm $(DUMPRENDERTREE)
- cp DumpRenderTreeSupportPregenerated.pm $(PERL_MODULE)
-
-
-endif
-
-$(DYLIB): DumpRenderTreeSupport.c $(WRAPPER)
- gcc -g -dynamiclib -o $(DYLIB) `$(PERL) -MExtUtils::Embed -eperl_inc` `$(PERL) -MExtUtils::Embed -e'my $$opts = ldopts(0); $$opts =~ s/-arch [^ ]*( |$$)//g; print $$opts, " -arch ", join(" -arch ", split(" ",$$ENV{ARCHS}))'` $^
-
-clean:
- rm -f $(WRAPPER) $(PERL_MODULE) $(DYLIB)
-
-installhdrs installsrc:
-
-INSTALL_LOCATION=$(DSTROOT)/$(SYSTEM_LIBRARY_DIR)/Frameworks/$(WEBKIT_FRAMEWORK_RESOURCES_PATH)
-
-install: all
- mkdir -p $(INSTALL_LOCATION)
- cp $(DYLIB) $(INSTALL_LOCATION)/DumpRenderTreeSupport.dylib
- cp $(PERL_MODULE) $(INSTALL_LOCATION)/DumpRenderTreeSupport.pm
-
diff --git a/Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm b/Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm
deleted file mode 100644
index c2d43dabf..000000000
--- a/Tools/DumpRenderTree/mac/PixelDumpSupportMac.mm
+++ /dev/null
@@ -1,196 +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 "PixelDumpSupport.h"
-#include "PixelDumpSupportCG.h"
-
-#include "DumpRenderTree.h"
-#include "TestRunner.h"
-#include <CoreGraphics/CGBitmapContext.h>
-#include <wtf/Assertions.h>
-#include <wtf/RefPtr.h>
-
-#import <WebKit/WebCoreStatistics.h>
-#import <WebKit/WebDocumentPrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebKit.h>
-#import <WebKit/WebViewPrivate.h>
-
-static PassRefPtr<BitmapContext> createBitmapContext(size_t pixelsWide, size_t pixelsHigh, size_t& rowBytes, void*& buffer)
-{
- rowBytes = (4 * pixelsWide + 63) & ~63; // Use a multiple of 64 bytes to improve CG performance
-
- buffer = calloc(pixelsHigh, rowBytes);
- if (!buffer)
- return 0;
-
- // Creating this bitmap in the device color space prevents any color conversion when the image of the web view is drawn into it.
- RetainPtr<CGColorSpaceRef> colorSpace = adoptCF(CGColorSpaceCreateDeviceRGB());
- CGContextRef context = CGBitmapContextCreate(buffer, pixelsWide, pixelsHigh, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host); // Use ARGB8 on PPC or BGRA8 on X86 to improve CG performance
- if (!context) {
- free(buffer);
- return 0;
- }
-
- return BitmapContext::createByAdoptingBitmapAndContext(buffer, context);
-}
-
-static void paintRepaintRectOverlay(WebView* webView, CGContextRef context)
-{
- CGRect viewRect = NSRectToCGRect([webView bounds]);
-
- CGContextSaveGState(context);
-
- // Using a transparency layer is easier than futzing with clipping.
- CGContextBeginTransparencyLayer(context, 0);
-
- // Flip the context.
- CGContextScaleCTM(context, 1, -1);
- CGContextTranslateCTM(context, 0, -viewRect.size.height);
-
- CGContextSetRGBFillColor(context, 0, 0, 0, static_cast<CGFloat>(0.66));
- CGContextFillRect(context, viewRect);
-
- NSArray *repaintRects = [webView trackedRepaintRects];
- if (repaintRects) {
-
- for (NSValue *value in repaintRects) {
- CGRect currRect = NSRectToCGRect([value rectValue]);
- CGContextClearRect(context, currRect);
- }
- }
-
- CGContextEndTransparencyLayer(context);
- CGContextRestoreGState(context);
-}
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(bool onscreen, bool incrementalRepaint, bool sweepHorizontally, bool drawSelectionRect)
-{
- WebView* view = [mainFrame webView];
-
- // If the WebHTMLView uses accelerated compositing, we need for force the on-screen capture path
- // and also force Core Animation to start its animations with -display since the DRT window has autodisplay disabled.
- if ([view _isUsingAcceleratedCompositing])
- onscreen = YES;
-
- float deviceScaleFactor = [view _backingScaleFactor];
- NSSize webViewSize = [view frame].size;
- size_t pixelsWide = static_cast<size_t>(webViewSize.width * deviceScaleFactor);
- size_t pixelsHigh = static_cast<size_t>(webViewSize.height * deviceScaleFactor);
- size_t rowBytes = 0;
- void* buffer = 0;
- RefPtr<BitmapContext> bitmapContext = createBitmapContext(pixelsWide, pixelsHigh, rowBytes, buffer);
- if (!bitmapContext)
- return 0;
- CGContextRef context = bitmapContext->cgContext();
- CGContextScaleCTM(context, deviceScaleFactor, deviceScaleFactor);
-
- 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 (deviceScaleFactor != 1) {
- // Call displayRectIgnoringOpacity for HiDPI tests since it ensures we paint directly into the context
- // that we have appropriately sized and scaled.
- [view displayRectIgnoringOpacity:[view bounds] inContext:nsContext];
- if ([view isTrackingRepaints])
- paintRepaintRectOverlay(view, context);
- } else if (onscreen) {
- // displayIfNeeded does not update the CA layers if the layer-hosting view was not marked as needing display, so
- // we're at the mercy of CA's display-link callback to update layers in time. So we need to force a display of the view
- // to get AppKit to update the CA layers synchronously.
- // FIXME: this will break repaint testing if we have compositing in repaint tests
- // (displayWebView() painted gray over the webview, but we'll be making everything repaint again).
- [view display];
-
- // 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);
-
- if ([view isTrackingRepaints])
- paintRepaintRectOverlay(view, context);
- } else {
- // Make sure the view has been painted.
- [view displayIfNeeded];
-
- // 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 lockFocus];
- NSBitmapImageRep *imageRep = [[[NSBitmapImageRep alloc] initWithFocusedViewRect:[view frame]] autorelease];
- [view unlockFocus];
-
- RetainPtr<NSGraphicsContext> savedContext = [NSGraphicsContext currentContext];
- [NSGraphicsContext setCurrentContext:nsContext];
- [imageRep draw];
-
- if ([view isTrackingRepaints])
- paintRepaintRectOverlay(view, context);
-
- [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();
-}
-
-PassRefPtr<BitmapContext> createPagedBitmapContext()
-{
- int pageWidthInPixels = TestRunner::viewWidth;
- int pageHeightInPixels = TestRunner::viewHeight;
- int numberOfPages = [mainFrame numberOfPagesWithPageWidth:pageWidthInPixels pageHeight:pageHeightInPixels];
- size_t rowBytes = 0;
- void* buffer = 0;
-
- RefPtr<BitmapContext> bitmapContext = createBitmapContext(pageWidthInPixels, numberOfPages * (pageHeightInPixels + 1) - 1, rowBytes, buffer);
- [mainFrame printToCGContext:bitmapContext->cgContext() pageWidth:pageWidthInPixels pageHeight:pageHeightInPixels];
- return bitmapContext.release();
-}
diff --git a/Tools/DumpRenderTree/mac/PolicyDelegate.h b/Tools/DumpRenderTree/mac/PolicyDelegate.h
deleted file mode 100644
index c1a7e6f25..000000000
--- a/Tools/DumpRenderTree/mac/PolicyDelegate.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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>
-
-class TestRunner;
-
-@interface PolicyDelegate : NSObject {
- BOOL permissiveDelegate;
- TestRunner* controllerToNotifyDone;
-}
-
-- (void)setPermissive:(BOOL)permissive;
-- (void)setControllerToNotifyDone:(TestRunner*)controller;
-
-@end
diff --git a/Tools/DumpRenderTree/mac/PolicyDelegate.mm b/Tools/DumpRenderTree/mac/PolicyDelegate.mm
deleted file mode 100644
index 6a0eeb9ec..000000000
--- a/Tools/DumpRenderTree/mac/PolicyDelegate.mm
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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 "config.h"
-#import "PolicyDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "TestRunner.h"
-#import <WebKit/DOMElement.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebPolicyDelegate.h>
-#import <WebKit/WebView.h>
-
-@interface NSURL (DRTExtras)
-- (NSString *)_drt_descriptionSuitableForTestResult;
-@end
-
-@interface DOMNode (dumpPath)
-- (NSString *)dumpPath;
-@end
-
-@implementation PolicyDelegate
-
-- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation
- request:(NSURLRequest *)request
- frame:(WebFrame *)frame
- decisionListener:(id<WebPolicyDecisionListener>)listener
-{
- WebNavigationType navType = (WebNavigationType)[[actionInformation objectForKey:WebActionNavigationTypeKey] intValue];
-
- const char* typeDescription;
- switch (navType) {
- case WebNavigationTypeLinkClicked:
- typeDescription = "link clicked";
- break;
- case WebNavigationTypeFormSubmitted:
- typeDescription = "form submitted";
- break;
- case WebNavigationTypeBackForward:
- typeDescription = "back/forward";
- break;
- case WebNavigationTypeReload:
- typeDescription = "reload";
- break;
- case WebNavigationTypeFormResubmitted:
- typeDescription = "form resubmitted";
- break;
- case WebNavigationTypeOther:
- typeDescription = "other";
- break;
- default:
- typeDescription = "illegal value";
- }
-
- NSString *message = [NSString stringWithFormat:@"Policy delegate: attempt to load %@ with navigation type '%s'", [[request URL] _drt_descriptionSuitableForTestResult], typeDescription];
-
- if (DOMElement *originatingNode = [[actionInformation objectForKey:WebActionElementKey] objectForKey:WebElementDOMNodeKey])
- message = [message stringByAppendingFormat:@" originating from %@", [originatingNode dumpPath]];
-
- printf("%s\n", [message UTF8String]);
-
- if (permissiveDelegate)
- [listener use];
- else
- [listener ignore];
-
- if (controllerToNotifyDone) {
- controllerToNotifyDone->notifyDone();
- controllerToNotifyDone = 0;
- }
-}
-
-- (void)webView:(WebView *)webView unableToImplementPolicyWithError:(NSError *)error frame:(WebFrame *)frame
-{
- NSString *message = [NSString stringWithFormat:@"Policy delegate: unable to implement policy with error domain '%@', error code %ld, in frame '%@'", [error domain], static_cast<long>([error code]), [frame name]];
- printf("%s\n", [message UTF8String]);
-}
-
-static NSString *dispositionTypeFromContentDispositionHeader(NSString *header)
-{
- NSMutableString *result = [[[[header componentsSeparatedByString:@";"] objectAtIndex:0] mutableCopy] autorelease];
- if (result)
- CFStringTrimWhitespace((CFMutableStringRef)result);
- return result;
-}
-
-- (void)webView:(WebView *)c decidePolicyForMIMEType:(NSString *)type
- request:(NSURLRequest *)request
- frame:(WebFrame *)frame
- decisionListener:(id<WebPolicyDecisionListener>)listener
-{
- NSHTTPURLResponse *HTTPResponse = (NSHTTPURLResponse *)[[frame provisionalDataSource] response];
- if (![HTTPResponse isKindOfClass:[NSHTTPURLResponse class]])
- HTTPResponse = nil;
-
- NSString *dispositionType = dispositionTypeFromContentDispositionHeader([[HTTPResponse allHeaderFields] objectForKey:@"Content-Disposition"]);
- if (dispositionType && [dispositionType compare:@"attachment" options:NSCaseInsensitiveSearch] == NSOrderedSame) {
- printf("Policy delegate: resource is an attachment, suggested file name '%s'\n", [[HTTPResponse suggestedFilename] UTF8String]);
- [listener ignore];
- return;
- }
-
- [listener use];
-}
-
-- (void)setPermissive:(BOOL)permissive
-{
- permissiveDelegate = permissive;
-}
-
-- (void)setControllerToNotifyDone:(TestRunner*)controller
-{
- controllerToNotifyDone = controller;
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/ResourceLoadDelegate.h b/Tools/DumpRenderTree/mac/ResourceLoadDelegate.h
deleted file mode 100644
index 0c4618e93..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm b/Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm
deleted file mode 100644
index 5632aa285..000000000
--- a/Tools/DumpRenderTree/mac/ResourceLoadDelegate.mm
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2007, 2011 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 "config.h"
-#import "ResourceLoadDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "TestRunner.h"
-#import <WebKit/WebKit.h>
-#import <WebKit/WebTypesInternal.h>
-#import <WebKit/WebDataSourcePrivate.h>
-#import <wtf/Assertions.h>
-
-using namespace std;
-
-@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 %ld", [self domain], static_cast<long>([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];
- basePath = [basePath stringByAppendingString:@"/"];
-
- if ([[self path] hasPrefix:basePath])
- return [[self path] substringFromIndex:[basePath length]];
- return [self absoluteString];
-}
-
-@end
-
-@implementation NSURLResponse (DRTExtras)
-
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- int statusCode = 0;
- if ([self isKindOfClass:[NSHTTPURLResponse class]])
- statusCode = [(NSHTTPURLResponse *)self statusCode];
- return [NSString stringWithFormat:@"<NSURLResponse %@, http status code %i>", [[self URL] _drt_descriptionSuitableForTestResult], statusCode];
-}
-
-@end
-
-@implementation NSURLRequest (DRTExtras)
-
-- (NSString *)_drt_descriptionSuitableForTestResult
-{
- NSString *httpMethod = [self HTTPMethod];
- if (!httpMethod)
- httpMethod = @"(none)";
- return [NSString stringWithFormat:@"<NSURLRequest URL %@, main document URL %@, http method %@>", [[self URL] _drt_descriptionSuitableForTestResult], [[self mainDocumentURL] _drt_descriptionSuitableForTestResult], httpMethod];
-}
-
-@end
-
-@implementation ResourceLoadDelegate
-
-- (id)webView: (WebView *)wv identifierForInitialRequest: (NSURLRequest *)request fromDataSource: (WebDataSource *)dataSource
-{
- ASSERT([[dataSource webFrame] dataSource] || [[dataSource webFrame] provisionalDataSource]);
-
- if (!done)
- return [[request URL] _drt_descriptionSuitableForTestResult];
-
- return @"<unknown>";
-}
-
-BOOL isLocalhost(NSString *host)
-{
- // FIXME: Support IPv6 loopbacks.
- return NSOrderedSame == [host compare:@"127.0.0.1"] || NSOrderedSame == [host caseInsensitiveCompare:@"localhost"];
-}
-
-BOOL hostIsUsedBySomeTestsToGenerateError(NSString *host)
-{
- return NSOrderedSame == [host compare:@"255.255.255.255"];
-}
-
--(NSURLRequest *)webView: (WebView *)wv resource:identifier willSendRequest: (NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willSendRequest %@ redirectResponse %@", identifier, [request _drt_descriptionSuitableForTestResult],
- [redirectResponse _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-
- if (!done && !gTestRunner->deferMainResourceDataLoad()) {
- [dataSource _setDeferMainResourceDataLoad:false];
- }
-
- if (!done && gTestRunner->willSendRequestReturnsNull())
- return nil;
-
- if (!done && gTestRunner->willSendRequestReturnsNullOnRedirect() && redirectResponse) {
- printf("Returning null for this redirect\n");
- return nil;
- }
-
- NSURL *url = [request URL];
- NSString *host = [url host];
- if (host && (NSOrderedSame == [[url scheme] caseInsensitiveCompare:@"http"] || NSOrderedSame == [[url scheme] caseInsensitiveCompare:@"https"])) {
- NSString *testPathOrURL = [NSString stringWithUTF8String:gTestRunner->testPathOrURL().c_str()];
- NSString *lowercaseTestPathOrURL = [testPathOrURL lowercaseString];
- NSString *testHost = 0;
- if ([lowercaseTestPathOrURL hasPrefix:@"http:"] || [lowercaseTestPathOrURL hasPrefix:@"https:"])
- testHost = [[NSURL URLWithString:testPathOrURL] host];
- if (!isLocalhost(host) && !hostIsUsedBySomeTestsToGenerateError(host) && (!testHost || isLocalhost(testHost))) {
- printf("Blocked access to external URL %s\n", [[url absoluteString] cStringUsingEncoding:NSUTF8StringEncoding]);
- return nil;
- }
- }
-
- if (disallowedURLs && CFSetContainsValue(disallowedURLs, url))
- return nil;
-
- NSMutableURLRequest *newRequest = [request mutableCopy];
- const set<string>& clearHeaders = gTestRunner->willSendRequestClearHeaders();
- for (set<string>::const_iterator header = clearHeaders.begin(); header != clearHeaders.end(); ++header) {
- NSString *nsHeader = [[NSString alloc] initWithUTF8String:header->c_str()];
- [newRequest setValue:nil forHTTPHeaderField:nsHeader];
- [nsHeader release];
- }
- const std::string& destination = gTestRunner->redirectionDestinationForURL([[url absoluteString] UTF8String]);
- if (destination.length())
- [newRequest setURL:[NSURL URLWithString:[NSString stringWithUTF8String:destination.data()]]];
-
- return [newRequest autorelease];
-}
-
-- (void)webView:(WebView *)wv resource:(id)identifier didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge fromDataSource:(WebDataSource *)dataSource
-{
- if (!gTestRunner->handlesAuthenticationChallenges()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveAuthenticationChallenge - Simulating cancelled authentication sheet", identifier];
- printf("%s\n", [string UTF8String]);
-
- [[challenge sender] continueWithoutCredentialForAuthenticationChallenge:challenge];
- return;
- }
-
- const char* user = gTestRunner->authenticationUsername().c_str();
- NSString *nsUser = [NSString stringWithFormat:@"%s", user ? user : ""];
-
- const char* password = gTestRunner->authenticationPassword().c_str();
- NSString *nsPassword = [NSString stringWithFormat:@"%s", password ? password : ""];
-
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveAuthenticationChallenge - Responding with %@:%@", identifier, nsUser, nsPassword];
- printf("%s\n", [string UTF8String]);
-
- [[challenge sender] useCredential:[NSURLCredential credentialWithUser:nsUser password:nsPassword persistence:NSURLCredentialPersistenceForSession]
- forAuthenticationChallenge:challenge];
-}
-
-- (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 && gTestRunner->dumpResourceLoadCallbacks()) {
- NSString *string = [NSString stringWithFormat:@"%@ - didReceiveResponse %@", identifier, [response _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
- if (!done && gTestRunner->dumpResourceResponseMIMETypes())
- printf("%s has MIME type %s\n", [[[[response URL] relativePath] lastPathComponent] UTF8String], [[response MIMEType] UTF8String]);
-}
-
--(void)webView: (WebView *)wv resource:identifier didReceiveContentLength: (NSInteger)length fromDataSource:(WebDataSource *)dataSource
-{
-}
-
--(void)webView: (WebView *)wv resource:identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
-{
- if (!done && gTestRunner->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 && gTestRunner->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 && gTestRunner->dumpWillCacheResponse()) {
- NSString *string = [NSString stringWithFormat:@"%@ - willCacheResponse: called", identifier];
- printf("%s\n", [string UTF8String]);
- }
- return response;
-}
-
--(BOOL)webView: (WebView*)webView shouldPaintBrokenImageForURL:(NSURL*)imageURL
-{
- // Only log the message when shouldPaintBrokenImage() returns NO; this avoids changing results of layout tests with failed
- // images, e.g., security/block-test-no-port.html.
- if (!done && gTestRunner->dumpResourceLoadCallbacks() && !gTestRunner->shouldPaintBrokenImage()) {
- NSString *string = [NSString stringWithFormat:@"%@ - shouldPaintBrokenImage: NO", [imageURL _drt_descriptionSuitableForTestResult]];
- printf("%s\n", [string UTF8String]);
- }
-
- return gTestRunner->shouldPaintBrokenImage();
-}
-@end
diff --git a/Tools/DumpRenderTree/mac/TestRunnerMac.mm b/Tools/DumpRenderTree/mac/TestRunnerMac.mm
deleted file mode 100644
index a7d07de46..000000000
--- a/Tools/DumpRenderTree/mac/TestRunnerMac.mm
+++ /dev/null
@@ -1,1119 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2012 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 "config.h"
-#import "DumpRenderTree.h"
-#import "TestRunner.h"
-
-#import "DefaultPolicyDelegate.h"
-#import "EditingDelegate.h"
-#import "MockGeolocationProvider.h"
-#import "MockWebNotificationProvider.h"
-#import "PolicyDelegate.h"
-#import "StorageTrackerDelegate.h"
-#import "UIDelegate.h"
-#import "WorkQueue.h"
-#import "WorkQueueItem.h"
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebCore/GeolocationPosition.h>
-#import <WebKit/DOMDocument.h>
-#import <WebKit/DOMElement.h>
-#import <WebKit/DOMHTMLInputElementPrivate.h>
-#import <WebKit/WebApplicationCache.h>
-#import <WebKit/WebBackForwardList.h>
-#import <WebKit/WebCoreStatistics.h>
-#import <WebKit/WebDOMOperationsPrivate.h>
-#import <WebKit/WebDataSource.h>
-#import <WebKit/WebDatabaseManagerPrivate.h>
-#import <WebKit/WebDeviceOrientation.h>
-#import <WebKit/WebDeviceOrientationProviderMock.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebFrameViewPrivate.h>
-#import <WebKit/WebGeolocationPosition.h>
-#import <WebKit/WebHTMLRepresentation.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebHistory.h>
-#import <WebKit/WebHistoryPrivate.h>
-#import <WebKit/WebIconDatabasePrivate.h>
-#import <WebKit/WebInspectorPrivate.h>
-#import <WebKit/WebNSURLExtras.h>
-#import <WebKit/WebKitErrors.h>
-#import <WebKit/WebPreferences.h>
-#import <WebKit/WebPreferencesPrivate.h>
-#import <WebKit/WebQuotaManager.h>
-#import <WebKit/WebScriptWorld.h>
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <WebKit/WebStorageManagerPrivate.h>
-#import <WebKit/WebTypesInternal.h>
-#import <WebKit/WebView.h>
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/CurrentTime.h>
-#import <wtf/HashMap.h>
-#import <wtf/RetainPtr.h>
-
-@interface CommandValidationTarget : NSObject <NSValidatedUserInterfaceItem>
-{
- SEL _action;
-}
-- (id)initWithAction:(SEL)action;
-@end
-
-@implementation CommandValidationTarget
-
-- (id)initWithAction:(SEL)action
-{
- self = [super init];
- if (!self)
- return nil;
-
- _action = action;
- return self;
-}
-
-- (SEL)action
-{
- return _action;
-}
-
-- (NSInteger)tag
-{
- return 0;
-}
-
-@end
-
-@interface WebGeolocationPosition (Internal)
-- (id)initWithGeolocationPosition:(PassRefPtr<WebCore::GeolocationPosition>)coreGeolocationPosition;
-@end
-
-TestRunner::~TestRunner()
-{
-}
-
-void TestRunner::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]);
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
- return [[mainFrame webView] shouldClose];
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
- [WebApplicationCache deleteAllApplicationCaches];
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef url)
-{
- RetainPtr<CFStringRef> urlCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, url));
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
- long long usage = [WebApplicationCache diskUsageForOrigin:origin];
- [origin release];
- return usage;
-}
-
-void TestRunner::syncLocalStorage()
-{
- [[WebStorageManager sharedWebStorageManager] syncLocalStorage];
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef url)
-{
- RetainPtr<CFStringRef> urlCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, url));
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
- long long usage = [[WebStorageManager sharedWebStorageManager] diskUsageForOrigin:origin];
- [origin release];
- return usage;
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned number)
-{
- [storageDelegate logNotifications:number controller:this];
-}
-
-void TestRunner::clearApplicationCacheForOrigin(JSStringRef url)
-{
- RetainPtr<CFStringRef> urlCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, url));
-
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
- [WebApplicationCache deleteCacheForOrigin:origin];
- [origin release];
-}
-
-JSValueRef originsArrayToJS(JSContextRef context, NSArray *origins)
-{
- NSUInteger count = [origins count];
-
- JSValueRef jsOriginsArray[count];
- for (NSUInteger i = 0; i < count; i++) {
- NSString *origin = [[origins objectAtIndex:i] databaseIdentifier];
- JSRetainPtr<JSStringRef> originJS(Adopt, JSStringCreateWithCFString((CFStringRef)origin));
- jsOriginsArray[i] = JSValueMakeString(context, originJS.get());
- }
-
- return JSObjectMakeArray(context, count, jsOriginsArray, NULL);
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
- return originsArrayToJS(context, [WebApplicationCache originsWithCache]);
-}
-
-void TestRunner::clearAllDatabases()
-{
- [[WebDatabaseManager sharedWebDatabaseManager] deleteAllDatabases];
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
- [[WebStorageManager sharedWebStorageManager] deleteAllOrigins];
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double interval)
-{
- [WebStorageManager setStorageDatabaseIdleInterval:interval];
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
- [WebStorageManager closeIdleLocalStorageDatabases];
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- return originsArrayToJS(context, [[WebStorageManager sharedWebStorageManager] origins]);
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef URL)
-{
- RetainPtr<CFStringRef> urlCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, URL));
-
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:(NSString *)urlCF.get()]];
- [[WebStorageManager sharedWebStorageManager] deleteOrigin:origin];
- [origin release];
-}
-
-void TestRunner::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 TestRunner::copyDecodedHostName(JSStringRef name)
-{
- RetainPtr<CFStringRef> nameCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
- return JSStringCreateWithCFString((CFStringRef)[nameNS _web_decodeHostName]);
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef name)
-{
- RetainPtr<CFStringRef> nameCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
- return JSStringCreateWithCFString((CFStringRef)[nameNS _web_encodeHostName]);
-}
-
-void TestRunner::display()
-{
- displayWebView();
-}
-
-void TestRunner::keepWebHistory()
-{
- if (![WebHistory optionalSharedHistory]) {
- WebHistory *history = [[WebHistory alloc] init];
- [WebHistory setOptionalSharedHistory:history];
- [history release];
- }
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
- return [[[mainFrame webView] UIDelegate] numberOfPendingGeolocationPermissionRequests];
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
- return [[[WebHistory optionalSharedHistory] allItems] count];
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName() const
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("mac"));
- return platformName;
-}
-
-void TestRunner::notifyDone()
-{
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
-}
-
-static inline std::string stringFromJSString(JSStringRef jsString)
-{
- size_t maxBufferSize = JSStringGetMaximumUTF8CStringSize(jsString);
- char* utf8Buffer = new char[maxBufferSize];
- size_t bytesWrittenToUTF8Buffer = JSStringGetUTF8CString(jsString, utf8Buffer, maxBufferSize);
- std::string stdString(utf8Buffer, bytesWrittenToUTF8Buffer - 1); // bytesWrittenToUTF8Buffer includes a trailing \0 which std::string doesn't need.
- delete[] utf8Buffer;
- return stdString;
-}
-
-static inline size_t indexOfSeparatorAfterDirectoryName(const std::string& directoryName, const std::string& fullPath)
-{
- std::string searchKey = "/" + directoryName + "/";
- size_t indexOfSearchKeyStart = fullPath.rfind(searchKey);
- if (indexOfSearchKeyStart == std::string::npos) {
- ASSERT_NOT_REACHED();
- return 0;
- }
- // Callers expect the return value not to end in "/", so searchKey.length() - 1.
- return indexOfSearchKeyStart + searchKey.length() - 1;
-}
-
-static inline std::string resourceRootAbsolutePath(const std::string& testPathOrURL, const std::string& expectedRootName)
-{
- char* localResourceRootEnv = getenv("LOCAL_RESOURCE_ROOT");
- if (localResourceRootEnv)
- return std::string(localResourceRootEnv);
-
- // This fallback approach works for non-http tests and is useful
- // in the case when we're running DRT directly from the command line.
- return testPathOrURL.substr(0, indexOfSeparatorAfterDirectoryName(expectedRootName, testPathOrURL));
-}
-
-JSStringRef TestRunner::pathToLocalResource(JSContextRef context, JSStringRef localResourceJSString)
-{
- // The passed in path will be an absolute path to the resource starting
- // with "/tmp" or "/tmp/LayoutTests", optionally starting with the explicit file:// protocol.
- // /tmp maps to DUMPRENDERTREE_TEMP, and /tmp/LayoutTests maps to LOCAL_RESOURCE_ROOT.
- // FIXME: This code should work on all *nix platforms and can be moved into TestRunner.cpp.
- std::string expectedRootName;
- std::string absolutePathToResourceRoot;
- std::string localResourceString = stringFromJSString(localResourceJSString);
-
- if (localResourceString.find("LayoutTests") != std::string::npos) {
- expectedRootName = "LayoutTests";
- absolutePathToResourceRoot = resourceRootAbsolutePath(m_testPathOrURL, expectedRootName);
- } else if (localResourceString.find("tmp") != std::string::npos) {
- expectedRootName = "tmp";
- absolutePathToResourceRoot = getenv("DUMPRENDERTREE_TEMP");
- } else {
- ASSERT_NOT_REACHED(); // pathToLocalResource was passed a path it doesn't know how to map.
- }
- ASSERT(!absolutePathToResourceRoot.empty());
- size_t indexOfSeparatorAfterRootName = indexOfSeparatorAfterDirectoryName(expectedRootName, localResourceString);
- std::string absolutePathToLocalResource = absolutePathToResourceRoot + localResourceString.substr(indexOfSeparatorAfterRootName);
-
- // Note: It's important that we keep the file:// or http tests will get confused.
- if (localResourceString.find("file://") != std::string::npos) {
- ASSERT(absolutePathToLocalResource[0] == '/');
- absolutePathToLocalResource = std::string("file://") + absolutePathToLocalResource;
- }
- return JSStringCreateWithUTF8CString(absolutePathToLocalResource.c_str());
-}
-
-void TestRunner::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 TestRunner::setAcceptsEditing(bool newAcceptsEditing)
-{
- [(EditingDelegate *)[[mainFrame webView] editingDelegate] setAcceptsEditing:newAcceptsEditing];
-}
-
-void TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
- if (alwaysAcceptCookies == m_alwaysAcceptCookies)
- return;
-
- m_alwaysAcceptCookies = alwaysAcceptCookies;
- NSHTTPCookieAcceptPolicy cookieAcceptPolicy = alwaysAcceptCookies ? NSHTTPCookieAcceptPolicyAlways : NSHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain;
- [WebPreferences _setCurrentNetworkLoaderSessionCookieAcceptPolicy:cookieAcceptPolicy];
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long size)
-{
- [WebApplicationCache setMaximumSize:size];
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long quota)
-{
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:@"http://127.0.0.1:8000"]];
- [[origin applicationCacheQuotaManager] setQuota:quota];
- [origin release];
-}
-
-void TestRunner::setAuthorAndUserStylesEnabled(bool flag)
-{
- [[[mainFrame webView] preferences] setAuthorAndUserStylesEnabled:flag];
-}
-
-void TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
- if (!setDelegate) {
- [[mainFrame webView] setPolicyDelegate:defaultPolicyDelegate];
- return;
- }
-
- [policyDelegate setPermissive:permissive];
- [[mainFrame webView] setPolicyDelegate:policyDelegate];
-}
-
-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
- WebSecurityOrigin *origin = [[WebSecurityOrigin alloc] initWithURL:[NSURL URLWithString:@"file:///"]];
- [[origin databaseQuotaManager] setQuota:quota];
- [origin release];
-}
-
-void TestRunner::goBack()
-{
- [[mainFrame webView] goBack];
-}
-
-void TestRunner::setDefersLoading(bool defers)
-{
- [[mainFrame webView] setDefersCallbacks:defers];
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
- RetainPtr<CFStringRef> schemeCFString = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, scheme));
- [WebView _setDomainRelaxationForbidden:forbidden forURLScheme:(NSString *)schemeCFString.get()];
-}
-
-void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
-{
- // DumpRenderTree configured the WebView to use WebDeviceOrientationProviderMock.
- id<WebDeviceOrientationProvider> provider = [[mainFrame webView] _deviceOrientationProvider];
- WebDeviceOrientationProviderMock *mockProvider = static_cast<WebDeviceOrientationProviderMock*>(provider);
- WebDeviceOrientation *orientation = [[WebDeviceOrientation alloc] initWithCanProvideAlpha:canProvideAlpha alpha:alpha canProvideBeta:canProvideBeta beta:beta canProvideGamma:canProvideGamma gamma:gamma];
- [mockProvider setOrientation:orientation];
- [orientation release];
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
-{
- WebGeolocationPosition *position = nil;
- if (!providesAltitude && !providesAltitudeAccuracy && !providesHeading && !providesSpeed) {
- // Test the exposed API.
- position = [[WebGeolocationPosition alloc] initWithTimestamp:currentTime() latitude:latitude longitude:longitude accuracy:accuracy];
- } else {
- RefPtr<WebCore::GeolocationPosition> coreGeolocationPosition = WebCore::GeolocationPosition::create(currentTime(), latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
- position = [[WebGeolocationPosition alloc] initWithGeolocationPosition:(coreGeolocationPosition.release())];
- }
- [[MockGeolocationProvider shared] setPosition:position];
- [position release];
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
- RetainPtr<CFStringRef> messageCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, message));
- NSString *messageNS = (NSString *)messageCF.get();
- [[MockGeolocationProvider shared] setPositionUnavailableErrorWithMessage:messageNS];
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
- setGeolocationPermissionCommon(allow);
- [[[mainFrame webView] UIDelegate] didSetMockGeolocationPermission];
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool flag)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::startSpeechInput(JSContextRef inputElement)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setIconDatabaseEnabled(bool iconDatabaseEnabled)
-{
- // FIXME: Workaround <rdar://problem/6480108>
- static WebIconDatabase *sharedWebIconDatabase = NULL;
- if (!sharedWebIconDatabase) {
- if (!iconDatabaseEnabled)
- return;
- sharedWebIconDatabase = [WebIconDatabase sharedIconDatabase];
- if ([sharedWebIconDatabase isEnabled] == iconDatabaseEnabled)
- return;
- }
- [sharedWebIconDatabase setEnabled:iconDatabaseEnabled];
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool flag)
-{
- NSView *documentView = [[mainFrame frameView] documentView];
-
- NSResponder *firstResponder = flag ? documentView : nil;
- [[[mainFrame webView] window] makeFirstResponder:firstResponder];
-}
-
-void TestRunner::setPrivateBrowsingEnabled(bool privateBrowsingEnabled)
-{
- [[[mainFrame webView] preferences] setPrivateBrowsingEnabled:privateBrowsingEnabled];
-}
-
-void TestRunner::setXSSAuditorEnabled(bool enabled)
-{
- [[[mainFrame webView] preferences] setXSSAuditorEnabled:enabled];
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool enabled)
-{
- [[[mainFrame webView] preferences] setSpatialNavigationEnabled:enabled];
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool enabled)
-{
- [[[mainFrame webView] preferences] setAllowUniversalAccessFromFileURLs:enabled];
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool enabled)
-{
- [[[mainFrame webView] preferences] setAllowFileAccessFromFileURLs:enabled];
-}
-
-void TestRunner::setPopupBlockingEnabled(bool popupBlockingEnabled)
-{
- [[[mainFrame webView] preferences] setJavaScriptCanOpenWindowsAutomatically:!popupBlockingEnabled];
-}
-
-void TestRunner::setPluginsEnabled(bool pluginsEnabled)
-{
- [[[mainFrame webView] preferences] setPlugInsEnabled:pluginsEnabled];
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool enabled)
-{
- [[[mainFrame webView] preferences] setJavaScriptCanAccessClipboard:enabled];
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool enabled)
-{
- [[mainFrame webView] setAutomaticLinkDetectionEnabled:enabled];
-}
-
-void TestRunner::setTabKeyCyclesThroughElements(bool cycles)
-{
- [[mainFrame webView] setTabKeyCyclesThroughElements:cycles];
-}
-
-void TestRunner::setUseDashboardCompatibilityMode(bool flag)
-{
- [[mainFrame webView] _setDashboardBehavior:WebDashboardBehaviorUseBackwardCompatibilityMode to:flag];
-}
-
-void TestRunner::setUserStyleSheetEnabled(bool flag)
-{
- [[WebPreferences standardPreferences] setUserStyleSheetEnabled:flag];
-}
-
-void TestRunner::setUserStyleSheetLocation(JSStringRef path)
-{
- RetainPtr<CFStringRef> pathCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, path));
- NSURL *url = [NSURL URLWithString:(NSString *)pathCF.get()];
- [[WebPreferences standardPreferences] setUserStyleSheetLocation:url];
-}
-
-void TestRunner::setValueForUser(JSContextRef context, JSValueRef nodeObject, JSStringRef value)
-{
- DOMElement *element = [DOMElement _DOMElementFromJSContext:context value:nodeObject];
- if (!element || ![element isKindOfClass:[DOMHTMLInputElement class]])
- return;
-
- RetainPtr<CFStringRef> valueCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, value));
- [(DOMHTMLInputElement *)element setValueForUser:(NSString *)valueCF.get()];
-}
-
-void TestRunner::setViewModeMediaFeature(JSStringRef mode)
-{
- // FIXME: implement
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
- [[mainFrame webView] _dispatchPendingLoadRequests];
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
- RetainPtr<CFStringRef> keyCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, key));
- NSString *keyNS = (NSString *)keyCF.get();
-
- RetainPtr<CFStringRef> valueCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, value));
- NSString *valueNS = (NSString *)valueCF.get();
-
- [[WebPreferences standardPreferences] _setPreferenceForTestWithValue:valueNS forKey:keyNS];
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
- [WebHistory _removeAllVisitedLinks];
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- RetainPtr<CFStringRef> urlString = adoptCF(JSStringCopyCFString(0, jsURL));
- ::setPersistentUserStyleSheetLocation(urlString.get());
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
- ::setPersistentUserStyleSheetLocation(0);
-}
-
-void TestRunner::setWindowIsKey(bool windowIsKey)
-{
- m_windowIsKey = windowIsKey;
- [[mainFrame webView] _updateActiveState];
-}
-
-static const CFTimeInterval waitToDumpWatchdogInterval = 30.0;
-
-static void waitUntilDoneWatchdogFired(CFRunLoopTimerRef timer, void* info)
-{
- gTestRunner->waitToDumpWatchdogTimerFired();
-}
-
-void TestRunner::setWaitToDump(bool waitUntilDone)
-{
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && shouldSetWaitToDumpWatchdog())
- setWaitToDumpWatchdog(CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + waitToDumpWatchdogInterval, 0, 0, 0, waitUntilDoneWatchdogFired, NULL));
-}
-
-int TestRunner::windowCount()
-{
- return CFArrayGetCount(openWindowsRef);
-}
-
-void TestRunner::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];
-}
-
-bool TestRunner::findString(JSContextRef context, JSStringRef target, JSObjectRef optionsArray)
-{
- WebFindOptions options = 0;
-
- JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length"));
- JSValueRef lengthValue = JSObjectGetProperty(context, optionsArray, lengthPropertyName.get(), 0);
- if (!JSValueIsNumber(context, lengthValue))
- return false;
-
- RetainPtr<CFStringRef> targetCFString = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, target));
-
- size_t length = static_cast<size_t>(JSValueToNumber(context, lengthValue, 0));
- for (size_t i = 0; i < length; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, optionsArray, i, 0);
- if (!JSValueIsString(context, value))
- continue;
-
- JSRetainPtr<JSStringRef> optionName(Adopt, JSValueToStringCopy(context, value, 0));
-
- if (JSStringIsEqualToUTF8CString(optionName.get(), "CaseInsensitive"))
- options |= WebFindOptionsCaseInsensitive;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "AtWordStarts"))
- options |= WebFindOptionsAtWordStarts;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "TreatMedialCapitalAsWordStart"))
- options |= WebFindOptionsTreatMedialCapitalAsWordStart;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "Backwards"))
- options |= WebFindOptionsBackwards;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "WrapAround"))
- options |= WebFindOptionsWrapAround;
- else if (JSStringIsEqualToUTF8CString(optionName.get(), "StartInSelection"))
- options |= WebFindOptionsStartInSelection;
- }
-
- return [[mainFrame webView] findString:(NSString *)targetCFString.get() options:options];
-}
-
-void TestRunner::setCacheModel(int cacheModel)
-{
- [[WebPreferences standardPreferences] setCacheModel:cacheModel];
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef name)
-{
- RetainPtr<CFStringRef> nameCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, name));
- NSString *nameNS = (NSString *)nameCF.get();
-
- // Accept command strings with capital letters for first letter without trailing colon.
- if (![nameNS hasSuffix:@":"] && [nameNS length]) {
- nameNS = [[[[nameNS substringToIndex:1] lowercaseString]
- stringByAppendingString:[nameNS substringFromIndex:1]]
- stringByAppendingString:@":"];
- }
-
- SEL selector = NSSelectorFromString(nameNS);
- RetainPtr<CommandValidationTarget> target = adoptNS([[CommandValidationTarget alloc] initWithAction:selector]);
- id validator = [NSApp targetForAction:selector to:[mainFrame webView] from:target.get()];
- if (!validator)
- return false;
- if (![validator respondsToSelector:selector])
- return false;
- if (![validator respondsToSelector:@selector(validateUserInterfaceItem:)])
- return true;
- return [validator validateUserInterfaceItem:target.get()];
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
- setWaitToDump(true);
- [policyDelegate setControllerToNotifyDone:this];
- [[mainFrame webView] setPolicyDelegate:policyDelegate];
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- RetainPtr<CFStringRef> sourceOriginCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, sourceOrigin));
- NSString *sourceOriginNS = (NSString *)sourceOriginCF.get();
- RetainPtr<CFStringRef> protocolCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, destinationProtocol));
- NSString *destinationProtocolNS = (NSString *)protocolCF.get();
- RetainPtr<CFStringRef> hostCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, destinationHost));
- NSString *destinationHostNS = (NSString *)hostCF.get();
- [WebView _addOriginAccessWhitelistEntryWithSourceOrigin:sourceOriginNS destinationProtocol:destinationProtocolNS destinationHost:destinationHostNS allowDestinationSubdomains:allowDestinationSubdomains];
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- RetainPtr<CFStringRef> sourceOriginCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, sourceOrigin));
- NSString *sourceOriginNS = (NSString *)sourceOriginCF.get();
- RetainPtr<CFStringRef> protocolCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, destinationProtocol));
- NSString *destinationProtocolNS = (NSString *)protocolCF.get();
- RetainPtr<CFStringRef> hostCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, destinationHost));
- NSString *destinationHostNS = (NSString *)hostCF.get();
- [WebView _removeOriginAccessWhitelistEntryWithSourceOrigin:sourceOriginNS destinationProtocol:destinationProtocolNS destinationHost:destinationHostNS allowDestinationSubdomains:allowDestinationSubdomains];
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy)
-{
- // FIXME: implement
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
- RetainPtr<CFStringRef> sourceCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, source));
- NSString *sourceNS = (NSString *)sourceCF.get();
- [WebView _addUserScriptToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil injectionTime:(runAtStart ? WebInjectAtDocumentStart : WebInjectAtDocumentEnd) injectedFrames:(allFrames ? WebInjectInAllFrames : WebInjectInTopFrameOnly)];
-}
-
-void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
-{
- RetainPtr<CFStringRef> sourceCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, source));
- NSString *sourceNS = (NSString *)sourceCF.get();
- [WebView _addUserStyleSheetToGroup:@"org.webkit.DumpRenderTree" world:[WebScriptWorld world] source:sourceNS url:nil whitelist:nil blacklist:nil injectedFrames:(allFrames ? WebInjectInAllFrames : WebInjectInTopFrameOnly)];
-}
-
-void TestRunner::setDeveloperExtrasEnabled(bool enabled)
-{
- [[[mainFrame webView] preferences] setDeveloperExtrasEnabled:enabled];
-}
-
-void TestRunner::showWebInspector()
-{
- [[[mainFrame webView] inspector] show:nil];
-}
-
-void TestRunner::closeWebInspector()
-{
- [[[mainFrame webView] inspector] close:nil];
-}
-
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
-{
- RetainPtr<CFStringRef> scriptCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, script));
- NSString *scriptNS = (NSString *)scriptCF.get();
- [[[mainFrame webView] inspector] evaluateInFrontend:nil callId:callId script:scriptNS];
-}
-
-typedef HashMap<unsigned, RetainPtr<WebScriptWorld> > WorldMap;
-static WorldMap& worldMap()
-{
- static WorldMap& map = *new WorldMap;
- return map;
-}
-
-unsigned worldIDForWorld(WebScriptWorld *world)
-{
- WorldMap::const_iterator end = worldMap().end();
- for (WorldMap::const_iterator it = worldMap().begin(); it != end; ++it) {
- if (it->value == world)
- return it->key;
- }
-
- return 0;
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- RetainPtr<CFStringRef> scriptCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, script));
- NSString *scriptNS = (NSString *)scriptCF.get();
-
- // A worldID of 0 always corresponds to a new world. Any other worldID corresponds to a world
- // that is created once and cached forever.
- WebScriptWorld *world;
- if (!worldID)
- world = [WebScriptWorld world];
- else {
- RetainPtr<WebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->value;
- if (!worldSlot)
- worldSlot = adoptNS([[WebScriptWorld alloc] init]);
- world = worldSlot.get();
- }
-
- [mainFrame _stringByEvaluatingJavaScriptFromString:scriptNS withGlobalObject:globalObject inScriptWorld:world];
-}
-
-@interface APITestDelegate : NSObject
-{
- bool* m_condition;
-}
-@end
-
-@implementation APITestDelegate
-
-- (id)initWithCompletionCondition:(bool*)condition
-{
- [super init];
- ASSERT(condition);
- m_condition = condition;
- *m_condition = false;
- return self;
-}
-
-- (void)webView:(WebView *)sender didFailLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
-{
- printf("API Test load failed\n");
- *m_condition = true;
-}
-
-- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
-{
- printf("API Test load failed provisional\n");
- *m_condition = true;
-}
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- printf("API Test load succeeded\n");
- *m_condition = true;
-}
-
-@end
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<CFStringRef> utf8DataCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, utf8Data));
- RetainPtr<CFStringRef> baseURLCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, baseURL));
-
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:@"" groupName:@""];
-
- bool done = false;
- APITestDelegate *delegate = [[APITestDelegate alloc] initWithCompletionCondition:&done];
- [webView setFrameLoadDelegate:delegate];
-
- [[webView mainFrame] loadData:[(NSString *)utf8DataCF.get() dataUsingEncoding:NSUTF8StringEncoding] MIMEType:@"text/html" textEncodingName:@"utf-8" baseURL:[NSURL URLWithString:(NSString *)baseURLCF.get()]];
-
- while (!done) {
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
- [pool release];
- }
-
- [webView close];
- [webView release];
- [delegate release];
- [pool release];
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
- WebView *view = [mainFrame webView];
- [view goToBackForwardItem:[[view backForwardList] currentItem]];
-}
-
-void TestRunner::setWebViewEditable(bool editable)
-{
- WebView *view = [mainFrame webView];
- [view setEditable:editable];
-}
-
-static NSString *SynchronousLoaderRunLoopMode = @"DumpRenderTreeSynchronousLoaderRunLoopMode";
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED == 1060
-@protocol NSURLConnectionDelegate <NSObject>
-@end
-#endif
-
-@interface SynchronousLoader : NSObject <NSURLConnectionDelegate>
-{
- NSString *m_username;
- NSString *m_password;
- BOOL m_isDone;
-}
-+ (void)makeRequest:(NSURLRequest *)request withUsername:(NSString *)username password:(NSString *)password;
-@end
-
-@implementation SynchronousLoader : NSObject
-- (void)dealloc
-{
- [m_username release];
- [m_password release];
-
- [super dealloc];
-}
-
-- (BOOL)connectionShouldUseCredentialStorage:(NSURLConnection *)connection
-{
- return YES;
-}
-
-- (void)connection:(NSURLConnection *)connection didReceiveAuthenticationChallenge:(NSURLAuthenticationChallenge *)challenge
-{
- if ([challenge previousFailureCount] == 0) {
- RetainPtr<NSURLCredential> credential = adoptNS([[NSURLCredential alloc] initWithUser:m_username password:m_password persistence:NSURLCredentialPersistenceForSession]);
- [[challenge sender] useCredential:credential.get() forAuthenticationChallenge:challenge];
- return;
- }
- [[challenge sender] cancelAuthenticationChallenge:challenge];
-}
-
-- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error
-{
- printf("SynchronousLoader failed: %s\n", [[error description] UTF8String]);
- m_isDone = YES;
-}
-
-- (void)connectionDidFinishLoading:(NSURLConnection *)connection
-{
- m_isDone = YES;
-}
-
-+ (void)makeRequest:(NSURLRequest *)request withUsername:(NSString *)username password:(NSString *)password
-{
- ASSERT(![[request URL] user]);
- ASSERT(![[request URL] password]);
-
- SynchronousLoader *delegate = [[SynchronousLoader alloc] init];
- delegate->m_username = [username copy];
- delegate->m_password = [password copy];
-
- NSURLConnection *connection = [[NSURLConnection alloc] initWithRequest:request delegate:delegate startImmediately:NO];
- [connection scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:SynchronousLoaderRunLoopMode];
- [connection start];
-
- while (!delegate->m_isDone)
- [[NSRunLoop currentRunLoop] runMode:SynchronousLoaderRunLoopMode beforeDate:[NSDate distantFuture]];
-
- [connection cancel];
-
- [connection release];
- [delegate release];
-}
-
-@end
-
-void TestRunner::authenticateSession(JSStringRef url, JSStringRef username, JSStringRef password)
-{
- // See <rdar://problem/7880699>.
- RetainPtr<CFStringRef> urlStringCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, url));
- RetainPtr<CFStringRef> usernameCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, username));
- RetainPtr<CFStringRef> passwordCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, password));
-
- RetainPtr<NSURLRequest> request = adoptNS([[NSURLRequest alloc] initWithURL:[NSURL URLWithString:(NSString *)urlStringCF.get()]]);
-
- [SynchronousLoader makeRequest:request.get() withUsername:(NSString *)usernameCF.get() password:(NSString *)passwordCF.get()];
-}
-
-void TestRunner::abortModal()
-{
- [NSApp abortModal];
-}
-
-void TestRunner::setSerializeHTTPLoads(bool serialize)
-{
- [WebView _setLoadResourcesSerially:serialize];
-}
-
-void TestRunner::setTextDirection(JSStringRef directionName)
-{
- if (JSStringIsEqualToUTF8CString(directionName, "ltr"))
- [[mainFrame webView] makeBaseWritingDirectionLeftToRight:0];
- else if (JSStringIsEqualToUTF8CString(directionName, "rtl"))
- [[mainFrame webView] makeBaseWritingDirectionRightToLeft:0];
- else
- ASSERT_NOT_REACHED();
-}
-
-void TestRunner::addChromeInputField()
-{
- NSTextField *textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20)];
- textField.tag = 1;
- [[[[mainFrame webView] window] contentView] addSubview:textField];
- [textField release];
-
- [textField setNextKeyView:[mainFrame webView]];
- [[mainFrame webView] setNextKeyView:textField];
-}
-
-void TestRunner::removeChromeInputField()
-{
- NSView* textField = [[[[mainFrame webView] window] contentView] viewWithTag:1];
- if (textField) {
- [textField removeFromSuperview];
- focusWebView();
- }
-}
-
-void TestRunner::focusWebView()
-{
- [[[mainFrame webView] window] makeFirstResponder:[mainFrame webView]];
-}
-
-void TestRunner::setBackingScaleFactor(double backingScaleFactor)
-{
- [[mainFrame webView] _setCustomBackingScaleFactor:backingScaleFactor];
-}
-
-void TestRunner::resetPageVisibility()
-{
- WebView *webView = [mainFrame webView];
- if ([webView respondsToSelector:@selector(_setVisibilityState:isInitialState:)])
- [webView _setVisibilityState:WebPageVisibilityStateVisible isInitialState:YES];
-}
-
-void TestRunner::setPageVisibility(const char* newVisibility)
-{
- if (!newVisibility)
- return;
-
- WebView *webView = [mainFrame webView];
- if (!strcmp(newVisibility, "visible"))
- [webView _setVisibilityState:WebPageVisibilityStateVisible isInitialState:NO];
- else if (!strcmp(newVisibility, "hidden"))
- [webView _setVisibilityState:WebPageVisibilityStateHidden isInitialState:NO];
- else if (!strcmp(newVisibility, "prerender"))
- [webView _setVisibilityState:WebPageVisibilityStatePrerender isInitialState:NO];
- else if (!strcmp(newVisibility, "unloaded"))
- [webView _setVisibilityState:WebPageVisibilityStateUnloaded isInitialState:NO];
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef jsOrigin)
-{
- RetainPtr<CFStringRef> cfOrigin = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, jsOrigin));
- ASSERT([[mainFrame webView] _notificationProvider] == [MockWebNotificationProvider shared]);
- [[MockWebNotificationProvider shared] setWebNotificationOrigin:(NSString *)cfOrigin.get() permission:TRUE];
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef jsOrigin)
-{
- RetainPtr<CFStringRef> cfOrigin = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, jsOrigin));
- ASSERT([[mainFrame webView] _notificationProvider] == [MockWebNotificationProvider shared]);
- [[MockWebNotificationProvider shared] setWebNotificationOrigin:(NSString *)cfOrigin.get() permission:FALSE];
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
- [[MockWebNotificationProvider shared] removeAllWebNotificationPermissions];
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef jsNotification)
-{
- uint64_t notificationID = [[mainFrame webView] _notificationIDForTesting:jsNotification];
- m_hasPendingWebNotificationClick = true;
- dispatch_async(dispatch_get_main_queue(), ^{
- if (!m_hasPendingWebNotificationClick)
- return;
-
- [[MockWebNotificationProvider shared] simulateWebNotificationClick:notificationID];
- m_hasPendingWebNotificationClick = false;
- });
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef jsTitle)
-{
-}
-
diff --git a/Tools/DumpRenderTree/mac/TextInputController.h b/Tools/DumpRenderTree/mac/TextInputController.h
deleted file mode 100644
index 767e72f0c..000000000
--- a/Tools/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/Tools/DumpRenderTree/mac/TextInputController.m b/Tools/DumpRenderTree/mac/TextInputController.m
deleted file mode 100644
index 91dbd84a1..000000000
--- a/Tools/DumpRenderTree/mac/TextInputController.m
+++ /dev/null
@@ -1,459 +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 "config.h"
-#import "TextInputController.h"
-
-#import "DumpRenderTreeMac.h"
-#import <AppKit/NSInputManager.h>
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
-#define SUPPORT_DICTATION_ALTERNATIVES
-#import <AppKit/NSTextAlternatives.h>
-#endif
-#import <WebKit/WebDocument.h>
-#import <WebKit/WebFrame.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebFrameView.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebTypesInternal.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:)
- || aSelector == @selector(dictatedStringWithPrimaryString:alternative:alternativeOffset:alternativeLength:))
- 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";
- else if (aSelector == @selector(dictatedStringWithPrimaryString:alternative:alternativeOffset:alternativeLength:))
- return @"makeDictatedString";
-
- 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;
-}
-
-- (NSInteger)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];
- NSInteger index = [textInput characterIndexForPoint:point];
- if (index == NSNotFound)
- return -1;
-
- return index;
- }
-
- 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];
-}
-
-- (NSMutableAttributedString*)dictatedStringWithPrimaryString:(NSString*)aString alternative:(NSString*)alternative alternativeOffset:(int)offset alternativeLength:(int)length
-{
-#if defined(SUPPORT_DICTATION_ALTERNATIVES)
- NSMutableAttributedString* dictatedString = [self attributedStringWithString:aString];
- NSRange rangeWithAlternative = NSMakeRange((NSUInteger)offset, (NSUInteger)length);
- NSString* subStringWithAlternative = [aString substringWithRange:rangeWithAlternative];
- if (!subStringWithAlternative)
- return nil;
-
- NSTextAlternatives* alternativeObject = [[[NSTextAlternatives alloc] initWithPrimaryString:subStringWithAlternative alternativeStrings:[NSArray arrayWithObject:alternative]] autorelease];
- if (!alternativeObject)
- return nil;
-
- [dictatedString addAttribute:NSTextAlternativesAttributeName value:alternativeObject range:rangeWithAlternative];
-
- return dictatedString;
-#else
- return nil;
-#endif
-}
-
-- (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/Tools/DumpRenderTree/mac/UIDelegate.h b/Tools/DumpRenderTree/mac/UIDelegate.h
deleted file mode 100644
index 982b4802c..000000000
--- a/Tools/DumpRenderTree/mac/UIDelegate.h
+++ /dev/null
@@ -1,42 +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;
- NSMutableSet *m_pendingGeolocationPermissionListeners;
- NSTimer *m_timer;
-}
-
-- (void)didSetMockGeolocationPermission;
-- (int)numberOfPendingGeolocationPermissionRequests;
-
-@end
diff --git a/Tools/DumpRenderTree/mac/UIDelegate.mm b/Tools/DumpRenderTree/mac/UIDelegate.mm
deleted file mode 100644
index 3473d1797..000000000
--- a/Tools/DumpRenderTree/mac/UIDelegate.mm
+++ /dev/null
@@ -1,321 +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 "config.h"
-#import "UIDelegate.h"
-
-#import "DumpRenderTree.h"
-#import "DumpRenderTreeDraggingInfo.h"
-#import "EventSendingController.h"
-#import "MockWebNotificationProvider.h"
-#import "TestRunner.h"
-#import <WebKit/WebApplicationCache.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebHTMLViewPrivate.h>
-#import <WebKit/WebQuotaManager.h>
-#import <WebKit/WebSecurityOriginPrivate.h>
-#import <WebKit/WebUIDelegatePrivate.h>
-#import <WebKit/WebView.h>
-#import <WebKit/WebViewPrivate.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 withSource:(NSString *)source
-{
- 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: ");
- if ([lineNumber intValue])
- printf ("line %d: ", [lineNumber intValue]);
- printf ("%s\n", [message UTF8String]);
-}
-
-- (void)modalWindowWillClose:(NSNotification *)notification
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self name:NSWindowWillCloseNotification object:nil];
- [NSApp abortModal];
-}
-
-- (void)webViewRunModal:(WebView *)sender
-{
- gTestRunner->setWindowIsKey(false);
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(modalWindowWillClose:) name:NSWindowWillCloseNotification object:nil];
- [NSApp runModalForWindow:[sender window]];
- gTestRunner->setWindowIsKey(true);
-}
-
-- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- if (!done) {
- printf("ALERT: %s\n", [message UTF8String]);
- fflush(stdout);
- }
-}
-
-- (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 !gTestRunner->shouldStayOnPageAfterHandlingBeforeUnload();
-}
-
-
-- (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);
- draggingInfo = [[DumpRenderTreeDraggingInfo alloc] initWithImage:anImage offset:initialOffset pasteboard:pboard source:sourceObj];
- [sender draggingUpdated:draggingInfo];
- [EventSendingController replaySavedEvents];
-}
-
-- (void)webViewFocus:(WebView *)webView
-{
- gTestRunner->setWindowIsKey(true);
-}
-
-- (void)webViewUnfocus:(WebView *)webView
-{
- gTestRunner->setWindowIsKey(false);
-}
-
-- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
-{
- if (!gTestRunner->canOpenWindows())
- return nil;
-
- // Make sure that waitUntilDone has been called.
- ASSERT(gTestRunner->waitToDump());
-
- WebView *webView = createWebViewAndOffscreenWindow();
-
- if (gTestRunner->newWindowsCopyBackForwardList())
- [webView _loadBackForwardListFromOtherView:sender];
-
- return [webView autorelease];
-}
-
-- (void)webViewClose:(WebView *)sender
-{
- NSWindow* window = [sender window];
-
- if (gTestRunner->callCloseOnWebViews())
- [sender close];
-
- [window close];
-}
-
-- (void)webView:(WebView *)sender frame:(WebFrame *)frame exceededDatabaseQuotaForSecurityOrigin:(WebSecurityOrigin *)origin database:(NSString *)databaseIdentifier
-{
- if (!done && gTestRunner->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 databaseQuotaManager] setQuota:defaultQuota];
-}
-
-- (void)webView:(WebView *)sender exceededApplicationCacheOriginQuotaForSecurityOrigin:(WebSecurityOrigin *)origin totalSpaceNeeded:(NSUInteger)totalSpaceNeeded
-{
- if (!done && gTestRunner->dumpApplicationCacheDelegateCallbacks()) {
- // For example, numbers from 30000 - 39999 will output as 30000.
- // Rounding up or down not really matter for these tests. It's
- // sufficient to just get a range of 10000 to determine if we were
- // above or below a threshold.
- unsigned long truncatedSpaceNeeded = static_cast<unsigned long>((totalSpaceNeeded / 10000) * 10000);
- printf("UI DELEGATE APPLICATION CACHE CALLBACK: exceededApplicationCacheOriginQuotaForSecurityOrigin:{%s, %s, %i} totalSpaceNeeded:~%lu\n",
- [[origin protocol] UTF8String], [[origin host] UTF8String], [origin port], truncatedSpaceNeeded);
- }
-
- if (gTestRunner->disallowIncreaseForApplicationCacheQuota())
- return;
-
- static const unsigned long long defaultOriginQuota = [WebApplicationCache defaultOriginQuota];
- [[origin applicationCacheQuotaManager] setQuota:defaultOriginQuota];
-}
-
-- (void)webView:(WebView *)sender setStatusText:(NSString *)text
-{
- if (gTestRunner->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", [text UTF8String]);
-}
-
-- (void)webView:(WebView *)webView decidePolicyForGeolocationRequestFromOrigin:(WebSecurityOrigin *)origin frame:(WebFrame *)frame listener:(id<WebAllowDenyPolicyListener>)listener
-{
- if (!gTestRunner->isGeolocationPermissionSet()) {
- if (!m_pendingGeolocationPermissionListeners)
- m_pendingGeolocationPermissionListeners = [[NSMutableSet set] retain];
- [m_pendingGeolocationPermissionListeners addObject:listener];
- return;
- }
-
- if (gTestRunner->geolocationPermission())
- [listener allow];
- else
- [listener deny];
-}
-
-- (void)didSetMockGeolocationPermission
-{
- ASSERT(gTestRunner->isGeolocationPermissionSet());
- if (m_pendingGeolocationPermissionListeners && !m_timer)
- m_timer = [NSTimer scheduledTimerWithTimeInterval:0 target:self selector:@selector(timerFired) userInfo:0 repeats:NO];
-}
-
-- (int)numberOfPendingGeolocationPermissionRequests
-{
- if (!m_pendingGeolocationPermissionListeners)
- return 0;
- return [m_pendingGeolocationPermissionListeners count];
-}
-
-
-- (void)timerFired
-{
- ASSERT(gTestRunner->isGeolocationPermissionSet());
- m_timer = 0;
- NSEnumerator* enumerator = [m_pendingGeolocationPermissionListeners objectEnumerator];
- id<WebAllowDenyPolicyListener> listener;
- while ((listener = [enumerator nextObject])) {
- if (gTestRunner->geolocationPermission())
- [listener allow];
- else
- [listener deny];
- }
- [m_pendingGeolocationPermissionListeners removeAllObjects];
- [m_pendingGeolocationPermissionListeners release];
- m_pendingGeolocationPermissionListeners = nil;
-}
-
-- (BOOL)webView:(WebView *)sender shouldHaltPlugin:(DOMNode *)pluginNode
-{
- return NO;
-}
-
-- (BOOL)webView:(WebView *)webView supportsFullScreenForElement:(DOMElement*)element withKeyboard:(BOOL)withKeyboard
-{
- return YES;
-}
-
-- (void)enterFullScreenWithListener:(NSObject<WebKitFullScreenListener>*)listener
-{
- [listener webkitWillEnterFullScreen];
- [listener webkitDidEnterFullScreen];
-}
-
-- (void)webView:(WebView *)webView enterFullScreenForElement:(DOMElement*)element listener:(NSObject<WebKitFullScreenListener>*)listener
-{
- if (!gTestRunner->hasCustomFullScreenBehavior())
- [self performSelector:@selector(enterFullScreenWithListener:) withObject:listener afterDelay:0];
-}
-
-- (void)exitFullScreenWithListener:(NSObject<WebKitFullScreenListener>*)listener
-{
- [listener webkitWillExitFullScreen];
- [listener webkitDidExitFullScreen];
-}
-
-- (void)webView:(WebView *)webView exitFullScreenForElement:(DOMElement*)element listener:(NSObject<WebKitFullScreenListener>*)listener
-{
- if (!gTestRunner->hasCustomFullScreenBehavior())
- [self performSelector:@selector(exitFullScreenWithListener:) withObject:listener afterDelay:0];
-}
-
-- (void)webView:(WebView *)sender closeFullScreenWithListener:(NSObject<WebKitFullScreenListener>*)listener
-{
- [listener webkitWillExitFullScreen];
- [listener webkitDidExitFullScreen];
-}
-
-- (BOOL)webView:(WebView *)webView didPressMissingPluginButton:(DOMElement *)element
-{
- printf("MISSING PLUGIN BUTTON PRESSED\n");
- return TRUE;
-}
-
-- (void)webView:(WebView *)webView decidePolicyForNotificationRequestFromOrigin:(WebSecurityOrigin *)origin listener:(id<WebAllowDenyPolicyListener>)listener
-{
- MockWebNotificationProvider *provider = (MockWebNotificationProvider *)[webView _notificationProvider];
- switch ([provider policyForOrigin:origin]) {
- case WebNotificationPermissionAllowed:
- [listener allow];
- break;
- case WebNotificationPermissionDenied:
- [listener deny];
- break;
- case WebNotificationPermissionNotAllowed:
- [provider setWebNotificationOrigin:[origin stringValue] permission:YES];
- [listener allow];
- break;
- }
-}
-
-- (void)dealloc
-{
- [draggingInfo release];
- draggingInfo = nil;
- [m_pendingGeolocationPermissionListeners release];
- m_pendingGeolocationPermissionListeners = nil;
-
- [super dealloc];
-}
-
-@end
diff --git a/Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm b/Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm
deleted file mode 100644
index e06e79750..000000000
--- a/Tools/DumpRenderTree/mac/WebArchiveDumpSupportMac.mm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2010 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 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 "config.h"
-#import "WebArchiveDumpSupport.h"
-
-#import <CFNetwork/CFHTTPMessage.h>
-#import <Foundation/Foundation.h>
-#import <WebKit/WebHTMLRepresentation.h>
-#import <wtf/RetainPtr.h>
-
-extern "C" {
-
-enum CFURLCacheStoragePolicy {
- kCFURLCacheStorageAllowed = 0,
- kCFURLCacheStorageAllowedInMemoryOnly = 1,
- kCFURLCacheStorageNotAllowed = 2
-};
-typedef enum CFURLCacheStoragePolicy CFURLCacheStoragePolicy;
-
-extern const CFStringRef kCFHTTPVersion1_1;
-
-CFURLResponseRef CFURLResponseCreate(CFAllocatorRef alloc, CFURLRef URL, CFStringRef mimeType, SInt64 expectedContentLength, CFStringRef textEncodingName, CFURLCacheStoragePolicy recommendedPolicy);
-CFURLResponseRef CFURLResponseCreateWithHTTPResponse(CFAllocatorRef alloc, CFURLRef URL, CFHTTPMessageRef httpResponse, CFURLCacheStoragePolicy recommendedPolicy);
-void CFURLResponseSetExpectedContentLength(CFURLResponseRef response, SInt64 length);
-void CFURLResponseSetMIMEType(CFURLResponseRef response, CFStringRef mimeType);
-
-}
-
-CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef responseData)
-{
- // Decode NSURLResponse
- RetainPtr<NSKeyedUnarchiver> unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:(NSData *)responseData]);
- NSURLResponse *response = [unarchiver.get() decodeObjectForKey:@"WebResourceResponse"]; // WebResourceResponseKey in WebResource.m
- [unarchiver.get() finishDecoding];
-
- if (![response isKindOfClass:[NSHTTPURLResponse class]])
- return CFURLResponseCreate(kCFAllocatorDefault, (CFURLRef)[response URL], (CFStringRef)[response MIMEType], [response expectedContentLength], (CFStringRef)[response textEncodingName], kCFURLCacheStorageAllowed);
-
- NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
-
- // NSURLResponse is not toll-free bridged to CFURLResponse.
- RetainPtr<CFHTTPMessageRef> httpMessage = adoptCF(CFHTTPMessageCreateResponse(kCFAllocatorDefault, [httpResponse statusCode], 0, kCFHTTPVersion1_1));
-
- NSDictionary *headerFields = [httpResponse allHeaderFields];
- for (NSString *headerField in [headerFields keyEnumerator])
- CFHTTPMessageSetHeaderFieldValue(httpMessage.get(), (CFStringRef)headerField, (CFStringRef)[headerFields objectForKey:headerField]);
-
- return CFURLResponseCreateWithHTTPResponse(kCFAllocatorDefault, (CFURLRef)[response URL], httpMessage.get(), kCFURLCacheStorageAllowed);
-}
-
-CFArrayRef supportedNonImageMIMETypes()
-{
- return (CFArrayRef)[WebHTMLRepresentation supportedNonImageMIMETypes];
-}
diff --git a/Tools/DumpRenderTree/mac/WorkQueueItemMac.mm b/Tools/DumpRenderTree/mac/WorkQueueItemMac.mm
deleted file mode 100644
index f0b6c33dc..000000000
--- a/Tools/DumpRenderTree/mac/WorkQueueItemMac.mm
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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 "config.h"
-#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>
-
-bool 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]]];
- return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
- RetainPtr<CFStringRef> contentCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, m_content.get()));
- RetainPtr<CFStringRef> baseURLCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, m_baseURL.get()));
-
- if (m_unreachableURL) {
- RetainPtr<CFStringRef> unreachableURLCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, m_unreachableURL.get()));
- [mainFrame loadAlternateHTMLString:(NSString *)contentCF.get() baseURL:[NSURL URLWithString:(NSString *)baseURLCF.get()] forUnreachableURL:[NSURL URLWithString:(NSString *)unreachableURLCF.get()]];
- return true;
- }
-
- [mainFrame loadHTMLString:(NSString *)contentCF.get() baseURL:[NSURL URLWithString:(NSString *)baseURLCF.get()]];
- return true;
-}
-
-bool ReloadItem::invoke() const
-{
- [[mainFrame webView] reload:nil];
- return true;
-}
-
-bool ScriptItem::invoke() const
-{
- RetainPtr<CFStringRef> scriptCF = adoptCF(JSStringCopyCFString(kCFAllocatorDefault, m_script.get()));
- NSString *scriptNS = (NSString *)scriptCF.get();
- [[mainFrame webView] stringByEvaluatingJavaScriptFromString:scriptNS];
- return true;
-}
-
-bool 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]];
- }
- return true;
-}
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTree.pro b/Tools/DumpRenderTree/qt/DumpRenderTree.pro
deleted file mode 100644
index 2d6cfca22..000000000
--- a/Tools/DumpRenderTree/qt/DumpRenderTree.pro
+++ /dev/null
@@ -1,60 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for the DumpRenderTree binary (DRT)
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = app
-
-TARGET = DumpRenderTree
-DESTDIR = $$ROOT_BUILD_DIR/bin
-
-WEBKIT += wtf javascriptcore webcore
-
-INCLUDEPATH += \
- $$PWD/ \
- $$PWD/.. \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \
- $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WebCoreSupport \
- $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WidgetSupport \
- $${ROOT_WEBKIT_DIR}/Source/WTF
-
-QT = core gui network testlib webkitwidgets widgets
-have?(QTPRINTSUPPORT): QT += printsupport
-macx: QT += xml
-
-HEADERS += \
- $$PWD/../WorkQueue.h \
- $$PWD/../DumpRenderTree.h \
- $$PWD/../GCController.h \
- $$PWD/../TestRunner.h \
- DumpRenderTreeQt.h \
- EventSenderQt.h \
- TextInputControllerQt.h \
- WorkQueueItemQt.h \
- TestRunnerQt.h \
- testplugin.h
-
-SOURCES += \
- $$PWD/../WorkQueue.cpp \
- $$PWD/../DumpRenderTreeCommon.cpp \
- $$PWD/../GCController.cpp \
- $$PWD/../TestRunner.cpp \
- DumpRenderTreeQt.cpp \
- EventSenderQt.cpp \
- TextInputControllerQt.cpp \
- WorkQueueItemQt.cpp \
- TestRunnerQt.cpp \
- GCControllerQt.cpp \
- testplugin.cpp \
- DumpRenderTreeMain.cpp
-
-wince*: {
- INCLUDEPATH += $$WCECOMPAT/include
- LIBS += $$WCECOMPAT/lib/wcecompat.lib
-}
-
-DEFINES -= USE_SYSTEM_MALLOC=0
-DEFINES += USE_SYSTEM_MALLOC=1
-
-RESOURCES = DumpRenderTree.qrc
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
index 264947497..5eab260b5 100644
--- a/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeMain.cpp
@@ -29,6 +29,7 @@
#include "DumpRenderTreeQt.h"
+#include "InitWebCoreQt.h"
#include "QtTestSupport.h"
#include <qapplication.h>
#include <qdebug.h>
@@ -111,6 +112,7 @@ int main(int argc, char* argv[])
if (suppressQtDebugOutput)
qInstallMessageHandler(messageHandler);
+ WebCore::initializeWebCoreQt();
WebKit::QtTestSupport::initializeTestFonts();
QApplication::setStyle(QStyleFactory::create(QLatin1String("windows")));
diff --git a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
index c0c285353..b730df61c 100755
--- a/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
+++ b/Tools/DumpRenderTree/qt/DumpRenderTreeQt.cpp
@@ -202,8 +202,6 @@ void WebPage::resetSettings()
QWebSettings::setMaximumPagesInCache(0); // reset to default
settings()->setUserStyleSheetUrl(QUrl()); // reset to default
- DumpRenderTreeSupportQt::setSeamlessIFramesEnabled(true);
-
DumpRenderTreeSupportQt::resetInternalsObject(mainFrame()->handle());
m_pendingGeolocationRequests.clear();
@@ -275,6 +273,7 @@ void WebPage::permissionSet(QWebPage::Feature feature)
}
}
+// FIXME (119591): Make this match other platforms better.
static QString urlSuitableForTestResult(const QString& url)
{
if (url.isEmpty() || !url.startsWith(QLatin1String("file://")))
@@ -292,7 +291,7 @@ void WebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, c
if (!message.isEmpty()) {
newMessage = message;
- size_t fileProtocol = newMessage.indexOf(QLatin1String("file://"));
+ int fileProtocol = newMessage.indexOf(QLatin1String("file://"));
if (fileProtocol != -1) {
newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.mid(fileProtocol));
}
@@ -567,8 +566,8 @@ void DumpRenderTree::resetToConsistentStateBeforeTesting(const QUrl& url)
m_page->setNetworkAccessManager(m_networkAccessManager);
}
- WorkQueue::shared()->clear();
- WorkQueue::shared()->setFrozen(false);
+ WorkQueue::singleton().clear();
+ WorkQueue::singleton().setFrozen(false);
DumpRenderTreeSupportQt::resetOriginAccessWhiteLists();
@@ -772,8 +771,7 @@ void DumpRenderTree::initJSObjects()
" }\n"
"for (var prop in this.jscBasedTestRunner) {\n"
" var pd = Object.getOwnPropertyDescriptor(this.qtBasedTestRunner, prop);\n"
- " if (pd !== undefined) continue;\n"
- " pd = Object.getOwnPropertyDescriptor(this.jscBasedTestRunner, prop);\n"
+ " if (pd !== undefined && (pd.writable === false || pd.configurable === false)) continue;\n"
" this.qtBasedTestRunner[prop] = bind(this.jscBasedTestRunner[prop], this.jscBasedTestRunner);\n"
"}\n"
"}).apply(this)\n"));
@@ -869,19 +867,25 @@ static QString dumpHistoryItem(const QWebHistoryItem& item, int indent, bool cur
for (int i = start; i < indent; i++)
result.append(' ');
- QString url = item.url().toString();
- if (url.contains("file://")) {
+ QUrl url = item.url();
+ QString urlString;
+ if (url.scheme() == "data")
+ urlString = url.toString(QUrl::DecodeReserved);
+ else
+ urlString = url.toString();
+
+ if (urlString.contains("file://")) {
static QString layoutTestsString("/LayoutTests/");
static QString fileTestString("(file test):");
- QString res = url.mid(url.indexOf(layoutTestsString) + layoutTestsString.length());
+ QString res = urlString.mid(urlString.indexOf(layoutTestsString) + layoutTestsString.length());
if (res.isEmpty())
return result;
result.append(fileTestString);
result.append(res);
} else {
- result.append(url);
+ result.append(urlString);
}
QString target = DumpRenderTreeSupportQt::historyItemTarget(item);
@@ -1001,18 +1005,22 @@ void DumpRenderTree::dump()
fputs("#EOF\n", stderr);
if (m_dumpPixelsForCurrentTest && m_jscController->generatePixelResults()) {
+ // Should use the same render hints as default QWebView/QGraphicsWebView
+ QPainter::RenderHints renderHints(QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform);
+
QImage image;
if (!m_jscController->isPrinting()) {
image = QImage(m_page->viewportSize(), QImage::Format_ARGB32);
image.fill(Qt::white);
QPainter painter(&image);
+ painter.setRenderHints(renderHints);
mainFrame->render(&painter);
painter.end();
} else
image = DumpRenderTreeSupportQt::paintPagesWithBoundaries(mainFrame->handle());
if (DumpRenderTreeSupportQt::trackRepaintRects(mainFrameAdapter())) {
- QVector<QRect> repaintRects;
+ QVector<QRectF> repaintRects;
DumpRenderTreeSupportQt::getTrackedRepaintRects(mainFrameAdapter(), repaintRects);
QImage mask(image.size(), image.format());
mask.fill(QColor(0, 0, 0, 0.66 * 255));
@@ -1023,6 +1031,7 @@ void DumpRenderTree::dump()
maskPainter.fillRect(repaintRects[i], Qt::transparent);
QPainter painter(&image);
+ painter.setRenderHints(renderHints);
painter.drawImage(image.rect(), mask);
DumpRenderTreeSupportQt::setTrackRepaintRects(mainFrameAdapter(), false);
diff --git a/Tools/DumpRenderTree/qt/EventSenderQt.h b/Tools/DumpRenderTree/qt/EventSenderQt.h
index ad13cadb6..94fb1556f 100644
--- a/Tools/DumpRenderTree/qt/EventSenderQt.h
+++ b/Tools/DumpRenderTree/qt/EventSenderQt.h
@@ -54,7 +54,7 @@ class EventSender : public QObject {
Q_OBJECT
public:
EventSender(QWebPage* parent);
- virtual bool eventFilter(QObject* watched, QEvent* event);
+ virtual bool eventFilter(QObject* watched, QEvent*);
void resetClickCount() { m_clickCount = 0; }
public Q_SLOTS:
diff --git a/Tools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro b/Tools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro
deleted file mode 100644
index af2b5ac93..000000000
--- a/Tools/DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro
+++ /dev/null
@@ -1,62 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for the NPAPI test plugin
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = lib
-TARGET = TestNetscapePlugIn
-
-CONFIG += plugin
-
-SOURCES += \
- PluginObject.cpp \
- PluginTest.cpp \
- TestObject.cpp \
- main.cpp \
- Tests/DocumentOpenInDestroyStream.cpp \
- Tests/EvaluateJSAfterRemovingPluginElement.cpp \
- Tests/FormValue.cpp \
- Tests/GetURLNotifyWithURLThatFailsToLoad.cpp \
- Tests/GetURLWithJavaScriptURL.cpp \
- Tests/GetURLWithJavaScriptURLDestroyingPlugin.cpp \
- Tests/GetUserAgentWithNullNPPFromNPPNew.cpp \
- Tests/NPDeallocateCalledBeforeNPShutdown.cpp \
- Tests/NPPNewFails.cpp \
- Tests/NPPSetWindowCalledDuringDestruction.cpp \
- Tests/NPRuntimeCallsWithNullNPP.cpp \
- Tests/NPRuntimeObjectFromDestroyedPlugin.cpp \
- Tests/NPRuntimeRemoveProperty.cpp \
- Tests/NullNPPGetValuePointer.cpp \
- Tests/PassDifferentNPPStruct.cpp \
- Tests/PluginScriptableNPObjectInvokeDefault.cpp \
- Tests/PluginScriptableObjectOverridesAllProperties.cpp \
- Tests/PrivateBrowsing.cpp \
- Tests/ToStringAndValueOfObject.cpp
-
-WEBKIT += webcore # For NPAPI headers
-
-VPATH = ../../unix/TestNetscapePlugin ../../TestNetscapePlugIn
-
-
-INCLUDEPATH += \
- ../../TestNetscapePlugIn/unix/ForwardingHeaders \
- ../../TestNetscapePlugIn/unix/ForwardingHeaders/WebKit \
- ../../TestNetscapePlugIn
-
-DESTDIR = $${ROOT_BUILD_DIR}/lib/plugins
-
-mac {
- CONFIG += plugin_bundle
- QMAKE_INFO_PLIST = ../../TestNetscapePlugIn/mac/Info.plist
- QMAKE_PLUGIN_BUNDLE_NAME = $$TARGET
- QMAKE_BUNDLE_LOCATION += "Contents/MacOS"
-
- OBJECTIVE_SOURCES += PluginObjectMac.mm
- LIBS += -framework Carbon -framework Cocoa -framework QuartzCore
-}
-
-!win32:!mac {
- LIBS += -lX11
- DEFINES += XP_UNIX
-}
diff --git a/Tools/DumpRenderTree/qt/TestRunnerQt.cpp b/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
index 794c00ff1..09f1d09dc 100644
--- a/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
+++ b/Tools/DumpRenderTree/qt/TestRunnerQt.cpp
@@ -89,7 +89,6 @@ void TestRunnerQt::reset()
DumpRenderTreeSupportQt::resetGeolocationMock(m_drt->pageAdapter());
DumpRenderTreeSupportQt::dumpNotification(false);
DumpRenderTreeSupportQt::setShouldUseFontSmoothing(false);
- DumpRenderTreeSupportQt::disableDefaultTypesettingFeatures();
setIconDatabaseEnabled(false);
clearAllDatabases();
removeAllWebNotificationPermissions();
@@ -108,7 +107,7 @@ void TestRunnerQt::processWork()
// qDebug() << ">>>processWork";
// if we didn't start a new load, then we finished all the commands, so we're ready to dump state
- if (WorkQueue::shared()->processWork() && !shouldWaitUntilDone()) {
+ if (WorkQueue::singleton().processWork() && !shouldWaitUntilDone()) {
emit done();
m_hasDumped = true;
}
@@ -137,8 +136,8 @@ void TestRunnerQt::maybeDump(bool /*success*/)
if (m_hasDumped)
return;
- WorkQueue::shared()->setFrozen(true); // first complete load freezes the queue for the rest of this test
- if (WorkQueue::shared()->count())
+ WorkQueue::singleton().setFrozen(true); // first complete load freezes the queue for the rest of this test
+ if (WorkQueue::singleton().count())
QTimer::singleShot(0, this, SLOT(processWork()));
else if (!shouldWaitUntilDone()) {
emit done();
@@ -331,40 +330,40 @@ void TestRunnerQt::queueBackNavigation(int howFarBackward)
{
//qDebug() << ">>>queueBackNavigation" << howFarBackward;
for (int i = 0; i != howFarBackward; ++i)
- WorkQueue::shared()->queue(new BackItem(1));
+ WorkQueue::singleton().queue(new BackItem(1));
}
void TestRunnerQt::queueForwardNavigation(int howFarForward)
{
//qDebug() << ">>>queueForwardNavigation" << howFarForward;
for (int i = 0; i != howFarForward; ++i)
- WorkQueue::shared()->queue(new ForwardItem(1));
+ WorkQueue::singleton().queue(new ForwardItem(1));
}
void TestRunnerQt::queueLoadHTMLString(const QString& content, const QString& baseURL, const QString& failingURL)
{
if (failingURL.isEmpty())
- WorkQueue::shared()->queue(new LoadHTMLStringItem(JSStringCreateWithQString(content).get(), JSStringCreateWithQString(baseURL).get()));
+ WorkQueue::singleton().queue(new LoadHTMLStringItem(JSStringCreateWithQString(content).get(), JSStringCreateWithQString(baseURL).get()));
else
- WorkQueue::shared()->queue(new LoadAlternateHTMLStringItem(JSStringCreateWithQString(content), JSStringCreateWithQString(baseURL), JSStringCreateWithQString(failingURL)));
+ WorkQueue::singleton().queue(new LoadAlternateHTMLStringItem(JSStringCreateWithQString(content), JSStringCreateWithQString(baseURL), JSStringCreateWithQString(failingURL)));
}
void TestRunnerQt::queueReload()
{
//qDebug() << ">>>queueReload";
- WorkQueue::shared()->queue(new ReloadItem());
+ WorkQueue::singleton().queue(new ReloadItem());
}
void TestRunnerQt::queueLoadingScript(const QString& script)
{
//qDebug() << ">>>queueLoadingScript" << script;
- WorkQueue::shared()->queue(new LoadingScriptItem(JSStringCreateWithQString(script).get()));
+ WorkQueue::singleton().queue(new LoadingScriptItem(JSStringCreateWithQString(script).get()));
}
void TestRunnerQt::queueNonLoadingScript(const QString& script)
{
//qDebug() << ">>>queueNonLoadingScript" << script;
- WorkQueue::shared()->queue(new NonLoadingScriptItem(JSStringCreateWithQString(script).get()));
+ WorkQueue::singleton().queue(new NonLoadingScriptItem(JSStringCreateWithQString(script).get()));
}
void TestRunnerQt::provisionalLoad()
@@ -416,9 +415,9 @@ void TestRunnerQt::showWebInspector()
DumpRenderTreeSupportQt::webInspectorShow(m_drt->pageAdapter());
}
-void TestRunnerQt::evaluateInWebInspector(long callId, const QString& script)
+void TestRunnerQt::evaluateInWebInspector(const QString& script)
{
- DumpRenderTreeSupportQt::webInspectorExecuteScript(m_drt->pageAdapter(), callId, script);
+ DumpRenderTreeSupportQt::webInspectorExecuteScript(m_drt->pageAdapter(), script);
}
void TestRunnerQt::setAllowUniversalAccessFromFileURLs(bool enabled)
@@ -785,7 +784,7 @@ void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
DumpRenderTree* drt = DumpRenderTree::instance();
QUrl mainResourceUrl = drt->webPage()->mainFrame()->url();
QString absoluteUrl = mainResourceUrl.resolved(QUrl(JSStringCopyQString(url))).toEncoded();
- WorkQueue::shared()->queue(new LoadItem(JSStringCreateWithQString(absoluteUrl).get(), target));
+ WorkQueue::singleton().queue(new LoadItem(JSStringCreateWithQString(absoluteUrl).get(), target));
}
void TestRunner::removeAllVisitedLinks()
@@ -840,6 +839,11 @@ int TestRunner::numberOfPendingGeolocationPermissionRequests()
return 0;
}
+bool TestRunner::isGeolocationProviderActive()
+{
+ return false;
+}
+
void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
{
}
@@ -877,27 +881,6 @@ void TestRunner::addChromeInputField()
{
}
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- return JSValueMakeNull(context);
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef originIdentifier)
-{
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned number)
-{
-}
-
-void TestRunner::syncLocalStorage()
-{
-}
-
int TestRunner::windowCount()
{
return 0;
@@ -924,7 +907,7 @@ void TestRunner::closeWebInspector()
{
}
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
+void TestRunner::evaluateInWebInspector(JSStringRef script)
{
}
@@ -1083,10 +1066,6 @@ void TestRunner::setPopupBlockingEnabled(bool)
{
}
-void TestRunner::setMockSpeechInputDumpRect(bool flag)
-{
-}
-
void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef path)
{
}
@@ -1140,10 +1119,6 @@ void TestRunner::setAllowUniversalAccessFromFileURLs(bool)
{
}
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long)
-{
-}
-
void TestRunner::denyWebNotificationPermission(JSStringRef origin)
{
}
@@ -1160,10 +1135,6 @@ void TestRunner::setViewModeMediaFeature(JSStringRef)
{
}
-void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
-{
-}
-
void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
{
}
@@ -1200,8 +1171,8 @@ void TestRunner::execCommand(JSStringRef name, JSStringRef value)
{
}
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
+JSStringRef TestRunner::inspectorTestStubURL()
{
- return 0;
+ return JSStringCreateWithUTF8CString("qrc:/webkit/inspector/UserInterface/TestStub.html");
}
diff --git a/Tools/DumpRenderTree/qt/TestRunnerQt.h b/Tools/DumpRenderTree/qt/TestRunnerQt.h
index 42026e141..8f2ef1f45 100644
--- a/Tools/DumpRenderTree/qt/TestRunnerQt.h
+++ b/Tools/DumpRenderTree/qt/TestRunnerQt.h
@@ -125,7 +125,7 @@ public Q_SLOTS:
void setDeveloperExtrasEnabled(bool);
void showWebInspector();
void closeWebInspector();
- void evaluateInWebInspector(long callId, const QString& script);
+ void evaluateInWebInspector(const QString& script);
void removeAllVisitedLinks();
void setAllowUniversalAccessFromFileURLs(bool enable);
void setAllowFileAccessFromFileURLs(bool enable);
diff --git a/Tools/DumpRenderTree/qt/fonts/AHEM____.TTF b/Tools/DumpRenderTree/qt/fonts/AHEM____.TTF
deleted file mode 100644
index ac81cb031..000000000
--- a/Tools/DumpRenderTree/qt/fonts/AHEM____.TTF
+++ /dev/null
Binary files differ
diff --git a/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp b/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
deleted file mode 100644
index d8c89b3c6..000000000
--- a/Tools/DumpRenderTree/win/AccessibilityControllerWin.cpp
+++ /dev/null
@@ -1,391 +0,0 @@
-/*
- * Copyright (C) 2008, 2009, 2010, 2013 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 "FrameLoadDelegate.h"
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSStringRefBSTR.h>
-#include <WebCore/AccessibilityObjectWrapperWin.h>
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <comutil.h>
-#include <oleacc.h>
-#include <string>
-#include <wtf/Assertions.h>
-#include <wtf/text/AtomicString.h>
-
-using namespace std;
-
-AccessibilityController::AccessibilityController()
- : m_focusEventHook(0)
- , m_scrollingStartEventHook(0)
- , m_valueChangeEventHook(0)
- , m_allEventsHook(0)
- , m_notificationsEventHook(0)
-{
-}
-
-AccessibilityController::~AccessibilityController()
-{
- setLogFocusEvents(false);
- setLogAccessibilityEvents(false);
- setLogValueChangeEvents(false);
-
- if (m_notificationsEventHook)
- UnhookWinEvent(m_notificationsEventHook);
-
- for (HashMap<PlatformUIElement, JSObjectRef>::iterator it = m_notificationListeners.begin(); it != m_notificationListeners.end(); ++it)
- JSValueUnprotect(frame->globalContext(), it->value);
-}
-
-AccessibilityUIElement AccessibilityController::elementAtPoint(int x, int y)
-{
- // FIXME: implement
- return 0;
-}
-
-static COMPtr<IAccessibleComparable> comparableObject(const COMPtr<IServiceProvider>& serviceProvider)
-{
- COMPtr<IAccessibleComparable> comparable;
- serviceProvider->QueryService(SID_AccessibleComparable, __uuidof(IAccessibleComparable), reinterpret_cast<void**>(&comparable));
- return comparable;
-}
-
-static COMPtr<IAccessible> findAccessibleObjectById(AccessibilityUIElement parentObject, BSTR idAttribute)
-{
- COMPtr<IAccessible> parentIAccessible = parentObject.platformUIElement();
-
- COMPtr<IServiceProvider> serviceProvider(Query, parentIAccessible);
- if (!serviceProvider)
- return 0;
-
- COMPtr<IAccessibleComparable> comparable = comparableObject(serviceProvider);
- if (!comparable)
- return 0;
-
- VARIANT value;
- ::VariantInit(&value);
-
- _bstr_t elementIdAttributeKey(L"AXDRTElementIdAttribute");
- if (SUCCEEDED(comparable->get_attribute(elementIdAttributeKey, &value))) {
- ASSERT(V_VT(&value) == VT_BSTR);
- if (VARCMP_EQ == ::VarBstrCmp(value.bstrVal, idAttribute, LOCALE_USER_DEFAULT, 0)) {
- ::VariantClear(&value);
- return parentIAccessible;
- }
- }
- ::VariantClear(&value);
-
- long childCount = parentObject.childrenCount();
- if (!childCount)
- return 0;
-
- COMPtr<IAccessible> result;
- for (long i = 0; i < childCount; ++i) {
- AccessibilityUIElement childAtIndex = parentObject.getChildAtIndex(i);
-
- result = findAccessibleObjectById(childAtIndex, idAttribute);
- if (result)
- return result;
- }
-
- return 0;
-}
-
-AccessibilityUIElement AccessibilityController::accessibleElementById(JSStringRef id)
-{
- AccessibilityUIElement rootAccessibilityUIElement = rootElement();
-
- BSTR idAttribute = JSStringCopyBSTR(id);
-
- COMPtr<IAccessible> result = findAccessibleObjectById(rootAccessibilityUIElement, idAttribute);
-
- ::SysFreeString(idAttribute);
-
- if (result)
- return AccessibilityUIElement(result);
-
- return 0;
-}
-
-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;
-}
-
-static void CALLBACK logEventProc(HWINEVENTHOOK, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD, DWORD)
-{
- // Get the accessible object for this event.
- COMPtr<IAccessible> parentObject;
-
- VARIANT vChild;
- VariantInit(&vChild);
-
- HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild);
- ASSERT(SUCCEEDED(hr));
-
- // Get the name of the focused element, and log it to stdout.
- BSTR nameBSTR;
- hr = parentObject->get_accName(vChild, &nameBSTR);
- ASSERT(SUCCEEDED(hr));
- wstring name(nameBSTR, ::SysStringLen(nameBSTR));
- SysFreeString(nameBSTR);
-
- switch (event) {
- case EVENT_OBJECT_FOCUS:
- printf("Received focus event for object '%S'.\n", name.c_str());
- break;
-
- case EVENT_OBJECT_SELECTION:
- printf("Received selection event for object '%S'.\n", name.c_str());
- break;
-
- case EVENT_OBJECT_VALUECHANGE: {
- BSTR valueBSTR;
- hr = parentObject->get_accValue(vChild, &valueBSTR);
- ASSERT(SUCCEEDED(hr));
- wstring value(valueBSTR, ::SysStringLen(valueBSTR));
- SysFreeString(valueBSTR);
-
- printf("Received value change event for object '%S', value '%S'.\n", name.c_str(), value.c_str());
- break;
- }
-
- case EVENT_SYSTEM_SCROLLINGSTART:
- printf("Received scrolling start event for object '%S'.\n", name.c_str());
- break;
-
- default:
- printf("Received unknown event for object '%S'.\n", name.c_str());
- break;
- }
-
- VariantClear(&vChild);
-}
-
-void AccessibilityController::setLogFocusEvents(bool logFocusEvents)
-{
- if (!!m_focusEventHook == logFocusEvents)
- return;
-
- if (!logFocusEvents) {
- UnhookWinEvent(m_focusEventHook);
- m_focusEventHook = 0;
- return;
- }
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object.
- rootElement();
-
- m_focusEventHook = SetWinEventHook(EVENT_OBJECT_FOCUS, EVENT_OBJECT_FOCUS, GetModuleHandle(0), logEventProc, GetCurrentProcessId(), 0, WINEVENT_INCONTEXT);
-
- ASSERT(m_focusEventHook);
-}
-
-void AccessibilityController::setLogValueChangeEvents(bool logValueChangeEvents)
-{
- if (!!m_valueChangeEventHook == logValueChangeEvents)
- return;
-
- if (!logValueChangeEvents) {
- UnhookWinEvent(m_valueChangeEventHook);
- m_valueChangeEventHook = 0;
- return;
- }
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object.
- rootElement();
-
- m_valueChangeEventHook = SetWinEventHook(EVENT_OBJECT_VALUECHANGE, EVENT_OBJECT_VALUECHANGE, GetModuleHandle(0), logEventProc, GetCurrentProcessId(), 0, WINEVENT_INCONTEXT);
-
- ASSERT(m_valueChangeEventHook);
-}
-
-void AccessibilityController::setLogScrollingStartEvents(bool logScrollingStartEvents)
-{
- if (!!m_scrollingStartEventHook == logScrollingStartEvents)
- return;
-
- if (!logScrollingStartEvents) {
- UnhookWinEvent(m_scrollingStartEventHook);
- m_scrollingStartEventHook = 0;
- return;
- }
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object.
- rootElement();
-
- m_scrollingStartEventHook = SetWinEventHook(EVENT_SYSTEM_SCROLLINGSTART, EVENT_SYSTEM_SCROLLINGSTART, GetModuleHandle(0), logEventProc, GetCurrentProcessId(), 0, WINEVENT_INCONTEXT);
-
- ASSERT(m_scrollingStartEventHook);
-}
-
-void AccessibilityController::setLogAccessibilityEvents(bool logAccessibilityEvents)
-{
- if (!!m_allEventsHook == logAccessibilityEvents)
- return;
-
- if (!logAccessibilityEvents) {
- UnhookWinEvent(m_allEventsHook);
- m_allEventsHook = 0;
- return;
- }
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object.
- rootElement();
-
- m_allEventsHook = SetWinEventHook(EVENT_MIN, EVENT_MAX, GetModuleHandle(0), logEventProc, GetCurrentProcessId(), 0, WINEVENT_INCONTEXT);
-
- ASSERT(m_allEventsHook);
-}
-
-static string stringEvent(DWORD event)
-{
- switch(event) {
- case EVENT_OBJECT_VALUECHANGE:
- return "value change event";
- default:
- return "unknown event";
- }
-}
-
-static void CALLBACK notificationListenerProc(HWINEVENTHOOK, DWORD event, HWND hwnd, LONG idObject, LONG idChild, DWORD, DWORD)
-{
- // Get the accessible object for this event.
- COMPtr<IAccessible> parentObject;
-
- VARIANT vChild;
- VariantInit(&vChild);
-
- HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &parentObject, &vChild);
- if (FAILED(hr) || !parentObject)
- return;
-
- COMPtr<IDispatch> childDispatch;
- if (FAILED(parentObject->get_accChild(vChild, &childDispatch))) {
- VariantClear(&vChild);
- return;
- }
-
- COMPtr<IAccessible> childAccessible(Query, childDispatch);
-
- sharedFrameLoadDelegate->accessibilityController()->winNotificationReceived(childAccessible, stringEvent(event));
-
- VariantClear(&vChild);
-}
-
-bool AccessibilityController::addNotificationListener(JSObjectRef functionCallback)
-{
- return false;
-}
-
-void AccessibilityController::removeNotificationListener()
-{
-}
-
-void AccessibilityController::winNotificationReceived(PlatformUIElement element, const string& eventName)
-{
- for (HashMap<PlatformUIElement, JSObjectRef>::iterator it = m_notificationListeners.begin(); it != m_notificationListeners.end(); ++it) {
- COMPtr<IServiceProvider> thisServiceProvider(Query, it->key);
- if (!thisServiceProvider)
- continue;
-
- COMPtr<IAccessibleComparable> thisComparable = comparableObject(thisServiceProvider);
- if (!thisComparable)
- continue;
-
- COMPtr<IServiceProvider> elementServiceProvider(Query, element);
- if (!elementServiceProvider)
- continue;
-
- COMPtr<IAccessibleComparable> elementComparable = comparableObject(elementServiceProvider);
- if (!elementComparable)
- continue;
-
- BOOL isSame = FALSE;
- thisComparable->isSameObject(elementComparable.get(), &isSame);
- if (!isSame)
- continue;
-
- JSRetainPtr<JSStringRef> jsNotification(Adopt, JSStringCreateWithUTF8CString(eventName.c_str()));
- JSValueRef argument = JSValueMakeString(frame->globalContext(), jsNotification.get());
- JSObjectCallAsFunction(frame->globalContext(), it->value, 0, 1, &argument, 0);
- }
-}
-
-void AccessibilityController::winAddNotificationListener(PlatformUIElement element, JSObjectRef functionCallback)
-{
- if (!m_notificationsEventHook)
- m_notificationsEventHook = SetWinEventHook(EVENT_MIN, EVENT_MAX, GetModuleHandle(0), notificationListenerProc, GetCurrentProcessId(), 0, WINEVENT_INCONTEXT);
-
- JSValueProtect(frame->globalContext(), functionCallback);
- m_notificationListeners.add(element, functionCallback);
-}
diff --git a/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp b/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp
deleted file mode 100644
index 71d9f8b25..000000000
--- a/Tools/DumpRenderTree/win/AccessibilityUIElementWin.cpp
+++ /dev/null
@@ -1,835 +0,0 @@
-/*
- * Copyright (C) 2008, 2013 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 "AccessibilityController.h"
-#include "DumpRenderTree.h"
-#include "FrameLoadDelegate.h"
-#include <JavaScriptCore/JSStringRef.h>
-#include <wtf/text/WTFString.h>
-#include <comutil.h>
-#include <tchar.h>
-#include <string>
-
-using std::wstring;
-
-static COMPtr<IAccessibleComparable> comparableObject(IAccessible* accessible)
-{
- COMPtr<IServiceProvider> serviceProvider(Query, accessible);
- if (!serviceProvider)
- return 0;
- COMPtr<IAccessibleComparable> comparable;
- serviceProvider->QueryService(SID_AccessibleComparable, __uuidof(IAccessibleComparable), reinterpret_cast<void**>(&comparable));
- return comparable;
-}
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
-{
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : m_element(other.m_element)
-{
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
-}
-
-bool AccessibilityUIElement::isEqual(AccessibilityUIElement* otherElement)
-{
- COMPtr<IAccessibleComparable> comparable = comparableObject(m_element.get());
- COMPtr<IAccessibleComparable> otherComparable = comparableObject(otherElement->m_element.get());
- if (!comparable || !otherComparable)
- return false;
- BOOL isSame = FALSE;
- if (FAILED(comparable->isSameObject(otherComparable.get(), &isSame)))
- return false;
- return isSame;
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<AccessibilityUIElement>&)
-{
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<AccessibilityUIElement>&)
-{
-}
-
-void AccessibilityUIElement::getChildren(Vector<AccessibilityUIElement>& children)
-{
- if (!m_element)
- return;
-
- long childCount;
- if (FAILED(m_element->get_accChildCount(&childCount)))
- return;
- for (long i = 0; i < childCount; ++i)
- children.append(getChildAtIndex(i));
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<AccessibilityUIElement>& elementVector, unsigned location, unsigned length)
-{
- if (!m_element)
- return;
-
- long childCount;
- unsigned appendedCount = 0;
- if (FAILED(m_element->get_accChildCount(&childCount)))
- return;
- for (long i = location; i < childCount && appendedCount < length; ++i, ++appendedCount)
- elementVector.append(getChildAtIndex(i));
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- if (!m_element)
- return 0;
-
- long childCount;
- m_element->get_accChildCount(&childCount);
- return childCount;
-}
-
-int AccessibilityUIElement::rowCount()
-{
- // FIXME: implement
- return 0;
-}
-
-int AccessibilityUIElement::columnCount()
-{
- // FIXME: implement
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
-{
- // FIXME: implement
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::getChildAtIndex(unsigned index)
-{
- if (!m_element)
- return 0;
-
- 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);
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
-{
- // FIXME: implement
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::allAttributes()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributesOfDocumentLinks()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-AccessibilityUIElement AccessibilityUIElement::titleUIElement()
-{
- COMPtr<IAccessible> platformElement = platformUIElement();
-
- COMPtr<IAccessibleComparable> comparable = comparableObject(platformElement.get());
- if (!comparable)
- return 0;
-
- VARIANT value;
- ::VariantInit(&value);
-
- _bstr_t titleUIElementAttributeKey(L"AXTitleUIElementAttribute");
- if (FAILED(comparable->get_attribute(titleUIElementAttributeKey, &value))) {
- ::VariantClear(&value);
- return 0;
- }
-
- if (V_VT(&value) == VT_EMPTY) {
- ::VariantClear(&value);
- return 0;
- }
-
- ASSERT(V_VT(&value) == VT_UNKNOWN);
-
- if (V_VT(&value) != VT_UNKNOWN) {
- ::VariantClear(&value);
- return 0;
- }
-
- COMPtr<IAccessible> titleElement(Query, value.punkVal);
- if (value.punkVal)
- value.punkVal->Release();
- ::VariantClear(&value);
-
- return titleElement;
-}
-
-AccessibilityUIElement AccessibilityUIElement::parentElement()
-{
- if (!m_element)
- return 0;
-
- COMPtr<IDispatch> parent;
- m_element->get_accParent(&parent);
-
- COMPtr<IAccessible> parentAccessible(Query, parent);
- return parentAccessible;
-}
-
-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()
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- VARIANT vRole;
- if (FAILED(m_element->get_accRole(self(), &vRole)))
- return JSStringCreateWithCharacters(0, 0);
-
- ASSERT(V_VT(&vRole) == VT_I4 || V_VT(&vRole) == VT_BSTR);
-
- wstring result;
- if (V_VT(&vRole) == VT_I4) {
- unsigned roleTextLength = ::GetRoleText(V_I4(&vRole), 0, 0) + 1;
-
- Vector<TCHAR> roleText(roleTextLength);
-
- ::GetRoleText(V_I4(&vRole), roleText.data(), roleTextLength);
-
- result = roleText.data();
- } else if (V_VT(&vRole) == VT_BSTR)
- result = wstring(V_BSTR(&vRole), ::SysStringLen(V_BSTR(&vRole)));
-
- ::VariantClear(&vRole);
-
- return JSStringCreateWithCharacters(result.data(), result.length());
-}
-
-JSStringRef AccessibilityUIElement::subrole()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::roleDescription()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::title()
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- 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()
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- BSTR descriptionBSTR;
- if (FAILED(m_element->get_accDescription(self(), &descriptionBSTR)) || !descriptionBSTR)
- return JSStringCreateWithCharacters(0, 0);
- wstring description(descriptionBSTR, SysStringLen(descriptionBSTR));
- ::SysFreeString(descriptionBSTR);
- return JSStringCreateWithCharacters(description.data(), description.length());
-}
-
-JSStringRef AccessibilityUIElement::stringValue()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::language()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::helpText() const
-{
- return 0;
-}
-
-double AccessibilityUIElement::x()
-{
- if (!m_element)
- return 0;
-
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return x;
-}
-
-double AccessibilityUIElement::y()
-{
- if (!m_element)
- return 0;
-
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return y;
-}
-
-double AccessibilityUIElement::width()
-{
- if (!m_element)
- return 0;
-
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return width;
-}
-
-double AccessibilityUIElement::height()
-{
- if (!m_element)
- return 0;
-
- long x, y, width, height;
- if (FAILED(m_element->accLocation(&x, &y, &width, &height, self())))
- return 0;
- return height;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- return 0;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::valueDescription()
-{
- return 0;
-}
-
-static DWORD accessibilityState(COMPtr<IAccessible> element)
-{
- VARIANT state;
- element->get_accState(self(), &state);
-
- ASSERT(V_VT(&state) == VT_I4);
-
- DWORD result = state.lVal;
- VariantClear(&state);
-
- return result;
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_SELECTED) == STATE_SYSTEM_SELECTED;
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- return false;
-}
-
-JSStringRef AccessibilityUIElement::ariaDropEffects() const
-{
- return 0;
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- return false;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- if (!m_element)
- return false;
-
- VARIANT vState;
- if (FAILED(m_element->get_accState(self(), &vState)))
- return false;
-
- return vState.lVal & STATE_SYSTEM_CHECKED;
-}
-
-JSStringRef AccessibilityUIElement::orientation() const
-{
- return 0;
-}
-
-double AccessibilityUIElement::intValue() const
-{
- if (!m_element)
- return 0;
-
- 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::isPressActionSupported()
-{
- if (!m_element)
- return 0;
-
- BSTR valueBSTR;
- if (FAILED(m_element->get_accDefaultAction(self(), &valueBSTR) || !valueBSTR))
- return false;
-
- if (!::SysStringLen(valueBSTR))
- return false;
-
- return true;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- return false;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- return false;
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_UNAVAILABLE) != STATE_SYSTEM_UNAVAILABLE;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- 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);
-}
-
-JSStringRef AccessibilityUIElement::stringForRange(unsigned, unsigned)
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::attributedStringForRange(unsigned, unsigned)
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned, unsigned)
-{
- return false;
-}
-
-AccessibilityUIElement AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::cellForColumnAndRow(unsigned column, unsigned row)
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::selectedTextRange()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
-}
-
-JSStringRef AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return 0;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
-{
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
-{
- return false;
-}
-
-void AccessibilityUIElement::increment()
-{
-}
-
-void AccessibilityUIElement::decrement()
-{
-}
-
-void AccessibilityUIElement::showMenu()
-{
- if (!m_element)
- return;
-
- ASSERT(hasPopup());
- m_element->accDoDefaultAction(self());
-}
-
-void AccessibilityUIElement::press()
-{
- if (!m_element)
- return;
-
- m_element->accDoDefaultAction(self());
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::selectedRowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::rowAtIndex(unsigned index)
-{
- return 0;
-}
-
-AccessibilityUIElement AccessibilityUIElement::disclosedByRow()
-{
- return 0;
-}
-
-JSStringRef AccessibilityUIElement::accessibilityValue() const
-{
- if (!m_element)
- return JSStringCreateWithCharacters(0, 0);
-
- BSTR valueBSTR;
- if (FAILED(m_element->get_accValue(self(), &valueBSTR)) || !valueBSTR)
- return JSStringCreateWithCharacters(0, 0);
-
- wstring value(valueBSTR, SysStringLen(valueBSTR));
- ::SysFreeString(valueBSTR);
-
- return JSStringCreateWithCharacters(value.data(), value.length());
-}
-
-
-JSStringRef AccessibilityUIElement::documentEncoding()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::documentURI()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSStringRef AccessibilityUIElement::url()
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-bool AccessibilityUIElement::addNotificationListener(JSObjectRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- sharedFrameLoadDelegate->accessibilityController()->winAddNotificationListener(m_element, functionCallback);
- return true;
-}
-
-void AccessibilityUIElement::removeNotificationListener()
-{
- // FIXME: implement
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_SELECTABLE) == STATE_SYSTEM_SELECTABLE;
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- DWORD multiSelectable = STATE_SYSTEM_EXTSELECTABLE | STATE_SYSTEM_MULTISELECTABLE;
- DWORD state = accessibilityState(m_element);
- return (state & multiSelectable) == multiSelectable;
-}
-
-bool AccessibilityUIElement::isSelectedOptionActive() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_INVISIBLE) != STATE_SYSTEM_INVISIBLE;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_OFFSCREEN) == STATE_SYSTEM_OFFSCREEN;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_COLLAPSED) == STATE_SYSTEM_COLLAPSED;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- DWORD state = accessibilityState(m_element);
- return (state & STATE_SYSTEM_HASPOPUP) == STATE_SYSTEM_HASPOPUP;
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- if (!m_element)
- return;
-
- m_element->accSelect(SELFLAG_TAKEFOCUS, self());
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- if (!m_element)
- return;
-
- m_element->accSelect(SELFLAG_TAKESELECTION, self());
-}
-
-void AccessibilityUIElement::addSelection()
-{
- if (!m_element)
- return;
-
- m_element->accSelect(SELFLAG_ADDSELECTION, self());
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- if (!m_element)
- return;
-
- m_element->accSelect(SELFLAG_REMOVESELECTION, self());
-}
-
-void AccessibilityUIElement::scrollToMakeVisible()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height)
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::scrollToGlobalPoint(int x, int y)
-{
- // FIXME: implement
-}
diff --git a/Tools/DumpRenderTree/win/DRTDataObject.cpp b/Tools/DumpRenderTree/win/DRTDataObject.cpp
deleted file mode 100644
index b3504539b..000000000
--- a/Tools/DumpRenderTree/win/DRTDataObject.cpp
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2012 Baidu 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 "config.h"
-#include "DRTDataObject.h"
-
-FORMATETC* cfHDropFormat()
-{
- static FORMATETC urlFormat = {CF_HDROP, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-FORMATETC* cfFileNameWFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"FileNameW");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-FORMATETC* cfUrlWFormat()
-{
- static UINT cf = RegisterClipboardFormat(L"UniformResourceLocatorW");
- static FORMATETC urlFormat = {cf, 0, DVASPECT_CONTENT, -1, TYMED_HGLOBAL};
- return &urlFormat;
-}
-
-class WCEnumFormatEtc : public IEnumFORMATETC {
-public:
- explicit WCEnumFormatEtc(const Vector<FORMATETC>& formats);
- explicit WCEnumFormatEtc(const Vector<FORMATETC*>& formats);
-
- // IUnknown members
- STDMETHOD(QueryInterface)(REFIID, void**);
- STDMETHOD_(ULONG, AddRef)();
- STDMETHOD_(ULONG, Release)();
-
- // IEnumFORMATETC members
- STDMETHOD(Next)(ULONG, LPFORMATETC, ULONG*);
- STDMETHOD(Skip)(ULONG);
- STDMETHOD(Reset)();
- STDMETHOD(Clone)(IEnumFORMATETC**);
-
-private:
- long m_ref;
- Vector<FORMATETC> m_formats;
- size_t m_current;
-};
-
-WCEnumFormatEtc::WCEnumFormatEtc(const Vector<FORMATETC>& formats)
- : m_ref(1)
- , m_current(0)
- , m_formats(formats)
-{
-}
-
-WCEnumFormatEtc::WCEnumFormatEtc(const Vector<FORMATETC*>& formats)
- : m_ref(1)
- , m_current(0)
-{
- for (size_t i = 0; i < formats.size(); ++i)
- m_formats.append(*formats[i]);
-}
-
-STDMETHODIMP WCEnumFormatEtc::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IEnumFORMATETC)) {
- *ppvObject = this;
- AddRef();
- return S_OK;
- }
-
- return E_NOINTERFACE;
-}
-
-STDMETHODIMP_(ULONG) WCEnumFormatEtc::AddRef()
-{
- return InterlockedIncrement(&m_ref);
-}
-
-STDMETHODIMP_(ULONG) WCEnumFormatEtc::Release()
-{
- long refCount = InterlockedDecrement(&m_ref);
- if (!refCount)
- delete this;
- return refCount;
-}
-
-STDMETHODIMP WCEnumFormatEtc::Next(ULONG celt, LPFORMATETC lpFormatEtc, ULONG* pceltFetched)
-{
- if (pceltFetched)
- *pceltFetched = 0;
-
- ULONG cReturn = celt;
-
- if (celt <= 0 || !lpFormatEtc || m_current >= m_formats.size())
- return S_FALSE;
-
- if (!pceltFetched && celt != 1) // pceltFetched can be 0 only for 1 item request
- return S_FALSE;
-
- while (m_current < m_formats.size() && cReturn > 0) {
- *lpFormatEtc++ = m_formats[m_current++];
- --cReturn;
- }
- if (pceltFetched)
- *pceltFetched = celt - cReturn;
-
- return !cReturn ? S_OK : S_FALSE;
-}
-
-STDMETHODIMP WCEnumFormatEtc::Skip(ULONG celt)
-{
- if ((m_current + celt) >= m_formats.size())
- return S_FALSE;
- m_current += celt;
- return S_OK;
-}
-
-STDMETHODIMP WCEnumFormatEtc::Reset()
-{
- m_current = 0;
- return S_OK;
-}
-
-STDMETHODIMP WCEnumFormatEtc::Clone(IEnumFORMATETC** ppCloneEnumFormatEtc)
-{
- if (!ppCloneEnumFormatEtc)
- return E_POINTER;
-
- WCEnumFormatEtc* newEnum = new WCEnumFormatEtc(m_formats);
- if (!newEnum)
- return E_OUTOFMEMORY;
-
- newEnum->AddRef();
- newEnum->m_current = m_current;
- *ppCloneEnumFormatEtc = newEnum;
- return S_OK;
-}
-
-//////////////////////////////////////////////////////////////////////////
-HRESULT DRTDataObject::createInstance(DRTDataObject** result)
-{
- if (!result)
- return E_POINTER;
- *result = new DRTDataObject();
- return S_OK;
-}
-
-DRTDataObject::DRTDataObject()
- : m_ref(1)
-{
-}
-
-DRTDataObject::~DRTDataObject()
-{
- for (size_t i = 0; i < m_medium.size(); ++i) {
- ReleaseStgMedium(m_medium[i]);
- delete m_medium[i];
- }
- WTF::deleteAllValues(m_formats);
-}
-
-STDMETHODIMP DRTDataObject::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDataObject))
- *ppvObject = this;
-
- if (*ppvObject) {
- AddRef();
- return S_OK;
- }
- return E_NOINTERFACE;
-}
-
-STDMETHODIMP_(ULONG) DRTDataObject::AddRef()
-{
- return InterlockedIncrement(&m_ref);
-}
-
-STDMETHODIMP_(ULONG) DRTDataObject::Release()
-{
- long refCount = InterlockedDecrement(&m_ref);
- if (!refCount)
- delete this;
- return refCount;
-}
-
-STDMETHODIMP DRTDataObject::GetData(FORMATETC* pformatetcIn, STGMEDIUM* pmedium)
-{
- if (!pformatetcIn || !pmedium)
- return E_POINTER;
- pmedium->hGlobal = 0;
-
- for (size_t i = 0; i < m_formats.size(); ++i) {
- if (pformatetcIn->lindex == m_formats[i]->lindex && pformatetcIn->dwAspect == m_formats[i]->dwAspect && pformatetcIn->cfFormat == m_formats[i]->cfFormat) {
- CopyMedium(pmedium, m_medium[i], m_formats[i]);
- return S_OK;
- }
- }
- return DV_E_FORMATETC;
-}
-
-STDMETHODIMP DRTDataObject::GetDataHere(FORMATETC*, STGMEDIUM*)
-{
- return E_NOTIMPL;
-}
-
-STDMETHODIMP DRTDataObject::QueryGetData(FORMATETC* pformatetc)
-{
- if (!pformatetc)
- return E_POINTER;
-
- if (!(DVASPECT_CONTENT & pformatetc->dwAspect))
- return (DV_E_DVASPECT);
-
- for (size_t i = 0; i < m_formats.size(); ++i) {
- if (pformatetc->tymed & m_formats[i]->tymed) {
- if (pformatetc->cfFormat == m_formats[i]->cfFormat)
- return S_OK;
- }
- }
- return DV_E_TYMED;
-}
-
-STDMETHODIMP DRTDataObject::GetCanonicalFormatEtc(FORMATETC*, FORMATETC*)
-{
- return DATA_S_SAMEFORMATETC;
-}
-
-STDMETHODIMP DRTDataObject::SetData(FORMATETC* pformatetc, STGMEDIUM* pmedium, BOOL fRelease)
-{
- if (!pformatetc || !pmedium)
- return E_POINTER;
-
- FORMATETC* formatetc = new FORMATETC;
- if (!formatetc)
- return E_OUTOFMEMORY;
-
- STGMEDIUM* pStgMed = new STGMEDIUM;
-
- if (!pStgMed) {
- delete formatetc;
- return E_OUTOFMEMORY;
- }
-
- ZeroMemory(formatetc, sizeof(FORMATETC));
- ZeroMemory(pStgMed, sizeof(STGMEDIUM));
-
- *formatetc = *pformatetc;
- m_formats.append(formatetc);
-
- if (fRelease)
- *pStgMed = *pmedium;
- else
- CopyMedium(pStgMed, pmedium, pformatetc);
- m_medium.append(pStgMed);
-
- return S_OK;
-}
-
-void DRTDataObject::CopyMedium(STGMEDIUM* pMedDest, STGMEDIUM* pMedSrc, FORMATETC* pFmtSrc)
-{
- switch (pMedSrc->tymed) {
-#if !OS(WINCE)
- case TYMED_HGLOBAL:
- pMedDest->hGlobal = static_cast<HGLOBAL>(OleDuplicateData(pMedSrc->hGlobal, pFmtSrc->cfFormat, 0));
- break;
- case TYMED_GDI:
- pMedDest->hBitmap = static_cast<HBITMAP>(OleDuplicateData(pMedSrc->hBitmap, pFmtSrc->cfFormat, 0));
- break;
- case TYMED_MFPICT:
- pMedDest->hMetaFilePict = static_cast<HMETAFILEPICT>(OleDuplicateData(pMedSrc->hMetaFilePict, pFmtSrc->cfFormat, 0));
- break;
- case TYMED_ENHMF:
- pMedDest->hEnhMetaFile = static_cast<HENHMETAFILE>(OleDuplicateData(pMedSrc->hEnhMetaFile, pFmtSrc->cfFormat, 0));
- break;
- case TYMED_FILE:
- pMedSrc->lpszFileName = static_cast<LPOLESTR>(OleDuplicateData(pMedSrc->lpszFileName, pFmtSrc->cfFormat, 0));
- break;
-#endif
- case TYMED_ISTREAM:
- pMedDest->pstm = pMedSrc->pstm;
- pMedSrc->pstm->AddRef();
- break;
- case TYMED_ISTORAGE:
- pMedDest->pstg = pMedSrc->pstg;
- pMedSrc->pstg->AddRef();
- break;
- default:
- break;
- }
- pMedDest->tymed = pMedSrc->tymed;
- pMedDest->pUnkForRelease = 0;
- if (pMedSrc->pUnkForRelease) {
- pMedDest->pUnkForRelease = pMedSrc->pUnkForRelease;
- pMedSrc->pUnkForRelease->AddRef();
- }
-}
-STDMETHODIMP DRTDataObject::EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC** ppenumFormatEtc)
-{
- if (!ppenumFormatEtc)
- return E_POINTER;
-
- *ppenumFormatEtc = 0;
- switch (dwDirection) {
- case DATADIR_GET:
- *ppenumFormatEtc = new WCEnumFormatEtc(m_formats);
- if (!(*ppenumFormatEtc))
- return E_OUTOFMEMORY;
- break;
-
- case DATADIR_SET:
- default:
- return E_NOTIMPL;
- break;
- }
-
- return S_OK;
-}
-
-STDMETHODIMP DRTDataObject::DAdvise(FORMATETC*, DWORD, IAdviseSink*, DWORD*)
-{
- return OLE_E_ADVISENOTSUPPORTED;
-}
-
-STDMETHODIMP DRTDataObject::DUnadvise(DWORD)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDataObject::EnumDAdvise(IEnumSTATDATA**)
-{
- return OLE_E_ADVISENOTSUPPORTED;
-}
-
-void DRTDataObject::clearData(CLIPFORMAT format)
-{
- size_t position = 0;
- while (position < m_formats.size()) {
- if (m_formats[position]->cfFormat == format) {
- FORMATETC* current = m_formats[position];
- m_formats[position] = m_formats[m_formats.size() - 1];
- m_formats[m_formats.size() - 1] = 0;
- m_formats.removeLast();
- delete current;
- STGMEDIUM* medium = m_medium[position];
- m_medium[position] = m_medium[m_medium.size() - 1];
- m_medium[m_medium.size() - 1] = 0;
- m_medium.removeLast();
- ReleaseStgMedium(medium);
- delete medium;
- continue;
- }
- position++;
- }
-}
diff --git a/Tools/DumpRenderTree/win/DRTDataObject.h b/Tools/DumpRenderTree/win/DRTDataObject.h
deleted file mode 100644
index b772b253d..000000000
--- a/Tools/DumpRenderTree/win/DRTDataObject.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2012 Baidu 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 DRTDataObject_h
-#define DRTDataObject_h
-
-#include <ShlObj.h>
-#include <objidl.h>
-#include <wtf/Vector.h>
-
-FORMATETC* cfHDropFormat();
-
-FORMATETC* cfFileNameWFormat();
-
-FORMATETC* cfUrlWFormat();
-
-class DRTDataObject : public IDataObject {
-public:
- void CopyMedium(STGMEDIUM* pMedDest, STGMEDIUM* pMedSrc, FORMATETC* pFmtSrc);
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef();
- virtual ULONG STDMETHODCALLTYPE Release();
-
- // IDataObject
- virtual HRESULT STDMETHODCALLTYPE GetData(FORMATETC* pformatIn, STGMEDIUM* pmedium);
- virtual HRESULT STDMETHODCALLTYPE GetDataHere(FORMATETC* pformat, STGMEDIUM* pmedium);
- virtual HRESULT STDMETHODCALLTYPE QueryGetData(FORMATETC* pformat);
- virtual HRESULT STDMETHODCALLTYPE GetCanonicalFormatEtc(FORMATETC* pformatectIn, FORMATETC* pformatOut);
- virtual HRESULT STDMETHODCALLTYPE SetData(FORMATETC* pformat, STGMEDIUM*pmedium, BOOL release);
- virtual HRESULT STDMETHODCALLTYPE EnumFormatEtc(DWORD dwDirection, IEnumFORMATETC** ppenumFormatEtc);
- virtual HRESULT STDMETHODCALLTYPE DAdvise(FORMATETC*, DWORD, IAdviseSink*, DWORD*);
- virtual HRESULT STDMETHODCALLTYPE DUnadvise(DWORD);
- virtual HRESULT STDMETHODCALLTYPE EnumDAdvise(IEnumSTATDATA**);
-
- void clearData(CLIPFORMAT);
-
- static HRESULT createInstance(DRTDataObject**);
-private:
- DRTDataObject();
- ~DRTDataObject();
- long m_ref;
- Vector<FORMATETC*> m_formats;
- Vector<STGMEDIUM*> m_medium;
-};
-
-#endif // DRTDataObject_h
diff --git a/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp b/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp
deleted file mode 100644
index a7bfc6d44..000000000
--- a/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.cpp
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2009 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.
- */
-
-#include "config.h"
-#include "DRTDesktopNotificationPresenter.h"
-
-#include "DumpRenderTree.h"
-#include "TestRunner.h"
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSStringRefBSTR.h>
-#include <WebCore/NotificationClient.h>
-
-DRTDesktopNotificationPresenter::DRTDesktopNotificationPresenter()
- : m_refCount(1) {}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<DRTDesktopNotificationPresenter*>(this);
- else if (IsEqualGUID(riid, IID_IWebDesktopNotificationsDelegate))
- *ppvObject = static_cast<DRTDesktopNotificationPresenter*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG STDMETHODCALLTYPE DRTDesktopNotificationPresenter::AddRef()
-{
- return ++m_refCount;
-}
-
-ULONG STDMETHODCALLTYPE DRTDesktopNotificationPresenter::Release()
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::showDesktopNotification(
- /* [in] */ IWebDesktopNotification* notification)
-{
- BSTR title, text, url;
- BOOL html;
-
- if (!notification->isHTML(&html) && html) {
- notification->contentsURL(&url);
- printf("DESKTOP NOTIFICATION: contents at %S\n", url ? url : L"");
- } else {
- notification->iconURL(&url);
- notification->title(&title);
- notification->text(&text);
- printf("DESKTOP NOTIFICATION: icon %S, title %S, text %S\n",
- url ? url : L"",
- title ? title : L"",
- text ? text : L"");
- }
-
- // In this stub implementation, the notification is displayed immediately;
- // we dispatch the display event to mimic that.
- notification->notifyDisplay();
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::cancelDesktopNotification(
- /* [in] */ IWebDesktopNotification* notification)
-{
- BSTR identifier;
- BOOL html;
- notification->isHTML(&html);
- if (html)
- notification->contentsURL(&identifier);
- else
- notification->title(&identifier);
-
- printf("DESKTOP NOTIFICATION CLOSED: %S\n", identifier ? identifier : L"");
- notification->notifyClose(false);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::notificationDestroyed(
- /* [in] */ IWebDesktopNotification* notification)
-{
- // Since in these tests events happen immediately, we don't hold on to
- // Notification pointers. So there's no cleanup to do.
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::checkNotificationPermission(
- /* [in] */ BSTR origin,
- /* [out, retval] */ int* result)
-{
-#if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
- JSStringRef jsOrigin = JSStringCreateWithBSTR(origin);
- bool allowed = ::gTestRunner->checkDesktopNotificationPermission(jsOrigin);
-
- if (allowed)
- *result = WebCore::NotificationClient::PermissionAllowed;
- else
- *result = WebCore::NotificationClient::PermissionDenied;
-
- JSStringRelease(jsOrigin);
-#endif
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE DRTDesktopNotificationPresenter::requestNotificationPermission(
- /* [in] */ BSTR origin)
-{
- printf("DESKTOP NOTIFICATION PERMISSION REQUESTED: %S\n", origin ? origin : L"");
- return S_OK;
-}
diff --git a/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.h b/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.h
deleted file mode 100644
index 567984503..000000000
--- a/Tools/DumpRenderTree/win/DRTDesktopNotificationPresenter.h
+++ /dev/null
@@ -1,66 +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 DRTDesktopNotificationPresenter_h
-#define DRTDesktopNotificationPresenter_h
-
-#include <WebKit/WebKit.h>
-#include <wtf/OwnPtr.h>
-#include <windef.h>
-
-class DRTDesktopNotificationPresenter : public IWebDesktopNotificationsDelegate {
-public:
- DRTDesktopNotificationPresenter();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebDesktopNotificationsDelegate
- virtual HRESULT STDMETHODCALLTYPE showDesktopNotification(
- /* [in] */ IWebDesktopNotification* notification);
-
- virtual HRESULT STDMETHODCALLTYPE cancelDesktopNotification(
- /* [in] */ IWebDesktopNotification* notification);
-
- virtual HRESULT STDMETHODCALLTYPE notificationDestroyed(
- /* [in] */ IWebDesktopNotification* notification);
-
- virtual HRESULT STDMETHODCALLTYPE checkNotificationPermission(
- /* [in] */ BSTR origin,
- /* [out, retval] */ int* result);
-
- virtual HRESULT STDMETHODCALLTYPE requestNotificationPermission(
- /* [in] */ BSTR origin);
-
-private:
- ULONG m_refCount;
-};
-
-#endif
diff --git a/Tools/DumpRenderTree/win/DRTDropSource.cpp b/Tools/DumpRenderTree/win/DRTDropSource.cpp
deleted file mode 100644
index 08b1be887..000000000
--- a/Tools/DumpRenderTree/win/DRTDropSource.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
-* Copyright (C) 2012 Baidu 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 "config.h"
-#include "DRTDropSource.h"
-
-DRTDropSource::DRTDropSource()
- : m_ref(1)
- , m_dropped(false)
-{
-}
-
-DRTDropSource::~DRTDropSource()
-{
-}
-
-STDMETHODIMP DRTDropSource::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualIID(riid, IID_IUnknown) || IsEqualIID(riid, IID_IDropSource)) {
- *ppvObject = this;
- AddRef();
-
- return S_OK;
- }
-
- return E_NOINTERFACE;
-}
-
-STDMETHODIMP_(ULONG) DRTDropSource::AddRef()
-{
- return InterlockedIncrement(&m_ref);
-}
-
-STDMETHODIMP_(ULONG) DRTDropSource::Release()
-{
- long refCount = InterlockedDecrement(&m_ref);
- if (!refCount)
- delete this;
- return refCount;
-}
-
-HRESULT DRTDropSource::createInstance(IDropSource** result)
-{
- if (!result)
- return E_INVALIDARG;
- *result = new DRTDropSource;
- return S_OK;
-}
-
-STDMETHODIMP DRTDropSource::QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState)
-{
- if (fEscapePressed || !(grfKeyState & (MK_LBUTTON | MK_RBUTTON))) {
- m_dropped = !fEscapePressed;
- return fEscapePressed ? DRAGDROP_S_CANCEL : DRAGDROP_S_DROP;
- }
-
- return S_OK;
-}
-
-STDMETHODIMP DRTDropSource::GiveFeedback(DWORD dwEffect)
-{
- return DRAGDROP_S_USEDEFAULTCURSORS;
-}
diff --git a/Tools/DumpRenderTree/win/DRTDropSource.h b/Tools/DumpRenderTree/win/DRTDropSource.h
deleted file mode 100644
index f37f2b7e4..000000000
--- a/Tools/DumpRenderTree/win/DRTDropSource.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-* Copyright (C) 2012 Baidu 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 DRTDropSource_h
-#define DRTDropSource_h
-
-#include <ShlObj.h>
-#include <windows.h>
-
-class DRTDropSource : public IDropSource {
-public:
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef();
- virtual ULONG STDMETHODCALLTYPE Release();
- virtual HRESULT STDMETHODCALLTYPE QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState);
- virtual HRESULT STDMETHODCALLTYPE GiveFeedback(DWORD dwEffect);
-
- static HRESULT createInstance(IDropSource** result);
-private:
- DRTDropSource();
- ~DRTDropSource();
- long m_ref;
- bool m_dropped;
-};
-
-#endif // DRTDropSource_h
diff --git a/Tools/DumpRenderTree/win/DraggingInfo.h b/Tools/DumpRenderTree/win/DraggingInfo.h
deleted file mode 100644
index 98982bc16..000000000
--- a/Tools/DumpRenderTree/win/DraggingInfo.h
+++ /dev/null
@@ -1,67 +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_performedDropEffect(DROPEFFECT_NONE)
- {
- 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; }
-
- DWORD performedDropEffect() const { return m_performedDropEffect; }
- void setPerformedDropEffect(DWORD effect) { m_performedDropEffect = effect; }
-
-private:
- IDataObject* m_object;
- IDropSource* m_source;
- DWORD m_performedDropEffect;
-};
-
-#endif // !defined(DraggingInfo_h)
diff --git a/Tools/DumpRenderTree/win/DumpRenderTree.cpp b/Tools/DumpRenderTree/win/DumpRenderTree.cpp
deleted file mode 100644
index 46c528a6d..000000000
--- a/Tools/DumpRenderTree/win/DumpRenderTree.cpp
+++ /dev/null
@@ -1,1445 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2008, 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.
- * 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 "HistoryDelegate.h"
-#include "JavaScriptThreading.h"
-#include "PixelDumpSupport.h"
-#include "PolicyDelegate.h"
-#include "ResourceLoadDelegate.h"
-#include "TestRunner.h"
-#include "UIDelegate.h"
-#include "WebCoreTestSupport.h"
-#include "WorkQueueItem.h"
-#include "WorkQueue.h"
-
-#include <comutil.h>
-#include <fcntl.h>
-#include <io.h>
-#include <math.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 <CoreFoundation/CoreFoundation.h>
-#include <WebCore/FileSystem.h>
-#include <WebKit/WebKit.h>
-#include <WebKit/WebKitCOMAPI.h>
-
-#if USE(CFNETWORK)
-#include <CFNetwork/CFHTTPCookiesPriv.h>
-#include <CFNetwork/CFURLCachePriv.h>
-#endif
-
-using namespace std;
-
-#ifdef DEBUG_ALL
-const LPWSTR TestPluginDir = L"TestNetscapePlugin_Debug";
-#else
-const LPWSTR TestPluginDir = L"TestNetscapePlugin";
-#endif
-
-static LPCWSTR fontsEnvironmentVariable = L"WEBKIT_TESTFONTS";
-static LPCWSTR dumpRenderTreeTemp = L"DUMPRENDERTREE_TEMP";
-#define USE_MAC_FONTS
-
-static CFStringRef WebDatabaseDirectoryDefaultsKey = CFSTR("WebDatabaseDirectory");
-static CFStringRef WebKitLocalCacheDefaultsKey = CFSTR("WebKitLocalCache");
-static CFStringRef WebStorageDirectoryDefaultsKey = CFSTR("WebKitLocalStorageDatabasePathPreferenceKey");
-
-const LPCWSTR kDumpRenderTreeClassName = L"DumpRenderTreeWindow";
-
-static bool dumpTree = true;
-static bool dumpPixelsForAllTests = false;
-static bool dumpPixelsForCurrentTest;
-static bool dumpAllPixels;
-static bool printSeparators;
-static bool leakChecking = false;
-static bool threaded = false;
-static bool forceComplexText = false;
-static bool printSupportedFeatures = 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
-PolicyDelegate* policyDelegate;
-COMPtr<FrameLoadDelegate> sharedFrameLoadDelegate;
-COMPtr<UIDelegate> sharedUIDelegate;
-COMPtr<EditingDelegate> sharedEditingDelegate;
-COMPtr<HistoryDelegate> sharedHistoryDelegate;
-
-IWebFrame* frame;
-HWND webViewWindow;
-
-RefPtr<TestRunner> gTestRunner;
-
-UINT_PTR waitToDumpWatchdog = 0;
-
-void setPersistentUserStyleSheetLocation(CFStringRef url)
-{
- persistentUserStyleSheetLocation = url;
-}
-
-bool setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
-#if USE(CFNETWORK)
- COMPtr<IWebCookieManager> cookieManager;
- if (FAILED(WebKitCreateInstance(CLSID_WebCookieManager, 0, IID_IWebCookieManager, reinterpret_cast<void**>(&cookieManager))))
- return false;
- CFHTTPCookieStorageRef cookieStorage = 0;
- if (FAILED(cookieManager->cookieStorage(&cookieStorage)) || !cookieStorage)
- return false;
-
- WebKitCookieStorageAcceptPolicy cookieAcceptPolicy = alwaysAcceptCookies ? WebKitCookieStorageAcceptPolicyAlways : WebKitCookieStorageAcceptPolicyOnlyFromMainDocumentDomain;
- CFHTTPCookieStorageSetCookieAcceptPolicy(cookieStorage, cookieAcceptPolicy);
- return true;
-#else
- // FIXME: Implement!
- return false;
-#endif
-}
-
-static RetainPtr<CFStringRef> substringFromIndex(CFStringRef string, CFIndex index)
-{
- return adoptCF(CFStringCreateWithSubstring(kCFAllocatorDefault, string, CFRangeMake(index, CFStringGetLength(string) - index)));
-}
-
-wstring urlSuitableForTestResult(const wstring& urlString)
-{
- RetainPtr<CFURLRef> url = adoptCF(CFURLCreateWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(urlString.c_str()), urlString.length() * sizeof(wstring::value_type), kCFStringEncodingUTF16, 0));
-
- RetainPtr<CFStringRef> scheme = adoptCF(CFURLCopyScheme(url.get()));
- if (scheme && CFStringCompare(scheme.get(), CFSTR("file"), kCFCompareCaseInsensitive) != kCFCompareEqualTo)
- return urlString;
-
- COMPtr<IWebDataSource> dataSource;
- if (FAILED(frame->dataSource(&dataSource))) {
- if (FAILED(frame->provisionalDataSource(&dataSource)))
- return urlString;
- }
-
- COMPtr<IWebMutableURLRequest> request;
- if (FAILED(dataSource->request(&request)))
- return urlString;
-
- _bstr_t requestURLString;
- if (FAILED(request->URL(requestURLString.GetAddress())))
- return urlString;
-
- RetainPtr<CFURLRef> requestURL = adoptCF(CFURLCreateWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(requestURLString.GetBSTR()), requestURLString.length() * sizeof(OLECHAR), kCFStringEncodingUTF16, 0));
- RetainPtr<CFURLRef> baseURL = adoptCF(CFURLCreateCopyDeletingLastPathComponent(kCFAllocatorDefault, requestURL.get()));
-
- RetainPtr<CFStringRef> basePath = adoptCF(CFURLCopyPath(baseURL.get()));
- RetainPtr<CFStringRef> path = adoptCF(CFURLCopyPath(url.get()));
-
- return cfStringRefToWString(substringFromIndex(path.get(), CFStringGetLength(basePath.get())).get());
-}
-
-wstring lastPathComponent(const wstring& urlString)
-{
- if (urlString.empty())
- return urlString;
-
- RetainPtr<CFURLRef> url = adoptCF(CFURLCreateWithBytes(kCFAllocatorDefault, reinterpret_cast<const UInt8*>(urlString.c_str()), urlString.length() * sizeof(wstring::value_type), kCFStringEncodingUTF16, 0));
- RetainPtr<CFStringRef> lastPathComponent = adoptCF(CFURLCopyLastPathComponent(url.get()));
-
- return cfStringRefToWString(lastPathComponent.get());
-}
-
-static string toUTF8(const wchar_t* wideString, size_t length)
-{
- int result = WideCharToMultiByte(CP_UTF8, 0, wideString, length + 1, 0, 0, 0, 0);
- Vector<char> utf8Vector(result);
- result = WideCharToMultiByte(CP_UTF8, 0, wideString, length + 1, utf8Vector.data(), result, 0, 0);
- if (!result)
- return string();
-
- return string(utf8Vector.data(), utf8Vector.size() - 1);
-}
-
-#if USE(CF)
-static String libraryPathForDumpRenderTree()
-{
- DWORD size = ::GetEnvironmentVariable(dumpRenderTreeTemp, 0, 0);
- Vector<TCHAR> buffer(size);
- if (::GetEnvironmentVariable(dumpRenderTreeTemp, buffer.data(), buffer.size())) {
- wstring path = buffer.data();
- if (!path.empty() && (path[path.length() - 1] != L'\\'))
- path.append(L"\\");
- return String (path.data(), path.length());
- }
-
- return WebCore::localUserSpecificStorageDirectory();
-}
-#endif
-
-string toUTF8(BSTR bstr)
-{
- return toUTF8(bstr, SysStringLen(bstr));
-}
-
-string toUTF8(const wstring& wideString)
-{
- return toUTF8(wideString.c_str(), wideString.length());
-}
-
-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());
-}
-
-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;
-}
-
-static void addQTDirToPATH()
-{
- static LPCWSTR pathEnvironmentVariable = L"PATH";
- static LPCWSTR quickTimeKeyName = L"Software\\Apple Computer, Inc.\\QuickTime";
- static LPCWSTR quickTimeSysDir = L"QTSysDir";
- static bool initialized;
-
- if (initialized)
- return;
- initialized = true;
-
- // Get the QuickTime dll directory from the registry. The key can be in either HKLM or HKCU.
- WCHAR qtPath[MAX_PATH];
- DWORD qtPathBufferLen = sizeof(qtPath);
- DWORD keyType;
- HRESULT result = SHGetValue(HKEY_LOCAL_MACHINE, quickTimeKeyName, quickTimeSysDir, &keyType, (LPVOID)qtPath, &qtPathBufferLen);
- if (result != ERROR_SUCCESS || !qtPathBufferLen || keyType != REG_SZ) {
- qtPathBufferLen = sizeof(qtPath);
- result = SHGetValue(HKEY_CURRENT_USER, quickTimeKeyName, quickTimeSysDir, &keyType, (LPVOID)qtPath, &qtPathBufferLen);
- if (result != ERROR_SUCCESS || !qtPathBufferLen || keyType != REG_SZ)
- return;
- }
-
- // Read the current PATH.
- DWORD pathSize = GetEnvironmentVariableW(pathEnvironmentVariable, 0, 0);
- Vector<WCHAR> oldPath(pathSize);
- if (!GetEnvironmentVariableW(pathEnvironmentVariable, oldPath.data(), oldPath.size()))
- return;
-
- // And add the QuickTime dll.
- wstring newPath;
- newPath.append(qtPath);
- newPath.append(L";");
- newPath.append(oldPath.data(), oldPath.size());
- SetEnvironmentVariableW(pathEnvironmentVariable, newPath.data());
-}
-
-#ifdef DEBUG_ALL
-#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 2.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(WebKitCreateInstance(CLSID_WebTextRenderer, 0, IID_IWebTextRenderer, (void**)&textRenderer)))
- for (int i = 0; i < ARRAYSIZE(fontsToInstall); ++i)
- textRenderer->registerPrivateFont(wstring(resourcesPath + fontsToInstall[i]).c_str());
-
- // Add the QuickTime dll directory to PATH or QT 7.6 will fail to initialize on systems
- // linked with older versions of qtmlclientlib.dll.
- addQTDirToPATH();
-
- // 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);
- ::SendMessage(webViewWindow, WM_PAINT, 0, 0);
-}
-
-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 (::gTestRunner->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 (::gTestRunner->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;
-
- if (wcsstr(url, L"file:/") == url) {
- static wchar_t* layoutTestsString = L"/LayoutTests/";
- static wchar_t* fileTestString = L"(file test):";
-
- wchar_t* result = wcsstr(url, layoutTestsString);
- if (result == NULL)
- return;
- wchar_t* start = result + wcslen(layoutTestsString);
-
- BSTR newURL = SysAllocStringLen(NULL, SysStringLen(url));
- wcscpy(newURL, fileTestString);
- wcscpy(newURL + wcslen(fileTestString), start);
-
- SysFreeString(url);
- url = newURL;
- }
-
- 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).get();
- dumpBackForwardList(webView);
- }
-}
-
-static void invalidateAnyPreviousWaitToDumpWatchdog()
-{
- if (!waitToDumpWatchdog)
- return;
-
- KillTimer(0, waitToDumpWatchdog);
- waitToDumpWatchdog = 0;
-}
-
-void dump()
-{
- invalidateAnyPreviousWaitToDumpWatchdog();
-
- COMPtr<IWebDataSource> dataSource;
- if (SUCCEEDED(frame->dataSource(&dataSource))) {
- COMPtr<IWebURLResponse> response;
- if (SUCCEEDED(dataSource->response(&response)) && response) {
- BSTR mimeType;
- if (SUCCEEDED(response->MIMEType(&mimeType)) && !_tcscmp(mimeType, TEXT("text/plain"))) {
- ::gTestRunner->setDumpAsText(true);
- ::gTestRunner->setGeneratePixelResults(false);
- }
- SysFreeString(mimeType);
- }
- }
-
- BSTR resultString = 0;
-
- if (dumpTree) {
- ::InvalidateRect(webViewWindow, 0, TRUE);
- ::SendMessage(webViewWindow, WM_PAINT, 0, 0);
-
- if (::gTestRunner->dumpAsText()) {
- wstring result = dumpFramesAsText(frame);
- resultString = SysAllocStringLen(result.data(), result.size());
- } else {
- COMPtr<IWebFramePrivate> framePrivate;
- if (FAILED(frame->QueryInterface(&framePrivate)))
- goto fail;
- framePrivate->renderTreeAsExternalRepresentation(gTestRunner->isPrinting(), &resultString);
- }
-
- if (!resultString)
- printf("ERROR: nil result from %s", ::gTestRunner->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 (!::gTestRunner->dumpAsText())
- dumpFrameScrollPosition(frame);
- }
- if (::gTestRunner->dumpBackForwardList())
- dumpBackForwardListForAllWindows();
- }
-
- if (printSeparators) {
- puts("#EOF"); // terminate the content block
- fputs("#EOF\n", stderr);
- fflush(stdout);
- fflush(stderr);
- }
-
- if (dumpPixelsForCurrentTest
- && gTestRunner->generatePixelResults()
- && !gTestRunner->dumpDOMAsWebArchive()
- && !gTestRunner->dumpSourceAsWebArchive())
- dumpWebViewAsPixelsAndCompareWithExpected(gTestRunner->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/") || strstr(pathOrURL, "\\loading\\");
-}
-
-static bool shouldLogHistoryDelegates(const char* pathOrURL)
-{
- return strstr(pathOrURL, "/globalhistory/") || strstr(pathOrURL, "\\globalhistory\\");
-}
-
-static bool shouldOpenWebInspector(const char* pathOrURL)
-{
- return strstr(pathOrURL, "/inspector/") || strstr(pathOrURL, "\\inspector\\");
-}
-
-static bool shouldDumpAsText(const char* pathOrURL)
-{
- return strstr(pathOrURL, "/dumpAsText/") || strstr(pathOrURL, "\\dumpAsText\\");
-}
-
-static bool shouldEnableDeveloperExtras(const char* pathOrURL)
-{
- return true;
-}
-
-static void resetDefaultsToConsistentValues(IWebPreferences* preferences)
-{
-#ifdef USE_MAC_FONTS
- static BSTR standardFamily = SysAllocString(TEXT("Times"));
- static BSTR fixedFamily = SysAllocString(TEXT("Courier"));
- static BSTR sansSerifFamily = SysAllocString(TEXT("Helvetica"));
- static BSTR cursiveFamily = SysAllocString(TEXT("Apple Chancery"));
- static BSTR fantasyFamily = SysAllocString(TEXT("Papyrus"));
- static BSTR pictographFamily = SysAllocString(TEXT("Apple Color Emoji"));
-#else
- static BSTR standardFamily = SysAllocString(TEXT("Times New Roman"));
- static BSTR fixedFamily = SysAllocString(TEXT("Courier New"));
- static BSTR sansSerifFamily = SysAllocString(TEXT("Arial"));
- static BSTR cursiveFamily = SysAllocString(TEXT("Comic Sans MS")); // Not actually cursive, but it's what IE and Firefox use.
- static BSTR fantasyFamily = SysAllocString(TEXT("Times New Roman"));
- static BSTR pictographFamily = 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->setPictographFontFamily(pictographFamily);
-
- preferences->setAutosaves(FALSE);
- preferences->setDefaultFontSize(16);
- preferences->setDefaultFixedFontSize(13);
- preferences->setMinimumFontSize(0);
- preferences->setJavaEnabled(FALSE);
- preferences->setPlugInsEnabled(TRUE);
- preferences->setDOMPasteAllowed(TRUE);
- preferences->setEditableLinkBehavior(WebKitEditableLinkOnlyLiveWithShiftKey);
- preferences->setFontSmoothing(FontSmoothingTypeStandard);
- preferences->setUsesPageCache(FALSE);
- preferences->setPrivateBrowsingEnabled(FALSE);
- preferences->setJavaScriptCanOpenWindowsAutomatically(TRUE);
- preferences->setJavaScriptEnabled(TRUE);
- preferences->setTabsToLinks(FALSE);
- preferences->setShouldPrintBackgrounds(TRUE);
- preferences->setLoadsImagesAutomatically(TRUE);
- preferences->setSeamlessIFramesEnabled(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->setAllowUniversalAccessFromFileURLs(TRUE);
- prefsPrivate->setAllowFileAccessFromFileURLs(TRUE);
- prefsPrivate->setAuthorAndUserStylesEnabled(TRUE);
- prefsPrivate->setDeveloperExtrasEnabled(FALSE);
- prefsPrivate->setExperimentalNotificationsEnabled(TRUE);
- prefsPrivate->setShouldPaintNativeControls(FALSE); // FIXME - need to make DRT pass with Windows native controls <http://bugs.webkit.org/show_bug.cgi?id=25592>
- prefsPrivate->setJavaScriptCanAccessClipboard(TRUE);
- prefsPrivate->setXSSAuditorEnabled(FALSE);
- prefsPrivate->setOfflineWebApplicationCacheEnabled(TRUE);
- prefsPrivate->setLoadsSiteIconsIgnoringImageLoadingPreference(FALSE);
- }
- setAlwaysAcceptCookies(false);
-
- setlocale(LC_ALL, "");
-}
-
-static void resetWebViewToConsistentStateBeforeTesting()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- webView->setPolicyDelegate(0);
- policyDelegate->setPermissive(false);
- policyDelegate->setControllerToNotifyDone(0);
-
- COMPtr<IWebIBActions> webIBActions(Query, webView);
- if (webIBActions) {
- webIBActions->makeTextStandardSize(0);
- webIBActions->resetPageZoom(0);
- }
-
-
- COMPtr<IWebPreferences> preferences;
- if (SUCCEEDED(webView->preferences(&preferences)))
- resetDefaultsToConsistentValues(preferences.get());
-
- if (gTestRunner) {
- JSGlobalContextRef context = frame->globalContext();
- WebCoreTestSupport::resetInternalsObject(context);
- }
-
- COMPtr<IWebViewPrivate> webViewPrivate(Query, webView);
- if (!webViewPrivate)
- return;
-
- HWND viewWindow;
- if (SUCCEEDED(webViewPrivate->viewWindow(reinterpret_cast<OLE_HANDLE*>(&viewWindow))) && viewWindow)
- SetFocus(viewWindow);
-
- webViewPrivate->clearMainFrameName();
- webViewPrivate->resetOriginAccessWhitelists();
-
- BSTR groupName;
- if (SUCCEEDED(webView->groupName(&groupName))) {
- webViewPrivate->removeAllUserContentFromGroup(groupName);
- SysFreeString(groupName);
- }
-
- sharedUIDelegate->resetUndoManager();
-
- sharedFrameLoadDelegate->resetToConsistentState();
-
- COMPtr<IWebFramePrivate> framePrivate;
- if (SUCCEEDED(frame->QueryInterface(&framePrivate)))
- framePrivate->clearOpener();
-}
-
-static void sizeWebViewForCurrentTest()
-{
- bool isSVGW3CTest = (gTestRunner->testPathOrURL().find("svg\\W3C-SVG-1.1") != string::npos);
- unsigned width;
- unsigned height;
- if (isSVGW3CTest) {
- width = TestRunner::w3cSVGViewWidth;
- height = TestRunner::w3cSVGViewHeight;
- } else {
- width = TestRunner::viewWidth;
- height = TestRunner::viewHeight;
- }
-
- ::SetWindowPos(webViewWindow, 0, 0, 0, width, height, SWP_NOMOVE);
-}
-
-static String findFontFallback(const char* pathOrUrl)
-{
- String pathToFontFallback = WebCore::directoryName(pathOrUrl);
-
- wchar_t fullPath[_MAX_PATH];
- if (!_wfullpath(fullPath, pathToFontFallback.charactersWithNullTermination().data(), _MAX_PATH))
- return emptyString();
-
- if (!::PathIsDirectoryW(fullPath))
- return emptyString();
-
- String pathToCheck = fullPath;
-
- static const String layoutTests = "LayoutTests";
-
- // Find the layout test root on the current path:
- size_t location = pathToCheck.find(layoutTests);
- if (WTF::notFound == location)
- return emptyString();
-
- String pathToTest = pathToCheck.substring(location + layoutTests.length() + 1);
- String possiblePathToLogue = WebCore::pathByAppendingComponent(pathToCheck.substring(0, location + layoutTests.length() + 1), "platform\\win");
-
- Vector<String> possiblePaths;
- possiblePaths.append(WebCore::pathByAppendingComponent(possiblePathToLogue, pathToTest));
-
- size_t nextCandidateEnd = pathToTest.reverseFind('\\');
- while (nextCandidateEnd && nextCandidateEnd != WTF::notFound) {
- pathToTest = pathToTest.substring(0, nextCandidateEnd);
- possiblePaths.append(WebCore::pathByAppendingComponent(possiblePathToLogue, pathToTest));
- nextCandidateEnd = pathToTest.reverseFind('\\');
- }
-
- for (Vector<String>::iterator pos = possiblePaths.begin(); pos != possiblePaths.end(); ++pos) {
- pathToFontFallback = WebCore::pathByAppendingComponent(*pos, "resources\\");
-
- if (::PathIsDirectoryW(pathToFontFallback.charactersWithNullTermination().data()))
- return pathToFontFallback;
- }
-
- return emptyString();
-}
-
-static void addFontFallbackIfPresent(const String& fontFallbackPath)
-{
- if (fontFallbackPath.isEmpty())
- return;
-
- String fontFallback = WebCore::pathByAppendingComponent(fontFallbackPath, "Mac-compatible-font-fallback.css");
-
- if (!::PathFileExistsW(fontFallback.charactersWithNullTermination().data()))
- return;
-
- ::setPersistentUserStyleSheetLocation(fontFallback.createCFString().get());
-}
-
-static void removeFontFallbackIfPresent(const String& fontFallbackPath)
-{
- if (fontFallbackPath.isEmpty())
- return;
-
- String fontFallback = WebCore::pathByAppendingComponent(fontFallbackPath, "Mac-compatible-font-fallback.css");
-
- if (!::PathFileExistsW(fontFallback.charactersWithNullTermination().data()))
- return;
-
- ::setPersistentUserStyleSheetLocation(0);
-}
-
-static void runTest(const string& inputLine)
-{
- TestCommand command = parseInputLine(inputLine);
- const string& pathOrURL = command.pathOrURL;
- dumpPixelsForCurrentTest = command.shouldDumpPixels || dumpPixelsForAllTests;
-
- static BSTR methodBStr = SysAllocString(TEXT("GET"));
-
- 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);
-
- String fallbackPath = findFontFallback(pathOrURL.c_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);
-
- ::gTestRunner = TestRunner::create(pathOrURL, command.expectedPixelHash);
- done = false;
- topLoadingFrame = 0;
-
- addFontFallbackIfPresent(fallbackPath);
-
- sizeWebViewForCurrentTest();
- gTestRunner->setIconDatabaseEnabled(false);
-
- if (shouldLogFrameLoadDelegates(pathOrURL.c_str()))
- gTestRunner->setDumpFrameLoadCallbacks(true);
-
- COMPtr<IWebView> webView;
- if (SUCCEEDED(frame->webView(&webView))) {
- COMPtr<IWebViewPrivate> viewPrivate;
- if (SUCCEEDED(webView->QueryInterface(&viewPrivate))) {
- if (shouldLogHistoryDelegates(pathOrURL.c_str())) {
- gTestRunner->setDumpHistoryDelegateCallbacks(true);
- viewPrivate->setHistoryDelegate(sharedHistoryDelegate.get());
- } else
- viewPrivate->setHistoryDelegate(0);
- }
- }
- COMPtr<IWebHistory> history;
- if (SUCCEEDED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history))))
- history->setOptionalSharedHistory(0);
-
- resetWebViewToConsistentStateBeforeTesting();
-
- if (shouldEnableDeveloperExtras(pathOrURL.c_str())) {
- gTestRunner->setDeveloperExtrasEnabled(true);
- if (shouldOpenWebInspector(pathOrURL.c_str()))
- gTestRunner->showWebInspector();
- }
- if (shouldDumpAsText(pathOrURL.c_str())) {
- gTestRunner->setDumpAsText(true);
- gTestRunner->setGeneratePixelResults(false);
- }
-
- prevTestBFItem = 0;
- if (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 = WebKitCreateInstance(CLSID_WebMutableURLRequest, 0, 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);
- }
-
- if (shouldEnableDeveloperExtras(pathOrURL.c_str())) {
- gTestRunner->closeWebInspector();
- gTestRunner->setDeveloperExtrasEnabled(false);
- }
-
- resetWebViewToConsistentStateBeforeTesting();
-
- frame->stopLoading();
-
- if (::gTestRunner->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:
- removeFontFallbackIfPresent(fallbackPath);
- SysFreeString(urlBStr);
- ::gTestRunner.clear();
-
- return;
-}
-
-Vector<HWND>& openWindows()
-{
- static Vector<HWND> vector;
- return vector;
-}
-
-WindowToWebViewMap& windowToWebViewMap()
-{
- static WindowToWebViewMap map;
- return map;
-}
-
-IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow)
-{
- unsigned maxViewWidth = TestRunner::viewWidth;
- unsigned maxViewHeight = TestRunner::viewHeight;
- HWND hostWindow = CreateWindowEx(WS_EX_TOOLWINDOW, kDumpRenderTreeClassName, TEXT("DumpRenderTree"), WS_POPUP,
- -maxViewWidth, -maxViewHeight, maxViewWidth, maxViewHeight, 0, 0, GetModuleHandle(0), 0);
-
- IWebView* webView;
-
- HRESULT hr = WebKitCreateInstance(CLSID_WebView, 0, 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;
-
- ResourceLoadDelegate* resourceLoadDelegate = new ResourceLoadDelegate();
- HRESULT result = webView->setResourceLoadDelegate(resourceLoadDelegate);
- resourceLoadDelegate->Release(); // The delegate is owned by the WebView, so release our reference to it.
- if (FAILED(result))
- return 0;
-
- openWindows().append(hostWindow);
- windowToWebViewMap().set(hostWindow, webView);
- return webView;
-}
-
-#if USE(CFNETWORK)
-RetainPtr<CFURLCacheRef> sharedCFURLCache()
-{
-#ifndef DEBUG_ALL
- HMODULE module = GetModuleHandle(TEXT("CFNetwork.dll"));
-#else
- HMODULE module = GetModuleHandle(TEXT("CFNetwork_debug.dll"));
-#endif
- if (!module)
- return 0;
-
- typedef CFURLCacheRef (*CFURLCacheCopySharedURLCacheProcPtr)(void);
- if (CFURLCacheCopySharedURLCacheProcPtr copyCache = reinterpret_cast<CFURLCacheCopySharedURLCacheProcPtr>(GetProcAddress(module, "CFURLCacheCopySharedURLCache")))
- return adoptCF(copyCache());
-
- typedef CFURLCacheRef (*CFURLCacheSharedURLCacheProcPtr)(void);
- if (CFURLCacheSharedURLCacheProcPtr sharedCache = reinterpret_cast<CFURLCacheSharedURLCacheProcPtr>(GetProcAddress(module, "CFURLCacheSharedURLCache")))
- return sharedCache();
-
- return 0;
-}
-#endif
-
-static LONG WINAPI exceptionFilter(EXCEPTION_POINTERS*)
-{
- fputs("#CRASHED\n", stderr);
- fflush(stderr);
- return EXCEPTION_CONTINUE_SEARCH;
-}
-
-extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(int argc, const char* argv[])
-{
- // Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which we will inherit. This is bad for
- // testing/debugging, as it causes the post-mortem debugger not to be invoked. We reset the
- // error mode here to work around Cygwin's behavior. See <http://webkit.org/b/55222>.
- ::SetErrorMode(0);
-
- ::SetUnhandledExceptionFilter(exceptionFilter);
-
- 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], "--complex-text")) {
- forceComplexText = true;
- continue;
- }
-
- if (!stricmp(argv[i], "--print-supported-features")) {
- printSupportedFeatures = true;
- continue;
- }
-
- if (!stricmp(argv[i], "--pixel-tests")) {
- dumpPixelsForAllTests = true;
- continue;
- }
-
- tests.append(argv[i]);
- }
-
- policyDelegate = new PolicyDelegate();
- sharedFrameLoadDelegate.adoptRef(new FrameLoadDelegate);
- sharedUIDelegate.adoptRef(new UIDelegate);
- sharedEditingDelegate.adoptRef(new EditingDelegate);
- sharedHistoryDelegate.adoptRef(new HistoryDelegate);
-
- // FIXME - need to make DRT pass with Windows native controls <http://bugs.webkit.org/show_bug.cgi?id=25592>
- COMPtr<IWebPreferences> tmpPreferences;
- if (FAILED(WebKitCreateInstance(CLSID_WebPreferences, 0, IID_IWebPreferences, reinterpret_cast<void**>(&tmpPreferences))))
- return -1;
- COMPtr<IWebPreferences> standardPreferences;
- if (FAILED(tmpPreferences->standardPreferences(&standardPreferences)))
- return -1;
- COMPtr<IWebPreferencesPrivate> standardPreferencesPrivate;
- if (FAILED(standardPreferences->QueryInterface(&standardPreferencesPrivate)))
- return -1;
- standardPreferencesPrivate->setShouldPaintNativeControls(FALSE);
- standardPreferences->setJavaScriptEnabled(TRUE);
- standardPreferences->setDefaultFontSize(16);
- standardPreferences->setAcceleratedCompositingEnabled(true);
- standardPreferences->setAVFoundationEnabled(TRUE);
- standardPreferences->setContinuousSpellCheckingEnabled(TRUE);
-
- if (printSupportedFeatures) {
- BOOL acceleratedCompositingAvailable;
- standardPreferences->acceleratedCompositingEnabled(&acceleratedCompositingAvailable);
-
-#if ENABLE(3D_RENDERING)
- // In theory, we could have a software-based 3D rendering implementation that we use when
- // hardware-acceleration is not available. But we don't have any such software
- // implementation, so 3D rendering is only available when hardware-acceleration is.
- BOOL threeDRenderingAvailable = acceleratedCompositingAvailable;
-#else
- BOOL threeDRenderingAvailable = FALSE;
-#endif
-
- printf("SupportedFeatures:%s %s\n", acceleratedCompositingAvailable ? "AcceleratedCompositing" : "", threeDRenderingAvailable ? "3DRendering" : "");
- return 0;
- }
-
-#if USE(CF)
- // Set up these values before creating the WebView so that the various initializations will see these preferred values.
- String path = libraryPathForDumpRenderTree();
- CFPreferencesSetAppValue(WebDatabaseDirectoryDefaultsKey, WebCore::pathByAppendingComponent(path, "Databases").createCFString().get(), kCFPreferencesCurrentApplication);
- CFPreferencesSetAppValue(WebStorageDirectoryDefaultsKey, WebCore::pathByAppendingComponent(path, "LocalStorage").createCFString().get(), kCFPreferencesCurrentApplication);
- CFPreferencesSetAppValue(WebKitLocalCacheDefaultsKey, WebCore::pathByAppendingComponent(path, "LocalCache").createCFString().get(), kCFPreferencesCurrentApplication);
-#endif
-
- COMPtr<IWebView> webView(AdoptCOM, createWebViewAndOffscreenWindow(&webViewWindow));
- if (!webView)
- return -1;
-
- COMPtr<IWebIconDatabase> iconDatabase;
- COMPtr<IWebIconDatabase> tmpIconDatabase;
- if (FAILED(WebKitCreateInstance(CLSID_WebIconDatabase, 0, IID_IWebIconDatabase, (void**)&tmpIconDatabase)))
- return -1;
- if (FAILED(tmpIconDatabase->sharedIconDatabase(&iconDatabase)))
- return -1;
-
- if (FAILED(webView->mainFrame(&frame)))
- return -1;
-
-#if USE(CFNETWORK)
- RetainPtr<CFURLCacheRef> urlCache = sharedCFURLCache();
- CFURLCacheRemoveAllCachedResponses(urlCache.get());
-#endif
-
-#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/Tools/DumpRenderTree/win/DumpRenderTreeWin.h b/Tools/DumpRenderTree/win/DumpRenderTreeWin.h
deleted file mode 100644
index c64c3bf50..000000000
--- a/Tools/DumpRenderTree/win/DumpRenderTreeWin.h
+++ /dev/null
@@ -1,71 +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 IWebScriptWorld;
-struct IWebView;
-struct FrameLoadDelegate;
-struct PolicyDelegate;
-typedef const struct __CFString* CFStringRef;
-typedef struct HWND__* HWND;
-
-extern IWebFrame* topLoadingFrame;
-extern IWebFrame* frame;
-extern PolicyDelegate* policyDelegate;
-
-extern HWND webViewWindow;
-
-#include <WebCore/COMPtr.h>
-#include <string>
-#include <wtf/HashMap.h>
-#include <wtf/Vector.h>
-
-std::wstring urlSuitableForTestResult(const std::wstring& url);
-std::wstring lastPathComponent(const std::wstring&);
-std::string toUTF8(BSTR);
-std::string toUTF8(const std::wstring&);
-std::wstring cfStringRefToWString(CFStringRef);
-
-IWebView* createWebViewAndOffscreenWindow(HWND* webViewWindow = 0);
-Vector<HWND>& openWindows();
-typedef HashMap<HWND, COMPtr<IWebView> > WindowToWebViewMap;
-WindowToWebViewMap& windowToWebViewMap();
-
-void setPersistentUserStyleSheetLocation(CFStringRef);
-bool setAlwaysAcceptCookies(bool alwaysAcceptCookies);
-
-unsigned worldIDForWorld(IWebScriptWorld*);
-
-extern UINT_PTR waitToDumpWatchdog;
-
-extern COMPtr<FrameLoadDelegate> sharedFrameLoadDelegate;
-
-#endif // DumpRenderTreeWin_h
diff --git a/Tools/DumpRenderTree/win/EditingDelegate.cpp b/Tools/DumpRenderTree/win/EditingDelegate.cpp
deleted file mode 100644
index 0975c54d4..000000000
--- a/Tools/DumpRenderTree/win/EditingDelegate.cpp
+++ /dev/null
@@ -1,424 +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 "TestRunner.h"
-#include <WebCore/COMPtr.h>
-#include <wtf/Assertions.h>
-#include <wtf/Platform.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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->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 (::gTestRunner->dumpEditingCallbacks() && !done) {
- BSTR name;
- notification->name(&name);
- _tprintf(TEXT("EDITING DELEGATE: webViewDidChangeSelection:%s\n"), name ? name : TEXT(""));
- SysFreeString(name);
- }
- return S_OK;
-}
-
-static int indexOfFirstWordCharacter(const TCHAR* text)
-{
- const TCHAR* cursor = text;
- while (*cursor && !iswalpha(*cursor))
- ++cursor;
- return *cursor ? (cursor - text) : -1;
-};
-
-static int wordLength(const TCHAR* text)
-{
- const TCHAR* cursor = text;
- while (*cursor && iswalpha(*cursor))
- ++cursor;
- return cursor - text;
-};
-
-HRESULT STDMETHODCALLTYPE EditingDelegate::checkSpellingOfString(
- /* [in] */ IWebView* view,
- /* [in] */ LPCTSTR text,
- /* [in] */ int length,
- /* [out] */ int* misspellingLocation,
- /* [out] */ int* misspellingLength)
-{
- static const TCHAR* misspelledWords[] = {
- // These words are known misspelled words in webkit tests.
- // If there are other misspelled words in webkit tests, please add them in
- // this array.
- TEXT("foo"),
- TEXT("Foo"),
- TEXT("baz"),
- TEXT("fo"),
- TEXT("LibertyF"),
- TEXT("chello"),
- TEXT("xxxtestxxx"),
- TEXT("XXxxx"),
- TEXT("Textx"),
- TEXT("blockquoted"),
- TEXT("asd"),
- TEXT("Lorem"),
- TEXT("Nunc"),
- TEXT("Curabitur"),
- TEXT("eu"),
- TEXT("adlj"),
- TEXT("adaasj"),
- TEXT("sdklj"),
- TEXT("jlkds"),
- TEXT("jsaada"),
- TEXT("jlda"),
- TEXT("zz"),
- TEXT("contentEditable"),
- 0,
- };
-
- wstring textString(text, length);
- int wordStart = indexOfFirstWordCharacter(textString.c_str());
- if (-1 == wordStart)
- return S_OK;
- wstring word = textString.substr(wordStart, wordLength(textString.c_str() + wordStart));
- for (size_t i = 0; misspelledWords[i]; ++i) {
- if (word == misspelledWords[i]) {
- *misspellingLocation = wordStart;
- *misspellingLength = word.size();
- break;
- }
- }
-
- return S_OK;
-}
diff --git a/Tools/DumpRenderTree/win/EditingDelegate.h b/Tools/DumpRenderTree/win/EditingDelegate.h
deleted file mode 100644
index 7b7f418aa..000000000
--- a/Tools/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);
-
- 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/Tools/DumpRenderTree/win/EventSender.cpp b/Tools/DumpRenderTree/win/EventSender.cpp
deleted file mode 100644
index 5cc73c0b8..000000000
--- a/Tools/DumpRenderTree/win/EventSender.cpp
+++ /dev/null
@@ -1,809 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2012 Baidu 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 "DRTDataObject.h"
-#include "DRTDropSource.h"
-#include "DraggingInfo.h"
-#include "DumpRenderTree.h"
-
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <windows.h>
-#include <wtf/ASCIICType.h>
-#include <wtf/Assertions.h>
-#include <wtf/Platform.h>
-#include <wtf/text/WTFString.h>
-
-#define WM_DRT_SEND_QUEUED_EVENT (WM_APP+1)
-#ifndef MAPVK_VK_TO_VSC
-#define MAPVK_VK_TO_VSC 0
-#endif
-
-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 WPARAM buildModifierFlags(JSContextRef context, const JSValueRef modifiers)
-{
- JSObjectRef modifiersArray = JSValueToObject(context, modifiers, 0);
- if (!modifiersArray)
- return 0;
-
- WPARAM flags = 0;
- int modifiersCount = JSValueToNumber(context, JSObjectGetProperty(context, modifiersArray, JSStringCreateWithUTF8CString("length"), 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")
- || JSStringIsEqualToUTF8CString(string, "addSelectionKey"))
- flags |= MK_CONTROL;
- else if (JSStringIsEqualToUTF8CString(string, "shiftKey")
- || JSStringIsEqualToUTF8CString(string, "rangeSelectionKey"))
- flags |= MK_SHIFT;
- // No way to specifiy altKey in a MSG.
-
- JSStringRelease(string);
- }
- return flags;
-}
-
-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;
- int mouseType = WM_LBUTTONDOWN;
- if (argumentCount >= 1) {
- int mouseNumber = JSValueToNumber(context, arguments[0], exception);
- switch (mouseNumber) {
- case 0:
- mouseType = WM_LBUTTONDOWN;
- break;
- case 1:
- mouseType = WM_MBUTTONDOWN;
- break;
- case 2:
- mouseType = WM_RBUTTONDOWN;
- break;
- case 3:
- // fast/events/mouse-click-events expects the 4th button has event.button = 1, so send an WM_BUTTONDOWN
- mouseType = WM_MBUTTONDOWN;
- break;
- default:
- mouseType = WM_LBUTTONDOWN;
- break;
- }
- }
-
- WPARAM wparam = 0;
- if (argumentCount >= 2)
- wparam |= buildModifierFlags(context, arguments[1]);
-
- MSG msg = makeMsg(webViewWindow, mouseType, wparam, 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, HRESULT* oleDragAndDropReturnValue = 0)
-{
- 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);
- if (oleDragAndDropReturnValue)
- *oleDragAndDropReturnValue = hr;
- 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);
- draggingInfo->setPerformedDropEffect(effect);
- } else
- webViewDropTarget->DragLeave();
-
- // Reset didDragEnter so that another drag started within the same frame works properly.
- didDragEnter = false;
- }
- }
-}
-
-static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- int mouseType = WM_LBUTTONUP;
- if (argumentCount >= 1) {
- int mouseNumber = JSValueToNumber(context, arguments[0], exception);
- switch (mouseNumber) {
- case 0:
- mouseType = WM_LBUTTONUP;
- break;
- case 1:
- mouseType = WM_MBUTTONUP;
- break;
- case 2:
- mouseType = WM_RBUTTONUP;
- break;
- case 3:
- // fast/events/mouse-click-events expects the 4th button has event.button = 1, so send an WM_MBUTTONUP
- mouseType = WM_MBUTTONUP;
- break;
- default:
- mouseType = WM_LBUTTONUP;
- break;
- }
- }
-
- WPARAM wparam = 0;
- if (argumentCount >= 2)
- wparam |= buildModifierFlags(context, arguments[1]);
-
- MSG msg = makeMsg(webViewWindow, mouseType, wparam, 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(HRESULT* oleDragAndDropReturnValue)
-{
- replayingSavedEvents = true;
-
- MSG msg = { 0 };
-
- while (startOfQueue < endOfQueue && !msgQueue[startOfQueue].delay) {
- msg = msgQueue[startOfQueue++].msg;
- switch (msg.message) {
- case WM_LBUTTONUP:
- case WM_RBUTTONUP:
- case WM_MBUTTONUP:
- doMouseUp(msg, oleDragAndDropReturnValue);
- break;
- case WM_MOUSEMOVE:
- doMouseMove(msg);
- break;
- case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
- case WM_MBUTTONDOWN:
- 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:
- case WM_RBUTTONUP:
- case WM_MBUTTONUP:
- doMouseUp(msg, oleDragAndDropReturnValue);
- break;
- case WM_MOUSEMOVE:
- doMouseMove(msg);
- break;
- case WM_LBUTTONDOWN:
- case WM_RBUTTONDOWN:
- case WM_MBUTTONDOWN:
- 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 int makeKeyDataForScanCode(int virtualKeyCode)
-{
- unsigned scancode = MapVirtualKey(virtualKeyCode, MAPVK_VK_TO_VSC);
- int keyData = scancode & 0xFF;
- scancode = scancode >> 8;
- if (scancode == 0xe0 || scancode == 0xe1)
- keyData += KF_EXTENDED;
- return keyData << 16;
-}
-
-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, "insert"))
- virtualKeyCode = VK_INSERT;
- else if (JSStringIsEqualToUTF8CString(character, "delete"))
- virtualKeyCode = VK_DELETE;
- else if (JSStringIsEqualToUTF8CString(character, "printScreen"))
- virtualKeyCode = VK_SNAPSHOT;
- else if (JSStringIsEqualToUTF8CString(character, "menu"))
- virtualKeyCode = VK_APPS;
- else if (JSStringIsEqualToUTF8CString(character, "leftControl")) {
- virtualKeyCode = VK_CONTROL;
- keyData += makeKeyDataForScanCode(VK_LCONTROL);
- } else if (JSStringIsEqualToUTF8CString(character, "leftShift")) {
- virtualKeyCode = VK_SHIFT;
- keyData += makeKeyDataForScanCode(VK_LSHIFT);
- } else if (JSStringIsEqualToUTF8CString(character, "leftAlt")) {
- virtualKeyCode = VK_MENU;
- keyData += makeKeyDataForScanCode(VK_LMENU);
- } else if (JSStringIsEqualToUTF8CString(character, "rightControl")) {
- virtualKeyCode = VK_CONTROL;
- keyData += makeKeyDataForScanCode(VK_RCONTROL);
- } else if (JSStringIsEqualToUTF8CString(character, "rightShift")) {
- virtualKeyCode = VK_SHIFT;
- keyData += makeKeyDataForScanCode(VK_RSHIFT);
- } else if (JSStringIsEqualToUTF8CString(character, "rightAlt")) {
- virtualKeyCode = VK_MENU;
- keyData += makeKeyDataForScanCode(VK_RMENU);
- } 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], 0);
- 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") || JSStringIsEqualToUTF8CString(string, "addSelectionKey"))
- newKeyState[VK_CONTROL] = 0x80;
- else if (JSStringIsEqualToUTF8CString(string, "shiftKey") || JSStringIsEqualToUTF8CString(string, "rangeSelectionKey"))
- 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 JSValueRef beginDragWithFilesCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSObjectRef filesArray = JSValueToObject(context, arguments[0], 0);
-
- if (!filesArray)
- return JSValueMakeUndefined(context);
-
- JSStringRef lengthProperty = JSStringCreateWithUTF8CString("length");
- Vector<UChar> files;
- int filesCount = JSValueToNumber(context, JSObjectGetProperty(context, filesArray, lengthProperty, 0), 0);
- for (int i = 0; i < filesCount; ++i) {
- JSValueRef value = JSObjectGetPropertyAtIndex(context, filesArray, i, 0);
- JSStringRef file = JSValueToStringCopy(context, value, 0);
- files.append(JSStringGetCharactersPtr(file), JSStringGetLength(file));
- files.append(0);
- JSStringRelease(file);
- }
-
- if (files.isEmpty())
- return JSValueMakeUndefined(context);
-
- // We should append "0" in the end of |files| so that |DragQueryFileW| retrieved the number of files correctly from Ole Clipboard.
- files.append(0);
-
- STGMEDIUM hDropMedium = {0};
- hDropMedium.tymed = TYMED_HGLOBAL;
- SIZE_T dropFilesSize = sizeof(DROPFILES) + (sizeof(WCHAR) * files.size());
- hDropMedium.hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, dropFilesSize);
- DROPFILES* dropFiles = reinterpret_cast<DROPFILES*>(GlobalLock(hDropMedium.hGlobal));
- memset(dropFiles, 0, sizeof(DROPFILES));
- dropFiles->pFiles = sizeof(DROPFILES);
- dropFiles->fWide = TRUE;
-
- UChar* data = reinterpret_cast<UChar*>(reinterpret_cast<BYTE*>(dropFiles) + sizeof(DROPFILES));
- for (size_t i = 0; i < files.size(); ++i)
- data[i] = files[i];
- GlobalUnlock(hDropMedium.hGlobal);
-
- STGMEDIUM hFileNameMedium = {0};
- hFileNameMedium.tymed = TYMED_HGLOBAL;
- SIZE_T hFileNameSize = sizeof(WCHAR) * files.size();
- hFileNameMedium.hGlobal = GlobalAlloc(GMEM_MOVEABLE | GMEM_DDESHARE, hFileNameSize);
- WCHAR* hFileName = static_cast<WCHAR*>(GlobalLock(hFileNameMedium.hGlobal));
- for (size_t i = 0; i < files.size(); i++)
- hFileName[i] = files[i];
- GlobalUnlock(hFileNameMedium.hGlobal);
-
- if (draggingInfo) {
- delete draggingInfo;
- draggingInfo = 0;
- }
-
- COMPtr<DRTDataObject> dataObeject;
- COMPtr<IDropSource> source;
- if (FAILED(DRTDataObject::createInstance(&dataObeject)))
- dataObeject = 0;
-
- if (FAILED(DRTDropSource::createInstance(&source)))
- source = 0;
-
- if (dataObeject && source) {
- draggingInfo = new DraggingInfo(dataObeject.get(), source.get());
- draggingInfo->setPerformedDropEffect(DROPEFFECT_COPY);
- }
-
- if (draggingInfo) {
- draggingInfo->dataObject()->SetData(cfHDropFormat(), &hDropMedium, FALSE);
- draggingInfo->dataObject()->SetData(cfFileNameWFormat(), &hFileNameMedium, FALSE);
- draggingInfo->dataObject()->SetData(cfUrlWFormat(), &hFileNameMedium, FALSE);
- OleSetClipboard(draggingInfo->dataObject());
- down = true;
- }
-
- JSStringRelease(lengthProperty);
- 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 },
- { "beginDragWithFiles", beginDragWithFilesCallback, 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, bool isTopFrame)
-{
- if (isTopFrame) {
- 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/Tools/DumpRenderTree/win/EventSender.h b/Tools/DumpRenderTree/win/EventSender.h
deleted file mode 100644
index a0add85eb..000000000
--- a/Tools/DumpRenderTree/win/EventSender.h
+++ /dev/null
@@ -1,43 +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 long HRESULT;
-typedef const struct OpaqueJSContext* JSContextRef;
-typedef struct OpaqueJSValue* JSObjectRef;
-
-JSObjectRef makeEventSender(JSContextRef context, bool isTopFrame);
-void replaySavedEvents(HRESULT* oleDragAndDropReturnValue = 0);
-
-extern DraggingInfo* draggingInfo;
-
-#endif
diff --git a/Tools/DumpRenderTree/win/FrameLoadDelegate.cpp b/Tools/DumpRenderTree/win/FrameLoadDelegate.cpp
deleted file mode 100644
index 0ea40fa17..000000000
--- a/Tools/DumpRenderTree/win/FrameLoadDelegate.cpp
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) 2005, 2006, 2007, 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. 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 "TestRunner.h"
-#include "TextInputController.h"
-#include "WebCoreTestSupport.h"
-#include "WorkQueueItem.h"
-#include "WorkQueue.h"
-#include <WebCore/COMPtr.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebKit/WebKit.h>
-#include <stdio.h>
-#include <string>
-#include <wtf/Assertions.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/Vector.h>
-
-using std::string;
-
-static FrameLoadDelegate* g_delegateWaitingOnTimer;
-
-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)) || toUTF8(frameNameBSTR).empty())
- return (webFrame == mainFrame) ? "main frame" : string();
-
- string frameName = (webFrame == mainFrame) ? "main frame" : "frame";
- frameName += " \"" + toUTF8(frameNameBSTR) + "\"";
-
- SysFreeString(frameNameBSTR);
- return frameName;
-}
-
-FrameLoadDelegate::FrameLoadDelegate()
- : m_refCount(1)
- , m_gcController(adoptPtr(new GCController))
- , m_accessibilityController(adoptPtr(new AccessibilityController))
- , m_textInputController(adoptPtr(new TextInputController))
-{
-}
-
-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_IWebFrameLoadDelegatePrivate))
- *ppvObject = static_cast<IWebFrameLoadDelegatePrivate*>(this);
- else if (IsEqualGUID(riid, IID_IWebFrameLoadDelegatePrivate2))
- *ppvObject = static_cast<IWebFrameLoadDelegatePrivate2*>(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 && gTestRunner->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::didReceiveServerRedirectForProvisionalLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didReceiveServerRedirectForProvisionalLoadForFrame\n", descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFailProvisionalLoadWithError(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebError *error,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFailProvisionalLoadWithError\n", descriptionSuitableForTestResult(frame).c_str());
-
- locationChangeDone(error, frame);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didCommitLoadForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didCommitLoadForFrame\n", descriptionSuitableForTestResult(frame).c_str());
-
- COMPtr<IWebViewPrivate> webViewPrivate;
- HRESULT hr = webView->QueryInterface(&webViewPrivate);
- if (FAILED(hr))
- return hr;
- webViewPrivate->updateFocusedAndActiveState();
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didReceiveTitle(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR title,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didReceiveTitle: %S\n", descriptionSuitableForTestResult(frame).c_str(), title);
-
- if (::gTestRunner->dumpTitleChanges() && !done)
- printf("TITLE CHANGED: '%S'\n", title ? title : L"");
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didChangeIcons(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* frame)
-{
- if (!done && gTestRunner->dumpIconChanges())
- printf("%s - didChangeIcons\n", descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
-void FrameLoadDelegate::processWork()
-{
- // if another load started, then wait for it to complete.
- if (topLoadingFrame)
- return;
-
- // if we finish all the commands, we're ready to dump state
- if (WorkQueue::shared()->processWork() && !::gTestRunner->waitToDump())
- dump();
-}
-
-void FrameLoadDelegate::resetToConsistentState()
-{
- m_accessibilityController->resetToConsistentState();
-}
-
-typedef Vector<COMPtr<FrameLoadDelegate> > DelegateVector;
-static DelegateVector& delegatesWithDelayedWork()
-{
- DEFINE_STATIC_LOCAL(DelegateVector, delegates, ());
- return delegates;
-}
-
-static UINT_PTR processWorkTimerID;
-
-static void CALLBACK processWorkTimer(HWND hwnd, UINT, UINT_PTR id, DWORD)
-{
- ASSERT_ARG(id, id == processWorkTimerID);
- ::KillTimer(hwnd, id);
- processWorkTimerID = 0;
-
- DelegateVector delegates;
- delegates.swap(delegatesWithDelayedWork());
-
- for (size_t i = 0; i < delegates.size(); ++i)
- delegates[i]->processWork();
-}
-
-void FrameLoadDelegate::locationChangeDone(IWebError*, IWebFrame* frame)
-{
- if (frame != topLoadingFrame)
- return;
-
- topLoadingFrame = 0;
- WorkQueue::shared()->setFrozen(true);
-
- if (::gTestRunner->waitToDump())
- return;
-
- if (WorkQueue::shared()->count()) {
- if (!processWorkTimerID)
- processWorkTimerID = ::SetTimer(0, 0, 0, processWorkTimer);
- delegatesWithDelayedWork().append(this);
- return;
- }
-
- dump();
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishLoadForFrame(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebFrame* frame)
-{
- if (!done && gTestRunner->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* frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didFailLoadWithError\n", descriptionSuitableForTestResult(frame).c_str());
-
- locationChangeDone(error, frame);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::willPerformClientRedirectToURL(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR url,
- /* [in] */ double delaySeconds,
- /* [in] */ DATE fireDate,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - willPerformClientRedirectToURL: %S \n", descriptionSuitableForTestResult(frame).c_str(),
- urlSuitableForTestResult(std::wstring(url, ::SysStringLen(url))).c_str());
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didCancelClientRedirectForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didCancelClientRedirectForFrame\n", descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::willCloseFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- return E_NOTIMPL;
-}
-
-HRESULT FrameLoadDelegate::didClearWindowObject(IWebView*, JSContextRef, JSObjectRef, IWebFrame*)
-{
- return E_NOTIMPL;
-}
-
-HRESULT FrameLoadDelegate::didClearWindowObjectForFrameInScriptWorld(IWebView* webView, IWebFrame* frame, IWebScriptWorld* world)
-{
- ASSERT_ARG(webView, webView);
- ASSERT_ARG(frame, frame);
- ASSERT_ARG(world, world);
- if (!webView || !frame || !world)
- return E_POINTER;
-
- COMPtr<IWebScriptWorld> standardWorld;
- if (FAILED(world->standardWorld(&standardWorld)))
- return S_OK;
-
- if (world == standardWorld)
- didClearWindowObjectForFrameInStandardWorld(frame);
- else
- didClearWindowObjectForFrameInIsolatedWorld(frame, world);
- return S_OK;
-}
-
-void FrameLoadDelegate::didClearWindowObjectForFrameInIsolatedWorld(IWebFrame* frame, IWebScriptWorld* world)
-{
- COMPtr<IWebFramePrivate> framePrivate(Query, frame);
- if (!framePrivate)
- return;
-
- JSGlobalContextRef ctx = framePrivate->globalContextForScriptWorld(world);
- if (!ctx)
- return;
-
- JSObjectRef globalObject = JSContextGetGlobalObject(ctx);
- if (!globalObject)
- return;
-
- JSObjectSetProperty(ctx, globalObject, JSRetainPtr<JSStringRef>(Adopt, JSStringCreateWithUTF8CString("__worldID")).get(), JSValueMakeNumber(ctx, worldIDForWorld(world)), kJSPropertyAttributeReadOnly, 0);
- return;
-}
-
-void FrameLoadDelegate::didClearWindowObjectForFrameInStandardWorld(IWebFrame* frame)
-{
- JSGlobalContextRef context = frame->globalContext();
- JSObjectRef windowObject = JSContextGetGlobalObject(context);
-
- IWebFrame* parentFrame = 0;
- frame->parentFrame(&parentFrame);
-
- JSValueRef exception = 0;
-
- ::gTestRunner->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- m_gcController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- m_accessibilityController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- m_textInputController->makeWindowObject(context, windowObject, &exception);
- ASSERT(!exception);
-
- JSStringRef eventSenderStr = JSStringCreateWithUTF8CString("eventSender");
- JSValueRef eventSender = makeEventSender(context, !parentFrame);
- JSObjectSetProperty(context, windowObject, eventSenderStr, eventSender, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, 0);
- JSStringRelease(eventSenderStr);
-
- WebCoreTestSupport::injectInternalsObject(context);
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFinishDocumentLoadForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame)
-{
- if (!done && gTestRunner->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 && gTestRunner->dumpFrameLoadCallbacks())
- printf("%s - didHandleOnloadEventsForFrame\n",
- descriptionSuitableForTestResult(frame).c_str());
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didFirstVisuallyNonEmptyLayoutInFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame)
-{
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didDisplayInsecureContent(
- /* [in] */ IWebView *sender)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didDisplayInsecureContent\n");
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE FrameLoadDelegate::didRunInsecureContent(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebSecurityOrigin *origin)
-{
- if (!done && gTestRunner->dumpFrameLoadCallbacks())
- printf("didRunInsecureContent\n");
-
- return S_OK;
-}
-
diff --git a/Tools/DumpRenderTree/win/FrameLoadDelegate.h b/Tools/DumpRenderTree/win/FrameLoadDelegate.h
deleted file mode 100644
index c842579f1..000000000
--- a/Tools/DumpRenderTree/win/FrameLoadDelegate.h
+++ /dev/null
@@ -1,177 +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 TextInputController;
-class GCController;
-
-class FrameLoadDelegate : public IWebFrameLoadDelegate, public IWebFrameLoadDelegatePrivate2 {
-public:
- FrameLoadDelegate();
- virtual ~FrameLoadDelegate();
-
- void processWork();
-
- void resetToConsistentState();
-
- AccessibilityController* accessibilityController() const { return m_accessibilityController.get(); }
-
- // 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);
-
- 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 didChangeIcons(
- /* [in] */ IWebView *webView,
- /* [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);
-
- virtual HRESULT STDMETHODCALLTYPE didCancelClientRedirectForFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- 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; }
-
- virtual /* [local] */ HRESULT STDMETHODCALLTYPE didClearWindowObject(
- /* [in] */ IWebView* webView,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowObject,
- /* [in] */ IWebFrame* frame);
-
- // 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);
-
- virtual HRESULT STDMETHODCALLTYPE didFirstVisuallyNonEmptyLayoutInFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame);
-
- // IWebFrameLoadDelegatePrivate2
- virtual HRESULT STDMETHODCALLTYPE didDisplayInsecureContent(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE didRunInsecureContent(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebSecurityOrigin *origin);
-
- virtual HRESULT STDMETHODCALLTYPE didClearWindowObjectForFrameInScriptWorld(IWebView*, IWebFrame*, IWebScriptWorld*);
-
- virtual HRESULT STDMETHODCALLTYPE didPushStateWithinPageForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didReplaceStateWithinPageForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE didPopStateWithinPageForFrame(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame) { return E_NOTIMPL; }
-
-private:
- void didClearWindowObjectForFrameInIsolatedWorld(IWebFrame*, IWebScriptWorld*);
- void didClearWindowObjectForFrameInStandardWorld(IWebFrame*);
-
- void locationChangeDone(IWebError*, IWebFrame*);
-
- ULONG m_refCount;
- OwnPtr<GCController> m_gcController;
- OwnPtr<AccessibilityController> m_accessibilityController;
- OwnPtr<TextInputController> m_textInputController;
-};
-
-#endif // FrameLoadDelegate_h
diff --git a/Tools/DumpRenderTree/win/GCControllerWin.cpp b/Tools/DumpRenderTree/win/GCControllerWin.cpp
deleted file mode 100644
index b86725086..000000000
--- a/Tools/DumpRenderTree/win/GCControllerWin.cpp
+++ /dev/null
@@ -1,61 +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>
-#include <WebKit/WebKitCOMAPI.h>
-
-void GCController::collect() const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector)))
- return;
- collector->collect();
-}
-
-void GCController::collectOnAlternateThread(bool waitUntilDone) const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector)))
- return;
- collector->collectOnAlternateThread(waitUntilDone ? TRUE : FALSE);
-}
-
-size_t GCController::getJSObjectCount() const
-{
- COMPtr<IWebJavaScriptCollector> collector;
- if (FAILED(WebKitCreateInstance(CLSID_WebJavaScriptCollector, 0, IID_IWebJavaScriptCollector, (void**)&collector)))
- return 0;
- UINT objects = 0;
- collector->objectCount(&objects);
- return objects;
-}
diff --git a/Tools/DumpRenderTree/win/HistoryDelegate.cpp b/Tools/DumpRenderTree/win/HistoryDelegate.cpp
deleted file mode 100644
index ab92b0928..000000000
--- a/Tools/DumpRenderTree/win/HistoryDelegate.cpp
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * 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 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 "config.h"
-#include "HistoryDelegate.h"
-
-#include "DumpRenderTree.h"
-#include "DumpRenderTreeWin.h"
-#include "TestRunner.h"
-#include <string>
-#include <WebKit/WebKit.h>
-
-using std::wstring;
-
-static inline wstring wstringFromBSTR(BSTR str)
-{
- return wstring(str, ::SysStringLen(str));
-}
-
-HistoryDelegate::HistoryDelegate()
- : m_refCount(1)
-{
-}
-
-HistoryDelegate::~HistoryDelegate()
-{
-}
-
- // IUnknown
-HRESULT HistoryDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebHistoryDelegate*>(this);
- else if (IsEqualGUID(riid, IID_IWebHistoryDelegate))
- *ppvObject = static_cast<IWebHistoryDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG HistoryDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG HistoryDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-// IWebHistoryDelegate
-HRESULT HistoryDelegate::didNavigateWithNavigationData(IWebView* webView, IWebNavigationData* navigationData, IWebFrame* webFrame)
-{
- if (!gTestRunner->dumpHistoryDelegateCallbacks())
- return S_OK;
-
- BSTR urlBSTR;
- if (FAILED(navigationData->url(&urlBSTR)))
- return E_FAIL;
- wstring url;
- if (urlBSTR)
- url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- SysFreeString(urlBSTR);
-
- BSTR titleBSTR;
- if (FAILED(navigationData->title(&titleBSTR)))
- return E_FAIL;
- wstring title;
- if (titleBSTR)
- title = wstringFromBSTR(titleBSTR);
- SysFreeString(titleBSTR);
-
- COMPtr<IWebURLRequest> request;
- if (FAILED(navigationData->originalRequest(&request)))
- return E_FAIL;
-
- BSTR httpMethodBSTR;
- if (FAILED(request->HTTPMethod(&httpMethodBSTR)))
- return E_FAIL;
- wstring httpMethod;
- if (httpMethodBSTR)
- httpMethod = wstringFromBSTR(httpMethodBSTR);
- SysFreeString(httpMethodBSTR);
-
- COMPtr<IWebURLResponse> response;
- if (FAILED(navigationData->response(&response)))
- return E_FAIL;
-
- COMPtr<IWebHTTPURLResponse> httpResponse;
- if (FAILED(response->QueryInterface(&httpResponse)))
- return E_FAIL;
-
- int statusCode = 0;
- if (FAILED(httpResponse->statusCode(&statusCode)))
- return E_FAIL;
-
- BOOL hasSubstituteData;
- if (FAILED(navigationData->hasSubstituteData(&hasSubstituteData)))
- return E_FAIL;
-
- BSTR clientRedirectSourceBSTR;
- if (FAILED(navigationData->clientRedirectSource(&clientRedirectSourceBSTR)))
- return E_FAIL;
- bool hasClientRedirect = clientRedirectSourceBSTR && SysStringLen(clientRedirectSourceBSTR);
- wstring redirectSource;
- if (clientRedirectSourceBSTR)
- redirectSource = urlSuitableForTestResult(wstringFromBSTR(clientRedirectSourceBSTR));
- SysFreeString(clientRedirectSourceBSTR);
-
- bool wasFailure = hasSubstituteData || (httpResponse && statusCode >= 400);
-
- printf("WebView navigated to url \"%S\" with title \"%S\" with HTTP equivalent method \"%S\". The navigation was %s and was %s%S.\n",
- url.c_str(),
- title.c_str(),
- httpMethod.c_str(),
- wasFailure ? "a failure" : "successful",
- hasClientRedirect ? "a client redirect from " : "not a client redirect",
- redirectSource.c_str());
-
- return S_OK;
-}
-
-HRESULT HistoryDelegate::didPerformClientRedirectFromURL(IWebView*, BSTR sourceURL, BSTR destinationURL, IWebFrame*)
-{
- if (!gTestRunner->dumpHistoryDelegateCallbacks())
- return S_OK;
-
- wstring source;
- if (sourceURL)
- source = urlSuitableForTestResult(wstringFromBSTR(sourceURL));
-
- wstring destination;
- if (destinationURL)
- destination = urlSuitableForTestResult(wstringFromBSTR(destinationURL));
-
- printf("WebView performed a client redirect from \"%S\" to \"%S\".\n", source.c_str(), destination.c_str());
- return S_OK;
-}
-
-HRESULT HistoryDelegate::didPerformServerRedirectFromURL(IWebView* webView, BSTR sourceURL, BSTR destinationURL, IWebFrame* webFrame)
-{
- if (!gTestRunner->dumpHistoryDelegateCallbacks())
- return S_OK;
-
- wstring source;
- if (sourceURL)
- source = urlSuitableForTestResult(wstringFromBSTR(sourceURL));
-
- wstring destination;
- if (destinationURL)
- destination = urlSuitableForTestResult(wstringFromBSTR(destinationURL));
-
- printf("WebView performed a server redirect from \"%S\" to \"%S\".\n", source.c_str(), destination.c_str());
- return S_OK;
-}
-
-HRESULT HistoryDelegate::updateHistoryTitle(IWebView* webView, BSTR titleBSTR, BSTR urlBSTR)
-{
- if (!gTestRunner->dumpHistoryDelegateCallbacks())
- return S_OK;
-
- wstring url;
- if (urlBSTR)
- url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
-
- wstring title;
- if (titleBSTR)
- title = wstringFromBSTR(titleBSTR);
-
- printf("WebView updated the title for history URL \"%S\" to \"%S\".\n", url.c_str(), title.c_str());
- return S_OK;
-}
-
-HRESULT HistoryDelegate::populateVisitedLinksForWebView(IWebView* webView)
-{
- if (!gTestRunner->dumpHistoryDelegateCallbacks())
- return S_OK;
-
- BSTR urlBSTR;
- if (FAILED(webView->mainFrameURL(&urlBSTR)))
- return E_FAIL;
-
- wstring url;
- if (urlBSTR)
- url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- SysFreeString(urlBSTR);
-
- if (gTestRunner->dumpVisitedLinksCallback())
- printf("Asked to populate visited links for WebView \"%S\"\n", url.c_str());
-
- return S_OK;
-}
diff --git a/Tools/DumpRenderTree/win/HistoryDelegate.h b/Tools/DumpRenderTree/win/HistoryDelegate.h
deleted file mode 100644
index 41be670db..000000000
--- a/Tools/DumpRenderTree/win/HistoryDelegate.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * 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 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 HistoryDelegate_h
-#define HistoryDelegate_h
-
-#include <WebKit/WebKit.h>
-#include <wtf/OwnPtr.h>
-
-class HistoryDelegate : public IWebHistoryDelegate {
-public:
- HistoryDelegate();
- virtual ~HistoryDelegate();
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebHistoryDelegate
- virtual HRESULT STDMETHODCALLTYPE didNavigateWithNavigationData(
- /* [in] */ IWebView* webView,
- /* [in] */ IWebNavigationData* navigationData,
- /* [in] */ IWebFrame* webFrame);
-
- virtual HRESULT STDMETHODCALLTYPE didPerformClientRedirectFromURL(
- /* [in] */ IWebView* webView,
- /* [in] */ BSTR sourceURL,
- /* [in] */ BSTR destinationURL,
- /* [in] */ IWebFrame* webFrame);
-
- virtual HRESULT STDMETHODCALLTYPE didPerformServerRedirectFromURL(
- /* [in] */ IWebView* webView,
- /* [in] */ BSTR sourceURL,
- /* [in] */ BSTR destinationURL,
- /* [in] */ IWebFrame* webFrame);
-
- virtual HRESULT STDMETHODCALLTYPE updateHistoryTitle(
- /* [in] */ IWebView* webView,
- /* [in] */ BSTR title,
- /* [in] */ BSTR url);
-
- virtual HRESULT STDMETHODCALLTYPE populateVisitedLinksForWebView(
- /* [in] */ IWebView* webView);
-
-private:
- ULONG m_refCount;
-};
-
-#endif // HistoryDelegate_h
diff --git a/Tools/DumpRenderTree/win/ImageDiffCairo.cpp b/Tools/DumpRenderTree/win/ImageDiffCairo.cpp
deleted file mode 100644
index d5a81b495..000000000
--- a/Tools/DumpRenderTree/win/ImageDiffCairo.cpp
+++ /dev/null
@@ -1,260 +0,0 @@
-/*
- * Copyright (C) 2005, 2007 Apple Inc. All rights reserved.
- * Copyright (C) 2005 Ben La Monica <ben.lamonica@gmail.com>. All rights reserved.
- * Copyright (C) 2011 Brent Fulgham. 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.
- */
-
-// FIXME: We need to be able to include these defines from a config.h somewhere.
-#define JS_EXPORT_PRIVATE
-#define WTF_EXPORT_PRIVATE
-
-#include <cairo.h>
-#include <stdio.h>
-#include <wtf/Platform.h>
-#include <wtf/RefPtr.h>
-#include <wtf/RetainPtr.h>
-
-#if PLATFORM(WIN)
-#include <fcntl.h>
-#include <io.h>
-#include <windows.h>
-#include <wtf/MathExtras.h>
-#endif
-
-using namespace std;
-
-static const int s_bufferSize = 2048;
-static const int s_bytesPerPixel = 4;
-static cairo_user_data_key_t s_imageDataKey;
-
-
-#if PLATFORM(WIN)
-#undef min
-#undef max
-
-static inline float strtof(const char* inputString, char** endptr)
-{
- return strtod(inputString, endptr);
-}
-#endif
-
-static cairo_status_t readFromData(void* closure, unsigned char* data, unsigned int length)
-{
- CFMutableDataRef dataSource = reinterpret_cast<CFMutableDataRef>(closure);
-
- CFRange range = CFRangeMake(0, length);
- CFDataGetBytes(dataSource, range, data);
- CFDataDeleteBytes(dataSource, range);
-
- return CAIRO_STATUS_SUCCESS;
-}
-
-static cairo_surface_t* createImageFromStdin(int bytesRemaining)
-{
- unsigned char buffer[s_bufferSize];
- RetainPtr<CFMutableDataRef> data = adoptCF(CFDataCreateMutable(0, bytesRemaining));
-
- while (bytesRemaining > 0) {
- size_t bytesToRead = min(bytesRemaining, s_bufferSize);
- size_t bytesRead = fread(buffer, 1, bytesToRead, stdin);
- CFDataAppendBytes(data.get(), buffer, static_cast<CFIndex>(bytesRead));
- bytesRemaining -= static_cast<int>(bytesRead);
- }
-
- return cairo_image_surface_create_from_png_stream (static_cast<cairo_read_func_t>(readFromData), data.get());
-}
-
-static void releaseMallocBuffer(void* data)
-{
- free(data);
-}
-
-static inline float pixelDifference(float expected, float actual)
-{
- return (actual - expected) / max<float>(255 - expected, expected);
-}
-
-static inline void normalizeBuffer(float maxDistance, unsigned char* buffer, size_t length)
-{
- if (maxDistance >= 1)
- return;
-
- for (size_t p = 0; p < length; ++p)
- buffer[p] /= maxDistance;
-}
-
-static cairo_surface_t* createDifferenceImage(cairo_surface_t* baselineImage, cairo_surface_t* actualImage, float& difference)
-{
- size_t width = cairo_image_surface_get_width(baselineImage);
- size_t height = cairo_image_surface_get_height(baselineImage);
-
- unsigned char* baselinePixel = cairo_image_surface_get_data(baselineImage);
- unsigned char* actualPixel = cairo_image_surface_get_data(actualImage);
-
- // Compare the content of the 2 bitmaps
- void* diffBuffer = malloc(width * height);
- unsigned char* diffPixel = reinterpret_cast<unsigned char*>(diffBuffer);
-
- float count = 0;
- float sum = 0;
- float maxDistance = 0;
- for (size_t y = 0; y < height; ++y) {
- for (size_t x = 0; x < width; ++x) {
- float red = pixelDifference(baselinePixel[0], actualPixel[0]);
- float green = pixelDifference(baselinePixel[1], actualPixel[1]);
- float blue = pixelDifference(baselinePixel[2], actualPixel[2]);
- float alpha = pixelDifference(baselinePixel[3], actualPixel[3]);
-
- float distance = sqrtf(red * red + green * green + blue * blue + alpha * alpha) / 2.0;
-
- *diffPixel++ = static_cast<unsigned char>(distance * 255);
-
- if (distance >= 1.0 / 255.0) {
- ++count;
- sum += distance;
- if (distance > maxDistance)
- maxDistance = distance;
- }
-
- baselinePixel += s_bytesPerPixel;
- actualPixel += s_bytesPerPixel;
- }
- }
-
- // 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)
- difference = 100.0f * sum / (height * width);
- else
- difference = 0;
-
- if (!difference) {
- free(diffBuffer);
- return 0;
- }
-
- // Generate a normalized diff image
- normalizeBuffer(maxDistance, reinterpret_cast<unsigned char*>(diffBuffer), height * width);
-
- cairo_surface_t* diffImage = cairo_image_surface_create_for_data(diffPixel, CAIRO_FORMAT_ARGB32, width, height, width * s_bytesPerPixel);
- cairo_surface_set_user_data(diffImage, &s_imageDataKey, diffBuffer, releaseMallocBuffer);
-
- return diffImage;
-}
-
-static inline bool imageHasAlpha(cairo_surface_t* image)
-{
- return (cairo_image_surface_get_format(image) == CAIRO_FORMAT_ARGB32);
-}
-
-static cairo_status_t writeToData(void* closure, unsigned char* data, unsigned int length)
-{
- CFMutableDataRef dataTarget = reinterpret_cast<CFMutableDataRef>(closure);
-
- CFDataAppendBytes(dataTarget, data, length);
-
- return CAIRO_STATUS_SUCCESS;
-}
-
-int main(int argc, const char* argv[])
-{
-#if PLATFORM(WIN)
- _setmode(0, _O_BINARY);
- _setmode(1, _O_BINARY);
-#endif
-
- float tolerance = 0;
-
- 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[s_bufferSize];
- cairo_surface_t* actualImage = 0;
- cairo_surface_t* baselineImage = 0;
-
- while (fgets(buffer, sizeof(buffer), stdin)) {
- 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) {
- cairo_surface_t* diffImage = 0;
- float difference = 100.0;
-
- if ((cairo_image_surface_get_width(actualImage) == cairo_image_surface_get_width(baselineImage))
- && (cairo_image_surface_get_height(actualImage) == cairo_image_surface_get_height(baselineImage))
- && (imageHasAlpha(actualImage) == imageHasAlpha(baselineImage))) {
- diffImage = createDifferenceImage(actualImage, baselineImage, difference); // difference is passed by reference
- if (difference <= tolerance)
- difference = 0;
- else {
- difference = roundf(difference * 100.0) / 100.0;
- difference = max<float>(difference, 0.01); // round to 2 decimal places
- }
- } else
- fputs("error, test and reference image have different properties.\n", stderr);
-
- if (difference > 0.0) {
- if (diffImage) {
- RetainPtr<CFMutableDataRef> imageData = adoptCF(CFDataCreateMutable(0, 0));
- cairo_surface_write_to_png_stream(diffImage, (cairo_write_func_t)writeToData, imageData.get());
- printf("Content-Length: %lu\n", CFDataGetLength(imageData.get()));
- fwrite(CFDataGetBytePtr(imageData.get()), 1, CFDataGetLength(imageData.get()), stdout);
- cairo_surface_destroy(diffImage);
- diffImage = 0;
- }
-
- fprintf(stdout, "diff: %01.2f%% failed\n", difference);
- } else
- fprintf(stdout, "diff: %01.2f%% passed\n", difference);
-
- cairo_surface_destroy(actualImage);
- cairo_surface_destroy(baselineImage);
- actualImage = 0;
- baselineImage = 0;
- }
-
- fflush(stdout);
- }
-
- return 0;
-}
diff --git a/Tools/DumpRenderTree/win/ImageDiffWin.cpp b/Tools/DumpRenderTree/win/ImageDiffWin.cpp
deleted file mode 100644
index 01dfc0b99..000000000
--- a/Tools/DumpRenderTree/win/ImageDiffWin.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 <windows.h>
-
-int main(int argc, const char* argv[]);
-
-extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(int argc, const char* argv[])
-{
- return main(argc, argv);
-}
diff --git a/Tools/DumpRenderTree/win/MD5.cpp b/Tools/DumpRenderTree/win/MD5.cpp
deleted file mode 100644
index 1bfc9c75f..000000000
--- a/Tools/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/Tools/DumpRenderTree/win/MD5.h b/Tools/DumpRenderTree/win/MD5.h
deleted file mode 100644
index 326e21d3e..000000000
--- a/Tools/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/Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp b/Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp
deleted file mode 100644
index f2025c66b..000000000
--- a/Tools/DumpRenderTree/win/PixelDumpSupportWin.cpp
+++ /dev/null
@@ -1,99 +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"
-
-#if USE(CG)
-#include "PixelDumpSupportCG.h"
-#elif USE(CAIRO)
-#include "PixelDumpSupportCairo.h"
-#endif
-
-#include "DumpRenderTree.h"
-
-#if USE(CG)
-// Note: Must be included *after* DumpRenderTree.h to avoid compile error.
-#include <CoreGraphics/CGBitmapContext.h>
-#endif
-
-#include <wtf/Assertions.h>
-#include <wtf/RetainPtr.h>
-
-static void makeAlphaChannelOpaque(void* argbBits, LONG width, LONG height)
-{
- unsigned* pixel = static_cast<unsigned*>(argbBits);
- for (LONG row = 0; row < height; ++row) {
- for (LONG column = 0; column < width; ++column)
- *pixel++ |= 0xff000000;
- }
-}
-
-PassRefPtr<BitmapContext> createBitmapContextFromWebView(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_PRINT, reinterpret_cast<WPARAM>(memoryDC), PRF_CLIENT | PRF_CHILDREN | PRF_OWNED);
- DeleteDC(memoryDC);
-
- BITMAP info = {0};
- GetObject(bitmap, sizeof(info), &info);
- ASSERT(info.bmBitsPixel == 32);
-
- // We create a context that has an alpha channel below so that the PNGs we generate will also
- // have an alpha channel. But WM_PRINT doesn't necessarily write anything into the alpha
- // channel, so we set the alpha channel to constant full opacity to make sure the resulting image is opaque.
- makeAlphaChannelOpaque(info.bmBits, info.bmWidth, info.bmHeight);
-
-#if USE(CG)
- RetainPtr<CGColorSpaceRef> colorSpace = adoptCF(CGColorSpaceCreateDeviceRGB());
- CGContextRef context = CGBitmapContextCreate(info.bmBits, info.bmWidth, info.bmHeight, 8,
- info.bmWidthBytes, colorSpace.get(), kCGBitmapByteOrder32Host | kCGImageAlphaPremultipliedFirst);
-#elif USE(CAIRO)
- cairo_surface_t* image = cairo_image_surface_create_for_data((unsigned char*)info.bmBits, CAIRO_FORMAT_ARGB32,
- info.bmWidth, info.bmHeight, info.bmWidthBytes);
- cairo_t* context = cairo_create(image);
- cairo_surface_destroy(image);
-#endif
-
- return BitmapContext::createByAdoptingBitmapAndContext(bitmap, context);
-}
diff --git a/Tools/DumpRenderTree/win/PolicyDelegate.cpp b/Tools/DumpRenderTree/win/PolicyDelegate.cpp
deleted file mode 100644
index 5d7177e53..000000000
--- a/Tools/DumpRenderTree/win/PolicyDelegate.cpp
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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 "TestRunner.h"
-#include <string>
-
-using std::wstring;
-
-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;
-}
-
-PolicyDelegate::PolicyDelegate()
- : m_refCount(1)
- , m_permissiveDelegate(false)
- , m_controllerToNotifyDone(0)
-{
-}
-
-// 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);
- wstring wurl = urlSuitableForTestResult(wstring(url, SysStringLen(url)));
-
- int navType = 0;
- VARIANT var;
- if (SUCCEEDED(actionInformation->Read(WebActionNavigationTypeKey, &var, 0))) {
- V_VT(&var) = VT_I4;
- navType = V_I4(&var);
- }
-
- LPCTSTR typeDescription;
- switch (navType) {
- case WebNavigationTypeLinkClicked:
- typeDescription = TEXT("link clicked");
- break;
- case WebNavigationTypeFormSubmitted:
- typeDescription = TEXT("form submitted");
- break;
- case WebNavigationTypeBackForward:
- typeDescription = TEXT("back/forward");
- break;
- case WebNavigationTypeReload:
- typeDescription = TEXT("reload");
- break;
- case WebNavigationTypeFormResubmitted:
- typeDescription = TEXT("form resubmitted");
- break;
- case WebNavigationTypeOther:
- typeDescription = TEXT("other");
- break;
- default:
- typeDescription = TEXT("illegal value");
- }
-
- wstring message = TEXT("Policy delegate: attempt to load ") + wurl + TEXT(" with navigation type '") + typeDescription + TEXT("'");
-
- VARIANT actionElementVar;
- if (SUCCEEDED(actionInformation->Read(WebActionElementKey, &actionElementVar, 0))) {
- COMPtr<IPropertyBag> actionElement(Query, V_UNKNOWN(&actionElementVar));
- VARIANT originatingNodeVar;
- if (SUCCEEDED(actionElement->Read(WebElementDOMNodeKey, &originatingNodeVar, 0))) {
- COMPtr<IDOMNode> originatingNode(Query, V_UNKNOWN(&originatingNodeVar));
- message += TEXT(" originating from ") + dumpPath(originatingNode.get());
- }
- }
-
- printf("%S\n", message.c_str());
-
- SysFreeString(url);
-
- if (m_permissiveDelegate)
- listener->use();
- else
- listener->ignore();
-
- if (m_controllerToNotifyDone) {
- m_controllerToNotifyDone->notifyDone();
- m_controllerToNotifyDone = 0;
- }
-
- return S_OK;
-}
-
-
-HRESULT STDMETHODCALLTYPE PolicyDelegate::unableToImplementPolicyWithError(
- /*[in]*/ IWebView* /*webView*/,
- /*[in]*/ IWebError* error,
- /*[in]*/ IWebFrame* frame)
-{
- BSTR domainStr;
- error->domain(&domainStr);
- wstring domainMessage = domainStr;
-
- int code;
- error->code(&code);
-
- BSTR frameName;
- frame->name(&frameName);
- wstring frameNameMessage = frameName;
-
- printf("Policy delegate: unable to implement policy with error domain '%S', error code %d, in frame '%S'", domainMessage.c_str(), code, frameNameMessage.c_str());
-
- SysFreeString(domainStr);
- SysFreeString(frameName);
-
- return S_OK;
-}
diff --git a/Tools/DumpRenderTree/win/PolicyDelegate.h b/Tools/DumpRenderTree/win/PolicyDelegate.h
deleted file mode 100644
index b6036fead..000000000
--- a/Tools/DumpRenderTree/win/PolicyDelegate.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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 TestRunner;
-
-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);
-
- // PolicyDelegate
- void setPermissive(bool permissive) { m_permissiveDelegate = permissive; }
- void setControllerToNotifyDone(TestRunner* controller) { m_controllerToNotifyDone = controller; }
-
-private:
- ULONG m_refCount;
- bool m_permissiveDelegate;
- TestRunner* m_controllerToNotifyDone;
-};
-
-#endif // PolicyDelegate_h
diff --git a/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp b/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp
deleted file mode 100644
index 6859780f3..000000000
--- a/Tools/DumpRenderTree/win/ResourceLoadDelegate.cpp
+++ /dev/null
@@ -1,372 +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 "TestRunner.h"
-#include <WebKit/WebKitCOMAPI.h>
-#include <comutil.h>
-#include <sstream>
-#include <tchar.h>
-#include <wtf/Vector.h>
-
-using namespace std;
-
-static inline wstring wstringFromBSTR(BSTR str)
-{
- return wstring(str, ::SysStringLen(str));
-}
-
-static inline wstring wstringFromInt(int i)
-{
- wostringstream ss;
- ss << i;
- return ss.str();
-}
-
-static inline BSTR BSTRFromString(const string& str)
-{
- int length = ::MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), 0, 0);
- BSTR result = ::SysAllocStringLen(0, length);
- ::MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.length(), result, length);
- return result;
-}
-
-wstring ResourceLoadDelegate::descriptionSuitableForTestResult(unsigned long identifier) const
-{
- IdentifierMap::const_iterator it = m_urlMap.find(identifier);
-
- if (it == m_urlMap.end())
- return L"<unknown>";
-
- return urlSuitableForTestResult(it->value);
-}
-
-wstring ResourceLoadDelegate::descriptionSuitableForTestResult(IWebURLRequest* request)
-{
- if (!request)
- return L"(null)";
-
- BSTR urlBSTR;
- if (FAILED(request->URL(&urlBSTR)))
- return wstring();
-
- wstring url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- ::SysFreeString(urlBSTR);
-
- BSTR mainDocumentURLBSTR;
- if (FAILED(request->mainDocumentURL(&mainDocumentURLBSTR)))
- return wstring();
-
- wstring mainDocumentURL = urlSuitableForTestResult(wstringFromBSTR(mainDocumentURLBSTR));
- ::SysFreeString(mainDocumentURLBSTR);
-
- BSTR httpMethodBSTR;
- if (FAILED(request->HTTPMethod(&httpMethodBSTR)))
- return wstring();
-
- wstring httpMethod = wstringFromBSTR(httpMethodBSTR);
- ::SysFreeString(httpMethodBSTR);
-
- return L"<NSURLRequest URL " + url + L", main document URL " + mainDocumentURL + L", http method " + httpMethod + L">";
-}
-
-wstring ResourceLoadDelegate::descriptionSuitableForTestResult(IWebURLResponse* response)
-{
- if (!response)
- return L"(null)";
-
- BSTR urlBSTR;
- if (FAILED(response->URL(&urlBSTR)))
- return wstring();
-
- wstring url = urlSuitableForTestResult(wstringFromBSTR(urlBSTR));
- ::SysFreeString(urlBSTR);
-
- int statusCode = 0;
- COMPtr<IWebHTTPURLResponse> httpResponse;
- if (response && SUCCEEDED(response->QueryInterface(&httpResponse)))
- httpResponse->statusCode(&statusCode);
-
- return L"<NSURLResponse " + url + L", http status code " + wstringFromInt(statusCode) + L">";
-}
-
-wstring ResourceLoadDelegate::descriptionSuitableForTestResult(IWebError* error, unsigned long identifier) const
-{
- 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();
-
- if (failingURLSTR) {
- result += L", failing URL \"" + urlSuitableForTestResult(wstringFromBSTR(failingURLSTR)) + L"\"";
- ::SysFreeString(failingURLSTR);
- }
-
- result += 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 if (IsEqualGUID(riid, IID_IWebResourceLoadDelegatePrivate2))
- *ppvObject = static_cast<IWebResourceLoadDelegatePrivate2*>(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 && gTestRunner->dumpResourceLoadCallbacks()) {
- BSTR urlStr;
- if (FAILED(request->URL(&urlStr)))
- return E_FAIL;
-
- ASSERT(!urlMap().contains(identifier));
- urlMap().set(identifier, wstringFromBSTR(urlStr));
- }
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::removeIdentifierForRequest(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier)
-{
- urlMap().remove(identifier);
-
- 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 && gTestRunner->dumpResourceLoadCallbacks()) {
- printf("%S - willSendRequest %S redirectResponse %S\n",
- descriptionSuitableForTestResult(identifier).c_str(),
- descriptionSuitableForTestResult(request).c_str(),
- descriptionSuitableForTestResult(redirectResponse).c_str());
- }
-
- if (!done && !gTestRunner->deferMainResourceDataLoad()) {
- COMPtr<IWebDataSourcePrivate> dataSourcePrivate(Query, dataSource);
- if (!dataSourcePrivate)
- return E_FAIL;
- dataSourcePrivate->setDeferMainResourceDataLoad(FALSE);
- }
-
- if (!done && gTestRunner->willSendRequestReturnsNull()) {
- *newRequest = 0;
- return S_OK;
- }
-
- if (!done && gTestRunner->willSendRequestReturnsNullOnRedirect() && redirectResponse) {
- printf("Returning null for this redirect\n");
- *newRequest = 0;
- return S_OK;
- }
-
- IWebMutableURLRequest* requestCopy = 0;
- request->mutableCopy(&requestCopy);
- const set<string>& clearHeaders = gTestRunner->willSendRequestClearHeaders();
- for (set<string>::const_iterator header = clearHeaders.begin(); header != clearHeaders.end(); ++header) {
- BSTR bstrHeader = BSTRFromString(*header);
- requestCopy->setValue(0, bstrHeader);
- SysFreeString(bstrHeader);
- }
-
- *newRequest = requestCopy;
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didReceiveAuthenticationChallenge(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLAuthenticationChallenge *challenge,
- /* [in] */ IWebDataSource *dataSource)
-{
- COMPtr<IWebURLAuthenticationChallengeSender> sender;
- if (!challenge || FAILED(challenge->sender(&sender)))
- return E_FAIL;
-
- if (!gTestRunner->handlesAuthenticationChallenges()) {
- printf("%S - didReceiveAuthenticationChallenge - Simulating cancelled authentication sheet\n", descriptionSuitableForTestResult(identifier).c_str());
- sender->continueWithoutCredentialForAuthenticationChallenge(challenge);
- return S_OK;
- }
-
- const char* user = gTestRunner->authenticationUsername().c_str();
- const char* password = gTestRunner->authenticationPassword().c_str();
-
- printf("%S - didReceiveAuthenticationChallenge - Responding with %s:%s\n", descriptionSuitableForTestResult(identifier).c_str(), user, password);
-
- COMPtr<IWebURLCredential> credential;
- if (FAILED(WebKitCreateInstance(CLSID_WebURLCredential, 0, IID_IWebURLCredential, (void**)&credential)))
- return E_FAIL;
- credential->initWithUser(_bstr_t(user), _bstr_t(password), WebURLCredentialPersistenceForSession);
-
- sender->useCredential(credential.get(), challenge);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didReceiveResponse(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebURLResponse* response,
- /* [in] */ IWebDataSource* dataSource)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- printf("%S - didReceiveResponse %S\n",
- descriptionSuitableForTestResult(identifier).c_str(),
- descriptionSuitableForTestResult(response).c_str());
- }
- if (!done && gTestRunner->dumpResourceResponseMIMETypes()) {
- BSTR mimeTypeBSTR;
- if (FAILED(response->MIMEType(&mimeTypeBSTR)))
- E_FAIL;
-
- wstring mimeType = wstringFromBSTR(mimeTypeBSTR);
- ::SysFreeString(mimeTypeBSTR);
-
- BSTR urlBSTR;
- if (FAILED(response->URL(&urlBSTR)))
- E_FAIL;
-
- wstring url = wstringFromBSTR(urlBSTR);
- ::SysFreeString(urlBSTR);
-
- printf("%S has MIME type %S\n", lastPathComponent(url).c_str(), mimeType.c_str());
- }
-
- return S_OK;
-}
-
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didFinishLoadingFromDataSource(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebDataSource* dataSource)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- printf("%S - didFinishLoading\n",
- descriptionSuitableForTestResult(identifier).c_str());
- }
-
- removeIdentifierForRequest(webView, identifier);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE ResourceLoadDelegate::didFailLoadingWithError(
- /* [in] */ IWebView* webView,
- /* [in] */ unsigned long identifier,
- /* [in] */ IWebError* error,
- /* [in] */ IWebDataSource* dataSource)
-{
- if (!done && gTestRunner->dumpResourceLoadCallbacks()) {
- printf("%S - didFailLoadingWithError: %S\n",
- descriptionSuitableForTestResult(identifier).c_str(),
- descriptionSuitableForTestResult(error, identifier).c_str());
- }
-
- removeIdentifierForRequest(webView, identifier);
-
- return S_OK;
-}
diff --git a/Tools/DumpRenderTree/win/ResourceLoadDelegate.h b/Tools/DumpRenderTree/win/ResourceLoadDelegate.h
deleted file mode 100644
index 3f20f47c9..000000000
--- a/Tools/DumpRenderTree/win/ResourceLoadDelegate.h
+++ /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.
- */
-
-#ifndef ResourceLoadDelegate_h
-#define ResourceLoadDelegate_h
-
-#include <WebKit/WebKit.h>
-#include <string>
-#include <wtf/HashMap.h>
-
-class ResourceLoadDelegate : public IWebResourceLoadDelegate, public IWebResourceLoadDelegatePrivate2 {
-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);
-
- 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);
-
- 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; }
-
- // IWebResourceLoadDelegatePrivate2
- virtual HRESULT STDMETHODCALLTYPE removeIdentifierForRequest(
- /* [in] */ IWebView *webView,
- /* [in] */ unsigned long identifier);
-
-private:
- static std::wstring descriptionSuitableForTestResult(IWebURLRequest*);
- static std::wstring descriptionSuitableForTestResult(IWebURLResponse*);
- std::wstring descriptionSuitableForTestResult(unsigned long) const;
- std::wstring descriptionSuitableForTestResult(IWebError*, unsigned long) const;
-
- typedef HashMap<unsigned long, std::wstring> IdentifierMap;
- IdentifierMap& urlMap() { return m_urlMap; }
- IdentifierMap m_urlMap;
-
- ULONG m_refCount;
-};
-
-#endif // ResourceLoadDelegate_h
diff --git a/Tools/DumpRenderTree/win/TestRunnerWin.cpp b/Tools/DumpRenderTree/win/TestRunnerWin.cpp
deleted file mode 100644
index f1a2b2b03..000000000
--- a/Tools/DumpRenderTree/win/TestRunnerWin.cpp
+++ /dev/null
@@ -1,1214 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009, 2010, 2012 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 "TestRunner.h"
-
-#include "DumpRenderTree.h"
-#include "EditingDelegate.h"
-#include "PolicyDelegate.h"
-#include "WorkQueue.h"
-#include "WorkQueueItem.h"
-#include <CoreFoundation/CoreFoundation.h>
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <JavaScriptCore/JSStringRefBSTR.h>
-#include <JavaScriptCore/JavaScriptCore.h>
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <WebKit/WebKitCOMAPI.h>
-#include <comutil.h>
-#include <shlguid.h>
-#include <shlwapi.h>
-#include <shobjidl.h>
-#include <string>
-#include <wtf/Assertions.h>
-#include <wtf/Platform.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/Vector.h>
-
-using std::string;
-using std::wstring;
-
-static bool resolveCygwinPath(const wstring& cygwinPath, wstring& windowsPath);
-
-TestRunner::~TestRunner()
-{
- 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 TestRunner::addDisallowedURL(JSStringRef url)
-{
- // FIXME: Implement!
-}
-
-void TestRunner::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());
-}
-
-bool TestRunner::callShouldCloseOnWebView()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return false;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return false;
-
- BOOL result;
- viewPrivate->shouldClose(&result);
- return result;
-}
-
-JSStringRef TestRunner::copyDecodedHostName(JSStringRef name)
-{
- // FIXME: Implement!
- return 0;
-}
-
-JSStringRef TestRunner::copyEncodedHostName(JSStringRef name)
-{
- // FIXME: Implement!
- return 0;
-}
-
-void TestRunner::dispatchPendingLoadRequests()
-{
- // FIXME: Implement for testing fix for 6727495
-}
-
-void TestRunner::display()
-{
- displayWebView();
-}
-
-void TestRunner::keepWebHistory()
-{
- COMPtr<IWebHistory> history;
- if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history))))
- return;
-
- COMPtr<IWebHistory> sharedHistory;
- if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(sharedHistory), reinterpret_cast<void**>(&sharedHistory))))
- return;
-
- history->setOptionalSharedHistory(sharedHistory.get());
-}
-
-void TestRunner::waitForPolicyDelegate()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- setWaitToDump(true);
- policyDelegate->setControllerToNotifyDone(this);
- webView->setPolicyDelegate(policyDelegate);
-}
-
-size_t TestRunner::webHistoryItemCount()
-{
- COMPtr<IWebHistory> history;
- if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history))))
- return 0;
-
- COMPtr<IWebHistory> sharedHistory;
- if (FAILED(history->optionalSharedHistory(&sharedHistory)) || !sharedHistory)
- return 0;
-
- COMPtr<IWebHistoryPrivate> sharedHistoryPrivate;
- if (FAILED(sharedHistory->QueryInterface(&sharedHistoryPrivate)))
- return 0;
-
- int count;
- if (FAILED(sharedHistoryPrivate->allItems(&count, 0)))
- return 0;
-
- return count;
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName() const
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("win"));
- return platformName;
-}
-
-void TestRunner::notifyDone()
-{
- // Same as on mac. This can be shared.
- if (m_waitToDump && !topLoadingFrame && !WorkQueue::shared()->count())
- dump();
- m_waitToDump = false;
-}
-
-JSStringRef TestRunner::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());
-}
-
-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 TestRunner::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 TestRunner::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 TestRunner::setAlwaysAcceptCookies(bool alwaysAcceptCookies)
-{
- if (alwaysAcceptCookies == m_alwaysAcceptCookies)
- return;
-
- if (!::setAlwaysAcceptCookies(alwaysAcceptCookies))
- return;
- m_alwaysAcceptCookies = alwaysAcceptCookies;
-}
-
-void TestRunner::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 TestRunner::setCustomPolicyDelegate(bool setDelegate, bool permissive)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- if (setDelegate) {
- policyDelegate->setPermissive(permissive);
- webView->setPolicyDelegate(policyDelegate);
- } else
- webView->setPolicyDelegate(0);
-}
-
-void TestRunner::setMockDeviceOrientation(bool canProvideAlpha, double alpha, bool canProvideBeta, double beta, bool canProvideGamma, double gamma)
-{
- // FIXME: Implement for DeviceOrientation layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=30335.
-}
-
-void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
-{
- // FIXME: Implement for Geolocation layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=28264.
-}
-
-void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
-{
- // FIXME: Implement for Geolocation layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=28264.
-}
-
-void TestRunner::setGeolocationPermission(bool allow)
-{
- // FIXME: Implement for Geolocation layout tests.
- setGeolocationPermissionCommon(allow);
-}
-
-int TestRunner::numberOfPendingGeolocationPermissionRequests()
-{
- // FIXME: Implement for Geolocation layout tests.
- return -1;
-}
-
-void TestRunner::addMockSpeechInputResult(JSStringRef result, double confidence, JSStringRef language)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setMockSpeechInputDumpRect(bool flag)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::startSpeechInput(JSContextRef inputElement)
-{
- // FIXME: Implement for speech input layout tests.
- // See https://bugs.webkit.org/show_bug.cgi?id=39485.
-}
-
-void TestRunner::setIconDatabaseEnabled(bool iconDatabaseEnabled)
-{
- // See also <rdar://problem/6480108>
- COMPtr<IWebIconDatabase> iconDatabase;
- COMPtr<IWebIconDatabase> tmpIconDatabase;
- if (FAILED(WebKitCreateInstance(CLSID_WebIconDatabase, 0, IID_IWebIconDatabase, (void**)&tmpIconDatabase)))
- return;
- if (FAILED(tmpIconDatabase->sharedIconDatabase(&iconDatabase)))
- return;
-
- iconDatabase->setEnabled(iconDatabaseEnabled);
-}
-
-void TestRunner::setMainFrameIsFirstResponder(bool flag)
-{
- // FIXME: Implement!
-}
-
-void TestRunner::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 TestRunner::setXSSAuditorEnabled(bool enabled)
-{
- 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->setXSSAuditorEnabled(enabled);
-}
-
-void TestRunner::setSpatialNavigationEnabled(bool enabled)
-{
- // FIXME: Implement for SpatialNavigation layout tests.
-}
-
-void TestRunner::setAllowUniversalAccessFromFileURLs(bool enabled)
-{
- 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->setAllowUniversalAccessFromFileURLs(enabled);
-}
-
-void TestRunner::setAllowFileAccessFromFileURLs(bool enabled)
-{
- 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->setAllowFileAccessFromFileURLs(enabled);
-}
-
-void TestRunner::setPopupBlockingEnabled(bool enabled)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebPreferences> preferences;
- if (FAILED(webView->preferences(&preferences)))
- return;
-
- preferences->setJavaScriptCanOpenWindowsAutomatically(!enabled);
-}
-
-void TestRunner::setPluginsEnabled(bool flag)
-{
- // FIXME: Implement
-}
-
-void TestRunner::setJavaScriptCanAccessClipboard(bool enabled)
-{
- 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->setJavaScriptCanAccessClipboard(enabled);
-}
-
-void TestRunner::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 TestRunner::setUseDashboardCompatibilityMode(bool flag)
-{
- // FIXME: Implement!
-}
-
-void TestRunner::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) {
- // Cygwin 1.7 doesn't store Cygwin's root as a mount point anymore, because mount points are now stored in /etc/fstab.
- // However, /etc/fstab doesn't contain any information about where / is located as a Windows path, so we need to use Cygwin's
- // new registry key that has the root.
- result = ::SHGetValueW(HKEY_LOCAL_MACHINE, TEXT("SOFTWARE\\Cygwin\\setup"), TEXT("rootdir"), &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;
-}
-
-void TestRunner::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 TestRunner::setValueForUser(JSContextRef context, JSValueRef element, JSStringRef value)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> webViewPrivate(Query, webView);
- if (!webViewPrivate)
- return;
-
- COMPtr<IDOMElement> domElement;
- if (FAILED(webViewPrivate->elementFromJS(context, element, &domElement)))
- return;
-
- COMPtr<IDOMHTMLInputElement> domInputElement;
- if (FAILED(domElement->QueryInterface(IID_IDOMHTMLInputElement, reinterpret_cast<void**>(&domInputElement))))
- return;
-
- _bstr_t valueBSTR(JSStringCopyBSTR(value), false);
-
- domInputElement->setValueForUser(valueBSTR);
-}
-
-void TestRunner::setViewModeMediaFeature(JSStringRef mode)
-{
- // FIXME: implement
-}
-
-void TestRunner::setPersistentUserStyleSheetLocation(JSStringRef jsURL)
-{
- RetainPtr<CFStringRef> urlString = adoptCF(JSStringCopyCFString(0, jsURL));
- ::setPersistentUserStyleSheetLocation(urlString.get());
-}
-
-void TestRunner::clearPersistentUserStyleSheet()
-{
- ::setPersistentUserStyleSheetLocation(0);
-}
-
-void TestRunner::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);
-}
-
-static const CFTimeInterval waitToDumpWatchdogInterval = 30.0;
-
-static void CALLBACK waitUntilDoneWatchdogFired(HWND, UINT, UINT_PTR, DWORD)
-{
- gTestRunner->waitToDumpWatchdogTimerFired();
-}
-
-void TestRunner::setWaitToDump(bool waitUntilDone)
-{
- m_waitToDump = waitUntilDone;
- if (m_waitToDump && !waitToDumpWatchdog)
- waitToDumpWatchdog = SetTimer(0, 0, waitToDumpWatchdogInterval * 1000, waitUntilDoneWatchdogFired);
-}
-
-int TestRunner::windowCount()
-{
- return openWindows().size();
-}
-
-void TestRunner::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);
-}
-
-bool TestRunner::findString(JSContextRef /* context */, JSStringRef /* target */, JSObjectRef /* optionsArray */)
-{
- // FIXME: Implement
- return false;
-}
-
-void TestRunner::setCacheModel(int)
-{
- // FIXME: Implement
-}
-
-bool TestRunner::isCommandEnabled(JSStringRef /*name*/)
-{
- printf("ERROR: TestRunner::isCommandEnabled() not implemented\n");
- return false;
-}
-
-void TestRunner::clearAllApplicationCaches()
-{
- // FIXME: Implement to support application cache quotas.
-}
-
-void TestRunner::clearApplicationCacheForOrigin(JSStringRef origin)
-{
- // FIXME: Implement to support deleting all application cache for an origin.
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long quota)
-{
- // FIXME: Implement to support application cache quotas.
-}
-
-JSValueRef TestRunner::originsWithApplicationCache(JSContextRef context)
-{
- // FIXME: Implement to get origins that have application caches.
- return JSValueMakeUndefined(context);
-}
-
-long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef name)
-{
- // FIXME: Implement to get disk usage by all application caches for an origin.
- return 0;
-}
-
-void TestRunner::clearAllDatabases()
-{
- COMPtr<IWebDatabaseManager> databaseManager;
- COMPtr<IWebDatabaseManager> tmpDatabaseManager;
- if (FAILED(WebKitCreateInstance(CLSID_WebDatabaseManager, 0, IID_IWebDatabaseManager, (void**)&tmpDatabaseManager)))
- return;
- if (FAILED(tmpDatabaseManager->sharedWebDatabaseManager(&databaseManager)))
- return;
-
- databaseManager->deleteAllDatabases();
-}
-
-void TestRunner::overridePreference(JSStringRef key, JSStringRef value)
-{
- 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;
-
- BSTR keyBSTR = JSStringCopyBSTR(key);
- BSTR valueBSTR = JSStringCopyBSTR(value);
- prefsPrivate->setPreferenceForTest(keyBSTR, valueBSTR);
- SysFreeString(keyBSTR);
- SysFreeString(valueBSTR);
-}
-
-void TestRunner::setDatabaseQuota(unsigned long long quota)
-{
- COMPtr<IWebDatabaseManager> databaseManager;
- COMPtr<IWebDatabaseManager> tmpDatabaseManager;
-
- if (FAILED(WebKitCreateInstance(CLSID_WebDatabaseManager, 0, IID_IWebDatabaseManager, (void**)&tmpDatabaseManager)))
- return;
- if (FAILED(tmpDatabaseManager->sharedWebDatabaseManager(&databaseManager)))
- return;
-
- databaseManager->setQuota(TEXT("file:///"), quota);
-}
-
-void TestRunner::goBack()
-{
- // FIXME: implement to enable loader/navigation-while-deferring-loads.html
-}
-
-void TestRunner::setDefersLoading(bool)
-{
- // FIXME: implement to enable loader/navigation-while-deferring-loads.html
-}
-
-void TestRunner::setDomainRelaxationForbiddenForURLScheme(bool forbidden, JSStringRef scheme)
-{
- COMPtr<IWebViewPrivate> webView;
- if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView))))
- return;
-
- BSTR schemeBSTR = JSStringCopyBSTR(scheme);
- webView->setDomainRelaxationForbiddenForURLScheme(forbidden, schemeBSTR);
- SysFreeString(schemeBSTR);
-}
-
-void TestRunner::setAppCacheMaximumSize(unsigned long long size)
-{
- printf("ERROR: TestRunner::setAppCacheMaximumSize() not implemented\n");
-}
-
-static _bstr_t bstrT(JSStringRef jsString)
-{
- // The false parameter tells the _bstr_t constructor to adopt the BSTR we pass it.
- return _bstr_t(JSStringCopyBSTR(jsString), false);
-}
-
-void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- COMPtr<IWebViewPrivate> webView;
- if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView))))
- return;
-
- webView->addOriginAccessWhitelistEntry(bstrT(sourceOrigin).GetBSTR(), bstrT(destinationProtocol).GetBSTR(), bstrT(destinationHost).GetBSTR(), allowDestinationSubdomains);
-}
-
-void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
-{
- COMPtr<IWebViewPrivate> webView;
- if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView))))
- return;
-
- webView->removeOriginAccessWhitelistEntry(bstrT(sourceOrigin).GetBSTR(), bstrT(destinationProtocol).GetBSTR(), bstrT(destinationHost).GetBSTR(), allowDestinationSubdomains);
-}
-
-void TestRunner::setScrollbarPolicy(JSStringRef orientation, JSStringRef policy)
-{
- // FIXME: implement
-}
-
-void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
-{
- COMPtr<IWebViewPrivate> webView;
- if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView))))
- return;
-
- COMPtr<IWebScriptWorld> world;
- if (FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(world), reinterpret_cast<void**>(&world))))
- return;
-
- webView->addUserScriptToGroup(_bstr_t(L"org.webkit.DumpRenderTree").GetBSTR(), world.get(), bstrT(source).GetBSTR(), 0, 0, 0, 0, 0, runAtStart ? WebInjectAtDocumentStart : WebInjectAtDocumentEnd);
-}
-
-
-void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
-{
- COMPtr<IWebViewPrivate> webView;
- if (FAILED(WebKitCreateInstance(__uuidof(WebView), 0, __uuidof(webView), reinterpret_cast<void**>(&webView))))
- return;
-
- COMPtr<IWebScriptWorld> world;
- if (FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(world), reinterpret_cast<void**>(&world))))
- return;
-
- webView->addUserStyleSheetToGroup(_bstr_t(L"org.webkit.DumpRenderTree").GetBSTR(), world.get(), bstrT(source).GetBSTR(), 0, 0, 0, 0, 0);
-}
-
-void TestRunner::setDeveloperExtrasEnabled(bool enabled)
-{
- 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->setDeveloperExtrasEnabled(enabled);
-}
-
-void TestRunner::showWebInspector()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate(Query, webView);
- if (!viewPrivate)
- return;
-
- COMPtr<IWebInspector> inspector;
- if (SUCCEEDED(viewPrivate->inspector(&inspector)))
- inspector->show();
-}
-
-void TestRunner::closeWebInspector()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate(Query, webView);
- if (!viewPrivate)
- return;
-
- COMPtr<IWebInspector> inspector;
- if (FAILED(viewPrivate->inspector(&inspector)))
- return;
-
- inspector->close();
-}
-
-void TestRunner::evaluateInWebInspector(long callId, JSStringRef script)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate(Query, webView);
- if (!viewPrivate)
- return;
-
- COMPtr<IWebInspector> inspector;
- if (FAILED(viewPrivate->inspector(&inspector)))
- return;
-
- COMPtr<IWebInspectorPrivate> inspectorPrivate(Query, inspector);
- if (!inspectorPrivate)
- return;
-
- inspectorPrivate->evaluateInFrontend(callId, bstrT(script).GetBSTR());
-}
-
-typedef HashMap<unsigned, COMPtr<IWebScriptWorld> > WorldMap;
-static WorldMap& worldMap()
-{
- static WorldMap& map = *new WorldMap;
- return map;
-}
-
-unsigned worldIDForWorld(IWebScriptWorld* world)
-{
- WorldMap::const_iterator end = worldMap().end();
- for (WorldMap::const_iterator it = worldMap().begin(); it != end; ++it) {
- if (it->value == world)
- return it->key;
- }
-
- return 0;
-}
-
-void TestRunner::evaluateScriptInIsolatedWorldAndReturnValue(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::evaluateScriptInIsolatedWorld(unsigned worldID, JSObjectRef globalObject, JSStringRef script)
-{
- COMPtr<IWebFramePrivate> framePrivate(Query, frame);
- if (!framePrivate)
- return;
-
- // A worldID of 0 always corresponds to a new world. Any other worldID corresponds to a world
- // that is created once and cached forever.
- COMPtr<IWebScriptWorld> world;
- if (!worldID) {
- if (FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(world), reinterpret_cast<void**>(&world))))
- return;
- } else {
- COMPtr<IWebScriptWorld>& worldSlot = worldMap().add(worldID, 0).iterator->value;
- if (!worldSlot && FAILED(WebKitCreateInstance(__uuidof(WebScriptWorld), 0, __uuidof(worldSlot), reinterpret_cast<void**>(&worldSlot))))
- return;
- world = worldSlot;
- }
-
- BSTR result;
- if (FAILED(framePrivate->stringByEvaluatingJavaScriptInScriptWorld(world.get(), globalObject, bstrT(script).GetBSTR(), &result)))
- return;
- SysFreeString(result);
-}
-
-void TestRunner::removeAllVisitedLinks()
-{
- COMPtr<IWebHistory> history;
- if (FAILED(WebKitCreateInstance(CLSID_WebHistory, 0, __uuidof(history), reinterpret_cast<void**>(&history))))
- return;
-
- COMPtr<IWebHistory> sharedHistory;
- if (FAILED(history->optionalSharedHistory(&sharedHistory)) || !sharedHistory)
- return;
-
- COMPtr<IWebHistoryPrivate> sharedHistoryPrivate;
- if (FAILED(sharedHistory->QueryInterface(&sharedHistoryPrivate)))
- return;
-
- sharedHistoryPrivate->removeAllVisitedLinks();
-}
-
-void TestRunner::apiTestNewWindowDataLoadBaseURL(JSStringRef utf8Data, JSStringRef baseURL)
-{
-
-}
-
-void TestRunner::apiTestGoToCurrentBackForwardItem()
-{
- 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;
-
- BOOL success;
- webView->goToBackForwardItem(item.get(), &success);
-}
-
-void TestRunner::setWebViewEditable(bool)
-{
-}
-
-void TestRunner::authenticateSession(JSStringRef, JSStringRef, JSStringRef)
-{
-}
-
-void TestRunner::abortModal()
-{
-}
-
-void TestRunner::setSerializeHTTPLoads(bool)
-{
- // FIXME: Implement.
-}
-
-void TestRunner::syncLocalStorage()
-{
- // FIXME: Implement.
-}
-
-void TestRunner::observeStorageTrackerNotifications(unsigned number)
-{
- // FIXME: Implement.
-}
-
-void TestRunner::deleteAllLocalStorage()
-{
- // FIXME: Implement.
-}
-
-JSValueRef TestRunner::originsWithLocalStorage(JSContextRef context)
-{
- // FIXME: Implement.
- return JSValueMakeUndefined(context);
-}
-
-long long TestRunner::localStorageDiskUsageForOrigin(JSStringRef originIdentifier)
-{
- // FIXME: Implement to support getting local storage disk usage for an origin.
- return 0;
-}
-
-void TestRunner::deleteLocalStorageForOrigin(JSStringRef URL)
-{
- // FIXME: Implement.
-}
-
-void TestRunner::setTextDirection(JSStringRef direction)
-{
- COMPtr<IWebFramePrivate> framePrivate(Query, frame);
- if (!framePrivate)
- return;
-
- framePrivate->setTextDirection(bstrT(direction).GetBSTR());
-}
-
-void TestRunner::addChromeInputField()
-{
-}
-
-void TestRunner::removeChromeInputField()
-{
-}
-
-void TestRunner::focusWebView()
-{
-}
-
-void TestRunner::setBackingScaleFactor(double)
-{
-}
-
-void TestRunner::grantWebNotificationPermission(JSStringRef origin)
-{
-}
-
-void TestRunner::denyWebNotificationPermission(JSStringRef jsOrigin)
-{
-}
-
-void TestRunner::removeAllWebNotificationPermissions()
-{
-}
-
-void TestRunner::simulateWebNotificationClick(JSValueRef jsNotification)
-{
-}
-
-void TestRunner::simulateLegacyWebNotificationClick(JSStringRef title)
-{
- // FIXME: Implement.
-}
-
-void TestRunner::resetPageVisibility()
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::setPageVisibility(const char*)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::setAutomaticLinkDetectionEnabled(bool)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::setStorageDatabaseIdleInterval(double)
-{
- // FIXME: Implement this.
-}
-
-void TestRunner::closeIdleLocalStorageDatabases()
-{
- // FIXME: Implement this.
-}
diff --git a/Tools/DumpRenderTree/win/TextInputController.cpp b/Tools/DumpRenderTree/win/TextInputController.cpp
deleted file mode 100755
index c54dd17de..000000000
--- a/Tools/DumpRenderTree/win/TextInputController.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2010 Joone Hur <joone@kldp.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 "TextInputController.h"
-
-#include <JavaScriptCore/JSRetainPtr.h>
-#include <wtf/RefPtr.h>
-
-// Static Functions
-
-static JSValueRef setMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 3)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> str(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- double from = JSValueToNumber(context, arguments[1], exception);
- ASSERT(!*exception);
-
- double length = JSValueToNumber(context, arguments[2], exception);
- ASSERT(!*exception);
-
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
-
- if (controller)
- controller->setMarkedText(str.get(), from, length);
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef hasMarkedTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
-
- if (controller)
- return JSValueMakeBoolean(context, controller->hasMarkedText());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef unmarkTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
- if (controller)
- controller->unmarkText();
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef markedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
- if (controller) {
- vector<int> range = controller->markedRange();
- if (range.size() == 2) {
- JSValueRef argumentsArrayValues[] = { JSValueMakeNumber(context, range[0]), JSValueMakeNumber(context, range[1]) };
- JSObjectRef result = JSObjectMakeArray(context, sizeof(argumentsArrayValues) / sizeof(JSValueRef), argumentsArrayValues, exception);
- ASSERT(!*exception);
- return result;
- }
- }
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef insertTextCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 1)
- return JSValueMakeUndefined(context);
-
- JSRetainPtr<JSStringRef> str(Adopt, JSValueToStringCopy(context, arguments[0], exception));
- ASSERT(!*exception);
-
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
-
- if (controller)
- controller->insertText(str.get());
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef firstRectForCharacterRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- if (argumentCount < 2)
- return JSValueMakeUndefined(context);
-
- double start = JSValueToNumber(context, arguments[0], exception);
- ASSERT(!*exception);
-
- double length = JSValueToNumber(context, arguments[1], exception);
- ASSERT(!*exception);
-
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
-
- if (controller) {
- vector<int> rect = controller->firstRectForCharacterRange(start, length);
- if (rect.size() == 4) {
- JSValueRef argumentsArrayValues[] =
- {
- JSValueMakeNumber(context, rect[0]),
- JSValueMakeNumber(context, rect[1]),
- JSValueMakeNumber(context, rect[2]),
- JSValueMakeNumber(context, rect[3]),
- };
- JSObjectRef result = JSObjectMakeArray(context, sizeof(argumentsArrayValues) / sizeof(JSValueRef), argumentsArrayValues, exception);
- ASSERT(!*exception);
- return result;
- }
- }
-
- return JSValueMakeUndefined(context);
-}
-
-static JSValueRef selectedRangeCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
-{
- TextInputController* controller = static_cast<TextInputController*>(JSObjectGetPrivate(thisObject));
-
- if (controller) {
- vector<int> rect = controller->selectedRange();
- if (rect.size() == 2) {
- JSValueRef argumentsArrayValues[] = {
- JSValueMakeNumber(context, rect[0]),
- JSValueMakeNumber(context, rect[1]),
- };
- JSObjectRef result = JSObjectMakeArray(context, sizeof(argumentsArrayValues) / sizeof(JSValueRef), argumentsArrayValues, exception);
- ASSERT(!*exception);
- return result;
- }
- }
-
- return JSValueMakeUndefined(context);
-}
-
-// Object Creation
-
-void TextInputController::makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception)
-{
- JSRetainPtr<JSStringRef> textInputContollerStr(Adopt, JSStringCreateWithUTF8CString("textInputController"));
-
- JSClassRef classRef = getJSClass();
- JSValueRef textInputContollerObject = JSObjectMake(context, classRef, this);
- JSClassRelease(classRef);
-
- JSObjectSetProperty(context, windowObject, textInputContollerStr.get(), textInputContollerObject, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, exception);
-}
-
-JSClassRef TextInputController::getJSClass()
-{
- static JSStaticValue* staticValues = TextInputController::staticValues();
- static JSStaticFunction* staticFunctions = TextInputController::staticFunctions();
- static JSClassDefinition classDefinition =
- {
- 0, kJSClassAttributeNone, "TextInputController", 0, staticValues, staticFunctions,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
- };
-
- return JSClassCreate(&classDefinition);
-}
-
-JSStaticValue* TextInputController::staticValues()
-{
- static JSStaticValue staticValues[] =
- {
- { 0, 0, 0, 0 }
- };
- return staticValues;
-}
-
-JSStaticFunction* TextInputController::staticFunctions()
-{
- static JSStaticFunction staticFunctions[] = {
- { "setMarkedText", setMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "hasMarkedText", hasMarkedTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "unmarkText", unmarkTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "markedRange", markedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "insertText", insertTextCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "firstRectForCharacterRange", firstRectForCharacterRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { "selectedRange", selectedRangeCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
- { 0, 0, 0 }
- };
-
- return staticFunctions;
-}
diff --git a/Tools/DumpRenderTree/win/TextInputController.h b/Tools/DumpRenderTree/win/TextInputController.h
deleted file mode 100755
index 1c28e60ce..000000000
--- a/Tools/DumpRenderTree/win/TextInputController.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 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.
- * 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 TextInputController_h
-#define TextInputController_h
-
-#include <JavaScriptCore/JSContextRef.h>
-#include <JavaScriptCore/JSObjectRef.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSValueRef.h>
-#include <vector>
-#include <wtf/PassRefPtr.h>
-
-using namespace std;
-
-class TextInputController {
-public:
- void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
-
- void setMarkedText(JSStringRef text, unsigned int from, unsigned int length);
- bool hasMarkedText();
- void unmarkText();
- vector<int> markedRange();
- void insertText(JSStringRef text);
- vector<int> firstRectForCharacterRange(unsigned int start, unsigned int length);
- vector<int> selectedRange();
-
-private:
- static JSClassRef getJSClass();
- static JSStaticValue* staticValues();
- static JSStaticFunction* staticFunctions();
-};
-
-#endif // TextInputController_h
diff --git a/Tools/DumpRenderTree/win/TextInputControllerWin.cpp b/Tools/DumpRenderTree/win/TextInputControllerWin.cpp
deleted file mode 100755
index f4674e5dd..000000000
--- a/Tools/DumpRenderTree/win/TextInputControllerWin.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009, 2010 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 "TextInputController.h"
-
-#include "DumpRenderTree.h"
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <comutil.h>
-#include <string>
-
-using namespace std;
-
-void TextInputController::setMarkedText(JSStringRef text, unsigned int from, unsigned int length)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- _bstr_t bstr(wstring(JSStringGetCharactersPtr(text), JSStringGetLength(text)).data());
-
- viewPrivate->setCompositionForTesting(bstr, from, length);
-}
-
-bool TextInputController::hasMarkedText()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return false;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return false;
-
- BOOL result;
- viewPrivate->hasCompositionForTesting(&result);
- return result;
-}
-
-void TextInputController::unmarkText()
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- _bstr_t empty;
- viewPrivate->confirmCompositionForTesting(empty);
-}
-
-vector<int> TextInputController::markedRange()
-{
- // empty vector
- vector<int> result;
-
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return result;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return result;
-
- unsigned int startPos;
- unsigned int length;
- if (SUCCEEDED(viewPrivate->compositionRangeForTesting(&startPos, &length))) {
- result.resize(2);
- result[0] = startPos;
- result[1] = length;
- }
-
- return result;
-}
-
-void TextInputController::insertText(JSStringRef text)
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return;
-
- _bstr_t bstr(wstring(JSStringGetCharactersPtr(text), JSStringGetLength(text)).data());
-
- viewPrivate->confirmCompositionForTesting(bstr);
-}
-
-vector<int> TextInputController::firstRectForCharacterRange(unsigned int start, unsigned int length)
-{
- // empty vector
- vector<int> result;
-
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return result;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return result;
-
- RECT resultRECT;
- if SUCCEEDED(viewPrivate->firstRectForCharacterRangeForTesting(start, length, &resultRECT)) {
- result.resize(4);
- result[0] = resultRECT.left;
- result[1] = resultRECT.top;
- result[2] = resultRECT.right - resultRECT.left;
- result[3] = resultRECT.bottom - resultRECT.top;
- }
-
- return result;
-}
-
-vector<int> TextInputController::selectedRange()
-{
- // empty vector
- vector<int> result;
-
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return result;
-
- COMPtr<IWebViewPrivate> viewPrivate;
- if (FAILED(webView->QueryInterface(&viewPrivate)))
- return result;
-
- unsigned int startPos;
- unsigned int length;
- if (SUCCEEDED(viewPrivate->selectedRangeForTesting(&startPos, &length))) {
- result.resize(2);
- result[0] = startPos;
- result[1] = length;
- }
-
- return result;
-}
diff --git a/Tools/DumpRenderTree/win/UIDelegate.cpp b/Tools/DumpRenderTree/win/UIDelegate.cpp
deleted file mode 100644
index c7574883a..000000000
--- a/Tools/DumpRenderTree/win/UIDelegate.cpp
+++ /dev/null
@@ -1,667 +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 "DRTDesktopNotificationPresenter.h"
-#include "TestRunner.h"
-#include <WebCore/COMPtr.h>
-#include <wtf/Assertions.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/Platform.h>
-#include <wtf/Vector.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(adoptPtr(new DRTUndoStack))
- , m_undoStack(adoptPtr(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(adoptPtr(new DRTUndoManager))
- , m_desktopNotifications(new DRTDesktopNotificationPresenter)
-{
- m_frame.bottom = 0;
- m_frame.top = 0;
- m_frame.left = 0;
- m_frame.right = 0;
-}
-
-void UIDelegate::resetUndoManager()
-{
- m_undoManager = adoptPtr(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_IWebUIDelegate2))
- *ppvObject = static_cast<IWebUIDelegate2*>(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::printFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::ftpDirectoryTemplatePath(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BSTR *path)
-{
- if (!path)
- return E_POINTER;
- *path = 0;
- return E_NOTIMPL;
-}
-
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewHeaderHeight(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ float *result)
-{
- if (!result)
- return E_POINTER;
- *result = 0;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewFooterHeight(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ float *result)
-{
- if (!result)
- return E_POINTER;
- *result = 0;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::drawHeaderInRect(
- /* [in] */ IWebView *webView,
- /* [in] */ RECT *rect,
- /* [in] */ OLE_HANDLE drawingContext)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::drawFooterInRect(
- /* [in] */ IWebView *webView,
- /* [in] */ RECT *rect,
- /* [in] */ OLE_HANDLE drawingContext,
- /* [in] */ UINT pageIndex,
- /* [in] */ UINT pageCount)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewPrintingMarginRect(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ RECT *rect)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::canRunModal(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BOOL *canRunBoolean)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::createModalDialog(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebURLRequest *request,
- /* [retval][out] */ IWebView **newWebView)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runModal(
- /* [in] */ IWebView *webView)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::isMenuBarVisible(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BOOL *visible)
-{
- if (!visible)
- return E_POINTER;
- *visible = false;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::setMenuBarVisible(
- /* [in] */ IWebView *webView,
- /* [in] */ BOOL visible)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::runDatabaseSizeLimitPrompt(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR displayName,
- /* [in] */ IWebFrame *initiatedByFrame,
- /* [retval][out] */ BOOL *allowed)
-{
- if (!allowed)
- return E_POINTER;
- *allowed = false;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::paintCustomScrollbar(
- /* [in] */ IWebView *webView,
- /* [in] */ HDC hDC,
- /* [in] */ RECT rect,
- /* [in] */ WebScrollBarControlSize size,
- /* [in] */ WebScrollbarControlState state,
- /* [in] */ WebScrollbarControlPart pressedPart,
- /* [in] */ BOOL vertical,
- /* [in] */ float value,
- /* [in] */ float proportion,
- /* [in] */ WebScrollbarControlPartMask parts)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::paintCustomScrollCorner(
- /* [in] */ IWebView *webView,
- /* [in] */ HDC hDC,
- /* [in] */ RECT rect)
-{
- return E_NOTIMPL;
-}
-
-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"");
- fflush(stdout);
-
- 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;
- printf("CONFIRM NAVIGATION: %S\n", message ? message : L"");
- *result = !gTestRunner->shouldStayOnPageAfterHandlingBeforeUnload();
- return S_OK;
-}
-
-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) + lastPathComponent(newMessage.substr(fileProtocol));
- }
-
- printf("CONSOLE MESSAGE: ");
- if (lineNumber)
- printf("line %d: ", lineNumber);
- printf("%s\n", toUTF8(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);
- HRESULT oleDragAndDropReturnValue = DRAGDROP_S_CANCEL;
- replaySavedEvents(&oleDragAndDropReturnValue);
- if (draggingInfo) {
- *performedEffect = draggingInfo->performedDropEffect();
- delete draggingInfo;
- draggingInfo = 0;
- }
- return oleDragAndDropReturnValue;
-}
-
-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 (!::gTestRunner->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)
-{
- BSTR protocol;
- BSTR host;
- unsigned short port;
-
- origin->protocol(&protocol);
- origin->host(&host);
- origin->port(&port);
-
- if (!done && gTestRunner->dumpDatabaseCallbacks())
- printf("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:{%S, %S, %i} database:%S\n", protocol, host, port, databaseIdentifier);
-
- SysFreeString(protocol);
- SysFreeString(host);
-
- static const unsigned long long defaultQuota = 5 * 1024 * 1024;
- origin->setQuota(defaultQuota);
-
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::embeddedViewWithArguments(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IPropertyBag *arguments,
- /* [retval][out] */ IWebEmbeddedView **view)
-{
- if (!view)
- return E_POINTER;
- *view = 0;
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewClosing(
- /* [in] */ IWebView *sender)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewSetCursor(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE cursor)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::webViewDidInvalidate(
- /* [in] */ IWebView *sender)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::setStatusText(IWebView*, BSTR text)
-{
- if (gTestRunner->dumpStatusCallbacks())
- printf("UI DELEGATE STATUS CALLBACK: setStatusText:%s\n", text ? toUTF8(text).c_str() : "");
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::desktopNotificationsDelegate(IWebDesktopNotificationsDelegate** result)
-{
- m_desktopNotifications.copyRefTo(result);
- return S_OK;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener)
-{
- return E_NOTIMPL;
-}
-
-HRESULT STDMETHODCALLTYPE UIDelegate::didPressMissingPluginButton(IDOMElement* element)
-{
- printf("MISSING PLUGIN BUTTON PRESSED\n");
- return S_OK;
-}
-
diff --git a/Tools/DumpRenderTree/win/UIDelegate.h b/Tools/DumpRenderTree/win/UIDelegate.h
deleted file mode 100644
index 0c9fdaf63..000000000
--- a/Tools/DumpRenderTree/win/UIDelegate.h
+++ /dev/null
@@ -1,415 +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 <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <wtf/OwnPtr.h>
-#include <windef.h>
-
-class DRTUndoManager;
-class DRTDesktopNotificationPresenter;
-
-class UIDelegate : public IWebUIDelegate2, 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,
- /* [retval][out] */ IDataObject **newPasteboard) { 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);
-
- virtual HRESULT STDMETHODCALLTYPE printFrame(
- /* [in] */ IWebView *webView,
- /* [in] */ IWebFrame *frame);
-
- virtual HRESULT STDMETHODCALLTYPE ftpDirectoryTemplatePath(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BSTR *path);
-
- virtual HRESULT STDMETHODCALLTYPE webViewHeaderHeight(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ float *result);
-
- virtual HRESULT STDMETHODCALLTYPE webViewFooterHeight(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ float *result);
-
- virtual HRESULT STDMETHODCALLTYPE drawHeaderInRect(
- /* [in] */ IWebView *webView,
- /* [in] */ RECT *rect,
- /* [in] */ OLE_HANDLE drawingContext);
-
- virtual HRESULT STDMETHODCALLTYPE drawFooterInRect(
- /* [in] */ IWebView *webView,
- /* [in] */ RECT *rect,
- /* [in] */ OLE_HANDLE drawingContext,
- /* [in] */ UINT pageIndex,
- /* [in] */ UINT pageCount);
-
- virtual HRESULT STDMETHODCALLTYPE webViewPrintingMarginRect(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ RECT *rect);
-
- virtual HRESULT STDMETHODCALLTYPE canRunModal(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BOOL *canRunBoolean);
-
- virtual HRESULT STDMETHODCALLTYPE createModalDialog(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebURLRequest *request,
- /* [retval][out] */ IWebView **newWebView);
-
- virtual HRESULT STDMETHODCALLTYPE runModal(
- /* [in] */ IWebView *webView);
-
- virtual HRESULT STDMETHODCALLTYPE isMenuBarVisible(
- /* [in] */ IWebView *webView,
- /* [retval][out] */ BOOL *visible);
-
- virtual HRESULT STDMETHODCALLTYPE setMenuBarVisible(
- /* [in] */ IWebView *webView,
- /* [in] */ BOOL visible);
-
- virtual HRESULT STDMETHODCALLTYPE runDatabaseSizeLimitPrompt(
- /* [in] */ IWebView *webView,
- /* [in] */ BSTR displayName,
- /* [in] */ IWebFrame *initiatedByFrame,
- /* [retval][out] */ BOOL *allowed);
-
- virtual HRESULT STDMETHODCALLTYPE paintCustomScrollbar(
- /* [in] */ IWebView *webView,
- /* [in] */ HDC hDC,
- /* [in] */ RECT rect,
- /* [in] */ WebScrollBarControlSize size,
- /* [in] */ WebScrollbarControlState state,
- /* [in] */ WebScrollbarControlPart pressedPart,
- /* [in] */ BOOL vertical,
- /* [in] */ float value,
- /* [in] */ float proportion,
- /* [in] */ WebScrollbarControlPartMask parts);
-
- virtual HRESULT STDMETHODCALLTYPE paintCustomScrollCorner(
- /* [in] */ IWebView *webView,
- /* [in] */ HDC hDC,
- /* [in] */ RECT rect);
-
- virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest(IWebView* sender, IWebURLRequest* request, IPropertyBag* windowFeatures, IWebView** newWebView);
-
- virtual HRESULT STDMETHODCALLTYPE drawBackground(IWebView* sender, OLE_HANDLE hdc, const RECT* dirtyRect);
-
- virtual HRESULT STDMETHODCALLTYPE decidePolicyForGeolocationRequest(IWebView* sender, IWebFrame* frame, IWebSecurityOrigin* origin, IWebGeolocationPolicyListener* listener);
-
- virtual HRESULT STDMETHODCALLTYPE didPressMissingPluginButton(IDOMElement*);
-
-protected:
- // IWebUIDelegatePrivate
-
- virtual HRESULT STDMETHODCALLTYPE unused1() { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE unused2() { return E_NOTIMPL; }
-
- virtual HRESULT STDMETHODCALLTYPE unused3() { 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);
-
- virtual HRESULT STDMETHODCALLTYPE webViewPainted(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE exceededDatabaseQuota(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IWebSecurityOrigin *origin,
- /* [in] */ BSTR databaseIdentifier);
-
- virtual HRESULT STDMETHODCALLTYPE embeddedViewWithArguments(
- /* [in] */ IWebView *sender,
- /* [in] */ IWebFrame *frame,
- /* [in] */ IPropertyBag *arguments,
- /* [retval][out] */ IWebEmbeddedView **view);
-
- virtual HRESULT STDMETHODCALLTYPE webViewClosing(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE webViewSetCursor(
- /* [in] */ IWebView *sender,
- /* [in] */ OLE_HANDLE cursor);
-
- virtual HRESULT STDMETHODCALLTYPE webViewDidInvalidate(
- /* [in] */ IWebView *sender);
-
- virtual HRESULT STDMETHODCALLTYPE desktopNotificationsDelegate(
- /* [out] */ IWebDesktopNotificationsDelegate** result);
-
- ULONG m_refCount;
-
-private:
- RECT m_frame;
- OwnPtr<DRTUndoManager> m_undoManager;
-
- COMPtr<IWebDesktopNotificationsDelegate> m_desktopNotifications;
-};
-
-#endif
diff --git a/Tools/DumpRenderTree/win/WorkQueueItemWin.cpp b/Tools/DumpRenderTree/win/WorkQueueItemWin.cpp
deleted file mode 100644
index 3225a6520..000000000
--- a/Tools/DumpRenderTree/win/WorkQueueItemWin.cpp
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2007, 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.
- * 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 <WebKit/WebKitCOMAPI.h>
-#include <JavaScriptCore/JSStringRef.h>
-#include <JavaScriptCore/JSStringRefCF.h>
-#include <wtf/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();
-}
-
-bool LoadItem::invoke() const
-{
- wstring targetString = jsStringRefToWString(m_target.get());
-
- 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 false;
- }
-
- COMPtr<IWebURLRequest> request;
- if (FAILED(WebKitCreateInstance(CLSID_WebURLRequest, 0, IID_IWebURLRequest, (void**)&request)))
- return false;
-
- wstring urlString = jsStringRefToWString(m_url.get());
- BSTR urlBSTR = SysAllocString(urlString.c_str());
- bool failed = FAILED(request->initWithURL(urlBSTR, WebURLRequestUseProtocolCachePolicy, 60));
- SysFreeString(urlBSTR);
- if (failed)
- return false;
-
- targetFrame->loadRequest(request.get());
- return true;
-}
-
-bool LoadHTMLStringItem::invoke() const
-{
- wstring content = jsStringRefToWString(m_content.get());
- wstring baseURL = jsStringRefToWString(m_baseURL.get());
-
- BSTR contentBSTR = SysAllocString(content.c_str());
- BSTR baseURLBSTR = SysAllocString(baseURL.c_str());
-
- if (m_unreachableURL) {
- wstring unreachableURL = jsStringRefToWString(m_unreachableURL.get());
- BSTR unreachableURLBSTR = SysAllocString(unreachableURL.c_str());
- frame->loadAlternateHTMLString(contentBSTR, baseURLBSTR, unreachableURLBSTR);
- SysFreeString(contentBSTR);
- SysFreeString(baseURLBSTR);
- SysFreeString(unreachableURLBSTR);
- return true;
- }
-
- frame->loadHTMLString(contentBSTR, baseURLBSTR);
-
- SysFreeString(contentBSTR);
- SysFreeString(baseURLBSTR);
-
- return true;
-}
-
-bool ReloadItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return false;
-
- COMPtr<IWebIBActions> webActions;
- if (FAILED(webView->QueryInterface(&webActions)))
- return false;
-
- webActions->reload(0);
- return true;
-}
-
-bool ScriptItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return false;
-
- wstring scriptString = jsStringRefToWString(m_script.get());
-
- BSTR result;
- BSTR scriptBSTR = SysAllocString(scriptString.c_str());
- webView->stringByEvaluatingJavaScriptFromString(scriptBSTR, &result);
- SysFreeString(result);
- SysFreeString(scriptBSTR);
-
- return true;
-}
-
-bool BackForwardItem::invoke() const
-{
- COMPtr<IWebView> webView;
- if (FAILED(frame->webView(&webView)))
- return false;
-
- BOOL result;
- if (m_howFar == 1) {
- webView->goForward(&result);
- return true;
- }
-
- if (m_howFar == -1) {
- webView->goBack(&result);
- return true;
- }
-
- COMPtr<IWebBackForwardList> bfList;
- if (FAILED(webView->backForwardList(&bfList)))
- return false;
-
- COMPtr<IWebHistoryItem> item;
- if (FAILED(bfList->itemAtIndex(m_howFar, &item)))
- return false;
-
- webView->goToBackForwardItem(item.get(), &result);
- return true;
-}
diff --git a/Tools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh b/Tools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh
deleted file mode 100755
index 6c9e7450f..000000000
--- a/Tools/EWSTools/GoogleComputeEngine/build-chromium-ews.sh
+++ /dev/null
@@ -1,60 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]];then
-echo "Usage: build-cr-linux-ews.sh BOT_NUMBER"
-exit 1
-fi
-
-CWD="$(pwd)"
-cd "$(dirname "$0")"
-
-QUEUE_TYPE=chromium-ews
-BOT_ID=gce-cr-linux-$1
-BUGZILLA_USERNAME=webkit.review.bot@gmail.com
-read -s -p "Bugzilla Password: " BUGZILLA_PASSWORD && echo
-
-PROJECT=google.com:webkit
-ZONE=$(bash findzone.sh $PROJECT)
-IMAGE=projects/google/global/images/gcel-10-04-v20130104
-MACHINE_TYPE=n1-standard-4-d
-
-gcutil --project=$PROJECT addinstance $BOT_ID --machine_type=$MACHINE_TYPE --image=$IMAGE --zone=$ZONE --wait_until_running
-
-echo "Sleeping for 30s to let the server spin up ssh..."
-sleep 30
-
-gcutil --project=$PROJECT ssh $BOT_ID "
- sudo apt-get install subversion -y &&
- svn checkout http://svn.webkit.org/repository/webkit/trunk/Tools/EWSTools tools &&
- cd tools &&
- bash build-vm.sh &&
- bash build-repo.sh $QUEUE_TYPE $BUGZILLA_USERNAME $BUGZILLA_PASSWORD &&
- bash build-boot-cmd.sh \"screen -t kr ./start-queue.sh $QUEUE_TYPE $BOT_ID 10\" &&
- bash boot.sh
-"
-
-cd "$CWD"
diff --git a/Tools/EWSTools/GoogleComputeEngine/build-commit-queue.sh b/Tools/EWSTools/GoogleComputeEngine/build-commit-queue.sh
deleted file mode 100755
index 4ac73c8be..000000000
--- a/Tools/EWSTools/GoogleComputeEngine/build-commit-queue.sh
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]];then
-echo "Usage: build-commit-queue.sh BOT_NUMBER"
-exit 1
-fi
-
-CWD="$(pwd)"
-cd "$(dirname "$0")"
-
-QUEUE_TYPE=commit-queue
-BOT_ID=gce-cq-$1
-BUGZILLA_USERNAME=webkit.review.bot@gmail.com
-read -s -p "Bugzilla Password: " BUGZILLA_PASSWORD && echo
-SVN_USERNAME=commit-queue@webkit.org
-read -s -p "Subversion Password: " SVN_PASSWORD && echo
-
-PROJECT=google.com:webkit
-ZONE=$(bash findzone.sh $PROJECT)
-IMAGE=projects/google/global/images/gcel-10-04-v20130104
-MACHINE_TYPE=n1-standard-4-d
-
-gcutil --project=$PROJECT addinstance $BOT_ID --machine_type=$MACHINE_TYPE --image=$IMAGE --zone=$ZONE --wait_until_running
-
-echo "Sleeping for 30s to let the server spin up ssh..."
-sleep 30
-
-gcutil --project=$PROJECT ssh $BOT_ID "
- sudo apt-get install subversion -y &&
- svn checkout http://svn.webkit.org/repository/webkit/trunk/Tools/EWSTools tools &&
- cd tools &&
- bash configure-svn-config.sh &&
- bash configure-svn-auth.sh $SVN_USERNAME $SVN_PASSWORD &&
- bash build-vm.sh &&
- bash build-repo.sh $QUEUE_TYPE $BUGZILLA_USERNAME $BUGZILLA_PASSWORD &&
- bash build-boot-cmd.sh \"screen -t kr ./start-queue.sh $QUEUE_TYPE $BOT_ID 10\" &&
- bash boot.sh
-"
-
-cd "$CWD"
diff --git a/Tools/EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh b/Tools/EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh
deleted file mode 100755
index 1cf4e6902..000000000
--- a/Tools/EWSTools/GoogleComputeEngine/build-cr-linux-debug-ews.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]];then
-echo "Usage: build-cr-linux-debug-ews.sh BOT_NUMBER"
-exit 1
-fi
-
-CWD="$(pwd)"
-cd "$(dirname "$0")"
-
-QUEUE_TYPE=cr-linux-debug-ews
-BOT_ID=gce-cr-linux-debug-$1
-BUGZILLA_USERNAME=webkit.review.bot@gmail.com
-read -s -p "Bugzilla Password: " BUGZILLA_PASSWORD && echo
-
-PROJECT=google.com:webkit
-ZONE=$(bash findzone.sh $PROJECT)
-IMAGE=projects/google/global/images/gcel-10-04-v20130104
-MACHINE_TYPE=n1-standard-4-d
-
-gcutil --project=$PROJECT addinstance $BOT_ID --machine_type=$MACHINE_TYPE --image=$IMAGE --zone=$ZONE --wait_until_running
-
-echo "Sleeping for 30s to let the server spin up ssh..."
-sleep 30
-
-gcutil --project=$PROJECT ssh $BOT_ID "
- sudo apt-get install subversion -y &&
- svn checkout http://svn.webkit.org/repository/webkit/trunk/Tools/EWSTools tools &&
- cd tools &&
- bash build-vm.sh &&
- bash build-repo.sh $QUEUE_TYPE $BUGZILLA_USERNAME $BUGZILLA_PASSWORD &&
- bash build-boot-cmd.sh \"\\
-screen -t kr ./start-queue.sh -r \\\"configure-clang-linux.sh $QUEUE_TYPE\\\" $QUEUE_TYPE $BOT_ID 10\" &&
- bash boot.sh
-"
-
-cd "$CWD"
diff --git a/Tools/EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh b/Tools/EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh
deleted file mode 100755
index 6297d80cf..000000000
--- a/Tools/EWSTools/GoogleComputeEngine/build-feeder-style-sheriffbot.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]];then
-echo "Usage: build-feeder-style-sheriffbot.sh BOT_NUMBER"
-exit 1
-fi
-
-CWD="$(pwd)"
-cd "$(dirname "$0")"
-
-BOT_ID=gce-feeder-$1
-BUGZILLA_USERNAME=webkit.review.bot@gmail.com
-read -s -p "Bugzilla Password: " BUGZILLA_PASSWORD && echo
-read -s -p "sheriffbot IRC Password: " IRC_PASSWORD && echo
-
-PROJECT=google.com:webkit
-ZONE=$(bash findzone.sh $PROJECT)
-IMAGE=projects/google/global/images/gcel-10-04-v20130104
-MACHINE_TYPE=n1-standard-4-d
-
-gcutil --project=$PROJECT addinstance $BOT_ID --machine_type=$MACHINE_TYPE --image=$IMAGE --zone=$ZONE --wait_until_running
-
-echo "Sleeping for 30s to let the server spin up ssh..."
-sleep 30
-
-gcutil --project=$PROJECT ssh $BOT_ID "
- sudo apt-get install subversion -y &&
- svn checkout http://svn.webkit.org/repository/webkit/trunk/Tools/EWSTools tools &&
- cd tools &&
- bash build-vm.sh &&
- bash build-repo.sh feeder-queue $BUGZILLA_USERNAME $BUGZILLA_PASSWORD &&
- cp -r /mnt/git/webkit-feeder-queue /mnt/git/webkit-style-queue &&
- cp -r /mnt/git/webkit-feeder-queue /mnt/git/webkit-sheriff-bot &&
- bash configure-svn-config.sh &&
- bash configure-git-svn.sh sheriff-bot &&
- bash configure-git-user.sh sheriff-bot \"Sheriff Bot\" $BUGZILLA_USERNAME &&
- bash build-boot-cmd.sh \"\\
-screen -t fq ./start-queue.sh feeder-queue $BOT_ID 10
-screen -t sq ./start-queue.sh style-queue $BOT_ID 10
-screen -t sb ./start-queue.sh -p \\\"--irc-password=$IRC_PASSWORD\\\" sheriff-bot $BOT_ID 180\" &&
- bash boot.sh
-"
-
-cd "$CWD"
diff --git a/Tools/EWSTools/GoogleComputeEngine/findzone.sh b/Tools/EWSTools/GoogleComputeEngine/findzone.sh
deleted file mode 100755
index ac2cee5fa..000000000
--- a/Tools/EWSTools/GoogleComputeEngine/findzone.sh
+++ /dev/null
@@ -1,5 +0,0 @@
-if [[ $# -ne 1 ]]; then
- echo "Usage: findzone.sh PROJECT"
-fi
-
-echo $(gcutil --project=$1 listzones | grep UP | awk '{print $2}' | sort | tail -1)
diff --git a/Tools/EWSTools/boot.sh b/Tools/EWSTools/boot.sh
deleted file mode 100755
index 787e61994..000000000
--- a/Tools/EWSTools/boot.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2010 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.
-
-CWD=$(pwd)
-
-cd ~/tools
-screen -d -m -c ./screen-config
-
-cd $CWD
diff --git a/Tools/EWSTools/build-boot-cmd.sh b/Tools/EWSTools/build-boot-cmd.sh
deleted file mode 100755
index b22c1fbb7..000000000
--- a/Tools/EWSTools/build-boot-cmd.sh
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-
-if [[ $# -ne 1 ]];then
-echo "Usage: build-boot-cmd.sh BOOT_COMMAND"
-exit 1
-fi
-
-echo "$1" > ~/tools/screen-config
diff --git a/Tools/EWSTools/build-repo.sh b/Tools/EWSTools/build-repo.sh
deleted file mode 100755
index 65b0d84e9..000000000
--- a/Tools/EWSTools/build-repo.sh
+++ /dev/null
@@ -1,61 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-
-if [[ $# -ne 3 ]];then
-echo "Usage: build-repo.sh QUEUE_TYPE BUGZILLA_USERNAME BUGZILLA_PASSWORD"
-exit 1
-fi
-
-CWD=$(pwd)
-
-cd /mnt/git
-
-echo "Cloning WebKit git repository, process takes ~30m."
-echo "Note: No status output will be shown via remote pipe."
-git clone git://git.webkit.org/WebKit.git webkit-$1
-cd webkit-$1
-
-cat >> .git/config <<EOF
-[bugzilla]
- username = $2
- password = $3
-EOF
-
-if [[ $1 == "commit-queue" ]];then
-cat >> .git/config <<EOF
-[svn-remote "svn"]
- url = http://svn.webkit.org/repository/webkit
- fetch = trunk:refs/remotes/origin/master
-[user]
- email = commit-queue@webkit.org
- name = Commit Queue
-EOF
-fi
-
-cd $CWD
diff --git a/Tools/EWSTools/build-vm.sh b/Tools/EWSTools/build-vm.sh
deleted file mode 100755
index 62daca007..000000000
--- a/Tools/EWSTools/build-vm.sh
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 0 ]];then
-echo "Usage: build-vm.sh"
-exit 1
-fi
-
-CWD=$(pwd)
-
-# Format the disk
-cat <<EOF | sudo fdisk /dev/sdb
-n
-p
-1
-8
-
-w
-EOF
-
-sudo mkfs.ext4 /dev/sdb1
-sudo mount /dev/sdb1 /mnt
-
-echo ttf-mscorefonts-installer msttcorefonts/accepted-mscorefonts-eula select true | sudo debconf-set-selections
-
-curl http://src.chromium.org/svn/trunk/src/build/install-build-deps.sh > install-build-deps.sh
-bash install-build-deps.sh --no-prompt
-sudo apt-get install xvfb screen git-svn zip -y
-
-# install-build-deps.sh will install flashplugin-installer, which causes some plug-in tests to crash.
-sudo apt-get remove flashplugin-installer -y
-
-cd /mnt
-sudo mkdir -p git
-sudo chown $USER git
-sudo chgrp $USER git
-
-sudo chmod 644 /etc/hosts
-
-cd $CWD
diff --git a/Tools/EWSTools/configure-clang-linux.sh b/Tools/EWSTools/configure-clang-linux.sh
deleted file mode 100755
index 049c206eb..000000000
--- a/Tools/EWSTools/configure-clang-linux.sh
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]];then
- echo "Usage: configure-clang-linux.sh QUEUE_TYPE"
- exit 1
-fi
-
-bash /mnt/git/$QUEUE_TYPE/Source/WebKit/chromium/tools/clang/scripts/update.sh
-export builddir_name=llvm
-export GYP_DEFINES='clang=1' \ No newline at end of file
diff --git a/Tools/EWSTools/configure-git-svn.sh b/Tools/EWSTools/configure-git-svn.sh
deleted file mode 100755
index 0416125ca..000000000
--- a/Tools/EWSTools/configure-git-svn.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 1 ]]; then
- echo "Usage: configure-git-svn.sh QUEUE_TYPE"
- exit 1
-fi
-
-QUEUE_TYPE=$1
-
-CWD="$(pwd)"
-cd /mnt/git/webkit-$QUEUE_TYPE
-
-# These commands come from the WebKit wiki: http://trac.webkit.org/wiki/UsingGitWithWebKit
-git svn init --prefix=origin/ -T trunk http://svn.webkit.org/repository/webkit
-git config --replace svn-remote.svn.fetch trunk:refs/remotes/origin/master
-git svn fetch --local
-
-cd "$CWD" \ No newline at end of file
diff --git a/Tools/EWSTools/configure-git-user.sh b/Tools/EWSTools/configure-git-user.sh
deleted file mode 100755
index 0c29360aa..000000000
--- a/Tools/EWSTools/configure-git-user.sh
+++ /dev/null
@@ -1,45 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-if [[ $# -ne 3 ]]; then
- echo "Usage: configure-git-user.sh QUEUE_TYPE NAME EMAIL"
- exit 1
-fi
-
-QUEUE_TYPE=$1
-NAME="$2"
-EMAIL=$3
-
-if [[ "$NAME" != *" "* ]]; then
- echo "NAME parameter must contain a space."
- exit 1
-fi
-
-cat >> /mnt/git/webkit-$QUEUE_TYPE/.git/config <<EOF
-[user]
- name = $NAME
- email = $EMAIL
-EOF
diff --git a/Tools/EWSTools/configure-svn-auth.sh b/Tools/EWSTools/configure-svn-auth.sh
deleted file mode 100755
index 75fdc2c05..000000000
--- a/Tools/EWSTools/configure-svn-auth.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2012 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.
-
-if [[ $# -ne 2 ]];then
-echo "Usage: configure-svn-auth.sh SVN_USERNAME SVN_PASSWORD"
-exit 1
-fi
-
-cat >> ~/.subversion/auth/svn.simple/7e01475a87eb5db3b8b41e7fbf6415d9 <<EOF
-K 8
-passtype
-V 6
-simple
-K 8
-password
-V ${#2}
-$2
-K 15
-svn:realmstring
-V 39
-<http://svn.webkit.org:80> Mac OS Forge
-K 8
-username
-V ${#1}
-$1
-END
-EOF
-
-# This maches the ACL that subversion uses by default.
-chmod 644 ~/.subversion/auth/svn.simple/7e01475a87eb5db3b8b41e7fbf6415d9
diff --git a/Tools/EWSTools/configure-svn-config.sh b/Tools/EWSTools/configure-svn-config.sh
deleted file mode 100755
index 6054e4732..000000000
--- a/Tools/EWSTools/configure-svn-config.sh
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-svn export http://svn.webkit.org/repository/webkit/trunk/Tools/svn-config ~/.subversion/config
diff --git a/Tools/EWSTools/screen-config b/Tools/EWSTools/screen-config
deleted file mode 100644
index 5a00fee96..000000000
--- a/Tools/EWSTools/screen-config
+++ /dev/null
@@ -1,4 +0,0 @@
-screen -t style ./start-queue.sh style-queue 10
-screen -t qt ./start-queue.sh qt-ews 10
-screen -t kr ./start-queue.sh chromium-ews 10
-screen -t gtk ./start-queue.sh gtk-ews 10
diff --git a/Tools/EWSTools/setup-commit-queue.sh b/Tools/EWSTools/setup-commit-queue.sh
deleted file mode 100755
index dd17862c9..000000000
--- a/Tools/EWSTools/setup-commit-queue.sh
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 Google Inc. All rights reserved.
-# Copyright (C) 2013 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:
-#
-# * 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.
-#
-# 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.
-
-CWD="$(pwd)"
-cd "$(dirname "$0")"
-
-QUEUE_TYPE=commit-queue
-BUGZILLA_USERNAME=commit-queue@webkit.org
-read -s -p "Bugzilla Password: " BUGZILLA_PASSWORD && echo
-SVN_USERNAME=commit-queue@webkit.org
-read -s -p "Subversion Password: " SVN_PASSWORD && echo
-
-svn checkout http://svn.webkit.org/repository/webkit/trunk/Tools/EWSTools tools
-bash tools/configure-svn-config.sh
-bash tools/configure-svn-auth.sh $SVN_USERNAME $SVN_PASSWORD
-
-echo "Cloning WebKit git repository, process takes ~30m."
-echo "Note: No status output will be shown via remote pipe."
-git clone git://git.webkit.org/WebKit.git WebKit
-cd WebKit
-
-cat >> .git/config <<EOF
-[bugzilla]
- username = $BUGZILLA_USERNAME
- password = $BUGZILLA_PASSWORD
-[svn-remote "svn"]
- url = http://svn.webkit.org/repository/webkit
- fetch = trunk:refs/remotes/origin/master
-[user]
- email = commit-queue@webkit.org
- name = Commit Queue
-EOF
diff --git a/Tools/EWSTools/start-queue-mac.sh b/Tools/EWSTools/start-queue-mac.sh
deleted file mode 100755
index 5fc05a317..000000000
--- a/Tools/EWSTools/start-queue-mac.sh
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2012 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.
-
-if [[ $# -lt 3 ]]; then
- echo "Usage: start-queue-loop.sh QUEUE_NAME BOT_ID RESET_AFTER_ITERATION [QUEUE_PARAMS]"
- exit 1
-fi
-
-QUEUE_NAME=$1
-BOT_ID=$2
-RESET_AFTER_ITERATION=$3
-shift 3
-QUEUE_PARAMS="$@"
-
-while :
-do
- # Delete log files older than 14 days, move aside the main mac-ews.log file to prevent it from growing extra large.
- cd /Volumes/Data/EWS/$QUEUE_NAME-logs
- find . -mtime +14 -delete
- rm $QUEUE_NAME.old
- mv $QUEUE_NAME.log $QUEUE_NAME.old
- cd /Volumes/Data/EWS/Webkit
-
- # Delete WebKitBuild to force a clean build
- rm -rf /Volumes/Data/EWS/WebKit/WebKitBuild
-
- # This somewhat quirky sequence of steps seems to clear up all the broken
- # git situations we've gotten ourself into in the past.
- git clean -f # Remove any left-over layout test results, added files, etc.
- git rebase --abort # If we got killed during a git rebase, we need to clean up.
- git fetch origin # Avoid updating the working copy to a stale revision.
- git checkout origin/master -f
- git branch -D master
- git checkout origin/master -b master
-
- # Most queues auto-update as part of their normal operation, but updating
- # here makes sure that we get the latest version of the master process.
- ./Tools/Scripts/update-webkit
-
- # test-webkitpy has code to remove orphaned .pyc files, so we
- # run it before running webkit-patch to avoid stale .pyc files
- # preventing webkit-patch from launching.
- ./Tools/Scripts/test-webkitpy
-
- # We use --exit-after-iteration to pick up any changes to webkit-patch, including
- # changes to the contributors.json file.
- ./Tools/Scripts/webkit-patch $QUEUE_NAME --bot-id=$BOT_ID --no-confirm --exit-after-iteration $RESET_AFTER_ITERATION $QUEUE_PARAMS
-done
diff --git a/Tools/EWSTools/start-queue-win.sh b/Tools/EWSTools/start-queue-win.sh
deleted file mode 100755
index bd08cd117..000000000
--- a/Tools/EWSTools/start-queue-win.sh
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/bin/sh
-export WEBKIT_BUGZILLA_USERNAME=$1
-export WEBKIT_BUGZILLA_PASSWORD=$2
-export BOT_ID=$3
-
-function error_handler()
-{
- start_ews
-}
-
-function start_ews()
-{
- trap 'error_handler ${LINENO} $?' ERR
-
- while :
- do
- date
- echo "TASK: cleaning up old log files."
- cd ~/win-ews-logs
- rm -rf win-ews.old
- mv win-ews.log win-ews.old
- find ~/win-ews-logs -mtime +7 -exec rm -f {} \;
- echo "TASK: Starting up"
- cd ~/WebKit
- echo "TASK: Cleaning WebKitBuild"
- rm -rf WebKitBuild
- date
- echo "TASK: Cleaning up"
- svn cleanup
- date
- echo "TASK: svn revert -R *"
- svn revert -R *
- date
- echo "TASK: svn status"
- svn status | grep "?" | awk '{print $2}' | xargs rm -rf
- date
- echo "TASK: webkit-patch clean"
- ~/WebKit/Tools/Scripts/webkit-patch clean
- date
- echo "TASK: svn up --non-interactive"
- svn up --non-interactive
- date
- echo "TASK: kill orphaned tasks"
- taskkill.exe /f /im cl.exe
- echo "TASK: webkit-patch win-ews"
- ~/WebKit/Tools/Scripts/webkit-patch win-ews --bot-id=$BOT_ID --no-confirm --exit-after-iteration 10
- echo "TASK: kill old processes"
- ~/WebKit/Tools/BuildSlaveSupport/kill-old-processes
- done
-}
-
-start_ews \ No newline at end of file
diff --git a/Tools/EWSTools/start-queue.sh b/Tools/EWSTools/start-queue.sh
deleted file mode 100755
index c1d544de1..000000000
--- a/Tools/EWSTools/start-queue.sh
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/bin/sh
-# Copyright (c) 2013 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.
-#
-# 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.
-
-USAGE="Usage: start-queue-loop.sh [OPTIONS] QUEUE_NAME BOT_ID RESET_AFTER_ITERATION
- -r RESET_SCRIPT A bash script to be run every cycle just before the queue starts up again.
- -p QUEUE_PARAMS Additional parameters to be given to the queue's execution command."
-
-while getopts "r:p:" FLAG
-do
- case $FLAG in
- r) RESET_SCRIPT=$OPTARG;;
- p) QUEUE_PARAMS=$OPTARG;;
- esac
-done
-
-shift $((OPTIND-1))
-
-if [[ "$#" -ne 3 ]]; then
- echo "$USAGE"
- exit 1
-fi
-
-QUEUE_NAME=$1
-BOT_ID=$2
-RESET_AFTER_ITERATION=$3
-
-cd /mnt/git/webkit-$QUEUE_NAME
-while :
-do
- # This clears any temporary file leaks after running tests.
- # Not the nicest solution but it will keep the queues running instead of
- # filling up all remaining disk space.
- # NOTE: This will clear any Chromium browser temporary files running on the
- # machine as well. Not advised to run this while using Chrome.
- find /tmp -name ".org.chromium.Chromium.*" | xargs rm -rf
-
- # This somewhat quirky sequence of steps seems to clear up all the broken
- # git situations we've gotten ourself into in the past.
- git clean -f -d # Remove any left-over layout test results, added files, etc.
- git rebase --abort # If we got killed during a git rebase, we need to clean up.
- git fetch origin # Avoid updating the working copy to a stale revision.
- git checkout origin/master -f
- git branch -D master
- git checkout origin/master -b master
-
- # Most queues auto-update as part of their normal operation, but updating
- # here makes sure that we get the latest version of the master process.
- ./Tools/Scripts/update-webkit
-
- # test-webkitpy has code to remove orphaned .pyc files, so we
- # run it before running webkit-patch to avoid stale .pyc files
- # preventing webkit-patch from launching.
- ./Tools/Scripts/test-webkitpy
-
- # Run the given reset script.
- if [[ -n "$RESET_SCRIPT" ]]; then
- bash "$RESET_SCRIPT"
- fi
-
- # We use --exit-after-iteration to pick up any changes to webkit-patch, including
- # changes to the contributors.json file.
- ./Tools/Scripts/webkit-patch $QUEUE_NAME --bot-id=$BOT_ID --no-confirm --exit-after-iteration $RESET_AFTER_ITERATION $QUEUE_PARAMS
-done
diff --git a/Tools/EWSTools/ubuntu-ews-packages b/Tools/EWSTools/ubuntu-ews-packages
deleted file mode 100644
index a7917a069..000000000
--- a/Tools/EWSTools/ubuntu-ews-packages
+++ /dev/null
@@ -1,61 +0,0 @@
-subversion
-git-core
-git-svn
-binutils-gold
-python-mechanize
-libqt4-dev
-gperf
-bison
-fakeroot
-flex
-g++
-g++-multilib
-gperf
-autoconf
-automake
-libapache2-mod-php5
-libasound2-dev
-libbz2-dev
-libicu-dev
-libphonon-dev
-libsqlite3-dev
-libcairo2-dev
-libdbus-glib-1-dev
-libgconf2-dev
-libgl1-mesa-dev
-libglu1-mesa-dev
-libglib2.0-dev
-libjpeg62-dev
-libnspr4-dev
-libnss3-dev
-libpam0g-dev
-libtool
-libgtk2.0-dev
-libpango1.0-dev
-libicu-dev
-libxslt-dev
-libxslt1-dev
-libxss-dev
-libsoup2.4-dev
-libsqlite3-dev
-mesa-common-dev
-patch
-perl
-pkg-config
-python
-libcupsys2-dev
-libgnome-keyring-dev
-libcurl4-gnutls-dev
-libcupsys2-dev
-gperf
-bison
-flex
-libjpeg62-dev
-libpng12-dev
-libxt-dev
-autotools-dev
-libgstreamer-plugins-base0.10-dev
-libenchant-dev
-libgail-dev
-gtk-doc-tools
-libgeoclue-dev
diff --git a/Tools/EWebLauncher/CMakeLists.txt b/Tools/EWebLauncher/CMakeLists.txt
deleted file mode 100644
index 51266adaf..000000000
--- a/Tools/EWebLauncher/CMakeLists.txt
+++ /dev/null
@@ -1,47 +0,0 @@
-set(EWebLauncher_SOURCES
- ${TOOLS_DIR}/EWebLauncher/url_bar.c
- ${TOOLS_DIR}/EWebLauncher/url_utils.c
- ${TOOLS_DIR}/EWebLauncher/main.c
-)
-
-set(EWebLauncher_LIBRARIES
- JavaScriptCore
- WebCore
- WebKit
- ${CAIRO_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${ECORE_EVAS_LIBRARIES}
- ${ECORE_FILE_LIBRARIES}
- ${ECORE_X_LIBRARIES}
- ${EDJE_LIBRARIES}
- ${EINA_LIBRARIES}
- ${EO_LIBRARIES}
- ${EVAS_LIBRARIES}
- ${LIBXML2_LIBRARIES}
- ${LIBXSLT_LIBRARIES} -lm
- ${SQLITE_LIBRARIES}
- ${GLIB_LIBRARIES}
- ${LIBSOUP_LIBRARIES}
-)
-
-set(EWebLauncher_INCLUDE_DIRECTORIES
- "${WEBKIT_DIR}/efl/ewk"
- ${CAIRO_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_FILE_INCLUDE_DIRS}
- ${ECORE_X_INCLUDE_DIRS}
- ${EDJE_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
- ${LIBSOUP_INCLUDE_DIRS}
-)
-
-include_directories(${EWebLauncher_INCLUDE_DIRECTORIES})
-add_executable(EWebLauncher ${EWebLauncher_SOURCES})
-target_link_libraries(EWebLauncher ${EWebLauncher_LIBRARIES})
-set_target_properties(EWebLauncher PROPERTIES FOLDER "Tools")
-
-add_dependencies(EWebLauncher ControlTheme)
diff --git a/Tools/EWebLauncher/ControlTheme/CMakeLists.txt b/Tools/EWebLauncher/ControlTheme/CMakeLists.txt
deleted file mode 100644
index 52ef72e32..000000000
--- a/Tools/EWebLauncher/ControlTheme/CMakeLists.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-set(ControlTheme_DIR "${TOOLS_DIR}/EWebLauncher/ControlTheme")
-
-add_custom_command(
- OUTPUT ${THEME_BINARY_DIR}/entry.edj
- COMMAND ${EDJE_CC_EXECUTABLE} -v ${ControlTheme_DIR}/entry.edc ${THEME_BINARY_DIR}/entry.edj
- DEPENDS
- ${ControlTheme_DIR}/entry.edc
- VERBATIM
-)
-
-add_custom_target(ControlTheme DEPENDS ${THEME_BINARY_DIR}/entry.edj)
diff --git a/Tools/EWebLauncher/ControlTheme/entry.edc b/Tools/EWebLauncher/ControlTheme/entry.edc
deleted file mode 100644
index 7a1a5f739..000000000
--- a/Tools/EWebLauncher/ControlTheme/entry.edc
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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.
- */
-
-collections {
- group {
- name: "control/entry/base/default";
- styles {
- style {
- name: "entry_textblock_style";
- base: "font=Roman font_size=14 color=#000000 wrap=mixed";
- }
- }
- parts {
- part {
- name: "url.text";
- type: TEXTBLOCK;
- mouse_events: 1;
- scale: 1;
- entry_mode: EDITABLE;
- multiline: 0;
- source: "control/entry/selection/default"; // selection under
- source4: "control/entry/cursor/default"; // cursor over
- description {
- state: "default" 0.0;
- fixed: 1 0;
- text {
- style: "entry_textblock_style";
- min: 0 1;
- }
- }
- }
- }
- programs {
- program {
- name: "focus";
- signal: "load";
- source: "";
- action: FOCUS_SET;
- target: "url.text";
- }
- }
- }
-
- group {
- name: "control/entry/cursor/default";
- parts {
- part {
- name: "clip";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- description {
- state: "default" 0.0;
- rel1.offset: -10 0;
- rel2.offset: 9 9;
- visible: 0;
- }
- description {
- state: "focused" 0.0;
- inherit: "default" 0.0;
- visible: 1;
- }
- }
- part {
- name: "cursor";
- type: RECT;
- mouse_events: 0;
- scale: 1;
- clip_to: "clip";
- description {
- state: "default" 0.0;
- min: 1 0;
- fixed: 1 0;
- align: 0.5 0.5;
- visible: 1;
- rel1 {
- relative: 0.0 0.0;
- offset: 0 2;
- }
- rel2 {
- relative: 0.0 1.0;
- offset: 0 -2;
- }
- color: 0 0 0 255; // cursor color
- }
- }
- }
- programs {
- program {
- name: "focused";
- signal: "entry,action,focus";
- source: "entry";
- action: STATE_SET "focused" 0.0;
- target: "clip";
- }
- program {
- name: "unfocused";
- signal: "entry,action,unfocus";
- source: "entry";
- action: STATE_SET "default" 0.0;
- target: "clip";
- }
- }
- }
-
- group {
- name: "control/entry/selection/default";
- parts {
- part {
- name: "bg";
- type: RECT;
- scale: 1;
- mouse_events: 0;
- description {
- state: "default" 0.0;
- color: 138 183 223 128;
- }
- }
- }
- }
-}
diff --git a/Tools/EWebLauncher/main.c b/Tools/EWebLauncher/main.c
deleted file mode 100644
index b9b5b5297..000000000
--- a/Tools/EWebLauncher/main.c
+++ /dev/null
@@ -1,1050 +0,0 @@
-/*
- * Copyright (C) 2008 INdT - Instituto Nokia de Tecnologia
- * Copyright (C) 2009, 2010 ProFUSION embedded systems
- * Copyright (C) 2009, 2010, 2011 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation
- *
- * 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 "EWebKit.h"
-
-#include "url_bar.h"
-#include "url_utils.h"
-#include <Ecore.h>
-#include <Ecore_Evas.h>
-#include <Ecore_File.h>
-#include <Ecore_Getopt.h>
-#include <Ecore_X.h>
-#include <Edje.h>
-#include <Evas.h>
-#include <ctype.h>
-#include <inttypes.h>
-#include <limits.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-
-#define DEFAULT_WIDTH 800
-#define DEFAULT_HEIGHT 600
-#define DEFAULT_ZOOM_INIT 1.0
-
-#define info(format, args...) \
- do { \
- if (verbose) \
- printf(format"\n", ##args); \
- } while (0)
-
-#define MIN_ZOOM_LEVEL 0
-#define DEFAULT_ZOOM_LEVEL 5
-#define MAX_ZOOM_LEVEL 13
-
-static int currentZoomLevel = DEFAULT_ZOOM_LEVEL;
-static float currentZoom = 1.0;
-
-// the zoom values are chosen to be like in Mozilla Firefox 3
-static int zoomLevels[] = {30, 50, 67, 80, 90,
- 100,
- 110, 120, 133, 150, 170, 200, 240, 300};
-
-static int verbose = 0;
-
-static Eina_List *windows = NULL;
-
-static char *themePath = NULL;
-
-static const char *backingStores[] = {
- "tiled",
- "single",
- NULL
-};
-
-typedef struct _Window_Properties {
- Eina_Bool toolbarsVisible:1;
- Eina_Bool statusbarVisible:1;
- Eina_Bool scrollbarsVisible:1;
- Eina_Bool menubarVisible:1;
-} Window_Properties;
-
-Window_Properties windowProperties = { /* Pretend we have them and they are initially visible */
- EINA_TRUE,
- EINA_TRUE,
- EINA_TRUE,
- EINA_TRUE
-};
-
-static const Ecore_Getopt options = {
- "EWebLauncher",
- "%prog [options] [url]",
- "0.0.1",
- "(C)2008 INdT (The Nokia Technology Institute)\n"
- "(C)2009, 2010 ProFUSION embedded systems\n"
- "(C)2009, 2010, 2011 Samsung Electronics\n"
- "(C)2012 Intel Corporation\n",
- "GPL",
- "Test Web Browser using the Enlightenment Foundation Libraries of WebKit",
- EINA_TRUE, {
- ECORE_GETOPT_STORE_STR
- ('e', "engine", "ecore-evas engine to use."),
- ECORE_GETOPT_CALLBACK_NOARGS
- ('E', "list-engines", "list ecore-evas engines.",
- ecore_getopt_callback_ecore_evas_list_engines, NULL),
- ECORE_GETOPT_CHOICE
- ('b', "backing-store", "choose backing store to use.", backingStores),
- ECORE_GETOPT_STORE_DOUBLE
- ('r', "device-pixel-ratio", "Ratio between the CSS units and device pixels."),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('c', "encoding-detector", "enable/disable encoding detector", 0),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('f', "flattening", "frame flattening.", 0),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('F', "fullscreen", "fullscreen mode.", 0),
- ECORE_GETOPT_CALLBACK_ARGS
- ('g', "geometry", "geometry to use in x:y:w:h form.", "X:Y:W:H",
- ecore_getopt_callback_geometry_parse, NULL),
- ECORE_GETOPT_STORE_STR
- ('t', "theme", "path to read the theme file from."),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('T', "tiled-backing-store", "enable/disable WebCore's tiled backingstore(ewk_view_single only)", 0),
- ECORE_GETOPT_STORE_STR
- ('U', "user-agent", "custom user agent string to use."),
- ECORE_GETOPT_COUNT
- ('v', "verbose", "be more verbose."),
- ECORE_GETOPT_VERSION
- ('V', "version"),
- ECORE_GETOPT_COPYRIGHT
- ('R', "copyright"),
- ECORE_GETOPT_LICENSE
- ('L', "license"),
- ECORE_GETOPT_HELP
- ('h', "help"),
- ECORE_GETOPT_SENTINEL
- }
-};
-
-typedef struct _User_Arguments {
- char *engine;
- Eina_Bool quitOption;
- char *backingStore;
- float device_pixel_ratio;
- Eina_Bool enableEncodingDetector;
- Eina_Bool enableTiledBackingStore;
- Eina_Bool isFlattening;
- Eina_Bool isFullscreen;
- Eina_Rectangle geometry;
- char *theme;
- char *userAgent;
- char *databasePath;
-} User_Arguments;
-
-typedef struct _ELauncher {
- Ecore_Evas *ee;
- Evas *evas;
- Evas_Object *browser;
- Url_Bar *url_bar;
- User_Arguments *userArgs;
-} ELauncher;
-
-static void windowDestroy(Ecore_Evas *ee);
-static void closeWindow(Ecore_Evas *ee);
-static int browserCreate(const char *url, User_Arguments *userArgs);
-static int webInspectorCreate(ELauncher *appBrowser);
-static ELauncher *windowCreate(User_Arguments *userArgs);
-
-static ELauncher *
-find_app_from_ee(Ecore_Evas *ee)
-{
- Eina_List *l;
- void *data;
-
- EINA_LIST_FOREACH(windows, l, data)
- {
- ELauncher *app = (ELauncher *) data;
- if (app->ee == ee)
- return app;
- }
- return NULL;
-}
-
-static void
-print_history(Eina_List *list)
-{
- Eina_List *l;
- void *d;
-
- if (!verbose)
- return;
-
- printf("Session history contains:\n");
-
- EINA_LIST_FOREACH(list, l, d) {
- Ewk_History_Item *item = (Ewk_History_Item*)d;
- cairo_surface_t *cs = ewk_history_item_icon_surface_get(item);
- char buf[PATH_MAX];
- int s = snprintf(buf, sizeof(buf), "/tmp/favicon-%s.png", ewk_history_item_uri_original_get(item));
- for (s--; s >= (int)sizeof("/tmp/favicon-"); s--) {
- if (!isalnum(buf[s]) && buf[s] != '.')
- buf[s] = '_';
- }
- cs = ewk_history_item_icon_surface_get(item);
-
- if (cs && cairo_surface_status(cs) == CAIRO_STATUS_SUCCESS)
- cairo_surface_write_to_png(cs, buf);
- else
- buf[0] = '\0';
-
- printf("* '%s' title='%s' icon='%s'\n",
- ewk_history_item_uri_original_get(item),
- ewk_history_item_title_get(item), buf);
- }
-}
-
-static int
-nearest_zoom_level_get(float factor)
-{
- int i, intFactor = (int)(factor * 100.0);
- for (i = 0; zoomLevels[i] <= intFactor; i++) { }
- printf("factor=%f, intFactor=%d, zoomLevels[%d]=%d, zoomLevels[%d]=%d\n",
- factor, intFactor, i-1, zoomLevels[i-1], i, zoomLevels[i]);
- if (intFactor - zoomLevels[i-1] < zoomLevels[i] - intFactor)
- return i - 1;
- return i;
-}
-
-static Eina_Bool
-zoom_level_set(Evas_Object *webview, int level)
-{
- float factor = ((float) zoomLevels[level]) / 100.0;
- Evas_Coord ox, oy, mx, my, cx, cy;
- evas_pointer_canvas_xy_get(evas_object_evas_get(webview), &mx, &my);
- evas_object_geometry_get(webview, &ox, &oy, NULL, NULL);
- cx = mx - ox;
- cy = my - oy;
- return ewk_view_zoom_animated_set(webview, factor, 0.5, cx, cy);
-}
-
-static void
-on_browser_ecore_evas_resize(Ecore_Evas *ee)
-{
- ELauncher *app;
- Evas_Object *webview;
- int w, h;
-
- ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
-
- /* Resize URL bar */
- app = find_app_from_ee(ee);
- url_bar_width_set(app->url_bar, w);
-
- webview = evas_object_name_find(ecore_evas_get(ee), "browser");
- evas_object_move(webview, 0, URL_BAR_HEIGHT);
- evas_object_resize(webview, w, h - URL_BAR_HEIGHT);
-}
-
-static void
-on_inspector_ecore_evas_resize(Ecore_Evas *ee)
-{
- Evas_Object *webview;
- int w, h;
-
- ecore_evas_geometry_get(ee, NULL, NULL, &w, &h);
-
- webview = evas_object_name_find(ecore_evas_get(ee), "inspector");
- evas_object_move(webview, 0, 0);
- evas_object_resize(webview, w, h);
-}
-
-static void
-title_set(Ecore_Evas *ee, const Ewk_Text_With_Direction *title, int progress)
-{
- const char *appname = "EFL Test Launcher";
- const char *separator = " - ";
- char label[4096];
- int size;
-
- if (!title || !title->string || !strcmp(title->string, "")) {
- ecore_evas_title_set(ee, appname);
- return;
- }
-
- if (progress < 100)
- size = snprintf(label, sizeof(label), "%s (%d%%)%s%s", title->string, progress, separator, appname);
- else
- size = snprintf(label, sizeof(label), "%s %s%s", title->string, separator, appname);
-
- if (size >= (int)sizeof(label))
- return;
-
- ecore_evas_title_set(ee, label);
-}
-
-static void
-on_title_changed(void *user_data, Evas_Object *webview, void *event_info)
-{
- ELauncher *app = (ELauncher *)user_data;
- const Ewk_Text_With_Direction *title = (const Ewk_Text_With_Direction *)event_info;
-
- title_set(app->ee, title, 100);
-}
-
-static void
-on_progress(void *user_data, Evas_Object *webview, void *event_info)
-{
- ELauncher *app = (ELauncher *)user_data;
- double *progress = (double *)event_info;
-
- title_set(app->ee, ewk_view_title_get(app->browser), *progress * 100);
-}
-
-static void
-on_load_finished(void *user_data, Evas_Object *webview, void *event_info)
-{
- const Ewk_Frame_Load_Error *err = (const Ewk_Frame_Load_Error *)event_info;
-
- if (!err)
- info("Succeeded loading page.");
- else if (err->is_cancellation)
- info("Load was cancelled.");
- else
- info("Failed loading page: %d %s \"%s\", url=%s",
- err->code, err->domain, err->description, err->failing_url);
-
- currentZoom = ewk_view_zoom_get(webview);
- currentZoomLevel = nearest_zoom_level_get(currentZoom);
- info("WebCore Zoom=%f, currentZoomLevel=%d", currentZoom, currentZoomLevel);
-}
-
-static void
-on_load_error(void *user_data, Evas_Object *webview, void *event_info)
-{
- const Ewk_Frame_Load_Error *err = (const Ewk_Frame_Load_Error *)event_info;
- char message[1024];
- snprintf(message, 1024, "<html><body><div style=\"color:#ff0000\">ERROR!</div><br><div>Code: %d<br>Domain: %s<br>Description: %s<br>URL: %s</div></body</html>",
- err->code, err->domain, err->description, err->failing_url);
- ewk_frame_contents_set(err->frame, message, 0, "text/html", "UTF-8", err->failing_url);
-}
-
-static void
-on_toolbars_visible_set(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- if (*visible) {
- info("Toolbars visible changed: show");
- windowProperties.toolbarsVisible = EINA_TRUE;
- } else {
- info("Toolbars visible changed: hide");
- windowProperties.toolbarsVisible = EINA_FALSE;
- }
-}
-
-static void
-on_toolbars_visible_get(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- *visible = windowProperties.toolbarsVisible;
-}
-
-static void
-on_statusbar_visible_set(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- if (*visible) {
- info("Statusbar visible changed: show");
- windowProperties.statusbarVisible = EINA_TRUE;
- } else {
- info("Statusbar visible changed: hide");
- windowProperties.statusbarVisible = EINA_FALSE;
- }
-}
-
-static void
-on_statusbar_visible_get(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- *visible = windowProperties.statusbarVisible;
-}
-
-static void
-on_scrollbars_visible_set(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- if (*visible) {
- info("Scrollbars visible changed: show");
- windowProperties.scrollbarsVisible = EINA_TRUE;
- } else {
- info("Scrollbars visible changed: hide");
- windowProperties.scrollbarsVisible = EINA_FALSE;
- }
-}
-
-static void
-on_scrollbars_visible_get(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- *visible = windowProperties.scrollbarsVisible;
-}
-
-static void
-on_menubar_visible_set(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- if (*visible) {
- info("Menubar visible changed: show");
- windowProperties.menubarVisible = EINA_TRUE;
- } else {
- info("Menubar visible changed: hide");
- windowProperties.menubarVisible = EINA_FALSE;
- }
-}
-
-static void
-on_menubar_visible_get(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool *visible = (Eina_Bool *)event_info;
- *visible = windowProperties.menubarVisible;
-}
-
-static void
-on_tooltip_text_set(void* user_data, Evas_Object* webview, void* event_info)
-{
- const char *text = (const char *)event_info;
- info("Tooltip is set: %s", text);
-}
-
-static void
-on_tooltip_text_unset(void* user_data, Evas_Object* webview, void* event_info)
-{
- info("Tooltip is unset");
-}
-
-static void
-on_inputmethod_changed(void* user_data, Evas_Object* webview, void* event_info)
-{
- Eina_Bool active = (Eina_Bool)(long)event_info;
- unsigned int imh;
- info("Keyboard changed: %d", active);
-
- if (!active)
- return;
-
- imh = ewk_view_imh_get(webview);
- info(" Keyboard flags: %#.2x", imh);
-
-}
-
-static void
-on_url_changed(void* user_data, Evas_Object* webview, void* event_info)
-{
- ELauncher *app = (ELauncher *)user_data;
- url_bar_url_set(app->url_bar, ewk_view_uri_get(app->browser));
-}
-
-static void
-on_mouse_down(void* data, Evas* e, Evas_Object* webview, void* event_info)
-{
- Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
-
- if (ev->button == 1)
- evas_object_focus_set(webview, EINA_TRUE);
- else if (ev->button == 2)
- evas_object_focus_set(webview, !evas_object_focus_get(webview));
-}
-
-static void
-on_focus_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- info("the webview lost keyboard focus");
-}
-
-static void
-on_focus_in(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- info("the webview gained keyboard focus");
-}
-
-static void
-on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- Evas_Event_Key_Down *ev = (Evas_Event_Key_Down*) event_info;
- ELauncher *app = data;
- static const char *encodings[] = {
- "ISO-8859-1",
- "UTF-8",
- NULL
- };
- static int currentEncoding = -1;
- const Evas_Modifier *mod = evas_key_modifier_get(e);
- Eina_Bool ctrlPressed = evas_key_modifier_is_set(mod, "Control");
- Eina_Bool altPressed = evas_key_modifier_is_set(mod, "Alt");
-
- if (!strcmp(ev->key, "Escape")) {
- closeWindow(app->ee);
- } else if (!strcmp(ev->key, "Left") && altPressed) {
- info("Back (Alt+Left) was pressed");
- if (ewk_view_back_possible(obj)) {
- Ewk_History *history = ewk_view_history_get(obj);
- Eina_List *list = ewk_history_back_list_get(history);
- print_history(list);
- ewk_history_item_list_free(list);
- ewk_view_back(obj);
- } else
- info("Back ignored: No back history");
- } else if (!strcmp(ev->key, "Right") && altPressed) {
- info("Forward (Alt+Right) was pressed");
- if (ewk_view_forward_possible(obj)) {
- Ewk_History *history = ewk_view_history_get(obj);
- Eina_List *list = ewk_history_forward_list_get(history);
- print_history(list);
- ewk_history_item_list_free(list);
- ewk_view_forward(obj);
- } else
- info("Forward ignored: No forward history");
- } else if (!strcmp(ev->key, "F3")) {
- currentEncoding++;
- currentEncoding %= (sizeof(encodings) / sizeof(encodings[0]));
- info("Set encoding (F3) pressed. New encoding to %s", encodings[currentEncoding]);
- ewk_view_setting_encoding_custom_set(obj, encodings[currentEncoding]);
- } else if (!strcmp(ev->key, "F4")) {
- Evas_Object *frame = ewk_view_frame_main_get(obj);
- Evas_Coord x, y;
- Ewk_Hit_Test *ht;
-
- evas_pointer_canvas_xy_get(evas_object_evas_get(obj), &x, &y);
- ht = ewk_frame_hit_test_new(frame, x, y);
- if (!ht)
- printf("No hit test returned for point %d,%d\n", x, y);
- else {
- printf("Hit test for point %d,%d\n"
- " pos=%3d,%3d\n"
- " bounding_box=%d,%d + %dx%d\n"
- " title='%s'\n"
- " alternate_text='%s'\n"
- " frame=%p (%s)\n"
- " link {\n"
- " text='%s'\n"
- " url='%s'\n"
- " title='%s'\n"
- " target frame=%p (%s)\n"
- " }\n"
- "context:\n"
- "%s"
- "%s"
- "%s"
- "%s"
- "%s\n",
- x, y,
- ht->x, ht->y,
- ht->bounding_box.x, ht->bounding_box.y, ht->bounding_box.w, ht->bounding_box.h,
- ht->title.string,
- ht->alternate_text,
- ht->frame, evas_object_name_get(ht->frame),
- ht->link.text,
- ht->link.url,
- ht->link.title,
- ht->link.target_frame, evas_object_name_get(ht->link.target_frame),
- ht->context & EWK_HIT_TEST_RESULT_CONTEXT_LINK ? " LINK\n" : "",
- ht->context & EWK_HIT_TEST_RESULT_CONTEXT_IMAGE ? " IMAGE\n" : "",
- ht->context & EWK_HIT_TEST_RESULT_CONTEXT_MEDIA ? " MEDIA\n" : "",
- ht->context & EWK_HIT_TEST_RESULT_CONTEXT_SELECTION ? " SELECTION\n" : "",
- ht->context & EWK_HIT_TEST_RESULT_CONTEXT_EDITABLE ? " EDITABLE" : "");
- ewk_frame_hit_test_free(ht);
- }
-
- } else if (!strcmp(ev->key, "F5")) {
- info("Reload (F5) was pressed, reloading.");
- ewk_view_reload(obj);
- } else if (!strcmp(ev->key, "F6")) {
- info("Stop (F6) was pressed, stop loading.");
- ewk_view_stop(obj);
- } else if (!strcmp(ev->key, "F12")) {
- Eina_Bool status = ewk_view_setting_spatial_navigation_get(obj);
- ewk_view_setting_spatial_navigation_set(obj, !status);
- info("Command::keyboard navigation toggle");
- } else if ((!strcmp(ev->key, "minus") || !strcmp(ev->key, "KP_Subtract")) && ctrlPressed) {
- if (currentZoomLevel > MIN_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel - 1))
- currentZoomLevel--;
- info("Zoom out (Ctrl + '-') was pressed, zoom level became %.2f", zoomLevels[currentZoomLevel] / 100.0);
- } else if ((!strcmp(ev->key, "equal") || !strcmp(ev->key, "KP_Add")) && ctrlPressed) {
- if (currentZoomLevel < MAX_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel + 1))
- currentZoomLevel++;
- info("Zoom in (Ctrl + '+') was pressed, zoom level became %.2f", zoomLevels[currentZoomLevel] / 100.0);
- } else if (!strcmp(ev->key, "0") && ctrlPressed) {
- if (zoom_level_set(obj, DEFAULT_ZOOM_LEVEL))
- currentZoomLevel = DEFAULT_ZOOM_LEVEL;
- info("Zoom to default (Ctrl + '0') was pressed, zoom level became %.2f", zoomLevels[currentZoomLevel] / 100.0);
- } else if (!strcmp(ev->key, "n") && ctrlPressed) {
- info("Create new window (Ctrl+n) was pressed.");
- browserCreate("http://www.google.com", app->userArgs);
- } else if (!strcmp(ev->key, "g") && ctrlPressed ) {
- Evas_Coord x, y, w, h;
- Evas_Object *frame = ewk_view_frame_main_get(obj);
- float zoom = zoomLevels[currentZoomLevel] / 100.0;
-
- ewk_frame_visible_content_geometry_get(frame, EINA_FALSE, &x, &y, &w, &h);
- x -= w;
- y -= h;
- w *= 4;
- h *= 4;
- info("Pre-render %d,%d + %dx%d", x, y, w, h);
- ewk_view_pre_render_region(obj, x, y, w, h, zoom);
- } else if (!strcmp(ev->key, "r") && ctrlPressed) {
- info("Pre-render 1 extra column/row with current zoom");
- ewk_view_pre_render_relative_radius(obj, 1);
- } else if (!strcmp(ev->key, "p") && ctrlPressed) {
- info("Pre-rendering start");
- ewk_view_pre_render_start(obj);
- } else if (!strcmp(ev->key, "d") && ctrlPressed) {
- info("Render suspended");
- ewk_view_disable_render(obj);
- } else if (!strcmp(ev->key, "e") && ctrlPressed) {
- info("Render resumed");
- ewk_view_enable_render(obj);
- } else if (!strcmp(ev->key, "s") && ctrlPressed) {
- Evas_Object *frame = ewk_view_frame_main_get(obj);
- Ewk_Security_Origin *origin = ewk_frame_security_origin_get(frame);
- printf("Security origin information:\n"
- " protocol=%s\n"
- " host=%s\n"
- " port=%d\n"
- " web database quota=%" PRIu64 "\n",
- ewk_security_origin_protocol_get(origin),
- ewk_security_origin_host_get(origin),
- ewk_security_origin_port_get(origin),
- ewk_security_origin_web_database_quota_get(origin));
-
- Eina_List *databaseList = ewk_security_origin_web_database_get_all(origin);
- Eina_List *listIterator = 0;
- Ewk_Web_Database *database;
- EINA_LIST_FOREACH(databaseList, listIterator, database)
- printf("Database information:\n"
- " name=%s\n"
- " display name=%s\n"
- " filename=%s\n"
- " expected size=%" PRIu64 "\n"
- " size=%" PRIu64 "\n",
- ewk_web_database_name_get(database),
- ewk_web_database_display_name_get(database),
- ewk_web_database_filename_get(database),
- ewk_web_database_expected_size_get(database),
- ewk_web_database_size_get(database));
-
- ewk_security_origin_free(origin);
- ewk_web_database_list_free(databaseList);
- } else if (!strcmp(ev->key, "i") && ctrlPressed) {
- Evas_Object *inspector_view = ewk_view_inspector_view_get(obj);
- if (inspector_view) {
- info("Web Inspector close");
- ewk_view_inspector_close(obj);
- } else {
- info("Web Inspector show");
- ewk_view_inspector_show(obj);
- }
- }
-}
-
-static void
-on_browser_del(void *data, Evas *evas, Evas_Object *browser, void *event)
-{
- ELauncher *app = (ELauncher*) data;
-
- evas_object_event_callback_del(app->browser, EVAS_CALLBACK_KEY_DOWN, on_key_down);
- evas_object_event_callback_del(app->browser, EVAS_CALLBACK_MOUSE_DOWN, on_mouse_down);
- evas_object_event_callback_del(app->browser, EVAS_CALLBACK_FOCUS_IN, on_focus_in);
- evas_object_event_callback_del(app->browser, EVAS_CALLBACK_FOCUS_OUT, on_focus_out);
- evas_object_event_callback_del(app->browser, EVAS_CALLBACK_DEL, on_browser_del);
-}
-
-static void
-on_inspector_view_create(void *user_data, Evas_Object *webview, void *event_info)
-{
- ELauncher *app_browser = (ELauncher *)user_data;
-
- webInspectorCreate(app_browser);
-}
-
-static void
-on_inspector_view_close(void *user_data, Evas_Object *webview, void *event_info)
-{
- Eina_List *l;
- void *app;
- ELauncher *app_browser = (ELauncher *)user_data;
- Evas_Object *inspector_view = (Evas_Object *)event_info;
-
- ewk_view_inspector_view_set(app_browser->browser, NULL);
-
- EINA_LIST_FOREACH(windows, l, app)
- if (((ELauncher *)app)->browser == inspector_view)
- break;
-
- windows = eina_list_remove(windows, app);
- windowDestroy(((ELauncher *)app)->ee);
- free(app);
-}
-
-static void
-on_inspector_view_destroyed(Ecore_Evas *ee)
-{
- ELauncher *app;
-
- app = find_app_from_ee(ee);
- evas_object_smart_callback_call(app->browser, "inspector,view,destroy", NULL);
-}
-
-static int
-quit(Eina_Bool success, const char *msg)
-{
- edje_shutdown();
- ecore_evas_shutdown();
- ecore_file_shutdown();
-
- if (msg)
- fputs(msg, (success) ? stdout : stderr);
-
- if (themePath) {
- free(themePath);
- themePath = NULL;
- }
-
- if (!success)
- return EXIT_FAILURE;
-
- return EXIT_SUCCESS;
-}
-
-static int
-browserCreate(const char *url, User_Arguments *userArgs)
-{
- ELauncher *appBrowser = windowCreate(userArgs);
- if (!appBrowser)
- return quit(EINA_FALSE, "ERROR: could not create a browser window\n");
-
- ecore_evas_title_set(appBrowser->ee, "EFL Test Launcher");
- ecore_evas_callback_resize_set(appBrowser->ee, on_browser_ecore_evas_resize);
- ecore_evas_callback_delete_request_set(appBrowser->ee, closeWindow);
-
- evas_object_name_set(appBrowser->browser, "browser");
-
- evas_object_smart_callback_add(appBrowser->browser, "inputmethod,changed", on_inputmethod_changed, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "inspector,view,close", on_inspector_view_close, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "inspector,view,create", on_inspector_view_create, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "load,error", on_load_error, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "load,finished", on_load_finished, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "load,progress", on_progress, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "menubar,visible,get", on_menubar_visible_get, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "menubar,visible,set", on_menubar_visible_set, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "scrollbars,visible,get", on_scrollbars_visible_get, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "scrollbars,visible,set", on_scrollbars_visible_set, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "statusbar,visible,get", on_statusbar_visible_get, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "statusbar,visible,set", on_statusbar_visible_set, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "title,changed", on_title_changed, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "toolbars,visible,get", on_toolbars_visible_get, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "toolbars,visible,set", on_toolbars_visible_set, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "tooltip,text,set", on_tooltip_text_set, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "tooltip,text,unset", on_tooltip_text_unset, appBrowser);
- evas_object_smart_callback_add(appBrowser->browser, "uri,changed", on_url_changed, appBrowser);
-
- evas_object_event_callback_add(appBrowser->browser, EVAS_CALLBACK_DEL, on_browser_del, appBrowser);
- evas_object_event_callback_add(appBrowser->browser, EVAS_CALLBACK_FOCUS_IN, on_focus_in, appBrowser);
- evas_object_event_callback_add(appBrowser->browser, EVAS_CALLBACK_FOCUS_OUT, on_focus_out, appBrowser);
- evas_object_event_callback_add(appBrowser->browser, EVAS_CALLBACK_KEY_DOWN, on_key_down, appBrowser);
- evas_object_event_callback_add(appBrowser->browser, EVAS_CALLBACK_MOUSE_DOWN, on_mouse_down, appBrowser);
-
- ewk_view_setting_enable_developer_extras_set(appBrowser->browser, EINA_TRUE);
-
- appBrowser->url_bar = url_bar_add(appBrowser->browser, DEFAULT_WIDTH);
-
- evas_object_move(appBrowser->browser, 0, URL_BAR_HEIGHT);
- evas_object_resize(appBrowser->browser, userArgs->geometry.w, userArgs->geometry.h - URL_BAR_HEIGHT);
-
- ewk_view_uri_set(appBrowser->browser, url);
-
- evas_object_show(appBrowser->browser);
- ecore_evas_show(appBrowser->ee);
-
- evas_object_focus_set(appBrowser->browser, EINA_TRUE);
-
- return 1;
-}
-
-static int
-webInspectorCreate(ELauncher *appBrowser)
-{
- ELauncher *appInspector = windowCreate(appBrowser->userArgs);
- if (!appInspector)
- return quit(EINA_FALSE, "ERROR: could not create an inspector window\n");
-
- ecore_evas_title_set(appInspector->ee, "Web Inspector");
- ecore_evas_callback_resize_set(appInspector->ee, on_inspector_ecore_evas_resize);
- ecore_evas_callback_delete_request_set(appInspector->ee, on_inspector_view_destroyed);
-
- evas_object_name_set(appInspector->browser, "inspector");
-
- evas_object_move(appInspector->browser, 0, 0);
- evas_object_resize(appInspector->browser, appInspector->userArgs->geometry.w, appInspector->userArgs->geometry.h);
-
- evas_object_show(appInspector->browser);
- ecore_evas_show(appInspector->ee);
-
- evas_object_focus_set(appInspector->browser, EINA_TRUE);
-
- ewk_view_inspector_view_set(appBrowser->browser, appInspector->browser);
-
- return 1;
-}
-
-static ELauncher *
-windowCreate(User_Arguments *userArgs)
-{
- ELauncher *app = (ELauncher *)malloc(sizeof(ELauncher));
- if (!app) {
- quit(EINA_FALSE, "ERROR: could not create an ELauncher\n");
- return NULL;
- }
-
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- if (userArgs->engine)
-#endif
- app->ee = ecore_evas_new(userArgs->engine, 0, 0, userArgs->geometry.w, userArgs->geometry.h, NULL);
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- else {
- const char* engine = "opengl_x11";
- app->ee = ecore_evas_new(engine, 0, 0, userArgs->geometry.w, userArgs->geometry.h, NULL);
- }
-#endif
- if (!app->ee) {
- quit(EINA_FALSE, "ERROR: could not construct evas-ecore\n");
- return NULL;
- }
-
- if (userArgs->isFullscreen)
- ecore_evas_fullscreen_set(app->ee, EINA_TRUE);
-
- app->evas = ecore_evas_get(app->ee);
- if (!app->evas) {
- quit(EINA_FALSE, "ERROR: could not get evas from evas-ecore\n");
- return NULL;
- }
-
- if (userArgs->backingStore && !strcasecmp(userArgs->backingStore, "tiled")) {
- app->browser = ewk_view_tiled_add(app->evas);
- info("backing store: tiled");
- } else {
- app->browser = ewk_view_single_add(app->evas);
- info("backing store: single");
-
- ewk_view_setting_tiled_backing_store_enabled_set(app->browser, userArgs->enableTiledBackingStore);
- }
-
- ewk_view_theme_set(app->browser, themePath);
- if (userArgs->userAgent)
- ewk_view_setting_user_agent_set(app->browser, userArgs->userAgent);
-
- ewk_view_setting_local_storage_database_path_set(app->browser, userArgs->databasePath);
- ewk_view_setting_enable_frame_flattening_set(app->browser, userArgs->isFlattening);
- ewk_view_setting_encoding_detector_set(app->browser, userArgs->enableEncodingDetector);
- ewk_view_device_pixel_ratio_set(app->browser, userArgs->device_pixel_ratio);
-
- app->userArgs = userArgs;
- app->url_bar = NULL;
-
- windows = eina_list_append(windows, app);
-
- return app;
-}
-
-static void
-windowDestroy(Ecore_Evas *ee)
-{
- ecore_evas_free(ee);
- if (!eina_list_count(windows))
- ecore_main_loop_quit();
-}
-
-static void
-closeWindow(Ecore_Evas *ee)
-{
- ELauncher *app;
-
- app = find_app_from_ee(ee);
- ewk_view_inspector_close(app->browser);
-
- windows = eina_list_remove(windows, app);
- url_bar_del(app->url_bar);
- windowDestroy(ee);
- free(app);
-}
-
-static Eina_Bool
-main_signal_exit(void *data, int ev_type, void *ev)
-{
- ELauncher *app;
- while (windows) {
- app = (ELauncher*) eina_list_data_get(windows);
- ewk_view_inspector_close(app->browser);
-
- ecore_evas_free(app->ee);
- windows = eina_list_remove(windows, app);
- }
- if (!eina_list_count(windows))
- ecore_main_loop_quit();
- return EINA_TRUE;
-}
-
-static char *
-findThemePath(const char *theme)
-{
- const char *default_theme = TEST_THEME_DIR "/default.edj";
- char *rpath;
- struct stat st;
-
- if (!theme)
- theme = default_theme;
-
- rpath = ecore_file_realpath(theme);
-
- if (!strlen(rpath) || stat(rpath, &st)) {
- free(rpath);
- return NULL;
- }
-
- return rpath;
-}
-
-int
-parseUserArguments(int argc, char *argv[], User_Arguments *userArgs)
-{
- int args;
-
- userArgs->engine = NULL;
- userArgs->quitOption = EINA_FALSE;
- userArgs->backingStore = (char *)backingStores[1];
- userArgs->device_pixel_ratio = 1.0;
- userArgs->enableEncodingDetector = EINA_FALSE;
- userArgs->enableTiledBackingStore = EINA_FALSE;
- userArgs->isFlattening = EINA_FALSE;
- userArgs->isFullscreen = EINA_FALSE;
- userArgs->geometry.x = 0;
- userArgs->geometry.y = 0;
- userArgs->geometry.w = 0;
- userArgs->geometry.h = 0;
- userArgs->theme = NULL;
- userArgs->userAgent = NULL;
-
- Ecore_Getopt_Value values[] = {
- ECORE_GETOPT_VALUE_STR(userArgs->engine),
- ECORE_GETOPT_VALUE_BOOL(userArgs->quitOption),
- ECORE_GETOPT_VALUE_STR(userArgs->backingStore),
- ECORE_GETOPT_VALUE_DOUBLE(userArgs->device_pixel_ratio),
- ECORE_GETOPT_VALUE_BOOL(userArgs->enableEncodingDetector),
- ECORE_GETOPT_VALUE_BOOL(userArgs->isFlattening),
- ECORE_GETOPT_VALUE_BOOL(userArgs->isFullscreen),
- ECORE_GETOPT_VALUE_PTR_CAST(userArgs->geometry),
- ECORE_GETOPT_VALUE_STR(userArgs->theme),
- ECORE_GETOPT_VALUE_BOOL(userArgs->enableTiledBackingStore),
- ECORE_GETOPT_VALUE_STR(userArgs->userAgent),
- ECORE_GETOPT_VALUE_INT(verbose),
- ECORE_GETOPT_VALUE_BOOL(userArgs->quitOption),
- ECORE_GETOPT_VALUE_BOOL(userArgs->quitOption),
- ECORE_GETOPT_VALUE_BOOL(userArgs->quitOption),
- ECORE_GETOPT_VALUE_BOOL(userArgs->quitOption),
- ECORE_GETOPT_VALUE_NONE
- };
-
- ecore_app_args_set(argc, (const char**) argv);
- args = ecore_getopt_parse(&options, values, argc, argv);
-
- themePath = findThemePath(userArgs->theme);
-
- if ((userArgs->geometry.w <= 0) || (userArgs->geometry.h <= 0)) {
- userArgs->geometry.w = DEFAULT_WIDTH;
- userArgs->geometry.h = DEFAULT_HEIGHT;
- }
-
- return args;
-}
-
-int
-main(int argc, char *argv[])
-{
- const char *default_url = "http://www.google.com/";
- const char *tmp;
- const char *proxyUri;
- char path[PATH_MAX];
- int args;
-
- User_Arguments userArgs;
-
- if (!ewk_init())
- return EXIT_FAILURE;
-
- if (!ecore_file_init()) {
- ewk_shutdown();
- return EXIT_FAILURE;
- }
-
- args = parseUserArguments(argc, argv, &userArgs);
- if (args < 0)
- return quit(EINA_FALSE, "ERROR: could not parse options.\n");
-
- if (userArgs.quitOption)
- return quit(EINA_TRUE, NULL);
-
- if (!themePath)
- return quit(EINA_FALSE, "ERROR: could not find theme.\n");
-
- tmp = getenv("TMPDIR");
- if (!tmp)
- tmp = "/tmp";
- snprintf(path, sizeof(path), "%s/.ewebkit-%u", tmp, getuid());
- if (!ecore_file_mkpath(path))
- return quit(EINA_FALSE, "ERROR: could not create settings database directory.\n");
-
- userArgs.databasePath = path;
-
- ewk_settings_icon_database_path_set(path);
- ewk_settings_web_database_path_set(path);
-
- proxyUri = getenv("http_proxy");
- if (proxyUri)
- ewk_network_proxy_uri_set(proxyUri);
-
- if (args < argc) {
- char *url = url_from_user_input(argv[args]);
- browserCreate(url, &userArgs);
- free(url);
- } else
- browserCreate(default_url, &userArgs);
-
- ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, main_signal_exit, &windows);
-
- ecore_main_loop_begin();
-
- ecore_file_shutdown();
- ewk_shutdown();
-
- return quit(EINA_TRUE, NULL);
-}
diff --git a/Tools/EWebLauncher/url_bar.c b/Tools/EWebLauncher/url_bar.c
deleted file mode 100644
index a1202fa5d..000000000
--- a/Tools/EWebLauncher/url_bar.c
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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.
- */
-
-#include "url_bar.h"
-#include "url_utils.h"
-
-#include <Edje.h>
-#include <Ecore_Evas.h>
-
-#define PADDING_SIZE 5
-
-static char *
-_url_bar_url_get_with_protocol(Url_Bar *urlBar)
-{
- const char *url = edje_object_part_text_get(urlBar->entry, "url.text");
-
- return url_from_user_input(url);
-}
-
-static void
-on_urlbar_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- Evas_Event_Key_Down *ev = event_info;
- Url_Bar *urlBar = (Url_Bar *)data;
-
- if (!ev->key || strcmp(ev->key, "Return"))
- return;
-
- char *url = _url_bar_url_get_with_protocol(urlBar);
- if (url) {
- ewk_view_uri_set(urlBar->webView, url);
- free(url);
- }
- evas_object_focus_set(urlBar->webView, EINA_TRUE);
-}
-
-static void
-on_urlbar_mouse_down(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- Evas_Event_Mouse_Down *ev = event_info;
- Url_Bar *urlBar = (Url_Bar *)data;
-
- if (ev->button == 1) {
- evas_object_focus_set(urlBar->entry, EINA_TRUE);
- edje_object_signal_emit(urlBar->entry, "entry,action,focus", "entry");
- }
-}
-
-static void
-on_urlbar_focus_out(void *data, Evas *e, Evas_Object *obj, void *event_info)
-{
- Url_Bar *urlBar = (Url_Bar *)data;
-
- edje_object_signal_emit(urlBar->entry, "entry,action,unfocus", "entry");
-}
-
-void
-url_bar_width_set(Url_Bar *urlBar, int width)
-{
- evas_object_move(urlBar->area, 0, 0);
- evas_object_resize(urlBar->area, width, URL_BAR_HEIGHT);
-
- evas_object_move(urlBar->entry, PADDING_SIZE, PADDING_SIZE);
- evas_object_resize(urlBar->entry, width - PADDING_SIZE * 2, URL_BAR_HEIGHT - PADDING_SIZE * 2);
-}
-
-Url_Bar *
-url_bar_add(Evas_Object *webView, int width)
-{
- Evas *evas;
- Url_Bar *url_bar;
- if (!webView)
- return NULL;
- evas = evas_object_evas_get(webView);
-
- url_bar = (Url_Bar *)malloc(sizeof(Url_Bar));
- url_bar->webView = webView;
-
- url_bar->area = evas_object_rectangle_add(evas);
- evas_object_name_set(url_bar->area, "url_barArea");
- evas_object_color_set(url_bar->area, 255, 255, 255, 255);
-
- url_bar->entry = edje_object_add(evas);
- Eina_Bool ret = edje_object_file_set(url_bar->entry, TEST_THEME_DIR "/entry.edj", "control/entry/base/default");
- if (!ret) {
- evas_object_del(url_bar->area);
-
- free(url_bar);
- return NULL;
- }
-
- edje_object_part_text_set(url_bar->entry, "url.text", "");
-
- /* Set URL bar dimensions and show it */
- url_bar_width_set(url_bar, width);
- evas_object_show(url_bar->area);
- evas_object_show(url_bar->entry);
-
- evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_MOUSE_DOWN, on_urlbar_mouse_down, url_bar);
- evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_KEY_DOWN, on_urlbar_key_down, url_bar);
- evas_object_event_callback_add(url_bar->entry, EVAS_CALLBACK_FOCUS_OUT, on_urlbar_focus_out, url_bar);
-
- return url_bar;
-}
-
-void
-url_bar_del(Url_Bar *urlBar)
-{
- if (!urlBar)
- return;
-
- evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_KEY_DOWN, on_urlbar_key_down);
- evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_MOUSE_DOWN, on_urlbar_mouse_down);
- evas_object_event_callback_del(urlBar->entry, EVAS_CALLBACK_FOCUS_OUT, on_urlbar_focus_out);
-
- evas_object_del(urlBar->area);
- evas_object_del(urlBar->entry);
- free(urlBar);
-}
-
-void
-url_bar_url_set(Url_Bar *urlBar, const char *url)
-{
- if (!urlBar || !url)
- return;
-
- edje_object_part_text_set(urlBar->entry, "url.text", url);
-}
diff --git a/Tools/EWebLauncher/url_bar.h b/Tools/EWebLauncher/url_bar.h
deleted file mode 100644
index 32d7793b5..000000000
--- a/Tools/EWebLauncher/url_bar.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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.
- */
-
-#ifndef url_bar_h
-#define url_bar_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <Evas.h>
-
-#define URL_BAR_HEIGHT 30
-
-typedef struct _Url_Bar {
- Evas_Object *webView;
- Evas_Object *area;
- Evas_Object *entry;
-} Url_Bar;
-
-Url_Bar *url_bar_add(Evas_Object* webview, int width);
-void url_bar_del(Url_Bar *urlBar);
-void url_bar_url_set(Url_Bar *urlBar, const char *url);
-void url_bar_width_set(Url_Bar *urlBar, int width);
-
-#ifdef __cplusplus
-}
-#endif
-#endif // url_bar_h
diff --git a/Tools/EWebLauncher/url_utils.c b/Tools/EWebLauncher/url_utils.c
deleted file mode 100644
index d8cf7cb49..000000000
--- a/Tools/EWebLauncher/url_utils.c
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 "url_utils.h"
-
-#include <Ecore_File.h>
-#include <string.h>
-#include <sys/statvfs.h>
-
-Eina_Bool
-has_scheme(const char *url)
-{
- return !!strstr(url, "://");
-}
-
-char *
-url_from_user_input(const char *arg)
-{
- /* If it is already a URL, return the argument as is. */
- if (has_scheme(arg) || !strcasecmp(arg, "about:blank"))
- return strdup(arg);
-
- Eina_Strbuf *buf = eina_strbuf_manage_new(eina_file_path_sanitize(arg));
-
- /* Check if the path exists. */
- if (ecore_file_exists(eina_strbuf_string_get(buf))) {
- /* File exists, convert local path to a URL. */
- eina_strbuf_prepend(buf, "file://");
- } else {
- /* The path does not exist, convert it to a URL by
- prepending http:// scheme:
- www.google.com -> http://www.google.com */
- eina_strbuf_string_free(buf);
- eina_strbuf_append_printf(buf, "http://%s", arg);
- }
- char *url = eina_strbuf_string_steal(buf);
- eina_strbuf_free(buf);
-
- return url;
-}
diff --git a/Tools/EWebLauncher/url_utils.h b/Tools/EWebLauncher/url_utils.h
deleted file mode 100644
index bd3c1a057..000000000
--- a/Tools/EWebLauncher/url_utils.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 url_utils_h
-#define url_utils_h
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <Eina.h>
-
-Eina_Bool has_scheme(const char *url);
-char *url_from_user_input(const char *arg);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif // url_utils_h
diff --git a/Tools/GNUmakefile.am b/Tools/GNUmakefile.am
deleted file mode 100644
index 3f24b138d..000000000
--- a/Tools/GNUmakefile.am
+++ /dev/null
@@ -1,432 +0,0 @@
-noinst_PROGRAMS += \
- Programs/ImageDiff
-
-if ENABLE_WEBKIT1
-noinst_PROGRAMS += \
- Programs/DumpRenderTree \
- Programs/GtkLauncher
-endif
-
-# GtkLauncher
-Programs_GtkLauncher_CPPFLAGS = \
- -I$(srcdir)/Source/WebKit/gtk \
- -I$(srcdir)/Source/WebCore/platform/network/soup/cache/ \
- -I$(top_builddir)/Source/WebKit/gtk \
- -I$(top_builddir)/DerivedSources \
- -DWEBKIT_EXEC_PATH=\"${shell pwd}/$(top_builddir)/Programs/\" \
- $(global_cppflags) \
- $(javascriptcore_cppflags)
-
-Programs_GtkLauncher_SOURCES = \
- Tools/GtkLauncher/LauncherInspectorWindow.c \
- Tools/GtkLauncher/LauncherInspectorWindow.h \
- Tools/GtkLauncher/main.c
-
-Programs_GtkLauncher_CFLAGS = \
- -ansi \
- -fno-strict-aliasing \
- $(global_cflags) \
- $(FREETYPE_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS) \
- $(GSTREAMER_CFLAGS)
-
-Programs_GtkLauncher_LDADD = \
- libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- $(FREETYPE_LIBS) \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(LIBSOUP_LIBS) \
- $(WINMM_LIBS) \
- $(GSTREAMER_LIBS)
-
-Programs_GtkLauncher_LDFLAGS = \
- -no-fast-install \
- -no-install
-
-# libWebCoreInternals
-# We must split off the window.internals implementation into a separate
-# convenience library because it requires a different include path order
-# to prefer the WebCore config.h over the DumpRenderTree config.h
-noinst_LTLIBRARIES += libWebCoreInternals.la
-libWebCoreInternals_la_SOURCES = \
- Source/WebCore/bindings/js/JSDOMWrapper.cpp \
- Source/WebCore/bindings/js/JSDOMWrapper.h \
- Source/WebCore/testing/MallocStatistics.h \
- Source/WebCore/testing/MemoryInfo.h \
- Source/WebCore/testing/Internals.cpp \
- Source/WebCore/testing/Internals.h \
- Source/WebCore/testing/InternalSettings.cpp \
- Source/WebCore/testing/InternalSettings.h \
- Source/WebCore/testing/TypeConversions.h \
- Source/WebCore/testing/js/WebCoreTestSupport.cpp \
- Source/WebCore/testing/js/WebCoreTestSupport.h
-
-libwebcoreinternals_built_sources += \
- DerivedSources/WebCore/InternalSettingsGenerated.cpp \
- DerivedSources/WebCore/InternalSettingsGenerated.h \
- DerivedSources/WebCore/JSMallocStatistics.cpp \
- DerivedSources/WebCore/JSMallocStatistics.h \
- DerivedSources/WebCore/JSMemoryInfo.cpp \
- DerivedSources/WebCore/JSMemoryInfo.h \
- DerivedSources/WebCore/JSInternals.cpp \
- DerivedSources/WebCore/JSInternals.h \
- DerivedSources/WebCore/JSInternalSettings.cpp \
- DerivedSources/WebCore/JSInternalSettings.h \
- DerivedSources/WebCore/JSInternalSettingsGenerated.cpp \
- DerivedSources/WebCore/JSInternalSettingsGenerated.h \
- DerivedSources/WebCore/JSTypeConversions.cpp \
- DerivedSources/WebCore/JSTypeConversions.h
-
-nodist_libWebCoreInternals_la_SOURCES = $(libwebcoreinternals_built_sources)
-BUILT_SOURCES += $(libwebcoreinternals_built_sources)
-
-libWebCoreInternals_la_CPPFLAGS = \
- $(global_cppflags) \
- $(platform_cppflags) \
- $(platformgtk_cppflags) \
- $(webcore_cppflags) \
- $(webcoregtk_cppflags) \
- $(javascriptcore_cppflags) \
- $(CAIRO_CFLAGS) \
- $(FREETYPE_CFLAGS) \
- $(LIBSOUP_CFLAGS) \
- $(PANGO_CFLAGS) \
- -I$(top_builddir)/DerivedSources \
- -I$(top_builddir)/DerivedSources/WebCore
-
-libWebCoreInternals_la_CXXFLAGS = \
- $(global_cxxflags) \
- $(libWebCoreInternals_la_CFLAGS)
-
-libWebCoreInternals_la_CFLAGS = \
- -fno-strict-aliasing \
- $(javascriptcore_cflags)
-
-# DumpRenderTree
-Programs_DumpRenderTree_CPPFLAGS = \
- $(global_cppflags) \
- -DTOP_LEVEL_DIR=\"${shell pwd}/${srcdir}\" \
- -I$(srcdir)/Tools/DumpRenderTree \
- -I$(srcdir)/Tools/DumpRenderTree/atk \
- -I$(srcdir)/Tools/DumpRenderTree/cairo \
- -I$(srcdir)/Tools/DumpRenderTree/gtk \
- -I$(srcdir)/Source/WebKit/gtk \
- -I$(srcdir)/Source/WebCore/platform/gtk \
- -I$(srcdir)/Source/WebCore/testing/js \
- -I$(top_builddir)/DerivedSources \
- -I$(top_builddir)/Source/WebKit/gtk \
- $(javascriptcore_cppflags) \
- $(platform_cppflags) \
- $(platformgtk_cppflags) \
- $(webcore_cppflags)
-
-if TARGET_X11
-Programs_DumpRenderTree_CPPFLAGS += \
- -DTEST_PLUGIN_DIR=\"${shell pwd}/${top_builddir}/TestNetscapePlugin/.libs\" \
- -DFONTS_CONF_DIR=\"${shell pwd}/${srcdir}/Tools/DumpRenderTree/gtk/fonts\"
-endif
-
-Programs_DumpRenderTree_SOURCES = \
- Source/WebCore/platform/gtk/GtkVersioning.c \
- Tools/DumpRenderTree/DumpRenderTree.h \
- Tools/DumpRenderTree/DumpRenderTreeCommon.cpp \
- Tools/DumpRenderTree/DumpRenderTreePrefix.h \
- Tools/DumpRenderTree/AccessibilityController.cpp \
- Tools/DumpRenderTree/AccessibilityController.h \
- Tools/DumpRenderTree/AccessibilityTextMarker.cpp \
- Tools/DumpRenderTree/AccessibilityTextMarker.h \
- Tools/DumpRenderTree/AccessibilityUIElement.cpp \
- Tools/DumpRenderTree/AccessibilityUIElement.h \
- Tools/DumpRenderTree/CyclicRedundancyCheck.cpp \
- Tools/DumpRenderTree/CyclicRedundancyCheck.h \
- Tools/DumpRenderTree/GCController.cpp \
- Tools/DumpRenderTree/GCController.h \
- Tools/DumpRenderTree/JavaScriptThreading.h \
- Tools/DumpRenderTree/TestRunner.cpp \
- Tools/DumpRenderTree/TestRunner.h \
- Tools/DumpRenderTree/PixelDumpSupport.cpp \
- Tools/DumpRenderTree/PixelDumpSupport.h \
- Tools/DumpRenderTree/WorkQueue.cpp \
- Tools/DumpRenderTree/WorkQueue.h \
- Tools/DumpRenderTree/WorkQueueItem.h \
- Tools/DumpRenderTree/config.h \
- Tools/DumpRenderTree/atk/AccessibilityCallbacks.h \
- Tools/DumpRenderTree/atk/AccessibilityCallbacksAtk.cpp \
- Tools/DumpRenderTree/atk/AccessibilityControllerAtk.cpp \
- Tools/DumpRenderTree/atk/AccessibilityUIElementAtk.cpp \
- Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.cpp \
- Tools/DumpRenderTree/cairo/PixelDumpSupportCairo.h \
- Tools/DumpRenderTree/gtk/AccessibilityControllerGtk.cpp \
- Tools/DumpRenderTree/gtk/AccessibilityUIElementGtk.cpp \
- Tools/DumpRenderTree/gtk/DumpRenderTree.cpp \
- Tools/DumpRenderTree/gtk/DumpRenderTreeGtk.h \
- Tools/DumpRenderTree/gtk/EditingCallbacks.h \
- Tools/DumpRenderTree/gtk/EditingCallbacks.cpp \
- Tools/DumpRenderTree/gtk/EventSender.h \
- Tools/DumpRenderTree/gtk/EventSender.cpp \
- Tools/DumpRenderTree/gtk/GCControllerGtk.cpp \
- Tools/DumpRenderTree/gtk/TestRunnerGtk.cpp \
- Tools/DumpRenderTree/gtk/PixelDumpSupportGtk.cpp \
- Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.cpp \
- Tools/DumpRenderTree/gtk/SelfScrollingWebKitWebView.h \
- Tools/DumpRenderTree/gtk/TextInputController.h \
- Tools/DumpRenderTree/gtk/TextInputController.cpp \
- Tools/DumpRenderTree/gtk/WorkQueueItemGtk.cpp
-
-Programs_DumpRenderTree_CXXFLAGS = \
- $(global_cxxflags) \
- $(Programs_DumpRenderTree_CFLAGS)
-
-Programs_DumpRenderTree_CFLAGS = \
- -fno-strict-aliasing \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(CAIRO_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-
-Programs_DumpRenderTree_LDADD = \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libPlatform.la \
- libPlatformGtk.la \
- libWebCorePlatform.la \
- libWebCoreModules.la \
- libWebCoreInternals.la \
- $(GLOBALDEPS_LIBS) \
- $(CAIRO_LIBS) \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(LIBSOUP_LIBS) \
- $(FREETYPE_LIBS) \
- $(WINMM_LIBS) \
- $(XRENDER_LIBS) \
- $(XT_LIBS)
-
-Programs_DumpRenderTree_LDFLAGS = \
- -no-fast-install \
- -no-install
-
-# ImageDiff
-Programs_ImageDiff_CPPFLAGS = $(global_cppflags)
-
-Programs_ImageDiff_SOURCES = \
- Tools/ImageDiff/gtk/ImageDiff.cpp
-
-Programs_ImageDiff_CXXFLAGS = \
- $(global_cxxflags) \
- $(global_cppflags) \
- $(Programs_ImageDiff_CFLAGS)
-
-Programs_ImageDiff_CFLAGS = \
- -fno-strict-aliasing \
- $(global_cflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(GTK_CFLAGS)
-
-Programs_ImageDiff_LDADD = \
- $(GTK_LIBS)
-
-Programs_ImageDiff_LDFLAGS = \
- -no-fast-install \
- -no-install
-
-# clean target
-CLEANFILES += \
- Programs/DumpRenderTree \
- Programs/GtkLauncher \
- Programs/ImageDiff
-
-if TARGET_X11
-
-# Build TestNetscapePlugin only for X11
-# since we don't support plugins for non-X11 builds at the moment.
-noinst_LTLIBRARIES += \
- TestNetscapePlugin/libtestnetscapeplugin.la
-
-TestNetscapePlugin_libtestnetscapeplugin_la_CPPFLAGS = \
- -I$(srcdir)/Tools/DumpRenderTree \
- -I$(srcdir)/Source/WebCore \
- -I$(srcdir)/Source/WebCore/bridge \
- -I$(srcdir)/Source/WebCore/plugins \
- -I$(srcdir)/Tools/DumpRenderTree/TestNetscapePlugIn \
- -I$(srcdir)/Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders \
- $(global_cppflags) \
- $(javascriptcore_cppflags) \
- -Wno-missing-format-attribute
-
-# For the Gtk port we want to use XP_UNIX both on X11 and Mac
-if !TARGET_WIN32
-TestNetscapePlugin_libtestnetscapeplugin_la_CPPFLAGS += -DXP_UNIX
-endif
-
-# Add MOZ_X11 only for X11 targets
-if TARGET_X11
-TestNetscapePlugin_libtestnetscapeplugin_la_CPPFLAGS += -DMOZ_X11
-endif
-
-TestNetscapePlugin_libtestnetscapeplugin_la_SOURCES = \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/DocumentOpenInDestroyStream.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/EvaluateJSAfterRemovingPluginElement.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/FormValue.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetURLNotifyWithURLThatFailsToLoad.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetURLWithJavaScriptURL.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetURLWithJavaScriptURLDestroyingPlugin.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/GetUserAgentWithNullNPPFromNPPNew.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/LogNPPSetWindow.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPDeallocateCalledBeforeNPShutdown.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPPNewFails.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPPSetWindowCalledDuringDestruction.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeCallsWithNullNPP.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeObjectFromDestroyedPlugin.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NPRuntimeRemoveProperty.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/NullNPPGetValuePointer.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/PassDifferentNPPStruct.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/PluginScriptableNPObjectInvokeDefault.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/PrivateBrowsing.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/ToStringAndValueOfObject.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/Tests/x11/CallInvalidateRectWithNullNPPArgument.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/PluginTest.h \
- Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/PluginObject.h \
- Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/TestObject.h \
- Tools/DumpRenderTree/TestNetscapePlugIn/main.cpp \
- Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npapi.h \
- Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npfunctions.h \
- Tools/DumpRenderTree/TestNetscapePlugIn/unix/ForwardingHeaders/WebKit/npruntime.h
-
-TestNetscapePlugin_libtestnetscapeplugin_la_LDFLAGS = \
- -rpath ${shell pwd}/$(top_builddir)/../unix/TestNetscapePlugin/.libs \
- $(no_undefined) \
- -avoid-version \
- -module
-
-CLEANFILES += TestNetscapePlugin/libtestnetscapeplugin.la
-endif
-
-check-local:
- $(top_srcdir)/Tools/Scripts/run-gtk-tests --timeout=-1
-
-EXTRA_DIST += \
- Tools/gtk/common.py \
- Tools/gtk/generate-feature-defines-files \
- Tools/gtk/generate-gtkdoc \
- Tools/gtk/gtkdoc.py \
- Tools/jhbuild/jhbuildutils.py \
- Tools/Scripts/VCSUtils.pm \
- Tools/Scripts/run-gtk-tests \
- Tools/Scripts/webkit-build-directory \
- Tools/Scripts/webkitdirs.pm
-
-docs: docs-build.stamp
-.PHONY : docs
-DISTCLEANFILES += docs-build.stamp
-
-docs_build_stamp_list = \
- Source/WebKit/gtk/docs/webkitenvironment.xml
-
-if ENABLE_WEBKIT1
-docs_build_stamp_list += \
- libwebkitgtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- Source/WebKit/gtk/docs/webkitgtk-docs.sgml \
- Source/WebKit/gtk/docs/webkitgtk-sections.txt
-endif
-
-if ENABLE_WEBKIT2
-docs_build_stamp_list += \
- libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-docs.sgml \
- Source/WebKit2/UIProcess/API/gtk/docs/webkit2gtk-sections.txt
-endif
-
-docs-build.stamp: $(docs_build_stamp_list)
- CC=$(CC) $(srcdir)/Tools/gtk/generate-gtkdoc
- @touch docs-build.stamp
-
-clean-local: doc-clean-local
-doc-clean-local:
- @rm -f Documentation/webkitgtk/*~ Documentation/webkitgtk*.bak
- @rm -f Documentation/webkit2gtk/*~ Documentation/webkit2gtk*.bak
-distclean-local: doc-distclean-local
-doc-distclean-local:
- @rm -rf Documentation
-maintainer-clean-local: doc-maintainer-clean-local
-doc-maintainer-clean-local: clean
- @rm -rf Documentation/webkitgtk Documentation/webkit2gtk
- -@rmdir Documentation
-
-install-data-local:
-if ENABLE_WEBKIT1
- @installfiles=`echo ./Documentation/webkitgtk/html/*`; \
- if test "$$installfiles" = './Documentation/webkitgtk/html/*'; \
- then echo 1>&2 'No documentation to install' ; \
- else \
- DOC_MODULE_VERSION=`cat ./Documentation/webkitgtk/version.xml`; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(HTML_DIR)/webkitgtk-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(HTML_DIR)/webkitgtk"; \
- fi; \
- $(mkinstalldirs) $${installdir} ; \
- for i in $$installfiles; do \
- echo ' $(INSTALL_DATA) '$$i ; \
- $(INSTALL_DATA) $$i $${installdir}; \
- done; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- mv -f $${installdir}/webkitgtk.devhelp2 \
- $${installdir}/webkitgtk-$(DOC_MODULE_VERSION).devhelp2; \
- fi; \
- fi
-endif
-if ENABLE_WEBKIT2
- @installfiles=`echo ./Documentation/webkit2gtk/html/*`; \
- if test "$$installfiles" = './Documentation/webkit2gtk/html/*'; \
- then echo 1>&2 'No documentation to install' ; \
- else \
- DOC_MODULE_VERSION=`cat ./Documentation/webkit2gtk/version.xml`; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(HTML_DIR)/webkit2gtk-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(HTML_DIR)/webkit2gtk"; \
- fi; \
- $(mkinstalldirs) $${installdir} ; \
- for i in $$installfiles; do \
- echo ' $(INSTALL_DATA) '$$i ; \
- $(INSTALL_DATA) $$i $${installdir}; \
- done; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- mv -f $${installdir}/webkit2gtk.devhelp2 \
- $${installdir}/webkit2gtk-$(DOC_MODULE_VERSION).devhelp2; \
- fi; \
- fi
-endif
- @$(AM_V_GEN) PKG_CONFIG=$(PKG_CONFIG) $(PYTHON) $(srcdir)/Tools/gtk/generate-gtkdoc --rebase --virtual-root=$${DESTDIR}
-
-uninstall-local:
-if ENABLE_WEBKIT1
- @DOC_MODULE_VERSION=`cat ./Documentation/webkitgtk/version.xml`; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(HTML_DIR)/webkitgtk-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(HTML_DIR)/webkitgtk"; \
- fi; \
- rm -rf $${installdir}
-endif
-if ENABLE_WEBKIT2
- @DOC_MODULE_VERSION=`cat ./Documentation/webkit2gtk/version.xml`; \
- if test -n "$(DOC_MODULE_VERSION)"; then \
- installdir="$(DESTDIR)$(HTML_DIR)/webkit2gtk-$(DOC_MODULE_VERSION)"; \
- else \
- installdir="$(DESTDIR)$(HTML_DIR)/webkit2gtk"; \
- fi; \
- rm -rf $${installdir}
-endif
-
-if ENABLE_GTK_DOC
-noinst_DATA += docs-build.stamp
-endif
-
diff --git a/Tools/GtkLauncher/LauncherInspectorWindow.c b/Tools/GtkLauncher/LauncherInspectorWindow.c
deleted file mode 100644
index f07cf7e98..000000000
--- a/Tools/GtkLauncher/LauncherInspectorWindow.c
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "LauncherInspectorWindow.h"
-
-struct _LauncherInspectorWindow {
- GtkWindow parent;
-
- WebKitWebInspector *inspector;
- GtkWidget *webView;
-};
-
-struct _LauncherInspectorWindowClass {
- GtkWindowClass parent;
-};
-
-G_DEFINE_TYPE(LauncherInspectorWindow, launcher_inspector_window, GTK_TYPE_WINDOW)
-
-static void launcherInspectorWindowFinalize(GObject *gObject)
-{
- LauncherInspectorWindow *inspectorWindow = LAUNCHER_INSPECTOR_WINDOW(gObject);
- if (inspectorWindow->inspector)
- g_object_unref(inspectorWindow->inspector);
-
- G_OBJECT_CLASS(launcher_inspector_window_parent_class)->finalize(gObject);
-}
-
-static void launcher_inspector_window_init(LauncherInspectorWindow *inspectorWindow)
-{
- gtk_window_set_title(GTK_WINDOW(inspectorWindow), "Web Inspector");
- gtk_window_set_default_size(GTK_WINDOW(inspectorWindow), 800, 600);
-}
-
-static void launcher_inspector_window_class_init(LauncherInspectorWindowClass *klass)
-{
- GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
- gobjectClass->finalize = launcherInspectorWindowFinalize;
-}
-
-static void inspectedURIChanged(WebKitWebInspector *inspector, GParamSpec *paramSpec, LauncherInspectorWindow *inspectorWindow)
-{
- gchar *title = g_strdup_printf("Web Inspector - %s", webkit_web_inspector_get_inspected_uri(inspector));
- gtk_window_set_title(GTK_WINDOW(inspectorWindow), title);
- g_free(title);
-}
-
-static gboolean showInspectorWindow(WebKitWebInspector *inspector, LauncherInspectorWindow *inspectorWindow)
-{
- gtk_widget_show(GTK_WIDGET(inspectorWindow));
- return TRUE;
-}
-
-static gboolean closeInspectorWindow(WebKitWebInspector *inspector, LauncherInspectorWindow *inspectorWindow)
-{
- gtk_widget_hide(GTK_WIDGET(inspectorWindow));
- return TRUE;
-}
-
-GtkWidget *launcherInspectorWindowNew(WebKitWebInspector *inspector, GtkWindow *parent)
-{
- LauncherInspectorWindow *inspectorWindow = LAUNCHER_INSPECTOR_WINDOW(g_object_new(LAUNCHER_TYPE_INSPECTOR_WINDOW, "type", GTK_WINDOW_TOPLEVEL, NULL));
- inspectorWindow->inspector = g_object_ref(inspector);
- inspectorWindow->webView = webkit_web_view_new();
- gtk_window_set_transient_for(GTK_WINDOW(inspectorWindow), parent);
-
- GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
- gtk_container_add(GTK_CONTAINER(scrolledWindow), inspectorWindow->webView);
- gtk_widget_show(inspectorWindow->webView);
-
- gtk_container_add(GTK_CONTAINER(inspectorWindow), scrolledWindow);
- gtk_widget_show(scrolledWindow);
-
- g_signal_connect(inspector, "notify::inspected-uri", G_CALLBACK(inspectedURIChanged), inspectorWindow);
- g_signal_connect(inspector, "show-window", G_CALLBACK(showInspectorWindow), inspectorWindow);
- g_signal_connect(inspector, "close-window", G_CALLBACK(closeInspectorWindow), inspectorWindow);
-
- return GTK_WIDGET(inspectorWindow);
-}
-
-WebKitWebView *launcherInspectorWindowGetWebView(LauncherInspectorWindow *inspectorWindow)
-{
- g_return_val_if_fail(LAUNCHER_IS_INSPECTOR_WINDOW(inspectorWindow), 0);
-
- return WEBKIT_WEB_VIEW(inspectorWindow->webView);
-}
diff --git a/Tools/GtkLauncher/LauncherInspectorWindow.h b/Tools/GtkLauncher/LauncherInspectorWindow.h
deleted file mode 100644
index f7091d238..000000000
--- a/Tools/GtkLauncher/LauncherInspectorWindow.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 LauncherInspectorWindow_h
-#define LauncherInspectorWindow_h
-
-#include <gtk/gtk.h>
-#include <webkit/webkit.h>
-
-G_BEGIN_DECLS
-
-#define LAUNCHER_TYPE_INSPECTOR_WINDOW (launcher_inspector_window_get_type())
-#define LAUNCHER_INSPECTOR_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindow))
-#define LAUNCHER_IS_INSPECTOR_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), LAUNCHER_TYPE_INSPECTOR_WINDOW))
-#define LAUNCHER_INSPECTOR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindowClass))
-#define LAUNCHER_IS_INSPECTOR_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), LAUNCHER_TYPE_INSPECTOR_WINDOW))
-#define LAUNCHER_INSPECTOR_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), LAUNCHER_TYPE_INSPECTOR_WINDOW, LauncherInspectorWindowClass))
-
-typedef struct _LauncherInspectorWindow LauncherInspectorWindow;
-typedef struct _LauncherInspectorWindowClass LauncherInspectorWindowClass;
-
-GType launcher_inspector_window_get_type(void);
-
-GtkWidget *launcherInspectorWindowNew(WebKitWebInspector *, GtkWindow *parent);
-WebKitWebView *launcherInspectorWindowGetWebView(LauncherInspectorWindow *);
-
-G_END_DECLS
-
-#endif
diff --git a/Tools/GtkLauncher/main.c b/Tools/GtkLauncher/main.c
deleted file mode 100644
index cef7cd399..000000000
--- a/Tools/GtkLauncher/main.c
+++ /dev/null
@@ -1,560 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc.
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- * Copyright (C) 2011 Lukasz Slachciak
- *
- * 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 "autotoolsconfig.h"
-#include "LauncherInspectorWindow.h"
-#include <errno.h>
-#include <gdk/gdkkeysyms.h>
-#ifdef WTF_USE_GSTREAMER
-#include <gst/gst.h>
-#endif
-#include <gtk/gtk.h>
-#include <stdlib.h>
-#include <string.h>
-#include <webkit/webkit.h>
-
-static gint windowCount = 0;
-
-static GtkWidget* createWindow(WebKitWebView** outWebView);
-
-static void activateUriEntryCb(GtkWidget* entry, gpointer data)
-{
- WebKitWebView *webView = g_object_get_data(G_OBJECT(entry), "web-view");
- const gchar* uri = gtk_entry_get_text(GTK_ENTRY(entry));
- g_assert(uri);
- gtk_entry_set_icon_from_pixbuf(GTK_ENTRY(entry), GTK_ENTRY_ICON_PRIMARY, 0);
- webkit_web_view_load_uri(webView, uri);
-}
-
-static void updateTitle(GtkWindow* window, WebKitWebView* webView)
-{
- GString *string = g_string_new(webkit_web_view_get_title(webView));
- gdouble loadProgress = webkit_web_view_get_progress(webView) * 100;
- g_string_append(string, " - WebKit Launcher");
- if (loadProgress < 100)
- g_string_append_printf(string, " (%f%%)", loadProgress);
- gchar *title = g_string_free(string, FALSE);
- gtk_window_set_title(window, title);
- g_free(title);
-}
-
-static void linkHoverCb(WebKitWebView* page, const gchar* title, const gchar* link, GtkStatusbar* statusbar)
-{
- guint statusContextId =
- GPOINTER_TO_UINT(g_object_get_data(G_OBJECT(statusbar), "link-hover-context"));
- /* underflow is allowed */
- gtk_statusbar_pop(statusbar, statusContextId);
- if (link)
- gtk_statusbar_push(statusbar, statusContextId, link);
-}
-
-static void notifyTitleCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* window)
-{
- updateTitle(GTK_WINDOW(window), webView);
-}
-
-static void notifyLoadStatusCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* uriEntry)
-{
- if (webkit_web_view_get_load_status(webView) == WEBKIT_LOAD_COMMITTED) {
- WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
- const gchar *uri = webkit_web_frame_get_uri(frame);
- if (uri)
- gtk_entry_set_text(GTK_ENTRY(uriEntry), uri);
- }
-}
-
-static void notifyProgressCb(WebKitWebView* webView, GParamSpec* pspec, GtkWidget* window)
-{
- updateTitle(GTK_WINDOW(window), webView);
-}
-
-static void destroyCb(GtkWidget* widget, GtkWidget* window)
-{
- if (g_atomic_int_dec_and_test(&windowCount))
- gtk_main_quit();
-}
-
-static void goBackCb(GtkWidget* widget, WebKitWebView* webView)
-{
- webkit_web_view_go_back(webView);
-}
-
-static void goForwardCb(GtkWidget* widget, WebKitWebView* webView)
-{
- webkit_web_view_go_forward(webView);
-}
-
-static void reloadCb(GtkWidget* widget, WebKitWebView* webView)
-{
- webkit_web_view_reload(webView);
-}
-
-static WebKitWebView*
-createWebViewCb(WebKitWebView* webView, WebKitWebFrame* web_frame, GtkWidget* window)
-{
- WebKitWebView *newWebView;
- createWindow(&newWebView);
- webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView));
- return newWebView;
-}
-
-static gboolean webViewReadyCb(WebKitWebView* webView, GtkWidget* window)
-{
- gtk_widget_grab_focus(GTK_WIDGET(webView));
- gtk_widget_show_all(window);
- return FALSE;
-}
-
-static gboolean closeWebViewCb(WebKitWebView* webView, GtkWidget* window)
-{
- gtk_widget_destroy(window);
- return TRUE;
-}
-
-static gboolean webViewFullscreenMessageWindowClose(GtkWidget *dialog)
-{
- if (GTK_IS_WIDGET(dialog))
- gtk_widget_destroy(dialog);
- return FALSE;
-}
-
-static gboolean webViewWindowStateEvent(GtkWidget *widget, GdkEventWindowState *event, WebKitWebView *webView)
-{
- if (event->new_window_state & GDK_WINDOW_STATE_FULLSCREEN) {
- WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
- const gchar *uri = webkit_web_frame_get_uri(frame);
- GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
- if (!gtk_widget_is_toplevel(window) || !GTK_IS_WINDOW(window) || GTK_IS_OFFSCREEN_WINDOW(window))
- window = 0;
-
- GtkWidget *dialog = gtk_message_dialog_new(window ? GTK_WINDOW(window) : 0,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_CLOSE,
- "%s is now full screen. Press ESC or f to exit.", uri);
- g_signal_connect_swapped(dialog, "response", G_CALLBACK(gtk_widget_destroy), dialog);
- g_timeout_add(1500, (GSourceFunc) webViewFullscreenMessageWindowClose, dialog);
- gtk_dialog_run(GTK_DIALOG(dialog));
- }
- return TRUE;
-}
-
-static void hideWidget(GtkWidget* widget, gpointer data)
-{
- if (!GTK_IS_SCROLLED_WINDOW(widget))
- gtk_widget_hide(widget);
-}
-
-static void showWidget(GtkWidget* widget, gpointer data)
-{
- if (!GTK_IS_SCROLLED_WINDOW(widget))
- gtk_widget_show(widget);
-}
-
-static gboolean webViewEnteringFullScreen(WebKitWebView *webView, GObject *element, GtkWidget* vbox)
-{
- WebKitWebFrame *frame = webkit_web_view_get_main_frame(webView);
- const gchar *uri = webkit_web_frame_get_uri(frame);
- GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
- if (!gtk_widget_is_toplevel(window) || !GTK_IS_WINDOW(window) || GTK_IS_OFFSCREEN_WINDOW(window))
- window = 0;
-
- GtkWidget *dialog = gtk_message_dialog_new(window ? GTK_WINDOW(window) : 0,
- GTK_DIALOG_MODAL,
- GTK_MESSAGE_INFO,
- GTK_BUTTONS_YES_NO,
- "Allow full screen display of %s ?", uri);
- gint result = gtk_dialog_run(GTK_DIALOG(dialog));
- if (result == GTK_RESPONSE_YES) {
- gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) hideWidget, NULL);
- gtk_widget_destroy(GTK_WIDGET(dialog));
- return FALSE;
- }
- gtk_widget_destroy(GTK_WIDGET(dialog));
- return TRUE;
-}
-
-static gboolean webViewLeavingFullScreen(WebKitWebView *webView, GObject *element, GtkWidget* vbox)
-{
- GtkWidget *window = gtk_widget_get_toplevel(GTK_WIDGET(webView));
- if (gtk_widget_is_toplevel(window) && GTK_IS_WINDOW(window) && !GTK_IS_OFFSCREEN_WINDOW(window))
- g_signal_handlers_disconnect_by_func(window, G_CALLBACK(webViewWindowStateEvent), webView);
- gtk_container_foreach(GTK_CONTAINER(vbox), (GtkCallback) showWidget, NULL);
- return FALSE;
-}
-
-static void iconLoadedCb(WebKitWebView* webView, const char* iconURI, GtkWidget* uriEntry)
-{
- GdkPixbuf *icon = webkit_web_view_try_get_favicon_pixbuf(webView, 16, 16);
- if (!icon)
- return;
-
- gtk_entry_set_icon_from_pixbuf(GTK_ENTRY(uriEntry), GTK_ENTRY_ICON_PRIMARY, icon);
- g_object_unref(icon);
-}
-
-static GtkWidget *inspectorInspectWebViewCb(WebKitWebInspector *inspector, WebKitWebView *webView, GtkWindow* window)
-{
- GtkWidget *inspectorWindow = launcherInspectorWindowNew(inspector, window);
- return GTK_WIDGET(launcherInspectorWindowGetWebView(LAUNCHER_INSPECTOR_WINDOW(inspectorWindow)));
-}
-
-static GtkWidget* createBrowser(GtkWidget* window, GtkWidget* uriEntry, GtkWidget* statusbar, WebKitWebView* webView, GtkWidget* vbox)
-{
- char *iconDatabasePath;
- GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
- gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolledWindow), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC);
-
- gtk_container_add(GTK_CONTAINER(scrolledWindow), GTK_WIDGET(webView));
-
- iconDatabasePath = g_build_filename(g_get_user_data_dir(), "webkit", "icondatabase", NULL);
- webkit_favicon_database_set_path(webkit_get_favicon_database(), iconDatabasePath);
- g_free(iconDatabasePath);
-
- g_signal_connect(webView, "notify::title", G_CALLBACK(notifyTitleCb), window);
- g_signal_connect(webView, "notify::load-status", G_CALLBACK(notifyLoadStatusCb), uriEntry);
- g_signal_connect(webView, "notify::progress", G_CALLBACK(notifyProgressCb), window);
- g_signal_connect(webView, "icon-loaded", G_CALLBACK(iconLoadedCb), uriEntry);
- g_signal_connect(webView, "hovering-over-link", G_CALLBACK(linkHoverCb), statusbar);
- g_signal_connect(webView, "create-web-view", G_CALLBACK(createWebViewCb), window);
- g_signal_connect(webView, "web-view-ready", G_CALLBACK(webViewReadyCb), window);
- g_signal_connect(webView, "close-web-view", G_CALLBACK(closeWebViewCb), window);
- g_signal_connect(webView, "entering-fullscreen", G_CALLBACK(webViewEnteringFullScreen), vbox);
- g_signal_connect(webView, "leaving-fullscreen", G_CALLBACK(webViewLeavingFullScreen), vbox);
- g_signal_connect(webkit_web_view_get_inspector(webView), "inspect-web-view", G_CALLBACK(inspectorInspectWebViewCb), window);
-
- return scrolledWindow;
-}
-
-static GtkWidget* createStatusbar()
-{
- GtkStatusbar *statusbar = GTK_STATUSBAR(gtk_statusbar_new());
- guint statusContextId = gtk_statusbar_get_context_id(statusbar, "Link Hover");
- g_object_set_data(G_OBJECT(statusbar), "link-hover-context",
- GUINT_TO_POINTER(statusContextId));
-
- return GTK_WIDGET(statusbar);
-}
-
-static GtkWidget* createToolbar(GtkWidget* window, GtkWidget* uriEntry, WebKitWebView* webView)
-{
- GtkWidget *toolbar = gtk_toolbar_new();
-
- gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL);
- gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
-
- GtkToolItem *item;
-
- /* Keyboard accelerators */
- GtkAccelGroup *accelGroup = gtk_accel_group_new();
- gtk_window_add_accel_group(GTK_WINDOW(window), accelGroup);
-
- /* the back button */
- item = gtk_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
- g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(goBackCb), webView);
- 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(goForwardCb), webView);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
- /* The reload button */
- item = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
- g_signal_connect(G_OBJECT(item), "clicked", G_CALLBACK(reloadCb), webView);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
-
- /* The URL entry */
- item = gtk_tool_item_new();
- gtk_tool_item_set_expand(item, TRUE);
- gtk_container_add(GTK_CONTAINER(item), uriEntry);
- g_signal_connect(G_OBJECT(uriEntry), "activate", G_CALLBACK(activateUriEntryCb), NULL);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
- /* The go button */
- g_object_set_data(G_OBJECT(uriEntry), "web-view", webView);
- item = gtk_tool_button_new_from_stock(GTK_STOCK_OK);
- g_signal_connect_swapped(G_OBJECT(item), "clicked", G_CALLBACK(activateUriEntryCb), (gpointer)uriEntry);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
-
- return toolbar;
-}
-
-static GtkWidget* createWindow(WebKitWebView** outWebView)
-{
- WebKitWebView *webView;
- GtkWidget *vbox;
- GtkWidget *window;
- GtkWidget *uriEntry;
- GtkWidget *statusbar;
-
- g_atomic_int_inc(&windowCount);
-
- window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
- gtk_widget_set_name(window, "GtkLauncher");
-
- webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
- uriEntry = gtk_entry_new();
-
-#ifdef GTK_API_VERSION_2
- vbox = gtk_vbox_new(FALSE, 0);
-#else
- vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
-#endif
- statusbar = createStatusbar(webView);
- gtk_box_pack_start(GTK_BOX(vbox), createToolbar(window, uriEntry, webView), FALSE, FALSE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), createBrowser(window, uriEntry, statusbar, webView, vbox), TRUE, TRUE, 0);
- gtk_box_pack_start(GTK_BOX(vbox), statusbar, FALSE, FALSE, 0);
-
- gtk_container_add(GTK_CONTAINER(window), vbox);
-
- g_signal_connect(window, "destroy", G_CALLBACK(destroyCb), NULL);
-
- if (outWebView)
- *outWebView = webView;
-
- return window;
-}
-
-static gchar* filenameToURL(const char* filename)
-{
- if (!g_file_test(filename, G_FILE_TEST_EXISTS))
- return NULL;
-
- GFile *gfile = g_file_new_for_path(filename);
- gchar *fileURL = g_file_get_uri(gfile);
- g_object_unref(gfile);
-
- return fileURL;
-}
-
-static gboolean parseOptionEntryCallback(const gchar *optionNameFull, const gchar *value, WebKitWebSettings *webSettings, GError **error)
-{
- if (strlen(optionNameFull) <= 2) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, "Invalid option %s", optionNameFull);
- return FALSE;
- }
-
- /* We have two -- in option name so remove them. */
- const gchar *optionName = optionNameFull + 2;
- GParamSpec *spec = g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), optionName);
- if (!spec) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, "Cannot find web settings for option %s", optionNameFull);
- return FALSE;
- }
-
- switch (G_PARAM_SPEC_VALUE_TYPE(spec)) {
- case G_TYPE_BOOLEAN: {
- gboolean propertyValue = TRUE;
- if (value && g_ascii_strcasecmp(value, "true") && strcmp(value, "1"))
- propertyValue = FALSE;
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- case G_TYPE_STRING:
- g_object_set(G_OBJECT(webSettings), optionName, value, NULL);
- break;
- case G_TYPE_INT: {
- glong propertyValue;
- gchar *end;
-
- errno = 0;
- propertyValue = g_ascii_strtoll(value, &end, 0);
- if (errno == ERANGE || propertyValue > G_MAXINT || propertyValue < G_MININT) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Integer value '%s' for %s out of range", value, optionNameFull);
- return FALSE;
- }
- if (errno || value == end) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Cannot parse integer value '%s' for %s", value, optionNameFull);
- return FALSE;
- }
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- case G_TYPE_FLOAT: {
- gdouble propertyValue;
- gchar *end;
-
- errno = 0;
- propertyValue = g_ascii_strtod(value, &end);
- if (errno == ERANGE || propertyValue > G_MAXFLOAT || propertyValue < G_MINFLOAT) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Float value '%s' for %s out of range", value, optionNameFull);
- return FALSE;
- }
- if (errno || value == end) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Cannot parse float value '%s' for %s", value, optionNameFull);
- return FALSE;
- }
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- default:
- g_assert_not_reached();
- }
-
- return TRUE;
-}
-
-static gboolean isValidParameterType(GType gParamType)
-{
- return (gParamType == G_TYPE_BOOLEAN || gParamType == G_TYPE_STRING || gParamType == G_TYPE_INT
- || gParamType == G_TYPE_FLOAT);
-}
-
-static GOptionEntry* getOptionEntriesFromWebKitWebSettings(WebKitWebSettings *webSettings)
-{
- GParamSpec **propertySpecs;
- GOptionEntry *optionEntries;
- guint numProperties, numEntries, i;
-
- propertySpecs = g_object_class_list_properties(G_OBJECT_GET_CLASS(webSettings), &numProperties);
- if (!propertySpecs)
- return NULL;
-
- optionEntries = g_new0(GOptionEntry, numProperties + 1);
- numEntries = 0;
- for (i = 0; i < numProperties; i++) {
- GParamSpec *param = propertySpecs[i];
-
- /* Fill in structures only for writable and not construct-only properties. */
- if (!param || !(param->flags & G_PARAM_WRITABLE) || (param->flags & G_PARAM_CONSTRUCT_ONLY))
- continue;
-
- GType gParamType = G_PARAM_SPEC_VALUE_TYPE(param);
- if (!isValidParameterType(gParamType))
- continue;
-
- GOptionEntry *optionEntry = &optionEntries[numEntries++];
- optionEntry->long_name = g_param_spec_get_name(param);
-
- /* There is no easy way to figure our short name for generated option entries.
- optionEntry.short_name=*/
- /* For bool arguments "enable" type make option argument not required. */
- if (gParamType == G_TYPE_BOOLEAN && (strstr(optionEntry->long_name, "enable")))
- optionEntry->flags = G_OPTION_FLAG_OPTIONAL_ARG;
- optionEntry->arg = G_OPTION_ARG_CALLBACK;
- optionEntry->arg_data = parseOptionEntryCallback;
- optionEntry->description = g_param_spec_get_blurb(param);
- optionEntry->arg_description = g_type_name(gParamType);
- }
- g_free(propertySpecs);
-
- return optionEntries;
-}
-
-static gboolean addWebSettingsGroupToContext(GOptionContext *context, WebKitWebSettings* webkitSettings)
-{
- GOptionEntry *optionEntries = getOptionEntriesFromWebKitWebSettings(webkitSettings);
- if (!optionEntries)
- return FALSE;
-
- GOptionGroup *webSettingsGroup = g_option_group_new("websettings",
- "WebKitWebSettings writable properties for default WebKitWebView",
- "WebKitWebSettings properties",
- webkitSettings,
- NULL);
- g_option_group_add_entries(webSettingsGroup, optionEntries);
- g_free(optionEntries);
-
- /* Option context takes ownership of the group. */
- g_option_context_add_group(context, webSettingsGroup);
-
- return TRUE;
-}
-
-int main(int argc, char* argv[])
-{
- WebKitWebSettings *webkitSettings = 0;
- const gchar **uriArguments = 0;
- const GOptionEntry commandLineOptions[] =
- {
- { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, 0, "[URL]" },
- { 0, 0, 0, 0, 0, 0, 0 }
- };
-
- gtk_init(&argc, &argv);
-
- GOptionContext *context = g_option_context_new(0);
- g_option_context_add_main_entries(context, commandLineOptions, 0);
- g_option_context_add_group(context, gtk_get_option_group(TRUE));
-#ifdef WTF_USE_GSTREAMER
- g_option_context_add_group(context, gst_init_get_option_group());
-#endif
- webkitSettings = webkit_web_settings_new();
- g_object_set(webkitSettings, "enable-developer-extras", TRUE, NULL);
- if (!addWebSettingsGroupToContext(context, webkitSettings)) {
- g_object_unref(webkitSettings);
- webkitSettings = 0;
- }
-
- GError *error = 0;
- if (!g_option_context_parse(context, &argc, &argv, &error)) {
- g_printerr("Cannot parse arguments: %s\n", error->message);
- g_error_free(error);
- g_option_context_free(context);
-
- return 1;
- }
- g_option_context_free(context);
-
-#ifdef SOUP_TYPE_PROXY_RESOLVER_DEFAULT
- soup_session_add_feature_by_type(webkit_get_default_session(), SOUP_TYPE_PROXY_RESOLVER_DEFAULT);
-#else
- const char *httpProxy = g_getenv("http_proxy");
- if (httpProxy) {
- SoupURI *proxyUri = soup_uri_new(httpProxy);
- g_object_set(webkit_get_default_session(), SOUP_SESSION_PROXY_URI, proxyUri, NULL);
- soup_uri_free(proxyUri);
- }
-#endif
-
-#ifdef WEBKIT_EXEC_PATH
- g_setenv("WEBKIT_INSPECTOR_PATH", WEBKIT_EXEC_PATH "resources/inspector", FALSE);
-#endif /* WEBKIT_EXEC_PATH */
-
- WebKitWebView *webView;
- GtkWidget *main_window = createWindow(&webView);
-
- if (webkitSettings) {
- webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings);
- g_object_unref(webkitSettings);
- }
-
- const gchar *uri = (uriArguments ? uriArguments[0] : "http://www.google.com/");
- gchar *fileURL = filenameToURL(uri);
-
- webkit_web_view_load_uri(webView, fileURL ? fileURL : uri);
- g_free(fileURL);
-
- gtk_widget_grab_focus(GTK_WIDGET(webView));
- gtk_widget_show_all(main_window);
- gtk_main();
-
- return 0;
-}
diff --git a/Tools/GtkLauncher/simple.svg b/Tools/GtkLauncher/simple.svg
deleted file mode 100644
index 30b13ac5c..000000000
--- a/Tools/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/Tools/GtkLauncher/text.html b/Tools/GtkLauncher/text.html
deleted file mode 100644
index 607df72b6..000000000
--- a/Tools/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/Tools/ImageDiff/CMakeLists.txt b/Tools/ImageDiff/CMakeLists.txt
index 6670fd574..6ce4ed522 100644
--- a/Tools/ImageDiff/CMakeLists.txt
+++ b/Tools/ImageDiff/CMakeLists.txt
@@ -5,13 +5,16 @@ set(IMAGE_DIFF_INCLUDE_DIRECTORIES
${WTF_DIR}
)
+set(IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES "")
+
set(IMAGE_DIFF_LIBRARIES
WTF
)
-INCLUDE_IF_EXISTS(${IMAGE_DIFF_DIR}/Platform${PORT}.cmake)
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
include_directories(${IMAGE_DIFF_INCLUDE_DIRECTORIES})
+include_directories(SYSTEM ${IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES})
add_executable(ImageDiff ${IMAGE_DIFF_SOURCES})
target_link_libraries(ImageDiff ${IMAGE_DIFF_LIBRARIES})
set_target_properties(ImageDiff PROPERTIES FOLDER "Tools")
diff --git a/Tools/ImageDiff/ImageDiff.pro b/Tools/ImageDiff/ImageDiff.pro
deleted file mode 100644
index f3e8a4910..000000000
--- a/Tools/ImageDiff/ImageDiff.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for the ImageDiff binary
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = app
-
-TARGET = ImageDiff
-DESTDIR = $$ROOT_BUILD_DIR/bin
-
-QT = core gui widgets
-
-SOURCES = qt/ImageDiff.cpp
diff --git a/Tools/ImageDiff/PlatformEfl.cmake b/Tools/ImageDiff/PlatformEfl.cmake
deleted file mode 100644
index 68b444428..000000000
--- a/Tools/ImageDiff/PlatformEfl.cmake
+++ /dev/null
@@ -1,19 +0,0 @@
-set(IMAGE_DIFF_SOURCES
- ${IMAGE_DIFF_DIR}/efl/ImageDiff.cpp
-)
-
-list(APPEND IMAGE_DIFF_INCLUDE_DIRECTORIES
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
-)
-
-list(APPEND IMAGE_DIFF_LIBRARIES
- ${ECORE_EVAS_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${EINA_LIBRARIES}
- ${EO_LIBRARIES}
- ${EVAS_LIBRARIES}
-)
diff --git a/Tools/ImageDiff/PlatformQt.cmake b/Tools/ImageDiff/PlatformQt.cmake
new file mode 100644
index 000000000..ce4537ef1
--- /dev/null
+++ b/Tools/ImageDiff/PlatformQt.cmake
@@ -0,0 +1,11 @@
+set(IMAGE_DIFF_SOURCES
+ ${IMAGE_DIFF_DIR}/qt/ImageDiff.cpp
+)
+
+list(APPEND IMAGE_DIFF_SYSTEM_INCLUDE_DIRECTORIES
+ ${Qt5Gui_INCLUDE_DIRS}
+)
+
+set(IMAGE_DIFF_LIBRARIES
+ ${Qt5Gui_LIBRARIES}
+)
diff --git a/Tools/ImageDiff/efl/ImageDiff.cpp b/Tools/ImageDiff/efl/ImageDiff.cpp
deleted file mode 100644
index 129b6ca57..000000000
--- a/Tools/ImageDiff/efl/ImageDiff.cpp
+++ /dev/null
@@ -1,368 +0,0 @@
-/*
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2011 Samsung Electronics
- *
- * 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 <Ecore.h>
-#include <Ecore_Evas.h>
-#include <Evas.h>
-#include <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <cstdlib>
-#include <getopt.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/efl/RefPtrEfl.h>
-
-enum PixelComponent {
- Red,
- Green,
- Blue,
- Alpha
-};
-
-static OwnPtr<Ecore_Evas> gEcoreEvas;
-static double gTolerance = 0;
-
-static void abortWithErrorMessage(const char* errorMessage);
-
-static unsigned char* pixelFromImageData(unsigned char* imageData, int rowStride, int x, int y)
-{
- return imageData + (y * rowStride) + (x << 2);
-}
-
-static Evas_Object* differenceImageFromDifferenceBuffer(Evas* evas, unsigned char* buffer, int width, int height)
-{
- Evas_Object* image = evas_object_image_filled_add(evas);
- if (!image)
- abortWithErrorMessage("could not create difference image");
-
- evas_object_image_size_set(image, width, height);
- evas_object_image_colorspace_set(image, EVAS_COLORSPACE_ARGB8888);
-
- unsigned char* diffPixels = static_cast<unsigned char*>(evas_object_image_data_get(image, EINA_TRUE));
- const int rowStride = evas_object_image_stride_get(image);
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- unsigned char* diffPixel = pixelFromImageData(diffPixels, rowStride, x, y);
- diffPixel[Red] = diffPixel[Green] = diffPixel[Blue] = *buffer++;
- diffPixel[Alpha] = 0xff;
- }
- }
-
- evas_object_image_data_set(image, diffPixels);
-
- return image;
-}
-
-static float computeDistanceBetweenPixelComponents(unsigned char actualComponent, unsigned char baseComponent)
-{
- return (actualComponent - baseComponent) / std::max<float>(255 - baseComponent, baseComponent);
-}
-
-static float computeDistanceBetweenPixelComponents(unsigned char* actualPixel, unsigned char* basePixel, PixelComponent component)
-{
- return computeDistanceBetweenPixelComponents(actualPixel[component], basePixel[component]);
-}
-
-static float calculatePixelDifference(unsigned char* basePixel, unsigned char* actualPixel)
-{
- const float red = computeDistanceBetweenPixelComponents(actualPixel, basePixel, Red);
- const float green = computeDistanceBetweenPixelComponents(actualPixel, basePixel, Green);
- const float blue = computeDistanceBetweenPixelComponents(actualPixel, basePixel, Blue);
- const float alpha = computeDistanceBetweenPixelComponents(actualPixel, basePixel, Alpha);
- return sqrtf(red * red + green * green + blue * blue + alpha * alpha) / 2.0f;
-}
-
-static float calculateDifference(Evas_Object* baselineImage, Evas_Object* actualImage, RefPtr<Evas_Object>& differenceImage)
-{
- int width, height, baselineWidth, baselineHeight;
- evas_object_image_size_get(actualImage, &width, &height);
- evas_object_image_size_get(baselineImage, &baselineWidth, &baselineHeight);
-
- if (width != baselineWidth || height != baselineHeight) {
- printf("Error, test and reference image have different sizes.\n");
- return 100; // Completely different.
- }
-
- OwnArrayPtr<unsigned char> diffBuffer = adoptArrayPtr(new unsigned char[width * height]);
- if (!diffBuffer)
- abortWithErrorMessage("could not create difference buffer");
-
- const int actualRowStride = evas_object_image_stride_get(actualImage);
- const int baseRowStride = evas_object_image_stride_get(baselineImage);
- unsigned numberOfDifferentPixels = 0;
- float totalDistance = 0;
- float maxDistance = 0;
- unsigned char* actualPixels = static_cast<unsigned char*>(evas_object_image_data_get(actualImage, EINA_FALSE));
- unsigned char* basePixels = static_cast<unsigned char*>(evas_object_image_data_get(baselineImage, EINA_FALSE));
- unsigned char* currentDiffPixel = diffBuffer.get();
-
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- unsigned char* actualPixel = pixelFromImageData(actualPixels, actualRowStride, x, y);
- unsigned char* basePixel = pixelFromImageData(basePixels, baseRowStride, x, y);
-
- const float distance = calculatePixelDifference(basePixel, actualPixel);
- *currentDiffPixel++ = static_cast<unsigned char>(distance * 255.0f);
-
- if (distance >= 1.0f / 255.0f) {
- ++numberOfDifferentPixels;
- totalDistance += distance;
- maxDistance = std::max<float>(maxDistance, distance);
- }
- }
- }
-
- // When using evas_object_image_data_get(), a complementary evas_object_data_set() must be
- // issued to balance the reference count, even if the image hasn't been changed.
- evas_object_image_data_set(baselineImage, basePixels);
- evas_object_image_data_set(actualImage, actualPixels);
-
- // 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
- float difference = 0;
- if (numberOfDifferentPixels)
- difference = 100.0f * totalDistance / (height * width);
- if (difference <= gTolerance)
- difference = 0;
- else {
- difference = roundf(difference * 100.0f) / 100.0f;
- difference = std::max(difference, 0.01f); // round to 2 decimal places
-
- differenceImage = adoptRef(differenceImageFromDifferenceBuffer(evas_object_evas_get(baselineImage), diffBuffer.get(), width, height));
- }
-
- return difference;
-}
-
-static int getTemporaryFile(char *fileName, size_t fileNameLength)
-{
- char* tempDirectory = getenv("TMPDIR");
- if (!tempDirectory)
- tempDirectory = getenv("TEMP");
-
- if (tempDirectory)
- snprintf(fileName, fileNameLength, "%s/ImageDiffXXXXXX.png", tempDirectory);
- else {
-#if __linux__
- strcpy(fileName, "/dev/shm/ImageDiffXXXXXX.png");
- const int fileDescriptor = mkstemps(fileName, sizeof(".png") - 1);
- if (fileDescriptor >= 0)
- return fileDescriptor;
-#endif // __linux__
-
- strcpy(fileName, "ImageDiffXXXXXX.png");
- }
-
- return mkstemps(fileName, sizeof(".png") - 1);
-}
-
-static void printImage(Evas_Object* image)
-{
- char fileName[PATH_MAX];
-
- const int tempImageFd = getTemporaryFile(fileName, PATH_MAX);
- if (tempImageFd == -1)
- abortWithErrorMessage("could not create temporary file");
-
- evas_render(evas_object_evas_get(image));
-
- if (evas_object_image_save(image, fileName, 0, 0)) {
- struct stat fileInfo;
- if (!stat(fileName, &fileInfo)) {
- printf("Content-Length: %ld\n", fileInfo.st_size);
- fflush(stdout);
-
- unsigned char buffer[2048];
- ssize_t bytesRead;
- while ((bytesRead = read(tempImageFd, buffer, sizeof(buffer))) > 0) {
- ssize_t bytesWritten = 0;
- ssize_t count;
- do {
- if ((count = write(1, buffer + bytesWritten, bytesRead - bytesWritten)) <= 0)
- break;
- bytesWritten += count;
- } while (bytesWritten < bytesRead);
- }
- }
- }
- close(tempImageFd);
- unlink(fileName);
-}
-
-static void printImageDifferences(Evas_Object* baselineImage, Evas_Object* actualImage)
-{
- RefPtr<Evas_Object> differenceImage;
- const float difference = calculateDifference(baselineImage, actualImage, differenceImage);
-
- if (difference > 0.0f) {
- if (differenceImage)
- printImage(differenceImage.get());
-
- printf("diff: %01.2f%% failed\n", difference);
- } else
- printf("diff: %01.2f%% passed\n", difference);
-}
-
-static void resizeEcoreEvasIfNeeded(Evas_Object* image)
-{
- int newWidth, newHeight;
- evas_object_image_size_get(image, &newWidth, &newHeight);
-
- int currentWidth, currentHeight;
- ecore_evas_screen_geometry_get(gEcoreEvas.get(), 0, 0, &currentWidth, &currentHeight);
-
- if (newWidth > currentWidth)
- currentWidth = newWidth;
- if (newHeight > currentHeight)
- currentHeight = newHeight;
-
- ecore_evas_resize(gEcoreEvas.get(), currentWidth, currentHeight);
-}
-
-static PassRefPtr<Evas_Object> readImageFromStdin(Evas* evas, long imageSize)
-{
- OwnArrayPtr<unsigned char> imageBuffer = adoptArrayPtr(new unsigned char[imageSize]);
- if (!imageBuffer)
- abortWithErrorMessage("cannot allocate image");
-
- const size_t bytesRead = fread(imageBuffer.get(), 1, imageSize, stdin);
- if (!bytesRead)
- return PassRefPtr<Evas_Object>();
-
- Evas_Object* image = evas_object_image_filled_add(evas);
- evas_object_image_colorspace_set(image, EVAS_COLORSPACE_ARGB8888);
- evas_object_image_memfile_set(image, imageBuffer.get(), bytesRead, 0, 0);
-
- resizeEcoreEvasIfNeeded(image);
-
- return adoptRef(image);
-}
-
-static bool parseCommandLineOptions(int argc, char** argv)
-{
- static const option options[] = {
- { "tolerance", required_argument, 0, 't' },
- { 0, 0, 0, 0 }
- };
- int option;
-
- while ((option = getopt_long(argc, (char* const*)argv, "t:", options, 0)) != -1) {
- switch (option) {
- case 't':
- gTolerance = atof(optarg);
- break;
- case '?':
- case ':':
- return false;
- }
- }
-
- return true;
-}
-
-static void shutdownEfl()
-{
- ecore_evas_shutdown();
- ecore_shutdown();
- evas_shutdown();
-}
-
-static void abortWithErrorMessage(const char* errorMessage)
-{
- shutdownEfl();
-
- printf("Error, %s.\n", errorMessage);
- exit(EXIT_FAILURE);
-}
-
-static Evas* initEfl()
-{
- evas_init();
- ecore_init();
- ecore_evas_init();
-
- gEcoreEvas = adoptPtr(ecore_evas_buffer_new(1, 1));
- Evas* evas = ecore_evas_get(gEcoreEvas.get());
- if (!evas)
- abortWithErrorMessage("could not create Ecore_Evas buffer");
-
- return evas;
-}
-
-int main(int argc, char* argv[])
-{
- if (!parseCommandLineOptions(argc, argv))
- return EXIT_FAILURE;
-
- Evas* evas = initEfl();
-
- RefPtr<Evas_Object> actualImage;
- RefPtr<Evas_Object> baselineImage;
-
- char buffer[2048];
- while (fgets(buffer, sizeof(buffer), stdin)) {
- char* contentLengthStart = strstr(buffer, "Content-Length: ");
- if (!contentLengthStart)
- continue;
- long imageSize;
- if (sscanf(contentLengthStart, "Content-Length: %ld", &imageSize) == 1) {
- if (imageSize <= 0)
- abortWithErrorMessage("image size must be specified");
-
- if (!actualImage)
- actualImage = readImageFromStdin(evas, imageSize);
- else if (!baselineImage) {
- baselineImage = readImageFromStdin(evas, imageSize);
-
- printImageDifferences(baselineImage.get(), actualImage.get());
-
- actualImage.clear();
- baselineImage.clear();
- }
- }
-
- fflush(stdout);
- }
-
- gEcoreEvas.clear(); // Make sure ecore_evas_free is called before the EFL are shut down
-
- shutdownEfl();
- return EXIT_SUCCESS;
-}
diff --git a/Tools/ImageDiff/gtk/ImageDiff.cpp b/Tools/ImageDiff/gtk/ImageDiff.cpp
deleted file mode 100644
index 2cb9f3bce..000000000
--- a/Tools/ImageDiff/gtk/ImageDiff.cpp
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 <algorithm>
-#include <cmath>
-#include <cstdio>
-#include <cstring>
-#include <gdk/gdk.h>
-
-using namespace std;
-
-static double tolerance = 0;
-static GOptionEntry commandLineOptionEntries[] =
-{
- { "tolerance", 0, 0, G_OPTION_ARG_DOUBLE, &tolerance, "Percentage difference between images before considering them different", "T" },
- { 0, 0, 0, G_OPTION_ARG_NONE, 0, 0, 0 },
-};
-
-GdkPixbuf* readPixbufFromStdin(long imageSize)
-{
- unsigned char imageBuffer[2048];
- GdkPixbufLoader* loader = gdk_pixbuf_loader_new_with_type("png", 0);
- GError* error = 0;
-
- while (imageSize > 0) {
- size_t bytesToRead = min<int>(imageSize, 2048);
- size_t bytesRead = fread(imageBuffer, 1, bytesToRead, stdin);
-
- if (!gdk_pixbuf_loader_write(loader, reinterpret_cast<const guchar*>(imageBuffer), bytesRead, &error)) {
- g_error_free(error);
- gdk_pixbuf_loader_close(loader, 0);
- g_object_unref(loader);
- return 0;
- }
-
- imageSize -= static_cast<int>(bytesRead);
- }
-
- gdk_pixbuf_loader_close(loader, 0);
- GdkPixbuf* decodedImage = gdk_pixbuf_loader_get_pixbuf(loader);
- g_object_ref(decodedImage);
- return decodedImage;
-}
-
-GdkPixbuf* differenceImageFromDifferenceBuffer(unsigned char* buffer, int width, int height)
-{
- GdkPixbuf* image = gdk_pixbuf_new(GDK_COLORSPACE_RGB, FALSE, 8, width, height);
- if (!image)
- return image;
-
- int rowStride = gdk_pixbuf_get_rowstride(image);
- unsigned char* diffPixels = gdk_pixbuf_get_pixels(image);
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- unsigned char* diffPixel = diffPixels + (y * rowStride) + (x * 3);
- diffPixel[0] = diffPixel[1] = diffPixel[2] = *buffer++;
- }
- }
-
- return image;
-}
-
-float calculateDifference(GdkPixbuf* baselineImage, GdkPixbuf* actualImage, GdkPixbuf** differenceImage)
-{
- int width = gdk_pixbuf_get_width(actualImage);
- int height = gdk_pixbuf_get_height(actualImage);
- int numberOfChannels = gdk_pixbuf_get_n_channels(actualImage);
- if ((width != gdk_pixbuf_get_width(baselineImage))
- || (height != gdk_pixbuf_get_height(baselineImage))
- || (numberOfChannels != gdk_pixbuf_get_n_channels(baselineImage))
- || (gdk_pixbuf_get_has_alpha(actualImage) != gdk_pixbuf_get_has_alpha(baselineImage))) {
- fprintf(stderr, "Error, test and reference image have different properties.\n");
- return 100; // Completely different.
- }
-
- unsigned char* diffBuffer = static_cast<unsigned char*>(malloc(width * height));
- float count = 0;
- float sum = 0;
- float maxDistance = 0;
- int actualRowStride = gdk_pixbuf_get_rowstride(actualImage);
- int baseRowStride = gdk_pixbuf_get_rowstride(baselineImage);
- unsigned char* actualPixels = gdk_pixbuf_get_pixels(actualImage);
- unsigned char* basePixels = gdk_pixbuf_get_pixels(baselineImage);
- unsigned char* currentDiffPixel = diffBuffer;
- for (int x = 0; x < width; x++) {
- for (int y = 0; y < height; y++) {
- unsigned char* actualPixel = actualPixels + (y * actualRowStride) + (x * numberOfChannels);
- unsigned char* basePixel = basePixels + (y * baseRowStride) + (x * numberOfChannels);
-
- float red = (actualPixel[0] - basePixel[0]) / max<float>(255 - basePixel[0], basePixel[0]);
- float green = (actualPixel[1] - basePixel[1]) / max<float>(255 - basePixel[1], basePixel[1]);
- float blue = (actualPixel[2] - basePixel[2]) / max<float>(255 - basePixel[2], basePixel[2]);
- float alpha = (actualPixel[3] - basePixel[3]) / max<float>(255 - basePixel[3], basePixel[3]);
- float distance = sqrtf(red * red + green * green + blue * blue + alpha * alpha) / 2.0f;
-
- *currentDiffPixel++ = (unsigned char)(distance * 255.0f);
-
- if (distance >= 1.0f / 255.0f) {
- count += 1.0f;
- sum += distance;
- maxDistance = max<float>(maxDistance, distance);
- }
- }
- }
-
- // 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
- float difference = 0;
- if (count > 0.0f)
- difference = 100.0f * sum / (height * width);
- if (difference <= tolerance)
- difference = 0;
- else {
- difference = roundf(difference * 100.0f) / 100.0f;
- difference = max(difference, 0.01f); // round to 2 decimal places
- *differenceImage = differenceImageFromDifferenceBuffer(diffBuffer, width, height);
- }
-
- free(diffBuffer);
- return difference;
-}
-
-void printImage(GdkPixbuf* image)
-{
- char* buffer;
- gsize bufferSize;
- GError* error = 0;
- if (!gdk_pixbuf_save_to_buffer(image, &buffer, &bufferSize, "png", &error, NULL)) {
- g_error_free(error);
- return; // Don't bail out, as we can still use the percentage output.
- }
-
- printf("Content-Length: %" G_GSIZE_FORMAT "\n", bufferSize);
- fwrite(buffer, 1, bufferSize, stdout);
-}
-
-void printImageDifferences(GdkPixbuf* baselineImage, GdkPixbuf* actualImage)
-{
- GdkPixbuf* differenceImage = 0;
- float difference = calculateDifference(baselineImage, actualImage, &differenceImage);
- if (difference > 0.0f) {
- if (differenceImage) {
- printImage(differenceImage);
- g_object_unref(differenceImage);
- }
- printf("diff: %01.2f%% failed\n", difference);
- } else
- printf("diff: %01.2f%% passed\n", difference);
-}
-
-int main(int argc, char* argv[])
-{
- GError* error = 0;
- GOptionContext* context = g_option_context_new("- compare two image files, printing their percentage difference and the difference image to stdout");
- g_option_context_add_main_entries(context, commandLineOptionEntries, 0);
- if (!g_option_context_parse(context, &argc, &argv, &error)) {
- printf("Option parsing failed: %s\n", error->message);
- g_error_free(error);
- return 1;
- }
-
- GdkPixbuf* actualImage = 0;
- GdkPixbuf* baselineImage = 0;
- char buffer[2048];
- while (fgets(buffer, sizeof(buffer), stdin)) {
- // Convert the first newline into a NUL character so that strtok doesn't produce it.
- char* newLineCharacter = strchr(buffer, '\n');
- if (newLineCharacter)
- *newLineCharacter = '\0';
-
- if (!strncmp("Content-Length: ", buffer, 16)) {
- gchar** tokens = g_strsplit(buffer, " ", 0);
- if (!tokens[1]) {
- g_strfreev(tokens);
- printf("Error, image size must be specified..\n");
- return 1;
- }
-
- long imageSize = strtol(tokens[1], 0, 10);
- g_strfreev(tokens);
- if (imageSize > 0 && !actualImage) {
- if (!(actualImage = readPixbufFromStdin(imageSize))) {
- printf("Error, could not read actual image.\n");
- return 1;
- }
- } else if (imageSize > 0 && !baselineImage) {
- if (!(baselineImage = readPixbufFromStdin(imageSize))) {
- printf("Error, could not read baseline image.\n");
- return 1;
- }
- } else {
- printf("Error, image size must be specified..\n");
- return 1;
- }
- }
-
- if (actualImage && baselineImage) {
- printImageDifferences(baselineImage, actualImage);
- g_object_unref(actualImage);
- g_object_unref(baselineImage);
- actualImage = 0;
- baselineImage = 0;
- }
-
- fflush(stdout);
- }
-
- return 0;
-}
diff --git a/Tools/ImageDiff/qt/ImageDiff.cpp b/Tools/ImageDiff/qt/ImageDiff.cpp
index 816086aa6..1ec3c3ad1 100644
--- a/Tools/ImageDiff/qt/ImageDiff.cpp
+++ b/Tools/ImageDiff/qt/ImageDiff.cpp
@@ -19,9 +19,9 @@
#include <QtCore/qmath.h>
-#include <QApplication>
#include <QBuffer>
#include <QByteArray>
+#include <QCoreApplication>
#include <QImage>
#include <QStringList>
diff --git a/Tools/MIDLWrapper/MIDLWrapper.cpp b/Tools/MIDLWrapper/MIDLWrapper.cpp
deleted file mode 100644
index 8cb077acb..000000000
--- a/Tools/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"Tools\\vcbin");
- if (!vcbin) {
- fwprintf(stderr, L"Couldn't find Tools\\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/Tools/MIDLWrapper/MIDLWrapper.sln b/Tools/MIDLWrapper/MIDLWrapper.sln
deleted file mode 100644
index b066df539..000000000
--- a/Tools/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/Tools/MIDLWrapper/MIDLWrapper.vcproj b/Tools/MIDLWrapper/MIDLWrapper.vcproj
deleted file mode 100644
index e072f4213..000000000
--- a/Tools/MIDLWrapper/MIDLWrapper.vcproj
+++ /dev/null
@@ -1,201 +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"
- AdditionalOptions="/SAFESEH"
- 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"
- AdditionalOptions="/SAFESEH"
- 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/Tools/Makefile b/Tools/Makefile
deleted file mode 100644
index 57f8b74ff..000000000
--- a/Tools/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-MODULES = DumpRenderTree WebKitTestRunner MiniBrowser ../Source/ThirdParty/gtest/xcode TestWebKitAPI
-
-ifneq (,$(findstring iphoneos,$(SDKROOT)))
- MODULES = ../Source/ThirdParty/gtest/xcode TestWebKitAPI
-else ifneq (,$(findstring iphonesimulator,$(SDKROOT)))
- MODULES = DumpRenderTree ../Source/ThirdParty/gtest/xcode TestWebKitAPI
-endif
-
-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
-
-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/Tools/MiniBrowser/Configurations/Base.xcconfig b/Tools/MiniBrowser/Configurations/Base.xcconfig
deleted file mode 100644
index c801d582f..000000000
--- a/Tools/MiniBrowser/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright (C) 2010 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.
-
-CLANG_CXX_LANGUAGE_STANDARD = gnu++0x;
-CLANG_CXX_LIBRARY = libc++;
-DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
-PREBINDING = NO
-GCC_C_LANGUAGE_STANDARD = gnu99
-GCC_ENABLE_CPP_EXCEPTIONS = NO;
-GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_TREAT_WARNINGS_AS_ERRORS = YES
-GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-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;
-VALID_ARCHS = i386 x86_64;
-
-TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR);
-
-TARGETING_SAME_OS_X_VERSION = $(TARGETING_SAME_OS_X_VERSION_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-TARGETING_SAME_OS_X_VERSION_1070_1070 = YES;
-TARGETING_SAME_OS_X_VERSION_1080_1080 = YES;
-TARGETING_SAME_OS_X_VERSION_1090_1090 = YES;
-
-// Don't build against an SDK unless we're targeting an older OS version.
-SDKROOT = $(SDKROOT_TARGETING_SAME_OS_X_VERSION_$(TARGETING_SAME_OS_X_VERSION));
-SDKROOT_TARGETING_SAME_OS_X_VERSION_ = macosx;
diff --git a/Tools/MiniBrowser/Configurations/DebugRelease.xcconfig b/Tools/MiniBrowser/Configurations/DebugRelease.xcconfig
deleted file mode 100644
index 084cdf91e..000000000
--- a/Tools/MiniBrowser/Configurations/DebugRelease.xcconfig
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright (C) 2010 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 "Base.xcconfig"
-
-ARCHS = $(ARCHS_STANDARD_32_64_BIT);
-
-ONLY_ACTIVE_ARCH = YES;
-
-MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(TARGET_MAC_OS_X_VERSION_MAJOR))
-MACOSX_DEPLOYMENT_TARGET_1070 = 10.7;
-MACOSX_DEPLOYMENT_TARGET_1080 = 10.8;
-MACOSX_DEPLOYMENT_TARGET_1090 = 10.9;
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowser.xcconfig b/Tools/MiniBrowser/Configurations/MiniBrowser.xcconfig
deleted file mode 100644
index cf5ad849a..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowser.xcconfig
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2010 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.
-
-PRODUCT_NAME = MiniBrowser
-GCC_PREFIX_HEADER = mac/MiniBrowser_Prefix.pch
-INFOPLIST_FILE = mac/Info.plist
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserCFLite.vsprops
deleted file mode 100644
index 0882216a5..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserCFLite.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserCFLite"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="shlwapi.lib WebKit$(WebKitDLLConfigSuffix).lib CFLite$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserCommon.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserCommon.vsprops
deleted file mode 100644
index 51275c7a9..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserCommon.vsprops
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserCommon"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ConfigurationBuildDir)\Include&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;"
- UsePrecompiledHeader="2"
- />
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).dll"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops
deleted file mode 100644
index deaa89bc9..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserCoreFoundation.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserCoreFoundation"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="shlwapi.lib WebKit$(WebKitDLLConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib CFNetwork$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserDebug.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserDebug.vsprops
deleted file mode 100644
index 33f4e05dd..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\MiniBrowserCoreFoundation.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops
deleted file mode 100644
index 981e59aa8..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;.\MiniBrowserCoreFoundation.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops
deleted file mode 100644
index 485031283..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_wincairo.vsprops;.\MiniBrowserCFLite.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops
deleted file mode 100644
index 742780daf..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherCommon.vsprops
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherCommon"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="shlwapi.lib"
- OutputFile="$(OutDir)\MiniBrowser$(WebKitConfigSuffix).exe"
- ProgramDatabaseFile="$(TargetDir)$(TargetName)Launcher.pdb"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops
deleted file mode 100644
index 1f30791da..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops
deleted file mode 100644
index ff91b6f2b..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops
deleted file mode 100644
index fb4922093..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops
deleted file mode 100644
index 6a725b5cc..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherProduction.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherProduction"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops
deleted file mode 100644
index 023632587..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops
deleted file mode 100644
index b5919fe1b..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserLauncherReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserLauncherReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\MiniBrowserLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops
deleted file mode 100644
index 165a3aab1..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserProduction.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserProduction"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;.\MiniBrowserCoreFoundation.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops
deleted file mode 100644
index 8bc9a13ca..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\MiniBrowserCoreFoundation.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops b/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops
deleted file mode 100644
index 8253f930d..000000000
--- a/Tools/MiniBrowser/Configurations/MiniBrowserReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="MiniBrowserReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;.\MiniBrowserCFLite.vsprops;.\MiniBrowserCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/MiniBrowser/Configurations/WebBundle.xcconfig b/Tools/MiniBrowser/Configurations/WebBundle.xcconfig
deleted file mode 100644
index 253fdf769..000000000
--- a/Tools/MiniBrowser/Configurations/WebBundle.xcconfig
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright (C) 2010 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.
-
-PRODUCT_NAME = WebBundle
-GCC_PREFIX_HEADER = mac/MiniBrowser_Prefix.pch
-INFOPLIST_FILE = mac/WebBundle/Info.plist
diff --git a/Tools/MiniBrowser/MBToolbarItem.m b/Tools/MiniBrowser/MBToolbarItem.m
deleted file mode 100644
index 56f777891..000000000
--- a/Tools/MiniBrowser/MBToolbarItem.m
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "MBToolbarItem.h"
-
-@implementation MBToolbarItem
-
-- (void)validate
-{
- [self setEnabled:[[self target] validateUserInterfaceItem:self]];
-}
-
-@end
diff --git a/Tools/MiniBrowser/Makefile b/Tools/MiniBrowser/Makefile
deleted file mode 100644
index 61cd4756b..000000000
--- a/Tools/MiniBrowser/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Build MiniBrowser only on SnowLeopard and later.
-
-OSX_VERSION ?= $(shell sw_vers -productVersion | cut -d. -f 2)
-BUILD_MINIBROWSER = $(shell (( $(OSX_VERSION) >= 6 )) && echo "YES" )
-
-ifeq "$(BUILD_MINIBROWSER)" "YES"
-
-SCRIPTS_PATH = ../Scripts
-include ../../Makefile.shared
-
-else
-
-all: ;
-
-debug d development dev develop: ;
-
-release r deployment dep deploy: ;
-
-clean: ;
-
-endif
diff --git a/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj b/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj
deleted file mode 100644
index 225644535..000000000
--- a/Tools/MiniBrowser/MiniBrowser.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,399 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 45;
- objects = {
-
-/* Begin PBXBuildFile section */
- 0F7EB6E3134113C300F4D865 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F7EB6E2134113C300F4D865 /* WebKit.framework */; };
- 0F7EB879134113F200F4D865 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F7EB6E2134113C300F4D865 /* WebKit.framework */; };
- 0FE643A1161FA8940059E3FF /* BrowserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FE643A0161FA8940059E3FF /* BrowserWindowController.m */; };
- 0FE643A4161FAC660059E3FF /* WK1BrowserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FE643A3161FAC660059E3FF /* WK1BrowserWindowController.m */; };
- 256AC3DA0F4B6AC300CF3369 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* AppDelegate.m */; };
- 51E244FA11EFCE07008228D1 /* MBToolbarItem.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E244F911EFCE07008228D1 /* MBToolbarItem.m */; };
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- BC20545E11C96C92008F3375 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */; };
- BC329487116A92E2008635D0 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = BC329486116A92E2008635D0 /* main.m */; };
- BC329498116A941B008635D0 /* WK2BrowserWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = BC329497116A941B008635D0 /* WK2BrowserWindowController.m */; };
- BC72B89511E57E07001EB4EA /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58150DA1D0A300B32029 /* MainMenu.xib */; };
- BC72B89611E57E0F001EB4EA /* BrowserWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = BC3294A2116A9852008635D0 /* BrowserWindow.xib */; };
- BC8FB5A8116AA1FE0080D413 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8FB5A7116AA1FE0080D413 /* WebKit2.framework */; };
- BCBD384011B08A6800E01E54 /* WebBundleMain.m in Sources */ = {isa = PBXBuildFile; fileRef = BCBD383D11B08A3100E01E54 /* WebBundleMain.m */; };
- BCBD384411B08AAD00E01E54 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC8FB5A7116AA1FE0080D413 /* WebKit2.framework */; };
- BCBD38D011B08C0200E01E54 /* WebBundle.bundle in Copy WebBundle */ = {isa = PBXBuildFile; fileRef = BCBD381D11B0898200E01E54 /* WebBundle.bundle */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- BCBD38C511B08BA400E01E54 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = BCBD381C11B0898200E01E54;
- remoteInfo = WebBundle;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- BCBD38CF11B08C0100E01E54 /* Copy WebBundle */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = Contents;
- dstSubfolderSpec = 1;
- files = (
- BCBD38D011B08C0200E01E54 /* WebBundle.bundle in Copy WebBundle */,
- );
- name = "Copy WebBundle";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 0F7EB6E2134113C300F4D865 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 0FE6439F161FA8940059E3FF /* BrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = BrowserWindowController.h; path = mac/BrowserWindowController.h; sourceTree = "<group>"; };
- 0FE643A0161FA8940059E3FF /* BrowserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = BrowserWindowController.m; path = mac/BrowserWindowController.m; sourceTree = "<group>"; };
- 0FE643A2161FAC660059E3FF /* WK1BrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WK1BrowserWindowController.h; path = mac/WK1BrowserWindowController.h; sourceTree = "<group>"; };
- 0FE643A3161FAC660059E3FF /* WK1BrowserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WK1BrowserWindowController.m; path = mac/WK1BrowserWindowController.m; sourceTree = "<group>"; };
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = /System/Library/Frameworks/Cocoa.framework; sourceTree = "<absolute>"; };
- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = MainMenu.xib; path = mac/MainMenu.xib; sourceTree = "<group>"; };
- 256AC3D80F4B6AC300CF3369 /* AppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AppDelegate.h; path = mac/AppDelegate.h; sourceTree = "<group>"; };
- 256AC3D90F4B6AC300CF3369 /* AppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = AppDelegate.m; path = mac/AppDelegate.m; sourceTree = "<group>"; };
- 256AC3F00F4B6AF500CF3369 /* MiniBrowser_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MiniBrowser_Prefix.pch; path = mac/MiniBrowser_Prefix.pch; 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>"; };
- 51E244F811EFCE07008228D1 /* MBToolbarItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MBToolbarItem.h; sourceTree = "<group>"; };
- 51E244F911EFCE07008228D1 /* MBToolbarItem.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MBToolbarItem.m; sourceTree = "<group>"; };
- 8D1107320486CEB800E47090 /* MiniBrowser.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MiniBrowser.app; sourceTree = BUILT_PRODUCTS_DIR; };
- BC329486116A92E2008635D0 /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = main.m; path = mac/main.m; sourceTree = "<group>"; };
- BC329496116A941B008635D0 /* WK2BrowserWindowController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WK2BrowserWindowController.h; path = mac/WK2BrowserWindowController.h; sourceTree = "<group>"; };
- BC329497116A941B008635D0 /* WK2BrowserWindowController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = WK2BrowserWindowController.m; path = mac/WK2BrowserWindowController.m; sourceTree = "<group>"; };
- BC3294A2116A9852008635D0 /* BrowserWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = BrowserWindow.xib; path = mac/BrowserWindow.xib; sourceTree = "<group>"; };
- BC72B89711E57E6E001EB4EA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
- BC72B89A11E57E8A001EB4EA /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; name = Info.plist; path = mac/Info.plist; sourceTree = "<group>"; };
- BC8FB5A7116AA1FE0080D413 /* WebKit2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- BCA8CBDD11E578A000812FB7 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
- BCA8CBDE11E578A000812FB7 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
- BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = MiniBrowser.xcconfig; sourceTree = "<group>"; };
- BCA8CBE011E578A000812FB7 /* WebBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebBundle.xcconfig; sourceTree = "<group>"; };
- BCBD381D11B0898200E01E54 /* WebBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
- BCBD383D11B08A3100E01E54 /* WebBundleMain.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebBundleMain.m; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8D11072E0486CEB800E47090 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
- 0F7EB6E3134113C300F4D865 /* WebKit.framework in Frameworks */,
- BC8FB5A8116AA1FE0080D413 /* WebKit2.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BCBD381B11B0898200E01E54 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC20545E11C96C92008F3375 /* Cocoa.framework in Frameworks */,
- 0F7EB879134113F200F4D865 /* WebKit.framework in Frameworks */,
- BCBD384411B08AAD00E01E54 /* WebKit2.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 080E96DDFE201D6D7F000001 /* MiniBrowser */ = {
- isa = PBXGroup;
- children = (
- 256AC3D80F4B6AC300CF3369 /* AppDelegate.h */,
- 256AC3D90F4B6AC300CF3369 /* AppDelegate.m */,
- 0FE6439F161FA8940059E3FF /* BrowserWindowController.h */,
- 0FE643A0161FA8940059E3FF /* BrowserWindowController.m */,
- BC72B89A11E57E8A001EB4EA /* Info.plist */,
- BC329486116A92E2008635D0 /* main.m */,
- 51E244F811EFCE07008228D1 /* MBToolbarItem.h */,
- 51E244F911EFCE07008228D1 /* MBToolbarItem.m */,
- 0FE643A2161FAC660059E3FF /* WK1BrowserWindowController.h */,
- 0FE643A3161FAC660059E3FF /* WK1BrowserWindowController.m */,
- BC329496116A941B008635D0 /* WK2BrowserWindowController.h */,
- BC329497116A941B008635D0 /* WK2BrowserWindowController.m */,
- );
- name = MiniBrowser;
- sourceTree = "<group>";
- };
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
- 0F7EB6E2134113C300F4D865 /* WebKit.framework */,
- BC8FB5A7116AA1FE0080D413 /* WebKit2.framework */,
- );
- name = "Linked Frameworks";
- sourceTree = "<group>";
- };
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = {
- isa = PBXGroup;
- children = (
- 29B97324FDCFA39411CA2CEA /* AppKit.framework */,
- 29B97325FDCFA39411CA2CEA /* Foundation.framework */,
- );
- name = "Other Frameworks";
- sourceTree = "<group>";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8D1107320486CEB800E47090 /* MiniBrowser.app */,
- BCBD381D11B0898200E01E54 /* WebBundle.bundle */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* MiniBrowser */ = {
- isa = PBXGroup;
- children = (
- 256AC3F00F4B6AF500CF3369 /* MiniBrowser_Prefix.pch */,
- 080E96DDFE201D6D7F000001 /* MiniBrowser */,
- BCBD382B11B089F700E01E54 /* WebBundle */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- BCA8CBDA11E5787800812FB7 /* Configurations */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = MiniBrowser;
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- BC3294A2116A9852008635D0 /* BrowserWindow.xib */,
- 1DDD58150DA1D0A300B32029 /* MainMenu.xib */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
- 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- BCA8CBDA11E5787800812FB7 /* Configurations */ = {
- isa = PBXGroup;
- children = (
- BCA8CBDD11E578A000812FB7 /* Base.xcconfig */,
- BCA8CBDE11E578A000812FB7 /* DebugRelease.xcconfig */,
- BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */,
- BCA8CBE011E578A000812FB7 /* WebBundle.xcconfig */,
- );
- path = Configurations;
- sourceTree = "<group>";
- };
- BCBD382B11B089F700E01E54 /* WebBundle */ = {
- isa = PBXGroup;
- children = (
- BC72B89711E57E6E001EB4EA /* Info.plist */,
- BCBD383D11B08A3100E01E54 /* WebBundleMain.m */,
- );
- name = WebBundle;
- path = mac/WebBundle;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8D1107260486CEB800E47090 /* MiniBrowser */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MiniBrowser" */;
- buildPhases = (
- 8D1107290486CEB800E47090 /* Resources */,
- BCBD38CF11B08C0100E01E54 /* Copy WebBundle */,
- 8D11072C0486CEB800E47090 /* Sources */,
- 8D11072E0486CEB800E47090 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- BCBD38C611B08BA400E01E54 /* PBXTargetDependency */,
- );
- name = MiniBrowser;
- productInstallPath = "$(HOME)/Applications";
- productName = MiniBrowser;
- productReference = 8D1107320486CEB800E47090 /* MiniBrowser.app */;
- productType = "com.apple.product-type.application";
- };
- BCBD381C11B0898200E01E54 /* WebBundle */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = BCBD382111B0898300E01E54 /* Build configuration list for PBXNativeTarget "WebBundle" */;
- buildPhases = (
- BCBD381911B0898200E01E54 /* Resources */,
- BCBD381A11B0898200E01E54 /* Sources */,
- BCBD381B11B0898200E01E54 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = WebBundle;
- productName = WebBundle;
- productReference = BCBD381D11B0898200E01E54 /* WebBundle.bundle */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 29B97313FDCFA39411CA2CEA /* Project object */ = {
- isa = PBXProject;
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MiniBrowser" */;
- compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA /* MiniBrowser */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D1107260486CEB800E47090 /* MiniBrowser */,
- BCBD381C11B0898200E01E54 /* WebBundle */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D1107290486CEB800E47090 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC72B89611E57E0F001EB4EA /* BrowserWindow.xib in Resources */,
- BC72B89511E57E07001EB4EA /* MainMenu.xib in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BCBD381911B0898200E01E54 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8D11072C0486CEB800E47090 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 256AC3DA0F4B6AC300CF3369 /* AppDelegate.m in Sources */,
- 0FE643A1161FA8940059E3FF /* BrowserWindowController.m in Sources */,
- BC329487116A92E2008635D0 /* main.m in Sources */,
- 51E244FA11EFCE07008228D1 /* MBToolbarItem.m in Sources */,
- 0FE643A4161FAC660059E3FF /* WK1BrowserWindowController.m in Sources */,
- BC329498116A941B008635D0 /* WK2BrowserWindowController.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BCBD381A11B0898200E01E54 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BCBD384011B08A6800E01E54 /* WebBundleMain.m in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- BCBD38C611B08BA400E01E54 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = BCBD381C11B0898200E01E54 /* WebBundle */;
- targetProxy = BCBD38C511B08BA400E01E54 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- BCBD381F11B0898300E01E54 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBE011E578A000812FB7 /* WebBundle.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- BCBD382011B0898300E01E54 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBE011E578A000812FB7 /* WebBundle.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- C01FCF4B08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- C01FCF4C08A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBDF11E578A000812FB7 /* MiniBrowser.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBDE11E578A000812FB7 /* DebugRelease.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BCA8CBDE11E578A000812FB7 /* DebugRelease.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- BCBD382111B0898300E01E54 /* Build configuration list for PBXNativeTarget "WebBundle" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- BCBD381F11B0898300E01E54 /* Debug */,
- BCBD382011B0898300E01E54 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4A08A954540054247B /* Build configuration list for PBXNativeTarget "MiniBrowser" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4B08A954540054247B /* Debug */,
- C01FCF4C08A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- C01FCF4E08A954540054247B /* Build configuration list for PBXProject "MiniBrowser" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- C01FCF4F08A954540054247B /* Debug */,
- C01FCF5008A954540054247B /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
-}
diff --git a/Tools/MiniBrowser/MiniBrowserWebProcessPlugIn.h b/Tools/MiniBrowser/MiniBrowserWebProcessPlugIn.h
new file mode 100644
index 000000000..ff16bf5dc
--- /dev/null
+++ b/Tools/MiniBrowser/MiniBrowserWebProcessPlugIn.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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/WKWebProcessPlugIn.h>
+
+#if WK_API_ENABLED
+
+@interface MiniBrowserWebProcessPlugIn : NSObject <WKWebProcessPlugIn>
+
+@end
+
+#endif // WK_API_ENABLED
diff --git a/Tools/MiniBrowser/efl/CMakeLists.txt b/Tools/MiniBrowser/efl/CMakeLists.txt
deleted file mode 100644
index 13180762a..000000000
--- a/Tools/MiniBrowser/efl/CMakeLists.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-set(MiniBrowser_DIR "${TOOLS_DIR}/MiniBrowser/efl")
-
-# Elementary is needed to build MiniBrowser
-find_package(Elementary 1.6)
-
-set(MiniBrowser_SOURCES
- ${TOOLS_DIR}/EWebLauncher/url_utils.c
- ${MiniBrowser_DIR}/main.c
-)
-
-set(MiniBrowser_INCLUDE_DIRECTORIES
- ${CAIRO_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_CON_INCLUDE_DIRS}
- ${ECORE_FILE_INCLUDE_DIRS}
- ${ECORE_IMF_INCLUDE_DIRS}
- ${ECORE_INPUT_INCLUDE_DIRS}
- ${EDJE_INCLUDE_DIRS}
- ${EET_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${DBUS_INCLUDE_DIRS}
- ${E_DBUS_INCLUDE_DIRS}
- ${EFREET_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${ELEMENTARY_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
- ${TOOLS_DIR}/EWebLauncher
- ${WEBKIT2_DIR}/UIProcess/API/efl
- ${WEBKIT2_DIR}
- ${CMAKE_SOURCE_DIR}/Source
-)
-
-set(MiniBrowser_LIBRARIES
- JavaScriptCore
- WebCore
- WebKit2
- ${CAIRO_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${ECORE_EVAS_LIBRARIES}
- ${ECORE_FILE_LIBRARIES}
- ${EDJE_LIBRARIES}
- ${EET_LIBRARIES}
- ${EINA_LIBRARIES}
- ${ELEMENTARY_LIBRARIES}
- ${EO_LIBRARIES}
- ${EVAS_LIBRARIES}
- ${FONTCONFIG_LIBRARIES}
- ${GLIB_LIBRARIES}
- ${GLIB_GTHREAD_LIBRARIES}
- ${LIBSOUP_LIBRARIES}
- ${LIBXML2_LIBRARIES}
- ${LIBXSLT_LIBRARIES} -lm
- ${OPENGL_LIBRARIES}
- ${SQLITE_LIBRARIES}
-)
-
-if (ELEMENTARY_FOUND)
- include_directories(${MiniBrowser_INCLUDE_DIRECTORIES})
- add_executable(MiniBrowser ${MiniBrowser_SOURCES})
- target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
- set_target_properties(MiniBrowser PROPERTIES FOLDER "Tools")
-endif ()
diff --git a/Tools/MiniBrowser/efl/main.c b/Tools/MiniBrowser/efl/main.c
deleted file mode 100644
index 03f9cf8d9..000000000
--- a/Tools/MiniBrowser/efl/main.c
+++ /dev/null
@@ -1,1998 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. All rights reserved.
- *
- * 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 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
- */
-
-#include "EWebKit2.h"
-#include "url_utils.h"
-#include <Ecore.h>
-#include <Ecore_Evas.h>
-#include <Ecore_Getopt.h>
-#include <Eet.h>
-#include <Eina.h>
-#include <Elementary.h>
-#include <Evas.h>
-
-static const char DEFAULT_URL[] = "http://www.google.com/";
-static const char APP_NAME[] = "EFL MiniBrowser";
-static const int TOOL_BAR_ICON_SIZE = 24;
-static const int TOOL_BAR_BUTTON_SIZE = 32;
-static const int SEARCH_FIELD_SIZE = 200;
-static const int SEARCH_BUTTON_SIZE = 25;
-static const int MAX_SEARCH_COUNT = 100;
-static const int DEFAULT_SEARCH_FLAGS = EWK_FIND_OPTIONS_SHOW_HIGHLIGHT | EWK_FIND_OPTIONS_CASE_INSENSITIVE | EWK_FIND_OPTIONS_WRAP_AROUND;
-static const double TOOLTIP_DELAY_SECONDS = 1.0;
-
-#define info(format, args...) \
- do { \
- if (verbose) \
- printf(format"\n", ##args); \
- } while (0)
-
-static int verbose = 1;
-static Eina_List *windows = NULL;
-static char *evas_engine_name = NULL;
-static char *user_agent_string = NULL;
-static Eina_Bool encoding_detector_enabled = EINA_FALSE;
-static Eina_Bool frame_flattening_enabled = EINA_FALSE;
-static Eina_Bool local_storage_enabled = EINA_TRUE;
-static Eina_Bool fullscreen_enabled = EINA_FALSE;
-static Eina_Bool spell_checking_enabled = EINA_FALSE;
-static int window_width = 800;
-static int window_height = 600;
-/* Default value of device_pixel_ratio is '0' so that we don't set custom device
- * scale factor unless it's required by the User. */
-static double device_pixel_ratio = 0;
-static Eina_Bool legacy_behavior_enabled = EINA_FALSE;
-
-#define DEFAULT_ZOOM_LEVEL 5 // Set default zoom level to 1.0 (index 5 on zoomLevels).
-// The zoom values are chosen to be like in Mozilla Firefox 3.
-const static float zoomLevels[] = {0.3, 0.5, 0.67, 0.8, 0.9, 1.0, 1.1, 1.2, 1.33, 1.5, 1.7, 2.0, 2.4, 3.0};
-
-static Eina_Bool
-zoom_level_set(Evas_Object *webview, int level)
-{
- if (level < 0 || level >= sizeof(zoomLevels) / sizeof(float))
- return EINA_FALSE;
-
- Evas_Coord ox, oy, mx, my, cx, cy;
- evas_pointer_canvas_xy_get(evas_object_evas_get(webview), &mx, &my); // Get current mouse position on window.
- evas_object_geometry_get(webview, &ox, &oy, NULL, NULL); // Get webview's position on window.
- cx = mx - ox; // current x position = mouse x position - webview x position
- cy = my - oy; // current y position = mouse y position - webview y position
-
- Eina_Bool result = ewk_view_scale_set(webview, zoomLevels[level], cx, cy);
- return result;
-}
-
-static Ewk_View_Smart_Class *miniBrowserViewSmartClass()
-{
- static Ewk_View_Smart_Class ewkViewClass = EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION("MiniBrowser_View");
- return &ewkViewClass;
-}
-
-typedef struct _Tooltip_Information {
- Ecore_Timer *show_timer;
- Eina_Bool activated;
- Eina_Bool text_set;
- Eina_Bool shown;
-} Tooltip_Information;
-
-typedef struct _Color_Selector {
- Ewk_Color_Picker *ewk_picker;
- Evas_Object *elm_selector;
- Evas_Object *elm_selector_window;
-} Color_Selector;
-
-typedef struct _Browser_Window {
- Evas_Object *elm_window;
- Evas_Object *ewk_view;
- Evas_Object *url_bar;
- Evas_Object *back_button;
- Evas_Object *forward_button;
- struct {
- Evas_Object *elm_menu;
- Ewk_Popup_Menu *ewk_menu;
- } popup;
- struct {
- Evas_Object *search_bar;
- Evas_Object *search_field;
- Evas_Object *backward_button;
- Evas_Object *forward_button;
- } search;
- int current_zoom_level;
- Tooltip_Information tooltip;
- Color_Selector color_selector;
- struct {
- Evas_Object *elm_menu;
- Ewk_Context_Menu *ewk_menu;
- } context_menu;
-} Browser_Window;
-
-typedef struct _File_Selector_Data {
- Browser_Window* parent;
- Evas_Object *elm_window;
- Ewk_File_Chooser_Request *request;
-} File_Selector_Data;
-
-typedef struct _Auth_Data {
- Evas_Object *popup;
- Ewk_Auth_Request *request;
- Evas_Object *username_entry;
- Evas_Object *password_entry;
-} Auth_Data;
-
-static const Ecore_Getopt options = {
- "MiniBrowser",
- "%prog [options] [url]",
- "0.0.1",
- "(C)2012 Samsung Electronics\n (C)2012 Intel Corporation\n",
- "",
- "Test Web Browser using the Enlightenment Foundation Libraries (EFL) port of WebKit2",
- EINA_TRUE, {
- ECORE_GETOPT_STORE_STR
- ('e', "engine", "ecore-evas engine to use."),
- ECORE_GETOPT_STORE_STR
- ('s', "window-size", "window size in following format (width)x(height)."),
- ECORE_GETOPT_STORE_STR
- ('u', "user-agent", "user agent to set."),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('b', "legacy", "Legacy mode", EINA_FALSE),
- ECORE_GETOPT_STORE_DOUBLE
- ('r', "device-pixel-ratio", "Ratio between the CSS units and device pixels."),
- ECORE_GETOPT_CALLBACK_NOARGS
- ('E', "list-engines", "list ecore-evas engines.",
- ecore_getopt_callback_ecore_evas_list_engines, NULL),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('c', "encoding-detector", "enable/disable encoding detector", EINA_FALSE),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('f', "flattening", "frame flattening.", EINA_FALSE),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('l', "local-storage", "HTML5 local storage support (enabled by default).", EINA_TRUE),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('F', "full-screen", "start in full-screen.", EINA_FALSE),
- ECORE_GETOPT_STORE_DEF_BOOL
- ('t', "text-checking", "text spell checking enabled", EINA_TRUE),
- ECORE_GETOPT_STORE_DEF_STR
- ('p', "policy-cookies", "Cookies policy:\n always - always accept,\n never - never accept,\n no-third-party - don't accept third-party cookies.", "no-third-party"),
- ECORE_GETOPT_VERSION
- ('V', "version"),
- ECORE_GETOPT_COPYRIGHT
- ('R', "copyright"),
- ECORE_GETOPT_HELP
- ('h', "help"),
- ECORE_GETOPT_SENTINEL
- }
-};
-
-static Eina_Stringshare *show_file_entry_dialog(Browser_Window *window, const char *label_tag, const char *default_text);
-static Browser_Window *window_create(Evas_Object* opener, const char *url, int width, int height, Eina_Bool view_mode);
-
-static Browser_Window *window_find_with_elm_window(Evas_Object *elm_window)
-{
- Eina_List *l;
- void *data;
-
- if (!elm_window)
- return NULL;
-
- EINA_LIST_FOREACH(windows, l, data) {
- Browser_Window *window = (Browser_Window *)data;
- if (window->elm_window == elm_window)
- return window;
- }
- return NULL;
-}
-
-static Browser_Window *window_find_with_ewk_view(Evas_Object *ewk_view)
-{
- Eina_List *l;
- void *data;
-
- if (!ewk_view)
- return NULL;
-
- EINA_LIST_FOREACH(windows, l, data) {
- Browser_Window *window = (Browser_Window *)data;
- if (window->ewk_view == ewk_view)
- return window;
- }
- return NULL;
-}
-
-static Eina_Bool
-on_tooltip_show(void *user_data)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- window->tooltip.show_timer = NULL;
- elm_object_tooltip_show(window->elm_window);
- window->tooltip.shown = EINA_TRUE;
- return ECORE_CALLBACK_CANCEL;
-}
-
-static void
-window_tooltip_hide(Browser_Window *window)
-{
- if (window->tooltip.show_timer) {
- ecore_timer_del(window->tooltip.show_timer);
- window->tooltip.show_timer = NULL;
- }
-
- if (window->tooltip.shown) {
- elm_object_tooltip_hide(window->elm_window);
- window->tooltip.shown = EINA_FALSE;
- }
-}
-
-static void
-window_tooltip_update(Browser_Window *window)
-{
- window_tooltip_hide(window);
-
- if (window->tooltip.activated && window->tooltip.text_set)
- window->tooltip.show_timer = ecore_timer_add(TOOLTIP_DELAY_SECONDS, on_tooltip_show, window);
-}
-
-static void
-on_mouse_in(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- window->tooltip.activated = EINA_TRUE;
- window_tooltip_update(window);
-}
-
-static void
-on_mouse_move(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
-{
- window_tooltip_update((Browser_Window *)user_data);
-}
-
-static void
-on_mouse_out(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- window->tooltip.activated = EINA_FALSE;
- window_tooltip_update(window);
-}
-
-static void
-on_window_resize(void *user_data, Evas *e, Evas_Object *elm_window, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- if (!window) {
- info("ERROR: window is NULL.");
- return;
- }
-
- if (window->context_menu.ewk_menu)
- ewk_context_menu_hide(window->context_menu.ewk_menu);
- if (window->popup.ewk_menu)
- ewk_popup_menu_close(window->popup.ewk_menu);
- if (window->popup.elm_menu)
- elm_menu_close(window->popup.elm_menu);
-}
-
-static void window_free(Browser_Window *window)
-{
- evas_object_event_callback_del(window->ewk_view, EVAS_CALLBACK_MOUSE_IN, on_mouse_in);
- evas_object_event_callback_del(window->ewk_view, EVAS_CALLBACK_MOUSE_OUT, on_mouse_out);
- evas_object_event_callback_del(window->ewk_view, EVAS_CALLBACK_MOUSE_MOVE, on_mouse_move);
-
- evas_object_event_callback_del(window->elm_window, EVAS_CALLBACK_RESIZE, on_window_resize);
-
- evas_object_del(window->ewk_view);
- /* The elm_win will take care of freeing its children */
- evas_object_del(window->elm_window);
-
- if (window->tooltip.show_timer)
- ecore_timer_del(window->tooltip.show_timer);
-
- if (window->color_selector.elm_selector_window)
- evas_object_del(window->color_selector.elm_selector_window);
-
- free(window);
-}
-
-static void window_close(Browser_Window *window)
-{
- windows = eina_list_remove(windows, window);
- window_free(window);
-
- if (!windows)
- elm_exit();
-}
-
-static void
-search_box_show(Browser_Window *window)
-{
- evas_object_size_hint_min_set(window->search.search_bar, SEARCH_FIELD_SIZE + 2 * SEARCH_BUTTON_SIZE, SEARCH_BUTTON_SIZE);
-
- evas_object_show(window->search.search_bar);
- evas_object_show(window->search.search_field);
- evas_object_show(window->search.backward_button);
- evas_object_show(window->search.forward_button);
-
- /* Grab focus from the view */
- evas_object_focus_set(window->ewk_view, EINA_FALSE);
- elm_object_focus_set(window->search.search_field, EINA_TRUE);
-}
-
-static void
-search_box_hide(Browser_Window *window)
-{
- ewk_view_text_find_highlight_clear(window->ewk_view);
-
- evas_object_size_hint_min_set(window->search.search_bar, SEARCH_FIELD_SIZE + 2 * SEARCH_BUTTON_SIZE, 0);
- evas_object_hide(window->search.search_bar);
- evas_object_hide(window->search.search_field);
- evas_object_hide(window->search.backward_button);
- evas_object_hide(window->search.forward_button);
-
- /* Give focus back to the view */
- elm_object_focus_set(window->search.search_field, EINA_FALSE);
- evas_object_focus_set(window->ewk_view, EINA_TRUE);
-}
-
-static void save_page_contents_callback(Ewk_Page_Contents_Type type, const char *data, void *user_data)
-{
- Eet_File *ef;
- Eina_Stringshare *fileName = (Eina_Stringshare *)user_data;
-
- if (!eina_str_has_extension(fileName, ".mht")) {
- Eina_Strbuf *fileNameWithMht = eina_strbuf_new();
- eina_strbuf_append_printf(fileNameWithMht, "%s.mht", fileName);
- ef = eet_open(eina_strbuf_string_get(fileNameWithMht), EET_FILE_MODE_WRITE);
- info("Saving file to: %s", eina_strbuf_string_get(fileNameWithMht));
- eina_strbuf_free(fileNameWithMht);
- } else {
- ef = eet_open(fileName, EET_FILE_MODE_WRITE);
- info("Saving file to: %s", fileName);
- }
-
- if (!ef) {
- info("ERROR: Could not create File");
- return;
- }
-
- eet_write(ef, "MHTML data", data, strlen(data), 0 /* compress */);
- eet_close(ef);
- info("SUCCESS: saved.");
-
- eina_stringshare_del(fileName);
-}
-
-static void
-on_key_down(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- Evas_Event_Key_Down *ev = (Evas_Event_Key_Down*) event_info;
-
- static const char *encodings[] = {
- "ISO-8859-1",
- "UTF-8",
- NULL
- };
- static int currentEncoding = -1;
- const Evas_Modifier *mod = evas_key_modifier_get(e);
- Eina_Bool ctrlPressed = evas_key_modifier_is_set(mod, "Control");
- Eina_Bool altPressed = evas_key_modifier_is_set(mod, "Alt");
-
- if (!strcmp(ev->key, "Left") && altPressed) {
- info("Back (Alt+Left) was pressed");
- if (!ewk_view_back(ewk_view))
- info("Back ignored: No back history");
- } else if (!strcmp(ev->key, "Right") && altPressed) {
- info("Forward (Alt+Right) was pressed");
- if (!ewk_view_forward(ewk_view))
- info("Forward ignored: No forward history");
- } else if (!strcmp(ev->key, "F3")) {
- currentEncoding = (currentEncoding + 1) % (sizeof(encodings) / sizeof(encodings[0]));
- info("Set encoding (F3) pressed. New encoding to %s", encodings[currentEncoding]);
- ewk_view_custom_encoding_set(ewk_view, encodings[currentEncoding]);
- } else if (!strcmp(ev->key, "F5")) {
- info("Reload (F5) was pressed, reloading.");
- ewk_view_reload(ewk_view);
- } else if (!strcmp(ev->key, "F6")) {
- info("Stop (F6) was pressed, stop loading.");
- ewk_view_stop(ewk_view);
- } else if (!strcmp(ev->key, "F7")) {
- Ewk_Pagination_Mode mode = ewk_view_pagination_mode_get(ewk_view);
- mode = (++mode) % (EWK_PAGINATION_MODE_BOTTOM_TO_TOP + 1);
- if (ewk_view_pagination_mode_set(ewk_view, mode))
- info("Change Pagination Mode (F7) was pressed, changed to: %d", mode);
- else
- info("Change Pagination Mode (F7) was pressed, but NOT changed!");
- } else if (!strcmp(ev->key, "F8")) {
- info("Create souce code window (F8) was pressed.");
- Browser_Window *window = window_create(ewk_view, ewk_view_url_get(ewk_view), 0, 0, EINA_TRUE);
- windows = eina_list_append(windows, window);
- } else if (!strcmp(ev->key, "F11")) {
- info("Fullscreen (F11) was pressed, toggling window/fullscreen.");
- elm_win_fullscreen_set(window->elm_window, !elm_win_fullscreen_get(window->elm_window));
- } else if (!strcmp(ev->key, "n") && ctrlPressed) {
- info("Create new window (Ctrl+n) was pressed.");
- Browser_Window *window = window_create(NULL, DEFAULT_URL, 0, 0, EINA_FALSE);
- // 0 equals default width and height.
- windows = eina_list_append(windows, window);
- } else if (!strcmp(ev->key, "i") && ctrlPressed) {
- info("Show Inspector (Ctrl+i) was pressed.");
- ewk_view_inspector_show(ewk_view);
- } else if (!strcmp(ev->key, "f") && ctrlPressed) {
- info("Show Search Box (Ctrl+f) was pressed.");
- search_box_show(window);
- } else if (!strcmp(ev->key, "Escape")) {
- if (evas_object_visible_get(window->search.search_bar))
- search_box_hide(window);
- else if (elm_win_fullscreen_get(window->elm_window))
- ewk_view_fullscreen_exit(ewk_view);
- } else if (ctrlPressed && (!strcmp(ev->key, "minus") || !strcmp(ev->key, "KP_Subtract"))) {
- if (zoom_level_set(ewk_view, window->current_zoom_level - 1))
- window->current_zoom_level--;
- info("Zoom out (Ctrl + '-') was pressed, zoom level became %.2f", zoomLevels[window->current_zoom_level]);
- } else if (ctrlPressed && (!strcmp(ev->key, "equal") || !strcmp(ev->key, "KP_Add"))) {
- if (zoom_level_set(ewk_view, window->current_zoom_level + 1))
- window->current_zoom_level++;
- info("Zoom in (Ctrl + '+') was pressed, zoom level became %.2f", zoomLevels[window->current_zoom_level]);
- } else if (ctrlPressed && !strcmp(ev->key, "0")) {
- if (zoom_level_set(ewk_view, DEFAULT_ZOOM_LEVEL))
- window->current_zoom_level = DEFAULT_ZOOM_LEVEL;
- info("Zoom to default (Ctrl + '0') was pressed, zoom level became %.2f", zoomLevels[window->current_zoom_level]);
- } else if (ctrlPressed && !strcmp(ev->key, "s")) {
- Eina_Strbuf *default_file = eina_strbuf_new();
- const char *home_path = getenv("HOME");
- const char *title = ewk_view_title_get(window->ewk_view);
- eina_strbuf_append_printf(default_file, "%s/%s.mht", home_path ? home_path : "/home", title ? title : "title");
- info("Pressed (CTRL + S) : Saving Current Page.");
- Eina_Stringshare *save_file_name = show_file_entry_dialog(window, "SAVE", eina_strbuf_string_get(default_file));
- if (!save_file_name)
- return;
- ewk_view_page_contents_get(ewk_view, EWK_PAGE_CONTENTS_TYPE_MHTML, save_page_contents_callback, (void *)save_file_name);
- eina_strbuf_free(default_file);
- } else if (ctrlPressed && !strcmp(ev->key, "l")) {
- const char *home_path = getenv("HOME");
- Eina_Stringshare *open_file_name = show_file_entry_dialog(window, "LOAD", home_path ? home_path : "/home");
- if (!open_file_name)
- return;
- Eina_Strbuf *uri_path = eina_strbuf_new();
- eina_strbuf_append_printf(uri_path, "file://%s", open_file_name);
- info("pressed (CTRL + L) : Loading Page %s", eina_strbuf_string_get(uri_path));
- ewk_view_url_set(ewk_view, eina_strbuf_string_get(uri_path));
- eina_strbuf_free(uri_path);
- eina_stringshare_del(open_file_name);
- }
-}
-
-static void
-view_focus_set(Browser_Window *window, Eina_Bool focus)
-{
- /* We steal focus away from elm's focus model and start to do things
- * manually here, so elm now has no clue what's up. Tell elm that its
- * toplevel widget is to be unfocused so elm gives up the focus */
- elm_object_focus_set(elm_object_top_widget_get(window->elm_window), EINA_FALSE);
- evas_object_focus_set(window->ewk_view, focus);
-}
-
-static void
-on_mouse_down(void *user_data, Evas *e, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- Evas_Event_Mouse_Down *ev = (Evas_Event_Mouse_Down *)event_info;
-
- /* Clear selection from the URL bar */
- elm_entry_select_none(window->url_bar);
-
- if (ev->button == 1)
- view_focus_set(window, EINA_TRUE);
- else if (ev->button == 2)
- view_focus_set(window, !evas_object_focus_get(ewk_view));
-}
-
-static void
-title_set(Evas_Object *elm_window, const char *title, int progress)
-{
- Eina_Strbuf *buffer;
-
- if (!title || !*title) {
- elm_win_title_set(elm_window, APP_NAME);
- return;
- }
-
- buffer = eina_strbuf_new();
- if (progress < 100)
- eina_strbuf_append_printf(buffer, "%s (%d%%) - %s", title, progress, APP_NAME);
- else
- eina_strbuf_append_printf(buffer, "%s - %s", title, APP_NAME);
-
- elm_win_title_set(elm_window, eina_strbuf_string_get(buffer));
- eina_strbuf_free(buffer);
-}
-
-static void
-on_title_changed(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- const char *title = (const char *)event_info;
-
- title_set(window->elm_window, title, 100);
-}
-
-static void
-on_url_changed(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- char *url = elm_entry_utf8_to_markup(ewk_view_url_get(window->ewk_view));
- elm_entry_entry_set(window->url_bar, url);
-
- free(url);
-
- search_box_hide(window);
-}
-
-static void
-on_back_forward_list_changed(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- /* Update navigation buttons state */
- elm_object_disabled_set(window->back_button, !ewk_view_back_possible(ewk_view));
- elm_object_disabled_set(window->forward_button, !ewk_view_forward_possible(ewk_view));
-}
-
-static void
-on_progress(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- double progress = *(double *)event_info;
-
- title_set(window->elm_window, ewk_view_title_get(window->ewk_view), progress * 100);
-}
-
-static void
-on_error(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Eina_Strbuf *buffer;
- const Ewk_Error *error = (const Ewk_Error *)event_info;
-
- /* This is a cancellation, do not display the error page */
- if (ewk_error_cancellation_get(error))
- return;
-
- buffer = eina_strbuf_new();
- eina_strbuf_append_printf(buffer, "<html><body><div style=\"color:#ff0000\">ERROR!</div><br><div>Code: %d<br>Description: %s<br>URL: %s</div></body</html>",
- ewk_error_code_get(error), ewk_error_description_get(error), ewk_error_url_get(error));
-
- ewk_view_html_string_load(ewk_view, eina_strbuf_string_get(buffer), 0, ewk_error_url_get(error));
- eina_strbuf_free(buffer);
-}
-
-static void
-on_download_request(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Ewk_Download_Job *download = (Ewk_Download_Job *)event_info;
-
- // FIXME: The destination folder should be selected by the user but we set it to '/tmp' for now.
- Eina_Strbuf *destination_path = eina_strbuf_new();
-
- const char *suggested_name = ewk_download_job_suggested_filename_get(download);
- if (suggested_name && *suggested_name)
- eina_strbuf_append_printf(destination_path, "/tmp/%s", suggested_name);
- else {
- // Generate a unique file name since no name was suggested.
- char unique_path[] = "/tmp/downloaded-file.XXXXXX";
- eina_strbuf_append(destination_path, mktemp(unique_path));
- }
-
- ewk_download_job_destination_set(download, eina_strbuf_string_get(destination_path));
- info("Downloading: %s", eina_strbuf_string_get(destination_path));
- eina_strbuf_free(destination_path);
-}
-
-static void on_filepicker_parent_deletion(void *user_data, Evas *evas, Evas_Object *elm_window, void *event);
-
-static void close_file_picker(File_Selector_Data *fs_data)
-{
- evas_object_event_callback_del(fs_data->parent->elm_window, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion);
- evas_object_del(fs_data->elm_window);
- ewk_object_unref(fs_data->request);
- free(fs_data);
-}
-
-static void
-on_filepicker_parent_deletion(void *user_data, Evas *evas, Evas_Object *elm_window, void *event)
-{
- close_file_picker((File_Selector_Data *)user_data);
-}
-
-static void
-on_filepicker_deletion(void *user_data, Evas_Object *elm_window, void *event_info)
-{
- close_file_picker((File_Selector_Data *)user_data);
-}
-
-static void
-on_fileselector_done(void *user_data, Evas_Object *file_selector, void *event_info)
-{
- File_Selector_Data *fs_data = (File_Selector_Data *)user_data;
-
- const char *selected = (const char *)event_info;
- if (selected && *selected)
- ewk_file_chooser_request_file_choose(fs_data->request, selected);
-
- close_file_picker(fs_data);
-}
-
-static void
-on_file_chooser_request(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Evas_Object *bg;
- Browser_Window *window = (Browser_Window *)user_data;
- Ewk_File_Chooser_Request *request = (Ewk_File_Chooser_Request *)event_info;
-
- // Show basic file picker which does not currently support multiple files
- // or MIME type filtering.
- Evas_Object *elm_window = elm_win_add(window->elm_window, "file-picker-window", ELM_WIN_DIALOG_BASIC);
- elm_win_title_set(elm_window, "File picker");
- elm_win_modal_set(elm_window, EINA_TRUE);
-
- bg = elm_bg_add(elm_window);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(elm_window, bg);
- evas_object_show(bg);
-
- File_Selector_Data *fs_data = (File_Selector_Data *)malloc(sizeof(File_Selector_Data));
- fs_data->parent = window;
- fs_data->elm_window = elm_window;
- fs_data->request = ewk_object_ref(request);
- evas_object_smart_callback_add(elm_window, "delete,request", on_filepicker_deletion, fs_data);
- evas_object_event_callback_add(window->elm_window, EVAS_CALLBACK_DEL, on_filepicker_parent_deletion, fs_data);
-
- Evas_Object *file_selector = elm_fileselector_add(elm_window);
- const char *home_path = getenv("HOME");
- elm_fileselector_path_set(file_selector, home_path ? home_path : "/home");
- evas_object_size_hint_weight_set(file_selector, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(elm_window, file_selector);
- evas_object_show(file_selector);
-
- evas_object_smart_callback_add(file_selector, "done", on_fileselector_done, fs_data);
-
- evas_object_resize(elm_window, 400, 400);
- elm_win_center(elm_window, EINA_TRUE, EINA_TRUE);
- evas_object_show(elm_window);
-}
-
-static void
-on_download_finished(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Ewk_Download_Job *download = (Ewk_Download_Job *)event_info;
- info("Download finished: %s", ewk_download_job_destination_get(download));
-}
-
-static void
-on_download_failed(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- info("Download failed!");
-}
-
-static void
-on_color_changed(void *data, Evas_Object *obj, void *event_info)
-{
- int r, g, b, a;
-
- elm_colorselector_color_get(obj, &r, &g, &b, &a);
- evas_object_color_set(data, r, g, b, a);
-}
-
-static void
-on_color_item_selected(void *data, Evas_Object *obj, void *event_info)
-{
- int r, g, b, a;
- Elm_Object_Item *color_item = (Elm_Object_Item *)event_info;
-
- elm_colorselector_palette_item_color_get(color_item, &r, &g, &b, &a);
- evas_object_color_set(data, r, g, b, a);
-}
-
-static void
-on_color_picker_ok_clicked(void *data, Evas_Object *obj, void *event_info)
-{
- int r, g, b, a;
- Color_Selector *color_selector = (Color_Selector *)data;
-
- elm_colorselector_color_get(color_selector->elm_selector, &r, &g, &b, &a);
- ewk_color_picker_color_set(color_selector->ewk_picker, r, g, b, a);
-}
-
-static void
-on_color_picker_cancel_clicked(void *data, Evas_Object *obj, void *event_info)
-{
- int r, g, b, a;
-
- ewk_color_picker_color_get(data, &r, &g, &b, &a);
- ewk_color_picker_color_set(data, r, g, b, a);
-}
-
-static Eina_Bool
-on_color_picker_dismiss(Ewk_View_Smart_Data *sd)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- evas_object_del(window->color_selector.elm_selector_window);
- window->color_selector.elm_selector_window = NULL;
-
- return EINA_TRUE;
-}
-
-static Eina_Bool
-on_color_picker_request(Ewk_View_Smart_Data *sd, Ewk_Color_Picker *color_picker)
-{
- int r, g, b, a;
- Evas_Object *background, *rect, *box, *button_box, *rect_frame, *cs_frame, *ok_button, *cancel_button;
-
- Browser_Window *window = window_find_with_ewk_view(sd->self);
- window->color_selector.elm_selector_window = elm_win_add(window->elm_window, "color selector", ELM_WIN_BASIC);
- window->color_selector.ewk_picker = color_picker;
-
- elm_win_title_set(window->color_selector.elm_selector_window, "Color selector");
-
- /* Show color view */
- background = elm_bg_add(window->color_selector.elm_selector_window);
- evas_object_size_hint_weight_set(background, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(window->color_selector.elm_selector_window, background);
- evas_object_show(background);
-
- box = elm_box_add(window->color_selector.elm_selector_window);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(window->color_selector.elm_selector_window, box);
- evas_object_show(box);
-
- rect_frame = elm_frame_add(window->color_selector.elm_selector_window);
- evas_object_size_hint_weight_set(rect_frame, EVAS_HINT_EXPAND, 0.3);
- evas_object_size_hint_align_set(rect_frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_text_set(rect_frame, "Color View");
- elm_box_pack_end(box, rect_frame);
- evas_object_show(rect_frame);
-
- rect = evas_object_rectangle_add(evas_object_evas_get(window->color_selector.elm_selector_window));
- elm_object_content_set(rect_frame, rect);
- ewk_color_picker_color_get(window->color_selector.ewk_picker, &r, &g, &b, &a);
- evas_object_color_set(rect, r, g, b, a);
- evas_object_show(rect);
-
- /* Show color selector */
- cs_frame = elm_frame_add(window->color_selector.elm_selector_window);
- evas_object_size_hint_weight_set(cs_frame, EVAS_HINT_EXPAND, 0.7);
- evas_object_size_hint_align_set(cs_frame, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_text_set(cs_frame, "Color Selector");
- elm_box_pack_end(box, cs_frame);
- evas_object_show(cs_frame);
-
- window->color_selector.elm_selector = elm_colorselector_add(window->color_selector.elm_selector_window);
- elm_object_content_set(cs_frame, window->color_selector.elm_selector);
- evas_object_show(window->color_selector.elm_selector);
-
- /* OK, Cancel Buttons */
- button_box = elm_box_add(window->color_selector.elm_selector_window);
- elm_box_horizontal_set(button_box, EINA_TRUE);
- evas_object_size_hint_min_set(button_box, 200, 50);
- elm_box_pack_end(box, button_box);
- evas_object_show(button_box);
-
- ok_button = elm_button_add(window->color_selector.elm_selector_window);
- elm_object_text_set(ok_button, "OK");
- elm_box_pack_end(button_box, ok_button);
- evas_object_show(ok_button);
-
- cancel_button = elm_button_add(window->color_selector.elm_selector_window);
- elm_object_text_set(cancel_button, "Cancel");
- elm_box_pack_end(button_box, cancel_button);
- evas_object_show(cancel_button);
-
- evas_object_smart_callback_add(ok_button, "clicked", on_color_picker_ok_clicked, &(window->color_selector));
- evas_object_smart_callback_add(cancel_button, "clicked", on_color_picker_cancel_clicked, window->color_selector.ewk_picker);
- evas_object_smart_callback_add(window->color_selector.elm_selector_window, "delete,request", on_color_picker_cancel_clicked, window->color_selector.ewk_picker);
- evas_object_smart_callback_add(window->color_selector.elm_selector, "changed", on_color_changed, rect);
- evas_object_smart_callback_add(window->color_selector.elm_selector, "color,item,selected", on_color_item_selected, rect);
-
- elm_win_center(window->color_selector.elm_selector_window, EINA_TRUE, EINA_TRUE);
- evas_object_resize(window->color_selector.elm_selector_window, 350, 500);
- evas_object_show(window->color_selector.elm_selector_window);
-
- return EINA_TRUE;
-}
-
-static void
-update_view_favicon(Browser_Window *window, Evas_Object *icon)
-{
- /* Remove previous icon from URL bar */
- Evas_Object *old_icon = elm_object_part_content_unset(window->url_bar, "icon");
- if (old_icon) {
- evas_object_unref(old_icon);
- evas_object_del(old_icon);
- }
-
- /* Show new icon in URL bar */
- if (icon) {
- /* Workaround for icon display bug:
- * http://trac.enlightenment.org/e/ticket/1616 */
- evas_object_size_hint_min_set(icon, 48, 24);
- evas_object_image_filled_set(icon, EINA_FALSE);
- evas_object_image_fill_set(icon, 24, 0, 24, 24);
- elm_object_part_content_set(window->url_bar, "icon", icon);
- evas_object_ref(icon);
- }
-}
-
-static void
-on_view_favicon_changed(void *user_data, Evas_Object *ewk_view, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- Evas_Object* favicon = ewk_view_favicon_get(ewk_view);
- update_view_favicon(window, favicon);
-
- if (favicon)
- evas_object_unref(favicon);
-}
-
-static int
-quit(Eina_Bool success, const char *msg)
-{
- ewk_shutdown();
- elm_shutdown();
-
- if (msg)
- fputs(msg, (success) ? stdout : stderr);
-
- if (!success)
- return EXIT_FAILURE;
-
- return EXIT_SUCCESS;
-}
-
-static void
-on_url_bar_activated(void *user_data, Evas_Object *url_bar, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- const char *markup_url = elm_entry_entry_get(url_bar);
- char *user_url = elm_entry_markup_to_utf8(markup_url);
- char *url = url_from_user_input(user_url);
- ewk_view_url_set(window->ewk_view, url);
-
- free(user_url);
- free(url);
-
- /* Give focus back to the view */
- view_focus_set(window, EINA_TRUE);
-}
-
-static void
-on_url_bar_clicked(void *user_data, Evas_Object *url_bar, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- /* Grab focus from the view */
- evas_object_focus_set(window->ewk_view, EINA_FALSE);
- elm_object_focus_set(url_bar, EINA_TRUE);
-}
-
-static void
-on_search_field_aborted(void *user_data, Evas_Object *search_field, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- search_box_hide(window);
-
- /* Give focus back to the view */
- view_focus_set(window, EINA_TRUE);
-}
-
-static void
-on_search_field_activated(void *user_data, Evas_Object *search_field, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- const char *markup_text = elm_entry_entry_get(search_field);
- char *text = elm_entry_markup_to_utf8(markup_text);
- ewk_view_text_find(window->ewk_view, text, DEFAULT_SEARCH_FLAGS, MAX_SEARCH_COUNT);
- free(text);
-
- /* Grab focus from the view */
- evas_object_focus_set(window->ewk_view, EINA_FALSE);
- elm_object_focus_set(search_field, EINA_TRUE);
-}
-
-static void
-on_search_field_clicked(void *user_data, Evas_Object *search_field, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- /* Grab focus from the view */
- evas_object_focus_set(window->ewk_view, EINA_FALSE);
- elm_object_focus_set(search_field, EINA_TRUE);
-}
-
-static void
-on_back_button_clicked(void *user_data, Evas_Object *back_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- ewk_view_back(window->ewk_view);
- /* Update back button state */
- elm_object_disabled_set(back_button, !ewk_view_back_possible(window->ewk_view));
-}
-
-static void
-on_forward_button_clicked(void *user_data, Evas_Object *forward_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- ewk_view_forward(window->ewk_view);
- /* Update forward button state */
- elm_object_disabled_set(forward_button, !ewk_view_forward_possible(window->ewk_view));
-}
-
-static void
-on_search_backward_button_clicked(void *user_data, Evas_Object *search_backward_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- char *text = elm_entry_markup_to_utf8(elm_entry_entry_get(window->search.search_field));
- ewk_view_text_find(window->ewk_view, text, DEFAULT_SEARCH_FLAGS | EWK_FIND_OPTIONS_BACKWARDS, MAX_SEARCH_COUNT);
- free(text);
-}
-
-static void
-on_search_forward_button_clicked(void *user_data, Evas_Object *search_forward_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- char *text = elm_entry_markup_to_utf8(elm_entry_entry_get(window->search.search_field));
- ewk_view_text_find(window->ewk_view, text, DEFAULT_SEARCH_FLAGS, MAX_SEARCH_COUNT);
- free(text);
-}
-
-static void
-on_refresh_button_clicked(void *user_data, Evas_Object *refresh_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- Evas *evas = evas_object_evas_get(refresh_button);
- Eina_Bool ctrlPressed = evas_key_modifier_is_set(evas_key_modifier_get(evas), "Control");
- if (ctrlPressed) {
- info("Reloading and bypassing cache...");
- ewk_view_reload_bypass_cache(window->ewk_view);
- } else {
- info("Reloading...");
- ewk_view_reload(window->ewk_view);
- }
-}
-
-static void
-quit_event_loop(void *user_data, Evas_Object *obj, void *event_info)
-{
- ecore_main_loop_quit();
-}
-
-static void
-on_ok_clicked(void *user_data, Evas_Object *obj, void *event_info)
-{
- Eina_Bool *confirmed = (Eina_Bool *)user_data;
- *confirmed = EINA_TRUE;
-
- ecore_main_loop_quit();
-}
-
-static Eina_Stringshare *
-show_file_entry_dialog(Browser_Window *window, const char *label_tag, const char *default_text)
-{
- Evas_Object *file_popup = elm_popup_add(window->elm_window);
- evas_object_size_hint_weight_set(file_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_show(file_popup);
-
- Evas_Object *vbox = elm_box_add(file_popup);
- evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_content_set(file_popup, vbox);
- evas_object_show(vbox);
-
- Evas_Object *label = elm_label_add(window->elm_window);
- elm_object_text_set(label, label_tag);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(label, EVAS_HINT_FILL, 0.5);
- evas_object_color_set(label, 23, 45, 67, 142);
- elm_box_pack_end(vbox, label);
- evas_object_show(label);
-
- Evas_Object *fs_entry = elm_fileselector_entry_add(file_popup);
- elm_fileselector_entry_is_save_set(fs_entry, EINA_TRUE);
- evas_object_size_hint_align_set(fs_entry, EVAS_HINT_FILL, 0);
- elm_fileselector_entry_path_set(fs_entry, default_text);
- elm_object_text_set(fs_entry, "FileChooser");
- elm_box_pack_end(vbox, fs_entry);
- evas_object_show(fs_entry);
-
- Evas_Object *hbox = elm_box_add(file_popup);
- evas_object_size_hint_weight_set(hbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_box_horizontal_set(hbox, EINA_TRUE);
- evas_object_size_hint_align_set(hbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(vbox, hbox);
- evas_object_show(hbox);
-
- Eina_Bool ok = EINA_FALSE;
- Evas_Object *ok_button = elm_button_add(file_popup);
- elm_object_text_set(ok_button, "OK");
- evas_object_smart_callback_add(ok_button, "clicked", on_ok_clicked, &ok);
- elm_box_pack_end(hbox, ok_button);
- evas_object_show(ok_button);
-
- Evas_Object *cancel_button = elm_button_add(file_popup);
- elm_object_text_set(cancel_button, "Cancel");
- evas_object_smart_callback_add(cancel_button, "clicked", quit_event_loop, NULL);
- elm_box_pack_end(hbox, cancel_button);
- evas_object_show(cancel_button);
-
- ecore_main_loop_begin();
-
- Eina_Stringshare *file_path = ok ? eina_stringshare_add(elm_fileselector_entry_path_get(fs_entry)) : NULL;
- evas_object_del(file_popup);
- return file_path;
-}
-
-static void
-on_javascript_alert(Ewk_View_Smart_Data *smartData, const char *message)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
-
- Evas_Object *alert_popup = elm_popup_add(window->elm_window);
- evas_object_size_hint_weight_set(alert_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(alert_popup, message);
- elm_object_part_text_set(alert_popup, "title,text", "Alert");
-
- /* Popup buttons */
- Evas_Object *button = elm_button_add(alert_popup);
- elm_object_text_set(button, "OK");
- elm_object_part_content_set(alert_popup, "button1", button);
- evas_object_smart_callback_add(button, "clicked", quit_event_loop, NULL);
- elm_object_focus_set(button, EINA_TRUE);
- evas_object_show(alert_popup);
-
- /* Make modal */
- ecore_main_loop_begin();
-
- evas_object_del(alert_popup);
-}
-
-static Eina_Bool
-on_javascript_confirm(Ewk_View_Smart_Data *smartData, const char *message)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
-
- Eina_Bool ok = EINA_FALSE;
-
- Evas_Object *confirm_popup = elm_popup_add(window->elm_window);
- evas_object_size_hint_weight_set(confirm_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_text_set(confirm_popup, message);
- elm_object_part_text_set(confirm_popup, "title,text", "Confirmation");
-
- /* Popup buttons */
- Evas_Object *cancel_button = elm_button_add(confirm_popup);
- elm_object_text_set(cancel_button, "Cancel");
- elm_object_part_content_set(confirm_popup, "button1", cancel_button);
- evas_object_smart_callback_add(cancel_button, "clicked", quit_event_loop, NULL);
- Evas_Object *ok_button = elm_button_add(confirm_popup);
- elm_object_text_set(ok_button, "OK");
- elm_object_part_content_set(confirm_popup, "button2", ok_button);
- evas_object_smart_callback_add(ok_button, "clicked", on_ok_clicked, &ok);
- elm_object_focus_set(ok_button, EINA_TRUE);
- evas_object_show(confirm_popup);
-
- /* Make modal */
- ecore_main_loop_begin();
-
- evas_object_del(confirm_popup);
-
- return ok;
-}
-
-static const char *
-on_javascript_prompt(Ewk_View_Smart_Data *smartData, const char *message, const char *default_value)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
-
- Eina_Bool ok = EINA_FALSE;
-
- Evas_Object *prompt_popup = elm_popup_add(window->elm_window);
- evas_object_size_hint_weight_set(prompt_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_part_text_set(prompt_popup, "title,text", "Prompt");
-
- /* Popup Content */
- Evas_Object *box = elm_box_add(window->elm_window);
- elm_box_padding_set(box, 0, 4);
- evas_object_size_hint_weight_set(box, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(box, EVAS_HINT_FILL, EVAS_HINT_FILL);
- evas_object_show(box);
-
- Evas_Object *prompt = elm_label_add(window->elm_window);
- elm_object_text_set(prompt, message);
- evas_object_size_hint_weight_set(prompt, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(prompt, EVAS_HINT_FILL, 0.5);
- elm_box_pack_end(box, prompt);
- evas_object_show(prompt);
-
- Evas_Object *entry = elm_entry_add(window->elm_window);
- elm_entry_scrollable_set(entry, EINA_TRUE);
- elm_entry_single_line_set(entry, EINA_TRUE);
- elm_entry_text_style_user_push(entry, "DEFAULT='font_size=18'");
- elm_entry_entry_set(entry, default_value ? default_value : "");
- elm_entry_select_all(entry);
- evas_object_size_hint_weight_set(entry, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(entry, EVAS_HINT_FILL, 0.5);
- elm_box_pack_end(box, entry);
- elm_object_focus_set(entry, EINA_TRUE);
- evas_object_show(entry);
-
- elm_object_content_set(prompt_popup, box);
-
- /* Popup buttons */
- Evas_Object *cancel_button = elm_button_add(prompt_popup);
- elm_object_text_set(cancel_button, "Cancel");
- elm_object_part_content_set(prompt_popup, "button1", cancel_button);
- evas_object_smart_callback_add(cancel_button, "clicked", quit_event_loop, NULL);
- Evas_Object *ok_button = elm_button_add(prompt_popup);
- elm_object_text_set(ok_button, "OK");
- elm_object_part_content_set(prompt_popup, "button2", ok_button);
- evas_object_smart_callback_add(ok_button, "clicked", on_ok_clicked, &ok);
- evas_object_show(prompt_popup);
-
- /* Make modal */
- ecore_main_loop_begin();
-
- /* The return string need to be stringshared */
- const char *prompt_text = ok ? eina_stringshare_add(elm_entry_entry_get(entry)) : NULL;
- evas_object_del(prompt_popup);
-
- return prompt_text;
-}
-
-static void
-on_popup_menu_discarded(void *user_data, Evas_Object *obj, void *event_info)
-{
- // The user clicked outside the menu to discard it.
- info("Popup menu was discarded.");
- Browser_Window *window = (Browser_Window *)user_data;
- ewk_popup_menu_close(window->popup.ewk_menu);
-}
-
-static void
-on_popup_menu_item_clicked(void *user_data, Evas_Object *obj, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- Elm_Object_Item *item = (Elm_Object_Item *)event_info;
-
- info("Selected popup menu index: %u", elm_menu_item_index_get(item));
- ewk_popup_menu_selected_index_set(window->popup.ewk_menu, elm_menu_item_index_get(item));
-
- // Close popup menu.
- ewk_popup_menu_close(window->popup.ewk_menu);
-}
-
-static void
-popup_menu_populate(Evas_Object *elm_menu, Ewk_Popup_Menu *ewk_menu, void *user_data)
-{
- const Eina_List* ewk_items = ewk_popup_menu_items_get(ewk_menu);
-
- void *data;
- const Eina_List *l;
- EINA_LIST_FOREACH(ewk_items, l, data) {
- Ewk_Popup_Menu_Item *ewk_item = (Ewk_Popup_Menu_Item *)data;
- switch (ewk_popup_menu_item_type_get(ewk_item)) {
- case EWK_POPUP_MENU_SEPARATOR:
- elm_menu_item_separator_add(elm_menu, NULL);
- break;
- case EWK_POPUP_MENU_ITEM:
- if (ewk_popup_menu_item_is_label_get(ewk_item)) {
- Elm_Object_Item *item = elm_menu_item_add(elm_menu, NULL, NULL, ewk_popup_menu_item_text_get(ewk_item), NULL, NULL);
- elm_object_item_disabled_set(item, EINA_TRUE);
- } else {
- Elm_Object_Item *item = elm_menu_item_add(elm_menu, NULL, NULL, ewk_popup_menu_item_text_get(ewk_item), on_popup_menu_item_clicked, user_data);
- const char *tooltip_text = ewk_popup_menu_item_tooltip_get(ewk_item);
- if (tooltip_text && tooltip_text[0] != '\0')
- elm_object_item_tooltip_text_set(item, tooltip_text);
- elm_object_item_disabled_set(item, !ewk_popup_menu_item_enabled_get(ewk_item));
- elm_menu_item_selected_set(item, ewk_popup_menu_item_selected_get(ewk_item));
- }
- break;
- default:
- info("Unrecognized popup menu item type!");
- break;
- }
- }
-}
-
-static Eina_Bool
-on_popup_menu_show(Ewk_View_Smart_Data *smartData, Eina_Rectangle rect, Ewk_Text_Direction text_direction, double page_scale_factor, Ewk_Popup_Menu *ewk_menu)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
-
- if (window->popup.elm_menu)
- evas_object_del(window->popup.elm_menu);
-
- window->popup.elm_menu = elm_menu_add(window->elm_window);
- window->popup.ewk_menu = ewk_menu;
- evas_object_smart_callback_add(window->popup.elm_menu, "clicked", on_popup_menu_discarded, window);
-
- popup_menu_populate(window->popup.elm_menu, ewk_menu, window);
-
- info("Showing popup menu at (%d, %d)", rect.x, rect.y);
- elm_menu_move(window->popup.elm_menu, rect.x, rect.y);
- evas_object_show(window->popup.elm_menu);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool
-on_popup_menu_hide(Ewk_View_Smart_Data *smartData)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
-
- if (!window->popup.elm_menu)
- return EINA_FALSE;
-
- elm_menu_close(window->popup.elm_menu);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool on_window_geometry_get(Ewk_View_Smart_Data *sd, Evas_Coord *x, Evas_Coord *y, Evas_Coord *width, Evas_Coord *height)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- evas_object_geometry_get(window->elm_window, x, y, width, height);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool on_window_geometry_set(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord width, Evas_Coord height)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- evas_object_move(window->elm_window, x, y);
- evas_object_resize(window->elm_window, width, height);
-
- return EINA_TRUE;
-}
-
-typedef struct {
- Evas_Object *ewk_view;
- Evas_Object *permission_popup;
-} PermissionData;
-
-static void
-on_fullscreen_accept(void *user_data, Evas_Object *obj, void *event_info)
-{
- PermissionData *permission_data = (PermissionData *)user_data;
-
- evas_object_del(permission_data->permission_popup);
- evas_object_focus_set(permission_data->ewk_view, EINA_TRUE);
- free(permission_data);
-}
-
-static void
-on_fullscreen_deny(void *user_data, Evas_Object *obj, void *event_info)
-{
- PermissionData *permission_data = (PermissionData *)user_data;
-
- ewk_view_fullscreen_exit(permission_data->ewk_view);
- evas_object_del(permission_data->permission_popup);
- evas_object_focus_set(permission_data->ewk_view, EINA_TRUE);
- free(permission_data);
-}
-
-static Eina_Bool on_fullscreen_enter(Ewk_View_Smart_Data *sd, Ewk_Security_Origin *origin)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- /* Go fullscreen */
- elm_win_fullscreen_set(window->elm_window, EINA_TRUE);
-
- /* Show user popup */
- Evas_Object *permission_popup = elm_popup_add(window->elm_window);
- evas_object_size_hint_weight_set(permission_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
-
- Eina_Strbuf *message = eina_strbuf_new();
- eina_strbuf_append_printf(message, "%s is now fullscreen.<br>Press ESC at any time to exit fullscreen.<br>Allow fullscreen?", ewk_security_origin_host_get(origin));
- elm_object_text_set(permission_popup, eina_strbuf_string_get(message));
- eina_strbuf_free(message);
- elm_object_part_text_set(permission_popup, "title,text", "Fullscreen Permission");
-
- /* Popup buttons */
- PermissionData *permission_data = (PermissionData *)malloc(sizeof(PermissionData));
- permission_data->ewk_view = window->ewk_view;
- permission_data->permission_popup = permission_popup;
- Evas_Object *accept_button = elm_button_add(permission_popup);
- elm_object_text_set(accept_button, "Accept");
- elm_object_part_content_set(permission_popup, "button1", accept_button);
- evas_object_smart_callback_add(accept_button, "clicked", on_fullscreen_accept, permission_data);
-
- Evas_Object *deny_button = elm_button_add(permission_popup);
- elm_object_text_set(deny_button, "Deny");
- elm_object_part_content_set(permission_popup, "button2", deny_button);
- evas_object_smart_callback_add(deny_button, "clicked", on_fullscreen_deny, permission_data);
-
- evas_object_show(permission_popup);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool on_fullscreen_exit(Ewk_View_Smart_Data *sd)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- elm_win_fullscreen_set(window->elm_window, EINA_FALSE);
-
- return EINA_TRUE;
-}
-
-static Evas_Object *
-on_window_create(Ewk_View_Smart_Data *smartData, const char *url, const Ewk_Window_Features *window_features)
-{
- int x = 0;
- int y = 0;
- int width = 0;
- int height = 0;
-
- ewk_window_features_geometry_get(window_features, &x, &y, &width, &height);
-
- if (!width)
- width = window_width;
-
- if (!height)
- height = window_height;
-
- Browser_Window *window = window_create(smartData->self, url, width, height, EINA_FALSE);
- Evas_Object *new_view = window->ewk_view;
-
- windows = eina_list_append(windows, window);
-
- info("minibrowser: location(%d,%d) size=(%d,%d) url=%s", x, y, width, height, url);
-
- return new_view;
-}
-
-static void
-on_window_close(Ewk_View_Smart_Data *smartData)
-{
- Browser_Window *window = window_find_with_ewk_view(smartData->self);
- window_close(window);
-}
-
-static void
-context_menu_item_selected_cb(void *data, Evas_Object *obj, void *event_info)
-{
- if (!data) {
- info("ERROR: context menu callback data is NULL.");
- return;
- }
-
- Ewk_Context_Menu_Item *ewk_item = (Ewk_Context_Menu_Item *)data;
- info("Selected context menu item: %s.", ewk_context_menu_item_title_get(ewk_item));
- ewk_context_menu_item_select(ewk_context_menu_item_parent_menu_get(ewk_item), ewk_item);
- ewk_context_menu_hide(ewk_context_menu_item_parent_menu_get(ewk_item));
-}
-
-static void
-context_menu_populate(Evas_Object* context_menu, Ewk_Context_Menu *ewk_menu, Elm_Object_Item *parent_item)
-{
- if (!context_menu || !ewk_menu) {
- info("ERROR: necessary objects are NULL.");
- return;
- }
-
- const Eina_List *list = ewk_context_menu_items_get(ewk_menu);
- const Eina_List *l;
- void *data;
-
- Ewk_Context_Menu_Item *ewk_item;
- Elm_Object_Item *elm_menu_item;
- Evas_Object *elm_check_item;
-
- EINA_LIST_FOREACH(list, l, data) {
- ewk_item = (Ewk_Context_Menu_Item *)data;
- switch (ewk_context_menu_item_type_get(ewk_item)) {
- case EWK_ACTION_TYPE:
- elm_menu_item = elm_menu_item_add(context_menu, parent_item, NULL, ewk_context_menu_item_title_get(ewk_item), context_menu_item_selected_cb, ewk_item);
- break;
- case EWK_CHECKABLE_ACTION_TYPE:
- elm_check_item = elm_check_add(context_menu);
- elm_menu_item = elm_menu_item_add(context_menu, parent_item, NULL, ewk_context_menu_item_title_get(ewk_item), context_menu_item_selected_cb, ewk_item);
- elm_object_item_content_set(elm_menu_item, elm_check_item);
- elm_check_state_set(elm_check_item, ewk_context_menu_item_checked_get(ewk_item));
- break;
- case EWK_SUBMENU_TYPE:
- elm_menu_item = elm_menu_item_add(context_menu, parent_item, NULL, ewk_context_menu_item_title_get(ewk_item), NULL, ewk_item);
- if (elm_menu_item)
- context_menu_populate(context_menu, ewk_context_menu_item_submenu_get(ewk_item), elm_menu_item);
- break;
- default:
- continue;
- }
- elm_object_item_disabled_set(elm_menu_item, !ewk_context_menu_item_enabled_get(ewk_item));
- }
-}
-
-static Eina_Bool
-on_context_menu_show(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Ewk_Context_Menu *menu)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- if (!window || !menu) {
- info("ERROR: necessary objects are NULL.");
- return EINA_FALSE;
- }
-
- window->context_menu.elm_menu = elm_menu_add(window->elm_window);
-
- if (!window->context_menu.elm_menu) {
- info("ERROR: could not create menu widget.");
- return EINA_FALSE;
- }
-
- window->context_menu.ewk_menu = menu;
-
- context_menu_populate(window->context_menu.elm_menu, menu, NULL);
-
- info("Showing context menu at (%d, %d).", x, y);
- elm_menu_move(window->context_menu.elm_menu, x, y);
- evas_object_show(window->context_menu.elm_menu);
-
- return EINA_TRUE;
-}
-
-static Eina_Bool
-on_context_menu_hide(Ewk_View_Smart_Data *sd)
-{
- Browser_Window *window = window_find_with_ewk_view(sd->self);
-
- if (!window || !window->context_menu.elm_menu) {
- info("ERROR: necessary objects are NULL.");
- return EINA_FALSE;
- }
-
- elm_menu_close(window->context_menu.elm_menu);
- evas_object_del(window->context_menu.elm_menu);
- window->context_menu.elm_menu = NULL;
- window->context_menu.ewk_menu = NULL;
-
- return EINA_TRUE;
-}
-
-static void
-auth_popup_close(Auth_Data *auth_data)
-{
- ewk_object_unref(auth_data->request);
- evas_object_del(auth_data->popup);
- free(auth_data);
-}
-
-static void
-on_auth_cancel(void *user_data, Evas_Object *obj, void *event_info)
-{
- Auth_Data *auth_data = (Auth_Data *)user_data;
-
- ewk_auth_request_cancel(auth_data->request);
-
- auth_popup_close(auth_data);
-}
-
-static void
-on_auth_ok(void *user_data, Evas_Object *obj, void *event_info)
-{
- Auth_Data *auth_data = (Auth_Data *)user_data;
-
- const char *username = elm_entry_entry_get(auth_data->username_entry);
- const char *password = elm_entry_entry_get(auth_data->password_entry);
- ewk_auth_request_authenticate(auth_data->request, username, password);
-
- auth_popup_close(auth_data);
-}
-
-static void
-on_authentication_request(void *user_data, Evas_Object *obj, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- Ewk_Auth_Request *request = ewk_object_ref((Ewk_Auth_Request *)event_info);
-
- Auth_Data *auth_data = (Auth_Data *)malloc(sizeof(Auth_Data));
- auth_data->request = request;
-
- Evas_Object *auth_popup = elm_popup_add(window->elm_window);
- auth_data->popup = auth_popup;
- evas_object_size_hint_weight_set(auth_popup, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_object_part_text_set(auth_popup, "title,text", "Authentication Required");
-
- /* Popup Content */
- Evas_Object *vbox = elm_box_add(auth_popup);
- elm_box_padding_set(vbox, 0, 4);
- evas_object_size_hint_weight_set(vbox, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(vbox, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_object_content_set(auth_popup, vbox);
- evas_object_show(vbox);
-
- /* Authentication message */
- Evas_Object *label = elm_label_add(auth_popup);
- elm_label_line_wrap_set(label, ELM_WRAP_WORD);
- Eina_Strbuf *auth_text = eina_strbuf_new();
- const char *host = ewk_auth_request_host_get(request);
- const char *realm = ewk_auth_request_realm_get(request);
- eina_strbuf_append_printf(auth_text, "A username and password are being requested by %s. The site says: \"%s\"", host, realm ? realm : "");
- elm_object_text_set(label, eina_strbuf_string_get(auth_text));
- eina_strbuf_free(auth_text);
- evas_object_size_hint_weight_set(label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(label, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(vbox, label);
- evas_object_show(label);
-
- /* Credential table */
- Evas_Object *table = elm_table_add(auth_popup);
- elm_table_padding_set(table, 2, 2);
- elm_table_homogeneous_set(table, EINA_TRUE);
- evas_object_size_hint_weight_set(table, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(table, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(vbox, table);
- evas_object_show(table);
-
- /* Username row */
- Evas_Object *username_label = elm_label_add(auth_popup);
- elm_object_text_set(username_label, "Username:");
- evas_object_size_hint_weight_set(username_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(username_label, 1, EVAS_HINT_FILL);
- elm_table_pack(table, username_label, 0, 0, 1, 1);
- evas_object_show(username_label);
-
- Evas_Object *username_entry = elm_entry_add(auth_popup);
- auth_data->username_entry = username_entry;
- elm_entry_scrollable_set(username_entry, EINA_TRUE);
- elm_entry_single_line_set(username_entry, EINA_TRUE);
- elm_entry_text_style_user_push(username_entry, "DEFAULT='font_size=18'");
- const char *suggested_username = ewk_auth_request_suggested_username_get(request);
- elm_entry_entry_set(username_entry, suggested_username ? suggested_username : "");
- evas_object_size_hint_weight_set(username_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(username_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_table_pack(table, username_entry, 1, 0, 2, 1);
- elm_object_focus_set(username_entry, EINA_TRUE);
- evas_object_show(username_entry);
-
- /* Password row */
- Evas_Object *password_label = elm_label_add(auth_popup);
- elm_object_text_set(password_label, "Password:");
- evas_object_size_hint_weight_set(password_label, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(password_label, 1, EVAS_HINT_FILL);
- elm_table_pack(table, password_label, 0, 1, 1, 1);
- evas_object_show(password_label);
-
- Evas_Object *password_entry = elm_entry_add(auth_popup);
- auth_data->password_entry = password_entry;
- elm_entry_scrollable_set(password_entry, EINA_TRUE);
- elm_entry_single_line_set(password_entry, EINA_TRUE);
- elm_entry_password_set(password_entry, EINA_TRUE);
- elm_entry_text_style_user_push(password_entry, "DEFAULT='font_size=18'");
- evas_object_size_hint_weight_set(password_entry, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(password_entry, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_table_pack(table, password_entry, 1, 1, 2, 1);
- evas_object_show(password_entry);
-
- /* Popup buttons */
- Evas_Object *cancel_button = elm_button_add(auth_popup);
- elm_object_text_set(cancel_button, "Cancel");
- elm_object_part_content_set(auth_popup, "button1", cancel_button);
- evas_object_smart_callback_add(cancel_button, "clicked", on_auth_cancel, auth_data);
- Evas_Object *ok_button = elm_button_add(auth_popup);
- elm_object_text_set(ok_button, "OK");
- elm_object_part_content_set(auth_popup, "button2", ok_button);
- evas_object_smart_callback_add(ok_button, "clicked", on_auth_ok, auth_data);
- evas_object_show(auth_popup);
-}
-
-static void
-on_tooltip_text_set(void *user_data, Evas_Object *obj, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
- const char *message = (const char*)event_info;
-
- elm_object_tooltip_text_set(window->elm_window, message);
- window->tooltip.text_set = EINA_TRUE;
- window_tooltip_update(window);
-}
-
-static void
-on_tooltip_text_unset(void *user_data, Evas_Object *obj, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- window_tooltip_hide(window);
- elm_object_tooltip_unset(window->elm_window);
- window->tooltip.text_set = EINA_FALSE;
-}
-
-static void
-on_home_button_clicked(void *user_data, Evas_Object *home_button, void *event_info)
-{
- Browser_Window *window = (Browser_Window *)user_data;
-
- ewk_view_url_set(window->ewk_view, DEFAULT_URL);
-}
-
-static void
-on_window_deletion(void *user_data, Evas_Object *elm_window, void *event_info)
-{
- window_close(window_find_with_elm_window(elm_window));
-}
-
-static Evas_Object *
-create_toolbar_button(Evas_Object *elm_window, const char *icon_name)
-{
- Evas_Object *button = elm_button_add(elm_window);
-
- Evas_Object *icon = elm_icon_add(elm_window);
- elm_icon_standard_set(icon, icon_name);
- evas_object_size_hint_max_set(icon, TOOL_BAR_ICON_SIZE, TOOL_BAR_ICON_SIZE);
- evas_object_color_set(icon, 44, 44, 102, 128);
- evas_object_show(icon);
- elm_object_part_content_set(button, "icon", icon);
- evas_object_size_hint_min_set(button, TOOL_BAR_BUTTON_SIZE, TOOL_BAR_BUTTON_SIZE);
-
- return button;
-}
-
-static Browser_Window *window_create(Evas_Object *opener, const char *url, int width, int height, Eina_Bool view_mode)
-{
- Browser_Window *window = calloc(1, sizeof(Browser_Window));
- if (!window) {
- info("ERROR: could not create browser window.");
- return NULL;
- }
-
- /* Initialize tooltip information */
- window->tooltip.show_timer = NULL;
- window->tooltip.activated = EINA_FALSE;
- window->tooltip.text_set = EINA_FALSE;
- window->tooltip.shown = EINA_FALSE;
-
- /* Create window */
- window->elm_window = elm_win_add(NULL, "minibrowser-window", ELM_WIN_BASIC);
- elm_win_title_set(window->elm_window, APP_NAME);
- evas_object_smart_callback_add(window->elm_window, "delete,request", on_window_deletion, &window);
-
- /* Create window background */
- Evas_Object *bg = elm_bg_add(window->elm_window);
- elm_bg_color_set(bg, 193, 192, 191);
- evas_object_size_hint_weight_set(bg, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(window->elm_window, bg);
- evas_object_show(bg);
-
- /* Create vertical layout */
- Evas_Object *vertical_layout = elm_box_add(window->elm_window);
- elm_box_padding_set(vertical_layout, 0, 2);
- evas_object_size_hint_weight_set(vertical_layout, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- elm_win_resize_object_add(window->elm_window, vertical_layout);
- evas_object_show(vertical_layout);
-
- /* Create horizontal layout for top bar */
- Evas_Object *horizontal_layout = elm_box_add(window->elm_window);
- elm_box_horizontal_set(horizontal_layout, EINA_TRUE);
- evas_object_size_hint_weight_set(horizontal_layout, EVAS_HINT_EXPAND, 0.0);
- evas_object_size_hint_align_set(horizontal_layout, EVAS_HINT_FILL, 0.0);
- elm_box_pack_end(vertical_layout, horizontal_layout);
- evas_object_show(horizontal_layout);
-
- /* Create Back button */
- window->back_button = create_toolbar_button(window->elm_window, "arrow_left");
- evas_object_smart_callback_add(window->back_button, "clicked", on_back_button_clicked, window);
- elm_object_disabled_set(window->back_button, EINA_TRUE);
- evas_object_size_hint_weight_set(window->back_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->back_button, 0.0, 0.5);
- elm_box_pack_end(horizontal_layout, window->back_button);
- evas_object_show(window->back_button);
-
- /* Create Forward button */
- window->forward_button = create_toolbar_button(window->elm_window, "arrow_right");
- evas_object_smart_callback_add(window->forward_button, "clicked", on_forward_button_clicked, window);
- elm_object_disabled_set(window->forward_button, EINA_TRUE);
- evas_object_size_hint_weight_set(window->forward_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->forward_button, 0.0, 0.5);
- elm_box_pack_end(horizontal_layout, window->forward_button);
- evas_object_show(window->forward_button);
-
- /* Create URL bar */
- window->url_bar = elm_entry_add(window->elm_window);
- elm_entry_scrollable_set(window->url_bar, EINA_TRUE);
- elm_entry_scrollbar_policy_set(window->url_bar, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
- elm_entry_single_line_set(window->url_bar, EINA_TRUE);
- elm_entry_cnp_mode_set(window->url_bar, ELM_CNP_MODE_PLAINTEXT);
- elm_entry_text_style_user_push(window->url_bar, "DEFAULT='font_size=18'");
- evas_object_smart_callback_add(window->url_bar, "activated", on_url_bar_activated, window);
- evas_object_smart_callback_add(window->url_bar, "clicked", on_url_bar_clicked, window);
- evas_object_size_hint_weight_set(window->url_bar, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->url_bar, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(horizontal_layout, window->url_bar);
- evas_object_show(window->url_bar);
-
- /* Create Refresh button */
- Evas_Object *refresh_button = create_toolbar_button(window->elm_window, "refresh");
- evas_object_smart_callback_add(refresh_button, "clicked", on_refresh_button_clicked, window);
- evas_object_size_hint_weight_set(refresh_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(refresh_button, 1.0, 0.5);
- elm_box_pack_end(horizontal_layout, refresh_button);
- evas_object_show(refresh_button);
-
- /* Create Home button */
- Evas_Object *home_button = create_toolbar_button(window->elm_window, "home");
- evas_object_smart_callback_add(home_button, "clicked", on_home_button_clicked, window);
- evas_object_size_hint_weight_set(home_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(home_button, 1.0, 0.5);
- elm_box_pack_end(horizontal_layout, home_button);
- evas_object_show(home_button);
-
- /* Create Search bar */
- window->search.search_bar = elm_box_add(window->elm_window);
- elm_box_horizontal_set(window->search.search_bar, EINA_TRUE);
- evas_object_size_hint_min_set(window->search.search_bar, SEARCH_FIELD_SIZE + 2 * SEARCH_BUTTON_SIZE, 0);
- evas_object_size_hint_align_set(window->search.search_bar, 0.0, EVAS_HINT_FILL);
- elm_box_pack_end(vertical_layout, window->search.search_bar);
-
- /* Create Search field */
- window->search.search_field = elm_entry_add(window->elm_window);
- elm_entry_scrollable_set(window->search.search_field, EINA_TRUE);
- elm_entry_scrollbar_policy_set(window->search.search_field, ELM_SCROLLER_POLICY_OFF, ELM_SCROLLER_POLICY_OFF);
- elm_entry_single_line_set(window->search.search_field, EINA_TRUE);
- elm_entry_cnp_mode_set(window->search.search_field, ELM_CNP_MODE_PLAINTEXT);
- elm_entry_text_style_user_push(window->search.search_field, "DEFAULT='font_size=14'");
- evas_object_smart_callback_add(window->search.search_field, "activated", on_search_field_activated, window);
- evas_object_smart_callback_add(window->search.search_field, "changed", on_search_field_activated, window);
- evas_object_smart_callback_add(window->search.search_field, "aborted", on_search_field_aborted, window);
- evas_object_smart_callback_add(window->search.search_field, "clicked", on_search_field_clicked, window);
- evas_object_size_hint_weight_set(window->search.search_field, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->search.search_field, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_end(window->search.search_bar, window->search.search_field);
-
- /* Create Search backward button */
- window->search.backward_button = create_toolbar_button(window->elm_window, "arrow_up");
- evas_object_smart_callback_add(window->search.backward_button, "clicked", on_search_backward_button_clicked, window);
- elm_object_disabled_set(window->search.backward_button, EINA_FALSE);
- evas_object_size_hint_weight_set(window->search.backward_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->search.backward_button, 1.0, 0.5);
- evas_object_size_hint_min_set(window->search.backward_button, SEARCH_BUTTON_SIZE, SEARCH_BUTTON_SIZE);
- elm_box_pack_end(window->search.search_bar, window->search.backward_button);
-
- /* Create Search forwardward button */
- window->search.forward_button = create_toolbar_button(window->elm_window, "arrow_down");
- evas_object_smart_callback_add(window->search.forward_button, "clicked", on_search_forward_button_clicked, window);
- elm_object_disabled_set(window->search.forward_button, EINA_FALSE);
- evas_object_size_hint_weight_set(window->search.forward_button, 0.0, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->search.forward_button, 1.0, 0.5);
- evas_object_size_hint_min_set(window->search.forward_button, SEARCH_BUTTON_SIZE, SEARCH_BUTTON_SIZE);
- elm_box_pack_end(window->search.search_bar, window->search.forward_button);
-
- /* Create ewk_view */
- Ewk_View_Smart_Class *ewkViewClass = miniBrowserViewSmartClass();
- ewkViewClass->run_javascript_alert = on_javascript_alert;
- ewkViewClass->run_javascript_confirm = on_javascript_confirm;
- ewkViewClass->run_javascript_prompt = on_javascript_prompt;
- ewkViewClass->window_geometry_get = on_window_geometry_get;
- ewkViewClass->window_geometry_set = on_window_geometry_set;
- ewkViewClass->fullscreen_enter = on_fullscreen_enter;
- ewkViewClass->fullscreen_exit = on_fullscreen_exit;
- ewkViewClass->window_create = on_window_create;
- ewkViewClass->window_close = on_window_close;
- ewkViewClass->popup_menu_show = on_popup_menu_show;
- ewkViewClass->popup_menu_hide = on_popup_menu_hide;
- ewkViewClass->context_menu_show = on_context_menu_show;
- ewkViewClass->context_menu_hide = on_context_menu_hide;
- ewkViewClass->input_picker_color_request = on_color_picker_request;
- ewkViewClass->input_picker_color_dismiss = on_color_picker_dismiss;
-
- Evas *evas = evas_object_evas_get(window->elm_window);
- if (legacy_behavior_enabled) {
- // Use raw WK2 api to create a view using legacy mode.
- window->ewk_view = (Evas_Object*)WKViewCreate(evas, 0, 0);
- } else {
- Evas_Smart *smart = evas_smart_class_new(&ewkViewClass->sc);
- Ewk_Context *context = opener ? ewk_view_context_get(opener) : ewk_context_default_get();
- Ewk_Page_Group *pageGroup = opener ? ewk_view_page_group_get(opener) : ewk_page_group_create("");
- window->ewk_view = ewk_view_smart_add(evas, smart, context, pageGroup);
- }
- ewk_view_theme_set(window->ewk_view, TEST_THEME_DIR "/default.edj");
- if (device_pixel_ratio)
- ewk_view_device_pixel_ratio_set(window->ewk_view, (float)device_pixel_ratio);
- ewk_view_source_mode_set(window->ewk_view, view_mode);
- ewk_view_user_agent_set(window->ewk_view, user_agent_string);
-
- /* Set the zoom level to default */
- window->current_zoom_level = DEFAULT_ZOOM_LEVEL;
-
- Ewk_Settings *settings = ewk_view_settings_get(window->ewk_view);
- ewk_settings_file_access_from_file_urls_allowed_set(settings, EINA_TRUE);
- ewk_settings_encoding_detector_enabled_set(settings, encoding_detector_enabled);
- ewk_settings_frame_flattening_enabled_set(settings, frame_flattening_enabled);
- ewk_settings_local_storage_enabled_set(settings, local_storage_enabled);
- info("HTML5 local storage is %s for this view.", local_storage_enabled ? "enabled" : "disabled");
- elm_win_fullscreen_set(window->elm_window, fullscreen_enabled);
- ewk_settings_developer_extras_enabled_set(settings, EINA_TRUE);
- ewk_settings_preferred_minimum_contents_width_set(settings, 0);
- ewk_text_checker_continuous_spell_checking_enabled_set(spell_checking_enabled);
-
- evas_object_smart_callback_add(window->ewk_view, "authentication,request", on_authentication_request, window);
- evas_object_smart_callback_add(window->ewk_view, "download,failed", on_download_failed, window);
- evas_object_smart_callback_add(window->ewk_view, "download,finished", on_download_finished, window);
- evas_object_smart_callback_add(window->ewk_view, "download,request", on_download_request, window);
- evas_object_smart_callback_add(window->ewk_view, "file,chooser,request", on_file_chooser_request, window);
- evas_object_smart_callback_add(window->ewk_view, "favicon,changed", on_view_favicon_changed, window);
- evas_object_smart_callback_add(window->ewk_view, "load,error", on_error, window);
- evas_object_smart_callback_add(window->ewk_view, "load,provisional,failed", on_error, window);
- evas_object_smart_callback_add(window->ewk_view, "load,progress", on_progress, window);
- evas_object_smart_callback_add(window->ewk_view, "title,changed", on_title_changed, window);
- evas_object_smart_callback_add(window->ewk_view, "url,changed", on_url_changed, window);
- evas_object_smart_callback_add(window->ewk_view, "back,forward,list,changed", on_back_forward_list_changed, window);
- evas_object_smart_callback_add(window->ewk_view, "tooltip,text,set", on_tooltip_text_set, window);
- evas_object_smart_callback_add(window->ewk_view, "tooltip,text,unset", on_tooltip_text_unset, window);
-
- evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_KEY_DOWN, on_key_down, window);
- evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_MOUSE_DOWN, on_mouse_down, window);
-
- evas_object_size_hint_weight_set(window->ewk_view, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
- evas_object_size_hint_align_set(window->ewk_view, EVAS_HINT_FILL, EVAS_HINT_FILL);
- elm_box_pack_before(vertical_layout, window->ewk_view, window->search.search_bar);
- evas_object_show(window->ewk_view);
-
- if (url && strcmp(url, "about:blank")) // Do not reset 'about:blank' as it would erase all previous document modifications.
- ewk_view_url_set(window->ewk_view, url);
-
- evas_object_resize(window->elm_window, width ? width : window_width, height ? height : window_height);
- evas_object_show(window->elm_window);
- search_box_hide(window);
-
- view_focus_set(window, EINA_TRUE);
-
- evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_MOUSE_IN, on_mouse_in, window);
- evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_MOUSE_OUT, on_mouse_out, window);
- evas_object_event_callback_add(window->ewk_view, EVAS_CALLBACK_MOUSE_MOVE, on_mouse_move, window);
- evas_object_event_callback_add(window->elm_window, EVAS_CALLBACK_RESIZE, on_window_resize, window);
-
- return window;
-}
-
-static Ewk_Cookie_Accept_Policy
-parse_cookies_policy(const char *input_string)
-{
- if (!strcmp(input_string, "always"))
- return EWK_COOKIE_ACCEPT_POLICY_ALWAYS;
- if (!strcmp(input_string, "never"))
- return EWK_COOKIE_ACCEPT_POLICY_NEVER;
- if (strcmp(input_string, "no-third-party"))
- info("Unrecognized type for cookies policy: %s.", input_string);
- return EWK_COOKIE_ACCEPT_POLICY_NO_THIRD_PARTY;
-}
-
-static void
-parse_window_size(const char *input_string, int *width, int *height)
-{
- static const unsigned max_length = 4;
- int parsed_width;
- int parsed_height;
- char **arr;
- unsigned elements;
-
- arr = eina_str_split_full(input_string, "x", 0, &elements);
-
- if (elements == 2 && (strlen(arr[0]) <= max_length) && (strlen(arr[1]) <= max_length)) {
- parsed_width = atoi(arr[0]);
- if (width && parsed_width)
- *width = parsed_width;
-
- parsed_height = atoi(arr[1]);
- if (height && parsed_height)
- *height = parsed_height;
- }
-
- free(arr[0]);
- free(arr);
-}
-
-EAPI_MAIN int
-elm_main(int argc, char *argv[])
-{
- int args = 1;
- unsigned char quitOption = 0;
- Browser_Window *window;
- char *window_size_string = NULL;
- char *cookies_policy_string = NULL;
-
- Ecore_Getopt_Value values[] = {
- ECORE_GETOPT_VALUE_STR(evas_engine_name),
- ECORE_GETOPT_VALUE_STR(window_size_string),
- ECORE_GETOPT_VALUE_STR(user_agent_string),
- ECORE_GETOPT_VALUE_BOOL(legacy_behavior_enabled),
- ECORE_GETOPT_VALUE_DOUBLE(device_pixel_ratio),
- ECORE_GETOPT_VALUE_BOOL(quitOption),
- ECORE_GETOPT_VALUE_BOOL(encoding_detector_enabled),
- ECORE_GETOPT_VALUE_BOOL(frame_flattening_enabled),
- ECORE_GETOPT_VALUE_BOOL(local_storage_enabled),
- ECORE_GETOPT_VALUE_BOOL(fullscreen_enabled),
- ECORE_GETOPT_VALUE_BOOL(spell_checking_enabled),
- ECORE_GETOPT_VALUE_STR(cookies_policy_string),
- ECORE_GETOPT_VALUE_BOOL(quitOption),
- ECORE_GETOPT_VALUE_BOOL(quitOption),
- ECORE_GETOPT_VALUE_BOOL(quitOption),
- ECORE_GETOPT_VALUE_NONE
- };
-
- if (!ewk_init())
- return EXIT_FAILURE;
-
- ewk_view_smart_class_set(miniBrowserViewSmartClass());
-
- ecore_app_args_set(argc, (const char **) argv);
- args = ecore_getopt_parse(&options, values, argc, argv);
-
- if (args < 0)
- return quit(EINA_FALSE, "ERROR: could not parse options.\n");
-
- if (quitOption)
- return quit(EINA_TRUE, NULL);
-
- if (evas_engine_name)
- elm_config_preferred_engine_set(evas_engine_name);
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- else {
- evas_engine_name = "opengl_x11";
- elm_config_preferred_engine_set(evas_engine_name);
- }
-#endif
-
- // Enable favicon database.
- Ewk_Context *context = ewk_context_default_get();
- ewk_context_favicon_database_directory_set(context, NULL);
-
- if (cookies_policy_string)
- ewk_cookie_manager_accept_policy_set(ewk_context_cookie_manager_get(context), parse_cookies_policy(cookies_policy_string));
-
- if (window_size_string)
- parse_window_size(window_size_string, &window_width, &window_height);
-
- if (args < argc) {
- char *url = url_from_user_input(argv[args]);
- window = window_create(NULL, url, 0, 0, EINA_FALSE);
- free(url);
- } else
- window = window_create(NULL, DEFAULT_URL, 0, 0, EINA_FALSE);
-
- if (!window)
- return quit(EINA_FALSE, "ERROR: could not create browser window.\n");
-
- windows = eina_list_append(windows, window);
-
- elm_run();
-
- return quit(EINA_TRUE, NULL);
-}
-ELM_MAIN()
-
diff --git a/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c b/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c
deleted file mode 100644
index cb2caa35b..000000000
--- a/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "BrowserCellRendererVariant.h"
-#include "BrowserMarshal.h"
-#include <errno.h>
-
-enum {
- PROP_0,
-
- PROP_VALUE,
- PROP_ADJUSTMENT
-};
-
-enum {
- CHANGED,
-
- LAST_SIGNAL
-};
-
-struct _BrowserCellRendererVariant {
- GtkCellRenderer parent;
-
- GValue *value;
-
- GtkCellRenderer *textRenderer;
- GtkCellRenderer *toggleRenderer;
- GtkCellRenderer *spinRenderer;
-};
-
-struct _BrowserCellRendererVariantClass {
- GtkCellRendererClass parent;
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-G_DEFINE_TYPE(BrowserCellRendererVariant, browser_cell_renderer_variant, GTK_TYPE_CELL_RENDERER)
-
-static void browserCellRendererVariantFinalize(GObject *object)
-{
- BrowserCellRendererVariant *renderer = BROWSER_CELL_RENDERER_VARIANT(object);
-
- g_object_unref(renderer->toggleRenderer);
- g_object_unref(renderer->spinRenderer);
- g_object_unref(renderer->textRenderer);
- if (renderer->value)
- g_boxed_free(G_TYPE_VALUE, renderer->value);
-
- G_OBJECT_CLASS(browser_cell_renderer_variant_parent_class)->finalize(object);
-}
-
-static void browserCellRendererVariantGetProperty(GObject *object, guint propId, GValue *value, GParamSpec *pspec)
-{
- BrowserCellRendererVariant *renderer = BROWSER_CELL_RENDERER_VARIANT(object);
-
- switch (propId) {
- case PROP_VALUE:
- g_value_set_boxed(value, renderer->value);
- break;
- case PROP_ADJUSTMENT: {
- GtkAdjustment *adjustment = NULL;
- g_object_get(G_OBJECT(renderer->spinRenderer), "adjustment", &adjustment, NULL);
- if (adjustment) {
- g_value_set_object(value, adjustment);
- g_object_unref(adjustment);
- }
- break;
- }
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
- }
-}
-
-static void browserCellRendererVariantSetModeForValue(BrowserCellRendererVariant *renderer)
-{
- if (!renderer->value)
- return;
-
- GtkCellRendererMode mode;
- if (G_VALUE_HOLDS_BOOLEAN(renderer->value))
- mode = GTK_CELL_RENDERER_MODE_ACTIVATABLE;
- else if (G_VALUE_HOLDS_STRING(renderer->value) || G_VALUE_HOLDS_UINT(renderer->value))
- mode = GTK_CELL_RENDERER_MODE_EDITABLE;
- else
- return;
-
- g_object_set(G_OBJECT(renderer), "mode", mode, NULL);
-}
-
-static void browserCellRendererVariantSetProperty(GObject *object, guint propId, const GValue *value, GParamSpec *pspec)
-{
- BrowserCellRendererVariant *renderer = BROWSER_CELL_RENDERER_VARIANT(object);
-
- switch (propId) {
- case PROP_VALUE:
- if (renderer->value)
- g_boxed_free(G_TYPE_VALUE, renderer->value);
- renderer->value = g_value_dup_boxed(value);
- browserCellRendererVariantSetModeForValue(renderer);
- break;
- case PROP_ADJUSTMENT:
- g_object_set(G_OBJECT(renderer->spinRenderer), "adjustment", g_value_get_object(value), NULL);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
- }
-}
-
-static GtkCellRenderer *browserCellRendererVariantGetRendererForValue(BrowserCellRendererVariant *renderer)
-{
- if (!renderer->value)
- return NULL;
-
- if (G_VALUE_HOLDS_BOOLEAN(renderer->value)) {
- g_object_set(G_OBJECT(renderer->toggleRenderer),
- "active", g_value_get_boolean(renderer->value),
- NULL);
- return renderer->toggleRenderer;
- }
-
- if (G_VALUE_HOLDS_STRING(renderer->value)) {
- g_object_set(G_OBJECT(renderer->textRenderer),
- "text", g_value_get_string(renderer->value),
- NULL);
- return renderer->textRenderer;
- }
-
- if (G_VALUE_HOLDS_UINT(renderer->value)) {
- gchar *text = g_strdup_printf("%u", g_value_get_uint(renderer->value));
- g_object_set(G_OBJECT(renderer->spinRenderer), "text", text, NULL);
- g_free(text);
- return renderer->spinRenderer;
- }
-
- return NULL;
-}
-
-static void browserCellRendererVariantCellRendererTextEdited(BrowserCellRendererVariant *renderer, const gchar *path, const gchar *newText)
-{
- if (!renderer->value)
- return;
-
- if (!G_VALUE_HOLDS_STRING(renderer->value))
- return;
-
- g_value_set_string(renderer->value, newText);
- g_signal_emit(renderer, signals[CHANGED], 0, path, renderer->value);
-}
-
-static void browserCellRendererVariantCellRendererSpinEdited(BrowserCellRendererVariant *renderer, const gchar *path, const gchar *newText)
-{
- if (!renderer->value)
- return;
-
- if (!G_VALUE_HOLDS_UINT(renderer->value))
- return;
-
- GtkAdjustment *adjustment;
- g_object_get(G_OBJECT(renderer->spinRenderer), "adjustment", &adjustment, NULL);
- if (!adjustment)
- return;
-
- errno = 0;
- gchar *endPtr;
- gdouble value = g_strtod(newText, &endPtr);
- if (errno || value > gtk_adjustment_get_upper(adjustment) || value < gtk_adjustment_get_lower(adjustment) || endPtr == newText) {
- g_warning("Invalid input for cell: %s\n", newText);
- return;
- }
-
- g_value_set_uint(renderer->value, (guint)value);
- g_signal_emit(renderer, signals[CHANGED], 0, path, renderer->value);
-}
-
-static gboolean browserCellRendererVariantCellRendererActivate(GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, const GdkRectangle *bgArea, const GdkRectangle *cellArea, GtkCellRendererState flags)
-{
- BrowserCellRendererVariant *renderer = BROWSER_CELL_RENDERER_VARIANT(cell);
-
- if (!renderer->value)
- return TRUE;
-
- if (!G_VALUE_HOLDS_BOOLEAN(renderer->value))
- return TRUE;
-
- g_value_set_boolean(renderer->value, !g_value_get_boolean(renderer->value));
- g_signal_emit(renderer, signals[CHANGED], 0, path, renderer->value);
-
- return TRUE;
-}
-
-static void browserCellRendererVariantCellRendererRender(GtkCellRenderer *cell, cairo_t *cr, GtkWidget *widget, const GdkRectangle *bgArea, const GdkRectangle *cellArea, GtkCellRendererState flags)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->render(renderer, cr, widget, bgArea, cellArea, flags);
-}
-
-static GtkCellEditable *browserCellRendererVariantCellRendererStartEditing(GtkCellRenderer *cell, GdkEvent *event, GtkWidget *widget, const gchar *path, const GdkRectangle *bgArea, const GdkRectangle *cellArea, GtkCellRendererState flags)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return NULL;
-
- if (!GTK_CELL_RENDERER_GET_CLASS(renderer)->start_editing)
- return NULL;
-
- return GTK_CELL_RENDERER_GET_CLASS(renderer)->start_editing(renderer, event, widget, path, bgArea, cellArea, flags);
-}
-
-static void browserCellRendererVariantCellRendererGetPreferredWidth(GtkCellRenderer *cell, GtkWidget *widget, gint *minimumWidth, gint *naturalWidth)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->get_preferred_width(renderer, widget, minimumWidth, naturalWidth);
-}
-
-static void browserCellRendererVariantCellRendererGetPreferredHeight(GtkCellRenderer *cell, GtkWidget *widget, gint *minimumHeight, gint *naturalHeight)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->get_preferred_height(renderer, widget, minimumHeight, naturalHeight);
-}
-
-static void browserCellRendererVariantCellRendererGetPreferredWidthForHeight(GtkCellRenderer *cell, GtkWidget *widget, gint height, gint *minimumWidth, gint *naturalWidth)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->get_preferred_width_for_height(renderer, widget, height, minimumWidth, naturalWidth);
-}
-
-static void browserCellRendererVariantCellRendererGetPreferredHeightForWidth(GtkCellRenderer *cell, GtkWidget *widget, gint width, gint *minimumHeight, gint *naturalHeight)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->get_preferred_height_for_width(renderer, widget, width, minimumHeight, naturalHeight);
-}
-
-static void browserCellRendererVariantCellRendererGetAlignedArea(GtkCellRenderer *cell, GtkWidget *widget, GtkCellRendererState flags, const GdkRectangle *cellArea, GdkRectangle *alignedArea)
-{
- GtkCellRenderer *renderer = browserCellRendererVariantGetRendererForValue(BROWSER_CELL_RENDERER_VARIANT(cell));
- if (!renderer)
- return;
-
- GTK_CELL_RENDERER_GET_CLASS(renderer)->get_aligned_area(renderer, widget, flags, cellArea, alignedArea);
-}
-
-static void browser_cell_renderer_variant_init(BrowserCellRendererVariant *renderer)
-{
- g_object_set(renderer, "mode", GTK_CELL_RENDERER_MODE_ACTIVATABLE, NULL);
-
- renderer->toggleRenderer = gtk_cell_renderer_toggle_new();
- g_object_set(G_OBJECT(renderer->toggleRenderer), "xalign", 0.0, NULL);
- g_object_ref_sink(renderer->toggleRenderer);
-
- renderer->textRenderer = gtk_cell_renderer_text_new();
- g_signal_connect_swapped(renderer->textRenderer, "edited",
- G_CALLBACK(browserCellRendererVariantCellRendererTextEdited), renderer);
- g_object_set(G_OBJECT(renderer->textRenderer), "editable", TRUE, NULL);
- g_object_ref_sink(renderer->textRenderer);
-
- renderer->spinRenderer = gtk_cell_renderer_spin_new();
- g_signal_connect_swapped(renderer->spinRenderer, "edited",
- G_CALLBACK(browserCellRendererVariantCellRendererSpinEdited), renderer);
- g_object_set(G_OBJECT(renderer->spinRenderer), "editable", TRUE, NULL);
-}
-
-static void browser_cell_renderer_variant_class_init(BrowserCellRendererVariantClass *klass)
-{
- GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
- GtkCellRendererClass *cellRendererClass = GTK_CELL_RENDERER_CLASS(klass);
-
- gobjectClass->get_property = browserCellRendererVariantGetProperty;
- gobjectClass->set_property = browserCellRendererVariantSetProperty;
- gobjectClass->finalize = browserCellRendererVariantFinalize;
-
- cellRendererClass->activate = browserCellRendererVariantCellRendererActivate;
- cellRendererClass->render = browserCellRendererVariantCellRendererRender;
- cellRendererClass->start_editing = browserCellRendererVariantCellRendererStartEditing;
- cellRendererClass->get_preferred_width = browserCellRendererVariantCellRendererGetPreferredWidth;
- cellRendererClass->get_preferred_height = browserCellRendererVariantCellRendererGetPreferredHeight;
- cellRendererClass->get_preferred_width_for_height = browserCellRendererVariantCellRendererGetPreferredWidthForHeight;
- cellRendererClass->get_preferred_height_for_width = browserCellRendererVariantCellRendererGetPreferredHeightForWidth;
- cellRendererClass->get_aligned_area = browserCellRendererVariantCellRendererGetAlignedArea;
-
- g_object_class_install_property(gobjectClass,
- PROP_VALUE,
- g_param_spec_boxed("value",
- "Value",
- "The cell renderer value",
- G_TYPE_VALUE,
- G_PARAM_READWRITE));
- g_object_class_install_property(gobjectClass,
- PROP_ADJUSTMENT,
- g_param_spec_object("adjustment",
- "Adjustment",
- "The adjustment that holds the value of the spin button",
- GTK_TYPE_ADJUSTMENT,
- G_PARAM_READWRITE));
-
- signals[CHANGED] =
- g_signal_new("changed",
- G_TYPE_FROM_CLASS(gobjectClass),
- G_SIGNAL_RUN_LAST,
- 0, NULL, NULL,
- browser_marshal_VOID__STRING_BOXED,
- G_TYPE_NONE, 2,
- G_TYPE_STRING, G_TYPE_VALUE);
-}
-
-GtkCellRenderer *browser_cell_renderer_variant_new(void)
-{
- return GTK_CELL_RENDERER(g_object_new(BROWSER_TYPE_CELL_RENDERER_VARIANT, NULL));
-}
-
diff --git a/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h b/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h
deleted file mode 100644
index 4fce3bb60..000000000
--- a/Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 BrowserCellRendererVariant_h
-#define BrowserCellRendererVariant_h
-
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define BROWSER_TYPE_CELL_RENDERER_VARIANT (browser_cell_renderer_variant_get_type())
-#define BROWSER_CELL_RENDERER_VARIANT(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), BROWSER_TYPE_CELL_RENDERER_VARIANT, BrowserCellRendererVariant))
-#define BROWSER_CELL_RENDERER_VARIANT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), BROWSER_TYPE_CELL_RENDERER_VARIANT, BrowserCellRendererVariantClass))
-#define BROWSER_IS_CELL_RENDERER_VARIANT(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_TYPE_CELL_RENDERER_VARIANT))
-#define BROWSER_IS_CELL_RENDERER_VARIANT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_TYPE_CELL_RENDERER_VARIANT))
-#define BROWSER_CELL_RENDERER_VARIANT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), BROWSER_TYPE_CELL_RENDERER_VARIANT, BrowserCellRendererVariantClass))
-
-typedef struct _BrowserCellRendererVariant BrowserCellRendererVariant;
-typedef struct _BrowserCellRendererVariantClass BrowserCellRendererVariantClass;
-
-GType browser_cell_renderer_variant_get_type(void);
-
-GtkCellRenderer* browser_cell_renderer_variant_new(void);
-
-G_END_DECLS
-
-#endif
diff --git a/Tools/MiniBrowser/gtk/BrowserDownloadsBar.c b/Tools/MiniBrowser/gtk/BrowserDownloadsBar.c
deleted file mode 100644
index 5f0e620e5..000000000
--- a/Tools/MiniBrowser/gtk/BrowserDownloadsBar.c
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "BrowserDownloadsBar.h"
-
-#include <glib/gi18n.h>
-
-#define BROWSER_TYPE_DOWNLOAD (browser_download_get_type())
-#define BROWSER_DOWNLOAD(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), BROWSER_TYPE_DOWNLOAD, BrowserDownload))
-
-typedef struct _BrowserDownload BrowserDownload;
-typedef struct _BrowserDownloadClass BrowserDownloadClass;
-
-static GType browser_download_get_type();
-
-struct _BrowserDownloadsBar {
- GtkInfoBar parent;
-};
-
-struct _BrowserDownloadsBarClass {
- GtkInfoBarClass parentClass;
-};
-
-G_DEFINE_TYPE(BrowserDownloadsBar, browser_downloads_bar, GTK_TYPE_INFO_BAR)
-
-static void
-browserDownloadsBarChildRemoved(GtkContainer *infoBar, GtkWidget *widget, BrowserDownloadsBar *downloadsBar)
-{
- GList *children = gtk_container_get_children(infoBar);
- if (g_list_length(children) == 1)
- gtk_info_bar_response(GTK_INFO_BAR(downloadsBar), GTK_RESPONSE_CLOSE);
- g_list_free(children);
-}
-
-static void browserDownloadsBarResponse(GtkInfoBar *infoBar, gint responseId)
-{
- gtk_widget_destroy(GTK_WIDGET(infoBar));
-}
-
-static void browser_downloads_bar_init(BrowserDownloadsBar *downloadsBar)
-{
- GtkWidget *contentBox = gtk_info_bar_get_content_area(GTK_INFO_BAR(downloadsBar));
- g_signal_connect_after(contentBox, "remove", G_CALLBACK(browserDownloadsBarChildRemoved), downloadsBar);
- gtk_orientable_set_orientation(GTK_ORIENTABLE(contentBox), GTK_ORIENTATION_VERTICAL);
-
- GtkWidget *title = gtk_label_new(NULL);
- gtk_label_set_markup(GTK_LABEL(title), "<span size='xx-large' weight='bold'>Downloads</span>");
- gtk_misc_set_alignment(GTK_MISC(title), 0., 0.5);
- gtk_box_pack_start(GTK_BOX(contentBox), title, FALSE, FALSE, 12);
- gtk_widget_show(title);
-}
-
-static void browser_downloads_bar_class_init(BrowserDownloadsBarClass *klass)
-{
- GtkInfoBarClass *infoBarClass = GTK_INFO_BAR_CLASS(klass);
- infoBarClass->response = browserDownloadsBarResponse;
-}
-
-GtkWidget *browser_downloads_bar_new()
-{
- GtkInfoBar *downloadsBar = GTK_INFO_BAR(g_object_new(BROWSER_TYPE_DOWNLOADS_BAR, NULL));
- gtk_info_bar_add_buttons(downloadsBar, GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE, NULL);
- return GTK_WIDGET(downloadsBar);
-}
-
-struct _BrowserDownload {
- GtkBox parent;
-
- WebKitDownload *download;
- guint64 contentLength;
- guint64 downloadedSize;
- gboolean finished;
-
- GtkWidget *statusLabel;
- GtkWidget *remainingLabel;
- GtkWidget *progressBar;
- GtkWidget *actionButton;
-};
-
-struct _BrowserDownloadClass {
- GtkBoxClass parentClass;
-};
-
-G_DEFINE_TYPE(BrowserDownload, browser_download, GTK_TYPE_BOX)
-
-static void actionButtonClicked(GtkButton *button, BrowserDownload *browserDownload)
-{
- if (!browserDownload->finished) {
- webkit_download_cancel(browserDownload->download);
- return;
- }
-
- gtk_show_uri(gtk_widget_get_screen(GTK_WIDGET(browserDownload)),
- webkit_download_get_destination(browserDownload->download),
- gtk_get_current_event_time(), NULL);
- gtk_widget_destroy(GTK_WIDGET(browserDownload));
-}
-
-static void browserDownloadFinalize(GObject *object)
-{
- BrowserDownload *browserDownload = BROWSER_DOWNLOAD(object);
-
- if (browserDownload->download) {
- g_object_unref(browserDownload->download);
- browserDownload->download = NULL;
- }
-
- G_OBJECT_CLASS(browser_download_parent_class)->finalize(object);
-}
-
-static void browser_download_init(BrowserDownload *download)
-{
- GtkWidget *mainBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 6);
- gtk_box_pack_start(GTK_BOX(download), mainBox, FALSE, FALSE, 0);
- gtk_widget_show(mainBox);
-
- GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- gtk_box_pack_start(GTK_BOX(mainBox), vbox, TRUE, TRUE, 0);
- gtk_widget_show(vbox);
-
- GtkWidget *statusBox = gtk_box_new(GTK_ORIENTATION_HORIZONTAL, 0);
- gtk_box_pack_start(GTK_BOX(vbox), statusBox, TRUE, TRUE, 0);
- gtk_widget_show(statusBox);
-
- download->statusLabel = gtk_label_new("Starting Download");
- gtk_label_set_ellipsize(GTK_LABEL(download->statusLabel), PANGO_ELLIPSIZE_END);
- gtk_misc_set_alignment(GTK_MISC(download->statusLabel), 0., 0.5);
- gtk_box_pack_start(GTK_BOX(statusBox), download->statusLabel, TRUE, TRUE, 0);
- gtk_widget_show(download->statusLabel);
-
- download->remainingLabel = gtk_label_new(NULL);
- gtk_misc_set_alignment(GTK_MISC(download->remainingLabel), 1., 0.5);
- gtk_box_pack_end(GTK_BOX(statusBox), download->remainingLabel, TRUE, TRUE, 0);
- gtk_widget_show(download->remainingLabel);
-
- download->progressBar = gtk_progress_bar_new();
- gtk_box_pack_start(GTK_BOX(vbox), download->progressBar, FALSE, FALSE, 0);
- gtk_widget_show(download->progressBar);
-
- download->actionButton = gtk_button_new_from_stock(GTK_STOCK_CANCEL);
- g_signal_connect(download->actionButton, "clicked", G_CALLBACK(actionButtonClicked), download);
- gtk_box_pack_end(GTK_BOX(mainBox), download->actionButton, FALSE, FALSE, 0);
- gtk_widget_show(download->actionButton);
-}
-
-static void browser_download_class_init(BrowserDownloadClass *klass)
-{
- GObjectClass *objectClass = G_OBJECT_CLASS(klass);
-
- objectClass->finalize = browserDownloadFinalize;
-}
-
-static void downloadReceivedResponse(WebKitDownload *download, GParamSpec *paramSpec, BrowserDownload *browserDownload)
-{
- WebKitURIResponse *response = webkit_download_get_response(download);
- browserDownload->contentLength = webkit_uri_response_get_content_length(response);
- char *text = g_strdup_printf("Downloading %s", webkit_uri_response_get_uri(response));
- gtk_label_set_text(GTK_LABEL(browserDownload->statusLabel), text);
- g_free(text);
-}
-
-static gchar *remainingTime(BrowserDownload *browserDownload)
-{
- guint64 total = browserDownload->contentLength;
- guint64 current = browserDownload->downloadedSize;
- gdouble elapsedTime = webkit_download_get_elapsed_time(browserDownload->download);
-
- if (current <= 0)
- return NULL;
-
- gdouble perByteTime = elapsedTime / current;
- gdouble interval = perByteTime * (total - current);
-
- int hours = (int) (interval / 3600);
- interval -= hours * 3600;
- int mins = (int) (interval / 60);
- interval -= mins * 60;
- int secs = (int) interval;
-
- if (hours > 0) {
- if (mins > 0)
- return g_strdup_printf (ngettext ("%u:%02u hour left", "%u:%02u hours left", hours), hours, mins);
- return g_strdup_printf (ngettext ("%u hour left", "%u hours left", hours), hours);
- }
-
- if (mins > 0)
- return g_strdup_printf (ngettext ("%u:%02u minute left", "%u:%02u minutes left", mins), mins, secs);
- return g_strdup_printf (ngettext ("%u second left", "%u seconds left", secs), secs);
-}
-
-static void downloadProgress(WebKitDownload *download, GParamSpec *paramSpec, BrowserDownload *browserDownload)
-{
- gtk_progress_bar_set_fraction(GTK_PROGRESS_BAR(browserDownload->progressBar),
- webkit_download_get_estimated_progress(download));
- char *remaining = remainingTime(browserDownload);
- gtk_label_set_text(GTK_LABEL(browserDownload->remainingLabel), remaining);
- g_free(remaining);
-}
-
-static void downloadReceivedData(WebKitDownload *download, guint64 dataLength, BrowserDownload *browserDownload)
-{
- browserDownload->downloadedSize += dataLength;
-}
-
-static void downloadFinished(WebKitDownload *download, BrowserDownload *browserDownload)
-{
- gchar *text = g_strdup_printf("Download completed: %s", webkit_download_get_destination(download));
- gtk_label_set_text(GTK_LABEL(browserDownload->statusLabel), text);
- g_free(text);
- gtk_label_set_text(GTK_LABEL(browserDownload->remainingLabel), NULL);
- gtk_button_set_image(GTK_BUTTON(browserDownload->actionButton),
- gtk_image_new_from_stock(GTK_STOCK_OPEN, GTK_ICON_SIZE_BUTTON));
- gtk_button_set_label(GTK_BUTTON(browserDownload->actionButton), "Open ...");
- browserDownload->finished = TRUE;
-}
-
-static void downloadFailed(WebKitDownload *download, GError *error, BrowserDownload *browserDownload)
-{
- g_signal_handlers_disconnect_by_func(browserDownload->download, downloadFinished, browserDownload);
- if (g_error_matches(error, WEBKIT_DOWNLOAD_ERROR, WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER)) {
- gtk_widget_destroy(GTK_WIDGET(browserDownload));
- return;
- }
-
- char *errorMessage = g_strdup_printf("Download failed: %s", error->message);
- gtk_label_set_text(GTK_LABEL(browserDownload->statusLabel), errorMessage);
- g_free(errorMessage);
- gtk_label_set_text(GTK_LABEL(browserDownload->remainingLabel), NULL);
- gtk_widget_set_sensitive(browserDownload->actionButton, FALSE);
-}
-
-GtkWidget *browserDownloadNew(WebKitDownload *download)
-{
- BrowserDownload *browserDownload = BROWSER_DOWNLOAD(g_object_new(BROWSER_TYPE_DOWNLOAD,
- "orientation", GTK_ORIENTATION_VERTICAL,
- NULL));
-
- browserDownload->download = g_object_ref(download);
- g_signal_connect(browserDownload->download, "notify::response", G_CALLBACK(downloadReceivedResponse), browserDownload);
- g_signal_connect(browserDownload->download, "notify::estimated-progress", G_CALLBACK(downloadProgress), browserDownload);
- g_signal_connect(browserDownload->download, "received-data", G_CALLBACK(downloadReceivedData), browserDownload);
- g_signal_connect(browserDownload->download, "finished", G_CALLBACK(downloadFinished), browserDownload);
- g_signal_connect(browserDownload->download, "failed", G_CALLBACK(downloadFailed), browserDownload);
-
- return GTK_WIDGET(browserDownload);
-}
-
-void browser_downloads_bar_add_download(BrowserDownloadsBar *downloadsBar, WebKitDownload *download)
-{
- GtkWidget *browserDownload = browserDownloadNew(download);
- GtkWidget *contentBox = gtk_info_bar_get_content_area(GTK_INFO_BAR(downloadsBar));
- gtk_box_pack_start(GTK_BOX(contentBox), browserDownload, FALSE, TRUE, 0);
- gtk_widget_show(browserDownload);
-}
diff --git a/Tools/MiniBrowser/gtk/BrowserDownloadsBar.h b/Tools/MiniBrowser/gtk/BrowserDownloadsBar.h
deleted file mode 100644
index 1704a5d01..000000000
--- a/Tools/MiniBrowser/gtk/BrowserDownloadsBar.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 BrowserDownloadsBar_h
-#define BrowserDownloadsBar_h
-
-#include <gtk/gtk.h>
-#include <webkit2/webkit2.h>
-
-G_BEGIN_DECLS
-
-#define BROWSER_TYPE_DOWNLOADS_BAR (browser_downloads_bar_get_type())
-#define BROWSER_DOWNLOADS_BAR(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), BROWSER_TYPE_DOWNLOADS_BAR, BrowserDownloadsBar))
-#define BROWSER_IS_DOWNLOADS_BAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_TYPE_DOWNLOADS_BAR))
-#define BROWSER_DOWNLOADS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), BROWSER_TYPE_DOWNLOADS_BAR, BrowserDownloadsBarClass))
-#define BROWSER_IS_DOWNLOADS_BAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_TYPE_DOWNLOADS_BAR))
-#define BROWSER_DOWNLOADS_BAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), BROWSER_TYPE_DOWNLOADS_BAR, BrowserDownloadsBarClass))
-
-typedef struct _BrowserDownloadsBar BrowserDownloadsBar;
-typedef struct _BrowserDownloadsBarClass BrowserDownloadsBarClass;
-
-GType browser_downloads_bar_get_type(void);
-
-GtkWidget *browser_downloads_bar_new(void);
-void browser_downloads_bar_add_download(BrowserDownloadsBar *, WebKitDownload *);
-
-G_END_DECLS
-
-#endif
diff --git a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c
deleted file mode 100644
index 1e4dcd804..000000000
--- a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.c
+++ /dev/null
@@ -1,190 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "BrowserSettingsDialog.h"
-#include "BrowserCellRendererVariant.h"
-
-enum {
- PROP_0,
-
- PROP_SETTINGS
-};
-
-enum {
- SETTINGS_LIST_COLUMN_NAME,
- SETTINGS_LIST_COLUMN_NICK,
- SETTINGS_LIST_COLUMN_BLURB,
- SETTINGS_LIST_COLUMN_VALUE,
- SETTINGS_LIST_COLUMN_ADJUSTMENT,
-
- SETTINGS_LIST_N_COLUMNS
-};
-
-struct _BrowserSettingsDialog {
- GtkDialog parent;
-
- GtkWidget *settingsList;
- WebKitSettings *settings;
-};
-
-struct _BrowserSettingsDialogClass {
- GtkDialogClass parent;
-};
-
-G_DEFINE_TYPE(BrowserSettingsDialog, browser_settings_dialog, GTK_TYPE_DIALOG)
-
-static void cellRendererChanged(GtkCellRenderer *renderer, const char *path, const GValue *value, BrowserSettingsDialog *dialog)
-{
- GtkTreeModel *model = gtk_tree_view_get_model(GTK_TREE_VIEW(dialog->settingsList));
- GtkTreePath *treePath = gtk_tree_path_new_from_string(path);
- GtkTreeIter iter;
- gtk_tree_model_get_iter(model, &iter, treePath);
-
- char *name;
- gtk_tree_model_get(model, &iter, SETTINGS_LIST_COLUMN_NAME, &name, -1);
- g_object_set_property(G_OBJECT(dialog->settings), name, value);
- g_free(name);
-
- gtk_list_store_set(GTK_LIST_STORE(model), &iter, SETTINGS_LIST_COLUMN_VALUE, value, -1);
- gtk_tree_path_free(treePath);
-}
-
-static void browserSettingsDialogSetProperty(GObject *object, guint propId, const GValue *value, GParamSpec *pspec)
-{
- BrowserSettingsDialog *dialog = BROWSER_SETTINGS_DIALOG(object);
-
- switch (propId) {
- case PROP_SETTINGS:
- dialog->settings = g_value_get_object(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
- }
-}
-
-static void browser_settings_dialog_init(BrowserSettingsDialog *dialog)
-{
- GtkBox *contentArea = GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog)));
- gtk_box_set_spacing(contentArea, 2);
-
- gtk_window_set_default_size(GTK_WINDOW(dialog), 400, 300);
- gtk_window_set_title(GTK_WINDOW(dialog), "WebKit View Settings");
- gtk_window_set_destroy_with_parent(GTK_WINDOW(dialog), TRUE);
- gtk_container_set_border_width(GTK_CONTAINER(dialog), 5);
- gtk_dialog_add_button(GTK_DIALOG(dialog), GTK_STOCK_CLOSE, GTK_RESPONSE_CLOSE);
- gtk_dialog_set_default_response(GTK_DIALOG(dialog), GTK_RESPONSE_CLOSE);
-
- GtkWidget *scrolledWindow = gtk_scrolled_window_new(NULL, NULL);
- dialog->settingsList = gtk_tree_view_new();
- GtkCellRenderer *renderer = gtk_cell_renderer_text_new();
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(dialog->settingsList),
- 0, "Name", renderer,
- "text", SETTINGS_LIST_COLUMN_NICK,
- NULL);
- renderer = browser_cell_renderer_variant_new();
- g_signal_connect(renderer, "changed", G_CALLBACK(cellRendererChanged), dialog);
- gtk_tree_view_insert_column_with_attributes(GTK_TREE_VIEW(dialog->settingsList),
- 1, "Value", renderer,
- "value", SETTINGS_LIST_COLUMN_VALUE,
- "adjustment", SETTINGS_LIST_COLUMN_ADJUSTMENT,
- NULL);
- gtk_tree_view_set_tooltip_column(GTK_TREE_VIEW(dialog->settingsList), SETTINGS_LIST_COLUMN_BLURB);
-
- gtk_container_add(GTK_CONTAINER(scrolledWindow), dialog->settingsList);
- gtk_widget_show(dialog->settingsList);
-
- gtk_box_pack_start(contentArea, scrolledWindow, TRUE, TRUE, 0);
- gtk_widget_show(scrolledWindow);
-
- g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL);
-}
-
-static void browserSettingsDialogConstructed(GObject *object)
-{
- BrowserSettingsDialog *dialog = BROWSER_SETTINGS_DIALOG(object);
- WebKitSettings *settings = dialog->settings;
- GtkListStore *model = gtk_list_store_new(SETTINGS_LIST_N_COLUMNS, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING,
- G_TYPE_VALUE, G_TYPE_OBJECT);
- guint propertiesCount;
- GParamSpec **properties = g_object_class_list_properties(G_OBJECT_GET_CLASS(settings), &propertiesCount);
- guint i;
- for (i = 0; i < propertiesCount; i++) {
- GParamSpec *property = properties[i];
- const char *name = g_param_spec_get_name(property);
- const char *nick = g_param_spec_get_nick(property);
-
- GValue value = { 0, { { 0 } } };
- g_value_init(&value, G_PARAM_SPEC_VALUE_TYPE(property));
- g_object_get_property(G_OBJECT(settings), name, &value);
-
- GtkAdjustment *adjustment = NULL;
- if (G_PARAM_SPEC_VALUE_TYPE(property) == G_TYPE_UINT) {
- GParamSpecUInt *uIntProperty = G_PARAM_SPEC_UINT(property);
- adjustment = gtk_adjustment_new(uIntProperty->default_value, uIntProperty->minimum,
- uIntProperty->maximum, 1, 1, 1);
- }
-
- char *blurb = g_markup_escape_text(g_param_spec_get_blurb(property), -1);
- GtkTreeIter iter;
- gtk_list_store_append(model, &iter);
- gtk_list_store_set(model, &iter,
- SETTINGS_LIST_COLUMN_NAME, name,
- SETTINGS_LIST_COLUMN_NICK, nick,
- SETTINGS_LIST_COLUMN_BLURB, blurb,
- SETTINGS_LIST_COLUMN_VALUE, &value,
- SETTINGS_LIST_COLUMN_ADJUSTMENT, adjustment,
- -1);
- g_free(blurb);
- g_value_unset(&value);
- }
- g_free(properties);
-
- gtk_tree_view_set_model(GTK_TREE_VIEW(dialog->settingsList), GTK_TREE_MODEL(model));
- g_object_unref(model);
-}
-
-static void browser_settings_dialog_class_init(BrowserSettingsDialogClass *klass)
-{
- GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
-
- gobjectClass->constructed = browserSettingsDialogConstructed;
- gobjectClass->set_property = browserSettingsDialogSetProperty;
-
- g_object_class_install_property(gobjectClass,
- PROP_SETTINGS,
- g_param_spec_object("settings",
- "Settings",
- "The WebKitSettings",
- WEBKIT_TYPE_SETTINGS,
- G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
-}
-
-GtkWidget *browser_settings_dialog_new(WebKitSettings *settings)
-{
- g_return_val_if_fail(WEBKIT_IS_SETTINGS(settings), NULL);
-
- return GTK_WIDGET(g_object_new(BROWSER_TYPE_SETTINGS_DIALOG, "settings", settings, NULL));
-}
-
diff --git a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.h b/Tools/MiniBrowser/gtk/BrowserSettingsDialog.h
deleted file mode 100644
index f3dbcd042..000000000
--- a/Tools/MiniBrowser/gtk/BrowserSettingsDialog.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 BrowserSettingsDialog_h
-#define BrowserSettingsDialog_h
-
-#include <gtk/gtk.h>
-#include <webkit2/webkit2.h>
-
-G_BEGIN_DECLS
-
-#define BROWSER_TYPE_SETTINGS_DIALOG (browser_settings_dialog_get_type())
-#define BROWSER_SETTINGS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), BROWSER_TYPE_SETTINGS_DIALOG, BrowserSettingsDialog))
-#define BROWSER_SETTINGS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), BROWSER_TYPE_SETTINGS_DIALOG, BrowserSettingsDialogClass))
-#define BROWSER_IS_SETTINGS_DIALOG(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_TYPE_SETTINGS_DIALOG))
-#define BROWSER_IS_SETTINGS_DIALOG_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_TYPE_SETTINGS_DIALOG))
-#define BROWSER_SETTINGS_DIALOG_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), BROWSER_TYPE_SETTINGS_DIALOG, BrowserSettingsDialogClass))
-
-typedef struct _BrowserSettingsDialog BrowserSettingsDialog;
-typedef struct _BrowserSettingsDialogClass BrowserSettingsDialogClass;
-
-GType browser_settings_dialog_get_type(void);
-
-GtkWidget* browser_settings_dialog_new(WebKitSettings *settings);
-
-G_END_DECLS
-
-#endif
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c
deleted file mode 100644
index c95f49c98..000000000
--- a/Tools/MiniBrowser/gtk/BrowserWindow.c
+++ /dev/null
@@ -1,685 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc.
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "BrowserWindow.h"
-
-#include "BrowserDownloadsBar.h"
-#include "BrowserSettingsDialog.h"
-#include <gdk/gdkkeysyms.h>
-#include <string.h>
-
-enum {
- PROP_0,
-
- PROP_VIEW
-};
-
-struct _BrowserWindow {
- GtkWindow parent;
-
- GtkWidget *mainBox;
- GtkWidget *toolbar;
- GtkWidget *uriEntry;
- GtkWidget *backItem;
- GtkWidget *forwardItem;
- GtkWidget *zoomInItem;
- GtkWidget *zoomOutItem;
- GtkWidget *statusLabel;
- GtkWidget *settingsDialog;
- WebKitWebView *webView;
- GtkWidget *downloadsBar;
- GdkPixbuf *favicon;
- GtkWidget *fullScreenMessageLabel;
- guint fullScreenMessageLabelId;
-};
-
-struct _BrowserWindowClass {
- GtkWindowClass parent;
-};
-
-static const char *defaultWindowTitle = "WebKitGTK+ MiniBrowser";
-static const char *miniBrowserAboutScheme = "minibrowser-about";
-static const gdouble minimumZoomLevel = 0.5;
-static const gdouble maximumZoomLevel = 3;
-static const gdouble zoomStep = 1.2;
-static gint windowCount = 0;
-
-G_DEFINE_TYPE(BrowserWindow, browser_window, GTK_TYPE_WINDOW)
-
-static char *getInternalURI(const char *uri)
-{
- // Internally we use minibrowser-about: as about: prefix is ignored by WebKit.
- if (g_str_has_prefix(uri, "about:") && !g_str_equal(uri, "about:blank"))
- return g_strconcat(miniBrowserAboutScheme, uri + strlen ("about"), NULL);
-
- return g_strdup(uri);
-}
-
-static char *getExternalURI(const char *uri)
-{
- // From the user point of view we support about: prefix.
- if (g_str_has_prefix(uri, miniBrowserAboutScheme))
- return g_strconcat("about", uri + strlen(miniBrowserAboutScheme), NULL);
-
- return g_strdup(uri);
-}
-
-static void browserWindowSetStatusText(BrowserWindow *window, const char *text)
-{
- gtk_label_set_text(GTK_LABEL(window->statusLabel), text);
- gtk_widget_set_visible(window->statusLabel, !!text);
-}
-
-static void resetStatusText(GtkWidget *widget, BrowserWindow *window)
-{
- browserWindowSetStatusText(window, NULL);
-}
-
-static void activateUriEntryCallback(BrowserWindow *window)
-{
- browser_window_load_uri(window, gtk_entry_get_text(GTK_ENTRY(window->uriEntry)));
-}
-
-static void reloadCallback(BrowserWindow *window)
-{
- webkit_web_view_reload(window->webView);
-}
-
-static void goBackCallback(BrowserWindow *window)
-{
- webkit_web_view_go_back(window->webView);
-}
-
-static void goForwardCallback(BrowserWindow *window)
-{
- webkit_web_view_go_forward(window->webView);
-}
-
-static void settingsCallback(BrowserWindow *window)
-{
- if (window->settingsDialog) {
- gtk_window_present(GTK_WINDOW(window->settingsDialog));
- return;
- }
-
- window->settingsDialog = browser_settings_dialog_new(webkit_web_view_get_settings(window->webView));
- gtk_window_set_transient_for(GTK_WINDOW(window->settingsDialog), GTK_WINDOW(window));
- g_object_add_weak_pointer(G_OBJECT(window->settingsDialog), (gpointer *)&window->settingsDialog);
- gtk_widget_show(window->settingsDialog);
-}
-
-static void webViewURIChanged(WebKitWebView *webView, GParamSpec *pspec, BrowserWindow *window)
-{
- char *externalURI = getExternalURI(webkit_web_view_get_uri(webView));
- gtk_entry_set_text(GTK_ENTRY(window->uriEntry), externalURI);
- g_free(externalURI);
-}
-
-static void webViewTitleChanged(WebKitWebView *webView, GParamSpec *pspec, BrowserWindow *window)
-{
- const char *title = webkit_web_view_get_title(webView);
- gtk_window_set_title(GTK_WINDOW(window), title ? title : defaultWindowTitle);
-}
-
-static gboolean resetEntryProgress(GtkEntry *entry)
-{
- gtk_entry_set_progress_fraction(entry, 0);
- return FALSE;
-}
-
-static void webViewLoadProgressChanged(WebKitWebView *webView, GParamSpec *pspec, BrowserWindow *window)
-{
- gdouble progress = webkit_web_view_get_estimated_load_progress(webView);
- gtk_entry_set_progress_fraction(GTK_ENTRY(window->uriEntry), progress);
- if (progress == 1.0)
- g_timeout_add(500, (GSourceFunc)resetEntryProgress, window->uriEntry);
-}
-
-static void downloadStarted(WebKitWebContext *webContext, WebKitDownload *download, BrowserWindow *window)
-{
- if (!window->downloadsBar) {
- window->downloadsBar = browser_downloads_bar_new();
- gtk_box_pack_start(GTK_BOX(window->mainBox), window->downloadsBar, FALSE, FALSE, 0);
- gtk_box_reorder_child(GTK_BOX(window->mainBox), window->downloadsBar, 0);
- g_object_add_weak_pointer(G_OBJECT(window->downloadsBar), (gpointer *)&(window->downloadsBar));
- gtk_widget_show(window->downloadsBar);
- }
- browser_downloads_bar_add_download(BROWSER_DOWNLOADS_BAR(window->downloadsBar), download);
-}
-
-static void browserWindowHistoryItemSelected(BrowserWindow *window, GtkMenuItem *item)
-{
- GtkAction *action = gtk_activatable_get_related_action(GTK_ACTIVATABLE(item));
- browserWindowSetStatusText(window, action ? gtk_action_get_name(action) : NULL);
-}
-
-static void browserWindowHistoryItemActivated(BrowserWindow *window, GtkAction *action)
-{
- WebKitBackForwardListItem *item = g_object_get_data(G_OBJECT(action), "back-forward-list-item");
- if (!item)
- return;
-
- webkit_web_view_go_to_back_forward_list_item(window->webView, item);
-}
-
-static GtkWidget *browserWindowCreateBackForwardMenu(BrowserWindow *window, GList *list)
-{
- if (!list)
- return NULL;
-
- GtkWidget *menu = gtk_menu_new();
- GList *listItem;
- for (listItem = list; listItem; listItem = g_list_next(listItem)) {
- WebKitBackForwardListItem *item = (WebKitBackForwardListItem *)listItem->data;
- const char *uri = webkit_back_forward_list_item_get_uri(item);
- const char *title = webkit_back_forward_list_item_get_title(item);
-
- GtkAction *action = gtk_action_new(uri, title, NULL, NULL);
- g_object_set_data_full(G_OBJECT(action), "back-forward-list-item", g_object_ref(item), g_object_unref);
- g_signal_connect_swapped(action, "activate", G_CALLBACK(browserWindowHistoryItemActivated), window);
-
- GtkWidget *menuItem = gtk_action_create_menu_item(action);
- g_signal_connect_swapped(menuItem, "select", G_CALLBACK(browserWindowHistoryItemSelected), window);
- g_object_unref(action);
-
- gtk_menu_shell_prepend(GTK_MENU_SHELL(menu), menuItem);
- gtk_widget_show(menuItem);
- }
-
- g_signal_connect(menu, "hide", G_CALLBACK(resetStatusText), window);
-
- return menu;
-}
-
-static void browserWindowUpdateNavigationActions(BrowserWindow *window, WebKitBackForwardList *backForwadlist)
-{
- gtk_widget_set_sensitive(window->backItem, webkit_web_view_can_go_back(window->webView));
- gtk_widget_set_sensitive(window->forwardItem, webkit_web_view_can_go_forward(window->webView));
-
- GList *list = webkit_back_forward_list_get_back_list_with_limit(backForwadlist, 10);
- gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->backItem),
- browserWindowCreateBackForwardMenu(window, list));
- g_list_free(list);
-
- list = webkit_back_forward_list_get_forward_list_with_limit(backForwadlist, 10);
- gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(window->forwardItem),
- browserWindowCreateBackForwardMenu(window, list));
- g_list_free(list);
-}
-
-static void backForwadlistChanged(WebKitBackForwardList *backForwadlist, WebKitBackForwardListItem *itemAdded, GList *itemsRemoved, BrowserWindow *window)
-{
- browserWindowUpdateNavigationActions(window, backForwadlist);
-}
-
-static void geolocationRequestDialogCallback(GtkDialog *dialog, gint response, WebKitPermissionRequest *request)
-{
- switch (response) {
- case GTK_RESPONSE_YES:
- webkit_permission_request_allow(request);
- break;
- default:
- webkit_permission_request_deny(request);
- break;
- }
-
- gtk_widget_destroy(GTK_WIDGET(dialog));
- g_object_unref(request);
-}
-
-static void webViewClose(WebKitWebView *webView, BrowserWindow *window)
-{
- gtk_widget_destroy(GTK_WIDGET(window));
-}
-
-static void webViewRunAsModal(WebKitWebView *webView, BrowserWindow *window)
-{
- gtk_window_set_modal(GTK_WINDOW(window), TRUE);
-}
-
-static void webViewReadyToShow(WebKitWebView *webView, BrowserWindow *window)
-{
- WebKitWindowProperties *windowProperties = webkit_web_view_get_window_properties(webView);
-
- GdkRectangle geometry;
- webkit_window_properties_get_geometry(windowProperties, &geometry);
- if (geometry.x >= 0 && geometry.y >= 0)
- gtk_window_move(GTK_WINDOW(window), geometry.x, geometry.y);
- if (geometry.width > 0 && geometry.height > 0)
- gtk_window_resize(GTK_WINDOW(window), geometry.width, geometry.height);
-
- if (!webkit_window_properties_get_toolbar_visible(windowProperties))
- gtk_widget_hide(window->toolbar);
- else if (!webkit_window_properties_get_locationbar_visible(windowProperties))
- gtk_widget_hide(window->uriEntry);
-
- if (!webkit_window_properties_get_resizable(windowProperties))
- gtk_window_set_resizable(GTK_WINDOW(window), FALSE);
-
- gtk_widget_show(GTK_WIDGET(window));
-}
-
-static gboolean fullScreenMessageTimeoutCallback(BrowserWindow *window)
-{
- gtk_widget_hide(window->fullScreenMessageLabel);
- window->fullScreenMessageLabelId = 0;
- return FALSE;
-}
-
-static gboolean webViewEnterFullScreen(WebKitWebView *webView, BrowserWindow *window)
-{
- gchar *titleOrURI = g_strdup(webkit_web_view_get_title(window->webView));
- if (!titleOrURI)
- titleOrURI = getExternalURI(webkit_web_view_get_uri(window->webView));
- gchar *message = g_strdup_printf("%s is now full screen. Press ESC or f to exit.", titleOrURI);
- gtk_label_set_text(GTK_LABEL(window->fullScreenMessageLabel), message);
- g_free(titleOrURI);
- g_free(message);
-
- gtk_widget_show(window->fullScreenMessageLabel);
-
- window->fullScreenMessageLabelId = g_timeout_add_seconds(2, (GSourceFunc)fullScreenMessageTimeoutCallback, window);
- gtk_widget_hide(window->toolbar);
-
- return FALSE;
-}
-
-static gboolean webViewLeaveFullScreen(WebKitWebView *webView, BrowserWindow *window)
-{
- if (window->fullScreenMessageLabelId) {
- g_source_remove(window->fullScreenMessageLabelId);
- window->fullScreenMessageLabelId = 0;
- }
- gtk_widget_hide(window->fullScreenMessageLabel);
- gtk_widget_show(window->toolbar);
-
- return FALSE;
-}
-
-static GtkWidget *webViewCreate(WebKitWebView *webView, BrowserWindow *window)
-{
- WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView)));
- webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView));
-
- GtkWidget *newWindow = browser_window_new(newWebView, GTK_WINDOW(window));
- g_signal_connect(newWebView, "ready-to-show", G_CALLBACK(webViewReadyToShow), newWindow);
- g_signal_connect(newWebView, "run-as-modal", G_CALLBACK(webViewRunAsModal), newWindow);
- g_signal_connect(newWebView, "close", G_CALLBACK(webViewClose), newWindow);
- return GTK_WIDGET(newWebView);
-}
-
-static gboolean webViewLoadFailed(WebKitWebView *webView, WebKitLoadEvent loadEvent, const char *failingURI, GError *error, BrowserWindow *window)
-{
- gtk_entry_set_progress_fraction(GTK_ENTRY(window->uriEntry), 0.);
- return FALSE;
-}
-
-static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decisionType, BrowserWindow *window)
-{
- switch (decisionType) {
- case WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION: {
- WebKitNavigationPolicyDecision *navigationDecision = WEBKIT_NAVIGATION_POLICY_DECISION(decision);
- if (webkit_navigation_policy_decision_get_navigation_type(navigationDecision) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
- || webkit_navigation_policy_decision_get_mouse_button(navigationDecision) != GDK_BUTTON_MIDDLE)
- return FALSE;
-
- // Opening a new window if link clicked with the middle button.
- WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView)));
- GtkWidget *newWindow = browser_window_new(newWebView, GTK_WINDOW(window));
- webkit_web_view_load_request(newWebView, webkit_navigation_policy_decision_get_request(navigationDecision));
- gtk_widget_show(newWindow);
-
- webkit_policy_decision_ignore(decision);
- return TRUE;
- }
- case WEBKIT_POLICY_DECISION_TYPE_RESPONSE: {
- WebKitResponsePolicyDecision *responseDecision = WEBKIT_RESPONSE_POLICY_DECISION(decision);
- WebKitURIResponse *response = webkit_response_policy_decision_get_response(responseDecision);
- const char *mimeType = webkit_uri_response_get_mime_type(response);
-
- if (webkit_web_view_can_show_mime_type(webView, mimeType))
- return FALSE;
-
- WebKitWebResource *mainResource = webkit_web_view_get_main_resource(webView);
- WebKitURIRequest *request = webkit_response_policy_decision_get_request(responseDecision);
- const char *requestURI = webkit_uri_request_get_uri(request);
- if (g_strcmp0(webkit_web_resource_get_uri(mainResource), requestURI))
- return FALSE;
-
- webkit_policy_decision_download(decision);
- return TRUE;
- }
- case WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION:
- default:
- return FALSE;
- }
-}
-
-static gboolean webViewDecidePermissionRequest(WebKitWebView *webView, WebKitPermissionRequest *request, BrowserWindow *window)
-{
- if (!WEBKIT_IS_GEOLOCATION_PERMISSION_REQUEST(request))
- return FALSE;
-
- GtkWidget *dialog = gtk_message_dialog_new(GTK_WINDOW(window),
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT,
- GTK_MESSAGE_QUESTION,
- GTK_BUTTONS_YES_NO,
- "Geolocation request");
-
- gtk_message_dialog_format_secondary_text(GTK_MESSAGE_DIALOG(dialog), "Allow geolocation request?");
- g_signal_connect(dialog, "response", G_CALLBACK(geolocationRequestDialogCallback), g_object_ref(request));
- gtk_widget_show(dialog);
-
- return TRUE;
-}
-
-static void webViewMouseTargetChanged(WebKitWebView *webView, WebKitHitTestResult *hitTestResult, guint mouseModifiers, BrowserWindow *window)
-{
- if (!webkit_hit_test_result_context_is_link(hitTestResult)) {
- browserWindowSetStatusText(window, NULL);
- return;
- }
- browserWindowSetStatusText(window, webkit_hit_test_result_get_link_uri(hitTestResult));
-}
-
-static gboolean browserWindowCanZoomIn(BrowserWindow *window)
-{
- gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) * zoomStep;
- return zoomLevel < maximumZoomLevel;
-}
-
-static gboolean browserWindowCanZoomOut(BrowserWindow *window)
-{
- gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) / zoomStep;
- return zoomLevel > minimumZoomLevel;
-}
-
-static void browserWindowUpdateZoomActions(BrowserWindow *window)
-{
- gtk_widget_set_sensitive(window->zoomInItem, browserWindowCanZoomIn(window));
- gtk_widget_set_sensitive(window->zoomOutItem, browserWindowCanZoomOut(window));
-}
-
-static void webViewZoomLevelChanged(GObject *object, GParamSpec *paramSpec, BrowserWindow *window)
-{
- browserWindowUpdateZoomActions(window);
-}
-
-static void updateUriEntryIcon(BrowserWindow *window)
-{
- GtkEntry *entry = GTK_ENTRY(window->uriEntry);
- if (window->favicon)
- gtk_entry_set_icon_from_pixbuf(entry, GTK_ENTRY_ICON_PRIMARY, window->favicon);
- else
- gtk_entry_set_icon_from_stock(entry, GTK_ENTRY_ICON_PRIMARY, GTK_STOCK_NEW);
-}
-
-static void faviconChanged(GObject *object, GParamSpec *paramSpec, BrowserWindow *window)
-{
- GdkPixbuf *favicon = NULL;
- cairo_surface_t *surface = webkit_web_view_get_favicon(window->webView);
-
- if (surface) {
- int width = cairo_image_surface_get_width(surface);
- int height = cairo_image_surface_get_height(surface);
- favicon = gdk_pixbuf_get_from_surface(surface, 0, 0, width, height);
- }
-
- if (window->favicon)
- g_object_unref(window->favicon);
- window->favicon = favicon;
-
- updateUriEntryIcon(window);
-}
-
-static void zoomInCallback(BrowserWindow *window)
-{
- gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) * zoomStep;
- webkit_web_view_set_zoom_level(window->webView, zoomLevel);
-}
-
-static void zoomOutCallback(BrowserWindow *window)
-{
- gdouble zoomLevel = webkit_web_view_get_zoom_level(window->webView) / zoomStep;
- webkit_web_view_set_zoom_level(window->webView, zoomLevel);
-}
-
-static void browserWindowFinalize(GObject *gObject)
-{
- BrowserWindow *window = BROWSER_WINDOW(gObject);
- if (window->favicon) {
- g_object_unref(window->favicon);
- window->favicon = NULL;
- }
-
- if (window->fullScreenMessageLabelId)
- g_source_remove(window->fullScreenMessageLabelId);
-
- G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject);
-
- if (g_atomic_int_dec_and_test(&windowCount))
- gtk_main_quit();
-}
-
-static void browserWindowGetProperty(GObject *object, guint propId, GValue *value, GParamSpec *pspec)
-{
- BrowserWindow *window = BROWSER_WINDOW(object);
-
- switch (propId) {
- case PROP_VIEW:
- g_value_set_object(value, browser_window_get_view(window));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
- }
-}
-
-static void browserWindowSetProperty(GObject *object, guint propId, const GValue *value, GParamSpec *pspec)
-{
- BrowserWindow* window = BROWSER_WINDOW(object);
-
- switch (propId) {
- case PROP_VIEW:
- window->webView = g_value_get_object(value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID(object, propId, pspec);
- }
-}
-
-static void browser_window_init(BrowserWindow *window)
-{
- g_atomic_int_inc(&windowCount);
-
- gtk_window_set_title(GTK_WINDOW(window), defaultWindowTitle);
- gtk_window_set_default_size(GTK_WINDOW(window), 800, 600);
-
- window->uriEntry = gtk_entry_new();
- g_signal_connect_swapped(window->uriEntry, "activate", G_CALLBACK(activateUriEntryCallback), (gpointer)window);
- gtk_entry_set_icon_activatable(GTK_ENTRY(window->uriEntry), GTK_ENTRY_ICON_PRIMARY, FALSE);
- updateUriEntryIcon(window);
-
- /* Keyboard accelerators */
- GtkAccelGroup *accelGroup = gtk_accel_group_new();
- gtk_window_add_accel_group(GTK_WINDOW(window), accelGroup);
- g_object_unref(accelGroup);
-
- GtkWidget *toolbar = gtk_toolbar_new();
- window->toolbar = toolbar;
- gtk_orientable_set_orientation(GTK_ORIENTABLE(toolbar), GTK_ORIENTATION_HORIZONTAL);
- gtk_toolbar_set_style(GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH_HORIZ);
-
- GtkToolItem *item = gtk_menu_tool_button_new_from_stock(GTK_STOCK_GO_BACK);
- window->backItem = GTK_WIDGET(item);
- gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(item), 0);
- g_signal_connect_swapped(item, "clicked", G_CALLBACK(goBackCallback), (gpointer)window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_menu_tool_button_new_from_stock(GTK_STOCK_GO_FORWARD);
- window->forwardItem = GTK_WIDGET(item);
- gtk_menu_tool_button_set_menu(GTK_MENU_TOOL_BUTTON(item), 0);
- g_signal_connect_swapped(G_OBJECT(item), "clicked", G_CALLBACK(goForwardCallback), (gpointer)window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_tool_button_new_from_stock(GTK_STOCK_PREFERENCES);
- g_signal_connect_swapped(G_OBJECT(item), "clicked", G_CALLBACK(settingsCallback), window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_OUT);
- window->zoomOutItem = GTK_WIDGET(item);
- g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomOutCallback), window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_tool_button_new_from_stock(GTK_STOCK_ZOOM_IN);
- window->zoomInItem = GTK_WIDGET(item);
- g_signal_connect_swapped(item, "clicked", G_CALLBACK(zoomInCallback), window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_tool_item_new();
- gtk_tool_item_set_expand(item, TRUE);
- gtk_container_add(GTK_CONTAINER(item), window->uriEntry);
- gtk_widget_show(window->uriEntry);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_show(GTK_WIDGET(item));
-
- item = gtk_tool_button_new_from_stock(GTK_STOCK_REFRESH);
- g_signal_connect_swapped(item, "clicked", G_CALLBACK(reloadCallback), window);
- gtk_toolbar_insert(GTK_TOOLBAR(toolbar), item, -1);
- gtk_widget_add_accelerator(GTK_WIDGET(item), "clicked", accelGroup, GDK_KEY_F5, 0, GTK_ACCEL_VISIBLE);
- gtk_widget_show(GTK_WIDGET(item));
-
- GtkWidget *vbox = gtk_box_new(GTK_ORIENTATION_VERTICAL, 0);
- window->mainBox = vbox;
- gtk_box_pack_start(GTK_BOX(vbox), toolbar, FALSE, FALSE, 0);
- gtk_widget_show(toolbar);
-
- gtk_container_add(GTK_CONTAINER(window), vbox);
- gtk_widget_show(vbox);
-}
-
-static void browserWindowConstructed(GObject *gObject)
-{
- BrowserWindow *window = BROWSER_WINDOW(gObject);
-
- browserWindowUpdateZoomActions(window);
-
- g_signal_connect(window->webView, "notify::uri", G_CALLBACK(webViewURIChanged), window);
- g_signal_connect(window->webView, "notify::estimated-load-progress", G_CALLBACK(webViewLoadProgressChanged), window);
- g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window);
- g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window);
- g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window);
- g_signal_connect(window->webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window);
- g_signal_connect(window->webView, "permission-request", G_CALLBACK(webViewDecidePermissionRequest), window);
- g_signal_connect(window->webView, "mouse-target-changed", G_CALLBACK(webViewMouseTargetChanged), window);
- g_signal_connect(window->webView, "notify::zoom-level", G_CALLBACK(webViewZoomLevelChanged), window);
- g_signal_connect(window->webView, "notify::favicon", G_CALLBACK(faviconChanged), window);
- g_signal_connect(window->webView, "enter-fullscreen", G_CALLBACK(webViewEnterFullScreen), window);
- g_signal_connect(window->webView, "leave-fullscreen", G_CALLBACK(webViewLeaveFullScreen), window);
-
- g_signal_connect(webkit_web_view_get_context(window->webView), "download-started", G_CALLBACK(downloadStarted), window);
-
- WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView);
- g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window);
-
- GtkWidget *overlay = gtk_overlay_new();
- gtk_box_pack_start(GTK_BOX(window->mainBox), overlay, TRUE, TRUE, 0);
- gtk_widget_show(overlay);
-
- window->statusLabel = gtk_label_new(NULL);
- gtk_widget_set_halign(window->statusLabel, GTK_ALIGN_START);
- gtk_widget_set_valign(window->statusLabel, GTK_ALIGN_END);
- gtk_widget_set_margin_left(window->statusLabel, 1);
- gtk_widget_set_margin_right(window->statusLabel, 1);
- gtk_widget_set_margin_top(window->statusLabel, 1);
- gtk_widget_set_margin_bottom(window->statusLabel, 1);
- gtk_overlay_add_overlay(GTK_OVERLAY(overlay), window->statusLabel);
-
- gtk_container_add(GTK_CONTAINER(overlay), GTK_WIDGET(window->webView));
-
- window->fullScreenMessageLabel = gtk_label_new(NULL);
- gtk_widget_set_halign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER);
- gtk_widget_set_valign(window->fullScreenMessageLabel, GTK_ALIGN_CENTER);
- gtk_widget_set_no_show_all(window->fullScreenMessageLabel, TRUE);
- gtk_overlay_add_overlay(GTK_OVERLAY(overlay), window->fullScreenMessageLabel);
- gtk_widget_show(GTK_WIDGET(window->webView));
-}
-
-static void browser_window_class_init(BrowserWindowClass *klass)
-{
- GObjectClass *gobjectClass = G_OBJECT_CLASS(klass);
-
- gobjectClass->constructed = browserWindowConstructed;
- gobjectClass->get_property = browserWindowGetProperty;
- gobjectClass->set_property = browserWindowSetProperty;
- gobjectClass->finalize = browserWindowFinalize;
-
- g_object_class_install_property(gobjectClass,
- PROP_VIEW,
- g_param_spec_object("view",
- "View",
- "The web view of this window",
- WEBKIT_TYPE_WEB_VIEW,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY));
-}
-
-// Public API.
-GtkWidget *browser_window_new(WebKitWebView *view, GtkWindow *parent)
-{
- g_return_val_if_fail(WEBKIT_IS_WEB_VIEW(view), 0);
-
- return GTK_WIDGET(g_object_new(BROWSER_TYPE_WINDOW,
- "transient-for", parent,
- "type", GTK_WINDOW_TOPLEVEL,
- "view", view, NULL));
-}
-
-WebKitWebView *browser_window_get_view(BrowserWindow *window)
-{
- g_return_val_if_fail(BROWSER_IS_WINDOW(window), 0);
-
- return window->webView;
-}
-
-void browser_window_load_uri(BrowserWindow *window, const char *uri)
-{
- g_return_if_fail(BROWSER_IS_WINDOW(window));
- g_return_if_fail(uri);
-
- if (!g_str_has_prefix(uri, "javascript:")) {
- char *internalURI = getInternalURI(uri);
- webkit_web_view_load_uri(window->webView, internalURI);
- g_free(internalURI);
- return;
- }
-
- webkit_web_view_run_javascript(window->webView, strstr(uri, "javascript:"), NULL, NULL, NULL);
-}
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.h b/Tools/MiniBrowser/gtk/BrowserWindow.h
deleted file mode 100644
index 66675462f..000000000
--- a/Tools/MiniBrowser/gtk/BrowserWindow.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 BrowserWindow_h
-#define BrowserWindow_h
-
-#include <webkit2/webkit2.h>
-#include <gtk/gtk.h>
-
-G_BEGIN_DECLS
-
-#define BROWSER_TYPE_WINDOW (browser_window_get_type())
-#define BROWSER_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_CAST((obj), BROWSER_TYPE_WINDOW, BrowserWindow))
-#define BROWSER_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST((klass), BROWSER_TYPE_WINDOW, BrowserWindowClass))
-#define BROWSER_IS_WINDOW(obj) (G_TYPE_CHECK_INSTANCE_TYPE((obj), BROWSER_TYPE_WINDOW))
-#define BROWSER_IS_WINDOW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE((klass), BROWSER_TYPE_WINDOW))
-#define BROWSER_WINDOW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS((obj), BROWSER_TYPE_WINDOW, BrowserWindowClass))
-
-typedef struct _BrowserWindow BrowserWindow;
-typedef struct _BrowserWindowClass BrowserWindowClass;
-
-GType browser_window_get_type(void);
-
-GtkWidget* browser_window_new(WebKitWebView*, GtkWindow*);
-WebKitWebView* browser_window_get_view(BrowserWindow*);
-void browser_window_load_uri(BrowserWindow *, const char *uri);
-
-G_END_DECLS
-
-#endif
diff --git a/Tools/MiniBrowser/gtk/CMakeLists.txt b/Tools/MiniBrowser/gtk/CMakeLists.txt
deleted file mode 100644
index 14fd82f3f..000000000
--- a/Tools/MiniBrowser/gtk/CMakeLists.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-set(MINIBROWSER_DIR "${TOOLS_DIR}/MiniBrowser/gtk")
-set(DERIVED_SOURCES_MINIBROWSER_DIR "${CMAKE_BINARY_DIR}/DerivedSources/MiniBrowser")
-
-file(MAKE_DIRECTORY ${DERIVED_SOURCES_MINIBROWSER_DIR})
-
-set(MiniBrowser_SOURCES
- ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
- ${MINIBROWSER_DIR}/BrowserCellRendererVariant.h
- ${MINIBROWSER_DIR}/BrowserCellRendererVariant.c
- ${MINIBROWSER_DIR}/BrowserDownloadsBar.h
- ${MINIBROWSER_DIR}/BrowserDownloadsBar.c
- ${MINIBROWSER_DIR}/BrowserSettingsDialog.h
- ${MINIBROWSER_DIR}/BrowserSettingsDialog.c
- ${MINIBROWSER_DIR}/BrowserWindow.h
- ${MINIBROWSER_DIR}/BrowserWindow.c
- ${MINIBROWSER_DIR}/main.c
-)
-
-set(MiniBrowser_INCLUDE_DIRECTORIES
- ${DERIVED_SOURCES_MINIBROWSER_DIR}
- ${DERIVED_SOURCES_DIR}/webkit2gtk
- ${DERIVED_SOURCES_DIR}/ForwardingHeaders/webkit2gtk
- ${DERIVED_SOURCES_DIR}/ForwardingHeaders
- ${CMAKE_SOURCE_DIR}/Source
- ${GTK3_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
- ${LIBSOUP_INCLUDE_DIRS}
-)
-
-set(MiniBrowser_LIBRARIES
- ${JavaScriptCore_LIBRARY_NAME}
- WebKit2
- ${GTK3_LIBRARIES}
- ${GLIB_LIBRARIES}
-)
-
-add_custom_command(
- OUTPUT ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
- ${DERIVED_SOURCES_MINIBROWSER_DIR}/Browsermarshal.h
- MAIN_DEPENDENCY ${MINIBROWSER_DIR}/browser-marshal.list
- COMMAND glib-genmarshal --prefix=browser_marshal ${MINIBROWSER_DIR}/browser-marshal.list --body > ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.c
- COMMAND glib-genmarshal --prefix=browser_marshal ${MINIBROWSER_DIR}/browser-marshal.list --header > ${DERIVED_SOURCES_MINIBROWSER_DIR}/BrowserMarshal.h
- VERBATIM)
-
-add_definitions(-DWEBKIT_EXEC_PATH="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}")
-add_definitions(-DWEBKIT_INJECTED_BUNDLE_PATH="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}")
-
-include_directories(${MiniBrowser_INCLUDE_DIRECTORIES})
-add_executable(MiniBrowser ${MiniBrowser_SOURCES})
-target_link_libraries(MiniBrowser ${MiniBrowser_LIBRARIES})
-set_target_properties(MiniBrowser PROPERTIES FOLDER "Tools")
diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am
deleted file mode 100644
index f42a30b79..000000000
--- a/Tools/MiniBrowser/gtk/GNUmakefile.am
+++ /dev/null
@@ -1,73 +0,0 @@
-if ENABLE_WEBKIT2
-noinst_PROGRAMS += \
- Programs/MiniBrowser
-endif
-
-Programs_MiniBrowser_CPPFLAGS = \
- -I$(srcdir)/Source \
- -I$(top_builddir)/DerivedSources/WebKit2 \
- -I$(top_builddir)/DerivedSources/WebKit2/webkit2gtk \
- -I$(top_builddir)/DerivedSources/WebKit2/webkit2gtk/include \
- -DWEBKIT_EXEC_PATH=\"${shell pwd}/$(top_builddir)/Programs/\" \
- -DWEBKIT_INJECTED_BUNDLE_PATH=\"${shell pwd}/$(top_builddir)/.libs\" \
- $(global_cppflags) \
- $(javascriptcore_cppflags) \
- $(FREETYPE_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-
-Programs_MiniBrowser_SOURCES = \
- Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h \
- Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c \
- Tools/MiniBrowser/gtk/BrowserDownloadsBar.h \
- Tools/MiniBrowser/gtk/BrowserDownloadsBar.c \
- Tools/MiniBrowser/gtk/BrowserSettingsDialog.h \
- Tools/MiniBrowser/gtk/BrowserSettingsDialog.c \
- Tools/MiniBrowser/gtk/BrowserWindow.h \
- Tools/MiniBrowser/gtk/BrowserWindow.c \
- Tools/MiniBrowser/gtk/main.c
-
-minibrowser_built_sources += \
- DerivedSources/WebKit2/BrowserMarshal.h \
- DerivedSources/WebKit2/BrowserMarshal.c
-nodist_Programs_MiniBrowser_SOURCES = \
- $(minibrowser_built_sources)
-
-Programs_MiniBrowser_LDADD = \
- libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- $(FREETYPE_LIBS) \
- $(GLIB_LIBS) \
- $(GTK_LIBS) \
- $(LIBSOUP_LIBS)
-
-Programs_MiniBrowser_LDFLAGS = \
- -no-fast-install \
- -no-install
-
-CLEANFILES += \
- $(top_builddir)/Programs/MiniBrowser \
- $(minibrowser_built_sources) \
- $(top_builddir)/stamp-mini-browser-marshal.h \
- $(top_builddir)/stamp-mini-browser-marshal.c
-
-BUILT_SOURCES += $(minibrowser_built_sources)
-
-minibrowser_marshal_list = $(srcdir)/Tools/MiniBrowser/gtk/browser-marshal.list
-
-$(GENSOURCES_WEBKIT2)/BrowserMarshal.h: stamp-mini-browser-marshal.h
- @true
-$(GENSOURCES_WEBKIT2)/BrowserMarshal.c: stamp-mini-browser-marshal.c
- @true
-
-stamp-mini-browser-marshal.c: $(minibrowser_marshal_list)
- $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=browser_marshal $(minibrowser_marshal_list) --body > $(GENSOURCES_WEBKIT2)/BrowserMarshal.c && \
- echo timestamp > $(@F)
-
-stamp-mini-browser-marshal.h: $(MiniBrowser_marshal_list)
- $(AM_V_GEN)$(GLIB_GENMARSHAL) --prefix=browser_marshal $(minibrowser_marshal_list) --header > $(GENSOURCES_WEBKIT2)/BrowserMarshal.h && \
- echo timestamp > $(@F)
-
-EXTRA_DIST += \
- $(srcdir)/Tools/MiniBrowser/gtk/browser-marshal.list
-
diff --git a/Tools/MiniBrowser/gtk/browser-marshal.list b/Tools/MiniBrowser/gtk/browser-marshal.list
deleted file mode 100644
index e72aa4bc3..000000000
--- a/Tools/MiniBrowser/gtk/browser-marshal.list
+++ /dev/null
@@ -1 +0,0 @@
-VOID:STRING,BOXED
diff --git a/Tools/MiniBrowser/gtk/main.c b/Tools/MiniBrowser/gtk/main.c
deleted file mode 100644
index 4592d76bb..000000000
--- a/Tools/MiniBrowser/gtk/main.c
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2006, 2007 Apple Inc.
- * Copyright (C) 2007 Alp Toker <alp@atoker.com>
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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 "BrowserWindow.h"
-#include <errno.h>
-#include <gtk/gtk.h>
-#include <string.h>
-#include <webkit2/webkit2.h>
-
-#define MINI_BROWSER_ERROR (miniBrowserErrorQuark())
-
-static const gchar **uriArguments = NULL;
-static const char *miniBrowserAboutScheme = "minibrowser-about";
-
-typedef enum {
- MINI_BROWSER_ERROR_INVALID_ABOUT_PATH
-} MiniBrowserError;
-
-static GQuark miniBrowserErrorQuark()
-{
- return g_quark_from_string("minibrowser-quark");
-}
-
-static gchar *argumentToURL(const char *filename)
-{
- GFile *gfile = g_file_new_for_commandline_arg(filename);
- gchar *fileURL = g_file_get_uri(gfile);
- g_object_unref(gfile);
-
- return fileURL;
-}
-
-static void createBrowserWindow(const gchar *uri, WebKitSettings *webkitSettings)
-{
- GtkWidget *webView = webkit_web_view_new();
- GtkWidget *mainWindow = browser_window_new(WEBKIT_WEB_VIEW(webView), NULL);
- gchar *url = argumentToURL(uri);
-
- if (webkitSettings) {
- webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), webkitSettings);
- g_object_unref(webkitSettings);
- }
-
- browser_window_load_uri(BROWSER_WINDOW(mainWindow), url);
- g_free(url);
-
- gtk_widget_grab_focus(webView);
- gtk_widget_show(mainWindow);
-}
-
-static const GOptionEntry commandLineOptions[] =
-{
- { G_OPTION_REMAINING, 0, 0, G_OPTION_ARG_FILENAME_ARRAY, &uriArguments, 0, "[URL…]" },
- { 0, 0, 0, 0, 0, 0, 0 }
-};
-
-static gboolean parseOptionEntryCallback(const gchar *optionNameFull, const gchar *value, WebKitSettings *webSettings, GError **error)
-{
- if (strlen(optionNameFull) <= 2) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, "Invalid option %s", optionNameFull);
- return FALSE;
- }
-
- /* We have two -- in option name so remove them. */
- const gchar *optionName = optionNameFull + 2;
- GParamSpec *spec = g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), optionName);
- if (!spec) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_FAILED, "Cannot find web settings for option %s", optionNameFull);
- return FALSE;
- }
-
- switch (G_PARAM_SPEC_VALUE_TYPE(spec)) {
- case G_TYPE_BOOLEAN: {
- gboolean propertyValue = !(value && g_ascii_strcasecmp(value, "true") && strcmp(value, "1"));
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- case G_TYPE_STRING:
- g_object_set(G_OBJECT(webSettings), optionName, value, NULL);
- break;
- case G_TYPE_INT: {
- glong propertyValue;
- gchar *end;
-
- errno = 0;
- propertyValue = g_ascii_strtoll(value, &end, 0);
- if (errno == ERANGE || propertyValue > G_MAXINT || propertyValue < G_MININT) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Integer value '%s' for %s out of range", value, optionNameFull);
- return FALSE;
- }
- if (errno || value == end) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Cannot parse integer value '%s' for %s", value, optionNameFull);
- return FALSE;
- }
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- case G_TYPE_FLOAT: {
- gdouble propertyValue;
- gchar *end;
-
- errno = 0;
- propertyValue = g_ascii_strtod(value, &end);
- if (errno == ERANGE || propertyValue > G_MAXFLOAT || propertyValue < G_MINFLOAT) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Float value '%s' for %s out of range", value, optionNameFull);
- return FALSE;
- }
- if (errno || value == end) {
- g_set_error(error, G_OPTION_ERROR, G_OPTION_ERROR_BAD_VALUE, "Cannot parse float value '%s' for %s", value, optionNameFull);
- return FALSE;
- }
- g_object_set(G_OBJECT(webSettings), optionName, propertyValue, NULL);
- break;
- }
- default:
- g_assert_not_reached();
- }
-
- return TRUE;
-}
-
-static gboolean isValidParameterType(GType gParamType)
-{
- return (gParamType == G_TYPE_BOOLEAN || gParamType == G_TYPE_STRING || gParamType == G_TYPE_INT
- || gParamType == G_TYPE_FLOAT);
-}
-
-static GOptionEntry* getOptionEntriesFromWebKitSettings(WebKitSettings *webSettings)
-{
- GParamSpec **propertySpecs;
- GOptionEntry *optionEntries;
- guint numProperties, numEntries, i;
-
- propertySpecs = g_object_class_list_properties(G_OBJECT_GET_CLASS(webSettings), &numProperties);
- if (!propertySpecs)
- return NULL;
-
- optionEntries = g_new0(GOptionEntry, numProperties + 1);
- numEntries = 0;
- for (i = 0; i < numProperties; i++) {
- GParamSpec *param = propertySpecs[i];
-
- /* Fill in structures only for writable and not construct-only properties. */
- if (!param || !(param->flags & G_PARAM_WRITABLE) || (param->flags & G_PARAM_CONSTRUCT_ONLY))
- continue;
-
- GType gParamType = G_PARAM_SPEC_VALUE_TYPE(param);
- if (!isValidParameterType(gParamType))
- continue;
-
- GOptionEntry *optionEntry = &optionEntries[numEntries++];
- optionEntry->long_name = g_param_spec_get_name(param);
-
- /* There is no easy way to figure our short name for generated option entries.
- optionEntry.short_name=*/
- /* For bool arguments "enable" type make option argument not required. */
- if (gParamType == G_TYPE_BOOLEAN && (strstr(optionEntry->long_name, "enable")))
- optionEntry->flags = G_OPTION_FLAG_OPTIONAL_ARG;
- optionEntry->arg = G_OPTION_ARG_CALLBACK;
- optionEntry->arg_data = parseOptionEntryCallback;
- optionEntry->description = g_param_spec_get_blurb(param);
- optionEntry->arg_description = g_type_name(gParamType);
- }
- g_free(propertySpecs);
-
- return optionEntries;
-}
-
-static gboolean addSettingsGroupToContext(GOptionContext *context, WebKitSettings* webkitSettings)
-{
- GOptionEntry *optionEntries = getOptionEntriesFromWebKitSettings(webkitSettings);
- if (!optionEntries)
- return FALSE;
-
- GOptionGroup *webSettingsGroup = g_option_group_new("websettings",
- "WebKitSettings writable properties for default WebKitWebView",
- "WebKitSettings properties",
- webkitSettings,
- NULL);
- g_option_group_add_entries(webSettingsGroup, optionEntries);
- g_free(optionEntries);
-
- /* Option context takes ownership of the group. */
- g_option_context_add_group(context, webSettingsGroup);
-
- return TRUE;
-}
-
-static void
-aboutURISchemeRequestCallback(WebKitURISchemeRequest *request, gpointer userData)
-{
- GInputStream *stream;
- gsize streamLength;
- const gchar *path;
- gchar *contents;
- GError *error;
-
- path = webkit_uri_scheme_request_get_path(request);
- if (!g_strcmp0(path, "minibrowser")) {
- contents = g_strdup_printf("<html><body><h1>WebKitGTK+ MiniBrowser</h1><p>The WebKit2 test browser of the GTK+ port.</p><p>WebKit version: %d.%d.%d</p></body></html>",
- webkit_get_major_version(),
- webkit_get_minor_version(),
- webkit_get_micro_version());
- streamLength = strlen(contents);
- stream = g_memory_input_stream_new_from_data(contents, streamLength, g_free);
-
- webkit_uri_scheme_request_finish(request, stream, streamLength, "text/html");
- g_object_unref(stream);
- } else {
- error = g_error_new(MINI_BROWSER_ERROR, MINI_BROWSER_ERROR_INVALID_ABOUT_PATH, "Invalid about:%s page.", path);
- webkit_uri_scheme_request_finish_error(request, error);
- g_error_free(error);
- }
-}
-
-int main(int argc, char *argv[])
-{
- gtk_init(&argc, &argv);
-
- GOptionContext *context = g_option_context_new(NULL);
- g_option_context_add_main_entries(context, commandLineOptions, 0);
- g_option_context_add_group(context, gtk_get_option_group(TRUE));
-
- WebKitSettings *webkitSettings = webkit_settings_new();
- webkit_settings_set_enable_developer_extras(webkitSettings, TRUE);
- if (!addSettingsGroupToContext(context, webkitSettings)) {
- g_object_unref(webkitSettings);
- webkitSettings = 0;
- }
-
- GError *error = 0;
- if (!g_option_context_parse(context, &argc, &argv, &error)) {
- g_printerr("Cannot parse arguments: %s\n", error->message);
- g_error_free(error);
- g_option_context_free(context);
-
- return 1;
- }
- g_option_context_free (context);
-
-#ifdef WEBKIT_EXEC_PATH
- g_setenv("WEBKIT_INSPECTOR_PATH", WEBKIT_EXEC_PATH "resources/inspector", FALSE);
-#endif /* WEBKIT_EXEC_PATH */
- g_setenv("WEBKIT_INJECTED_BUNDLE_PATH", WEBKIT_INJECTED_BUNDLE_PATH, FALSE);
-
- // Enable the favicon database, by specifying the default directory.
- webkit_web_context_set_favicon_database_directory(webkit_web_context_get_default(), NULL);
-
- webkit_web_context_register_uri_scheme(webkit_web_context_get_default(), miniBrowserAboutScheme, aboutURISchemeRequestCallback, NULL, NULL);
-
- if (uriArguments) {
- int i;
-
- for (i = 0; uriArguments[i]; i++)
- createBrowserWindow(uriArguments[i], webkitSettings);
- } else
- createBrowserWindow("http://www.webkitgtk.org/", webkitSettings);
-
- gtk_main();
-
- return 0;
-}
diff --git a/Tools/MiniBrowser/mac/AppDelegate.h b/Tools/MiniBrowser/mac/AppDelegate.h
deleted file mode 100644
index 6129ea396..000000000
--- a/Tools/MiniBrowser/mac/AppDelegate.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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.
- */
-
-@interface BrowserAppDelegate : NSObject <NSApplicationDelegate> {
- WKContextRef _processContext;
- WKPageGroupRef _pageGroup;
- NSMutableSet *_browserWindows;
-}
-
-- (void)browserWindowWillClose:(NSWindow *)window;
-
-@end
diff --git a/Tools/MiniBrowser/mac/AppDelegate.m b/Tools/MiniBrowser/mac/AppDelegate.m
deleted file mode 100644
index 3bde3d1f5..000000000
--- a/Tools/MiniBrowser/mac/AppDelegate.m
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "AppDelegate.h"
-
-#import "WK1BrowserWindowController.h"
-#import "WK2BrowserWindowController.h"
-
-#import <WebKit2/WKContextPrivate.h>
-#import <WebKit2/WKStringCF.h>
-#import <WebKit2/WKURLCF.h>
-
-static NSString *defaultURL = @"http://www.webkit.org/";
-
-enum {
- WebKit1NewWindowTag = 1,
- WebKit2NewWindowTag = 2
-};
-
-@implementation BrowserAppDelegate
-
-void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo)
-{
- CFStringRef cfMessageName = WKStringCopyCFString(0, messageName);
-
- WKTypeID typeID = WKGetTypeID(messageBody);
- if (typeID == WKStringGetTypeID()) {
- CFStringRef cfMessageBody = WKStringCopyCFString(0, (WKStringRef)messageBody);
- LOG(@"ContextInjectedBundleClient - didReceiveMessage - MessageName: %@ MessageBody %@", cfMessageName, cfMessageBody);
- CFRelease(cfMessageBody);
- } else {
- LOG(@"ContextInjectedBundleClient - didReceiveMessage - MessageName: %@ (MessageBody Unhandled)\n", cfMessageName);
- }
-
- CFRelease(cfMessageName);
-
- WKStringRef newMessageName = WKStringCreateWithCFString(CFSTR("Response"));
- WKStringRef newMessageBody = WKStringCreateWithCFString(CFSTR("Roger that!"));
-
- WKContextPostMessageToInjectedBundle(context, newMessageName, newMessageBody);
-
- WKRelease(newMessageName);
- WKRelease(newMessageBody);
-}
-
-// MARK: History Client Callbacks
-
-static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void *clientInfo)
-{
- WKStringRef wkTitle = WKNavigationDataCopyTitle(navigationData);
- CFStringRef title = WKStringCopyCFString(0, wkTitle);
- WKRelease(wkTitle);
-
- WKURLRef wkURL = WKNavigationDataCopyURL(navigationData);
- CFURLRef url = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- LOG(@"HistoryClient - didNavigateWithNavigationData - title: %@ - url: %@", title, url);
- CFRelease(title);
- CFRelease(url);
-}
-
-static void didPerformClientRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo)
-{
- CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL);
- CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL);
- LOG(@"HistoryClient - didPerformClientRedirect - sourceURL: %@ - destinationURL: %@", cfSourceURL, cfDestinationURL);
- CFRelease(cfSourceURL);
- CFRelease(cfDestinationURL);
-}
-
-static void didPerformServerRedirect(WKContextRef context, WKPageRef page, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void *clientInfo)
-{
- CFURLRef cfSourceURL = WKURLCopyCFURL(0, sourceURL);
- CFURLRef cfDestinationURL = WKURLCopyCFURL(0, destinationURL);
- LOG(@"HistoryClient - didPerformServerRedirect - sourceURL: %@ - destinationURL: %@", cfSourceURL, cfDestinationURL);
- CFRelease(cfSourceURL);
- CFRelease(cfDestinationURL);
-}
-
-static void didUpdateHistoryTitle(WKContextRef context, WKPageRef page, WKStringRef title, WKURLRef URL, WKFrameRef frame, const void *clientInfo)
-{
- CFStringRef cfTitle = WKStringCopyCFString(0, title);
- CFURLRef cfURL = WKURLCopyCFURL(0, URL);
- LOG(@"HistoryClient - didUpdateHistoryTitle - title: %@ - URL: %@", cfTitle, cfURL);
- CFRelease(cfTitle);
- CFRelease(cfURL);
-}
-
-static void populateVisitedLinks(WKContextRef context, const void *clientInfo)
-{
- LOG(@"HistoryClient - populateVisitedLinks");
-}
-
-- (id)init
-{
- self = [super init];
- if (self) {
- WKContextHistoryClient historyClient = {
- kWKContextHistoryClientCurrentVersion,
- self,
- didNavigateWithNavigationData,
- didPerformClientRedirect,
- didPerformServerRedirect,
- didUpdateHistoryTitle,
- populateVisitedLinks
- };
-
- CFStringRef bundlePathCF = (CFStringRef)[[NSBundle mainBundle] pathForAuxiliaryExecutable:@"WebBundle.bundle"];
- WKStringRef bundlePath = WKStringCreateWithCFString(bundlePathCF);
-
- _processContext = WKContextCreateWithInjectedBundlePath(bundlePath);
-
- WKContextInjectedBundleClient bundleClient = {
- kWKContextInjectedBundleClientCurrentVersion,
- 0, /* clientInfo */
- didReceiveMessageFromInjectedBundle,
- 0, /* didReceiveSynchronousMessageFromInjectedBundle */
- 0 /* getInjectedBundleInitializationUserData */
- };
- WKContextSetInjectedBundleClient(_processContext, &bundleClient);
- WKContextSetHistoryClient(_processContext, &historyClient);
- WKContextSetCacheModel(_processContext, kWKCacheModelPrimaryWebBrowser);
-
- WKRelease(bundlePath);
-
- WKStringRef pageGroupIdentifier = WKStringCreateWithCFString(CFSTR("MiniBrowser"));
- _pageGroup = WKPageGroupCreateWithIdentifier(pageGroupIdentifier);
- WKRelease(pageGroupIdentifier);
-
- _browserWindows = [[NSMutableSet alloc] init];
- }
-
- return self;
-}
-
-- (IBAction)newWindow:(id)sender
-{
- BrowserWindowController *controller = nil;
-
- if (![sender respondsToSelector:@selector(tag)] || [sender tag] == WebKit1NewWindowTag)
- controller = [[WK1BrowserWindowController alloc] initWithWindowNibName:@"BrowserWindow"];
- else if ([sender tag] == WebKit2NewWindowTag)
- controller = [[WK2BrowserWindowController alloc] initWithContext:_processContext pageGroup:_pageGroup];
-
- if (!controller)
- return;
-
- [[controller window] makeKeyAndOrderFront:sender];
- [_browserWindows addObject:[controller window]];
-
- [controller loadURLString:defaultURL];
-}
-
-- (void)browserWindowWillClose:(NSWindow *)window
-{
- [_browserWindows removeObject:window];
-}
-
-- (void)applicationDidFinishLaunching:(NSNotification *)aNotification
-{
- [self newWindow:self];
-}
-
-- (void)applicationWillTerminate:(NSNotification *)notification
-{
- for (NSWindow* window in _browserWindows) {
- id delegate = [window delegate];
- assert([delegate isKindOfClass:[BrowserWindowController class]]);
- BrowserWindowController *controller = (BrowserWindowController *)delegate;
- [controller applicationTerminating];
- }
-
- WKRelease(_processContext);
- _processContext = 0;
-}
-
-- (BrowserWindowController *)frontmostBrowserWindowController
-{
- NSArray* windows = [NSApp windows];
- for (NSWindow* window in windows) {
- id delegate = [window delegate];
- assert([delegate isKindOfClass:[BrowserWindowController class]]);
- BrowserWindowController *controller = (BrowserWindowController *)delegate;
- assert([_browserWindows containsObject:[controller window]]);
- return controller;
- }
-
- return 0;
-}
-
-- (IBAction)openDocument:(id)sender
-{
- NSOpenPanel *openPanel = [[NSOpenPanel openPanel] retain];
- [openPanel beginForDirectory:nil
- file:nil
- types:nil
- modelessDelegate:self
- didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:)
- contextInfo:0];
-}
-
-- (void)openPanelDidEnd:(NSOpenPanel *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo
-{
- [sheet autorelease];
- if (returnCode != NSOKButton || ![[sheet filenames] count])
- return;
-
- NSString* filePath = [[sheet filenames] objectAtIndex:0];
-
- BrowserWindowController *controller = [self frontmostBrowserWindowController];
- if (!controller) {
- controller = [[WK2BrowserWindowController alloc] initWithContext:_processContext pageGroup:_pageGroup]; // FIXME: add a way to open in WK1 also.
- [[controller window] makeKeyAndOrderFront:self];
- }
-
- [controller loadURLString:[[NSURL fileURLWithPath:filePath] absoluteString]];
-}
-
-@end
diff --git a/Tools/MiniBrowser/mac/BrowserWindow.xib b/Tools/MiniBrowser/mac/BrowserWindow.xib
deleted file mode 100644
index 5984fe5d4..000000000
--- a/Tools/MiniBrowser/mac/BrowserWindow.xib
+++ /dev/null
@@ -1,1558 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1060</int>
- <string key="IBDocument.SystemVersion">10H545</string>
- <string key="IBDocument.InterfaceBuilderVersion">820</string>
- <string key="IBDocument.AppKitVersion">1038.35</string>
- <string key="IBDocument.HIToolboxVersion">461.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">820</string>
- </object>
- <object class="NSMutableArray" key="IBDocument.EditedObjectIDs">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <integer value="9"/>
- <integer value="71"/>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1000">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1001">
- <string key="NSClassName">BrowserWindowController</string>
- </object>
- <object class="NSCustomObject" id="1003">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1004">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSWindowTemplate" id="1005">
- <int key="NSWindowStyleMask">4111</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{517, 330}, {776, 608}}</string>
- <int key="NSWTFlags">544735232</int>
- <string key="NSWindowTitle">Window</string>
- <string key="NSWindowClass">NSWindow</string>
- <object class="NSToolbar" key="NSViewClass" id="726585754">
- <object class="NSMutableString" key="NSToolbarIdentifier">
- <characters key="NS.bytes">994A0CB1-7575-4F39-A65B-7165AB1E8015</characters>
- </object>
- <nil key="NSToolbarDelegate"/>
- <bool key="NSToolbarPrefersToBeShown">YES</bool>
- <bool key="NSToolbarShowsBaselineSeparator">YES</bool>
- <bool key="NSToolbarAllowsUserCustomization">YES</bool>
- <bool key="NSToolbarAutosavesConfiguration">NO</bool>
- <int key="NSToolbarDisplayMode">2</int>
- <int key="NSToolbarSizeMode">1</int>
- <object class="NSMutableDictionary" key="NSToolbarIBIdentifiedItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>255D29F2-C9AA-4B4B-BB43-B38FCD6A0BBB</string>
- <string>6BDC61B7-F1A8-425A-A212-9CAC59C56385</string>
- <string>73DE9F4B-73E2-4036-A134-2D9E029DA980</string>
- <string>88C16109-D40F-4682-BCE4-CBEE2EDE32D2</string>
- <string>E1A9D32A-59E3-467B-9ABA-A95780416E69</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSToolbarItem" id="16289946">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">255D29F2-C9AA-4B4B-BB43-B38FCD6A0BBB</characters>
- </object>
- <string key="NSToolbarItemLabel">Location</string>
- <string key="NSToolbarItemPaletteLabel">Location</string>
- <nil key="NSToolbarItemToolTip"/>
- <object class="NSTextField" key="NSToolbarItemView" id="690456651">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">266</int>
- <string key="NSFrame">{{0, 14}, {565, 22}}</string>
- <int key="NSViewLayerContentsRedrawPolicy">2</int>
- <bool key="NSEnabled">YES</bool>
- <object class="NSTextFieldCell" key="NSCell" id="1023147716">
- <int key="NSCellFlags">-1804468671</int>
- <int key="NSCellFlags2">268436480</int>
- <string key="NSContents"/>
- <object class="NSFont" key="NSSupport" id="1064395332">
- <string key="NSName">LucidaGrande</string>
- <double key="NSSize">13</double>
- <int key="NSfFlags">1044</int>
- </object>
- <reference key="NSControlView" ref="690456651"/>
- <bool key="NSDrawsBackground">YES</bool>
- <object class="NSColor" key="NSBackgroundColor" id="1032961300">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textBackgroundColor</string>
- <object class="NSColor" key="NSColor">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MQA</bytes>
- </object>
- </object>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">textColor</string>
- <object class="NSColor" key="NSColor" id="365730878">
- <int key="NSColorSpace">3</int>
- <bytes key="NSWhite">MAA</bytes>
- </object>
- </object>
- </object>
- </object>
- <nil key="NSToolbarItemImage"/>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{200, 22}</string>
- <string key="NSToolbarItemMaxSize">{800, 22}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">0</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- <object class="NSToolbarItem" id="457655522">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">6BDC61B7-F1A8-425A-A212-9CAC59C56385</characters>
- </object>
- <string key="NSToolbarItemLabel">Progress</string>
- <string key="NSToolbarItemPaletteLabel">Progress</string>
- <nil key="NSToolbarItemToolTip"/>
- <object class="NSProgressIndicator" key="NSToolbarItemView" id="128750774">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">1289</int>
- <object class="NSPSMatrix" key="NSDrawMatrix"/>
- <string key="NSFrame">{{19, 14}, {16, 16}}</string>
- <int key="NSpiFlags">28936</int>
- <double key="NSMaxValue">1</double>
- </object>
- <nil key="NSToolbarItemImage"/>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{16, 16}</string>
- <string key="NSToolbarItemMaxSize">{16, 16}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">-1</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- <object class="NSToolbarItem" id="332491395">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">73DE9F4B-73E2-4036-A134-2D9E029DA980</characters>
- </object>
- <string key="NSToolbarItemLabel">Go Back</string>
- <string key="NSToolbarItemPaletteLabel">Go Back</string>
- <nil key="NSToolbarItemToolTip"/>
- <object class="NSButton" key="NSToolbarItemView" id="777930419">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{9, 14}, {32, 25}}</string>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="663899880">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1064395332"/>
- <reference key="NSControlView" ref="777930419"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">163</int>
- <object class="NSCustomResource" key="NSNormalImage" id="206098440">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSGoLeftTemplate</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <reference key="NSToolbarItemImage" ref="206098440"/>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{32, 25}</string>
- <string key="NSToolbarItemMaxSize">{32, 25}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">0</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- <object class="NSToolbarItem" id="818723416">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">88C16109-D40F-4682-BCE4-CBEE2EDE32D2</characters>
- </object>
- <string key="NSToolbarItemLabel">Refresh</string>
- <string key="NSToolbarItemPaletteLabel">Refresh</string>
- <nil key="NSToolbarItemToolTip"/>
- <object class="NSButton" key="NSToolbarItemView" id="35464578">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{10, 14}, {29, 25}}</string>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="366486485">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1064395332"/>
- <reference key="NSControlView" ref="35464578"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">163</int>
- <object class="NSCustomResource" key="NSNormalImage" id="443763357">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSRefreshTemplate</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <reference key="NSToolbarItemImage" ref="443763357"/>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{29, 25}</string>
- <string key="NSToolbarItemMaxSize">{29, 25}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">0</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- <object class="NSToolbarItem" id="928383107">
- <object class="NSMutableString" key="NSToolbarItemIdentifier">
- <characters key="NS.bytes">E1A9D32A-59E3-467B-9ABA-A95780416E69</characters>
- </object>
- <string key="NSToolbarItemLabel">Go Forward</string>
- <string key="NSToolbarItemPaletteLabel">Go Forward</string>
- <nil key="NSToolbarItemToolTip"/>
- <object class="NSButton" key="NSToolbarItemView" id="95415629">
- <nil key="NSNextResponder"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{19, 14}, {32, 25}}</string>
- <bool key="NSEnabled">YES</bool>
- <object class="NSButtonCell" key="NSCell" id="767612038">
- <int key="NSCellFlags">-2080244224</int>
- <int key="NSCellFlags2">134217728</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1064395332"/>
- <reference key="NSControlView" ref="95415629"/>
- <int key="NSButtonFlags">-2033434369</int>
- <int key="NSButtonFlags2">163</int>
- <object class="NSCustomResource" key="NSNormalImage" id="163672266">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSGoRightTemplate</string>
- </object>
- <string key="NSAlternateContents"/>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- </object>
- <reference key="NSToolbarItemImage" ref="163672266"/>
- <nil key="NSToolbarItemTarget"/>
- <nil key="NSToolbarItemAction"/>
- <string key="NSToolbarItemMinSize">{32, 25}</string>
- <string key="NSToolbarItemMaxSize">{32, 25}</string>
- <bool key="NSToolbarItemEnabled">YES</bool>
- <bool key="NSToolbarItemAutovalidates">YES</bool>
- <int key="NSToolbarItemTag">0</int>
- <bool key="NSToolbarIsUserRemovable">YES</bool>
- <int key="NSToolbarItemVisibilityPriority">0</int>
- </object>
- </object>
- </object>
- <object class="NSArray" key="NSToolbarIBAllowedItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="332491395"/>
- <reference ref="928383107"/>
- <reference ref="818723416"/>
- <reference ref="457655522"/>
- <reference ref="16289946"/>
- </object>
- <object class="NSMutableArray" key="NSToolbarIBDefaultItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="332491395"/>
- <reference ref="928383107"/>
- <reference ref="818723416"/>
- <reference ref="16289946"/>
- <reference ref="457655522"/>
- </object>
- <object class="NSMutableArray" key="NSToolbarIBSelectableItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="1006">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomView" id="877383975">
- <reference key="NSNextResponder" ref="1006"/>
- <int key="NSvFlags">274</int>
- <string key="NSFrameSize">{776, 608}</string>
- <reference key="NSSuperview" ref="1006"/>
- <int key="NSViewLayerContentsRedrawPolicy">2</int>
- <string key="NSClassName">NSView</string>
- </object>
- </object>
- <string key="NSFrameSize">{776, 608}</string>
- <reference key="NSSuperview"/>
- <int key="NSViewLayerContentsRedrawPolicy">2</int>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <string key="NSFrameAutosaveName">Main Window</string>
- </object>
- <object class="NSWindowTemplate" id="833876351">
- <int key="NSWindowStyleMask">147</int>
- <int key="NSWindowBacking">2</int>
- <string key="NSWindowRect">{{230, 479}, {452, 62}}</string>
- <int key="NSWTFlags">-461897728</int>
- <string key="NSWindowTitle">Find</string>
- <string key="NSWindowClass">NSPanel</string>
- <nil key="NSViewClass"/>
- <string key="NSWindowContentMaxSize">{1.79769e+308, 1.79769e+308}</string>
- <object class="NSView" key="NSWindowView" id="585866018">
- <reference key="NSNextResponder"/>
- <int key="NSvFlags">256</int>
- <object class="NSMutableArray" key="NSSubviews">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSSearchField" id="841639270">
- <reference key="NSNextResponder" ref="585866018"/>
- <int key="NSvFlags">268</int>
- <string key="NSFrame">{{20, 20}, {412, 22}}</string>
- <reference key="NSSuperview" ref="585866018"/>
- <bool key="NSEnabled">YES</bool>
- <object class="NSSearchFieldCell" key="NSCell" id="41426839">
- <int key="NSCellFlags">343014976</int>
- <int key="NSCellFlags2">268436544</int>
- <string key="NSContents"/>
- <reference key="NSSupport" ref="1064395332"/>
- <reference key="NSControlView" ref="841639270"/>
- <bool key="NSDrawsBackground">YES</bool>
- <int key="NSTextBezelStyle">1</int>
- <reference key="NSBackgroundColor" ref="1032961300"/>
- <object class="NSColor" key="NSTextColor">
- <int key="NSColorSpace">6</int>
- <string key="NSCatalogName">System</string>
- <string key="NSColorName">controlTextColor</string>
- <reference key="NSColor" ref="365730878"/>
- </object>
- <object class="NSButtonCell" key="NSSearchButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">search</string>
- <reference key="NSControlView" ref="841639270"/>
- <string key="NSAction">_searchFieldSearch:</string>
- <reference key="NSTarget" ref="41426839"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <object class="NSButtonCell" key="NSCancelButtonCell">
- <int key="NSCellFlags">130560</int>
- <int key="NSCellFlags2">0</int>
- <string key="NSContents">clear</string>
- <object class="NSMutableArray" key="NSAccessibilityOverriddenAttributes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMutableDictionary">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>AXDescription</string>
- <string>NSAccessibilityEncodedAttributesValueType</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>cancel</string>
- <integer value="1"/>
- </object>
- </object>
- </object>
- <reference key="NSControlView" ref="841639270"/>
- <string key="NSAction">_searchFieldCancel:</string>
- <reference key="NSTarget" ref="41426839"/>
- <int key="NSButtonFlags">138690815</int>
- <int key="NSButtonFlags2">0</int>
- <string key="NSKeyEquivalent"/>
- <int key="NSPeriodicDelay">400</int>
- <int key="NSPeriodicInterval">75</int>
- </object>
- <int key="NSMaximumRecents">255</int>
- </object>
- </object>
- </object>
- <string key="NSFrameSize">{452, 62}</string>
- <reference key="NSSuperview"/>
- </object>
- <string key="NSScreenRect">{{0, 0}, {1920, 1178}}</string>
- <string key="NSMaxSize">{1.79769e+308, 1.79769e+308}</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">window</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="1005"/>
- </object>
- <int key="connectionID">3</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1005"/>
- <reference key="destination" ref="1001"/>
- </object>
- <int key="connectionID">4</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">urlText</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="690456651"/>
- </object>
- <int key="connectionID">32</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">progressIndicator</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="128750774"/>
- </object>
- <int key="connectionID">33</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">reloadButton</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="35464578"/>
- </object>
- <int key="connectionID">34</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">reload:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="35464578"/>
- </object>
- <int key="connectionID">35</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">fetch:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="690456651"/>
- </object>
- <int key="connectionID">36</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">containerView</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="877383975"/>
- </object>
- <int key="connectionID">37</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">backButton</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="777930419"/>
- </object>
- <int key="connectionID">46</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">forwardButton</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="95415629"/>
- </object>
- <int key="connectionID">47</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">goBack:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="332491395"/>
- </object>
- <int key="connectionID">61</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">goForward:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="928383107"/>
- </object>
- <int key="connectionID">62</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">toolbar</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="726585754"/>
- </object>
- <int key="connectionID">67</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">find:</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="841639270"/>
- </object>
- <int key="connectionID">76</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">findPanelWindow</string>
- <reference key="source" ref="1001"/>
- <reference key="destination" ref="833876351"/>
- </object>
- <int key="connectionID">77</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <reference key="object" ref="0"/>
- <reference key="children" ref="1000"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1001"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1003"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1004"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">1</int>
- <reference key="object" ref="1005"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1006"/>
- <reference ref="726585754"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">2</int>
- <reference key="object" ref="1006"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="877383975"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">9</int>
- <reference key="object" ref="877383975"/>
- <reference key="parent" ref="1006"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">48</int>
- <reference key="object" ref="726585754"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="332491395"/>
- <reference ref="928383107"/>
- <reference ref="818723416"/>
- <reference ref="16289946"/>
- <reference ref="457655522"/>
- </object>
- <reference key="parent" ref="1005"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="332491395"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="777930419"/>
- </object>
- <reference key="parent" ref="726585754"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">40</int>
- <reference key="object" ref="777930419"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="663899880"/>
- </object>
- <reference key="parent" ref="332491395"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">41</int>
- <reference key="object" ref="663899880"/>
- <reference key="parent" ref="777930419"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="928383107"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="95415629"/>
- </object>
- <reference key="parent" ref="726585754"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">42</int>
- <reference key="object" ref="95415629"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="767612038"/>
- </object>
- <reference key="parent" ref="928383107"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">43</int>
- <reference key="object" ref="767612038"/>
- <reference key="parent" ref="95415629"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="818723416"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="35464578"/>
- </object>
- <reference key="parent" ref="726585754"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="35464578"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="366486485"/>
- </object>
- <reference key="parent" ref="818723416"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="366486485"/>
- <reference key="parent" ref="35464578"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">59</int>
- <reference key="object" ref="16289946"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="690456651"/>
- </object>
- <reference key="parent" ref="726585754"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">10</int>
- <reference key="object" ref="690456651"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023147716"/>
- </object>
- <reference key="parent" ref="16289946"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">11</int>
- <reference key="object" ref="1023147716"/>
- <reference key="parent" ref="690456651"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">60</int>
- <reference key="object" ref="457655522"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="128750774"/>
- </object>
- <reference key="parent" ref="726585754"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">21</int>
- <reference key="object" ref="128750774"/>
- <reference key="parent" ref="457655522"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">70</int>
- <reference key="object" ref="833876351"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="585866018"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">71</int>
- <reference key="object" ref="585866018"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="841639270"/>
- </object>
- <reference key="parent" ref="833876351"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="841639270"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="41426839"/>
- </object>
- <reference key="parent" ref="585866018"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="41426839"/>
- <reference key="parent" ref="841639270"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>1.IBEditorWindowLastContentRect</string>
- <string>1.IBPluginDependency</string>
- <string>1.IBWindowTemplateEditedContentRect</string>
- <string>1.NSWindowTemplate.visibleAtLaunch</string>
- <string>1.WindowOrigin</string>
- <string>1.editorWindowContentRectSynchronizationRect</string>
- <string>10.IBPluginDependency</string>
- <string>11.IBPluginDependency</string>
- <string>2.IBPluginDependency</string>
- <string>21.IBPluginDependency</string>
- <string>21.IBViewIntegration.shadowBlurRadius</string>
- <string>21.IBViewIntegration.shadowColor</string>
- <string>21.IBViewIntegration.shadowOffsetHeight</string>
- <string>21.IBViewIntegration.shadowOffsetWidth</string>
- <string>23.IBPluginDependency</string>
- <string>24.IBPluginDependency</string>
- <string>40.IBPluginDependency</string>
- <string>41.IBPluginDependency</string>
- <string>42.IBPluginDependency</string>
- <string>43.IBPluginDependency</string>
- <string>48.IBEditorWindowLastContentRect</string>
- <string>48.IBPluginDependency</string>
- <string>56.CustomClassName</string>
- <string>57.CustomClassName</string>
- <string>58.CustomClassName</string>
- <string>70.IBEditorWindowLastContentRect</string>
- <string>70.IBPluginDependency</string>
- <string>70.IBWindowTemplateEditedContentRect</string>
- <string>70.NSWindowTemplate.visibleAtLaunch</string>
- <string>71.IBPluginDependency</string>
- <string>74.IBPluginDependency</string>
- <string>75.IBPluginDependency</string>
- <string>9.IBPluginDependency</string>
- <string>9.IBViewBoundsToFrameTransform</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{{404, 157}, {776, 608}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{404, 157}, {776, 608}}</string>
- <integer value="1"/>
- <string>{196, 240}</string>
- <string>{{202, 428}, {480, 270}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <real value="0.0"/>
- <reference ref="365730878"/>
- <real value="0.0"/>
- <real value="0.0"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{422, 781}, {616, 0}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>MBToolbarItem</string>
- <string>MBToolbarItem</string>
- <string>MBToolbarItem</string>
- <string>{{558, 468}, {452, 62}}</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>{{558, 468}, {452, 62}}</string>
- <boolean value="NO"/>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <object class="NSAffineTransform"/>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">77</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">BrowserWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>dumpSourceToConsole:</string>
- <string>fetch:</string>
- <string>find:</string>
- <string>forceRepaint:</string>
- <string>goBack:</string>
- <string>goForward:</string>
- <string>reload:</string>
- <string>removeReinsertWebView:</string>
- <string>resetZoom:</string>
- <string>showHideWebView:</string>
- <string>toggleZoomMode:</string>
- <string>zoomIn:</string>
- <string>zoomOut:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>dumpSourceToConsole:</string>
- <string>fetch:</string>
- <string>find:</string>
- <string>forceRepaint:</string>
- <string>goBack:</string>
- <string>goForward:</string>
- <string>reload:</string>
- <string>removeReinsertWebView:</string>
- <string>resetZoom:</string>
- <string>showHideWebView:</string>
- <string>toggleZoomMode:</string>
- <string>zoomIn:</string>
- <string>zoomOut:</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">dumpSourceToConsole:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">fetch:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">find:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">forceRepaint:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">goBack:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">goForward:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">reload:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">removeReinsertWebView:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">resetZoom:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">showHideWebView:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">toggleZoomMode:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">zoomIn:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">zoomOut:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>backButton</string>
- <string>containerView</string>
- <string>findPanelWindow</string>
- <string>forwardButton</string>
- <string>progressIndicator</string>
- <string>reloadButton</string>
- <string>toolbar</string>
- <string>urlText</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSButton</string>
- <string>NSView</string>
- <string>NSWindow</string>
- <string>NSButton</string>
- <string>NSProgressIndicator</string>
- <string>NSButton</string>
- <string>NSToolbar</string>
- <string>NSTextField</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>backButton</string>
- <string>containerView</string>
- <string>findPanelWindow</string>
- <string>forwardButton</string>
- <string>progressIndicator</string>
- <string>reloadButton</string>
- <string>toolbar</string>
- <string>urlText</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">backButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">containerView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">findPanelWindow</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">forwardButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">progressIndicator</string>
- <string key="candidateClassName">NSProgressIndicator</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">reloadButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">toolbar</string>
- <string key="candidateClassName">NSToolbar</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">urlText</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">mac/BrowserWindowController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">BrowserWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBUserSource</string>
- <string key="minorKey"/>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">MBToolbarItem</string>
- <string key="superclassName">NSToolbarItem</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">MBToolbarItem.h</string>
- </object>
- </object>
- </object>
- <object class="NSMutableArray" key="referencedPartialClassDescriptionsV3.2+">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">NSActionCell</string>
- <string key="superclassName">NSCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSActionCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="558771426">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplication.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="344596456">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSApplicationScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="428409299">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSColorPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSHelpManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPageLayout.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSApplication</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSUserInterfaceItemSearching.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButton</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButton.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSButtonCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSButtonCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSCell</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSControl</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="297186634">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSControl.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSFormatter</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFormatter.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSMenu</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="808053469">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenu.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSAccessibility.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="558771426"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="344596456"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="428409299"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="297186634"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDictionaryController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDragging.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSFontPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSKeyValueBinding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <reference key="sourceIdentifier" ref="808053469"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSNibLoading.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSOutlineView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPasteboard.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSavePanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTableView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="335804019">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbarItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier" id="555757547">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSError.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSFileManager.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyValueObserving.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSKeyedArchiver.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObject.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSObjectScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSPortCoder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSRunLoop.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptClassDescription.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptKeyValueCoding.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptObjectSpecifiers.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSScriptWhoseTests.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSThread.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURL.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLConnection.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">Foundation.framework/Headers/NSURLDownload.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSPanel</string>
- <string key="superclassName">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSPanel.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSProgressIndicator</string>
- <string key="superclassName">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSProgressIndicator.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSInterfaceStyle.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSResponder</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSResponder.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchField</string>
- <string key="superclassName">NSTextField</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSSearchFieldCell</string>
- <string key="superclassName">NSTextFieldCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSSearchFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextField</string>
- <string key="superclassName">NSControl</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextField.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSTextFieldCell</string>
- <string key="superclassName">NSActionCell</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSTextFieldCell.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbar</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSToolbar.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSToolbarItem</string>
- <string key="superclassName">NSObject</string>
- <reference key="sourceIdentifier" ref="335804019"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSClipView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSMenuItem.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSRulerView.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSView</string>
- <string key="superclassName">NSResponder</string>
- <reference key="sourceIdentifier" ref="555757547"/>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSDrawer.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <string key="superclassName">NSResponder</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindow.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindow</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowScripting.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSWindowController</string>
- <string key="superclassName">NSResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">showWindow:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">showWindow:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">showWindow:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBFrameworkSource</string>
- <string key="minorKey">AppKit.framework/Headers/NSWindowController.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <string key="IBDocument.LastKnownRelativeProjectPath">../MiniBrowser.xcodeproj</string>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSGoLeftTemplate</string>
- <string>NSGoRightTemplate</string>
- <string>NSRefreshTemplate</string>
- </object>
- <object class="NSMutableArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{9, 9}</string>
- <string>{9, 9}</string>
- <string>{10, 12}</string>
- </object>
- </object>
- </data>
-</archive>
diff --git a/Tools/MiniBrowser/mac/BrowserWindowController.h b/Tools/MiniBrowser/mac/BrowserWindowController.h
deleted file mode 100644
index 482184b65..000000000
--- a/Tools/MiniBrowser/mac/BrowserWindowController.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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>
-
-@protocol BrowserController
-
-- (IBAction)fetch:(id)sender;
-- (IBAction)reload:(id)sender;
-- (IBAction)forceRepaint:(id)sender;
-- (IBAction)goBack:(id)sender;
-- (IBAction)goForward:(id)sender;
-
-- (IBAction)showHideWebView:(id)sender;
-- (IBAction)removeReinsertWebView:(id)sender;
-
-- (IBAction)zoomIn:(id)sender;
-- (IBAction)zoomOut:(id)sender;
-- (IBAction)resetZoom:(id)sender;
-- (BOOL)canZoomIn;
-- (BOOL)canZoomOut;
-- (BOOL)canResetZoom;
-
-- (IBAction)toggleZoomMode:(id)sender;
-- (IBAction)togglePaginationMode:(id)sender;
-
-- (IBAction)toggleTransparentWindow:(id)sender;
-
-- (IBAction)dumpSourceToConsole:(id)sender;
-
-- (IBAction)find:(id)sender;
-
-@end
-
-@interface BrowserWindowController : NSWindowController {
- IBOutlet NSProgressIndicator *progressIndicator;
- IBOutlet NSButton *reloadButton;
- IBOutlet NSButton *backButton;
- IBOutlet NSButton *forwardButton;
- IBOutlet NSToolbar *toolbar;
- IBOutlet NSTextField *urlText;
- IBOutlet NSView *containerView;
-
- IBOutlet NSWindow *findPanelWindow;
-
- BOOL _zoomTextOnly;
-}
-
-- (void)loadURLString:(NSString *)urlString;
-- (NSString *)addProtocolIfNecessary:(NSString *)address;
-
-- (void)applicationTerminating;
-
-- (IBAction)openLocation:(id)sender;
-
-@end
-
diff --git a/Tools/MiniBrowser/mac/BrowserWindowController.m b/Tools/MiniBrowser/mac/BrowserWindowController.m
deleted file mode 100644
index ba38d2563..000000000
--- a/Tools/MiniBrowser/mac/BrowserWindowController.m
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "BrowserWindowController.h"
-
-@interface BrowserWindowController ()
-
-@end
-
-@implementation BrowserWindowController
-
-- (id)initWithWindow:(NSWindow *)window
-{
- self = [super initWithWindow:window];
- if (self) {
- }
-
- return self;
-}
-
-- (void)windowDidLoad
-{
- [super windowDidLoad];
-}
-
-- (IBAction)openLocation:(id)sender
-{
- [[self window] makeFirstResponder:urlText];
-}
-
-- (void)loadURLString:(NSString *)urlString
-{
-}
-
-- (void)applicationTerminating
-{
-}
-
-- (NSString *)addProtocolIfNecessary:(NSString *)address
-{
- if ([address rangeOfString:@"://"].length > 0)
- return address;
-
- return [@"http://" stringByAppendingString:address];
-}
-
-@end
diff --git a/Tools/MiniBrowser/mac/Info.plist b/Tools/MiniBrowser/mac/Info.plist
deleted file mode 100644
index 7564a7eb7..000000000
--- a/Tools/MiniBrowser/mac/Info.plist
+++ /dev/null
@@ -1,32 +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>${EXECUTABLE_NAME}</string>
- <key>CFBundleIconFile</key>
- <string>MiniBrowser</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</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>????</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>LSMinimumSystemVersion</key>
- <string>${MACOSX_DEPLOYMENT_TARGET}</string>
- <key>CFBundleVersion</key>
- <string>1</string>
- <key>NSMainNibFile</key>
- <string>MainMenu</string>
- <key>NSPrincipalClass</key>
- <string>NSApplication</string>
-</dict>
-</plist>
diff --git a/Tools/MiniBrowser/mac/MainMenu.xib b/Tools/MiniBrowser/mac/MainMenu.xib
deleted file mode 100644
index f40e9bd2b..000000000
--- a/Tools/MiniBrowser/mac/MainMenu.xib
+++ /dev/null
@@ -1,2790 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archive type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="7.10">
- <data>
- <int key="IBDocument.SystemTarget">1080</int>
- <string key="IBDocument.SystemVersion">12C52</string>
- <string key="IBDocument.InterfaceBuilderVersion">4109</string>
- <string key="IBDocument.AppKitVersion">1187.34</string>
- <string key="IBDocument.HIToolboxVersion">625.00</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginVersions">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string key="NS.object.0">4109</string>
- </object>
- <object class="NSArray" key="IBDocument.IntegratedClassDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSCustomObject</string>
- <string>NSMenu</string>
- <string>NSMenuItem</string>
- </object>
- <object class="NSArray" key="IBDocument.PluginDependencies">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- <object class="NSMutableDictionary" key="IBDocument.Metadata">
- <string key="NS.key.0">PluginDependencyRecalculationVersion</string>
- <integer value="1" key="NS.object.0"/>
- </object>
- <object class="NSMutableArray" key="IBDocument.RootObjects" id="1048">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSCustomObject" id="1021">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSCustomObject" id="1014">
- <string key="NSClassName">FirstResponder</string>
- </object>
- <object class="NSCustomObject" id="1050">
- <string key="NSClassName">NSApplication</string>
- </object>
- <object class="NSMenu" id="649796088">
- <string key="NSTitle">AMainMenu</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="694149608">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">MiniBrowser</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <object class="NSCustomResource" key="NSOnImage" id="35465992">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuCheckmark</string>
- </object>
- <object class="NSCustomResource" key="NSMixedImage" id="502551668">
- <string key="NSClassName">NSImage</string>
- <string key="NSResourceName">NSMenuMixedState</string>
- </object>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="110575045">
- <string key="NSTitle">MiniBrowser</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="238522557">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">About MiniBrowser</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="304266470">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="609285721">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Preferences…</string>
- <string key="NSKeyEquiv">,</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="481834944">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1046388886">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Services</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="752062318">
- <string key="NSTitle">Services</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <string key="NSName">_NSServicesMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="646227648">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="755159360">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide MiniBrowser</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="342932134">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Hide Others</string>
- <string key="NSKeyEquiv">h</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="908899353">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Show All</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1056857174">
- <reference key="NSMenu" ref="110575045"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="632727374">
- <reference key="NSMenu" ref="110575045"/>
- <string key="NSTitle">Quit MiniBrowser</string>
- <string key="NSKeyEquiv">q</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSAppleMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="379814623">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">File</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="720053764">
- <string key="NSTitle">File</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="705341025">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Location </string>
- <string key="NSKeyEquiv">l</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="552626760">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">New WebKit1 Window</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="632566413">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsAlternate">YES</bool>
- <string key="NSTitle">New WebKit2 Window</string>
- <string key="NSKeyEquiv">n</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="722745758">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open…</string>
- <string key="NSKeyEquiv">o</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1025936716">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Open Recent</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="1065607017">
- <string key="NSTitle">Open Recent</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="759406840">
- <reference key="NSMenu" ref="1065607017"/>
- <string key="NSTitle">Clear Menu</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSRecentDocumentsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="425164168">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="776162233">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Close</string>
- <string key="NSKeyEquiv">w</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1023925487">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save</string>
- <string key="NSKeyEquiv">s</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="117038363">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Save As…</string>
- <string key="NSKeyEquiv">S</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="579971712">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Revert to Saved</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1010469920">
- <reference key="NSMenu" ref="720053764"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="294629803">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Page Setup...</string>
- <string key="NSKeyEquiv">P</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSToolTip"/>
- </object>
- <object class="NSMenuItem" id="49223823">
- <reference key="NSMenu" ref="720053764"/>
- <string key="NSTitle">Print…</string>
- <string key="NSKeyEquiv">p</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="952259628">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Edit</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="789758025">
- <string key="NSTitle">Edit</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1058277027">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Undo</string>
- <string key="NSKeyEquiv">z</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="790794224">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Redo</string>
- <string key="NSKeyEquiv">Z</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1040322652">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="296257095">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Cut</string>
- <string key="NSKeyEquiv">x</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="860595796">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Copy</string>
- <string key="NSKeyEquiv">c</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="29853731">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste</string>
- <string key="NSKeyEquiv">v</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="82994268">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Paste and Match Style</string>
- <string key="NSKeyEquiv">V</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="437104165">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Delete</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="583158037">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Select All</string>
- <string key="NSKeyEquiv">a</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="212016141">
- <reference key="NSMenu" ref="789758025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="892235320">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Find</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="963351320">
- <string key="NSTitle">Find</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="447796847">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find…</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="326711663">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Next</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="270902937">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Find Previous</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="159080638">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Use Selection for Find</string>
- <string key="NSKeyEquiv">e</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">7</int>
- </object>
- <object class="NSMenuItem" id="88285865">
- <reference key="NSMenu" ref="963351320"/>
- <string key="NSTitle">Jump to Selection</string>
- <string key="NSKeyEquiv">j</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="972420730">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Spelling and Grammar</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="769623530">
- <string key="NSTitle">Spelling and Grammar</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="679648819">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Show Spelling and Grammar</string>
- <string key="NSKeyEquiv">:</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="96193923">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Document Now</string>
- <string key="NSKeyEquiv">;</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="859480356">
- <reference key="NSMenu" ref="769623530"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="948374510">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Spelling While Typing</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="967646866">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Check Grammar With Spelling</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="795346622">
- <reference key="NSMenu" ref="769623530"/>
- <string key="NSTitle">Correct Spelling Automatically</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="507821607">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="698887838">
- <string key="NSTitle">Substitutions</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="65139061">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Show Substitutions</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="19036812">
- <reference key="NSMenu" ref="698887838"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="605118523">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Copy/Paste</string>
- <string key="NSKeyEquiv">f</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">1</int>
- </object>
- <object class="NSMenuItem" id="197661976">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Quotes</string>
- <string key="NSKeyEquiv">g</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">2</int>
- </object>
- <object class="NSMenuItem" id="672708820">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Dashes</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="708854459">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Smart Links</string>
- <string key="NSKeyEquiv">G</string>
- <int key="NSKeyEquivModMask">1179648</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <int key="NSTag">3</int>
- </object>
- <object class="NSMenuItem" id="537092702">
- <reference key="NSMenu" ref="698887838"/>
- <string key="NSTitle">Text Replacement</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="288088188">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Transformations</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="579392910">
- <string key="NSTitle">Transformations</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1060694897">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Upper Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="879586729">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Make Lower Case</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="56570060">
- <reference key="NSMenu" ref="579392910"/>
- <string key="NSTitle">Capitalize</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="676164635">
- <reference key="NSMenu" ref="789758025"/>
- <string key="NSTitle">Speech</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="785027613">
- <string key="NSTitle">Speech</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="731782645">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Start Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="680220178">
- <reference key="NSMenu" ref="785027613"/>
- <string key="NSTitle">Stop Speaking</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="586577488">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="466310130">
- <string key="NSTitle">View</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="102151532">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Show Toolbar</string>
- <string key="NSKeyEquiv">t</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="237841660">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Customize Toolbar…</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1025359947">
- <reference key="NSMenu" ref="466310130"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="694544109">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Zoom In</string>
- <string key="NSKeyEquiv">+</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="943694335">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Zoom Out</string>
- <string key="NSKeyEquiv">-</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="863984465">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Reset Zoom</string>
- <string key="NSKeyEquiv">0</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="138443116">
- <reference key="NSMenu" ref="466310130"/>
- <string key="NSTitle">Zoom Text Only</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- <object class="NSMenuItem" id="713487014">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Window</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="835318025">
- <string key="NSTitle">Window</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="1011231497">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Minimize</string>
- <string key="NSKeyEquiv">m</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="575023229">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Zoom</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="299356726">
- <reference key="NSMenu" ref="835318025"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="625202149">
- <reference key="NSMenu" ref="835318025"/>
- <string key="NSTitle">Bring All to Front</string>
- <string key="NSKeyEquiv"/>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSWindowsMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="448692316">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Help</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="992780483">
- <string key="NSTitle">Help</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="105068016">
- <reference key="NSMenu" ref="992780483"/>
- <string key="NSTitle">MiniBrowser Help</string>
- <string key="NSKeyEquiv">?</string>
- <int key="NSKeyEquivModMask">1048576</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- <string key="NSName">_NSHelpMenu</string>
- </object>
- </object>
- <object class="NSMenuItem" id="816668511">
- <reference key="NSMenu" ref="649796088"/>
- <string key="NSTitle">Debug</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- <string key="NSAction">submenuAction:</string>
- <object class="NSMenu" key="NSSubmenu" id="865232259">
- <string key="NSTitle">Debug</string>
- <object class="NSMutableArray" key="NSMenuItems">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSMenuItem" id="878165919">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Force Repaint</string>
- <string key="NSKeyEquiv">r</string>
- <int key="NSKeyEquivModMask">1572864</int>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="137933275">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Hide Web View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="1027125810">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Remove Web View</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="864702084">
- <reference key="NSMenu" ref="865232259"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="15772092">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Paginated Mode</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="489162377">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Transparent Window</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="624939128">
- <reference key="NSMenu" ref="865232259"/>
- <bool key="NSIsDisabled">YES</bool>
- <bool key="NSIsSeparator">YES</bool>
- <string key="NSTitle"/>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- <object class="NSMenuItem" id="191469404">
- <reference key="NSMenu" ref="865232259"/>
- <string key="NSTitle">Dump Source To Console</string>
- <string key="NSKeyEquiv"/>
- <int key="NSMnemonicLoc">2147483647</int>
- <reference key="NSOnImage" ref="35465992"/>
- <reference key="NSMixedImage" ref="502551668"/>
- </object>
- </object>
- </object>
- </object>
- </object>
- <string key="NSName">_NSMainMenu</string>
- </object>
- <object class="NSCustomObject" id="976324537">
- <string key="NSClassName">BrowserAppDelegate</string>
- </object>
- <object class="NSCustomObject" id="755631768">
- <string key="NSClassName">NSFontManager</string>
- </object>
- </object>
- <object class="IBObjectContainer" key="IBDocument.Objects">
- <object class="NSMutableArray" key="connectionRecords">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">terminate:</string>
- <reference key="source" ref="1050"/>
- <reference key="destination" ref="632727374"/>
- </object>
- <int key="connectionID">449</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontStandardAboutPanel:</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="238522557"/>
- </object>
- <int key="connectionID">142</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBOutletConnection" key="connection">
- <string key="label">delegate</string>
- <reference key="source" ref="1021"/>
- <reference key="destination" ref="976324537"/>
- </object>
- <int key="connectionID">495</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performMiniaturize:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1011231497"/>
- </object>
- <int key="connectionID">37</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">arrangeInFront:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="625202149"/>
- </object>
- <int key="connectionID">39</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">print:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="49223823"/>
- </object>
- <int key="connectionID">86</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runPageLayout:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="294629803"/>
- </object>
- <int key="connectionID">87</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">clearRecentDocuments:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="759406840"/>
- </object>
- <int key="connectionID">127</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performClose:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="776162233"/>
- </object>
- <int key="connectionID">193</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleContinuousSpellChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="948374510"/>
- </object>
- <int key="connectionID">222</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">undo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1058277027"/>
- </object>
- <int key="connectionID">223</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">copy:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="860595796"/>
- </object>
- <int key="connectionID">224</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">checkSpelling:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="96193923"/>
- </object>
- <int key="connectionID">225</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">paste:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="29853731"/>
- </object>
- <int key="connectionID">226</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">stopSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="680220178"/>
- </object>
- <int key="connectionID">227</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">cut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="296257095"/>
- </object>
- <int key="connectionID">228</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showGuessPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="679648819"/>
- </object>
- <int key="connectionID">230</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">redo:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="790794224"/>
- </object>
- <int key="connectionID">231</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">selectAll:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="583158037"/>
- </object>
- <int key="connectionID">232</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">startSpeaking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="731782645"/>
- </object>
- <int key="connectionID">233</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">delete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="437104165"/>
- </object>
- <int key="connectionID">235</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performZoom:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="575023229"/>
- </object>
- <int key="connectionID">240</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="447796847"/>
- </object>
- <int key="connectionID">241</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">centerSelectionInVisibleArea:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="88285865"/>
- </object>
- <int key="connectionID">245</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleGrammarChecking:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="967646866"/>
- </object>
- <int key="connectionID">347</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleSmartInsertDelete:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="605118523"/>
- </object>
- <int key="connectionID">355</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticQuoteSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="197661976"/>
- </object>
- <int key="connectionID">356</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticLinkDetection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="708854459"/>
- </object>
- <int key="connectionID">357</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1023925487"/>
- </object>
- <int key="connectionID">362</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">saveDocumentAs:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="117038363"/>
- </object>
- <int key="connectionID">363</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">revertDocumentToSaved:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="579971712"/>
- </object>
- <int key="connectionID">364</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">runToolbarCustomizationPalette:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="237841660"/>
- </object>
- <int key="connectionID">365</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleToolbarShown:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="102151532"/>
- </object>
- <int key="connectionID">366</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hide:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="755159360"/>
- </object>
- <int key="connectionID">367</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">hideOtherApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="342932134"/>
- </object>
- <int key="connectionID">368</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">unhideAllApplications:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="908899353"/>
- </object>
- <int key="connectionID">370</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openDocument:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="722745758"/>
- </object>
- <int key="connectionID">374</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticSpellingCorrection:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="795346622"/>
- </object>
- <int key="connectionID">456</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">orderFrontSubstitutionsPanel:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="65139061"/>
- </object>
- <int key="connectionID">458</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticDashSubstitution:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="672708820"/>
- </object>
- <int key="connectionID">461</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleAutomaticTextReplacement:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="537092702"/>
- </object>
- <int key="connectionID">463</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">uppercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1060694897"/>
- </object>
- <int key="connectionID">464</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">capitalizeWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="56570060"/>
- </object>
- <int key="connectionID">467</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">lowercaseWord:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="879586729"/>
- </object>
- <int key="connectionID">468</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">pasteAsPlainText:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="82994268"/>
- </object>
- <int key="connectionID">486</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="326711663"/>
- </object>
- <int key="connectionID">487</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="270902937"/>
- </object>
- <int key="connectionID">488</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">performFindPanelAction:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="159080638"/>
- </object>
- <int key="connectionID">489</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHelp:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="105068016"/>
- </object>
- <int key="connectionID">493</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">forceRepaint:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="878165919"/>
- </object>
- <int key="connectionID">547</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">showHideWebView:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="137933275"/>
- </object>
- <int key="connectionID">549</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">removeReinsertWebView:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="1027125810"/>
- </object>
- <int key="connectionID">551</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">zoomIn:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="694544109"/>
- </object>
- <int key="connectionID">559</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">zoomOut:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="943694335"/>
- </object>
- <int key="connectionID">560</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">resetZoom:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="863984465"/>
- </object>
- <int key="connectionID">561</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleZoomMode:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="138443116"/>
- </object>
- <int key="connectionID">564</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">dumpSourceToConsole:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="191469404"/>
- </object>
- <int key="connectionID">567</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">togglePaginationMode:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="15772092"/>
- </object>
- <int key="connectionID">570</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newWindow:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="632566413"/>
- </object>
- <int key="connectionID">572</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">newWindow:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="552626760"/>
- </object>
- <int key="connectionID">574</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">openLocation:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="705341025"/>
- </object>
- <int key="connectionID">575</int>
- </object>
- <object class="IBConnectionRecord">
- <object class="IBActionConnection" key="connection">
- <string key="label">toggleTransparentWindow:</string>
- <reference key="source" ref="1014"/>
- <reference key="destination" ref="489162377"/>
- </object>
- <int key="connectionID">578</int>
- </object>
- </object>
- <object class="IBMutableOrderedSet" key="objectRecords">
- <object class="NSArray" key="orderedObjects">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBObjectRecord">
- <int key="objectID">0</int>
- <object class="NSArray" key="object" id="0">
- <bool key="EncodedWithXMLCoder">YES</bool>
- </object>
- <reference key="children" ref="1048"/>
- <nil key="parent"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-2</int>
- <reference key="object" ref="1021"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">File's Owner</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-1</int>
- <reference key="object" ref="1014"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">First Responder</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">-3</int>
- <reference key="object" ref="1050"/>
- <reference key="parent" ref="0"/>
- <string key="objectName">Application</string>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">29</int>
- <reference key="object" ref="649796088"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="713487014"/>
- <reference ref="694149608"/>
- <reference ref="952259628"/>
- <reference ref="379814623"/>
- <reference ref="586577488"/>
- <reference ref="448692316"/>
- <reference ref="816668511"/>
- </object>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">19</int>
- <reference key="object" ref="713487014"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="835318025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">56</int>
- <reference key="object" ref="694149608"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="110575045"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">217</int>
- <reference key="object" ref="952259628"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="789758025"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">83</int>
- <reference key="object" ref="379814623"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="720053764"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">81</int>
- <reference key="object" ref="720053764"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1023925487"/>
- <reference ref="117038363"/>
- <reference ref="49223823"/>
- <reference ref="722745758"/>
- <reference ref="705341025"/>
- <reference ref="1025936716"/>
- <reference ref="294629803"/>
- <reference ref="776162233"/>
- <reference ref="425164168"/>
- <reference ref="579971712"/>
- <reference ref="1010469920"/>
- <reference ref="632566413"/>
- <reference ref="552626760"/>
- </object>
- <reference key="parent" ref="379814623"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">75</int>
- <reference key="object" ref="1023925487"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">80</int>
- <reference key="object" ref="117038363"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">78</int>
- <reference key="object" ref="49223823"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">72</int>
- <reference key="object" ref="722745758"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">82</int>
- <reference key="object" ref="705341025"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">124</int>
- <reference key="object" ref="1025936716"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1065607017"/>
- </object>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">77</int>
- <reference key="object" ref="294629803"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">73</int>
- <reference key="object" ref="776162233"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">79</int>
- <reference key="object" ref="425164168"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">112</int>
- <reference key="object" ref="579971712"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">74</int>
- <reference key="object" ref="1010469920"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">125</int>
- <reference key="object" ref="1065607017"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="759406840"/>
- </object>
- <reference key="parent" ref="1025936716"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">126</int>
- <reference key="object" ref="759406840"/>
- <reference key="parent" ref="1065607017"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">205</int>
- <reference key="object" ref="789758025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="437104165"/>
- <reference ref="583158037"/>
- <reference ref="1058277027"/>
- <reference ref="212016141"/>
- <reference ref="296257095"/>
- <reference ref="29853731"/>
- <reference ref="860595796"/>
- <reference ref="1040322652"/>
- <reference ref="790794224"/>
- <reference ref="892235320"/>
- <reference ref="972420730"/>
- <reference ref="676164635"/>
- <reference ref="507821607"/>
- <reference ref="288088188"/>
- <reference ref="82994268"/>
- </object>
- <reference key="parent" ref="952259628"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">202</int>
- <reference key="object" ref="437104165"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">198</int>
- <reference key="object" ref="583158037"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">207</int>
- <reference key="object" ref="1058277027"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">214</int>
- <reference key="object" ref="212016141"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">199</int>
- <reference key="object" ref="296257095"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">203</int>
- <reference key="object" ref="29853731"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">197</int>
- <reference key="object" ref="860595796"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">206</int>
- <reference key="object" ref="1040322652"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">215</int>
- <reference key="object" ref="790794224"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">218</int>
- <reference key="object" ref="892235320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="963351320"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">216</int>
- <reference key="object" ref="972420730"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="769623530"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">200</int>
- <reference key="object" ref="769623530"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="948374510"/>
- <reference ref="96193923"/>
- <reference ref="679648819"/>
- <reference ref="967646866"/>
- <reference ref="859480356"/>
- <reference ref="795346622"/>
- </object>
- <reference key="parent" ref="972420730"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">219</int>
- <reference key="object" ref="948374510"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">201</int>
- <reference key="object" ref="96193923"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">204</int>
- <reference key="object" ref="679648819"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">220</int>
- <reference key="object" ref="963351320"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="270902937"/>
- <reference ref="88285865"/>
- <reference ref="159080638"/>
- <reference ref="326711663"/>
- <reference ref="447796847"/>
- </object>
- <reference key="parent" ref="892235320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">213</int>
- <reference key="object" ref="270902937"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">210</int>
- <reference key="object" ref="88285865"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">221</int>
- <reference key="object" ref="159080638"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">208</int>
- <reference key="object" ref="326711663"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">209</int>
- <reference key="object" ref="447796847"/>
- <reference key="parent" ref="963351320"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">57</int>
- <reference key="object" ref="110575045"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="238522557"/>
- <reference ref="755159360"/>
- <reference ref="908899353"/>
- <reference ref="632727374"/>
- <reference ref="646227648"/>
- <reference ref="609285721"/>
- <reference ref="481834944"/>
- <reference ref="304266470"/>
- <reference ref="1046388886"/>
- <reference ref="1056857174"/>
- <reference ref="342932134"/>
- </object>
- <reference key="parent" ref="694149608"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">58</int>
- <reference key="object" ref="238522557"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">134</int>
- <reference key="object" ref="755159360"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">150</int>
- <reference key="object" ref="908899353"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">136</int>
- <reference key="object" ref="632727374"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">144</int>
- <reference key="object" ref="646227648"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">129</int>
- <reference key="object" ref="609285721"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">143</int>
- <reference key="object" ref="481834944"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">236</int>
- <reference key="object" ref="304266470"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">131</int>
- <reference key="object" ref="1046388886"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="752062318"/>
- </object>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">149</int>
- <reference key="object" ref="1056857174"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">145</int>
- <reference key="object" ref="342932134"/>
- <reference key="parent" ref="110575045"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">130</int>
- <reference key="object" ref="752062318"/>
- <reference key="parent" ref="1046388886"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">24</int>
- <reference key="object" ref="835318025"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="299356726"/>
- <reference ref="625202149"/>
- <reference ref="575023229"/>
- <reference ref="1011231497"/>
- </object>
- <reference key="parent" ref="713487014"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">92</int>
- <reference key="object" ref="299356726"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">5</int>
- <reference key="object" ref="625202149"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">239</int>
- <reference key="object" ref="575023229"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">23</int>
- <reference key="object" ref="1011231497"/>
- <reference key="parent" ref="835318025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">295</int>
- <reference key="object" ref="586577488"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="466310130"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">296</int>
- <reference key="object" ref="466310130"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="102151532"/>
- <reference ref="237841660"/>
- <reference ref="694544109"/>
- <reference ref="1025359947"/>
- <reference ref="943694335"/>
- <reference ref="863984465"/>
- <reference ref="138443116"/>
- </object>
- <reference key="parent" ref="586577488"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">297</int>
- <reference key="object" ref="102151532"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">298</int>
- <reference key="object" ref="237841660"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">211</int>
- <reference key="object" ref="676164635"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="785027613"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">212</int>
- <reference key="object" ref="785027613"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="680220178"/>
- <reference ref="731782645"/>
- </object>
- <reference key="parent" ref="676164635"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">195</int>
- <reference key="object" ref="680220178"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">196</int>
- <reference key="object" ref="731782645"/>
- <reference key="parent" ref="785027613"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">346</int>
- <reference key="object" ref="967646866"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">348</int>
- <reference key="object" ref="507821607"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="698887838"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">349</int>
- <reference key="object" ref="698887838"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="605118523"/>
- <reference ref="197661976"/>
- <reference ref="708854459"/>
- <reference ref="65139061"/>
- <reference ref="19036812"/>
- <reference ref="672708820"/>
- <reference ref="537092702"/>
- </object>
- <reference key="parent" ref="507821607"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">350</int>
- <reference key="object" ref="605118523"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">351</int>
- <reference key="object" ref="197661976"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">354</int>
- <reference key="object" ref="708854459"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">420</int>
- <reference key="object" ref="755631768"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">450</int>
- <reference key="object" ref="288088188"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="579392910"/>
- </object>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">451</int>
- <reference key="object" ref="579392910"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="1060694897"/>
- <reference ref="879586729"/>
- <reference ref="56570060"/>
- </object>
- <reference key="parent" ref="288088188"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">452</int>
- <reference key="object" ref="1060694897"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">453</int>
- <reference key="object" ref="859480356"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">454</int>
- <reference key="object" ref="795346622"/>
- <reference key="parent" ref="769623530"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">457</int>
- <reference key="object" ref="65139061"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">459</int>
- <reference key="object" ref="19036812"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">460</int>
- <reference key="object" ref="672708820"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">462</int>
- <reference key="object" ref="537092702"/>
- <reference key="parent" ref="698887838"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">465</int>
- <reference key="object" ref="879586729"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">466</int>
- <reference key="object" ref="56570060"/>
- <reference key="parent" ref="579392910"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">485</int>
- <reference key="object" ref="82994268"/>
- <reference key="parent" ref="789758025"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">490</int>
- <reference key="object" ref="448692316"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="992780483"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">491</int>
- <reference key="object" ref="992780483"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="105068016"/>
- </object>
- <reference key="parent" ref="448692316"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">492</int>
- <reference key="object" ref="105068016"/>
- <reference key="parent" ref="992780483"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">494</int>
- <reference key="object" ref="976324537"/>
- <reference key="parent" ref="0"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">534</int>
- <reference key="object" ref="816668511"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="865232259"/>
- </object>
- <reference key="parent" ref="649796088"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">535</int>
- <reference key="object" ref="865232259"/>
- <object class="NSMutableArray" key="children">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference ref="878165919"/>
- <reference ref="137933275"/>
- <reference ref="1027125810"/>
- <reference ref="864702084"/>
- <reference ref="191469404"/>
- <reference ref="624939128"/>
- <reference ref="15772092"/>
- <reference ref="489162377"/>
- </object>
- <reference key="parent" ref="816668511"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">545</int>
- <reference key="object" ref="878165919"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">548</int>
- <reference key="object" ref="137933275"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">550</int>
- <reference key="object" ref="1027125810"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">553</int>
- <reference key="object" ref="864702084"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">555</int>
- <reference key="object" ref="694544109"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">556</int>
- <reference key="object" ref="1025359947"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">557</int>
- <reference key="object" ref="943694335"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">558</int>
- <reference key="object" ref="863984465"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">562</int>
- <reference key="object" ref="138443116"/>
- <reference key="parent" ref="466310130"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">566</int>
- <reference key="object" ref="191469404"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">568</int>
- <reference key="object" ref="624939128"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">569</int>
- <reference key="object" ref="15772092"/>
- <reference key="parent" ref="865232259"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">571</int>
- <reference key="object" ref="632566413"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">573</int>
- <reference key="object" ref="552626760"/>
- <reference key="parent" ref="720053764"/>
- </object>
- <object class="IBObjectRecord">
- <int key="objectID">576</int>
- <reference key="object" ref="489162377"/>
- <reference key="parent" ref="865232259"/>
- </object>
- </object>
- </object>
- <object class="NSMutableDictionary" key="flattenedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>-1.IBPluginDependency</string>
- <string>-2.IBPluginDependency</string>
- <string>-3.IBPluginDependency</string>
- <string>112.IBPluginDependency</string>
- <string>124.IBPluginDependency</string>
- <string>125.IBPluginDependency</string>
- <string>126.IBPluginDependency</string>
- <string>129.IBPluginDependency</string>
- <string>130.IBPluginDependency</string>
- <string>131.IBPluginDependency</string>
- <string>134.IBPluginDependency</string>
- <string>136.IBPluginDependency</string>
- <string>143.IBPluginDependency</string>
- <string>144.IBPluginDependency</string>
- <string>145.IBPluginDependency</string>
- <string>149.IBPluginDependency</string>
- <string>150.IBPluginDependency</string>
- <string>19.IBPluginDependency</string>
- <string>195.IBPluginDependency</string>
- <string>196.IBPluginDependency</string>
- <string>197.IBPluginDependency</string>
- <string>198.IBPluginDependency</string>
- <string>199.IBPluginDependency</string>
- <string>200.IBPluginDependency</string>
- <string>201.IBPluginDependency</string>
- <string>202.IBPluginDependency</string>
- <string>203.IBPluginDependency</string>
- <string>204.IBPluginDependency</string>
- <string>205.IBPluginDependency</string>
- <string>206.IBPluginDependency</string>
- <string>207.IBPluginDependency</string>
- <string>208.IBPluginDependency</string>
- <string>209.IBPluginDependency</string>
- <string>210.IBPluginDependency</string>
- <string>211.IBPluginDependency</string>
- <string>212.IBPluginDependency</string>
- <string>213.IBPluginDependency</string>
- <string>214.IBPluginDependency</string>
- <string>215.IBPluginDependency</string>
- <string>216.IBPluginDependency</string>
- <string>217.IBPluginDependency</string>
- <string>218.IBPluginDependency</string>
- <string>219.IBPluginDependency</string>
- <string>220.IBPluginDependency</string>
- <string>221.IBPluginDependency</string>
- <string>23.IBPluginDependency</string>
- <string>236.IBPluginDependency</string>
- <string>239.IBPluginDependency</string>
- <string>24.IBPluginDependency</string>
- <string>29.IBPluginDependency</string>
- <string>295.IBPluginDependency</string>
- <string>296.IBPluginDependency</string>
- <string>297.IBPluginDependency</string>
- <string>298.IBPluginDependency</string>
- <string>346.IBPluginDependency</string>
- <string>348.IBPluginDependency</string>
- <string>349.IBPluginDependency</string>
- <string>350.IBPluginDependency</string>
- <string>351.IBPluginDependency</string>
- <string>354.IBPluginDependency</string>
- <string>420.IBPluginDependency</string>
- <string>450.IBPluginDependency</string>
- <string>451.IBPluginDependency</string>
- <string>452.IBPluginDependency</string>
- <string>453.IBPluginDependency</string>
- <string>454.IBPluginDependency</string>
- <string>457.IBPluginDependency</string>
- <string>459.IBPluginDependency</string>
- <string>460.IBPluginDependency</string>
- <string>462.IBPluginDependency</string>
- <string>465.IBPluginDependency</string>
- <string>466.IBPluginDependency</string>
- <string>485.IBPluginDependency</string>
- <string>490.IBPluginDependency</string>
- <string>491.IBPluginDependency</string>
- <string>492.IBPluginDependency</string>
- <string>494.IBPluginDependency</string>
- <string>5.IBPluginDependency</string>
- <string>534.IBPluginDependency</string>
- <string>535.IBPluginDependency</string>
- <string>545.IBPluginDependency</string>
- <string>548.IBPluginDependency</string>
- <string>550.IBPluginDependency</string>
- <string>553.IBPluginDependency</string>
- <string>555.IBPluginDependency</string>
- <string>556.IBPluginDependency</string>
- <string>557.IBPluginDependency</string>
- <string>558.IBPluginDependency</string>
- <string>56.IBPluginDependency</string>
- <string>562.IBPluginDependency</string>
- <string>566.IBPluginDependency</string>
- <string>568.IBPluginDependency</string>
- <string>569.IBPluginDependency</string>
- <string>57.IBPluginDependency</string>
- <string>571.IBPluginDependency</string>
- <string>573.IBPluginDependency</string>
- <string>576.IBPluginDependency</string>
- <string>58.IBPluginDependency</string>
- <string>72.IBPluginDependency</string>
- <string>73.IBPluginDependency</string>
- <string>74.IBPluginDependency</string>
- <string>75.IBPluginDependency</string>
- <string>77.IBPluginDependency</string>
- <string>78.IBPluginDependency</string>
- <string>79.IBPluginDependency</string>
- <string>80.IBPluginDependency</string>
- <string>81.IBPluginDependency</string>
- <string>82.IBPluginDependency</string>
- <string>83.IBPluginDependency</string>
- <string>92.IBPluginDependency</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- <string>com.apple.InterfaceBuilder.CocoaPlugin</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="unlocalizedProperties">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <reference key="dict.values" ref="0"/>
- </object>
- <nil key="activeLocalization"/>
- <object class="NSMutableDictionary" key="localizations">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <reference key="dict.sortedKeys" ref="0"/>
- <reference key="dict.values" ref="0"/>
- </object>
- <nil key="sourceID"/>
- <int key="maxID">578</int>
- </object>
- <object class="IBClassDescriber" key="IBDocument.Classes">
- <object class="NSMutableArray" key="referencedPartialClassDescriptions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBPartialClassDescription">
- <string key="className">BrowserAppDelegate</string>
- <string key="superclassName">NSObject</string>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/BrowserAppDelegate.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">BrowserWindowController</string>
- <string key="superclassName">NSWindowController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">openLocation:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">openLocation:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">openLocation:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="outlets">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>backButton</string>
- <string>containerView</string>
- <string>findPanelWindow</string>
- <string>forwardButton</string>
- <string>progressIndicator</string>
- <string>reloadButton</string>
- <string>toolbar</string>
- <string>urlText</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSButton</string>
- <string>NSView</string>
- <string>NSWindow</string>
- <string>NSButton</string>
- <string>NSProgressIndicator</string>
- <string>NSButton</string>
- <string>NSToolbar</string>
- <string>NSTextField</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="toOneOutletInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>backButton</string>
- <string>containerView</string>
- <string>findPanelWindow</string>
- <string>forwardButton</string>
- <string>progressIndicator</string>
- <string>reloadButton</string>
- <string>toolbar</string>
- <string>urlText</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBToOneOutletInfo">
- <string key="name">backButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">containerView</string>
- <string key="candidateClassName">NSView</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">findPanelWindow</string>
- <string key="candidateClassName">NSWindow</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">forwardButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">progressIndicator</string>
- <string key="candidateClassName">NSProgressIndicator</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">reloadButton</string>
- <string key="candidateClassName">NSButton</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">toolbar</string>
- <string key="candidateClassName">NSToolbar</string>
- </object>
- <object class="IBToOneOutletInfo">
- <string key="name">urlText</string>
- <string key="candidateClassName">NSTextField</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/BrowserWindowController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">FirstResponder</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>forceRepaint:</string>
- <string>newWindow:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>forceRepaint:</string>
- <string>newWindow:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">forceRepaint:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">newWindow:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBUserSource</string>
- <string key="minorKey"/>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocument</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>printDocument:</string>
- <string>revertDocumentToSaved:</string>
- <string>runPageLayout:</string>
- <string>saveDocument:</string>
- <string>saveDocumentAs:</string>
- <string>saveDocumentTo:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">printDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">revertDocumentToSaved:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">runPageLayout:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocumentAs:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">saveDocumentTo:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NSDocument.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">NSDocumentController</string>
- <object class="NSMutableDictionary" key="actions">
- <string key="NS.key.0">_openRecentDocument:</string>
- <string key="NS.object.0">id</string>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <string key="NS.key.0">_openRecentDocument:</string>
- <object class="IBActionInfo" key="NS.object.0">
- <string key="name">_openRecentDocument:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/NSDocumentController.h</string>
- </object>
- </object>
- <object class="IBPartialClassDescription">
- <string key="className">WebView</string>
- <object class="NSMutableDictionary" key="actions">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>reloadFromOrigin:</string>
- <string>resetPageZoom:</string>
- <string>zoomPageIn:</string>
- <string>zoomPageOut:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- <string>id</string>
- </object>
- </object>
- <object class="NSMutableDictionary" key="actionInfosByName">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>reloadFromOrigin:</string>
- <string>resetPageZoom:</string>
- <string>zoomPageIn:</string>
- <string>zoomPageOut:</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="IBActionInfo">
- <string key="name">reloadFromOrigin:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">resetPageZoom:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">zoomPageIn:</string>
- <string key="candidateClassName">id</string>
- </object>
- <object class="IBActionInfo">
- <string key="name">zoomPageOut:</string>
- <string key="candidateClassName">id</string>
- </object>
- </object>
- </object>
- <object class="IBClassDescriptionSource" key="sourceIdentifier">
- <string key="majorKey">IBProjectSource</string>
- <string key="minorKey">./Classes/WebView.h</string>
- </object>
- </object>
- </object>
- </object>
- <int key="IBDocument.localizationMode">0</int>
- <string key="IBDocument.TargetRuntimeIdentifier">IBCocoaFramework</string>
- <object class="NSMutableDictionary" key="IBDocument.PluginDeclaredDevelopmentDependencies">
- <string key="NS.key.0">com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3</string>
- <integer value="3000" key="NS.object.0"/>
- </object>
- <bool key="IBDocument.PluginDeclaredDependenciesTrackSystemTargetVersion">YES</bool>
- <int key="IBDocument.defaultPropertyAccessControl">3</int>
- <object class="NSMutableDictionary" key="IBDocument.LastKnownImageSizes">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <object class="NSArray" key="dict.sortedKeys">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>NSMenuCheckmark</string>
- <string>NSMenuMixedState</string>
- </object>
- <object class="NSArray" key="dict.values">
- <bool key="EncodedWithXMLCoder">YES</bool>
- <string>{11, 11}</string>
- <string>{10, 3}</string>
- </object>
- </object>
- </data>
-</archive>
diff --git a/Tools/MiniBrowser/mac/MiniBrowser_Prefix.pch b/Tools/MiniBrowser/mac/MiniBrowser_Prefix.pch
deleted file mode 100644
index 24ff04c07..000000000
--- a/Tools/MiniBrowser/mac/MiniBrowser_Prefix.pch
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 <Cocoa/Cocoa.h>
-#endif
-
-#import <WebKit2/WebKit2_C.h>
-
-#define ENABLE_LOGGING 0
-
-#if ENABLE_LOGGING
-#define LOG NSLog
-#else
-#define LOG(...) ((void)0)
-#endif
diff --git a/Tools/MiniBrowser/mac/WK1BrowserWindowController.h b/Tools/MiniBrowser/mac/WK1BrowserWindowController.h
deleted file mode 100644
index fdae2ca27..000000000
--- a/Tools/MiniBrowser/mac/WK1BrowserWindowController.h
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "BrowserWindowController.h"
-
-@class WebView;
-
-@interface WK1BrowserWindowController : BrowserWindowController<BrowserController> {
- WebView *_webView;
-}
-
-
-@end
diff --git a/Tools/MiniBrowser/mac/WK1BrowserWindowController.m b/Tools/MiniBrowser/mac/WK1BrowserWindowController.m
deleted file mode 100644
index 4b2428a32..000000000
--- a/Tools/MiniBrowser/mac/WK1BrowserWindowController.m
+++ /dev/null
@@ -1,294 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "WK1BrowserWindowController.h"
-
-#import <WebKit/WebKit.h>
-#import <WebKit/WebViewPrivate.h>
-#import "AppDelegate.h"
-
-@interface WK1BrowserWindowController ()
-@end
-
-@implementation WK1BrowserWindowController
-
-- (void)awakeFromNib
-{
- _webView = [[WebView alloc] initWithFrame:[containerView bounds]];
- [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
-
- // Set the WebView delegates
- [_webView setFrameLoadDelegate:self];
- [_webView setUIDelegate:self];
- [_webView setResourceLoadDelegate:self];
-
- [containerView addSubview:_webView];
-}
-
-- (void)dealloc
-{
- [_webView setFrameLoadDelegate:nil];
- [_webView setUIDelegate:nil];
- [_webView setResourceLoadDelegate:nil];
- [_webView release];
-
- [super dealloc];
-}
-
-- (void)loadURLString:(NSString *)urlString
-{
- // FIXME: We shouldn't have to set the url text here.
- [urlText setStringValue:urlString];
- [self fetch:nil];
-}
-
-- (IBAction)fetch:(id)sender
-{
- [urlText setStringValue:[self addProtocolIfNecessary:[urlText stringValue]]];
- NSURL *url = [NSURL URLWithString:[urlText stringValue]];
- [[_webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
-}
-
-- (IBAction)showHideWebView:(id)sender
-{
- BOOL hidden = ![_webView isHidden];
-
- [_webView setHidden:hidden];
-}
-
-- (IBAction)removeReinsertWebView:(id)sender
-{
- if ([_webView window]) {
- [_webView retain];
- [_webView removeFromSuperview];
- } else {
- [containerView addSubview:_webView];
- [_webView release];
- }
-}
-
-- (IBAction)reload:(id)sender
-{
- [_webView reload:sender];
-}
-
-- (IBAction)forceRepaint:(id)sender
-{
- [_webView setNeedsDisplay:YES];
-}
-
-- (IBAction)goBack:(id)sender
-{
- [_webView goBack:sender];
-}
-
-- (IBAction)goForward:(id)sender
-{
- [_webView goForward:sender];
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
- SEL action = [menuItem action];
-
- if (action == @selector(zoomIn:))
- return [self canZoomIn];
- if (action == @selector(zoomOut:))
- return [self canZoomOut];
- if (action == @selector(resetZoom:))
- return [self canResetZoom];
-
- if (action == @selector(showHideWebView:))
- [menuItem setTitle:[_webView isHidden] ? @"Show Web View" : @"Hide Web View"];
- else if (action == @selector(removeReinsertWebView:))
- [menuItem setTitle:[_webView window] ? @"Remove Web View" : @"Insert Web View"];
- else if (action == @selector(toggleZoomMode:))
- [menuItem setState:_zoomTextOnly ? NSOnState : NSOffState];
- else if ([menuItem action] == @selector(togglePaginationMode:))
- [menuItem setState:[self isPaginated] ? NSOnState : NSOffState];
- else if ([menuItem action] == @selector(toggleTransparentWindow:))
- [menuItem setState:[[self window] isOpaque] ? NSOffState : NSOnState];
-
- return YES;
-}
-
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
-{
- SEL action = [item action];
-
- if (action == @selector(goBack:))
- return [_webView canGoBack];
-
- if (action == @selector(goForward:))
- return [_webView canGoForward];
-
- return YES;
-}
-
-- (void)validateToolbar
-{
- [toolbar validateVisibleItems];
-}
-
-- (BOOL)windowShouldClose:(id)sender
-{
- return YES;
-}
-
-- (void)windowWillClose:(NSNotification *)notification
-{
- [(BrowserAppDelegate *)[NSApp delegate] browserWindowWillClose:[self window]];
- [self autorelease];
-}
-
-- (void)applicationTerminating
-{
-}
-
-- (double)currentZoomFactor
-{
- return 1;
-}
-
-- (BOOL)canZoomIn
-{
- return [_webView canMakeTextLarger];
-}
-
-- (void)zoomIn:(id)sender
-{
- if (![self canZoomIn])
- return;
-
- [_webView makeTextLarger:sender];
-}
-
-- (BOOL)canZoomOut
-{
- return [_webView canMakeTextSmaller];
-}
-
-- (void)zoomOut:(id)sender
-{
- if (![self canZoomIn])
- return;
-
- [_webView makeTextSmaller:sender];
-}
-
-- (BOOL)canResetZoom
-{
- return [_webView canMakeTextStandardSize];
-}
-
-- (void)resetZoom:(id)sender
-{
- if (![self canResetZoom])
- return;
-
- [_webView makeTextStandardSize:sender];
-}
-
-- (IBAction)toggleZoomMode:(id)sender
-{
- // FIXME: non-text zoom not implemented.
- _zoomTextOnly = !_zoomTextOnly;
-}
-
-- (BOOL)isPaginated
-{
- return [_webView _paginationMode] != WebPaginationModeUnpaginated;
-}
-
-- (IBAction)togglePaginationMode:(id)sender
-{
- if ([self isPaginated]) {
- [_webView _setPaginationMode:WebPaginationModeUnpaginated];
- } else {
- [_webView _setPaginationMode:WebPaginationModeRightToLeft];
- [_webView _setPageLength:_webView.bounds.size.width / 2];
- [_webView _setGapBetweenPages:10];
- }
-}
-
-- (IBAction)toggleTransparentWindow:(id)sender
-{
- BOOL isTransparent = ![[self window] isOpaque];
- isTransparent = !isTransparent;
-
- [[self window] setOpaque:!isTransparent];
- [[self window] setHasShadow:!isTransparent];
-
- if (isTransparent)
- [_webView setBackgroundColor:[NSColor clearColor]];
- else
- [_webView setBackgroundColor:[NSColor whiteColor]];
-
- [[self window] display];
-}
-
-- (IBAction)find:(id)sender
-{
-}
-
-- (IBAction)dumpSourceToConsole:(id)sender
-{
-}
-
-// WebFrameLoadDelegate Methods
-- (void)webView:(WebView *)sender didStartProvisionalLoadForFrame:(WebFrame *)frame
-{
-}
-
-- (void)webView:(WebView *)sender didCommitLoadForFrame:(WebFrame *)frame
-{
- if (frame != [sender mainFrame])
- return;
-
- NSURL *committedURL = [[[frame dataSource] request] URL];
- [urlText setStringValue:[committedURL absoluteString]];
-}
-
-- (void)webView:(WebView *)sender didReceiveTitle:(NSString *)title forFrame:(WebFrame *)frame
-{
- if (frame != [sender mainFrame])
- return;
-
- [[self window] setTitle:[title stringByAppendingString:@" [WK1]"]];
-}
-
-- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- NSAlert *alert = [[NSAlert alloc] init];
- [alert addButtonWithTitle:@"OK"];
-
- alert.messageText = [NSString stringWithFormat:@"JavaScript alert dialog from %@.", frame.dataSource.request.URL.absoluteString];
- alert.informativeText = message;
-
- [alert runModal];
- [alert release];
-}
-
-@end
diff --git a/Tools/MiniBrowser/mac/WK2BrowserWindowController.h b/Tools/MiniBrowser/mac/WK2BrowserWindowController.h
deleted file mode 100644
index 840f08273..000000000
--- a/Tools/MiniBrowser/mac/WK2BrowserWindowController.h
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "BrowserWindowController.h"
-
-@interface WK2BrowserWindowController : BrowserWindowController<BrowserController> {
- WKContextRef _context;
- WKPageGroupRef _pageGroup;
- WKView *_webView;
-}
-
-- (id)initWithContext:(WKContextRef)context pageGroup:(WKPageGroupRef)pageGroup;
-
-@end
diff --git a/Tools/MiniBrowser/mac/WK2BrowserWindowController.m b/Tools/MiniBrowser/mac/WK2BrowserWindowController.m
deleted file mode 100644
index bb40dbf70..000000000
--- a/Tools/MiniBrowser/mac/WK2BrowserWindowController.m
+++ /dev/null
@@ -1,847 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "WK2BrowserWindowController.h"
-
-#import "AppDelegate.h"
-#import <WebKit2/WKPagePrivate.h>
-#import <WebKit2/WKStringCF.h>
-#import <WebKit2/WKURLCF.h>
-#import <WebKit2/WKViewPrivate.h>
-
-@interface WK2BrowserWindowController ()
-- (void)didStartProgress;
-- (void)didChangeProgress:(double)value;
-- (void)didFinishProgress;
-- (void)didStartProvisionalLoadForFrame:(WKFrameRef)frame;
-- (void)didCommitLoadForFrame:(WKFrameRef)frame;
-- (void)didReceiveServerRedirectForProvisionalLoadForFrame:(WKFrameRef)frame;
-- (void)didFailProvisionalLoadWithErrorForFrame:(WKFrameRef)frame;
-- (void)didFailLoadWithErrorForFrame:(WKFrameRef)frame;
-- (void)didSameDocumentNavigationForFrame:(WKFrameRef)frame;
-- (BOOL)isPaginated;
-@end
-
-@implementation WK2BrowserWindowController
-
-- (id)initWithContext:(WKContextRef)context pageGroup:(WKPageGroupRef)pageGroup
-{
- if ((self = [super initWithWindowNibName:@"BrowserWindow"])) {
- _context = WKRetain(context);
- _pageGroup = WKRetain(pageGroup);
- _zoomTextOnly = NO;
- }
-
- return self;
-}
-
-- (void)dealloc
-{
- WKRelease(_context);
- WKRelease(_pageGroup);
- [_webView release];
-
- [super dealloc];
-}
-
-- (IBAction)fetch:(id)sender
-{
- [urlText setStringValue:[self addProtocolIfNecessary:[urlText stringValue]]];
-
- CFURLRef cfURL = CFURLCreateWithString(0, (CFStringRef)[urlText stringValue], 0);
- if (!cfURL)
- return;
-
- WKURLRef url = WKURLCreateWithCFURL(cfURL);
- CFRelease(cfURL);
-
- WKPageLoadURL(_webView.pageRef, url);
- WKRelease(url);
-}
-
-- (IBAction)showHideWebView:(id)sender
-{
- BOOL hidden = ![_webView isHidden];
-
- [_webView setHidden:hidden];
-}
-
-- (IBAction)removeReinsertWebView:(id)sender
-{
- if ([_webView window]) {
- [_webView retain];
- [_webView removeFromSuperview];
- } else {
- [containerView addSubview:_webView];
- [_webView release];
- }
-}
-
-- (BOOL)validateMenuItem:(NSMenuItem *)menuItem
-{
- SEL action = [menuItem action];
-
- if (action == @selector(zoomIn:))
- return [self canZoomIn];
- if (action == @selector(zoomOut:))
- return [self canZoomOut];
- if (action == @selector(resetZoom:))
- return [self canResetZoom];
-
- if (action == @selector(showHideWebView:))
- [menuItem setTitle:[_webView isHidden] ? @"Show Web View" : @"Hide Web View"];
- else if (action == @selector(removeReinsertWebView:))
- [menuItem setTitle:[_webView window] ? @"Remove Web View" : @"Insert Web View"];
- else if (action == @selector(toggleZoomMode:))
- [menuItem setState:_zoomTextOnly ? NSOnState : NSOffState];
- else if ([menuItem action] == @selector(togglePaginationMode:))
- [menuItem setState:[self isPaginated] ? NSOnState : NSOffState];
- else if ([menuItem action] == @selector(toggleTransparentWindow:))
- [menuItem setState:[[self window] isOpaque] ? NSOffState : NSOnState];
-
- return YES;
-}
-
-- (IBAction)reload:(id)sender
-{
- WKPageReload(_webView.pageRef);
-}
-
-- (IBAction)forceRepaint:(id)sender
-{
- [_webView setNeedsDisplay:YES];
-}
-
-- (IBAction)goBack:(id)sender
-{
- WKPageGoBack(_webView.pageRef);
-}
-
-- (IBAction)goForward:(id)sender
-{
- WKPageGoForward(_webView.pageRef);
-}
-
-- (BOOL)validateUserInterfaceItem:(id <NSValidatedUserInterfaceItem>)item
-{
- SEL action = [item action];
-
- if (action == @selector(goBack:))
- return _webView && WKPageCanGoBack(_webView.pageRef);
-
- if (action == @selector(goForward:))
- return _webView && WKPageCanGoForward(_webView.pageRef);
-
- return YES;
-}
-
-- (void)validateToolbar
-{
- [toolbar validateVisibleItems];
-}
-
-- (BOOL)windowShouldClose:(id)sender
-{
- LOG(@"windowShouldClose");
- BOOL canCloseImmediately = WKPageTryClose(_webView.pageRef);
- return canCloseImmediately;
-}
-
-- (void)windowWillClose:(NSNotification *)notification
-{
- [(BrowserAppDelegate *)[NSApp delegate] browserWindowWillClose:[self window]];
- [self autorelease];
-}
-
-- (void)applicationTerminating
-{
- // FIXME: Why are we bothering to close the page? This doesn't even prevent LEAK output.
- WKPageClose(_webView.pageRef);
-}
-
-#define DefaultMinimumZoomFactor (.5)
-#define DefaultMaximumZoomFactor (3.0)
-#define DefaultZoomFactorRatio (1.2)
-
-- (double)currentZoomFactor
-{
- return _zoomTextOnly ? WKPageGetTextZoomFactor(_webView.pageRef) : WKPageGetPageZoomFactor(_webView.pageRef);
-}
-
-- (void)setCurrentZoomFactor:(double)factor
-{
- _zoomTextOnly ? WKPageSetTextZoomFactor(_webView.pageRef, factor) : WKPageSetPageZoomFactor(_webView.pageRef, factor);
-}
-
-- (BOOL)canZoomIn
-{
- return [self currentZoomFactor] * DefaultZoomFactorRatio < DefaultMaximumZoomFactor;
-}
-
-- (void)zoomIn:(id)sender
-{
- if (![self canZoomIn])
- return;
-
- double factor = [self currentZoomFactor] * DefaultZoomFactorRatio;
- [self setCurrentZoomFactor:factor];
-}
-
-- (BOOL)canZoomOut
-{
- return [self currentZoomFactor] / DefaultZoomFactorRatio > DefaultMinimumZoomFactor;
-}
-
-- (void)zoomOut:(id)sender
-{
- if (![self canZoomIn])
- return;
-
- double factor = [self currentZoomFactor] / DefaultZoomFactorRatio;
- [self setCurrentZoomFactor:factor];
-}
-
-- (BOOL)canResetZoom
-{
- return _zoomTextOnly ? (WKPageGetTextZoomFactor(_webView.pageRef) != 1) : (WKPageGetPageZoomFactor(_webView.pageRef) != 1);
-}
-
-- (void)resetZoom:(id)sender
-{
- if (![self canResetZoom])
- return;
-
- if (_zoomTextOnly)
- WKPageSetTextZoomFactor(_webView.pageRef, 1);
- else
- WKPageSetPageZoomFactor(_webView.pageRef, 1);
-}
-
-- (IBAction)toggleZoomMode:(id)sender
-{
- if (_zoomTextOnly) {
- _zoomTextOnly = NO;
- double currentTextZoom = WKPageGetTextZoomFactor(_webView.pageRef);
- WKPageSetPageAndTextZoomFactors(_webView.pageRef, currentTextZoom, 1);
- } else {
- _zoomTextOnly = YES;
- double currentPageZoom = WKPageGetPageZoomFactor(_webView.pageRef);
- WKPageSetPageAndTextZoomFactors(_webView.pageRef, 1, currentPageZoom);
- }
-}
-
-- (BOOL)isPaginated
-{
- return WKPageGetPaginationMode(_webView.pageRef) != kWKPaginationModeUnpaginated;
-}
-
-- (IBAction)togglePaginationMode:(id)sender
-{
- if ([self isPaginated])
- WKPageSetPaginationMode(_webView.pageRef, kWKPaginationModeUnpaginated);
- else {
- WKPageSetPaginationMode(_webView.pageRef, kWKPaginationModeLeftToRight);
- WKPageSetPageLength(_webView.pageRef, _webView.bounds.size.width / 2);
- WKPageSetGapBetweenPages(_webView.pageRef, 10);
- }
-}
-
-- (IBAction)toggleTransparentWindow:(id)sender
-{
- BOOL isTransparent = _webView.drawsTransparentBackground;
- isTransparent = !isTransparent;
-
- [[self window] setOpaque:!isTransparent];
- [[self window] setHasShadow:!isTransparent];
-
- _webView.drawsTransparentBackground = isTransparent;
-
- [[self window] display];
-}
-
-- (IBAction)dumpSourceToConsole:(id)sender
-{
- WKPageGetSourceForFrame_b(_webView.pageRef, WKPageGetMainFrame(_webView.pageRef), ^(WKStringRef result, WKErrorRef error) {
- if (!result)
- return;
-
- CFStringRef cfResult = WKStringCopyCFString(0, result);
- LOG(@"Main frame source\n \"%@\"", (NSString *)cfResult);
- CFRelease(cfResult);
- });
-}
-
-// MARK: Loader Client Callbacks
-
-static void didStartProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didStartProvisionalLoadForFrame:frame];
-}
-
-static void didReceiveServerRedirectForProvisionalLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didReceiveServerRedirectForProvisionalLoadForFrame:frame];
-}
-
-static void didFailProvisionalLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKErrorRef error, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didFailProvisionalLoadWithErrorForFrame:frame];
-}
-
-static void didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didCommitLoadForFrame:frame];
-}
-
-static void didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didFinishDocumentLoadForFrame");
-}
-
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didFinishLoadForFrame");
-}
-
-static void didFailLoadWithErrorForFrame(WKPageRef page, WKFrameRef frame, WKErrorRef error, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didFailLoadWithErrorForFrame:frame];
-}
-
-static void didSameDocumentNavigationForFrame(WKPageRef page, WKFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef userData, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didSameDocumentNavigationForFrame:frame];
-}
-
-static void didReceiveTitleForFrame(WKPageRef page, WKStringRef title, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- WK2BrowserWindowController* controller = (WK2BrowserWindowController*)clientInfo;
- CFStringRef cfTitle = WKStringCopyCFString(0, title);
- [[controller window] setTitle:[(NSString *)cfTitle stringByAppendingString:@" [WK2]"]];
- CFRelease(cfTitle);
-}
-
-static void didFirstLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didFirstLayoutForFrame");
-}
-
-static void didFirstVisuallyNonEmptyLayoutForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didFirstVisuallyNonEmptyLayoutForFrame");
-}
-
-static void didRemoveFrameFromHierarchy(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didRemoveFrameFromHierarchy");
-}
-
-static void didDisplayInsecureContentForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didDisplayInsecureContentForFrame");
-}
-
-static void didRunInsecureContentForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didRunInsecureContentForFrame");
-}
-
-static void didDetectXSSForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"didDetectXSSForFrame");
-}
-
-static void didStartProgress(WKPageRef page, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didStartProgress];
-}
-
-static void didChangeProgress(WKPageRef page, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didChangeProgress:WKPageGetEstimatedProgress(page)];
-}
-
-static void didFinishProgress(WKPageRef page, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo didFinishProgress];
-}
-
-static void didBecomeUnresponsive(WKPageRef page, const void *clientInfo)
-{
- LOG(@"didBecomeUnresponsive");
-}
-
-static void didBecomeResponsive(WKPageRef page, const void *clientInfo)
-{
- LOG(@"didBecomeResponsive");
-}
-
-static void processDidExit(WKPageRef page, const void *clientInfo)
-{
- LOG(@"processDidExit");
-}
-
-static void didChangeBackForwardList(WKPageRef page, WKBackForwardListItemRef addedItem, WKArrayRef removedItems, const void *clientInfo)
-{
- [(WK2BrowserWindowController *)clientInfo validateToolbar];
-}
-
-// MARK: Policy Client Callbacks
-
-static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- LOG(@"decidePolicyForNavigationAction");
- WKFramePolicyListenerUse(listener);
-}
-
-static void decidePolicyForNewWindowAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKStringRef frameName, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- LOG(@"decidePolicyForNewWindowAction");
- WKFramePolicyListenerUse(listener);
-}
-
-static void decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
-{
- WKFramePolicyListenerUse(listener);
-}
-
-// MARK: UI Client Callbacks
-
-static WKPageRef createNewPage(WKPageRef page, WKURLRequestRef request, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton button, const void* clientInfo)
-{
- LOG(@"createNewPage");
- WK2BrowserWindowController *controller = [[WK2BrowserWindowController alloc] initWithContext:WKPageGetContext(page) pageGroup:WKPageGetPageGroup(page)];
- [controller loadWindow];
-
- return WKRetain(controller->_webView.pageRef);
-}
-
-static void showPage(WKPageRef page, const void *clientInfo)
-{
- LOG(@"showPage");
- [[(BrowserWindowController *)clientInfo window] orderFront:nil];
-}
-
-static void closePage(WKPageRef page, const void *clientInfo)
-{
- LOG(@"closePage");
- WKPageClose(page);
- [[(BrowserWindowController *)clientInfo window] close];
-}
-
-static void runJavaScriptAlert(WKPageRef page, WKStringRef message, WKFrameRef frame, const void* clientInfo)
-{
- NSAlert* alert = [[NSAlert alloc] init];
-
- WKURLRef wkURL = WKFrameCopyURL(frame);
- CFURLRef cfURL = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- [alert setMessageText:[NSString stringWithFormat:@"JavaScript alert dialog from %@.", [(NSURL *)cfURL absoluteString]]];
- CFRelease(cfURL);
-
- CFStringRef cfMessage = WKStringCopyCFString(0, message);
- [alert setInformativeText:(NSString *)cfMessage];
- CFRelease(cfMessage);
-
- [alert addButtonWithTitle:@"OK"];
-
- [alert runModal];
- [alert release];
-}
-
-static bool runJavaScriptConfirm(WKPageRef page, WKStringRef message, WKFrameRef frame, const void* clientInfo)
-{
- NSAlert* alert = [[NSAlert alloc] init];
-
- WKURLRef wkURL = WKFrameCopyURL(frame);
- CFURLRef cfURL = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- [alert setMessageText:[NSString stringWithFormat:@"JavaScript confirm dialog from %@.", [(NSURL *)cfURL absoluteString]]];
- CFRelease(cfURL);
-
- CFStringRef cfMessage = WKStringCopyCFString(0, message);
- [alert setInformativeText:(NSString *)cfMessage];
- CFRelease(cfMessage);
-
- [alert addButtonWithTitle:@"OK"];
- [alert addButtonWithTitle:@"Cancel"];
-
- NSInteger button = [alert runModal];
- [alert release];
-
- return button == NSAlertFirstButtonReturn;
-}
-
-static WKStringRef runJavaScriptPrompt(WKPageRef page, WKStringRef message, WKStringRef defaultValue, WKFrameRef frame, const void* clientInfo)
-{
- NSAlert* alert = [[NSAlert alloc] init];
-
- WKURLRef wkURL = WKFrameCopyURL(frame);
- CFURLRef cfURL = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- [alert setMessageText:[NSString stringWithFormat:@"JavaScript prompt dialog from %@.", [(NSURL *)cfURL absoluteString]]];
- CFRelease(cfURL);
-
- CFStringRef cfMessage = WKStringCopyCFString(0, message);
- [alert setInformativeText:(NSString *)cfMessage];
- CFRelease(cfMessage);
-
- [alert addButtonWithTitle:@"OK"];
- [alert addButtonWithTitle:@"Cancel"];
-
- NSTextField* input = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 200, 24)];
- CFStringRef cfDefaultValue = WKStringCopyCFString(0, defaultValue);
- [input setStringValue:(NSString *)cfDefaultValue];
- CFRelease(cfDefaultValue);
-
- [alert setAccessoryView:input];
-
- NSInteger button = [alert runModal];
-
- NSString* result = nil;
- if (button == NSAlertFirstButtonReturn) {
- [input validateEditing];
- result = [input stringValue];
- }
-
- [alert release];
-
- if (!result)
- return 0;
- return WKStringCreateWithCFString((CFStringRef)result);
-}
-
-static void setStatusText(WKPageRef page, WKStringRef text, const void* clientInfo)
-{
- LOG(@"setStatusText");
-}
-
-static void mouseDidMoveOverElement(WKPageRef page, WKHitTestResultRef hitTestResult, WKEventModifiers modifiers, WKTypeRef userData, const void *clientInfo)
-{
- LOG(@"mouseDidMoveOverElement");
-}
-
-static WKRect getWindowFrame(WKPageRef page, const void* clientInfo)
-{
- NSRect rect = [[(BrowserWindowController *)clientInfo window] frame];
- WKRect wkRect;
- wkRect.origin.x = rect.origin.x;
- wkRect.origin.y = rect.origin.y;
- wkRect.size.width = rect.size.width;
- wkRect.size.height = rect.size.height;
- return wkRect;
-}
-
-static void setWindowFrame(WKPageRef page, WKRect rect, const void* clientInfo)
-{
- [[(BrowserWindowController *)clientInfo window] setFrame:NSMakeRect(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height) display:YES];
-}
-
-static bool runBeforeUnloadConfirmPanel(WKPageRef page, WKStringRef message, WKFrameRef frame, const void* clientInfo)
-{
- NSAlert *alert = [[NSAlert alloc] init];
-
- WKURLRef wkURL = WKFrameCopyURL(frame);
- CFURLRef cfURL = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- [alert setMessageText:[NSString stringWithFormat:@"BeforeUnload confirm dialog from %@.", [(NSURL *)cfURL absoluteString]]];
- CFRelease(cfURL);
-
- CFStringRef cfMessage = WKStringCopyCFString(0, message);
- [alert setInformativeText:(NSString *)cfMessage];
- CFRelease(cfMessage);
-
- [alert addButtonWithTitle:@"OK"];
- [alert addButtonWithTitle:@"Cancel"];
-
- NSInteger button = [alert runModal];
- [alert release];
-
- return button == NSAlertFirstButtonReturn;
-}
-
-static void runOpenPanel(WKPageRef page, WKFrameRef frame, WKOpenPanelParametersRef parameters, WKOpenPanelResultListenerRef listener, const void* clientInfo)
-{
- NSOpenPanel *openPanel = [NSOpenPanel openPanel];
- [openPanel setAllowsMultipleSelection:WKOpenPanelParametersGetAllowsMultipleFiles(parameters)];
-
- WKRetain(listener);
-
- [openPanel beginSheetModalForWindow:[(BrowserWindowController *)clientInfo window] completionHandler:^(NSInteger result) {
- if (result == NSFileHandlingPanelOKButton) {
- WKMutableArrayRef fileURLs = WKMutableArrayCreate();
-
- NSURL *nsURL;
- for (nsURL in [openPanel URLs]) {
- WKURLRef wkURL = WKURLCreateWithCFURL((CFURLRef)nsURL);
- WKArrayAppendItem(fileURLs, wkURL);
- WKRelease(wkURL);
- }
-
- WKOpenPanelResultListenerChooseFiles(listener, fileURLs);
-
- WKRelease(fileURLs);
- } else
- WKOpenPanelResultListenerCancel(listener);
-
- WKRelease(listener);
- }];
-}
-
-- (void)awakeFromNib
-{
- _webView = [[WKView alloc] initWithFrame:[containerView bounds] contextRef:_context pageGroupRef:_pageGroup];
-
- [_webView setAutoresizingMask:(NSViewWidthSizable | NSViewHeightSizable)];
- [containerView addSubview:_webView];
-
- WKPageLoaderClient loadClient = {
- kWKPageLoaderClientCurrentVersion,
- self, /* clientInfo */
- didStartProvisionalLoadForFrame,
- didReceiveServerRedirectForProvisionalLoadForFrame,
- didFailProvisionalLoadWithErrorForFrame,
- didCommitLoadForFrame,
- didFinishDocumentLoadForFrame,
- didFinishLoadForFrame,
- didFailLoadWithErrorForFrame,
- didSameDocumentNavigationForFrame,
- didReceiveTitleForFrame,
- didFirstLayoutForFrame,
- didFirstVisuallyNonEmptyLayoutForFrame,
- didRemoveFrameFromHierarchy,
- didDisplayInsecureContentForFrame,
- didRunInsecureContentForFrame,
- 0, // canAuthenticateAgainstProtectionSpaceInFrame
- 0, // didReceiveAuthenticationChallengeInFrame
- didStartProgress,
- didChangeProgress,
- didFinishProgress,
- didBecomeUnresponsive,
- didBecomeResponsive,
- processDidExit,
- didChangeBackForwardList,
- 0, // shouldGoToBackForwardItem
- 0, // didFailToInitializePlugin
- didDetectXSSForFrame,
- 0, // didNewFirstVisuallyNonEmptyLayout
- 0, // willGoToBackForwardListItem
- 0, // interactionOccurredWhileProcessUnresponsive
- 0, // pluginDidFail_deprecatedForUseWithV1
- 0, // didReceiveIntentForFrame
- 0, // registerIntentServiceForFrame
- 0, // didLayout
- 0, // pluginLoadPolicy_deprecatedForUseWithV2
- 0, // pluginDidFail
- 0, // pluginLoadPolicy
- };
- WKPageSetPageLoaderClient(_webView.pageRef, &loadClient);
-
- WKPagePolicyClient policyClient = {
- kWKPagePolicyClientCurrentVersion,
- self, /* clientInfo */
- decidePolicyForNavigationAction,
- decidePolicyForNewWindowAction,
- decidePolicyForResponse,
- 0 /* unableToImplementPolicy */
- };
- WKPageSetPagePolicyClient(_webView.pageRef, &policyClient);
-
- WKPageUIClient uiClient = {
- kWKPageUIClientCurrentVersion,
- self, /* clientInfo */
- 0, /* createNewPage_deprecatedForUseWithV0 */
- showPage,
- closePage,
- 0, /* takeFocus */
- 0, /* focus */
- 0, /* unfocus */
- runJavaScriptAlert,
- runJavaScriptConfirm,
- runJavaScriptPrompt,
- setStatusText,
- 0, /* mouseDidMoveOverElement_deprecatedForUseWithV0 */
- 0, /* missingPluginButtonClicked */
- 0, /* didNotHandleKeyEvent */
- 0, /* didNotHandleWheelEvent */
- 0, /* toolbarsAreVisible */
- 0, /* setToolbarsAreVisible */
- 0, /* menuBarIsVisible */
- 0, /* setMenuBarIsVisible */
- 0, /* statusBarIsVisible */
- 0, /* setStatusBarIsVisible */
- 0, /* isResizable */
- 0, /* setIsResizable */
- getWindowFrame,
- setWindowFrame,
- runBeforeUnloadConfirmPanel,
- 0, /* didDraw */
- 0, /* pageDidScroll */
- 0, /* exceededDatabaseQuota */
- runOpenPanel,
- 0, /* decidePolicyForGeolocationPermissionRequest */
- 0, // headerHeight
- 0, // footerHeight
- 0, // drawHeader
- 0, // drawFooter
- 0, // printFrame
- 0, // showModal
- 0, // didCompleteRubberBandForMainFrame
- 0, // saveDataToFileInDownloadsFolder
- 0, // shouldInterruptJavaScript
- createNewPage,
- mouseDidMoveOverElement,
- 0, // decidePolicyForNotificationPermissionRequest
- 0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
- 0, // showColorPicker
- 0, // hideColorPicker
- 0, // unavailablePluginButtonClicked
- };
- WKPageSetPageUIClient(_webView.pageRef, &uiClient);
-}
-
-- (void)didStartProgress
-{
- [progressIndicator setDoubleValue:0.0];
- [progressIndicator setHidden:NO];
-}
-
-- (void)didChangeProgress:(double)value
-{
- [progressIndicator setDoubleValue:value];
-}
-
-- (void)didFinishProgress
-{
- [progressIndicator setHidden:YES];
- [progressIndicator setDoubleValue:1.0];
-}
-
-- (void)updateTextFieldFromURL:(WKURLRef)URLRef
-{
- if (!URLRef)
- return;
-
- static WKURLRef emptyURL = 0;
- if (!emptyURL)
- emptyURL = WKURLCreateWithUTF8CString("");
-
- if (WKURLIsEqual(URLRef, emptyURL))
- return;
-
- CFURLRef cfSourceURL = WKURLCopyCFURL(0, URLRef);
- [urlText setStringValue:(NSString*)CFURLGetString(cfSourceURL)];
- CFRelease(cfSourceURL);
-}
-
-- (void)updateProvisionalURLForFrame:(WKFrameRef)frame
-{
- WKURLRef url = WKFrameCopyProvisionalURL(frame);
- if (!url)
- return;
- [self updateTextFieldFromURL:url];
- WKRelease(url);
-}
-
-- (void)updateCommittedURLForFrame:(WKFrameRef)frame
-{
- WKURLRef url = WKFrameCopyURL(frame);
- if (!url)
- return;
- [self updateTextFieldFromURL:url];
- WKRelease(url);
-}
-
-- (void)didStartProvisionalLoadForFrame:(WKFrameRef)frame
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- [self updateProvisionalURLForFrame:frame];
-}
-
-- (void)didReceiveServerRedirectForProvisionalLoadForFrame:(WKFrameRef)frame
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- [self updateProvisionalURLForFrame:frame];
-}
-
-- (void)didFailProvisionalLoadWithErrorForFrame:(WKFrameRef)frame
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- [self updateProvisionalURLForFrame:frame];
-}
-
-- (void)didFailLoadWithErrorForFrame:(WKFrameRef)frame
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- [self updateProvisionalURLForFrame:frame];
-}
-
-- (void)didSameDocumentNavigationForFrame:(WKFrameRef)frame
-{
-}
-
-- (void)didCommitLoadForFrame:(WKFrameRef)frame
-{
- if (!WKFrameIsMainFrame(frame))
- return;
-
- [self updateCommittedURLForFrame:frame];
-}
-
-- (void)loadURLString:(NSString *)urlString
-{
- // FIXME: We shouldn't have to set the url text here.
- [urlText setStringValue:urlString];
- [self fetch:nil];
-}
-
-- (IBAction)performFindPanelAction:(id)sender
-{
- [findPanelWindow makeKeyAndOrderFront:sender];
-}
-
-- (IBAction)find:(id)sender
-{
- WKStringRef string = WKStringCreateWithCFString((CFStringRef)[sender stringValue]);
-
- WKPageFindString(_webView.pageRef, string, kWKFindOptionsCaseInsensitive | kWKFindOptionsWrapAround | kWKFindOptionsShowFindIndicator | kWKFindOptionsShowOverlay, 100);
-}
-
-@end
diff --git a/Tools/MiniBrowser/mac/WebBundle/Info.plist b/Tools/MiniBrowser/mac/WebBundle/Info.plist
deleted file mode 100644
index c285a472c..000000000
--- a/Tools/MiniBrowser/mac/WebBundle/Info.plist
+++ /dev/null
@@ -1,22 +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>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m b/Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m
deleted file mode 100644
index 16e86b404..000000000
--- a/Tools/MiniBrowser/mac/WebBundle/WebBundleMain.m
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 <Cocoa/Cocoa.h>
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundleInitialize.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKString.h>
-#include <WebKit2/WKStringCF.h>
-#include <WebKit2/WKURLCF.h>
-#include <stdio.h>
-
-static WKBundleRef globalBundle;
-
-// WKBundlePageClient functions
-
-void didClearWindowObjectForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKBundleScriptWorldRef world, const void *clientInfo)
-{
- WKURLRef wkURL = WKBundleFrameCopyURL(WKBundlePageGetMainFrame(page));
- CFURLRef cfURL = WKURLCopyCFURL(0, wkURL);
- WKRelease(wkURL);
-
- LOG(@"WKBundlePageClient - didClearWindowForFrame %@", [(NSURL *)cfURL absoluteString]);
- if (cfURL)
- CFRelease(cfURL);
-
- WKStringRef messageName = WKStringCreateWithCFString(CFSTR("Callback"));
- WKStringRef messageBody = WKStringCreateWithCFString(CFSTR("Window was cleared"));
- WKBundlePostMessage(globalBundle, messageName, messageBody);
- WKRelease(messageName);
- WKRelease(messageBody);
-}
-
-
-// WKBundleClient
-
-void didCreatePage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
-{
- LOG(@"WKBundleClient - didCreatePage\n");
-
- WKBundlePageLoaderClient client;
- memset(&client, 0, sizeof(client));
- client.didClearWindowObjectForFrame = didClearWindowObjectForFrame;
-
- WKBundlePageSetPageLoaderClient(page, &client);
-}
-
-void willDestroyPage(WKBundleRef bundle, WKBundlePageRef page, const void* clientInfo)
-{
- LOG(@"WKBundleClient - willDestroyPage\n");
-}
-
-void didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo)
-{
- CFStringRef cfMessageName = WKStringCopyCFString(0, messageName);
-
- WKTypeID typeID = WKGetTypeID(messageBody);
- if (typeID == WKStringGetTypeID()) {
- CFStringRef cfMessageBody = WKStringCopyCFString(0, (WKStringRef)messageBody);
- LOG(@"WKBundleClient - didReceiveMessage - MessageName: %@ MessageBody %@", cfMessageName, cfMessageBody);
- CFRelease(cfMessageBody);
- } else {
- LOG(@"WKBundleClient - didReceiveMessage - MessageName: %@ (MessageBody Unhandled)\n", cfMessageName);
- }
-
- CFRelease(cfMessageName);
-}
-
-void WKBundleInitialize(WKBundleRef bundle, WKTypeRef initializationUserData)
-{
- globalBundle = bundle;
-
- WKBundleClient client = {
- kWKBundleClientCurrentVersion,
- 0,
- didCreatePage,
- willDestroyPage,
- 0, // didInitializePageGroup
- didReceiveMessage,
- 0 // didReceiveMessageToPage
- };
- WKBundleSetClient(bundle, &client);
-}
diff --git a/Tools/MiniBrowser/mac/main.m b/Tools/MiniBrowser/mac/main.m
deleted file mode 100644
index 7f5673749..000000000
--- a/Tools/MiniBrowser/mac/main.m
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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>
-
-int main(int argc, char *argv[])
-{
- return NSApplicationMain(argc, (const char **) argv);
-}
diff --git a/Tools/MiniBrowser/qt/MiniBrowser.pro b/Tools/MiniBrowser/qt/MiniBrowser.pro
deleted file mode 100644
index 3db1c7887..000000000
--- a/Tools/MiniBrowser/qt/MiniBrowser.pro
+++ /dev/null
@@ -1,38 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for the WebKit2 MiniBrowser binary
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = app
-
-WEBKIT += wtf
-
-INCLUDEPATH += \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \
- $${ROOT_WEBKIT_DIR}/Tools/DumpRenderTree/qt/
-
-SOURCES += \
- BrowserWindow.cpp \
- main.cpp \
- MiniBrowserApplication.cpp \
- UrlLoader.cpp \
- utils.cpp \
-
-HEADERS += \
- BrowserWindow.h \
- MiniBrowserApplication.h \
- UrlLoader.h \
- utils.h \
-
-TARGET = MiniBrowser
-DESTDIR = $${ROOT_BUILD_DIR}/bin
-
-have?(FONTCONFIG): PKGCONFIG += fontconfig
-
-QT += network gui-private quick quick-private webkit webkit-private
-macx: QT += xml
-
-RESOURCES += MiniBrowser.qrc
-
-OTHER_FILES += qml/*
diff --git a/Tools/MiniBrowser/qt/raw/DerivedSources.pri b/Tools/MiniBrowser/qt/raw/DerivedSources.pri
deleted file mode 100644
index dc4d2f4ff..000000000
--- a/Tools/MiniBrowser/qt/raw/DerivedSources.pri
+++ /dev/null
@@ -1,6 +0,0 @@
-TEMPLATE = derived
-
-# Make sure forwarded headers needed by this project are present
-fwheader_generator.commands = perl $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl $${ROOT_WEBKIT_DIR}/Tools/WebKitTestRunner $${ROOT_BUILD_DIR}/Source/include qt
-fwheader_generator.depends = $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl
-GENERATORS += fwheader_generator
diff --git a/Tools/MiniBrowser/qt/raw/MiniBrowserRaw.pro b/Tools/MiniBrowser/qt/raw/MiniBrowserRaw.pro
deleted file mode 100644
index 0503104c0..000000000
--- a/Tools/MiniBrowser/qt/raw/MiniBrowserRaw.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-
-derived_sources.file = DerivedSources.pri
-target.file = Target.pri
-
-SUBDIRS = derived_sources target
-
-addStrictSubdirOrderBetween(derived_sources, target)
diff --git a/Tools/MiniBrowser/qt/raw/Target.pri b/Tools/MiniBrowser/qt/raw/Target.pri
deleted file mode 100644
index afc38ce5f..000000000
--- a/Tools/MiniBrowser/qt/raw/Target.pri
+++ /dev/null
@@ -1,14 +0,0 @@
-TEMPLATE = app
-TARGET = MiniBrowserRaw
-
-HEADERS += \
- View.h
-
-SOURCES += \
- View.cpp
-
-DESTDIR = $${ROOT_BUILD_DIR}/bin
-
-QT = core gui network webkitwidgets
-
-WEBKIT += wtf javascriptcore webkit2
diff --git a/Tools/QtTestBrowser/CMakeLists.txt b/Tools/QtTestBrowser/CMakeLists.txt
new file mode 100644
index 000000000..1ee49365a
--- /dev/null
+++ b/Tools/QtTestBrowser/CMakeLists.txt
@@ -0,0 +1,68 @@
+set(QtTestBrowser_INCLUDE_DIRECTORIES
+ "${CMAKE_BINARY_DIR}"
+ "${CMAKE_SOURCE_DIR}/Source"
+ "${DERIVED_SOURCES_WEBKIT_DIR}"
+ "${DERIVED_SOURCES_DIR}/ForwardingHeaders"
+ "${DERIVED_SOURCES_DIR}/ForwardingHeaders/QtWebKit"
+ "${DERIVED_SOURCES_DIR}/ForwardingHeaders/QtWebKitWidgets"
+ "${JAVASCRIPTCORE_DIR}"
+ "${JAVASCRIPTCORE_DIR}/runtime"
+ "${WEBCORE_DIR}"
+ "${WEBCORE_DIR}/platform"
+ "${WEBCORE_DIR}/platform/qt"
+ "${WEBKIT_DIR}/qt/Api"
+ "${WEBKIT_DIR}/qt/WebCoreSupport"
+ "${WEBKIT_DIR}/qt/WidgetApi"
+ "${WTF_DIR}"
+)
+
+set(QtTestBrowser_SOURCES
+ cookiejar.cpp
+ fpstimer.cpp
+ launcherwindow.cpp
+ locationedit.cpp
+ mainwindow.cpp
+ qttestbrowser.cpp
+ urlloader.cpp
+ utils.cpp
+ webpage.cpp
+ webview.cpp
+)
+
+set(QtTestBrowser_SYSTEM_INCLUDE_DIRECTORIES
+ ${Qt5Gui_INCLUDE_DIRS}
+ ${Qt5Network_INCLUDE_DIRS}
+ ${Qt5Widgets_INCLUDE_DIRS}
+)
+
+set(QtTestBrowser_LIBRARIES
+ ${Qt5Gui_LIBRARIES}
+ ${Qt5Network_LIBRARIES}
+ ${Qt5Widgets_LIBRARIES}
+ ${Qt5PrintSupport_LIBRARIES}
+ WebKitWidgets
+)
+
+qt_wrap_cpp(WebKit QtTestBrowser_SOURCES
+ webinspector.h
+)
+
+if (Qt5OpenGL_FOUND)
+ list(APPEND QtTestBrowser_SYSTEM_INCLUDE_DIRECTORIES
+ ${Qt5OpenGL_INCLUDE_DIRS}
+ )
+ list(APPEND QtTestBrowser_LIBRARIES
+ ${Qt5OpenGL_LIBRARIES}
+ )
+ add_definitions(-DQT_CONFIGURED_WITH_OPENGL)
+endif ()
+
+if (ENABLE_TEST_SUPPORT)
+ add_definitions(-DHAVE_QTTESTSUPPORT)
+endif ()
+
+include_directories(${QtTestBrowser_INCLUDE_DIRECTORIES})
+include_directories(SYSTEM ${QtTestBrowser_SYSTEM_INCLUDE_DIRECTORIES})
+add_executable(QtTestBrowser ${QtTestBrowser_SOURCES})
+target_link_libraries(QtTestBrowser ${QtTestBrowser_LIBRARIES})
+set_target_properties(QtTestBrowser PROPERTIES FOLDER "Tools")
diff --git a/Tools/QtTestBrowser/QtTestBrowser.pro b/Tools/QtTestBrowser/QtTestBrowser.pro
deleted file mode 100644
index 366d0bd5a..000000000
--- a/Tools/QtTestBrowser/QtTestBrowser.pro
+++ /dev/null
@@ -1,57 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for the QtTestBrowser binary
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = app
-
-INCLUDEPATH += \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \
- $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WebCoreSupport \
- $${ROOT_WEBKIT_DIR}/Tools/DumpRenderTree/qt/ \
- $${ROOT_WEBKIT_DIR}/Source/WTF
-
-SOURCES += \
- locationedit.cpp \
- launcherwindow.cpp \
- qttestbrowser.cpp \
- mainwindow.cpp \
- urlloader.cpp \
- utils.cpp \
- webpage.cpp \
- webview.cpp \
- fpstimer.cpp \
- cookiejar.cpp
-
-HEADERS += \
- locationedit.h \
- launcherwindow.h \
- mainwindow.h \
- urlloader.h \
- utils.h \
- webinspector.h \
- webpage.h \
- webview.h \
- fpstimer.h \
- cookiejar.h
-
-
-WEBKIT += wtf webcore
-
-DESTDIR = $$ROOT_BUILD_DIR/bin
-
-QT += network webkitwidgets widgets
-have?(QTPRINTSUPPORT): QT += printsupport
-
-macx:QT += xml
-
-have?(FONTCONFIG): PKGCONFIG += fontconfig
-
-qtHaveModule(opengl) {
- QT += opengl
- DEFINES += QT_CONFIGURED_WITH_OPENGL
-}
-
-RESOURCES += \
- QtTestBrowser.qrc
diff --git a/Tools/QtTestBrowser/launcherwindow.cpp b/Tools/QtTestBrowser/launcherwindow.cpp
index 0cb0ab2ce..84a4c0873 100644
--- a/Tools/QtTestBrowser/launcherwindow.cpp
+++ b/Tools/QtTestBrowser/launcherwindow.cpp
@@ -95,12 +95,6 @@ LauncherWindow::LauncherWindow(WindowOptions* data, QGraphicsScene* sharedScene)
, m_inspector(0)
, m_formatMenuAction(0)
, m_zoomAnimation(0)
-#if !defined(QT_NO_FILEDIALOG) && !defined(QT_NO_MESSAGEBOX)
- , m_reply(0)
-#endif
-#ifndef QT_NO_LINEEDIT
- , m_findFlag(0)
-#endif
{
if (data)
m_windowOptions = *data;
@@ -175,10 +169,7 @@ void LauncherWindow::initializeView()
WebViewGraphicsBased* view = new WebViewGraphicsBased(splitter);
m_view = view;
#ifndef QT_NO_OPENGL
- if (!m_windowOptions.useQOpenGLWidgetViewport)
- toggleQGLWidgetViewport(m_windowOptions.useQGLWidgetViewport);
- if (!m_windowOptions.useQGLWidgetViewport)
- toggleQOpenGLWidgetViewport(m_windowOptions.useQOpenGLWidgetViewport);
+ toggleQGLWidgetViewport(m_windowOptions.useQGLWidgetViewport);
#endif
view->setPage(page());
@@ -221,11 +212,14 @@ void LauncherWindow::initializeView()
void LauncherWindow::applyPrefs()
{
QWebSettings* settings = page()->settings();
- settings->setAttribute(QWebSettings::AcceleratedCompositingEnabled, m_windowOptions.useCompositing);
+#ifndef QT_NO_OPENGL
+ settings->setAttribute(QWebSettings::AcceleratedCompositingEnabled, m_windowOptions.useCompositing && m_windowOptions.useQGLWidgetViewport);
+#endif
settings->setAttribute(QWebSettings::TiledBackingStoreEnabled, m_windowOptions.useTiledBackingStore);
settings->setAttribute(QWebSettings::FrameFlatteningEnabled, m_windowOptions.useFrameFlattening);
settings->setAttribute(QWebSettings::WebGLEnabled, m_windowOptions.useWebGL);
m_windowOptions.useWebAudio = settings->testAttribute(QWebSettings::WebAudioEnabled);
+ m_windowOptions.useMediaSource = settings->testAttribute(QWebSettings::MediaSourceEnabled);
if (!isGraphicsBased())
return;
@@ -263,6 +257,8 @@ void LauncherWindow::createChrome()
editMenu->addAction(page()->action(QWebPage::Copy));
editMenu->addAction(page()->action(QWebPage::Paste));
editMenu->addSeparator();
+ editMenu->addAction(page()->action(QWebPage::SelectAll));
+ editMenu->addSeparator();
#ifndef QT_NO_LINEEDIT
editMenu->addAction("&Find", this, SLOT(showFindBar()), QKeySequence(Qt::CTRL | Qt::Key_F));
editMenu->addSeparator();
@@ -333,6 +329,13 @@ void LauncherWindow::createChrome()
toggleWebAudio->setEnabled(false);
#endif
+ QAction* toggleMediaSource = toolsMenu->addAction("Toggle MediaSource", this, SLOT(toggleMediaSource(bool)));
+ toggleMediaSource->setCheckable(true);
+ toggleWebGL->setChecked(settings->testAttribute(QWebSettings::MediaSourceEnabled));
+#if !ENABLE(MEDIA_SOURCE)
+ toggleMediaSource->setEnabled(false);
+#endif
+
QAction* spatialNavigationAction = toolsMenu->addAction("Toggle Spatial Navigation", this, SLOT(toggleSpatialNavigation(bool)));
spatialNavigationAction->setCheckable(true);
spatialNavigationAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_S));
@@ -382,12 +385,8 @@ void LauncherWindow::createChrome()
QAction* toggleAcceleratedCompositing = graphicsViewMenu->addAction("Toggle Accelerated Compositing", this, SLOT(toggleAcceleratedCompositing(bool)));
toggleAcceleratedCompositing->setCheckable(true);
toggleAcceleratedCompositing->setChecked(settings->testAttribute(QWebSettings::AcceleratedCompositingEnabled));
-
- QAction* toggleAccelerated2dCanvas = graphicsViewMenu->addAction("Toggle Accelerated 2D canvas", this, SLOT(toggleAccelerated2dCanvas(bool)));
- toggleAccelerated2dCanvas->setCheckable(true);
- toggleAccelerated2dCanvas->setEnabled(settings->testAttribute(QWebSettings::AcceleratedCompositingEnabled));
- toggleAccelerated2dCanvas->setChecked(settings->testAttribute(QWebSettings::Accelerated2dCanvasEnabled));
- toggleAccelerated2dCanvas->connect(toggleAcceleratedCompositing, SIGNAL(toggled(bool)), SLOT(setEnabled(bool)));
+ toggleAcceleratedCompositing->setEnabled(isGraphicsBased());
+ toggleAcceleratedCompositing->connect(toggleGraphicsView, SIGNAL(toggled(bool)), SLOT(setEnabled(bool)));
QAction* toggleResizesToContents = graphicsViewMenu->addAction("Toggle Resizes To Contents Mode", this, SLOT(toggleResizesToContents(bool)));
toggleResizesToContents->setCheckable(true);
@@ -407,13 +406,6 @@ void LauncherWindow::createChrome()
toggleQGLWidgetViewport->setChecked(m_windowOptions.useQGLWidgetViewport);
toggleQGLWidgetViewport->setEnabled(isGraphicsBased());
toggleQGLWidgetViewport->connect(toggleGraphicsView, SIGNAL(toggled(bool)), SLOT(setEnabled(bool)));
-#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
- QAction* toggleQOpenGLWidgetViewport = graphicsViewMenu->addAction("Toggle use of QOpenGLWidget Viewport", this, SLOT(toggleQOpenGLWidgetViewport(bool)));
- toggleQOpenGLWidgetViewport->setCheckable(true);
- toggleQOpenGLWidgetViewport->setChecked(m_windowOptions.useQOpenGLWidgetViewport);
- toggleQOpenGLWidgetViewport->setEnabled(isGraphicsBased());
- toggleQOpenGLWidgetViewport->connect(toggleGraphicsView, SIGNAL(toggled(bool)), SLOT(setEnabled(bool)));
-#endif
#endif
QMenu* viewportUpdateMenu = graphicsViewMenu->addMenu("Change Viewport Update Mode");
@@ -800,10 +792,7 @@ void LauncherWindow::screenshot()
#endif
#ifndef QT_NO_OPENGL
- if (!m_windowOptions.useQOpenGLWidgetViewport)
- toggleQGLWidgetViewport(m_windowOptions.useQGLWidgetViewport);
- if (!m_windowOptions.useQGLWidgetViewport)
- toggleQOpenGLWidgetViewport(m_windowOptions.useQOpenGLWidgetViewport);
+ toggleQGLWidgetViewport(m_windowOptions.useQGLWidgetViewport);
#endif
}
@@ -894,11 +883,6 @@ void LauncherWindow::toggleAcceleratedCompositing(bool toggle)
page()->settings()->setAttribute(QWebSettings::AcceleratedCompositingEnabled, toggle);
}
-void LauncherWindow::toggleAccelerated2dCanvas(bool toggle)
-{
- page()->settings()->setAttribute(QWebSettings::Accelerated2dCanvasEnabled, toggle);
-}
-
void LauncherWindow::toggleTiledBackingStore(bool toggle)
{
page()->settings()->setAttribute(QWebSettings::TiledBackingStoreEnabled, toggle);
@@ -922,6 +906,12 @@ void LauncherWindow::toggleWebAudio(bool toggle)
page()->settings()->setAttribute(QWebSettings::WebAudioEnabled, toggle);
}
+void LauncherWindow::toggleMediaSource(bool toggle)
+{
+ m_windowOptions.useMediaSource = toggle;
+ page()->settings()->setAttribute(QWebSettings::MediaSourceEnabled, toggle);
+}
+
void LauncherWindow::animatedFlip()
{
qobject_cast<WebViewGraphicsBased*>(m_view)->animatedFlip();
@@ -931,9 +921,10 @@ void LauncherWindow::animatedYFlip()
{
qobject_cast<WebViewGraphicsBased*>(m_view)->animatedYFlip();
}
-void LauncherWindow::toggleSpatialNavigation(bool b)
+
+void LauncherWindow::toggleSpatialNavigation(bool enable)
{
- page()->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled, b);
+ page()->settings()->setAttribute(QWebSettings::SpatialNavigationEnabled, enable);
}
void LauncherWindow::toggleFullScreenMode(bool enable)
@@ -990,27 +981,10 @@ void LauncherWindow::toggleQGLWidgetViewport(bool enable)
if (!isGraphicsBased())
return;
- if (enable)
- m_windowOptions.useQOpenGLWidgetViewport = false;
m_windowOptions.useQGLWidgetViewport = enable;
-
WebViewGraphicsBased* view = static_cast<WebViewGraphicsBased*>(m_view);
- view->setViewport(enable ? new QGLWidget() : 0);
-}
-void LauncherWindow::toggleQOpenGLWidgetViewport(bool enable)
-{
- if (!isGraphicsBased())
- return;
-
-#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
- if (enable)
- m_windowOptions.useQGLWidgetViewport = false;
- m_windowOptions.useQOpenGLWidgetViewport = enable;
-
- WebViewGraphicsBased* view = static_cast<WebViewGraphicsBased*>(m_view);
- view->setViewport(enable ? new QOpenGLWidget() : 0);
-#endif
+ view->setViewport(enable ? new QGLWidget() : 0);
}
#endif
diff --git a/Tools/QtTestBrowser/launcherwindow.h b/Tools/QtTestBrowser/launcherwindow.h
index 5cee7e5c7..9fd41a445 100644
--- a/Tools/QtTestBrowser/launcherwindow.h
+++ b/Tools/QtTestBrowser/launcherwindow.h
@@ -38,9 +38,6 @@
#ifndef QT_NO_OPENGL
#include <QtOpenGL/QGLWidget>
#endif
-#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0)
-#include <QOpenGLWidget>
-#endif
#include <QDebug>
@@ -67,54 +64,31 @@ struct HighlightedElement;
class WindowOptions {
public:
- WindowOptions()
- : useGraphicsView(false)
- , useDiskCache(false)
- , useCompositing(true)
- , useTiledBackingStore(false)
- , useWebGL(false)
- , useWebAudio(false)
- , useFrameFlattening(false)
- , cacheWebView(false)
- , showFrameRate(false)
- , resizesToContents(false)
- , viewportUpdateMode(QGraphicsView::MinimalViewportUpdate)
- , useLocalStorage(false)
- , useOfflineStorageDatabase(false)
- , useOfflineWebApplicationCache(false)
- , useDiskCookies(true)
- , enableScrollAnimator(false)
- , offlineStorageDefaultQuotaSize(0)
- , useQGLWidgetViewport(false)
- , useQOpenGLWidgetViewport(false)
- , printLoadedUrls(false)
- , startMaximized(false)
- {
- }
-
- bool useGraphicsView;
- bool useDiskCache;
- bool useCompositing;
- bool useTiledBackingStore;
- bool useWebGL;
- bool useWebAudio;
- bool useFrameFlattening;
- bool cacheWebView;
- bool showFrameRate;
- bool resizesToContents;
- QGraphicsView::ViewportUpdateMode viewportUpdateMode;
- bool useLocalStorage;
- bool useOfflineStorageDatabase;
- bool useOfflineWebApplicationCache;
- bool useDiskCookies;
- bool enableScrollAnimator;
- quint64 offlineStorageDefaultQuotaSize;
- bool useQGLWidgetViewport;
- bool useQOpenGLWidgetViewport;
- bool printLoadedUrls;
+ bool useGraphicsView { false };
+ bool useDiskCache { false };
+ bool useCompositing { false };
+ bool useTiledBackingStore { false };
+ bool useWebGL { false };
+ bool useWebAudio { false };
+ bool useMediaSource { false };
+ bool useFrameFlattening { false };
+ bool cacheWebView { false };
+ bool showFrameRate { false };
+ bool resizesToContents { false };
+ QGraphicsView::ViewportUpdateMode viewportUpdateMode { QGraphicsView::MinimalViewportUpdate };
+ bool useLocalStorage { false };
+ bool useOfflineStorageDatabase { false };
+ bool useOfflineWebApplicationCache { false };
+ bool useDiskCookies { true };
+ bool enableScrollAnimator { false };
+ quint64 offlineStorageDefaultQuotaSize { 0 };
+#ifndef QT_NO_OPENGL
+ bool useQGLWidgetViewport { false };
+#endif
+ bool printLoadedUrls { false };
QUrl inspectorUrl;
- quint16 remoteInspectorPort;
- bool startMaximized;
+ quint16 remoteInspectorPort { 0 };
+ bool startMaximized { false };
};
class LauncherWindow : public MainWindow {
@@ -126,7 +100,7 @@ public:
void sendTouchEvent();
- bool eventFilter(QObject* obj, QEvent* event);
+ bool eventFilter(QObject*, QEvent*);
protected Q_SLOTS:
void loadStarted();
@@ -154,12 +128,12 @@ protected Q_SLOTS:
void setTouchMocking(bool on);
void toggleWebView(bool graphicsBased);
void toggleAcceleratedCompositing(bool toggle);
- void toggleAccelerated2dCanvas(bool toggle);
void toggleTiledBackingStore(bool toggle);
void toggleResizesToContents(bool toggle);
void toggleWebGL(bool toggle);
void toggleWebAudio(bool toggle);
- void toggleSpatialNavigation(bool b);
+ void toggleMediaSource(bool toggle);
+ void toggleSpatialNavigation(bool enable);
void toggleFullScreenMode(bool enable);
void toggleFrameFlattening(bool toggle);
void toggleJavaScriptEnabled(bool enable);
@@ -180,7 +154,6 @@ protected Q_SLOTS:
#endif
#ifndef QT_NO_OPENGL
void toggleQGLWidgetViewport(bool enable);
- void toggleQOpenGLWidgetViewport(bool enable);
#endif
void changeViewportUpdateMode(int mode);
@@ -229,7 +202,7 @@ private:
QPropertyAnimation* m_zoomAnimation;
#if !defined(QT_NO_FILEDIALOG) && !defined(QT_NO_MESSAGEBOX)
- QNetworkReply* m_reply;
+ QNetworkReply* m_reply { nullptr };
#endif
QList<QTouchEvent::TouchPoint> m_touchPoints;
QList<HighlightedElement> m_highlightedElements;
@@ -239,8 +212,8 @@ private:
#ifndef QT_NO_LINEEDIT
QToolBar* m_findBar;
QLineEdit* m_lineEdit;
- int m_findFlag;
- static const int s_findNormalFlag = 0;
+ int m_findFlag { 0 };
+ static const int s_findNormalFlag { 0 };
#endif
};
diff --git a/Tools/QtTestBrowser/locationedit.h b/Tools/QtTestBrowser/locationedit.h
index 85a7eb763..5750cba36 100644
--- a/Tools/QtTestBrowser/locationedit.h
+++ b/Tools/QtTestBrowser/locationedit.h
@@ -45,7 +45,7 @@ public:
void setPageIcon(const QIcon&);
public Q_SLOTS:
- void setProgress(int progress);
+ void setProgress(int);
private Q_SLOTS:
void reset();
diff --git a/Tools/QtTestBrowser/mainwindow.h b/Tools/QtTestBrowser/mainwindow.h
index 203695247..70b3e5e1c 100644
--- a/Tools/QtTestBrowser/mainwindow.h
+++ b/Tools/QtTestBrowser/mainwindow.h
@@ -47,17 +47,17 @@ class MainWindow : public QMainWindow {
public:
MainWindow();
- void addCompleterEntry(const QUrl& url);
+ void addCompleterEntry(const QUrl&);
void load(const QString& url);
- void load(const QUrl& url);
+ void load(const QUrl&);
WebPage* page() const;
void setPage(WebPage*);
protected Q_SLOTS:
- void setAddressUrl(const QString& url);
- void setAddressUrl(const QUrl& url);
+ void setAddressUrl(const QString&);
+ void setAddressUrl(const QUrl&);
void openFile();
void openLocation();
void changeLocation();
diff --git a/Tools/QtTestBrowser/qttestbrowser.cpp b/Tools/QtTestBrowser/qttestbrowser.cpp
index 7f96b5a65..05726b822 100644
--- a/Tools/QtTestBrowser/qttestbrowser.cpp
+++ b/Tools/QtTestBrowser/qttestbrowser.cpp
@@ -33,7 +33,6 @@
#include "config.h"
-#include "DumpRenderTreeSupportQt.h"
#include "launcherwindow.h"
#include "urlloader.h"
@@ -53,7 +52,11 @@ int launcherMain(const QApplication& app)
{
#ifndef NDEBUG
int retVal = app.exec();
- DumpRenderTreeSupportQt::garbageCollectorCollect();
+
+#if HAVE(QTTESTSUPPORT)
+ WebKit::QtTestSupport::garbageCollectorCollect();
+#endif
+
QWebSettings::clearMemoryCaches();
return retVal;
#else
@@ -133,9 +136,8 @@ void LauncherApplication::handleUserOptions()
<< "[-no-compositing]"
#if defined(QT_CONFIGURED_WITH_OPENGL)
<< "[-gl-viewport]"
-#endif
- << "[-opengl-viewport]"
<< "[-webgl]"
+#endif
<< QString("[-viewport-update-mode %1]").arg(formatKeys(updateModes)).toLatin1().data()
#if !defined(QT_NO_NETWORKDISKCACHE) && !defined(QT_NO_DESKTOPSERVICES)
<< "[-disk-cache]"
@@ -167,6 +169,7 @@ void LauncherApplication::handleUserOptions()
windowOptions.useGraphicsView = true;
if (args.contains("-no-compositing")) {
+ requiresGraphicsView("-no-compositing");
windowOptions.useCompositing = false;
}
@@ -242,15 +245,11 @@ void LauncherApplication::handleUserOptions()
windowOptions.useQGLWidgetViewport = true;
}
-#endif
if (args.contains("-webgl")) {
+ requiresGraphicsView("-webgl");
windowOptions.useWebGL = true;
}
-
- if (args.contains("-opengl-viewport")) {
- requiresGraphicsView("-opengl-viewport");
- windowOptions.useQOpenGLWidgetViewport = true;
- }
+#endif
#if HAVE(QTTESTSUPPORT)
if (args.contains("-use-test-fonts"))
diff --git a/Tools/QtTestBrowser/urlloader.h b/Tools/QtTestBrowser/urlloader.h
index 84254090f..53179c9e0 100644
--- a/Tools/QtTestBrowser/urlloader.h
+++ b/Tools/QtTestBrowser/urlloader.h
@@ -39,7 +39,7 @@ class UrlLoader : public QObject {
Q_OBJECT
public:
- UrlLoader(QWebFrame* frame, const QString& inputFileName, int timeoutSeconds, int extraTimeSeconds);
+ UrlLoader(QWebFrame*, const QString& inputFileName, int timeoutSeconds, int extraTimeSeconds);
public Q_SLOTS:
void loadNext();
diff --git a/Tools/QtTestBrowser/utils.cpp b/Tools/QtTestBrowser/utils.cpp
index 567c989f7..0eb39fb48 100644
--- a/Tools/QtTestBrowser/utils.cpp
+++ b/Tools/QtTestBrowser/utils.cpp
@@ -47,7 +47,7 @@ QString formatKeys(QList<QString> keys)
return result;
}
-QList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip)
+QList<QString> enumToKeys(const QMetaObject &o, const QString& name, const QString& strip)
{
QList<QString> list;
diff --git a/Tools/QtTestBrowser/utils.h b/Tools/QtTestBrowser/utils.h
index b67351e3d..1f1aa2ebb 100644
--- a/Tools/QtTestBrowser/utils.h
+++ b/Tools/QtTestBrowser/utils.h
@@ -43,7 +43,7 @@
// options handling
QString takeOptionValue(QStringList* arguments, int index);
QString formatKeys(QList<QString> keys);
-QList<QString> enumToKeys(const QMetaObject o, const QString& name, const QString& strip);
+QList<QString> enumToKeys(const QMetaObject&, const QString& name, const QString& strip);
NO_RETURN void appQuit(int status, const QString& msg = QString());
diff --git a/Tools/QtTestBrowser/webpage.cpp b/Tools/QtTestBrowser/webpage.cpp
index a4bc78f8f..1a3ae3c82 100644
--- a/Tools/QtTestBrowser/webpage.cpp
+++ b/Tools/QtTestBrowser/webpage.cpp
@@ -77,13 +77,16 @@ void WebPage::applyProxy()
bool WebPage::supportsExtension(QWebPage::Extension extension) const
{
- if (extension == QWebPage::ErrorPageExtension)
+ if (extension == ChooseMultipleFilesExtension || extension == QWebPage::ErrorPageExtension)
return true;
return false;
}
bool WebPage::extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output)
{
+ if (extension == ChooseMultipleFilesExtension)
+ return QWebPage::extension(extension, option, output);
+
const QWebPage::ErrorPageExtensionOption* info = static_cast<const QWebPage::ErrorPageExtensionOption*>(option);
QWebPage::ErrorPageExtensionReturn* errorPage = static_cast<QWebPage::ErrorPageExtensionReturn*>(output);
@@ -141,6 +144,11 @@ bool WebPage::shouldInterruptJavaScript()
return QWebPage::shouldInterruptJavaScript();
}
+void WebPage::javaScriptConsoleMessage(const QString& message, int lineNumber, const QString& sourceID)
+{
+ qDebug() << "CONSOLE" << QString("%1:%2").arg(sourceID, lineNumber) << message;
+}
+
void WebPage::authenticationRequired(QNetworkReply* reply, QAuthenticator* authenticator)
{
QDialog* dialog = new QDialog(QApplication::activeWindow());
diff --git a/Tools/QtTestBrowser/webpage.h b/Tools/QtTestBrowser/webpage.h
index 0965b56c9..959318018 100644
--- a/Tools/QtTestBrowser/webpage.h
+++ b/Tools/QtTestBrowser/webpage.h
@@ -44,22 +44,24 @@ public:
virtual QWebPage* createWindow(QWebPage::WebWindowType);
virtual QObject* createPlugin(const QString&, const QUrl&, const QStringList&, const QStringList&);
- virtual bool supportsExtension(QWebPage::Extension extension) const;
- virtual bool extension(Extension extension, const ExtensionOption* option, ExtensionReturn* output);
+ virtual bool supportsExtension(QWebPage::Extension) const;
+ virtual bool extension(Extension, const ExtensionOption*, ExtensionReturn*);
- virtual bool acceptNavigationRequest(QWebFrame* frame, const QNetworkRequest& request, NavigationType type);
+ virtual bool acceptNavigationRequest(QWebFrame*, const QNetworkRequest&, NavigationType);
- QString userAgentForUrl(const QUrl& url) const;
+ QString userAgentForUrl(const QUrl&) const;
void setInterruptingJavaScriptEnabled(bool enabled) { m_interruptingJavaScriptEnabled = enabled; }
virtual bool shouldInterruptJavaScript();
+ void javaScriptConsoleMessage(const QString &message, int lineNumber, const QString &sourceID) override;
+
public Q_SLOTS:
- void openUrlInDefaultBrowser(const QUrl& url = QUrl());
+ void openUrlInDefaultBrowser(const QUrl& = QUrl());
void setUserAgent(const QString& ua) { m_userAgent = ua; }
void authenticationRequired(QNetworkReply*, QAuthenticator*);
- void requestPermission(QWebFrame* frame, QWebPage::Feature feature);
- void featurePermissionRequestCanceled(QWebFrame* frame, QWebPage::Feature feature);
+ void requestPermission(QWebFrame*, QWebPage::Feature);
+ void featurePermissionRequestCanceled(QWebFrame*, QWebPage::Feature);
private:
void applyProxy();
diff --git a/Tools/QtTestBrowser/webview.h b/Tools/QtTestBrowser/webview.h
index 56a61688a..a45a972b7 100644
--- a/Tools/QtTestBrowser/webview.h
+++ b/Tools/QtTestBrowser/webview.h
@@ -75,18 +75,18 @@ class WebViewGraphicsBased : public QGraphicsView {
public:
WebViewGraphicsBased(QWidget* parent);
- void setPage(QWebPage* page);
+ void setPage(QWebPage*);
void setItemCacheMode(QGraphicsItem::CacheMode mode) { graphicsWebView()->setCacheMode(mode); }
QGraphicsItem::CacheMode itemCacheMode() { return graphicsWebView()->cacheMode(); }
- void setFrameRateMeasurementEnabled(bool enabled);
+ void setFrameRateMeasurementEnabled(bool);
bool frameRateMeasurementEnabled() const { return m_measureFps; }
virtual void resizeEvent(QResizeEvent*);
- virtual void paintEvent(QPaintEvent* event);
+ virtual void paintEvent(QPaintEvent*);
- void setResizesToContents(bool b);
+ void setResizesToContents(bool);
bool resizesToContents() const { return m_resizesToContents; }
void setYRotation(qreal angle);
diff --git a/Tools/QueueStatusServer/__init__.py b/Tools/QueueStatusServer/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/QueueStatusServer/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/QueueStatusServer/app.yaml b/Tools/QueueStatusServer/app.yaml
deleted file mode 100644
index 1477a3adf..000000000
--- a/Tools/QueueStatusServer/app.yaml
+++ /dev/null
@@ -1,15 +0,0 @@
-application: webkit-queues
-version: 108593 # Bugzilla bug ID of last major change
-runtime: python
-api_version: 1
-
-builtins:
-- datastore_admin: on
-- remote_api: on
-
-handlers:
-- url: /stylesheets
- static_dir: stylesheets
-
-- url: /.*
- script: main.py
diff --git a/Tools/QueueStatusServer/config/__init__.py b/Tools/QueueStatusServer/config/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/QueueStatusServer/config/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/QueueStatusServer/config/charts.py b/Tools/QueueStatusServer/config/charts.py
deleted file mode 100644
index 3e38a852e..000000000
--- a/Tools/QueueStatusServer/config/charts.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2013 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.
-
-patch_log_limit = 500
-
-# All units are represented numerically as seconds.
-one_minute = 60.0
-one_hour = one_minute * 60.0
-one_day = one_hour * 24.0
-one_month = one_day * 30.0
-
-# How far back to view the history, specified in seconds.
-view_range_choices = [
- {"name": "1 day", "view_range": one_day},
- {"name": "1 week", "view_range": one_day * 7},
- {"name": "1 month", "view_range": one_month},
-]
-
-default_view_range = one_day
-
-_time_units = [
- #(threshold, time unit, name)
- (0, one_hour, "hours"),
- (4 * one_day, one_day, "days"),
- (3 * one_month, one_month, "months"),
-]
-
-
-def get_time_unit(view_range):
- current_threshold, current_time_unit, current_name = _time_units[0]
- for threshold, time_unit, name in _time_units[1:]:
- if view_range >= threshold:
- current_time_unit, current_name = time_unit, name
- else:
- break
- return current_time_unit, current_name
diff --git a/Tools/QueueStatusServer/config/logging.py b/Tools/QueueStatusServer/config/logging.py
deleted file mode 100644
index b18b0712f..000000000
--- a/Tools/QueueStatusServer/config/logging.py
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright (C) 2013 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.
-
-# Specified in seconds
-queue_log_duration = 60 * 60
diff --git a/Tools/QueueStatusServer/config/messages.py b/Tools/QueueStatusServer/config/messages.py
deleted file mode 100644
index 96547ab43..000000000
--- a/Tools/QueueStatusServer/config/messages.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (C) 2013 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.
-
-# These must be in sync with webkit-patch's AbstractQueue.
-pass_status = "Pass"
-fail_status = "Fail"
-retry_status = "Retry"
-error_status = "Error"
diff --git a/Tools/QueueStatusServer/config/queues.py b/Tools/QueueStatusServer/config/queues.py
deleted file mode 100644
index 2266eb3cc..000000000
--- a/Tools/QueueStatusServer/config/queues.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2013 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.
-
-# Eventually the list of queues may be stored in the data store.
-all_queue_names = [
- "commit-queue",
- "style-queue",
- "qt-ews",
- "qt-wk2-ews",
- "gtk-ews",
- "gtk-wk2-ews",
- "mac-ews",
- "mac-wk2-ews",
- "win-ews",
- "efl-ews",
- "efl-wk2-ews",
-]
diff --git a/Tools/QueueStatusServer/cron.yaml b/Tools/QueueStatusServer/cron.yaml
deleted file mode 100644
index d1b0d59c3..000000000
--- a/Tools/QueueStatusServer/cron.yaml
+++ /dev/null
@@ -1,8 +0,0 @@
-cron:
-- description: collect the garbage
- url: /gc
- schedule: every 4 hours
-
-- description: Sync new queue logs up with unchanging data
- url: /sync-queue-logs
- schedule: every 10 minutes
diff --git a/Tools/QueueStatusServer/filters/__init__.py b/Tools/QueueStatusServer/filters/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/QueueStatusServer/filters/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/QueueStatusServer/filters/webkit_extras.py b/Tools/QueueStatusServer/filters/webkit_extras.py
deleted file mode 100644
index 5b3c9b1de..000000000
--- a/Tools/QueueStatusServer/filters/webkit_extras.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2009 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.
-
-import re
-
-from django.template.defaultfilters import stringfilter
-from google.appengine.ext import webapp
-
-register = webapp.template.create_template_register()
-
-bug_regexp = re.compile(r"bug (?P<bug_id>\d+)")
-patch_regexp = re.compile(r"patch (?P<patch_id>\d+)")
-
-
-@register.filter
-@stringfilter
-def webkit_linkify(value):
- value = bug_regexp.sub(r'<a href="http://webkit.org/b/\g<bug_id>">bug \g<bug_id></a>', value)
- value = patch_regexp.sub(r'<a href="https://bugs.webkit.org/attachment.cgi?id=\g<patch_id>&action=prettypatch">patch \g<patch_id></a>', value)
- return value
-
-
-@register.filter
-@stringfilter
-def webkit_bug_id(value):
- return '<a href="http://webkit.org/b/%s">%s</a>' % (value, value)
-
-
-@register.filter
-@stringfilter
-def webkit_attachment_id(value):
- return '<a href="https://bugs.webkit.org/attachment.cgi?id=%s&action=prettypatch">%s</a>' % (value, value)
-
-
-@register.filter
-@stringfilter
-def results_link(status_id):
- return '<a href="/results/%s">results</a>' % status_id
-
-
-@register.filter
-@stringfilter
-def queue_status_link(queue_name, text):
- return '<a href="/queue-status/%s">%s</a>' % (queue_name, text)
-
-
-@register.filter
-@stringfilter
-def queue_charts_link(queue_name, text):
- return '<a href="/queue-charts/%s">%s</a>' % (queue_name, text)
diff --git a/Tools/QueueStatusServer/handlers/__init__.py b/Tools/QueueStatusServer/handlers/__init__.py
deleted file mode 100644
index 296e17369..000000000
--- a/Tools/QueueStatusServer/handlers/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Required for Python to search this directory for module files
-
-from handlers.updatebase import UpdateBase
diff --git a/Tools/QueueStatusServer/handlers/activebots.py b/Tools/QueueStatusServer/handlers/activebots.py
deleted file mode 100644
index 3d0b5cfc0..000000000
--- a/Tools/QueueStatusServer/handlers/activebots.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 2010 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.
-
-import datetime
-import itertools
-import operator
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.queues import Queue
-from model import queuestatus
-
-
-class ActiveBots(webapp.RequestHandler):
- def get(self):
- # 2000 is the GAE record fetch limit.
- recent_statuses = queuestatus.QueueStatus.all().order("-date").fetch(500)
- queue_name_to_last_status = {}
- for status in recent_statuses:
- last_status = queue_name_to_last_status.get(status.bot_id)
- if not last_status or status.date > last_status.date:
- queue_name_to_last_status[status.bot_id] = status
-
- sorted_by_bot_id = sorted(queue_name_to_last_status.values(), key=operator.attrgetter('bot_id'))
- # Sorted is stable, so this will be sorted by bot_id, groupped by sorted queue_name.
- sorted_by_queue_name = sorted(sorted_by_bot_id, key=operator.attrgetter('queue_name'))
- template_values = {
- "last_statuses": sorted_by_queue_name,
- }
- self.response.out.write(template.render("templates/activebots.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/dashboard.py b/Tools/QueueStatusServer/handlers/dashboard.py
deleted file mode 100644
index 660c59593..000000000
--- a/Tools/QueueStatusServer/handlers/dashboard.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2009 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.
-
-import operator
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.attachment import Attachment
-from model.queues import Queue
-
-
-class Dashboard(webapp.RequestHandler):
- # We may want to sort these?
- _ordered_queues = Queue.all()
- _header_names = [queue.short_name() for queue in _ordered_queues]
-
- def _build_bubble(self, attachment, queue):
- queue_status = attachment.status_for_queue(queue)
- bubble = {
- "status_class": attachment.state_from_queue_status(queue_status) if queue_status else "none",
- "status_date": queue_status.date if queue_status else None,
- }
- return bubble
-
- def _build_row(self, attachment):
- row = {
- "bug_id": attachment.bug_id(),
- "attachment_id": attachment.id,
- "bubbles": [self._build_bubble(attachment, queue) for queue in self._ordered_queues],
- }
- return row
-
- def get(self):
- template_values = {
- "headers": self._header_names,
- "rows": [self._build_row(attachment) for attachment in Attachment.recent(limit=25)],
- }
- self.response.out.write(template.render("templates/dashboard.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/gc.py b/Tools/QueueStatusServer/handlers/gc.py
deleted file mode 100644
index d04ee4da2..000000000
--- a/Tools/QueueStatusServer/handlers/gc.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2009 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.
-
-from google.appengine.ext import webapp
-
-from model.queuestatus import QueueStatus
-
-
-class GC(webapp.RequestHandler):
- def get(self):
- statuses = QueueStatus.all().order("-date")
- seen_queues = set()
- for status in statuses:
- if status.active_patch_id or status.active_bug_id:
- continue
- if status.queue_name in seen_queues:
- status.delete()
- seen_queues.add(status.queue_name)
- self.response.out.write("Done!")
diff --git a/Tools/QueueStatusServer/handlers/nextpatch.py b/Tools/QueueStatusServer/handlers/nextpatch.py
deleted file mode 100644
index e5ba655dc..000000000
--- a/Tools/QueueStatusServer/handlers/nextpatch.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2013 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.
-
-from datetime import datetime
-
-from google.appengine.ext import db
-from google.appengine.ext import webapp
-
-from loggers.recordpatchevent import RecordPatchEvent
-from model.queues import Queue
-
-
-class NextPatch(webapp.RequestHandler):
- # FIXME: This should probably be a post, or an explict lock_patch
- # since GET requests shouldn't really modify the datastore.
- def get(self, queue_name):
- queue = Queue.queue_with_name(queue_name)
- if not queue:
- self.error(404)
- return
- # FIXME: Patch assignment should probably move into Queue.
- patch_id = db.run_in_transaction(self._assign_patch, queue.active_work_items().key(), queue.work_items().item_ids)
- if not patch_id:
- self.error(404)
- return
- RecordPatchEvent.started(patch_id, queue_name)
- self.response.out.write(patch_id)
-
- @staticmethod
- def _assign_patch(key, work_item_ids):
- now = datetime.utcnow()
- active_work_items = db.get(key)
- active_work_items.deactivate_expired(now)
- next_item = active_work_items.next_item(work_item_ids, now)
- active_work_items.put()
- return next_item
diff --git a/Tools/QueueStatusServer/handlers/patch.py b/Tools/QueueStatusServer/handlers/patch.py
deleted file mode 100644
index 3219212af..000000000
--- a/Tools/QueueStatusServer/handlers/patch.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (C) 2009 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.
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.queuestatus import QueueStatus
-
-
-class Patch(webapp.RequestHandler):
- def get(self, attachment_id_string):
- attachment_id = int(attachment_id_string)
- statuses = QueueStatus.all().filter("active_patch_id =", attachment_id).order("-date")
-
- bug_id = None
- queue_status = {}
- for status in statuses:
- bug_id = status.active_bug_id # Should be the same for every status.
- per_queue_statuses = queue_status.get(status.queue_name, [])
- per_queue_statuses.append(status)
- queue_status[status.queue_name] = per_queue_statuses
-
- template_values = {
- "attachment_id" : attachment_id,
- "bug_id" : bug_id,
- "queue_status" : queue_status,
- }
- self.response.out.write(template.render("templates/patch.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/patchstatus.py b/Tools/QueueStatusServer/handlers/patchstatus.py
deleted file mode 100644
index 1a5422e35..000000000
--- a/Tools/QueueStatusServer/handlers/patchstatus.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2009 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.
-
-from google.appengine.ext import webapp
-
-from model.queuestatus import QueueStatus
-
-
-class PatchStatus(webapp.RequestHandler):
- def get(self, queue_name, attachment_id):
- statuses = QueueStatus.all().filter('queue_name =', queue_name).filter('active_patch_id =', int(attachment_id)).order('-date').fetch(1)
- if not statuses:
- self.error(404)
- return
- self.response.out.write(statuses[0].message)
diff --git a/Tools/QueueStatusServer/handlers/queuecharts.py b/Tools/QueueStatusServer/handlers/queuecharts.py
deleted file mode 100644
index 661102781..000000000
--- a/Tools/QueueStatusServer/handlers/queuecharts.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright (C) 2013 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.
-
-import calendar
-from datetime import datetime
-import itertools
-from time import time
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from config import logging, charts
-from model.patchlog import PatchLog
-from model.queues import Queue
-from model.queuelog import QueueLog
-
-
-class QueueCharts(webapp.RequestHandler):
- def get(self, queue_name):
- queue_name = queue_name.lower()
- if not Queue.queue_with_name(queue_name):
- self.error(404)
- return
-
- timestamp = self._get_timestamp()
- view_range = self._get_view_range()
- time_unit, time_unit_name = charts.get_time_unit(view_range)
-
- all_queue_names = map(Queue.name, Queue.all())
-
- template_values = {
- "all_queue_names": all_queue_names,
- "patch_data": self._get_patch_data(queue_name, timestamp, view_range),
- "queue_data": self._get_queue_data(queue_name, timestamp, view_range),
- "queue_name": queue_name,
- "seconds_ago_min": 0,
- "seconds_ago_max": view_range,
- "time_unit_name": time_unit_name,
- "time_unit": time_unit,
- "timestamp": timestamp,
- "view_range": view_range,
- "view_range_choices": charts.view_range_choices,
- }
- self.response.out.write(template.render("templates/queuecharts.html", template_values))
-
- @classmethod
- def _get_min_med_max(cls, values, defaults=(0, 0, 0)):
- if not values:
- return defaults
- length = len(values)
- sorted_values = sorted(values)
- return sorted_values[0], sorted_values[length / 2], sorted_values[length - 1]
-
- def _get_patch_data(self, queue_name, timestamp, view_range):
- patch_logs = self._get_patch_logs(queue_name, timestamp, view_range)
- patch_data = []
- for patch_log in patch_logs:
- if patch_log.process_duration and patch_log.wait_duration:
- patch_log_timestamp = calendar.timegm(patch_log.date.utctimetuple())
- patch_data.append({
- "attachment_id": patch_log.attachment_id,
- "seconds_ago": timestamp - patch_log_timestamp,
- "process_duration": patch_log.process_duration / charts.one_minute,
- "retry_count": patch_log.retry_count,
- "status_update_count": patch_log.status_update_count,
- "wait_duration": patch_log.wait_duration / charts.one_minute,
- })
- return patch_data
-
- def _get_patch_logs(self, queue_name, timestamp, view_range):
- patch_log_query = PatchLog.all()
- patch_log_query = patch_log_query.filter("queue_name =", queue_name)
- patch_log_query = patch_log_query.filter("date >=", datetime.utcfromtimestamp(timestamp - view_range))
- patch_log_query = patch_log_query.filter("date <=", datetime.utcfromtimestamp(timestamp))
- patch_log_query = patch_log_query.order("date")
- return patch_log_query.run(limit=charts.patch_log_limit)
-
- def _get_queue_data(self, queue_name, timestamp, view_range):
- queue_logs = self._get_queue_logs(queue_name, timestamp, view_range)
- queue_data = []
- for queue_log in queue_logs:
- queue_log_timestamp = calendar.timegm(queue_log.date.utctimetuple())
- p_min, p_med, p_max = self._get_min_med_max(queue_log.patch_process_durations)
- w_min, w_med, w_max = self._get_min_med_max(queue_log.patch_wait_durations)
- queue_data.append({
- "bots_seen": len(queue_log.bot_ids_seen),
- "seconds_ago": timestamp - queue_log_timestamp,
- "patch_processing_min": p_min,
- "patch_processing_med": p_med,
- "patch_processing_max": p_max,
- "patch_retry_count": queue_log.patch_retry_count,
- "patch_waiting_min": w_min,
- "patch_waiting_med": w_med,
- "patch_waiting_max": w_max,
- "patches_completed": len(queue_log.patch_process_durations),
- "patches_waiting": queue_log.max_patches_waiting,
- "status_update_count": queue_log.status_update_count,
- })
- return queue_data
-
- def _get_queue_logs(self, queue_name, timestamp, view_range):
- queue_logs = []
- current_timestamp = timestamp - view_range
- while current_timestamp <= timestamp:
- queue_logs.append(QueueLog.get_at(queue_name, logging.queue_log_duration, current_timestamp))
- current_timestamp += logging.queue_log_duration
- return queue_logs
-
- @classmethod
- def _get_time_unit(cls, view_range):
- if view_range > charts.one_day * 2:
- return
-
- def _get_timestamp(self):
- timestamp = self.request.get("timestamp")
- try:
- return int(timestamp)
- except ValueError:
- return int(time())
-
- def _get_view_range(self):
- view_range = self.request.get("view_range")
- try:
- return int(view_range)
- except ValueError:
- return charts.default_view_range
diff --git a/Tools/QueueStatusServer/handlers/queuestatus.py b/Tools/QueueStatusServer/handlers/queuestatus.py
deleted file mode 100644
index 4f4e2d28b..000000000
--- a/Tools/QueueStatusServer/handlers/queuestatus.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (C) 2010 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.
-
-import datetime
-import itertools
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.queues import Queue
-from model import queuestatus
-
-
-class QueueStatus(webapp.RequestHandler):
- def _rows_for_work_items(self, queue):
- queued_items = queue.work_items()
- active_items = queue.active_work_items()
- if not queued_items:
- return []
- rows = []
- for item_id in queued_items.item_ids:
- rows.append({
- "attachment_id": item_id,
- "bug_id": 1,
- "lock_time": active_items and active_items.time_for_item(item_id),
- })
- return rows
-
- def _grouping_key_for_status(self, status):
- return "%s-%s" % (status.active_patch_id, status.bot_id)
-
- def _build_status_groups(self, statuses):
- return [list(group) for key, group in itertools.groupby(statuses, self._grouping_key_for_status)]
-
- def _fetch_statuses(self, queue, bot_id):
- statuses = queuestatus.QueueStatus.all()
- statuses.filter("queue_name =", queue.name())
- if bot_id:
- statuses.filter("bot_id =", bot_id)
- return statuses.order("-date").fetch(15)
-
- def _fetch_last_message_matching(self, queue, bot_id, message):
- statuses = queuestatus.QueueStatus.all()
- statuses.filter("queue_name =", queue.name())
- if bot_id:
- statuses.filter("bot_id =", bot_id)
- statuses.filter("message =", message)
- return statuses.order("-date").get()
-
- def _fetch_trailing_days_pass_count(self, queue, bot_id, days):
- statuses = queuestatus.QueueStatus.all()
- statuses.filter("queue_name =", queue.name())
- days_ago = datetime.datetime.now() - datetime.timedelta(days=days)
- statuses.filter("date >", days_ago)
- if bot_id:
- statuses.filter("bot_id =", bot_id)
- statuses.filter("message =", "Pass")
- return statuses.count()
-
- def _fetch_trailing_days_pass_count_string(self, queue, bot_id, days):
- status_count = self._fetch_trailing_days_pass_count(queue, bot_id, days)
- # GQL has a result limit of 1000, so we return a special string to indicate we hit that limit.
- if status_count == 1000:
- status_count = "1000+"
- return str(status_count)
-
- def _page_title(self, queue, bot_id):
- title = "%s Messages" % queue.display_name()
- if bot_id:
- title += " from \"%s\"" % (bot_id)
- return title
-
- def get(self, queue_name, bot_id=None):
- queue_name = queue_name.lower()
- queue = Queue.queue_with_name(queue_name)
- if not queue:
- self.error(404)
- return
-
- statuses = self._fetch_statuses(queue, bot_id)
- template_values = {
- "queue_name": queue_name,
- "page_title": self._page_title(queue, bot_id),
- "work_item_rows": self._rows_for_work_items(queue),
- "status_groups": self._build_status_groups(statuses),
- "bot_id": bot_id,
- "last_pass": self._fetch_last_message_matching(queue, bot_id, "Pass"),
- "last_boot": self._fetch_last_message_matching(queue, bot_id, "Starting Queue"),
- "trailing_month_pass_count": self._fetch_trailing_days_pass_count_string(queue, bot_id, 30),
- "trailing_week_pass_count": self._fetch_trailing_days_pass_count_string(queue, bot_id, 7),
- }
- self.response.out.write(template.render("templates/queuestatus.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/queuestatus_unittest.py b/Tools/QueueStatusServer/handlers/queuestatus_unittest.py
deleted file mode 100644
index a5ae8449b..000000000
--- a/Tools/QueueStatusServer/handlers/queuestatus_unittest.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-
-from handlers.queuestatus import QueueStatus
-from model.queues import Queue
-
-
-class MockStatus(object):
- def __init__(self, patch_id, bot_id):
- self.active_patch_id = patch_id
- self.bot_id = bot_id
-
-
-class QueueStatusTest(unittest.TestCase):
- def test_build_status_groups(self):
- queue_status = QueueStatus()
- statuses = [
- MockStatus(1, "foo"),
- MockStatus(1, "foo"),
- MockStatus(2, "foo"),
- MockStatus(1, "foo"),
- MockStatus(1, "bar"),
- MockStatus(1, "foo"),
- ]
- groups = queue_status._build_status_groups(statuses)
- self.assertEqual(len(groups), 5)
- self.assertEqual(groups[0], statuses[0:2])
- self.assertEqual(groups[1], statuses[2:3])
- self.assertEqual(groups[2], statuses[3:4])
- self.assertEqual(groups[3], statuses[4:5])
- self.assertEqual(groups[4], statuses[5:6])
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/QueueStatusServer/handlers/recentstatus.py b/Tools/QueueStatusServer/handlers/recentstatus.py
deleted file mode 100644
index fddc93a15..000000000
--- a/Tools/QueueStatusServer/handlers/recentstatus.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (C) 2009 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.
-
-import datetime
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.queues import Queue
-from model.queuestatus import QueueStatus
-from model.workitems import WorkItems
-
-
-class QueueBubble(object):
- """View support class for recentstatus.html"""
- def __init__(self, queue):
- self._queue = queue
- self._work_items = queue.work_items()
- self._last_status = QueueStatus.all().filter("queue_name =", queue.name()).order("-date").get()
-
- # FIXME: name and display_name should be replaced by a .queue() accessor.
- def name(self):
- return self._queue.name()
-
- def display_name(self):
- return self._queue.display_name()
-
- def _last_status_date(self):
- if not self._last_status:
- return None
- return self._last_status.date
-
- def last_heard_from(self):
- if not self._work_items:
- return self._last_status_date()
- return max(self._last_status_date(), self._work_items.date)
-
- def is_alive(self):
- if not self.last_heard_from():
- return False
- return self.last_heard_from() > (datetime.datetime.now() - datetime.timedelta(minutes=30))
-
- def status_class(self):
- if not self.is_alive():
- return "dead"
- if self.pending_items_count() > 1:
- return "behind"
- return "alive"
-
- def status_text(self):
- if not self._work_items:
- return "Offline"
- if not self._work_items.item_ids:
- return "Idle"
- return self._last_status.message
-
- def pending_items_count(self):
- if not self._work_items:
- return 0
- return len(self._work_items.item_ids)
-
-
-class QueuesOverview(webapp.RequestHandler):
-
- def get(self):
- template_values = {
- "queues": [QueueBubble(queue) for queue in Queue.all()],
- }
- self.response.out.write(template.render("templates/recentstatus.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/releasepatch.py b/Tools/QueueStatusServer/handlers/releasepatch.py
deleted file mode 100644
index 88f46b0b4..000000000
--- a/Tools/QueueStatusServer/handlers/releasepatch.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (C) 2013 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.
-
-from google.appengine.ext import webapp, db
-from google.appengine.ext.webapp import template
-
-from handlers.updatebase import UpdateBase
-from loggers.recordpatchevent import RecordPatchEvent
-from model.attachment import Attachment
-from model.queues import Queue
-
-
-class ReleasePatch(UpdateBase):
- def get(self):
- self.response.out.write(template.render("templates/releasepatch.html", None))
-
- def post(self):
- queue_name = self.request.get("queue_name")
- # FIXME: This queue lookup should be shared between handlers.
- queue = Queue.queue_with_name(queue_name)
- if not queue:
- self.error(404)
- return
-
- attachment_id = self._int_from_request("attachment_id")
- attachment = Attachment(attachment_id)
- last_status = attachment.status_for_queue(queue)
-
- # Ideally we should use a transaction for the calls to
- # WorkItems and ActiveWorkItems.
-
- # Only remove it from the queue if the last message is not a retry request.
- # Allow removing it from the queue even if there is no last_status for easier testing.
- if not last_status or not last_status.is_retry_request():
- queue.work_items().remove_work_item(attachment_id)
- RecordPatchEvent.stopped(attachment_id, queue_name)
- else:
- RecordPatchEvent.retrying(attachment_id, queue_name)
-
- # Always release the lock on the item.
- queue.active_work_items().expire_item(attachment_id)
diff --git a/Tools/QueueStatusServer/handlers/showresults.py b/Tools/QueueStatusServer/handlers/showresults.py
deleted file mode 100644
index e4cb71bd1..000000000
--- a/Tools/QueueStatusServer/handlers/showresults.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2009 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.
-
-from google.appengine.ext import webapp
-
-from model.queuestatus import QueueStatus
-
-
-class ShowResults(webapp.RequestHandler):
- def get(self, status_id):
- status = QueueStatus.get_by_id(int(status_id))
- if not status:
- self.error(404)
- return
- self.response.headers["Content-Type"] = "text/plain; charset=utf-8"
- self.response.out.write(status.results_file)
diff --git a/Tools/QueueStatusServer/handlers/statusbubble.py b/Tools/QueueStatusServer/handlers/statusbubble.py
deleted file mode 100644
index c6ba91689..000000000
--- a/Tools/QueueStatusServer/handlers/statusbubble.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) 2009 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.
-
-import operator
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-from model.attachment import Attachment
-from model.workitems import WorkItems
-from model.queues import Queue
-
-
-class StatusBubble(webapp.RequestHandler):
- def _build_bubble(self, queue, attachment, queue_position):
- queue_status = attachment.status_for_queue(queue)
- bubble = {
- "name": queue.short_name().lower(),
- "attachment_id": attachment.id,
- "queue_position": queue_position,
- "state": attachment.state_from_queue_status(queue_status) if queue_status else "none",
- "status": queue_status,
- }
- return bubble
-
- def _have_status_for(self, attachment, queue):
- # Any pending queue is shown.
- if attachment.position_in_queue(queue):
- return True
- # Complete ewses are also shown.
- return bool(queue.is_ews() and attachment.status_for_queue(queue))
-
- def _build_bubbles_for_attachment(self, attachment):
- show_submit_to_ews = True
- bubbles = []
- for queue in Queue.all():
- if not self._have_status_for(attachment, queue):
- continue
- queue_position = attachment.position_in_queue(queue)
- if queue_position and queue_position >= 100:
- # This queue is so far behind it's not even worth showing.
- continue
- bubbles.append(self._build_bubble(queue, attachment, queue_position))
- # If even one ews has status, we don't show the submit-to-ews button.
- if queue.is_ews():
- show_submit_to_ews = False
-
- return (bubbles, show_submit_to_ews)
-
- def get(self, attachment_id_string):
- attachment_id = int(attachment_id_string)
- attachment = Attachment(attachment_id)
- bubbles, show_submit_to_ews = self._build_bubbles_for_attachment(attachment)
-
- template_values = {
- "bubbles": bubbles,
- "attachment_id": attachment_id,
- "show_submit_to_ews": show_submit_to_ews,
- }
- self.response.out.write(template.render("templates/statusbubble.html", template_values))
diff --git a/Tools/QueueStatusServer/handlers/statusbubble_unittest.py b/Tools/QueueStatusServer/handlers/statusbubble_unittest.py
deleted file mode 100644
index 0823207d0..000000000
--- a/Tools/QueueStatusServer/handlers/statusbubble_unittest.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-
-
-from handlers.statusbubble import StatusBubble
-from model.queues import Queue
-
-
-class MockAttachment(object):
- def __init__(self):
- self.id = 1
-
- def status_for_queue(self, queue):
- return None
-
- def position_in_queue(self, queue):
- return 1
-
-
-class StatusBubbleTest(unittest.TestCase):
- def test_build_bubble(self):
- bubble = StatusBubble()
- queue = Queue("mac-ews")
- attachment = MockAttachment()
- bubble_dict = bubble._build_bubble(queue, attachment, 1)
- # FIXME: assertDictEqual (in Python 2.7) would be better to use here.
- self.assertEqual(bubble_dict["name"], "mac")
- self.assertEqual(bubble_dict["attachment_id"], 1)
- self.assertEqual(bubble_dict["queue_position"], 1)
- self.assertEqual(bubble_dict["state"], "none")
- self.assertEqual(bubble_dict["status"], None)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/QueueStatusServer/handlers/submittoews.py b/Tools/QueueStatusServer/handlers/submittoews.py
deleted file mode 100644
index f7669d233..000000000
--- a/Tools/QueueStatusServer/handlers/submittoews.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.ext import webapp, db
-from google.appengine.ext.webapp import template
-
-from handlers.updatebase import UpdateBase
-from loggers.recordpatchevent import RecordPatchEvent
-from model.attachment import Attachment
-from model.queues import Queue
-
-
-class SubmitToEWS(UpdateBase):
- def get(self):
- self.response.out.write(template.render("templates/submittoews.html", None))
-
- def _should_add_to_ews_queue(self, queue, attachment):
- # This assert() is here to make sure we're not submitting to the commit-queue.
- # The commit-queue clients check each patch anyway, but there is not sense
- # in adding things to the commit-queue when they won't be processed by it.
- assert(queue.is_ews())
- latest_status = attachment.status_for_queue(queue)
- if not latest_status:
- return True
- # Only ever re-submit to the EWS if the EWS specifically requested a retry.
- # This allows us to restart the EWS feeder queue, without all r? patches
- # being retried as a result of that restart!
- # In some future version we might add a "force" button to allow the user
- # to override this restriction.
- return latest_status.is_retry_request()
-
- def _add_attachment_to_ews_queues(self, attachment):
- for queue in Queue.all_ews(): # all_ews() currently includes the style-queue
- if self._should_add_to_ews_queue(queue, attachment):
- queue.work_items().add_work_item(attachment.id)
- RecordPatchEvent.added(attachment.id, queue.name())
-
- def post(self):
- attachment_id = self._int_from_request("attachment_id")
- attachment = Attachment(attachment_id)
- self._add_attachment_to_ews_queues(attachment)
- if self.request.get("next_action") == "return_to_bubbles":
- self.redirect("/status-bubble/%s" % attachment_id)
diff --git a/Tools/QueueStatusServer/handlers/svnrevision.py b/Tools/QueueStatusServer/handlers/svnrevision.py
deleted file mode 100644
index 36eab3379..000000000
--- a/Tools/QueueStatusServer/handlers/svnrevision.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2009 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.
-
-from google.appengine.ext import webapp
-
-import model
-
-
-class SVNRevision(webapp.RequestHandler):
- def get(self, svn_revision_number):
- svn_revisions = model.SVNRevision.all().filter('number =', int(svn_revision_number)).order('-date').fetch(1)
- if not svn_revisions:
- self.error(404)
- return
- self.response.out.write(svn_revisions[0].to_xml())
diff --git a/Tools/QueueStatusServer/handlers/syncqueuelogs.py b/Tools/QueueStatusServer/handlers/syncqueuelogs.py
deleted file mode 100644
index e2a55f933..000000000
--- a/Tools/QueueStatusServer/handlers/syncqueuelogs.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2013 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.
-
-from google.appengine.ext import webapp
-
-from config.queues import all_queue_names
-from config.logging import queue_log_duration
-from model.queuelog import QueueLog
-
-
-class SyncQueueLogs(webapp.RequestHandler):
- def get(self):
- for queue_name in all_queue_names:
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- if queue_log.update_max_patches_waiting():
- queue_log.put()
- self.response.out.write("Done!")
diff --git a/Tools/QueueStatusServer/handlers/updatebase.py b/Tools/QueueStatusServer/handlers/updatebase.py
deleted file mode 100644
index b087e8306..000000000
--- a/Tools/QueueStatusServer/handlers/updatebase.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.api import users
-from google.appengine.ext import webapp, db
-
-
-class UpdateBase(webapp.RequestHandler):
- def _int_from_request(self, name):
- string_value = self.request.get(name)
- try:
- int_value = int(string_value)
- return int_value
- except ValueError, TypeError:
- pass
- return None
diff --git a/Tools/QueueStatusServer/handlers/updatestatus.py b/Tools/QueueStatusServer/handlers/updatestatus.py
deleted file mode 100644
index b02e9876a..000000000
--- a/Tools/QueueStatusServer/handlers/updatestatus.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2013 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.
-
-from google.appengine.api import users
-from google.appengine.ext import webapp, db
-from google.appengine.ext.webapp import template
-
-from handlers.updatebase import UpdateBase
-from loggers.recordbotevent import RecordBotEvent
-from loggers.recordpatchevent import RecordPatchEvent
-from model.attachment import Attachment
-from model.queuestatus import QueueStatus
-
-
-class UpdateStatus(UpdateBase):
- def get(self):
- self.response.out.write(template.render("templates/updatestatus.html", None))
-
- def _queue_status_from_request(self):
- queue_status = QueueStatus()
-
- # FIXME: I think this can be removed, no one uses it.
- if users.get_current_user():
- queue_status.author = users.get_current_user()
-
- bug_id = self._int_from_request("bug_id")
- patch_id = self._int_from_request("patch_id")
- queue_name = self.request.get("queue_name")
- bot_id = self.request.get("bot_id")
- queue_status.queue_name = queue_name
- queue_status.bot_id = bot_id
- queue_status.active_bug_id = bug_id
- queue_status.active_patch_id = patch_id
- queue_status.message = self.request.get("status")
- results_file = self.request.get("results_file")
- queue_status.results_file = db.Blob(str(results_file))
- return queue_status
-
- def post(self):
- queue_status = self._queue_status_from_request()
- queue_status.put()
- RecordBotEvent.record_activity(queue_status.queue_name, queue_status.bot_id)
- if queue_status.active_patch_id:
- RecordPatchEvent.updated(queue_status.active_patch_id, queue_status.queue_name, queue_status.bot_id)
- self.response.out.write(queue_status.key().id())
diff --git a/Tools/QueueStatusServer/handlers/updatesvnrevision.py b/Tools/QueueStatusServer/handlers/updatesvnrevision.py
deleted file mode 100644
index 075982a4d..000000000
--- a/Tools/QueueStatusServer/handlers/updatesvnrevision.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.ext import webapp, db
-from google.appengine.ext.webapp import template
-
-import handlers
-import model
-
-
-class UpdateSVNRevision(handlers.UpdateBase):
- def get(self):
- self.response.out.write(template.render("templates/updatesvnrevision.html", None))
-
- def post(self):
- svn_revision_number = self._int_from_request("number")
-
- svn_revisions = model.SVNRevision.all().filter('number =', svn_revision_number).order('-date').fetch(1)
- svn_revision = None
- if svn_revisions:
- svn_revision = svn_revisions[0]
- else:
- svn_revision = model.SVNRevision()
- svn_revision.number = svn_revision_number
- svn_revision.broken_bots.append(self.request.get("broken_bot"))
- svn_revision.put()
-
- self.response.out.write(svn_revision.key().id())
diff --git a/Tools/QueueStatusServer/handlers/updateworkitems.py b/Tools/QueueStatusServer/handlers/updateworkitems.py
deleted file mode 100644
index 6b3ddedfa..000000000
--- a/Tools/QueueStatusServer/handlers/updateworkitems.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (C) 2013 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.
-
-from google.appengine.ext import webapp, db
-from google.appengine.ext.webapp import template
-
-from handlers.updatebase import UpdateBase
-from loggers.recordpatchevent import RecordPatchEvent
-from model.queues import Queue
-from model.workitems import WorkItems
-
-from datetime import datetime
-
-
-class UpdateWorkItems(UpdateBase):
- def get(self):
- self.response.out.write(template.render("templates/updateworkitems.html", None))
-
- def _parse_work_items_string(self, items_string):
- try:
- item_strings = items_string.split(" ") if items_string else []
- return map(int, item_strings)
- except ValueError:
- return None
-
- def _update_work_items_from_request(self, work_items):
- items_string = self.request.get("work_items")
- new_work_items = self._parse_work_items_string(items_string)
- if new_work_items == None:
- self.response.out.write("Failed to parse work items: %s" % items_string)
- return False
- work_items.item_ids = new_work_items
- work_items.date = datetime.utcnow()
- return True
-
- def _queue_from_request(self):
- queue_name = self.request.get("queue_name")
- queue = Queue.queue_with_name(queue_name)
- if not queue:
- self.response.out.write("\"%s\" is not in queues %s" % (queue_name, Queue.all()))
- return None
- return queue
-
- def post(self):
- queue = self._queue_from_request()
- if not queue:
- self.response.set_status(500)
- return
- work_items = queue.work_items()
- old_items = set(work_items.item_ids)
-
- success = self._update_work_items_from_request(work_items)
- if not success:
- self.response.set_status(500)
- return
- new_items = set(work_items.item_ids)
- work_items.put()
-
- for work_item in new_items - old_items:
- RecordPatchEvent.added(work_item, queue.name())
- for work_item in old_items - new_items:
- RecordPatchEvent.stopped(work_item, queue.name())
diff --git a/Tools/QueueStatusServer/index.yaml b/Tools/QueueStatusServer/index.yaml
deleted file mode 100644
index 694f77bd1..000000000
--- a/Tools/QueueStatusServer/index.yaml
+++ /dev/null
@@ -1,74 +0,0 @@
-indexes:
-
-# AUTOGENERATED
-
-# This index.yaml is automatically updated whenever the dev_appserver
-# detects that a new type of query is run. If you want to manage the
-# index.yaml file manually, remove the above marker line (the line
-# saying "# AUTOGENERATED"). If you want to manage some indexes
-# manually, move them above the marker line. The index.yaml file is
-# automatically uploaded to the admin console when you next deploy
-# your application using appcfg.py.
-
-- kind: PatchLog
- properties:
- - name: queue_name
- - name: date
-
-- kind: QueueStatus
- properties:
- - name: active_patch_id
- - name: date
- direction: desc
-
-- kind: QueueStatus
- properties:
- - name: active_patch_id
- - name: queue_name
- - name: date
- direction: desc
-
-- kind: QueueStatus
- properties:
- - name: bot_id
- - name: message
- - name: queue_name
- - name: date
- direction: desc
-
-- kind: QueueStatus
- properties:
- - name: bot_id
- - name: queue_name
- - name: date
- direction: desc
-
-- kind: QueueStatus
- properties:
- - name: message
- - name: queue_name
- - name: date
-
-- kind: QueueStatus
- properties:
- - name: message
- - name: queue_name
- - name: date
- direction: desc
-
-- kind: QueueStatus
- properties:
- - name: queue_name
- - name: date
-
-- kind: QueueStatus
- properties:
- - name: queue_name
- - name: date
- direction: desc
-
-- kind: SVNRevision
- properties:
- - name: number
- - name: date
- direction: desc
diff --git a/Tools/QueueStatusServer/loggers/__init__.py b/Tools/QueueStatusServer/loggers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/QueueStatusServer/loggers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/QueueStatusServer/loggers/recordbotevent.py b/Tools/QueueStatusServer/loggers/recordbotevent.py
deleted file mode 100644
index cb0e224e0..000000000
--- a/Tools/QueueStatusServer/loggers/recordbotevent.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2013 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.
-
-from config.logging import queue_log_duration
-from model.queuelog import QueueLog
-
-
-class RecordBotEvent(object):
- @classmethod
- def record_activity(cls, queue_name, bot_id):
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- if queue_log and bot_id not in queue_log.bot_ids_seen:
- queue_log.bot_ids_seen.append(bot_id)
- queue_log.put()
diff --git a/Tools/QueueStatusServer/loggers/recordpatchevent.py b/Tools/QueueStatusServer/loggers/recordpatchevent.py
deleted file mode 100644
index 08c57cdb6..000000000
--- a/Tools/QueueStatusServer/loggers/recordpatchevent.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright (C) 2013 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.
-
-from config.logging import queue_log_duration
-from model.patchlog import PatchLog
-from model.queuelog import QueueLog
-from model.warninglog import WarningLog
-
-
-class RecordPatchEvent(object):
- @classmethod
- def added(cls, attachment_id, queue_name):
- PatchLog.lookup(attachment_id, queue_name)
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- if queue_log.update_max_patches_waiting():
- queue_log.put()
-
- @classmethod
- def retrying(cls, attachment_id, queue_name, bot_id=None):
- patch_log = PatchLog.lookup_if_exists(attachment_id, queue_name)
- if not patch_log:
- WarningLog.record("patchlog missing", "In retrying event.", attachment_id, queue_name, bot_id)
- return
-
- if bot_id:
- patch_log.bot_id = bot_id
- patch_log.retry_count += 1
- patch_log.put()
-
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- queue_log.patch_retry_count += 1
- queue_log.put()
-
- @classmethod
- def started(cls, attachment_id, queue_name, bot_id=None):
- patch_log = PatchLog.lookup_if_exists(attachment_id, queue_name)
- if not patch_log:
- WarningLog.record("patchlog missing", "In started event.", attachment_id, queue_name, bot_id)
- return
-
- # An existing wait_duration implies the patch had been started previously and is being picked up again because it had expired.
- if not patch_log.wait_duration:
- if bot_id:
- patch_log.bot_id = bot_id
- patch_log.calculate_wait_duration()
- patch_log.put()
-
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- queue_log.patch_wait_durations.append(patch_log.wait_duration)
- queue_log.put()
-
- @classmethod
- def stopped(cls, attachment_id, queue_name, bot_id=None):
- patch_log = PatchLog.lookup_if_exists(attachment_id, queue_name)
- if not patch_log:
- WarningLog.record("patchlog missing", "In stopped event.", attachment_id, queue_name, bot_id)
- return
-
- if not patch_log.wait_duration:
- WarningLog.record("patchlog wait duration missing", "In stopped event.", attachment_id, queue_name, bot_id)
- return
-
- if not patch_log.finished:
- if bot_id:
- patch_log.bot_id = bot_id
- patch_log.finished = True
- patch_log.calculate_process_duration()
- patch_log.put()
-
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- queue_log.patch_process_durations.append(patch_log.process_duration)
- queue_log.put()
-
- @classmethod
- def updated(cls, attachment_id, queue_name, bot_id=None):
- patch_log = PatchLog.lookup_if_exists(attachment_id, queue_name)
- if not patch_log:
- WarningLog.record("patchlog missing", "In updated event.", attachment_id, queue_name, bot_id)
- return
-
- if bot_id:
- patch_log.bot_id = bot_id
- patch_log.status_update_count += 1
- patch_log.put()
-
- queue_log = QueueLog.get_current(queue_name, queue_log_duration)
- queue_log.status_update_count += 1
- queue_log.put()
-
diff --git a/Tools/QueueStatusServer/main.py b/Tools/QueueStatusServer/main.py
deleted file mode 100644
index a626f8322..000000000
--- a/Tools/QueueStatusServer/main.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) 2009 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.
-
-# Request a modern Django
-from google.appengine.dist import use_library
-use_library('django', '1.2') # Must agree with __init.py__
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp.util import run_wsgi_app
-
-from handlers.activebots import ActiveBots
-from handlers.dashboard import Dashboard
-from handlers.gc import GC
-from handlers.nextpatch import NextPatch
-from handlers.patch import Patch
-from handlers.patchstatus import PatchStatus
-from handlers.queuecharts import QueueCharts
-from handlers.queuestatus import QueueStatus
-from handlers.recentstatus import QueuesOverview
-from handlers.releasepatch import ReleasePatch
-from handlers.showresults import ShowResults
-from handlers.statusbubble import StatusBubble
-from handlers.submittoews import SubmitToEWS
-from handlers.svnrevision import SVNRevision
-from handlers.syncqueuelogs import SyncQueueLogs
-from handlers.updatestatus import UpdateStatus
-from handlers.updatesvnrevision import UpdateSVNRevision
-from handlers.updateworkitems import UpdateWorkItems
-
-
-webapp.template.register_template_library('filters.webkit_extras')
-
-routes = [
- ('/', QueuesOverview),
- ('/dashboard', Dashboard),
- ('/gc', GC),
- ('/sync-queue-logs', SyncQueueLogs),
- (r'/patch-status/(.*)/(.*)', PatchStatus),
- (r'/patch/(.*)', Patch),
- (r'/submit-to-ews', SubmitToEWS),
- (r'/results/(.*)', ShowResults),
- (r'/status-bubble/(.*)', StatusBubble),
- (r'/svn-revision/(.*)', SVNRevision),
- (r'/queue-charts/(.*)', QueueCharts),
- (r'/queue-status/(.*)/bots/(.*)', QueueStatus),
- (r'/queue-status/(.*)', QueueStatus),
- (r'/next-patch/(.*)', NextPatch),
- (r'/release-patch', ReleasePatch),
- ('/update-status', UpdateStatus),
- ('/update-work-items', UpdateWorkItems),
- ('/update-svn-revision', UpdateSVNRevision),
- ('/active-bots', ActiveBots),
-]
-
-application = webapp.WSGIApplication(routes, debug=True)
-
-def main():
- run_wsgi_app(application)
-
-if __name__ == "__main__":
- main()
diff --git a/Tools/QueueStatusServer/model/__init__.py b/Tools/QueueStatusServer/model/__init__.py
deleted file mode 100644
index 1eaa044f0..000000000
--- a/Tools/QueueStatusServer/model/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Required for Python to search this directory for module files
-
-from model.svnrevision import SVNRevision
diff --git a/Tools/QueueStatusServer/model/activeworkitems.py b/Tools/QueueStatusServer/model/activeworkitems.py
deleted file mode 100644
index 023258a6e..000000000
--- a/Tools/QueueStatusServer/model/activeworkitems.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.ext import db
-
-from datetime import timedelta, datetime
-import time
-
-from model.queuepropertymixin import QueuePropertyMixin
-
-
-class ActiveWorkItems(db.Model, QueuePropertyMixin):
- queue_name = db.StringProperty()
- item_ids = db.ListProperty(int)
- item_dates = db.ListProperty(float)
- date = db.DateTimeProperty(auto_now_add=True)
-
- # The id/date pairs should probably just be their own class.
- def _item_time_pairs(self):
- return zip(self.item_ids, self.item_dates)
-
- def _set_item_time_pairs(self, pairs):
- if pairs:
- # The * operator raises on an empty list.
- # db.Model does not tuples, we have to make lists.
- self.item_ids, self.item_dates = map(list, zip(*pairs))
- else:
- self.item_ids = []
- self.item_dates = []
-
- def _append_item_time_pair(self, pair):
- self.item_ids.append(pair[0])
- self.item_dates.append(pair[1])
-
- def _remove_item(self, item_id):
- nonexpired_pairs = [pair for pair in self._item_time_pairs() if pair[0] != item_id]
- self._set_item_time_pairs(nonexpired_pairs)
-
- @classmethod
- def key_for_queue(cls, queue_name):
- return "active-work-items-%s" % (queue_name)
-
- @classmethod
- def lookup_by_queue(cls, queue_name):
- return cls.get_or_insert(key_name=cls.key_for_queue(queue_name), queue_name=queue_name)
-
- @staticmethod
- def _expire_item(key, item_id):
- active_work_items = db.get(key)
- active_work_items._remove_item(item_id)
- active_work_items.put()
-
- def expire_item(self, item_id):
- return db.run_in_transaction(self._expire_item, self.key(), item_id)
-
- def deactivate_expired(self, now):
- one_hour_ago = time.mktime((now - timedelta(minutes=60)).timetuple())
- nonexpired_pairs = [pair for pair in self._item_time_pairs() if pair[1] > one_hour_ago]
- self._set_item_time_pairs(nonexpired_pairs)
-
- def next_item(self, work_item_ids, now):
- for item_id in work_item_ids:
- if item_id not in self.item_ids:
- self._append_item_time_pair([item_id, time.mktime(now.timetuple())])
- return item_id
- return None
-
- def time_for_item(self, item_id):
- for active_item_id, time in self._item_time_pairs():
- if active_item_id == item_id:
- return datetime.fromtimestamp(time)
- return None
diff --git a/Tools/QueueStatusServer/model/activeworkitems_unittest.py b/Tools/QueueStatusServer/model/activeworkitems_unittest.py
deleted file mode 100644
index b8c620aa0..000000000
--- a/Tools/QueueStatusServer/model/activeworkitems_unittest.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-from datetime import datetime
-from google.appengine.ext import testbed
-
-from model.activeworkitems import ActiveWorkItems
-
-
-class ActiveWorkItemsTest(unittest.TestCase):
-
- def setUp(self):
- self.testbed = testbed.Testbed()
- self.testbed.activate()
- self.testbed.init_datastore_v3_stub()
- self.testbed.init_memcache_stub()
-
- def tearDown(self):
- self.testbed.deactivate()
-
- def test_basic(self):
- items = ActiveWorkItems.lookup_by_queue("test-queue")
- queued_items = [1, 2]
- # db.Model only stores dates to second resolution, so we use an explicit datetime without milliseconds.
- time = datetime(2011, 4, 18, 18, 50, 44)
- self.assertEqual(items.next_item(queued_items, time), 1)
- self.assertEqual(items.next_item([1], time), None)
- self.assertEqual(items.next_item([], time), None)
-
- self.assertEqual(items.time_for_item(1), time)
- self.assertEqual(items.time_for_item(2), None)
-
- items.expire_item(1)
- # expire_item uses a transaction so it doesn't take effect on the current object.
- self.assertEqual(items.time_for_item(1), time)
- # If we look up the saved object, we see it's been updated.
- items = ActiveWorkItems.lookup_by_queue("test-queue")
- self.assertEqual(items.time_for_item(1), None)
diff --git a/Tools/QueueStatusServer/model/attachment.py b/Tools/QueueStatusServer/model/attachment.py
deleted file mode 100644
index 83b441edc..000000000
--- a/Tools/QueueStatusServer/model/attachment.py
+++ /dev/null
@@ -1,123 +0,0 @@
-# Copyright (C) 2009 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.
-
-import re
-
-from model.queues import Queue
-from model.queuestatus import QueueStatus
-from model.workitems import WorkItems
-
-
-class Attachment(object):
- @classmethod
- def recent(cls, limit=1):
- statuses = QueueStatus.all().order("-date")
- # Notice that we use both a set and a list here to keep the -date ordering.
- ids = []
- visited_ids = set()
- for status in statuses:
- attachment_id = status.active_patch_id
- if not attachment_id:
- continue
- if attachment_id in visited_ids:
- continue
- visited_ids.add(attachment_id)
- ids.append(attachment_id)
- if len(visited_ids) >= limit:
- break
- return map(cls, ids)
-
- def __init__(self, attachment_id):
- self.id = attachment_id
- self._summary = None
- self._cached_queue_positions = None
-
- def summary(self):
- if self._summary:
- return self._summary
- self._summary = self._fetch_summary()
- return self._summary
-
- def state_from_queue_status(self, status):
- table = {
- "Pass" : "pass",
- "Fail" : "fail",
- }
- state = table.get(status.message)
- if state:
- return state
- if status.message.startswith("Error:"):
- return "error"
- if status:
- return "pending"
- return None
-
- def position_in_queue(self, queue):
- return self._queue_positions().get(queue.name())
-
- def status_for_queue(self, queue):
- # summary() is a horrible API and should be killed.
- queue_summary = self.summary().get(queue.name_with_underscores())
- if not queue_summary:
- return None
- return queue_summary.get("status")
-
- def bug_id(self):
- return self.summary().get("bug_id")
-
- def _queue_positions(self):
- if self._cached_queue_positions:
- return self._cached_queue_positions
- # FIXME: Should we be mem-caching this?
- self._cached_queue_positions = self._calculate_queue_positions()
- return self._cached_queue_positions
-
- def _calculate_queue_positions(self):
- all_work_items = WorkItems.all().fetch(limit=len(Queue.all()))
- return dict([(items.queue.name(), items.display_position_for_attachment(self.id)) for items in all_work_items])
-
- # FIXME: This is controller/view code and does not belong in a model.
- def _fetch_summary(self):
- summary = { "attachment_id" : self.id }
-
- first_status = QueueStatus.all().filter('active_patch_id =', self.id).get()
- if not first_status:
- # We don't have any record of this attachment.
- return summary
- summary["bug_id"] = first_status.active_bug_id
-
- for queue in Queue.all():
- summary[queue.name_with_underscores()] = None
- status = QueueStatus.all().filter('queue_name =', queue.name()).filter('active_patch_id =', self.id).order('-date').get()
- if status:
- # summary() is a horrible API and should be killed.
- summary[queue.name_with_underscores()] = {
- "state": self.state_from_queue_status(status),
- "status": status,
- }
- return summary
diff --git a/Tools/QueueStatusServer/model/patchlog.py b/Tools/QueueStatusServer/model/patchlog.py
deleted file mode 100644
index 78254da43..000000000
--- a/Tools/QueueStatusServer/model/patchlog.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2013 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.
-
-from datetime import datetime
-
-from google.appengine.ext import db
-
-
-class PatchLog(db.Model):
- attachment_id = db.IntegerProperty()
- queue_name = db.StringProperty()
- date = db.DateTimeProperty(auto_now_add=True)
- bot_id = db.StringProperty()
- retry_count = db.IntegerProperty(default=0)
- status_update_count = db.IntegerProperty(default=0)
- finished = db.BooleanProperty(default=False)
- wait_duration = db.IntegerProperty()
- process_duration = db.IntegerProperty()
-
- @classmethod
- def lookup(cls, attachment_id, queue_name):
- key = cls._generate_key(attachment_id, queue_name)
- return cls.get_or_insert(key, attachment_id=attachment_id, queue_name=queue_name)
-
- @classmethod
- def lookup_if_exists(cls, attachment_id, queue_name):
- key = cls._generate_key(attachment_id, queue_name)
- return cls.get_by_key_name(key)
-
- def calculate_wait_duration(self):
- time_delta = datetime.utcnow() - self.date
- self.wait_duration = int(self._time_delta_to_seconds(time_delta))
-
- def calculate_process_duration(self):
- time_delta = datetime.utcnow() - self.date
- self.process_duration = int(self._time_delta_to_seconds(time_delta)) - (self.wait_duration or 0)
-
- @classmethod
- def _generate_key(cls, attachment_id, queue_name):
- return "%s-%s" % (attachment_id, queue_name)
-
- # Needed to support Python 2.5's lack of timedelta.total_seconds().
- @classmethod
- def _time_delta_to_seconds(cls, time_delta):
- return time_delta.seconds + time_delta.days * 24 * 3600
diff --git a/Tools/QueueStatusServer/model/queuelog.py b/Tools/QueueStatusServer/model/queuelog.py
deleted file mode 100644
index ee3e9def6..000000000
--- a/Tools/QueueStatusServer/model/queuelog.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2013 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.
-
-from time import time
-from datetime import datetime
-
-from google.appengine.ext import db
-
-from model.workitems import WorkItems
-from model.activeworkitems import ActiveWorkItems
-
-
-class QueueLog(db.Model):
- date = db.DateTimeProperty()
- # duration specifies in seconds the time period these log values apply to.
- duration = db.IntegerProperty()
- queue_name = db.StringProperty()
- bot_ids_seen = db.StringListProperty()
- max_patches_waiting = db.IntegerProperty(default=0)
- patch_wait_durations = db.ListProperty(int)
- patch_process_durations = db.ListProperty(int)
- patch_retry_count = db.IntegerProperty(default=0)
- status_update_count = db.IntegerProperty(default=0)
-
- @staticmethod
- def create_key(queue_name, duration, timestamp):
- return "%s-%s-%s" % (queue_name, duration, timestamp)
-
- @classmethod
- def get_at(cls, queue_name, duration, timestamp):
- timestamp = int(timestamp / duration) * duration
- date = datetime.utcfromtimestamp(timestamp)
- key = cls.create_key(queue_name, duration, timestamp)
- return cls.get_or_create(key, date=date, duration=duration, queue_name=queue_name)
-
- @classmethod
- def get_current(cls, queue_name, duration):
- return cls.get_at(queue_name, duration, time())
-
- # This is to prevent page requests from generating lots of rows in the database.
- @classmethod
- def get_or_create(cls, key_name, **kwargs):
- return db.run_in_transaction(cls._get_or_create_txn, key_name, **kwargs)
-
- def update_max_patches_waiting(self):
- patches_waiting = self._get_patches_waiting(self.queue_name)
- if patches_waiting > self.max_patches_waiting:
- self.max_patches_waiting = patches_waiting
- return True
- return False
-
- @classmethod
- def _get_or_create_txn(cls, key_name, **kwargs):
- entity = cls.get_by_key_name(key_name, parent=kwargs.get('parent'))
- if entity is None:
- entity = cls(key_name=key_name, **kwargs)
- return entity
-
- @classmethod
- def _get_patches_waiting(cls, queue_name):
- work_items = WorkItems.lookup_by_queue(queue_name)
- active_work_items = ActiveWorkItems.lookup_by_queue(queue_name)
- return len(set(work_items.item_ids) - set(active_work_items.item_ids))
diff --git a/Tools/QueueStatusServer/model/queuepropertymixin.py b/Tools/QueueStatusServer/model/queuepropertymixin.py
deleted file mode 100644
index a462586ae..000000000
--- a/Tools/QueueStatusServer/model/queuepropertymixin.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2010 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.
-
-
-class QueuePropertyMixin(object):
- def _queue_getter(self):
- # Import at runtime to avoid circular imports
- from model.queues import Queue
- return Queue.queue_with_name(self.queue_name)
-
- def _queue_setter(self, queue):
- self.queue_name = queue.name() if queue else None
-
- queue = property(_queue_getter, _queue_setter)
diff --git a/Tools/QueueStatusServer/model/queuepropertymixin_unittest.py b/Tools/QueueStatusServer/model/queuepropertymixin_unittest.py
deleted file mode 100644
index e83c3f50d..000000000
--- a/Tools/QueueStatusServer/model/queuepropertymixin_unittest.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-
-from model.queuepropertymixin import QueuePropertyMixin
-from model.queues import Queue
-
-
-class ObjectWithQueueName(QueuePropertyMixin):
- def __init__(self):
- self.queue_name = None
-
-
-class QueuePropertyMixinTest(unittest.TestCase):
- def test_queue_property(self):
- test_object = ObjectWithQueueName()
- mac_ews = Queue("mac-ews")
- test_object.queue = mac_ews
- self.assertEqual(test_object.queue.name(), "mac-ews")
- self.assertEqual(test_object.queue_name, "mac-ews")
- test_object.queue = None
- self.assertEqual(test_object.queue_name, None)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/QueueStatusServer/model/queues.py b/Tools/QueueStatusServer/model/queues.py
deleted file mode 100644
index d71237dc8..000000000
--- a/Tools/QueueStatusServer/model/queues.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (C) 2010 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.
-
-
-import re
-
-from config.queues import all_queue_names
-from model.activeworkitems import ActiveWorkItems
-from model.workitems import WorkItems
-
-
-class Queue(object):
- def __init__(self, name):
- assert(name in all_queue_names)
- self._name = name
-
- @classmethod
- def queue_with_name(cls, queue_name):
- if queue_name not in all_queue_names:
- return None
- return Queue(queue_name)
-
- @classmethod
- def all(cls):
- return [Queue(name) for name in all_queue_names]
-
- @classmethod
- def all_ews(cls):
- return [queue for queue in cls.all() if queue.is_ews()]
-
- def name(self):
- return self._name
-
- def work_items(self):
- return WorkItems.lookup_by_queue(self._name)
-
- # FIXME: active_work_items is a bad name for this lock-table.
- def active_work_items(self):
- return ActiveWorkItems.lookup_by_queue(self._name)
-
- def _caplitalize_after_dash(self, string):
- return "-".join([word[0].upper() + word[1:] for word in string.split("-")])
-
- # For use in status bubbles or table headers
- def short_name(self):
- short_name = self._name.replace("-ews", "")
- short_name = short_name.replace("-queue", "")
- return self._caplitalize_after_dash(short_name.capitalize())
-
- def display_name(self):
- display_name = self._name.replace("-", " ")
- display_name = display_name.title()
- display_name = display_name.replace("Wk2", "WK2")
- display_name = display_name.replace("Ews", "EWS")
- return display_name
-
- _dash_regexp = re.compile("-")
-
- def name_with_underscores(self):
- return self._dash_regexp.sub("_", self._name)
-
- def is_ews(self):
- # Note: The style-queue is just like an EWS in that it has an EWS
- # bubble, and it works off of the r? patches. If at some later
- # point code wants to not treat the style-queue as an EWS
- # (e.g. expecting is_ews() queues to have build results?)
- # then we should fix all callers and change this check.
- return self._name.endswith("-ews") or self._name == "style-queue"
diff --git a/Tools/QueueStatusServer/model/queues_unittest.py b/Tools/QueueStatusServer/model/queues_unittest.py
deleted file mode 100644
index 2a6bd70b1..000000000
--- a/Tools/QueueStatusServer/model/queues_unittest.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-
-
-from model.queues import Queue
-
-
-class QueueTest(unittest.TestCase):
- def test_is_ews(self):
- mac_ews = Queue("mac-ews")
- self.assertTrue(mac_ews.is_ews())
-
- def test_queue_with_name(self):
- self.assertEqual(Queue.queue_with_name("bogus"), None)
- self.assertEqual(Queue.queue_with_name("mac-ews").name(), "mac-ews")
- self.assertRaises(AssertionError, Queue, ("bogus"))
-
- def _assert_short_name(self, queue_name, short_name):
- self.assertEqual(Queue(queue_name).short_name(), short_name)
-
- def test_short_name(self):
- self._assert_short_name("mac-ews", "Mac")
- self._assert_short_name("commit-queue", "Commit")
- self._assert_short_name("style-queue", "Style")
-
- def _assert_display_name(self, queue_name, short_name):
- self.assertEqual(Queue(queue_name).display_name(), short_name)
-
- def test_display_name(self):
- self._assert_display_name("mac-ews", "Mac EWS")
- self._assert_display_name("commit-queue", "Commit Queue")
- self._assert_display_name("style-queue", "Style Queue")
-
- def _assert_name_with_underscores(self, queue_name, short_name):
- self.assertEqual(Queue(queue_name).name_with_underscores(), short_name)
-
- def test_name_with_underscores(self):
- self._assert_name_with_underscores("mac-ews", "mac_ews")
- self._assert_name_with_underscores("commit-queue", "commit_queue")
-
- def test_style_queue_is_ews(self):
- # For now we treat the style-queue as an EWS since most users would
- # describe it as such. If is_ews() ever needs to mean "builds the patch"
- # or similar, then we will need to adjust all callers.
- self.assertTrue(Queue("style-queue").is_ews())
- self.assertTrue("style-queue" in map(Queue.name, Queue.all_ews()))
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/QueueStatusServer/model/queuestatus.py b/Tools/QueueStatusServer/model/queuestatus.py
deleted file mode 100644
index 0f4d38b96..000000000
--- a/Tools/QueueStatusServer/model/queuestatus.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2013 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.
-
-from config import messages
-from google.appengine.ext import db
-from model.queuepropertymixin import QueuePropertyMixin
-
-
-class QueueStatus(db.Model, QueuePropertyMixin):
- author = db.UserProperty()
- queue_name = db.StringProperty()
- bot_id = db.StringProperty()
- active_bug_id = db.IntegerProperty()
- active_patch_id = db.IntegerProperty()
- message = db.StringProperty(multiline=True)
- date = db.DateTimeProperty(auto_now_add=True)
- results_file = db.BlobProperty()
-
- def is_retry_request(self):
- return self.message == messages.retry_status
diff --git a/Tools/QueueStatusServer/model/svnrevision.py b/Tools/QueueStatusServer/model/svnrevision.py
deleted file mode 100644
index f5d364474..000000000
--- a/Tools/QueueStatusServer/model/svnrevision.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.ext import db
-
-
-class SVNRevision(db.Model):
- number = db.IntegerProperty()
- broken_bots = db.StringListProperty(default=[])
- date = db.DateTimeProperty(auto_now_add=True)
diff --git a/Tools/QueueStatusServer/model/warninglog.py b/Tools/QueueStatusServer/model/warninglog.py
deleted file mode 100644
index b9677eb09..000000000
--- a/Tools/QueueStatusServer/model/warninglog.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2013 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.
-
-from time import time
-from datetime import datetime
-
-from google.appengine.ext import db
-
-
-class WarningLog(db.Model):
- date = db.DateTimeProperty(auto_now_add=True)
- event = db.StringProperty()
- message = db.StringProperty()
- attachment_id = db.IntegerProperty()
- queue_name = db.StringProperty()
- bot_id = db.StringProperty()
-
- @classmethod
- def record(cls, event, message=None, attachment_id=None, queue_name=None, bot_id=None):
- entity = cls(event=event, message=message, queue_name=queue_name, bot_id=bot_id, attachment_id=attachment_id)
- entity.put()
- return entity
diff --git a/Tools/QueueStatusServer/model/workitems.py b/Tools/QueueStatusServer/model/workitems.py
deleted file mode 100644
index b74f5f536..000000000
--- a/Tools/QueueStatusServer/model/workitems.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.ext import db
-
-from model.queuepropertymixin import QueuePropertyMixin
-
-
-class WorkItems(db.Model, QueuePropertyMixin):
- queue_name = db.StringProperty()
- item_ids = db.ListProperty(int)
- date = db.DateTimeProperty(auto_now_add=True)
-
- @classmethod
- def key_for_queue(cls, queue_name):
- return "work-items-%s" % (queue_name)
-
- @classmethod
- def lookup_by_queue(cls, queue_name):
- return cls.get_or_insert(key_name=cls.key_for_queue(queue_name), queue_name=queue_name)
-
- def display_position_for_attachment(self, attachment_id):
- """Returns a 1-based index corresponding to the position
- of the attachment_id in the queue. If the attachment is
- not in this queue, this returns None"""
- if attachment_id in self.item_ids:
- return self.item_ids.index(attachment_id) + 1
- return None
-
- @staticmethod
- def _unguarded_add(key, attachment_id):
- work_items = db.get(key)
- if attachment_id in work_items.item_ids:
- return
- work_items.item_ids.append(attachment_id)
- work_items.put()
-
- # Because this uses .key() self.is_saved() must be True or this will throw NotSavedError.
- def add_work_item(self, attachment_id):
- db.run_in_transaction(self._unguarded_add, self.key(), attachment_id)
-
- @staticmethod
- def _unguarded_remove(key, attachment_id):
- work_items = db.get(key)
- if attachment_id in work_items.item_ids:
- # We should never have more than one entry for a work item, so we only need remove the first.
- work_items.item_ids.remove(attachment_id)
- work_items.put()
-
- # Because this uses .key() self.is_saved() must be True or this will throw NotSavedError.
- def remove_work_item(self, attachment_id):
- db.run_in_transaction(self._unguarded_remove, self.key(), attachment_id)
diff --git a/Tools/QueueStatusServer/model/workitems_unittest.py b/Tools/QueueStatusServer/model/workitems_unittest.py
deleted file mode 100644
index f6ca78559..000000000
--- a/Tools/QueueStatusServer/model/workitems_unittest.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2010 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 Research in Motion Ltd. 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.
-
-import unittest
-
-
-from model.workitems import WorkItems
-
-
-class WorkItemsTest(unittest.TestCase):
- def test_display_position_for_attachment(self):
- items = WorkItems()
- items.item_ids = [0, 1, 2]
- self.assertEqual(items.display_position_for_attachment(0), 1)
- self.assertEqual(items.display_position_for_attachment(1), 2)
- self.assertEqual(items.display_position_for_attachment(3), None)
-
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/QueueStatusServer/stylesheets/charts.css b/Tools/QueueStatusServer/stylesheets/charts.css
deleted file mode 100644
index b841b2cd0..000000000
--- a/Tools/QueueStatusServer/stylesheets/charts.css
+++ /dev/null
@@ -1,8 +0,0 @@
-.chart {
- margin-bottom: 40px;
- height: 200px;
-}
-
-.choices {
- font-size: 0.75em;
-} \ No newline at end of file
diff --git a/Tools/QueueStatusServer/stylesheets/dashboard.css b/Tools/QueueStatusServer/stylesheets/dashboard.css
deleted file mode 100644
index 12cf28bfc..000000000
--- a/Tools/QueueStatusServer/stylesheets/dashboard.css
+++ /dev/null
@@ -1,127 +0,0 @@
-body {
- font-family: Verdana, Helvetica, sans-serif;
- width: 600px;
- padding: 0px;
- color: #444;
-}
-h1 {
- background-color: #EEE;
- color: #444;
- font-size: 14pt;
- font-style: italic;
- margin: 0px;
- padding: 5px;
-}
-h2 {
- background-color: #AAA;
- color: white;
- font-weight: bold;
- font-size: 9pt;
- margin: 0px;
- padding: 5px;
-}
-ul {
- margin: 0px;
- padding: 0px;
- list-style: none;
-}
-li {
- padding: 5px;
-}
-table {
- border-spacing: 0px;
-}
-th {
- background-color: #AAA;
- color: white;
- padding: 5px;
- width: 100px;
- font-size: 9pt;
-}
-td {
- text-align: center;
-}
-tr:hover, li:hover {
- background-color: #EEE;
-}
-
-.status-group {
- font-size: 90%;
-}
-
-.status-bug {
- font-weight: bold;
-}
-
-.status-group ul {
- font-size: 90%;
-}
-
-.status-group ul li {
- padding: 2px 0 2px 7px;
- overflow: hidden;
-}
-
-.status-group ul li:hover {
- background: #ddd;
-}
-
-.status-date {
- color: #AAA;
- float: right;
- font-size: 8pt;
-}
-
-.status-cell {
- margin: 1px;
- padding: 1px 2px;
- font-size: 9pt;
- border: 1px solid transparent;
-}
-.status-cell:hover {
- border: 1px solid black;
-}
-.status-cell.pass {
- background-color: #8FDF5F;
- cursor: pointer;
- /* border: 1px solid #4F8530; */
-}
-.status-cell.fail {
- background-color: #E98080;
- cursor: pointer;
- /* border: 1px solid #A77272; */
-}
-.status-cell.pending {
- background-color: #FFFC6C;
- cursor: pointer;
- /* border: 1px solid #C5C56D; */
-}
-.status-cell.error {
- background-color: #E0B0FF;
- cursor: pointer;
- /* border: 1px solid #ACA0B3; */
-}
-.queue_bubble {
- border: 1px solid black;
- margin-bottom: 10px;
- border-radius: 10px;
- padding: 5px;
-}
-.queue_name {
- float:left;
-}
-.last_heard_from {
- float: right;
-}
-.status_text {
- clear: both;
-}
-.alive {
- background-color: #8FDF5F;
-}
-.behind {
- background-color: #FFFC6C;
-}
-.dead {
- background-color: #E98080;
-} \ No newline at end of file
diff --git a/Tools/QueueStatusServer/stylesheets/main.css b/Tools/QueueStatusServer/stylesheets/main.css
deleted file mode 100644
index 55d36941d..000000000
--- a/Tools/QueueStatusServer/stylesheets/main.css
+++ /dev/null
@@ -1,26 +0,0 @@
-body {
- font-family: Verdana, Helvetica, sans-serif;
-}
-
-#current_status {
- padding: 5px;
- font-size: larger;
-}
-
-#last_status_date {
- font-size: small;
-}
-
-.recent_status {
- padding-left: 10px;
-}
-
-#recent_status_table {
- font-size: small;
- margin: 10px;
-}
-
-#footer {
- font-size: small;
- padding-top: 10px;
-}
diff --git a/Tools/QueueStatusServer/templates/activebots.html b/Tools/QueueStatusServer/templates/activebots.html
deleted file mode 100644
index 8c79d730f..000000000
--- a/Tools/QueueStatusServer/templates/activebots.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>WebKit Queues</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/dashboard.css" />
-<style>
-/* Override the generic table styles from dashboard.css */
-td {
- text-align: left;
-}
-</style>
-</head>
-<body>
-<h1>WebKit Queues</h1>
-<table>
- <thead>
- <tr>
- <th>Bot</th><th>Queue</th><th>Last Message</th><th>Time</th>
- </tr>
- </thead>
- <tbody>
- {% for status in last_statuses %}
- <tr>
- <td><a href="/queue-status/{{status.queue_name}}/bots/{{status.bot_id}}">{{ status.bot_id }}</a></td>
- <td><a href="/queue-status/{{status.queue_name}}">{{ status.queue_name }}</a></td>
- <td>{{ status.message|force_escape|urlize|webkit_linkify|safe }}</td>
- <td>{{ status.date|timesince }} ago</td>
- </tr>
- {% endfor %}
- </tbody>
-</table>
-</body>
-</html>
diff --git a/Tools/QueueStatusServer/templates/dashboard.html b/Tools/QueueStatusServer/templates/dashboard.html
deleted file mode 100644
index 3a4df4928..000000000
--- a/Tools/QueueStatusServer/templates/dashboard.html
+++ /dev/null
@@ -1,44 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>WebKit Bot Status</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/dashboard.css" />
-<script>
-function statusDetail(patch_id) {
- // FIXME: We'd like to use AJAX to show the details on this page.
- window.location = "/patch/" + patch_id
-}
-</script>
-</head>
-<body>
-<h1>WebKit Bot Status</h1>
-<table>
- <thead>
- <tr>
- <th>Bug</th>
- <th>Attachment</th>
- {% for header in headers %}
- <th>{{ header }}</th>
- {% endfor %}
- </tr>
- </thead>
- <tbody>{% for row in rows %}
- <tr>
- <td class="status-cell">
- {{ row.bug_id|force_escape|webkit_bug_id|safe }}
- </td>
- <td class="status-cell">
- {{ row.attachment_id|force_escape|webkit_attachment_id|safe }}
- </td>
- {% for bubble in row.bubbles %}
- <td class="status-cell {{ bubble.status_class }}"
- {% if bubble.status %}
- onclick="statusDetail({{ row.attachment_id }})"
- title="{{ bubble.status_date|timesince }}"
- {% endif %}>
- </td>
- {% endfor %}
- </tr>{% endfor %}
- </tbody>
-</table>
-</html>
diff --git a/Tools/QueueStatusServer/templates/includes/singlequeuestatus.html b/Tools/QueueStatusServer/templates/includes/singlequeuestatus.html
deleted file mode 100644
index 94393c047..000000000
--- a/Tools/QueueStatusServer/templates/includes/singlequeuestatus.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<span class="status-date">{{ status.date|timesince }} ago
-{% if status.bot_id %}
-(<a href="/queue-status/{{status.queue_name}}/bots/{{status.bot_id}}">{{ status.bot_id }}</a>)
-{% endif %}
-</span>
-<span class="status-message">{{ status.message|force_escape|urlize|webkit_linkify|safe }}</span>
-{% if status.results_file %}
- <span class="status-results">[{{ status.key.id|results_link|safe }}]</span>
-{% endif %}
diff --git a/Tools/QueueStatusServer/templates/patch.html b/Tools/QueueStatusServer/templates/patch.html
deleted file mode 100644
index de334a5a0..000000000
--- a/Tools/QueueStatusServer/templates/patch.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Patch Status</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/dashboard.css" />
-</head>
-<body>
-<h1>
- Patch {{ attachment_id|force_escape|webkit_attachment_id|safe }} (Bug {{ bug_id|force_escape|webkit_bug_id|safe }})
-</h1>{% for queue_name, statuses in queue_status.items %}
-<div class="status-details">
- <h2>{{ queue_name }}</h2>
- <ul>{% for status in statuses %}
- <li>
- <span class="status-message">{{ status.message|force_escape|urlize|webkit_linkify|safe }}</span>{% if status.results_file %}
- <span class="status-results">[{{ status.key.id|results_link|safe }}]</span>{% endif %}
- <span class="status-date">{{ status.date|timesince }} ago</span>
- </li>{% endfor %}
- </ul>
-</div>{% endfor %}
-</html>
diff --git a/Tools/QueueStatusServer/templates/queuecharts.html b/Tools/QueueStatusServer/templates/queuecharts.html
deleted file mode 100644
index 953debdbc..000000000
--- a/Tools/QueueStatusServer/templates/queuecharts.html
+++ /dev/null
@@ -1,284 +0,0 @@
-<!DOCTYPE html>
-<html>
- <head>
- <title>{{ queue_name }} Charts</title>
- <link type="text/css" rel="stylesheet" href="/stylesheets/main.css" />
- <link type="text/css" rel="stylesheet" href="/stylesheets/charts.css" />
- <script type="text/javascript" src="https://www.google.com/jsapi"></script>
- <script type="text/javascript">
- google.load('visualization', '1.0', {'packages':['corechart']});
- google.setOnLoadCallback(function () {
-
- function secondsToString(seconds) {
- var oneSecond = 1;
- var oneMinute = 60;
- var oneHour = oneMinute * 60;
- var oneDay = oneHour * 24;
- var oneYear = oneDay * 365.25;
- var unitArray = [
- [oneYear, "year"],
- [oneDay, "day"],
- [oneHour, "hour"],
- [oneMinute, "minute"],
- [oneSecond, "second"],
- ];
- var result = "";
- for (var i = 0; i < unitArray.length; i++) {
- var unit = unitArray[i][0];
- if (seconds >= unit) {
- if (result !== "") {
- result += " ";
- }
- var name = unitArray[i][1];
- var number = Math.floor(seconds/unit);
- result += number + " " + name + (number > 1 ? "s" : "");
- seconds %= unit;
- }
- }
- if (result === "") {
- return "0 seconds";
- }
- return result;
- }
-
- var data, chart, options;
-
- var timeString = new Date({{ timestamp }} * 1000).toString();
- var timestampDiv = document.getElementById("timestamp");
- timestampDiv.innerHTML = "Viewing from " + timeString;
-
- options = {
- legend: {position: "top"},
- hAxis: {
- title: "{{ time_unit_name|capfirst }} Ago",
- direction: -1,
- viewWindow: {
- min: {{ seconds_ago_min }} / {{ time_unit }},
- max: {{ seconds_ago_max }} / {{ time_unit }},
- },
- gridlines: {
- count: 9,
- },
- },
- vAxis: {
- viewWindow: {min: 0 },
- },
- lineWidth: 3,
- };
-
- // CHART 1
- options.colors = ["green", "red", "orange"];
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Patches Completed");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn("number", "Patches Waiting");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn("number", "Bots (visible to server)");
- data.addColumn({type: "string", role: "tooltip"});
- data.addRows([
- {% for queue_datum in queue_data %}
- [
- {{ queue_datum.seconds_ago }} / {{ time_unit }},
- {{ queue_datum.patches_completed }},
- "Patches Completed: " + {{ queue_datum.patches_completed }} + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- {{ queue_datum.patches_waiting }},
- "Patches Waiting: " + {{ queue_datum.patches_waiting }} + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- {{ queue_datum.bots_seen }},
- "Bots (visible to server): " + {{ queue_datum.bots_seen }} + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.LineChart(document.getElementById('chart1'));
- chart.draw(data, options);
-
- // CHART 2
- options.colors = ["blue", "purple"];
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Status Updates");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn("number", "Patch Retries");
- data.addColumn({type: "string", role: "tooltip"});
- data.addRows([
- {% for queue_datum in queue_data %}
- [
- {{ queue_datum.seconds_ago }} / {{ time_unit }},
- {{ queue_datum.status_update_count }},
- "Status Updates: " + {{ queue_datum.status_update_count }} + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- {{ queue_datum.patch_retry_count }},
- "Patch Retries: " + {{ queue_datum.patch_retry_count }} + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.LineChart(document.getElementById('chart2'));
- chart.draw(data, options);
-
- // CHART 3
- options.colors = ["brown"];
- options.vAxis.title = "Minutes";
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Patch Processing Times");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn({type: "number", role: "interval"});
- data.addColumn({type: "number", role: "interval"});
- data.addRows([
- {% for queue_datum in queue_data %}
- [
- {{ queue_datum.seconds_ago }} / {{ time_unit }},
- {{ queue_datum.patch_processing_med }} / 60,
- "Patch Processing Times\nMax: " + secondsToString({{ queue_datum.patch_processing_max }}) + "\nMedian: " + secondsToString({{ queue_datum.patch_processing_med }}) + "\nMin: " + secondsToString({{ queue_datum.patch_processing_min }}) + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- {{ queue_datum.patch_processing_min }} / 60,
- {{ queue_datum.patch_processing_max }} / 60,
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.LineChart(document.getElementById('chart3'));
- chart.draw(data, options);
-
- // CHART 4
- options.colors = ["red"];
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Patch Waiting Times");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn({type: "number", role: "interval"});
- data.addColumn({type: "number", role: "interval"});
- data.addRows([
- {% for queue_datum in queue_data %}
- [
- {{ queue_datum.seconds_ago }} / {{ time_unit }},
- {{ queue_datum.patch_waiting_med }} / 60,
- "Patch Waiting Times\nMax: " + secondsToString({{ queue_datum.patch_waiting_max }}) + "\nMedian: " + secondsToString({{ queue_datum.patch_waiting_med }}) + "\nMin: " + secondsToString({{ queue_datum.patch_waiting_min }}) + "\n" + secondsToString({{ queue_datum.seconds_ago }}) + " ago",
- {{ queue_datum.patch_waiting_min }} / 60,
- {{ queue_datum.patch_waiting_max }} / 60,
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.LineChart(document.getElementById('chart4'));
- chart.draw(data, options);
-
- function postPatchLink (selection) {
- if (selection.length > 0 && selection[0].row !== undefined) {
- var attachmentIdArray = [{% for patch_datum in patch_data %}{{ patch_datum.attachment_id }}, {% endfor %}];
- var attachmentId = attachmentIdArray[selection[0].row];
- var aTag = document.getElementById("selectedPatch");
- aTag.innerHTML = aTag.href = "//" + window.location.host + "/patch/" + attachmentId;
- }
- }
-
- // CHART 5
- options.colors = ["brown", "red"];
- options.hAxis.title = "{{ time_unit_name|capfirst }} Ago";
- options.hAxis.viewWindow.min = {{ seconds_ago_min }} / {{ time_unit }};
- options.hAxis.viewWindow.max = {{ seconds_ago_max }} / {{ time_unit }};
- delete options.lineWidth;
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Process Duration");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn("number", "Wait Duration");
- data.addColumn({type: "string", role: "tooltip"});
- data.addRows([
- {% for patch_datum in patch_data %}
- [
- {{ patch_datum.seconds_ago }} / {{ time_unit }},
- {{ patch_datum.process_duration }},
- "Patch {{ patch_datum.attachment_id }}\n" + secondsToString({{ patch_datum.seconds_ago }}) + " ago",
- {{ patch_datum.wait_duration }},
- "Patch {{ patch_datum.attachment_id }}\n" + secondsToString({{ patch_datum.seconds_ago }}) + " ago",
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.ScatterChart(document.getElementById('chart5'));
- var chart5 = chart;
- google.visualization.events.addListener(chart, "select", function () {postPatchLink(chart5.getSelection());});
- chart.draw(data, options);
-
- // CHART 6
- options.colors = ["blue", "purple"];
- delete options.vAxis.title;
- data = new google.visualization.DataTable();
- data.addColumn("number", "<time>");
- data.addColumn("number", "Status Updates");
- data.addColumn({type: "string", role: "tooltip"});
- data.addColumn("number", "Retries");
- data.addColumn({type: "string", role: "tooltip"});
- data.addRows([
- {% for patch_datum in patch_data %}
- [
- {{ patch_datum.seconds_ago }} / {{ time_unit }},
- {{ patch_datum.status_update_count }},
- "Patch {{ patch_datum.attachment_id }}\n" + secondsToString({{ patch_datum.seconds_ago }}) + " ago",
- {{ patch_datum.retry_count }},
- "Patch {{ patch_datum.attachment_id }}\n" + secondsToString({{ patch_datum.seconds_ago }}) + " ago",
- ],
- {% endfor %}
- ]);
- chart = new google.visualization.ScatterChart(document.getElementById('chart6'));
- var chart6 = chart;
- google.visualization.events.addListener(chart, "select", function () {postPatchLink(chart6.getSelection());});
- chart.draw(data, options);
- });
-
- function setURLParameter (parameterName, newValue) {
- var split;
- split = window.location.href.split("?");
- var url, parameterArray;
- url = split[0];
- if (split.length > 1) {
- parameterArray = split[1].split("&");
- } else {
- parameterArray = [];
- }
- var setParameter = false;
- for (var i = 0; i < parameterArray.length; i++) {
- var currentParameterName = decodeURIComponent(parameterArray[i].split("=")[0]);
- if (currentParameterName === parameterName) {
- parameterArray[i] = encodeURIComponent(parameterName) + "=" + encodeURIComponent(newValue);
- setParameter = true;
- break;
- }
- }
- if (!setParameter) {
- parameterArray.push(encodeURIComponent(parameterName) + "=" + encodeURIComponent(newValue));
- }console.log(parameterArray);
- window.location.href = url + "?" + parameterArray.join("&");
- }
- </script>
- </head>
-
- <body>
- <div class="choices">
- {% for single_queue_name in all_queue_names %}
- {% if single_queue_name == queue_name %}
- {{ queue_name }}
- {% else %}
- {{ single_queue_name|force_escape|queue_charts_link:single_queue_name|safe }}
- {% endif %}
- {% if not forloop.last %} | {% endif %}
- {% endfor %}
- </div>
- <h1>{{ queue_name }} Charts</h1>
- <div>[{{ queue_name|force_escape|queue_status_link:"status"|safe }}]</div>
- <div id="timestamp"></div>
- <div class="choices">Viewing range:
- {% for view_range_choice in view_range_choices %}
- {% if view_range_choice.view_range == view_range %}
- {{ view_range_choice.name }}
- {% else %}
- <a href="javascript:setURLParameter('view_range', {{ view_range_choice.view_range }})">{{ view_range_choice.name }}</a>
- {% endif %}
- {% if not forloop.last %} | {% endif %}
- {% endfor %}
- </div>
- <div class="chart" id="chart1"></div>
- <div class="chart" id="chart2"></div>
- <div class="chart" id="chart3"></div>
- <div class="chart" id="chart4"></div>
- <div class="chart" id="chart5"></div>
- <div class="chart" id="chart6"></div>
- Selected patch: <a id="selectedPatch">(None)</div>
- </body>
-</html>
diff --git a/Tools/QueueStatusServer/templates/queuestatus.html b/Tools/QueueStatusServer/templates/queuestatus.html
deleted file mode 100644
index aafafbd83..000000000
--- a/Tools/QueueStatusServer/templates/queuestatus.html
+++ /dev/null
@@ -1,79 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>{{ page_title }}</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/dashboard.css" />
-</head>
-<body>
-<h1>{{ page_title }}</h1>
-
-<h3>Summary</h3>
-<div>
-<div>[{{ queue_name|force_escape|queue_charts_link:"charts"|safe }}]</div>
-Last Pass: {% if last_pass %}{{ last_pass.date|timesince }} ago{% else %}never{% endif %}
-{% if not bot_id and last_pass.bot_id %}
-by <a href="/queue-status/{{last_pass.queue_name}}/bots/{{last_pass.bot_id}}">{{ last_pass.bot_id }}</a>
-{% endif %}
-</div>
-<div>
-Last Boot: {% if last_boot %}{{ last_boot.date|timesince }} ago{% else %}never{% endif %}
-{% if not bot_id and last_boot.bot_id %}
-by <a href="/queue-status/{{last_boot.queue_name}}/bots/{{last_boot.bot_id}}">{{ last_boot.bot_id }}</a>
-{% endif %}
-</div>
-<div>7-day "Pass" count: {{ trailing_week_pass_count }}</div>
-<div>30-day "Pass" count: {{ trailing_month_pass_count }}</div>
-
-<h3>Recent Status</h3>
-
-<div class="status-details">
- <ul>
- {% for status_group in status_groups %}
- {% with status_group.0 as title_status %}
- <li class="status-group">
- {% if title_status.active_bug_id %}
- <span class="status-bug">
- Patch {{ title_status.active_patch_id|force_escape|webkit_attachment_id|safe }} from bug
- {{ title_status.active_bug_id|force_escape|webkit_bug_id|safe }}:
- </span>
- {% endif %}
-
- {% ifequal status_group|length 1 %}
- {% with title_status as status %}
- {% include 'includes/singlequeuestatus.html' %}
- {% endwith %}
- {% else %}
- <ul>
- {% for status in status_group %}
- <li class="status">
- {% include 'includes/singlequeuestatus.html' %}
- </li>
- {% endfor %}
- </ul>
- {% endifequal %}
- </li>
- {% endwith %}
- {% endfor %}
- </ul>
-</div>
-
-<h3>Patches in queue</h3>
-<table>
- <tr><th>Position</th><th>Patch</th><th>Lock Acquired</th></tr>
- {% for row in work_item_rows %}
- <tr>
- <td>#{{ forloop.counter }}</td>
- <td>
- {{ row.attachment_id|force_escape|webkit_attachment_id|safe }}
- </td>
- <td>
- {% if row.lock_time %}
- {{ row.lock_time|timesince }} ago
- {% endif %}
- </td>
- </tr>
- {% endfor %}
-</table>
-
-</body>
-</html>
diff --git a/Tools/QueueStatusServer/templates/recentstatus.html b/Tools/QueueStatusServer/templates/recentstatus.html
deleted file mode 100644
index 32fc0301b..000000000
--- a/Tools/QueueStatusServer/templates/recentstatus.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>WebKit Queue Status</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/dashboard.css" />
-</head>
-<body>
-<h1>WebKit Queue Status</h1>
-{% for queue in queues %}
-<div class="queue_bubble {{ queue.status_class }}">
- <div class="queue_name">
- <a href="/queue-status/{{ queue.name }}">
- {{ queue.display_name }}
- </a>
- </div>
- {% if queue.last_heard_from %}
- <div class="last_heard_from">{{ queue.last_heard_from|timesince }} ago</div>
- {% endif %}
- <div class="status_text">
- Status: {{ queue.status_text|force_escape|urlize|webkit_linkify|safe }}
- </div>
- <div>
- {{ queue.pending_items_count }} pending
- </div>
-</div>
-{% endfor %}
-<a href='/active-bots'>List of all active bots</a><br>
-<a href='http://ews-watcher.kov.eti.br/'>Graph of queue depths over time</a>
-</body>
-</html>
diff --git a/Tools/QueueStatusServer/templates/releasepatch.html b/Tools/QueueStatusServer/templates/releasepatch.html
deleted file mode 100644
index cbd6d6fd0..000000000
--- a/Tools/QueueStatusServer/templates/releasepatch.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<form name="release_patch" enctype="multipart/form-data" method="post">
-Patch to release: <input name="attachment_id"> from <input name="queue_name"><input type="submit" value="Release locks and remove from queue"></div>
-</form>
diff --git a/Tools/QueueStatusServer/templates/statusbubble.html b/Tools/QueueStatusServer/templates/statusbubble.html
deleted file mode 100644
index 51a3be815..000000000
--- a/Tools/QueueStatusServer/templates/statusbubble.html
+++ /dev/null
@@ -1,96 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<style>
-body {
- font-family: Verdana, sans-serif;
- margin: 0px;
- padding: 0px;
-}
-#bubbleContainer {
- display: inline-block;
- white-space: nowrap;
-}
-.status {
- display: block;
- float: left;
- margin: 1px;
- padding: 1px 2px;
- -moz-border-radius: 5px;
- -webkit-border-radius: 5px;
- border-radius: 5px;
- border: 1px solid #AAA;
- background-color: white;
- font-size: 11px;
- cursor: pointer;
- text-decoration: none;
- color: black;
-}
-.status:hover {
- border-color: #666;
-}
-.none {
- cursor: auto;
-}
-.none:hover {
- border-color: #AAA;
-}
-.pass {
- background-color: #8FDF5F;
- border: 1px solid #4F8530;
-}
-.fail {
- background-color: #E98080;
- border: 1px solid #A77272;
-}
-.pending {
- background-color: #FFFC6C;
- border: 1px solid #C5C56D;
-}
-.error {
- background-color: #E0B0FF;
- border: 1px solid #ACA0B3;
-}
-.queue_position {
- font-size: 9px;
-}
-form {
- display: inline-block;
-}
-</style>
-<script>
-window.addEventListener("message", function(e) {
- if (e.data == 'containerMetrics') {
- e.source.postMessage({'width': bubbleContainer.offsetWidth, 'height': bubbleContainer.offsetHeight},
- e.origin);
- } else
- console.log("Unknown postMessage: " + e.data);
-}, false);
-</script>
-</head>
-<body>
-<div id="bubbleContainer">
- {% for bubble in bubbles %}
- <a class="status {{ bubble.state }}" target="_top"
- {% if bubble.status %}
- href="/patch/{{ bubble.attachment_id }}"
- title="{{ bubble.status.date|timesince }} ago"
- {% endif %}
- >
- {{ bubble.name }}
- {% if bubble.queue_position %}
- <span class="queue_position">#{{ bubble.queue_position }}</span>
- {% endif %}
- </a>
- {% endfor %}
-
-{% if show_submit_to_ews %}
- <form name="submit_to_ews" method="POST" action="/submit-to-ews">
- <input type="hidden" name="attachment_id" value="{{ attachment_id }}">
- <input type="hidden" name="next_action" value="return_to_bubbles">
- <input class="status" type="submit" value="Submit for EWS analysis">
- </form>
-{% endif %}
-</div>
-</body>
-</html>
diff --git a/Tools/QueueStatusServer/templates/submittoews.html b/Tools/QueueStatusServer/templates/submittoews.html
deleted file mode 100644
index 25ad2bc70..000000000
--- a/Tools/QueueStatusServer/templates/submittoews.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<form name="submit_to_ews" method="POST">
-Attachment id of patch to submit: <input name="attachment_id"><input type="submit" value="Submit for EWS Processing">
-</form>
diff --git a/Tools/QueueStatusServer/templates/updatestatus.html b/Tools/QueueStatusServer/templates/updatestatus.html
deleted file mode 100644
index 0f98ba4db..000000000
--- a/Tools/QueueStatusServer/templates/updatestatus.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<form name="update_status" enctype="multipart/form-data" method="post">
-Update status for a queue: <input name="queue_name">
- <div>
- Bot Id:
- <input name="bot_id">
- </div>
- <div>
- Active Bug Id:
- <input name="bug_id">
- </div>
- <div>
- Active Patch Id:
- <input name="patch_id">
- </div>
- <div>
- Status Text:<br>
- <textarea name="status" rows="3" cols="60"></textarea>
- </div>
- <div>Results file: <input type="file" name="results_file"></div>
- <div><input type="submit" value="Add Status"></div>
-</form>
diff --git a/Tools/QueueStatusServer/templates/updatesvnrevision.html b/Tools/QueueStatusServer/templates/updatesvnrevision.html
deleted file mode 100644
index 6ea4e7b7d..000000000
--- a/Tools/QueueStatusServer/templates/updatesvnrevision.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<form name="update_svn_revision" method="post">
-Update an SVN revision: <input name="number">
- <div>
- Broken Bot:
- <input name="broken_bot">
- </div>
- <div><input type="submit" value="Update"></div>
-</form>
diff --git a/Tools/QueueStatusServer/templates/updateworkitems.html b/Tools/QueueStatusServer/templates/updateworkitems.html
deleted file mode 100644
index b086fc3c8..000000000
--- a/Tools/QueueStatusServer/templates/updateworkitems.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<form name="update_work_items" enctype="multipart/form-data" method="post">
-Update work items for a queue: <input name="queue_name">
- <div>
- Work Items:
- <input name="work_items">
- </div>
- <div><input type="submit" value="Update Work Items"></div>
-</form>
diff --git a/Tools/Scripts/SpacingHeuristics.pm b/Tools/Scripts/SpacingHeuristics.pm
deleted file mode 100644
index 7de01726a..000000000
--- a/Tools/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/Tools/Scripts/VCSUtils.pm b/Tools/Scripts/VCSUtils.pm
index 305d65bc0..214150d12 100644
--- a/Tools/Scripts/VCSUtils.pm
+++ b/Tools/Scripts/VCSUtils.pm
@@ -1,4 +1,4 @@
-# Copyright (C) 2007, 2008, 2009, 2010, 2011, 2012, 2013 Apple Inc. All rights reserved.
+# Copyright (C) 2007-2013, 2015 Apple Inc. All rights reserved.
# Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
# Copyright (C) 2010, 2011 Research In Motion Limited. All rights reserved.
# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
@@ -12,7 +12,7 @@
# 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
+# 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.
#
@@ -50,7 +50,6 @@ BEGIN {
&callSilently
&canonicalizePath
&changeLogEmailAddress
- &changeLogFileName
&changeLogName
&chdirReturningRelativePath
&decodeGitBinaryChunk
@@ -61,11 +60,14 @@ BEGIN {
&exitStatus
&fixChangeLogPatch
&gitBranch
+ &gitDirectory
+ &gitTreeDirectory
&gitdiff2svndiff
&isGit
&isGitSVN
&isGitBranchBuild
&isGitDirectory
+ &isGitSVNDirectory
&isSVN
&isSVNDirectory
&isSVNVersion16OrNewer
@@ -89,6 +91,7 @@ BEGIN {
&toWindowsLineEndings
&gitCommitForSVNRevision
&listOfChangedFilesBetweenRevisions
+ &unixPath
);
%EXPORT_TAGS = ( );
@EXPORT_OK = ();
@@ -107,6 +110,7 @@ my $svnVersion;
# Project time zone for Cupertino, CA, US
my $changeLogTimeZone = "PST8PDT";
+my $unifiedDiffStartRegEx = qr#^--- ([abc]\/)?([^\r\n]+)#;
my $gitDiffStartRegEx = qr#^diff --git [^\r\n]+#;
my $gitDiffStartWithPrefixRegEx = qr#^diff --git \w/(.+) \w/([^\r\n]+)#; # We suppose that --src-prefix and --dst-prefix don't contain a non-word character (\W) and end with '/'.
my $gitDiffStartWithoutPrefixNoSpaceRegEx = qr#^diff --git (\S+) (\S+)$#;
@@ -125,7 +129,7 @@ my $svnPropertyValueNoNewlineRegEx = qr#\ No newline at end of property#;
sub exitStatus($)
{
my ($returnvalue) = @_;
- if ($^O eq "MSWin32") {
+ if (isWindows()) {
return $returnvalue >> 8;
}
if (!WIFEXITED($returnvalue)) {
@@ -224,15 +228,27 @@ sub isGit()
return $isGit;
}
-sub isGitSVN()
+sub isGitSVNDirectory($)
{
- return $isGitSVN if defined $isGitSVN;
+ my ($directory) = @_;
+
+ my $savedWorkingDirectory = Cwd::getcwd();
+ chdir($directory);
# There doesn't seem to be an officially documented way to determine
# if you're in a git-svn checkout. The best suggestions seen so far
# all use something like the following:
my $output = `git config --get svn-remote.svn.fetch 2>& 1`;
- $isGitSVN = $output ne '';
+ $isGitSVN = exitStatus($?) == 0 && $output ne "";
+ chdir($savedWorkingDirectory);
+ return $isGitSVN;
+}
+
+sub isGitSVN()
+{
+ return $isGitSVN if defined $isGitSVN;
+
+ $isGitSVN = isGitSVNDirectory(".");
return $isGitSVN;
}
@@ -242,6 +258,12 @@ sub gitDirectory()
return $result;
}
+sub gitTreeDirectory()
+{
+ chomp(my $result = `git rev-parse --show-toplevel`);
+ return $result;
+}
+
sub gitBisectStartBranch()
{
my $bisectStartFile = File::Spec->catfile(gitDirectory(), "BISECT_START");
@@ -314,7 +336,7 @@ sub svnVersion()
sub isSVNVersion16OrNewer()
{
my $version = svnVersion();
- return eval "v$version" ge v1.6;
+ return "v$version" ge v1.6;
}
sub chdirReturningRelativePath($)
@@ -375,7 +397,9 @@ sub determineSVNRoot()
sub determineVCSRoot()
{
if (isGit()) {
- return dirname(gitDirectory());
+ # This is the working tree root. If WebKit is a submodule,
+ # then the relevant metadata directory is somewhere else.
+ return gitTreeDirectory();
}
if (!isSVN()) {
@@ -460,6 +484,17 @@ sub makeFilePathRelative($)
sub normalizePath($)
{
my ($path) = @_;
+ if (isWindows()) {
+ $path =~ s/\//\\/g;
+ } else {
+ $path =~ s/\\/\//g;
+ }
+ return $path;
+}
+
+sub unixPath($)
+{
+ my ($path) = @_;
$path =~ s/\\/\//g;
return $path;
}
@@ -908,6 +943,103 @@ sub parseSvnDiffHeader($$)
return (\%header, $_);
}
+# Parse the next Unified diff header from the given file handle, and advance
+# the handle so the last line read is the first line after the header.
+#
+# This subroutine dies if given leading junk.
+#
+# Args:
+# $fileHandle: advanced so the last line read from the handle is the first
+# line of the header to parse. This should be a line
+# beginning with "Index:".
+# $line: the line last read from $fileHandle
+#
+# Returns ($headerHashRef, $lastReadLine):
+# $headerHashRef: a hash reference representing a diff header, as follows--
+# indexPath: the path of the target file, which is the path found in
+# the "Index:" line.
+# isNew: the value 1 if the diff is for a new file.
+# isDeletion: the value 1 if the diff is a file deletion.
+# svnConvertedText: the header text converted to a header with the paths
+# in some lines corrected.
+# $lastReadLine: the line last read from $fileHandle.
+sub parseUnifiedDiffHeader($$)
+{
+ my ($fileHandle, $line) = @_;
+
+ $_ = $line;
+
+ my $currentPosition = tell($fileHandle);
+ my $indexLine;
+ my $indexPath;
+ if (/$unifiedDiffStartRegEx/) {
+ # Use $POSTMATCH to preserve the end-of-line character.
+ my $eol = $POSTMATCH;
+
+ $indexPath = $2;
+
+ # In the case of an addition, we look at the next line for the index path
+ if ($indexPath eq "/dev/null") {
+ $_ = <$fileHandle>;
+ if (/^\+\+\+ ([abc]\/)?([^\t\n\r]+)/) {
+ $indexPath = $2;
+ } else {
+ die "Unrecognized unified diff format.";
+ }
+ $_ = $line;
+ }
+
+ $indexLine = "Index: $indexPath$eol"; # Convert to SVN format.
+ } else {
+ die("Could not parse leading \"---\" line: \"$line\".");
+ }
+
+ seek($fileHandle, $currentPosition, 0);
+
+ my $isDeletion;
+ my $isHeaderEnding;
+ my $isNew;
+ my $svnConvertedText = $indexLine;
+ while (1) {
+ # Temporarily strip off any end-of-line characters to simplify
+ # regex matching below.
+ s/([\n\r]+)$//;
+ my $eol = $1;
+
+ if (/^--- \/dev\/null/) {
+ $isNew = 1;
+ } elsif (/^\+\+\+ \/dev\/null/) {
+ $isDeletion = 1;
+ }
+
+ if (/^(---|\+\+\+) ([abc]\/)?([^\t\n\r]+)/) {
+ if ($1 eq "---") {
+ my $prependText = "";
+ $prependText = "new file mode 100644\n" if $isNew;
+ $_ = "${prependText}index 0000000..0000000\n$1 $3";
+ } else {
+ $_ = "$1 $3";
+ $isHeaderEnding = 1;
+ }
+ }
+
+ $svnConvertedText .= "$_$eol"; # Also restore end-of-line characters.
+
+ $currentPosition = tell($fileHandle);
+ $_ = <$fileHandle>; # Not defined if end-of-file reached.
+ last if (!defined($_) || /$unifiedDiffStartRegEx/ || $isHeaderEnding);
+ }
+
+ my %header;
+
+ $header{indexPath} = $indexPath;
+ $header{isDeletion} = $isDeletion if $isDeletion;
+ $header{isNew} = $isNew if $isNew;
+ $header{svnConvertedText} = $svnConvertedText;
+
+ return (\%header, $_);
+}
+
# Parse the next diff header from the given file handle, and advance
# the handle so the last line read is the first line after the header.
#
@@ -946,6 +1078,7 @@ sub parseDiffHeader($$)
my $header; # This is a hash ref.
my $isGit;
my $isSvn;
+ my $isUnified;
my $lastReadLine;
if ($line =~ $svnDiffStartRegEx) {
@@ -954,12 +1087,16 @@ sub parseDiffHeader($$)
} elsif ($line =~ $gitDiffStartRegEx) {
$isGit = 1;
($header, $lastReadLine) = parseGitDiffHeader($fileHandle, $line);
+ } elsif ($line =~ $unifiedDiffStartRegEx) {
+ $isUnified = 1;
+ ($header, $lastReadLine) = parseUnifiedDiffHeader($fileHandle, $line);
} else {
die("First line of diff does not begin with \"Index:\" or \"diff --git\": \"$line\"");
}
$header->{isGit} = $isGit if $isGit;
$header->{isSvn} = $isSvn if $isSvn;
+ $header->{isUnified} = $isUnified if $isUnified;
return ($header, $lastReadLine);
}
@@ -1044,6 +1181,10 @@ sub parseDiff($$;$)
# all diffs in the patch are formatted the same (SVN or Git).
$headerStartRegEx = $gitDiffStartRegEx;
}
+
+ if (!$headerHashRef && ($line =~ $unifiedDiffStartRegEx)) {
+ $headerStartRegEx = $unifiedDiffStartRegEx;
+ }
if ($line =~ $svnPropertiesStartRegEx) {
my $propertyPath = $1;
@@ -1880,7 +2021,7 @@ sub mergeChangeLogs($$$)
sub gitConfig($)
{
- return unless $isGit;
+ return unless isGit();
my ($config) = @_;
@@ -1889,23 +2030,6 @@ sub gitConfig($)
return $result;
}
-sub changeLogSuffix()
-{
- my $rootPath = determineVCSRoot();
- my $changeLogSuffixFile = File::Spec->catfile($rootPath, ".changeLogSuffix");
- return "" if ! -e $changeLogSuffixFile;
- open FILE, $changeLogSuffixFile or die "Could not open $changeLogSuffixFile: $!";
- my $changeLogSuffix = <FILE>;
- chomp $changeLogSuffix;
- close FILE;
- return $changeLogSuffix;
-}
-
-sub changeLogFileName()
-{
- return "ChangeLog" . changeLogSuffix()
-}
-
sub changeLogNameError($)
{
my ($message) = @_;
@@ -1919,7 +2043,10 @@ sub changeLogNameError($)
sub changeLogName()
{
- my $name = $ENV{CHANGE_LOG_NAME} || $ENV{REAL_NAME} || gitConfig("user.name") || (split /\s*,\s*/, (getpwuid $<)[6])[0];
+ my $name = $ENV{CHANGE_LOG_NAME} || $ENV{REAL_NAME} || gitConfig("user.name");
+ if (not $name and !isWindows()) {
+ $name = (split /\s*,\s*/, (getpwuid $<)[6])[0];
+ }
changeLogNameError("Failed to determine ChangeLog name.") unless $name;
# getpwuid seems to always succeed on windows, returning the username instead of the full name. This check will catch that case.
@@ -2020,8 +2147,8 @@ sub decodeGitBinaryPatch($$)
# Then, content of the chunk comes. To decode the content, we
# need decode it with base85 first, and then zlib.
my $gitPatchRegExp = '(literal|delta) ([0-9]+)\n([A-Za-z0-9!#$%&()*+-;<=>?@^_`{|}~\\n]*?)\n\n';
- if ($contents !~ m"\nGIT binary patch\n$gitPatchRegExp$gitPatchRegExp\Z") {
- die "$fullPath: unknown git binary patch format"
+ if ($contents !~ m"\nGIT binary patch\n$gitPatchRegExp$gitPatchRegExp(\Z|-- \n)") {
+ return ();
}
my $binaryChunkType = $1;
diff --git a/Tools/Scripts/add-include b/Tools/Scripts/add-include
deleted file mode 100755
index d0525eb85..000000000
--- a/Tools/Scripts/add-include
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright 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.
-
-# Helper script to add includes to source files.
-
-use strict;
-
-my $headerPattern = '[\"<][A-Za-z][A-Za-z0-9_/]+(\.h)?[\">]'; # " Make Xcode formatter happy.
-
-my $headerToAdd = shift @ARGV or die;
-$headerToAdd =~ /^([A-Za-z][A-Za-z0-9]+)\.h$/ or die "Header to add must be a .h file: $headerToAdd.\n";
-
-sub includesParagraph;
-
-FILE: for my $filename (@ARGV) {
- unless ($filename =~ /(\w+)\.cpp$/) { print STDERR "Command line args must be .cpp files: $filename.\n"; next FILE; }
-
- my $base = $1;
-
- my $sawConfig = 0;
- my $sawSelfInclude = 0;
-
- my $pastIncludes = 0;
- my %includes;
-
- my $beforeIncludes = "";
- my $afterIncludes = "";
-
- my $currentCondition = "";
-
- my $entireFileCondition = "";
-
- unless (open INPUT, "<", $filename) { print STDERR "File does not exist: $filename\n"; next FILE; }
- while (my $line = <INPUT>) {
- if ($line =~ /^\s*#(include|import)\s*($headerPattern)\s*\n/) {
- my $include = $2;
- if ($pastIncludes) { print STDERR "Saw more includes after include section in $filename, line $.\n"; next FILE; }
- if ($include eq "\"config.h\"") {
- $sawConfig = 1;
- } else {
- unless ($sawConfig) { print STDERR "First include must be config.h in $filename, line $.\n"; next FILE; }
- if ($include eq "\"$base.h\"") {
- $sawSelfInclude = 1;
- } else {
- unless ($sawSelfInclude) { print STDERR "Second include must be $base.h in $filename, line $.\n"; next FILE; }
- $includes{$currentCondition}{$include} = 1;
- }
- }
- } else {
- if ($sawConfig && !$pastIncludes) {
- if ($line =~ /^\s*#\s*if\s+(.+?)\s*$/) {
- my $condition = $1;
- if (!$sawSelfInclude) {
- $entireFileCondition = $1;
- next;
- }
- unless ($currentCondition eq "") { print STDERR "Nested #if in include section in $filename, line $.\n"; next FILE; }
- $currentCondition = $condition;
- next;
- }
- if ($line =~ /^\s*#\s*endif\s*$/) {
- unless ($currentCondition ne "") { print STDERR "Extra #endif in include section in $filename, line $.\n"; next FILE; }
- $currentCondition = "";
- next;
- }
- }
- if (!$sawConfig) {
- $beforeIncludes .= $line;
- } else {
- $pastIncludes = 1 if $line !~ /^\s*$/;
- if ($pastIncludes) {
- unless ($currentCondition eq "") { print STDERR "Unterminated #if in include section in $filename, line $.\n"; next FILE; }
- $afterIncludes .= $line;
- }
- }
- }
- }
- close INPUT or die;
-
- $includes{""}{"\"$headerToAdd\""} = 1;
-
- $beforeIncludes =~ s/\n+$//;
- $afterIncludes =~ s/^\n+//;
-
- my $contents = $beforeIncludes;
- $contents .= "\n\n#include \"config.h\"\n";
- $contents .= "\n#if $entireFileCondition\n" if $entireFileCondition ne "";
- $contents .= "#include \"$base.h\"\n\n";
- for my $condition (sort keys %includes) {
- $contents .= "#if $condition\n" unless $condition eq "";
- $contents .= includesParagraph($includes{$condition});
- $contents .= "#endif\n" unless $condition eq "";
- $contents .= "\n";
- }
- $contents .= $afterIncludes;
-
- unless (open OUTPUT, ">", $filename) { print STDERR "Could not open file for writing: $filename\n"; next FILE; };
- print OUTPUT $contents;
- close OUTPUT or die;
-}
-
-sub includesParagraph()
-{
- my ($includes) = @_;
-
- my $paragraph = "";
-
- for my $include (sort keys %{$includes}) {
- $paragraph .= "#include $include\n";
- }
-
- return $paragraph;
-}
diff --git a/Tools/Scripts/bencher b/Tools/Scripts/bencher
deleted file mode 100755
index 0b44da14a..000000000
--- a/Tools/Scripts/bencher
+++ /dev/null
@@ -1,2098 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2011 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. 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 INC. 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.
-
-require 'rubygems'
-
-require 'getoptlong'
-require 'pathname'
-require 'tempfile'
-require 'socket'
-
-begin
- require 'json'
-rescue LoadError => e
- $stderr.puts "It does not appear that you have the 'json' package installed. Try running 'sudo gem install json'."
- exit 1
-end
-
-# Configuration
-
-CONFIGURATION_FLNM = ENV["HOME"]+"/.bencher"
-
-unless FileTest.exist? CONFIGURATION_FLNM
- $stderr.puts "Error: no configuration file at ~/.bencher."
- $stderr.puts "This file should contain paths to SunSpider, V8, and Kraken, as well as a"
- $stderr.puts "temporary directory that bencher can use for its remote mode. It should be"
- $stderr.puts "formatted in JSON. For example:"
- $stderr.puts "{"
- $stderr.puts " \"sunSpiderPath\": \"/Volumes/Data/pizlo/OpenSource/PerformanceTests/SunSpider/tests/sunspider-1.0\","
- $stderr.puts " \"v8Path\": \"/Volumes/Data/pizlo/OpenSource/PerformanceTests/SunSpider/tests/v8-v6\","
- $stderr.puts " \"krakenPath\": \"/Volumes/Data/pizlo/kraken/kraken-e119421cb325/tests/kraken-1.1\","
- $stderr.puts " \"tempPath\": \"/Volumes/Data/pizlo/bencher/temp\""
- $stderr.puts "}"
- exit 1
-end
-
-CONFIGURATION = JSON.parse(File::read(CONFIGURATION_FLNM))
-
-SUNSPIDER_PATH = CONFIGURATION["sunSpiderPath"]
-V8_PATH = CONFIGURATION["v8Path"]
-KRAKEN_PATH = CONFIGURATION["krakenPath"]
-TEMP_PATH = CONFIGURATION["tempPath"]
-BENCH_DATA_PATH = TEMP_PATH + "/benchdata"
-
-IBR_LOOKUP=[0.00615583, 0.0975, 0.22852, 0.341628, 0.430741, 0.500526, 0.555933,
- 0.600706, 0.637513, 0.668244, 0.694254, 0.716537, 0.735827, 0.752684,
- 0.767535, 0.780716, 0.792492, 0.803074, 0.812634, 0.821313, 0.829227,
- 0.836472, 0.843129, 0.849267, 0.854943, 0.860209, 0.865107, 0.869674,
- 0.873942, 0.877941, 0.881693, 0.885223, 0.888548, 0.891686, 0.894652,
- 0.897461, 0.900124, 0.902652, 0.905056, 0.907343, 0.909524, 0.911604,
- 0.91359, 0.91549, 0.917308, 0.919049, 0.920718, 0.92232, 0.923859, 0.925338,
- 0.926761, 0.92813, 0.929449, 0.930721, 0.931948, 0.933132, 0.934275, 0.93538,
- 0.936449, 0.937483, 0.938483, 0.939452, 0.940392, 0.941302, 0.942185,
- 0.943042, 0.943874, 0.944682, 0.945467, 0.94623, 0.946972, 0.947694,
- 0.948396, 0.94908, 0.949746, 0.950395, 0.951027, 0.951643, 0.952244,
- 0.952831, 0.953403, 0.953961, 0.954506, 0.955039, 0.955559, 0.956067,
- 0.956563, 0.957049, 0.957524, 0.957988, 0.958443, 0.958887, 0.959323,
- 0.959749, 0.960166, 0.960575, 0.960975, 0.961368, 0.961752, 0.962129,
- 0.962499, 0.962861, 0.963217, 0.963566, 0.963908, 0.964244, 0.964574,
- 0.964897, 0.965215, 0.965527, 0.965834, 0.966135, 0.966431, 0.966722,
- 0.967007, 0.967288, 0.967564, 0.967836, 0.968103, 0.968366, 0.968624,
- 0.968878, 0.969128, 0.969374, 0.969617, 0.969855, 0.97009, 0.970321,
- 0.970548, 0.970772, 0.970993, 0.97121, 0.971425, 0.971636, 0.971843,
- 0.972048, 0.97225, 0.972449, 0.972645, 0.972839, 0.973029, 0.973217,
- 0.973403, 0.973586, 0.973766, 0.973944, 0.97412, 0.974293, 0.974464,
- 0.974632, 0.974799, 0.974963, 0.975125, 0.975285, 0.975443, 0.975599,
- 0.975753, 0.975905, 0.976055, 0.976204, 0.97635, 0.976495, 0.976638,
- 0.976779, 0.976918, 0.977056, 0.977193, 0.977327, 0.97746, 0.977592,
- 0.977722, 0.97785, 0.977977, 0.978103, 0.978227, 0.978349, 0.978471,
- 0.978591, 0.978709, 0.978827, 0.978943, 0.979058, 0.979171, 0.979283,
- 0.979395, 0.979504, 0.979613, 0.979721, 0.979827, 0.979933, 0.980037,
- 0.98014, 0.980242, 0.980343, 0.980443, 0.980543, 0.980641, 0.980738,
- 0.980834, 0.980929, 0.981023, 0.981116, 0.981209, 0.9813, 0.981391, 0.981481,
- 0.981569, 0.981657, 0.981745, 0.981831, 0.981916, 0.982001, 0.982085,
- 0.982168, 0.982251, 0.982332, 0.982413, 0.982493, 0.982573, 0.982651,
- 0.982729, 0.982807, 0.982883, 0.982959, 0.983034, 0.983109, 0.983183,
- 0.983256, 0.983329, 0.983401, 0.983472, 0.983543, 0.983613, 0.983683,
- 0.983752, 0.98382, 0.983888, 0.983956, 0.984022, 0.984089, 0.984154,
- 0.984219, 0.984284, 0.984348, 0.984411, 0.984474, 0.984537, 0.984599,
- 0.98466, 0.984721, 0.984782, 0.984842, 0.984902, 0.984961, 0.985019,
- 0.985077, 0.985135, 0.985193, 0.985249, 0.985306, 0.985362, 0.985417,
- 0.985472, 0.985527, 0.985582, 0.985635, 0.985689, 0.985742, 0.985795,
- 0.985847, 0.985899, 0.985951, 0.986002, 0.986053, 0.986103, 0.986153,
- 0.986203, 0.986252, 0.986301, 0.98635, 0.986398, 0.986446, 0.986494,
- 0.986541, 0.986588, 0.986635, 0.986681, 0.986727, 0.986773, 0.986818,
- 0.986863, 0.986908, 0.986953, 0.986997, 0.987041, 0.987084, 0.987128,
- 0.987171, 0.987213, 0.987256, 0.987298, 0.98734, 0.987381, 0.987423,
- 0.987464, 0.987504, 0.987545, 0.987585, 0.987625, 0.987665, 0.987704,
- 0.987744, 0.987783, 0.987821, 0.98786, 0.987898, 0.987936, 0.987974,
- 0.988011, 0.988049, 0.988086, 0.988123, 0.988159, 0.988196, 0.988232,
- 0.988268, 0.988303, 0.988339, 0.988374, 0.988409, 0.988444, 0.988479,
- 0.988513, 0.988547, 0.988582, 0.988615, 0.988649, 0.988682, 0.988716,
- 0.988749, 0.988782, 0.988814, 0.988847, 0.988879, 0.988911, 0.988943,
- 0.988975, 0.989006, 0.989038, 0.989069, 0.9891, 0.989131, 0.989161, 0.989192,
- 0.989222, 0.989252, 0.989282, 0.989312, 0.989342, 0.989371, 0.989401,
- 0.98943, 0.989459, 0.989488, 0.989516, 0.989545, 0.989573, 0.989602, 0.98963,
- 0.989658, 0.989685, 0.989713, 0.98974, 0.989768, 0.989795, 0.989822,
- 0.989849, 0.989876, 0.989902, 0.989929, 0.989955, 0.989981, 0.990007,
- 0.990033, 0.990059, 0.990085, 0.99011, 0.990136, 0.990161, 0.990186,
- 0.990211, 0.990236, 0.990261, 0.990285, 0.99031, 0.990334, 0.990358,
- 0.990383, 0.990407, 0.99043, 0.990454, 0.990478, 0.990501, 0.990525,
- 0.990548, 0.990571, 0.990594, 0.990617, 0.99064, 0.990663, 0.990686,
- 0.990708, 0.990731, 0.990753, 0.990775, 0.990797, 0.990819, 0.990841,
- 0.990863, 0.990885, 0.990906, 0.990928, 0.990949, 0.99097, 0.990991,
- 0.991013, 0.991034, 0.991054, 0.991075, 0.991096, 0.991116, 0.991137,
- 0.991157, 0.991178, 0.991198, 0.991218, 0.991238, 0.991258, 0.991278,
- 0.991298, 0.991317, 0.991337, 0.991356, 0.991376, 0.991395, 0.991414,
- 0.991433, 0.991452, 0.991471, 0.99149, 0.991509, 0.991528, 0.991547,
- 0.991565, 0.991584, 0.991602, 0.99162, 0.991639, 0.991657, 0.991675,
- 0.991693, 0.991711, 0.991729, 0.991746, 0.991764, 0.991782, 0.991799,
- 0.991817, 0.991834, 0.991851, 0.991869, 0.991886, 0.991903, 0.99192,
- 0.991937, 0.991954, 0.991971, 0.991987, 0.992004, 0.992021, 0.992037,
- 0.992054, 0.99207, 0.992086, 0.992103, 0.992119, 0.992135, 0.992151,
- 0.992167, 0.992183, 0.992199, 0.992215, 0.99223, 0.992246, 0.992262,
- 0.992277, 0.992293, 0.992308, 0.992324, 0.992339, 0.992354, 0.992369,
- 0.992384, 0.9924, 0.992415, 0.992429, 0.992444, 0.992459, 0.992474, 0.992489,
- 0.992503, 0.992518, 0.992533, 0.992547, 0.992561, 0.992576, 0.99259,
- 0.992604, 0.992619, 0.992633, 0.992647, 0.992661, 0.992675, 0.992689,
- 0.992703, 0.992717, 0.99273, 0.992744, 0.992758, 0.992771, 0.992785,
- 0.992798, 0.992812, 0.992825, 0.992839, 0.992852, 0.992865, 0.992879,
- 0.992892, 0.992905, 0.992918, 0.992931, 0.992944, 0.992957, 0.99297,
- 0.992983, 0.992995, 0.993008, 0.993021, 0.993034, 0.993046, 0.993059,
- 0.993071, 0.993084, 0.993096, 0.993109, 0.993121, 0.993133, 0.993145,
- 0.993158, 0.99317, 0.993182, 0.993194, 0.993206, 0.993218, 0.99323, 0.993242,
- 0.993254, 0.993266, 0.993277, 0.993289, 0.993301, 0.993312, 0.993324,
- 0.993336, 0.993347, 0.993359, 0.99337, 0.993382, 0.993393, 0.993404,
- 0.993416, 0.993427, 0.993438, 0.993449, 0.99346, 0.993472, 0.993483,
- 0.993494, 0.993505, 0.993516, 0.993527, 0.993538, 0.993548, 0.993559,
- 0.99357, 0.993581, 0.993591, 0.993602, 0.993613, 0.993623, 0.993634,
- 0.993644, 0.993655, 0.993665, 0.993676, 0.993686, 0.993697, 0.993707,
- 0.993717, 0.993727, 0.993738, 0.993748, 0.993758, 0.993768, 0.993778,
- 0.993788, 0.993798, 0.993808, 0.993818, 0.993828, 0.993838, 0.993848,
- 0.993858, 0.993868, 0.993877, 0.993887, 0.993897, 0.993907, 0.993916,
- 0.993926, 0.993935, 0.993945, 0.993954, 0.993964, 0.993973, 0.993983,
- 0.993992, 0.994002, 0.994011, 0.99402, 0.99403, 0.994039, 0.994048, 0.994057,
- 0.994067, 0.994076, 0.994085, 0.994094, 0.994103, 0.994112, 0.994121,
- 0.99413, 0.994139, 0.994148, 0.994157, 0.994166, 0.994175, 0.994183,
- 0.994192, 0.994201, 0.99421, 0.994218, 0.994227, 0.994236, 0.994244,
- 0.994253, 0.994262, 0.99427, 0.994279, 0.994287, 0.994296, 0.994304,
- 0.994313, 0.994321, 0.994329, 0.994338, 0.994346, 0.994354, 0.994363,
- 0.994371, 0.994379, 0.994387, 0.994395, 0.994404, 0.994412, 0.99442,
- 0.994428, 0.994436, 0.994444, 0.994452, 0.99446, 0.994468, 0.994476,
- 0.994484, 0.994492, 0.9945, 0.994508, 0.994516, 0.994523, 0.994531, 0.994539,
- 0.994547, 0.994554, 0.994562, 0.99457, 0.994577, 0.994585, 0.994593, 0.9946,
- 0.994608, 0.994615, 0.994623, 0.994631, 0.994638, 0.994645, 0.994653,
- 0.99466, 0.994668, 0.994675, 0.994683, 0.99469, 0.994697, 0.994705, 0.994712,
- 0.994719, 0.994726, 0.994734, 0.994741, 0.994748, 0.994755, 0.994762,
- 0.994769, 0.994777, 0.994784, 0.994791, 0.994798, 0.994805, 0.994812,
- 0.994819, 0.994826, 0.994833, 0.99484, 0.994847, 0.994854, 0.99486, 0.994867,
- 0.994874, 0.994881, 0.994888, 0.994895, 0.994901, 0.994908, 0.994915,
- 0.994922, 0.994928, 0.994935, 0.994942, 0.994948, 0.994955, 0.994962,
- 0.994968, 0.994975, 0.994981, 0.994988, 0.994994, 0.995001, 0.995007,
- 0.995014, 0.99502, 0.995027, 0.995033, 0.99504, 0.995046, 0.995052, 0.995059,
- 0.995065, 0.995071, 0.995078, 0.995084, 0.99509, 0.995097, 0.995103,
- 0.995109, 0.995115, 0.995121, 0.995128, 0.995134, 0.99514, 0.995146,
- 0.995152, 0.995158, 0.995164, 0.995171, 0.995177, 0.995183, 0.995189,
- 0.995195, 0.995201, 0.995207, 0.995213, 0.995219, 0.995225, 0.995231,
- 0.995236, 0.995242, 0.995248, 0.995254, 0.99526, 0.995266, 0.995272,
- 0.995277, 0.995283, 0.995289, 0.995295, 0.995301, 0.995306, 0.995312,
- 0.995318, 0.995323, 0.995329, 0.995335, 0.99534, 0.995346, 0.995352,
- 0.995357, 0.995363, 0.995369, 0.995374, 0.99538, 0.995385, 0.995391,
- 0.995396, 0.995402, 0.995407, 0.995413, 0.995418, 0.995424, 0.995429,
- 0.995435, 0.99544, 0.995445, 0.995451, 0.995456, 0.995462, 0.995467,
- 0.995472, 0.995478, 0.995483, 0.995488, 0.995493, 0.995499, 0.995504,
- 0.995509, 0.995515, 0.99552, 0.995525, 0.99553, 0.995535, 0.995541, 0.995546,
- 0.995551, 0.995556, 0.995561, 0.995566, 0.995571, 0.995577, 0.995582,
- 0.995587, 0.995592, 0.995597, 0.995602, 0.995607, 0.995612, 0.995617,
- 0.995622, 0.995627, 0.995632, 0.995637, 0.995642, 0.995647, 0.995652,
- 0.995657, 0.995661, 0.995666, 0.995671, 0.995676, 0.995681, 0.995686,
- 0.995691, 0.995695, 0.9957, 0.995705, 0.99571, 0.995715, 0.995719, 0.995724,
- 0.995729, 0.995734, 0.995738, 0.995743, 0.995748, 0.995753, 0.995757,
- 0.995762, 0.995767, 0.995771, 0.995776, 0.995781, 0.995785, 0.99579,
- 0.995794, 0.995799, 0.995804, 0.995808, 0.995813, 0.995817, 0.995822,
- 0.995826, 0.995831, 0.995835, 0.99584, 0.995844, 0.995849, 0.995853,
- 0.995858, 0.995862, 0.995867, 0.995871, 0.995876, 0.99588, 0.995885,
- 0.995889, 0.995893, 0.995898, 0.995902, 0.995906, 0.995911, 0.995915,
- 0.99592, 0.995924, 0.995928, 0.995932, 0.995937, 0.995941, 0.995945, 0.99595,
- 0.995954, 0.995958, 0.995962, 0.995967, 0.995971, 0.995975, 0.995979,
- 0.995984, 0.995988, 0.995992, 0.995996, 0.996, 0.996004, 0.996009, 0.996013,
- 0.996017, 0.996021, 0.996025, 0.996029, 0.996033, 0.996037, 0.996041,
- 0.996046, 0.99605, 0.996054, 0.996058, 0.996062, 0.996066, 0.99607, 0.996074,
- 0.996078, 0.996082, 0.996086, 0.99609, 0.996094, 0.996098, 0.996102,
- 0.996106, 0.99611, 0.996114, 0.996117, 0.996121, 0.996125, 0.996129,
- 0.996133, 0.996137, 0.996141, 0.996145, 0.996149, 0.996152, 0.996156,
- 0.99616, 0.996164]
-
-# Run-time configuration parameters (can be set with command-line options)
-
-$rerun=1
-$inner=3
-$warmup=1
-$outer=4
-$includeSunSpider=true
-$includeV8=true
-$includeKraken=true
-$measureGC=false
-$benchmarkPattern=nil
-$verbosity=0
-$timeMode=:preciseTime
-$forceVMKind=nil
-$brief=false
-$silent=false
-$remoteHosts=[]
-$alsoLocal=false
-$sshOptions=[]
-$vms = []
-$needToCopyVMs = false
-$dontCopyVMs = false
-
-$prepare = true
-$run = true
-$analyze = []
-
-# Helpful functions and classes
-
-def smallUsage
- puts "Use the --help option to get basic usage information."
- exit 1
-end
-
-def usage
- puts "bencher [options] <vm1> [<vm2> ...]"
- puts
- puts "Runs one or more JavaScript runtimes against SunSpider, V8, and/or Kraken"
- puts "benchmarks, and reports detailed statistics. What makes bencher special is"
- puts "that each benchmark/VM configuration is run in a single VM invocation, and"
- puts "the invocations are run in random order. This minimizes systematics due to"
- puts "one benchmark polluting the running time of another. The fine-grained"
- puts "interleaving of VM invocations further minimizes systematics due to changes in"
- puts "the performance or behavior of your machine."
- puts
- puts "Bencher is highly configurable. You can compare as many VMs as you like. You"
- puts "can change the amount of warm-up iterations, number of iterations executed per"
- puts "VM invocation, and the number of VM invocations per benchmark. By default,"
- puts "SunSpider, VM, and Kraken are all run; but you can run any combination of these"
- puts "suites."
- puts
- puts "The <vm> should be either a path to a JavaScript runtime executable (such as"
- puts "jsc), or a string of the form <name>:<path>, where the <path> is the path to"
- puts "the executable and <name> is the name that you would like to give the"
- puts "configuration for the purposeof reporting. If no name is given, a generic name"
- puts "of the form Conf#<n> will be ascribed to the configuration automatically."
- puts
- puts "Options:"
- puts "--rerun <n> Set the number of iterations of the benchmark that"
- puts " contribute to the measured run time. Default is #{$rerun}."
- puts "--inner <n> Set the number of inner (per-runtime-invocation)"
- puts " iterations. Default is #{$inner}."
- puts "--outer <n> Set the number of runtime invocations for each benchmark."
- puts " Default is #{$outer}."
- puts "--warmup <n> Set the number of warm-up runs per invocation. Default"
- puts " is #{$warmup}."
- puts "--timing-mode Set the way that bencher measures time. Possible values"
- puts " are 'preciseTime' and 'date'. Default is 'preciseTime'."
- puts "--force-vm-kind Turn off auto-detection of VM kind, and assume that it is"
- puts " the one specified. Valid arguments are 'jsc' or"
- puts " 'DumpRenderTree'."
- puts "--force-vm-copy Force VM builds to be copied to bencher's working directory."
- puts " This may reduce pathologies resulting from path names."
- puts "--dont-copy-vms Don't copy VMs even when doing a remote benchmarking run;"
- puts " instead assume that they are already there."
- puts "--v8-only Only run V8."
- puts "--sunspider-only Only run SunSpider."
- puts "--kraken-only Only run Kraken."
- puts "--exclude-v8 Exclude V8 (only run SunSpider and Kraken)."
- puts "--exclude-sunspider Exclude SunSpider (only run V8 and Kraken)."
- puts "--exclude-kraken Exclude Kraken (only run SunSpider and V8)."
- puts "--benchmarks Only run benchmarks matching the given regular expression."
- puts "--measure-gc Turn off manual calls to gc(), so that GC time is measured."
- puts " Works best with large values of --inner. You can also say"
- puts " --measure-gc <conf>, which turns this on for one"
- puts " configuration only."
- puts "--verbose or -v Print more stuff."
- puts "--brief Print only the final result for each VM."
- puts "--silent Don't print progress. This might slightly reduce some"
- puts " performance perturbation."
- puts "--remote <sshhosts> Performance performance measurements remotely, on the given"
- puts " SSH host(s). Easiest way to use this is to specify the SSH"
- puts " user@host string. However, you can also supply a comma-"
- puts " separated list of SSH hosts. Alternatively, you can use this"
- puts " option multiple times to specify multiple hosts. This"
- puts " automatically copies the WebKit release builds of the VMs"
- puts " you specified to all of the hosts."
- puts "--ssh-options Pass additional options to SSH."
- puts "--local Also do a local benchmark run even when doing --remote."
- puts "--prepare-only Only prepare the bencher runscript (a shell script that"
- puts " invokes the VMs to run benchmarks) but don't run it."
- puts "--analyze Only read the output of the runscript but don't do anything"
- puts " else. This requires passing the same arguments to bencher"
- puts " that you passed when running --prepare-only."
- puts "--help or -h Display this message."
- puts
- puts "Example:"
- puts "bencher TipOfTree:/Volumes/Data/pizlo/OpenSource/WebKitBuild/Release/jsc MyChanges:/Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc"
- exit 1
-end
-
-def fail(reason)
- if reason.respond_to? :backtrace
- puts "FAILED: #{reason}"
- puts "Stack trace:"
- puts reason.backtrace.join("\n")
- else
- puts "FAILED: #{reason}"
- end
- smallUsage
-end
-
-def quickFail(r1,r2)
- $stderr.puts "#{$0}: #{r1}"
- puts
- fail(r2)
-end
-
-def intArg(argName,arg,min,max)
- result=arg.to_i
- unless result.to_s == arg
- quickFail("Expected an integer value for #{argName}, but got #{arg}.",
- "Invalid argument for command-line option")
- end
- if min and result<min
- quickFail("Argument for #{argName} cannot be smaller than #{min}.",
- "Invalid argument for command-line option")
- end
- if max and result>max
- quickFail("Argument for #{argName} cannot be greater than #{max}.",
- "Invalid argument for command-line option")
- end
- result
-end
-
-def computeMean(array)
- sum=0.0
- array.each {
- | value |
- sum += value
- }
- sum/array.length
-end
-
-def computeGeometricMean(array)
- mult=1.0
- array.each {
- | value |
- mult*=value
- }
- mult**(1.0/array.length)
-end
-
-def computeHarmonicMean(array)
- 1.0 / computeMean(array.collect{ | value | 1.0 / value })
-end
-
-def computeStdDev(array)
- case array.length
- when 0
- 0.0/0.0
- when 1
- 0.0
- else
- begin
- mean=computeMean(array)
- sum=0.0
- array.each {
- | value |
- sum += (value-mean)**2
- }
- Math.sqrt(sum/(array.length-1))
- rescue
- 0.0/0.0
- end
- end
-end
-
-class Array
- def shuffle!
- size.downto(1) { |n| push delete_at(rand(n)) }
- self
- end
-end
-
-def inverseBetaRegularized(n)
- IBR_LOOKUP[n-1]
-end
-
-def numToStr(num)
- "%.4f"%(num.to_f)
-end
-
-class NoChange
- attr_reader :amountFaster
-
- def initialize(amountFaster)
- @amountFaster = amountFaster
- end
-
- def shortForm
- " "
- end
-
- def longForm
- " might be #{numToStr(@amountFaster)}x faster"
- end
-
- def to_s
- if @amountFaster < 1.01
- ""
- else
- longForm
- end
- end
-end
-
-class Faster
- attr_reader :amountFaster
-
- def initialize(amountFaster)
- @amountFaster = amountFaster
- end
-
- def shortForm
- "^"
- end
-
- def longForm
- "^ definitely #{numToStr(@amountFaster)}x faster"
- end
-
- def to_s
- longForm
- end
-end
-
-class Slower
- attr_reader :amountSlower
-
- def initialize(amountSlower)
- @amountSlower = amountSlower
- end
-
- def shortForm
- "!"
- end
-
- def longForm
- "! definitely #{numToStr(@amountSlower)}x slower"
- end
-
- def to_s
- longForm
- end
-end
-
-class MayBeSlower
- attr_reader :amountSlower
-
- def initialize(amountSlower)
- @amountSlower = amountSlower
- end
-
- def shortForm
- "?"
- end
-
- def longForm
- "? might be #{numToStr(@amountSlower)}x slower"
- end
-
- def to_s
- if @amountSlower < 1.01
- "?"
- else
- longForm
- end
- end
-end
-
-class Stats
- def initialize
- @array = []
- end
-
- def add(value)
- if value.is_a? Stats
- add(value.array)
- elsif value.respond_to? :each
- value.each {
- | v |
- add(v)
- }
- else
- @array << value.to_f
- end
- end
-
- def array
- @array
- end
-
- def sum
- result=0
- @array.each {
- | value |
- result += value
- }
- result
- end
-
- def min
- @array.min
- end
-
- def max
- @array.max
- end
-
- def size
- @array.length
- end
-
- def mean
- computeMean(array)
- end
-
- def arithmeticMean
- mean
- end
-
- def stdDev
- computeStdDev(array)
- end
-
- def stdErr
- stdDev/Math.sqrt(size)
- end
-
- # Computes a 95% Student's t distribution confidence interval
- def confInt
- if size < 2
- 0.0/0.0
- else
- raise if size > 1000
- Math.sqrt(size-1.0)*stdErr*Math.sqrt(-1.0+1.0/inverseBetaRegularized(size-1))
- end
- end
-
- def lower
- mean-confInt
- end
-
- def upper
- mean+confInt
- end
-
- def geometricMean
- computeGeometricMean(array)
- end
-
- def harmonicMean
- computeHarmonicMean(array)
- end
-
- def compareTo(other)
- if upper < other.lower
- Faster.new(other.mean/mean)
- elsif lower > other.upper
- Slower.new(mean/other.mean)
- elsif mean > other.mean
- MayBeSlower.new(mean/other.mean)
- else
- NoChange.new(other.mean/mean)
- end
- end
-
- def to_s
- "size = #{size}, mean = #{mean}, stdDev = #{stdDev}, stdErr = #{stdErr}, confInt = #{confInt}"
- end
-end
-
-def doublePuts(out1,out2,msg)
- out1.puts "#{out2.path}: #{msg}" if $verbosity>=3
- out2.puts msg
-end
-
-class Benchfile < File
- @@counter = 0
-
- attr_reader :filename, :basename
-
- def initialize(name)
- @basename, @filename = Benchfile.uniqueFilename(name)
- super(@filename, "w")
- end
-
- def self.uniqueFilename(name)
- if name.is_a? Array
- basename = name[0] + @@counter.to_s + name[1]
- else
- basename = name + @@counter.to_s
- end
- filename = BENCH_DATA_PATH + "/" + basename
- @@counter += 1
- raise "Benchfile #{filename} already exists" if FileTest.exist?(filename)
- [basename, filename]
- end
-
- def self.create(name)
- file = Benchfile.new(name)
- yield file
- file.close
- file.basename
- end
-end
-
-$dataFiles={}
-def ensureFile(key, filename)
- unless $dataFiles[key]
- $dataFiles[key] = Benchfile.create(key) {
- | outp |
- doublePuts($stderr,outp,IO::read(filename))
- }
- end
- $dataFiles[key]
-end
-
-def emitBenchRunCodeFile(name, plan, benchDataPath, benchPath)
- case plan.vm.vmType
- when :jsc
- Benchfile.create("bencher") {
- | file |
- case $timeMode
- when :preciseTime
- doublePuts($stderr,file,"function __bencher_curTimeMS() {")
- doublePuts($stderr,file," return preciseTime()*1000")
- doublePuts($stderr,file,"}")
- when :date
- doublePuts($stderr,file,"function __bencher_curTimeMS() {")
- doublePuts($stderr,file," return Date.now()")
- doublePuts($stderr,file,"}")
- else
- raise
- end
-
- if benchDataPath
- doublePuts($stderr,file,"load(#{benchDataPath.inspect});")
- doublePuts($stderr,file,"gc();")
- doublePuts($stderr,file,"for (var __bencher_index = 0; __bencher_index < #{$warmup+$inner}; ++__bencher_index) {")
- doublePuts($stderr,file," before = __bencher_curTimeMS();")
- $rerun.times {
- doublePuts($stderr,file," load(#{benchPath.inspect});")
- }
- doublePuts($stderr,file," after = __bencher_curTimeMS();")
- doublePuts($stderr,file," if (__bencher_index >= #{$warmup}) print(\"#{name}: #{plan.vm}: #{plan.iteration}: \" + (__bencher_index - #{$warmup}) + \": Time: \"+(after-before));");
- doublePuts($stderr,file," gc();") unless plan.vm.shouldMeasureGC
- doublePuts($stderr,file,"}")
- else
- doublePuts($stderr,file,"function __bencher_run(__bencher_what) {")
- doublePuts($stderr,file," var __bencher_before = __bencher_curTimeMS();")
- $rerun.times {
- doublePuts($stderr,file," run(__bencher_what);")
- }
- doublePuts($stderr,file," var __bencher_after = __bencher_curTimeMS();")
- doublePuts($stderr,file," return __bencher_after - __bencher_before;")
- doublePuts($stderr,file,"}")
- $warmup.times {
- doublePuts($stderr,file,"__bencher_run(#{benchPath.inspect})")
- doublePuts($stderr,file,"gc();") unless plan.vm.shouldMeasureGC
- }
- $inner.times {
- | innerIndex |
- doublePuts($stderr,file,"print(\"#{name}: #{plan.vm}: #{plan.iteration}: #{innerIndex}: Time: \"+__bencher_run(#{benchPath.inspect}));")
- doublePuts($stderr,file,"gc();") unless plan.vm.shouldMeasureGC
- }
- end
- }
- when :dumpRenderTree
- mainCode = Benchfile.create("bencher") {
- | file |
- doublePuts($stderr,file,"__bencher_count = 0;")
- doublePuts($stderr,file,"function __bencher_doNext(result) {")
- doublePuts($stderr,file," if (__bencher_count >= #{$warmup})")
- doublePuts($stderr,file," debug(\"#{name}: #{plan.vm}: #{plan.iteration}: \" + (__bencher_count - #{$warmup}) + \": Time: \" + result);")
- doublePuts($stderr,file," __bencher_count++;")
- doublePuts($stderr,file," if (__bencher_count < #{$inner+$warmup})")
- doublePuts($stderr,file," __bencher_runImpl(__bencher_doNext);")
- doublePuts($stderr,file," else")
- doublePuts($stderr,file," quit();")
- doublePuts($stderr,file,"}")
- doublePuts($stderr,file,"__bencher_runImpl(__bencher_doNext);")
- }
-
- cssCode = Benchfile.create("bencher-css") {
- | file |
- doublePuts($stderr,file,".pass {\n font-weight: bold;\n color: green;\n}\n.fail {\n font-weight: bold;\n color: red;\n}\n\#console {\n white-space: pre-wrap;\n font-family: monospace;\n}")
- }
-
- preCode = Benchfile.create("bencher-pre") {
- | file |
- doublePuts($stderr,file,"if (window.testRunner) {")
- doublePuts($stderr,file," testRunner.dumpAsText(window.enablePixelTesting);")
- doublePuts($stderr,file," testRunner.waitUntilDone();")
- doublePuts($stderr,file,"}")
- doublePuts($stderr,file,"")
- doublePuts($stderr,file,"function debug(msg)")
- doublePuts($stderr,file,"{")
- doublePuts($stderr,file," var span = document.createElement(\"span\");")
- doublePuts($stderr,file," document.getElementById(\"console\").appendChild(span); // insert it first so XHTML knows the namespace")
- doublePuts($stderr,file," span.innerHTML = msg + '<br />';")
- doublePuts($stderr,file,"}")
- doublePuts($stderr,file,"")
- doublePuts($stderr,file,"function quit() {")
- doublePuts($stderr,file," testRunner.notifyDone();")
- doublePuts($stderr,file,"}")
- doublePuts($stderr,file,"")
- doublePuts($stderr,file,"__bencher_continuation=null;")
- doublePuts($stderr,file,"")
- doublePuts($stderr,file,"function reportResult(result) {")
- doublePuts($stderr,file," __bencher_continuation(result);")
- doublePuts($stderr,file,"}")
- doublePuts($stderr,file,"")
- doublePuts($stderr,file,"function __bencher_runImpl(continuation) {")
- doublePuts($stderr,file," function doit() {")
- doublePuts($stderr,file," document.getElementById(\"frameparent\").innerHTML = \"\";")
- doublePuts($stderr,file," document.getElementById(\"frameparent\").innerHTML = \"<iframe id='testframe'>\";")
- doublePuts($stderr,file," var testFrame = document.getElementById(\"testframe\");")
- doublePuts($stderr,file," testFrame.contentDocument.open();")
- doublePuts($stderr,file," testFrame.contentDocument.write(\"<!DOCTYPE html>\\n<head></head><body><div id=\\\"console\\\"></div>\");")
- if benchDataPath
- doublePuts($stderr,file," testFrame.contentDocument.write(\"<script src=\\\"#{benchDataPath}\\\"></script>\");")
- end
- doublePuts($stderr,file," testFrame.contentDocument.write(\"<script type=\\\"text/javascript\\\">__bencher_before = Date.now();</script><script src=\\\"#{benchPath}\\\"></script><script type=\\\"text/javascript\\\">window.parent.reportResult(Date.now() - __bencher_before);</script></body></html>\");")
- doublePuts($stderr,file," testFrame.contentDocument.close();")
- doublePuts($stderr,file," }")
- doublePuts($stderr,file," __bencher_continuation = continuation;")
- doublePuts($stderr,file," window.setTimeout(doit, 10);")
- doublePuts($stderr,file,"}")
- }
-
- Benchfile.create(["bencher-htmldoc",".html"]) {
- | file |
- doublePuts($stderr,file,"<!DOCTYPE HTML PUBLIC \"-//IETF//DTD HTML//EN\">\n<html><head><link rel=\"stylesheet\" href=\"#{cssCode}\"><script src=\"#{preCode}\"></script></head><body><div id=\"console\"></div><div id=\"frameparent\"></div><script src=\"#{mainCode}\"></script></body></html>")
- }
- else
- raise
- end
-end
-
-def emitBenchRunCode(name, plan, benchDataPath, benchPath)
- plan.vm.emitRunCode(emitBenchRunCodeFile(name, plan, benchDataPath, benchPath))
-end
-
-def planForDescription(plans, benchFullname, vmName, iteration)
- raise unless benchFullname =~ /\//
- suiteName = $~.pre_match
- benchName = $~.post_match
- result = plans.select{|v| v.suite.name == suiteName and v.benchmark.name == benchName and v.vm.name == vmName and v.iteration == iteration}
- raise unless result.size == 1
- result[0]
-end
-
-class ParsedResult
- attr_reader :plan, :innerIndex, :time
-
- def initialize(plan, innerIndex, time)
- @plan = plan
- @innerIndex = innerIndex
- @time = time
-
- raise unless @plan.is_a? BenchPlan
- raise unless @innerIndex.is_a? Integer
- raise unless @time.is_a? Numeric
- end
-
- def benchmark
- plan.benchmark
- end
-
- def suite
- plan.suite
- end
-
- def vm
- plan.vm
- end
-
- def outerIndex
- plan.iteration
- end
-
- def self.parse(plans, string)
- if string =~ /([a-zA-Z0-9\/-]+): ([a-zA-Z0-9_# ]+): ([0-9]+): ([0-9]+): Time: /
- benchFullname = $1
- vmName = $2
- outerIndex = $3.to_i
- innerIndex = $4.to_i
- time = $~.post_match.to_f
- ParsedResult.new(planForDescription(plans, benchFullname, vmName, outerIndex), innerIndex, time)
- else
- nil
- end
- end
-end
-
-class VM
- def initialize(origPath, name, nameKind, svnRevision)
- @origPath = origPath.to_s
- @path = origPath.to_s
- @name = name
- @nameKind = nameKind
-
- if $forceVMKind
- @vmType = $forceVMKind
- else
- if @origPath =~ /DumpRenderTree$/
- @vmType = :dumpRenderTree
- else
- @vmType = :jsc
- end
- end
-
- @svnRevision = svnRevision
-
- # Try to detect information about the VM.
- if path =~ /\/WebKitBuild\/Release\/([a-zA-Z]+)$/
- @checkoutPath = $~.pre_match
- # FIXME: Use some variant of this:
- # <bdash> def retrieve_revision
- # <bdash> `perl -I#{@path}/Tools/Scripts -MVCSUtils -e 'print svnRevisionForDirectory("#{@path}");'`.to_i
- # <bdash> end
- unless @svnRevision
- begin
- Dir.chdir(@checkoutPath) {
- $stderr.puts ">> cd #{@checkoutPath} && svn info" if $verbosity>=2
- IO.popen("svn info", "r") {
- | inp |
- inp.each_line {
- | line |
- if line =~ /Revision: ([0-9]+)/
- @svnRevision = $1
- end
- }
- }
- }
- unless @svnRevision
- $stderr.puts "Warning: running svn info for #{name} silently failed."
- end
- rescue => e
- # Failed to detect svn revision.
- $stderr.puts "Warning: could not get svn revision information for #{name}: #{e}"
- end
- end
- else
- $stderr.puts "Warning: could not identify checkout location for #{name}"
- end
-
- if @path =~ /\/Release\/([a-zA-Z]+)$/
- @libPath, @relativeBinPath = $~.pre_match+"/Release", "./#{$1}"
- elsif @path =~ /\/Contents\/Resources\/([a-zA-Z]+)$/
- @libPath = $~.pre_match
- elsif @path =~ /\/JavaScriptCore.framework\/Resources\/([a-zA-Z]+)$/
- @libPath, @relativeBinPath = $~.pre_match, $&[1..-1]
- end
- end
-
- def canCopyIntoBenchPath
- if @libPath and @relativeBinPath
- true
- else
- false
- end
- end
-
- def copyIntoBenchPath
- raise unless canCopyIntoBenchPath
- basename, filename = Benchfile.uniqueFilename("vm")
- raise unless Dir.mkdir(filename)
- cmd = "cp -a #{@libPath.inspect}/* #{filename.inspect}"
- $stderr.puts ">> #{cmd}" if $verbosity>=2
- raise unless system(cmd)
- @path = "#{basename}/#{@relativeBinPath}"
- @libPath = basename
- end
-
- def to_s
- @name
- end
-
- def name
- @name
- end
-
- def shouldMeasureGC
- $measureGC == true or ($measureGC == name)
- end
-
- def origPath
- @origPath
- end
-
- def path
- @path
- end
-
- def nameKind
- @nameKind
- end
-
- def vmType
- @vmType
- end
-
- def checkoutPath
- @checkoutPath
- end
-
- def svnRevision
- @svnRevision
- end
-
- def printFunction
- case @vmType
- when :jsc
- "print"
- when :dumpRenderTree
- "debug"
- else
- raise @vmType
- end
- end
-
- def emitRunCode(fileToRun)
- myLibPath = @libPath
- myLibPath = "" unless myLibPath
- $script.puts "export DYLD_LIBRARY_PATH=#{myLibPath.to_s.inspect}"
- $script.puts "export DYLD_FRAMEWORK_PATH=#{myLibPath.to_s.inspect}"
- $script.puts "#{path} #{fileToRun}"
- end
-end
-
-class StatsAccumulator
- def initialize
- @stats = []
- ($outer*$inner).times {
- @stats << Stats.new
- }
- end
-
- def statsForIteration(outerIteration, innerIteration)
- @stats[outerIteration*$inner + innerIteration]
- end
-
- def stats
- result = Stats.new
- @stats.each {
- | stat |
- result.add(yield stat)
- }
- result
- end
-
- def geometricMeanStats
- stats {
- | stat |
- stat.geometricMean
- }
- end
-
- def arithmeticMeanStats
- stats {
- | stat |
- stat.arithmeticMean
- }
- end
-end
-
-module Benchmark
- attr_accessor :benchmarkSuite
- attr_reader :name
-
- def fullname
- benchmarkSuite.name + "/" + name
- end
-
- def to_s
- fullname
- end
-end
-
-class SunSpiderBenchmark
- include Benchmark
-
- def initialize(name)
- @name = name
- end
-
- def emitRunCode(plan)
- emitBenchRunCode(fullname, plan, nil, ensureFile("SunSpider-#{@name}", "#{SUNSPIDER_PATH}/#{@name}.js"))
- end
-end
-
-class V8Benchmark
- include Benchmark
-
- def initialize(name)
- @name = name
- end
-
- def emitRunCode(plan)
- emitBenchRunCode(fullname, plan, nil, ensureFile("V8-#{@name}", "#{V8_PATH}/v8-#{@name}.js"))
- end
-end
-
-class KrakenBenchmark
- include Benchmark
-
- def initialize(name)
- @name = name
- end
-
- def emitRunCode(plan)
- emitBenchRunCode(fullname, plan, ensureFile("KrakenData-#{@name}", "#{KRAKEN_PATH}/#{@name}-data.js"), ensureFile("Kraken-#{@name}", "#{KRAKEN_PATH}/#{@name}.js"))
- end
-end
-
-class BenchmarkSuite
- def initialize(name, path, preferredMean)
- @name = name
- @path = path
- @preferredMean = preferredMean
- @benchmarks = []
- end
-
- def name
- @name
- end
-
- def to_s
- @name
- end
-
- def path
- @path
- end
-
- def add(benchmark)
- if not $benchmarkPattern or "#{@name}/#{benchmark.name}" =~ $benchmarkPattern
- benchmark.benchmarkSuite = self
- @benchmarks << benchmark
- end
- end
-
- def benchmarks
- @benchmarks
- end
-
- def benchmarkForName(name)
- result = @benchmarks.select{|v| v.name == name}
- raise unless result.length == 1
- result[0]
- end
-
- def empty?
- @benchmarks.empty?
- end
-
- def retain_if
- @benchmarks.delete_if {
- | benchmark |
- not yield benchmark
- }
- end
-
- def preferredMean
- @preferredMean
- end
-
- def computeMean(stat)
- stat.send @preferredMean
- end
-end
-
-class BenchRunPlan
- def initialize(benchmark, vm, iteration)
- @benchmark = benchmark
- @vm = vm
- @iteration = iteration
- end
-
- def benchmark
- @benchmark
- end
-
- def suite
- @benchmark.benchmarkSuite
- end
-
- def vm
- @vm
- end
-
- def iteration
- @iteration
- end
-
- def emitRunCode
- @benchmark.emitRunCode(self)
- end
-end
-
-class BenchmarkOnVM
- def initialize(benchmark, suiteOnVM)
- @benchmark = benchmark
- @suiteOnVM = suiteOnVM
- @stats = Stats.new
- end
-
- def to_s
- "#{@benchmark} on #{@suiteOnVM.vm}"
- end
-
- def benchmark
- @benchmark
- end
-
- def vm
- @suiteOnVM.vm
- end
-
- def vmStats
- @suiteOnVM.vmStats
- end
-
- def suite
- @benchmark.benchmarkSuite
- end
-
- def suiteOnVM
- @suiteOnVM
- end
-
- def stats
- @stats
- end
-
- def parseResult(result)
- raise "VM mismatch; I've got #{vm} and they've got #{result.vm}" unless result.vm == vm
- raise unless result.benchmark == @benchmark
- @stats.add(result.time)
- end
-end
-
-class SuiteOnVM < StatsAccumulator
- def initialize(vm, vmStats, suite)
- super()
- @vm = vm
- @vmStats = vmStats
- @suite = suite
-
- raise unless @vm.is_a? VM
- raise unless @vmStats.is_a? StatsAccumulator
- raise unless @suite.is_a? BenchmarkSuite
- end
-
- def to_s
- "#{@suite} on #{@vm}"
- end
-
- def suite
- @suite
- end
-
- def vm
- @vm
- end
-
- def vmStats
- raise unless @vmStats
- @vmStats
- end
-end
-
-class BenchPlan
- def initialize(benchmarkOnVM, iteration)
- @benchmarkOnVM = benchmarkOnVM
- @iteration = iteration
- end
-
- def to_s
- "#{@benchmarkOnVM} \##{@iteration+1}"
- end
-
- def benchmarkOnVM
- @benchmarkOnVM
- end
-
- def benchmark
- @benchmarkOnVM.benchmark
- end
-
- def suite
- @benchmarkOnVM.suite
- end
-
- def vm
- @benchmarkOnVM.vm
- end
-
- def iteration
- @iteration
- end
-
- def parseResult(result)
- raise unless result.plan == self
- @benchmarkOnVM.parseResult(result)
- @benchmarkOnVM.vmStats.statsForIteration(@iteration, result.innerIndex).add(result.time)
- @benchmarkOnVM.suiteOnVM.statsForIteration(@iteration, result.innerIndex).add(result.time)
- end
-end
-
-def lpad(str,chars)
- if str.length>chars
- str
- else
- "%#{chars}s"%(str)
- end
-end
-
-def rpad(str,chars)
- while str.length<chars
- str+=" "
- end
- str
-end
-
-def center(str,chars)
- while str.length<chars
- str+=" "
- if str.length<chars
- str=" "+str
- end
- end
- str
-end
-
-def statsToStr(stats)
- if $inner*$outer == 1
- string = numToStr(stats.mean)
- raise unless string =~ /\./
- left = $~.pre_match
- right = $~.post_match
- lpad(left,12)+"."+rpad(right,9)
- else
- lpad(numToStr(stats.mean),11)+"+-"+rpad(numToStr(stats.confInt),9)
- end
-end
-
-def plural(num)
- if num == 1
- ""
- else
- "s"
- end
-end
-
-def wrap(str, columns)
- array = str.split
- result = ""
- curLine = array.shift
- array.each {
- | curStr |
- if (curLine + " " + curStr).size > columns
- result += curLine + "\n"
- curLine = curStr
- else
- curLine += " " + curStr
- end
- }
- result + curLine + "\n"
-end
-
-def runAndGetResults
- results = nil
- Dir.chdir(BENCH_DATA_PATH) {
- IO.popen("sh ./runscript", "r") {
- | inp |
- results = inp.read
- }
- raise "Script did not complete correctly: #{$?}" unless $?.success?
- }
- raise unless results
- results
-end
-
-def parseAndDisplayResults(results)
- vmStatses = []
- $vms.each {
- vmStatses << StatsAccumulator.new
- }
-
- suitesOnVMs = []
- suitesOnVMsForSuite = {}
- $suites.each {
- | suite |
- suitesOnVMsForSuite[suite] = []
- }
- suitesOnVMsForVM = {}
- $vms.each {
- | vm |
- suitesOnVMsForVM[vm] = []
- }
-
- benchmarksOnVMs = []
- benchmarksOnVMsForBenchmark = {}
- $benchmarks.each {
- | benchmark |
- benchmarksOnVMsForBenchmark[benchmark] = []
- }
-
- $vms.each_with_index {
- | vm, vmIndex |
- vmStats = vmStatses[vmIndex]
- $suites.each {
- | suite |
- suiteOnVM = SuiteOnVM.new(vm, vmStats, suite)
- suitesOnVMs << suiteOnVM
- suitesOnVMsForSuite[suite] << suiteOnVM
- suitesOnVMsForVM[vm] << suiteOnVM
- suite.benchmarks.each {
- | benchmark |
- benchmarkOnVM = BenchmarkOnVM.new(benchmark, suiteOnVM)
- benchmarksOnVMs << benchmarkOnVM
- benchmarksOnVMsForBenchmark[benchmark] << benchmarkOnVM
- }
- }
- }
-
- plans = []
- benchmarksOnVMs.each {
- | benchmarkOnVM |
- $outer.times {
- | iteration |
- plans << BenchPlan.new(benchmarkOnVM, iteration)
- }
- }
-
- hostname = nil
- hwmodel = nil
- results.each_line {
- | line |
- line.chomp!
- if line =~ /HOSTNAME:([^.]+)/
- hostname = $1
- elsif line =~ /HARDWARE:hw\.model: /
- hwmodel = $~.post_match.chomp
- else
- result = ParsedResult.parse(plans, line.chomp)
- if result
- result.plan.parseResult(result)
- end
- end
- }
-
- # Compute the geomean of the preferred means of results on a SuiteOnVM
- overallResults = []
- $vms.each {
- | vm |
- result = Stats.new
- $outer.times {
- | outerIndex |
- $inner.times {
- | innerIndex |
- curResult = Stats.new
- suitesOnVMsForVM[vm].each {
- | suiteOnVM |
- # For a given iteration, suite, and VM, compute the suite's preferred mean
- # over the data collected for all benchmarks in that suite. We'll have one
- # sample per benchmark. For example on V8 this will be the geomean of 1
- # sample for crypto, 1 sample for deltablue, and so on, and 1 sample for
- # splay.
- curResult.add(suiteOnVM.suite.computeMean(suiteOnVM.statsForIteration(outerIndex, innerIndex)))
- }
-
- # curResult now holds 1 sample for each of the means computed in the above
- # loop. Compute the geomean over this, and store it.
- result.add(curResult.geometricMean)
- }
- }
-
- # $overallResults will have a Stats for each VM. That Stats object will hold
- # $inner*$outer geomeans, allowing us to compute the arithmetic mean and
- # confidence interval of the geomeans of preferred means. Convoluted, but
- # useful and probably sound.
- overallResults << result
- }
-
- if $verbosity >= 2
- benchmarksOnVMs.each {
- | benchmarkOnVM |
- $stderr.puts "#{benchmarkOnVM}: #{benchmarkOnVM.stats}"
- }
-
- $vms.each_with_index {
- | vm, vmIndex |
- vmStats = vmStatses[vmIndex]
- $stderr.puts "#{vm} (arithmeticMean): #{vmStats.arithmeticMeanStats}"
- $stderr.puts "#{vm} (geometricMean): #{vmStats.geometricMeanStats}"
- }
- end
-
- reportName =
- (if ($vms.collect {
- | vm |
- vm.nameKind
- }.index :auto)
- ""
- else
- $vms.collect {
- | vm |
- vm.to_s
- }.join("_") + "_"
- end) +
- ($suites.collect {
- | suite |
- suite.to_s
- }.join("")) + "_" +
- (if hostname
- hostname + "_"
- else
- ""
- end)+
- (begin
- time = Time.now
- "%04d%02d%02d_%02d%02d" %
- [ time.year, time.month, time.day,
- time.hour, time.min ]
- end) +
- "_benchReport.txt"
-
- unless $brief
- puts "Generating benchmark report at #{reportName}"
- end
-
- outp = $stdout
- begin
- outp = File.open(reportName,"w")
- rescue => e
- $stderr.puts "Error: could not save report to #{reportName}: #{e}"
- $stderr.puts
- end
-
- def createVMsString
- result = ""
- result += " " if $suites.size > 1
- result += rpad("", $benchpad)
- result += " "
- $vms.size.times {
- | index |
- if index != 0
- result += " "+NoChange.new(0).shortForm
- end
- result += lpad(center($vms[index].name, 9+9+2), 11+9+2)
- }
- result += " "
- if $vms.size >= 3
- result += center("#{$vms[-1].name} v. #{$vms[0].name}",26)
- elsif $vms.size >= 2
- result += " "*26
- end
- result
- end
-
- columns = [createVMsString.size, 78].max
-
- outp.print "Benchmark report for "
- if $suites.size == 1
- outp.print $suites[0].to_s
- elsif $suites.size == 2
- outp.print "#{$suites[0]} and #{$suites[1]}"
- else
- outp.print "#{$suites[0..-2].join(', ')}, and #{$suites[-1]}"
- end
- if hostname
- outp.print " on #{hostname}"
- end
- if hwmodel
- outp.print " (#{hwmodel})"
- end
- outp.puts "."
- outp.puts
-
- # This looks stupid; revisit later.
- if false
- $suites.each {
- | suite |
- outp.puts "#{suite} at #{suite.path}"
- }
-
- outp.puts
- end
-
- outp.puts "VMs tested:"
- $vms.each {
- | vm |
- outp.print "\"#{vm.name}\" at #{vm.origPath}"
- if vm.svnRevision
- outp.print " (r#{vm.svnRevision})"
- end
- outp.puts
- }
-
- outp.puts
-
- outp.puts wrap("Collected #{$outer*$inner} sample#{plural($outer*$inner)} per benchmark/VM, "+
- "with #{$outer} VM invocation#{plural($outer)} per benchmark."+
- (if $rerun > 1 then (" Ran #{$rerun} benchmark iterations, and measured the "+
- "total time of those iterations, for each sample.")
- else "" end)+
- (if $measureGC == true then (" No manual garbage collection invocations were "+
- "emitted.")
- elsif $measureGC then (" Emitted a call to gc() between sample measurements for "+
- "all VMs except #{$measureGC}.")
- else (" Emitted a call to gc() between sample measurements.") end)+
- (if $warmup == 0 then (" Did not include any warm-up iterations; measurements "+
- "began with the very first iteration.")
- else (" Used #{$warmup*$rerun} benchmark iteration#{plural($warmup*$rerun)} per VM "+
- "invocation for warm-up.") end)+
- (case $timeMode
- when :preciseTime then (" Used the jsc-specific preciseTime() function to get "+
- "microsecond-level timing.")
- when :date then (" Used the portable Date.now() method to get millisecond-"+
- "level timing.")
- else raise end)+
- " Reporting benchmark execution times with 95% confidence "+
- "intervals in milliseconds.",
- columns)
-
- outp.puts
-
- def printVMs(outp)
- outp.puts createVMsString
- end
-
- def summaryStats(outp, accumulators, name, &proc)
- outp.print " " if $suites.size > 1
- outp.print rpad(name, $benchpad)
- outp.print " "
- accumulators.size.times {
- | index |
- if index != 0
- outp.print " "+accumulators[index].stats(&proc).compareTo(accumulators[index-1].stats(&proc)).shortForm
- end
- outp.print statsToStr(accumulators[index].stats(&proc))
- }
- if accumulators.size>=2
- outp.print(" "+accumulators[-1].stats(&proc).compareTo(accumulators[0].stats(&proc)).longForm)
- end
- outp.puts
- end
-
- def meanName(currentMean, preferredMean)
- result = "<#{currentMean}>"
- if "#{currentMean}Mean" == preferredMean.to_s
- result += " *"
- end
- result
- end
-
- def allSummaryStats(outp, accumulators, preferredMean)
- summaryStats(outp, accumulators, meanName("arithmetic", preferredMean)) {
- | stat |
- stat.arithmeticMean
- }
-
- summaryStats(outp, accumulators, meanName("geometric", preferredMean)) {
- | stat |
- stat.geometricMean
- }
-
- summaryStats(outp, accumulators, meanName("harmonic", preferredMean)) {
- | stat |
- stat.harmonicMean
- }
- end
-
- $suites.each {
- | suite |
- printVMs(outp)
- if $suites.size > 1
- outp.puts "#{suite.name}:"
- else
- outp.puts
- end
- suite.benchmarks.each {
- | benchmark |
- outp.print " " if $suites.size > 1
- outp.print rpad(benchmark.name, $benchpad)
- outp.print " "
- myConfigs = benchmarksOnVMsForBenchmark[benchmark]
- myConfigs.size.times {
- | index |
- if index != 0
- outp.print " "+myConfigs[index].stats.compareTo(myConfigs[index-1].stats).shortForm
- end
- outp.print statsToStr(myConfigs[index].stats)
- }
- if $vms.size>=2
- outp.print(" "+myConfigs[-1].stats.compareTo(myConfigs[0].stats).to_s)
- end
- outp.puts
- }
- outp.puts
- allSummaryStats(outp, suitesOnVMsForSuite[suite], suite.preferredMean)
- outp.puts if $suites.size > 1
- }
-
- if $suites.size > 1
- printVMs(outp)
- outp.puts "All benchmarks:"
- allSummaryStats(outp, vmStatses, nil)
-
- outp.puts
- printVMs(outp)
- outp.puts "Geomean of preferred means:"
- outp.print " "
- outp.print rpad("<scaled-result>", $benchpad)
- outp.print " "
- $vms.size.times {
- | index |
- if index != 0
- outp.print " "+overallResults[index].compareTo(overallResults[index-1]).shortForm
- end
- outp.print statsToStr(overallResults[index])
- }
- if overallResults.size>=2
- outp.print(" "+overallResults[-1].compareTo(overallResults[0]).longForm)
- end
- outp.puts
- end
- outp.puts
-
- if outp != $stdout
- outp.close
- end
-
- if outp != $stdout and not $brief
- puts
- File.open(reportName) {
- | inp |
- puts inp.read
- }
- end
-
- if $brief
- puts(overallResults.collect{|stats| stats.mean}.join("\t"))
- puts(overallResults.collect{|stats| stats.confInt}.join("\t"))
- end
-
-
-end
-
-begin
- $sawBenchOptions = false
-
- def resetBenchOptionsIfNecessary
- unless $sawBenchOptions
- $includeSunSpider = false
- $includeV8 = false
- $includeKraken = false
- $sawBenchOptions = true
- end
- end
-
- GetoptLong.new(['--rerun', GetoptLong::REQUIRED_ARGUMENT],
- ['--inner', GetoptLong::REQUIRED_ARGUMENT],
- ['--outer', GetoptLong::REQUIRED_ARGUMENT],
- ['--warmup', GetoptLong::REQUIRED_ARGUMENT],
- ['--timing-mode', GetoptLong::REQUIRED_ARGUMENT],
- ['--sunspider-only', GetoptLong::NO_ARGUMENT],
- ['--v8-only', GetoptLong::NO_ARGUMENT],
- ['--kraken-only', GetoptLong::NO_ARGUMENT],
- ['--exclude-sunspider', GetoptLong::NO_ARGUMENT],
- ['--exclude-v8', GetoptLong::NO_ARGUMENT],
- ['--exclude-kraken', GetoptLong::NO_ARGUMENT],
- ['--sunspider', GetoptLong::NO_ARGUMENT],
- ['--v8', GetoptLong::NO_ARGUMENT],
- ['--kraken', GetoptLong::NO_ARGUMENT],
- ['--benchmarks', GetoptLong::REQUIRED_ARGUMENT],
- ['--measure-gc', GetoptLong::OPTIONAL_ARGUMENT],
- ['--force-vm-kind', GetoptLong::REQUIRED_ARGUMENT],
- ['--force-vm-copy', GetoptLong::NO_ARGUMENT],
- ['--dont-copy-vms', GetoptLong::NO_ARGUMENT],
- ['--verbose', '-v', GetoptLong::NO_ARGUMENT],
- ['--brief', GetoptLong::NO_ARGUMENT],
- ['--silent', GetoptLong::NO_ARGUMENT],
- ['--remote', GetoptLong::REQUIRED_ARGUMENT],
- ['--local', GetoptLong::NO_ARGUMENT],
- ['--ssh-options', GetoptLong::REQUIRED_ARGUMENT],
- ['--slave', GetoptLong::NO_ARGUMENT],
- ['--prepare-only', GetoptLong::NO_ARGUMENT],
- ['--analyze', GetoptLong::REQUIRED_ARGUMENT],
- ['--vms', GetoptLong::REQUIRED_ARGUMENT],
- ['--help', '-h', GetoptLong::NO_ARGUMENT]).each {
- | opt, arg |
- case opt
- when '--rerun'
- $rerun = intArg(opt,arg,1,nil)
- when '--inner'
- $inner = intArg(opt,arg,1,nil)
- when '--outer'
- $outer = intArg(opt,arg,1,nil)
- when '--warmup'
- $warmup = intArg(opt,arg,0,nil)
- when '--timing-mode'
- if arg.upcase == "PRECISETIME"
- $timeMode = :preciseTime
- elsif arg.upcase == "DATE"
- $timeMode = :date
- elsif arg.upcase == "AUTO"
- $timeMode = :auto
- else
- quickFail("Expected either 'preciseTime', 'date', or 'auto' for --time-mode, but got '#{arg}'.",
- "Invalid argument for command-line option")
- end
- when '--force-vm-kind'
- if arg.upcase == "JSC"
- $forceVMKind = :jsc
- elsif arg.upcase == "DUMPRENDERTREE"
- $forceVMKind = :dumpRenderTree
- elsif arg.upcase == "AUTO"
- $forceVMKind = nil
- else
- quickFail("Expected either 'jsc' or 'DumpRenderTree' for --force-vm-kind, but got '#{arg}'.",
- "Invalid argument for command-line option")
- end
- when '--force-vm-copy'
- $needToCopyVMs = true
- when '--dont-copy-vms'
- $dontCopyVMs = true
- when '--sunspider-only'
- $includeV8 = false
- $includeKraken = false
- when '--v8-only'
- $includeSunSpider = false
- $includeKraken = false
- when '--kraken-only'
- $includeSunSpider = false
- $includeV8 = false
- when '--exclude-sunspider'
- $includeSunSpider = false
- when '--exclude-v8'
- $includeV8 = false
- when '--exclude-kraken'
- $includeKraken = false
- when '--sunspider'
- resetBenchOptionsIfNecessary
- $includeSunSpider = true
- when '--v8'
- resetBenchOptionsIfNecessary
- $includeV8 = true
- when '--kraken'
- resetBenchOptionsIfNecessary
- $includeKraken = true
- when '--benchmarks'
- $benchmarkPattern = Regexp.new(arg)
- when '--measure-gc'
- if arg == ''
- $measureGC = true
- else
- $measureGC = arg
- end
- when '--verbose'
- $verbosity += 1
- when '--brief'
- $brief = true
- when '--silent'
- $silent = true
- when '--remote'
- $remoteHosts += arg.split(',')
- $needToCopyVMs = true
- when '--ssh-options'
- $sshOptions << arg
- when '--local'
- $alsoLocal = true
- when '--prepare-only'
- $run = false
- when '--analyze'
- $prepare = false
- $run = false
- $analyze << arg
- when '--help'
- usage
- else
- raise "bad option: #{opt}"
- end
- }
-
- # If the --dont-copy-vms option was passed, it overrides the --force-vm-copy option.
- if $dontCopyVMs
- $needToCopyVMs = false
- end
-
- SUNSPIDER = BenchmarkSuite.new("SunSpider", SUNSPIDER_PATH, :arithmeticMean)
- ["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"].each {
- | name |
- SUNSPIDER.add SunSpiderBenchmark.new(name)
- }
-
- V8 = BenchmarkSuite.new("V8", V8_PATH, :geometricMean)
- ["crypto", "deltablue", "earley-boyer", "raytrace",
- "regexp", "richards", "splay"].each {
- | name |
- V8.add V8Benchmark.new(name)
- }
-
- KRAKEN = BenchmarkSuite.new("Kraken", KRAKEN_PATH, :arithmeticMean)
- ["ai-astar", "audio-beat-detection", "audio-dft", "audio-fft",
- "audio-oscillator", "imaging-darkroom", "imaging-desaturate",
- "imaging-gaussian-blur", "json-parse-financial",
- "json-stringify-tinderbox", "stanford-crypto-aes",
- "stanford-crypto-ccm", "stanford-crypto-pbkdf2",
- "stanford-crypto-sha256-iterative"].each {
- | name |
- KRAKEN.add KrakenBenchmark.new(name)
- }
-
- ARGV.each {
- | vm |
- if vm =~ /([a-zA-Z0-9_ ]+):/
- name = $1
- nameKind = :given
- vm = $~.post_match
- else
- name = "Conf\##{$vms.length+1}"
- nameKind = :auto
- end
- $stderr.puts "#{name}: #{vm}" if $verbosity >= 1
- $vms << VM.new(Pathname.new(vm).realpath, name, nameKind, nil)
- }
-
- if $vms.empty?
- quickFail("Please specify at least on configuraiton on the command line.",
- "Insufficient arguments")
- end
-
- $vms.each {
- | vm |
- if vm.vmType != :jsc and $timeMode != :date
- $timeMode = :date
- $stderr.puts "Warning: using Date.now() instead of preciseTime() because #{vm} doesn't support the latter."
- end
- }
-
- if FileTest.exist? BENCH_DATA_PATH
- cmd = "rm -rf #{BENCH_DATA_PATH}"
- $stderr.puts ">> #{cmd}" if $verbosity >= 2
- raise unless system cmd
- end
-
- Dir.mkdir BENCH_DATA_PATH
-
- if $needToCopyVMs
- canCopyIntoBenchPath = true
- $vms.each {
- | vm |
- canCopyIntoBenchPath = false unless vm.canCopyIntoBenchPath
- }
-
- if canCopyIntoBenchPath
- $vms.each {
- | vm |
- $stderr.puts "Copying #{vm} into #{BENCH_DATA_PATH}..."
- vm.copyIntoBenchPath
- }
- $stderr.puts "All VMs are in place."
- else
- $stderr.puts "Warning: don't know how to copy some VMs into #{BENCH_DATA_PATH}, so I won't do it."
- end
- end
-
- if $measureGC and $measureGC != true
- found = false
- $vms.each {
- | vm |
- if vm.name == $measureGC
- found = true
- end
- }
- unless found
- $stderr.puts "Warning: --measure-gc option ignored because no VM is named #{$measureGC}"
- end
- end
-
- if $outer*$inner == 1
- $stderr.puts "Warning: will only collect one sample per benchmark/VM. Confidence interval calculation will fail."
- end
-
- $stderr.puts "Using timeMode = #{$timeMode}." if $verbosity >= 1
-
- $suites = []
-
- if $includeSunSpider and not SUNSPIDER.empty?
- $suites << SUNSPIDER
- end
-
- if $includeV8 and not V8.empty?
- $suites << V8
- end
-
- if $includeKraken and not KRAKEN.empty?
- $suites << KRAKEN
- end
-
- $benchmarks = []
- $suites.each {
- | suite |
- $benchmarks += suite.benchmarks
- }
-
- $runPlans = []
- $vms.each {
- | vm |
- $benchmarks.each {
- | benchmark |
- $outer.times {
- | iteration |
- $runPlans << BenchRunPlan.new(benchmark, vm, iteration)
- }
- }
- }
-
- $runPlans.shuffle!
-
- $suitepad = $suites.collect {
- | suite |
- suite.to_s.size
- }.max + 1
-
- $benchpad = ($benchmarks +
- ["<arithmetic> *", "<geometric> *", "<harmonic> *"]).collect {
- | benchmark |
- if benchmark.respond_to? :name
- benchmark.name.size
- else
- benchmark.size
- end
- }.max + 1
-
- $vmpad = $vms.collect {
- | vm |
- vm.to_s.size
- }.max + 1
-
- if $prepare
- File.open("#{BENCH_DATA_PATH}/runscript", "w") {
- | file |
- file.puts "echo \"HOSTNAME:\\c\""
- file.puts "hostname"
- file.puts "echo"
- file.puts "echo \"HARDWARE:\\c\""
- file.puts "/usr/sbin/sysctl hw.model"
- file.puts "echo"
- file.puts "set -e"
- $script = file
- $runPlans.each_with_index {
- | plan, idx |
- if $verbosity == 0 and not $silent
- text1 = lpad(idx.to_s,$runPlans.size.to_s.size)+"/"+$runPlans.size.to_s
- text2 = plan.benchmark.to_s+"/"+plan.vm.to_s
- file.puts("echo "+("\r#{text1} #{rpad(text2,$suitepad+1+$benchpad+1+$vmpad)}".inspect)[0..-2]+"\\c\" 1>&2")
- file.puts("echo "+("\r#{text1} #{text2}".inspect)[0..-2]+"\\c\" 1>&2")
- end
- plan.emitRunCode
- }
- if $verbosity == 0 and not $silent
- file.puts("echo "+("\r#{$runPlans.size}/#{$runPlans.size} #{' '*($suitepad+1+$benchpad+1+$vmpad)}".inspect)[0..-2]+"\\c\" 1>&2")
- file.puts("echo "+("\r#{$runPlans.size}/#{$runPlans.size}".inspect)+" 1>&2")
- end
- }
- end
-
- if $run
- unless $remoteHosts.empty?
- $stderr.puts "Packaging benchmarking directory for remote hosts..." if $verbosity==0
- Dir.chdir(TEMP_PATH) {
- cmd = "tar -czf payload.tar.gz benchdata"
- $stderr.puts ">> #{cmd}" if $verbosity>=2
- raise unless system(cmd)
- }
-
- def grokHost(host)
- if host =~ /:([0-9]+)$/
- "-p " + $1 + " " + $~.pre_match.inspect
- else
- host.inspect
- end
- end
-
- def sshRead(host, command)
- cmd = "ssh #{$sshOptions.collect{|x| x.inspect}.join(' ')} #{grokHost(host)} #{command.inspect}"
- $stderr.puts ">> #{cmd}" if $verbosity>=2
- result = ""
- IO.popen(cmd, "r") {
- | inp |
- inp.each_line {
- | line |
- $stderr.puts "#{host}: #{line}" if $verbosity>=2
- result += line
- }
- }
- raise "#{$?}" unless $?.success?
- result
- end
-
- def sshWrite(host, command, data)
- cmd = "ssh #{$sshOptions.collect{|x| x.inspect}.join(' ')} #{grokHost(host)} #{command.inspect}"
- $stderr.puts ">> #{cmd}" if $verbosity>=2
- IO.popen(cmd, "w") {
- | outp |
- outp.write(data)
- }
- raise "#{$?}" unless $?.success?
- end
-
- $remoteHosts.each {
- | host |
- $stderr.puts "Sending benchmark payload to #{host}..." if $verbosity==0
-
- remoteTempPath = JSON::parse(sshRead(host, "cat ~/.bencher"))["tempPath"]
- raise unless remoteTempPath
-
- sshWrite(host, "cd #{remoteTempPath.inspect} && rm -rf benchdata && tar -xz", IO::read("#{TEMP_PATH}/payload.tar.gz"))
-
- $stderr.puts "Running on #{host}..." if $verbosity==0
-
- parseAndDisplayResults(sshRead(host, "cd #{(remoteTempPath+'/benchdata').inspect} && sh runscript"))
- }
- end
-
- if not $remoteHosts.empty? and $alsoLocal
- $stderr.puts "Running locally..."
- end
-
- if $remoteHosts.empty? or $alsoLocal
- parseAndDisplayResults(runAndGetResults)
- end
- end
-
- $analyze.each_with_index {
- | filename, index |
- if index >= 1
- puts
- end
- parseAndDisplayResults(IO::read(filename))
- }
-
- if $prepare and not $run and $analyze.empty?
- puts wrap("Benchmarking script and data are in #{BENCH_DATA_PATH}. You can run "+
- "the benchmarks and get the results by doing:", 78)
- puts
- puts "cd #{BENCH_DATA_PATH}"
- puts "sh runscript > results.txt"
- puts
- puts wrap("Then you can analyze the results by running bencher with the same arguments "+
- "as now, but replacing --prepare-only with --analyze results.txt.", 78)
- end
-rescue => e
- fail(e)
-end
-
-
diff --git a/Tools/Scripts/bisect-builds b/Tools/Scripts/bisect-builds
deleted file mode 100755
index 301d9fd85..000000000
--- a/Tools/Scripts/bisect-builds
+++ /dev/null
@@ -1,451 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007, 2008, 2009, 2011, 2012, 2013 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 FindBin;
-use Getopt::Long;
-use Time::HiRes qw(usleep);
-
-use lib $FindBin::Bin;
-use webkitdirs qw(safariPathFromSafariBundle);
-
-sub createTempFile($);
-sub downloadNightly($$$);
-sub findMacOSXVersion();
-sub findNearestNightlyIndex(\@$$);
-sub findSafariVersion($);
-sub loadSettings();
-sub makeNightlyList($$$$);
-sub max($$) { return $_[0] > $_[1] ? $_[0] : $_[1]; }
-sub mountAndRunNightly($$$$);
-sub parseRevisions($$;$);
-sub printStatus($$$);
-sub printTracLink($$);
-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 = safariPathFromSafariBundle($safariPath) 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]) {
- my $buildsLeft = max(max(0, $endIndex - $index - 1), max(0, $index - $startIndex - 1));
- my $plural = $buildsLeft == 1 ? "" : "s";
- printf "\nChecking revision r%s (%d build%s left to test after this)...\n", $nightlies[$index]->{rev}, $buildsLeft, $plural;
- 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--;
- if (scalar(keys %brokenRevisions) % 2 == 0) {
- # Even tries to bisect to the left
- $index = int(($startIndex + $index) / 2);
- } else {
- # Odd tries to bisect to the right
- $index = int(($index + $endIndex) / 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);
-}
-
-printTracLink($nightlies[$startIndex]->{rev}, $nightlies[$endIndex]->{rev});
-
-unlink $tempFile if $tempFile;
-
-exit 0;
-
-sub createTempFile($)
-{
- my ($url) = @_;
-
- return undef if !$url;
-
- my ($fh, $tempFile) = tempfile(
- basename($0) . "-XXXXXXXX",
- DIR => File::Spec->tmpdir(),
- 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>([0-9.]+)[^<]*</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 ($safariVersion eq "4 Public Beta") {
- @files = grep { $_->{rev} >= 39682 } @files;
- } elsif (eval "v$safariVersion" ge v3.2) {
- @files = grep { $_->{rev} >= 37348 } @files;
- } elsif (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 ($safariVersion eq "4 Public Beta") {
- @files = grep { $_->{rev} >= 39682 } @files;
- } elsif (eval "v$safariVersion" ge v3.2) {
- @files = grep { $_->{rev} >= 37348 } @files;
- } elsif (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 $devNull = File::Spec->devnull();
-
- my $i = 0;
- while (-e $mountPath) {
- $i++;
- usleep 100 if $i > 1;
- `hdiutil detach '$mountPath' 2> $devNull`;
- 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> $devNull`;
-}
-
-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 printTracLink($$)
-{
- my ($startRevision, $endRevision) = @_;
- printf("http://trac.webkit.org/log/trunk/?rev=%s&stop_rev=%s\n", $endRevision, $startRevision + 1);
-}
-
-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/Tools/Scripts/build-api-tests b/Tools/Scripts/build-api-tests
deleted file mode 100755
index d3ec0bbbf..000000000
--- a/Tools/Scripts/build-api-tests
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010 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. 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 INC. 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 File::Basename;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $showHelp = 0;
-my $clean = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --clean Clean up the build directory
-EOF
-
-GetOptions(
- 'help' => \$showHelp,
- 'clean' => \$clean,
-);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-
-# Build
-
-my $result;
-if (isAppleMacWebKit()) {
- chdir "Source/ThirdParty/gtest";
- buildXCodeProject("xcode/gtest", $clean, XcodeOptions(), @ARGV);
- chdir "../../../Tools/TestWebKitAPI" or die;
- $result = buildXCodeProject("TestWebKitAPI", $clean, XcodeOptions(), @ARGV);
-} elsif (isAppleWinWebKit()) {
- chdir "Tools/TestWebKitAPI" or die;
- my $solutionPath = "TestWebKitAPI.vcxproj/TestWebKitAPI.sln";
- $result = buildVisualStudioProject($solutionPath, $clean);
-} else {
- die "TestWebKitAPI is not supported on this platform.\n";
-}
-
-exit exitStatus($result);
diff --git a/Tools/Scripts/build-dumprendertree b/Tools/Scripts/build-dumprendertree
deleted file mode 100755
index 1ff75f7d3..000000000
--- a/Tools/Scripts/build-dumprendertree
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007, 2008, 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.
-# 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 File::Basename;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $showHelp = 0;
-my $clean = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --clean Clean up the build directory
- --gtk Build the GTK+ port
- --qt Build the Qt port
- --efl Build the EFL port
-EOF
-
-GetOptions(
- 'help' => \$showHelp,
- 'clean' => \$clean,
-);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-
-# Build
-chdir "Tools/DumpRenderTree" or die;
-
-my $result;
-if (isAppleMacWebKit()) {
- $result = buildXCodeProject("DumpRenderTree", $clean, XcodeOptions(), @ARGV);
-} elsif (isAppleWinWebKit()) {
- my $drtSolutionPath = "DumpRenderTree.vcxproj/DumpRenderTree.sln";
- $result = buildVisualStudioProject($drtSolutionPath, $clean);
-} elsif (isQt() || isGtk() || isEfl()) {
- # Qt, Gtk and EFL 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/Tools/Scripts/build-jsc b/Tools/Scripts/build-jsc
deleted file mode 100755
index 6b29b7f21..000000000
--- a/Tools/Scripts/build-jsc
+++ /dev/null
@@ -1,97 +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 Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $coverageSupport = 0;
-my $showHelp = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --[no-]coverage Toggle code coverage support (default: $coverageSupport)
-EOF
-
-GetOptions(
- 'coverage!' => \$coverageSupport,
- 'help' => \$showHelp
-);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-my @options = XcodeOptions();
-my @coverageSupportOptions = ($coverageSupport) ? XcodeCoverageSupportOptions() : ();
-
-if (isQt()) {
- checkForArgumentAndRemoveFromARGV("--qt");
- my @projects = ("WTF", "JavaScriptCore");
- # Pick up the --no-webkit2 option from BUILD_WEBKIT_ARGS if it is needed
- push @ARGV, split(/ /, $ENV{'BUILD_WEBKIT_ARGS'}) if ($ENV{'BUILD_WEBKIT_ARGS'});
- push @ARGV, "WEBKIT_CONFIG-=build_webkit2" if checkForArgumentAndRemoveFromARGV("--no-webkit2");
- my $result = buildQMakeProjects(\@projects, 0, @ARGV);
- exit exitStatus($result);
-} elsif (cmakeBasedPortName()) {
- buildCMakeProjectOrExit(0, cmakeBasedPortName(), undef, "jsc", cmakeBasedPortArguments()); # This call only returns if nothing wrong happened
- exit exitStatus(0);
-}
-
-sub buildMyProject
-{
- my ($projectDirectory, $projectName) = @_;
- my $result;
- chdir $projectDirectory or die "Can't find $projectName directory to build from";
- if (isAppleMacWebKit()) {
- $result = system "sh", "-c", ('xcodebuild -project ' . $projectName . '.xcodeproj "$@" | grep -v setenv && exit ${PIPESTATUS[0]}'), "xcodebuild", @options, @ARGV, @coverageSupportOptions;
- } elsif (isAppleWinWebKit()) {
- $result = buildVisualStudioProject("$projectName.vcxproj/$projectName.submit.sln");
- } elsif (isGtk()) {
- checkForArgumentAndRemoveFromARGV("--gtk");
- $result = buildGtkProject($projectName, 0);
- } else {
- die "Building not defined for this platform!\n";
- }
- exit exitStatus($result) if exitStatus($result);
- chdirWebKit();
-}
-
-buildMyProject("Source/WTF", "WTF");
-buildMyProject("Source/JavaScriptCore", "JavaScriptCore");
diff --git a/Tools/Scripts/build-webkit b/Tools/Scripts/build-webkit
index 69f983326..d9ea259c7 100755
--- a/Tools/Scripts/build-webkit
+++ b/Tools/Scripts/build-webkit
@@ -1,9 +1,10 @@
#!/usr/bin/perl -w
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 Apple Inc. All rights reserved.
+# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014 Apple Inc. All rights reserved.
# Copyright (C) 2009 Google Inc. All rights reserved.
# Copyright (C) 2010 moiji-mobile.com All rights reserved.
# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
+# Copyright (C) 2013 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
@@ -14,7 +15,7 @@
# 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
+# 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.
#
@@ -36,14 +37,14 @@ use File::Basename;
use File::Find;
use File::Spec;
use FindBin;
-use Getopt::Long qw(:config pass_through);
+use Getopt::Long qw(:config pass_through no_auto_abbrev);
use lib $FindBin::Bin;
use webkitdirs;
+use List::Util qw(first);
use webkitperl::FeatureList qw(getFeatureOptionList);
use POSIX;
sub cMakeArgsFromFeatures();
-sub formatBuildTime($);
sub writeCongrats();
my $originalWorkingDirectory = getcwd();
@@ -58,35 +59,12 @@ my $prefixPath;
my $makeArgs = "";
my $cmakeArgs = "";
my $onlyWebKitProject = 0;
-my $noWebKit1 = 0;
-my $noWebKit2 = 0;
my $coverageSupport = 0;
+my $shouldRunStaticAnalyzer = 0;
my $startTime = time();
my @features = getFeatureOptionList();
-# Update defaults from Qt's project file
-if (isQt()) {
- # Take a sneek peek at the arguments, since we will need the qmake binary early
- # on to do profile parsing. We also need to know if we're showing the help-text.
- foreach (@ARGV) {
- if (/^--qmake=(.*)/) {
- setQmakeBinaryPath($1);
- } elsif (/^--help$/) {
- $showHelp = 1;
- }
- }
-
- my %qtDefaults;
- if ($showHelp) {
- %qtDefaults = qtFeatureDefaults();
- }
-
- foreach (@features) {
- $_->{default} = (%qtDefaults ? $qtDefaults{$_->{define}} || 0 : -1);
- }
-}
-
# Additional environment parameters
push @ARGV, split(/ /, $ENV{'BUILD_WEBKIT_ARGS'}) if ($ENV{'BUILD_WEBKIT_ARGS'});
@@ -110,32 +88,25 @@ Usage: $programName [options] [options to pass to build system]
--debug Compile with Debug configuration
--release Compile with Release configuration
--sdk=<sdk> Use a specific Xcode SDK (iOS and Mac only)
- --device Use the current iphoneos.internal SDK (iOS only)
- --simulator Use the current iphonesimulator SDK (iOS only)
- --coverage Enable Code Coverage support (Mac only)
+ --device Use "iphoneos.internal" SDK if installed, else "iphoneos" SDK (iOS only)
+ --ios-simulator Use the current iphonesimulator SDK (iOS only)
+ --coverage Enable code coverage support (Mac only)
+ --analyze Enable static anaylsis (iOS and Mac only)
- --blackberry Build the BlackBerry port on Mac/Linux
--efl Build the EFL port
--gtk Build the GTK+ port
--qt Build the Qt port
--wincairo Build using Cairo (rather than CoreGraphics) on Windows
- --wince Build the WinCE port
-
- --inspector-frontend Copy changes to the inspector front-end files to the build directory
- --install-headers=<path> Set installation path for the headers (Qt only)
- --install-libs=<path> Set installation path for the libraries (Qt only)
+ --inspector-frontend Copy Web Inspector user interface resources to the build directory
- --prefix=<path> Set installation prefix to the given path (Gtk/Efl/BlackBerry only)
+ --prefix=<path> Set installation prefix to the given path (Gtk/Efl only)
--makeargs=<arguments> Optional Makefile flags
- --qmakearg=<arguments> Optional qmake flags (Qt only, e.g. --qmakearg="CONFIG+=webkit2" to build WebKit2)
--cmakeargs=<arguments> Optional CMake flags (e.g. --cmakeargs="-DFOO=bar -DCMAKE_PREFIX_PATH=/usr/local")
--minimal No optional features, unless explicitly enabled
--only-webkit Build only the WebKit project
- --no-webkit1 Omit WebKit1 code from the build (Qt/EFL/GTK only)
- --no-webkit2 Omit WebKit2 code from the build
EOF
@@ -149,9 +120,8 @@ my %options = (
'cmakeargs=s' => \$cmakeArgs,
'minimal' => \$minimal,
'only-webkit' => \$onlyWebKitProject,
- 'no-webkit1' => \$noWebKit1,
- 'no-webkit2' => \$noWebKit2,
'coverage' => \$coverageSupport,
+ 'analyze' => \$shouldRunStaticAnalyzer,
);
# Build usage text and options list from features
@@ -173,26 +143,13 @@ setConfiguration();
my $productDir = productDir();
-# Remove 0 byte sized files from productDir after slave lost for Qt buildbots.
-File::Find::find(\&unlinkZeroFiles, $productDir) if (isQt() && -e $productDir);
-
-sub unlinkZeroFiles()
-{
- my $file = $File::Find::name;
- # Remove 0 byte sized files, except
- # - directories (Because they are always 0 byte sized on Windows)
- # - .d files used for dependency tracking
- if (! -d $file && ! -s $file && $file !~ m/\.d$/) {
- unlink $file;
- print "0 byte sized file removed from build directory: $file\n";
- }
-}
-
# Check that all the project directories are there.
my @projects = ("Source/JavaScriptCore", "Source/WebCore", "Source/WebKit");
# Build WTF as a separate static library on ports which support it.
-splice @projects, 0, 0, "Source/WTF" if isAppleMacWebKit() or isAppleWinWebKit();
+splice @projects, 0, 0, "Source/WTF" if isAppleMacWebKit() or isAppleWinWebKit() or isWinCairo();
+
+splice @projects, 0, 0, "Source/bmalloc" if isAppleMacWebKit();
for my $dir (@projects) {
if (! -d $dir) {
@@ -200,7 +157,7 @@ for my $dir (@projects) {
}
}
-if (!isQt() && !-d "WebKitLibraries") {
+if ((isAppleWebKit() || isWinCairo()) && !-d "WebKitLibraries") {
die "Error: No WebKitLibraries directory found. Please do a fresh checkout.\n";
}
@@ -208,7 +165,6 @@ my @options = ();
if (isAppleMacWebKit()) {
push @options, XcodeOptions();
-
sub option($$$)
{
my ($feature, $isEnabled, $defaultValue) = @_;
@@ -224,43 +180,49 @@ if (isAppleMacWebKit()) {
# ANGLE must come before WebCore
splice @projects, 0, 0, "Source/ThirdParty/ANGLE";
- # WebKit2 is only supported in SnowLeopard and later at present.
- push @projects, ("Source/WebKit2", "Tools/MiniBrowser") if osXVersion()->{"minor"} >= 6 and !$noWebKit2;
+ push @projects, ("Source/WebKit2");
- # WebInspectorUI must come before WebKit and WebKit2
- unshift @projects, ("Source/WebInspectorUI");
+ if (!isIOSWebKit()) {
+ push @projects, ("Tools/MiniBrowser");
+
+ # WebInspectorUI must come after JavaScriptCore and WebCore but before WebKit and WebKit2
+ my $webKitIndex = first { $projects[$_] eq "Source/WebKit" } 0..$#projects;
+ splice(@projects, $webKitIndex, 0, "Source/WebInspectorUI");
+
+ # Copy library and header from WebKitLibraries to a findable place in the product directory.
+ my @copyLibrariesArgs = ("perl", "Tools/Scripts/copy-webkitlibraries-to-product-directory", "--wksi", "--llvm", productDir());
+ print(join(" ", @copyLibrariesArgs) . "\n");
+ (system(@copyLibrariesArgs) == 0) or die;
+ } else {
+ my @copyLibrariesArgs = ("perl", "Tools/Scripts/copy-webkitlibraries-to-product-directory", "--sdk", xcodeSDK(), "--wksi");
+ push @copyLibrariesArgs, "--llvm" if willUseIOSDeviceSDK();
+ if (my $hasInternalSDK = xcodeSDK() eq "iphoneos.internal") {
+ push @copyLibrariesArgs, (
+ "--prefer-system-llvm",
+ "--llvm-subdirectory", "internal-llvm",
+ "--llvm-prefix", "/usr/local",
+ );
+ }
+ push @copyLibrariesArgs, productDir();
+ print(join(" ", @copyLibrariesArgs) . "\n");
+ (system(@copyLibrariesArgs) == 0) or die;
+
+ if (willUseIOSSimulatorSDK()) {
+ (system("perl", "Tools/Scripts/build-layouttestrelay", argumentsForConfiguration()) == 0) or die;
+ }
+ }
# Build Tools needed for Apple ports
push @projects, ("Tools/DumpRenderTree", "Tools/WebKitTestRunner", "Source/ThirdParty/gtest", "Tools/TestWebKitAPI");
-
- # Copy library and header from WebKitLibraries to a findable place in the product directory.
- (system("perl", "Tools/Scripts/copy-webkitlibraries-to-product-directory", $productDir) == 0) or die;
+
} elsif (isWinCairo()) {
(system("perl Tools/Scripts/update-webkit-wincairo-libs") == 0) or die;
} elsif (isAppleWinWebKit()) {
# 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 Tools/Scripts/update-webkit-support-libs") == 0) or die;
-} elsif (isQt()) {
- push @options, "--install-headers=" . $installHeaders if defined($installHeaders);
- push @options, "--install-libs=" . $installLibs if defined($installLibs);
- push @options, "--makeargs=" . $makeArgs if $makeArgs;
- push @options, "WEBKIT_CONFIG-=build_webkit1" if $noWebKit1;
- push @options, "WEBKIT_CONFIG-=build_webkit2" if $noWebKit2;
-
- if (checkForArgumentAndRemoveFromARGV("-2")) {
- print "Note: WebKit2 is now built by default, you don't need to pass -2. Disable using --no-webkit2\n";
- }
-
- @options = (@ARGV, @options);
-
- foreach (@features) {
- if ($_->{define} && ${$_->{value}} != $_->{default}) {
- my $define = lc($_->{define});
- $define =~ s/^enable_//;
- push @options, "WEBKIT_CONFIG" . (${$_->{value}} == 1 ? "+" : "-") . "=" . $define;
- }
- }
+} elsif (isQt() && isAnyWindows()) {
+ (system("perl Tools/Scripts/update-qtwebkit-win-libs") == 0) or die;
}
# If asked to build just the WebKit project, overwrite the projects
@@ -268,92 +230,74 @@ if (isAppleMacWebKit()) {
# build options, etc.
@projects = ("Source/WebKit") if $onlyWebKitProject;
+my $result = 0;
+
if (isInspectorFrontend()) {
- exit exitStatus(copyInspectorFrontendFiles());
+ die "The --inspector-frontend option is not supported for CMake-based builds." if isCMakeBuild();
+ @projects = ("Source/WebInspectorUI");
}
-my $result = 0;
+if (isCMakeBuild() && (!isAnyWindows() || isQt())) {
-if (isEfl()) {
- # By default we build using all of the available CPUs.
- $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
- $cmakeArgs = "-DENABLE_WEBKIT=OFF " . $cmakeArgs if $noWebKit1;
- $cmakeArgs = "-DENABLE_WEBKIT2=OFF " . $cmakeArgs if $noWebKit2;
+ # Visual Studio generator doesn't support -j switch
+ if (canUseNinja() || !isAnyWindows()) {
+ # By default we build using all of the available CPUs.
+ $makeArgs .= ($makeArgs ? " " : "") . "-j" . numberOfCPUs() if $makeArgs !~ /-j\s*\d+/;
+ my $maxCPULoad = maxCPULoad() if $makeArgs !~ /-l\s*\d+\.?\d*/;
+ $makeArgs .= " -l" . maxCPULoad() if defined $maxCPULoad;
+ }
# We remove CMakeCache to avoid the bots to reuse cached flags when
# we enable new features. This forces a reconfiguration.
- removeCMakeCache();
-
- buildCMakeProjectOrExit($clean, "Efl", $prefixPath, $makeArgs, (cmakeBasedPortArguments(), cMakeArgsFromFeatures()), $cmakeArgs);
-}
+ my @featureArgs = cMakeArgsFromFeatures();
+ removeCMakeCache(@featureArgs);
-if (isWinCE()) {
- buildCMakeProjectOrExit($clean, "WinCE", $prefixPath, $makeArgs, (cmakeBasedPortArguments(), cMakeArgsFromFeatures()), $cmakeArgs);
+ buildCMakeProjectOrExit($clean, $prefixPath, $makeArgs, (cmakeBasedPortArguments(), @featureArgs), $cmakeArgs);
}
-if (isBlackBerry()) {
- my $numberOfJobs;
- if ($ENV{"USE_ICECC"}) {
- $numberOfJobs = 50; # 50 is the number we choose for internal development
- } else {
- $numberOfJobs = numberOfCPUs();
- }
- $makeArgs .= ($makeArgs ? " " : "") . "-j" . $numberOfJobs if $makeArgs !~ /-j\s*\d+/;
- $prefixPath = $ENV{"STAGE_DIR"} unless $prefixPath;
- buildCMakeProjectOrExit($clean, "BlackBerry", $prefixPath, $makeArgs, (cmakeBasedPortArguments(), cMakeArgsFromFeatures()), $cmakeArgs);
-}
-
-if (isQt()) {
- @projects = (); # An empty projects list will build the default projects
- $result = buildQMakeProjects(\@projects, $clean, @options);
- exit exitStatus($result) if exitStatus($result);
-}
-
-# Build, and abort if the build fails.
-for my $dir (@projects) {
- chdir $dir or die;
- $result = 0;
-
- # For Gtk the WebKit project builds all others
- if (isGtk() && $dir ne "Source/WebKit") {
- chdirWebKit();
- next;
- }
-
- my $project = basename($dir);
- my $baseProductDir = baseProductDir();
- if (isGtk()) {
- $result = buildGtkProject($project, $clean, $prefixPath, $makeArgs, $noWebKit1, $noWebKit2, @features);
- } elsif (isAppleMacWebKit()) {
- my @local_options = @options;
- push @local_options, XcodeCoverageSupportOptions() if $coverageSupport;
- my $projectPath = $project =~ /gtest/ ? "xcode/gtest" : $project;
- $result = buildXCodeProject($projectPath, $clean, @local_options, @ARGV);
- } elsif (isAppleWinWebKit()) {
- if ($project eq "WebKit") {
- my $webkitSolutionPath = "WebKit.vcxproj/WebKit.sln";
- $result = buildVisualStudioProject($webkitSolutionPath, $clean);
- my $vsConfiguration = configurationForVisualStudio();
- if (usingVisualStudioExpress()) {
- # Visual Studio Express is so lame it can't stdout build failures.
- # So we find its logs and dump them to the console ourselves.
- open(my $OUTPUT_HANDLE, '<', "$baseProductDir/$vsConfiguration/BuildOutput.htm") or die "Could not open build log file at $baseProductDir/$vsConfiguration/BuildOutput.htm";
- print while (<$OUTPUT_HANDLE>);
- }
- }
+my $baseProductDir = baseProductDir();
+if (isAppleWinWebKit() || isWinCairo()) {
+ chdirWebKit();
+ if (exitStatus(generateBuildSystemFromCMakeProject())) {
+ die "Run \"C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/vcvarsall.bat\" before build-webkit when using ninja";
}
- # Various build* calls above may change the CWD.
chdirWebKit();
-
+ if (canUseNinja()) {
+ chdir File::Spec->catdir("WebKitBuild", configuration());
+ $result = system("ninja");
+ } else {
+ $result = buildVisualStudioProject(File::Spec->catfile("WebKitBuild", configuration(), "WebKit.sln"), $clean);
+ }
if (exitStatus($result)) {
my $scriptDir = relativeScriptsDir();
- if (isAppleWinWebKit()) {
+ if (isAppleWinWebKit() || isWinCairo()) {
print "\n\n===== BUILD FAILED ======\n\n";
print "Please ensure you have run $scriptDir/update-webkit to install dependencies.\n\n";
print "You can view build errors by checking the BuildLog.htm files located at:\n$baseProductDir/obj/<project>/<config>.\n";
}
exit exitStatus($result);
}
+} elsif (isAppleMacWebKit() && !isCMakeBuild()) {
+ # Build, and abort if the build fails.
+ for my $dir (@projects) {
+ chdir $dir or die;
+ $result = 0;
+
+ my $project = basename($dir);
+
+ my @local_options = @options;
+ push @local_options, XcodeCoverageSupportOptions() if $coverageSupport;
+ push @local_options, XcodeStaticAnalyzerOption() if $shouldRunStaticAnalyzer;
+ my $projectPath = $project =~ /gtest/ ? "xcode/gtest" : $project;
+ $result = buildXCodeProject($projectPath, $clean, @local_options, @ARGV);
+
+ # Various build* calls above may change the CWD.
+ chdirWebKit();
+
+ if (exitStatus($result)) {
+ exit exitStatus($result);
+ }
+ }
}
# Don't report the "WebKit is now built" message after a clean operation.
@@ -384,20 +328,6 @@ sub cMakeArgsFromFeatures()
return @args;
}
-sub formatBuildTime($)
-{
- my ($buildTime) = @_;
-
- my $buildHours = int($buildTime / 3600);
- my $buildMins = int(($buildTime - $buildHours * 3600) / 60);
- my $buildSecs = $buildTime - $buildHours * 3600 - $buildMins * 60;
-
- if ($buildHours) {
- return sprintf("%dh:%02dm:%02ds", $buildHours, $buildMins, $buildSecs);
- }
- return sprintf("%02dm:%02ds", $buildMins, $buildSecs);
-}
-
sub writeCongrats()
{
my $launcherPath = launcherPath();
@@ -408,7 +338,9 @@ sub writeCongrats()
print "\n";
print "====================================================================\n";
print " WebKit is now built ($buildTime). \n";
- print " To run $launcherName with this newly-built code, use the\n";
- print " \"$launcherPath\" script.\n";
+ if ($launcherPath && $launcherName) {
+ print " To run $launcherName with this newly-built code, use the\n";
+ print " \"$launcherPath\" script.\n";
+ }
print "====================================================================\n";
}
diff --git a/Tools/Scripts/build-webkittestrunner b/Tools/Scripts/build-webkittestrunner
deleted file mode 100755
index e5b23545b..000000000
--- a/Tools/Scripts/build-webkittestrunner
+++ /dev/null
@@ -1,73 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010 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. 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 INC. 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 File::Basename;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-my $showHelp = 0;
-my $clean = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --clean Clean up the build directory
-EOF
-
-GetOptions(
- 'help' => \$showHelp,
- 'clean' => \$clean,
-);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-checkRequiredSystemConfig();
-setConfiguration();
-chdirWebKit();
-
-# Build
-chdir "Tools/WebKitTestRunner" or die;
-
-my $result;
-if (isAppleMacWebKit()) {
- $result = buildXCodeProject("WebKitTestRunner", $clean, XcodeOptions(), @ARGV);
-} elsif (isAppleWinWebKit()) {
- $result = buildVisualStudioProject("WebKitTestRunner.sln", $clean);
-} elsif (isQt() || isGtk() || isEfl()) {
- # Qt and GTK+ build everything in one shot. No need to build anything here.
- $result = 0;
-} else {
- die "WebKitTestRunner is not supported on this platform.\n";
-}
-
-exit exitStatus($result);
diff --git a/Tools/Scripts/check-Xcode-source-file-types b/Tools/Scripts/check-Xcode-source-file-types
deleted file mode 100755
index 57a70b928..000000000
--- a/Tools/Scripts/check-Xcode-source-file-types
+++ /dev/null
@@ -1,168 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007, 2008, 2009, 2010 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 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 that source file extensions match file types in Xcode project.pbxproj files.
-
-# TODO
-# - Add support for file types other than source code files.
-# - Can't differentiate between sourcecode.c.h and sourcecode.cpp.h.
-# (Hint: Use gcc -x c/objective-c/c++/objective-c++ -E. It will
-# take time to check each header using gcc, so make it a switch.)
-
-use strict;
-
-use File::Basename;
-use File::Spec;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-
-# Map of Xcode file types to file extensions.
-my %typeExtensionMap = qw(
- sourcecode.c.c .c
- sourcecode.c.h .h
- sourcecode.c.objc .m
- sourcecode.cpp.h .h
- sourcecode.cpp.cpp .cpp
- sourcecode.cpp.objcpp .mm
- sourcecode.exports .exp
- sourcecode.javascript .js
- sourcecode.make .make
- sourcecode.mig .defs
- sourcecode.yacc .y
-);
-
-# Map of file extensions to Xcode file types.
-my %extensionTypeMap = map { $typeExtensionMap{$_} => $_ } keys %typeExtensionMap;
-$extensionTypeMap{'.h'} = 'sourcecode.c.h'; # See TODO list.
-
-my $shouldFixIssues = 0;
-my $printWarnings = 1;
-my $showHelp;
-
-my $getOptionsResult = GetOptions(
- 'f|fix' => \$shouldFixIssues,
- 'h|help' => \$showHelp,
- 'w|warnings!' => \$printWarnings,
-);
-
-if (scalar(@ARGV) == 0 && !$showHelp) {
- 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 ...]
- -f|--fix fix mismatched types in Xcode project file
- -h|--help show this help message
- -w|--[no-]warnings show or suppress warnings (default: show warnings)
-__END__
- exit 1;
-}
-
-for my $projectFile (@ARGV) {
- my $issuesFound = 0;
- my $issuesFixed = 0;
-
- if (basename($projectFile) =~ /\.xcodeproj$/) {
- $projectFile = File::Spec->catfile($projectFile, "project.pbxproj");
- }
-
- if (basename($projectFile) ne "project.pbxproj") {
- print STDERR "WARNING: Not an Xcode project file: $projectFile\n" if $printWarnings;
- next;
- }
-
- open(IN, "< $projectFile") || die "Could not open $projectFile: $!";
-
- my ($OUT, $tempFileName);
- if ($shouldFixIssues) {
- ($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);
- };
- }
-
- # Fast-forward to "Begin PBXFileReference section".
- while (my $line = <IN>) {
- print $OUT $line if $shouldFixIssues;
- last if $line =~ m#^\Q/* Begin PBXFileReference section */\E$#;
- }
-
- while (my $line = <IN>) {
- if ($line =~ m#^\Q/* End PBXFileReference section */\E$#) {
- print $OUT $line if $shouldFixIssues;
- last;
- }
-
- if ($line =~ m#^\s*[A-Z0-9]{24} /\* (.+) \*/\s+=\s+\{.*\s+explicitFileType = (sourcecode[^;]*);.*\s+path = ([^;]+);.*\};$#) {
- my $fileName = $1;
- my $fileType = $2;
- my $filePath = $3;
- my (undef, undef, $fileExtension) = map { lc($_) } fileparse(basename($filePath), qr{\.[^.]+$});
-
- if (!exists $typeExtensionMap{$fileType}) {
- $issuesFound++;
- print STDERR "WARNING: Unknown file type '$fileType' for file '$filePath'.\n" if $printWarnings;
- } elsif ($typeExtensionMap{$fileType} ne $fileExtension) {
- $issuesFound++;
- print STDERR "WARNING: Incorrect file type '$fileType' for file '$filePath'.\n" if $printWarnings;
- $line =~ s/(\s+)explicitFileType( = )(sourcecode[^;]*);/$1lastKnownFileType$2$extensionTypeMap{$fileExtension};/;
- $issuesFixed++ if $shouldFixIssues;
- }
- }
-
- print $OUT $line if $shouldFixIssues;
- }
-
- # Output the rest of the file.
- print $OUT <IN> if $shouldFixIssues;
-
- close(IN);
-
- if ($shouldFixIssues) {
- close($OUT);
-
- unlink($projectFile) || die "Could not delete $projectFile: $!";
- rename($tempFileName, $projectFile) || die "Could not rename $tempFileName to $projectFile: $!";
- }
-
- if ($printWarnings) {
- printf STDERR "%s issues found for $projectFile.\n", ($issuesFound ? $issuesFound : "No");
- print STDERR "$issuesFixed issues fixed for $projectFile.\n" if $issuesFixed && $shouldFixIssues;
- print STDERR "NOTE: Open $projectFile in Xcode to let it have its way with the file.\n" if $issuesFixed;
- print STDERR "\n";
- }
-}
-
-exit 0;
diff --git a/Tools/Scripts/check-dom-results b/Tools/Scripts/check-dom-results
deleted file mode 100755
index 0b3240697..000000000
--- a/Tools/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/Tools/Scripts/check-for-exit-time-destructors b/Tools/Scripts/check-for-exit-time-destructors
deleted file mode 100755
index ae8fc0d59..000000000
--- a/Tools/Scripts/check-for-exit-time-destructors
+++ /dev/null
@@ -1,152 +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-exit-time-destructors" script for WebKit Open Source Project
-
-# Intended to be invoked from an Xcode build step to check if there are
-# any exit-time destructors in a target.
-
-use warnings;
-use strict;
-
-use File::Basename;
-
-sub touch($);
-sub printFunctions($$);
-
-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 $scriptAge = -M $0;
-
-my $list = $ENV{"LINK_FILE_LIST_${variant}_${arch}"};
-
-if (!open LIST, $list) {
- print "ERROR: 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 && $buildTimestampAge < $scriptAge) {
- my $fileAge = -M $file;
- next if defined $fileAge && $fileAge > $buildTimestampAge;
- }
- if (!open NM, "(nm '$file' | sed 's/^/STDOUT:/') 2>&1 |") {
- print "ERROR: Could not open $file\n";
- $sawError = 1;
- next;
- }
- my $sawAtExit = 0;
- my $shortName = $file;
- $shortName =~ s/.*\///;
-
- while (<NM>) {
- if (/^STDOUT:/) {
- # With GC logging enabled Heap.o may contain finalizers, so we ignore them.
- $sawAtExit = 1 if (/___cxa_atexit/ && ($shortName ne "Heap.o"));
- } else {
- print STDERR if $_ ne "nm: no name list\n";
- }
- }
- close NM;
- next unless $sawAtExit;
-
- $sawError = 1 if printFunctions($shortName, $file);
-}
-
-if ($sawError and !$coverageBuild) {
- print "ERROR: Use DEFINE_STATIC_LOCAL from <wtf/StdLibExtras.h>\n";
- unlink $executablePath;
- exit 1;
-}
-
-touch($buildTimestampPath);
-exit 0;
-
-sub touch($)
-{
- my ($path) = @_;
- open(TOUCH, ">", $path) or die "$!";
- close(TOUCH);
-}
-
-sub demangle($)
-{
- my ($symbol) = @_;
- if (!open FILT, "c++filt $symbol |") {
- print "ERROR: Could not open c++filt\n";
- return;
- }
- my $result = <FILT>;
- close FILT;
- chomp $result;
- return $result;
-}
-
-sub printFunctions($$)
-{
- my ($shortName, $path) = @_;
- if (!open OTOOL, "otool -tV '$path' |") {
- print "WARNING: Could not open $path\n";
- return 0;
- }
- my %functions;
- my $currentSymbol = "";
- while (<OTOOL>) {
- $currentSymbol = $1 if /^(\w+):$/;
- next unless $currentSymbol;
- $functions{demangle($currentSymbol)} = 1 if /___cxa_atexit/;
- }
- close OTOOL;
- my $result = 0;
- for my $function (sort keys %functions) {
- if (!$result) {
- print "ERROR: $shortName has exit time destructors in it! ($path)\n";
- $result = 1;
- }
- print "ERROR: In function $function\n";
- }
- return $result;
-}
diff --git a/Tools/Scripts/check-for-global-initializers b/Tools/Scripts/check-for-global-initializers
deleted file mode 100755
index 7f9057748..000000000
--- a/Tools/Scripts/check-for-global-initializers
+++ /dev/null
@@ -1,167 +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($);
-sub demangle($);
-
-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 $scriptAge = -M $0;
-
-my $list = $ENV{"LINK_FILE_LIST_${variant}_${arch}"};
-
-if (!open LIST, $list) {
- print "ERROR: 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 && $buildTimestampAge < $scriptAge) {
- my $fileAge = -M $file;
- next if defined $fileAge && $fileAge > $buildTimestampAge;
- }
- if (!open NM, "(nm '$file' | sed 's/^/STDOUT:/') 2>&1 |") {
- print "ERROR: Could not open $file\n";
- $sawError = 1;
- next;
- }
- my $sawGlobal = 0;
- my @globals;
- while (<NM>) {
- if (/^STDOUT:/) {
- my $line = $_;
- if ($line =~ /__GLOBAL__I(.+)$/) {
- $sawGlobal = 1;
- push(@globals, demangle($1));
- }
- } 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 "Structure.o";
- next if $shortName eq "nodes.o";
- }
- if ($target eq "WebCore") {
- next if $shortName eq "BidiRun.o";
- next if $shortName eq "CachedPage.o";
- next if $shortName eq "CachedResource.o";
- next if $shortName eq "FEGaussianBlur.o";
- next if $shortName eq "Frame.o";
- next if $shortName eq "JSCustomSQLTransactionCallback.o";
- next if $shortName eq "JSLazyEventListener.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 "SVGElementInstance.o";
- next if $shortName eq "SubresourceLoader.o";
- next if $shortName eq "XMLHttpRequest.o";
- }
- if ($target eq "WebKit") {
- next if $shortName eq "HostedNetscapePluginStream.o";
- next if $shortName eq "NetscapePluginInstanceProxy.o";
- }
- if ($target eq "WebKit2") {
- next if $shortName eq "WebContext.o";
- next if $shortName eq "WebFrame.o";
- next if $shortName eq "WebPage.o";
- next if $shortName eq "WebPageProxy.o";
- }
- }
-
- print "ERROR: $shortName has one or more global initializers in it! ($file), near @globals\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);
-}
-
-sub demangle($)
-{
- my ($symbol) = @_;
- if (!open FILT, "c++filt $symbol |") {
- print "ERROR: Could not open c++filt\n";
- return;
- }
- my $result = <FILT>;
- close FILT;
- chomp $result;
- return $result;
-}
-
diff --git a/Tools/Scripts/check-for-inappropriate-files-in-framework b/Tools/Scripts/check-for-inappropriate-files-in-framework
deleted file mode 100755
index 41e7c84f7..000000000
--- a/Tools/Scripts/check-for-inappropriate-files-in-framework
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2010 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. 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 INC. 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.
-
-base_directory = ENV['TARGET_BUILD_DIR'] or throw "Unable to find TARGET_BUILD_DIR in the environment!"
-project_name = ENV['PROJECT_NAME'] or throw "Unable to find PROJECT_NAME in the environment!"
-is_shallow_bundle = (ENV['SHALLOW_BUNDLE'] || "NO").upcase == "YES"
-
-$INAPPROPRIATE_FILES = { "WebCore" => { "Resources" => ["*.css", "*.in", "*.idl", "*.h"] },
- "WebKit2" => { "Resources" => ["*.in", "*.h"] },
- }
-
-Dir.chdir base_directory
-
-$error_printed = false
-
-def print_error msg
- $error_printed = true
- STDERR.puts "ERROR: #{msg}"
-end
-
-def print_inappropriate_file_error framework, relative_path
- print_error "#{framework}.framework/#{relative_path} should not be present in the framework."
-end
-
-def check_framework framework, is_shallow_bundle
- $INAPPROPRIATE_FILES[framework].each do |directory, patterns|
- framework_bundle_path = is_shallow_bundle ? "#{framework}.framework" : "#{framework}.framework/Versions/A/#{directory}"
- Dir.chdir framework_bundle_path do
- patterns.each do |pattern|
- Dir.glob(pattern).each do |inappropriate_file|
- print_inappropriate_file_error framework, is_shallow_bundle ? inappropriate_file : "#{directory}/#{inappropriate_file}"
- File.unlink inappropriate_file
- end
- end
- end
- end
-end
-
-check_framework project_name, is_shallow_bundle
-
-if $error_printed
- STDERR.puts
- STDERR.puts " Inappropriate files were detected and have been removed from the framework."
- STDERR.puts " If this error continues to appear after building again then the build system needs"
- STDERR.puts " to be modified so that the inappropriate files are no longer copied in to the framework."
- STDERR.puts
- exit 1
-end
diff --git a/Tools/Scripts/check-for-inappropriate-macros-in-external-headers b/Tools/Scripts/check-for-inappropriate-macros-in-external-headers
deleted file mode 100755
index 7e6c31f0e..000000000
--- a/Tools/Scripts/check-for-inappropriate-macros-in-external-headers
+++ /dev/null
@@ -1,77 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2012 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. 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 INC. 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 checks that the given headers in the framework build product do
-# not contain Platform.h and Compiler.h macros such as PLATFORM, COMPILER, etc.
-# This is meant to limit the exposure of the WTF headers, ensuring that if
-# clients include these headers they would not also need WTF's Platform.h.
-
-base_directory = ENV['TARGET_BUILD_DIR'] or throw "Unable to find TARGET_BUILD_DIR in the environment!"
-project_name = ENV['PROJECT_NAME'] or throw "Unable to find PROJECT_NAME in the environment!"
-$is_shallow_bundle = (ENV['SHALLOW_BUNDLE'] || "NO").upcase == "YES"
-
-$error_printed = false
-
-def print_error(msg)
- $error_printed = true
- STDERR.puts "ERROR: #{msg}"
-end
-
-def framework_headers_for_path(framework, path)
- full_path = File.join Dir.pwd, framework, $is_shallow_bundle ? "" : "Versions/A/", path
- if File.directory? full_path
- Dir.glob "#{full_path}/**/*.h"
- elsif File.exists? full_path
- [full_path]
- else
- print_error "path '#{full_path}' for argument '#{path}' does not exist."
- [] # Return an empty list so we can continue to check the other paths.
- end
-end
-
-def verify_macros_in_header(header)
- File.open(header) do |file|
- file.each_line.with_index do |line, index|
- # Check for the common macros from Platform.h and Compiler.h.
- # NOTE: Negative lookahead (?!error) prevents matching "#error WebKit was not available prior to Mac OS X 10.2".
- # NOTE: Negative lookahead (?!:2) prevents matching OS2 in macros like "defined(__OS2__)".
- if match = /^\s*#(?!error).*?\b(PLATFORM|CPU|HAVE|OS(?!2)|USE|ENABLE|COMPILER)/.match(line)
- print_error "'#{header}:#{index+1}' included forbidden macro '#{match[1]}' => '#{line.chomp}'"
- end
- end
- end
-end
-
-
-Dir.chdir base_directory
-
-framework = "#{project_name}.framework"
-ARGV.each do |path|
- framework_headers_for_path(framework, path).each do |header|
- verify_macros_in_header(header)
- end
-end
-
-exit 1 if $error_printed
diff --git a/Tools/Scripts/check-for-inappropriate-objc-class-names b/Tools/Scripts/check-for-inappropriate-objc-class-names
deleted file mode 100755
index 5ee8410b0..000000000
--- a/Tools/Scripts/check-for-inappropriate-objc-class-names
+++ /dev/null
@@ -1,114 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006, 2007, 2008, 2010, 2011 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. 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 INC. 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-inappropriate-objc-class-names" script for WebKit Open Source Project
-
-# Intended to be invoked from an Xcode build step to check if a framework
-# defines any Objective-C class whose name does not have one of the prefixes
-# the framework is allowed to use.
-
-use warnings;
-use strict;
-
-use File::Basename;
-
-sub touch($);
-
-my @allowedPrefixes = @ARGV;
-
-# Xcode will automatically link ObjC binaries against libarclite in some cases, which defines a class called __ARCLite__.
-push(@allowedPrefixes, "__ARCLite");
-
-die "No allowed prefixes passed on the command line" if !@allowedPrefixes;
-
-my $arch = $ENV{'CURRENT_ARCH'};
-my $target = $ENV{'TARGET_NAME'};
-my $variant = $ENV{'CURRENT_VARIANT'};
-my $coverageBuild = $ENV{'WEBKIT_COVERAGE_BUILD'};
-
-my $executablePath = "$ENV{'TARGET_BUILD_DIR'}/$ENV{'EXECUTABLE_PATH'}";
-
-my $buildTimestampPath = $ENV{'TARGET_TEMP_DIR'} . "/" . basename($0) . join('-', @allowedPrefixes) . ".timestamp";
-my $buildTimestampAge = -M $buildTimestampPath;
-my $executablePathAge = -M $executablePath;
-my $scriptAge = -M $0;
-
-my $pattern = "^(" . join('|', @allowedPrefixes) . ")";
-
-my $sawError = 0;
-
-if (!defined $executablePathAge || !defined $buildTimestampAge || $executablePathAge < $buildTimestampAge || $scriptAge < $buildTimestampAge) {
- if (!open NM, "(nm -Ugjp '$executablePath' | sed 's/^/STDOUT:/') 2>&1 |") {
- print "ERROR: Could not open $executablePath\n";
- $sawError = 1;
- next;
- }
- my @badNames;
- while (<NM>) {
- if (/^STDOUT:/) {
- next unless /^STDOUT:_OBJC_CLASS_\$_/;
- chomp;
- my $className = substr($_, 21);
- push(@badNames, $className) unless $className =~ /$pattern/;
- } else {
- print STDERR if $_ ne "nm: no name list\n";
- }
- }
- close NM;
-
- if (@badNames) {
-
- my $shortName = $executablePath;
- $shortName =~ s/.*\///;
-
- print "ERROR: $shortName defines one or more Objective-C classes with inappropriate names. ($executablePath)\n";
- for my $className (@badNames) {
- print "ERROR: Inappropriate Objective-C class name: $className.\n";
- }
-
- if (@allowedPrefixes > 1) {
- print "ERROR: Objective-C class names in $target must have one of these prefixes: " . join(", ", map('"' . $_ . '"', @allowedPrefixes)) . ".\n";
- } else {
- print "ERROR: Objective-C class names in $target must have the prefix \"" . $allowedPrefixes[0] . "\".\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/Tools/Scripts/check-for-weak-vtables-and-externals b/Tools/Scripts/check-for-weak-vtables-and-externals
deleted file mode 100755
index dfbf89fef..000000000
--- a/Tools/Scripts/check-for-weak-vtables-and-externals
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2006, 2007, 2008, 2010 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.
-
-# "check-for-weak-vtables-and-externals" script for WebKit Open Source Project
-
-# Intended to be invoked from an Xcode build step to check if there are
-# any weak vtables or weak externals 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 "ERROR: Could not open $executablePath\n";
- $sawError = 1;
- next;
- }
- my @weakVTableClasses = ();
- my @weakExternalSymbols = ();
- while (<NM>) {
- if (/^STDOUT:/) {
- # Ignore undefined, RTTI and typeinfo symbols.
- next if /\bundefined\b/ or /\b__ZT[IS]/;
-
- if (/weak external vtable for (.*)$/) {
- push @weakVTableClasses, $1;
- } elsif (/weak external (.*)$/) {
- push @weakExternalSymbols, $1;
- }
- } else {
- print STDERR if $_ ne "nm: no name list\n";
- }
- }
- close NM;
-
- my $shortName = $executablePath;
- $shortName =~ s/.*\///;
-
- if (@weakVTableClasses) {
- print "ERROR: $shortName has a weak vtable in it ($executablePath)\n";
- print "ERROR: Fix by making sure the first virtual function in each of these classes is not an inline:\n";
- for my $class (sort @weakVTableClasses) {
- print "ERROR: class $class\n";
- }
- $sawError = 1;
- }
-
- if (@weakExternalSymbols) {
- print "ERROR: $shortName has a weak external symbol in it ($executablePath)\n";
- print "ERROR: A weak external symbol is generated when a symbol is defined in multiple compilation units and is also marked as being exported from the library.\n";
- print "ERROR: A common cause of weak external symbols is when an inline function is listed in the linker export file.\n";
- for my $symbol (sort @weakExternalSymbols) {
- print "ERROR: symbol $symbol\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/Tools/Scripts/check-for-webkit-framework-include-consistency b/Tools/Scripts/check-for-webkit-framework-include-consistency
deleted file mode 100755
index fabc6922c..000000000
--- a/Tools/Scripts/check-for-webkit-framework-include-consistency
+++ /dev/null
@@ -1,104 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2010 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. 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 INC. 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.
-
-
-base_directory = ENV['TARGET_BUILD_DIR'] or throw "Unable to find TARGET_BUILD_DIR in the environment!"
-is_shallow_bundle = (ENV['SHALLOW_BUNDLE'] || "NO").upcase == "YES"
-
-Dir.chdir base_directory
-
-$PERMITTED_INCLUDE_TYPES = { :public => [ :public ], :private => [ :public, :private ] }
-
-$HEADER_NAMES_TO_TYPE = { }
-$HEADERS_BY_TYPE = { :public => [], :private => [] }
-
-$error_printed = false
-
-def print_error msg
- $error_printed = true
- STDERR.puts "ERROR: #{msg}"
-end
-
-def build_header_maps is_shallow_bundle
- current_version_path = is_shallow_bundle ? "" : "Versions/A/"
- all_headers = `find WebKit.framework/#{current_version_path}{,Private}Headers -type f -name '*.h'`.split
-
- all_headers.each do |header|
- if /\/Headers\/(.*)/.match(header)
- $HEADER_NAMES_TO_TYPE[$1] = :public
- $HEADERS_BY_TYPE[:public] << header
- elsif /\/PrivateHeaders\/(.*)/.match(header)
- $HEADER_NAMES_TO_TYPE[$1] = :private
- $HEADERS_BY_TYPE[:private] << header
- else
- print_error "Unknown header type: #{header}"
- end
- end
-end
-
-def resolve_include(header, included_header, permitted_types)
- # Ignore includes that aren't in the typical framework style.
- return unless /<([^\/]+)\/(.*)>/.match(included_header)
-
- framework, included_header_name = [$1, $2]
-
- # Ignore includes that aren't related to other WebKit headers.
- return unless framework =~ /^Web/
-
- # A header of any type including a WebCore header is a recipe for disaster.
- if framework == "WebCore"
- print_error "#{header} included #{included_header}!"
- return
- end
-
- header_type = $HEADER_NAMES_TO_TYPE[included_header_name]
-
- if not header_type
- print_error "#{header} included #{included_header} but I could not find a header of that name!"
- elsif not permitted_types.member?(header_type)
- print_error "#{header} included #{included_header} which is #{header_type}!"
- end
-end
-
-def verify_includes(header, permitted_types)
- File.open(header) do |file|
- file.each_line do |line|
- if /#(include|import) (.*)/.match(line)
- resolve_include(header, $2, permitted_types)
- end
- end
- end
-end
-
-build_header_maps is_shallow_bundle
-
-$HEADERS_BY_TYPE.each do |header_type, headers|
- permitted_types = $PERMITTED_INCLUDE_TYPES[header_type]
- headers.each do |header|
- verify_includes header, permitted_types
- end
-end
-
-exit 1 if $error_printed
diff --git a/Tools/Scripts/check-inspector-strings b/Tools/Scripts/check-inspector-strings
deleted file mode 100755
index 2408031df..000000000
--- a/Tools/Scripts/check-inspector-strings
+++ /dev/null
@@ -1,170 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011 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.
-
-import codecs
-import logging
-import os
-import os.path
-import re
-import sys
-
-from webkitpy.common.checkout.scm import SCMDetector
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.logutils import configure_logging
-from webkitpy.style.checker import ProcessorBase
-from webkitpy.style.filereader import TextFileReader
-from webkitpy.style.main import change_directory
-
-_inspector_directory = "Source/WebCore/inspector/front-end"
-_localized_strings = "Source/WebCore/English.lproj/localizedStrings.js"
-
-_log = logging.getLogger("check-inspector-strings")
-
-class StringsExtractor(ProcessorBase):
- def __init__(self, patterns):
- self._patterns = patterns
- self.strings = []
- for p in self._patterns:
- self.strings.append([])
-
- def should_process(self, file_path):
- return file_path.endswith(".js") and (not file_path.endswith("InjectedScript.js"))
-
- def process(self, lines, file_path, line_numbers=None):
- for line in lines:
- comment_start = line.find("//")
- if comment_start != -1:
- line = line[:comment_start]
- index = 0
- for pattern in self._patterns:
- line_strings = re.findall(pattern, line)
- for string in line_strings:
- self.strings[index].append(string)
- index += 1
-
-class LocalizedStringsExtractor:
- def __init__(self):
- self.localized_strings = []
-
- def process_file(self, file_path):
- localized_strings_file = codecs.open(file_path, encoding="utf-8", mode="r")
- try:
- contents = localized_strings_file.read()
- lines = contents.split("\n")
- for line in lines:
- match = re.match(r"localizedStrings\[\"((?:[^\"\\]|\\.)*?)\"", line)
- if match:
- self.localized_strings.append(match.group(1))
- finally:
- localized_strings_file.close()
-
-def extract_ui_strings(str, out):
- line_unrecognized = False
- idx = 0
- while idx < len(str):
- idx = str.find("WebInspector.UIString(", idx)
- if idx == -1:
- break
- idx = idx + len("WebInspector.UIString(")
- balance = 1
- item_recognized = False
- while idx < len(str):
- if str[idx] == ')':
- balance = balance - 1
- if balance == 0:
- break
- elif str[idx] == '(':
- balance = balance + 1
- elif balance == 1:
- if str[idx] == ',':
- break
- elif str[idx] == '"':
- str_idx = idx + 1
- while str_idx < len(str):
- if str[str_idx] == '\\':
- str_idx = str_idx + 1
- elif str[str_idx] == '"':
- out.add(str[idx + 1 : str_idx])
- idx = str_idx
- item_recognized = True
- break
- str_idx = str_idx + 1
- idx = idx + 1
- if not item_recognized:
- line_unrecognized = True
- if line_unrecognized:
- _log.info("Unrecognized: %s" % str)
-
-if __name__ == "__main__":
- configure_logging()
-
- cwd = os.path.abspath(os.curdir)
- filesystem = FileSystem()
- scm = SCMDetector(filesystem, Executive()).detect_scm_system(cwd)
-
- if scm is None:
- _log.error("WebKit checkout not found: You must run this script "
- "from within a WebKit checkout.")
- sys.exit(1)
-
- checkout_root = scm.checkout_root
- _log.debug("WebKit checkout found with root: %s" % checkout_root)
- change_directory(filesystem, checkout_root=checkout_root, paths=None)
-
- strings_extractor = StringsExtractor([r"(WebInspector\.UIString\(.*)", r"\"((?:[^\"\\]|\\.)*?)\""])
- file_reader = TextFileReader(filesystem, strings_extractor)
- file_reader.process_paths([_inspector_directory])
- localized_strings_extractor = LocalizedStringsExtractor()
- localized_strings_extractor.process_file(_localized_strings)
- raw_ui_strings = frozenset(strings_extractor.strings[0])
- ui_strings = set()
- for s in raw_ui_strings:
- extract_ui_strings(s, ui_strings)
- strings = frozenset(strings_extractor.strings[1])
- localized_strings = frozenset(localized_strings_extractor.localized_strings)
-
- new_strings = ui_strings - localized_strings
- for s in new_strings:
- _log.info("New: \"%s\"" % (s))
- old_strings = localized_strings - ui_strings
- suspicious_strings = strings & old_strings
- for s in suspicious_strings:
- _log.info("Suspicious: \"%s\"" % (s))
- unused_strings = old_strings - strings
- for s in unused_strings:
- _log.info("Unused: \"%s\"" % (s))
-
- localized_strings_duplicates = {}
- for s in localized_strings_extractor.localized_strings:
- if s in localized_strings_duplicates:
- _log.info("Duplicate: \"%s\"" % (s))
- else:
- localized_strings_duplicates.setdefault(s)
diff --git a/Tools/Scripts/check-webkit-style b/Tools/Scripts/check-webkit-style
deleted file mode 100755
index 54ca276ea..000000000
--- a/Tools/Scripts/check-webkit-style
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-"""Does WebKit-lint on C/C++ or text files.
-
-The goal of this script is to identify places in the code that *may*
-be in non-compliance with WebKit style. It does not attempt to fix
-up these problems -- the point is to educate. It does also not
-attempt to find all problems, or to ensure that everything it does
-find is legitimately a problem."""
-
-import sys
-
-import webkitpy.common.version_check
-
-from webkitpy.style.main import CheckWebKitStyle
-
-
-if __name__ == "__main__":
- sys.exit(CheckWebKitStyle().main())
diff --git a/Tools/Scripts/clean-header-guards b/Tools/Scripts/clean-header-guards
deleted file mode 100755
index 2bad046ed..000000000
--- a/Tools/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/Tools/Scripts/commit-log-editor b/Tools/Scripts/commit-log-editor
deleted file mode 100755
index e79056939..000000000
--- a/Tools/Scripts/commit-log-editor
+++ /dev/null
@@ -1,371 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007, 2008, 2009, 2010 Apple Inc. All rights reserved.
-# Copyright (C) 2009 Torch Mobile 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 Getopt::Long;
-use File::Basename;
-use File::Spec;
-use FindBin;
-use lib $FindBin::Bin;
-use VCSUtils;
-use webkitdirs;
-
-sub createCommitMessage(@);
-sub loadTermReadKey();
-sub normalizeLineEndings($$);
-sub patchAuthorshipString($$$);
-sub removeLongestCommonPrefixEndingInDoubleNewline(\%);
-sub isCommitLogEditor($);
-
-my $endl = "\n";
-
-sub printUsageAndExit
-{
- my $programName = basename($0);
- print STDERR <<EOF;
-Usage: $programName [--regenerate-log] <log file>
- $programName --print-log <ChangeLog file> [<ChangeLog file>...]
- $programName --help
-EOF
- exit 1;
-}
-
-my $help = 0;
-my $printLog = 0;
-my $regenerateLog = 0;
-
-my $getOptionsResult = GetOptions(
- 'help' => \$help,
- 'print-log' => \$printLog,
- 'regenerate-log' => \$regenerateLog,
-);
-
-if (!$getOptionsResult || $help) {
- printUsageAndExit();
-}
-
-die "Can't specify both --print-log and --regenerate-log\n" if $printLog && $regenerateLog;
-
-if ($printLog) {
- printUsageAndExit() unless @ARGV;
- print createCommitMessage(@ARGV);
- exit 0;
-}
-
-my $log = $ARGV[0];
-if (!$log) {
- printUsageAndExit();
-}
-
-my $baseDir = baseProductDir();
-
-my $editor = $ENV{SVN_LOG_EDITOR};
-$editor = $ENV{CVS_LOG_EDITOR} if !$editor;
-$editor = "" if $editor && isCommitLogEditor($editor);
-
-my $splitEditor = 1;
-if (!$editor) {
- my $builtEditorApplication = "$baseDir/Release/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- if (-x $builtEditorApplication) {
- $editor = $builtEditorApplication;
- $splitEditor = 0;
- }
-}
-if (!$editor) {
- my $builtEditorApplication = "$baseDir/Debug/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- if (-x $builtEditorApplication) {
- $editor = $builtEditorApplication;
- $splitEditor = 0;
- }
-}
-if (!$editor) {
- my $builtEditorApplication = "$ENV{HOME}/Applications/Commit Log Editor.app/Contents/MacOS/Commit Log Editor";
- if (-x $builtEditorApplication) {
- $editor = $builtEditorApplication;
- $splitEditor = 0;
- }
-}
-
-$editor = $ENV{EDITOR} if !$editor;
-$editor = "/usr/bin/vi" if !$editor;
-
-my @editor;
-if ($splitEditor) {
- @editor = split ' ', $editor;
-} else {
- @editor = ($editor);
-}
-
-my $inChangesToBeCommitted = !isGit();
-my @changeLogs = ();
-my $logContents = "";
-my $existingLog = 0;
-open LOG, $log or die "Could not open the log file.";
-while (my $curLine = <LOG>) {
- if (isGit()) {
- if ($curLine =~ /^# Changes to be committed:$/) {
- $inChangesToBeCommitted = 1;
- } elsif ($inChangesToBeCommitted && $curLine =~ /^# \S/) {
- $inChangesToBeCommitted = 0;
- }
- }
-
- if (!isGit() || $curLine =~ /^#/) {
- $logContents .= $curLine;
- } else {
- # $_ contains the current git log message
- # (without the log comment info). We don't need it.
- }
- $existingLog = isGit() && !($curLine =~ /^#/ || $curLine =~ /^\s*$/) unless $existingLog;
- my $changeLogFileName = changeLogFileName();
- push @changeLogs, makeFilePathRelative($1) if $inChangesToBeCommitted && ($curLine =~ /^(?:M|A)....(.*$changeLogFileName)\r?\n?$/ || $curLine =~ /^#\t(?:modified|new file): (.*$changeLogFileName)$/) && $curLine !~ /-$changeLogFileName$/;
-}
-close LOG;
-
-# We want to match the line endings of the existing log file in case they're
-# different from perl's line endings.
-$endl = $1 if $logContents =~ /(\r?\n)/;
-
-my $keepExistingLog = 1;
-if ($regenerateLog && $existingLog && scalar(@changeLogs) > 0 && loadTermReadKey()) {
- print "Existing log message detected, Use 'r' to regenerate log message from ChangeLogs, or any other key to keep the existing message.\n";
- Term::ReadKey::ReadMode('cbreak');
- my $key = Term::ReadKey::ReadKey(0);
- Term::ReadKey::ReadMode('normal');
- $keepExistingLog = 0 if ($key eq "r");
-}
-
-# Don't change anything if there's already a log message (as can happen with git-commit --amend).
-exec (@editor, @ARGV) if $existingLog && $keepExistingLog;
-
-my $first = 1;
-open NEWLOG, ">$log.edit" or die;
-if (isGit() && @changeLogs == 0) {
- # populate git commit message with WebKit-format ChangeLog entries unless explicitly disabled
- my $branch = gitBranch();
- chomp(my $webkitGenerateCommitMessage = `git config --bool branch.$branch.webkitGenerateCommitMessage`);
- if ($webkitGenerateCommitMessage eq "") {
- chomp($webkitGenerateCommitMessage = `git config --bool core.webkitGenerateCommitMessage`);
- }
- if ($webkitGenerateCommitMessage ne "false") {
- open CHANGELOG_ENTRIES, "-|", "$FindBin::Bin/prepare-ChangeLog --git-index --no-write" or die "prepare-ChangeLog failed: $!.\n";
- while (<CHANGELOG_ENTRIES>) {
- print NEWLOG normalizeLineEndings($_, $endl);
- }
- close CHANGELOG_ENTRIES;
- }
-} else {
- print NEWLOG createCommitMessage(@changeLogs);
-}
-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 createCommitMessage(@)
-{
- my @changeLogs = @_;
-
- my $topLevel = determineVCSRoot();
-
- my %changeLogSort;
- my %changeLogContents;
- for my $changeLog (@changeLogs) {
- open CHANGELOG, $changeLog or die "Can't open $changeLog";
- my $contents = "";
- my $blankLines = "";
- my $lineCount = 0;
- my $date = "";
- my $author = "";
- my $email = "";
- my $hasAuthorInfoToWrite = 0;
- while (<CHANGELOG>) {
- if (/^\S/) {
- last if $contents;
- }
- if (/\S/) {
- $contents .= $blankLines if $contents;
- $blankLines = "";
-
- my $line = $_;
-
- # Remove indentation spaces
- $line =~ s/^ {8}//;
-
- # Grab the author and the date line
- if ($line =~ m/^([0-9]{4}-[0-9]{2}-[0-9]{2})\s+(.*[^\s])\s+<(.*)>/ && $lineCount == 0) {
- $date = $1;
- $author = $2;
- $email = $3;
- $hasAuthorInfoToWrite = 1;
- next;
- }
-
- if ($hasAuthorInfoToWrite) {
- my $isReviewedByLine = $line =~ m/^(?:Reviewed|Rubber[ \-]?stamped) by/;
- my $isModifiedFileLine = $line =~ m/^\* .*:/;
-
- # Insert the authorship line if needed just above the "Reviewed by" line or the
- # first modified file (whichever comes first).
- if ($isReviewedByLine || $isModifiedFileLine) {
- $hasAuthorInfoToWrite = 0;
- my $authorshipString = patchAuthorshipString($author, $email, $date);
- if ($authorshipString) {
- $contents .= "$authorshipString\n";
- $contents .= "\n" if $isModifiedFileLine;
- }
- }
- }
-
-
- $lineCount++;
- $contents .= $line;
- } else {
- $blankLines .= $_;
- }
- }
- if ($hasAuthorInfoToWrite) {
- # We didn't find anywhere to put the authorship info, so just put it at the end.
- my $authorshipString = patchAuthorshipString($author, $email, $date);
- $contents .= "\n$authorshipString\n" if $authorshipString;
- $hasAuthorInfoToWrite = 0;
- }
-
- 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 "LayoutTests") {
- $sortKey = lc "~, LayoutTests last";
- }
-
- $changeLogSort{$sortKey} = $label;
- $changeLogContents{$label} = $contents;
- }
-
- my $commonPrefix = removeLongestCommonPrefixEndingInDoubleNewline(%changeLogContents);
-
- my $first = 1;
- my @result;
- push @result, normalizeLineEndings($commonPrefix, $endl);
- for my $sortKey (sort keys %changeLogSort) {
- my $label = $changeLogSort{$sortKey};
- if (keys %changeLogSort > 1) {
- push @result, normalizeLineEndings("\n", $endl) if !$first;
- $first = 0;
- push @result, normalizeLineEndings("$label: ", $endl);
- }
- push @result, normalizeLineEndings($changeLogContents{$label}, $endl);
- }
-
- return join '', @result;
-}
-
-sub loadTermReadKey()
-{
- eval { require Term::ReadKey; };
- return !$@;
-}
-
-sub normalizeLineEndings($$)
-{
- my ($string, $endl) = @_;
- $string =~ s/\r?\n/$endl/g;
- return $string;
-}
-
-sub patchAuthorshipString($$$)
-{
- my ($authorName, $authorEmail, $authorDate) = @_;
-
- return if $authorEmail eq changeLogEmailAddress();
- return "Patch by $authorName <$authorEmail> on $authorDate";
-}
-
-sub removeLongestCommonPrefixEndingInDoubleNewline(\%)
-{
- my ($hashOfStrings) = @_;
-
- my @strings = values %{$hashOfStrings};
- return "" unless @strings > 1;
-
- my $prefix = shift @strings;
- my $prefixLength = length $prefix;
- foreach my $string (@strings) {
- while ($prefixLength) {
- last if substr($string, 0, $prefixLength) eq $prefix;
- --$prefixLength;
- $prefix = substr($prefix, 0, -1);
- }
- last unless $prefixLength;
- }
-
- return "" unless $prefixLength;
-
- my $lastDoubleNewline = rindex($prefix, "\n\n");
- return "" unless $lastDoubleNewline > 0;
-
- foreach my $key (keys %{$hashOfStrings}) {
- $hashOfStrings->{$key} = substr($hashOfStrings->{$key}, $lastDoubleNewline);
- }
- return substr($prefix, 0, $lastDoubleNewline + 2);
-}
-
-sub isCommitLogEditor($)
-{
- my $editor = shift;
- return $editor =~ m/commit-log-editor/;
-}
diff --git a/Tools/Scripts/compare-timing-files b/Tools/Scripts/compare-timing-files
deleted file mode 100755
index 11b470b37..000000000
--- a/Tools/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/Tools/Scripts/configure-github-as-upstream b/Tools/Scripts/configure-github-as-upstream
deleted file mode 100755
index 44336d789..000000000
--- a/Tools/Scripts/configure-github-as-upstream
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2012 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:
-# 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 GOOGLE 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.
-
-# This script is intended to support the GitHub workflow described here:
-# https://trac.webkit.org/wiki/UsingGitHub
-#
-# This script adds WebKit's "root" repository on GitHub as a remote named
-# "upstream". You can use sync-master-with-upstream to keep your master
-# branch in sync with WebKit's "root" repository.
-
-import subprocess
-
-exit(subprocess.call(["git", "remote", "add", "upstream", "git://github.com/WebKit/webkit.git"]))
diff --git a/Tools/Scripts/convert-test-expectations b/Tools/Scripts/convert-test-expectations
deleted file mode 100755
index 7ee5aa173..000000000
--- a/Tools/Scripts/convert-test-expectations
+++ /dev/null
@@ -1,19 +0,0 @@
-#!/usr/bin/python
-
-# FIXME: Delete this file after all of the TestExpectations are converted.
-
-import sys
-
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.models.test_expectations import TestExpectationParser
-
-host = Host()
-port = host.port_factory.get(sys.argv[1])
-filename = sys.argv[2]
-contents = host.filesystem.read_text_file(filename)
-
-parser = TestExpectationParser(port, [], False)
-expectation_lines = parser.parse(filename, contents)
-for line in expectation_lines:
- new_line = line.to_string(parser._test_configuration_converter)
- print new_line
diff --git a/Tools/Scripts/copy-webkitlibraries-to-product-directory b/Tools/Scripts/copy-webkitlibraries-to-product-directory
deleted file mode 100755
index 67a1e3b21..000000000
--- a/Tools/Scripts/copy-webkitlibraries-to-product-directory
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2008, 2010, 2011, 2012 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 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 $productDir = shift @ARGV;
-$productDir = $ENV{BUILT_PRODUCTS_DIR} if !$productDir;
-
-chdirWebKit();
-
-my @librariesToCopy = (
- "libWebKitSystemInterfaceLion.a",
- "libWebKitSystemInterfaceMountainLion.a",
- "libWebCoreSQLite3.a",
-);
-
-my $ranlib = `xcrun -find ranlib`;
-chomp $ranlib;
-foreach my $libName (@librariesToCopy) {
- my $srcLib = "WebKitLibraries/" . $libName;
- my $lib = "$productDir/" . $libName;
- if (!-e $lib || -M $lib > -M $srcLib) {
- print "Updating $lib\n";
- system "ditto", $srcLib, $lib;
- system $ranlib, $lib;
- }
-}
-
-# FIXME: This code should be abstracted to not be copy/paste.
-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;
-}
-
-my $srcHeaderDir = "WebKitLibraries/WebCoreSQLite3";
-my $headerDir = "$productDir/WebCoreSQLite3";
-if (!-e $headerDir || -M $headerDir > -M $srcHeaderDir) {
- print "Updating $headerDir\n";
- system "ditto", $srcHeaderDir, $headerDir;
-}
diff --git a/Tools/Scripts/create-exports b/Tools/Scripts/create-exports
deleted file mode 100755
index c645d55eb..000000000
--- a/Tools/Scripts/create-exports
+++ /dev/null
@@ -1,5 +0,0 @@
-#!/usr/bin/perl -w
-
-while (<>) {
- print "$1\n" if /^\s*\"(.+)\", referenced from:$/;
-}
diff --git a/Tools/Scripts/debug-minibrowser b/Tools/Scripts/debug-minibrowser
deleted file mode 100755
index 052912d91..000000000
--- a/Tools/Scripts/debug-minibrowser
+++ /dev/null
@@ -1,40 +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 "debug" script for debugging the WebKit2 MiniBrowser.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded(INCLUDE_OPTIONS_FOR_DEBUGGING);
-
-setConfiguration();
-
-exit exitStatus(debugMiniBrowser());
diff --git a/Tools/Scripts/debug-safari b/Tools/Scripts/debug-safari
deleted file mode 100755
index 99273e04d..000000000
--- a/Tools/Scripts/debug-safari
+++ /dev/null
@@ -1,40 +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;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded(INCLUDE_OPTIONS_FOR_DEBUGGING);
-
-setConfiguration();
-
-exit exitStatus(debugSafari());
diff --git a/Tools/Scripts/debug-test-runner b/Tools/Scripts/debug-test-runner
deleted file mode 100755
index 251849f12..000000000
--- a/Tools/Scripts/debug-test-runner
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010 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. 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 INC. 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 "debug" script for debugging the WebKitTestRunner.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded(INCLUDE_OPTIONS_FOR_DEBUGGING);
-
-setConfiguration();
-
-exit exitStatus(debugWebKitTestRunner());
diff --git a/Tools/Scripts/display-profiler-output b/Tools/Scripts/display-profiler-output
deleted file mode 100755
index 1a1deeedc..000000000
--- a/Tools/Scripts/display-profiler-output
+++ /dev/null
@@ -1,938 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2012, 2013 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. 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 INC. 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.
-
-require 'rubygems'
-
-require 'readline'
-
-begin
- require 'json'
- require 'highline'
-rescue LoadError
- $stderr.puts "Error: some required gems are not installed!"
- $stderr.puts
- $stderr.puts "Try running:"
- $stderr.puts
- $stderr.puts "sudo gem install json"
- $stderr.puts "sudo gem install highline"
- exit 1
-end
-
-class Bytecode
- attr_accessor :bytecodes, :bytecodeIndex, :opcode, :description, :topCounts, :bottomCounts, :machineInlinees, :osrExits
-
- def initialize(bytecodes, bytecodeIndex, opcode, description)
- @bytecodes = bytecodes
- @bytecodeIndex = bytecodeIndex
- @opcode = opcode
- @description = description
- @topCounts = [] # "source" counts
- @bottomCounts = {} # "machine" counts, maps compilations to counts
- @machineInlinees = {} # maps my compilation to a set of inlinees
- @osrExits = []
- end
-
- def shouldHaveCounts?
- @opcode != "op_call_put_result"
- end
-
- def addTopCount(count)
- @topCounts << count
- end
-
- def addBottomCountForCompilation(count, compilation)
- @bottomCounts[compilation] = [] unless @bottomCounts[compilation]
- @bottomCounts[compilation] << count
- end
-
- def addMachineInlinee(compilation, inlinee)
- @machineInlinees[compilation] = {} unless @machineInlinees[compilation]
- @machineInlinees[compilation][inlinee] = true
- end
-
- def totalTopExecutionCount
- sum = 0
- @topCounts.each {
- | value |
- sum += value.count
- }
- sum
- end
-
- def topExecutionCount(engine)
- sum = 0
- @topCounts.each {
- | value |
- if value.engine == engine
- sum += value.count
- end
- }
- sum
- end
-
- def totalBottomExecutionCount
- sum = 0
- @bottomCounts.each_value {
- | counts |
- max = 0
- counts.each {
- | value |
- max = [max, value.count].max
- }
- sum += max
- }
- sum
- end
-
- def bottomExecutionCount(engine)
- sum = 0
- @bottomCounts.each_pair {
- | compilation, counts |
- if compilation.engine == engine
- max = 0
- counts.each {
- | value |
- max = [max, value.count].max
- }
- sum += max
- end
- }
- sum
- end
-
- def totalExitCount
- sum = 0
- @osrExits.each {
- | exit |
- sum += exit.count
- }
- sum
- end
-end
-
-class Bytecodes
- attr_accessor :codeHash, :inferredName, :source, :instructionCount, :machineInlineSites, :compilations
-
- def initialize(json)
- @codeHash = json["hash"].to_s
- @inferredName = json["inferredName"].to_s
- @source = json["sourceCode"].to_s
- @instructionCount = json["instructionCount"].to_i
- @bytecode = {}
- json["bytecode"].each {
- | subJson |
- index = subJson["bytecodeIndex"].to_i
- @bytecode[index] = Bytecode.new(self, index, subJson["opcode"].to_s, subJson["description"].to_s)
- }
- @machineInlineSites = {} # maps compilation to a set of origins
- @compilations = []
- end
-
- def name(limit)
- if to_s.size > limit
- "\##{@codeHash}"
- else
- to_s
- end
- end
-
- def to_s
- "#{@inferredName}\##{@codeHash}"
- end
-
- def matches(pattern)
- if pattern =~ /^#/
- $~.post_match == @codeHash
- elsif pattern =~ /#/
- pattern == to_s
- else
- pattern == @inferredName or pattern == @codeHash
- end
- end
-
- def each
- @bytecode.values.sort{|a, b| a.bytecodeIndex <=> b.bytecodeIndex}.each {
- | value |
- yield value
- }
- end
-
- def bytecode(bytecodeIndex)
- @bytecode[bytecodeIndex]
- end
-
- def addMachineInlineSite(compilation, origin)
- @machineInlineSites[compilation] = {} unless @machineInlineSites[compilation]
- @machineInlineSites[compilation][origin] = true
- end
-
- def totalMachineInlineSites
- sum = 0
- @machineInlineSites.each_value {
- | set |
- sum += set.size
- }
- sum
- end
-
- def sourceMachineInlineSites
- set = {}
- @machineInlineSites.each_value {
- | mySet |
- set.merge!(mySet)
- }
- set.size
- end
-
- def totalMaxTopExecutionCount
- max = 0
- @bytecode.each_value {
- | bytecode |
- max = [max, bytecode.totalTopExecutionCount].max
- }
- max
- end
-
- def maxTopExecutionCount(engine)
- max = 0
- @bytecode.each_value {
- | bytecode |
- max = [max, bytecode.topExecutionCount(engine)].max
- }
- max
- end
-
- def totalMaxBottomExecutionCount
- max = 0
- @bytecode.each_value {
- | bytecode |
- max = [max, bytecode.totalBottomExecutionCount].max
- }
- max
- end
-
- def maxBottomExecutionCount(engine)
- max = 0
- @bytecode.each_value {
- | bytecode |
- max = [max, bytecode.bottomExecutionCount(engine)].max
- }
- max
- end
-
- def totalExitCount
- sum = 0
- each {
- | bytecode |
- sum += bytecode.totalExitCount
- }
- sum
- end
-end
-
-class ProfiledBytecode
- attr_reader :bytecodeIndex, :description
-
- def initialize(json)
- @bytecodeIndex = json["bytecodeIndex"].to_i
- @description = json["description"].to_s
- end
-end
-
-class ProfiledBytecodes
- attr_reader :header, :bytecodes
-
- def initialize(json)
- @header = json["header"]
- @bytecodes = $bytecodes[json["bytecodesID"].to_i]
- @sequence = json["bytecode"].map {
- | subJson |
- ProfiledBytecode.new(subJson)
- }
- end
-
- def each
- @sequence.each {
- | description |
- yield description
- }
- end
-end
-
-def originStackFromJSON(json)
- json.map {
- | subJson |
- $bytecodes[subJson["bytecodesID"].to_i].bytecode(subJson["bytecodeIndex"].to_i)
- }
-end
-
-class CompiledBytecode
- attr_accessor :origin, :description
-
- def initialize(json)
- @origin = originStackFromJSON(json["origin"])
- @description = json["description"].to_s
- end
-end
-
-class ExecutionCounter
- attr_accessor :origin, :engine, :count
-
- def initialize(origin, engine, count)
- @origin = origin
- @engine = engine
- @count = count
- end
-end
-
-class OSRExit
- attr_reader :compilation, :origin, :codeAddresses, :exitKind, :isWatchpoint, :count
-
- def initialize(compilation, origin, codeAddresses, exitKind, isWatchpoint, count)
- @compilation = compilation
- @origin = origin
- @codeAddresses = codeAddresses
- @exitKind = exitKind
- @isWatchpoint = isWatchpoint
- @count = count
- end
-
- def dumpForDisplay(prefix)
- puts(prefix + "EXIT: due to #{@exitKind}, #{@count} times")
- end
-end
-
-class Compilation
- attr_accessor :bytecode, :engine, :descriptions, :counters, :compilationIndex
- attr_accessor :osrExits, :profiledBytecodes, :numInlinedGetByIds, :numInlinedPutByIds
- attr_accessor :numInlinedCalls
-
- def initialize(json)
- @bytecode = $bytecodes[json["bytecodesID"].to_i]
- @bytecode.compilations << self
- @compilationIndex = @bytecode.compilations.size
- @engine = json["compilationKind"]
- @descriptions = json["descriptions"].map {
- | subJson |
- CompiledBytecode.new(subJson)
- }
- @descriptions.each {
- | description |
- next if description.origin.empty?
- description.origin[1..-1].each_with_index {
- | inlinee, index |
- description.origin[0].addMachineInlinee(self, inlinee.bytecodes)
- inlinee.bytecodes.addMachineInlineSite(self, description.origin[0...index])
- }
- }
- @counters = {}
- json["counters"].each {
- | subJson |
- origin = originStackFromJSON(subJson["origin"])
- counter = ExecutionCounter.new(origin, @engine, subJson["executionCount"].to_i)
- @counters[origin] = counter
- origin[-1].addTopCount(counter)
- origin[0].addBottomCountForCompilation(counter, self)
- }
- @osrExits = {}
- json["osrExits"].each {
- | subJson |
- osrExit = OSRExit.new(self, originStackFromJSON(subJson["origin"]),
- json["osrExitSites"][subJson["id"]].map {
- | value |
- value.hex
- }, subJson["exitKind"], subJson["isWatchpoint"],
- subJson["count"])
- osrExit.codeAddresses.each {
- | codeAddress |
- osrExits[codeAddress] = [] unless osrExits[codeAddress]
- osrExits[codeAddress] << osrExit
- }
- osrExit.origin[-1].osrExits << osrExit
- }
- @profiledBytecodes = []
- json["profiledBytecodes"].each {
- | subJson |
- @profiledBytecodes << ProfiledBytecodes.new(subJson)
- }
- @numInlinedGetByIds = json["numInlinedGetByIds"]
- @numInlinedPutByIds = json["numInlinedPutByIds"]
- @numInlinedCalls = json["numInlinedCalls"]
- end
-
- def counter(origin)
- @counters[origin]
- end
-
- def to_s
- "#{bytecode}-#{compilationIndex}-#{engine}"
- end
-end
-
-class DescriptionLine
- attr_reader :actualCountsString, :sourceCountsString, :disassembly, :shouldShow
-
- def initialize(actualCountsString, sourceCountsString, disassembly, shouldShow)
- @actualCountsString = actualCountsString
- @sourceCountsString = sourceCountsString
- @disassembly = disassembly
- @shouldShow = shouldShow
- end
-
- def codeAddress
- if @disassembly =~ /^\s*(0x[0-9a-fA-F]+):/
- $1.hex
- else
- nil
- end
- end
-end
-
-if ARGV.length != 1
- $stderr.puts "Usage: display-profiler-output <path to profiler output file>"
- $stderr.puts
- $stderr.puts "The typical usage pattern for the profiler currently looks something like:"
- $stderr.puts
- $stderr.puts "Path/To/jsc -p profile.json myprogram.js"
- $stderr.puts "display-profiler-output profile.json"
- exit 1
-end
-
-$json = JSON::parse(IO::read(ARGV[0]))
-$bytecodes = $json["bytecodes"].map {
- | subJson |
- Bytecodes.new(subJson)
-}
-$compilations = $json["compilations"].map {
- | subJson |
- Compilation.new(subJson)
-}
-$engines = ["Baseline", "DFG"]
-
-def lpad(str,chars)
- if str.length>chars
- str
- else
- "%#{chars}s"%(str)
- end
-end
-
-def rpad(str, chars)
- while str.length < chars
- str += " "
- end
- str
-end
-
-def center(str, chars)
- while str.length < chars
- str += " "
- if str.length < chars
- str = " " + str
- end
- end
- str
-end
-
-def mayBeHash(hash)
- hash =~ /#/ or hash.size == 6
-end
-
-def sourceOnOneLine(source, limit)
- source.gsub(/\s+/, ' ')[0...limit]
-end
-
-def screenWidth
- if $stdin.tty?
- HighLine::SystemExtensions.terminal_size[0]
- else
- 200
- end
-end
-
-def summary(mode)
- remaining = screenWidth
-
- # Figure out how many columns we need for the code block names, and for counts
- maxCount = 0
- maxName = 0
- $bytecodes.each {
- | bytecodes |
- maxCount = ([maxCount] + $engines.map {
- | engine |
- bytecodes.maxTopExecutionCount(engine)
- } + $engines.map {
- | engine |
- bytecodes.maxBottomExecutionCount(engine)
- }).max
- maxName = [bytecodes.to_s.size, maxName].max
- }
- maxCountDigits = maxCount.to_s.size
-
- hashCols = [[maxName, 30].min, "CodeBlock".size].max
- remaining -= hashCols + 1
-
- countCols = [maxCountDigits * $engines.size, "Source Counts".size].max
- remaining -= countCols + 1
-
- if mode == :full
- instructionCountCols = 6
- remaining -= instructionCountCols + 1
-
- machineCountCols = [maxCountDigits * $engines.size, "Machine Counts".size].max
- remaining -= machineCountCols + 1
-
- compilationsCols = 7
- remaining -= compilationsCols + 1
-
- inlinesCols = 9
- remaining -= inlinesCols + 1
-
- exitCountCols = 7
- remaining -= exitCountCols + 1
-
- recentOptsCols = 12
- remaining -= recentOptsCols + 1
- end
-
- if remaining > 0
- sourceCols = remaining
- else
- sourceCols = nil
- end
-
- print(center("CodeBlock", hashCols))
- if mode == :full
- print(" " + center("#Instr", instructionCountCols))
- end
- print(" " + center("Source Counts", countCols))
- if mode == :full
- print(" " + center("Machine Counts", machineCountCols))
- print(" " + center("#Compil", compilationsCols))
- print(" " + center("Inlines", inlinesCols))
- print(" " + center("#Exits", exitCountCols))
- print(" " + center("Last Opts", recentOptsCols))
- end
- if sourceCols
- print(" " + center("Source", sourceCols))
- end
- puts
-
- print(center("", hashCols))
- if mode == :full
- print(" " + (" " * instructionCountCols))
- end
- print(" " + center("Base/DFG", countCols))
- if mode == :full
- print(" " + center("Base/DFG", machineCountCols))
- print(" " + (" " * compilationsCols))
- print(" " + center("Src/Total", inlinesCols))
- print(" " + (" " * exitCountCols))
- print(" " + center("Get/Put/Call", recentOptsCols))
- end
- puts
- $bytecodes.sort {
- | a, b |
- b.totalMaxTopExecutionCount <=> a.totalMaxTopExecutionCount
- }.each {
- | bytecode |
- print(center(bytecode.name(hashCols), hashCols))
- if mode == :full
- print(" " + center(bytecode.instructionCount.to_s, instructionCountCols))
- end
- print(" " +
- center($engines.map {
- | engine |
- bytecode.maxTopExecutionCount(engine).to_s
- }.join("/"), countCols))
- if mode == :full
- print(" " + center($engines.map {
- | engine |
- bytecode.maxBottomExecutionCount(engine).to_s
- }.join("/"), machineCountCols))
- print(" " + center(bytecode.compilations.size.to_s, compilationsCols))
- print(" " + center(bytecode.sourceMachineInlineSites.to_s + "/" + bytecode.totalMachineInlineSites.to_s, inlinesCols))
- print(" " + center(bytecode.totalExitCount.to_s, exitCountCols))
- lastCompilation = bytecode.compilations[-1]
- if lastCompilation
- optData = [lastCompilation.numInlinedGetByIds,
- lastCompilation.numInlinedPutByIds,
- lastCompilation.numInlinedCalls]
- else
- optData = ["N/A"]
- end
- print(" " + center(optData.join('/'), recentOptsCols))
- end
- if sourceCols
- print(" " + sourceOnOneLine(bytecode.source, sourceCols))
- end
- puts
- }
-end
-
-def executeCommand(*commandArray)
- command = commandArray[0]
- args = commandArray[1..-1]
- case command
- when "help", "h", "?"
- puts "summary (s) Print a summary of code block execution rates."
- puts "full (f) Same as summary, but prints more information."
- puts "source Show the source for a code block."
- puts "bytecode (b) Show the bytecode for a code block, with counts."
- puts "profiling (p) Show the (internal) profiling data for a code block."
- puts "display (d) Display details for a code block."
- puts "inlines Show all inlining stacks that the code block was on."
- puts "help (h) Print this message."
- puts "quit (q) Quit."
- when "quit", "q", "exit"
- exit 0
- when "summary", "s"
- summary(:summary)
- when "full", "f"
- summary(:full)
- when "source"
- if args.length != 1
- puts "Usage: source <code block hash>"
- return
- end
- $bytecodes.each {
- | bytecode |
- if bytecode.matches(args[0])
- puts bytecode.source
- end
- }
- when "bytecode", "b"
- if args.length != 1
- puts "Usage: source <code block hash>"
- return
- end
-
- hash = args[0]
-
- countCols = 10 * $engines.size
- machineCols = 10 * $engines.size
- pad = 1
- while (countCols + 1 + machineCols + pad) % 8 != 0
- pad += 1
- end
-
- $bytecodes.each {
- | bytecodes |
- next unless bytecodes.matches(hash)
- puts(center("Source Counts", countCols) + " " + center("Machine Counts", machineCols) +
- (" " * pad) + center("Bytecode for #{bytecodes}", screenWidth - pad - countCols - 1 - machineCols))
- puts(center("Base/DFG", countCols) + " " + center("Base/DFG", countCols))
- bytecodes.each {
- | bytecode |
- if bytecode.shouldHaveCounts?
- countsString = $engines.map {
- | myEngine |
- bytecode.topExecutionCount(myEngine)
- }.join("/")
- machineString = $engines.map {
- | myEngine |
- bytecode.bottomExecutionCount(myEngine)
- }.join("/")
- else
- countsString = ""
- machineString = ""
- end
- puts(center(countsString, countCols) + " " + center(machineString, machineCols) + (" " * pad) + bytecode.description.chomp)
- bytecode.osrExits.each {
- | exit |
- puts(center("!!!!!", countCols) + " " + center("!!!!!", machineCols) + (" " * (pad + 10)) +
- "EXIT: in #{exit.compilation} due to #{exit.exitKind}, #{exit.count} times")
- }
- }
- }
- when "profiling", "p"
- if args.length != 1
- puts "Usage: profiling <code block hash>"
- return
- end
-
- hash = args[0]
-
- first = true
- $compilations.each {
- | compilation |
-
- compilation.profiledBytecodes.each {
- | profiledBytecodes |
- if profiledBytecodes.bytecodes.matches(hash)
- if first
- first = false
- else
- puts
- end
-
- puts "Compilation #{compilation}:"
- profiledBytecodes.header.each {
- | header |
- puts(" " * 6 + header)
- }
- profiledBytecodes.each {
- | bytecode |
- puts(" " * 8 + bytecode.description)
- profiledBytecodes.bytecodes.bytecode(bytecode.bytecodeIndex).osrExits.each {
- | exit |
- if exit.compilation == compilation
- puts(" !!!!! EXIT: due to #{exit.exitKind}, #{exit.count} times")
- end
- }
- }
- end
- }
- }
- when "inlines"
- if args.length != 1
- puts "Usage: inlines <code block hash>"
- return
- end
-
- hash = args[0]
-
- $bytecodes.each {
- | bytecodes |
- next unless bytecodes.matches(hash)
-
- # FIXME: print something useful to say more about which code block this is.
-
- $compilations.each {
- | compilation |
- myOrigins = []
- compilation.descriptions.each {
- | description |
- if description.origin.index {
- | myBytecode |
- bytecodes == myBytecode.bytecodes
- }
- myOrigins << description.origin
- end
- }
- myOrigins.uniq!
- myOrigins.sort! {
- | a, b |
- result = 0
- [a.size, b.size].min.times {
- | index |
- result = a[index].bytecodeIndex <=> b[index].bytecodeIndex
- break if result != 0
- }
- result
- }
-
- next if myOrigins.empty?
-
- printArray = []
- lastPrintStack = []
-
- def originToPrintStack(origin)
- (0...(origin.size - 1)).map {
- | index |
- "bc\##{origin[index].bytecodeIndex} --> #{origin[index + 1].bytecodes}"
- }
- end
-
- def printStack(printArray, stack, lastStack)
- stillCommon = true
- stack.each_with_index {
- | entry, index |
- next if stillCommon and entry == lastStack[index]
- printArray << (" " * (index + 1) + entry)
- stillCommon = false
- }
- end
-
- myOrigins.each {
- | origin |
- currentPrintStack = originToPrintStack(origin)
- printStack(printArray, currentPrintStack, lastPrintStack)
- lastPrintStack = currentPrintStack
- }
-
- next if printArray.empty?
-
- puts "Compilation #{compilation}:"
- printArray.each {
- | entry |
- puts entry
- }
- }
- }
- when "display", "d"
- compilationIndex = nil
-
- case args.length
- when 1
- if args[0] == "*"
- hash = nil
- else
- hash = args[0]
- end
- engine = nil
- when 2
- if mayBeHash(args[0])
- hash = args[0]
- engine = args[1]
- else
- engine = args[0]
- hash = args[1]
- end
- else
- puts "Usage: summary <code block hash> <engine>"
- return
- end
-
- if hash and hash =~ /-([0-9]+)-/
- hash = $~.pre_match
- engine = $~.post_match
- compilationIndex = $1.to_i
- end
-
- if engine and not $engines.index(engine)
- pattern = Regexp.new(Regexp.escape(engine), "i")
- trueEngine = nil
- $engines.each {
- | myEngine |
- if myEngine =~ pattern
- trueEngine = myEngine
- break
- end
- }
- unless trueEngine
- puts "#{engine} is not a valid engine, try #{$engines.join(' or ')}."
- return
- end
- engine = trueEngine
- end
-
- actualCountCols = 13
- sourceCountCols = 10 * $engines.size
-
- first = true
- $compilations.each {
- | compilation |
- next if hash and not compilation.bytecode.matches(hash)
- next if engine and compilation.engine != engine
- next if compilationIndex and compilation.compilationIndex != compilationIndex
-
- if first
- first = false
- else
- puts
- end
-
- puts("Compilation #{compilation}:")
- puts(" Num inlined: GetByIds: #{compilation.numInlinedGetByIds} PutByIds: #{compilation.numInlinedPutByIds} Calls: #{compilation.numInlinedCalls}")
- puts(center("Actual Counts", actualCountCols) + " " + center("Source Counts", sourceCountCols) + " " + center("Disassembly in #{compilation.engine}", screenWidth - 1 - sourceCountCols - 1 - actualCountCols))
- puts((" " * actualCountCols) + " " + center("Base/DFG", sourceCountCols))
-
- lines = []
-
- compilation.descriptions.each {
- | description |
- # FIXME: We should have a better way of detecting things like CountExecution nodes
- # and slow path entries in the baseline JIT.
- if description.description =~ /CountExecution\(/ and compilation.engine == "DFG"
- shouldShow = false
- else
- shouldShow = true
- end
- if description.origin.empty? or not description.origin[-1].shouldHaveCounts? or (compilation.engine == "Baseline" and description.description =~ /^\s*\(S\)/)
- actualCountsString = ""
- sourceCountsString = ""
- else
- actualCountsString = compilation.counter(description.origin).count.to_s
- sourceCountsString = $engines.map {
- | myEngine |
- description.origin[-1].topExecutionCount(myEngine)
- }.join("/")
- end
- description.description.split("\n").each {
- | line |
- lines << DescriptionLine.new(actualCountsString, sourceCountsString, line.chomp, shouldShow)
- }
- }
-
- exitPrefix = center("!!!!!", actualCountCols) + " " + center("!!!!!", sourceCountCols) + (" " * 25)
-
- lines.each_with_index {
- | line, index |
- codeAddress = line.codeAddress
- if codeAddress
- list = compilation.osrExits[codeAddress]
- if list
- list.each {
- | exit |
- if exit.isWatchpoint
- exit.dumpForDisplay(exitPrefix)
- end
- }
- end
- end
- if line.shouldShow
- puts(center(line.actualCountsString, actualCountCols) + " " + center(line.sourceCountsString, sourceCountCols) + " " + line.disassembly)
- end
- if codeAddress
- # Find the next disassembly address.
- endIndex = index + 1
- endAddress = nil
- while endIndex < lines.size
- myAddress = lines[endIndex].codeAddress
- if myAddress
- endAddress = myAddress
- break
- end
- endIndex += 1
- end
-
- if endAddress
- list = compilation.osrExits[endAddress]
- if list
- list.each {
- | exit |
- unless exit.isWatchpoint
- exit.dumpForDisplay(exitPrefix)
- end
- }
- end
- end
- end
- }
- }
- else
- puts "Invalid command: #{command}"
- end
-end
-
-if $stdin.tty?
- executeCommand("full")
-end
-
-while commandLine = Readline.readline("> ", true)
- executeCommand(*commandLine.split)
-end
-
diff --git a/Tools/Scripts/do-file-rename b/Tools/Scripts/do-file-rename
deleted file mode 100755
index dbc94a0f9..000000000
--- a/Tools/Scripts/do-file-rename
+++ /dev/null
@@ -1,116 +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 File::Find;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use VCSUtils;
-
-setConfiguration();
-chdirWebKit();
-
-my %words;
-
-# find all files we want to process
-
-my @paths;
-find(\&wanted, "Source/JavaScriptCore");
-find(\&wanted, "Source/WebCore");
-find(\&wanted, "WebKit");
-find(\&wanted, "Source/WebKit2");
-
-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";
- scmMoveOrRenameFile($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/Tools/Scripts/do-webcore-rename b/Tools/Scripts/do-webcore-rename
deleted file mode 100755
index 281f7baad..000000000
--- a/Tools/Scripts/do-webcore-rename
+++ /dev/null
@@ -1,245 +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 File::Find;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-
-use lib $FindBin::Bin;
-use webkitdirs;
-use VCSUtils;
-
-setConfiguration();
-chdirWebKit();
-
-my $showHelp;
-my $verbose;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options]
- -h|--help Show this help message
- -v|--verbose More verbose output
-EOF
-
-my $getOptionsResult = GetOptions(
- 'help|h' => \$showHelp,
- 'verbose|v' => \$verbose,
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-my @directoriesToIgnoreList = (
- "icu",
-);
-my %directoriesToIgnore = map { $_ => 1 } @directoriesToIgnoreList;
-
-# find all files we want to process
-
-my @paths;
-find(\&wanted, "Source/JavaScriptCore");
-find(\&wanted, "Source/WebCore");
-find(\&wanted, "Source/WebKit");
-find(\&wanted, "Source/WebKit2");
-find(\&wanted, "Tools/DumpRenderTree");
-
-sub wanted
-{
- my $file = $_;
-
- # Ignore excluded and hidden files/directories.
- if ($directoriesToIgnore{$file} or $file =~ /^\../ or $file =~ /^ChangeLog/) {
- print "Ignoring $File::Find::name\n" if $verbose;
- $File::Find::prune = 1;
- return;
- }
-
- return if -d $file;
-
- push @paths, $File::Find::name;
-}
-
-# Setting isDOMTypeRename to 1 rather than 0 expands the regexps used
-# below to handle custom JavaScript bindings.
-my $isDOMTypeRename = 1;
-my %renames = (
- # Renames go here in the form of:
- "WaveTable" => "PeriodicWave",
-);
-
-my %renamesContemplatedForTheFuture = (
- "HTMLPlugInImageElement" => "HTMLEmbeddedObjectElement",
-
- "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",
-
- "KURL" => "URL",
- "KURLCFNet" => "URLCF",
- "KURLHash" => "URLHash",
- "KURLMac" => "URLMac",
- "KURL_h" => "URL_h",
-
- "TreeShared" => "TreeRefCounted",
-
- "StringImpl" => "SharedString",
-
- "RenderView" => "RenderViewport",
-
- "ObjcFallbackObjectImp" => "ObjCFallbackObject",
- "RuntimeObjectImp" => "ForeignObject",
-
- "runtime_array" => "BridgedArray",
- "runtime_method" => "BridgedFunction",
- "runtime_object" => "BridgedObject",
- "objc_runtime" => "ObjCBridge",
-
- "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",
-
- "WTF_UNICODE_H" => "Unicode_h",
- "WTF_UNICODE_ICU_H" => "UnicodeICU_h",
- "WTF_UNICODE_QT4_H" => "UnicodeQt4_h",
- "UnicodeIcu" => "UnicodeICU",
-
- "m_invertibleCTM" => "m_transformIsInvertible",
-
- "NativeFunctionWrapper_h" => "JSHostFunction_h",
- "NativeFunctionWrapper" => "JSHostFunction",
- "nativeFunctionThunk" => "hostFunctionThunk",
- "nativeFunction" => "hostFunction",
- "NativeFunction" => "HostFunction",
-);
-
-# Sort the keys of the renames hash in order of decreasing length. This
-# handles the case where some of the renames are substrings of others;
-# i.e., "Foo" => "Bar" and "FooBuffer" => "BarBuffer".
-my @sortedRenameKeys = sort { length($b) - length($a) } keys %renames;
-
-# rename files
-
-sub renameFile
-{
- my $file = shift;
-
- if ($isDOMTypeRename) {
- # Find the longest key in %renames which matches this more permissive regexp.
- # (The old regexp would match ".../Foo.cpp" but not ".../JSFooCustom.cpp".)
- # This handles renaming of custom JavaScript bindings even when some of the
- # renames are substrings of others. The only reason we don't do this all the
- # time is to avoid accidental file renamings for short, non-DOM renames.
- for my $key (@sortedRenameKeys) {
- my $newFile = "";
- $newFile = "$1$renames{$2}$3" if $file =~ /^(.*\/\w*)($key)(\w*\.\w+)$/;
- if ($newFile ne "") {
- return $newFile;
- }
- }
- } else {
- $file = "$1$renames{$2}$3" if $file =~ /^(.*\/)(\w+)(\.\w+)$/ && $renames{$2};
- }
- return $file;
-}
-
-my %newFile;
-for my $file (sort @paths) {
- my $f = renameFile($file);
- 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";
- scmMoveOrRenameFile($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 "Failed to open $file";
- $contents = <FILE>;
- close FILE;
- }
- my $newContents = $contents;
-
- if ($isDOMTypeRename) {
- for my $from (@sortedRenameKeys) {
- # Handle JavaScript custom bindings.
- $newContents =~ s/\b(JS|V8|to|)$from/$1$renames{$from}/g;
- }
- } else {
- for my $from (@sortedRenameKeys) {
- $newContents =~ s/\b$from(?!["\w])/$renames{$from}/g; # this " unconfuses Xcode syntax highlighting
- }
- }
-
- if ($newContents ne $contents) {
- open FILE, ">", $file or die "Failed to open $file";
- print FILE $newContents;
- close FILE;
- }
-}
diff --git a/Tools/Scripts/dump-webkit-tests-run b/Tools/Scripts/dump-webkit-tests-run
deleted file mode 100755
index d2339dcca..000000000
--- a/Tools/Scripts/dump-webkit-tests-run
+++ /dev/null
@@ -1,52 +0,0 @@
-#!/usr/bin/python
-import json
-import optparse
-import os
-import sys
-
-
-def main(argv):
- parser = optparse.OptionParser(usage='%prog worker_number [path-to-stats.json]')
- _, args = parser.parse_args(argv)
-
- worker_number = int(args.pop(0))
- if args:
- if os.path.exists(args[0]):
- with open(args[0], 'r') as fp:
- trie = json.load(fp)
- else:
- print >> sys.stderr, "file not found: %s" % args[0]
- sys.exit(1)
- else:
- trie = json.load(sys.stdin)
-
- results = convert_trie_to_flat_paths(trie)
- tests_run = []
- for (test, result) in results.iteritems():
- # Each result is a dict containing
- # { 'results': [worker #, test # in worker, driver pid,
- # test time in msecs, test + compare time in msecs]}
- if result['results'][0] == worker_number:
- tests_run.append((test, result['results'][1]))
-
- print "\n".join(t[0] for t in sorted(tests_run, key=lambda t: t[1]))
-
-
-def convert_trie_to_flat_paths(trie, prefix=None):
- # Cloned from webkitpy.layout_tests.layout_package.json_results_generator
- # so that this code can stand alone.
- result = {}
- for name, data in trie.iteritems():
- if prefix:
- name = prefix + "/" + name
-
- if len(data) and not "results" in data:
- result.update(convert_trie_to_flat_paths(data, name))
- else:
- result[name] = data
-
- return result
-
-
-if __name__ == '__main__':
- main(sys.argv[1:])
diff --git a/Tools/Scripts/ensure-valid-python b/Tools/Scripts/ensure-valid-python
deleted file mode 100755
index b361641ea..000000000
--- a/Tools/Scripts/ensure-valid-python
+++ /dev/null
@@ -1,70 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2010 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:
-#
-# 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.
-
-use strict;
-
-use FindBin;
-use Getopt::Long;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-use VCSUtils;
-
-sub checkPythonVersion()
-{
- # Will exit 0 if Python is 2.5 or greater, non-zero otherwise.
- `python -c "import sys;sys.exit(sys.version_info[:2] < (2,5))"`;
- return exitStatus($?) == 0;
-}
-
-sub main()
-{
- my $checkOnly = 0;
- my $showHelp = 0;
- my $getOptionsResult = GetOptions(
- 'check-only!' => \$checkOnly,
- 'help|h' => \$showHelp,
- );
- if (!$getOptionsResult || $showHelp) {
- print STDERR <<HELP;
-Usage: $0 [options]
- --check-only Check python version only.
- -h|--help Show this help message.
-HELP
- return 1;
- }
- # Congrats, your Python is fine.
- return 0 if checkPythonVersion();
-
- return 1 if $checkOnly;
-
- print "Your Python version is insufficient to run WebKit's Python code. Please update.\n";
- print "See http://trac.webkit.org/wiki/PythonGuidelines for more info.\n";
- return 1;
-}
-
-exit(main());
diff --git a/Tools/Scripts/execAppWithEnv b/Tools/Scripts/execAppWithEnv
deleted file mode 100755
index d185e2f62..000000000
--- a/Tools/Scripts/execAppWithEnv
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2009 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 script launches a program with a given enviroment.
-# It is a workaround for a perl bug that apps launched from perl threads
-# use the environment of the main thread instead of the current thread.
-
-my ($unsplitEnvVar, @app) = @ARGV;
-# The first argument to this script should be perl code (in quotes) that sets the environment.
-eval substr($unsplitEnvVar, 1, -1);
-exec(@app);
diff --git a/Tools/Scripts/export-w3c-performance-wg-tests b/Tools/Scripts/export-w3c-performance-wg-tests
deleted file mode 100755
index 1a41d447c..000000000
--- a/Tools/Scripts/export-w3c-performance-wg-tests
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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 script exports newly added tests to the W3C Web Performance WG's test
-# suite.
-#
-# You must have checked out the 'webperf' repository from https://dvcs.w3.org/hg/
-#
-# This script will export the LayoutTests/http/tests/w3c/submission directory
-# to a local 'webperf' repository.
-#
-# The main step in exporting the tests is updating all of the URLs to account
-# for the differences in directory layout.
-
-import os
-import shutil
-import sys
-
-if len(sys.argv) != 3:
- print 'USAGE: %s path_to_webkit_checkout_root path_to_webperf_checkout_root' % sys.argv[0]
- sys.exit(1)
-
-source_directory = os.path.join(sys.argv[1], 'LayoutTests', 'http', 'tests', 'w3c', 'webperf')
-destination_directory = os.path.join(sys.argv[2], 'tests')
-
-directories_to_copy = ['resources', 'submission']
-replacements = [
- ('localhost:8000', 'www.w3c-test.org'), # This is the alternate host for cross-server requests.
- ('127.0.0.1:8000', 'w3c-test.org'), # This is the primary test server.
- ('w3c/webperf', 'webperf/tests'), # We prepend /w3c to all of our paths.
- ('/w3c/resources/testharness', '/resources/testharness'),
- ('\n', '\r\n'), # Convert from *NIX format.
-]
-
-for directory_to_copy in directories_to_copy:
- destination_subdirectory = os.path.join(destination_directory, directory_to_copy)
- if not os.path.exists(destination_subdirectory):
- os.makedirs(destination_subdirectory)
- for root, dirs, files in os.walk(os.path.join(source_directory, directory_to_copy)):
- root = os.path.relpath(root, source_directory)
- for dirname in dirs:
- destination_subdirectory = os.path.join(destination_directory, root, dirname)
- if not os.path.exists(destination_subdirectory):
- os.makedirs(destination_subdirectory)
- for filename in files:
- if filename.endswith('-expected.txt'):
- continue
- with open(os.path.join(source_directory, root, filename), 'r') as in_file:
- with open(os.path.join(destination_directory, root, filename), 'w') as out_file:
- for line in in_file:
- for to_find, replace_with in replacements:
- line = line.replace(to_find, replace_with)
- out_file.write(line)
- print 'Exported %s' % os.path.join(root, filename)
diff --git a/Tools/Scripts/extract-localizable-js-strings b/Tools/Scripts/extract-localizable-js-strings
deleted file mode 100755
index b785ed3f6..000000000
--- a/Tools/Scripts/extract-localizable-js-strings
+++ /dev/null
@@ -1,158 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2013 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. 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 INC. 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;
-
-@ARGV >= 1 or die "Usage: extract-localizable-js-strings <file to update> [ directory... ]\nDid you mean to run update-webkit-localizable-strings instead?\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 $keyCollisionCount = 0;
-
-my $quotedDirectoriesString = '"' . join('" "', @directories) . '"';
-for my $dir (@directoriesToSkip) {
- $quotedDirectoriesString .= ' -path "' . $dir . '" -prune -o';
-}
-
-my @files = ( split "\n", `find $quotedDirectoriesString \\( -name "*.html" -o -name "*.js" \\)` );
-
-for my $file (sort @files) {
- $file =~ s-^./--;
-
- open SOURCE, $file or die "can't open $file\n";
-
- while (<SOURCE>) {
- chomp;
-
- # Handle WebInspector strings. Prints a warning if a non-string literal is passed to WebInspector.UIString().
- HandleUIString($1, $1, "", $file, $.) while s/WebInspector\.UIString\("([^"]+)"\)//;
- print "$file:$.:WARNING: $&\n" while s/WebInspector\.UIString\(.*?\)//;
-
- # Handle strings for other projects that also use this script.
- HandleUIString($2, $2, "", $file, $.) while s/(\bclass="[^"]*l12n-tooltip[^"]*"[^>]*)title="([^"]+)"/$1/;
- HandleUIString($1, $1, "", $file, $.) while s/\btitle="([^"]+)"([^>]*class="[^"]*l12n-tooltip[^"]*")/$2/;
- HandleUIString($2, $2, "", $file, $.) while s/<(\w+)[^>]*\bclass="[^"]*l12n[^"]*"[^>]*>([^>]+)<\/\1>//;
- HandleUIString($1, $1, "", $file, $.) while s/HTMLViewController\.UIString\("([^"]+)"\)//;
- HandleUIString($1, $1, "", $file, $.) while s/\bgetLocalizedString\("([^"]+)"\)//;
- HandleUIString($1, $1, "", $file, $.) while s/\blocalizedStrings\["([^"]+)"\]//;
- }
-
- 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;
-
-print "$keyCollisionCount key collisions\n" if $keyCollisionCount;
-
-if ($sawError) {
- print "\nErrors encountered. Exiting without writing to $fileToUpdate.\n";
- exit 1;
-}
-
-my $localizedStrings = "var localizedStrings = new Object;\n\n";
-
-for my $key (sort keys %commentByKey) {
- $localizedStrings .= "localizedStrings[\"$key\"] = \"$stringByKey{$key}\";\n";
-}
-
-# Write out the strings file in UTF-16 with a BOM.
-utf8::decode($localizedStrings) if $^V ge v5.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/Tools/Scripts/extract-localizable-strings b/Tools/Scripts/extract-localizable-strings
deleted file mode 100755
index 946eeec50..000000000
--- a/Tools/Scripts/extract-localizable-strings
+++ /dev/null
@@ -1,393 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007, 2009, 2010 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;
-no warnings 'deprecated';
-
-sub UnescapeHexSequence($);
-
-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, UI_STRING_LOCALIZE_LATER_KEY => 1, LPCTSTR_UI_STRING_LOCALIZE_LATER => 1, UNLOCALIZED_STRING => 1, UNLOCALIZED_LPCTSTR => 1, dprintf => 1, NSException => 1, NSLog => 1, printf => 1 );
-
-@ARGV >= 2 or die "Usage: extract-localizable-strings <exceptions file> <file to update> [ directory... ]\nDid you mean to run update-webkit-localizable-strings instead?\n";
-
-my $exceptionsFile = shift @ARGV;
--f $exceptionsFile or die "Couldn't find exceptions file $exceptionsFile\n" unless $exceptionsFile eq "-";
-
-my $fileToUpdate = shift @ARGV;
--f $fileToUpdate or die "Couldn't find file to update $fileToUpdate\n";
-
-my $warnAboutUnlocalizedStrings = $exceptionsFile ne "-";
-
-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 ($exceptionsFile ne "-" && open EXCEPTIONS, $exceptionsFile) {
- while (<EXCEPTIONS>) {
- chomp;
- if (/^"([^\\"]|\\.)*"$/ or /^[-_\/\w\s.]+.(h|m|mm|c|cpp)$/ or /^[-_\/\w\s.]+.(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 -o';
-}
-
-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 =~ /\/\w+LocalizableStrings\w*\.h$/ || $file =~ /\/LocalizedStrings\.h$/;
-
- $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 =~ /(WEB_)?UI_STRING_KEY(_INTERNAL)?$/) 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" if $warnAboutUnlocalizedStrings;
- $notLocalizedCount++;
- }
- }
- $string = undef;
- last if !defined $token;
- }
-
- $previousToken = $token;
-
- if ($token =~ /^NSLocalized/ && $token !~ /NSLocalizedDescriptionKey/ && $token !~ /NSLocalizedStringFromTableInBundle/ && $token !~ /NSLocalizedFileSizeDescription/) {
- print "$file:$.:ERROR:found a use of an NSLocalized macro ($token); 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 =~ /(WEB_)?UI_STRING(_KEY)?(_INTERNAL)?$/) {
- $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;
-}
-
-# Unescapes C language hexadecimal escape sequences.
-sub UnescapeHexSequence($)
-{
- my ($originalStr) = @_;
-
- my $escapedStr = $originalStr;
- my $unescapedStr = "";
-
- for (;;) {
- if ($escapedStr =~ s-^\\x([[:xdigit:]]+)--) {
- if (256 <= hex($1)) {
- print "Hexadecimal escape sequence out of range: \\x$1\n";
- return undef;
- }
- $unescapedStr .= pack("H*", $1);
- } elsif ($escapedStr =~ s-^(.)--) {
- $unescapedStr .= $1;
- } else {
- return $unescapedStr;
- }
- }
-}
-
-my %stringByKey;
-my %commentByKey;
-my %fileByKey;
-my %lineByKey;
-
-sub HandleUIString
-{
- my ($string, $key, $comment, $file, $line) = @_;
-
- my $bad = 0;
- $string = UnescapeHexSequence($string);
- if (!defined($string)) {
- print "$file:$line:ERROR:string has an illegal hexadecimal escape sequence\n";
- $bad = 1;
- }
- $key = UnescapeHexSequence($key);
- if (!defined($key)) {
- print "$file:$line:ERROR:key has an illegal hexadecimal escape sequence\n";
- $bad = 1;
- }
- $comment = UnescapeHexSequence($comment);
- if (!defined($comment)) {
- print "$file:$line:ERROR:comment has an illegal hexadecimal escape sequence\n";
- $bad = 1;
- }
- 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 v5.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/Tools/Scripts/filter-build-webkit b/Tools/Scripts/filter-build-webkit
deleted file mode 100755
index 3a7f95ff0..000000000
--- a/Tools/Scripts/filter-build-webkit
+++ /dev/null
@@ -1,237 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011, 2012, 2013 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. 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 INC. 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.
-
-# Filters the output of build-webkit into a more human-readable format.
-
-use strict;
-use warnings;
-
-use CGI qw(escapeHTML);
-use File::Basename;
-use FindBin;
-use lib $FindBin::Bin;
-use Getopt::Long;
-use VCSUtils;
-
-use constant {
- STYLE_PLAIN => 0,
- STYLE_HEADER => 1,
- STYLE_SUCCESS => 2,
- STYLE_ALERT => 3,
-
- HTML_HEADER =><<HTMLHEADER,
-<html>
- <head>
- <title>Build Log</title>
- <style>
- body { font-family: Monaco, monospace; font-size: 10px; color: #666; line-height: 1.5em; }
- h2 { margin: 1.5em 0 0 0; font-size: 1.0em; font-weight: bold; color: blue; }
- p { margin: 0; padding-left: 1.5em; border-left: 3px solid #fff; }
- p.alert { border-left-color: red; color: red; margin: 1.5em 0 0 0; }
- p.alert + p { margin: 1.5em 0 0 0; }
- p.alert + p.alert { margin: 0; }
- p.success { color: green; }
- </style>
- </head>
- <body>
-HTMLHEADER
-
- HTML_FOOTER =><<HTMLFOOTER,
- </body>
-</html>
-HTMLFOOTER
-};
-
-sub printLine($$);
-sub setLogfileOption($$);
-sub setOutputFormatOption($$);
-sub shouldIgnoreLine($$);
-sub usageAndExit();
-
-# Defined in VCSUtils.
-sub possiblyColored($$);
-
-# Global variables used only in global scope.
-my $outputPath = "&STDOUT";
-my $showHelp;
-
-# Global variables used in global and subroutine scope.
-our $logUnfilteredOutput;
-our $outputFormat = "text";
-our $unfilteredOutputPath = "build.log";
-our $useColor = -t STDOUT;
-
-sub usageAndExit()
-{
- print STDERR <<__END__;
-Usage: @{[ basename($0) ]} [options] buildlog1 [buildlog2 ...]
- build-webkit | @{[ basename($0) ]} [options]
- -h|--help Show this help message
-Output Options:
- -o|--output Path for output (default: STDOUT)
- -f|--format Output format (default: $outputFormat)
- text: Plain text
- html: Standalone HTML document
- --[no-]color ANSI color output for text (default: on, if -o is STDOUT)
-Unfiltered Logging Options:
- -l|--log Save unfiltered output to file (see --log-file)
- --logfile Path to save unfiltered output (implies --log, default: $unfilteredOutputPath)
-__END__
- exit 1;
-}
-
-my $getOptionsResult = GetOptions(
- 'h|help' => \$showHelp,
- 'o|output=s' => \$outputPath,
- 'f|format=s' => \&setOutputFormatOption,
- 'color!' => \$useColor,
- 'l|log' => \$logUnfilteredOutput,
- 'logfile=s' => \&setLogfileOption,
-);
-
-if (-t STDIN || $showHelp || !$getOptionsResult) {
- usageAndExit();
-}
-
-open(OUTPUT_HANDLE, ">$outputPath") or die "Failed to open $outputPath : $!";
-if ($logUnfilteredOutput) {
- open(UNFILTERED_OUTPUT_HANDLE, ">$unfilteredOutputPath") or die "Failed to open $unfilteredOutputPath : $!";
-}
-
-print OUTPUT_HANDLE HTML_HEADER if ($outputFormat eq "html");
-
-my $buildFinished;
-my $buildFailed = 0;
-for (my $previousLine = "", my $line = <>; $line; $previousLine = $line, $line = <>) {
- print UNFILTERED_OUTPUT_HANDLE $line if $logUnfilteredOutput;
-
- chomp($line);
-
- next if shouldIgnoreLine($previousLine, $line);
-
- if ($line =~ /^={10}/) {
- printLine($line, STYLE_SUCCESS);
- $buildFinished = 1;
- } elsif ($line =~ /^===/) {
- printLine($line, STYLE_HEADER);
- } elsif ($line =~ /Checking Dependencies|Check dependencies/) {
- printLine($line, STYLE_PLAIN);
- } elsif ($line =~ /\*\* BUILD SUCCEEDED \*\*/) {
- printLine("Build Succeeded", STYLE_SUCCESS);
- } elsif ($line =~ /^(PhaseScriptExecution|CompileC|Distributed-CompileC|Ld|PBXCp|CpResource|CopyPNGFile|CopyTiffFile|CpHeader|Processing|ProcessInfoPlistFile|ProcessPCH|ProcessPCH\+\+|Touch|Libtool|CopyStringsFile|Mig|CreateUniversalBinary|Analyze|ProcessProductPackaging|CodeSign|SymLink|Updating|CompileXIB|StripNIB|CopyPlistFile|GenerateDSYMFile) ("[^"]+"|\S+)?/) {
- my ($command, $path) = ($1, basename($2));
- $path =~ s/"//g;
- printLine("$command $path", STYLE_PLAIN);
- } elsif ($line =~ /^\/\S+?(strip|WebCoreExportFileGenerator) .*?(\/|\> )(\S+)/) {
- my ($command, $path) = (basename($1), basename($3));
- printLine("$command $path", STYLE_PLAIN);
- } elsif ($line =~ /^offlineasm\: /) {
- printLine($line, STYLE_PLAIN);
- } elsif ($line =~ /^Generating message.*(header|receiver) for (\S+)\.\.\./) {
- my ($command, $path) = ($1, basename($2));
- printLine("Generating message $command $path", STYLE_PLAIN);
- } elsif ($line =~ /^(\S+\/cc).*?(\S+)\.(out|exp)/) {
- my ($command, $path) = (basename($1), basename($2));
- printLine("$command $path", STYLE_PLAIN);
- } else {
- # This only gets hit if stderr is redirected to stdout.
- if ($line =~ /\*\* BUILD FAILED \*\*/) {
- $buildFailed = 1;
- }
- printLine($line, $buildFinished ? STYLE_SUCCESS : STYLE_ALERT);
- }
-}
-
-print OUTPUT_HANDLE HTML_FOOTER if ($outputFormat eq "html");
-
-close(OUTPUT_HANDLE);
-close(UNFILTERED_OUTPUT_HANDLE) if ($logUnfilteredOutput);
-
-exit $buildFailed;
-
-sub printLine($$)
-{
- my ($line, $style) = @_;
-
- if ($outputFormat eq "html") {
- $line = escapeHTML($line);
- if ($style == STYLE_HEADER) { print OUTPUT_HANDLE "<h2>$line</h2>"; }
- elsif ($style == STYLE_SUCCESS) { print OUTPUT_HANDLE "<p class=\"success\">$line</p>"; }
- elsif ($style == STYLE_ALERT) { print OUTPUT_HANDLE "<p class=\"alert\">$line</p>"; }
- else { print OUTPUT_HANDLE "<p>$line</p>"; }
- } else {
- if ($useColor) {
- my $colors = "reset";
- if ($style == STYLE_HEADER) { $colors = "blue"; }
- if ($style == STYLE_SUCCESS) { $colors = "green"; }
- if ($style == STYLE_ALERT) { $colors = "red"; }
- print OUTPUT_HANDLE possiblyColored($colors, $line);
- } else {
- print OUTPUT_HANDLE $line;
- }
- }
- print OUTPUT_HANDLE "\n";
-}
-
-sub setLogfileOption($$)
-{
- my ($opt, $value) = @_;
- $unfilteredOutputPath = $value;
- $logUnfilteredOutput = 1;
-}
-
-sub setOutputFormatOption($$)
-{
- my ($opt, $value) = @_;
- $value = lc($value);
- if ($value ne "html" && $value ne "text") {
- die "The $opt option must be either \"html\" or \"text\"";
- }
- $outputFormat = $value;
-}
-
-sub shouldIgnoreLine($$)
-{
- my ($previousLine, $line) = @_;
-
- return 1 if $line =~ /^\s*$/;
- return 1 if $line =~ /^Build settings from command line:/;
- return 1 if $line =~ /make: Nothing to be done for `all'\./;
- return 1 if $line =~ /^JavaScriptCore\/create_hash_table/;
- return 1 if $line =~ /JavaScriptCore.framework\/PrivateHeaders\/create_hash_table/;
- return 1 if $line =~ /^JavaScriptCore\/pcre\/dftables/;
- return 1 if $line =~ /^Creating hashtable for /;
- return 1 if $line =~ /^Wrote output to /;
- return 1 if $line =~ /^(touch|perl|cat|rm -f|bison|flex|python|\/usr\/bin\/g\+\+|gperf|echo|sed|if \[ \-f|WebCore\/generate-export-file) /;
- return 1 if $line =~ /^UNDOCUMENTED: /;
- return 1 if $line =~ /libtool.*has no symbols/;
- return 1 if $line =~ /^# Lower case all the values, as CSS values are case-insensitive$/;
- return 1 if $line =~ /^if sort /;
- return 1 if $line =~ /^ / && $previousLine !~ /referenced from:$/;
- return 1 if $line =~ /^printf /;
- return 1 if $line =~ /^offlineasm: Nothing changed/;
- return 1 if $line =~ /^Showing first/;
-
- return 0;
-}
diff --git a/Tools/Scripts/find-extra-includes b/Tools/Scripts/find-extra-includes
deleted file mode 100755
index 4a847ed5b..000000000
--- a/Tools/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 WebKit 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/Tools/Scripts/find-included-framework-headers b/Tools/Scripts/find-included-framework-headers
deleted file mode 100755
index 759a60b52..000000000
--- a/Tools/Scripts/find-included-framework-headers
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/bin/sh
-# Copyright (C) 2007, 2008, 2009, 2010 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. 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 INC. 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 find headers included from the given frameworks by files in the
-# current directory (and subdirectories).
-
-for framework in $*; do
- echo -e "\n$framework\n=================="
- find . \( -name '*.cpp' -o -name '*.h' -o -name '*.m' -o -name '*.mm' \) -exec grep "<$framework/" {} ';' | sed -e 's|.*/\(.*\.h\).*|\1|' | sort -u
-done
diff --git a/Tools/Scripts/generate-coverage-data b/Tools/Scripts/generate-coverage-data
deleted file mode 100755
index 2532e4f9c..000000000
--- a/Tools/Scripts/generate-coverage-data
+++ /dev/null
@@ -1,182 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2013 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.
-
-# 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 JSON;
-use lib $FindBin::Bin;
-use List::Util qw(sum);
-use List::Util qw(max);
-use POSIX;
-use webkitdirs;
-use XML::Simple;
-
-sub parseGcovrOutput($);
-sub getFileHitsAndBranches($);
-sub addLineCounts($$$$$$);
-sub createResultName();
-sub generateReport($);
-
-chdirWebKit();
-system("mkdir WebKitBuild/Coverage") if ! -d "WebKitBuild/Coverage";
-
-# Delete old gcov files
-print "Cleaning up\n";
-system("if [ -d WebKitBuild ]; then find WebKitBuild -name '*.gcda' -delete; fi;") == 0 or die "Cannot delete old gcda files (code coverage";
-
-print "Building and testing\n";
-system("Tools/Scripts/build-webkit", "--clean", @ARGV) == 0 or die "Cannot clean WebKit build";
-system("Tools/Scripts/build-webkit", "--coverage", "--release", @ARGV) == 0 or die "Cannot compile WebKit with code coverage";
-system("Tools/Scripts/run-javascriptcore-tests --no-build");
-system("Tools/Scripts/run-api-tests");
-system("Tools/Scripts/run-webkit-tests");
-system("Tools/Scripts/run-webkit-tests -2");
-generateReport(createResultName());
-print "Done\n";
-
-sub generateReport()
-{
- my ($reportName) = @_;
-
- # Generate the coverage data and report
- print "Collecting coverage data\n";
- system("python Tools/Scripts/webkitpy/tool/gcovr --xml --output=WebKitBuild/Coverage/" . $reportName . ".xml") == 0 or die "Cannot run gcovr";
-
- # Collect useful data from xml to json format
- my $jsonData = encode_json(parseGcovrOutput("WebKitBuild/Coverage/$reportName.xml"));
- open my $templateFile, "<", "Tools/CodeCoverage/results-template.html" or die "Cannot open Tools/CodeCoverage/results-template.html";
- my $templateHtml = join("", <$templateFile>);
- close $templateFile;
- $templateHtml =~ s/%CoverageDataJSON%/$jsonData/;
-
- my $reportFilename = "WebKitBuild/Coverage/$reportName.html";
- open my $reportFile, ">", $reportFilename or die "Cannot open $reportFilename";
- print $reportFile $templateHtml;
- close $reportFile;
-
- # Open the report
- my $url = "file://" . sourceDir() . "/WebKitBuild/Coverage/$reportName.html";
- system "open \"$url\"";
-}
-
-sub parseGcovrOutput($)
-{
- my ($xmlData) = @_;
- my $sourceDir = sourceDir();
-
- my @files;
-
- # The xml output of gcovr uses a Java-like package/class names for directories and files
- my $packages = new XML::Simple->XMLin($xmlData)->{"packages"}->{"package"};
-
- foreach my $packageName (keys %{$packages}) {
- my $classes = $packages->{$packageName}->{"classes"}->{"class"};
-
- # Perl's XML::Simple causes files to be here in the parsed xml data structure
- # if there's only one child, even though they're a layer deeper in the xml tree
- if ($classes->{"filename"} && $classes->{"lines"}) {
- if ($classes->{"filename"} =~ /$sourceDir/) {
- push(@files, getFileHitsAndBranches($classes));
- }
- }
- else {
- foreach my $key (keys %{$classes}) {
- my $class = $classes->{$key};
- if ($class->{"filename"} =~ /$sourceDir/) {
- push(@files,getFileHitsAndBranches($class));
- }
- }
- }
- }
- return \@files;
-}
-
-sub getFileHitsAndBranches($)
-{
- my ($class) = @_;
-
- my @hits;
- my @hitLines;
- my @branchesPossible;
- my @branchesTaken;
- my @branchLines;
-
- my $lines = $class->{"lines"}->{"line"};
- if (ref($lines) eq "ARRAY") {
- foreach my $line (@$lines) {
- addLineCounts($line, \@hits, \@hitLines, \@branchesPossible, \@branchesTaken, \@branchLines);
- }
- } else {
- addLineCounts($lines, \@hits, \@hitLines, \@branchesPossible, \@branchesTaken, \@branchLines);
- }
-
- my $file = {};
- $file->{"hits"} = \@hits;
- $file->{"hitLines"} = \@hitLines;
- $file->{"branchesPossible"} = \@branchesPossible;
- $file->{"branchesTaken"} = \@branchesTaken;
- $file->{"branchLines"} = \@branchLines;
- $file->{"filename"} = substr($class->{"filename"}, length(sourceDir()));
- $file->{"coverage"} = abs($class->{"line-rate"});
- if (@branchLines) {
- $file->{"branchCoverage"} = abs($class->{"branch-rate"});
- } else {
- $file->{"branchCoverage"} = 1;
- }
- $file->{"totalHeat"} = sum(@hits);
- $file->{"maxHeat"} = max(@hits);
- return $file;
-}
-
-sub addLineCounts($$$$$$)
-{
- my ($line, $hits, $hitLines, $branchesPossible, $branchesTaken, $branchLines) = @_;
- push(@$hits, int($line->{"hits"}));
- push(@$hitLines, int($line->{"number"}));
- if($line->{"branch"} eq "true") {
-
- # Extract the numerator and denominator of the condition-coverage attribute, which looks like "75% (3/4)"
- $line->{"condition-coverage"} =~ /\((.*)\/(.*)\)/;
- push(@$branchesTaken, int($1));
- push(@$branchesPossible, int($2));
- push(@$branchLines, int($line->{"number"}));
- }
-}
-
-sub createResultName()
-{
- my $svnVersion = determineCurrentSVNRevision();
- my @timeData = localtime(time);
- return $svnVersion . "-" . join('_', @timeData);
-}
diff --git a/Tools/Scripts/generate-qt-inspector-resource b/Tools/Scripts/generate-qt-inspector-resource
deleted file mode 100755
index 0a8301b3a..000000000
--- a/Tools/Scripts/generate-qt-inspector-resource
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2008 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.
-
-# Regenerate WebCore/inspector/front-end/WebKit.qrc from the content of WebCore/inspector/front-end/
-
-sub addFiles(@)
-{
- my @files = @_;
-
- foreach $file (@files) {
- $file =~ s,Source/WebCore/inspector/front-end/,,;
- print WEBKIT_QRC " <file>".$file . "</file>\n";
- }
-}
-
-# Setup
-open(WEBKIT_QRC, ">Source/WebCore/inspector/front-end/WebKit.qrc") or die;
-print WEBKIT_QRC '<!DOCTYPE RCC><RCC version="1.0">'."\n";
-print WEBKIT_QRC '<qresource prefix="/webkit/inspector">'."\n";
-
-
-# Directory with html and js files and the images
-addFiles(<Source/WebCore/inspector/front-end/*.{*html,js,css,svg}>);
-addFiles(<Source/WebCore/inspector/front-end/Images/*>);
-
-print WEBKIT_QRC "</qresource>\n";
-print WEBKIT_QRC "</RCC>\n";
-close(WEBKIT_QRC);
diff --git a/Tools/Scripts/generate-win32-export-forwards b/Tools/Scripts/generate-win32-export-forwards
deleted file mode 100755
index a160abb18..000000000
--- a/Tools/Scripts/generate-win32-export-forwards
+++ /dev/null
@@ -1,53 +0,0 @@
-#!/usr/bin/env python
-
-#Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies)
-
-#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.
-
-# Extract /EXPORT: linker directives from static library and write it into a
-# separate file as linker pragmas.
-# Usage: generate-win32-export-forwards \path\to\static\library.lib outputfile.cpp
-# Then compile outputfile.cpp into the final .dll and link the static library
-# into the dll.
-
-import subprocess
-import sys
-import re
-
-def exportForwardsForLibrary(library):
- dumpBin = subprocess.Popen("dumpbin /directives " + library, stdout=subprocess.PIPE, universal_newlines=True)
-
- output = dumpBin.communicate()[0]
- return output
-
-libraries = sys.argv[1 : -1]
-outputFileName = sys.argv[-1]
-
-exportedSymbolRegexp = re.compile("\s*(?P<symbol>/EXPORT:.+)")
-symbols = set()
-
-for lib in libraries:
- for line in exportForwardsForLibrary(lib).splitlines():
- match = exportedSymbolRegexp.match(line)
- if match:
- symbols.add(match.group("symbol"))
-
-print("Forwarding %s symbols from %s" % (len(symbols), " ".join(libraries)))
-
-exportFile = open(outputFileName, "w")
-for symbol in symbols:
- exportFile.write("#pragma comment(linker, \"%s\")\n" % symbol);
-exportFile.close()
diff --git a/Tools/Scripts/git-add-reviewer b/Tools/Scripts/git-add-reviewer
deleted file mode 100755
index 16bb06be3..000000000
--- a/Tools/Scripts/git-add-reviewer
+++ /dev/null
@@ -1,387 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 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. 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 INC. 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 File::Temp ();
-use Getopt::Long;
-use POSIX;
-
-my $defaultReviewer = "NOBODY";
-
-sub addReviewer(\%);
-sub addReviewerToChangeLog($$$);
-sub addReviewerToCommitMessage($$$);
-sub changeLogsForCommit($);
-sub checkout($);
-sub cherryPick(\%);
-sub commit(;$);
-sub getConfigValue($);
-sub fail(;$);
-sub head();
-sub interactive();
-sub isAncestor($$);
-sub nonInteractive();
-sub rebaseOntoHead($$);
-sub requireCleanWorkTree();
-sub resetToCommit($);
-sub toCommit($);
-sub usage();
-sub writeCommitMessageToFile($);
-
-
-my $interactive = 0;
-my $showHelp = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName -i|--interactive upstream
- $programName commit-ish reviewer
-
-Adds a reviewer to a git commit in a repository with WebKit-style commit logs
-and ChangeLogs.
-
-When run in interactive mode, `upstream` specifies the commit after which
-reviewers should be added.
-
-When run in non-interactive mode, `commit-ish` specifies the commit to which
-the `reviewer` will be added.
-
-Options:
- -h|--help Display this message
- -i|--interactive Interactive mode
-EOF
-
-my $getOptionsResult = GetOptions(
- 'h|help' => \$showHelp,
- 'i|interactive' => \$interactive,
-);
-
-usage() if !$getOptionsResult || $showHelp;
-
-requireCleanWorkTree();
-$interactive ? interactive() : nonInteractive();
-exit;
-
-sub interactive()
-{
- @ARGV == 1 or usage();
-
- my $upstream = toCommit($ARGV[0]);
- my $head = head();
-
- isAncestor($upstream, $head) or die "$ARGV[0] is not an ancestor of HEAD.";
-
- my @revlist = `git rev-list --reverse --pretty=oneline $upstream..`;
- @revlist or die "Couldn't determine revisions";
-
- my $tempFile = new File::Temp(UNLINK => 1);
- foreach my $line (@revlist) {
- print $tempFile "$defaultReviewer : $line";
- }
-
- print $tempFile <<EOF;
-
-# Change 'NOBODY' to the reviewer for each commit
-#
-# If any line starts with "rs" followed by one or more spaces, then the phrase
-# "Reviewed by" is changed to "Rubber-stamped by" in the ChangeLog(s)/commit
-# message for that commit.
-#
-# Commits may be reordered
-# Omitted commits will be lost
-EOF
-
- close $tempFile;
-
- my $editor = $ENV{GIT_EDITOR} || getConfigValue("core.editor") || $ENV{VISUAL} || $ENV{EDITOR} || "vi";
- my $result = system "$editor \"" . $tempFile->filename . "\"";
- !$result or die "Error spawning editor.";
-
- my @todo = ();
- open TEMPFILE, '<', $tempFile->filename or die "Error opening temp file.";
- foreach my $line (<TEMPFILE>) {
- next if $line =~ /^#/;
- $line =~ /^(rs\s+)?(.*)\s+:\s+([0-9a-fA-F]+)/ or next;
- push @todo, {rubberstamp => defined $1 && length $1, reviewer => $2, commit => $3};
- }
- close TEMPFILE;
- @todo or die "No revisions specified.";
-
- foreach my $item (@todo) {
- $item->{changeLogs} = changeLogsForCommit($item->{commit});
- }
-
- $result = system "git", "checkout", $upstream;
- !$result or die "Error checking out $ARGV[0].";
-
- my $success = 1;
- foreach my $item (@todo) {
- $success = cherryPick(%{$item});
- $success or last;
- $success = addReviewer(%{$item});
- $success or last;
- $success = commit();
- $success or last;
- }
-
- unless ($success) {
- resetToCommit($head);
- exit 1;
- }
-
- $result = system "git", "branch", "-f", $head;
- !$result or die "Error updating $head.";
- $result = system "git", "checkout", $head;
- exit WEXITSTATUS($result);
-}
-
-sub nonInteractive()
-{
- @ARGV == 2 or usage();
-
- my $commit = toCommit($ARGV[0]);
- my $reviewer = $ARGV[1];
- my $head = head();
- my $headCommit = toCommit($head);
-
- isAncestor($commit, $head) or die "$ARGV[1] is not an ancestor of HEAD.";
-
- my %item = (
- reviewer => $reviewer,
- commit => $commit,
- );
-
- $item{changeLogs} = changeLogsForCommit($commit);
- $item{changeLogs} or die;
-
- unless ((($commit eq $headCommit) or checkout($commit))
- # FIXME: We need to use $ENV{GIT_DIR}/.git/MERGE_MSG
- && writeCommitMessageToFile(".git/MERGE_MSG")
- && addReviewer(%item)
- && commit(1)
- && (($commit eq $headCommit) or rebaseOntoHead($commit, $head))) {
- resetToCommit($head);
- exit 1;
- }
-}
-
-sub usage()
-{
- print STDERR $usage;
- exit 1;
-}
-
-sub requireCleanWorkTree()
-{
- my $result = system "git rev-parse --verify HEAD > /dev/null";
- $result ||= system qw(git update-index --refresh);
- $result ||= system qw(git diff-files --quiet);
- $result ||= system qw(git diff-index --cached --quiet HEAD --);
- !$result or die "Working tree is dirty"
-}
-
-sub fail(;$)
-{
- my ($message) = @_;
- print STDERR $message, "\n" if defined $message;
- return 0;
-}
-
-sub cherryPick(\%)
-{
- my ($item) = @_;
-
- my $result = system "git cherry-pick -n $item->{commit} > /dev/null";
- !$result or return fail("Failed to cherry-pick $item->{commit}");
-
- return 1;
-}
-
-sub addReviewer(\%)
-{
- my ($item) = @_;
-
- return 1 if $item->{reviewer} eq $defaultReviewer;
-
- foreach my $log (@{$item->{changeLogs}}) {
- addReviewerToChangeLog($item->{reviewer}, $item->{rubberstamp}, $log) or return fail();
- }
-
- addReviewerToCommitMessage($item->{reviewer}, $item->{rubberstamp}, ".git/MERGE_MSG") or return fail();
-
- return 1;
-}
-
-sub commit(;$)
-{
- my ($amend) = @_;
-
- my @command = qw(git commit -F .git/MERGE_MSG);
- push @command, "--amend" if $amend;
- my $result = system @command;
- !$result or return fail("Failed to commit revision");
-
- return 1;
-}
-
-sub addReviewerToChangeLog($$$)
-{
- my ($reviewer, $rubberstamp, $log) = @_;
-
- return addReviewerToFile($reviewer, $rubberstamp, $log, 0);
-}
-
-sub addReviewerToCommitMessage($$$)
-{
- my ($reviewer, $rubberstamp, $log) = @_;
-
- return addReviewerToFile($reviewer, $rubberstamp, $log, 1);
-}
-
-sub addReviewerToFile
-{
- my ($reviewer, $rubberstamp, $log, $isCommitMessage) = @_;
-
- my $tempFile = new File::Temp(UNLINK => 1);
-
- open LOG, "<", $log or return fail("Couldn't open $log.");
-
- my $finished = 0;
- foreach my $line (<LOG>) {
- if (!$finished && $line =~ /NOBODY \(OOPS!\)/) {
- $line =~ s/NOBODY \(OOPS!\)/$reviewer/;
- $line =~ s/Reviewed/Rubber-stamped/ if $rubberstamp;
- $finished = 1 unless $isCommitMessage;
- }
-
- print $tempFile $line;
- }
-
- close $tempFile;
- close LOG or return fail("Couldn't close $log");
-
- my $result = system "mv", $tempFile->filename, $log;
- !$result or return fail("Failed to rename $tempFile to $log");
-
- unless ($isCommitMessage) {
- my $result = system "git", "add", $log;
- !$result or return fail("Failed to git add");
- }
-
- return 1;
-}
-
-sub head()
-{
- my $head = `git symbolic-ref HEAD`;
- $head =~ /^refs\/heads\/(.*)$/ or die "Couldn't determine current branch.";
- $head = $1;
-
- return $head;
-}
-
-sub isAncestor($$)
-{
- my ($ancestor, $descendant) = @_;
-
- chomp(my $mergeBase = `git merge-base $ancestor $descendant`);
- return $mergeBase eq $ancestor;
-}
-
-sub toCommit($)
-{
- my ($arg) = @_;
-
- chomp(my $commit = `git rev-parse $arg`);
- return $commit;
-}
-
-sub changeLogsForCommit($)
-{
- my ($commit) = @_;
-
- my @files = `git diff -r --name-status $commit^ $commit`;
- @files or return fail("Couldn't determine changed files for $commit.");
-
- my @changeLogs = map { /^[ACMR]\s*(.*)/; $1 } grep { /^[ACMR].*[^-]ChangeLog/ } @files;
- return \@changeLogs;
-}
-
-sub resetToCommit($)
-{
- my ($commit) = @_;
-
- my $result = system "git", "checkout", "-f", $commit;
- !$result or return fail("Error checking out $commit.");
-
- return 1;
-}
-
-sub writeCommitMessageToFile($)
-{
- my ($file) = @_;
-
- open FILE, ">", $file or return fail("Couldn't open $file.");
- open MESSAGE, "-|", qw(git rev-list --max-count=1 --pretty=format:%B HEAD) or return fail("Error running git rev-list.");
- my $commitLine = <MESSAGE>;
- foreach my $line (<MESSAGE>) {
- print FILE $line;
- }
- close MESSAGE;
- close FILE or return fail("Couldn't close $file.");
-
- return 1;
-}
-
-sub rebaseOntoHead($$)
-{
- my ($upstream, $branch) = @_;
-
- my $result = system qw(git rebase --onto HEAD), $upstream, $branch;
- !$result or return fail("Couldn't rebase.");
-
- return 1;
-}
-
-sub checkout($)
-{
- my ($commit) = @_;
-
- my $result = system "git", "checkout", $commit;
- !$result or return fail("Error checking out $commit.");
-
- return 1;
-}
-
-sub getConfigValue($)
-{
- my ($variable) = @_;
-
- chomp(my $value = `git config --get "$variable"`);
-
- return $value;
-}
diff --git a/Tools/Scripts/import-w3c-performance-wg-tests b/Tools/Scripts/import-w3c-performance-wg-tests
deleted file mode 100755
index caddde7f7..000000000
--- a/Tools/Scripts/import-w3c-performance-wg-tests
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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 script imports the W3C Web Performance WG's test suite into WebKit.
-#
-# You must have checked out the 'webperf' repository from https://dvcs.w3.org/hg/
-#
-# This script will populate the LayoutTests directory with the new tests. If the
-# tests already exist, the script will refuse to run. Please clear out the
-# w3c/webperf directory first.
-#
-# The main step in importing the tests is updating all of the URLs to match our
-# directory layout.
-
-import os
-import sys
-
-if len(sys.argv) != 3:
- print 'USAGE: %s path_to_webperf_checkout_root path_to_webkit_checkout_root' % sys.argv[0]
- sys.exit(1)
-
-source_directory = os.path.join(sys.argv[1], 'tests')
-destination_directory = os.path.join(sys.argv[2], 'LayoutTests', 'http', 'tests', 'w3c', 'webperf')
-
-if os.path.exists(destination_directory):
- print 'Refusing to overwrite existing directory: %s' % destination_directory
- sys.exit(1)
-os.makedirs(destination_directory)
-
-directories_to_copy = ['approved', 'resources']
-directories_to_ignore = ['html5'] # These are just duplicates of the sibling directory 'html'.
-replacements = [
- ('www.w3c-test.org', 'localhost:8000'), # This is the alternate host for cross-server requests.
- ('w3c-test.org', '127.0.0.1:8000'), # This is the primary test server.
- ('webperf/tests', 'w3c/webperf'), # We prepend /w3c to all of our paths.
- ('/resources/testharness', '/w3c/resources/testharness'),
- ('+ "(" + reloadTime[time] + ")"', ''), # Remove dynamic values from the output. We'll still see PASS.
- ('+ "(" + startingTime[time] + ")"', ''),
- ('\r\n', '\n'), # Convert to *NIX format.
-]
-
-for directory_to_copy in directories_to_copy:
- os.makedirs(os.path.join(destination_directory, directory_to_copy))
- os.chdir(source_directory)
- for root, dirs, files in os.walk(directory_to_copy):
- for dirname in directories_to_ignore:
- if dirname in dirs:
- dirs.remove(dirname)
- for dirname in dirs:
- os.makedirs(os.path.join(destination_directory, root, dirname))
- for filename in files:
- with open(os.path.join(source_directory, root, filename), 'r') as in_file:
- with open(os.path.join(destination_directory, root, filename), 'w') as out_file:
- for line in in_file:
- for to_find, replace_with in replacements:
- line = line.replace(to_find, replace_with)
- assert 'w3c-test.org' not in line, 'Imported test must not depend on live site. Bad line: "%s"' % line
- out_file.write(line)
diff --git a/Tools/Scripts/import-w3c-tests b/Tools/Scripts/import-w3c-tests
deleted file mode 100755
index bb72096c0..000000000
--- a/Tools/Scripts/import-w3c-tests
+++ /dev/null
@@ -1,35 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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 sys
-
-from webkitpy.w3c import test_importer
-
-
-sys.exit(test_importer.main(sys.argv[1:], sys.stdout, sys.stderr))
diff --git a/Tools/Scripts/lint-test-expectations b/Tools/Scripts/lint-test-expectations
deleted file mode 100755
index c56eb77db..000000000
--- a/Tools/Scripts/lint-test-expectations
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-import sys
-
-from webkitpy.common import version_check
-from webkitpy.layout_tests import lint_test_expectations
-
-
-sys.exit(lint_test_expectations.main(sys.argv[1:], sys.stdout, sys.stderr))
-
diff --git a/Tools/Scripts/lint-webkitpy b/Tools/Scripts/lint-webkitpy
deleted file mode 100755
index 22de981e7..000000000
--- a/Tools/Scripts/lint-webkitpy
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2012 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.
-
-import sys
-
-from webkitpy.style.checkers.python import Pylinter
-
-sys.stdout.write(Pylinter().run(sys.argv[1:]).getvalue())
diff --git a/Tools/Scripts/make-new-script-test b/Tools/Scripts/make-new-script-test
deleted file mode 100755
index 59fbfa3bd..000000000
--- a/Tools/Scripts/make-new-script-test
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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. 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 create a new HTML file for a monolithic test using js-test machinery.
-
-use strict;
-
-use FindBin;
-use lib $FindBin::Bin;
-
-use File::Basename;
-use Getopt::Long;
-use webkitdirs;
-
-sub makePathToSharedSources;
-sub openTestInEditor;
-sub writeTestFile;
-
-my $showHelp;
-
-my $result = GetOptions(
- "help" => \$showHelp,
-);
-
-if (!$result || $showHelp || !scalar(@ARGV) || $ARGV[0] !~ m/\.html$/) {
- print STDERR "Usage: " . basename($0) . " [-h|--help] pathname\n";
- print STDERR "\nExamples:\n";
- print STDERR " " . basename($0) . " new-test.html (will create the test in current directory)\n";
- print STDERR " " . basename($0) . " fast/loader/new-test.html (a relative path is always from LayoutTests directory)\n";
- print STDERR " " . basename($0) . " /Volumes/Data/WebKit/LayoutTests/fast/loader/new-test.html\n";
- exit 1;
-}
-
-my $providedPath = $ARGV[0];
-
-my $testAbsolutePath;
-
-# If only a file name is provided, create the test in current directory.
-$testAbsolutePath = File::Spec->rel2abs($providedPath) if (!(File::Spec->splitpath($providedPath))[1]);
-
-# Otherwise, it's either absolute, or relative to LayoutTests directory.
-chdirWebKit();
-chdir "LayoutTests";
-$testAbsolutePath = File::Spec->rel2abs($providedPath) if (!$testAbsolutePath);
-
-writeTestFile();
-
-print "$testAbsolutePath\n";
-openTestInEditor();
-
-exit 0;
-
-sub makePathToSharedSources
-{
- my $layoutTestsPath = getcwd();
- $testAbsolutePath =~ m/^$layoutTestsPath/ or die "Path $testAbsolutePath is not in LayoutTests directory.\n";
- my $isHTTPTest = $testAbsolutePath =~ m/^$layoutTestsPath\/http/;
- if ($isHTTPTest) {
- return "/js-test-resources";
- } else {
- return File::Spec->abs2rel("fast/js/resources/", dirname($testAbsolutePath));
- }
-}
-
-sub writeTestFile
-{
- die "Test $testAbsolutePath already exists.\n" if (-e $testAbsolutePath);
-
- my $pathToSharedSources = makePathToSharedSources();
-
- open TEST, ">", ${testAbsolutePath} or die "Cannot create test file at $testAbsolutePath.\n";
- print TEST << "EOF";
-<!DOCTYPE html>
-<html>
-<head>
-<meta charset="utf-8">
-<script src="$pathToSharedSources/js-test-pre.js"></script>
-</head>
-<body>
-<script>
-
-description("TEST DESCRIPTION HERE");
-
-// Your test script here. Feel free to modify surrounding HTML code if necessary.
-
-</script>
-<script src="$pathToSharedSources/js-test-post.js"></script>
-</body>
-</html>
-EOF
- close TEST;
-}
-
-sub openTestInEditor()
-{
- my $editor = $ENV{EDITOR};
- exec ($editor, $testAbsolutePath) if ($editor);
-}
diff --git a/Tools/Scripts/make-script-test-wrappers b/Tools/Scripts/make-script-test-wrappers
deleted file mode 100755
index 74284bf90..000000000
--- a/Tools/Scripts/make-script-test-wrappers
+++ /dev/null
@@ -1,136 +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]\n";
- exit 1;
-}
-
-setConfiguration();
-my $productDir = productDir();
-
-chdirWebKit();
-
-my @templates = findTemplateFiles(@ARGV);
-
-for my $tfile (@templates) {
-
- my $tpath = $tfile;
- my $templateDirectory;
- my $templateRelativePath;
- if ($tpath =~ s:/(script-tests)/TEMPLATE.html$::) {
- $templateDirectory = $1;
- $templateRelativePath = $1 . "/TEMPLATE.html";
- } else {
- print "Inappropriate position of a template: ${tpath}\n";
- next;
- }
-
- 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 }, $templateDirectory);
-
- open TEMPLATE, "<${templateRelativePath}";
- my $template = do { local $/; <TEMPLATE> };
- close TEMPLATE;
-
- my $templateNegative = $template;
- if (-e "${templateDirectory}/TEMPLATE-n.html") {
- open TEMPLATE, "<${templateDirectory}/TEMPLATE-n.html";
- $templateNegative = do { local $/; <TEMPLATE> };
- close TEMPLATE;
- }
-
- for my $file (@files) {
- my $html = $file;
- $html =~ s:${templateDirectory}/(.*)\.js:$1.html:;
- next if -f "$html-disabled";
-
- system("cat ${file} | tr '\\0' ' ' | grep -q 'successfullyParsed ='");
- 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 @templateFiles;
-
- my $fileFilter = sub {
- push @templateFiles, $File::Find::name if $_ eq "TEMPLATE.html";
- };
-
- find({ preprocess => \&directoryFilter, wanted => $fileFilter }, "LayoutTests/fast/js");
-
- return @templateFiles;
-}
diff --git a/Tools/Scripts/malloc-tree b/Tools/Scripts/malloc-tree
deleted file mode 100755
index 41769cb9c..000000000
--- a/Tools/Scripts/malloc-tree
+++ /dev/null
@@ -1,210 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright (C) 2011 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 sys
-import getopt
-from optparse import OptionParser
-
-oneK = 1024
-oneM = 1024 * 1024
-oneG = 1024 * 1024 * 1024
-
-hotspot = False
-scaleSize = True
-showBars = True
-
-def byteString(bytes):
- if scaleSize:
- format = ' %4d '
- val = bytes
-
- if bytes >= oneG:
- format = '%8.1fG'
- val = float(bytes) / oneG
- elif bytes >= oneM:
- format = '%8.1fM'
- val = float(bytes) / oneM
- elif bytes >= oneK:
- format = '%8.1fK'
- val = float(bytes) / oneK
-
- return format % val
- if hotspot:
- return '%d' % bytes
- return '%12d' % bytes
-
-class Node:
- def __init__(self, name, level = 0, bytes = 0):
- self.name = name
- self.level = level
- self.children = {}
- self.totalBytes = bytes
-
- def hasChildren(self):
- return len(self.children) > 0
-
- def getChild(self, name):
- if not name in self.children:
- newChild = Node(name, self.level + 1)
- self.children[name] = newChild
-
- return self.children[name]
-
- def getBytes(self):
- return self.totalBytes
-
- def addBytes(self, bytes):
- self.totalBytes = self.totalBytes + bytes
-
- def processLine(self, bytes, line):
- sep = line.find('|')
- if sep < 0:
- childName = line.strip()
- line = ''
- else:
- childName = line[:sep].strip()
- line = line[sep+1:]
-
- child = self.getChild(childName)
- child.addBytes(bytes)
-
- if len(line) > 0:
- child.processLine(bytes, line)
-
- def printNode(self, prefix = ' '):
- global hotspot
- global scaleSize
- global showBars
-
- if self.hasChildren():
- byteStr = byteString(self.totalBytes)
-
- if hotspot:
- print(' %s%s %s' % (self.level * ' ', byteString(self.totalBytes), self.name))
- else:
- print('%s %s%s' % (byteString(self.totalBytes), prefix[:-1], self.name))
-
- sortedChildren = sorted(self.children.values(), key=sortKeyByBytes, reverse=True)
-
- if showBars and len(self.children) > 1:
- newPrefix = prefix + '|'
- else:
- newPrefix = prefix + ' '
-
- childrenLeft = len(sortedChildren)
- for child in sortedChildren:
- if childrenLeft <= 1:
- newPrefix = prefix + ' '
- else:
- childrenLeft = childrenLeft - 1
- child.printNode(newPrefix)
- else:
- byteStr = byteString(self.totalBytes)
-
- if hotspot:
- print(' %s%s %s' % (self.level * ' ', byteString(self.totalBytes), self.name))
- else:
- print('%s %s%s' % (byteString(self.totalBytes), prefix[:-1], self.name))
-
-def sortKeyByBytes(node):
- return node.getBytes();
-
-def main():
- global hotspot
- global scaleSize
- global showBars
-
- # parse command line options
- parser = OptionParser(usage='malloc-tree [options] [malloc_history-file]',
- description='Format malloc_history output as a nested tree',
- epilog='stdin used if malloc_history-file is missing')
-
- parser.add_option('-n', '--nobars', action='store_false', dest='showBars',
- default=True, help='don\'t show bars lining up siblings in tree');
- parser.add_option('-b', '--size-in-bytes', action='store_false', dest='scaleSize',
- default=None, help='show sizes in bytes');
- parser.add_option('-s', '--size-scale', action='store_true', dest='scaleSize',
- default=None, help='show sizes with appropriate scale suffix [K,M,G]');
- parser.add_option('-t', '--hotspot', action='store_true', dest='hotspot',
- default=False, help='output in HotSpotFinder format, implies -b');
-
- (options, args) = parser.parse_args()
-
- hotspot = options.hotspot
- if options.scaleSize is None:
- if hotspot:
- scaleSize = False
- else:
- scaleSize = True
- else:
- scaleSize = options.scaleSize
- showBars = options.showBars
-
- if len(args) < 1:
- inputFile = sys.stdin
- else:
- inputFile = open(args[0], "r")
-
- line = inputFile.readline()
-
- rootNodes = {}
-
- while line:
- firstSep = line.find('|')
- if firstSep > 0:
- firstPart = line[:firstSep].strip()
- lineRemain = line[firstSep+1:]
- bytesSep = firstPart.find('bytes:')
- if bytesSep >= 0:
- name = firstPart[bytesSep+7:]
- stats = firstPart.split(' ')
- bytes = int(stats[3].replace(',', ''))
-
- if not name in rootNodes:
- node = Node(name, 0, bytes);
- rootNodes[name] = node
- else:
- node = rootNodes[name]
- node.addBytes(bytes)
-
- node.processLine(bytes, lineRemain)
-
- line = inputFile.readline()
-
- sortedRootNodes = sorted(rootNodes.values(), key=sortKeyByBytes, reverse=True)
-
- print 'Call graph:'
- try:
- for node in sortedRootNodes:
- node.printNode()
- print
- except:
- pass
-
-if __name__ == "__main__":
- main()
diff --git a/Tools/Scripts/new-run-webkit-httpd b/Tools/Scripts/new-run-webkit-httpd
deleted file mode 100755
index 921e77971..000000000
--- a/Tools/Scripts/new-run-webkit-httpd
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2010 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.
-
-"""A utility script for starting and stopping the HTTP server with the
- same configuration as used in the layout tests."""
-
-#
-# FIXME: currently this code only works with the Chromium ports and LigHTTPd.
-# It should be made to work on all ports.
-#
-# This script is also used by Chromium's ui_tests to run http layout tests
-# in a browser.
-#
-import optparse
-import os
-import sys
-import tempfile
-
-import webkitpy.common.version_check
-
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.servers import http_server
-
-
-def run(options):
- if not options.server:
- print ('Usage: %s --server {start|stop} [--root=root_dir]'
- ' [--port=port_number]' % sys.argv[0])
- else:
- if (options.root is None) and (options.port is not None):
- # specifying root but not port means we want httpd on default
- # set of ports that LayoutTest use, but pointing to a different
- # source of tests. Specifying port but no root does not seem
- # meaningful.
- raise 'Specifying port requires also a root.'
- host = Host()
- # FIXME: Make this work with other ports as well.
- port_obj = host.port_factory.get(port_name='win', options=options)
- httpd = http_server.Lighttpd(port_obj,
- tempfile.gettempdir(),
- port=options.port,
- root=options.root,
- run_background=options.run_background,
- layout_tests_dir=options.layout_tests_dir)
- if options.server == 'start':
- httpd.start()
- else:
- httpd.stop()
-
-
-def main():
- option_parser = optparse.OptionParser()
- option_parser.add_option('-k', '--server',
- help='Server action (start|stop)')
- option_parser.add_option('-p', '--port',
- help='Port to listen on (overrides layout test ports)')
- option_parser.add_option('-r', '--root',
- help='Absolute path to DocumentRoot (overrides layout test roots)')
- option_parser.add_option('--register_cygwin', action="store_true",
- dest="register_cygwin", help='Register Cygwin paths (on Win try bots)')
- option_parser.add_option('--run_background', action="store_true",
- dest="run_background",
- help='Run on background (for running as UI test)')
- option_parser.add_option('--layout_tests_dir',
- dest="layout_tests_dir",
- help='Absolute path to LayoutTests root')
- options, args = option_parser.parse_args()
-
- run(options)
-
-
-if '__main__' == __name__:
- main()
diff --git a/Tools/Scripts/new-run-webkit-tests b/Tools/Scripts/new-run-webkit-tests
deleted file mode 100755
index 6b1a98b68..000000000
--- a/Tools/Scripts/new-run-webkit-tests
+++ /dev/null
@@ -1,33 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 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.
-
-"""Wrapper around webkitpy/layout_tests/run_webkit_tests.py"""
-from webkitpy.common import multiprocessing_bootstrap
-
-multiprocessing_bootstrap.run('webkitpy', 'layout_tests', 'run_webkit_tests.py')
diff --git a/Tools/Scripts/new-run-webkit-websocketserver b/Tools/Scripts/new-run-webkit-websocketserver
deleted file mode 100755
index 25c9537f2..000000000
--- a/Tools/Scripts/new-run-webkit-websocketserver
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-"""A utility script for starting and stopping the web socket server with the
- same configuration as used in the layout tests."""
-
-import logging
-import optparse
-import tempfile
-
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.servers import websocket_server
-from webkitpy.port import platform_options
-
-
-def main():
- option_parser = optparse.OptionParser()
- option_parser.add_option('--server', type='choice',
- choices=['start', 'stop'], default='start',
- help='Server action (start|stop).')
- option_parser.add_option('-p', '--port', dest='port',
- default=None, help='Port to listen on.')
- option_parser.add_option('-r', '--root',
- help='Absolute path to DocumentRoot '
- '(overrides layout test roots).')
- option_parser.add_option('-t', '--tls', dest='use_tls',
- action='store_true',
- default=False, help='use TLS (wss://).')
- option_parser.add_option('-k', '--private_key', dest='private_key',
- default='', help='TLS private key file.')
- option_parser.add_option('-c', '--certificate', dest='certificate',
- default='', help='TLS certificate file.')
- option_parser.add_option('--ca-certificate', dest='ca_certificate',
- default='', help='TLS CA certificate file for '
- 'client authentication.')
- option_parser.add_option('--chromium', action='store_true',
- dest='chromium',
- default=False,
- help='Use the Chromium port.')
- option_parser.add_option('--register_cygwin', action="store_true",
- dest="register_cygwin",
- help='Register Cygwin paths (on Win try bots).')
- option_parser.add_option('--pidfile', help='path to pid file.')
- option_parser.add_option('--output-dir', dest='output_dir',
- default=None, help='output directory.')
- option_parser.add_option('-v', '--verbose', action='store_true',
- default=False,
- help='Include debug-level logging.')
-
- option_group = optparse.OptionGroup(option_parser, "Platform options")
- option_group.add_options(platform_options())
- option_parser.add_option_group(option_group)
-
- options, args = option_parser.parse_args()
-
- if not options.port:
- if options.use_tls:
- # FIXME: We shouldn't grab at this private variable.
- options.port = websocket_server._DEFAULT_WSS_PORT
- else:
- # FIXME: We shouldn't grab at this private variable.
- options.port = websocket_server._DEFAULT_WS_PORT
-
- if not options.output_dir:
- options.output_dir = tempfile.gettempdir()
-
- kwds = {'port': options.port, 'use_tls': options.use_tls}
- if options.root:
- kwds['root'] = options.root
- if options.private_key:
- kwds['private_key'] = options.private_key
- if options.certificate:
- kwds['certificate'] = options.certificate
- if options.ca_certificate:
- kwds['ca_certificate'] = options.ca_certificate
- if options.pidfile:
- kwds['pidfile'] = options.pidfile
-
- host = Host()
- port_obj = host.port_factory.get(options.platform, options=options)
- pywebsocket = websocket_server.PyWebSocket(port_obj, options.output_dir, **kwds)
-
- log_level = logging.WARN
- if options.verbose:
- log_level = logging.DEBUG
- logging.basicConfig(level=log_level)
-
- if 'start' == options.server:
- pywebsocket.start()
- else:
- pywebsocket.stop()
-
-if '__main__' == __name__:
- main()
diff --git a/Tools/Scripts/num-cpus b/Tools/Scripts/num-cpus
deleted file mode 100755
index 8a8c97fca..000000000
--- a/Tools/Scripts/num-cpus
+++ /dev/null
@@ -1,6 +0,0 @@
-#!/usr/bin/perl -w
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-print numberOfCPUs() . "\n";
diff --git a/Tools/Scripts/old-run-webkit-tests b/Tools/Scripts/old-run-webkit-tests
deleted file mode 100755
index ed201acce..000000000
--- a/Tools/Scripts/old-run-webkit-tests
+++ /dev/null
@@ -1,2893 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2010 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>
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2009 Andras Becsi (becsi.andras@stud.u-szeged.hu), University of Szeged
-#
-# 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, .xhtmlmp, .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 CGI;
-use Config;
-use Cwd;
-use Data::Dumper;
-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 File::Temp;
-use FindBin;
-use Getopt::Long;
-use IPC::Open2;
-use IPC::Open3;
-use MIME::Base64;
-use Time::HiRes qw(time usleep);
-
-use List::Util 'shuffle';
-
-use lib $FindBin::Bin;
-use webkitperl::features;
-use webkitperl::httpd;
-use webkitdirs;
-use VCSUtils;
-use POSIX;
-
-sub buildPlatformResultHierarchy();
-sub buildPlatformTestHierarchy(@);
-sub captureSavedCrashLog($$);
-sub checkPythonVersion();
-sub closeCygpaths();
-sub closeDumpTool();
-sub closeWebSocketServer();
-sub configureAndOpenHTTPDIfNeeded();
-sub countAndPrintLeaks($$$);
-sub countFinishedTest($$$$);
-sub deleteExpectedAndActualResults($);
-sub dumpToolDidCrash();
-sub epiloguesAndPrologues($$);
-sub expectedDirectoryForTest($;$;$);
-sub fileNameWithNumber($$);
-sub findNewestFileMatchingGlob($);
-sub htmlForResultsSection(\@$&);
-sub isTextOnlyTest($);
-sub launchWithEnv(\@\%);
-sub resolveAndMakeTestResultsDirectory();
-sub numericcmp($$);
-sub openDiffTool();
-sub buildDumpTool($);
-sub openDumpTool();
-sub parseLeaksandPrintUniqueLeaks();
-sub openWebSocketServerIfNeeded();
-sub pathcmp($$);
-sub printFailureMessageForTest($$);
-sub processIgnoreTests($$);
-sub processSkippedFileEntry($$$);
-sub readChecksumFromPng($);
-sub readFromDumpToolWithTimer(**);
-sub readSkippedFiles($);
-sub recordActualResultsAndDiff($$);
-sub sampleDumpTool();
-sub setFileHandleNonBlocking(*$);
-sub setUpWindowsCrashLogSaving();
-sub slowestcmp($$);
-sub splitpath($);
-sub startsWith($$);
-sub stopRunningTestsEarlyIfNeeded();
-sub stripExtension($);
-sub stripMetrics($$);
-sub testCrashedOrTimedOut($$$$$$);
-sub toCygwinPath($);
-sub toURL($);
-sub toWindowsPath($);
-sub validateSkippedArg($$;$);
-sub writeToFile($$);
-
-# Argument handling
-my $addPlatformExceptions = 0;
-my @additionalPlatformDirectories = ();
-my $complexText = 0;
-my $exitAfterNFailures = 0;
-my $exitAfterNCrashesOrTimeouts = 0;
-my $generateNewResults = isAppleMacWebKit() ? 1 : 0;
-my $guardMalloc = '';
-# FIXME: Dynamic HTTP-port configuration in this file is wrong. The various
-# apache config files in LayoutTests/http/config govern the port numbers.
-# Dynamic configuration as-written will also cause random failures in
-# an IPv6 environment. See https://bugs.webkit.org/show_bug.cgi?id=37104.
-my $httpdPort = 8000;
-my $httpdSSLPort = 8443;
-my $httpdAuxiliaryPort = 8080; # Port used by various tests in http/tests/security.
-my $ignoreMetrics = 0;
-my $webSocketPort = 8880;
-# wss is disabled until all platforms support pyOpenSSL.
-# my $webSocketSecurePort = 9323;
-my @ignoreTests;
-my $iterations = 1;
-my $launchSafari = 1;
-my $mergeDepth;
-my $pixelTests = '';
-my $platform;
-my $quiet = '';
-my $randomizeTests = 0;
-my $repeatEach = 1;
-my $report10Slowest = 0;
-my $resetResults = 0;
-my $reverseTests = 0;
-my $root;
-my $runSample = 1;
-my $shouldCheckLeaks = 0;
-my $showHelp = 0;
-my $stripEditingCallbacks;
-my $testHTTP = 1;
-my $testWebSocket = 1;
-my $testMedia = 1;
-my $tmpDir = "/tmp";
-my $testResultsDirectory = File::Spec->catdir($tmpDir, "layout-test-results");
-my $testsPerDumpTool = 1000;
-my $threaded = 0;
-my $gcBetweenTests = 0;
-# DumpRenderTree has an internal timeout of 30 seconds, so this must be > 30.
-my $timeoutSeconds = 35;
-my $tolerance = 0;
-my $treatSkipped = "default";
-my $useRemoteLinksToTests = 0;
-my $useValgrind = 0;
-my $verbose = 0;
-my $shouldWaitForHTTPD = 0;
-my $useWebKitTestRunner = 0;
-my $noBuildDumpTool = 0;
-
-# These arguments are ignored, but exist for compatibility with new-run-webkit-tests.
-my $builderName = '';
-my $buildNumber = '';
-my $masterName = '';
-my $testResultsServer = '';
-
-my @leaksFilenames;
-
-if (isWindows()) {
- print "This script has to be run under Cygwin to function correctly.\n";
- exit 1;
-}
-
-my $perlInterpreter = "perl";
-
-my $expectedTag = "expected";
-my $mismatchTag = "mismatch";
-my $refTag = "ref";
-my $notrefTag = "notref";
-my $actualTag = "actual";
-my $prettyDiffTag = "pretty-diff";
-my $diffsTag = "diffs";
-my $errorTag = "stderr";
-my $crashLogTag = "crash-log";
-
-my $windowsCrashLogFilePrefix = "CrashLog";
-
-# These are defined here instead of closer to where they are used so that they
-# will always be accessible from the END block that uses them, even if the user
-# presses Ctrl-C before Perl has finished evaluating this whole file.
-my $windowsPostMortemDebuggerKey = "/HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug";
-my %previousWindowsPostMortemDebuggerValues;
-
-my $realPlatform;
-
-my @macPlatforms = ("mac-leopard", "mac-snowleopard", "mac-lion", "mac");
-my @winPlatforms = ("win-xp", "win-vista", "win-7sp0", "win");
-
-if (isAppleMacWebKit()) {
- if (isSnowLeopard()) {
- $platform = "mac-snowleopard";
- $tolerance = 0.1;
- } elsif (isLion()) {
- $platform = "mac-lion";
- $tolerance = 0.1;
- } else {
- $platform = "mac";
- }
-} elsif (isQt()) {
- $platform = "qt";
-} elsif (isGtk()) {
- $platform = "gtk";
-} elsif (isWinCairo()) {
- $platform = "wincairo";
-} elsif (isCygwin() || isWindows()) {
- if (isWindowsXP()) {
- $platform = "win-xp";
- } elsif (isWindowsVista()) {
- $platform = "win-vista";
- } elsif (isWindows7SP0()) {
- $platform = "win-7sp0";
- } else {
- $platform = "win";
- }
-}
-
-if (isQt() || isAppleWinWebKit()) {
- my $testfontPath = $ENV{"WEBKIT_TESTFONTS"};
- if (!$testfontPath || !-d "$testfontPath") {
- print "The WEBKIT_TESTFONTS environment variable is not defined or not set properly\n";
- print "You must set it before running the tests.\n";
- print "Use git to grab the actual fonts from http://gitorious.org/qtwebkit/testfonts\n";
- exit 1;
- }
-}
-
-if (!defined($platform)) {
- print "WARNING: Your platform is not recognized. Any platform-specific results will be generated in platform/undefined.\n";
- $platform = "undefined";
-}
-
-if (!checkPythonVersion()) {
- print "WARNING: Your platform does not have Python 2.5+, which is required to run websocket server, so disabling websocket/tests.\n";
- $testWebSocket = 0;
-}
-
-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";
-
-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
- --additional-platform-directory path/to/directory
- Look in the specified directory before looking in any of the default platform-specific directories
- --complex-text Use the complex text code path for all text (Mac OS X and Windows only)
- -c|--configuration config Set DumpRenderTree build configuration
- --gc-between-tests Force garbage collection between each test
- -g|--guard-malloc Enable Guard Malloc
- --exit-after-n-failures N Exit after the first N failures (includes crashes) instead of running all tests
- --exit-after-n-crashes-or-timeouts N
- Exit after the first N crashes instead of running all tests
- -h|--help Show this help message
- --[no-]http Run (or do not run) http tests (default: $httpDefault)
- --[no-]wait-for-httpd Wait for httpd if some other test session is using it already (same as WEBKIT_WAIT_FOR_HTTPD=1). (default: $shouldWaitForHTTPD)
- -i|--ignore-tests Comma-separated list of directories or tests to ignore
- --iterations n Number of times to run the set of tests (e.g. ABCABCABC)
- --[no-]launch-safari Launch (or do not launch) Safari to display test results (default: $launchSafariDefault)
- --[no-]show-results Same as --[no-]launch-safari
- -l|--leaks Enable leaks checking
- --[no-]new-test-results Generate results for new tests
- --nthly n Restart DumpRenderTree every n tests (default: $testsPerDumpTool)
- -p|--pixel-tests Enable pixel tests
- --tolerance t Ignore image differences less than this percentage (default: $tolerance)
- --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
- --repeat-each n Number of times to run each test (e.g. AAABBBCCC)
- --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 --nthly 1 --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
- --ignore-metrics Ignore metrics in tests
- --[no-]strip-editing-callbacks Remove editing callbacks from expected results
- -t|--threaded Run a concurrent JavaScript thead with each test
- --timeout t Sets the number of seconds before a test times out (default: $timeoutSeconds)
- --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.
- --use-remote-links-to-tests Link to test files within the SVN repository in the results.
- -2|--webkit-test-runner Use WebKitTestRunner rather than DumpRenderTree.
-EOF
-
-setConfiguration();
-
-my $getOptionsResult = GetOptions(
- 'add-platform-exceptions' => \$addPlatformExceptions,
- 'additional-platform-directory=s' => \@additionalPlatformDirectories,
- 'complex-text' => \$complexText,
- 'exit-after-n-failures=i' => \$exitAfterNFailures,
- 'exit-after-n-crashes-or-timeouts=i' => \$exitAfterNCrashesOrTimeouts,
- 'gc-between-tests' => \$gcBetweenTests,
- 'guard-malloc|g' => \$guardMalloc,
- 'help|h' => \$showHelp,
- 'http!' => \$testHTTP,
- 'wait-for-httpd!' => \$shouldWaitForHTTPD,
- 'ignore-metrics!' => \$ignoreMetrics,
- 'ignore-tests|i=s' => \@ignoreTests,
- 'iterations=i' => \$iterations,
- 'launch-safari!' => \$launchSafari,
- 'leaks|l' => \$shouldCheckLeaks,
- 'merge-leak-depth|m:5' => \$mergeDepth,
- 'new-test-results!' => \$generateNewResults,
- 'no-build' => \$noBuildDumpTool,
- 'nthly=i' => \$testsPerDumpTool,
- 'pixel-tests|p' => \$pixelTests,
- 'platform=s' => \$platform,
- 'port=i' => \$httpdPort,
- 'quiet|q' => \$quiet,
- 'random' => \$randomizeTests,
- 'repeat-each=i' => \$repeatEach,
- 'reset-results' => \$resetResults,
- 'results-directory|o=s' => \$testResultsDirectory,
- 'reverse' => \$reverseTests,
- 'root=s' => \$root,
- 'sample-on-timeout!' => \$runSample,
- 'show-results!' => \$launchSafari,
- 'singly|1' => sub { $testsPerDumpTool = 1; },
- 'skipped=s' => \&validateSkippedArg,
- 'slowest' => \$report10Slowest,
- 'strip-editing-callbacks!' => \$stripEditingCallbacks,
- 'threaded|t' => \$threaded,
- 'timeout=i' => \$timeoutSeconds,
- 'tolerance=f' => \$tolerance,
- 'use-remote-links-to-tests' => \$useRemoteLinksToTests,
- 'valgrind' => \$useValgrind,
- 'verbose|v' => \$verbose,
- 'webkit-test-runner|2' => \$useWebKitTestRunner,
- # These arguments are ignored (but are used by new-run-webkit-tests).
- 'builder-name=s' => \$builderName,
- 'build-number=s' => \$buildNumber,
- 'master-name=s' => \$masterName,
- 'test-results-server=s' => \$testResultsServer,
-);
-
-if (!$getOptionsResult || $showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-if ($useWebKitTestRunner) {
- if (isAppleMacWebKit()) {
- $realPlatform = $platform;
- $platform = "mac-wk2";
- } elsif (isAppleWinWebKit()) {
- $stripEditingCallbacks = 0 unless defined $stripEditingCallbacks;
- $realPlatform = $platform;
- $platform = "win-wk2";
- } elsif (isQt()) {
- $realPlatform = $platform;
- $platform = "qt-5.0-wk2";
- } elsif (isGtk()) {
- $realPlatform = $platform;
- $platform = "gtk-wk2";
- }
-}
-
-$timeoutSeconds *= 10 if $guardMalloc;
-
-$stripEditingCallbacks = isCygwin() unless defined $stripEditingCallbacks;
-
-my $ignoreSkipped = $treatSkipped eq "ignore";
-my $skippedOnly = $treatSkipped eq "only";
-
-my $configuration = configuration();
-
-# We need an environment variable to be able to enable the feature per-slave
-$shouldWaitForHTTPD = $ENV{"WEBKIT_WAIT_FOR_HTTPD"} unless ($shouldWaitForHTTPD);
-$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";
-}
-
-# Generating remote links causes a lot of unnecessary spew on GTK build bot
-$useRemoteLinksToTests = 0 if isGtk();
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-my $productDir = productDir();
-$productDir .= "/bin" if isQt();
-$productDir .= "/Programs" if isGtk();
-
-# Save the current directory before chaging it via chdirWebKit
-my $currentDir = cwd();
-chdirWebKit();
-
-if (!defined($root) && !$noBuildDumpTool) {
- # FIXME: We build both DumpRenderTree and WebKitTestRunner for
- # WebKitTestRunner runs because DumpRenderTree still includes
- # the DumpRenderTreeSupport module and the TestNetscapePlugin.
- # These two projects should be factored out into their own
- # projects.
- buildDumpTool("DumpRenderTree");
- buildDumpTool("WebKitTestRunner") if $useWebKitTestRunner;
-}
-
-my $dumpToolName = $useWebKitTestRunner ? "WebKitTestRunner" : "DumpRenderTree";
-
-if (isAppleWinWebKit()) {
- $dumpToolName .= "_debug" if configurationForVisualStudio() eq "Debug_All";
- $dumpToolName .= "_debug" if configurationForVisualStudio() eq "Debug_Cairo_CFLite";
- $dumpToolName .= $Config{_exe};
-}
-my $dumpTool = File::Spec->catfile($productDir, $dumpToolName);
-die "can't find executable $dumpToolName (looked in $productDir)\n" unless -x $dumpTool;
-
-my $imageDiffTool = "$productDir/ImageDiff";
-$imageDiffTool .= "_debug" if isCygwin() && configurationForVisualStudio() eq "Debug_All";
-$imageDiffTool .= "_debug" if isCygwin() && configurationForVisualStudio() eq "Debug_Cairo_CFLite";
-die "can't find executable $imageDiffTool (looked in $productDir)\n" if $pixelTests && !-x $imageDiffTool;
-
-checkFrameworks() unless isCygwin();
-
-if (isAppleMacWebKit()) {
- push @INC, $productDir;
- require DumpRenderTreeSupport;
-}
-
-my $layoutTestsName = "LayoutTests";
-my $testDirectory = File::Spec->rel2abs($layoutTestsName);
-my $expectedDirectory = $testDirectory;
-my $platformBaseDirectory = catdir($testDirectory, "platform");
-my $platformTestDirectory = catdir($platformBaseDirectory, $platform);
-my @platformResultHierarchy = buildPlatformResultHierarchy();
-my @platformTestHierarchy = buildPlatformTestHierarchy(@platformResultHierarchy);
-
-$expectedDirectory = $ENV{"WebKitExpectedTestResultsDirectory"} if $ENV{"WebKitExpectedTestResultsDirectory"};
-
-$testResultsDirectory = File::Spec->catfile($currentDir, $testResultsDirectory);
-# $testResultsDirectory must be empty before testing.
-rmtree $testResultsDirectory;
-my $testResults = File::Spec->catfile($testResultsDirectory, "results.html");
-
-if (isAppleMacWebKit()) {
- print STDERR "Compiling Java tests\n";
- my $javaTestsDirectory = catdir($testDirectory, "java");
-
- if (system("/usr/bin/make", "-C", "$javaTestsDirectory")) {
- exit 1;
- }
-} elsif (isCygwin()) {
- setUpWindowsCrashLogSaving();
-}
-
-print "Running tests from $testDirectory\n";
-if ($pixelTests) {
- print "Enabling pixel tests with a tolerance of $tolerance%\n";
- if (isDarwin()) {
- if (!$useWebKitTestRunner) {
- print "WARNING: Temporarily changing the main display color profile:\n";
- print "\tThe colors on your screen will change for the duration of the testing.\n";
- print "\tThis allows the pixel tests to have consistent color values across all machines.\n";
- }
-
- if (isPerianInstalled()) {
- print "WARNING: Perian's QuickTime component is installed and this may affect pixel test results!\n";
- print "\tYou should avoid generating new pixel results in this environment.\n";
- print "\tSee https://bugs.webkit.org/show_bug.cgi?id=22615 for details.\n";
- }
- }
-}
-
-system "ln", "-s", $testDirectory, "/tmp/LayoutTests" unless -x "/tmp/LayoutTests";
-
-my %ignoredFiles = ( "results.html" => 1 );
-my %ignoredDirectories = map { $_ => 1 } qw(platform);
-my %ignoredLocalDirectories = map { $_ => 1 } qw(.svn _svn resources script-tests);
-my %supportedFileExtensions = map { $_ => 1 } qw(htm html shtml xml xhtml xhtmlmp pl php mht);
-
-if (!checkWebCoreFeatureSupport("MathML", 0)) {
- $ignoredDirectories{'mathml'} = 1;
-}
-
-if (!checkWebCoreFeatureSupport("MHTML", 0)) {
- $ignoredDirectories{'mhtml'} = 1;
-}
-
-# FIXME: We should fix webkitperl/features.pm:hasFeature() to do the correct feature detection for Cygwin.
-if (checkWebCoreFeatureSupport("SVG", 0)) {
- $supportedFileExtensions{'svg'} = 1;
-} elsif (isCygwin()) {
- $supportedFileExtensions{'svg'} = 1;
-} else {
- $ignoredLocalDirectories{'svg'} = 1;
-}
-
-if (!$testHTTP) {
- $ignoredDirectories{'http'} = 1;
- $ignoredDirectories{'websocket'} = 1;
-} elsif (!hasHTTPD()) {
- print "\nNo httpd found. Cannot run http tests.\nPlease use --no-http if you do not want to run http tests.\n";
- exit 1;
-}
-
-if (!$testWebSocket) {
- $ignoredDirectories{'websocket'} = 1;
-}
-
-if (!$testMedia) {
- $ignoredDirectories{'media'} = 1;
- $ignoredDirectories{'http/tests/media'} = 1;
-}
-
-my $supportedFeaturesResult = "";
-
-if (isCygwin()) {
- # Collect supported features list
- my $supportedFeaturesCommand = "\"$dumpTool\" --print-supported-features 2>&1";
- $supportedFeaturesResult = `$supportedFeaturesCommand 2>&1`;
-}
-
-my $hasAcceleratedCompositing = 0;
-my $has3DRendering = 0;
-
-if (isCygwin()) {
- $hasAcceleratedCompositing = $supportedFeaturesResult =~ /AcceleratedCompositing/;
- $has3DRendering = $supportedFeaturesResult =~ /3DRendering/;
-} else {
- $hasAcceleratedCompositing = checkWebCoreFeatureSupport("Accelerated Compositing", 0);
- $has3DRendering = checkWebCoreFeatureSupport("3D Rendering", 0);
-}
-
-if (!$hasAcceleratedCompositing) {
- $ignoredDirectories{'compositing'} = 1;
-
- # This test has slightly different floating-point rounding when accelerated
- # compositing is enabled.
- $ignoredFiles{'svg/custom/use-on-symbol-inside-pattern.svg'} = 1;
-
- # This test has an iframe that is put in a layer only in compositing mode.
- $ignoredFiles{'media/media-document-audio-repaint.html'} = 1;
-
- if (isAppleWebKit()) {
- # In Apple's ports, the default controls for <video> contain a "full
- # screen" button only if accelerated compositing is enabled.
- $ignoredFiles{'media/controls-after-reload.html'} = 1;
- $ignoredFiles{'media/controls-drag-timebar.html'} = 1;
- $ignoredFiles{'media/controls-strict.html'} = 1;
- $ignoredFiles{'media/controls-styling.html'} = 1;
- $ignoredFiles{'media/controls-without-preload.html'} = 1;
- $ignoredFiles{'media/video-controls-rendering.html'} = 1;
- $ignoredFiles{'media/video-display-toggle.html'} = 1;
- $ignoredFiles{'media/video-no-audio.html'} = 1;
- }
-
- # Here we're using !$hasAcceleratedCompositing as a proxy for "is a headless XP machine" (like
- # our test slaves). Headless XP machines can neither support accelerated compositing nor pass
- # this test, so skipping the test here is expedient, if a little sloppy. See
- # <http://webkit.org/b/48333>.
- $ignoredFiles{'platform/win/plugins/npn-invalidate-rect-invalidates-window.html'} = 1 if isAppleWinWebKit();
-}
-
-if (!$has3DRendering) {
- $ignoredDirectories{'animations/3d'} = 1;
- $ignoredDirectories{'transforms/3d'} = 1;
-
- # These tests use the -webkit-transform-3d media query.
- $ignoredFiles{'fast/media/mq-transform-02.html'} = 1;
- $ignoredFiles{'fast/media/mq-transform-03.html'} = 1;
-}
-
-if (!checkWebCoreFeatureSupport("3D Canvas", 0)) {
- $ignoredDirectories{'fast/canvas/webgl'} = 1;
- $ignoredDirectories{'compositing/webgl'} = 1;
- $ignoredDirectories{'http/tests/canvas/webgl'} = 1;
-}
-
-if (isAppleMacWebKit() && $platform ne "mac-wk2" && osXVersion()->{minor} >= 6 && architecture() =~ /x86_64/) {
- # This test relies on executing JavaScript during NPP_Destroy, which isn't supported with
- # out-of-process plugins in WebKit1. See <http://webkit.org/b/58077>.
- $ignoredFiles{'plugins/npp-set-window-called-during-destruction.html'} = 1;
-}
-
-processIgnoreTests(join(',', @ignoreTests), "ignore-tests") if @ignoreTests;
-if (!$ignoreSkipped) {
- if (!$skippedOnly || @ARGV == 0) {
- readSkippedFiles("");
- } else {
- # Since readSkippedFiles() appends to @ARGV, we must use a foreach
- # loop so that we only iterate over the original argument list.
- foreach my $argnum (0 .. $#ARGV) {
- readSkippedFiles(shift @ARGV);
- }
- }
-}
-
-my @tests = findTestsToRun();
-
-die "no tests to run\n" if !@tests;
-
-my %counts;
-my %tests;
-my %imagesPresent;
-my %imageDifferences;
-my %durations;
-my $count = 0;
-my $leaksOutputFileNumber = 1;
-my $totalLeaks = 0;
-my $stoppedRunningEarlyMessage;
-
-my @toolArgs = ();
-push @toolArgs, "--pixel-tests" if $pixelTests;
-push @toolArgs, "--threaded" if $threaded;
-push @toolArgs, "--complex-text" if $complexText;
-push @toolArgs, "--gc-between-tests" if $gcBetweenTests;
-push @toolArgs, "-";
-
-my @diffToolArgs = ();
-push @diffToolArgs, "--tolerance", $tolerance;
-
-$| = 1;
-
-my $dumpToolPID;
-my $isDumpToolOpen = 0;
-my $dumpToolCrashed = 0;
-my $imageDiffToolPID;
-my $isDiffToolOpen = 0;
-
-my $atLineStart = 1;
-my $lastDirectory = "";
-
-my $isHttpdOpen = 0;
-my $isWebSocketServerOpen = 0;
-my $webSocketServerPidFile = 0;
-my $failedToStartWebSocketServer = 0;
-# wss is disabled until all platforms support pyOpenSSL.
-# my $webSocketSecureServerPID = 0;
-
-sub catch_pipe { $dumpToolCrashed = 1; }
-$SIG{"PIPE"} = "catch_pipe";
-
-print "Testing ", scalar @tests, " test cases";
-print " $iterations times" if ($iterations > 1);
-print ", repeating each test $repeatEach times" if ($repeatEach > 1);
-print ".\n";
-
-my $overallStartTime = time;
-
-my %expectedResultPaths;
-
-my @originalTests = @tests;
-# Add individual test repetitions
-if ($repeatEach > 1) {
- @tests = ();
- foreach my $test (@originalTests) {
- for (my $i = 0; $i < $repeatEach; $i++) {
- push(@tests, $test);
- }
- }
-}
-# Add test set repetitions
-for (my $i = 1; $i < $iterations; $i++) {
- push(@tests, @originalTests);
-}
-
-my $absTestResultsDirectory = resolveAndMakeTestResultsDirectory();
-open my $tests_run_fh, '>', "$absTestResultsDirectory/tests_run.txt" or die $!;
-
-for my $test (@tests) {
- 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;
-
- print $tests_run_fh "$test\n";
-
- # Try to read expected hash file for pixel tests
- my $suffixPixelTest = "";
- if ($pixelTests) {
- # ' is the separator between arguments.
- $suffixPixelTest = "'--pixel-test";
- if (!$resetResults) {
- my $expectedPixelDir = expectedDirectoryForTest($base, 0, "png");
- if (my $expectedHash = readChecksumFromPng(File::Spec->catfile($expectedPixelDir, "$base-$expectedTag.png"))) {
- # Format expected hash into a suffix string that is appended to the path / URL passed to DRT.
- $suffixPixelTest = "'--pixel-test'$expectedHash";
- }
- }
- }
-
- if ($test =~ /^http\//) {
- configureAndOpenHTTPDIfNeeded();
- if ($test =~ /^http\/tests\/websocket\//) {
- if ($test =~ /^websocket\/tests\/local\//) {
- my $testPath = "$testDirectory/$test";
- if (isCygwin()) {
- $testPath = toWindowsPath($testPath);
- } else {
- $testPath = canonpath($testPath);
- }
- print OUT "$testPath\n";
- } else {
- if (openWebSocketServerIfNeeded()) {
- my $path = canonpath($test);
- if ($test =~ /^http\/tests\/websocket\/tests\/ssl\//) {
- # wss is disabled until all platforms support pyOpenSSL.
- print STDERR "Error: wss is disabled until all platforms support pyOpenSSL.";
- } else {
- $path =~ s/^http\/tests\///;
- print OUT "http://127.0.0.1:$httpdPort/$path\n";
- }
- } else {
- # We failed to launch the WebSocket server. Display a useful error message rather than attempting
- # to run tests that expect the server to be available.
- my $errorMessagePath = "$testDirectory/http/tests/websocket/resources/server-failed-to-start.html";
- $errorMessagePath = isCygwin() ? toWindowsPath($errorMessagePath) : canonpath($errorMessagePath);
- print OUT "$errorMessagePath\n";
- }
- }
- } elsif ($test !~ /^http\/tests\/local\// && $test !~ /^http\/tests\/ssl\//) {
- my $path = canonpath($test);
- $path =~ s/^http\/tests\///;
- print OUT "http://127.0.0.1:$httpdPort/$path$suffixPixelTest\n";
- } elsif ($test =~ /^http\/tests\/ssl\//) {
- my $path = canonpath($test);
- $path =~ s/^http\/tests\///;
- print OUT "https://127.0.0.1:$httpdSSLPort/$path$suffixPixelTest\n";
- } else {
- my $testPath = "$testDirectory/$test";
- if (isCygwin()) {
- $testPath = toWindowsPath($testPath);
- } else {
- $testPath = canonpath($testPath);
- }
- print OUT "$testPath$suffixPixelTest\n";
- }
- } else {
- my $testPath = "$testDirectory/$test";
- if (isCygwin()) {
- $testPath = toWindowsPath($testPath);
- } else {
- $testPath = canonpath($testPath);
- }
- print OUT "$testPath$suffixPixelTest\n" if defined $testPath;
- }
-
- # 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 $readResults = readFromDumpToolWithTimer(IN, ERROR);
-
- my $actual = $readResults->{output};
- my $error = $readResults->{error};
-
- $expectedExtension = $readResults->{extension};
- my $expectedFileName = "$base-$expectedTag.$expectedExtension";
-
- my $isText = isTextOnlyTest($actual);
-
- my $expectedDir = expectedDirectoryForTest($base, $isText, $expectedExtension);
- $expectedResultPaths{$base} = File::Spec->catfile($expectedDir, $expectedFileName);
-
- unless ($readResults->{status} eq "success") {
- my $crashed = $readResults->{status} eq "crashed";
- my $webProcessCrashed = $readResults->{status} eq "webProcessCrashed";
- testCrashedOrTimedOut($test, $base, $crashed, $webProcessCrashed, $actual, $error);
- countFinishedTest($test, $base, $webProcessCrashed ? "webProcessCrash" : $crashed ? "crash" : "timedout", 0);
- last if stopRunningTestsEarlyIfNeeded();
- next;
- }
-
- $durations{$test} = time - $startTime if $report10Slowest;
-
- my $expected;
-
- if (!$resetResults && open EXPECTED, "<", $expectedResultPaths{$base}) {
- $expected = "";
- while (<EXPECTED>) {
- next if $stripEditingCallbacks && $_ =~ /^EDITING DELEGATE:/;
- $expected .= $_;
- }
- close EXPECTED;
- }
-
- if ($ignoreMetrics && !$isText && defined $expected) {
- ($actual, $expected) = stripMetrics($actual, $expected);
- }
-
- if ($shouldCheckLeaks && $testsPerDumpTool == 1) {
- print " $test -> ";
- }
-
- my $actualPNG = "";
- my $diffPNG = "";
- my $diffPercentage = 0;
- 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");
- my $expectedPNGPath = File::Spec->catfile($expectedPixelDir, "$base-$expectedTag.png");
-
- if (!$resetResults && ($expectedHash ne $actualHash || ($actualHash eq "" && $expectedHash eq ""))) {
- if (-f $expectedPNGPath) {
- my $expectedPNGSize = -s $expectedPNGPath;
- my $expectedPNG = "";
- open EXPECTEDPNG, $expectedPNGPath;
- read(EXPECTEDPNG, $expectedPNG, $expectedPNGSize);
-
- openDiffTool();
- 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 + 0;
- $imageDifferences{$base} = $diffPercentage;
- $diffResult = $2;
- }
-
- if (!$diffPercentage) {
- printFailureMessageForTest($test, "pixel hash failed (but pixel test still passes)");
- }
- } elsif ($verbose) {
- printFailureMessageForTest($test, "WARNING: expected image is missing!");
- }
- }
-
- if ($resetResults || !-f $expectedPNGPath) {
- if (!$addPlatformExceptions) {
- mkpath catfile($expectedPixelDir, dirname($base)) if $testDirectory ne $expectedPixelDir;
- writeToFile($expectedPNGPath, $actualPNG);
- } else {
- mkpath catfile($platformTestDirectory, dirname($base));
- writeToFile("$platformTestDirectory/$base-$expectedTag.png", $actualPNG);
- }
- }
- }
-
- if (dumpToolDidCrash()) {
- $result = "crash";
- testCrashedOrTimedOut($test, $base, 1, 0, $actual, $error);
- } elsif (!defined $expected) {
- if ($verbose) {
- print "new " . ($resetResults ? "result" : "test");
- }
- $result = "new";
-
- if ($generateNewResults || $resetResults) {
- if (!$addPlatformExceptions) {
- mkpath catfile($expectedDir, dirname($base)) if $testDirectory ne $expectedDir;
- writeToFile("$expectedDir/$expectedFileName", $actual);
- } else {
- mkpath catfile($platformTestDirectory, dirname($base));
- writeToFile("$platformTestDirectory/$expectedFileName", $actual);
- }
- }
- deleteExpectedAndActualResults($base);
- recordActualResultsAndDiff($base, $actual);
- if (!$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));
- if (!$verbose) {
- print "new";
- }
- if ($generateNewResults) {
- print " (results generated in $resultsDir)";
- }
- print "\n" unless $atLineStart;
- $atLineStart = 1;
- }
- } elsif ($actual eq $expected && $diffResult eq "passed") {
- if ($verbose) {
- print "succeeded\n";
- $atLineStart = 1;
- }
- $result = "match";
- deleteExpectedAndActualResults($base);
- } else {
- $result = "mismatch";
-
- my $pixelTestFailed = $pixelTests && $diffPNG && $diffPNG ne "";
- my $testFailed = $actual ne $expected;
-
- my $message = !$testFailed ? "pixel test failed" : "failed";
-
- if (($testFailed || $pixelTestFailed) && $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));
- if ($testFailed) {
- my $expectedFile = catfile($platformTestDirectory, "$expectedFileName");
- writeToFile("$expectedFile", $actual);
- }
- if ($pixelTestFailed) {
- my $expectedFile = catfile($platformTestDirectory, "$base-$expectedTag.png");
- writeToFile("$expectedFile", $actualPNG);
- }
- $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 ($pixelTestFailed) {
- $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 = dirname(File::Spec->catdir($testResultsDirectory, $base));
- mkpath $dir;
-
- writeToFile(File::Spec->catfile($testResultsDirectory, "$base-$errorTag.txt"), $error);
-
- $counts{error}++;
- push @{$tests{error}}, $test;
- }
-
- countFinishedTest($test, $base, $result, $isText);
- last if stopRunningTestsEarlyIfNeeded();
-}
-
-close($tests_run_fh);
-
-my $totalTestingTime = time - $overallStartTime;
-my $waitTime = getWaitTime();
-if ($waitTime > 0.1) {
- my $normalizedTestingTime = $totalTestingTime - $waitTime;
- printf "\n%0.2fs HTTPD waiting time\n", $waitTime . "";
- printf "%0.2fs normalized testing time", $normalizedTestingTime . "";
-}
-printf "\n%0.2fs total testing time\n", $totalTestingTime . "";
-
-!$isDumpToolOpen || die "Failed to close $dumpToolName.\n";
-
-$isHttpdOpen = !closeHTTPD();
-closeWebSocketServer();
-
-# 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 ($isDiffToolOpen && $shouldCheckLeaks) {
- $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;
-}
-
-printResults();
-
-mkpath $testResultsDirectory;
-
-open HTML, ">", $testResults or die "Failed to open $testResults. $!";
-print HTML <<EOF;
-<html>
-<head>
-<title>Layout Test Results</title>
-<style>
-.stopped-running-early-message {
- border: 3px solid #d00;
- font-weight: bold;
-}
-</style>
-</head>
-</body>
-EOF
-
-if ($ignoreMetrics) {
- print HTML "<h4>Tested with metrics ignored.</h4>";
-}
-
-if ($stoppedRunningEarlyMessage) {
- print HTML "<p class='stopped-running-early-message'>$stoppedRunningEarlyMessage</p>";
-}
-
-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{webProcessCrash}}, "Tests that caused the Web process 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 "<p>httpd access log: <a href=\"access_log.txt\">access_log.txt</a></p>\n";
-print HTML "<p>httpd error log: <a href=\"error_log.txt\">error_log.txt</a></p>\n";
-
-print HTML "</body>\n";
-print HTML "</html>\n";
-close HTML;
-
-my @configurationArgs = argumentsForConfiguration();
-
-if (isGtk()) {
- push(@configurationArgs, '-2') if $useWebKitTestRunner;
- system "Tools/Scripts/run-launcher", @configurationArgs, "file://".$testResults if $launchSafari;
-} elsif (isQt()) {
- if (getQtVersion() lt "5.0") {
- unshift @configurationArgs, qw(-style windows);
- unshift @configurationArgs, qw(-graphicssystem raster);
- }
- if (isCygwin()) {
- $testResults = "/" . toWindowsPath($testResults);
- $testResults =~ s/\\/\//g;
- }
- push(@configurationArgs, '-2') if $useWebKitTestRunner;
- system "Tools/Scripts/run-launcher", @configurationArgs, "file://".$testResults if $launchSafari;
-} elsif (isCygwin()) {
- system "cygstart", $testResults if $launchSafari;
-} elsif (isWindows()) {
- system "start", $testResults if $launchSafari;
-} else {
- system "Tools/Scripts/run-safari", @configurationArgs, "-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
- "ScanFromString", # <http://code.google.com/p/angleproject/issues/detail?id=249> leak in ANGLE
- );
-
- if (isSnowLeopard()) {
- push @callStacksToExclude, (
- "readMakerNoteProps", # <rdar://problem/7156432> leak in ImageIO
- "QTKitMovieControllerView completeUISetup", # <rdar://problem/7155156> leak in QTKit
- "getVMInitArgs", # <rdar://problem/7714444> leak in Java
- "Java_java_lang_System_initProperties", # <rdar://problem/7714465> leak in Java
- "glrCompExecuteKernel", # <rdar://problem/7815391> leak in graphics driver while using OpenGL
- "NSNumberFormatter getObjectValue:forString:errorDescription:", # <rdar://problem/7149350> Leak in NSNumberFormatter
- );
- }
-
- if (isLion()) {
- push @callStacksToExclude, (
- "FigByteFlumeCustomURLCreateWithURL", # <rdar://problem/10461926> leak in CoreMedia
- "PDFPage\\(PDFPageInternal\\) pageLayoutIfAvail", # <rdar://problem/10462055> leak in PDFKit
- "SecTransformExecute", # <rdar://problem/10470667> leak in Security.framework
- "_NSCopyStyleRefForFocusRingStyleClip", # <rdar://problem/10462031> leak in AppKit
- );
- }
-
- my $leaksTool = sourceDir() . "/Tools/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 launchWithEnv(\@\%)
-{
- my ($args, $env) = @_;
-
- # Dump the current environment as perl code and then put it in quotes so it is one parameter.
- my $environmentDumper = Data::Dumper->new([\%{$env}], [qw(*ENV)]);
- $environmentDumper->Indent(0);
- $environmentDumper->Purity(1);
- my $allEnvVars = $environmentDumper->Dump();
- unshift @{$args}, "\"$allEnvVars\"";
-
- my $execScript = File::Spec->catfile(sourceDir(), qw(Tools Scripts execAppWithEnv));
- unshift @{$args}, $perlInterpreter, $execScript;
- return @{$args};
-}
-
-sub resolveAndMakeTestResultsDirectory()
-{
- my $absTestResultsDirectory = File::Spec->rel2abs(glob $testResultsDirectory);
- mkpath $absTestResultsDirectory;
- return $absTestResultsDirectory;
-}
-
-sub openDiffTool()
-{
- return if $isDiffToolOpen;
- return if !$pixelTests;
-
- my %CLEAN_ENV;
- $CLEAN_ENV{MallocStackLogging} = 1 if $shouldCheckLeaks;
- $imageDiffToolPID = open2(\*DIFFIN, \*DIFFOUT, $imageDiffTool, launchWithEnv(@diffToolArgs, %CLEAN_ENV)) or die "unable to open $imageDiffTool\n";
- $isDiffToolOpen = 1;
-}
-
-sub buildDumpTool($)
-{
- my ($dumpToolName) = @_;
-
- my $dumpToolBuildScript = "build-" . lc($dumpToolName);
- print STDERR "Running $dumpToolBuildScript\n";
-
- local *DEVNULL;
- my ($childIn, $childOut, $childErr);
- if ($quiet) {
- open(DEVNULL, ">", File::Spec->devnull()) or die "Failed to open /dev/null";
- $childOut = ">&DEVNULL";
- $childErr = ">&DEVNULL";
- } else {
- # When not quiet, let the child use our stdout/stderr.
- $childOut = ">&STDOUT";
- $childErr = ">&STDERR";
- }
-
- my @args = argumentsForConfiguration();
- my $buildProcess = open3($childIn, $childOut, $childErr, $perlInterpreter, File::Spec->catfile(qw(Tools Scripts), $dumpToolBuildScript), @args) or die "Failed to run build-dumprendertree";
- close($childIn);
- waitpid $buildProcess, 0;
- my $buildResult = $?;
- close($childOut);
- close($childErr);
-
- close DEVNULL if ($quiet);
-
- if ($buildResult) {
- print STDERR "Compiling $dumpToolName failed!\n";
- exit exitStatus($buildResult);
- }
-}
-
-sub openDumpTool()
-{
- return if $isDumpToolOpen;
-
- if ($verbose && $testsPerDumpTool != 1) {
- print "| Opening DumpTool |\n";
- }
-
- my %CLEAN_ENV;
-
- # Generic environment variables
- if (defined $ENV{'WEBKIT_TESTFONTS'}) {
- $CLEAN_ENV{WEBKIT_TESTFONTS} = $ENV{'WEBKIT_TESTFONTS'};
- }
-
- # unique temporary directory for each DumpRendertree - needed for running more DumpRenderTree in parallel
- $CLEAN_ENV{DUMPRENDERTREE_TEMP} = File::Temp::tempdir('DumpRenderTree-XXXXXX', TMPDIR => 1, CLEANUP => 1);
- $CLEAN_ENV{XML_CATALOG_FILES} = ""; # work around missing /etc/catalog <rdar://problem/4292995>
- $CLEAN_ENV{LOCAL_RESOURCE_ROOT} = $testDirectory; # Used by layoutTestConstroller.pathToLocalResource()
-
- # Platform spesifics
- if (isLinux()) {
- if (defined $ENV{'DISPLAY'}) {
- $CLEAN_ENV{DISPLAY} = $ENV{'DISPLAY'};
- } else {
- $CLEAN_ENV{DISPLAY} = ":1";
- }
- if (defined $ENV{'XAUTHORITY'}) {
- $CLEAN_ENV{XAUTHORITY} = $ENV{'XAUTHORITY'};
- }
-
- $CLEAN_ENV{HOME} = $ENV{'HOME'};
- $CLEAN_ENV{LANG} = $ENV{'LANG'};
-
- if (defined $ENV{'LD_LIBRARY_PATH'}) {
- $CLEAN_ENV{LD_LIBRARY_PATH} = $ENV{'LD_LIBRARY_PATH'};
- }
- if (defined $ENV{'DBUS_SESSION_BUS_ADDRESS'}) {
- $CLEAN_ENV{DBUS_SESSION_BUS_ADDRESS} = $ENV{'DBUS_SESSION_BUS_ADDRESS'};
- }
- } elsif (isDarwin()) {
- if (defined $ENV{'DYLD_LIBRARY_PATH'}) {
- $CLEAN_ENV{DYLD_LIBRARY_PATH} = $ENV{'DYLD_LIBRARY_PATH'};
- }
- if (defined $ENV{'HOME'}) {
- $CLEAN_ENV{HOME} = $ENV{'HOME'};
- }
-
- $CLEAN_ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- $CLEAN_ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc;
- } elsif (isCygwin()) {
- $CLEAN_ENV{HOMEDRIVE} = $ENV{'HOMEDRIVE'};
- $CLEAN_ENV{HOMEPATH} = $ENV{'HOMEPATH'};
- $CLEAN_ENV{_NT_SYMBOL_PATH} = $ENV{_NT_SYMBOL_PATH};
- }
-
- # Port specifics
- if (isGtk()) {
- $CLEAN_ENV{LIBOVERLAY_SCROLLBAR} = "0";
- $CLEAN_ENV{GTK_MODULES} = "gail";
- $CLEAN_ENV{WEBKIT_INSPECTOR_PATH} = "$productDir/resources/inspector";
-
- if ($useWebKitTestRunner) {
- my $injectedBundlePath = productDir() . "/Libraries/.libs/libTestRunnerInjectedBundle";
- $CLEAN_ENV{TEST_RUNNER_INJECTED_BUNDLE_FILENAME} = $injectedBundlePath;
- my $testPluginPath = productDir() . "/TestNetscapePlugin/.libs";
- $CLEAN_ENV{TEST_RUNNER_TEST_PLUGIN_PATH} = $testPluginPath;
- }
- }
-
- if (isQt()) {
- $CLEAN_ENV{QTWEBKIT_PLUGIN_PATH} = productDir() . "/lib/plugins";
- $CLEAN_ENV{QT_DRT_WEBVIEW_MODE} = $ENV{"QT_DRT_WEBVIEW_MODE"};
- }
-
- my @args = ($dumpTool, @toolArgs);
- if (isAppleMacWebKit()) {
- unshift @args, "arch", "-" . architecture();
- }
-
- if ($useValgrind) {
- unshift @args, "valgrind", "--suppressions=$platformBaseDirectory/qt/SuppressedValgrindErrors";
- }
-
- if ($useWebKitTestRunner) {
- # Make WebKitTestRunner use a similar timeout. We don't use the exact same timeout to avoid
- # race conditions.
- push @args, "--timeout", $timeoutSeconds - 5;
- }
-
- $CLEAN_ENV{MallocStackLogging} = 1 if $shouldCheckLeaks;
-
- $dumpToolPID = open3(\*OUT, \*IN, \*ERROR, launchWithEnv(@args, %CLEAN_ENV)) or die "Failed to start tool: $dumpTool\n";
- $isDumpToolOpen = 1;
- $dumpToolCrashed = 0;
-}
-
-sub closeDumpTool()
-{
- return if !$isDumpToolOpen;
-
- if ($verbose && $testsPerDumpTool != 1) {
- print "| Closing DumpTool |\n";
- }
-
- 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 isAppleMacWebKit();
-
- return DumpRenderTreeSupport::processIsCrashing($dumpToolPID);
-}
-
-sub configureAndOpenHTTPDIfNeeded()
-{
- return if $isHttpdOpen;
- my $absTestResultsDirectory = resolveAndMakeTestResultsDirectory();
- my @args = (
- "-c", "CustomLog \"$absTestResultsDirectory/access_log.txt\" common",
- "-c", "ErrorLog \"$absTestResultsDirectory/error_log.txt\"",
- );
- foreach ($httpdPort, $httpdAuxiliaryPort, $httpdSSLPort) {
- # We listen to both IPv4 and IPv6 loop-back addresses, but
- # ignore requests to 8000 from random users on network.
- # See <https://bugs.webkit.org/show_bug.cgi?id=37104>.
- push @args, ("-C", "Listen 127.0.0.1:$_");
- push @args, ("-C", "Listen [::1]:$_");
- }
-
- my @defaultArgs = getDefaultConfigForTestDirectory($testDirectory);
- @args = (@defaultArgs, @args);
-
- waitForHTTPDLock() if $shouldWaitForHTTPD;
- $isHttpdOpen = openHTTPD(@args);
-}
-
-sub checkPythonVersion()
-{
- # we have not chdir to sourceDir yet.
- system $perlInterpreter, File::Spec->catfile(sourceDir(), qw(Tools Scripts ensure-valid-python)), "--check-only";
- return exitStatus($?) == 0;
-}
-
-sub openWebSocketServerIfNeeded()
-{
- return 1 if $isWebSocketServerOpen;
- return 0 if $failedToStartWebSocketServer;
-
- my $webSocketHandlerDir = "$testDirectory";
- my $absTestResultsDirectory = resolveAndMakeTestResultsDirectory();
- $webSocketServerPidFile = "$absTestResultsDirectory/websocket.pid";
-
- my @args = (
- "Tools/Scripts/new-run-webkit-websocketserver",
- "--server", "start",
- "--port", "$webSocketPort",
- "--root", "$webSocketHandlerDir",
- "--output-dir", "$absTestResultsDirectory",
- "--pidfile", "$webSocketServerPidFile"
- );
- system "/usr/bin/python", @args;
-
- $isWebSocketServerOpen = 1;
- return 1;
-}
-
-sub closeWebSocketServer()
-{
- return if !$isWebSocketServerOpen;
-
- my @args = (
- "Tools/Scripts/new-run-webkit-websocketserver",
- "--server", "stop",
- "--pidfile", "$webSocketServerPidFile"
- );
- system "/usr/bin/python", @args;
- unlink "$webSocketServerPidFile";
-
- # wss is disabled until all platforms support pyOpenSSL.
- $isWebSocketServerOpen = 0;
-}
-
-sub fileNameWithNumber($$)
-{
- my ($base, $number) = @_;
- return "$base$number" if ($number > 1);
- return $base;
-}
-
-sub processIgnoreTests($$)
-{
- my @ignoreList = split(/\s*,\s*/, shift);
- my $listName = shift;
-
- my $disabledSuffix = "-disabled";
-
- 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;
- } elsif (-f $path . $disabledSuffix) {
- # The test is disabled, so do nothing.
- } else {
- print "$listName list contained '$item', but no file of that name could be found\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 = @platformResultHierarchy;
-
- my @extraPlatforms = ();
- if (isAppleWinWebKit()) {
- push @extraPlatforms, "mac-wk2" if $platform eq "win-wk2";
- push @extraPlatforms, qw(mac-lion mac);
- }
-
- push @directories, map { catdir($platformBaseDirectory, $_) } @extraPlatforms;
- push @directories, $expectedDirectory;
-
- # If we already have expected results, just return their location.
- foreach my $directory (@directories) {
- return $directory if -f File::Spec->catfile($directory, "$base-$expectedTag.$expectedExtension");
- }
-
- # 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 : $platformResultHierarchy[$#platformResultHierarchy];
-}
-
-sub countFinishedTest($$$$)
-{
- my ($test, $base, $result, $isText) = @_;
-
- if (($count + 1) % $testsPerDumpTool == 0 || $count == $#tests) {
- if ($shouldCheckLeaks) {
- my $fileName;
- if ($testsPerDumpTool == 1) {
- $fileName = File::Spec->catfile($testResultsDirectory, "$base-leaks.txt");
- } else {
- $fileName = File::Spec->catfile($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;
-}
-
-sub testCrashedOrTimedOut($$$$$$)
-{
- my ($test, $base, $didCrash, $webProcessCrashed, $actual, $error) = @_;
-
- printFailureMessageForTest($test, $webProcessCrashed ? "Web process crashed" : $didCrash ? "crashed" : "timed out");
-
- sampleDumpTool() unless $didCrash || $webProcessCrashed;
-
- my $dir = dirname(File::Spec->catdir($testResultsDirectory, $base));
- mkpath $dir;
-
- deleteExpectedAndActualResults($base);
-
- if (defined($error) && length($error)) {
- writeToFile(File::Spec->catfile($testResultsDirectory, "$base-$errorTag.txt"), $error);
- }
-
- recordActualResultsAndDiff($base, $actual);
-
- # There's no point in killing the dump tool when it's crashed. And it will kill itself when the
- # web process crashes.
- kill 9, $dumpToolPID unless $didCrash || $webProcessCrashed;
-
- closeDumpTool();
-
- captureSavedCrashLog($base, $webProcessCrashed) if $didCrash || $webProcessCrashed;
-
- return unless isCygwin() && !$didCrash && $base =~ /^http/;
- # On Cygwin, http tests timing out can be a symptom of a non-responsive httpd.
- # If we timed out running an http test, try restarting httpd.
- $isHttpdOpen = !closeHTTPD();
- configureAndOpenHTTPDIfNeeded();
-}
-
-sub captureSavedCrashLog($$)
-{
- my ($base, $webProcessCrashed) = @_;
-
- my $crashLog;
-
- my $glob;
- if (isCygwin()) {
- $glob = File::Spec->catfile($testResultsDirectory, $windowsCrashLogFilePrefix . "*.txt");
- } elsif (isAppleMacWebKit()) {
- $glob = File::Spec->catfile("~", "Library", "Logs", "DiagnosticReports", ($webProcessCrashed ? "WebProcess" : $dumpToolName) . "_*.crash");
-
- # Even though the dump tool has exited, CrashReporter might still be running. We need to
- # wait for it to exit to ensure it has saved its crash log to disk. For simplicitly, we'll
- # assume that the ReportCrash process with the highest PID is the one we want.
- if (my @reportCrashPIDs = sort map { /^\s*(\d+)/; $1 } grep { /ReportCrash/ } `/bin/ps x`) {
- my $reportCrashPID = $reportCrashPIDs[$#reportCrashPIDs];
- # We use kill instead of waitpid because ReportCrash is not one of our child processes.
- usleep(250000) while kill(0, $reportCrashPID) > 0;
- }
- }
-
- return unless $glob;
-
- # We assume that the newest crash log in matching the glob is the one that corresponds to the crash that just occurred.
- if (my $newestCrashLog = findNewestFileMatchingGlob($glob)) {
- # The crash log must have been created after this script started running.
- $crashLog = $newestCrashLog if -M $newestCrashLog < 0;
- }
-
- return unless $crashLog;
-
- move($crashLog, File::Spec->catfile($testResultsDirectory, "$base-$crashLogTag.txt"));
-}
-
-sub findNewestFileMatchingGlob($)
-{
- my ($glob) = @_;
-
- my @paths = glob $glob;
- return unless scalar(@paths);
-
- my @pathsAndTimes = map { [$_, -M $_] } @paths;
- @pathsAndTimes = sort { $b->[1] <=> $a->[1] } @pathsAndTimes;
- return $pathsAndTimes[$#pathsAndTimes]->[0];
-}
-
-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) = @_;
-
- # cygpath -f (at least in Cygwin 1.7) converts spaces into newlines. We remove spaces here and
- # add them back in after conversion to work around this.
- my $spaceSubstitute = "__NOTASPACE__";
- $path =~ s/ /\Q$spaceSubstitute\E/g;
-
- my $cygpath = openCygpathIfNeeded($options);
- local *inFH = $cygpath->{"in"};
- local *outFH = $cygpath->{"out"};
- print outFH $path . "\n";
- my $convertedPath = <inFH>;
- chomp($convertedPath) if defined $convertedPath;
-
- $convertedPath =~ s/\Q$spaceSubstitute\E/ /g;
- return $convertedPath;
-}
-
-sub toCygwinPath($)
-{
- my ($path) = @_;
- return unless isCygwin();
-
- return convertPathUsingCygpath($path, "-u");
-}
-
-sub toWindowsPath($)
-{
- my ($path) = @_;
- return unless isCygwin();
-
- return convertPathUsingCygpath($path, "-w");
-}
-
-sub toURL($)
-{
- my ($path) = @_;
-
- if ($useRemoteLinksToTests) {
- my $relativePath = File::Spec->abs2rel($path, $testDirectory);
-
- # If the file is below the test directory then convert it into a link to the file in SVN
- if ($relativePath !~ /^\.\.\//) {
- my $revision = svnRevisionForDirectory($testDirectory);
- my $svnPath = pathRelativeToSVNRepositoryRootForPath($path);
- return "http://trac.webkit.org/export/$revision/$svnPath";
- }
- }
-
- 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>";
- push @html, "<a href=\"$link->{href}\">$link->{text}</a>" if -f File::Spec->catfile($testResultsDirectory, $link->{href});
- push @html, "</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 => "diff" };
- push @links, { href => "$base-$prettyDiffTag.html", text => "pretty diff" };
-
- 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 crashLocation($)
-{
- my ($base) = @_;
-
- my $crashLogFile = File::Spec->catfile($testResultsDirectory, "$base-$crashLogTag.txt");
-
- if (isCygwin()) {
- # We're looking for the following text:
- #
- # FOLLOWUP_IP:
- # module!function+offset [file:line]
- #
- # The second contains the function that crashed (or the function that ended up jumping to a bad
- # address, as in the case of a null function pointer).
-
- open LOG, "<", $crashLogFile or return;
- while (my $line = <LOG>) {
- last if $line =~ /^FOLLOWUP_IP:/;
- }
- my $desiredLine = <LOG>;
- close LOG;
-
- return unless $desiredLine;
-
- # Just take everything up to the first space (which is where the file/line information should
- # start).
- $desiredLine =~ /^(\S+)/;
- return $1;
- }
-
- if (isAppleMacWebKit()) {
- # We're looking for the following text:
- #
- # Thread M Crashed:
- # N module address function + offset (file:line)
- #
- # Some lines might have a module of "???" if we've jumped to a bad address. We should skip
- # past those.
-
- open LOG, "<", $crashLogFile or return;
- while (my $line = <LOG>) {
- last if $line =~ /^Thread \d+ Crashed:/;
- }
- my $location;
- while (my $line = <LOG>) {
- $line =~ /^\d+\s+(\S+)\s+\S+ (.* \+ \d+)/ or next;
- my $module = $1;
- my $functionAndOffset = $2;
- next if $module eq "???";
- $location = "$module: $functionAndOffset";
- last;
- }
- close LOG;
- return $location;
- }
-}
-
-sub linksForErrorTest
-{
- my ($test) = @_;
-
- my @links = ();
-
- my $base = stripExtension($test);
-
- my $crashLogText = "crash log";
- if (my $crashLocation = crashLocation($base)) {
- $crashLogText .= " (<code>" . CGI::escapeHTML($crashLocation) . "</code>)";
- }
-
- push @links, @{linksForExpectedAndActualResults($base)};
- push @links, { href => "$base-$errorTag.txt", text => "stderr" };
- push @links, { href => "$base-$crashLogTag.txt", text => $crashLogText };
-
- return \@links;
-}
-
-sub linksForNewTest
-{
- my ($test) = @_;
-
- my @links = ();
-
- my $base = stripExtension($test);
-
- my $expectedResultPath = $expectedResultPaths{$base};
- my ($expectedResultFileName, $expectedResultsDirectory, $expectedResultExtension) = fileparse($expectedResultPath, qr{\.[^.]+$});
-
- push @links, { href => "$base-$actualTag$expectedResultExtension", text => "result" };
- if ($pixelTests && $imagesPresent{$base}) {
- push @links, { href => "$base-$expectedTag.png", text => "image" };
- }
-
- return \@links;
-}
-
-sub deleteExpectedAndActualResults($)
-{
- my ($base) = @_;
-
- unlink "$testResultsDirectory/$base-$actualTag.txt";
- unlink "$testResultsDirectory/$base-$diffsTag.txt";
- unlink "$testResultsDirectory/$base-$errorTag.txt";
- unlink "$testResultsDirectory/$base-$crashLogTag.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 = File::Spec->catfile($testResultsDirectory, "$base-$actualTag$expectedResultExtension");
- my $copiedExpectedResultsPath = File::Spec->catfile($testResultsDirectory, "$base-$expectedTag$expectedResultExtension");
-
- mkpath(dirname($actualResultsPath));
- writeToFile("$actualResultsPath", $actualResults);
-
- # We don't need diff and pretty diff for tests without expected file.
- if ( !-f $expectedResultPath) {
- return;
- }
-
- copy("$expectedResultPath", "$copiedExpectedResultsPath");
-
- my $diffOuputBasePath = File::Spec->catfile($testResultsDirectory, $base);
- my $diffOutputPath = "$diffOuputBasePath-$diffsTag.txt";
- system "diff -u \"$copiedExpectedResultsPath\" \"$actualResultsPath\" > \"$diffOutputPath\"";
-
- my $prettyDiffOutputPath = "$diffOuputBasePath-$prettyDiffTag.html";
- my $prettyPatchPath = "Websites/bugs.webkit.org/PrettyPatch/";
- my $prettifyPath = "$prettyPatchPath/prettify.rb";
- system "ruby -I \"$prettyPatchPath\" \"$prettifyPath\" \"$diffOutputPath\" > \"$prettyDiffOutputPath\"";
-}
-
-sub buildPlatformResultHierarchy()
-{
- mkpath($platformTestDirectory) if ($platform eq "undefined" && !-d "$platformTestDirectory");
-
- my @platforms;
-
- my $isMac = $platform =~ /^mac/;
- my $isWin = $platform =~ /^win/;
- if ($isMac || $isWin) {
- my $effectivePlatform = $platform;
- if ($platform eq "mac-wk2" || $platform eq "win-wk2") {
- push @platforms, $platform;
- $effectivePlatform = $realPlatform;
- }
-
- my @platformList = $isMac ? @macPlatforms : @winPlatforms;
- my $i;
- for ($i = 0; $i < @platformList; $i++) {
- last if $platformList[$i] eq $effectivePlatform;
- }
- for (; $i < @platformList; $i++) {
- push @platforms, $platformList[$i];
- }
-
- if ($platform eq "wincairo") {
- @platforms = $platform;
- }
- } elsif ($platform =~ /^qt/) {
- if ($platform eq "qt-5.0-wk2" || getQtVersion() eq "5.0" && $useWebKitTestRunner) {
- push @platforms, "qt-5.0-wk2";
- }
- elsif ($platform eq "qt-5.0-wk1" || getQtVersion() eq "5.0" && !$useWebKitTestRunner) {
- push @platforms, "qt-5.0-wk1"
- }
-
- if (isARM() || $platform eq "qt-arm") {
- push @platforms, "qt-arm";
- }
-
- if (isDarwin() || $platform eq "qt-mac") {
- push @platforms, "qt-mac";
- }
- elsif (isWindows() || isCygwin() || $platform eq "qt-win") {
- push @platforms, "qt-win";
- }
- elsif (isLinux() || $platform eq "qt-linux") {
- push @platforms, "qt-linux";
- }
-
- if (getQtVersion() eq "4.8" || $platform eq "qt-4.8") {
- push @platforms, "qt-4.8";
- }
- elsif (getQtVersion() eq "5.0" || $platform eq "qt-5.0") {
- push @platforms, "qt-5.0";
- }
-
- push @platforms, "qt";
- } elsif ($platform =~ /^gtk-/) {
- push @platforms, $platform;
- push @platforms, "gtk";
- } else {
- @platforms = $platform;
- }
-
- my @hierarchy;
- for (my $i = 0; $i < @platforms; $i++) {
- my $scoped = catdir($platformBaseDirectory, $platforms[$i]);
- push(@hierarchy, $scoped) if (-d $scoped);
- }
-
- unshift @hierarchy, grep { -d $_ } @additionalPlatformDirectories;
-
- return @hierarchy;
-}
-
-sub buildPlatformTestHierarchy(@)
-{
- my (@platformHierarchy) = @_;
-
- my @result;
- if ($platform =~ /^qt/) {
- for (my $i = 0; $i < @platformHierarchy; ++$i) {
- push @result, $platformHierarchy[$i];
- }
- } else {
- my $wk2Platform;
- for (my $i = 0; $i < @platformHierarchy; ++$i) {
- if ($platformHierarchy[$i] =~ /-wk2/) {
- $wk2Platform = splice @platformHierarchy, $i, 1;
- last;
- }
- }
-
- push @result, $platformHierarchy[0];
- push @result, $wk2Platform if defined $wk2Platform;
- push @result, $platformHierarchy[$#platformHierarchy] if @platformHierarchy >= 2;
- }
-
- if ($verbose) {
- my @searchPaths;
- foreach my $searchPath (@result) {
- my ($dir, $name) = splitpath($searchPath);
- push @searchPaths, $name;
- }
- my $searchPathHierarchy = join(' -> ', @searchPaths);
- print "Baseline search path: $searchPathHierarchy\n";
- }
-
- return @result;
-}
-
-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 (@platformResultHierarchy) {
- 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 @platformResultHierarchy) {
- push @result, catdir($_, $prologue) if (stat(catdir($_, $prologue)));
- }
- }
- return @result;
-}
-
-sub parseLeaksandPrintUniqueLeaks()
-{
- return unless @leaksFilenames;
-
- my $mergedFilenames = join " ", @leaksFilenames;
- my $parseMallocHistoryTool = sourceDir() . "/Tools/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";
- } elsif ($mimeType eq "audio/wav") {
- return "wav";
- }
- return "txt";
-}
-
-# Read up to the first #EOF (the content block of the test), or until detecting crashes or timeouts.
-sub readFromDumpToolWithTimer(**)
-{
- my ($fhIn, $fhError) = @_;
-
- setFileHandleNonBlocking($fhIn, 1);
- setFileHandleNonBlocking($fhError, 1);
-
- my $maximumSecondsWithoutOutput = $timeoutSeconds;
- my $microsecondsToWaitBeforeReadingAgain = 1000;
-
- my $timeOfLastSuccessfulRead = time;
-
- my @output = ();
- my @error = ();
- my $status = "success";
- my $mimeType = "text/plain";
- my $encoding = "";
- # 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;
- my $haveSeenContentTransferEncoding = 0;
- my $haveSeenEofIn = 0;
- my $haveSeenEofError = 0;
-
- while (1) {
- if (time - $timeOfLastSuccessfulRead > $maximumSecondsWithoutOutput) {
- $status = dumpToolDidCrash() ? "crashed" : "timedOut";
- last;
- }
-
- # Once we've seen the EOF, we must not read anymore.
- my $lineIn = readline($fhIn) unless $haveSeenEofIn;
- my $lineError = readline($fhError) unless $haveSeenEofError;
- if (!defined($lineIn) && !defined($lineError)) {
- last if ($haveSeenEofIn && $haveSeenEofError);
-
- if ($! != EAGAIN) {
- $status = "crashed";
- last;
- }
-
- # No data ready
- usleep($microsecondsToWaitBeforeReadingAgain);
- next;
- }
-
- $timeOfLastSuccessfulRead = time;
-
- if (defined($lineIn)) {
- if (!$haveSeenContentType && $lineIn =~ /^Content-Type: (\S+)$/) {
- $mimeType = $1;
- $haveSeenContentType = 1;
- } elsif (!$haveSeenContentTransferEncoding && $lineIn =~ /^Content-Transfer-Encoding: (\S+)$/) {
- $encoding = $1;
- $haveSeenContentTransferEncoding = 1;
- } elsif ($lineIn =~ /^DumpMalloc|^DumpJSHeap: (\S+)$/) {
- # Ignored. Only used in performance tests.
- } elsif ($lineIn =~ /(.*)#EOF$/) {
- if ($1 ne "") {
- push @output, $1;
- }
- $haveSeenEofIn = 1;
- } else {
- push @output, $lineIn;
- }
- }
- if (defined($lineError)) {
- if ($lineError =~ /#CRASHED - WebProcess/) {
- $status = "webProcessCrashed";
- last;
- }
- if ($lineError =~ /#CRASHED/) {
- $status = "crashed";
- last;
- }
- if ($lineError =~ /#EOF/) {
- $haveSeenEofError = 1;
- } else {
- push @error, $lineError;
- }
- }
- }
-
- setFileHandleNonBlocking($fhIn, 0);
- setFileHandleNonBlocking($fhError, 0);
- my $joined_output = join("", @output);
- if ($encoding eq "base64") {
- $joined_output = decode_base64($joined_output);
- }
- return {
- output => $joined_output,
- error => join("", @error),
- 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 isAppleMacWebKit();
- 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;
-}
-
-sub stripMetrics($$)
-{
- my ($actual, $expected) = @_;
-
- foreach my $result ($actual, $expected) {
- $result =~ s/at \(-?[0-9]+,-?[0-9]+\) *//g;
- $result =~ s/size -?[0-9]+x-?[0-9]+ *//g;
- $result =~ s/text run width -?[0-9]+: //g;
- $result =~ s/text run width -?[0-9]+ [a-zA-Z ]+: //g;
- $result =~ s/RenderButton {BUTTON} .*/RenderButton {BUTTON}/g;
- $result =~ s/RenderImage {INPUT} .*/RenderImage {INPUT}/g;
- $result =~ s/RenderBlock {INPUT} .*/RenderBlock {INPUT}/g;
- $result =~ s/RenderTextControl {INPUT} .*/RenderTextControl {INPUT}/g;
- $result =~ s/\([0-9]+px/px/g;
- $result =~ s/ *" *\n +" */ /g;
- $result =~ s/" +$/"/g;
- $result =~ s/- /-/g;
- $result =~ s/\n( *)"\s+/\n$1"/g;
- $result =~ s/\s+"\n/"\n/g;
- $result =~ s/scrollWidth [0-9]+/scrollWidth/g;
- $result =~ s/scrollHeight [0-9]+/scrollHeight/g;
- $result =~ s/scrollX [0-9]+/scrollX/g;
- $result =~ s/scrollY [0-9]+/scrollY/g;
- $result =~ s/scrolled to [0-9]+,[0-9]+/scrolled/g;
- }
-
- return ($actual, $expected);
-}
-
-sub fileShouldBeIgnored
-{
- my ($filePath) = @_;
- foreach my $ignoredDir (keys %ignoredDirectories) {
- if ($filePath =~ m/^$ignoredDir/) {
- return 1;
- }
- }
- return 0;
-}
-
-sub readSkippedFiles($)
-{
- my ($constraintPath) = @_;
-
- my @skippedFileDirectories = @platformTestHierarchy;
-
- # Because nearly all of the skipped tests for WebKit 2 on Mac are due to
- # cross-platform issues, the Windows and Qt ports use the Mac skipped list
- # additionally to their own to avoid maintaining separate lists.
- push(@skippedFileDirectories, catdir($platformBaseDirectory, "wk2")) if ($platform eq "win-wk2" || $platform eq "qt-5.0-wk2" || $platform eq "mac-wk2" || $platform eq "gtk-wk2");
-
- if ($verbose) {
- foreach my $skippedPath (@skippedFileDirectories) {
- print "Using Skipped file: $skippedPath\n";
- }
- }
-
- foreach my $level (@skippedFileDirectories) {
- # If a Skipped file exists in the directory, use that and ignore the TestExpectations file,
- # but if it doesn't, treat every entry in the TestExpectations file as if it should be Skipped.
- if (open SKIPPED, "<", "$level/Skipped") {
- if ($verbose) {
- 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 !~ /^#/) {
- processSkippedFileEntry($skipped, "Skipped", $constraintPath);
- }
- }
- close SKIPPED;
- } elsif (open EXPECTATIONS, "<", "$level/TestExpectations") {
- if ($verbose) {
- my ($dir, $name) = splitpath($level);
- print "Skipping tests from $name:\n";
- }
- LINE: while (<EXPECTATIONS>) {
- my $line = $_;
- chomp $line;
- $line =~ s/^[ \n\r]+//;
- $line =~ s/[ \n\r]+$//;
- $line =~ s/#.*$//;
-
- # This logic roughly mirrors the logic in test_expectations.py _tokenize_line() but we
- # don't bother to look at any of the modifiers or expectations and just skip everything.
-
- my $state = "start";
- my $skipped = "";
- TOKEN: foreach my $token (split(/\s+/, $line)) {
- if (startsWith($token, "BUG") || startsWith($token, "//")) {
- # Ignore any lines with the old-style syntax.
- next LINE;
- }
- if (startsWith($token, "webkit.org/b/") || startsWith($token, "Bug(")) {
- # Skip over bug identifiers; note that we don't bother looking for
- # Chromium or V8 URLs since ORWT doesn't work with Chromium.
- next TOKEN;
- } elsif ($token eq "[") {
- if ($state eq 'start') {
- $state = 'configuration';
- }
- } elsif ($token eq "]") {
- if ($state eq 'configuration') {
- $state = 'name';
- }
- } elsif (($state eq "name") || ($state eq "start")) {
- $skipped = $token;
- # Skip over the rest of the line.
- last TOKEN;
- }
- }
- if ($skipped) {
- processSkippedFileEntry($skipped, "TestExpectations", $constraintPath);
- }
- }
- close EXPECTATIONS;
- }
- }
-}
-
-sub processSkippedFileEntry($$$)
-{
- my ($skipped, $listname, $constraintPath) = @_;
-
- if ($skippedOnly) {
- if (!fileShouldBeIgnored($skipped)) {
- if (!$constraintPath) {
- # Always add $skipped since no constraint path was specified on the command line.
- push(@ARGV, $skipped);
- } elsif ($skipped =~ /^($constraintPath)/ || ("LayoutTests/".$skipped) =~ /^($constraintPath)/ ) {
- # Add $skipped only if it matches the current path constraint, e.g.,
- # "--skipped=only dir1" with "dir1/file1.html" on the skipped list or
- # "--skipped=only LayoutTests/dir1" with "dir1/file1.html" on the skipped list
- push(@ARGV, $skipped);
- } elsif ($constraintPath =~ /^("LayoutTests\/".$skipped)/ || $constraintPath =~ /^($skipped)/) {
- # Add current path constraint if it is more specific than the skip list entry,
- # e.g., "--skipped=only dir1/dir2/dir3" with "dir1" on the skipped list or
- # e.g., "--skipped=only LayoutTests/dir1/dir2/dir3" with "dir1" on the skipped list.
- push(@ARGV, $constraintPath);
- }
- } elsif ($verbose) {
- print " $skipped\n";
- }
- } else {
- if ($verbose) {
- print " $skipped\n";
- }
- processIgnoreTests($skipped, $listname);
- }
-}
-
-sub startsWith($$)
-{
- my ($string, $substring) = @_;
- return index($string, $substring) == 0;
-}
-
-sub readChecksumFromPng($)
-{
- my ($path) = @_;
- my $data;
- if (open(PNGFILE, $path) && read(PNGFILE, $data, 2048) && $data =~ /tEXtchecksum\0([a-fA-F0-9]{32})/) {
- return $1;
- }
-}
-
-my @testsFound;
-
-sub isUsedInReftest($)
-{
- my $filename = $_[0];
- my @extensions = ('html','shtml','xml','xhtml','htm','php','svg','mht','pl');
- my $extensionsJoined = join("|", @extensions);
- my $suffixExtensionExpression = "-($expectedTag|$refTag|$notrefTag)(-$mismatchTag)?\\.(".$extensionsJoined.")\$";
- my $prefixExtensionExpression = "^($refTag|$notrefTag)-";
- if ($filename =~ /$suffixExtensionExpression/ || $filename =~ /$prefixExtensionExpression/) {
- return 1;
- }
- my $base = stripExtension($filename);
-
- foreach my $extension (@extensions) {
- if (-f "$base-$expectedTag.$extension" ||
- -f "$base-$refTag.$extension" || -f "$base-$notrefTag.$extension" ||
- -f "$base-$expectedTag-$mismatchTag.$extension" ||
- -f "$refTag-$base.$extension" || -f "$notrefTag-$base.$extension") {
- return 1;
- }
- }
- return 0;
-}
-
-sub directoryFilter
-{
- return () if exists $ignoredLocalDirectories{basename($File::Find::dir)};
- return () if exists $ignoredDirectories{File::Spec->abs2rel($File::Find::dir, $testDirectory)};
- return @_;
-}
-
-sub fileFilter
-{
- my $filename = $_;
- if ($filename =~ /\.([^.]+)$/) {
- my $extension = $1;
- if (exists $supportedFileExtensions{$extension} && !isUsedInReftest($filename)) {
- my $path = File::Spec->abs2rel(catfile($File::Find::dir, $filename), $testDirectory);
- push @testsFound, $path if !exists $ignoredFiles{$path};
- }
- }
-}
-
-sub findTestsToRun
-{
- my @testsToRun = ();
-
- for my $test (@ARGV) {
- $test =~ s/^(\Q$layoutTestsName\E|\Q$testDirectory\E)\///;
- my $fullPath = catfile($testDirectory, $test);
- if (file_name_is_absolute($test)) {
- print "can't run test $test outside $testDirectory\n";
- } elsif (-f $fullPath && !isUsedInReftest($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 @testsToRun, $test;
- }
- } elsif (-d $fullPath) {
- @testsFound = ();
- find({ preprocess => \&directoryFilter, wanted => \&fileFilter }, $fullPath);
- for my $level (@platformTestHierarchy) {
- my $platformPath = catfile($level, $test);
- find({ preprocess => \&directoryFilter, wanted => \&fileFilter }, $platformPath) if (-d $platformPath);
- }
- push @testsToRun, sort pathcmp @testsFound;
- @testsFound = ();
- } else {
- print "test $test not found\n";
- }
- }
-
- if (!scalar @ARGV) {
- @testsFound = ();
- find({ preprocess => \&directoryFilter, wanted => \&fileFilter }, $testDirectory);
- for my $level (@platformTestHierarchy) {
- find({ preprocess => \&directoryFilter, wanted => \&fileFilter }, $level);
- }
- push @testsToRun, sort pathcmp @testsFound;
- @testsFound = ();
-
- # We need to minimize the time when Apache and WebSocketServer is locked by tests
- # so run them last if no explicit order was specified in the argument list.
- my @httpTests;
- my @websocketTests;
- my @otherTests;
- foreach my $test (@testsToRun) {
- if ($test =~ /^http\//) {
- push(@httpTests, $test);
- } elsif ($test =~ /^websocket\//) {
- push(@websocketTests, $test);
- } else {
- push(@otherTests, $test);
- }
- }
- @testsToRun = (@otherTests, @httpTests, @websocketTests);
- }
-
- # Reverse the tests
- @testsToRun = reverse @testsToRun if $reverseTests;
-
- # Shuffle the array
- @testsToRun = shuffle(@testsToRun) if $randomizeTests;
-
- return @testsToRun;
-}
-
-sub printResults
-{
- my %text = (
- match => "succeeded",
- mismatch => "had incorrect layout",
- new => "were new",
- timedout => "timed out",
- crash => "crashed",
- webProcessCrash => "Web process crashed",
- error => "had stderr output"
- );
-
- for my $type ("match", "mismatch", "new", "timedout", "crash", "webProcessCrash", "error") {
- my $typeCount = $counts{$type};
- next unless $typeCount;
- my $typeText = $text{$type};
- my $message;
- if ($typeCount == 1) {
- $typeText =~ s/were/was/;
- $message = sprintf "1 test case %s\n", $typeText;
- } else {
- $message = sprintf "%d test cases %s\n", $typeCount, $typeText;
- }
- $message =~ s-\(0%\)-(<1%)-;
- print $message;
- }
-}
-
-sub stopRunningTestsEarlyIfNeeded()
-{
- # --reset-results does not check pass vs. fail, so exitAfterNFailures makes no sense with --reset-results.
- return 0 if $resetResults;
-
- my $passCount = $counts{match} || 0; # $counts{match} will be undefined if we've not yet passed a test (e.g. the first test fails).
- my $newCount = $counts{new} || 0;
- my $failureCount = $count - $passCount - $newCount; # "Failure" here includes timeouts, crashes, etc.
- if ($exitAfterNFailures && $failureCount >= $exitAfterNFailures) {
- $stoppedRunningEarlyMessage = "Exiting early after $failureCount failures. $count tests run.";
- print "\n", $stoppedRunningEarlyMessage;
- closeDumpTool();
- return 1;
- }
-
- my $crashCount = $counts{crash} || 0;
- my $webProcessCrashCount = $counts{webProcessCrash} || 0;
- my $timeoutCount = $counts{timedout} || 0;
- if ($exitAfterNCrashesOrTimeouts && $crashCount + $webProcessCrashCount + $timeoutCount >= $exitAfterNCrashesOrTimeouts) {
- $stoppedRunningEarlyMessage = "Exiting early after $crashCount crashes, $webProcessCrashCount web process crashes, and $timeoutCount timeouts. $count tests run.";
- print "\n", $stoppedRunningEarlyMessage;
- closeDumpTool();
- return 1;
- }
-
- return 0;
-}
-
-# Store this at global scope so it won't be GCed (and thus unlinked) until the program exits.
-my $debuggerTempDirectory;
-
-sub createDebuggerCommandFile()
-{
- return unless isCygwin();
-
- my @commands = (
- '.logopen /t "' . toWindowsPath($testResultsDirectory) . "\\" . $windowsCrashLogFilePrefix . '.txt"',
- '.srcpath "' . toWindowsPath(sourceDir()) . '"',
- '!analyze -vv',
- '~*kpn',
- 'q',
- );
-
- $debuggerTempDirectory = File::Temp->newdir;
-
- my $commandFile = File::Spec->catfile($debuggerTempDirectory, "debugger-commands.txt");
- unless (open COMMANDS, '>', $commandFile) {
- print "Failed to open $commandFile. Crash logs will not be saved.\n";
- return;
- }
- print COMMANDS join("\n", @commands), "\n";
- unless (close COMMANDS) {
- print "Failed to write to $commandFile. Crash logs will not be saved.\n";
- return;
- }
-
- return $commandFile;
-}
-
-sub setUpWindowsCrashLogSaving()
-{
- return unless isCygwin();
-
- unless (defined $ENV{_NT_SYMBOL_PATH}) {
- print "The _NT_SYMBOL_PATH environment variable is not set. Crash logs will not be saved.\nSee <http://trac.webkit.org/wiki/BuildingOnWindows#GettingCrashLogs>.\n";
- return;
- }
-
- my @possiblePaths = (
- File::Spec->catfile(toCygwinPath($ENV{PROGRAMFILES}), "Windows Kits", "8.0", "Debuggers", "x64", "ntsd.exe"),
- File::Spec->catfile(toCygwinPath($ENV{PROGRAMFILES}), "Windows Kits", "8.0", "Debuggers", "x86", "ntsd.exe"),
- File::Spec->catfile(toCygwinPath($ENV{PROGRAMFILES}), "Debugging Tools for Windows (x86)", "ntsd.exe"),
- File::Spec->catfile(toCygwinPath($ENV{ProgramW6432}), "Debugging Tools for Windows (x64)", "ntsd.exe"),
- File::Spec->catfile(toCygwinPath($ENV{SYSTEMROOT}), "system32", "ntsd.exe"),
- );
-
- my $ntsdPath = shift @possiblePaths;
-
- while (not -f $ntsdPath) {
- if (!@possiblePaths) {
- print STDERR "Can't find ntsd.exe. Crash logs will not be saved.\nSee <http://trac.webkit.org/wiki/BuildingOnWindows#GettingCrashLogs>.\n";
- return;
- }
-
- $ntsdPath = shift @possiblePaths;
- }
-
- # If we used -c (instead of -cf) we could pass the commands directly on the command line. But
- # when the commands include multiple quoted paths (e.g., for .logopen and .srcpath), Windows
- # fails to invoke the post-mortem debugger at all (perhaps due to a bug in Windows's command
- # line parsing). So we save the commands to a file instead and tell the debugger to execute them
- # using -cf.
- my $commandFile = createDebuggerCommandFile() or return;
-
- my @options = (
- '-p %ld',
- '-e %ld',
- '-g',
- '-lines',
- '-cf "' . toWindowsPath($commandFile) . '"',
- );
-
- my %values = (
- Debugger => '"' . toWindowsPath($ntsdPath) . '" ' . join(' ', @options),
- Auto => 1
- );
-
- foreach my $value (keys %values) {
- $previousWindowsPostMortemDebuggerValues{$value} = readRegistryString("$windowsPostMortemDebuggerKey/$value");
- next if writeRegistryString("$windowsPostMortemDebuggerKey/$value", $values{$value});
-
- print "Failed to set \"$windowsPostMortemDebuggerKey/$value\". Crash logs will not be saved.\nSee <http://trac.webkit.org/wiki/BuildingOnWindows#GettingCrashLogs>.\n";
- return;
- }
-
- print "Crash logs will be saved to $testResultsDirectory.\n";
-}
-
-END {
- return unless isCygwin();
-
- foreach my $value (keys %previousWindowsPostMortemDebuggerValues) {
- next if writeRegistryString("$windowsPostMortemDebuggerKey/$value", $previousWindowsPostMortemDebuggerValues{$value});
- print "Failed to restore \"$windowsPostMortemDebuggerKey/$value\" to its previous value \"$previousWindowsPostMortemDebuggerValues{$value}\"\n.";
- }
-}
diff --git a/Tools/Scripts/parallelcl b/Tools/Scripts/parallelcl
deleted file mode 100755
index 8a46365eb..000000000
--- a/Tools/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####### COMPILING $numSources FILES USING 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/Tools/Scripts/parse-malloc-history b/Tools/Scripts/parse-malloc-history
deleted file mode 100755
index 375203f95..000000000
--- a/Tools/Scripts/parse-malloc-history
+++ /dev/null
@@ -1,177 +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
- );
- die $usage if (!$getOptionsResult || !scalar(@ARGV));
-
- my @lines = ();
- foreach my $fileName (@ARGV) {
- open FILE, "<$fileName" or die "bad file: $fileName";
- push(@lines, <FILE>);
- close FILE;
- }
-
- my %callstacks = ();
- my $byteCountTotal = 0;
-
- for (my $i = 0; $i < @lines; $i++) {
- my $line = $lines[$i];
- my ($callCount, $byteCount);
-
- # 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 = $lines[$i];
- }
- }
- }
-
- # Then try LeakFinder format
- # --------------- Key: 213813, 84 bytes ---------
- # c:\cygwin\home\buildbot\webkit\opensource\webcore\rendering\renderarena.cpp(78): WebCore::RenderArena::allocate
- # c:\cygwin\home\buildbot\webkit\opensource\webcore\rendering\renderobject.cpp(82): WebCore::RenderObject::operator new
- if (!$callCount || !$byteCount) {
- $callCount = 1;
- ($byteCount) = ($line =~ /Key: (?:\d+), (\d+) bytes/);
- if ($byteCount) {
- $line = $lines[++$i];
- my @tempStack;
- while ($lines[$i+1] !~ /^(?:-|\d)/) {
- if ($line =~ /\): (.*)$/) {
- my $call = $1;
- $call =~ s/\r$//;
- unshift(@tempStack, $call);
- }
- $line = $lines[++$i];
- }
- $line = join(" | ", @tempStack);
- }
- }
-
- # 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";
- return 0;
-}
-
-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/Tools/Scripts/prepare-ChangeLog b/Tools/Scripts/prepare-ChangeLog
deleted file mode 100755
index e6e7897b0..000000000
--- a/Tools/Scripts/prepare-ChangeLog
+++ /dev/null
@@ -1,2013 +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.
-# Copyright (C) 2009 Torch Mobile, Inc.
-# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
-#
-# 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>
-# --git-index flag added by Joe Mason <joe.mason@torchmobile.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.
-# 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 changeLogEmailAddressFromArgs($$);
-sub changeLogNameFromArgs($$);
-sub createPatchCommand($$$$);
-sub decodeEntities($);
-sub determinePropertyChanges($$$);
-sub diffCommand($$$$);
-sub diffFromToString($$$);
-sub diffHeaderFormat();
-sub extractLineRange($);
-sub fetchBugDescriptionFromURL($$);
-sub findChangeLogs($);
-sub findOriginalFileFromSvn($);
-sub generateFileList(\%$$$);
-sub generateFunctionLists($$$$$);
-sub generateNewChangeLogs($$$$$$$$$$$);
-sub getLatestChangeLogs($);
-sub get_function_line_ranges($$);
-sub get_function_line_ranges_for_cpp($$);
-sub delete_namespaces_from_ranges_for_cpp(\@\@);
-sub is_function_in_namespace($$);
-sub get_function_line_ranges_for_java($$);
-sub get_function_line_ranges_for_javascript($$);
-sub get_function_line_ranges_for_perl($$);
-sub get_selector_line_ranges_for_css($$);
-sub isAddedStatus($);
-sub isConflictStatus($$$);
-sub isModifiedStatus($);
-sub isUnmodifiedStatus($);
-sub main();
-sub method_decl_to_selector($);
-sub normalizeLineEndings($$);
-sub openChangeLogs($);
-sub pluralizeAndList($$@);
-sub printDiff($$$$);
-sub processPaths(\@);
-sub propertyChangeDescription($);
-sub resolveConflictedChangeLogs($);
-sub reviewerAndDescriptionForGitCommit($$);
-sub statusCommand($$$$);
-sub statusDescription($$$$);
-sub testListForChangeLog(@);
-
-### Constant variables.
-# Project time zone for Cupertino, CA, US
-use constant ChangeLogTimeZone => "PST8PDT";
-use constant SVN => "svn";
-use constant GIT => "git";
-use constant SupportedTestExtensions => {map { $_ => 1 } qw(html shtml svg xml xhtml pl php)};
-
-exit(main());
-
-sub main()
-{
- my $bugDescription;
- my $bugNumber;
- my $name;
- my $emailAddress;
- my $mergeBase = 0;
- my $gitCommit = 0;
- my $gitIndex = "";
- my $gitReviewer = "";
- my $openChangeLogs = 0;
- my $writeChangeLogs = 1;
- my $showHelp = 0;
- my $spewDiff = $ENV{"PREPARE_CHANGELOG_DIFF"};
- my $updateChangeLogs = 1;
- my $parseOptionsResult =
- GetOptions("diff|d!" => \$spewDiff,
- "bug|b:i" => \$bugNumber,
- "description:s" => \$bugDescription,
- "name:s" => \$name,
- "email:s" => \$emailAddress,
- "merge-base:s" => \$mergeBase,
- "git-commit|g:s" => \$gitCommit,
- "git-index" => \$gitIndex,
- "git-reviewer:s" => \$gitReviewer,
- "help|h!" => \$showHelp,
- "open|o!" => \$openChangeLogs,
- "write!" => \$writeChangeLogs,
- "update!" => \$updateChangeLogs);
- if (!$parseOptionsResult || $showHelp) {
- print STDERR basename($0) . " [-b|--bug=<bugid>] [-d|--diff] [-h|--help] [-o|--open] [-g|--git-commit=<committish>] [--git-reviewer=<name>] [svndir1 [svndir2 ...]]\n";
- print STDERR " -b|--bug Fill in the ChangeLog bug information from the given bug.\n";
- print STDERR " --description One-line description that matches the bug title.\n";
- print STDERR " -d|--diff Spew diff to stdout when running\n";
- print STDERR " --merge-base Populate the ChangeLogs with the diff to this branch\n";
- print STDERR " -g|--git-commit Populate the ChangeLogs from the specified git commit\n";
- print STDERR " --git-index Populate the ChangeLogs from the git index only\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";
- print STDERR " --[no-]write Write ChangeLogs to disk (otherwise send new entries to stdout) (default: write)\n";
- print STDERR " --email= Specify the email address to be used in the patch\n";
- return 1;
- }
-
- die "--git-commit and --git-index are incompatible." if ($gitIndex && $gitCommit);
-
- isSVN() || isGit() || die "Couldn't determine your version control system.";
-
- my %paths = processPaths(@ARGV);
-
- # Find the list of modified files
- my ($changedFiles, $conflictFiles, $functionLists, $addedRegressionTests) = generateFileList(%paths, $gitCommit, $gitIndex, $mergeBase);
-
- if (!@$changedFiles && !@$conflictFiles && !keys %$functionLists) {
- print STDERR " No changes found.\n";
- return 1;
- }
-
- if (@$conflictFiles) {
- print STDERR " The following files have conflicts. Run prepare-ChangeLog again after fixing the conflicts:\n";
- print STDERR join("\n", @$conflictFiles), "\n";
- return 1;
- }
-
- generateFunctionLists($changedFiles, $functionLists, $gitCommit, $gitIndex, $mergeBase);
-
- # Get some parameters for the ChangeLog we are about to write.
- $name = changeLogNameFromArgs($name, $gitCommit);
- $emailAddress = changeLogEmailAddressFromArgs($emailAddress, $gitCommit);
-
- print STDERR " Change author: $name <$emailAddress>.\n";
-
- # Remove trailing parenthesized notes from user name (bit of hack).
- $name =~ s/\(.*?\)\s*$//g;
-
- my $bugURL;
- if ($bugNumber) {
- $bugURL = "https://bugs.webkit.org/show_bug.cgi?id=$bugNumber";
- }
-
- if ($bugNumber && !$bugDescription) {
- $bugDescription = fetchBugDescriptionFromURL($bugURL, $bugNumber);
- }
-
- my ($filesInChangeLog, $prefixes) = findChangeLogs($functionLists);
-
- # Get the latest ChangeLog files from svn.
- my $changeLogs = getLatestChangeLogs($prefixes);
-
- if (@$changeLogs && $updateChangeLogs && isSVN()) {
- resolveConflictedChangeLogs($changeLogs);
- }
-
- generateNewChangeLogs($prefixes, $filesInChangeLog, $addedRegressionTests, $functionLists, $bugURL, $bugDescription, $name, $emailAddress, $gitReviewer, $gitCommit, $writeChangeLogs);
-
- if ($writeChangeLogs) {
- print STDERR "-- Please remember to include a detailed description in your ChangeLog entry. --\n-- See <http://webkit.org/coding/contributing.html> for more info --\n";
- }
-
- # Write out another diff.
- if ($spewDiff && @$changedFiles) {
- printDiff($changedFiles, $gitCommit, $gitIndex, $mergeBase);
- }
-
- # Open ChangeLogs.
- if ($openChangeLogs && @$changeLogs) {
- openChangeLogs($changeLogs);
- }
- return 0;
-}
-
-sub generateFunctionLists($$$$$)
-{
- my ($changedFiles, $functionLists, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- my %changed_line_ranges;
- if (@$changedFiles) {
- # 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($changedFiles, $gitCommit, $gitIndex, $mergeBase) 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) {
- # 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;
-
- # FIXME: This is a hack. If the function name is empty, skip it.
- # The cpp, python, javascript, perl, css and java parsers
- # are not perfectly implemented and sometimes function names cannot be retrieved
- # correctly. As you can see in get_function_line_ranges_XXXX(), those parsers
- # are not intended to implement real parsers but intended to just retrieve function names
- # for most practical syntaxes.
- next unless $function_range[2];
-
- # 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) {
- $functionLists->{$file} = "" if !defined $functionLists->{$file};
- $functionLists->{$file} .= "\n (" . join("):\n (", @functions) . "):";
- }
- }
- }
-}
-
-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 changeLogNameFromArgs($$)
-{
- my ($nameFromArgs, $gitCommit) = @_;
- # Silently allow --git-commit to win, we could warn if $nameFromArgs is defined.
- my $command = GIT . ' log --max-count=1 --pretty="format:%an" "' . $gitCommit . '"';
- return `$command` if $gitCommit;
-
- return $nameFromArgs || changeLogName();
-}
-
-sub changeLogEmailAddressFromArgs($$)
-{
- my ($emailAddressFromArgs, $gitCommit) = @_;
- # Silently allow --git-commit to win, we could warn if $emailAddressFromArgs is defined.
- my $command = GIT . ' log --max-count=1 --pretty="format:%ae" "' . $gitCommit . '"';
- return `$command` if $gitCommit;
-
- return $emailAddressFromArgs || changeLogEmailAddress();
-}
-
-sub fetchBugDescriptionFromURL($$)
-{
- my ($bugURL, $bugNumber) = @_;
-
- my $bugXMLURL = "$bugURL&ctype=xml&excludefield=attachmentdata";
- # Perl has no built in XML processing, so we'll fetch and parse with curl and grep
- # Pass --insecure because some cygwin installs have no certs we don't
- # care about validating that bugs.webkit.org is who it says it is here.
- my $descriptionLine = `curl --insecure --silent "$bugXMLURL" | grep short_desc`;
- if ($descriptionLine !~ /<short_desc>(.*)<\/short_desc>/) {
- # Maybe the reason the above did not work is because the curl that is installed doesn't
- # support ssl at all.
- if (`curl --version | grep ^Protocols` !~ /\bhttps\b/) {
- print STDERR " Could not get description for bug $bugNumber.\n";
- print STDERR " It looks like your version of curl does not support ssl.\n";
- print STDERR " If you are using macports, this can be fixed with sudo port install curl +ssl.\n";
- } else {
- print STDERR " Bug $bugNumber has no bug description. Maybe you set wrong bug ID?\n";
- print STDERR " The bug URL: $bugXMLURL\n";
- }
- exit 1;
- }
- my $bugDescription = decodeEntities($1);
- print STDERR " Description from bug $bugNumber:\n \"$bugDescription\".\n";
- return $bugDescription;
-}
-
-sub findChangeLogs($)
-{
- my ($functionLists) = @_;
-
- # Find the change logs.
- my %has_log;
- my %filesInChangeLog;
- foreach my $file (sort keys %$functionLists) {
- 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 @{$filesInChangeLog{$prefix}}, $file;
- }
- }
-
- # Build the list of ChangeLog prefixes in the correct project order
- my @prefixes;
- my %prefixesSort;
- foreach my $prefix (keys %filesInChangeLog) {
- my $prefixDir = substr($prefix, 0, length($prefix) - 1); # strip trailing /
- my $sortKey = lc $prefix;
- $sortKey = "top level" unless length $sortKey;
-
- if ($prefixDir eq "top level") {
- $sortKey = "";
- } elsif ($prefixDir eq "Tools") {
- $sortKey = "-, just after top level";
- } elsif ($prefixDir eq "WebBrowser") {
- $sortKey = lc "WebKit, WebBrowser after";
- } elsif ($prefixDir eq "Source/WebCore") {
- $sortKey = lc "WebFoundation, WebCore after";
- } elsif ($prefixDir eq "LayoutTests") {
- $sortKey = lc "~, LayoutTests last";
- }
-
- $prefixesSort{$sortKey} = $prefix;
- }
- foreach my $prefixSort (sort keys %prefixesSort) {
- push @prefixes, $prefixesSort{$prefixSort};
- }
- return (\%filesInChangeLog, \@prefixes);
-}
-
-sub getLatestChangeLogs($)
-{
- my ($prefixes) = @_;
-
- my @changeLogs = ();
- foreach my $prefix (@$prefixes) {
- push @changeLogs, File::Spec->catfile($prefix || ".", changeLogFileName());
- }
- return \@changeLogs;
-}
-
-sub resolveConflictedChangeLogs($)
-{
- my ($changeLogs) = @_;
-
- print STDERR " Running 'svn update' to update ChangeLog files.\n";
- open ERRORS, "-|", SVN, "update", @$changeLogs
- 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+(.+?)[\r\n]*$/;
- }
- close ERRORS;
-
- return 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;
-}
-
-sub generateNewChangeLogs($$$$$$$$$$$)
-{
- my ($prefixes, $filesInChangeLog, $addedRegressionTests, $functionLists, $bugURL, $bugDescription, $name, $emailAddress, $gitReviewer, $gitCommit, $writeChangeLogs) = @_;
-
- # Generate new ChangeLog entries and (optionally) write out new ChangeLog files.
- foreach my $prefix (@$prefixes) {
- my $endl = "\n";
- my @old_change_log;
-
- if ($writeChangeLogs) {
- my $changeLogPath = File::Spec->catfile($prefix || ".", changeLogFileName());
- 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.
- @old_change_log = <OLD_CHANGE_LOG>;
- close OLD_CHANGE_LOG;
- # We want to match the ChangeLog's line endings in case it doesn't match
- # the native line endings for this version of perl.
- if ($old_change_log[0] =~ /(\r?\n)$/g) {
- $endl = "$1";
- }
- open CHANGE_LOG, "> ${changeLogPath}" or die "Could not write ${changeLogPath}\n.";
- } else {
- open CHANGE_LOG, ">-" or die "Could not write to STDOUT\n.";
- print substr($prefix, 0, length($prefix) - 1) . ":\n\n" unless (scalar @$prefixes) == 1;
- }
-
- my $date = changeLogDate(ChangeLogTimeZone);
- print CHANGE_LOG normalizeLineEndings("$date $name <$emailAddress>\n\n", $endl);
-
- my ($reviewer, $description) = reviewerAndDescriptionForGitCommit($gitCommit, $gitReviewer) if $gitCommit;
- $reviewer = "NOBODY (OO" . "PS!)" if !$reviewer;
-
- print CHANGE_LOG normalizeLineEndings($description . "\n", $endl) if $description;
-
- $bugDescription = "Need a short description (OOPS!).\n Need the bug URL (OOPS!)." unless $bugDescription;
- print CHANGE_LOG normalizeLineEndings(" $bugDescription\n", $endl) if $bugDescription;
- print CHANGE_LOG normalizeLineEndings(" $bugURL\n", $endl) if $bugURL;
- print CHANGE_LOG normalizeLineEndings("\n", $endl);
-
- print CHANGE_LOG normalizeLineEndings(" Reviewed by $reviewer.\n\n", $endl);
-
- if ($prefix =~ m/WebCore/ || `pwd` =~ m/WebCore/) {
- if (@$addedRegressionTests) {
- print CHANGE_LOG normalizeLineEndings(testListForChangeLog(sort @$addedRegressionTests), $endl);
- } else {
- print CHANGE_LOG normalizeLineEndings(" No new tests (OOPS!).\n\n", $endl);
- }
- }
-
- foreach my $file (sort @{$filesInChangeLog->{$prefix}}) {
- my $file_stem = substr $file, length $prefix;
- print CHANGE_LOG normalizeLineEndings(" * $file_stem:$functionLists->{$file}\n", $endl);
- }
-
- if ($writeChangeLogs) {
- print CHANGE_LOG normalizeLineEndings("\n", $endl), @old_change_log;
- } else {
- print CHANGE_LOG "\n";
- }
-
- close CHANGE_LOG;
- }
-}
-
-sub printDiff($$$$)
-{
- my ($changedFiles, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- print STDERR " Running diff to help you write the ChangeLog entries.\n";
- local $/ = undef; # local slurp mode
- my $changedFilesString = "'" . join("' '", @$changedFiles) . "'";
- open DIFF, "-|", createPatchCommand($changedFilesString, $gitCommit, $gitIndex, $mergeBase) or die "The diff failed: $!.\n";
- print <DIFF>;
- close DIFF;
-}
-
-sub openChangeLogs($)
-{
- my ($changeLogs) = @_;
-
- print STDERR " Opening the edited ChangeLog files.\n";
- my $editor = $ENV{CHANGE_LOG_EDITOR} || $ENV{VISUAL} || $ENV{EDITOR};
- if ($editor) {
- system ((split ' ', $editor), @$changeLogs);
- } else {
- $editor = $ENV{CHANGE_LOG_EDIT_APPLICATION};
- if ($editor) {
- system "open", "-a", $editor, @$changeLogs;
- } else {
- system "open", "-e", @$changeLogs;
- }
- }
-}
-
-sub get_function_line_ranges($$)
-{
- my ($file_handle, $file_name) = @_;
-
- # Try to determine the source language based on the file extension.
-
- return get_function_line_ranges_for_cpp($file_handle, $file_name) if $file_name =~ /\.(c|cpp|m|mm|h)$/;
- return get_function_line_ranges_for_java($file_handle, $file_name) if $file_name =~ /\.java$/;
- return get_function_line_ranges_for_javascript($file_handle, $file_name) if $file_name =~ /\.js$/;
- return get_selector_line_ranges_for_css($file_handle, $file_name) if $file_name =~ /\.css$/;
- return get_function_line_ranges_for_perl($file_handle, $file_name) if $file_name =~ /\.p[lm]$/;
- return get_function_line_ranges_for_python($file_handle, $file_name) if $file_name =~ /\.py$/ or $file_name =~ /master\.cfg$/;
-
- # Try to determine the source language based on the script interpreter.
-
- my $first_line = <$file_handle>;
- seek($file_handle, 0, 0);
-
- return () unless $first_line =~ m|^#!(?:/usr/bin/env\s+)?(\S+)|;
- my $interpreter = $1;
-
- return get_function_line_ranges_for_perl($file_handle, $file_name) if $interpreter =~ /perl$/;
- return get_function_line_ranges_for_python($file_handle, $file_name) if $interpreter =~ /python$/;
-
- 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_cpp($$)
-{
- 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 $in_toplevel_array_brace = 0;
- my $brace_start = 0;
- my $brace_end = 0;
- my $namespace_start = -1;
- my $skip_til_brace_or_semicolon = 0;
- my $equal_observed = 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;
- my @all_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) {
- # Skip an array definition at the top level.
- # e.g. static int arr[] = { 1, 2, 3 };
- if ($1) {
- if ($1 eq "=" and !$in_parentheses and !$in_braces) {
- $equal_observed = 1;
- } elsif ($1 eq "{" and $equal_observed) {
- # This '{' is the beginning of an array definition, not the beginning of a method.
- $in_toplevel_array_brace = 1;
- $in_braces++;
- $equal_observed = 0;
- next;
- } elsif ($1 !~ /[ \t]/) {
- $equal_observed = 0;
- }
- }
-
- # 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 (!$in_braces) {
- if ($namespace_start >= 0 and $namespace_start < $potential_start) {
- push @ranges, [ $namespace_start . "", $potential_start - 1, $name ];
- }
-
- if ($potential_namespace) {
- push @namespaces, $potential_namespace;
- push @all_namespaces, $potential_namespace;
- $potential_namespace = "";
- $name = $namespaces[-1];
- $namespace_start = $. + 1;
- next;
- }
-
- # Promote potential name to real function name at the
- # start of the outer level set of braces (function body?).
- if ($potential_start) {
- $start = $potential_start;
- $name = $potential_name;
- if (@namespaces && $name && (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) {
- if ($namespace_start >= 0 and $namespace_start < $.) {
- push @ranges, [ $namespace_start . "", $. - 1, $name ];
- }
-
- pop @namespaces;
- if (@namespaces) {
- $name = $namespaces[-1];
- $namespace_start = $. + 1;
- } else {
- $name = "";
- $namespace_start = -1;
- }
- 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) {
- # This is the end of an array definition at the top level, not the end of a method.
- if ($in_toplevel_array_brace) {
- $in_toplevel_array_brace = 0;
- next;
- }
-
- push @ranges, [ $start, $., $name ];
- if (@namespaces) {
- $name = $namespaces[-1];
- $namespace_start = $. + 1;
- } else {
- $name = "";
- $namespace_start = -1;
- }
- }
-
- $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 delete_namespaces_from_ranges_for_cpp(@ranges, @all_namespaces);
-}
-
-
-# Take in references to an array of line ranges for C functions in a given file
-# and an array of namespaces declared in that file and return an updated
-# list of line ranges with the namespaces removed.
-
-sub delete_namespaces_from_ranges_for_cpp(\@\@)
-{
- my ($ranges, $namespaces) = @_;
- return grep {!is_function_in_namespace($namespaces, $$_[2])} @$ranges;
-}
-
-
-sub is_function_in_namespace($$)
-{
- my ($namespaces, $function_name) = @_;
- return grep {$_ eq $function_name} @$namespaces;
-}
-
-
-# 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 $in_class_declaration = 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 "{") {
- $in_class_declaration = 0;
-
- # 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") {
- $in_class_declaration = 1;
- }
- if ($1 eq "class" or (!$in_class_declaration and $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 $inQuotedText = "";
- 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 continued quoted text.
- if ($inQuotedText ne "") {
- next if /\\$/;
- s-([^\\]|\\.)*?$inQuotedText--;
- $inQuotedText = "";
- }
-
- # 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-string_appeared_here-) {
- $inQuotedText = $match if /\\$/;
- warn "mismatched quotes at line $. in $fileName\n" if $inQuotedText eq "";
- 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 or comma.
- if ($1 eq ';' or $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;
-}
-
-# Read a file and get all the line ranges of the things that look like Perl functions. Functions
-# start on a line that starts with "sub ", and end on the first line starting with "}" thereafter.
-#
-# Result is a list of triples: [ start_line, end_line, function ].
-
-sub get_function_line_ranges_for_perl($$)
-{
- my ($fileHandle, $fileName) = @_;
-
- my @ranges;
-
- my $currentFunction = "";
- my $start = 0;
- my $hereDocumentIdentifier = "";
-
- while (<$fileHandle>) {
- chomp;
- if (!$hereDocumentIdentifier) {
- if (/^sub\s+([\w_][\w\d_]*)/) {
- # Skip over forward declarations, which don't contain a brace and end with a semicolon.
- next if /;\s*$/;
-
- if ($currentFunction) {
- warn "nested functions found at top-level at $fileName:$.\n";
- next;
- }
- $currentFunction = $1;
- $start = $.;
- }
- if (/<<\s*[\"\']?([\w_][\w_\d]*)/) {
- # Enter here-document.
- $hereDocumentIdentifier = $1;
- }
- if (index($_, "}") == 0) {
- next unless $start;
- push(@ranges, [$start, $., $currentFunction]);
- $currentFunction = "";
- $start = 0;
- }
- } elsif ($_ eq $hereDocumentIdentifier) {
- # Escape from here-document.
- $hereDocumentIdentifier = "";
- }
- }
-
- return @ranges;
-}
-
-# Read a file and get all the line ranges of the things that look like Python classes, methods, or functions.
-#
-# FIXME: Maybe we should use Python's ast module to do the parsing for us?
-#
-# Result is a list of triples: [ start_line, end_line, function ].
-
-sub get_function_line_ranges_for_python($$)
-{
- my ($fileHandle, $fileName) = @_;
-
- my @ranges;
-
- my @scopeStack = ({ line => 0, indent => -1, name => undef });
- my $lastLine = 0;
- until ($lastLine) {
- $_ = <$fileHandle>;
- unless ($_) {
- # To pop out all popped scopes, run the loop once more after
- # we encountered the end of the file.
- $_ = "pass\n";
- $.++;
- $lastLine = 1;
- }
- chomp;
- next unless /^(\s*)([^#].*)$/;
-
- my $indent = length $1;
- my $rest = $2;
- my $scope = $scopeStack[-1];
-
- if ($indent <= $scope->{indent}) {
- # Find all the scopes that we have just exited.
- my $i = 0;
- for (; $i < @scopeStack; ++$i) {
- last if $indent <= $scopeStack[$i]->{indent};
- }
- my @poppedScopes = splice @scopeStack, $i;
-
- # For each scope that was just exited, add a range that goes from the start of that
- # scope to the start of the next nested scope, or to the line just before this one for
- # the innermost scope.
- for ($i = 0; $i < @poppedScopes; ++$i) {
- my $lineAfterEnd = $i + 1 == @poppedScopes ? $. : $poppedScopes[$i + 1]->{line};
- push @ranges, [$poppedScopes[$i]->{line}, $lineAfterEnd - 1, $poppedScopes[$i]->{name}];
- }
- @scopeStack or warn "Popped off last scope at $fileName:$.\n";
-
- # Set the now-current scope to start at the current line. Any lines within this scope
- # before this point should already have been added to @ranges.
- $scope = $scopeStack[-1];
- $scope->{line} = $.;
- }
-
- next unless $rest =~ /(?:class|def)\s+(\w+)/;
- my $name = $1;
- my $fullName = $scope->{name} ? join('.', $scope->{name}, $name) : $name;
- push @scopeStack, { line => $., indent => $indent, name => $fullName };
-
- if ($scope->{indent} >= 0) {
- push @ranges, [$scope->{line}, $. - 1, $scope->{name}];
- }
- }
-
- return @ranges;
-}
-
-# Read a file and get all the line ranges of the things that look like CSS selectors. A selector is
-# anything before an opening brace on a line. A selector starts at the line containing the opening
-# brace and ends at the closing brace.
-#
-# Result is a list of triples: [ start_line, end_line, selector ].
-
-sub get_selector_line_ranges_for_css($$)
-{
- my ($fileHandle, $fileName) = @_;
-
- my @ranges;
-
- my $currentSelector = "";
- my $start = 0;
- my $inComment = 0;
- my $inBrace = 0;
-
- while (<$fileHandle>) {
- foreach my $token (split m-(\{|\}|/\*|\*/)-, $_) {
- if ($token eq "{") {
- if (!$inComment) {
- warn "mismatched brace found in $fileName\n" if $inBrace;
- $inBrace = 1;
- }
- } elsif ($token eq "}") {
- if (!$inComment) {
- warn "mismatched brace found in $fileName\n" if !$inBrace;
- $inBrace = 0;
- push(@ranges, [$start, $., $currentSelector]);
- $currentSelector = "";
- $start = 0;
- }
- } elsif ($token eq "/*") {
- $inComment = 1;
- } elsif ($token eq "*/") {
- warn "mismatched comment found in $fileName\n" if !$inComment;
- $inComment = 0;
- } else {
- if (!$inComment and !$inBrace and $token !~ /^[\s\t]*$/) {
- $token =~ s/^[\s\t]*|[\s\t]*$//g;
- $currentSelector = $token;
- $start = $.;
- }
- }
- }
- }
-
- 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($$$)
-{
- my ($gitCommit, $gitIndex, $mergeBase) = @_;
-
- return "" if isSVN();
- return $gitCommit if $gitCommit =~ m/.+\.\..+/;
- return "\"$gitCommit^\" \"$gitCommit\"" if $gitCommit;
- return "--cached" if $gitIndex;
- return $mergeBase if $mergeBase;
- return "HEAD" if isGit();
-}
-
-sub diffCommand($$$$)
-{
- my ($paths, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- my $command;
- if (isSVN()) {
- my @escapedPaths = map(escapeSubversionPath($_), @$paths);
- my $escapedPathsString = "'" . join("' '", @escapedPaths) . "'";
- $command = SVN . " diff --diff-cmd diff -x -N $escapedPathsString";
- } elsif (isGit()) {
- my $pathsString = "'" . join("' '", @$paths) . "'";
- $command = GIT . " diff --no-ext-diff -U0 " . diffFromToString($gitCommit, $gitIndex, $mergeBase);
- $command .= " -- $pathsString" unless $gitCommit or $mergeBase;
- }
-
- return $command;
-}
-
-sub statusCommand($$$$)
-{
- my ($paths, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- my $command;
- if (isSVN()) {
- my @escapedFiles = map(escapeSubversionPath($_), keys %$paths);
- my $escapedFilesString = "'" . join("' '", @escapedFiles) . "'";
- $command = SVN . " stat $escapedFilesString";
- } elsif (isGit()) {
- my $filesString = '"' . join('" "', keys %$paths) . '"';
- $command = GIT . " diff -r --name-status -M -C " . diffFromToString($gitCommit, $gitIndex, $mergeBase);
- $command .= " -- $filesString" unless $gitCommit;
- }
-
- return "$command 2>&1";
-}
-
-sub createPatchCommand($$$$)
-{
- my ($changedFilesString, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- my $command;
- if (isSVN()) {
- $command = "'$FindBin::Bin/svn-create-patch' $changedFilesString";
- } elsif (isGit()) {
- $command = GIT . " diff -M -C " . diffFromToString($gitCommit, $gitIndex, $mergeBase);
- $command .= " -- $changedFilesString" unless $gitCommit;
- }
-
- return $command;
-}
-
-sub diffHeaderFormat()
-{
- return qr/^Index: (\S+)[\r\n]*$/ 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: (.+?)[\r\n]*$/) {
- $baseUrl = $1;
- }
- }
- close INFO;
- my $sourceFile;
- my $escapedFile = escapeSubversionPath($file);
- open INFO, SVN . " info '$escapedFile' |" or die;
- while (<INFO>) {
- if (/^Copied From URL: (.+?)[\r\n]*$/) {
- $sourceFile = File::Spec->abs2rel($1, $baseUrl);
- }
- }
- close INFO;
- return $sourceFile;
-}
-
-sub determinePropertyChanges($$$)
-{
- my ($file, $isAdd, $original) = @_;
-
- my $escapedFile = escapeSubversionPath($file);
- my %changes;
- if ($isAdd) {
- my %addedProperties;
- my %removedProperties;
- open PROPLIST, SVN . " proplist '$escapedFile' |" or die;
- while (<PROPLIST>) {
- $addedProperties{$1} = 1 if /^ (.+?)[\r\n]*$/ && $1 ne 'svn:mergeinfo';
- }
- close PROPLIST;
- if ($original) {
- my $escapedOriginal = escapeSubversionPath($original);
- open PROPLIST, SVN . " proplist '$escapedOriginal' |" or die;
- while (<PROPLIST>) {
- next unless /^ (.+?)[\r\n]*$/;
- my $property = $1;
- if (exists $addedProperties{$property}) {
- delete $addedProperties{$1};
- } else {
- $removedProperties{$1} = 1;
- }
- }
- }
- $changes{"A"} = [sort keys %addedProperties] if %addedProperties;
- $changes{"D"} = [sort keys %removedProperties] if %removedProperties;
- } else {
- open DIFF, SVN . " diff '$escapedFile' |" or die;
- while (<DIFF>) {
- if (/^Property changes on:/) {
- while (<DIFF>) {
- my $operation;
- my $property;
- if (/^Added: (\S*)/) {
- $operation = "A";
- $property = $1;
- } elsif (/^Modified: (\S*)/) {
- $operation = "M";
- $property = $1;
- } elsif (/^Deleted: (\S*)/) {
- $operation = "D";
- $property = $1;
- } elsif (/^Name: (\S*)/) {
- # Older versions of svn just say "Name" instead of the type
- # of property change.
- $operation = "C";
- $property = $1;
- }
- if ($operation) {
- $changes{$operation} = [] unless exists $changes{$operation};
- push @{$changes{$operation}}, $property;
- }
- }
- }
- }
- close DIFF;
- }
- return \%changes;
-}
-
-sub pluralizeAndList($$@)
-{
- my ($singular, $plural, @items) = @_;
-
- return if @items == 0;
- return "$singular $items[0]" if @items == 1;
- return "$plural " . join(", ", @items[0 .. $#items - 1]) . " and " . $items[-1];
-}
-
-sub generateFileList(\%$$$)
-{
- my ($paths, $gitCommit, $gitIndex, $mergeBase) = @_;
-
- my @changedFiles;
- my @conflictFiles;
- my %functionLists;
- my @addedRegressionTests;
- print STDERR " Running status to find changed, added, or removed files.\n";
- open STAT, "-|", statusCommand($paths, $gitCommit, $gitIndex, $mergeBase) or die "The status failed: $!.\n";
- while (<STAT>) {
- my $status;
- my $propertyStatus;
- my $propertyChanges;
- my $original;
- my $file;
-
- if (isSVN()) {
- my $matches;
- if (isSVNVersion16OrNewer()) {
- $matches = /^([ ACDMR])([ CM]).{5} (.+?)[\r\n]*$/;
- $status = $1;
- $propertyStatus = $2;
- $file = $3;
- } else {
- $matches = /^([ ACDMR])([ CM]).{4} (.+?)[\r\n]*$/;
- $status = $1;
- $propertyStatus = $2;
- $file = $3;
- }
- if ($matches) {
- $file = normalizePath($file);
- $original = findOriginalFileFromSvn($file) if substr($_, 3, 1) eq "+";
- my $isAdd = isAddedStatus($status);
- $propertyChanges = determinePropertyChanges($file, $isAdd, $original) if isModifiedStatus($propertyStatus) || $isAdd;
- } else {
- print; # error output from svn stat
- }
- } elsif (isGit()) {
- if (/^([ADM])\t(.+)$/) {
- $status = $1;
- $propertyStatus = " "; # git doesn't have properties
- $file = normalizePath($2);
- } elsif (/^([CR])[0-9]{1,3}\t([^\t]+)\t([^\t\n]+)$/) { # for example: R90% newfile oldfile
- $status = $1;
- $propertyStatus = " ";
- $original = normalizePath($2);
- $file = normalizePath($3);
- } else {
- print; # error output from git diff
- }
- }
-
- next if !$status || isUnmodifiedStatus($status) && isUnmodifiedStatus($propertyStatus);
-
- $file = makeFilePathRelative($file);
-
- if (isModifiedStatus($status) || isAddedStatus($status) || isModifiedStatus($propertyStatus)) {
- my @components = File::Spec->splitdir($file);
- if ($components[0] eq "LayoutTests") {
- push @addedRegressionTests, $file
- if isAddedStatus($status)
- && $file =~ /\.([a-zA-Z]+)$/
- && SupportedTestExtensions->{lc($1)}
- && $file !~ /-expected(-mismatch)?\.html$/
- && !scalar(grep(/^resources$/i, @components))
- && !scalar(grep(/^script-tests$/i, @components));
- }
- push @changedFiles, $file if $components[$#components] ne changeLogFileName();
- } elsif (isConflictStatus($status, $gitCommit, $gitIndex) || isConflictStatus($propertyStatus, $gitCommit, $gitIndex)) {
- push @conflictFiles, $file;
- }
- if (basename($file) ne changeLogFileName()) {
- my $description = statusDescription($status, $propertyStatus, $original, $propertyChanges);
- $functionLists{$file} = $description if defined $description;
- }
- }
- close STAT;
- return (\@changedFiles, \@conflictFiles, \%functionLists, \@addedRegressionTests);
-}
-
-sub isUnmodifiedStatus($)
-{
- my ($status) = @_;
-
- my %statusCodes = (
- " " => 1,
- );
-
- return $statusCodes{$status};
-}
-
-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, $gitCommit, $gitIndex) = @_;
-
- my %svn = (
- "C" => 1,
- );
-
- my %git = (
- "U" => 1,
- );
-
- return 0 if ($gitCommit || $gitIndex); # an existing commit or staged change cannot have conflicts
- return $svn{$status} if isSVN();
- return $git{$status} if isGit();
-}
-
-sub statusDescription($$$$)
-{
- my ($status, $propertyStatus, $original, $propertyChanges) = @_;
-
- my $propertyDescription = defined $propertyChanges ? propertyChangeDescription($propertyChanges) : "";
-
- 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.";
-
- my $description;
- $description = sprintf($svn{$status}, $original) if isSVN() && exists $svn{$status};
- $description = sprintf($git{$status}, $original) if isGit() && exists $git{$status};
- return unless defined $description;
-
- $description .= $propertyDescription unless isAddedStatus($status);
- return $description;
-}
-
-sub propertyChangeDescription($)
-{
- my ($propertyChanges) = @_;
-
- my %operations = (
- "A" => "Added",
- "M" => "Modified",
- "D" => "Removed",
- "C" => "Changed",
- );
-
- my $description = "";
- while (my ($operation, $properties) = each %$propertyChanges) {
- my $word = $operations{$operation};
- my $list = pluralizeAndList("property", "properties", @$properties);
- $description .= " $word $list.";
- }
- return $description;
-}
-
-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 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, $gitReviewer) = @_;
-
- my $description = '';
- my $reviewer;
-
- my @args = qw(rev-list --pretty);
- push @args, '-1' if $commit !~ m/.+\.\..+/;
- my $gitLog;
- {
- local $/ = undef;
- open(GITLOG, "-|", GIT, @args, $commit) || die;
- $gitLog = <GITLOG>;
- close(GITLOG);
- }
-
- 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 $commitLogIndent;
- 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 ($line =~ /^\s*$/) {
- $description = $description . "\n";
- } else {
- if (!defined($commitLogIndent)) {
- # Let the first line with non-white space determine
- # the global indent.
- $line =~ /^(\s*)\S/;
- $commitLogIndent = length($1);
- }
- # Strip at most the indent to preserve relative indents.
- $line =~ s/^\s{0,$commitLogIndent}//;
- $description = $description . (" " x 8) . $line . "\n";
- }
- }
- }
- if (!$reviewer) {
- $reviewer = $gitReviewer;
- }
-
- return ($reviewer, $description);
-}
-
-sub normalizeLineEndings($$)
-{
- my ($string, $endl) = @_;
- $string =~ s/\r?\n/$endl/g;
- return $string;
-}
-
-sub decodeEntities($)
-{
- my ($text) = @_;
- $text =~ s/\&lt;/</g;
- $text =~ s/\&gt;/>/g;
- $text =~ s/\&quot;/\"/g;
- $text =~ s/\&apos;/\'/g;
- $text =~ s/\&amp;/\&/g;
- return $text;
-}
diff --git a/Tools/Scripts/read-checksum-from-png b/Tools/Scripts/read-checksum-from-png
deleted file mode 100755
index fb03f28b7..000000000
--- a/Tools/Scripts/read-checksum-from-png
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 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.
-
-from __future__ import with_statement
-import sys
-
-from webkitpy.common import read_checksum_from_png
-
-
-if '__main__' == __name__:
- for filename in sys.argv[1:]:
- with open(filename, 'r') as filehandle:
- print "%s: %s" % (read_checksum_from_png.read_checksum(filehandle), filename)
diff --git a/Tools/Scripts/report-include-statistics b/Tools/Scripts/report-include-statistics
deleted file mode 100755
index 17152ab9a..000000000
--- a/Tools/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 WebKit 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/Tools/Scripts/resolve-ChangeLogs b/Tools/Scripts/resolve-ChangeLogs
deleted file mode 100755
index 220682860..000000000
--- a/Tools/Scripts/resolve-ChangeLogs
+++ /dev/null
@@ -1,496 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007, 2008, 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.
-# 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::Copy;
-use File::Path;
-use File::Spec;
-use Getopt::Long;
-use POSIX;
-use VCSUtils;
-
-sub canonicalRelativePath($);
-sub conflictFiles($);
-sub findChangeLog($);
-sub findUnmergedChangeLogs();
-sub fixMergedChangeLogs($;@);
-sub fixOneMergedChangeLog($);
-sub hasGitUnmergedFiles();
-sub isInGitFilterBranch();
-sub parseFixMerged($$;$);
-sub removeChangeLogArguments($);
-sub resolveChangeLog($);
-sub resolveConflict($);
-sub showStatus($;$);
-sub usageAndExit();
-
-my $isGit = isGit();
-my $isSVN = isSVN();
-
-my $SVN = "svn";
-my $GIT = "git";
-
-my $fixMerged;
-my $gitRebaseContinue = 0;
-my $mergeDriver = 0;
-my $printWarnings = 1;
-my $showHelp;
-
-sub usageAndExit()
-{
- print STDERR <<__END__;
-Usage: @{[ basename($0) ]} [options] [path/to/ChangeLog] [path/to/another/ChangeLog ...]
- -c|--[no-]continue run "git rebase --continue" after fixing ChangeLog
- entries (default: --no-continue)
- -f|--fix-merged [revision-range] fix git-merged ChangeLog entries; if a revision-range
- is specified, run git filter-branch on the range
- -m|--merge-driver %O %A %B act as a git merge-driver on files %O %A %B
- -h|--help show this help message
- -w|--[no-]warnings show or suppress warnings (default: show warnings)
-__END__
- exit 1;
-}
-
-my $getOptionsResult = GetOptions(
- 'c|continue!' => \$gitRebaseContinue,
- 'f|fix-merged:s' => \&parseFixMerged,
- 'm|merge-driver!' => \$mergeDriver,
- 'h|help' => \$showHelp,
- 'w|warnings!' => \$printWarnings,
-);
-
-if (!$getOptionsResult || $showHelp) {
- usageAndExit();
-}
-
-my $relativePath = isInGitFilterBranch() ? '.' : chdirReturningRelativePath(determineVCSRoot());
-
-my @changeLogFiles = removeChangeLogArguments($relativePath);
-
-if (!defined $fixMerged && !$mergeDriver && scalar(@changeLogFiles) == 0) {
- @changeLogFiles = findUnmergedChangeLogs();
-}
-
-if (!$mergeDriver && scalar(@ARGV) > 0) {
- print STDERR "ERROR: Files listed on command-line that are not ChangeLogs.\n";
- undef $getOptionsResult;
-} elsif (!defined $fixMerged && !$mergeDriver && scalar(@changeLogFiles) == 0) {
- print STDERR "ERROR: No ChangeLog files listed on command-line or found unmerged.\n";
- undef $getOptionsResult;
-} elsif ($gitRebaseContinue && !$isGit) {
- print STDERR "ERROR: --continue may only be used with a git repository\n";
- undef $getOptionsResult;
-} elsif (defined $fixMerged && !$isGit) {
- print STDERR "ERROR: --fix-merged may only be used with a git repository\n";
- undef $getOptionsResult;
-} elsif ($mergeDriver && !$isGit) {
- print STDERR "ERROR: --merge-driver may only be used with a git repository\n";
- undef $getOptionsResult;
-} elsif ($mergeDriver && scalar(@ARGV) < 3) {
- print STDERR "ERROR: --merge-driver expects %O %A %B as arguments\n";
- undef $getOptionsResult;
-}
-
-if (!$getOptionsResult) {
- usageAndExit();
-}
-
-if (defined $fixMerged && length($fixMerged) > 0) {
- my $commitRange = $fixMerged;
- $commitRange = $commitRange . "..HEAD" if index($commitRange, "..") < 0;
- fixMergedChangeLogs($commitRange, @changeLogFiles);
-} elsif ($mergeDriver) {
- my ($base, $theirs, $ours) = @ARGV;
- if (mergeChangeLogs($ours, $base, $theirs)) {
- unlink($ours);
- copy($theirs, $ours) or die $!;
- } else {
- exec qw(git merge-file -L THEIRS -L BASE -L OURS), $theirs, $base, $ours;
- }
-} 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();
-}
-
-if ($gitRebaseContinue) {
- if (hasGitUnmergedFiles()) {
- print "Unmerged files; skipping '$GIT rebase --continue'.\n";
- } else {
- print "Running '$GIT rebase --continue'...\n";
- print `$GIT rebase --continue`;
- }
-}
-
-exit 0;
-
-sub canonicalRelativePath($)
-{
- my ($originalPath) = @_;
- my $absolutePath = Cwd::abs_path($originalPath);
- return File::Spec->abs2rel($absolutePath, Cwd::getcwd());
-}
-
-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) {
- my $escapedFile = escapeSubversionPath($file);
- open STAT, "-|", $SVN, "status", $escapedFile or 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", $escapedFile or die $!;
- while (my $line = <INFO>) {
- if ($line =~ m/^Revision: ([0-9]+)/) {
- $currentRevision = $1;
- { local $/ = undef; <INFO>; } # Consume rest of input.
- }
- }
- 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 or 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");
- die $! if WEXITSTATUS($?);
- }
- close GIT or die $!;
- } 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($)
-{
- my $changeLogFileName = changeLogFileName();
- return $_[0] if basename($_[0]) eq $changeLogFileName;
-
- my $file = File::Spec->catfile($_[0], $changeLogFileName);
- return $file if -d $_[0] and -e $file;
-
- return undef;
-}
-
-sub findUnmergedChangeLogs()
-{
- my $statCommand = "";
-
- if ($isSVN) {
- $statCommand = "$SVN stat | grep '^C'";
- } elsif ($isGit) {
- $statCommand = "$GIT diff -r --name-status --diff-filter=U -C -C -M";
- } else {
- return ();
- }
-
- my @results = ();
- open STAT, "-|", $statCommand or die "The status failed: $!.\n";
- while (<STAT>) {
- if ($isSVN) {
- my $matches;
- my $file;
- if (isSVNVersion16OrNewer()) {
- $matches = /^([C]).{6} (.+?)[\r\n]*$/;
- $file = $2;
- } else {
- $matches = /^([C]).{5} (.+?)[\r\n]*$/;
- $file = $2;
- }
- if ($matches) {
- $file = findChangeLog(normalizePath($file));
- push @results, $file if $file;
- } else {
- print; # error output from svn stat
- }
- } elsif ($isGit) {
- if (/^([U])\t(.+)$/) {
- my $file = findChangeLog(normalizePath($2));
- push @results, $file if $file;
- } else {
- print; # error output from git diff
- }
- }
- }
- close STAT;
-
- return @results;
-}
-
-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 or die $!;
- push @changedFiles, <GIT>;
- close GIT or 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 or die $!;
- $patch = <GIT>;
- close GIT or die $!;
- }
-
- # Always checkout the previous commit's copy of the ChangeLog
- system($GIT, "checkout", $ENV{MAPPED_PREVIOUS_COMMIT} || "HEAD^", $file);
- die $! if WEXITSTATUS($?);
-
- # 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 or die $!;
- for (my $i = 0; $i < 3; $i++) {
- $newPatch .= " " . <FILE>;
- }
- close FILE;
-
- # Apply the new patch
- open(PATCH, "| patch -p1 $file > " . File::Spec->devnull()) or die $!;
- print PATCH $newPatch;
- close(PATCH) or die $!;
-
- # Run "git add" on the fixed ChangeLog file
- system($GIT, "add", $file);
- die $! if WEXITSTATUS($?);
-
- 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);
- die $! if WEXITSTATUS($?);
- print STDERR "WARNING: Last change to ${file} could not be fixed and re-merged.\n" if $printWarnings;
- }
-}
-
-sub hasGitUnmergedFiles()
-{
- my $output = `$GIT ls-files --unmerged`;
- return $output ne "";
-}
-
-sub isInGitFilterBranch()
-{
- return exists $ENV{MAPPED_PREVIOUS_COMMIT} && $ENV{MAPPED_PREVIOUS_COMMIT};
-}
-
-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 ($baseDir) = @_;
- my @results = ();
-
- for (my $i = 0; $i < scalar(@ARGV); ) {
- my $file = findChangeLog(canonicalRelativePath(File::Spec->catfile($baseDir, $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 (mergeChangeLogs($fileMine, $fileOlder, $fileNewer)) {
- if ($file ne $fileNewer) {
- unlink($file);
- rename($fileNewer, $file) or 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) {
- my $escapedFile = escapeSubversionPath($file);
- system($SVN, "resolved", $escapedFile);
- die $! if WEXITSTATUS($?);
- } elsif ($isGit) {
- system($GIT, "add", $file);
- die $! if WEXITSTATUS($?);
- } else {
- die "Unknown version control system";
- }
-}
-
-sub showStatus($;$)
-{
- my ($file, $isConflictResolved) = @_;
-
- if ($isSVN) {
- my $escapedFile = escapeSubversionPath($file);
- system($SVN, "status", $escapedFile);
- } 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/Tools/Scripts/roll-over-ChangeLogs b/Tools/Scripts/roll-over-ChangeLogs
deleted file mode 100755
index 7e6d32fc6..000000000
--- a/Tools/Scripts/roll-over-ChangeLogs
+++ /dev/null
@@ -1,47 +0,0 @@
-#!/usr/bin/env ruby
-
-# 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.
-
-
-require 'date'
-
-CHANGELOG_SIZE_THRESHOLD = 750 * 1024
-
-scripts_directory = File.dirname(__FILE__)
-base_directory = File.expand_path(ARGV[0] || `perl -I#{scripts_directory} -Mwebkitdirs -e 'print sourceDir();'`)
-
-date_suffix = Date.today.strftime("-%Y-%m-%d")
-
-Dir.chdir base_directory
-`find . -type f -name 'ChangeLog'`.split.each do |path|
- next unless File.stat(path).size > CHANGELOG_SIZE_THRESHOLD
-
- old_path = "#{path}#{date_suffix}"
- puts "Moving #{path} to #{old_path}..."
- system "git", "mv", path, old_path
- File.open path, "w" do |file|
- file.write "== Rolled over to ChangeLog#{date_suffix} ==\n"
- end
- system "git", "add", path
-end
diff --git a/Tools/Scripts/run-api-tests b/Tools/Scripts/run-api-tests
deleted file mode 100755
index ca548fb0a..000000000
--- a/Tools/Scripts/run-api-tests
+++ /dev/null
@@ -1,339 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010, 2011, 2012 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. 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 INC. 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 Getopt::Long qw(:config pass_through);
-use IPC::Open3;
-use lib $FindBin::Bin;
-use webkitdirs;
-use VCSUtils;
-
-sub buildTestTool();
-sub dumpTestsBySuite(\@);
-sub listAllTests();
-sub runTest($$$);
-sub runTestsBySuite(\@$);
-sub prepareEnvironmentForRunningTestTool();
-sub testToolPath();
-
-# Defined in VCSUtils.
-sub possiblyColored($$);
-
-# Timeout for individual test, in sec
-my $timeout = 10;
-
-my $showHelp = 0;
-my $verbose = 0;
-my $dumpTests = 0;
-my $build = 1;
-my $root;
-my $buildDefault = $build ? "build" : "do not build";
-my @testsFailed;
-my @testsTimedOut;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] [suite or test prefixes]
- --help Show this help message
- -v|--verbose Verbose output
- -d|--dump-tests Dump the names of testcases without running them
- --[no-]build Build (or do not build) unit tests prior to running (default: $buildDefault)
- --root= Path to the pre-built root containing TestWebKitAPI
-EOF
-
-GetOptions(
- 'help' => \$showHelp,
- 'verbose|v' => \$verbose,
- 'dump|d' => \$dumpTests,
- 'build!' => \$build,
- 'root=s' => \$root
-);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-setConfiguration();
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-
-buildTestTool() if $build && !defined($root);
-setPathForRunningWebKitApp(\%ENV);
-my @testsToRun = listAllTests();
-
-@testsToRun = grep { my $test = $_; grep { $test =~ m/^\Q$_\E/ } @ARGV; } @testsToRun if @ARGV;
-
-if ($dumpTests) {
- dumpTestsBySuite(@testsToRun);
- exit 0;
-}
-
-exit runTestsBySuite(@testsToRun, $verbose);
-
-sub isSupportedPlatform()
-{
- return isAppleMacWebKit() || isAppleWinWebKit();
-}
-
-sub dumpTestsBySuite(\@)
-{
- my ($tests) = @_;
- print "Dumping test cases\n";
- print "------------------\n";
- my $lastSuite = "";
- for my $suiteAndTest (sort @$tests) {
- my ($suite, $test) = split(/\./, $suiteAndTest);
- if ($lastSuite ne $suite) {
- $lastSuite = $suite;
- print "$suite:\n";
- }
- print " $test\n";
- }
- print "------------------\n";
-}
-
-sub runTestsBySuite(\@$)
-{
- my ($tests, $verbose) = @_;
- my $anyFailures = 0;
- my $lastSuite = "";
- for my $suiteAndTest (sort @$tests) {
- my ($suite, $test) = split(/\./, $suiteAndTest);
- if ($lastSuite ne $suite) {
- $lastSuite = $suite;
- print "Suite: $suite\n" unless $verbose;
- }
- my $failed = runTest($suite, $test, $verbose);
- $anyFailures ||= $failed;
- }
-
- if ($verbose) {
- if (@testsFailed) {
- print "Tests that failed:\n";
- for my $test (@testsFailed) {
- print " $test\n";
- }
- }
- if (@testsTimedOut) {
- print "Tests that timed out:\n";
- for my $test (@testsTimedOut) {
- print " $test\n";
- }
- }
- }
- return $anyFailures;
-}
-
-sub runTest($$$)
-{
- my ($suite, $testName, $verbose) = @_;
- my $test = $suite . "." . $testName;
-
- my $gtestArg = "--gtest_filter=" . $test;
-
- print " Test: $testName -> " unless $verbose;
-
- my $result = 0;
- my $timedOut = 0;
-
- die "run-api-tests is not supported on this platform.\n" unless isSupportedPlatform();
-
- prepareEnvironmentForRunningTestTool();
-
- local *DEVNULL;
- my ($childIn, $childOut, $childErr);
- if ($verbose) {
- $childOut = ">&STDERR";
- $childErr = ">&STDERR";
- } else {
- open(DEVNULL, ">", File::Spec->devnull()) or die "Failed to open /dev/null";
- $childOut = ">&DEVNULL";
- $childErr = ">&DEVNULL";
- }
-
- my $pid;
- if (isAppleMacWebKit() && architecture()) {
- $pid = open3($childIn, $childOut, $childErr, "arch", "-" . architecture(), testToolPath(), $gtestArg, @ARGV) or die "Failed to run test: $test.";
- } else {
- $pid = open3($childIn, $childOut, $childErr, testToolPath(), $gtestArg, @ARGV) or die "Failed to run test: $test.";
- }
-
- close($childIn);
- close($childOut);
- close($childErr);
- close(DEVNULL) unless ($verbose);
- eval {
- local $SIG{ALRM} = sub { die "alarm\n" };
- alarm $timeout;
- waitpid($pid, 0);
- alarm 0;
- $result = $?;
- };
- if ($@) {
- die unless $@ eq "alarm\n";
- kill SIGTERM, $pid or kill SIGKILL, $pid;
- $timedOut = 1;
- }
-
- if ($result) {
- push @testsFailed, $test;
- }
- if ($timedOut) {
- push @testsTimedOut, $test;
- print possiblyColored("bold yellow", "Timeout"), "\n";
- } elsif (!$verbose) {
- if ($result) {
- print possiblyColored("bold red", "Failed"), "\n";
- } else {
- print possiblyColored("bold green", "Passed"), "\n";
- }
- }
-
- return $timedOut || $result;
-}
-
-sub listAllTests()
-{
- my @toolOutput;
- my $timedOut;
-
- die "run-api-tests is not supported on this platform.\n" unless isSupportedPlatform();
-
- prepareEnvironmentForRunningTestTool();
-
- local *DEVNULL;
- my ($childIn, $childOut, $childErr);
- if ($verbose) {
- $childErr = ">&STDERR";
- } else {
- open(DEVNULL, ">", File::Spec->devnull()) or die "Failed to open /dev/null";
- $childErr = ">&DEVNULL";
- }
-
- my $pid;
- if (isAppleMacWebKit() && architecture()) {
- $pid = open3($childIn, $childOut, $childErr, "arch", "-" . architecture(), testToolPath(), "--gtest_list_tests") or die "Failed to build list of tests!";
- } else {
- $pid = open3($childIn, $childOut, $childErr, testToolPath(), "--gtest_list_tests") or die "Failed to build list of tests!";
- }
-
- close($childIn);
- @toolOutput = <$childOut>;
- close($childOut);
- close($childErr);
- close(DEVNULL) unless ($verbose);
-
- waitpid($pid, 0);
- my $result = $?;
-
- if ($result) {
- print STDERR "Failed to build list of tests!\n";
- exit exitStatus($result);
- }
-
- my @tests = ();
- my $suite;
- for my $line (@toolOutput) {
- $line =~ s/[\r\n]*$//;
- if ($line =~ m/\.$/) {
- $suite = $line; # "SuiteName."
- } else {
- # Disabling WebKit2 API test on Windows since we will be disabling WebKit2 on Windows.
- next if (isAppleWinWebKit() && $suite =~ m/WebKit2*/);
- $line =~ s/^\s*//; # "TestName"
- push @tests, $suite . $line; # "SuiteName.TestName"
- }
- }
-
- return @tests;
-}
-
-sub buildTestTool()
-{
- my $originalCwd = getcwd();
-
- chdirWebKit();
-
- my $buildTestTool = "build-api-tests";
- print STDERR "Running $buildTestTool\n";
-
- local *DEVNULL;
- my ($childIn, $childOut, $childErr);
- if ($verbose) {
- # When not quiet, let the child use our stdout/stderr.
- $childOut = ">&STDOUT";
- $childErr = ">&STDERR";
- } else {
- open(DEVNULL, ">", File::Spec->devnull()) or die "Failed to open /dev/null";
- $childOut = ">&DEVNULL";
- $childErr = ">&DEVNULL";
- }
-
- my @args = argumentsForConfiguration();
- my $pathToBuildTestTool = File::Spec->catfile("Tools", "Scripts", $buildTestTool);
- my $buildProcess = open3($childIn, $childOut, $childErr, "perl", $pathToBuildTestTool, @args) or die "Failed to run " . $buildTestTool;
-
- close($childIn);
- close($childOut);
- close($childErr);
- close(DEVNULL) unless ($verbose);
-
- waitpid($buildProcess, 0);
- my $buildResult = $?;
-
- if ($buildResult) {
- print STDERR "Compiling TestWebKitAPI failed!\n";
- exit exitStatus($buildResult);
- }
-
- chdir $originalCwd;
-}
-
-sub prepareEnvironmentForRunningTestTool()
-{
- return unless isAppleMacWebKit();
-
- $ENV{DYLD_FRAMEWORK_PATH} = productDir();
- $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
-}
-
-sub testToolPath()
-{
- my $path = File::Spec->catfile(productDir(), "TestWebKitAPI");
- return $path unless isAppleWinWebKit();
-
- my $suffix;
- if (configurationForVisualStudio() eq "Debug_All") {
- $suffix = "_debug";
- } else {
- $suffix = "";
- }
- return "$path$suffix.exe";
-}
diff --git a/Tools/Scripts/run-bindings-tests b/Tools/Scripts/run-bindings-tests
deleted file mode 100755
index a516d11ac..000000000
--- a/Tools/Scripts/run-bindings-tests
+++ /dev/null
@@ -1,57 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2010 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:
-# 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.
-#
-
-# This script generates h and cpp file for TestObj.idl using code
-# generators. Please execute the script whenever changes are made to
-# CodeGeneratorXXXX.pm, and submit the changes in XXXXTestObj.h/cpp in the same
-# patch. This makes it easier to track and review changes in generated code.
-
-import sys
-from webkitpy.common.system import executive
-
-def main(argv):
- """Runs WebCore bindings code generators on test IDL files and compares
- the results with reference files.
-
- Options:
- --reset-results: Overwrites the reference files with the generated results.
-
- """
- reset_results = "--reset-results" in argv
-
- generators = [
- 'JS',
- 'ObjC',
- 'GObject',
- 'CPP'
- ]
-
- from webkitpy.bindings.main import BindingsTests
-
- return BindingsTests(reset_results, generators, executive.Executive()).main()
-
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv))
diff --git a/Tools/Scripts/run-efl-tests b/Tools/Scripts/run-efl-tests
deleted file mode 100755
index cb6df5b7b..000000000
--- a/Tools/Scripts/run-efl-tests
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2012 Intel Corporation. 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 Intel Corporation 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.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $xvfb_display = ":55";
-
-my $xvfb_pid = fork();
-exit(1) if not defined $xvfb_pid;
-
-# Tell CTest to dump gtest output in case of failure.
-$ENV{CTEST_OUTPUT_ON_FAILURE} = "1";
-$ENV{DISPLAY} = $xvfb_display;
-
-if ($xvfb_pid == 0) {
- # Start Xvfb
- my @xvfb_args = ( "Xvfb $xvfb_display -screen 0 800x600x24 -nolisten tcp > /dev/null 2>&1" );
- exec(@xvfb_args);
-} else {
- setConfiguration();
-
- # Manually add this for jhbuildWrapperPrefixIfNeeded().
- push(@ARGV, "--efl");
-
- my $returnCode = exitStatus(generateBuildSystemFromCMakeProject("Efl", undef, cmakeBasedPortArguments()));
- exit($returnCode) if $returnCode;
-
- $returnCode = exitStatus(buildCMakeGeneratedProject("test"));
-
- # Kill Xvfb
- kill(15, $xvfb_pid);
-
- exit($returnCode);
-}
-
diff --git a/Tools/Scripts/run-fast-jsc b/Tools/Scripts/run-fast-jsc
deleted file mode 100755
index 8e004c447..000000000
--- a/Tools/Scripts/run-fast-jsc
+++ /dev/null
@@ -1,161 +0,0 @@
-#! /bin/sh
-
-# Copyright (C) 2012 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.
-
-# Script to run selected LayoutTests/fast/{js,regex} tests using jsc
-
-jscCmd="/System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc"
-testRoot=/tmp/LayoutTests
-resultsRoot=`date \+/tmp/results-%Y-%m-%d-%H-%M-%S`
-testList="unset"
-
-cmdName=`basename $0`
-
-function usage()
-{
- echo "usage: $cmdName [[--jsc | -j] <path-to-jsc>] [[--results-dir | -r] <results-path>]"
- echo " [[--test-root | -t] <test-root-path>] [[--test-list | -l] <test-list-file>]"
- exit 1
-}
-
-while [ $# -gt 1 ]
-do
- case $1 in
- --jsc|-j)
- jscCmd=$2
- ;;
- --results-dir|-r)
- resultsRoot=$2
- ;;
- --test-root|-t)
- testRoot=$2
- ;;
- --test-list|-l)
- testList=$2
- ;;
- *)
- echo "Unrecognized option \"$1\""
- usage
- ;;
- esac
-
- shift 2
-done
-
-if [ $# -gt 0 ]
-then
- echo "Extra argument \"$1\""
- usage
-fi
-
-if [ $testList = "unset" ]
-then
- testList=$testRoot/fast/js/jsc-test-list
-fi
-
-preScript=$testRoot/fast/js/resources/standalone-pre.js
-postScript=$testRoot/fast/js/resources/standalone-post.js
-passList=$resultsRoot/passed
-failList=$resultsRoot/failed
-crashList=$resultsRoot/crashed
-
-numTestsRun=0
-numPassed=0
-numFailed=0
-numCrashed=0
-
-rm -rf $resultsRoot
-rm -f jsc-tests-passed jsc-tests-failed
-
-for test in `cat $testList`
-do
- testPassed=0
- testCrashed=0
- testName=`basename $test`
- dirName=`dirname $test`
-
- expectedOut="$testRoot/$dirName/${testName}-expected.txt"
- actualOut="$resultsRoot/$dirName/${testName}-out.txt"
- actualErr="$resultsRoot/$dirName/${testName}-err.txt"
- diffOut="$resultsRoot/$dirName/${testName}-diff.txt"
- jsTest="$testRoot/$dirName/script-tests/${testName}.js"
-
- if [ ! -d "$resultsRoot/$dirName" ]
- then
- mkdir -p "$resultsRoot/$dirName"
- fi
-
- if [ -f $expectedOut -a -f $jsTest ]
- then
- echo "Testing $test ... \c"
- let numTestsRun=$numTestsRun+1
- $jscCmd $preScript $jsTest $postScript 2>$actualErr > $actualOut
- JSC_RES=$?
-
- if [ $JSC_RES -eq 0 ]
- then
- diff $actualOut $expectedOut > $diffOut
- if [ $? -eq 0 ]
- then
- testPassed=1
- echo "PASSED"
- else
- testPassed=0
- echo "FAILED"
- fi
- else
- testPassed=0
- if [ $JSC_RES -gt 128 ]
- then
- testCrashed=1
- echo "CRASHED"
- else
- echo "ERROR: $JSC_RES"
- fi
- fi
-
- if [ $testPassed -eq 1 ]
- then
- echo "$test" >> $passList
- let numPassed=$numPassed+1
- else
- echo "$test" >> $failList
- let numFailed=$numFailed+1
- if [ $testCrashed -eq 1 ]
- then
- echo "$test" >> $crashList
- let numCrashed=$numCrashed+1
- fi
- fi
- fi
-done
-
-if [ $numPassed -eq $numTestsRun ]
-then
- echo "All $numTestsRun tests passed!" | tee $resultsRoot/summary
-else
- echo "$numPassed tests passed, $numFailed tests failed, $numCrashed tests crashed." | tee $resultsRoot/summary
-fi
-
-echo "Test results in $resultsRoot"
diff --git a/Tools/Scripts/run-gtk-tests b/Tools/Scripts/run-gtk-tests
index 883ed56e0..752d4893e 100755
--- a/Tools/Scripts/run-gtk-tests
+++ b/Tools/Scripts/run-gtk-tests
@@ -22,7 +22,7 @@ import os
import sys
import optparse
import re
-from signal import alarm, signal, SIGALRM, SIGKILL
+from signal import alarm, signal, SIGALRM, SIGKILL, SIGSEGV
from gi.repository import Gio, GLib
top_level_directory = os.path.normpath(os.path.join(os.path.dirname(__file__), "..", ".."))
@@ -34,11 +34,12 @@ import jhbuildutils
class SkippedTest:
ENTIRE_SUITE = None
- def __init__(self, test, test_case, reason, bug=None):
+ def __init__(self, test, test_case, reason, bug, build_type=None):
self.test = test
self.test_case = test_case
self.reason = reason
self.bug = bug
+ self.build_type = build_type
def __str__(self):
skipped_test_str = "%s" % self.test
@@ -46,72 +47,94 @@ class SkippedTest:
if not(self.skip_entire_suite()):
skipped_test_str += " [%s]" % self.test_case
- skipped_test_str += ": %s " % self.reason
- if self.bug is not None:
- skipped_test_str += "(https://bugs.webkit.org/show_bug.cgi?id=%d)" % self.bug
+ skipped_test_str += ": %s (https://bugs.webkit.org/show_bug.cgi?id=%d)" % (self.reason, self.bug)
return skipped_test_str
def skip_entire_suite(self):
return self.test_case == SkippedTest.ENTIRE_SUITE
+ def skip_for_build_type(self, build_type):
+ if self.build_type is None:
+ return True;
+
+ return self.build_type == build_type
+
class TestTimeout(Exception):
pass
class TestRunner:
- TEST_DIRS = [ "unittests", "WebKit2APITests", "TestWebKitAPI" ]
+ TEST_DIRS = [ "WebKit2Gtk", "WebKit2", "JavaScriptCore", "WTF", "WebCore" ]
SKIPPED = [
- SkippedTest("unittests/testdownload", "/webkit/download/not-found", "Test fails in GTK Linux 64-bit Release bot", 82329),
- SkippedTest("unittests/testwebinspector", "/webkit/webinspector/close-and-inspect", "Test is flaky in GTK Linux 32-bit Release bot", 82869),
- SkippedTest("unittests/testwebresource", "/webkit/webresource/loading", "Test fails", 104689),
- SkippedTest("unittests/testwebresource", "/webkit/webresource/sub_resource_loading", "Test fails in GTK Linux 64-bit Release bot", 82330),
- SkippedTest("unittests/testwebview", "/webkit/webview/icon-uri", "Test times out in GTK Linux 64-bit Release bot", 82328),
- SkippedTest("unittests/testatk", "/webkit/atk/getTextInParagraphAndBodyModerate", "Test fails", 105538),
- SkippedTest("WebKit2APITests/TestResources", "/webkit2/WebKitWebView/resources", "Test is flaky in GTK Linux 32-bit Release bot", 82868),
- SkippedTest("WebKit2APITests/TestWebKitAccessibility", "/webkit2/WebKitAccessibility/atspi-basic-hierarchy", "Test fails", 100408),
- SkippedTest("WebKit2APITests/TestWebKitWebView", SkippedTest.ENTIRE_SUITE, "Test times out after r150890", 117689),
- SkippedTest("WebKit2APITests/TestContextMenu", SkippedTest.ENTIRE_SUITE, "Test times out after r150890", 117689),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.CanHandleRequest", "Test fails", 88453),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.MouseMoveAfterCrash", "Test is flaky", 85066),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.NewFirstVisuallyNonEmptyLayoutForImages", "Test is flaky", 85066),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.NewFirstVisuallyNonEmptyLayoutFrames", "Test fails", 85037),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.RestoreSessionStateContainingFormData", "Session State is not implemented in GTK+ port", 84960),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.SpacebarScrolling", "Test fails", 84961),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.WKConnection", "Tests fail and time out out", 84959),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.WKPageGetScaleFactorNotZero", "Test fails and times out", 88455),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.ForceRepaint", "Test times out", 105532),
- SkippedTest("TestWebKitAPI/TestWebKit2", "WebKit2.ReloadPageAfterCrash", "Test flakily times out", 110129),
+ SkippedTest("WebKit2Gtk/TestUIClient", "/webkit2/WebKitWebView/mouse-target", "Test times out after r150890", 117689),
+ SkippedTest("WebKit2Gtk/TestCookieManager", "/webkit2/WebKitCookieManager/persistent-storage", "Test is flaky", 134580),
+ SkippedTest("WebKit2Gtk/TestWebViewEditor", "/webkit2/WebKitWebView/editable/editable", "Test hits an assertion in Debug builds", 151654, "Debug"),
+ SkippedTest("WebKit2Gtk/TestWebExtensions", "/webkit2/WebKitWebView/install-missing-plugins-permission-request", "Test times out", 147822),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.MouseMoveAfterCrash", "Test is flaky", 85066),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.NewFirstVisuallyNonEmptyLayoutForImages", "Test is flaky", 85066),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.NewFirstVisuallyNonEmptyLayoutFrames", "Test fails", 85037),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.SpacebarScrolling", "Test fails", 84961),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.WKConnection", "Tests fail and time out out", 84959),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.ForceRepaint", "Test times out", 105532),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.ReloadPageAfterCrash", "Test flakily times out", 110129),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.DidAssociateFormControls", "Test times out", 120302),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.InjectedBundleFrameHitTest", "Test times out", 120303),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.TerminateTwice", "Test causes crash on the next test", 121970),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.GeolocationTransitionToHighAccuracy", "Test causes crash on the next test", 125068),
+ SkippedTest("WebKit2/TestWebKit2", "WebKit2.GeolocationTransitionToLowAccuracy", "Test causes crash on the next test", 125068),
+ SkippedTest("WebKit2/UserMedia", "WebKit2.UserMediaBasic", "We will not test by default until the upgrade gstreamer to 1.9", 153540),
+ ]
+
+ SLOW = [
+ "WTF_Lock.ContendedShortSection",
+ "WTF_WordLock.ContendedShortSection"
]
def __init__(self, options, tests=[]):
self._options = options
+
self._build_type = "Debug" if self._options.debug else "Release"
+ common.set_build_types((self._build_type,))
- self._programs_path = common.build_path_for_build_types((self._build_type,), "Programs")
+ self._programs_path = common.binary_build_path()
self._tests = self._get_tests(tests)
- self._skipped_tests = TestRunner.SKIPPED
- if not sys.stdout.isatty():
- self._tty_colors_pattern = re.compile("\033\[[0-9;]*m")
+ self._skipped_tests = [skipped for skipped in TestRunner.SKIPPED if skipped.skip_for_build_type(self._build_type)]
+ self._disabled_tests = []
# These SPI daemons need to be active for the accessibility tests to work.
self._spi_registryd = None
self._spi_bus_launcher = None
- def _get_tests(self, tests):
+ def _test_programs_base_dir(self):
+ return os.path.join(self._programs_path, "TestWebKitAPI")
+
+ def _get_tests_from_dir(self, test_dir):
+ if not os.path.isdir(test_dir):
+ return []
+
+ tests = []
+ for test_file in os.listdir(test_dir):
+ if not test_file.lower().startswith("test"):
+ continue
+ test_path = os.path.join(test_dir, test_file)
+ if os.path.isfile(test_path) and os.access(test_path, os.X_OK):
+ tests.append(test_path)
+ return tests
+
+ def _get_tests(self, initial_tests):
+ tests = []
+ for test in initial_tests:
+ if os.path.isdir(test):
+ tests.extend(self._get_tests_from_dir(test))
+ else:
+ tests.append(test)
if tests:
return tests
tests = []
for test_dir in self.TEST_DIRS:
- absolute_test_dir = os.path.join(self._programs_path, test_dir)
- if not os.path.isdir(absolute_test_dir):
- continue
- for test_file in os.listdir(absolute_test_dir):
- if not test_file.lower().startswith("test"):
- continue
- test_path = os.path.join(self._programs_path, test_dir, test_file)
- if os.path.isfile(test_path) and os.access(test_path, os.X_OK):
- tests.append(test_path)
+ absolute_test_dir = os.path.join(self._test_programs_base_dir(), test_dir)
+ tests.extend(self._get_tests_from_dir(absolute_test_dir))
return tests
def _lookup_atspi2_binary(self, filename):
@@ -132,7 +155,7 @@ class TestRunner:
return False
try:
- self._ally_bus_launcher = subprocess.Popen([spi_bus_launcher_path], env=self._test_env)
+ self._spi_bus_launcher = subprocess.Popen([spi_bus_launcher_path], env=self._test_env)
except:
sys.stderr.write("Failed to launch the accessibility bus\n")
sys.stderr.flush()
@@ -154,14 +177,12 @@ class TestRunner:
return True
- def _setup_testing_environment(self):
- self._test_env = os.environ
+ def _run_xvfb(self):
+ self._xvfb = None
+ if not self._options.use_xvfb:
+ return True
+
self._test_env["DISPLAY"] = self._options.display
- self._test_env["WEBKIT_INSPECTOR_PATH"] = os.path.abspath(os.path.join(self._programs_path, 'resources', 'inspector'))
- self._test_env['GSETTINGS_BACKEND'] = 'memory'
- self._test_env["TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"] = common.top_level_path("Tools", "TestWebKitAPI", "Tests", "WebKit2")
- self._test_env["TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_PATH"] = common.build_path_for_build_types((self._build_type,), "Libraries")
- self._test_env["WEBKIT_EXEC_PATH"] = self._programs_path
try:
self._xvfb = subprocess.Popen(["Xvfb", self._options.display, "-screen", "0", "800x600x24", "-nolisten", "tcp"],
@@ -171,10 +192,23 @@ class TestRunner:
sys.stderr.flush()
return False
+ return True
+
+ def _setup_testing_environment(self):
+ self._test_env = os.environ
+ self._test_env['GSETTINGS_BACKEND'] = 'memory'
+ self._test_env["TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"] = common.top_level_path("Tools", "TestWebKitAPI", "Tests", "WebKit2")
+ self._test_env["TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_PATH"] = common.library_build_path()
+ self._test_env["WEBKIT_EXEC_PATH"] = self._programs_path
+ self._test_env["OWR_USE_TEST_SOURCES"] = '1'
+
+ if not self._run_xvfb():
+ return False
+
# If we cannot start the accessibility daemons, we can just skip the accessibility tests.
if not self._start_accessibility_daemons():
- print "Could not start accessibility bus, so skipping TestWebKitAccessibility"
- self._skipped_tests.append(SkippedTest("WebKit2APITests/TestWebKitAccessibility", SkippedTest.ENTIRE_SUITE, "Could not start accessibility bus"))
+ print "Could not start accessibility bus, so disabling TestWebKitAccessibility"
+ self._disabled_tests.append("WebKit2APITests/TestWebKitAccessibility")
return True
def _tear_down_testing_environment(self):
@@ -182,7 +216,8 @@ class TestRunner:
self._spi_registryd.terminate()
if self._spi_bus_launcher:
self._spi_bus_launcher.terminate()
- self._xvfb.terminate()
+ if self._xvfb:
+ self._xvfb.terminate()
def _test_cases_to_skip(self, test_program):
if self._options.skipped_action != 'skip':
@@ -195,8 +230,13 @@ class TestRunner:
return test_cases
def _should_run_test_program(self, test_program):
- # This is not affected by the command-line arguments, since programs are skipped for
- # problems in the harness, such as failing to start the accessibility bus.
+ for disabled_test in self._disabled_tests:
+ if test_program.endswith(disabled_test):
+ return False
+
+ if self._options.skipped_action != 'skip':
+ return True
+
for skipped in self._skipped_tests:
if test_program.endswith(skipped.test) and skipped.skip_entire_suite():
return False
@@ -226,10 +266,7 @@ class TestRunner:
if child_pid[0] == -1:
child_pid[0] = self._get_child_pid_from_test_output(line)
- if sys.stdout.isatty():
- sys.stdout.write(line)
- else:
- sys.stdout.write(self._tty_colors_pattern.sub('', line.replace('\r', '')))
+ sys.stdout.write(line)
def waitpid(pid):
while True:
@@ -278,10 +315,10 @@ class TestRunner:
# process. This child is dead, we can't get the status.
status = 0
- return not return_code_from_exit_status(status)
+ return return_code_from_exit_status(status)
def _run_test_glib(self, test_program):
- tester_command = ['gtester']
+ tester_command = ['gtester', '-k']
if self._options.verbose:
tester_command.append('--verbose')
for test_case in self._test_cases_to_skip(test_program):
@@ -290,26 +327,60 @@ class TestRunner:
return self._run_test_command(tester_command, self._options.timeout)
- def _run_test_google(self, test_program):
- tester_command = [test_program]
- skipped_tests_cases = self._test_cases_to_skip(test_program)
- if skipped_tests_cases:
- tester_command.append("--gtest_filter=-%s" % ":".join(skipped_tests_cases))
+ def _get_tests_from_google_test_suite(self, test_program):
+ try:
+ output = subprocess.check_output([test_program, '--gtest_list_tests'])
+ except subprocess.CalledProcessError:
+ sys.stderr.write("ERROR: could not list available tests for binary %s.\n" % (test_program))
+ sys.stderr.flush()
+ return 1
+
+ skipped_test_cases = self._test_cases_to_skip(test_program)
- return self._run_test_command(tester_command, self._options.timeout)
+ tests = []
+ prefix = None
+ for line in output.split('\n'):
+ if not line.startswith(' '):
+ prefix = line
+ continue
+ else:
+ test_name = prefix + line.strip()
+ if not test_name in skipped_test_cases:
+ tests.append(test_name)
+ return tests
+
+ def _run_google_test(self, test_program, subtest):
+ test_command = [test_program, '--gtest_filter=%s' % (subtest)]
+ timeout = self._options.timeout
+ if subtest in TestRunner.SLOW:
+ timeout *= 5
+
+ status = self._run_test_command(test_command, timeout)
+ if status == -SIGSEGV:
+ sys.stdout.write("**CRASH** %s\n" % subtest)
+ sys.stdout.flush()
+ return status
+
+ def _run_google_test_suite(self, test_program):
+ retcode = 0
+ for subtest in self._get_tests_from_google_test_suite(test_program):
+ if self._run_google_test(test_program, subtest):
+ retcode = 1
+ return retcode
def _run_test(self, test_program):
- if "unittests" in test_program or "WebKit2APITests" in test_program:
+ basedir = os.path.basename(os.path.dirname(test_program))
+ if basedir in ["WebKit2Gtk", "WebKitGtk"]:
return self._run_test_glib(test_program)
- if "TestWebKitAPI" in test_program:
- return self._run_test_google(test_program)
+ if basedir in ["WebKit2", "JavaScriptCore", "WTF", "WebCore", "WebCoreGtk"]:
+ return self._run_google_test_suite(test_program)
- return False
+ return 1
def run_tests(self):
if not self._tests:
- sys.stderr.write("ERROR: tests not found in %s.\n" % (self._programs_path))
+ sys.stderr.write("ERROR: tests not found in %s.\n" % (self._test_programs_base_dir()))
sys.stderr.flush()
return 1
@@ -320,30 +391,40 @@ class TestRunner:
# some tests might be skipped while setting up the test environment.
self._tests = [test for test in self._tests if self._should_run_test_program(test)]
+ crashed_tests = []
failed_tests = []
timed_out_tests = []
try:
for test in self._tests:
- success = True
+ exit_status_code = 0
try:
- success = self._run_test(test)
+ exit_status_code = self._run_test(test)
except TestTimeout:
sys.stdout.write("TEST: %s: TIMEOUT\n" % test)
sys.stdout.flush()
timed_out_tests.append(test)
- if not success:
+ if exit_status_code == -SIGSEGV:
+ sys.stdout.write("TEST: %s: CRASHED\n" % test)
+ sys.stdout.flush()
+ crashed_tests.append(test)
+ elif exit_status_code != 0:
failed_tests.append(test)
finally:
self._tear_down_testing_environment()
if failed_tests:
- names = [test.replace(self._programs_path, '', 1) for test in failed_tests]
+ names = [test.replace(self._test_programs_base_dir(), '', 1) for test in failed_tests]
sys.stdout.write("Tests failed (%d): %s\n" % (len(names), ", ".join(names)))
sys.stdout.flush()
+ if crashed_tests:
+ names = [test.replace(self._test_programs_base_dir(), '', 1) for test in crashed_tests]
+ sys.stdout.write("Tests that crashed (%d): %s\n" % (len(names), ", ".join(names)))
+ sys.stdout.flush()
+
if timed_out_tests:
- names = [test.replace(self._programs_path, '', 1) for test in timed_out_tests]
+ names = [test.replace(self._test_programs_base_dir(), '', 1) for test in timed_out_tests]
sys.stdout.write("Tests that timed out (%d): %s\n" % (len(names), ", ".join(names)))
sys.stdout.flush()
@@ -380,6 +461,8 @@ if __name__ == "__main__":
option_parser.add_option('-t', '--timeout',
action='store', type='int', dest='timeout', default=10,
help='Time in seconds until a test times out')
+ option_parser.add_option('--no-xvfb', action='store_false', dest='use_xvfb', default=True,
+ help='Do not run tests under Xvfb')
options, args = option_parser.parse_args()
sys.exit(TestRunner(options, args).run_tests())
diff --git a/Tools/Scripts/run-iexploder-tests b/Tools/Scripts/run-iexploder-tests
deleted file mode 100755
index cb696a27a..000000000
--- a/Tools/Scripts/run-iexploder-tests
+++ /dev/null
@@ -1,142 +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 File::Spec;
-use FindBin;
-use Getopt::Long;
-use IPC::Open2;
-
-use lib $FindBin::Bin;
-use webkitperl::httpd;
-use webkitdirs;
-
-sub configureAndOpenHTTPDIfNeeded();
-sub runSafariWithIExploder();
-
-# Argument handling
-my $guardMalloc = '';
-my $httpdPort = 8000;
-my $downloadTest;
-my $iExploderTestDirectory = "/tmp/iExploderTest";
-
-GetOptions(
- 'guard-malloc|g' => \$guardMalloc,
- 'get=s' => \$downloadTest,
- 'port=i' => \$httpdPort
-);
-
-
-setConfiguration();
-my $productDir = productDir();
-
-chdirWebKit();
-
-checkFrameworks();
-
-my $isHttpdOpen = 0;
-configureAndOpenHTTPDIfNeeded();
-
-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' $iExploderTestDirectory/access_log.txt | tail -n -5 | awk -F'[ =&\\?]' '{if (\$8 == \"lookup\") print \$11; else print \$9}'";
-}
-
-rmtree $iExploderTestDirectory;
-$isHttpdOpen = !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, ">", "$iExploderTestDirectory/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;
-
- if (!isAppleWebKit()) {
- system "Tools/Scripts/run-launcher", "$iExploderTestDirectory/redirect.html";
- } else {
- local %ENV;
- $ENV{DYLD_INSERT_LIBRARIES} = "/usr/lib/libgmalloc.dylib" if $guardMalloc;
- system "Tools/Scripts/run-safari", "-NSOpen", "$iExploderTestDirectory/redirect.html";
- }
-}
-
-sub configureAndOpenHTTPDIfNeeded()
-{
- return if $isHttpdOpen;
- mkdir $iExploderTestDirectory;
- my $webkitDirectory = getcwd();
- my $testDirectory = $webkitDirectory . "/LayoutTests";
- my $iExploderDirectory = $webkitDirectory . "/Tools/iExploder/iExploder-1.3.2";
-
- my $httpdConfig = getHTTPDConfigPathForTestDirectory($testDirectory);
-
- 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";
-
-
- my @args = (
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- "-C", "Listen $listen",
- "-c", "TypesConfig \"$typesConfig\"",
- "-c", "CustomLog \"$iExploderTestDirectory/access_log.txt\" common",
- "-c", "ErrorLog \"$iExploderTestDirectory/error_log.txt\"",
- "-c", "SSLCertificateFile \"$sslCertificate\"",
- # Apache wouldn't run CGIs with permissions==700 otherwise
- "-c", "User \"#$<\""
- );
-
- $isHttpdOpen = openHTTPD(@args);
-}
diff --git a/Tools/Scripts/run-inspector-perf-tests.py b/Tools/Scripts/run-inspector-perf-tests.py
deleted file mode 100755
index 92082f760..000000000
--- a/Tools/Scripts/run-inspector-perf-tests.py
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 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.
-
-"""Run Inspector's perf tests in perf mode."""
-
-import logging
-import sys
-
-from webkitpy.performance_tests.perftestsrunner import PerfTestsRunner
-
-_log = logging.getLogger(__name__)
-
-if '__main__' == __name__:
- logging.basicConfig(level=logging.INFO, format="%(message)s")
- sys.exit(PerfTestsRunner(args=['inspector']).run())
diff --git a/Tools/Scripts/run-javascriptcore-tests b/Tools/Scripts/run-javascriptcore-tests
deleted file mode 100755
index 8b79f2514..000000000
--- a/Tools/Scripts/run-javascriptcore-tests
+++ /dev/null
@@ -1,214 +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 WebKit 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;
-
-# determine configuration
-setConfiguration();
-my $configuration = configuration();
-
-my @testsToSkip = (
- # Various ecma/Date tests sometimes fail on Windows (but not Mac) https://bugs.webkit.org/show_bug.cgi?id=25160
- "ecma/Date/15.9.2.1.js",
- "ecma/Date/15.9.2.2-1.js",
- "ecma/Date/15.9.2.2-2.js",
- "ecma/Date/15.9.2.2-3.js",
- "ecma/Date/15.9.2.2-4.js",
- "ecma/Date/15.9.2.2-5.js",
- "ecma/Date/15.9.2.2-6.js",
- # ecma_3/Date/15.9.5.7.js fails on Mac (but not Windows) https://bugs.webkit.org/show_bug.cgi?id=25161
- "ecma_3/Date/15.9.5.6.js",
- "ecma_3/Date/15.9.5.7.js",
- # These three fail on Linux in certain time zones, at certain times
- # of the year (!): https://bugs.webkit.org/show_bug.cgi?id=71371
- "ecma/Date/15.9.5.14.js",
- "ecma/Date/15.9.5.31-1.js",
- "ecma/Date/15.9.5.34-1.js",
-);
-
-my $jsDriverArgs = "-L " . join(" ", @testsToSkip);
-# These variables are intentionally left undefined.
-my $root;
-my $showHelp;
-
-my $buildJSC = 1;
-
-my $programName = basename($0);
-my $buildJSCDefault = $buildJSC ? "will check" : "will not check";
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --jsDriver-args= A string of arguments to pass to jsDriver.pl
- --root= Path to pre-built root containing jsc
- --[no-]build Check (or don't check) to see if the jsc build is up-to-date (default: $buildJSCDefault)
-EOF
-
-GetOptions(
- 'j|jsDriver-args=s' => \$jsDriverArgs,
- 'root=s' => \$root,
- 'build!' => \$buildJSC,
- 'help' => \$showHelp
-);
-
-# Assume any arguments left over from GetOptions are assumed to be build arguments
-my @buildArgs = @ARGV;
-
-# Arguments passed to --jsDriver-args (if any) are passed to jsDriver.pl
-my @jsArgs = split(" ", $jsDriverArgs);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-
-if (!defined($root) && $buildJSC) {
- chdirWebKit();
-
- push(@buildArgs, argumentsForConfiguration());
-
- print "Running: build-jsc " . join(" ", @buildArgs) . "\n";
- my $buildResult = system "perl", "Tools/Scripts/build-jsc", @buildArgs;
- if ($buildResult) {
- print STDERR "Compiling jsc failed!\n";
- exit exitStatus($buildResult);
- }
-}
-
-
-my $productDir = jscProductDir();
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-setPathForRunningWebKitApp(\%ENV) if isCygwin();
-
-sub testapiPath($)
-{
- my ($productDir) = @_;
- my $jscName = "testapi";
- $jscName .= "_debug" if configurationForVisualStudio() eq "Debug_All";
- return "$productDir/$jscName";
-}
-
-#run api tests
-if (isAppleMacWebKit() || isAppleWinWebKit()) {
- chdirWebKit();
- chdir($productDir) or die "Failed to switch directory to '$productDir'\n";
- my $path = testapiPath($productDir);
- # Use an "indirect object" so that system() won't get confused if the path
- # contains spaces (see perldoc -f exec).
- my $testapiResult = system { $path } $path;
- exit exitStatus($testapiResult) if $testapiResult;
-}
-
-# Find JavaScriptCore directory
-chdirWebKit();
-chdir("Source/JavaScriptCore");
-chdir "tests/mozilla" or die "Failed to switch directory to 'tests/mozilla'\n";
-printf "Running: jsDriver.pl -e squirrelfish -s %s -f actual.html %s\n", jscPath($productDir), join(" ", @jsArgs);
-my @jsDriverCmd = ("perl", "jsDriver.pl", "-e", "squirrelfish", "-s", jscPath($productDir), "-f", "actual.html", @jsArgs);
-if (isGtk() || isEfl()) {
- my @jhbuildPrefix = sourceDir() . "/Tools/jhbuild/jhbuild-wrapper";
-
- if (isEfl()) {
- push(@jhbuildPrefix, '--efl');
- } elsif (isGtk()) {
- push(@jhbuildPrefix, '--gtk');
- }
- push(@jhbuildPrefix, 'run');
-
- unshift(@jsDriverCmd, @jhbuildPrefix);
-}
-my $result = system(@jsDriverCmd);
-exit exitStatus($result) if $result;
-
-my %failures;
-
-open EXPECTED, "expected.html" or die "Failed to open 'expected.html'\n";
-while (<EXPECTED>) {
- last if /failures reported\.$/;
-}
-while (<EXPECTED>) {
- chomp;
- $failures{$_} = 1;
-}
-close EXPECTED;
-
-my %newFailures;
-
-open ACTUAL, "actual.html" or die "Failed to open 'actual.html'";
-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/Tools/Scripts/run-jsc b/Tools/Scripts/run-jsc
deleted file mode 100755
index 82943c0a1..000000000
--- a/Tools/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 File::Spec;
-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);
-
-my $jsc = jscProductDir() . "/jsc @ARGV";
-$jsc .= " 2> " . File::Spec->devnull() unless $verbose;
-
-my $dyld = jscProductDir();
-
-$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/Tools/Scripts/run-launcher b/Tools/Scripts/run-launcher
deleted file mode 100755
index 66886fe0b..000000000
--- a/Tools/Scripts/run-launcher
+++ /dev/null
@@ -1,90 +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();
-
-# 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');
- if (isWK2()) {
- $launcherPath = catdir($launcherPath, "bin", "MiniBrowser");
- } else {
- $launcherPath = catdir($launcherPath, "bin", "QtTestBrowser");
- }
-
- $ENV{QTWEBKIT_PLUGIN_PATH} = catdir($libDir, 'plugins');
-
- print "Starting webkit launcher, running against the built WebKit in $libDir...\n";
- if (isDarwin()) {
- $ENV{DYLD_LIBRARY_PATH} = $ENV{DYLD_LIBRARY_PATH} ? "$libDir:$ENV{DYLD_LIBRARY_PATH}" : $libDir;
- $ENV{DYLD_FRAMEWORK_PATH} = $ENV{DYLD_FRAMEWORK_PATH} ? "$libDir:$ENV{DYLD_FRAMEWORK_PATH}" : $libDir;
- } else {
- $ENV{LD_LIBRARY_PATH} = $ENV{LD_LIBRARY_PATH} ? "$libDir:$ENV{LD_LIBRARY_PATH}" : $libDir;
- }
-} else {
-
- if (isGtk()) {
- if (isWK2()) {
- unshift(@ARGV, catdir($launcherPath, "Programs", "MiniBrowser"));
- } else {
- unshift(@ARGV, catdir($launcherPath, "Programs", "GtkLauncher"));
- }
- $launcherPath = catdir(sourceDir(), "Tools", "jhbuild", "jhbuild-wrapper");
- unshift(@ARGV, ("--gtk", "run"));
- }
-
- if (isEfl()) {
- if (isWK2()) {
- unshift(@ARGV, catdir($launcherPath, "bin", "MiniBrowser"));
- } else {
- unshift(@ARGV, catdir($launcherPath, "bin", "EWebLauncher"));
- }
- $launcherPath = catdir(sourceDir(), "Tools", "jhbuild", "jhbuild-wrapper");
- unshift(@ARGV, ("--efl", "run"));
- }
-
- print "Starting webkit launcher.\n";
-}
-
-exec $launcherPath, @ARGV or die;
-
diff --git a/Tools/Scripts/run-leaks b/Tools/Scripts/run-leaks
deleted file mode 100755
index 4642637dd..000000000
--- a/Tools/Scripts/run-leaks
+++ /dev/null
@@ -1,218 +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
-
- # Skip header section until the first two "Process " lines.
- # FIXME: In the future we may wish to propagate the header section through to our output.
- until ($leaksOutput->[0] =~ /^Process /) {
- shift @$leaksOutput;
- }
-
- 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/Tools/Scripts/run-mangleme-tests b/Tools/Scripts/run-mangleme-tests
deleted file mode 100755
index 10196ef10..000000000
--- a/Tools/Scripts/run-mangleme-tests
+++ /dev/null
@@ -1,176 +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 File::Spec;
-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", "Tools/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 "Tools/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 " . File::Spec->devnull() . " $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/Tools/Scripts/run-minibrowser b/Tools/Scripts/run-minibrowser
deleted file mode 100755
index c84165195..000000000
--- a/Tools/Scripts/run-minibrowser
+++ /dev/null
@@ -1,40 +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 launching the WebKit2 MiniBrowser.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
-
-setConfiguration();
-
-exit exitStatus(runMiniBrowser());
diff --git a/Tools/Scripts/run-pageloadtest b/Tools/Scripts/run-pageloadtest
deleted file mode 100755
index 3542aa9a9..000000000
--- a/Tools/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 = "PerformanceTests/PageLoad/$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/Tools/Scripts/run-perf-tests b/Tools/Scripts/run-perf-tests
deleted file mode 100755
index 1bf8ec862..000000000
--- a/Tools/Scripts/run-perf-tests
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-"""Run performance tests."""
-
-import logging
-import sys
-
-from webkitpy.performance_tests.perftestsrunner import PerfTestsRunner
-
-if '__main__' == __name__:
- logging.basicConfig(level=logging.INFO, format="%(message)s")
-
- sys.exit(PerfTestsRunner().run())
diff --git a/Tools/Scripts/run-qtwebkit-tests b/Tools/Scripts/run-qtwebkit-tests
deleted file mode 100755
index ea8d4093c..000000000
--- a/Tools/Scripts/run-qtwebkit-tests
+++ /dev/null
@@ -1,437 +0,0 @@
-#!/usr/bin/env python
-# -*- coding: utf-8 -*-
-
-#Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
-
-#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.
-
-from __future__ import with_statement
-
-import sys
-import os
-import re
-import logging
-from subprocess import Popen, PIPE, STDOUT
-from optparse import OptionParser
-
-
-class Log(object):
- def __init__(self, name):
- self._log = logging.getLogger(name)
- self.debug = self._log.debug
- self.warn = self._log.warn
- self.error = self._log.error
- self.exception = self._log.exception
- self.info = self._log.info
-
-
-class Options(Log):
- """ Option manager. It parses and checks script's parameters, sets an internal variable. """
-
- def __init__(self, args):
- Log.__init__(self, "Options")
- log = self._log
- opt = OptionParser("%prog [options] [PathToSearch].\nTry -h or --help.")
- opt.add_option("-j", "--parallel-level", action="store", type="int",
- dest="parallel_level", default=None,
- help="Number of parallel processes executing the Qt's tests. Default: cpu count.")
- opt.add_option("-v", "--verbose", action="store", type="int",
- dest="verbose", default=2,
- help="Verbose level (0 - quiet, 1 - errors only, 2 - infos and warnings, 3 - debug information). Default: %default.")
- opt.add_option("", "--tests-options", action="store", type="string",
- dest="tests_options", default="",
- help="Parameters passed to Qt's tests (for example '-eventdelay 123').")
- opt.add_option("-o", "--output-file", action="store", type="string",
- dest="output_file", default="/tmp/qtwebkittests.html",
- help="File where results will be stored. The file will be overwritten. Default: %default.")
- opt.add_option("-b", "--browser", action="store", dest="browser",
- default="xdg-open",
- help="Browser in which results will be opened. Default %default.")
- opt.add_option("", "--do-not-open-results", action="store_false",
- dest="open_results", default=True,
- help="The results shouldn't pop-up in a browser automatically")
- opt.add_option("-d", "--developer-mode", action="store_true",
- dest="developer", default=False,
- help="Special mode for debugging. In general it simulates human behavior, running all autotests. In the mode everything is executed synchronously, no html output will be generated, no changes or transformation will be applied to stderr or stdout. In this mode options; parallel-level, output-file, browser and do-not-open-results will be ignored.")
- opt.add_option("-t", "--timeout", action="store", type="int",
- dest="timeout", default=0,
- help="Timeout in seconds for each testsuite. Zero value means that there is not timeout. Default: %default.")
- opt.add_option("--release", action="store_true", dest="release", default=True,
- help="Run API tests in WebKitBuild/Release/... directory. It is ignored if PathToSearch is passed.")
- opt.add_option("--debug", action="store_false", dest="release",
- help="Run API tests in WebKitBuild/Debug/... directory. It is ignored if PathToSearch is passed.")
- opt.add_option("-2", "--webkit2", action="store_true", dest="webkit2", default=False,
- help="Run WebKit2 API tests. Default: Run WebKit1 API tests. It is ignored if PathToSearch is passed.")
-
- self._o, self._a = opt.parse_args(args)
- verbose = self._o.verbose
- if verbose == 0:
- logging.basicConfig(level=logging.CRITICAL,)
- elif verbose == 1:
- logging.basicConfig(level=logging.ERROR,)
- elif verbose == 2:
- logging.basicConfig(level=logging.INFO,)
- elif verbose == 3:
- logging.basicConfig(level=logging.DEBUG,)
- else:
- logging.basicConfig(level=logging.INFO,)
- log.warn("Bad verbose level, switching to default.")
-
- if self._o.release:
- configuration = "Release"
- else:
- configuration = "Debug"
-
- if self._o.webkit2:
- test_directory = "WebKit2/UIProcess/API/qt/tests/"
- else:
- test_directory = "WebKit/qt/tests/"
-
- try:
- if len(self._a) == 0:
- self._o.path = "WebKitBuild/%s/Source/%s" % (configuration, test_directory)
- else:
- if len(self._a) > 1:
- raise IndexError("Only one directory should be provided.")
- self._o.path = self._a[0]
-
- if not os.path.exists(self._o.path):
- raise Exception("Given path doesn't exist.")
- except IndexError:
- log.error("Bad usage. Please try -h or --help.")
- sys.exit(1)
- except Exception:
- log.error("Path '%s' doesn't exist", self._o.path)
- sys.exit(2)
-
- if self._o.developer:
- if not self._o.parallel_level is None:
- log.warn("Developer mode sets parallel-level option to one.")
- self._o.parallel_level = 1
- self._o.open_results = False
-
- def __getattr__(self, attr):
- """ Maps all options properties into this object (remove one level of indirection). """
- return getattr(self._o, attr)
-
-
-def run_test(args):
- """ Runs one given test.
- args should contain a tuple with 3 elements;
- TestSuiteResult containing full file name of an autotest executable.
- str with options that should be passed to the autotest executable
- bool if true then the stdout will be buffered and separated from the stderr, if it is false
- then the stdout and the stderr will be merged together and left unbuffered (the TestSuiteResult output will be None).
- int time after which the autotest executable would be killed
- """
- log = logging.getLogger("Exec")
- test_suite, options, buffered, timeout = args
- timer = None
- try:
- log.info("Running... %s", test_suite.test_file_name())
- if buffered:
- tst = Popen([test_suite.test_file_name()] + options.split(), stdout=PIPE, stderr=None)
- else:
- tst = Popen([test_suite.test_file_name()] + options.split(), stdout=None, stderr=STDOUT)
- if timeout:
- from threading import Timer
- log.debug("Setting timeout timer %i sec on %s (process %s)", timeout, test_suite.test_file_name(), tst.pid)
- def process_killer():
- try:
- try:
- tst.terminate()
- except AttributeError:
- # Workaround for python version < 2.6 it can be removed as soon as we drop support for python2.5
- try:
- import ctypes
- PROCESS_TERMINATE = 1
- handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, tst.pid)
- ctypes.windll.kernel32.TerminateProcess(handle, -1)
- ctypes.windll.kernel32.CloseHandle(handle)
- except AttributeError:
- # windll is not accessible so we are on *nix like system
- import signal
- os.kill(tst.pid, signal.SIGTERM)
- log.error("Timeout, process '%s' (%i) was terminated", test_suite.test_file_name(), tst.pid)
- except OSError, e:
- # the process was finished before got killed
- pass
- timer = Timer(timeout, process_killer)
- timer.start()
- except OSError, e:
- log.exception("Can't open an autotest file: '%s'. Skipping the test...", e.filename)
- else:
- test_suite.set_output(tst.communicate()[0]) # takes stdout only, in developer mode it would be None.
- log.info("Finished %s", test_suite.test_file_name())
- if timeout:
- timer.cancel()
- return test_suite
-
-
-class TestSuiteResult(object):
- """ Keeps information about a test. """
-
- def __init__(self):
- self._output = None
- self._test_file_name = None
-
- def set_output(self, xml):
- if xml:
- self._output = xml.strip()
-
- def output(self):
- return self._output
-
- def set_test_file_name(self, file_name):
- self._test_file_name = file_name
-
- def test_file_name(self):
- return self._test_file_name
-
-
-class Main(Log):
- """ The main script. All real work is done in run() method. """
-
- def __init__(self, options):
- Log.__init__(self, "Main")
- self._options = options
- if options.parallel_level > 1 or options.parallel_level is None:
- try:
- from multiprocessing import Pool
- except ImportError:
- self.warn("Import Error: the multiprocessing module couldn't be loaded (may be lack of python-multiprocessing package?). The Qt autotests will be executed one by one.")
- options.parallel_level = 1
- if options.parallel_level == 1:
-
- class Pool(object):
- """ A hack, created to avoid problems with multiprocessing module, this class is single thread replacement for the multiprocessing.Pool class. """
- def __init__(self, processes):
- pass
-
- def imap_unordered(self, func, files):
- return map(func, files)
-
- def map(self, func, files):
- return map(func, files)
-
- self._Pool = Pool
-
- def run(self):
- """ Find && execute && publish results of all test. "All in one" function. """
- # This is needed for Qt finding our QML modules. The current code makes our
- # two existing API tests (WK1 API and WK2 UI process API) work correctly.
- qml_import_path = self._options.path + "../../../../imports"
- qml_import_path += ":" + self._options.path + "../../../../../../imports"
- os.putenv("QML_IMPORT_PATH", qml_import_path)
- path = os.getenv("PATH")
- path += ":" + self._options.path + "../../../../../../bin"
- os.putenv("PATH", path)
- self.debug("Searching executables...")
- tests_executables = self.find_tests_paths(self._options.path)
- self.debug("Found: %s", len(tests_executables))
- self.debug("Executing tests...")
- results = self.run_tests(tests_executables)
- if not self._options.developer:
- self.debug("Transforming...")
- transformed_results = self.transform(results)
- self.debug("Publishing...")
- self.announce_results(transformed_results)
-
- def find_tests_paths(self, path):
- """ Finds all tests executables inside the given path. """
- executables = []
- for root, dirs, files in os.walk(path):
- # Check only for a file that name starts from 'tst_' and that we can execute.
- filtered_path = filter(lambda w: w.startswith('tst_') and os.access(os.path.join(root, w), os.X_OK), files)
- filtered_path = map(lambda w: os.path.join(root, w), filtered_path)
- for file_name in filtered_path:
- r = TestSuiteResult()
- r.set_test_file_name(file_name)
- executables.append(r)
- return executables
-
- def run_tests(self, files):
- """ Executes given files by using a pool of workers. """
- workers = self._Pool(processes=self._options.parallel_level)
- # to each file add options.
- self.debug("Using %s the workers pool, number of workers %i", repr(workers), self._options.parallel_level)
- package = map(lambda w: [w, self._options.tests_options, not self._options.developer, self._options.timeout], files)
- self.debug("Generated packages for workers: %s", repr(package))
- results = workers.map(run_test, package) # Collects results.
- return results
-
- def transform(self, results):
- """ Transforms list of the results to specialized versions. """
- stdout = self.convert_to_stdout(results)
- html = self.convert_to_html(results)
- return {"stdout": stdout, "html": html}
-
- def announce_results(self, results):
- """ Shows the results. """
- self.announce_results_stdout(results['stdout'])
- self.announce_results_html(results['html'])
-
- def announce_results_stdout(self, results):
- """ Show the results by printing to the stdout."""
- print(results)
-
- def announce_results_html(self, results):
- """ Shows the result by creating a html file and calling a web browser to render it. """
- with file(self._options.output_file, 'w') as f:
- f.write(results)
- if self._options.open_results:
- Popen(self._options.browser + " " + self._options.output_file, stdout=None, stderr=None, shell=True)
-
- def check_crash_occurences(self, results):
- """ Checks if any test crashes and it sums them """
- totals = [0,0,0]
- crash_count = 0
- txt = []
- #collecting results into one container with checking crash
- for result in results:
- found = None
- if result.output():
- txt.append(result.output())
- found = re.search(r"([0-9]+) passed, ([0-9]+) failed, ([0-9]+) skipped", result.output())
-
- if found:
- totals = reduce(lambda x, y: (int(x[0]) + int(y[0]), int(x[1]) + int(y[1]), int(x[2]) + int(y[2])), (totals, found.groups()))
- else:
- txt.append('CRASHED: %s' % result.test_file_name())
- crash_count += 1
- self.warn("Missing sub-summary: %s" % result.test_file_name())
-
- txt='\n\n'.join(txt)
-
- totals = list(totals)
- totals.append(crash_count)
- totals = map(str, totals)
- return txt, totals
-
- def convert_to_stdout(self, results):
- """ Converts results, that they could be nicely presented in the stdout. """
- txt, totals = self.check_crash_occurences(results)
-
- totals = "%s passed, %s failed, %s skipped, %s crashed" % (totals[0], totals[1], totals[2], totals[3])
-
- txt += '\n' + '*' * 70
- txt += "\n**" + ("TOTALS: " + totals).center(66) + '**'
- txt += '\n' + '*' * 70 + '\n'
- return txt
-
- def convert_to_html(self, results):
- """ Converts results, that they could showed as a html page. """
- txt, totals = self.check_crash_occurences(results)
- txt = txt.replace('&', '&amp;').replace('<', "&lt;").replace('>', "&gt;")
- # Add a color and a style.
- txt = re.sub(r"([* ]+(Finished)[ a-z_A-Z0-9]+[*]+)",
- lambda w: r"",
- txt)
- txt = re.sub(r"([*]+[ a-z_A-Z0-9]+[*]+)",
- lambda w: "<case class='good'><br><br><b>" + w.group(0) + r"</b></case>",
- txt)
- txt = re.sub(r"(Config: Using QTest library)((.)+)",
- lambda w: "\n<case class='good'><br><i>" + w.group(0) + r"</i> ",
- txt)
- txt = re.sub(r"\n(PASS)((.)+)",
- lambda w: "</case>\n<case class='good'><br><status class='pass'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(FAIL!)((.)+)",
- lambda w: "</case>\n<case class='bad'><br><status class='fail'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(XPASS)((.)+)",
- lambda w: "</case>\n<case class='bad'><br><status class='xpass'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(XFAIL)((.)+)",
- lambda w: "</case>\n<case class='good'><br><status class='xfail'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(SKIP)((.)+)",
- lambda w: "</case>\n<case class='good'><br><status class='xfail'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(QWARN)((.)+)",
- lambda w: "</case>\n<case class='bad'><br><status class='warn'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(RESULT)((.)+)",
- lambda w: "</case>\n<case class='good'><br><status class='benchmark'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(QFATAL|CRASHED)((.)+)",
- lambda w: "</case>\n<case class='bad'><br><status class='crash'>" + w.group(1) + r"</status>" + w.group(2),
- txt)
- txt = re.sub(r"\n(Totals:)([0-9', a-z]*)",
- lambda w: "</case>\n<case class='good'><br><b>" + w.group(1) + r"</b>" + w.group(2) + "</case>",
- txt)
- # Find total count of failed, skipped, passed and crashed tests.
- totals = "%s passed, %s failed, %s skipped, %s crashed." % (totals[0], totals[1], totals[2], totals[3])
- # Create a header of the html source.
- txt = """
- <html>
- <head>
- <script>
- function init() {
- // Try to find the right styleSheet (this document could be embedded in an other html doc)
- for (i = document.styleSheets.length - 1; i >= 0; --i) {
- if (document.styleSheets[i].cssRules[0].selectorText == "case.good") {
- resultStyleSheet = i;
- return;
- }
- }
- // The styleSheet hasn't been found, but it should be the last one.
- resultStyleSheet = document.styleSheets.length - 1;
- }
-
- function hide() {
- document.styleSheets[resultStyleSheet].cssRules[0].style.display='none';
- }
-
- function show() {
- document.styleSheets[resultStyleSheet].cssRules[0].style.display='';
- }
-
- </script>
- <style type="text/css">
- case.good {color:black}
- case.bad {color:black}
- status.pass {color:green}
- status.crash {color:red}
- status.fail {color:red}
- status.xpass {color:663300}
- status.xfail {color:004500}
- status.benchmark {color:000088}
- status.warn {color:orange}
- status.crash {color:red; text-decoration:blink; background-color:black}
- </style>
- </head>
- <body onload="init()">
- <center>
- <h1>Qt's autotests results</h1>%(totals)s<br>
- <hr>
- <form>
- <input type="button" value="Show failures only" onclick="hide()"/>
- &nbsp;
- <input type="button" value="Show all" onclick="show()"/>
- </form>
- </center>
- <hr>
- %(results)s
- </body>
- </html>""" % {"totals": totals, "results": txt}
- return txt
-
-
-if __name__ == '__main__':
- options = Options(sys.argv[1:])
- main = Main(options)
- main.run()
diff --git a/Tools/Scripts/run-regexp-tests b/Tools/Scripts/run-regexp-tests
deleted file mode 100755
index dc35ce98c..000000000
--- a/Tools/Scripts/run-regexp-tests
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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 run the WebKit Open Source Project Regular Expression functional tests.
-
-use strict;
-use FindBin;
-use Getopt::Long qw(:config pass_through);
-use lib $FindBin::Bin;
-use webkitdirs;
-use POSIX;
-
-# determine configuration
-setConfiguration();
-my $configuration = configuration();
-
-my $defaultTestFile = "RegExpTest.data";
-
-# These variables are intentionally left undefined.
-my $root;
-my $testFile;
-my $showHelp;
-my $verbose;
-
-my $buildJSC = 1;
-
-my $programName = basename($0);
-my $buildJSCDefault = $buildJSC ? "will check" : "will not check";
-my $usage = <<EOF;
-Usage: $programName [options] [options to pass to build system]
- --help Show this help message
- --file= File to use instead of default ($defaultTestFile)
- --root= Path to pre-built root containing jsc
- --[no-]build Check (or don't check) to see if the jsc build is up-to-date (default: $buildJSCDefault)
- --verbose Increase test output on failures
-EOF
-
-GetOptions(
- 'verbose' => \$verbose,
- 'root=s' => \$root,
- 'file=s' => \$testFile,
- 'build!' => \$buildJSC,
- 'help' => \$showHelp
-);
-
-# Assume any arguments left over from GetOptions are assumed to be build arguments
-my @buildArgs = @ARGV;
-
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-setConfigurationProductDir(Cwd::abs_path($root)) if (defined($root));
-
-if (!defined($root) && $buildJSC) {
- chdirWebKit();
-
- push(@buildArgs, argumentsForConfiguration());
-
- print "Running: build-jsc " . join(" ", @buildArgs) . "\n";
- my $buildResult = system "perl", "Tools/Scripts/build-jsc", @buildArgs;
- if ($buildResult) {
- print STDERR "Compiling jsc failed!\n";
- exit exitStatus($buildResult);
- }
-}
-
-my $productDir = jscProductDir();
-$ENV{DYLD_FRAMEWORK_PATH} = $productDir;
-setPathForRunningWebKitApp(\%ENV) if isCygwin();
-
-sub testapiPath($)
-{
- my ($productDir) = @_;
- my $jscName = "testapi";
- $jscName .= "_debug" if configurationForVisualStudio() eq "Debug_All";
- return "$productDir/$jscName";
-}
-
-# Find JavaScriptCore directory
-if (!defined($testFile)) {
- $testFile = $defaultTestFile;
- chdirWebKit();
- chdir("Source/JavaScriptCore");
- chdir "tests/regexp" or die;
-}
-
-my $command = $productDir . "/testRegExp";
-
-if (defined($verbose) && $verbose) {
- $command .= " --verbose";
-}
-
-$command .= " " . $testFile;
-
-printf "Running: " . $command . "\n";
-my $result = system $command;
-exit exitStatus($result) if $result;
-
diff --git a/Tools/Scripts/run-safari b/Tools/Scripts/run-safari
deleted file mode 100755
index 8688a9364..000000000
--- a/Tools/Scripts/run-safari
+++ /dev/null
@@ -1,43 +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 lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
-
-setConfiguration();
-
-# Check to see that all the frameworks are built.
-checkFrameworks();
-
-exit exitStatus(runSafari());
diff --git a/Tools/Scripts/run-sunspider b/Tools/Scripts/run-sunspider
deleted file mode 100755
index 4aec3010d..000000000
--- a/Tools/Scripts/run-sunspider
+++ /dev/null
@@ -1,126 +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 $runInstruments = 0;
-my $suite = "";
-my $ubench = 0;
-my $v8suite = 0;
-my $parseonly = 0;
-my $setBaseline = 0;
-my $showHelp = 0;
-my $testsPattern;
-my $noBuild = 0;
-
-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
- --instruments Sample with the Mac OS X "Instruments" tool (Time Profile) (implies --runs=1)
- --suite Select a specific benchmark suite. The default is sunspider-0.9.1
- --ubench Use microbenchmark suite instead of regular tests. Same as --suite=ubench
- --v8-suite Use the V8 benchmark suite. Same as --suite=v8-v4
- --parse-only Use the parse-only benchmark suite. Same as --suite=parse-only
- --no-build Do not try to build JSC before running the tests.
-EOF
-
-GetOptions('root=s' => sub { my ($x, $value) = @_; $root = $value; setConfigurationProductDir(Cwd::abs_path($root)); },
- 'runs=i' => \$testRuns,
- 'set-baseline' => \$setBaseline,
- 'instruments' => \$runInstruments,
- 'suite=s' => \$suite,
- 'ubench' => \$ubench,
- 'v8-suite' => \$v8suite,
- 'parse-only' => \$parseonly,
- 'tests=s' => \$testsPattern,
- 'help' => \$showHelp,
- 'no-build' => \$noBuild);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-sub buildJSC
-{
- if (!defined($root)){
- push(@ARGV, "--" . $configuration);
-
- chdirWebKit();
- my $buildResult = system currentPerlPath(), "Tools/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.
-}
-
-unless ($noBuild) {
- buildJSC();
-}
-
-chdirWebKit();
-chdir("PerformanceTests/SunSpider");
-
-my $productDir = jscProductDir();
-
-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, "--instruments" if $runInstruments;
-push @args, "--suite=${suite}" if $suite;
-push @args, "--ubench" if $ubench;
-push @args, "--v8-suite" if $v8suite;
-push @args, "--parse-only" if $parseonly;
-push @args, "--tests", $testsPattern if $testsPattern;
-
-exec currentPerlPath(), "./sunspider", @args;
diff --git a/Tools/Scripts/run-test-runner b/Tools/Scripts/run-test-runner
deleted file mode 100755
index b474eb593..000000000
--- a/Tools/Scripts/run-test-runner
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010 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. 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 INC. 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 launching the WebKit2 WebKitTestRunner.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
-
-setConfiguration();
-
-exit exitStatus(runWebKitTestRunner());
diff --git a/Tools/Scripts/run-test-webkit-api b/Tools/Scripts/run-test-webkit-api
deleted file mode 100755
index 90b27f7c6..000000000
--- a/Tools/Scripts/run-test-webkit-api
+++ /dev/null
@@ -1,40 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2010 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 launching TestWebKitAPI.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
-
-setConfiguration();
-
-exit exitStatus(runTestWebKitAPI());
diff --git a/Tools/Scripts/run-webkit-app b/Tools/Scripts/run-webkit-app
deleted file mode 100755
index d0c17f515..000000000
--- a/Tools/Scripts/run-webkit-app
+++ /dev/null
@@ -1,46 +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;
-
-printHelpAndExitForRunAndDebugWebKitAppIfNeeded();
-
-setConfiguration();
-
-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();
-
-my $appPath = shift(@ARGV);
-exit exitStatus(runMacWebKitApp($appPath, USE_OPEN_COMMAND));
diff --git a/Tools/Scripts/run-webkit-httpd b/Tools/Scripts/run-webkit-httpd
deleted file mode 100755
index af4d4f375..000000000
--- a/Tools/Scripts/run-webkit-httpd
+++ /dev/null
@@ -1,97 +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) 2011 Research In Motion Limited. 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.
-
-# Script to run Apache with the same configuration as used in http layout tests.
-
-use strict;
-use warnings;
-
-use Cwd;
-use File::Path;
-use File::Basename;
-use Getopt::Long;
-use FindBin;
-
-use lib $FindBin::Bin;
-use webkitperl::httpd;
-use webkitdirs;
-
-# FIXME: Dynamic HTTP-port configuration in this file is wrong. The various
-# apache config files in LayoutTests/http/config govern the port numbers.
-# Dynamic configuration as-written will also cause random failures in
-# an IPv6 environment. See https://bugs.webkit.org/show_bug.cgi?id=37104.
-# 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();
-my $testDirectory = File::Spec->catfile(getcwd(), "LayoutTests");
-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";
-}
-setShouldWaitForUserInterrupt();
-print "Press Ctrl+C to stop it.\n\n";
-
-my @args = (
- "-C", "Listen $listen",
- "-c", "CustomLog |/usr/bin/tee common",
- "-c", "ErrorLog |/usr/bin/tee",
- # 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 off"
-);
-
-my @defaultArgs = getDefaultConfigForTestDirectory($testDirectory);
-@args = (@defaultArgs, @args);
-openHTTPD(@args);
diff --git a/Tools/Scripts/run-webkit-tests b/Tools/Scripts/run-webkit-tests
deleted file mode 100755
index fd507e49a..000000000
--- a/Tools/Scripts/run-webkit-tests
+++ /dev/null
@@ -1,100 +0,0 @@
-#!/usr/bin/perl
-# Copyright (C) 2010 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 file is a temporary hack.
-# It will be removed as soon as all platforms are are ready to move to
-# new-run-webkit-tests and we can then update the buildbots to explicitly
-# call old-run-webkit-tests for any platforms which will never support
-# a Python run-webkit-tests.
-
-# This is intentionally written in Perl to guarantee support on
-# the same set of platforms as old-run-webkit-tests currently supports.
-# The buildbot master.cfg also currently passes run-webkit-tests to
-# perl directly instead of executing it in a shell.
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-sub runningOnBuildBot()
-{
- # This is a hack to detect if we're running on the buildbot so we can
- # pass --verbose to new-run-webkit-tests. This will be removed when we
- # update the buildbot config to call new-run-webkit-tests explicitly.
- my %isBuildBotUser = ("apple" => 1, "buildbot" => 1, "webkitbuildbot" => 1, "slave" => 1, "buildslave-1" => 1, "chrome-bot" => 1);
- return $isBuildBotUser{$ENV{"USER"}};
-}
-
-sub useNewRunWebKitTests()
-{
- # NRWT does not support qt-arm: https://bugs.webkit.org/show_bug.cgi?id=64086
- return 0 if isQt() and isARM();
- # All other platforms should use NRWT by default.
- return 1;
-}
-
-my $script = "perl";
-my $harnessName = "old-run-webkit-tests";
-
-if (useNewRunWebKitTests()) {
- $script = "python";
- $harnessName = "new-run-webkit-tests";
-
- if (runningOnBuildBot()) {
- push(@ARGV, "--debug-rwt-logging");
- }
-}
-
-# webkitdirs.pm strips --qt and --gtk from @ARGV when we call isQt/isGtk.
-# We have to add back any --PORT arguments which may have been removed by isPort() checks above.
-if (isQt()) {
- my $isPlatformSet = 0;
- for (@ARGV){
- # Pass --qt if platform isn't passed explicitly (eg. qt-5.0, qt-wk2, ...)
- if(/^--platform.*/){
- $isPlatformSet = 1;
- }
- }
- push(@ARGV, "--qt") if(!$isPlatformSet);
-} elsif (isGtk()) {
- push(@ARGV, "--gtk");
-} elsif (isEfl()) {
- push(@ARGV, "--efl");
-} elsif (isWinCairo()) {
- push(@ARGV, "--wincairo");
-}
-
-my $harnessPath = File::Spec->catfile(relativeScriptsDir(), $harnessName);
-unshift(@ARGV, $harnessPath);
-unshift(@ARGV, $script);
-system(@ARGV) == 0 or die "Failed to execute $harnessPath";
diff --git a/Tools/Scripts/run-webkit-websocketserver b/Tools/Scripts/run-webkit-websocketserver
deleted file mode 100755
index d03095172..000000000
--- a/Tools/Scripts/run-webkit-websocketserver
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl
-# Copyright (C) 2009 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.
-
-# Script to run Web Socket server.
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use IPC::Open2;
-
-use lib $FindBin::Bin;
-use webkitdirs;
-
-sub closeWebSocketServer();
-sub openWebSocketServer();
-
-my $webSocketPort = 8880;
-
-my $srcDir = sourceDir();
-my $layoutTestsName = "$srcDir/LayoutTests";
-my $testDirectory = File::Spec->rel2abs($layoutTestsName);
-my $webSocketServerPidFile = "$testDirectory/websocket.pid";
-
-
-print "Starting Web Socket server...\n";
-openWebSocketServer();
-print "Started.\n";
-print "Hit [ENTER] to stop it.";
-<STDIN>;
-print "Stopping Web Socket server...\n";
-closeWebSocketServer();
-print "Stopped.\n";
-exit 0;
-
-sub openWebSocketServer()
-{
- my $webSocketHandlerDir = "$testDirectory";
-
- my @args = (
- "$srcDir/Tools/Scripts/new-run-webkit-websocketserver",
- "--server", "start",
- "--port", "$webSocketPort",
- "--root", "$webSocketHandlerDir",
- "--pidfile", "$webSocketServerPidFile"
- );
- system "/usr/bin/python", @args;
-}
-
-sub closeWebSocketServer()
-{
- my @args = (
- "$srcDir/Tools/Scripts/new-run-webkit-websocketserver",
- "--server", "stop",
- "--pidfile", "$webSocketServerPidFile"
- );
- system "/usr/bin/python", @args;
- unlink "$webSocketServerPidFile";
-}
-
-
diff --git a/Tools/Scripts/sampstat b/Tools/Scripts/sampstat
deleted file mode 100755
index 72ba2b70d..000000000
--- a/Tools/Scripts/sampstat
+++ /dev/null
@@ -1,98 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2007, 2012 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.
-
-import math
-import sys
-import re
-import fileinput
-from optparse import OptionParser
-
-usage = "usage: %prog [options] [FILES]\n Compute the mean and 95% confidence interval of a sample set.\n Standard input or files must contain two or more decimal numbers, one per line."
-parser = OptionParser(usage=usage)
-parser.add_option("-u", "--unit", dest="unit", default="",
- help="assume values are in units of UNIT", metavar="UNIT")
-parser.add_option("-v", "--verbose",
- action="store_true", dest="verbose", default=False,
- help="print all values (with units)")
-(options, files) = parser.parse_args()
-
-def sum(items):
- return reduce(lambda x,y: x+y, items)
-
-def arithmeticMean(items):
- return sum(items) / len(items)
-
-def standardDeviation(mean, items):
- deltaSquares = [(item - mean) ** 2 for item in items]
- return math.sqrt(sum(deltaSquares) / (len(items) - 1))
-
-def standardError(stdDev, items):
- return stdDev / math.sqrt(len(items))
-
-# t-distribution for 2-sided 95% confidence intervals
-tDistribution = [float('NaN'), float('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]
-tMax = len(tDistribution)
-tLimit = 1.96
-
-def tDist(n):
- if n > tMax:
- return tLimit
- return tDistribution[n]
-
-def twoSidedConfidenceInterval(items):
- mean = arithmeticMean(items)
- stdDev = standardDeviation(mean, items)
- stdErr = standardError(stdDev, items)
- return tDist(len(items)) * stdErr
-
-results = []
-
-decimalNumberPattern = re.compile(r"\d+\.?\d*")
-for line in fileinput.input(files):
- match = re.search(decimalNumberPattern, line)
- if match:
- results.append(float(match.group(0)))
-
-if len(results) == 0:
- parser.print_help()
- quit()
-
-
-mean = arithmeticMean(results)
-confidenceInterval = twoSidedConfidenceInterval(results)
-confidencePercent = 100 * confidenceInterval / mean
-
-if options.verbose:
- length = 7
- for item in results:
- line = " %.2f %s" % (item, options.unit)
- print line
- length = len(line) if len(line) > length else length
-
- print "-" * length
-
-prefix = "Mean: " if options.verbose else ""
-print "%s%.2f %s +/- %.2f %s (%.1f%%)" % (prefix, mean, options.unit, confidenceInterval, options.unit, confidencePercent)
-
diff --git a/Tools/Scripts/set-webkit-configuration b/Tools/Scripts/set-webkit-configuration
deleted file mode 100755
index 49922566c..000000000
--- a/Tools/Scripts/set-webkit-configuration
+++ /dev/null
@@ -1,79 +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 $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options]
- --32-bit Set the default architecture to 32-bit
- --64-bit Set the default architecture to 64-bit
- --debug Set the default configuration to debug
- --release Set the default configuration to release
-EOF
-
-my $configuration = passedConfiguration();
-my $architecture = passedArchitecture();
-
-if (!$architecture) {
- # Handle --64-bit explicitly here, as we don't want our other scripts to accept it
- for my $i (0 .. $#ARGV) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--64-bit$/i) {
- splice(@ARGV, $i, 1);
- $architecture = 'x86_64';
- }
- }
-}
-
-if (!$configuration && !$architecture) {
- print STDERR $usage;
- exit 1;
-}
-
-my $baseProductDir = baseProductDir();
-system "mkdir", "-p", "$baseProductDir";
-
-if ($configuration) {
- open CONFIGURATION, ">", "$baseProductDir/Configuration" or die;
- print CONFIGURATION $configuration;
- close CONFIGURATION;
-}
-
-if ($architecture) {
- if ($architecture ne "x86_64") {
- open ARCHITECTURE, ">", "$baseProductDir/Architecture" or die;
- print ARCHITECTURE $architecture;
- close ARCHITECTURE;
- } else {
- unlink "$baseProductDir/Architecture";
- }
-}
diff --git a/Tools/Scripts/show-pretty-diff b/Tools/Scripts/show-pretty-diff
deleted file mode 100755
index be426c014..000000000
--- a/Tools/Scripts/show-pretty-diff
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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. 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 INC. 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 File::Temp qw(tempfile);
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $inputPath = "";
-if ($ARGV[0]) {
- $inputPath = $ARGV[0]
-} else {
- # Create a temporary file for STDIN.
- # FIXME: We can probably avoid putting this on the disk by directly piping
- # to prettify.rb via IPC::Open2.
- my $inputTempFileHandle;
- ($inputTempFileHandle, $inputPath) = tempfile(
- "inputtemp-XXXXXXXX",
- DIR => File::Spec->tmpdir(),
- SUFFIX => ".diff",
- UNLINK => 0,
- );
-
- while (<STDIN>) {
- print $inputTempFileHandle $_;
- }
-
- close($inputTempFileHandle);
-}
-
-# Create a temporary file for prettified patch.
-my ($prettydiffFileHandle, $prettydiffPath) = tempfile(
- "prettydiff-XXXXXXXX",
- DIR => File::Spec->tmpdir(),
- SUFFIX => ".html",
- UNLINK => 0,
-);
-close($prettydiffFileHandle);
-
-my $prettyPatchDir = sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/";
-my $prettyPatchTool = sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/prettify.rb";
-
-my $pathToPrettify = "ruby -I " . sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/ " . sourceDir() . "/Websites/bugs.webkit.org/PrettyPatch/prettify.rb";
-system "$pathToPrettify " . quotemeta($inputPath) . " > $prettydiffPath";
-
-if (isAppleMacWebKit()) {
- system "open", $prettydiffPath;
-} elsif (isCygwin()) {
- system "cygstart",$prettydiffPath;
-} elsif (isWindows()) {
- system "start", $prettydiffPath;
-} elsif (isLinux() && `which xdg-open`) {
- system "xdg-open", $prettydiffPath;
-} else {
- print "Created prettified diff at " . $prettydiffPath . ".";
-}
diff --git a/Tools/Scripts/sort-Xcode-project-file b/Tools/Scripts/sort-Xcode-project-file
deleted file mode 100755
index 705b41d54..000000000
--- a/Tools/Scripts/sort-Xcode-project-file
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2007, 2008, 2009, 2010 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 "children" and "files" sections in Xcode project.pbxproj files
-
-use strict;
-
-use File::Basename;
-use File::Spec;
-use File::Temp qw(tempfile);
-use Getopt::Long;
-
-sub sortChildrenByFileName($$);
-sub sortFilesByFileName($$);
-
-# Files (or products) without extensions
-my %isFile = map { $_ => 1 } qw(
- create_hash_table
- jsc
- minidom
- testapi
- testjsglue
-);
-
-my $printWarnings = 1;
-my $showHelp;
-
-my $getOptionsResult = GetOptions(
- 'h|help' => \$showHelp,
- 'w|warnings!' => \$printWarnings,
-);
-
-if (scalar(@ARGV) == 0 && !$showHelp) {
- 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) =~ /\.xcodeproj$/) {
- $projectFile = File::Spec->catfile($projectFile, "project.pbxproj");
- }
-
- if (basename($projectFile) ne "project.pbxproj") {
- print STDERR "WARNING: Not an Xcode project file: $projectFile\n" if $printWarnings;
- next;
- }
-
- # Grab the mainGroup for the project file
- my $mainGroup = "";
- open(IN, "< $projectFile") || die "Could not open $projectFile: $!";
- while (my $line = <IN>) {
- $mainGroup = $2 if $line =~ m#^(\s*)mainGroup = ([0-9A-F]{24} /\* .+ \*/);$#;
- }
- close(IN);
-
- 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);
- };
-
- my @lastTwo = ();
- 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 sortFilesByFileName @files;
- print $OUT $endMarker;
- } elsif ($line =~ /^(\s*)children = \(\s*$/) {
- print $OUT $line;
- my $endMarker = $1 . ");";
- my @children;
- while (my $childLine = <IN>) {
- if ($childLine =~ /^\Q$endMarker\E\s*$/) {
- $endMarker = $childLine;
- last;
- }
- push @children, $childLine;
- }
- if ($lastTwo[0] =~ m#^\s+\Q$mainGroup\E = \{$#) {
- # Don't sort mainGroup
- print $OUT @children;
- } else {
- print $OUT sort sortChildrenByFileName @children;
- }
- print $OUT $endMarker;
- } else {
- print $OUT $line;
- }
-
- push @lastTwo, $line;
- shift @lastTwo if scalar(@lastTwo) > 2;
- }
- close(IN);
- close($OUT);
-
- unlink($projectFile) || die "Could not delete $projectFile: $!";
- rename($tempFileName, $projectFile) || die "Could not rename $tempFileName to $projectFile: $!";
-}
-
-exit 0;
-
-sub sortChildrenByFileName($$)
-{
- my ($a, $b) = @_;
- my $aFileName = $1 if $a =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/,$/;
- my $bFileName = $1 if $b =~ /^\s*[A-Z0-9]{24} \/\* (.+) \*\/,$/;
- my $aSuffix = $1 if $aFileName =~ m/\.([^.]+)$/;
- my $bSuffix = $1 if $bFileName =~ m/\.([^.]+)$/;
- if ((!$aSuffix && !$isFile{$aFileName} && $bSuffix) || ($aSuffix && !$bSuffix && !$isFile{$bFileName})) {
- return !$aSuffix ? -1 : 1;
- }
- return lc($aFileName) cmp lc($bFileName);
-}
-
-sub sortFilesByFileName($$)
-{
- 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 lc($aFileName) cmp lc($bFileName);
-}
diff --git a/Tools/Scripts/split-file-by-class b/Tools/Scripts/split-file-by-class
deleted file mode 100755
index b6aeb68a0..000000000
--- a/Tools/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/Tools/Scripts/sunspider-compare-results b/Tools/Scripts/sunspider-compare-results
deleted file mode 100755
index ce9594425..000000000
--- a/Tools/Scripts/sunspider-compare-results
+++ /dev/null
@@ -1,133 +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 $suite = "";
-my $ubench = 0;
-my $v8 = 0;
-my $parseonly = 0;
-
-my $programName = basename($0);
-my $usage = <<EOF;
-Usage: $programName [options] FILE FILE
- --help Show this help message
- --root Path to root tools build
- --suite Select a specific benchmark suite. The default is sunspider-0.9.1
- --ubench Use microbenchmark suite instead of regular tests. Same as --suite=ubench
- --v8-suite Use the V8 benchmark suite. Same as --suite=v8-v4
- --parse-only Use the parse-only benchmark suite. Same as --suite=parse-only
-EOF
-
-GetOptions('root=s' => sub { my ($argName, $value) = @_; setConfigurationProductDir(Cwd::abs_path($value)); $root = $value; },
- 'suite=s' => \$suite,
- 'ubench' => \$ubench,
- 'v8' => \$v8,
- 'parse-only' => \$parseonly,
- 'help' => \$showHelp);
-
-if ($showHelp) {
- print STDERR $usage;
- exit 1;
-}
-
-sub buildJSC
-{
- if (!defined($root)){
- chdirWebKit();
- my $buildResult = system currentPerlPath(), "Tools/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 pathToBuiltJSC($)
-{
- my ($productDir) = @_;
- my $jscName = "jsc";
- $jscName .= "_debug" if configurationForVisualStudio() eq "Debug_All";
- return "$productDir/$jscName";
-}
-
-sub pathToSystemJSC()
-{
- my $path = "/System/Library/Frameworks/JavaScriptCore.framework/Resources/jsc";
- if (-f $path) {
- return $path;
- }
- return undef;
-}
-
-sub pathToJSC()
-{
- my $path = pathToSystemJSC();
- return $path if defined $path;
-
- buildJSC();
-
- my $productDir = jscProductDir();
-
- setupEnvironmentForExecution($productDir);
- return pathToBuiltJSC($productDir);
-}
-
-my $jscPath = pathToJSC();
-chdirWebKit();
-chdir("PerformanceTests/SunSpider");
-
-my @args = ("--shell", $jscPath);
-# This code could be removed if we chose to pass extra args to sunspider instead of Xcode
-push @args, "--suite=${suite}" if $suite;
-push @args, "--ubench" if $ubench;
-push @args, "--v8" if $v8;
-push @args, "--parse-only" if $parseonly;
-
-@ARGV = map { File::Spec->rel2abs($_) } @ARGV;
-
-exec currentPerlPath(), "./sunspider-compare-results", @args, @ARGV;
diff --git a/Tools/Scripts/svn-apply b/Tools/Scripts/svn-apply
deleted file mode 100755
index fb52a9b07..000000000
--- a/Tools/Scripts/svn-apply
+++ /dev/null
@@ -1,475 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-
-# "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.
-# 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 delta
-
-use strict;
-use warnings;
-
-use Digest::MD5;
-use File::Basename;
-use File::Spec;
-use Getopt::Long;
-use MIME::Base64;
-use POSIX qw(strftime);
-
-use FindBin;
-use lib $FindBin::Bin;
-use VCSUtils;
-
-sub addDirectoriesIfNeeded($);
-sub applyPatch($$;$);
-sub checksum($);
-sub handleBinaryChange($$);
-sub handleGitBinaryChange($$);
-sub isDirectoryEmptyForRemoval($);
-sub patch($);
-sub removeDirectoriesIfNeeded();
-
-# These should be replaced by an scm class/module:
-sub scmKnowsOfFile($);
-sub scmCopy($$);
-sub scmAdd($);
-sub scmRemove($);
-
-my $merge = 0;
-my $showHelp = 0;
-my $reviewer;
-my $force = 0;
-
-my $optionParseSuccess = GetOptions(
- "merge!" => \$merge,
- "help!" => \$showHelp,
- "reviewer=s" => \$reviewer,
- "force!" => \$force
-);
-
-if (!$optionParseSuccess || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [--force] [-m|--merge] [-r|--reviewer name] patch1 [patch2 ...]\n";
- exit 1;
-}
-
-my %removeDirectoryIgnoreList = (
- '.' => 1,
- '..' => 1,
- '.git' => 1,
- '.svn' => 1,
- '_svn' => 1,
-);
-
-my $epochTime = time(); # This is used to set the date in ChangeLog files.
-my $globalExitStatus = 0;
-
-my $repositoryRootPath = determineVCSRoot();
-
-my %checkedDirectories;
-
-# Need to use a typeglob to pass the file handle as a parameter,
-# otherwise get a bareword error.
-my @diffHashRefs = parsePatch(*ARGV);
-
-print "Parsed " . @diffHashRefs . " diffs from patch file(s).\n";
-
-my $preparedPatchHash = prepareParsedPatch($force, @diffHashRefs);
-
-my @copyDiffHashRefs = @{$preparedPatchHash->{copyDiffHashRefs}};
-my @nonCopyDiffHashRefs = @{$preparedPatchHash->{nonCopyDiffHashRefs}};
-my %sourceRevisions = %{$preparedPatchHash->{sourceRevisionHash}};
-
-if ($merge) {
- die "--merge is currently only supported for SVN" unless isSVN();
- # How do we handle Git patches applied to an SVN checkout here?
- for my $file (sort keys %sourceRevisions) {
- my $version = $sourceRevisions{$file};
- print "Getting version $version of $file\n";
- my $escapedFile = escapeSubversionPath($file);
- system("svn", "update", "-r", $version, $escapedFile) == 0 or die "Failed to run svn update -r $version $escapedFile.";
- }
-}
-
-# Handle copied and moved files first since moved files may have their
-# source deleted before the move.
-for my $copyDiffHashRef (@copyDiffHashRefs) {
- my $indexPath = $copyDiffHashRef->{indexPath};
- my $copiedFromPath = $copyDiffHashRef->{copiedFromPath};
-
- addDirectoriesIfNeeded(dirname($indexPath));
- scmCopy($copiedFromPath, $indexPath);
-}
-
-for my $diffHashRef (@nonCopyDiffHashRefs) {
- patch($diffHashRef);
-}
-
-removeDirectoriesIfNeeded();
-
-exit $globalExitStatus;
-
-sub addDirectoriesIfNeeded($)
-{
- # Git removes a directory once the last file in it is removed. We need
- # explicitly check for the existence of each directory along the path
- # (and create it if it doesn't) so as to support patches that move all files in
- # directory A to A/B. That is, we cannot depend on %checkedDirectories.
- my ($path) = @_;
- my @dirs = File::Spec->splitdir($path);
- my $dir = ".";
- while (scalar @dirs) {
- $dir = File::Spec->catdir($dir, shift @dirs);
- next if !isGit() && exists $checkedDirectories{$dir};
- if (! -e $dir) {
- mkdir $dir or die "Failed to create required directory '$dir' for path '$path'\n";
- scmAdd($dir);
- $checkedDirectories{$dir} = 1;
- }
- elsif (-d $dir) {
- # SVN prints "svn: warning: 'directory' is already under version control"
- # if you try and add a directory which is already in the repository.
- # Git will ignore the add, but re-adding large directories can be sloooow.
- # So we check first to see if the directory is under version control first.
- if (!scmKnowsOfFile($dir)) {
- scmAdd($dir);
- }
- $checkedDirectories{$dir} = 1;
- }
- else {
- die "'$dir' exists, but is not a directory";
- }
- }
-}
-
-# Args:
-# $patch: a patch string.
-# $pathRelativeToRoot: the path of the file to be patched, relative to the
-# repository root. This should normally be the path
-# found in the patch's "Index:" line.
-# $options: a reference to an array of options to pass to the patch command.
-sub applyPatch($$;$)
-{
- my ($patch, $pathRelativeToRoot, $options) = @_;
-
- my $optionalArgs = {options => $options, ensureForce => $force};
-
- my $exitStatus = runPatchCommand($patch, $repositoryRootPath, $pathRelativeToRoot, $optionalArgs);
-
- if ($exitStatus) {
- $globalExitStatus = $exitStatus;
- }
-}
-
-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 handleBinaryChange($$)
-{
- my ($fullPath, $contents) = @_;
- # [A-Za-z0-9+/] is the class of allowed base64 characters.
- # One or more lines, at most 76 characters in length.
- # The last line is allowed to have up to two '=' characters at the end (to signify padding).
- if ($contents =~ m#((\n[A-Za-z0-9+/]{76})*\n[A-Za-z0-9+/]{2,74}?[A-Za-z0-9+/=]{2}\n)#) {
- # Addition or Modification
- open FILE, ">", $fullPath or die "Failed to open $fullPath.";
- print FILE decode_base64($1);
- close FILE;
- if (!scmKnowsOfFile($fullPath)) {
- # Addition
- scmAdd($fullPath);
- }
- } else {
- # Deletion
- scmRemove($fullPath);
- }
-}
-
-sub handleGitBinaryChange($$)
-{
- my ($fullPath, $diffHashRef) = @_;
-
- my $contents = $diffHashRef->{svnConvertedText};
-
- my ($binaryChunkType, $binaryChunk, $reverseBinaryChunkType, $reverseBinaryChunk) = decodeGitBinaryPatch($contents, $fullPath);
-
- my $isFileAddition = $diffHashRef->{isNew};
- my $isFileDeletion = $diffHashRef->{isDeletion};
-
- my $originalContents = "";
- if (open FILE, $fullPath) {
- die "$fullPath already exists" if $isFileAddition;
-
- $originalContents = join("", <FILE>);
- close FILE;
- }
-
- if ($reverseBinaryChunkType eq "literal") {
- die "Original content of $fullPath mismatches" if $originalContents ne $reverseBinaryChunk;
- }
-
- if ($isFileDeletion) {
- scmRemove($fullPath);
- } else {
- # Addition or Modification
- my $out = "";
- if ($binaryChunkType eq "delta") {
- $out = applyGitBinaryPatchDelta($binaryChunk, $originalContents);
- } else {
- $out = $binaryChunk;
- }
- if ($reverseBinaryChunkType eq "delta") {
- die "Original content of $fullPath mismatches" if $originalContents ne applyGitBinaryPatchDelta($reverseBinaryChunk, $out);
- }
- open FILE, ">", $fullPath or die "Failed to open $fullPath.";
- print FILE $out;
- close FILE;
- if ($isFileAddition) {
- scmAdd($fullPath);
- }
- }
-}
-
-sub isDirectoryEmptyForRemoval($)
-{
- my ($dir) = @_;
- return 1 unless -d $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 {
- next if (scmWillDeleteFile(File::Spec->catdir($dir, $item)));
- $directoryIsEmpty = 0;
- }
- }
- closedir DIR;
- return $directoryIsEmpty;
-}
-
-# Args:
-# $diffHashRef: a diff hash reference of the type returned by parsePatch().
-sub patch($)
-{
- my ($diffHashRef) = @_;
-
- # Make sure $patch is initialized to some value. A deletion can have no
- # svnConvertedText property in the case of a deletion resulting from a
- # Git rename.
- my $patch = $diffHashRef->{svnConvertedText} || "";
-
- my $fullPath = $diffHashRef->{indexPath};
- my $isBinary = $diffHashRef->{isBinary};
- my $isGit = $diffHashRef->{isGit};
- my $hasTextChunks = $patch && $diffHashRef->{numTextChunks};
-
- my $deletion = 0;
- my $addition = 0;
-
- $addition = 1 if ($diffHashRef->{isNew} || $patch =~ /\n@@ -0,0 .* @@/);
- $deletion = 1 if ($diffHashRef->{isDeletion} || $patch =~ /\n@@ .* \+0,0 @@/);
-
- if (!$addition && !$deletion && !$isBinary && $hasTextChunks) {
- # Standard patch, patch tool can handle this.
- if (basename($fullPath) eq "ChangeLog") {
- my $changeLogDotOrigExisted = -f "${fullPath}.orig";
- my $changeLogHash = fixChangeLogPatch($patch);
- my $newPatch = setChangeLogDateAndReviewer($changeLogHash->{patch}, $reviewer, $epochTime);
- applyPatch($newPatch, $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) {
- if ($isGit) {
- handleGitBinaryChange($fullPath, $diffHashRef);
- } else {
- handleBinaryChange($fullPath, $patch) if $patch;
- }
- } elsif ($deletion) {
- applyPatch($patch, $fullPath, ["--force"]) if $patch;
- scmRemove($fullPath);
- } elsif ($addition) {
- # Addition
- rename($fullPath, "$fullPath.orig") if -e $fullPath;
- applyPatch($patch, $fullPath) if $patch;
- unlink("$fullPath.orig") if -e "$fullPath.orig" && checksum($fullPath) eq checksum("$fullPath.orig");
- scmAdd($fullPath);
- my $escapedFullPath = escapeSubversionPath("$fullPath.orig");
- # What is this for?
- system("svn", "stat", "$escapedFullPath") if isSVN() && -e "$fullPath.orig";
- }
- }
-
- scmToggleExecutableBit($fullPath, $diffHashRef->{executableBitDelta}) if defined($diffHashRef->{executableBitDelta});
-}
-
-sub removeDirectoriesIfNeeded()
-{
- foreach my $dir (reverse sort keys %checkedDirectories) {
- if (isDirectoryEmptyForRemoval($dir)) {
- scmRemove($dir);
- }
- }
-}
-
-# This could be made into a more general "status" call, except svn and git
-# have different ideas about "moving" files which might get confusing.
-sub scmWillDeleteFile($)
-{
- my ($path) = @_;
- if (isSVN()) {
- my $svnOutput = svnStatus($path);
- return 1 if $svnOutput && substr($svnOutput, 0, 1) eq "D";
- } elsif (isGit()) {
- my $command = runCommand("git", "diff-index", "--name-status", "HEAD", "--", $path);
- return 1 if $command->{stdout} && substr($command->{stdout}, 0, 1) eq "D";
- }
- return 0;
-}
-
-# Return whether the file at the given path is known to Git.
-#
-# This method outputs a message like the following to STDERR when
-# returning false:
-#
-# "error: pathspec 'test.png' did not match any file(s) known to git.
-# Did you forget to 'git add'?"
-sub gitKnowsOfFile($)
-{
- my $path = shift;
-
- `git ls-files --error-unmatch -- $path`;
- my $exitStatus = exitStatus($?);
- return $exitStatus == 0;
-}
-
-sub scmKnowsOfFile($)
-{
- my ($path) = @_;
- if (isSVN()) {
- my $svnOutput = svnStatus($path);
- # This will match more than intended. ? might not be the first field in the status
- if ($svnOutput && $svnOutput =~ m#\?\s+$path\n#) {
- return 0;
- }
- # This does not handle errors well.
- return 1;
- } elsif (isGit()) {
- my @result = callSilently(\&gitKnowsOfFile, $path);
- return $result[0];
- }
-}
-
-sub scmCopy($$)
-{
- my ($source, $destination) = @_;
- if (isSVN()) {
- my $escapedSource = escapeSubversionPath($source);
- my $escapedDestination = escapeSubversionPath($destination);
- system("svn", "copy", $escapedSource, $escapedDestination) == 0 or die "Failed to svn copy $escapedSource $escapedDestination.";
- } elsif (isGit()) {
- system("cp", $source, $destination) == 0 or die "Failed to copy $source $destination.";
- system("git", "add", $destination) == 0 or die "Failed to git add $destination.";
- }
-}
-
-sub scmAdd($)
-{
- my ($path) = @_;
- if (isSVN()) {
- my $escapedPath = escapeSubversionPath($path);
- system("svn", "add", $escapedPath) == 0 or die "Failed to svn add $escapedPath.";
- } elsif (isGit()) {
- system("git", "add", $path) == 0 or die "Failed to git add $path.";
- }
-}
-
-sub scmRemove($)
-{
- my ($path) = @_;
- if (isSVN()) {
- # SVN is very verbose when removing directories. Squelch all output except the last line.
- my $svnOutput;
- my $escapedPath = escapeSubversionPath($path);
- open SVN, "svn rm --force '$escapedPath' |" or die "svn rm --force '$escapedPath' failed!";
- # Only print the last line. Subversion outputs all changed statuses below $dir
- while (<SVN>) {
- $svnOutput = $_;
- }
- close SVN;
- print $svnOutput if $svnOutput;
- } elsif (isGit()) {
- # Git removes a directory if it becomes empty when the last file it contains is
- # removed by `git rm`. In svn-apply this can happen when a directory is being
- # removed in a patch, and all of the files inside of the directory are removed
- # before attemping to remove the directory itself. In this case, Git will have
- # already deleted the directory and `git rm` would exit with an error claiming
- # there was no file. The --ignore-unmatch switch gracefully handles this case.
- system("git", "rm", "--force", "--ignore-unmatch", $path) == 0 or die "Failed to git rm --force --ignore-unmatch $path.";
- }
-}
diff --git a/Tools/Scripts/svn-create-patch b/Tools/Scripts/svn-create-patch
deleted file mode 100755
index 06e016893..000000000
--- a/Tools/Scripts/svn-create-patch
+++ /dev/null
@@ -1,429 +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 File::Basename;
-use File::Spec;
-use File::stat;
-use FindBin;
-use Getopt::Long;
-use lib $FindBin::Bin;
-use MIME::Base64;
-use POSIX qw(:errno_h);
-use Time::gmtime;
-use VCSUtils;
-
-sub binarycmp($$);
-sub diffOptionsForFile($);
-sub findBaseUrl($);
-sub findMimeType($;$);
-sub findModificationType($);
-sub findSourceFileAndRevision($);
-sub generateDiff($$);
-sub generateFileList($\%);
-sub hunkHeaderLineRegExForFile($);
-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 $ignoreChangelogs = 0;
-my $devNull = File::Spec->devnull();
-
-my $result = GetOptions(
- "help" => \$showHelp,
- "ignore-changelogs" => \$ignoreChangelogs
-);
-if (!$result || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [--ignore-changelogs] [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);
-}
-
-my $svnRoot = determineSVNRoot();
-my $prefix = chdirReturningRelativePath($svnRoot);
-
-# Generate the diffs, in an order chosen for ease of reviewing.
-for my $path (sort patchpathcmp values %diffFiles) {
- generateDiff($path, $prefix);
-}
-
-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 diffOptionsForFile($)
-{
- my ($file) = @_;
-
- my $options = "uaNp";
-
- if (my $hunkHeaderLineRegEx = hunkHeaderLineRegExForFile($file)) {
- $options .= "F'$hunkHeaderLineRegEx'";
- }
-
- return $options;
-}
-
-sub findBaseUrl($)
-{
- my ($infoPath) = @_;
- my $baseUrl;
- my $escapedInfoPath = escapeSubversionPath($infoPath);
- open INFO, "svn info '$escapedInfoPath' |" or die;
- while (<INFO>) {
- if (/^URL: (.+?)[\r\n]*$/) {
- $baseUrl = $1;
- }
- }
- close INFO;
- return $baseUrl;
-}
-
-sub findMimeType($;$)
-{
- my ($file, $revision) = @_;
- my $args = $revision ? "--revision $revision" : "";
- my $escapedFile = escapeSubversionPath($file);
- open PROPGET, "svn propget svn:mime-type $args '$escapedFile' |" or die;
- my $mimeType = <PROPGET>;
- close PROPGET;
- # svn may output a different EOL sequence than $/, so avoid chomp.
- if ($mimeType) {
- $mimeType =~ s/[\r\n]+$//g;
- }
- return $mimeType;
-}
-
-sub findModificationType($)
-{
- my ($stat) = @_;
- my $fileStat = substr($stat, 0, 1);
- my $propertyStat = substr($stat, 1, 1);
- if ($fileStat eq "A" || $fileStat eq "R") {
- 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;
- my $escapedFile = escapeSubversionPath($file);
- open INFO, "svn info '$escapedFile' |" or die;
- while (<INFO>) {
- if (/^Copied From URL: (.+?)[\r\n]*$/) {
- $sourceFile = File::Spec->abs2rel($1, $baseUrl);
- } elsif (/^Copied From Rev: ([0-9]+)/) {
- $sourceRevision = $1;
- }
- }
- close INFO;
- return ($sourceFile, $sourceRevision);
-}
-
-sub generateDiff($$)
-{
- my ($fileData, $prefix) = @_;
- my $file = File::Spec->catdir($prefix, $fileData->{path});
-
- if ($ignoreChangelogs && basename($file) eq "ChangeLog") {
- return 0;
- }
-
- my $patch = "";
- if ($fileData->{modificationType} eq "additionWithHistory") {
- manufacturePatchForAdditionWithHistory($fileData);
- }
-
- my $diffOptions = diffOptionsForFile($file);
- my $escapedFile = escapeSubversionPath($file);
- open DIFF, "svn diff --diff-cmd diff -x -$diffOptions '$escapedFile' |" or die;
- while (<DIFF>) {
- $patch .= $_;
- }
- close DIFF;
- if (basename($file) eq "ChangeLog") {
- my $changeLogHash = fixChangeLogPatch($patch);
- $patch = $changeLogHash->{patch};
- }
- print $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);
- my $escapedStatPath = escapeSubversionPath($statPath);
- open STAT, "svn stat '$escapedStatPath' |" or die;
- while (my $line = <STAT>) {
- # svn may output a different EOL sequence than $/, so avoid chomp.
- $line =~ s/[\r\n]+$//g;
- my $stat;
- my $path;
- if (isSVNVersion16OrNewer()) {
- $stat = substr($line, 0, 8);
- $path = substr($line, 8);
- } else {
- $stat = substr($line, 0, 7);
- $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 hunkHeaderLineRegExForFile($)
-{
- my ($file) = @_;
-
- my $startOfObjCInterfaceRegEx = "@(implementation\\|interface\\|protocol)";
- return "^[-+]\\|$startOfObjCInterfaceRegEx" if $file =~ /\.mm?$/;
- return "^$startOfObjCInterfaceRegEx" if $file =~ /^(.*\/)?(mac|objc)\// && $file =~ /\.h$/;
-}
-
-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 {
- my $escapedSourceFile = escapeSubversionPath($sourceFile);
- print `svn cat ${escapedSourceFile} | diff -u $devNull - | 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/Tools/Scripts/svn-unapply b/Tools/Scripts/svn-unapply
deleted file mode 100755
index 098361732..000000000
--- a/Tools/Scripts/svn-unapply
+++ /dev/null
@@ -1,283 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au>
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-
-# "unpatch" script for WebKit 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;
-
-use FindBin;
-use lib $FindBin::Bin;
-use VCSUtils;
-
-sub checksum($);
-sub patch($);
-sub revertDirectories();
-sub unapplyPatch($$;$);
-sub unsetChangeLogDate($$);
-
-my $force = 0;
-my $showHelp = 0;
-
-my $optionParseSuccess = GetOptions(
- "force!" => \$force,
- "help!" => \$showHelp
-);
-
-if (!$optionParseSuccess || $showHelp) {
- print STDERR basename($0) . " [-h|--help] [--force] patch1 [patch2 ...]\n";
- exit 1;
-}
-
-my $globalExitStatus = 0;
-
-my $repositoryRootPath = determineVCSRoot();
-
-my @copiedFiles;
-my %directoriesToCheck;
-
-# Need to use a typeglob to pass the file handle as a parameter,
-# otherwise get a bareword error.
-my @diffHashRefs = parsePatch(*ARGV);
-
-print "Parsed " . @diffHashRefs . " diffs from patch file(s).\n";
-
-my $preparedPatchHash = prepareParsedPatch($force, @diffHashRefs);
-
-my @copyDiffHashRefs = @{$preparedPatchHash->{copyDiffHashRefs}};
-my @nonCopyDiffHashRefs = @{$preparedPatchHash->{nonCopyDiffHashRefs}};
-
-for my $diffHashRef (@nonCopyDiffHashRefs) {
- patch($diffHashRef);
-}
-
-# Handle copied and moved files last since they may have had post-copy changes that have now been unapplied
-for my $diffHashRef (@copyDiffHashRefs) {
- patch($diffHashRef);
-}
-
-if (isSVN()) {
- revertDirectories();
-}
-
-exit $globalExitStatus;
-
-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;
-}
-
-# Args:
-# $diffHashRef: a diff hash reference of the type returned by parsePatch().
-sub patch($)
-{
- my ($diffHashRef) = @_;
-
- # Make sure $patch is initialized to some value. There is no
- # svnConvertedText when reversing an svn copy/move.
- my $patch = $diffHashRef->{svnConvertedText} || "";
-
- my $fullPath = $diffHashRef->{indexPath};
- my $isSvnBinary = $diffHashRef->{isBinary} && $diffHashRef->{isSvn};
- my $hasTextChunks = $patch && $diffHashRef->{numTextChunks};
-
- $directoriesToCheck{dirname($fullPath)} = 1;
-
- my $deletion = 0;
- my $addition = 0;
-
- $addition = 1 if ($diffHashRef->{isNew} || $diffHashRef->{copiedFromPath} || $patch =~ /\n@@ -0,0 .* @@/);
- $deletion = 1 if ($diffHashRef->{isDeletion} || $patch =~ /\n@@ .* \+0,0 @@/);
-
- if (!$addition && !$deletion && !$isSvnBinary && $hasTextChunks) {
- # Standard patch, patch tool can handle this.
- if (basename($fullPath) eq "ChangeLog") {
- my $changeLogDotOrigExisted = -f "${fullPath}.orig";
- my $changeLogHash = fixChangeLogPatch($patch);
- unapplyPatch(unsetChangeLogDate($fullPath, $changeLogHash->{patch}), $fullPath, ["--fuzz=3"]);
- unlink("${fullPath}.orig") if (! $changeLogDotOrigExisted);
- } else {
- unapplyPatch($patch, $fullPath);
- }
- } else {
- # Either a deletion, an addition or a binary change.
-
- my $escapedFullPath = escapeSubversionPath($fullPath);
- # FIXME: Add support for Git binary files.
- if ($isSvnBinary) {
- # Reverse binary change
- unlink($fullPath) if (-e $fullPath);
- system "svn", "revert", $escapedFullPath;
- } 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", $escapedFullPath;
- 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", $escapedFullPath;
- } elsif ($addition) {
- # Reverse addition
- #
- # FIXME: This should use the same logic as svn-apply's deletion
- # code. In particular, svn-apply's scmRemove() subroutine
- # should be used here.
- unapplyPatch($patch, $fullPath, ["--force"]) if $patch;
- unlink($fullPath) if -z $fullPath;
- system "svn", "revert", $escapedFullPath;
- }
- }
-
- scmToggleExecutableBit($fullPath, -1 * $diffHashRef->{executableBitDelta}) if defined($diffHashRef->{executableBitDelta});
-}
-
-sub revertDirectories()
-{
- chdir $repositoryRootPath;
- 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);
- my $escapedDir = escapeSubversionPath($dir);
- if ($svnOutput && $svnOutput =~ m#A\s+$dir\n#) {
- system "svn", "revert", $escapedDir;
- rmdir $dir;
- }
- elsif ($svnOutput && $svnOutput =~ m#D\s+$dir\n#) {
- system "svn", "revert", $escapedDir;
- }
- else {
- # Modification
- print $svnOutput if $svnOutput;
- }
- $checkedDirectories{$dir} = 1;
- }
- else {
- die "'$dir' is not a directory";
- }
- }
- }
-}
-
-# Args:
-# $patch: a patch string.
-# $pathRelativeToRoot: the path of the file to be patched, relative to the
-# repository root. This should normally be the path
-# found in the patch's "Index:" line.
-# $options: a reference to an array of options to pass to the patch command.
-# Do not include --reverse in this array.
-sub unapplyPatch($$;$)
-{
- my ($patch, $pathRelativeToRoot, $options) = @_;
-
- my $optionalArgs = {options => $options, ensureForce => $force, shouldReverse => 1};
-
- my $exitStatus = runPatchCommand($patch, $repositoryRootPath, $pathRelativeToRoot, $optionalArgs);
-
- if ($exitStatus) {
- $globalExitStatus = $exitStatus;
- }
-}
-
-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/Tools/Scripts/sync-master-with-upstream b/Tools/Scripts/sync-master-with-upstream
deleted file mode 100755
index d2e666c2d..000000000
--- a/Tools/Scripts/sync-master-with-upstream
+++ /dev/null
@@ -1,46 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright 2012 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:
-# 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 GOOGLE 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.
-
-# This script is intended to support the GitHub workflow described here:
-# https://trac.webkit.org/wiki/UsingGitHub
-#
-# This script fetches the latest changes from upstream, and pushes those
-# changes to the master branch in origin (e.g., your GitHub fork of WebKit).
-#
-# Running this script periodically will keep your fork of WebKit on GitHub in
-# sync with the "root" WebKit repository in upstream, assuming you've run
-# configure-github-as-upstream
-
-import subprocess
-
-def run(args, error_message = None):
- if subprocess.call(args) != 0:
- if error_message:
- print error_message
- exit(1)
-
-run(["git", "fetch", "upstream"], "Have you run configure-github-as-upstream to configure an upstream repository?")
-run(["git", "push", "origin", "upstream/master:master"])
-print "\nConsider running 'git merge origin' to update your local branches."
diff --git a/Tools/Scripts/test-webkit-scripts b/Tools/Scripts/test-webkit-scripts
deleted file mode 100755
index baba0598f..000000000
--- a/Tools/Scripts/test-webkit-scripts
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/python
-#
-# Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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 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 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.
-
-"""Run unit tests of WebKit's Perl, Python, and Ruby scripts."""
-
-# The docstring above is passed as the "description" to the OptionParser
-# used in this script's __main__ block.
-#
-# For the command options supported by this script, see the code below
-# that instantiates the OptionParser class, or else pass --help
-# while running this script (since argument help is auto-generated).
-
-import os
-import subprocess
-import sys
-from optparse import OptionParser
-
-class ScriptsTester(object):
-
- """Supports running unit tests of WebKit scripts."""
-
- def __init__(self, scripts_directory):
- self.scripts_directory = scripts_directory
-
- def script_path(self, script_file_name):
- """Return an absolute path to the given script."""
- return os.path.join(self.scripts_directory, script_file_name)
-
- def run_test_script(self, script_title, script_path, args=None):
- """Run the given test script."""
- print('Testing %s:' % script_title)
- call_args = [script_path]
- if args:
- call_args.extend(args)
- subprocess.call(call_args)
- print(70 * "*") # dividing line
-
- def main(self):
- parser = OptionParser(description=__doc__)
- parser.add_option('-a', '--all', dest='all', action='store_true',
- default=False, help='run all available tests, '
- 'including those suppressed by default')
- (options, args) = parser.parse_args()
-
- self.run_test_script('Perl scripts', self.script_path('test-webkitperl'))
- self.run_test_script('Python scripts', self.script_path('test-webkitpy'),
- ['--all'] if options.all else None)
- self.run_test_script('Ruby scripts', self.script_path('test-webkitruby'))
-
- # FIXME: Display a cumulative indication of success or failure.
- # In addition, call sys.exit() with 0 or 1 depending on that
- # cumulative success or failure.
- print('Note: Perl, Python, and Ruby results appear separately above.')
-
-
-if __name__ == '__main__':
- # The scripts directory is the directory containing this file.
- tester = ScriptsTester(os.path.dirname(__file__))
- tester.main()
diff --git a/Tools/Scripts/test-webkitperl b/Tools/Scripts/test-webkitperl
deleted file mode 100755
index 6faa47ca2..000000000
--- a/Tools/Scripts/test-webkitperl
+++ /dev/null
@@ -1,59 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2009 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-# Runs unit tests of WebKit Perl code.
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use Test::Harness;
-use lib $FindBin::Bin; # so this script can be run from any directory.
-use VCSUtils;
-
-# Change the working directory so that we can pass shorter, relative
-# paths to runtests(), rather than longer, absolute paths.
-#
-# We change to the source root so the paths can be relative to the
-# source root. These paths display on the screen, and their meaning
-# will be clearer to the user if relative to the root, rather than to
-# the Scripts directory, say.
-#
-# Source root is two levels up from the Scripts directory.
-my $sourceRootDir = File::Spec->catfile($FindBin::Bin, "../..");
-chdir($sourceRootDir);
-
-# Relative to root
-my $pattern = "Tools/Scripts/webkitperl/*_unittest/*.pl";
-
-my @files = <${pattern}>; # lists files alphabetically
-
-runtests(@files);
diff --git a/Tools/Scripts/test-webkitpy b/Tools/Scripts/test-webkitpy
deleted file mode 100755
index ee682cccf..000000000
--- a/Tools/Scripts/test-webkitpy
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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.
-from webkitpy.common import multiprocessing_bootstrap
-
-multiprocessing_bootstrap.run('webkitpy', 'test', 'main.py')
diff --git a/Tools/Scripts/test-webkitruby b/Tools/Scripts/test-webkitruby
deleted file mode 100755
index cd04a0ab5..000000000
--- a/Tools/Scripts/test-webkitruby
+++ /dev/null
@@ -1,34 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2012 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. 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 INC. 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.
-
-$exit_code = 0;
-
-Dir.chdir File.dirname(__FILE__)
-Dir.glob("./webkitruby/*/*.rb").each do |test|
- puts %x{ '#{test}' }
- $exit_code = 1 if $?.exitstatus != 0
-end
-
-exit $exit_code
diff --git a/Tools/Scripts/update-iexploder-cssproperties b/Tools/Scripts/update-iexploder-cssproperties
deleted file mode 100755
index 65e559f02..000000000
--- a/Tools/Scripts/update-iexploder-cssproperties
+++ /dev/null
@@ -1,129 +0,0 @@
-#!/usr/bin/perl
-
-# Copyright (C) 2007 Apple Inc. All rights reserved.
-# Copyright (C) 2010 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 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 Tools/iExploder/iExploder-1.3.2/htdocs/*.in based on
-# WebCore/css/CSSPropertyNames.in, WebCore/html/HTMLTagNames.in
-# and WebCore/html/HTMLAttributeNames.in
-
-use warnings;
-use strict;
-
-use FindBin;
-use lib $FindBin::Bin;
-use VCSUtils;
-use webkitdirs;
-
-use File::Spec;
-
-sub generateEntityListFromFile($);
-sub readiExploderFile($);
-sub update($$);
-sub writeiExploderFile($@);
-
-update("cssproperties.in", "css/CSSPropertyNames.in");
-update("htmlattrs.in", "html/HTMLAttributeNames.in");
-update("htmltags.in", "html/HTMLTagNames.in");
-print "Successfully updated!\n";
-
-exit 0;
-
-sub generateEntityListFromFile($)
-{
- my ($filename) = @_;
-
- my $revision = svnRevisionForDirectory(dirname($filename));
- my $path = File::Spec->abs2rel($filename, sourceDir());
- my $result = "# From WebKit svn r" . $revision . " (" . $path . ")\n";
-
- my @entities = ();
- my $in_namespace = 0;
-
- open(IN, $filename) || die "$!";
- while (my $l = <IN>) {
- chomp $l;
- if ($l =~ m/^namespace=\"/) {
- $in_namespace = 1;
- } elsif ($in_namespace && $l =~ m/^$/) {
- $in_namespace = 0;
- }
-
- next if $in_namespace;
- next if $l =~ m/^\s*#/ || $l =~ m/^\s*$/;
-
- # For HTML Tags that can have additional information
- if ($l =~ m/ /) {
- my @split = split / /, $l;
- $l = $split[0]
- }
-
- push(@entities, $l);
- }
- close(IN);
-
- $result .= join("\n", sort { $a cmp $b } @entities) . "\n\n";
-
- return $result;
-}
-
-sub readiExploderFile($)
-{
- my ($filename) = @_;
-
- my @sections = ();
- local $/ = "\n\n";
-
- open(IN, $filename) || die "$!";
- @sections = <IN>;
- close(IN);
-
- return @sections;
-}
-
-sub update($$)
-{
- my ($iexploderPath, $webcorePath) = @_;
-
- $iexploderPath = File::Spec->catfile(sourceDir(), "Tools", "iExploder", "iExploder-1.3.2", "htdocs", split("/", $iexploderPath));
- $webcorePath = File::Spec->catfile(sourceDir(), "Source", "WebCore", split("/", $webcorePath));
-
- my @sections = readiExploderFile($iexploderPath);
- $sections[0] = generateEntityListFromFile($webcorePath);
- writeiExploderFile($iexploderPath, @sections);
-}
-
-
-sub writeiExploderFile($@)
-{
- my ($filename, @sections) = @_;
-
- open(OUT, "> $filename") || die "$!";
- print OUT join("", @sections);
- close(OUT);
-}
-
diff --git a/Tools/Scripts/update-javascriptcore-test-results b/Tools/Scripts/update-javascriptcore-test-results
deleted file mode 100755
index cc8cd2c73..000000000
--- a/Tools/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 "Source/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/Tools/Scripts/update-qtwebkit-win-libs b/Tools/Scripts/update-qtwebkit-win-libs
new file mode 100644
index 000000000..8227ba933
--- /dev/null
+++ b/Tools/Scripts/update-qtwebkit-win-libs
@@ -0,0 +1,41 @@
+#!/usr/bin/perl -w
+
+# Copyright (C) 2012 Brent Fulgham <bfulgham@webkit.org>. All rights reserved.
+# Copyright (C) 2011 Carl Lobo. 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.
+
+# Updates a development environment to the new WebKitAuxiliaryLibrary
+
+use strict;
+use warnings;
+use FindBin;
+
+my $file = "qtwebkit-libs-win";
+my $zipFile = "$file.zip";
+my $winQtLibsURL = "https://dl.dropboxusercontent.com/u/30021413/$zipFile";
+my $command = "$FindBin::Bin/update-webkit-dependency";
+
+system("perl", $command, $winQtLibsURL, ".") == 0 or die;
diff --git a/Tools/Scripts/update-webgl-conformance-tests b/Tools/Scripts/update-webgl-conformance-tests
deleted file mode 100755
index b93083645..000000000
--- a/Tools/Scripts/update-webgl-conformance-tests
+++ /dev/null
@@ -1,36 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2010 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.
-
-"""Wrapper around webkitpy/layout_tests/update-webgl-conformance-tests.py"""
-
-import webkitpy.to_be_moved.update_webgl_conformance_tests
-import sys
-
-if __name__ == '__main__':
- sys.exit(webkitpy.to_be_moved.update_webgl_conformance_tests.main())
diff --git a/Tools/Scripts/update-webkit b/Tools/Scripts/update-webkit
deleted file mode 100755
index 485eb748b..000000000
--- a/Tools/Scripts/update-webkit
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2011 Brent Fulgham. 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 WebKit Open Source Project.
-
-use strict;
-use FindBin;
-use lib $FindBin::Bin;
-use File::Basename;
-use File::Spec;
-use Getopt::Long;
-use VCSUtils;
-use webkitdirs;
-
-sub runSvnUpdate();
-sub runGitUpdate();
-
-# Handle options
-my $quiet = '';
-my $showHelp;
-
-determineIsQt();
-determineIsWinCairo();
-
-chdirWebKit();
-
-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
- --wincairo also update dependencies of the WinCairo port
-__END__
- exit 1;
-}
-
-my @svnOptions = ();
-push @svnOptions, '-q' if $quiet;
-
-# Don't prompt when using svn-1.6 or newer.
-push @svnOptions, qw(--accept postpone) if isSVNVersion16OrNewer();
-
-print "Updating OpenSource\n" unless $quiet;
-runSvnUpdate() if isSVN();
-runGitUpdate() if isGit();
-
-if (-d "../Internal") {
- chdir("../Internal");
- print "Updating Internal\n" unless $quiet;
- runSvnUpdate() if isSVNDirectory(".");
- runGitUpdate() if isGitDirectory(".");
-} elsif (isAppleWinWebKit()) {
- system("perl", "Tools/Scripts/update-webkit-auxiliary-libs") == 0 or die;
- if (isWinCairo()) {
- # WinCairo shares the auxiliary libs from the Apple port.
- system("perl", "Tools/Scripts/update-webkit-wincairo-libs") == 0 or die;
- }
-}
-
-setupAppleWinEnv() if isAppleWinWebKit();
-
-exit 0;
-
-sub runSvnUpdate()
-{
- open UPDATE, "-|", "svn", "update", @svnOptions or die;
- my @conflictedChangeLogs;
- while (my $line = <UPDATE>) {
- print $line;
- $line =~ m/^C\s+(.+?)[\r\n]*$/;
- if ($1) {
- my $filename = normalizePath($1);
- push @conflictedChangeLogs, $filename if basename($filename) 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";
- }
-}
-
-sub runGitUpdate()
-{
- # Doing a git fetch first allows setups with svn-remote.svn.fetch = trunk:refs/remotes/origin/master
- # to perform the rebase much much faster.
- system("git", "fetch") == 0 or die;
- if (isGitSVN()) {
- system("git", "svn", "rebase") == 0 or die;
- } else {
- # This will die if branch.$BRANCHNAME.merge isn't set, which is
- # almost certainly what we want.
- system("git", "pull") == 0 or die;
- }
-}
diff --git a/Tools/Scripts/update-webkit-auxiliary-libs b/Tools/Scripts/update-webkit-auxiliary-libs
deleted file mode 100755
index 1bb99d5f6..000000000
--- a/Tools/Scripts/update-webkit-auxiliary-libs
+++ /dev/null
@@ -1,40 +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 FindBin;
-
-my $file = "WebKitAuxiliaryLibrary";
-my $zipFile = "$file.zip";
-my $auxiliaryLibsURL = "https://developer.apple.com/opensource/internet/$zipFile";
-my $command = "$FindBin::Bin/update-webkit-dependency";
-
-system("perl", $command, $auxiliaryLibsURL, "win") == 0 or die;
diff --git a/Tools/Scripts/update-webkit-dependency b/Tools/Scripts/update-webkit-dependency
index 2654229cc..0bb7ed3bb 100755
--- a/Tools/Scripts/update-webkit-dependency
+++ b/Tools/Scripts/update-webkit-dependency
@@ -1,6 +1,6 @@
#!/usr/bin/perl -w
-# Copyright (C) 2005, 2006, 2007 Apple Computer, Inc. All rights reserved.
+# Copyright (C) 2005, 2006, 2007 Apple Inc. All rights reserved.
# Copyright (C) 2011 Carl Lobo. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
@@ -12,7 +12,7 @@
# 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
+# 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.
#
@@ -32,11 +32,16 @@
use strict;
use warnings;
+use Archive::Zip qw( :ERROR_CODES );
+use File::Copy;
use File::Find;
use File::Spec;
use File::Temp ();
use FindBin;
-use HTTP::Date qw(str2time);
+use HTTP::Date qw(str2time time2str);
+use HTTP::Request;
+use LWP::Simple;
+use LWP::UserAgent;
use POSIX;
use lib $FindBin::Bin;
use webkitdirs;
@@ -67,28 +72,46 @@ my $prefixInZip = shift;
my $sourceDir = sourceDir();
my $file = getLibraryName($libsURL);
my $zipFile = "$file.zip";
-my $webkitLibrariesDir = toUnixPath($ENV{'WEBKIT_LIBRARIES'}) || "$sourceDir/WebKitLibraries/win";
+my $webkitLibrariesDir = $ENV{'WEBKIT_LIBRARIES'} || File::Spec->catdir($sourceDir, "WebKitLibraries", "win");
my $tmpRelativeDir = File::Temp::tempdir("webkitlibsXXXXXXX", TMPDIR => 1, CLEANUP => 1);
my $tmpAbsDir = File::Spec->rel2abs($tmpRelativeDir);
+my $ua = LWP::UserAgent->new();
+$ua->env_proxy;
print "Checking Last-Modified date of $zipFile...\n";
-my $result = system "curl -s -I -k --sslv3 $libsURL | grep Last-Modified > \"$tmpAbsDir/$file.headers\"";
+my $response = $ua->get($libsURL);
-if (WEXITSTATUS($result)) {
+unless ($response->is_success) {
+ print "Could not access $libsURL:\n" . $response->headers_as_string . "\n";
+ print "You may not be connected to the internet. Attempting to build without updating.\n";
+ exit 0;
+}
+
+my $content_type = $response->header('Content-Type');
+my $document_length = $response->header('Content-Length');
+my $modified_time = str2time($response->header('Last-Modified'));
+if (defined $modified_time) {
+ print STDERR "Located a file of type $content_type, of size $document_length.\n";
+ open NEW, ">", File::Spec->catfile($tmpAbsDir, "$file.headers");
+ print NEW "Last-Modified: " . time2str($modified_time) . "\n";
+ close NEW;
+} else {
#Note: Neither GitHub nor DropBox emit the Last-Modified HTTP header, so fall back to a file
#containing the necessary information if we do not receive the information in our initial query.
my $headerURL = $libsURL;
$headerURL =~ s/\.zip$/\.headers/;
- $result = system "curl -k --sslv3 -o \"$tmpAbsDir/$file.headers\" $headerURL";
+ my $result = getstore($headerURL, File::Spec->catfile($tmpAbsDir, "$file.headers"));
- if (WEXITSTATUS($result)) {
+ if (!is_success($result)) {
print STDERR "Couldn't check Last-Modified date of new $zipFile.\n";
- print STDERR "Please ensure that $libsURL is reachable.\n";
+ print STDERR "Response was: $result.\n";
+ print STDERR "Please ensure that Perl can use LWP::Simple to connect to HTTPS urls, and that $libsURL is reachable.\n";
+ print STDERR "You may have to run \$ cpan LWP::Protocol::https\n";
- if (! -f "$webkitLibrariesDir/$file.headers") {
+ if (! -f File::Spec->catfile($webkitLibrariesDir, "$file.headers")) {
print STDERR "Unable to check Last-Modified date and no version of $file to fall back to.\n";
exit 1;
}
@@ -98,11 +121,11 @@ if (WEXITSTATUS($result)) {
}
}
-if (open NEW, "$tmpAbsDir/$file.headers") {
+if (open NEW, File::Spec->catfile($tmpAbsDir, "$file.headers")) {
my $new = lastModifiedToUnixTime(<NEW>);
close NEW;
- if (defined $new && open OLD, "$webkitLibrariesDir/$file.headers") {
+ if (defined $new && open OLD, File::Spec->catfile($webkitLibrariesDir, "$file.headers")) {
my $old = lastModifiedToUnixTime(<OLD>);
close OLD;
if (defined $old && abs($new - $old) < $newnessThreshold) {
@@ -113,43 +136,37 @@ if (open NEW, "$tmpAbsDir/$file.headers") {
}
print "Downloading $zipFile...\n\n";
-$result = system "curl -k --sslv3 -o \"$tmpAbsDir/$zipFile\" $libsURL";
-die "Couldn't download $zipFile!" if $result;
+print "$libsURL\n";
+my $result = getstore($libsURL, File::Spec->catfile($tmpAbsDir, $zipFile));
+die "Couldn't download $zipFile!" if is_error($result);
-$result = system "unzip", "-q", "-d", $tmpAbsDir, "$tmpAbsDir/$zipFile";
-die "Couldn't unzip $zipFile." if $result;
+my $zip = Archive::Zip->new(File::Spec->catfile($tmpAbsDir, $zipFile));
+$result = $zip->extractTree("", $tmpAbsDir);
+die "Couldn't unzip $zipFile." if $result != AZ_OK;
print "\nInstalling $file...\n";
sub wanted
{
- my $relativeName = File::Spec->abs2rel($File::Find::name, "$tmpAbsDir/$file/$prefixInZip");
- my $destination = "$webkitLibrariesDir/$relativeName";
+ my $relativeName = File::Spec->abs2rel($File::Find::name, File::Spec->catdir($tmpAbsDir, $file, $prefixInZip));
+ my $destination = File::Spec->catfile($webkitLibrariesDir, $relativeName);
if (-d $_) {
mkdir $destination;
return;
}
- system "cp", $_, $destination;
+ copy($_, $destination);
}
-File::Find::find(\&wanted, "$tmpAbsDir/$file");
+File::Find::find(\&wanted, File::Spec->catfile($tmpAbsDir, $file));
-$result = system "mv", "$tmpAbsDir/$file.headers", $webkitLibrariesDir;
-print STDERR "Couldn't move $file.headers to $webkitLibrariesDir" . ".\n" if $result;
+$result = move(File::Spec->catfile($tmpAbsDir, "$file.headers"), $webkitLibrariesDir);
+print STDERR "Couldn't move $file.headers to $webkitLibrariesDir" . ".\n" if $result == 0;
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) = @_;
diff --git a/Tools/Scripts/update-webkit-libs-jhbuild b/Tools/Scripts/update-webkit-libs-jhbuild
deleted file mode 100755
index 74dd7b6c5..000000000
--- a/Tools/Scripts/update-webkit-libs-jhbuild
+++ /dev/null
@@ -1,130 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2011 Igalia S.L.
-# Copyright (C) 2012 Intel Corporation
-#
-# 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 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
-
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-use Getopt::Long;
-
-my $platformEfl = 0;
-my $platformGtk = 0;
-
-my $getOptionsResult = GetOptions(
- 'efl' => \$platformEfl,
- 'gtk' => \$platformGtk
- );
-
-my $platform = "";
-if (!$getOptionsResult) {
- die "No platform specified for " . basename($0) .". Use --gtk or --efl.\n";
-} else {
- if ($platformEfl) {
- $platform = "efl";
- }
- if ($platformGtk) {
- $platform = "gtk";
- }
-}
-
-sub getMD5HashForFile($)
-{
- my $file = shift;
-
- open(FILE_CONTENTS, $file);
-
- my $contents = "";
- while (<FILE_CONTENTS>) {
- $contents .= $_;
- }
-
- close(FILE_CONTENTS);
-
- return md5_hex($contents);
-}
-
-sub jhbuildConfigurationChanged()
-{
- foreach my $file (qw(jhbuildrc jhbuild.modules)) {
- my $path = join('/', getJhbuildPath(), $file . '.md5sum');
- if (! -e $path) {
- return 1;
- }
-
- # Get the md5 sum of the file we're testing, look in the right platform directory.
- my $actualFile = join('/', sourceDir(), 'Tools', $platform, $file);
- my $currentSum = getMD5HashForFile($actualFile);
-
- # Get our previous record.
- open(PREVIOUS_MD5, $path);
- chomp(my $previousSum = <PREVIOUS_MD5>);
- close(PREVIOUS_MD5);
-
- if ($previousSum ne $currentSum) {
- return 1;
- }
- }
-}
-
-sub saveJhbuildMd5() {
- # Save md5sum for jhbuild-related files.saveJhbuildMd5();
- foreach my $file (qw(jhbuildrc jhbuild.modules)) {
- my $source = join('/', sourceDir(), "Tools", $platform, $file);
- my $destination = join('/', getJhbuildPath(), $file);
- open(SUM, ">$destination" . ".md5sum");
- print SUM getMD5HashForFile($source);
- close(SUM);
- }
-}
-
-sub runJhbuild
-{
- my $command = shift;
- my @jhbuildArgs = ("./jhbuild-wrapper", "--".$platform, $command);
- push(@jhbuildArgs, @ARGV[2..-1]);
- system(@jhbuildArgs) == 0 or die "Running jhbuild-wrapper " . $command . " failed.\n";
-}
-
-sub cleanJhbuild()
-{
- # If the configuration changed, dependencies may have been removed.
- # Since we lack a granular way of uninstalling those we wipe out the
- # jhbuild root and start from scratch.
- my $jhbuildPath = getJhbuildPath();
- if (system("rm -rf $jhbuildPath/Root") ne 0) {
- die "Cleaning jhbuild root failed!";
- }
-
- if (system("rm -rf $jhbuildPath/Source") ne 0) {
- die "Cleaning jhbuild sources failed!";
- }
-}
-
-delete $ENV{AR_FLAGS} if exists $ENV{AR_FLAGS};
-
-chdir(relativeScriptsDir() . "/../jhbuild") or die $!;
-
-my %prettyPlatform = ( "efl" => "EFL", "gtk" => "GTK+" );
-
-if (-e getJhbuildPath() && jhbuildConfigurationChanged()) {
- cleanJhbuild();
-}
-
-saveJhbuildMd5();
-
-print "Updating " . $prettyPlatform{$platform} . " port dependencies using jhbuild...\n";
-runJhbuild("build");
diff --git a/Tools/Scripts/update-webkit-localizable-strings b/Tools/Scripts/update-webkit-localizable-strings
deleted file mode 100755
index 8a537bffb..000000000
--- a/Tools/Scripts/update-webkit-localizable-strings
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2006, 2007, 2013 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;
-
-# WebKit and WebKit2 strings go into WebCore's Localizable.strings.
-my @webKitDirectoriesToScan = ("Source/WebCore", "Source/WebKit/mac", "Source/WebKit/win", "Source/WebKit2", "-Source/WebCore/icu", "-Source/WebKit/mac/icu");
-my @webInspectorUIDirectoriesToScan = ("Source/WebInspectorUI/UserInterface");
-
-my $webCoreFileToUpdate = "Source/WebCore/English.lproj/Localizable.strings";
-my $webInspectorUIFileToUpdate = "Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js";
-
-@ARGV == 0 or die "Usage: " . basename($0) . "\n";
-
-chdirWebKit();
-
-system "Tools/Scripts/extract-localizable-strings", "-", $webCoreFileToUpdate, @webKitDirectoriesToScan;
-system "Tools/Scripts/extract-localizable-js-strings", $webInspectorUIFileToUpdate, @webInspectorUIDirectoriesToScan;
diff --git a/Tools/Scripts/update-webkit-support-libs b/Tools/Scripts/update-webkit-support-libs
deleted file mode 100755
index 37f3ac9da..000000000
--- a/Tools/Scripts/update-webkit-support-libs
+++ /dev/null
@@ -1,149 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2005, 2006, 2007 Apple Computer, Inc. All rights reserved.
-# Copyright (C) Research In Motion Limited 2010. 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;
-
-use constant NOTAVERSION => "-1";
-
-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{'WEBKIT_LIBRARIES'}) || "$sourceDir/WebKitLibraries/win";
-my $versionFile = $file . "Version";
-my $pathToVersionFile = File::Spec->catfile($webkitLibrariesDir, $versionFile);
-my $tmpRelativeDir = File::Temp::tempdir("webkitlibsXXXXXXX", TMPDIR => 1, CLEANUP => 1);
-my $tmpAbsDir = File::Spec->rel2abs($tmpRelativeDir);
-my $versionFileURL = "https://developer.apple.com/opensource/internet/$versionFile";
-
-my $extractedVersion = extractedVersion();
-
-# Check whether the extracted library is up-to-date. If it is, we don't have anything to do.
-my $expectedVersion = downloadExpectedVersionNumber();
-if ($extractedVersion ne NOTAVERSION && $extractedVersion eq $expectedVersion) {
- print "$file is up-to-date.\n";
- exit;
-}
-
-# Check whether the downloaded library is up-to-date. If it isn't, the user needs to download it.
-my $zipFileVersion = zipFileVersion();
-dieAndInstructToDownload("$zipFile could not be found in $zipDirectory.") if $zipFileVersion eq NOTAVERSION;
-dieAndInstructToDownload("$zipFile is out-of-date.") if $expectedVersion ne NOTAVERSION && $zipFileVersion ne $expectedVersion;
-if ($zipFileVersion eq $extractedVersion) {
- print "Falling back to existing version of $file.\n";
- exit;
-}
-
-my $result = system "unzip", "-q", "-d", $tmpAbsDir, $pathToZip;
-die "Couldn't unzip $zipFile." if $result;
-
-print "\nInstalling $file...\n";
-
-sub wanted
-{
- my $relativeName = File::Spec->abs2rel($File::Find::name, "$tmpAbsDir/$file/win");
- my $destination = "$webkitLibrariesDir/$relativeName";
-
- if (-d $_) {
- mkdir $destination;
- return;
- }
-
- system "cp", $_, $destination;
-}
-
-File::Find::find(\&wanted, "$tmpAbsDir/$file");
-
-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 extractedVersion
-{
- if (open VERSION, "<", $pathToVersionFile) {
- chomp(my $extractedVersion = <VERSION>);
- close VERSION;
- return $extractedVersion;
- }
- return NOTAVERSION;
-}
-
-sub downloadExpectedVersionNumber
-{
- chomp(my $expectedVersion = `curl -s --sslv3 -k $versionFileURL`);
- return WEXITSTATUS($?) ? NOTAVERSION : $expectedVersion;
-}
-
-sub zipFileVersion
-{
- return NOTAVERSION unless -f $pathToZip;
- chomp(my $zipFileVersion = `unzip -p "$pathToZip" $file/win/$versionFile`);
- return $zipFileVersion;
-}
-
-sub dieAndInstructToDownload
-{
- my $message = shift;
-
- die <<EOF;
-
-===============================================================================
-$message
-Please download $zipFile from:
-
- https://developer.apple.com/opensource/internet/webkit_sptlib_agree.html
-
-and place it in:
-
- $sourceDir
-
-Then run build-webkit again.
-===============================================================================
-
-EOF
-
-}
diff --git a/Tools/Scripts/update-webkit-wincairo-libs b/Tools/Scripts/update-webkit-wincairo-libs
deleted file mode 100755
index 4a2bb0f35..000000000
--- a/Tools/Scripts/update-webkit-wincairo-libs
+++ /dev/null
@@ -1,41 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2012 Brent Fulgham <bfulgham@webkit.org>. All rights reserved.
-# Copyright (C) 2011 Carl Lobo. 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 FindBin;
-
-my $file = "WinCairoRequirements";
-my $zipFile = "$file.zip";
-my $winCairoLibsURL = "https://dl.dropboxusercontent.com/u/39598926/$zipFile";
-my $command = "$FindBin::Bin/update-webkit-dependency";
-
-system("perl", $command, $winCairoLibsURL, ".") == 0 or die;
diff --git a/Tools/Scripts/update-webkitefl-libs b/Tools/Scripts/update-webkitefl-libs
deleted file mode 100755
index 30b2104ab..000000000
--- a/Tools/Scripts/update-webkitefl-libs
+++ /dev/null
@@ -1,23 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2012 Intel Corporation
-#
-# 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 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
-
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $scriptsDir = relativeScriptsDir();
-system("perl", "$scriptsDir/update-webkit-libs-jhbuild", "--efl") == 0 or die $!;
diff --git a/Tools/Scripts/update-webkitgtk-libs b/Tools/Scripts/update-webkitgtk-libs
deleted file mode 100755
index 792cc28ab..000000000
--- a/Tools/Scripts/update-webkitgtk-libs
+++ /dev/null
@@ -1,24 +0,0 @@
-#!/usr/bin/perl -w
-# Copyright (C) 2011 Igalia S.L.
-# Copyright (C) 2012 Intel Corporation
-#
-# 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 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
-
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-my $scriptsDir = relativeScriptsDir();
-system("perl", "$scriptsDir/update-webkit-libs-jhbuild", "--gtk", @ARGV) == 0 or die $!;
diff --git a/Tools/Scripts/validate-committer-lists b/Tools/Scripts/validate-committer-lists
deleted file mode 100755
index 62ff9bc52..000000000
--- a/Tools/Scripts/validate-committer-lists
+++ /dev/null
@@ -1,289 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (c) 2009, 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.
-#
-# Checks Python's known list of committers against lists.webkit.org and SVN history.
-
-
-import logging
-import os
-import subprocess
-import re
-import urllib2
-from datetime import date, datetime, timedelta
-from optparse import OptionParser
-
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.checkout.scm import Git
-from webkitpy.common.net.bugzilla import Bugzilla
-
-# WebKit includes a built copy of BeautifulSoup in Scripts/webkitpy
-# so this import should always succeed.
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-_log = logging.getLogger(__name__)
-
-def print_list_if_non_empty(title, list_to_print):
- if not list_to_print:
- return
- print # Newline before the list
- print title
- for item in list_to_print:
- print item
-
-
-class CommitterListFromMailingList(object):
- committers_list_url = "http://lists.webkit.org/mailman/roster/webkit-committers"
- reviewers_list_url = "http://lists.webkit.org/mailman/roster/webkit-reviewers"
-
- def _fetch_emails_from_page(self, url):
- page = urllib2.urlopen(url)
- soup = BeautifulSoup(page)
-
- emails = []
- # Grab the cells in the first column (which happens to be the bug ids).
- for email_item in soup('li'):
- email_link = email_item.find("a")
- email = email_link.string.replace(" at ", "@") # The email is obfuscated using " at " instead of "@".
- emails.append(email)
- return emails
-
- @staticmethod
- def _commiters_not_found_in_email_list(committers, emails):
- missing_from_mailing_list = []
- for committer in committers:
- for email in committer.emails:
- if email in emails:
- break
- else:
- missing_from_mailing_list.append(committer)
- return missing_from_mailing_list
-
- @staticmethod
- def _emails_not_found_in_committer_list(committers, emails):
- email_to_committer_map = {}
- for committer in committers:
- for email in committer.emails:
- email_to_committer_map[email] = committer
-
- return filter(lambda email: not email_to_committer_map.get(email), emails)
-
- def check_for_emails_missing_from_list(self, committer_list):
- committer_emails = self._fetch_emails_from_page(self.committers_list_url)
- list_name = "webkit-committers@lists.webkit.org"
-
- missing_from_mailing_list = self._commiters_not_found_in_email_list(committer_list.committers(), committer_emails)
- print_list_if_non_empty("Committers missing from %s:" % list_name, missing_from_mailing_list)
-
- users_missing_from_committers = self._emails_not_found_in_committer_list(committer_list.committers(), committer_emails)
- print_list_if_non_empty("Subcribers to %s missing from contributors.json:" % list_name, users_missing_from_committers)
-
-
- reviewer_emails = self._fetch_emails_from_page(self.reviewers_list_url)
- list_name = "webkit-reviewers@lists.webkit.org"
-
- missing_from_mailing_list = self._commiters_not_found_in_email_list(committer_list.reviewers(), reviewer_emails)
- print_list_if_non_empty("Reviewers missing from %s:" % list_name, missing_from_mailing_list)
-
- missing_from_reviewers = self._emails_not_found_in_committer_list(committer_list.reviewers(), reviewer_emails)
- print_list_if_non_empty("Subcribers to %s missing from reviewers in contributors.json:" % list_name, missing_from_reviewers)
-
- missing_from_committers = self._emails_not_found_in_committer_list(committer_list.committers(), reviewer_emails)
- print_list_if_non_empty("Subcribers to %s completely missing from contributors.json:" % list_name, missing_from_committers)
-
-
-class CommitterListFromGit(object):
- login_to_email_address = {
- 'aliceli1' : 'alice.liu@apple.com',
- 'bdash' : 'mrowe@apple.com',
- 'bdibello' : 'bdibello@apple.com', # Bruce DiBello, only 4 commits: r10023, r9548, r9538, r9535
- 'cblu' : 'cblu@apple.com',
- 'cpeterse' : 'cpetersen@apple.com',
- 'eseidel' : 'eric@webkit.org',
- 'gdennis' : 'gdennis@webkit.org',
- 'goldsmit' : 'goldsmit@apple.com', # Debbie Goldsmith, only one commit r8839
- 'gramps' : 'gramps@apple.com',
- 'honeycutt' : 'jhoneycutt@apple.com',
- 'jdevalk' : 'joost@webkit.org',
- 'jens' : 'jens@apple.com',
- 'justing' : 'justin.garcia@apple.com',
- 'kali' : 'kali@apple.com', # Christy Warren, did BIDI work, 5 commits: r8815, r8802, r8801, r8791, r8773, r8603
- 'kjk' : 'kkowalczyk@gmail.com',
- 'kmccullo' : 'kmccullough@apple.com',
- 'kocienda' : 'kocienda@apple.com',
- 'lamadio' : 'lamadio@apple.com', # Lou Amadio, only 2 commits: r17949 and r17783
- 'lars' : 'lars@kde.org',
- 'lweintraub' : 'lweintraub@apple.com',
- 'lypanov' : 'lypanov@kde.org',
- 'mhay' : 'mhay@apple.com', # Mike Hay, 3 commits: r3813, r2552, r2548
- 'ouch' : 'ouch@apple.com', # John Louch
- 'pyeh' : 'patti@apple.com', # Patti Yeh, did VoiceOver work in WebKit
- 'rjw' : 'rjw@apple.com',
- 'seangies' : 'seangies@apple.com', # Sean Gies?, only 5 commits: r16600, r16592, r16511, r16489, r16484
- 'sheridan' : 'sheridan@apple.com', # Shelly Sheridan
- 'thatcher' : 'timothy@apple.com',
- 'tomernic' : 'timo@apple.com',
- 'trey' : 'trey@usa.net',
- 'tristan' : 'tristan@apple.com',
- 'vicki' : 'vicki@apple.com',
- 'voas' : 'voas@apple.com', # Ed Voas, did some Carbon work in WebKit
- 'zack' : 'zack@kde.org',
- 'zimmermann' : 'zimmermann@webkit.org',
- }
-
- def __init__(self):
- self._last_commit_time_by_author_cache = {}
-
- def _fetch_authors_and_last_commit_time_from_git_log(self):
- last_commit_dates = {}
- git_log_args = ['git', 'log', '--reverse', '--pretty=format:%ae %at']
- process = subprocess.Popen(git_log_args, stdout=subprocess.PIPE)
-
- # eric@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc 1257090899
- line_regexp = re.compile("^(?P<author>.+)@\S+ (?P<timestamp>\d+)$")
- while True:
- output_line = process.stdout.readline()
- if output_line == '' and process.poll() != None:
- return last_commit_dates
-
- match_result = line_regexp.match(output_line)
- if not match_result:
- _log.error("Failed to match line: %s" % output_line)
- exit(1)
- last_commit_dates[match_result.group('author')] = float(match_result.group('timestamp'))
-
- def _fill_in_emails_for_old_logins(self):
- authors_missing_email = filter(lambda author: author.find('@') == -1, self._last_commit_time_by_author_cache)
- authors_with_email = filter(lambda author: author.find('@') != -1, self._last_commit_time_by_author_cache)
- prefixes_of_authors_with_email = map(lambda author: author.split('@')[0], authors_with_email)
-
- for author in authors_missing_email:
- # First check to see if we have a manual mapping from login to email.
- author_email = self.login_to_email_address.get(author)
-
- # Most old logins like 'darin' are now just 'darin@apple.com', so check for a prefix match if a manual mapping was not found.
- if not author_email and author in prefixes_of_authors_with_email:
- author_email_index = prefixes_of_authors_with_email.index(author)
- author_email = authors_with_email[author_email_index]
-
- if not author_email:
- # No known email mapping, likely not an active committer. We could log here.
- continue
-
- # _log.info("%s -> %s" % (author, author_email)) # For sanity checking.
- no_email_commit_time = self._last_commit_time_by_author_cache.get(author)
- email_commit_time = self._last_commit_time_by_author_cache.get(author_email)
- # We compare the timestamps for extra sanity even though we could assume commits before email address were used for login are always going to be older.
- if not email_commit_time or email_commit_time < no_email_commit_time:
- self._last_commit_time_by_author_cache[author_email] = no_email_commit_time
- del self._last_commit_time_by_author_cache[author]
-
- def _last_commit_by_author(self):
- if not self._last_commit_time_by_author_cache:
- self._last_commit_time_by_author_cache = self._fetch_authors_and_last_commit_time_from_git_log()
- self._fill_in_emails_for_old_logins()
- del self._last_commit_time_by_author_cache['(no author)'] # The initial svn import isn't very useful.
- return self._last_commit_time_by_author_cache
-
- @staticmethod
- def _print_three_column_row(widths, values):
- print "%s%s%s" % (values[0].ljust(widths[0]), values[1].ljust(widths[1]), values[2])
-
- def print_possibly_expired_committers(self, committer_list):
- authors_and_last_commits = self._last_commit_by_author().items()
- authors_and_last_commits.sort(lambda a,b: cmp(a[1], b[1]), reverse=True)
- committer_cuttof = date.today() - timedelta(days=365)
- column_widths = [13, 25]
- print
- print "Committers who have not committed within one year:"
- self._print_three_column_row(column_widths, ("Last Commit", "Committer Email", "Committer Record"))
- for (author, last_commit) in authors_and_last_commits:
- last_commit_date = date.fromtimestamp(last_commit)
- if committer_cuttof > last_commit_date:
- committer_record = committer_list.committer_by_email(author)
- self._print_three_column_row(column_widths, (str(last_commit_date), author, committer_record))
-
- def print_committers_missing_from_committer_list(self, committer_list):
- missing_from_contributors_json = []
- last_commit_time_by_author = self._last_commit_by_author()
- for author in last_commit_time_by_author:
- if not committer_list.committer_by_email(author):
- missing_from_contributors_json.append(author)
-
- never_committed = []
- for committer in committer_list.committers():
- for email in committer.emails:
- if last_commit_time_by_author.get(email):
- break
- else:
- never_committed.append(committer)
-
- print_list_if_non_empty("Historical committers missing from contributors.json:", missing_from_contributors_json)
- print_list_if_non_empty("Committers in contributors.json who have never committed:", never_committed)
-
-
-class CommitterListBugzillaChecker(object):
- def __init__(self):
- self._bugzilla = Bugzilla()
-
- def _has_invalid_bugzilla_email(self, committer):
- return not self._bugzilla.queries.fetch_logins_matching_substring(committer.bugzilla_email())
-
- def print_committers_with_invalid_bugzilla_emails(self, committer_list):
- print # Print a newline before we start hitting bugzilla (it logs about logging in).
- print "Checking committer emails against bugzilla (this will take a long time)"
- committers_with_invalid_bugzilla_email = filter(self._has_invalid_bugzilla_email, committer_list.committers())
- print_list_if_non_empty("Committers with invalid bugzilla email:", committers_with_invalid_bugzilla_email)
-
-
-def main():
- parser = OptionParser()
- parser.add_option("-b", "--check-bugzilla-emails", action="store_true", help="Check the bugzilla_email for each committer against bugs.webkit.org")
- (options, args) = parser.parse_args()
-
- committer_list = CommitterList()
- CommitterListFromMailingList().check_for_emails_missing_from_list(committer_list)
-
- if not Git.in_working_directory("."):
- print """\n\nWARNING: validate-committer-lists requires a git checkout.
-The following checks are disabled:
- - List of committers ordered by last commit
- - List of historical committers missing from contributors.json
-"""
- return 1
- svn_committer_list = CommitterListFromGit()
- svn_committer_list.print_possibly_expired_committers(committer_list)
- svn_committer_list.print_committers_missing_from_committer_list(committer_list)
-
- if options.check_bugzilla_emails:
- CommitterListBugzillaChecker().print_committers_with_invalid_bugzilla_emails(committer_list)
-
-
-if __name__ == "__main__":
- main()
diff --git a/Tools/Scripts/webkit-build-directory b/Tools/Scripts/webkit-build-directory
index d19ce0418..5bac3708a 100755
--- a/Tools/Scripts/webkit-build-directory
+++ b/Tools/Scripts/webkit-build-directory
@@ -1,6 +1,7 @@
-#!/usr/bin/perl
+#!/usr/bin/perl -w
# Copyright (C) 2010 Google Inc. All rights reserved.
+# Copyright (C) 2013, 2015 Apple Inc. All rights reserved.
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions
@@ -11,7 +12,7 @@
# 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
+# 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.
#
@@ -35,6 +36,7 @@ use lib $FindBin::Bin;
use webkitdirs;
my $showConfigurationDirectory = 0;
+my $showExecutablePath = 0;
my $showHelp = 0;
my $showTopLevelDirectory = 0;
@@ -43,15 +45,13 @@ my $programName = basename($0);
my $usage = <<EOF;
Usage: $programName [options]
--configuration Show the build directory for a specific configuration (e.g. Debug, Release. Defaults to the active configuration set by set-webkit-configuration)
+ --executablePath Show the path to the executables produced by a specific build configuration. This differs from --configuration on Windows.
-h|--help Show this help message
--top-level Show the top-level build directory
- --blackberry Find the build directory for the BlackBerry port on Mac/Linux
--efl Find the build directory for the EFL port
--gtk Find the build directory for the GTK+ port
- --qt Find the build directory for the Qt port
--wincairo Find the build directory for using Cairo (rather than CoreGraphics) on Windows
- --wince Find the build directory for the WinCE port
Either --configuration or --top-level is required.
EOF
@@ -62,6 +62,7 @@ setConfiguration(); # Figure out from the command line if we're --debug or --rel
Getopt::Long::Configure('pass_through'); # Let --blackberry, etc... be handled by webkitdirs
my $getOptionsResult = GetOptions(
'configuration' => \$showConfigurationDirectory,
+ 'executablePath' => \$showExecutablePath,
'top-level' => \$showTopLevelDirectory,
'help|h' => \$showHelp,
);
@@ -71,11 +72,13 @@ if (!$getOptionsResult || $showHelp) {
exit 1;
}
-if (!$showConfigurationDirectory && !$showTopLevelDirectory) {
+if (!$showConfigurationDirectory && !$showTopLevelDirectory && !$showExecutablePath) {
print baseProductDir() . "\n";
print productDir() . "\n";
} elsif ($showTopLevelDirectory) {
print baseProductDir() . "\n";
+} elsif ($showExecutablePath) {
+ print executableProductDir() . "\n";
} else {
print productDir() . "\n";
}
diff --git a/Tools/Scripts/webkit-patch b/Tools/Scripts/webkit-patch
deleted file mode 100755
index 2ed9d8dae..000000000
--- a/Tools/Scripts/webkit-patch
+++ /dev/null
@@ -1,86 +0,0 @@
-#!/usr/bin/env python
-# Copyright (c) 2011 Code Aurora Forum. All rights reserved.
-# Copyright (c) 2010 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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.
-#
-# A tool for automating dealing with bugzilla, posting patches, committing patches, etc.
-
-import logging
-import os
-import signal
-import sys
-import codecs
-
-import webkitpy.common.version_check
-
-from webkitpy.common.system.logutils import configure_logging
-from webkitpy.tool.main import WebKitPatch
-
-# A StreamWriter will by default try to encode all objects passed
-# to write(), so when passed a raw string already encoded as utf8,
-# it will blow up with an UnicodeDecodeError. This does not match
-# the default behaviour of writing to sys.stdout, so we intercept
-# the case of writing raw strings and make sure StreamWriter gets
-# input that it can handle.
-class ForgivingUTF8Writer(codecs.lookup('utf-8')[-1]):
- def write(self, object):
- if isinstance(object, str):
- # Assume raw strings are utf-8 encoded. If this line
- # fails with an UnicodeDecodeError, our assumption was
- # wrong, and the stacktrace should show you where we
- # write non-Unicode/UTF-8 data (which we shouldn't).
- object = object.decode('utf-8')
- return codecs.StreamWriter.write(self, object)
-
-# By default, sys.stdout assumes ascii encoding. Since our messages can
-# contain unicode strings (as with some peoples' names) we need to apply
-# the utf-8 codec to prevent throwing and exception.
-# Not having this was the cause of https://bugs.webkit.org/show_bug.cgi?id=63452.
-sys.stdout = ForgivingUTF8Writer(sys.stdout)
-
-_log = logging.getLogger("webkit-patch")
-
-def main():
- # This is a hack to let us enable DEBUG logging as early as possible.
- # Note this can't be ternary as versioning.check_version()
- # hasn't run yet and this python might be older than 2.5.
- if set(["-v", "--verbose"]).intersection(set(sys.argv)):
- logging_level = logging.DEBUG
- else:
- logging_level = logging.INFO
- configure_logging(logging_level=logging_level)
- WebKitPatch(os.path.abspath(__file__)).main()
-
-
-if __name__ == "__main__":
- try:
- main()
- except KeyboardInterrupt:
- sys.exit(signal.SIGINT + 128)
diff --git a/Tools/Scripts/webkit-tools-completion.sh b/Tools/Scripts/webkit-tools-completion.sh
deleted file mode 100755
index a57a1aba5..000000000
--- a/Tools/Scripts/webkit-tools-completion.sh
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright (C) 2009 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.
-#
-# Command line completion for common commands used in WebKit development.
-#
-# Set-up:
-# Add a line like this to your .bashrc:
-# source /path/to/WebKitCode/Tools/Scripts/webkit-tools-completion.sh
-
-__webkit-patch_generate_reply()
-{
- COMPREPLY=( $(compgen -W "$1" -- "${COMP_WORDS[COMP_CWORD]}") )
-}
-
-__webkit-patch_upload_cc_generate_reply()
-{
- # Note: This won't work well if hostname completion is enabled, disable it with: shopt -u hostcomplete
- # Completion is done on tokens and our comma-separated list is one single token, so we have to do completion on the whole list each time.
- # Return a \n separated list for each possible bugzilla email completion of the substring following the last comma.
- # Redirect strerr to /dev/null to prevent noise in the shell if this ever breaks somehow.
- COMPREPLY=( $(PYTHONPATH=$(dirname "${BASH_SOURCE[0]}") python -c "
-import sys,re
-from webkitpy.common.config.committers import CommitterList
-m = re.match('((.*,)*)(.*)', sys.argv[1])
-untilLastComma = m.group(1)
-afterLastComma = m.group(3)
-print('\n'.join([untilLastComma + c.bugzilla_email() + ',' for c in CommitterList().contributors() if c.bugzilla_email().startswith(afterLastComma)]))" "${COMP_WORDS[COMP_CWORD]}" 2>/dev/null ) )
-}
-
-_webkit-patch_complete()
-{
- local command current_command="${COMP_WORDS[1]}"
- case "$current_command" in
- -h|--help)
- command="help";
- ;;
- *)
- command="$current_command"
- ;;
- esac
-
- if [ $COMP_CWORD -eq 1 ]; then
- __webkit-patch_generate_reply "--help apply-from-bug bugs-to-commit commit-message land land-from-bug obsolete-attachments patches-to-commit post upload tree-status rollout reviewed-patches"
- return
- fi
-
- case "$command" in
- apply-from-bug)
- __webkit-patch_generate_reply "--force-clean --local-commit --no-clean --no-update"
- return
- ;;
- commit-message)
- return
- ;;
- land)
- __webkit-patch_generate_reply "--no-build --no-close --no-test --reviewer= -r"
- return
- ;;
- land-from-bug)
- __webkit-patch_generate_reply "--force-clean --no-build --no-clean --no-test"
- return
- ;;
- obsolete-attachments)
- return
- ;;
- post)
- __webkit-patch_generate_reply "--description --no-obsolete --no-review --request-commit -m --open-bug"
- return
- ;;
- upload)
- if [[ ${COMP_WORDS[COMP_CWORD-1]} == "--cc" || ${COMP_WORDS[COMP_CWORD-1]} == "=" && ${COMP_WORDS[COMP_CWORD-2]} == "--cc" ]]; then
- __webkit-patch_upload_cc_generate_reply
- return
- fi
- __webkit-patch_generate_reply "--description --no-obsolete --no-review --request-commit --cc -m --open-bug"
- return
- ;;
- post-commits)
- __webkit-patch_generate_reply "--bug-id= --no-comment --no-obsolete --no-review -b"
- return
- ;;
- esac
-}
-
-complete -F _webkit-patch_complete webkit-patch
-complete -o default -W "--continue --fix-merged --help --no-continue --no-warnings --warnings -c -f -h -w" resolve-ChangeLogs
-complete -o default -W "--bug --diff --git-commit --git-index --git-reviewer --help --no-update --no-write --open --update --write -d -h -o" prepare-ChangeLog
-complete -W "--clean --debug --help -h" build-webkit
-complete -o default -W "--add-platform-exceptions --complex-text --configuration --guard-malloc --help --http --ignore-tests --launch-safari --leaks --merge-leak-depth --new-test-results --no-http --no-show-results --no-new-test-results --no-sample-on-timeout --no-strip-editing-callbacks --pixel-tests --platform --port --quiet --random --reset-results --results-directory --reverse --root --sample-on-timeout --singly --skipped --slowest --strict --strip-editing-callbacks --threaded --timeout --tolerance --use-remote-links-to-tests --valgrind --verbose -1 -c -g -h -i -l -m -o -p -q -t -v" run-webkit-tests
diff --git a/Tools/Scripts/webkitdirs.pm b/Tools/Scripts/webkitdirs.pm
index 1eeabfe9d..84b18c7b6 100755
--- a/Tools/Scripts/webkitdirs.pm
+++ b/Tools/Scripts/webkitdirs.pm
@@ -1,6 +1,7 @@
-# Copyright (C) 2005, 2006, 2007, 2010, 2011, 2012 Apple Inc. All rights reserved.
+# Copyright (C) 2005-2007, 2010-2016 Apple Inc. All rights reserved.
# Copyright (C) 2009 Google Inc. All rights reserved.
# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
+# Copyright (C) 2013 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
@@ -11,7 +12,7 @@
# 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
+# 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.
#
@@ -32,13 +33,17 @@ use strict;
use version;
use warnings;
use Config;
+use Cwd qw(realpath);
use Digest::MD5 qw(md5_hex);
use FindBin;
use File::Basename;
-use File::Path qw(mkpath rmtree);
+use File::Find;
+use File::Path qw(make_path mkpath rmtree);
use File::Spec;
use File::stat;
+use List::Util;
use POSIX;
+use Time::HiRes qw(usleep);
use VCSUtils;
BEGIN {
@@ -47,36 +52,75 @@ BEGIN {
$VERSION = 1.00;
@ISA = qw(Exporter);
@EXPORT = qw(
+ &XcodeCoverageSupportOptions
&XcodeOptionString
&XcodeOptionStringNoConfig
&XcodeOptions
+ &XcodeStaticAnalyzerOption
+ &appDisplayNameFromBundle
+ &appendToEnvironmentVariableList
&baseProductDir
&chdirWebKit
&checkFrameworks
&cmakeBasedPortArguments
- &cmakeBasedPortName
&currentSVNRevision
&debugSafari
+ &executableProductDir
+ &findOrCreateSimulatorForIOSDevice
+ &iosSimulatorDeviceByName
&nmPath
&passedConfiguration
+ &prependToEnvironmentVariableList
&printHelpAndExitForRunAndDebugWebKitAppIfNeeded
&productDir
+ &quitIOSSimulator
+ &relaunchIOSSimulator
+ &restartIOSSimulatorDevice
+ &runIOSWebKitApp
&runMacWebKitApp
&safariPath
+ &iosVersion
&setConfiguration
+ &setupMacWebKitEnvironment
+ &sharedCommandLineOptions
+ &sharedCommandLineOptionsUsage
+ &shutDownIOSSimulatorDevice
+ &willUseIOSDeviceSDK
+ &willUseIOSSimulatorSDK
+ SIMULATOR_DEVICE_SUFFIX_FOR_WEBKIT_DEVELOPMENT
USE_OPEN_COMMAND
);
%EXPORT_TAGS = ( );
@EXPORT_OK = ();
}
+# Ports
+use constant {
+ AppleWin => "AppleWin",
+ GTK => "GTK",
+ Efl => "Efl",
+ iOS => "iOS",
+ Mac => "Mac",
+ Qt => "Qt",
+ WinCairo => "WinCairo",
+ Unknown => "Unknown"
+};
+
use constant USE_OPEN_COMMAND => 1; # Used in runMacWebKitApp().
use constant INCLUDE_OPTIONS_FOR_DEBUGGING => 1;
+use constant SIMULATOR_DEVICE_STATE_SHUTDOWN => "1";
+use constant SIMULATOR_DEVICE_STATE_BOOTED => "3";
+use constant SIMULATOR_DEVICE_SUFFIX_FOR_WEBKIT_DEVELOPMENT => "For WebKit Development";
+
+# See table "Certificate types and names" on <https://developer.apple.com/library/ios/documentation/IDEs/Conceptual/AppDistributionGuide/MaintainingCertificates/MaintainingCertificates.html#//apple_ref/doc/uid/TP40012582-CH31-SW41>.
+use constant IOS_DEVELOPMENT_CERTIFICATE_NAME_PREFIX => "iPhone Developer: ";
our @EXPORT_OK;
my $architecture;
+my $asanIsEnabled;
my $numberOfCPUs;
+my $maxCPULoad;
my $baseProductDir;
my @baseProductDirOption;
my $configuration;
@@ -86,27 +130,26 @@ my $configurationProductDir;
my $sourceDir;
my $currentSVNRevision;
my $debugger;
+my $didLoadIPhoneSimulatorNotification;
my $nmPath;
my $osXVersion;
+my $iosVersion;
my $generateDsym;
-my $isQt;
-my $qmakebin = "qmake"; # Allow override of the qmake binary from $PATH
-my $isGtk;
-my $isWinCE;
-my $isWinCairo;
-my $isEfl;
-my $isBlackBerry;
+my $isCMakeBuild;
+my $isWin64;
my $isInspectorFrontend;
-my $isWK2;
-my $shouldTargetWebProcess;
-my $shouldUseXPCServiceForWebProcess;
+my $portName;
my $shouldUseGuardMalloc;
+my $shouldNotUseNinja;
my $xcodeVersion;
+my $unknownPortProhibited = 0;
+
# Variables for Win32 support
my $programFilesPath;
my $vcBuildPath;
my $vsInstallDir;
+my $msBuildInstallDir;
my $vsVersion;
my $windowsSourceDir;
my $winVersion;
@@ -115,6 +158,9 @@ my $willUseVCExpressWhenBuilding = 0;
# Defined in VCSUtils.
sub exitStatus($);
+sub findMatchingArguments($$);
+sub hasArgument($$);
+
sub determineSourceDir
{
return if $sourceDir;
@@ -123,14 +169,14 @@ sub determineSourceDir
# walks up path checking each directory to see if it is the main WebKit project dir,
# defined by containing Sources, WebCore, and WebKit
- until ((-d "$sourceDir/Source" && -d "$sourceDir/Source/WebCore" && -d "$sourceDir/Source/WebKit") || (-d "$sourceDir/Internal" && -d "$sourceDir/OpenSource"))
+ until ((-d File::Spec->catdir($sourceDir, "Source") && -d File::Spec->catdir($sourceDir, "Source", "WebCore") && -d File::Spec->catdir($sourceDir, "Source", "WebKit")) || (-d File::Spec->catdir($sourceDir, "Internal") && -d File::Spec->catdir($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";
+ $sourceDir = File::Spec->catdir($sourceDir, "OpenSource") if -d File::Spec->catdir($sourceDir, "OpenSource");
}
sub currentPerlPath()
@@ -142,17 +188,18 @@ sub currentPerlPath()
return $thisPerl;
}
-sub setQmakeBinaryPath($)
-{
- ($qmakebin) = @_;
-}
-
# used for scripts which are stored in a non-standard location
sub setSourceDir($)
{
($sourceDir) = @_;
}
+sub determineNinjaVersion
+{
+ chomp(my $ninjaVersion = `ninja --version`);
+ return $ninjaVersion;
+}
+
sub determineXcodeVersion
{
return if defined $xcodeVersion;
@@ -221,12 +268,7 @@ sub determineBaseProductDir
}
if (!defined($baseProductDir)) { # Port-specific checks failed, use default
- $baseProductDir = "$sourceDir/WebKitBuild";
- }
-
- if (isBlackBerry()) {
- my %archInfo = blackberryTargetArchitecture();
- $baseProductDir = "$baseProductDir/" . $archInfo{"cpuDir"};
+ $baseProductDir = File::Spec->catdir($sourceDir, "WebKitBuild");
}
if (isGit() && isGitBranchBuild()) {
@@ -250,7 +292,7 @@ sub determineBaseProductDir
$ENV{"WEBKIT_OUTPUTDIR"} = $dosBuildPath;
my $unixBuildPath = `cygpath --unix \"$baseProductDir\"`;
chomp $unixBuildPath;
- $baseProductDir = $unixBuildPath;
+ $baseProductDir = $dosBuildPath;
}
}
@@ -275,12 +317,6 @@ sub determineConfiguration
} else {
$configuration = "Release";
}
-
- if ($configuration && isWinCairo()) {
- unless ($configuration =~ /_WinCairo$/) {
- $configuration .= "_WinCairo";
- }
- }
}
sub determineArchitecture
@@ -292,14 +328,7 @@ sub determineArchitecture
determineBaseProductDir();
determineXcodeSDK();
- if (isGtk()) {
- determineConfigurationProductDir();
- my $host_triple = `grep -E '^host = ' $configurationProductDir/GNUmakefile 2> /dev/null`;
- if ($host_triple =~ m/^host = ([^-]+)-/) {
- # We have a configured build tree; use it.
- $architecture = $1;
- }
- } elsif (isAppleMacWebKit()) {
+ if (isAppleMacWebKit()) {
if (open ARCHITECTURE, "$baseProductDir/Architecture") {
$architecture = <ARCHITECTURE>;
close ARCHITECTURE;
@@ -312,31 +341,56 @@ sub determineArchitecture
chomp $supports64Bit;
$architecture = 'x86_64' if $supports64Bit;
} elsif ($xcodeSDK =~ /^iphonesimulator/) {
- $architecture = 'i386';
+ $architecture = 'x86_64';
} elsif ($xcodeSDK =~ /^iphoneos/) {
$architecture = 'armv7';
}
}
- } elsif (isEfl()) {
+ } elsif (isCMakeBuild()) {
my $host_processor = "";
- $host_processor = `cmake --system-information | grep CMAKE_SYSTEM_PROCESSOR`;
- if ($host_processor =~ m/^CMAKE_SYSTEM_PROCESSOR \"([^"]+)\"/) {
- # We have a configured build tree; use it.
- $architecture = $1;
- $architecture = 'x86_64' if $architecture eq 'amd64';
+ if (open my $cmake_sysinfo, "cmake --system-information |") {
+ while (<$cmake_sysinfo>) {
+ next unless index($_, 'CMAKE_SYSTEM_PROCESSOR') == 0;
+ if (/^CMAKE_SYSTEM_PROCESSOR \"([^"]+)\"/) {
+ $architecture = $1;
+ $architecture = 'x86_64' if $architecture eq 'amd64';
+ last;
+ }
+ }
+ close $cmake_sysinfo;
}
}
- if (!$architecture && (isGtk() || isAppleMacWebKit() || isEfl())) {
- # Fall back to output of `arch', if it is present.
- $architecture = `arch`;
- chomp $architecture;
+ if (!isAnyWindows()) {
+ if (!$architecture) {
+ # Fall back to output of `arch', if it is present.
+ $architecture = `arch`;
+ chomp $architecture;
+ }
+
+ if (!$architecture) {
+ # Fall back to output of `uname -m', if it is present.
+ $architecture = `uname -m`;
+ chomp $architecture;
+ }
}
- if (!$architecture && (isGtk() || isAppleMacWebKit() || isEfl())) {
- # Fall back to output of `uname -m', if it is present.
- $architecture = `uname -m`;
- chomp $architecture;
+ $architecture = 'x86_64' if ($architecture =~ /amd64/ && isBSD());
+}
+
+sub determineASanIsEnabled
+{
+ return if defined $asanIsEnabled;
+ determineBaseProductDir();
+
+ $asanIsEnabled = 0;
+ my $asanConfigurationValue;
+
+ if (open ASAN, "$baseProductDir/ASan") {
+ $asanConfigurationValue = <ASAN>;
+ close ASAN;
+ chomp $asanConfigurationValue;
+ $asanIsEnabled = 1 if $asanConfigurationValue eq "YES";
}
}
@@ -352,20 +406,28 @@ sub determineNumberOfCPUs
if ($numberOfCPUs eq "") {
$numberOfCPUs = (grep /processor/, `cat /proc/cpuinfo`);
}
- } elsif (isWindows() || isCygwin()) {
+ } elsif (isAnyWindows()) {
# Assumes cygwin
$numberOfCPUs = `ls /proc/registry/HKEY_LOCAL_MACHINE/HARDWARE/DESCRIPTION/System/CentralProcessor | wc -w`;
- } elsif (isDarwin() || isFreeBSD()) {
+ } elsif (isDarwin() || isBSD()) {
chomp($numberOfCPUs = `sysctl -n hw.ncpu`);
}
}
+sub determineMaxCPULoad
+{
+ return if defined $maxCPULoad;
+ if (defined($ENV{MAX_CPU_LOAD})) {
+ $maxCPULoad = $ENV{MAX_CPU_LOAD};
+ }
+}
+
sub jscPath($)
{
my ($productDir) = @_;
my $jscName = "jsc";
- $jscName .= "_debug" if configurationForVisualStudio() eq "Debug_All";
- $jscName .= ".exe" if (isWindows() || isCygwin());
+ $jscName .= "_debug" if configuration() eq "Debug_All";
+ $jscName .= ".exe" if (isAnyWindows());
return "$productDir/$jscName" if -e "$productDir/$jscName";
return "$productDir/JavaScriptCore.framework/Resources/$jscName";
}
@@ -374,17 +436,21 @@ sub argumentsForConfiguration()
{
determineConfiguration();
determineArchitecture();
+ determineXcodeSDK();
my @args = ();
- push(@args, '--debug') if $configuration eq "Debug";
- push(@args, '--release') if $configuration eq "Release";
- push(@args, '--32-bit') if $architecture ne "x86_64";
- push(@args, '--qt') if isQt();
+ # FIXME: Is it necessary to pass --debug, --release, --32-bit or --64-bit?
+ # These are determined automatically from stored configuration.
+ push(@args, '--debug') if ($configuration =~ "^Debug");
+ push(@args, '--release') if ($configuration =~ "^Release");
+ push(@args, '--device') if (defined $xcodeSDK && $xcodeSDK =~ /^iphoneos/);
+ push(@args, '--ios-simulator') if (defined $xcodeSDK && $xcodeSDK =~ /^iphonesimulator/);
+ push(@args, '--32-bit') if ($architecture ne "x86_64" and !isWin64());
+ push(@args, '--64-bit') if (isWin64());
push(@args, '--gtk') if isGtk();
push(@args, '--efl') if isEfl();
+ push(@args, '--qt') if isQt();
push(@args, '--wincairo') if isWinCairo();
- push(@args, '--wince') if isWinCE();
- push(@args, '--blackberry') if isBlackBerry();
push(@args, '--inspector-frontend') if isInspectorFrontend();
return @args;
}
@@ -392,18 +458,16 @@ sub argumentsForConfiguration()
sub determineXcodeSDK
{
return if defined $xcodeSDK;
- for (my $i = 0; $i <= $#ARGV; $i++) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--sdk$/i) {
- splice(@ARGV, $i, 1);
- $xcodeSDK = splice(@ARGV, $i, 1);
- } elsif ($opt =~ /^--device$/i) {
- splice(@ARGV, $i, 1);
- $xcodeSDK = 'iphoneos.internal';
- } elsif ($opt =~ /^--sim(ulator)?/i) {
- splice(@ARGV, $i, 1);
- $xcodeSDK = 'iphonesimulator';
- }
+ my $sdk;
+ if (checkForArgumentAndRemoveFromARGVGettingValue("--sdk", \$sdk)) {
+ $xcodeSDK = $sdk;
+ }
+ if (checkForArgumentAndRemoveFromARGV("--device")) {
+ my $hasInternalSDK = exitStatus(system("xcrun --sdk iphoneos.internal --show-sdk-version > /dev/null 2>&1")) == 0;
+ $xcodeSDK ||= $hasInternalSDK ? "iphoneos.internal" : "iphoneos";
+ }
+ if (checkForArgumentAndRemoveFromARGV("--ios-simulator")) {
+ $xcodeSDK ||= 'iphonesimulator';
}
}
@@ -413,6 +477,47 @@ sub xcodeSDK
return $xcodeSDK;
}
+sub setXcodeSDK($)
+{
+ ($xcodeSDK) = @_;
+}
+
+
+sub xcodeSDKPlatformName()
+{
+ determineXcodeSDK();
+ return "" if !defined $xcodeSDK;
+ return "iphoneos" if $xcodeSDK =~ /iphoneos/i;
+ return "iphonesimulator" if $xcodeSDK =~ /iphonesimulator/i;
+ return "macosx" if $xcodeSDK =~ /macosx/i;
+ die "Couldn't determine platform name from Xcode SDK";
+}
+
+sub XcodeSDKPath
+{
+ determineXcodeSDK();
+
+ die "Can't find the SDK path because no Xcode SDK was specified" if not $xcodeSDK;
+
+ my $sdkPath = `xcrun --sdk $xcodeSDK --show-sdk-path` if $xcodeSDK;
+ die 'Failed to get SDK path from xcrun' if $?;
+ chomp $sdkPath;
+
+ return $sdkPath;
+}
+
+sub xcodeSDKVersion
+{
+ determineXcodeSDK();
+
+ die "Can't find the SDK version because no Xcode SDK was specified" if !$xcodeSDK;
+
+ chomp(my $sdkVersion = `xcrun --sdk $xcodeSDK --show-sdk-version`);
+ die "Failed to get SDK version from xcrun" if exitStatus($?);
+
+ return $sdkVersion;
+}
+
sub programFilesPath
{
return $programFilesPath if defined $programFilesPath;
@@ -430,21 +535,35 @@ sub visualStudioInstallDir
$vsInstallDir = $ENV{'VSINSTALLDIR'};
$vsInstallDir =~ s|[\\/]$||;
} else {
- $vsInstallDir = File::Spec->catdir(programFilesPath(), "Microsoft Visual Studio 10.0");
+ $vsInstallDir = File::Spec->catdir(programFilesPath(), "Microsoft Visual Studio 14.0");
}
chomp($vsInstallDir = `cygpath "$vsInstallDir"`) if isCygwin();
+ print "Using Visual Studio: $vsInstallDir\n";
return $vsInstallDir;
}
+sub msBuildInstallDir
+{
+ return $msBuildInstallDir if defined $msBuildInstallDir;
+
+ $msBuildInstallDir = File::Spec->catdir(programFilesPath(), "MSBuild", "14.0", "Bin");
+
+ chomp($msBuildInstallDir = `cygpath "$msBuildInstallDir"`) if isCygwin();
+
+ print "Using MSBuild: $msBuildInstallDir\n";
+ return $msBuildInstallDir;
+}
+
sub visualStudioVersion
{
return $vsVersion if defined $vsVersion;
my $installDir = visualStudioInstallDir();
- $vsVersion = ($installDir =~ /Microsoft Visual Studio ([0-9]+\.[0-9]*)/) ? $1 : "8";
+ $vsVersion = ($installDir =~ /Microsoft Visual Studio ([0-9]+\.[0-9]*)/) ? $1 : "14";
+ print "Using Visual Studio $vsVersion\n";
return $vsVersion;
}
@@ -453,7 +572,7 @@ sub determineConfigurationForVisualStudio
return if defined $configurationForVisualStudio;
determineConfiguration();
# FIXME: We should detect when Debug_All or Production has been chosen.
- $configurationForVisualStudio = $configuration;
+ $configurationForVisualStudio = "/p:Configuration=" . $configuration;
}
sub usesPerConfigurationBuildDirectory
@@ -470,14 +589,14 @@ sub determineConfigurationProductDir
return if defined $configurationProductDir;
determineBaseProductDir();
determineConfiguration();
- if (isAppleWinWebKit()) {
- my $binDir = "bin32";
- $configurationProductDir = File::Spec->catdir($baseProductDir, configurationForVisualStudio(), $binDir);
+ if (isAppleWinWebKit() || isWinCairo()) {
+ $configurationProductDir = File::Spec->catdir($baseProductDir, $configuration);
} else {
if (usesPerConfigurationBuildDirectory()) {
$configurationProductDir = "$baseProductDir";
} else {
$configurationProductDir = "$baseProductDir/$configuration";
+ $configurationProductDir .= "-" . xcodeSDKPlatformName() if isIOSWebKit();
}
}
}
@@ -522,13 +641,25 @@ sub productDir
return $configurationProductDir;
}
-sub jscProductDir
+sub executableProductDir
{
- my $productDir = productDir();
- $productDir .= "/bin" if (isQt() || isEfl());
- $productDir .= "/Programs" if isGtk();
+ my $productDirectory = productDir();
- return $productDir;
+ my $binaryDirectory;
+ if (isEfl() || isGtk() || isQt()) {
+ $binaryDirectory = "bin";
+ } elsif (isAnyWindows()) {
+ $binaryDirectory = isWin64() ? "bin64" : "bin32";
+ } else {
+ return $productDirectory;
+ }
+
+ return File::Spec->catdir($productDirectory, $binaryDirectory);
+}
+
+sub jscProductDir
+{
+ return executableProductDir();
}
sub configuration()
@@ -537,6 +668,12 @@ sub configuration()
return $configuration;
}
+sub asanIsEnabled()
+{
+ determineASanIsEnabled();
+ return $asanIsEnabled;
+}
+
sub configurationForVisualStudio()
{
determineConfigurationForVisualStudio();
@@ -561,6 +698,11 @@ sub determineGenerateDsym()
$generateDsym = checkForArgumentAndRemoveFromARGV("--dsym");
}
+sub hasIOSDevelopmentCertificate()
+{
+ return !exitStatus(system("security find-identity -p codesigning | grep '" . IOS_DEVELOPMENT_CERTIFICATE_NAME_PREFIX . "' > /dev/null 2>&1"));
+}
+
sub argumentsForXcode()
{
my @args = ();
@@ -573,12 +715,28 @@ sub XcodeOptions
determineBaseProductDir();
determineConfiguration();
determineArchitecture();
+ determineASanIsEnabled();
determineXcodeSDK();
- my @sdkOption = ($xcodeSDK ? "SDKROOT=$xcodeSDK" : ());
- my @architectureOption = ($architecture ? "ARCHS=$architecture" : ());
-
- return (@baseProductDirOption, "-configuration", $configuration, @architectureOption, @sdkOption, argumentsForXcode());
+ my @options;
+ push @options, "-UseSanitizedBuildSystemEnvironment=YES";
+ push @options, ("-configuration", $configuration);
+ push @options, ("-xcconfig", sourceDir() . "/Tools/asan/asan.xcconfig", "ASAN_IGNORE=" . sourceDir() . "/Tools/asan/webkit-asan-ignore.txt") if $asanIsEnabled;
+ push @options, @baseProductDirOption;
+ push @options, "ARCHS=$architecture" if $architecture;
+ push @options, "SDKROOT=$xcodeSDK" if $xcodeSDK;
+ if (willUseIOSDeviceSDK()) {
+ push @options, "ENABLE_BITCODE=NO";
+ if (hasIOSDevelopmentCertificate()) {
+ # FIXME: May match more than one installed development certificate.
+ push @options, "CODE_SIGN_IDENTITY=" . IOS_DEVELOPMENT_CERTIFICATE_NAME_PREFIX;
+ } else {
+ push @options, "CODE_SIGN_IDENTITY="; # No identity
+ push @options, "CODE_SIGNING_REQUIRED=NO";
+ }
+ }
+ push @options, argumentsForXcode();
+ return @options;
}
sub XcodeOptionString
@@ -599,35 +757,26 @@ sub XcodeCoverageSupportOptions()
return @coverageSupportOptions;
}
+sub XcodeStaticAnalyzerOption()
+{
+ return "RUN_CLANG_STATIC_ANALYZER=YES";
+}
+
my $passedConfiguration;
my $searchedForPassedConfiguration;
sub determinePassedConfiguration
{
return if $searchedForPassedConfiguration;
$searchedForPassedConfiguration = 1;
+ $passedConfiguration = undef;
- for my $i (0 .. $#ARGV) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--debug$/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Debug";
- $passedConfiguration .= "_WinCairo" if (isWinCairo() && isCygwin());
- return;
- }
- if ($opt =~ /^--release$/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Release";
- $passedConfiguration .= "_WinCairo" if (isWinCairo() && isCygwin());
- return;
- }
- if ($opt =~ /^--profil(e|ing)$/i) {
- splice(@ARGV, $i, 1);
- $passedConfiguration = "Profiling";
- $passedConfiguration .= "_WinCairo" if (isWinCairo() && isCygwin());
- return;
- }
+ if (checkForArgumentAndRemoveFromARGV("--debug")) {
+ $passedConfiguration = "Debug";
+ } elsif(checkForArgumentAndRemoveFromARGV("--release")) {
+ $passedConfiguration = "Release";
+ } elsif (checkForArgumentAndRemoveFromARGV("--profile") || checkForArgumentAndRemoveFromARGV("--profiling")) {
+ $passedConfiguration = "Profiling";
}
- $passedConfiguration = undef;
}
sub passedConfiguration
@@ -657,18 +806,18 @@ sub determinePassedArchitecture
return if $searchedForPassedArchitecture;
$searchedForPassedArchitecture = 1;
- for my $i (0 .. $#ARGV) {
- my $opt = $ARGV[$i];
- if ($opt =~ /^--32-bit$/i) {
- splice(@ARGV, $i, 1);
- if (isAppleMacWebKit()) {
- $passedArchitecture = `arch`;
- chomp $passedArchitecture;
- }
- return;
+ $passedArchitecture = undef;
+ if (checkForArgumentAndRemoveFromARGV("--32-bit")) {
+ if (isAppleMacWebKit()) {
+ # PLATFORM_IOS: Don't run `arch` command inside Simulator environment
+ local %ENV = %ENV;
+ delete $ENV{DYLD_ROOT_PATH};
+ delete $ENV{DYLD_FRAMEWORK_PATH};
+
+ $passedArchitecture = `arch`;
+ chomp $passedArchitecture;
}
}
- $passedArchitecture = undef;
}
sub passedArchitecture
@@ -689,6 +838,12 @@ sub numberOfCPUs()
return $numberOfCPUs;
}
+sub maxCPULoad()
+{
+ determineMaxCPULoad();
+ return $maxCPULoad;
+}
+
sub setArchitecture
{
if (my $arch = shift @_) {
@@ -715,61 +870,41 @@ sub safariPathFromSafariBundle
{
my ($safariBundle) = @_;
- if (isAppleMacWebKit()) {
- my $safariPath = "$safariBundle/Contents/MacOS/Safari";
- return $safariPath if skipSafariExecutableEntitlementChecks();
+ die "Safari path is only relevant on Apple Mac platform\n" unless isAppleMacWebKit();
- my $safariForWebKitDevelopmentPath = "$safariBundle/Contents/MacOS/SafariForWebKitDevelopment";
- return $safariForWebKitDevelopmentPath if -f $safariForWebKitDevelopmentPath && executableHasEntitlements($safariPath);
+ my $safariPath = "$safariBundle/Contents/MacOS/Safari";
+ return $safariPath if skipSafariExecutableEntitlementChecks();
- return $safariPath;
- }
- return $safariBundle if isAppleWinWebKit();
+ my $safariForWebKitDevelopmentPath = "$safariBundle/Contents/MacOS/SafariForWebKitDevelopment";
+ return $safariForWebKitDevelopmentPath if -f $safariForWebKitDevelopmentPath && executableHasEntitlements($safariPath);
+
+ return $safariPath;
}
sub installedSafariPath
{
- my $safariBundle;
-
- if (isAppleMacWebKit()) {
- $safariBundle = "/Applications/Safari.app";
- } elsif (isAppleWinWebKit()) {
- $safariBundle = readRegistryString("/HKLM/SOFTWARE/Apple Computer, Inc./Safari/InstallDir");
- $safariBundle =~ s/[\r\n]+$//;
- $safariBundle = `cygpath -u '$safariBundle'` if isCygwin();
- $safariBundle =~ s/[\r\n]+$//;
- $safariBundle .= "Safari.exe";
- }
-
- return safariPathFromSafariBundle($safariBundle);
+ return safariPathFromSafariBundle("/Applications/Safari.app");
}
# Locate Safari.
sub safariPath
{
+ die "Safari path is only relevant on Apple Mac platform\n" unless isAppleMacWebKit();
+
# 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 (isAppleMacWebKit() && -d "$configurationProductDir/Safari.app") {
+ if (-d "$configurationProductDir/Safari.app") {
$safariBundle = "$configurationProductDir/Safari.app";
- } elsif (isAppleWinWebKit()) {
- my $path = "$configurationProductDir/Safari.exe";
- my $debugPath = "$configurationProductDir/Safari_debug.exe";
-
- if (configurationForVisualStudio() eq "Debug_All" && -x $debugPath) {
- $safariBundle = $debugPath;
- } elsif (-x $path) {
- $safariBundle = $path;
- }
}
if (!$safariBundle) {
return installedSafariPath();
}
}
my $safariPath = safariPathFromSafariBundle($safariBundle);
- die "Can't find executable at $safariPath.\n" if isAppleMacWebKit() && !-x $safariPath;
+ die "Can't find executable at $safariPath.\n" if !-x $safariPath;
return $safariPath;
}
@@ -778,10 +913,6 @@ sub builtDylibPathForName
my $libraryName = shift;
determineConfigurationProductDir();
- if (isBlackBerry()) {
- my $libraryExtension = $libraryName =~ /^WebKit$/i ? ".so" : ".a";
- return "$configurationProductDir/$libraryName/lib" . lc($libraryName) . $libraryExtension;
- }
if (isQt()) {
my $isSearchingForWebCore = $libraryName =~ "WebCore";
if (isDarwin()) {
@@ -800,6 +931,7 @@ sub builtDylibPathForName
$libraryName .= "d";
}
+ my $qmakebin = "qmake"; # FIXME
chomp(my $mkspec = `$qmakebin -query QT_HOST_DATA`);
$mkspec .= "/mkspecs";
my $qtMajorVersion = retrieveQMakespecVar("$mkspec/qconfig.pri", "QT_MAJOR_VERSION");
@@ -825,24 +957,14 @@ sub builtDylibPathForName
return $result;
}
if (isGtk()) {
- # WebKitGTK+ for GTK2, WebKitGTK+ for GTK3, and WebKit2 respectively.
- my @libraries = ("libwebkitgtk-1.0", "libwebkitgtk-3.0", "libwebkit2gtk-3.0");
my $extension = isDarwin() ? ".dylib" : ".so";
-
- foreach $libraryName (@libraries) {
- my $libraryPath = "$configurationProductDir/.libs/" . $libraryName . $extension;
- return $libraryPath if -e $libraryPath;
- }
- return "NotFound";
+ return "$configurationProductDir/lib/libwebkit2gtk-4.0" . $extension;
}
if (isEfl()) {
- if (isWK2()) {
- return "$configurationProductDir/lib/libewebkit2.so";
- }
- return "$configurationProductDir/lib/libewebkit.so";
+ return "$configurationProductDir/lib/libewebkit2.so";
}
- if (isWinCE()) {
- return "$configurationProductDir/$libraryName";
+ if (isIOSWebKit()) {
+ return "$configurationProductDir/$libraryName.framework/$libraryName";
}
if (isAppleMacWebKit()) {
return "$configurationProductDir/$libraryName.framework/Versions/A/$libraryName";
@@ -861,7 +983,7 @@ sub builtDylibPathForName
# Check to see that all the frameworks are built.
sub checkFrameworks # FIXME: This is a poor name since only the Mac calls built WebCore a Framework.
{
- return if isCygwin() || isWindows();
+ return if isAnyWindows();
my @frameworks = ("JavaScriptCore", "WebCore");
push(@frameworks, "WebKit") if isAppleMacWebKit(); # FIXME: This seems wrong, all ports should have a WebKit these days.
for my $framework (@frameworks) {
@@ -882,282 +1004,154 @@ sub determineIsInspectorFrontend()
$isInspectorFrontend = checkForArgumentAndRemoveFromARGV("--inspector-frontend");
}
-sub isQt()
+sub commandExists($)
{
- determineIsQt();
- return $isQt;
-}
+ my $command = shift;
+ my $devnull = File::Spec->devnull();
-sub getQtVersion()
-{
- my $qtVersion = `$qmakebin --version`;
- $qtVersion =~ s/^(.*)Qt version (\d\.\d)(.*)/$2/s ;
- return $qtVersion;
+ if (isAnyWindows()) {
+ return exitStatus(system("where /q $command >$devnull 2>&1")) == 0;
+ }
+ return exitStatus(system("which $command >$devnull 2>&1")) == 0;
}
-sub qtFeatureDefaults
+sub checkForArgumentAndRemoveFromARGV($)
{
- die "ERROR: qmake missing but required to build WebKit.\n" if not commandExists($qmakebin);
-
- my $oldQmakeEval = $ENV{QMAKE_CACHE_EVAL};
- $ENV{QMAKE_CACHE_EVAL} = "CONFIG+=print_defaults";
-
- my $originalCwd = getcwd();
- my $qmakepath = File::Spec->catfile(sourceDir(), "Tools", "qmake");
- chdir $qmakepath or die "Failed to cd into " . $qmakepath . "\n";
-
- my $file = File::Spec->catfile(sourceDir(), "WebKit.pro");
-
- my @buildArgs;
- @buildArgs = (@buildArgs, @{$_[0]}) if (@_);
-
- my @defaults = `$qmakebin @buildArgs $file 2>&1`;
-
- my %qtFeatureDefaults;
- for (@defaults) {
- if (/DEFINES: /) {
- while (/(\S+?)=(\S+?)/gi) {
- $qtFeatureDefaults{$1}=$2;
- }
- } elsif (/Done computing defaults/) {
- last;
- } elsif (@_) {
- print $_;
- }
- }
-
- chdir $originalCwd;
- $ENV{QMAKE_CACHE_EVAL} = $oldQmakeEval;
-
- return %qtFeatureDefaults;
+ my $argToCheck = shift;
+ return checkForArgumentAndRemoveFromArrayRef($argToCheck, \@ARGV);
}
-sub commandExists($)
+sub checkForArgumentAndRemoveFromArrayRefGettingValue($$$)
{
- my $command = shift;
- my $devnull = File::Spec->devnull();
- return `$command --version 2> $devnull`;
+ my ($argToCheck, $valueRef, $arrayRef) = @_;
+ my $argumentStartRegEx = qr#^$argToCheck(?:=\S|$)#;
+ my $i = 0;
+ for (; $i < @$arrayRef; ++$i) {
+ last if $arrayRef->[$i] =~ $argumentStartRegEx;
+ }
+ if ($i >= @$arrayRef) {
+ return $$valueRef = undef;
+ }
+ my ($key, $value) = split("=", $arrayRef->[$i]);
+ splice(@$arrayRef, $i, 1);
+ if (defined($value)) {
+ # e.g. --sdk=iphonesimulator
+ return $$valueRef = $value;
+ }
+ return $$valueRef = splice(@$arrayRef, $i, 1); # e.g. --sdk iphonesimulator
}
-sub checkForArgumentAndRemoveFromARGV
+sub checkForArgumentAndRemoveFromARGVGettingValue($$)
{
- my $argToCheck = shift;
- return checkForArgumentAndRemoveFromArrayRef($argToCheck, \@ARGV);
+ my ($argToCheck, $valueRef) = @_;
+ return checkForArgumentAndRemoveFromArrayRefGettingValue($argToCheck, $valueRef, \@ARGV);
}
-sub checkForArgumentAndRemoveFromArrayRef
+sub findMatchingArguments($$)
{
my ($argToCheck, $arrayRef) = @_;
- my @indicesToRemove;
+ my @matchingIndices;
foreach my $index (0 .. $#$arrayRef) {
my $opt = $$arrayRef[$index];
if ($opt =~ /^$argToCheck$/i ) {
- push(@indicesToRemove, $index);
+ push(@matchingIndices, $index);
}
}
- foreach my $index (@indicesToRemove) {
- splice(@$arrayRef, $index, 1);
- }
- return $#indicesToRemove > -1;
+ return @matchingIndices;
}
-sub isWK2()
+sub hasArgument($$)
{
- if (defined($isWK2)) {
- return $isWK2;
- }
- if (checkForArgumentAndRemoveFromARGV("-2")) {
- $isWK2 = 1;
- } else {
- $isWK2 = 0;
- }
- return $isWK2;
+ my ($argToCheck, $arrayRef) = @_;
+ my @matchingIndices = findMatchingArguments($argToCheck, $arrayRef);
+ return scalar @matchingIndices > 0;
}
-sub determineIsQt()
+sub checkForArgumentAndRemoveFromArrayRef
{
- return if defined($isQt);
-
- # Allow override in case QTDIR is not set.
- if (checkForArgumentAndRemoveFromARGV("--qt")) {
- $isQt = 1;
- return;
- }
-
- # The presence of QTDIR only means Qt if --gtk or --efl or --blackberry or --wincairo are not on the command-line
- if (isGtk() || isEfl() || isBlackBerry() || isWinCairo()) {
- $isQt = 0;
- return;
+ my ($argToCheck, $arrayRef) = @_;
+ my @indicesToRemove = findMatchingArguments($argToCheck, $arrayRef);
+ my $removeOffset = 0;
+ foreach my $index (@indicesToRemove) {
+ splice(@$arrayRef, $index - $removeOffset++, 1);
}
-
- $isQt = defined($ENV{'QTDIR'});
+ return scalar @indicesToRemove > 0;
}
-sub isBlackBerry()
+sub prohibitUnknownPort()
{
- determineIsBlackBerry();
- return $isBlackBerry;
+ $unknownPortProhibited = 1;
}
-sub determineIsBlackBerry()
+sub determinePortName()
{
- return if defined($isBlackBerry);
- $isBlackBerry = checkForArgumentAndRemoveFromARGV("--blackberry");
-}
+ return if defined $portName;
-sub blackberryTargetArchitecture()
-{
- my $arch = $ENV{"BLACKBERRY_ARCH_TYPE"} ? $ENV{"BLACKBERRY_ARCH_TYPE"} : "arm";
- my $cpu = $ENV{"BLACKBERRY_ARCH_CPU"} ? $ENV{"BLACKBERRY_ARCH_CPU"} : "";
- my $cpuDir;
- my $buSuffix;
- if (($cpu eq "v7le") || ($cpu eq "a9")) {
- $cpuDir = $arch . "le-v7";
- $buSuffix = $arch . "v7";
- } else {
- $cpu = $arch;
- $cpuDir = $arch;
- $buSuffix = $arch;
- }
- return ("arch" => $arch,
- "cpu" => $cpu,
- "cpuDir" => $cpuDir,
- "buSuffix" => $buSuffix);
-}
+ my %argToPortName = (
+ efl => Efl,
+ gtk => GTK,
+ qt => Qt,
+ wincairo => WinCairo
+ );
-sub blackberryCMakeArguments()
-{
- my %archInfo = blackberryTargetArchitecture();
- my $arch = $archInfo{"arch"};
- my $cpu = $archInfo{"cpu"};
- my $cpuDir = $archInfo{"cpuDir"};
- my $buSuffix = $archInfo{"buSuffix"};
+ for my $arg (sort keys %argToPortName) {
+ if (checkForArgumentAndRemoveFromARGV("--$arg")) {
+ die "Argument '--$arg' conflicts with selected port '$portName'\n"
+ if defined $portName;
- my @cmakeExtraOptions;
- if ($cpu eq "a9") {
- $cpu = $arch . "v7le";
- push @cmakeExtraOptions, '-DTARGETING_PLAYBOOK=1';
+ $portName = $argToPortName{$arg};
+ }
}
- my $stageDir = $ENV{"STAGE_DIR"};
- my $stageLib = File::Spec->catdir($stageDir, $cpuDir, "lib");
- my $stageUsrLib = File::Spec->catdir($stageDir, $cpuDir, "usr", "lib");
- my $stageInc = File::Spec->catdir($stageDir, "usr", "include");
+ return if defined $portName;
+
+ # Port was not selected via command line, use appropriate default value
- my $qnxHost = $ENV{"QNX_HOST"};
- my $ccCommand;
- my $cxxCommand;
- if ($ENV{"USE_ICECC"}) {
- chomp($ccCommand = `which icecc`);
- $cxxCommand = $ccCommand;
+ if (isAnyWindows()) {
+ $portName = AppleWin;
+ } elsif (isDarwin()) {
+ determineXcodeSDK();
+ if (willUseIOSDeviceSDK() || willUseIOSSimulatorSDK()) {
+ $portName = iOS;
+ } else {
+ $portName = Mac;
+ }
} else {
- $ccCommand = File::Spec->catfile($qnxHost, "usr", "bin", "qcc");
- $cxxCommand = $ccCommand;
- }
-
- if ($ENV{"CCWRAP"}) {
- $ccCommand = $ENV{"CCWRAP"};
- push @cmakeExtraOptions, "-DCMAKE_C_COMPILER_ARG1=qcc";
- push @cmakeExtraOptions, "-DCMAKE_CXX_COMPILER_ARG1=qcc";
- }
-
- push @cmakeExtraOptions, "-DCMAKE_SKIP_RPATH='ON'" if isDarwin();
- push @cmakeExtraOptions, "-DPUBLIC_BUILD=1" if $ENV{"PUBLIC_BUILD"};
- push @cmakeExtraOptions, "-DENABLE_GLES2=1" unless $ENV{"DISABLE_GLES2"};
-
- my @includeSystemDirectories;
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "harfbuzzng");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "imf");
- # We only use jpeg-turbo for device build
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "jpeg-turbo") if $arch=~/arm/;
- push @includeSystemDirectories, $stageInc;
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "browser", "platform");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "browser", "platform", "graphics");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "browser", "qsk");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "ots");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "iType", "common");
- push @includeSystemDirectories, File::Spec->catdir($stageInc, "iType", "port", "nto");
-
- my @cxxFlags;
- push @cxxFlags, "-Wl,-rpath-link,$stageLib";
- push @cxxFlags, "-Wl,-rpath-link," . File::Spec->catfile($stageUsrLib, "torch-webkit");
- push @cxxFlags, "-Wl,-rpath-link,$stageUsrLib";
- push @cxxFlags, "-L$stageLib";
- push @cxxFlags, "-L$stageUsrLib";
-
- if ($ENV{"PROFILE"}) {
- push @cmakeExtraOptions, "-DPROFILING=1";
- push @cxxFlags, "-p";
- }
-
- my @cmakeArgs;
- push @cmakeArgs, '-DCMAKE_SYSTEM_NAME="QNX"';
- push @cmakeArgs, "-DCMAKE_SYSTEM_PROCESSOR=\"$cpuDir\"";
- push @cmakeArgs, '-DCMAKE_SYSTEM_VERSION="1"';
- push @cmakeArgs, "-DCMAKE_C_COMPILER=\"$ccCommand\"";
- push @cmakeArgs, "-DCMAKE_CXX_COMPILER=\"$cxxCommand\"";
- push @cmakeArgs, "-DCMAKE_C_FLAGS=\"-Vgcc_nto${cpu} -g @cxxFlags\"";
- push @cmakeArgs, "-DCMAKE_CXX_FLAGS=\"-Vgcc_nto${cpu}_cpp-ne -g -lang-c++ @cxxFlags\"";
-
- # We cannot use CMAKE_INCLUDE_PATH since this describes the search path for header files in user directories.
- # And the QNX system headers are in user directories on the host OS (i.e. they aren't installed in the host OS's
- # system header search path). So, we need to inform g++ that these user directories (@includeSystemDirectories)
- # are to be taken as the host OS's system header directories when building our port.
- #
- # Also, we cannot use CMAKE_SYSTEM_INCLUDE_PATH since that will override the entire system header path.
- # So, we define the additional system include paths in ADDITIONAL_SYSTEM_INCLUDE_PATH. This list will
- # be processed in OptionsBlackBerry.cmake.
- push @cmakeArgs, '-DADDITIONAL_SYSTEM_INCLUDE_PATH="' . join(';', @includeSystemDirectories) . '"';
-
- # FIXME: Make this more general purpose such that we can pass a list of directories and files.
- push @cmakeArgs, '-DTHIRD_PARTY_ICU_DIR="' . File::Spec->catdir($stageInc, "unicode") . '"';
- push @cmakeArgs, '-DTHIRD_PARTY_UNICODE_FILE="' . File::Spec->catfile($stageInc, "unicode.h") . '"';
-
- push @cmakeArgs, "-DCMAKE_LIBRARY_PATH=\"$stageLib;$stageUsrLib\"";
- push @cmakeArgs, '-DCMAKE_AR="' . File::Spec->catfile($qnxHost, "usr", "bin", "nto${buSuffix}-ar") . '"';
- push @cmakeArgs, '-DCMAKE_RANLIB="' . File::Spec->catfile($qnxHost, "usr", "bin", "nto${buSuffix}-ranlib") . '"';
- push @cmakeArgs, '-DCMAKE_LD="'. File::Spec->catfile($qnxHost, "usr", "bin", "nto${buSuffix}-ld") . '"';
- push @cmakeArgs, '-DCMAKE_LINKER="' . File::Spec->catfile($qnxHost, "usr", "bin", "nto${buSuffix}-ld") . '"';
- push @cmakeArgs, "-DECLIPSE_CDT4_GENERATE_SOURCE_PROJECT=TRUE";
- push @cmakeArgs, '-G"Eclipse CDT4 - Unix Makefiles"';
- push @cmakeArgs, @cmakeExtraOptions;
- return @cmakeArgs;
-}
-
-sub determineIsEfl()
-{
- return if defined($isEfl);
- $isEfl = checkForArgumentAndRemoveFromARGV("--efl");
-}
+ if ($unknownPortProhibited) {
+ my $portsChoice = join "\n\t", qw(
+ --efl
+ --gtk
+ --qt
+ );
+ die "Please specify which WebKit port to build using one of the following options:"
+ . "\n\t$portsChoice\n";
+ }
-sub isEfl()
-{
- determineIsEfl();
- return $isEfl;
+ # If script is run without arguments we cannot determine port
+ # TODO: This state should be outlawed
+ $portName = Unknown;
+ }
}
-sub isGtk()
+sub portName()
{
- determineIsGtk();
- return $isGtk;
+ determinePortName();
+ return $portName;
}
-sub determineIsGtk()
+sub isEfl()
{
- return if defined($isGtk);
- $isGtk = checkForArgumentAndRemoveFromARGV("--gtk");
+ return portName() eq Efl;
}
-sub isWinCE()
+sub isGtk()
{
- determineIsWinCE();
- return $isWinCE;
+ return portName() eq GTK;
}
-sub determineIsWinCE()
+sub isQt()
{
- return if defined($isWinCE);
- $isWinCE = checkForArgumentAndRemoveFromARGV("--wince");
+ return portName() eq Qt;
}
# Determine if this is debian, ubuntu, linspire, or something similar.
@@ -1173,14 +1167,26 @@ sub isFedoraBased()
sub isWinCairo()
{
- determineIsWinCairo();
- return $isWinCairo;
+ return portName() eq WinCairo;
+}
+
+sub isWin64()
+{
+ determineIsWin64();
+ return $isWin64;
+}
+
+sub determineIsWin64()
+{
+ return if defined($isWin64);
+ $isWin64 = checkForArgumentAndRemoveFromARGV("--64-bit");
}
-sub determineIsWinCairo()
+sub determineIsWin64FromArchitecture($)
{
- return if defined($isWinCairo);
- $isWinCairo = checkForArgumentAndRemoveFromARGV("--wincairo");
+ my $arch = shift;
+ $isWin64 = ($arch eq "x86_64");
+ return $isWin64;
}
sub isCygwin()
@@ -1248,14 +1254,19 @@ sub isLinux()
return ($^O eq "linux") || 0;
}
-sub isFreeBSD()
+sub isBSD()
{
- return ($^O eq "freebsd") || 0;
+ return ($^O eq "freebsd") || ($^O eq "openbsd") || ($^O eq "netbsd") || 0;
}
sub isARM()
{
- return $Config{archname} =~ /^arm[v\-]/;
+ return ($Config{archname} =~ /^arm[v\-]/) || ($Config{archname} =~ /^aarch64[v\-]/);
+}
+
+sub isX86_64()
+{
+ return (architecture() eq "x86_64") || 0;
}
sub isCrossCompilation()
@@ -1274,34 +1285,80 @@ sub isCrossCompilation()
sub isAppleWebKit()
{
- return !(isQt() or isGtk() or isEfl() or isWinCE() or isBlackBerry());
+ return isAppleMacWebKit() || isAppleWinWebKit();
}
sub isAppleMacWebKit()
{
- return isAppleWebKit() && isDarwin();
+ return (portName() eq Mac) || isIOSWebKit();
}
sub isAppleWinWebKit()
{
- return isAppleWebKit() && (isCygwin() || isWindows());
+ return portName() eq AppleWin;
}
-sub isPerianInstalled()
+sub iOSSimulatorDevicesPath
{
- if (!isAppleWebKit()) {
- return 0;
- }
+ return "$ENV{HOME}/Library/Developer/CoreSimulator/Devices";
+}
- if (-d "/Library/QuickTime/Perian.component") {
- return 1;
- }
+sub iOSSimulatorDevices
+{
+ eval "require Foundation";
+ my $devicesPath = iOSSimulatorDevicesPath();
+ opendir(DEVICES, $devicesPath);
+ my @udids = grep {
+ $_ =~ m/[0-9A-F]{8}-([0-9A-F]{4}-){3}[0-9A-F]{12}/;
+ } readdir(DEVICES);
+ close(DEVICES);
- if (-d "$ENV{HOME}/Library/QuickTime/Perian.component") {
- return 1;
+ # FIXME: We should parse the device.plist file ourself and map the dictionary keys in it to known
+ # dictionary keys so as to decouple our representation of the plist from the actual structure
+ # of the plist, which may change.
+ my @devices = map {
+ Foundation::perlRefFromObjectRef(NSDictionary->dictionaryWithContentsOfFile_("$devicesPath/$_/device.plist"));
+ } @udids;
+
+ return @devices;
+}
+
+sub createiOSSimulatorDevice
+{
+ my $name = shift;
+ my $deviceTypeId = shift;
+ my $runtimeId = shift;
+
+ my $created = system("xcrun", "--sdk", "iphonesimulator", "simctl", "create", $name, $deviceTypeId, $runtimeId) == 0;
+ die "Couldn't create simulator device: $name $deviceTypeId $runtimeId" if not $created;
+
+ system("xcrun", "--sdk", "iphonesimulator", "simctl", "list");
+
+ print "Waiting for device to be created ...\n";
+ sleep 5;
+ for (my $tries = 0; $tries < 5; $tries++){
+ my @devices = iOSSimulatorDevices();
+ foreach my $device (@devices) {
+ return $device if $device->{name} eq $name and $device->{deviceType} eq $deviceTypeId and $device->{runtime} eq $runtimeId;
+ }
+ sleep 5;
}
+ die "Device $name $deviceTypeId $runtimeId wasn't found in " . iOSSimulatorDevicesPath();
+}
- return 0;
+sub willUseIOSDeviceSDK()
+{
+ return xcodeSDKPlatformName() eq "iphoneos";
+}
+
+sub willUseIOSSimulatorSDK()
+{
+ return xcodeSDKPlatformName() eq "iphonesimulator";
+}
+
+sub isIOSWebKit()
+{
+ return portName() eq iOS;
}
sub determineNmPath()
@@ -1321,6 +1378,18 @@ sub nmPath()
return $nmPath;
}
+sub splitVersionString
+{
+ my $versionString = shift;
+ my @splitVersion = split(/\./, $versionString);
+ @splitVersion >= 2 or die "Invalid version $versionString";
+ $osXVersion = {
+ "major" => $splitVersion[0],
+ "minor" => $splitVersion[1],
+ "subminor" => (defined($splitVersion[2]) ? $splitVersion[2] : 0),
+ };
+}
+
sub determineOSXVersion()
{
return if $osXVersion;
@@ -1330,14 +1399,8 @@ sub determineOSXVersion()
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),
- };
+ my $versionString = `sw_vers -productVersion`;
+ $osXVersion = splitVersionString($versionString);
}
sub osXVersion()
@@ -1346,43 +1409,28 @@ sub osXVersion()
return $osXVersion;
}
-sub isSnowLeopard()
-{
- return isDarwin() && osXVersion()->{"minor"} == 6;
-}
-
-sub isLion()
+sub determineIOSVersion()
{
- return isDarwin() && osXVersion()->{"minor"} == 7;
-}
-
-sub isWindowsNT()
-{
- return $ENV{'OS'} eq 'Windows_NT';
-}
+ return if $iosVersion;
-sub shouldTargetWebProcess
-{
- determineShouldTargetWebProcess();
- return $shouldTargetWebProcess;
-}
+ if (!isIOSWebKit()) {
+ $iosVersion = -1;
+ return;
+ }
-sub determineShouldTargetWebProcess
-{
- return if defined($shouldTargetWebProcess);
- $shouldTargetWebProcess = checkForArgumentAndRemoveFromARGV("--target-web-process");
+ my $versionString = xcodeSDKVersion();
+ $iosVersion = splitVersionString($versionString);
}
-sub shouldUseXPCServiceForWebProcess
+sub iosVersion()
{
- determineShouldUseXPCServiceForWebProcess();
- return $shouldUseXPCServiceForWebProcess;
+ determineIOSVersion();
+ return $iosVersion;
}
-sub determineShouldUseXPCServiceForWebProcess
+sub isWindowsNT()
{
- return if defined($shouldUseXPCServiceForWebProcess);
- $shouldUseXPCServiceForWebProcess = checkForArgumentAndRemoveFromARGV("--use-web-process-xpc-service");
+ return $ENV{'OS'} eq 'Windows_NT';
}
sub debugger
@@ -1411,17 +1459,56 @@ sub determineDebugger
}
}
-sub appendToEnvironmentVariableList
+sub appendToEnvironmentVariableList($$)
+{
+ my ($name, $value) = @_;
+
+ if (defined($ENV{$name})) {
+ $ENV{$name} .= $Config{path_sep} . $value;
+ } else {
+ $ENV{$name} = $value;
+ }
+}
+
+sub prependToEnvironmentVariableList($$)
{
- my ($environmentVariableName, $value) = @_;
+ my ($name, $value) = @_;
- if (defined($ENV{$environmentVariableName})) {
- $ENV{$environmentVariableName} .= ":" . $value;
+ if (defined($ENV{$name})) {
+ $ENV{$name} = $value . $Config{path_sep} . $ENV{$name};
} else {
- $ENV{$environmentVariableName} = $value;
+ $ENV{$name} = $value;
}
}
+sub sharedCommandLineOptions()
+{
+ return (
+ "g|guard-malloc" => \$shouldUseGuardMalloc,
+ );
+}
+
+sub sharedCommandLineOptionsUsage
+{
+ my %opts = @_;
+
+ my %switches = (
+ '-g|--guard-malloc' => 'Use guardmalloc when running executable',
+ );
+
+ my $indent = " " x ($opts{indent} || 2);
+ my $switchWidth = List::Util::max(int($opts{switchWidth}), List::Util::max(map { length($_) } keys %switches) + ($opts{brackets} ? 2 : 0));
+
+ my $result = "Common switches:\n";
+
+ for my $switch (keys %switches) {
+ my $switchName = $opts{brackets} ? "[" . $switch . "]" : $switch;
+ $result .= sprintf("%s%-" . $switchWidth . "s %s\n", $indent, $switchName, $switches{$switch});
+ }
+
+ return $result;
+}
+
sub setUpGuardMallocIfNeeded
{
if (!isDarwin()) {
@@ -1429,11 +1516,12 @@ sub setUpGuardMallocIfNeeded
}
if (!defined($shouldUseGuardMalloc)) {
- $shouldUseGuardMalloc = checkForArgumentAndRemoveFromARGV("--guard-malloc");
+ $shouldUseGuardMalloc = checkForArgumentAndRemoveFromARGV("-g") || checkForArgumentAndRemoveFromARGV("--guard-malloc");
}
if ($shouldUseGuardMalloc) {
appendToEnvironmentVariableList("DYLD_INSERT_LIBRARIES", "/usr/lib/libgmalloc.dylib");
+ appendToEnvironmentVariableList("__XPC_DYLD_INSERT_LIBRARIES", "/usr/lib/libgmalloc.dylib");
}
}
@@ -1449,8 +1537,8 @@ sub relativeScriptsDir()
sub launcherPath()
{
my $relativeScriptsPath = relativeScriptsDir();
- if (isGtk() || isQt() || isEfl() || isWinCE()) {
- return "$relativeScriptsPath/run-launcher";
+ if (isGtk() || isEfl() || isQt()) {
+ return "$relativeScriptsPath/run-minibrowser";
} elsif (isAppleWebKit()) {
return "$relativeScriptsPath/run-safari";
}
@@ -1458,16 +1546,12 @@ sub launcherPath()
sub launcherName()
{
- if (isGtk()) {
- return "GtkLauncher";
- } elsif (isQt()) {
- return "QtTestBrowser";
- } elsif (isAppleWebKit()) {
+ if (isGtk() || isEfl() || isQt()) {
+ return "MiniBrowser";
+ } elsif (isAppleMacWebKit()) {
return "Safari";
- } elsif (isEfl()) {
- return "EWebLauncher/MiniBrowser";
- } elsif (isWinCE()) {
- return "WinCELauncher";
+ } elsif (isAppleWinWebKit()) {
+ return "MiniBrowser";
}
}
@@ -1475,54 +1559,22 @@ sub checkRequiredSystemConfig
{
if (isDarwin()) {
chomp(my $productVersion = `sw_vers -productVersion`);
- if (eval "v$productVersion" lt v10.4) {
+ if (eval "v$productVersion" lt v10.7.5) {
print "*************************************************************\n";
- print "Mac OS X Version 10.4.0 or later is required to build WebKit.\n";
+ print "Mac OS X Version 10.7.5 or later is required to build WebKit.\n";
print "You have " . $productVersion . ", thus the build will most likely fail.\n";
print "*************************************************************\n";
}
my $xcodebuildVersionOutput = `xcodebuild -version`;
- my $devToolsCoreVersion = ($xcodebuildVersionOutput =~ /DevToolsCore-(\d+)/) ? $1 : undef;
my $xcodeVersion = ($xcodebuildVersionOutput =~ /Xcode ([0-9](\.[0-9]+)*)/) ? $1 : undef;
- if (!$devToolsCoreVersion && !$xcodeVersion
- || $devToolsCoreVersion && $devToolsCoreVersion < 747
- || $xcodeVersion && eval "v$xcodeVersion" lt v2.3) {
+ if (!$xcodeVersion || $xcodeVersion && eval "v$xcodeVersion" lt v4.6) {
print "*************************************************************\n";
- print "Xcode Version 2.3 or later is required to build WebKit.\n";
+ print "Xcode Version 4.6 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 "most likely fail. The latest Xcode is available from the App Store.\n";
print "*************************************************************\n";
}
- } elsif (isGtk() or isQt() or isEfl()) {
- my @cmds = qw(bison gperf);
- if (isQt() and isWindows()) {
- push @cmds, "win_flex";
- } else {
- push @cmds, "flex";
- }
- my @missing = ();
- my $oldPath = $ENV{PATH};
- if (isQt() and isWindows()) {
- chomp(my $gnuWin32Dir = `$qmakebin -query QT_HOST_DATA`);
- $gnuWin32Dir = File::Spec->catfile($gnuWin32Dir, "..", "gnuwin32", "bin");
- if (-d "$gnuWin32Dir") {
- $ENV{PATH} = $gnuWin32Dir . ";" . $ENV{PATH};
- }
- }
- foreach my $cmd (@cmds) {
- push @missing, $cmd if not commandExists($cmd);
- }
-
- if (@missing) {
- my $list = join ", ", @missing;
- die "ERROR: $list missing but required to build WebKit.\n";
- }
- if (isQt() and isWindows()) {
- $ENV{PATH} = $oldPath;
- }
}
- # Win32 and other platforms may want to check for minimum config
}
sub determineWindowsSourceDir()
@@ -1540,23 +1592,71 @@ sub windowsSourceDir()
sub windowsSourceSourceDir()
{
- return windowsSourceDir() . "\\Source";
+ return File::Spec->catdir(windowsSourceDir(), "Source");
}
sub windowsLibrariesDir()
{
- return windowsSourceDir() . "\\WebKitLibraries\\win";
+ return File::Spec->catdir(windowsSourceDir(), "WebKitLibraries", "win");
}
sub windowsOutputDir()
{
- return windowsSourceDir() . "\\WebKitBuild";
+ return File::Spec->catdir(windowsSourceDir(), "WebKitBuild");
+}
+
+sub fontExists($)
+{
+ my $font = shift;
+ my $cmd = "reg query \"HKLM\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Fonts\\" . $font ."\" 2>&1";
+ my $val = `$cmd`;
+ return $? == 0;
+}
+
+sub checkInstalledTools()
+{
+ # environment variables. Avoid until this is corrected.
+ my $pythonVer = `python --version 2>&1`;
+ die "You must have Python installed to build WebKit.\n" if ($?);
+
+ # cURL 7.34.0 has a bug that prevents authentication with opensource.apple.com (and other things using SSL3).
+ my $curlVer = `curl --version 2> NUL`;
+ if (!$? and $curlVer =~ "(.*curl.*)") {
+ $curlVer = $1;
+ if ($curlVer =~ /libcurl\/7\.34\.0/) {
+ print "cURL version 7.34.0 has a bug that prevents authentication with SSL v2 or v3.\n";
+ print "cURL 7.33.0 is known to work. The cURL projects is preparing an update to\n";
+ print "correct this problem.\n\n";
+ die "Please install a working cURL and try again.\n";
+ }
+ }
+
+ # MathML requires fonts that do not ship with Windows (at least through Windows 8). Warn the user if they are missing
+ my @fonts = qw(STIXGeneral-Regular MathJax_Main-Regular);
+ my @missing = ();
+ foreach my $font (@fonts) {
+ push @missing, $font if not fontExists($font);
+ }
+
+ if (scalar @missing > 0) {
+ print "*************************************************************\n";
+ print "Mathematical fonts, such as STIX and MathJax, are needed to\n";
+ print "use the MathML feature. You do not appear to have these fonts\n";
+ print "on your system.\n\n";
+ print "You can download a suitable set of fonts from the following URL:\n";
+ print "https://developer.mozilla.org/Mozilla/MathML_Projects/Fonts\n";
+ print "*************************************************************\n";
+ }
+
+ print "Installed tools are correct for the WebKit build.\n";
}
sub setupAppleWinEnv()
{
return unless isAppleWinWebKit();
+ checkInstalledTools();
+
if (isWindowsNT()) {
my $restartNeeded = 0;
my %variablesToSet = ();
@@ -1565,6 +1665,7 @@ sub setupAppleWinEnv()
# https://bugs.webkit.org/show_bug.cgi?id=85791
my $uname_version = (POSIX::uname())[2];
$uname_version =~ s/\(.*\)//; # Remove the trailing cygwin version, if any.
+ $uname_version =~ s/\-.*$//; # Remove trailing dash-version content, if any
if (version->parse($uname_version) < version->parse("1.7.10")) {
# Setting the environment variable 'CYGWIN' to 'tty' makes cygwin enable extra support (i.e., termios)
# for UNIX-like ttys in the Windows console
@@ -1574,10 +1675,16 @@ sub setupAppleWinEnv()
# Those environment variables must be set to be able to build inside Visual Studio.
$variablesToSet{WEBKIT_LIBRARIES} = windowsLibrariesDir() unless $ENV{WEBKIT_LIBRARIES};
$variablesToSet{WEBKIT_OUTPUTDIR} = windowsOutputDir() unless $ENV{WEBKIT_OUTPUTDIR};
+ $variablesToSet{MSBUILDDISABLENODEREUSE} = "1" unless $ENV{MSBUILDDISABLENODEREUSE};
+ $variablesToSet{_IsNativeEnvironment} = "true" unless $ENV{_IsNativeEnvironment};
+ $variablesToSet{PreferredToolArchitecture} = "x64" unless $ENV{PreferredToolArchitecture};
foreach my $variable (keys %variablesToSet) {
print "Setting the Environment Variable '" . $variable . "' to '" . $variablesToSet{$variable} . "'\n\n";
- system qw(regtool -s set), '\\HKEY_CURRENT_USER\\Environment\\' . $variable, $variablesToSet{$variable};
+ my $ret = system "setx", $variable, $variablesToSet{$variable};
+ if ($ret != 0) {
+ system qw(regtool -s set), '\\HKEY_CURRENT_USER\\Environment\\' . $variable, $variablesToSet{$variable};
+ }
$restartNeeded ||= $variable eq "WEBKIT_LIBRARIES" || $variable eq "WEBKIT_OUTPUTDIR";
}
@@ -1585,43 +1692,48 @@ sub setupAppleWinEnv()
print "Please restart your computer before attempting to build inside Visual Studio.\n\n";
}
} else {
- if (!$ENV{'WEBKIT_LIBRARIES'}) {
- # VS2010 (and newer) version. This will replace the VS2005 version as part of
- # https://bugs.webkit.org/show_bug.cgi?id=109472.
+ if (!defined $ENV{'WEBKIT_LIBRARIES'} || !$ENV{'WEBKIT_LIBRARIES'}) {
print "Warning: You must set the 'WebKit_Libraries' environment variable\n";
- print " to be able build WebKit from within Visual Studio 2010 and newer.\n";
+ print " to be able build WebKit from within Visual Studio 2013 and newer.\n";
print " Make sure that 'WebKit_Libraries' points to the\n";
print " 'WebKitLibraries/win' directory, not the 'WebKitLibraries/' directory.\n\n";
}
- if (!$ENV{'WEBKIT_OUTPUTDIR'}) {
- # VS2010 (and newer) version. This will replace the VS2005 version as part of
- # https://bugs.webkit.org/show_bug.cgi?id=109472.
+ if (!defined $ENV{'WEBKIT_OUTPUTDIR'} || !$ENV{'WEBKIT_OUTPUTDIR'}) {
print "Warning: You must set the 'WebKit_OutputDir' environment variable\n";
- print " to be able build WebKit from within Visual Studio 2010 and newer.\n\n";
+ print " to be able build WebKit from within Visual Studio 2013 and newer.\n\n";
+ }
+ if (!defined $ENV{'MSBUILDDISABLENODEREUSE'} || !$ENV{'MSBUILDDISABLENODEREUSE'}) {
+ print "Warning: You should set the 'MSBUILDDISABLENODEREUSE' environment variable to '1'\n";
+ print " to avoid periodic locked log files when building.\n\n";
}
}
+ # FIXME (125180): Remove the following temporary 64-bit support once official support is available.
+ if (isWin64() and !$ENV{'WEBKIT_64_SUPPORT'}) {
+ print "Warning: You must set the 'WEBKIT_64_SUPPORT' environment variable\n";
+ print " to be able run WebKit or JavaScriptCore tests.\n\n";
+ }
}
sub setupCygwinEnv()
{
- return if !isCygwin() && !isWindows();
+ return if !isAnyWindows();
return if $vcBuildPath;
my $programFilesPath = programFilesPath();
- $vcBuildPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.com));
- if (-e $vcBuildPath) {
+ my $visualStudioPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.com));
+ if (-e $visualStudioPath) {
# Visual Studio is installed;
- if (visualStudioVersion() eq "10") {
- $vcBuildPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.exe));
+ if (visualStudioVersion() eq "12") {
+ $visualStudioPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE devenv.exe));
}
} else {
# Visual Studio not found, try VC++ Express
- $vcBuildPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE VCExpress.exe));
- if (! -e $vcBuildPath) {
+ $visualStudioPath = File::Spec->catfile(visualStudioInstallDir(), qw(Common7 IDE WDExpress.exe));
+ if (! -e $visualStudioPath) {
print "*************************************************************\n";
- print "Cannot find '$vcBuildPath'\n";
+ print "Cannot find '$visualStudioPath'\n";
print "Please execute the file 'vcvars32.bat' from\n";
- print "'$programFilesPath\\Microsoft Visual Studio 8\\VC\\bin\\'\n";
+ print "'$programFilesPath\\Microsoft Visual Studio 14.0\\VC\\bin\\'\n";
print "to setup the necessary environment variables.\n";
print "*************************************************************\n";
die;
@@ -1629,19 +1741,23 @@ sub setupCygwinEnv()
$willUseVCExpressWhenBuilding = 1;
}
- my $qtSDKPath = File::Spec->catdir($programFilesPath, "QuickTime SDK");
- if (0 && ! -e $qtSDKPath) {
+ print "Building results into: ", baseProductDir(), "\n";
+ print "WEBKIT_OUTPUTDIR is set to: ", $ENV{"WEBKIT_OUTPUTDIR"}, "\n";
+ print "WEBKIT_LIBRARIES is set to: ", $ENV{"WEBKIT_LIBRARIES"}, "\n";
+ # FIXME (125180): Remove the following temporary 64-bit support once official support is available.
+ print "WEBKIT_64_SUPPORT is set to: ", $ENV{"WEBKIT_64_SUPPORT"}, "\n" if isWin64();
+
+ # We will actually use MSBuild to build WebKit, but we need to find the Visual Studio install (above) to make
+ # sure we use the right options.
+ $vcBuildPath = File::Spec->catfile(msBuildInstallDir(), qw(MSBuild.exe));
+ if (! -e $vcBuildPath) {
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 "Cannot find '$vcBuildPath'\n";
+ print "Please make sure execute that the Microsoft .NET Framework SDK\n";
+ print "is installed on this machine.\n";
print "*************************************************************\n";
die;
}
-
- print "Building results into: ", baseProductDir(), "\n";
- print "WEBKIT_OUTPUTDIR is set to: ", $ENV{"WEBKIT_OUTPUTDIR"}, "\n";
- print "WEBKIT_LIBRARIES is set to: ", $ENV{"WEBKIT_LIBRARIES"}, "\n";
}
sub dieIfWindowsPlatformSDKNotInstalled
@@ -1675,48 +1791,6 @@ sub dieIfWindowsPlatformSDKNotInstalled
die;
}
-sub copyInspectorFrontendFiles
-{
- my $productDir = productDir();
- my $sourceInspectorPath = sourceDir() . "/Source/WebCore/inspector/front-end/";
- my $inspectorResourcesDirPath = $ENV{"WEBKITINSPECTORRESOURCESDIR"};
-
- if (!defined($inspectorResourcesDirPath)) {
- $inspectorResourcesDirPath = "";
- }
-
- if (isAppleMacWebKit()) {
- $inspectorResourcesDirPath = $productDir . "/WebCore.framework/Resources/inspector";
- } elsif (isAppleWinWebKit()) {
- $inspectorResourcesDirPath = $productDir . "/WebKit.resources/inspector";
- } elsif (isQt() || isGtk()) {
- my $prefix = $ENV{"WebKitInstallationPrefix"};
- $inspectorResourcesDirPath = (defined($prefix) ? $prefix : "/usr/share") . "/webkit-1.0/webinspector";
- } elsif (isEfl()) {
- my $prefix = $ENV{"WebKitInstallationPrefix"};
- $inspectorResourcesDirPath = (defined($prefix) ? $prefix : "/usr/share") . "/ewebkit/webinspector";
- }
-
- if (! -d $inspectorResourcesDirPath) {
- print "*************************************************************\n";
- print "Cannot find '$inspectorResourcesDirPath'.\n" if (defined($inspectorResourcesDirPath));
- print "Make sure that you have built WebKit first.\n" if (! -d $productDir || defined($inspectorResourcesDirPath));
- print "Optionally, set the environment variable 'WebKitInspectorResourcesDir'\n";
- print "to point to the directory that contains the WebKit Inspector front-end\n";
- print "files for the built WebCore framework.\n";
- print "*************************************************************\n";
- die;
- }
-
- if (isAppleMacWebKit()) {
- my $sourceLocalizedStrings = sourceDir() . "/Source/WebCore/English.lproj/localizedStrings.js";
- my $destinationLocalizedStrings = $productDir . "/WebCore.framework/Resources/English.lproj/localizedStrings.js";
- system "ditto", $sourceLocalizedStrings, $destinationLocalizedStrings;
- }
-
- return system "rsync", "-aut", "--exclude=/.DS_Store", "--exclude=*.re2js", "--exclude=.svn/", !isQt() ? "--exclude=/WebKit.qrc" : "", $sourceInspectorPath, $inspectorResourcesDirPath;
-}
-
sub buildXCodeProject($$@)
{
my ($project, $clean, @extraOptions) = @_;
@@ -1726,6 +1800,9 @@ sub buildXCodeProject($$@)
push(@extraOptions, "clean");
}
+ push(@extraOptions, ("-sdk", xcodeSDK())) if isIOSWebKit();
+
+ chomp($ENV{DSYMUTIL_NUM_THREADS} = `sysctl -n hw.activecpu`);
return system "xcodebuild", "-project", "$project.xcodeproj", @extraOptions;
}
@@ -1745,131 +1822,27 @@ sub buildVisualStudioProject
dieIfWindowsPlatformSDKNotInstalled() if $willUseVCExpressWhenBuilding;
chomp($project = `cygpath -w "$project"`) if isCygwin();
-
- my $action = "/build";
- if ($clean) {
- $action = "/clean";
- }
-
- my @command = ($vcBuildPath, $project, $action, $config);
-
- print join(" ", @command), "\n";
- return system @command;
-}
-
-sub retrieveQMakespecVar
-{
- my $mkspec = $_[0];
- my $varname = $_[1];
-
- my $varvalue = undef;
- #print "retrieveMakespecVar " . $mkspec . ", " . $varname . "\n";
-
- local *SPEC;
- open SPEC, "<$mkspec" or return $varvalue;
- while (<SPEC>) {
- if ($_ =~ /\s*include\((.+)\)/) {
- # open the included mkspec
- my $oldcwd = getcwd();
- (my $volume, my $directories, my $file) = File::Spec->splitpath($mkspec);
- my $newcwd = "$volume$directories";
- chdir $newcwd if $newcwd;
- $varvalue = retrieveQMakespecVar($1, $varname);
- chdir $oldcwd;
- } elsif ($_ =~ /$varname\s*=\s*([^\s]+)/) {
- $varvalue = $1;
- last;
- }
- }
- close SPEC;
- return $varvalue;
-}
-
-sub qtMakeCommand($)
-{
- my ($qmakebin) = @_;
- chomp(my $hostDataPath = `$qmakebin -query QT_HOST_DATA`);
- my $mkspecPath = $hostDataPath . "/mkspecs/default/qmake.conf";
- if (! -e $mkspecPath) {
- chomp(my $mkspec= `$qmakebin -query QMAKE_XSPEC`);
- $mkspecPath = $hostDataPath . "/mkspecs/" . $mkspec . "/qmake.conf";
- }
- my $compiler = retrieveQMakespecVar($mkspecPath, "QMAKE_CC");
-
- #print "default spec: " . $mkspec . "\n";
- #print "compiler found: " . $compiler . "\n";
-
- if ($compiler && $compiler eq "cl") {
- return "nmake";
- }
-
- return "make";
-}
-
-sub autotoolsFlag($$)
-{
- my ($flag, $feature) = @_;
- my $prefix = $flag ? "--enable" : "--disable";
-
- return $prefix . '-' . $feature;
-}
-
-sub runAutogenForAutotoolsProjectIfNecessary($@)
-{
- my ($dir, $prefix, $sourceDir, $project, $joinedOverridableFeatures, @buildArgs) = @_;
- # Always enable introspection when building WebKitGTK+.
- unshift(@buildArgs, "--enable-introspection");
-
- my $joinedBuildArgs = join(" ", @buildArgs);
-
- if (-e "GNUmakefile") {
- # Just assume that build-jsc will never be used to reconfigure JSC. Later
- # we can go back and make this more complicated if the demand is there.
- if ($project ne "WebKit") {
- return;
- }
-
- # Run autogen.sh again if either the features overrided by build-webkit or build arguments have changed.
- if (!mustReRunAutogen($sourceDir, "WebKitFeatureOverrides.txt", $joinedOverridableFeatures)
- && !mustReRunAutogen($sourceDir, "previous-autogen-arguments.txt", $joinedBuildArgs)) {
- return;
- }
+ my $action = "/t:build";
+ if ($clean) {
+ $action = "/t:clean";
}
- print "Calling autogen.sh in " . $dir . "\n\n";
- print "Installation prefix directory: $prefix\n" if(defined($prefix));
+ my $platform = "/p:Platform=" . (isWin64() ? "x64" : "Win32");
+ my $logPath = File::Spec->catdir($baseProductDir, $configuration);
+ make_path($logPath) unless -d $logPath or $logPath eq ".";
- # Only for WebKit, write the autogen.sh arguments to a file so that we can detect
- # when they change and automatically re-run it.
- if ($project eq 'WebKit') {
- open(OVERRIDABLE_FEATURES, ">WebKitFeatureOverrides.txt");
- print OVERRIDABLE_FEATURES $joinedOverridableFeatures;
- close(OVERRIDABLE_FEATURES);
-
- open(AUTOTOOLS_ARGUMENTS, ">previous-autogen-arguments.txt");
- print AUTOTOOLS_ARGUMENTS $joinedBuildArgs;
- close(AUTOTOOLS_ARGUMENTS);
- }
+ my $errorLogFile = File::Spec->catfile($logPath, "webkit_errors.log");
+ chomp($errorLogFile = `cygpath -w "$errorLogFile"`) if isCygwin();
+ my $errorLogging = "/flp:LogFile=" . $errorLogFile . ";ErrorsOnly";
- # Make the path relative since it will appear in all -I compiler flags.
- # Long argument lists cause bizarre slowdowns in libtool.
- my $relSourceDir = File::Spec->abs2rel($sourceDir) || ".";
+ my $warningLogFile = File::Spec->catfile($logPath, "webkit_warnings.log");
+ chomp($warningLogFile = `cygpath -w "$warningLogFile"`) if isCygwin();
+ my $warningLogging = "/flp1:LogFile=" . $warningLogFile . ";WarningsOnly";
- # Compiler options to keep floating point values consistent
- # between 32-bit and 64-bit architectures. The options are also
- # used on Chromium build.
- determineArchitecture();
- if ($architecture ne "x86_64" && !isARM()) {
- $ENV{'CXXFLAGS'} = "-march=pentium4 -msse2 -mfpmath=sse " . ($ENV{'CXXFLAGS'} || "");
- }
-
- # Prefix the command with jhbuild run.
- unshift(@buildArgs, "$relSourceDir/autogen.sh");
- unshift(@buildArgs, jhbuildWrapperPrefixIfNeeded());
- if (system(@buildArgs) ne 0) {
- die "Calling autogen.sh failed!\n";
- }
+ my @command = ($vcBuildPath, "/verbosity:minimal", $project, $action, $config, $platform, "/fl", $errorLogging, "/fl1", $warningLogging);
+ print join(" ", @command), "\n";
+ return system @command;
}
sub getJhbuildPath()
@@ -1878,13 +1851,21 @@ sub getJhbuildPath()
if (isGit() && isGitBranchBuild() && gitBranch()) {
pop(@jhbuildPath);
}
- push(@jhbuildPath, "Dependencies");
+ if (isEfl()) {
+ push(@jhbuildPath, "DependenciesEFL");
+ } elsif (isGtk()) {
+ push(@jhbuildPath, "DependenciesGTK");
+ } elsif (isQt()) {
+ push(@jhbuildPath, "DependenciesQT");
+ } else {
+ die "Cannot get JHBuild path for platform that isn't GTK+ or EFL.\n";
+ }
return File::Spec->catdir(@jhbuildPath);
}
-sub mustReRunAutogen($@)
+sub isCachedArgumentfileOutOfDate($@)
{
- my ($sourceDir, $filename, $currentContents) = @_;
+ my ($filename, $currentContents) = @_;
if (! -e $filename) {
return 1;
@@ -1894,10 +1875,6 @@ sub mustReRunAutogen($@)
chomp(my $previousContents = <CONTENTS_FILE>);
close(CONTENTS_FILE);
- # We only care about the WebKit2 argument when we are building WebKit itself.
- # build-jsc never passes --enable-webkit2, so if we didn't do this, autogen.sh
- # would run for every single build on the bots, since it runs both build-webkit
- # and build-jsc.
if ($previousContents ne $currentContents) {
print "Contents for file $filename have changed.\n";
print "Previous contents were: $previousContents\n\n";
@@ -1908,183 +1885,192 @@ sub mustReRunAutogen($@)
return 0;
}
-sub buildAutotoolsProject($@)
+sub wrapperPrefixIfNeeded()
{
- my ($project, $clean, $prefix, $makeArgs, $noWebKit1, $noWebKit2, @features) = @_;
-
- my $make = 'make';
- my $dir = productDir();
- my $config = passedConfiguration() || configuration();
-
- # Use rm to clean the build directory since distclean may miss files
- if ($clean && -d $dir) {
- system "rm", "-rf", "$dir";
+ if (isAnyWindows()) {
+ return ();
}
-
- if (! -d $dir) {
- File::Path::mkpath($dir) or die "Failed to create build directory " . $dir
- }
- chdir $dir or die "Failed to cd into " . $dir . "\n";
-
- if ($clean) {
- return 0;
+ if (isAppleMacWebKit()) {
+ return ("xcrun");
}
+ if (-e getJhbuildPath()) {
+ my @prefix = (File::Spec->catfile(sourceDir(), "Tools", "jhbuild", "jhbuild-wrapper"));
+ if (isEfl()) {
+ push(@prefix, "--efl");
+ } elsif (isGtk()) {
+ push(@prefix, "--gtk");
+ } elsif (isQt()) {
+ push(@prefix, "--qt");
+ }
+ push(@prefix, "run");
- my @buildArgs = @ARGV;
- if ($noWebKit1) {
- unshift(@buildArgs, "--disable-webkit1");
- }
- if ($noWebKit2) {
- unshift(@buildArgs, "--disable-webkit2");
+ return @prefix;
}
- # Configurable features listed here should be kept in sync with the
- # features for which there exists a configuration option in configure.ac.
- my %configurableFeatures = (
- "battery-status" => 1,
- "gamepad" => 1,
- "geolocation" => 1,
- "svg" => 1,
- "svg-fonts" => 1,
- "video" => 1,
- "webgl" => 1,
- "web-audio" => 1,
- );
+ return ();
+}
- # These features are ones which build-webkit cannot control, typically because
- # they can only be active when we have the proper dependencies.
- my %unsetFeatures = (
- "accelerated-2d-canvas" => 1,
- );
+sub cmakeCachePath()
+{
+ return File::Spec->catdir(baseProductDir(), configuration(), "CMakeCache.txt");
+}
- my @overridableFeatures = ();
- foreach (@features) {
- if ($configurableFeatures{$_->{option}}) {
- push @buildArgs, autotoolsFlag(${$_->{value}}, $_->{option});;
- } elsif (!$unsetFeatures{$_->{option}}) {
- push @overridableFeatures, $_->{define} . "=" . (${$_->{value}} ? "1" : "0");
- }
- }
+sub shouldRemoveCMakeCache(@)
+{
+ my ($cacheFilePath, @buildArgs) = @_;
- $makeArgs = $makeArgs || "";
- $makeArgs = $makeArgs . " " . $ENV{"WebKitMakeArguments"} if $ENV{"WebKitMakeArguments"};
+ # We check this first, because we always want to create this file for a fresh build.
+ my $productDir = File::Spec->catdir(baseProductDir(), configuration());
+ my $optionsCache = File::Spec->catdir($productDir, "build-webkit-options.txt");
+ my $joinedBuildArgs = join(" ", @buildArgs);
+ if (isCachedArgumentfileOutOfDate($optionsCache, $joinedBuildArgs)) {
+ File::Path::mkpath($productDir) unless -d $productDir;
+ open(CACHED_ARGUMENTS, ">", $optionsCache);
+ print CACHED_ARGUMENTS $joinedBuildArgs;
+ close(CACHED_ARGUMENTS);
- # Automatically determine the number of CPUs for make only
- # if make arguments haven't already been specified.
- if ($makeArgs eq "") {
- $makeArgs = "-j" . numberOfCPUs();
+ return 1;
}
- # WebKit is the default target, so we don't need to specify anything.
- if ($project eq "JavaScriptCore") {
- $makeArgs .= " jsc";
- } elsif ($project eq "WTF") {
- $makeArgs .= " libWTF.la";
+ my $cmakeCache = cmakeCachePath();
+ unless (-e $cmakeCache) {
+ return 0;
}
- $prefix = $ENV{"WebKitInstallationPrefix"} if !defined($prefix);
- push @buildArgs, "--prefix=" . $prefix if defined($prefix);
-
- # Check if configuration is Debug.
- my $debug = $config =~ m/debug/i;
- if ($debug) {
- push @buildArgs, "--enable-debug";
- } else {
- push @buildArgs, "--disable-debug";
+ my $cacheFileModifiedTime = stat($cmakeCache)->mtime;
+ my $platformConfiguration = File::Spec->catdir(sourceDir(), "Source", "cmake", "Options" . cmakeBasedPortName() . ".cmake");
+ if ($cacheFileModifiedTime < stat($platformConfiguration)->mtime) {
+ return 1;
}
- if (checkForArgumentAndRemoveFromArrayRef("--update-gtk", \@buildArgs)) {
- # Force autogen to run, to catch the possibly updated libraries.
- system("rm -f previous-autogen-arguments.txt");
-
- system("perl", "$sourceDir/Tools/Scripts/update-webkitgtk-libs") == 0 or die $!;
+ my $globalConfiguration = File::Spec->catdir(sourceDir(), "Source", "cmake", "OptionsCommon.cmake");
+ if ($cacheFileModifiedTime < stat($globalConfiguration)->mtime) {
+ return 1;
}
- # If GNUmakefile exists, don't run autogen.sh unless its arguments
- # have changed. The makefile should be smart enough to track autotools
- # dependencies and re-run autogen.sh when build files change.
- my $joinedOverridableFeatures = join(" ", @overridableFeatures);
- runAutogenForAutotoolsProjectIfNecessary($dir, $prefix, $sourceDir, $project, $joinedOverridableFeatures, @buildArgs);
-
- my $runWithJhbuild = join(" ", jhbuildWrapperPrefixIfNeeded());
- if (system("$runWithJhbuild $make $makeArgs") ne 0) {
- die "\nFailed to build WebKit using '$make'!\n";
+ my $inspectorUserInterfaceDircetory = File::Spec->catdir(sourceDir(), "Source", "WebInspectorUI", "UserInterface");
+ if ($cacheFileModifiedTime < stat($inspectorUserInterfaceDircetory)->mtime) {
+ return 1;
}
- chdir ".." or die;
+ return 0;
+}
- if ($project eq 'WebKit' && !isCrossCompilation() && !($noWebKit1 && $noWebKit2)) {
- my @docGenerationOptions = ("$sourceDir/Tools/gtk/generate-gtkdoc", "--skip-html");
- push(@docGenerationOptions, productDir());
+sub removeCMakeCache(@)
+{
+ my (@buildArgs) = @_;
+ if (shouldRemoveCMakeCache(@buildArgs)) {
+ my $cmakeCache = cmakeCachePath();
+ unlink($cmakeCache) if -e $cmakeCache;
+ }
+}
- unshift(@docGenerationOptions, jhbuildWrapperPrefixIfNeeded());
+sub canUseNinja(@)
+{
+ if (!defined($shouldNotUseNinja)) {
+ $shouldNotUseNinja = checkForArgumentAndRemoveFromARGV("--no-ninja");
+ }
- if (system(@docGenerationOptions)) {
- die "\n gtkdoc did not build without warnings\n";
- }
+ if ($shouldNotUseNinja) {
+ return 0;
}
- return 0;
+ # Test both ninja and ninja-build. Fedora uses ninja-build and has patched CMake to also call ninja-build.
+ return commandExists("ninja") || commandExists("ninja-build");
}
-sub jhbuildWrapperPrefixIfNeeded()
+sub canUseNinjaGenerator(@)
{
- if (-e getJhbuildPath()) {
- my @prefix = (File::Spec->catfile(sourceDir(), "Tools", "jhbuild", "jhbuild-wrapper"));
- if (isEfl()) {
- push(@prefix, "--efl");
- } elsif (isGtk()) {
- push(@prefix, "--gtk");
- }
- push(@prefix, "run");
+ # Check that a Ninja generator is installed
+ my $devnull = File::Spec->devnull();
+ return exitStatus(system("cmake -N -G Ninja >$devnull 2>&1")) == 0;
+}
- return @prefix;
- }
+sub canUseEclipseNinjaGenerator(@)
+{
+ # Check that eclipse and eclipse Ninja generator is installed
+ my $devnull = File::Spec->devnull();
+ return commandExists("eclipse") && exitStatus(system("cmake -N -G 'Eclipse CDT4 - Ninja' >$devnull 2>&1")) == 0;
+}
- return ();
+sub canUseCodeBlocksNinjaGenerator
+{
+ # Check that CodeBlocks Ninja generator is installed
+ my $devnull = File::Spec->devnull();
+ return exitStatus(system("cmake -N -G 'CodeBlocks - Ninja' >$devnull 2>&1")) == 0;
}
-sub removeCMakeCache()
+sub cmakeGeneratedBuildfile(@)
{
- my $cacheFilePath = File::Spec->catdir(baseProductDir(), configuration(), "CMakeCache.txt");
- unlink($cacheFilePath) if -e $cacheFilePath;
+ my ($willUseNinja) = @_;
+ if ($willUseNinja) {
+ return File::Spec->catfile(baseProductDir(), configuration(), "build.ninja")
+ } elsif (isAnyWindows()) {
+ return File::Spec->catfile(baseProductDir(), configuration(), "WebKit.sln")
+ } else {
+ return File::Spec->catfile(baseProductDir(), configuration(), "Makefile")
+ }
}
sub generateBuildSystemFromCMakeProject
{
- my ($port, $prefixPath, @cmakeArgs, $additionalCMakeArgs) = @_;
+ my ($prefixPath, @cmakeArgs) = @_;
my $config = configuration();
+ my $port = cmakeBasedPortName();
my $buildPath = File::Spec->catdir(baseProductDir(), $config);
File::Path::mkpath($buildPath) unless -d $buildPath;
my $originalWorkingDirectory = getcwd();
chdir($buildPath) or die;
+ # We try to be smart about when to rerun cmake, so that we can have faster incremental builds.
+ my $willUseNinja = canUseNinja() && canUseNinjaGenerator();
+ if (-e cmakeCachePath() && -e cmakeGeneratedBuildfile($willUseNinja)) {
+ return 0;
+ }
+
my @args;
push @args, "-DPORT=\"$port\"";
push @args, "-DCMAKE_INSTALL_PREFIX=\"$prefixPath\"" if $prefixPath;
- push @args, "-DSHARED_CORE=ON" if isEfl() && $ENV{"ENABLE_DRT"};
+ push @args, "-DCMAKE_EXPORT_COMPILE_COMMANDS=ON" if isGtk();
if ($config =~ /release/i) {
push @args, "-DCMAKE_BUILD_TYPE=Release";
} elsif ($config =~ /debug/i) {
push @args, "-DCMAKE_BUILD_TYPE=Debug";
}
+
+ if ($willUseNinja) {
+ push @args, "-G";
+ if (canUseEclipseNinjaGenerator()) {
+ push @args, "'Eclipse CDT4 - Ninja'";
+ } elsif (isQt() && canUseCodeBlocksNinjaGenerator()) {
+ push @args, "'CodeBlocks - Ninja'";
+ } else {
+ push @args, "Ninja";
+ }
+ } elsif (isAnyWindows() && isWin64()) {
+ push @args, '-G "Visual Studio 14 2015 Win64"';
+ }
+
+ # Some ports have production mode, but build-webkit should always use developer mode.
+ push @args, "-DDEVELOPER_MODE=ON" if isEfl() || isGtk() || isQt();
+
# Don't warn variables which aren't used by cmake ports.
push @args, "--no-warn-unused-cli";
push @args, @cmakeArgs if @cmakeArgs;
- push @args, $additionalCMakeArgs if $additionalCMakeArgs;
- push @args, '"' . sourceDir() . '"';
+ my $cmakeSourceDir = isCygwin() ? windowsSourceDir() : sourceDir();
+ push @args, '"' . $cmakeSourceDir . '"';
# Compiler options to keep floating point values consistent
# between 32-bit and 64-bit architectures.
determineArchitecture();
- if ($architecture ne "x86_64" && !isARM()) {
+ if ($architecture ne "x86_64" && !isARM() && !isCrossCompilation() && !isAnyWindows()) {
$ENV{'CXXFLAGS'} = "-march=pentium4 -msse2 -mfpmath=sse " . ($ENV{'CXXFLAGS'} || "");
}
# We call system("cmake @args") instead of system("cmake", @args) so that @args is
# parsed for shell metacharacters.
- my $wrapper = join(" ", jhbuildWrapperPrefixIfNeeded()) . " ";
+ my $wrapper = join(" ", wrapperPrefixIfNeeded()) . " ";
my $returnCode = system($wrapper . "cmake @args");
chdir($originalWorkingDirectory);
@@ -2099,13 +2085,27 @@ sub buildCMakeGeneratedProject($)
if (! -d $buildPath) {
die "Must call generateBuildSystemFromCMakeProject() before building CMake project.";
}
+
+ my $command = "cmake";
my @args = ("--build", $buildPath, "--config", $config);
push @args, ("--", $makeArgs) if $makeArgs;
+ # GTK can use a build script to preserve colors and pretty-printing.
+ if ((isGtk() || isQt()) && -e "$buildPath/build.sh") {
+ chdir "$buildPath" or die;
+ $command = "$buildPath/build.sh";
+ @args = ($makeArgs);
+ }
+
+ if ($ENV{VERBOSE} && canUseNinja()) {
+ push @args, "-v";
+ push @args, "-d keeprsp" if (version->parse(determineNinjaVersion()) >= version->parse("1.4.0"));
+ }
+
# We call system("cmake @args") instead of system("cmake", @args) so that @args is
# parsed for shell metacharacters. In particular, $makeArgs may contain such metacharacters.
- my $wrapper = join(" ", jhbuildWrapperPrefixIfNeeded()) . " ";
- return system($wrapper . "cmake @args");
+ my $wrapper = join(" ", wrapperPrefixIfNeeded()) . " ";
+ return system($wrapper . "$command @args");
}
sub cleanCMakeGeneratedProject()
@@ -2118,9 +2118,9 @@ sub cleanCMakeGeneratedProject()
return 0;
}
-sub buildCMakeProjectOrExit($$$$@)
+sub buildCMakeProjectOrExit($$$@)
{
- my ($clean, $port, $prefixPath, $makeArgs, @cmakeArgs) = @_;
+ my ($clean, $prefixPath, $makeArgs, @cmakeArgs) = @_;
my $returnCode;
exit(exitStatus(cleanCMakeGeneratedProject())) if $clean;
@@ -2129,12 +2129,17 @@ sub buildCMakeProjectOrExit($$$$@)
system("perl", "$sourceDir/Tools/Scripts/update-webkitefl-libs") == 0 or die $!;
}
+ if (isGtk() && checkForArgumentAndRemoveFromARGV("--update-gtk")) {
+ system("perl", "$sourceDir/Tools/Scripts/update-webkitgtk-libs") == 0 or die $!;
+ }
+
+ if (isQt() && isAnyWindows() && checkForArgumentAndRemoveFromARGV("--update-qt")) {
+ system("perl", "$sourceDir/Tools/Scripts/update-qtwebkit-win-libs") == 0 or die $!;
+ }
- $returnCode = exitStatus(generateBuildSystemFromCMakeProject($port, $prefixPath, @cmakeArgs));
+ $returnCode = exitStatus(generateBuildSystemFromCMakeProject($prefixPath, @cmakeArgs));
exit($returnCode) if $returnCode;
- if (isBlackBerry()) {
- return 0 if (defined($ENV{"GENERATE_CMAKE_PROJECT_ONLY"}) eq '1');
- }
+
$returnCode = exitStatus(buildCMakeGeneratedProject($makeArgs));
exit($returnCode) if $returnCode;
return 0;
@@ -2142,17 +2147,25 @@ sub buildCMakeProjectOrExit($$$$@)
sub cmakeBasedPortArguments()
{
- return blackberryCMakeArguments() if isBlackBerry();
- return ('-G "Visual Studio 8 2005 STANDARDSDK_500 (ARMV4I)"') if isWinCE();
return ();
}
sub cmakeBasedPortName()
{
- return "BlackBerry" if isBlackBerry();
- return "Efl" if isEfl();
- return "WinCE" if isWinCE();
- return "";
+ return ucfirst portName();
+}
+
+sub determineIsCMakeBuild()
+{
+ return if defined($isCMakeBuild);
+ $isCMakeBuild = checkForArgumentAndRemoveFromARGV("--cmake");
+}
+
+sub isCMakeBuild()
+{
+ return 1 unless isAppleMacWebKit();
+ determineIsCMakeBuild();
+ return $isCMakeBuild;
}
sub promptUser
@@ -2164,268 +2177,356 @@ sub promptUser
return $input ? $input : $default;
}
-sub buildQMakeProjects
-{
- my ($projects, $clean, @buildParams) = @_;
-
- my @buildArgs = ();
- my $qconfigs = "";
-
- my $make = qtMakeCommand($qmakebin);
- my $makeargs = "";
- my $command;
- my $installHeaders;
- my $installLibs;
- for my $i (0 .. $#buildParams) {
- my $opt = $buildParams[$i];
- if ($opt =~ /^--qmake=(.*)/i ) {
- $qmakebin = $1;
- } elsif ($opt =~ /^--qmakearg=(.*)/i ) {
- push @buildArgs, $1;
- } elsif ($opt =~ /^--makeargs=(.*)/i ) {
- $makeargs = $1;
- } elsif ($opt =~ /^--install-headers=(.*)/i ) {
- $installHeaders = $1;
- } elsif ($opt =~ /^--install-libs=(.*)/i ) {
- $installLibs = $1;
- } else {
- push @buildArgs, $opt;
- }
- }
-
- # Automatically determine the number of CPUs for make only if this make argument haven't already been specified.
- if ($make eq "make" && $makeargs !~ /-[^\s]*?j\s*\d+/i && (!defined $ENV{"MAKEFLAGS"} || ($ENV{"MAKEFLAGS"} !~ /-[^\s]*?j\s*\d+/i ))) {
- $makeargs .= " -j" . numberOfCPUs();
- }
+sub appleApplicationSupportPath
+{
+ open INSTALL_DIR, "</proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Apple\ Inc./Apple\ Application\ Support/InstallDir";
+ my $path = <INSTALL_DIR>;
+ $path =~ s/[\r\n\x00].*//;
+ close INSTALL_DIR;
- $make = "$make $makeargs";
- $make =~ s/\s+$//;
+ my $unixPath = `cygpath -u '$path'`;
+ chomp $unixPath;
+ return $unixPath;
+}
- my $originalCwd = getcwd();
- my $dir = File::Spec->canonpath(productDir());
- File::Path::mkpath($dir);
- chdir $dir or die "Failed to cd into " . $dir . "\n";
+sub setPathForRunningWebKitApp
+{
+ my ($env) = @_;
- if ($clean) {
- $command = "$make distclean";
- print "\nCalling '$command' in " . $dir . "\n\n";
- return system $command;
+ if (isAnyWindows()) {
+ my $productBinaryDir = executableProductDir();
+ if (isAppleWinWebKit()) {
+ $env->{PATH} = join(':', $productBinaryDir, appleApplicationSupportPath(), $env->{PATH} || "");
+ } elsif (isWinCairo()) {
+ my $winCairoBin = sourceDir() . "/WebKitLibraries/win/" . (isWin64() ? "bin64/" : "bin32/");
+ my $gstreamerBin = isWin64() ? $ENV{"GSTREAMER_1_0_ROOT_X86_64"} . "bin" : $ENV{"GSTREAMER_1_0_ROOT_X86"} . "bin";
+ $env->{PATH} = join(':', $productBinaryDir, $winCairoBin, $gstreamerBin, $env->{PATH} || "");
+ }
}
+}
- my $qmakepath = File::Spec->catfile(sourceDir(), "Tools", "qmake");
- my $qmakecommand = $qmakebin;
-
- my $config = configuration();
- push @buildArgs, "INSTALL_HEADERS=" . $installHeaders if defined($installHeaders);
- push @buildArgs, "INSTALL_LIBS=" . $installLibs if defined($installLibs);
+sub printHelpAndExitForRunAndDebugWebKitAppIfNeeded
+{
+ return unless checkForArgumentAndRemoveFromARGV("--help");
- my $passedConfig = passedConfiguration() || "";
- if ($passedConfig =~ m/debug/i) {
- push @buildArgs, "CONFIG-=release";
- push @buildArgs, "CONFIG+=debug";
- } elsif ($passedConfig =~ m/release/i) {
- push @buildArgs, "CONFIG+=release";
- push @buildArgs, "CONFIG-=debug";
- } elsif ($passedConfig) {
- die "Build type $passedConfig is not supported with --qt.\n";
- }
+ my ($includeOptionsForDebugging) = @_;
- # Using build-webkit to build assumes you want a developer-build
- push @buildArgs, "CONFIG-=production_build" unless grep { $_ eq "CONFIG+=production_build" } @buildArgs;
+ print STDERR <<EOF;
+Usage: @{[basename($0)]} [options] [args ...]
+ --help Show this help message
+ --no-saved-state Launch the application without state restoration (OS X 10.7 and later)
+ -g|--guard-malloc Enable Guard Malloc (OS X only)
+EOF
- my $svnRevision = currentSVNRevision();
- my $previousSvnRevision = "unknown";
+ if ($includeOptionsForDebugging) {
+ print STDERR <<EOF;
+ --use-gdb Use GDB (this is the default when using Xcode 4.4 or earlier)
+ --use-lldb Use LLDB (this is the default when using Xcode 4.5 or later)
+EOF
+ }
- my $buildHint = "";
+ exit(1);
+}
- my $pathToBuiltRevisions = File::Spec->catfile($dir, ".builtRevisions.cache");
- if (-e $pathToBuiltRevisions && open(BUILTREVISIONS, $pathToBuiltRevisions)) {
- while (<BUILTREVISIONS>) {
- if ($_ =~ m/^SVN_REVISION\s=\s(\d+)$/) {
- $previousSvnRevision = $1;
- }
- }
- close(BUILTREVISIONS);
+sub argumentsForRunAndDebugMacWebKitApp()
+{
+ my @args = ();
+ if (checkForArgumentAndRemoveFromARGV("--no-saved-state")) {
+ push @args, ("-ApplePersistenceIgnoreStateQuietly", "YES");
+ # FIXME: Don't set ApplePersistenceIgnoreState once all supported OS versions respect ApplePersistenceIgnoreStateQuietly (rdar://15032886).
+ push @args, ("-ApplePersistenceIgnoreState", "YES");
}
+ unshift @args, @ARGV;
- my $result = 0;
-
- # Run qmake, regadless of having a makefile or not, so that qmake can
- # detect changes to the configuration.
+ return @args;
+}
- push @buildArgs, "-after OVERRIDE_SUBDIRS=\"@{$projects}\"" if @{$projects};
- unshift @buildArgs, File::Spec->catfile(sourceDir(), "WebKit.pro");
- $command = "$qmakecommand @buildArgs";
- print "Calling '$command' in " . $dir . "\n\n";
- print "Installation headers directory: $installHeaders\n" if(defined($installHeaders));
- print "Installation libraries directory: $installLibs\n" if(defined($installLibs));
+sub setupMacWebKitEnvironment($)
+{
+ my ($dyldFrameworkPath) = @_;
- my $configChanged = 0;
- open(QMAKE, "$command 2>&1 |") || die "Could not execute qmake";
- while (<QMAKE>) {
- $configChanged = 1 if $_ =~ m/The configuration was changed since the last build/;
- print $_;
- }
+ $dyldFrameworkPath = File::Spec->rel2abs($dyldFrameworkPath);
- close(QMAKE);
- $result = $?;
+ prependToEnvironmentVariableList("DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
+ prependToEnvironmentVariableList("__XPC_DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
+ $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
- if ($result ne 0) {
- die "\nFailed to set up build environment using $qmakebin!\n";
- }
+ setUpGuardMallocIfNeeded();
+}
- my $maybeNeedsCleanBuild = 0;
- my $needsIncrementalBuild = 0;
+sub setupIOSWebKitEnvironment($)
+{
+ my ($dyldFrameworkPath) = @_;
+ $dyldFrameworkPath = File::Spec->rel2abs($dyldFrameworkPath);
- # Full incremental build (run qmake) needed on buildbots and EWS bots always.
- if (grep(/CONFIG\+=buildbot/,@buildParams)) {
- $needsIncrementalBuild = 1;
- }
+ prependToEnvironmentVariableList("DYLD_FRAMEWORK_PATH", $dyldFrameworkPath);
+ prependToEnvironmentVariableList("DYLD_LIBRARY_PATH", $dyldFrameworkPath);
- if ($svnRevision ne $previousSvnRevision) {
- print "Last built revision was " . $previousSvnRevision .
- ", now at revision $svnRevision. Full incremental build needed.\n";
- $needsIncrementalBuild = 1;
+ setUpGuardMallocIfNeeded();
+}
- my @fileList = listOfChangedFilesBetweenRevisions(sourceDir(), $previousSvnRevision, $svnRevision);
+sub iosSimulatorApplicationsPath()
+{
+ return File::Spec->catdir(XcodeSDKPath(), "Applications");
+}
- foreach (@fileList) {
- if (m/\.pr[oif]$/ or
- m/\.qmake.conf$/ or
- m/^Tools\/qmake\//
- ) {
- print "Change to $_ detected, clean build may be needed.\n";
- $maybeNeedsCleanBuild = 1;
- last;
- }
- }
- }
+sub installedMobileSafariBundle()
+{
+ return File::Spec->catfile(iosSimulatorApplicationsPath(), "MobileSafari.app");
+}
- if ($configChanged) {
- print "Calling '$make wipeclean' in " . $dir . "\n\n";
- $result = system "$make wipeclean";
- }
+sub mobileSafariBundle()
+{
+ determineConfigurationProductDir();
- $command = "$make";
- if ($needsIncrementalBuild) {
- $command .= " incremental";
+ # Use MobileSafari.app in product directory if present.
+ if (isAppleMacWebKit() && -d "$configurationProductDir/MobileSafari.app") {
+ return "$configurationProductDir/MobileSafari.app";
}
+ return installedMobileSafariBundle();
+}
- print "\nCalling '$command' in " . $dir . "\n\n";
- $result = system $command;
-
- chdir ".." or die;
+sub plistPathFromBundle($)
+{
+ my ($appBundle) = @_;
+ return "$appBundle/Info.plist" if -f "$appBundle/Info.plist"; # iOS app bundle
+ return "$appBundle/Contents/Info.plist" if -f "$appBundle/Contents/Info.plist"; # Mac app bundle
+ return "";
+}
- if ($result eq 0) {
- # Now that the build completed successfully we can save the SVN revision
- open(BUILTREVISIONS, ">>$pathToBuiltRevisions");
- print BUILTREVISIONS "SVN_REVISION = $svnRevision\n";
- close(BUILTREVISIONS);
- } elsif (!$command =~ /incremental/ && exitStatus($result)) {
- my $exitCode = exitStatus($result);
- my $failMessage = <<EOF;
+sub appIdentifierFromBundle($)
+{
+ my ($appBundle) = @_;
+ my $plistPath = File::Spec->rel2abs(plistPathFromBundle($appBundle)); # defaults(1) will complain if the specified path is not absolute.
+ chomp(my $bundleIdentifier = `defaults read '$plistPath' CFBundleIdentifier 2> /dev/null`);
+ return $bundleIdentifier;
+}
-===== BUILD FAILED ======
+sub appDisplayNameFromBundle($)
+{
+ my ($appBundle) = @_;
+ my $plistPath = File::Spec->rel2abs(plistPathFromBundle($appBundle)); # defaults(1) will complain if the specified path is not absolute.
+ chomp(my $bundleDisplayName = `defaults read '$plistPath' CFBundleDisplayName 2> /dev/null`);
+ return $bundleDisplayName;
+}
-The build failed with exit code $exitCode. This may have been because you
+sub waitUntilIOSSimulatorDeviceIsInState($$)
+{
+ my ($deviceUDID, $waitUntilState) = @_;
+ my $device = iosSimulatorDeviceByUDID($deviceUDID);
+ while ($device->{state} ne $waitUntilState) {
+ usleep(500 * 1000); # Waiting 500ms between file system polls does not make script run-safari feel sluggish.
+ $device = iosSimulatorDeviceByUDID($deviceUDID);
+ }
+}
- - added an #include to a source/header
- - added a Q_OBJECT macro to a class
- - added a new resource to a qrc file
+sub shutDownIOSSimulatorDevice($)
+{
+ my ($simulatorDevice) = @_;
+ system("xcrun --sdk iphonesimulator simctl shutdown $simulatorDevice->{UDID} > /dev/null 2>&1");
+}
-as dependencies are not automatically re-computed for local developer builds.
-You may try computing dependencies manually by running 'make qmake_all' in:
+sub restartIOSSimulatorDevice($)
+{
+ my ($simulatorDevice) = @_;
+ shutDownIOSSimulatorDevice($simulatorDevice);
- $dir
+ exitStatus(system("xcrun", "--sdk", "iphonesimulator", "simctl", "boot", $simulatorDevice->{UDID})) == 0 or die "Failed to boot simulator device $simulatorDevice->{UDID}";
+}
-or passing --makeargs="qmake_all" to build-webkit.
+sub relaunchIOSSimulator($)
+{
+ my ($simulatedDevice) = @_;
+ quitIOSSimulator($simulatedDevice->{UDID});
-=========================
+ # FIXME: <rdar://problem/20916140> Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
+ my $iosSimulatorBundleID = "com.apple.iphonesimulator";
+ system("open", "-b", $iosSimulatorBundleID, "--args", "-CurrentDeviceUDID", $simulatedDevice->{UDID}) == 0 or die "Failed to open $iosSimulatorBundleID: $!";
-EOF
- print "$failMessage";
- } elsif ($maybeNeedsCleanBuild) {
- print "\nIncremental build failed, clean build needed. \n";
- print "Calling '$make wipeclean' in " . $dir . "\n\n";
- chdir $dir or die;
- system "$make wipeclean";
+ waitUntilIOSSimulatorDeviceIsInState($simulatedDevice->{UDID}, SIMULATOR_DEVICE_STATE_BOOTED);
+}
- print "\nCalling '$make' in " . $dir . "\n\n";
- $result = system $make;
+sub quitIOSSimulator(;$)
+{
+ my ($waitForShutdownOfSimulatedDeviceUDID) = @_;
+ # FIXME: <rdar://problem/20916140> Switch to using CoreSimulator.framework for launching and quitting iOS Simulator
+ exitStatus(system {"osascript"} "osascript", "-e", 'tell application id "com.apple.iphonesimulator" to quit') == 0 or die "Failed to quit iOS Simulator: $!";
+ if (!defined($waitForShutdownOfSimulatedDeviceUDID)) {
+ return;
}
-
- return $result;
+ # FIXME: We assume that $waitForShutdownOfSimulatedDeviceUDID was not booted using the simctl command line tool.
+ # Otherwise we will spin indefinitely since quiting the iOS Simulator will not shutdown this device. We
+ # should add a maximum time limit to wait for a device to shutdown and either return an error or die()
+ # on expiration of the time limit.
+ waitUntilIOSSimulatorDeviceIsInState($waitForShutdownOfSimulatedDeviceUDID, SIMULATOR_DEVICE_STATE_SHUTDOWN);
}
-sub buildGtkProject
+sub iosSimulatorDeviceByName($)
{
- my ($project, $clean, $prefix, $makeArgs, $noWebKit1, $noWebKit2, @features) = @_;
+ my ($simulatorName) = @_;
+ my $simulatorRuntime = iosSimulatorRuntime();
+ my @devices = iOSSimulatorDevices();
+ for my $device (@devices) {
+ if ($device->{name} eq $simulatorName && $device->{runtime} eq $simulatorRuntime) {
+ return $device;
+ }
+ }
+ return undef;
+}
- if ($project ne "WebKit" and $project ne "JavaScriptCore" and $project ne "WTF") {
- die "Unsupported project: $project. Supported projects: WebKit, JavaScriptCore, WTF\n";
+sub iosSimulatorDeviceByUDID($)
+{
+ my ($simulatedDeviceUDID) = @_;
+ my $devicePlistPath = File::Spec->catfile(iOSSimulatorDevicesPath(), $simulatedDeviceUDID, "device.plist");
+ if (!-f $devicePlistPath) {
+ return;
}
+ # FIXME: We should parse the device.plist file ourself and map the dictionary keys in it to known
+ # dictionary keys so as to decouple our representation of the plist from the actual structure
+ # of the plist, which may change.
+ eval "require Foundation";
+ return Foundation::perlRefFromObjectRef(NSDictionary->dictionaryWithContentsOfFile_($devicePlistPath));
+}
- return buildAutotoolsProject($project, $clean, $prefix, $makeArgs, $noWebKit1, $noWebKit2, @features);
+sub iosSimulatorRuntime()
+{
+ my $xcodeSDKVersion = xcodeSDKVersion();
+ $xcodeSDKVersion =~ s/\./-/;
+ return "com.apple.CoreSimulator.SimRuntime.iOS-$xcodeSDKVersion";
}
-sub appleApplicationSupportPath
+sub findOrCreateSimulatorForIOSDevice($)
{
- open INSTALL_DIR, "</proc/registry/HKEY_LOCAL_MACHINE/SOFTWARE/Apple\ Inc./Apple\ Application\ Support/InstallDir";
- my $path = <INSTALL_DIR>;
- $path =~ s/[\r\n\x00].*//;
- close INSTALL_DIR;
+ my ($simulatorNameSuffix) = @_;
+ my $simulatorName;
+ my $simulatorDeviceType;
+ if (architecture() eq "x86_64") {
+ $simulatorName = "iPhone 5s " . $simulatorNameSuffix;
+ $simulatorDeviceType = "com.apple.CoreSimulator.SimDeviceType.iPhone-5s";
+ } else {
+ $simulatorName = "iPhone 5 " . $simulatorNameSuffix;
+ $simulatorDeviceType = "com.apple.CoreSimulator.SimDeviceType.iPhone-5";
+ }
+ my $simulatedDevice = iosSimulatorDeviceByName($simulatorName);
+ return $simulatedDevice if $simulatedDevice;
+ return createiOSSimulatorDevice($simulatorName, $simulatorDeviceType, iosSimulatorRuntime());
+}
- my $unixPath = `cygpath -u '$path'`;
- chomp $unixPath;
- return $unixPath;
+sub isIOSSimulatorSystemInstalledApp($)
+{
+ my ($appBundle) = @_;
+ my $simulatorApplicationsPath = realpath(iosSimulatorApplicationsPath());
+ return substr(realpath($appBundle), 0, length($simulatorApplicationsPath)) eq $simulatorApplicationsPath;
}
-sub setPathForRunningWebKitApp
+sub hasUserInstalledAppInSimulatorDevice($$)
{
- my ($env) = @_;
+ my ($appIdentifier, $simulatedDeviceUDID) = @_;
+ my $userInstalledAppPath = File::Spec->catfile($ENV{HOME}, "Library", "Developer", "CoreSimulator", "Devices", $simulatedDeviceUDID, "data", "Containers", "Bundle", "Application");
+ if (!-d $userInstalledAppPath) {
+ return 0; # No user installed apps.
+ }
+ local @::userInstalledAppBundles;
+ my $wantedFunction = sub {
+ my $file = $_;
- if (isAppleWinWebKit()) {
- $env->{PATH} = join(':', productDir(), dirname(installedSafariPath()), appleApplicationSupportPath(), $env->{PATH} || "");
- } elsif (isQt()) {
- my $qtLibs = `$qmakebin -query QT_INSTALL_LIBS`;
- $qtLibs =~ s/[\n|\r]$//g;
- $env->{PATH} = join(';', $qtLibs, productDir() . "/lib", $env->{PATH} || "");
+ # Ignore hidden files and directories.
+ if ($file =~ /^\../) {
+ $File::Find::prune = 1;
+ return;
+ }
+
+ return if !-d $file || $file !~ /\.app$/;
+ push @::userInstalledAppBundles, $File::Find::name;
+ $File::Find::prune = 1; # Do not traverse contents of app bundle.
+ };
+ find($wantedFunction, $userInstalledAppPath);
+ for my $userInstalledAppBundle (@::userInstalledAppBundles) {
+ if (appIdentifierFromBundle($userInstalledAppBundle) eq $appIdentifier) {
+ return 1; # Has user installed app.
+ }
}
+ return 0; # Does not have user installed app.
}
-sub printHelpAndExitForRunAndDebugWebKitAppIfNeeded
+sub isSimulatorDeviceBooted($)
{
- return unless checkForArgumentAndRemoveFromARGV("--help");
+ my ($simulatedDeviceUDID) = @_;
+ my $device = iosSimulatorDeviceByUDID($simulatedDeviceUDID);
+ return $device && $device->{state} eq SIMULATOR_DEVICE_STATE_BOOTED;
+}
- my ($includeOptionsForDebugging) = @_;
+sub runIOSWebKitAppInSimulator($;$)
+{
+ my ($appBundle, $simulatorOptions) = @_;
+ my $productDir = productDir();
+ my $appDisplayName = appDisplayNameFromBundle($appBundle);
+ my $appIdentifier = appIdentifierFromBundle($appBundle);
+ my $simulatedDevice = findOrCreateSimulatorForIOSDevice(SIMULATOR_DEVICE_SUFFIX_FOR_WEBKIT_DEVELOPMENT);
+ my $simulatedDeviceUDID = $simulatedDevice->{UDID};
+
+ my $willUseSystemInstalledApp = isIOSSimulatorSystemInstalledApp($appBundle);
+ if ($willUseSystemInstalledApp) {
+ if (hasUserInstalledAppInSimulatorDevice($appIdentifier, $simulatedDeviceUDID)) {
+ # Restore the system-installed app in the simulator device corresponding to $appBundle as it
+ # was previously overwritten with a custom built version of the app.
+ # FIXME: Only restore the system-installed version of the app instead of erasing all contents and settings.
+ print "Quitting iOS Simulator...\n";
+ quitIOSSimulator($simulatedDeviceUDID);
+ print "Erasing contents and settings for simulator device \"$simulatedDevice->{name}\".\n";
+ exitStatus(system("xcrun", "--sdk", "iphonesimulator", "simctl", "erase", $simulatedDeviceUDID)) == 0 or die;
+ }
+ # FIXME: We assume that if $simulatedDeviceUDID is not booted then iOS Simulator is not open. However
+ # $simulatedDeviceUDID may have been booted using the simctl command line tool. If $simulatedDeviceUDID
+ # was booted using simctl then we should shutdown the device and launch iOS Simulator to boot it again.
+ if (!isSimulatorDeviceBooted($simulatedDeviceUDID)) {
+ print "Launching iOS Simulator...\n";
+ relaunchIOSSimulator($simulatedDevice);
+ }
+ } else {
+ # FIXME: We should killall(1) any running instances of $appBundle before installing it to ensure
+ # that simctl launch opens the latest installed version of the app. For now we quit and
+ # launch the iOS Simulator again to ensure there are no running instances of $appBundle.
+ print "Quitting and launching iOS Simulator...\n";
+ relaunchIOSSimulator($simulatedDevice);
- print STDERR <<EOF;
-Usage: @{[basename($0)]} [options] [args ...]
- --help Show this help message
- --no-saved-state Launch the application without state restoration (OS X 10.7 and later)
- --guard-malloc Enable Guard Malloc (OS X only)
- --use-web-process-xpc-service Launch the Web Process as an XPC Service (OS X only)
-EOF
+ print "Installing $appBundle.\n";
+ # Install custom built app, overwriting an app with the same app identifier if one exists.
+ exitStatus(system("xcrun", "--sdk", "iphonesimulator", "simctl", "install", $simulatedDeviceUDID, $appBundle)) == 0 or die;
- if ($includeOptionsForDebugging) {
- print STDERR <<EOF;
- --target-web-process Debug the web process
- --use-gdb Use GDB (this is the default when using Xcode 4.4 or earlier)
- --use-lldb Use LLDB (this is the default when using Xcode 4.5 or later)
-EOF
}
- exit(1);
+ $simulatorOptions = {} unless $simulatorOptions;
+
+ my %simulatorENV;
+ %simulatorENV = %{$simulatorOptions->{applicationEnvironment}} if $simulatorOptions->{applicationEnvironment};
+ {
+ local %ENV; # Shadow global-scope %ENV so that changes to it will not be seen outside of this scope.
+ setupIOSWebKitEnvironment($productDir);
+ %simulatorENV = %ENV;
+ }
+ my $applicationArguments = \@ARGV;
+ $applicationArguments = $simulatorOptions->{applicationArguments} if $simulatorOptions && $simulatorOptions->{applicationArguments};
+
+ # Prefix the environment variables with SIMCTL_CHILD_ per `xcrun simctl help launch`.
+ foreach my $key (keys %simulatorENV) {
+ $ENV{"SIMCTL_CHILD_$key"} = $simulatorENV{$key};
+ }
+
+ print "Starting $appDisplayName with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
+ return exitStatus(system("xcrun", "--sdk", "iphonesimulator", "simctl", "launch", $simulatedDeviceUDID, $appIdentifier, @$applicationArguments));
}
-sub argumentsForRunAndDebugMacWebKitApp()
+sub runIOSWebKitApp($)
{
- my @args = ();
- push @args, ("-ApplePersistenceIgnoreState", "YES") if !isSnowLeopard() && checkForArgumentAndRemoveFromArrayRef("--no-saved-state", \@args);
- push @args, ("-WebKit2UseXPCServiceForWebProcess", "YES") if shouldUseXPCServiceForWebProcess();
- unshift @args, @ARGV;
-
- return @args;
+ my ($appBundle) = @_;
+ if (willUseIOSDeviceSDK()) {
+ die "Only running Safari in iOS Simulator is supported now.";
+ }
+ if (willUseIOSSimulatorSDK()) {
+ return runIOSWebKitAppInSimulator($appBundle);
+ }
+ die "Not using an iOS SDK."
}
sub runMacWebKitApp($;$)
@@ -2433,10 +2534,9 @@ sub runMacWebKitApp($;$)
my ($appPath, $useOpenCommand) = @_;
my $productDir = productDir();
print "Starting @{[basename($appPath)]} 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";
- setUpGuardMallocIfNeeded();
+ local %ENV = %ENV;
+ setupMacWebKitEnvironment($productDir);
if (defined($useOpenCommand) && $useOpenCommand == USE_OPEN_COMMAND) {
return system("open", "-W", "-a", $appPath, "--args", argumentsForRunAndDebugMacWebKitApp());
@@ -2468,29 +2568,11 @@ sub execMacWebKitAppForDebugging($)
die "Can't find the $debugger executable.\n" unless -x $debuggerPath;
my $productDir = productDir();
- $ENV{DYLD_FRAMEWORK_PATH} = $productDir;
- $ENV{WEBKIT_UNSET_DYLD_FRAMEWORK_PATH} = "YES";
-
- setUpGuardMallocIfNeeded();
+ setupMacWebKitEnvironment($productDir);
my @architectureFlags = ($architectureSwitch, architecture());
- if (!shouldTargetWebProcess()) {
- print "Starting @{[basename($appPath)]} under $debugger with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
- exec { $debuggerPath } $debuggerPath, @architectureFlags, $argumentsSeparator, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;
- } else {
- if (shouldUseXPCServiceForWebProcess()) {
- die "Targetting the Web Process is not compatible with using an XPC Service for the Web Process at this time.";
- }
-
- my $webProcessShimPath = File::Spec->catfile($productDir, "SecItemShim.dylib");
- my $webProcessPath = File::Spec->catdir($productDir, "WebProcess.app");
- my $webKit2ExecutablePath = File::Spec->catfile($productDir, "WebKit2.framework", "WebKit2");
-
- appendToEnvironmentVariableList("DYLD_INSERT_LIBRARIES", $webProcessShimPath);
-
- print "Starting WebProcess under $debugger with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
- exec { $debuggerPath } $debuggerPath, @architectureFlags, $argumentsSeparator, $webProcessPath, $webKit2ExecutablePath, "-type", "webprocess", "-client-executable", $appPath or die;
- }
+ print "Starting @{[basename($appPath)]} under $debugger with DYLD_FRAMEWORK_PATH set to point to built WebKit in $productDir.\n";
+ exec { $debuggerPath } $debuggerPath, @architectureFlags, $argumentsSeparator, $appPath, argumentsForRunAndDebugMacWebKitApp() or die;
}
sub debugSafari
@@ -2505,6 +2587,9 @@ sub debugSafari
sub runSafari
{
+ if (isIOSWebKit()) {
+ return runIOSWebKitApp(mobileSafariBundle());
+ }
if (isAppleMacWebKit()) {
return runMacWebKitApp(safariPath());
@@ -2512,8 +2597,7 @@ sub runSafari
if (isAppleWinWebKit()) {
my $result;
- my $productDir = productDir();
- my $webKitLauncherPath = File::Spec->catfile(productDir(), "WinLauncher.exe");
+ my $webKitLauncherPath = File::Spec->catfile(executableProductDir(), "MiniBrowser.exe");
return system { $webKitLauncherPath } $webKitLauncherPath, @ARGV;
}
@@ -2524,6 +2608,10 @@ sub runMiniBrowser
{
if (isAppleMacWebKit()) {
return runMacWebKitApp(File::Spec->catfile(productDir(), "MiniBrowser.app", "Contents", "MacOS", "MiniBrowser"));
+ } elsif (isAppleWinWebKit()) {
+ my $result;
+ my $webKitLauncherPath = File::Spec->catfile(executableProductDir(), "MiniBrowser.exe");
+ return system { $webKitLauncherPath } $webKitLauncherPath, @ARGV;
}
return 1;
@@ -2542,13 +2630,6 @@ sub runWebKitTestRunner
{
if (isAppleMacWebKit()) {
return runMacWebKitApp(File::Spec->catfile(productDir(), "WebKitTestRunner"));
- } elsif (isGtk()) {
- my $productDir = productDir();
- my $injectedBundlePath = "$productDir/Libraries/.libs/libTestRunnerInjectedBundle";
- print "Starting WebKitTestRunner with TEST_RUNNER_INJECTED_BUNDLE_FILENAME set to point to $injectedBundlePath.\n";
- $ENV{TEST_RUNNER_INJECTED_BUNDLE_FILENAME} = $injectedBundlePath;
- my @args = ("$productDir/Programs/WebKitTestRunner", @ARGV);
- return system {$args[0] } @args;
}
return 1;
@@ -2563,15 +2644,6 @@ sub debugWebKitTestRunner
return 1;
}
-sub runTestWebKitAPI
-{
- if (isAppleMacWebKit()) {
- return runMacWebKitApp(File::Spec->catfile(productDir(), "TestWebKitAPI"));
- }
-
- return 1;
-}
-
sub readRegistryString
{
my ($valueName) = @_;
@@ -2591,4 +2663,56 @@ sub writeRegistryString
return !$error && readRegistryString($valueName) eq $string;
}
+sub formatBuildTime($)
+{
+ my ($buildTime) = @_;
+
+ my $buildHours = int($buildTime / 3600);
+ my $buildMins = int(($buildTime - $buildHours * 3600) / 60);
+ my $buildSecs = $buildTime - $buildHours * 3600 - $buildMins * 60;
+
+ if ($buildHours) {
+ return sprintf("%dh:%02dm:%02ds", $buildHours, $buildMins, $buildSecs);
+ }
+ return sprintf("%02dm:%02ds", $buildMins, $buildSecs);
+}
+
+sub runSvnUpdateAndResolveChangeLogs(@)
+{
+ my @svnOptions = @_;
+ my $openCommand = "svn update " . join(" ", @svnOptions);
+ open my $update, "$openCommand |" or die "cannot execute command $openCommand";
+ my @conflictedChangeLogs;
+ while (my $line = <$update>) {
+ print $line;
+ $line =~ m/^C\s+(.+?)[\r\n]*$/;
+ if ($1) {
+ my $filename = normalizePath($1);
+ push @conflictedChangeLogs, $filename if basename($filename) eq "ChangeLog";
+ }
+ }
+ close $update or die;
+
+ if (@conflictedChangeLogs) {
+ print "Attempting to merge conflicted ChangeLogs.\n";
+ my $resolveChangeLogsPath = File::Spec->catfile(sourceDir(), "Tools", "Scripts", "resolve-ChangeLogs");
+ (system($resolveChangeLogsPath, "--no-warnings", @conflictedChangeLogs) == 0)
+ or die "Could not open resolve-ChangeLogs script: $!.\n";
+ }
+}
+
+sub runGitUpdate()
+{
+ # Doing a git fetch first allows setups with svn-remote.svn.fetch = trunk:refs/remotes/origin/master
+ # to perform the rebase much much faster.
+ system("git", "fetch");
+ if (isGitSVNDirectory(".")) {
+ system("git", "svn", "rebase") == 0 or die;
+ } else {
+ # This will die if branch.$BRANCHNAME.merge isn't set, which is
+ # almost certainly what we want.
+ system("git", "pull") == 0 or die;
+ }
+}
+
1;
diff --git a/Tools/Scripts/webkitperl/FeatureList.pm b/Tools/Scripts/webkitperl/FeatureList.pm
index 0e39102ed..81264636a 100644
--- a/Tools/Scripts/webkitperl/FeatureList.pm
+++ b/Tools/Scripts/webkitperl/FeatureList.pm
@@ -42,51 +42,49 @@ BEGIN {
}
my (
- $threeDRenderingSupport,
+ $threeDTransformsSupport,
$accelerated2DCanvasSupport,
+ $allInOneBuild,
+ $arrowfunctionSyntax,
+ $attachmentElementSupport,
$batteryStatusSupport,
- $blobSupport,
$canvasPathSupport,
$canvasProxySupport,
$channelMessagingSupport,
+ $classSyntax,
+ $templateLiteralSyntax,
$cspNextSupport,
- $css3ConditionalRulesSupport,
$css3TextSupport,
$css3TextLineBreakSupport,
$css4ImagesSupport,
$cssBoxDecorationBreakSupport,
$cssDeviceAdaptation,
- $cssExclusionsSupport,
- $cssFiltersSupport,
+ $cssGridLayoutSupport,
$cssImageOrientationSupport,
$cssImageResolutionSupport,
$cssImageSetSupport,
$cssRegionsSupport,
- $cssShadersSupport,
$cssShapesSupport,
- $cssStickyPositionSupport,
$cssCompositingSupport,
- $cssAnimationsTransformsUnprefixedSupport,
- $cssVariablesSupport,
+ $customElementsSupport,
$customSchemeHandlerSupport,
$dataTransferItemsSupport,
$datalistElementSupport,
$detailsElementSupport,
$deviceOrientationSupport,
- $dialogElementSupport,
$directoryUploadSupport,
$dom4EventsConstructor,
$downloadAttributeSupport,
- $fileSystemSupport,
- $filtersSupport,
+ $fetchAPISupport,
$fontLoadEventsSupport,
$ftpDirSupport,
$fullscreenAPISupport,
$gamepadSupport,
+ $generatorsSupport,
$geolocationSupport,
+ $hardwareConcurrencySupport,
$highDPICanvasSupport,
$icondatabaseSupport,
- $iframeSeamlessSupport,
$indexedDatabaseSupport,
$inputSpeechSupport,
$inputTypeColorSupport,
@@ -96,8 +94,8 @@ my (
$inputTypeMonthSupport,
$inputTypeTimeSupport,
$inputTypeWeekSupport,
- $inspectorSupport,
- $javascriptDebuggerSupport,
+ $intlSupport,
+ $jitSupport,
$legacyNotificationsSupport,
$legacyVendorPrefixSupport,
$legacyWebAudioSupport,
@@ -110,36 +108,34 @@ my (
$mediaStreamSupport,
$meterElementSupport,
$mhtmlSupport,
- $microdataSupport,
+ $modulesSupport,
$mouseCursorScaleSupport,
$netscapePluginAPISupport,
- $networkInfoSupport,
$nosniffSupport,
$notificationsSupport,
$orientationEventsSupport,
$pageVisibilityAPISupport,
$performanceTimelineSupport,
- $progressElementSupport,
+ $promiseSupport,
$proximityEventsSupport,
$quotaSupport,
$resolutionMediaQuerySupport,
$registerProtocolHandlerSupport,
$requestAnimationFrameSupport,
$resourceTimingSupport,
+ $samplingProfilerSupport,
$scriptedSpeechSupport,
$seccompFiltersSupport,
$shadowDOMSupport,
- $sharedWorkersSupport,
- $sqlDatabaseSupport,
+ $streamsAPISupport,
$styleScopedSupport,
- $suidLinuxSandbox,
+ $subtleCrypto,
$svgDOMObjCBindingsSupport,
$svgFontsSupport,
- $svgSupport,
$systemMallocSupport,
$templateElementSupport,
$textAutosizingSupport,
- $tiledBackingStoreSupport,
+ $threadedCompositorSupport,
$threadedHTMLParserSupport,
$touchEventsSupport,
$touchSliderSupport,
@@ -149,26 +145,38 @@ my (
$videoSupport,
$videoTrackSupport,
$webglSupport,
+ $webAssemblySupport,
+ $webAnimationsSupport,
$webAudioSupport,
+ $webReplaySupport,
$webSocketsSupport,
$webTimingSupport,
- $workersSupport,
- $xhrTimeoutSupport,
$xsltSupport,
+ $ftlJITSupport,
);
+prohibitUnknownPort();
+
+sub isQtGstreamer { return isQt() && !isAnyWindows() && !isDarwin() }
+
my @features = (
{ option => "3d-rendering", desc => "Toggle 3D Rendering support",
- define => "ENABLE_3D_RENDERING", default => (isAppleMacWebKit() || isGtk() || isEfl()), value => \$threeDRenderingSupport },
+ define => "ENABLE_3D_TRANSFORMS", default => (isAppleMacWebKit() || isIOSWebKit() || isGtk() || isEfl()), value => \$threeDTransformsSupport },
{ option => "accelerated-2d-canvas", desc => "Toggle Accelerated 2D Canvas support",
- define => "ENABLE_ACCELERATED_2D_CANVAS", default => 0, value => \$accelerated2DCanvasSupport },
+ define => "ENABLE_ACCELERATED_2D_CANVAS", default => isGtk(), value => \$accelerated2DCanvasSupport },
- { option => "battery-status", desc => "Toggle Battery Status support",
- define => "ENABLE_BATTERY_STATUS", default => (isEfl() || isBlackBerry()), value => \$batteryStatusSupport },
+ { option => "allinone-build", desc => "Toggle all-in-one build",
+ define => "ENABLE_ALLINONE_BUILD", default => isWindows() || isQt(), value => \$allInOneBuild },
+
+ { option => "arrowfunction-syntax", desc => "Toggle ES6 arrow function syntax support",
+ define => "ENABLE_ES6_ARROWFUNCTION_SYNTAX", default => 1, value => \$arrowfunctionSyntax },
+
+ { option => "attachment-element", desc => "Toggle Attachment Element support",
+ define => "ENABLE_ATTACHMENT_ELEMENT", default => 0, value => \$attachmentElementSupport },
- { option => "blob", desc => "Toggle Blob support",
- define => "ENABLE_BLOB", default => (isAppleMacWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$blobSupport },
+ { option => "battery-status", desc => "Toggle Battery Status support",
+ define => "ENABLE_BATTERY_STATUS", default => isEfl(), value => \$batteryStatusSupport },
{ option => "canvas-path", desc => "Toggle Canvas Path support",
define => "ENABLE_CANVAS_PATH", default => 1, value => \$canvasPathSupport },
@@ -179,23 +187,29 @@ my @features = (
{ option => "channel-messaging", desc => "Toggle Channel Messaging support",
define => "ENABLE_CHANNEL_MESSAGING", default => 1, value => \$channelMessagingSupport },
+ { option => "class-syntax", desc => "Toggle ES6 class syntax support",
+ define => "ENABLE_ES6_CLASS_SYNTAX", default => 1, value => \$classSyntax },
+
+ { option => "generators", desc => "Toggle ES6 generators support",
+ define => "ENABLE_ES6_GENERATORS", default => 1, value => \$generatorsSupport },
+
+ { option => "modules", desc => "Toggle ES6 modules support",
+ define => "ENABLE_ES6_MODULES", default => 0, value => \$modulesSupport },
+
+ { option => "template-literal-syntax", desc => "Toggle ES6 template literal syntax support",
+ define => "ENABLE_ES6_TEMPLATE_LITERAL_SYNTAX", default => 1, value => \$templateLiteralSyntax },
+
{ option => "csp-next", desc => "Toggle Content Security Policy 1.1 support",
define => "ENABLE_CSP_NEXT", default => isGtk(), value => \$cspNextSupport },
{ option => "css-device-adaptation", desc => "Toggle CSS Device Adaptation support",
define => "ENABLE_CSS_DEVICE_ADAPTATION", default => isEfl(), value => \$cssDeviceAdaptation },
- { option => "css-exclusions", desc => "Toggle CSS Exclusions support",
- define => "ENABLE_CSS_EXCLUSIONS", default => 1, value => \$cssExclusionsSupport },
-
{ option => "css-shapes", desc => "Toggle CSS Shapes support",
define => "ENABLE_CSS_SHAPES", default => 1, value => \$cssShapesSupport },
- { option => "css-filters", desc => "Toggle CSS Filters support",
- define => "ENABLE_CSS_FILTERS", default => isAppleWebKit() || isBlackBerry(), value => \$cssFiltersSupport },
-
- { option => "css3-conditional-rules", desc => "Toggle CSS3 Conditional Rules support (i.e. \@supports)",
- define => "ENABLE_CSS3_CONDITIONAL_RULES", default => 0, value => \$css3ConditionalRulesSupport },
+ { option => "css-grid-layout", desc => "Toggle CSS Grid Layout support",
+ define => "ENABLE_CSS_GRID_LAYOUT", default => 1, value => \$cssGridLayoutSupport },
{ option => "css3-text", desc => "Toggle CSS3 Text support",
define => "ENABLE_CSS3_TEXT", default => (isEfl() || isGtk()), value => \$css3TextSupport },
@@ -207,37 +221,28 @@ my @features = (
define => "ENABLE_CSS_BOX_DECORATION_BREAK", default => 1, value => \$cssBoxDecorationBreakSupport },
{ option => "css-image-orientation", desc => "Toggle CSS image-orientation support",
- define => "ENABLE_CSS_IMAGE_ORIENTATION", default => isGtk(), value => \$cssImageOrientationSupport },
+ define => "ENABLE_CSS_IMAGE_ORIENTATION", default => (isEfl() || isGtk()), value => \$cssImageOrientationSupport },
{ option => "css-image-resolution", desc => "Toggle CSS image-resolution support",
- define => "ENABLE_CSS_IMAGE_RESOLUTION", default => (isBlackBerry() || isGtk()), value => \$cssImageResolutionSupport },
+ define => "ENABLE_CSS_IMAGE_RESOLUTION", default => isGtk(), value => \$cssImageResolutionSupport },
{ option => "css-image-set", desc => "Toggle CSS image-set support",
- define => "ENABLE_CSS_IMAGE_SET", default => (isEfl() || isGtk()), value => \$cssImageSetSupport },
+ define => "ENABLE_CSS_IMAGE_SET", default => (isEfl() || isGtk() || isQt()), value => \$cssImageSetSupport },
{ option => "css-regions", desc => "Toggle CSS Regions support",
define => "ENABLE_CSS_REGIONS", default => 1, value => \$cssRegionsSupport },
- { option => "css-shaders", desc => "Toggle CSS Shaders support",
- define => "ENABLE_CSS_SHADERS", default => isAppleMacWebKit(), value => \$cssShadersSupport },
-
- { option => "css-sticky-position", desc => "Toggle CSS sticky position support",
- define => "ENABLE_CSS_STICKY_POSITION", default => (isGtk() || isEfl()), value => \$cssStickyPositionSupport },
-
{ option => "css-compositing", desc => "Toggle CSS Compositing support",
define => "ENABLE_CSS_COMPOSITING", default => isAppleWebKit(), value => \$cssCompositingSupport },
- { option => "css-transforms-animations-unprefixed", desc => "Toggle support for unprefixed CSS animations and transforms",
- define => "ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED", default => 1, value => \$cssAnimationsTransformsUnprefixedSupport },
-
- { option => "css-variables", desc => "Toggle CSS Variable support",
- define => "ENABLE_CSS_VARIABLES", default => (isBlackBerry() || isEfl() || isGtk()), value => \$cssVariablesSupport },
+ { option => "custom-elements", desc => "Toggle custom elements support",
+ define => "ENABLE_CUSTOM_ELEMENTS", default => (isAppleMacWebKit() || isIOSWebKit()), value => \$customElementsSupport },
{ option => "custom-scheme-handler", desc => "Toggle Custom Scheme Handler support",
- define => "ENABLE_CUSTOM_SCHEME_HANDLER", default => (isBlackBerry() || isEfl()), value => \$customSchemeHandlerSupport },
+ define => "ENABLE_CUSTOM_SCHEME_HANDLER", default => isEfl(), value => \$customSchemeHandlerSupport },
{ option => "datalist-element", desc => "Toggle Datalist Element support",
- define => "ENABLE_DATALIST_ELEMENT", default => isEfl(), value => \$datalistElementSupport },
+ define => "ENABLE_DATALIST_ELEMENT", default => (isEfl() || isQt()), value => \$datalistElementSupport },
{ option => "data-transfer-items", desc => "Toggle Data Transfer Items support",
define => "ENABLE_DATA_TRANSFER_ITEMS", default => 0, value => \$dataTransferItemsSupport },
@@ -246,58 +251,46 @@ my @features = (
define => "ENABLE_DETAILS_ELEMENT", default => 1, value => \$detailsElementSupport },
{ option => "device-orientation", desc => "Toggle Device Orientation support",
- define => "ENABLE_DEVICE_ORIENTATION", default => isBlackBerry(), value => \$deviceOrientationSupport },
-
- { option => "dialog-element", desc => "Toggle Dialog Element support",
- define => "ENABLE_DIALOG_ELEMENT", default => 0, value => \$dialogElementSupport },
-
- { option => "directory-upload", desc => "Toggle Directory Upload support",
- define => "ENABLE_DIRECTORY_UPLOAD", default => 0, value => \$directoryUploadSupport },
+ define => "ENABLE_DEVICE_ORIENTATION", default => (isIOSWebKit() || isQt()), value => \$deviceOrientationSupport },
{ option => "dom4-events-constructor", desc => "Expose DOM4 Events constructors",
- define => "ENABLE_DOM4_EVENTS_CONSTRUCTOR", default => (isAppleWebKit() || isGtk() || isEfl()), value => \$dom4EventsConstructor },
+ define => "ENABLE_DOM4_EVENTS_CONSTRUCTOR", default => (isAppleWebKit() || isGtk() || isEfl() || isQt()), value => \$dom4EventsConstructor },
{ option => "download-attribute", desc => "Toggle Download Attribute support",
- define => "ENABLE_DOWNLOAD_ATTRIBUTE", default => (isBlackBerry() || isEfl()), value => \$downloadAttributeSupport },
+ define => "ENABLE_DOWNLOAD_ATTRIBUTE", default => (isEfl() || isQt()), value => \$downloadAttributeSupport },
- { option => "file-system", desc => "Toggle File System support",
- define => "ENABLE_FILE_SYSTEM", default => isBlackBerry(), value => \$fileSystemSupport },
-
- { option => "filters", desc => "Toggle Filters support",
- define => "ENABLE_FILTERS", default => (isAppleWebKit() || isGtk() || isEfl() || isBlackBerry()), value => \$filtersSupport },
+ { option => "fetch-api", desc => "Toggle Fetch API support",
+ define => "ENABLE_FETCH_API", default => 1, value => \$fetchAPISupport },
{ option => "font-load-events", desc => "Toggle Font Load Events support",
define => "ENABLE_FONT_LOAD_EVENTS", default => 0, value => \$fontLoadEventsSupport },
{ option => "ftpdir", desc => "Toggle FTP Directory support",
- define => "ENABLE_FTPDIR", default => !isWinCE(), value => \$ftpDirSupport },
+ define => "ENABLE_FTPDIR", default => !isQt(), value => \$ftpDirSupport },
{ option => "fullscreen-api", desc => "Toggle Fullscreen API support",
- define => "ENABLE_FULLSCREEN_API", default => (isAppleMacWebKit() || isEfl() || isGtk() || isBlackBerry()), value => \$fullscreenAPISupport },
+ define => "ENABLE_FULLSCREEN_API", default => (isAppleMacWebKit() || isEfl() || isGtk()), value => \$fullscreenAPISupport },
{ option => "gamepad", desc => "Toggle Gamepad support",
- define => "ENABLE_GAMEPAD", default => (isEfl() || isGtk()), value => \$gamepadSupport },
+ define => "ENABLE_GAMEPAD", default => 0, value => \$gamepadSupport },
{ option => "geolocation", desc => "Toggle Geolocation support",
- define => "ENABLE_GEOLOCATION", default => (isAppleWebKit() || isGtk() || isBlackBerry()), value => \$geolocationSupport },
+ define => "ENABLE_GEOLOCATION", default => (isAppleWebKit() || isIOSWebKit() || isGtk() || isEfl() || isQt()), value => \$geolocationSupport },
{ option => "high-dpi-canvas", desc => "Toggle High DPI Canvas support",
define => "ENABLE_HIGH_DPI_CANVAS", default => (isAppleWebKit()), value => \$highDPICanvasSupport },
{ option => "icon-database", desc => "Toggle Icondatabase support",
- define => "ENABLE_ICONDATABASE", default => 1, value => \$icondatabaseSupport },
-
- { option => "iframe-seamless", desc => "Toggle iframe seamless attribute support",
- define => "ENABLE_IFRAME_SEAMLESS", default => 1, value => \$iframeSeamlessSupport },
+ define => "ENABLE_ICONDATABASE", default => !isIOSWebKit(), value => \$icondatabaseSupport },
{ option => "indexed-database", desc => "Toggle Indexed Database support",
- define => "ENABLE_INDEXED_DATABASE", default => (isGtk() || isEfl()), value => \$indexedDatabaseSupport },
+ define => "ENABLE_INDEXED_DATABASE", default => (isEfl() || isGtk() || isQt()), value => \$indexedDatabaseSupport },
{ option => "input-speech", desc => "Toggle Input Speech support",
define => "ENABLE_INPUT_SPEECH", default => 0, value => \$inputSpeechSupport },
{ option => "input-type-color", desc => "Toggle Input Type Color support",
- define => "ENABLE_INPUT_TYPE_COLOR", default => (isBlackBerry() || isEfl()), value => \$inputTypeColorSupport },
+ define => "ENABLE_INPUT_TYPE_COLOR", default => (isEfl() || isGtk() || isQt()), value => \$inputTypeColorSupport },
{ option => "input-type-date", desc => "Toggle Input Type Date support",
define => "ENABLE_INPUT_TYPE_DATE", default => 0, value => \$inputTypeDateSupport },
@@ -317,77 +310,71 @@ my @features = (
{ option => "input-type-week", desc => "Toggle Input Type Week support",
define => "ENABLE_INPUT_TYPE_WEEK", default => 0, value => \$inputTypeWeekSupport },
- { option => "inspector", desc => "Toggle Inspector support",
- define => "ENABLE_INSPECTOR", default => !isWinCE(), value => \$inspectorSupport },
-
- { option => "javascript-debugger", desc => "Toggle JavaScript Debugger support",
- define => "ENABLE_JAVASCRIPT_DEBUGGER", default => 1, value => \$javascriptDebuggerSupport },
+ { option => "intl", desc => "Toggle Intl support",
+ define => "ENABLE_INTL", default => 1, value => \$intlSupport },
{ option => "legacy-notifications", desc => "Toggle Legacy Notifications support",
- define => "ENABLE_LEGACY_NOTIFICATIONS", default => isBlackBerry(), value => \$legacyNotificationsSupport },
+ define => "ENABLE_LEGACY_NOTIFICATIONS", default => 0, value => \$legacyNotificationsSupport },
{ option => "legacy-vendor-prefixes", desc => "Toggle Legacy Vendor Prefix support",
define => "ENABLE_LEGACY_VENDOR_PREFIXES", default => 1, value => \$legacyVendorPrefixSupport },
{ option => "legacy-web-audio", desc => "Toggle Legacy Web Audio support",
- define => "ENABLE_LEGACY_WEB_AUDIO", default => 1, value => \$legacyWebAudioSupport },
+ define => "ENABLE_LEGACY_WEB_AUDIO", default => (!isQt() || isQtGstreamer()) , value => \$legacyWebAudioSupport },
{ option => "link-prefetch", desc => "Toggle Link Prefetch support",
- define => "ENABLE_LINK_PREFETCH", default => (isGtk() || isEfl()), value => \$linkPrefetchSupport },
+ define => "ENABLE_LINK_PREFETCH", default => (isGtk() || isEfl() || isQt()), value => \$linkPrefetchSupport },
+
+ { option => "jit", desc => "Enable just-in-time JavaScript support",
+ define => "ENABLE_JIT", default => 1, value => \$jitSupport },
{ option => "mathml", desc => "Toggle MathML support",
- define => "ENABLE_MATHML", default => !isBlackBerry(), value => \$mathmlSupport },
+ define => "ENABLE_MATHML", default => 1, value => \$mathmlSupport },
{ option => "media-capture", desc => "Toggle Media Capture support",
define => "ENABLE_MEDIA_CAPTURE", default => isEfl(), value => \$mediaCaptureSupport },
{ option => "media-source", desc => "Toggle Media Source support",
- define => "ENABLE_MEDIA_SOURCE", default => 0, value => \$mediaSourceSupport },
+ define => "ENABLE_MEDIA_SOURCE", default => (isGtk() || isEfl() || isQtGstreamer()), value => \$mediaSourceSupport },
{ option => "media-statistics", desc => "Toggle Media Statistics support",
define => "ENABLE_MEDIA_STATISTICS", default => 0, value => \$mediaStatisticsSupport },
{ option => "media-stream", desc => "Toggle Media Stream support",
- define => "ENABLE_MEDIA_STREAM", default => isBlackBerry(), value => \$mediaStreamSupport },
+ define => "ENABLE_MEDIA_STREAM", default => 0, value => \$mediaStreamSupport },
{ option => "meter-element", desc => "Toggle Meter Element support",
define => "ENABLE_METER_ELEMENT", default => !isAppleWinWebKit(), value => \$meterElementSupport },
{ option => "mhtml", desc => "Toggle MHTML support",
- define => "ENABLE_MHTML", default => (isGtk() || isEfl()), value => \$mhtmlSupport },
-
- { option => "microdata", desc => "Toggle Microdata support",
- define => "ENABLE_MICRODATA", default => (isEfl() || isBlackBerry() || isGtk()), value => \$microdataSupport },
+ define => "ENABLE_MHTML", default => (isGtk() || isEfl() || isQt()), value => \$mhtmlSupport },
{ option => "mouse-cursor-scale", desc => "Toggle Scaled mouse cursor support",
define => "ENABLE_MOUSE_CURSOR_SCALE", default => isEfl(), value => \$mouseCursorScaleSupport },
{ option => "navigator-content-utils", desc => "Toggle Navigator Content Utils support",
- define => "ENABLE_NAVIGATOR_CONTENT_UTILS", default => (isBlackBerry() || isEfl()), value => \$registerProtocolHandlerSupport },
+ define => "ENABLE_NAVIGATOR_CONTENT_UTILS", default => isEfl(), value => \$registerProtocolHandlerSupport },
- { option => "netscape-plugin-api", desc => "Toggle Netscape Plugin API support",
- define => "ENABLE_NETSCAPE_PLUGIN_API", default => 1, value => \$netscapePluginAPISupport },
+ { option => "navigator-hardware-concurrency", desc => "Toggle Navigator hardware concurrenct support",
+ define => "ENABLE_NAVIGATOR_HWCONCURRENCY", default => 1, value => \$hardwareConcurrencySupport },
- { option => "network-info", desc => "Toggle Network Info support",
- define => "ENABLE_NETWORK_INFO", default => (isEfl() || isBlackBerry()), value => \$networkInfoSupport },
+ { option => "netscape-plugin-api", desc => "Toggle Netscape Plugin API support",
+ define => "ENABLE_NETSCAPE_PLUGIN_API", default => (!isIOSWebKit() && !(isQt() && isDarwin())), value => \$netscapePluginAPISupport },
{ option => "nosniff", desc => "Toggle support for 'X-Content-Type-Options: nosniff'",
- define => "ENABLE_NOSNIFF", default => 0, value => \$nosniffSupport },
+ define => "ENABLE_NOSNIFF", default => isEfl(), value => \$nosniffSupport },
{ option => "notifications", desc => "Toggle Notifications support",
- define => "ENABLE_NOTIFICATIONS", default => isBlackBerry(), value => \$notificationsSupport },
+ define => "ENABLE_NOTIFICATIONS", default => (isGtk() || isQt()), value => \$notificationsSupport },
{ option => "orientation-events", desc => "Toggle Orientation Events support",
- define => "ENABLE_ORIENTATION_EVENTS", default => isBlackBerry(), value => \$orientationEventsSupport },
-
- { option => "page-visibility-api", desc => "Toggle Page Visibility API support",
- define => "ENABLE_PAGE_VISIBILITY_API", default => (isBlackBerry() || isEfl() || isGtk()), value => \$pageVisibilityAPISupport },
+ define => "ENABLE_ORIENTATION_EVENTS", default => isIOSWebKit(), value => \$orientationEventsSupport },
{ option => "performance-timeline", desc => "Toggle Performance Timeline support",
define => "ENABLE_PERFORMANCE_TIMELINE", default => isGtk(), value => \$performanceTimelineSupport },
- { option => "progress-element", desc => "Toggle Progress Element support",
- define => "ENABLE_PROGRESS_ELEMENT", default => 1, value => \$progressElementSupport },
+ { option => "promises", desc => "Toggle Promise support",
+ define => "ENABLE_PROMISES", default => 1, value => \$promiseSupport },
{ option => "proximity-events", desc => "Toggle Proximity Events support",
define => "ENABLE_PROXIMITY_EVENTS", default => 0, value => \$proximityEventsSupport },
@@ -402,7 +389,10 @@ my @features = (
define => "ENABLE_RESOURCE_TIMING", default => isGtk(), value => \$resourceTimingSupport },
{ option => "request-animation-frame", desc => "Toggle Request Animation Frame support",
- define => "ENABLE_REQUEST_ANIMATION_FRAME", default => (isAppleMacWebKit() || isGtk() || isEfl() || isBlackBerry()), value => \$requestAnimationFrameSupport },
+ define => "ENABLE_REQUEST_ANIMATION_FRAME", default => 1, value => \$requestAnimationFrameSupport },
+
+ { option => "sampling-profiler", desc => "Toggle JSC Sampling Profiler",
+ define => "ENABLE_SAMPLING_PROFILER", default => 1, value => \$samplingProfilerSupport },
{ option => "seccomp-filters", desc => "Toggle Seccomp Filter sandbox",
define => "ENABLE_SECCOMP_FILTERS", default => 0, value => \$seccompFiltersSupport },
@@ -411,46 +401,34 @@ my @features = (
define => "ENABLE_SCRIPTED_SPEECH", default => 0, value => \$scriptedSpeechSupport },
{ option => "shadow-dom", desc => "Toggle Shadow DOM support",
- define => "ENABLE_SHADOW_DOM", default => 0, value => \$shadowDOMSupport },
-
- { option => "shared-workers", desc => "Toggle Shared Workers support",
- define => "ENABLE_SHARED_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$sharedWorkersSupport },
-
- { option => "sql-database", desc => "Toggle SQL Database support",
- define => "ENABLE_SQL_DATABASE", default => 1, value => \$sqlDatabaseSupport },
-
- { option => "style-scoped", desc => "Toggle Style Scoped support",
- define => "ENABLE_STYLE_SCOPED", default => (isBlackBerry() || isGtk()), value => \$styleScopedSupport },
+ define => "ENABLE_SHADOW_DOM", default => (isAppleMacWebKit() || isIOSWebKit()), value => \$shadowDOMSupport },
- { option => "suid-linux-sandbox", desc => "Toggle suid sandbox for linux",
- define => "ENABLE_SUID_SANDBOX_LINUX", default => 0, value => \$suidLinuxSandbox },
+ { option => "streams-api", desc => "Toggle Streams API support",
+ define => "ENABLE_STREAMS_API", default => 1, value => \$streamsAPISupport },
- { option => "svg", desc => "Toggle SVG support",
- define => "ENABLE_SVG", default => 1, value => \$svgSupport },
+ { option => "subtle-crypto", desc => "Toggle WebCrypto Subtle-Crypto support",
+ define => "ENABLE_SUBTLE_CRYPTO", default => (isGtk() || isEfl() || isAppleMacWebKit() || isIOSWebKit()), value => \$subtleCrypto },
{ option => "svg-fonts", desc => "Toggle SVG Fonts support",
define => "ENABLE_SVG_FONTS", default => 1, value => \$svgFontsSupport },
- { option => "system-malloc", desc => "Toggle system allocator instead of TCmalloc",
- define => "USE_SYSTEM_MALLOC", default => (isBlackBerry() || isWinCE()), value => \$systemMallocSupport },
+ { option => "system-malloc", desc => "Toggle system allocator instead of bmalloc",
+ define => "USE_SYSTEM_MALLOC", default => 0, value => \$systemMallocSupport },
{ option => "template-element", desc => "Toggle HTMLTemplateElement support",
- define => "ENABLE_TEMPLATE_ELEMENT", default => (isEfl() || isGtk()), value => \$templateElementSupport },
+ define => "ENABLE_TEMPLATE_ELEMENT", default => 1, value => \$templateElementSupport },
- { option => "text-autosizing", desc => "Toggle Text Autosizing support",
- define => "ENABLE_TEXT_AUTOSIZING", default => isBlackBerry(), value => \$textAutosizingSupport },
-
- { option => "tiled-backing-store", desc => "Toggle Tiled Backing Store support",
- define => "WTF_USE_TILED_BACKING_STORE", default => isEfl(), value => \$tiledBackingStoreSupport },
+ { option => "threaded-compositor", desc => "Toggle threaded compositor support",
+ define => "ENABLE_THREADED_COMPOSITOR", default => 0, value => \$threadedCompositorSupport },
- { option => "threaded-html-parser", desc => "Toggle threaded HTML parser support",
- define => "ENABLE_THREADED_HTML_PARSER", default => 0, value => \$threadedHTMLParserSupport },
+ { option => "text-autosizing", desc => "Toggle Text Autosizing support",
+ define => "ENABLE_TEXT_AUTOSIZING", default => 0, value => \$textAutosizingSupport },
{ option => "touch-events", desc => "Toggle Touch Events support",
- define => "ENABLE_TOUCH_EVENTS", default => (isBlackBerry() || isEfl()), value => \$touchEventsSupport },
+ define => "ENABLE_TOUCH_EVENTS", default => (isIOSWebKit() || isEfl() || isGtk() || isQt()), value => \$touchEventsSupport },
{ option => "touch-slider", desc => "Toggle Touch Slider support",
- define => "ENABLE_TOUCH_SLIDER", default => isBlackBerry(), value => \$touchSliderSupport },
+ define => "ENABLE_TOUCH_SLIDER", default => isEfl(), value => \$touchSliderSupport },
{ option => "touch-icon-loading", desc => "Toggle Touch Icon Loading Support",
define => "ENABLE_TOUCH_ICON_LOADING", default => 0, value => \$touchIconLoadingSupport },
@@ -459,34 +437,40 @@ my @features = (
define => "ENABLE_USER_TIMING", default => isGtk(), value => \$userTimingSupport },
{ option => "vibration", desc => "Toggle Vibration support",
- define => "ENABLE_VIBRATION", default => (isEfl() || isBlackBerry()), value => \$vibrationSupport },
+ define => "ENABLE_VIBRATION", default => isEfl(), value => \$vibrationSupport },
{ option => "video", desc => "Toggle Video support",
- define => "ENABLE_VIDEO", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$videoSupport },
+ define => "ENABLE_VIDEO", default => (isAppleWebKit() || isGtk() || isEfl() || isQt()), value => \$videoSupport },
{ option => "video-track", desc => "Toggle Video Track support",
- define => "ENABLE_VIDEO_TRACK", default => (isAppleWebKit() || isGtk() || isEfl() || isBlackBerry()), value => \$videoTrackSupport },
+ define => "ENABLE_VIDEO_TRACK", default => (isAppleWebKit() || isGtk() || isEfl() || isQt()), value => \$videoTrackSupport },
{ option => "webgl", desc => "Toggle WebGL support",
- define => "ENABLE_WEBGL", default => (isAppleMacWebKit() || isGtk() || isEfl()), value => \$webglSupport },
+ define => "ENABLE_WEBGL", default => (isAppleMacWebKit() || isIOSWebKit() || isGtk() || isEfl()), value => \$webglSupport },
+
+ { option => "webassembly", desc => "Toggle WebAssembly support",
+ define => "ENABLE_WEBASSEMBLY", default => 0, value => \$webAssemblySupport },
+
+ { option => "web-animations", desc => "Toggle Web Animations support",
+ define => "ENABLE_WEB_ANIMATIONS", default => 0, value => \$webAnimationsSupport },
{ option => "web-audio", desc => "Toggle Web Audio support",
- define => "ENABLE_WEB_AUDIO", default => (isEfl() || isGtk()), value => \$webAudioSupport },
+ define => "ENABLE_WEB_AUDIO", default => (isEfl() || isGtk() || isQtGstreamer()), value => \$webAudioSupport },
+
+ { option => "web-replay", desc => "Toggle Web Replay support",
+ define => "ENABLE_WEB_REPLAY", default => isAppleMacWebKit(), value => \$webReplaySupport },
{ option => "web-sockets", desc => "Toggle Web Sockets support",
define => "ENABLE_WEB_SOCKETS", default => 1, value => \$webSocketsSupport },
{ option => "web-timing", desc => "Toggle Web Timing support",
- define => "ENABLE_WEB_TIMING", default => (isBlackBerry() || isGtk() || isEfl()), value => \$webTimingSupport },
-
- { option => "workers", desc => "Toggle Workers support",
- define => "ENABLE_WORKERS", default => (isAppleWebKit() || isGtk() || isBlackBerry() || isEfl()), value => \$workersSupport },
-
- { option => "xhr-timeout", desc => "Toggle XHR Timeout support",
- define => "ENABLE_XHR_TIMEOUT", default => (isEfl() || isGtk() || isAppleMacWebKit()), value => \$xhrTimeoutSupport },
+ define => "ENABLE_WEB_TIMING", default => (isGtk() || isEfl() || isQt()), value => \$webTimingSupport },
{ option => "xslt", desc => "Toggle XSLT support",
define => "ENABLE_XSLT", default => 1, value => \$xsltSupport },
+
+ { option => "ftl-jit", desc => "Toggle FTLJIT support",
+ define => "ENABLE_FTL_JIT", default => (isX86_64() && (isGtk() || isEfl()) || (isQt() && !isAnyWindows())) , value => \$ftlJITSupport },
);
sub getFeatureOptionList()
diff --git a/Tools/Scripts/webkitperl/LoadAsModule.pm b/Tools/Scripts/webkitperl/LoadAsModule.pm
deleted file mode 100644
index 5c78c0e56..000000000
--- a/Tools/Scripts/webkitperl/LoadAsModule.pm
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Apple Inc. All rights reserved.
-# Copyright (C) 2011 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:
-# 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. 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 INC. 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.
-#
-# Imports Perl scripts into a package for easy unit testing.
-
-package LoadAsModule;
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use lib File::Spec->catdir($FindBin::Bin, "..", "..");
-use webkitdirs;
-
-use base 'Exporter';
-use vars qw(@EXPORT @EXPORT_OK %EXPORT_TAGS $VERSION);
-
-@EXPORT = ();
-@EXPORT_OK = ();
-%EXPORT_TAGS = ();
-$VERSION = '1.0';
-
-sub readFile($);
-
-sub import
-{
- my ($self, $package, $script) = @_;
- my $scriptPath = File::Spec->catfile(sourceDir(), "Tools", "Scripts", $script);
- eval "
- package $package;
-
- use strict;
- use warnings;
-
- use base 'Exporter';
- use vars qw(\@EXPORT \@EXPORT_OK \%EXPORT_TAGS \$VERSION);
-
- \@EXPORT = ();
- \@EXPORT_OK = ();
- \%EXPORT_TAGS = ();
- \$VERSION = '1.0';
-
- sub {" . readFile($scriptPath) . "}
- ";
-}
-
-sub readFile($)
-{
- my $path = shift;
- local $/ = undef; # Read in the whole file at once.
- open FILE, "<", $path or die "Cannot open $path: $!";
- my $contents = <FILE>;
- close FILE;
- return $contents;
-};
-
-1;
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl
deleted file mode 100644
index 261592d8e..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatch.pl
+++ /dev/null
@@ -1,525 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) Research In Motion 2010. 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.
-
-# Unit tests of VCSUtils::fixChangeLogPatch().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-# The source ChangeLog for these tests is the following:
-#
-# 2009-12-22 Alice <alice@email.address>
-#
-# Reviewed by Ray.
-#
-# Changed some code on 2009-12-22.
-#
-# * File:
-# * File2:
-#
-# 2009-12-21 Alice <alice@email.address>
-#
-# Reviewed by Ray.
-#
-# Changed some code on 2009-12-21.
-#
-# * File:
-# * File2:
-
-my @testCaseHashRefs = (
-{ # New test
- diffName => "fixChangeLogPatch: [no change] In-place change.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,5 +1,5 @@
- 2010-12-22 Bob <bob@email.address>
-
-- Reviewed by Sue.
-+ Reviewed by Ray.
-
- Changed some code on 2010-12-22.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,5 +1,5 @@
- 2010-12-22 Bob <bob@email.address>
-
-- Reviewed by Sue.
-+ Reviewed by Ray.
-
- Changed some code on 2010-12-22.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: [no change] Remove first entry.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,11 +1,3 @@
--2010-12-22 Bob <bob@email.address>
--
-- Reviewed by Ray.
--
-- Changed some code on 2010-12-22.
--
-- * File:
--
- 2010-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,11 +1,3 @@
--2010-12-22 Bob <bob@email.address>
--
-- Reviewed by Ray.
--
-- Changed some code on 2010-12-22.
--
-- * File:
--
- 2010-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: [no change] Remove entry in the middle.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@@ -7,10 +7,6 @@
-
- * File:
-
--2010-12-22 Bob <bob@email.address>
--
-- Changed some code on 2010-12-22.
--
- 2010-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@@ -7,10 +7,6 @@
-
- * File:
-
--2010-12-22 Bob <bob@email.address>
--
-- Changed some code on 2010-12-22.
--
- 2010-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: [no change] Far apart changes (i.e. more than one chunk).",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -7,7 +7,7 @@
-
- * File:
-
--2010-12-22 Bob <bob@email.address>
-+2010-12-22 Bobby <bob@email.address>
-
- Changed some code on 2010-12-22.
-
-@@ -21,7 +21,7 @@
-
- * File2:
-
--2010-12-21 Bob <bob@email.address>
-+2010-12-21 Bobby <bob@email.address>
-
- Changed some code on 2010-12-21.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -7,7 +7,7 @@
-
- * File:
-
--2010-12-22 Bob <bob@email.address>
-+2010-12-22 Bobby <bob@email.address>
-
- Changed some code on 2010-12-22.
-
-@@ -21,7 +21,7 @@
-
- * File2:
-
--2010-12-21 Bob <bob@email.address>
-+2010-12-21 Bobby <bob@email.address>
-
- Changed some code on 2010-12-21.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: [no change] First line is new line.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2009-12-22 Bob <bob@email.address>
-+
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2009-12-22 Bob <bob@email.address>
-+
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: [no change] No date string.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -6,6 +6,7 @@
-
- * File:
- * File2:
-+ * File3:
-
- 2009-12-21 Alice <alice@email.address>
-
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -6,6 +6,7 @@
-
- * File:
- * File2:
-+ * File3:
-
- 2009-12-21 Alice <alice@email.address>
-
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: New entry inserted in middle.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -11,6 +11,14 @@
-
- Reviewed by Ray.
-
-+ Changed some more code on 2009-12-21.
-+
-+ * File:
-+
-+2009-12-21 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
- Changed some code on 2009-12-21.
-
- * File:
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2009-12-21 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-21.
-+
-+ * File:
-+
- 2009-12-21 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: New entry inserted earlier in the file, but after an entry with the same author and date.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -70,6 +70,14 @@
-
- 2009-12-22 Alice <alice@email.address>
-
-+ Reviewed by Sue.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
-+2009-12-22 Alice <alice@email.address>
-+
- Reviewed by Ray.
-
- Changed some code on 2009-12-22.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Sue.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: Leading context includes first line.",
- inputText => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,5 +1,13 @@
- 2009-12-22 Alice <alice@email.address>
-
-+ Reviewed by Sue.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
-+2009-12-22 Alice <alice@email.address>
-+
- Reviewed by Ray.
-
- Changed some code on 2009-12-22.
-END
- expectedReturn => {
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Sue.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: Leading context does not include first line.",
- inputText => <<'END',
-@@ -2,6 +2,14 @@
-
- Reviewed by Ray.
-
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
- Changed some code on 2009-12-22.
-
- * File:
-END
- expectedReturn => {
- patch => <<'END',
-@@ -1,3 +1,11 @@
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: Non-consecutive line additions.",
-
-# This can occur, for example, if the new ChangeLog entry includes
-# trailing white space in the first blank line but not the second.
-# A diff command can then match the second blank line of the new
-# ChangeLog entry with the first blank line of the old.
-# The svn diff command with the default --diff-cmd has done this.
- inputText => <<'END',
-@@ -1,5 +1,11 @@
- 2009-12-22 Alice <alice@email.address>
-+ <pretend-whitespace>
-+ Reviewed by Ray.
-
-+ Changed some more code on 2009-12-22.
-+
-+2009-12-22 Alice <alice@email.address>
-+
- Reviewed by Ray.
-
- Changed some code on 2009-12-22.
-END
- expectedReturn => {
- patch => <<'END',
-@@ -1,3 +1,9 @@
-+2009-12-22 Alice <alice@email.address>
-+ <pretend-whitespace>
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-22.
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
- }
-},
-{ # New test
- diffName => "fixChangeLogPatch: Additional edits after new entry.",
- inputText => <<'END',
-@@ -2,10 +2,17 @@
-
- Reviewed by Ray.
-
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
- Changed some code on 2009-12-22.
-
- * File:
-- * File2:
-
- 2009-12-21 Alice <alice@email.address>
-
-END
- expectedReturn => {
- patch => <<'END',
-@@ -1,11 +1,18 @@
-+2009-12-22 Alice <alice@email.address>
-+
-+ Reviewed by Ray.
-+
-+ Changed some more code on 2009-12-22.
-+
-+ * File:
-+
- 2009-12-22 Alice <alice@email.address>
-
- Reviewed by Ray.
-
- Changed some code on 2009-12-22.
-
- * File:
-- * File2:
-
- 2009-12-21 Alice <alice@email.address>
-
-END
- }
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "fixChangeLogPatch(): $testCase->{diffName}: comparing";
-
- my $got = VCSUtils::fixChangeLogPatch($testCase->{inputText});
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply($got, $expectedReturn, "$testNameStart return value.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl
deleted file mode 100644
index bbf7df3da..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/fixChangeLogPatchThenSetChangeLogDateAndReviewer.pl
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-# Copyright (C) 2010 Research In Motion Limited. 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. 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 INC. 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.
-
-# Unit tests for setChangeLogDateAndReviewer(fixChangeLogPatch()).
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-{
- testName => "New entry inserted earlier in the file, but after an entry with the same author and date, patch applied a day later.",
- reviewer => "Sue",
- epochTime => 1273414321,
- patch => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -70,6 +70,14 @@
-
- 2010-05-08 Alice <alice@email.address>
-
-+ Reviewed by NOBODY (OOPS!).
-+
-+ Changed some more code on 2010-05-08.
-+
-+ * File:
-+
-+2010-05-08 Alice <alice@email.address>
-+
- Reviewed by Ray.
-
- Changed some code on 2010-05-08.
-END
- expectedReturn => <<'END',
---- ChangeLog
-+++ ChangeLog
-@@ -1,3 +1,11 @@
-+2010-05-09 Alice <alice@email.address>
-+
-+ Reviewed by Sue.
-+
-+ Changed some more code on 2010-05-08.
-+
-+ * File:
-+
- 2010-05-08 Alice <alice@email.address>
-
- Reviewed by Ray.
-END
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 1 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "setChangeLogDateAndReviewer(fixChangeLogPatch()): $testCase->{testName}: comparing";
-
- my $patch = $testCase->{patch};
- my $reviewer = $testCase->{reviewer};
- my $epochTime = $testCase->{epochTime};
-
- my $fixedChangeLog = VCSUtils::fixChangeLogPatch($patch);
- my $got = VCSUtils::setChangeLogDateAndReviewer($fixedChangeLog->{patch}, $reviewer, $epochTime);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is($got, $expectedReturn, "$testNameStart return value.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl
deleted file mode 100644
index 483a0a8ed..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/generatePatchCommand.pl
+++ /dev/null
@@ -1,87 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-# Unit tests of VCSUtils::generatePatchCommand().
-
-use Test::Simple tests => 10;
-use VCSUtils;
-
-# New test
-$title = "generatePatchCommand: Undefined optional arguments.";
-
-my $argsHashRef;
-my ($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0", $title);
-ok($isForcing == 0, $title);
-
-# New test
-$title = "generatePatchCommand: Undefined options.";
-
-my $options;
-$argsHashRef = {options => $options};
-($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0", $title);
-ok($isForcing == 0, $title);
-
-# New test
-$title = "generatePatchCommand: --force and no \"ensure force\".";
-
-$argsHashRef = {options => ["--force"]};
-($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0 --force", $title);
-ok($isForcing == 1, $title);
-
-# New test
-$title = "generatePatchCommand: no --force and \"ensure force\".";
-
-$argsHashRef = {ensureForce => 1};
-($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0 --force", $title);
-ok($isForcing == 1, $title);
-
-# New test
-$title = "generatePatchCommand: \"should reverse\".";
-
-$argsHashRef = {shouldReverse => 1};
-($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0 --reverse", $title);
-
-# New test
-$title = "generatePatchCommand: --fuzz=3, --force.";
-
-$argsHashRef = {options => ["--fuzz=3", "--force"]};
-($patchCommand, $isForcing) = VCSUtils::generatePatchCommand($argsHashRef);
-
-ok($patchCommand eq "patch -p0 --force --fuzz=3", $title);
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl
deleted file mode 100644
index 0c8c89c7a..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/mergeChangeLogs.pl
+++ /dev/null
@@ -1,336 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2010 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. 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 INC. 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.
-
-# Unit tests of VCSUtils::mergeChangeLogs().
-
-use strict;
-
-use Test::Simple tests => 16;
-use File::Temp qw(tempfile);
-use VCSUtils;
-
-# Read contents of a file and return it.
-sub readFile($)
-{
- my ($fileName) = @_;
-
- local $/;
- open(FH, "<", $fileName);
- my $content = <FH>;
- close(FH);
-
- return $content;
-}
-
-# Write a temporary file and return the filename.
-sub writeTempFile($$$)
-{
- my ($name, $extension, $content) = @_;
-
- my ($FH, $fileName) = tempfile(
- $name . "-XXXXXXXX",
- DIR => ($ENV{'TMPDIR'} || $ENV{'TEMP'} || "/tmp"),
- UNLINK => 0,
- );
- print $FH $content;
- close $FH;
-
- if ($extension) {
- my $newFileName = $fileName . $extension;
- rename($fileName, $newFileName);
- $fileName = $newFileName;
- }
-
- return $fileName;
-}
-
-# --------------------------------------------------------------------------------
-
-{
- # New test
- my $title = "mergeChangeLogs: traditional rejected patch success";
-
- my $fileNewerContent = <<'EOF';
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Fix the Mac build.
-
- Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileNewer = writeTempFile("file", "", $fileNewerContent);
-
- my $fileMineContent = <<'EOF';
-***************
-*** 1,3 ****
- 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
---- 1,9 ----
-+ 2010-01-29 Oliver Hunt <oliver@apple.com>
-+
-+ Reviewed by Darin Adler.
-+
-+ JSC is failing to propagate anonymous slot count on some transitions
-+
- 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-EOF
- my $fileMine = writeTempFile("file", ".rej", $fileMineContent);
- rename($fileMine, $fileNewer . ".rej");
- $fileMine = $fileNewer . ".rej";
-
- my $fileOlderContent = $fileNewerContent;
- my $fileOlder = writeTempFile("file", ".orig", $fileOlderContent);
- rename($fileOlder, $fileNewer . ".orig");
- $fileOlder = $fileNewer . ".orig";
-
- my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
-
- # mergeChangeLogs() should return 1 since the patch succeeded.
- ok($exitStatus == 1, "$title: should return 1 for success");
-
- ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
- ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
-
- my $expectedContent = <<'EOF';
-2010-01-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- JSC is failing to propagate anonymous slot count on some transitions
-
-EOF
- $expectedContent .= $fileNewerContent;
- ok(readFile($fileNewer) eq $expectedContent, "$title: \$fileNewer should be updated to include patch");
-
- unlink($fileMine, $fileOlder, $fileNewer);
-}
-
-# --------------------------------------------------------------------------------
-
-{
- # New test
- my $title = "mergeChangeLogs: traditional rejected patch failure";
-
- my $fileNewerContent = <<'EOF';
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Fix the Mac build.
-
- Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileNewer = writeTempFile("file", "", $fileNewerContent);
-
- my $fileMineContent = <<'EOF';
-***************
-*** 1,9 ****
-- 2010-01-29 Oliver Hunt <oliver@apple.com>
--
-- Reviewed by Darin Adler.
--
-- JSC is failing to propagate anonymous slot count on some transitions
--
- 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
---- 1,3 ----
- 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-EOF
- my $fileMine = writeTempFile("file", ".rej", $fileMineContent);
- rename($fileMine, $fileNewer . ".rej");
- $fileMine = $fileNewer . ".rej";
-
- my $fileOlderContent = $fileNewerContent;
- my $fileOlder = writeTempFile("file", ".orig", $fileOlderContent);
- rename($fileOlder, $fileNewer . ".orig");
- $fileOlder = $fileNewer . ".orig";
-
- my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
-
- # mergeChangeLogs() should return 0 since the patch failed.
- ok($exitStatus == 0, "$title: should return 0 for failure");
-
- ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
- ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
- ok(readFile($fileNewer) eq $fileNewerContent, "$title: \$fileNewer should be unchanged");
-
- unlink($fileMine, $fileOlder, $fileNewer);
-}
-
-# --------------------------------------------------------------------------------
-
-{
- # New test
- my $title = "mergeChangeLogs: patch succeeds";
-
- my $fileMineContent = <<'EOF';
-2010-01-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- JSC is failing to propagate anonymous slot count on some transitions
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileMine = writeTempFile("fileMine", "", $fileMineContent);
-
- my $fileOlderContent = <<'EOF';
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileOlder = writeTempFile("fileOlder", "", $fileOlderContent);
-
- my $fileNewerContent = <<'EOF';
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Fix the Mac build.
-
- Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileNewer = writeTempFile("fileNewer", "", $fileNewerContent);
-
- my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
-
- # mergeChangeLogs() should return 1 since the patch succeeded.
- ok($exitStatus == 1, "$title: should return 1 for success");
-
- ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
- ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
-
- my $expectedContent = <<'EOF';
-2010-01-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- JSC is failing to propagate anonymous slot count on some transitions
-
-EOF
- $expectedContent .= $fileNewerContent;
-
- ok(readFile($fileNewer) eq $expectedContent, "$title: \$fileNewer should be patched");
-
- unlink($fileMine, $fileOlder, $fileNewer);
-}
-
-# --------------------------------------------------------------------------------
-
-{
- # New test
- my $title = "mergeChangeLogs: patch fails";
-
- my $fileMineContent = <<'EOF';
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Fix the Mac build.
-
- Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileMine = writeTempFile("fileMine", "", $fileMineContent);
-
- my $fileOlderContent = <<'EOF';
-2010-01-29 Mark Rowe <mrowe@apple.com>
-
- Fix the Mac build.
-
- Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional".
-
-2010-01-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- JSC is failing to propagate anonymous slot count on some transitions
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileOlder = writeTempFile("fileOlder", "", $fileOlderContent);
-
- my $fileNewerContent = <<'EOF';
-2010-01-29 Oliver Hunt <oliver@apple.com>
-
- Reviewed by Darin Adler.
-
- JSC is failing to propagate anonymous slot count on some transitions
-
-2010-01-29 Simon Hausmann <simon.hausmann@nokia.com>
-
- Rubber-stamped by Maciej Stachowiak.
-
- Fix the ARM build.
-EOF
- my $fileNewer = writeTempFile("fileNewer", "", $fileNewerContent);
-
- my $exitStatus = mergeChangeLogs($fileMine, $fileOlder, $fileNewer);
-
- # mergeChangeLogs() should return a non-zero exit status since the patch failed.
- ok($exitStatus == 0, "$title: return non-zero exit status for failure");
-
- ok(readFile($fileMine) eq $fileMineContent, "$title: \$fileMine should be unchanged");
- ok(readFile($fileOlder) eq $fileOlderContent, "$title: \$fileOlder should be unchanged");
-
- # $fileNewer should still exist unchanged because the patch failed
- ok(readFile($fileNewer) eq $fileNewerContent, "$title: \$fileNewer should be unchanged");
-
- unlink($fileMine, $fileOlder, $fileNewer);
-}
-
-# --------------------------------------------------------------------------------
-
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl
deleted file mode 100644
index caee50b16..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseChunkRange.pl
+++ /dev/null
@@ -1,267 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
-#
-# 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 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 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.
-
-# Unit tests of VCSUtils::parseChunkRange().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-###
-# Invalid and malformed chunk range
-##
-# FIXME: We should make this set of tests more comprehensive.
-{ # New test
- testName => "[invalid] Empty string",
- inputText => "",
- expectedReturn => []
-},
-{ # New test
- testName => "[invalid] Bogus chunk range",
- inputText => "@@ this is not valid @@",
- expectedReturn => []
-},
-{ # New test
- testName => "[invalid] Chunk range missing -/+ prefix",
- inputText => "@@ 0,0 1,4 @@",
- expectedReturn => []
-},
-{ # New test
- testName => "[invalid] Chunk range missing commas",
- inputText => "@@ -0 0 +1 4 @@",
- expectedReturn => []
-},
-{ # New test
- testName => "[invalid] Chunk range with swapped old and rew ranges",
- inputText => "@@ +0,0 -1,4 @@",
- expectedReturn => []
-},
-{ # New test
- testName => "[invalid] Chunk range with leading junk",
- inputText => "leading junk @@ -0,0 +1,4 @@",
- expectedReturn => []
-},
-###
-# Simple test cases
-##
-{ # New test
- testName => "Line count is 0",
- inputText => "@@ -0,0 +1,4 @@",
- expectedReturn => [
-{
- startingLine => 0,
- lineCount => 0,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "Line count is 1",
- inputText => "@@ -1 +1,4 @@",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 1,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "Both original and new line count is 1",
- inputText => "@@ -1 +1 @@",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 1,
- newStartingLine => 1,
- newLineCount => 1,
-}
-]
-},
-{ # New test
- testName => "Line count and new line count > 1",
- inputText => "@@ -1,2 +1,4 @@",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 2,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "New line count is 0",
- inputText => "@@ -1,4 +0,0 @@",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 4,
- newStartingLine => 0,
- newLineCount => 0,
-}
-]
-},
-{ # New test
- testName => "New line count is 1",
- inputText => "@@ -1,4 +1 @@",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 4,
- newStartingLine => 1,
- newLineCount => 1,
-}
-]
-},
-###
-# Simple SVN 1.7 property diff chunk range tests
-##
-{ # New test
- testName => "Line count is 0",
- inputText => "## -0,0 +1,4 ##",
- chunkSentinel => "##",
- expectedReturn => [
-{
- startingLine => 0,
- lineCount => 0,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "New line count is 1",
- inputText => "## -0,0 +1 ##",
- chunkSentinel => "##",
- expectedReturn => [
-{
- startingLine => 0,
- lineCount => 0,
- newStartingLine => 1,
- newLineCount => 1,
-}
-]
-},
-###
-# Chunk range followed by ending junk
-##
-{ # New test
- testName => "Line count is 0 and chunk range has ending junk",
- inputText => "@@ -0,0 +1,4 @@ foo()",
- expectedReturn => [
-{
- startingLine => 0,
- lineCount => 0,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "Line count is 1 and chunk range has ending junk",
- inputText => "@@ -1 +1,4 @@ foo()",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 1,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "Both original and new line count is 1 and chunk range has ending junk",
- inputText => "@@ -1 +1 @@ foo()",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 1,
- newStartingLine => 1,
- newLineCount => 1,
-}
-]
-},
-{ # New test
- testName => "Line count and new line count > 1 and chunk range has ending junk",
- inputText => "@@ -1,2 +1,4 @@ foo()",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 2,
- newStartingLine => 1,
- newLineCount => 4,
-}
-]
-},
-{ # New test
- testName => "New line count is 0 and chunk range has ending junk",
- inputText => "@@ -1,4 +0,0 @@ foo()",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 4,
- newStartingLine => 0,
- newLineCount => 0,
-}
-]
-},
-{ # New test
- testName => "New line count is 1 and chunk range has ending junk",
- inputText => "@@ -1,4 +1 @@ foo()",
- expectedReturn => [
-{
- startingLine => 1,
- lineCount => 4,
- newStartingLine => 1,
- newLineCount => 1,
-}
-]
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => $testCasesCount);
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseChunkRange(): $testCase->{testName}: comparing";
-
- my @got = VCSUtils::parseChunkRange($testCase->{inputText}, $testCase->{chunkSentinel});
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl
deleted file mode 100644
index 5b30fcbb8..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiff.pl
+++ /dev/null
@@ -1,1277 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
-
-# Unit tests of parseDiff().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-# The array of test cases.
-my @testCaseHashRefs = (
-{
- # New test
- diffName => "SVN: simple",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53052)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
- all:
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 53052)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
- all:
-END
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: binary file (isBinary true)",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: binary file (isBinary true) using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: leading junk",
- inputText => <<'END',
-
-LEADING JUNK
-
-Index: Makefile
-===================================================================
---- Makefile (revision 53052)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
- all:
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-
-LEADING JUNK
-
-Index: Makefile
-===================================================================
---- Makefile (revision 53052)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
- all:
-END
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: copied file",
- inputText => <<'END',
-Index: Makefile_new
-===================================================================
---- Makefile_new (revision 53131) (from Makefile:53131)
-+++ Makefile_new (working copy)
-@@ -0,0 +1,1 @@
-+MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-END
- expectedReturn => [
-[{
- copiedFromPath => "Makefile",
- indexPath => "Makefile_new",
- sourceRevision => "53131",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: two diffs",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-Index: Makefile_new
-===================================================================
---- Makefile_new (revision 53131) (from Makefile:53131)
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-END
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53131",
-}],
-"Index: Makefile_new\n"],
- expectedNextLine => "===================================================================\n",
-},
-{
- # New test
- diffName => "SVN: SVN diff followed by Git diff", # Should not recognize Git start
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-diff --git a/Makefile b/Makefile
-index f5d5e74..3b6aa92 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,1 1,1 @@ public:
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-diff --git a/Makefile b/Makefile
-index f5d5e74..3b6aa92 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,1 1,1 @@ public:
-END
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53131",
-}],
-undef],
- expectedNextLine => undef,
-},
-####
-# Property Changes: Simple
-##
-{
- # New test
- diffName => "SVN: file change diff with property change diff",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile
-___________________________________________________________________
-Name: svn:executable
- + *
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-END
- executableBitDelta => 1,
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: file change diff, followed by property change diff on different file",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile.shared
-___________________________________________________________________
-Name: svn:executable
- + *
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-END
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-"Property changes on: Makefile.shared\n"],
- expectedNextLine => "___________________________________________________________________\n",
-},
-{
- # New test
- diffName => "SVN: property diff, followed by file change diff",
- inputText => <<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Deleted: svn:executable
- - *
-
-Index: Makefile.shared
-===================================================================
---- Makefile.shared (revision 60021)
-+++ Makefile.shared (working copy)
-@@ -1,3 +1,4 @@
-+
-SCRIPTS_PATH ?= ../WebKitTools/Scripts
-XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
-END
- expectedReturn => [
-[{
- executableBitDelta => -1,
- indexPath => "Makefile",
- isSvn => 1,
-}],
-"Index: Makefile.shared\n"],
- expectedNextLine => "===================================================================\n",
-},
-{
- # New test
- diffName => "SVN: property diff, followed by file change diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Deleted: svn:executable
- - *
-
-Index: Makefile.shared
-===================================================================
---- Makefile.shared (revision 60021)
-+++ Makefile.shared (working copy)
-@@ -1,3 +1,4 @@
-+
-SCRIPTS_PATH ?= ../WebKitTools/Scripts
-XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
-END
-),
- expectedReturn => [
-[{
- executableBitDelta => -1,
- indexPath => "Makefile",
- isSvn => 1,
-}],
-"Index: Makefile.shared\r\n"],
- expectedNextLine => "===================================================================\r\n",
-},
-{
- # New test
- diffName => "SVN: copied file with property change",
- inputText => <<'END',
-Index: NMakefile
-===================================================================
---- NMakefile (revision 60021) (from Makefile:60021)
-+++ NMakefile (working copy)
-@@ -0,0 +1,1 @@
-+MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
-Property changes on: NMakefile
-___________________________________________________________________
-Added: svn:executable
- + *
-END
- expectedReturn => [
-[{
- copiedFromPath => "Makefile",
- executableBitDelta => 1,
- indexPath => "NMakefile",
- sourceRevision => "60021",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: two consecutive property diffs",
- inputText => <<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-
-
-Property changes on: Makefile.shared
-___________________________________________________________________
-Added: svn:executable
- + *
-END
- expectedReturn => [
-[{
- executableBitDelta => 1,
- indexPath => "Makefile",
- isSvn => 1,
-}],
-"Property changes on: Makefile.shared\n"],
- expectedNextLine => "___________________________________________________________________\n",
-},
-{
- # New test
- diffName => "SVN: two consecutive property diffs using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-
-
-Property changes on: Makefile.shared
-___________________________________________________________________
-Added: svn:executable
- + *
-END
-),
- expectedReturn => [
-[{
- executableBitDelta => 1,
- indexPath => "Makefile",
- isSvn => 1,
-}],
-"Property changes on: Makefile.shared\r\n"],
- expectedNextLine => "___________________________________________________________________\r\n",
-},
-####
-# Property Changes: Binary files
-##
-{
- # New test
- diffName => "SVN: binary file with executable bit change",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-Name: svn:executable
- + *
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- executableBitDelta => 1,
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: binary file with executable bit change usng Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-Name: svn:executable
- + *
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- executableBitDelta => 1,
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: binary file followed by property change on different file",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-END
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-"Property changes on: Makefile\n"],
- expectedNextLine => "___________________________________________________________________\n",
-},
-{
- # New test
- diffName => "SVN: binary file followed by property change on different file using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-END
-),
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-"Property changes on: Makefile\r\n"],
- expectedNextLine => "___________________________________________________________________\r\n",
-},
-{
- # New test
- diffName => "SVN: binary file followed by file change on different file",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-END
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-"Index: Makefile\n"],
- expectedNextLine => "===================================================================\n",
-},
-{
- # New test
- diffName => "SVN: binary file followed by file change on different file using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-
-END
-),
- indexPath => "test_file.swf",
- isBinary => 1,
- isSvn => 1,
-}],
-"Index: Makefile\r\n"],
- expectedNextLine => "===================================================================\r\n",
-},
-####
-# Property Changes: File change with property change
-##
-{
- # New test
- diffName => "SVN: file change diff with property change, followed by property change diff",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-
-
-Property changes on: Makefile.shared
-___________________________________________________________________
-Deleted: svn:executable
- - *
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-
-
-END
- executableBitDelta => 1,
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-"Property changes on: Makefile.shared\n"],
- expectedNextLine => "___________________________________________________________________\n",
-},
-{
- # New test
- diffName => "SVN: file change diff with property change, followed by property change diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:executable
- + *
-
-
-Property changes on: Makefile.shared
-___________________________________________________________________
-Deleted: svn:executable
- - *
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-
-
-END
-),
- executableBitDelta => 1,
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-"Property changes on: Makefile.shared\r\n"],
- expectedNextLine => "___________________________________________________________________\r\n",
-},
-{
- # New test
- diffName => "SVN: file change diff with property change, followed by file change diff",
- inputText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile
-___________________________________________________________________
-Name: svn:executable
- - *
-
-Index: Makefile.shared
-===================================================================
---- Makefile.shared (revision 60021)
-+++ Makefile.shared (working copy)
-@@ -1,3 +1,4 @@
-+
-SCRIPTS_PATH ?= ../WebKitTools/Scripts
-XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-
-END
- executableBitDelta => -1,
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-"Index: Makefile.shared\n"],
- expectedNextLine => "===================================================================\n",
-},
-{
- # New test
- diffName => "SVN: file change diff with property change, followed by file change diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-Property changes on: Makefile
-___________________________________________________________________
-Name: svn:executable
- - *
-
-Index: Makefile.shared
-===================================================================
---- Makefile.shared (revision 60021)
-+++ Makefile.shared (working copy)
-@@ -1,3 +1,4 @@
-+
-SCRIPTS_PATH ?= ../WebKitTools/Scripts
-XCODE_OPTIONS = `perl -I$(SCRIPTS_PATH) -Mwebkitdirs -e 'print XcodeOptionString()'` $(ARGS)
-END
-),
- expectedReturn => [
-[{
- svnConvertedText => toWindowsLineEndings(<<'END', # Same as input text
-Index: Makefile
-===================================================================
---- Makefile (revision 60021)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKit2 WebKitTools
-
- all:
-
-
-END
-),
- executableBitDelta => -1,
- indexPath => "Makefile",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "60021",
-}],
-"Index: Makefile.shared\r\n"],
- expectedNextLine => "===================================================================\r\n",
-},
-####
-# Git test cases
-##
-{
- # New test
- diffName => "Git: simple",
- inputText => <<'END',
-diff --git a/Makefile b/Makefile
-index f5d5e74..3b6aa92 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,1 +1,1 @@ public:
-END
- expectedReturn => [
-[{
- svnConvertedText => <<"END",
-Index: Makefile
-index f5d5e74..3b6aa92 100644
---- Makefile\t(revision 0)
-+++ Makefile\t(working copy)
-@@ -1,1 +1,1 @@ public:
-END
- indexPath => "Makefile",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Append new line to the end of an existing file",
- inputText => <<'END',
-diff --git a/foo b/foo
-index 863339f..db418b2 100644
---- a/foo
-+++ b/foo
-@@ -1 +1,2 @@
- Passed
-+
-END
- expectedReturn => [
-[{
- svnConvertedText => <<"END",
-Index: foo
-index 863339f..db418b2 100644
---- foo\t(revision 0)
-+++ foo\t(working copy)
-@@ -1 +1,2 @@
- Passed
-+
-END
- indexPath => "foo",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{ # New test
- diffName => "Git: new file",
- inputText => <<'END',
-diff --git a/foo.h b/foo.h
-new file mode 100644
-index 0000000..3c9f114
---- /dev/null
-+++ b/foo.h
-@@ -0,0 +1,34 @@
-+<html>
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-[{
- svnConvertedText => <<"END",
-Index: foo.h
-new file mode 100644
-index 0000000..3c9f114
---- foo.h\t(revision 0)
-+++ foo.h\t(working copy)
-@@ -0,0 +1,34 @@
-+<html>
-END
- indexPath => "foo.h",
- isGit => 1,
- isNew => 1,
- numTextChunks => 1,
-}],
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{ # New test
- diffName => "Git: file deletion",
- inputText => <<'END',
-diff --git a/foo b/foo
-deleted file mode 100644
-index 1e50d1d..0000000
---- a/foo
-+++ /dev/null
-@@ -1,1 +0,0 @@
--line1
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-[{
- svnConvertedText => <<"END",
-Index: foo
-deleted file mode 100644
-index 1e50d1d..0000000
---- foo\t(revision 0)
-+++ foo\t(working copy)
-@@ -1,1 +0,0 @@
--line1
-END
- indexPath => "foo",
- isDeletion => 1,
- isGit => 1,
- numTextChunks => 1,
-}],
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{
- # New test
- diffName => "Git: Git diff followed by SVN diff", # Should not recognize SVN start
- inputText => <<'END',
-diff --git a/Makefile b/Makefile
-index f5d5e74..3b6aa92 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,1 +1,1 @@ public:
-Index: Makefile_new
-===================================================================
---- Makefile_new (revision 53131) (from Makefile:53131)
-END
- expectedReturn => [
-[{
- svnConvertedText => <<"END",
-Index: Makefile
-index f5d5e74..3b6aa92 100644
---- Makefile\t(revision 0)
-+++ Makefile\t(working copy)
-@@ -1,1 +1,1 @@ public:
-Index: Makefile_new
-===================================================================
---- Makefile_new (revision 53131) (from Makefile:53131)
-END
- indexPath => "Makefile",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: file that only has an executable bit change",
- inputText => <<'END',
-diff --git a/foo b/foo
-old mode 100644
-new mode 100755
-END
- expectedReturn => [
-[{
- svnConvertedText => <<'END',
-Index: foo
-old mode 100644
-new mode 100755
-END
- executableBitDelta => 1,
- indexPath => "foo",
- isGit => 1,
- numTextChunks => 0,
-}],
-undef],
- expectedNextLine => undef,
-},
-####
-# Git test cases: file moves (multiple return values)
-##
-{
- diffName => "Git: rename (with similarity index 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 100%
-rename from foo
-rename to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-[{
- indexPath => "foo",
- isDeletion => 1,
-},
-{
- copiedFromPath => "foo",
- indexPath => "foo_new",
-}],
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{
- diffName => "rename (with similarity index < 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 99%
-rename from foo
-rename to foo_new
-index 1e50d1d..1459d21 100644
---- a/foo
-+++ b/foo_new
-@@ -15,3 +15,4 @@ release r deployment dep deploy:
- line1
- line2
- line3
-+line4
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-[{
- indexPath => "foo",
- isDeletion => 1,
-},
-{
- copiedFromPath => "foo",
- indexPath => "foo_new",
-},
-{
- indexPath => "foo_new",
- isGit => 1,
- numTextChunks => 1,
- svnConvertedText => <<"END",
-Index: foo_new
-similarity index 99%
-rename from foo
-rename to foo_new
-index 1e50d1d..1459d21 100644
---- foo_new\t(revision 0)
-+++ foo_new\t(working copy)
-@@ -15,3 +15,4 @@ release r deployment dep deploy:
- line1
- line2
- line3
-+line4
-END
-}],
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{
- diffName => "rename (with executable bit change)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-old mode 100644
-new mode 100755
-similarity index 100%
-rename from foo
-rename to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-[{
- indexPath => "foo",
- isDeletion => 1,
-},
-{
- copiedFromPath => "foo",
- indexPath => "foo_new",
-},
-{
- executableBitDelta => 1,
- indexPath => "foo_new",
- isGit => 1,
- numTextChunks => 0,
- svnConvertedText => <<'END',
-Index: foo_new
-old mode 100644
-new mode 100755
-similarity index 100%
-rename from foo
-rename to foo_new
-END
-}],
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseDiff(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseDiff($fileHandle, $line, {"shouldNotUseIndexPathEOL" => 1});
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
deleted file mode 100644
index 8c20f658b..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
+++ /dev/null
@@ -1,121 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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 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 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.
-
-# Unit tests of parseDiffHeader().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-# The unit tests for parseGitDiffHeader() and parseSvnDiffHeader()
-# already thoroughly test parsing each format.
-#
-# For parseDiffHeader(), it should suffice to verify that -- (1) for each
-# format, the method can return non-trivial values back for each key
-# supported by that format (e.g. "sourceRevision" for SVN), (2) the method
-# correctly sets default values when specific key-values are not set
-# (e.g. undef for "sourceRevision" for Git), and (3) key-values unique to
-# this method are set correctly (e.g. "scmFormat").
-my @testCaseHashRefs = (
-####
-# SVN test cases
-##
-{ # New test
- diffName => "SVN: non-trivial copiedFromPath and sourceRevision values",
- inputText => <<'END',
-Index: index_path.py
-===================================================================
---- index_path.py (revision 53048) (from copied_from_path.py:53048)
-+++ index_path.py (working copy)
-@@ -0,0 +1,7 @@
-+# Python file...
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: index_path.py
-===================================================================
---- index_path.py (revision 53048) (from copied_from_path.py:53048)
-+++ index_path.py (working copy)
-END
- copiedFromPath => "copied_from_path.py",
- indexPath => "index_path.py",
- isSvn => 1,
- sourceRevision => 53048,
-},
-"@@ -0,0 +1,7 @@\n"],
- expectedNextLine => "+# Python file...\n",
-},
-####
-# Git test cases
-##
-{ # New test case
- diffName => "Git: Non-zero executable bit",
- inputText => <<'END',
-diff --git a/foo.exe b/foo.exe
-old mode 100644
-new mode 100755
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo.exe
-old mode 100644
-new mode 100755
-END
- executableBitDelta => 1,
- indexPath => "foo.exe",
- isGit => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseDiffHeader(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseDiffHeader($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl
deleted file mode 100644
index 2b1d1a201..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseDiffWithMockFiles.pl
+++ /dev/null
@@ -1,486 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
-# Copyright (C) 2013 Apple Inc. All rights reserved.
-#
-# 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
-
-# Unit tests of parseDiff() with mock files; test override of patch EOL with EOL of target file.
-
-use strict;
-use warnings;
-
-use File::Temp;
-use POSIX qw/getcwd/;
-use Test::More;
-use VCSUtils;
-
-# We should consider moving escapeNewLineCharacters() and toMacLineEndings()
-# to VCSUtils.pm if they're useful in other places.
-sub escapeNewLineCharacters($)
-{
- my ($text) = @_;
- my @characters = split(//, $text);
- my $result = "";
- foreach (@characters) {
- if (/^\r$/) {
- $result .= '\r';
- next;
- }
- if (/^\n$/) {
- $result .= '\n';
- }
- $result .= $_;
- }
- return $result;
-}
-
-sub toMacLineEndings($)
-{
- my ($text) = @_;
- $text =~ s/\n/\r/g;
- return $text;
-}
-
-my $gitDiffHeaderForNewFile = <<EOF;
-diff --git a/Makefile b/Makefile
-new file mode 100644
-index 0000000..756e864
---- /dev/null
-+++ b/Makefile
-@@ -0,0 +1,17 @@
-EOF
-
-my $gitDiffHeader = <<EOF;
-diff --git a/Makefile b/Makefile
-index 756e864..04d2ae1 100644
---- a/Makefile
-+++ b/Makefile
-@@ -1,3 +1,4 @@
-EOF
-
-my $svnConvertedGitDiffHeader = <<"EOF";
-Index: Makefile
-index 756e864..04d2ae1 100644
---- Makefile\t(revision 0)
-+++ Makefile\t(working copy)
-@@ -1,3 +1,4 @@
-EOF
-
-my $svnConvertedGitDiffHeaderForNewFile = <<"EOF";
-Index: Makefile
-new file mode 100644
-index 0000000..756e864
---- Makefile\t(revision 0)
-+++ Makefile\t(working copy)
-@@ -0,0 +1,17 @@
-EOF
-
-my $svnDiffHeaderForNewFile = <<EOF;
-Index: Makefile
-===================================================================
---- Makefile (revision 0)
-+++ Makefile (revision 0)
-@@ -0,0 +1,17 @@
-EOF
-
-my $svnDiffHeader = <<EOF;
-Index: Makefile
-===================================================================
---- Makefile (revision 53052)
-+++ Makefile (working copy)
-@@ -1,3 +1,4 @@
-EOF
-
-my $diffBody = <<EOF;
-+
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
- all:
-EOF
-
-my $MakefileContents = <<EOF;
-MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-
-all:
-EOF
-
-my $mockDir = File::Temp->tempdir("parseDiffXXXX", CLEANUP => 1);
-writeToFile(File::Spec->catfile($mockDir, "MakefileWithUnixEOL"), $MakefileContents);
-writeToFile(File::Spec->catfile($mockDir, "MakefileWithWindowsEOL"), toWindowsLineEndings($MakefileContents));
-writeToFile(File::Spec->catfile($mockDir, "MakefileWithMacEOL"), toMacLineEndings($MakefileContents));
-
-# The array of test cases.
-my @testCaseHashRefs = (
-###
-# SVN test cases
-##
-{
- # New test
- diffName => "SVN: Patch with Unix line endings and IndexPath has Unix line endings",
- inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, # Same as input text
- indexPath => "MakefileWithUnixEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch with Windows line endings and IndexPath has Unix line endings",
- inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody,
- indexPath => "MakefileWithUnixEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch with Windows line endings and IndexPath has Windows line endings",
- inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), # Same as input text
- indexPath => "MakefileWithWindowsEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch adds Windows newline to EOF and IndexPath has Windows line endings",
- inputText => <<"EOF",
-Index: MakefileWithWindowsEOL
-===================================================================
---- MakefileWithWindowsEOL (revision 53052)
-+++ MakefileWithWindowsEOL (working copy)
-@@ -1,3 +1,4 @@\r
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r
- \r
--all:
-\\ No newline at end of file
-+all:\r
-+\r
-EOF
- expectedReturn => [
-[{
- # Same as input text
- svnConvertedText => <<"EOF",
-Index: MakefileWithWindowsEOL
-===================================================================
---- MakefileWithWindowsEOL (revision 53052)
-+++ MakefileWithWindowsEOL (working copy)
-@@ -1,3 +1,4 @@\r
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r
- \r
--all:
-\\ No newline at end of file
-+all:\r
-+\r
-EOF
- indexPath => "MakefileWithWindowsEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => 53052
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch adds Mac newline to EOF and IndexPath has Mac line endings",
- inputText => <<"EOF",
-Index: MakefileWithMacEOL
-===================================================================
---- MakefileWithMacEOL (revision 53052)
-+++ MakefileWithMacEOL (working copy)
-@@ -1,3 +1,4 @@\r MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r \r-all:
-\\ No newline at end of file
-+all:\r+\r
-EOF
- expectedReturn => [
-[{
- # Same as input text
- svnConvertedText => q(Index: MakefileWithMacEOL
-===================================================================
---- MakefileWithMacEOL (revision 53052)
-+++ MakefileWithMacEOL (working copy)
-@@ -1,3 +1,4 @@\r MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r \r-all:
-\\ No newline at end of file
-+all:\r+\r),
- indexPath => "MakefileWithMacEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => 53052
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch with Unix line endings and IndexPath has Windows line endings",
- inputText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody),
- indexPath => "MakefileWithWindowsEOL",
- isSvn => 1,
- numTextChunks => 1,
- sourceRevision => "53052",
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch with Unix line endings and nonexistent IndexPath",
- inputText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, # Same as input text
- indexPath => "NonexistentFile",
- isSvn => 1,
- isNew => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "SVN: Patch with Windows line endings and nonexistent IndexPath",
- inputText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), # Same as input text
- indexPath => "NonexistentFile",
- isSvn => 1,
- isNew => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-###
-# Git test cases
-##
-{
- # New test
- diffName => "Git: Patch with Unix line endings and IndexPath has Unix line endings",
- inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody, # Same as input text
- indexPath => "MakefileWithUnixEOL",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch with Windows line endings and IndexPath has Unix line endings",
- inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithUnixEOL") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithUnixEOL") . $diffBody,
- indexPath => "MakefileWithUnixEOL",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch with Windows line endings and IndexPath has Windows line endings",
- inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody), # Same as input text
- indexPath => "MakefileWithWindowsEOL",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch adds newline to EOF with Windows line endings and IndexPath has Windows line endings",
- inputText => <<"EOF",
-diff --git a/MakefileWithWindowsEOL b/MakefileWithWindowsEOL
-index e7e8475..ae16fc3 100644
---- a/MakefileWithWindowsEOL
-+++ b/MakefileWithWindowsEOL
-@@ -1,3 +1,4 @@\r
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r
- \r
--all:
-\\ No newline at end of file
-+all:\r
-+\r
-EOF
- expectedReturn => [
-[{
- # Same as input text
- svnConvertedText => <<"EOF",
-Index: MakefileWithWindowsEOL
-index e7e8475..ae16fc3 100644
---- MakefileWithWindowsEOL\t(revision 0)
-+++ MakefileWithWindowsEOL\t(working copy)
-@@ -1,3 +1,4 @@\r
- MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r
- \r
--all:
-\\ No newline at end of file
-+all:\r
-+\r
-EOF
- indexPath => "MakefileWithWindowsEOL",
- isGit => 1,
- numTextChunks => 1
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch adds Mac newline to EOF and IndexPath has Mac line endings",
- inputText => <<"EOF",
-diff --git a/MakefileWithMacEOL b/MakefileWithMacEOL
-index e7e8475..ae16fc3 100644
---- a/MakefileWithMacEOL
-+++ b/MakefileWithMacEOL
-@@ -1,3 +1,4 @@\r MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r \r-all:
-\\ No newline at end of file
-+all:\r+\r
-EOF
- expectedReturn => [
-[{
- # Same as input text
- svnConvertedText => qq(Index: MakefileWithMacEOL
-index e7e8475..ae16fc3 100644
---- MakefileWithMacEOL\t(revision 0)
-+++ MakefileWithMacEOL\t(working copy)
-@@ -1,3 +1,4 @@\r MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools\r \r-all:
-\\ No newline at end of file
-+all:\r+\r),
- indexPath => "MakefileWithMacEOL",
- isGit => 1,
- numTextChunks => 1
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch with Unix line endings and IndexPath has Windows line endings",
- inputText => substituteString($gitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeader, "Makefile", "MakefileWithWindowsEOL") . toWindowsLineEndings($diffBody),
- indexPath => "MakefileWithWindowsEOL",
- isGit => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch with Unix line endings and nonexistent IndexPath",
- inputText => substituteString($gitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody,
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . $diffBody, # Same as input text
- indexPath => "NonexistentFile",
- isGit => 1,
- isNew => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "Git: Patch with Windows line endings and nonexistent IndexPath",
- inputText => substituteString($gitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody),
- expectedReturn => [
-[{
- svnConvertedText => substituteString($svnConvertedGitDiffHeaderForNewFile, "Makefile", "NonexistentFile") . toWindowsLineEndings($diffBody), # Same as input text
- indexPath => "NonexistentFile",
- isGit => 1,
- isNew => 1,
- numTextChunks => 1,
-}],
-undef],
- expectedNextLine => undef,
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-my $savedCWD = getcwd();
-chdir($mockDir) or die;
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseDiff(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseDiff($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- $got[0][0]->{svnConvertedText} = escapeNewLineCharacters($got[0][0]->{svnConvertedText});
- $expectedReturn->[0][0]->{svnConvertedText} = escapeNewLineCharacters($expectedReturn->[0][0]->{svnConvertedText});
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
-chdir($savedCWD);
-
-sub substituteString
-{
- my ($string, $searchString, $replacementString) = @_;
- $string =~ s/$searchString/$replacementString/g;
- return $string;
-}
-
-sub writeToFile
-{
- my ($file, $text) = @_;
- open(FILE, ">$file") or die;
- print FILE $text;
- close(FILE);
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl
deleted file mode 100644
index 367ad1d49..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseFirstEOL.pl
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Research In Motion Limited. All rights reserved.
-#
-# 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
-
-# Unit tests of VCSUtils::parseFirstEOL().
-
-use strict;
-use warnings;
-
-use Test::Simple tests => 7;
-use VCSUtils;
-
-my $title;
-
-# New test
-$title = "parseFirstEOL: Empty string.";
-ok(!defined(firstEOLInString("")), $title);
-
-# New test
-$title = "parseFirstEOL: Line without a line ending character";
-ok(!defined(firstEOLInString("This line doesn't have a line ending character.")), $title);
-
-# New test
-$title = "parseFirstEOL: Line with Windows line ending.";
-ok(firstEOLInString("This line ends with a Windows line ending.\r\n") eq "\r\n", $title);
-
-# New test
-$title = "parseFirstEOL: Line with Unix line ending.";
-ok(firstEOLInString("This line ends with a Unix line ending.\n") eq "\n", $title);
-
-# New test
-$title = "parseFirstEOL: Line with Mac line ending.";
-ok(firstEOLInString("This line ends with a Mac line ending.\r") eq "\r", $title);
-
-# New test
-$title = "parseFirstEOL: Line with Mac line ending followed by line without a line ending.";
-ok(firstEOLInString("This line ends with a Mac line ending.\rThis line doesn't have a line ending.") eq "\r", $title);
-
-# New test
-$title = "parseFirstEOL: Line with a mix of line endings.";
-ok(firstEOLInString("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "\r\n", $title);
-
-sub firstEOLInString
-{
- my ($string) = @_;
- my $fileHandle;
- open($fileHandle, "<", \$string);
- return parseFirstEOL($fileHandle);
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl
deleted file mode 100644
index 841e28387..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseGitDiffHeader.pl
+++ /dev/null
@@ -1,674 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-# Unit tests of parseGitDiffHeader().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-# The array of test cases.
-my @testCaseHashRefs = (
-{ # New test
- diffName => "Modified file",
- inputText => <<'END',
-diff --git a/foo.h b/foo.h
-index f5d5e74..3b6aa92 100644
---- a/foo.h
-+++ b/foo.h
-@@ -1 +1 @@
--file contents
-+new file contents
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo.h
-index f5d5e74..3b6aa92 100644
---- foo.h\t(revision 0)
-+++ foo.h\t(working copy)
-END
- indexPath => "foo.h",
-},
-"@@ -1 +1 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{
- diffName => "Modified file using --src-prefix and --dst-prefix option",
- inputText => <<'END',
-diff --git s/foo.h d/foo.h
-index f5d5e74..3b6aa92 100644
---- s/foo.h
-+++ d/foo.h
-@@ -1 +1 @@
--file contents
-+new file contents
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo.h
-index f5d5e74..3b6aa92 100644
---- foo.h\t(revision 0)
-+++ foo.h\t(working copy)
-END
- indexPath => "foo.h",
-},
-"@@ -1 +1 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{ # New test
- diffName => "Modified file which have space characters in path",
- inputText => <<'END',
-diff --git a/foo bar.h b/foo bar.h
-index f5d5e74..3b6aa92 100644
---- a/foo bar.h
-+++ b/foo bar.h
-@@ -1 +1 @@
--file contents
-+new file contents
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo bar.h
-index f5d5e74..3b6aa92 100644
---- foo bar.h\t(revision 0)
-+++ foo bar.h\t(working copy)
-END
- indexPath => "foo bar.h",
-},
-"@@ -1 +1 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{ # New test
- diffName => "Modified file which have space characters in path using --no-prefix",
- inputText => <<'END',
-diff --git directory/foo bar.h directory/foo bar.h
-index f5d5e74..3b6aa92 100644
---- directory/foo bar.h
-+++ directory/foo bar.h
-@@ -1 +1 @@
--file contents
-+new file contents
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: directory/foo bar.h
-index f5d5e74..3b6aa92 100644
---- directory/foo bar.h\t(revision 0)
-+++ directory/foo bar.h\t(working copy)
-END
- indexPath => "directory/foo bar.h",
-},
-"@@ -1 +1 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{ # New test
- diffName => "new file",
- inputText => <<'END',
-diff --git a/foo.h b/foo.h
-new file mode 100644
-index 0000000..3c9f114
---- /dev/null
-+++ b/foo.h
-@@ -0,0 +1,34 @@
-+<html>
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo.h
-new file mode 100644
-index 0000000..3c9f114
---- foo.h\t(revision 0)
-+++ foo.h\t(working copy)
-END
- indexPath => "foo.h",
- isNew => 1,
-},
-"@@ -0,0 +1,34 @@\n"],
- expectedNextLine => "+<html>\n",
-},
-{ # New test
- diffName => "file deletion",
- inputText => <<'END',
-diff --git a/foo b/foo
-deleted file mode 100644
-index 1e50d1d..0000000
---- a/foo
-+++ /dev/null
-@@ -1,1 +0,0 @@
--line1
-diff --git a/configure.ac b/configure.ac
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo
-deleted file mode 100644
-index 1e50d1d..0000000
---- foo\t(revision 0)
-+++ foo\t(working copy)
-END
- indexPath => "foo",
- isDeletion => 1,
-},
-"@@ -1,1 +0,0 @@\n"],
- expectedNextLine => "-line1\n",
-},
-{
- diffName => "delete file which have space characters in path using --no-prefix",
- inputText => <<'END',
-diff --git directory/foo bar.h directory/foo bar.h
-deleted file mode 100644
-index 1e50d1d..0000000
---- directory/foo bar.h
-+++ /dev/null
-@@ -1,1 +0,0 @@
--line1
-diff --git a/configure.ac b/configure.ac
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: directory/foo bar.h
-deleted file mode 100644
-index 1e50d1d..0000000
---- directory/foo bar.h\t(revision 0)
-+++ directory/foo bar.h\t(working copy)
-END
- indexPath => "directory/foo bar.h",
- isDeletion => 1,
-},
-"@@ -1,1 +0,0 @@\n"],
- expectedNextLine => "-line1\n",
-},
-{ # New test
- diffName => "using --no-prefix",
- inputText => <<'END',
-diff --git foo.h foo.h
-index c925780..9e65c43 100644
---- foo.h
-+++ foo.h
-@@ -1,3 +1,17 @@
-+contents
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo.h
-index c925780..9e65c43 100644
---- foo.h\t(revision 0)
-+++ foo.h\t(working copy)
-END
- indexPath => "foo.h",
-},
-"@@ -1,3 +1,17 @@\n"],
- expectedNextLine => "+contents\n",
-},
-####
-# Copy operations
-##
-{ # New test
- diffName => "copy (with similarity index 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 100%
-copy from foo
-copy to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo_new
-similarity index 100%
-copy from foo
-copy to foo_new
-END
- copiedFromPath => "foo",
- indexPath => "foo_new",
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{
- diffName => "copy file which have space characters in path using --no-prefix (with similarity index 100%)",
- inputText => <<'END',
-diff --git directory/foo bar.h directory/foo baz.h
-similarity index 100%
-copy from directory/foo bar.h
-copy to directory/foo baz.h
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: directory/foo baz.h
-similarity index 100%
-copy from directory/foo bar.h
-copy to directory/foo baz.h
-END
- copiedFromPath => "directory/foo bar.h",
- indexPath => "directory/foo baz.h",
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{ # New test
- diffName => "copy (with similarity index < 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 99%
-copy from foo
-copy to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo_new
-similarity index 99%
-copy from foo
-copy to foo_new
-END
- copiedFromPath => "foo",
- indexPath => "foo_new",
- isCopyWithChanges => 1,
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{ # New test
- diffName => "rename (with similarity index 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 100%
-rename from foo
-rename to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo_new
-similarity index 100%
-rename from foo
-rename to foo_new
-END
- copiedFromPath => "foo",
- indexPath => "foo_new",
- shouldDeleteSource => 1,
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{
- diffName => "rename file which have space characters in path using --no-prefix (with similarity index 100%)",
- inputText => <<'END',
-diff --git directory/foo bar.h directory/foo baz.h
-similarity index 100%
-rename from directory/foo bar.h
-rename to directory/foo baz.h
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: directory/foo baz.h
-similarity index 100%
-rename from directory/foo bar.h
-rename to directory/foo baz.h
-END
- copiedFromPath => "directory/foo bar.h",
- indexPath => "directory/foo baz.h",
- shouldDeleteSource => 1,
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-{ # New test
- diffName => "rename (with similarity index < 100%)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-similarity index 99%
-rename from foo
-rename to foo_new
-index 1e50d1d..1459d21 100644
---- a/foo
-+++ b/foo_new
-@@ -15,3 +15,4 @@ release r deployment dep deploy:
- line1
- line2
- line3
-+line4
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo_new
-similarity index 99%
-rename from foo
-rename to foo_new
-index 1e50d1d..1459d21 100644
---- foo_new\t(revision 0)
-+++ foo_new\t(working copy)
-END
- copiedFromPath => "foo",
- indexPath => "foo_new",
- isCopyWithChanges => 1,
- shouldDeleteSource => 1,
-},
-"@@ -15,3 +15,4 @@ release r deployment dep deploy:\n"],
- expectedNextLine => " line1\n",
-},
-{ # New test
- diffName => "rename (with executable bit change)",
- inputText => <<'END',
-diff --git a/foo b/foo_new
-old mode 100644
-new mode 100755
-similarity index 100%
-rename from foo
-rename to foo_new
-diff --git a/bar b/bar
-index d45dd40..3494526 100644
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo_new
-old mode 100644
-new mode 100755
-similarity index 100%
-rename from foo
-rename to foo_new
-END
- copiedFromPath => "foo",
- executableBitDelta => 1,
- indexPath => "foo_new",
- isCopyWithChanges => 1,
- shouldDeleteSource => 1,
-},
-"diff --git a/bar b/bar\n"],
- expectedNextLine => "index d45dd40..3494526 100644\n",
-},
-####
-# Binary file test cases
-##
-{
- # New test case
- diffName => "New binary file",
- inputText => <<'END',
-diff --git a/foo.gif b/foo.gif
-new file mode 100644
-index 0000000000000000000000000000000000000000..64a9532e7794fcd791f6f12157406d9060151690
-GIT binary patch
-literal 7
-OcmYex&reDa;sO8*F9L)B
-
-literal 0
-HcmV?d00001
-
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo.gif
-new file mode 100644
-index 0000000000000000000000000000000000000000..64a9532e7794fcd791f6f12157406d9060151690
-GIT binary patch
-END
- indexPath => "foo.gif",
- isBinary => 1,
- isNew => 1,
-},
-"literal 7\n"],
- expectedNextLine => "OcmYex&reDa;sO8*F9L)B\n",
-},
-{
- # New test case
- diffName => "Deleted binary file",
- inputText => <<'END',
-diff --git a/foo.gif b/foo.gif
-deleted file mode 100644
-index 323fae0..0000000
-GIT binary patch
-literal 0
-HcmV?d00001
-
-literal 7
-OcmYex&reDa;sO8*F9L)B
-
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo.gif
-deleted file mode 100644
-index 323fae0..0000000
-GIT binary patch
-END
- indexPath => "foo.gif",
- isBinary => 1,
- isDeletion => 1,
-},
-"literal 0\n"],
- expectedNextLine => "HcmV?d00001\n",
-},
-####
-# Executable bit test cases
-##
-{
- # New test case
- diffName => "Modified executable file",
- inputText => <<'END',
-diff --git a/foo b/foo
-index d03e242..435ad3a 100755
---- a/foo
-+++ b/foo
-@@ -1 +1 @@
--file contents
-+new file contents
-
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo
-index d03e242..435ad3a 100755
---- foo\t(revision 0)
-+++ foo\t(working copy)
-END
- indexPath => "foo",
-},
-"@@ -1 +1 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{
- # New test case
- diffName => "Making file executable (last diff)",
- inputText => <<'END',
-diff --git a/foo.exe b/foo.exe
-old mode 100644
-new mode 100755
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo.exe
-old mode 100644
-new mode 100755
-END
- executableBitDelta => 1,
- indexPath => "foo.exe",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test case
- diffName => "Making file executable (not last diff)",
- inputText => <<'END',
-diff --git a/foo.exe b/foo.exe
-old mode 100644
-new mode 100755
-diff --git a/another_file.txt b/another_file.txt
-index d03e242..435ad3a 100755
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: foo.exe
-old mode 100644
-new mode 100755
-END
- executableBitDelta => 1,
- indexPath => "foo.exe",
-},
-"diff --git a/another_file.txt b/another_file.txt\n"],
- expectedNextLine => "index d03e242..435ad3a 100755\n",
-},
-{
- # New test case
- diffName => "New executable file",
- inputText => <<'END',
-diff --git a/foo b/foo
-new file mode 100755
-index 0000000..d03e242
---- /dev/null
-+++ b/foo
-@@ -0,0 +1 @@
-+file contents
-
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo
-new file mode 100755
-index 0000000..d03e242
---- foo\t(revision 0)
-+++ foo\t(working copy)
-END
- executableBitDelta => 1,
- indexPath => "foo",
- isNew => 1,
-},
-"@@ -0,0 +1 @@\n"],
- expectedNextLine => "+file contents\n",
-},
-{
- # New test case
- diffName => "Deleted executable file",
- inputText => <<'END',
-diff --git a/foo b/foo
-deleted file mode 100755
-index d03e242..0000000
---- a/foo
-+++ /dev/null
-@@ -1 +0,0 @@
--file contents
-
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: foo
-deleted file mode 100755
-index d03e242..0000000
---- foo\t(revision 0)
-+++ foo\t(working copy)
-END
- executableBitDelta => -1,
- indexPath => "foo",
- isDeletion => 1,
-},
-"@@ -1 +0,0 @@\n"],
- expectedNextLine => "-file contents\n",
-},
-{
- # svn-apply rejected https://bug-111042-attachments.webkit.org/attachment.cgi?id=190663
- diffName => "Modified file which have space characters in path. svn-apply rejected attachment #190663.",
- inputText => <<'END',
-diff --git a/WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme b/WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-index 72d60effb9bbba0520e520ec3c1aa43f348c6997..b7924b96d5978c1ad1053dca7e554023235d9a16 100644
---- a/WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-+++ b/WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-@@ -161,7 +161,7 @@
- <EnvironmentVariables>
- <EnvironmentVariable
- key = "DYLD_INSERT_LIBRARIES"
-- value = "$(BUILT_PRODUCTS_DIR)/WebProcessShim.dylib"
-+ value = "$(BUILT_PRODUCTS_DIR)/SecItemShim.dylib"
- isEnabled = "YES">
- </EnvironmentVariable>
- </EnvironmentVariables>
-END
- expectedReturn => [
-{
- svnConvertedText => <<"END",
-Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-index 72d60effb9bbba0520e520ec3c1aa43f348c6997..b7924b96d5978c1ad1053dca7e554023235d9a16 100644
---- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme\t(revision 0)
-+++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme\t(working copy)
-END
- indexPath => "WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme",
-},
-"@@ -161,7 +161,7 @@\n"],
- expectedNextLine => " <EnvironmentVariables>\n",
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseGitDiffHeader(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseGitDiffHeader($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl
deleted file mode 100644
index 8aae3d4bb..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parsePatch.pl
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
-
-# Unit tests of parseDiffHeader().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @diffHashRefKeys = ( # The hash reference keys to check per diff.
- "copiedFromPath",
- "indexPath",
- "sourceRevision",
- "svnConvertedText",
-);
-
-# New test
-my $testNameStart = "parsePatch(): [SVN: Rename] ";
-my $patch = <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-Index: Makefile_new
-===================================================================
---- Makefile_new (revision 53131) (from Makefile:53131)
-+++ Makefile_new (working copy)
-@@ -0,0 +1,1 @@
-+MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-END
-
-my @expectedDiffHashRefs = (
-{
- svnConvertedText => <<'END',
-Index: Makefile
-===================================================================
---- Makefile (revision 53131)
-+++ Makefile (working copy)
-@@ -1,1 +0,0 @@
--MODULES = JavaScriptCore JavaScriptGlue WebCore WebKit WebKitTools
-END
- copiedFromPath => undef,
- indexPath => "Makefile",
- sourceRevision => "53131",
-},
-{
- copiedFromPath => "Makefile",
- indexPath => "Makefile_new",
- sourceRevision => "53131",
-},
-);
-
-plan(tests => @expectedDiffHashRefs * @diffHashRefKeys);
-
-my $fileHandle;
-open($fileHandle, "<", \$patch);
-
-my @gotDiffHashRefs = parsePatch($fileHandle);
-
-my $i = 0;
-foreach my $expectedDiffHashRef (@expectedDiffHashRefs) {
-
- my $gotDiffHashRef = $gotDiffHashRefs[$i++];
-
- foreach my $diffHashRefKey (@diffHashRefKeys) {
- my $testName = "${testNameStart}[diff $i] key=\"$diffHashRefKey\"";
- is($gotDiffHashRef->{$diffHashRefKey}, $expectedDiffHashRef->{$diffHashRefKey}, $testName);
- }
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl
deleted file mode 100644
index 7c3d98c9a..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffFooter.pl
+++ /dev/null
@@ -1,443 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) Research in Motion Limited 2010. All Rights Reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
-#
-# 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 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 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.
-
-# Unit tests of parseSvnDiffProperties().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-####
-# Simple test cases
-##
-{
- # New test
- diffName => "simple: add svn:executable",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: add svn:mergeinfo",
- inputText => <<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Added: svn:mergeinfo
- Merged /trunk/Makefile:r33020
-END
- expectedReturn => [
-{
- propertyPath => "Makefile",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:mergeinfo",
- inputText => <<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Deleted: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
-END
- expectedReturn => [
-{
- propertyPath => "Makefile",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: modified svn:mergeinfo",
- inputText => <<'END',
-Property changes on: Makefile
-___________________________________________________________________
-Modified: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
- Merged /trunk/Makefile:r41697
-END
- expectedReturn => [
-{
- propertyPath => "Makefile",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:executable",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Deleted: svn:executable
- - *
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => -1,
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:executable using SVN 1.4 syntax",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Name: svn:executable
- - *
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => -1,
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Property value followed by empty line and start of next diff
-##
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next diff",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-
-Index: Makefile.shared
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Index: Makefile.shared\n",
-},
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next property diff",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-
-Property changes on: Makefile.shared
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Property changes on: Makefile.shared\n",
-},
-####
-# Property value followed by empty line and start of the binary contents
-##
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of binary contents",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-{
- # New test
- diffName => "custom property followed by svn:executable, empty line and start of binary contents",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: documentation
- + This is an example sentence.
-Added: svn:executable
- + *
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-####
-# Successive properties
-##
-{
- # New test
- diffName => "svn:executable followed by custom property",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-Added: documentation
- + This is an example sentence.
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "svn:executable followed by custom property using SVN 1.7 syntax",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
-## -0,0 +1 ##
-+*
-\ No newline at end of property
-Added: documentation
-## -0,0 +1 ##
-+This is an example sentence.
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "svn:executable followed by custom property without newline using SVN 1.7 syntax",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
-## -0,0 +1 ##
-+*
-\ No newline at end of property
-Added: documentation
-## -0,0 +1 ##
-+This is an example sentence.
-\ No newline at end of property
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "custom property followed by svn:executable",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: documentation
- + This is an example sentence.
-Added: svn:executable
- + *
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Successive properties followed by empty line and start of next diff
-##
-{
- # New test
- diffName => "custom property followed by svn:executable, empty line and start of next property diff",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: documentation
- + This is an example sentence.
-Added: svn:executable
- + *
-
-Property changes on: Makefile.shared
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Property changes on: Makefile.shared\n",
-},
-{
- # New test
- diffName => "custom property followed by svn:executable, empty line and start of next index diff",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: documentation
- + This is an example sentence.
-Added: svn:executable
- + *
-
-Index: Makefile.shared
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => 1,
-},
-"\n"],
- expectedNextLine => "Index: Makefile.shared\n",
-},
-####
-# Custom properties
-##
-# FIXME: We do not support anything other than the svn:executable property.
-# We should add support for handling other properties.
-{
- # New test
- diffName => "simple: custom property",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Name: documentation
- + This is an example sentence.
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "custom property followed by custom property",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: copyright
- + Copyright (C) Research in Motion Limited 2010. All Rights Reserved.
-Added: documentation
- + This is an example sentence.
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Malformed property diffs
-##
-# We shouldn't encounter such diffs in practice.
-{
- # New test
- diffName => "svn:executable followed by custom property and svn:executable",
- inputText => <<'END',
-Property changes on: FileA
-___________________________________________________________________
-Added: svn:executable
- + *
-Added: documentation
- + This is an example sentence.
-Deleted: svn:executable
- - *
-END
- expectedReturn => [
-{
- propertyPath => "FileA",
- executableBitDelta => -1,
-},
-undef],
- expectedNextLine => undef,
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseSvnDiffProperties(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseSvnDiffProperties($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl
deleted file mode 100644
index fc357c901..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnDiffHeader.pl
+++ /dev/null
@@ -1,288 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
-#
-# 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 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 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.
-
-# Unit tests of parseSvnDiffHeader().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-# The array of test cases.
-my @testCaseHashRefs = (
-{
- # New test
- diffName => "simple diff",
- inputText => <<'END',
-Index: WebKitTools/Scripts/VCSUtils.pm
-===================================================================
---- WebKitTools/Scripts/VCSUtils.pm (revision 53004)
-+++ WebKitTools/Scripts/VCSUtils.pm (working copy)
-@@ -32,6 +32,7 @@ use strict;
- use warnings;
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: WebKitTools/Scripts/VCSUtils.pm
-===================================================================
---- WebKitTools/Scripts/VCSUtils.pm (revision 53004)
-+++ WebKitTools/Scripts/VCSUtils.pm (working copy)
-END
- indexPath => "WebKitTools/Scripts/VCSUtils.pm",
- sourceRevision => "53004",
-},
-"@@ -32,6 +32,7 @@ use strict;\n"],
- expectedNextLine => " use warnings;\n",
-},
-{
- # New test
- diffName => "new file",
- inputText => <<'END',
-Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
-===================================================================
---- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
-+++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
-@@ -0,0 +1,262 @@
-+#!/usr/bin/perl -w
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl
-===================================================================
---- WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
-+++ WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl (revision 0)
-END
- indexPath => "WebKitTools/Scripts/webkitperl/VCSUtils_unittest/parseDiffHeader.pl",
- isNew => 1,
-},
-"@@ -0,0 +1,262 @@\n"],
- expectedNextLine => "+#!/usr/bin/perl -w\n",
-},
-{
- # New test
- diffName => "new file with spaces in its name",
- inputText => <<'END',
-Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-===================================================================
---- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0)
-+++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0)
-@@ -0,0 +1,8 @@
-+<?xml version="1.0" encoding="UTF-8"?>
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme
-===================================================================
---- WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0)
-+++ WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme (revision 0)
-END
- indexPath => "WebKit.xcworkspace/xcshareddata/xcschemes/All Source (target WebProcess).xcscheme",
- isNew => 1,
-},
-"@@ -0,0 +1,8 @@\n"],
- expectedNextLine => "+<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n",
-},
-{
- # New test
- diffName => "copied file",
- inputText => <<'END',
-Index: index_path.py
-===================================================================
---- index_path.py (revision 53048) (from copied_from_path.py:53048)
-+++ index_path.py (working copy)
-@@ -0,0 +1,7 @@
-+# Python file...
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: index_path.py
-===================================================================
---- index_path.py (revision 53048) (from copied_from_path.py:53048)
-+++ index_path.py (working copy)
-END
- copiedFromPath => "copied_from_path.py",
- indexPath => "index_path.py",
- sourceRevision => 53048,
-},
-"@@ -0,0 +1,7 @@\n"],
- expectedNextLine => "+# Python file...\n",
-},
-{
- # New test
- diffName => "contains \\r\\n lines",
- inputText => <<END, # No single quotes to allow interpolation of "\r"
-Index: index_path.py\r
-===================================================================\r
---- index_path.py (revision 53048)\r
-+++ index_path.py (working copy)\r
-@@ -0,0 +1,7 @@\r
-+# Python file...\r
-END
- expectedReturn => [
-{
- svnConvertedText => <<END, # No single quotes to allow interpolation of "\r"
-Index: index_path.py\r
-===================================================================\r
---- index_path.py (revision 53048)\r
-+++ index_path.py (working copy)\r
-END
- indexPath => "index_path.py",
- sourceRevision => 53048,
-},
-"@@ -0,0 +1,7 @@\r\n"],
- expectedNextLine => "+# Python file...\r\n",
-},
-{
- # New test
- diffName => "contains path corrections",
- inputText => <<'END',
-Index: index_path.py
-===================================================================
---- bad_path (revision 53048) (from copied_from_path.py:53048)
-+++ bad_path (working copy)
-@@ -0,0 +1,7 @@
-+# Python file...
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: index_path.py
-===================================================================
---- index_path.py (revision 53048) (from copied_from_path.py:53048)
-+++ index_path.py (working copy)
-END
- copiedFromPath => "copied_from_path.py",
- indexPath => "index_path.py",
- sourceRevision => 53048,
-},
-"@@ -0,0 +1,7 @@\n"],
- expectedNextLine => "+# Python file...\n",
-},
-####
-# Binary test cases
-##
-{
- # New test
- diffName => "binary file",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-END
- indexPath => "test_file.swf",
- isBinary => 1,
-},
-"Property changes on: test_file.swf\n"],
- expectedNextLine => "___________________________________________________________________\n",
-},
-{
- # New test
- diffName => "binary file using SVN 1.7 syntax",
- inputText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-Index: test_file.swf
-===================================================================
---- test_file.swf
-+++ test_file.swf
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Added: svn:mime-type
-## -0,0 +1 ##
-+application/octet-stream
-\ No newline at end of property
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- svnConvertedText => <<'END',
-Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-Index: test_file.swf
-===================================================================
---- test_file.swf
-+++ test_file.swf
-END
- indexPath => "test_file.swf",
- isBinary => 1,
-},
-"\n"],
- expectedNextLine => "Property changes on: test_file.swf\n",
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseSvnDiffHeader(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseSvnDiffHeader($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl
deleted file mode 100644
index a613bde76..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnProperty.pl
+++ /dev/null
@@ -1,805 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) Research in Motion Limited 2010. All Rights Reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
-#
-# 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 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 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.
-
-# Unit tests of parseSvnProperty().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-####
-# Simple test cases
-##
-{
- # New test
- diffName => "simple: add svn:executable",
- inputText => <<'END',
-Added: svn:executable
- + *
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:executable",
- inputText => <<'END',
-Deleted: svn:executable
- - *
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => -1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: add svn:mergeinfo",
- inputText => <<'END',
-Added: svn:mergeinfo
- Merged /trunk/Makefile:r33020
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => 1,
- value => "/trunk/Makefile:r33020",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:mergeinfo",
- inputText => <<'END',
-Deleted: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => -1,
- value => "/trunk/Makefile:r33020",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: modified svn:mergeinfo",
- inputText => <<'END',
-Modified: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
- Merged /trunk/Makefile:r41697
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => 1,
- value => "/trunk/Makefile:r41697",
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Using SVN 1.4 syntax
-##
-{
- # New test
- diffName => "simple: modified svn:mergeinfo using SVN 1.4 syntax",
- inputText => <<'END',
-Name: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
- Merged /trunk/Makefile:r41697
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => 1,
- value => "/trunk/Makefile:r41697",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:executable using SVN 1.4 syntax",
- inputText => <<'END',
-Name: svn:executable
- - *
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => -1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: add svn:executable using SVN 1.4 syntax",
- inputText => <<'END',
-Name: svn:executable
- + *
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Using SVN 1.7 syntax
-##
-{
- # New test
- diffName => "simple: add svn:executable using SVN 1.7 syntax",
- inputText => <<'END',
-Added: svn:executable
-## -0,0 +1 ##
-+*
-\ No newline at end of property
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "simple: delete svn:executable using SVN 1.7 syntax",
- inputText => <<'END',
-Deleted: svn:executable
-## -1 +0,0 ##
--*
-\ No newline at end of property
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => -1,
- value => "*",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "add svn:mime-type and add svn:executable using SVN 1.7 syntax",
- inputText => <<'END',
-Added: svn:mime-type
-## -0,0 +1 ##
-+image/png
-\ No newline at end of property
-Added: svn:executable
-## -0,0 +1 ##
-+*
-\ No newline at end of property
-END
- expectedReturn => [
-{
- name => "svn:mime-type",
- propertyChangeDelta => 1,
- value => "image/png",
-},
-"Added: svn:executable\n"],
- expectedNextLine => "## -0,0 +1 ##\n",
-},
-####
-# Property value followed by empty line and start of next diff
-##
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next diff",
- inputText => <<'END',
-Added: svn:executable
- + *
-
-Index: Makefile.shared
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\n"],
- expectedNextLine => "Index: Makefile.shared\n",
-},
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Added: svn:executable
- + *
-
-Index: Makefile.shared
-END
-),
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\r\n"],
- expectedNextLine => "Index: Makefile.shared\r\n",
-},
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next property diff",
- inputText => <<'END',
-Added: svn:executable
- + *
-
-Property changes on: Makefile.shared
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\n"],
- expectedNextLine => "Property changes on: Makefile.shared\n",
-},
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of next property diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Added: svn:executable
- + *
-
-Property changes on: Makefile.shared
-END
-),
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\r\n"],
- expectedNextLine => "Property changes on: Makefile.shared\r\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of next diff",
- inputText => <<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Index: Makefile.shared
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\nlong sentence that spans\nmultiple lines.",
-},
-"\n"],
- expectedNextLine => "Index: Makefile.shared\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of next diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Index: Makefile.shared
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\r\nlong sentence that spans\r\nmultiple lines.",
-},
-"\r\n"],
- expectedNextLine => "Index: Makefile.shared\r\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of next property diff",
- inputText => <<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Property changes on: Makefile.shared
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\nlong sentence that spans\nmultiple lines.",
-},
-"\n"],
- expectedNextLine => "Property changes on: Makefile.shared\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of next property diff using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Property changes on: Makefile.shared
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\r\nlong sentence that spans\r\nmultiple lines.",
-},
-"\r\n"],
- expectedNextLine => "Property changes on: Makefile.shared\r\n",
-},
-####
-# Property value followed by empty line and start of binary patch
-##
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of binary patch",
- inputText => <<'END',
-Added: svn:executable
- + *
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-{
- # New test
- diffName => "add svn:executable, followed by empty line and start of binary patch using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Added: svn:executable
- + *
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"\r\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of binary patch",
- inputText => <<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\nlong sentence that spans\nmultiple lines.",
-},
-"\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by empty line and start of binary patch using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\r\nlong sentence that spans\r\nmultiple lines.",
-},
-"\r\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n",
-},
-{
- # New test
- diffName => "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch",
- inputText => <<'END',
-Modified: documentation
- - A
-long sentence that spans
-multiple lines.
- + Another
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "Another\nlong sentence that spans\nmultiple lines.",
-},
-"\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-{
- # New test
- diffName => "multi-line '-' change, followed by multi-line '+' change, empty line, and start of binary patch using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Modified: documentation
- - A
-long sentence that spans
-multiple lines.
- + Another
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "Another\r\nlong sentence that spans\r\nmultiple lines.",
-},
-"\r\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n",
-},
-####
-# Successive properties
-##
-{
- # New test
- diffName => "single-line '+' change followed by custom property with single-line '+' change",
- inputText => <<'END',
-Added: svn:executable
- + *
-Added: documentation
- + A sentence.
-END
- expectedReturn => [
-{
- name => "svn:executable",
- propertyChangeDelta => 1,
- value => "*",
-},
-"Added: documentation\n"],
- expectedNextLine => " + A sentence.\n",
-},
-{
- # New test
- diffName => "multi-line '+' change, followed by svn:executable",
- inputText => <<'END',
-Name: documentation
- + A
-long sentence that spans
-multiple lines.
-Name: svn:executable
- + *
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A\nlong sentence that spans\nmultiple lines.",
-},
-"Name: svn:executable\n"],
- expectedNextLine => " + *\n",
-},
-{
- # New test
- diffName => "multi-line '-' change, followed by multi-line '+' change and add svn:executable",
- inputText => <<'END',
-Modified: documentation
- - A
-long sentence that spans
-multiple lines.
- + Another
-long sentence that spans
-multiple lines.
-Added: svn:executable
- + *
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "Another\nlong sentence that spans\nmultiple lines.",
-},
-"Added: svn:executable\n"],
- expectedNextLine => " + *\n",
-},
-{
- # New test
- diffName => "'Merged' change followed by 'Merged' change",
- inputText => <<'END',
-Added: svn:mergeinfo
- Merged /trunk/Makefile:r33020
- Merged /trunk/Makefile.shared:r58350
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => 1,
- value => "/trunk/Makefile.shared:r58350",
-},
-undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Reverse-merged' change followed by 'Reverse-merged' change",
- inputText => <<'END',
-Deleted: svn:mergeinfo
- Reverse-merged /trunk/Makefile:r33020
- Reverse-merged /trunk/Makefile.shared:r58350
-END
- expectedReturn => [
-{
- name => "svn:mergeinfo",
- propertyChangeDelta => -1,
- value => "/trunk/Makefile.shared:r58350",
-},
-undef],
- expectedNextLine => undef,
-},
-####
-# Property values with trailing new lines.
-##
-# FIXME: We do not support property values with trailing new lines, since it is difficult to
-# disambiguate them from the empty line that preceeds the contents of a binary patch as
-# in the test case (above): "multi-line '+' change, followed by empty line and start of binary patch".
-{
- # New test
- diffName => "single-line '+' with trailing new line",
- inputText => <<'END',
-Added: documentation
- + A sentence.
-
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A sentence.",
-},
-"\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '+' with trailing new line using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Added: documentation
- + A sentence.
-
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A sentence.",
-},
-"\r\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '+' with trailing new line, followed by empty line and start of binary patch",
- inputText => <<'END',
-Added: documentation
- + A sentence.
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A sentence.",
-},
-"\n"],
- expectedNextLine => "\n",
-},
-{
- # New test
- diffName => "single-line '+' with trailing new line, followed by empty line and start of binary patch using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Added: documentation
- + A sentence.
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => 1,
- value => "A sentence.",
-},
-"\r\n"],
- expectedNextLine => "\r\n",
-},
-{
- # New test
- diffName => "single-line '-' change with trailing new line, and single-line '+' change",
- inputText => <<'END',
-Modified: documentation
- - A long sentence.
-
- + A sentence.
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => -1, # Since we only interpret the '-' property.
- value => "A long sentence.",
-},
-"\n"],
- expectedNextLine => " + A sentence.\n",
-},
-{
- # New test
- diffName => "single-line '-' change with trailing new line, and single-line '+' change using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Modified: documentation
- - A long sentence.
-
- + A sentence.
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => -1, # Since we only interpret the '-' property.
- value => "A long sentence.",
-},
-"\r\n"],
- expectedNextLine => " + A sentence.\r\n",
-},
-{
- # New test
- diffName => "multi-line '-' change with trailing new line, and multi-line '+' change",
- inputText => <<'END',
-Modified: documentation
- - A
-long sentence that spans
-multiple lines.
-
- + Another
-long sentence that spans
-multiple lines.
-END
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => -1, # Since we only interpret the '-' property.
- value => "A\nlong sentence that spans\nmultiple lines.",
-},
-"\n"],
- expectedNextLine => " + Another\n",
-},
-{
- # New test
- diffName => "multi-line '-' change with trailing new line, and multi-line '+' change using Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
-Modified: documentation
- - A
-long sentence that spans
-multiple lines.
-
- + Another
-long sentence that spans
-multiple lines.
-END
-),
- expectedReturn => [
-{
- name => "documentation",
- propertyChangeDelta => -1, # Since we only interpret the '-' property.
- value => "A\r\nlong sentence that spans\r\nmultiple lines.",
-},
-"\r\n"],
- expectedNextLine => " + Another\r\n",
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseSvnProperty(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseSvnProperty($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl
deleted file mode 100644
index 33da14abf..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/parseSvnPropertyValue.pl
+++ /dev/null
@@ -1,257 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) Research in Motion Limited 2010. All Rights Reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.com)
-#
-# 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 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 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.
-
-# Unit tests of parseSvnPropertyValue().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-{
- # New test
- diffName => "singe-line '+' change",
- inputText => <<'END',
- + *
-END
- expectedReturn => ["*", undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '-' change",
- inputText => <<'END',
- - *
-END
- expectedReturn => ["*", undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Merged' change",
- inputText => <<'END',
- Merged /trunk/Makefile:r33020
-END
- expectedReturn => ["/trunk/Makefile:r33020", undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Reverse-merged' change",
- inputText => <<'END',
- Reverse-merged /trunk/Makefile:r33020
-END
- expectedReturn => ["/trunk/Makefile:r33020", undef],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '-' change followed by empty line with Unix line endings",
- inputText => <<'END',
- - *
-
-END
- expectedReturn => ["*", "\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '-' change followed by empty line with Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
- - *
-
-END
-),
- expectedReturn => ["*", "\r\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '-' change followed by the next property",
- inputText => <<'END',
- - *
-Deleted: svn:executable
-END
- expectedReturn => ["*", "Deleted: svn:executable\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "multi-line '+' change and start of binary patch",
- inputText => <<'END',
- + A
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
- expectedReturn => ["A\nlong sentence that spans\nmultiple lines.", "\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\n",
-},
-{
- # New test
- diffName => "multi-line '+' change and start of binary patch with Windows line endings",
- inputText => toWindowsLineEndings(<<'END',
- + A
-long sentence that spans
-multiple lines.
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-END
-),
- expectedReturn => ["A\r\nlong sentence that spans\r\nmultiple lines.", "\r\n"],
- expectedNextLine => "Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==\r\n",
-},
-{
- # New test
- diffName => "multi-line '-' change followed by '+' single-line change",
- inputText => <<'END',
- - A
-long sentence that spans
-multiple lines.
- + A single-line.
-END
- expectedReturn => ["A\nlong sentence that spans\nmultiple lines.", " + A single-line.\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "multi-line '-' change followed by the next property",
- inputText => <<'END',
- - A
-long sentence that spans
-multiple lines.
-Added: svn:executable
-END
- expectedReturn => ["A\nlong sentence that spans\nmultiple lines.", "Added: svn:executable\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "multi-line '-' change followed by '+' multi-line change",
- inputText => <<'END',
- - A
-long sentence that spans
-multiple lines.
- + Another
-long sentence that spans
-multiple lines.
-END
- expectedReturn => ["A\nlong sentence that spans\nmultiple lines.", " + Another\n"],
- expectedNextLine => "long sentence that spans\n",
-},
-{
- # New test
- diffName => "'Reverse-merged' change followed by 'Merge' change",
- inputText => <<'END',
- Reverse-merged /trunk/Makefile:r33020
- Merged /trunk/Makefile:r41697
-END
- expectedReturn => ["/trunk/Makefile:r33020", " Merged /trunk/Makefile:r41697\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Merged' change followed by 'Merge' change",
- inputText => <<'END',
- Merged /trunk/Makefile:r33020
- Merged /trunk/Makefile.shared:r58350
-END
- expectedReturn => ["/trunk/Makefile:r33020", " Merged /trunk/Makefile.shared:r58350\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Reverse-merged' change followed by 'Reverse-merged' change",
- inputText => <<'END',
- Reverse-merged /trunk/Makefile:r33020
- Reverse-merged /trunk/Makefile.shared:r58350
-END
- expectedReturn => ["/trunk/Makefile:r33020", " Reverse-merged /trunk/Makefile.shared:r58350\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "'Reverse-merged' change followed by 'Reverse-merged' change followed by 'Merged' change",
- inputText => <<'END',
- Reverse-merged /trunk/Makefile:r33020
- Reverse-merged /trunk/Makefile.shared:r58350
- Merged /trunk/ChangeLog:r64190
-END
- expectedReturn => ["/trunk/Makefile:r33020", " Reverse-merged /trunk/Makefile.shared:r58350\n"],
- expectedNextLine => " Merged /trunk/ChangeLog:r64190\n",
-},
-##
-# Using SVN 1.7 syntax
-##
-{
- # New test
- diffName => "singe-line '+' change using SVN 1.7 syntax",
- inputText => <<'END',
-+*
-\ No newline at end of property
-END
- expectedReturn => ["*", "\\ No newline at end of property\n"],
- expectedNextLine => undef,
-},
-{
- # New test
- diffName => "single-line '-' change using SVN 1.7 syntax",
- inputText => <<'END',
--*
-\ No newline at end of property
-END
- expectedReturn => ["*", "\\ No newline at end of property\n"],
- expectedNextLine => undef,
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 2 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "parseSvnPropertyValue(): $testCase->{diffName}: comparing";
-
- my $fileHandle;
- open($fileHandle, "<", \$testCase->{inputText});
- my $line = <$fileHandle>;
-
- my @got = VCSUtils::parseSvnPropertyValue($fileHandle, $line);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply(\@got, $expectedReturn, "$testNameStart return value.");
-
- my $gotNextLine = <$fileHandle>;
- is($gotNextLine, $testCase->{expectedNextLine}, "$testNameStart next read line.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl
deleted file mode 100644
index a7ae80775..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/prepareParsedPatch.pl
+++ /dev/null
@@ -1,136 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-# Unit tests of prepareParsedPatch().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my $diffHashRef1 = { # not a copy, no source revision
- copiedFromPath => undef,
- indexPath => "indexPath1",
- sourceRevision => undef,
- svnConvertedText => "diff1",
-};
-my $diffHashRef2 = { # not a copy, has source revision
- copiedFromPath => undef,
- indexPath => "indexPath2",
- sourceRevision => 20,
- svnConvertedText => "diff2",
-};
-my $diffHashRef3 = { # a copy (copies always have source revision)
- copiedFromPath => "sourcePath3",
- indexPath => "indexPath2", # Deliberately choosing same as $diffHashRef2
- sourceRevision => 3,
- svnConvertedText => "diff3",
-};
-
-my @testCases = (
-{
- # New test
- testName => "zero diffs: empty array",
- diffHashRefsInput => [],
- expected => {
- copyDiffHashRefs => [],
- nonCopyDiffHashRefs => [],
- sourceRevisionHash => {},
- },
-},
-{
- # New test
- testName => "one diff: non-copy, no revision",
- diffHashRefsInput => [$diffHashRef1],
- expected => {
- copyDiffHashRefs => [],
- nonCopyDiffHashRefs => [$diffHashRef1],
- sourceRevisionHash => {},
- },
-},
-{
- # New test
- testName => "one diff: non-copy, has revision",
- diffHashRefsInput => [$diffHashRef2],
- expected => {
- copyDiffHashRefs => [],
- nonCopyDiffHashRefs => [$diffHashRef2],
- sourceRevisionHash => {
- "indexPath2" => 20,
- }
- },
-},
-{
- # New test
- testName => "one diff: copy (has revision)",
- diffHashRefsInput => [$diffHashRef3],
- expected => {
- copyDiffHashRefs => [$diffHashRef3],
- nonCopyDiffHashRefs => [],
- sourceRevisionHash => {
- "sourcePath3" => 3,
- }
- },
-},
-{
- # New test
- testName => "two diffs: two non-copies",
- diffHashRefsInput => [$diffHashRef1, $diffHashRef2],
- expected => {
- copyDiffHashRefs => [],
- nonCopyDiffHashRefs => [$diffHashRef1, $diffHashRef2],
- sourceRevisionHash => {
- "indexPath2" => 20,
- }
- },
-},
-{
- # New test
- testName => "two diffs: non-copy and copy",
- diffHashRefsInput => [$diffHashRef2, $diffHashRef3],
- expected => {
- copyDiffHashRefs => [$diffHashRef3],
- nonCopyDiffHashRefs => [$diffHashRef2],
- sourceRevisionHash => {
- "sourcePath3" => 3,
- "indexPath2" => 20,
- }
- },
-},
-);
-
-my $testCasesCount = @testCases;
-plan(tests => $testCasesCount);
-
-foreach my $testCase (@testCases) {
- my $testName = $testCase->{testName};
- my @diffHashRefs = @{$testCase->{diffHashRefsInput}};
- my $expected = $testCase->{expected};
-
- my $got = prepareParsedPatch(0, @diffHashRefs);
-
- is_deeply($got, $expected, $testName);
-}
-
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl
deleted file mode 100644
index 688021438..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/removeEOL.pl
+++ /dev/null
@@ -1,56 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) Research In Motion Limited 2010. 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 Research In Motion Limited 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.
-
-# Unit tests of VCSUtils::removeEOL().
-
-use Test::Simple tests => 5;
-use VCSUtils;
-
-my $title;
-
-# New test
-$title = "removeEOL: Undefined argument.";
-ok(removeEOL(undef) eq "", $title);
-
-# New test
-$title = "removeEOL: Line with Windows line ending.";
-ok(removeEOL("This line ends with a Windows line ending.\r\n") eq "This line ends with a Windows line ending.", $title);
-
-# New test
-$title = "removeEOL: Line with Unix line ending.";
-ok(removeEOL("This line ends with a Unix line ending.\n") eq "This line ends with a Unix line ending.", $title);
-
-# New test
-$title = "removeEOL: Line with Mac line ending.";
-ok(removeEOL("This line ends with a Mac line ending.\r") eq "This line ends with a Mac line ending.", $title);
-
-# New test
-$title = "removeEOL: Line with a mix of line endings.";
-ok(removeEOL("This line contains a mix of line endings.\r\n\r\n\r\r\n\n\n\n") eq "This line contains a mix of line endings.", $title);
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl
deleted file mode 100644
index 45140746d..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/runCommand.pl
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2012 Daniel Bates (dbates@intudata.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 INC. 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 INC. 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.
-
-# Unit tests of VCSUtils::runCommand().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-use constant ENOENT => 2; # See <errno.h>
-
-# The array of test cases.
-my @testCaseHashRefs = (
-{
- # New test
- testName => "Simple",
- inputArgs => ["echo", "hello"],
- expectedReturn => {
- exitStatus => 0,
- stdout => "hello\n"
- }
-},
-{
- # New test
- testName => "Multiple commands",
- inputArgs => ["echo", "first-command;echo second-command"],
- expectedReturn => {
- exitStatus => 0,
- stdout => "first-command;echo second-command\n"
- }
-},
-{
- # New test
- testName => "Non-existent command",
- inputArgs => ["/usr/bin/non-existent-command"],
- expectedReturn => {
- exitStatus => ENOENT
- }
-}
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "runCommand(): $testCase->{testName}: comparing";
-
- my $got = VCSUtils::runCommand(@{$testCase->{inputArgs}});
- my $expectedReturn = $testCase->{expectedReturn};
-
- is_deeply($got, $expectedReturn, "$testNameStart return value.");
-}
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl
deleted file mode 100644
index 5acc517d7..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/runPatchCommand.pl
+++ /dev/null
@@ -1,92 +0,0 @@
-#!/usr/bin/perl
-#
-# Copyright (C) 2009, 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-# Unit tests of VCSUtils::runPatchCommand().
-
-use Test::Simple tests => 4;
-use VCSUtils;
-
-# New test
-$title = "runPatchCommand: Unsuccessful patch, forcing.";
-
-# Since $patch has no "Index:" path, passing this to runPatchCommand
-# should not affect any files.
-my $patch = <<'END';
-Garbage patch contents
-END
-
-# We call via callSilently() to avoid output like the following to STDERR:
-# patch: **** Only garbage was found in the patch input.
-$argsHashRef = {ensureForce => 1};
-$exitStatus = callSilently(\&runPatchCommand, $patch, ".", "file_to_patch.txt", $argsHashRef);
-
-ok($exitStatus != 0, $title);
-
-# New test
-$title = "runPatchCommand: New file, --dry-run.";
-
-# This file should not exist after the tests, but we take care with the
-# file name and contents just in case.
-my $fileToPatch = "temp_OK_TO_ERASE__README_FOR_MORE.txt";
-$patch = <<END;
-Index: $fileToPatch
-===================================================================
---- $fileToPatch (revision 0)
-+++ $fileToPatch (revision 0)
-@@ -0,0 +1,5 @@
-+This is a test file for WebKitTools/Scripts/VCSUtils_unittest.pl.
-+This file should not have gotten created on your system.
-+If it did, some unit tests don't seem to be working quite right:
-+It would be great if you could file a bug report. Thanks!
-+---------------------------------------------------------------------
-END
-
-# --dry-run prevents creating any files.
-# --silent suppresses the success message to STDOUT.
-$argsHashRef = {options => ["--dry-run", "--silent"]};
-$exitStatus = runPatchCommand($patch, ".", $fileToPatch, $argsHashRef);
-
-ok($exitStatus == 0, $title);
-
-# New test
-$title = "runPatchCommand: New file: \"$fileToPatch\".";
-
-$argsHashRef = {options => ["--silent"]};
-$exitStatus = runPatchCommand($patch, ".", $fileToPatch, $argsHashRef);
-
-ok($exitStatus == 0, $title);
-
-# New test
-$title = "runPatchCommand: Reverse new file (clean up previous).";
-
-$argsHashRef = {shouldReverse => 1,
- options => ["--silent", "--remove-empty-files"]}; # To clean up.
-$exitStatus = runPatchCommand($patch, ".", $fileToPatch, $argsHashRef);
-ok($exitStatus == 0, $title);
diff --git a/Tools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl b/Tools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl
deleted file mode 100644
index 076d88c7f..000000000
--- a/Tools/Scripts/webkitperl/VCSUtils_unittest/setChangeLogDateAndReviewer.pl
+++ /dev/null
@@ -1,128 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-# Unit tests of setChangeLogDateAndReviewer().
-
-use strict;
-use warnings;
-
-use Test::More;
-use VCSUtils;
-
-my @testCaseHashRefs = (
-{
- testName => "reviewer defined and \"NOBODY (OOPS!)\" in leading junk",
- reviewer => "John Doe",
- epochTime => 1273414321,
- patch => <<'END',
-Subject: [PATCH]
-
-Reviewed by NOBODY (OOPS!).
-
-diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
---- a/WebCore/ChangeLog
-+++ b/WebCore/ChangeLog
-@@ -1,3 +1,15 @@
-+2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-+
-+ Reviewed by NOBODY (OOPS!).
-+
- 2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Jane Doe.
-END
- expectedReturn => <<'END',
-Subject: [PATCH]
-
-Reviewed by NOBODY (OOPS!).
-
-diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
---- a/WebCore/ChangeLog
-+++ b/WebCore/ChangeLog
-@@ -1,3 +1,15 @@
-+2010-05-09 Chris Jerdonek <cjerdonek@webkit.org>
-+
-+ Reviewed by John Doe.
-+
- 2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Jane Doe.
-END
-},
-{
- testName => "reviewer not defined and \"NOBODY (OOPS!)\" in leading junk",
- reviewer => undef,
- epochTime => 1273414321,
- patch => <<'END',
-Subject: [PATCH]
-
-Reviewed by NOBODY (OOPS!).
-
-diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
---- a/WebCore/ChangeLog
-+++ b/WebCore/ChangeLog
-@@ -1,3 +1,15 @@
-+2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-+
-+ Reviewed by NOBODY (OOPS!).
-+
- 2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Jane Doe.
-END
- expectedReturn => <<'END',
-Subject: [PATCH]
-
-Reviewed by NOBODY (OOPS!).
-
-diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
---- a/WebCore/ChangeLog
-+++ b/WebCore/ChangeLog
-@@ -1,3 +1,15 @@
-+2010-05-09 Chris Jerdonek <cjerdonek@webkit.org>
-+
-+ Reviewed by NOBODY (OOPS!).
-+
- 2010-05-08 Chris Jerdonek <cjerdonek@webkit.org>
-
- Reviewed by Jane Doe.
-END
-},
-);
-
-my $testCasesCount = @testCaseHashRefs;
-plan(tests => 1 * $testCasesCount); # Total number of assertions.
-
-foreach my $testCase (@testCaseHashRefs) {
- my $testNameStart = "setChangeLogDateAndReviewer(): $testCase->{testName}: comparing";
-
- my $patch = $testCase->{patch};
- my $reviewer = $testCase->{reviewer};
- my $epochTime = $testCase->{epochTime};
-
- my $got = VCSUtils::setChangeLogDateAndReviewer($patch, $reviewer, $epochTime);
- my $expectedReturn = $testCase->{expectedReturn};
-
- is($got, $expectedReturn, "$testNameStart return value.");
-}
diff --git a/Tools/Scripts/webkitperl/features.pm b/Tools/Scripts/webkitperl/features.pm
deleted file mode 100644
index e546c394b..000000000
--- a/Tools/Scripts/webkitperl/features.pm
+++ /dev/null
@@ -1,96 +0,0 @@
-# Copyright (C) 2005, 2006, 2007, 2008, 2009, 2012 Apple Inc. All rights reserved
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-# Copyright (C) 2010 Andras Becsi (abecsi@inf.u-szeged.hu), University of Szeged
-#
-# 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 detect the existance of features in built binaries.
-
-use strict;
-use warnings;
-
-use FindBin;
-use lib $FindBin::Bin;
-use webkitdirs;
-
-BEGIN {
- use Exporter ();
- our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&checkWebCoreFeatureSupport);
- %EXPORT_TAGS = ( );
- @EXPORT_OK = ();
-}
-
-sub libraryContainsSymbol($$)
-{
- my ($path, $symbol) = @_;
-
- if (isCygwin() or isWindows()) {
- # FIXME: Implement this for Windows.
- return 0;
- }
-
- my $foundSymbol = 0;
- if (-e $path) {
- open NM, "-|", nmPath(), $path or die;
- while (<NM>) {
- $foundSymbol = 1 if /$symbol/; # FIXME: This should probably check for word boundaries before/after the symbol name.
- }
- close NM;
- }
- return $foundSymbol;
-}
-
-sub hasFeature($$)
-{
- my ($featureName, $path) = @_;
- my %symbolForFeature = (
- "MathML" => "MathMLElement",
- "SVG" => "SVGDefsElement", # We used to look for SVGElement but isSVGElement exists (and would match) in --no-svg builds.
- "Accelerated Compositing" => "GraphicsLayer",
- "3D Rendering" => "WebCoreHas3DRendering",
- "3D Canvas" => "WebGLShader",
- "MHTML" => "MHTMLArchive"
- );
- my $symbolName = $symbolForFeature{$featureName};
- die "Unknown feature: $featureName" unless $symbolName;
- return libraryContainsSymbol($path, $symbolName);
-}
-
-sub checkWebCoreFeatureSupport($$)
-{
- my ($feature, $required) = @_;
- my $libraryName = "WebCore";
- my $path = builtDylibPathForName($libraryName);
- my $hasFeature = hasFeature($feature, $path);
- if ($required && !$hasFeature) {
- die "$libraryName at \"$path\" does not include $hasFeature support. See build-webkit --help\n";
- }
- return $hasFeature;
-}
-
-1;
diff --git a/Tools/Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl b/Tools/Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl
deleted file mode 100644
index 0970e9aa2..000000000
--- a/Tools/Scripts/webkitperl/filter-build-webkit_unittest/shouldIgnoreLine_unittests.pl
+++ /dev/null
@@ -1,120 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2013 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. 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 INC. 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 tests parts of filter-build-webkit.
-# This script runs the unittests specified in @testFiles.
-
-use strict;
-use warnings;
-
-use English;
-use FindBin;
-use Test::More;
-use lib File::Spec->catdir($FindBin::Bin, "..");
-use LoadAsModule qw(FilterBuildWebKit filter-build-webkit);
-
-sub description($);
-
-@FilterBuildWebKit::EXPORT_OK = qw(shouldIgnoreLine);
-FilterBuildWebKit->import(@FilterBuildWebKit::EXPORT_OK);
-
-#
-# Test whitespace
-#
-is(shouldIgnoreLine("", ""), 1, "Ignored: empty line");
-is(shouldIgnoreLine("", " "), 1, "Ignored: one space");
-is(shouldIgnoreLine("", "\t"), 1, "Ignored: one tab");
-
-#
-# Test input that should be ignored regardless of previous line
-#
-my @expectIgnoredLines = split(/$INPUT_RECORD_SEPARATOR/, <<'END');
-make: Nothing to be done for `all'.
-JavaScriptCore/create_hash_table JavaScriptCore/runtime/ArrayConstructor.cpp -i > ArrayConstructor.lut.h
-Creating hashtable for JavaScriptCore/runtime/ArrayConstructor.cpp
-Wrote output to /Volumes/Data/Build/Release/DerivedSources/WebCore/ExportFileGenerator.cpp
-/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/libtool: file: /Volumes/Data/Build/ANGLE.build/Release/ANGLE.build/Objects-normal/i386/debug.o has no symbols
-Showing first 200 notices only
-printf "WebCore/Modules/encryptedmedia/MediaKeyMessageEvent.idl\nWebCore/Modules/encryptedmedia/MediaKeyNeededEvent.idl\nWebCore/Modules/encryptedmedia/MediaKeySession.idl\nWebCore/Modules/encryptedmedia/MediaKeys.idl\nWebCore/Modules/filesystem/DOMFileSystem.idl\nWebCore/Modules/filesystem/DOMFileSystemSync.idl\nWebCore/Modules/filesystem/DOMWindowFileSystem.idl\nWebCore/Modules/filesystem/DirectoryEntry.idl\nWebCore/Modules/filesystem/DirectoryEntrySync.idl\nWebCore/Modules/filesystem/DirectoryReader.idl\nWebCore/Modules/filesystem/DirectoryReaderSync.idl\nWebCore/Modules/filesystem/EntriesCallback.idl\nWebCore/Modules/filesystem/Entry.idl\nWebCore/Modules/filesystem/EntryArray.idl\nWebCore/Modules/filesystem/EntryArraySync.idl\nWebCore/Modules/filesystem/EntryCallback.idl\nWebCore/Modules/filesystem/EntrySync.idl\nWebCore/Modules/filesystem/ErrorCallback.idl\nWebCore/Modules/filesystem/FileCallback.idl\nWebCore/Modules/filesystem/FileEntry.idl\nWebCore/Modules/filesystem/FileEntrySync.idl\nWebCore/Modules/filesystem/FileSystemCallback.idl\nWebCore/Modules/filesystem/FileWriter.idl\nWebCore/Modules/filesystem/FileWriterCallback.idl\nWebCore/Modules/filesystem/FileWriterSync.idl\nWebCore/Modules/filesystem/Metadata.idl\nWebCore/Modules/filesystem/MetadataCallback.idl\nWebCore/Modules/filesystem/WorkerContextFileSystem.idl\nWebCore/Modules/geolocation/Coordinates.idl\nWebCore/Modules/geolocation/Geolocation.idl\nWebCore/Modules/geolocation/Geoposition.idl\nWebCore/Modules/geolocation/NavigatorGeolocation.idl\nWebCore/Modules/geolocation/PositionCallback.idl\nWebCore/Modules/geolocation/PositionError.idl\nWebCore/Modules/geolocation/PositionErrorCallback.idl\nWebCore/Modules/indexeddb/DOMWindowIndexedDatabase.idl\nWebCore/Modules/indexeddb/IDBAny.idl\nWebCore/Modules/indexeddb/IDBCursor.idl\nWebCore/Modules/indexeddb/IDBDatabase.idl\nWebCore/Modules/indexeddb/IDBFactory.idl\nWebCore/Modules/indexeddb/IDBIndex.idl\nWebCore/Modules/indexeddb/IDBKeyRange.idl\nWebCore/Modules/indexeddb/IDBObjectStore.idl\nWebCore/Modules/indexeddb/IDBRequest.idl\nWebCore/Modules/indexeddb/IDBTransaction.idl\nWebCore/Modules/indexeddb/IDBVersionChangeEvent.idl\nWebCore/Modules/indexeddb/WorkerContextIndexedDatabase.idl\nWebCore/Modules/mediasource/MediaSource.idl\nWebCore/Modules/mediasource/SourceBuffer.idl\nWebCore/Modules/mediasource/SourceBufferList.idl\nWebCore/Modules/notifications/DOMWindowNotifications.idl\nWebCore/Modules/notifications/Notification.idl\nWebCore/Modules/notifications/NotificationCenter.idl\nWebCore/Modules/notifications/NotificationPermissionCallback.idl\nWebCore/Modules/notifications/WorkerContextNotifications.idl\nWebCore/Modules/quota/DOMWindowQuota.idl\nWebCore/Modules/quota/NavigatorStorageQuota.idl\nWebCore/Modules/quota/StorageInfo.idl\nWebCore/Modules/quota/StorageErrorCallback.idl\nWebCore/Modules/quota/StorageQuota.idl\nWebCore/Modules/quota/StorageQuotaCallback.idl\nWebCore/Modules/quota/StorageUsageCallback.idl\nWebCore/Modules/quota/WorkerNavigatorStorageQuota.idl\nWebCore/Modules/speech/DOMWindowSpeechSynthesis.idl\nWebCore/Modules/speech/SpeechSynthesis.idl\nWebCore/Modules/speech/SpeechSynthesisEvent.idl\nWebCore/Modules/speech/SpeechSynthesisUtterance.idl\nWebCore/Modules/speech/SpeechSynthesisVoice.idl\nWebCore/Modules/webaudio/AudioBuffer.idl\nWebCore/Modules/webaudio/AudioBufferCallback.idl\nWebCore/Modules/webaudio/AudioBufferSourceNode.idl\nWebCore/Modules/webaudio/ChannelMergerNode.idl\nWebCore/Modules/webaudio/ChannelSplitterNode.idl\nWebCore/Modules/webaudio/AudioContext.idl\nWebCore/Modules/webaudio/AudioDestinationNode.idl\nWebCore/Modules/webaudio/GainNode.idl\nWebCore/Modules/webaudio/AudioListener.idl\nWebCore/Modules/webaudio/AudioNode.idl\nWebCore/Modules/webaudio/PannerNode.idl\nWebCore/Modules/webaudio/AudioParam.idl\nWebCore/Modules/webaudio/AudioProcessingEvent.idl\nWebCore/Modules/webaudio/BiquadFilterNode.idl\nWebCore/Modules/webaudio/ConvolverNode.idl\nWebCore/Modules/webaudio/DOMWindowWebAudio.idl\nWebCore/Modules/webaudio/DelayNode.idl\nWebCore/Modules/webaudio/DynamicsCompressorNode.idl\nWebCore/Modules/webaudio/ScriptProcessorNode.idl\nWebCore/Modules/webaudio/MediaElementAudioSourceNode.idl\nWebCore/Modules/webaudio/MediaStreamAudioSourceNode.idl\nWebCore/Modules/webaudio/OscillatorNode.idl\nWebCore/Modules/webaudio/OfflineAudioContext.idl\nWebCore/Modules/webaudio/OfflineAudioCompletionEvent.idl\nWebCore/Modules/webaudio/AnalyserNode.idl\nWebCore/Modules/webaudio/WaveShaperNode.idl\nWebCore/Modules/webaudio/WaveTable.idl\nWebCore/Modules/webdatabase/DOMWindowWebDatabase.idl\nWebCore/Modules/webdatabase/Database.idl\nWebCore/Modules/webdatabase/DatabaseCallback.idl\nWebCore/Modules/webdatabase/DatabaseSync.idl\nWebCore/Modules/webdatabase/SQLError.idl\nWebCore/Modules/webdatabase/SQLException.idl\nWebCore/Modules/webdatabase/SQLResultSet.idl\nWebCore/Modules/webdatabase/SQLResultSetRowList.idl\nWebCore/Modules/webdatabase/SQLStatementCallback.idl\nWebCore/Modules/webdatabase/SQLStatementErrorCallback.idl\nWebCore/Modules/webdatabase/SQLTransaction.idl\nWebCore/Modules/webdatabase/SQLTransactionCallback.idl\nWebCore/Modules/webdatabase/SQLTransactionErrorCallback.idl\nWebCore/Modules/webdatabase/SQLTransactionSync.idl\nWebCore/Modules/webdatabase/SQLTransactionSyncCallback.idl\nWebCore/Modules/webdatabase/WorkerContextWebDatabase.idl\nWebCore/Modules/websockets/CloseEvent.idl\nWebCore/Modules/websockets/DOMWindowWebSocket.idl\nWebCore/Modules/websockets/WebSocket.idl\nWebCore/Modules/websockets/WorkerContextWebSocket.idl\nWebCore/css/CSSCharsetRule.idl\nWebCore/css/CSSFontFaceLoadEvent.idl\nWebCore/css/CSSFontFaceRule.idl\nWebCore/css/CSSHostRule.idl\nWebCore/css/CSSImportRule.idl\nWebCore/css/CSSMediaRule.idl\nWebCore/css/CSSPageRule.idl\nWebCore/css/CSSPrimitiveValue.idl\nWebCore/css/CSSRule.idl\nWebCore/css/CSSRuleList.idl\nWebCore/css/CSSStyleDeclaration.idl\nWebCore/css/CSSStyleRule.idl\nWebCore/css/CSSStyleSheet.idl\nWebCore/css/CSSSupportsRule.idl\nWebCore/css/CSSUnknownRule.idl\nWebCore/css/CSSValue.idl\nWebCore/css/CSSValueList.idl\nWebCore/css/Counter.idl\nWebCore/css/DOMWindowCSS.idl\nWebCore/css/FontLoader.idl\nWebCore/css/MediaList.idl\nWebCore/css/MediaQueryList.idl\nWebCore/css/MediaQueryListListener.idl\nWebCore/css/RGBColor.idl\nWebCore/css/Rect.idl\nWebCore/css/StyleMedia.idl\nWebCore/css/StyleSheet.idl\nWebCore/css/StyleSheetList.idl\nWebCore/css/WebKitCSSFilterValue.idl\nWebCore/css/WebKitCSSFilterRule.idl\nWebCore/css/WebKitCSSKeyframeRule.idl\nWebCore/css/WebKitCSSKeyframesRule.idl\nWebCore/css/WebKitCSSMatrix.idl\nWebCore/css/WebKitCSSMixFunctionValue.idl\nWebCore/css/WebKitCSSRegionRule.idl\nWebCore/css/WebKitCSSTransformValue.idl\nWebCore/css/WebKitCSSViewportRule.idl\nWebCore/dom/Attr.idl\nWebCore/dom/BeforeLoadEvent.idl\nWebCore/dom/CDATASection.idl\nWebCore/dom/CharacterData.idl\nWebCore/dom/ClientRect.idl\nWebCore/dom/ClientRectList.idl\nWebCore/dom/Clipboard.idl\nWebCore/dom/Comment.idl\nWebCore/dom/CompositionEvent.idl\nWebCore/dom/CustomElementConstructor.idl\nWebCore/dom/CustomEvent.idl\nWebCore/dom/DOMCoreException.idl\nWebCore/dom/DOMError.idl\nWebCore/dom/DOMImplementation.idl\nWebCore/dom/DOMStringList.idl\nWebCore/dom/DOMStringMap.idl\nWebCore/dom/DataTransferItem.idl\nWebCore/dom/DataTransferItemList.idl\nWebCore/dom/DeviceMotionEvent.idl\nWebCore/dom/DeviceOrientationEvent.idl\nWebCore/dom/Document.idl\nWebCore/dom/DocumentFragment.idl\nWebCore/dom/DocumentType.idl\nWebCore/dom/Element.idl\nWebCore/dom/Entity.idl\nWebCore/dom/EntityReference.idl\nWebCore/dom/ErrorEvent.idl\nWebCore/dom/Event.idl\nWebCore/dom/EventException.idl\nWebCore/dom/EventListener.idl\nWebCore/dom/EventTarget.idl\nWebCore/dom/FocusEvent.idl\nWebCore/dom/HashChangeEvent.idl\nWebCore/dom/KeyboardEvent.idl\nWebCore/dom/MessageChannel.idl\nWebCore/dom/MessageEvent.idl\nWebCore/dom/MessagePort.idl\nWebCore/dom/MouseEvent.idl\nWebCore/dom/MutationEvent.idl\nWebCore/dom/MutationObserver.idl\nWebCore/dom/MutationRecord.idl\nWebCore/dom/DOMNamedFlowCollection.idl\nWebCore/dom/NamedNodeMap.idl\nWebCore/dom/Node.idl\nWebCore/dom/NodeFilter.idl\nWebCore/dom/NodeIterator.idl\nWebCore/dom/NodeList.idl\nWebCore/dom/Notation.idl\nWebCore/dom/OverflowEvent.idl\nWebCore/dom/PageTransitionEvent.idl\nWebCore/dom/PopStateEvent.idl\nWebCore/dom/ProcessingInstruction.idl\nWebCore/dom/ProgressEvent.idl\nWebCore/dom/ProgressEvent.idl\nWebCore/dom/PropertyNodeList.idl\nWebCore/dom/Range.idl\nWebCore/dom/RangeException.idl\nWebCore/dom/RequestAnimationFrameCallback.idl\nWebCore/dom/ShadowRoot.idl\nWebCore/dom/StringCallback.idl\nWebCore/dom/Text.idl\nWebCore/dom/TextEvent.idl\nWebCore/dom/Touch.idl\nWebCore/dom/TouchEvent.idl\nWebCore/dom/TouchList.idl\nWebCore/dom/TransitionEvent.idl\nWebCore/dom/TreeWalker.idl\nWebCore/dom/UIEvent.idl\nWebCore/dom/WebKitAnimationEvent.idl\nWebCore/dom/WebKitNamedFlow.idl\nWebCore/dom/WebKitTransitionEvent.idl\nWebCore/dom/WheelEvent.idl\nWebCore/fileapi/Blob.idl\nWebCore/fileapi/File.idl\nWebCore/fileapi/FileError.idl\nWebCore/fileapi/FileException.idl\nWebCore/fileapi/FileList.idl\nWebCore/fileapi/FileReader.idl\nWebCore/fileapi/FileReaderSync.idl\nWebCore/html/DOMFormData.idl\nWebCore/html/DOMSettableTokenList.idl\nWebCore/html/DOMTokenList.idl\nWebCore/html/DOMURL.idl\nWebCore/html/HTMLAllCollection.idl\nWebCore/html/HTMLAnchorElement.idl\nWebCore/html/HTMLAppletElement.idl\nWebCore/html/HTMLAreaElement.idl\nWebCore/html/HTMLAudioElement.idl\nWebCore/html/HTMLBRElement.idl\nWebCore/html/HTMLBaseElement.idl\nWebCore/html/HTMLBaseFontElement.idl\nWebCore/html/HTMLBodyElement.idl\nWebCore/html/HTMLButtonElement.idl\nWebCore/html/HTMLCanvasElement.idl\nWebCore/html/HTMLCollection.idl\nWebCore/html/HTMLDListElement.idl\nWebCore/html/HTMLDataListElement.idl\nWebCore/html/HTMLDetailsElement.idl\nWebCore/html/HTMLDialogElement.idl\nWebCore/html/HTMLDirectoryElement.idl\nWebCore/html/HTMLDivElement.idl\nWebCore/html/HTMLDocument.idl\nWebCore/html/HTMLElement.idl\nWebCore/html/HTMLEmbedElement.idl\nWebCore/html/HTMLFieldSetElement.idl\nWebCore/html/HTMLFontElement.idl\nWebCore/html/HTMLFormControlsCollection.idl\nWebCore/html/HTMLFormElement.idl\nWebCore/html/HTMLFrameElement.idl\nWebCore/html/HTMLFrameSetElement.idl\nWebCore/html/HTMLHRElement.idl\nWebCore/html/HTMLHeadElement.idl\nWebCore/html/HTMLHeadingElement.idl\nWebCore/html/HTMLHtmlElement.idl\nWebCore/html/HTMLIFrameElement.idl\nWebCore/html/HTMLImageElement.idl\nWebCore/html/HTMLInputElement.idl\nWebCore/html/HTMLKeygenElement.idl\nWebCore/html/HTMLLIElement.idl\nWebCore/html/HTMLLabelElement.idl\nWebCore/html/HTMLLegendElement.idl\nWebCore/html/HTMLLinkElement.idl\nWebCore/html/HTMLMapElement.idl\nWebCore/html/HTMLMarqueeElement.idl\nWebCore/html/HTMLMediaElement.idl\nWebCore/html/HTMLMenuElement.idl\nWebCore/html/HTMLMetaElement.idl\nWebCore/html/HTMLMeterElement.idl\nWebCore/html/HTMLModElement.idl\nWebCore/html/HTMLOListElement.idl\nWebCore/html/HTMLObjectElement.idl\nWebCore/html/HTMLOptGroupElement.idl\nWebCore/html/HTMLOptionElement.idl\nWebCore/html/HTMLOptionsCollection.idl\nWebCore/html/HTMLOutputElement.idl\nWebCore/html/HTMLParagraphElement.idl\nWebCore/html/HTMLParamElement.idl\nWebCore/html/HTMLPreElement.idl\nWebCore/html/HTMLProgressElement.idl\nWebCore/html/HTMLPropertiesCollection.idl\nWebCore/html/HTMLQuoteElement.idl\nWebCore/html/HTMLScriptElement.idl\nWebCore/html/HTMLSelectElement.idl\nWebCore/html/HTMLSourceElement.idl\nWebCore/html/HTMLSpanElement.idl\nWebCore/html/HTMLStyleElement.idl\nWebCore/html/HTMLTableCaptionElement.idl\nWebCore/html/HTMLTableCellElement.idl\nWebCore/html/HTMLTableColElement.idl\nWebCore/html/HTMLTableElement.idl\nWebCore/html/HTMLTableRowElement.idl\nWebCore/html/HTMLTableSectionElement.idl\nWebCore/html/HTMLTemplateElement.idl\nWebCore/html/HTMLTextAreaElement.idl\nWebCore/html/HTMLTitleElement.idl\nWebCore/html/HTMLTrackElement.idl\nWebCore/html/HTMLUListElement.idl\nWebCore/html/HTMLUnknownElement.idl\nWebCore/html/HTMLVideoElement.idl\nWebCore/html/ImageData.idl\nWebCore/html/MediaController.idl\nWebCore/html/MediaError.idl\nWebCore/html/MediaKeyError.idl\nWebCore/html/MediaKeyEvent.idl\nWebCore/html/MicroDataItemValue.idl\nWebCore/html/RadioNodeList.idl\nWebCore/html/TextMetrics.idl\nWebCore/html/TimeRanges.idl\nWebCore/html/ValidityState.idl\nWebCore/html/VoidCallback.idl\nWebCore/html/canvas/ArrayBuffer.idl\nWebCore/html/canvas/ArrayBufferView.idl\nWebCore/html/canvas/CanvasGradient.idl\nWebCore/html/canvas/CanvasPattern.idl\nWebCore/html/canvas/CanvasProxy.idl\nWebCore/html/canvas/CanvasRenderingContext.idl\nWebCore/html/canvas/CanvasRenderingContext2D.idl\nWebCore/html/canvas/DataView.idl\nWebCore/html/canvas/DOMPath.idl\nWebCore/html/canvas/EXTDrawBuffers.idl\nWebCore/html/canvas/EXTTextureFilterAnisotropic.idl\nWebCore/html/canvas/Float32Array.idl\nWebCore/html/canvas/Float64Array.idl\nWebCore/html/canvas/Int16Array.idl\nWebCore/html/canvas/Int32Array.idl\nWebCore/html/canvas/Int8Array.idl\nWebCore/html/canvas/OESElementIndexUint.idl\nWebCore/html/canvas/OESStandardDerivatives.idl\nWebCore/html/canvas/OESTextureFloat.idl\nWebCore/html/canvas/OESTextureHalfFloat.idl\nWebCore/html/canvas/OESVertexArrayObject.idl\nWebCore/html/canvas/Uint16Array.idl\nWebCore/html/canvas/Uint32Array.idl\nWebCore/html/canvas/Uint8Array.idl\nWebCore/html/canvas/Uint8ClampedArray.idl\nWebCore/html/canvas/WebGLActiveInfo.idl\nWebCore/html/canvas/WebGLBuffer.idl\nWebCore/html/canvas/WebGLCompressedTextureATC.idl\nWebCore/html/canvas/WebGLCompressedTexturePVRTC.idl\nWebCore/html/canvas/WebGLCompressedTextureS3TC.idl\nWebCore/html/canvas/WebGLContextAttributes.idl\nWebCore/html/canvas/WebGLContextEvent.idl\nWebCore/html/canvas/WebGLDepthTexture.idl\nWebCore/html/canvas/WebGLFramebuffer.idl\nWebCore/html/canvas/WebGLLoseContext.idl\nWebCore/html/canvas/WebGLProgram.idl\nWebCore/html/canvas/WebGLRenderbuffer.idl\nWebCore/html/canvas/WebGLRenderingContext.idl\nWebCore/html/canvas/WebGLShader.idl\nWebCore/html/canvas/WebGLShaderPrecisionFormat.idl\nWebCore/html/canvas/WebGLTexture.idl\nWebCore/html/canvas/WebGLUniformLocation.idl\nWebCore/html/canvas/WebGLVertexArrayObjectOES.idl\nWebCore/html/shadow/HTMLContentElement.idl\nWebCore/html/shadow/HTMLShadowElement.idl\nWebCore/html/track/TextTrack.idl\nWebCore/html/track/TextTrackCue.idl\nWebCore/html/track/TextTrackCueList.idl\nWebCore/html/track/TextTrackList.idl\nWebCore/html/track/TrackEvent.idl\nWebCore/inspector/InjectedScriptHost.idl\nWebCore/inspector/InspectorFrontendHost.idl\nWebCore/inspector/ScriptProfile.idl\nWebCore/inspector/ScriptProfileNode.idl\nWebCore/loader/appcache/DOMApplicationCache.idl\nWebCore/page/AbstractView.idl\nWebCore/page/BarInfo.idl\nWebCore/page/Console.idl\nWebCore/page/Crypto.idl\nWebCore/page/DOMSecurityPolicy.idl\nWebCore/page/DOMSelection.idl\nWebCore/page/DOMWindow.idl\nWebCore/page/EventSource.idl\nWebCore/page/History.idl\nWebCore/page/Location.idl\nWebCore/page/Navigator.idl\nWebCore/page/Performance.idl\nWebCore/page/PerformanceNavigation.idl\nWebCore/page/PerformanceTiming.idl\nWebCore/page/Screen.idl\nWebCore/page/SpeechInputEvent.idl\nWebCore/page/SpeechInputResult.idl\nWebCore/page/SpeechInputResultList.idl\nWebCore/page/WebKitPoint.idl\nWebCore/page/WorkerNavigator.idl\nWebCore/plugins/DOMMimeType.idl\nWebCore/plugins/DOMMimeTypeArray.idl\nWebCore/plugins/DOMPlugin.idl\nWebCore/plugins/DOMPluginArray.idl\nWebCore/storage/Storage.idl\nWebCore/storage/StorageEvent.idl\nWebCore/svg/ElementTimeControl.idl\nWebCore/svg/SVGAElement.idl\nWebCore/svg/SVGAltGlyphDefElement.idl\nWebCore/svg/SVGAltGlyphElement.idl\nWebCore/svg/SVGAltGlyphItemElement.idl\nWebCore/svg/SVGAngle.idl\nWebCore/svg/SVGAnimateColorElement.idl\nWebCore/svg/SVGAnimateElement.idl\nWebCore/svg/SVGAnimateMotionElement.idl\nWebCore/svg/SVGAnimateTransformElement.idl\nWebCore/svg/SVGAnimatedAngle.idl\nWebCore/svg/SVGAnimatedBoolean.idl\nWebCore/svg/SVGAnimatedEnumeration.idl\nWebCore/svg/SVGAnimatedInteger.idl\nWebCore/svg/SVGAnimatedLength.idl\nWebCore/svg/SVGAnimatedLengthList.idl\nWebCore/svg/SVGAnimatedNumber.idl\nWebCore/svg/SVGAnimatedNumberList.idl\nWebCore/svg/SVGAnimatedPreserveAspectRatio.idl\nWebCore/svg/SVGAnimatedRect.idl\nWebCore/svg/SVGAnimatedString.idl\nWebCore/svg/SVGAnimatedTransformList.idl\nWebCore/svg/SVGAnimationElement.idl\nWebCore/svg/SVGCircleElement.idl\nWebCore/svg/SVGClipPathElement.idl\nWebCore/svg/SVGColor.idl\nWebCore/svg/SVGComponentTransferFunctionElement.idl\nWebCore/svg/SVGCursorElement.idl\nWebCore/svg/SVGDefsElement.idl\nWebCore/svg/SVGDescElement.idl\nWebCore/svg/SVGDocument.idl\nWebCore/svg/SVGElement.idl\nWebCore/svg/SVGElementInstance.idl\nWebCore/svg/SVGElementInstanceList.idl\nWebCore/svg/SVGEllipseElement.idl\nWebCore/svg/SVGException.idl\nWebCore/svg/SVGExternalResourcesRequired.idl\nWebCore/svg/SVGFEBlendElement.idl\nWebCore/svg/SVGFEColorMatrixElement.idl\nWebCore/svg/SVGFEComponentTransferElement.idl\nWebCore/svg/SVGFECompositeElement.idl\nWebCore/svg/SVGFEConvolveMatrixElement.idl\nWebCore/svg/SVGFEDiffuseLightingElement.idl\nWebCore/svg/SVGFEDisplacementMapElement.idl\nWebCore/svg/SVGFEDistantLightElement.idl\nWebCore/svg/SVGFEDropShadowElement.idl\nWebCore/svg/SVGFEFloodElement.idl\nWebCore/svg/SVGFEFuncAElement.idl\nWebCore/svg/SVGFEFuncBElement.idl\nWebCore/svg/SVGFEFuncGElement.idl\nWebCore/svg/SVGFEFuncRElement.idl\nWebCore/svg/SVGFEGaussianBlurElement.idl\nWebCore/svg/SVGFEImageElement.idl\nWebCore/svg/SVGFEMergeElement.idl\nWebCore/svg/SVGFEMergeNodeElement.idl\nWebCore/svg/SVGFEMorphologyElement.idl\nWebCore/svg/SVGFEOffsetElement.idl\nWebCore/svg/SVGFEPointLightElement.idl\nWebCore/svg/SVGFESpecularLightingElement.idl\nWebCore/svg/SVGFESpotLightElement.idl\nWebCore/svg/SVGFETileElement.idl\nWebCore/svg/SVGFETurbulenceElement.idl\nWebCore/svg/SVGFilterElement.idl\nWebCore/svg/SVGFilterPrimitiveStandardAttributes.idl\nWebCore/svg/SVGFitToViewBox.idl\nWebCore/svg/SVGFontElement.idl\nWebCore/svg/SVGFontFaceElement.idl\nWebCore/svg/SVGFontFaceFormatElement.idl\nWebCore/svg/SVGFontFaceNameElement.idl\nWebCore/svg/SVGFontFaceSrcElement.idl\nWebCore/svg/SVGFontFaceUriElement.idl\nWebCore/svg/SVGForeignObjectElement.idl\nWebCore/svg/SVGGElement.idl\nWebCore/svg/SVGGlyphElement.idl\nWebCore/svg/SVGGlyphRefElement.idl\nWebCore/svg/SVGGradientElement.idl\nWebCore/svg/SVGHKernElement.idl\nWebCore/svg/SVGImageElement.idl\nWebCore/svg/SVGLangSpace.idl\nWebCore/svg/SVGLength.idl\nWebCore/svg/SVGLengthList.idl\nWebCore/svg/SVGLineElement.idl\nWebCore/svg/SVGLinearGradientElement.idl\nWebCore/svg/SVGLocatable.idl\nWebCore/svg/SVGMPathElement.idl\nWebCore/svg/SVGMarkerElement.idl\nWebCore/svg/SVGMaskElement.idl\nWebCore/svg/SVGMatrix.idl\nWebCore/svg/SVGMetadataElement.idl\nWebCore/svg/SVGMissingGlyphElement.idl\nWebCore/svg/SVGNumber.idl\nWebCore/svg/SVGNumberList.idl\nWebCore/svg/SVGPaint.idl\nWebCore/svg/SVGPathElement.idl\nWebCore/svg/SVGPathSeg.idl\nWebCore/svg/SVGPathSegArcAbs.idl\nWebCore/svg/SVGPathSegArcRel.idl\nWebCore/svg/SVGPathSegClosePath.idl\nWebCore/svg/SVGPathSegCurvetoCubicAbs.idl\nWebCore/svg/SVGPathSegCurvetoCubicRel.idl\nWebCore/svg/SVGPathSegCurvetoCubicSmoothAbs.idl\nWebCore/svg/SVGPathSegCurvetoCubicSmoothRel.idl\nWebCore/svg/SVGPathSegCurvetoQuadraticAbs.idl\nWebCore/svg/SVGPathSegCurvetoQuadraticRel.idl\nWebCore/svg/SVGPathSegCurvetoQuadraticSmoothAbs.idl\nWebCore/svg/SVGPathSegCurvetoQuadraticSmoothRel.idl\nWebCore/svg/SVGPathSegLinetoAbs.idl\nWebCore/svg/SVGPathSegLinetoHorizontalAbs.idl\nWebCore/svg/SVGPathSegLinetoHorizontalRel.idl\nWebCore/svg/SVGPathSegLinetoRel.idl\nWebCore/svg/SVGPathSegLinetoVerticalAbs.idl\nWebCore/svg/SVGPathSegLinetoVerticalRel.idl\nWebCore/svg/SVGPathSegList.idl\nWebCore/svg/SVGPathSegMovetoAbs.idl\nWebCore/svg/SVGPathSegMovetoRel.idl\nWebCore/svg/SVGPatternElement.idl\nWebCore/svg/SVGPoint.idl\nWebCore/svg/SVGPointList.idl\nWebCore/svg/SVGPolygonElement.idl\nWebCore/svg/SVGPolylineElement.idl\nWebCore/svg/SVGPreserveAspectRatio.idl\nWebCore/svg/SVGRadialGradientElement.idl\nWebCore/svg/SVGRect.idl\nWebCore/svg/SVGRectElement.idl\nWebCore/svg/SVGRenderingIntent.idl\nWebCore/svg/SVGSVGElement.idl\nWebCore/svg/SVGScriptElement.idl\nWebCore/svg/SVGSetElement.idl\nWebCore/svg/SVGStopElement.idl\nWebCore/svg/SVGStringList.idl\nWebCore/svg/SVGStyleElement.idl\nWebCore/svg/SVGStyledElement.idl\nWebCore/svg/SVGSwitchElement.idl\nWebCore/svg/SVGSymbolElement.idl\nWebCore/svg/SVGTRefElement.idl\nWebCore/svg/SVGTSpanElement.idl\nWebCore/svg/SVGTests.idl\nWebCore/svg/SVGTextContentElement.idl\nWebCore/svg/SVGTextElement.idl\nWebCore/svg/SVGTextPathElement.idl\nWebCore/svg/SVGTextPositioningElement.idl\nWebCore/svg/SVGTitleElement.idl\nWebCore/svg/SVGTransform.idl\nWebCore/svg/SVGTransformList.idl\nWebCore/svg/SVGTransformable.idl\nWebCore/svg/SVGURIReference.idl\nWebCore/svg/SVGUnitTypes.idl\nWebCore/svg/SVGUseElement.idl\nWebCore/svg/SVGVKernElement.idl\nWebCore/svg/SVGViewElement.idl\nWebCore/svg/SVGViewSpec.idl\nWebCore/svg/SVGZoomAndPan.idl\nWebCore/svg/SVGZoomEvent.idl\nWebCore/testing/Internals.idl\nWebCore/testing/InternalSettings.idl\nWebCore/testing/MallocStatistics.idl\nWebCore/testing/MemoryInfo.idl\nWebCore/testing/TypeConversions.idl\nWebCore/workers/AbstractWorker.idl\nWebCore/workers/DedicatedWorkerContext.idl\nWebCore/workers/SharedWorker.idl\nWebCore/workers/SharedWorkerContext.idl\nWebCore/workers/Worker.idl\nWebCore/workers/WorkerContext.idl\nWebCore/workers/WorkerLocation.idl\nWebCore/xml/DOMParser.idl\nWebCore/xml/XMLHttpRequest.idl\nWebCore/xml/XMLHttpRequestException.idl\nWebCore/xml/XMLHttpRequestProgressEvent.idl\nWebCore/xml/XMLHttpRequestUpload.idl\nWebCore/xml/XMLSerializer.idl\nWebCore/xml/XPathEvaluator.idl\nWebCore/xml/XPathException.idl\nWebCore/xml/XPathExpression.idl\nWebCore/xml/XPathNSResolver.idl\nWebCore/xml/XPathResult.idl\nWebCore/xml/XSLTProcessor.idl\nInternalSettingsGenerated.idl\nWebCore/inspector/JavaScriptCallFrame.idl\n" > ./idl_files.tmp
-perl JavaScriptCore/docs/make-bytecode-docs.pl JavaScriptCore/interpreter/Interpreter.cpp docs/bytecode.html
-cat WebCore/css/CSSPropertyNames.in WebCore/css/SVGCSSPropertyNames.in > CSSPropertyNames.in
-rm -f ./idl_files.tmp
-python JavaScriptCore/KeywordLookupGenerator.py JavaScriptCore/parser/Keywords.table > KeywordLookup.h
-sed -e s/\<WebCore/\<WebKit/ -e s/DOMDOMImplementation/DOMImplementation/ /Volumes/Data/Build/Release/WebCore.framework/PrivateHeaders/DOM.h > /Volumes/Data/Build/Release/WebKit.framework/Versions/A/Headers/DOM.h
-END
-
-for my $line (@expectIgnoredLines) {
- is(shouldIgnoreLine("", $line), 1, description("Ignored: " . $line));
-}
-
-#
-# Test input starting with four spaces
-#
-my @buildSettingsLines = split(/$INPUT_RECORD_SEPARATOR/, <<'END');
-Build settings from command line:
- ARCHS = i386 x86_64
- OBJROOT = /Volumes/Data/Build
- ONLY_ACTIVE_ARCH = NO
- SHARED_PRECOMPS_DIR = /Volumes/Data/Build/PrecompiledHeaders
- SYMROOT = /Volumes/Data/Build
-END
-
-for my $i (0..scalar(@buildSettingsLines) - 1) {
- my $previousLine = $i ? $buildSettingsLines[$i - 1] : "";
- my $line = $buildSettingsLines[$i];
- is(shouldIgnoreLine($previousLine, $line), 1, description("Ignored: " . $line));
-}
-
-#
-# Test input for undefined symbols error message
-#
-my @undefinedSymbolsLines = split(/$INPUT_RECORD_SEPARATOR/, <<'END');
-Undefined symbols for architecture x86_64:
- "__ZN6WebKit12WebPageProxy28exposedRectChangedTimerFiredEPN7WebCore5TimerIS0_EE", referenced from:
- __ZN6WebKit12WebPageProxyC2EPNS_10PageClientEN3WTF10PassRefPtrINS_15WebProcessProxyEEEPNS_12WebPageGroupEy in WebPageProxy.o
-ld: symbol(s) not found for architecture x86_64
-clang: error: linker command failed with exit code 1 (use -v to see invocation)
-END
-
-for my $i (0..scalar(@undefinedSymbolsLines) - 1) {
- my $previousLine = $i ? $undefinedSymbolsLines[$i - 1] : "";
- my $line = $undefinedSymbolsLines[$i];
- is(shouldIgnoreLine($previousLine, $line), 0, description("Printed: " . $line));
-}
-
-done_testing();
-
-sub description($)
-{
- my ($line) = @_;
-
- my $maxLineLength = 200;
- my $ellipsis = "...";
- my $truncateLength = $maxLineLength - length($ellipsis);
-
- my $description = length($line) > $maxLineLength ? substr($line, 0, $truncateLength) : $line;
- $description .= $ellipsis if length($line) != length($description);
-
- return $description;
-}
diff --git a/Tools/Scripts/webkitperl/httpd.pm b/Tools/Scripts/webkitperl/httpd.pm
deleted file mode 100644
index f61dfa00b..000000000
--- a/Tools/Scripts/webkitperl/httpd.pm
+++ /dev/null
@@ -1,347 +0,0 @@
-# Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved
-# Copyright (C) 2006 Alexey Proskuryakov (ap@nypop.com)
-# Copyright (C) 2010 Andras Becsi (abecsi@inf.u-szeged.hu), University of Szeged
-# Copyright (C) 2011 Research In Motion Limited. 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 start and stop the Apache daemon.
-
-use strict;
-use warnings;
-
-use File::Copy;
-use File::Path;
-use File::Spec;
-use File::Spec::Functions;
-use Fcntl ':flock';
-use IPC::Open2;
-
-use webkitdirs;
-
-BEGIN {
- use Exporter ();
- our ($VERSION, @ISA, @EXPORT, @EXPORT_OK, %EXPORT_TAGS);
- $VERSION = 1.00;
- @ISA = qw(Exporter);
- @EXPORT = qw(&getHTTPDPath
- &hasHTTPD
- &getHTTPDConfigPathForTestDirectory
- &getDefaultConfigForTestDirectory
- &openHTTPD
- &closeHTTPD
- &setShouldWaitForUserInterrupt
- &waitForHTTPDLock
- &getWaitTime);
- %EXPORT_TAGS = ( );
- @EXPORT_OK = ();
-}
-
-my $tmpDir = "/tmp";
-my $httpdLockPrefix = "WebKitHttpd.lock.";
-my $myLockFile;
-my $exclusiveLockFile = File::Spec->catfile($tmpDir, "WebKit.lock");
-my $httpdPidDir = File::Spec->catfile($tmpDir, "WebKit");
-my $httpdPidFile = File::Spec->catfile($httpdPidDir, "httpd.pid");
-my $httpdPid;
-my $waitForUserInterrupt = 0;
-my $waitBeginTime;
-my $waitEndTime;
-
-$SIG{'INT'} = 'handleInterrupt';
-$SIG{'TERM'} = 'handleInterrupt';
-
-sub getHTTPDPath
-{
- my $httpdPath;
- if (isDebianBased()) {
- $httpdPath = "/usr/sbin/apache2";
- } else {
- $httpdPath = "/usr/sbin/httpd";
- }
- return $httpdPath;
-}
-
-sub hasHTTPD
-{
- my @command = (getHTTPDPath(), "-v");
- return system(@command) == 0;
-}
-
-sub getApacheVersion
-{
- my $httpdPath = getHTTPDPath();
- my $version = `$httpdPath -v`;
- $version =~ s/.*Server version: Apache\/(\d+\.\d+).*/$1/s;
- return $version;
-}
-
-sub getDefaultConfigForTestDirectory
-{
- my ($testDirectory) = @_;
- die "No test directory has been specified." unless ($testDirectory);
-
- my $httpdConfig = getHTTPDConfigPathForTestDirectory($testDirectory);
- my $documentRoot = "$testDirectory/http/tests";
- my $jsTestResourcesDirectory = $testDirectory . "/fast/js/resources";
- my $mediaResourcesDirectory = $testDirectory . "/media";
- my $typesConfig = "$testDirectory/http/conf/mime.types";
- my $httpdLockFile = File::Spec->catfile($httpdPidDir, "httpd.lock");
- my $httpdScoreBoardFile = File::Spec->catfile($httpdPidDir, "httpd.scoreboard");
-
- my @httpdArgs = (
- "-f", "$httpdConfig",
- "-C", "DocumentRoot \"$documentRoot\"",
- # Setup a link to where the js test templates are stored, use -c so that mod_alias will already be loaded.
- "-c", "Alias /js-test-resources \"$jsTestResourcesDirectory\"",
- "-c", "Alias /media-resources \"$mediaResourcesDirectory\"",
- "-c", "TypesConfig \"$typesConfig\"",
- # Apache wouldn't run CGIs with permissions==700 otherwise
- "-c", "User \"#$<\"",
- "-c", "PidFile \"$httpdPidFile\"",
- "-c", "ScoreBoardFile \"$httpdScoreBoardFile\"",
- );
-
- if (getApacheVersion() eq "2.2") {
- push(@httpdArgs, "-c", "LockFile \"$httpdLockFile\"");
- }
-
- # FIXME: Enable this on Windows once <rdar://problem/5345985> is fixed
- # The version of Apache we use with Cygwin does not support SSL
- my $sslCertificate = "$testDirectory/http/conf/webkit-httpd.pem";
- push(@httpdArgs, "-c", "SSLCertificateFile \"$sslCertificate\"") unless isCygwin();
-
- return @httpdArgs;
-
-}
-
-sub getHTTPDConfigPathForTestDirectory
-{
- my ($testDirectory) = @_;
- die "No test directory has been specified." unless ($testDirectory);
-
- my $httpdConfig;
- my $httpdPath = getHTTPDPath();
- my $httpdConfDirectory = "$testDirectory/http/conf/";
- my $apacheVersion = getApacheVersion();
-
- if (isCygwin()) {
- my $libPHP4DllPath = "/usr/lib/apache/libphp4.dll";
- # FIXME: run-webkit-tests should not modify the user's system, especially not in this method!
- unless (-x $libPHP4DllPath) {
- copy("$httpdConfDirectory/libphp4.dll", $libPHP4DllPath);
- chmod(0755, $libPHP4DllPath);
- }
- $httpdConfig = "cygwin-httpd.conf"; # This is an apache 1.3 config.
- } elsif (isDebianBased()) {
- $httpdConfig = "debian-httpd-$apacheVersion.conf";
- } elsif (isFedoraBased()) {
- $httpdConfig = "fedora-httpd-$apacheVersion.conf";
- } else {
- # All other ports use apache2, so just use our default apache2 config.
- $httpdConfig = "apache2-httpd.conf";
- }
- return "$httpdConfDirectory/$httpdConfig";
-}
-
-sub openHTTPD(@)
-{
- my (@args) = @_;
- die "No HTTPD configuration has been specified" unless (@args);
- mkdir($httpdPidDir, 0755);
- die "No write permissions to $httpdPidDir" unless (-w $httpdPidDir);
-
- if (-f $httpdPidFile) {
- open (PIDFILE, $httpdPidFile);
- my $oldPid = <PIDFILE>;
- chomp $oldPid;
- close PIDFILE;
- if (0 != kill 0, $oldPid) {
- print "\nhttpd is already running: pid $oldPid, killing...\n";
- if (!killHTTPD($oldPid)) {
- cleanUp();
- die "Timed out waiting for httpd to quit";
- }
- }
- unlink $httpdPidFile;
- }
-
- my $httpdPath = getHTTPDPath();
-
- open2(">&1", \*HTTPDIN, $httpdPath, @args);
-
- my $retryCount = 20;
- while (!-f $httpdPidFile && $retryCount) {
- sleep 1;
- --$retryCount;
- }
-
- if (!$retryCount) {
- cleanUp();
- die "Timed out waiting for httpd to start";
- }
-
- $httpdPid = <PIDFILE> if open(PIDFILE, $httpdPidFile);
- chomp $httpdPid if $httpdPid;
- close PIDFILE;
-
- waitpid($httpdPid, 0) if ($waitForUserInterrupt && $httpdPid);
-
- return 1;
-}
-
-sub closeHTTPD
-{
- close HTTPDIN;
- my $succeeded = killHTTPD($httpdPid);
- cleanUp();
- unless ($succeeded) {
- print STDERR "Timed out waiting for httpd to terminate!\n" unless $succeeded;
- return 0;
- }
- return 1;
-}
-
-sub killHTTPD
-{
- my ($pid) = @_;
-
- return 1 unless $pid;
-
- kill 15, $pid;
-
- my $retryCount = 20;
- while (kill(0, $pid) && $retryCount) {
- sleep 1;
- --$retryCount;
- }
- return $retryCount != 0;
-}
-
-sub setShouldWaitForUserInterrupt
-{
- $waitForUserInterrupt = 1;
-}
-
-sub handleInterrupt
-{
- # On Cygwin, when we receive a signal Apache is still running, so we need
- # to kill it. On other platforms (at least Mac OS X), Apache will have
- # already been killed, and trying to kill it again will cause us to hang.
- # All we need to do in this case is clean up our own files.
- if (isCygwin()) {
- closeHTTPD();
- } else {
- cleanUp();
- }
-
- print "\n";
- exit(1);
-}
-
-sub cleanUp
-{
- rmdir $httpdPidDir;
- unlink $exclusiveLockFile;
- unlink $myLockFile if $myLockFile;
-}
-
-sub extractLockNumber
-{
- my ($lockFile) = @_;
- return -1 unless $lockFile;
- return substr($lockFile, length($httpdLockPrefix));
-}
-
-sub getLockFiles
-{
- opendir(TMPDIR, $tmpDir) or die "Could not open " . $tmpDir . ".";
- my @lockFiles = grep {m/^$httpdLockPrefix\d+$/} readdir(TMPDIR);
- @lockFiles = sort { extractLockNumber($a) <=> extractLockNumber($b) } @lockFiles;
- closedir(TMPDIR);
- return @lockFiles;
-}
-
-sub getNextAvailableLockNumber
-{
- my @lockFiles = getLockFiles();
- return 0 unless @lockFiles;
- return extractLockNumber($lockFiles[-1]) + 1;
-}
-
-sub getLockNumberForCurrentRunning
-{
- my @lockFiles = getLockFiles();
- return 0 unless @lockFiles;
- return extractLockNumber($lockFiles[0]);
-}
-
-sub waitForHTTPDLock
-{
- $waitBeginTime = time;
- scheduleHttpTesting();
- # If we are the only one waiting for Apache just run the tests without any further checking
- if (scalar getLockFiles() > 1) {
- my $currentLockFile = File::Spec->catfile($tmpDir, "$httpdLockPrefix" . getLockNumberForCurrentRunning());
- my $currentLockPid = <SCHEDULER_LOCK> if (-f $currentLockFile && open(SCHEDULER_LOCK, "<$currentLockFile"));
- # Wait until we are allowed to run the http tests
- while ($currentLockPid && $currentLockPid != $$) {
- $currentLockFile = File::Spec->catfile($tmpDir, "$httpdLockPrefix" . getLockNumberForCurrentRunning());
- if ($currentLockFile eq $myLockFile) {
- $currentLockPid = <SCHEDULER_LOCK> if open(SCHEDULER_LOCK, "<$currentLockFile");
- if ($currentLockPid != $$) {
- print STDERR "\nPID mismatch.\n";
- last;
- }
- } else {
- sleep 1;
- }
- }
- }
- $waitEndTime = time;
-}
-
-sub scheduleHttpTesting
-{
- # We need an exclusive lock file to avoid deadlocks and starvation and ensure that the scheduler lock numbers are sequential.
- # The scheduler locks are used to schedule the running test sessions in first come first served order.
- while (!(open(SEQUENTIAL_GUARD_LOCK, ">$exclusiveLockFile") && flock(SEQUENTIAL_GUARD_LOCK, LOCK_EX|LOCK_NB))) {}
- $myLockFile = File::Spec->catfile($tmpDir, "$httpdLockPrefix" . getNextAvailableLockNumber());
- open(SCHEDULER_LOCK, ">$myLockFile");
- print SCHEDULER_LOCK "$$";
- print SEQUENTIAL_GUARD_LOCK "$$";
- close(SCHEDULER_LOCK);
- close(SEQUENTIAL_GUARD_LOCK);
- unlink $exclusiveLockFile;
-}
-
-sub getWaitTime
-{
- my $waitTime = 0;
- if ($waitBeginTime && $waitEndTime) {
- $waitTime = $waitEndTime - $waitBeginTime;
- }
- return $waitTime;
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl
deleted file mode 100644
index df29d476e..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/parser_unittests.pl
+++ /dev/null
@@ -1,131 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# 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.
-
-# This script tests the parser of prepare-ChangeLog (i.e. get_function_line_ranges_for_XXXX()).
-# This script runs the unittests specified in @testFiles.
-
-use strict;
-use warnings;
-
-use Data::Dumper;
-use File::Basename;
-use File::Spec;
-use File::Temp qw(tempfile);
-use FindBin;
-use Getopt::Long;
-use Test::More;
-use lib File::Spec->catdir($FindBin::Bin, "..");
-use LoadAsModule qw(PrepareChangeLog prepare-ChangeLog);
-
-sub captureOutput($);
-sub convertAbsolutepathToWebKitPath($);
-
-my %testFiles = ("perl_unittests.pl" => "get_function_line_ranges_for_perl",
- "python_unittests.py" => "get_function_line_ranges_for_python",
- "java_unittests.java" => "get_function_line_ranges_for_java",
- "cpp_unittests.cpp" => "get_function_line_ranges_for_cpp",
- "javascript_unittests.js" => "get_function_line_ranges_for_javascript",
- "css_unittests.css" => "get_selector_line_ranges_for_css",
- "css_unittests_warning.css" => "get_selector_line_ranges_for_css",
- );
-
-my $resetResults;
-GetOptions('reset-results' => \$resetResults);
-
-my @testSet;
-foreach my $testFile (sort keys %testFiles) {
- my $basename = $testFile;
- $basename = $1 if $basename =~ /^(.*)\.[^\.]*$/;
- push @testSet, {method => $testFiles{$testFile},
- inputFile => File::Spec->catdir($FindBin::Bin, "resources", $testFile),
- expectedFile => File::Spec->catdir($FindBin::Bin, "resources", $basename . "-expected.txt")};
-}
-
-plan(tests => scalar @testSet);
-foreach my $test (@testSet) {
- open FH, "< $test->{inputFile}" or die "Cannot open $test->{inputFile}: $!";
- my $parser = eval "\\&PrepareChangeLog::$test->{method}";
- my @ranges;
- my ($stdout, $stderr) = captureOutput(sub { @ranges = $parser->(\*FH, $test->{inputFile}); });
- close FH;
- $stdout = convertAbsolutepathToWebKitPath($stdout);
- $stderr = convertAbsolutepathToWebKitPath($stderr);
-
- my %actualOutput = (ranges => \@ranges, stdout => $stdout, stderr => $stderr);
- if ($resetResults) {
- open FH, "> $test->{expectedFile}" or die "Cannot open $test->{expectedFile}: $!";
- print FH Data::Dumper->new([\%actualOutput])->Terse(1)->Indent(1)->Dump();
- close FH;
- next;
- }
-
- open FH, "< $test->{expectedFile}" or die "Cannot open $test->{expectedFile}: $!";
- local $/ = undef;
- my $expectedOutput = eval <FH>;
- close FH;
-
- is_deeply(\%actualOutput, $expectedOutput, "Tests $test->{inputFile}");
-}
-
-sub captureOutput($)
-{
- my ($targetMethod) = @_;
-
- my ($stdoutFH, $stdoutFileName) = tempfile();
- my ($stderrFH, $stderrFileName) = tempfile();
-
- open OLDSTDOUT, ">&", \*STDOUT or die "Cannot dup STDOUT: $!";
- open OLDSTDERR, ">&", \*STDERR or die "Cannot dup STDERR: $!";
-
- open STDOUT, ">&", $stdoutFH or die "Cannot redirect STDOUT: $!";
- open STDERR, ">&", $stderrFH or die "Cannot redirect STDERR: $!";
-
- &$targetMethod();
-
- close STDOUT;
- close STDERR;
-
- open STDOUT, ">&OLDSTDOUT" or die "Cannot dup OLDSTDOUT: $!";
- open STDERR, ">&OLDSTDERR" or die "Cannot dup OLDSTDERR: $!";
-
- close OLDSTDOUT;
- close OLDSTDERR;
-
- seek $stdoutFH, 0, 0;
- seek $stderrFH, 0, 0;
- local $/ = undef;
- my $stdout = <$stdoutFH>;
- my $stderr = <$stderrFH>;
-
- close $stdoutFH;
- close $stderrFH;
-
- unlink $stdoutFileName or die "Cannot unlink $stdoutFileName: $!";
- unlink $stderrFileName or die "Cannot unlink $stderrFileName: $!";
- return ($stdout, $stderr);
-}
-
-sub convertAbsolutepathToWebKitPath($)
-{
- my $string = shift;
- my $sourceDir = LoadAsModule::sourceDir();
- $sourceDir .= "/" unless $sourceDir =~ m-/$-;
- $string =~ s/$sourceDir//g;
- return $string;
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt
deleted file mode 100644
index c58560e98..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests-expected.txt
+++ /dev/null
@@ -1,221 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '20',
- '22',
- 'func1'
- ],
- [
- '24',
- '27',
- 'func2'
- ],
- [
- '29',
- '29',
- 'func3'
- ],
- [
- '33',
- '36',
- 'func5'
- ],
- [
- '44',
- '46',
- 'func6'
- ],
- [
- '52',
- '54',
- 'func7'
- ],
- [
- '58',
- '60',
- 'func8'
- ],
- [
- '62',
- '64',
- 'func9'
- ],
- [
- '67',
- '69',
- 'func10'
- ],
- [
- '76',
- '78',
- 'func11'
- ],
- [
- '85',
- '87',
- 'func12'
- ],
- [
- '89',
- '91',
- 'func13'
- ],
- [
- '93',
- '97',
- 'func14'
- ],
- [
- '99',
- '102',
- 'func15'
- ],
- [
- '104',
- '106',
- 'funcOverloaded'
- ],
- [
- '108',
- '110',
- 'funcOverloaded'
- ],
- [
- '112',
- '114',
- 'funcOverloaded'
- ],
- [
- '116',
- '118',
- 'Class::func16'
- ],
- [
- '120',
- '122',
- 'Class1::Class2::func17'
- ],
- [
- '124',
- '126',
- 'Class2::func18'
- ],
- [
- '128',
- '130',
- 'Class2::func19'
- ],
- [
- '132',
- '134',
- 'Class2::func20'
- ],
- [
- '136',
- '138',
- 'Class2::func21'
- ],
- [
- '140',
- '142',
- 'Class2::func22'
- ],
- [
- '144',
- '146',
- 'func23'
- ],
- [
- '149',
- '151',
- 'func24'
- ],
- [
- '153',
- '155',
- 'Class2::func25'
- ],
- [
- '162',
- '164',
- 'Class1::func26'
- ],
- [
- '167',
- '169',
- 'Class2::func27'
- ],
- [
- '173',
- '175',
- 'Class3::func28'
- ],
- [
- '179',
- '182',
- 'Class7::operator+'
- ],
- [
- '185',
- '187',
- 'Class100::Class100'
- ],
- [
- '189',
- '191',
- 'Class101::~Class101'
- ],
- [
- '193',
- '196',
- 'Class102::Class102'
- ],
- [
- '198',
- '201',
- 'Class103::Class103'
- ],
- [
- '208',
- '210',
- 'Struct1::func29'
- ],
- [
- '213',
- '215',
- 'Struct2::func30'
- ],
- [
- '220',
- '222',
- 'NameSpace1::func30'
- ],
- [
- '229',
- '231',
- 'NameSpace1::NameSpace2::func31'
- ],
- [
- '255',
- '259',
- 'Class106::func32'
- ],
- [
- '262',
- '266',
- 'Class106::func33'
- ],
- [
- '291',
- '295',
- 'NameSpace5::NameSpace6::Class107::func34'
- ],
- [
- '308',
- '320',
- 'Class108::func35'
- ],
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp
deleted file mode 100644
index 015a69479..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/cpp_unittests.cpp
+++ /dev/null
@@ -1,389 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * 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.
- */
-
-void func1()
-{
-}
-
-void func2()
-{
- return 123;
-}
-
-void func3() { return 123; }
-
-void func4();
-
-void func5()
-{
- /* comment */
-}
-
-/*
-void funcInsideComment()
-{
-}
-*/
-
-void func6()
-{
-}
-
-#define MACRO 123 \
- 456 \
- 789
-
-void func7()
-{
-}
-
-#if 1 || 1 || \
- 1 || 1 || 1
-void func8()
-{
-}
-#else
-void func9()
-{
-}
-#endif
-
-void func10()
-{
-}
-
-std::string str = "abcde"
-"void funcInsideDoubleQuotedString()"
-"{"
-"}";
-
-void func11()
-{
-}
-
-std::string str = 'abcde'
-'void funcInsideSingleQuotedString()'
-'{'
-'}';
-
-void func12(int a)
-{
-}
-
-void func13(int a, int b, int c)
-{
-}
-
-void func14(int a, int b,
- int c, int d
- , int e, int f)
-{
-}
-
-void func15
- (int a, int b)
-{
-}
-
-void funcOverloaded()
-{
-}
-
-void funcOverloaded(int a)
-{
-}
-
-void funcOverloaded(float a)
-{
-}
-
-void Class::func16()
-{
-}
-
-void Class1::Class2::func17()
-{
-}
-
-static void Class2::func18()
-{
-}
-
-inline void Class2::func19()
-{
-}
-
-const void Class2::func20()
-{
-}
-
-Class1::Type Class2::func21()
-{
-}
-
-inline static const Class1::Type Class2::func22()
-{
-}
-
-template<class T> void func23(T t)
-{
-}
-
-template<class T>
-void func24(T t)
-{
-}
-
-inline static Class1::Type Class2::func25()
-{
-}
-
-class Class1 {
-public:
- void func26();
-};
-
-void Class1::func26()
-{
-}
-
-class Class2 {
- void func27()
- {
- }
-};
-
-class Class3 : public Class4, Class5, Class6 {
- void func28()
- {
- }
-};
-
-class Class7 {
- int operator+()
- {
- return 123;
- }
-};
-
-Class100::Class100()
-{
-}
-
-Class101::~Class101()
-{
-}
-
-Class102::Class102() :
- member(1), member(2)
-{
-}
-
-Class103::Class103()
- : member(1), member(2)
-{
-}
-
-struct Struct1 {
-public:
- void func29();
-};
-
-void Struct1::func29()
-{
-}
-
-struct Struct2 {
- void func30()
- {
- }
-};
-
-namespace NameSpace1 {
-
-void func30()
-{
-}
-
-}
-
-namespace NameSpace1 {
-namespace NameSpace2 {
-
-void func31()
-{
-}
-
-}
-}
-
-class Class104 {
- int a;
- int b;
- int c;
- int d;
-};
-
-class Class105 {
-public:
- int a;
- int b;
-private:
- int c;
- int d;
-};
-
-class Class106 {
- int a;
- int b;
- void func32()
- {
- int c;
- int d;
- }
- int e;
- int f;
- void func33()
- {
- int g;
- int h;
- }
- int i;
- int j;
-};
-
-namespace NameSpace3 {
-int a;
-int b;
-namespace NameSpace4 {
-int c;
-int d;
-};
-int e;
-int f;
-};
-
-namespace NameSpace5 {
-int a;
-int b;
-namespace NameSpace6 {
-int c;
-int d;
-class Class107 {
- int e;
- int f;
- void func34()
- {
- int g;
- int h;
- }
- int i;
- int j;
-};
-int k;
-int ll;
-};
-int m;
-int n;
-};
-
-class Class108 {
- int a;
- void func35()
- {
- int b;
- if (1) {
- int c;
- for (;;) {
- int d;
- int e;
- }
- int f;
- }
- int g;
- }
- int h;
-};
-
-int a[] = { };
-int a[] = {
-};
-int a[] = { 1, 2, 3 };
-int a[] = {
- 1,
- 2,
- 3
-};
-int a[3] = { 1, 2, 3 };
-int a[][3] = { {1, 2, 3}, {4, 5, 6} };
-int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
-extern int a[];
-char a[4] = "test";
-
-namespace NameSpace7 {
-int a[] = { };
-int a[] = {
-};
-int a[] = { 1, 2, 3 };
-int a[] = {
- 1,
- 2,
- 3
-};
-int a[3] = { 1, 2, 3 };
-int a[][3] = { {1, 2, 3}, {4, 5, 6} };
-int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
-extern int a[];
-char a[4] = "test";
-
-namespace NameSpace8 {
-int a[] = { };
-int a[] = {
-};
-int a[] = { 1, 2, 3 };
-int a[] = {
- 1,
- 2,
- 3
-};
-int a[3] = { 1, 2, 3 };
-int a[][3] = { {1, 2, 3}, {4, 5, 6} };
-int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
-extern int a[];
-char a[4] = "test";
-};
-
-class Class109 {
- int a[] = { };
- int a[] = {
- };
- int a[] = { 1, 2, 3 };
- int a[] = {
- 1,
- 2,
- 3
- };
- int a[3] = { 1, 2, 3 };
- int a[][3] = { {1, 2, 3}, {4, 5, 6} };
- int a[2][3] = { {1, 2, 3}, {4, 5, 6} };
- extern int a[];
- char a[4] = "test";
-};
-
-};
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt
deleted file mode 100644
index cacd783b5..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests-expected.txt
+++ /dev/null
@@ -1,96 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '20',
- '21',
- 'element1'
- ],
- [
- '23',
- '23',
- 'element2'
- ],
- [
- '25',
- '27',
- 'element3'
- ],
- [
- '29',
- '30',
- 'element4.p'
- ],
- [
- '32',
- '33',
- 'element5.p.q.r.s'
- ],
- [
- '35',
- '36',
- 'element6#p'
- ],
- [
- '38',
- '39',
- 'element7 element8'
- ],
- [
- '41',
- '42',
- 'element9.p element10.q'
- ],
- [
- '44',
- '45',
- 'element11#p element12#q'
- ],
- [
- '47',
- '48',
- 'element13, element14'
- ],
- [
- '50',
- '51',
- '.p'
- ],
- [
- '53',
- '55',
- '#p'
- ],
- [
- '57',
- '58',
- '.p element15 #q element16.r element17#s'
- ],
- [
- '60',
- '61',
- 'element18:target'
- ],
- [
- '63',
- '65',
- 'element19'
- ],
- [
- '67',
- '69',
- 'element20'
- ],
- [
- '71',
- '74',
- 'element21'
- ],
- [
- '76',
- '79',
- 'element22'
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css
deleted file mode 100644
index 4bd172ec1..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests.css
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * 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.
- */
-
-element1 {
-}
-
-element2 { }
-
-element3
-{
-}
-
-element4.p {
-}
-
-element5.p.q.r.s {
-}
-
-element6#p {
-}
-
-element7 element8 {
-}
-
-element9.p element10.q {
-}
-
-element11#p element12#q {
-}
-
-element13, element14 {
-}
-
-.p {
-}
-
-#p {
-
-}
-
-.p element15 #q element16.r element17#s {
-}
-
-element18:target {
-}
-
-element19 {
- property1: 123
-}
-
-element20 {
- property1: 123;
-}
-
-element21 {
- property1: 123;
- property2: 456;
-}
-
-element22 {
- property1: 123;
- /* comment */
-}
-
-/*
-elementInsideComment {
- property1: 123;
-}
-*/
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt
deleted file mode 100644
index 27a5399f4..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning-expected.txt
+++ /dev/null
@@ -1,59 +0,0 @@
-{
- 'stderr' => 'mismatched comment found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched comment found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched comment found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched brace found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched brace found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched brace found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched brace found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-mismatched brace found in Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
-',
- 'stdout' => '',
- 'ranges' => [
- [
- '20',
- '22',
- 'element1'
- ],
- [
- '24',
- '26',
- 'element2'
- ],
- [
- '28',
- '30',
- 'element3'
- ],
- [
- '32',
- '33',
- 'element4'
- ],
- [
- 0,
- '34',
- ''
- ],
- [
- '36',
- '38',
- 'element5'
- ],
- [
- '40',
- '41',
- 'element6'
- ],
- [
- 0,
- '42',
- ''
- ],
- [
- 0,
- '47',
- ''
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
deleted file mode 100644
index 41b7b67ea..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/css_unittests_warning.css
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * 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.
- */
-
-element1 {
- /* comment mismatched */ */
-}
-
-element2 {
- */ /* comment mismatched */
-}
-
-element3 {
- */
-}
-
-element4 {
- { } /* brace mismatched */
-}
-
-element5 {
- { /* brace mismatched */
-}
-
-element6 {
- } /* brace mismatched */
-}
-
-{
-element7 {
- /* brace mismatched */
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt
deleted file mode 100644
index 6f37c67f6..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests-expected.txt
+++ /dev/null
@@ -1,321 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '20',
- '26',
- 'Simple'
- ],
- [
- '26',
- '28',
- 'Simple.func1'
- ],
- [
- '29',
- '30',
- 'Simple'
- ],
- [
- '30',
- '33',
- 'Simple.func2'
- ],
- [
- '34',
- '34',
- 'Simple'
- ],
- [
- '35',
- '37',
- 'Simple.func3'
- ],
- [
- '38',
- '38',
- 'Simple'
- ],
- [
- '39',
- '39',
- 'Simple.func4'
- ],
- [
- '40',
- '41',
- 'Simple'
- ],
- [
- '41',
- '44',
- 'Simple.func5'
- ],
- [
- '45',
- '52',
- 'Simple'
- ],
- [
- '52',
- '54',
- 'Simple.func6'
- ],
- [
- '55',
- '56',
- 'Simple'
- ],
- [
- '56',
- '58',
- 'Simple.func7'
- ],
- [
- '59',
- '62',
- 'Simple'
- ],
- [
- '60',
- '64',
- 'Simple.func8'
- ],
- [
- '65',
- '67',
- 'Simple'
- ],
- [
- '66',
- '69',
- 'Simple.func9'
- ],
- [
- '70',
- '71',
- 'Simple'
- ],
- [
- '71',
- '73',
- 'Simple.func10'
- ],
- [
- '74',
- '75',
- 'Simple'
- ],
- [
- '75',
- '77',
- 'Simple.funcOverloaded'
- ],
- [
- '78',
- '79',
- 'Simple'
- ],
- [
- '79',
- '81',
- 'Simple.funcOverloaded'
- ],
- [
- '82',
- '83',
- 'Simple'
- ],
- [
- '83',
- '85',
- 'Simple.funcOverloaded'
- ],
- [
- '86',
- '87',
- 'Simple'
- ],
- [
- '87',
- '89',
- 'Simple.func11'
- ],
- [
- '90',
- '91',
- 'Simple'
- ],
- [
- '91',
- '93',
- 'Simple.func12'
- ],
- [
- '94',
- '95',
- 'Simple'
- ],
- [
- '95',
- '97',
- 'Simple.func13'
- ],
- [
- '98',
- '99',
- 'Simple'
- ],
- [
- '99',
- '101',
- 'Simple.func14'
- ],
- [
- '102',
- '103',
- 'Simple'
- ],
- [
- '103',
- '105',
- 'Simple.func15'
- ],
- [
- '106',
- '107',
- 'Simple'
- ],
- [
- '107',
- '109',
- 'Simple.func16'
- ],
- [
- '110',
- '111',
- 'Simple'
- ],
- [
- '111',
- '113',
- 'Simple.func17'
- ],
- [
- '114',
- '115',
- 'Simple'
- ],
- [
- '115',
- '117',
- 'Simple.func18'
- ],
- [
- '118',
- '119',
- 'Simple'
- ],
- [
- '119',
- '121',
- 'Simple.func19'
- ],
- [
- '122',
- '123',
- 'Simple'
- ],
- [
- '123',
- '125',
- 'Simple.func20'
- ],
- [
- '126',
- '127',
- 'Simple'
- ],
- [
- '127',
- '129',
- 'Simple.func21'
- ],
- [
- '130',
- '130',
- 'Simple'
- ],
- [
- '135',
- '137',
- 'Derived1'
- ],
- [
- '137',
- '139',
- 'Derived1.Derived1'
- ],
- [
- '140',
- '141',
- 'Derived1'
- ],
- [
- '141',
- '143',
- 'Derived1.func22'
- ],
- [
- '144',
- '144',
- 'Derived1'
- ],
- [
- '146',
- '148',
- 'Interface1'
- ],
- [
- '150',
- '154',
- 'Interface2'
- ],
- [
- '154',
- '156',
- 'Interface2.func23'
- ],
- [
- '157',
- '157',
- 'Interface2'
- ],
- [
- '159',
- '161',
- 'Derived2'
- ],
- [
- '161',
- '163',
- 'Derived2.Derived2'
- ],
- [
- '164',
- '165',
- 'Derived2'
- ],
- [
- '165',
- '167',
- 'Derived2.func23'
- ],
- [
- '168',
- '168',
- 'Derived2'
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests.java b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests.java
deleted file mode 100644
index ebee914f9..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/java_unittests.java
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * 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.
- */
-
-public class Simple
-{
- int a;
- String b;
- final int c = 12345;
-
- void func1()
- {
- }
-
- void func2()
- {
- return 123;
- }
-
- void func3() {
- return 123;
- }
-
- void func4() { return 123; }
-
- void func5()
- {
- /* comment */
- }
-
- /*
- void funcInsideComment()
- {
- }
- */
-
- void func6(int a)
- {
- }
-
- void func7(int a, int b, int c)
- {
- }
-
- void func8(int a, int b,
- int c, int d
- , int e, int f)
- {
- }
-
- void func9
- (int a, int b)
- {
- }
-
- LinkedList func10()
- {
- }
-
- void funcOverloaded()
- {
- }
-
- void funcOverloaded(int a)
- {
- }
-
- void funcOverloaded(float a)
- {
- }
-
- static void func11()
- {
- }
-
- public void func12()
- {
- }
-
- protected void func13()
- {
- }
-
- private void func14()
- {
- }
-
- static void func15()
- {
- }
-
- final void func16()
- {
- }
-
- abstract void func17()
- {
- }
-
- synchronized void func18()
- {
- }
-
- final static public synchronized void func19()
- {
- }
-
- void func20() throws IOException
- {
- }
-
- void func21() throws IOException, ArithmeticException
- {
- }
-}
-
-import java.util.*;
-import java.math.*;
-
-class Derived1 extends Base
-{
- public Derived1()
- {
- }
-
- public func22()
- {
- }
-}
-
-interface Interface1
-{
-}
-
-interface Interface2
-{
- int a;
-
- void func23()
- {
- }
-}
-
-class Derived2 extends Base interface Interface1, Interface2
-{
- public Derived2()
- {
- }
-
- public func23()
- {
- }
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt
deleted file mode 100644
index 35a308085..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests-expected.txt
+++ /dev/null
@@ -1,136 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '20',
- '22',
- 'func1'
- ],
- [
- '24',
- '25',
- 'func2'
- ],
- [
- '27',
- '27',
- 'func3'
- ],
- [
- '29',
- '32',
- 'func4'
- ],
- [
- '34',
- '37',
- 'func5'
- ],
- [
- '39',
- '42',
- 'func6'
- ],
- [
- '50',
- '52',
- 'func7'
- ],
- [
- '56',
- '58',
- 'func8'
- ],
- [
- '62',
- '64',
- 'func9'
- ],
- [
- '66',
- '68',
- 'func10'
- ],
- [
- '70',
- '73',
- 'func11'
- ],
- [
- '75',
- '79',
- 'func12'
- ],
- [
- '81',
- '83',
- 'funcOverloaded'
- ],
- [
- '85',
- '87',
- 'funcOverloaded'
- ],
- [
- '89',
- '91',
- 'funcOverloaded'
- ],
- [
- '94',
- '96',
- 'Func1.prototype.get x1'
- ],
- [
- '98',
- '101',
- 'Func1.prototype.get x2'
- ],
- [
- '103',
- '105',
- 'Func1.prototype.set x1'
- ],
- [
- '107',
- '110',
- 'Func1.prototype.set x3'
- ],
- [
- '114',
- '116',
- 'Func2.prototype.func13'
- ],
- [
- '118',
- '120',
- 'Func2.prototype.func14'
- ],
- [
- '122',
- '125',
- 'Func2.prototype.func15'
- ],
- [
- '133',
- '134',
- 'func16.func17'
- ],
- [
- '136',
- '137',
- 'func16.func18'
- ],
- [
- '139',
- '141',
- 'func16.func19'
- ],
- [
- '128',
- '150',
- 'func16'
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js
deleted file mode 100644
index 93d1d4ccf..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/javascript_unittests.js
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2011 Google Inc. All rights reserved.
- *
- * 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.
- */
-
-function func1()
-{
-}
-
-function func2() {
-}
-
-function func3() { }
-
-function func4()
-{
- return 123;
-}
-
-function func5()
-{
- // comment
-}
-
-function func6()
-{
- /* comment */
-}
-
-/*
-function funcInsideComment()
-{
-}
-*/
-
-function func7()
-{
-}
-
-var str1 = "function funcInsideDoubleQuotedString() {}";
-
-function func8()
-{
-}
-
-var str2 = 'function funcInsideSingleQuotedString() {}';
-
-function func9(a)
-{
-}
-
-function func10(a, b)
-{
-}
-
-function func11
- (a, b)
-{
-}
-
-function func12(a, b,
- c, d
- , e, f)
-{
-}
-
-function funcOverloaded()
-{
-}
-
-function funcOverloaded(a)
-{
-}
-
-function funcOverloaded(a, b)
-{
-}
-
-Func1.prototype = {
- get x1()
- {
- },
-
- get x2()
- {
- return this.x2;
- },
-
- set x1(a)
- {
- },
-
- set x3(a)
- {
- this.x3 = a;
- }
-};
-
-Func2.prototype = {
- func13 : function()
- {
- },
-
- func14 : function(a)
- {
- },
-
- func15 : function(a, b)
- {
- return 123;
- }
-};
-
-function func16()
-{
- var a = 123;
- var b = 456;
-
- var func17 = function() {
- };
-
- var func18 = function(a) {
- };
-
- var func19 = function(a, b) {
- return 123;
- };
-
- func20(function()
- {
- },
- function(a)
- {
- return 123;
- });
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt
deleted file mode 100644
index d5a2ce9be..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests-expected.txt
+++ /dev/null
@@ -1,86 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '21',
- '23',
- 'func1'
- ],
- [
- '25',
- '28',
- 'func2'
- ],
- [
- '30',
- '34',
- 'func3'
- ],
- [
- '36',
- '38',
- 'func4'
- ],
- [
- '40',
- '42',
- 'func5'
- ],
- [
- '44',
- '46',
- 'func6'
- ],
- [
- '48',
- '53',
- 'func7'
- ],
- [
- '55',
- '60',
- 'func8'
- ],
- [
- '62',
- '67',
- 'func9'
- ],
- [
- '69',
- '76',
- 'func10'
- ],
- [
- '78',
- '88',
- 'func11'
- ],
- [
- '90',
- '100',
- 'func12'
- ],
- [
- '102',
- '111',
- 'func13'
- ],
- [
- '113',
- '118',
- 'func14'
- ],
- [
- '120',
- '125',
- 'func15'
- ],
- [
- '127',
- '128',
- 'func16'
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl
deleted file mode 100644
index ed869f3d2..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/perl_unittests.pl
+++ /dev/null
@@ -1,143 +0,0 @@
-#!/usr/bin/perl -w
-#
-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# 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.
-#
-
-sub func1
-{
-}
-
-sub func2
-{
- return 123;
-}
-
-sub func3
-{
- return 123;
- return 456;
-}
-
-sub func4()
-{
-}
-
-sub func5($$$$)
-{
-}
-
-sub func6(\@\@\$\$\$\$)
-{
-}
-
-sub func7
-{
- $str =<< EOF;
-
-EOF
-}
-
-sub func8
-{
- $str =<< "EOF";
-
-EOF
-}
-
-sub func9
-{
- $str =<< 'EOF';
-
-EOF
-}
-
-sub func10
-{
- $str =<< EOF;
-sub funcInHereDocument1
-{
-}
-EOF
-}
-
-sub func11
-{
- $str =<< EOF;
-sub funcInHereDocument2
-{
-}
-sub funcInHereDocument3
-{
-}
-EOF
-}
-
-sub func12
-{
- $str =<< EOF;
-{
-{
-{
-}
-}
-}
-EOF
-}
-
-sub func13
-{
- $str =<< EOF;
-
-$str << DUMMY_EOF
-
-DUMMY_EOF
-
-EOF
-}
-
-sub func14
-{
- push(@array, << EOF);
-
-EOF
-}
-
-sub func15
-{
- print << EOF;
-
-EOF
-}
-
-sub func16 {
-}
-
-sub prototypeDeclaration1;
-sub prototypeDeclaration2();
-sub prototypeDeclaration3(\@$$);
-
-if (1) {
-}
-
-for (@array) {
-}
-
-{}
-
-{
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt
deleted file mode 100644
index 8dad37e82..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests-expected.txt
+++ /dev/null
@@ -1,131 +0,0 @@
-{
- 'stderr' => '',
- 'stdout' => '',
- 'ranges' => [
- [
- '21',
- '23',
- 'func1'
- ],
- [
- '24',
- '27',
- 'func2'
- ],
- [
- '28',
- '34',
- 'func3'
- ],
- [
- '35',
- '38',
- 'func4'
- ],
- [
- '39',
- '42',
- 'func5'
- ],
- [
- '43',
- '47',
- 'func6'
- ],
- [
- '48',
- '51',
- 'funcOverloaded'
- ],
- [
- '52',
- '55',
- 'funcOverloaded'
- ],
- [
- '56',
- '59',
- 'funcOverloaded'
- ],
- [
- '60',
- '62',
- 'func7'
- ],
- [
- '63',
- '65',
- 'func7.func8'
- ],
- [
- '66',
- '67',
- 'func7.func8.func9'
- ],
- [
- '68',
- '68',
- 'func7.func8'
- ],
- [
- '69',
- '71',
- 'func7'
- ],
- [
- '72',
- '75',
- 'Class1'
- ],
- [
- '76',
- '78',
- 'Class2'
- ],
- [
- '79',
- '81',
- 'Class2.Class3'
- ],
- [
- '82',
- '83',
- 'Class2.Class3.Class4'
- ],
- [
- '84',
- '84',
- 'Class2.Class3'
- ],
- [
- '85',
- '87',
- 'Class2'
- ],
- [
- '88',
- '90',
- 'Class5'
- ],
- [
- '91',
- '92',
- 'Class5.func10'
- ],
- [
- '93',
- '94',
- 'Class5'
- ],
- [
- '95',
- '96',
- 'Class5.func11'
- ],
- [
- '97',
- '97',
- 'Class5'
- ]
- ]
-}
diff --git a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py b/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py
deleted file mode 100644
index 1a19cc29c..000000000
--- a/Tools/Scripts/webkitperl/prepare-ChangeLog_unittest/resources/python_unittests.py
+++ /dev/null
@@ -1,97 +0,0 @@
-#
-# Copyright (C) 2011 Google Inc. All rights reserved.
-#
-# 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.
-#
-
-
-def func1():
-
-
-def func2():
- return
-
-
-def func3():
- # comment
- return
-
-# def funcInsideComment():
-
-
-def func4(a):
- return
-
-
-def func5(a, b, c):
- return
-
-
-def func6(a, b, \
- c, d):
- return
-
-
-def funcOverloaded(a):
- return
-
-
-def funcOverloaded(a, b):
- return
-
-
-def funcOverloaded(a, b, c=100):
- return
-
-
-def func7():
- pass
-
- def func8():
- pass
-
- def func9():
- pass
- pass
- pass
-
-
-class Class1:
- pass
-
-
-class Class2:
- pass
-
- class Class3:
- pass
-
- class Class4:
- pass
- pass
- pass
-
-
-class Class5:
- pass
-
- def func10():
- pass
- pass
-
- def func11():
- pass
- pass
diff --git a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl b/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl
deleted file mode 100644
index 3f315c3ac..000000000
--- a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v1.0.pl
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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. 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 INC. 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.
-
-# tests run-leaks using original leaks report version 1.0
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use lib File::Spec->catdir($FindBin::Bin, "..");
-use Test::More;
-use LoadAsModule qw(RunLeaks run-leaks);
-
-my @input = split(/\n/, <<EOF);
-Process 1602: 86671 nodes malloced for 13261 KB
-Process 1602: 8 leaks for 160 total leaked bytes.
-Leak: 0x114d54708 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x18571798 0x00000001 0x00000000 0x00000000 ..W.............
-Leak: 0x1184b92b8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x184b9048 0x00000001 0x00000000 0x00000000 H.K.............
-Leak: 0x1184c84c8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1854e3d8 0x00000001 0x00000000 0x00000000 ..T.............
-Leak: 0x11854e3d8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1854e360 0x00000001 0x00000000 0x00000000 `.T.............
-Leak: 0x118571798 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x184c84c8 0x00000001 0x00000000 0x00000000 ..L.............
-Leak: 0x11858b498 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1858b4e0 0x00000001 0x00000000 0x00000000 ..X.............
-Leak: 0x118572530 size=8 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
-Leak: 0x118572538 size=8 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
-EOF
-
-my $expectedOutput =
-[
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x114d54708 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x18571798 0x00000001 0x00000000 0x00000000 ..W.............
-EOF
- 'callStack' => '',
- 'address' => '0x114d54708',
- 'size' => '24',
- 'type' => '',
- },
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x1184b92b8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x184b9048 0x00000001 0x00000000 0x00000000 H.K.............
-EOF
- 'callStack' => '',
- 'address' => '0x1184b92b8',
- 'size' => '24',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x1184c84c8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1854e3d8 0x00000001 0x00000000 0x00000000 ..T.............
-EOF
- 'callStack' => '',
- 'address' => '0x1184c84c8',
- 'size' => '24',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x11854e3d8 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1854e360 0x00000001 0x00000000 0x00000000 `.T.............
-EOF
- 'callStack' => '',
- 'address' => '0x11854e3d8',
- 'size' => '24',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x118571798 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x184c84c8 0x00000001 0x00000000 0x00000000 ..L.............
-EOF
- 'callStack' => '',
- 'address' => '0x118571798',
- 'size' => '24',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x11858b498 size=24 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
- 0x1858b4e0 0x00000001 0x00000000 0x00000000 ..X.............
-EOF
- 'callStack' => '',
- 'address' => '0x11858b498',
- 'size' => '24',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x118572530 size=8 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
-EOF
- 'callStack' => '',
- 'address' => '0x118572530',
- 'size' => '8',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x118572538 size=8 zone: JavaScriptCore FastMalloc_0x7fff70a09d20
-
-EOF
- 'callStack' => '',
- 'address' => '0x118572538',
- 'size' => '8',
- 'type' => '',
- },
-];
-
-my $actualOutput = RunLeaks::parseLeaksOutput(@input);
-
-plan(tests => 1);
-is_deeply($actualOutput, $expectedOutput, "leaks Report Version 1.0 - no call stack");
diff --git a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl b/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl
deleted file mode 100644
index c4b6b2cda..000000000
--- a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-new.pl
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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. 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 INC. 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.
-
-# tests run-leaks using "new" leaks report version 2.0
-# - The "new" 2.0 format has "leaks Report Version: 2.0" after the two header sections.
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use lib File::Spec->catdir($FindBin::Bin, "..");
-use Test::More;
-use LoadAsModule qw(RunLeaks run-leaks);
-
-my @input = split(/\n/, <<EOF);
-Process: DumpRenderTree [29903]
-Path: /Volumes/Data/Build/Debug/DumpRenderTree
-Load Address: 0x102116000
-Identifier: DumpRenderTree
-Version: ??? (???)
-Code Type: X86-64 (Native)
-Parent Process: Python [29892]
-
-Date/Time: 2011-11-14 11:12:45.706 -0800
-OS Version: Mac OS X 10.7.2 (11C74)
-Report Version: 7
-
-leaks Report Version: 2.0
-leaks(12871,0xacdfa2c0) malloc: process 89617 no longer exists, stack logs deleted from /tmp/stack-logs.89617.DumpRenderTree.A2giy6.index
-Process 29903: 60015 nodes malloced for 7290 KB
-Process 29903: 2 leaks for 1008 total leaked bytes.
-Leak: 0x7f9a3a612810 size=576 zone: DefaultMallocZone_0x10227b000 URLConnectionLoader::LoaderConnectionEventQueue C++ CFNetwork
- 0x7f3af460 0x00007fff 0x7edf2f40 0x00007fff `.:.....@/.~....
- 0x7f3af488 0x00007fff 0xdab071b1 0x0000f068 ..:......q..h...
- 0x0100000a 0x00000000 0x7edf3f50 0x00007fff ........P?.~....
- 0x00000000 0x00000000 0xdab071cc 0x0000f068 .........q..h...
- 0x01000010 0x00000000 0x3a616210 0x00007f9a .........ba:....
- 0x00000000 0x00000000 0xdab071e5 0x0000f068 .........q..h...
- 0x00000000 0x00000000 0x00000000 0x00000000 ................
- 0x00000000 0x00000000 0xdab07245 0x0000f068 ........Er..h...
- ...
- Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSources0 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ | MultiplexerSource::perform() | URLConnectionClient::processEvents() | URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) | URLConnectionClient::_clientWillSendRequest(_CFURLRequest const*, _CFURLResponse*, URLConnectionClient::ClientConnectionEventQueue*) | URLConnectionClient::getRequestForTransmission(unsigned char, _CFURLResponse*, _CFURLRequest const*, __CFError**) | URLConnectionLoader::pushLoaderEvent(XConnectionEventInfo<XLoaderEvent, XLoaderEventParams>*) | CFAllocatedObject::operator new(unsigned long, __CFAllocator const*) | malloc_zone_malloc
-Leak: 0x7f9a3a618090 size=432 zone: DefaultMallocZone_0x10227b000 URLConnectionInstanceData CFType CFNetwork
- 0x7edcab28 0x00007fff 0x00012b80 0x00000001 (..~.....+......
- 0x7f3af310 0x00007fff 0x7f3af3f8 0x00007fff ..:.......:.....
- 0x4d555458 0x00000000 0x00000000 0x00002068 XTUM........h ..
- 0x00000000 0x00000000 0x00000c00 0x00000c00 ................
- 0x00000000 0x00000000 0x3a6180c8 0x00007f9a ..........a:....
- 0x3a6180cc 0x00007f9a 0x00000000 0x00000000 ..a:............
- 0x7f3af418 0x00007fff 0x3a618060 0x00007f9a ..:.....`.a:....
- 0x7f3af440 0x00007fff 0x00005813 0x00000001 @.:......X......
- ...
- Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoTimer | __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ | _ZN7WebCoreL10timerFiredEP16__CFRunLoopTimerPv SharedTimerMac.mm:167 | WebCore::ThreadTimers::sharedTimerFired() ThreadTimers.cpp:94 | WebCore::ThreadTimers::sharedTimerFiredInternal() ThreadTimers.cpp:118 | WebCore::Timer<WebCore::DocumentLoader>::fired() Timer.h:100 | WebCore::DocumentLoader::substituteResourceDeliveryTimerFired(WebCore::Timer<WebCore::DocumentLoader>*) DocumentLoader.cpp:600 | WebCore::SubresourceLoader::didFinishLoading(double) SubresourceLoader.cpp:191 | WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader*, double) CachedResourceRequest.cpp:196 | WebCore::CachedRawResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedRawResource.cpp:67 | WebCore::CachedResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedResource.cpp:166 | WebCore::CachedResource::checkNotify() CachedResource.cpp:156 | non-virtual thunk to WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) | WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) DocumentThreadableLoader.cpp:262 | WebCore::DocumentThreadableLoader::didFinishLoading(unsigned long, double) DocumentThreadableLoader.cpp:277 | non-virtual thunk to WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) | WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) XMLHttpRequest.cpp:1008 | WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequest::State) XMLHttpRequest.cpp:329 | WebCore::XMLHttpRequest::callReadyStateChangeListener() XMLHttpRequest.cpp:345 | WebCore::XMLHttpRequestProgressEventThrottle::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, WebCore::ProgressEventAction) XMLHttpRequestProgressEventThrottle.cpp:81 | WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) EventTarget.cpp:176 | WebCore::EventTarget::fireEventListeners(WebCore::Event*) EventTarget.cpp:199 | WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&) EventTarget.cpp:214 | WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) JSEventListener.cpp:128 | WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) JSMainThreadExecState.h:52 | JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) CallData.cpp:39 | JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) Interpreter.cpp:986 | JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*) JITCode.h:115 | 0x2298f4c011f8 | WebCore::jsXMLHttpRequestPrototypeFunctionSend(JSC::ExecState*) JSXMLHttpRequest.cpp:604 | WebCore::JSXMLHttpRequest::send(JSC::ExecState*) JSXMLHttpRequestCustom.cpp:132 | WebCore::XMLHttpRequest::send(WTF::String const&, int&) XMLHttpRequest.cpp:544 | WebCore::XMLHttpRequest::createRequest(int&) XMLHttpRequest.cpp:665 | WebCore::ThreadableLoader::create(WebCore::ScriptExecutionContext*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) ThreadableLoader.cpp:54 | WebCore::DocumentThreadableLoader::create(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:65 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:111 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:88 | WebCore::DocumentThreadableLoader::loadRequest(WebCore::ResourceRequest const&, WebCore::SecurityCheckPolicy) DocumentThreadableLoader.cpp:337 | WebCore::CachedResourceLoader::requestRawResource(WebCore::ResourceRequest&, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:225 | WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoaderOptions const&, WebCore::ResourceLoadPriority, bool) CachedResourceLoader.cpp:400 | WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:469 | WebCore::CachedResource::load(WebCore::CachedResourceLoader*, WebCore::ResourceLoaderOptions const&) CachedResource.cpp:142 | WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader*, WebCore::CachedResource*, WebCore::ResourceLoaderOptions const&) CachedResourceRequest.cpp:135 | WebCore::ResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame*, WebCore::SubresourceLoaderClient*, WebCore::ResourceRequest const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) ResourceLoadScheduler.cpp:92 | WebCore::ResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:132 | WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:210 | WebCore::ResourceLoader::start() ResourceLoader.cpp:162 | WebCore::ResourceHandle::create(WebCore::NetworkingContext*, WebCore::ResourceRequest const&, WebCore::ResourceHandleClient*, bool, bool) ResourceHandle.cpp:71 | WebCore::ResourceHandle::start(WebCore::NetworkingContext*) ResourceHandleMac.mm:278 | WebCore::ResourceHandle::createNSURLConnection(objc_object*, bool, bool) ResourceHandleMac.mm:238 | -[NSURLConnection(NSURLConnectionPrivate) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] | CFURLConnectionCreateWithProperties | URLConnection::initialize(_CFURLRequest const*, CFURLConnectionClient_V1*, __CFDictionary const*) | CFObject::Allocate(unsigned long, CFClass const&, __CFAllocator const*) | _CFRuntimeCreateInstance | malloc_zone_malloc
-EOF
-
-my $expectedOutput =
-[
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x7f9a3a612810 size=576 zone: DefaultMallocZone_0x10227b000 URLConnectionLoader::LoaderConnectionEventQueue C++ CFNetwork
- 0x7f3af460 0x00007fff 0x7edf2f40 0x00007fff `.:.....@/.~....
- 0x7f3af488 0x00007fff 0xdab071b1 0x0000f068 ..:......q..h...
- 0x0100000a 0x00000000 0x7edf3f50 0x00007fff ........P?.~....
- 0x00000000 0x00000000 0xdab071cc 0x0000f068 .........q..h...
- 0x01000010 0x00000000 0x3a616210 0x00007f9a .........ba:....
- 0x00000000 0x00000000 0xdab071e5 0x0000f068 .........q..h...
- 0x00000000 0x00000000 0x00000000 0x00000000 ................
- 0x00000000 0x00000000 0xdab07245 0x0000f068 ........Er..h...
- ...
- Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSources0 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ | MultiplexerSource::perform() | URLConnectionClient::processEvents() | URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) | URLConnectionClient::_clientWillSendRequest(_CFURLRequest const*, _CFURLResponse*, URLConnectionClient::ClientConnectionEventQueue*) | URLConnectionClient::getRequestForTransmission(unsigned char, _CFURLResponse*, _CFURLRequest const*, __CFError**) | URLConnectionLoader::pushLoaderEvent(XConnectionEventInfo<XLoaderEvent, XLoaderEventParams>*) | CFAllocatedObject::operator new(unsigned long, __CFAllocator const*) | malloc_zone_malloc
-EOF
- 'callStack' =>
-' Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoSources0 | __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ | MultiplexerSource::perform() | URLConnectionClient::processEvents() | URLConnectionClient::ClientConnectionEventQueue::processAllEventsAndConsumePayload(XConnectionEventInfo<XClientEvent, XClientEventParams>*, long) | URLConnectionClient::_clientWillSendRequest(_CFURLRequest const*, _CFURLResponse*, URLConnectionClient::ClientConnectionEventQueue*) | URLConnectionClient::getRequestForTransmission(unsigned char, _CFURLResponse*, _CFURLRequest const*, __CFError**) | URLConnectionLoader::pushLoaderEvent(XConnectionEventInfo<XLoaderEvent, XLoaderEventParams>*) | CFAllocatedObject::operator new(unsigned long, __CFAllocator const*) | malloc_zone_malloc ',
- 'address' => '0x7f9a3a612810',
- 'size' => '576',
- 'type' => '',
- },
-
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x7f9a3a618090 size=432 zone: DefaultMallocZone_0x10227b000 URLConnectionInstanceData CFType CFNetwork
- 0x7edcab28 0x00007fff 0x00012b80 0x00000001 (..~.....+......
- 0x7f3af310 0x00007fff 0x7f3af3f8 0x00007fff ..:.......:.....
- 0x4d555458 0x00000000 0x00000000 0x00002068 XTUM........h ..
- 0x00000000 0x00000000 0x00000c00 0x00000c00 ................
- 0x00000000 0x00000000 0x3a6180c8 0x00007f9a ..........a:....
- 0x3a6180cc 0x00007f9a 0x00000000 0x00000000 ..a:............
- 0x7f3af418 0x00007fff 0x3a618060 0x00007f9a ..:.....`.a:....
- 0x7f3af440 0x00007fff 0x00005813 0x00000001 @.:......X......
- ...
- Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoTimer | __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ | _ZN7WebCoreL10timerFiredEP16__CFRunLoopTimerPv SharedTimerMac.mm:167 | WebCore::ThreadTimers::sharedTimerFired() ThreadTimers.cpp:94 | WebCore::ThreadTimers::sharedTimerFiredInternal() ThreadTimers.cpp:118 | WebCore::Timer<WebCore::DocumentLoader>::fired() Timer.h:100 | WebCore::DocumentLoader::substituteResourceDeliveryTimerFired(WebCore::Timer<WebCore::DocumentLoader>*) DocumentLoader.cpp:600 | WebCore::SubresourceLoader::didFinishLoading(double) SubresourceLoader.cpp:191 | WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader*, double) CachedResourceRequest.cpp:196 | WebCore::CachedRawResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedRawResource.cpp:67 | WebCore::CachedResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedResource.cpp:166 | WebCore::CachedResource::checkNotify() CachedResource.cpp:156 | non-virtual thunk to WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) | WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) DocumentThreadableLoader.cpp:262 | WebCore::DocumentThreadableLoader::didFinishLoading(unsigned long, double) DocumentThreadableLoader.cpp:277 | non-virtual thunk to WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) | WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) XMLHttpRequest.cpp:1008 | WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequest::State) XMLHttpRequest.cpp:329 | WebCore::XMLHttpRequest::callReadyStateChangeListener() XMLHttpRequest.cpp:345 | WebCore::XMLHttpRequestProgressEventThrottle::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, WebCore::ProgressEventAction) XMLHttpRequestProgressEventThrottle.cpp:81 | WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) EventTarget.cpp:176 | WebCore::EventTarget::fireEventListeners(WebCore::Event*) EventTarget.cpp:199 | WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&) EventTarget.cpp:214 | WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) JSEventListener.cpp:128 | WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) JSMainThreadExecState.h:52 | JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) CallData.cpp:39 | JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) Interpreter.cpp:986 | JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*) JITCode.h:115 | 0x2298f4c011f8 | WebCore::jsXMLHttpRequestPrototypeFunctionSend(JSC::ExecState*) JSXMLHttpRequest.cpp:604 | WebCore::JSXMLHttpRequest::send(JSC::ExecState*) JSXMLHttpRequestCustom.cpp:132 | WebCore::XMLHttpRequest::send(WTF::String const&, int&) XMLHttpRequest.cpp:544 | WebCore::XMLHttpRequest::createRequest(int&) XMLHttpRequest.cpp:665 | WebCore::ThreadableLoader::create(WebCore::ScriptExecutionContext*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) ThreadableLoader.cpp:54 | WebCore::DocumentThreadableLoader::create(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:65 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:111 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:88 | WebCore::DocumentThreadableLoader::loadRequest(WebCore::ResourceRequest const&, WebCore::SecurityCheckPolicy) DocumentThreadableLoader.cpp:337 | WebCore::CachedResourceLoader::requestRawResource(WebCore::ResourceRequest&, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:225 | WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoaderOptions const&, WebCore::ResourceLoadPriority, bool) CachedResourceLoader.cpp:400 | WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:469 | WebCore::CachedResource::load(WebCore::CachedResourceLoader*, WebCore::ResourceLoaderOptions const&) CachedResource.cpp:142 | WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader*, WebCore::CachedResource*, WebCore::ResourceLoaderOptions const&) CachedResourceRequest.cpp:135 | WebCore::ResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame*, WebCore::SubresourceLoaderClient*, WebCore::ResourceRequest const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) ResourceLoadScheduler.cpp:92 | WebCore::ResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:132 | WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:210 | WebCore::ResourceLoader::start() ResourceLoader.cpp:162 | WebCore::ResourceHandle::create(WebCore::NetworkingContext*, WebCore::ResourceRequest const&, WebCore::ResourceHandleClient*, bool, bool) ResourceHandle.cpp:71 | WebCore::ResourceHandle::start(WebCore::NetworkingContext*) ResourceHandleMac.mm:278 | WebCore::ResourceHandle::createNSURLConnection(objc_object*, bool, bool) ResourceHandleMac.mm:238 | -[NSURLConnection(NSURLConnectionPrivate) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] | CFURLConnectionCreateWithProperties | URLConnection::initialize(_CFURLRequest const*, CFURLConnectionClient_V1*, __CFDictionary const*) | CFObject::Allocate(unsigned long, CFClass const&, __CFAllocator const*) | _CFRuntimeCreateInstance | malloc_zone_malloc
-EOF
- 'callStack' =>
-' Call stack: [thread 0x7fff7e3b4960]: | start | main DumpRenderTree.mm:835 | dumpRenderTree(int, char const**) DumpRenderTree.mm:794 | _ZL20runTestingServerLoopv DumpRenderTree.mm:744 | _ZL7runTestRKSs DumpRenderTree.mm:1273 | -[NSRunLoop(NSRunLoop) runMode:beforeDate:] | CFRunLoopRunSpecific | __CFRunLoopRun | __CFRunLoopDoTimer | __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ | _ZN7WebCoreL10timerFiredEP16__CFRunLoopTimerPv SharedTimerMac.mm:167 | WebCore::ThreadTimers::sharedTimerFired() ThreadTimers.cpp:94 | WebCore::ThreadTimers::sharedTimerFiredInternal() ThreadTimers.cpp:118 | WebCore::Timer<WebCore::DocumentLoader>::fired() Timer.h:100 | WebCore::DocumentLoader::substituteResourceDeliveryTimerFired(WebCore::Timer<WebCore::DocumentLoader>*) DocumentLoader.cpp:600 | WebCore::SubresourceLoader::didFinishLoading(double) SubresourceLoader.cpp:191 | WebCore::CachedResourceRequest::didFinishLoading(WebCore::SubresourceLoader*, double) CachedResourceRequest.cpp:196 | WebCore::CachedRawResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedRawResource.cpp:67 | WebCore::CachedResource::data(WTF::PassRefPtr<WebCore::SharedBuffer>, bool) CachedResource.cpp:166 | WebCore::CachedResource::checkNotify() CachedResource.cpp:156 | non-virtual thunk to WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) | WebCore::DocumentThreadableLoader::notifyFinished(WebCore::CachedResource*) DocumentThreadableLoader.cpp:262 | WebCore::DocumentThreadableLoader::didFinishLoading(unsigned long, double) DocumentThreadableLoader.cpp:277 | non-virtual thunk to WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) | WebCore::XMLHttpRequest::didFinishLoading(unsigned long, double) XMLHttpRequest.cpp:1008 | WebCore::XMLHttpRequest::changeState(WebCore::XMLHttpRequest::State) XMLHttpRequest.cpp:329 | WebCore::XMLHttpRequest::callReadyStateChangeListener() XMLHttpRequest.cpp:345 | WebCore::XMLHttpRequestProgressEventThrottle::dispatchEvent(WTF::PassRefPtr<WebCore::Event>, WebCore::ProgressEventAction) XMLHttpRequestProgressEventThrottle.cpp:81 | WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>) EventTarget.cpp:176 | WebCore::EventTarget::fireEventListeners(WebCore::Event*) EventTarget.cpp:199 | WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul>&) EventTarget.cpp:214 | WebCore::JSEventListener::handleEvent(WebCore::ScriptExecutionContext*, WebCore::Event*) JSEventListener.cpp:128 | WebCore::JSMainThreadExecState::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) JSMainThreadExecState.h:52 | JSC::call(JSC::ExecState*, JSC::JSValue, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) CallData.cpp:39 | JSC::Interpreter::executeCall(JSC::ExecState*, JSC::JSObject*, JSC::CallType, JSC::CallData const&, JSC::JSValue, JSC::ArgList const&) Interpreter.cpp:986 | JSC::JITCode::execute(JSC::RegisterFile*, JSC::ExecState*, JSC::JSGlobalData*) JITCode.h:115 | 0x2298f4c011f8 | WebCore::jsXMLHttpRequestPrototypeFunctionSend(JSC::ExecState*) JSXMLHttpRequest.cpp:604 | WebCore::JSXMLHttpRequest::send(JSC::ExecState*) JSXMLHttpRequestCustom.cpp:132 | WebCore::XMLHttpRequest::send(WTF::String const&, int&) XMLHttpRequest.cpp:544 | WebCore::XMLHttpRequest::createRequest(int&) XMLHttpRequest.cpp:665 | WebCore::ThreadableLoader::create(WebCore::ScriptExecutionContext*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) ThreadableLoader.cpp:54 | WebCore::DocumentThreadableLoader::create(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:65 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:111 | WebCore::DocumentThreadableLoader::DocumentThreadableLoader(WebCore::Document*, WebCore::ThreadableLoaderClient*, WebCore::DocumentThreadableLoader::BlockingBehavior, WebCore::ResourceRequest const&, WebCore::ThreadableLoaderOptions const&) DocumentThreadableLoader.cpp:88 | WebCore::DocumentThreadableLoader::loadRequest(WebCore::ResourceRequest const&, WebCore::SecurityCheckPolicy) DocumentThreadableLoader.cpp:337 | WebCore::CachedResourceLoader::requestRawResource(WebCore::ResourceRequest&, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:225 | WebCore::CachedResourceLoader::requestResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoaderOptions const&, WebCore::ResourceLoadPriority, bool) CachedResourceLoader.cpp:400 | WebCore::CachedResourceLoader::loadResource(WebCore::CachedResource::Type, WebCore::ResourceRequest&, WTF::String const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) CachedResourceLoader.cpp:469 | WebCore::CachedResource::load(WebCore::CachedResourceLoader*, WebCore::ResourceLoaderOptions const&) CachedResource.cpp:142 | WebCore::CachedResourceRequest::load(WebCore::CachedResourceLoader*, WebCore::CachedResource*, WebCore::ResourceLoaderOptions const&) CachedResourceRequest.cpp:135 | WebCore::ResourceLoadScheduler::scheduleSubresourceLoad(WebCore::Frame*, WebCore::SubresourceLoaderClient*, WebCore::ResourceRequest const&, WebCore::ResourceLoadPriority, WebCore::ResourceLoaderOptions const&) ResourceLoadScheduler.cpp:92 | WebCore::ResourceLoadScheduler::scheduleLoad(WebCore::ResourceLoader*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:132 | WebCore::ResourceLoadScheduler::servePendingRequests(WebCore::ResourceLoadScheduler::HostInformation*, WebCore::ResourceLoadPriority) ResourceLoadScheduler.cpp:210 | WebCore::ResourceLoader::start() ResourceLoader.cpp:162 | WebCore::ResourceHandle::create(WebCore::NetworkingContext*, WebCore::ResourceRequest const&, WebCore::ResourceHandleClient*, bool, bool) ResourceHandle.cpp:71 | WebCore::ResourceHandle::start(WebCore::NetworkingContext*) ResourceHandleMac.mm:278 | WebCore::ResourceHandle::createNSURLConnection(objc_object*, bool, bool) ResourceHandleMac.mm:238 | -[NSURLConnection(NSURLConnectionPrivate) _initWithRequest:delegate:usesCache:maxContentLength:startImmediately:connectionProperties:] | CFURLConnectionCreateWithProperties | URLConnection::initialize(_CFURLRequest const*, CFURLConnectionClient_V1*, __CFDictionary const*) | CFObject::Allocate(unsigned long, CFClass const&, __CFAllocator const*) | _CFRuntimeCreateInstance | malloc_zone_malloc ',
- 'address' => '0x7f9a3a618090',
- 'size' => '432',
- 'type' => '',
- },
-];
-
-my $actualOutput = RunLeaks::parseLeaksOutput(@input);
-
-plan(tests => 1);
-is_deeply($actualOutput, $expectedOutput, "leaks Report Version 2.0 (new)");
diff --git a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl b/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl
deleted file mode 100644
index 8e89220cc..000000000
--- a/Tools/Scripts/webkitperl/run-leaks_unittest/run-leaks-report-v2.0-old.pl
+++ /dev/null
@@ -1,76 +0,0 @@
-#!/usr/bin/perl -w
-
-# Copyright (C) 2011 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. 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 INC. 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.
-
-# tests run-leaks using "old" leaks report version 2.0
-# - The "old" 2.0 format has "leaks Report Version: 2.0" at the top of the report.
-
-use strict;
-use warnings;
-
-use File::Spec;
-use FindBin;
-use lib File::Spec->catdir($FindBin::Bin, "..");
-use Test::More;
-use LoadAsModule qw(RunLeaks run-leaks);
-
-my @input = split(/\n/, <<EOF);
-leaks Report Version: 2.0
-Process: Safari [53606]
-Path: /Applications/Safari.app/Contents/MacOS/Safari
-Load Address: 0x100000000
-Identifier: com.apple.Safari
-Version: 5.0 (6533.9)
-Build Info: WebBrowser-75330900~1
-Code Type: X86-64 (Native)
-Parent Process: perl5.10.0 [53599]
-
-Date/Time: 2010-05-27 11:42:27.356 -0700
-OS Version: Mac OS X 10.6.3 (10D571)
-Report Version: 6
-
-Process 53606: 112295 nodes malloced for 22367 KB
-Process 53606: 1 leak for 32 total leaked bytes.
-Leak: 0x1118c0e60 size=32 zone: DefaultMallocZone_0x105a92000 string 'com.apple.quarantine'
- Call stack: [thread 0x7fff70126be0]: | 0x100001e84 | NSApplicationMain | +[NSBundle(NSNibLoading) loadNibNamed:owner:] | +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] | loadNib | -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] | -[NSSet makeObjectsPerformSelector:] | 0x100003494 | 0x1001013ff | 0x10014dbb9 | 0x10014d923 | 0x10014d7d7 | 0x10014ccd9 | 0x100149c8e | 0x100149bd8 | xar_open | xar_file_unserialize | xar_prop_unserialize | xar_prop_unserialize | strdup | malloc | malloc_zone_malloc
-EOF
-
-my $expectedOutput =
-[
- {
- 'leaksOutput' => join('', split(/\n/, <<EOF)),
-Leak: 0x1118c0e60 size=32 zone: DefaultMallocZone_0x105a92000 string 'com.apple.quarantine'
- Call stack: [thread 0x7fff70126be0]: | 0x100001e84 | NSApplicationMain | +[NSBundle(NSNibLoading) loadNibNamed:owner:] | +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] | loadNib | -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] | -[NSSet makeObjectsPerformSelector:] | 0x100003494 | 0x1001013ff | 0x10014dbb9 | 0x10014d923 | 0x10014d7d7 | 0x10014ccd9 | 0x100149c8e | 0x100149bd8 | xar_open | xar_file_unserialize | xar_prop_unserialize | xar_prop_unserialize | strdup | malloc | malloc_zone_malloc
-EOF
- 'callStack' =>
-' Call stack: [thread 0x7fff70126be0]: | 0x100001e84 | NSApplicationMain | +[NSBundle(NSNibLoading) loadNibNamed:owner:] | +[NSBundle(NSNibLoading) _loadNibFile:nameTable:withZone:ownerBundle:] | loadNib | -[NSIBObjectData nibInstantiateWithOwner:topLevelObjects:] | -[NSSet makeObjectsPerformSelector:] | 0x100003494 | 0x1001013ff | 0x10014dbb9 | 0x10014d923 | 0x10014d7d7 | 0x10014ccd9 | 0x100149c8e | 0x100149bd8 | xar_open | xar_file_unserialize | xar_prop_unserialize | xar_prop_unserialize | strdup | malloc | malloc_zone_malloc ',
- 'address' => '0x1118c0e60',
- 'size' => '32',
- 'type' => 'com.apple.quarantine',
- },
-];
-
-my $actualOutput = RunLeaks::parseLeaksOutput(@input);
-
-plan(tests => 1);
-is_deeply($actualOutput, $expectedOutput, "leaks Report Version 2.0 (old)");
diff --git a/Tools/Scripts/webkitpy/__init__.py b/Tools/Scripts/webkitpy/__init__.py
deleted file mode 100644
index b376bf2be..000000000
--- a/Tools/Scripts/webkitpy/__init__.py
+++ /dev/null
@@ -1,13 +0,0 @@
-# Required for Python to search this directory for module files
-
-# Keep this file free of any code or import statements that could
-# cause either an error to occur or a log message to be logged.
-# This ensures that calling code can import initialization code from
-# webkitpy before any errors or log messages due to code in this file.
-# Initialization code can include things like version-checking code and
-# logging configuration code.
-#
-# We do not execute any version-checking code or logging configuration
-# code in this file so that callers can opt-in as they want. This also
-# allows different callers to choose different initialization code,
-# as necessary.
diff --git a/Tools/Scripts/webkitpy/bindings/__init__.py b/Tools/Scripts/webkitpy/bindings/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/bindings/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/bindings/main.py b/Tools/Scripts/webkitpy/bindings/main.py
deleted file mode 100644
index 9c82b9ae6..000000000
--- a/Tools/Scripts/webkitpy/bindings/main.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# Copyright (C) 2011 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:
-# 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 os
-import os.path
-import shutil
-import subprocess
-import sys
-import tempfile
-from webkitpy.common.checkout.scm.detection import detect_scm_system
-from webkitpy.common.system.executive import ScriptError
-
-
-class BindingsTests:
-
- def __init__(self, reset_results, generators, executive):
- self.reset_results = reset_results
- self.generators = generators
- self.executive = executive
-
- def generate_from_idl(self, generator, idl_file, output_directory, supplemental_dependency_file):
- cmd = ['perl', '-w',
- '-IWebCore/bindings/scripts',
- 'WebCore/bindings/scripts/generate-bindings.pl',
- # idl include directories (path relative to generate-bindings.pl)
- '--include', '.',
- '--defines', 'TESTING_%s' % generator,
- '--generator', generator,
- '--outputDir', output_directory,
- '--supplementalDependencyFile', supplemental_dependency_file,
- idl_file]
-
- exit_code = 0
- try:
- output = self.executive.run_command(cmd)
- if output:
- print output
- except ScriptError, e:
- print e.output
- exit_code = e.exit_code
- return exit_code
-
- def generate_supplemental_dependency(self, input_directory, supplemental_dependency_file, window_constructors_file, workerglobalscope_constructors_file, sharedworkerglobalscope_constructors_file, dedicatedworkerglobalscope_constructors_file):
- idl_files_list = tempfile.mkstemp()
- for input_file in os.listdir(input_directory):
- (name, extension) = os.path.splitext(input_file)
- if extension != '.idl':
- continue
- os.write(idl_files_list[0], os.path.join(input_directory, input_file) + "\n")
- os.close(idl_files_list[0])
-
- cmd = ['perl', '-w',
- '-IWebCore/bindings/scripts',
- 'WebCore/bindings/scripts/preprocess-idls.pl',
- '--idlFilesList', idl_files_list[1],
- '--defines', '',
- '--supplementalDependencyFile', supplemental_dependency_file,
- '--windowConstructorsFile', window_constructors_file,
- '--workerGlobalScopeConstructorsFile', workerglobalscope_constructors_file,
- '--sharedWorkerGlobalScopeConstructorsFile', sharedworkerglobalscope_constructors_file,
- '--dedicatedWorkerGlobalScopeConstructorsFile', dedicatedworkerglobalscope_constructors_file]
-
- exit_code = 0
- try:
- output = self.executive.run_command(cmd)
- if output:
- print output
- except ScriptError, e:
- print e.output
- exit_code = e.exit_code
- os.remove(idl_files_list[1])
- return exit_code
-
- def detect_changes(self, generator, work_directory, reference_directory):
- changes_found = False
- for output_file in os.listdir(work_directory):
- cmd = ['diff',
- '-u',
- '-N',
- os.path.join(reference_directory, output_file),
- os.path.join(work_directory, output_file)]
-
- exit_code = 0
- try:
- output = self.executive.run_command(cmd)
- except ScriptError, e:
- output = e.output
- exit_code = e.exit_code
-
- if exit_code or output:
- print 'FAIL: (%s) %s' % (generator, output_file)
- print output
- changes_found = True
- else:
- print 'PASS: (%s) %s' % (generator, output_file)
- return changes_found
-
- def run_tests(self, generator, input_directory, reference_directory, supplemental_dependency_file):
- work_directory = reference_directory
-
- passed = True
- for input_file in os.listdir(input_directory):
- (name, extension) = os.path.splitext(input_file)
- if extension != '.idl':
- continue
- # Generate output into the work directory (either the given one or a
- # temp one if not reset_results is performed)
- if not self.reset_results:
- work_directory = tempfile.mkdtemp()
-
- if self.generate_from_idl(generator,
- os.path.join(input_directory, input_file),
- work_directory,
- supplemental_dependency_file):
- passed = False
-
- if self.reset_results:
- print "Reset results: (%s) %s" % (generator, input_file)
- continue
-
- # Detect changes
- if self.detect_changes(generator, work_directory, reference_directory):
- passed = False
- shutil.rmtree(work_directory)
-
- return passed
-
- def main(self):
- current_scm = detect_scm_system(os.curdir)
- os.chdir(os.path.join(current_scm.checkout_root, 'Source'))
-
- all_tests_passed = True
-
- input_directory = os.path.join('WebCore', 'bindings', 'scripts', 'test')
- supplemental_dependency_file = tempfile.mkstemp()[1]
- window_constructors_file = tempfile.mkstemp()[1]
- workerglobalscope_constructors_file = tempfile.mkstemp()[1]
- sharedworkerglobalscope_constructors_file = tempfile.mkstemp()[1]
- dedicatedworkerglobalscope_constructors_file = tempfile.mkstemp()[1]
- if self.generate_supplemental_dependency(input_directory, supplemental_dependency_file, window_constructors_file, workerglobalscope_constructors_file, sharedworkerglobalscope_constructors_file, dedicatedworkerglobalscope_constructors_file):
- print 'Failed to generate a supplemental dependency file.'
- os.remove(supplemental_dependency_file)
- os.remove(window_constructors_file)
- os.remove(workerglobalscope_constructors_file)
- os.remove(sharedworkerglobalscope_constructors_file)
- os.remove(dedicatedworkerglobalscope_constructors_file)
- return -1
-
- for generator in self.generators:
- input_directory = os.path.join('WebCore', 'bindings', 'scripts', 'test')
- reference_directory = os.path.join('WebCore', 'bindings', 'scripts', 'test', generator)
- if not self.run_tests(generator, input_directory, reference_directory, supplemental_dependency_file):
- all_tests_passed = False
-
- os.remove(supplemental_dependency_file)
- os.remove(window_constructors_file)
- os.remove(workerglobalscope_constructors_file)
- os.remove(sharedworkerglobalscope_constructors_file)
- os.remove(dedicatedworkerglobalscope_constructors_file)
- print ''
- if all_tests_passed:
- print 'All tests PASS!'
- return 0
- else:
- print 'Some tests FAIL! (To update the reference files, execute "run-bindings-tests --reset-results")'
- return -1
diff --git a/Tools/Scripts/webkitpy/common/__init__.py b/Tools/Scripts/webkitpy/common/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/checkout/__init__.py b/Tools/Scripts/webkitpy/common/checkout/__init__.py
deleted file mode 100644
index f385ae4f1..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/__init__.py
+++ /dev/null
@@ -1,3 +0,0 @@
-# Required for Python to search this directory for module files
-
-from .checkout import Checkout
diff --git a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py
deleted file mode 100644
index d2d53a568..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer.py
+++ /dev/null
@@ -1,274 +0,0 @@
-# Copyright (C) 2011, 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.
-
-import copy
-import logging
-
-
-_log = logging.getLogger(__name__)
-
-
-# Yes, it's a hypergraph.
-# FIXME: Should this function live with the ports somewhere?
-# Perhaps this should move onto PortFactory?
-def _baseline_search_hypergraph(host, port_names):
- hypergraph = {}
-
- # These edges in the hypergraph aren't visible on build.webkit.org,
- # but they impose constraints on how we optimize baselines.
- hypergraph.update(_VIRTUAL_PORTS)
-
- # FIXME: Should we get this constant from somewhere?
- fallback_path = ['LayoutTests']
-
- port_factory = host.port_factory
- for port_name in port_names:
- port = port_factory.get(port_name)
- webkit_base = port.webkit_base()
- search_path = port.baseline_search_path()
- if search_path:
- hypergraph[port_name] = [host.filesystem.relpath(path, webkit_base) for path in search_path] + fallback_path
- return hypergraph
-
-
-_VIRTUAL_PORTS = {
- 'mac-future': ['LayoutTests/platform/mac-future', 'LayoutTests/platform/mac', 'LayoutTests'],
- 'win-future': ['LayoutTests/platform/win-future', 'LayoutTests/platform/win', 'LayoutTests'],
- 'qt-unknown': ['LayoutTests/platform/qt-unknown', 'LayoutTests/platform/qt', 'LayoutTests'],
-}
-
-
-# FIXME: Should this function be somewhere more general?
-def _invert_dictionary(dictionary):
- inverted_dictionary = {}
- for key, value in dictionary.items():
- if inverted_dictionary.get(value):
- inverted_dictionary[value].append(key)
- else:
- inverted_dictionary[value] = [key]
- return inverted_dictionary
-
-
-class BaselineOptimizer(object):
- def __init__(self, host, port_names):
- self._host = host
- self._filesystem = self._host.filesystem
- self._scm = self._host.scm()
- self._hypergraph = _baseline_search_hypergraph(host, port_names)
- self._directories = reduce(set.union, map(set, self._hypergraph.values()))
-
- def read_results_by_directory(self, baseline_name):
- results_by_directory = {}
- for directory in self._directories:
- path = self._filesystem.join(self._scm.checkout_root, directory, baseline_name)
- if self._filesystem.exists(path):
- results_by_directory[directory] = self._filesystem.sha1(path)
- return results_by_directory
-
- def _results_by_port_name(self, results_by_directory):
- results_by_port_name = {}
- for port_name, search_path in self._hypergraph.items():
- for directory in search_path:
- if directory in results_by_directory:
- results_by_port_name[port_name] = results_by_directory[directory]
- break
- return results_by_port_name
-
- def _most_specific_common_directory(self, port_names):
- paths = [self._hypergraph[port_name] for port_name in port_names]
- common_directories = reduce(set.intersection, map(set, paths))
-
- def score(directory):
- return sum([path.index(directory) for path in paths])
-
- _, directory = sorted([(score(directory), directory) for directory in common_directories])[0]
- return directory
-
- def _filter_port_names_by_result(self, predicate, port_names_by_result):
- filtered_port_names_by_result = {}
- for result, port_names in port_names_by_result.items():
- filtered_port_names = filter(predicate, port_names)
- if filtered_port_names:
- filtered_port_names_by_result[result] = filtered_port_names
- return filtered_port_names_by_result
-
- def _place_results_in_most_specific_common_directory(self, port_names_by_result, results_by_directory):
- for result, port_names in port_names_by_result.items():
- directory = self._most_specific_common_directory(port_names)
- results_by_directory[directory] = result
-
- def _find_optimal_result_placement(self, baseline_name):
- results_by_directory = self.read_results_by_directory(baseline_name)
- results_by_port_name = self._results_by_port_name(results_by_directory)
- port_names_by_result = _invert_dictionary(results_by_port_name)
-
- new_results_by_directory = self._optimize_by_most_specific_common_directory(results_by_directory, results_by_port_name, port_names_by_result)
- if not new_results_by_directory:
- new_results_by_directory = self._optimize_by_pushing_results_up(results_by_directory, results_by_port_name, port_names_by_result)
-
- return results_by_directory, new_results_by_directory
-
- def _optimize_by_most_specific_common_directory(self, results_by_directory, results_by_port_name, port_names_by_result):
- new_results_by_directory = {}
- unsatisfied_port_names_by_result = port_names_by_result
- while unsatisfied_port_names_by_result:
- self._place_results_in_most_specific_common_directory(unsatisfied_port_names_by_result, new_results_by_directory)
- new_results_by_port_name = self._results_by_port_name(new_results_by_directory)
-
- def is_unsatisfied(port_name):
- return results_by_port_name[port_name] != new_results_by_port_name[port_name]
-
- new_unsatisfied_port_names_by_result = self._filter_port_names_by_result(is_unsatisfied, port_names_by_result)
-
- if len(new_unsatisfied_port_names_by_result.values()) >= len(unsatisfied_port_names_by_result.values()):
- return {} # Frowns. We do not appear to be converging.
- unsatisfied_port_names_by_result = new_unsatisfied_port_names_by_result
-
- return new_results_by_directory
-
- def _optimize_by_pushing_results_up(self, results_by_directory, results_by_port_name, port_names_by_result):
- try:
- results_by_directory = results_by_directory
- best_so_far = results_by_directory
- while True:
- new_results_by_directory = copy.copy(best_so_far)
- for port_name in self._hypergraph.keys():
- fallback_path = self._hypergraph[port_name]
- current_index, current_directory = self._find_in_fallbackpath(fallback_path, results_by_port_name[port_name], best_so_far)
- current_result = results_by_port_name[port_name]
- for index in range(current_index + 1, len(fallback_path)):
- new_directory = fallback_path[index]
- if not new_directory in new_results_by_directory:
- new_results_by_directory[new_directory] = current_result
- if current_directory in new_results_by_directory:
- del new_results_by_directory[current_directory]
- elif new_results_by_directory[new_directory] == current_result:
- if current_directory in new_results_by_directory:
- del new_results_by_directory[current_directory]
- else:
- # The new_directory contains a different result, so stop trying to push results up.
- break
-
- if len(new_results_by_directory) >= len(best_so_far):
- # We've failed to improve, so give up.
- break
- best_so_far = new_results_by_directory
-
- return best_so_far
- except KeyError as e:
- # FIXME: KeyErrors get raised if we're missing baselines. We should handle this better.
- return {}
-
- def _find_in_fallbackpath(self, fallback_path, current_result, results_by_directory):
- for index, directory in enumerate(fallback_path):
- if directory in results_by_directory and (results_by_directory[directory] == current_result):
- return index, directory
- assert False, "result %s not found in fallback_path %s, %s" % (current_result, fallback_path, results_by_directory)
-
- def _filtered_results_by_port_name(self, results_by_directory):
- results_by_port_name = self._results_by_port_name(results_by_directory)
- for port_name in _VIRTUAL_PORTS.keys():
- if port_name in results_by_port_name:
- del results_by_port_name[port_name]
- return results_by_port_name
-
- def _platform(self, filename):
- platform_dir = 'LayoutTests' + self._filesystem.sep + 'platform' + self._filesystem.sep
- if filename.startswith(platform_dir):
- return filename.replace(platform_dir, '').split(self._filesystem.sep)[0]
- platform_dir = self._filesystem.join(self._scm.checkout_root, platform_dir)
- if filename.startswith(platform_dir):
- return filename.replace(platform_dir, '').split(self._filesystem.sep)[0]
- return '(generic)'
-
- def _move_baselines(self, baseline_name, results_by_directory, new_results_by_directory):
- data_for_result = {}
- for directory, result in results_by_directory.items():
- if not result in data_for_result:
- source = self._filesystem.join(self._scm.checkout_root, directory, baseline_name)
- data_for_result[result] = self._filesystem.read_binary_file(source)
-
- file_names = []
- for directory, result in results_by_directory.items():
- if new_results_by_directory.get(directory) != result:
- file_names.append(self._filesystem.join(self._scm.checkout_root, directory, baseline_name))
- if file_names:
- _log.debug(" Deleting:")
- for platform_dir in sorted(self._platform(filename) for filename in file_names):
- _log.debug(" " + platform_dir)
- self._scm.delete_list(file_names)
- else:
- _log.debug(" (Nothing to delete)")
-
- file_names = []
- for directory, result in new_results_by_directory.items():
- if results_by_directory.get(directory) != result:
- destination = self._filesystem.join(self._scm.checkout_root, directory, baseline_name)
- self._filesystem.maybe_make_directory(self._filesystem.split(destination)[0])
- self._filesystem.write_binary_file(destination, data_for_result[result])
- file_names.append(destination)
- if file_names:
- _log.debug(" Adding:")
- for platform_dir in sorted(self._platform(filename) for filename in file_names):
- _log.debug(" " + platform_dir)
- self._scm.add_list(file_names)
- else:
- _log.debug(" (Nothing to add)")
-
- def directories_by_result(self, baseline_name):
- results_by_directory = self.read_results_by_directory(baseline_name)
- return _invert_dictionary(results_by_directory)
-
- def write_by_directory(self, results_by_directory, writer, indent):
- for path in sorted(results_by_directory):
- writer("%s%s: %s" % (indent, self._platform(path), results_by_directory[path][0:6]))
-
- def optimize(self, baseline_name):
- basename = self._filesystem.basename(baseline_name)
- results_by_directory, new_results_by_directory = self._find_optimal_result_placement(baseline_name)
- self.new_results_by_directory = new_results_by_directory
- if new_results_by_directory == results_by_directory:
- if new_results_by_directory:
- _log.debug(" %s: (already optimal)" % basename)
- self.write_by_directory(results_by_directory, _log.debug, " ")
- else:
- _log.debug(" %s: (no baselines found)" % basename)
- return True
- if self._filtered_results_by_port_name(results_by_directory) != self._filtered_results_by_port_name(new_results_by_directory):
- _log.warning(" %s: optimization failed" % basename)
- self.write_by_directory(results_by_directory, _log.warning, " ")
- return False
-
- _log.debug(" %s:" % basename)
- _log.debug(" Before: ")
- self.write_by_directory(results_by_directory, _log.debug, " ")
- _log.debug(" After: ")
- self.write_by_directory(new_results_by_directory, _log.debug, " ")
-
- self._move_baselines(baseline_name, results_by_directory, new_results_by_directory)
- return True
diff --git a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py b/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
deleted file mode 100644
index dcd649a5a..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright (C) 2011 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.
-
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.host_mock import MockHost
-
-
-class TestBaselineOptimizer(BaselineOptimizer):
- def __init__(self, mock_results_by_directory):
- host = MockHost()
- BaselineOptimizer.__init__(self, host, host.port_factory.all_port_names())
- self._mock_results_by_directory = mock_results_by_directory
-
- # We override this method for testing so we don't have to construct an
- # elaborate mock file system.
- def read_results_by_directory(self, baseline_name):
- return self._mock_results_by_directory
-
- def _move_baselines(self, baseline_name, results_by_directory, new_results_by_directory):
- self.new_results_by_directory = new_results_by_directory
-
-
-class BaselineOptimizerTest(unittest.TestCase):
- def _assertOptimization(self, results_by_directory, expected_new_results_by_directory):
- baseline_optimizer = TestBaselineOptimizer(results_by_directory)
- self.assertTrue(baseline_optimizer.optimize('mock-baseline.png'))
- self.assertEqual(baseline_optimizer.new_results_by_directory, expected_new_results_by_directory)
-
- def _assertOptimizationFailed(self, results_by_directory):
- baseline_optimizer = TestBaselineOptimizer(results_by_directory)
- self.assertFalse(baseline_optimizer.optimize('mock-baseline.png'))
-
- def test_move_baselines(self):
- host = MockHost()
- host.filesystem.write_binary_file('/mock-checkout/LayoutTests/platform/mac-lion/another/test-expected.txt', 'result A')
- host.filesystem.write_binary_file('/mock-checkout/LayoutTests/platform/mac-lion-wk2/another/test-expected.txt', 'result A')
- host.filesystem.write_binary_file('/mock-checkout/LayoutTests/platform/mac/another/test-expected.txt', 'result B')
- baseline_optimizer = BaselineOptimizer(host, host.port_factory.all_port_names())
- baseline_optimizer._move_baselines('another/test-expected.txt', {
- 'LayoutTests/platform/mac-lion': 'aaa',
- 'LayoutTests/platform/mac-lion-wk2': 'aaa',
- 'LayoutTests/platform/mac': 'bbb',
- }, {
- 'LayoutTests/platform/mac': 'aaa',
- })
- self.assertEqual(host.filesystem.read_binary_file('/mock-checkout/LayoutTests/platform/mac/another/test-expected.txt'), 'result A')
-
- def test_efl(self):
- self._assertOptimization({
- 'LayoutTests/platform/efl': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- }, {
- 'LayoutTests/platform/efl': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- })
-
- def test_no_add_mac_future(self):
- self._assertOptimization({
- 'LayoutTests/platform/mac': '29a1715a6470d5dd9486a142f609708de84cdac8',
- 'LayoutTests/platform/win-xp': '453e67177a75b2e79905154ece0efba6e5bfb65d',
- 'LayoutTests/platform/mac-lion': 'c43eaeb358f49d5e835236ae23b7e49d7f2b089f',
- }, {
- 'LayoutTests/platform/mac': '29a1715a6470d5dd9486a142f609708de84cdac8',
- 'LayoutTests/platform/win-xp': '453e67177a75b2e79905154ece0efba6e5bfb65d',
- 'LayoutTests/platform/mac-lion': 'c43eaeb358f49d5e835236ae23b7e49d7f2b089f',
- })
-
- def test_mac_future(self):
- self._assertOptimization({
- 'LayoutTests/platform/mac-lion': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- }, {
- 'LayoutTests/platform/mac-lion': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- })
-
- def test_qt_unknown(self):
- self._assertOptimization({
- 'LayoutTests/platform/qt': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- }, {
- 'LayoutTests/platform/qt': '462d03b9c025db1b0392d7453310dbee5f9a9e74',
- })
-
- def test_win_does_not_drop_to_win_7sp0(self):
- self._assertOptimization({
- 'LayoutTests/platform/win': '1',
- 'LayoutTests/platform/mac': '2',
- 'LayoutTests/platform/gtk': '3',
- 'LayoutTests/platform/qt': '4',
- }, {
- 'LayoutTests/platform/win': '1',
- 'LayoutTests/platform/mac': '2',
- 'LayoutTests/platform/gtk': '3',
- 'LayoutTests/platform/qt': '4',
- })
-
- def test_common_directory_includes_root(self):
- # This test case checks that we don't throw an exception when we fail
- # to optimize.
- self._assertOptimizationFailed({
- 'LayoutTests/platform/gtk': 'e8608763f6241ddacdd5c1ef1973ba27177d0846',
- 'LayoutTests/platform/qt': 'bcbd457d545986b7abf1221655d722363079ac87',
- 'LayoutTests/platform/mac': 'e8608763f6241ddacdd5c1ef1973ba27177d0846',
- })
-
- self._assertOptimization({
- 'LayoutTests': '9c876f8c3e4cc2aef9519a6c1174eb3432591127',
- }, {
- 'LayoutTests': '9c876f8c3e4cc2aef9519a6c1174eb3432591127',
- })
-
- def test_complex_shadowing(self):
- # This test relies on OS specific functionality, so it doesn't work on Windows.
- # FIXME: What functionality does this rely on? When can we remove this if?
- if sys.platform == 'win32':
- return
- self._assertOptimization({
- 'LayoutTests/platform/mac': '5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364',
- 'LayoutTests/platform/mac-lion': '7ad045ece7c030e2283c5d21d9587be22bcba56e',
- 'LayoutTests/platform/win-xp': '5b1253ef4d5094530d5f1bc6cdb95c90b446bec7',
- }, {
- 'LayoutTests/platform/mac': '5daa78e55f05d9f0d1bb1f32b0cd1bc3a01e9364',
- 'LayoutTests/platform/mac-lion': '7ad045ece7c030e2283c5d21d9587be22bcba56e',
- 'LayoutTests/platform/win-xp': '5b1253ef4d5094530d5f1bc6cdb95c90b446bec7',
- })
-
- def test_virtual_ports_filtered(self):
- self._assertOptimization({
- 'LayoutTests/platform/gtk': '3',
- 'LayoutTests/platform/efl': '3',
- 'LayoutTests/platform/qt': '4',
- 'LayoutTests/platform/mac': '5',
- }, {
- 'LayoutTests': '3',
- 'LayoutTests/platform/qt': '4',
- 'LayoutTests/platform/mac': '5',
- })
diff --git a/Tools/Scripts/webkitpy/common/checkout/changelog.py b/Tools/Scripts/webkitpy/common/checkout/changelog.py
deleted file mode 100644
index 47c6b64c5..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/changelog.py
+++ /dev/null
@@ -1,459 +0,0 @@
-# Copyright (C) 2009, 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.
-#
-# WebKit's Python module for parsing and modifying ChangeLog files
-
-import logging
-import re
-from StringIO import StringIO
-import textwrap
-
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.system.filesystem import FileSystem
-import webkitpy.common.config.urls as config_urls
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: parse_bug_id_from_changelog should not be a free function.
-# Parse the bug ID out of a Changelog message based on the format that is
-# used by prepare-ChangeLog
-def parse_bug_id_from_changelog(message):
- if not message:
- return None
- match = re.search("^\s*" + config_urls.bug_url_short + "$", message, re.MULTILINE)
- if match:
- return int(match.group('bug_id'))
- match = re.search("^\s*" + config_urls.bug_url_long + "$", message, re.MULTILINE)
- if match:
- return int(match.group('bug_id'))
- # We weren't able to find a bug URL in the format used by prepare-ChangeLog. Fall back to the
- # first bug URL found anywhere in the message.
- return config_urls.parse_bug_id(message)
-
-
-class ChangeLogEntry(object):
- # e.g. 2009-06-03 Eric Seidel <eric@webkit.org>
- date_line_regexp = r'^(?P<date>\d{4}-\d{2}-\d{2})\s+(?P<authors>(?P<name>[^<]+?)\s+<(?P<email>[^<>]+)>.*?)$'
-
- # e.g. * Source/WebCore/page/EventHandler.cpp: Implement FooBarQuux.
- touched_files_regexp = r'^\s*\*\s*(?P<file>[A-Za-z0-9_\-\./\\]+)\s*\:'
- # e.g. (ChangeLogEntry.touched_functions): Added.
- touched_functions_regexp = r'^\s*\((?P<function>[^)]*)\):'
-
- # e.g. Reviewed by Darin Adler.
- # (Discard everything after the first period to match more invalid lines.)
- reviewed_by_regexp = r'^\s*((\w+\s+)+and\s+)?(Review|Rubber(\s*|-)stamp)(s|ed)?\s+([a-z]+\s+)*?by\s+(?P<reviewer>.*?)[\.,]?\s*$'
-
- reviewed_byless_regexp = r'^\s*((Review|Rubber(\s*|-)stamp)(s|ed)?|RS)(\s+|\s*=\s*)(?P<reviewer>([A-Z]\w+\s*)+)[\.,]?\s*$'
-
- reviewer_name_noise_regexp = re.compile(r"""
- (\s+((tweaked\s+)?and\s+)?(landed|committed|okayed)\s+by.+) # "landed by", "commented by", etc...
- |(^(Reviewed\s+)?by\s+) # extra "Reviewed by" or "by"
- |([(<]\s*[\w_\-\.]+@[\w_\-\.]+[>)]) # email addresses
- |([(<](https?://?bugs.)webkit.org[^>)]+[>)]) # bug url
- |("[^"]+") # wresler names like 'Sean/Shawn/Shaun' in 'Geoffrey "Sean/Shawn/Shaun" Garen'
- |('[^']+') # wresler names like "The Belly" in "Sam 'The Belly' Weinig"
- |((Mr|Ms|Dr|Mrs|Prof)\.(\s+|$))
- """, re.IGNORECASE | re.VERBOSE)
-
- reviewer_name_casesensitive_noise_regexp = re.compile(r"""
- ((\s+|^)(and\s+)?([a-z-]+\s+){5,}by\s+) # e.g. "and given a good once-over by"
- |(\(\s*(?!(and|[A-Z])).+\)) # any parenthesis that doesn't start with "and" or a capital letter
- |(with(\s+[a-z-]+)+) # phrases with "with no hesitation" in "Sam Weinig with no hesitation"
- """, re.VERBOSE)
-
- reviewer_name_noise_needing_a_backreference_regexp = re.compile(r"""
- (\S\S)\.(?:(\s.+|$)) # Text after the two word characters (don't match initials) and a period followed by a space.
- """, re.IGNORECASE | re.VERBOSE)
-
- nobody_regexp = re.compile(r"""(\s+|^)nobody(
- ((,|\s+-)?\s+(\w+\s+)+fix.*) # e.g. nobody, build fix...
- |(\s*\([^)]+\).*) # NOBODY (..)...
- |$)""", re.IGNORECASE | re.VERBOSE)
-
- # e.g. == Rolled over to ChangeLog-2011-02-16 ==
- rolled_over_regexp = r'^== Rolled over to ChangeLog-\d{4}-\d{2}-\d{2} ==$'
-
- # e.g. git-svn-id: http://svn.webkit.org/repository/webkit/trunk@96161 268f45cc-cd09-0410-ab3c-d52691b4dbfc
- svn_id_regexp = r'git-svn-id: http://svn.webkit.org/repository/webkit/trunk@(?P<svnid>\d+) '
-
- split_names_regexp = r'\s*(?:,(?:\s+and\s+|&)?|(?:^|\s+)and\s+|&&|[/+&])\s*'
-
- def __init__(self, contents, committer_list=CommitterList(), revision=None):
- self._contents = contents
- self._committer_list = committer_list
- self._revision = revision
- self._parse_entry()
-
- @classmethod
- def _parse_reviewer_text(cls, text):
- match = re.search(ChangeLogEntry.reviewed_by_regexp, text, re.MULTILINE | re.IGNORECASE)
- if not match:
- # There are cases where people omit "by". We match it only if reviewer part looked nice
- # in order to avoid matching random lines that start with Reviewed
- match = re.search(ChangeLogEntry.reviewed_byless_regexp, text, re.MULTILINE | re.IGNORECASE)
- if not match:
- return None, None
-
- reviewer_text = match.group("reviewer")
-
- reviewer_text = ChangeLogEntry.nobody_regexp.sub('', reviewer_text)
- reviewer_text = ChangeLogEntry.reviewer_name_noise_regexp.sub('', reviewer_text)
- reviewer_text = ChangeLogEntry.reviewer_name_casesensitive_noise_regexp.sub('', reviewer_text)
- reviewer_text = ChangeLogEntry.reviewer_name_noise_needing_a_backreference_regexp.sub(r'\1', reviewer_text)
- reviewer_text = reviewer_text.replace('(', '').replace(')', '')
- reviewer_text = re.sub(r'\s\s+|[,.]\s*$', ' ', reviewer_text).strip()
- if not len(reviewer_text):
- return None, None
-
- reviewer_list = ChangeLogEntry._split_reviewer_names(reviewer_text)
-
- # Get rid of "reviewers" like "even though this is just a..." in "Reviewed by Sam Weinig, even though this is just a..."
- # and "who wrote the original code" in "Noam Rosenthal, who wrote the original code"
- reviewer_list = [reviewer for reviewer in reviewer_list if not re.match('^who\s|^([a-z]+(\s+|\.|$)){6,}$', reviewer)]
-
- return reviewer_text, reviewer_list
-
- @classmethod
- def _split_reviewer_names(cls, text):
- return re.split(ChangeLogEntry.split_names_regexp, text)
-
- @classmethod
- def _split_author_names_with_emails(cls, text):
- regex = '>' + ChangeLogEntry.split_names_regexp
- names = re.split(regex, text)
- if len(names) > 1:
- names = [name + ">" for name in names[:-1]] + [names[-1]]
- return names
-
- def _fuzz_match_reviewers(self, reviewers_text_list):
- if not reviewers_text_list:
- return []
- list_of_reviewers = [self._committer_list.contributors_by_fuzzy_match(reviewer)[0] for reviewer in reviewers_text_list]
- # Flatten lists and get rid of any reviewers with more than one candidate.
- return [reviewers[0] for reviewers in list_of_reviewers if len(reviewers) == 1]
-
- @classmethod
- def _parse_author_name_and_email(cls, author_name_and_email):
- match = re.match(r'(?P<name>.+?)\s+<(?P<email>[^>]+)>', author_name_and_email)
- return {'name': match.group("name"), 'email': match.group("email")}
-
- @classmethod
- def _parse_author_text(cls, text):
- if not text:
- return []
- authors = cls._split_author_names_with_emails(text)
- assert(authors and len(authors) >= 1)
- return [cls._parse_author_name_and_email(author) for author in authors]
-
- @classmethod
- def _parse_touched_functions(cls, text):
- result = {}
- cur_file = None
- for line in text.splitlines():
- file_match = re.match(cls.touched_files_regexp, line)
- if file_match:
- cur_file = file_match.group("file")
- result[cur_file] = []
- func_match = re.match(cls.touched_functions_regexp, line)
- if func_match and cur_file:
- result[cur_file].append(func_match.group("function"))
- return result
-
- @classmethod
- def _parse_bug_description(cls, text):
- # If line 4 is a bug url, line 3 is the bug description.
- # It's too hard to guess in other cases, so we return None.
- lines = text.splitlines()
- if len(lines) < 4:
- return None
- for bug_url in (config_urls.bug_url_short, config_urls.bug_url_long):
- if re.match("^\s*" + bug_url + "$", lines[3]):
- return lines[2].strip()
- return None
-
- def _parse_entry(self):
- match = re.match(self.date_line_regexp, self._contents, re.MULTILINE)
- if not match:
- _log.warning("Creating invalid ChangeLogEntry:\n%s" % self._contents)
-
- self._date_line = match.group()
- self._date = match.group("date")
- self._bug_description = self._parse_bug_description(self._contents)
-
- # FIXME: group("name") does not seem to be Unicode? Probably due to self._contents not being unicode.
- self._author_text = match.group("authors") if match else None
- self._authors = ChangeLogEntry._parse_author_text(self._author_text)
-
- self._reviewer_text, self._reviewers_text_list = ChangeLogEntry._parse_reviewer_text(self._contents)
- self._reviewers = self._fuzz_match_reviewers(self._reviewers_text_list)
- self._author = self._committer_list.contributor_by_email(self.author_email()) or self._committer_list.contributor_by_name(self.author_name())
-
- self._touched_files = re.findall(self.touched_files_regexp, self._contents, re.MULTILINE)
- self._touched_functions = self._parse_touched_functions(self._contents)
-
- def date_line(self):
- return self._date_line
-
- def date(self):
- return self._date
-
- def author_text(self):
- return self._author_text
-
- def revision(self):
- return self._revision
-
- def author_name(self):
- return self._authors[0]['name']
-
- def author_email(self):
- return self._authors[0]['email']
-
- def author(self):
- return self._author # Might be None
-
- def authors(self):
- return self._authors
-
- # FIXME: Eventually we would like to map reviwer names to reviewer objects.
- # See https://bugs.webkit.org/show_bug.cgi?id=26533
- def reviewer_text(self):
- return self._reviewer_text
-
- # Might be None, might also not be a Reviewer!
- def reviewer(self):
- return self._reviewers[0] if len(self._reviewers) > 0 else None
-
- def reviewers(self):
- return self._reviewers
-
- def has_valid_reviewer(self):
- if self._reviewers_text_list:
- for reviewer in self._reviewers_text_list:
- reviewer = self._committer_list.committer_by_name(reviewer)
- if reviewer:
- return True
- return bool(re.search("unreviewed", self._contents, re.IGNORECASE))
-
- def contents(self):
- return self._contents
-
- def bug_id(self):
- return parse_bug_id_from_changelog(self._contents)
-
- def bug_description(self):
- return self._bug_description
-
- def touched_files(self):
- return self._touched_files
-
- # Returns a dict from file name to lists of function names.
- def touched_functions(self):
- return self._touched_functions
-
- def touched_files_text(self):
- match = re.search(self.touched_files_regexp, self._contents, re.MULTILINE)
- return self._contents[match.start():].lstrip("\n\r") if match else ""
-
- # Determine if any text has been added to the section on touched files
- def is_touched_files_text_clean(self):
- file_line_end = r"( (Added|Removed|(Copied|Renamed) from [A-Za-z0-9_\-./\\]+).)?$"
- for line in self.touched_files_text().splitlines():
- if re.match(self.touched_files_regexp + file_line_end, line):
- continue
- if re.match(self.touched_functions_regexp + "$", line):
- continue
- return False
- return True
-
-# FIXME: Various methods on ChangeLog should move into ChangeLogEntry instead.
-class ChangeLog(object):
-
- def __init__(self, path, filesystem=None):
- self.path = path
- self._filesystem = filesystem or FileSystem()
-
- _changelog_indent = " " * 8
-
- @classmethod
- def parse_latest_entry_from_file(cls, changelog_file):
- try:
- return next(cls.parse_entries_from_file(changelog_file))
- except StopIteration, e:
- return None
-
- svn_blame_regexp = re.compile(r'^(\s*(?P<revision>\d+) [^ ]+)\s*(?P<line>.*?\n)')
-
- @classmethod
- def _separate_revision_and_line(cls, line):
- match = cls.svn_blame_regexp.match(line)
- if not match:
- return None, line
- return int(match.group('revision')), match.group('line')
-
- @classmethod
- def parse_entries_from_file(cls, changelog_file):
- """changelog_file must be a file-like object which returns
- unicode strings, e.g. from StringIO(unicode()) or
- fs.open_text_file_for_reading()"""
- date_line_regexp = re.compile(ChangeLogEntry.date_line_regexp)
- rolled_over_regexp = re.compile(ChangeLogEntry.rolled_over_regexp)
-
- # The first line should be a date line.
- revision, first_line = cls._separate_revision_and_line(changelog_file.readline())
- assert(isinstance(first_line, unicode))
- if not date_line_regexp.match(cls.svn_blame_regexp.sub('', first_line)):
- raise StopIteration
-
- entry_lines = [first_line]
- revisions_in_entry = {revision: 1} if revision != None else None
- for line in changelog_file:
- if revisions_in_entry:
- revision, line = cls._separate_revision_and_line(line)
-
- if rolled_over_regexp.match(line):
- break
-
- if date_line_regexp.match(line):
- most_probable_revision = max(revisions_in_entry, key=revisions_in_entry.__getitem__) if revisions_in_entry else None
- # Remove the extra newline at the end
- yield ChangeLogEntry(''.join(entry_lines[:-1]), revision=most_probable_revision)
- entry_lines = []
- revisions_in_entry = {revision: 0}
-
- entry_lines.append(line)
- if revisions_in_entry:
- revisions_in_entry[revision] = revisions_in_entry.get(revision, 0) + 1
-
- most_probable_revision = max(revisions_in_entry, key=revisions_in_entry.__getitem__) if revisions_in_entry else None
- yield ChangeLogEntry(''.join(entry_lines[:-1]), revision=most_probable_revision)
-
- def latest_entry(self):
- # ChangeLog files are always UTF-8, we read them in as such to support Reviewers with unicode in their names.
- changelog_file = self._filesystem.open_text_file_for_reading(self.path)
- try:
- return self.parse_latest_entry_from_file(changelog_file)
- finally:
- changelog_file.close()
-
- # _wrap_line and _wrap_lines exist to work around
- # http://bugs.python.org/issue1859
-
- def _wrap_line(self, line):
- return textwrap.fill(line,
- width=70,
- initial_indent=self._changelog_indent,
- # Don't break urls which may be longer than width.
- break_long_words=False,
- subsequent_indent=self._changelog_indent)
-
- # Workaround as suggested by guido in
- # http://bugs.python.org/issue1859#msg60040
-
- def _wrap_lines(self, message):
- lines = [self._wrap_line(line) for line in message.splitlines()]
- return "\n".join(lines)
-
- def update_with_unreviewed_message(self, message):
- first_boilerplate_line_regexp = re.compile(
- "%sNeed a short description \(OOPS!\)\." % self._changelog_indent)
- removing_boilerplate = False
- result = StringIO()
- with self._filesystem.open_text_file_for_reading(self.path) as file:
- for line in file:
- if first_boilerplate_line_regexp.search(line):
- message_lines = self._wrap_lines(message)
- result.write(first_boilerplate_line_regexp.sub(message_lines, line))
- # Remove all the ChangeLog boilerplate before the first changed
- # file.
- removing_boilerplate = True
- elif removing_boilerplate:
- if line.find('*') >= 0: # each changed file is preceded by a *
- removing_boilerplate = False
-
- if not removing_boilerplate:
- result.write(line)
- self._filesystem.write_text_file(self.path, result.getvalue())
-
- def set_reviewer(self, reviewer):
- latest_entry = self.latest_entry()
- latest_entry_contents = latest_entry.contents()
- reviewer_text = latest_entry.reviewer()
- found_nobody = re.search("NOBODY\s*\(OOPS!\)", latest_entry_contents, re.MULTILINE)
-
- if not found_nobody and not reviewer_text:
- bug_url_number_of_items = len(re.findall(config_urls.bug_url_long, latest_entry_contents, re.MULTILINE))
- bug_url_number_of_items += len(re.findall(config_urls.bug_url_short, latest_entry_contents, re.MULTILINE))
- result = StringIO()
- with self._filesystem.open_text_file_for_reading(self.path) as file:
- for line in file:
- found_bug_url = re.search(config_urls.bug_url_long, line)
- if not found_bug_url:
- found_bug_url = re.search(config_urls.bug_url_short, line)
- result.write(line)
- if found_bug_url:
- if bug_url_number_of_items == 1:
- result.write("\n Reviewed by %s.\n" % reviewer)
- bug_url_number_of_items -= 1
- self._filesystem.write_text_file(self.path, result.getvalue())
- else:
- data = self._filesystem.read_text_file(self.path)
- newdata = data.replace("NOBODY (OOPS!)", reviewer)
- self._filesystem.write_text_file(self.path, newdata)
-
- def set_short_description_and_bug_url(self, short_description, bug_url):
- message = "%s\n%s%s" % (short_description, self._changelog_indent, bug_url)
- bug_boilerplate = "%sNeed the bug URL (OOPS!).\n" % self._changelog_indent
- result = StringIO()
- with self._filesystem.open_text_file_for_reading(self.path) as file:
- for line in file:
- line = line.replace("Need a short description (OOPS!).", message)
- if line != bug_boilerplate:
- result.write(line)
- self._filesystem.write_text_file(self.path, result.getvalue())
-
- def delete_entries(self, num_entries):
- date_line_regexp = re.compile(ChangeLogEntry.date_line_regexp)
- rolled_over_regexp = re.compile(ChangeLogEntry.rolled_over_regexp)
- entries = 0
- result = StringIO()
- with self._filesystem.open_text_file_for_reading(self.path) as file:
- for line in file:
- if date_line_regexp.match(line):
- entries += 1
- elif rolled_over_regexp.match(line):
- entries = num_entries + 1
- if entries > num_entries:
- result.write(line)
- self._filesystem.write_text_file(self.path, result.getvalue())
-
- def prepend_text(self, text):
- data = self._filesystem.read_text_file(self.path)
- self._filesystem.write_text_file(self.path, text + data)
diff --git a/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py b/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py
deleted file mode 100644
index 05b21e0d3..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/changelog_unittest.py
+++ /dev/null
@@ -1,667 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from StringIO import StringIO
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.checkout.changelog import *
-
-
-class ChangeLogTest(unittest.TestCase):
-
- _changelog_path = 'Tools/ChangeLog'
-
- _example_entry = u'''2009-08-17 Peter Kasting <pkasting@google.com>
-
- Reviewed by Tor Arne Vestb\xf8.
-
- https://bugs.webkit.org/show_bug.cgi?id=27323
- Only add Cygwin to the path when it isn't already there. This avoids
- causing problems for people who purposefully have non-Cygwin versions of
- executables like svn in front of the Cygwin ones in their paths.
-
- * DumpRenderTree/win/DumpRenderTree.vcproj:
- * DumpRenderTree/win/ImageDiff.vcproj:
- * DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj:
-'''
-
- _rolled_over_footer = '== Rolled over to ChangeLog-2009-06-16 =='
-
- # More example text than we need. Eventually we need to support parsing this all and write tests for the parsing.
- _example_changelog = u"""2009-08-17 Tor Arne Vestb\xf8 <vestbo@webkit.org>
-
- <http://webkit.org/b/28393> check-webkit-style: add check for use of std::max()/std::min() instead of MAX()/MIN()
-
- Reviewed by David Levin.
-
- * Scripts/modules/cpp_style.py:
- (_ERROR_CATEGORIES): Added 'runtime/max_min_macros'.
- (check_max_min_macros): Added. Returns level 4 error when MAX()
- and MIN() macros are used in header files and C++ source files.
- (check_style): Added call to check_max_min_macros().
- * Scripts/modules/cpp_style_unittest.py: Added unit tests.
- (test_max_macro): Added.
- (test_min_macro): Added.
-
-2009-08-16 David Kilzer <ddkilzer@apple.com>
-
- Backed out r47343 which was mistakenly committed
-
- * Scripts/bugzilla-tool:
- * Scripts/modules/scm.py:
-
-2009-06-18 Darin Adler <darin@apple.com>
-
- Rubber stamped by Mark Rowe.
-
- * DumpRenderTree/mac/DumpRenderTreeWindow.mm:
- (-[DumpRenderTreeWindow close]): Resolved crashes seen during regression
- tests. The close method can be called on a window that's already closed
- so we can't assert here.
-
-2011-11-04 Benjamin Poulain <bpoulain@apple.com>
-
- [Mac] ResourceRequest's nsURLRequest() does not differentiate null and empty URLs with CFNetwork
- https://bugs.webkit.org/show_bug.cgi?id=71539
-
- Reviewed by David Kilzer.
-
- In order to have CFURL and NSURL to be consistent when both are used on Mac,
- KURL::createCFURL() is changed to support empty URL values.
-
- * This change log entry is made up to test _parse_entry:
- * a list of things
-
- * platform/cf/KURLCFNet.cpp:
- (WebCore::createCFURLFromBuffer):
- (WebCore::KURL::createCFURL):
- * platform/mac/KURLMac.mm :
- (WebCore::KURL::operator NSURL *):
- (WebCore::KURL::createCFURL):
- * WebCoreSupport/ChromeClientEfl.cpp:
- (WebCore::ChromeClientEfl::closeWindowSoon): call new function and moves its
- previous functionality there.
- * ewk/ewk_private.h:
- * ewk/ewk_view.cpp:
-
-2011-03-02 Carol Szabo <carol.szabo@nokia.com>
-
- Reviewed by David Hyatt <hyatt@apple.com>
-
- content property doesn't support quotes
- https://bugs.webkit.org/show_bug.cgi?id=6503
-
- Added full support for quotes as defined by CSS 2.1.
-
- Tests: fast/css/content/content-quotes-01.html
- fast/css/content/content-quotes-02.html
- fast/css/content/content-quotes-03.html
- fast/css/content/content-quotes-04.html
- fast/css/content/content-quotes-05.html
- fast/css/content/content-quotes-06.html
-
-2011-03-31 Brent Fulgham <bfulgham@webkit.org>
-
- Reviewed Adam Roben.
-
- [WinCairo] Implement Missing drawWindowsBitmap method.
- https://bugs.webkit.org/show_bug.cgi?id=57409
-
-2011-03-28 Dirk Pranke <dpranke@chromium.org>
-
- RS=Tony Chang.
-
- r81977 moved FontPlatformData.h from
- WebCore/platform/graphics/cocoa to platform/graphics. This
- change updates the chromium build accordingly.
-
- https://bugs.webkit.org/show_bug.cgi?id=57281
-
- * platform/graphics/chromium/CrossProcessFontLoading.mm:
-
-2011-05-04 Alexis Menard <alexis.menard@openbossa.org>
-
- Unreviewed warning fix.
-
- The variable is just used in the ASSERT macro. Let's use ASSERT_UNUSED to avoid
- a warning in Release build.
-
- * accessibility/AccessibilityRenderObject.cpp:
- (WebCore::lastChildConsideringContinuation):
-
-2011-10-11 Antti Koivisto <antti@apple.com>
-
- Resolve regular and visited link style in a single pass
- https://bugs.webkit.org/show_bug.cgi?id=69838
-
- Reviewed by Darin Adler
-
- We can simplify and speed up selector matching by removing the recursive matching done
- to generate the style for the :visited pseudo selector. Both regular and visited link style
- can be generated in a single pass through the style selector.
-
-== Rolled over to ChangeLog-2009-06-16 ==
-"""
-
- def test_parse_bug_id_from_changelog(self):
- commit_text = '''
-2011-03-23 Ojan Vafai <ojan@chromium.org>
-
- Add failing result for WebKit2. All tests that require
- focus fail on WebKit2. See https://bugs.webkit.org/show_bug.cgi?id=56988.
-
- * platform/mac-wk2/fast/css/pseudo-any-expected.txt: Added.
-
- '''
-
- self.assertEqual(56988, parse_bug_id_from_changelog(commit_text))
-
- commit_text = '''
-2011-03-23 Ojan Vafai <ojan@chromium.org>
-
- Add failing result for WebKit2. All tests that require
- focus fail on WebKit2. See https://bugs.webkit.org/show_bug.cgi?id=56988.
- https://bugs.webkit.org/show_bug.cgi?id=12345
-
- * platform/mac-wk2/fast/css/pseudo-any-expected.txt: Added.
-
- '''
-
- self.assertEqual(12345, parse_bug_id_from_changelog(commit_text))
-
- commit_text = '''
-2011-03-31 Adam Roben <aroben@apple.com>
-
- Quote the executable path we pass to ::CreateProcessW
-
- This will ensure that spaces in the path will be interpreted correctly.
-
- Fixes <http://webkit.org/b/57569> Web process sometimes fails to launch when there are
- spaces in its path
-
- Reviewed by Steve Falkenburg.
-
- * UIProcess/Launcher/win/ProcessLauncherWin.cpp:
- (WebKit::ProcessLauncher::launchProcess): Surround the executable path in quotes.
-
- '''
-
- self.assertEqual(57569, parse_bug_id_from_changelog(commit_text))
-
- commit_text = '''
-2011-03-29 Timothy Hatcher <timothy@apple.com>
-
- Update WebCore Localizable.strings to contain WebCore, WebKit/mac and WebKit2 strings.
-
- https://webkit.org/b/57354
-
- Reviewed by Sam Weinig.
-
- * English.lproj/Localizable.strings: Updated.
- * StringsNotToBeLocalized.txt: Removed. To hard to maintain in WebCore.
- * platform/network/cf/LoaderRunLoopCF.h: Remove a single quote in an #error so
- extract-localizable-strings does not complain about unbalanced single quotes.
- '''
-
- self.assertEqual(57354, parse_bug_id_from_changelog(commit_text))
-
- def test_parse_log_entries_from_changelog(self):
- changelog_file = StringIO(self._example_changelog)
- parsed_entries = list(ChangeLog.parse_entries_from_file(changelog_file))
- self.assertEqual(len(parsed_entries), 9)
- self.assertEqual(parsed_entries[0].date_line(), u"2009-08-17 Tor Arne Vestb\xf8 <vestbo@webkit.org>")
- self.assertEqual(parsed_entries[0].date(), "2009-08-17")
- self.assertEqual(parsed_entries[0].reviewer_text(), "David Levin")
- self.assertEqual(parsed_entries[0].is_touched_files_text_clean(), False)
- self.assertEqual(parsed_entries[1].date_line(), "2009-08-16 David Kilzer <ddkilzer@apple.com>")
- self.assertEqual(parsed_entries[1].date(), "2009-08-16")
- self.assertEqual(parsed_entries[1].author_email(), "ddkilzer@apple.com")
- self.assertEqual(parsed_entries[1].touched_files_text(), " * Scripts/bugzilla-tool:\n * Scripts/modules/scm.py:\n")
- self.assertEqual(parsed_entries[1].is_touched_files_text_clean(), True)
- self.assertEqual(parsed_entries[2].reviewer_text(), "Mark Rowe")
- self.assertEqual(parsed_entries[2].touched_files(), ["DumpRenderTree/mac/DumpRenderTreeWindow.mm"])
- self.assertEqual(parsed_entries[2].touched_functions(), {"DumpRenderTree/mac/DumpRenderTreeWindow.mm": ["-[DumpRenderTreeWindow close]"]})
- self.assertEqual(parsed_entries[2].is_touched_files_text_clean(), False)
- self.assertEqual(parsed_entries[3].author_name(), "Benjamin Poulain")
- self.assertEqual(parsed_entries[3].touched_files(), ["platform/cf/KURLCFNet.cpp", "platform/mac/KURLMac.mm",
- "WebCoreSupport/ChromeClientEfl.cpp", "ewk/ewk_private.h", "ewk/ewk_view.cpp"])
- self.assertEqual(parsed_entries[3].touched_functions(), {"platform/cf/KURLCFNet.cpp": ["WebCore::createCFURLFromBuffer", "WebCore::KURL::createCFURL"],
- "platform/mac/KURLMac.mm": ["WebCore::KURL::operator NSURL *", "WebCore::KURL::createCFURL"],
- "WebCoreSupport/ChromeClientEfl.cpp": ["WebCore::ChromeClientEfl::closeWindowSoon"], "ewk/ewk_private.h": [], "ewk/ewk_view.cpp": []})
- self.assertEqual(parsed_entries[3].bug_description(), "[Mac] ResourceRequest's nsURLRequest() does not differentiate null and empty URLs with CFNetwork")
- self.assertEqual(parsed_entries[4].reviewer_text(), "David Hyatt")
- self.assertIsNone(parsed_entries[4].bug_description())
- self.assertEqual(parsed_entries[5].reviewer_text(), "Adam Roben")
- self.assertEqual(parsed_entries[6].reviewer_text(), "Tony Chang")
- self.assertIsNone(parsed_entries[7].reviewer_text())
- self.assertEqual(parsed_entries[8].reviewer_text(), 'Darin Adler')
-
- def test_parse_log_entries_from_annotated_file(self):
- # Note that there are trailing spaces on some of the lines intentionally.
- changelog_file = StringIO(u"100000 ossy@webkit.org 2011-11-11 Csaba Osztrogon\u00e1c <ossy@webkit.org>\n"
- u"100000 ossy@webkit.org\n"
- u"100000 ossy@webkit.org 100,000 !!!\n"
- u"100000 ossy@webkit.org \n"
- u"100000 ossy@webkit.org Reviewed by Zoltan Herczeg.\n"
- u"100000 ossy@webkit.org \n"
- u"100000 ossy@webkit.org * ChangeLog: Point out revision 100,000.\n"
- u"100000 ossy@webkit.org \n"
- u"93798 ap@apple.com 2011-08-25 Alexey Proskuryakov <ap@apple.com>\n"
- u"93798 ap@apple.com \n"
- u"93798 ap@apple.com Fix build when GCC 4.2 is not installed.\n"
- u"93798 ap@apple.com \n"
- u"93798 ap@apple.com * gtest/xcode/Config/CompilerVersion.xcconfig: Copied from Source/WebCore/Configurations/CompilerVersion.xcconfig.\n"
- u"93798 ap@apple.com * gtest/xcode/Config/General.xcconfig:\n"
- u"93798 ap@apple.com Use the same compiler version as other projects do.\n"
- u"93798 ap@apple.com\n"
- u"99491 andreas.kling@nokia.com 2011-11-03 Andreas Kling <kling@webkit.org>\n"
- u"99491 andreas.kling@nokia.com \n"
- u"99190 andreas.kling@nokia.com Unreviewed build fix, sigh.\n"
- u"99190 andreas.kling@nokia.com \n"
- u"99190 andreas.kling@nokia.com * css/CSSFontFaceRule.h:\n"
- u"99190 andreas.kling@nokia.com * css/CSSMutableStyleDeclaration.h:\n"
- u"99190 andreas.kling@nokia.com\n"
- u"99190 andreas.kling@nokia.com 2011-11-03 Andreas Kling <kling@webkit.org>\n"
- u"99190 andreas.kling@nokia.com \n"
- u"99187 andreas.kling@nokia.com Unreviewed build fix, out-of-line StyleSheet::parentStyleSheet()\n"
- u"99187 andreas.kling@nokia.com again since there's a cycle in the includes between CSSRule/StyleSheet.\n"
- u"99187 andreas.kling@nokia.com \n"
- u"99187 andreas.kling@nokia.com * css/StyleSheet.cpp:\n"
- u"99187 andreas.kling@nokia.com (WebCore::StyleSheet::parentStyleSheet):\n"
- u"99187 andreas.kling@nokia.com * css/StyleSheet.h:\n"
- u"99187 andreas.kling@nokia.com \n")
-
- parsed_entries = list(ChangeLog.parse_entries_from_file(changelog_file))
- self.assertEqual(parsed_entries[0].revision(), 100000)
- self.assertEqual(parsed_entries[0].reviewer_text(), "Zoltan Herczeg")
- self.assertEqual(parsed_entries[0].author_name(), u"Csaba Osztrogon\u00e1c")
- self.assertEqual(parsed_entries[0].author_email(), "ossy@webkit.org")
- self.assertEqual(parsed_entries[1].revision(), 93798)
- self.assertEqual(parsed_entries[1].author_name(), "Alexey Proskuryakov")
- self.assertEqual(parsed_entries[2].revision(), 99190)
- self.assertEqual(parsed_entries[2].author_name(), "Andreas Kling")
- self.assertEqual(parsed_entries[3].revision(), 99187)
- self.assertEqual(parsed_entries[3].author_name(), "Andreas Kling")
-
- def _assert_parse_reviewer_text_and_list(self, text, expected_reviewer_text, expected_reviewer_text_list=None):
- reviewer_text, reviewer_text_list = ChangeLogEntry._parse_reviewer_text(text)
- self.assertEqual(reviewer_text, expected_reviewer_text)
- if expected_reviewer_text_list:
- self.assertEqual(reviewer_text_list, expected_reviewer_text_list)
- else:
- self.assertEqual(reviewer_text_list, [expected_reviewer_text])
-
- def _assert_parse_reviewer_text_list(self, text, expected_reviewer_text_list):
- reviewer_text, reviewer_text_list = ChangeLogEntry._parse_reviewer_text(text)
- self.assertEqual(reviewer_text_list, expected_reviewer_text_list)
-
- def test_parse_reviewer_text(self):
- self._assert_parse_reviewer_text_and_list(' reviewed by Ryosuke Niwa, Oliver Hunt, and Dimitri Glazkov',
- 'Ryosuke Niwa, Oliver Hunt, and Dimitri Glazkov', ['Ryosuke Niwa', 'Oliver Hunt', 'Dimitri Glazkov'])
- self._assert_parse_reviewer_text_and_list('Reviewed by Brady Eidson and David Levin, landed by Brady Eidson',
- 'Brady Eidson and David Levin', ['Brady Eidson', 'David Levin'])
-
- self._assert_parse_reviewer_text_and_list('Reviewed by Simon Fraser. Committed by Beth Dakin.', 'Simon Fraser')
- self._assert_parse_reviewer_text_and_list('Reviewed by Geoff Garen. V8 fixes courtesy of Dmitry Titov.', 'Geoff Garen')
- self._assert_parse_reviewer_text_and_list('Reviewed by Adam Roben&Dirk Schulze', 'Adam Roben&Dirk Schulze', ['Adam Roben', 'Dirk Schulze'])
- self._assert_parse_reviewer_text_and_list('Rubber stamps by Darin Adler & Sam Weinig.', 'Darin Adler & Sam Weinig', ['Darin Adler', 'Sam Weinig'])
-
- self._assert_parse_reviewer_text_and_list('Reviewed by adam,andy and andy adam, andy smith',
- 'adam,andy and andy adam, andy smith', ['adam', 'andy', 'andy adam', 'andy smith'])
-
- self._assert_parse_reviewer_text_and_list('rubber stamped by Oliver Hunt (oliver@apple.com) and Darin Adler (darin@apple.com)',
- 'Oliver Hunt and Darin Adler', ['Oliver Hunt', 'Darin Adler'])
-
- self._assert_parse_reviewer_text_and_list('rubber Stamped by David Hyatt <hyatt@apple.com>', 'David Hyatt')
- self._assert_parse_reviewer_text_and_list('Rubber-stamped by Antti Koivisto.', 'Antti Koivisto')
- self._assert_parse_reviewer_text_and_list('Rubberstamped by Dan Bernstein.', 'Dan Bernstein')
- self._assert_parse_reviewer_text_and_list('Reviews by Ryosuke Niwa', 'Ryosuke Niwa')
- self._assert_parse_reviewer_text_and_list('Reviews Ryosuke Niwa', 'Ryosuke Niwa')
- self._assert_parse_reviewer_text_and_list('Rubberstamp Ryosuke Niwa', 'Ryosuke Niwa')
- self._assert_parse_reviewer_text_and_list('Typed and reviewed by Alexey Proskuryakov.', 'Alexey Proskuryakov')
- self._assert_parse_reviewer_text_and_list('Reviewed and landed by Brady Eidson', 'Brady Eidson')
- self._assert_parse_reviewer_text_and_list('Reviewed by rniwa@webkit.org.', 'rniwa@webkit.org')
- self._assert_parse_reviewer_text_and_list('Reviewed by Dirk Schulze / Darin Adler.', 'Dirk Schulze / Darin Adler', ['Dirk Schulze', 'Darin Adler'])
- self._assert_parse_reviewer_text_and_list('Reviewed by Sam Weinig + Oliver Hunt.', 'Sam Weinig + Oliver Hunt', ['Sam Weinig', 'Oliver Hunt'])
-
- self._assert_parse_reviewer_text_list('Reviewed by Sam Weinig, and given a good once-over by Jeff Miller.', ['Sam Weinig', 'Jeff Miller'])
- self._assert_parse_reviewer_text_list(' Reviewed by Sam Weinig, even though this is just a...', ['Sam Weinig'])
- self._assert_parse_reviewer_text_list('Rubber stamped by by Gustavo Noronha Silva', ['Gustavo Noronha Silva'])
- self._assert_parse_reviewer_text_list('Rubberstamped by Noam Rosenthal, who wrote the original code.', ['Noam Rosenthal'])
- self._assert_parse_reviewer_text_list('Reviewed by Dan Bernstein (relanding of r47157)', ['Dan Bernstein'])
- self._assert_parse_reviewer_text_list('Reviewed by Geoffrey "Sean/Shawn/Shaun" Garen', ['Geoffrey Garen'])
- self._assert_parse_reviewer_text_list('Reviewed by Dave "Messy" Hyatt.', ['Dave Hyatt'])
- self._assert_parse_reviewer_text_list('Reviewed by Sam \'The Belly\' Weinig', ['Sam Weinig'])
- self._assert_parse_reviewer_text_list('Rubber-stamped by David "I\'d prefer not" Hyatt.', ['David Hyatt'])
- self._assert_parse_reviewer_text_list('Reviewed by Mr. Geoffrey Garen.', ['Geoffrey Garen'])
- self._assert_parse_reviewer_text_list('Reviewed by Darin (ages ago)', ['Darin'])
- self._assert_parse_reviewer_text_list('Reviewed by Sam Weinig (except for a few comment and header tweaks).', ['Sam Weinig'])
- self._assert_parse_reviewer_text_list('Reviewed by Sam Weinig (all but the FormDataListItem rename)', ['Sam Weinig'])
- self._assert_parse_reviewer_text_list('Reviewed by Darin Adler, tweaked and landed by Beth.', ['Darin Adler'])
- self._assert_parse_reviewer_text_list('Reviewed by Sam Weinig with no hesitation', ['Sam Weinig'])
- self._assert_parse_reviewer_text_list('Reviewed by Oliver Hunt, okayed by Darin Adler.', ['Oliver Hunt'])
- self._assert_parse_reviewer_text_list('Reviewed by Darin Adler).', ['Darin Adler'])
-
- # For now, we let unofficial reviewers recognized as reviewers
- self._assert_parse_reviewer_text_list('Reviewed by Sam Weinig, Anders Carlsson, and (unofficially) Adam Barth.',
- ['Sam Weinig', 'Anders Carlsson', 'Adam Barth'])
-
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY.', None)
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY - Build Fix.', None)
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY, layout tests fix.', None)
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY (Qt build fix pt 2).', None)
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY(rollout)', None)
- self._assert_parse_reviewer_text_list('Reviewed by NOBODY (Build fix, forgot to svn add this file)', None)
- self._assert_parse_reviewer_text_list('Reviewed by nobody (trivial follow up fix), Joseph Pecoraro LGTM-ed.', None)
-
- def _entry_with_author(self, author_text):
- return ChangeLogEntry('''2009-08-19 AUTHOR_TEXT
-
- Reviewed by Ryosuke Niwa
-
- * Scripts/bugzilla-tool:
-'''.replace("AUTHOR_TEXT", author_text))
-
- def _entry_with_reviewer(self, reviewer_line):
- return ChangeLogEntry('''2009-08-19 Eric Seidel <eric@webkit.org>
-
- REVIEW_LINE
-
- * Scripts/bugzilla-tool:
-'''.replace("REVIEW_LINE", reviewer_line))
-
- def _contributors(self, names):
- return [CommitterList().contributor_by_name(name) for name in names]
-
- def _assert_fuzzy_reviewer_match(self, reviewer_text, expected_text_list, expected_contributors):
- unused, reviewer_text_list = ChangeLogEntry._parse_reviewer_text(reviewer_text)
- self.assertEqual(reviewer_text_list, expected_text_list)
- self.assertEqual(self._entry_with_reviewer(reviewer_text).reviewers(), self._contributors(expected_contributors))
-
- def test_fuzzy_reviewer_match__none(self):
- self._assert_fuzzy_reviewer_match('Reviewed by BUILD FIX', ['BUILD FIX'], [])
- self._assert_fuzzy_reviewer_match('Reviewed by Mac build fix', ['Mac build fix'], [])
-
- def test_fuzzy_reviewer_match_adam_barth(self):
- self._assert_fuzzy_reviewer_match('Reviewed by Adam Barth.:w', ['Adam Barth.:w'], ['Adam Barth'])
-
- def test_fuzzy_reviewer_match_darin_adler_et_al(self):
- self._assert_fuzzy_reviewer_match('Reviewed by Darin Adler in <https://bugs.webkit.org/show_bug.cgi?id=47736>.', ['Darin Adler in'], ['Darin Adler'])
- self._assert_fuzzy_reviewer_match('Reviewed by Darin Adler, Dan Bernstein, Adele Peterson, and others.',
- ['Darin Adler', 'Dan Bernstein', 'Adele Peterson', 'others'], ['Darin Adler', 'Dan Bernstein', 'Adele Peterson'])
-
- def test_fuzzy_reviewer_match_dimitri_glazkov(self):
- self._assert_fuzzy_reviewer_match('Reviewed by Dimitri Glazkov, build fix', ['Dimitri Glazkov', 'build fix'], ['Dimitri Glazkov'])
-
- def test_fuzzy_reviewer_match_george_staikos(self):
- self._assert_fuzzy_reviewer_match('Reviewed by George Staikos (and others)', ['George Staikos', 'others'], ['George Staikos'])
-
- def test_fuzzy_reviewer_match_mark_rowe(self):
- self._assert_fuzzy_reviewer_match('Reviewed by Mark Rowe, but Dan Bernstein also reviewed and asked thoughtful questions.',
- ['Mark Rowe', 'but Dan Bernstein also reviewed', 'asked thoughtful questions'], ['Mark Rowe'])
-
- def test_fuzzy_reviewer_match_initial(self):
- self._assert_fuzzy_reviewer_match('Reviewed by Alejandro G. Castro.',
- ['Alejandro G. Castro'], ['Alejandro G. Castro'])
- self._assert_fuzzy_reviewer_match('Reviewed by G. Alejandro G. Castro and others.',
- ['G. Alejandro G. Castro', 'others'], ['Alejandro G. Castro'])
-
- # If a reviewer has a name that ended with an initial, the regular expression
- # will incorrectly trim the last period, but it will still match fuzzily to
- # the full reviewer name.
- self._assert_fuzzy_reviewer_match('Reviewed by G. Alejandro G. G. Castro G.',
- ['G. Alejandro G. G. Castro G'], ['Alejandro G. Castro'])
-
- def _assert_parse_authors(self, author_text, expected_contributors):
- parsed_authors = [(author['name'], author['email']) for author in self._entry_with_author(author_text).authors()]
- self.assertEqual(parsed_authors, expected_contributors)
-
- def test_parse_authors(self):
- self._assert_parse_authors(u'Aaron Colwell <acolwell@chromium.org>', [(u'Aaron Colwell', u'acolwell@chromium.org')])
- self._assert_parse_authors('Eric Seidel <eric@webkit.org>, Ryosuke Niwa <rniwa@webkit.org>',
- [('Eric Seidel', 'eric@webkit.org'), ('Ryosuke Niwa', 'rniwa@webkit.org')])
- self._assert_parse_authors('Zan Dobersek <zandobersek@gmail.com> and Philippe Normand <pnormand@igalia.com>',
- [('Zan Dobersek', 'zandobersek@gmail.com'), ('Philippe Normand', 'pnormand@igalia.com')])
- self._assert_parse_authors('New Contributor <new@webkit.org> and Noob <noob@webkit.org>',
- [('New Contributor', 'new@webkit.org'), ('Noob', 'noob@webkit.org')])
- self._assert_parse_authors('Adam Barth <abarth@webkit.org> && Benjamin Poulain <bpoulain@apple.com>',
- [('Adam Barth', 'abarth@webkit.org'), ('Benjamin Poulain', 'bpoulain@apple.com')])
- self._assert_parse_authors(u'Pawe\u0142 Hajdan, Jr. <phajdan.jr@chromium.org>',
- [(u'Pawe\u0142 Hajdan, Jr.', u'phajdan.jr@chromium.org')])
- self._assert_parse_authors(u'Pawe\u0142 Hajdan, Jr. <phajdan.jr@chromium.org>, Adam Barth <abarth@webkit.org>',
- [(u'Pawe\u0142 Hajdan, Jr.', u'phajdan.jr@chromium.org'), (u'Adam Barth', u'abarth@webkit.org')])
-
- def _assert_has_valid_reviewer(self, reviewer_line, expected):
- self.assertEqual(self._entry_with_reviewer(reviewer_line).has_valid_reviewer(), expected)
-
- def test_has_valid_reviewer(self):
- self._assert_has_valid_reviewer("Reviewed by Eric Seidel.", True)
- self._assert_has_valid_reviewer("Reviewed by Eric Seidel", True) # Not picky about the '.'
- self._assert_has_valid_reviewer("Reviewed by Eric.", False)
- self._assert_has_valid_reviewer("Reviewed by Eric C Seidel.", False)
- self._assert_has_valid_reviewer("Rubber-stamped by Eric.", False)
- self._assert_has_valid_reviewer("Rubber-stamped by Eric Seidel.", True)
- self._assert_has_valid_reviewer("Rubber stamped by Eric.", False)
- self._assert_has_valid_reviewer("Rubber stamped by Eric Seidel.", True)
- self._assert_has_valid_reviewer("Unreviewed build fix.", True)
-
- def test_is_touched_files_text_clean(self):
- tests = [
- ('''2013-01-30 Timothy Loh <timloh@chromium.com>
-
- Make ChangeLogEntry detect annotations by prepare-ChangeLog (Added/Removed/Copied from/Renamed from) as clean.
- https://bugs.webkit.org/show_bug.cgi?id=108433
-
- * Scripts/webkitpy/common/checkout/changelog.py:
- (ChangeLogEntry.is_touched_files_text_clean):
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_is_touched_files_text_clean):
-''', True),
- ('''2013-01-10 Alan Cutter <alancutter@chromium.org>
-
- Perform some file operations (automatically added comments).
-
- * QueueStatusServer/config/charts.py: Copied from Tools/QueueStatusServer/model/queuelog.py.
- (get_time_unit):
- * QueueStatusServer/handlers/queuecharts.py: Added.
- (QueueCharts):
- * Scripts/webkitpy/tool/bot/testdata/webkit_sheriff_0.js: Removed.
- * EWSTools/build-vm.sh: Renamed from Tools/EWSTools/cold-boot.sh.
-''', True),
- ('''2013-01-30 Timothy Loh <timloh@chromium.com>
-
- Add unit test (manually added comment).
-
- * Scripts/webkitpy/common/checkout/changelog_unittest.py:
- (test_is_touched_files_text_clean): Added.
-''', False),
- ('''2013-01-30 Timothy Loh <timloh@chromium.com>
-
- Add file (manually added comment).
-
- * Scripts/webkitpy/common/checkout/super_changelog.py: Copied from the internet.
-''', False),
- ]
-
- for contents, expected_result in tests:
- entry = ChangeLogEntry(contents)
- self.assertEqual(entry.is_touched_files_text_clean(), expected_result)
-
- def test_latest_entry_parse(self):
- changelog_contents = u"%s\n%s" % (self._example_entry, self._example_changelog)
- changelog_file = StringIO(changelog_contents)
- latest_entry = ChangeLog.parse_latest_entry_from_file(changelog_file)
- self.assertEqual(latest_entry.contents(), self._example_entry)
- self.assertEqual(latest_entry.author_name(), "Peter Kasting")
- self.assertEqual(latest_entry.author_email(), "pkasting@google.com")
- self.assertEqual(latest_entry.reviewer_text(), u"Tor Arne Vestb\xf8")
- touched_files = ["DumpRenderTree/win/DumpRenderTree.vcproj", "DumpRenderTree/win/ImageDiff.vcproj", "DumpRenderTree/win/TestNetscapePlugin/TestNetscapePlugin.vcproj"]
- self.assertEqual(latest_entry.touched_files(), touched_files)
- self.assertEqual(latest_entry.touched_functions(), dict((f, []) for f in touched_files))
-
- self.assertTrue(latest_entry.reviewer()) # Make sure that our UTF8-based lookup of Tor works.
-
- def test_latest_entry_parse_single_entry(self):
- changelog_contents = u"%s\n%s" % (self._example_entry, self._rolled_over_footer)
- changelog_file = StringIO(changelog_contents)
- latest_entry = ChangeLog.parse_latest_entry_from_file(changelog_file)
- self.assertEqual(latest_entry.contents(), self._example_entry)
- self.assertEqual(latest_entry.author_name(), "Peter Kasting")
-
- # FIXME: We really should be getting this from prepare-ChangeLog itself.
- _new_entry_boilerplate = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Need a short description (OOPS!).
- Need the bug URL (OOPS!).
-
- Reviewed by NOBODY (OOPS!).
-
- * Scripts/bugzilla-tool:
-'''
-
- _new_entry_boilerplate_with_bugurl = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Need a short description (OOPS!).
- https://bugs.webkit.org/show_bug.cgi?id=12345
-
- Reviewed by NOBODY (OOPS!).
-
- * Scripts/bugzilla-tool:
-'''
-
- _new_entry_boilerplate_with_multiple_bugurl = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Need a short description (OOPS!).
- https://bugs.webkit.org/show_bug.cgi?id=12345
- http://webkit.org/b/12345
-
- Reviewed by NOBODY (OOPS!).
-
- * Scripts/bugzilla-tool:
-'''
-
- _new_entry_boilerplate_without_reviewer_line = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Need a short description (OOPS!).
- https://bugs.webkit.org/show_bug.cgi?id=12345
-
- * Scripts/bugzilla-tool:
-'''
-
- _new_entry_boilerplate_without_reviewer_multiple_bugurl = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Need a short description (OOPS!).
- https://bugs.webkit.org/show_bug.cgi?id=12345
- http://webkit.org/b/12345
-
- * Scripts/bugzilla-tool:
-'''
-
- def test_set_reviewer(self):
- fs = MockFileSystem()
-
- changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate_with_bugurl, self._example_changelog)
- reviewer_name = 'Test Reviewer'
- fs.write_text_file(self._changelog_path, changelog_contents)
- ChangeLog(self._changelog_path, fs).set_reviewer(reviewer_name)
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_contents = changelog_contents.replace('NOBODY (OOPS!)', reviewer_name)
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- changelog_contents_without_reviewer_line = u"%s\n%s" % (self._new_entry_boilerplate_without_reviewer_line, self._example_changelog)
- fs.write_text_file(self._changelog_path, changelog_contents_without_reviewer_line)
- ChangeLog(self._changelog_path, fs).set_reviewer(reviewer_name)
- actual_contents = fs.read_text_file(self._changelog_path)
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- changelog_contents_without_reviewer_line = u"%s\n%s" % (self._new_entry_boilerplate_without_reviewer_multiple_bugurl, self._example_changelog)
- fs.write_text_file(self._changelog_path, changelog_contents_without_reviewer_line)
- ChangeLog(self._changelog_path, fs).set_reviewer(reviewer_name)
- actual_contents = fs.read_text_file(self._changelog_path)
- changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate_with_multiple_bugurl, self._example_changelog)
- expected_contents = changelog_contents.replace('NOBODY (OOPS!)', reviewer_name)
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- def test_set_short_description_and_bug_url(self):
- fs = MockFileSystem()
-
- changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate_with_bugurl, self._example_changelog)
- fs.write_text_file(self._changelog_path, changelog_contents)
- short_description = "A short description"
- bug_url = "http://example.com/b/2344"
- ChangeLog(self._changelog_path, fs).set_short_description_and_bug_url(short_description, bug_url)
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_message = "%s\n %s" % (short_description, bug_url)
- expected_contents = changelog_contents.replace("Need a short description (OOPS!).", expected_message)
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate, self._example_changelog)
- fs.write_text_file(self._changelog_path, changelog_contents)
- short_description = "A short description 2"
- bug_url = "http://example.com/b/2345"
- ChangeLog(self._changelog_path, fs).set_short_description_and_bug_url(short_description, bug_url)
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_message = "%s\n %s" % (short_description, bug_url)
- expected_contents = changelog_contents.replace("Need a short description (OOPS!).\n Need the bug URL (OOPS!).", expected_message)
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- def test_delete_entries(self):
- fs = MockFileSystem()
- fs.write_text_file(self._changelog_path, self._example_changelog)
- ChangeLog(self._changelog_path, fs).delete_entries(8)
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_contents = """2011-10-11 Antti Koivisto <antti@apple.com>
-
- Resolve regular and visited link style in a single pass
- https://bugs.webkit.org/show_bug.cgi?id=69838
-
- Reviewed by Darin Adler
-
- We can simplify and speed up selector matching by removing the recursive matching done
- to generate the style for the :visited pseudo selector. Both regular and visited link style
- can be generated in a single pass through the style selector.
-
-== Rolled over to ChangeLog-2009-06-16 ==
-"""
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
- ChangeLog(self._changelog_path, fs).delete_entries(2)
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_contents = "== Rolled over to ChangeLog-2009-06-16 ==\n"
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
-
-
- def test_prepend_text(self):
- fs = MockFileSystem()
- fs.write_text_file(self._changelog_path, self._example_changelog)
- ChangeLog(self._changelog_path, fs).prepend_text(self._example_entry + "\n")
- actual_contents = fs.read_text_file(self._changelog_path)
- expected_contents = self._example_entry + "\n" + self._example_changelog
- self.assertEqual(actual_contents.splitlines(), expected_contents.splitlines())
diff --git a/Tools/Scripts/webkitpy/common/checkout/checkout.py b/Tools/Scripts/webkitpy/common/checkout/checkout.py
deleted file mode 100644
index 60e15b29c..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/checkout.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright (c) 2010 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.
-
-import StringIO
-
-from webkitpy.common.config import urls
-from webkitpy.common.checkout.changelog import ChangeLog, parse_bug_id_from_changelog
-from webkitpy.common.checkout.commitinfo import CommitInfo
-from webkitpy.common.checkout.scm import CommitMessage
-from webkitpy.common.memoized import memoized
-from webkitpy.common.system.executive import ScriptError
-
-
-# This class represents the WebKit-specific parts of the checkout (like ChangeLogs).
-# FIXME: Move a bunch of ChangeLog-specific processing from SCM to this object.
-# NOTE: All paths returned from this class should be absolute.
-class Checkout(object):
- def __init__(self, scm, executive=None, filesystem=None):
- self._scm = scm
- # FIXME: We shouldn't be grabbing at private members on scm.
- self._executive = executive or self._scm._executive
- self._filesystem = filesystem or self._scm._filesystem
-
- def is_path_to_changelog(self, path):
- return self._filesystem.basename(path) == "ChangeLog"
-
- def _latest_entry_for_changelog_at_revision(self, changelog_path, revision):
- changelog_contents = self._scm.contents_at_revision(changelog_path, revision)
- # contents_at_revision returns a byte array (str()), but we know
- # that ChangeLog files are utf-8. parse_latest_entry_from_file
- # expects a file-like object which vends unicode(), so we decode here.
- # Old revisions of Sources/WebKit/wx/ChangeLog have some invalid utf8 characters.
- changelog_file = StringIO.StringIO(changelog_contents.decode("utf-8", "ignore"))
- return ChangeLog.parse_latest_entry_from_file(changelog_file)
-
- def changelog_entries_for_revision(self, revision, changed_files=None):
- if not changed_files:
- changed_files = self._scm.changed_files_for_revision(revision)
- # FIXME: This gets confused if ChangeLog files are moved, as
- # deletes are still "changed files" per changed_files_for_revision.
- # FIXME: For now we hack around this by caching any exceptions
- # which result from having deleted files included the changed_files list.
- changelog_entries = []
- for path in changed_files:
- if not self.is_path_to_changelog(path):
- continue
- try:
- changelog_entries.append(self._latest_entry_for_changelog_at_revision(path, revision))
- except ScriptError:
- pass
- return changelog_entries
-
- def _changelog_data_for_revision(self, revision):
- changed_files = self._scm.changed_files_for_revision(revision)
- changelog_entries = self.changelog_entries_for_revision(revision, changed_files=changed_files)
- # Assume for now that the first entry has everything we need:
- # FIXME: This will throw an exception if there were no ChangeLogs.
- if not len(changelog_entries):
- return None
- changelog_entry = changelog_entries[0]
- return {
- "bug_id": parse_bug_id_from_changelog(changelog_entry.contents()),
- "author_name": changelog_entry.author_name(),
- "author_email": changelog_entry.author_email(),
- "author": changelog_entry.author(),
- "reviewer_text": changelog_entry.reviewer_text(),
- "reviewer": changelog_entry.reviewer(),
- "contents": changelog_entry.contents(),
- "changed_files": changed_files,
- }
-
- @memoized
- def commit_info_for_revision(self, revision):
- committer_email = self._scm.committer_email_for_revision(revision)
- changelog_data = self._changelog_data_for_revision(revision)
- if not changelog_data:
- return None
- return CommitInfo(revision, committer_email, changelog_data)
-
- def bug_id_for_revision(self, revision):
- return self.commit_info_for_revision(revision).bug_id()
-
- def _modified_files_matching_predicate(self, git_commit, predicate, changed_files=None):
- # SCM returns paths relative to scm.checkout_root
- # Callers (especially those using the ChangeLog class) may
- # expect absolute paths, so this method returns absolute paths.
- if not changed_files:
- changed_files = self._scm.changed_files(git_commit)
- return filter(predicate, map(self._scm.absolute_path, changed_files))
-
- def modified_changelogs(self, git_commit, changed_files=None):
- return self._modified_files_matching_predicate(git_commit, self.is_path_to_changelog, changed_files=changed_files)
-
- def modified_non_changelogs(self, git_commit, changed_files=None):
- return self._modified_files_matching_predicate(git_commit, lambda path: not self.is_path_to_changelog(path), changed_files=changed_files)
-
- def commit_message_for_this_commit(self, git_commit, changed_files=None, return_stderr=False):
- changelog_paths = self.modified_changelogs(git_commit, changed_files)
- if not len(changelog_paths):
- raise ScriptError(message="Found no modified ChangeLogs, cannot create a commit message.\n"
- "All changes require a ChangeLog. See:\n %s" % urls.contribution_guidelines)
-
- message_text = self._scm.run([self._scm.script_path('commit-log-editor'), '--print-log'] + changelog_paths, return_stderr=return_stderr)
- return CommitMessage(message_text.splitlines())
-
- def recent_commit_infos_for_files(self, paths):
- revisions = set(sum(map(self._scm.revisions_changing_file, paths), []))
- return set(map(self.commit_info_for_revision, revisions))
-
- def suggested_reviewers(self, git_commit, changed_files=None):
- changed_files = self.modified_non_changelogs(git_commit, changed_files)
- commit_infos = sorted(self.recent_commit_infos_for_files(changed_files), key=lambda info: info.revision(), reverse=True)
- reviewers = filter(lambda person: person and person.can_review, sum(map(lambda info: [info.reviewer(), info.author()], commit_infos), []))
- unique_reviewers = reduce(lambda suggestions, reviewer: suggestions + [reviewer if reviewer not in suggestions else None], reviewers, [])
- return filter(lambda reviewer: reviewer, unique_reviewers)
-
- def bug_id_for_this_commit(self, git_commit, changed_files=None):
- try:
- return parse_bug_id_from_changelog(self.commit_message_for_this_commit(git_commit, changed_files).message())
- except ScriptError, e:
- pass # We might not have ChangeLogs.
-
- def apply_patch(self, patch):
- # It's possible that the patch was not made from the root directory.
- # We should detect and handle that case.
- # FIXME: Move _scm.script_path here once we get rid of all the dependencies.
- # --force (continue after errors) is the common case, so we always use it.
- args = [self._scm.script_path('svn-apply'), "--force"]
- if patch.reviewer():
- args += ['--reviewer', patch.reviewer().full_name]
- self._executive.run_command(args, input=patch.contents(), cwd=self._scm.checkout_root)
-
- def apply_reverse_diff(self, revision):
- self._scm.apply_reverse_diff(revision)
-
- # We revert the ChangeLogs because removing lines from a ChangeLog
- # doesn't make sense. ChangeLogs are append only.
- changelog_paths = self.modified_changelogs(git_commit=None)
- if len(changelog_paths):
- self._scm.revert_files(changelog_paths)
-
- conflicts = self._scm.conflicted_files()
- if len(conflicts):
- raise ScriptError(message="Failed to apply reverse diff for revision %s because of the following conflicts:\n%s" % (revision, "\n".join(conflicts)))
-
- def apply_reverse_diffs(self, revision_list):
- for revision in sorted(revision_list, reverse=True):
- self.apply_reverse_diff(revision)
diff --git a/Tools/Scripts/webkitpy/common/checkout/checkout_mock.py b/Tools/Scripts/webkitpy/common/checkout/checkout_mock.py
deleted file mode 100644
index 8a17145ca..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/checkout_mock.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (C) 2011 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.
-
-from .commitinfo import CommitInfo
-
-# FIXME: These imports are wrong, we should use a shared MockCommittersList.
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.net.bugzilla.bugzilla_mock import _mock_reviewers
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-
-
-class MockCommitMessage(object):
- def message(self):
- return "This is a fake commit message that is at least 50 characters."
-
-
-committer_list = CommitterList()
-
-mock_revisions = {
- 1: CommitInfo(852, "eric@webkit.org", {
- "bug_id": 50000,
- "author_name": "Adam Barth",
- "author_email": "abarth@webkit.org",
- "author": committer_list.contributor_by_email("abarth@webkit.org"),
- "reviewer_text": "Darin Adler",
- "reviewer": committer_list.committer_by_name("Darin Adler"),
- "changed_files": [
- "path/to/file",
- "another/file",
- ],
- }),
- 3001: CommitInfo(3001, "tomz@codeaurora.org", {
- "bug_id": 50004,
- "author_name": "Tom Zakrajsek",
- "author_email": "tomz@codeaurora.org",
- "author": committer_list.contributor_by_email("tomz@codeaurora.org"),
- "reviewer_text": "Darin Adler",
- "reviewer": committer_list.committer_by_name("Darin Adler"),
- "changed_files": [
- "path/to/file",
- "another/file",
- ],
- })
-}
-
-class MockCheckout(object):
- def __init__(self):
- # FIXME: It's unclear if a MockCheckout is very useful. A normal Checkout
- # with a MockSCM/MockFileSystem/MockExecutive is probably better.
- self._filesystem = MockFileSystem()
-
- def commit_info_for_revision(self, svn_revision):
- # There are legacy tests that all expected these revision numbers to map
- # to the same commit description (now mock_revisions[1])
- if svn_revision in [32, 123, 852, 853, 854, 1234, 21654, 21655, 21656]:
- return mock_revisions[1]
-
- if svn_revision in mock_revisions:
- return mock_revisions[svn_revision]
-
- # any "unrecognized" svn_revision will return None.
-
- def is_path_to_changelog(self, path):
- return self._filesystem.basename(path) == "ChangeLog"
-
- def bug_id_for_revision(self, svn_revision):
- return 12345
-
- def recent_commit_infos_for_files(self, paths):
- return [self.commit_info_for_revision(32)]
-
- def modified_changelogs(self, git_commit, changed_files=None):
- # Ideally we'd return something more interesting here. The problem is
- # that LandDiff will try to actually read the patch from disk!
- return []
-
- def commit_message_for_this_commit(self, git_commit, changed_files=None):
- return MockCommitMessage()
-
- def apply_patch(self, patch):
- pass
-
- def apply_reverse_diffs(self, revision):
- pass
-
- def suggested_reviewers(self, git_commit, changed_files=None):
- # FIXME: We should use a shared mock commiter list.
- return [_mock_reviewers[0]]
diff --git a/Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py b/Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py
deleted file mode 100644
index 587798e77..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/checkout_unittest.py
+++ /dev/null
@@ -1,260 +0,0 @@
-# Copyright (C) 2010 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.
-
-import codecs
-import os
-import shutil
-import tempfile
-import unittest2 as unittest
-
-from .checkout import Checkout
-from .changelog import ChangeLogEntry
-from .scm import CommitMessage, SCMDetector
-from .scm.scm_mock import MockSCM
-from webkitpy.common.webkit_finder import WebKitFinder
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.filesystem import FileSystem # FIXME: This should not be needed.
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-
-
-_changelog1entry1 = u"""2010-03-25 Tor Arne Vestb\u00f8 <vestbo@webkit.org>
-
- Unreviewed build fix to un-break webkit-patch land.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- * Scripts/webkitpy/common/checkout/api.py: import scm.CommitMessage
-"""
-_changelog1entry2 = u"""2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Move commit_message_for_this_commit from scm to checkout
- https://bugs.webkit.org/show_bug.cgi?id=36629
-
- * Scripts/webkitpy/common/checkout/api.py:
-"""
-_changelog1 = u"\n".join([_changelog1entry1, _changelog1entry2])
-_changelog2 = u"""2010-03-25 Tor Arne Vestb\u00f8 <vestbo@webkit.org>
-
- Unreviewed build fix to un-break webkit-patch land.
-
- Second part of this complicated change by me, Tor Arne Vestb\u00f8!
-
- * Path/To/Complicated/File: Added.
-
-2010-03-25 Adam Barth <abarth@webkit.org>
-
- Reviewed by Eric Seidel.
-
- Filler change.
-"""
-
-class CommitMessageForThisCommitTest(unittest.TestCase):
- expected_commit_message = u"""Unreviewed build fix to un-break webkit-patch land.
-
-Tools:
-
-Move commit_message_for_this_commit from scm to checkout
-https://bugs.webkit.org/show_bug.cgi?id=36629
-
-* Scripts/webkitpy/common/checkout/api.py: import scm.CommitMessage
-
-LayoutTests:
-
-Second part of this complicated change by me, Tor Arne Vestb\u00f8!
-
-* Path/To/Complicated/File: Added.
-"""
-
- def setUp(self):
- # FIXME: This should not need to touch the filesystem, however
- # ChangeLog is difficult to mock at current.
- self.filesystem = FileSystem()
- self.temp_dir = str(self.filesystem.mkdtemp(suffix="changelogs"))
- self.old_cwd = self.filesystem.getcwd()
- self.filesystem.chdir(self.temp_dir)
- self.webkit_base = WebKitFinder(self.filesystem).webkit_base()
-
- # Trick commit-log-editor into thinking we're in a Subversion working copy so it won't
- # complain about not being able to figure out what SCM is in use.
- # FIXME: VCSTools.pm is no longer so easily fooled. It logs because "svn info" doesn't
- # treat a bare .svn directory being part of an svn checkout.
- self.filesystem.maybe_make_directory(".svn")
-
- self.changelogs = map(self.filesystem.abspath, (self.filesystem.join("Tools", "ChangeLog"), self.filesystem.join("LayoutTests", "ChangeLog")))
- for path, contents in zip(self.changelogs, (_changelog1, _changelog2)):
- self.filesystem.maybe_make_directory(self.filesystem.dirname(path))
- self.filesystem.write_text_file(path, contents)
-
- def tearDown(self):
- self.filesystem.rmtree(self.temp_dir)
- self.filesystem.chdir(self.old_cwd)
-
- def test_commit_message_for_this_commit(self):
- executive = Executive()
-
- def mock_run(*args, **kwargs):
- # Note that we use a real Executive here, not a MockExecutive, so we can test that we're
- # invoking commit-log-editor correctly.
- env = os.environ.copy()
- env['CHANGE_LOG_EMAIL_ADDRESS'] = 'vestbo@webkit.org'
- kwargs['env'] = env
- return executive.run_command(*args, **kwargs)
-
- detector = SCMDetector(self.filesystem, executive)
- real_scm = detector.detect_scm_system(self.webkit_base)
-
- mock_scm = MockSCM()
- mock_scm.run = mock_run
- mock_scm.script_path = real_scm.script_path
-
- checkout = Checkout(mock_scm)
- checkout.modified_changelogs = lambda git_commit, changed_files=None: self.changelogs
- commit_message = checkout.commit_message_for_this_commit(git_commit=None, return_stderr=True)
- # Throw away the first line - a warning about unknown VCS root.
- commit_message.message_lines = commit_message.message_lines[1:]
- self.assertMultiLineEqual(commit_message.message(), self.expected_commit_message)
-
-
-class CheckoutTest(unittest.TestCase):
- def _make_checkout(self):
- return Checkout(scm=MockSCM(), filesystem=MockFileSystem(), executive=MockExecutive())
-
- def test_latest_entry_for_changelog_at_revision(self):
- def mock_contents_at_revision(changelog_path, revision):
- self.assertEqual(changelog_path, "foo")
- self.assertEqual(revision, "bar")
- # contents_at_revision is expected to return a byte array (str)
- # so we encode our unicode ChangeLog down to a utf-8 stream.
- # The ChangeLog utf-8 decoding should ignore invalid codepoints.
- invalid_utf8 = "\255"
- return _changelog1.encode("utf-8") + invalid_utf8
- checkout = self._make_checkout()
- checkout._scm.contents_at_revision = mock_contents_at_revision
- entry = checkout._latest_entry_for_changelog_at_revision("foo", "bar")
- self.assertMultiLineEqual(entry.contents(), _changelog1entry1) # Pylint is confused about this line, pylint: disable=E1101
-
- # FIXME: This tests a hack around our current changed_files handling.
- # Right now changelog_entries_for_revision tries to fetch deleted files
- # from revisions, resulting in a ScriptError exception. Test that we
- # recover from those and still return the other ChangeLog entries.
- def test_changelog_entries_for_revision(self):
- checkout = self._make_checkout()
- checkout._scm.changed_files_for_revision = lambda revision: ['foo/ChangeLog', 'bar/ChangeLog']
-
- def mock_latest_entry_for_changelog_at_revision(path, revision):
- if path == "foo/ChangeLog":
- return 'foo'
- raise ScriptError()
-
- checkout._latest_entry_for_changelog_at_revision = mock_latest_entry_for_changelog_at_revision
-
- # Even though fetching one of the entries failed, the other should succeed.
- entries = checkout.changelog_entries_for_revision(1)
- self.assertEqual(len(entries), 1)
- self.assertEqual(entries[0], 'foo')
-
- def test_commit_info_for_revision(self):
- checkout = self._make_checkout()
- checkout._scm.changed_files_for_revision = lambda revision: ['path/to/file', 'another/file']
- checkout._scm.committer_email_for_revision = lambda revision, changed_files=None: "committer@example.com"
- checkout.changelog_entries_for_revision = lambda revision, changed_files=None: [ChangeLogEntry(_changelog1entry1)]
- commitinfo = checkout.commit_info_for_revision(4)
- self.assertEqual(commitinfo.bug_id(), 36629)
- self.assertEqual(commitinfo.author_name(), u"Tor Arne Vestb\u00f8")
- self.assertEqual(commitinfo.author_email(), "vestbo@webkit.org")
- self.assertIsNone(commitinfo.reviewer_text())
- self.assertIsNone(commitinfo.reviewer())
- self.assertEqual(commitinfo.committer_email(), "committer@example.com")
- self.assertIsNone(commitinfo.committer())
- self.assertEqual(commitinfo.to_json(), {
- 'bug_id': 36629,
- 'author_email': 'vestbo@webkit.org',
- 'changed_files': [
- 'path/to/file',
- 'another/file',
- ],
- 'reviewer_text': None,
- 'author_name': u'Tor Arne Vestb\xf8',
- })
-
- checkout.changelog_entries_for_revision = lambda revision, changed_files=None: []
- self.assertIsNone(checkout.commit_info_for_revision(1))
-
- def test_bug_id_for_revision(self):
- checkout = self._make_checkout()
- checkout._scm.committer_email_for_revision = lambda revision: "committer@example.com"
- checkout.changelog_entries_for_revision = lambda revision, changed_files=None: [ChangeLogEntry(_changelog1entry1)]
- self.assertEqual(checkout.bug_id_for_revision(4), 36629)
-
- def test_bug_id_for_this_commit(self):
- checkout = self._make_checkout()
- checkout.commit_message_for_this_commit = lambda git_commit, changed_files=None: CommitMessage(ChangeLogEntry(_changelog1entry1).contents().splitlines())
- self.assertEqual(checkout.bug_id_for_this_commit(git_commit=None), 36629)
-
- def test_modified_changelogs(self):
- checkout = self._make_checkout()
- checkout._scm.checkout_root = "/foo/bar"
- checkout._scm.changed_files = lambda git_commit: ["file1", "ChangeLog", "relative/path/ChangeLog"]
- expected_changlogs = ["/foo/bar/ChangeLog", "/foo/bar/relative/path/ChangeLog"]
- self.assertEqual(checkout.modified_changelogs(git_commit=None), expected_changlogs)
-
- def test_suggested_reviewers(self):
- def mock_changelog_entries_for_revision(revision, changed_files=None):
- if revision % 2 == 0:
- return [ChangeLogEntry(_changelog1entry1)]
- return [ChangeLogEntry(_changelog1entry2)]
-
- def mock_revisions_changing_file(path, limit=5):
- if path.endswith("ChangeLog"):
- return [3]
- return [4, 8]
-
- checkout = self._make_checkout()
- checkout._scm.checkout_root = "/foo/bar"
- checkout._scm.changed_files = lambda git_commit: ["file1", "file2", "relative/path/ChangeLog"]
- checkout._scm.revisions_changing_file = mock_revisions_changing_file
- checkout.changelog_entries_for_revision = mock_changelog_entries_for_revision
- reviewers = checkout.suggested_reviewers(git_commit=None)
- reviewer_names = [reviewer.full_name for reviewer in reviewers]
- self.assertEqual(reviewer_names, [u'Tor Arne Vestb\xf8'])
-
- def test_apply_patch(self):
- checkout = self._make_checkout()
- checkout._executive = MockExecutive(should_log=True)
- checkout._scm.script_path = lambda script: script
- mock_patch = Mock()
- mock_patch.contents = lambda: "foo"
- mock_patch.reviewer = lambda: None
- expected_logs = "MOCK run_command: ['svn-apply', '--force'], cwd=/mock-checkout, input=foo\n"
- OutputCapture().assert_outputs(self, checkout.apply_patch, [mock_patch], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/common/checkout/commitinfo.py b/Tools/Scripts/webkitpy/common/checkout/commitinfo.py
deleted file mode 100644
index 79cb79f7c..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/commitinfo.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (c) 2010 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.
-#
-# WebKit's python module for holding information on a commit
-
-from webkitpy.common.config import urls
-from webkitpy.common.config.committers import CommitterList
-
-
-class CommitInfo(object):
- def __init__(self, revision, committer_email, changelog_data, committer_list=CommitterList()):
- self._revision = revision
- self._committer_email = committer_email
- self._changelog_data = changelog_data
-
- # Derived values:
- self._committer = committer_list.committer_by_email(committer_email)
-
- def revision(self):
- return self._revision
-
- def committer(self):
- return self._committer # None if committer isn't in contributors.json
-
- def committer_email(self):
- return self._committer_email
-
- def bug_id(self):
- return self._changelog_data["bug_id"] # May be None
-
- def author(self):
- return self._changelog_data["author"] # May be None
-
- def author_name(self):
- return self._changelog_data["author_name"]
-
- def author_email(self):
- return self._changelog_data["author_email"]
-
- def reviewer(self):
- return self._changelog_data["reviewer"] # May be None
-
- def reviewer_text(self):
- return self._changelog_data["reviewer_text"] # May be None
-
- def changed_files(self):
- return self._changelog_data["changed_files"]
-
- def to_json(self):
- return {
- "bug_id": self.bug_id(),
- "author_name": self.author_name(),
- "author_email": self.author_email(),
- "reviewer_text": self.reviewer_text(),
- "changed_files": self.changed_files(),
- }
-
- def responsible_parties(self):
- responsible_parties = [
- self.committer(),
- self.author(),
- self.reviewer(),
- ]
- return set([party for party in responsible_parties if party]) # Filter out None
-
- # FIXME: It is slightly lame that this "view" method is on this "model" class (in MVC terms)
- def blame_string(self, bugs):
- string = "r%s:\n" % self.revision()
- string += " %s\n" % urls.view_revision_url(self.revision())
- string += " Bug: %s (%s)\n" % (self.bug_id(), bugs.bug_url_for_bug_id(self.bug_id()))
- author_line = "\"%s\" <%s>" % (self.author_name(), self.author_email())
- string += " Author: %s\n" % (self.author() or author_line)
- string += " Reviewer: %s\n" % (self.reviewer() or self.reviewer_text())
- string += " Committer: %s" % self.committer()
- return string
diff --git a/Tools/Scripts/webkitpy/common/checkout/commitinfo_unittest.py b/Tools/Scripts/webkitpy/common/checkout/commitinfo_unittest.py
deleted file mode 100644
index 826673de6..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/commitinfo_unittest.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.checkout.commitinfo import CommitInfo
-from webkitpy.common.config.committers import CommitterList, Committer, Reviewer
-
-class CommitInfoTest(unittest.TestCase):
-
- def test_commit_info_creation(self):
- author = Committer("Author", "author@example.com")
- committer = Committer("Committer", "committer@example.com")
- reviewer = Reviewer("Reviewer", "reviewer@example.com")
- committer_list = CommitterList(committers=[author, committer], reviewers=[reviewer])
-
- changelog_data = {
- "bug_id": 1234,
- "author_name": "Committer",
- "author_email": "author@example.com",
- "author": author,
- "reviewer_text": "Reviewer",
- "reviewer": reviewer,
- }
- commit = CommitInfo(123, "committer@example.com", changelog_data, committer_list)
-
- self.assertEqual(commit.revision(), 123)
- self.assertEqual(commit.bug_id(), 1234)
- self.assertEqual(commit.author_name(), "Committer")
- self.assertEqual(commit.author_email(), "author@example.com")
- self.assertEqual(commit.author(), author)
- self.assertEqual(commit.reviewer_text(), "Reviewer")
- self.assertEqual(commit.reviewer(), reviewer)
- self.assertEqual(commit.committer(), committer)
- self.assertEqual(commit.committer_email(), "committer@example.com")
- self.assertEqual(commit.responsible_parties(), set([author, committer, reviewer]))
diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
deleted file mode 100644
index 3a9ea9224..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
+++ /dev/null
@@ -1,193 +0,0 @@
-# Copyright (C) 2009 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.
-
-"""WebKit's Python module for interacting with patches."""
-
-import logging
-import re
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: This is broken. We should compile our regexps up-front
-# instead of using a custom cache.
-_regexp_compile_cache = {}
-
-
-# FIXME: This function should be removed.
-def match(pattern, string):
- """Matches the string with the pattern, caching the compiled regexp."""
- if not pattern in _regexp_compile_cache:
- _regexp_compile_cache[pattern] = re.compile(pattern)
- return _regexp_compile_cache[pattern].match(string)
-
-
-# FIXME: This belongs on DiffParser (e.g. as to_svn_diff()).
-def git_diff_to_svn_diff(line):
- """Converts a git formatted diff line to a svn formatted line.
-
- Args:
- line: A string representing a line of the diff.
- """
- # FIXME: This list should be a class member on DiffParser.
- # These regexp patterns should be compiled once instead of every time.
- conversion_patterns = (("^diff --git \w/(.+) \w/(?P<FilePath>.+)", lambda matched: "Index: " + matched.group('FilePath') + "\n"),
- ("^new file.*", lambda matched: "\n"),
- ("^index (([0-9a-f]{7}\.\.[0-9a-f]{7})|([0-9a-f]{40}\.\.[0-9a-f]{40})) [0-9]{6}", lambda matched: "===================================================================\n"),
- ("^--- \w/(?P<FilePath>.+)", lambda matched: "--- " + matched.group('FilePath') + "\n"),
- ("^\+\+\+ \w/(?P<FilePath>.+)", lambda matched: "+++ " + matched.group('FilePath') + "\n"))
-
- for pattern, conversion in conversion_patterns:
- matched = match(pattern, line)
- if matched:
- return conversion(matched)
- return line
-
-
-# This function exists so we can unittest get_diff_converter function
-def svn_diff_to_svn_diff(line):
- return line
-
-
-# FIXME: This method belongs on DiffParser
-def get_diff_converter(lines):
- """Gets a converter function of diff lines.
-
- Args:
- lines: The lines of a diff file.
- If this line is git formatted, we'll return a
- converter from git to SVN.
- """
- for i, line in enumerate(lines[:-1]):
- # Stop when we find the first patch
- if line[:3] == "+++" and lines[i + 1] == "---":
- break
- if match(r"^diff --git \w/", line):
- return git_diff_to_svn_diff
- return svn_diff_to_svn_diff
-
-_INITIAL_STATE = 1
-_DECLARED_FILE_PATH = 2
-_PROCESSING_CHUNK = 3
-
-
-class DiffFile(object):
- """Contains the information for one file in a patch.
-
- The field "lines" is a list which contains tuples in this format:
- (deleted_line_number, new_line_number, line_string)
- If deleted_line_number is zero, it means this line is newly added.
- If new_line_number is zero, it means this line is deleted.
- """
- # FIXME: Tuples generally grow into classes. We should consider
- # adding a DiffLine object.
-
- def added_or_modified_line_numbers(self):
- # This logic was moved from patchreader.py, but may not be
- # the right API for this object long-term.
- return [line[1] for line in self.lines if not line[0]]
-
- def __init__(self, filename):
- self.filename = filename
- self.lines = []
-
- def add_new_line(self, line_number, line):
- self.lines.append((0, line_number, line))
-
- def add_deleted_line(self, line_number, line):
- self.lines.append((line_number, 0, line))
-
- def add_unchanged_line(self, deleted_line_number, new_line_number, line):
- self.lines.append((deleted_line_number, new_line_number, line))
-
-
-# If this is going to be called DiffParser, it should be a re-useable parser.
-# Otherwise we should rename it to ParsedDiff or just Diff.
-class DiffParser(object):
- """A parser for a patch file.
-
- The field "files" is a dict whose key is the filename and value is
- a DiffFile object.
- """
-
- def __init__(self, diff_input):
- """Parses a diff.
-
- Args:
- diff_input: An iterable object.
- """
- self.files = self._parse_into_diff_files(diff_input)
-
- # FIXME: This function is way too long and needs to be broken up.
- def _parse_into_diff_files(self, diff_input):
- files = {}
- state = _INITIAL_STATE
- current_file = None
- old_diff_line = None
- new_diff_line = None
- transform_line = get_diff_converter(diff_input)
- for line in diff_input:
- line = line.rstrip("\n")
- line = transform_line(line)
-
- file_declaration = match(r"^Index: (?P<FilePath>.+)", line)
- if file_declaration:
- filename = file_declaration.group('FilePath')
- current_file = DiffFile(filename)
- files[filename] = current_file
- state = _DECLARED_FILE_PATH
- continue
-
- lines_changed = match(r"^@@ -(?P<OldStartLine>\d+)(,\d+)? \+(?P<NewStartLine>\d+)(,\d+)? @@", line)
- if lines_changed:
- if state != _DECLARED_FILE_PATH and state != _PROCESSING_CHUNK:
- _log.error('Unexpected line change without file path '
- 'declaration: %r' % line)
- old_diff_line = int(lines_changed.group('OldStartLine'))
- new_diff_line = int(lines_changed.group('NewStartLine'))
- state = _PROCESSING_CHUNK
- continue
-
- if state == _PROCESSING_CHUNK:
- if line.startswith('+'):
- current_file.add_new_line(new_diff_line, line[1:])
- new_diff_line += 1
- elif line.startswith('-'):
- current_file.add_deleted_line(old_diff_line, line[1:])
- old_diff_line += 1
- elif line.startswith(' '):
- current_file.add_unchanged_line(old_diff_line, new_diff_line, line[1:])
- old_diff_line += 1
- new_diff_line += 1
- elif line == '\\ No newline at end of file':
- # Nothing to do. We may still have some added lines.
- pass
- else:
- _log.error('Unexpected diff format when parsing a '
- 'chunk: %r' % line)
- return files
diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_parser_unittest.py b/Tools/Scripts/webkitpy/common/checkout/diff_parser_unittest.py
deleted file mode 100644
index 78dab26bc..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/diff_parser_unittest.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (C) 2009 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.
-
-import cStringIO as StringIO
-import unittest2 as unittest
-import diff_parser
-import re
-
-from webkitpy.common.checkout.diff_test_data import DIFF_TEST_DATA
-
-class DiffParserTest(unittest.TestCase):
- maxDiff = None
-
- def test_diff_parser(self, parser = None):
- if not parser:
- parser = diff_parser.DiffParser(DIFF_TEST_DATA.splitlines())
- self.assertEqual(3, len(parser.files))
-
- self.assertTrue('WebCore/rendering/style/StyleFlexibleBoxData.h' in parser.files)
- diff = parser.files['WebCore/rendering/style/StyleFlexibleBoxData.h']
- self.assertEqual(7, len(diff.lines))
- # The first two unchaged lines.
- self.assertEqual((47, 47), diff.lines[0][0:2])
- self.assertEqual('', diff.lines[0][2])
- self.assertEqual((48, 48), diff.lines[1][0:2])
- self.assertEqual(' unsigned align : 3; // EBoxAlignment', diff.lines[1][2])
- # The deleted line
- self.assertEqual((50, 0), diff.lines[3][0:2])
- self.assertEqual(' unsigned orient: 1; // EBoxOrient', diff.lines[3][2])
-
- # The first file looks OK. Let's check the next, more complicated file.
- self.assertTrue('WebCore/rendering/style/StyleRareInheritedData.cpp' in parser.files)
- diff = parser.files['WebCore/rendering/style/StyleRareInheritedData.cpp']
- # There are 3 chunks.
- self.assertEqual(7 + 7 + 9, len(diff.lines))
- # Around an added line.
- self.assertEqual((60, 61), diff.lines[9][0:2])
- self.assertEqual((0, 62), diff.lines[10][0:2])
- self.assertEqual((61, 63), diff.lines[11][0:2])
- # Look through the last chunk, which contains both add's and delete's.
- self.assertEqual((81, 83), diff.lines[14][0:2])
- self.assertEqual((82, 84), diff.lines[15][0:2])
- self.assertEqual((83, 85), diff.lines[16][0:2])
- self.assertEqual((84, 0), diff.lines[17][0:2])
- self.assertEqual((0, 86), diff.lines[18][0:2])
- self.assertEqual((0, 87), diff.lines[19][0:2])
- self.assertEqual((85, 88), diff.lines[20][0:2])
- self.assertEqual((86, 89), diff.lines[21][0:2])
- self.assertEqual((87, 90), diff.lines[22][0:2])
-
- # Check if a newly added file is correctly handled.
- diff = parser.files['LayoutTests/platform/mac/fast/flexbox/box-orient-button-expected.checksum']
- self.assertEqual(1, len(diff.lines))
- self.assertEqual((0, 1), diff.lines[0][0:2])
-
- def test_diff_converter(self):
- comment_lines = [
- "Hey guys,\n",
- "\n",
- "See my awesome patch below!\n",
- "\n",
- " - Cool Hacker\n",
- "\n",
- ]
-
- revision_lines = [
- "Subversion Revision 289799\n",
- ]
-
- svn_diff_lines = [
- "Index: Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "===================================================================\n",
- "--- Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "+++ Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "@@ -59,6 +59,7 @@ def git_diff_to_svn_diff(line):\n",
- ]
- self.assertEqual(diff_parser.get_diff_converter(svn_diff_lines), diff_parser.svn_diff_to_svn_diff)
- self.assertEqual(diff_parser.get_diff_converter(comment_lines + svn_diff_lines), diff_parser.svn_diff_to_svn_diff)
- self.assertEqual(diff_parser.get_diff_converter(revision_lines + svn_diff_lines), diff_parser.svn_diff_to_svn_diff)
-
- git_diff_lines = [
- "diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "index 3c5b45b..0197ead 100644\n",
- "--- a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "+++ b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py\n",
- "@@ -59,6 +59,7 @@ def git_diff_to_svn_diff(line):\n",
- ]
- self.assertEqual(diff_parser.get_diff_converter(git_diff_lines), diff_parser.git_diff_to_svn_diff)
- self.assertEqual(diff_parser.get_diff_converter(comment_lines + git_diff_lines), diff_parser.git_diff_to_svn_diff)
- self.assertEqual(diff_parser.get_diff_converter(revision_lines + git_diff_lines), diff_parser.git_diff_to_svn_diff)
-
- def test_git_mnemonicprefix(self):
- p = re.compile(r' ([a|b])/')
-
- prefixes = [
- { 'a' : 'i', 'b' : 'w' }, # git-diff (compares the (i)ndex and the (w)ork tree)
- { 'a' : 'c', 'b' : 'w' }, # git-diff HEAD (compares a (c)ommit and the (w)ork tree)
- { 'a' : 'c', 'b' : 'i' }, # git diff --cached (compares a (c)ommit and the (i)ndex)
- { 'a' : 'o', 'b' : 'w' }, # git-diff HEAD:file1 file2 (compares an (o)bject and a (w)ork tree entity)
- { 'a' : '1', 'b' : '2' }, # git diff --no-index a b (compares two non-git things (1) and (2))
- ]
-
- for prefix in prefixes:
- patch = p.sub(lambda x: " %s/" % prefix[x.group(1)], DIFF_TEST_DATA)
- self.test_diff_parser(diff_parser.DiffParser(patch.splitlines()))
-
- def test_git_diff_to_svn_diff(self):
- output = """\
-Index: Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-===================================================================
---- Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-+++ Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-@@ -59,6 +59,7 @@ def git_diff_to_svn_diff(line):
- A
- B
- C
-+D
- E
- F
-"""
-
- inputfmt = StringIO.StringIO("""\
-diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-index 2ed552c4555db72df16b212547f2c125ae301a04..72870482000c0dba64ce4300ed782c03ee79b74f 100644
---- a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-+++ b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-@@ -59,6 +59,7 @@ def git_diff_to_svn_diff(line):
- A
- B
- C
-+D
- E
- F
-""")
- shortfmt = StringIO.StringIO("""\
-diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-index b48b162..f300960 100644
---- a/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-+++ b/Tools/Scripts/webkitpy/common/checkout/diff_parser.py
-@@ -59,6 +59,7 @@ def git_diff_to_svn_diff(line):
- A
- B
- C
-+D
- E
- F
-""")
-
- self.assertMultiLineEqual(output, ''.join(diff_parser.git_diff_to_svn_diff(x) for x in shortfmt.readlines()))
- self.assertMultiLineEqual(output, ''.join(diff_parser.git_diff_to_svn_diff(x) for x in inputfmt.readlines()))
diff --git a/Tools/Scripts/webkitpy/common/checkout/diff_test_data.py b/Tools/Scripts/webkitpy/common/checkout/diff_test_data.py
deleted file mode 100644
index 5f1719da8..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/diff_test_data.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2011 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.
-
-# FIXME: Store this as a .patch file in some new fixtures directory or similar.
-DIFF_TEST_DATA = '''diff --git a/WebCore/rendering/style/StyleFlexibleBoxData.h b/WebCore/rendering/style/StyleFlexibleBoxData.h
-index f5d5e74..3b6aa92 100644
---- a/WebCore/rendering/style/StyleFlexibleBoxData.h
-+++ b/WebCore/rendering/style/StyleFlexibleBoxData.h
-@@ -47,7 +47,6 @@ public:
-
- unsigned align : 3; // EBoxAlignment
- unsigned pack: 3; // EBoxAlignment
-- unsigned orient: 1; // EBoxOrient
- unsigned lines : 1; // EBoxLines
-
- private:
-diff --git a/WebCore/rendering/style/StyleRareInheritedData.cpp b/WebCore/rendering/style/StyleRareInheritedData.cpp
-index ce21720..324929e 100644
---- a/WebCore/rendering/style/StyleRareInheritedData.cpp
-+++ b/WebCore/rendering/style/StyleRareInheritedData.cpp
-@@ -39,6 +39,7 @@ StyleRareInheritedData::StyleRareInheritedData()
- , textSizeAdjust(RenderStyle::initialTextSizeAdjust())
- , resize(RenderStyle::initialResize())
- , userSelect(RenderStyle::initialUserSelect())
-+ , boxOrient(RenderStyle::initialBoxOrient())
- {
- }
-
-@@ -58,6 +59,7 @@ StyleRareInheritedData::StyleRareInheritedData(const StyleRareInheritedData& o)
- , textSizeAdjust(o.textSizeAdjust)
- , resize(o.resize)
- , userSelect(o.userSelect)
-+ , boxOrient(o.boxOrient)
- {
- }
-
-@@ -81,7 +83,8 @@ bool StyleRareInheritedData::operator==(const StyleRareInheritedData& o) const
- && khtmlLineBreak == o.khtmlLineBreak
- && textSizeAdjust == o.textSizeAdjust
- && resize == o.resize
-- && userSelect == o.userSelect;
-+ && userSelect == o.userSelect
-+ && boxOrient == o.boxOrient;
- }
-
- bool StyleRareInheritedData::shadowDataEquivalent(const StyleRareInheritedData& o) const
-diff --git a/LayoutTests/platform/mac/fast/flexbox/box-orient-button-expected.checksum b/LayoutTests/platform/mac/fast/flexbox/box-orient-button-expected.checksum
-new file mode 100644
-index 0000000..6db26bd
---- /dev/null
-+++ b/LayoutTests/platform/mac/fast/flexbox/box-orient-button-expected.checksum
-@@ -0,0 +1 @@
-+61a373ee739673a9dcd7bac62b9f182e
-\ No newline at end of file
-'''
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/__init__.py b/Tools/Scripts/webkitpy/common/checkout/scm/__init__.py
deleted file mode 100644
index f691f58e1..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/__init__.py
+++ /dev/null
@@ -1,8 +0,0 @@
-# Required for Python to search this directory for module files
-
-# We only export public API here.
-from .commitmessage import CommitMessage
-from .detection import SCMDetector
-from .git import Git, AmbiguousCommitError
-from .scm import SCM, AuthenticationError, CheckoutNeedsUpdate
-from .svn import SVN
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/commitmessage.py b/Tools/Scripts/webkitpy/common/checkout/scm/commitmessage.py
deleted file mode 100644
index be0d431f9..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/commitmessage.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (c) 2009, 2010, 2011 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import re
-
-
-def _first_non_empty_line_after_index(lines, index=0):
- first_non_empty_line = index
- for line in lines[index:]:
- if re.match("^\s*$", line):
- first_non_empty_line += 1
- else:
- break
- return first_non_empty_line
-
-
-class CommitMessage:
- def __init__(self, message):
- self.message_lines = message[_first_non_empty_line_after_index(message, 0):]
-
- def body(self, lstrip=False):
- lines = self.message_lines[_first_non_empty_line_after_index(self.message_lines, 1):]
- if lstrip:
- lines = [line.lstrip() for line in lines]
- return "\n".join(lines) + "\n"
-
- def description(self, lstrip=False, strip_url=False):
- line = self.message_lines[0]
- if lstrip:
- line = line.lstrip()
- if strip_url:
- line = re.sub("^(\s*)<.+> ", "\1", line)
- return line
-
- def message(self):
- return "\n".join(self.message_lines) + "\n"
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/detection.py b/Tools/Scripts/webkitpy/common/checkout/scm/detection.py
deleted file mode 100644
index e635b4075..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/detection.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (c) 2009, 2010, 2011 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import Executive
-
-from .svn import SVN
-from .git import Git
-
-_log = logging.getLogger(__name__)
-
-
-class SCMDetector(object):
- def __init__(self, filesystem, executive):
- self._filesystem = filesystem
- self._executive = executive
-
- def default_scm(self, patch_directories=None):
- """Return the default SCM object as determined by the CWD and running code.
-
- Returns the default SCM object for the current working directory; if the
- CWD is not in a checkout, then we attempt to figure out if the SCM module
- itself is part of a checkout, and return that one. If neither is part of
- a checkout, None is returned.
- """
- cwd = self._filesystem.getcwd()
- scm_system = self.detect_scm_system(cwd, patch_directories)
- if not scm_system:
- script_directory = self._filesystem.dirname(self._filesystem.path_to_module(self.__module__))
- scm_system = self.detect_scm_system(script_directory, patch_directories)
- if scm_system:
- _log.info("The current directory (%s) is not a WebKit checkout, using %s" % (cwd, scm_system.checkout_root))
- else:
- raise Exception("FATAL: Failed to determine the SCM system for either %s or %s" % (cwd, script_directory))
- return scm_system
-
- def detect_scm_system(self, path, patch_directories=None):
- absolute_path = self._filesystem.abspath(path)
-
- if patch_directories == []:
- patch_directories = None
-
- if SVN.in_working_directory(absolute_path, executive=self._executive):
- return SVN(cwd=absolute_path, patch_directories=patch_directories, filesystem=self._filesystem, executive=self._executive)
-
- if Git.in_working_directory(absolute_path, executive=self._executive):
- return Git(cwd=absolute_path, filesystem=self._filesystem, executive=self._executive)
-
- return None
-
-
-# FIXME: These free functions are all deprecated:
-
-def detect_scm_system(path, patch_directories=None):
- return SCMDetector(FileSystem(), Executive()).detect_scm_system(path, patch_directories)
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/detection_unittest.py b/Tools/Scripts/webkitpy/common/checkout/scm/detection_unittest.py
deleted file mode 100644
index 593f093c4..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/detection_unittest.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2011 Daniel Bates (dbates@intudata.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:
-#
-# * 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.
-
-import unittest2 as unittest
-
-from .detection import SCMDetector
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.outputcapture import OutputCapture
-
-
-class SCMDetectorTest(unittest.TestCase):
- def test_detect_scm_system(self):
- filesystem = MockFileSystem()
- executive = MockExecutive(should_log=True)
- detector = SCMDetector(filesystem, executive)
-
- expected_logs = """\
-MOCK run_command: ['svn', 'info'], cwd=/
-MOCK run_command: ['git', 'rev-parse', '--is-inside-work-tree'], cwd=/
-"""
- scm = OutputCapture().assert_outputs(self, detector.detect_scm_system, ["/"], expected_logs=expected_logs)
- self.assertIsNone(scm)
- # FIXME: This should make a synthetic tree and test SVN and Git detection in that tree.
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/git.py b/Tools/Scripts/webkitpy/common/checkout/scm/git.py
deleted file mode 100644
index 58eda7032..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/git.py
+++ /dev/null
@@ -1,514 +0,0 @@
-# Copyright (c) 2009, 2010, 2011 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import datetime
-import logging
-import os
-import re
-
-from webkitpy.common.memoized import memoized
-from webkitpy.common.system.executive import Executive, ScriptError
-
-from .commitmessage import CommitMessage
-from .scm import AuthenticationError, SCM, commit_error_handler
-from .svn import SVN, SVNRepository
-
-_log = logging.getLogger(__name__)
-
-
-class AmbiguousCommitError(Exception):
- def __init__(self, num_local_commits, has_working_directory_changes):
- Exception.__init__(self, "Found %s local commits and the working directory is %s" % (
- num_local_commits, ["clean", "not clean"][has_working_directory_changes]))
- self.num_local_commits = num_local_commits
- self.has_working_directory_changes = has_working_directory_changes
-
-
-class Git(SCM, SVNRepository):
-
- # Git doesn't appear to document error codes, but seems to return
- # 1 or 128, mostly.
- ERROR_FILE_IS_MISSING = 128
-
- executable_name = 'git'
-
- def __init__(self, cwd, **kwargs):
- SCM.__init__(self, cwd, **kwargs)
- self._check_git_architecture()
-
- def _machine_is_64bit(self):
- import platform
- # This only is tested on Mac.
- if not platform.mac_ver()[0]:
- return False
-
- # platform.architecture()[0] can be '64bit' even if the machine is 32bit:
- # http://mail.python.org/pipermail/pythonmac-sig/2009-September/021648.html
- # Use the sysctl command to find out what the processor actually supports.
- return self.run(['sysctl', '-n', 'hw.cpu64bit_capable']).rstrip() == '1'
-
- def _executable_is_64bit(self, path):
- # Again, platform.architecture() fails us. On my machine
- # git_bits = platform.architecture(executable=git_path, bits='default')[0]
- # git_bits is just 'default', meaning the call failed.
- file_output = self.run(['file', path])
- return re.search('x86_64', file_output)
-
- def _check_git_architecture(self):
- if not self._machine_is_64bit():
- return
-
- # We could path-search entirely in python or with
- # which.py (http://code.google.com/p/which), but this is easier:
- git_path = self.run(['which', self.executable_name]).rstrip()
- if self._executable_is_64bit(git_path):
- return
-
- webkit_dev_thread_url = "https://lists.webkit.org/pipermail/webkit-dev/2010-December/015287.html"
- _log.warning("This machine is 64-bit, but the git binary (%s) does not support 64-bit.\nInstall a 64-bit git for better performance, see:\n%s\n" % (git_path, webkit_dev_thread_url))
-
- def _run_git(self, command_args, **kwargs):
- full_command_args = [self.executable_name] + command_args
- full_kwargs = kwargs
- if not 'cwd' in full_kwargs:
- full_kwargs['cwd'] = self.checkout_root
- return self.run(full_command_args, **full_kwargs)
-
- @classmethod
- def in_working_directory(cls, path, executive=None):
- try:
- executive = executive or Executive()
- return executive.run_command([cls.executable_name, 'rev-parse', '--is-inside-work-tree'], cwd=path, error_handler=Executive.ignore_error).rstrip() == "true"
- except OSError, e:
- # The Windows bots seem to through a WindowsError when git isn't installed.
- return False
-
- def find_checkout_root(self, path):
- # "git rev-parse --show-cdup" would be another way to get to the root
- checkout_root = self._run_git(['rev-parse', '--show-toplevel'], cwd=(path or "./")).strip()
- if not self._filesystem.isabs(checkout_root): # Sometimes git returns relative paths
- checkout_root = self._filesystem.join(path, checkout_root)
- return checkout_root
-
- def to_object_name(self, filepath):
- # FIXME: This can't be the right way to append a slash.
- root_end_with_slash = self._filesystem.join(self.find_checkout_root(self._filesystem.dirname(filepath)), '')
- # FIXME: This seems to want some sort of rel_path instead?
- return filepath.replace(root_end_with_slash, '')
-
- @classmethod
- def read_git_config(cls, key, cwd=None, executive=None):
- # FIXME: This should probably use cwd=self.checkout_root.
- # Pass --get-all for cases where the config has multiple values
- # Pass the cwd if provided so that we can handle the case of running webkit-patch outside of the working directory.
- # FIXME: This should use an Executive.
- executive = executive or Executive()
- return executive.run_command([cls.executable_name, "config", "--get-all", key], error_handler=Executive.ignore_error, cwd=cwd).rstrip('\n')
-
- @staticmethod
- def commit_success_regexp():
- return "^Committed r(?P<svn_revision>\d+)$"
-
- def discard_local_commits(self):
- self._run_git(['reset', '--hard', self.remote_branch_ref()])
-
- def local_commits(self):
- return self._run_git(['log', '--pretty=oneline', 'HEAD...' + self.remote_branch_ref()]).splitlines()
-
- def rebase_in_progress(self):
- return self._filesystem.exists(self.absolute_path(self._filesystem.join('.git', 'rebase-apply')))
-
- def has_working_directory_changes(self):
- return self._run_git(['diff', 'HEAD', '--no-renames', '--name-only']) != ""
-
- def discard_working_directory_changes(self):
- # Could run git clean here too, but that wouldn't match subversion
- self._run_git(['reset', 'HEAD', '--hard'])
- # Aborting rebase even though this does not match subversion
- if self.rebase_in_progress():
- self._run_git(['rebase', '--abort'])
-
- def status_command(self):
- # git status returns non-zero when there are changes, so we use git diff name --name-status HEAD instead.
- # No file contents printed, thus utf-8 autodecoding in self.run is fine.
- return [self.executable_name, "diff", "--name-status", "--no-renames", "HEAD"]
-
- def _status_regexp(self, expected_types):
- return '^(?P<status>[%s])\t(?P<filename>.+)$' % expected_types
-
- def add_list(self, paths):
- self._run_git(["add"] + paths)
-
- def delete_list(self, paths):
- return self._run_git(["rm", "-f"] + paths)
-
- def exists(self, path):
- return_code = self._run_git(["show", "HEAD:%s" % path], return_exit_code=True, decode_output=False)
- return return_code != self.ERROR_FILE_IS_MISSING
-
- def _branch_from_ref(self, ref):
- return ref.replace('refs/heads/', '')
-
- def _current_branch(self):
- return self._branch_from_ref(self._run_git(['symbolic-ref', '-q', 'HEAD']).strip())
-
- def _upstream_branch(self):
- current_branch = self._current_branch()
- return self._branch_from_ref(self.read_git_config('branch.%s.merge' % current_branch, cwd=self.checkout_root, executive=self._executive).strip())
-
- def merge_base(self, git_commit):
- if git_commit:
- # Rewrite UPSTREAM to the upstream branch
- if 'UPSTREAM' in git_commit:
- upstream = self._upstream_branch()
- if not upstream:
- raise ScriptError(message='No upstream/tracking branch set.')
- git_commit = git_commit.replace('UPSTREAM', upstream)
-
- # Special-case <refname>.. to include working copy changes, e.g., 'HEAD....' shows only the diffs from HEAD.
- if git_commit.endswith('....'):
- return git_commit[:-4]
-
- if '..' not in git_commit:
- git_commit = git_commit + "^.." + git_commit
- return git_commit
-
- return self.remote_merge_base()
-
- def changed_files(self, git_commit=None):
- # FIXME: --diff-filter could be used to avoid the "extract_filenames" step.
- status_command = [self.executable_name, 'diff', '-r', '--name-status', "--no-renames", "--no-ext-diff", "--full-index", self.merge_base(git_commit)]
- # FIXME: I'm not sure we're returning the same set of files that SVN.changed_files is.
- # Added (A), Copied (C), Deleted (D), Modified (M), Renamed (R)
- return self.run_status_and_extract_filenames(status_command, self._status_regexp("ADM"))
-
- def _changes_files_for_commit(self, git_commit):
- # --pretty="format:" makes git show not print the commit log header,
- changed_files = self._run_git(["show", "--pretty=format:", "--name-only", git_commit]).splitlines()
- # instead it just prints a blank line at the top, so we skip the blank line:
- return changed_files[1:]
-
- def changed_files_for_revision(self, revision):
- commit_id = self.git_commit_from_svn_revision(revision)
- return self._changes_files_for_commit(commit_id)
-
- def revisions_changing_file(self, path, limit=5):
- # raise a script error if path does not exists to match the behavior of the svn implementation.
- if not self._filesystem.exists(path):
- raise ScriptError(message="Path %s does not exist." % path)
-
- # git rev-list head --remove-empty --limit=5 -- path would be equivalent.
- commit_ids = self._run_git(["log", "--remove-empty", "--pretty=format:%H", "-%s" % limit, "--", path]).splitlines()
- return filter(lambda revision: revision, map(self.svn_revision_from_git_commit, commit_ids))
-
- def conflicted_files(self):
- # We do not need to pass decode_output for this diff command
- # as we're passing --name-status which does not output any data.
- status_command = [self.executable_name, 'diff', '--name-status', '--no-renames', '--diff-filter=U']
- return self.run_status_and_extract_filenames(status_command, self._status_regexp("U"))
-
- def added_files(self):
- return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp("A"))
-
- def deleted_files(self):
- return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp("D"))
-
- @staticmethod
- def supports_local_commits():
- return True
-
- def display_name(self):
- return "git"
-
- def _most_recent_log_matching(self, grep_str, path):
- # We use '--grep=' + foo rather than '--grep', foo because
- # git 1.7.0.4 (and earlier) didn't support the separate arg.
- return self._run_git(['log', '-1', '--grep=' + grep_str, '--date=iso', self.find_checkout_root(path)])
-
- def svn_revision(self, path):
- git_log = self._most_recent_log_matching('git-svn-id:', path)
- match = re.search("^\s*git-svn-id:.*@(?P<svn_revision>\d+)\ ", git_log, re.MULTILINE)
- if not match:
- return ""
- return str(match.group('svn_revision'))
-
- def timestamp_of_revision(self, path, revision):
- git_log = self._most_recent_log_matching('git-svn-id:.*@%s' % revision, path)
- match = re.search("^Date:\s*(\d{4})-(\d{2})-(\d{2}) (\d{2}):(\d{2}):(\d{2}) ([+-])(\d{2})(\d{2})$", git_log, re.MULTILINE)
- if not match:
- return ""
-
- # Manually modify the timezone since Git doesn't have an option to show it in UTC.
- # Git also truncates milliseconds but we're going to ignore that for now.
- time_with_timezone = datetime.datetime(int(match.group(1)), int(match.group(2)), int(match.group(3)),
- int(match.group(4)), int(match.group(5)), int(match.group(6)), 0)
-
- sign = 1 if match.group(7) == '+' else -1
- time_without_timezone = time_with_timezone - datetime.timedelta(hours=sign * int(match.group(8)), minutes=int(match.group(9)))
- return time_without_timezone.strftime('%Y-%m-%dT%H:%M:%SZ')
-
- def prepend_svn_revision(self, diff):
- revision = self.head_svn_revision()
- if not revision:
- return diff
-
- return "Subversion Revision: " + revision + '\n' + diff
-
- def create_patch(self, git_commit=None, changed_files=None):
- """Returns a byte array (str()) representing the patch file.
- Patch files are effectively binary since they may contain
- files of multiple different encodings."""
-
- # Put code changes at the top of the patch and layout tests
- # at the bottom, this makes for easier reviewing.
- config_path = self._filesystem.dirname(self._filesystem.path_to_module('webkitpy.common.config'))
- order_file = self._filesystem.join(config_path, 'orderfile')
- order = ""
- if self._filesystem.exists(order_file):
- order = "-O%s" % order_file
-
- command = [self.executable_name, 'diff', '--binary', '--no-color', "--no-ext-diff", "--full-index", "--no-renames", order, self.merge_base(git_commit), "--"]
- if changed_files:
- command += changed_files
- return self.prepend_svn_revision(self.run(command, decode_output=False, cwd=self.checkout_root))
-
- def _run_git_svn_find_rev(self, arg):
- # git svn find-rev always exits 0, even when the revision or commit is not found.
- return self._run_git(['svn', 'find-rev', arg]).rstrip()
-
- def _string_to_int_or_none(self, string):
- try:
- return int(string)
- except ValueError, e:
- return None
-
- @memoized
- def git_commit_from_svn_revision(self, svn_revision):
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=111668
- # We should change this to run git log --grep 'git-svn-id' instead
- # so that we don't require git+svn to be set up.
- git_commit = self._run_git_svn_find_rev('r%s' % svn_revision)
- if not git_commit:
- # FIXME: Alternatively we could offer to update the checkout? Or return None?
- raise ScriptError(message='Failed to find git commit for revision %s, your checkout likely needs an update.' % svn_revision)
- return git_commit
-
- @memoized
- def svn_revision_from_git_commit(self, git_commit):
- svn_revision = self._run_git_svn_find_rev(git_commit)
- return self._string_to_int_or_none(svn_revision)
-
- def contents_at_revision(self, path, revision):
- """Returns a byte array (str()) containing the contents
- of path @ revision in the repository."""
- return self._run_git(["show", "%s:%s" % (self.git_commit_from_svn_revision(revision), path)], decode_output=False)
-
- def diff_for_revision(self, revision):
- git_commit = self.git_commit_from_svn_revision(revision)
- return self.create_patch(git_commit)
-
- def diff_for_file(self, path, log=None):
- return self._run_git(['diff', 'HEAD', '--no-renames', '--', path])
-
- def show_head(self, path):
- return self._run_git(['show', 'HEAD:' + self.to_object_name(path)], decode_output=False)
-
- def committer_email_for_revision(self, revision):
- git_commit = self.git_commit_from_svn_revision(revision)
- committer_email = self._run_git(["log", "-1", "--pretty=format:%ce", git_commit])
- # Git adds an extra @repository_hash to the end of every committer email, remove it:
- return committer_email.rsplit("@", 1)[0]
-
- def apply_reverse_diff(self, revision):
- # Assume the revision is an svn revision.
- git_commit = self.git_commit_from_svn_revision(revision)
- # I think this will always fail due to ChangeLogs.
- self._run_git(['revert', '--no-commit', git_commit], error_handler=Executive.ignore_error)
-
- def revert_files(self, file_paths):
- self._run_git(['checkout', 'HEAD'] + file_paths)
-
- def _assert_can_squash(self, has_working_directory_changes):
- squash = self.read_git_config('webkit-patch.commit-should-always-squash', cwd=self.checkout_root, executive=self._executive)
- should_squash = squash and squash.lower() == "true"
-
- if not should_squash:
- # Only warn if there are actually multiple commits to squash.
- num_local_commits = len(self.local_commits())
- if num_local_commits > 1 or (num_local_commits > 0 and has_working_directory_changes):
- raise AmbiguousCommitError(num_local_commits, has_working_directory_changes)
-
- def commit_with_message(self, message, username=None, password=None, git_commit=None, force_squash=False, changed_files=None):
- # Username is ignored during Git commits.
- has_working_directory_changes = self.has_working_directory_changes()
-
- if git_commit:
- # Special-case HEAD.. to mean working-copy changes only.
- if git_commit.upper() == 'HEAD..':
- if not has_working_directory_changes:
- raise ScriptError(message="The working copy is not modified. --git-commit=HEAD.. only commits working copy changes.")
- self.commit_locally_with_message(message)
- return self._commit_on_branch(message, 'HEAD', username=username, password=password)
-
- # Need working directory changes to be committed so we can checkout the merge branch.
- if has_working_directory_changes:
- # FIXME: webkit-patch land will modify the ChangeLogs to correct the reviewer.
- # That will modify the working-copy and cause us to hit this error.
- # The ChangeLog modification could be made to modify the existing local commit.
- raise ScriptError(message="Working copy is modified. Cannot commit individual git_commits.")
- return self._commit_on_branch(message, git_commit, username=username, password=password)
-
- if not force_squash:
- self._assert_can_squash(has_working_directory_changes)
- self._run_git(['reset', '--soft', self.remote_merge_base()])
- self.commit_locally_with_message(message)
- return self.push_local_commits_to_server(username=username, password=password)
-
- def _commit_on_branch(self, message, git_commit, username=None, password=None):
- branch_name = self._current_branch()
- commit_ids = self.commit_ids_from_commitish_arguments([git_commit])
-
- # We want to squash all this branch's commits into one commit with the proper description.
- # We do this by doing a "merge --squash" into a new commit branch, then dcommitting that.
- MERGE_BRANCH_NAME = 'webkit-patch-land'
- self.delete_branch(MERGE_BRANCH_NAME)
-
- # We might be in a directory that's present in this branch but not in the
- # trunk. Move up to the top of the tree so that git commands that expect a
- # valid CWD won't fail after we check out the merge branch.
- # FIXME: We should never be using chdir! We can instead pass cwd= to run_command/self.run!
- self._filesystem.chdir(self.checkout_root)
-
- # Stuff our change into the merge branch.
- # We wrap in a try...finally block so if anything goes wrong, we clean up the branches.
- commit_succeeded = True
- try:
- self._run_git(['checkout', '-q', '-b', MERGE_BRANCH_NAME, self.remote_branch_ref()])
-
- for commit in commit_ids:
- # We're on a different branch now, so convert "head" to the branch name.
- commit = re.sub(r'(?i)head', branch_name, commit)
- # FIXME: Once changed_files and create_patch are modified to separately handle each
- # commit in a commit range, commit each cherry pick so they'll get dcommitted separately.
- self._run_git(['cherry-pick', '--no-commit', commit])
-
- self._run_git(['commit', '-m', message])
- output = self.push_local_commits_to_server(username=username, password=password)
- except Exception, e:
- _log.warning("COMMIT FAILED: " + str(e))
- output = "Commit failed."
- commit_succeeded = False
- finally:
- # And then swap back to the original branch and clean up.
- self.discard_working_directory_changes()
- self._run_git(['checkout', '-q', branch_name])
- self.delete_branch(MERGE_BRANCH_NAME)
-
- return output
-
- def svn_commit_log(self, svn_revision):
- svn_revision = self.strip_r_from_svn_revision(svn_revision)
- return self._run_git(['svn', 'log', '-r', svn_revision])
-
- def last_svn_commit_log(self):
- return self._run_git(['svn', 'log', '--limit=1'])
-
- def svn_blame(self, path):
- return self._run_git(['svn', 'blame', path])
-
- # Git-specific methods:
- def _branch_ref_exists(self, branch_ref):
- return self._run_git(['show-ref', '--quiet', '--verify', branch_ref], return_exit_code=True) == 0
-
- def delete_branch(self, branch_name):
- if self._branch_ref_exists('refs/heads/' + branch_name):
- self._run_git(['branch', '-D', branch_name])
-
- def remote_merge_base(self):
- return self._run_git(['merge-base', self.remote_branch_ref(), 'HEAD']).strip()
-
- def remote_branch_ref(self):
- # Use references so that we can avoid collisions, e.g. we don't want to operate on refs/heads/trunk if it exists.
- remote_branch_refs = self.read_git_config('svn-remote.svn.fetch', cwd=self.checkout_root, executive=self._executive)
- if not remote_branch_refs:
- remote_master_ref = 'refs/remotes/origin/master'
- if not self._branch_ref_exists(remote_master_ref):
- raise ScriptError(message="Can't find a branch to diff against. svn-remote.svn.fetch is not in the git config and %s does not exist" % remote_master_ref)
- return remote_master_ref
-
- # FIXME: What's the right behavior when there are multiple svn-remotes listed?
- # For now, just use the first one.
- first_remote_branch_ref = remote_branch_refs.split('\n')[0]
- return first_remote_branch_ref.split(':')[1]
-
- def commit_locally_with_message(self, message):
- self._run_git(['commit', '--all', '-F', '-'], input=message)
-
- def push_local_commits_to_server(self, username=None, password=None):
- dcommit_command = ['svn', 'dcommit']
- if (not username or not password) and not self.has_authorization_for_realm(self.svn_server_realm):
- raise AuthenticationError(self.svn_server_host, prompt_for_password=True)
- if username:
- dcommit_command.extend(["--username", username])
- output = self._run_git(dcommit_command, error_handler=commit_error_handler, input=password)
- return output
-
- # This function supports the following argument formats:
- # no args : rev-list trunk..HEAD
- # A..B : rev-list A..B
- # A...B : error!
- # A B : [A, B] (different from git diff, which would use "rev-list A..B")
- def commit_ids_from_commitish_arguments(self, args):
- if not len(args):
- args.append('%s..HEAD' % self.remote_branch_ref())
-
- commit_ids = []
- for commitish in args:
- if '...' in commitish:
- raise ScriptError(message="'...' is not supported (found in '%s'). Did you mean '..'?" % commitish)
- elif '..' in commitish:
- commit_ids += reversed(self._run_git(['rev-list', commitish]).splitlines())
- else:
- # Turn single commits or branch or tag names into commit ids.
- commit_ids += self._run_git(['rev-parse', '--revs-only', commitish]).splitlines()
- return commit_ids
-
- def commit_message_for_local_commit(self, commit_id):
- commit_lines = self._run_git(['cat-file', 'commit', commit_id]).splitlines()
-
- # Skip the git headers.
- first_line_after_headers = 0
- for line in commit_lines:
- first_line_after_headers += 1
- if line == "":
- break
- return CommitMessage(commit_lines[first_line_after_headers:])
-
- def files_changed_summary_for_commit(self, commit_id):
- return self._run_git(['diff-tree', '--shortstat', '--no-renames', '--no-commit-id', commit_id])
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/scm.py b/Tools/Scripts/webkitpy/common/checkout/scm/scm.py
deleted file mode 100644
index b005ea239..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/scm.py
+++ /dev/null
@@ -1,249 +0,0 @@
-# Copyright (c) 2009, Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-#
-# Python module for interacting with an SCM system (like SVN or Git)
-
-import logging
-import re
-import sys
-
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.filesystem import FileSystem
-
-_log = logging.getLogger(__name__)
-
-
-class CheckoutNeedsUpdate(ScriptError):
- def __init__(self, script_args, exit_code, output, cwd):
- ScriptError.__init__(self, script_args=script_args, exit_code=exit_code, output=output, cwd=cwd)
-
-
-# FIXME: Should be moved onto SCM
-def commit_error_handler(error):
- if re.search("resource out of date", error.output):
- raise CheckoutNeedsUpdate(script_args=error.script_args, exit_code=error.exit_code, output=error.output, cwd=error.cwd)
- Executive.default_error_handler(error)
-
-
-class AuthenticationError(Exception):
- def __init__(self, server_host, prompt_for_password=False):
- self.server_host = server_host
- self.prompt_for_password = prompt_for_password
-
-
-
-# SCM methods are expected to return paths relative to self.checkout_root.
-class SCM:
- def __init__(self, cwd, executive=None, filesystem=None):
- self.cwd = cwd
- self._executive = executive or Executive()
- self._filesystem = filesystem or FileSystem()
- self.checkout_root = self.find_checkout_root(self.cwd)
-
- # A wrapper used by subclasses to create processes.
- def run(self, args, cwd=None, input=None, error_handler=None, return_exit_code=False, return_stderr=True, decode_output=True):
- # FIXME: We should set cwd appropriately.
- return self._executive.run_command(args,
- cwd=cwd,
- input=input,
- error_handler=error_handler,
- return_exit_code=return_exit_code,
- return_stderr=return_stderr,
- decode_output=decode_output)
-
- # SCM always returns repository relative path, but sometimes we need
- # absolute paths to pass to rm, etc.
- def absolute_path(self, repository_relative_path):
- return self._filesystem.join(self.checkout_root, repository_relative_path)
-
- # FIXME: This belongs in Checkout, not SCM.
- def scripts_directory(self):
- return self._filesystem.join(self.checkout_root, "Tools", "Scripts")
-
- # FIXME: This belongs in Checkout, not SCM.
- def script_path(self, script_name):
- return self._filesystem.join(self.scripts_directory(), script_name)
-
- def run_status_and_extract_filenames(self, status_command, status_regexp):
- filenames = []
- # We run with cwd=self.checkout_root so that returned-paths are root-relative.
- for line in self.run(status_command, cwd=self.checkout_root).splitlines():
- match = re.search(status_regexp, line)
- if not match:
- continue
- # status = match.group('status')
- filename = match.group('filename')
- filenames.append(filename)
- return filenames
-
- def strip_r_from_svn_revision(self, svn_revision):
- match = re.match("^r(?P<svn_revision>\d+)", unicode(svn_revision))
- if (match):
- return match.group('svn_revision')
- return svn_revision
-
- def svn_revision_from_commit_text(self, commit_text):
- match = re.search(self.commit_success_regexp(), commit_text, re.MULTILINE)
- return match.group('svn_revision')
-
- @staticmethod
- def _subclass_must_implement():
- raise NotImplementedError("subclasses must implement")
-
- @classmethod
- def in_working_directory(cls, path, executive=None):
- SCM._subclass_must_implement()
-
- def find_checkout_root(self, path):
- SCM._subclass_must_implement()
-
- @staticmethod
- def commit_success_regexp():
- SCM._subclass_must_implement()
-
- def status_command(self):
- self._subclass_must_implement()
-
- def add(self, path):
- self.add_list([path])
-
- def add_list(self, paths):
- self._subclass_must_implement()
-
- def delete(self, path):
- self.delete_list([path])
-
- def delete_list(self, paths):
- self._subclass_must_implement()
-
- def exists(self, path):
- self._subclass_must_implement()
-
- def changed_files(self, git_commit=None):
- self._subclass_must_implement()
-
- def changed_files_for_revision(self, revision):
- self._subclass_must_implement()
-
- def revisions_changing_file(self, path, limit=5):
- self._subclass_must_implement()
-
- def added_files(self):
- self._subclass_must_implement()
-
- def conflicted_files(self):
- self._subclass_must_implement()
-
- def display_name(self):
- self._subclass_must_implement()
-
- def head_svn_revision(self):
- return self.svn_revision(self.checkout_root)
-
- def svn_revision(self, path):
- """Returns the latest svn revision found in the checkout."""
- self._subclass_must_implement()
-
- def timestamp_of_revision(self, path, revision):
- self._subclass_must_implement()
-
- def create_patch(self, git_commit=None, changed_files=None):
- self._subclass_must_implement()
-
- def committer_email_for_revision(self, revision):
- self._subclass_must_implement()
-
- def contents_at_revision(self, path, revision):
- self._subclass_must_implement()
-
- def diff_for_revision(self, revision):
- self._subclass_must_implement()
-
- def diff_for_file(self, path, log=None):
- self._subclass_must_implement()
-
- def show_head(self, path):
- self._subclass_must_implement()
-
- def apply_reverse_diff(self, revision):
- self._subclass_must_implement()
-
- def revert_files(self, file_paths):
- self._subclass_must_implement()
-
- def commit_with_message(self, message, username=None, password=None, git_commit=None, force_squash=False, changed_files=None):
- self._subclass_must_implement()
-
- def svn_commit_log(self, svn_revision):
- self._subclass_must_implement()
-
- def last_svn_commit_log(self):
- self._subclass_must_implement()
-
- def svn_blame(self, path):
- self._subclass_must_implement()
-
- def has_working_directory_changes(self):
- self._subclass_must_implement()
-
- def discard_working_directory_changes(self):
- self._subclass_must_implement()
-
- #--------------------------------------------------------------------------
- # Subclasses must indicate if they support local commits,
- # but the SCM baseclass will only call local_commits methods when this is true.
- @staticmethod
- def supports_local_commits():
- SCM._subclass_must_implement()
-
- def local_commits(self):
- return []
-
- def has_local_commits(self):
- return len(self.local_commits()) > 0
-
- def discard_local_commits(self):
- return
-
- def remote_merge_base(self):
- SCM._subclass_must_implement()
-
- def commit_locally_with_message(self, message):
- _log.error("Your source control manager does not support local commits.")
- sys.exit(1)
-
- def local_changes_exist(self):
- return (self.supports_local_commits() and self.has_local_commits()) or self.has_working_directory_changes()
-
- def discard_local_changes(self):
- if self.has_working_directory_changes():
- self.discard_working_directory_changes()
-
- if self.has_local_commits():
- self.discard_local_commits()
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py b/Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py
deleted file mode 100644
index c5d10fcb1..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/scm_mock.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (C) 2011 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.
-
-from webkitpy.common.checkout.scm import CommitMessage
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive
-
-
-class MockSCM(object):
- def __init__(self, filesystem=None, executive=None):
- self.checkout_root = "/mock-checkout"
- self.added_paths = set()
- self._filesystem = filesystem or MockFileSystem()
- self._executive = executive or MockExecutive()
-
- def add(self, destination_path):
- self.add_list([destination_path])
-
- def add_list(self, destination_paths):
- self.added_paths.update(set(destination_paths))
-
- def has_working_directory_changes(self):
- return False
-
- def discard_working_directory_changes(self):
- pass
-
- def supports_local_commits(self):
- return True
-
- def has_local_commits(self):
- return False
-
- def discard_local_commits(self):
- pass
-
- def discard_local_changes(self):
- pass
-
- def exists(self, path):
- # TestRealMain.test_real_main (and several other rebaseline tests) are sensitive to this return value.
- # We should make those tests more robust, but for now we just return True always (since no test needs otherwise).
- return True
-
- def absolute_path(self, *comps):
- return self._filesystem.join(self.checkout_root, *comps)
-
- def changed_files(self, git_commit=None):
- return ["MockFile1"]
-
- def changed_files_for_revision(self, revision):
- return ["MockFile1"]
-
- def head_svn_revision(self):
- return '1234'
-
- def svn_revision(self, path):
- return '5678'
-
- def timestamp_of_revision(self, path, revision):
- return '2013-02-01 08:48:05 +0000'
-
- def create_patch(self, git_commit, changed_files=None):
- return "Patch1"
-
- def commit_ids_from_commitish_arguments(self, args):
- return ["Commitish1", "Commitish2"]
-
- def committer_email_for_revision(self, revision):
- return "mock@webkit.org"
-
- def commit_locally_with_message(self, message):
- pass
-
- def commit_with_message(self, message, username=None, password=None, git_commit=None, force_squash=False, changed_files=None):
- pass
-
- def merge_base(self, git_commit):
- return None
-
- def commit_message_for_local_commit(self, commit_id):
- if commit_id == "Commitish1":
- return CommitMessage("CommitMessage1\n" \
- "https://bugs.example.org/show_bug.cgi?id=50000\n")
- if commit_id == "Commitish2":
- return CommitMessage("CommitMessage2\n" \
- "https://bugs.example.org/show_bug.cgi?id=50001\n")
- raise Exception("Bogus commit_id in commit_message_for_local_commit.")
-
- def diff_for_file(self, path, log=None):
- return path + '-diff'
-
- def diff_for_revision(self, revision):
- return "DiffForRevision%s\nhttp://bugs.webkit.org/show_bug.cgi?id=12345" % revision
-
- def show_head(self, path):
- return path
-
- def svn_revision_from_commit_text(self, commit_text):
- return "49824"
-
- def delete(self, path):
- return self.delete_list([path])
-
- def delete_list(self, paths):
- if not self._filesystem:
- return
- for path in paths:
- if self._filesystem.exists(path):
- self._filesystem.remove(path)
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py b/Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py
deleted file mode 100644
index 15432f0e8..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/scm_unittest.py
+++ /dev/null
@@ -1,1600 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2011 Daniel Bates (dbates@intudata.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:
-#
-# * 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.
-
-import atexit
-import base64
-import codecs
-import getpass
-import os
-import os.path
-import re
-import stat
-import sys
-import subprocess
-import tempfile
-import time
-import unittest2 as unittest
-import urllib
-import shutil
-
-from datetime import date
-from webkitpy.common.checkout.checkout import Checkout
-from webkitpy.common.config.committers import Committer # FIXME: This should not be needed
-from webkitpy.common.net.bugzilla import Attachment # FIXME: This should not be needed
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.executive_mock import MockExecutive
-from .git import Git, AmbiguousCommitError
-from .detection import detect_scm_system
-from .scm import SCM, CheckoutNeedsUpdate, commit_error_handler, AuthenticationError
-from .svn import SVN
-
-
-# We cache the mock SVN repo so that we don't create it again for each call to an SVNTest or GitTest test_ method.
-# We store it in a global variable so that we can delete this cached repo on exit(3).
-# FIXME: Remove this once we migrate to Python 2.7. Unittest in Python 2.7 supports module-specific setup and teardown functions.
-cached_svn_repo_path = None
-
-
-def remove_dir(path):
- # Change directory to / to ensure that we aren't in the directory we want to delete.
- os.chdir('/')
- shutil.rmtree(path)
-
-
-# FIXME: Remove this once we migrate to Python 2.7. Unittest in Python 2.7 supports module-specific setup and teardown functions.
-@atexit.register
-def delete_cached_mock_repo_at_exit():
- if cached_svn_repo_path:
- remove_dir(cached_svn_repo_path)
-
-# Eventually we will want to write tests which work for both scms. (like update_webkit, changed_files, etc.)
-# Perhaps through some SCMTest base-class which both SVNTest and GitTest inherit from.
-
-def run_command(*args, **kwargs):
- # FIXME: This should not be a global static.
- # New code should use Executive.run_command directly instead
- return Executive().run_command(*args, **kwargs)
-
-
-# FIXME: This should be unified into one of the executive.py commands!
-# Callers could use run_and_throw_if_fail(args, cwd=cwd, quiet=True)
-def run_silent(args, cwd=None):
- # Note: Not thread safe: http://bugs.python.org/issue2320
- process = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE, cwd=cwd)
- process.communicate() # ignore output
- exit_code = process.wait()
- if exit_code:
- raise ScriptError('Failed to run "%s" exit_code: %d cwd: %s' % (args, exit_code, cwd))
-
-
-def write_into_file_at_path(file_path, contents, encoding="utf-8"):
- if encoding:
- with codecs.open(file_path, "w", encoding) as file:
- file.write(contents)
- else:
- with open(file_path, "w") as file:
- file.write(contents)
-
-
-def read_from_path(file_path, encoding="utf-8"):
- with codecs.open(file_path, "r", encoding) as file:
- return file.read()
-
-
-def _make_diff(command, *args):
- # We use this wrapper to disable output decoding. diffs should be treated as
- # binary files since they may include text files of multiple differnet encodings.
- # FIXME: This should use an Executive.
- return run_command([command, "diff"] + list(args), decode_output=False)
-
-
-def _svn_diff(*args):
- return _make_diff("svn", *args)
-
-
-def _git_diff(*args):
- return _make_diff("git", *args)
-
-
-# Exists to share svn repository creation code between the git and svn tests
-class SVNTestRepository(object):
- @classmethod
- def _svn_add(cls, path):
- run_command(["svn", "add", path])
-
- @classmethod
- def _svn_commit(cls, message):
- run_command(["svn", "commit", "--quiet", "--message", message])
-
- @classmethod
- def _setup_test_commits(cls, svn_repo_url):
-
- svn_checkout_path = tempfile.mkdtemp(suffix="svn_test_checkout")
- run_command(['svn', 'checkout', '--quiet', svn_repo_url, svn_checkout_path])
-
- # Add some test commits
- os.chdir(svn_checkout_path)
-
- write_into_file_at_path("test_file", "test1")
- cls._svn_add("test_file")
- cls._svn_commit("initial commit")
-
- write_into_file_at_path("test_file", "test1test2")
- # This used to be the last commit, but doing so broke
- # GitTest.test_apply_git_patch which use the inverse diff of the last commit.
- # svn-apply fails to remove directories in Git, see:
- # https://bugs.webkit.org/show_bug.cgi?id=34871
- os.mkdir("test_dir")
- # Slash should always be the right path separator since we use cygwin on Windows.
- test_file3_path = "test_dir/test_file3"
- write_into_file_at_path(test_file3_path, "third file")
- cls._svn_add("test_dir")
- cls._svn_commit("second commit")
-
- write_into_file_at_path("test_file", "test1test2test3\n")
- write_into_file_at_path("test_file2", "second file")
- cls._svn_add("test_file2")
- cls._svn_commit("third commit")
-
- # This 4th commit is used to make sure that our patch file handling
- # code correctly treats patches as binary and does not attempt to
- # decode them assuming they're utf-8.
- write_into_file_at_path("test_file", u"latin1 test: \u00A0\n", "latin1")
- write_into_file_at_path("test_file2", u"utf-8 test: \u00A0\n", "utf-8")
- cls._svn_commit("fourth commit")
-
- # svn does not seem to update after commit as I would expect.
- run_command(['svn', 'update'])
- remove_dir(svn_checkout_path)
-
- # This is a hot function since it's invoked by unittest before calling each test_ method in SVNTest and
- # GitTest. We create a mock SVN repo once and then perform an SVN checkout from a filesystem copy of
- # it since it's expensive to create the mock repo.
- @classmethod
- def setup(cls, test_object):
- global cached_svn_repo_path
- if not cached_svn_repo_path:
- cached_svn_repo_path = cls._setup_mock_repo()
-
- test_object.temp_directory = tempfile.mkdtemp(suffix="svn_test")
- test_object.svn_repo_path = os.path.join(test_object.temp_directory, "repo")
- test_object.svn_repo_url = "file://%s" % test_object.svn_repo_path
- test_object.svn_checkout_path = os.path.join(test_object.temp_directory, "checkout")
- shutil.copytree(cached_svn_repo_path, test_object.svn_repo_path)
- run_command(['svn', 'checkout', '--quiet', test_object.svn_repo_url + "/trunk", test_object.svn_checkout_path])
-
- @classmethod
- def _setup_mock_repo(cls):
- # Create an test SVN repository
- svn_repo_path = tempfile.mkdtemp(suffix="svn_test_repo")
- svn_repo_url = "file://%s" % svn_repo_path # Not sure this will work on windows
- # git svn complains if we don't pass --pre-1.5-compatible, not sure why:
- # Expected FS format '2'; found format '3' at /usr/local/libexec/git-core//git-svn line 1477
- run_command(['svnadmin', 'create', '--pre-1.5-compatible', svn_repo_path])
-
- # Create a test svn checkout
- svn_checkout_path = tempfile.mkdtemp(suffix="svn_test_checkout")
- run_command(['svn', 'checkout', '--quiet', svn_repo_url, svn_checkout_path])
-
- # Create and checkout a trunk dir to match the standard svn configuration to match git-svn's expectations
- os.chdir(svn_checkout_path)
- os.mkdir('trunk')
- cls._svn_add('trunk')
- # We can add tags and branches as well if we ever need to test those.
- cls._svn_commit('add trunk')
-
- # Change directory out of the svn checkout so we can delete the checkout directory.
- remove_dir(svn_checkout_path)
-
- cls._setup_test_commits(svn_repo_url + "/trunk")
- return svn_repo_path
-
- @classmethod
- def tear_down(cls, test_object):
- remove_dir(test_object.temp_directory)
-
- # Now that we've deleted the checkout paths, cwddir may be invalid
- # Change back to a valid directory so that later calls to os.getcwd() do not fail.
- if os.path.isabs(__file__):
- path = os.path.dirname(__file__)
- else:
- path = sys.path[0]
- os.chdir(detect_scm_system(path).checkout_root)
-
-
-# For testing the SCM baseclass directly.
-class SCMClassTests(unittest.TestCase):
- def setUp(self):
- self.dev_null = open(os.devnull, "w") # Used to make our Popen calls quiet.
-
- def tearDown(self):
- self.dev_null.close()
-
- def test_run_command_with_pipe(self):
- input_process = subprocess.Popen(['echo', 'foo\nbar'], stdout=subprocess.PIPE, stderr=self.dev_null)
- self.assertEqual(run_command(['grep', 'bar'], input=input_process.stdout), "bar\n")
-
- # Test the non-pipe case too:
- self.assertEqual(run_command(['grep', 'bar'], input="foo\nbar"), "bar\n")
-
- command_returns_non_zero = ['/bin/sh', '--invalid-option']
- # Test when the input pipe process fails.
- input_process = subprocess.Popen(command_returns_non_zero, stdout=subprocess.PIPE, stderr=self.dev_null)
- self.assertNotEqual(input_process.poll(), 0)
- self.assertRaises(ScriptError, run_command, ['grep', 'bar'], input=input_process.stdout)
-
- # Test when the run_command process fails.
- input_process = subprocess.Popen(['echo', 'foo\nbar'], stdout=subprocess.PIPE, stderr=self.dev_null) # grep shows usage and calls exit(2) when called w/o arguments.
- self.assertRaises(ScriptError, run_command, command_returns_non_zero, input=input_process.stdout)
-
- def test_error_handlers(self):
- git_failure_message="Merge conflict during commit: Your file or directory 'WebCore/ChangeLog' is probably out-of-date: resource out of date; try updating at /usr/local/libexec/git-core//git-svn line 469"
- svn_failure_message="""svn: Commit failed (details follow):
-svn: File or directory 'ChangeLog' is out of date; try updating
-svn: resource out of date; try updating
-"""
- command_does_not_exist = ['does_not_exist', 'invalid_option']
- self.assertRaises(OSError, run_command, command_does_not_exist)
- self.assertRaises(OSError, run_command, command_does_not_exist, error_handler=Executive.ignore_error)
-
- command_returns_non_zero = ['/bin/sh', '--invalid-option']
- self.assertRaises(ScriptError, run_command, command_returns_non_zero)
- # Check if returns error text:
- self.assertTrue(run_command(command_returns_non_zero, error_handler=Executive.ignore_error))
-
- self.assertRaises(CheckoutNeedsUpdate, commit_error_handler, ScriptError(output=git_failure_message))
- self.assertRaises(CheckoutNeedsUpdate, commit_error_handler, ScriptError(output=svn_failure_message))
- self.assertRaises(ScriptError, commit_error_handler, ScriptError(output='blah blah blah'))
-
-
-# GitTest and SVNTest inherit from this so any test_ methods here will be run once for this class and then once for each subclass.
-class SCMTest(unittest.TestCase):
- def _create_patch(self, patch_contents):
- # FIXME: This code is brittle if the Attachment API changes.
- attachment = Attachment({"bug_id": 12345}, None)
- attachment.contents = lambda: patch_contents
-
- joe_cool = Committer("Joe Cool", "joe@cool.com")
- attachment.reviewer = lambda: joe_cool
-
- return attachment
-
- def _setup_webkittools_scripts_symlink(self, local_scm):
- webkit_scm = detect_scm_system(os.path.dirname(os.path.abspath(__file__)))
- webkit_scripts_directory = webkit_scm.scripts_directory()
- local_scripts_directory = local_scm.scripts_directory()
- os.mkdir(os.path.dirname(local_scripts_directory))
- os.symlink(webkit_scripts_directory, local_scripts_directory)
-
- # Tests which both GitTest and SVNTest should run.
- # FIXME: There must be a simpler way to add these w/o adding a wrapper method to both subclasses
-
- def _shared_test_changed_files(self):
- write_into_file_at_path("test_file", "changed content")
- self.assertItemsEqual(self.scm.changed_files(), ["test_file"])
- write_into_file_at_path("test_dir/test_file3", "new stuff")
- self.assertItemsEqual(self.scm.changed_files(), ["test_dir/test_file3", "test_file"])
- old_cwd = os.getcwd()
- os.chdir("test_dir")
- # Validate that changed_files does not change with our cwd, see bug 37015.
- self.assertItemsEqual(self.scm.changed_files(), ["test_dir/test_file3", "test_file"])
- os.chdir(old_cwd)
-
- def _shared_test_added_files(self):
- write_into_file_at_path("test_file", "changed content")
- self.assertItemsEqual(self.scm.added_files(), [])
-
- write_into_file_at_path("added_file", "new stuff")
- self.scm.add("added_file")
-
- write_into_file_at_path("added_file3", "more new stuff")
- write_into_file_at_path("added_file4", "more new stuff")
- self.scm.add_list(["added_file3", "added_file4"])
-
- os.mkdir("added_dir")
- write_into_file_at_path("added_dir/added_file2", "new stuff")
- self.scm.add("added_dir")
-
- # SVN reports directory changes, Git does not.
- added_files = self.scm.added_files()
- if "added_dir" in added_files:
- added_files.remove("added_dir")
- self.assertItemsEqual(added_files, ["added_dir/added_file2", "added_file", "added_file3", "added_file4"])
-
- # Test also to make sure discard_working_directory_changes removes added files
- self.scm.discard_working_directory_changes()
- self.assertItemsEqual(self.scm.added_files(), [])
- self.assertFalse(os.path.exists("added_file"))
- self.assertFalse(os.path.exists("added_file3"))
- self.assertFalse(os.path.exists("added_file4"))
- self.assertFalse(os.path.exists("added_dir"))
-
- def _shared_test_changed_files_for_revision(self):
- # SVN reports directory changes, Git does not.
- changed_files = self.scm.changed_files_for_revision(3)
- if "test_dir" in changed_files:
- changed_files.remove("test_dir")
- self.assertItemsEqual(changed_files, ["test_dir/test_file3", "test_file"])
- self.assertItemsEqual(self.scm.changed_files_for_revision(4), ["test_file", "test_file2"]) # Git and SVN return different orders.
- self.assertItemsEqual(self.scm.changed_files_for_revision(2), ["test_file"])
-
- def _shared_test_contents_at_revision(self):
- self.assertEqual(self.scm.contents_at_revision("test_file", 3), "test1test2")
- self.assertEqual(self.scm.contents_at_revision("test_file", 4), "test1test2test3\n")
-
- # Verify that contents_at_revision returns a byte array, aka str():
- self.assertEqual(self.scm.contents_at_revision("test_file", 5), u"latin1 test: \u00A0\n".encode("latin1"))
- self.assertEqual(self.scm.contents_at_revision("test_file2", 5), u"utf-8 test: \u00A0\n".encode("utf-8"))
-
- self.assertEqual(self.scm.contents_at_revision("test_file2", 4), "second file")
- # Files which don't exist:
- # Currently we raise instead of returning None because detecting the difference between
- # "file not found" and any other error seems impossible with svn (git seems to expose such through the return code).
- self.assertRaises(ScriptError, self.scm.contents_at_revision, "test_file2", 2)
- self.assertRaises(ScriptError, self.scm.contents_at_revision, "does_not_exist", 2)
-
- def _shared_test_revisions_changing_file(self):
- self.assertItemsEqual(self.scm.revisions_changing_file("test_file"), [5, 4, 3, 2])
- self.assertRaises(ScriptError, self.scm.revisions_changing_file, "non_existent_file")
-
- def _shared_test_committer_email_for_revision(self):
- self.assertEqual(self.scm.committer_email_for_revision(3), getpass.getuser()) # Committer "email" will be the current user
-
- def _shared_test_reverse_diff(self):
- self._setup_webkittools_scripts_symlink(self.scm) # Git's apply_reverse_diff uses resolve-ChangeLogs
- # Only test the simple case, as any other will end up with conflict markers.
- self.scm.apply_reverse_diff('5')
- self.assertEqual(read_from_path('test_file'), "test1test2test3\n")
-
- def _shared_test_diff_for_revision(self):
- # Patch formats are slightly different between svn and git, so just regexp for things we know should be there.
- r3_patch = self.scm.diff_for_revision(4)
- self.assertRegexpMatches(r3_patch, 'test3')
- self.assertNotRegexpMatches(r3_patch, 'test4')
- self.assertRegexpMatches(r3_patch, 'test2')
- self.assertRegexpMatches(self.scm.diff_for_revision(3), 'test2')
-
- def _shared_test_svn_apply_git_patch(self):
- self._setup_webkittools_scripts_symlink(self.scm)
- git_binary_addition = """diff --git a/fizzbuzz7.gif b/fizzbuzz7.gif
-new file mode 100644
-index 0000000000000000000000000000000000000000..64a9532e7794fcd791f6f12157406d90
-60151690
-GIT binary patch
-literal 512
-zcmZ?wbhEHbRAx|MU|?iW{Kxc~?KofD;ckY;H+&5HnHl!!GQMD7h+sU{_)e9f^V3c?
-zhJP##HdZC#4K}7F68@!1jfWQg2daCm-gs#3|JREDT>c+pG4L<_2;w##WMO#ysPPap
-zLqpAf1OE938xAsSp4!5f-o><?VKe(#0jEcwfHGF4%M1^kRs14oVBp2ZEL{E1N<-zJ
-zsfLmOtKta;2_;2c#^S1-8cf<nb!QnGl>c!Xe6RXvrEtAWBvSDTgTO1j3vA31Puw!A
-zs(87q)j_mVDTqBo-P+03-P5mHCEnJ+x}YdCuS7#bCCyePUe(ynK+|4b-3qK)T?Z&)
-zYG+`tl4h?GZv_$t82}X4*DTE|$;{DEiPyF@)U-1+FaX++T9H{&%cag`W1|zVP@`%b
-zqiSkp6{BTpWTkCr!=<C6Q=?#~R8^JfrliAF6Q^gV9Iup8RqCXqqhqC`qsyhk<-nlB
-z00f{QZvfK&|Nm#oZ0TQl`Yr$BIa6A@16O26ud7H<QM=xl`toLKnz-3h@9c9q&wm|X
-z{89I|WPyD!*M?gv?q`;L=2YFeXrJQNti4?}s!zFo=5CzeBxC69xA<zrjP<wUcCRh4
-ptUl-ZG<%a~#LwkIWv&q!KSCH7tQ8cJDiw+|GV?MN)RjY50RTb-xvT&H
-
-literal 0
-HcmV?d00001
-
-"""
- self.checkout.apply_patch(self._create_patch(git_binary_addition))
- added = read_from_path('fizzbuzz7.gif', encoding=None)
- self.assertEqual(512, len(added))
- self.assertTrue(added.startswith('GIF89a'))
- self.assertIn('fizzbuzz7.gif', self.scm.changed_files())
-
- # The file already exists.
- self.assertRaises(ScriptError, self.checkout.apply_patch, self._create_patch(git_binary_addition))
-
- git_binary_modification = """diff --git a/fizzbuzz7.gif b/fizzbuzz7.gif
-index 64a9532e7794fcd791f6f12157406d9060151690..323fae03f4606ea9991df8befbb2fca7
-GIT binary patch
-literal 7
-OcmYex&reD$;sO8*F9L)B
-
-literal 512
-zcmZ?wbhEHbRAx|MU|?iW{Kxc~?KofD;ckY;H+&5HnHl!!GQMD7h+sU{_)e9f^V3c?
-zhJP##HdZC#4K}7F68@!1jfWQg2daCm-gs#3|JREDT>c+pG4L<_2;w##WMO#ysPPap
-zLqpAf1OE938xAsSp4!5f-o><?VKe(#0jEcwfHGF4%M1^kRs14oVBp2ZEL{E1N<-zJ
-zsfLmOtKta;2_;2c#^S1-8cf<nb!QnGl>c!Xe6RXvrEtAWBvSDTgTO1j3vA31Puw!A
-zs(87q)j_mVDTqBo-P+03-P5mHCEnJ+x}YdCuS7#bCCyePUe(ynK+|4b-3qK)T?Z&)
-zYG+`tl4h?GZv_$t82}X4*DTE|$;{DEiPyF@)U-1+FaX++T9H{&%cag`W1|zVP@`%b
-zqiSkp6{BTpWTkCr!=<C6Q=?#~R8^JfrliAF6Q^gV9Iup8RqCXqqhqC`qsyhk<-nlB
-z00f{QZvfK&|Nm#oZ0TQl`Yr$BIa6A@16O26ud7H<QM=xl`toLKnz-3h@9c9q&wm|X
-z{89I|WPyD!*M?gv?q`;L=2YFeXrJQNti4?}s!zFo=5CzeBxC69xA<zrjP<wUcCRh4
-ptUl-ZG<%a~#LwkIWv&q!KSCH7tQ8cJDiw+|GV?MN)RjY50RTb-xvT&H
-
-"""
- self.checkout.apply_patch(self._create_patch(git_binary_modification))
- modified = read_from_path('fizzbuzz7.gif', encoding=None)
- self.assertEqual('foobar\n', modified)
- self.assertIn('fizzbuzz7.gif', self.scm.changed_files())
-
- # Applying the same modification should fail.
- self.assertRaises(ScriptError, self.checkout.apply_patch, self._create_patch(git_binary_modification))
-
- git_binary_deletion = """diff --git a/fizzbuzz7.gif b/fizzbuzz7.gif
-deleted file mode 100644
-index 323fae0..0000000
-GIT binary patch
-literal 0
-HcmV?d00001
-
-literal 7
-OcmYex&reD$;sO8*F9L)B
-
-"""
- self.checkout.apply_patch(self._create_patch(git_binary_deletion))
- self.assertFalse(os.path.exists('fizzbuzz7.gif'))
- self.assertNotIn('fizzbuzz7.gif', self.scm.changed_files())
-
- # Cannot delete again.
- self.assertRaises(ScriptError, self.checkout.apply_patch, self._create_patch(git_binary_deletion))
-
- def _shared_test_add_recursively(self):
- os.mkdir("added_dir")
- write_into_file_at_path("added_dir/added_file", "new stuff")
- self.scm.add("added_dir/added_file")
- self.assertIn("added_dir/added_file", self.scm.added_files())
-
- def _shared_test_delete_recursively(self):
- os.mkdir("added_dir")
- write_into_file_at_path("added_dir/added_file", "new stuff")
- self.scm.add("added_dir/added_file")
- self.assertIn("added_dir/added_file", self.scm.added_files())
- self.scm.delete("added_dir/added_file")
- self.assertNotIn("added_dir", self.scm.added_files())
-
- def _shared_test_delete_recursively_or_not(self):
- os.mkdir("added_dir")
- write_into_file_at_path("added_dir/added_file", "new stuff")
- write_into_file_at_path("added_dir/another_added_file", "more new stuff")
- self.scm.add("added_dir/added_file")
- self.scm.add("added_dir/another_added_file")
- self.assertIn("added_dir/added_file", self.scm.added_files())
- self.assertIn("added_dir/another_added_file", self.scm.added_files())
- self.scm.delete("added_dir/added_file")
- self.assertIn("added_dir/another_added_file", self.scm.added_files())
-
- def _shared_test_exists(self, scm, commit_function):
- os.chdir(scm.checkout_root)
- self.assertFalse(scm.exists('foo.txt'))
- write_into_file_at_path('foo.txt', 'some stuff')
- self.assertFalse(scm.exists('foo.txt'))
- scm.add('foo.txt')
- commit_function('adding foo')
- self.assertTrue(scm.exists('foo.txt'))
- scm.delete('foo.txt')
- commit_function('deleting foo')
- self.assertFalse(scm.exists('foo.txt'))
-
- def _shared_test_head_svn_revision(self):
- self.assertEqual(self.scm.head_svn_revision(), '5')
-
-
-# Context manager that overrides the current timezone.
-class TimezoneOverride(object):
- def __init__(self, timezone_string):
- self._timezone_string = timezone_string
-
- def __enter__(self):
- if hasattr(time, 'tzset'):
- self._saved_timezone = os.environ.get('TZ', None)
- os.environ['TZ'] = self._timezone_string
- time.tzset()
-
- def __exit__(self, type, value, traceback):
- if hasattr(time, 'tzset'):
- if self._saved_timezone:
- os.environ['TZ'] = self._saved_timezone
- else:
- del os.environ['TZ']
- time.tzset()
-
-
-class SVNTest(SCMTest):
-
- @staticmethod
- def _set_date_and_reviewer(changelog_entry):
- # Joe Cool matches the reviewer set in SCMTest._create_patch
- changelog_entry = changelog_entry.replace('REVIEWER_HERE', 'Joe Cool')
- # svn-apply will update ChangeLog entries with today's date (as in Cupertino, CA, US)
- with TimezoneOverride('PST8PDT'):
- return changelog_entry.replace('DATE_HERE', date.today().isoformat())
-
- def test_svn_apply(self):
- first_entry = """2009-10-26 Eric Seidel <eric@webkit.org>
-
- Reviewed by Foo Bar.
-
- Most awesome change ever.
-
- * scm_unittest.py:
-"""
- intermediate_entry = """2009-10-27 Eric Seidel <eric@webkit.org>
-
- Reviewed by Baz Bar.
-
- A more awesomer change yet!
-
- * scm_unittest.py:
-"""
- one_line_overlap_patch = """Index: ChangeLog
-===================================================================
---- ChangeLog (revision 5)
-+++ ChangeLog (working copy)
-@@ -1,5 +1,13 @@
- 2009-10-26 Eric Seidel <eric@webkit.org>
-%(whitespace)s
-+ Reviewed by NOBODY (OOPS!).
-+
-+ Second most awesome change ever.
-+
-+ * scm_unittest.py:
-+
-+2009-10-26 Eric Seidel <eric@webkit.org>
-+
- Reviewed by Foo Bar.
-%(whitespace)s
- Most awesome change ever.
-""" % {'whitespace': ' '}
- one_line_overlap_entry = """DATE_HERE Eric Seidel <eric@webkit.org>
-
- Reviewed by REVIEWER_HERE.
-
- Second most awesome change ever.
-
- * scm_unittest.py:
-"""
- two_line_overlap_patch = """Index: ChangeLog
-===================================================================
---- ChangeLog (revision 5)
-+++ ChangeLog (working copy)
-@@ -2,6 +2,14 @@
-%(whitespace)s
- Reviewed by Foo Bar.
-%(whitespace)s
-+ Second most awesome change ever.
-+
-+ * scm_unittest.py:
-+
-+2009-10-26 Eric Seidel <eric@webkit.org>
-+
-+ Reviewed by Foo Bar.
-+
- Most awesome change ever.
-%(whitespace)s
- * scm_unittest.py:
-""" % {'whitespace': ' '}
- two_line_overlap_entry = """DATE_HERE Eric Seidel <eric@webkit.org>
-
- Reviewed by Foo Bar.
-
- Second most awesome change ever.
-
- * scm_unittest.py:
-"""
- write_into_file_at_path('ChangeLog', first_entry)
- run_command(['svn', 'add', 'ChangeLog'])
- run_command(['svn', 'commit', '--quiet', '--message', 'ChangeLog commit'])
-
- # Patch files were created against just 'first_entry'.
- # Add a second commit to make svn-apply have to apply the patches with fuzz.
- changelog_contents = "%s\n%s" % (intermediate_entry, first_entry)
- write_into_file_at_path('ChangeLog', changelog_contents)
- run_command(['svn', 'commit', '--quiet', '--message', 'Intermediate commit'])
-
- self._setup_webkittools_scripts_symlink(self.scm)
- self.checkout.apply_patch(self._create_patch(one_line_overlap_patch))
- expected_changelog_contents = "%s\n%s" % (self._set_date_and_reviewer(one_line_overlap_entry), changelog_contents)
- self.assertEqual(read_from_path('ChangeLog'), expected_changelog_contents)
-
- self.scm.revert_files(['ChangeLog'])
- self.checkout.apply_patch(self._create_patch(two_line_overlap_patch))
- expected_changelog_contents = "%s\n%s" % (self._set_date_and_reviewer(two_line_overlap_entry), changelog_contents)
- self.assertEqual(read_from_path('ChangeLog'), expected_changelog_contents)
-
- def setUp(self):
- SVNTestRepository.setup(self)
- os.chdir(self.svn_checkout_path)
- self.scm = detect_scm_system(self.svn_checkout_path)
- self.scm.svn_server_realm = None
- # For historical reasons, we test some checkout code here too.
- self.checkout = Checkout(self.scm)
-
- def tearDown(self):
- SVNTestRepository.tear_down(self)
-
- def test_detect_scm_system_relative_url(self):
- scm = detect_scm_system(".")
- # I wanted to assert that we got the right path, but there was some
- # crazy magic with temp folder names that I couldn't figure out.
- self.assertTrue(scm.checkout_root)
-
- def test_create_patch_is_full_patch(self):
- test_dir_path = os.path.join(self.svn_checkout_path, "test_dir2")
- os.mkdir(test_dir_path)
- test_file_path = os.path.join(test_dir_path, 'test_file2')
- write_into_file_at_path(test_file_path, 'test content')
- run_command(['svn', 'add', 'test_dir2'])
-
- # create_patch depends on 'svn-create-patch', so make a dummy version.
- scripts_path = os.path.join(self.svn_checkout_path, 'Tools', 'Scripts')
- os.makedirs(scripts_path)
- create_patch_path = os.path.join(scripts_path, 'svn-create-patch')
- write_into_file_at_path(create_patch_path, '#!/bin/sh\necho $PWD') # We could pass -n to prevent the \n, but not all echo accept -n.
- os.chmod(create_patch_path, stat.S_IXUSR | stat.S_IRUSR)
-
- # Change into our test directory and run the create_patch command.
- os.chdir(test_dir_path)
- scm = detect_scm_system(test_dir_path)
- self.assertEqual(scm.checkout_root, self.svn_checkout_path) # Sanity check that detection worked right.
- patch_contents = scm.create_patch()
- # Our fake 'svn-create-patch' returns $PWD instead of a patch, check that it was executed from the root of the repo.
- self.assertEqual("%s\n" % os.path.realpath(scm.checkout_root), patch_contents) # Add a \n because echo adds a \n.
-
- def test_detection(self):
- self.assertEqual(self.scm.display_name(), "svn")
- self.assertEqual(self.scm.supports_local_commits(), False)
-
- def test_apply_small_binary_patch(self):
- patch_contents = """Index: test_file.swf
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = application/octet-stream
-
-Property changes on: test_file.swf
-___________________________________________________________________
-Name: svn:mime-type
- + application/octet-stream
-
-
-Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==
-"""
- expected_contents = base64.b64decode("Q1dTBx0AAAB42itg4GlgYJjGwMDDyODMxMDw34GBgQEAJPQDJA==")
- self._setup_webkittools_scripts_symlink(self.scm)
- patch_file = self._create_patch(patch_contents)
- self.checkout.apply_patch(patch_file)
- actual_contents = read_from_path("test_file.swf", encoding=None)
- self.assertEqual(actual_contents, expected_contents)
-
- def test_apply_svn_patch(self):
- patch = self._create_patch(_svn_diff("-r5:4"))
- self._setup_webkittools_scripts_symlink(self.scm)
- Checkout(self.scm).apply_patch(patch)
-
- def test_commit_logs(self):
- # Commits have dates and usernames in them, so we can't just direct compare.
- self.assertRegexpMatches(self.scm.last_svn_commit_log(), 'fourth commit')
- self.assertRegexpMatches(self.scm.svn_commit_log(3), 'second commit')
-
- def _shared_test_commit_with_message(self, username=None):
- write_into_file_at_path('test_file', 'more test content')
- commit_text = self.scm.commit_with_message("another test commit", username)
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- def test_commit_in_subdir(self, username=None):
- write_into_file_at_path('test_dir/test_file3', 'more test content')
- os.chdir("test_dir")
- commit_text = self.scm.commit_with_message("another test commit", username)
- os.chdir("..")
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- def test_commit_text_parsing(self):
- self._shared_test_commit_with_message()
-
- def test_commit_with_username(self):
- self._shared_test_commit_with_message("dbates@webkit.org")
-
- def test_commit_without_authorization(self):
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=111669
- # This test ends up looking in the actal $HOME/.subversion for authorization,
- # which makes it fragile. For now, set it to use a realm that won't be authorized,
- # but we should really plumb through a fake_home_dir here like we do in
- # test_has_authorization_for_realm.
- self.scm.svn_server_realm = '<http://svn.example.com:80> Example'
- self.assertRaises(AuthenticationError, self._shared_test_commit_with_message)
-
- def test_has_authorization_for_realm_using_credentials_with_passtype(self):
- credentials = """
-K 8
-passtype
-V 8
-keychain
-K 15
-svn:realmstring
-V 39
-<http://svn.webkit.org:80> Mac OS Forge
-K 8
-username
-V 17
-dbates@webkit.org
-END
-"""
- self.assertTrue(self._test_has_authorization_for_realm_using_credentials(SVN.svn_server_realm, credentials))
-
- def test_has_authorization_for_realm_using_credentials_with_password(self):
- credentials = """
-K 15
-svn:realmstring
-V 39
-<http://svn.webkit.org:80> Mac OS Forge
-K 8
-username
-V 17
-dbates@webkit.org
-K 8
-password
-V 4
-blah
-END
-"""
- self.assertTrue(self._test_has_authorization_for_realm_using_credentials(SVN.svn_server_realm, credentials))
-
- def _test_has_authorization_for_realm_using_credentials(self, realm, credentials):
- fake_home_dir = tempfile.mkdtemp(suffix="fake_home_dir")
- svn_config_dir_path = os.path.join(fake_home_dir, ".subversion")
- os.mkdir(svn_config_dir_path)
- fake_webkit_auth_file = os.path.join(svn_config_dir_path, "fake_webkit_auth_file")
- write_into_file_at_path(fake_webkit_auth_file, credentials)
- result = self.scm.has_authorization_for_realm(realm, home_directory=fake_home_dir)
- os.remove(fake_webkit_auth_file)
- os.rmdir(svn_config_dir_path)
- os.rmdir(fake_home_dir)
- return result
-
- def test_not_have_authorization_for_realm_with_credentials_missing_password_and_passtype(self):
- credentials = """
-K 15
-svn:realmstring
-V 39
-<http://svn.webkit.org:80> Mac OS Forge
-K 8
-username
-V 17
-dbates@webkit.org
-END
-"""
- self.assertFalse(self._test_has_authorization_for_realm_using_credentials(SVN.svn_server_realm, credentials))
-
- def test_not_have_authorization_for_realm_when_missing_credentials_file(self):
- fake_home_dir = tempfile.mkdtemp(suffix="fake_home_dir")
- svn_config_dir_path = os.path.join(fake_home_dir, ".subversion")
- os.mkdir(svn_config_dir_path)
- self.assertFalse(self.scm.has_authorization_for_realm(SVN.svn_server_realm, home_directory=fake_home_dir))
- os.rmdir(svn_config_dir_path)
- os.rmdir(fake_home_dir)
-
- def test_reverse_diff(self):
- self._shared_test_reverse_diff()
-
- def test_diff_for_revision(self):
- self._shared_test_diff_for_revision()
-
- def test_svn_apply_git_patch(self):
- self._shared_test_svn_apply_git_patch()
-
- def test_changed_files(self):
- self._shared_test_changed_files()
-
- def test_changed_files_for_revision(self):
- self._shared_test_changed_files_for_revision()
-
- def test_added_files(self):
- self._shared_test_added_files()
-
- def test_contents_at_revision(self):
- self._shared_test_contents_at_revision()
-
- def test_revisions_changing_file(self):
- self._shared_test_revisions_changing_file()
-
- def test_committer_email_for_revision(self):
- self._shared_test_committer_email_for_revision()
-
- def test_add_recursively(self):
- self._shared_test_add_recursively()
-
- def test_delete(self):
- os.chdir(self.svn_checkout_path)
- self.scm.delete("test_file")
- self.assertIn("test_file", self.scm.deleted_files())
-
- def test_delete_list(self):
- os.chdir(self.svn_checkout_path)
- self.scm.delete_list(["test_file", "test_file2"])
- self.assertIn("test_file", self.scm.deleted_files())
- self.assertIn("test_file2", self.scm.deleted_files())
-
- def test_delete_recursively(self):
- self._shared_test_delete_recursively()
-
- def test_delete_recursively_or_not(self):
- self._shared_test_delete_recursively_or_not()
-
- def test_head_svn_revision(self):
- self._shared_test_head_svn_revision()
-
- def test_propset_propget(self):
- filepath = os.path.join(self.svn_checkout_path, "test_file")
- expected_mime_type = "x-application/foo-bar"
- self.scm.propset("svn:mime-type", expected_mime_type, filepath)
- self.assertEqual(expected_mime_type, self.scm.propget("svn:mime-type", filepath))
-
- def test_show_head(self):
- write_into_file_at_path("test_file", u"Hello!", "utf-8")
- SVNTestRepository._svn_commit("fourth commit")
- self.assertEqual("Hello!", self.scm.show_head('test_file'))
-
- def test_show_head_binary(self):
- data = "\244"
- write_into_file_at_path("binary_file", data, encoding=None)
- self.scm.add("binary_file")
- self.scm.commit_with_message("a test commit")
- self.assertEqual(data, self.scm.show_head('binary_file'))
-
- def do_test_diff_for_file(self):
- write_into_file_at_path('test_file', 'some content')
- self.scm.commit_with_message("a test commit")
- diff = self.scm.diff_for_file('test_file')
- self.assertEqual(diff, "")
-
- write_into_file_at_path("test_file", "changed content")
- diff = self.scm.diff_for_file('test_file')
- self.assertIn("-some content", diff)
- self.assertIn("+changed content", diff)
-
- def clean_bogus_dir(self):
- self.bogus_dir = self.scm._bogus_dir_name()
- if os.path.exists(self.bogus_dir):
- shutil.rmtree(self.bogus_dir)
-
- def test_diff_for_file_with_existing_bogus_dir(self):
- self.clean_bogus_dir()
- os.mkdir(self.bogus_dir)
- self.do_test_diff_for_file()
- self.assertTrue(os.path.exists(self.bogus_dir))
- shutil.rmtree(self.bogus_dir)
-
- def test_diff_for_file_with_missing_bogus_dir(self):
- self.clean_bogus_dir()
- self.do_test_diff_for_file()
- self.assertFalse(os.path.exists(self.bogus_dir))
-
- def test_svn_lock(self):
- if self.scm.svn_version() >= "1.7":
- # the following technique with .svn/lock then svn update doesn't work with subversion client 1.7 or later
- pass
- else:
- svn_root_lock_path = ".svn/lock"
- write_into_file_at_path(svn_root_lock_path, "", "utf-8")
- # webkit-patch uses a Checkout object and runs update-webkit, just use svn update here.
- self.assertRaises(ScriptError, run_command, ['svn', 'update'])
- self.scm.discard_working_directory_changes()
- self.assertFalse(os.path.exists(svn_root_lock_path))
- run_command(['svn', 'update']) # Should succeed and not raise.
-
- def test_exists(self):
- self._shared_test_exists(self.scm, self.scm.commit_with_message)
-
-class GitTest(SCMTest):
-
- def setUp(self):
- """Sets up fresh git repository with one commit. Then setups a second git
- repo that tracks the first one."""
- # FIXME: We should instead clone a git repo that is tracking an SVN repo.
- # That better matches what we do with WebKit.
- self.original_dir = os.getcwd()
-
- self.untracking_checkout_path = tempfile.mkdtemp(suffix="git_test_checkout2")
- run_command(['git', 'init', self.untracking_checkout_path])
-
- os.chdir(self.untracking_checkout_path)
- write_into_file_at_path('foo_file', 'foo')
- run_command(['git', 'add', 'foo_file'])
- run_command(['git', 'commit', '-am', 'dummy commit'])
- self.untracking_scm = detect_scm_system(self.untracking_checkout_path)
-
- self.tracking_git_checkout_path = tempfile.mkdtemp(suffix="git_test_checkout")
- run_command(['git', 'clone', '--quiet', self.untracking_checkout_path, self.tracking_git_checkout_path])
- os.chdir(self.tracking_git_checkout_path)
- self.tracking_scm = detect_scm_system(self.tracking_git_checkout_path)
-
- def tearDown(self):
- # Change back to a valid directory so that later calls to os.getcwd() do not fail.
- os.chdir(self.original_dir)
- run_command(['rm', '-rf', self.tracking_git_checkout_path])
- run_command(['rm', '-rf', self.untracking_checkout_path])
-
- def test_remote_branch_ref(self):
- self.assertEqual(self.tracking_scm.remote_branch_ref(), 'refs/remotes/origin/master')
-
- os.chdir(self.untracking_checkout_path)
- self.assertRaises(ScriptError, self.untracking_scm.remote_branch_ref)
-
- def test_multiple_remotes(self):
- run_command(['git', 'config', '--add', 'svn-remote.svn.fetch', 'trunk:remote1'])
- run_command(['git', 'config', '--add', 'svn-remote.svn.fetch', 'trunk:remote2'])
- self.assertEqual(self.tracking_scm.remote_branch_ref(), 'remote1')
-
- def test_create_patch(self):
- write_into_file_at_path('test_file_commit1', 'contents')
- run_command(['git', 'add', 'test_file_commit1'])
- scm = self.tracking_scm
- scm.commit_locally_with_message('message')
-
- patch = scm.create_patch()
- self.assertNotRegexpMatches(patch, r'Subversion Revision:')
-
- def test_orderfile(self):
- os.mkdir("Tools")
- os.mkdir("Source")
- os.mkdir("LayoutTests")
- os.mkdir("Websites")
-
- # Slash should always be the right path separator since we use cygwin on Windows.
- Tools_ChangeLog = "Tools/ChangeLog"
- write_into_file_at_path(Tools_ChangeLog, "contents")
- Source_ChangeLog = "Source/ChangeLog"
- write_into_file_at_path(Source_ChangeLog, "contents")
- LayoutTests_ChangeLog = "LayoutTests/ChangeLog"
- write_into_file_at_path(LayoutTests_ChangeLog, "contents")
- Websites_ChangeLog = "Websites/ChangeLog"
- write_into_file_at_path(Websites_ChangeLog, "contents")
-
- Tools_ChangeFile = "Tools/ChangeFile"
- write_into_file_at_path(Tools_ChangeFile, "contents")
- Source_ChangeFile = "Source/ChangeFile"
- write_into_file_at_path(Source_ChangeFile, "contents")
- LayoutTests_ChangeFile = "LayoutTests/ChangeFile"
- write_into_file_at_path(LayoutTests_ChangeFile, "contents")
- Websites_ChangeFile = "Websites/ChangeFile"
- write_into_file_at_path(Websites_ChangeFile, "contents")
-
- run_command(['git', 'add', 'Tools/ChangeLog'])
- run_command(['git', 'add', 'LayoutTests/ChangeLog'])
- run_command(['git', 'add', 'Source/ChangeLog'])
- run_command(['git', 'add', 'Websites/ChangeLog'])
- run_command(['git', 'add', 'Tools/ChangeFile'])
- run_command(['git', 'add', 'LayoutTests/ChangeFile'])
- run_command(['git', 'add', 'Source/ChangeFile'])
- run_command(['git', 'add', 'Websites/ChangeFile'])
- scm = self.tracking_scm
- scm.commit_locally_with_message('message')
-
- patch = scm.create_patch()
- self.assertTrue(re.search(r'Tools/ChangeLog', patch).start() < re.search(r'Tools/ChangeFile', patch).start())
- self.assertTrue(re.search(r'Websites/ChangeLog', patch).start() < re.search(r'Websites/ChangeFile', patch).start())
- self.assertTrue(re.search(r'Source/ChangeLog', patch).start() < re.search(r'Source/ChangeFile', patch).start())
- self.assertTrue(re.search(r'LayoutTests/ChangeLog', patch).start() < re.search(r'LayoutTests/ChangeFile', patch).start())
-
- self.assertTrue(re.search(r'Source/ChangeLog', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
- self.assertTrue(re.search(r'Tools/ChangeLog', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
- self.assertTrue(re.search(r'Websites/ChangeLog', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
-
- self.assertTrue(re.search(r'Source/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
- self.assertTrue(re.search(r'Tools/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
- self.assertTrue(re.search(r'Websites/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeLog', patch).start())
-
- self.assertTrue(re.search(r'Source/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeFile', patch).start())
- self.assertTrue(re.search(r'Tools/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeFile', patch).start())
- self.assertTrue(re.search(r'Websites/ChangeFile', patch).start() < re.search(r'LayoutTests/ChangeFile', patch).start())
-
- def test_exists(self):
- scm = self.untracking_scm
- self._shared_test_exists(scm, scm.commit_locally_with_message)
-
- def test_head_svn_revision(self):
- scm = detect_scm_system(self.untracking_checkout_path)
- # If we cloned a git repo tracking an SVN repo, this would give the same result as
- # self._shared_test_head_svn_revision().
- self.assertEqual(scm.head_svn_revision(), '')
-
- def test_rename_files(self):
- scm = self.tracking_scm
-
- run_command(['git', 'mv', 'foo_file', 'bar_file'])
- scm.commit_locally_with_message('message')
-
- patch = scm.create_patch()
- self.assertNotRegexpMatches(patch, r'rename from ')
- self.assertNotRegexpMatches(patch, r'rename to ')
-
-
-class GitSVNTest(SCMTest):
-
- def _setup_git_checkout(self):
- self.git_checkout_path = tempfile.mkdtemp(suffix="git_test_checkout")
- # --quiet doesn't make git svn silent, so we use run_silent to redirect output
- run_silent(['git', 'svn', 'clone', '-T', 'trunk', self.svn_repo_url, self.git_checkout_path])
- os.chdir(self.git_checkout_path)
-
- def _tear_down_git_checkout(self):
- # Change back to a valid directory so that later calls to os.getcwd() do not fail.
- os.chdir(self.original_dir)
- run_command(['rm', '-rf', self.git_checkout_path])
-
- def setUp(self):
- self.original_dir = os.getcwd()
-
- SVNTestRepository.setup(self)
- self._setup_git_checkout()
- self.scm = detect_scm_system(self.git_checkout_path)
- self.scm.svn_server_realm = None
- # For historical reasons, we test some checkout code here too.
- self.checkout = Checkout(self.scm)
-
- def tearDown(self):
- SVNTestRepository.tear_down(self)
- self._tear_down_git_checkout()
-
- def test_detection(self):
- self.assertEqual(self.scm.display_name(), "git")
- self.assertEqual(self.scm.supports_local_commits(), True)
-
- def test_read_git_config(self):
- key = 'test.git-config'
- value = 'git-config value'
- run_command(['git', 'config', key, value])
- self.assertEqual(self.scm.read_git_config(key), value)
-
- def test_local_commits(self):
- test_file = os.path.join(self.git_checkout_path, 'test_file')
- write_into_file_at_path(test_file, 'foo')
- run_command(['git', 'commit', '-a', '-m', 'local commit'])
-
- self.assertEqual(len(self.scm.local_commits()), 1)
-
- def test_discard_local_commits(self):
- test_file = os.path.join(self.git_checkout_path, 'test_file')
- write_into_file_at_path(test_file, 'foo')
- run_command(['git', 'commit', '-a', '-m', 'local commit'])
-
- self.assertEqual(len(self.scm.local_commits()), 1)
- self.scm.discard_local_commits()
- self.assertEqual(len(self.scm.local_commits()), 0)
-
- def test_delete_branch(self):
- new_branch = 'foo'
-
- run_command(['git', 'checkout', '-b', new_branch])
- self.assertEqual(run_command(['git', 'symbolic-ref', 'HEAD']).strip(), 'refs/heads/' + new_branch)
-
- run_command(['git', 'checkout', '-b', 'bar'])
- self.scm.delete_branch(new_branch)
-
- self.assertNotRegexpMatches(run_command(['git', 'branch']), r'foo')
-
- def test_remote_merge_base(self):
- # Diff to merge-base should include working-copy changes,
- # which the diff to svn_branch.. doesn't.
- test_file = os.path.join(self.git_checkout_path, 'test_file')
- write_into_file_at_path(test_file, 'foo')
-
- diff_to_common_base = _git_diff(self.scm.remote_branch_ref() + '..')
- diff_to_merge_base = _git_diff(self.scm.remote_merge_base())
-
- self.assertNotRegexpMatches(diff_to_common_base, r'foo')
- self.assertRegexpMatches(diff_to_merge_base, r'foo')
-
- def test_rebase_in_progress(self):
- svn_test_file = os.path.join(self.svn_checkout_path, 'test_file')
- write_into_file_at_path(svn_test_file, "svn_checkout")
- run_command(['svn', 'commit', '--message', 'commit to conflict with git commit'], cwd=self.svn_checkout_path)
-
- git_test_file = os.path.join(self.git_checkout_path, 'test_file')
- write_into_file_at_path(git_test_file, "git_checkout")
- run_command(['git', 'commit', '-a', '-m', 'commit to be thrown away by rebase abort'])
-
- # --quiet doesn't make git svn silent, so use run_silent to redirect output
- self.assertRaises(ScriptError, run_silent, ['git', 'svn', '--quiet', 'rebase']) # Will fail due to a conflict leaving us mid-rebase.
-
- self.assertTrue(self.scm.rebase_in_progress())
-
- # Make sure our cleanup works.
- self.scm.discard_working_directory_changes()
- self.assertFalse(self.scm.rebase_in_progress())
-
- # Make sure cleanup doesn't throw when no rebase is in progress.
- self.scm.discard_working_directory_changes()
-
- def test_commitish_parsing(self):
- # Multiple revisions are cherry-picked.
- self.assertEqual(len(self.scm.commit_ids_from_commitish_arguments(['HEAD~2'])), 1)
- self.assertEqual(len(self.scm.commit_ids_from_commitish_arguments(['HEAD', 'HEAD~2'])), 2)
-
- # ... is an invalid range specifier
- self.assertRaises(ScriptError, self.scm.commit_ids_from_commitish_arguments, ['trunk...HEAD'])
-
- def test_commitish_order(self):
- commit_range = 'HEAD~3..HEAD'
-
- actual_commits = self.scm.commit_ids_from_commitish_arguments([commit_range])
- expected_commits = []
- expected_commits += reversed(run_command(['git', 'rev-list', commit_range]).splitlines())
-
- self.assertEqual(actual_commits, expected_commits)
-
- def test_apply_git_patch(self):
- # We carefullly pick a diff which does not have a directory addition
- # as currently svn-apply will error out when trying to remove directories
- # in Git: https://bugs.webkit.org/show_bug.cgi?id=34871
- patch = self._create_patch(_git_diff('HEAD..HEAD^'))
- self._setup_webkittools_scripts_symlink(self.scm)
- Checkout(self.scm).apply_patch(patch)
-
- def test_commit_text_parsing(self):
- write_into_file_at_path('test_file', 'more test content')
- commit_text = self.scm.commit_with_message("another test commit")
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- def test_commit_with_message_working_copy_only(self):
- write_into_file_at_path('test_file_commit1', 'more test content')
- run_command(['git', 'add', 'test_file_commit1'])
- commit_text = self.scm.commit_with_message("yet another test commit")
-
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def _local_commit(self, filename, contents, message):
- write_into_file_at_path(filename, contents)
- run_command(['git', 'add', filename])
- self.scm.commit_locally_with_message(message)
-
- def _one_local_commit(self):
- self._local_commit('test_file_commit1', 'more test content', 'another test commit')
-
- def _one_local_commit_plus_working_copy_changes(self):
- self._one_local_commit()
- write_into_file_at_path('test_file_commit2', 'still more test content')
- run_command(['git', 'add', 'test_file_commit2'])
-
- def _second_local_commit(self):
- self._local_commit('test_file_commit2', 'still more test content', 'yet another test commit')
-
- def _two_local_commits(self):
- self._one_local_commit()
- self._second_local_commit()
-
- def _three_local_commits(self):
- self._local_commit('test_file_commit0', 'more test content', 'another test commit')
- self._two_local_commits()
-
- def test_revisions_changing_files_with_local_commit(self):
- self._one_local_commit()
- self.assertItemsEqual(self.scm.revisions_changing_file('test_file_commit1'), [])
-
- def test_commit_with_message(self):
- self._one_local_commit_plus_working_copy_changes()
- self.assertRaises(AmbiguousCommitError, self.scm.commit_with_message, "yet another test commit")
- commit_text = self.scm.commit_with_message("yet another test commit", force_squash=True)
-
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_git_commit(self):
- self._two_local_commits()
-
- commit_text = self.scm.commit_with_message("another test commit", git_commit="HEAD^")
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
- self.assertNotRegexpMatches(svn_log, r'test_file_commit2')
-
- def test_commit_with_message_git_commit_range(self):
- self._three_local_commits()
-
- commit_text = self.scm.commit_with_message("another test commit", git_commit="HEAD~2..HEAD")
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertNotRegexpMatches(svn_log, r'test_file_commit0')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
-
- def test_commit_with_message_only_local_commit(self):
- self._one_local_commit()
- commit_text = self.scm.commit_with_message("another test commit")
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_multiple_local_commits_and_working_copy(self):
- self._two_local_commits()
- write_into_file_at_path('test_file_commit1', 'working copy change')
-
- self.assertRaises(AmbiguousCommitError, self.scm.commit_with_message, "another test commit")
- commit_text = self.scm.commit_with_message("another test commit", force_squash=True)
-
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_git_commit_and_working_copy(self):
- self._two_local_commits()
- write_into_file_at_path('test_file_commit1', 'working copy change')
- self.assertRaises(ScriptError, self.scm.commit_with_message, "another test commit", git_commit="HEAD^")
-
- def test_commit_with_message_multiple_local_commits_always_squash(self):
- run_command(['git', 'config', 'webkit-patch.commit-should-always-squash', 'true'])
- self._two_local_commits()
- commit_text = self.scm.commit_with_message("yet another test commit")
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_multiple_local_commits(self):
- self._two_local_commits()
- self.assertRaises(AmbiguousCommitError, self.scm.commit_with_message, "yet another test commit")
- commit_text = self.scm.commit_with_message("yet another test commit", force_squash=True)
-
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_not_synced(self):
- run_command(['git', 'checkout', '-b', 'my-branch', 'trunk~3'])
- self._two_local_commits()
- self.assertRaises(AmbiguousCommitError, self.scm.commit_with_message, "another test commit")
- commit_text = self.scm.commit_with_message("another test commit", force_squash=True)
-
- self.assertEqual(self.scm.svn_revision_from_commit_text(commit_text), '6')
-
- svn_log = run_command(['git', 'svn', 'log', '--limit=1', '--verbose'])
- self.assertNotRegexpMatches(svn_log, r'test_file2')
- self.assertRegexpMatches(svn_log, r'test_file_commit2')
- self.assertRegexpMatches(svn_log, r'test_file_commit1')
-
- def test_commit_with_message_not_synced_with_conflict(self):
- run_command(['git', 'checkout', '-b', 'my-branch', 'trunk~3'])
- self._local_commit('test_file2', 'asdf', 'asdf commit')
-
- # There's a conflict between trunk and the test_file2 modification.
- self.assertRaises(ScriptError, self.scm.commit_with_message, "another test commit", force_squash=True)
-
- def test_upstream_branch(self):
- run_command(['git', 'checkout', '-t', '-b', 'my-branch'])
- run_command(['git', 'checkout', '-t', '-b', 'my-second-branch'])
- self.assertEqual(self.scm._upstream_branch(), 'my-branch')
-
- def test_remote_branch_ref(self):
- self.assertEqual(self.scm.remote_branch_ref(), 'refs/remotes/trunk')
-
- def test_reverse_diff(self):
- self._shared_test_reverse_diff()
-
- def test_diff_for_revision(self):
- self._shared_test_diff_for_revision()
-
- def test_svn_apply_git_patch(self):
- self._shared_test_svn_apply_git_patch()
-
- def test_create_patch_local_plus_working_copy(self):
- self._one_local_commit_plus_working_copy_changes()
- patch = self.scm.create_patch()
- self.assertRegexpMatches(patch, r'test_file_commit1')
- self.assertRegexpMatches(patch, r'test_file_commit2')
-
- def test_create_patch(self):
- self._one_local_commit_plus_working_copy_changes()
- patch = self.scm.create_patch()
- self.assertRegexpMatches(patch, r'test_file_commit2')
- self.assertRegexpMatches(patch, r'test_file_commit1')
- self.assertRegexpMatches(patch, r'Subversion Revision: 5')
-
- def test_create_patch_after_merge(self):
- run_command(['git', 'checkout', '-b', 'dummy-branch', 'trunk~3'])
- self._one_local_commit()
- run_command(['git', 'merge', 'trunk'])
-
- patch = self.scm.create_patch()
- self.assertRegexpMatches(patch, r'test_file_commit1')
- self.assertRegexpMatches(patch, r'Subversion Revision: 5')
-
- def test_create_patch_with_changed_files(self):
- self._one_local_commit_plus_working_copy_changes()
- patch = self.scm.create_patch(changed_files=['test_file_commit2'])
- self.assertRegexpMatches(patch, r'test_file_commit2')
-
- def test_create_patch_with_rm_and_changed_files(self):
- self._one_local_commit_plus_working_copy_changes()
- os.remove('test_file_commit1')
- patch = self.scm.create_patch()
- patch_with_changed_files = self.scm.create_patch(changed_files=['test_file_commit1', 'test_file_commit2'])
- self.assertEqual(patch, patch_with_changed_files)
-
- def test_create_patch_git_commit(self):
- self._two_local_commits()
- patch = self.scm.create_patch(git_commit="HEAD^")
- self.assertRegexpMatches(patch, r'test_file_commit1')
- self.assertNotRegexpMatches(patch, r'test_file_commit2')
-
- def test_create_patch_git_commit_range(self):
- self._three_local_commits()
- patch = self.scm.create_patch(git_commit="HEAD~2..HEAD")
- self.assertNotRegexpMatches(patch, r'test_file_commit0')
- self.assertRegexpMatches(patch, r'test_file_commit2')
- self.assertRegexpMatches(patch, r'test_file_commit1')
-
- def test_create_patch_working_copy_only(self):
- self._one_local_commit_plus_working_copy_changes()
- patch = self.scm.create_patch(git_commit="HEAD....")
- self.assertNotRegexpMatches(patch, r'test_file_commit1')
- self.assertRegexpMatches(patch, r'test_file_commit2')
-
- def test_create_patch_multiple_local_commits(self):
- self._two_local_commits()
- patch = self.scm.create_patch()
- self.assertRegexpMatches(patch, r'test_file_commit2')
- self.assertRegexpMatches(patch, r'test_file_commit1')
-
- def test_create_patch_not_synced(self):
- run_command(['git', 'checkout', '-b', 'my-branch', 'trunk~3'])
- self._two_local_commits()
- patch = self.scm.create_patch()
- self.assertNotRegexpMatches(patch, r'test_file2')
- self.assertRegexpMatches(patch, r'test_file_commit2')
- self.assertRegexpMatches(patch, r'test_file_commit1')
-
- def test_create_binary_patch(self):
- # Create a git binary patch and check the contents.
- test_file_name = 'binary_file'
- test_file_path = os.path.join(self.git_checkout_path, test_file_name)
- file_contents = ''.join(map(chr, range(256)))
- write_into_file_at_path(test_file_path, file_contents, encoding=None)
- run_command(['git', 'add', test_file_name])
- patch = self.scm.create_patch()
- self.assertRegexpMatches(patch, r'\nliteral 0\n')
- self.assertRegexpMatches(patch, r'\nliteral 256\n')
-
- # Check if we can apply the created patch.
- run_command(['git', 'rm', '-f', test_file_name])
- self._setup_webkittools_scripts_symlink(self.scm)
- self.checkout.apply_patch(self._create_patch(patch))
- self.assertEqual(file_contents, read_from_path(test_file_path, encoding=None))
-
- # Check if we can create a patch from a local commit.
- write_into_file_at_path(test_file_path, file_contents, encoding=None)
- run_command(['git', 'add', test_file_name])
- run_command(['git', 'commit', '-m', 'binary diff'])
-
- patch_from_local_commit = self.scm.create_patch('HEAD')
- self.assertRegexpMatches(patch_from_local_commit, r'\nliteral 0\n')
- self.assertRegexpMatches(patch_from_local_commit, r'\nliteral 256\n')
-
- def test_changed_files_local_plus_working_copy(self):
- self._one_local_commit_plus_working_copy_changes()
- files = self.scm.changed_files()
- self.assertIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
-
- # working copy should *not* be in the list.
- files = self.scm.changed_files('trunk..')
- self.assertIn('test_file_commit1', files)
- self.assertNotIn('test_file_commit2', files)
-
- # working copy *should* be in the list.
- files = self.scm.changed_files('trunk....')
- self.assertIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
-
- def test_changed_files_git_commit(self):
- self._two_local_commits()
- files = self.scm.changed_files(git_commit="HEAD^")
- self.assertIn('test_file_commit1', files)
- self.assertNotIn('test_file_commit2', files)
-
- def test_changed_files_git_commit_range(self):
- self._three_local_commits()
- files = self.scm.changed_files(git_commit="HEAD~2..HEAD")
- self.assertNotIn('test_file_commit0', files)
- self.assertIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
-
- def test_changed_files_working_copy_only(self):
- self._one_local_commit_plus_working_copy_changes()
- files = self.scm.changed_files(git_commit="HEAD....")
- self.assertNotIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
-
- def test_changed_files_multiple_local_commits(self):
- self._two_local_commits()
- files = self.scm.changed_files()
- self.assertIn('test_file_commit2', files)
- self.assertIn('test_file_commit1', files)
-
- def test_changed_files_not_synced(self):
- run_command(['git', 'checkout', '-b', 'my-branch', 'trunk~3'])
- self._two_local_commits()
- files = self.scm.changed_files()
- self.assertNotIn('test_file2', files)
- self.assertIn('test_file_commit2', files)
- self.assertIn('test_file_commit1', files)
-
- def test_changed_files_not_synced(self):
- run_command(['git', 'checkout', '-b', 'my-branch', 'trunk~3'])
- self._two_local_commits()
- files = self.scm.changed_files()
- self.assertNotIn('test_file2', files)
- self.assertIn('test_file_commit2', files)
- self.assertIn('test_file_commit1', files)
-
- def test_changed_files(self):
- self._shared_test_changed_files()
-
- def test_changed_files_for_revision(self):
- self._shared_test_changed_files_for_revision()
-
- def test_changed_files_upstream(self):
- run_command(['git', 'checkout', '-t', '-b', 'my-branch'])
- self._one_local_commit()
- run_command(['git', 'checkout', '-t', '-b', 'my-second-branch'])
- self._second_local_commit()
- write_into_file_at_path('test_file_commit0', 'more test content')
- run_command(['git', 'add', 'test_file_commit0'])
-
- # equivalent to 'git diff my-branch..HEAD, should not include working changes
- files = self.scm.changed_files(git_commit='UPSTREAM..')
- self.assertNotIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
- self.assertNotIn('test_file_commit0', files)
-
- # equivalent to 'git diff my-branch', *should* include working changes
- files = self.scm.changed_files(git_commit='UPSTREAM....')
- self.assertNotIn('test_file_commit1', files)
- self.assertIn('test_file_commit2', files)
- self.assertIn('test_file_commit0', files)
-
- def test_contents_at_revision(self):
- self._shared_test_contents_at_revision()
-
- def test_revisions_changing_file(self):
- self._shared_test_revisions_changing_file()
-
- def test_added_files(self):
- self._shared_test_added_files()
-
- def test_committer_email_for_revision(self):
- self._shared_test_committer_email_for_revision()
-
- def test_add_recursively(self):
- self._shared_test_add_recursively()
-
- def test_delete(self):
- self._two_local_commits()
- self.scm.delete('test_file_commit1')
- self.assertIn("test_file_commit1", self.scm.deleted_files())
-
- def test_delete_list(self):
- self._two_local_commits()
- self.scm.delete_list(["test_file_commit1", "test_file_commit2"])
- self.assertIn("test_file_commit1", self.scm.deleted_files())
- self.assertIn("test_file_commit2", self.scm.deleted_files())
-
- def test_delete_recursively(self):
- self._shared_test_delete_recursively()
-
- def test_delete_recursively_or_not(self):
- self._shared_test_delete_recursively_or_not()
-
- def test_head_svn_revision(self):
- self._shared_test_head_svn_revision()
-
- def test_to_object_name(self):
- relpath = 'test_file_commit1'
- fullpath = os.path.realpath(os.path.join(self.git_checkout_path, relpath))
- self.assertEqual(relpath, self.scm.to_object_name(fullpath))
-
- def test_show_head(self):
- self._two_local_commits()
- self.assertEqual("more test content", self.scm.show_head('test_file_commit1'))
-
- def test_show_head_binary(self):
- self._two_local_commits()
- data = "\244"
- write_into_file_at_path("binary_file", data, encoding=None)
- self.scm.add("binary_file")
- self.scm.commit_locally_with_message("a test commit")
- self.assertEqual(data, self.scm.show_head('binary_file'))
-
- def test_diff_for_file(self):
- self._two_local_commits()
- write_into_file_at_path('test_file_commit1', "Updated", encoding=None)
-
- diff = self.scm.diff_for_file('test_file_commit1')
- cached_diff = self.scm.diff_for_file('test_file_commit1')
- self.assertIn("+Updated", diff)
- self.assertIn("-more test content", diff)
-
- self.scm.add('test_file_commit1')
-
- cached_diff = self.scm.diff_for_file('test_file_commit1')
- self.assertIn("+Updated", cached_diff)
- self.assertIn("-more test content", cached_diff)
-
- def test_exists(self):
- self._shared_test_exists(self.scm, self.scm.commit_locally_with_message)
-
-
-# We need to split off more of these SCM tests to use mocks instead of the filesystem.
-# This class is the first part of that.
-class GitTestWithMock(unittest.TestCase):
- maxDiff = None
-
- def make_scm(self, logging_executive=False):
- # We do this should_log dance to avoid logging when Git.__init__ runs sysctl on mac to check for 64-bit support.
- scm = Git(cwd=".", executive=MockExecutive(), filesystem=MockFileSystem())
- scm.read_git_config = lambda *args, **kw: "MOCKKEY:MOCKVALUE"
- scm._executive._should_log = logging_executive
- return scm
-
- def test_create_patch(self):
- scm = self.make_scm(logging_executive=True)
- expected_stderr = """\
-MOCK run_command: ['git', 'merge-base', 'MOCKVALUE', 'HEAD'], cwd=%(checkout)s
-MOCK run_command: ['git', 'diff', '--binary', '--no-color', '--no-ext-diff', '--full-index', '--no-renames', '', 'MOCK output of child process', '--'], cwd=%(checkout)s
-MOCK run_command: ['git', 'rev-parse', '--show-toplevel'], cwd=%(checkout)s
-MOCK run_command: ['git', 'log', '-1', '--grep=git-svn-id:', '--date=iso', './MOCK output of child process/MOCK output of child process'], cwd=%(checkout)s
-""" % {'checkout': scm.checkout_root}
- OutputCapture().assert_outputs(self, scm.create_patch, expected_logs=expected_stderr)
-
- def test_push_local_commits_to_server_with_username_and_password(self):
- self.assertEqual(self.make_scm().push_local_commits_to_server(username='dbates@webkit.org', password='blah'), "MOCK output of child process")
-
- def test_push_local_commits_to_server_without_username_and_password(self):
- self.assertRaises(AuthenticationError, self.make_scm().push_local_commits_to_server)
-
- def test_push_local_commits_to_server_with_username_and_without_password(self):
- self.assertRaises(AuthenticationError, self.make_scm().push_local_commits_to_server, {'username': 'dbates@webkit.org'})
-
- def test_push_local_commits_to_server_without_username_and_with_password(self):
- self.assertRaises(AuthenticationError, self.make_scm().push_local_commits_to_server, {'password': 'blah'})
-
- def test_timestamp_of_revision(self):
- scm = self.make_scm()
- scm.find_checkout_root = lambda path: ''
- scm._run_git = lambda args: 'Date: 2013-02-08 08:05:49 +0000'
- self.assertEqual(scm.timestamp_of_revision('some-path', '12345'), '2013-02-08T08:05:49Z')
-
- scm._run_git = lambda args: 'Date: 2013-02-08 01:02:03 +0130'
- self.assertEqual(scm.timestamp_of_revision('some-path', '12345'), '2013-02-07T23:32:03Z')
-
- scm._run_git = lambda args: 'Date: 2013-02-08 01:55:21 -0800'
- self.assertEqual(scm.timestamp_of_revision('some-path', '12345'), '2013-02-08T09:55:21Z')
diff --git a/Tools/Scripts/webkitpy/common/checkout/scm/svn.py b/Tools/Scripts/webkitpy/common/checkout/scm/svn.py
deleted file mode 100644
index c146f5d32..000000000
--- a/Tools/Scripts/webkitpy/common/checkout/scm/svn.py
+++ /dev/null
@@ -1,380 +0,0 @@
-# Copyright (c) 2009, 2010, 2011 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-import os
-import random
-import re
-import shutil
-import string
-import sys
-import tempfile
-
-from webkitpy.common.memoized import memoized
-from webkitpy.common.system.executive import Executive, ScriptError
-
-from .scm import AuthenticationError, SCM, commit_error_handler
-
-_log = logging.getLogger(__name__)
-
-
-# A mixin class that represents common functionality for SVN and Git-SVN.
-class SVNRepository(object):
- # FIXME: These belong in common.config.urls
- svn_server_host = "svn.webkit.org"
- svn_server_realm = "<http://svn.webkit.org:80> Mac OS Forge"
-
- def has_authorization_for_realm(self, realm, home_directory=os.getenv("HOME")):
- # If we are working on a file:// repository realm will be None
- if realm is None:
- return True
- # ignore false positives for methods implemented in the mixee class. pylint: disable=E1101
- # Assumes find and grep are installed.
- if not os.path.isdir(os.path.join(home_directory, ".subversion")):
- return False
- find_args = ["find", ".subversion", "-type", "f", "-exec", "grep", "-q", realm, "{}", ";", "-print"]
- find_output = self.run(find_args, cwd=home_directory, error_handler=Executive.ignore_error).rstrip()
- if not find_output or not os.path.isfile(os.path.join(home_directory, find_output)):
- return False
- # Subversion either stores the password in the credential file, indicated by the presence of the key "password",
- # or uses the system password store (e.g. Keychain on Mac OS X) as indicated by the presence of the key "passtype".
- # We assume that these keys will not coincide with the actual credential data (e.g. that a person's username
- # isn't "password") so that we can use grep.
- if self.run(["grep", "password", find_output], cwd=home_directory, return_exit_code=True) == 0:
- return True
- return self.run(["grep", "passtype", find_output], cwd=home_directory, return_exit_code=True) == 0
-
-
-class SVN(SCM, SVNRepository):
-
- executable_name = "svn"
-
- _svn_metadata_files = frozenset(['.svn', '_svn'])
-
- def __init__(self, cwd, patch_directories, **kwargs):
- SCM.__init__(self, cwd, **kwargs)
- self._bogus_dir = None
- if patch_directories == []:
- raise Exception(message='Empty list of patch directories passed to SCM.__init__')
- elif patch_directories == None:
- self._patch_directories = [self._filesystem.relpath(cwd, self.checkout_root)]
- else:
- self._patch_directories = patch_directories
-
- @classmethod
- def in_working_directory(cls, path, executive=None):
- if os.path.isdir(os.path.join(path, '.svn')):
- # This is a fast shortcut for svn info that is usually correct for SVN < 1.7,
- # but doesn't work for SVN >= 1.7.
- return True
-
- executive = executive or Executive()
- svn_info_args = [cls.executable_name, 'info']
- exit_code = executive.run_command(svn_info_args, cwd=path, return_exit_code=True)
- return (exit_code == 0)
-
- def find_uuid(self, path):
- if not self.in_working_directory(path):
- return None
- return self.value_from_svn_info(path, 'Repository UUID')
-
- @classmethod
- def value_from_svn_info(cls, path, field_name):
- svn_info_args = [cls.executable_name, 'info']
- # FIXME: This method should use a passed in executive or be made an instance method and use self._executive.
- info_output = Executive().run_command(svn_info_args, cwd=path).rstrip()
- match = re.search("^%s: (?P<value>.+)$" % field_name, info_output, re.MULTILINE)
- if not match:
- raise ScriptError(script_args=svn_info_args, message='svn info did not contain a %s.' % field_name)
- return match.group('value').rstrip('\r')
-
- def find_checkout_root(self, path):
- uuid = self.find_uuid(path)
- # If |path| is not in a working directory, we're supposed to return |path|.
- if not uuid:
- return path
- # Search up the directory hierarchy until we find a different UUID.
- last_path = None
- while True:
- if uuid != self.find_uuid(path):
- return last_path
- last_path = path
- (path, last_component) = self._filesystem.split(path)
- if last_path == path:
- return None
-
- @staticmethod
- def commit_success_regexp():
- return "^Committed revision (?P<svn_revision>\d+)\.$"
-
- def _run_svn(self, args, **kwargs):
- return self.run([self.executable_name] + args, **kwargs)
-
- @memoized
- def svn_version(self):
- return self._run_svn(['--version', '--quiet'])
-
- def has_working_directory_changes(self):
- # FIXME: What about files which are not committed yet?
- return self._run_svn(["diff"], cwd=self.checkout_root, decode_output=False) != ""
-
- def discard_working_directory_changes(self):
- # Make sure there are no locks lying around from a previously aborted svn invocation.
- # This is slightly dangerous, as it's possible the user is running another svn process
- # on this checkout at the same time. However, it's much more likely that we're running
- # under windows and svn just sucks (or the user interrupted svn and it failed to clean up).
- self._run_svn(["cleanup"], cwd=self.checkout_root)
-
- # svn revert -R is not as awesome as git reset --hard.
- # It will leave added files around, causing later svn update
- # calls to fail on the bots. We make this mirror git reset --hard
- # by deleting any added files as well.
- added_files = reversed(sorted(self.added_files()))
- # added_files() returns directories for SVN, we walk the files in reverse path
- # length order so that we remove files before we try to remove the directories.
- self._run_svn(["revert", "-R", "."], cwd=self.checkout_root)
- for path in added_files:
- # This is robust against cwd != self.checkout_root
- absolute_path = self.absolute_path(path)
- # Completely lame that there is no easy way to remove both types with one call.
- if os.path.isdir(path):
- os.rmdir(absolute_path)
- else:
- os.remove(absolute_path)
-
- def status_command(self):
- return [self.executable_name, 'status']
-
- def _status_regexp(self, expected_types):
- field_count = 6 if self.svn_version() > "1.6" else 5
- return "^(?P<status>[%s]).{%s} (?P<filename>.+)$" % (expected_types, field_count)
-
- def _add_parent_directories(self, path):
- """Does 'svn add' to the path and its parents."""
- if self.in_working_directory(path):
- return
- self.add(path)
-
- def add_list(self, paths):
- for path in paths:
- self._add_parent_directories(os.path.dirname(os.path.abspath(path)))
- if self.svn_version() >= "1.7":
- # For subversion client 1.7 and later, need to add '--parents' option to ensure intermediate directories
- # are added; in addition, 1.7 returns an exit code of 1 from svn add if one or more of the requested
- # adds are already under version control, including intermediate directories subject to addition
- # due to --parents
- svn_add_args = ['svn', 'add', '--parents'] + paths
- exit_code = self.run(svn_add_args, return_exit_code=True)
- if exit_code and exit_code != 1:
- raise ScriptError(script_args=svn_add_args, exit_code=exit_code)
- else:
- self._run_svn(["add"] + paths)
-
- def _delete_parent_directories(self, path):
- if not self.in_working_directory(path):
- return
- if set(os.listdir(path)) - self._svn_metadata_files:
- return # Directory has non-trivial files in it.
- self.delete(path)
-
- def delete_list(self, paths):
- for path in paths:
- abs_path = os.path.abspath(path)
- parent, base = os.path.split(abs_path)
- result = self._run_svn(["delete", "--force", base], cwd=parent)
- self._delete_parent_directories(os.path.dirname(abs_path))
- return result
-
- def exists(self, path):
- return not self._run_svn(["info", path], return_exit_code=True, decode_output=False)
-
- def changed_files(self, git_commit=None):
- status_command = [self.executable_name, "status"]
- status_command.extend(self._patch_directories)
- # ACDMR: Addded, Conflicted, Deleted, Modified or Replaced
- return self.run_status_and_extract_filenames(status_command, self._status_regexp("ACDMR"))
-
- def changed_files_for_revision(self, revision):
- # As far as I can tell svn diff --summarize output looks just like svn status output.
- # No file contents printed, thus utf-8 auto-decoding in self.run is fine.
- status_command = [self.executable_name, "diff", "--summarize", "-c", revision]
- return self.run_status_and_extract_filenames(status_command, self._status_regexp("ACDMR"))
-
- def revisions_changing_file(self, path, limit=5):
- revisions = []
- # svn log will exit(1) (and thus self.run will raise) if the path does not exist.
- log_command = ['log', '--quiet', '--limit=%s' % limit, path]
- for line in self._run_svn(log_command, cwd=self.checkout_root).splitlines():
- match = re.search('^r(?P<revision>\d+) ', line)
- if not match:
- continue
- revisions.append(int(match.group('revision')))
- return revisions
-
- def conflicted_files(self):
- return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp("C"))
-
- def added_files(self):
- return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp("A"))
-
- def deleted_files(self):
- return self.run_status_and_extract_filenames(self.status_command(), self._status_regexp("D"))
-
- @staticmethod
- def supports_local_commits():
- return False
-
- def display_name(self):
- return "svn"
-
- def svn_revision(self, path):
- return self.value_from_svn_info(path, 'Revision')
-
- def timestamp_of_revision(self, path, revision):
- # We use --xml to get timestamps like 2013-02-08T08:18:04.964409Z
- repository_root = self.value_from_svn_info(self.checkout_root, 'Repository Root')
- info_output = Executive().run_command([self.executable_name, 'log', '-r', revision, '--xml', repository_root], cwd=path).rstrip()
- match = re.search(r"^<date>(?P<value>.+)</date>\r?$", info_output, re.MULTILINE)
- return match.group('value')
-
- # FIXME: This method should be on Checkout.
- def create_patch(self, git_commit=None, changed_files=None):
- """Returns a byte array (str()) representing the patch file.
- Patch files are effectively binary since they may contain
- files of multiple different encodings."""
- if changed_files == []:
- return ""
- elif changed_files == None:
- changed_files = []
- return self.run([self.script_path("svn-create-patch")] + changed_files,
- cwd=self.checkout_root, return_stderr=False,
- decode_output=False)
-
- def committer_email_for_revision(self, revision):
- return self._run_svn(["propget", "svn:author", "--revprop", "-r", revision]).rstrip()
-
- def contents_at_revision(self, path, revision):
- """Returns a byte array (str()) containing the contents
- of path @ revision in the repository."""
- remote_path = "%s/%s" % (self._repository_url(), path)
- return self._run_svn(["cat", "-r", revision, remote_path], decode_output=False)
-
- def diff_for_revision(self, revision):
- # FIXME: This should probably use cwd=self.checkout_root
- return self._run_svn(['diff', '-c', revision])
-
- def _bogus_dir_name(self):
- rnd = ''.join(random.sample(string.ascii_letters, 5))
- if sys.platform.startswith("win"):
- parent_dir = tempfile.gettempdir()
- else:
- parent_dir = sys.path[0] # tempdir is not secure.
- return os.path.join(parent_dir, "temp_svn_config_" + rnd)
-
- def _setup_bogus_dir(self, log):
- self._bogus_dir = self._bogus_dir_name()
- if not os.path.exists(self._bogus_dir):
- os.mkdir(self._bogus_dir)
- self._delete_bogus_dir = True
- else:
- self._delete_bogus_dir = False
- if log:
- log.debug(' Html: temp config dir: "%s".', self._bogus_dir)
-
- def _teardown_bogus_dir(self, log):
- if self._delete_bogus_dir:
- shutil.rmtree(self._bogus_dir, True)
- if log:
- log.debug(' Html: removed temp config dir: "%s".', self._bogus_dir)
- self._bogus_dir = None
-
- def diff_for_file(self, path, log=None):
- self._setup_bogus_dir(log)
- try:
- args = ['diff']
- if self._bogus_dir:
- args += ['--config-dir', self._bogus_dir]
- args.append(path)
- return self._run_svn(args, cwd=self.checkout_root)
- finally:
- self._teardown_bogus_dir(log)
-
- def show_head(self, path):
- return self._run_svn(['cat', '-r', 'BASE', path], decode_output=False)
-
- def _repository_url(self):
- return self.value_from_svn_info(self.checkout_root, 'URL')
-
- def apply_reverse_diff(self, revision):
- # '-c -revision' applies the inverse diff of 'revision'
- svn_merge_args = ['merge', '--non-interactive', '-c', '-%s' % revision, self._repository_url()]
- _log.warning("svn merge has been known to take more than 10 minutes to complete. It is recommended you use git for rollouts.")
- _log.debug("Running 'svn %s'" % " ".join(svn_merge_args))
- # FIXME: Should this use cwd=self.checkout_root?
- self._run_svn(svn_merge_args)
-
- def revert_files(self, file_paths):
- # FIXME: This should probably use cwd=self.checkout_root.
- self._run_svn(['revert'] + file_paths)
-
- def commit_with_message(self, message, username=None, password=None, git_commit=None, force_squash=False, changed_files=None):
- # git-commit and force are not used by SVN.
- svn_commit_args = ["commit"]
-
- if not username and not self.has_authorization_for_realm(self.svn_server_realm):
- raise AuthenticationError(self.svn_server_host)
- if username:
- svn_commit_args.extend(["--username", username])
-
- svn_commit_args.extend(["-m", message])
-
- if changed_files:
- svn_commit_args.extend(changed_files)
-
- return self._run_svn(svn_commit_args, cwd=self.checkout_root, error_handler=commit_error_handler)
-
- def svn_commit_log(self, svn_revision):
- svn_revision = self.strip_r_from_svn_revision(svn_revision)
- return self._run_svn(['log', '--non-interactive', '--revision', svn_revision])
-
- def last_svn_commit_log(self):
- # BASE is the checkout revision, HEAD is the remote repository revision
- # http://svnbook.red-bean.com/en/1.0/ch03s03.html
- return self.svn_commit_log('BASE')
-
- def svn_blame(self, path):
- return self._run_svn(['blame', path])
-
- def propset(self, pname, pvalue, path):
- dir, base = os.path.split(path)
- return self._run_svn(['pset', pname, pvalue, base], cwd=dir)
-
- def propget(self, pname, path):
- dir, base = os.path.split(path)
- return self._run_svn(['pget', pname, base], cwd=dir).encode('utf-8').rstrip("\n")
diff --git a/Tools/Scripts/webkitpy/common/checksvnconfigfile.py b/Tools/Scripts/webkitpy/common/checksvnconfigfile.py
deleted file mode 100644
index e6165f64b..000000000
--- a/Tools/Scripts/webkitpy/common/checksvnconfigfile.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2012 Balazs Ankes (bank@inf.u-szeged.hu) University of Szeged
-#
-# 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 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 file is used by:
-# webkitpy/tool/steps/addsvnmimetypeforpng.py
-# webkitpy/style/checkers/png.py
-
-import os
-import re
-
-
-def check(host, fs):
- """
- check the svn config file
- return with three logical value:
- is svn config file missing, is auto-props missing, is the svn:mime-type for png missing
- """
-
- cfg_file_path = config_file_path(host, fs)
-
- try:
- config_file = fs.read_text_file(cfg_file_path)
- except IOError:
- return (True, True, True)
-
- errorcode_autoprop = not re.search("^\s*enable-auto-props\s*=\s*yes", config_file, re.MULTILINE)
- errorcode_png = not re.search("^\s*\*\.png\s*=\s*svn:mime-type=image/png", config_file, re.MULTILINE)
-
- return (False, errorcode_autoprop, errorcode_png)
-
-
-def config_file_path(host, fs):
- if host.platform.is_win():
- config_file_path = fs.join(os.environ['APPDATA'], "Subversion", "config")
- else:
- config_file_path = fs.join(fs.expanduser("~"), ".subversion", "config")
- return config_file_path
-
-
-def errorstr_autoprop(config_file_path):
- return 'Have to enable auto props in the subversion config file (%s "enable-auto-props = yes"). ' % config_file_path
-
-
-def errorstr_png(config_file_path):
- return 'Have to set the svn:mime-type in the subversion config file (%s "*.png = svn:mime-type=image/png").' % config_file_path
diff --git a/Tools/Scripts/webkitpy/common/config/__init__.py b/Tools/Scripts/webkitpy/common/config/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/config/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/config/committers.py b/Tools/Scripts/webkitpy/common/config/committers.py
deleted file mode 100644
index 62a09329e..000000000
--- a/Tools/Scripts/webkitpy/common/config/committers.py
+++ /dev/null
@@ -1,273 +0,0 @@
-# Copyright (c) 2011, Apple Inc. All rights reserved.
-# Copyright (c) 2009, 2011, 2012 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.
-#
-# WebKit's Python module for committer and reviewer validation.
-
-import fnmatch
-import json
-
-from webkitpy.common.editdistance import edit_distance
-from webkitpy.common.memoized import memoized
-from webkitpy.common.system.filesystem import FileSystem
-
-
-# The list of contributors have been moved to contributors.json
-
-
-class Contributor(object):
- def __init__(self, name, email_or_emails, irc_nickname_or_nicknames=None):
- assert(name)
- assert(email_or_emails)
- self.full_name = name
- if isinstance(email_or_emails, str):
- self.emails = [email_or_emails]
- else:
- self.emails = email_or_emails
- self.emails = map(lambda email: email.lower(), self.emails) # Emails are case-insensitive.
- if isinstance(irc_nickname_or_nicknames, str):
- self.irc_nicknames = [irc_nickname_or_nicknames]
- else:
- self.irc_nicknames = irc_nickname_or_nicknames
- self.can_commit = False
- self.can_review = False
-
- def bugzilla_email(self):
- # FIXME: We're assuming the first email is a valid bugzilla email,
- # which might not be right.
- return self.emails[0]
-
- def __str__(self):
- return unicode(self).encode('utf-8')
-
- def __unicode__(self):
- return '"%s" <%s>' % (self.full_name, self.emails[0])
-
- def contains_string(self, search_string):
- string = search_string.lower()
- if string in self.full_name.lower():
- return True
- if self.irc_nicknames:
- for nickname in self.irc_nicknames:
- if string in nickname.lower():
- return True
- for email in self.emails:
- if string in email:
- return True
- return False
-
- def matches_glob(self, glob_string):
- if fnmatch.fnmatch(self.full_name, glob_string):
- return True
- if self.irc_nicknames:
- for nickname in self.irc_nicknames:
- if fnmatch.fnmatch(nickname, glob_string):
- return True
- for email in self.emails:
- if fnmatch.fnmatch(email, glob_string):
- return True
- return False
-
-
-class Committer(Contributor):
- def __init__(self, name, email_or_emails, irc_nickname=None):
- Contributor.__init__(self, name, email_or_emails, irc_nickname)
- self.can_commit = True
-
-
-class Reviewer(Committer):
- def __init__(self, name, email_or_emails, irc_nickname=None):
- Committer.__init__(self, name, email_or_emails, irc_nickname)
- self.can_review = True
-
-
-class CommitterList(object):
-
- # Committers and reviewers are passed in to allow easy testing
- def __init__(self,
- committers=[],
- reviewers=[],
- contributors=[]):
- # FIXME: These arguments only exist for testing. Clean it up.
- if not (committers or reviewers or contributors):
- loaded_data = self.load_json()
- contributors = loaded_data['Contributors']
- committers = loaded_data['Committers']
- reviewers = loaded_data['Reviewers']
-
- self._contributors = contributors + committers + reviewers
- self._committers = committers + reviewers
- self._reviewers = reviewers
- self._contributors_by_name = {}
- self._accounts_by_email = {}
- self._accounts_by_login = {}
-
- @staticmethod
- @memoized
- def load_json():
- filesystem = FileSystem()
- json_path = filesystem.join(filesystem.dirname(filesystem.path_to_module('webkitpy.common.config')), 'contributors.json')
- contributors = json.loads(filesystem.read_text_file(json_path))
-
- return {
- 'Contributors': [Contributor(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Contributors'].iteritems()],
- 'Committers': [Committer(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Committers'].iteritems()],
- 'Reviewers': [Reviewer(name, data.get('emails'), data.get('nicks')) for name, data in contributors['Reviewers'].iteritems()],
- }
-
- def contributors(self):
- return self._contributors
-
- def committers(self):
- return self._committers
-
- def reviewers(self):
- return self._reviewers
-
- def _name_to_contributor_map(self):
- if not len(self._contributors_by_name):
- for contributor in self._contributors:
- assert(contributor.full_name)
- assert(contributor.full_name.lower() not in self._contributors_by_name) # We should never have duplicate names.
- self._contributors_by_name[contributor.full_name.lower()] = contributor
- return self._contributors_by_name
-
- def _email_to_account_map(self):
- if not len(self._accounts_by_email):
- for account in self._contributors:
- for email in account.emails:
- assert(email not in self._accounts_by_email) # We should never have duplicate emails.
- self._accounts_by_email[email] = account
- return self._accounts_by_email
-
- def _login_to_account_map(self):
- if not len(self._accounts_by_login):
- for account in self._contributors:
- if account.emails:
- login = account.bugzilla_email()
- assert(login not in self._accounts_by_login) # We should never have duplicate emails.
- self._accounts_by_login[login] = account
- return self._accounts_by_login
-
- def _committer_only(self, record):
- if record and not record.can_commit:
- return None
- return record
-
- def _reviewer_only(self, record):
- if record and not record.can_review:
- return None
- return record
-
- def committer_by_name(self, name):
- return self._committer_only(self.contributor_by_name(name))
-
- def contributor_by_irc_nickname(self, irc_nickname):
- for contributor in self.contributors():
- # FIXME: This should do case-insensitive comparison or assert that all IRC nicknames are in lowercase
- if contributor.irc_nicknames and irc_nickname in contributor.irc_nicknames:
- return contributor
- return None
-
- def contributors_by_search_string(self, string):
- glob_matches = filter(lambda contributor: contributor.matches_glob(string), self.contributors())
- return glob_matches or filter(lambda contributor: contributor.contains_string(string), self.contributors())
-
- def contributors_by_email_username(self, string):
- string = string + '@'
- result = []
- for contributor in self.contributors():
- for email in contributor.emails:
- if email.startswith(string):
- result.append(contributor)
- break
- return result
-
- def _contributor_name_shorthands(self, contributor):
- if ' ' not in contributor.full_name:
- return []
- split_fullname = contributor.full_name.split()
- first_name = split_fullname[0]
- last_name = split_fullname[-1]
- return first_name, last_name, first_name + last_name[0], first_name + ' ' + last_name[0]
-
- def _tokenize_contributor_name(self, contributor):
- full_name_in_lowercase = contributor.full_name.lower()
- tokens = [full_name_in_lowercase] + full_name_in_lowercase.split()
- if contributor.irc_nicknames:
- return tokens + [nickname.lower() for nickname in contributor.irc_nicknames if len(nickname) > 5]
- return tokens
-
- def contributors_by_fuzzy_match(self, string):
- string_in_lowercase = string.lower()
-
- # 1. Exact match for fullname, email and irc_nicknames
- account = self.contributor_by_name(string_in_lowercase) or self.contributor_by_email(string_in_lowercase) or self.contributor_by_irc_nickname(string_in_lowercase)
- if account:
- return [account], 0
-
- # 2. Exact match for email username (before @)
- accounts = self.contributors_by_email_username(string_in_lowercase)
- if accounts and len(accounts) == 1:
- return accounts, 0
-
- # 3. Exact match for first name, last name, and first name + initial combinations such as "Dan B" and "Tim H"
- accounts = [contributor for contributor in self.contributors() if string in self._contributor_name_shorthands(contributor)]
- if accounts and len(accounts) == 1:
- return accounts, 0
-
- # 4. Finally, fuzzy-match using edit-distance
- string = string_in_lowercase
- contributorWithMinDistance = []
- minDistance = len(string) / 2 - 1
- for contributor in self.contributors():
- tokens = self._tokenize_contributor_name(contributor)
- editdistances = [edit_distance(token, string) for token in tokens if abs(len(token) - len(string)) <= minDistance]
- if not editdistances:
- continue
- distance = min(editdistances)
- if distance == minDistance:
- contributorWithMinDistance.append(contributor)
- elif distance < minDistance:
- contributorWithMinDistance = [contributor]
- minDistance = distance
- if not len(contributorWithMinDistance):
- return [], len(string)
- return contributorWithMinDistance, minDistance
-
- def contributor_by_email(self, email):
- return self._email_to_account_map().get(email.lower()) if email else None
-
- def contributor_by_name(self, name):
- return self._name_to_contributor_map().get(name.lower()) if name else None
-
- def committer_by_email(self, email):
- return self._committer_only(self.contributor_by_email(email))
-
- def reviewer_by_email(self, email):
- return self._reviewer_only(self.contributor_by_email(email))
diff --git a/Tools/Scripts/webkitpy/common/config/committers_unittest.py b/Tools/Scripts/webkitpy/common/config/committers_unittest.py
deleted file mode 100644
index f23c5fbda..000000000
--- a/Tools/Scripts/webkitpy/common/config/committers_unittest.py
+++ /dev/null
@@ -1,365 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-from webkitpy.common.config.committers import CommitterList, Contributor, Committer, Reviewer
-
-class CommittersTest(unittest.TestCase):
- def test_committer_lookup(self):
- committer = Committer('Test One', 'one@test.com', 'one')
- reviewer = Reviewer('Test Two', ['two@test.com', 'Two@rad.com', 'so_two@gmail.com'])
- contributor = Contributor('Test Three', ['Three@test.com'], 'three')
- contributor_with_two_nicknames = Contributor('Other Four', ['otherfour@webkit.org', 'otherfour@webkit2.org'], ['four', 'otherfour'])
- contributor_with_same_email_username = Contributor('Yet Another Four', ['otherfour@webkit.com'], ['yetanotherfour'])
- committer_list = CommitterList(committers=[committer], reviewers=[reviewer],
- contributors=[contributor, contributor_with_two_nicknames, contributor_with_same_email_username])
-
- # Test valid committer, reviewer and contributor lookup
- self.assertEqual(committer_list.committer_by_email('one@test.com'), committer)
- self.assertEqual(committer_list.reviewer_by_email('two@test.com'), reviewer)
- self.assertEqual(committer_list.committer_by_email('two@test.com'), reviewer)
- self.assertEqual(committer_list.committer_by_email('two@rad.com'), reviewer)
- self.assertEqual(committer_list.reviewer_by_email('so_two@gmail.com'), reviewer)
- self.assertEqual(committer_list.contributor_by_email('three@test.com'), contributor)
-
- # Test valid committer, reviewer and contributor lookup
- self.assertEqual(committer_list.committer_by_name("Test One"), committer)
- self.assertEqual(committer_list.committer_by_name("Test Two"), reviewer)
- self.assertIsNone(committer_list.committer_by_name("Test Three"))
- self.assertEqual(committer_list.contributor_by_name("Test Three"), contributor)
- self.assertEqual(committer_list.contributor_by_name("test one"), committer)
- self.assertEqual(committer_list.contributor_by_name("test two"), reviewer)
- self.assertEqual(committer_list.contributor_by_name("test three"), contributor)
-
- # Test that the first email is assumed to be the Bugzilla email address (for now)
- self.assertEqual(committer_list.committer_by_email('two@rad.com').bugzilla_email(), 'two@test.com')
-
- # Test that a known committer is not returned during reviewer lookup
- self.assertIsNone(committer_list.reviewer_by_email('one@test.com'))
- self.assertIsNone(committer_list.reviewer_by_email('three@test.com'))
- # and likewise that a known contributor is not returned for committer lookup.
- self.assertIsNone(committer_list.committer_by_email('three@test.com'))
-
- # Test that unknown email address fail both committer and reviewer lookup
- self.assertIsNone(committer_list.committer_by_email('bar@bar.com'))
- self.assertIsNone(committer_list.reviewer_by_email('bar@bar.com'))
-
- # Test that emails returns a list.
- self.assertEqual(committer.emails, ['one@test.com'])
-
- self.assertEqual(committer.irc_nicknames, ['one'])
- self.assertEqual(committer_list.contributor_by_irc_nickname('one'), committer)
- self.assertEqual(committer_list.contributor_by_irc_nickname('three'), contributor)
- self.assertEqual(committer_list.contributor_by_irc_nickname('four'), contributor_with_two_nicknames)
- self.assertEqual(committer_list.contributor_by_irc_nickname('otherfour'), contributor_with_two_nicknames)
-
- # Test that the lists returned are are we expect them.
- self.assertEqual(committer_list.contributors(), [contributor, contributor_with_two_nicknames, contributor_with_same_email_username, committer, reviewer])
- self.assertEqual(committer_list.committers(), [committer, reviewer])
- self.assertEqual(committer_list.reviewers(), [reviewer])
-
- self.assertEqual(committer_list.contributors_by_search_string('test'), [contributor, committer, reviewer])
- self.assertEqual(committer_list.contributors_by_search_string('rad'), [reviewer])
- self.assertEqual(committer_list.contributors_by_search_string('Two'), [reviewer])
- self.assertEqual(committer_list.contributors_by_search_string('otherfour'), [contributor_with_two_nicknames])
- self.assertEqual(committer_list.contributors_by_search_string('*otherfour*'), [contributor_with_two_nicknames, contributor_with_same_email_username])
-
- self.assertEqual(committer_list.contributors_by_email_username("one"), [committer])
- self.assertEqual(committer_list.contributors_by_email_username("four"), [])
- self.assertEqual(committer_list.contributors_by_email_username("otherfour"), [contributor_with_two_nicknames, contributor_with_same_email_username])
-
- def _assert_fuzz_match(self, text, name_of_expected_contributor, expected_distance):
- committers = CommitterList()
- contributors, distance = committers.contributors_by_fuzzy_match(text)
- if type(name_of_expected_contributor) is list:
- expected_names = name_of_expected_contributor
- else:
- expected_names = [name_of_expected_contributor] if name_of_expected_contributor else []
- self.assertEqual(([contributor.full_name for contributor in contributors], distance), (expected_names, expected_distance))
-
- # Test that the string representation of a Contributor supports unicode
- def test_contributor_encoding(self):
- committer_encoding = Contributor(u'\u017dan M\u00fcller', 'zmuller@example.com', 'zmuller')
- self.assertTrue(str(committer_encoding))
-
- # Basic testing of the edit distance matching ...
- def test_contributors_by_fuzzy_match(self):
- self._assert_fuzz_match('Geoff Garen', 'Geoffrey Garen', 3)
- self._assert_fuzz_match('Kenneth Christiansen', 'Kenneth Rohde Christiansen', 6)
- self._assert_fuzz_match('Sam', 'Sam Weinig', 0)
- self._assert_fuzz_match('me', None, 2)
-
- # The remaining tests test that certain names are resolved in a specific way.
- # We break this up into multiple tests so that each is faster and they can
- # be run in parallel. Unfortunately each test scans the entire committers list,
- # so these are inherently slow (see https://bugs.webkit.org/show_bug.cgi?id=79179).
- #
- # Commented out lines are test cases imported from the bug 26533 yet to pass.
-
- def integration_test_contributors__none(self):
- self._assert_fuzz_match('myself', None, 6)
- self._assert_fuzz_match('others', None, 6)
- self._assert_fuzz_match('BUILD FIX', None, 9)
-
- def integration_test_contributors__none_2(self):
- self._assert_fuzz_match('but Dan Bernstein also reviewed', None, 31)
- self._assert_fuzz_match('asked thoughtful questions', None, 26)
- self._assert_fuzz_match('build fix of mac', None, 16)
-
- def integration_test_contributors__none_3(self):
- self._assert_fuzz_match('a spell checker', None, 15)
- self._assert_fuzz_match('nobody, build fix', None, 17)
- self._assert_fuzz_match('NOBODY (chromium build fix)', None, 27)
-
- def integration_test_contributors_ada_chan(self):
- self._assert_fuzz_match('Ada', 'Ada Chan', 0)
-
- def integration_test_contributors_adele_peterson(self):
- self._assert_fuzz_match('adele', 'Adele Peterson', 0)
-
- def integration_test_contributors_adele_peterson(self):
- # self._assert_fuzz_match('Adam', 'Adam Roben', 0)
- self._assert_fuzz_match('aroben', 'Adam Roben', 0)
-
- def integration_test_contributors_alexey_proskuryakov(self):
- # self._assert_fuzz_match('Alexey', 'Alexey Proskuryakov', 0)
- self._assert_fuzz_match('ap', 'Alexey Proskuryakov', 0)
- self._assert_fuzz_match('Alexey P', 'Alexey Proskuryakov', 0)
-
- def integration_test_contributors_alice_liu(self):
- # self._assert_fuzz_match('Alice', 'Alice Liu', 0)
- self._assert_fuzz_match('aliu', 'Alice Liu', 0)
- self._assert_fuzz_match('Liu', 'Alice Liu', 0)
-
- def integration_test_contributors_alp_toker(self):
- self._assert_fuzz_match('Alp', 'Alp Toker', 0)
-
- def integration_test_contributors_anders_carlsson(self):
- self._assert_fuzz_match('Anders', 'Anders Carlsson', 0)
- self._assert_fuzz_match('andersca', 'Anders Carlsson', 0)
- self._assert_fuzz_match('anders', 'Anders Carlsson', 0)
- self._assert_fuzz_match('Andersca', 'Anders Carlsson', 0)
-
- def integration_test_contributors_antti_koivisto(self):
- self._assert_fuzz_match('Antti "printf" Koivisto', 'Antti Koivisto', 9)
- self._assert_fuzz_match('Antti', 'Antti Koivisto', 0)
-
- def integration_test_contributors_beth_dakin(self):
- self._assert_fuzz_match('Beth', 'Beth Dakin', 0)
- self._assert_fuzz_match('beth', 'Beth Dakin', 0)
- self._assert_fuzz_match('bdakin', 'Beth Dakin', 0)
-
- def integration_test_contributors_brady_eidson(self):
- self._assert_fuzz_match('Brady', 'Brady Eidson', 0)
- self._assert_fuzz_match('bradee-oh', 'Brady Eidson', 0)
- self._assert_fuzz_match('Brady', 'Brady Eidson', 0)
-
- def integration_test_contributors_cameron_zwarich(self):
- pass # self._assert_fuzz_match('Cameron', 'Cameron Zwarich', 0)
- # self._assert_fuzz_match('cpst', 'Cameron Zwarich', 1)
-
- def integration_test_contributors_chris_blumenberg(self):
- # self._assert_fuzz_match('Chris', 'Chris Blumenberg', 0)
- self._assert_fuzz_match('cblu', 'Chris Blumenberg', 0)
-
- def integration_test_contributors_dan_bernstein(self):
- self._assert_fuzz_match('Dan', ['Dan Winship', 'Dan Bernstein'], 0)
- self._assert_fuzz_match('Dan B', 'Dan Bernstein', 0)
- # self._assert_fuzz_match('mitz', 'Dan Bernstein', 0)
- self._assert_fuzz_match('Mitz Pettel', 'Dan Bernstein', 1)
- self._assert_fuzz_match('Mitzpettel', 'Dan Bernstein', 0)
- self._assert_fuzz_match('Mitz Pettel RTL', 'Dan Bernstein', 5)
-
- def integration_test_contributors_dan_bernstein_2(self):
- self._assert_fuzz_match('Teh Mitzpettel', 'Dan Bernstein', 4)
- # self._assert_fuzz_match('The Mitz', 'Dan Bernstein', 0)
- self._assert_fuzz_match('Dr Dan Bernstein', 'Dan Bernstein', 3)
-
- def integration_test_contributors_darin_adler(self):
- self._assert_fuzz_match('Darin Adler\'', 'Darin Adler', 1)
- self._assert_fuzz_match('Darin', 'Darin Adler', 0) # Thankfully "Fisher" is longer than "Adler"
- self._assert_fuzz_match('darin', 'Darin Adler', 0)
-
- def integration_test_contributors_david_harrison(self):
- self._assert_fuzz_match('Dave Harrison', 'David Harrison', 2)
- self._assert_fuzz_match('harrison', 'David Harrison', 0)
- self._assert_fuzz_match('Dr. Harrison', 'David Harrison', 4)
-
- def integration_test_contributors_david_harrison_2(self):
- self._assert_fuzz_match('Dave Harrson', 'David Harrison', 3)
- self._assert_fuzz_match('Dave Harrsion', 'David Harrison', 4) # Damerau-Levenshtein distance is 3
-
- def integration_test_contributors_david_hyatt(self):
- self._assert_fuzz_match('Dave Hyatt', 'David Hyatt', 2)
- self._assert_fuzz_match('Daddy Hyatt', 'David Hyatt', 3)
- # self._assert_fuzz_match('Dave', 'David Hyatt', 0) # 'Dave' could mean harrison.
- self._assert_fuzz_match('hyatt', 'David Hyatt', 0)
- # self._assert_fuzz_match('Haytt', 'David Hyatt', 0) # Works if we had implemented Damerau-Levenshtein distance!
-
- def integration_test_contributors_david_kilzer(self):
- self._assert_fuzz_match('Dave Kilzer', 'David Kilzer', 2)
- self._assert_fuzz_match('David D. Kilzer', 'David Kilzer', 3)
- self._assert_fuzz_match('ddkilzer', 'David Kilzer', 0)
-
- def integration_test_contributors_don_melton(self):
- self._assert_fuzz_match('Don', 'Don Melton', 0)
- self._assert_fuzz_match('Gramps', 'Don Melton', 0)
-
- def integration_test_contributors_eric_seidel(self):
- # self._assert_fuzz_match('eric', 'Eric Seidel', 0)
- self._assert_fuzz_match('Eric S', 'Eric Seidel', 0)
- # self._assert_fuzz_match('MacDome', 'Eric Seidel', 0)
- self._assert_fuzz_match('eseidel', 'Eric Seidel', 0)
-
- def integration_test_contributors_geoffrey_garen(self):
- # self._assert_fuzz_match('Geof', 'Geoffrey Garen', 4)
- # self._assert_fuzz_match('Geoff', 'Geoffrey Garen', 3)
- self._assert_fuzz_match('Geoff Garen', 'Geoffrey Garen', 3)
- self._assert_fuzz_match('ggaren', 'Geoffrey Garen', 0)
- # self._assert_fuzz_match('geoff', 'Geoffrey Garen', 0)
- self._assert_fuzz_match('Geoffrey', 'Geoffrey Garen', 0)
- self._assert_fuzz_match('GGaren', 'Geoffrey Garen', 0)
-
- def integration_test_contributors_greg_bolsinga(self):
- pass # self._assert_fuzz_match('Greg', 'Greg Bolsinga', 0)
-
- def integration_test_contributors_holger_freyther(self):
- self._assert_fuzz_match('Holger', 'Holger Freyther', 0)
- self._assert_fuzz_match('Holger Hans Peter Freyther', 'Holger Freyther', 11)
-
- def integration_test_contributors_jon_sullivan(self):
- # self._assert_fuzz_match('john', 'John Sullivan', 0)
- self._assert_fuzz_match('sullivan', 'John Sullivan', 0)
-
- def integration_test_contributors_jon_honeycutt(self):
- self._assert_fuzz_match('John Honeycutt', 'Jon Honeycutt', 1)
- # self._assert_fuzz_match('Jon', 'Jon Honeycutt', 0)
-
- def integration_test_contributors_jon_honeycutt(self):
- # self._assert_fuzz_match('justin', 'Justin Garcia', 0)
- self._assert_fuzz_match('justing', 'Justin Garcia', 0)
-
- def integration_test_contributors_joseph_pecoraro(self):
- self._assert_fuzz_match('Joe Pecoraro', 'Joseph Pecoraro', 3)
-
- def integration_test_contributors_ken_kocienda(self):
- self._assert_fuzz_match('ken', 'Ken Kocienda', 0)
- self._assert_fuzz_match('kocienda', 'Ken Kocienda', 0)
-
- def integration_test_contributors_kenneth_russell(self):
- self._assert_fuzz_match('Ken Russell', 'Kenneth Russell', 4)
-
- def integration_test_contributors_kevin_decker(self):
- self._assert_fuzz_match('kdecker', 'Kevin Decker', 0)
-
- def integration_test_contributors_kevin_mccullough(self):
- self._assert_fuzz_match('Kevin M', 'Kevin McCullough', 0)
- self._assert_fuzz_match('Kevin McCulough', 'Kevin McCullough', 1)
- self._assert_fuzz_match('mccullough', 'Kevin McCullough', 0)
-
- def integration_test_contributors_lars_knoll(self):
- self._assert_fuzz_match('lars', 'Lars Knoll', 0)
-
- def integration_test_contributors_lars_weintraub(self):
- self._assert_fuzz_match('levi', 'Levi Weintraub', 0)
-
- def integration_test_contributors_maciej_stachowiak(self):
- self._assert_fuzz_match('Maciej', 'Maciej Stachowiak', 0)
- # self._assert_fuzz_match('mjs', 'Maciej Stachowiak', 0)
- self._assert_fuzz_match('Maciej S', 'Maciej Stachowiak', 0)
-
- def integration_test_contributors_mark_rowe(self):
- # self._assert_fuzz_match('Mark', 'Mark Rowe', 0)
- self._assert_fuzz_match('bdash', 'Mark Rowe', 0)
- self._assert_fuzz_match('mrowe', 'Mark Rowe', 0)
- # self._assert_fuzz_match('Brian Dash', 'Mark Rowe', 0)
-
- def integration_test_contributors_nikolas_zimmermann(self):
- # self._assert_fuzz_match('Niko', 'Nikolas Zimmermann', 1)
- self._assert_fuzz_match('Niko Zimmermann', 'Nikolas Zimmermann', 3)
- self._assert_fuzz_match('Nikolas', 'Nikolas Zimmermann', 0)
-
- def integration_test_contributors_oliver_hunt(self):
- # self._assert_fuzz_match('Oliver', 'Oliver Hunt', 0)
- self._assert_fuzz_match('Ollie', 'Oliver Hunt', 1)
- self._assert_fuzz_match('Olliej', 'Oliver Hunt', 0)
- self._assert_fuzz_match('Olliej Hunt', 'Oliver Hunt', 3)
- self._assert_fuzz_match('olliej', 'Oliver Hunt', 0)
- self._assert_fuzz_match('ollie', 'Oliver Hunt', 1)
- self._assert_fuzz_match('ollliej', 'Oliver Hunt', 1)
-
- def integration_test_contributors_oliver_hunt(self):
- self._assert_fuzz_match('Richard', 'Richard Williamson', 0)
- self._assert_fuzz_match('rjw', 'Richard Williamson', 0)
-
- def integration_test_contributors_oliver_hunt(self):
- self._assert_fuzz_match('Rob', 'Rob Buis', 0)
- self._assert_fuzz_match('rwlbuis', 'Rob Buis', 0)
-
- def integration_test_contributors_rniwa(self):
- self._assert_fuzz_match('rniwa@webkit.org', 'Ryosuke Niwa', 0)
-
- def disabled_integration_test_contributors_simon_fraser(self):
- pass # self._assert_fuzz_match('Simon', 'Simon Fraser', 0)
-
- def integration_test_contributors_steve_falkenburg(self):
- self._assert_fuzz_match('Sfalken', 'Steve Falkenburg', 0)
- # self._assert_fuzz_match('Steve', 'Steve Falkenburg', 0)
-
- def integration_test_contributors_sam_weinig(self):
- self._assert_fuzz_match('Sam', 'Sam Weinig', 0)
- # self._assert_fuzz_match('Weinig Sam', 'weinig', 0)
- self._assert_fuzz_match('Weinig', 'Sam Weinig', 0)
- self._assert_fuzz_match('Sam W', 'Sam Weinig', 0)
- self._assert_fuzz_match('Sammy Weinig', 'Sam Weinig', 2)
-
- def integration_test_contributors_tim_omernick(self):
- # self._assert_fuzz_match('timo', 'Tim Omernick', 0)
- self._assert_fuzz_match('TimO', 'Tim Omernick', 0)
- # self._assert_fuzz_match('Timo O', 'Tim Omernick', 0)
- # self._assert_fuzz_match('Tim O.', 'Tim Omernick', 0)
- self._assert_fuzz_match('Tim O', 'Tim Omernick', 0)
-
- def integration_test_contributors_timothy_hatcher(self):
- # self._assert_fuzz_match('Tim', 'Timothy Hatcher', 0)
- # self._assert_fuzz_match('Tim H', 'Timothy Hatcher', 0)
- self._assert_fuzz_match('Tim Hatcher', 'Timothy Hatcher', 4)
- self._assert_fuzz_match('Tim Hatcheri', 'Timothy Hatcher', 5)
- self._assert_fuzz_match('timothy', 'Timothy Hatcher', 0)
- self._assert_fuzz_match('thatcher', 'Timothy Hatcher', 1)
- self._assert_fuzz_match('xenon', 'Timothy Hatcher', 0)
- self._assert_fuzz_match('Hatcher', 'Timothy Hatcher', 0)
- # self._assert_fuzz_match('TimH', 'Timothy Hatcher', 0)
-
- def integration_test_contributors_tor_arne_vestbo(self):
- self._assert_fuzz_match('Tor Arne', u"Tor Arne Vestb\u00f8", 1) # Matches IRC nickname
-
- def integration_test_contributors_vicki_murley(self):
- self._assert_fuzz_match('Vicki', u"Vicki Murley", 0)
-
- def integration_test_contributors_zack_rusin(self):
- self._assert_fuzz_match('Zack', 'Zack Rusin', 0)
diff --git a/Tools/Scripts/webkitpy/common/config/committervalidator.py b/Tools/Scripts/webkitpy/common/config/committervalidator.py
deleted file mode 100644
index 89a4866be..000000000
--- a/Tools/Scripts/webkitpy/common/config/committervalidator.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (c) 2010 Research In Motion Limited. 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.
-
-from webkitpy.common.config import committers, urls
-
-
-class CommitterValidator(object):
- def __init__(self, host):
- self.host = host
-
- def _committers_py_path(self):
- # extension can sometimes be .pyc, we always want .py
- committers_path = self.host.filesystem.path_to_module(committers.__name__)
- (path, extension) = self.host.filesystem.splitext(committers_path)
- path = self.host.filesystem.relpath(path, self.host.scm().checkout_root)
- return ".".join([path, "py"])
-
- def _flag_permission_rejection_message(self, setter_email, flag_name):
- # This could be queried from the tool.
- queue_name = "commit-queue"
- committers_list = self._committers_py_path()
- message = "%s does not have %s permissions according to %s." % (
- setter_email,
- flag_name,
- urls.view_source_url(committers_list))
- message += "\n\n- If you do not have %s rights please read %s for instructions on how to use bugzilla flags." % (
- flag_name, urls.contribution_guidelines)
- message += "\n\n- If you have %s rights please correct the error in %s by adding yourself to the file (no review needed). " % (
- flag_name, committers_list)
- message += "The %s restarts itself every 2 hours. After restart the %s will correctly respect your %s rights." % (
- queue_name, queue_name, flag_name)
- return message
-
- def _validate_setter_email(self, patch, result_key, rejection_function):
- committer = getattr(patch, result_key)()
- # If the flag is set, and we don't recognize the setter, reject the flag!
- setter_email = patch._attachment_dictionary.get("%s_email" % result_key)
- if setter_email and not committer:
- rejection_function(patch.id(), self._flag_permission_rejection_message(setter_email, result_key))
- return False
- return True
-
- def _reject_patch_if_flags_are_invalid(self, patch):
- return (self._validate_setter_email(patch, "reviewer", self.reject_patch_from_review_queue)
- and self._validate_setter_email(patch, "committer", self.reject_patch_from_commit_queue))
-
- def patches_after_rejecting_invalid_commiters_and_reviewers(self, patches):
- return [patch for patch in patches if self._reject_patch_if_flags_are_invalid(patch)]
-
- def reject_patch_from_commit_queue(self,
- attachment_id,
- additional_comment_text=None):
- comment_text = "Rejecting attachment %s from commit-queue." % attachment_id
- if additional_comment_text:
- comment_text += "\n\n%s" % additional_comment_text
- self.host.bugs.set_flag_on_attachment(attachment_id,
- "commit-queue",
- "-",
- comment_text)
-
- def reject_patch_from_review_queue(self,
- attachment_id,
- additional_comment_text=None):
- comment_text = "Rejecting attachment %s from review queue." % attachment_id
- if additional_comment_text:
- comment_text += "\n\n%s" % additional_comment_text
- self.host.bugs.set_flag_on_attachment(attachment_id,
- 'review',
- '-',
- comment_text)
diff --git a/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py b/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py
deleted file mode 100644
index e8aa88721..000000000
--- a/Tools/Scripts/webkitpy/common/config/committervalidator_unittest.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from .committervalidator import CommitterValidator
-
-
-class CommitterValidatorTest(unittest.TestCase):
- def test_flag_permission_rejection_message(self):
- validator = CommitterValidator(MockHost())
- self.assertEqual(validator._committers_py_path(), "Tools/Scripts/webkitpy/common/config/committers.py")
- expected_messsage = """foo@foo.com does not have review permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.
-
-- If you do not have review rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.
-
-- If you have review rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed). The commit-queue restarts itself every 2 hours. After restart the commit-queue will correctly respect your review rights."""
- self.assertMultiLineEqual(validator._flag_permission_rejection_message("foo@foo.com", "review"), expected_messsage)
diff --git a/Tools/Scripts/webkitpy/common/config/contributionareas.py b/Tools/Scripts/webkitpy/common/config/contributionareas.py
deleted file mode 100644
index effcd22a0..000000000
--- a/Tools/Scripts/webkitpy/common/config/contributionareas.py
+++ /dev/null
@@ -1,212 +0,0 @@
-# Copyright (c) 2011 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.
-
-import re
-
-
-class _Intersection(object):
- def __init__(self, *tokens):
- self._tokens = tokens
-
- def matches(self, tokens):
- for token in self._tokens:
- if token not in tokens and (token + 's') not in tokens:
- return False
- return True
-
-
-class _Area(object):
- def __init__(self, name, tokens=None):
- self._name = name
- self._tokens = tokens if tokens else [self._name_to_token(name)]
-
- def _name_to_token(self, word):
- token = word.lower()
- return token[:-1] if word[-1] == 's' else token
-
- def matches(self, tokens):
- # FIXME: Support pluraization properly
- for token in self._tokens:
- if isinstance(token, _Intersection):
- if token.matches(tokens):
- return True
- elif token in tokens or (token + 's') in tokens:
- return True
- return False
-
- def name(self):
- return self._name
-
- def tokens(self):
- return self._tokens
-
-contribution_areas = [
- _Area('ARM JIT', ['arm']),
-# FIXME: 'Accelerated compositing / GPU acceleration'
- _Area('Accessibility'),
- _Area('Android port', ['android']),
- _Area('Animation', ['animation', 'animator']),
- _Area('Apple\'s Windows port', ['win', 'windows']), # FIXME: need to exclude chromium...
- _Area('Autotools Build', ['autotools']),
- _Area('Basic types and data structures (WTF)', ['wtf']),
-# FIXME: 'Bidirectional text'
-# FIXME: 'Build/test infrastructure (stuff under Tools/Scripts)'
- _Area('CMake Build', ['cmakelist']),
- _Area('CSS (Cascading Style Sheets)', ['css']),
- _Area('CSS Transforms', [_Intersection('css', 'transforms')]),
- _Area('CSS/SVG Filters', [_Intersection('css', 'filters'), _Intersection('svg', 'filters')]),
- _Area('CURL HTTP Backend', ['CURL']),
- _Area('Resource Cache', [_Intersection('loader', 'cache')]),
- _Area('Memory Cache', [_Intersection('graphics', 'cache')]),
- _Area('Cairo'),
- _Area('Canvas'),
- _Area('Chromium Linux', [_Intersection('chromium', 'linux')]),
-# FIXME: 'Commit Queue'
- _Area('Core DOM', ['dom']),
- _Area('Core Graphics', ['cg']),
- _Area('Bindings'),
- _Area('DOM Storage', ['storage']),
- _Area('Drag and Drop', ['drag']),
- _Area('DumpRenderTree'),
- _Area('EFL', ['efl']),
- _Area('Editing / Selection', ['editing']),
- _Area('Event Handling', ['event']),
- _Area('FastMalloc'),
- _Area('File API', ['fileapi']),
- _Area('Fonts'),
- _Area('Forms'),
-# FIXME: 'Frame Flattening'
- _Area('Frame Loader'),
-# FIXME: 'General' Maybe auto-detect people contributing to all subdirectories?
- _Area('Geolocation API', ['geolocation']),
- _Area('Graphics', ['graphics']),
- _Area('HTML', ['html']),
- _Area('HTML Parser', [_Intersection('html', 'parser')]), # FIXME: matches html/track/WebVTTParser.cpp
- _Area('HTML5 Media Support', ['media']),
- _Area('History', ['history']),
-# FIXME: 'Hit testing'
- _Area('Image Decoder', ['imagedecoder']),
-# FIXME: 'Input methods'
- _Area('JSC Bindings', [_Intersection('bindings', 'js')]),
- _Area('JavaScriptCore'),
- _Area('JavaScriptCore Regular Expressions', [_Intersection('JavaScriptCore', 'regexp')]),
-# FIXME: 'Layout tests' but what does it mean to say you're an expert on layout tests? Maybe worked on tools?
- _Area('Loader', ['loader']),
- _Area('MathML'),
- _Area('Memory Use / Leaks', ['leaks']), # Probably need more tokens
- _Area('MessagePorts'),
- _Area('Network', [_Intersection('platform', 'network')]),
- _Area('new-run-webkit-tests', ['layout_tests']),
- _Area('OpenVG graphics backend', ['openvg']),
-# FIXME: 'Performance'
- _Area('Plug-ins', ['plugins']),
- _Area('Printing', ['printing', 'print']),
- _Area('Rendering'),
- _Area('SVG (Scalable Vector Graphics)', ['svg']),
- _Area('Scrollbars', ['scroll']),
- _Area('Security'), # Probably need more tokens
-# FIXME: 'Shadow DOM'
- _Area('Soup Network Backend', ['soup']),
-# FIXME: 'Spell Checking' just need tokens
- _Area('Tables', ['htmltable', 'rendertable']),
-# FIXME: 'Text Encoding'
-# FIXME: 'Text Layout'
- _Area('The Chromium Port', ['chromium']),
- _Area('The EFLWebKit Port', ['efl']),
- _Area('The WebKitGTK+ Port', ['gtk']),
- _Area('The Haiku Port', ['haiku']),
- _Area('The QtWebKit Port', ['qt']),
- _Area('The WinCE Port', ['wince']),
- _Area('The WinCairo Port', ['cairo']),
- _Area('Threading', ['thread']),
- _Area('Tools'),
- _Area('Touch Support', ['touch']),
- _Area('Transforms', ['transforms']), # There's also CSS transforms
- _Area('Transitions', ['transitions']), # This only matches transition events at the moment
- _Area('URL Parsing', ['KURL']), # Probably need more tokens
- _Area('V8', ['v8']),
- _Area('V8 Bindings', [_Intersection('bindings', 'v8')]),
- _Area('Web Inspector / Developer Tools', ['inspector']),
- _Area('Web Timing', ['PerformanceNavigation', 'PerformanceTiming']), # more tokens?
- _Area('WebArchive'),
- _Area('WebCore Icon Database', ['icon']),
- _Area('WebGL', ['webgl']),
- _Area('WebKit Websites', ['websites']),
- _Area('WebKit2'),
- _Area('WebSQL Databases', [_Intersection('storage', 'database')]),
- _Area('WebSockets'),
- _Area('Workers'),
- _Area('XML'),
- _Area('XMLHttpRequest'),
- _Area('XSLT'),
- _Area('XSSAuditor'),
- _Area('WebKit API Tests', ['TestWebKitAPI']),
- _Area('webkit-patch', [_Intersection('webkitpy', 'commands')]),
-]
-
-
-class ContributionAreas(object):
- def __init__(self, filesystem, table=contribution_areas):
- self._filesystem = filesystem
- self._contribution_areas = table
-
- def names(self):
- return [area.name() for area in self._contribution_areas]
-
- def _split_path(self, path):
- result = []
- while path and len(path):
- next_path, tail = self._filesystem.split(path)
- if path == next_path:
- break
- if tail and len(tail):
- result.append(tail)
- path = next_path
- return result
-
- def _split_camelcase(self, name, transform=lambda x: x):
- result = []
- while name and len(name):
- m = re.match('^([A-Z][a-z0-9]+)|([A-Z0-9]+(?=([A-Z][a-z0-9]|\.|$)))', name)
- if m:
- result.append(transform(m.group(0)))
- name = name[m.end():]
- else:
- return result
- return result
-
- def areas_for_touched_files(self, touched_files):
- areas = set()
- for file_path in touched_files:
- split_file_path = self._split_path(file_path)
- tokenized_file_path = None
- tokenized_file_path = sum([self._split_camelcase(token, lambda x: x.lower()) for token in split_file_path], [])
- for area in self._contribution_areas:
- if area.matches(split_file_path) or area.matches(tokenized_file_path):
- areas.add(area.name())
- return areas
diff --git a/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py b/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py
deleted file mode 100644
index 17d4fe718..000000000
--- a/Tools/Scripts/webkitpy/common/config/contributionareas_unittest.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (c) 2011 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.
-
-import unittest2 as unittest
-
-from .contributionareas import _Intersection
-from .contributionareas import _Area
-from .contributionareas import ContributionAreas
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-
-
-class ContributionAreasTest(unittest.TestCase):
-
- def test_contribution(self):
- self.assertEqual(_Area('CSS').tokens(), ['css'])
- self.assertEqual(_Area('Forms', ['input']).tokens(), ['input'])
-
- def _assert_areas_for_touched_files(self, areas, files, expected_areas):
- self.assertEqual(areas.areas_for_touched_files(files), set(expected_areas))
-
- def test_areas_for_touched_files(self):
- areas = ContributionAreas(MockFileSystem(), [
- _Area('CSS'),
- _Area('HTML'),
- _Area('Forms', ['forms', 'input']),
- _Area('CSS Transforms', [_Intersection('css', 'transforms')]),
- ])
- self._assert_areas_for_touched_files(areas, [], [])
- self._assert_areas_for_touched_files(areas, ['WebCore/css'], ['CSS'])
- self._assert_areas_for_touched_files(areas, ['WebCore/html/'], ['HTML'])
- self._assert_areas_for_touched_files(areas, ['WebCore/css/CSSStyleSelector.cpp', 'WebCore/html/HTMLIFrameElement.h'], ['CSS', 'HTML'])
- self._assert_areas_for_touched_files(areas, ['WebCore'], [])
- self._assert_areas_for_touched_files(areas, ['WebCore/html2'], [])
- self._assert_areas_for_touched_files(areas, ['WebCore/html/HTMLInputElement.cpp'], ['HTML', 'Forms'])
- self._assert_areas_for_touched_files(areas, ['WebCore/svg/transforms'], [])
- self._assert_areas_for_touched_files(areas, ['WebCore/css/transforms'], ['CSS', 'CSS Transforms'])
diff --git a/Tools/Scripts/webkitpy/common/config/contributors.json b/Tools/Scripts/webkitpy/common/config/contributors.json
deleted file mode 100644
index d2fb18910..000000000
--- a/Tools/Scripts/webkitpy/common/config/contributors.json
+++ /dev/null
@@ -1,4184 +0,0 @@
-{
- "Committers" : {
- "Aaron Boodman" : {
- "emails" : [
- "aa@chromium.org"
- ],
- "nicks" : [
- "aboodman"
- ]
- },
- "Aaron Colwell" : {
- "emails" : [
- "acolwell@chromium.org"
- ],
- "nicks" : [
- "acolwell"
- ]
- },
- "Adam Bergkvist" : {
- "emails" : [
- "adam.bergkvist@ericsson.com"
- ],
- "nicks" : [
- "adambe"
- ]
- },
- "Adam Kallai" : {
- "emails" : [
- "kadam@inf.u-szeged.hu"
- ],
- "nicks" : [
- "kadam"
- ]
- },
- "Adam Klein" : {
- "emails" : [
- "adamk@chromium.org"
- ],
- "nicks" : [
- "aklein"
- ]
- },
- "Adam Langley" : {
- "emails" : [
- "agl@chromium.org"
- ],
- "expertise" : "All Chromium Linux Code (yes, all of it)",
- "nicks" : [
- "agl"
- ]
- },
- "Ademar de Souza Reis Jr" : {
- "emails" : [
- "ademar.reis@gmail.com",
- "ademar@webkit.org"
- ],
- "nicks" : [
- "ademar"
- ]
- },
- "Adenilson Cavalcanti" : {
- "emails" : [
- "cavalcantii@gmail.com"
- ],
- "nicks" : [
- "Savago"
- ]
- },
- "Albert J. Wong" : {
- "emails" : [
- "ajwong@chromium.org"
- ]
- },
- "Alec Flett" : {
- "emails" : [
- "alecflett@chromium.org",
- "alecflett@google.com"
- ],
- "nicks" : [
- "alecf"
- ]
- },
- "Alex Christensen" : {
- "emails" : [
- "achristensen@apple.com",
- "alex.christensen@flexsim.com"
- ],
- "expertise" : "Win64",
- "nicks" : [
- "alexchristensen"
- ]
- },
- "Alexander F\u00e6r\u00f8y" : {
- "emails" : [
- "ahf@0x90.dk",
- "alexander.faeroy@nokia.com"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "ahf"
- ]
- },
- "Alexander Kellett" : {
- "emails" : [
- "lypanov@mac.com",
- "a-lists001@lypanov.net",
- "lypanov@kde.org"
- ],
- "nicks" : [
- "lypanov"
- ]
- },
- "Alexandre Elias" : {
- "emails" : [
- "aelias@chromium.org",
- "aelias@google.com"
- ],
- "nicks" : [
- "aelias"
- ]
- },
- "Alice Boxhall" : {
- "emails" : [
- "aboxhall@chromium.org"
- ],
- "nicks" : [
- "aboxhall"
- ]
- },
- "Alok Priyadarshi" : {
- "emails" : [
- "alokp@chromium.org"
- ],
- "nicks" : [
- "alokp"
- ]
- },
- "Ami Fischman" : {
- "emails" : [
- "fischman@chromium.org",
- "fischman@google.com"
- ],
- "nicks" : [
- "fischman"
- ]
- },
- "Amruth Raj" : {
- "emails" : [
- "amruthraj@motorola.com"
- ],
- "nicks" : [
- "amruthraj"
- ]
- },
- "Andras Becsi" : {
- "emails" : [
- "abecsi@webkit.org",
- "andras.becsi@digia.com"
- ],
- "expertise" : "The QtWebKit Port, Tools, Layout and Rendering",
- "nicks" : [
- "bbandix"
- ]
- },
- "Andre Boule" : {
- "emails" : [
- "aboule@apple.com"
- ]
- },
- "Andrei Bucur" : {
- "emails" : [
- "abucur@adobe.com"
- ],
- "nicks" : [
- "abucur"
- ]
- },
- "Andrei Popescu" : {
- "emails" : [
- "andreip@google.com"
- ],
- "nicks" : [
- "andreip"
- ]
- },
- "Andrew Lo" : {
- "emails" : [
- "anlo@blackberry.com",
- "anlo@rim.com",
- "andrewlo@gmail.com"
- ],
- "nicks" : [
- "andrewlo"
- ]
- },
- "Andrew Scherkus" : {
- "emails" : [
- "scherkus@chromium.org"
- ],
- "nicks" : [
- "scherkus"
- ]
- },
- "Andrew Wellington" : {
- "emails" : [
- "andrew@webkit.org",
- "proton@wiretapped.net"
- ],
- "nicks" : [
- "proton"
- ]
- },
- "Andrey Adaykin" : {
- "emails" : [
- "aandrey@chromium.org"
- ],
- "expertise" : "Developer Tools, Web Inspector",
- "nicks" : [
- "aandrey"
- ]
- },
- "Andrey Kosyakov" : {
- "emails" : [
- "caseq@chromium.org"
- ],
- "nicks" : [
- "caseq"
- ]
- },
- "Andy Wingo" : {
- "emails" : [
- "wingo@igalia.com"
- ],
- "expertise" : "JavaScriptCore, the WebKitGTK+ port",
- "nicks" : [
- "wingo"
- ]
- },
- "Anna Cavender" : {
- "emails" : [
- "annacc@chromium.org"
- ],
- "nicks" : [
- "annacc"
- ]
- },
- "Anthony Ricaud" : {
- "emails" : [
- "rik@webkit.org"
- ],
- "expertise" : "Web Inspector",
- "nicks" : [
- "rik"
- ]
- },
- "Antoine Labour" : {
- "emails" : [
- "piman@chromium.org"
- ],
- "nicks" : [
- "piman"
- ]
- },
- "Antoine Quint" : {
- "emails" : [
- "graouts@apple.com"
- ],
- "nicks" : [
- "graouts"
- ]
- },
- "Anton D'Auria" : {
- "emails" : [
- "adauria@apple.com"
- ],
- "nicks" : [
- "antonlefou"
- ]
- },
- "Anton Muhin" : {
- "emails" : [
- "antonm@chromium.org"
- ],
- "nicks" : [
- "antonm"
- ]
- },
- "Arko Saha" : {
- "emails" : [
- "arko@motorola.com"
- ],
- "nicks" : [
- "arkos"
- ]
- },
- "Arno Renevier" : {
- "emails" : [
- "a.renevier@samsung.com"
- ],
- "nicks" : [
- "arno"
- ]
- },
- "Arpita Bahuguna" : {
- "emails" : [
- "a.bah@samsung.com"
- ],
- "nicks" : [
- "arpitab"
- ]
- },
- "Arvid Nilsson" : {
- "emails" : [
- "anilsson@blackberry.com",
- "anilsson@rim.com"
- ],
- "nicks" : [
- "anilsson"
- ]
- },
- "Balazs Kelemen" : {
- "emails" : [
- "kbalazs@webkit.org",
- "b.kelemen@sisa.samsung.com"
- ],
- "expertise" : "The QtWebKit Port, WebKit2",
- "nicks" : [
- "kbalazs"
- ]
- },
- "Bear Travis" : {
- "emails" : [
- "betravis@adobe.com"
- ],
- "nicks" : [
- "betravis"
- ]
- },
- "Ben Murdoch" : {
- "emails" : [
- "benm@google.com"
- ],
- "nicks" : [
- "benm"
- ]
- },
- "Ben Wells" : {
- "emails" : [
- "benwells@chromium.org"
- ],
- "nicks" : [
- "benwells"
- ]
- },
- "Benjamin C Meyer" : {
- "emails" : [
- "ben@meyerhome.net",
- "ben@webkit.org"
- ],
- "nicks" : [
- "icefox"
- ]
- },
- "Benjamin Kalman" : {
- "emails" : [
- "kalman@chromium.org",
- "kalman@google.com"
- ],
- "nicks" : [
- "kalman"
- ]
- },
- "Benjamin Otte" : {
- "emails" : [
- "otte@gnome.org",
- "otte@webkit.org"
- ],
- "expertise" : "WebKitGTK+ port, GTK+ lead developer",
- "nicks" : [
- "otte"
- ]
- },
- "Bill Budge" : {
- "emails" : [
- "bbudge@chromium.org",
- "bbudge@gmail.com"
- ],
- "nicks" : [
- "bbudge"
- ]
- },
- "Brett Wilson" : {
- "emails" : [
- "brettw@chromium.org"
- ],
- "expertise" : "The Chromium Port, Graphics, Skia, URL Parsing",
- "nicks" : [
- "brettx"
- ]
- },
- "Bruno de Oliveira Abinader" : {
- "emails" : [
- "bruno.d@partner.samsung.com",
- "bruno.abinader@basyskom.com",
- "brunoabinader@gmail.com"
- ],
- "expertise" : "The QtWebKit Port, CSS, Layout and Rendering",
- "nicks" : [
- "abinader"
- ]
- },
- "Byungwoo Lee" : {
- "emails" : [
- "bw80.lee@samsung.com",
- "bw80.lee@gmail.com"
- ],
- "expertise" : "The EFLWebKit Port",
- "nicks" : [
- "byungwoo"
- ]
- },
- "Cameron McCormack" : {
- "emails" : [
- "cam@mcc.id.au",
- "cam@webkit.org"
- ],
- "nicks" : [
- "heycam"
- ]
- },
- "Carol Szabo" : {
- "emails" : [
- "carol@webkit.org",
- "carol.szabo@nokia.com"
- ],
- "nicks" : [
- "cszabo1"
- ]
- },
- "Cary Clark" : {
- "emails" : [
- "caryclark@google.com",
- "caryclark@chromium.org"
- ],
- "nicks" : [
- "caryclark"
- ]
- },
- "Charles Reis" : {
- "emails" : [
- "creis@chromium.org"
- ],
- "nicks" : [
- "creis"
- ]
- },
- "Charles Wei" : {
- "emails" : [
- "charles.wei@torchmobile.com.cn"
- ],
- "nicks" : [
- "cswei"
- ]
- },
- "Chris Evans" : {
- "emails" : [
- "cevans@google.com",
- "cevans@chromium.org"
- ],
- "expertise" : "Security"
- },
- "Chris Guillory" : {
- "emails" : [
- "ctguil@chromium.org",
- "chris.guillory@google.com"
- ],
- "nicks" : [
- "ctguil"
- ]
- },
- "Chris Petersen" : {
- "emails" : [
- "cpetersen@apple.com"
- ],
- "expertise" : "Performance testing, Qualification testing",
- "nicks" : [
- "cpetersen"
- ]
- },
- "Christian Dywan" : {
- "emails" : [
- "christian@twotoasts.de",
- "christian@webkit.org",
- "christian@lanedo.com"
- ]
- },
- "Claudio Saavedra" : {
- "emails" : [
- "csaavedra@igalia.com"
- ],
- "expertise" : "WebKitGTK+ port, Epiphany developer, HTML Editing",
- "nicks" : [
- "claudio___"
- ]
- },
- "Collin Jackson" : {
- "emails" : [
- "collinj@webkit.org"
- ],
- "nicks" : [
- "collinjackson"
- ]
- },
- "Cris Neckar" : {
- "emails" : [
- "cdn@chromium.org"
- ],
- "nicks" : [
- "cneckar"
- ]
- },
- "Dan Winship" : {
- "emails" : [
- "danw@gnome.org"
- ],
- "nicks" : [
- "danw"
- ]
- },
- "Dana Jansens" : {
- "emails" : [
- "danakj@chromium.org"
- ],
- "nicks" : [
- "danakj"
- ]
- },
- "Daniel Cheng" : {
- "emails" : [
- "dcheng@chromium.org"
- ],
- "nicks" : [
- "dcheng"
- ]
- },
- "Dave Barton" : {
- "emails" : [
- "dbarton@mathscribe.com"
- ],
- "expertise" : "MathML",
- "nicks" : [
- "davebarton"
- ]
- },
- "Dave Tharp" : {
- "emails" : [
- "dtharp@codeaurora.org"
- ],
- "nicks" : [
- "dtharp"
- ]
- },
- "David Farler" : {
- "emails" : [
- "dfarler@apple.com"
- ],
- "nicks" : [
- "dfarler"
- ]
- },
- "David Grogan" : {
- "emails" : [
- "dgrogan@chromium.org",
- "dgrogan@google.com"
- ],
- "expertise" : "IndexedDB",
- "nicks" : [
- "dgrogan"
- ]
- },
- "David Michael Barr" : {
- "emails" : [
- "davidbarr@chromium.org",
- "davidbarr@google.com",
- "b@rr-dav.id.au"
- ],
- "nicks" : [
- "barrbrain"
- ]
- },
- "David Smith" : {
- "emails" : [
- "catfish.man@gmail.com",
- "dsmith@webkit.org"
- ],
- "nicks" : [
- "catfishman"
- ]
- },
- "Diego Gonzalez" : {
- "emails" : [
- "diegohcg@webkit.org",
- "diego.gonzalez@openbossa.org"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "diegohcg"
- ]
- },
- "Dinu Jacob" : {
- "emails" : [
- "dinu.s.jacob@intel.com"
- ],
- "nicks" : [
- "dsjacob"
- ]
- },
- "Dmitry Gorbik" : {
- "emails" : [
- "dgorbik@apple.com"
- ],
- "nicks" : [
- "dgorbik"
- ]
- },
- "Dmitry Lomov" : {
- "emails" : [
- "dslomov@google.com",
- "dslomov@chromium.org"
- ],
- "expertise" : "V8 bindings, Workers, gtest ",
- "nicks" : [
- "dslomov"
- ]
- },
- "Dominic Cooney" : {
- "emails" : [
- "dominicc@chromium.org",
- "dominicc@google.com"
- ],
- "nicks" : [
- "dominicc"
- ]
- },
- "Dominic Mazzoni" : {
- "emails" : [
- "dmazzoni@google.com",
- "dmazzoni@chromium.org"
- ],
- "nicks" : [
- "dmazzoni"
- ]
- },
- "Dominik R\u00f6ttsches" : {
- "emails" : [
- "dominik.rottsches@intel.com",
- "d-r@roettsches.de"
- ],
- "expertise" : "WebKit EFL, Cairo HarfBuzz Support, GraphicsContextCairo",
- "nicks" : [
- "drott"
- ]
- },
- "Dongseong Hwang" : {
- "emails" : [
- "dongseong.hwang@intel.com",
- "luxtella@gmail.com",
- "luxtella@company100.net"
- ],
- "expertise" : "Accelerated Compositing, Canvas, CSS Shaders",
- "nicks" : [
- "dshwang"
- ]
- },
- "Dongwoo Joshua Im" : {
- "emails" : [
- "dw.im@samsung.com",
- "dwim79@gmail.com"
- ],
- "expertise" : "The EFLWebKit Port",
- "nicks" : [
- "dwim"
- ]
- },
- "Drew Wilson" : {
- "emails" : [
- "atwilson@chromium.org"
- ],
- "expertise" : "The Chromium Port, Workers, MessagePorts",
- "nicks" : [
- "atwilson"
- ]
- },
- "Eli Fidler" : {
- "emails" : [
- "efidler@blackberry.com",
- "efidler@rim.com"
- ],
- "nicks" : [
- "efidler"
- ]
- },
- "Elliot Poger" : {
- "emails" : [
- "epoger@chromium.org"
- ],
- "expertise" : "Skia",
- "nicks" : [
- "epoger"
- ]
- },
- "Eric Roman" : {
- "emails" : [
- "eroman@chromium.org"
- ],
- "expertise" : "The Chromium Port",
- "nicks" : [
- "eroman"
- ]
- },
- "Eric Uhrhane" : {
- "emails" : [
- "ericu@chromium.org"
- ],
- "nicks" : [
- "ericu"
- ]
- },
- "Erik Arvidsson" : {
- "emails" : [
- "arv@chromium.org"
- ],
- "nicks" : [
- "arv"
- ]
- },
- "Eugene Klyuchnikov" : {
- "emails" : [
- "eustas@chromium.org"
- ],
- "nicks" : [
- "eustas"
- ]
- },
- "Evan Martin" : {
- "emails" : [
- "evan@chromium.org"
- ],
- "nicks" : [
- "evmar"
- ]
- },
- "Evan Stade" : {
- "emails" : [
- "estade@chromium.org"
- ],
- "nicks" : [
- "estade"
- ]
- },
- "Fady Samuel" : {
- "emails" : [
- "fsamuel@chromium.org"
- ],
- "nicks" : [
- "fsamuel"
- ]
- },
- "Feng Qian" : {
- "emails" : [
- "feng@chromium.org"
- ]
- },
- "Florin Malita" : {
- "emails" : [
- "fmalita@chromium.org",
- "fmalita@google.com"
- ],
- "expertise" : "SVG (Scalable Vector Graphics)",
- "nicks" : [
- "fmalita"
- ]
- },
- "Fumitoshi Ukai" : {
- "emails" : [
- "ukai@chromium.org"
- ],
- "expertise" : "WebSockets, The Chromium Port",
- "nicks" : [
- "ukai"
- ]
- },
- "Gabor Loki" : {
- "emails" : [
- "loki@webkit.org"
- ],
- "expertise" : "The QtWebKit Port, ARM JIT, Qt BuildBot",
- "nicks" : [
- "loki04"
- ]
- },
- "Gabor Rapcsanyi" : {
- "emails" : [
- "rgabor@webkit.org",
- "rgabor@inf.u-szeged.hu"
- ],
- "expertise" : "The QtWebKit Port, Qt BuildBot, Tools",
- "nicks" : [
- "rgabor"
- ]
- },
- "Gavin Peters" : {
- "emails" : [
- "gavinp@chromium.org",
- "gavinp@webkit.org",
- "gavinp@google.com"
- ],
- "expertise" : "The Chromium Port, Resource Loading",
- "nicks" : [
- "gavinp"
- ]
- },
- "Girish Ramakrishnan" : {
- "emails" : [
- "girish@forwardbias.in",
- "ramakrishnan.girish@gmail.com"
- ],
- "expertise" : "The QtWebKit Port, Plug-ins",
- "nicks" : [
- "girishr"
- ]
- },
- "Glenn Adams" : {
- "emails" : [
- "glenn@skynav.com"
- ],
- "expertise" : "CSS, CSSOM, Complex Script Layout, Line Breaking",
- "nicks" : [
- "gasubic"
- ]
- },
- "Graham Dennis" : {
- "emails" : [
- "Graham.Dennis@gmail.com",
- "gdennis@webkit.org"
- ]
- },
- "Greg Bolsinga" : {
- "emails" : [
- "bolsinga@apple.com"
- ]
- },
- "Gregg Tavares" : {
- "emails" : [
- "gman@chromium.org",
- "gman@google.com"
- ],
- "expertise" : "WebGL, CanvasProxy",
- "nicks" : [
- "gman"
- ]
- },
- "Grzegorz Czajkowski" : {
- "emails" : [
- "g.czajkowski@samsung.com"
- ],
- "expertise" : "WebKit-EFL API, Layout Test support",
- "nicks" : [
- "grzegorz"
- ]
- },
- "Hans Muller" : {
- "emails" : [
- "giles_joplin@yahoo.com",
- "hmuller@adobe.com"
- ],
- "expertise" : "CSS Exclusions",
- "nicks" : [
- "hansmuller"
- ]
- },
- "Hans Wennborg" : {
- "emails" : [
- "hans@chromium.org"
- ],
- "nicks" : [
- "hwennborg"
- ]
- },
- "Hayato Ito" : {
- "emails" : [
- "hayato@chromium.org"
- ],
- "expertise" : "Shadow DOM, Event Handling, Reftests",
- "nicks" : [
- "hayato"
- ]
- },
- "Helder Correia" : {
- "emails" : [
- "helder.correia@nokia.com"
- ],
- "expertise" : "The QtWebKit Port, Canvas",
- "nicks" : [
- "helder"
- ]
- },
- "Hin-Chung Lam" : {
- "emails" : [
- "hclam@google.com",
- "hclam@chromium.org"
- ],
- "expertise" : "HTML5 Video, Accelerated Compositing (Chromium Port)"
- },
- "Hironori Bono" : {
- "emails" : [
- "hbono@chromium.org"
- ],
- "nicks" : [
- "hbono"
- ]
- },
- "Hugo Parente Lima" : {
- "emails" : [
- "hugo.lima@openbossa.org"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "hugopl"
- ]
- },
- "Ian Vollick" : {
- "emails" : [
- "vollick@chromium.org"
- ],
- "expertise" : "Graphics, Animations",
- "nicks" : [
- "vollick"
- ]
- },
- "Igor Trindade Oliveira" : {
- "emails" : [
- "igor.oliveira@webkit.org",
- "igor.o@sisa.samsung.com"
- ],
- "expertise" : "Animations, Accelerated Compositing, WebKitEFL",
- "nicks" : [
- "igoroliveira"
- ]
- },
- "Ilya Sherman" : {
- "emails" : [
- "isherman@chromium.org"
- ],
- "nicks" : [
- "isherman"
- ]
- },
- "Ilya Tikhonovsky" : {
- "emails" : [
- "loislo@chromium.org"
- ],
- "nicks" : [
- "loislo"
- ]
- },
- "Ivan Ivan Krsti\u0107" : {
- "emails" : [
- "ike@apple.com"
- ]
- },
- "Jacky Jiang" : {
- "emails" : [
- "jkjiang@webkit.org",
- "zkjiang008@gmail.com",
- "zhajiang@blackberry.com",
- "zhajiang@rim.com"
- ],
- "expertise" : "The BlackBerry Port, Mobile Viewport Handling",
- "nicks" : [
- "jkjiang"
- ]
- },
- "Jakob Petsovits" : {
- "emails" : [
- "jpetsovits@blackberry.com",
- "jpetsovits@rim.com",
- "jpetso@gmx.at"
- ],
- "expertise" : "The platform layer, OpenVG graphics backend",
- "nicks" : [
- "jpetso"
- ]
- },
- "Jakub Wieczorek" : {
- "emails" : [
- "jwieczorek@webkit.org"
- ],
- "nicks" : [
- "fawek"
- ]
- },
- "James Hawkins" : {
- "emails" : [
- "jhawkins@chromium.org",
- "jhawkins@google.com"
- ],
- "nicks" : [
- "jhawkins"
- ]
- },
- "James Kozianski" : {
- "emails" : [
- "koz@chromium.org",
- "koz@google.com"
- ],
- "nicks" : [
- "koz"
- ]
- },
- "James Simonsen" : {
- "emails" : [
- "simonjam@chromium.org"
- ],
- "nicks" : [
- "simonjam"
- ]
- },
- "Janos Badics" : {
- "emails" : [
- "jbadics@inf.u-szeged.hu"
- ],
- "nicks" : [
- "dicska"
- ]
- },
- "Jarred Nicholls" : {
- "emails" : [
- "jarred@webkit.org",
- "jarred@sencha.com"
- ],
- "nicks" : [
- "jarrednicholls"
- ]
- },
- "Jason Liu" : {
- "emails" : [
- "jason.liu@torchmobile.com.cn",
- "jasonliuwebkit@gmail.com"
- ],
- "nicks" : [
- "jasonliu"
- ]
- },
- "Jay Civelli" : {
- "emails" : [
- "jcivelli@chromium.org"
- ],
- "nicks" : [
- "jcivelli"
- ]
- },
- "Jeff Miller" : {
- "emails" : [
- "jeffm@apple.com"
- ],
- "nicks" : [
- "jeffm7"
- ]
- },
- "Jeffrey Pfau" : {
- "emails" : [
- "jpfau@apple.com"
- ],
- "nicks" : [
- "jpfau"
- ]
- },
- "Jenn Braithwaite" : {
- "emails" : [
- "jennb@chromium.org"
- ],
- "nicks" : [
- "jennb"
- ]
- },
- "Jens Alfke" : {
- "emails" : [
- "snej@chromium.org",
- "jens@apple.com"
- ]
- },
- "Jeremy Moskovich" : {
- "emails" : [
- "playmobil@google.com",
- "jeremy@chromium.org"
- ],
- "expertise" : "The Chromium Port on OS X",
- "nicks" : [
- "jeremymos"
- ]
- },
- "Jesus Sanchez-Palencia" : {
- "emails" : [
- "jesus@webkit.org",
- "jesus.palencia@openbossa.org"
- ],
- "expertise" : "The QtWebKit port",
- "nicks" : [
- "jeez_"
- ]
- },
- "Jia Pu" : {
- "emails" : [
- "jpu@apple.com"
- ]
- },
- "Joanmarie Diggs" : {
- "emails" : [
- "jdiggs@igalia.com"
- ],
- "expertise" : "Accessibility, WebKitGTK+",
- "nicks" : [
- "joanie"
- ]
- },
- "Joe Thomas" : {
- "emails" : [
- "joethomas@motorola.com"
- ],
- "nicks" : [
- "joethomas"
- ]
- },
- "John Abd-El-Malek" : {
- "emails" : [
- "jam@chromium.org"
- ],
- "expertise" : "The Chromium Port, Plug-ins, Workers",
- "nicks" : [
- "jam"
- ]
- },
- "John Gregg" : {
- "emails" : [
- "johnnyg@google.com",
- "johnnyg@chromium.org"
- ],
- "nicks" : [
- "johnnyg"
- ]
- },
- "John Knottenbelt" : {
- "emails" : [
- "jknotten@chromium.org"
- ],
- "nicks" : [
- "jknotten"
- ]
- },
- "Johnny Ding" : {
- "emails" : [
- "jnd@chromium.org",
- "johnnyding.webkit@gmail.com"
- ],
- "nicks" : [
- "johnnyding"
- ]
- },
- "Jon Lee" : {
- "emails" : [
- "jonlee@apple.com"
- ],
- "expertise" : "Forms, Notifications",
- "nicks" : [
- "jonlee"
- ]
- },
- "Jonathan Dong" : {
- "emails" : [
- "jonathan.dong.webkit@gmail.com",
- "jonathan.dong@torchmobile.com.cn"
- ],
- "expertise" : "The BlackBerry Port",
- "nicks" : [
- "jondong"
- ]
- },
- "Joone Hur" : {
- "emails" : [
- "joone@webkit.org",
- "joone.hur@intel.com"
- ],
- "expertise" : "The WebKitGtk+ port",
- "nicks" : [
- "joone"
- ]
- },
- "Joost de Valk" : {
- "emails" : [
- "joost@webkit.org",
- "webkit-dev@joostdevalk.nl"
- ],
- "nicks" : [
- "Altha"
- ]
- },
- "Joshua Bell" : {
- "emails" : [
- "jsbell@chromium.org",
- "jsbell@google.com"
- ],
- "nicks" : [
- "jsbell"
- ]
- },
- "Julie Parent" : {
- "emails" : [
- "jparent@google.com",
- "jparent@chromium.org"
- ],
- "expertise" : "HTML Editing",
- "nicks" : [
- "jparent"
- ]
- },
- "Jungshik Shin" : {
- "emails" : [
- "jshin@chromium.org"
- ]
- },
- "Justin Novosad" : {
- "emails" : [
- "junov@google.com",
- "junov@chromium.org"
- ],
- "nicks" : [
- "junov"
- ]
- },
- "Justin Schuh" : {
- "emails" : [
- "jschuh@chromium.org"
- ],
- "expertise" : "Security",
- "nicks" : [
- "jschuh"
- ]
- },
- "Kangil Han" : {
- "emails" : [
- "kangil.han@samsung.com",
- "kangil.han@gmail.com"
- ],
- "expertise" : "The EFLWebKit Port",
- "nicks" : [
- "kangil"
- ]
- },
- "Karen Grunberg" : {
- "emails" : [
- "kareng@chromium.org"
- ],
- "nicks" : [
- "kareng"
- ]
- },
- "Kalyan Kondapally" : {
- "emails" : [
- "kalyan.kondapally@intel.com",
- "kondapallykalyan@gmail.com"
- ],
- "nicks" : [
- "kalyank"
- ]
- },
- "Kaustubh Atrawalkar" : {
- "emails" : [
- "kaustubh@motorola.com"
- ],
- "nicks" : [
- "silverroots"
- ]
- },
- "Keishi Hattori" : {
- "emails" : [
- "keishi@webkit.org"
- ],
- "expertise" : "Web Inspector",
- "nicks" : [
- "keishi"
- ]
- },
- "Kelly Norton" : {
- "emails" : [
- "knorton@alum.mit.edu"
- ]
- },
- "Ken Buchanan" : {
- "emails" : [
- "kenrb@chromium.org"
- ],
- "nicks" : [
- "kenrb"
- ]
- },
- "Kenichi Ishibashi" : {
- "emails" : [
- "bashi@chromium.org"
- ],
- "nicks" : [
- "bashi"
- ]
- },
- "Kenji Imasaki" : {
- "emails" : [
- "imasaki@chromium.org"
- ],
- "nicks" : [
- "imasaki"
- ]
- },
- "Kent Hansen" : {
- "emails" : [
- "kent.hansen@nokia.com"
- ],
- "expertise" : "The QtWebKit Port, JavaScript/ECMAScript",
- "nicks" : [
- "khansen"
- ]
- },
- "Kihong Kwon" : {
- "emails" : [
- "kihong.kwon@samsung.com"
- ],
- "expertise" : "Device APIs(Battery Status, Vibration...), The EFLWebKit Port",
- "nicks" : [
- "kihong"
- ]
- },
- "Kim Gr\u00f6nholm" : {
- "emails" : [
- "kim.1.gronholm@nokia.com"
- ]
- },
- "Kimmo Kinnunen" : {
- "emails" : [
- "kimmo.t.kinnunen@nokia.com",
- "kimmok@iki.fi",
- "ktkinnun@webkit.org"
- ],
- "nicks" : [
- "kimmok"
- ]
- },
- "Kinuko Yasuda" : {
- "emails" : [
- "kinuko@chromium.org"
- ],
- "nicks" : [
- "kinuko"
- ]
- },
- "Kiran Muppala" : {
- "emails" : [
- "cmuppala@apple.com"
- ],
- "nicks" : [
- "kiranm"
- ]
- },
- "Konrad Piascik" : {
- "emails" : [
- "kpiascik@blackberry.com",
- "kpiascik@rim.com"
- ],
- "expertise" : "The BlackBerry Port, Web Inspector",
- "nicks" : [
- "kpiascik"
- ]
- },
- "Kristof Kosztyo" : {
- "emails" : [
- "kkristof@inf.u-szeged.hu"
- ],
- "nicks" : [
- "kkristof"
- ]
- },
- "Krzysztof Kowalczyk" : {
- "emails" : [
- "kkowalczyk@gmail.com"
- ]
- },
- "Kwang Yul Seo" : {
- "emails" : [
- "skyul@company100.com",
- "skyul@company100.net",
- "kseo@webkit.org"
- ],
- "expertise" : "HTML Parsing, Networking, WebKit2",
- "nicks" : [
- "kseo"
- ]
- },
- "Lauro Neto" : {
- "emails" : [
- "lauro.neto@openbossa.org"
- ],
- "nicks" : [
- "lmoura"
- ]
- },
- "Leandro Gracia Gil" : {
- "emails" : [
- "leandrogracia@chromium.org"
- ],
- "nicks" : [
- "leandrogracia"
- ]
- },
- "Leandro Pereira" : {
- "emails" : [
- "leandro@profusion.mobi",
- "leandro@webkit.org"
- ],
- "nicks" : [
- "acidx"
- ]
- },
- "Leo Yang" : {
- "emails" : [
- "leoyang@blackberry.com",
- "leoyang@rim.com",
- "leoyang@webkit.org",
- "leoyang.webkit@gmail.com"
- ],
- "expertise" : "The BlackBerry Port",
- "nicks" : [
- "leoyang"
- ]
- },
- "Li Yin" : {
- "emails" : [
- "li.yin@intel.com"
- ],
- "expertise" : "WebSocket, WebAudio",
- "nicks" : [
- "liyin"
- ]
- },
- "Lucas De Marchi" : {
- "emails" : [
- "demarchi@webkit.org",
- "lucas.demarchi@profusion.mobi"
- ],
- "nicks" : [
- "demarchi"
- ]
- },
- "Lucas Forschler" : {
- "emails" : [
- "lforschler@apple.com"
- ],
- "nicks" : [
- "lforschler"
- ]
- },
- "Luciano Wolf" : {
- "emails" : [
- "luciano.wolf@openbossa.org"
- ],
- "nicks" : [
- "luck"
- ]
- },
- "Luke Macpherson" : {
- "emails" : [
- "macpherson@chromium.org",
- "macpherson@google.com"
- ],
- "nicks" : [
- "macpherson"
- ]
- },
- "Mads Ager" : {
- "emails" : [
- "ager@chromium.org"
- ],
- "expertise" : "V8"
- },
- "Mahesh Kulkarni" : {
- "emails" : [
- "mahesh.kulkarni@nokia.com",
- "maheshk@webkit.org"
- ],
- "expertise" : "The Qt port, Geolocation",
- "nicks" : [
- "maheshk"
- ]
- },
- "Marcelo Lira" : {
- "emails" : [
- "marcelo.lira@openbossa.org",
- "setanta@gmail.com"
- ],
- "nicks" : [
- "setanta"
- ]
- },
- "Marcus Voltis Bulach" : {
- "emails" : [
- "bulach@chromium.org"
- ]
- },
- "Mario Sanchez Prada" : {
- "emails" : [
- "mario@webkit.org",
- "mario.prada@samsung.com"
- ],
- "expertise" : "WebKitGTK+, a11y, Epiphany/WebKit Contributor",
- "nicks" : [
- "msanchez"
- ]
- },
- "Mark Lam" : {
- "emails" : [
- "mark.lam@apple.com"
- ],
- "nicks" : [
- "mlam"
- ]
- },
- "Mark Pilgrim" : {
- "emails" : [
- "pilgrim@chromium.org"
- ],
- "nicks" : [
- "pilgrim_google"
- ]
- },
- "Mary Wu" : {
- "emails" : [
- "mawu@blackberry.com",
- "wwendy2007@gmail.com"
- ],
- "nicks" : [
- "marywu"
- ]
- },
- "Matt Delaney" : {
- "emails" : [
- "mdelaney@apple.com"
- ]
- },
- "Matt Falkenhagen" : {
- "emails" : [
- "falken@chromium.org"
- ],
- "nicks" : [
- "falken"
- ]
- },
- "Matt Lilek" : {
- "emails" : [
- "mlilek@apple.com",
- "webkit@mattlilek.com",
- "pewtermoose@webkit.org"
- ],
- "nicks" : [
- "pewtermoose"
- ]
- },
- "Matt Perry" : {
- "emails" : [
- "mpcomplete@chromium.org"
- ]
- },
- "Max Vujovic" : {
- "emails" : [
- "mvujovic@adobe.com",
- "maxvujovic@gmail.com"
- ],
- "expertise" : "CSS Shaders, CSS Filters",
- "nicks" : [
- "mvujovic"
- ]
- },
- "Maxime Britto" : {
- "emails" : [
- "maxime.britto@gmail.com",
- "britto@apple.com"
- ]
- },
- "Maxime Simon" : {
- "emails" : [
- "simon.maxime@gmail.com",
- "maxime.simon@webkit.org"
- ],
- "expertise" : "The Haiku Port",
- "nicks" : [
- "maxime.simon"
- ]
- },
- "Michael Br\u00fcning" : {
- "emails" : [
- "michael.bruning@digia.com",
- "michaelbruening@gmail.com"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "mibrunin"
- ]
- },
- "Michael Nordman" : {
- "emails" : [
- "michaeln@google.com"
- ],
- "nicks" : [
- "michaeln"
- ]
- },
- "Michael Pruett" : {
- "emails" : [
- "michael@68k.org"
- ],
- "nicks" : [
- "mpruett"
- ]
- },
- "Michelangelo De Simone" : {
- "emails" : [
- "michelangelo@webkit.org"
- ],
- "expertise" : "HTML Forms, ValidityState",
- "nicks" : [
- "michelangelo"
- ]
- },
- "Mihnea Ovidenie" : {
- "emails" : [
- "mihnea@adobe.com"
- ],
- "nicks" : [
- "mihnea"
- ]
- },
- "Mike Belshe" : {
- "emails" : [
- "mbelshe@chromium.org",
- "mike@belshe.com"
- ]
- },
- "Mike Fenton" : {
- "emails" : [
- "mifenton@blackberry.com",
- "mifenton@rim.com",
- "mike.fenton@torchmobile.com"
- ],
- "nicks" : [
- "mfenton"
- ]
- },
- "Mike Lawther" : {
- "emails" : [
- "mikelawther@chromium.org"
- ],
- "nicks" : [
- "mikelawther"
- ]
- },
- "Mike Reed" : {
- "emails" : [
- "reed@google.com"
- ],
- "nicks" : [
- "reed"
- ]
- },
- "Mike Thole" : {
- "emails" : [
- "mthole@mikethole.com",
- "mthole@apple.com"
- ],
- "expertise" : "The Chromium Port"
- },
- "Mike West" : {
- "emails" : [
- "mkwst@chromium.org",
- "mike@mikewest.org"
- ],
- "expertise" : "Content Security Policy, Chromium",
- "nicks" : [
- "mkwst"
- ]
- },
- "Mikhail Naganov" : {
- "emails" : [
- "mnaganov@chromium.org"
- ]
- },
- "Mikhail Pozdnyakov" : {
- "emails" : [
- "mikhail.pozdnyakov@intel.com"
- ],
- "nicks" : [
- "MPozdnyakov"
- ]
- },
- "Naoki Takano" : {
- "emails" : [
- "honten@chromium.org",
- "takano.naoki@gmail.com"
- ],
- "expertise" : "Forms, Autofill and popup window between WebKit and Chromium port",
- "nicks" : [
- "honten"
- ]
- },
- "Nat Duca" : {
- "emails" : [
- "nduca@chromium.org",
- "nduca@google.com"
- ],
- "nicks" : [
- "nduca"
- ]
- },
- "Nayan Kumar K" : {
- "emails" : [
- "nayankk@motorola.com",
- "nayankk@gmail.com"
- ],
- "nicks" : [
- "xc0ffee"
- ]
- },
- "Nima Ghanavatian" : {
- "emails" : [
- "nghanavatian@blackberry.com",
- "nghanavatian@rim.com",
- "nima.ghanavatian@gmail.com"
- ],
- "nicks" : [
- "nghanavatian"
- ]
- },
- "Noel Gordon" : {
- "emails" : [
- "noel.gordon@gmail.com",
- "noel@chromium.org",
- "noel@google.com"
- ],
- "nicks" : [
- "noel"
- ]
- },
- "Pablo Flouret" : {
- "emails" : [
- "pablof@motorola.com",
- "pf@parb.es"
- ],
- "nicks" : [
- "pablof"
- ]
- },
- "Pam Greene" : {
- "emails" : [
- "pam@chromium.org"
- ],
- "expertise" : "The Chromium Port, Chromium's Tools and Test Infrastructure",
- "nicks" : [
- "pamg"
- ]
- },
- "Patrick Gansterer" : {
- "emails" : [
- "paroga@paroga.com",
- "paroga@webkit.org"
- ],
- "expertise" : "CMake build system, The WinCE Port",
- "nicks" : [
- "paroga"
- ]
- },
- "Pavel Podivilov" : {
- "emails" : [
- "podivilov@chromium.org"
- ],
- "nicks" : [
- "podivilov"
- ]
- },
- "Peter Beverloo" : {
- "emails" : [
- "peter@chromium.org",
- "peter@webkit.org",
- "beverloo@google.com"
- ],
- "nicks" : [
- "beverloo"
- ]
- },
- "Peter Kasting" : {
- "emails" : [
- "pkasting@google.com",
- "pkasting@chromium.org"
- ],
- "expertise" : "Image Decoders, Scrollbars, The Chromium port",
- "nicks" : [
- "pkasting"
- ]
- },
- "Peter Varga" : {
- "emails" : [
- "pvarga@webkit.org",
- "pvarga@inf.u-szeged.hu"
- ],
- "expertise" : "JavaScriptCore Regular Expressions",
- "nicks" : [
- "stampho"
- ]
- },
- "Pierre Rossi" : {
- "emails" : [
- "pierre.rossi@gmail.com"
- ],
- "nicks" : [
- "elproxy"
- ]
- },
- "Pierre d'Herbemont" : {
- "emails" : [
- "pdherbemont@free.fr",
- "pdherbemont@apple.com"
- ],
- "expertise" : "Media Elements",
- "nicks" : [
- "pdherbemont"
- ]
- },
- "Pierre-Olivier Latour" : {
- "emails" : [
- "pol@apple.com"
- ],
- "nicks" : [
- "pol"
- ]
- },
- "Pratik Solanki" : {
- "emails" : [
- "psolanki@apple.com"
- ],
- "nicks" : [
- "psolanki"
- ]
- },
- "Pravin D" : {
- "emails" : [
- "pravind@webkit.org",
- "pravin.d@samsung.com"
- ],
- "nicks" : [
- "pravind"
- ]
- },
- "Qi Zhang" : {
- "emails" : [
- "qi.zhang02180@gmail.com"
- ],
- "nicks" : [
- "qi"
- ]
- },
- "Rafael Antognolli" : {
- "emails" : [
- "antognolli@profusion.mobi"
- ],
- "nicks" : [
- "antognolli"
- ]
- },
- "Rafael Brandao" : {
- "emails" : [
- "rafael.lobo@webkit.org"
- ],
- "nicks" : [
- "rafaelbrandao"
- ]
- },
- "Rafael Weinstein" : {
- "emails" : [
- "rafaelw@chromium.org"
- ],
- "nicks" : [
- "rafaelw"
- ]
- },
- "Raphael Kubo da Costa" : {
- "emails" : [
- "rakuco@webkit.org",
- "rakuco@FreeBSD.org",
- "raphael.kubo.da.costa@intel.com"
- ],
- "expertise" : "CMake build system, The EFLWebKit port",
- "nicks" : [
- "rakuco"
- ]
- },
- "Ravi Kasibhatla" : {
- "emails" : [
- "ravi.kasibhatla@motorola.com"
- ],
- "nicks" : [
- "kphanee"
- ]
- },
- "Raymond Toy" : {
- "emails" : [
- "rtoy@google.com",
- "rtoy@chromium.org"
- ],
- "nicks" : [
- "rtoy"
- ]
- },
- "Renata Hodovan" : {
- "emails" : [
- "reni@webkit.org"
- ],
- "nicks" : [
- "reni"
- ]
- },
- "Robert Hogan" : {
- "emails" : [
- "robert@webkit.org",
- "robert@roberthogan.net",
- "lists@roberthogan.net"
- ],
- "nicks" : [
- "rhogan"
- ]
- },
- "Robert Kroeger" : {
- "emails" : [
- "rjkroege@chromium.org"
- ],
- "nicks" : [
- "rjkroege"
- ]
- },
- "Roger Fong" : {
- "emails" : [
- "roger_fong@apple.com"
- ],
- "nicks" : [
- "rfong"
- ]
- },
- "Roland Steiner" : {
- "emails" : [
- "rolandsteiner@chromium.org"
- ]
- },
- "Ryuan Choi" : {
- "emails" : [
- "ryuan.choi@samsung.com",
- "ryuan.choi@gmail.com"
- ],
- "expertise" : "The EFLWebKit Port",
- "nicks" : [
- "ryuan"
- ]
- },
- "Sadrul Habib Chowdhury" : {
- "emails" : [
- "sadrul@chromium.org"
- ],
- "nicks" : [
- "sadrul",
- "sadrulhc"
- ]
- },
- "Sami Ky\u00f6stil\u00e4" : {
- "emails" : [
- "skyostil@chromium.org"
- ],
- "nicks" : [
- "skyostil"
- ]
- },
- "Satish Sampath" : {
- "emails" : [
- "satish@chromium.org"
- ]
- },
- "Scott Violet" : {
- "emails" : [
- "sky@chromium.org"
- ],
- "expertise" : "The Chromium Port",
- "nicks" : [
- "sky"
- ]
- },
- "Sergio Villar Senin" : {
- "emails" : [
- "svillar@igalia.com",
- "sergio@webkit.org"
- ],
- "expertise" : "WebKitGTK+ port, WebKit2",
- "nicks" : [
- "svillar"
- ]
- },
- "Shawn Singh" : {
- "emails" : [
- "shawnsingh@chromium.org"
- ],
- "nicks" : [
- "shawnsingh"
- ]
- },
- "Shinya Kawanaka" : {
- "emails" : [
- "shinyak@chromium.org"
- ],
- "nicks" : [
- "shinyak"
- ]
- },
- "Siddharth Mathur" : {
- "emails" : [
- "siddharth.mathur@nokia.com"
- ],
- "nicks" : [
- "simathur"
- ]
- },
- "Silvia Pfeiffer" : {
- "emails" : [
- "silviapf@chromium.org"
- ],
- "expertise" : "Media elements & controls, track element & WebVTT",
- "nicks" : [
- "silvia"
- ]
- },
- "Simon Pena" : {
- "emails" : [
- "simon.pena@samsung.com",
- "spenap@gmail.com",
- "spena@igalia.com"
- ],
- "nicks" : [
- "spenap"
- ]
- },
- "Steve Lacey" : {
- "emails" : [
- "sjl@chromium.org"
- ],
- "nicks" : [
- "stevela"
- ]
- },
- "Sudarsana Nagineni" : {
- "emails" : [
- "naginenis@gmail.com",
- "sudarsana.nagineni@linux.intel.com",
- "sudarsana.nagineni@intel.com"
- ],
- "expertise" : "The EFLWebKit port, Memory Leaks",
- "nicks" : [
- "babu"
- ]
- },
- "Szilard Ledan-Muntean" : {
- "emails" : [
- "szledan@inf.u-szeged.hu"
- ],
- "nicks" : [
- "szledan"
- ]
- },
- "Taiju Tsuiki" : {
- "emails" : [
- "tzik@chromium.org"
- ],
- "nicks" : [
- "tzik"
- ]
- },
- "Takashi Sakamoto" : {
- "emails" : [
- "tasak@google.com"
- ],
- "nicks" : [
- "tasak"
- ]
- },
- "Takashi Toyoshima" : {
- "emails" : [
- "toyoshim@chromium.org",
- "toyoshim+watchlist@chromium.org"
- ],
- "expertise" : "WebSocket",
- "nicks" : [
- "toyoshim"
- ]
- },
- "Terry Anderson" : {
- "emails" : [
- "tdanderson@chromium.org"
- ],
- "nicks" : [
- "tdanderson"
- ]
- },
- "Thiago Marcos P. Santos" : {
- "emails" : [
- "tmpsantos@gmail.com",
- "thiago.santos@intel.com"
- ],
- "expertise" : "CSS Device Adaptation, CMake build system, The EFLWebKit port",
- "nicks" : [
- "tmpsantos"
- ]
- },
- "Thomas Sepez" : {
- "emails" : [
- "tsepez@chromium.org"
- ],
- "nicks" : [
- "tsepez"
- ]
- },
- "Tom Hudson" : {
- "emails" : [
- "tomhudson@google.com",
- "tomhudson@chromium.org"
- ],
- "nicks" : [
- "tomhudson"
- ]
- },
- "Tom Zakrajsek" : {
- "emails" : [
- "tomz@codeaurora.org"
- ],
- "nicks" : [
- "tomz"
- ]
- },
- "Tommy Widenflycht" : {
- "emails" : [
- "tommyw@google.com"
- ],
- "nicks" : [
- "tommyw"
- ]
- },
- "Trey Matteson" : {
- "emails" : [
- "trey@usa.net"
- ],
- "nicks" : [
- "trey"
- ]
- },
- "Tristan O'Tierney" : {
- "emails" : [
- "tristan@otierney.net",
- "tristan@apple.com"
- ]
- },
- "Vangelis Kokkevis" : {
- "emails" : [
- "vangelis@chromium.org"
- ],
- "nicks" : [
- "vangelis"
- ]
- },
- "Viatcheslav Ostapenko" : {
- "emails" : [
- "ostap73@gmail.com",
- "sl.ostapenko@samsung.com",
- "ostapenko.viatcheslav@nokia.com"
- ],
- "nicks" : [
- "ostap"
- ]
- },
- "Victor Carbune" : {
- "emails" : [
- "vcarbune@chromium.org",
- "victor@rosedu.org"
- ],
- "expertise" : "HTML5 <Track>",
- "nicks" : [
- "vcarbune"
- ]
- },
- "Victor Wang" : {
- "emails" : [
- "victorw@chromium.org"
- ],
- "nicks" : [
- "victorw"
- ]
- },
- "Victoria Kirst" : {
- "emails" : [
- "vrk@chromium.org",
- "vrk@google.com"
- ],
- "nicks" : [
- "vrk"
- ]
- },
- "Vincent Scheib" : {
- "emails" : [
- "scheib@chromium.org"
- ],
- "nicks" : [
- "scheib"
- ]
- },
- "Vineet Chaudhary" : {
- "emails" : [
- "rgf748@motorola.com"
- ],
- "nicks" : [
- "vineetc"
- ]
- },
- "Vitaly Repeshko" : {
- "emails" : [
- "vitalyr@chromium.org"
- ]
- },
- "Vivek Galatage" : {
- "emails" : [
- "vivekg@webkit.org",
- "vivek.vg@samsung.com"
- ],
- "expertise" : "Web Inspector",
- "nicks" : [
- "vivekg"
- ]
- },
- "W. James MacLean" : {
- "emails" : [
- "wjmaclean@chromium.org"
- ],
- "nicks" : [
- "seumas"
- ]
- },
- "William Siegrist" : {
- "emails" : [
- "wsiegrist@apple.com"
- ],
- "expertise" : "webkit.org",
- "nicks" : [
- "wms"
- ]
- },
- "Xianzhu Wang" : {
- "emails" : [
- "wangxianzhu@chromium.org",
- "phnixwxz@gmail.com",
- "wangxianzhu@google.com"
- ],
- "nicks" : [
- "wangxianzhu"
- ]
- },
- "Xiaohai Wei" : {
- "emails" : [
- "james.wei@intel.com",
- "wistoch@chromium.org"
- ],
- "expertise" : "WebAudio/ChromiumAndroidx86",
- "nicks" : [
- "wistoch"
- ]
- },
- "Xiaomei Ji" : {
- "emails" : [
- "xji@chromium.org"
- ],
- "nicks" : [
- "xji"
- ]
- },
- "Xingnan Wang" : {
- "emails" : [
- "xingnan.wang@intel.com"
- ],
- "nicks" : [
- "xingnan"
- ]
- },
- "Yaar Schnitman" : {
- "emails" : [
- "yaar@chromium.org",
- "yaar@google.com"
- ]
- },
- "Yael Aharon" : {
- "emails" : [
- "yael@webkit.org"
- ],
- "nicks" : [
- "yael"
- ]
- },
- "Yi Shen" : {
- "emails" : [
- "max.hong.shen@gmail.com",
- "yi.shen@sisa.samsung.com",
- "yi.4.shen@nokia.com"
- ]
- },
- "Yongjun Zhang" : {
- "emails" : [
- "yongjun_zhang@apple.com",
- "yongjun.zhang@nokia.com"
- ]
- },
- "Yoshifumi Inoue" : {
- "emails" : [
- "yosin@chromium.org"
- ],
- "expertise" : "HTML5 Forms especially for multiple-fields UI, charset encoding, decimal arithmetic",
- "nicks" : [
- "yosin"
- ]
- },
- "Yuqiang Xian" : {
- "emails" : [
- "yuqiang.xian@intel.com"
- ],
- "expertise" : "JavaScriptCore"
- },
- "Yuzo Fujishima" : {
- "emails" : [
- "yuzo@google.com"
- ],
- "nicks" : [
- "yuzo"
- ]
- },
- "Zalan Bujtas" : {
- "emails" : [
- "zalan@apple.com",
- "zbujtas@gmail.com",
- "zalan.bujtas@nokia.com"
- ],
- "expertise" : "Frame flattening",
- "nicks" : [
- "zalan"
- ]
- },
- "Zeno Albisser" : {
- "emails" : [
- "zeno@webkit.org",
- "zeno.albisser@nokia.com",
- "zeno.albisser@digia.com"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "zalbisser"
- ]
- },
- "Zhenyao Mo" : {
- "emails" : [
- "zmo@google.com"
- ],
- "nicks" : [
- "zhenyao"
- ]
- },
- "Zoltan Arvai" : {
- "emails" : [
- "zarvai@inf.u-szeged.hu"
- ],
- "expertise" : "The QtWebKit Port, QtWebKit Build Environment",
- "nicks" : [
- "azbest_hu"
- ]
- },
- "Zoltan Horvath" : {
- "emails" : [
- "zoltan@webkit.org",
- "hzoltan@inf.u-szeged.hu",
- "horvath.zoltan.6@stud.u-szeged.hu"
- ],
- "expertise" : "The QtWebKit Port, Custom Allocation Framework, PerformanceTests - memory measurements",
- "nicks" : [
- "zoltan"
- ]
- },
- "\u017dan Dober\u0161ek" : {
- "emails" : [
- "zandobersek@gmail.com",
- "zdobersek@igalia.com"
- ],
- "nicks" : [
- "zdobersek"
- ]
- }
- },
- "Contributors" : {
- "Adobe Bug Tracker" : {
- "emails" : [
- "WebkitBugTracker@adobe.com"
- ]
- },
- "Aharon Lanin" : {
- "emails" : [
- "aharon@google.com"
- ]
- },
- "Alan Cutter" : {
- "emails" : [
- "alancutter@chromium.org"
- ],
- "nicks" : [
- "alancutter"
- ]
- },
- "Alan Stearns" : {
- "emails" : [
- "stearns@adobe.com"
- ],
- "nicks" : [
- "astearns"
- ]
- },
- "Alejandro Pineiro" : {
- "emails" : [
- "apinheiro@igalia.com"
- ]
- },
- "Alexey Marinichev" : {
- "emails" : [
- "amarinichev@chromium.org",
- "amarinichev@google.com"
- ],
- "nicks" : [
- "amarinichev"
- ]
- },
- "Andras Piroska" : {
- "emails" : [
- "pandras@inf.u-szeged.hu"
- ],
- "nicks" : [
- "andris88"
- ]
- },
- "Anne van Kesteren" : {
- "emails" : [
- "annevk@annevk.nl"
- ],
- "nicks" : [
- "annevk"
- ]
- },
- "Annie Sullivan" : {
- "emails" : [
- "sullivan@chromium.org"
- ],
- "nicks" : [
- "annie"
- ]
- },
- "Anton Obzhirov" : {
- "emails" : [
- "a.obzhirov@samsung.com"
- ],
- "nicks" : [
- "aobzhirov"
- ]
- },
- "Anton Vayvod" : {
- "emails" : [
- "avayvod@chromium.org"
- ],
- "nicks" : [
- "avayvod"
- ]
- },
- "Aryeh Gregor" : {
- "emails" : [
- "ayg@aryeh.name"
- ],
- "nicks" : [
- "AryehGregor"
- ]
- },
- "Balazs Ankes" : {
- "emails" : [
- "bank@inf.u-szeged.hu"
- ],
- "nicks" : [
- "abalazs"
- ]
- },
- "Bem Jones-Bey" : {
- "emails" : [
- "bjonesbe@adobe.com"
- ],
- "nicks" : [
- "bemjb"
- ]
- },
- "Brian Salomon" : {
- "emails" : [
- "bsalomon@google.com"
- ]
- },
- "Christian Biesinger" : {
- "emails" : [
- "cbiesinger@chromium.org"
- ],
- "nicks" : [
- "cbiesinger"
- ]
- },
- "Commit Queue" : {
- "emails" : [
- "commit-queue@webkit.org"
- ]
- },
- "Daniel Sievers" : {
- "emails" : [
- "sievers@chromium.org"
- ]
- },
- "David Dorwin" : {
- "emails" : [
- "ddorwin@chromium.org"
- ],
- "nicks" : [
- "ddorwin"
- ]
- },
- "David Reveman" : {
- "emails" : [
- "reveman@chromium.org"
- ],
- "nicks" : [
- "reveman"
- ]
- },
- "Douglas Davidson" : {
- "emails" : [
- "ddavidso@apple.com"
- ]
- },
- "Douglas Stockwell" : {
- "emails" : [
- "dstockwell@chromium.org"
- ],
- "nicks" : [
- "dstockwell"
- ]
- },
- "Edward O'Connor" : {
- "emails" : [
- "eoconnor@apple.com"
- ],
- "nicks" : [
- "hober"
- ]
- },
- "Eric Penner" : {
- "emails" : [
- "epenner@chromium.org"
- ],
- "nicks" : [
- "epenner"
- ]
- },
- "Felician Marton" : {
- "emails" : [
- "felician@inf.u-szeged.hu",
- "marton.felician.zoltan@stud.u-szeged.hu"
- ],
- "nicks" : [
- "Felician"
- ]
- },
- "Frédéric Wang" : {
- "emails" : [
- "fred.wang@free.fr"
- ],
- "nicks" : [
- "fredw"
- ]
- },
- "Finnur Thorarinsson" : {
- "emails" : [
- "finnur@chromium.org",
- "finnur.webkit@gmail.com"
- ],
- "nicks" : [
- "finnur"
- ]
- },
- "Forms Bugs" : {
- "emails" : [
- "forms-bugs@chromium.org"
- ]
- },
- "Gabor Ballabas" : {
- "emails" : [
- "gaborb@inf.u-szeged.hu"
- ],
- "nicks" : [
- "bgabor"
- ]
- },
- "Grace Kloba" : {
- "emails" : [
- "klobag@chromium.org"
- ],
- "nicks" : [
- "klobag"
- ]
- },
- "Greg Simon" : {
- "emails" : [
- "gregsimon@chromium.org"
- ],
- "nicks" : [
- "gregsimon"
- ]
- },
- "Gwang Yoon Hwang" : {
- "emails" : [
- "ryumiel@company100.net",
- "ryumiel@company100.com"
- ],
- "nicks" : [
- "ryumiel"
- ]
- },
- "Hao Zheng" : {
- "emails" : [
- "zhenghao@chromium.org"
- ]
- },
- "Harald Alvestrand" : {
- "emails" : [
- "hta@google.com"
- ],
- "nicks" : [
- "hta"
- ]
- },
- "Ian Hickson" : {
- "emails" : [
- "ian@hixie.ch"
- ],
- "nicks" : [
- "hixie"
- ]
- },
- "Jae Hyun Park" : {
- "emails" : [
- "jae.park@company100.net"
- ],
- "nicks" : [
- "jaepark"
- ]
- },
- "James Craig" : {
- "emails" : [
- "james@cookiecrook.com",
- "jcraig@apple.com"
- ],
- "nicks" : [
- "jcraig"
- ]
- },
- "Jeff Timanus" : {
- "emails" : [
- "twiz@chromium.org",
- "twiz@google.com"
- ],
- "nicks" : [
- "twiz"
- ]
- },
- "Jing Zhao" : {
- "emails" : [
- "jingzhao@chromium.org"
- ]
- },
- "John Bates" : {
- "emails" : [
- "jbates@google.com",
- "jbates@chromium.org"
- ],
- "nicks" : [
- "jbates"
- ]
- },
- "John Bauman" : {
- "emails" : [
- "jbauman@chromium.org",
- "jbauman@google.com"
- ],
- "nicks" : [
- "jbauman"
- ]
- },
- "John Mellor" : {
- "emails" : [
- "johnme@chromium.org"
- ],
- "nicks" : [
- "johnme"
- ]
- },
- "Jonathan Backer" : {
- "emails" : [
- "backer@chromium.org"
- ],
- "nicks" : [
- "backer"
- ]
- },
- "Koji Hara" : {
- "emails" : [
- "kojih@chromium.org"
- ],
- "nicks" : [
- "kojih"
- ]
- },
- "Koji Ishii" : {
- "emails" : [
- "kojiishi@gmail.com"
- ]
- },
- "Kulanthaivel Palanichamy" : {
- "emails" : [
- "kulanthaivel@codeaurora.org"
- ],
- "nicks" : [
- "kvel"
- ]
- },
- "Lia Chen" : {
- "emails" : [
- "liachen@rim.com"
- ]
- },
- "Mihai Balan" : {
- "emails" : [
- "mibalan@adobe.com"
- ],
- "nicks" : [
- "miChou"
- ]
- },
- "Mihai Maerean" : {
- "emails" : [
- "mmaerean@adobe.com"
- ],
- "nicks" : [
- "mmaerean"
- ]
- },
- "Min Qin" : {
- "emails" : [
- "qinmin@chromium.org"
- ]
- },
- "Nandor Huszka" : {
- "emails" : [
- "hnandor@inf.u-szeged.hu"
- ],
- "nicks" : [
- "hnandor"
- ]
- },
- "Nils Barth" : {
- "emails" : [
- "nbarth@chromium.org"
- ],
- "nicks" : [
- "nbarth"
- ]
- },
- "Oliver Varga" : {
- "emails" : [
- "voliver@inf.u-szeged.hu",
- "Varga.Oliver@stud.u-szeged.hu"
- ],
- "nicks" : [
- "TwistO"
- ]
- },
- "Peter Gal" : {
- "emails" : [
- "galpeter@inf.u-szeged.hu"
- ],
- "nicks" : [
- "elecro"
- ]
- },
- "Peter Linss" : {
- "emails" : [
- "peter.linss@hp.com"
- ],
- "nicks" : [
- "plinss"
- ]
- },
- "Radar WebKit Bug Importer" : {
- "emails" : [
- "webkit-bug-importer@group.apple.com"
- ]
- },
- "Radu Stavila" : {
- "emails" : [
- "stavila@adobe.com"
- ],
- "nicks" : [
- "radustavila"
- ]
- },
- "Raul Hudea" : {
- "emails" : [
- "rhudea@adobe.com"
- ],
- "nicks" : [
- "rhudea"
- ]
- },
- "Roland Takacs" : {
- "emails" : [
- "rtakacs@inf.u-szeged.hu"
- ],
- "nicks" : [
- "rtakacs"
- ]
- },
- "Tab Atkins" : {
- "emails" : [
- "tabatkins@google.com",
- "jackalmage@gmail.com"
- ],
- "nicks" : [
- "tabatkins"
- ]
- },
- "Tamas Czene" : {
- "emails" : [
- "tczene@inf.u-szeged.hu",
- "Czene.Tamas@stud.u-szeged.hu"
- ],
- "nicks" : [
- "tczene"
- ]
- },
- "Tien-Ren Chen" : {
- "emails" : [
- "trchen@chromium.org"
- ],
- "nicks" : [
- "trchen"
- ]
- },
- "Tim 'mithro' Ansell" : {
- "emails" : [
- "mithro@mithis.com"
- ],
- "nicks" : [
- "mithro"
- ]
- },
- "Tim Volodine" : {
- "emails" : [
- "timvolodine@chromium.org"
- ],
- "nicks" : [
- "timvolodine"
- ]
- },
- "Web Components Team" : {
- "emails" : [
- "webcomponents-bugzilla@chromium.org"
- ]
- },
- "WebKit Review Bot" : {
- "emails" : [
- "webkit.review.bot@gmail.com"
- ],
- "nicks" : [
- "sheriff-bot"
- ]
- },
- "Wyatt Carss" : {
- "emails" : [
- "wcarss@chromium.org",
- "wcarss@google.com"
- ],
- "nicks" : [
- "wcarss"
- ]
- },
- "Zeev Lieber" : {
- "emails" : [
- "zlieber@chromium.org"
- ]
- },
- "Zsolt Feher" : {
- "emails" : [
- "feherzs@inf.u-szeged.hu"
- ],
- "nicks" : [
- "Smith"
- ]
- }
- },
- "Reviewers" : {
- "Abhishek Arya" : {
- "emails" : [
- "inferno@chromium.org"
- ],
- "expertise" : "Security, Layout and Rendering",
- "nicks" : [
- "inferno-sec"
- ]
- },
- "Ada Chan" : {
- "emails" : [
- "adachan@apple.com"
- ],
- "expertise" : "WebKit on Windows",
- "nicks" : [
- "chanada"
- ]
- },
- "Adam Barth" : {
- "emails" : [
- "abarth@webkit.org"
- ],
- "expertise" : "Security, HTML parser, webkit-patch, FrameLoader (sadly), V8 Bindings, The Chromium Port",
- "nicks" : [
- "abarth"
- ]
- },
- "Adam Roben" : {
- "emails" : [
- "aroben@webkit.org",
- "aroben@apple.com"
- ],
- "expertise" : "Plug-ins and Java (Win, General), WebKit API (Win), Windows build system, General Windows port issues, Developer Tools (Web Inspector), Tools",
- "nicks" : [
- "aroben"
- ]
- },
- "Adam Treat" : {
- "emails" : [
- "treat@kde.org",
- "treat@webkit.org"
- ],
- "expertise" : "The QtWebKit Port, The HTML Parser/Tokenizer, The platform layer, Image loading and painting, ScrollView and friends",
- "nicks" : [
- "manyoso"
- ]
- },
- "Adele Peterson" : {
- "emails" : [
- "adele@apple.com"
- ],
- "expertise" : "HTML Forms, Security, Layout and Rendering, Web Compatibility (General)",
- "nicks" : [
- "adele"
- ]
- },
- "Adrienne Walker" : {
- "emails" : [
- "enne@google.com",
- "enne@chromium.org"
- ],
- "nicks" : [
- "enne"
- ]
- },
- "Alejandro G. Castro" : {
- "emails" : [
- "alex@igalia.com",
- "alex@webkit.org"
- ],
- "expertise" : "WebKitGTK+, Cairo graphics backend, ShadowBlur rendering, Epiphany/WebKit Contributor",
- "nicks" : [
- "alexg__"
- ]
- },
- "Alexander Pavlov" : {
- "emails" : [
- "apavlov@chromium.org",
- "pavlov81@gmail.com"
- ],
- "expertise" : "Developer Tools, Web Inspector, CSS OM",
- "nicks" : [
- "apavlov"
- ]
- },
- "Alexandru Chiculita" : {
- "emails" : [
- "achicu@adobe.com"
- ],
- "expertise" : "CSS Regions, CSS Exclusions, CSS Filters, CSS Custom Filters",
- "nicks" : [
- "achicu"
- ]
- },
- "Alexey Proskuryakov" : {
- "emails" : [
- "ap@webkit.org",
- "ap@apple.com"
- ],
- "nicks" : [
- "ap"
- ]
- },
- "Alexis Menard" : {
- "emails" : [
- "alexis@webkit.org",
- "menard@kde.org",
- "alexis.menard@openbossa.org"
- ],
- "expertise" : "The QtWebKit Port, CSS, CSS shorthands, HTML5 Media Elements",
- "nicks" : [
- "darktears"
- ]
- },
- "Alice Liu" : {
- "emails" : [
- "alice.liu@apple.com"
- ],
- "expertise" : "HTML Editing, Memory Use / Leaks, Core DOM, Web Compatibility (Web Apps), Web Compatibility (General), Bug Mastery, Web Accessibility",
- "nicks" : [
- "aliu"
- ]
- },
- "Allan Sandfeld Jensen" : {
- "emails" : [
- "allan.jensen@digia.com",
- "kde@carewolf.com",
- "sandfeld@kde.org",
- "allan.jensen@nokia.com"
- ],
- "expertise" : "QtWebKit, CSS Selectors, Touch Adjustment, Hit Testing",
- "nicks" : [
- "carewolf"
- ]
- },
- "Alp Toker" : {
- "emails" : [
- "alp@nuanti.com",
- "alp@atoker.com",
- "alp@webkit.org"
- ],
- "expertise" : "GTK+ WebKit Port, Cairo graphics backend (including canvas, SVG), CURL HTTP backend",
- "nicks" : [
- "alp"
- ]
- },
- "Anders Carlsson" : {
- "emails" : [
- "andersca@apple.com",
- "acarlsson@apple.com"
- ],
- "expertise" : "Storage, Networking, Core DOM, Plug-ins and Java (Win, General), XML, JavaScript/ECMAScript",
- "nicks" : [
- "andersca"
- ]
- },
- "Andreas Kling" : {
- "emails" : [
- "akling@apple.com",
- "kling@webkit.org",
- "awesomekling@apple.com",
- "andreas.kling@nokia.com"
- ],
- "expertise" : "CSS, HTML DOM, Core DOM, Canvas, JavaScript DOM bindings, Memory use",
- "nicks" : [
- "kling"
- ]
- },
- "Andy Estes" : {
- "emails" : [
- "aestes@apple.com"
- ],
- "expertise" : "Layout and rendering, plug-in loading, HTML parsing, web compatibility",
- "nicks" : [
- "estes"
- ]
- },
- "Antonio Gomes" : {
- "emails" : [
- "tonikitoo@webkit.org",
- "a1.gomes@sisa.samsung.com",
- "antonio.netto@samsung.com",
- "antonio.gomes@openbossa.org"
- ],
- "expertise" : "{BlackBerry, EFL, Qt}WebKit ports, Hit testing, Touch/Event handling, Rendering and scrolling",
- "nicks" : [
- "tonikitoo"
- ]
- },
- "Antti Koivisto" : {
- "emails" : [
- "koivisto@iki.fi",
- "antti@apple.com",
- "antti.j.koivisto@nokia.com"
- ],
- "expertise" : "HTML DOM, Core DOM, Loader, Cache, CSS OM, style resolve, performance",
- "nicks" : [
- "anttik"
- ]
- },
- "Ariya Hidayat" : {
- "emails" : [
- "ariya.hidayat@gmail.com",
- "ariya@sencha.com",
- "ariya@webkit.org"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "ariya"
- ]
- },
- "Benjamin Poulain" : {
- "emails" : [
- "benjamin@webkit.org",
- "bpoulain@apple.com",
- "benjamin.poulain@nokia.com",
- "ikipou@gmail.com"
- ],
- "expertise" : "The Rendering, Performance, Mobile stuff, Touch support.",
- "nicks" : [
- "benjaminp"
- ]
- },
- "Beth Dakin" : {
- "emails" : [
- "bdakin@apple.com"
- ],
- "expertise" : "CSS (Cascading Style Sheets), Layout and Rendering, Resolution-Independence, HTML Parsing, Tables, Web Accessibility",
- "nicks" : [
- "dethbakin"
- ]
- },
- "Brady Eidson" : {
- "emails" : [
- "beidson@apple.com"
- ],
- "expertise" : "Networking, Storage, WebCore icon database, Back/forward cache, History",
- "nicks" : [
- "bradee-oh"
- ]
- },
- "Brent Fulgham" : {
- "emails" : [
- "bfulgham@webkit.org",
- "bfulgham@apple.com"
- ],
- "expertise" : "The WinCairo Port, WebKit on Windows",
- "nicks" : [
- "bfulgham"
- ]
- },
- "Brian Weinstein" : {
- "emails" : [
- "bweinstein@apple.com"
- ],
- "expertise" : "WebKit on Windows, Tools",
- "nicks" : [
- "bweinstein"
- ]
- },
- "Caio Marcelo de Oliveira Filho" : {
- "emails" : [
- "cmarcelo@webkit.org",
- "cmarcelo@gmail.com",
- "caio.oliveira@openbossa.org"
- ],
- "nicks" : [
- "cmarcelo"
- ]
- },
- "Cameron Zwarich" : {
- "emails" : [
- "zwarich@apple.com",
- "cwzwarich@apple.com",
- "cwzwarich@webkit.org"
- ]
- },
- "Carlos Garcia Campos" : {
- "emails" : [
- "cgarcia@igalia.com",
- "carlosgc@gnome.org",
- "carlosgc@webkit.org"
- ],
- "expertise" : "The WebKitGTK+ Port, WebKit2, Glib unicode backend, GTK+ contributor, Epiphany contributor",
- "nicks" : [
- "KaL"
- ]
- },
- "Chang Shu" : {
- "emails" : [
- "cshu@webkit.org",
- "c.shu@sisa.samsung.com"
- ],
- "expertise" : "JavaScript DOM bindings, WebKit2, QtWebKit port",
- "nicks" : [
- "cshu"
- ]
- },
- "Chris Blumenberg" : {
- "emails" : [
- "cblu@apple.com"
- ],
- "nicks" : [
- "cblu"
- ]
- },
- "Chris Fleizach" : {
- "emails" : [
- "cfleizach@apple.com"
- ],
- "expertise" : "Accessibility",
- "nicks" : [
- "cfleizach"
- ]
- },
- "Chris Jerdonek" : {
- "emails" : [
- "cjerdonek@webkit.org"
- ],
- "nicks" : [
- "cjerdonek"
- ]
- },
- "Chris Marrin" : {
- "emails" : [
- "cmarrin@apple.com"
- ],
- "nicks" : [
- "cmarrin"
- ]
- },
- "Chris Rogers" : {
- "emails" : [
- "crogers@google.com"
- ],
- "nicks" : [
- "crogers"
- ]
- },
- "Christophe Dumez" : {
- "emails" : [
- "dchris@gmail.com",
- "ch.dumez@sisa.samsung.com",
- "christophe.dumez@intel.com"
- ],
- "expertise" : "The EFLWebKit Port, Bindings generator",
- "nicks" : [
- "cdumez"
- ]
- },
- "Csaba Osztrogon\u00e1c" : {
- "emails" : [
- "ossy@webkit.org"
- ],
- "nicks" : [
- "ossy"
- ]
- },
- "Dan Bernstein" : {
- "emails" : [
- "mitz@webkit.org",
- "mitz@apple.com"
- ],
- "expertise" : "Layout and Rendering, Bidirectional text",
- "nicks" : [
- "mitzpettel"
- ]
- },
- "Daniel Bates" : {
- "emails" : [
- "dbates@webkit.org"
- ],
- "expertise" : "XSSAuditor, Drag and Drop, Tools, Perl, svn-apply/unapply",
- "nicks" : [
- "dydz"
- ]
- },
- "Darin Adler" : {
- "emails" : [
- "darin@apple.com"
- ],
- "expertise" : "HTML Forms, WebKit API (Mac, Win), HTML Editing, Performance, JavaScript/ECMAScript, Text Encoding, Core DOM, HTML DOM, Canvas, JavaScript DOM Bindings, ObjC DOM Bindings, Basic types and data structures, Tools, New Features / Standards Support, General (probably a good backup on most topics even if not specifically an expert)",
- "nicks" : [
- "darin"
- ]
- },
- "Darin Fisher" : {
- "emails" : [
- "fishd@chromium.org",
- "darin@chromium.org"
- ],
- "expertise" : "The Chromium Port, WebKit API (Chromium), Page Loading",
- "nicks" : [
- "fishd"
- ]
- },
- "David Harrison" : {
- "emails" : [
- "harrison@apple.com"
- ],
- "expertise" : "HTML Editing, Accessibility",
- "nicks" : [
- "harrison"
- ]
- },
- "David Hyatt" : {
- "emails" : [
- "hyatt@apple.com"
- ],
- "expertise" : "Layout and Rendering, CSS (Cascading Style Sheets), HTML Forms, Tables, Text Layout, Fonts, MathML, Memory Cache, HTMLDOM, Core DOM, HTML Parsing, New Features / Standards Support, XML, XSLT, Printing",
- "nicks" : [
- "dhyatt",
- "hyatt"
- ]
- },
- "David Kilzer" : {
- "emails" : [
- "ddkilzer@webkit.org",
- "ddkilzer@apple.com"
- ],
- "expertise" : "iPhone port, Xcode build system, Tools, Perl, git, WebArchive",
- "nicks" : [
- "ddkilzer"
- ]
- },
- "David Levin" : {
- "emails" : [
- "levin@chromium.org"
- ],
- "nicks" : [
- "dave_levin"
- ]
- },
- "Dean Jackson" : {
- "emails" : [
- "dino@apple.com"
- ],
- "expertise" : "Transforms, Transitions, Animations, Filters",
- "nicks" : [
- "dino"
- ]
- },
- "Dimitri Glazkov" : {
- "emails" : [
- "dglazkov@chromium.org"
- ],
- "expertise" : "The Chromium Port, Shadow DOM, DOM, HTML Forms, Shadow DOM, Web Components, V8 Bindings, InspectorController, garden-o-matic",
- "nicks" : [
- "dglazkov"
- ]
- },
- "Dirk Pranke" : {
- "emails" : [
- "dpranke@chromium.org"
- ],
- "expertise" : "Build/test infrastructure (stuff under Tools/Scripts)",
- "nicks" : [
- "dpranke"
- ]
- },
- "Dirk Schulze" : {
- "emails" : [
- "krit@webkit.org"
- ],
- "expertise" : "Cairo graphics backend, Canvas, SVG (Scalable Vector Graphics)",
- "nicks" : [
- "krit"
- ]
- },
- "Dmitry Titov" : {
- "emails" : [
- "dimich@chromium.org"
- ],
- "expertise" : "The Chromium Port, Workers, Timers, Threading",
- "nicks" : [
- "dimich"
- ]
- },
- "Don Melton" : {
- "emails" : [
- "gramps@apple.com"
- ],
- "nicks" : [
- "gramps"
- ]
- },
- "Dumitru Daniliuc" : {
- "emails" : [
- "dumi@chromium.org"
- ],
- "expertise" : "The Chromium Port, WebSQLDatabases",
- "nicks" : [
- "dumi"
- ]
- },
- "Elliott Sprehn" : {
- "emails" : [
- "esprehn@chromium.org",
- "esprehn+autocc@chromium.org"
- ],
- "expertise" : "Layout and Rendering, V8/JSC Bindings, Generated content, Shadow DOM, Web Compatibility (General)",
- "nicks" : [
- "esprehn"
- ]
- },
- "Emil A Eklund" : {
- "emails" : [
- "eae@chromium.org"
- ],
- "expertise" : "Layout and rendering, Core DOM, HTML DOM",
- "nicks" : [
- "eae"
- ]
- },
- "Enrica Casucci" : {
- "emails" : [
- "enrica@apple.com"
- ],
- "expertise" : "HTML Editing, Drag and drop, Input methods",
- "nicks" : [
- "enrica"
- ]
- },
- "Eric Carlson" : {
- "emails" : [
- "eric.carlson@apple.com"
- ],
- "expertise" : "HTML5 Media Elements",
- "nicks" : [
- "eric_carlson"
- ]
- },
- "Eric Seidel" : {
- "emails" : [
- "eric@webkit.org"
- ],
- "expertise" : "The Rendering Engine, Commit Queue, Memory Leaks, webkit-patch, The Chromium Port",
- "nicks" : [
- "eseidel"
- ]
- },
- "Filip Pizlo" : {
- "emails" : [
- "fpizlo@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript",
- "nicks" : [
- "pizlo"
- ]
- },
- "Gavin Barraclough" : {
- "emails" : [
- "barraclough@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript",
- "nicks" : [
- "gbarra"
- ]
- },
- "Geoffrey Garen" : {
- "emails" : [
- "ggaren@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript, Performance, Memory Use / Leaks, Memory Cache, Core DOM, HTML DOM, JavaScript DOM Bindings, Web Compatibility (General), JavaScriptCore C API, FastMalloc",
- "nicks" : [
- "ggaren"
- ]
- },
- "George Staikos" : {
- "emails" : [
- "staikos@kde.org",
- "staikos@webkit.org"
- ],
- "expertise" : "Core KHTML Contributor, The QtWebKit Port"
- },
- "Gustavo Noronha Silva" : {
- "emails" : [
- "gns@gnome.org",
- "kov@webkit.org",
- "gustavo.noronha@collabora.co.uk",
- "gustavo.noronha@collabora.com"
- ],
- "expertise" : "WebKitGTK+ API, Soup HTTP backend, Debian Packaging, A little bit of Epiphany",
- "nicks" : [
- "kov"
- ]
- },
- "Gyuyoung Kim" : {
- "emails" : [
- "gyuyoung.kim@samsung.com",
- "gyuyoung.kim@webkit.org"
- ],
- "expertise" : "The EFLWebKit Port",
- "nicks" : [
- "gyuyoung"
- ]
- },
- "Hajime Morrita" : {
- "emails" : [
- "morrita@google.com",
- "morrita@chromium.org"
- ],
- "nicks" : [
- "morrita"
- ]
- },
- "Holger Freyther" : {
- "emails" : [
- "zecke@selfish.org",
- "zecke@webkit.org"
- ],
- "expertise" : "The QtWebKit Port, The GTK+ WebKit Port",
- "nicks" : [
- "zecke"
- ]
- },
- "James Robinson" : {
- "emails" : [
- "jamesr@chromium.org",
- "jamesr@google.com"
- ],
- "expertise" : "Layout, rendering, the Chromium port.",
- "nicks" : [
- "jamesr"
- ]
- },
- "Jan Alonzo" : {
- "emails" : [
- "jmalonzo@gmail.com",
- "jmalonzo@webkit.org"
- ],
- "expertise" : "The WebKitGtk Port, Autotools Build",
- "nicks" : [
- "janm"
- ]
- },
- "Jer Noble" : {
- "emails" : [
- "jer.noble@apple.com"
- ],
- "nicks" : [
- "jernoble"
- ]
- },
- "Jeremy Orlow" : {
- "emails" : [
- "jorlow@webkit.org",
- "jorlow@chromium.org"
- ],
- "expertise" : "The Chromium Port, DOM Storage (i.e., LocalStorage and SessionStorage)",
- "nicks" : [
- "jorlow"
- ]
- },
- "Jessie Berlin" : {
- "emails" : [
- "jberlin@webkit.org",
- "jberlin@apple.com"
- ],
- "nicks" : [
- "jessieberlin"
- ]
- },
- "Jian Li" : {
- "emails" : [
- "jianli@chromium.org"
- ],
- "expertise" : "The Chromium Port, Workers, File API, FormData",
- "nicks" : [
- "jianli"
- ]
- },
- "Jocelyn Turcotte" : {
- "emails" : [
- "jocelyn.turcotte@digia.com",
- "jocelyn.turcotte@nokia.com"
- ],
- "expertise" : "The QtWebKit port, Tools, Loader, Rendering, Accelerated Compositing",
- "nicks" : [
- "jturcotte"
- ]
- },
- "Jochen Eisinger" : {
- "emails" : [
- "jochen@chromium.org",
- "jochen@chromium.or"
- ],
- "nicks" : [
- "jochen__"
- ]
- },
- "John Sullivan" : {
- "emails" : [
- "sullivan@apple.com"
- ],
- "expertise" : "Safari UI, Printing",
- "nicks" : [
- "sullivan"
- ]
- },
- "Jon Honeycutt" : {
- "emails" : [
- "jhoneycutt@apple.com"
- ],
- "expertise" : "WebKit on Windows, Plug-ins, Windows accessibility",
- "nicks" : [
- "jhoneycutt"
- ]
- },
- "Joseph Pecoraro" : {
- "emails" : [
- "joepeck@webkit.org",
- "pecoraro@apple.com"
- ],
- "expertise" : "Web Inspector",
- "nicks" : [
- "JoePeck"
- ]
- },
- "Julien Chaffraix" : {
- "emails" : [
- "jchaffraix@webkit.org",
- "julien.chaffraix@gmail.com",
- "jchaffraix@google.com",
- "jchaffraix@codeaurora.org"
- ],
- "expertise" : "Layout and rendering, Tables, XMLHttpRequest",
- "nicks" : [
- "jchaffraix"
- ]
- },
- "Justin Garcia" : {
- "emails" : [
- "justin.garcia@apple.com"
- ],
- "expertise" : "Multipart Mixed Replace, HTML Editing",
- "nicks" : [
- "justing"
- ]
- },
- "Ken Kocienda" : {
- "emails" : [
- "kocienda@apple.com"
- ]
- },
- "Kenneth Rohde Christiansen" : {
- "emails" : [
- "kenneth@webkit.org",
- "kenneth.r.christiansen@intel.com",
- "kenneth.christiansen@gmail.com"
- ],
- "expertise" : "WebKit/WebKit2 API, The Qt and EFL WebKit Port, Mobile Adaptions, Frame Flattening, Mobile Viewport Handling, Input methods.",
- "nicks" : [
- "kenneth_",
- "kenneth",
- "kenne"
- ]
- },
- "Kenneth Russell" : {
- "emails" : [
- "kbr@google.com",
- "kbr@chromium.org"
- ],
- "expertise" : " WebGL (Chromium and Safari ports), Canvas",
- "nicks" : [
- "kbr_google",
- "kbrgg"
- ]
- },
- "Kent Tamura" : {
- "emails" : [
- "tkent@chromium.org",
- "tkent@google.com"
- ],
- "expertise" : "HTML Forms, DumpRenderTree for Chromium, The Chromium Port",
- "nicks" : [
- "tkent"
- ]
- },
- "Kentaro Hara" : {
- "emails" : [
- "haraken@chromium.org"
- ],
- "expertise" : "V8 bindings, JSC bindings, Perl scripts, Garbage collection, DOM lifetime",
- "nicks" : [
- "haraken"
- ]
- },
- "Kevin Decker" : {
- "emails" : [
- "kdecker@apple.com"
- ],
- "expertise" : "Safari UI, Plug-ins and Java (Mac, General), Enterprise Application Compatibility",
- "nicks" : [
- "superkevin"
- ]
- },
- "Kevin McCullough" : {
- "emails" : [
- "kmccullough@apple.com"
- ],
- "expertise" : " JavaScript/ECMAScript, Developer Tools (Web Inspector, JavaScript Profilier), Web Compatibility (Web Apps)",
- "nicks" : [
- "maculloch"
- ]
- },
- "Kevin Ollivier" : {
- "emails" : [
- "kevino@theolliviers.com",
- "kevino@webkit.org"
- ],
- "expertise" : "The wxWebKit Port, Bakefile build system",
- "nicks" : [
- "kollivier"
- ]
- },
- "Lars Knoll" : {
- "emails" : [
- "lars@trolltech.com",
- "lars@kde.org",
- "lars.knoll@nokia.com"
- ],
- "expertise" : "Original author of KHTML which WebKit is based on, The QtWebKit Port, Layout and Rendering, CSS (Cascading Style Sheets), HTML Forms, Tables, HTML DOM, Core DOM, HTML Parsing",
- "nicks" : [
- "lars"
- ]
- },
- "Laszlo Gombos" : {
- "emails" : [
- "laszlo.gombos@webkit.org",
- "l.gombos@samsung.com",
- "laszlo.gombos@gmail.com",
- "laszlo.1.gombos@nokia.com"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "lgombos"
- ]
- },
- "Levi Weintraub" : {
- "emails" : [
- "leviw@chromium.org",
- "leviw@google.com",
- "lweintraub@apple.com"
- ],
- "expertise" : "Layout (bidi and line layout, sub-pixel positioning), svg, editing",
- "nicks" : [
- "leviw"
- ]
- },
- "Luiz Agostini" : {
- "emails" : [
- "luiz@webkit.org",
- "luiz.agostini@openbossa.org"
- ],
- "expertise" : "The QtWebKit Port",
- "nicks" : [
- "lca"
- ]
- },
- "Maciej Stachowiak" : {
- "emails" : [
- "mjs@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript, Performance, Security, Basic types and data structures, FastMalloc, DOM Bindings for JavaScript, Core DOM, HTML DOM, JavaScript DOM Bindings, WebKit API (Mac, Win), HTML Editing, Networking, Tools, New Features / Standards Support, General (probably a good backup on most topics even if not specifically an expert)",
- "nicks" : [
- "othermaciej"
- ]
- },
- "Mark Hahnenberg" : {
- "emails" : [
- "mhahnenberg@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript",
- "nicks" : [
- "mhahnenberg"
- ]
- },
- "Mark Rowe" : {
- "emails" : [
- "mrowe@apple.com"
- ],
- "expertise" : "Build/Release Engineering, Malloc, FastMalloc",
- "nicks" : [
- "bdash"
- ]
- },
- "Martin Robinson" : {
- "emails" : [
- "mrobinson@webkit.org",
- "mrobinson@igalia.com",
- "martin.james.robinson@gmail.com"
- ],
- "expertise" : "The WebKitGTK+ Port, Cairo graphics backend, soup HTTP backend",
- "nicks" : [
- "mrobinson"
- ]
- },
- "Michael Saboff" : {
- "emails" : [
- "msaboff@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript",
- "nicks" : [
- "msaboff"
- ]
- },
- "Mihai Parparita" : {
- "emails" : [
- "mihaip@chromium.org"
- ],
- "expertise" : "The Chromium Port, Layout tests, History",
- "nicks" : [
- "mihaip"
- ]
- },
- "Nate Chapin" : {
- "emails" : [
- "japhet@chromium.org"
- ],
- "expertise" : "The Chromium Port, V8 Bindings",
- "nicks" : [
- "japhet",
- "natechapin"
- ]
- },
- "Nico Weber" : {
- "emails" : [
- "thakis@chromium.org",
- "thakis@google.com"
- ],
- "expertise" : "The Chromium Port, Graphics, Skia, CoreGraphics",
- "nicks" : [
- "thakis"
- ]
- },
- "Nikolas Zimmermann" : {
- "emails" : [
- "zimmermann@kde.org",
- "zimmermann@physik.rwth-aachen.de",
- "zimmermann@webkit.org",
- "nzimmermann@blackberry.com",
- "nzimmermann@rim.com"
- ],
- "expertise" : "Core KHTML contributor, The QtWebKit Port, Text Layout, JavaScript DOM bindings, Code generation in general, XML, SVG (Scalable Vector Graphics)",
- "nicks" : [
- "wildfox"
- ]
- },
- "Noam Rosenthal" : {
- "emails" : [
- "noam@webkit.org",
- "noam.rosenthal@nokia.com"
- ],
- "expertise" : "TextureMapper, graphics for the Qt port",
- "nicks" : [
- "noamr"
- ]
- },
- "Ojan Vafai" : {
- "emails" : [
- "ojan@chromium.org",
- "ojan.autocc@gmail.com"
- ],
- "expertise" : "Selections, Editing, webkit-patch, run-webkit-tests, The Chromium port, HTML Forms, Layout and Rendering, Web Compatibility (General) ",
- "nicks" : [
- "ojan"
- ]
- },
- "Oliver Hunt" : {
- "emails" : [
- "oliver@apple.com"
- ],
- "expertise" : "JavaScript/ECMAScript, FastMalloc",
- "nicks" : [
- "olliej"
- ]
- },
- "Pavel Feldman" : {
- "emails" : [
- "pfeldman@chromium.org",
- "pfeldman@google.com"
- ],
- "expertise" : "Developer Tools, Web Inspector",
- "nicks" : [
- "pfeldman"
- ]
- },
- "Philip Rogers" : {
- "emails" : [
- "pdr@google.com",
- "pdr@chromium.org"
- ],
- "expertise" : "SVG (Scalable Vector Graphics)",
- "nicks" : [
- "pdr"
- ]
- },
- "Philippe Normand" : {
- "emails" : [
- "pnormand@igalia.com",
- "philn@webkit.org",
- "philn@igalia.com"
- ],
- "expertise" : "WebKitGTK+, Media support (focused on the GStreamer implementation)",
- "nicks" : [
- "philn"
- ]
- },
- "Richard Williamson" : {
- "emails" : [
- "rjw@apple.com"
- ],
- "nicks" : [
- "rjw"
- ]
- },
- "Rob Buis" : {
- "emails" : [
- "rwlbuis@gmail.com",
- "rwlbuis@webkit.org",
- "rbuis@blackberry.com",
- "rbuis@rim.com"
- ],
- "expertise" : "KDE contributor, The QtWebKit Port, SVG (Scalable Vector Graphics)",
- "nicks" : [
- "rwlbuis"
- ]
- },
- "Ryosuke Niwa" : {
- "emails" : [
- "rniwa@webkit.org"
- ],
- "expertise" : "HTML Editing, Core DOM, HTML DOM, Event Handling",
- "nicks" : [
- "rniwa"
- ]
- },
- "Sam Weinig" : {
- "emails" : [
- "sam@webkit.org",
- "weinig@apple.com"
- ],
- "expertise" : "HTML DOM, Core DOM, DOM Bindings (JavaScript, Objective-C and COM), Security, DumpRenderTree",
- "nicks" : [
- "weinig"
- ]
- },
- "Shinichiro Hamaji" : {
- "emails" : [
- "hamaji@chromium.org"
- ],
- "expertise" : "CSS (Cascading Style Sheets), Tools",
- "nicks" : [
- "hamaji"
- ]
- },
- "Simon Fraser" : {
- "emails" : [
- "simon.fraser@apple.com"
- ],
- "expertise" : "Accelerated Compositing, Transitions and Animations, CSS Transforms",
- "nicks" : [
- "smfr"
- ]
- },
- "Simon Hausmann" : {
- "emails" : [
- "hausmann@webkit.org",
- "hausmann@kde.org",
- "simon.hausmann@digia.com"
- ],
- "expertise" : "The QtWebKit Port, Former KHTML contributor",
- "nicks" : [
- "tronical"
- ]
- },
- "Stephanie Lewis" : {
- "emails" : [
- "slewis@apple.com"
- ],
- "expertise" : "Performance Testing, Tools",
- "nicks" : [
- "sundiamonde"
- ]
- },
- "Stephen Chenney" : {
- "emails" : [
- "schenney@chromium.org"
- ],
- "expertise" : "SVG (Scalable Vector Graphics)",
- "nicks" : [
- "schenney"
- ]
- },
- "Stephen White" : {
- "emails" : [
- "senorblanco@chromium.org"
- ],
- "expertise" : "Skia port, GPU acceleration",
- "nicks" : [
- "senorblanco"
- ]
- },
- "Steve Block" : {
- "emails" : [
- "steveblock@chromium.org",
- "steveblock@google.com"
- ],
- "expertise" : "Geolocation, Android Port",
- "nicks" : [
- "steveblock"
- ]
- },
- "Steve Falkenburg" : {
- "emails" : [
- "sfalken@apple.com"
- ],
- "expertise" : "WebKit on Windows",
- "nicks" : [
- "sfalken"
- ]
- },
- "Tim Horton" : {
- "emails" : [
- "thorton@apple.com",
- "timothy_horton@apple.com"
- ],
- "expertise" : "SVG/Canvas/Graphics, WebKit2",
- "nicks" : [
- "thorton"
- ]
- },
- "Tim Omernick" : {
- "emails" : [
- "timo@apple.com"
- ]
- },
- "Timothy Hatcher" : {
- "emails" : [
- "timothy@apple.com",
- "timothy@hatcher.name"
- ],
- "expertise" : "WebKit API (Mac), WebKit Web Site, Developer Tools (Web Inspector, JavaScript Debugger)",
- "nicks" : [
- "xenon"
- ]
- },
- "Tony Chang" : {
- "emails" : [
- "tony@chromium.org"
- ],
- "expertise" : "Chromium Linux, Editing, Drag and Drop",
- "nicks" : [
- "tony^work"
- ]
- },
- "Tony Gentilcore" : {
- "emails" : [
- "tonyg@chromium.org"
- ],
- "expertise" : "HTML5 parsing, Web Timing",
- "nicks" : [
- "tonyg-cr"
- ]
- },
- "Tor Arne Vestb\u00f8" : {
- "emails" : [
- "vestbo@webkit.org",
- "tor.arne.vestbo@nokia.com"
- ],
- "expertise" : "The QtWebKit Port, HTML5 Media Elements, Plug-ins, Tools",
- "nicks" : [
- "torarne"
- ]
- },
- "Vicki Murley" : {
- "emails" : [
- "vicki@apple.com"
- ]
- },
- "Vsevolod Vlasov" : {
- "emails" : [
- "vsevik@chromium.org"
- ],
- "expertise" : "Developer Tools, Web Inspector",
- "nicks" : [
- "vsevik"
- ]
- },
- "Xan Lopez" : {
- "emails" : [
- "xan.lopez@gmail.com",
- "xan@gnome.org",
- "xan@webkit.org",
- "xlopez@igalia.com"
- ],
- "expertise" : "WebKitGTK+, Soup HTTP Backend, libsoup Contributor, WebKit a11y (focused on the ATK implementation), Epiphany/WebKit maintainer",
- "nicks" : [
- "xan"
- ]
- },
- "Yong Li" : {
- "emails" : [
- "yong.li.webkit@outlook.com"
- ],
- "nicks" : [
- "yong"
- ]
- },
- "Yury Semikhatsky" : {
- "emails" : [
- "yurys@chromium.org"
- ],
- "expertise" : "Developer Tools, Web Inspector",
- "nicks" : [
- "yurys"
- ]
- },
- "Yuta Kitamura" : {
- "emails" : [
- "yutak@chromium.org"
- ],
- "expertise" : "WebSocket, The Chromium Port",
- "nicks" : [
- "yutak"
- ]
- },
- "Zack Rusin" : {
- "emails" : [
- "zack@kde.org"
- ],
- "expertise" : "Core KHTML contributor, The QtWebKit Port",
- "nicks" : [
- "zackr"
- ]
- },
- "Zoltan Herczeg" : {
- "emails" : [
- "zherczeg@webkit.org",
- "zherczeg@inf.u-szeged.hu"
- ],
- "expertise" : "The QtWebKit Port, JIT (ARM), SVG, optimizations (SMP, SIMD), Graphics",
- "nicks" : [
- "zherczeg"
- ]
- }
- }
-}
diff --git a/Tools/Scripts/webkitpy/common/config/ews.json b/Tools/Scripts/webkitpy/common/config/ews.json
deleted file mode 100644
index b85cf7ce7..000000000
--- a/Tools/Scripts/webkitpy/common/config/ews.json
+++ /dev/null
@@ -1,56 +0,0 @@
-{
- "GTK EWS": {
- "port": "gtk",
- "watchers": [
- "xan.lopez@gmail.com"
- ]
- },
- "GTK WK2 EWS": {
- "port": "gtk-wk2",
- "watchers": [
- "xan.lopez@gmail.com"
- ]
- },
- "EFL EWS": {
- "port": "efl",
- "watchers": [
- "gyuyoung.kim@webkit.org"
- ]
- },
- "EFL WK2 EWS": {
- "port": "efl-wk2",
- "watchers": [
- "gyuyoung.kim@webkit.org"
- ]
- },
- "Qt EWS": {
- "port": "qt",
- "watchers": [
- "webkit-ews@sed.inf.u-szeged.hu"
- ]
- },
- "Qt WK2 EWS": {
- "port": "qt-wk2",
- "watchers": [
- "webkit-ews@sed.inf.u-szeged.hu"
- ]
- },
- "Win EWS": {
- "port": "win",
- "runTests": true
- },
- "Mac EWS": {
- "port": "mac",
- "watchers": [
- "rniwa@webkit.org"
- ],
- "runTests": true
- },
- "Mac WK2 EWS": {
- "port": "mac-wk2",
- "watchers": [
- "rniwa@webkit.org"
- ],
- "runTests": true
- }
-}
diff --git a/Tools/Scripts/webkitpy/common/config/irc.py b/Tools/Scripts/webkitpy/common/config/irc.py
deleted file mode 100644
index 8e198c610..000000000
--- a/Tools/Scripts/webkitpy/common/config/irc.py
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright (c) 2009 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.
-
-server="irc.freenode.net"
-port=6665
-channel="#webkit"
diff --git a/Tools/Scripts/webkitpy/common/config/orderfile b/Tools/Scripts/webkitpy/common/config/orderfile
deleted file mode 100644
index 9fb4977a9..000000000
--- a/Tools/Scripts/webkitpy/common/config/orderfile
+++ /dev/null
@@ -1,8 +0,0 @@
-Source*ChangeLog
-Source*
-Tools*ChangeLog
-Tools*
-Websites*ChangeLog
-Websites*
-LayoutTests*ChangeLog
-LayoutTests*
diff --git a/Tools/Scripts/webkitpy/common/config/ports.py b/Tools/Scripts/webkitpy/common/config/ports.py
deleted file mode 100644
index 0c20dae51..000000000
--- a/Tools/Scripts/webkitpy/common/config/ports.py
+++ /dev/null
@@ -1,232 +0,0 @@
-# Copyright (C) 2009, 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.
-#
-# WebKit's Python module for understanding the various ports
-
-import os
-import platform
-import sys
-
-from webkitpy.common.system.executive import Executive
-
-
-class DeprecatedPort(object):
- results_directory = "/tmp/layout-test-results"
-
- # Subclasses must override
- port_flag_name = None
-
- # FIXME: This is only used by BotInfo.
- def name(self):
- return self.__class__
-
- def flag(self):
- if self.port_flag_name:
- return "--port=%s" % self.port_flag_name
- return None
-
- # We might need to pass scm into this function for scm.checkout_root
- def script_path(self, script_name):
- return os.path.join("Tools", "Scripts", script_name)
-
- def script_shell_command(self, script_name):
- script_path = self.script_path(script_name)
- return Executive.shell_command_for_script(script_path)
-
- @staticmethod
- def port(port_name):
- ports = {
- "gtk": GtkPort,
- "gtk-wk2": GtkWK2Port,
- "mac": MacPort,
- "mac-wk2": MacWK2Port,
- "win": WinPort,
- "qt": QtPort,
- "qt-wk2": QtWK2Port,
- "efl": EflPort,
- "efl-wk2": EflWK2Port,
- }
- default_port = {
- "Windows": WinPort,
- "Darwin": MacPort,
- }
- # Do we really need MacPort as the ultimate default?
- return ports.get(port_name, default_port.get(platform.system(), MacPort))()
-
- def makeArgs(self):
- # FIXME: This shouldn't use a static Executive().
- args = '--makeargs="-j%s"' % Executive().cpu_count()
- if os.environ.has_key('MAKEFLAGS'):
- args = '--makeargs="%s"' % os.environ['MAKEFLAGS']
- return args
-
- def update_webkit_command(self, non_interactive=False):
- return self.script_shell_command("update-webkit")
-
- def check_webkit_style_command(self):
- return self.script_shell_command("check-webkit-style")
-
- def prepare_changelog_command(self):
- return self.script_shell_command("prepare-ChangeLog")
-
- def build_webkit_command(self, build_style=None):
- command = self.script_shell_command("build-webkit")
- if build_style == "debug":
- command.append("--debug")
- if build_style == "release":
- command.append("--release")
- return command
-
- def run_javascriptcore_tests_command(self):
- return self.script_shell_command("run-javascriptcore-tests")
-
- def run_webkit_unit_tests_command(self):
- return None
-
- def run_webkit_tests_command(self):
- return self.script_shell_command("run-webkit-tests")
-
- def run_python_unittests_command(self):
- return self.script_shell_command("test-webkitpy")
-
- def run_perl_unittests_command(self):
- return self.script_shell_command("test-webkitperl")
-
- def run_bindings_tests_command(self):
- return self.script_shell_command("run-bindings-tests")
-
-
-class MacPort(DeprecatedPort):
- port_flag_name = "mac"
-
-
-class MacWK2Port(DeprecatedPort):
- port_flag_name = "mac-wk2"
-
- def run_webkit_tests_command(self):
- command = super(MacWK2Port, self).run_webkit_tests_command()
- command.append("-2")
- return command
-
-
-class WinPort(DeprecatedPort):
- port_flag_name = "win"
-
- def run_bindings_tests_command(self):
- return None
-
-
-class GtkPort(DeprecatedPort):
- port_flag_name = "gtk"
-
- def build_webkit_command(self, build_style=None):
- command = super(GtkPort, self).build_webkit_command(build_style=build_style)
- command.append("--gtk")
- command.append("--update-gtk")
- command.append("--no-webkit2")
- command.append(super(GtkPort, self).makeArgs())
- return command
-
- def run_webkit_tests_command(self):
- command = super(GtkPort, self).run_webkit_tests_command()
- command.append("--gtk")
- return command
-
-
-class GtkWK2Port(DeprecatedPort):
- port_flag_name = "gtk-wk2"
-
- def build_webkit_command(self, build_style=None):
- command = super(GtkWK2Port, self).build_webkit_command(build_style=build_style)
- command.append("--gtk")
- command.append("--update-gtk")
- command.append("--no-webkit1")
- command.append(super(GtkWK2Port, self).makeArgs())
- return command
-
- def run_webkit_tests_command(self):
- command = super(GtkWK2Port, self).run_webkit_tests_command()
- command.append("--gtk")
- command.append("-2")
- return command
-
-
-class QtPort(DeprecatedPort):
- port_flag_name = "qt"
-
- def build_webkit_command(self, build_style=None):
- command = super(QtPort, self).build_webkit_command(build_style=build_style)
- command.append("--qt")
- command.append("--no-webkit2")
- command.append(super(QtPort, self).makeArgs())
- return command
-
- def run_webkit_tests_command(self):
- command = super(QtPort, self).run_webkit_tests_command()
- command.append("--qt")
- return command
-
-
-class QtWK2Port(DeprecatedPort):
- port_flag_name = "qt-wk2"
-
- def build_webkit_command(self, build_style=None):
- command = super(QtWK2Port, self).build_webkit_command(build_style=build_style)
- command.append("--qt")
- command.append(super(QtWK2Port, self).makeArgs())
- return command
-
- def run_webkit_tests_command(self):
- command = super(QtWK2Port, self).run_webkit_tests_command()
- command.append("--qt")
- command.append("-2")
- return command
-
-
-class EflPort(DeprecatedPort):
- port_flag_name = "efl"
-
- def build_webkit_command(self, build_style=None):
- command = super(EflPort, self).build_webkit_command(build_style=build_style)
- command.append("--efl")
- command.append("--update-efl")
- command.append("--no-webkit2")
- command.append(super(EflPort, self).makeArgs())
- return command
-
-
-class EflWK2Port(DeprecatedPort):
- port_flag_name = "efl-wk2"
-
- def build_webkit_command(self, build_style=None):
- command = super(EflWK2Port, self).build_webkit_command(build_style=build_style)
- command.append("--efl")
- command.append("--update-efl")
- command.append("--no-webkit1")
- command.append(super(EflWK2Port, self).makeArgs())
- return command
diff --git a/Tools/Scripts/webkitpy/common/config/ports_mock.py b/Tools/Scripts/webkitpy/common/config/ports_mock.py
deleted file mode 100644
index 779796cd8..000000000
--- a/Tools/Scripts/webkitpy/common/config/ports_mock.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class MockPort(object):
- def name(self):
- return "MockPort"
-
- def check_webkit_style_command(self):
- return ["mock-check-webkit-style"]
-
- def update_webkit_command(self, non_interactive=False):
- return ["mock-update-webkit"]
-
- def build_webkit_command(self, build_style=None):
- return ["mock-build-webkit"]
-
- def prepare_changelog_command(self):
- return ['mock-prepare-ChangeLog']
-
- def run_python_unittests_command(self):
- return ['mock-test-webkitpy']
-
- def run_perl_unittests_command(self):
- return ['mock-test-webkitperl']
-
- def run_javascriptcore_tests_command(self):
- return ['mock-run-javacriptcore-tests']
-
- def run_webkit_unit_tests_command(self):
- return ['mock-run-webkit-unit-tests']
-
- def run_webkit_tests_command(self):
- return ['mock-run-webkit-tests']
-
- def run_bindings_tests_command(self):
- return ['mock-run-bindings-tests']
diff --git a/Tools/Scripts/webkitpy/common/config/ports_unittest.py b/Tools/Scripts/webkitpy/common/config/ports_unittest.py
deleted file mode 100644
index daca54a68..000000000
--- a/Tools/Scripts/webkitpy/common/config/ports_unittest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (c) 2009, 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.config.ports import *
-
-
-class DeprecatedPortTest(unittest.TestCase):
- def test_mac_port(self):
- self.assertEqual(MacPort().flag(), "--port=mac")
- self.assertEqual(MacPort().run_webkit_tests_command(), DeprecatedPort().script_shell_command("run-webkit-tests"))
- self.assertEqual(MacPort().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit"))
- self.assertEqual(MacPort().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug"])
- self.assertEqual(MacPort().build_webkit_command(build_style="release"), DeprecatedPort().script_shell_command("build-webkit") + ["--release"])
-
- def test_gtk_port(self):
- self.assertEqual(GtkPort().flag(), "--port=gtk")
- self.assertEqual(GtkPort().run_webkit_tests_command(), DeprecatedPort().script_shell_command("run-webkit-tests") + ["--gtk"])
- self.assertEqual(GtkPort().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit") + ["--gtk", "--update-gtk", "--no-webkit2", DeprecatedPort().makeArgs()])
- self.assertEqual(GtkPort().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug", "--gtk", "--update-gtk", "--no-webkit2", DeprecatedPort().makeArgs()])
-
- def test_gtk_wk2_port(self):
- self.assertEqual(GtkWK2Port().flag(), "--port=gtk-wk2")
- self.assertEqual(GtkWK2Port().run_webkit_tests_command(), DeprecatedPort().script_shell_command("run-webkit-tests") + ["--gtk", "-2"])
- self.assertEqual(GtkWK2Port().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit") + ["--gtk", "--update-gtk", "--no-webkit1", DeprecatedPort().makeArgs()])
- self.assertEqual(GtkWK2Port().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug", "--gtk", "--update-gtk", "--no-webkit1", DeprecatedPort().makeArgs()])
-
- def test_efl_port(self):
- self.assertEqual(EflPort().flag(), "--port=efl")
- self.assertEqual(EflPort().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit") + ["--efl", "--update-efl", "--no-webkit2", DeprecatedPort().makeArgs()])
- self.assertEqual(EflPort().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug", "--efl", "--update-efl", "--no-webkit2", DeprecatedPort().makeArgs()])
-
- def test_qt_port(self):
- self.assertEqual(QtPort().flag(), "--port=qt")
- self.assertEqual(QtPort().run_webkit_tests_command(), DeprecatedPort().script_shell_command("run-webkit-tests") + ["--qt"])
- self.assertEqual(QtPort().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit") + ["--qt", "--no-webkit2", DeprecatedPort().makeArgs()])
- self.assertEqual(QtPort().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug", "--qt", "--no-webkit2", DeprecatedPort().makeArgs()])
-
- def test_qt_wk2_port(self):
- self.assertEqual(QtWK2Port().flag(), "--port=qt-wk2")
- self.assertEqual(QtWK2Port().run_webkit_tests_command(), DeprecatedPort().script_shell_command("run-webkit-tests") + ["--qt", "-2"])
- self.assertEqual(QtWK2Port().build_webkit_command(), DeprecatedPort().script_shell_command("build-webkit") + ["--qt", DeprecatedPort().makeArgs()])
- self.assertEqual(QtWK2Port().build_webkit_command(build_style="debug"), DeprecatedPort().script_shell_command("build-webkit") + ["--debug", "--qt", DeprecatedPort().makeArgs()])
diff --git a/Tools/Scripts/webkitpy/common/config/urls.py b/Tools/Scripts/webkitpy/common/config/urls.py
deleted file mode 100644
index 311f25061..000000000
--- a/Tools/Scripts/webkitpy/common/config/urls.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (c) 2010, 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.
-
-import re
-
-
-def view_source_url(local_path):
- return "http://trac.webkit.org/browser/trunk/%s" % local_path
-
-
-def view_revision_url(revision_number):
- return "http://trac.webkit.org/changeset/%s" % revision_number
-
-
-contribution_guidelines = "http://webkit.org/coding/contributing.html"
-
-bug_server_domain = "webkit.org"
-bug_server_host = "bugs." + bug_server_domain
-_bug_server_regex = "https?://%s/" % re.sub('\.', '\\.', bug_server_host)
-bug_server_url = "https://%s/" % bug_server_host
-bug_url_long = _bug_server_regex + r"show_bug\.cgi\?id=(?P<bug_id>\d+)(&ctype=xml|&excludefield=attachmentdata)*"
-bug_url_short = r"https?\://%s/b/(?P<bug_id>\d+)" % bug_server_domain
-
-attachment_url = _bug_server_regex + r"attachment\.cgi\?id=(?P<attachment_id>\d+)(&action=(?P<action>\w+))?"
-direct_attachment_url = r"https?://bug-(?P<bug_id>\d+)-attachments.%s/attachment\.cgi\?id=(?P<attachment_id>\d+)" % bug_server_domain
-
-buildbot_url = "http://build.webkit.org"
-
-def parse_bug_id(string):
- if not string:
- return None
- match = re.search(bug_url_short, string)
- if match:
- return int(match.group('bug_id'))
- match = re.search(bug_url_long, string)
- if match:
- return int(match.group('bug_id'))
- return None
-
-
-def parse_attachment_id(string):
- if not string:
- return None
- match = re.search(attachment_url, string)
- if match:
- return int(match.group('attachment_id'))
- match = re.search(direct_attachment_url, string)
- if match:
- return int(match.group('attachment_id'))
- return None
diff --git a/Tools/Scripts/webkitpy/common/config/urls_unittest.py b/Tools/Scripts/webkitpy/common/config/urls_unittest.py
deleted file mode 100644
index c1a082ccb..000000000
--- a/Tools/Scripts/webkitpy/common/config/urls_unittest.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from .urls import parse_bug_id, parse_attachment_id
-
-
-class URLsTest(unittest.TestCase):
- def test_parse_bug_id(self):
- # FIXME: These would be all better as doctests
- self.assertEqual(12345, parse_bug_id("http://webkit.org/b/12345"))
- self.assertEqual(12345, parse_bug_id("foo\n\nhttp://webkit.org/b/12345\nbar\n\n"))
- self.assertEqual(12345, parse_bug_id("http://bugs.webkit.org/show_bug.cgi?id=12345"))
- self.assertEqual(12345, parse_bug_id("http://bugs.webkit.org/show_bug.cgi?id=12345&ctype=xml"))
- self.assertEqual(12345, parse_bug_id("http://bugs.webkit.org/show_bug.cgi?id=12345&ctype=xml&excludefield=attachmentdata"))
- self.assertEqual(12345, parse_bug_id("http://bugs.webkit.org/show_bug.cgi?id=12345excludefield=attachmentdata&ctype=xml"))
-
- # Our url parser is super-fragile, but at least we're testing it.
- self.assertIsNone(parse_bug_id("http://www.webkit.org/b/12345"))
- self.assertIsNone(parse_bug_id("http://bugs.webkit.org/show_bug.cgi?ctype=xml&id=12345"))
- self.assertIsNone(parse_bug_id("http://bugs.webkit.org/show_bug.cgi?ctype=xml&id=12345&excludefield=attachmentdata"))
- self.assertIsNone(parse_bug_id("http://bugs.webkit.org/show_bug.cgi?ctype=xml&excludefield=attachmentdata&id=12345"))
- self.assertIsNone(parse_bug_id("http://bugs.webkit.org/show_bug.cgi?excludefield=attachmentdata&ctype=xml&id=12345"))
- self.assertIsNone(parse_bug_id("http://bugs.webkit.org/show_bug.cgi?excludefield=attachmentdata&id=12345&ctype=xml"))
-
- def test_parse_attachment_id(self):
- self.assertEqual(12345, parse_attachment_id("https://bugs.webkit.org/attachment.cgi?id=12345&action=review"))
- self.assertEqual(12345, parse_attachment_id("https://bugs.webkit.org/attachment.cgi?id=12345&action=edit"))
- self.assertEqual(12345, parse_attachment_id("https://bugs.webkit.org/attachment.cgi?id=12345&action=prettypatch"))
- self.assertEqual(12345, parse_attachment_id("https://bugs.webkit.org/attachment.cgi?id=12345&action=diff"))
-
- # Direct attachment links are hosted from per-bug subdomains:
- self.assertEqual(12345, parse_attachment_id("https://bug-23456-attachments.webkit.org/attachment.cgi?id=12345"))
- # Make sure secure attachment URLs work too.
- self.assertEqual(12345, parse_attachment_id("https://bug-23456-attachments.webkit.org/attachment.cgi?id=12345&t=Bqnsdkl9fs"))
diff --git a/Tools/Scripts/webkitpy/common/config/watchlist b/Tools/Scripts/webkitpy/common/config/watchlist
deleted file mode 100644
index c247c2dd3..000000000
--- a/Tools/Scripts/webkitpy/common/config/watchlist
+++ /dev/null
@@ -1,402 +0,0 @@
-# When editing this file, please run the following command to make sure you
-# haven't introduced any syntax errors:
-#
-# ./Tools/Scripts/check-webkit-style
-#
-# If you want to test your regular expressions, you can edit various files and
-# then try following command:
-#
-# ./Tools/Scripts/webkit-patch apply-watchlist-local
-#
-{
- "DEFINITIONS": {
- "AppleMacPublicApi": {
- "filename": r"Source/WebCore/bindings/objc/PublicDOMInterfaces.h"
- },
- "Forms": {
- "filename": r"Source/WebCore/html/HTML(DataList|FieldSet|Input|Keygen|Label|Legend|OptGroup|Option|Output|Select|TextArea)Element\."
- r"|Source/WebCore/html/.*Form[A-Z].*\."
- r"|Source/WebCore/html/\w*InputType\."
- r"|Source/WebCore/html/shadow/(SliderThumbElement|TextControlInnerElements)\."
- r"|Source/WebCore/rendering/Render(FileUploadControl|ListBox|MenuList|Slider|TextControl.*)\."
- },
- "Geolocation": {
- "filename": r"Source/WebCore/Modules/geolocation/"
- r"|Source/WebCore/page/GeolocationClient.h"
- r"|Source/WebCore/bindings/js/JSGeolocationCustom.cpp"
- r"|Source/WebCore/platform/mock/GeolocationClientMock.(h|cpp)"
- r"|Source/WebKit2/WebProcess/Geolocation/",
- },
- "GStreamerGraphics": {
- "filename": r"Source/WebCore/platform/graphics/gstreamer/",
- },
- "GStreamerAudio": {
- "filename": r"Source/WebCore/platform/audio/gstreamer/",
- },
- "WebIDL": {
- "filename": r"Source/WebCore/(?!inspector)(?!testing).*\.idl"
- },
- "webkitpy": {
- "filename": r"Tools/Scripts/webkitpy/",
- },
- "webkitperl": {
- "filename": r"Tools/Scripts/webkitperl/"
- r"|Tools/Scripts/webkitdirs.pm"
- r"|Tools/Scripts/VCSUtils.pm"
- r"|Tools/Scripts/test-webkitperl",
- },
- "SVNScripts": {
- "filename": r"Tools/Scripts/svn-.*",
- },
- "XSS": {
- "filename": r".*XSS",
- },
- "FrameLoader": {
- "more": r"FrameLoader\.(cpp|h)",
- },
- "Loader": {
- "filename": r"Source/WebCore/loader/",
- },
- "Rendering": {
- "filename": r"Source/WebCore/rendering/",
- },
- "RenderLayers": {
- "filename": r"Source/WebCore/rendering/RenderLayer*",
- },
- "GraphicsLayer": {
- "filename": r"Source/WebCore/platform/graphics/GraphicsLayer*",
- },
- "CoreAnimation": {
- "filename": r"Source/WebCore/platform/graphics/ca/",
- },
- "Animation": {
- "filename": r"Source/WebCore/page/animation/",
- },
- "GtkWebKit2PublicAPI": {
- "filename": r"Source/WebKit2/UIProcess/API/gtk/",
- },
- "QtBuildSystem": {
- # Project files for each target are intentionally left out, as those
- # mostly list source and header files, which would just add noise.
- "filename": r"Tools/qmake/"
- r"|WebKit.pro",
- },
- "QtWebKit2PublicAPI": {
- "filename": r"Source/WebKit2/UIProcess/API/qt/"
- r"|Source/WebKit2/UIProcess/API/cpp/qt/"
- r"|Source/WebKit2/UIProcess/API/C/qt/",
- },
- "QtGraphics": {
- "filename": r"Source/WebCore/platform/graphics/qt/"
- },
- "CoordinatedGraphics": {
- "filename": r"Source/WebKit2/WebProcess/WebPage/CoordinatedGraphics/"
- r"|Source/WebKit2/UIProcess/CoordinatedGraphics/"
- r"|Source/WebKit2/Shared/CoordinatedGraphics/"
- r"|Source/WebCore/platform/graphics/surfaces/",
- },
- "TextureMapper": {
- "filename": r"Source/WebCore/platform/graphics/texmap/",
- },
- "OpenGL": {
- "filename": r"Source/WebCore/platform/graphics/opengl/",
- },
- "QtWebKit2PlatformSpecific": {
- "filename": r"Source/WebKit2/.*\.(pri|pro)"
- r"|Source/WebKit2/Platform/qt/"
- r"|Source/WebKit2/qt/"
- r"|Source/WebKit2/PluginProcess/qt/"
- r"|Source/WebKit2/Platform/qt/"
- r"|Source/WebKit2/Shared/API/c/qt/"
- r"|Source/WebKit2/Shared/qt/"
- r"|Source/WebKit2/WebProcess/InjectedBundle/qt/"
- r"|Source/WebKit2/WebProcess/FullScreen/qt/"
- r"|Source/WebKit2/WebProcess/WebPage/qt/"
- r"|Source/WebKit2/WebProcess/qt/"
- r"|Source/WebKit2/WebProcess/Plugins/Netscape/qt/"
- r"|Source/WebKit2/WebProcess/Downloads/qt/"
- r"|Source/WebKit2/WebProcess/WebCoreSupport/qt/"
- r"|Source/WebKit2/WebProcess/Cookies/qt/"
- r"|Source/WebKit2/UIProcess/qt/"
- r"|Source/WebKit2/UIProcess/Plugins/qt/"
- r"|Source/WebKit2/UIProcess/Launcher/qt/",
- },
- "CSS": {
- "filename": r"Source/WebCore/css/",
- },
- "DOM": {
- "filename": r"Source/WebCore/dom/",
- },
- "HTML": {
- "filename": r"Source/WebCore/html/",
- },
- "DOMAttributes": {
- "filename": r"Source/WebCore/dom/.*Attr.*"
- r"|Source/WebCore/dom/NamedNodeMap\.(cpp|h|idl)"
- r"|Source/WebCore/dom/Element\.(cpp|h|idl)",
- },
- "EFL": {
- "filename": r"Source/WebKit/efl/"
- r"|Source/WebCore/platform/efl/"
- r"|Source/WTF/wtf/efl/"
- r"|Tools/EWebLauncher"
- r"|Tools/DumpRenderTree/efl/"
- r"|LayoutTests/platform/efl/",
- },
- "EFLWebKit2PublicAPI": {
- "filename": r"Source/WebKit2/UIProcess/API/efl/"
- r"|Source/WebKit2/UIProcess/API/C/efl/",
- },
- "EFLWebKit2PlatformSpecific": {
- "filename": r"Source/WebKit2/.*\.(cmake|txt)"
- r"|Source/WebKit2/Platform/efl/"
- r"|Source/WebKit2/efl/"
- r"|Source/WebKit2/Shared/API/c/efl/"
- r"|Source/WebKit2/Shared/efl/"
- r"|Source/WebKit2/WebProcess/InjectedBundle/efl/"
- r"|Source/WebKit2/WebProcess/WebPage/efl/"
- r"|Source/WebKit2/WebProcess/efl/"
- r"|Source/WebKit2/WebProcess/Downloads/efl/"
- r"|Source/WebKit2/WebProcess/WebCoreSupport/efl/"
- r"|Source/WebKit2/UIProcess/efl/"
- r"|Source/WebKit2/UIProcess/Launcher/efl/",
- },
- "CMake": {
- "filename": r".*CMakeLists\w*\.txt"
- r"|.*\w+\.cmake"
- r"|Source/cmake/",
- },
- "Selectors": {
- "filename": r"Source/WebCore/css/CSSSelector*"
- r"|Source/WebCore/css/SelectorChecker.*"
- r"|Source/WebCore/css/StyleResolver.*"
- r"|Source/WebCore/dom/SelectorQuery.*",
- },
- "SoupNetwork": {
- "filename": r"Source/WebCore/platform/network/soup/",
- },
- "ScrollingCoordinator": {
- "filename": r"Source/WebCore/page/scrolling/",
- },
- "WebKitGTKTranslations": {
- "filename": r"Source/WebKit/gtk/po/",
- },
- "Media": {
- "filename": r"(Source|LayoutTests)/.*([Mm]edia|[Aa]udio|[Vv]ideo)",
- },
- "MathML": {
- "filename": r"(Source|LayoutTests|Websites)/.*mathml",
- },
- "Editing": {
- "filename": r"Source/WebCore/editing/",
- },
- "BlackBerry": {
- "filename": r"Source/WebKit/blackberry/"
- r"|Source/WebCore/page/blackberry"
- r"|Source/WebCore/history/blackberry"
- r"|Source/WebCore/plugins/blackberry"
- r"|Source/WebCore/editing/blackberry"
- r"|Source/WebCore/Resources/blackberry"
- r"|Source/WebCore/platform/image-decoders/blackberry"
- r"|Source/WebCore/platform/blackberry"
- r"|Source/WebCore/platform/text/blackberry"
- r"|Source/WebCore/platform/network/blackberry"
- r"|Source/WebCore/platform/graphics/blackberry"
- r"|Source/WTF/wtf/blackberry"
- r"|ManualTests/blackberry"
- r"|Tools/DumpRenderTree/blackberry"
- r"|LayoutTests/platform/blackberry",
- },
- "NetworkInfo": {
- "filename": r"Source/WebCore/Modules/networkinfo",
- },
- "Battery": {
- "filename": r"Source/WebCore/Modules/battery",
- },
- "WTF": {
- "filename": r"Source/WTF/wtf",
- },
- "WebGL": {
- "filename": r"Source/WebCore/html/canvas/.*WebGL.*"
- r"|Source/WebCore/bindings/js/.*WebGL.*"
- r"|Source/WebCore/platform/graphics/gpu"
- r"|Source/WebCore/platform/graphics/opengl"
- r"|Source/WebCore/platform/graphics/ANGLE.*"
- r"|Source/WebCore/platform/graphics/.*GraphicsContext3D.*"
- r"|Source/ThirdParty/ANGLE",
- },
- "Filters": {
- "filename": r"Source/WebCore/platform/graphics/filters"
- r"|Source/WebCore/rendering/.*Filter.*"
- r"|Source/WebCore/rendering/style/.*Filter.*"
- r"|Source/WebCore/rendering/svg/.*Filter.*"
- r"|Source/WebCore/svg/graphics/filters"
- r"|Source/WebCore/svg/graphics/.*Filter.*",
- },
- "TouchAdjustment": {
- "filename": r"Source/WebCore/page/TouchAdjustment.*"
- r"|LayoutTests/touchadjustment"
- r"|Source/WebKit/blackberry/WebKitSupport/FatFingers.*",
- },
- "SVG": {
- "filename": r"Source/WebCore/svg"
- r"|Source/WebCore/rendering/svg",
- },
- "WebInspectorAPI": {
- "filename": r"Source/WebCore/inspector/InjectedScriptSource.js"
- r"|Source/WebCore/inspector/.+\.json"
- r"|Source/WebCore/inspector/.+\.idl"
- r"|Source/WebCore/page/Console.idl",
- },
- "WebSocket": {
- "filename": r"Source/WebCore/Modules/websockets"
- r"|Source/WebCore/platform/network/(|.+/)SocketStream.*",
- },
- "MediaStream": {
- "filename": r"Source/WebCore/Modules/mediastream"
- r"|Source/WebCore/platform/mediastream"
- r"|LayoutTests/fast/mediastream",
- },
- "Accessibility": {
- "filename": r"Source/WebCore/accessibility"
- r"|LayoutTests/.*accessibility",
- },
- "Cairo": {
- "filename": r"Source/WebCore/platform/graphics/cairo",
- },
- "Harfbuzz": {
- "filename": r"Source/WebCore/platform/graphics/harfbuzz",
- },
- "PerformanceTests": {
- "filename": r"PerformanceTests"
- r"|Tools/Scripts/webkitpy/performance_tests",
- },
- "GtkBuildSystem": {
- "filename": r"configure.ac"
- r"|.*GNUmakefile.(am|features.am.in)",
- },
- "ConsoleUsage": {
- "more": r"[Aa]ddConsoleMessage|reportException|logExceptionToConsole|addMessage|printErrorMessage"
- },
- "ContentSecurityPolicyUsage": {
- "more": r"[Cc]ontentSecurityPolicy(?!\.(h|cpp))",
- },
- "ContentSecurityPolicyFiles": {
- "filename": r"Source/WebCore/page/(Content|DOM)SecurityPolicy\."
- r"|LayoutTests/http/tests/security/contentSecurityPolicy"
- },
- "RegionsDevelopment": {
- "filename": r"Source/WebCore/rendering/RenderRegion\.(h|cpp)"
- r"|Source/WebCore/rendering/RenderFlowThread\.(h|cpp)"
- r"|Source/WebCore/rendering/FlowThreadController\.(h|cpp)"
- r"|Source/WebCore/rendering/RenderRegionSet\.(h|cpp)"
- r"|Source/WebCore/rendering/RenderNamedFlowThread\.(h|cpp)"
- r"|Source/WebCore/rendering/RenderBoxRegionInfo\.h"
- r"|Source/WebCore/dom/WebKitNamedFlow\.(h|cpp|idl)"
- r"|Source/WebCore/dom/(DOM)?NamedFlowCollection\.(h|cpp|idl)"
- r"|Source/WebCore/css/WebKitCSSRegionRule\.(h|cpp|idl)"
- r"|LayoutTests/fast/regions",
- },
- "RegionsExpectationsMore": {
- "filename": r"LayoutTests/platform/.*TestExpectations",
- "more": r"fast/regions/.*\.html",
- },
- "RegionsExpectationsLess": {
- "filename": r"LayoutTests/platform/.*TestExpectations",
- "less": r"fast/regions/.*\.html",
- },
- "RegionsUsage": {
- "more": r"(RenderRegion|RenderFlowThread|RenderNamedFlowThread)(?!\.(h|cpp))",
- },
- "IndexedDB": {
- "filename": r"Source/WebCore/Modules/indexeddb"
- r"|Source/WebCore/bindings/.*IDB.*\.(h|cpp)"
- r"|Source/WebCore/bindings/.*SerializedScriptValue.*\.(h|cpp)"
- r"|Source/WebCore/platform/leveldb"
- r"|LayoutTests/storage/indexeddb"
- r"|LayoutTests/platform/.*/storage/indexeddb",
- },
- "BindingsScripts": {
- "filename": r"Source/WebCore/bindings/scripts/",
- },
- "cURLNetwork": {
- "filename": r"Source/WebCore/platform/network/curl/",
- },
- },
- "CC_RULES": {
- # Note: All email addresses listed must be registered with bugzilla.
- # Specifically, levin@chromium.org and levin+threading@chromium.org are
- # two different accounts as far as bugzilla is concerned.
- "Accessibility": [ "cfleizach@apple.com", "dmazzoni@google.com", "apinheiro@igalia.com", "jdiggs@igalia.com", "aboxhall@chromium.org", "mario@webkit.org" ],
- "Animation" : [ "simon.fraser@apple.com", "dino@apple.com", "dstockwell@chromium.org" ],
- "AppleMacPublicApi": [ "timothy@apple.com" ],
- "Battery": [ "gyuyoung.kim@webkit.org", "dchris@gmail.com" ],
- "BindingsScripts": [ "dchris@gmail.com" ],
- "BlackBerry": [ "mifenton@rim.com", "rwlbuis@gmail.com", "tonikitoo@webkit.org" ],
- "Cairo": [ "dominik.rottsches@intel.com" ],
- "CMake": [ "rakuco@webkit.org", "gyuyoung.kim@webkit.org" ],
- "CoordinatedGraphics" : [ "noam@webkit.org", "zeno@webkit.org", "cmarcelo@webkit.org", "luiz@webkit.org" ],
- "ConsoleUsage" : [ "mkwst@chromium.org" ],
- "ContentSecurityPolicyFiles|ContentSecurityPolicyUsage" : [ "mkwst@chromium.org" ],
- "CoreAnimation" : [ "simon.fraser@apple.com" ],
- "CSS": [ "alexis@webkit.org", "macpherson@chromium.org", "esprehn+autocc@chromium.org", "glenn@skynav.com" ],
- "cURLNetwork": [ "galpeter@inf.u-szeged.hu" ],
- "DOM": [ "esprehn+autocc@chromium.org", "kangil.han@samsung.com" ],
- "DOMAttributes": [ "cmarcelo@webkit.org", ],
- "EFL": [ "rakuco@webkit.org", "gyuyoung.kim@webkit.org", "dchris@gmail.com" ],
- "EFLWebKit2PlatformSpecific": [ "gyuyoung.kim@webkit.org", "rakuco@webkit.org", "dchris@gmail.com" ],
- "EFLWebKit2PublicAPI": [ "gyuyoung.kim@webkit.org", "rakuco@webkit.org", "dchris@gmail.com" ],
- "Editing": [ "mifenton@rim.com" ],
- "Filters": [ "dino@apple.com", "kondapallykalyan@gmail.com" ],
- "Forms": [ "tkent@chromium.org", "mifenton@rim.com" ],
- "FrameLoader": [ "japhet@chromium.org" ],
- "Geolocation": [ "benjamin@webkit.org" ],
- "GraphicsLayer": [ "simon.fraser@apple.com", "kondapallykalyan@gmail.com" ],
- "GStreamerGraphics": [ "alexis@webkit.org", "pnormand@igalia.com", "gns@gnome.org", "mrobinson@webkit.org" ],
- "GStreamerAudio": [ "pnormand@igalia.com", "dchris@gmail.com" ],
- "GtkBuildSystem": [ "zandobersek@gmail.com" ],
- "GtkWebKit2PublicAPI": [ "cgarcia@igalia.com", "gns@gnome.org", "mrobinson@webkit.org" ],
- "Harfbuzz": [ "dominik.rottsches@intel.com" ],
- "HTML": [ "esprehn+autocc@chromium.org" ],
- "IndexedDB": [ "alecflett@chromium.org", "jsbell@chromium.org" ],
- "Loader": [ "japhet@chromium.org" ],
- "MathML": [ "dbarton@mathscribe.com", "mrobinson@webkit.org", "fred.wang@free.fr" ],
- "Media": [ "eric.carlson@apple.com", "jer.noble@apple.com", "glenn@skynav.com" ],
- "MediaStream": [ "tommyw@google.com", "hta@google.com" ],
- "NetworkInfo": [ "gyuyoung.kim@webkit.org", "dchris@gmail.com" ],
- "OpenGL" : [ "noam@webkit.org", "dino@apple.com", "kondapallykalyan@gmail.com" ],
- "PerformanceTests": [ "rniwa@webkit.org" ],
- "QtBuildSystem" : [ "abecsi@webkit.org" ],
- "QtGraphics" : [ "noam@webkit.org" ],
- "QtWebKit2PlatformSpecific": [ "alexis@webkit.org", "cmarcelo@webkit.org", "abecsi@webkit.org" ],
- "QtWebKit2PublicAPI": [ "alexis@webkit.org", "cmarcelo@webkit.org", "abecsi@webkit.org" ],
- "RegionsDevelopment|RegionsExpectationsMore|RegionsExpectationsLess|RegionsUsage": [ "WebkitBugTracker@adobe.com" ],
- "Rendering": [ "esprehn+autocc@chromium.org", "glenn@skynav.com", "kondapallykalyan@gmail.com" ],
- "RenderLayers" : [ "simon.fraser@apple.com", "kondapallykalyan@gmail.com" ],
- "SVG": ["schenney@chromium.org", "pdr@google.com", "fmalita@chromium.org", "dominik.rottsches@intel.com" ],
- "SVNScripts": [ "dbates@webkit.org" ],
- "ScrollingCoordinator": [ "andersca@apple.com", "jamesr@chromium.org", "tonikitoo@webkit.org", "cmarcelo@webkit.org", "luiz@webkit.org" ],
- "Selectors": [ "allan.jensen@digia.com" ],
- "SoupNetwork": [ "rakuco@webkit.org", "gns@gnome.org", "mrobinson@webkit.org", "danw@gnome.org", "dchris@gmail.com" ],
- "TextureMapper" : [ "noam@webkit.org", "cmarcelo@webkit.org", "luiz@webkit.org", "kondapallykalyan@gmail.com" ],
- "TouchAdjustment" : [ "allan.jensen@digia.com" ],
- "WTF": [ "benjamin@webkit.org", "cmarcelo@webkit.org" ],
- "WebGL": [ "dino@apple.com", "kondapallykalyan@gmail.com" ],
- "WebIDL": [ "esprehn+autocc@chromium.org", "dchris@gmail.com", "kondapallykalyan@gmail.com" ],
- "WebInspectorAPI": [ "timothy@apple.com", "joepeck@webkit.org", "graouts@apple.com" ],
- "WebKitGTKTranslations": [ "gns@gnome.org", "mrobinson@webkit.org" ],
- "WebSocket": [ "yutak@chromium.org", "toyoshim+watchlist@chromium.org" ],
- "XSS": [ "dbates@webkit.org" ],
- "webkitperl": [ "dbates@webkit.org" ],
- "webkitpy": [ "dpranke@chromium.org", "glenn@skynav.com" ],
- },
- "MESSAGE_RULES": {
- "AppleMacPublicApi": [ "Please wait for approval from timothy@apple.com (or another member "
- "of the Apple Safari Team) before submitting "
- "because this patch contains changes to the Apple Mac "
- "WebKit.framework public API.", ],
- "GtkWebKit2PublicAPI": [ "Thanks for the patch. If this patch contains new public API "
- "please make sure it follows the guidelines for new WebKit2 GTK+ API. "
- "See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API", ],
- },
-}
diff --git a/Tools/Scripts/webkitpy/common/editdistance.py b/Tools/Scripts/webkitpy/common/editdistance.py
deleted file mode 100644
index 2eccca82d..000000000
--- a/Tools/Scripts/webkitpy/common/editdistance.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2011 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.
-
-from array import array
-
-
-def edit_distance(str1, str2):
- unsignedShort = 'h'
- distances = [array(unsignedShort, (0,) * (len(str2) + 1)) for i in range(0, len(str1) + 1)]
- # distances[0][0] = 0 since distance between str1[:0] and str2[:0] is 0
- for i in range(1, len(str1) + 1):
- distances[i][0] = i # Distance between str1[:i] and str2[:0] is i
-
- for j in range(1, len(str2) + 1):
- distances[0][j] = j # Distance between str1[:0] and str2[:j] is j
-
- for i in range(0, len(str1)):
- for j in range(0, len(str2)):
- diff = 0 if str1[i] == str2[j] else 1
- # Deletion, Insertion, Identical / Replacement
- distances[i + 1][j + 1] = min(distances[i + 1][j] + 1, distances[i][j + 1] + 1, distances[i][j] + diff)
- return distances[len(str1)][len(str2)]
diff --git a/Tools/Scripts/webkitpy/common/editdistance_unittest.py b/Tools/Scripts/webkitpy/common/editdistance_unittest.py
deleted file mode 100644
index 1f67572b4..000000000
--- a/Tools/Scripts/webkitpy/common/editdistance_unittest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.editdistance import edit_distance
-
-
-class EditDistanceTest(unittest.TestCase):
- def test_edit_distance(self):
- self.assertEqual(edit_distance('', 'aa'), 2)
- self.assertEqual(edit_distance('aa', ''), 2)
- self.assertEqual(edit_distance('a', 'ab'), 1)
- self.assertEqual(edit_distance('ab', 'a'), 1)
- self.assertEqual(edit_distance('ab', 'aa'), 1)
- self.assertEqual(edit_distance('aa', 'ab'), 1)
- self.assertEqual(edit_distance('abd', 'abcdef'), 3)
- self.assertEqual(edit_distance('abcdef', 'abd'), 3)
diff --git a/Tools/Scripts/webkitpy/common/find_files.py b/Tools/Scripts/webkitpy/common/find_files.py
deleted file mode 100644
index 7a10120ef..000000000
--- a/Tools/Scripts/webkitpy/common/find_files.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2011 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 module is used to find files used by run-webkit-tests and
-perftestrunner. It exposes one public function - find() - which takes
-an optional list of paths, optional set of skipped directories and optional
-filter callback.
-
-If a list is passed in, the returned list of files is constrained to those
-found under the paths passed in. i.e. calling find(["LayoutTests/fast"])
-will only return files under that directory.
-
-If a set of skipped directories is passed in, the function will filter out
-the files lying in these directories i.e. find(["LayoutTests"], set(["fast"]))
-will return everything except files in fast subfolder.
-
-If a callback is passed in, it will be called for the each file and the file
-will be included into the result if the callback returns True.
-The callback has to take three arguments: filesystem, dirname and filename."""
-
-import itertools
-
-
-def find(filesystem, base_dir, paths=None, skipped_directories=None, file_filter=None, directory_sort_key=None):
- """Finds the set of tests under a given list of sub-paths.
-
- Args:
- paths: a list of path expressions relative to base_dir
- to search. Glob patterns are ok, as are path expressions with
- forward slashes on Windows. If paths is empty, we look at
- everything under the base_dir.
- """
-
- paths = paths or ['*']
- skipped_directories = skipped_directories or set(['.svn', '_svn'])
- return _normalized_find(filesystem, _normalize(filesystem, base_dir, paths), skipped_directories, file_filter, directory_sort_key)
-
-
-def _normalize(filesystem, base_dir, paths):
- return [filesystem.normpath(filesystem.join(base_dir, path)) for path in paths]
-
-
-def _normalized_find(filesystem, paths, skipped_directories, file_filter, directory_sort_key):
- """Finds the set of tests under the list of paths.
-
- Args:
- paths: a list of absolute path expressions to search.
- Glob patterns are ok.
- """
-
- paths_to_walk = itertools.chain(*(filesystem.glob(path) for path in paths))
-
- def sort_by_directory_key(files_list):
- if directory_sort_key:
- files_list.sort(key=directory_sort_key)
- return files_list
-
- all_files = itertools.chain(*(sort_by_directory_key(filesystem.files_under(path, skipped_directories, file_filter)) for path in paths_to_walk))
- return all_files
diff --git a/Tools/Scripts/webkitpy/common/find_files_unittest.py b/Tools/Scripts/webkitpy/common/find_files_unittest.py
deleted file mode 100644
index 4c0a7cdc4..000000000
--- a/Tools/Scripts/webkitpy/common/find_files_unittest.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2011 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.
-
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem import FileSystem
-import find_files
-
-
-class MockWinFileSystem(object):
- def join(self, *paths):
- return '\\'.join(paths)
-
- def normpath(self, path):
- return path.replace('/', '\\')
-
-
-class TestWinNormalize(unittest.TestCase):
- def assert_filesystem_normalizes(self, filesystem):
- self.assertEqual(find_files._normalize(filesystem, "c:\\foo",
- ['fast/html', 'fast/canvas/*', 'compositing/foo.html']),
- ['c:\\foo\\fast\html', 'c:\\foo\\fast\canvas\*', 'c:\\foo\compositing\\foo.html'])
-
- def test_mocked_win(self):
- # This tests test_files.normalize, using portable behavior emulating
- # what we think Windows is supposed to do. This test will run on all
- # platforms.
- self.assert_filesystem_normalizes(MockWinFileSystem())
-
- def test_win(self):
- # This tests the actual windows platform, to ensure we get the same
- # results that we get in test_mocked_win().
- if sys.platform != 'win32':
- return
- self.assert_filesystem_normalizes(FileSystem())
diff --git a/Tools/Scripts/webkitpy/common/host.py b/Tools/Scripts/webkitpy/common/host.py
deleted file mode 100644
index 022c13bf8..000000000
--- a/Tools/Scripts/webkitpy/common/host.py
+++ /dev/null
@@ -1,100 +0,0 @@
-# Copyright (c) 2010 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-import os
-import sys
-
-from webkitpy.common.checkout import Checkout
-from webkitpy.common.checkout.scm.detection import SCMDetector
-from webkitpy.common.memoized import memoized
-from webkitpy.common.net import bugzilla, buildbot, web
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.watchlist.watchlistparser import WatchListParser
-from webkitpy.port.factory import PortFactory
-
-
-_log = logging.getLogger(__name__)
-
-
-class Host(SystemHost):
- def __init__(self):
- SystemHost.__init__(self)
- self.web = web.Web()
-
- # FIXME: Checkout should own the scm object.
- self._scm = None
- self._checkout = None
-
- # Everything below this line is WebKit-specific and belongs on a higher-level object.
- self.bugs = bugzilla.Bugzilla()
- self.buildbot = buildbot.BuildBot()
-
- # FIXME: Unfortunately Port objects are currently the central-dispatch objects of the NRWT world.
- # In order to instantiate a port correctly, we have to pass it at least an executive, user, scm, and filesystem
- # so for now we just pass along the whole Host object.
- # FIXME: PortFactory doesn't belong on this Host object if Port is going to have a Host (circular dependency).
- self.port_factory = PortFactory(self)
-
- self._engage_awesome_locale_hacks()
-
- # We call this from the Host constructor, as it's one of the
- # earliest calls made for all webkitpy-based programs.
- def _engage_awesome_locale_hacks(self):
- # To make life easier on our non-english users, we override
- # the locale environment variables inside webkitpy.
- # If we don't do this, programs like SVN will output localized
- # messages and svn.py will fail to parse them.
- # FIXME: We should do these overrides *only* for the subprocesses we know need them!
- # This hack only works in unix environments.
- os.environ['LANGUAGE'] = 'en'
- os.environ['LANG'] = 'en_US.UTF-8'
- os.environ['LC_MESSAGES'] = 'en_US.UTF-8'
- os.environ['LC_ALL'] = ''
-
- def initialize_scm(self, patch_directories=None):
- detector = SCMDetector(self.filesystem, self.executive)
- self._scm = detector.default_scm(patch_directories)
- self._checkout = Checkout(self.scm())
-
- def scm(self):
- return self._scm
-
- def checkout(self):
- return self._checkout
-
- @memoized
- def watch_list(self):
- config_path = self.filesystem.dirname(self.filesystem.path_to_module('webkitpy.common.config'))
- watch_list_full_path = self.filesystem.join(config_path, 'watchlist')
- if not self.filesystem.exists(watch_list_full_path):
- raise Exception('Watch list file (%s) not found.' % watch_list_full_path)
-
- watch_list_contents = self.filesystem.read_text_file(watch_list_full_path)
- return WatchListParser().parse(watch_list_contents)
diff --git a/Tools/Scripts/webkitpy/common/host_mock.py b/Tools/Scripts/webkitpy/common/host_mock.py
deleted file mode 100644
index be238463d..000000000
--- a/Tools/Scripts/webkitpy/common/host_mock.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2011 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.
-
-from webkitpy.common.checkout.checkout_mock import MockCheckout
-from webkitpy.common.checkout.scm.scm_mock import MockSCM
-from webkitpy.common.net.bugzilla.bugzilla_mock import MockBugzilla
-from webkitpy.common.net.buildbot.buildbot_mock import MockBuildBot
-from webkitpy.common.net.web_mock import MockWeb
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.common.watchlist.watchlist_mock import MockWatchList
-
-# New-style ports need to move down into webkitpy.common.
-from webkitpy.port.factory import PortFactory
-from webkitpy.port.test import add_unit_tests_to_mock_filesystem
-
-
-class MockHost(MockSystemHost):
- def __init__(self, log_executive=False, executive_throws_when_run=None, initialize_scm_by_default=True, web=None):
- MockSystemHost.__init__(self, log_executive, executive_throws_when_run)
- add_unit_tests_to_mock_filesystem(self.filesystem)
- self.web = web or MockWeb()
-
- self._checkout = MockCheckout()
- self._scm = None
- # FIXME: we should never initialize the SCM by default, since the real
- # object doesn't either. This has caused at least one bug (see bug 89498).
- if initialize_scm_by_default:
- self.initialize_scm()
- self.bugs = MockBugzilla()
- self.buildbot = MockBuildBot()
-
- # Note: We're using a real PortFactory here. Tests which don't wish to depend
- # on the list of known ports should override this with a MockPortFactory.
- self.port_factory = PortFactory(self)
-
- self._watch_list = MockWatchList()
-
- def initialize_scm(self, patch_directories=None):
- self._scm = MockSCM(filesystem=self.filesystem, executive=self.executive)
- # Various pieces of code (wrongly) call filesystem.chdir(checkout_root).
- # Making the checkout_root exist in the mock filesystem makes that chdir not raise.
- self.filesystem.maybe_make_directory(self._scm.checkout_root)
-
- def scm(self):
- return self._scm
-
- def checkout(self):
- return self._checkout
-
- def watch_list(self):
- return self._watch_list
-
diff --git a/Tools/Scripts/webkitpy/common/lru_cache.py b/Tools/Scripts/webkitpy/common/lru_cache.py
deleted file mode 100644
index 02a3d1c35..000000000
--- a/Tools/Scripts/webkitpy/common/lru_cache.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (C) 2011 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.
-# 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.
-
-
-class Node():
- def __init__(self, key, value):
- self.key = key
- self.value = value
- self.prev = None
- self.next = None
-
-
-class LRUCache():
- """An implementation of Least Recently Used (LRU) Cache."""
-
- def __init__(self, capacity):
- """Initializes a lru cache with the given capacity.
-
- Args:
- capacity: The capacity of the cache.
- """
- assert capacity > 0, "capacity (%s) must be greater than zero." % capacity
- self._first = None
- self._last = None
- self._dict = {}
- self._capacity = capacity
-
- def __setitem__(self, key, value):
- if key in self._dict:
- self.__delitem__(key)
- if not self._first:
- self._one_node(key, value)
- return
- if len(self._dict) >= self._capacity:
- del self._dict[self._last.key]
- if self._capacity == 1:
- self._one_node(key, value)
- return
- self._last = self._last.next
- self._last.prev = None
- node = Node(key, value)
- node.prev = self._first
- self._first.next = node
- self._first = node
- self._dict[key] = node
-
- def _one_node(self, key, value):
- node = Node(key, value)
- self._dict[key] = node
- self._first = node
- self._last = node
-
- def __getitem__(self, key):
- if not self._first:
- raise KeyError(str(key))
- if self._first.key == key:
- return self._first.value
-
- if self._last.key == key:
- next_last = self._last.next
- next_last.prev = None
- next_first = self._last
- next_first.prev = self._first
- next_first.next = None
- self._first.next = next_first
- self._first = next_first
- self._last = next_last
- return self._first.value
-
- node = self._dict[key]
- node.next.prev = node.prev
- node.prev.next = node.next
- node.prev = self._first
- node.next = None
- self._first.next = node
- self._first = node
- return self._first.value
-
- def __delitem__(self, key):
- node = self._dict[key]
- del self._dict[key]
- if self._first is self._last:
- self._last = None
- self._first = None
- return
- if self._first is node:
- self._first = node.prev
- self._first.next = None
- return
- if self._last is node:
- self._last = node.next
- self._last.prev = None
- return
- node.next.prev = node.prev
- node.prev.next = node.next
-
- def __len__(self):
- return len(self._dict)
-
- def __contains__(self, key):
- return key in self._dict
-
- def __iter__(self):
- return iter(self._dict)
-
- def items(self):
- return [(key, node.value) for key, node in self._dict.items()]
-
- def values(self):
- return [node.value for node in self._dict.values()]
-
- def keys(self):
- return self._dict.keys()
diff --git a/Tools/Scripts/webkitpy/common/lru_cache_unittest.py b/Tools/Scripts/webkitpy/common/lru_cache_unittest.py
deleted file mode 100644
index 96ca2095c..000000000
--- a/Tools/Scripts/webkitpy/common/lru_cache_unittest.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (C) 2011 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.
-
-# 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.
-
-
-import unittest2 as unittest
-
-from webkitpy.common import lru_cache
-
-
-class LRUCacheTest(unittest.TestCase):
-
- def setUp(self):
- self.lru = lru_cache.LRUCache(3)
- self.lru['key_1'] = 'item_1'
- self.lru['key_2'] = 'item_2'
- self.lru['key_3'] = 'item_3'
-
- self.lru2 = lru_cache.LRUCache(1)
- self.lru2['key_1'] = 'item_1'
-
- def test_items(self):
- self.assertEqual(set(self.lru.items()), set([('key_1', 'item_1'), ('key_3', 'item_3'), ('key_2', 'item_2')]))
-
- def test_put(self):
- self.lru['key_4'] = 'item_4'
- self.assertEqual(set(self.lru.items()), set([('key_4', 'item_4'), ('key_3', 'item_3'), ('key_2', 'item_2')]))
-
- def test_update(self):
- self.lru['key_1']
- self.lru['key_5'] = 'item_5'
- self.assertEqual(set(self.lru.items()), set([('key_1', 'item_1'), ('key_3', 'item_3'), ('key_5', 'item_5')]))
-
- def test_keys(self):
- self.assertEqual(set(self.lru.keys()), set(['key_1', 'key_2', 'key_3']))
-
- def test_delete(self):
- del self.lru['key_1']
- self.assertFalse('key_1' in self.lru)
-
- def test_contain(self):
- self.assertTrue('key_1' in self.lru)
- self.assertFalse('key_4' in self.lru)
-
- def test_values(self):
- self.assertEqual(set(self.lru.values()), set(['item_1', 'item_2', 'item_3']))
-
- def test_len(self):
- self.assertEqual(len(self.lru), 3)
-
- def test_size_one_pop(self):
- self.lru2['key_2'] = 'item_2'
- self.assertEqual(self.lru2.keys(), ['key_2'])
-
- def test_size_one_delete(self):
- del self.lru2['key_1']
- self.assertFalse('key_1' in self.lru2)
-
- def test_pop_error(self):
- self.assertRaises(KeyError, self.lru2.__getitem__, 'key_2')
- del self.lru2['key_1']
- self.assertRaises(KeyError, self.lru2.__getitem__, 'key_2')
-
- def test_get_middle_item(self):
- self.lru['key_2']
- self.lru['key_4'] = 'item_4'
- self.lru['key_5'] = 'item_5'
- self.assertEqual(set(self.lru.keys()), set(['key_2', 'key_4', 'key_5']))
-
- def test_set_again(self):
- self.lru['key_1'] = 'item_4'
- self.assertEqual(set(self.lru.items()), set([('key_1', 'item_4'), ('key_3', 'item_3'), ('key_2', 'item_2')]))
diff --git a/Tools/Scripts/webkitpy/common/memoized.py b/Tools/Scripts/webkitpy/common/memoized.py
deleted file mode 100644
index dc844a53a..000000000
--- a/Tools/Scripts/webkitpy/common/memoized.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2010 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.
-
-# Python does not (yet) seem to provide automatic memoization. So we've
-# written a small decorator to do so.
-
-import functools
-
-
-class memoized(object):
- def __init__(self, function):
- self._function = function
- self._results_cache = {}
-
- def __call__(self, *args):
- try:
- return self._results_cache[args]
- except KeyError:
- # If we didn't find the args in our cache, call and save the results.
- result = self._function(*args)
- self._results_cache[args] = result
- return result
- # FIXME: We may need to handle TypeError here in the case
- # that "args" is not a valid dictionary key.
-
- # Use python "descriptor" protocol __get__ to appear
- # invisible during property access.
- def __get__(self, instance, owner):
- # Return a function partial with obj already bound as self.
- return functools.partial(self.__call__, instance)
diff --git a/Tools/Scripts/webkitpy/common/memoized_unittest.py b/Tools/Scripts/webkitpy/common/memoized_unittest.py
deleted file mode 100644
index af406dfea..000000000
--- a/Tools/Scripts/webkitpy/common/memoized_unittest.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.memoized import memoized
-
-
-class _TestObject(object):
- def __init__(self):
- self.callCount = 0
-
- @memoized
- def memoized_add(self, argument):
- """testing docstring"""
- self.callCount += 1
- if argument is None:
- return None # Avoid the TypeError from None + 1
- return argument + 1
-
-
-class MemoizedTest(unittest.TestCase):
- def test_caching(self):
- test = _TestObject()
- test.callCount = 0
- self.assertEqual(test.memoized_add(1), 2)
- self.assertEqual(test.callCount, 1)
- self.assertEqual(test.memoized_add(1), 2)
- self.assertEqual(test.callCount, 1)
-
- # Validate that callCount is working as expected.
- self.assertEqual(test.memoized_add(2), 3)
- self.assertEqual(test.callCount, 2)
-
- def test_tearoff(self):
- test = _TestObject()
- # Make sure that get()/tear-offs work:
- tearoff = test.memoized_add
- self.assertEqual(tearoff(4), 5)
- self.assertEqual(test.callCount, 1)
diff --git a/Tools/Scripts/webkitpy/common/message_pool.py b/Tools/Scripts/webkitpy/common/message_pool.py
deleted file mode 100644
index 03056cf64..000000000
--- a/Tools/Scripts/webkitpy/common/message_pool.py
+++ /dev/null
@@ -1,324 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Module for handling messages and concurrency for run-webkit-tests
-and test-webkitpy. This module follows the design for multiprocessing.Pool
-and concurrency.futures.ProcessPoolExecutor, with the following differences:
-
-* Tasks are executed in stateful subprocesses via objects that implement the
- Worker interface - this allows the workers to share state across tasks.
-* The pool provides an asynchronous event-handling interface so the caller
- may receive events as tasks are processed.
-
-If you don't need these features, use multiprocessing.Pool or concurrency.futures
-intead.
-
-"""
-
-import cPickle
-import logging
-import multiprocessing
-import Queue
-import sys
-import time
-import traceback
-
-
-from webkitpy.common.host import Host
-from webkitpy.common.system import stack_utils
-
-
-_log = logging.getLogger(__name__)
-
-
-def get(caller, worker_factory, num_workers, worker_startup_delay_secs=0.0, host=None):
- """Returns an object that exposes a run() method that takes a list of test shards and runs them in parallel."""
- return _MessagePool(caller, worker_factory, num_workers, worker_startup_delay_secs, host)
-
-
-class _MessagePool(object):
- def __init__(self, caller, worker_factory, num_workers, worker_startup_delay_secs=0.0, host=None):
- self._caller = caller
- self._worker_factory = worker_factory
- self._num_workers = num_workers
- self._worker_startup_delay_secs = worker_startup_delay_secs
- self._workers = []
- self._workers_stopped = set()
- self._host = host
- self._name = 'manager'
- self._running_inline = (self._num_workers == 1)
- if self._running_inline:
- self._messages_to_worker = Queue.Queue()
- self._messages_to_manager = Queue.Queue()
- else:
- self._messages_to_worker = multiprocessing.Queue()
- self._messages_to_manager = multiprocessing.Queue()
-
- def __enter__(self):
- return self
-
- def __exit__(self, exc_type, exc_value, exc_traceback):
- self._close()
- return False
-
- def run(self, shards):
- """Posts a list of messages to the pool and waits for them to complete."""
- for message in shards:
- self._messages_to_worker.put(_Message(self._name, message[0], message[1:], from_user=True, logs=()))
-
- for _ in xrange(self._num_workers):
- self._messages_to_worker.put(_Message(self._name, 'stop', message_args=(), from_user=False, logs=()))
-
- self.wait()
-
- def _start_workers(self):
- assert not self._workers
- self._workers_stopped = set()
- host = None
- if self._running_inline or self._can_pickle(self._host):
- host = self._host
-
- for worker_number in xrange(self._num_workers):
- worker = _Worker(host, self._messages_to_manager, self._messages_to_worker, self._worker_factory, worker_number, self._running_inline, self if self._running_inline else None, self._worker_log_level())
- self._workers.append(worker)
- worker.start()
- if self._worker_startup_delay_secs:
- time.sleep(self._worker_startup_delay_secs)
-
- def _worker_log_level(self):
- log_level = logging.NOTSET
- for handler in logging.root.handlers:
- if handler.level != logging.NOTSET:
- if log_level == logging.NOTSET:
- log_level = handler.level
- else:
- log_level = min(log_level, handler.level)
- return log_level
-
- def wait(self):
- try:
- self._start_workers()
- if self._running_inline:
- self._workers[0].run()
- self._loop(block=False)
- else:
- self._loop(block=True)
- finally:
- self._close()
-
- def _close(self):
- for worker in self._workers:
- if worker.is_alive():
- worker.terminate()
- worker.join()
- self._workers = []
- if not self._running_inline:
- # FIXME: This is a hack to get multiprocessing to not log tracebacks during shutdown :(.
- multiprocessing.util._exiting = True
- if self._messages_to_worker:
- self._messages_to_worker.close()
- self._messages_to_worker = None
- if self._messages_to_manager:
- self._messages_to_manager.close()
- self._messages_to_manager = None
-
- def _log_messages(self, messages):
- for message in messages:
- logging.root.handle(message)
-
- def _handle_done(self, source):
- self._workers_stopped.add(source)
-
- @staticmethod
- def _handle_worker_exception(source, exception_type, exception_value, _):
- if exception_type == KeyboardInterrupt:
- raise exception_type(exception_value)
- raise WorkerException(str(exception_value))
-
- def _can_pickle(self, host):
- try:
- cPickle.dumps(host)
- return True
- except TypeError:
- return False
-
- def _loop(self, block):
- try:
- while True:
- if len(self._workers_stopped) == len(self._workers):
- block = False
- message = self._messages_to_manager.get(block)
- self._log_messages(message.logs)
- if message.from_user:
- self._caller.handle(message.name, message.src, *message.args)
- continue
- method = getattr(self, '_handle_' + message.name)
- assert method, 'bad message %s' % repr(message)
- method(message.src, *message.args)
- except Queue.Empty:
- pass
-
-
-class WorkerException(BaseException):
- """Raised when we receive an unexpected/unknown exception from a worker."""
- pass
-
-
-class _Message(object):
- def __init__(self, src, message_name, message_args, from_user, logs):
- self.src = src
- self.name = message_name
- self.args = message_args
- self.from_user = from_user
- self.logs = logs
-
- def __repr__(self):
- return '_Message(src=%s, name=%s, args=%s, from_user=%s, logs=%s)' % (self.src, self.name, self.args, self.from_user, self.logs)
-
-
-class _Worker(multiprocessing.Process):
- def __init__(self, host, messages_to_manager, messages_to_worker, worker_factory, worker_number, running_inline, manager, log_level):
- super(_Worker, self).__init__()
- self.host = host
- self.worker_number = worker_number
- self.name = 'worker/%d' % worker_number
- self.log_messages = []
- self.log_level = log_level
- self._running_inline = running_inline
- self._manager = manager
-
- self._messages_to_manager = messages_to_manager
- self._messages_to_worker = messages_to_worker
- self._worker = worker_factory(self)
- self._logger = None
- self._log_handler = None
-
- def terminate(self):
- if self._worker:
- if hasattr(self._worker, 'stop'):
- self._worker.stop()
- self._worker = None
- if self.is_alive():
- super(_Worker, self).terminate()
-
- def _close(self):
- if self._log_handler and self._logger:
- self._logger.removeHandler(self._log_handler)
- self._log_handler = None
- self._logger = None
-
- def start(self):
- if not self._running_inline:
- super(_Worker, self).start()
-
- def run(self):
- if not self.host:
- self.host = Host()
- if not self._running_inline:
- self._set_up_logging()
-
- worker = self._worker
- exception_msg = ""
- _log.debug("%s starting" % self.name)
-
- try:
- if hasattr(worker, 'start'):
- worker.start()
- while True:
- message = self._messages_to_worker.get()
- if message.from_user:
- worker.handle(message.name, message.src, *message.args)
- self._yield_to_manager()
- else:
- assert message.name == 'stop', 'bad message %s' % repr(message)
- break
-
- _log.debug("%s exiting" % self.name)
- except Queue.Empty:
- assert False, '%s: ran out of messages in worker queue.' % self.name
- except KeyboardInterrupt, e:
- self._raise(sys.exc_info())
- except Exception, e:
- self._raise(sys.exc_info())
- finally:
- try:
- if hasattr(worker, 'stop'):
- worker.stop()
- finally:
- self._post(name='done', args=(), from_user=False)
- self._close()
-
- def post(self, name, *args):
- self._post(name, args, from_user=True)
- self._yield_to_manager()
-
- def _yield_to_manager(self):
- if self._running_inline:
- self._manager._loop(block=False)
-
- def _post(self, name, args, from_user):
- log_messages = self.log_messages
- self.log_messages = []
- self._messages_to_manager.put(_Message(self.name, name, args, from_user, log_messages))
-
- def _raise(self, exc_info):
- exception_type, exception_value, exception_traceback = exc_info
- if self._running_inline:
- raise exception_type, exception_value, exception_traceback
-
- if exception_type == KeyboardInterrupt:
- _log.debug("%s: interrupted, exiting" % self.name)
- stack_utils.log_traceback(_log.debug, exception_traceback)
- else:
- _log.error("%s: %s('%s') raised:" % (self.name, exception_value.__class__.__name__, str(exception_value)))
- stack_utils.log_traceback(_log.error, exception_traceback)
- # Since tracebacks aren't picklable, send the extracted stack instead.
- stack = traceback.extract_tb(exception_traceback)
- self._post(name='worker_exception', args=(exception_type, exception_value, stack), from_user=False)
-
- def _set_up_logging(self):
- self._logger = logging.getLogger()
-
- # The unix multiprocessing implementation clones any log handlers into the child process,
- # so we remove them to avoid duplicate logging.
- for h in self._logger.handlers:
- self._logger.removeHandler(h)
-
- self._log_handler = _WorkerLogHandler(self)
- self._logger.addHandler(self._log_handler)
- self._logger.setLevel(self.log_level)
-
-
-class _WorkerLogHandler(logging.Handler):
- def __init__(self, worker):
- logging.Handler.__init__(self)
- self._worker = worker
- self.setLevel(worker.log_level)
-
- def emit(self, record):
- self._worker.log_messages.append(record)
diff --git a/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py b/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py
deleted file mode 100644
index 366c41314..000000000
--- a/Tools/Scripts/webkitpy/common/multiprocessing_bootstrap.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (c) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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.
-
-"""In order for the multiprocessing module to spawn children correctly on
-Windows, we need to be running a Python module that can be imported
-(which means a file in sys.path that ends in .py). In addition, we need to
-ensure that sys.path / PYTHONPATH is set and propagating correctly.
-
-This module enforces that."""
-
-import os
-import subprocess
-import sys
-
-from webkitpy.common import version_check # 'unused import' pylint: disable=W0611
-
-
-def run(*parts):
- up = os.path.dirname
- script_dir = up(up(up(os.path.abspath(__file__))))
- env = os.environ
- if 'PYTHONPATH' in env:
- if script_dir not in env['PYTHONPATH']:
- env['PYTHONPATH'] = env['PYTHONPATH'] + os.pathsep + script_dir
- else:
- env['PYTHONPATH'] = script_dir
- module_path = os.path.join(script_dir, *parts)
- cmd = [sys.executable, module_path] + sys.argv[1:]
-
- # Wrap processes in the jhbuild environment so DRT or WKTR
- # doesn't need to do it and their process id as reported by
- # subprocess.Popen is not jhbuild's.
- if '--gtk' in sys.argv[1:] and os.path.exists(os.path.join(script_dir, '..', '..', 'WebKitBuild', 'Dependencies')):
- prefix = [os.path.join(script_dir, '..', 'jhbuild', 'jhbuild-wrapper'), '--gtk', 'run']
- cmd = prefix + cmd
-
- proc = subprocess.Popen(cmd, env=env)
- try:
- proc.wait()
- except KeyboardInterrupt:
- # We need a second wait in order to make sure the subprocess exits fully.
- # FIXME: It would be nice if we could put a timeout on this.
- proc.wait()
- sys.exit(proc.returncode)
diff --git a/Tools/Scripts/webkitpy/common/net/__init__.py b/Tools/Scripts/webkitpy/common/net/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/net/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/__init__.py b/Tools/Scripts/webkitpy/common/net/bugzilla/__init__.py
deleted file mode 100644
index c427b1800..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/__init__.py
+++ /dev/null
@@ -1,7 +0,0 @@
-# Required for Python to search this directory for module files
-
-# We only export public API here.
-from .bugzilla import Bugzilla
-# Unclear if Bug and Attachment need to be public classes.
-from .bug import Bug
-from .attachment import Attachment
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/attachment.py b/Tools/Scripts/webkitpy/common/net/bugzilla/attachment.py
deleted file mode 100644
index c749a1512..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/attachment.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (c) 2010 Research In Motion Limited. 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.
-
-import logging
-
-from webkitpy.common.memoized import memoized
-
-_log = logging.getLogger(__name__)
-
-
-class Attachment(object):
-
- rollout_preamble = "ROLLOUT of r"
-
- def __init__(self, attachment_dictionary, bug):
- self._attachment_dictionary = attachment_dictionary
- self._bug = bug
- # FIXME: These should be replaced with @memoized after updating mocks.
- self._reviewer = None
- self._committer = None
-
- def _bugzilla(self):
- return self._bug._bugzilla
-
- def id(self):
- return int(self._attachment_dictionary.get("id"))
-
- @memoized
- def attacher(self):
- return self._bugzilla().committers.contributor_by_email(self.attacher_email())
-
- def attacher_email(self):
- return self._attachment_dictionary.get("attacher_email")
-
- def bug(self):
- return self._bug
-
- def bug_id(self):
- return int(self._attachment_dictionary.get("bug_id"))
-
- def is_patch(self):
- return not not self._attachment_dictionary.get("is_patch")
-
- def is_obsolete(self):
- return not not self._attachment_dictionary.get("is_obsolete")
-
- def is_rollout(self):
- return self.name().startswith(self.rollout_preamble)
-
- def name(self):
- return self._attachment_dictionary.get("name")
-
- def attach_date(self):
- return self._attachment_dictionary.get("attach_date")
-
- def review(self):
- return self._attachment_dictionary.get("review")
-
- def commit_queue(self):
- return self._attachment_dictionary.get("commit-queue")
-
- def url(self):
- # FIXME: This should just return
- # self._bugzilla().attachment_url_for_id(self.id()). scm_unittest.py
- # depends on the current behavior.
- return self._attachment_dictionary.get("url")
-
- def contents(self):
- # FIXME: We shouldn't be grabbing at _bugzilla.
- return self._bug._bugzilla.fetch_attachment_contents(self.id())
-
- def _validate_flag_value(self, flag):
- email = self._attachment_dictionary.get("%s_email" % flag)
- if not email:
- return None
- # FIXME: This is not a robust way to call committer_by_email
- committer = getattr(self._bugzilla().committers,
- "%s_by_email" % flag)(email)
- if committer:
- return committer
- _log.warning("Warning, attachment %s on bug %s has invalid %s (%s)" % (
- self._attachment_dictionary['id'],
- self._attachment_dictionary['bug_id'], flag, email))
-
- # FIXME: These could use @memoized like attacher(), but unit tests would need updates.
- def reviewer(self):
- if not self._reviewer:
- self._reviewer = self._validate_flag_value("reviewer")
- return self._reviewer
-
- def committer(self):
- if not self._committer:
- self._committer = self._validate_flag_value("committer")
- return self._committer
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
deleted file mode 100644
index 70caef330..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (c) 2010 Research In Motion Limited. 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.
-
-import re
-
-from .attachment import Attachment
-
-
-class Bug(object):
- # FIXME: This class is kinda a hack for now. It exists so we have one
- # place to hold bug logic, even if much of the code deals with
- # dictionaries still.
-
- def __init__(self, bug_dictionary, bugzilla):
- self.bug_dictionary = bug_dictionary
- self._bugzilla = bugzilla
-
- def id(self):
- return self.bug_dictionary["id"]
-
- def title(self):
- # FIXME: Do we need to HTML unescape the title?
- return self.bug_dictionary["title"]
-
- def reporter_email(self):
- return self.bug_dictionary["reporter_email"]
-
- def assigned_to_email(self):
- return self.bug_dictionary["assigned_to_email"]
-
- def cc_emails(self):
- return self.bug_dictionary["cc_emails"]
-
- # FIXME: This information should be stored in some sort of webkit_config.py instead of here.
- unassigned_emails = frozenset([
- "webkit-unassigned@lists.webkit.org",
- "webkit-qt-unassigned@trolltech.com",
- ])
-
- def is_unassigned(self):
- return self.assigned_to_email() in self.unassigned_emails
-
- def status(self):
- return self.bug_dictionary["bug_status"]
-
- # Bugzilla has many status states we don't really use in WebKit:
- # https://bugs.webkit.org/page.cgi?id=fields.html#status
- _open_states = ["UNCONFIRMED", "NEW", "ASSIGNED", "REOPENED"]
- _closed_states = ["RESOLVED", "VERIFIED", "CLOSED"]
-
- def is_open(self):
- return self.status() in self._open_states
-
- def is_closed(self):
- return not self.is_open()
-
- def duplicate_of(self):
- return self.bug_dictionary.get('dup_id', None)
-
- # Rarely do we actually want obsolete attachments
- def attachments(self, include_obsolete=False):
- attachments = self.bug_dictionary["attachments"]
- if not include_obsolete:
- attachments = filter(lambda attachment:
- not attachment["is_obsolete"], attachments)
- return [Attachment(attachment, self) for attachment in attachments]
-
- def patches(self, include_obsolete=False):
- return [patch for patch in self.attachments(include_obsolete)
- if patch.is_patch()]
-
- def unreviewed_patches(self):
- return [patch for patch in self.patches() if patch.review() == "?"]
-
- def reviewed_patches(self, include_invalid=False):
- patches = [patch for patch in self.patches() if patch.review() == "+"]
- if include_invalid:
- return patches
- # Checking reviewer() ensures that it was both reviewed and has a valid
- # reviewer.
- return filter(lambda patch: patch.reviewer(), patches)
-
- def commit_queued_patches(self, include_invalid=False):
- patches = [patch for patch in self.patches()
- if patch.commit_queue() == "+"]
- if include_invalid:
- return patches
- # Checking committer() ensures that it was both commit-queue+'d and has
- # a valid committer.
- return filter(lambda patch: patch.committer(), patches)
-
- def comments(self):
- return self.bug_dictionary["comments"]
-
- def is_in_comments(self, message):
- for comment in self.comments():
- if message in comment["text"]:
- return True
- return False
-
- def commit_revision(self):
- # Sort the comments in reverse order as we want the latest committed revision.
- r = re.compile("Committed r(?P<svn_revision>\d+)")
- for comment in sorted(self.comments(), reverse=True):
- rev = r.search(comment['text'])
- if rev:
- return int(rev.group('svn_revision'))
-
- return None
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bug_unittest.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bug_unittest.py
deleted file mode 100644
index b90b915a8..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/bug_unittest.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from .bug import Bug
-
-
-class BugTest(unittest.TestCase):
- def test_is_unassigned(self):
- for email in Bug.unassigned_emails:
- bug = Bug({"assigned_to_email": email}, bugzilla=None)
- self.assertTrue(bug.is_unassigned())
- bug = Bug({"assigned_to_email": "test@test.com"}, bugzilla=None)
- self.assertFalse(bug.is_unassigned())
-
- def test_is_in_comments(self):
- bug = Bug({"comments": [{"text": "Message1."},
- {"text": "Message2. Message3. Message4."}, ], },
- bugzilla=None)
- self.assertTrue(bug.is_in_comments("Message3."))
- self.assertFalse(bug.is_in_comments("Message."))
-
- def test_commit_revision(self):
- bug = Bug({"comments": []}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), None)
-
- bug = Bug({"comments": [
- {"text": "Comment 1"},
- {"text": "Comment 2"},
- ]}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), None)
-
- bug = Bug({"comments": [
- {"text": "Committed r138776: <http://trac.webkit.org/changeset/138776>"},
- ]}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), 138776)
-
- bug = Bug({"comments": [
- {"text": "(From update of attachment 181269) Clearing flags on attachment: 181269 Committed r138776: <http://trac.webkit.org/changeset/138776>"},
- ]}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), 138776)
-
- bug = Bug({"comments": [
- {"text": "Comment before"},
- {"text": "(From update of attachment 181269) Clearing flags on attachment: 181269 Committed r138776: <http://trac.webkit.org/changeset/138776>"},
- {"text": "Comment after"},
- ]}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), 138776)
-
- bug = Bug({"comments": [
- {"text": "Comment before"},
- {"text": "(From update of attachment 181269) Clearing flags on attachment: 181269 Committed r138776: <http://trac.webkit.org/changeset/138776>"},
- {"text": "Comment Middle"},
- {"text": "(From update of attachment 181280) Clearing flags on attachment: 181280 Committed r138976: <http://trac.webkit.org/changeset/138976>"},
- {"text": "Comment After"},
- ]}, bugzilla=None)
- self.assertEqual(bug.commit_revision(), 138976)
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py
deleted file mode 100644
index bcd41b78e..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla.py
+++ /dev/null
@@ -1,848 +0,0 @@
-# Copyright (c) 2011 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (c) 2010 Research In Motion Limited. 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.
-#
-# WebKit's Python module for interacting with Bugzilla
-
-import logging
-import mimetypes
-import re
-import StringIO
-import socket
-import urllib
-
-from datetime import datetime # used in timestamp()
-
-from .attachment import Attachment
-from .bug import Bug
-
-from webkitpy.common.config import committers
-import webkitpy.common.config.urls as config_urls
-from webkitpy.common.net.credentials import Credentials
-from webkitpy.common.system.user import User
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup, BeautifulStoneSoup, SoupStrainer
-
-_log = logging.getLogger(__name__)
-
-
-class EditUsersParser(object):
- def __init__(self):
- self._group_name_to_group_string_cache = {}
-
- def _login_and_uid_from_row(self, row):
- first_cell = row.find("td")
- # The first row is just headers, we skip it.
- if not first_cell:
- return None
- # When there were no results, we have a fake "<none>" entry in the table.
- if first_cell.find(text="<none>"):
- return None
- # Otherwise the <td> contains a single <a> which contains the login name or a single <i> with the string "<none>".
- anchor_tag = first_cell.find("a")
- login = unicode(anchor_tag.string).strip()
- user_id = int(re.search(r"userid=(\d+)", str(anchor_tag['href'])).group(1))
- return (login, user_id)
-
- def login_userid_pairs_from_edit_user_results(self, results_page):
- soup = BeautifulSoup(results_page, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
- results_table = soup.find(id="admin_table")
- login_userid_pairs = [self._login_and_uid_from_row(row) for row in results_table('tr')]
- # Filter out None from the logins.
- return filter(lambda pair: bool(pair), login_userid_pairs)
-
- def _group_name_and_string_from_row(self, row):
- label_element = row.find('label')
- group_string = unicode(label_element['for'])
- group_name = unicode(label_element.find('strong').string).rstrip(':')
- return (group_name, group_string)
-
- def user_dict_from_edit_user_page(self, page):
- soup = BeautifulSoup(page, convertEntities=BeautifulStoneSoup.HTML_ENTITIES)
- user_table = soup.find("table", {'class': 'main'})
- user_dict = {}
- for row in user_table('tr'):
- label_element = row.find('label')
- if not label_element:
- continue # This must not be a row we know how to parse.
- if row.find('table'):
- continue # Skip the <tr> holding the groups table.
-
- key = label_element['for']
- if "group" in key:
- key = "groups"
- value = user_dict.get('groups', set())
- # We must be parsing a "tr" inside the inner group table.
- (group_name, _) = self._group_name_and_string_from_row(row)
- if row.find('input', {'type': 'checkbox', 'checked': 'checked'}):
- value.add(group_name)
- else:
- value = unicode(row.find('td').string).strip()
- user_dict[key] = value
- return user_dict
-
- def _group_rows_from_edit_user_page(self, edit_user_page):
- soup = BeautifulSoup(edit_user_page, convertEntities=BeautifulSoup.HTML_ENTITIES)
- return soup('td', {'class': 'groupname'})
-
- def group_string_from_name(self, edit_user_page, group_name):
- # Bugzilla uses "group_NUMBER" strings, which may be different per install
- # so we just look them up once and cache them.
- if not self._group_name_to_group_string_cache:
- rows = self._group_rows_from_edit_user_page(edit_user_page)
- name_string_pairs = map(self._group_name_and_string_from_row, rows)
- self._group_name_to_group_string_cache = dict(name_string_pairs)
- return self._group_name_to_group_string_cache[group_name]
-
-
-def timestamp():
- return datetime.now().strftime("%Y%m%d%H%M%S")
-
-
-# A container for all of the logic for making and parsing bugzilla queries.
-class BugzillaQueries(object):
-
- def __init__(self, bugzilla):
- self._bugzilla = bugzilla
-
- def _is_xml_bugs_form(self, form):
- # ClientForm.HTMLForm.find_control throws if the control is not found,
- # so we do a manual search instead:
- return "xml" in [control.id for control in form.controls]
-
- # This is kinda a hack. There is probably a better way to get this information from bugzilla.
- def _parse_result_count(self, results_page):
- result_count_text = BeautifulSoup(results_page).find(attrs={'class': 'bz_result_count'}).string
- result_count_parts = result_count_text.strip().split(" ")
- if result_count_parts[0] == "Zarro":
- return 0
- if result_count_parts[0] == "One":
- return 1
- return int(result_count_parts[0])
-
- # Note: _load_query, _fetch_bug and _fetch_bugs_from_advanced_query
- # are the only methods which access self._bugzilla.
-
- def _load_query(self, query):
- self._bugzilla.authenticate()
- full_url = "%s%s" % (config_urls.bug_server_url, query)
- return self._bugzilla.browser.open(full_url)
-
- def _fetch_bugs_from_advanced_query(self, query):
- results_page = self._load_query(query)
- # Some simple searches can return a single result.
- results_url = results_page.geturl()
- if results_url.find("/show_bug.cgi?id=") != -1:
- bug_id = int(results_url.split("=")[-1])
- return [self._fetch_bug(bug_id)]
- if not self._parse_result_count(results_page):
- return []
- # Bugzilla results pages have an "XML" submit button at the bottom
- # which can be used to get an XML page containing all of the <bug> elements.
- # This is slighty lame that this assumes that _load_query used
- # self._bugzilla.browser and that it's in an acceptable state.
- self._bugzilla.browser.select_form(predicate=self._is_xml_bugs_form)
- bugs_xml = self._bugzilla.browser.submit()
- return self._bugzilla._parse_bugs_from_xml(bugs_xml)
-
- def _fetch_bug(self, bug_id):
- return self._bugzilla.fetch_bug(bug_id)
-
- def _fetch_bug_ids_advanced_query(self, query):
- soup = BeautifulSoup(self._load_query(query))
- # The contents of the <a> inside the cells in the first column happen
- # to be the bug id.
- return [int(bug_link_cell.find("a").string)
- for bug_link_cell in soup('td', "first-child")]
-
- def _parse_attachment_ids_request_query(self, page):
- digits = re.compile("\d+")
- attachment_href = re.compile("attachment.cgi\?id=\d+&action=review")
- attachment_links = SoupStrainer("a", href=attachment_href)
- return [int(digits.search(tag["href"]).group(0))
- for tag in BeautifulSoup(page, parseOnlyThese=attachment_links)]
-
- def _fetch_attachment_ids_request_query(self, query):
- return self._parse_attachment_ids_request_query(self._load_query(query))
-
- def _parse_quips(self, page):
- soup = BeautifulSoup(page, convertEntities=BeautifulSoup.HTML_ENTITIES)
- quips = soup.find(text=re.compile(r"Existing quips:")).findNext("ul").findAll("li")
- return [unicode(quip_entry.string) for quip_entry in quips]
-
- def fetch_quips(self):
- return self._parse_quips(self._load_query("/quips.cgi?action=show"))
-
- # List of all r+'d bugs.
- def fetch_bug_ids_from_pending_commit_list(self):
- needs_commit_query_url = "buglist.cgi?query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=review%2B"
- return self._fetch_bug_ids_advanced_query(needs_commit_query_url)
-
- def fetch_bugs_matching_quicksearch(self, search_string):
- # We may want to use a more explicit query than "quicksearch".
- # If quicksearch changes we should probably change to use
- # a normal buglist.cgi?query_format=advanced query.
- quicksearch_url = "buglist.cgi?quicksearch=%s" % urllib.quote(search_string)
- return self._fetch_bugs_from_advanced_query(quicksearch_url)
-
- # Currently this returns all bugs across all components.
- # In the future we may wish to extend this API to construct more restricted searches.
- def fetch_bugs_matching_search(self, search_string):
- query = "buglist.cgi?query_format=advanced"
- if search_string:
- query += "&short_desc_type=allwordssubstr&short_desc=%s" % urllib.quote(search_string)
- return self._fetch_bugs_from_advanced_query(query)
-
- def fetch_patches_from_pending_commit_list(self):
- return sum([self._fetch_bug(bug_id).reviewed_patches()
- for bug_id in self.fetch_bug_ids_from_pending_commit_list()], [])
-
- def fetch_bugs_from_review_queue(self, cc_email=None):
- query = "buglist.cgi?query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=review?"
-
- if cc_email:
- query += "&emailcc1=1&emailtype1=substring&email1=%s" % urllib.quote(cc_email)
-
- return self._fetch_bugs_from_advanced_query(query)
-
- def fetch_bug_ids_from_commit_queue(self):
- commit_queue_url = "buglist.cgi?query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=commit-queue%2B&order=Last+Changed"
- return self._fetch_bug_ids_advanced_query(commit_queue_url)
-
- def fetch_patches_from_commit_queue(self):
- # This function will only return patches which have valid committers
- # set. It won't reject patches with invalid committers/reviewers.
- return sum([self._fetch_bug(bug_id).commit_queued_patches()
- for bug_id in self.fetch_bug_ids_from_commit_queue()], [])
-
- def fetch_bug_ids_from_review_queue(self):
- review_queue_url = "buglist.cgi?query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&field0-0-0=flagtypes.name&type0-0-0=equals&value0-0-0=review?"
- return self._fetch_bug_ids_advanced_query(review_queue_url)
-
- # This method will make several requests to bugzilla.
- def fetch_patches_from_review_queue(self, limit=None):
- # [:None] returns the whole array.
- return sum([self._fetch_bug(bug_id).unreviewed_patches()
- for bug_id in self.fetch_bug_ids_from_review_queue()[:limit]], [])
-
- # NOTE: This is the only client of _fetch_attachment_ids_request_query
- # This method only makes one request to bugzilla.
- def fetch_attachment_ids_from_review_queue(self):
- review_queue_url = "request.cgi?action=queue&type=review&group=type"
- return self._fetch_attachment_ids_request_query(review_queue_url)
-
- # This only works if your account has edituser privileges.
- # We could easily parse https://bugs.webkit.org/userprefs.cgi?tab=permissions to
- # check permissions, but bugzilla will just return an error if we don't have them.
- def fetch_login_userid_pairs_matching_substring(self, search_string):
- review_queue_url = "editusers.cgi?action=list&matchvalue=login_name&matchstr=%s&matchtype=substr" % urllib.quote(search_string)
- results_page = self._load_query(review_queue_url)
- # We could pull the EditUsersParser off Bugzilla if needed.
- return EditUsersParser().login_userid_pairs_from_edit_user_results(results_page)
-
- # FIXME: We should consider adding a BugzillaUser class.
- def fetch_logins_matching_substring(self, search_string):
- pairs = self.fetch_login_userid_pairs_matching_substring(search_string)
- return map(lambda pair: pair[0], pairs)
-
-
-class Bugzilla(object):
- def __init__(self, committers=committers.CommitterList()):
- self.authenticated = False
- self.queries = BugzillaQueries(self)
- self.committers = committers
- self.cached_quips = []
- self.edit_user_parser = EditUsersParser()
- self._browser = None
-
- def _get_browser(self):
- if not self._browser:
- self.setdefaulttimeout(600)
- from webkitpy.thirdparty.autoinstalled.mechanize import Browser
- self._browser = Browser()
- # Ignore bugs.webkit.org/robots.txt until we fix it to allow this script.
- self._browser.set_handle_robots(False)
- return self._browser
-
- def _set_browser(self, value):
- self._browser = value
-
- browser = property(_get_browser, _set_browser)
-
- def setdefaulttimeout(self, value):
- socket.setdefaulttimeout(value)
-
- def fetch_user(self, user_id):
- self.authenticate()
- edit_user_page = self.browser.open(self.edit_user_url_for_id(user_id))
- return self.edit_user_parser.user_dict_from_edit_user_page(edit_user_page)
-
- def add_user_to_groups(self, user_id, group_names):
- self.authenticate()
- user_edit_page = self.browser.open(self.edit_user_url_for_id(user_id))
- self.browser.select_form(nr=1)
- for group_name in group_names:
- group_string = self.edit_user_parser.group_string_from_name(user_edit_page, group_name)
- self.browser.find_control(group_string).items[0].selected = True
- self.browser.submit()
-
- def quips(self):
- # We only fetch and parse the list of quips once per instantiation
- # so that we do not burden bugs.webkit.org.
- if not self.cached_quips:
- self.cached_quips = self.queries.fetch_quips()
- return self.cached_quips
-
- def bug_url_for_bug_id(self, bug_id, xml=False):
- if not bug_id:
- return None
- content_type = "&ctype=xml&excludefield=attachmentdata" if xml else ""
- return "%sshow_bug.cgi?id=%s%s" % (config_urls.bug_server_url, bug_id, content_type)
-
- def short_bug_url_for_bug_id(self, bug_id):
- if not bug_id:
- return None
- return "http://webkit.org/b/%s" % bug_id
-
- def add_attachment_url(self, bug_id):
- return "%sattachment.cgi?action=enter&bugid=%s" % (config_urls.bug_server_url, bug_id)
-
- def attachment_url_for_id(self, attachment_id, action="view"):
- if not attachment_id:
- return None
- action_param = ""
- if action and action != "view":
- action_param = "&action=%s" % action
- return "%sattachment.cgi?id=%s%s" % (config_urls.bug_server_url,
- attachment_id,
- action_param)
-
- def edit_user_url_for_id(self, user_id):
- return "%seditusers.cgi?action=edit&userid=%s" % (config_urls.bug_server_url, user_id)
-
- def _parse_attachment_flag(self,
- element,
- flag_name,
- attachment,
- result_key):
- flag = element.find('flag', attrs={'name': flag_name})
- if flag:
- attachment[flag_name] = flag['status']
- if flag['status'] == '+':
- attachment[result_key] = flag['setter']
- # Sadly show_bug.cgi?ctype=xml does not expose the flag modification date.
-
- def _string_contents(self, soup):
- # WebKit's bugzilla instance uses UTF-8.
- # BeautifulStoneSoup always returns Unicode strings, however
- # the .string method returns a (unicode) NavigableString.
- # NavigableString can confuse other parts of the code, so we
- # convert from NavigableString to a real unicode() object using unicode().
- return unicode(soup.string)
-
- # Example: 2010-01-20 14:31 PST
- # FIXME: Some bugzilla dates seem to have seconds in them?
- # Python does not support timezones out of the box.
- # Assume that bugzilla always uses PST (which is true for bugs.webkit.org)
- _bugzilla_date_format = "%Y-%m-%d %H:%M:%S"
-
- @classmethod
- def _parse_date(cls, date_string):
- (date, time, time_zone) = date_string.split(" ")
- if time.count(':') == 1:
- # Add seconds into the time.
- time += ':0'
- # Ignore the timezone because python doesn't understand timezones out of the box.
- date_string = "%s %s" % (date, time)
- return datetime.strptime(date_string, cls._bugzilla_date_format)
-
- def _date_contents(self, soup):
- return self._parse_date(self._string_contents(soup))
-
- def _parse_attachment_element(self, element, bug_id):
- attachment = {}
- attachment['bug_id'] = bug_id
- attachment['is_obsolete'] = (element.has_key('isobsolete') and element['isobsolete'] == "1")
- attachment['is_patch'] = (element.has_key('ispatch') and element['ispatch'] == "1")
- attachment['id'] = int(element.find('attachid').string)
- # FIXME: No need to parse out the url here.
- attachment['url'] = self.attachment_url_for_id(attachment['id'])
- attachment["attach_date"] = self._date_contents(element.find("date"))
- attachment['name'] = self._string_contents(element.find('desc'))
- attachment['attacher_email'] = self._string_contents(element.find('attacher'))
- attachment['type'] = self._string_contents(element.find('type'))
- self._parse_attachment_flag(
- element, 'review', attachment, 'reviewer_email')
- self._parse_attachment_flag(
- element, 'commit-queue', attachment, 'committer_email')
- return attachment
-
- def _parse_log_descr_element(self, element):
- comment = {}
- comment['comment_email'] = self._string_contents(element.find('who'))
- comment['comment_date'] = self._date_contents(element.find('bug_when'))
- comment['text'] = self._string_contents(element.find('thetext'))
- return comment
-
- def _parse_bugs_from_xml(self, page):
- soup = BeautifulSoup(page)
- # Without the unicode() call, BeautifulSoup occasionally complains of being
- # passed None for no apparent reason.
- return [Bug(self._parse_bug_dictionary_from_xml(unicode(bug_xml)), self) for bug_xml in soup('bug')]
-
- def _parse_bug_dictionary_from_xml(self, page):
- soup = BeautifulStoneSoup(page, convertEntities=BeautifulStoneSoup.XML_ENTITIES)
- bug = {}
- bug["id"] = int(soup.find("bug_id").string)
- bug["title"] = self._string_contents(soup.find("short_desc"))
- bug["bug_status"] = self._string_contents(soup.find("bug_status"))
- dup_id = soup.find("dup_id")
- if dup_id:
- bug["dup_id"] = self._string_contents(dup_id)
- bug["reporter_email"] = self._string_contents(soup.find("reporter"))
- bug["assigned_to_email"] = self._string_contents(soup.find("assigned_to"))
- bug["cc_emails"] = [self._string_contents(element) for element in soup.findAll('cc')]
- bug["attachments"] = [self._parse_attachment_element(element, bug["id"]) for element in soup.findAll('attachment')]
- bug["comments"] = [self._parse_log_descr_element(element) for element in soup.findAll('long_desc')]
-
- return bug
-
- # Makes testing fetch_*_from_bug() possible until we have a better
- # BugzillaNetwork abstration.
-
- def _fetch_bug_page(self, bug_id):
- bug_url = self.bug_url_for_bug_id(bug_id, xml=True)
- _log.info("Fetching: %s" % bug_url)
- return self.browser.open(bug_url)
-
- def fetch_bug_dictionary(self, bug_id):
- try:
- return self._parse_bug_dictionary_from_xml(self._fetch_bug_page(bug_id))
- except KeyboardInterrupt:
- raise
- except:
- self.authenticate()
- return self._parse_bug_dictionary_from_xml(self._fetch_bug_page(bug_id))
-
- # FIXME: A BugzillaCache object should provide all these fetch_ methods.
-
- def fetch_bug(self, bug_id):
- return Bug(self.fetch_bug_dictionary(bug_id), self)
-
- def fetch_attachment_contents(self, attachment_id):
- attachment_url = self.attachment_url_for_id(attachment_id)
- # We need to authenticate to download patches from security bugs.
- self.authenticate()
- return self.browser.open(attachment_url).read()
-
- def _parse_bug_id_from_attachment_page(self, page):
- # The "Up" relation happens to point to the bug.
- up_link = BeautifulSoup(page).find('link', rel='Up')
- if not up_link:
- # This attachment does not exist (or you don't have permissions to
- # view it).
- return None
- match = re.search("show_bug.cgi\?id=(?P<bug_id>\d+)", up_link['href'])
- return int(match.group('bug_id'))
-
- def bug_id_for_attachment_id(self, attachment_id):
- self.authenticate()
-
- attachment_url = self.attachment_url_for_id(attachment_id, 'edit')
- _log.info("Fetching: %s" % attachment_url)
- page = self.browser.open(attachment_url)
- return self._parse_bug_id_from_attachment_page(page)
-
- # FIXME: This should just return Attachment(id), which should be able to
- # lazily fetch needed data.
-
- def fetch_attachment(self, attachment_id):
- # We could grab all the attachment details off of the attachment edit
- # page but we already have working code to do so off of the bugs page,
- # so re-use that.
- bug_id = self.bug_id_for_attachment_id(attachment_id)
- if not bug_id:
- return None
- attachments = self.fetch_bug(bug_id).attachments(include_obsolete=True)
- for attachment in attachments:
- if attachment.id() == int(attachment_id):
- return attachment
- return None # This should never be hit.
-
- def authenticate(self):
- if self.authenticated:
- return
-
- credentials = Credentials(config_urls.bug_server_host, git_prefix="bugzilla")
-
- attempts = 0
- while not self.authenticated:
- attempts += 1
- username, password = credentials.read_credentials()
-
- _log.info("Logging in as %s..." % username)
- self.browser.open(config_urls.bug_server_url +
- "index.cgi?GoAheadAndLogIn=1")
- self.browser.select_form(name="login")
- self.browser['Bugzilla_login'] = username
- self.browser['Bugzilla_password'] = password
- self.browser.find_control("Bugzilla_restrictlogin").items[0].selected = False
- response = self.browser.submit()
-
- match = re.search("<title>(.+?)</title>", response.read())
- # If the resulting page has a title, and it contains the word
- # "invalid" assume it's the login failure page.
- if match and re.search("Invalid", match.group(1), re.IGNORECASE):
- errorMessage = "Bugzilla login failed: %s" % match.group(1)
- # raise an exception only if this was the last attempt
- if attempts < 5:
- _log.error(errorMessage)
- else:
- raise Exception(errorMessage)
- else:
- self.authenticated = True
- self.username = username
-
- # FIXME: Use enum instead of two booleans
- def _commit_queue_flag(self, mark_for_landing, mark_for_commit_queue):
- if mark_for_landing:
- user = self.committers.contributor_by_email(self.username)
- mark_for_commit_queue = True
- if not user:
- _log.warning("Your Bugzilla login is not listed in committers.py. Uploading with cq? instead of cq+")
- mark_for_landing = False
- elif not user.can_commit:
- _log.warning("You're not a committer yet or haven't updated committers.py yet. Uploading with cq? instead of cq+")
- mark_for_landing = False
-
- if mark_for_landing:
- return '+'
- if mark_for_commit_queue:
- return '?'
- return 'X'
-
- # FIXME: mark_for_commit_queue and mark_for_landing should be joined into a single commit_flag argument.
- def _fill_attachment_form(self,
- description,
- file_object,
- mark_for_review=False,
- mark_for_commit_queue=False,
- mark_for_landing=False,
- is_patch=False,
- filename=None,
- mimetype=None):
- self.browser['description'] = description
- if is_patch:
- self.browser['ispatch'] = ("1",)
- # FIXME: Should this use self._find_select_element_for_flag?
- self.browser['flag_type-1'] = ('?',) if mark_for_review else ('X',)
- self.browser['flag_type-3'] = (self._commit_queue_flag(mark_for_landing, mark_for_commit_queue),)
-
- filename = filename or "%s.patch" % timestamp()
- if not mimetype:
- mimetypes.add_type('text/plain', '.patch') # Make sure mimetypes knows about .patch
- mimetype, _ = mimetypes.guess_type(filename)
- if not mimetype:
- mimetype = "text/plain" # Bugzilla might auto-guess for us and we might not need this?
- self.browser.add_file(file_object, mimetype, filename, 'data')
-
- def _file_object_for_upload(self, file_or_string):
- if hasattr(file_or_string, 'read'):
- return file_or_string
- # Only if file_or_string is not already encoded do we want to encode it.
- if isinstance(file_or_string, unicode):
- file_or_string = file_or_string.encode('utf-8')
- return StringIO.StringIO(file_or_string)
-
- # timestamp argument is just for unittests.
- def _filename_for_upload(self, file_object, bug_id, extension="txt", timestamp=timestamp):
- if hasattr(file_object, "name"):
- return file_object.name
- return "bug-%s-%s.%s" % (bug_id, timestamp(), extension)
-
- def add_attachment_to_bug(self, bug_id, file_or_string, description, filename=None, comment_text=None, mimetype=None):
- self.authenticate()
- _log.info('Adding attachment "%s" to %s' % (description, self.bug_url_for_bug_id(bug_id)))
- self.browser.open(self.add_attachment_url(bug_id))
- self.browser.select_form(name="entryform")
- file_object = self._file_object_for_upload(file_or_string)
- filename = filename or self._filename_for_upload(file_object, bug_id)
- self._fill_attachment_form(description, file_object, filename=filename, mimetype=mimetype)
- if comment_text:
- _log.info(comment_text)
- self.browser['comment'] = comment_text
- self.browser.submit()
-
- # FIXME: The arguments to this function should be simplified and then
- # this should be merged into add_attachment_to_bug
- def add_patch_to_bug(self,
- bug_id,
- file_or_string,
- description,
- comment_text=None,
- mark_for_review=False,
- mark_for_commit_queue=False,
- mark_for_landing=False):
- self.authenticate()
- _log.info('Adding patch "%s" to %s' % (description, self.bug_url_for_bug_id(bug_id)))
-
- self.browser.open(self.add_attachment_url(bug_id))
- self.browser.select_form(name="entryform")
- file_object = self._file_object_for_upload(file_or_string)
- filename = self._filename_for_upload(file_object, bug_id, extension="patch")
- self._fill_attachment_form(description,
- file_object,
- mark_for_review=mark_for_review,
- mark_for_commit_queue=mark_for_commit_queue,
- mark_for_landing=mark_for_landing,
- is_patch=True,
- filename=filename)
- if comment_text:
- _log.info(comment_text)
- self.browser['comment'] = comment_text
- self.browser.submit()
-
- # FIXME: There has to be a more concise way to write this method.
- def _check_create_bug_response(self, response_html):
- match = re.search("<title>Bug (?P<bug_id>\d+) Submitted[^<]*</title>",
- response_html)
- if match:
- return match.group('bug_id')
-
- match = re.search(
- '<div id="bugzilla-body">(?P<error_message>.+)<div id="footer">',
- response_html,
- re.DOTALL)
- error_message = "FAIL"
- if match:
- text_lines = BeautifulSoup(
- match.group('error_message')).findAll(text=True)
- error_message = "\n" + '\n'.join(
- [" " + line.strip()
- for line in text_lines if line.strip()])
- raise Exception("Bug not created: %s" % error_message)
-
- def create_bug(self,
- bug_title,
- bug_description,
- component=None,
- diff=None,
- patch_description=None,
- cc=None,
- blocked=None,
- assignee=None,
- mark_for_review=False,
- mark_for_commit_queue=False):
- self.authenticate()
-
- _log.info('Creating bug with title "%s"' % bug_title)
- self.browser.open(config_urls.bug_server_url + "enter_bug.cgi?product=WebKit")
- self.browser.select_form(name="Create")
- component_items = self.browser.find_control('component').items
- component_names = map(lambda item: item.name, component_items)
- if not component:
- component = "New Bugs"
- if component not in component_names:
- component = User.prompt_with_list("Please pick a component:", component_names)
- self.browser["component"] = [component]
- if cc:
- self.browser["cc"] = cc
- if blocked:
- self.browser["blocked"] = unicode(blocked)
- if not assignee:
- assignee = self.username
- if assignee and not self.browser.find_control("assigned_to").disabled:
- self.browser["assigned_to"] = assignee
- self.browser["short_desc"] = bug_title
- self.browser["comment"] = bug_description
-
- if diff:
- # _fill_attachment_form expects a file-like object
- # Patch files are already binary, so no encoding needed.
- assert(isinstance(diff, str))
- patch_file_object = StringIO.StringIO(diff)
- self._fill_attachment_form(
- patch_description,
- patch_file_object,
- mark_for_review=mark_for_review,
- mark_for_commit_queue=mark_for_commit_queue,
- is_patch=True)
-
- response = self.browser.submit()
-
- bug_id = self._check_create_bug_response(response.read())
- _log.info("Bug %s created." % bug_id)
- _log.info("%sshow_bug.cgi?id=%s" % (config_urls.bug_server_url, bug_id))
- return bug_id
-
- def _find_select_element_for_flag(self, flag_name):
- # FIXME: This will break if we ever re-order attachment flags
- if flag_name == "review":
- return self.browser.find_control(type='select', nr=0)
- elif flag_name == "commit-queue":
- return self.browser.find_control(type='select', nr=1)
- raise Exception("Don't know how to find flag named \"%s\"" % flag_name)
-
- def clear_attachment_flags(self,
- attachment_id,
- additional_comment_text=None):
- self.authenticate()
-
- comment_text = "Clearing flags on attachment: %s" % attachment_id
- if additional_comment_text:
- comment_text += "\n\n%s" % additional_comment_text
- _log.info(comment_text)
-
- self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
- self.browser.select_form(nr=1)
- self.browser.set_value(comment_text, name='comment', nr=0)
- self._find_select_element_for_flag('review').value = ("X",)
- self._find_select_element_for_flag('commit-queue').value = ("X",)
- self.browser.submit()
-
- def set_flag_on_attachment(self,
- attachment_id,
- flag_name,
- flag_value,
- comment_text=None):
- # FIXME: We need a way to test this function on a live bugzilla
- # instance.
-
- self.authenticate()
- _log.info(comment_text)
- self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
- self.browser.select_form(nr=1)
-
- if comment_text:
- self.browser.set_value(comment_text, name='comment', nr=0)
-
- self._find_select_element_for_flag(flag_name).value = (flag_value,)
- self.browser.submit()
-
- # FIXME: All of these bug editing methods have a ridiculous amount of
- # copy/paste code.
-
- def obsolete_attachment(self, attachment_id, comment_text=None):
- self.authenticate()
-
- _log.info("Obsoleting attachment: %s" % attachment_id)
- self.browser.open(self.attachment_url_for_id(attachment_id, 'edit'))
- self.browser.select_form(nr=1)
- self.browser.find_control('isobsolete').items[0].selected = True
- # Also clear any review flag (to remove it from review/commit queues)
- self._find_select_element_for_flag('review').value = ("X",)
- self._find_select_element_for_flag('commit-queue').value = ("X",)
- if comment_text:
- _log.info(comment_text)
- # Bugzilla has two textareas named 'comment', one is somehow
- # hidden. We want the first.
- self.browser.set_value(comment_text, name='comment', nr=0)
- self.browser.submit()
-
- def add_cc_to_bug(self, bug_id, email_address_list):
- self.authenticate()
-
- _log.info("Adding %s to the CC list for bug %s" % (email_address_list, bug_id))
- self.browser.open(self.bug_url_for_bug_id(bug_id))
- self.browser.select_form(name="changeform")
- self.browser["newcc"] = ", ".join(email_address_list)
- self.browser.submit()
-
- def post_comment_to_bug(self, bug_id, comment_text, cc=None):
- self.authenticate()
-
- _log.info("Adding comment to bug %s" % bug_id)
- self.browser.open(self.bug_url_for_bug_id(bug_id))
- self.browser.select_form(name="changeform")
- self.browser["comment"] = comment_text
- if cc:
- self.browser["newcc"] = ", ".join(cc)
- self.browser.submit()
-
- def close_bug_as_fixed(self, bug_id, comment_text=None):
- self.authenticate()
-
- _log.info("Closing bug %s as fixed" % bug_id)
- self.browser.open(self.bug_url_for_bug_id(bug_id))
- self.browser.select_form(name="changeform")
- if comment_text:
- self.browser['comment'] = comment_text
- self.browser['bug_status'] = ['RESOLVED']
- self.browser['resolution'] = ['FIXED']
- self.browser.submit()
-
- def _has_control(self, form, id):
- return id in [control.id for control in form.controls]
-
- def reassign_bug(self, bug_id, assignee=None, comment_text=None):
- self.authenticate()
-
- if not assignee:
- assignee = self.username
-
- _log.info("Assigning bug %s to %s" % (bug_id, assignee))
- self.browser.open(self.bug_url_for_bug_id(bug_id))
- self.browser.select_form(name="changeform")
-
- if not self._has_control(self.browser, "assigned_to"):
- _log.warning("""Failed to assign bug to you (can't find assigned_to) control.
-Ignore this message if you don't have EditBugs privileges (https://bugs.webkit.org/userprefs.cgi?tab=permissions)""")
- return
-
- if comment_text:
- _log.info(comment_text)
- self.browser["comment"] = comment_text
- self.browser["assigned_to"] = assignee
- self.browser.submit()
-
- def reopen_bug(self, bug_id, comment_text):
- self.authenticate()
-
- _log.info("Re-opening bug %s" % bug_id)
- # Bugzilla requires a comment when re-opening a bug, so we know it will
- # never be None.
- _log.info(comment_text)
- self.browser.open(self.bug_url_for_bug_id(bug_id))
- self.browser.select_form(name="changeform")
- bug_status = self.browser.find_control("bug_status", type="select")
- # This is a hack around the fact that ClientForm.ListControl seems to
- # have no simpler way to ask if a control has an item named "REOPENED"
- # without using exceptions for control flow.
- possible_bug_statuses = map(lambda item: item.name, bug_status.items)
- if "REOPENED" in possible_bug_statuses:
- bug_status.value = ["REOPENED"]
- # If the bug was never confirmed it will not have a "REOPENED"
- # state, but only an "UNCONFIRMED" state.
- elif "UNCONFIRMED" in possible_bug_statuses:
- bug_status.value = ["UNCONFIRMED"]
- else:
- # FIXME: This logic is slightly backwards. We won't print this
- # message if the bug is already open with state "UNCONFIRMED".
- _log.info("Did not reopen bug %s, it appears to already be open with status %s." % (bug_id, bug_status.value))
- self.browser['comment'] = comment_text
- self.browser.submit()
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py
deleted file mode 100644
index 2447ed284..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_mock.py
+++ /dev/null
@@ -1,432 +0,0 @@
-# Copyright (C) 2011 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.
-
-import datetime
-import logging
-
-from .bug import Bug
-from .attachment import Attachment
-from webkitpy.common.config.committers import CommitterList, Reviewer
-
-_log = logging.getLogger(__name__)
-
-
-def _id_to_object_dictionary(*objects):
- dictionary = {}
- for thing in objects:
- dictionary[thing["id"]] = thing
- return dictionary
-
-# Testing
-
-
-_patch1 = {
- "id": 10000,
- "bug_id": 50000,
- "url": "http://example.com/10000",
- "name": "Patch1",
- "is_obsolete": False,
- "is_patch": True,
- "review": "+",
- "reviewer_email": "foo@bar.com",
- "commit-queue": "+",
- "committer_email": "foo@bar.com",
- "attacher_email": "Contributer1",
-}
-
-
-_patch2 = {
- "id": 10001,
- "bug_id": 50000,
- "url": "http://example.com/10001",
- "name": "Patch2",
- "is_obsolete": False,
- "is_patch": True,
- "review": "+",
- "reviewer_email": "reviewer2@webkit.org",
- "commit-queue": "+",
- "committer_email": "non-committer@example.com",
- "attacher_email": "eric@webkit.org",
-}
-
-
-_patch3 = {
- "id": 10002,
- "bug_id": 50001,
- "url": "http://example.com/10002",
- "name": "Patch3",
- "is_obsolete": False,
- "is_patch": True,
- "review": "?",
- "commit-queue": "-",
- "attacher_email": "eric@webkit.org",
- "attach_date": datetime.datetime.today(),
-}
-
-
-_patch4 = {
- "id": 10003,
- "bug_id": 50003,
- "url": "http://example.com/10002",
- "name": "Patch3",
- "is_obsolete": False,
- "is_patch": True,
- "review": "+",
- "commit-queue": "?",
- "reviewer_email": "foo@bar.com",
- "attacher_email": "Contributer2",
-}
-
-
-_patch5 = {
- "id": 10004,
- "bug_id": 50003,
- "url": "http://example.com/10002",
- "name": "Patch5",
- "is_obsolete": False,
- "is_patch": True,
- "review": "+",
- "reviewer_email": "foo@bar.com",
- "attacher_email": "eric@webkit.org",
-}
-
-
-_patch6 = { # Valid committer, but no reviewer.
- "id": 10005,
- "bug_id": 50003,
- "url": "http://example.com/10002",
- "name": "ROLLOUT of r3489",
- "is_obsolete": False,
- "is_patch": True,
- "commit-queue": "+",
- "committer_email": "foo@bar.com",
- "attacher_email": "eric@webkit.org",
-}
-
-
-_patch7 = { # Valid review, patch is marked obsolete.
- "id": 10006,
- "bug_id": 50002,
- "url": "http://example.com/10002",
- "name": "Patch7",
- "is_obsolete": True,
- "is_patch": True,
- "review": "+",
- "reviewer_email": "foo@bar.com",
- "attacher_email": "eric@webkit.org",
-}
-
-
-# This matches one of Bug.unassigned_emails
-_unassigned_email = "webkit-unassigned@lists.webkit.org"
-# This is needed for the FlakyTestReporter to believe the bug
-# was filed by one of the webkitpy bots.
-_commit_queue_email = "commit-queue@webkit.org"
-
-
-_bug1 = {
- "id": 50000,
- "title": "Bug with two r+'d and cq+'d patches, one of which has an "
- "invalid commit-queue setter.",
- "reporter_email": "foo@foo.com",
- "assigned_to_email": _unassigned_email,
- "cc_emails": [],
- "attachments": [_patch1, _patch2],
- "bug_status": "UNCONFIRMED",
- "comments": [],
-}
-
-
-_bug2 = {
- "id": 50001,
- "title": "Bug with a patch needing review.",
- "reporter_email": "eric@webkit.org",
- "assigned_to_email": "foo@foo.com",
- "cc_emails": ["abarth@webkit.org", ],
- "attachments": [_patch3],
- "bug_status": "ASSIGNED",
- "comments": [{"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Message1.\nCommitted r35: <http://trac.webkit.org/changeset/35>",
- },
- ],
-}
-
-
-_bug3 = {
- "id": 50002,
- "title": "The third bug",
- "reporter_email": "foo@foo.com",
- "assigned_to_email": _unassigned_email,
- "cc_emails": [],
- "attachments": [_patch7],
- "bug_status": "NEW",
- "comments": [{"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Committed r30: <http://trac.webkit.org/changeset/30>",
- },
- {"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Committed r31: <http://trac.webkit.org/changeset/31>",
- },
- ],
-}
-
-
-_bug4 = {
- "id": 50003,
- "title": "The fourth bug",
- "reporter_email": "foo@foo.com",
- "assigned_to_email": "foo@foo.com",
- "cc_emails": [],
- "attachments": [_patch4, _patch5, _patch6],
- "bug_status": "REOPENED",
- "comments": [{"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Committed r25: <http://trac.webkit.org/changeset/30>",
- },
- {"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Rolled out in <http://trac.webkit.org/changeset/26",
- },
- ],
-}
-
-
-_bug5 = {
- "id": 50004,
- "title": "The fifth bug",
- "reporter_email": _commit_queue_email,
- "assigned_to_email": "foo@foo.com",
- "cc_emails": [],
- "attachments": [],
- "bug_status": "RESOLVED",
- "dup_id": 50002,
- "comments": [{"comment_date": datetime.datetime(2011, 6, 11, 9, 4, 3),
- "comment_email": "bar@foo.com",
- "text": "Committed r15: <http://trac.webkit.org/changeset/15>",
- },
- ],
-
-}
-
-
-class MockBugzillaQueries(object):
-
- def __init__(self, bugzilla):
- self._bugzilla = bugzilla
-
- def _all_bugs(self):
- return map(lambda bug_dictionary: Bug(bug_dictionary, self._bugzilla),
- self._bugzilla.bug_cache.values())
-
- def fetch_bug_ids_from_commit_queue(self):
- bugs_with_commit_queued_patches = filter(
- lambda bug: bug.commit_queued_patches(),
- self._all_bugs())
- return map(lambda bug: bug.id(), bugs_with_commit_queued_patches)
-
- def fetch_attachment_ids_from_review_queue(self):
- unreviewed_patches = sum([bug.unreviewed_patches()
- for bug in self._all_bugs()], [])
- return map(lambda patch: patch.id(), unreviewed_patches)
-
- def fetch_patches_from_commit_queue(self):
- return sum([bug.commit_queued_patches()
- for bug in self._all_bugs()], [])
-
- def fetch_bug_ids_from_pending_commit_list(self):
- bugs_with_reviewed_patches = filter(lambda bug: bug.reviewed_patches(),
- self._all_bugs())
- bug_ids = map(lambda bug: bug.id(), bugs_with_reviewed_patches)
- # NOTE: This manual hack here is to allow testing logging in
- # test_assign_to_committer the real pending-commit query on bugzilla
- # will return bugs with patches which have r+, but are also obsolete.
- return bug_ids + [50002]
-
- def fetch_bugs_from_review_queue(self, cc_email=None):
- unreviewed_bugs = [bug for bug in self._all_bugs() if bug.unreviewed_patches()]
-
- if cc_email:
- return [bug for bug in unreviewed_bugs if cc_email in bug.cc_emails()]
-
- return unreviewed_bugs
-
- def fetch_patches_from_pending_commit_list(self):
- return sum([bug.reviewed_patches() for bug in self._all_bugs()], [])
-
- def fetch_bugs_matching_search(self, search_string):
- return [self._bugzilla.fetch_bug(50004), self._bugzilla.fetch_bug(50003)]
-
- def fetch_bugs_matching_quicksearch(self, search_string):
- return [self._bugzilla.fetch_bug(50001), self._bugzilla.fetch_bug(50002),
- self._bugzilla.fetch_bug(50003), self._bugzilla.fetch_bug(50004)]
-
-
-_mock_reviewers = [Reviewer("Foo Bar", "foo@bar.com"),
- Reviewer("Reviewer2", "reviewer2@webkit.org")]
-
-
-# FIXME: Bugzilla is the wrong Mock-point. Once we have a BugzillaNetwork
-# class we should mock that instead.
-# Most of this class is just copy/paste from Bugzilla.
-class MockBugzilla(object):
-
- bug_server_url = "http://example.com"
-
- bug_cache = _id_to_object_dictionary(_bug1, _bug2, _bug3, _bug4, _bug5)
-
- attachment_cache = _id_to_object_dictionary(_patch1,
- _patch2,
- _patch3,
- _patch4,
- _patch5,
- _patch6,
- _patch7)
-
- def __init__(self):
- self.queries = MockBugzillaQueries(self)
- # FIXME: This should move onto the Host object, and we should use a MockCommitterList
- self.committers = CommitterList(reviewers=_mock_reviewers)
- self.username = None
- self._override_patch = None
-
- def authenticate(self):
- self.username = "username@webkit.org"
-
- def create_bug(self,
- bug_title,
- bug_description,
- component=None,
- diff=None,
- patch_description=None,
- cc=None,
- blocked=None,
- mark_for_review=False,
- mark_for_commit_queue=False):
- _log.info("MOCK create_bug")
- _log.info("bug_title: %s" % bug_title)
- _log.info("bug_description: %s" % bug_description)
- if component:
- _log.info("component: %s" % component)
- if cc:
- _log.info("cc: %s" % cc)
- if blocked:
- _log.info("blocked: %s" % blocked)
- return 60001
-
- def quips(self):
- return ["Good artists copy. Great artists steal. - Pablo Picasso"]
-
- def fetch_bug(self, bug_id):
- return Bug(self.bug_cache.get(int(bug_id)), self)
-
- def set_override_patch(self, patch):
- self._override_patch = patch
-
- def fetch_attachment(self, attachment_id):
- if self._override_patch:
- return self._override_patch
-
- attachment_dictionary = self.attachment_cache.get(attachment_id)
- if not attachment_dictionary:
- print "MOCK: fetch_attachment: %s is not a known attachment id" % attachment_id
- return None
- bug = self.fetch_bug(attachment_dictionary["bug_id"])
- for attachment in bug.attachments(include_obsolete=True):
- if attachment.id() == int(attachment_id):
- return attachment
-
- def bug_url_for_bug_id(self, bug_id):
- return "%s/%s" % (self.bug_server_url, bug_id)
-
- def fetch_bug_dictionary(self, bug_id):
- return self.bug_cache.get(bug_id)
-
- def attachment_url_for_id(self, attachment_id, action="view"):
- action_param = ""
- if action and action != "view":
- action_param = "&action=%s" % action
- return "%s/%s%s" % (self.bug_server_url, attachment_id, action_param)
-
- def reassign_bug(self, bug_id, assignee=None, comment_text=None):
- _log.info("MOCK reassign_bug: bug_id=%s, assignee=%s" % (bug_id, assignee))
- if comment_text:
- _log.info("-- Begin comment --")
- _log.info(comment_text)
- _log.info("-- End comment --")
-
- def set_flag_on_attachment(self,
- attachment_id,
- flag_name,
- flag_value,
- comment_text=None):
- _log.info("MOCK setting flag '%s' to '%s' on attachment '%s' with comment '%s'" % (
- flag_name, flag_value, attachment_id, comment_text))
-
- def post_comment_to_bug(self, bug_id, comment_text, cc=None):
- _log.info("MOCK bug comment: bug_id=%s, cc=%s\n--- Begin comment ---\n%s\n--- End comment ---\n" % (
- bug_id, cc, comment_text))
-
- def add_attachment_to_bug(self, bug_id, file_or_string, description, filename=None, comment_text=None, mimetype=None):
- _log.info("MOCK add_attachment_to_bug: bug_id=%s, description=%s filename=%s mimetype=%s" %
- (bug_id, description, filename, mimetype))
- if comment_text:
- _log.info("-- Begin comment --")
- _log.info(comment_text)
- _log.info("-- End comment --")
-
- def add_patch_to_bug(self,
- bug_id,
- diff,
- description,
- comment_text=None,
- mark_for_review=False,
- mark_for_commit_queue=False,
- mark_for_landing=False):
- _log.info("MOCK add_patch_to_bug: bug_id=%s, description=%s, mark_for_review=%s, mark_for_commit_queue=%s, mark_for_landing=%s" %
- (bug_id, description, mark_for_review, mark_for_commit_queue, mark_for_landing))
- if comment_text:
- _log.info("-- Begin comment --")
- _log.info(comment_text)
- _log.info("-- End comment --")
-
- def add_cc_to_bug(self, bug_id, ccs):
- pass
-
- def obsolete_attachment(self, attachment_id, message=None):
- pass
-
- def reopen_bug(self, bug_id, message):
- _log.info("MOCK reopen_bug %s with comment '%s'" % (bug_id, message))
-
- def close_bug_as_fixed(self, bug_id, message):
- pass
-
- def clear_attachment_flags(self, attachment_id, message):
- pass
diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py
deleted file mode 100644
index 7c5a56d06..000000000
--- a/Tools/Scripts/webkitpy/common/net/bugzilla/bugzilla_unittest.py
+++ /dev/null
@@ -1,558 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-import datetime
-import StringIO
-
-from .bugzilla import Bugzilla, BugzillaQueries, EditUsersParser
-
-from webkitpy.common.config import urls
-from webkitpy.common.config.committers import Reviewer, Committer, Contributor, CommitterList
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.net.web_mock import MockBrowser
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-
-class BugzillaTest(unittest.TestCase):
- _example_attachment = '''
- <attachment
- isobsolete="1"
- ispatch="1"
- isprivate="0"
- >
- <attachid>33721</attachid>
- <date>2009-07-29 10:23 PDT</date>
- <desc>Fixed whitespace issue</desc>
- <filename>patch</filename>
- <type>text/plain</type>
- <size>9719</size>
- <attacher>christian.plesner.hansen@gmail.com</attacher>
- <flag name="review"
- id="17931"
- status="+"
- setter="one@test.com"
- />
- <flag name="commit-queue"
- id="17932"
- status="+"
- setter="two@test.com"
- />
- </attachment>
-'''
- _expected_example_attachment_parsing = {
- 'attach_date': datetime.datetime(2009, 07, 29, 10, 23),
- 'bug_id' : 100,
- 'is_obsolete' : True,
- 'is_patch' : True,
- 'id' : 33721,
- 'url' : "https://bugs.webkit.org/attachment.cgi?id=33721",
- 'name' : "Fixed whitespace issue",
- 'type' : "text/plain",
- 'review' : '+',
- 'reviewer_email' : 'one@test.com',
- 'commit-queue' : '+',
- 'committer_email' : 'two@test.com',
- 'attacher_email' : 'christian.plesner.hansen@gmail.com',
- }
-
- def test_url_creation(self):
- # FIXME: These would be all better as doctests
- bugs = Bugzilla()
- self.assertIsNone(bugs.bug_url_for_bug_id(None))
- self.assertIsNone(bugs.short_bug_url_for_bug_id(None))
- self.assertIsNone(bugs.attachment_url_for_id(None))
-
- def test_parse_bug_id(self):
- # Test that we can parse the urls we produce.
- bugs = Bugzilla()
- self.assertEqual(12345, urls.parse_bug_id(bugs.short_bug_url_for_bug_id(12345)))
- self.assertEqual(12345, urls.parse_bug_id(bugs.bug_url_for_bug_id(12345)))
- self.assertEqual(12345, urls.parse_bug_id(bugs.bug_url_for_bug_id(12345, xml=True)))
-
- _bug_xml = """
- <bug>
- <bug_id>32585</bug_id>
- <creation_ts>2009-12-15 15:17 PST</creation_ts>
- <short_desc>bug to test webkit-patch&apos;s and commit-queue&apos;s failures</short_desc>
- <delta_ts>2009-12-27 21:04:50 PST</delta_ts>
- <reporter_accessible>1</reporter_accessible>
- <cclist_accessible>1</cclist_accessible>
- <classification_id>1</classification_id>
- <classification>Unclassified</classification>
- <product>WebKit</product>
- <component>Tools / Tests</component>
- <version>528+ (Nightly build)</version>
- <rep_platform>PC</rep_platform>
- <op_sys>Mac OS X 10.5</op_sys>
- <bug_status>NEW</bug_status>
- <priority>P2</priority>
- <bug_severity>Normal</bug_severity>
- <target_milestone>---</target_milestone>
- <everconfirmed>1</everconfirmed>
- <reporter name="Eric Seidel">eric@webkit.org</reporter>
- <assigned_to name="Nobody">webkit-unassigned@lists.webkit.org</assigned_to>
- <cc>foo@bar.com</cc>
- <cc>example@example.com</cc>
- <long_desc isprivate="0">
- <who name="Eric Seidel">eric@webkit.org</who>
- <bug_when>2009-12-15 15:17:28 PST</bug_when>
- <thetext>bug to test webkit-patch and commit-queue failures
-
-Ignore this bug. Just for testing failure modes of webkit-patch and the commit-queue.</thetext>
- </long_desc>
- <attachment
- isobsolete="0"
- ispatch="1"
- isprivate="0"
- >
- <attachid>45548</attachid>
- <date>2009-12-27 23:51 PST</date>
- <desc>Patch</desc>
- <filename>bug-32585-20091228005112.patch</filename>
- <type>text/plain</type>
- <size>10882</size>
- <attacher>mjs@apple.com</attacher>
-
- <token>1261988248-dc51409e9c421a4358f365fa8bec8357</token>
- <data encoding="base64">SW5kZXg6IFdlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
-removed-because-it-was-really-long
-ZEZpbmlzaExvYWRXaXRoUmVhc29uOnJlYXNvbl07Cit9CisKIEBlbmQKIAogI2VuZGlmCg==
-</data>
-
- <flag name="review"
- id="27602"
- status="?"
- setter="mjs@apple.com"
- />
- </attachment>
- </bug>
-"""
-
- _single_bug_xml = """
-<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
-<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/bugzilla.dtd">
-<bugzilla version="3.2.3"
- urlbase="https://bugs.webkit.org/"
- maintainer="admin@webkit.org"
- exporter="eric@webkit.org"
->
-%s
-</bugzilla>
-""" % _bug_xml
-
- _expected_example_bug_parsing = {
- "id" : 32585,
- "title" : u"bug to test webkit-patch's and commit-queue's failures",
- "cc_emails" : ["foo@bar.com", "example@example.com"],
- "reporter_email" : "eric@webkit.org",
- "assigned_to_email" : "webkit-unassigned@lists.webkit.org",
- "bug_status": "NEW",
- "attachments" : [{
- "attach_date": datetime.datetime(2009, 12, 27, 23, 51),
- 'name': u'Patch',
- 'url' : "https://bugs.webkit.org/attachment.cgi?id=45548",
- 'is_obsolete': False,
- 'review': '?',
- 'is_patch': True,
- 'attacher_email': 'mjs@apple.com',
- 'bug_id': 32585,
- 'type': 'text/plain',
- 'id': 45548
- }],
- "comments" : [{
- 'comment_date': datetime.datetime(2009, 12, 15, 15, 17, 28),
- 'comment_email': 'eric@webkit.org',
- 'text': """bug to test webkit-patch and commit-queue failures
-
-Ignore this bug. Just for testing failure modes of webkit-patch and the commit-queue.""",
- }]
- }
-
- # FIXME: This should move to a central location and be shared by more unit tests.
- def _assert_dictionaries_equal(self, actual, expected):
- # Make sure we aren't parsing more or less than we expect
- self.assertItemsEqual(actual.keys(), expected.keys())
-
- for key, expected_value in expected.items():
- self.assertEqual(actual[key], expected_value, ("Failure for key: %s: Actual='%s' Expected='%s'" % (key, actual[key], expected_value)))
-
- def test_parse_bug_dictionary_from_xml(self):
- bug = Bugzilla()._parse_bug_dictionary_from_xml(self._single_bug_xml)
- self._assert_dictionaries_equal(bug, self._expected_example_bug_parsing)
-
- _sample_multi_bug_xml = """
-<bugzilla version="3.2.3" urlbase="https://bugs.webkit.org/" maintainer="admin@webkit.org" exporter="eric@webkit.org">
- %s
- %s
-</bugzilla>
-""" % (_bug_xml, _bug_xml)
-
- def test_parse_bugs_from_xml(self):
- bugzilla = Bugzilla()
- bugs = bugzilla._parse_bugs_from_xml(self._sample_multi_bug_xml)
- self.assertEqual(len(bugs), 2)
- self.assertEqual(bugs[0].id(), self._expected_example_bug_parsing['id'])
- bugs = bugzilla._parse_bugs_from_xml("")
- self.assertEqual(len(bugs), 0)
-
- # This could be combined into test_bug_parsing later if desired.
- def test_attachment_parsing(self):
- bugzilla = Bugzilla()
- soup = BeautifulSoup(self._example_attachment)
- attachment_element = soup.find("attachment")
- attachment = bugzilla._parse_attachment_element(attachment_element, self._expected_example_attachment_parsing['bug_id'])
- self.assertTrue(attachment)
- self._assert_dictionaries_equal(attachment, self._expected_example_attachment_parsing)
-
- _sample_attachment_detail_page = """
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>
- Attachment 41073 Details for Bug 27314</title>
-<link rel="Top" href="https://bugs.webkit.org/">
- <link rel="Up" href="show_bug.cgi?id=27314">
-"""
-
- def test_attachment_detail_bug_parsing(self):
- bugzilla = Bugzilla()
- self.assertEqual(27314, bugzilla._parse_bug_id_from_attachment_page(self._sample_attachment_detail_page))
-
- def test_add_cc_to_bug(self):
- bugzilla = Bugzilla()
- bugzilla.browser = MockBrowser()
- bugzilla.authenticate = lambda: None
- expected_logs = "Adding ['adam@example.com'] to the CC list for bug 42\n"
- OutputCapture().assert_outputs(self, bugzilla.add_cc_to_bug, [42, ["adam@example.com"]], expected_logs=expected_logs)
-
- def _mock_control_item(self, name):
- mock_item = Mock()
- mock_item.name = name
- return mock_item
-
- def _mock_find_control(self, item_names=[], selected_index=0):
- mock_control = Mock()
- mock_control.items = [self._mock_control_item(name) for name in item_names]
- mock_control.value = [item_names[selected_index]] if item_names else None
- return lambda name, type: mock_control
-
- def _assert_reopen(self, item_names=None, selected_index=None, extra_logs=None):
- bugzilla = Bugzilla()
- bugzilla.browser = MockBrowser()
- bugzilla.authenticate = lambda: None
-
- mock_find_control = self._mock_find_control(item_names, selected_index)
- bugzilla.browser.find_control = mock_find_control
- expected_logs = "Re-opening bug 42\n['comment']\n"
- if extra_logs:
- expected_logs += extra_logs
- OutputCapture().assert_outputs(self, bugzilla.reopen_bug, [42, ["comment"]], expected_logs=expected_logs)
-
- def test_reopen_bug(self):
- self._assert_reopen(item_names=["REOPENED", "RESOLVED", "CLOSED"], selected_index=1)
- self._assert_reopen(item_names=["UNCONFIRMED", "RESOLVED", "CLOSED"], selected_index=1)
- extra_logs = "Did not reopen bug 42, it appears to already be open with status ['NEW'].\n"
- self._assert_reopen(item_names=["NEW", "RESOLVED"], selected_index=0, extra_logs=extra_logs)
-
- def test_file_object_for_upload(self):
- bugzilla = Bugzilla()
- file_object = StringIO.StringIO()
- unicode_tor = u"WebKit \u2661 Tor Arne Vestb\u00F8!"
- utf8_tor = unicode_tor.encode("utf-8")
- self.assertEqual(bugzilla._file_object_for_upload(file_object), file_object)
- self.assertEqual(bugzilla._file_object_for_upload(utf8_tor).read(), utf8_tor)
- self.assertEqual(bugzilla._file_object_for_upload(unicode_tor).read(), utf8_tor)
-
- def test_filename_for_upload(self):
- bugzilla = Bugzilla()
- mock_file = Mock()
- mock_file.name = "foo"
- self.assertEqual(bugzilla._filename_for_upload(mock_file, 1234), 'foo')
- mock_timestamp = lambda: "now"
- filename = bugzilla._filename_for_upload(StringIO.StringIO(), 1234, extension="patch", timestamp=mock_timestamp)
- self.assertEqual(filename, "bug-1234-now.patch")
-
- def test_commit_queue_flag(self):
- bugzilla = Bugzilla()
-
- bugzilla.committers = CommitterList(reviewers=[Reviewer("WebKit Reviewer", "reviewer@webkit.org")],
- committers=[Committer("WebKit Committer", "committer@webkit.org")],
- contributors=[Contributor("WebKit Contributor", "contributor@webkit.org")])
-
- def assert_commit_queue_flag(mark_for_landing, mark_for_commit_queue, expected, username=None):
- bugzilla.username = username
- capture = OutputCapture()
- capture.capture_output()
- try:
- self.assertEqual(bugzilla._commit_queue_flag(mark_for_landing=mark_for_landing, mark_for_commit_queue=mark_for_commit_queue), expected)
- finally:
- capture.restore_output()
-
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='unknown@webkit.org')
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='?', username='unknown@webkit.org')
-
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='contributor@webkit.org')
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='contributor@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='?', username='contributor@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='?', username='contributor@webkit.org')
-
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='committer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='committer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='+', username='committer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='+', username='committer@webkit.org')
-
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=False, expected='X', username='reviewer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=False, mark_for_commit_queue=True, expected='?', username='reviewer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=False, expected='+', username='reviewer@webkit.org')
- assert_commit_queue_flag(mark_for_landing=True, mark_for_commit_queue=True, expected='+', username='reviewer@webkit.org')
-
- def test__check_create_bug_response(self):
- bugzilla = Bugzilla()
-
- title_html_bugzilla_323 = "<title>Bug 101640 Submitted</title>"
- self.assertEqual(bugzilla._check_create_bug_response(title_html_bugzilla_323), '101640')
-
- title_html_bugzilla_425 = "<title>Bug 101640 Submitted &ndash; Testing webkit-patch again</title>"
- self.assertEqual(bugzilla._check_create_bug_response(title_html_bugzilla_425), '101640')
-
-
-class BugzillaQueriesTest(unittest.TestCase):
- _sample_request_page = """
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>Request Queue</title>
- </head>
-<body>
-
-<h3>Flag: review</h3>
- <table class="requests" cellspacing="0" cellpadding="4" border="1">
- <tr>
- <th>Requester</th>
- <th>Requestee</th>
- <th>Bug</th>
- <th>Attachment</th>
- <th>Created</th>
- </tr>
- <tr>
- <td>Shinichiro Hamaji &lt;hamaji&#64;chromium.org&gt;</td>
- <td></td>
- <td><a href="show_bug.cgi?id=30015">30015: text-transform:capitalize is failing in CSS2.1 test suite</a></td>
- <td><a href="attachment.cgi?id=40511&amp;action=review">
-40511: Patch v0</a></td>
- <td>2009-10-02 04:58 PST</td>
- </tr>
- <tr>
- <td>Zan Dobersek &lt;zandobersek&#64;gmail.com&gt;</td>
- <td></td>
- <td><a href="show_bug.cgi?id=26304">26304: [GTK] Add controls for playing html5 video.</a></td>
- <td><a href="attachment.cgi?id=40722&amp;action=review">
-40722: Media controls, the simple approach</a></td>
- <td>2009-10-06 09:13 PST</td>
- </tr>
- <tr>
- <td>Zan Dobersek &lt;zandobersek&#64;gmail.com&gt;</td>
- <td></td>
- <td><a href="show_bug.cgi?id=26304">26304: [GTK] Add controls for playing html5 video.</a></td>
- <td><a href="attachment.cgi?id=40723&amp;action=review">
-40723: Adjust the media slider thumb size</a></td>
- <td>2009-10-06 09:15 PST</td>
- </tr>
- </table>
-</body>
-</html>
-"""
- _sample_quip_page = u"""
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
- "http://www.w3.org/TR/html4/loose.dtd">
-<html>
- <head>
- <title>Bugzilla Quip System</title>
- </head>
- <body>
- <h2>
-
- Existing quips:
- </h2>
- <ul>
- <li>Everything should be made as simple as possible, but not simpler. - Albert Einstein</li>
- <li>Good artists copy. Great artists steal. - Pablo Picasso</li>
- <li>\u00e7gua mole em pedra dura, tanto bate at\u008e que fura.</li>
-
- </ul>
- </body>
-</html>
-"""
-
- def _assert_result_count(self, queries, html, count):
- self.assertEqual(queries._parse_result_count(html), count)
-
- def test_parse_result_count(self):
- queries = BugzillaQueries(None)
- # Pages with results, always list the count at least twice.
- self._assert_result_count(queries, '<span class="bz_result_count">314 bugs found.</span><span class="bz_result_count">314 bugs found.</span>', 314)
- self._assert_result_count(queries, '<span class="bz_result_count">Zarro Boogs found.</span>', 0)
- self._assert_result_count(queries, '<span class="bz_result_count">\n \nOne bug found.</span>', 1)
- self.assertRaises(Exception, queries._parse_result_count, ['Invalid'])
-
- def test_request_page_parsing(self):
- queries = BugzillaQueries(None)
- self.assertEqual([40511, 40722, 40723], queries._parse_attachment_ids_request_query(self._sample_request_page))
-
- def test_quip_page_parsing(self):
- queries = BugzillaQueries(None)
- expected_quips = ["Everything should be made as simple as possible, but not simpler. - Albert Einstein", "Good artists copy. Great artists steal. - Pablo Picasso", u"\u00e7gua mole em pedra dura, tanto bate at\u008e que fura."]
- self.assertEqual(expected_quips, queries._parse_quips(self._sample_quip_page))
-
- def test_load_query(self):
- queries = BugzillaQueries(Mock())
- queries._load_query("request.cgi?action=queue&type=review&group=type")
-
-
-class EditUsersParserTest(unittest.TestCase):
- _example_user_results = """
- <div id="bugzilla-body">
- <p>1 user found.</p>
- <table id="admin_table" border="1" cellpadding="4" cellspacing="0">
- <tr bgcolor="#6666FF">
- <th align="left">Edit user...
- </th>
- <th align="left">Real name
- </th>
- <th align="left">Account History
- </th>
- </tr>
- <tr>
- <td >
- <a href="editusers.cgi?action=edit&amp;userid=1234&amp;matchvalue=login_name&amp;groupid=&amp;grouprestrict=&amp;matchtype=substr&amp;matchstr=abarth%40webkit.org">
- abarth&#64;webkit.org
- </a>
- </td>
- <td >
- Adam Barth
- </td>
- <td >
- <a href="editusers.cgi?action=activity&amp;userid=1234&amp;matchvalue=login_name&amp;groupid=&amp;grouprestrict=&amp;matchtype=substr&amp;matchstr=abarth%40webkit.org">
- View
- </a>
- </td>
- </tr>
- </table>
- """
-
- _example_empty_user_results = """
- <div id="bugzilla-body">
- <p>0 users found.</p>
- <table id="admin_table" border="1" cellpadding="4" cellspacing="0">
- <tr bgcolor="#6666FF">
- <th align="left">Edit user...
- </th>
- <th align="left">Real name
- </th>
- <th align="left">Account History
- </th>
- </tr>
- <tr><td colspan="3" align="center"><i>&lt;none&gt;</i></td></tr>
- </table>
- """
-
- def _assert_login_userid_pairs(self, results_page, expected_logins):
- parser = EditUsersParser()
- logins = parser.login_userid_pairs_from_edit_user_results(results_page)
- self.assertEqual(logins, expected_logins)
-
- def test_logins_from_editusers_results(self):
- self._assert_login_userid_pairs(self._example_user_results, [("abarth@webkit.org", 1234)])
- self._assert_login_userid_pairs(self._example_empty_user_results, [])
-
- _example_user_page = """<table class="main"><tr>
- <th><label for="login">Login name:</label></th>
- <td>eric&#64;webkit.org
- </td>
-</tr>
-<tr>
- <th><label for="name">Real name:</label></th>
- <td>Eric Seidel
- </td>
-</tr>
- <tr>
- <th>Group access:</th>
- <td>
- <table class="groups">
- <tr>
- </tr>
- <tr>
- <th colspan="2">User is a member of these groups</th>
- </tr>
- <tr class="direct">
- <td class="checkbox"><input type="checkbox"
- id="group_7"
- name="group_7"
- value="1" checked="checked" /></td>
- <td class="groupname">
- <label for="group_7">
- <strong>canconfirm:</strong>
- Can confirm a bug.
- </label>
- </td>
- </tr>
- <tr class="direct">
- <td class="checkbox"><input type="checkbox"
- id="group_6"
- name="group_6"
- value="1" /></td>
- <td class="groupname">
- <label for="group_6">
- <strong>editbugs:</strong>
- Can edit all aspects of any bug.
- /label>
- </td>
- </tr>
- </table>
- </td>
- </tr>
-
- <tr>
- <th>Product responsibilities:</th>
- <td>
- <em>none</em>
- </td>
- </tr>
-</table>"""
-
- def test_user_dict_from_edit_user_page(self):
- parser = EditUsersParser()
- user_dict = parser.user_dict_from_edit_user_page(self._example_user_page)
- expected_user_dict = {u'login': u'eric@webkit.org', u'groups': set(['canconfirm']), u'name': u'Eric Seidel'}
- self.assertEqual(expected_user_dict, user_dict)
diff --git a/Tools/Scripts/webkitpy/common/net/buildbot/__init__.py b/Tools/Scripts/webkitpy/common/net/buildbot/__init__.py
deleted file mode 100644
index 631ef6ba7..000000000
--- a/Tools/Scripts/webkitpy/common/net/buildbot/__init__.py
+++ /dev/null
@@ -1,5 +0,0 @@
-# Required for Python to search this directory for module files
-
-# We only export public API here.
-# It's unclear if Builder and Build need to be public.
-from .buildbot import BuildBot, Builder, Build
diff --git a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py b/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py
deleted file mode 100644
index 495159630..000000000
--- a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot.py
+++ /dev/null
@@ -1,489 +0,0 @@
-# Copyright (c) 2009, 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.
-
-import json
-import operator
-import re
-import urllib
-import urllib2
-
-import webkitpy.common.config.urls as config_urls
-from webkitpy.common.memoized import memoized
-from webkitpy.common.net.failuremap import FailureMap
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.net.networktransaction import NetworkTransaction
-from webkitpy.common.net.regressionwindow import RegressionWindow
-from webkitpy.common.system.logutils import get_logger
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-
-_log = get_logger(__file__)
-
-
-class Builder(object):
- def __init__(self, name, buildbot):
- self._name = name
- self._buildbot = buildbot
- self._builds_cache = {}
- self._revision_to_build_number = None
- from webkitpy.thirdparty.autoinstalled.mechanize import Browser
- self._browser = Browser()
- self._browser.set_handle_robots(False) # The builder pages are excluded by robots.txt
-
- def name(self):
- return self._name
-
- def results_url(self):
- return "%s/results/%s" % (self._buildbot.buildbot_url, self.url_encoded_name())
-
- # In addition to per-build results, the build.chromium.org builders also
- # keep a directory that accumulates test results over many runs.
- def accumulated_results_url(self):
- return None
-
- def latest_layout_test_results_url(self):
- return self.accumulated_results_url() or self.latest_cached_build().results_url();
-
- @memoized
- def latest_layout_test_results(self):
- return self.fetch_layout_test_results(self.latest_layout_test_results_url())
-
- def _fetch_file_from_results(self, results_url, file_name):
- # It seems this can return None if the url redirects and then returns 404.
- result = urllib2.urlopen("%s/%s" % (results_url, file_name))
- if not result:
- return None
- # urlopen returns a file-like object which sometimes works fine with str()
- # but sometimes is a addinfourl object. In either case calling read() is correct.
- return result.read()
-
- def fetch_layout_test_results(self, results_url):
- # FIXME: This should cache that the result was a 404 and stop hitting the network.
- results_file = NetworkTransaction(convert_404_to_None=True).run(lambda: self._fetch_file_from_results(results_url, "full_results.json"))
- return LayoutTestResults.results_from_string(results_file)
-
- def url_encoded_name(self):
- return urllib.quote(self._name)
-
- def url(self):
- return "%s/builders/%s" % (self._buildbot.buildbot_url, self.url_encoded_name())
-
- # This provides a single place to mock
- def _fetch_build(self, build_number):
- build_dictionary = self._buildbot._fetch_build_dictionary(self, build_number)
- if not build_dictionary:
- return None
- revision_string = build_dictionary['sourceStamp']['revision']
- return Build(self,
- build_number=int(build_dictionary['number']),
- # 'revision' may be None if a trunk build was started by the force-build button on the web page.
- revision=(int(revision_string) if revision_string else None),
- # Buildbot uses any nubmer other than 0 to mean fail. Since we fetch with
- # filter=1, passing builds may contain no 'results' value.
- is_green=(not build_dictionary.get('results')),
- )
-
- def build(self, build_number):
- if not build_number:
- return None
- cached_build = self._builds_cache.get(build_number)
- if cached_build:
- return cached_build
-
- build = self._fetch_build(build_number)
- self._builds_cache[build_number] = build
- return build
-
- def latest_cached_build(self):
- revision_build_pairs = self.revision_build_pairs_with_results()
- revision_build_pairs.sort(key=lambda i: i[1])
- latest_build_number = revision_build_pairs[-1][1]
- return self.build(latest_build_number)
-
- def force_build(self, username="webkit-patch", comments=None):
- def predicate(form):
- try:
- return form.find_control("username")
- except Exception, e:
- return False
- # ignore false positives for missing Browser methods - pylint: disable=E1102
- self._browser.open(self.url())
- self._browser.select_form(predicate=predicate)
- self._browser["username"] = username
- if comments:
- self._browser["comments"] = comments
- return self._browser.submit()
-
- file_name_regexp = re.compile(r"r(?P<revision>\d+) \((?P<build_number>\d+)\)")
- def _revision_and_build_for_filename(self, filename):
- # Example: "r47483 (1)/" or "r47483 (1).zip"
- match = self.file_name_regexp.match(filename)
- if not match:
- return None
- return (int(match.group("revision")), int(match.group("build_number")))
-
- def _fetch_revision_to_build_map(self):
- # All _fetch requests go through _buildbot for easier mocking
- # FIXME: This should use NetworkTransaction's 404 handling instead.
- try:
- # FIXME: This method is horribly slow due to the huge network load.
- # FIXME: This is a poor way to do revision -> build mapping.
- # Better would be to ask buildbot through some sort of API.
- print "Loading revision/build list from %s." % self.results_url()
- print "This may take a while..."
- result_files = self._buildbot._fetch_twisted_directory_listing(self.results_url())
- except urllib2.HTTPError, error:
- if error.code != 404:
- raise
- _log.debug("Revision/build list failed to load.")
- result_files = []
- return dict(self._file_info_list_to_revision_to_build_list(result_files))
-
- def _file_info_list_to_revision_to_build_list(self, file_info_list):
- # This assumes there was only one build per revision, which is false but we don't care for now.
- revisions_and_builds = []
- for file_info in file_info_list:
- revision_and_build = self._revision_and_build_for_filename(file_info["filename"])
- if revision_and_build:
- revisions_and_builds.append(revision_and_build)
- return revisions_and_builds
-
- def _revision_to_build_map(self):
- if not self._revision_to_build_number:
- self._revision_to_build_number = self._fetch_revision_to_build_map()
- return self._revision_to_build_number
-
- def revision_build_pairs_with_results(self):
- return self._revision_to_build_map().items()
-
- # This assumes there can be only one build per revision, which is false, but we don't care for now.
- def build_for_revision(self, revision, allow_failed_lookups=False):
- # NOTE: This lookup will fail if that exact revision was never built.
- build_number = self._revision_to_build_map().get(int(revision))
- if not build_number:
- return None
- build = self.build(build_number)
- if not build and allow_failed_lookups:
- # Builds for old revisions with fail to lookup via buildbot's json api.
- build = Build(self,
- build_number=build_number,
- revision=revision,
- is_green=False,
- )
- return build
-
- def find_regression_window(self, red_build, look_back_limit=30):
- if not red_build or red_build.is_green():
- return RegressionWindow(None, None)
- common_failures = None
- current_build = red_build
- build_after_current_build = None
- look_back_count = 0
- while current_build:
- if current_build.is_green():
- # current_build can't possibly have any failures in common
- # with red_build because it's green.
- break
- results = current_build.layout_test_results()
- # We treat a lack of results as if all the test failed.
- # This occurs, for example, when we can't compile at all.
- if results:
- failures = set(results.failing_tests())
- if common_failures == None:
- common_failures = failures
- else:
- common_failures = common_failures.intersection(failures)
- if not common_failures:
- # current_build doesn't have any failures in common with
- # the red build we're worried about. We assume that any
- # failures in current_build were due to flakiness.
- break
- look_back_count += 1
- if look_back_count > look_back_limit:
- return RegressionWindow(None, current_build, failing_tests=common_failures)
- build_after_current_build = current_build
- current_build = current_build.previous_build()
- # We must iterate at least once because red_build is red.
- assert(build_after_current_build)
- # Current build must either be green or have no failures in common
- # with red build, so we've found our failure transition.
- return RegressionWindow(current_build, build_after_current_build, failing_tests=common_failures)
-
- def find_blameworthy_regression_window(self, red_build_number, look_back_limit=30, avoid_flakey_tests=True):
- red_build = self.build(red_build_number)
- regression_window = self.find_regression_window(red_build, look_back_limit)
- if not regression_window.build_before_failure():
- return None # We ran off the limit of our search
- # If avoid_flakey_tests, require at least 2 bad builds before we
- # suspect a real failure transition.
- if avoid_flakey_tests and regression_window.failing_build() == red_build:
- return None
- return regression_window
-
-
-class Build(object):
- def __init__(self, builder, build_number, revision, is_green):
- self._builder = builder
- self._number = build_number
- self._revision = revision
- self._is_green = is_green
-
- @staticmethod
- def build_url(builder, build_number):
- return "%s/builds/%s" % (builder.url(), build_number)
-
- def url(self):
- return self.build_url(self.builder(), self._number)
-
- def results_url(self):
- results_directory = "r%s (%s)" % (self.revision(), self._number)
- return "%s/%s" % (self._builder.results_url(), urllib.quote(results_directory))
-
- def results_zip_url(self):
- return "%s.zip" % self.results_url()
-
- @memoized
- def layout_test_results(self):
- return self._builder.fetch_layout_test_results(self.results_url())
-
- def builder(self):
- return self._builder
-
- def revision(self):
- return self._revision
-
- def is_green(self):
- return self._is_green
-
- def previous_build(self):
- # previous_build() allows callers to avoid assuming build numbers are sequential.
- # They may not be sequential across all master changes, or when non-trunk builds are made.
- return self._builder.build(self._number - 1)
-
-
-class BuildBot(object):
- _builder_factory = Builder
- _default_url = config_urls.buildbot_url
-
- def __init__(self, url=None):
- self.buildbot_url = url if url else self._default_url
- self._builder_by_name = {}
-
- def _parse_last_build_cell(self, builder, cell):
- status_link = cell.find('a')
- if status_link:
- # Will be either a revision number or a build number
- revision_string = status_link.string
- # If revision_string has non-digits assume it's not a revision number.
- builder['built_revision'] = int(revision_string) \
- if not re.match('\D', revision_string) \
- else None
-
- # FIXME: We treat slave lost as green even though it is not to
- # work around the Qts bot being on a broken internet connection.
- # The real fix is https://bugs.webkit.org/show_bug.cgi?id=37099
- builder['is_green'] = not re.search('fail', cell.renderContents()) or \
- not not re.search('lost', cell.renderContents())
-
- status_link_regexp = r"builders/(?P<builder_name>.*)/builds/(?P<build_number>\d+)"
- link_match = re.match(status_link_regexp, status_link['href'])
- builder['build_number'] = int(link_match.group("build_number"))
- else:
- # We failed to find a link in the first cell, just give up. This
- # can happen if a builder is just-added, the first cell will just
- # be "no build"
- # Other parts of the code depend on is_green being present.
- builder['is_green'] = False
- builder['built_revision'] = None
- builder['build_number'] = None
-
- def _parse_current_build_cell(self, builder, cell):
- activity_lines = cell.renderContents().split("<br />")
- builder["activity"] = activity_lines[0] # normally "building" or "idle"
- # The middle lines document how long left for any current builds.
- match = re.match("(?P<pending_builds>\d) pending", activity_lines[-1])
- builder["pending_builds"] = int(match.group("pending_builds")) if match else 0
-
- def _parse_builder_status_from_row(self, status_row):
- status_cells = status_row.findAll('td')
- builder = {}
-
- # First cell is the name
- name_link = status_cells[0].find('a')
- builder["name"] = unicode(name_link.string)
-
- self._parse_last_build_cell(builder, status_cells[1])
- self._parse_current_build_cell(builder, status_cells[2])
- return builder
-
- def _matches_regexps(self, builder_name, name_regexps):
- for name_regexp in name_regexps:
- if re.match(name_regexp, builder_name):
- return True
- return False
-
- # FIXME: This method needs to die, but is used by a unit test at the moment.
- def _builder_statuses_with_names_matching_regexps(self, builder_statuses, name_regexps):
- return [builder for builder in builder_statuses if self._matches_regexps(builder["name"], name_regexps)]
-
- # FIXME: These _fetch methods should move to a networking class.
- def _fetch_build_dictionary(self, builder, build_number):
- # Note: filter=1 will remove None and {} and '', which cuts noise but can
- # cause keys to be missing which you might otherwise expect.
- # FIXME: The bot sends a *huge* amount of data for each request, we should
- # find a way to reduce the response size further.
- json_url = "%s/json/builders/%s/builds/%s?filter=1" % (self.buildbot_url, urllib.quote(builder.name()), build_number)
- try:
- return json.load(urllib2.urlopen(json_url))
- except urllib2.URLError, err:
- build_url = Build.build_url(builder, build_number)
- _log.error("Error fetching data for %s build %s (%s, json: %s): %s" % (builder.name(), build_number, build_url, json_url, err))
- return None
- except ValueError, err:
- build_url = Build.build_url(builder, build_number)
- _log.error("Error decoding json data from %s: %s" % (build_url, err))
- return None
-
- def _fetch_one_box_per_builder(self):
- build_status_url = "%s/one_box_per_builder" % self.buildbot_url
- return urllib2.urlopen(build_status_url)
-
- def _file_cell_text(self, file_cell):
- """Traverses down through firstChild elements until one containing a string is found, then returns that string"""
- element = file_cell
- while element.string is None and element.contents:
- element = element.contents[0]
- return element.string
-
- def _parse_twisted_file_row(self, file_row):
- string_or_empty = lambda string: unicode(string) if string else u""
- file_cells = file_row.findAll('td')
- return {
- "filename": string_or_empty(self._file_cell_text(file_cells[0])),
- "size": string_or_empty(self._file_cell_text(file_cells[1])),
- "type": string_or_empty(self._file_cell_text(file_cells[2])),
- "encoding": string_or_empty(self._file_cell_text(file_cells[3])),
- }
-
- def _parse_twisted_directory_listing(self, page):
- soup = BeautifulSoup(page)
- # HACK: Match only table rows with a class to ignore twisted header/footer rows.
- file_rows = soup.find('table').findAll('tr', {'class': re.compile(r'\b(?:directory|file)\b')})
- return [self._parse_twisted_file_row(file_row) for file_row in file_rows]
-
- # FIXME: There should be a better way to get this information directly from twisted.
- def _fetch_twisted_directory_listing(self, url):
- return self._parse_twisted_directory_listing(urllib2.urlopen(url))
-
- def builders(self):
- return [self.builder_with_name(status["name"]) for status in self.builder_statuses()]
-
- # This method pulls from /one_box_per_builder as an efficient way to get information about
- def builder_statuses(self):
- soup = BeautifulSoup(self._fetch_one_box_per_builder())
- return [self._parse_builder_status_from_row(status_row) for status_row in soup.find('table').findAll('tr')]
-
- def builder_with_name(self, name):
- builder = self._builder_by_name.get(name)
- if not builder:
- builder = self._builder_factory(name, self)
- self._builder_by_name[name] = builder
- return builder
-
- def failure_map(self):
- failure_map = FailureMap()
- revision_to_failing_bots = {}
- for builder_status in self.builder_statuses():
- if builder_status["is_green"]:
- continue
- builder = self.builder_with_name(builder_status["name"])
- regression_window = builder.find_blameworthy_regression_window(builder_status["build_number"])
- if regression_window:
- failure_map.add_regression_window(builder, regression_window)
- return failure_map
-
- # This makes fewer requests than calling Builder.latest_build would. It grabs all builder
- # statuses in one request using self.builder_statuses (fetching /one_box_per_builder instead of builder pages).
- def _latest_builds_from_builders(self):
- builder_statuses = self.builder_statuses()
- return [self.builder_with_name(status["name"]).build(status["build_number"]) for status in builder_statuses]
-
- def _build_at_or_before_revision(self, build, revision):
- while build:
- if build.revision() <= revision:
- return build
- build = build.previous_build()
-
- def _fetch_builder_page(self, builder):
- builder_page_url = "%s/builders/%s?numbuilds=100" % (self.buildbot_url, urllib2.quote(builder.name()))
- return urllib2.urlopen(builder_page_url)
-
- def _revisions_for_builder(self, builder):
- soup = BeautifulSoup(self._fetch_builder_page(builder))
- revisions = []
- for status_row in soup.find('table').findAll('tr'):
- revision_anchor = status_row.find('a')
- table_cells = status_row.findAll('td')
- if not table_cells or len(table_cells) < 3 or not table_cells[2].string:
- continue
- if revision_anchor and revision_anchor.string and re.match(r'^\d+$', revision_anchor.string):
- revisions.append((int(revision_anchor.string), 'success' in table_cells[2].string))
- return revisions
-
- def _find_green_revision(self, builder_revisions):
- revision_statuses = {}
- for builder in builder_revisions:
- for revision, succeeded in builder_revisions[builder]:
- revision_statuses.setdefault(revision, set())
- if succeeded and revision_statuses[revision] != None:
- revision_statuses[revision].add(builder)
- else:
- revision_statuses[revision] = None
-
- # In descending order, look for a revision X with successful builds
- # Once we found X, check if remaining builders succeeded in the neighborhood of X.
- revisions_in_order = sorted(revision_statuses.keys(), reverse=True)
- for i, revision in enumerate(revisions_in_order):
- if not revision_statuses[revision]:
- continue
-
- builders_succeeded_in_future = set()
- for future_revision in sorted(revisions_in_order[:i + 1]):
- if not revision_statuses[future_revision]:
- break
- builders_succeeded_in_future = builders_succeeded_in_future.union(revision_statuses[future_revision])
-
- builders_succeeded_in_past = set()
- for past_revision in revisions_in_order[i:]:
- if not revision_statuses[past_revision]:
- break
- builders_succeeded_in_past = builders_succeeded_in_past.union(revision_statuses[past_revision])
-
- if len(builders_succeeded_in_future) == len(builder_revisions) and len(builders_succeeded_in_past) == len(builder_revisions):
- return revision
- return None
diff --git a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_mock.py b/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_mock.py
deleted file mode 100644
index d20bdb75c..000000000
--- a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_mock.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-
-_log = logging.getLogger(__name__)
-
-
-class MockBuild(object):
- def __init__(self, build_number, revision, is_green):
- self._number = build_number
- self._revision = revision
- self._is_green = is_green
-
-class MockBuilder(object):
- def __init__(self, name):
- self._name = name
-
- def name(self):
- return self._name
-
- def build(self, build_number):
- return MockBuild(build_number=build_number, revision=1234, is_green=False)
-
- def results_url(self):
- return "http://example.com/builders/%s/results" % self.name()
-
- def accumulated_results_url(self):
- return "http://example.com/f/builders/%s/results/layout-test-results" % self.name()
-
- def latest_layout_test_results_url(self):
- return self.accumulated_results_url()
-
- def force_build(self, username, comments):
- _log.info("MOCK: force_build: name=%s, username=%s, comments=%s" % (
- self._name, username, comments))
-
-
-class MockFailureMap(object):
- def __init__(self, buildbot):
- self._buildbot = buildbot
-
- def is_empty(self):
- return False
-
- def filter_out_old_failures(self, is_old_revision):
- pass
-
- def failing_revisions(self):
- return [29837]
-
- def builders_failing_for(self, revision):
- return [self._buildbot.builder_with_name("Builder1")]
-
- def tests_failing_for(self, revision):
- return ["mock-test-1"]
-
- def failing_tests(self):
- return set(["mock-test-1"])
-
-
-class MockBuildBot(object):
- def __init__(self):
- self._mock_builder1_status = {
- "name": "Builder1",
- "is_green": True,
- "activity": "building",
- }
- self._mock_builder2_status = {
- "name": "Builder2",
- "is_green": True,
- "activity": "idle",
- }
-
- def builder_with_name(self, name):
- return MockBuilder(name)
-
- def builder_statuses(self):
- return [
- self._mock_builder1_status,
- self._mock_builder2_status,
- ]
-
- def light_tree_on_fire(self):
- self._mock_builder2_status["is_green"] = False
-
- def failure_map(self):
- return MockFailureMap(self)
diff --git a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py b/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py
deleted file mode 100644
index 26b7b9799..000000000
--- a/Tools/Scripts/webkitpy/common/net/buildbot/buildbot_unittest.py
+++ /dev/null
@@ -1,475 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.net.buildbot import BuildBot, Builder, Build
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-
-class BuilderTest(unittest.TestCase):
- def _mock_test_result(self, testname):
- return test_results.TestResult(testname, [test_failures.FailureTextMismatch()])
-
- def _install_fetch_build(self, failure):
- def _mock_fetch_build(build_number):
- build = Build(
- builder=self.builder,
- build_number=build_number,
- revision=build_number + 1000,
- is_green=build_number < 4
- )
- results = [self._mock_test_result(testname) for testname in failure(build_number)]
- layout_test_results = LayoutTestResults(results)
- def mock_layout_test_results():
- return layout_test_results
- build.layout_test_results = mock_layout_test_results
- return build
- self.builder._fetch_build = _mock_fetch_build
-
- def setUp(self):
- self.buildbot = BuildBot()
- self.builder = Builder(u"Test Builder \u2661", self.buildbot)
- self._install_fetch_build(lambda build_number: ["test1", "test2"])
-
- def test_latest_layout_test_results(self):
- self.builder.fetch_layout_test_results = lambda results_url: LayoutTestResults([self._mock_test_result(testname) for testname in ["test1", "test2"]])
- self.builder.accumulated_results_url = lambda: "http://dummy_url.org"
- self.assertTrue(self.builder.latest_layout_test_results())
-
- def test_find_regression_window(self):
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertEqual(regression_window.build_before_failure().revision(), 1003)
- self.assertEqual(regression_window.failing_build().revision(), 1004)
-
- regression_window = self.builder.find_regression_window(self.builder.build(10), look_back_limit=2)
- self.assertIsNone(regression_window.build_before_failure())
- self.assertEqual(regression_window.failing_build().revision(), 1008)
-
- def test_none_build(self):
- self.builder._fetch_build = lambda build_number: None
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertIsNone(regression_window.build_before_failure())
- self.assertIsNone(regression_window.failing_build())
-
- def test_flaky_tests(self):
- self._install_fetch_build(lambda build_number: ["test1"] if build_number % 2 else ["test2"])
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertEqual(regression_window.build_before_failure().revision(), 1009)
- self.assertEqual(regression_window.failing_build().revision(), 1010)
-
- def test_failure_and_flaky(self):
- self._install_fetch_build(lambda build_number: ["test1", "test2"] if build_number % 2 else ["test2"])
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertEqual(regression_window.build_before_failure().revision(), 1003)
- self.assertEqual(regression_window.failing_build().revision(), 1004)
-
- def test_no_results(self):
- self._install_fetch_build(lambda build_number: ["test1", "test2"] if build_number % 2 else ["test2"])
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertEqual(regression_window.build_before_failure().revision(), 1003)
- self.assertEqual(regression_window.failing_build().revision(), 1004)
-
- def test_failure_after_flaky(self):
- self._install_fetch_build(lambda build_number: ["test1", "test2"] if build_number > 6 else ["test3"])
- regression_window = self.builder.find_regression_window(self.builder.build(10))
- self.assertEqual(regression_window.build_before_failure().revision(), 1006)
- self.assertEqual(regression_window.failing_build().revision(), 1007)
-
- def test_find_blameworthy_regression_window(self):
- self.assertEqual(self.builder.find_blameworthy_regression_window(10).revisions(), [1004])
- self.assertIsNone(self.builder.find_blameworthy_regression_window(10, look_back_limit=2))
- # Flakey test avoidance requires at least 2 red builds:
- self.assertIsNone(self.builder.find_blameworthy_regression_window(4))
- self.assertEqual(self.builder.find_blameworthy_regression_window(4, avoid_flakey_tests=False).revisions(), [1004])
- # Green builder:
- self.assertIsNone(self.builder.find_blameworthy_regression_window(3))
-
- def test_build_caching(self):
- self.assertEqual(self.builder.build(10), self.builder.build(10))
-
- def test_build_and_revision_for_filename(self):
- expectations = {
- "r47483 (1)/" : (47483, 1),
- "r47483 (1).zip" : (47483, 1),
- "random junk": None,
- }
- for filename, revision_and_build in expectations.items():
- self.assertEqual(self.builder._revision_and_build_for_filename(filename), revision_and_build)
-
- def test_file_info_list_to_revision_to_build_list(self):
- file_info_list = [
- {"filename": "r47483 (1)/"},
- {"filename": "r47483 (1).zip"},
- {"filename": "random junk"},
- ]
- builds_and_revisions_list = [(47483, 1), (47483, 1)]
- self.assertEqual(self.builder._file_info_list_to_revision_to_build_list(file_info_list), builds_and_revisions_list)
-
- def test_fetch_build(self):
- buildbot = BuildBot()
- builder = Builder(u"Test Builder \u2661", buildbot)
-
- def mock_fetch_build_dictionary(self, build_number):
- build_dictionary = {
- "sourceStamp": {
- "revision": None, # revision=None means a trunk build started from the force-build button on the builder page.
- },
- "number": int(build_number),
- # Intentionally missing the 'results' key, meaning it's a "pass" build.
- }
- return build_dictionary
- buildbot._fetch_build_dictionary = mock_fetch_build_dictionary
- self.assertIsNotNone(builder._fetch_build(1))
-
-
-class BuildTest(unittest.TestCase):
- def test_layout_test_results(self):
- buildbot = BuildBot()
- builder = Builder(u"Foo Builder (test)", buildbot)
- builder._fetch_file_from_results = lambda results_url, file_name: None
- build = Build(builder, None, None, None)
- # Test that layout_test_results() returns None if the fetch fails.
- self.assertIsNone(build.layout_test_results())
-
-
-class BuildBotTest(unittest.TestCase):
-
- _example_one_box_status = '''
- <table>
- <tr>
- <td class="box"><a href="builders/Windows%20Debug%20%28Tests%29">Windows Debug (Tests)</a></td>
- <td align="center" class="LastBuild box success"><a href="builders/Windows%20Debug%20%28Tests%29/builds/3693">47380</a><br />build<br />successful</td>
- <td align="center" class="Activity building">building<br />ETA in<br />~ 14 mins<br />at 13:40</td>
- <tr>
- <td class="box"><a href="builders/SnowLeopard%20Intel%20Release">SnowLeopard Intel Release</a></td>
- <td class="LastBuild box" >no build</td>
- <td align="center" class="Activity building">building<br />< 1 min</td>
- <tr>
- <td class="box"><a href="builders/Qt%20Linux%20Release">Qt Linux Release</a></td>
- <td align="center" class="LastBuild box failure"><a href="builders/Qt%20Linux%20Release/builds/654">47383</a><br />failed<br />compile-webkit</td>
- <td align="center" class="Activity idle">idle<br />3 pending</td>
- <tr>
- <td class="box"><a href="builders/Qt%20Windows%2032-bit%20Debug">Qt Windows 32-bit Debug</a></td>
- <td align="center" class="LastBuild box failure"><a href="builders/Qt%20Windows%2032-bit%20Debug/builds/2090">60563</a><br />failed<br />failed<br />slave<br />lost</td>
- <td align="center" class="Activity building">building<br />ETA in<br />~ 5 mins<br />at 08:25</td>
- </table>
-'''
- _expected_example_one_box_parsings = [
- {
- 'is_green': True,
- 'build_number' : 3693,
- 'name': u'Windows Debug (Tests)',
- 'built_revision': 47380,
- 'activity': 'building',
- 'pending_builds': 0,
- },
- {
- 'is_green': False,
- 'build_number' : None,
- 'name': u'SnowLeopard Intel Release',
- 'built_revision': None,
- 'activity': 'building',
- 'pending_builds': 0,
- },
- {
- 'is_green': False,
- 'build_number' : 654,
- 'name': u'Qt Linux Release',
- 'built_revision': 47383,
- 'activity': 'idle',
- 'pending_builds': 3,
- },
- {
- 'is_green': True,
- 'build_number' : 2090,
- 'name': u'Qt Windows 32-bit Debug',
- 'built_revision': 60563,
- 'activity': 'building',
- 'pending_builds': 0,
- },
- ]
-
- def test_status_parsing(self):
- buildbot = BuildBot()
-
- soup = BeautifulSoup(self._example_one_box_status)
- status_table = soup.find("table")
- input_rows = status_table.findAll('tr')
-
- for x in range(len(input_rows)):
- status_row = input_rows[x]
- expected_parsing = self._expected_example_one_box_parsings[x]
-
- builder = buildbot._parse_builder_status_from_row(status_row)
-
- # Make sure we aren't parsing more or less than we expect
- self.assertEqual(builder.keys(), expected_parsing.keys())
-
- for key, expected_value in expected_parsing.items():
- self.assertEqual(builder[key], expected_value, ("Builder %d parse failure for key: %s: Actual='%s' Expected='%s'" % (x, key, builder[key], expected_value)))
-
- def test_builder_with_name(self):
- buildbot = BuildBot()
-
- builder = buildbot.builder_with_name("Test Builder")
- self.assertEqual(builder.name(), "Test Builder")
- self.assertEqual(builder.url(), "http://build.webkit.org/builders/Test%20Builder")
- self.assertEqual(builder.url_encoded_name(), "Test%20Builder")
- self.assertEqual(builder.results_url(), "http://build.webkit.org/results/Test%20Builder")
-
- # Override _fetch_build_dictionary function to not touch the network.
- def mock_fetch_build_dictionary(self, build_number):
- build_dictionary = {
- "sourceStamp": {
- "revision" : 2 * build_number,
- },
- "number" : int(build_number),
- "results" : build_number % 2, # 0 means pass
- }
- return build_dictionary
- buildbot._fetch_build_dictionary = mock_fetch_build_dictionary
-
- build = builder.build(10)
- self.assertEqual(build.builder(), builder)
- self.assertEqual(build.url(), "http://build.webkit.org/builders/Test%20Builder/builds/10")
- self.assertEqual(build.results_url(), "http://build.webkit.org/results/Test%20Builder/r20%20%2810%29")
- self.assertEqual(build.revision(), 20)
- self.assertTrue(build.is_green())
-
- build = build.previous_build()
- self.assertEqual(build.builder(), builder)
- self.assertEqual(build.url(), "http://build.webkit.org/builders/Test%20Builder/builds/9")
- self.assertEqual(build.results_url(), "http://build.webkit.org/results/Test%20Builder/r18%20%289%29")
- self.assertEqual(build.revision(), 18)
- self.assertFalse(build.is_green())
-
- self.assertIsNone(builder.build(None))
-
- _example_directory_listing = '''
-<h1>Directory listing for /results/SnowLeopard Intel Leaks/</h1>
-
-<table>
- <tr class="alt">
- <th>Filename</th>
- <th>Size</th>
- <th>Content type</th>
- <th>Content encoding</th>
- </tr>
-<tr class="directory ">
- <td><a href="r47483%20%281%29/"><b>r47483 (1)/</b></a></td>
- <td><b></b></td>
- <td><b>[Directory]</b></td>
- <td><b></b></td>
-</tr>
-<tr class="file alt">
- <td><a href="r47484%20%282%29.zip">r47484 (2).zip</a></td>
- <td>89K</td>
- <td>[application/zip]</td>
- <td></td>
-</tr>
-'''
- _expected_files = [
- {
- "filename" : "r47483 (1)/",
- "size" : "",
- "type" : "[Directory]",
- "encoding" : "",
- },
- {
- "filename" : "r47484 (2).zip",
- "size" : "89K",
- "type" : "[application/zip]",
- "encoding" : "",
- },
- ]
-
- def test_parse_build_to_revision_map(self):
- buildbot = BuildBot()
- files = buildbot._parse_twisted_directory_listing(self._example_directory_listing)
- self.assertEqual(self._expected_files, files)
-
- _fake_builder_page = '''
- <body>
- <div class="content">
- <h1>Some Builder</h1>
- <p>(<a href="../waterfall?show=Some Builder">view in waterfall</a>)</p>
- <div class="column">
- <h2>Recent Builds:</h2>
- <table class="info">
- <tr>
- <th>Time</th>
- <th>Revision</th>
- <th>Result</th> <th>Build #</th>
- <th>Info</th>
- </tr>
- <tr class="alt">
- <td>Jan 10 15:49</td>
- <td><span class="revision" title="Revision 104643"><a href="http://trac.webkit.org/changeset/104643">104643</a></span></td>
- <td class="success">failure</td> <td><a href=".../37604">#37604</a></td>
- <td class="left">Build successful</td>
- </tr>
- <tr class="">
- <td>Jan 10 15:32</td>
- <td><span class="revision" title="Revision 104636"><a href="http://trac.webkit.org/changeset/104636">104636</a></span></td>
- <td class="success">failure</td> <td><a href=".../37603">#37603</a></td>
- <td class="left">Build successful</td>
- </tr>
- <tr class="alt">
- <td>Jan 10 15:18</td>
- <td><span class="revision" title="Revision 104635"><a href="http://trac.webkit.org/changeset/104635">104635</a></span></td>
- <td class="success">success</td> <td><a href=".../37602">#37602</a></td>
- <td class="left">Build successful</td>
- </tr>
- <tr class="">
- <td>Jan 10 14:51</td>
- <td><span class="revision" title="Revision 104633"><a href="http://trac.webkit.org/changeset/104633">104633</a></span></td>
- <td class="failure">failure</td> <td><a href=".../37601">#37601</a></td>
- <td class="left">Failed compile-webkit</td>
- </tr>
- </table>
- </body>'''
- _fake_builder_page_without_success = '''
- <body>
- <table>
- <tr class="alt">
- <td>Jan 10 15:49</td>
- <td><span class="revision" title="Revision 104643"><a href="http://trac.webkit.org/changeset/104643">104643</a></span></td>
- <td class="success">failure</td>
- </tr>
- <tr class="">
- <td>Jan 10 15:32</td>
- <td><span class="revision" title="Revision 104636"><a href="http://trac.webkit.org/changeset/104636">104636</a></span></td>
- <td class="success">failure</td>
- </tr>
- <tr class="alt">
- <td>Jan 10 15:18</td>
- <td><span class="revision" title="Revision 104635"><a href="http://trac.webkit.org/changeset/104635">104635</a></span></td>
- <td class="success">failure</td>
- </tr>
- <tr class="">
- <td>Jan 10 11:58</td>
- <td><span class="revision" title="Revision ??"><a href="http://trac.webkit.org/changeset/%3F%3F">??</a></span></td>
- <td class="retry">retry</td>
- </tr>
- <tr class="">
- <td>Jan 10 14:51</td>
- <td><span class="revision" title="Revision 104633"><a href="http://trac.webkit.org/changeset/104633">104633</a></span></td>
- <td class="failure">failure</td>
- </tr>
- </table>
- </body>'''
-
- def test_revisions_for_builder(self):
- buildbot = BuildBot()
- buildbot._fetch_builder_page = lambda builder: builder.page
- builder_with_success = Builder('Some builder', None)
- builder_with_success.page = self._fake_builder_page
- self.assertEqual(buildbot._revisions_for_builder(builder_with_success), [(104643, False), (104636, False), (104635, True), (104633, False)])
-
- builder_without_success = Builder('Some builder', None)
- builder_without_success.page = self._fake_builder_page_without_success
- self.assertEqual(buildbot._revisions_for_builder(builder_without_success), [(104643, False), (104636, False), (104635, False), (104633, False)])
-
- def test_find_green_revision(self):
- buildbot = BuildBot()
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (3, True)],
- 'Builder 2': [(1, True), (3, False)],
- 'Builder 3': [(1, True), (3, True)],
- }), 1)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, False), (3, True)],
- 'Builder 2': [(1, True), (3, True)],
- 'Builder 3': [(1, True), (3, True)],
- }), 3)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (2, True)],
- 'Builder 2': [(1, False), (2, True), (3, True)],
- 'Builder 3': [(1, True), (3, True)],
- }), None)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (2, True)],
- 'Builder 2': [(1, True), (2, True), (3, True)],
- 'Builder 3': [(1, True), (3, True)],
- }), 2)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, False), (2, True)],
- 'Builder 2': [(1, True), (3, True)],
- 'Builder 3': [(1, True), (3, True)],
- }), None)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (3, True)],
- 'Builder 2': [(1, False), (2, True), (3, True), (4, True)],
- 'Builder 3': [(2, True), (4, True)],
- }), 3)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (3, True)],
- 'Builder 2': [(1, False), (2, True), (3, True), (4, False)],
- 'Builder 3': [(2, True), (4, True)],
- }), None)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (3, True)],
- 'Builder 2': [(1, False), (2, True), (3, True), (4, False)],
- 'Builder 3': [(2, True), (3, True), (4, True)],
- }), 3)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (2, True)],
- 'Builder 2': [],
- 'Builder 3': [(1, True), (2, True)],
- }), None)
- self.assertEqual(buildbot._find_green_revision({
- 'Builder 1': [(1, True), (3, False), (5, True), (10, True), (12, False)],
- 'Builder 2': [(1, True), (3, False), (7, True), (9, True), (12, False)],
- 'Builder 3': [(1, True), (3, True), (7, True), (11, False), (12, True)],
- }), 7)
-
- def _fetch_build(self, build_number):
- if build_number == 5:
- return "correct build"
- return "wrong build"
-
- def _fetch_revision_to_build_map(self):
- return {'r5': 5, 'r2': 2, 'r3': 3}
-
- def test_latest_cached_build(self):
- b = Builder('builder', BuildBot())
- b._fetch_build = self._fetch_build
- b._fetch_revision_to_build_map = self._fetch_revision_to_build_map
- self.assertEqual("correct build", b.latest_cached_build())
-
- def results_url(self):
- return "some-url"
-
- def test_results_zip_url(self):
- b = Build(None, 123, 123, False)
- b.results_url = self.results_url
- self.assertEqual("some-url.zip", b.results_zip_url())
diff --git a/Tools/Scripts/webkitpy/common/net/credentials.py b/Tools/Scripts/webkitpy/common/net/credentials.py
deleted file mode 100644
index 7038b7e3c..000000000
--- a/Tools/Scripts/webkitpy/common/net/credentials.py
+++ /dev/null
@@ -1,163 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-#
-# Python module for reading stored web credentials from the OS.
-
-import logging
-import os
-import platform
-import re
-
-from webkitpy.common.checkout.scm import Git
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.user import User
-
-try:
- # Use keyring, a cross platform keyring interface, as a fallback:
- # http://pypi.python.org/pypi/keyring
- import keyring
-except ImportError:
- keyring = None
-
-_log = logging.getLogger(__name__)
-
-
-class Credentials(object):
- _environ_prefix = "webkit_bugzilla_"
-
- def __init__(self, host, git_prefix=None, executive=None, cwd=os.getcwd(),
- keyring=keyring):
- self.host = host
- self.git_prefix = "%s." % git_prefix if git_prefix else ""
- self.executive = executive or Executive()
- self.cwd = cwd
- self._keyring = keyring
-
- def _credentials_from_git(self):
- try:
- if not Git.in_working_directory(self.cwd):
- return (None, None)
- return (Git.read_git_config(self.git_prefix + "username"),
- Git.read_git_config(self.git_prefix + "password"))
- except OSError, e:
- # Catch and ignore OSError exceptions such as "no such file
- # or directory" (OSError errno 2), which imply that the Git
- # command cannot be found/is not installed.
- pass
- return (None, None)
-
- def _keychain_value_with_label(self, label, source_text):
- match = re.search("%s\"(?P<value>.+)\"" % label,
- source_text,
- re.MULTILINE)
- if match:
- return match.group('value')
-
- def _is_mac_os_x(self):
- return platform.mac_ver()[0]
-
- def _parse_security_tool_output(self, security_output):
- username = self._keychain_value_with_label("^\s*\"acct\"<blob>=",
- security_output)
- password = self._keychain_value_with_label("^password: ",
- security_output)
- return [username, password]
-
- def _run_security_tool(self, username=None):
- security_command = [
- "/usr/bin/security",
- "find-internet-password",
- "-g",
- "-s",
- self.host,
- ]
- if username:
- security_command += ["-a", username]
-
- _log.info("Reading Keychain for %s account and password. "
- "Click \"Allow\" to continue..." % self.host)
- try:
- return self.executive.run_command(security_command)
- except ScriptError:
- # Failed to either find a keychain entry or somekind of OS-related
- # error occured (for instance, couldn't find the /usr/sbin/security
- # command).
- _log.error("Could not find a keychain entry for %s." % self.host)
- return None
-
- def _credentials_from_keychain(self, username=None):
- if not self._is_mac_os_x():
- return [username, None]
-
- security_output = self._run_security_tool(username)
- if security_output:
- return self._parse_security_tool_output(security_output)
- else:
- return [None, None]
-
- def _read_environ(self, key):
- environ_key = self._environ_prefix + key
- return os.environ.get(environ_key.upper())
-
- def _credentials_from_environment(self):
- return (self._read_environ("username"), self._read_environ("password"))
-
- def _offer_to_store_credentials_in_keyring(self, username, password):
- if not self._keyring:
- return
- if not User().confirm("Store password in system keyring?", User.DEFAULT_NO):
- return
- try:
- self._keyring.set_password(self.host, username, password)
- except:
- pass
-
- def read_credentials(self, user=User):
- username, password = self._credentials_from_environment()
- # FIXME: We don't currently support pulling the username from one
- # source and the password from a separate source.
- if not username or not password:
- username, password = self._credentials_from_git()
- if not username or not password:
- username, password = self._credentials_from_keychain(username)
-
- if not username:
- username = user.prompt("%s login: " % self.host)
-
- if username and not password and self._keyring:
- try:
- password = self._keyring.get_password(self.host, username)
- except:
- pass
-
- if not password:
- password = user.prompt_password("%s password for %s: " % (self.host, username))
- self._offer_to_store_credentials_in_keyring(username, password)
-
- return (username, password)
diff --git a/Tools/Scripts/webkitpy/common/net/credentials_unittest.py b/Tools/Scripts/webkitpy/common/net/credentials_unittest.py
deleted file mode 100644
index beafa5880..000000000
--- a/Tools/Scripts/webkitpy/common/net/credentials_unittest.py
+++ /dev/null
@@ -1,208 +0,0 @@
-# Copyright (C) 2009 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.
-
-import os
-import tempfile
-import unittest2 as unittest
-from webkitpy.common.net.credentials import Credentials
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.user_mock import MockUser
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions
-from webkitpy.common.system.executive_mock import MockExecutive
-
-
-# FIXME: Other unit tests probably want this class.
-class _TemporaryDirectory(object):
- def __init__(self, **kwargs):
- self._kwargs = kwargs
- self._directory_path = None
-
- def __enter__(self):
- self._directory_path = tempfile.mkdtemp(**self._kwargs)
- return self._directory_path
-
- def __exit__(self, type, value, traceback):
- os.rmdir(self._directory_path)
-
-
-# Note: All tests should use this class instead of Credentials directly to avoid using a real Executive.
-class MockedCredentials(Credentials):
- def __init__(self, *args, **kwargs):
- if 'executive' not in kwargs:
- kwargs['executive'] = MockExecutive()
- Credentials.__init__(self, *args, **kwargs)
-
-
-class CredentialsTest(unittest.TestCase):
- example_security_output = """keychain: "/Users/test/Library/Keychains/login.keychain"
-class: "inet"
-attributes:
- 0x00000007 <blob>="bugs.webkit.org (test@webkit.org)"
- 0x00000008 <blob>=<NULL>
- "acct"<blob>="test@webkit.org"
- "atyp"<blob>="form"
- "cdat"<timedate>=0x32303039303832353233353231365A00 "20090825235216Z\000"
- "crtr"<uint32>=<NULL>
- "cusi"<sint32>=<NULL>
- "desc"<blob>="Web form password"
- "icmt"<blob>="default"
- "invi"<sint32>=<NULL>
- "mdat"<timedate>=0x32303039303930393137323635315A00 "20090909172651Z\000"
- "nega"<sint32>=<NULL>
- "path"<blob>=<NULL>
- "port"<uint32>=0x00000000
- "prot"<blob>=<NULL>
- "ptcl"<uint32>="htps"
- "scrp"<sint32>=<NULL>
- "sdmn"<blob>=<NULL>
- "srvr"<blob>="bugs.webkit.org"
- "type"<uint32>=<NULL>
-password: "SECRETSAUCE"
-"""
-
- def test_keychain_lookup_on_non_mac(self):
- class FakeCredentials(MockedCredentials):
- def _is_mac_os_x(self):
- return False
- credentials = FakeCredentials("bugs.webkit.org")
- self.assertFalse(credentials._is_mac_os_x())
- self.assertEqual(credentials._credentials_from_keychain("foo"), ["foo", None])
-
- def test_security_output_parse(self):
- credentials = MockedCredentials("bugs.webkit.org")
- self.assertEqual(credentials._parse_security_tool_output(self.example_security_output), ["test@webkit.org", "SECRETSAUCE"])
-
- def test_security_output_parse_entry_not_found(self):
- # FIXME: This test won't work if the user has a credential for foo.example.com!
- credentials = Credentials("foo.example.com")
- if not credentials._is_mac_os_x():
- return # This test does not run on a non-Mac.
-
- # Note, we ignore the captured output because it is already covered
- # by the test case CredentialsTest._assert_security_call (below).
- outputCapture = OutputCapture()
- outputCapture.capture_output()
- self.assertIsNone(credentials._run_security_tool())
- outputCapture.restore_output()
-
- def _assert_security_call(self, username=None):
- executive_mock = Mock()
- credentials = MockedCredentials("example.com", executive=executive_mock)
-
- expected_logs = "Reading Keychain for example.com account and password. Click \"Allow\" to continue...\n"
- OutputCapture().assert_outputs(self, credentials._run_security_tool, [username], expected_logs=expected_logs)
-
- security_args = ["/usr/bin/security", "find-internet-password", "-g", "-s", "example.com"]
- if username:
- security_args += ["-a", username]
- executive_mock.run_command.assert_called_with(security_args)
-
- def test_security_calls(self):
- self._assert_security_call()
- self._assert_security_call(username="foo")
-
- def test_credentials_from_environment(self):
- credentials = MockedCredentials("example.com")
-
- saved_environ = os.environ.copy()
- os.environ['WEBKIT_BUGZILLA_USERNAME'] = "foo"
- os.environ['WEBKIT_BUGZILLA_PASSWORD'] = "bar"
- username, password = credentials._credentials_from_environment()
- self.assertEqual(username, "foo")
- self.assertEqual(password, "bar")
- os.environ = saved_environ
-
- def test_read_credentials_without_git_repo(self):
- # FIXME: This should share more code with test_keyring_without_git_repo
- class FakeCredentials(MockedCredentials):
- def _is_mac_os_x(self):
- return True
-
- def _credentials_from_keychain(self, username):
- return ("test@webkit.org", "SECRETSAUCE")
-
- def _credentials_from_environment(self):
- return (None, None)
-
- with _TemporaryDirectory(suffix="not_a_git_repo") as temp_dir_path:
- credentials = FakeCredentials("bugs.webkit.org", cwd=temp_dir_path)
- # FIXME: Using read_credentials here seems too broad as higher-priority
- # credential source could be affected by the user's environment.
- self.assertEqual(credentials.read_credentials(), ("test@webkit.org", "SECRETSAUCE"))
-
-
- def test_keyring_without_git_repo(self):
- # FIXME: This should share more code with test_read_credentials_without_git_repo
- class MockKeyring(object):
- def get_password(self, host, username):
- return "NOMNOMNOM"
-
- class FakeCredentials(MockedCredentials):
- def _is_mac_os_x(self):
- return True
-
- def _credentials_from_keychain(self, username):
- return ("test@webkit.org", None)
-
- def _credentials_from_environment(self):
- return (None, None)
-
- with _TemporaryDirectory(suffix="not_a_git_repo") as temp_dir_path:
- credentials = FakeCredentials("fake.hostname", cwd=temp_dir_path, keyring=MockKeyring())
- # FIXME: Using read_credentials here seems too broad as higher-priority
- # credential source could be affected by the user's environment.
- self.assertEqual(credentials.read_credentials(), ("test@webkit.org", "NOMNOMNOM"))
-
- def test_keyring_without_git_repo_nor_keychain(self):
- class MockKeyring(object):
- def get_password(self, host, username):
- return "NOMNOMNOM"
-
- class FakeCredentials(MockedCredentials):
- def _credentials_from_keychain(self, username):
- return (None, None)
-
- def _credentials_from_environment(self):
- return (None, None)
-
- class FakeUser(MockUser):
- @classmethod
- def prompt(cls, message, repeat=1, raw_input=raw_input):
- return "test@webkit.org"
-
- @classmethod
- def prompt_password(cls, message, repeat=1, raw_input=raw_input):
- raise AssertionError("should not prompt for password")
-
- with _TemporaryDirectory(suffix="not_a_git_repo") as temp_dir_path:
- credentials = FakeCredentials("fake.hostname", cwd=temp_dir_path, keyring=MockKeyring())
- # FIXME: Using read_credentials here seems too broad as higher-priority
- # credential source could be affected by the user's environment.
- self.assertEqual(credentials.read_credentials(FakeUser), ("test@webkit.org", "NOMNOMNOM"))
diff --git a/Tools/Scripts/webkitpy/common/net/failuremap.py b/Tools/Scripts/webkitpy/common/net/failuremap.py
deleted file mode 100644
index 746242e14..000000000
--- a/Tools/Scripts/webkitpy/common/net/failuremap.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2010 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.
-
-
-# FIXME: This probably belongs in the buildbot module.
-class FailureMap(object):
- def __init__(self):
- self._failures = []
-
- def add_regression_window(self, builder, regression_window):
- self._failures.append({
- 'builder': builder,
- 'regression_window': regression_window,
- })
-
- def is_empty(self):
- return not self._failures
-
- def failing_revisions(self):
- failing_revisions = [failure_info['regression_window'].revisions()
- for failure_info in self._failures]
- return sorted(set(sum(failing_revisions, [])))
-
- def builders_failing_for(self, revision):
- return self._builders_failing_because_of([revision])
-
- def tests_failing_for(self, revision):
- tests = [failure_info['regression_window'].failing_tests()
- for failure_info in self._failures
- if revision in failure_info['regression_window'].revisions()
- and failure_info['regression_window'].failing_tests()]
- result = set()
- for test in tests:
- result = result.union(test)
- return sorted(result)
-
- def failing_tests(self):
- return set(sum([self.tests_failing_for(revision) for revision in self.failing_revisions()], []))
-
- def _old_failures(self, is_old_failure):
- return filter(lambda revision: is_old_failure(revision),
- self.failing_revisions())
-
- def _builders_failing_because_of(self, revisions):
- revision_set = set(revisions)
- return [failure_info['builder'] for failure_info in self._failures
- if revision_set.intersection(
- failure_info['regression_window'].revisions())]
-
- # FIXME: We should re-process old failures after some time delay.
- # https://bugs.webkit.org/show_bug.cgi?id=36581
- def filter_out_old_failures(self, is_old_failure):
- old_failures = self._old_failures(is_old_failure)
- old_failing_builder_names = set([builder.name()
- for builder in self._builders_failing_because_of(old_failures)])
-
- # We filter out all the failing builders that could have been caused
- # by old_failures. We could miss some new failures this way, but
- # emperically, this reduces the amount of spam we generate.
- failures = self._failures
- self._failures = [failure_info for failure_info in failures
- if failure_info['builder'].name() not in old_failing_builder_names]
- self._cache = {}
diff --git a/Tools/Scripts/webkitpy/common/net/failuremap_unittest.py b/Tools/Scripts/webkitpy/common/net/failuremap_unittest.py
deleted file mode 100644
index 0bede97e6..000000000
--- a/Tools/Scripts/webkitpy/common/net/failuremap_unittest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.buildbot import Build
-from webkitpy.common.net.failuremap import *
-from webkitpy.common.net.regressionwindow import RegressionWindow
-from webkitpy.common.net.buildbot.buildbot_mock import MockBuilder
-
-
-class FailureMapTest(unittest.TestCase):
- builder1 = MockBuilder("Builder1")
- builder2 = MockBuilder("Builder2")
-
- build1a = Build(builder1, build_number=22, revision=1233, is_green=True)
- build1b = Build(builder1, build_number=23, revision=1234, is_green=False)
- build2a = Build(builder2, build_number=89, revision=1233, is_green=True)
- build2b = Build(builder2, build_number=90, revision=1235, is_green=False)
-
- regression_window1 = RegressionWindow(build1a, build1b, failing_tests=[u'test1', u'test1'])
- regression_window2 = RegressionWindow(build2a, build2b, failing_tests=[u'test1'])
-
- def _make_failure_map(self):
- failure_map = FailureMap()
- failure_map.add_regression_window(self.builder1, self.regression_window1)
- failure_map.add_regression_window(self.builder2, self.regression_window2)
- return failure_map
-
- def test_failing_revisions(self):
- failure_map = self._make_failure_map()
- self.assertEqual(failure_map.failing_revisions(), [1234, 1235])
-
- def test_new_failures(self):
- failure_map = self._make_failure_map()
- failure_map.filter_out_old_failures(lambda revision: False)
- self.assertEqual(failure_map.failing_revisions(), [1234, 1235])
-
- def test_new_failures_with_old_revisions(self):
- failure_map = self._make_failure_map()
- failure_map.filter_out_old_failures(lambda revision: revision == 1234)
- self.assertEqual(failure_map.failing_revisions(), [])
-
- def test_new_failures_with_more_old_revisions(self):
- failure_map = self._make_failure_map()
- failure_map.filter_out_old_failures(lambda revision: revision == 1235)
- self.assertEqual(failure_map.failing_revisions(), [1234])
-
- def test_tests_failing_for(self):
- failure_map = self._make_failure_map()
- self.assertEqual(failure_map.tests_failing_for(1234), [u'test1'])
-
- def test_failing_tests(self):
- failure_map = self._make_failure_map()
- self.assertEqual(failure_map.failing_tests(), set([u'test1']))
diff --git a/Tools/Scripts/webkitpy/common/net/file_uploader.py b/Tools/Scripts/webkitpy/common/net/file_uploader.py
deleted file mode 100644
index 871295b11..000000000
--- a/Tools/Scripts/webkitpy/common/net/file_uploader.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright (C) 2010 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.
-
-import mimetypes
-import time
-import urllib2
-
-from webkitpy.common.net.networktransaction import NetworkTransaction, NetworkTimeout
-
-
-def get_mime_type(filename):
- return mimetypes.guess_type(filename)[0] or 'application/octet-stream'
-
-
-# FIXME: Rather than taking tuples, this function should take more structured data.
-def _encode_multipart_form_data(fields, files):
- """Encode form fields for multipart/form-data.
-
- Args:
- fields: A sequence of (name, value) elements for regular form fields.
- files: A sequence of (name, filename, value) elements for data to be
- uploaded as files.
- Returns:
- (content_type, body) ready for httplib.HTTP instance.
-
- Source:
- http://code.google.com/p/rietveld/source/browse/trunk/upload.py
- """
- BOUNDARY = '-M-A-G-I-C---B-O-U-N-D-A-R-Y-'
- CRLF = '\r\n'
- lines = []
-
- for key, value in fields:
- lines.append('--' + BOUNDARY)
- lines.append('Content-Disposition: form-data; name="%s"' % key)
- lines.append('')
- if isinstance(value, unicode):
- value = value.encode('utf-8')
- lines.append(value)
-
- for key, filename, value in files:
- lines.append('--' + BOUNDARY)
- lines.append('Content-Disposition: form-data; name="%s"; filename="%s"' % (key, filename))
- lines.append('Content-Type: %s' % get_mime_type(filename))
- lines.append('')
- if isinstance(value, unicode):
- value = value.encode('utf-8')
- lines.append(value)
-
- lines.append('--' + BOUNDARY + '--')
- lines.append('')
- body = CRLF.join(lines)
- content_type = 'multipart/form-data; boundary=%s' % BOUNDARY
- return content_type, body
-
-
-class FileUploader(object):
- def __init__(self, url, timeout_seconds):
- self._url = url
- self._timeout_seconds = timeout_seconds
-
- def upload_single_text_file(self, filesystem, content_type, filename):
- return self._upload_data(content_type, filesystem.read_text_file(filename))
-
- def upload_as_multipart_form_data(self, filesystem, files, attrs):
- file_objs = []
- for filename, path in files:
- file_objs.append(('file', filename, filesystem.read_binary_file(path)))
-
- # FIXME: We should use the same variable names for the formal and actual parameters.
- content_type, data = _encode_multipart_form_data(attrs, file_objs)
- return self._upload_data(content_type, data)
-
- def _upload_data(self, content_type, data):
- def callback():
- # FIXME: Setting a timeout, either globally using socket.setdefaulttimeout()
- # or in urlopen(), doesn't appear to work on Mac 10.5 with Python 2.7.
- # For now we will ignore the timeout value and hope for the best.
- request = urllib2.Request(self._url, data, {"Content-Type": content_type})
- return urllib2.urlopen(request)
-
- return NetworkTransaction(timeout_seconds=self._timeout_seconds).run(callback)
diff --git a/Tools/Scripts/webkitpy/common/net/irc/__init__.py b/Tools/Scripts/webkitpy/common/net/irc/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/net/irc/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/net/irc/irc_mock.py b/Tools/Scripts/webkitpy/common/net/irc/irc_mock.py
deleted file mode 100644
index b2ae0715a..000000000
--- a/Tools/Scripts/webkitpy/common/net/irc/irc_mock.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2011 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.
-
-import logging
-
-_log = logging.getLogger(__name__)
-
-
-class MockIRC(object):
- def post(self, message):
- _log.info("MOCK: irc.post: %s" % message)
-
- def disconnect(self):
- _log.info("MOCK: irc.disconnect")
diff --git a/Tools/Scripts/webkitpy/common/net/irc/ircbot.py b/Tools/Scripts/webkitpy/common/net/irc/ircbot.py
deleted file mode 100644
index c8c1a38a9..000000000
--- a/Tools/Scripts/webkitpy/common/net/irc/ircbot.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.common.config import irc as config_irc
-
-from webkitpy.common.thread.messagepump import MessagePump, MessagePumpDelegate
-from webkitpy.thirdparty.autoinstalled.irc import ircbot
-from webkitpy.thirdparty.autoinstalled.irc import irclib
-
-
-class IRCBotDelegate(object):
- def irc_message_received(self, nick, message):
- raise NotImplementedError, "subclasses must implement"
-
- def irc_nickname(self):
- raise NotImplementedError, "subclasses must implement"
-
- def irc_password(self):
- raise NotImplementedError, "subclasses must implement"
-
-
-class IRCBot(ircbot.SingleServerIRCBot, MessagePumpDelegate):
- # FIXME: We should get this information from a config file.
- def __init__(self,
- message_queue,
- delegate):
- self._message_queue = message_queue
- self._delegate = delegate
- ircbot.SingleServerIRCBot.__init__(
- self,
- [(
- config_irc.server,
- config_irc.port,
- self._delegate.irc_password()
- )],
- self._delegate.irc_nickname(),
- self._delegate.irc_nickname())
- self._channel = config_irc.channel
-
- # ircbot.SingleServerIRCBot methods
-
- def on_nicknameinuse(self, connection, event):
- connection.nick(connection.get_nickname() + "_")
-
- def on_welcome(self, connection, event):
- connection.join(self._channel)
- self._message_pump = MessagePump(self, self._message_queue)
-
- def on_pubmsg(self, connection, event):
- nick = irclib.nm_to_n(event.source())
- request = event.arguments()[0]
-
- if not irclib.irc_lower(request).startswith(irclib.irc_lower(connection.get_nickname())):
- return
-
- if len(request) <= len(connection.get_nickname()):
- return
-
- # Some IRC clients, like xchat-gnome, default to using a comma
- # when addressing someone.
- vocative_separator = request[len(connection.get_nickname())]
- if vocative_separator == ':':
- request = request.split(':', 1)
- elif vocative_separator == ',':
- request = request.split(',', 1)
- else:
- return
-
- if len(request) > 1:
- response = self._delegate.irc_message_received(nick, request[1])
- if response:
- connection.privmsg(self._channel, response)
-
- # MessagePumpDelegate methods
-
- def schedule(self, interval, callback):
- self.connection.execute_delayed(interval, callback)
-
- def message_available(self, message):
- self.connection.privmsg(self._channel, message)
-
- def final_message_delivered(self):
- self.die()
diff --git a/Tools/Scripts/webkitpy/common/net/irc/ircproxy.py b/Tools/Scripts/webkitpy/common/net/irc/ircproxy.py
deleted file mode 100644
index 521f6f761..000000000
--- a/Tools/Scripts/webkitpy/common/net/irc/ircproxy.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (c) 2010 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.
-
-import logging
-import threading
-
-from webkitpy.common.net.irc.ircbot import IRCBot
-from webkitpy.common.thread.threadedmessagequeue import ThreadedMessageQueue
-
-_log = logging.getLogger(__name__)
-
-
-class _IRCThread(threading.Thread):
- def __init__(self, message_queue, irc_delegate, irc_bot):
- threading.Thread.__init__(self)
- self.setDaemon(True)
- self._message_queue = message_queue
- self._irc_delegate = irc_delegate
- self._irc_bot = irc_bot
-
- def run(self):
- bot = self._irc_bot(self._message_queue, self._irc_delegate)
- bot.start()
-
-
-class IRCProxy(object):
- def __init__(self, irc_delegate, irc_bot=IRCBot):
- _log.info("Connecting to IRC")
- self._message_queue = ThreadedMessageQueue()
- self._child_thread = _IRCThread(self._message_queue, irc_delegate, irc_bot)
- self._child_thread.start()
-
- def post(self, message):
- self._message_queue.post(message)
-
- def disconnect(self):
- _log.info("Disconnecting from IRC...")
- self._message_queue.stop()
- self._child_thread.join()
diff --git a/Tools/Scripts/webkitpy/common/net/irc/ircproxy_unittest.py b/Tools/Scripts/webkitpy/common/net/irc/ircproxy_unittest.py
deleted file mode 100644
index 639979a02..000000000
--- a/Tools/Scripts/webkitpy/common/net/irc/ircproxy_unittest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.irc.ircproxy import IRCProxy
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-
-class IRCProxyTest(unittest.TestCase):
- def test_trivial(self):
- def fun():
- proxy = IRCProxy(Mock(), Mock())
- proxy.post("hello")
- proxy.disconnect()
-
- expected_logs = "Connecting to IRC\nDisconnecting from IRC...\n"
- OutputCapture().assert_outputs(self, fun, expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/common/net/layouttestresults.py b/Tools/Scripts/webkitpy/common/net/layouttestresults.py
deleted file mode 100644
index b8cb15769..000000000
--- a/Tools/Scripts/webkitpy/common/net/layouttestresults.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (c) 2010, 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.
-
-import logging
-
-from webkitpy.common.net.resultsjsonparser import ResultsJSONParser
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup, SoupStrainer
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: This should be unified with all the layout test results code in the layout_tests package
-# This doesn't belong in common.net, but we don't have a better place for it yet.
-def path_for_layout_test(test_name):
- return "LayoutTests/%s" % test_name
-
-
-# FIXME: This should be unified with ResultsSummary or other NRWT layout tests code
-# in the layout_tests package.
-# This doesn't belong in common.net, but we don't have a better place for it yet.
-class LayoutTestResults(object):
- @classmethod
- def results_from_string(cls, string):
- if not string:
- return None
- test_results = ResultsJSONParser.parse_results_json(string)
- if not test_results:
- return None
- return cls(test_results)
-
- def __init__(self, test_results):
- self._test_results = test_results
- self._failure_limit_count = None
- self._unit_test_failures = []
-
- # FIXME: run-webkit-tests should store the --exit-after-N-failures value
- # (or some indication of early exit) somewhere in the results.json
- # file. Until it does, callers should set the limit to
- # --exit-after-N-failures value used in that run. Consumers of LayoutTestResults
- # may use that value to know if absence from the failure list means PASS.
- # https://bugs.webkit.org/show_bug.cgi?id=58481
- def set_failure_limit_count(self, limit):
- self._failure_limit_count = limit
-
- def failure_limit_count(self):
- return self._failure_limit_count
-
- def test_results(self):
- return self._test_results
-
- def results_matching_failure_types(self, failure_types):
- return [result for result in self._test_results if result.has_failure_matching_types(*failure_types)]
-
- def tests_matching_failure_types(self, failure_types):
- return [result.test_name for result in self.results_matching_failure_types(failure_types)]
-
- def failing_test_results(self):
- return self.results_matching_failure_types(test_failures.ALL_FAILURE_CLASSES)
-
- def failing_tests(self):
- return [result.test_name for result in self.failing_test_results()] + self._unit_test_failures
-
- def add_unit_test_failures(self, unit_test_results):
- self._unit_test_failures = unit_test_results
diff --git a/Tools/Scripts/webkitpy/common/net/layouttestresults_unittest.py b/Tools/Scripts/webkitpy/common/net/layouttestresults_unittest.py
deleted file mode 100644
index ea4e9273f..000000000
--- a/Tools/Scripts/webkitpy/common/net/layouttestresults_unittest.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (c) 2010, 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-
-class LayoutTestResultsTest(unittest.TestCase):
- def test_set_failure_limit_count(self):
- results = LayoutTestResults([])
- self.assertIsNone(results.failure_limit_count())
- results.set_failure_limit_count(10)
- self.assertEqual(results.failure_limit_count(), 10)
-
- def test_results_from_string(self):
- self.assertIsNone(LayoutTestResults.results_from_string(None))
- self.assertIsNone(LayoutTestResults.results_from_string(""))
diff --git a/Tools/Scripts/webkitpy/common/net/networktransaction.py b/Tools/Scripts/webkitpy/common/net/networktransaction.py
deleted file mode 100644
index 60acaaba3..000000000
--- a/Tools/Scripts/webkitpy/common/net/networktransaction.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import time
-import urllib2
-
-_log = logging.getLogger(__name__)
-
-
-class NetworkTimeout(Exception):
- def __str__(self):
- return 'NetworkTimeout'
-
-
-class NetworkTransaction(object):
- def __init__(self, initial_backoff_seconds=10, grown_factor=1.5, timeout_seconds=(10 * 60), convert_404_to_None=False):
- self._initial_backoff_seconds = initial_backoff_seconds
- self._grown_factor = grown_factor
- self._timeout_seconds = timeout_seconds
- self._convert_404_to_None = convert_404_to_None
-
- def run(self, request):
- self._total_sleep = 0
- self._backoff_seconds = self._initial_backoff_seconds
- while True:
- try:
- return request()
- except urllib2.HTTPError, e:
- if self._convert_404_to_None and e.code == 404:
- return None
- self._check_for_timeout()
- _log.warn("Received HTTP status %s loading \"%s\". Retrying in %s seconds..." % (e.code, e.filename, self._backoff_seconds))
- self._sleep()
-
- def _check_for_timeout(self):
- if self._total_sleep + self._backoff_seconds > self._timeout_seconds:
- raise NetworkTimeout()
-
- def _sleep(self):
- time.sleep(self._backoff_seconds)
- self._total_sleep += self._backoff_seconds
- self._backoff_seconds *= self._grown_factor
diff --git a/Tools/Scripts/webkitpy/common/net/networktransaction_unittest.py b/Tools/Scripts/webkitpy/common/net/networktransaction_unittest.py
deleted file mode 100644
index 67439f094..000000000
--- a/Tools/Scripts/webkitpy/common/net/networktransaction_unittest.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.networktransaction import NetworkTransaction, NetworkTimeout
-from webkitpy.common.system.logtesting import LoggingTestCase
-
-
-class NetworkTransactionTest(LoggingTestCase):
- exception = Exception("Test exception")
-
- def test_success(self):
- transaction = NetworkTransaction()
- self.assertEqual(transaction.run(lambda: 42), 42)
-
- def _raise_exception(self):
- raise self.exception
-
- def test_exception(self):
- transaction = NetworkTransaction()
- did_process_exception = False
- did_throw_exception = True
- try:
- transaction.run(lambda: self._raise_exception())
- did_throw_exception = False
- except Exception, e:
- did_process_exception = True
- self.assertEqual(e, self.exception)
- self.assertTrue(did_throw_exception)
- self.assertTrue(did_process_exception)
-
- def _raise_500_error(self):
- self._run_count += 1
- if self._run_count < 3:
- from webkitpy.thirdparty.autoinstalled.mechanize import HTTPError
- raise HTTPError("http://example.com/", 500, "internal server error", None, None)
- return 42
-
- def _raise_404_error(self):
- from webkitpy.thirdparty.autoinstalled.mechanize import HTTPError
- raise HTTPError("http://foo.com/", 404, "not found", None, None)
-
- def test_retry(self):
- self._run_count = 0
- transaction = NetworkTransaction(initial_backoff_seconds=0)
- self.assertEqual(transaction.run(lambda: self._raise_500_error()), 42)
- self.assertEqual(self._run_count, 3)
- self.assertLog(['WARNING: Received HTTP status 500 loading "http://example.com/". '
- 'Retrying in 0 seconds...\n',
- 'WARNING: Received HTTP status 500 loading "http://example.com/". '
- 'Retrying in 0.0 seconds...\n'])
-
- def test_convert_404_to_None(self):
- transaction = NetworkTransaction(convert_404_to_None=True)
- self.assertEqual(transaction.run(lambda: self._raise_404_error()), None)
-
- def test_timeout(self):
- self._run_count = 0
- transaction = NetworkTransaction(initial_backoff_seconds=60*60, timeout_seconds=60)
- did_process_exception = False
- did_throw_exception = True
- try:
- transaction.run(lambda: self._raise_500_error())
- did_throw_exception = False
- except NetworkTimeout, e:
- did_process_exception = True
- self.assertTrue(did_throw_exception)
- self.assertTrue(did_process_exception)
diff --git a/Tools/Scripts/webkitpy/common/net/regressionwindow.py b/Tools/Scripts/webkitpy/common/net/regressionwindow.py
deleted file mode 100644
index 3960ba276..000000000
--- a/Tools/Scripts/webkitpy/common/net/regressionwindow.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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.
-
-
-# FIXME: This probably belongs in the buildbot module.
-class RegressionWindow(object):
- def __init__(self, build_before_failure, failing_build, failing_tests=None):
- self._build_before_failure = build_before_failure
- self._failing_build = failing_build
- self._failing_tests = failing_tests
- self._revisions = None
-
- def build_before_failure(self):
- return self._build_before_failure
-
- def failing_build(self):
- return self._failing_build
-
- def failing_tests(self):
- return self._failing_tests
-
- def revisions(self):
- # Cache revisions to avoid excessive allocations.
- if not self._revisions:
- self._revisions = range(self._failing_build.revision(), self._build_before_failure.revision(), -1)
- self._revisions.reverse()
- return self._revisions
diff --git a/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py b/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py
deleted file mode 100644
index 1a2a70f4b..000000000
--- a/Tools/Scripts/webkitpy/common/net/resultsjsonparser.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright (c) 2010, 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.
-
-import json
-import logging
-
-from webkitpy.common.memoized import memoized
-# FIXME: common should never import from new-run-webkit-tests, one of these files needs to move.
-from webkitpy.layout_tests.layout_package import json_results_generator
-from webkitpy.layout_tests.models import test_expectations, test_results, test_failures
-from webkitpy.layout_tests.models.test_expectations import TestExpectations
-
-_log = logging.getLogger(__name__)
-
-
-# These are helper functions for navigating the results json structure.
-def for_each_test(tree, handler, prefix=''):
- for key in tree:
- new_prefix = (prefix + '/' + key) if prefix else key
- if 'actual' not in tree[key]:
- for_each_test(tree[key], handler, new_prefix)
- else:
- handler(new_prefix, tree[key])
-
-
-def result_for_test(tree, test):
- parts = test.split('/')
- for part in parts:
- tree = tree[part]
- return tree
-
-
-# Wrapper around the dictionaries returned from the json.
-# Eventually the .json should just serialize the TestFailure objects
-# directly and we won't need this.
-class JSONTestResult(object):
- def __init__(self, test_name, result_dict):
- self._test_name = test_name
- self._result_dict = result_dict
-
- def did_pass_or_run_as_expected(self):
- return self.did_pass() or self.did_run_as_expected()
-
- def did_pass(self):
- return test_expectations.PASS in self._actual_as_tokens()
-
- def did_run_as_expected(self):
- actual_results = self._actual_as_tokens()
- expected_results = self._expected_as_tokens()
- # FIXME: We should only call remove_pixel_failures when this JSONResult
- # came from a test run without pixel tests!
- if not TestExpectations.has_pixel_failures(actual_results):
- expected_results = TestExpectations.remove_pixel_failures(expected_results)
- for actual_result in actual_results:
- if not TestExpectations.result_was_expected(actual_result, expected_results, False, False):
- return False
- return True
-
- def _tokenize(self, results_string):
- tokens = map(TestExpectations.expectation_from_string, results_string.split(' '))
- if None in tokens:
- _log.warning("Unrecognized result in %s" % results_string)
- return set(tokens)
-
- @memoized
- def _actual_as_tokens(self):
- actual_results = self._result_dict['actual']
- return self._tokenize(actual_results)
-
- @memoized
- def _expected_as_tokens(self):
- actual_results = self._result_dict['expected']
- return self._tokenize(actual_results)
-
- def _failure_types_from_actual_result(self, actual):
- # FIXME: There doesn't seem to be a full list of all possible values of
- # 'actual' anywhere. However JSONLayoutResultsGenerator.FAILURE_TO_CHAR
- # is a useful reference as that's for "old" style results.json files
- #
- # FIXME: TEXT, IMAGE_PLUS_TEXT, and AUDIO are obsolete but we keep them for
- # now so that we can parse old results.json files.
- if actual == test_expectations.PASS:
- return []
- elif actual == test_expectations.FAIL:
- return [test_failures.FailureTextMismatch(), test_failures.FailureImageHashMismatch(), test_failures.FailureAudioMismatch()]
- elif actual == test_expectations.TEXT:
- return [test_failures.FailureTextMismatch()]
- elif actual == test_expectations.IMAGE:
- return [test_failures.FailureImageHashMismatch()]
- elif actual == test_expectations.IMAGE_PLUS_TEXT:
- return [test_failures.FailureImageHashMismatch(), test_failures.FailureTextMismatch()]
- elif actual == test_expectations.AUDIO:
- return [test_failures.FailureAudioMismatch()]
- elif actual == test_expectations.TIMEOUT:
- return [test_failures.FailureTimeout()]
- elif actual == test_expectations.CRASH:
- # NOTE: We don't know what process crashed from the json, just that a process crashed.
- return [test_failures.FailureCrash()]
- elif actual == test_expectations.MISSING:
- return [test_failures.FailureMissingResult(), test_failures.FailureMissingImageHash(), test_failures.FailureMissingImage()]
- else:
- _log.warning("Failed to handle: %s" % self._result_dict['actual'])
- return []
-
- def _failures(self):
- if self.did_pass():
- return []
- return sum(map(self._failure_types_from_actual_result, self._actual_as_tokens()), [])
-
- def test_result(self):
- # FIXME: Optionally pull in the test runtime from times_ms.json.
- return test_results.TestResult(self._test_name, self._failures())
-
-
-class ResultsJSONParser(object):
- @classmethod
- def parse_results_json(cls, json_string):
- if not json_results_generator.has_json_wrapper(json_string):
- return None
-
- content_string = json_results_generator.strip_json_wrapper(json_string)
- json_dict = json.loads(content_string)
-
- json_results = []
- for_each_test(json_dict['tests'], lambda test, result: json_results.append(JSONTestResult(test, result)))
-
- # FIXME: What's the short sexy python way to filter None?
- # I would use [foo.bar() for foo in foos if foo.bar()] but bar() is expensive.
- unexpected_failures = [result.test_result() for result in json_results if not result.did_pass_or_run_as_expected()]
- return filter(lambda a: a, unexpected_failures)
diff --git a/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py b/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py
deleted file mode 100644
index aaeb5dc6d..000000000
--- a/Tools/Scripts/webkitpy/common/net/resultsjsonparser_unittest.py
+++ /dev/null
@@ -1,93 +0,0 @@
-# Copyright (c) 2010, 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.resultsjsonparser import ResultsJSONParser
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-
-
-class ResultsJSONParserTest(unittest.TestCase):
- # The real files have no whitespace, but newlines make this much more readable.
-
- _example_full_results_json = """ADD_RESULTS({
- "tests": {
- "fast": {
- "dom": {
- "prototype-inheritance.html": {
- "expected": "PASS",
- "actual": "FAIL"
- },
- "prototype-banana.html": {
- "expected": "FAIL",
- "actual": "PASS"
- },
- "prototype-taco.html": {
- "expected": "PASS",
- "actual": "PASS FAIL"
- },
- "prototype-chocolate.html": {
- "expected": "FAIL",
- "actual": "FAIL"
- },
- "prototype-strawberry.html": {
- "expected": "PASS",
- "actual": "FAIL PASS"
- }
- }
- },
- "svg": {
- "dynamic-updates": {
- "SVGFEDropShadowElement-dom-stdDeviation-attr.html": {
- "expected": "PASS",
- "actual": "IMAGE",
- "has_stderr": true
- }
- }
- }
- },
- "skipped": 450,
- "num_regressions": 15,
- "layout_tests_dir": "\/b\/build\/slave\/Webkit_Mac10_5\/build\/src\/third_party\/WebKit\/LayoutTests",
- "version": 3,
- "num_passes": 77,
- "has_pretty_patch": false,
- "fixable": 1220,
- "num_flaky": 0,
- "uses_expectations_file": true,
- "has_wdiff": false
-});"""
-
- def test_basic(self):
- expected_results = [
- test_results.TestResult("svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.html", [test_failures.FailureImageHashMismatch()], 0),
- test_results.TestResult("fast/dom/prototype-inheritance.html", [test_failures.FailureTextMismatch(), test_failures.FailureImageHashMismatch(), test_failures.FailureAudioMismatch()], 0),
- ]
- results = ResultsJSONParser.parse_results_json(self._example_full_results_json)
- self.assertEqual(expected_results, results)
diff --git a/Tools/Scripts/webkitpy/common/net/statusserver.py b/Tools/Scripts/webkitpy/common/net/statusserver.py
deleted file mode 100644
index a8d0beaf3..000000000
--- a/Tools/Scripts/webkitpy/common/net/statusserver.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright (C) 2009 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 the client designed to talk to Tools/QueueStatusServer.
-
-from webkitpy.common.net.networktransaction import NetworkTransaction
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-
-import logging
-import urllib2
-
-
-_log = logging.getLogger(__name__)
-
-
-class StatusServer:
- # FIXME: This should probably move to common.config.urls.
- default_host = "webkit-queues.appspot.com"
-
- def __init__(self, host=default_host, browser=None, bot_id=None):
- self.set_host(host)
- from webkitpy.thirdparty.autoinstalled.mechanize import Browser
- self._browser = browser or Browser()
- self.set_bot_id(bot_id)
-
- def set_host(self, host):
- self.host = host
- self.url = "http://%s" % self.host
-
- def set_bot_id(self, bot_id):
- self.bot_id = bot_id
-
- def results_url_for_status(self, status_id):
- return "%s/results/%s" % (self.url, status_id)
-
- def _add_patch(self, patch):
- if not patch:
- return
- if patch.bug_id():
- self._browser["bug_id"] = unicode(patch.bug_id())
- if patch.id():
- self._browser["patch_id"] = unicode(patch.id())
-
- def _add_results_file(self, results_file):
- if not results_file:
- return
- self._browser.add_file(results_file, "text/plain", "results.txt", 'results_file')
-
- # 500 is the AppEngine limit for TEXT fields (which most of our fields are).
- # Exceeding the limit will result in a 500 error from the server.
- def _set_field(self, field_name, value, limit=500):
- if len(value) > limit:
- _log.warn("Attempted to set %s to value exceeding %s characters, truncating." % (field_name, limit))
- self._browser[field_name] = value[:limit]
-
- def _post_status_to_server(self, queue_name, status, patch, results_file):
- if results_file:
- # We might need to re-wind the file if we've already tried to post it.
- results_file.seek(0)
-
- update_status_url = "%s/update-status" % self.url
- self._browser.open(update_status_url)
- self._browser.select_form(name="update_status")
- self._browser["queue_name"] = queue_name
- if self.bot_id:
- self._browser["bot_id"] = self.bot_id
- self._add_patch(patch)
- self._set_field("status", status, limit=500)
- self._add_results_file(results_file)
- return self._browser.submit().read() # This is the id of the newly created status object.
-
- def _post_svn_revision_to_server(self, svn_revision_number, broken_bot):
- update_svn_revision_url = "%s/update-svn-revision" % self.url
- self._browser.open(update_svn_revision_url)
- self._browser.select_form(name="update_svn_revision")
- self._browser["number"] = unicode(svn_revision_number)
- self._browser["broken_bot"] = broken_bot
- return self._browser.submit().read()
-
- def _post_work_items_to_server(self, queue_name, work_items):
- update_work_items_url = "%s/update-work-items" % self.url
- self._browser.open(update_work_items_url)
- self._browser.select_form(name="update_work_items")
- self._browser["queue_name"] = queue_name
- work_items = map(unicode, work_items) # .join expects strings
- self._browser["work_items"] = " ".join(work_items)
- return self._browser.submit().read()
-
- def _post_work_item_to_ews(self, attachment_id):
- submit_to_ews_url = "%s/submit-to-ews" % self.url
- self._browser.open(submit_to_ews_url)
- self._browser.select_form(name="submit_to_ews")
- self._browser["attachment_id"] = unicode(attachment_id)
- self._browser.submit()
-
- def submit_to_ews(self, attachment_id):
- _log.info("Submitting attachment %s to EWS queues" % attachment_id)
- return NetworkTransaction().run(lambda: self._post_work_item_to_ews(attachment_id))
-
- def next_work_item(self, queue_name):
- _log.debug("Fetching next work item for %s" % queue_name)
- next_patch_url = "%s/next-patch/%s" % (self.url, queue_name)
- return self._fetch_url(next_patch_url)
-
- def _post_release_work_item(self, queue_name, patch):
- release_patch_url = "%s/release-patch" % (self.url)
- self._browser.open(release_patch_url)
- self._browser.select_form(name="release_patch")
- self._browser["queue_name"] = queue_name
- self._browser["attachment_id"] = unicode(patch.id())
- self._browser.submit()
-
- def release_work_item(self, queue_name, patch):
- _log.info("Releasing work item %s from %s" % (patch.id(), queue_name))
- return NetworkTransaction(convert_404_to_None=True).run(lambda: self._post_release_work_item(queue_name, patch))
-
- def update_work_items(self, queue_name, work_items):
- _log.debug("Recording work items: %s for %s" % (work_items, queue_name))
- return NetworkTransaction().run(lambda: self._post_work_items_to_server(queue_name, work_items))
-
- def update_status(self, queue_name, status, patch=None, results_file=None):
- _log.info(status)
- return NetworkTransaction().run(lambda: self._post_status_to_server(queue_name, status, patch, results_file))
-
- def update_svn_revision(self, svn_revision_number, broken_bot):
- _log.info("SVN revision: %s broke %s" % (svn_revision_number, broken_bot))
- return NetworkTransaction().run(lambda: self._post_svn_revision_to_server(svn_revision_number, broken_bot))
-
- def _fetch_url(self, url):
- # FIXME: This should use NetworkTransaction's 404 handling instead.
- try:
- return urllib2.urlopen(url).read()
- except urllib2.HTTPError, e:
- if e.code == 404:
- return None
- raise e
-
- def patch_status(self, queue_name, patch_id):
- patch_status_url = "%s/patch-status/%s/%s" % (self.url, queue_name, patch_id)
- return self._fetch_url(patch_status_url)
-
- def svn_revision(self, svn_revision_number):
- svn_revision_url = "%s/svn-revision/%s" % (self.url, svn_revision_number)
- return self._fetch_url(svn_revision_url)
diff --git a/Tools/Scripts/webkitpy/common/net/statusserver_mock.py b/Tools/Scripts/webkitpy/common/net/statusserver_mock.py
deleted file mode 100644
index 22fa12f13..000000000
--- a/Tools/Scripts/webkitpy/common/net/statusserver_mock.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-
-_log = logging.getLogger(__name__)
-
-
-class MockStatusServer(object):
-
- def __init__(self, bot_id=None, work_items=None):
- self.host = "example.com"
- self.bot_id = bot_id
- self._work_items = work_items or []
-
- def patch_status(self, queue_name, patch_id):
- return None
-
- def svn_revision(self, svn_revision):
- return None
-
- def next_work_item(self, queue_name):
- if not self._work_items:
- return None
- return self._work_items.pop(0)
-
- def release_work_item(self, queue_name, patch):
- _log.info("MOCK: release_work_item: %s %s" % (queue_name, patch.id()))
-
- def update_work_items(self, queue_name, work_items):
- self._work_items = work_items
- _log.info("MOCK: update_work_items: %s %s" % (queue_name, work_items))
-
- def submit_to_ews(self, patch_id):
- _log.info("MOCK: submit_to_ews: %s" % (patch_id))
-
- def update_status(self, queue_name, status, patch=None, results_file=None):
- _log.info("MOCK: update_status: %s %s" % (queue_name, status))
- return 187
-
- def update_svn_revision(self, svn_revision, broken_bot):
- return 191
-
- def results_url_for_status(self, status_id):
- return "http://dummy_url"
diff --git a/Tools/Scripts/webkitpy/common/net/statusserver_unittest.py b/Tools/Scripts/webkitpy/common/net/statusserver_unittest.py
deleted file mode 100644
index 91a42c93e..000000000
--- a/Tools/Scripts/webkitpy/common/net/statusserver_unittest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.statusserver import StatusServer
-from webkitpy.common.system.outputcapture import OutputCaptureTestCaseBase
-from webkitpy.common.net.web_mock import MockBrowser
-
-
-class StatusServerTest(OutputCaptureTestCaseBase):
- def test_url_for_issue(self):
- mock_browser = MockBrowser()
- status_server = StatusServer(browser=mock_browser, bot_id='123')
- status_server.update_status('queue name', 'the status')
- self.assertEqual('queue name', mock_browser.params['queue_name'])
- self.assertEqual('the status', mock_browser.params['status'])
- self.assertEqual('123', mock_browser.params['bot_id'])
diff --git a/Tools/Scripts/webkitpy/common/net/unittestresults.py b/Tools/Scripts/webkitpy/common/net/unittestresults.py
deleted file mode 100644
index b616c0946..000000000
--- a/Tools/Scripts/webkitpy/common/net/unittestresults.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (c) 2012, 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.
-
-import logging
-import xml.dom.minidom
-
-_log = logging.getLogger(__name__)
-
-
-class UnitTestResults(object):
- @classmethod
- def results_from_string(self, string):
- if not string:
- return None
- try:
- dom = xml.dom.minidom.parseString(string)
- failures = []
- for testcase in dom.getElementsByTagName('testcase'):
- if testcase.getElementsByTagName('failure').length != 0:
- testname = testcase.getAttribute('name')
- classname = testcase.getAttribute('classname')
- failures.append("%s.%s" % (classname, testname))
- return failures
- except xml.parsers.expat.ExpatError, e:
- _log.error("XML error %s parsing unit test output" % str(e))
- return None
diff --git a/Tools/Scripts/webkitpy/common/net/unittestresults_unittest.py b/Tools/Scripts/webkitpy/common/net/unittestresults_unittest.py
deleted file mode 100644
index 227139271..000000000
--- a/Tools/Scripts/webkitpy/common/net/unittestresults_unittest.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (c) 2012, 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.
-
-import unittest2 as unittest
-
-from unittestresults import UnitTestResults
-
-
-class UnitTestResultsTest(unittest.TestCase):
-
- def test_nostring(self):
- self.assertIsNone(UnitTestResults.results_from_string(None))
-
- def test_emptystring(self):
- self.assertIsNone(UnitTestResults.results_from_string(""))
-
- def test_nofailures(self):
- no_failures_xml = """<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="3" failures="0" disabled="0" errors="0" time="11.35" name="AllTests">
- <testsuite name="RenderTableCellDeathTest" tests="3" failures="0" disabled="0" errors="0" time="0.677">
- <testcase name="CanSetColumn" status="run" time="0.168" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetColumnIndex" status="run" time="0.129" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetRowIndex" status="run" time="0.123" classname="RenderTableCellDeathTest" />
- </testsuite>
-</testsuites>"""
- self.assertEqual([], UnitTestResults.results_from_string(no_failures_xml))
-
- def test_onefailure(self):
- one_failure_xml = """<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="4" failures="1" disabled="0" errors="0" time="11.35" name="AllTests">
- <testsuite name="RenderTableCellDeathTest" tests="4" failures="1" disabled="0" errors="0" time="0.677">
- <testcase name="CanSetColumn" status="run" time="0.168" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetColumnIndex" status="run" time="0.129" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetRowIndex" status="run" time="0.123" classname="RenderTableCellDeathTest" />
- <testcase name="FAILS_DivAutoZoomParamsTest" status="run" time="0.02" classname="WebFrameTest">
- <failure message="Value of: scale&#x0A; Actual: 4&#x0A;Expected: 1" type=""><![CDATA[../../Source/WebKit/chromium/tests/WebFrameTest.cpp:191
-Value of: scale
- Actual: 4
-Expected: 1]]></failure>
- </testcase>
- </testsuite>
-</testsuites>"""
- expected = ["WebFrameTest.FAILS_DivAutoZoomParamsTest"]
- self.assertEqual(expected, UnitTestResults.results_from_string(one_failure_xml))
-
- def test_multiple_failures_per_test(self):
- multiple_failures_per_test_xml = """<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="4" failures="2" disabled="0" errors="0" time="11.35" name="AllTests">
- <testsuite name="UnitTests" tests="4" failures="2" disable="0" errors="0" time="10.0">
- <testcase name="TestOne" status="run" time="0.5" classname="ClassOne">
- <failure message="Value of: pi&#x0A; Actual: 3&#x0A;Expected: 3.14" type=""><![CDATA[../../Source/WebKit/chromium/tests/ClassOneTest.cpp:42
-Value of: pi
- Actual: 3
-Expected: 3.14]]></failure>
- </testcase>
- <testcase name="TestTwo" status="run" time="0.5" classname="ClassTwo">
- <failure message="Value of: e&#x0A; Actual: 2&#x0A;Expected: 2.71" type=""><![CDATA[../../Source/WebKit/chromium/tests/ClassTwoTest.cpp:30
-Value of: e
- Actual: 2
-Expected: 2.71]]></failure>
- <failure message="Value of: tau&#x0A; Actual: 6&#x0A;Expected: 6.28" type=""><![CDATA[../../Source/WebKit/chromium/tests/ClassTwoTest.cpp:55
-Value of: tau
- Actual: 6
-Expected: 6.28]]></failure>
- </testcase>
- </testsuite>
-</testsuites>"""
- expected = ["ClassOne.TestOne", "ClassTwo.TestTwo"]
- self.assertEqual(expected, UnitTestResults.results_from_string(multiple_failures_per_test_xml))
diff --git a/Tools/Scripts/webkitpy/common/net/web.py b/Tools/Scripts/webkitpy/common/net/web.py
deleted file mode 100644
index b8a06e574..000000000
--- a/Tools/Scripts/webkitpy/common/net/web.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2011 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.
-
-import urllib2
-
-from webkitpy.common.net.networktransaction import NetworkTransaction
-
-
-class Web(object):
- def get_binary(self, url, convert_404_to_None=False):
- return NetworkTransaction(convert_404_to_None=convert_404_to_None).run(lambda: urllib2.urlopen(url).read())
diff --git a/Tools/Scripts/webkitpy/common/net/web_mock.py b/Tools/Scripts/webkitpy/common/net/web_mock.py
deleted file mode 100644
index b53cb66ee..000000000
--- a/Tools/Scripts/webkitpy/common/net/web_mock.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2011 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.
-
-import StringIO
-
-
-class MockWeb(object):
- def __init__(self, urls=None):
- self.urls = urls or {}
- self.urls_fetched = []
-
- def get_binary(self, url, convert_404_to_None=False):
- self.urls_fetched.append(url)
- if url in self.urls:
- return self.urls[url]
- return "MOCK Web result, convert 404 to None=%s" % convert_404_to_None
-
-
-# FIXME: Classes which are using Browser probably want to use Web instead.
-class MockBrowser(object):
- params = {}
-
- def open(self, url):
- pass
-
- def select_form(self, name):
- pass
-
- def __setitem__(self, key, value):
- self.params[key] = value
-
- def submit(self):
- return StringIO.StringIO()
diff --git a/Tools/Scripts/webkitpy/common/newstringio.py b/Tools/Scripts/webkitpy/common/newstringio.py
deleted file mode 100644
index 7748d505d..000000000
--- a/Tools/Scripts/webkitpy/common/newstringio.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""'with'-compliant StringIO implementation."""
-
-import StringIO as OldStringIO
-
-
-class StringIO(OldStringIO.StringIO):
- def __enter__(self):
- return self
-
- def __exit__(self, type, value, traceback):
- pass
diff --git a/Tools/Scripts/webkitpy/common/newstringio_unittest.py b/Tools/Scripts/webkitpy/common/newstringio_unittest.py
deleted file mode 100644
index 670472204..000000000
--- a/Tools/Scripts/webkitpy/common/newstringio_unittest.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Unit tests for newstringio module."""
-
-import unittest2 as unittest
-
-import newstringio
-
-
-class NewStringIOTest(unittest.TestCase):
- def test_with(self):
- with newstringio.StringIO("foo") as f:
- contents = f.read()
- self.assertEqual(contents, "foo")
diff --git a/Tools/Scripts/webkitpy/common/prettypatch.py b/Tools/Scripts/webkitpy/common/prettypatch.py
deleted file mode 100644
index e8a913a41..000000000
--- a/Tools/Scripts/webkitpy/common/prettypatch.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (c) 2010 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.
-
-import os
-import tempfile
-
-
-class PrettyPatch(object):
- # FIXME: PrettyPatch should not require checkout_root.
- def __init__(self, executive, checkout_root):
- self._executive = executive
- self._checkout_root = checkout_root
-
- def pretty_diff_file(self, diff):
- # Diffs can contain multiple text files of different encodings
- # so we always deal with them as byte arrays, not unicode strings.
- assert(isinstance(diff, str))
- pretty_diff = self.pretty_diff(diff)
- diff_file = tempfile.NamedTemporaryFile(suffix=".html")
- diff_file.write(pretty_diff)
- diff_file.flush()
- return diff_file
-
- def pretty_diff(self, diff):
- # pretify.rb will hang forever if given no input.
- # Avoid the hang by returning an empty string.
- if not diff:
- return ""
-
- pretty_patch_path = os.path.join(self._checkout_root,
- "Websites", "bugs.webkit.org",
- "PrettyPatch")
- prettify_path = os.path.join(pretty_patch_path, "prettify.rb")
- args = [
- "ruby",
- "-I",
- pretty_patch_path,
- prettify_path,
- ]
- # PrettyPatch does not modify the encoding of the diff output
- # so we can't expect it to be utf-8.
- return self._executive.run_command(args, input=diff, decode_output=False)
diff --git a/Tools/Scripts/webkitpy/common/prettypatch_unittest.py b/Tools/Scripts/webkitpy/common/prettypatch_unittest.py
deleted file mode 100644
index 3ae1c43fa..000000000
--- a/Tools/Scripts/webkitpy/common/prettypatch_unittest.py
+++ /dev/null
@@ -1,88 +0,0 @@
-# Copyright (C) 2010 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.
-
-import os.path
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.prettypatch import PrettyPatch
-
-
-class PrettyPatchTest(unittest.TestCase):
- def check_ruby(self):
- executive = Executive()
- try:
- result = executive.run_command(['ruby', '--version'])
- except OSError, e:
- return False
- return True
-
- _diff_with_multiple_encodings = """
-Index: utf8_test
-===================================================================
---- utf8_test\t(revision 0)
-+++ utf8_test\t(revision 0)
-@@ -0,0 +1 @@
-+utf-8 test: \xc2\xa0
-Index: latin1_test
-===================================================================
---- latin1_test\t(revision 0)
-+++ latin1_test\t(revision 0)
-@@ -0,0 +1 @@
-+latin1 test: \xa0
-"""
-
- def _webkit_root(self):
- webkitpy_common = os.path.dirname(__file__)
- webkitpy = os.path.dirname(webkitpy_common)
- scripts = os.path.dirname(webkitpy)
- webkit_tools = os.path.dirname(scripts)
- webkit_root = os.path.dirname(webkit_tools)
- return webkit_root
-
- def test_pretty_diff_encodings(self):
- if not self.check_ruby():
- return
-
- if sys.platform == 'win32':
- # FIXME: disabled due to https://bugs.webkit.org/show_bug.cgi?id=93192
- return
-
- pretty_patch = PrettyPatch(Executive(), self._webkit_root())
- pretty = pretty_patch.pretty_diff(self._diff_with_multiple_encodings)
- self.assertTrue(pretty) # We got some output
- self.assertIsInstance(pretty, str) # It's a byte array, not unicode
-
- def test_pretty_print_empty_string(self):
- if not self.check_ruby():
- return
-
- # Make sure that an empty diff does not hang the process.
- pretty_patch = PrettyPatch(Executive(), self._webkit_root())
- self.assertEqual(pretty_patch.pretty_diff(""), "")
diff --git a/Tools/Scripts/webkitpy/common/read_checksum_from_png.py b/Tools/Scripts/webkitpy/common/read_checksum_from_png.py
deleted file mode 100644
index 7431f47a3..000000000
--- a/Tools/Scripts/webkitpy/common/read_checksum_from_png.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2011 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.
-
-
-def read_checksum(filehandle):
- # We expect the comment to be at the beginning of the file.
- data = filehandle.read(2048)
- comment_key = 'tEXtchecksum\x00'
- comment_pos = data.find(comment_key)
- if comment_pos == -1:
- return
-
- checksum_pos = comment_pos + len(comment_key)
- return data[checksum_pos:checksum_pos + 32]
diff --git a/Tools/Scripts/webkitpy/common/read_checksum_from_png_unittest.py b/Tools/Scripts/webkitpy/common/read_checksum_from_png_unittest.py
deleted file mode 100644
index 751f7af90..000000000
--- a/Tools/Scripts/webkitpy/common/read_checksum_from_png_unittest.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2011 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:
-#
-# 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 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 StringIO
-import unittest2 as unittest
-from webkitpy.common import read_checksum_from_png
-
-
-class ReadChecksumFromPngTest(unittest.TestCase):
- def test_read_checksum(self):
- # Test a file with the comment.
- filehandle = StringIO.StringIO('''\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x03 \x00\x00\x02X\x08\x02\x00\x00\x00\x15\x14\x15'\x00\x00\x00)tEXtchecksum\x003c4134fe2739880353f91c5b84cadbaaC\xb8?\xec\x00\x00\x16\xfeIDATx\x9c\xed\xdd[\x8cU\xe5\xc1\xff\xf15T\x18\x0ea,)\xa6\x80XZ<\x10\n\xd6H\xc4V\x88}\xb5\xa9\xd6r\xd5\x0bki0\xa6\xb5ih\xd2\xde\x98PHz\xd1\x02=\\q#\x01\x8b\xa5rJ\x8b\x88i\xacM\xc5h\x8cbMk(\x1ez@!\x0c\xd5\xd2\xc2\xb44\x1c\x848\x1dF(\xeb\x7f\xb1\xff\xd9\xef~g\xd6\xde3\xe0o\x10\xec\xe7sa6{\xd6z\xd6\xb3\xd7\xf3\xa8_7\xdbM[Y\x96\x05\x00\x009\xc3\xde\xeb\t\x00\x00\xbc\xdf\x08,\x00\x800\x81\x05\x00\x10&\xb0\x00\x00\xc2\x04\x16\x00@\x98\xc0\x02\x00\x08\x13X\x00\x00a\x02\x0b\x00 Lx01\x00\x84\t,\x00\x800\x81\x05\x00\x10\xd64\xb0\xda\x9a\xdb\xb6m\xdb\xb4i\xd3\xfa\x9fr\xf3\xcd7\x0f\xe5T\x07\xe5\xd4\xa9''')
- checksum = read_checksum_from_png.read_checksum(filehandle)
- self.assertEqual('3c4134fe2739880353f91c5b84cadbaa', checksum)
-
- # Test a file without the comment.
- filehandle = StringIO.StringIO('''\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x03 \x00\x00\x02X\x08\x02\x00\x00\x00\x15\x14\x15'\x00\x00\x16\xfeIDATx\x9c\xed\xdd[\x8cU\xe5\xc1\xff\xf15T\x18\x0ea,)\xa6\x80XZ<\x10\n\xd6H\xc4V\x88}\xb5\xa9\xd6r\xd5\x0bki0\xa6\xb5ih\xd2\xde\x98PHz\xd1\x02=\\q#\x01\x8b\xa5rJ\x8b\x88i\xacM\xc5h\x8cbMk(\x1ez@!\x0c\xd5\xd2\xc2\xb44\x1c\x848\x1dF(\xeb\x7f\xb1\xff\xd9\xef~g\xd6\xde3\xe0o\x10\xec\xe7sa6{\xd6z\xd6\xb3\xd7\xf3\xa8_7\xdbM[Y\x96\x05\x00\x009\xc3\xde\xeb\t\x00\x00\xbc\xdf\x08,\x00\x800\x81\x05\x00\x10&\xb0\x00\x00\xc2\x04\x16\x00@\x98\xc0\x02\x00\x08\x13X\x00\x00a\x02\x0b\x00 Lx01\x00\x84\t,\x00\x800\x81\x05\x00\x10\xd64\xb0\xda\x9a\xdb\xb6m\xdb\xb4i\xd3\xfa\x9fr\xf3\xcd7\x0f\xe5T\x07\xe5\xd4\xa9S\x8b\x17/\x1e?~\xfc\xf8\xf1\xe3\xef\xbf\xff\xfe\xf7z:M5\xbb\x87\x17\xcbUZ\x8f|V\xd7\xbd\x10\xb6\xcd{b\x88\xf6j\xb3\x9b?\x14\x9b\xa1>\xe6\xf9\xd9\xcf\x00\x17\x93''')
- checksum = read_checksum_from_png.read_checksum(filehandle)
- self.assertIsNone(checksum)
diff --git a/Tools/Scripts/webkitpy/common/system/__init__.py b/Tools/Scripts/webkitpy/common/system/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/system/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/system/autoinstall.py b/Tools/Scripts/webkitpy/common/system/autoinstall.py
deleted file mode 100644
index 2e15887bb..000000000
--- a/Tools/Scripts/webkitpy/common/system/autoinstall.py
+++ /dev/null
@@ -1,433 +0,0 @@
-# Copyright (c) 2009, Daniel Krech All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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 the Daniel Krech 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
-# HOLDER 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.
-
-"""Support for automatically downloading Python packages from an URL."""
-
-
-import codecs
-import logging
-import os
-import shutil
-import stat
-import sys
-import tarfile
-import tempfile
-import urllib2
-import urlparse
-import zipfile
-
-_log = logging.getLogger(__name__)
-
-
-class AutoInstaller(object):
-
- """Supports automatically installing Python packages from an URL.
-
- Supports uncompressed files, .tar.gz, and .zip formats.
-
- Basic usage:
-
- installer = AutoInstaller()
-
- installer.install(url="http://pypi.python.org/packages/source/p/pep8/pep8-0.5.0.tar.gz#md5=512a818af9979290cd619cce8e9c2e2b",
- url_subpath="pep8-0.5.0/pep8.py")
- installer.install(url="http://pypi.python.org/packages/source/m/mechanize/mechanize-0.2.4.zip",
- url_subpath="mechanize")
-
- """
-
- def __init__(self, append_to_search_path=False, make_package=True,
- target_dir=None, temp_dir=None):
- """Create an AutoInstaller instance, and set up the target directory.
-
- Args:
- append_to_search_path: A boolean value of whether to append the
- target directory to the sys.path search path.
- make_package: A boolean value of whether to make the target
- directory a package. This adds an __init__.py file
- to the target directory -- allowing packages and
- modules within the target directory to be imported
- explicitly using dotted module names.
- target_dir: The directory path to which packages should be installed.
- Defaults to a subdirectory of the folder containing
- this module called "autoinstalled".
- temp_dir: The directory path to use for any temporary files
- generated while downloading, unzipping, and extracting
- packages to install. Defaults to a standard temporary
- location generated by the tempfile module. This
- parameter should normally be used only for development
- testing.
-
- """
- if target_dir is None:
- this_dir = os.path.dirname(__file__)
- target_dir = os.path.join(this_dir, "autoinstalled")
-
- # Ensure that the target directory exists.
- self._set_up_target_dir(target_dir, append_to_search_path, make_package)
-
- self._target_dir = target_dir
- self._temp_dir = temp_dir
-
- def _write_file(self, path, text, encoding):
- with codecs.open(path, "w", encoding) as filehandle:
- filehandle.write(text)
-
- def _set_up_target_dir(self, target_dir, append_to_search_path,
- make_package):
- """Set up a target directory.
-
- Args:
- target_dir: The path to the target directory to set up.
- append_to_search_path: A boolean value of whether to append the
- target directory to the sys.path search path.
- make_package: A boolean value of whether to make the target
- directory a package. This adds an __init__.py file
- to the target directory -- allowing packages and
- modules within the target directory to be imported
- explicitly using dotted module names.
-
- """
- if not os.path.exists(target_dir):
- os.makedirs(target_dir)
-
- if append_to_search_path:
- sys.path.append(target_dir)
-
- if make_package:
- self._make_package(target_dir)
-
- def _make_package(self, target_dir):
- init_path = os.path.join(target_dir, "__init__.py")
- if not os.path.exists(init_path):
- text = ("# This file is required for Python to search this "
- "directory for modules.\n")
- self._write_file(init_path, text, "ascii")
-
- def _create_scratch_directory_inner(self, prefix):
- """Create a scratch directory without exception handling.
-
- Creates a scratch directory inside the AutoInstaller temp
- directory self._temp_dir, or inside a platform-dependent temp
- directory if self._temp_dir is None. Returns the path to the
- created scratch directory.
-
- Raises:
- OSError: [Errno 2] if the containing temp directory self._temp_dir
- is not None and does not exist.
-
- """
- # The tempfile.mkdtemp() method function requires that the
- # directory corresponding to the "dir" parameter already exist
- # if it is not None.
- scratch_dir = tempfile.mkdtemp(prefix=prefix.replace('/', '.'), dir=self._temp_dir)
- return scratch_dir
-
- def _create_scratch_directory(self, target_name):
- """Create a temporary scratch directory, and return its path.
-
- The scratch directory is generated inside the temp directory
- of this AutoInstaller instance. This method also creates the
- temp directory if it does not already exist.
-
- """
- prefix = target_name.replace(os.sep, "_") + "_"
- try:
- scratch_dir = self._create_scratch_directory_inner(prefix)
- except OSError:
- # Handle case of containing temp directory not existing--
- # OSError: [Errno 2] No such file or directory:...
- temp_dir = self._temp_dir
- if temp_dir is None or os.path.exists(temp_dir):
- raise
- # Else try again after creating the temp directory.
- os.makedirs(temp_dir)
- scratch_dir = self._create_scratch_directory_inner(prefix)
-
- return scratch_dir
-
- def _url_downloaded_path(self, target_name):
- return os.path.join(self._target_dir, ".%s.url" % target_name.replace('/', '_'))
-
- def _is_downloaded(self, target_name, url):
- version_path = self._url_downloaded_path(target_name)
-
- if not os.path.exists(version_path):
- return False
-
- with codecs.open(version_path, "r", "utf-8") as filehandle:
- return filehandle.read().strip() == url.strip()
-
- def _record_url_downloaded(self, target_name, url):
- version_path = self._url_downloaded_path(target_name)
- self._write_file(version_path, url, "utf-8")
-
- def _extract_targz(self, path, scratch_dir):
- # tarfile.extractall() extracts to a path without the trailing ".tar.gz".
- target_basename = os.path.basename(path[:-len(".tar.gz")])
- target_path = os.path.join(scratch_dir, target_basename)
-
- try:
- tar_file = tarfile.open(path)
- except tarfile.ReadError, err:
- # Append existing Error message to new Error.
- message = ("Could not open tar file: %s\n"
- " The file probably does not have the correct format.\n"
- " --> Inner message: %s"
- % (path, err))
- raise Exception(message)
-
- try:
- tar_file.extractall(target_path)
- finally:
- tar_file.close()
-
- return target_path
-
- # This is a replacement for ZipFile.extractall(), which is
- # available in Python 2.6 but not in earlier versions.
- # NOTE: The version in 2.6.1 (which shipped on Snow Leopard) is broken!
- def _extract_all(self, zip_file, target_dir):
- for name in zip_file.namelist():
- path = os.path.join(target_dir, name)
- if not os.path.basename(path):
- # Then the path ends in a slash, so it is a directory.
- os.makedirs(path)
- continue
-
- try:
- # We open this file w/o encoding, as we're reading/writing
- # the raw byte-stream from the zip file.
- outfile = open(path, 'wb')
- except IOError:
- # Not all zip files seem to list the directories explicitly,
- # so try again after creating the containing directory.
- _log.debug("Got IOError: retrying after creating directory...")
- dirname = os.path.dirname(path)
- os.makedirs(dirname)
- outfile = open(path, 'wb')
-
- try:
- outfile.write(zip_file.read(name))
- finally:
- outfile.close()
-
- def _unzip(self, path, scratch_dir):
- # zipfile.extractall() extracts to a path without the trailing ".zip".
- target_basename = os.path.basename(path[:-len(".zip")])
- target_path = os.path.join(scratch_dir, target_basename)
-
- try:
- zip_file = zipfile.ZipFile(path, "r")
- except zipfile.BadZipfile, err:
- message = ("Could not open zip file: %s\n"
- " --> Inner message: %s"
- % (path, err))
- raise Exception(message)
-
- try:
- self._extract_all(zip_file, scratch_dir)
- finally:
- zip_file.close()
-
- return target_path
-
- def _prepare_package(self, path, scratch_dir):
- """Prepare a package for use, if necessary, and return the new path.
-
- For example, this method unzips zipped files and extracts
- tar files.
-
- Args:
- path: The path to the downloaded URL contents.
- scratch_dir: The scratch directory. Note that the scratch
- directory contains the file designated by the
- path parameter.
-
- """
- # FIXME: Add other natural extensions.
- if path.endswith(".zip"):
- new_path = self._unzip(path, scratch_dir)
- elif path.endswith(".tar.gz"):
- new_path = self._extract_targz(path, scratch_dir)
- else:
- # No preparation is needed.
- new_path = path
-
- return new_path
-
- def _download_to_stream(self, url, stream):
- failures = 0
- while True:
- try:
- netstream = urllib2.urlopen(url)
- break
- except IOError, err:
- # Try multiple times
- if failures < 5:
- _log.warning("Failed to download %s, %s retrying" % (
- url, err))
- failures += 1
- continue
-
- # Append existing Error message to new Error.
- message = ('Could not download Python modules from URL "%s".\n'
- " Make sure you are connected to the internet.\n"
- " You must be connected to the internet when "
- "downloading needed modules for the first time.\n"
- " --> Inner message: %s"
- % (url, err))
- raise IOError(message)
- code = 200
- if hasattr(netstream, "getcode"):
- code = netstream.getcode()
- if not 200 <= code < 300:
- raise ValueError("HTTP Error code %s" % code)
-
- BUFSIZE = 2**13 # 8KB
- while True:
- data = netstream.read(BUFSIZE)
- if not data:
- break
- stream.write(data)
- netstream.close()
-
- def _download(self, url, scratch_dir):
- url_path = urlparse.urlsplit(url)[2]
- url_path = os.path.normpath(url_path) # Removes trailing slash.
- target_filename = os.path.basename(url_path)
- target_path = os.path.join(scratch_dir, target_filename)
-
- with open(target_path, "wb") as stream:
- self._download_to_stream(url, stream)
-
- return target_path
-
- def _install(self, scratch_dir, package_name, target_path, url, url_subpath, files_to_remove):
- """Install a python package from an URL.
-
- This internal method overwrites the target path if the target
- path already exists.
-
- """
- path = self._download(url=url, scratch_dir=scratch_dir)
- path = self._prepare_package(path, scratch_dir)
-
- if url_subpath is None:
- source_path = path
- else:
- source_path = os.path.join(path, url_subpath)
-
- for filename in files_to_remove:
- path = os.path.join(source_path, filename.replace('/', os.sep))
- if os.path.exists(path):
- # Pre-emptively change the permissions to #0777 to try and work around win32 permissions issues.
- os.chmod(path, stat.S_IRWXU | stat.S_IRWXG | stat.S_IRWXO)
- os.remove(path)
-
- if os.path.exists(target_path):
- if os.path.isdir(target_path):
- shutil.rmtree(target_path, ignore_errors=True)
- else:
- os.remove(target_path)
-
- # shutil.move() command creates intermediate directories if they do not exist.
- shutil.move(source_path, target_path)
-
- # ensure all the new directories are importable.
- intermediate_dirs = os.path.dirname(os.path.relpath(target_path, self._target_dir))
- parent_dirname = self._target_dir
- for dirname in intermediate_dirs.split(os.sep):
- parent_dirname = os.path.join(parent_dirname, dirname)
- self._make_package(parent_dirname)
-
- self._record_url_downloaded(package_name, url)
-
- def install(self, url, should_refresh=False, target_name=None,
- url_subpath=None, files_to_remove=None):
- """Install a python package from an URL.
-
- Args:
- url: The URL from which to download the package.
-
- Optional Args:
- should_refresh: A boolean value of whether the package should be
- downloaded again if the package is already present.
- target_name: The name of the folder or file in the autoinstaller
- target directory at which the package should be
- installed. Defaults to the base name of the
- URL sub-path. This parameter must be provided if
- the URL sub-path is not specified.
- url_subpath: The relative path of the URL directory that should
- be installed. Defaults to the full directory, or
- the entire URL contents.
-
- """
- if target_name is None:
- if not url_subpath:
- raise ValueError('The "target_name" parameter must be '
- 'provided if the "url_subpath" parameter '
- "is not provided.")
- # Remove any trailing slashes.
- url_subpath = os.path.normpath(url_subpath)
- target_name = os.path.basename(url_subpath)
-
- target_path = os.path.join(self._target_dir, target_name.replace('/', os.sep))
- if not should_refresh and self._is_downloaded(target_name, url):
- return False
-
- files_to_remove = files_to_remove or []
- package_name = target_name.replace(os.sep, '.')
- _log.info("Auto-installing package: %s" % package_name)
-
- # The scratch directory is where we will download and prepare
- # files specific to this install until they are ready to move
- # into place.
- scratch_dir = self._create_scratch_directory(target_name)
-
- try:
- self._install(package_name=package_name,
- target_path=target_path,
- scratch_dir=scratch_dir,
- url=url,
- url_subpath=url_subpath,
- files_to_remove=files_to_remove)
- except Exception, err:
- # Append existing Error message to new Error.
- message = ("Error auto-installing the %s package to:\n"
- ' "%s"\n'
- " --> Inner message: %s"
- % (target_name, target_path, err))
- raise Exception(message)
- finally:
- shutil.rmtree(scratch_dir, ignore_errors=True)
- _log.debug('Auto-installed %s to:' % url)
- _log.debug(' "%s"' % target_path)
- return True
diff --git a/Tools/Scripts/webkitpy/common/system/crashlogs.py b/Tools/Scripts/webkitpy/common/system/crashlogs.py
deleted file mode 100644
index 7ebe52241..000000000
--- a/Tools/Scripts/webkitpy/common/system/crashlogs.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (c) 2011, 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.
-
-import codecs
-import re
-
-
-class CrashLogs(object):
-
- PID_LINE_REGEX = re.compile(r'\s+Global\s+PID:\s+\[(?P<pid>\d+)\]')
-
- def __init__(self, host, results_directory=None):
- self._host = host
- self._results_directory = results_directory
-
- def find_newest_log(self, process_name, pid=None, include_errors=False, newer_than=None):
- if self._host.platform.is_mac():
- return self._find_newest_log_darwin(process_name, pid, include_errors, newer_than)
- elif self._host.platform.is_win():
- return self._find_newest_log_win(process_name, pid, include_errors, newer_than)
- return None
-
- def _log_directory_darwin(self):
- log_directory = self._host.filesystem.expanduser("~")
- log_directory = self._host.filesystem.join(log_directory, "Library", "Logs")
- if self._host.filesystem.exists(self._host.filesystem.join(log_directory, "DiagnosticReports")):
- log_directory = self._host.filesystem.join(log_directory, "DiagnosticReports")
- else:
- log_directory = self._host.filesystem.join(log_directory, "CrashReporter")
- return log_directory
-
- def _find_newest_log_darwin(self, process_name, pid, include_errors, newer_than):
- def is_crash_log(fs, dirpath, basename):
- return basename.startswith(process_name + "_") and basename.endswith(".crash")
-
- log_directory = self._log_directory_darwin()
- logs = self._host.filesystem.files_under(log_directory, file_filter=is_crash_log)
- first_line_regex = re.compile(r'^Process:\s+(?P<process_name>.*) \[(?P<pid>\d+)\]$')
- errors = ''
- for path in reversed(sorted(logs)):
- try:
- if not newer_than or self._host.filesystem.mtime(path) > newer_than:
- f = self._host.filesystem.read_text_file(path)
- match = first_line_regex.match(f[0:f.find('\n')])
- if match and match.group('process_name') == process_name and (pid is None or int(match.group('pid')) == pid):
- return errors + f
- except IOError, e:
- if include_errors:
- errors += "ERROR: Failed to read '%s': %s\n" % (path, str(e))
- except OSError, e:
- if include_errors:
- errors += "ERROR: Failed to read '%s': %s\n" % (path, str(e))
-
- if include_errors and errors:
- return errors
- return None
-
- def _find_newest_log_win(self, process_name, pid, include_errors, newer_than):
- def is_crash_log(fs, dirpath, basename):
- return basename.startswith("CrashLog")
-
- logs = self._host.filesystem.files_under(self._results_directory, file_filter=is_crash_log)
- errors = ''
- for path in reversed(sorted(logs)):
- try:
- if not newer_than or self._host.filesystem.mtime(path) > newer_than:
- log_file = self._host.filesystem.read_binary_file(path).decode('utf8', 'ignore')
- match = self.PID_LINE_REGEX.search(log_file)
- if match is None:
- continue
- if int(match.group('pid')) == pid:
- return errors + log_file
- except IOError, e:
- print "IOError %s" % str(e)
- if include_errors:
- errors += "ERROR: Failed to read '%s': %s\n" % (path, str(e))
- except OSError, e:
- print "OSError %s" % str(e)
- if include_errors:
- errors += "ERROR: Failed to read '%s': %s\n" % (path, str(e))
- except UnicodeDecodeError, e:
- print "UnicodeDecodeError %s" % str(e)
- if include_errors:
- errors += "ERROR: Failed to decode '%s' as utf8: %s\n" % (path, str(e))
-
- if include_errors and errors:
- return errors
- return None
diff --git a/Tools/Scripts/webkitpy/common/system/crashlogs_unittest.py b/Tools/Scripts/webkitpy/common/system/crashlogs_unittest.py
deleted file mode 100644
index 48034e806..000000000
--- a/Tools/Scripts/webkitpy/common/system/crashlogs_unittest.py
+++ /dev/null
@@ -1,316 +0,0 @@
-# Copyright (C) 2011 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:
-#
-# 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 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 unittest2 as unittest
-
-from webkitpy.common.system.crashlogs import CrashLogs
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.thirdparty.mock import Mock
-
-# Needed to support Windows port tests
-from webkitpy.port.win import WinPort
-
-def make_mock_crash_report_darwin(process_name, pid):
- return """Process: {process_name} [{pid}]
-Path: /Volumes/Data/slave/snowleopard-intel-release-tests/build/WebKitBuild/Release/{process_name}
-Identifier: {process_name}
-Version: ??? (???)
-Code Type: X86-64 (Native)
-Parent Process: Python [2578]
-
-Date/Time: 2011-12-07 13:27:34.816 -0800
-OS Version: Mac OS X 10.6.8 (10K549)
-Report Version: 6
-
-Interval Since Last Report: 1660 sec
-Crashes Since Last Report: 1
-Per-App Crashes Since Last Report: 1
-Anonymous UUID: 507D4EEB-9D70-4E2E-B322-2D2F0ABFEDC0
-
-Exception Type: EXC_BREAKPOINT (SIGTRAP)
-Exception Codes: 0x0000000000000002, 0x0000000000000000
-Crashed Thread: 0
-
-Dyld Error Message:
- Library not loaded: /Volumes/Data/WebKit-BuildSlave/snowleopard-intel-release/build/WebKitBuild/Release/WebCore.framework/Versions/A/WebCore
- Referenced from: /Volumes/Data/slave/snowleopard-intel-release/build/WebKitBuild/Release/WebKit.framework/Versions/A/WebKit
- Reason: image not found
-
-Binary Images:
- 0x7fff5fc00000 - 0x7fff5fc3be0f dyld 132.1 (???) <29DECB19-0193-2575-D838-CF743F0400B2> /usr/lib/dyld
-
-System Profile:
-Model: Xserve3,1, BootROM XS31.0081.B04, 8 processors, Quad-Core Intel Xeon, 2.26 GHz, 6 GB, SMC 1.43f4
-Graphics: NVIDIA GeForce GT 120, NVIDIA GeForce GT 120, PCIe, 256 MB
-Memory Module: global_name
-Network Service: Ethernet 2, Ethernet, en1
-PCI Card: NVIDIA GeForce GT 120, sppci_displaycontroller, MXM-Slot
-Serial ATA Device: OPTIARC DVD RW AD-5670S
-""".format(process_name=process_name, pid=pid)
-
-
-def make_mock_crash_report_win(process_name, pid):
- return """Opened log file 'C:\Projects\WebKit\OpenSource\WebKitBuild\Release\bin32\layout-test-results\CrashLog_1d58_2013-06-03_12-21-20-110.txt'
-0:000> .srcpath "C:\Projects\WebKit\OpenSource"
-Source search path is: C:\Projects\WebKit\OpenSource
-0:000> !analyze -vv
-*******************************************************************************
-* *
-* Exception Analysis *
-* *
-*******************************************************************************
-
-*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Projects\WebKit\OpenSource\WebKitBuild\Release\bin32\libdispatch.dll -
-*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\Windows\SYSTEM32\atiumdag.dll -
-
-FAULTING_IP:
-JavaScriptCore!JSC::JSActivation::getOwnPropertySlot+0 [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsactivation.cpp @ 146]
-01e3d070 55 push ebp
-
-EXCEPTION_RECORD: 00092cc8 -- (.exr 0x92cc8)
-.exr 0x92cc8
-ExceptionAddress: 01e3d070 (JavaScriptCore!JSC::JSActivation::getOwnPropertySlot)
- ExceptionCode: c00000fd (Stack overflow)
- ExceptionFlags: 00000000
-NumberParameters: 2
- Parameter[0]: 00000001
- Parameter[1]: 00092ffc
-
-FAULTING_THREAD: 00000e68
-PROCESS_NAME: {process_name}
-ERROR_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
-EXCEPTION_CODE: (NTSTATUS) 0xc0000005 - The instruction at 0x%08lx referenced memory at 0x%08lx. The memory could not be %s.
-EXCEPTION_CODE_STR: c0000005
-EXCEPTION_PARAMETER1: 00000000
-EXCEPTION_PARAMETER2: 00090000
-READ_ADDRESS: 00090000
-
-FOLLOWUP_IP:
-JavaScriptCore!JSC::JSActivation::getOwnPropertySlot+0 [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsactivation.cpp @ 146]
-01e3d070 55 push ebp
-
-WATSON_BKT_PROCSTAMP: 51a8f979
-WATSON_BKT_MODULE: MSVCR100.dll
-WATSON_BKT_MODVER: 10.0.40219.325
-WATSON_BKT_MODSTAMP: 4df2be1e
-WATSON_BKT_MODOFFSET: 160d7
-MODULE_VER_PRODUCT: Microsoft(R) Visual Studio(R) 2010
-BUILD_VERSION_STRING: 6.2.9200.16384 (win8_rtm.120725-1247)
-NTGLOBALFLAG: 0
-APPLICATION_VERIFIER_FLAGS: 0
-APP: {process_name}
-
-ANALYSIS_SESSION_HOST: FULGBR-PC
-
-ANALYSIS_SESSION_TIME: 06-03-2013 12:21:20.0111
-
-CONTEXT: 00092d18 -- (.cxr 0x92d18)
-.cxr 0x92d18
-eax=01e3d070 ebx=000930bc ecx=7fe03ed0 edx=0751e168 esi=07a7ff98 edi=0791ff78
-eip=01e3d070 esp=00093000 ebp=0009306c iopl=0 nv up ei ng nz ac po cy
-cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00210293
-JavaScriptCore!JSC::JSActivation::getOwnPropertySlot:
-01e3d070 55 push ebp
-.cxr
-Resetting default scope
-
-RECURRING_STACK: From frames 0x14 to 0x1d
-
-THREAD_ATTRIBUTES:
-
-[ GLOBAL ]
-
- Global PID: [{pid}]
- Global Thread_Count: [19]
- Global PageSize: [4096]
- Global ModList_SHA1_Hash: [aacef4e7e83b9bddc9cd0cc094dac88d531ea4a3]
- Global CommandLine: [C:\Projects\WebKit\OpenSource\WebKitBuild\Release\bin32\{process_name} -]
- Global Desktop_Name: [Winsta0\Default]
- Global ProcessName: [{process_name}]
- Global Debugger_CPU_Architecture: [X86]
- Global CPU_ProcessorCount: [24]
- Global CPU_MHZ: [1596]
- Global CPU_Architecture: [X86]
- Global CPU_Family: [6]
- Global CPU_Model: [12]
- Global CPU_Stepping: [2]
- Global CPU_VendorString: [GenuineIntel]
- Global LoadedModule_Count: [82]
- Global ProcessBeingDebugged
- Global GFlags: [0]
- Global Application_Verifer_Flags: [0]
- Global FinalExh: [2012093943]
- Global SystemUpTime: [3 days 23:52:56.000]
- Global SystemUpTime: [345176]
- Global ProcessUpTime: [0 days 0:00:00.000]
- Global ProcessUpTime: [0]
- Global CurrentTimeDate: [Mon Jun 3 12:21:20.000 2013 (UTC - 7:00)]
- Global CurrentTimeDate: [1370287280]
- Global ProductType: [1]
- Global SuiteMask: [272]
- Global ApplicationName: [{process_name}]
- Global ASLR_Enabled
- Global SafeSEH_Enabled
-
-FAULT_INSTR_CODE: 83ec8b55
-
-FAULTING_SOURCE_LINE: c:\projects\webkit\opensource\source\javascriptcore\runtime\jsactivation.cpp
-
-FAULTING_SOURCE_FILE: c:\projects\webkit\opensource\source\javascriptcore\runtime\jsactivation.cpp
-
-FAULTING_SOURCE_LINE_NUMBER: 146
-
-SYMBOL_STACK_INDEX: 0
-
-SYMBOL_NAME: javascriptcore!JSC::JSActivation::getOwnPropertySlot+92ffc
-
-FOLLOWUP_NAME: MachineOwner
-
-MODULE_NAME: JavaScriptCore
-
-IMAGE_NAME: JavaScriptCore.dll
-
-DEBUG_FLR_IMAGE_TIMESTAMP: 51ace473
-
-STACK_COMMAND: .cxr 00092D18 ; kb ; dps 93000 ; kb
-
-FAILURE_BUCKET_ID: STACK_OVERFLOW_c0000005_JavaScriptCore.dll!JSC::JSActivation::getOwnPropertySlot
-
-BUCKET_ID: APPLICATION_FAULT_STACK_OVERFLOW_INVALID_POINTER_READ_javascriptcore!JSC::JSActivation::getOwnPropertySlot+92ffc
-
-ANALYSIS_SESSION_ELAPSED_TIME: 18df
-
-Followup: MachineOwner
----------
-
-0:000> ~*kpn
-
-. 0 Id: 18e0.e68 Suspend: 1 Teb: 7ffdd000 Unfrozen
- # ChildEBP RetAddr
-00 00092a08 7261ece1 MSVCR100!_alloca_probe+0x27
-01 00092a4c 7261a5d0 MSVCR100!_write+0x95
-02 00092a6c 7261ef6b MSVCR100!_flush+0x3b
-03 00092a7c 7261ef1c MSVCR100!_fflush_nolock+0x1c
-04 00092ab4 1000f814 MSVCR100!fflush+0x30
-05 00092ac8 77c0084e DumpRenderTree_10000000!exceptionFilter(struct _EXCEPTION_POINTERS * __formal = 0x852ac807)+0x24 [c:\projects\webkit\opensource\tools\dumprendertree\win\dumprendertree.cpp @ 1281]
-06 00092b60 77e8bf2c KERNELBASE!UnhandledExceptionFilter+0x164
-07 00092b68 77e530b4 ntdll!__RtlUserThreadStart+0x57
-08 00092b7c 77e15246 ntdll!_EH4_CallFilterFunc+0x12
-09 00092ba4 77e151b1 ntdll!_except_handler4_common+0x8e
-0a 00092bc4 77e52e71 ntdll!_except_handler4+0x20
-0b 00092be8 77e52e43 ntdll!ExecuteHandler2+0x26
-0c 00092cb0 77e52cbb ntdll!ExecuteHandler+0x24
-0d 00092cb0 01e3d070 ntdll!KiUserExceptionDispatcher+0xf
-0e 00092ffc 01e67d25 JavaScriptCore!JSC::JSActivation::getOwnPropertySlot(class JSC::JSCell * cell = 0x07a7ff98, class JSC::ExecState * exec = 0x0751e168, class JSC::PropertyName propertyName = class JSC::PropertyName, class JSC::PropertySlot * slot = 0x000930bc) [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsactivation.cpp @ 146]
-0f 0009306c 01e68837 JavaScriptCore!JSC::JSScope::resolveContainingScopeInternal<1,2>(class JSC::ExecState * callFrame = 0x0751e168, class JSC::Identifier * identifier = 0x7fe0ebc0, class JSC::PropertySlot * slot = 0x7fe03ed0, class WTF::Vector<JSC::ResolveOperation,0,WTF::CrashOnOverflow> * operations = 0x7fda16c0, struct JSC::PutToBaseOperation * putToBaseOperation = 0x00000000, bool __formal = false)+0x205 [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsscope.cpp @ 247]
-10 00093090 01e65860 JavaScriptCore!JSC::JSScope::resolveContainingScope<1>(class JSC::ExecState * callFrame = 0x0751e168, class JSC::Identifier * identifier = 0x7fe0ebc0, class JSC::PropertySlot * slot = 0x000930bc, class WTF::Vector<JSC::ResolveOperation,0,WTF::CrashOnOverflow> * operations = 0x7fda16c0, struct JSC::PutToBaseOperation * putToBaseOperation = 0x00000000, bool isStrict = false)+0x27 [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsscope.cpp @ 427]
-11 00093104 01dceeff JavaScriptCore!JSC::JSScope::resolve(class JSC::ExecState * callFrame = 0x0751e168, class JSC::Identifier * identifier = 0x7fe0ebc0, class WTF::Vector<JSC::ResolveOperation,0,WTF::CrashOnOverflow> * operations = 0x7fda16c0)+0xc0 [c:\projects\webkit\opensource\source\javascriptcore\runtime\jsscope.cpp @ 447]
-
-0:000> q
-quit:
-""".format(process_name=process_name, pid=pid)
-
-class CrashLogsTest(unittest.TestCase):
- def test_find_log_darwin(self):
- if not SystemHost().platform.is_mac():
- return
-
- older_mock_crash_report = make_mock_crash_report_darwin('DumpRenderTree', 28528)
- mock_crash_report = make_mock_crash_report_darwin('DumpRenderTree', 28530)
- newer_mock_crash_report = make_mock_crash_report_darwin('DumpRenderTree', 28529)
- other_process_mock_crash_report = make_mock_crash_report_darwin('FooProcess', 28527)
- misformatted_mock_crash_report = 'Junk that should not appear in a crash report' + make_mock_crash_report_darwin('DumpRenderTree', 28526)[200:]
- files = {}
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150718_quadzen.crash'] = older_mock_crash_report
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150719_quadzen.crash'] = mock_crash_report
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150720_quadzen.crash'] = newer_mock_crash_report
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150721_quadzen.crash'] = None
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150722_quadzen.crash'] = other_process_mock_crash_report
- files['/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150723_quadzen.crash'] = misformatted_mock_crash_report
- filesystem = MockFileSystem(files)
- crash_logs = CrashLogs(MockSystemHost(filesystem=filesystem))
- log = crash_logs.find_newest_log("DumpRenderTree")
- self.assertMultiLineEqual(log, newer_mock_crash_report)
- log = crash_logs.find_newest_log("DumpRenderTree", 28529)
- self.assertMultiLineEqual(log, newer_mock_crash_report)
- log = crash_logs.find_newest_log("DumpRenderTree", 28530)
- self.assertMultiLineEqual(log, mock_crash_report)
- log = crash_logs.find_newest_log("DumpRenderTree", 28531)
- self.assertIsNone(log)
- log = crash_logs.find_newest_log("DumpRenderTree", newer_than=1.0)
- self.assertIsNone(log)
-
- def bad_read(path):
- raise IOError('IOError: No such file or directory')
-
- def bad_mtime(path):
- raise OSError('OSError: No such file or directory')
-
- filesystem.read_text_file = bad_read
- log = crash_logs.find_newest_log("DumpRenderTree", 28531, include_errors=True)
- self.assertIn('IOError: No such file or directory', log)
-
- filesystem = MockFileSystem(files)
- crash_logs = CrashLogs(MockSystemHost(filesystem=filesystem))
- filesystem.mtime = bad_mtime
- log = crash_logs.find_newest_log("DumpRenderTree", newer_than=1.0, include_errors=True)
- self.assertIn('OSError: No such file or directory', log)
-
- def test_find_log_win(self):
- if not SystemHost().platform.is_win():
- return
-
- older_mock_crash_report = make_mock_crash_report_win('DumpRenderTree', 28528)
- mock_crash_report = make_mock_crash_report_win('DumpRenderTree', 28530)
- newer_mock_crash_report = make_mock_crash_report_win('DumpRenderTree', 28529)
- other_process_mock_crash_report = make_mock_crash_report_win('FooProcess', 28527)
- misformatted_mock_crash_report = 'Junk that should not appear in a crash report' + make_mock_crash_report_win('DumpRenderTree', 28526)[200:]
- files = {}
- files['~/CrashLog_1d58_2013-06-03_12-21-20-110.txt'] = older_mock_crash_report
- files['~/CrashLog_abcd_2013-06-03_12-22-19-129.txt'] = mock_crash_report
- files['~/CrashLog_2eff_2013-06-03_12-23-20-150.txt'] = newer_mock_crash_report
- files['~/CrashLog_31a0_2013-06-03_12-24-22-119.txt'] = None
- files['~/CrashLog_01a3_2013-06-03_12-25-23-120.txt'] = other_process_mock_crash_report
- files['~/CrashLog_aadd_2013-06-03_12-26-24-121.txt'] = misformatted_mock_crash_report
- filesystem = MockFileSystem(files)
- mock_host = MockSystemHost(os_name='win', filesystem=filesystem)
- crash_logs = CrashLogs(mock_host, "~")
-
- log = crash_logs.find_newest_log("DumpRenderTree", 28529)
- self.assertMultiLineEqual(log, newer_mock_crash_report)
- log = crash_logs.find_newest_log("DumpRenderTree", 28530)
- self.assertMultiLineEqual(log, mock_crash_report)
- log = crash_logs.find_newest_log("DumpRenderTree", 28531)
- self.assertIsNone(log)
- log = crash_logs.find_newest_log("DumpRenderTree", newer_than=1.0)
- self.assertIsNone(log)
-
- def bad_read(path):
- raise IOError('IOError: No such file or directory')
-
- filesystem.read_text_file = bad_read
- filesystem.read_binary_file = bad_read
- log = crash_logs.find_newest_log("DumpRenderTree", 28531, include_errors=True)
- self.assertIn('IOError: No such file or directory', log)
diff --git a/Tools/Scripts/webkitpy/common/system/environment.py b/Tools/Scripts/webkitpy/common/system/environment.py
deleted file mode 100644
index cd340489e..000000000
--- a/Tools/Scripts/webkitpy/common/system/environment.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class Environment(object):
- def __init__(self, env=None):
- self.env = env or {}
-
- def to_dictionary(self):
- return self.env
-
- def disable_gcc_smartquotes(self):
- # Technically we only need to set LC_CTYPE to disable current
- # smartquote behavior: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38363
- # Apple's XCode sets LC_ALL instead, probably to be future-proof.
- self.env['LC_ALL'] = 'C'
diff --git a/Tools/Scripts/webkitpy/common/system/environment_unittest.py b/Tools/Scripts/webkitpy/common/system/environment_unittest.py
deleted file mode 100644
index 2868a65d2..000000000
--- a/Tools/Scripts/webkitpy/common/system/environment_unittest.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-
-from .environment import Environment
-
-
-class EnvironmentTest(unittest.TestCase):
- def test_disable_gcc_smartquotes(self):
- environment = Environment({})
- environment.disable_gcc_smartquotes()
- env = environment.to_dictionary()
- self.assertEqual(env['LC_ALL'], 'C')
diff --git a/Tools/Scripts/webkitpy/common/system/executive.py b/Tools/Scripts/webkitpy/common/system/executive.py
deleted file mode 100644
index ca45f2f35..000000000
--- a/Tools/Scripts/webkitpy/common/system/executive.py
+++ /dev/null
@@ -1,522 +0,0 @@
-# Copyright (c) 2009, Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import errno
-import logging
-import multiprocessing
-import os
-import StringIO
-import signal
-import subprocess
-import sys
-import time
-
-from webkitpy.common.system.outputtee import Tee
-from webkitpy.common.system.filesystem import FileSystem
-
-
-_log = logging.getLogger(__name__)
-
-
-class ScriptError(Exception):
-
- def __init__(self,
- message=None,
- script_args=None,
- exit_code=None,
- output=None,
- cwd=None):
- if not message:
- message = 'Failed to run "%s"' % repr(script_args)
- if exit_code:
- message += " exit_code: %d" % exit_code
- if cwd:
- message += " cwd: %s" % cwd
-
- Exception.__init__(self, message)
- self.script_args = script_args # 'args' is already used by Exception
- self.exit_code = exit_code
- self.output = output
- self.cwd = cwd
-
- def message_with_output(self, output_limit=500):
- if self.output:
- if output_limit and len(self.output) > output_limit:
- return u"%s\n\nLast %s characters of output:\n%s" % \
- (self, output_limit, self.output[-output_limit:])
- return u"%s\n\n%s" % (self, self.output)
- return unicode(self)
-
- def command_name(self):
- command_path = self.script_args
- if type(command_path) is list:
- command_path = command_path[0]
- return os.path.basename(command_path)
-
-
-class Executive(object):
- PIPE = subprocess.PIPE
- STDOUT = subprocess.STDOUT
-
- def __init__(self):
- self.pid_to_system_pid = {}
-
- def _should_close_fds(self):
- # We need to pass close_fds=True to work around Python bug #2320
- # (otherwise we can hang when we kill DumpRenderTree when we are running
- # multiple threads). See http://bugs.python.org/issue2320 .
- # Note that close_fds isn't supported on Windows, but this bug only
- # shows up on Mac and Linux.
- return sys.platform not in ('win32', 'cygwin')
-
- def _run_command_with_teed_output(self, args, teed_output, **kwargs):
- child_process = self.popen(args,
- stdout=self.PIPE,
- stderr=self.STDOUT,
- close_fds=self._should_close_fds(),
- **kwargs)
-
- # Use our own custom wait loop because Popen ignores a tee'd
- # stderr/stdout.
- # FIXME: This could be improved not to flatten output to stdout.
- while True:
- output_line = child_process.stdout.readline()
- if output_line == "" and child_process.poll() != None:
- # poll() is not threadsafe and can throw OSError due to:
- # http://bugs.python.org/issue1731717
- return child_process.poll()
- # We assume that the child process wrote to us in utf-8,
- # so no re-encoding is necessary before writing here.
- teed_output.write(output_line)
-
- # FIXME: Remove this deprecated method and move callers to run_command.
- # FIXME: This method is a hack to allow running command which both
- # capture their output and print out to stdin. Useful for things
- # like "build-webkit" where we want to display to the user that we're building
- # but still have the output to stuff into a log file.
- def run_and_throw_if_fail(self, args, quiet=False, decode_output=True, **kwargs):
- # Cache the child's output locally so it can be used for error reports.
- child_out_file = StringIO.StringIO()
- tee_stdout = sys.stdout
- if quiet:
- dev_null = open(os.devnull, "w") # FIXME: Does this need an encoding?
- tee_stdout = dev_null
- child_stdout = Tee(child_out_file, tee_stdout)
- exit_code = self._run_command_with_teed_output(args, child_stdout, **kwargs)
- if quiet:
- dev_null.close()
-
- child_output = child_out_file.getvalue()
- child_out_file.close()
-
- if decode_output:
- child_output = child_output.decode(self._child_process_encoding())
-
- if exit_code:
- raise ScriptError(script_args=args,
- exit_code=exit_code,
- output=child_output)
- return child_output
-
- def cpu_count(self):
- try:
- cpus = int(os.environ.get('NUMBER_OF_PROCESSORS'))
- if cpus > 0:
- return cpus
- except (ValueError, TypeError):
- pass
- return multiprocessing.cpu_count()
-
- @staticmethod
- def interpreter_for_script(script_path, fs=None):
- fs = fs or FileSystem()
- lines = fs.read_text_file(script_path).splitlines()
- if not len(lines):
- return None
- first_line = lines[0]
- if not first_line.startswith('#!'):
- return None
- if first_line.find('python') > -1:
- return sys.executable
- if first_line.find('perl') > -1:
- return 'perl'
- if first_line.find('ruby') > -1:
- return 'ruby'
- return None
-
- @staticmethod
- def shell_command_for_script(script_path, fs=None):
- fs = fs or FileSystem()
- # Win32 does not support shebang. We need to detect the interpreter ourself.
- if sys.platform == 'win32':
- interpreter = Executive.interpreter_for_script(script_path, fs)
- if interpreter:
- return [interpreter, script_path]
- return [script_path]
-
- def kill_process(self, pid):
- """Attempts to kill the given pid.
- Will fail silently if pid does not exist or insufficient permisssions."""
- if sys.platform == "win32":
- # We only use taskkill.exe on windows (not cygwin) because subprocess.pid
- # is a CYGWIN pid and taskkill.exe expects a windows pid.
- # Thankfully os.kill on CYGWIN handles either pid type.
- command = ["taskkill.exe", "/f", "/pid", pid]
- # taskkill will exit 128 if the process is not found. We should log.
- self.run_command(command, error_handler=self.ignore_error)
- return
-
- # According to http://docs.python.org/library/os.html
- # os.kill isn't available on Windows. python 2.5.5 os.kill appears
- # to work in cygwin, however it occasionally raises EAGAIN.
- retries_left = 10 if sys.platform == "cygwin" else 1
- while retries_left > 0:
- try:
- retries_left -= 1
- os.kill(pid, signal.SIGKILL)
- _ = os.waitpid(pid, os.WNOHANG)
- except OSError, e:
- if e.errno == errno.EAGAIN:
- if retries_left <= 0:
- _log.warn("Failed to kill pid %s. Too many EAGAIN errors." % pid)
- continue
- if e.errno == errno.ESRCH: # The process does not exist.
- return
- if e.errno == errno.EPIPE: # The process has exited already on cygwin
- return
- if e.errno == errno.ECHILD:
- # Can't wait on a non-child process, but the kill worked.
- return
- if e.errno == errno.EACCES and sys.platform == 'cygwin':
- # Cygwin python sometimes can't kill native processes.
- return
- raise
-
- def _win32_check_running_pid(self, pid):
- # importing ctypes at the top-level seems to cause weird crashes at
- # exit under cygwin on apple's win port. Only win32 needs cygwin, so
- # we import it here instead. See https://bugs.webkit.org/show_bug.cgi?id=91682
- import ctypes
-
- class PROCESSENTRY32(ctypes.Structure):
- _fields_ = [("dwSize", ctypes.c_ulong),
- ("cntUsage", ctypes.c_ulong),
- ("th32ProcessID", ctypes.c_ulong),
- ("th32DefaultHeapID", ctypes.POINTER(ctypes.c_ulong)),
- ("th32ModuleID", ctypes.c_ulong),
- ("cntThreads", ctypes.c_ulong),
- ("th32ParentProcessID", ctypes.c_ulong),
- ("pcPriClassBase", ctypes.c_ulong),
- ("dwFlags", ctypes.c_ulong),
- ("szExeFile", ctypes.c_char * 260)]
-
- CreateToolhelp32Snapshot = ctypes.windll.kernel32.CreateToolhelp32Snapshot
- Process32First = ctypes.windll.kernel32.Process32First
- Process32Next = ctypes.windll.kernel32.Process32Next
- CloseHandle = ctypes.windll.kernel32.CloseHandle
- TH32CS_SNAPPROCESS = 0x00000002 # win32 magic number
- hProcessSnap = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0)
- pe32 = PROCESSENTRY32()
- pe32.dwSize = ctypes.sizeof(PROCESSENTRY32)
- result = False
- if not Process32First(hProcessSnap, ctypes.byref(pe32)):
- _log.debug("Failed getting first process.")
- CloseHandle(hProcessSnap)
- return result
- while True:
- if pe32.th32ProcessID == pid:
- result = True
- break
- if not Process32Next(hProcessSnap, ctypes.byref(pe32)):
- break
- CloseHandle(hProcessSnap)
- return result
-
- def check_running_pid(self, pid):
- """Return True if pid is alive, otherwise return False."""
- if sys.platform == 'win32':
- return self._win32_check_running_pid(pid)
-
- try:
- os.kill(pid, 0)
- return True
- except OSError:
- return False
-
- def running_pids(self, process_name_filter=None):
- if sys.platform == "win32":
- # FIXME: running_pids isn't implemented on native Windows yet...
- return []
-
- if not process_name_filter:
- process_name_filter = lambda process_name: True
-
- running_pids = []
- if sys.platform in ("cygwin"):
- ps_process = self.run_command(['ps', '-e'], error_handler=Executive.ignore_error)
- for line in ps_process.splitlines():
- tokens = line.strip().split()
- try:
- pid, ppid, pgid, winpid, tty, uid, stime, process_name = tokens
- if process_name_filter(process_name):
- running_pids.append(int(pid))
- self.pid_to_system_pid[int(pid)] = int(winpid)
- except ValueError, e:
- pass
- else:
- ps_process = self.popen(['ps', '-eo', 'pid,comm'], stdout=self.PIPE, stderr=self.PIPE)
- stdout, _ = ps_process.communicate()
- for line in stdout.splitlines():
- try:
- # In some cases the line can contain one or more
- # leading white-spaces, so strip it before split.
- pid, process_name = line.strip().split(' ', 1)
- if process_name_filter(process_name):
- running_pids.append(int(pid))
- except ValueError, e:
- pass
-
- return sorted(running_pids)
-
- def wait_newest(self, process_name_filter=None):
- if not process_name_filter:
- process_name_filter = lambda process_name: True
-
- running_pids = self.running_pids(process_name_filter)
- if not running_pids:
- return
- pid = running_pids[-1]
-
- while self.check_running_pid(pid):
- time.sleep(0.25)
-
- def wait_limited(self, pid, limit_in_seconds=None, check_frequency_in_seconds=None):
- seconds_left = limit_in_seconds or 10
- sleep_length = check_frequency_in_seconds or 1
- while seconds_left > 0 and self.check_running_pid(pid):
- seconds_left -= sleep_length
- time.sleep(sleep_length)
-
- def _windows_image_name(self, process_name):
- name, extension = os.path.splitext(process_name)
- if not extension:
- # taskkill expects processes to end in .exe
- # If necessary we could add a flag to disable appending .exe.
- process_name = "%s.exe" % name
- return process_name
-
- def interrupt(self, pid):
- interrupt_signal = signal.SIGINT
- # FIXME: The python docs seem to imply that platform == 'win32' may need to use signal.CTRL_C_EVENT
- # http://docs.python.org/2/library/signal.html
- try:
- os.kill(pid, interrupt_signal)
- except OSError:
- # Silently ignore when the pid doesn't exist.
- # It's impossible for callers to avoid race conditions with process shutdown.
- pass
-
- def kill_all(self, process_name):
- """Attempts to kill processes matching process_name.
- Will fail silently if no process are found."""
- if sys.platform in ("win32", "cygwin"):
- image_name = self._windows_image_name(process_name)
- command = ["taskkill.exe", "/f", "/im", image_name]
- # taskkill will exit 128 if the process is not found. We should log.
- self.run_command(command, error_handler=self.ignore_error)
- return
-
- # FIXME: This is inconsistent that kill_all uses TERM and kill_process
- # uses KILL. Windows is always using /f (which seems like -KILL).
- # We should pick one mode, or add support for switching between them.
- # Note: Mac OS X 10.6 requires -SIGNALNAME before -u USER
- command = ["killall", "-TERM", "-u", os.getenv("USER"), process_name]
- # killall returns 1 if no process can be found and 2 on command error.
- # FIXME: We should pass a custom error_handler to allow only exit_code 1.
- # We should log in exit_code == 1
- self.run_command(command, error_handler=self.ignore_error)
-
- # Error handlers do not need to be static methods once all callers are
- # updated to use an Executive object.
-
- @staticmethod
- def default_error_handler(error):
- raise error
-
- @staticmethod
- def ignore_error(error):
- pass
-
- def _compute_stdin(self, input):
- """Returns (stdin, string_to_communicate)"""
- # FIXME: We should be returning /dev/null for stdin
- # or closing stdin after process creation to prevent
- # child processes from getting input from the user.
- if not input:
- return (None, None)
- if hasattr(input, "read"): # Check if the input is a file.
- return (input, None) # Assume the file is in the right encoding.
-
- # Popen in Python 2.5 and before does not automatically encode unicode objects.
- # http://bugs.python.org/issue5290
- # See https://bugs.webkit.org/show_bug.cgi?id=37528
- # for an example of a regresion caused by passing a unicode string directly.
- # FIXME: We may need to encode differently on different platforms.
- if isinstance(input, unicode):
- input = input.encode(self._child_process_encoding())
- return (self.PIPE, input)
-
- def command_for_printing(self, args):
- """Returns a print-ready string representing command args.
- The string should be copy/paste ready for execution in a shell."""
- args = self._stringify_args(args)
- escaped_args = []
- for arg in args:
- if isinstance(arg, unicode):
- # Escape any non-ascii characters for easy copy/paste
- arg = arg.encode("unicode_escape")
- # FIXME: Do we need to fix quotes here?
- escaped_args.append(arg)
- return " ".join(escaped_args)
-
- # FIXME: run_and_throw_if_fail should be merged into this method.
- def run_command(self,
- args,
- cwd=None,
- env=None,
- input=None,
- error_handler=None,
- return_exit_code=False,
- return_stderr=True,
- decode_output=True):
- """Popen wrapper for convenience and to work around python bugs."""
- assert(isinstance(args, list) or isinstance(args, tuple))
- start_time = time.time()
-
- stdin, string_to_communicate = self._compute_stdin(input)
- stderr = self.STDOUT if return_stderr else None
-
- process = self.popen(args,
- stdin=stdin,
- stdout=self.PIPE,
- stderr=stderr,
- cwd=cwd,
- env=env,
- close_fds=self._should_close_fds())
- output = process.communicate(string_to_communicate)[0]
-
- # run_command automatically decodes to unicode() unless explicitly told not to.
- if decode_output:
- output = output.decode(self._child_process_encoding())
-
- # wait() is not threadsafe and can throw OSError due to:
- # http://bugs.python.org/issue1731717
- exit_code = process.wait()
-
- _log.debug('"%s" took %.2fs' % (self.command_for_printing(args), time.time() - start_time))
-
- if return_exit_code:
- return exit_code
-
- if exit_code:
- script_error = ScriptError(script_args=args,
- exit_code=exit_code,
- output=output,
- cwd=cwd)
- (error_handler or self.default_error_handler)(script_error)
- return output
-
- def _child_process_encoding(self):
- # Win32 Python 2.x uses CreateProcessA rather than CreateProcessW
- # to launch subprocesses, so we have to encode arguments using the
- # current code page.
- if sys.platform == 'win32' and sys.version < '3':
- return 'mbcs'
- # All other platforms use UTF-8.
- # FIXME: Using UTF-8 on Cygwin will confuse Windows-native commands
- # which will expect arguments to be encoded using the current code
- # page.
- return 'utf-8'
-
- def _should_encode_child_process_arguments(self):
- # Cygwin's Python's os.execv doesn't support unicode command
- # arguments, and neither does Cygwin's execv itself.
- if sys.platform == 'cygwin':
- return True
-
- # Win32 Python 2.x uses CreateProcessA rather than CreateProcessW
- # to launch subprocesses, so we have to encode arguments using the
- # current code page.
- if sys.platform == 'win32' and sys.version < '3':
- return True
-
- return False
-
- def _encode_argument_if_needed(self, argument):
- if not self._should_encode_child_process_arguments():
- return argument
- return argument.encode(self._child_process_encoding())
-
- def _stringify_args(self, args):
- # Popen will throw an exception if args are non-strings (like int())
- string_args = map(unicode, args)
- # The Windows implementation of Popen cannot handle unicode strings. :(
- return map(self._encode_argument_if_needed, string_args)
-
- # The only required arugment to popen is named "args", the rest are optional keyword arguments.
- def popen(self, args, **kwargs):
- # FIXME: We should always be stringifying the args, but callers who pass shell=True
- # expect that the exact bytes passed will get passed to the shell (even if they're wrongly encoded).
- # shell=True is wrong for many other reasons, and we should remove this
- # hack as soon as we can fix all callers to not use shell=True.
- if kwargs.get('shell') == True:
- string_args = args
- else:
- string_args = self._stringify_args(args)
- return subprocess.Popen(string_args, **kwargs)
-
- def run_in_parallel(self, command_lines_and_cwds, processes=None):
- """Runs a list of (cmd_line list, cwd string) tuples in parallel and returns a list of (retcode, stdout, stderr) tuples."""
- assert len(command_lines_and_cwds)
-
- if sys.platform in ('cygwin', 'win32'):
- return map(_run_command_thunk, command_lines_and_cwds)
- pool = multiprocessing.Pool(processes=processes)
- results = pool.map(_run_command_thunk, command_lines_and_cwds)
- pool.close()
- pool.join()
- return results
-
-
-def _run_command_thunk(cmd_line_and_cwd):
- # Note that this needs to be a bare module (and hence Picklable) method to work with multiprocessing.Pool.
- (cmd_line, cwd) = cmd_line_and_cwd
- proc = subprocess.Popen(cmd_line, cwd=cwd, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = proc.communicate()
- return (proc.returncode, stdout, stderr)
diff --git a/Tools/Scripts/webkitpy/common/system/executive_mock.py b/Tools/Scripts/webkitpy/common/system/executive_mock.py
deleted file mode 100644
index a3870b131..000000000
--- a/Tools/Scripts/webkitpy/common/system/executive_mock.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-import os
-import StringIO
-
-from webkitpy.common.system.executive import ScriptError
-
-_log = logging.getLogger(__name__)
-
-
-class MockProcess(object):
- def __init__(self, stdout='MOCK STDOUT\n', stderr=''):
- self.pid = 42
- self.stdout = StringIO.StringIO(stdout)
- self.stderr = StringIO.StringIO(stderr)
- self.stdin = StringIO.StringIO()
- self.returncode = 0
-
- def wait(self):
- return
-
-# FIXME: This should be unified with MockExecutive2
-class MockExecutive(object):
- PIPE = "MOCK PIPE"
- STDOUT = "MOCK STDOUT"
-
- @staticmethod
- def ignore_error(error):
- pass
-
- def __init__(self, should_log=False, should_throw=False, should_throw_when_run=None):
- self._should_log = should_log
- self._should_throw = should_throw
- self._should_throw_when_run = should_throw_when_run or set()
- # FIXME: Once executive wraps os.getpid() we can just use a static pid for "this" process.
- self._running_pids = {'test-webkitpy': os.getpid()}
- self._proc = None
- self.calls = []
- self.pid_to_system_pid = {}
-
- def check_running_pid(self, pid):
- return pid in self._running_pids.values()
-
- def running_pids(self, process_name_filter):
- running_pids = []
- for process_name, process_pid in self._running_pids.iteritems():
- if process_name_filter(process_name):
- running_pids.append(process_pid)
-
- _log.info("MOCK running_pids: %s" % running_pids)
- return running_pids
-
- def run_and_throw_if_fail(self, args, quiet=False, cwd=None, env=None):
- if self._should_log:
- env_string = ""
- if env:
- env_string = ", env=%s" % env
- _log.info("MOCK run_and_throw_if_fail: %s, cwd=%s%s" % (args, cwd, env_string))
- if self._should_throw_when_run.intersection(args):
- raise ScriptError("Exception for %s" % args, output="MOCK command output")
- return "MOCK output of child process"
-
- def command_for_printing(self, args):
- string_args = map(unicode, args)
- return " ".join(string_args)
-
- def run_command(self,
- args,
- cwd=None,
- input=None,
- error_handler=None,
- return_exit_code=False,
- return_stderr=True,
- decode_output=False,
- env=None):
-
- self.calls.append(args)
-
- assert(isinstance(args, list) or isinstance(args, tuple))
- if self._should_log:
- env_string = ""
- if env:
- env_string = ", env=%s" % env
- input_string = ""
- if input:
- input_string = ", input=%s" % input
- _log.info("MOCK run_command: %s, cwd=%s%s%s" % (args, cwd, env_string, input_string))
- output = "MOCK output of child process"
-
- if self._should_throw_when_run.intersection(args):
- raise ScriptError("Exception for %s" % args, output="MOCK command output")
-
- if self._should_throw:
- raise ScriptError("MOCK ScriptError", output=output)
- return output
-
- def cpu_count(self):
- return 2
-
- def kill_all(self, process_name):
- pass
-
- def kill_process(self, pid):
- pass
-
- def popen(self, args, cwd=None, env=None, **kwargs):
- self.calls.append(args)
- if self._should_log:
- cwd_string = ""
- if cwd:
- cwd_string = ", cwd=%s" % cwd
- env_string = ""
- if env:
- env_string = ", env=%s" % env
- _log.info("MOCK popen: %s%s%s" % (args, cwd_string, env_string))
- if not self._proc:
- self._proc = MockProcess()
- return self._proc
-
- def run_in_parallel(self, commands):
- num_previous_calls = len(self.calls)
- command_outputs = []
- for cmd_line, cwd in commands:
- command_outputs.append([0, self.run_command(cmd_line, cwd=cwd), ''])
-
- new_calls = self.calls[num_previous_calls:]
- self.calls = self.calls[:num_previous_calls]
- self.calls.append(new_calls)
- return command_outputs
-
-
-class MockExecutive2(MockExecutive):
- """MockExecutive2 is like MockExecutive except it doesn't log anything."""
-
- def __init__(self, output='', exit_code=0, exception=None, run_command_fn=None, stderr=''):
- self._output = output
- self._stderr = stderr
- self._exit_code = exit_code
- self._exception = exception
- self._run_command_fn = run_command_fn
- self.calls = []
-
- def run_command(self,
- args,
- cwd=None,
- input=None,
- error_handler=None,
- return_exit_code=False,
- return_stderr=True,
- decode_output=False,
- env=None):
- self.calls.append(args)
- assert(isinstance(args, list) or isinstance(args, tuple))
- if self._exception:
- raise self._exception # pylint: disable=E0702
- if self._run_command_fn:
- return self._run_command_fn(args)
- if return_exit_code:
- return self._exit_code
- if self._exit_code and error_handler:
- script_error = ScriptError(script_args=args, exit_code=self._exit_code, output=self._output)
- error_handler(script_error)
- if return_stderr:
- return self._output + self._stderr
- return self._output
diff --git a/Tools/Scripts/webkitpy/common/system/executive_unittest.py b/Tools/Scripts/webkitpy/common/system/executive_unittest.py
deleted file mode 100644
index f71201a04..000000000
--- a/Tools/Scripts/webkitpy/common/system/executive_unittest.py
+++ /dev/null
@@ -1,270 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2009 Daniel Bates (dbates@intudata.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:
-#
-# * 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.
-
-import os
-import errno
-import signal
-import subprocess
-import sys
-import time
-
-# Since we execute this script directly as part of the unit tests, we need to ensure
-# that Tools/Scripts is in sys.path for the next imports to work correctly.
-script_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-if script_dir not in sys.path:
- sys.path.append(script_dir)
-third_party_py = os.path.join(script_dir, "webkitpy", "thirdparty", "autoinstalled")
-if third_party_py not in sys.path:
- sys.path.append(third_party_py)
-
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-
-
-class ScriptErrorTest(unittest.TestCase):
- def test_message_with_output(self):
- error = ScriptError('My custom message!', '', -1)
- self.assertEqual(error.message_with_output(), 'My custom message!')
- error = ScriptError('My custom message!', '', -1, 'My output.')
- self.assertEqual(error.message_with_output(), 'My custom message!\n\nMy output.')
- error = ScriptError('', 'my_command!', -1, 'My output.', '/Users/username/blah')
- self.assertEqual(error.message_with_output(), 'Failed to run "\'my_command!\'" exit_code: -1 cwd: /Users/username/blah\n\nMy output.')
- error = ScriptError('', 'my_command!', -1, 'ab' + '1' * 499)
- self.assertEqual(error.message_with_output(), 'Failed to run "\'my_command!\'" exit_code: -1\n\nLast 500 characters of output:\nb' + '1' * 499)
-
- def test_message_with_tuple(self):
- error = ScriptError('', ('my', 'command'), -1, 'My output.', '/Users/username/blah')
- self.assertEqual(error.message_with_output(), 'Failed to run "(\'my\', \'command\')" exit_code: -1 cwd: /Users/username/blah\n\nMy output.')
-
-def never_ending_command():
- """Arguments for a command that will never end (useful for testing process
- killing). It should be a process that is unlikely to already be running
- because all instances will be killed."""
- if sys.platform == 'win32':
- return ['wmic']
- return ['yes']
-
-
-def command_line(cmd, *args):
- return [sys.executable, __file__, '--' + cmd] + list(args)
-
-
-class ExecutiveTest(unittest.TestCase):
- def assert_interpreter_for_content(self, intepreter, content):
- fs = MockFileSystem()
-
- tempfile, temp_name = fs.open_binary_tempfile('')
- tempfile.write(content)
- tempfile.close()
- file_interpreter = Executive.interpreter_for_script(temp_name, fs)
-
- self.assertEqual(file_interpreter, intepreter)
-
- def test_interpreter_for_script(self):
- self.assert_interpreter_for_content(None, '')
- self.assert_interpreter_for_content(None, 'abcd\nefgh\nijklm')
- self.assert_interpreter_for_content(None, '##/usr/bin/perl')
- self.assert_interpreter_for_content('perl', '#!/usr/bin/env perl')
- self.assert_interpreter_for_content('perl', '#!/usr/bin/env perl\nfirst\nsecond')
- self.assert_interpreter_for_content('perl', '#!/usr/bin/perl')
- self.assert_interpreter_for_content('perl', '#!/usr/bin/perl -w')
- self.assert_interpreter_for_content(sys.executable, '#!/usr/bin/env python')
- self.assert_interpreter_for_content(sys.executable, '#!/usr/bin/env python\nfirst\nsecond')
- self.assert_interpreter_for_content(sys.executable, '#!/usr/bin/python')
- self.assert_interpreter_for_content('ruby', '#!/usr/bin/env ruby')
- self.assert_interpreter_for_content('ruby', '#!/usr/bin/env ruby\nfirst\nsecond')
- self.assert_interpreter_for_content('ruby', '#!/usr/bin/ruby')
-
- def test_run_command_with_bad_command(self):
- def run_bad_command():
- Executive().run_command(["foo_bar_command_blah"], error_handler=Executive.ignore_error, return_exit_code=True)
- self.assertRaises(OSError, run_bad_command)
-
- def test_run_command_args_type(self):
- executive = Executive()
- self.assertRaises(AssertionError, executive.run_command, "echo")
- self.assertRaises(AssertionError, executive.run_command, u"echo")
- executive.run_command(command_line('echo', 'foo'))
- executive.run_command(tuple(command_line('echo', 'foo')))
-
- def test_auto_stringify_args(self):
- executive = Executive()
- executive.run_command(command_line('echo', 1))
- executive.popen(command_line('echo', 1), stdout=executive.PIPE).wait()
- self.assertEqual('echo 1', executive.command_for_printing(['echo', 1]))
-
- def test_popen_args(self):
- executive = Executive()
- # Explicitly naming the 'args' argument should not thow an exception.
- executive.popen(args=command_line('echo', 1), stdout=executive.PIPE).wait()
-
- def test_run_command_with_unicode(self):
- """Validate that it is safe to pass unicode() objects
- to Executive.run* methods, and they will return unicode()
- objects by default unless decode_output=False"""
- unicode_tor_input = u"WebKit \u2661 Tor Arne Vestb\u00F8!"
- if sys.platform == 'win32':
- encoding = 'mbcs'
- else:
- encoding = 'utf-8'
- encoded_tor = unicode_tor_input.encode(encoding)
- # On Windows, we expect the unicode->mbcs->unicode roundtrip to be
- # lossy. On other platforms, we expect a lossless roundtrip.
- if sys.platform == 'win32':
- unicode_tor_output = encoded_tor.decode(encoding)
- else:
- unicode_tor_output = unicode_tor_input
-
- executive = Executive()
-
- output = executive.run_command(command_line('cat'), input=unicode_tor_input)
- self.assertEqual(output, unicode_tor_output)
-
- output = executive.run_command(command_line('echo', unicode_tor_input))
- self.assertEqual(output, unicode_tor_output)
-
- output = executive.run_command(command_line('echo', unicode_tor_input), decode_output=False)
- self.assertEqual(output, encoded_tor)
-
- # Make sure that str() input also works.
- output = executive.run_command(command_line('cat'), input=encoded_tor, decode_output=False)
- self.assertEqual(output, encoded_tor)
-
- # FIXME: We should only have one run* method to test
- output = executive.run_and_throw_if_fail(command_line('echo', unicode_tor_input), quiet=True)
- self.assertEqual(output, unicode_tor_output)
-
- output = executive.run_and_throw_if_fail(command_line('echo', unicode_tor_input), quiet=True, decode_output=False)
- self.assertEqual(output, encoded_tor)
-
- def serial_test_kill_process(self):
- executive = Executive()
- process = subprocess.Popen(never_ending_command(), stdout=subprocess.PIPE)
- self.assertEqual(process.poll(), None) # Process is running
- executive.kill_process(process.pid)
- # Note: Can't use a ternary since signal.SIGKILL is undefined for sys.platform == "win32"
- if sys.platform == "win32":
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=54790
- # We seem to get either 0 or 1 here for some reason.
- self.assertIn(process.wait(), (0, 1))
- elif sys.platform == "cygwin":
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=98196
- # cygwin seems to give us either SIGABRT or SIGKILL
- self.assertIn(process.wait(), (-signal.SIGABRT, -signal.SIGKILL))
- else:
- expected_exit_code = -signal.SIGKILL
- self.assertEqual(process.wait(), expected_exit_code)
-
- # Killing again should fail silently.
- executive.kill_process(process.pid)
-
- def serial_test_kill_all(self):
- executive = Executive()
- process = subprocess.Popen(never_ending_command(), stdout=subprocess.PIPE)
- self.assertIsNone(process.poll()) # Process is running
- executive.kill_all(never_ending_command()[0])
- # Note: Can't use a ternary since signal.SIGTERM is undefined for sys.platform == "win32"
- if sys.platform == "cygwin":
- expected_exit_code = 0 # os.kill results in exit(0) for this process.
- self.assertEqual(process.wait(), expected_exit_code)
- elif sys.platform == "win32":
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=54790
- # We seem to get either 0 or 1 here for some reason.
- self.assertIn(process.wait(), (0, 1))
- else:
- expected_exit_code = -signal.SIGTERM
- self.assertEqual(process.wait(), expected_exit_code)
- # Killing again should fail silently.
- executive.kill_all(never_ending_command()[0])
-
- def _assert_windows_image_name(self, name, expected_windows_name):
- executive = Executive()
- windows_name = executive._windows_image_name(name)
- self.assertEqual(windows_name, expected_windows_name)
-
- def test_windows_image_name(self):
- self._assert_windows_image_name("foo", "foo.exe")
- self._assert_windows_image_name("foo.exe", "foo.exe")
- self._assert_windows_image_name("foo.com", "foo.com")
- # If the name looks like an extension, even if it isn't
- # supposed to, we have no choice but to return the original name.
- self._assert_windows_image_name("foo.baz", "foo.baz")
- self._assert_windows_image_name("foo.baz.exe", "foo.baz.exe")
-
- def serial_test_check_running_pid(self):
- executive = Executive()
- self.assertTrue(executive.check_running_pid(os.getpid()))
- # Maximum pid number on Linux is 32768 by default
- self.assertFalse(executive.check_running_pid(100000))
-
- def serial_test_running_pids(self):
- if sys.platform in ("win32", "cygwin"):
- return # This function isn't implemented on Windows yet.
-
- executive = Executive()
- pids = executive.running_pids()
- self.assertIn(os.getpid(), pids)
-
- def serial_test_run_in_parallel(self):
- # We run this test serially to avoid overloading the machine and throwing off the timing.
-
- if sys.platform in ("win32", "cygwin"):
- return # This function isn't implemented properly on windows yet.
- import multiprocessing
-
- NUM_PROCESSES = 4
- DELAY_SECS = 0.25
- cmd_line = [sys.executable, '-c', 'import time; time.sleep(%f); print "hello"' % DELAY_SECS]
- cwd = os.getcwd()
- commands = [tuple([cmd_line, cwd])] * NUM_PROCESSES
- start = time.time()
- command_outputs = Executive().run_in_parallel(commands, processes=NUM_PROCESSES)
- done = time.time()
- self.assertTrue(done - start < NUM_PROCESSES * DELAY_SECS)
- self.assertEqual([output[1] for output in command_outputs], ["hello\n"] * NUM_PROCESSES)
- self.assertEqual([], multiprocessing.active_children())
-
- def test_run_in_parallel_assert_nonempty(self):
- self.assertRaises(AssertionError, Executive().run_in_parallel, [])
-
-
-def main(platform, stdin, stdout, cmd, args):
- if platform == 'win32' and hasattr(stdout, 'fileno'):
- import msvcrt
- msvcrt.setmode(stdout.fileno(), os.O_BINARY)
- if cmd == '--cat':
- stdout.write(stdin.read())
- elif cmd == '--echo':
- stdout.write(' '.join(args))
- return 0
-
-if __name__ == '__main__' and len(sys.argv) > 1 and sys.argv[1] in ('--cat', '--echo'):
- sys.exit(main(sys.platform, sys.stdin, sys.stdout, sys.argv[1], sys.argv[2:]))
diff --git a/Tools/Scripts/webkitpy/common/system/file_lock.py b/Tools/Scripts/webkitpy/common/system/file_lock.py
deleted file mode 100644
index 3ca8b3cba..000000000
--- a/Tools/Scripts/webkitpy/common/system/file_lock.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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 class helps to lock files exclusively across processes."""
-
-import logging
-import os
-import sys
-import time
-
-
-_log = logging.getLogger(__name__)
-
-
-class FileLock(object):
-
- def __init__(self, lock_file_path, max_wait_time_sec=20):
- self._lock_file_path = lock_file_path
- self._lock_file_descriptor = None
- self._max_wait_time_sec = max_wait_time_sec
-
- def _create_lock(self):
- if sys.platform == 'win32':
- import msvcrt
- msvcrt.locking(self._lock_file_descriptor, msvcrt.LK_NBLCK, 32)
- else:
- import fcntl
- fcntl.flock(self._lock_file_descriptor, fcntl.LOCK_EX | fcntl.LOCK_NB)
-
- def _remove_lock(self):
- if sys.platform == 'win32':
- import msvcrt
- msvcrt.locking(self._lock_file_descriptor, msvcrt.LK_UNLCK, 32)
- else:
- import fcntl
- fcntl.flock(self._lock_file_descriptor, fcntl.LOCK_UN)
-
- def acquire_lock(self):
- self._lock_file_descriptor = os.open(self._lock_file_path, os.O_TRUNC | os.O_CREAT)
- start_time = time.time()
- while True:
- try:
- self._create_lock()
- return True
- except IOError:
- if time.time() - start_time > self._max_wait_time_sec:
- _log.debug("File locking failed: %s" % str(sys.exc_info()))
- os.close(self._lock_file_descriptor)
- self._lock_file_descriptor = None
- return False
- # There's no compelling reason to spin hard here, so sleep for a bit.
- time.sleep(0.01)
-
- def release_lock(self):
- try:
- if self._lock_file_descriptor:
- self._remove_lock()
- os.close(self._lock_file_descriptor)
- self._lock_file_descriptor = None
- os.unlink(self._lock_file_path)
- except (IOError, OSError):
- _log.debug("Warning in release lock: %s" % str(sys.exc_info()))
diff --git a/Tools/Scripts/webkitpy/common/system/file_lock_integrationtest.py b/Tools/Scripts/webkitpy/common/system/file_lock_integrationtest.py
deleted file mode 100644
index 7b1b42695..000000000
--- a/Tools/Scripts/webkitpy/common/system/file_lock_integrationtest.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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 os
-import tempfile
-import unittest2 as unittest
-
-from webkitpy.common.system.file_lock import FileLock
-
-
-class FileLockTest(unittest.TestCase):
-
- def setUp(self):
- self._lock_name = "TestWebKit" + str(os.getpid()) + ".lock"
- self._lock_path = os.path.join(tempfile.gettempdir(), self._lock_name)
- self._file_lock1 = FileLock(self._lock_path, 0.1)
- self._file_lock2 = FileLock(self._lock_path, 0.1)
-
- def tearDown(self):
- self._file_lock1.release_lock()
- self._file_lock2.release_lock()
-
- def test_lock_lifecycle(self):
- # Create the lock.
- self._file_lock1.acquire_lock()
- self.assertTrue(os.path.exists(self._lock_path))
-
- # Try to lock again.
- self.assertFalse(self._file_lock2.acquire_lock())
-
- # Release the lock.
- self._file_lock1.release_lock()
- self.assertFalse(os.path.exists(self._lock_path))
-
- def test_stuck_lock(self):
- open(self._lock_path, 'w').close()
- self._file_lock1.acquire_lock()
- self._file_lock1.release_lock()
diff --git a/Tools/Scripts/webkitpy/common/system/file_lock_mock.py b/Tools/Scripts/webkitpy/common/system/file_lock_mock.py
deleted file mode 100644
index f53081d1c..000000000
--- a/Tools/Scripts/webkitpy/common/system/file_lock_mock.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (c) 2012 Google Inc. All rights reserved.
-#
-# 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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.
-
-
-class MockFileLock(object):
- def __init__(self, lock_file_path, max_wait_time_sec=20):
- pass
-
- def acquire_lock(self):
- return True
-
- def release_lock(self):
- return True
diff --git a/Tools/Scripts/webkitpy/common/system/fileset.py b/Tools/Scripts/webkitpy/common/system/fileset.py
deleted file mode 100644
index 57e9a284e..000000000
--- a/Tools/Scripts/webkitpy/common/system/fileset.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2010 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:
-#
-# 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 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.
-
-from webkitpy.common.system.filesystem import FileSystem
-
-
-class FileSetFileHandle(object):
- """Points to a file that resides in a file set"""
- def __init__(self, fileset, filename, filesystem=None):
- self._filename = filename
- self._fileset = fileset
- self._contents = None
- self._filesystem = filesystem or FileSystem()
-
- def __str__(self):
- return "%s:%s" % (self._fileset, self._filename)
-
- def close(self):
- pass
-
- def contents(self):
- if self._contents is None:
- self._contents = self._fileset.read(self._filename)
- return self._contents
-
- def save_to(self, path, filename=None):
- if filename is None:
- self._fileset.extract(self._filename, path)
- return
- with self._filesystem.mkdtemp() as temp_dir:
- self._fileset.extract(self._filename, temp_dir)
-
- src = self._filesystem.join(temp_dir, self._filename)
- dest = self._filesystem.join(path, filename)
- self._filesystem.copyfile(src, dest)
-
- def delete(self):
- self._fileset.delete(self._filename)
-
- def name(self):
- return self._filename
-
- def splitext(self):
- return self._filesystem.splitext(self.name())
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem.py b/Tools/Scripts/webkitpy/common/system/filesystem.py
deleted file mode 100644
index 3786c6fed..000000000
--- a/Tools/Scripts/webkitpy/common/system/filesystem.py
+++ /dev/null
@@ -1,269 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Wrapper object for the file system / source tree."""
-
-import codecs
-import errno
-import exceptions
-import glob
-import hashlib
-import os
-import shutil
-import sys
-import tempfile
-import time
-
-class FileSystem(object):
- """FileSystem interface for webkitpy.
-
- Unless otherwise noted, all paths are allowed to be either absolute
- or relative."""
- sep = os.sep
- pardir = os.pardir
-
- def abspath(self, path):
- return os.path.abspath(path)
-
- def realpath(self, path):
- return os.path.realpath(path)
-
- def path_to_module(self, module_name):
- """A wrapper for all calls to __file__ to allow easy unit testing."""
- # FIXME: This is the only use of sys in this file. It's possible this function should move elsewhere.
- return sys.modules[module_name].__file__ # __file__ is always an absolute path.
-
- def expanduser(self, path):
- return os.path.expanduser(path)
-
- def basename(self, path):
- return os.path.basename(path)
-
- def chdir(self, path):
- return os.chdir(path)
-
- def copyfile(self, source, destination):
- shutil.copyfile(source, destination)
-
- def dirname(self, path):
- return os.path.dirname(path)
-
- def exists(self, path):
- return os.path.exists(path)
-
- def files_under(self, path, dirs_to_skip=[], file_filter=None):
- """Return the list of all files under the given path in topdown order.
-
- Args:
- dirs_to_skip: a list of directories to skip over during the
- traversal (e.g., .svn, resources, etc.)
- file_filter: if not None, the filter will be invoked
- with the filesystem object and the dirname and basename of
- each file found. The file is included in the result if the
- callback returns True.
- """
- def filter_all(fs, dirpath, basename):
- return True
-
- file_filter = file_filter or filter_all
- files = []
- if self.isfile(path):
- if file_filter(self, self.dirname(path), self.basename(path)):
- files.append(path)
- return files
-
- if self.basename(path) in dirs_to_skip:
- return []
-
- for (dirpath, dirnames, filenames) in os.walk(path):
- for d in dirs_to_skip:
- if d in dirnames:
- dirnames.remove(d)
-
- for filename in filenames:
- if file_filter(self, dirpath, filename):
- files.append(self.join(dirpath, filename))
- return files
-
- def getcwd(self):
- return os.getcwd()
-
- def glob(self, path):
- return glob.glob(path)
-
- def isabs(self, path):
- return os.path.isabs(path)
-
- def isfile(self, path):
- return os.path.isfile(path)
-
- def isdir(self, path):
- return os.path.isdir(path)
-
- def join(self, *comps):
- return os.path.join(*comps)
-
- def listdir(self, path):
- return os.listdir(path)
-
- def mkdtemp(self, **kwargs):
- """Create and return a uniquely named directory.
-
- This is like tempfile.mkdtemp, but if used in a with statement
- the directory will self-delete at the end of the block (if the
- directory is empty; non-empty directories raise errors). The
- directory can be safely deleted inside the block as well, if so
- desired.
-
- Note that the object returned is not a string and does not support all of the string
- methods. If you need a string, coerce the object to a string and go from there.
- """
- class TemporaryDirectory(object):
- def __init__(self, **kwargs):
- self._kwargs = kwargs
- self._directory_path = tempfile.mkdtemp(**self._kwargs)
-
- def __str__(self):
- return self._directory_path
-
- def __enter__(self):
- return self._directory_path
-
- def __exit__(self, type, value, traceback):
- # Only self-delete if necessary.
-
- # FIXME: Should we delete non-empty directories?
- if os.path.exists(self._directory_path):
- os.rmdir(self._directory_path)
-
- return TemporaryDirectory(**kwargs)
-
- def maybe_make_directory(self, *path):
- """Create the specified directory if it doesn't already exist."""
- try:
- os.makedirs(self.join(*path))
- except OSError, e:
- if e.errno != errno.EEXIST:
- raise
-
- def move(self, source, destination):
- shutil.move(source, destination)
-
- def mtime(self, path):
- return os.stat(path).st_mtime
-
- def normpath(self, path):
- return os.path.normpath(path)
-
- def open_binary_tempfile(self, suffix):
- """Create, open, and return a binary temp file. Returns a tuple of the file and the name."""
- temp_fd, temp_name = tempfile.mkstemp(suffix)
- f = os.fdopen(temp_fd, 'wb')
- return f, temp_name
-
- def open_binary_file_for_reading(self, path):
- return codecs.open(path, 'rb')
-
- def read_binary_file(self, path):
- """Return the contents of the file at the given path as a byte string."""
- with file(path, 'rb') as f:
- return f.read()
-
- def write_binary_file(self, path, contents):
- with file(path, 'wb') as f:
- f.write(contents)
-
- def open_text_file_for_reading(self, path):
- # Note: There appears to be an issue with the returned file objects
- # not being seekable. See http://stackoverflow.com/questions/1510188/can-seek-and-tell-work-with-utf-8-encoded-documents-in-python .
- return codecs.open(path, 'r', 'utf8')
-
- def open_text_file_for_writing(self, path):
- return codecs.open(path, 'w', 'utf8')
-
- def read_text_file(self, path):
- """Return the contents of the file at the given path as a Unicode string.
-
- The file is read assuming it is a UTF-8 encoded file with no BOM."""
- with codecs.open(path, 'r', 'utf8') as f:
- return f.read()
-
- def write_text_file(self, path, contents):
- """Write the contents to the file at the given location.
-
- The file is written encoded as UTF-8 with no BOM."""
- with codecs.open(path, 'w', 'utf8') as f:
- f.write(contents)
-
- def sha1(self, path):
- contents = self.read_binary_file(path)
- return hashlib.sha1(contents).hexdigest()
-
- def relpath(self, path, start='.'):
- return os.path.relpath(path, start)
-
- class _WindowsError(exceptions.OSError):
- """Fake exception for Linux and Mac."""
- pass
-
- def remove(self, path, osremove=os.remove):
- """On Windows, if a process was recently killed and it held on to a
- file, the OS will hold on to the file for a short while. This makes
- attempts to delete the file fail. To work around that, this method
- will retry for a few seconds until Windows is done with the file."""
- try:
- exceptions.WindowsError
- except AttributeError:
- exceptions.WindowsError = FileSystem._WindowsError
-
- retry_timeout_sec = 3.0
- sleep_interval = 0.1
- while True:
- try:
- osremove(path)
- return True
- except exceptions.WindowsError, e:
- time.sleep(sleep_interval)
- retry_timeout_sec -= sleep_interval
- if retry_timeout_sec < 0:
- raise e
-
- def rmtree(self, path):
- """Delete the directory rooted at path, whether empty or not."""
- shutil.rmtree(path, ignore_errors=True)
-
- def copytree(self, source, destination):
- shutil.copytree(source, destination)
-
- def split(self, path):
- """Return (dirname, basename + '.' + ext)"""
- return os.path.split(path)
-
- def splitext(self, path):
- """Return (dirname + os.sep + basename, '.' + ext)"""
- return os.path.splitext(path)
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem_mock.py b/Tools/Scripts/webkitpy/common/system/filesystem_mock.py
deleted file mode 100644
index ee0664ea0..000000000
--- a/Tools/Scripts/webkitpy/common/system/filesystem_mock.py
+++ /dev/null
@@ -1,474 +0,0 @@
-# Copyright (C) 2009 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.
-
-import StringIO
-import errno
-import hashlib
-import os
-import re
-
-from webkitpy.common.system import path
-
-
-class MockFileSystem(object):
- sep = '/'
- pardir = '..'
-
- def __init__(self, files=None, dirs=None, cwd='/'):
- """Initializes a "mock" filesystem that can be used to completely
- stub out a filesystem.
-
- Args:
- files: a dict of filenames -> file contents. A file contents
- value of None is used to indicate that the file should
- not exist.
- """
- self.files = files or {}
- self.written_files = {}
- self.last_tmpdir = None
- self.current_tmpno = 0
- self.cwd = cwd
- self.dirs = set(dirs or [])
- self.dirs.add(cwd)
- for f in self.files:
- d = self.dirname(f)
- while not d in self.dirs:
- self.dirs.add(d)
- d = self.dirname(d)
-
- def clear_written_files(self):
- # This function can be used to track what is written between steps in a test.
- self.written_files = {}
-
- def _raise_not_found(self, path):
- raise IOError(errno.ENOENT, path, os.strerror(errno.ENOENT))
-
- def _split(self, path):
- # This is not quite a full implementation of os.path.split
- # http://docs.python.org/library/os.path.html#os.path.split
- if self.sep in path:
- return path.rsplit(self.sep, 1)
- return ('', path)
-
- def abspath(self, path):
- if os.path.isabs(path):
- return self.normpath(path)
- return self.abspath(self.join(self.cwd, path))
-
- def realpath(self, path):
- return self.abspath(path)
-
- def basename(self, path):
- return self._split(path)[1]
-
- def expanduser(self, path):
- if path[0] != "~":
- return path
- parts = path.split(self.sep, 1)
- home_directory = self.sep + "Users" + self.sep + "mock"
- if len(parts) == 1:
- return home_directory
- return home_directory + self.sep + parts[1]
-
- def path_to_module(self, module_name):
- return "/mock-checkout/Tools/Scripts/" + module_name.replace('.', '/') + ".py"
-
- def chdir(self, path):
- path = self.normpath(path)
- if not self.isdir(path):
- raise OSError(errno.ENOENT, path, os.strerror(errno.ENOENT))
- self.cwd = path
-
- def copyfile(self, source, destination):
- if not self.exists(source):
- self._raise_not_found(source)
- if self.isdir(source):
- raise IOError(errno.EISDIR, source, os.strerror(errno.EISDIR))
- if self.isdir(destination):
- raise IOError(errno.EISDIR, destination, os.strerror(errno.EISDIR))
- if not self.exists(self.dirname(destination)):
- raise IOError(errno.ENOENT, destination, os.strerror(errno.ENOENT))
-
- self.files[destination] = self.files[source]
- self.written_files[destination] = self.files[source]
-
- def dirname(self, path):
- return self._split(path)[0]
-
- def exists(self, path):
- return self.isfile(path) or self.isdir(path)
-
- def files_under(self, path, dirs_to_skip=[], file_filter=None):
- def filter_all(fs, dirpath, basename):
- return True
-
- file_filter = file_filter or filter_all
- files = []
- if self.isfile(path):
- if file_filter(self, self.dirname(path), self.basename(path)) and self.files[path] is not None:
- files.append(path)
- return files
-
- if self.basename(path) in dirs_to_skip:
- return []
-
- if not path.endswith(self.sep):
- path += self.sep
-
- dir_substrings = [self.sep + d + self.sep for d in dirs_to_skip]
- for filename in self.files:
- if not filename.startswith(path):
- continue
-
- suffix = filename[len(path) - 1:]
- if any(dir_substring in suffix for dir_substring in dir_substrings):
- continue
-
- dirpath, basename = self._split(filename)
- if file_filter(self, dirpath, basename) and self.files[filename] is not None:
- files.append(filename)
-
- return files
-
- def getcwd(self):
- return self.cwd
-
- def glob(self, glob_string):
- # FIXME: This handles '*', but not '?', '[', or ']'.
- glob_string = re.escape(glob_string)
- glob_string = glob_string.replace('\\*', '[^\\/]*') + '$'
- glob_string = glob_string.replace('\\/', '/')
- path_filter = lambda path: re.match(glob_string, path)
-
- # We could use fnmatch.fnmatch, but that might not do the right thing on windows.
- existing_files = [path for path, contents in self.files.items() if contents is not None]
- return filter(path_filter, existing_files) + filter(path_filter, self.dirs)
-
- def isabs(self, path):
- return path.startswith(self.sep)
-
- def isfile(self, path):
- return path in self.files and self.files[path] is not None
-
- def isdir(self, path):
- return self.normpath(path) in self.dirs
-
- def _slow_but_correct_join(self, *comps):
- return re.sub(re.escape(os.path.sep), self.sep, os.path.join(*comps))
-
- def join(self, *comps):
- # This function is called a lot, so we optimize it; there are
- # unittests to check that we match _slow_but_correct_join(), above.
- path = ''
- sep = self.sep
- for comp in comps:
- if not comp:
- continue
- if comp[0] == sep:
- path = comp
- continue
- if path:
- path += sep
- path += comp
- if comps[-1] == '' and path:
- path += '/'
- path = path.replace(sep + sep, sep)
- return path
-
- def listdir(self, path):
- sep = self.sep
- if not self.isdir(path):
- raise OSError("%s is not a directory" % path)
-
- if not path.endswith(sep):
- path += sep
-
- dirs = []
- files = []
- for f in self.files:
- if self.exists(f) and f.startswith(path):
- remaining = f[len(path):]
- if sep in remaining:
- dir = remaining[:remaining.index(sep)]
- if not dir in dirs:
- dirs.append(dir)
- else:
- files.append(remaining)
- return dirs + files
-
- def mtime(self, path):
- if self.exists(path):
- return 0
- self._raise_not_found(path)
-
- def _mktemp(self, suffix='', prefix='tmp', dir=None, **kwargs):
- if dir is None:
- dir = self.sep + '__im_tmp'
- curno = self.current_tmpno
- self.current_tmpno += 1
- self.last_tmpdir = self.join(dir, '%s_%u_%s' % (prefix, curno, suffix))
- return self.last_tmpdir
-
- def mkdtemp(self, **kwargs):
- class TemporaryDirectory(object):
- def __init__(self, fs, **kwargs):
- self._kwargs = kwargs
- self._filesystem = fs
- self._directory_path = fs._mktemp(**kwargs)
- fs.maybe_make_directory(self._directory_path)
-
- def __str__(self):
- return self._directory_path
-
- def __enter__(self):
- return self._directory_path
-
- def __exit__(self, type, value, traceback):
- # Only self-delete if necessary.
-
- # FIXME: Should we delete non-empty directories?
- if self._filesystem.exists(self._directory_path):
- self._filesystem.rmtree(self._directory_path)
-
- return TemporaryDirectory(fs=self, **kwargs)
-
- def maybe_make_directory(self, *path):
- norm_path = self.normpath(self.join(*path))
- while norm_path and not self.isdir(norm_path):
- self.dirs.add(norm_path)
- norm_path = self.dirname(norm_path)
-
- def move(self, source, destination):
- if self.files[source] is None:
- self._raise_not_found(source)
- self.files[destination] = self.files[source]
- self.written_files[destination] = self.files[destination]
- self.files[source] = None
- self.written_files[source] = None
-
- def _slow_but_correct_normpath(self, path):
- return re.sub(re.escape(os.path.sep), self.sep, os.path.normpath(path))
-
- def normpath(self, path):
- # This function is called a lot, so we try to optimize the common cases
- # instead of always calling _slow_but_correct_normpath(), above.
- if '..' in path or '/./' in path:
- # This doesn't happen very often; don't bother trying to optimize it.
- return self._slow_but_correct_normpath(path)
- if not path:
- return '.'
- if path == '/':
- return path
- if path == '/.':
- return '/'
- if path.endswith('/.'):
- return path[:-2]
- if path.endswith('/'):
- return path[:-1]
- return path
-
- def open_binary_tempfile(self, suffix=''):
- path = self._mktemp(suffix)
- return (WritableBinaryFileObject(self, path), path)
-
- def open_binary_file_for_reading(self, path):
- if self.files[path] is None:
- self._raise_not_found(path)
- return ReadableBinaryFileObject(self, path, self.files[path])
-
- def read_binary_file(self, path):
- # Intentionally raises KeyError if we don't recognize the path.
- if self.files[path] is None:
- self._raise_not_found(path)
- return self.files[path]
-
- def write_binary_file(self, path, contents):
- # FIXME: should this assert if dirname(path) doesn't exist?
- self.maybe_make_directory(self.dirname(path))
- self.files[path] = contents
- self.written_files[path] = contents
-
- def open_text_file_for_reading(self, path):
- if self.files[path] is None:
- self._raise_not_found(path)
- return ReadableTextFileObject(self, path, self.files[path])
-
- def open_text_file_for_writing(self, path):
- return WritableTextFileObject(self, path)
-
- def read_text_file(self, path):
- return self.read_binary_file(path).decode('utf-8')
-
- def write_text_file(self, path, contents):
- return self.write_binary_file(path, contents.encode('utf-8'))
-
- def sha1(self, path):
- contents = self.read_binary_file(path)
- return hashlib.sha1(contents).hexdigest()
-
- def relpath(self, path, start='.'):
- # Since os.path.relpath() calls os.path.normpath()
- # (see http://docs.python.org/library/os.path.html#os.path.abspath )
- # it also removes trailing slashes and converts forward and backward
- # slashes to the preferred slash os.sep.
- start = self.abspath(start)
- path = self.abspath(path)
-
- if not path.lower().startswith(start.lower()):
- # path is outside the directory given by start; compute path from root
- return '../' * start.count('/') + path
-
- rel_path = path[len(start):]
-
- if not rel_path:
- # Then the paths are the same.
- pass
- elif rel_path[0] == self.sep:
- # It is probably sufficient to remove just the first character
- # since os.path.normpath() collapses separators, but we use
- # lstrip() just to be sure.
- rel_path = rel_path.lstrip(self.sep)
- else:
- # We are in the case typified by the following example:
- # path = "/tmp/foobar", start = "/tmp/foo" -> rel_path = "bar"
- # FIXME: We return a less-than-optimal result here.
- return '../' * start.count('/') + path
-
- return rel_path
-
- def remove(self, path):
- if self.files[path] is None:
- self._raise_not_found(path)
- self.files[path] = None
- self.written_files[path] = None
-
- def rmtree(self, path):
- path = self.normpath(path)
-
- for f in self.files:
- if f.startswith(path):
- self.files[f] = None
-
- self.dirs = set(filter(lambda d: not d.startswith(path), self.dirs))
-
- def copytree(self, source, destination):
- source = self.normpath(source)
- destination = self.normpath(destination)
-
- for source_file in self.files:
- if source_file.startswith(source):
- destination_path = self.join(destination, self.relpath(source_file, source))
- self.maybe_make_directory(self.dirname(destination_path))
- self.files[destination_path] = self.files[source_file]
-
- def split(self, path):
- idx = path.rfind(self.sep)
- if idx == -1:
- return ('', path)
- return (path[:idx], path[(idx + 1):])
-
- def splitext(self, path):
- idx = path.rfind('.')
- if idx == -1:
- idx = len(path)
- return (path[0:idx], path[idx:])
-
-
-class WritableBinaryFileObject(object):
- def __init__(self, fs, path):
- self.fs = fs
- self.path = path
- self.closed = False
- self.fs.files[path] = ""
-
- def __enter__(self):
- return self
-
- def __exit__(self, type, value, traceback):
- self.close()
-
- def close(self):
- self.closed = True
-
- def write(self, str):
- self.fs.files[self.path] += str
- self.fs.written_files[self.path] = self.fs.files[self.path]
-
-
-class WritableTextFileObject(WritableBinaryFileObject):
- def write(self, str):
- WritableBinaryFileObject.write(self, str.encode('utf-8'))
-
-
-class ReadableBinaryFileObject(object):
- def __init__(self, fs, path, data):
- self.fs = fs
- self.path = path
- self.closed = False
- self.data = data
- self.offset = 0
-
- def __enter__(self):
- return self
-
- def __exit__(self, type, value, traceback):
- self.close()
-
- def close(self):
- self.closed = True
-
- def read(self, bytes=None):
- if not bytes:
- return self.data[self.offset:]
- start = self.offset
- self.offset += bytes
- return self.data[start:self.offset]
-
-
-class ReadableTextFileObject(ReadableBinaryFileObject):
- def __init__(self, fs, path, data):
- super(ReadableTextFileObject, self).__init__(fs, path, StringIO.StringIO(data.decode("utf-8")))
-
- def close(self):
- self.data.close()
- super(ReadableTextFileObject, self).close()
-
- def read(self, bytes=-1):
- return self.data.read(bytes)
-
- def readline(self, length=None):
- return self.data.readline(length)
-
- def __iter__(self):
- return self.data.__iter__()
-
- def next(self):
- return self.data.next()
-
- def seek(self, offset, whence=os.SEEK_SET):
- self.data.seek(offset, whence)
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem_mock_unittest.py b/Tools/Scripts/webkitpy/common/system/filesystem_mock_unittest.py
deleted file mode 100644
index a5983320a..000000000
--- a/Tools/Scripts/webkitpy/common/system/filesystem_mock_unittest.py
+++ /dev/null
@@ -1,84 +0,0 @@
-# Copyright (C) 2011 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.
-
-import os
-import re
-import unittest2 as unittest
-
-
-from webkitpy.common.system import filesystem_mock
-from webkitpy.common.system import filesystem_unittest
-
-
-class MockFileSystemTest(unittest.TestCase, filesystem_unittest.GenericFileSystemTests):
- def setUp(self):
- self.fs = filesystem_mock.MockFileSystem()
- self.setup_generic_test_dir()
-
- def tearDown(self):
- self.teardown_generic_test_dir()
- self.fs = None
-
- def quick_check(self, test_fn, good_fn, *tests):
- for test in tests:
- if hasattr(test, '__iter__'):
- expected = good_fn(*test)
- actual = test_fn(*test)
- else:
- expected = good_fn(test)
- actual = test_fn(test)
- self.assertEqual(expected, actual, 'given %s, expected %s, got %s' % (repr(test), repr(expected), repr(actual)))
-
- def test_join(self):
- self.quick_check(self.fs.join,
- self.fs._slow_but_correct_join,
- ('',),
- ('', 'bar'),
- ('foo',),
- ('foo/',),
- ('foo', ''),
- ('foo/', ''),
- ('foo', 'bar'),
- ('foo', '/bar'),
- )
-
- def test_normpath(self):
- self.quick_check(self.fs.normpath,
- self.fs._slow_but_correct_normpath,
- '',
- '/',
- '.',
- '/.',
- 'foo',
- 'foo/',
- 'foo/.',
- 'foo/bar',
- '/foo',
- 'foo/../bar',
- 'foo/../bar/baz',
- '../foo')
diff --git a/Tools/Scripts/webkitpy/common/system/filesystem_unittest.py b/Tools/Scripts/webkitpy/common/system/filesystem_unittest.py
deleted file mode 100644
index cd4ad6e4a..000000000
--- a/Tools/Scripts/webkitpy/common/system/filesystem_unittest.py
+++ /dev/null
@@ -1,264 +0,0 @@
-# vim: set fileencoding=utf-8 :
-# Copyright (C) 2010 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.
-
-# NOTE: The fileencoding comment on the first line of the file is
-# important; without it, Python will choke while trying to parse the file,
-# since it includes non-ASCII characters.
-
-import os
-import stat
-import sys
-import tempfile
-import unittest2 as unittest
-
-from filesystem import FileSystem
-
-
-class GenericFileSystemTests(object):
- """Tests that should pass on either a real or mock filesystem."""
- def setup_generic_test_dir(self):
- fs = self.fs
- self.generic_test_dir = str(self.fs.mkdtemp())
- self.orig_cwd = fs.getcwd()
- fs.chdir(self.generic_test_dir)
- fs.write_text_file('foo.txt', 'foo')
- fs.write_text_file('foobar', 'foobar')
- fs.maybe_make_directory('foodir')
- fs.write_text_file(fs.join('foodir', 'baz'), 'baz')
- fs.chdir(self.orig_cwd)
-
- def teardown_generic_test_dir(self):
- self.fs.rmtree(self.generic_test_dir)
- self.fs.chdir(self.orig_cwd)
- self.generic_test_dir = None
-
- def test_glob__trailing_asterisk(self):
- self.fs.chdir(self.generic_test_dir)
- self.assertEqual(set(self.fs.glob('fo*')), set(['foo.txt', 'foobar', 'foodir']))
-
- def test_glob__leading_asterisk(self):
- self.fs.chdir(self.generic_test_dir)
- self.assertEqual(set(self.fs.glob('*xt')), set(['foo.txt']))
-
- def test_glob__middle_asterisk(self):
- self.fs.chdir(self.generic_test_dir)
- self.assertEqual(set(self.fs.glob('f*r')), set(['foobar', 'foodir']))
-
- def test_glob__period_is_escaped(self):
- self.fs.chdir(self.generic_test_dir)
- self.assertEqual(set(self.fs.glob('foo.*')), set(['foo.txt']))
-
-class RealFileSystemTest(unittest.TestCase, GenericFileSystemTests):
- def setUp(self):
- self.fs = FileSystem()
- self.setup_generic_test_dir()
-
- self._this_dir = os.path.dirname(os.path.abspath(__file__))
- self._missing_file = os.path.join(self._this_dir, 'missing_file.py')
- self._this_file = os.path.join(self._this_dir, 'filesystem_unittest.py')
-
- def tearDown(self):
- self.teardown_generic_test_dir()
- self.fs = None
-
- def test_chdir(self):
- fs = FileSystem()
- cwd = fs.getcwd()
- newdir = '/'
- if sys.platform == 'win32':
- newdir = 'c:\\'
- fs.chdir(newdir)
- self.assertEqual(fs.getcwd(), newdir)
- fs.chdir(cwd)
-
- def test_chdir__notexists(self):
- fs = FileSystem()
- newdir = '/dirdoesnotexist'
- if sys.platform == 'win32':
- newdir = 'c:\\dirdoesnotexist'
- self.assertRaises(OSError, fs.chdir, newdir)
-
- def test_exists__true(self):
- fs = FileSystem()
- self.assertTrue(fs.exists(self._this_file))
-
- def test_exists__false(self):
- fs = FileSystem()
- self.assertFalse(fs.exists(self._missing_file))
-
- def test_getcwd(self):
- fs = FileSystem()
- self.assertTrue(fs.exists(fs.getcwd()))
-
- def test_isdir__true(self):
- fs = FileSystem()
- self.assertTrue(fs.isdir(self._this_dir))
-
- def test_isdir__false(self):
- fs = FileSystem()
- self.assertFalse(fs.isdir(self._this_file))
-
- def test_join(self):
- fs = FileSystem()
- self.assertEqual(fs.join('foo', 'bar'),
- os.path.join('foo', 'bar'))
-
- def test_listdir(self):
- fs = FileSystem()
- with fs.mkdtemp(prefix='filesystem_unittest_') as d:
- self.assertEqual(fs.listdir(d), [])
- new_file = os.path.join(d, 'foo')
- fs.write_text_file(new_file, u'foo')
- self.assertEqual(fs.listdir(d), ['foo'])
- os.remove(new_file)
-
- def test_maybe_make_directory__success(self):
- fs = FileSystem()
-
- with fs.mkdtemp(prefix='filesystem_unittest_') as base_path:
- sub_path = os.path.join(base_path, "newdir")
- self.assertFalse(os.path.exists(sub_path))
- self.assertFalse(fs.isdir(sub_path))
-
- fs.maybe_make_directory(sub_path)
- self.assertTrue(os.path.exists(sub_path))
- self.assertTrue(fs.isdir(sub_path))
-
- # Make sure we can re-create it.
- fs.maybe_make_directory(sub_path)
- self.assertTrue(os.path.exists(sub_path))
- self.assertTrue(fs.isdir(sub_path))
-
- # Clean up.
- os.rmdir(sub_path)
-
- self.assertFalse(os.path.exists(base_path))
- self.assertFalse(fs.isdir(base_path))
-
- def test_maybe_make_directory__failure(self):
- # FIXME: os.chmod() doesn't work on Windows to set directories
- # as readonly, so we skip this test for now.
- if sys.platform in ('win32', 'cygwin'):
- return
-
- fs = FileSystem()
- with fs.mkdtemp(prefix='filesystem_unittest_') as d:
- # Remove write permissions on the parent directory.
- os.chmod(d, stat.S_IRUSR)
-
- # Now try to create a sub directory - should fail.
- sub_dir = fs.join(d, 'subdir')
- self.assertRaises(OSError, fs.maybe_make_directory, sub_dir)
-
- # Clean up in case the test failed and we did create the
- # directory.
- if os.path.exists(sub_dir):
- os.rmdir(sub_dir)
-
- def test_read_and_write_text_file(self):
- fs = FileSystem()
- text_path = None
-
- unicode_text_string = u'\u016An\u012Dc\u014Dde\u033D'
- hex_equivalent = '\xC5\xAA\x6E\xC4\xAD\x63\xC5\x8D\x64\x65\xCC\xBD'
- try:
- text_path = tempfile.mktemp(prefix='tree_unittest_')
- file = fs.open_text_file_for_writing(text_path)
- file.write(unicode_text_string)
- file.close()
-
- file = fs.open_text_file_for_reading(text_path)
- read_text = file.read()
- file.close()
-
- self.assertEqual(read_text, unicode_text_string)
- finally:
- if text_path and fs.isfile(text_path):
- os.remove(text_path)
-
- def test_read_and_write_file(self):
- fs = FileSystem()
- text_path = None
- binary_path = None
-
- unicode_text_string = u'\u016An\u012Dc\u014Dde\u033D'
- hex_equivalent = '\xC5\xAA\x6E\xC4\xAD\x63\xC5\x8D\x64\x65\xCC\xBD'
- malformed_text_hex = '\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\xAE\x20\x56\x69\x73\x75\x61\x6C\x20\x53\x74\x75\x64\x69\x6F\xAE\x20\x32\x30\x31\x30\x0D\x0A'
- malformed_ignored_text_hex = '\x4D\x69\x63\x72\x6F\x73\x6F\x66\x74\x20\x56\x69\x73\x75\x61\x6C\x20\x53\x74\x75\x64\x69\x6F\x20\x32\x30\x31\x30\x0D\x0A'
- try:
- text_path = tempfile.mktemp(prefix='tree_unittest_')
- binary_path = tempfile.mktemp(prefix='tree_unittest_')
- fs.write_text_file(text_path, unicode_text_string)
- contents = fs.read_binary_file(text_path)
- self.assertEqual(contents, hex_equivalent)
-
- fs.write_binary_file(binary_path, hex_equivalent)
- text_contents = fs.read_text_file(binary_path)
- self.assertEqual(text_contents, unicode_text_string)
-
- self.assertRaises(ValueError, fs.write_text_file, binary_path, malformed_text_hex)
- fs.write_binary_file(binary_path, malformed_text_hex)
- self.assertRaises(ValueError, fs.read_text_file, binary_path)
- text_contents = fs.read_binary_file(binary_path).decode('utf8', 'ignore')
- self.assertEquals(text_contents, malformed_ignored_text_hex)
- finally:
- if text_path and fs.isfile(text_path):
- os.remove(text_path)
- if binary_path and fs.isfile(binary_path):
- os.remove(binary_path)
-
- def test_read_binary_file__missing(self):
- fs = FileSystem()
- self.assertRaises(IOError, fs.read_binary_file, self._missing_file)
-
- def test_read_text_file__missing(self):
- fs = FileSystem()
- self.assertRaises(IOError, fs.read_text_file, self._missing_file)
-
- def test_remove_file_with_retry(self):
- RealFileSystemTest._remove_failures = 2
-
- def remove_with_exception(filename):
- RealFileSystemTest._remove_failures -= 1
- if RealFileSystemTest._remove_failures >= 0:
- try:
- raise WindowsError
- except NameError:
- raise FileSystem._WindowsError
-
- fs = FileSystem()
- self.assertTrue(fs.remove('filename', remove_with_exception))
- self.assertEqual(-1, RealFileSystemTest._remove_failures)
-
- def test_sep(self):
- fs = FileSystem()
-
- self.assertEqual(fs.sep, os.sep)
- self.assertEqual(fs.join("foo", "bar"),
- os.path.join("foo", "bar"))
diff --git a/Tools/Scripts/webkitpy/common/system/logtesting.py b/Tools/Scripts/webkitpy/common/system/logtesting.py
deleted file mode 100644
index 1aba1726a..000000000
--- a/Tools/Scripts/webkitpy/common/system/logtesting.py
+++ /dev/null
@@ -1,258 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Supports the unit-testing of logging code.
-
-Provides support for unit-testing messages logged using the built-in
-logging module.
-
-Inherit from the LoggingTestCase class for basic testing needs. For
-more advanced needs (e.g. unit-testing methods that configure logging),
-see the TestLogStream class, and perhaps also the LogTesting class.
-
-"""
-
-import logging
-import unittest2 as unittest
-
-
-class TestLogStream(object):
-
- """Represents a file-like object for unit-testing logging.
-
- This is meant for passing to the logging.StreamHandler constructor.
- Log messages captured by instances of this object can be tested
- using self.assertMessages() below.
-
- """
-
- def __init__(self, test_case):
- """Create an instance.
-
- Args:
- test_case: A unittest.TestCase instance.
-
- """
- self._test_case = test_case
- self.messages = []
- """A list of log messages written to the stream."""
-
- # Python documentation says that any object passed to the StreamHandler
- # constructor should support write() and flush():
- #
- # http://docs.python.org/library/logging.html#module-logging.handlers
- def write(self, message):
- self.messages.append(message)
-
- def flush(self):
- pass
-
- def assertMessages(self, messages):
- """Assert that the given messages match the logged messages.
-
- messages: A list of log message strings.
-
- """
- self._test_case.assertEqual(messages, self.messages)
-
-
-class LogTesting(object):
-
- """Supports end-to-end unit-testing of log messages.
-
- Sample usage:
-
- class SampleTest(unittest.TestCase):
-
- def setUp(self):
- self._log = LogTesting.setUp(self) # Turn logging on.
-
- def tearDown(self):
- self._log.tearDown() # Turn off and reset logging.
-
- def test_logging_in_some_method(self):
- call_some_method() # Contains calls to _log.info(), etc.
-
- # Check the resulting log messages.
- self._log.assertMessages(["INFO: expected message #1",
- "WARNING: expected message #2"])
-
- """
-
- def __init__(self, test_stream, handler):
- """Create an instance.
-
- This method should never be called directly. Instances should
- instead be created using the static setUp() method.
-
- Args:
- test_stream: A TestLogStream instance.
- handler: The handler added to the logger.
-
- """
- self._test_stream = test_stream
- self._handler = handler
-
- @staticmethod
- def _getLogger():
- """Return the logger being tested."""
- # It is possible we might want to return something other than
- # the root logger in some special situation. For now, the
- # root logger seems to suffice.
- return logging.getLogger()
-
- @staticmethod
- def setUp(test_case, logging_level=logging.INFO):
- """Configure logging for unit testing.
-
- Configures the root logger to log to a testing log stream.
- Only messages logged at or above the given level are logged
- to the stream. Messages logged to the stream are formatted
- in the following way, for example--
-
- "INFO: This is a test log message."
-
- This method should normally be called in the setUp() method
- of a unittest.TestCase. See the docstring of this class
- for more details.
-
- Returns:
- A LogTesting instance.
-
- Args:
- test_case: A unittest.TestCase instance.
- logging_level: An integer logging level that is the minimum level
- of log messages you would like to test.
-
- """
- stream = TestLogStream(test_case)
- handler = logging.StreamHandler(stream)
- handler.setLevel(logging_level)
- formatter = logging.Formatter("%(levelname)s: %(message)s")
- handler.setFormatter(formatter)
-
- # Notice that we only change the root logger by adding a handler
- # to it. In particular, we do not reset its level using
- # logger.setLevel(). This ensures that we have not interfered
- # with how the code being tested may have configured the root
- # logger.
- logger = LogTesting._getLogger()
- logger.addHandler(handler)
-
- return LogTesting(stream, handler)
-
- def tearDown(self):
- """Assert there are no remaining log messages, and reset logging.
-
- This method asserts that there are no more messages in the array of
- log messages, and then restores logging to its original state.
- This method should normally be called in the tearDown() method of a
- unittest.TestCase. See the docstring of this class for more details.
-
- """
- self.assertMessages([])
- logger = LogTesting._getLogger()
- logger.removeHandler(self._handler)
-
- def messages(self):
- """Return the current list of log messages."""
- return self._test_stream.messages
-
- # FIXME: Add a clearMessages() method for cases where the caller
- # deliberately doesn't want to assert every message.
-
- # We clear the log messages after asserting since they are no longer
- # needed after asserting. This serves two purposes: (1) it simplifies
- # the calling code when we want to check multiple logging calls in a
- # single test method, and (2) it lets us check in the tearDown() method
- # that there are no remaining log messages to be asserted.
- #
- # The latter ensures that no extra log messages are getting logged that
- # the caller might not be aware of or may have forgotten to check for.
- # This gets us a bit more mileage out of our tests without writing any
- # additional code.
- def assertMessages(self, messages):
- """Assert the current array of log messages, and clear its contents.
-
- Args:
- messages: A list of log message strings.
-
- """
- try:
- self._test_stream.assertMessages(messages)
- finally:
- # We want to clear the array of messages even in the case of
- # an Exception (e.g. an AssertionError). Otherwise, another
- # AssertionError can occur in the tearDown() because the
- # array might not have gotten emptied.
- self._test_stream.messages = []
-
-
-# This class needs to inherit from unittest.TestCase. Otherwise, the
-# setUp() and tearDown() methods will not get fired for test case classes
-# that inherit from this class -- even if the class inherits from *both*
-# unittest.TestCase and LoggingTestCase.
-#
-# FIXME: Rename this class to LoggingTestCaseBase to be sure that
-# the unittest module does not interpret this class as a unittest
-# test case itself.
-class LoggingTestCase(unittest.TestCase):
-
- """Supports end-to-end unit-testing of log messages.
-
- Sample usage:
-
- class SampleTest(LoggingTestCase):
-
- def test_logging_in_some_method(self):
- call_some_method() # Contains calls to _log.info(), etc.
-
- # Check the resulting log messages.
- self.assertLog(["INFO: expected message #1",
- "WARNING: expected message #2"])
-
- """
-
- def setUp(self):
- self._log = LogTesting.setUp(self)
-
- def tearDown(self):
- self._log.tearDown()
-
- def logMessages(self):
- """Return the current list of log messages."""
- return self._log.messages()
-
- # FIXME: Add a clearMessages() method for cases where the caller
- # deliberately doesn't want to assert every message.
-
- # See the code comments preceding LogTesting.assertMessages() for
- # an explanation of why we clear the array of messages after
- # asserting its contents.
- def assertLog(self, messages):
- """Assert the current array of log messages, and clear its contents.
-
- Args:
- messages: A list of log message strings.
-
- """
- self._log.assertMessages(messages)
diff --git a/Tools/Scripts/webkitpy/common/system/logutils.py b/Tools/Scripts/webkitpy/common/system/logutils.py
deleted file mode 100644
index def3bec4e..000000000
--- a/Tools/Scripts/webkitpy/common/system/logutils.py
+++ /dev/null
@@ -1,211 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Supports webkitpy logging."""
-
-# FIXME: Move this file to webkitpy/python24 since logging needs to
-# be configured prior to running version-checking code.
-
-import logging
-import os
-import sys
-
-import webkitpy
-
-
-_log = logging.getLogger(__name__)
-
-# We set these directory paths lazily in get_logger() below.
-_scripts_dir = ""
-"""The normalized, absolute path to the ...Scripts directory."""
-
-_webkitpy_dir = ""
-"""The normalized, absolute path to the ...Scripts/webkitpy directory."""
-
-
-def _normalize_path(path):
- """Return the given path normalized.
-
- Converts a path to an absolute path, removes any trailing slashes,
- removes any extension, and lower-cases it.
-
- """
- path = os.path.abspath(path)
- path = os.path.normpath(path)
- path = os.path.splitext(path)[0] # Remove the extension, if any.
- path = path.lower()
-
- return path
-
-
-# Observe that the implementation of this function does not require
-# the use of any hard-coded strings like "webkitpy", etc.
-#
-# The main benefit this function has over using--
-#
-# _log = logging.getLogger(__name__)
-#
-# is that get_logger() returns the same value even if __name__ is
-# "__main__" -- i.e. even if the module is the script being executed
-# from the command-line.
-def get_logger(path):
- """Return a logging.logger for the given path.
-
- Returns:
- A logger whose name is the name of the module corresponding to
- the given path. If the module is in webkitpy, the name is
- the fully-qualified dotted module name beginning with webkitpy....
- Otherwise, the name is the base name of the module (i.e. without
- any dotted module name prefix).
-
- Args:
- path: The path of the module. Normally, this parameter should be
- the __file__ variable of the module.
-
- Sample usage:
-
- from webkitpy.common.system import logutils
-
- _log = logutils.get_logger(__file__)
-
- """
- # Since we assign to _scripts_dir and _webkitpy_dir in this function,
- # we need to declare them global.
- global _scripts_dir
- global _webkitpy_dir
-
- path = _normalize_path(path)
-
- # Lazily evaluate _webkitpy_dir and _scripts_dir.
- if not _scripts_dir:
- # The normalized, absolute path to ...Scripts/webkitpy/__init__.
- webkitpy_path = _normalize_path(webkitpy.__file__)
-
- _webkitpy_dir = os.path.split(webkitpy_path)[0]
- _scripts_dir = os.path.split(_webkitpy_dir)[0]
-
- if path.startswith(_webkitpy_dir):
- # Remove the initial Scripts directory portion, so the path
- # starts with /webkitpy, for example "/webkitpy/init/logutils".
- path = path[len(_scripts_dir):]
-
- parts = []
- while True:
- (path, tail) = os.path.split(path)
- if not tail:
- break
- parts.insert(0, tail)
-
- logger_name = ".".join(parts) # For example, webkitpy.common.system.logutils.
- else:
- # The path is outside of webkitpy. Default to the basename
- # without the extension.
- basename = os.path.basename(path)
- logger_name = os.path.splitext(basename)[0]
-
- return logging.getLogger(logger_name)
-
-
-def _default_handlers(stream, logging_level):
- """Return a list of the default logging handlers to use.
-
- Args:
- stream: See the configure_logging() docstring.
-
- """
- # Create the filter.
- def should_log(record):
- """Return whether a logging.LogRecord should be logged."""
- # FIXME: Enable the logging of autoinstall messages once
- # autoinstall is adjusted. Currently, autoinstall logs
- # INFO messages when importing already-downloaded packages,
- # which is too verbose.
- if record.name.startswith("webkitpy.thirdparty.autoinstall"):
- return False
- return True
-
- logging_filter = logging.Filter()
- logging_filter.filter = should_log
-
- # Create the handler.
- handler = logging.StreamHandler(stream)
- if logging_level == logging.DEBUG:
- formatter = logging.Formatter("%(name)s: [%(levelname)s] %(message)s")
- else:
- formatter = logging.Formatter("%(message)s")
-
- handler.setFormatter(formatter)
- handler.addFilter(logging_filter)
-
- return [handler]
-
-
-def configure_logging(logging_level=None, logger=None, stream=None,
- handlers=None):
- """Configure logging for standard purposes.
-
- Returns:
- A list of references to the logging handlers added to the root
- logger. This allows the caller to later remove the handlers
- using logger.removeHandler. This is useful primarily during unit
- testing where the caller may want to configure logging temporarily
- and then undo the configuring.
-
- Args:
- logging_level: The minimum logging level to log. Defaults to
- logging.INFO.
- logger: A logging.logger instance to configure. This parameter
- should be used only in unit tests. Defaults to the
- root logger.
- stream: A file-like object to which to log used in creating the default
- handlers. The stream must define an "encoding" data attribute,
- or else logging raises an error. Defaults to sys.stderr.
- handlers: A list of logging.Handler instances to add to the logger
- being configured. If this parameter is provided, then the
- stream parameter is not used.
-
- """
- # If the stream does not define an "encoding" data attribute, the
- # logging module can throw an error like the following:
- #
- # Traceback (most recent call last):
- # File "/System/Library/Frameworks/Python.framework/Versions/2.6/...
- # lib/python2.6/logging/__init__.py", line 761, in emit
- # self.stream.write(fs % msg.encode(self.stream.encoding))
- # LookupError: unknown encoding: unknown
- if logging_level is None:
- logging_level = logging.INFO
- if logger is None:
- logger = logging.getLogger()
- if stream is None:
- stream = sys.stderr
- if handlers is None:
- handlers = _default_handlers(stream, logging_level)
-
- logger.setLevel(logging_level)
-
- for handler in handlers:
- logger.addHandler(handler)
-
- _log.debug("Debug logging enabled.")
-
- return handlers
diff --git a/Tools/Scripts/webkitpy/common/system/logutils_unittest.py b/Tools/Scripts/webkitpy/common/system/logutils_unittest.py
deleted file mode 100644
index 252ebf4cc..000000000
--- a/Tools/Scripts/webkitpy/common/system/logutils_unittest.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Unit tests for logutils.py."""
-
-import logging
-import os
-import unittest2 as unittest
-
-from webkitpy.common.system.logtesting import LogTesting
-from webkitpy.common.system.logtesting import TestLogStream
-from webkitpy.common.system import logutils
-
-
-class GetLoggerTest(unittest.TestCase):
-
- """Tests get_logger()."""
-
- def test_get_logger_in_webkitpy(self):
- logger = logutils.get_logger(__file__)
- self.assertEqual(logger.name, "webkitpy.common.system.logutils_unittest")
-
- def test_get_logger_not_in_webkitpy(self):
- # Temporarily change the working directory so that we
- # can test get_logger() for a path outside of webkitpy.
- working_directory = os.getcwd()
- root_dir = "/"
- os.chdir(root_dir)
-
- logger = logutils.get_logger("/Tools/Scripts/test-webkitpy")
- self.assertEqual(logger.name, "test-webkitpy")
-
- logger = logutils.get_logger("/Tools/Scripts/test-webkitpy.py")
- self.assertEqual(logger.name, "test-webkitpy")
-
- os.chdir(working_directory)
-
-
-class ConfigureLoggingTestBase(unittest.TestCase):
-
- """Base class for configure_logging() unit tests."""
-
- def _logging_level(self):
- raise Exception("Not implemented.")
-
- def setUp(self):
- log_stream = TestLogStream(self)
-
- # Use a logger other than the root logger or one prefixed with
- # "webkitpy." so as not to conflict with test-webkitpy logging.
- logger = logging.getLogger("unittest")
-
- # Configure the test logger not to pass messages along to the
- # root logger. This prevents test messages from being
- # propagated to loggers used by test-webkitpy logging (e.g.
- # the root logger).
- logger.propagate = False
-
- logging_level = self._logging_level()
- self._handlers = logutils.configure_logging(logging_level=logging_level,
- logger=logger,
- stream=log_stream)
- self._log = logger
- self._log_stream = log_stream
-
- def tearDown(self):
- """Reset logging to its original state.
-
- This method ensures that the logging configuration set up
- for a unit test does not affect logging in other unit tests.
-
- """
- logger = self._log
- for handler in self._handlers:
- logger.removeHandler(handler)
-
- def _assert_log_messages(self, messages):
- """Assert that the logged messages equal the given messages."""
- self._log_stream.assertMessages(messages)
-
-
-class ConfigureLoggingTest(ConfigureLoggingTestBase):
-
- """Tests configure_logging() with the default logging level."""
-
- def _logging_level(self):
- return None
-
- def test_info_message(self):
- self._log.info("test message")
- self._assert_log_messages(["test message\n"])
-
- def test_debug_message(self):
- self._log.debug("test message")
- self._assert_log_messages([])
-
- def test_below_threshold_message(self):
- # We test the boundary case of a logging level equal to 19.
- # In practice, we will probably only be calling log.debug(),
- # which corresponds to a logging level of 10.
- level = logging.INFO - 1 # Equals 19.
- self._log.log(level, "test message")
- self._assert_log_messages([])
-
- def test_two_messages(self):
- self._log.info("message1")
- self._log.info("message2")
- self._assert_log_messages(["message1\n",
- "message2\n"])
-
-
-class ConfigureLoggingVerboseTest(ConfigureLoggingTestBase):
- def _logging_level(self):
- return logging.DEBUG
-
- def test_info_message(self):
- self._log.info("test message")
- self._assert_log_messages(["unittest: [INFO] test message\n"])
-
- def test_debug_message(self):
- self._log.debug("test message")
- self._assert_log_messages(["unittest: [DEBUG] test message\n"])
-
-class ConfigureLoggingCustomLevelTest(ConfigureLoggingTestBase):
-
- """Tests configure_logging() with a custom logging level."""
-
- _level = 36
-
- def _logging_level(self):
- return self._level
-
- def test_logged_message(self):
- self._log.log(self._level, "test message")
- self._assert_log_messages(["test message\n"])
-
- def test_below_threshold_message(self):
- self._log.log(self._level - 1, "test message")
- self._assert_log_messages([])
diff --git a/Tools/Scripts/webkitpy/common/system/outputcapture.py b/Tools/Scripts/webkitpy/common/system/outputcapture.py
deleted file mode 100644
index 893b5e528..000000000
--- a/Tools/Scripts/webkitpy/common/system/outputcapture.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright (c) 2009, 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.
-#
-# Class for unittest support. Used for capturing stderr/stdout.
-
-import logging
-import unittest # Don't use unittest2 here as the autoinstaller may not have it yet.
-import sys
-from StringIO import StringIO
-
-
-class OutputCapture(object):
- # By default we capture the output to a stream. Other modules may override
- # this function in order to do things like pass through the output. See
- # webkitpy.test.main for an example.
- @staticmethod
- def stream_wrapper(stream):
- return StringIO()
-
- def __init__(self):
- self.saved_outputs = dict()
- self._log_level = logging.INFO
-
- def set_log_level(self, log_level):
- self._log_level = log_level
- if hasattr(self, '_logs_handler'):
- self._logs_handler.setLevel(self._log_level)
-
- def _capture_output_with_name(self, output_name):
- stream = getattr(sys, output_name)
- captured_output = self.stream_wrapper(stream)
- self.saved_outputs[output_name] = stream
- setattr(sys, output_name, captured_output)
- return captured_output
-
- def _restore_output_with_name(self, output_name):
- captured_output = getattr(sys, output_name).getvalue()
- setattr(sys, output_name, self.saved_outputs[output_name])
- del self.saved_outputs[output_name]
- return captured_output
-
- def capture_output(self):
- self._logs = StringIO()
- self._logs_handler = logging.StreamHandler(self._logs)
- self._logs_handler.setLevel(self._log_level)
- self._logger = logging.getLogger()
- self._orig_log_level = self._logger.level
- self._logger.addHandler(self._logs_handler)
- self._logger.setLevel(min(self._log_level, self._orig_log_level))
- return (self._capture_output_with_name("stdout"), self._capture_output_with_name("stderr"))
-
- def restore_output(self):
- self._logger.removeHandler(self._logs_handler)
- self._logger.setLevel(self._orig_log_level)
- self._logs_handler.flush()
- self._logs.flush()
- logs_string = self._logs.getvalue()
- delattr(self, '_logs_handler')
- delattr(self, '_logs')
- return (self._restore_output_with_name("stdout"), self._restore_output_with_name("stderr"), logs_string)
-
- def assert_outputs(self, testcase, function, args=[], kwargs={}, expected_stdout="", expected_stderr="", expected_exception=None, expected_logs=None):
- self.capture_output()
- try:
- if expected_exception:
- return_value = testcase.assertRaises(expected_exception, function, *args, **kwargs)
- else:
- return_value = function(*args, **kwargs)
- finally:
- (stdout_string, stderr_string, logs_string) = self.restore_output()
-
- if hasattr(testcase, 'assertMultiLineEqual'):
- testassert = testcase.assertMultiLineEqual
- else:
- testassert = testcase.assertEqual
-
- testassert(stdout_string, expected_stdout)
- testassert(stderr_string, expected_stderr)
- if expected_logs is not None:
- testassert(logs_string, expected_logs)
- # This is a little strange, but I don't know where else to return this information.
- return return_value
-
-
-class OutputCaptureTestCaseBase(unittest.TestCase):
- maxDiff = None
-
- def setUp(self):
- unittest.TestCase.setUp(self)
- self.output_capture = OutputCapture()
- (self.__captured_stdout, self.__captured_stderr) = self.output_capture.capture_output()
-
- def tearDown(self):
- del self.__captured_stdout
- del self.__captured_stderr
- self.output_capture.restore_output()
- unittest.TestCase.tearDown(self)
-
- def assertStdout(self, expected_stdout):
- self.assertEqual(expected_stdout, self.__captured_stdout.getvalue())
-
- def assertStderr(self, expected_stderr):
- self.assertEqual(expected_stderr, self.__captured_stderr.getvalue())
diff --git a/Tools/Scripts/webkitpy/common/system/outputcapture_unittest.py b/Tools/Scripts/webkitpy/common/system/outputcapture_unittest.py
deleted file mode 100644
index 7ef2e247a..000000000
--- a/Tools/Scripts/webkitpy/common/system/outputcapture_unittest.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2011 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. 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 INC. 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 logging
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-
-
-_log = logging.getLogger(__name__)
-
-
-class OutputCaptureTest(unittest.TestCase):
- def setUp(self):
- self.output = OutputCapture()
-
- def log_all_levels(self):
- _log.info('INFO')
- _log.warning('WARN')
- _log.error('ERROR')
- _log.critical('CRITICAL')
-
- def assertLogged(self, expected_logs):
- actual_stdout, actual_stderr, actual_logs = self.output.restore_output()
- self.assertEqual('', actual_stdout)
- self.assertEqual('', actual_stderr)
- self.assertMultiLineEqual(expected_logs, actual_logs)
-
- def test_initial_log_level(self):
- self.output.capture_output()
- self.log_all_levels()
- self.assertLogged('INFO\nWARN\nERROR\nCRITICAL\n')
-
- def test_set_log_level(self):
- self.output.set_log_level(logging.ERROR)
- self.output.capture_output()
- self.log_all_levels()
- self.output.set_log_level(logging.WARN)
- self.log_all_levels()
- self.assertLogged('ERROR\nCRITICAL\nWARN\nERROR\nCRITICAL\n')
diff --git a/Tools/Scripts/webkitpy/common/system/outputtee.py b/Tools/Scripts/webkitpy/common/system/outputtee.py
deleted file mode 100644
index 12366e865..000000000
--- a/Tools/Scripts/webkitpy/common/system/outputtee.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (c) 2009, Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import codecs
-import os
-import sys
-
-
-# Simple class to split output between multiple destinations
-class Tee:
- def __init__(self, *files):
- self.files = files
-
- # Callers should pass an already encoded string for writing.
- def write(self, bytes):
- for file in self.files:
- file.write(bytes)
-
-
-class OutputTee:
- def __init__(self):
- self._original_stdout = None
- self._original_stderr = None
- self._files_for_output = []
-
- def add_log(self, path):
- log_file = self._open_log_file(path)
- self._files_for_output.append(log_file)
- self._tee_outputs_to_files(self._files_for_output)
- return log_file
-
- def remove_log(self, log_file):
- self._files_for_output.remove(log_file)
- self._tee_outputs_to_files(self._files_for_output)
- log_file.close()
-
- @staticmethod
- def _open_log_file(log_path):
- (log_directory, log_name) = os.path.split(log_path)
- if log_directory and not os.path.exists(log_directory):
- os.makedirs(log_directory)
- return codecs.open(log_path, "a+", "utf-8")
-
- def _tee_outputs_to_files(self, files):
- if not self._original_stdout:
- self._original_stdout = sys.stdout
- self._original_stderr = sys.stderr
- if files and len(files):
- sys.stdout = Tee(self._original_stdout, *files)
- sys.stderr = Tee(self._original_stderr, *files)
- else:
- sys.stdout = self._original_stdout
- sys.stderr = self._original_stderr
diff --git a/Tools/Scripts/webkitpy/common/system/outputtee_unittest.py b/Tools/Scripts/webkitpy/common/system/outputtee_unittest.py
deleted file mode 100644
index 8d06916f8..000000000
--- a/Tools/Scripts/webkitpy/common/system/outputtee_unittest.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com>
-#
-# 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.
-
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.common.system.outputtee import Tee, OutputTee
-
-
-class SimpleTeeTest(unittest.TestCase):
- def test_simple_tee(self):
- file1, file2 = StringIO.StringIO(), StringIO.StringIO()
- tee = Tee(file1, file2)
- tee.write("foo bar\n")
- tee.write("baz\n")
-
- self.assertEqual(file1.getvalue(), "foo bar\nbaz\n")
- self.assertEqual(file2.getvalue(), file1.getvalue())
diff --git a/Tools/Scripts/webkitpy/common/system/path.py b/Tools/Scripts/webkitpy/common/system/path.py
deleted file mode 100644
index e5a66bf87..000000000
--- a/Tools/Scripts/webkitpy/common/system/path.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""generic routines to convert platform-specific paths to URIs."""
-
-import atexit
-import subprocess
-import sys
-import threading
-import urllib
-
-
-def abspath_to_uri(platform, path):
- """Converts a platform-specific absolute path to a file: URL."""
- return "file:" + _escape(_convert_path(platform, path))
-
-
-def cygpath(path):
- """Converts an absolute cygwin path to an absolute Windows path."""
- return _CygPath.convert_using_singleton(path)
-
-
-# Note that this object is not threadsafe and must only be called
-# from multiple threads under protection of a lock (as is done in cygpath())
-class _CygPath(object):
- """Manages a long-running 'cygpath' process for file conversion."""
- _lock = None
- _singleton = None
-
- @staticmethod
- def stop_cygpath_subprocess():
- if not _CygPath._lock:
- return
-
- with _CygPath._lock:
- if _CygPath._singleton:
- _CygPath._singleton.stop()
-
- @staticmethod
- def convert_using_singleton(path):
- if not _CygPath._lock:
- _CygPath._lock = threading.Lock()
-
- with _CygPath._lock:
- if not _CygPath._singleton:
- _CygPath._singleton = _CygPath()
- # Make sure the cygpath subprocess always gets shutdown cleanly.
- atexit.register(_CygPath.stop_cygpath_subprocess)
-
- return _CygPath._singleton.convert(path)
-
- def __init__(self):
- self._child_process = None
-
- def start(self):
- assert(self._child_process is None)
- args = ['cygpath', '-f', '-', '-wa']
- self._child_process = subprocess.Popen(args,
- stdin=subprocess.PIPE,
- stdout=subprocess.PIPE)
-
- def is_running(self):
- if not self._child_process:
- return False
- return self._child_process.returncode is None
-
- def stop(self):
- if self._child_process:
- self._child_process.stdin.close()
- self._child_process.wait()
- self._child_process = None
-
- def convert(self, path):
- if not self.is_running():
- self.start()
- self._child_process.stdin.write("%s\r\n" % path)
- self._child_process.stdin.flush()
- windows_path = self._child_process.stdout.readline().rstrip()
- # Some versions of cygpath use lowercase drive letters while others
- # use uppercase. We always convert to uppercase for consistency.
- windows_path = '%s%s' % (windows_path[0].upper(), windows_path[1:])
- return windows_path
-
-
-def _escape(path):
- """Handle any characters in the path that should be escaped."""
- # FIXME: web browsers don't appear to blindly quote every character
- # when converting filenames to files. Instead of using urllib's default
- # rules, we allow a small list of other characters through un-escaped.
- # It's unclear if this is the best possible solution.
- return urllib.quote(path, safe='/+:')
-
-
-def _convert_path(platform, path):
- """Handles any os-specific path separators, mappings, etc."""
- if platform.is_cygwin():
- return _winpath_to_uri(cygpath(path))
- if platform.is_win():
- return _winpath_to_uri(path)
- return _unixypath_to_uri(path)
-
-
-def _winpath_to_uri(path):
- """Converts a window absolute path to a file: URL."""
- return "///" + path.replace("\\", "/")
-
-
-def _unixypath_to_uri(path):
- """Converts a unix-style path to a file: URL."""
- return "//" + path
diff --git a/Tools/Scripts/webkitpy/common/system/path_unittest.py b/Tools/Scripts/webkitpy/common/system/path_unittest.py
deleted file mode 100644
index 118546e68..000000000
--- a/Tools/Scripts/webkitpy/common/system/path_unittest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-import sys
-
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.system.platforminfo import PlatformInfo
-from webkitpy.common.system.platforminfo_mock import MockPlatformInfo
-from webkitpy.common.system import path
-
-class AbspathTest(unittest.TestCase):
- def platforminfo(self):
- return SystemHost().platform
-
- def test_abspath_to_uri_cygwin(self):
- if sys.platform != 'cygwin':
- return
- self.assertEqual(path.abspath_to_uri(self.platforminfo(), '/cygdrive/c/foo/bar.html'),
- 'file:///C:/foo/bar.html')
-
- def test_abspath_to_uri_unixy(self):
- self.assertEqual(path.abspath_to_uri(MockPlatformInfo(), "/foo/bar.html"),
- 'file:///foo/bar.html')
-
- def test_abspath_to_uri_win(self):
- if sys.platform != 'win32':
- return
- self.assertEqual(path.abspath_to_uri(self.platforminfo(), 'c:\\foo\\bar.html'),
- 'file:///c:/foo/bar.html')
-
- def test_abspath_to_uri_escaping_unixy(self):
- self.assertEqual(path.abspath_to_uri(MockPlatformInfo(), '/foo/bar + baz%?.html'),
- 'file:///foo/bar%20+%20baz%25%3F.html')
-
- # Note that you can't have '?' in a filename on windows.
- def test_abspath_to_uri_escaping_cygwin(self):
- if sys.platform != 'cygwin':
- return
- self.assertEqual(path.abspath_to_uri(self.platforminfo(), '/cygdrive/c/foo/bar + baz%.html'),
- 'file:///C:/foo/bar%20+%20baz%25.html')
-
- def test_stop_cygpath_subprocess(self):
- if sys.platform != 'cygwin':
- return
-
- # Call cygpath to ensure the subprocess is running.
- path.cygpath("/cygdrive/c/foo.txt")
- self.assertTrue(path._CygPath._singleton.is_running())
-
- # Stop it.
- path._CygPath.stop_cygpath_subprocess()
-
- # Ensure that it is stopped.
- self.assertFalse(path._CygPath._singleton.is_running())
diff --git a/Tools/Scripts/webkitpy/common/system/platforminfo.py b/Tools/Scripts/webkitpy/common/system/platforminfo.py
deleted file mode 100644
index 582e1996f..000000000
--- a/Tools/Scripts/webkitpy/common/system/platforminfo.py
+++ /dev/null
@@ -1,161 +0,0 @@
-# Copyright (c) 2011 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.
-
-import re
-import sys
-
-
-class PlatformInfo(object):
- """This class provides a consistent (and mockable) interpretation of
- system-specific values (like sys.platform and platform.mac_ver())
- to be used by the rest of the webkitpy code base.
-
- Public (static) properties:
- -- os_name
- -- os_version
-
- Note that 'future' is returned for os_version if the operating system is
- newer than one known to the code.
- """
-
- def __init__(self, sys_module, platform_module, executive):
- self._executive = executive
- self._platform_module = platform_module
- self.os_name = self._determine_os_name(sys_module.platform)
- if self.os_name == 'linux':
- self.os_version = self._determine_linux_version()
- if self.os_name == 'freebsd':
- self.os_version = platform_module.release()
- if self.os_name.startswith('mac'):
- self.os_version = self._determine_mac_version(platform_module.mac_ver()[0])
- if self.os_name.startswith('win'):
- self.os_version = self._determine_win_version(self._win_version_tuple(sys_module))
- self._is_cygwin = sys_module.platform == 'cygwin'
-
- def is_mac(self):
- return self.os_name == 'mac'
-
- def is_win(self):
- return self.os_name == 'win'
-
- def is_cygwin(self):
- return self._is_cygwin
-
- def is_linux(self):
- return self.os_name == 'linux'
-
- def is_freebsd(self):
- return self.os_name == 'freebsd'
-
- def display_name(self):
- # platform.platform() returns Darwin information for Mac, which is just confusing.
- if self.is_mac():
- return "Mac OS X %s" % self._platform_module.mac_ver()[0]
-
- # Returns strings like:
- # Linux-2.6.18-194.3.1.el5-i686-with-redhat-5.5-Final
- # Windows-2008ServerR2-6.1.7600
- return self._platform_module.platform()
-
- def total_bytes_memory(self):
- if self.is_mac():
- return long(self._executive.run_command(["sysctl", "-n", "hw.memsize"]))
- return None
-
- def terminal_width(self):
- """Returns sys.maxint if the width cannot be determined."""
- try:
- if self.is_win():
- # From http://code.activestate.com/recipes/440694-determine-size-of-console-window-on-windows/
- from ctypes import windll, create_string_buffer
- handle = windll.kernel32.GetStdHandle(-12) # -12 == stderr
- console_screen_buffer_info = create_string_buffer(22) # 22 == sizeof(console_screen_buffer_info)
- if windll.kernel32.GetConsoleScreenBufferInfo(handle, console_screen_buffer_info):
- import struct
- _, _, _, _, _, left, _, right, _, _, _ = struct.unpack("hhhhHhhhhhh", console_screen_buffer_info.raw)
- # Note that we return 1 less than the width since writing into the rightmost column
- # automatically performs a line feed.
- return right - left
- return sys.maxint
- else:
- import fcntl
- import struct
- import termios
- packed = fcntl.ioctl(sys.stderr.fileno(), termios.TIOCGWINSZ, '\0' * 8)
- _, columns, _, _ = struct.unpack('HHHH', packed)
- return columns
- except:
- return sys.maxint
-
- def _determine_os_name(self, sys_platform):
- if sys_platform == 'darwin':
- return 'mac'
- if sys_platform.startswith('linux'):
- return 'linux'
- if sys_platform in ('win32', 'cygwin'):
- return 'win'
- if sys_platform.startswith('freebsd'):
- return 'freebsd'
- raise AssertionError('unrecognized platform string "%s"' % sys_platform)
-
- def _determine_mac_version(self, mac_version_string):
- release_version = mac_version_string.split('.')[1]
- version_strings = {
- '5': 'leopard',
- '6': 'snowleopard',
- '7': 'lion',
- '8': 'mountainlion',
- }
- assert release_version >= min(version_strings.keys())
- return version_strings.get(release_version, 'future')
-
- def _determine_linux_version(self):
- # FIXME: we ignore whatever the real version is and pretend it's lucid for now.
- return 'lucid'
-
- def _determine_win_version(self, win_version_tuple):
- if win_version_tuple[:3] == (6, 1, 7600):
- return '7sp0'
- if win_version_tuple[:2] == (6, 0):
- return 'vista'
- if win_version_tuple[:2] == (5, 1):
- return 'xp'
- assert win_version_tuple[0] > 6 or win_version_tuple[1] >= 1, 'Unrecognized Windows version tuple: "%s"' % (win_version_tuple,)
- return 'future'
-
- def _win_version_tuple(self, sys_module):
- if hasattr(sys_module, 'getwindowsversion'):
- return sys_module.getwindowsversion()
- return self._win_version_tuple_from_cmd()
-
- def _win_version_tuple_from_cmd(self):
- # Note that this should only ever be called on windows, so this should always work.
- ver_output = self._executive.run_command(['cmd', '/c', 'ver'], decode_output=False)
- match_object = re.search(r'(?P<major>\d)\.(?P<minor>\d)\.(?P<build>\d+)', ver_output)
- assert match_object, 'cmd returned an unexpected version string: ' + ver_output
- return tuple(map(int, match_object.groups()))
diff --git a/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py b/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py
deleted file mode 100644
index bc72810cf..000000000
--- a/Tools/Scripts/webkitpy/common/system/platforminfo_mock.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class MockPlatformInfo(object):
- def __init__(self, os_name='mac', os_version='snowleopard'):
- self.os_name = os_name
- self.os_version = os_version
-
- def is_mac(self):
- return self.os_name == 'mac'
-
- def is_linux(self):
- return self.os_name == 'linux'
-
- def is_win(self):
- return self.os_name == 'win'
-
- def is_cygwin(self):
- return self.os_name == 'cygwin'
-
- def is_freebsd(self):
- return self.os_name == 'freebsd'
-
- def display_name(self):
- return "MockPlatform 1.0"
-
- def total_bytes_memory(self):
- return 3 * 1024 * 1024 * 1024 # 3GB is a reasonable amount of ram to mock.
-
- def terminal_width(self):
- return 80
diff --git a/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py b/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py
deleted file mode 100644
index bdb0f8661..000000000
--- a/Tools/Scripts/webkitpy/common/system/platforminfo_unittest.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright (C) 2011 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.
-
-import platform
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2
-from webkitpy.common.system.platforminfo import PlatformInfo
-
-
-def fake_sys(platform_str='darwin', windows_version_tuple=None):
-
- class FakeSysModule(object):
- platform = platform_str
- if windows_version_tuple:
- getwindowsversion = lambda x: windows_version_tuple
-
- return FakeSysModule()
-
-
-def fake_platform(mac_version_string='10.6.3', release_string='bar'):
-
- class FakePlatformModule(object):
- def mac_ver(self):
- return tuple([mac_version_string, tuple(['', '', '']), 'i386'])
-
- def platform(self):
- return 'foo'
-
- def release(self):
- return release_string
-
- return FakePlatformModule()
-
-
-def fake_executive(output=None):
- if output:
- return MockExecutive2(output=output)
- return MockExecutive2(exception=SystemError)
-
-
-class TestPlatformInfo(unittest.TestCase):
- def make_info(self, sys_module=None, platform_module=None, executive=None):
- return PlatformInfo(sys_module or fake_sys(), platform_module or fake_platform(), executive or fake_executive())
-
- # FIXME: This should be called integration_test_real_code(), but integration tests aren't
- # yet run by default and there's no reason not to run this everywhere by default.
- def test_real_code(self):
- # This test makes sure the real (unmocked) code actually works.
- info = PlatformInfo(sys, platform, Executive())
- self.assertNotEquals(info.os_name, '')
- self.assertNotEquals(info.os_version, '')
- self.assertNotEquals(info.display_name(), '')
- self.assertTrue(info.is_mac() or info.is_win() or info.is_linux() or info.is_freebsd())
- self.assertIsNotNone(info.terminal_width())
-
- if info.is_mac():
- self.assertTrue(info.total_bytes_memory() > 0)
- else:
- self.assertIsNone(info.total_bytes_memory())
-
- def test_os_name_and_wrappers(self):
- info = self.make_info(fake_sys('linux2'))
- self.assertTrue(info.is_linux())
- self.assertFalse(info.is_mac())
- self.assertFalse(info.is_win())
- self.assertFalse(info.is_freebsd())
-
- info = self.make_info(fake_sys('linux3'))
- self.assertTrue(info.is_linux())
- self.assertFalse(info.is_mac())
- self.assertFalse(info.is_win())
- self.assertFalse(info.is_freebsd())
-
- info = self.make_info(fake_sys('darwin'), fake_platform('10.6.3'))
- self.assertEqual(info.os_name, 'mac')
- self.assertFalse(info.is_linux())
- self.assertTrue(info.is_mac())
- self.assertFalse(info.is_win())
- self.assertFalse(info.is_freebsd())
-
- info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
- self.assertEqual(info.os_name, 'win')
- self.assertFalse(info.is_linux())
- self.assertFalse(info.is_mac())
- self.assertTrue(info.is_win())
- self.assertFalse(info.is_freebsd())
-
- info = self.make_info(fake_sys('cygwin'), executive=fake_executive('6.1.7600'))
- self.assertEqual(info.os_name, 'win')
- self.assertFalse(info.is_linux())
- self.assertFalse(info.is_mac())
- self.assertTrue(info.is_win())
- self.assertFalse(info.is_freebsd())
-
- info = self.make_info(fake_sys('freebsd8'))
- self.assertEqual(info.os_name, 'freebsd')
- self.assertFalse(info.is_linux())
- self.assertFalse(info.is_mac())
- self.assertFalse(info.is_win())
- self.assertTrue(info.is_freebsd())
-
- self.assertRaises(AssertionError, self.make_info, fake_sys('vms'))
-
- def test_os_version(self):
- self.assertRaises(AssertionError, self.make_info, fake_sys('darwin'), fake_platform('10.4.3'))
- self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.5.1')).os_version, 'leopard')
- self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.6.1')).os_version, 'snowleopard')
- self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.7.1')).os_version, 'lion')
- self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.8.1')).os_version, 'mountainlion')
- self.assertEqual(self.make_info(fake_sys('darwin'), fake_platform('10.9.0')).os_version, 'future')
-
- self.assertEqual(self.make_info(fake_sys('linux2')).os_version, 'lucid')
-
- self.assertEqual(self.make_info(fake_sys('freebsd8'), fake_platform('', '8.3-PRERELEASE')).os_version, '8.3-PRERELEASE')
- self.assertEqual(self.make_info(fake_sys('freebsd9'), fake_platform('', '9.0-RELEASE')).os_version, '9.0-RELEASE')
-
- self.assertRaises(AssertionError, self.make_info, fake_sys('win32', tuple([5, 0, 1234])))
- self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 2, 1234]))).os_version, 'future')
- self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 1, 7600]))).os_version, '7sp0')
- self.assertEqual(self.make_info(fake_sys('win32', tuple([6, 0, 1234]))).os_version, 'vista')
- self.assertEqual(self.make_info(fake_sys('win32', tuple([5, 1, 1234]))).os_version, 'xp')
-
- self.assertRaises(AssertionError, self.make_info, fake_sys('win32'), executive=fake_executive('5.0.1234'))
- self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.2.1234')).os_version, 'future')
- self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.1.7600')).os_version, '7sp0')
- self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('6.0.1234')).os_version, 'vista')
- self.assertEqual(self.make_info(fake_sys('cygwin'), executive=fake_executive('5.1.1234')).os_version, 'xp')
-
- def test_display_name(self):
- info = self.make_info(fake_sys('darwin'))
- self.assertNotEquals(info.display_name(), '')
-
- info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
- self.assertNotEquals(info.display_name(), '')
-
- info = self.make_info(fake_sys('linux2'))
- self.assertNotEquals(info.display_name(), '')
-
- info = self.make_info(fake_sys('freebsd9'))
- self.assertNotEquals(info.display_name(), '')
-
- def test_total_bytes_memory(self):
- info = self.make_info(fake_sys('darwin'), fake_platform('10.6.3'), fake_executive('1234'))
- self.assertEqual(info.total_bytes_memory(), 1234)
-
- info = self.make_info(fake_sys('win32', tuple([6, 1, 7600])))
- self.assertIsNone(info.total_bytes_memory())
-
- info = self.make_info(fake_sys('linux2'))
- self.assertIsNone(info.total_bytes_memory())
-
- info = self.make_info(fake_sys('freebsd9'))
- self.assertIsNone(info.total_bytes_memory())
diff --git a/Tools/Scripts/webkitpy/common/system/profiler.py b/Tools/Scripts/webkitpy/common/system/profiler.py
deleted file mode 100644
index 0208cf898..000000000
--- a/Tools/Scripts/webkitpy/common/system/profiler.py
+++ /dev/null
@@ -1,210 +0,0 @@
-# Copyright (C) 2012 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 Google name 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.
-
-import logging
-import re
-import itertools
-
-_log = logging.getLogger(__name__)
-
-
-class ProfilerFactory(object):
- @classmethod
- def create_profiler(cls, host, executable_path, output_dir, profiler_name=None, identifier=None):
- profilers = cls.profilers_for_platform(host.platform)
- if not profilers:
- return None
- profiler_name = profiler_name or cls.default_profiler_name(host.platform)
- profiler_class = next(itertools.ifilter(lambda profiler: profiler.name == profiler_name, profilers), None)
- if not profiler_class:
- return None
- return profilers[0](host, executable_path, output_dir, identifier)
-
- @classmethod
- def default_profiler_name(cls, platform):
- profilers = cls.profilers_for_platform(platform)
- return profilers[0].name if profilers else None
-
- @classmethod
- def profilers_for_platform(cls, platform):
- # GooglePProf requires TCMalloc/google-perftools, but is available everywhere.
- profilers_by_os_name = {
- 'mac': [IProfiler, Sample, GooglePProf],
- 'linux': [Perf, GooglePProf],
- # Note: freebsd, win32 have no profilers defined yet, thus --profile will be ignored
- # by default, but a profiler can be selected with --profiler=PROFILER explicitly.
- }
- return profilers_by_os_name.get(platform.os_name, [])
-
-
-class Profiler(object):
- # Used by ProfilerFactory to lookup a profiler from the --profiler=NAME option.
- name = None
-
- def __init__(self, host, executable_path, output_dir, identifier=None):
- self._host = host
- self._executable_path = executable_path
- self._output_dir = output_dir
- self._identifier = "test"
- self._host.filesystem.maybe_make_directory(self._output_dir)
-
- def adjusted_environment(self, env):
- return env
-
- def attach_to_pid(self, pid):
- pass
-
- def profile_after_exit(self):
- pass
-
-
-class SingleFileOutputProfiler(Profiler):
- def __init__(self, host, executable_path, output_dir, output_suffix, identifier=None):
- super(SingleFileOutputProfiler, self).__init__(host, executable_path, output_dir, identifier)
- # FIXME: Currently all reports are kept as test.*, until we fix that, search up to 1000 names before giving up.
- self._output_path = self._host.workspace.find_unused_filename(self._output_dir, self._identifier, output_suffix, search_limit=1000)
- assert(self._output_path)
-
-
-class GooglePProf(SingleFileOutputProfiler):
- name = 'pprof'
-
- def __init__(self, host, executable_path, output_dir, identifier=None):
- super(GooglePProf, self).__init__(host, executable_path, output_dir, "pprof", identifier)
-
- def adjusted_environment(self, env):
- env['CPUPROFILE'] = self._output_path
- return env
-
- def _first_ten_lines_of_profile(self, pprof_output):
- match = re.search("^Total:[^\n]*\n((?:[^\n]*\n){0,10})", pprof_output, re.MULTILINE)
- return match.group(1) if match else None
-
- def _pprof_path(self):
- # FIXME: We should have code to find the right google-pprof executable, some Googlers have
- # google-pprof installed as "pprof" on their machines for them.
- return '/usr/bin/google-pprof'
-
- def profile_after_exit(self):
- # google-pprof doesn't check its arguments, so we have to.
- if not (self._host.filesystem.exists(self._output_path)):
- print "Failed to gather profile, %s does not exist." % self._output_path
- return
-
- pprof_args = [self._pprof_path(), '--text', self._executable_path, self._output_path]
- profile_text = self._host.executive.run_command(pprof_args)
- print "First 10 lines of pprof --text:"
- print self._first_ten_lines_of_profile(profile_text)
- print "http://google-perftools.googlecode.com/svn/trunk/doc/cpuprofile.html documents output."
- print
- print "To interact with the the full profile, including produce graphs:"
- print ' '.join([self._pprof_path(), self._executable_path, self._output_path])
-
-
-class Perf(SingleFileOutputProfiler):
- name = 'perf'
-
- def __init__(self, host, executable_path, output_dir, identifier=None):
- super(Perf, self).__init__(host, executable_path, output_dir, "data", identifier)
- self._perf_process = None
- self._pid_being_profiled = None
-
- def _perf_path(self):
- # FIXME: We may need to support finding the perf binary in other locations.
- return 'perf'
-
- def attach_to_pid(self, pid):
- assert(not self._perf_process and not self._pid_being_profiled)
- self._pid_being_profiled = pid
- cmd = [self._perf_path(), "record", "--call-graph", "--pid", pid, "--output", self._output_path]
- self._perf_process = self._host.executive.popen(cmd)
-
- def _first_ten_lines_of_profile(self, perf_output):
- match = re.search("^#[^\n]*\n((?: [^\n]*\n){1,10})", perf_output, re.MULTILINE)
- return match.group(1) if match else None
-
- def profile_after_exit(self):
- # Perf doesn't automatically watch the attached pid for death notifications,
- # so we have to do it for it, and then tell it its time to stop sampling. :(
- self._host.executive.wait_limited(self._pid_being_profiled, limit_in_seconds=10)
- perf_exitcode = self._perf_process.poll()
- if perf_exitcode is None: # This should always be the case, unless perf error'd out early.
- self._host.executive.interrupt(self._perf_process.pid)
-
- perf_exitcode = self._perf_process.wait()
- if perf_exitcode not in (0, -2): # The exit code should always be -2, as we're always interrupting perf.
- print "'perf record' failed (exit code: %i), can't process results:" % perf_exitcode
- return
-
- perf_args = [self._perf_path(), 'report', '--call-graph', 'none', '--input', self._output_path]
- print "First 10 lines of 'perf report --call-graph=none':"
-
- print " ".join(perf_args)
- perf_output = self._host.executive.run_command(perf_args)
- print self._first_ten_lines_of_profile(perf_output)
-
- print "To view the full profile, run:"
- print ' '.join([self._perf_path(), 'report', '-i', self._output_path])
- print # An extra line between tests looks nicer.
-
-
-class Sample(SingleFileOutputProfiler):
- name = 'sample'
-
- def __init__(self, host, executable_path, output_dir, identifier=None):
- super(Sample, self).__init__(host, executable_path, output_dir, "txt", identifier)
- self._profiler_process = None
-
- def attach_to_pid(self, pid):
- cmd = ["sample", pid, "-mayDie", "-file", self._output_path]
- self._profiler_process = self._host.executive.popen(cmd)
-
- def profile_after_exit(self):
- self._profiler_process.wait()
-
-
-class IProfiler(SingleFileOutputProfiler):
- name = 'iprofiler'
-
- def __init__(self, host, executable_path, output_dir, identifier=None):
- super(IProfiler, self).__init__(host, executable_path, output_dir, "dtps", identifier)
- self._profiler_process = None
-
- def attach_to_pid(self, pid):
- # FIXME: iprofiler requires us to pass the directory separately
- # from the basename of the file, with no control over the extension.
- fs = self._host.filesystem
- cmd = ["iprofiler", "-timeprofiler", "-a", pid,
- "-d", fs.dirname(self._output_path), "-o", fs.splitext(fs.basename(self._output_path))[0]]
- # FIXME: Consider capturing instead of letting instruments spam to stderr directly.
- self._profiler_process = self._host.executive.popen(cmd)
-
- def profile_after_exit(self):
- # It seems like a nicer user experiance to wait on the profiler to exit to prevent
- # it from spewing to stderr at odd times.
- self._profiler_process.wait()
diff --git a/Tools/Scripts/webkitpy/common/system/profiler_unittest.py b/Tools/Scripts/webkitpy/common/system/profiler_unittest.py
deleted file mode 100644
index 22bc2df6e..000000000
--- a/Tools/Scripts/webkitpy/common/system/profiler_unittest.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.platforminfo_mock import MockPlatformInfo
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-from .profiler import ProfilerFactory, GooglePProf
-
-
-class ProfilerFactoryTest(unittest.TestCase):
- def _assert_default_profiler_name(self, os_name, expected_profiler_name):
- profiler_name = ProfilerFactory.default_profiler_name(MockPlatformInfo(os_name))
- self.assertEqual(profiler_name, expected_profiler_name)
-
- def test_default_profilers(self):
- self._assert_default_profiler_name('mac', 'iprofiler')
- self._assert_default_profiler_name('linux', 'perf')
- self._assert_default_profiler_name('win32', None)
- self._assert_default_profiler_name('freebsd', None)
-
- def test_default_profiler_output(self):
- host = MockSystemHost()
- self.assertFalse(host.filesystem.exists("/tmp/output"))
-
- # Default mocks are Mac, so iprofile should be default.
- profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tmp/output')
- self.assertTrue(host.filesystem.exists("/tmp/output"))
- self.assertEqual(profiler._output_path, "/tmp/output/test.dtps")
-
- # Linux defaults to perf.
- host.platform.os_name = 'linux'
- profiler = ProfilerFactory.create_profiler(host, '/bin/executable', '/tmp/output')
- self.assertEqual(profiler._output_path, "/tmp/output/test.data")
-
-
-class GooglePProfTest(unittest.TestCase):
- def test_pprof_output_regexp(self):
- pprof_output = """
-sometimes
-there
-is
-junk before the total line
-
-
-Total: 3770 samples
- 76 2.0% 2.0% 104 2.8% lookup (inline)
- 60 1.6% 3.6% 60 1.6% FL_SetPrevious (inline)
- 56 1.5% 5.1% 56 1.5% MaskPtr (inline)
- 51 1.4% 6.4% 222 5.9% WebCore::HTMLTokenizer::nextToken
- 42 1.1% 7.6% 47 1.2% WTF::Vector::shrinkCapacity
- 35 0.9% 8.5% 35 0.9% WTF::RefPtr::get (inline)
- 33 0.9% 9.4% 43 1.1% append (inline)
- 29 0.8% 10.1% 67 1.8% WTF::StringImpl::deref (inline)
- 29 0.8% 10.9% 100 2.7% add (inline)
- 28 0.7% 11.6% 28 0.7% WebCore::QualifiedName::localName (inline)
- 25 0.7% 12.3% 27 0.7% WebCore::Private::addChildNodesToDeletionQueue
- 24 0.6% 12.9% 24 0.6% __memcpy_ssse3_back
- 23 0.6% 13.6% 23 0.6% intHash (inline)
- 23 0.6% 14.2% 76 2.0% tcmalloc::FL_Next
- 23 0.6% 14.8% 95 2.5% tcmalloc::FL_Push
- 22 0.6% 15.4% 22 0.6% WebCore::MarkupTokenizerBase::InputStreamPreprocessor::peek (inline)
-"""
- expected_first_ten_lines = """ 76 2.0% 2.0% 104 2.8% lookup (inline)
- 60 1.6% 3.6% 60 1.6% FL_SetPrevious (inline)
- 56 1.5% 5.1% 56 1.5% MaskPtr (inline)
- 51 1.4% 6.4% 222 5.9% WebCore::HTMLTokenizer::nextToken
- 42 1.1% 7.6% 47 1.2% WTF::Vector::shrinkCapacity
- 35 0.9% 8.5% 35 0.9% WTF::RefPtr::get (inline)
- 33 0.9% 9.4% 43 1.1% append (inline)
- 29 0.8% 10.1% 67 1.8% WTF::StringImpl::deref (inline)
- 29 0.8% 10.9% 100 2.7% add (inline)
- 28 0.7% 11.6% 28 0.7% WebCore::QualifiedName::localName (inline)
-"""
- host = MockSystemHost()
- profiler = GooglePProf(host, '/bin/executable', '/tmp/output')
- self.assertEqual(profiler._first_ten_lines_of_profile(pprof_output), expected_first_ten_lines)
diff --git a/Tools/Scripts/webkitpy/common/system/stack_utils.py b/Tools/Scripts/webkitpy/common/system/stack_utils.py
deleted file mode 100644
index a343807bc..000000000
--- a/Tools/Scripts/webkitpy/common/system/stack_utils.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Simple routines for logging, obtaining thread stack information."""
-
-import sys
-import traceback
-
-
-def log_thread_state(logger, name, thread_id, msg=''):
- """Log information about the given thread state."""
- stack = _find_thread_stack(thread_id)
- assert(stack is not None)
- logger("")
- logger("%s (tid %d) %s" % (name, thread_id, msg))
- _log_stack(logger, stack)
- logger("")
-
-
-def _find_thread_stack(thread_id):
- """Returns a stack object that can be used to dump a stack trace for
- the given thread id (or None if the id is not found)."""
- for tid, stack in sys._current_frames().items():
- if tid == thread_id:
- return stack
- return None
-
-
-def _log_stack(logger, stack):
- """Log a stack trace to the logger callback."""
- for filename, lineno, name, line in traceback.extract_stack(stack):
- logger('File: "%s", line %d, in %s' % (filename, lineno, name))
- if line:
- logger(' %s' % line.strip())
-
-
-def log_traceback(logger, tb):
- stack = traceback.extract_tb(tb)
- for frame_str in traceback.format_list(stack):
- for line in frame_str.split('\n'):
- if line:
- logger(" %s" % line)
diff --git a/Tools/Scripts/webkitpy/common/system/stack_utils_unittest.py b/Tools/Scripts/webkitpy/common/system/stack_utils_unittest.py
deleted file mode 100644
index 3050adc99..000000000
--- a/Tools/Scripts/webkitpy/common/system/stack_utils_unittest.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (C) 2011 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.
-
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system import outputcapture
-from webkitpy.common.system import stack_utils
-
-
-def current_thread_id():
- thread_id, _ = sys._current_frames().items()[0]
- return thread_id
-
-
-class StackUtilsTest(unittest.TestCase):
- def test_find_thread_stack_found(self):
- thread_id = current_thread_id()
- found_stack = stack_utils._find_thread_stack(thread_id)
- self.assertIsNotNone(found_stack)
-
- def test_find_thread_stack_not_found(self):
- found_stack = stack_utils._find_thread_stack(0)
- self.assertIsNone(found_stack)
-
- def test_log_thread_state(self):
- msgs = []
-
- def logger(msg):
- msgs.append(msg)
-
- thread_id = current_thread_id()
- stack_utils.log_thread_state(logger, "test-thread", thread_id,
- "is tested")
- self.assertTrue(msgs)
-
- def test_log_traceback(self):
- msgs = []
-
- def logger(msg):
- msgs.append(msg)
-
- try:
- raise ValueError
- except:
- stack_utils.log_traceback(logger, sys.exc_info()[2])
- self.assertTrue(msgs)
diff --git a/Tools/Scripts/webkitpy/common/system/systemhost.py b/Tools/Scripts/webkitpy/common/system/systemhost.py
deleted file mode 100644
index dfec68bc1..000000000
--- a/Tools/Scripts/webkitpy/common/system/systemhost.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2011 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.
-
-import os
-import platform
-import sys
-
-from webkitpy.common.system import environment, executive, file_lock, filesystem, platforminfo, user, workspace
-
-
-class SystemHost(object):
- def __init__(self):
- self.executive = executive.Executive()
- self.filesystem = filesystem.FileSystem()
- self.user = user.User()
- self.platform = platforminfo.PlatformInfo(sys, platform, self.executive)
- self.workspace = workspace.Workspace(self.filesystem, self.executive)
-
- def copy_current_environment(self):
- return environment.Environment(os.environ.copy())
-
- def make_file_lock(self, path):
- return file_lock.FileLock(path)
diff --git a/Tools/Scripts/webkitpy/common/system/systemhost_mock.py b/Tools/Scripts/webkitpy/common/system/systemhost_mock.py
deleted file mode 100644
index a529f3483..000000000
--- a/Tools/Scripts/webkitpy/common/system/systemhost_mock.py
+++ /dev/null
@@ -1,56 +0,0 @@
- # Copyright (c) 2011 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.
-
-from webkitpy.common.system.environment import Environment
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.file_lock_mock import MockFileLock
-from webkitpy.common.system.platforminfo_mock import MockPlatformInfo
-from webkitpy.common.system.user_mock import MockUser
-from webkitpy.common.system.workspace_mock import MockWorkspace
-
-
-class MockSystemHost(object):
- def __init__(self, log_executive=False, executive_throws_when_run=None, os_name=None, os_version=None, executive=None, filesystem=None):
- self.executive = executive or MockExecutive(should_log=log_executive, should_throw_when_run=executive_throws_when_run)
- self.filesystem = filesystem or MockFileSystem()
- self.user = MockUser()
- self.platform = MockPlatformInfo()
- if os_name:
- self.platform.os_name = os_name
- if os_version:
- self.platform.os_version = os_version
-
- # FIXME: Should this take pointers to the filesystem and the executive?
- self.workspace = MockWorkspace()
-
- def copy_current_environment(self):
- return Environment({"MOCK_ENVIRON_COPY": '1'})
-
- def make_file_lock(self, path):
- return MockFileLock(path)
diff --git a/Tools/Scripts/webkitpy/common/system/urlfetcher.py b/Tools/Scripts/webkitpy/common/system/urlfetcher.py
deleted file mode 100644
index 2d9e5ecaa..000000000
--- a/Tools/Scripts/webkitpy/common/system/urlfetcher.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Wrapper module for fetching URLs."""
-
-import urllib
-
-
-class UrlFetcher(object):
- """Class with restricted interface to fetch URLs (makes testing easier)"""
- def __init__(self, filesystem):
- self._filesystem = filesystem
-
- def fetch(self, url):
- """Fetches the contents of the URL as a string."""
- file_object = urllib.urlopen(url)
- content = file_object.read()
- file_object.close()
- return content
-
- def fetch_into_file(self, url):
- """Fetches the contents of the URL into a temporary file and return the filename.
-
- This is the equivalent of urllib.retrieve() except that we don't return any headers.
- """
- file_object, filename = self._filesystem.open_binary_tempfile('-fetched')
- contents = self.fetch(url)
- file_object.write(contents)
- file_object.close()
- return filename
diff --git a/Tools/Scripts/webkitpy/common/system/urlfetcher_mock.py b/Tools/Scripts/webkitpy/common/system/urlfetcher_mock.py
deleted file mode 100644
index e8a753208..000000000
--- a/Tools/Scripts/webkitpy/common/system/urlfetcher_mock.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-def make_fetcher_cls(urls):
- """UrlFetcher factory routine that simulates network access
- using a dict of URLs -> contents."""
- class MockFetcher(object):
- def __init__(self, filesystem):
- self._filesystem = filesystem
-
- def fetch(self, url):
- return urls[url]
-
- def fetch_into_file(self, url):
- f, fn = self._filesystem.open_binary_tempfile('mockfetcher')
- f.write(self.fetch(url))
- f.close()
- return fn
-
- return MockFetcher
diff --git a/Tools/Scripts/webkitpy/common/system/user.py b/Tools/Scripts/webkitpy/common/system/user.py
deleted file mode 100644
index c49429c0d..000000000
--- a/Tools/Scripts/webkitpy/common/system/user.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (c) 2009, 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.
-
-import getpass
-import logging
-import os
-import platform
-import re
-import shlex
-import subprocess
-import sys
-import webbrowser
-
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.platforminfo import PlatformInfo
-
-
-_log = logging.getLogger(__name__)
-
-
-try:
- import readline
-except ImportError:
- if sys.platform != "win32":
- # There is no readline module for win32, not much to do except cry.
- _log.warn("Unable to import readline.")
-
-
-class User(object):
- DEFAULT_NO = 'n'
- DEFAULT_YES = 'y'
-
- def __init__(self, platforminfo=None):
- # We cannot get the PlatformInfo object from a SystemHost because
- # User is part of SystemHost itself.
- self._platforminfo = platforminfo or PlatformInfo(sys, platform, Executive())
-
- # FIXME: These are @classmethods because bugzilla.py doesn't have a Tool object (thus no User instance).
- @classmethod
- def prompt(cls, message, repeat=1, raw_input=raw_input):
- response = None
- while (repeat and not response):
- repeat -= 1
- response = raw_input(message)
- return response
-
- @classmethod
- def prompt_password(cls, message, repeat=1):
- return cls.prompt(message, repeat=repeat, raw_input=getpass.getpass)
-
- @classmethod
- def prompt_with_multiple_lists(cls, list_title, subtitles, lists, can_choose_multiple=False, raw_input=raw_input):
- item_index = 0
- cumulated_list = []
- print list_title
- for i in range(len(subtitles)):
- print "\n" + subtitles[i]
- for item in lists[i]:
- item_index += 1
- print "%2d. %s" % (item_index, item)
- cumulated_list += lists[i]
- return cls._wait_on_list_response(cumulated_list, can_choose_multiple, raw_input)
-
- @classmethod
- def _wait_on_list_response(cls, list_items, can_choose_multiple, raw_input):
- while True:
- if can_choose_multiple:
- response = cls.prompt("Enter one or more numbers (comma-separated) or ranges (e.g. 3-7), or \"all\": ", raw_input=raw_input)
- if not response.strip() or response == "all":
- return list_items
-
- try:
- indices = []
- for value in re.split("\s*,\s*", response):
- parts = value.split('-')
- if len(parts) == 2:
- indices += range(int(parts[0]) - 1, int(parts[1]))
- else:
- indices.append(int(value) - 1)
- except ValueError, err:
- continue
-
- return [list_items[i] for i in indices]
- else:
- try:
- result = int(cls.prompt("Enter a number: ", raw_input=raw_input)) - 1
- except ValueError, err:
- continue
- return list_items[result]
-
- @classmethod
- def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=raw_input):
- print list_title
- i = 0
- for item in list_items:
- i += 1
- print "%2d. %s" % (i, item)
- return cls._wait_on_list_response(list_items, can_choose_multiple, raw_input)
-
- def edit(self, files):
- editor = os.environ.get("EDITOR") or "vi"
- args = shlex.split(editor)
- # Note: Not thread safe: http://bugs.python.org/issue2320
- subprocess.call(args + files)
-
- def _warn_if_application_is_xcode(self, edit_application):
- if "Xcode" in edit_application:
- print "Instead of using Xcode.app, consider using EDITOR=\"xed --wait\"."
-
- def edit_changelog(self, files):
- edit_application = os.environ.get("CHANGE_LOG_EDIT_APPLICATION")
- if edit_application and self._platforminfo.is_mac():
- # On Mac we support editing ChangeLogs using an application.
- args = shlex.split(edit_application)
- print "Using editor in the CHANGE_LOG_EDIT_APPLICATION environment variable."
- print "Please quit the editor application when done editing."
- self._warn_if_application_is_xcode(edit_application)
- subprocess.call(["open", "-W", "-n", "-a"] + args + files)
- return
- self.edit(files)
-
- def page(self, message):
- pager = os.environ.get("PAGER") or "less"
- try:
- # Note: Not thread safe: http://bugs.python.org/issue2320
- child_process = subprocess.Popen([pager], stdin=subprocess.PIPE)
- child_process.communicate(input=message)
- except IOError, e:
- pass
-
- def confirm(self, message=None, default=DEFAULT_YES, raw_input=raw_input):
- if not message:
- message = "Continue?"
- choice = {'y': 'Y/n', 'n': 'y/N'}[default]
- response = raw_input("%s [%s]: " % (message, choice))
- if not response:
- response = default
- return response.lower() == 'y'
-
- def can_open_url(self):
- try:
- webbrowser.get()
- return True
- except webbrowser.Error, e:
- return False
-
- def open_url(self, url):
- if not self.can_open_url():
- _log.warn("Failed to open %s" % url)
- webbrowser.open(url)
diff --git a/Tools/Scripts/webkitpy/common/system/user_mock.py b/Tools/Scripts/webkitpy/common/system/user_mock.py
deleted file mode 100644
index d17ea9a90..000000000
--- a/Tools/Scripts/webkitpy/common/system/user_mock.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-
-_log = logging.getLogger(__name__)
-
-
-class MockUser(object):
-
- @classmethod
- def prompt(cls, message, repeat=1, raw_input=raw_input):
- return "Mock user response"
-
- @classmethod
- def prompt_with_list(cls, list_title, list_items, can_choose_multiple=False, raw_input=raw_input):
- pass
-
- def __init__(self):
- self.opened_urls = []
-
- def edit(self, files):
- pass
-
- def edit_changelog(self, files):
- pass
-
- def page(self, message):
- pass
-
- def confirm(self, message=None, default='y'):
- _log.info(message)
- return default == 'y'
-
- def can_open_url(self):
- return True
-
- def open_url(self, url):
- self.opened_urls.append(url)
- if url.startswith("file://"):
- _log.info("MOCK: user.open_url: file://...")
- return
- _log.info("MOCK: user.open_url: %s" % url)
diff --git a/Tools/Scripts/webkitpy/common/system/user_unittest.py b/Tools/Scripts/webkitpy/common/system/user_unittest.py
deleted file mode 100644
index 49810b2e0..000000000
--- a/Tools/Scripts/webkitpy/common/system/user_unittest.py
+++ /dev/null
@@ -1,139 +0,0 @@
-# Copyright (C) 2010 Research in Motion Ltd. 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 Research in Motion Ltd. 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.user import User
-
-class UserTest(unittest.TestCase):
-
- example_user_response = "example user response"
-
- def test_prompt_repeat(self):
- self.repeatsRemaining = 2
- def mock_raw_input(message):
- self.repeatsRemaining -= 1
- if not self.repeatsRemaining:
- return UserTest.example_user_response
- return None
- self.assertEqual(User.prompt("input", repeat=self.repeatsRemaining, raw_input=mock_raw_input), UserTest.example_user_response)
-
- def test_prompt_when_exceeded_repeats(self):
- self.repeatsRemaining = 2
- def mock_raw_input(message):
- self.repeatsRemaining -= 1
- return None
- self.assertEqual(User.prompt("input", repeat=self.repeatsRemaining, raw_input=mock_raw_input), None)
-
- def test_prompt_with_multiple_lists(self):
- def run_prompt_test(inputs, expected_result, can_choose_multiple=False):
- def mock_raw_input(message):
- return inputs.pop(0)
- output_capture = OutputCapture()
- actual_result = output_capture.assert_outputs(
- self,
- User.prompt_with_multiple_lists,
- args=["title", ["subtitle1", "subtitle2"], [["foo", "bar"], ["foobar", "barbaz", "foobaz"]]],
- kwargs={"can_choose_multiple": can_choose_multiple, "raw_input": mock_raw_input},
- expected_stdout="title\n\nsubtitle1\n 1. foo\n 2. bar\n\nsubtitle2\n 3. foobar\n 4. barbaz\n 5. foobaz\n")
- self.assertEqual(actual_result, expected_result)
- self.assertEqual(len(inputs), 0)
-
- run_prompt_test(["1"], "foo")
- run_prompt_test(["badinput", "2"], "bar")
- run_prompt_test(["3"], "foobar")
- run_prompt_test(["4"], "barbaz")
- run_prompt_test(["5"], "foobaz")
-
- run_prompt_test(["1,2"], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test(["1-3"], ["foo", "bar", "foobar"], can_choose_multiple=True)
- run_prompt_test(["1-2,3"], ["foo", "bar", "foobar"], can_choose_multiple=True)
- run_prompt_test(["2-1,3"], ["foobar"], can_choose_multiple=True)
- run_prompt_test([" 1, 2 "], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test(["all"], ["foo", "bar", 'foobar', 'barbaz', 'foobaz'], can_choose_multiple=True)
- run_prompt_test([""], ["foo", "bar", 'foobar', 'barbaz', 'foobaz'], can_choose_multiple=True)
- run_prompt_test([" "], ["foo", "bar", 'foobar', 'barbaz', 'foobaz'], can_choose_multiple=True)
- run_prompt_test(["badinput", "all"], ["foo", "bar", 'foobar', 'barbaz', 'foobaz'], can_choose_multiple=True)
-
- def test_prompt_with_list(self):
- def run_prompt_test(inputs, expected_result, can_choose_multiple=False):
- def mock_raw_input(message):
- return inputs.pop(0)
- output_capture = OutputCapture()
- actual_result = output_capture.assert_outputs(
- self,
- User.prompt_with_list,
- args=["title", ["foo", "bar"]],
- kwargs={"can_choose_multiple": can_choose_multiple, "raw_input": mock_raw_input},
- expected_stdout="title\n 1. foo\n 2. bar\n")
- self.assertEqual(actual_result, expected_result)
- self.assertEqual(len(inputs), 0)
-
- run_prompt_test(["1"], "foo")
- run_prompt_test(["badinput", "2"], "bar")
-
- run_prompt_test(["1,2"], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test([" 1, 2 "], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test(["all"], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test([""], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test([" "], ["foo", "bar"], can_choose_multiple=True)
- run_prompt_test(["badinput", "all"], ["foo", "bar"], can_choose_multiple=True)
-
- def test_confirm(self):
- test_cases = (
- (("Continue? [Y/n]: ", True), (User.DEFAULT_YES, 'y')),
- (("Continue? [Y/n]: ", False), (User.DEFAULT_YES, 'n')),
- (("Continue? [Y/n]: ", True), (User.DEFAULT_YES, '')),
- (("Continue? [Y/n]: ", False), (User.DEFAULT_YES, 'q')),
- (("Continue? [y/N]: ", True), (User.DEFAULT_NO, 'y')),
- (("Continue? [y/N]: ", False), (User.DEFAULT_NO, 'n')),
- (("Continue? [y/N]: ", False), (User.DEFAULT_NO, '')),
- (("Continue? [y/N]: ", False), (User.DEFAULT_NO, 'q')),
- )
- for test_case in test_cases:
- expected, inputs = test_case
-
- def mock_raw_input(message):
- self.assertEqual(expected[0], message)
- return inputs[1]
-
- result = User().confirm(default=inputs[0],
- raw_input=mock_raw_input)
- self.assertEqual(expected[1], result)
-
- def test_warn_if_application_is_xcode(self):
- output = OutputCapture()
- user = User()
- output.assert_outputs(self, user._warn_if_application_is_xcode, ["TextMate"])
- output.assert_outputs(self, user._warn_if_application_is_xcode, ["/Applications/TextMate.app"])
- output.assert_outputs(self, user._warn_if_application_is_xcode, ["XCode"]) # case sensitive matching
-
- xcode_warning = "Instead of using Xcode.app, consider using EDITOR=\"xed --wait\".\n"
- output.assert_outputs(self, user._warn_if_application_is_xcode, ["Xcode"], expected_stdout=xcode_warning)
- output.assert_outputs(self, user._warn_if_application_is_xcode, ["/Developer/Applications/Xcode.app"], expected_stdout=xcode_warning)
diff --git a/Tools/Scripts/webkitpy/common/system/workspace.py b/Tools/Scripts/webkitpy/common/system/workspace.py
deleted file mode 100644
index 1d92aca13..000000000
--- a/Tools/Scripts/webkitpy/common/system/workspace.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (c) 2010 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.
-
-# A home for file logic which should sit above FileSystem, but
-# below more complicated objects.
-
-import logging
-import zipfile
-
-from webkitpy.common.system.executive import ScriptError
-
-
-_log = logging.getLogger(__name__)
-
-
-class Workspace(object):
- def __init__(self, filesystem, executive):
- self._filesystem = filesystem
- self._executive = executive # FIXME: Remove if create_zip is moved to python.
-
- def find_unused_filename(self, directory, name, extension, search_limit=100):
- for count in range(search_limit):
- if count:
- target_name = "%s-%s.%s" % (name, count, extension)
- else:
- target_name = "%s.%s" % (name, extension)
- target_path = self._filesystem.join(directory, target_name)
- if not self._filesystem.exists(target_path):
- return target_path
- # If we can't find an unused name in search_limit tries, just give up.
- return None
-
- def create_zip(self, zip_path, source_path, zip_class=zipfile.ZipFile):
- # It's possible to create zips with Python:
- # zip_file = ZipFile(zip_path, 'w')
- # for root, dirs, files in os.walk(source_path):
- # for path in files:
- # absolute_path = os.path.join(root, path)
- # zip_file.write(os.path.relpath(path, source_path))
- # However, getting the paths, encoding and compression correct could be non-trivial.
- # So, for now we depend on the environment having "zip" installed (likely fails on Win32)
- try:
- self._executive.run_command(['zip', '-9', '-r', zip_path, '.'], cwd=source_path)
- except ScriptError, e:
- _log.error("Workspace.create_zip failed in %s:\n%s" % (source_path, e.message_with_output()))
- return None
-
- return zip_class(zip_path)
diff --git a/Tools/Scripts/webkitpy/common/system/workspace_mock.py b/Tools/Scripts/webkitpy/common/system/workspace_mock.py
deleted file mode 100644
index 02a5f4c29..000000000
--- a/Tools/Scripts/webkitpy/common/system/workspace_mock.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class MockWorkspace(object):
- def find_unused_filename(self, directory, name, extension, search_limit=10):
- return "%s/%s.%s" % (directory, name, extension)
-
- def create_zip(self, zip_path, source_path):
- self.zip_path = zip_path
- self.source_path = source_path
- return object() # Something that is not None
diff --git a/Tools/Scripts/webkitpy/common/system/workspace_unittest.py b/Tools/Scripts/webkitpy/common/system/workspace_unittest.py
deleted file mode 100644
index 8262f6cf1..000000000
--- a/Tools/Scripts/webkitpy/common/system/workspace_unittest.py
+++ /dev/null
@@ -1,72 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.workspace import Workspace
-from webkitpy.common.system.executive_mock import MockExecutive
-
-
-class WorkspaceTest(unittest.TestCase):
-
- def test_find_unused_filename(self):
- filesystem = MockFileSystem({
- "dir/foo.jpg": "",
- "dir/foo-1.jpg": "",
- "dir/foo-2.jpg": "",
- })
- workspace = Workspace(filesystem, None)
- self.assertEqual(workspace.find_unused_filename("bar", "bar", "bar"), "bar/bar.bar")
- self.assertEqual(workspace.find_unused_filename("dir", "foo", "jpg", search_limit=1), None)
- self.assertEqual(workspace.find_unused_filename("dir", "foo", "jpg", search_limit=2), None)
- self.assertEqual(workspace.find_unused_filename("dir", "foo", "jpg"), "dir/foo-3.jpg")
-
- def test_create_zip(self):
- workspace = Workspace(None, MockExecutive(should_log=True))
- expected_logs = "MOCK run_command: ['zip', '-9', '-r', '/zip/path', '.'], cwd=/source/path\n"
- class MockZipFile(object):
- def __init__(self, path):
- self.filename = path
- archive = OutputCapture().assert_outputs(self, workspace.create_zip, ["/zip/path", "/source/path", MockZipFile], expected_logs=expected_logs)
- self.assertEqual(archive.filename, "/zip/path")
-
- def test_create_zip_exception(self):
- workspace = Workspace(None, MockExecutive(should_log=True, should_throw=True))
- expected_logs = """MOCK run_command: ['zip', '-9', '-r', '/zip/path', '.'], cwd=/source/path
-Workspace.create_zip failed in /source/path:
-MOCK ScriptError
-
-MOCK output of child process
-"""
- class MockZipFile(object):
- def __init__(self, path):
- self.filename = path
- archive = OutputCapture().assert_outputs(self, workspace.create_zip, ["/zip/path", "/source/path", MockZipFile], expected_logs=expected_logs)
- self.assertIsNone(archive)
diff --git a/Tools/Scripts/webkitpy/common/system/zip_mock.py b/Tools/Scripts/webkitpy/common/system/zip_mock.py
deleted file mode 100644
index dcfaba70d..000000000
--- a/Tools/Scripts/webkitpy/common/system/zip_mock.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2010 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:
-#
-# 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 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.
-
-from webkitpy.common.system.fileset import FileSetFileHandle
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-
-
-class MockZip(object):
- """A mock zip file that can have new files inserted into it."""
- def __init__(self, filesystem=None):
- self._filesystem = filesystem or MockFileSystem()
- self._files = {}
-
- def __str__(self):
- return "MockZip"
-
- def insert(self, filename, content):
- self._files[filename] = content
-
- def namelist(self):
- return self._files.keys()
-
- def open(self, filename):
- return FileSetFileHandle(self, filename)
-
- def read(self, filename):
- return self._files[filename]
-
- def extract(self, filename, path):
- full_path = self._filesystem.join(path, filename)
- contents = self.open(filename).contents()
- self._filesystem.write_text_file(full_path, contents)
-
- def delete(self, filename):
- self._files[filename] = None
diff --git a/Tools/Scripts/webkitpy/common/system/zipfileset.py b/Tools/Scripts/webkitpy/common/system/zipfileset.py
deleted file mode 100644
index 5cf3616ec..000000000
--- a/Tools/Scripts/webkitpy/common/system/zipfileset.py
+++ /dev/null
@@ -1,71 +0,0 @@
-# Copyright (C) 2010 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:
-#
-# 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 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 urllib
-import zipfile
-
-from webkitpy.common.net.networktransaction import NetworkTransaction
-from webkitpy.common.system.fileset import FileSetFileHandle
-from webkitpy.common.system.filesystem import FileSystem
-
-
-class ZipFileSet(object):
- """The set of files in a zip file that resides at a URL (local or remote)"""
- def __init__(self, zip_url, filesystem=None, zip_factory=None):
- self._zip_url = zip_url
- self._temp_file = None
- self._zip_file = None
- self._filesystem = filesystem or FileSystem()
- self._zip_factory = zip_factory or self._retrieve_zip_file
-
- def _retrieve_zip_file(self, zip_url):
- temp_file = NetworkTransaction().run(lambda: urllib.urlretrieve(zip_url)[0])
- return (temp_file, zipfile.ZipFile(temp_file))
-
- def _load(self):
- if self._zip_file is None:
- self._temp_file, self._zip_file = self._zip_factory(self._zip_url)
-
- def open(self, filename):
- self._load()
- return FileSetFileHandle(self, filename, self._filesystem)
-
- def close(self):
- if self._temp_file:
- self._filesystem.remove(self._temp_file)
- self._temp_file = None
-
- def namelist(self):
- self._load()
- return self._zip_file.namelist()
-
- def read(self, filename):
- self._load()
- return self._zip_file.read(filename)
-
- def extract(self, filename, path):
- self._load()
- self._zip_file.extract(filename, path)
-
- def delete(self, filename):
- raise Exception("Can't delete from a ZipFileSet.")
diff --git a/Tools/Scripts/webkitpy/common/system/zipfileset_mock.py b/Tools/Scripts/webkitpy/common/system/zipfileset_mock.py
deleted file mode 100644
index 24ac8cba0..000000000
--- a/Tools/Scripts/webkitpy/common/system/zipfileset_mock.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-def make_factory(ziphashes):
- """ZipFileSet factory routine that looks up zipfiles in a dict;
- each zipfile should also be a dict of member names -> contents."""
- class MockZipFileSet(object):
- def __init__(self, url):
- self._url = url
- self._ziphash = ziphashes[url]
-
- def namelist(self):
- return self._ziphash.keys()
-
- def read(self, member):
- return self._ziphash[member]
-
- def close(self):
- pass
-
- def maker(url):
- # We return None because there's no tempfile to delete.
- return (None, MockZipFileSet(url))
-
- return maker
diff --git a/Tools/Scripts/webkitpy/common/system/zipfileset_unittest.py b/Tools/Scripts/webkitpy/common/system/zipfileset_unittest.py
deleted file mode 100644
index 1a0603c9e..000000000
--- a/Tools/Scripts/webkitpy/common/system/zipfileset_unittest.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (C) 2010 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:
-#
-# 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 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 shutil
-import tempfile
-import unittest2 as unittest
-import zipfile
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.zipfileset import ZipFileSet
-
-
-class FakeZip(object):
- def __init__(self, filesystem):
- self._filesystem = filesystem
- self._files = {}
-
- def add_file(self, filename, contents):
- self._files[filename] = contents
-
- def open(self, filename):
- return FileSetFileHandle(self, filename, self._filesystem)
-
- def namelist(self):
- return self._files.keys()
-
- def read(self, filename):
- return self._files[filename]
-
- def extract(self, filename, path):
- self._filesystem.write_text_file(self._filesystem.join(path, filename), self.read(filename))
-
- def delete(self, filename):
- raise Exception("Can't delete from a ZipFileSet.")
-
-
-class ZipFileSetTest(unittest.TestCase):
- def setUp(self):
- self._filesystem = MockFileSystem()
- self._zip = ZipFileSet('blah', self._filesystem, self.make_fake_zip)
-
- def make_fake_zip(self, zip_url):
- result = FakeZip(self._filesystem)
- result.add_file('some-file', 'contents')
- result.add_file('a/b/some-other-file', 'other contents')
- return (None, result)
-
- def test_open(self):
- file = self._zip.open('a/b/some-other-file')
- self.assertEqual('a/b/some-other-file', file.name())
- self.assertEqual('other contents', file.contents())
-
- def test_close(self):
- zipfileset = ZipFileSet('blah', self._filesystem, self.make_fake_zip)
- zipfileset.close()
-
- def test_read(self):
- self.assertEqual('contents', self._zip.read('some-file'))
-
- def test_extract(self):
- self._filesystem.maybe_make_directory('/some-dir')
- self._zip.extract('some-file', '/some-dir')
- self.assertTrue(self._filesystem.isfile('/some-dir/some-file'))
-
- def test_deep_extract(self):
- self._filesystem.maybe_make_directory('/some-dir')
- self._zip.extract('a/b/some-other-file', '/some-dir')
- self.assertTrue(self._filesystem.isfile('/some-dir/a/b/some-other-file'))
-
- def test_cant_delete(self):
- self.assertRaises(Exception, self._zip.delete, 'some-file')
-
- def test_namelist(self):
- self.assertTrue('some-file' in self._zip.namelist())
diff --git a/Tools/Scripts/webkitpy/common/thread/__init__.py b/Tools/Scripts/webkitpy/common/thread/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/thread/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/thread/messagepump.py b/Tools/Scripts/webkitpy/common/thread/messagepump.py
deleted file mode 100644
index 0e3928562..000000000
--- a/Tools/Scripts/webkitpy/common/thread/messagepump.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (c) 2010 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.
-
-
-class MessagePumpDelegate(object):
- def schedule(self, interval, callback):
- raise NotImplementedError, "subclasses must implement"
-
- def message_available(self, message):
- raise NotImplementedError, "subclasses must implement"
-
- def final_message_delivered(self):
- raise NotImplementedError, "subclasses must implement"
-
-
-class MessagePump(object):
- interval = 10 # seconds
-
- def __init__(self, delegate, message_queue):
- self._delegate = delegate
- self._message_queue = message_queue
- self._schedule()
-
- def _schedule(self):
- self._delegate.schedule(self.interval, self._callback)
-
- def _callback(self):
- (messages, is_running) = self._message_queue.take_all()
- for message in messages:
- self._delegate.message_available(message)
- if not is_running:
- self._delegate.final_message_delivered()
- return
- self._schedule()
diff --git a/Tools/Scripts/webkitpy/common/thread/messagepump_unittest.py b/Tools/Scripts/webkitpy/common/thread/messagepump_unittest.py
deleted file mode 100644
index 1a4677230..000000000
--- a/Tools/Scripts/webkitpy/common/thread/messagepump_unittest.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.thread.messagepump import MessagePump, MessagePumpDelegate
-from webkitpy.common.thread.threadedmessagequeue import ThreadedMessageQueue
-
-
-class TestDelegate(MessagePumpDelegate):
- def __init__(self):
- self.log = []
-
- def schedule(self, interval, callback):
- self.callback = callback
- self.log.append("schedule")
-
- def message_available(self, message):
- self.log.append("message_available: %s" % message)
-
- def final_message_delivered(self):
- self.log.append("final_message_delivered")
-
-
-class MessagePumpTest(unittest.TestCase):
-
- def test_basic(self):
- queue = ThreadedMessageQueue()
- delegate = TestDelegate()
- pump = MessagePump(delegate, queue)
- self.assertEqual(delegate.log, [
- 'schedule'
- ])
- delegate.callback()
- queue.post("Hello")
- queue.post("There")
- delegate.callback()
- self.assertEqual(delegate.log, [
- 'schedule',
- 'schedule',
- 'message_available: Hello',
- 'message_available: There',
- 'schedule'
- ])
- queue.post("More")
- queue.post("Messages")
- queue.stop()
- delegate.callback()
- self.assertEqual(delegate.log, [
- 'schedule',
- 'schedule',
- 'message_available: Hello',
- 'message_available: There',
- 'schedule',
- 'message_available: More',
- 'message_available: Messages',
- 'final_message_delivered'
- ])
diff --git a/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue.py b/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue.py
deleted file mode 100644
index e43476764..000000000
--- a/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (c) 2010 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.
-
-import threading
-
-
-class ThreadedMessageQueue(object):
- def __init__(self):
- self._messages = []
- self._is_running = True
- self._lock = threading.Lock()
-
- def post(self, message):
- with self._lock:
- self._messages.append(message)
-
- def stop(self):
- with self._lock:
- self._is_running = False
-
- def take_all(self):
- with self._lock:
- messages = self._messages
- is_running = self._is_running
- self._messages = []
- return (messages, is_running)
-
diff --git a/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue_unittest.py b/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue_unittest.py
deleted file mode 100644
index dbb8a2e42..000000000
--- a/Tools/Scripts/webkitpy/common/thread/threadedmessagequeue_unittest.py
+++ /dev/null
@@ -1,53 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.thread.threadedmessagequeue import ThreadedMessageQueue
-
-class ThreadedMessageQueueTest(unittest.TestCase):
-
- def test_basic(self):
- queue = ThreadedMessageQueue()
- queue.post("Hello")
- queue.post("There")
- (messages, is_running) = queue.take_all()
- self.assertEqual(messages, ["Hello", "There"])
- self.assertTrue(is_running)
- (messages, is_running) = queue.take_all()
- self.assertEqual(messages, [])
- self.assertTrue(is_running)
- queue.post("More")
- queue.stop()
- queue.post("Messages")
- (messages, is_running) = queue.take_all()
- self.assertEqual(messages, ["More", "Messages"])
- self.assertFalse(is_running)
- (messages, is_running) = queue.take_all()
- self.assertEqual(messages, [])
- self.assertFalse(is_running)
diff --git a/Tools/Scripts/webkitpy/common/version_check.py b/Tools/Scripts/webkitpy/common/version_check.py
deleted file mode 100644
index c0505443f..000000000
--- a/Tools/Scripts/webkitpy/common/version_check.py
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright (c) 2011 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.
-
-import sys
-
-if sys.version < '2.6' or sys.version >= '2.8':
- print >> sys.stderr, "Unsupported Python version: WebKit only supports 2.6.x - 2.7.x, and you're running %s." % sys.version.split()[0]
- sys.exit(1)
diff --git a/Tools/Scripts/webkitpy/common/watchlist/__init__.py b/Tools/Scripts/webkitpy/common/watchlist/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern.py b/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern.py
deleted file mode 100644
index fc8adc967..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class AmountChangedPattern:
- def __init__(self, compile_regex, index_for_zero_value):
- self._regex = compile_regex
- self._index_for_zero_value = index_for_zero_value
-
- def match(self, path, diff_file):
- examined_strings = set()
- for diff_line in diff_file:
- if diff_line[self._index_for_zero_value]:
- continue
- match = self._regex.search(diff_line[2])
- if not match:
- continue
- matching_string = match.group(0)
- if matching_string in examined_strings:
- continue
- if self._instance_difference(diff_file, matching_string) > 0:
- return True
- # Avoid reprocessing this same string.
- examined_strings.add(matching_string)
- return False
-
- def _instance_difference(self, diff_file, matching_string):
- '''Returns the difference between the number of string occurences in
- the added lines and deleted lines (which one is subtracted from the
- other depends on _index_for_zero_value).'''
- count = 0
- for diff_line in diff_file:
- # If the line is unchanged, then don't examine it.
- if diff_line[self._index_for_zero_value] and diff_line[1 - self._index_for_zero_value]:
- continue
- location_found = -len(matching_string)
- while True:
- location_found = diff_line[2].find(matching_string, location_found + len(matching_string))
- if location_found == -1:
- break
- if not diff_line[self._index_for_zero_value]:
- count += 1
- else:
- count -= 1
- return count
diff --git a/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py
deleted file mode 100644
index b222d3a50..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/amountchangedpattern_unittest.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-'''Unit tests for amountchangedpattern.py.'''
-
-
-import re
-import unittest2 as unittest
-
-
-from webkitpy.common.watchlist.amountchangedpattern import AmountChangedPattern
-
-
-class AmountChangedPatternTest(unittest.TestCase):
-
- # A quick note about the diff file structure.
- # The first column indicated the old line number.
- # The second column indicates the new line number.
- # 0 in either column indicates it had no old or new line number.
- _DIFF_FILE = ((0, 1, 'hi hi'),
- (1, 0, 'bye hi'),
- (2, 2, 'other hi'),
- (3, 0, 'both'),
- (0, 3, 'both'),
- )
-
- def run_amount_changed_pattern_match(self, pattern, index_for_zero_value):
- return AmountChangedPattern(re.compile(pattern), index_for_zero_value).match(None, self._DIFF_FILE)
-
- def test_added_lines(self):
- self.assertTrue(self.run_amount_changed_pattern_match('hi', 0))
- self.assertTrue(self.run_amount_changed_pattern_match('hi hi', 0))
- self.assertFalse(self.run_amount_changed_pattern_match('other', 0))
- self.assertFalse(self.run_amount_changed_pattern_match('both', 0))
- self.assertFalse(self.run_amount_changed_pattern_match('bye', 0))
- self.assertFalse(self.run_amount_changed_pattern_match('MatchesNothing', 0))
-
- def test_removed_lines(self):
- self.assertFalse(self.run_amount_changed_pattern_match('hi', 1))
- self.assertFalse(self.run_amount_changed_pattern_match('hi hi', 1))
- self.assertFalse(self.run_amount_changed_pattern_match('other', 1))
- self.assertFalse(self.run_amount_changed_pattern_match('both', 1))
- self.assertTrue(self.run_amount_changed_pattern_match('bye', 1))
- self.assertFalse(self.run_amount_changed_pattern_match('MatchesNothing', 1))
diff --git a/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern.py b/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern.py
deleted file mode 100644
index 61fac9a76..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class ChangedLinePattern:
- def __init__(self, compile_regex, index_for_zero_value):
- self._regex = compile_regex
- self._index_for_zero_value = index_for_zero_value
-
- def match(self, path, diff_file):
- for diff_line in diff_file:
- if diff_line[self._index_for_zero_value]:
- continue
- if self._regex.search(diff_line[2]):
- return True
- return False
diff --git a/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py
deleted file mode 100644
index 2f5fd68be..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/changedlinepattern_unittest.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2011 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.
-
-'''Unit tests for changedlinepattern.py.'''
-
-import re
-import unittest2 as unittest
-
-
-from webkitpy.common.watchlist.changedlinepattern import ChangedLinePattern
-
-
-class ChangedLinePatternTest(unittest.TestCase):
-
- # A quick note about the diff file structure.
- # The first column indicated the old line number.
- # The second column indicates the new line number.
- # 0 in either column indicates it had no old or new line number.
- _DIFF_FILE = ((0, 1, 'hi'),
- (1, 0, 'bye'),
- (2, 2, 'other'),
- (3, 0, 'both'),
- (0, 3, 'both'),
- )
-
- def run_changed_line_pattern_match(self, pattern, index_for_zero_value):
- return ChangedLinePattern(re.compile(pattern), index_for_zero_value).match(None, self._DIFF_FILE)
-
- def test_added_lines(self):
- self.assertTrue(self.run_changed_line_pattern_match('hi', 0))
- self.assertTrue(self.run_changed_line_pattern_match('h.', 0))
- self.assertTrue(self.run_changed_line_pattern_match('both', 0))
- self.assertFalse(self.run_changed_line_pattern_match('bye', 0))
- self.assertFalse(self.run_changed_line_pattern_match('y', 0))
- self.assertFalse(self.run_changed_line_pattern_match('other', 0))
-
- def test_removed_lines(self):
- self.assertFalse(self.run_changed_line_pattern_match('hi', 1))
- self.assertFalse(self.run_changed_line_pattern_match('h.', 1))
- self.assertTrue(self.run_changed_line_pattern_match('both', 1))
- self.assertTrue(self.run_changed_line_pattern_match('bye', 1))
- self.assertTrue(self.run_changed_line_pattern_match('y', 1))
- self.assertFalse(self.run_changed_line_pattern_match('other', 1))
diff --git a/Tools/Scripts/webkitpy/common/watchlist/filenamepattern.py b/Tools/Scripts/webkitpy/common/watchlist/filenamepattern.py
deleted file mode 100644
index 799eeb449..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/filenamepattern.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class FilenamePattern:
- def __init__(self, compiled_regex):
- self._regex = compiled_regex
-
- def match(self, path, diff_file):
- return self._regex.match(path)
diff --git a/Tools/Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py
deleted file mode 100644
index 2b51dd68f..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/filenamepattern_unittest.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2011 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.
-
-import re
-import unittest2 as unittest
-
-
-from webkitpy.common.watchlist.filenamepattern import FilenamePattern
-
-
-class FileNamePatternTest(unittest.TestCase):
- def test_filename_pattern_literal(self):
- filename_pattern = FilenamePattern(re.compile(r'MyFileName\.cpp'))
-
- # Note the follow filenames are not regex.
- self.assertTrue(filename_pattern.match('MyFileName.cpp', None))
- self.assertTrue(filename_pattern.match('MyFileName.cppa', None))
- self.assertFalse(filename_pattern.match('aMyFileName.cpp', None))
- self.assertFalse(filename_pattern.match('MyFileNamebcpp', None))
-
- def test_filename_pattern_substring(self):
- filename_pattern = FilenamePattern(re.compile(r'.*\\MyFileName\..*'))
-
- # Note the follow filenames are not regex.
- self.assertTrue(filename_pattern.match(r'\\MyFileName.cpp', None))
- self.assertTrue(filename_pattern.match(r'a\\MyFileName.h', None))
- self.assertFalse(filename_pattern.match(r'\\aMyFileName.cpp', None))
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlist.py b/Tools/Scripts/webkitpy/common/watchlist/watchlist.py
deleted file mode 100644
index 4a81039fd..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlist.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2011 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.
-
-from webkitpy.common.checkout.diff_parser import DiffParser
-
-
-class WatchList(object):
- def __init__(self):
- self.definitions = {}
- self.cc_rules = set()
- self.message_rules = set()
-
- def find_matching_definitions(self, diff):
- matching_definitions = set()
- patch_files = DiffParser(diff.splitlines()).files
-
- for path, diff_file in patch_files.iteritems():
- for definition in self.definitions:
- # If a definition has already matched, there is no need to process it.
- if definition in matching_definitions:
- continue
-
- # See if the definition matches within one file.
- for pattern in self.definitions[definition]:
- if not pattern.match(path, diff_file.lines):
- break
- else:
- matching_definitions.add(definition)
- return matching_definitions
-
- def _determine_instructions(self, matching_definitions, rules):
- instructions = set()
- for rule in rules:
- if rule.match(matching_definitions):
- instructions.update(rule.instructions())
- # Sort the results to make the order deterministic (for consistency and easier testing).
- return sorted(instructions)
-
- def determine_cc_list(self, matching_definitions):
- return self._determine_instructions(matching_definitions, self.cc_rules)
-
- def determine_messages(self, matching_definitions):
- return self._determine_instructions(matching_definitions, self.message_rules)
-
- def determine_cc_and_messages(self, diff):
- definitions = self.find_matching_definitions(diff)
- return {
- 'cc_list': self.determine_cc_list(definitions),
- 'messages': self.determine_messages(definitions),
- }
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlist_mock.py b/Tools/Scripts/webkitpy/common/watchlist/watchlist_mock.py
deleted file mode 100644
index cbbf0718a..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlist_mock.py
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-
-_log = logging.getLogger(__name__)
-
-
-class MockWatchList(object):
- def determine_cc_and_messages(self, diff):
- _log.info("MockWatchList: determine_cc_and_messages")
- return {'cc_list': ['abarth@webkit.org', 'eric@webkit.org', 'levin@chromium.org'], 'messages': ['Message1.', 'Message2.'], }
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlist_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/watchlist_unittest.py
deleted file mode 100644
index dd7b083ea..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlist_unittest.py
+++ /dev/null
@@ -1,277 +0,0 @@
-# Copyright (C) 2011 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.
-
-'''Unit tests for watchlist.py.'''
-
-import unittest2 as unittest
-
-from webkitpy.common.checkout.diff_test_data import DIFF_TEST_DATA
-from webkitpy.common.watchlist.watchlistparser import WatchListParser
-
-
-class WatchListTest(unittest.TestCase):
- def setUp(self):
- self._watch_list_parser = WatchListParser()
-
- def test_filename_definition_no_matches(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ['
- ' "levin@chromium.org",'
- ' ],'
- ' },'
- '}')
- self.assertEqual(set([]), watch_list.find_matching_definitions(DIFF_TEST_DATA))
-
- def test_filename_definition(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/StyleFlexibleBoxData\.h",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ['
- ' "levin@chromium.org",'
- ' ],'
- ' },'
- '}')
- self.assertEqual(set(['WatchList1']), watch_list.find_matching_definitions(DIFF_TEST_DATA))
-
- def test_cc_rules_simple(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/StyleFlexibleBoxData\.h",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ['
- ' "levin@chromium.org",'
- ' ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['levin@chromium.org'],
- 'messages': [],
- }, cc_and_messages)
-
- def test_cc_rules_complex(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/StyleFlexibleBoxData\.h",'
- ' },'
- ' "WatchList2": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' "WatchList3": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList2|WatchList1|WatchList3": [ "levin@chromium.org", ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['levin@chromium.org'],
- 'messages': [],
- }, cc_and_messages)
-
- def test_cc_and_message_rules_complex(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/StyleFlexibleBoxData\.h",'
- ' },'
- ' "WatchList2": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' "WatchList3": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList2|WatchList1|WatchList3": [ "levin@chromium.org", ],'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList2|WatchList1|WatchList3": [ "msg1", "msg2", ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['levin@chromium.org'],
- 'messages': ['msg1', 'msg2'],
- }, cc_and_messages)
-
- def test_cc_and_message_rules_no_matches(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/ThisFileDoesNotExist\.h",'
- ' },'
- ' "WatchList2": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' "WatchList3": {'
- ' "filename": r"WillNotMatch",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList2|WatchList1|WatchList3": [ "levin@chromium.org", ],'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList2|WatchList1|WatchList3": [ "msg1", "msg2", ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': [],
- 'messages': [],
- }, cc_and_messages)
-
- def test_added_match(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "in_added_lines": r"RenderStyle::initialBoxOrient",'
- ' },'
- ' "WatchList2": {'
- ' "in_deleted_lines": r"RenderStyle::initialBoxOrient",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": [ "eric@webkit.org", ],'
- ' "WatchList2": [ "abarth@webkit.org", ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['eric@webkit.org'],
- 'messages': [],
- }, cc_and_messages)
-
- def test_deleted_match(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "in_added_lines": r"unsigned orient: 1;",'
- ' },'
- ' "WatchList2": {'
- ' "in_deleted_lines": r"unsigned orient: 1;",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": [ "eric@webkit.org", ],'
- ' "WatchList2": [ "abarth@webkit.org", ],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['abarth@webkit.org'],
- 'messages': [],
- }, cc_and_messages)
-
- def test_more_and_less_match(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- # This pattern is in both added and deleted lines, so no match.
- ' "more": r"userSelect == o\.userSelect",'
- ' },'
- ' "WatchList2": {'
- ' "more": r"boxOrient\(o\.boxOrient\)",'
- ' },'
- ' "WatchList3": {'
- ' "less": r"unsigned orient"'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": [ "eric@webkit.org", ],'
- ' "WatchList2": [ "levin@chromium.org", ],'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList3": ["Test message."],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['levin@chromium.org'],
- 'messages': ["Test message."],
- }, cc_and_messages)
-
- def test_complex_match(self):
- watch_list = self._watch_list_parser.parse(
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"WebCore/rendering/style/StyleRareInheritedData\.cpp",'
- ' "in_added_lines": r"\&\& boxOrient == o\.boxOrient;",'
- ' "in_deleted_lines": r"\&\& userSelect == o\.userSelect;",'
- ' "more": r"boxOrient\(o\.boxOrient\)",'
- ' },'
- ' "WatchList2": {'
- ' "filename": r"WebCore/rendering/style/StyleRareInheritedData\.cpp",'
- ' "in_added_lines": r"RenderStyle::initialBoxOrient",'
- ' "less": r"userSelect;"'
- ' },'
- # WatchList3 won't match because these two patterns aren't in the same file.
- ' "WatchList3": {'
- ' "in_added_lines": r"RenderStyle::initialBoxOrient",'
- ' "in_deleted_lines": r"unsigned orient: 1;",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": [ "eric@webkit.org", ],'
- ' "WatchList3": [ "abarth@webkit.org", ],'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList2": ["This is a test message."],'
- ' },'
- '}')
- cc_and_messages = watch_list.determine_cc_and_messages(DIFF_TEST_DATA)
- self.assertEqual({
- 'cc_list': ['eric@webkit.org'],
- 'messages': ["This is a test message."],
- }, cc_and_messages)
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py b/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py
deleted file mode 100644
index 1d3f581b6..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlistparser.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-import difflib
-import logging
-import re
-
-from webkitpy.common.watchlist.amountchangedpattern import AmountChangedPattern
-from webkitpy.common.watchlist.changedlinepattern import ChangedLinePattern
-from webkitpy.common.watchlist.filenamepattern import FilenamePattern
-from webkitpy.common.watchlist.watchlist import WatchList
-from webkitpy.common.watchlist.watchlistrule import WatchListRule
-from webkitpy.common.config.committers import CommitterList
-
-
-_log = logging.getLogger(__name__)
-
-
-class WatchListParser(object):
- _DEFINITIONS = 'DEFINITIONS'
- _CC_RULES = 'CC_RULES'
- _MESSAGE_RULES = 'MESSAGE_RULES'
- _INVALID_DEFINITION_NAME_REGEX = r'\|'
-
- def __init__(self, log_error=None):
- self._log_error = log_error or _log.error
- self._section_parsers = {
- self._DEFINITIONS: self._parse_definition_section,
- self._CC_RULES: self._parse_cc_rules,
- self._MESSAGE_RULES: self._parse_message_rules,
- }
- self._definition_pattern_parsers = {
- 'filename': FilenamePattern,
- 'in_added_lines': (lambda compiled_regex: ChangedLinePattern(compiled_regex, 0)),
- 'in_deleted_lines': (lambda compiled_regex: ChangedLinePattern(compiled_regex, 1)),
- 'less': (lambda compiled_regex: AmountChangedPattern(compiled_regex, 1)),
- 'more': (lambda compiled_regex: AmountChangedPattern(compiled_regex, 0)),
- }
-
- def parse(self, watch_list_contents):
- watch_list = WatchList()
-
- # Change the watch list text into a dictionary.
- dictionary = self._eval_watch_list(watch_list_contents)
-
- # Parse the top level sections in the watch list.
- for section in dictionary:
- parser = self._section_parsers.get(section)
- if not parser:
- self._log_error(('Unknown section "%s" in watch list.'
- + self._suggest_words(section, self._section_parsers.keys()))
- % section)
- continue
- parser(dictionary[section], watch_list)
-
- self._validate(watch_list)
- return watch_list
-
- def _eval_watch_list(self, watch_list_contents):
- return eval(watch_list_contents, {'__builtins__': None}, None)
-
- def _suggest_words(self, invalid_word, valid_words):
- close_matches = difflib.get_close_matches(invalid_word, valid_words)
- if not close_matches:
- return ''
- return '\n\nPerhaps it should be %s.' % (' or '.join(close_matches))
-
- def _parse_definition_section(self, definition_section, watch_list):
- definitions = {}
- for name in definition_section:
- invalid_character = re.search(self._INVALID_DEFINITION_NAME_REGEX, name)
- if invalid_character:
- self._log_error('Invalid character "%s" in definition "%s".' % (invalid_character.group(0), name))
- continue
-
- definition = definition_section[name]
- definitions[name] = []
- for pattern_type in definition:
- pattern_parser = self._definition_pattern_parsers.get(pattern_type)
- if not pattern_parser:
- self._log_error(('Unknown pattern type "%s" in definition "%s".'
- + self._suggest_words(pattern_type, self._definition_pattern_parsers.keys()))
- % (pattern_type, name))
- continue
-
- try:
- compiled_regex = re.compile(definition[pattern_type])
- except Exception, e:
- self._log_error('The regex "%s" is invalid due to "%s".' % (definition[pattern_type], str(e)))
- continue
-
- pattern = pattern_parser(compiled_regex)
- definitions[name].append(pattern)
- if not definitions[name]:
- self._log_error('The definition "%s" has no patterns, so it should be deleted.' % name)
- continue
- watch_list.definitions = definitions
-
- def _parse_rules(self, rules_section):
- rules = []
- for complex_definition in rules_section:
- instructions = rules_section[complex_definition]
- if not instructions:
- self._log_error('A rule for definition "%s" is empty, so it should be deleted.' % complex_definition)
- continue
- rules.append(WatchListRule(complex_definition, instructions))
- return rules
-
- def _parse_cc_rules(self, cc_section, watch_list):
- watch_list.cc_rules = self._parse_rules(cc_section)
-
- def _parse_message_rules(self, message_section, watch_list):
- watch_list.message_rules = self._parse_rules(message_section)
-
- def _validate(self, watch_list):
- cc_definitions_set = self._rule_definitions_as_set(watch_list.cc_rules)
- messages_definitions_set = self._rule_definitions_as_set(watch_list.message_rules)
- self._verify_all_definitions_are_used(watch_list, cc_definitions_set.union(messages_definitions_set))
-
- self._validate_definitions(cc_definitions_set, self._CC_RULES, watch_list)
- self._validate_definitions(messages_definitions_set, self._MESSAGE_RULES, watch_list)
-
- accounts = CommitterList()
- for cc_rule in watch_list.cc_rules:
- # Copy the instructions since we'll be remove items from the original list and
- # modifying a list while iterating through it leads to undefined behavior.
- intructions_copy = cc_rule.instructions()[:]
- for email in intructions_copy:
- if not accounts.contributor_by_email(email):
- cc_rule.remove_instruction(email)
- self._log_error("The email alias %s which is in the watchlist is not listed as a contributor in committers.py" % email)
- continue
-
- def _verify_all_definitions_are_used(self, watch_list, used_definitions):
- definitions_not_used = set(watch_list.definitions.keys())
- definitions_not_used.difference_update(used_definitions)
- if definitions_not_used:
- self._log_error('The following definitions are not used and should be removed: %s' % (', '.join(definitions_not_used)))
-
- def _validate_definitions(self, definitions, rules_section_name, watch_list):
- declared_definitions = watch_list.definitions.keys()
- definition_set = set(definitions)
- definition_set.difference_update(declared_definitions)
-
- if definition_set:
- suggestions = ''
- if len(definition_set) == 1:
- suggestions = self._suggest_words(set().union(definition_set).pop(), declared_definitions)
- self._log_error('In section "%s", the following definitions are not used and should be removed: %s%s' % (rules_section_name, ', '.join(definition_set), suggestions))
-
- def _rule_definitions_as_set(self, rules):
- definition_set = set()
- for rule in rules:
- definition_set = definition_set.union(rule.definitions_to_match)
- return definition_set
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py
deleted file mode 100644
index d06a72dac..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlistparser_unittest.py
+++ /dev/null
@@ -1,276 +0,0 @@
-# Copyright (C) 2011 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.
-
-'''Unit tests for watchlistparser.py.'''
-
-
-import logging
-import sys
-
-
-from webkitpy.common import webkitunittest
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.watchlist.watchlistparser import WatchListParser
-
-
-class WatchListParserTest(webkitunittest.TestCase):
- def setUp(self):
- webkitunittest.TestCase.setUp(self)
- self._watch_list_parser = WatchListParser()
-
- def test_bad_section(self):
- watch_list = ('{"FOO": {}}')
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='Unknown section "FOO" in watch list.\n')
-
- def test_section_typo(self):
- watch_list = ('{"DEFINTIONS": {}}')
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='Unknown section "DEFINTIONS" in watch list.'
- + '\n\nPerhaps it should be DEFINITIONS.\n')
-
- def test_bad_definition(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1|A": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='Invalid character "|" in definition "WatchList1|A".\n')
-
- def test_bad_filename_regex(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"*",'
- ' "more": r"RefCounted",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='The regex "*" is invalid due to "nothing to repeat".\n')
-
- def test_bad_more_regex(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r"aFileName\\.cpp",'
- ' "more": r"*",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='The regex "*" is invalid due to "nothing to repeat".\n')
-
- def test_bad_match_type(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "nothing_matches_this": r".*\\MyFileName\\.cpp",'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='Unknown pattern type "nothing_matches_this" in definition "WatchList1".\n')
-
- def test_match_type_typo(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "iflename": r".*\\MyFileName\\.cpp",'
- ' "more": r"RefCounted",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='Unknown pattern type "iflename" in definition "WatchList1".'
- + '\n\nPerhaps it should be filename.\n')
-
- def test_empty_definition(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='The definition "WatchList1" has no patterns, so it should be deleted.\n')
-
- def test_empty_cc_rule(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": [],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='A rule for definition "WatchList1" is empty, so it should be deleted.\n'
- + 'The following definitions are not used and should be removed: WatchList1\n')
-
- def test_cc_rule_with_invalid_email(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin+bad+email@chromium.org"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='The email alias levin+bad+email@chromium.org which is'
- + ' in the watchlist is not listed as a contributor in committers.py\n')
-
- def test_cc_rule_with_secondary_email(self):
- # FIXME: We should provide a mock of CommitterList so that we can test this on fake data.
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList1": ["ojan.autocc@gmail.com"],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='')
-
- def test_empty_message_rule(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList1": ['
- ' ],'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='A rule for definition "WatchList1" is empty, so it should be deleted.\n'
- + 'The following definitions are not used and should be removed: WatchList1\n')
-
- def test_unused_defintion(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='The following definitions are not used and should be removed: WatchList1\n')
-
- def test_cc_rule_with_undefined_defintion(self):
- watch_list = (
- '{'
- ' "CC_RULES": {'
- ' "WatchList1": ["levin@chromium.org"]'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='In section "CC_RULES", the following definitions are not used and should be removed: WatchList1\n')
-
- def test_message_rule_with_undefined_defintion(self):
- watch_list = (
- '{'
- ' "MESSAGE_RULES": {'
- ' "WatchList1": ["The message."]'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='In section "MESSAGE_RULES", the following definitions are not used and should be removed: WatchList1\n')
-
- def test_cc_rule_with_undefined_defintion_with_suggestion(self):
- watch_list = (
- '{'
- ' "DEFINITIONS": {'
- ' "WatchList1": {'
- ' "filename": r".*\\MyFileName\\.cpp",'
- ' },'
- ' },'
- ' "CC_RULES": {'
- ' "WatchList": ["levin@chromium.org"]'
- ' },'
- ' "MESSAGE_RULES": {'
- ' "WatchList1": ["levin@chromium.org"]'
- ' },'
- '}')
-
- OutputCapture().assert_outputs(self, self._watch_list_parser.parse, args=[watch_list],
- expected_logs='In section "CC_RULES", the following definitions are not used and should be removed: WatchList'
- + '\n\nPerhaps it should be WatchList1.\n')
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlistrule.py b/Tools/Scripts/webkitpy/common/watchlist/watchlistrule.py
deleted file mode 100644
index 69875081a..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlistrule.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-class WatchListRule:
- '''A rule with instructions to do when the rule is satisified.'''
- def __init__(self, complex_definition, instructions):
- self.definitions_to_match = complex_definition.split('|')
- self._instructions = instructions
-
- def match(self, matching_definitions):
- for test_definition in self.definitions_to_match:
- if test_definition in matching_definitions:
- return True
- return False
-
- def instructions(self):
- return self._instructions
-
- def remove_instruction(self, instruction):
- self._instructions.remove(instruction)
diff --git a/Tools/Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py b/Tools/Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py
deleted file mode 100644
index d926887e5..000000000
--- a/Tools/Scripts/webkitpy/common/watchlist/watchlistrule_unittest.py
+++ /dev/null
@@ -1,62 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-import unittest2 as unittest
-from webkitpy.common.watchlist.watchlistrule import WatchListRule
-
-
-class WatchListRuleTest(unittest.TestCase):
- def test_instruction_list(self):
- instructions = ['a', 'b']
- rule = WatchListRule('definition1', instructions[:])
- self.assertEqual(instructions, rule.instructions())
-
- def test_remove_instruction(self):
- instructions = ['a', 'b']
- rule = WatchListRule('definition1', instructions[:])
- rule.remove_instruction('b')
- self.assertEqual(['a'], rule.instructions())
-
- def test_simple_definition(self):
- definition_name = 'definition1'
- rule = WatchListRule(definition_name, [])
- self.assertTrue(rule.match([definition_name]))
- self.assertFalse(rule.match([definition_name + '1']))
-
- def test_complex_definition(self):
- definition_name1 = 'definition1'
- definition_name2 = 'definition2'
- definition_name3 = 'definition3'
- rule = WatchListRule(definition_name1 + '|' + definition_name2 + '|' + definition_name3, [])
- self.assertTrue(rule.match([definition_name1]))
- self.assertTrue(rule.match([definition_name2]))
- self.assertTrue(rule.match([definition_name3]))
- self.assertFalse(rule.match([definition_name1 + '1']))
- self.assertFalse(rule.match([definition_name2 + '1']))
- self.assertFalse(rule.match([definition_name3 + '1']))
diff --git a/Tools/Scripts/webkitpy/common/webkit_finder.py b/Tools/Scripts/webkitpy/common/webkit_finder.py
deleted file mode 100644
index 7b9c0145e..000000000
--- a/Tools/Scripts/webkitpy/common/webkit_finder.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2012 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.
-
-
-class WebKitFinder(object):
- def __init__(self, filesystem):
- self._filesystem = filesystem
- self._webkit_base = None
-
- def webkit_base(self):
- """Returns the absolute path to the top of the WebKit tree.
-
- Raises an AssertionError if the top dir can't be determined."""
- # Note: This code somewhat duplicates the code in
- # scm.find_checkout_root(). However, that code only works if the top
- # of the SCM repository also matches the top of the WebKit tree. Some SVN users
- # (the chromium test bots, for example), might only check out subdirectories like
- # Tools/Scripts. This code will also work if there is no SCM system at all.
- if not self._webkit_base:
- self._webkit_base = self._webkit_base
- module_path = self._filesystem.path_to_module(self.__module__)
- tools_index = module_path.rfind('Tools')
- assert tools_index != -1, "could not find location of this checkout from %s" % module_path
- self._webkit_base = self._filesystem.normpath(module_path[0:tools_index - 1])
- return self._webkit_base
-
- def path_from_webkit_base(self, *comps):
- return self._filesystem.join(self.webkit_base(), *comps)
-
- def path_to_script(self, script_name):
- """Returns the relative path to the script from the top of the WebKit tree."""
- # This is intentionally relative in order to force callers to consider what
- # their current working directory is (and change to the top of the tree if necessary).
- return self._filesystem.join("Tools", "Scripts", script_name)
-
- def layout_tests_dir(self):
- return self.path_from_webkit_base('LayoutTests')
-
- def perf_tests_dir(self):
- return self.path_from_webkit_base('PerformanceTests')
diff --git a/Tools/Scripts/webkitpy/common/webkitunittest.py b/Tools/Scripts/webkitpy/common/webkitunittest.py
deleted file mode 100644
index dd6152379..000000000
--- a/Tools/Scripts/webkitpy/common/webkitunittest.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2011 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.
-
-'''Basic unit test functionality.'''
-
-import re
-import unittest2 as unittest
-
-
-class TestCase(unittest.TestCase):
- def setUp(self):
- # For versions of Python before 2.7.
- if not 'assertRaisesRegexp' in dir(self):
- self.assertRaisesRegexp = self._assertRaisesRegexp
-
- def _assertRaisesRegexp(self, expected_exception, regex_message, callable, *args):
- try:
- callable(*args)
- self.assertTrue(False, 'No assert raised.')
- except Exception, exception:
- self.assertTrue(issubclass(exception.__class__, expected_exception),
- 'Exception type was unexpected.')
- self.assertTrue(re.match(regex_message, exception.__str__()),
- 'Expected regex "%s"\nGot "%s"' % (regex_message, exception.__str__()))
diff --git a/Tools/Scripts/webkitpy/layout_tests/__init__.py b/Tools/Scripts/webkitpy/layout_tests/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/__init__.py b/Tools/Scripts/webkitpy/layout_tests/controllers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py
deleted file mode 100644
index 429aeddfd..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_finder.py
+++ /dev/null
@@ -1,175 +0,0 @@
-# Copyright (C) 2012 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.
-
-import errno
-import logging
-import re
-
-from webkitpy.layout_tests.models import test_expectations
-
-
-_log = logging.getLogger(__name__)
-
-
-class LayoutTestFinder(object):
- def __init__(self, port, options):
- self._port = port
- self._options = options
- self._filesystem = self._port.host.filesystem
- self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
-
- def find_tests(self, options, args):
- paths = self._strip_test_dir_prefixes(args)
- if options.test_list:
- paths += self._strip_test_dir_prefixes(self._read_test_names_from_file(options.test_list, self._port.TEST_PATH_SEPARATOR))
- test_files = self._port.tests(paths)
- return (paths, test_files)
-
- def _strip_test_dir_prefixes(self, paths):
- return [self._strip_test_dir_prefix(path) for path in paths if path]
-
- def _strip_test_dir_prefix(self, path):
- # Handle both "LayoutTests/foo/bar.html" and "LayoutTests\foo\bar.html" if
- # the filesystem uses '\\' as a directory separator.
- if path.startswith(self.LAYOUT_TESTS_DIRECTORY + self._port.TEST_PATH_SEPARATOR):
- return path[len(self.LAYOUT_TESTS_DIRECTORY + self._port.TEST_PATH_SEPARATOR):]
- if path.startswith(self.LAYOUT_TESTS_DIRECTORY + self._filesystem.sep):
- return path[len(self.LAYOUT_TESTS_DIRECTORY + self._filesystem.sep):]
- return path
-
- def _read_test_names_from_file(self, filenames, test_path_separator):
- fs = self._filesystem
- tests = []
- for filename in filenames:
- try:
- if test_path_separator != fs.sep:
- filename = filename.replace(test_path_separator, fs.sep)
- file_contents = fs.read_text_file(filename).split('\n')
- for line in file_contents:
- line = self._strip_comments(line)
- if line:
- tests.append(line)
- except IOError, e:
- if e.errno == errno.ENOENT:
- _log.critical('')
- _log.critical('--test-list file "%s" not found' % file)
- raise
- return tests
-
- @staticmethod
- def _strip_comments(line):
- commentIndex = line.find('//')
- if commentIndex is -1:
- commentIndex = len(line)
-
- line = re.sub(r'\s+', ' ', line[:commentIndex].strip())
- if line == '':
- return None
- else:
- return line
-
- def skip_tests(self, paths, all_tests_list, expectations, http_tests):
- all_tests = set(all_tests_list)
-
- tests_to_skip = expectations.get_tests_with_result_type(test_expectations.SKIP)
- if self._options.skip_failing_tests:
- tests_to_skip.update(expectations.get_tests_with_result_type(test_expectations.FAIL))
- tests_to_skip.update(expectations.get_tests_with_result_type(test_expectations.FLAKY))
-
- if self._options.skipped == 'only':
- tests_to_skip = all_tests - tests_to_skip
- elif self._options.skipped == 'ignore':
- tests_to_skip = set()
- elif self._options.skipped != 'always':
- # make sure we're explicitly running any tests passed on the command line; equivalent to 'default'.
- tests_to_skip -= set(paths)
-
- # unless of course we don't want to run the HTTP tests :)
- if not self._options.http:
- tests_to_skip.update(set(http_tests))
-
- return tests_to_skip
-
- def split_into_chunks(self, test_names):
- """split into a list to run and a set to skip, based on --run-chunk and --run-part."""
- if not self._options.run_chunk and not self._options.run_part:
- return test_names, set()
-
- # If the user specifies they just want to run a subset of the tests,
- # just grab a subset of the non-skipped tests.
- chunk_value = self._options.run_chunk or self._options.run_part
- try:
- (chunk_num, chunk_len) = chunk_value.split(":")
- chunk_num = int(chunk_num)
- assert(chunk_num >= 0)
- test_size = int(chunk_len)
- assert(test_size > 0)
- except AssertionError:
- _log.critical("invalid chunk '%s'" % chunk_value)
- return (None, None)
-
- # Get the number of tests
- num_tests = len(test_names)
-
- # Get the start offset of the slice.
- if self._options.run_chunk:
- chunk_len = test_size
- # In this case chunk_num can be really large. We need
- # to make the slave fit in the current number of tests.
- slice_start = (chunk_num * chunk_len) % num_tests
- else:
- # Validate the data.
- assert(test_size <= num_tests)
- assert(chunk_num <= test_size)
-
- # To count the chunk_len, and make sure we don't skip
- # some tests, we round to the next value that fits exactly
- # all the parts.
- rounded_tests = num_tests
- if rounded_tests % test_size != 0:
- rounded_tests = (num_tests + test_size - (num_tests % test_size))
-
- chunk_len = rounded_tests / test_size
- slice_start = chunk_len * (chunk_num - 1)
- # It does not mind if we go over test_size.
-
- # Get the end offset of the slice.
- slice_end = min(num_tests, slice_start + chunk_len)
-
- tests_to_run = test_names[slice_start:slice_end]
-
- _log.debug('chunk slice [%d:%d] of %d is %d tests' % (slice_start, slice_end, num_tests, (slice_end - slice_start)))
-
- # If we reached the end and we don't have enough tests, we run some
- # from the beginning.
- if slice_end - slice_start < chunk_len:
- extra = chunk_len - (slice_end - slice_start)
- _log.debug(' last chunk is partial, appending [0:%d]' % extra)
- tests_to_run.extend(test_names[0:extra])
-
- return (tests_to_run, set(test_names) - set(tests_to_run))
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
deleted file mode 100644
index 3fd40e38f..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner.py
+++ /dev/null
@@ -1,582 +0,0 @@
-# Copyright (C) 2011 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.
-
-import logging
-import math
-import threading
-import time
-
-from webkitpy.common import message_pool
-from webkitpy.layout_tests.controllers import single_test_runner
-from webkitpy.layout_tests.models.test_run_results import TestRunResults
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models import test_results
-from webkitpy.tool import grammar
-
-
-_log = logging.getLogger(__name__)
-
-
-TestExpectations = test_expectations.TestExpectations
-
-# Export this so callers don't need to know about message pools.
-WorkerException = message_pool.WorkerException
-
-
-class TestRunInterruptedException(Exception):
- """Raised when a test run should be stopped immediately."""
- def __init__(self, reason):
- Exception.__init__(self)
- self.reason = reason
- self.msg = reason
-
- def __reduce__(self):
- return self.__class__, (self.reason,)
-
-
-class LayoutTestRunner(object):
- def __init__(self, options, port, printer, results_directory, test_is_slow_fn):
- self._options = options
- self._port = port
- self._printer = printer
- self._results_directory = results_directory
- self._test_is_slow = test_is_slow_fn
- self._sharder = Sharder(self._port.split_test, self._options.max_locked_shards)
- self._filesystem = self._port.host.filesystem
-
- self._expectations = None
- self._test_inputs = []
- self._needs_http = None
- self._needs_websockets = None
- self._retrying = False
-
- self._current_run_results = None
- self._remaining_locked_shards = []
- self._has_http_lock = False
-
- def run_tests(self, expectations, test_inputs, tests_to_skip, num_workers, needs_http, needs_websockets, retrying):
- self._expectations = expectations
- self._test_inputs = test_inputs
- self._needs_http = needs_http
- self._needs_websockets = needs_websockets
- self._retrying = retrying
-
- # FIXME: rename all variables to test_run_results or some such ...
- run_results = TestRunResults(self._expectations, len(test_inputs) + len(tests_to_skip))
- self._current_run_results = run_results
- self._remaining_locked_shards = []
- self._has_http_lock = False
- self._printer.num_tests = len(test_inputs)
- self._printer.num_started = 0
-
- if not retrying:
- self._printer.print_expected(run_results, self._expectations.get_tests_with_result_type)
-
- for test_name in set(tests_to_skip):
- result = test_results.TestResult(test_name)
- result.type = test_expectations.SKIP
- run_results.add(result, expected=True, test_is_slow=self._test_is_slow(test_name))
-
- self._printer.write_update('Sharding tests ...')
- locked_shards, unlocked_shards = self._sharder.shard_tests(test_inputs, int(self._options.child_processes), self._options.fully_parallel)
-
- # FIXME: We don't have a good way to coordinate the workers so that
- # they don't try to run the shards that need a lock if we don't actually
- # have the lock. The easiest solution at the moment is to grab the
- # lock at the beginning of the run, and then run all of the locked
- # shards first. This minimizes the time spent holding the lock, but
- # means that we won't be running tests while we're waiting for the lock.
- # If this becomes a problem in practice we'll need to change this.
-
- all_shards = locked_shards + unlocked_shards
- self._remaining_locked_shards = locked_shards
- if locked_shards and self._options.http:
- self.start_servers_with_lock(2 * min(num_workers, len(locked_shards)))
-
- num_workers = min(num_workers, len(all_shards))
- self._printer.print_workers_and_shards(num_workers, len(all_shards), len(locked_shards))
-
- if self._options.dry_run:
- return run_results
-
- self._printer.write_update('Starting %s ...' % grammar.pluralize('worker', num_workers))
-
- try:
- with message_pool.get(self, self._worker_factory, num_workers, self._port.worker_startup_delay_secs(), self._port.host) as pool:
- pool.run(('test_list', shard.name, shard.test_inputs) for shard in all_shards)
- except TestRunInterruptedException, e:
- _log.warning(e.reason)
- run_results.interrupted = True
- except KeyboardInterrupt:
- self._printer.flush()
- self._printer.writeln('Interrupted, exiting ...')
- raise
- except Exception, e:
- _log.debug('%s("%s") raised, exiting' % (e.__class__.__name__, str(e)))
- raise
- finally:
- self.stop_servers_with_lock()
-
- return run_results
-
- def _worker_factory(self, worker_connection):
- results_directory = self._results_directory
- if self._retrying:
- self._filesystem.maybe_make_directory(self._filesystem.join(self._results_directory, 'retries'))
- results_directory = self._filesystem.join(self._results_directory, 'retries')
- return Worker(worker_connection, results_directory, self._options)
-
- def _mark_interrupted_tests_as_skipped(self, run_results):
- for test_input in self._test_inputs:
- if test_input.test_name not in run_results.results_by_name:
- result = test_results.TestResult(test_input.test_name, [test_failures.FailureEarlyExit()])
- # FIXME: We probably need to loop here if there are multiple iterations.
- # FIXME: Also, these results are really neither expected nor unexpected. We probably
- # need a third type of result.
- run_results.add(result, expected=False, test_is_slow=self._test_is_slow(test_input.test_name))
-
- def _interrupt_if_at_failure_limits(self, run_results):
- # Note: The messages in this method are constructed to match old-run-webkit-tests
- # so that existing buildbot grep rules work.
- def interrupt_if_at_failure_limit(limit, failure_count, run_results, message):
- if limit and failure_count >= limit:
- message += " %d tests run." % (run_results.expected + run_results.unexpected)
- self._mark_interrupted_tests_as_skipped(run_results)
- raise TestRunInterruptedException(message)
-
- interrupt_if_at_failure_limit(
- self._options.exit_after_n_failures,
- run_results.unexpected_failures,
- run_results,
- "Exiting early after %d failures." % run_results.unexpected_failures)
- interrupt_if_at_failure_limit(
- self._options.exit_after_n_crashes_or_timeouts,
- run_results.unexpected_crashes + run_results.unexpected_timeouts,
- run_results,
- # This differs from ORWT because it does not include WebProcess crashes.
- "Exiting early after %d crashes and %d timeouts." % (run_results.unexpected_crashes, run_results.unexpected_timeouts))
-
- def _update_summary_with_result(self, run_results, result):
- if result.type == test_expectations.SKIP:
- exp_str = got_str = 'SKIP'
- expected = True
- else:
- expected = self._expectations.matches_an_expected_result(result.test_name, result.type, self._options.pixel_tests or result.reftest_type)
- exp_str = self._expectations.get_expectations_string(result.test_name)
- got_str = self._expectations.expectation_to_string(result.type)
-
- run_results.add(result, expected, self._test_is_slow(result.test_name))
-
- self._printer.print_finished_test(result, expected, exp_str, got_str)
-
- self._interrupt_if_at_failure_limits(run_results)
-
- def start_servers_with_lock(self, number_of_servers):
- self._printer.write_update('Acquiring http lock ...')
- self._port.acquire_http_lock()
- if self._needs_http:
- self._printer.write_update('Starting HTTP server ...')
- self._port.start_http_server(number_of_servers=number_of_servers)
- if self._needs_websockets:
- self._printer.write_update('Starting WebSocket server ...')
- self._port.start_websocket_server()
- self._has_http_lock = True
-
- def stop_servers_with_lock(self):
- if self._has_http_lock:
- if self._needs_http:
- self._printer.write_update('Stopping HTTP server ...')
- self._port.stop_http_server()
- if self._needs_websockets:
- self._printer.write_update('Stopping WebSocket server ...')
- self._port.stop_websocket_server()
- self._printer.write_update('Releasing server lock ...')
- self._port.release_http_lock()
- self._has_http_lock = False
-
- def handle(self, name, source, *args):
- method = getattr(self, '_handle_' + name)
- if method:
- return method(source, *args)
- raise AssertionError('unknown message %s received from %s, args=%s' % (name, source, repr(args)))
-
- def _handle_started_test(self, worker_name, test_input, test_timeout_sec):
- self._printer.print_started_test(test_input.test_name)
-
- def _handle_finished_test_list(self, worker_name, list_name):
- def find(name, test_lists):
- for i in range(len(test_lists)):
- if test_lists[i].name == name:
- return i
- return -1
-
- index = find(list_name, self._remaining_locked_shards)
- if index >= 0:
- self._remaining_locked_shards.pop(index)
- if not self._remaining_locked_shards:
- self.stop_servers_with_lock()
-
- def _handle_finished_test(self, worker_name, result, log_messages=[]):
- self._update_summary_with_result(self._current_run_results, result)
-
-
-class Worker(object):
- def __init__(self, caller, results_directory, options):
- self._caller = caller
- self._worker_number = caller.worker_number
- self._name = caller.name
- self._results_directory = results_directory
- self._options = options
-
- # The remaining fields are initialized in start()
- self._host = None
- self._port = None
- self._batch_size = None
- self._batch_count = None
- self._filesystem = None
- self._driver = None
- self._num_tests = 0
-
- def __del__(self):
- self.stop()
-
- def start(self):
- """This method is called when the object is starting to be used and it is safe
- for the object to create state that does not need to be pickled (usually this means
- it is called in a child process)."""
- self._host = self._caller.host
- self._filesystem = self._host.filesystem
- self._port = self._host.port_factory.get(self._options.platform, self._options)
-
- self._batch_count = 0
- self._batch_size = self._options.batch_size or 0
-
- def handle(self, name, source, test_list_name, test_inputs):
- assert name == 'test_list'
- for test_input in test_inputs:
- self._run_test(test_input, test_list_name)
- self._caller.post('finished_test_list', test_list_name)
-
- def _update_test_input(self, test_input):
- if test_input.reference_files is None:
- # Lazy initialization.
- test_input.reference_files = self._port.reference_files(test_input.test_name)
- if test_input.reference_files:
- test_input.should_run_pixel_test = True
- else:
- test_input.should_run_pixel_test = self._port.should_run_as_pixel_test(test_input)
-
- def _run_test(self, test_input, shard_name):
- self._batch_count += 1
-
- stop_when_done = False
- if self._batch_size > 0 and self._batch_count >= self._batch_size:
- self._batch_count = 0
- stop_when_done = True
-
- self._update_test_input(test_input)
- test_timeout_sec = self._timeout(test_input)
- start = time.time()
- self._caller.post('started_test', test_input, test_timeout_sec)
-
- result = self._run_test_with_timeout(test_input, test_timeout_sec, stop_when_done)
- result.shard_name = shard_name
- result.worker_name = self._name
- result.total_run_time = time.time() - start
- result.test_number = self._num_tests
- self._num_tests += 1
-
- self._caller.post('finished_test', result)
-
- self._clean_up_after_test(test_input, result)
-
- def stop(self):
- _log.debug("%s cleaning up" % self._name)
- self._kill_driver()
-
- def _timeout(self, test_input):
- """Compute the appropriate timeout value for a test."""
- # The DumpRenderTree watchdog uses 2.5x the timeout; we want to be
- # larger than that. We also add a little more padding if we're
- # running tests in a separate thread.
- #
- # Note that we need to convert the test timeout from a
- # string value in milliseconds to a float for Python.
- driver_timeout_sec = 3.0 * float(test_input.timeout) / 1000.0
- if not self._options.run_singly:
- return driver_timeout_sec
-
- thread_padding_sec = 1.0
- thread_timeout_sec = driver_timeout_sec + thread_padding_sec
- return thread_timeout_sec
-
- def _kill_driver(self):
- # Be careful about how and when we kill the driver; if driver.stop()
- # raises an exception, this routine may get re-entered via __del__.
- driver = self._driver
- self._driver = None
- if driver:
- _log.debug("%s killing driver" % self._name)
- driver.stop()
-
- def _run_test_with_timeout(self, test_input, timeout, stop_when_done):
- if self._options.run_singly:
- return self._run_test_in_another_thread(test_input, timeout, stop_when_done)
- return self._run_test_in_this_thread(test_input, stop_when_done)
-
- def _clean_up_after_test(self, test_input, result):
- test_name = test_input.test_name
-
- if result.failures:
- # Check and kill DumpRenderTree if we need to.
- if any([f.driver_needs_restart() for f in result.failures]):
- self._kill_driver()
- # Reset the batch count since the shell just bounced.
- self._batch_count = 0
-
- # Print the error message(s).
- _log.debug("%s %s failed:" % (self._name, test_name))
- for f in result.failures:
- _log.debug("%s %s" % (self._name, f.message()))
- elif result.type == test_expectations.SKIP:
- _log.debug("%s %s skipped" % (self._name, test_name))
- else:
- _log.debug("%s %s passed" % (self._name, test_name))
-
- def _run_test_in_another_thread(self, test_input, thread_timeout_sec, stop_when_done):
- """Run a test in a separate thread, enforcing a hard time limit.
-
- Since we can only detect the termination of a thread, not any internal
- state or progress, we can only run per-test timeouts when running test
- files singly.
-
- Args:
- test_input: Object containing the test filename and timeout
- thread_timeout_sec: time to wait before killing the driver process.
- Returns:
- A TestResult
- """
- worker = self
-
- driver = self._port.create_driver(self._worker_number)
-
- class SingleTestThread(threading.Thread):
- def __init__(self):
- threading.Thread.__init__(self)
- self.result = None
-
- def run(self):
- self.result = worker._run_single_test(driver, test_input, stop_when_done)
-
- thread = SingleTestThread()
- thread.start()
- thread.join(thread_timeout_sec)
- result = thread.result
- failures = []
- if thread.isAlive():
- # If join() returned with the thread still running, the
- # DumpRenderTree is completely hung and there's nothing
- # more we can do with it. We have to kill all the
- # DumpRenderTrees to free it up. If we're running more than
- # one DumpRenderTree thread, we'll end up killing the other
- # DumpRenderTrees too, introducing spurious crashes. We accept
- # that tradeoff in order to avoid losing the rest of this
- # thread's results.
- _log.error('Test thread hung: killing all DumpRenderTrees')
- failures = [test_failures.FailureTimeout()]
-
- driver.stop()
-
- if not result:
- result = test_results.TestResult(test_input.test_name, failures=failures, test_run_time=0)
- return result
-
- def _run_test_in_this_thread(self, test_input, stop_when_done):
- """Run a single test file using a shared DumpRenderTree process.
-
- Args:
- test_input: Object containing the test filename, uri and timeout
-
- Returns: a TestResult object.
- """
- if self._driver and self._driver.has_crashed():
- self._kill_driver()
- if not self._driver:
- self._driver = self._port.create_driver(self._worker_number)
- return self._run_single_test(self._driver, test_input, stop_when_done)
-
- def _run_single_test(self, driver, test_input, stop_when_done):
- return single_test_runner.run_single_test(self._port, self._options, self._results_directory,
- self._name, driver, test_input, stop_when_done)
-
-
-class TestShard(object):
- """A test shard is a named list of TestInputs."""
-
- def __init__(self, name, test_inputs):
- self.name = name
- self.test_inputs = test_inputs
- self.requires_lock = test_inputs[0].requires_lock
-
- def __repr__(self):
- return "TestShard(name='%s', test_inputs=%s, requires_lock=%s'" % (self.name, self.test_inputs, self.requires_lock)
-
- def __eq__(self, other):
- return self.name == other.name and self.test_inputs == other.test_inputs
-
-
-class Sharder(object):
- def __init__(self, test_split_fn, max_locked_shards):
- self._split = test_split_fn
- self._max_locked_shards = max_locked_shards
-
- def shard_tests(self, test_inputs, num_workers, fully_parallel):
- """Groups tests into batches.
- This helps ensure that tests that depend on each other (aka bad tests!)
- continue to run together as most cross-tests dependencies tend to
- occur within the same directory.
- Return:
- Two list of TestShards. The first contains tests that must only be
- run under the server lock, the second can be run whenever.
- """
-
- # FIXME: Move all of the sharding logic out of manager into its
- # own class or module. Consider grouping it with the chunking logic
- # in prepare_lists as well.
- if num_workers == 1:
- return self._shard_in_two(test_inputs)
- elif fully_parallel:
- return self._shard_every_file(test_inputs)
- return self._shard_by_directory(test_inputs, num_workers)
-
- def _shard_in_two(self, test_inputs):
- """Returns two lists of shards, one with all the tests requiring a lock and one with the rest.
-
- This is used when there's only one worker, to minimize the per-shard overhead."""
- locked_inputs = []
- unlocked_inputs = []
- for test_input in test_inputs:
- if test_input.requires_lock:
- locked_inputs.append(test_input)
- else:
- unlocked_inputs.append(test_input)
-
- locked_shards = []
- unlocked_shards = []
- if locked_inputs:
- locked_shards = [TestShard('locked_tests', locked_inputs)]
- if unlocked_inputs:
- unlocked_shards = [TestShard('unlocked_tests', unlocked_inputs)]
-
- return locked_shards, unlocked_shards
-
- def _shard_every_file(self, test_inputs):
- """Returns two lists of shards, each shard containing a single test file.
-
- This mode gets maximal parallelism at the cost of much higher flakiness."""
- locked_shards = []
- unlocked_shards = []
- for test_input in test_inputs:
- # Note that we use a '.' for the shard name; the name doesn't really
- # matter, and the only other meaningful value would be the filename,
- # which would be really redundant.
- if test_input.requires_lock:
- locked_shards.append(TestShard('.', [test_input]))
- else:
- unlocked_shards.append(TestShard('.', [test_input]))
-
- return locked_shards, unlocked_shards
-
- def _shard_by_directory(self, test_inputs, num_workers):
- """Returns two lists of shards, each shard containing all the files in a directory.
-
- This is the default mode, and gets as much parallelism as we can while
- minimizing flakiness caused by inter-test dependencies."""
- locked_shards = []
- unlocked_shards = []
- tests_by_dir = {}
- # FIXME: Given that the tests are already sorted by directory,
- # we can probably rewrite this to be clearer and faster.
- for test_input in test_inputs:
- directory = self._split(test_input.test_name)[0]
- tests_by_dir.setdefault(directory, [])
- tests_by_dir[directory].append(test_input)
-
- for directory, test_inputs in tests_by_dir.iteritems():
- shard = TestShard(directory, test_inputs)
- if test_inputs[0].requires_lock:
- locked_shards.append(shard)
- else:
- unlocked_shards.append(shard)
-
- # Sort the shards by directory name.
- locked_shards.sort(key=lambda shard: shard.name)
- unlocked_shards.sort(key=lambda shard: shard.name)
-
- # Put a ceiling on the number of locked shards, so that we
- # don't hammer the servers too badly.
-
- # FIXME: For now, limit to one shard or set it
- # with the --max-locked-shards. After testing to make sure we
- # can handle multiple shards, we should probably do something like
- # limit this to no more than a quarter of all workers, e.g.:
- # return max(math.ceil(num_workers / 4.0), 1)
- return (self._resize_shards(locked_shards, self._max_locked_shards, 'locked_shard'),
- unlocked_shards)
-
- def _resize_shards(self, old_shards, max_new_shards, shard_name_prefix):
- """Takes a list of shards and redistributes the tests into no more
- than |max_new_shards| new shards."""
-
- # This implementation assumes that each input shard only contains tests from a
- # single directory, and that tests in each shard must remain together; as a
- # result, a given input shard is never split between output shards.
- #
- # Each output shard contains the tests from one or more input shards and
- # hence may contain tests from multiple directories.
-
- def divide_and_round_up(numerator, divisor):
- return int(math.ceil(float(numerator) / divisor))
-
- def extract_and_flatten(shards):
- test_inputs = []
- for shard in shards:
- test_inputs.extend(shard.test_inputs)
- return test_inputs
-
- def split_at(seq, index):
- return (seq[:index], seq[index:])
-
- num_old_per_new = divide_and_round_up(len(old_shards), max_new_shards)
- new_shards = []
- remaining_shards = old_shards
- while remaining_shards:
- some_shards, remaining_shards = split_at(remaining_shards, num_old_per_new)
- new_shards.append(TestShard('%s_%d' % (shard_name_prefix, len(new_shards) + 1), extract_and_flatten(some_shards)))
- return new_shards
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py b/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
deleted file mode 100644
index 406870a96..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/layout_test_runner_unittest.py
+++ /dev/null
@@ -1,334 +0,0 @@
-# Copyright (C) 2012 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.layout_tests import run_webkit_tests
-from webkitpy.layout_tests.controllers.layout_test_runner import LayoutTestRunner, Sharder, TestRunInterruptedException
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models.test_run_results import TestRunResults
-from webkitpy.layout_tests.models.test_input import TestInput
-from webkitpy.layout_tests.models.test_results import TestResult
-from webkitpy.port.test import TestPort
-
-
-TestExpectations = test_expectations.TestExpectations
-
-
-class FakePrinter(object):
- num_started = 0
- num_tests = 0
-
- def print_expected(self, run_results, get_tests_with_result_type):
- pass
-
- def print_workers_and_shards(self, num_workers, num_shards, num_locked_shards):
- pass
-
- def print_started_test(self, test_name):
- pass
-
- def print_finished_test(self, result, expected, exp_str, got_str):
- pass
-
- def write(self, msg):
- pass
-
- def write_update(self, msg):
- pass
-
- def flush(self):
- pass
-
-
-class LockCheckingRunner(LayoutTestRunner):
- def __init__(self, port, options, printer, tester, http_lock):
- super(LockCheckingRunner, self).__init__(options, port, printer, port.results_directory(), lambda test_name: False)
- self._finished_list_called = False
- self._tester = tester
- self._should_have_http_lock = http_lock
-
- def handle_finished_list(self, source, list_name, num_tests, elapsed_time):
- if not self._finished_list_called:
- self._tester.assertEqual(list_name, 'locked_tests')
- self._tester.assertTrue(self._remaining_locked_shards)
- self._tester.assertTrue(self._has_http_lock is self._should_have_http_lock)
-
- super(LockCheckingRunner, self).handle_finished_list(source, list_name, num_tests, elapsed_time)
-
- if not self._finished_list_called:
- self._tester.assertEqual(self._remaining_locked_shards, [])
- self._tester.assertFalse(self._has_http_lock)
- self._finished_list_called = True
-
-
-class LayoutTestRunnerTests(unittest.TestCase):
- def _runner(self, port=None):
- # FIXME: we shouldn't have to use run_webkit_tests.py to get the options we need.
- options = run_webkit_tests.parse_args(['--platform', 'test-mac-snowleopard'])[0]
- options.child_processes = '1'
-
- host = MockHost()
- port = port or host.port_factory.get(options.platform, options=options)
- return LockCheckingRunner(port, options, FakePrinter(), self, True)
-
- def _run_tests(self, runner, tests):
- test_inputs = [TestInput(test, 6000) for test in tests]
- expectations = TestExpectations(runner._port, tests)
- runner.run_tests(expectations, test_inputs, set(),
- num_workers=1, needs_http=any('http' in test for test in tests), needs_websockets=any(['websocket' in test for test in tests]), retrying=False)
-
- def test_http_locking(self):
- runner = self._runner()
- self._run_tests(runner, ['http/tests/passes/text.html', 'passes/text.html'])
-
- def test_perf_locking(self):
- runner = self._runner()
- self._run_tests(runner, ['http/tests/passes/text.html', 'perf/foo/test.html'])
-
- def test_interrupt_if_at_failure_limits(self):
- runner = self._runner()
- runner._options.exit_after_n_failures = None
- runner._options.exit_after_n_crashes_or_times = None
- test_names = ['passes/text.html', 'passes/image.html']
- runner._test_inputs = [TestInput(test_name, 6000) for test_name in test_names]
-
- run_results = TestRunResults(TestExpectations(runner._port, test_names), len(test_names))
- run_results.unexpected_failures = 100
- run_results.unexpected_crashes = 50
- run_results.unexpected_timeouts = 50
- # No exception when the exit_after* options are None.
- runner._interrupt_if_at_failure_limits(run_results)
-
- # No exception when we haven't hit the limit yet.
- runner._options.exit_after_n_failures = 101
- runner._options.exit_after_n_crashes_or_timeouts = 101
- runner._interrupt_if_at_failure_limits(run_results)
-
- # Interrupt if we've exceeded either limit:
- runner._options.exit_after_n_crashes_or_timeouts = 10
- self.assertRaises(TestRunInterruptedException, runner._interrupt_if_at_failure_limits, run_results)
- self.assertEqual(run_results.results_by_name['passes/text.html'].type, test_expectations.SKIP)
- self.assertEqual(run_results.results_by_name['passes/image.html'].type, test_expectations.SKIP)
-
- runner._options.exit_after_n_crashes_or_timeouts = None
- runner._options.exit_after_n_failures = 10
- exception = self.assertRaises(TestRunInterruptedException, runner._interrupt_if_at_failure_limits, run_results)
-
- def test_update_summary_with_result(self):
- # Reftests expected to be image mismatch should be respected when pixel_tests=False.
- runner = self._runner()
- runner._options.pixel_tests = False
- test = 'failures/expected/reftest.html'
- expectations = TestExpectations(runner._port, tests=[test])
- runner._expectations = expectations
-
- run_results = TestRunResults(expectations, 1)
- result = TestResult(test_name=test, failures=[test_failures.FailureReftestMismatchDidNotOccur()], reftest_type=['!='])
- runner._update_summary_with_result(run_results, result)
- self.assertEqual(1, run_results.expected)
- self.assertEqual(0, run_results.unexpected)
-
- run_results = TestRunResults(expectations, 1)
- result = TestResult(test_name=test, failures=[], reftest_type=['=='])
- runner._update_summary_with_result(run_results, result)
- self.assertEqual(0, run_results.expected)
- self.assertEqual(1, run_results.unexpected)
-
- def test_servers_started(self):
-
- def start_http_server(number_of_servers=None):
- self.http_started = True
-
- def start_websocket_server():
- self.websocket_started = True
-
- def stop_http_server():
- self.http_stopped = True
-
- def stop_websocket_server():
- self.websocket_stopped = True
-
- host = MockHost()
- port = host.port_factory.get('test-mac-leopard')
- port.start_http_server = start_http_server
- port.start_websocket_server = start_websocket_server
- port.stop_http_server = stop_http_server
- port.stop_websocket_server = stop_websocket_server
-
- self.http_started = self.http_stopped = self.websocket_started = self.websocket_stopped = False
- runner = self._runner(port=port)
- runner._needs_http = True
- runner._needs_websockets = False
- runner.start_servers_with_lock(number_of_servers=4)
- self.assertEqual(self.http_started, True)
- self.assertEqual(self.websocket_started, False)
- runner.stop_servers_with_lock()
- self.assertEqual(self.http_stopped, True)
- self.assertEqual(self.websocket_stopped, False)
-
- self.http_started = self.http_stopped = self.websocket_started = self.websocket_stopped = False
- runner._needs_http = True
- runner._needs_websockets = True
- runner.start_servers_with_lock(number_of_servers=4)
- self.assertEqual(self.http_started, True)
- self.assertEqual(self.websocket_started, True)
- runner.stop_servers_with_lock()
- self.assertEqual(self.http_stopped, True)
- self.assertEqual(self.websocket_stopped, True)
-
- self.http_started = self.http_stopped = self.websocket_started = self.websocket_stopped = False
- runner._needs_http = False
- runner._needs_websockets = False
- runner.start_servers_with_lock(number_of_servers=4)
- self.assertEqual(self.http_started, False)
- self.assertEqual(self.websocket_started, False)
- runner.stop_servers_with_lock()
- self.assertEqual(self.http_stopped, False)
- self.assertEqual(self.websocket_stopped, False)
-
-
-class SharderTests(unittest.TestCase):
-
- test_list = [
- "http/tests/websocket/tests/unicode.htm",
- "animations/keyframes.html",
- "http/tests/security/view-source-no-refresh.html",
- "http/tests/websocket/tests/websocket-protocol-ignored.html",
- "fast/css/display-none-inline-style-change-crash.html",
- "http/tests/xmlhttprequest/supported-xml-content-types.html",
- "dom/html/level2/html/HTMLAnchorElement03.html",
- "ietestcenter/Javascript/11.1.5_4-4-c-1.html",
- "dom/html/level2/html/HTMLAnchorElement06.html",
- "perf/object-keys.html",
- ]
-
- def get_test_input(self, test_file):
- return TestInput(test_file, requires_lock=(test_file.startswith('http') or test_file.startswith('perf')))
-
- def get_shards(self, num_workers, fully_parallel, test_list=None, max_locked_shards=1):
- port = TestPort(MockSystemHost())
- self.sharder = Sharder(port.split_test, max_locked_shards)
- test_list = test_list or self.test_list
- return self.sharder.shard_tests([self.get_test_input(test) for test in test_list], num_workers, fully_parallel)
-
- def assert_shards(self, actual_shards, expected_shard_names):
- self.assertEqual(len(actual_shards), len(expected_shard_names))
- for i, shard in enumerate(actual_shards):
- expected_shard_name, expected_test_names = expected_shard_names[i]
- self.assertEqual(shard.name, expected_shard_name)
- self.assertEqual([test_input.test_name for test_input in shard.test_inputs],
- expected_test_names)
-
- def test_shard_by_dir(self):
- locked, unlocked = self.get_shards(num_workers=2, fully_parallel=False)
-
- # Note that although there are tests in multiple dirs that need locks,
- # they are crammed into a single shard in order to reduce the # of
- # workers hitting the server at once.
- self.assert_shards(locked,
- [('locked_shard_1',
- ['http/tests/security/view-source-no-refresh.html',
- 'http/tests/websocket/tests/unicode.htm',
- 'http/tests/websocket/tests/websocket-protocol-ignored.html',
- 'http/tests/xmlhttprequest/supported-xml-content-types.html',
- 'perf/object-keys.html'])])
- self.assert_shards(unlocked,
- [('animations', ['animations/keyframes.html']),
- ('dom/html/level2/html', ['dom/html/level2/html/HTMLAnchorElement03.html',
- 'dom/html/level2/html/HTMLAnchorElement06.html']),
- ('fast/css', ['fast/css/display-none-inline-style-change-crash.html']),
- ('ietestcenter/Javascript', ['ietestcenter/Javascript/11.1.5_4-4-c-1.html'])])
-
- def test_shard_every_file(self):
- locked, unlocked = self.get_shards(num_workers=2, fully_parallel=True)
- self.assert_shards(locked,
- [('.', ['http/tests/websocket/tests/unicode.htm']),
- ('.', ['http/tests/security/view-source-no-refresh.html']),
- ('.', ['http/tests/websocket/tests/websocket-protocol-ignored.html']),
- ('.', ['http/tests/xmlhttprequest/supported-xml-content-types.html']),
- ('.', ['perf/object-keys.html'])]),
- self.assert_shards(unlocked,
- [('.', ['animations/keyframes.html']),
- ('.', ['fast/css/display-none-inline-style-change-crash.html']),
- ('.', ['dom/html/level2/html/HTMLAnchorElement03.html']),
- ('.', ['ietestcenter/Javascript/11.1.5_4-4-c-1.html']),
- ('.', ['dom/html/level2/html/HTMLAnchorElement06.html'])])
-
- def test_shard_in_two(self):
- locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False)
- self.assert_shards(locked,
- [('locked_tests',
- ['http/tests/websocket/tests/unicode.htm',
- 'http/tests/security/view-source-no-refresh.html',
- 'http/tests/websocket/tests/websocket-protocol-ignored.html',
- 'http/tests/xmlhttprequest/supported-xml-content-types.html',
- 'perf/object-keys.html'])])
- self.assert_shards(unlocked,
- [('unlocked_tests',
- ['animations/keyframes.html',
- 'fast/css/display-none-inline-style-change-crash.html',
- 'dom/html/level2/html/HTMLAnchorElement03.html',
- 'ietestcenter/Javascript/11.1.5_4-4-c-1.html',
- 'dom/html/level2/html/HTMLAnchorElement06.html'])])
-
- def test_shard_in_two_has_no_locked_shards(self):
- locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False,
- test_list=['animations/keyframe.html'])
- self.assertEqual(len(locked), 0)
- self.assertEqual(len(unlocked), 1)
-
- def test_shard_in_two_has_no_unlocked_shards(self):
- locked, unlocked = self.get_shards(num_workers=1, fully_parallel=False,
- test_list=['http/tests/websocket/tests/unicode.htm'])
- self.assertEqual(len(locked), 1)
- self.assertEqual(len(unlocked), 0)
-
- def test_multiple_locked_shards(self):
- locked, unlocked = self.get_shards(num_workers=4, fully_parallel=False, max_locked_shards=2)
- self.assert_shards(locked,
- [('locked_shard_1',
- ['http/tests/security/view-source-no-refresh.html',
- 'http/tests/websocket/tests/unicode.htm',
- 'http/tests/websocket/tests/websocket-protocol-ignored.html']),
- ('locked_shard_2',
- ['http/tests/xmlhttprequest/supported-xml-content-types.html',
- 'perf/object-keys.html'])])
-
- locked, unlocked = self.get_shards(num_workers=4, fully_parallel=False)
- self.assert_shards(locked,
- [('locked_shard_1',
- ['http/tests/security/view-source-no-refresh.html',
- 'http/tests/websocket/tests/unicode.htm',
- 'http/tests/websocket/tests/websocket-protocol-ignored.html',
- 'http/tests/xmlhttprequest/supported-xml-content-types.html',
- 'perf/object-keys.html'])])
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py b/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py
deleted file mode 100644
index 28a8930d2..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/manager.py
+++ /dev/null
@@ -1,387 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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.
-
-"""
-The Manager runs a series of tests (TestType interface) against a set
-of test files. If a test file fails a TestType, it returns a list of TestFailure
-objects to the Manager. The Manager then aggregates the TestFailures to
-create a final report.
-"""
-
-import json
-import logging
-import random
-import sys
-import time
-
-from webkitpy.layout_tests.controllers.layout_test_finder import LayoutTestFinder
-from webkitpy.layout_tests.controllers.layout_test_runner import LayoutTestRunner
-from webkitpy.layout_tests.controllers.test_result_writer import TestResultWriter
-from webkitpy.layout_tests.layout_package import json_layout_results_generator
-from webkitpy.layout_tests.layout_package import json_results_generator
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models import test_run_results
-from webkitpy.layout_tests.models.test_input import TestInput
-
-_log = logging.getLogger(__name__)
-
-# Builder base URL where we have the archived test results.
-BUILDER_BASE_URL = "http://build.chromium.org/buildbot/layout_test_results/"
-
-TestExpectations = test_expectations.TestExpectations
-
-
-
-class Manager(object):
- """A class for managing running a series of tests on a series of layout
- test files."""
-
- def __init__(self, port, options, printer):
- """Initialize test runner data structures.
-
- Args:
- port: an object implementing port-specific
- options: a dictionary of command line options
- printer: a Printer object to record updates to.
- """
- self._port = port
- self._filesystem = port.host.filesystem
- self._options = options
- self._printer = printer
- self._expectations = None
-
- self.HTTP_SUBDIR = 'http' + port.TEST_PATH_SEPARATOR
- self.PERF_SUBDIR = 'perf'
- self.WEBSOCKET_SUBDIR = 'websocket' + port.TEST_PATH_SEPARATOR
- self.LAYOUT_TESTS_DIRECTORY = 'LayoutTests'
-
- # disable wss server. need to install pyOpenSSL on buildbots.
- # self._websocket_secure_server = websocket_server.PyWebSocket(
- # options.results_directory, use_tls=True, port=9323)
-
- self._results_directory = self._port.results_directory()
- self._finder = LayoutTestFinder(self._port, self._options)
- self._runner = LayoutTestRunner(self._options, self._port, self._printer, self._results_directory, self._test_is_slow)
-
- def _collect_tests(self, args):
- return self._finder.find_tests(self._options, args)
-
- def _is_http_test(self, test):
- return self.HTTP_SUBDIR in test or self._is_websocket_test(test)
-
- def _is_websocket_test(self, test):
- return self.WEBSOCKET_SUBDIR in test
-
- def _http_tests(self, test_names):
- return set(test for test in test_names if self._is_http_test(test))
-
- def _is_perf_test(self, test):
- return self.PERF_SUBDIR == test or (self.PERF_SUBDIR + self._port.TEST_PATH_SEPARATOR) in test
-
- def _prepare_lists(self, paths, test_names):
- tests_to_skip = self._finder.skip_tests(paths, test_names, self._expectations, self._http_tests(test_names))
- tests_to_run = [test for test in test_names if test not in tests_to_skip]
-
- # Create a sorted list of test files so the subset chunk,
- # if used, contains alphabetically consecutive tests.
- if self._options.order == 'natural':
- tests_to_run.sort(key=self._port.test_key)
- elif self._options.order == 'random':
- random.shuffle(tests_to_run)
-
- tests_to_run, tests_in_other_chunks = self._finder.split_into_chunks(tests_to_run)
- self._expectations.add_skipped_tests(tests_in_other_chunks)
- tests_to_skip.update(tests_in_other_chunks)
-
- return tests_to_run, tests_to_skip
-
- def _test_input_for_file(self, test_file):
- return TestInput(test_file,
- self._options.slow_time_out_ms if self._test_is_slow(test_file) else self._options.time_out_ms,
- self._test_requires_lock(test_file))
-
- def _test_requires_lock(self, test_file):
- """Return True if the test needs to be locked when
- running multiple copies of NRWTs. Perf tests are locked
- because heavy load caused by running other tests in parallel
- might cause some of them to timeout."""
- return self._is_http_test(test_file) or self._is_perf_test(test_file)
-
- def _test_is_slow(self, test_file):
- return self._expectations.has_modifier(test_file, test_expectations.SLOW)
-
- def needs_servers(self, test_names):
- return any(self._test_requires_lock(test_name) for test_name in test_names) and self._options.http
-
- def _set_up_run(self, test_names):
- self._printer.write_update("Checking build ...")
- if not self._port.check_build(self.needs_servers(test_names)):
- _log.error("Build check failed")
- return False
-
- # This must be started before we check the system dependencies,
- # since the helper may do things to make the setup correct.
- if self._options.pixel_tests:
- self._printer.write_update("Starting pixel test helper ...")
- self._port.start_helper()
-
- # Check that the system dependencies (themes, fonts, ...) are correct.
- if not self._options.nocheck_sys_deps:
- self._printer.write_update("Checking system dependencies ...")
- if not self._port.check_sys_deps(self.needs_servers(test_names)):
- self._port.stop_helper()
- return False
-
- if self._options.clobber_old_results:
- self._clobber_old_results()
-
- # Create the output directory if it doesn't already exist.
- self._port.host.filesystem.maybe_make_directory(self._results_directory)
-
- self._port.setup_test_run()
- return True
-
- def run(self, args):
- """Run the tests and return a RunDetails object with the results."""
- self._printer.write_update("Collecting tests ...")
- try:
- paths, test_names = self._collect_tests(args)
- except IOError:
- # This is raised if --test-list doesn't exist
- return test_run_results.RunDetails(exit_code=-1)
-
- self._printer.write_update("Parsing expectations ...")
- self._expectations = test_expectations.TestExpectations(self._port, test_names)
-
- tests_to_run, tests_to_skip = self._prepare_lists(paths, test_names)
- self._printer.print_found(len(test_names), len(tests_to_run), self._options.repeat_each, self._options.iterations)
-
- # Check to make sure we're not skipping every test.
- if not tests_to_run:
- _log.critical('No tests to run.')
- return test_run_results.RunDetails(exit_code=-1)
-
- if not self._set_up_run(tests_to_run):
- return test_run_results.RunDetails(exit_code=-1)
-
- start_time = time.time()
- enabled_pixel_tests_in_retry = False
- try:
- initial_results = self._run_tests(tests_to_run, tests_to_skip, self._options.repeat_each, self._options.iterations,
- int(self._options.child_processes), retrying=False)
-
- tests_to_retry = self._tests_to_retry(initial_results, include_crashes=self._port.should_retry_crashes())
- if self._options.retry_failures and tests_to_retry and not initial_results.interrupted:
- enabled_pixel_tests_in_retry = self._force_pixel_tests_if_needed()
-
- _log.info('')
- _log.info("Retrying %d unexpected failure(s) ..." % len(tests_to_retry))
- _log.info('')
- retry_results = self._run_tests(tests_to_retry, tests_to_skip=set(), repeat_each=1, iterations=1,
- num_workers=1, retrying=True)
-
- if enabled_pixel_tests_in_retry:
- self._options.pixel_tests = False
- else:
- retry_results = None
- finally:
- self._clean_up_run()
-
- end_time = time.time()
-
- # Some crash logs can take a long time to be written out so look
- # for new logs after the test run finishes.
- _log.debug("looking for new crash logs")
- self._look_for_new_crash_logs(initial_results, start_time)
- if retry_results:
- self._look_for_new_crash_logs(retry_results, start_time)
-
- _log.debug("summarizing results")
- summarized_results = test_run_results.summarize_results(self._port, self._expectations, initial_results, retry_results, enabled_pixel_tests_in_retry)
- self._printer.print_results(end_time - start_time, initial_results, summarized_results)
-
- if not self._options.dry_run:
- self._port.print_leaks_summary()
- self._upload_json_files(summarized_results, initial_results)
-
- results_path = self._filesystem.join(self._results_directory, "results.html")
- self._copy_results_html_file(results_path)
- if self._options.show_results and (initial_results.unexpected_results_by_name or
- (self._options.full_results_html and initial_results.total_failures)):
- self._port.show_results_html_file(results_path)
-
- return test_run_results.RunDetails(self._port.exit_code_from_summarized_results(summarized_results),
- summarized_results, initial_results, retry_results, enabled_pixel_tests_in_retry)
-
- def _run_tests(self, tests_to_run, tests_to_skip, repeat_each, iterations, num_workers, retrying):
- needs_http = any(self._is_http_test(test) for test in tests_to_run)
- needs_websockets = any(self._is_websocket_test(test) for test in tests_to_run)
-
- test_inputs = []
- for _ in xrange(iterations):
- for test in tests_to_run:
- for _ in xrange(repeat_each):
- test_inputs.append(self._test_input_for_file(test))
- return self._runner.run_tests(self._expectations, test_inputs, tests_to_skip, num_workers, needs_http, needs_websockets, retrying)
-
- def _clean_up_run(self):
- _log.debug("Flushing stdout")
- sys.stdout.flush()
- _log.debug("Flushing stderr")
- sys.stderr.flush()
- _log.debug("Stopping helper")
- self._port.stop_helper()
- _log.debug("Cleaning up port")
- self._port.clean_up_test_run()
-
- def _force_pixel_tests_if_needed(self):
- if self._options.pixel_tests:
- return False
-
- _log.debug("Restarting helper")
- self._port.stop_helper()
- self._options.pixel_tests = True
- self._port.start_helper()
-
- return True
-
- def _look_for_new_crash_logs(self, run_results, start_time):
- """Since crash logs can take a long time to be written out if the system is
- under stress do a second pass at the end of the test run.
-
- run_results: the results of the test run
- start_time: time the tests started at. We're looking for crash
- logs after that time.
- """
- crashed_processes = []
- for test, result in run_results.unexpected_results_by_name.iteritems():
- if (result.type != test_expectations.CRASH):
- continue
- for failure in result.failures:
- if not isinstance(failure, test_failures.FailureCrash):
- continue
- crashed_processes.append([test, failure.process_name, failure.pid])
-
- sample_files = self._port.look_for_new_samples(crashed_processes, start_time)
- if sample_files:
- for test, sample_file in sample_files.iteritems():
- writer = TestResultWriter(self._port._filesystem, self._port, self._port.results_directory(), test)
- writer.copy_sample_file(sample_file)
-
- crash_logs = self._port.look_for_new_crash_logs(crashed_processes, start_time)
- if crash_logs:
- for test, crash_log in crash_logs.iteritems():
- writer = TestResultWriter(self._port._filesystem, self._port, self._port.results_directory(), test)
- writer.write_crash_log(crash_log)
-
- def _clobber_old_results(self):
- # Just clobber the actual test results directories since the other
- # files in the results directory are explicitly used for cross-run
- # tracking.
- self._printer.write_update("Clobbering old results in %s" %
- self._results_directory)
- layout_tests_dir = self._port.layout_tests_dir()
- possible_dirs = self._port.test_dirs()
- for dirname in possible_dirs:
- if self._filesystem.isdir(self._filesystem.join(layout_tests_dir, dirname)):
- self._filesystem.rmtree(self._filesystem.join(self._results_directory, dirname))
-
- def _tests_to_retry(self, run_results, include_crashes):
- return [result.test_name for result in run_results.unexpected_results_by_name.values() if
- ((result.type != test_expectations.PASS) and
- (result.type != test_expectations.MISSING) and
- (result.type != test_expectations.CRASH or include_crashes))]
-
- def _upload_json_files(self, summarized_results, initial_results):
- """Writes the results of the test run as JSON files into the results
- dir and upload the files to the appengine server.
-
- Args:
- summarized_results: dict of results
- initial_results: full summary object
- """
- _log.debug("Writing JSON files in %s." % self._results_directory)
-
- # FIXME: Upload stats.json to the server and delete times_ms.
- times_trie = json_results_generator.test_timings_trie(self._port, initial_results.results_by_name.values())
- times_json_path = self._filesystem.join(self._results_directory, "times_ms.json")
- json_results_generator.write_json(self._filesystem, times_trie, times_json_path)
-
- stats_trie = self._stats_trie(initial_results)
- stats_path = self._filesystem.join(self._results_directory, "stats.json")
- self._filesystem.write_text_file(stats_path, json.dumps(stats_trie))
-
- full_results_path = self._filesystem.join(self._results_directory, "full_results.json")
- # We write full_results.json out as jsonp because we need to load it from a file url and Chromium doesn't allow that.
- json_results_generator.write_json(self._filesystem, summarized_results, full_results_path, callback="ADD_RESULTS")
-
- generator = json_layout_results_generator.JSONLayoutResultsGenerator(
- self._port, self._options.builder_name, self._options.build_name,
- self._options.build_number, self._results_directory,
- BUILDER_BASE_URL,
- self._expectations, initial_results,
- self._options.test_results_server,
- "layout-tests",
- self._options.master_name)
-
- _log.debug("Finished writing JSON files.")
-
-
- json_files = ["incremental_results.json", "full_results.json", "times_ms.json"]
-
- generator.upload_json_files(json_files)
-
- incremental_results_path = self._filesystem.join(self._results_directory, "incremental_results.json")
-
- # Remove these files from the results directory so they don't take up too much space on the buildbot.
- # The tools use the version we uploaded to the results server anyway.
- self._filesystem.remove(times_json_path)
- self._filesystem.remove(incremental_results_path)
-
- def _copy_results_html_file(self, destination_path):
- base_dir = self._port.path_from_webkit_base('LayoutTests', 'fast', 'harness')
- results_file = self._filesystem.join(base_dir, 'results.html')
- # Note that the results.html template file won't exist when we're using a MockFileSystem during unit tests,
- # so make sure it exists before we try to copy it.
- if self._filesystem.exists(results_file):
- self._filesystem.copyfile(results_file, destination_path)
-
- def _stats_trie(self, initial_results):
- def _worker_number(worker_name):
- return int(worker_name.split('/')[1]) if worker_name else -1
-
- stats = {}
- for result in initial_results.results_by_name.values():
- if result.type != test_expectations.SKIP:
- stats[result.test_name] = {'results': (_worker_number(result.worker_name), result.test_number, result.pid, int(result.test_run_time * 1000), int(result.total_run_time * 1000))}
- stats_trie = {}
- for name, value in stats.iteritems():
- json_results_generator.add_path_to_trie(name, value, stats_trie)
- return stats_trie
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py b/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py
deleted file mode 100644
index 4a8154878..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/manager_unittest.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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.
-
-"""Unit tests for manager.py."""
-
-import sys
-import time
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests.controllers.manager import Manager
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models.test_run_results import TestRunResults
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions
-
-
-class ManagerTest(unittest.TestCase):
- def test_needs_servers(self):
- def get_manager():
- port = Mock() # FIXME: Use a tighter mock.
- port.TEST_PATH_SEPARATOR = '/'
- manager = Manager(port, options=MockOptions(http=True, max_locked_shards=1), printer=Mock())
- return manager
-
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast/html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http/tests/misc']))
-
- def integration_test_needs_servers(self):
- def get_manager():
- host = MockHost()
- port = host.port_factory.get()
- manager = Manager(port, options=MockOptions(test_list=None, http=True, max_locked_shards=1), printer=Mock())
- return manager
-
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast/html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http/tests/mime']))
-
- if sys.platform == 'win32':
- manager = get_manager()
- self.assertFalse(manager.needs_servers(['fast\\html']))
-
- manager = get_manager()
- self.assertTrue(manager.needs_servers(['http\\tests\\mime']))
-
- def test_look_for_new_crash_logs(self):
- def get_manager():
- host = MockHost()
- port = host.port_factory.get('test-mac-leopard')
- manager = Manager(port, options=MockOptions(test_list=None, http=True, max_locked_shards=1), printer=Mock())
- return manager
- host = MockHost()
- port = host.port_factory.get('test-mac-leopard')
- tests = ['failures/expected/crash.html']
- expectations = test_expectations.TestExpectations(port, tests)
- run_results = TestRunResults(expectations, len(tests))
- manager = get_manager()
- manager._look_for_new_crash_logs(run_results, time.time())
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py b/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
deleted file mode 100644
index 53f25ce3b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/single_test_runner.py
+++ /dev/null
@@ -1,342 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-import logging
-import re
-import time
-
-from webkitpy.layout_tests.controllers import test_result_writer
-from webkitpy.port.driver import DriverInput, DriverOutput
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models.test_results import TestResult
-
-
-_log = logging.getLogger(__name__)
-
-
-def run_single_test(port, options, results_directory, worker_name, driver, test_input, stop_when_done):
- runner = SingleTestRunner(port, options, results_directory, worker_name, driver, test_input, stop_when_done)
- return runner.run()
-
-
-class SingleTestRunner(object):
- (ALONGSIDE_TEST, PLATFORM_DIR, VERSION_DIR, UPDATE) = ('alongside', 'platform', 'version', 'update')
-
- def __init__(self, port, options, results_directory, worker_name, driver, test_input, stop_when_done):
- self._port = port
- self._filesystem = port.host.filesystem
- self._options = options
- self._results_directory = results_directory
- self._driver = driver
- self._timeout = test_input.timeout
- self._worker_name = worker_name
- self._test_name = test_input.test_name
- self._should_run_pixel_test = test_input.should_run_pixel_test
- self._reference_files = test_input.reference_files
- self._stop_when_done = stop_when_done
-
- if self._reference_files:
- # Detect and report a test which has a wrong combination of expectation files.
- # For example, if 'foo.html' has two expectation files, 'foo-expected.html' and
- # 'foo-expected.txt', we should warn users. One test file must be used exclusively
- # in either layout tests or reftests, but not in both.
- for suffix in ('.txt', '.png', '.wav'):
- expected_filename = self._port.expected_filename(self._test_name, suffix)
- if self._filesystem.exists(expected_filename):
- _log.error('%s is a reftest, but has an unused expectation file. Please remove %s.',
- self._test_name, expected_filename)
-
- def _expected_driver_output(self):
- return DriverOutput(self._port.expected_text(self._test_name),
- self._port.expected_image(self._test_name),
- self._port.expected_checksum(self._test_name),
- self._port.expected_audio(self._test_name))
-
- def _should_fetch_expected_checksum(self):
- return self._should_run_pixel_test and not (self._options.new_baseline or self._options.reset_results)
-
- def _driver_input(self):
- # The image hash is used to avoid doing an image dump if the
- # checksums match, so it should be set to a blank value if we
- # are generating a new baseline. (Otherwise, an image from a
- # previous run will be copied into the baseline."""
- image_hash = None
- if self._should_fetch_expected_checksum():
- image_hash = self._port.expected_checksum(self._test_name)
- return DriverInput(self._test_name, self._timeout, image_hash, self._should_run_pixel_test)
-
- def run(self):
- if self._reference_files:
- if self._port.get_option('no_ref_tests') or self._options.reset_results:
- reftest_type = set([reference_file[0] for reference_file in self._reference_files])
- result = TestResult(self._test_name, reftest_type=reftest_type)
- result.type = test_expectations.SKIP
- return result
- return self._run_reftest()
- if self._options.reset_results:
- return self._run_rebaseline()
- return self._run_compare_test()
-
- def _run_compare_test(self):
- driver_output = self._driver.run_test(self._driver_input(), self._stop_when_done)
- expected_driver_output = self._expected_driver_output()
-
- if self._options.ignore_metrics:
- expected_driver_output.strip_metrics()
- driver_output.strip_metrics()
-
- test_result = self._compare_output(expected_driver_output, driver_output)
- if self._options.new_test_results:
- self._add_missing_baselines(test_result, driver_output)
- test_result_writer.write_test_result(self._filesystem, self._port, self._results_directory, self._test_name, driver_output, expected_driver_output, test_result.failures)
- return test_result
-
- def _run_rebaseline(self):
- driver_output = self._driver.run_test(self._driver_input(), self._stop_when_done)
- failures = self._handle_error(driver_output)
- test_result_writer.write_test_result(self._filesystem, self._port, self._results_directory, self._test_name, driver_output, None, failures)
- # FIXME: It the test crashed or timed out, it might be better to avoid
- # to write new baselines.
- self._overwrite_baselines(driver_output)
- return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr(), pid=driver_output.pid)
-
- _render_tree_dump_pattern = re.compile(r"^layer at \(\d+,\d+\) size \d+x\d+\n")
-
- def _add_missing_baselines(self, test_result, driver_output):
- missingImage = test_result.has_failure_matching_types(test_failures.FailureMissingImage, test_failures.FailureMissingImageHash)
- if test_result.has_failure_matching_types(test_failures.FailureMissingResult):
- self._save_baseline_data(driver_output.text, '.txt', self._location_for_new_baseline(driver_output.text, '.txt'))
- if test_result.has_failure_matching_types(test_failures.FailureMissingAudio):
- self._save_baseline_data(driver_output.audio, '.wav', self._location_for_new_baseline(driver_output.audio, '.wav'))
- if missingImage:
- self._save_baseline_data(driver_output.image, '.png', self._location_for_new_baseline(driver_output.image, '.png'))
-
- def _location_for_new_baseline(self, data, extension):
- if self._options.add_platform_exceptions:
- return self.VERSION_DIR
- if extension == '.png':
- return self.PLATFORM_DIR
- if extension == '.wav':
- return self.ALONGSIDE_TEST
- if extension == '.txt' and self._render_tree_dump_pattern.match(data):
- return self.PLATFORM_DIR
- return self.ALONGSIDE_TEST
-
- def _overwrite_baselines(self, driver_output):
- location = self.VERSION_DIR if self._options.add_platform_exceptions else self.UPDATE
- self._save_baseline_data(driver_output.text, '.txt', location)
- self._save_baseline_data(driver_output.audio, '.wav', location)
- if self._should_run_pixel_test:
- self._save_baseline_data(driver_output.image, '.png', location)
-
- def _save_baseline_data(self, data, extension, location):
- if data is None:
- return
- port = self._port
- fs = self._filesystem
- if location == self.ALONGSIDE_TEST:
- output_dir = fs.dirname(port.abspath_for_test(self._test_name))
- elif location == self.VERSION_DIR:
- output_dir = fs.join(port.baseline_version_dir(), fs.dirname(self._test_name))
- elif location == self.PLATFORM_DIR:
- output_dir = fs.join(port.baseline_platform_dir(), fs.dirname(self._test_name))
- elif location == self.UPDATE:
- output_dir = fs.dirname(port.expected_filename(self._test_name, extension))
- else:
- raise AssertionError('unrecognized baseline location: %s' % location)
-
- fs.maybe_make_directory(output_dir)
- output_basename = fs.basename(fs.splitext(self._test_name)[0] + "-expected" + extension)
- output_path = fs.join(output_dir, output_basename)
- _log.info('Writing new expected result "%s"' % port.relative_test_filename(output_path))
- port.update_baseline(output_path, data)
-
- def _handle_error(self, driver_output, reference_filename=None):
- """Returns test failures if some unusual errors happen in driver's run.
-
- Args:
- driver_output: The output from the driver.
- reference_filename: The full path to the reference file which produced the driver_output.
- This arg is optional and should be used only in reftests until we have a better way to know
- which html file is used for producing the driver_output.
- """
- failures = []
- fs = self._filesystem
- if driver_output.timeout:
- failures.append(test_failures.FailureTimeout(bool(reference_filename)))
-
- if reference_filename:
- testname = self._port.relative_test_filename(reference_filename)
- else:
- testname = self._test_name
-
- if driver_output.crash:
- failures.append(test_failures.FailureCrash(bool(reference_filename),
- driver_output.crashed_process_name,
- driver_output.crashed_pid))
- if driver_output.error:
- _log.debug("%s %s crashed, (stderr lines):" % (self._worker_name, testname))
- else:
- _log.debug("%s %s crashed, (no stderr)" % (self._worker_name, testname))
- elif driver_output.error:
- _log.debug("%s %s output stderr lines:" % (self._worker_name, testname))
- for line in driver_output.error.splitlines():
- _log.debug(" %s" % line)
- return failures
-
- def _compare_output(self, expected_driver_output, driver_output):
- failures = []
- failures.extend(self._handle_error(driver_output))
-
- if driver_output.crash:
- # Don't continue any more if we already have a crash.
- # In case of timeouts, we continue since we still want to see the text and image output.
- return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr(), pid=driver_output.pid)
-
- failures.extend(self._compare_text(expected_driver_output.text, driver_output.text))
- failures.extend(self._compare_audio(expected_driver_output.audio, driver_output.audio))
- if self._should_run_pixel_test:
- failures.extend(self._compare_image(expected_driver_output, driver_output))
- return TestResult(self._test_name, failures, driver_output.test_time, driver_output.has_stderr(), pid=driver_output.pid)
-
- def _compare_text(self, expected_text, actual_text):
- failures = []
- if (expected_text and actual_text and
- # Assuming expected_text is already normalized.
- self._port.do_text_results_differ(expected_text, self._get_normalized_output_text(actual_text))):
- failures.append(test_failures.FailureTextMismatch())
- elif actual_text and not expected_text:
- failures.append(test_failures.FailureMissingResult())
- return failures
-
- def _compare_audio(self, expected_audio, actual_audio):
- failures = []
- if (expected_audio and actual_audio and
- self._port.do_audio_results_differ(expected_audio, actual_audio)):
- failures.append(test_failures.FailureAudioMismatch())
- elif actual_audio and not expected_audio:
- failures.append(test_failures.FailureMissingAudio())
- return failures
-
- def _get_normalized_output_text(self, output):
- """Returns the normalized text output, i.e. the output in which
- the end-of-line characters are normalized to "\n"."""
- # Running tests on Windows produces "\r\n". The "\n" part is helpfully
- # changed to "\r\n" by our system (Python/Cygwin), resulting in
- # "\r\r\n", when, in fact, we wanted to compare the text output with
- # the normalized text expectation files.
- return output.replace("\r\r\n", "\r\n").replace("\r\n", "\n")
-
- # FIXME: This function also creates the image diff. Maybe that work should
- # be handled elsewhere?
- def _compare_image(self, expected_driver_output, driver_output):
- failures = []
- # If we didn't produce a hash file, this test must be text-only.
- if driver_output.image_hash is None:
- return failures
- if not expected_driver_output.image:
- failures.append(test_failures.FailureMissingImage())
- elif not expected_driver_output.image_hash:
- failures.append(test_failures.FailureMissingImageHash())
- elif driver_output.image_hash != expected_driver_output.image_hash:
- diff_result = self._port.diff_image(expected_driver_output.image, driver_output.image)
- err_str = diff_result[2]
- if err_str:
- _log.warning(' %s : %s' % (self._test_name, err_str))
- failures.append(test_failures.FailureImageHashMismatch())
- driver_output.error = (driver_output.error or '') + err_str
- else:
- driver_output.image_diff = diff_result[0]
- if driver_output.image_diff:
- failures.append(test_failures.FailureImageHashMismatch(diff_result[1]))
- else:
- # See https://bugs.webkit.org/show_bug.cgi?id=69444 for why this isn't a full failure.
- _log.warning(' %s -> pixel hash failed (but diff passed)' % self._test_name)
- return failures
-
- def _run_reftest(self):
- test_output = self._driver.run_test(self._driver_input(), self._stop_when_done)
- total_test_time = 0
- reference_output = None
- test_result = None
-
- # A reftest can have multiple match references and multiple mismatch references;
- # the test fails if any mismatch matches and all of the matches don't match.
- # To minimize the number of references we have to check, we run all of the mismatches first,
- # then the matches, and short-circuit out as soon as we can.
- # Note that sorting by the expectation sorts "!=" before "==" so this is easy to do.
-
- putAllMismatchBeforeMatch = sorted
- reference_test_names = []
- for expectation, reference_filename in putAllMismatchBeforeMatch(self._reference_files):
- reference_test_name = self._port.relative_test_filename(reference_filename)
- reference_test_names.append(reference_test_name)
- reference_output = self._driver.run_test(DriverInput(reference_test_name, self._timeout, None, should_run_pixel_test=True), self._stop_when_done)
- test_result = self._compare_output_with_reference(reference_output, test_output, reference_filename, expectation == '!=')
-
- if (expectation == '!=' and test_result.failures) or (expectation == '==' and not test_result.failures):
- break
- total_test_time += test_result.test_run_time
-
- assert(reference_output)
- test_result_writer.write_test_result(self._filesystem, self._port, self._results_directory, self._test_name, test_output, reference_output, test_result.failures)
- reftest_type = set([reference_file[0] for reference_file in self._reference_files])
- return TestResult(self._test_name, test_result.failures, total_test_time + test_result.test_run_time, test_result.has_stderr, reftest_type=reftest_type, pid=test_result.pid, references=reference_test_names)
-
- def _compare_output_with_reference(self, reference_driver_output, actual_driver_output, reference_filename, mismatch):
- total_test_time = reference_driver_output.test_time + actual_driver_output.test_time
- has_stderr = reference_driver_output.has_stderr() or actual_driver_output.has_stderr()
- failures = []
- failures.extend(self._handle_error(actual_driver_output))
- if failures:
- # Don't continue any more if we already have crash or timeout.
- return TestResult(self._test_name, failures, total_test_time, has_stderr)
- failures.extend(self._handle_error(reference_driver_output, reference_filename=reference_filename))
- if failures:
- return TestResult(self._test_name, failures, total_test_time, has_stderr, pid=actual_driver_output.pid)
-
- if not reference_driver_output.image_hash and not actual_driver_output.image_hash:
- failures.append(test_failures.FailureReftestNoImagesGenerated(reference_filename))
- elif mismatch:
- if reference_driver_output.image_hash == actual_driver_output.image_hash:
- diff_result = self._port.diff_image(reference_driver_output.image, actual_driver_output.image, tolerance=0)
- if not diff_result[0]:
- failures.append(test_failures.FailureReftestMismatchDidNotOccur(reference_filename))
- else:
- _log.warning(" %s -> ref test hashes matched but diff failed" % self._test_name)
-
- elif reference_driver_output.image_hash != actual_driver_output.image_hash:
- diff_result = self._port.diff_image(reference_driver_output.image, actual_driver_output.image, tolerance=0)
- if diff_result[0]:
- failures.append(test_failures.FailureReftestMismatch(reference_filename))
- else:
- _log.warning(" %s -> ref test hashes didn't match but diff passed" % self._test_name)
-
- return TestResult(self._test_name, failures, total_test_time, has_stderr, pid=actual_driver_output.pid)
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py b/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py
deleted file mode 100644
index 23e44d50b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer.py
+++ /dev/null
@@ -1,274 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-import logging
-
-from webkitpy.layout_tests.models import test_failures
-
-
-_log = logging.getLogger(__name__)
-
-
-def write_test_result(filesystem, port, results_directory, test_name, driver_output,
- expected_driver_output, failures):
- """Write the test result to the result output directory."""
- root_output_dir = results_directory
- writer = TestResultWriter(filesystem, port, root_output_dir, test_name)
-
- if driver_output.error:
- writer.write_stderr(driver_output.error)
-
- for failure in failures:
- # FIXME: Instead of this long 'if' block, each failure class might
- # have a responsibility for writing a test result.
- if isinstance(failure, (test_failures.FailureMissingResult,
- test_failures.FailureTextMismatch)):
- writer.write_text_files(driver_output.text, expected_driver_output.text)
- writer.create_text_diff_and_write_result(driver_output.text, expected_driver_output.text)
- elif isinstance(failure, test_failures.FailureMissingImage):
- writer.write_image_files(driver_output.image, expected_image=None)
- elif isinstance(failure, test_failures.FailureMissingImageHash):
- writer.write_image_files(driver_output.image, expected_driver_output.image)
- elif isinstance(failure, test_failures.FailureImageHashMismatch):
- writer.write_image_files(driver_output.image, expected_driver_output.image)
- writer.write_image_diff_files(driver_output.image_diff)
- elif isinstance(failure, (test_failures.FailureAudioMismatch,
- test_failures.FailureMissingAudio)):
- writer.write_audio_files(driver_output.audio, expected_driver_output.audio)
- elif isinstance(failure, test_failures.FailureCrash):
- crashed_driver_output = expected_driver_output if failure.is_reftest else driver_output
- writer.write_crash_log(crashed_driver_output.crash_log)
- elif isinstance(failure, test_failures.FailureReftestMismatch):
- writer.write_image_files(driver_output.image, expected_driver_output.image)
- # FIXME: This work should be done earlier in the pipeline (e.g., when we compare images for non-ref tests).
- # FIXME: We should always have 2 images here.
- if driver_output.image and expected_driver_output.image:
- diff_image, diff_percent, err_str = port.diff_image(expected_driver_output.image, driver_output.image, tolerance=0)
- if diff_image:
- writer.write_image_diff_files(diff_image)
- failure.diff_percent = diff_percent
- else:
- _log.warn('ref test mismatch did not produce an image diff.')
- writer.write_reftest(failure.reference_filename)
- elif isinstance(failure, test_failures.FailureReftestMismatchDidNotOccur):
- writer.write_image_files(driver_output.image, expected_image=None)
- writer.write_reftest(failure.reference_filename)
- else:
- assert isinstance(failure, (test_failures.FailureTimeout, test_failures.FailureReftestNoImagesGenerated))
-
-
-class TestResultWriter(object):
- """A class which handles all writing operations to the result directory."""
-
- # Filename pieces when writing failures to the test results directory.
- FILENAME_SUFFIX_ACTUAL = "-actual"
- FILENAME_SUFFIX_EXPECTED = "-expected"
- FILENAME_SUFFIX_DIFF = "-diff"
- FILENAME_SUFFIX_STDERR = "-stderr"
- FILENAME_SUFFIX_CRASH_LOG = "-crash-log"
- FILENAME_SUFFIX_SAMPLE = "-sample"
- FILENAME_SUFFIX_WDIFF = "-wdiff.html"
- FILENAME_SUFFIX_PRETTY_PATCH = "-pretty-diff.html"
- FILENAME_SUFFIX_IMAGE_DIFF = "-diff.png"
- FILENAME_SUFFIX_IMAGE_DIFFS_HTML = "-diffs.html"
-
- def __init__(self, filesystem, port, root_output_dir, test_name):
- self._filesystem = filesystem
- self._port = port
- self._root_output_dir = root_output_dir
- self._test_name = test_name
-
- def _make_output_directory(self):
- """Creates the output directory (if needed) for a given test filename."""
- fs = self._filesystem
- output_filename = fs.join(self._root_output_dir, self._test_name)
- fs.maybe_make_directory(fs.dirname(output_filename))
-
- def output_filename(self, modifier):
- """Returns a filename inside the output dir that contains modifier.
-
- For example, if test name is "fast/dom/foo.html" and modifier is "-expected.txt",
- the return value is "/<path-to-root-output-dir>/fast/dom/foo-expected.txt".
-
- Args:
- modifier: a string to replace the extension of filename with
-
- Return:
- The absolute path to the output filename
- """
- fs = self._filesystem
- output_filename = fs.join(self._root_output_dir, self._test_name)
- return fs.splitext(output_filename)[0] + modifier
-
- def _write_binary_file(self, path, contents):
- if contents is not None:
- self._make_output_directory()
- self._filesystem.write_binary_file(path, contents)
-
- def _write_text_file(self, path, contents):
- if contents is not None:
- self._make_output_directory()
- self._filesystem.write_text_file(path, contents)
-
- def _output_testname(self, modifier):
- fs = self._filesystem
- return fs.splitext(fs.basename(self._test_name))[0] + modifier
-
- def write_output_files(self, file_type, output, expected):
- """Writes the test output, the expected output in the results directory.
-
- The full output filename of the actual, for example, will be
- <filename>-actual<file_type>
- For instance,
- my_test-actual.txt
-
- Args:
- file_type: A string describing the test output file type, e.g. ".txt"
- output: A string containing the test output
- expected: A string containing the expected test output
- """
- actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
- expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
-
- self._write_binary_file(actual_filename, output)
- self._write_binary_file(expected_filename, expected)
-
- def write_stderr(self, error):
- filename = self.output_filename(self.FILENAME_SUFFIX_STDERR + ".txt")
- self._write_binary_file(filename, error)
-
- def write_crash_log(self, crash_log):
- filename = self.output_filename(self.FILENAME_SUFFIX_CRASH_LOG + ".txt")
- self._write_text_file(filename, crash_log)
-
- def copy_sample_file(self, sample_file):
- filename = self.output_filename(self.FILENAME_SUFFIX_SAMPLE + ".txt")
- self._filesystem.copyfile(sample_file, filename)
-
- def write_text_files(self, actual_text, expected_text):
- self.write_output_files(".txt", actual_text, expected_text)
-
- def create_text_diff_and_write_result(self, actual_text, expected_text):
- # FIXME: This function is actually doing the diffs as well as writing results.
- # It might be better to extract code which does 'diff' and make it a separate function.
- if not actual_text or not expected_text:
- return
-
- file_type = '.txt'
- actual_filename = self.output_filename(self.FILENAME_SUFFIX_ACTUAL + file_type)
- expected_filename = self.output_filename(self.FILENAME_SUFFIX_EXPECTED + file_type)
- # We treat diff output as binary. Diff output may contain multiple files
- # in conflicting encodings.
- diff = self._port.diff_text(expected_text, actual_text, expected_filename, actual_filename)
- diff_filename = self.output_filename(self.FILENAME_SUFFIX_DIFF + file_type)
- self._write_binary_file(diff_filename, diff)
-
- # Shell out to wdiff to get colored inline diffs.
- if self._port.wdiff_available():
- wdiff = self._port.wdiff_text(expected_filename, actual_filename)
- wdiff_filename = self.output_filename(self.FILENAME_SUFFIX_WDIFF)
- self._write_binary_file(wdiff_filename, wdiff)
-
- # Use WebKit's PrettyPatch.rb to get an HTML diff.
- if self._port.pretty_patch_available():
- pretty_patch = self._port.pretty_patch_text(diff_filename)
- pretty_patch_filename = self.output_filename(self.FILENAME_SUFFIX_PRETTY_PATCH)
- self._write_binary_file(pretty_patch_filename, pretty_patch)
-
- def write_audio_files(self, actual_audio, expected_audio):
- self.write_output_files('.wav', actual_audio, expected_audio)
-
- def write_image_files(self, actual_image, expected_image):
- self.write_output_files('.png', actual_image, expected_image)
-
- def write_image_diff_files(self, image_diff):
- diff_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFF)
- self._write_binary_file(diff_filename, image_diff)
-
- diffs_html_filename = self.output_filename(self.FILENAME_SUFFIX_IMAGE_DIFFS_HTML)
- # FIXME: old-run-webkit-tests shows the diff percentage as the text contents of the "diff" link.
- # FIXME: old-run-webkit-tests include a link to the test file.
- html = """<!DOCTYPE HTML>
-<html>
-<head>
-<title>%(title)s</title>
-<style>.label{font-weight:bold}</style>
-</head>
-<body>
-Difference between images: <a href="%(diff_filename)s">diff</a><br>
-<div class=imageText></div>
-<div class=imageContainer data-prefix="%(prefix)s">Loading...</div>
-<script>
-(function() {
- var preloadedImageCount = 0;
- function preloadComplete() {
- ++preloadedImageCount;
- if (preloadedImageCount < 2)
- return;
- toggleImages();
- setInterval(toggleImages, 2000)
- }
-
- function preloadImage(url) {
- image = new Image();
- image.addEventListener('load', preloadComplete);
- image.src = url;
- return image;
- }
-
- function toggleImages() {
- if (text.textContent == 'Expected Image') {
- text.textContent = 'Actual Image';
- container.replaceChild(actualImage, container.firstChild);
- } else {
- text.textContent = 'Expected Image';
- container.replaceChild(expectedImage, container.firstChild);
- }
- }
-
- var text = document.querySelector('.imageText');
- var container = document.querySelector('.imageContainer');
- var actualImage = preloadImage(container.getAttribute('data-prefix') + '-actual.png');
- var expectedImage = preloadImage(container.getAttribute('data-prefix') + '-expected.png');
-})();
-</script>
-</body>
-</html>
-""" % {
- 'title': self._test_name,
- 'diff_filename': self._output_testname(self.FILENAME_SUFFIX_IMAGE_DIFF),
- 'prefix': self._output_testname(''),
- }
- self._filesystem.write_text_file(diffs_html_filename, html)
-
- def write_reftest(self, src_filepath):
- fs = self._filesystem
- dst_dir = fs.dirname(fs.join(self._root_output_dir, self._test_name))
- dst_filepath = fs.join(dst_dir, fs.basename(src_filepath))
- self._write_text_file(dst_filepath, fs.read_text_file(src_filepath))
diff --git a/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py b/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py
deleted file mode 100644
index f484da55e..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/controllers/test_result_writer_unittest.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2011 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.
-
-# 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests.controllers import test_result_writer
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.port.driver import DriverOutput
-from webkitpy.port.test import TestPort
-
-
-class TestResultWriterTest(unittest.TestCase):
-
- def test_reftest_diff_image(self):
- """A write_test_result should call port.diff_image with tolerance=0 in case of FailureReftestMismatch."""
- used_tolerance_values = []
-
- class ImageDiffTestPort(TestPort):
- def diff_image(self, expected_contents, actual_contents, tolerance=None):
- used_tolerance_values.append(tolerance)
- return (True, 1, None)
-
- host = MockHost()
- port = ImageDiffTestPort(host)
- test_name = 'failures/unexpected/reftest.html'
- test_reference_file = host.filesystem.join(port.layout_tests_dir(), 'failures/unexpected/reftest-expected.html')
- driver_output1 = DriverOutput('text1', 'image1', 'imagehash1', 'audio1')
- driver_output2 = DriverOutput('text2', 'image2', 'imagehash2', 'audio2')
- failures = [test_failures.FailureReftestMismatch(test_reference_file)]
- test_result_writer.write_test_result(host.filesystem, ImageDiffTestPort(host), port.results_directory(), test_name,
- driver_output1, driver_output2, failures)
- self.assertEqual([0], used_tolerance_values)
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/__init__.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py
deleted file mode 100644
index 715497de1..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_layout_results_generator.py
+++ /dev/null
@@ -1,174 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.layout_tests.layout_package import json_results_generator
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-
-
-class JSONLayoutResultsGenerator(json_results_generator.JSONResultsGenerator):
- """A JSON results generator for layout tests."""
-
- LAYOUT_TESTS_PATH = "LayoutTests"
-
- # Additional JSON fields.
- WONTFIX = "wontfixCounts"
-
- FAILURE_TO_CHAR = {test_expectations.PASS: json_results_generator.JSONResultsGenerator.PASS_RESULT,
- test_expectations.SKIP: json_results_generator.JSONResultsGenerator.SKIP_RESULT,
- test_expectations.CRASH: "C",
- test_expectations.TIMEOUT: "T",
- test_expectations.IMAGE: "I",
- test_expectations.TEXT: "F",
- test_expectations.AUDIO: "A",
- test_expectations.MISSING: "O",
- test_expectations.IMAGE_PLUS_TEXT: "Z"}
-
- def __init__(self, port, builder_name, build_name, build_number,
- results_file_base_path, builder_base_url,
- expectations, run_results,
- test_results_server=None, test_type="", master_name=""):
- """Modifies the results.json file. Grabs it off the archive directory
- if it is not found locally.
-
- Args:
- run_results: TestRunResults object storing the details of the test run.
- """
- super(JSONLayoutResultsGenerator, self).__init__(
- port, builder_name, build_name, build_number, results_file_base_path,
- builder_base_url, {}, port.repository_paths(),
- test_results_server, test_type, master_name)
-
- self._expectations = expectations
-
- self._run_results = run_results
- self._failures = dict((test_name, run_results.results_by_name[test_name].type) for test_name in run_results.failures_by_name)
- self._test_timings = run_results.results_by_name
-
- self.generate_json_output()
-
- def _get_path_relative_to_layout_test_root(self, test):
- """Returns the path of the test relative to the layout test root.
- For example, for:
- src/third_party/WebKit/LayoutTests/fast/forms/foo.html
- We would return
- fast/forms/foo.html
- """
- index = test.find(self.LAYOUT_TESTS_PATH)
- if index is not -1:
- index += len(self.LAYOUT_TESTS_PATH)
-
- if index is -1:
- # Already a relative path.
- relativePath = test
- else:
- relativePath = test[index + 1:]
-
- # Make sure all paths are unix-style.
- return relativePath.replace('\\', '/')
-
- # override
- def _get_test_timing(self, test_name):
- if test_name in self._test_timings:
- # Floor for now to get time in seconds.
- return int(self._test_timings[test_name].test_run_time)
- return 0
-
- # override
- def _get_failed_test_names(self):
- return set(self._failures.keys())
-
- # override
- def _get_modifier_char(self, test_name):
- if test_name not in self._run_results.results_by_name:
- return self.NO_DATA_RESULT
-
- if test_name in self._failures:
- return self.FAILURE_TO_CHAR[self._failures[test_name]]
-
- return self.PASS_RESULT
-
- # override
- def _get_result_char(self, test_name):
- return self._get_modifier_char(test_name)
-
- # override
- def _insert_failure_summaries(self, results_for_builder):
- run_results = self._run_results
-
- self._insert_item_into_raw_list(results_for_builder,
- len((set(run_results.failures_by_name.keys()) |
- run_results.tests_by_expectation[test_expectations.SKIP]) &
- run_results.tests_by_timeline[test_expectations.NOW]),
- self.FIXABLE_COUNT)
- self._insert_item_into_raw_list(results_for_builder,
- self._get_failure_summary_entry(test_expectations.NOW),
- self.FIXABLE)
- self._insert_item_into_raw_list(results_for_builder,
- len(self._expectations.get_tests_with_timeline(
- test_expectations.NOW)), self.ALL_FIXABLE_COUNT)
- self._insert_item_into_raw_list(results_for_builder,
- self._get_failure_summary_entry(test_expectations.WONTFIX),
- self.WONTFIX)
-
- # override
- def _normalize_results_json(self, test, test_name, tests):
- super(JSONLayoutResultsGenerator, self)._normalize_results_json(
- test, test_name, tests)
-
- # Remove tests that don't exist anymore.
- full_path = self._filesystem.join(self._port.layout_tests_dir(), test_name)
- full_path = self._filesystem.normpath(full_path)
- if not self._filesystem.exists(full_path):
- del tests[test_name]
-
- def _get_failure_summary_entry(self, timeline):
- """Creates a summary object to insert into the JSON.
-
- Args:
- timeline current test_expectations timeline to build entry for
- (e.g., test_expectations.NOW, etc.)
- """
- entry = {}
- run_results = self._run_results
- timeline_tests = run_results.tests_by_timeline[timeline]
- entry[self.SKIP_RESULT] = len(
- run_results.tests_by_expectation[test_expectations.SKIP] &
- timeline_tests)
- entry[self.PASS_RESULT] = len(
- run_results.tests_by_expectation[test_expectations.PASS] &
- timeline_tests)
- for failure_type in run_results.tests_by_expectation.keys():
- if failure_type not in self.FAILURE_TO_CHAR:
- continue
- count = len(run_results.tests_by_expectation[failure_type] &
- timeline_tests)
- entry[self.FAILURE_TO_CHAR[failure_type]] = count
- return entry
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py
deleted file mode 100644
index a2c2e0b63..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py
+++ /dev/null
@@ -1,643 +0,0 @@
-# Copyright (C) 2010 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.
-
-import json
-import logging
-import subprocess
-import sys
-import time
-import urllib2
-import xml.dom.minidom
-
-from webkitpy.common.checkout.scm.detection import SCMDetector
-from webkitpy.common.net.file_uploader import FileUploader
-
-# A JSON results generator for generic tests.
-# FIXME: move this code out of the layout_package directory.
-
-_log = logging.getLogger(__name__)
-
-_JSON_PREFIX = "ADD_RESULTS("
-_JSON_SUFFIX = ");"
-
-
-def has_json_wrapper(string):
- return string.startswith(_JSON_PREFIX) and string.endswith(_JSON_SUFFIX)
-
-
-def strip_json_wrapper(json_content):
- # FIXME: Kill this code once the server returns json instead of jsonp.
- if has_json_wrapper(json_content):
- return json_content[len(_JSON_PREFIX):len(json_content) - len(_JSON_SUFFIX)]
- return json_content
-
-
-def load_json(filesystem, file_path):
- content = filesystem.read_text_file(file_path)
- content = strip_json_wrapper(content)
- return json.loads(content)
-
-
-def write_json(filesystem, json_object, file_path, callback=None):
- # Specify separators in order to get compact encoding.
- json_string = json.dumps(json_object, separators=(',', ':'))
- if callback:
- json_string = callback + "(" + json_string + ");"
- filesystem.write_text_file(file_path, json_string)
-
-
-def convert_trie_to_flat_paths(trie, prefix=None):
- """Converts the directory structure in the given trie to flat paths, prepending a prefix to each."""
- result = {}
- for name, data in trie.iteritems():
- if prefix:
- name = prefix + "/" + name
-
- if len(data) and not "results" in data:
- result.update(convert_trie_to_flat_paths(data, name))
- else:
- result[name] = data
-
- return result
-
-
-def add_path_to_trie(path, value, trie):
- """Inserts a single flat directory path and associated value into a directory trie structure."""
- if not "/" in path:
- trie[path] = value
- return
-
- directory, slash, rest = path.partition("/")
- if not directory in trie:
- trie[directory] = {}
- add_path_to_trie(rest, value, trie[directory])
-
-def test_timings_trie(port, individual_test_timings):
- """Breaks a test name into chunks by directory and puts the test time as a value in the lowest part, e.g.
- foo/bar/baz.html: 1ms
- foo/bar/baz1.html: 3ms
-
- becomes
- foo: {
- bar: {
- baz.html: 1,
- baz1.html: 3
- }
- }
- """
- trie = {}
- for test_result in individual_test_timings:
- test = test_result.test_name
-
- add_path_to_trie(test, int(1000 * test_result.test_run_time), trie)
-
- return trie
-
-# FIXME: We already have a TestResult class in test_results.py
-class TestResult(object):
- """A simple class that represents a single test result."""
-
- # Test modifier constants.
- (NONE, FAILS, FLAKY, DISABLED) = range(4)
-
- def __init__(self, test, failed=False, elapsed_time=0):
- self.test_name = test
- self.failed = failed
- self.test_run_time = elapsed_time
-
- test_name = test
- try:
- test_name = test.split('.')[1]
- except IndexError:
- _log.warn("Invalid test name: %s.", test)
- pass
-
- if test_name.startswith('FAILS_'):
- self.modifier = self.FAILS
- elif test_name.startswith('FLAKY_'):
- self.modifier = self.FLAKY
- elif test_name.startswith('DISABLED_'):
- self.modifier = self.DISABLED
- else:
- self.modifier = self.NONE
-
- def fixable(self):
- return self.failed or self.modifier == self.DISABLED
-
-
-class JSONResultsGenerator(object):
- """A JSON results generator for generic tests."""
-
- MAX_NUMBER_OF_BUILD_RESULTS_TO_LOG = 750
- # Min time (seconds) that will be added to the JSON.
- MIN_TIME = 1
-
- # Note that in non-chromium tests those chars are used to indicate
- # test modifiers (FAILS, FLAKY, etc) but not actual test results.
- PASS_RESULT = "P"
- SKIP_RESULT = "X"
- FAIL_RESULT = "F"
- FLAKY_RESULT = "L"
- NO_DATA_RESULT = "N"
-
- MODIFIER_TO_CHAR = {TestResult.NONE: PASS_RESULT,
- TestResult.DISABLED: SKIP_RESULT,
- TestResult.FAILS: FAIL_RESULT,
- TestResult.FLAKY: FLAKY_RESULT}
-
- VERSION = 4
- VERSION_KEY = "version"
- RESULTS = "results"
- TIMES = "times"
- BUILD_NUMBERS = "buildNumbers"
- TIME = "secondsSinceEpoch"
- TESTS = "tests"
-
- FIXABLE_COUNT = "fixableCount"
- FIXABLE = "fixableCounts"
- ALL_FIXABLE_COUNT = "allFixableCount"
-
- RESULTS_FILENAME = "results.json"
- TIMES_MS_FILENAME = "times_ms.json"
- INCREMENTAL_RESULTS_FILENAME = "incremental_results.json"
-
- URL_FOR_TEST_LIST_JSON = "http://%s/testfile?builder=%s&name=%s&testlistjson=1&testtype=%s&master=%s"
-
- def __init__(self, port, builder_name, build_name, build_number,
- results_file_base_path, builder_base_url,
- test_results_map, svn_repositories=None,
- test_results_server=None,
- test_type="",
- master_name=""):
- """Modifies the results.json file. Grabs it off the archive directory
- if it is not found locally.
-
- Args
- port: port-specific wrapper
- builder_name: the builder name (e.g. Webkit).
- build_name: the build name (e.g. webkit-rel).
- build_number: the build number.
- results_file_base_path: Absolute path to the directory containing the
- results json file.
- builder_base_url: the URL where we have the archived test results.
- If this is None no archived results will be retrieved.
- test_results_map: A dictionary that maps test_name to TestResult.
- svn_repositories: A (json_field_name, svn_path) pair for SVN
- repositories that tests rely on. The SVN revision will be
- included in the JSON with the given json_field_name.
- test_results_server: server that hosts test results json.
- test_type: test type string (e.g. 'layout-tests').
- master_name: the name of the buildbot master.
- """
- self._port = port
- self._filesystem = port._filesystem
- self._executive = port._executive
- self._builder_name = builder_name
- self._build_name = build_name
- self._build_number = build_number
- self._builder_base_url = builder_base_url
- self._results_directory = results_file_base_path
-
- self._test_results_map = test_results_map
- self._test_results = test_results_map.values()
-
- self._svn_repositories = svn_repositories
- if not self._svn_repositories:
- self._svn_repositories = {}
-
- self._test_results_server = test_results_server
- self._test_type = test_type
- self._master_name = master_name
-
- self._archived_results = None
-
- def generate_json_output(self):
- json_object = self.get_json()
- if json_object:
- file_path = self._filesystem.join(self._results_directory, self.INCREMENTAL_RESULTS_FILENAME)
- write_json(self._filesystem, json_object, file_path)
-
- def generate_times_ms_file(self):
- # FIXME: rename to generate_times_ms_file. This needs to be coordinated with
- # changing the calls to this on the chromium build slaves.
- times = test_timings_trie(self._port, self._test_results_map.values())
- file_path = self._filesystem.join(self._results_directory, self.TIMES_MS_FILENAME)
- write_json(self._filesystem, times, file_path)
-
- def get_json(self):
- """Gets the results for the results.json file."""
- results_json = {}
-
- if not results_json:
- results_json, error = self._get_archived_json_results()
- if error:
- # If there was an error don't write a results.json
- # file at all as it would lose all the information on the
- # bot.
- _log.error("Archive directory is inaccessible. Not "
- "modifying or clobbering the results.json "
- "file: " + str(error))
- return None
-
- builder_name = self._builder_name
- if results_json and builder_name not in results_json:
- _log.debug("Builder name (%s) is not in the results.json file."
- % builder_name)
-
- self._convert_json_to_current_version(results_json)
-
- if builder_name not in results_json:
- results_json[builder_name] = (
- self._create_results_for_builder_json())
-
- results_for_builder = results_json[builder_name]
-
- if builder_name:
- self._insert_generic_metadata(results_for_builder)
-
- self._insert_failure_summaries(results_for_builder)
-
- # Update the all failing tests with result type and time.
- tests = results_for_builder[self.TESTS]
- all_failing_tests = self._get_failed_test_names()
- all_failing_tests.update(convert_trie_to_flat_paths(tests))
-
- for test in all_failing_tests:
- self._insert_test_time_and_result(test, tests)
-
- return results_json
-
- def set_archived_results(self, archived_results):
- self._archived_results = archived_results
-
- def upload_json_files(self, json_files):
- """Uploads the given json_files to the test_results_server (if the
- test_results_server is given)."""
- if not self._test_results_server:
- return
-
- if not self._master_name:
- _log.error("--test-results-server was set, but --master-name was not. Not uploading JSON files.")
- return
-
- _log.info("Uploading JSON files for builder: %s", self._builder_name)
- attrs = [("builder", self._builder_name),
- ("testtype", self._test_type),
- ("master", self._master_name)]
-
- files = [(file, self._filesystem.join(self._results_directory, file))
- for file in json_files]
-
- url = "http://%s/testfile/upload" % self._test_results_server
- # Set uploading timeout in case appengine server is having problems.
- # 120 seconds are more than enough to upload test results.
- uploader = FileUploader(url, 120)
- try:
- response = uploader.upload_as_multipart_form_data(self._filesystem, files, attrs)
- if response:
- if response.code == 200:
- _log.info("JSON uploaded.")
- else:
- _log.debug("JSON upload failed, %d: '%s'" % (response.code, response.read()))
- else:
- _log.error("JSON upload failed; no response returned")
- except Exception, err:
- _log.error("Upload failed: %s" % err)
- return
-
-
- def _get_test_timing(self, test_name):
- """Returns test timing data (elapsed time) in second
- for the given test_name."""
- if test_name in self._test_results_map:
- # Floor for now to get time in seconds.
- return int(self._test_results_map[test_name].test_run_time)
- return 0
-
- def _get_failed_test_names(self):
- """Returns a set of failed test names."""
- return set([r.test_name for r in self._test_results if r.failed])
-
- def _get_modifier_char(self, test_name):
- """Returns a single char (e.g. SKIP_RESULT, FAIL_RESULT,
- PASS_RESULT, NO_DATA_RESULT, etc) that indicates the test modifier
- for the given test_name.
- """
- if test_name not in self._test_results_map:
- return self.__class__.NO_DATA_RESULT
-
- test_result = self._test_results_map[test_name]
- if test_result.modifier in self.MODIFIER_TO_CHAR.keys():
- return self.MODIFIER_TO_CHAR[test_result.modifier]
-
- return self.__class__.PASS_RESULT
-
- def _get_result_char(self, test_name):
- """Returns a single char (e.g. SKIP_RESULT, FAIL_RESULT,
- PASS_RESULT, NO_DATA_RESULT, etc) that indicates the test result
- for the given test_name.
- """
- if test_name not in self._test_results_map:
- return self.__class__.NO_DATA_RESULT
-
- test_result = self._test_results_map[test_name]
- if test_result.modifier == TestResult.DISABLED:
- return self.__class__.SKIP_RESULT
-
- if test_result.failed:
- return self.__class__.FAIL_RESULT
-
- return self.__class__.PASS_RESULT
-
- def _get_svn_revision(self, in_directory):
- """Returns the svn revision for the given directory.
-
- Args:
- in_directory: The directory where svn is to be run.
- """
-
- # FIXME: We initialize this here in order to engage the stupid windows hacks :).
- # We can't reuse an existing scm object because the specific directories may
- # be part of other checkouts.
- self._port.host.initialize_scm()
- scm = SCMDetector(self._filesystem, self._executive).detect_scm_system(in_directory)
- if scm:
- return scm.svn_revision(in_directory)
- return ""
-
- def _get_archived_json_results(self):
- """Download JSON file that only contains test
- name list from test-results server. This is for generating incremental
- JSON so the file generated has info for tests that failed before but
- pass or are skipped from current run.
-
- Returns (archived_results, error) tuple where error is None if results
- were successfully read.
- """
- results_json = {}
- old_results = None
- error = None
-
- if not self._test_results_server:
- return {}, None
-
- results_file_url = (self.URL_FOR_TEST_LIST_JSON %
- (urllib2.quote(self._test_results_server),
- urllib2.quote(self._builder_name),
- self.RESULTS_FILENAME,
- urllib2.quote(self._test_type),
- urllib2.quote(self._master_name)))
-
- try:
- # FIXME: We should talk to the network via a Host object.
- results_file = urllib2.urlopen(results_file_url)
- info = results_file.info()
- old_results = results_file.read()
- except urllib2.HTTPError, http_error:
- # A non-4xx status code means the bot is hosed for some reason
- # and we can't grab the results.json file off of it.
- if (http_error.code < 400 and http_error.code >= 500):
- error = http_error
- except urllib2.URLError, url_error:
- error = url_error
-
- if old_results:
- # Strip the prefix and suffix so we can get the actual JSON object.
- old_results = strip_json_wrapper(old_results)
-
- try:
- results_json = json.loads(old_results)
- except:
- _log.debug("results.json was not valid JSON. Clobbering.")
- # The JSON file is not valid JSON. Just clobber the results.
- results_json = {}
- else:
- _log.debug('Old JSON results do not exist. Starting fresh.')
- results_json = {}
-
- return results_json, error
-
- def _insert_failure_summaries(self, results_for_builder):
- """Inserts aggregate pass/failure statistics into the JSON.
- This method reads self._test_results and generates
- FIXABLE, FIXABLE_COUNT and ALL_FIXABLE_COUNT entries.
-
- Args:
- results_for_builder: Dictionary containing the test results for a
- single builder.
- """
- # Insert the number of tests that failed or skipped.
- fixable_count = len([r for r in self._test_results if r.fixable()])
- self._insert_item_into_raw_list(results_for_builder,
- fixable_count, self.FIXABLE_COUNT)
-
- # Create a test modifiers (FAILS, FLAKY etc) summary dictionary.
- entry = {}
- for test_name in self._test_results_map.iterkeys():
- result_char = self._get_modifier_char(test_name)
- entry[result_char] = entry.get(result_char, 0) + 1
-
- # Insert the pass/skip/failure summary dictionary.
- self._insert_item_into_raw_list(results_for_builder, entry,
- self.FIXABLE)
-
- # Insert the number of all the tests that are supposed to pass.
- all_test_count = len(self._test_results)
- self._insert_item_into_raw_list(results_for_builder,
- all_test_count, self.ALL_FIXABLE_COUNT)
-
- def _insert_item_into_raw_list(self, results_for_builder, item, key):
- """Inserts the item into the list with the given key in the results for
- this builder. Creates the list if no such list exists.
-
- Args:
- results_for_builder: Dictionary containing the test results for a
- single builder.
- item: Number or string to insert into the list.
- key: Key in results_for_builder for the list to insert into.
- """
- if key in results_for_builder:
- raw_list = results_for_builder[key]
- else:
- raw_list = []
-
- raw_list.insert(0, item)
- raw_list = raw_list[:self.MAX_NUMBER_OF_BUILD_RESULTS_TO_LOG]
- results_for_builder[key] = raw_list
-
- def _insert_item_run_length_encoded(self, item, encoded_results):
- """Inserts the item into the run-length encoded results.
-
- Args:
- item: String or number to insert.
- encoded_results: run-length encoded results. An array of arrays, e.g.
- [[3,'A'],[1,'Q']] encodes AAAQ.
- """
- if len(encoded_results) and item == encoded_results[0][1]:
- num_results = encoded_results[0][0]
- if num_results <= self.MAX_NUMBER_OF_BUILD_RESULTS_TO_LOG:
- encoded_results[0][0] = num_results + 1
- else:
- # Use a list instead of a class for the run-length encoding since
- # we want the serialized form to be concise.
- encoded_results.insert(0, [1, item])
-
- def _insert_generic_metadata(self, results_for_builder):
- """ Inserts generic metadata (such as version number, current time etc)
- into the JSON.
-
- Args:
- results_for_builder: Dictionary containing the test results for
- a single builder.
- """
- self._insert_item_into_raw_list(results_for_builder,
- self._build_number, self.BUILD_NUMBERS)
-
- # Include SVN revisions for the given repositories.
- for (name, path) in self._svn_repositories:
- self._insert_item_into_raw_list(results_for_builder, self._get_svn_revision(path), name.lower() + 'Revision')
-
- self._insert_item_into_raw_list(results_for_builder, int(time.time()), self.TIME)
-
- def _insert_test_time_and_result(self, test_name, tests):
- """ Insert a test item with its results to the given tests dictionary.
-
- Args:
- tests: Dictionary containing test result entries.
- """
-
- result = self._get_result_char(test_name)
- time = self._get_test_timing(test_name)
-
- this_test = tests
- for segment in test_name.split("/"):
- if segment not in this_test:
- this_test[segment] = {}
- this_test = this_test[segment]
-
- if not len(this_test):
- self._populate_results_and_times_json(this_test)
-
- if self.RESULTS in this_test:
- self._insert_item_run_length_encoded(result, this_test[self.RESULTS])
- else:
- this_test[self.RESULTS] = [[1, result]]
-
- if self.TIMES in this_test:
- self._insert_item_run_length_encoded(time, this_test[self.TIMES])
- else:
- this_test[self.TIMES] = [[1, time]]
-
- def _convert_json_to_current_version(self, results_json):
- """If the JSON does not match the current version, converts it to the
- current version and adds in the new version number.
- """
- if self.VERSION_KEY in results_json:
- archive_version = results_json[self.VERSION_KEY]
- if archive_version == self.VERSION:
- return
- else:
- archive_version = 3
-
- # version 3->4
- if archive_version == 3:
- num_results = len(results_json.values())
- for builder, results in results_json.iteritems():
- self._convert_tests_to_trie(results)
-
- results_json[self.VERSION_KEY] = self.VERSION
-
- def _convert_tests_to_trie(self, results):
- if not self.TESTS in results:
- return
-
- test_results = results[self.TESTS]
- test_results_trie = {}
- for test in test_results.iterkeys():
- single_test_result = test_results[test]
- add_path_to_trie(test, single_test_result, test_results_trie)
-
- results[self.TESTS] = test_results_trie
-
- def _populate_results_and_times_json(self, results_and_times):
- results_and_times[self.RESULTS] = []
- results_and_times[self.TIMES] = []
- return results_and_times
-
- def _create_results_for_builder_json(self):
- results_for_builder = {}
- results_for_builder[self.TESTS] = {}
- return results_for_builder
-
- def _remove_items_over_max_number_of_builds(self, encoded_list):
- """Removes items from the run-length encoded list after the final
- item that exceeds the max number of builds to track.
-
- Args:
- encoded_results: run-length encoded results. An array of arrays, e.g.
- [[3,'A'],[1,'Q']] encodes AAAQ.
- """
- num_builds = 0
- index = 0
- for result in encoded_list:
- num_builds = num_builds + result[0]
- index = index + 1
- if num_builds > self.MAX_NUMBER_OF_BUILD_RESULTS_TO_LOG:
- return encoded_list[:index]
- return encoded_list
-
- def _normalize_results_json(self, test, test_name, tests):
- """ Prune tests where all runs pass or tests that no longer exist and
- truncate all results to maxNumberOfBuilds.
-
- Args:
- test: ResultsAndTimes object for this test.
- test_name: Name of the test.
- tests: The JSON object with all the test results for this builder.
- """
- test[self.RESULTS] = self._remove_items_over_max_number_of_builds(
- test[self.RESULTS])
- test[self.TIMES] = self._remove_items_over_max_number_of_builds(
- test[self.TIMES])
-
- is_all_pass = self._is_results_all_of_type(test[self.RESULTS],
- self.PASS_RESULT)
- is_all_no_data = self._is_results_all_of_type(test[self.RESULTS],
- self.NO_DATA_RESULT)
- max_time = max([time[1] for time in test[self.TIMES]])
-
- # Remove all passes/no-data from the results to reduce noise and
- # filesize. If a test passes every run, but takes > MIN_TIME to run,
- # don't throw away the data.
- if is_all_no_data or (is_all_pass and max_time <= self.MIN_TIME):
- del tests[test_name]
-
- def _is_results_all_of_type(self, results, type):
- """Returns whether all the results are of the given type
- (e.g. all passes)."""
- return len(results) == 1 and results[0][1] == type
diff --git a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py b/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py
deleted file mode 100644
index c952e33bc..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator_unittest.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-import json
-import optparse
-import random
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests.layout_package import json_results_generator
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.port import test
-from webkitpy.thirdparty.mock import Mock
-
-
-class JSONGeneratorTest(unittest.TestCase):
- def setUp(self):
- self.builder_name = 'DUMMY_BUILDER_NAME'
- self.build_name = 'DUMMY_BUILD_NAME'
- self.build_number = 'DUMMY_BUILDER_NUMBER'
-
- # For archived results.
- self._json = None
- self._num_runs = 0
- self._tests_set = set([])
- self._test_timings = {}
- self._failed_count_map = {}
-
- self._PASS_count = 0
- self._DISABLED_count = 0
- self._FLAKY_count = 0
- self._FAILS_count = 0
- self._fixable_count = 0
-
- def test_strip_json_wrapper(self):
- json = "['contents']"
- self.assertEqual(json_results_generator.strip_json_wrapper(json_results_generator._JSON_PREFIX + json + json_results_generator._JSON_SUFFIX), json)
- self.assertEqual(json_results_generator.strip_json_wrapper(json), json)
-
- def _test_json_generation(self, passed_tests_list, failed_tests_list):
- tests_set = set(passed_tests_list) | set(failed_tests_list)
-
- DISABLED_tests = set([t for t in tests_set
- if t.startswith('DISABLED_')])
- FLAKY_tests = set([t for t in tests_set
- if t.startswith('FLAKY_')])
- FAILS_tests = set([t for t in tests_set
- if t.startswith('FAILS_')])
- PASS_tests = tests_set - (DISABLED_tests | FLAKY_tests | FAILS_tests)
-
- failed_tests = set(failed_tests_list) - DISABLED_tests
- failed_count_map = dict([(t, 1) for t in failed_tests])
-
- test_timings = {}
- i = 0
- for test in tests_set:
- test_timings[test] = float(self._num_runs * 100 + i)
- i += 1
-
- test_results_map = dict()
- for test in tests_set:
- test_results_map[test] = json_results_generator.TestResult(test,
- failed=(test in failed_tests),
- elapsed_time=test_timings[test])
-
- host = MockHost()
- port = Mock()
- port._filesystem = host.filesystem
- generator = json_results_generator.JSONResultsGenerator(port,
- self.builder_name, self.build_name, self.build_number,
- '',
- None, # don't fetch past json results archive
- test_results_map)
-
- failed_count_map = dict([(t, 1) for t in failed_tests])
-
- # Test incremental json results
- incremental_json = generator.get_json()
- self._verify_json_results(
- tests_set,
- test_timings,
- failed_count_map,
- len(PASS_tests),
- len(DISABLED_tests),
- len(FLAKY_tests),
- len(DISABLED_tests | failed_tests),
- incremental_json,
- 1)
-
- # We don't verify the results here, but at least we make sure the code runs without errors.
- generator.generate_json_output()
- generator.generate_times_ms_file()
-
- def _verify_json_results(self, tests_set, test_timings, failed_count_map,
- PASS_count, DISABLED_count, FLAKY_count,
- fixable_count,
- json, num_runs):
- # Aliasing to a short name for better access to its constants.
- JRG = json_results_generator.JSONResultsGenerator
-
- self.assertIn(JRG.VERSION_KEY, json)
- self.assertIn(self.builder_name, json)
-
- buildinfo = json[self.builder_name]
- self.assertIn(JRG.FIXABLE, buildinfo)
- self.assertIn(JRG.TESTS, buildinfo)
- self.assertEqual(len(buildinfo[JRG.BUILD_NUMBERS]), num_runs)
- self.assertEqual(buildinfo[JRG.BUILD_NUMBERS][0], self.build_number)
-
- if tests_set or DISABLED_count:
- fixable = {}
- for fixable_items in buildinfo[JRG.FIXABLE]:
- for (type, count) in fixable_items.iteritems():
- if type in fixable:
- fixable[type] = fixable[type] + count
- else:
- fixable[type] = count
-
- if PASS_count:
- self.assertEqual(fixable[JRG.PASS_RESULT], PASS_count)
- else:
- self.assertTrue(JRG.PASS_RESULT not in fixable or
- fixable[JRG.PASS_RESULT] == 0)
- if DISABLED_count:
- self.assertEqual(fixable[JRG.SKIP_RESULT], DISABLED_count)
- else:
- self.assertTrue(JRG.SKIP_RESULT not in fixable or
- fixable[JRG.SKIP_RESULT] == 0)
- if FLAKY_count:
- self.assertEqual(fixable[JRG.FLAKY_RESULT], FLAKY_count)
- else:
- self.assertTrue(JRG.FLAKY_RESULT not in fixable or
- fixable[JRG.FLAKY_RESULT] == 0)
-
- if failed_count_map:
- tests = buildinfo[JRG.TESTS]
- for test_name in failed_count_map.iterkeys():
- test = self._find_test_in_trie(test_name, tests)
-
- failed = 0
- for result in test[JRG.RESULTS]:
- if result[1] == JRG.FAIL_RESULT:
- failed += result[0]
- self.assertEqual(failed_count_map[test_name], failed)
-
- timing_count = 0
- for timings in test[JRG.TIMES]:
- if timings[1] == test_timings[test_name]:
- timing_count = timings[0]
- self.assertEqual(1, timing_count)
-
- if fixable_count:
- self.assertEqual(sum(buildinfo[JRG.FIXABLE_COUNT]), fixable_count)
-
- def _find_test_in_trie(self, path, trie):
- nodes = path.split("/")
- sub_trie = trie
- for node in nodes:
- self.assertIn(node, sub_trie)
- sub_trie = sub_trie[node]
- return sub_trie
-
- def test_json_generation(self):
- self._test_json_generation([], [])
- self._test_json_generation(['A1', 'B1'], [])
- self._test_json_generation([], ['FAILS_A2', 'FAILS_B2'])
- self._test_json_generation(['DISABLED_A3', 'DISABLED_B3'], [])
- self._test_json_generation(['A4'], ['B4', 'FAILS_C4'])
- self._test_json_generation(['DISABLED_C5', 'DISABLED_D5'], ['A5', 'B5'])
- self._test_json_generation(
- ['A6', 'B6', 'FAILS_C6', 'DISABLED_E6', 'DISABLED_F6'],
- ['FAILS_D6'])
-
- # Generate JSON with the same test sets. (Both incremental results and
- # archived results must be updated appropriately.)
- self._test_json_generation(
- ['A', 'FLAKY_B', 'DISABLED_C'],
- ['FAILS_D', 'FLAKY_E'])
- self._test_json_generation(
- ['A', 'DISABLED_C', 'FLAKY_E'],
- ['FLAKY_B', 'FAILS_D'])
- self._test_json_generation(
- ['FLAKY_B', 'DISABLED_C', 'FAILS_D'],
- ['A', 'FLAKY_E'])
-
- def test_hierarchical_json_generation(self):
- # FIXME: Re-work tests to be more comprehensible and comprehensive.
- self._test_json_generation(['foo/A'], ['foo/B', 'bar/C'])
-
- def test_test_timings_trie(self):
- test_port = test.TestPort(MockHost())
- individual_test_timings = []
- individual_test_timings.append(json_results_generator.TestResult('foo/bar/baz.html', elapsed_time=1.2))
- individual_test_timings.append(json_results_generator.TestResult('bar.html', elapsed_time=0.0001))
- trie = json_results_generator.test_timings_trie(test_port, individual_test_timings)
-
- expected_trie = {
- 'bar.html': 0,
- 'foo': {
- 'bar': {
- 'baz.html': 1200,
- }
- }
- }
-
- self.assertEqual(json.dumps(trie), json.dumps(expected_trie))
diff --git a/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py b/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py
deleted file mode 100644
index 90e4cbb51..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (C) 2012 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.
-
-import logging
-import optparse
-import signal
-import traceback
-
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.port import platform_options
-
-
-# This mirrors what the shell normally does.
-INTERRUPTED_EXIT_STATUS = signal.SIGINT + 128
-
-# This is a randomly chosen exit code that can be tested against to
-# indicate that an unexpected exception occurred.
-EXCEPTIONAL_EXIT_STATUS = 254
-
-_log = logging.getLogger(__name__)
-
-
-def lint(host, options, logging_stream):
- logger = logging.getLogger()
- logger.setLevel(logging.INFO)
- handler = logging.StreamHandler(logging_stream)
- logger.addHandler(handler)
-
- try:
- ports_to_lint = [host.port_factory.get(name) for name in host.port_factory.all_port_names(options.platform)]
- files_linted = set()
- lint_failed = False
-
- for port_to_lint in ports_to_lint:
- expectations_dict = port_to_lint.expectations_dict()
-
- # FIXME: This won't work if multiple ports share a TestExpectations file but support different modifiers in the file.
- for expectations_file in expectations_dict.keys():
- if expectations_file in files_linted:
- continue
-
- try:
- test_expectations.TestExpectations(port_to_lint,
- expectations_to_lint={expectations_file: expectations_dict[expectations_file]})
- except test_expectations.ParseError as e:
- lint_failed = True
- _log.error('')
- for warning in e.warnings:
- _log.error(warning)
- _log.error('')
- files_linted.add(expectations_file)
-
- if lint_failed:
- _log.error('Lint failed.')
- return -1
-
- _log.info('Lint succeeded.')
- return 0
- finally:
- logger.removeHandler(handler)
-
-
-def main(argv, _, stderr):
- parser = optparse.OptionParser(option_list=platform_options(use_globs=True))
- options, _ = parser.parse_args(argv)
-
- if options.platform and 'test' in options.platform:
- # It's a bit lame to import mocks into real code, but this allows the user
- # to run tests against the test platform interactively, which is useful for
- # debugging test failures.
- from webkitpy.common.host_mock import MockHost
- host = MockHost()
- else:
- host = Host()
-
- try:
- exit_status = lint(host, options, stderr)
- except KeyboardInterrupt:
- exit_status = INTERRUPTED_EXIT_STATUS
- except Exception as e:
- print >> stderr, '\n%s raised: %s' % (e.__class__.__name__, str(e))
- traceback.print_exc(file=stderr)
- exit_status = EXCEPTIONAL_EXIT_STATUS
-
- return exit_status
diff --git a/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py b/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py
deleted file mode 100644
index 47280292a..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/lint_test_expectations_unittest.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright (C) 2012 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.
-
-import optparse
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests import lint_test_expectations
-
-
-class FakePort(object):
- def __init__(self, host, name, path):
- self.host = host
- self.name = name
- self.path = path
-
- def test_configuration(self):
- return None
-
- def expectations_dict(self):
- self.host.ports_parsed.append(self.name)
- return {self.path: ''}
-
- def skipped_layout_tests(self, _):
- return set([])
-
- def all_test_configurations(self):
- return []
-
- def configuration_specifier_macros(self):
- return []
-
- def get_option(self, _, val):
- return val
-
- def path_to_generic_test_expectations_file(self):
- return ''
-
-class FakeFactory(object):
- def __init__(self, host, ports):
- self.host = host
- self.ports = {}
- for port in ports:
- self.ports[port.name] = port
-
- def get(self, port_name, *args, **kwargs): # pylint: disable=W0613,E0202
- return self.ports[port_name]
-
- def all_port_names(self, platform=None): # pylint: disable=W0613,E0202
- return sorted(self.ports.keys())
-
-
-class LintTest(unittest.TestCase):
- def test_all_configurations(self):
- host = MockHost()
- host.ports_parsed = []
- host.port_factory = FakeFactory(host, (FakePort(host, 'a', 'path-to-a'),
- FakePort(host, 'b', 'path-to-b'),
- FakePort(host, 'b-win', 'path-to-b')))
-
- logging_stream = StringIO.StringIO()
- options = optparse.Values({'platform': None})
- res = lint_test_expectations.lint(host, options, logging_stream)
- self.assertEqual(res, 0)
- self.assertEqual(host.ports_parsed, ['a', 'b', 'b-win'])
-
- def test_lint_test_files(self):
- logging_stream = StringIO.StringIO()
- options = optparse.Values({'platform': 'test-mac-leopard'})
- host = MockHost()
-
- # pylint appears to complain incorrectly about the method overrides pylint: disable=E0202,C0322
- # FIXME: incorrect complaints about spacing pylint: disable=C0322
- host.port_factory.all_port_names = lambda platform=None: [platform]
-
- res = lint_test_expectations.lint(host, options, logging_stream)
-
- self.assertEqual(res, 0)
- self.assertIn('Lint succeeded', logging_stream.getvalue())
-
- def test_lint_test_files__errors(self):
- options = optparse.Values({'platform': 'test', 'debug_rwt_logging': False})
- host = MockHost()
-
- # FIXME: incorrect complaints about spacing pylint: disable=C0322
- port = host.port_factory.get(options.platform, options=options)
- port.expectations_dict = lambda: {'foo': '-- syntax error1', 'bar': '-- syntax error2'}
-
- host.port_factory.get = lambda platform, options=None: port
- host.port_factory.all_port_names = lambda platform=None: [port.name()]
-
- logging_stream = StringIO.StringIO()
-
- res = lint_test_expectations.lint(host, options, logging_stream)
-
- self.assertEqual(res, -1)
- self.assertIn('Lint failed', logging_stream.getvalue())
- self.assertIn('foo:1', logging_stream.getvalue())
- self.assertIn('bar:1', logging_stream.getvalue())
-
-
-class MainTest(unittest.TestCase):
- def test_success(self):
- orig_lint_fn = lint_test_expectations.lint
-
- # unused args pylint: disable=W0613
- def interrupting_lint(host, options, logging_stream):
- raise KeyboardInterrupt
-
- def successful_lint(host, options, logging_stream):
- return 0
-
- def exception_raising_lint(host, options, logging_stream):
- assert False
-
- stdout = StringIO.StringIO()
- stderr = StringIO.StringIO()
- try:
- lint_test_expectations.lint = interrupting_lint
- res = lint_test_expectations.main([], stdout, stderr)
- self.assertEqual(res, lint_test_expectations.INTERRUPTED_EXIT_STATUS)
-
- lint_test_expectations.lint = successful_lint
- res = lint_test_expectations.main(['--platform', 'test'], stdout, stderr)
- self.assertEqual(res, 0)
-
- lint_test_expectations.lint = exception_raising_lint
- res = lint_test_expectations.main([], stdout, stderr)
- self.assertEqual(res, lint_test_expectations.EXCEPTIONAL_EXIT_STATUS)
- finally:
- lint_test_expectations.lint = orig_lint_fn
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/__init__.py b/Tools/Scripts/webkitpy/layout_tests/models/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py b/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py
deleted file mode 100644
index 95d0f2b87..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_configuration.py
+++ /dev/null
@@ -1,306 +0,0 @@
-# Copyright (C) 2011 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 Google name 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.
-
-
-class TestConfiguration(object):
- def __init__(self, version, architecture, build_type):
- self.version = version
- self.architecture = architecture
- self.build_type = build_type
-
- @classmethod
- def category_order(cls):
- """The most common human-readable order in which the configuration properties are listed."""
- return ['version', 'architecture', 'build_type']
-
- def items(self):
- return self.__dict__.items()
-
- def keys(self):
- return self.__dict__.keys()
-
- def __str__(self):
- return ("<%(version)s, %(architecture)s, %(build_type)s>" %
- self.__dict__)
-
- def __repr__(self):
- return "TestConfig(version='%(version)s', architecture='%(architecture)s', build_type='%(build_type)s')" % self.__dict__
-
- def __hash__(self):
- return hash(self.version + self.architecture + self.build_type)
-
- def __eq__(self, other):
- return self.__hash__() == other.__hash__()
-
- def values(self):
- """Returns the configuration values of this instance as a tuple."""
- return self.__dict__.values()
-
-
-class SpecifierSorter(object):
- def __init__(self, all_test_configurations=None, macros=None):
- self._specifier_to_category = {}
-
- if not all_test_configurations:
- return
- for test_configuration in all_test_configurations:
- for category, specifier in test_configuration.items():
- self.add_specifier(category, specifier)
-
- self.add_macros(macros)
-
- def add_specifier(self, category, specifier):
- self._specifier_to_category[specifier] = category
-
- def add_macros(self, macros):
- if not macros:
- return
- # Assume well-formed macros.
- for macro, specifier_list in macros.items():
- self.add_specifier(self.category_for_specifier(specifier_list[0]), macro)
-
- @classmethod
- def category_priority(cls, category):
- return TestConfiguration.category_order().index(category)
-
- def specifier_priority(self, specifier):
- return self.category_priority(self._specifier_to_category[specifier])
-
- def category_for_specifier(self, specifier):
- return self._specifier_to_category.get(specifier)
-
- def sort_specifiers(self, specifiers):
- category_slots = map(lambda x: [], TestConfiguration.category_order())
- for specifier in specifiers:
- category_slots[self.specifier_priority(specifier)].append(specifier)
-
- def sort_and_return(result, specifier_list):
- specifier_list.sort()
- return result + specifier_list
-
- return reduce(sort_and_return, category_slots, [])
-
-
-class TestConfigurationConverter(object):
- def __init__(self, all_test_configurations, configuration_macros=None):
- self._all_test_configurations = all_test_configurations
- self._configuration_macros = configuration_macros or {}
- self._specifier_to_configuration_set = {}
- self._specifier_sorter = SpecifierSorter()
- self._collapsing_sets_by_size = {}
- self._junk_specifier_combinations = {}
- self._collapsing_sets_by_category = {}
- matching_sets_by_category = {}
- for configuration in all_test_configurations:
- for category, specifier in configuration.items():
- self._specifier_to_configuration_set.setdefault(specifier, set()).add(configuration)
- self._specifier_sorter.add_specifier(category, specifier)
- self._collapsing_sets_by_category.setdefault(category, set()).add(specifier)
- # FIXME: This seems extra-awful.
- for cat2, spec2 in configuration.items():
- if category == cat2:
- continue
- matching_sets_by_category.setdefault(specifier, {}).setdefault(cat2, set()).add(spec2)
- for collapsing_set in self._collapsing_sets_by_category.values():
- self._collapsing_sets_by_size.setdefault(len(collapsing_set), set()).add(frozenset(collapsing_set))
-
- for specifier, sets_by_category in matching_sets_by_category.items():
- for category, set_by_category in sets_by_category.items():
- if len(set_by_category) == 1 and self._specifier_sorter.category_priority(category) > self._specifier_sorter.specifier_priority(specifier):
- self._junk_specifier_combinations[specifier] = set_by_category
-
- self._specifier_sorter.add_macros(configuration_macros)
-
- def specifier_sorter(self):
- return self._specifier_sorter
-
- def _expand_macros(self, specifier):
- expanded_specifiers = self._configuration_macros.get(specifier)
- return expanded_specifiers or [specifier]
-
- def to_config_set(self, specifier_set, error_list=None):
- """Convert a list of specifiers into a set of TestConfiguration instances."""
- if len(specifier_set) == 0:
- return self._all_test_configurations
-
- matching_sets = {}
-
- for specifier in specifier_set:
- for expanded_specifier in self._expand_macros(specifier):
- configurations = self._specifier_to_configuration_set.get(expanded_specifier)
- if not configurations:
- if error_list is not None:
- error_list.append("Unrecognized modifier '" + expanded_specifier + "'")
- return set()
- category = self._specifier_sorter.category_for_specifier(expanded_specifier)
- matching_sets.setdefault(category, set()).update(configurations)
-
- return reduce(set.intersection, matching_sets.values())
-
- @classmethod
- def collapse_macros(cls, macros_dict, specifiers_list):
- for macro_specifier, macro in macros_dict.items():
- if len(macro) == 1:
- continue
-
- for combination in cls.combinations(specifiers_list, len(macro)):
- if cls.symmetric_difference(combination) == set(macro):
- for item in combination:
- specifiers_list.remove(item)
- new_specifier_set = cls.intersect_combination(combination)
- new_specifier_set.add(macro_specifier)
- specifiers_list.append(frozenset(new_specifier_set))
-
- def collapse_individual_specifier_set(macro_specifier, macro):
- specifiers_to_remove = []
- specifiers_to_add = []
- for specifier_set in specifiers_list:
- macro_set = set(macro)
- if macro_set.intersection(specifier_set) == macro_set:
- specifiers_to_remove.append(specifier_set)
- specifiers_to_add.append(frozenset((set(specifier_set) - macro_set) | set([macro_specifier])))
- for specifier in specifiers_to_remove:
- specifiers_list.remove(specifier)
- for specifier in specifiers_to_add:
- specifiers_list.append(specifier)
-
- for macro_specifier, macro in macros_dict.items():
- collapse_individual_specifier_set(macro_specifier, macro)
-
- # FIXME: itertools.combinations in buggy in Python 2.6.1 (the version that ships on SL).
- # It seems to be okay in 2.6.5 or later; until then, this is the implementation given
- # in http://docs.python.org/library/itertools.html (from 2.7).
- @staticmethod
- def combinations(iterable, r):
- # combinations('ABCD', 2) --> AB AC AD BC BD CD
- # combinations(range(4), 3) --> 012 013 023 123
- pool = tuple(iterable)
- n = len(pool)
- if r > n:
- return
- indices = range(r)
- yield tuple(pool[i] for i in indices)
- while True:
- for i in reversed(range(r)):
- if indices[i] != i + n - r:
- break
- else:
- return
- indices[i] += 1 # pylint: disable=W0631
- for j in range(i + 1, r): # pylint: disable=W0631
- indices[j] = indices[j - 1] + 1
- yield tuple(pool[i] for i in indices)
-
- @classmethod
- def intersect_combination(cls, combination):
- return reduce(set.intersection, [set(specifiers) for specifiers in combination])
-
- @classmethod
- def symmetric_difference(cls, iterable):
- union = set()
- intersection = iterable[0]
- for item in iterable:
- union = union | item
- intersection = intersection.intersection(item)
- return union - intersection
-
- def to_specifiers_list(self, test_configuration_set):
- """Convert a set of TestConfiguration instances into one or more list of specifiers."""
- # Easy out: if the set is all configurations, the modifier is empty.
- if len(test_configuration_set) == len(self._all_test_configurations):
- return [[]]
-
- # 1) Build a list of specifier sets, discarding specifiers that don't add value.
- specifiers_list = []
- for config in test_configuration_set:
- values = set(config.values())
- for specifier, junk_specifier_set in self._junk_specifier_combinations.items():
- if specifier in values:
- values -= junk_specifier_set
- specifiers_list.append(frozenset(values))
-
- def try_collapsing(size, collapsing_sets):
- if len(specifiers_list) < size:
- return False
- for combination in self.combinations(specifiers_list, size):
- if self.symmetric_difference(combination) in collapsing_sets:
- for item in combination:
- specifiers_list.remove(item)
- specifiers_list.append(frozenset(self.intersect_combination(combination)))
- return True
- return False
-
- # 2) Collapse specifier sets with common specifiers:
- # (xp, release), (xp, debug) --> (xp, x86)
- for size, collapsing_sets in self._collapsing_sets_by_size.items():
- while try_collapsing(size, collapsing_sets):
- pass
-
- def try_abbreviating(collapsing_sets):
- if len(specifiers_list) < 2:
- return False
- for combination in self.combinations(specifiers_list, 2):
- for collapsing_set in collapsing_sets:
- diff = self.symmetric_difference(combination)
- if diff <= collapsing_set:
- common = self.intersect_combination(combination)
- for item in combination:
- specifiers_list.remove(item)
- specifiers_list.append(frozenset(common | diff))
- return True
- return False
-
- # 3) Abbreviate specifier sets by combining specifiers across categories.
- # (xp, release), (win7, release) --> (xp, win7, release)
- while try_abbreviating(self._collapsing_sets_by_size.values()):
- pass
-
-
- # 4) Substitute specifier subsets that match macros witin each set:
- # (xp, vista, win7, release) -> (win, release)
- self.collapse_macros(self._configuration_macros, specifiers_list)
-
- macro_keys = set(self._configuration_macros.keys())
-
- # 5) Collapsing macros may have created combinations the can now be abbreviated.
- # (xp, release), (linux, x86, release), (linux, x86_64, release) --> (xp, release), (linux, release) --> (xp, linux, release)
- while try_abbreviating([self._collapsing_sets_by_category['version'] | macro_keys]):
- pass
-
- # 6) Remove cases where we have collapsed but have all macros.
- # (android, win, mac, linux, release) --> (release)
- specifiers_to_remove = []
- for specifier_set in specifiers_list:
- if macro_keys <= specifier_set:
- specifiers_to_remove.append(specifier_set)
-
- for specifier_set in specifiers_to_remove:
- specifiers_list.remove(specifier_set)
- specifiers_list.append(frozenset(specifier_set - macro_keys))
-
- return specifiers_list
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py b/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py
deleted file mode 100644
index 1a7d375f2..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_configuration_unittest.py
+++ /dev/null
@@ -1,369 +0,0 @@
-# Copyright (C) 2011 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 Google name 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.
-
-import unittest2 as unittest
-
-from webkitpy.layout_tests.models.test_configuration import *
-
-
-def make_mock_all_test_configurations_set():
- all_test_configurations = set()
- for version, architecture in (('snowleopard', 'x86'), ('xp', 'x86'), ('win7', 'x86'), ('vista', 'x86'), ('lucid', 'x86'), ('lucid', 'x86_64')):
- for build_type in ('debug', 'release'):
- all_test_configurations.add(TestConfiguration(version, architecture, build_type))
- return all_test_configurations
-
-MOCK_MACROS = {
- 'mac': ['snowleopard'],
- 'win': ['xp', 'vista', 'win7'],
- 'linux': ['lucid'],
-}
-
-
-class TestConfigurationTest(unittest.TestCase):
- def test_items(self):
- config = TestConfiguration('xp', 'x86', 'release')
- result_config_dict = {}
- for category, specifier in config.items():
- result_config_dict[category] = specifier
- self.assertEqual({'version': 'xp', 'architecture': 'x86', 'build_type': 'release'}, result_config_dict)
-
- def test_keys(self):
- config = TestConfiguration('xp', 'x86', 'release')
- result_config_keys = []
- for category in config.keys():
- result_config_keys.append(category)
- self.assertEqual(set(['version', 'architecture', 'build_type']), set(result_config_keys))
-
- def test_str(self):
- config = TestConfiguration('xp', 'x86', 'release')
- self.assertEqual('<xp, x86, release>', str(config))
-
- def test_repr(self):
- config = TestConfiguration('xp', 'x86', 'release')
- self.assertEqual("TestConfig(version='xp', architecture='x86', build_type='release')", repr(config))
-
- def test_hash(self):
- config_dict = {}
- config_dict[TestConfiguration('xp', 'x86', 'release')] = True
- self.assertIn(TestConfiguration('xp', 'x86', 'release'), config_dict)
- self.assertTrue(config_dict[TestConfiguration('xp', 'x86', 'release')])
-
- def query_unknown_key():
- return config_dict[TestConfiguration('xp', 'x86', 'debug')]
-
- self.assertRaises(KeyError, query_unknown_key)
- self.assertIn(TestConfiguration('xp', 'x86', 'release'), config_dict)
- self.assertNotIn(TestConfiguration('xp', 'x86', 'debug'), config_dict)
- configs_list = [TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug'), TestConfiguration('xp', 'x86', 'debug')]
- self.assertEqual(len(configs_list), 3)
- self.assertEqual(len(set(configs_list)), 2)
-
- def test_eq(self):
- self.assertEqual(TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'release'))
- self.assertNotEquals(TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug'))
-
- def test_values(self):
- config = TestConfiguration('xp', 'x86', 'release')
- result_config_values = []
- for value in config.values():
- result_config_values.append(value)
- self.assertEqual(set(['xp', 'x86', 'release']), set(result_config_values))
-
-
-class SpecifierSorterTest(unittest.TestCase):
- def __init__(self, testFunc):
- self._all_test_configurations = make_mock_all_test_configurations_set()
- unittest.TestCase.__init__(self, testFunc)
-
- def test_init(self):
- sorter = SpecifierSorter()
- self.assertIsNone(sorter.category_for_specifier('control'))
- sorter = SpecifierSorter(self._all_test_configurations)
- self.assertEqual(sorter.category_for_specifier('xp'), 'version')
- sorter = SpecifierSorter(self._all_test_configurations, MOCK_MACROS)
- self.assertEqual(sorter.category_for_specifier('mac'), 'version')
-
- def test_add_specifier(self):
- sorter = SpecifierSorter()
- self.assertIsNone(sorter.category_for_specifier('control'))
- sorter.add_specifier('version', 'control')
- self.assertEqual(sorter.category_for_specifier('control'), 'version')
- sorter.add_specifier('version', 'one')
- self.assertEqual(sorter.category_for_specifier('one'), 'version')
- sorter.add_specifier('architecture', 'renaissance')
- self.assertEqual(sorter.category_for_specifier('one'), 'version')
- self.assertEqual(sorter.category_for_specifier('renaissance'), 'architecture')
-
- def test_add_macros(self):
- sorter = SpecifierSorter(self._all_test_configurations)
- sorter.add_macros(MOCK_MACROS)
- self.assertEqual(sorter.category_for_specifier('mac'), 'version')
- self.assertEqual(sorter.category_for_specifier('win'), 'version')
- self.assertEqual(sorter.category_for_specifier('x86'), 'architecture')
-
- def test_category_priority(self):
- sorter = SpecifierSorter(self._all_test_configurations)
- self.assertEqual(sorter.category_priority('version'), 0)
- self.assertEqual(sorter.category_priority('build_type'), 2)
-
- def test_specifier_priority(self):
- sorter = SpecifierSorter(self._all_test_configurations)
- self.assertEqual(sorter.specifier_priority('x86'), 1)
- self.assertEqual(sorter.specifier_priority('snowleopard'), 0)
-
- def test_sort_specifiers(self):
- sorter = SpecifierSorter(self._all_test_configurations, MOCK_MACROS)
- self.assertEqual(sorter.sort_specifiers(set()), [])
- self.assertEqual(sorter.sort_specifiers(set(['x86'])), ['x86'])
- self.assertEqual(sorter.sort_specifiers(set(['x86', 'win7'])), ['win7', 'x86'])
- self.assertEqual(sorter.sort_specifiers(set(['x86', 'debug', 'win7'])), ['win7', 'x86', 'debug'])
- self.assertEqual(sorter.sort_specifiers(set(['snowleopard', 'x86', 'debug', 'win7'])), ['snowleopard', 'win7', 'x86', 'debug'])
- self.assertEqual(sorter.sort_specifiers(set(['x86', 'mac', 'debug', 'win7'])), ['mac', 'win7', 'x86', 'debug'])
-
-
-class TestConfigurationConverterTest(unittest.TestCase):
- def __init__(self, testFunc):
- self._all_test_configurations = make_mock_all_test_configurations_set()
- unittest.TestCase.__init__(self, testFunc)
-
- def test_symmetric_difference(self):
- self.assertEqual(TestConfigurationConverter.symmetric_difference([set(['a', 'b']), set(['b', 'c'])]), set(['a', 'c']))
- self.assertEqual(TestConfigurationConverter.symmetric_difference([set(['a', 'b']), set(['b', 'c']), set(['b', 'd'])]), set(['a', 'c', 'd']))
-
- def test_to_config_set(self):
- converter = TestConfigurationConverter(self._all_test_configurations)
-
- self.assertEqual(converter.to_config_set(set()), self._all_test_configurations)
-
- self.assertEqual(converter.to_config_set(set(['foo'])), set())
-
- self.assertEqual(converter.to_config_set(set(['xp', 'foo'])), set())
-
- errors = []
- self.assertEqual(converter.to_config_set(set(['xp', 'foo']), errors), set())
- self.assertEqual(errors, ["Unrecognized modifier 'foo'"])
-
- self.assertEqual(converter.to_config_set(set(['xp', 'x86_64'])), set())
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['xp', 'release'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('snowleopard', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86_64', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['release'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('lucid', 'x86_64', 'release'),
- TestConfiguration('lucid', 'x86_64', 'debug'),
- ])
- self.assertEqual(converter.to_config_set(set(['x86_64'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('lucid', 'x86_64', 'release'),
- TestConfiguration('lucid', 'x86_64', 'debug'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'debug'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'debug'),
- ])
- self.assertEqual(converter.to_config_set(set(['lucid', 'snowleopard'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'debug'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'debug'),
- ])
- self.assertEqual(converter.to_config_set(set(['lucid', 'snowleopard', 'x86'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('lucid', 'x86_64', 'release'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['lucid', 'snowleopard', 'release'])), configs_to_match)
-
- def test_macro_expansion(self):
- converter = TestConfigurationConverter(self._all_test_configurations, MOCK_MACROS)
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['win', 'release'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86_64', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['win', 'lucid', 'release'])), configs_to_match)
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_config_set(set(['win', 'mac', 'release'])), configs_to_match)
-
- def test_to_specifier_lists(self):
- converter = TestConfigurationConverter(self._all_test_configurations, MOCK_MACROS)
-
- self.assertEqual(converter.to_specifiers_list(set(self._all_test_configurations)), [[]])
- self.assertEqual(converter.to_specifiers_list(set()), [])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['release', 'xp'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('xp', 'x86', 'debug'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['xp'])])
-
- configs_to_match = set([
- TestConfiguration('lucid', 'x86_64', 'debug'),
- TestConfiguration('xp', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['release', 'xp']), set(['debug', 'x86_64', 'linux'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('lucid', 'x86_64', 'debug'),
- TestConfiguration('lucid', 'x86', 'debug'),
- TestConfiguration('lucid', 'x86_64', 'debug'),
- TestConfiguration('lucid', 'x86', 'debug'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['release', 'xp']), set(['debug', 'linux'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86_64', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['xp', 'mac', 'release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'debug'),
- TestConfiguration('lucid', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win7']), set(['release', 'linux', 'x86']), set(['release', 'xp', 'mac'])])
-
- def test_macro_collapsing(self):
- macros = {'foo': ['bar', 'baz'], 'people': ['bob', 'alice', 'john']}
-
- specifiers_list = [set(['john', 'godzilla', 'bob', 'alice'])]
- TestConfigurationConverter.collapse_macros(macros, specifiers_list)
- self.assertEqual(specifiers_list, [set(['people', 'godzilla'])])
-
- specifiers_list = [set(['john', 'godzilla', 'alice'])]
- TestConfigurationConverter.collapse_macros(macros, specifiers_list)
- self.assertEqual(specifiers_list, [set(['john', 'godzilla', 'alice', 'godzilla'])])
-
- specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob', 'alice', 'john'])]
- TestConfigurationConverter.collapse_macros(macros, specifiers_list)
- self.assertEqual(specifiers_list, [set(['foo', 'godzilla', 'people'])])
-
- specifiers_list = [set(['bar', 'godzilla', 'baz', 'bob']), set(['bar', 'baz']), set(['people', 'alice', 'bob', 'john'])]
- TestConfigurationConverter.collapse_macros(macros, specifiers_list)
- self.assertEqual(specifiers_list, [set(['bob', 'foo', 'godzilla']), set(['foo']), set(['people'])])
-
- def test_converter_macro_collapsing(self):
- converter = TestConfigurationConverter(self._all_test_configurations, MOCK_MACROS)
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win', 'release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('lucid', 'x86', 'release'),
- TestConfiguration('lucid', 'x86_64', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win', 'linux', 'release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win', 'mac', 'release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- TestConfiguration('snowleopard', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win', 'mac', 'release'])])
-
- configs_to_match = set([
- TestConfiguration('xp', 'x86', 'release'),
- TestConfiguration('vista', 'x86', 'release'),
- TestConfiguration('win7', 'x86', 'release'),
- ])
- self.assertEqual(converter.to_specifiers_list(configs_to_match), [set(['win', 'release'])])
-
- def test_specifier_converter_access(self):
- specifier_sorter = TestConfigurationConverter(self._all_test_configurations, MOCK_MACROS).specifier_sorter()
- self.assertEqual(specifier_sorter.category_for_specifier('snowleopard'), 'version')
- self.assertEqual(specifier_sorter.category_for_specifier('mac'), 'version')
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py b/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
deleted file mode 100644
index f270aa41d..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
+++ /dev/null
@@ -1,1022 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""A helper class for reading in and dealing with tests expectations
-for layout tests.
-"""
-
-import logging
-import re
-
-from webkitpy.layout_tests.models.test_configuration import TestConfigurationConverter
-
-_log = logging.getLogger(__name__)
-
-
-# Test expectation and modifier constants.
-#
-# FIXME: range() starts with 0 which makes if expectation checks harder
-# as PASS is 0.
-(PASS, FAIL, TEXT, IMAGE, IMAGE_PLUS_TEXT, AUDIO, TIMEOUT, CRASH, SKIP, WONTFIX,
- SLOW, REBASELINE, MISSING, FLAKY, NOW, NONE) = range(16)
-
-# FIXME: Perhas these two routines should be part of the Port instead?
-BASELINE_SUFFIX_LIST = ('png', 'wav', 'txt')
-
-
-class ParseError(Exception):
- def __init__(self, warnings):
- super(ParseError, self).__init__()
- self.warnings = warnings
-
- def __str__(self):
- return '\n'.join(map(str, self.warnings))
-
- def __repr__(self):
- return 'ParseError(warnings=%s)' % self.warnings
-
-
-class TestExpectationParser(object):
- """Provides parsing facilities for lines in the test_expectation.txt file."""
-
- DUMMY_BUG_MODIFIER = "bug_dummy"
- BUG_MODIFIER_PREFIX = 'bug'
- BUG_MODIFIER_REGEX = 'bug\d+'
- REBASELINE_MODIFIER = 'rebaseline'
- PASS_EXPECTATION = 'pass'
- SKIP_MODIFIER = 'skip'
- SLOW_MODIFIER = 'slow'
- WONTFIX_MODIFIER = 'wontfix'
-
- TIMEOUT_EXPECTATION = 'timeout'
-
- MISSING_BUG_WARNING = 'Test lacks BUG modifier.'
-
- def __init__(self, port, full_test_list, allow_rebaseline_modifier):
- self._port = port
- self._test_configuration_converter = TestConfigurationConverter(set(port.all_test_configurations()), port.configuration_specifier_macros())
- self._full_test_list = full_test_list
- self._allow_rebaseline_modifier = allow_rebaseline_modifier
-
- def parse(self, filename, expectations_string):
- expectation_lines = []
- line_number = 0
- for line in expectations_string.split("\n"):
- line_number += 1
- test_expectation = self._tokenize_line(filename, line, line_number)
- self._parse_line(test_expectation)
- expectation_lines.append(test_expectation)
- return expectation_lines
-
- def expectation_for_skipped_test(self, test_name):
- if not self._port.test_exists(test_name):
- _log.warning('The following test %s from the Skipped list doesn\'t exist' % test_name)
- expectation_line = TestExpectationLine()
- expectation_line.original_string = test_name
- expectation_line.modifiers = [TestExpectationParser.DUMMY_BUG_MODIFIER, TestExpectationParser.SKIP_MODIFIER]
- # FIXME: It's not clear what the expectations for a skipped test should be; the expectations
- # might be different for different entries in a Skipped file, or from the command line, or from
- # only running parts of the tests. It's also not clear if it matters much.
- expectation_line.modifiers.append(TestExpectationParser.WONTFIX_MODIFIER)
- expectation_line.name = test_name
- # FIXME: we should pass in a more descriptive string here.
- expectation_line.filename = '<Skipped file>'
- expectation_line.line_number = 0
- expectation_line.expectations = [TestExpectationParser.PASS_EXPECTATION]
- self._parse_line(expectation_line)
- return expectation_line
-
- def _parse_line(self, expectation_line):
- if not expectation_line.name:
- return
-
- if not self._check_test_exists(expectation_line):
- return
-
- expectation_line.is_file = self._port.test_isfile(expectation_line.name)
- if expectation_line.is_file:
- expectation_line.path = expectation_line.name
- else:
- expectation_line.path = self._port.normalize_test_name(expectation_line.name)
-
- self._collect_matching_tests(expectation_line)
-
- self._parse_modifiers(expectation_line)
- self._parse_expectations(expectation_line)
-
- def _parse_modifiers(self, expectation_line):
- has_wontfix = False
- has_bugid = False
- parsed_specifiers = set()
-
- modifiers = [modifier.lower() for modifier in expectation_line.modifiers]
- expectations = [expectation.lower() for expectation in expectation_line.expectations]
-
- if self.SLOW_MODIFIER in modifiers and self.TIMEOUT_EXPECTATION in expectations:
- expectation_line.warnings.append('A test can not be both SLOW and TIMEOUT. If it times out indefinitely, then it should be just TIMEOUT.')
-
- for modifier in modifiers:
- if modifier in TestExpectations.MODIFIERS:
- expectation_line.parsed_modifiers.append(modifier)
- if modifier == self.WONTFIX_MODIFIER:
- has_wontfix = True
- elif modifier.startswith(self.BUG_MODIFIER_PREFIX):
- has_bugid = True
- if re.match(self.BUG_MODIFIER_REGEX, modifier):
- expectation_line.warnings.append('BUG\d+ is not allowed, must be one of BUGCR\d+, BUGWK\d+, BUGV8_\d+, or a non-numeric bug identifier.')
- else:
- expectation_line.parsed_bug_modifiers.append(modifier)
- else:
- parsed_specifiers.add(modifier)
-
- if not expectation_line.parsed_bug_modifiers and not has_wontfix and not has_bugid and self._port.warn_if_bug_missing_in_test_expectations():
- expectation_line.warnings.append(self.MISSING_BUG_WARNING)
-
- if self._allow_rebaseline_modifier and self.REBASELINE_MODIFIER in modifiers:
- expectation_line.warnings.append('REBASELINE should only be used for running rebaseline.py. Cannot be checked in.')
-
- expectation_line.matching_configurations = self._test_configuration_converter.to_config_set(parsed_specifiers, expectation_line.warnings)
-
- def _parse_expectations(self, expectation_line):
- result = set()
- for part in expectation_line.expectations:
- expectation = TestExpectations.expectation_from_string(part)
- if expectation is None: # Careful, PASS is currently 0.
- expectation_line.warnings.append('Unsupported expectation: %s' % part)
- continue
- result.add(expectation)
- expectation_line.parsed_expectations = result
-
- def _check_test_exists(self, expectation_line):
- # WebKit's way of skipping tests is to add a -disabled suffix.
- # So we should consider the path existing if the path or the
- # -disabled version exists.
- if not self._port.test_exists(expectation_line.name) and not self._port.test_exists(expectation_line.name + '-disabled'):
- # Log a warning here since you hit this case any
- # time you update TestExpectations without syncing
- # the LayoutTests directory
- expectation_line.warnings.append('Path does not exist.')
- return False
- return True
-
- def _collect_matching_tests(self, expectation_line):
- """Convert the test specification to an absolute, normalized
- path and make sure directories end with the OS path separator."""
- # FIXME: full_test_list can quickly contain a big amount of
- # elements. We should consider at some point to use a more
- # efficient structure instead of a list. Maybe a dictionary of
- # lists to represent the tree of tests, leaves being test
- # files and nodes being categories.
-
- if not self._full_test_list:
- expectation_line.matching_tests = [expectation_line.path]
- return
-
- if not expectation_line.is_file:
- # this is a test category, return all the tests of the category.
- expectation_line.matching_tests = [test for test in self._full_test_list if test.startswith(expectation_line.path)]
- return
-
- # this is a test file, do a quick check if it's in the
- # full test suite.
- if expectation_line.path in self._full_test_list:
- expectation_line.matching_tests.append(expectation_line.path)
-
- # FIXME: Update the original modifiers and remove this once the old syntax is gone.
- _configuration_tokens_list = [
- 'Mac', 'SnowLeopard', 'Lion', 'MountainLion',
- 'Win', 'XP', 'Vista', 'Win7',
- 'Linux',
- 'Android',
- 'Release',
- 'Debug',
- ]
-
- _configuration_tokens = dict((token, token.upper()) for token in _configuration_tokens_list)
- _inverted_configuration_tokens = dict((value, name) for name, value in _configuration_tokens.iteritems())
-
- # FIXME: Update the original modifiers list and remove this once the old syntax is gone.
- _expectation_tokens = {
- 'Crash': 'CRASH',
- 'Failure': 'FAIL',
- 'ImageOnlyFailure': 'IMAGE',
- 'Missing': 'MISSING',
- 'Pass': 'PASS',
- 'Rebaseline': 'REBASELINE',
- 'Skip': 'SKIP',
- 'Slow': 'SLOW',
- 'Timeout': 'TIMEOUT',
- 'WontFix': 'WONTFIX',
- }
-
- _inverted_expectation_tokens = dict([(value, name) for name, value in _expectation_tokens.iteritems()] +
- [('TEXT', 'Failure'), ('IMAGE+TEXT', 'Failure'), ('AUDIO', 'Failure')])
-
- # FIXME: Seems like these should be classmethods on TestExpectationLine instead of TestExpectationParser.
- @classmethod
- def _tokenize_line(cls, filename, expectation_string, line_number):
- """Tokenizes a line from TestExpectations and returns an unparsed TestExpectationLine instance using the old format.
-
- The new format for a test expectation line is:
-
- [[bugs] [ "[" <configuration modifiers> "]" <name> [ "[" <expectations> "]" ["#" <comment>]
-
- Any errant whitespace is not preserved.
-
- """
- expectation_line = TestExpectationLine()
- expectation_line.original_string = expectation_string
- expectation_line.filename = filename
- expectation_line.line_number = line_number
-
- comment_index = expectation_string.find("#")
- if comment_index == -1:
- comment_index = len(expectation_string)
- else:
- expectation_line.comment = expectation_string[comment_index + 1:]
-
- remaining_string = re.sub(r"\s+", " ", expectation_string[:comment_index].strip())
- if len(remaining_string) == 0:
- return expectation_line
-
- # special-case parsing this so that we fail immediately instead of treating this as a test name
- if remaining_string.startswith('//'):
- expectation_line.warnings = ['use "#" instead of "//" for comments']
- return expectation_line
-
- bugs = []
- modifiers = []
- name = None
- expectations = []
- warnings = []
-
- WEBKIT_BUG_PREFIX = 'webkit.org/b/'
-
- tokens = remaining_string.split()
- state = 'start'
- for token in tokens:
- if token.startswith(WEBKIT_BUG_PREFIX) or token.startswith('Bug('):
- if state != 'start':
- warnings.append('"%s" is not at the start of the line.' % token)
- break
- if token.startswith(WEBKIT_BUG_PREFIX):
- bugs.append(token.replace(WEBKIT_BUG_PREFIX, 'BUGWK'))
- else:
- match = re.match('Bug\((\w+)\)$', token)
- if not match:
- warnings.append('unrecognized bug identifier "%s"' % token)
- break
- else:
- bugs.append('BUG' + match.group(1).upper())
- elif token.startswith('BUG'):
- warnings.append('unrecognized old-style bug identifier "%s"' % token)
- break
- elif token == '[':
- if state == 'start':
- state = 'configuration'
- elif state == 'name_found':
- state = 'expectations'
- else:
- warnings.append('unexpected "["')
- break
- elif token == ']':
- if state == 'configuration':
- state = 'name'
- elif state == 'expectations':
- state = 'done'
- else:
- warnings.append('unexpected "]"')
- break
- elif token in ('//', ':', '='):
- warnings.append('"%s" is not legal in the new TestExpectations syntax.' % token)
- break
- elif state == 'configuration':
- modifiers.append(cls._configuration_tokens.get(token, token))
- elif state == 'expectations':
- if token in ('Rebaseline', 'Skip', 'Slow', 'WontFix'):
- modifiers.append(token.upper())
- elif token not in cls._expectation_tokens:
- warnings.append('Unrecognized expectation "%s"' % token)
- else:
- expectations.append(cls._expectation_tokens.get(token, token))
- elif state == 'name_found':
- warnings.append('expecting "[", "#", or end of line instead of "%s"' % token)
- break
- else:
- name = token
- state = 'name_found'
-
- if not warnings:
- if not name:
- warnings.append('Did not find a test name.')
- elif state not in ('name_found', 'done'):
- warnings.append('Missing a "]"')
-
- if 'WONTFIX' in modifiers and 'SKIP' not in modifiers and not expectations:
- modifiers.append('SKIP')
-
- if 'SKIP' in modifiers and expectations:
- # FIXME: This is really a semantic warning and shouldn't be here. Remove when we drop the old syntax.
- warnings.append('A test marked Skip must not have other expectations.')
- elif not expectations:
- if 'SKIP' not in modifiers and 'REBASELINE' not in modifiers and 'SLOW' not in modifiers:
- modifiers.append('SKIP')
- expectations = ['PASS']
-
- # FIXME: expectation line should just store bugs and modifiers separately.
- expectation_line.modifiers = bugs + modifiers
- expectation_line.expectations = expectations
- expectation_line.name = name
- expectation_line.warnings = warnings
- return expectation_line
-
- @classmethod
- def _split_space_separated(cls, space_separated_string):
- """Splits a space-separated string into an array."""
- return [part.strip() for part in space_separated_string.strip().split(' ')]
-
-
-class TestExpectationLine(object):
- """Represents a line in test expectations file."""
-
- def __init__(self):
- """Initializes a blank-line equivalent of an expectation."""
- self.original_string = None
- self.filename = None # this is the path to the expectations file for this line
- self.line_number = None
- self.name = None # this is the path in the line itself
- self.path = None # this is the normpath of self.name
- self.modifiers = []
- self.parsed_modifiers = []
- self.parsed_bug_modifiers = []
- self.matching_configurations = set()
- self.expectations = []
- self.parsed_expectations = set()
- self.comment = None
- self.matching_tests = []
- self.warnings = []
-
- def is_invalid(self):
- return self.warnings and self.warnings != [TestExpectationParser.MISSING_BUG_WARNING]
-
- def is_flaky(self):
- return len(self.parsed_expectations) > 1
-
- @staticmethod
- def create_passing_expectation(test):
- expectation_line = TestExpectationLine()
- expectation_line.name = test
- expectation_line.path = test
- expectation_line.parsed_expectations = set([PASS])
- expectation_line.expectations = set(['PASS'])
- expectation_line.matching_tests = [test]
- return expectation_line
-
- def to_string(self, test_configuration_converter, include_modifiers=True, include_expectations=True, include_comment=True):
- parsed_expectation_to_string = dict([[parsed_expectation, expectation_string] for expectation_string, parsed_expectation in TestExpectations.EXPECTATIONS.items()])
-
- if self.is_invalid():
- return self.original_string or ''
-
- if self.name is None:
- return '' if self.comment is None else "#%s" % self.comment
-
- if test_configuration_converter and self.parsed_bug_modifiers:
- specifiers_list = test_configuration_converter.to_specifiers_list(self.matching_configurations)
- result = []
- for specifiers in specifiers_list:
- # FIXME: this is silly that we join the modifiers and then immediately split them.
- modifiers = self._serialize_parsed_modifiers(test_configuration_converter, specifiers).split()
- expectations = self._serialize_parsed_expectations(parsed_expectation_to_string).split()
- result.append(self._format_line(modifiers, self.name, expectations, self.comment))
- return "\n".join(result) if result else None
-
- return self._format_line(self.modifiers, self.name, self.expectations, self.comment,
- include_modifiers, include_expectations, include_comment)
-
- def to_csv(self):
- # Note that this doesn't include the comments.
- return '%s,%s,%s' % (self.name, ' '.join(self.modifiers), ' '.join(self.expectations))
-
- def _serialize_parsed_expectations(self, parsed_expectation_to_string):
- result = []
- for index in TestExpectations.EXPECTATION_ORDER:
- if index in self.parsed_expectations:
- result.append(parsed_expectation_to_string[index])
- return ' '.join(result)
-
- def _serialize_parsed_modifiers(self, test_configuration_converter, specifiers):
- result = []
- if self.parsed_bug_modifiers:
- result.extend(sorted(self.parsed_bug_modifiers))
- result.extend(sorted(self.parsed_modifiers))
- result.extend(test_configuration_converter.specifier_sorter().sort_specifiers(specifiers))
- return ' '.join(result)
-
- @staticmethod
- def _format_line(modifiers, name, expectations, comment, include_modifiers=True, include_expectations=True, include_comment=True):
- bugs = []
- new_modifiers = []
- new_expectations = []
- for modifier in modifiers:
- modifier = modifier.upper()
- if modifier.startswith('BUGWK'):
- bugs.append('webkit.org/b/' + modifier.replace('BUGWK', ''))
- elif modifier.startswith('BUGCR'):
- bugs.append('crbug.com/' + modifier.replace('BUGCR', ''))
- elif modifier.startswith('BUG'):
- # FIXME: we should preserve case once we can drop the old syntax.
- bugs.append('Bug(' + modifier[3:].lower() + ')')
- elif modifier in ('SLOW', 'SKIP', 'REBASELINE', 'WONTFIX'):
- new_expectations.append(TestExpectationParser._inverted_expectation_tokens.get(modifier))
- else:
- new_modifiers.append(TestExpectationParser._inverted_configuration_tokens.get(modifier, modifier))
-
- for expectation in expectations:
- expectation = expectation.upper()
- new_expectations.append(TestExpectationParser._inverted_expectation_tokens.get(expectation, expectation))
-
- result = ''
- if include_modifiers and (bugs or new_modifiers):
- if bugs:
- result += ' '.join(bugs) + ' '
- if new_modifiers:
- result += '[ %s ] ' % ' '.join(new_modifiers)
- result += name
- if include_expectations and new_expectations and set(new_expectations) != set(['Skip', 'Pass']):
- result += ' [ %s ]' % ' '.join(sorted(set(new_expectations)))
- if include_comment and comment is not None:
- result += " #%s" % comment
- return result
-
-
-# FIXME: Refactor API to be a proper CRUD.
-class TestExpectationsModel(object):
- """Represents relational store of all expectations and provides CRUD semantics to manage it."""
-
- def __init__(self, shorten_filename=None):
- # Maps a test to its list of expectations.
- self._test_to_expectations = {}
-
- # Maps a test to list of its modifiers (string values)
- self._test_to_modifiers = {}
-
- # Maps a test to a TestExpectationLine instance.
- self._test_to_expectation_line = {}
-
- self._modifier_to_tests = self._dict_of_sets(TestExpectations.MODIFIERS)
- self._expectation_to_tests = self._dict_of_sets(TestExpectations.EXPECTATIONS)
- self._timeline_to_tests = self._dict_of_sets(TestExpectations.TIMELINES)
- self._result_type_to_tests = self._dict_of_sets(TestExpectations.RESULT_TYPES)
-
- self._shorten_filename = shorten_filename or (lambda x: x)
-
- def _dict_of_sets(self, strings_to_constants):
- """Takes a dict of strings->constants and returns a dict mapping
- each constant to an empty set."""
- d = {}
- for c in strings_to_constants.values():
- d[c] = set()
- return d
-
- def get_test_set(self, modifier, expectation=None, include_skips=True):
- if expectation is None:
- tests = self._modifier_to_tests[modifier]
- else:
- tests = (self._expectation_to_tests[expectation] &
- self._modifier_to_tests[modifier])
-
- if not include_skips:
- tests = tests - self.get_test_set(SKIP, expectation)
-
- return tests
-
- def get_test_set_for_keyword(self, keyword):
- # FIXME: get_test_set() is an awkward public interface because it requires
- # callers to know the difference between modifiers and expectations. We
- # should replace that with this where possible.
- expectation_enum = TestExpectations.EXPECTATIONS.get(keyword.lower(), None)
- if expectation_enum is not None:
- return self._expectation_to_tests[expectation_enum]
- modifier_enum = TestExpectations.MODIFIERS.get(keyword.lower(), None)
- if modifier_enum is not None:
- return self._modifier_to_tests[modifier_enum]
-
- # We must not have an index on this modifier.
- matching_tests = set()
- for test, modifiers in self._test_to_modifiers.iteritems():
- if keyword.lower() in modifiers:
- matching_tests.add(test)
- return matching_tests
-
- def get_tests_with_result_type(self, result_type):
- return self._result_type_to_tests[result_type]
-
- def get_tests_with_timeline(self, timeline):
- return self._timeline_to_tests[timeline]
-
- def get_modifiers(self, test):
- """This returns modifiers for the given test (the modifiers plus the BUGXXXX identifier). This is used by the LTTF dashboard."""
- return self._test_to_modifiers[test]
-
- def has_modifier(self, test, modifier):
- return test in self._modifier_to_tests[modifier]
-
- def has_keyword(self, test, keyword):
- return (keyword.upper() in self.get_expectations_string(test) or
- keyword.lower() in self.get_modifiers(test))
-
- def has_test(self, test):
- return test in self._test_to_expectation_line
-
- def get_expectation_line(self, test):
- return self._test_to_expectation_line.get(test)
-
- def get_expectations(self, test):
- return self._test_to_expectations[test]
-
- def get_expectations_string(self, test):
- """Returns the expectatons for the given test as an uppercase string.
- If there are no expectations for the test, then "PASS" is returned."""
- expectations = self.get_expectations(test)
- retval = []
-
- for expectation in expectations:
- retval.append(self.expectation_to_string(expectation))
-
- return " ".join(retval)
-
- def expectation_to_string(self, expectation):
- """Return the uppercased string equivalent of a given expectation."""
- for item in TestExpectations.EXPECTATIONS.items():
- if item[1] == expectation:
- return item[0].upper()
- raise ValueError(expectation)
-
-
- def add_expectation_line(self, expectation_line, in_skipped=False):
- """Returns a list of warnings encountered while matching modifiers."""
-
- if expectation_line.is_invalid():
- return
-
- for test in expectation_line.matching_tests:
- if not in_skipped and self._already_seen_better_match(test, expectation_line):
- continue
-
- self._clear_expectations_for_test(test)
- self._test_to_expectation_line[test] = expectation_line
- self._add_test(test, expectation_line)
-
- def _add_test(self, test, expectation_line):
- """Sets the expected state for a given test.
-
- This routine assumes the test has not been added before. If it has,
- use _clear_expectations_for_test() to reset the state prior to
- calling this."""
- self._test_to_expectations[test] = expectation_line.parsed_expectations
- for expectation in expectation_line.parsed_expectations:
- self._expectation_to_tests[expectation].add(test)
-
- self._test_to_modifiers[test] = expectation_line.modifiers
- for modifier in expectation_line.parsed_modifiers:
- mod_value = TestExpectations.MODIFIERS[modifier]
- self._modifier_to_tests[mod_value].add(test)
-
- if TestExpectationParser.WONTFIX_MODIFIER in expectation_line.parsed_modifiers:
- self._timeline_to_tests[WONTFIX].add(test)
- else:
- self._timeline_to_tests[NOW].add(test)
-
- if TestExpectationParser.SKIP_MODIFIER in expectation_line.parsed_modifiers:
- self._result_type_to_tests[SKIP].add(test)
- elif expectation_line.parsed_expectations == set([PASS]):
- self._result_type_to_tests[PASS].add(test)
- elif expectation_line.is_flaky():
- self._result_type_to_tests[FLAKY].add(test)
- else:
- # FIXME: What is this?
- self._result_type_to_tests[FAIL].add(test)
-
- def _clear_expectations_for_test(self, test):
- """Remove prexisting expectations for this test.
- This happens if we are seeing a more precise path
- than a previous listing.
- """
- if self.has_test(test):
- self._test_to_expectations.pop(test, '')
- self._remove_from_sets(test, self._expectation_to_tests)
- self._remove_from_sets(test, self._modifier_to_tests)
- self._remove_from_sets(test, self._timeline_to_tests)
- self._remove_from_sets(test, self._result_type_to_tests)
-
- def _remove_from_sets(self, test, dict_of_sets_of_tests):
- """Removes the given test from the sets in the dictionary.
-
- Args:
- test: test to look for
- dict: dict of sets of files"""
- for set_of_tests in dict_of_sets_of_tests.itervalues():
- if test in set_of_tests:
- set_of_tests.remove(test)
-
- def _already_seen_better_match(self, test, expectation_line):
- """Returns whether we've seen a better match already in the file.
-
- Returns True if we've already seen a expectation_line.name that matches more of the test
- than this path does
- """
- # FIXME: See comment below about matching test configs and specificity.
- if not self.has_test(test):
- # We've never seen this test before.
- return False
-
- prev_expectation_line = self._test_to_expectation_line[test]
-
- if prev_expectation_line.filename != expectation_line.filename:
- # We've moved on to a new expectation file, which overrides older ones.
- return False
-
- if len(prev_expectation_line.path) > len(expectation_line.path):
- # The previous path matched more of the test.
- return True
-
- if len(prev_expectation_line.path) < len(expectation_line.path):
- # This path matches more of the test.
- return False
-
- # At this point we know we have seen a previous exact match on this
- # base path, so we need to check the two sets of modifiers.
-
- # FIXME: This code was originally designed to allow lines that matched
- # more modifiers to override lines that matched fewer modifiers.
- # However, we currently view these as errors.
- #
- # To use the "more modifiers wins" policy, change the errors for overrides
- # to be warnings and return False".
-
- if prev_expectation_line.matching_configurations == expectation_line.matching_configurations:
- expectation_line.warnings.append('Duplicate or ambiguous entry lines %s:%d and %s:%d.' % (
- self._shorten_filename(prev_expectation_line.filename), prev_expectation_line.line_number,
- self._shorten_filename(expectation_line.filename), expectation_line.line_number))
- return True
-
- if prev_expectation_line.matching_configurations >= expectation_line.matching_configurations:
- expectation_line.warnings.append('More specific entry for %s on line %s:%d overrides line %s:%d.' % (expectation_line.name,
- self._shorten_filename(prev_expectation_line.filename), prev_expectation_line.line_number,
- self._shorten_filename(expectation_line.filename), expectation_line.line_number))
- # FIXME: return False if we want more specific to win.
- return True
-
- if prev_expectation_line.matching_configurations <= expectation_line.matching_configurations:
- expectation_line.warnings.append('More specific entry for %s on line %s:%d overrides line %s:%d.' % (expectation_line.name,
- self._shorten_filename(expectation_line.filename), expectation_line.line_number,
- self._shorten_filename(prev_expectation_line.filename), prev_expectation_line.line_number))
- return True
-
- if prev_expectation_line.matching_configurations & expectation_line.matching_configurations:
- expectation_line.warnings.append('Entries for %s on lines %s:%d and %s:%d match overlapping sets of configurations.' % (expectation_line.name,
- self._shorten_filename(prev_expectation_line.filename), prev_expectation_line.line_number,
- self._shorten_filename(expectation_line.filename), expectation_line.line_number))
- return True
-
- # Configuration sets are disjoint, then.
- return False
-
-
-class TestExpectations(object):
- """Test expectations consist of lines with specifications of what
- to expect from layout test cases. The test cases can be directories
- in which case the expectations apply to all test cases in that
- directory and any subdirectory. The format is along the lines of:
-
- LayoutTests/fast/js/fixme.js [ Failure ]
- LayoutTests/fast/js/flaky.js [ Failure Pass ]
- LayoutTests/fast/js/crash.js [ Crash Failure Pass Timeout ]
- ...
-
- To add modifiers:
- LayoutTests/fast/js/no-good.js
- [ Debug ] LayoutTests/fast/js/no-good.js [ Pass Timeout ]
- [ Debug ] LayoutTests/fast/js/no-good.js [ Pass Skip Timeout ]
- [ Linux Debug ] LayoutTests/fast/js/no-good.js [ Pass Skip Timeout ]
- [ Linux Win ] LayoutTests/fast/js/no-good.js [ Pass Skip Timeout ]
-
- Skip: Doesn't run the test.
- Slow: The test takes a long time to run, but does not timeout indefinitely.
- WontFix: For tests that we never intend to pass on a given platform (treated like Skip).
-
- Notes:
- -A test cannot be both SLOW and TIMEOUT
- -A test can be included twice, but not via the same path.
- -If a test is included twice, then the more precise path wins.
- -CRASH tests cannot be WONTFIX
- """
-
- # FIXME: Update to new syntax once the old format is no longer supported.
- EXPECTATIONS = {'pass': PASS,
- 'audio': AUDIO,
- 'fail': FAIL,
- 'image': IMAGE,
- 'image+text': IMAGE_PLUS_TEXT,
- 'text': TEXT,
- 'timeout': TIMEOUT,
- 'crash': CRASH,
- 'missing': MISSING,
- 'skip': SKIP}
-
- # (aggregated by category, pass/fail/skip, type)
- EXPECTATION_DESCRIPTIONS = {SKIP: 'skipped',
- PASS: 'passes',
- FAIL: 'failures',
- IMAGE: 'image-only failures',
- TEXT: 'text-only failures',
- IMAGE_PLUS_TEXT: 'image and text failures',
- AUDIO: 'audio failures',
- CRASH: 'crashes',
- TIMEOUT: 'timeouts',
- MISSING: 'missing results'}
-
- EXPECTATION_ORDER = (PASS, CRASH, TIMEOUT, MISSING, FAIL, IMAGE, SKIP)
-
- BUILD_TYPES = ('debug', 'release')
-
- MODIFIERS = {TestExpectationParser.SKIP_MODIFIER: SKIP,
- TestExpectationParser.WONTFIX_MODIFIER: WONTFIX,
- TestExpectationParser.SLOW_MODIFIER: SLOW,
- TestExpectationParser.REBASELINE_MODIFIER: REBASELINE,
- 'none': NONE}
-
- TIMELINES = {TestExpectationParser.WONTFIX_MODIFIER: WONTFIX,
- 'now': NOW}
-
- RESULT_TYPES = {'skip': SKIP,
- 'pass': PASS,
- 'fail': FAIL,
- 'flaky': FLAKY}
-
- @classmethod
- def expectation_from_string(cls, string):
- assert(' ' not in string) # This only handles one expectation at a time.
- return cls.EXPECTATIONS.get(string.lower())
-
- @staticmethod
- def result_was_expected(result, expected_results, test_needs_rebaselining, test_is_skipped):
- """Returns whether we got a result we were expecting.
- Args:
- result: actual result of a test execution
- expected_results: set of results listed in test_expectations
- test_needs_rebaselining: whether test was marked as REBASELINE
- test_is_skipped: whether test was marked as SKIP"""
- if result in expected_results:
- return True
- if result in (TEXT, IMAGE_PLUS_TEXT, AUDIO) and (FAIL in expected_results):
- return True
- if result == MISSING and test_needs_rebaselining:
- return True
- if result == SKIP and test_is_skipped:
- return True
- return False
-
- @staticmethod
- def remove_pixel_failures(expected_results):
- """Returns a copy of the expected results for a test, except that we
- drop any pixel failures and return the remaining expectations. For example,
- if we're not running pixel tests, then tests expected to fail as IMAGE
- will PASS."""
- expected_results = expected_results.copy()
- if IMAGE in expected_results:
- expected_results.remove(IMAGE)
- expected_results.add(PASS)
- return expected_results
-
- @staticmethod
- def has_pixel_failures(actual_results):
- return IMAGE in actual_results or FAIL in actual_results
-
- @staticmethod
- def suffixes_for_expectations(expectations):
- suffixes = set()
- if IMAGE in expectations:
- suffixes.add('png')
- if FAIL in expectations:
- suffixes.add('txt')
- suffixes.add('png')
- suffixes.add('wav')
- return set(suffixes)
-
- # FIXME: This constructor does too much work. We should move the actual parsing of
- # the expectations into separate routines so that linting and handling overrides
- # can be controlled separately, and the constructor can be more of a no-op.
- def __init__(self, port, tests=None, include_generic=True, include_overrides=True, expectations_to_lint=None):
- self._full_test_list = tests
- self._test_config = port.test_configuration()
- self._is_lint_mode = expectations_to_lint is not None
- self._model = TestExpectationsModel(self._shorten_filename)
- self._parser = TestExpectationParser(port, tests, self._is_lint_mode)
- self._port = port
- self._skipped_tests_warnings = []
- self._expectations = []
-
- expectations_dict = expectations_to_lint or port.expectations_dict()
-
- expectations_dict_index = 0
- # Populate generic expectations (if enabled by include_generic).
- if port.path_to_generic_test_expectations_file() in expectations_dict:
- if include_generic:
- expectations = self._parser.parse(expectations_dict.keys()[expectations_dict_index], expectations_dict.values()[expectations_dict_index])
- self._add_expectations(expectations)
- self._expectations += expectations
- expectations_dict_index += 1
-
- # Populate default port expectations (always enabled).
- if len(expectations_dict) > expectations_dict_index:
- expectations = self._parser.parse(expectations_dict.keys()[expectations_dict_index], expectations_dict.values()[expectations_dict_index])
- self._add_expectations(expectations)
- self._expectations += expectations
- expectations_dict_index += 1
-
- # Populate override expectations (if enabled by include_overrides).
- while len(expectations_dict) > expectations_dict_index and include_overrides:
- expectations = self._parser.parse(expectations_dict.keys()[expectations_dict_index], expectations_dict.values()[expectations_dict_index])
- self._add_expectations(expectations)
- self._expectations += expectations
- expectations_dict_index += 1
-
- # FIXME: move ignore_tests into port.skipped_layout_tests()
- self.add_skipped_tests(port.skipped_layout_tests(tests).union(set(port.get_option('ignore_tests', []))))
-
- self._has_warnings = False
- self._report_warnings()
- self._process_tests_without_expectations()
-
- # TODO(ojan): Allow for removing skipped tests when getting the list of
- # tests to run, but not when getting metrics.
- def model(self):
- return self._model
-
- def get_rebaselining_failures(self):
- return self._model.get_test_set(REBASELINE)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def get_expectations(self, test):
- return self._model.get_expectations(test)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def has_modifier(self, test, modifier):
- return self._model.has_modifier(test, modifier)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def get_tests_with_result_type(self, result_type):
- return self._model.get_tests_with_result_type(result_type)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def get_test_set(self, modifier, expectation=None, include_skips=True):
- return self._model.get_test_set(modifier, expectation, include_skips)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def get_modifiers(self, test):
- return self._model.get_modifiers(test)
-
- # FIXME: Change the callsites to use TestExpectationsModel and remove.
- def get_tests_with_timeline(self, timeline):
- return self._model.get_tests_with_timeline(timeline)
-
- def get_expectations_string(self, test):
- return self._model.get_expectations_string(test)
-
- def expectation_to_string(self, expectation):
- return self._model.expectation_to_string(expectation)
-
- def matches_an_expected_result(self, test, result, pixel_tests_are_enabled):
- expected_results = self._model.get_expectations(test)
- if not pixel_tests_are_enabled:
- expected_results = self.remove_pixel_failures(expected_results)
- return self.result_was_expected(result,
- expected_results,
- self.is_rebaselining(test),
- self._model.has_modifier(test, SKIP))
-
- def is_rebaselining(self, test):
- return self._model.has_modifier(test, REBASELINE)
-
- def _shorten_filename(self, filename):
- if filename.startswith(self._port.path_from_webkit_base()):
- return self._port.host.filesystem.relpath(filename, self._port.path_from_webkit_base())
- return filename
-
- def _report_warnings(self):
- warnings = []
- for expectation in self._expectations:
- for warning in expectation.warnings:
- warnings.append('%s:%d %s %s' % (self._shorten_filename(expectation.filename), expectation.line_number,
- warning, expectation.name if expectation.expectations else expectation.original_string))
-
- if warnings:
- self._has_warnings = True
- if self._is_lint_mode:
- raise ParseError(warnings)
- _log.warning('--lint-test-files warnings:')
- for warning in warnings:
- _log.warning(warning)
- _log.warning('')
-
- def _process_tests_without_expectations(self):
- if self._full_test_list:
- for test in self._full_test_list:
- if not self._model.has_test(test):
- self._model.add_expectation_line(TestExpectationLine.create_passing_expectation(test))
-
- def has_warnings(self):
- return self._has_warnings
-
- def remove_configuration_from_test(self, test, test_configuration):
- expectations_to_remove = []
- modified_expectations = []
-
- for expectation in self._expectations:
- if expectation.name != test or expectation.is_flaky() or not expectation.parsed_expectations:
- continue
- if iter(expectation.parsed_expectations).next() not in (FAIL, IMAGE):
- continue
- if test_configuration not in expectation.matching_configurations:
- continue
-
- expectation.matching_configurations.remove(test_configuration)
- if expectation.matching_configurations:
- modified_expectations.append(expectation)
- else:
- expectations_to_remove.append(expectation)
-
- for expectation in expectations_to_remove:
- self._expectations.remove(expectation)
-
- return self.list_to_string(self._expectations, self._parser._test_configuration_converter, modified_expectations)
-
- def remove_rebaselined_tests(self, except_these_tests, filename):
- """Returns a copy of the expectations in the file with the tests removed."""
- def without_rebaseline_modifier(expectation):
- return (expectation.filename == filename and
- not (not expectation.is_invalid() and
- expectation.name in except_these_tests and
- 'rebaseline' in expectation.parsed_modifiers))
-
- return self.list_to_string(filter(without_rebaseline_modifier, self._expectations), reconstitute_only_these=[])
-
- def _add_expectations(self, expectation_list):
- for expectation_line in expectation_list:
- if not expectation_line.expectations:
- continue
-
- if self._is_lint_mode or self._test_config in expectation_line.matching_configurations:
- self._model.add_expectation_line(expectation_line)
-
- def add_skipped_tests(self, tests_to_skip):
- if not tests_to_skip:
- return
- for test in self._expectations:
- if test.name and test.name in tests_to_skip:
- test.warnings.append('%s:%d %s is also in a Skipped file.' % (test.filename, test.line_number, test.name))
-
- for test_name in tests_to_skip:
- expectation_line = self._parser.expectation_for_skipped_test(test_name)
- self._model.add_expectation_line(expectation_line, in_skipped=True)
-
- @staticmethod
- def list_to_string(expectation_lines, test_configuration_converter=None, reconstitute_only_these=None):
- def serialize(expectation_line):
- # If reconstitute_only_these is an empty list, we want to return original_string.
- # So we need to compare reconstitute_only_these to None, not just check if it's falsey.
- if reconstitute_only_these is None or expectation_line in reconstitute_only_these:
- return expectation_line.to_string(test_configuration_converter)
- return expectation_line.original_string
-
- def nones_out(expectation_line):
- return expectation_line is not None
-
- return "\n".join(filter(nones_out, map(serialize, expectation_lines)))
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py b/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py
deleted file mode 100644
index 621188c19..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_expectations_unittest.py
+++ /dev/null
@@ -1,707 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.outputcapture import OutputCapture
-
-from webkitpy.layout_tests.models.test_configuration import *
-from webkitpy.layout_tests.models.test_expectations import *
-from webkitpy.layout_tests.models.test_configuration import *
-
-try:
- from collections import OrderedDict
-except ImportError:
- # Needed for Python < 2.7
- from webkitpy.thirdparty.ordered_dict import OrderedDict
-
-
-class Base(unittest.TestCase):
- # Note that all of these tests are written assuming the configuration
- # being tested is Windows XP, Release build.
-
- def __init__(self, testFunc):
- host = MockHost()
- self._port = host.port_factory.get('test-win-xp', None)
- self._exp = None
- unittest.TestCase.__init__(self, testFunc)
-
- def get_test(self, test_name):
- # FIXME: Remove this routine and just reference test names directly.
- return test_name
-
- def get_basic_tests(self):
- return [self.get_test('failures/expected/text.html'),
- self.get_test('failures/expected/image_checksum.html'),
- self.get_test('failures/expected/crash.html'),
- self.get_test('failures/expected/missing_text.html'),
- self.get_test('failures/expected/image.html'),
- self.get_test('passes/text.html')]
-
- def get_basic_expectations(self):
- return """
-Bug(test) failures/expected/text.html [ Failure ]
-Bug(test) failures/expected/crash.html [ WontFix ]
-Bug(test) failures/expected/missing_image.html [ Rebaseline Missing ]
-Bug(test) failures/expected/image_checksum.html [ WontFix ]
-Bug(test) failures/expected/image.html [ WontFix Mac ]
-"""
-
- def parse_exp(self, expectations, overrides=None, is_lint_mode=False):
- expectations_dict = OrderedDict()
- expectations_dict['expectations'] = expectations
- if overrides:
- expectations_dict['overrides'] = overrides
- self._port.expectations_dict = lambda: expectations_dict
- expectations_to_lint = expectations_dict if is_lint_mode else None
- self._exp = TestExpectations(self._port, self.get_basic_tests(), expectations_to_lint=expectations_to_lint)
-
- def assert_exp(self, test, result):
- self.assertEqual(self._exp.get_expectations(self.get_test(test)),
- set([result]))
-
- def assert_bad_expectations(self, expectations, overrides=None):
- self.assertRaises(ParseError, self.parse_exp, expectations, is_lint_mode=True, overrides=overrides)
-
-
-class BasicTests(Base):
- def test_basic(self):
- self.parse_exp(self.get_basic_expectations())
- self.assert_exp('failures/expected/text.html', FAIL)
- self.assert_exp('failures/expected/image_checksum.html', PASS)
- self.assert_exp('passes/text.html', PASS)
- self.assert_exp('failures/expected/image.html', PASS)
-
-
-class MiscTests(Base):
- def test_multiple_results(self):
- self.parse_exp('Bug(x) failures/expected/text.html [ Crash Failure ]')
- self.assertEqual(self._exp.get_expectations(
- self.get_test('failures/expected/text.html')),
- set([FAIL, CRASH]))
-
- def test_result_was_expected(self):
- # test basics
- self.assertEqual(TestExpectations.result_was_expected(PASS, set([PASS]), test_needs_rebaselining=False, test_is_skipped=False), True)
- self.assertEqual(TestExpectations.result_was_expected(FAIL, set([PASS]), test_needs_rebaselining=False, test_is_skipped=False), False)
-
- # test handling of SKIPped tests and results
- self.assertEqual(TestExpectations.result_was_expected(SKIP, set([CRASH]), test_needs_rebaselining=False, test_is_skipped=True), True)
- self.assertEqual(TestExpectations.result_was_expected(SKIP, set([CRASH]), test_needs_rebaselining=False, test_is_skipped=False), False)
-
- # test handling of MISSING results and the REBASELINE modifier
- self.assertEqual(TestExpectations.result_was_expected(MISSING, set([PASS]), test_needs_rebaselining=True, test_is_skipped=False), True)
- self.assertEqual(TestExpectations.result_was_expected(MISSING, set([PASS]), test_needs_rebaselining=False, test_is_skipped=False), False)
-
- def test_remove_pixel_failures(self):
- self.assertEqual(TestExpectations.remove_pixel_failures(set([FAIL])), set([FAIL]))
- self.assertEqual(TestExpectations.remove_pixel_failures(set([PASS])), set([PASS]))
- self.assertEqual(TestExpectations.remove_pixel_failures(set([IMAGE])), set([PASS]))
- self.assertEqual(TestExpectations.remove_pixel_failures(set([FAIL])), set([FAIL]))
- self.assertEqual(TestExpectations.remove_pixel_failures(set([PASS, IMAGE, CRASH])), set([PASS, CRASH]))
-
- def test_suffixes_for_expectations(self):
- self.assertEqual(TestExpectations.suffixes_for_expectations(set([FAIL])), set(['txt', 'png', 'wav']))
- self.assertEqual(TestExpectations.suffixes_for_expectations(set([IMAGE])), set(['png']))
- self.assertEqual(TestExpectations.suffixes_for_expectations(set([FAIL, IMAGE, CRASH])), set(['txt', 'png', 'wav']))
- self.assertEqual(TestExpectations.suffixes_for_expectations(set()), set())
-
- def test_category_expectations(self):
- # This test checks unknown tests are not present in the
- # expectations and that known test part of a test category is
- # present in the expectations.
- exp_str = 'Bug(x) failures/expected [ WontFix ]'
- self.parse_exp(exp_str)
- test_name = 'failures/expected/unknown-test.html'
- unknown_test = self.get_test(test_name)
- self.assertRaises(KeyError, self._exp.get_expectations,
- unknown_test)
- self.assert_exp('failures/expected/crash.html', PASS)
-
- def test_get_modifiers(self):
- self.parse_exp(self.get_basic_expectations())
- self.assertEqual(self._exp.get_modifiers(
- self.get_test('passes/text.html')), [])
-
- def test_get_expectations_string(self):
- self.parse_exp(self.get_basic_expectations())
- self.assertEqual(self._exp.get_expectations_string(
- self.get_test('failures/expected/text.html')),
- 'FAIL')
-
- def test_expectation_to_string(self):
- # Normal cases are handled by other tests.
- self.parse_exp(self.get_basic_expectations())
- self.assertRaises(ValueError, self._exp.expectation_to_string,
- -1)
-
- def test_get_test_set(self):
- # Handle some corner cases for this routine not covered by other tests.
- self.parse_exp(self.get_basic_expectations())
- s = self._exp.get_test_set(WONTFIX)
- self.assertEqual(s,
- set([self.get_test('failures/expected/crash.html'),
- self.get_test('failures/expected/image_checksum.html')]))
-
- def test_parse_warning(self):
- try:
- filesystem = self._port.host.filesystem
- filesystem.write_text_file(filesystem.join(self._port.layout_tests_dir(), 'disabled-test.html-disabled'), 'content')
- self.get_test('disabled-test.html-disabled'),
- self.parse_exp("[ FOO ] failures/expected/text.html [ Failure ]\n"
- "Bug(rniwa) non-existent-test.html [ Failure ]\n"
- "Bug(rniwa) disabled-test.html-disabled [ ImageOnlyFailure ]", is_lint_mode=True)
- self.assertFalse(True, "ParseError wasn't raised")
- except ParseError, e:
- warnings = ("expectations:1 Unrecognized modifier 'foo' failures/expected/text.html\n"
- "expectations:2 Path does not exist. non-existent-test.html")
- self.assertEqual(str(e), warnings)
-
- def test_parse_warnings_are_logged_if_not_in_lint_mode(self):
- oc = OutputCapture()
- try:
- oc.capture_output()
- self.parse_exp('-- this should be a syntax error', is_lint_mode=False)
- finally:
- _, _, logs = oc.restore_output()
- self.assertNotEquals(logs, '')
-
- def test_error_on_different_platform(self):
- # parse_exp uses a Windows port. Assert errors on Mac show up in lint mode.
- self.assertRaises(ParseError, self.parse_exp,
- 'Bug(test) [ Mac ] failures/expected/text.html [ Failure ]\nBug(test) [ Mac ] failures/expected/text.html [ Failure ]',
- is_lint_mode=True)
-
- def test_error_on_different_build_type(self):
- # parse_exp uses a Release port. Assert errors on DEBUG show up in lint mode.
- self.assertRaises(ParseError, self.parse_exp,
- 'Bug(test) [ Debug ] failures/expected/text.html [ Failure ]\nBug(test) [ Debug ] failures/expected/text.html [ Failure ]',
- is_lint_mode=True)
-
- def test_overrides(self):
- self.parse_exp("Bug(exp) failures/expected/text.html [ Failure ]",
- "Bug(override) failures/expected/text.html [ ImageOnlyFailure ]")
- self.assert_exp('failures/expected/text.html', IMAGE)
-
- def test_overrides__directory(self):
- self.parse_exp("Bug(exp) failures/expected/text.html [ Failure ]",
- "Bug(override) failures/expected [ Crash ]")
- self.assert_exp('failures/expected/text.html', CRASH)
- self.assert_exp('failures/expected/image.html', CRASH)
-
- def test_overrides__duplicate(self):
- self.assert_bad_expectations("Bug(exp) failures/expected/text.html [ Failure ]",
- "Bug(override) failures/expected/text.html [ ImageOnlyFailure ]\n"
- "Bug(override) failures/expected/text.html [ Crash ]\n")
-
- def test_pixel_tests_flag(self):
- def match(test, result, pixel_tests_enabled):
- return self._exp.matches_an_expected_result(
- self.get_test(test), result, pixel_tests_enabled)
-
- self.parse_exp(self.get_basic_expectations())
- self.assertTrue(match('failures/expected/text.html', FAIL, True))
- self.assertTrue(match('failures/expected/text.html', FAIL, False))
- self.assertFalse(match('failures/expected/text.html', CRASH, True))
- self.assertFalse(match('failures/expected/text.html', CRASH, False))
- self.assertTrue(match('failures/expected/image_checksum.html', PASS,
- True))
- self.assertTrue(match('failures/expected/image_checksum.html', PASS,
- False))
- self.assertTrue(match('failures/expected/crash.html', PASS, False))
- self.assertTrue(match('passes/text.html', PASS, False))
-
- def test_more_specific_override_resets_skip(self):
- self.parse_exp("Bug(x) failures/expected [ Skip ]\n"
- "Bug(x) failures/expected/text.html [ ImageOnlyFailure ]\n")
- self.assert_exp('failures/expected/text.html', IMAGE)
- self.assertFalse(self._port._filesystem.join(self._port.layout_tests_dir(),
- 'failures/expected/text.html') in
- self._exp.get_tests_with_result_type(SKIP))
-
-
-class SkippedTests(Base):
- def check(self, expectations, overrides, skips, lint=False):
- port = MockHost().port_factory.get('qt')
- port._filesystem.write_text_file(port._filesystem.join(port.layout_tests_dir(), 'failures/expected/text.html'), 'foo')
- expectations_dict = OrderedDict()
- expectations_dict['expectations'] = expectations
- if overrides:
- expectations_dict['overrides'] = overrides
- port.expectations_dict = lambda: expectations_dict
- port.skipped_layout_tests = lambda tests: set(skips)
- expectations_to_lint = expectations_dict if lint else None
- exp = TestExpectations(port, ['failures/expected/text.html'], expectations_to_lint=expectations_to_lint)
-
- # Check that the expectation is for BUG_DUMMY SKIP : ... [ Pass ]
- self.assertEqual(exp.get_modifiers('failures/expected/text.html'),
- [TestExpectationParser.DUMMY_BUG_MODIFIER, TestExpectationParser.SKIP_MODIFIER, TestExpectationParser.WONTFIX_MODIFIER])
- self.assertEqual(exp.get_expectations('failures/expected/text.html'), set([PASS]))
-
- def test_skipped_tests_work(self):
- self.check(expectations='', overrides=None, skips=['failures/expected/text.html'])
-
- def test_duplicate_skipped_test_fails_lint(self):
- self.assertRaises(ParseError, self.check, expectations='Bug(x) failures/expected/text.html [ Failure ]\n', overrides=None, skips=['failures/expected/text.html'], lint=True)
-
- def test_skipped_file_overrides_expectations(self):
- self.check(expectations='Bug(x) failures/expected/text.html [ Failure ]\n', overrides=None,
- skips=['failures/expected/text.html'])
-
- def test_skipped_dir_overrides_expectations(self):
- self.check(expectations='Bug(x) failures/expected/text.html [ Failure ]\n', overrides=None,
- skips=['failures/expected'])
-
- def test_skipped_file_overrides_overrides(self):
- self.check(expectations='', overrides='Bug(x) failures/expected/text.html [ Failure ]\n',
- skips=['failures/expected/text.html'])
-
- def test_skipped_dir_overrides_overrides(self):
- self.check(expectations='', overrides='Bug(x) failures/expected/text.html [ Failure ]\n',
- skips=['failures/expected'])
-
- def test_skipped_entry_dont_exist(self):
- port = MockHost().port_factory.get('qt')
- expectations_dict = OrderedDict()
- expectations_dict['expectations'] = ''
- port.expectations_dict = lambda: expectations_dict
- port.skipped_layout_tests = lambda tests: set(['foo/bar/baz.html'])
- capture = OutputCapture()
- capture.capture_output()
- exp = TestExpectations(port)
- _, _, logs = capture.restore_output()
- self.assertEqual('The following test foo/bar/baz.html from the Skipped list doesn\'t exist\n', logs)
-
-
-class ExpectationSyntaxTests(Base):
- def test_unrecognized_expectation(self):
- self.assert_bad_expectations('Bug(test) failures/expected/text.html [ Unknown ]')
-
- def test_macro(self):
- exp_str = 'Bug(test) [ Win ] failures/expected/text.html [ Failure ]'
- self.parse_exp(exp_str)
- self.assert_exp('failures/expected/text.html', FAIL)
-
- def assert_tokenize_exp(self, line, bugs=None, modifiers=None, expectations=None, warnings=None, comment=None, name='foo.html'):
- bugs = bugs or []
- modifiers = modifiers or []
- expectations = expectations or []
- warnings = warnings or []
- filename = 'TestExpectations'
- line_number = 1
- expectation_line = TestExpectationParser._tokenize_line(filename, line, line_number)
- self.assertEqual(expectation_line.warnings, warnings)
- self.assertEqual(expectation_line.name, name)
- self.assertEqual(expectation_line.filename, filename)
- self.assertEqual(expectation_line.line_number, line_number)
- if not warnings:
- self.assertEqual(expectation_line.modifiers, modifiers)
- self.assertEqual(expectation_line.expectations, expectations)
-
- def test_bare_name(self):
- self.assert_tokenize_exp('foo.html', modifiers=['SKIP'], expectations=['PASS'])
-
- def test_bare_name_and_bugs(self):
- self.assert_tokenize_exp('webkit.org/b/12345 foo.html', modifiers=['BUGWK12345', 'SKIP'], expectations=['PASS'])
- self.assert_tokenize_exp('Bug(dpranke) foo.html', modifiers=['BUGDPRANKE', 'SKIP'], expectations=['PASS'])
- self.assert_tokenize_exp('webkit.org/b/12345 webkit.org/b/34567 foo.html', modifiers=['BUGWK12345', 'BUGWK34567', 'SKIP'], expectations=['PASS'])
-
- def test_comments(self):
- self.assert_tokenize_exp("# comment", name=None, comment="# comment")
- self.assert_tokenize_exp("foo.html # comment", comment="# comment", expectations=['PASS'], modifiers=['SKIP'])
-
- def test_config_modifiers(self):
- self.assert_tokenize_exp('[ Mac ] foo.html', modifiers=['MAC', 'SKIP'], expectations=['PASS'])
- self.assert_tokenize_exp('[ Mac Vista ] foo.html', modifiers=['MAC', 'VISTA', 'SKIP'], expectations=['PASS'])
- self.assert_tokenize_exp('[ Mac ] foo.html [ Failure ] ', modifiers=['MAC'], expectations=['FAIL'])
-
- def test_unknown_config(self):
- self.assert_tokenize_exp('[ Foo ] foo.html ', modifiers=['Foo', 'SKIP'], expectations=['PASS'])
-
- def test_unknown_expectation(self):
- self.assert_tokenize_exp('foo.html [ Audio ]', warnings=['Unrecognized expectation "Audio"'])
-
- def test_skip(self):
- self.assert_tokenize_exp('foo.html [ Skip ]', modifiers=['SKIP'], expectations=['PASS'])
-
- def test_slow(self):
- self.assert_tokenize_exp('foo.html [ Slow ]', modifiers=['SLOW'], expectations=['PASS'])
-
- def test_wontfix(self):
- self.assert_tokenize_exp('foo.html [ WontFix ]', modifiers=['WONTFIX', 'SKIP'], expectations=['PASS'])
- self.assert_tokenize_exp('foo.html [ WontFix ImageOnlyFailure ]', modifiers=['WONTFIX'], expectations=['IMAGE'])
- self.assert_tokenize_exp('foo.html [ WontFix Pass Failure ]', modifiers=['WONTFIX'], expectations=['PASS', 'FAIL'])
-
- def test_blank_line(self):
- self.assert_tokenize_exp('', name=None)
-
- def test_warnings(self):
- self.assert_tokenize_exp('[ Mac ]', warnings=['Did not find a test name.'], name=None)
- self.assert_tokenize_exp('[ [', warnings=['unexpected "["'], name=None)
- self.assert_tokenize_exp('webkit.org/b/12345 ]', warnings=['unexpected "]"'], name=None)
-
- self.assert_tokenize_exp('foo.html webkit.org/b/12345 ]', warnings=['"webkit.org/b/12345" is not at the start of the line.'])
-
-
-class SemanticTests(Base):
- def test_bug_format(self):
- self.assertRaises(ParseError, self.parse_exp, 'BUG1234 failures/expected/text.html [ Failure ]', is_lint_mode=True)
-
- def test_bad_bugid(self):
- try:
- self.parse_exp('BUG1234 failures/expected/text.html [ Failure ]', is_lint_mode=True)
- self.fail('should have raised an error about a bad bug identifier')
- except ParseError, exp:
- self.assertEqual(len(exp.warnings), 1)
-
- def test_missing_bugid(self):
- self.parse_exp('failures/expected/text.html [ Failure ]')
- self.assertFalse(self._exp.has_warnings())
-
- self._port.warn_if_bug_missing_in_test_expectations = lambda: True
-
- self.parse_exp('failures/expected/text.html [ Failure ]')
- line = self._exp._model.get_expectation_line('failures/expected/text.html')
- self.assertFalse(line.is_invalid())
- self.assertEqual(line.warnings, ['Test lacks BUG modifier.'])
-
- def test_skip_and_wontfix(self):
- # Skip is not allowed to have other expectations as well, because those
- # expectations won't be exercised and may become stale .
- self.parse_exp('failures/expected/text.html [ Failure Skip ]')
- self.assertTrue(self._exp.has_warnings())
-
- self.parse_exp('failures/expected/text.html [ Crash WontFix ]')
- self.assertFalse(self._exp.has_warnings())
-
- self.parse_exp('failures/expected/text.html [ Pass WontFix ]')
- self.assertFalse(self._exp.has_warnings())
-
- def test_slow_and_timeout(self):
- # A test cannot be SLOW and expected to TIMEOUT.
- self.assertRaises(ParseError, self.parse_exp,
- 'Bug(test) failures/expected/timeout.html [ Slow Timeout ]', is_lint_mode=True)
-
- def test_rebaseline(self):
- # Can't lint a file w/ 'REBASELINE' in it.
- self.assertRaises(ParseError, self.parse_exp,
- 'Bug(test) failures/expected/text.html [ Failure Rebaseline ]',
- is_lint_mode=True)
-
- def test_duplicates(self):
- self.assertRaises(ParseError, self.parse_exp, """
-Bug(exp) failures/expected/text.html [ Failure ]
-Bug(exp) failures/expected/text.html [ ImageOnlyFailure ]""", is_lint_mode=True)
-
- self.assertRaises(ParseError, self.parse_exp,
- self.get_basic_expectations(), overrides="""
-Bug(override) failures/expected/text.html [ Failure ]
-Bug(override) failures/expected/text.html [ ImageOnlyFailure ]""", is_lint_mode=True)
-
- def test_missing_file(self):
- self.parse_exp('Bug(test) missing_file.html [ Failure ]')
- self.assertTrue(self._exp.has_warnings(), 1)
-
-
-class PrecedenceTests(Base):
- def test_file_over_directory(self):
- # This tests handling precedence of specific lines over directories
- # and tests expectations covering entire directories.
- exp_str = """
-Bug(x) failures/expected/text.html [ Failure ]
-Bug(y) failures/expected [ WontFix ]
-"""
- self.parse_exp(exp_str)
- self.assert_exp('failures/expected/text.html', FAIL)
- self.assert_exp('failures/expected/crash.html', PASS)
-
- exp_str = """
-Bug(x) failures/expected [ WontFix ]
-Bug(y) failures/expected/text.html [ Failure ]
-"""
- self.parse_exp(exp_str)
- self.assert_exp('failures/expected/text.html', FAIL)
- self.assert_exp('failures/expected/crash.html', PASS)
-
- def test_ambiguous(self):
- self.assert_bad_expectations("Bug(test) [ Release ] passes/text.html [ Pass ]\n"
- "Bug(test) [ Win ] passes/text.html [ Failure ]\n")
-
- def test_more_modifiers(self):
- self.assert_bad_expectations("Bug(test) [ Release ] passes/text.html [ Pass ]\n"
- "Bug(test) [ Win Release ] passes/text.html [ Failure ]\n")
-
- def test_order_in_file(self):
- self.assert_bad_expectations("Bug(test) [ Win Release ] : passes/text.html [ Failure ]\n"
- "Bug(test) [ Release ] : passes/text.html [ Pass ]\n")
-
- def test_macro_overrides(self):
- self.assert_bad_expectations("Bug(test) [ Win ] passes/text.html [ Pass ]\n"
- "Bug(test) [ XP ] passes/text.html [ Failure ]\n")
-
-
-class RemoveConfigurationsTest(Base):
- def test_remove(self):
- host = MockHost()
- test_port = host.port_factory.get('test-win-xp', None)
- test_port.test_exists = lambda test: True
- test_port.test_isfile = lambda test: True
-
- test_config = test_port.test_configuration()
- test_port.expectations_dict = lambda: {"expectations": """Bug(x) [ Linux Win Release ] failures/expected/foo.html [ Failure ]
-Bug(y) [ Win Mac Debug ] failures/expected/foo.html [ Crash ]
-"""}
- expectations = TestExpectations(test_port, self.get_basic_tests())
-
- actual_expectations = expectations.remove_configuration_from_test('failures/expected/foo.html', test_config)
-
- self.assertEqual("""Bug(x) [ Linux Vista Win7 Release ] failures/expected/foo.html [ Failure ]
-Bug(y) [ Win Mac Debug ] failures/expected/foo.html [ Crash ]
-""", actual_expectations)
-
- def test_remove_line(self):
- host = MockHost()
- test_port = host.port_factory.get('test-win-xp', None)
- test_port.test_exists = lambda test: True
- test_port.test_isfile = lambda test: True
-
- test_config = test_port.test_configuration()
- test_port.expectations_dict = lambda: {'expectations': """Bug(x) [ Win Release ] failures/expected/foo.html [ Failure ]
-Bug(y) [ Win Debug ] failures/expected/foo.html [ Crash ]
-"""}
- expectations = TestExpectations(test_port)
-
- actual_expectations = expectations.remove_configuration_from_test('failures/expected/foo.html', test_config)
- actual_expectations = expectations.remove_configuration_from_test('failures/expected/foo.html', host.port_factory.get('test-win-vista', None).test_configuration())
- actual_expectations = expectations.remove_configuration_from_test('failures/expected/foo.html', host.port_factory.get('test-win-win7', None).test_configuration())
-
- self.assertEqual("""Bug(y) [ Win Debug ] failures/expected/foo.html [ Crash ]
-""", actual_expectations)
-
-
-class RebaseliningTest(Base):
- """Test rebaselining-specific functionality."""
- def assertRemove(self, input_expectations, input_overrides, tests, expected_expectations, expected_overrides):
- self.parse_exp(input_expectations, is_lint_mode=False, overrides=input_overrides)
- actual_expectations = self._exp.remove_rebaselined_tests(tests, 'expectations')
- self.assertEqual(expected_expectations, actual_expectations)
- actual_overrides = self._exp.remove_rebaselined_tests(tests, 'overrides')
- self.assertEqual(expected_overrides, actual_overrides)
-
- def test_remove(self):
- self.assertRemove('Bug(x) failures/expected/text.html [ Failure Rebaseline ]\n'
- 'Bug(y) failures/expected/image.html [ ImageOnlyFailure Rebaseline ]\n'
- 'Bug(z) failures/expected/crash.html [ Crash ]\n',
- 'Bug(x0) failures/expected/image.html [ Crash ]\n',
- ['failures/expected/text.html'],
- 'Bug(y) failures/expected/image.html [ ImageOnlyFailure Rebaseline ]\n'
- 'Bug(z) failures/expected/crash.html [ Crash ]\n',
- 'Bug(x0) failures/expected/image.html [ Crash ]\n')
-
- # Ensure that we don't modify unrelated lines, even if we could rewrite them.
- # i.e., the second line doesn't get rewritten to "Bug(y) failures/expected/skip.html"
- self.assertRemove('Bug(x) failures/expected/text.html [ Failure Rebaseline ]\n'
- 'Bug(Y) failures/expected/image.html [ Skip ]\n'
- 'Bug(z) failures/expected/crash.html\n',
- '',
- ['failures/expected/text.html'],
- 'Bug(Y) failures/expected/image.html [ Skip ]\n'
- 'Bug(z) failures/expected/crash.html\n',
- '')
-
- def test_get_rebaselining_failures(self):
- # Make sure we find a test as needing a rebaseline even if it is not marked as a failure.
- self.parse_exp('Bug(x) failures/expected/text.html [ Rebaseline ]\n')
- self.assertEqual(len(self._exp.get_rebaselining_failures()), 1)
-
- self.parse_exp(self.get_basic_expectations())
- self.assertEqual(len(self._exp.get_rebaselining_failures()), 0)
-
-
-class TestExpectationSerializationTests(unittest.TestCase):
- def __init__(self, testFunc):
- host = MockHost()
- test_port = host.port_factory.get('test-win-xp', None)
- self._converter = TestConfigurationConverter(test_port.all_test_configurations(), test_port.configuration_specifier_macros())
- unittest.TestCase.__init__(self, testFunc)
-
- def _tokenize(self, line):
- return TestExpectationParser._tokenize_line('path', line, 0)
-
- def assert_round_trip(self, in_string, expected_string=None):
- expectation = self._tokenize(in_string)
- if expected_string is None:
- expected_string = in_string
- self.assertEqual(expected_string, expectation.to_string(self._converter))
-
- def assert_list_round_trip(self, in_string, expected_string=None):
- host = MockHost()
- parser = TestExpectationParser(host.port_factory.get('test-win-xp', None), [], allow_rebaseline_modifier=False)
- expectations = parser.parse('path', in_string)
- if expected_string is None:
- expected_string = in_string
- self.assertEqual(expected_string, TestExpectations.list_to_string(expectations, self._converter))
-
- def test_unparsed_to_string(self):
- expectation = TestExpectationLine()
-
- self.assertEqual(expectation.to_string(self._converter), '')
- expectation.comment = ' Qux.'
- self.assertEqual(expectation.to_string(self._converter), '# Qux.')
- expectation.name = 'bar'
- self.assertEqual(expectation.to_string(self._converter), 'bar # Qux.')
- expectation.modifiers = ['foo']
- # FIXME: case should be preserved here but we can't until we drop the old syntax.
- self.assertEqual(expectation.to_string(self._converter), '[ FOO ] bar # Qux.')
- expectation.expectations = ['bAz']
- self.assertEqual(expectation.to_string(self._converter), '[ FOO ] bar [ BAZ ] # Qux.')
- expectation.expectations = ['bAz1', 'baZ2']
- self.assertEqual(expectation.to_string(self._converter), '[ FOO ] bar [ BAZ1 BAZ2 ] # Qux.')
- expectation.modifiers = ['foo1', 'foO2']
- self.assertEqual(expectation.to_string(self._converter), '[ FOO1 FOO2 ] bar [ BAZ1 BAZ2 ] # Qux.')
- expectation.warnings.append('Oh the horror.')
- self.assertEqual(expectation.to_string(self._converter), '')
- expectation.original_string = 'Yes it is!'
- self.assertEqual(expectation.to_string(self._converter), 'Yes it is!')
-
- def test_unparsed_list_to_string(self):
- expectation = TestExpectationLine()
- expectation.comment = 'Qux.'
- expectation.name = 'bar'
- expectation.modifiers = ['foo']
- expectation.expectations = ['bAz1', 'baZ2']
- # FIXME: case should be preserved here but we can't until we drop the old syntax.
- self.assertEqual(TestExpectations.list_to_string([expectation]), '[ FOO ] bar [ BAZ1 BAZ2 ] #Qux.')
-
- def test_parsed_to_string(self):
- expectation_line = TestExpectationLine()
- expectation_line.parsed_bug_modifiers = ['BUGX']
- expectation_line.name = 'test/name/for/realz.html'
- expectation_line.parsed_expectations = set([IMAGE])
- self.assertEqual(expectation_line.to_string(self._converter), None)
- expectation_line.matching_configurations = set([TestConfiguration('xp', 'x86', 'release')])
- self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP Release ] test/name/for/realz.html [ ImageOnlyFailure ]')
- expectation_line.matching_configurations = set([TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug')])
- self.assertEqual(expectation_line.to_string(self._converter), 'Bug(x) [ XP ] test/name/for/realz.html [ ImageOnlyFailure ]')
-
- def test_serialize_parsed_expectations(self):
- expectation_line = TestExpectationLine()
- expectation_line.parsed_expectations = set([])
- parsed_expectation_to_string = dict([[parsed_expectation, expectation_string] for expectation_string, parsed_expectation in TestExpectations.EXPECTATIONS.items()])
- self.assertEqual(expectation_line._serialize_parsed_expectations(parsed_expectation_to_string), '')
- expectation_line.parsed_expectations = set([FAIL])
- self.assertEqual(expectation_line._serialize_parsed_expectations(parsed_expectation_to_string), 'fail')
- expectation_line.parsed_expectations = set([PASS, IMAGE])
- self.assertEqual(expectation_line._serialize_parsed_expectations(parsed_expectation_to_string), 'pass image')
- expectation_line.parsed_expectations = set([FAIL, PASS])
- self.assertEqual(expectation_line._serialize_parsed_expectations(parsed_expectation_to_string), 'pass fail')
-
- def test_serialize_parsed_modifier_string(self):
- expectation_line = TestExpectationLine()
- expectation_line.parsed_bug_modifiers = ['garden-o-matic']
- expectation_line.parsed_modifiers = ['for', 'the']
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, []), 'garden-o-matic for the')
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, ['win']), 'garden-o-matic for the win')
- expectation_line.parsed_bug_modifiers = []
- expectation_line.parsed_modifiers = []
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, []), '')
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, ['win']), 'win')
- expectation_line.parsed_bug_modifiers = ['garden-o-matic', 'total', 'is']
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, ['win']), 'garden-o-matic is total win')
- expectation_line.parsed_bug_modifiers = []
- expectation_line.parsed_modifiers = ['garden-o-matic', 'total', 'is']
- self.assertEqual(expectation_line._serialize_parsed_modifiers(self._converter, ['win']), 'garden-o-matic is total win')
-
- def test_format_line(self):
- self.assertEqual(TestExpectationLine._format_line(['MODIFIERS'], 'name', ['EXPECTATIONS'], 'comment'), '[ MODIFIERS ] name [ EXPECTATIONS ] #comment')
- self.assertEqual(TestExpectationLine._format_line(['MODIFIERS'], 'name', ['EXPECTATIONS'], None), '[ MODIFIERS ] name [ EXPECTATIONS ]')
-
- def test_string_roundtrip(self):
- self.assert_round_trip('')
- self.assert_round_trip('FOO')
- self.assert_round_trip('[')
- self.assert_round_trip('FOO [')
- self.assert_round_trip('FOO ] bar')
- self.assert_round_trip(' FOO [')
- self.assert_round_trip(' [ FOO ] ')
- self.assert_round_trip('[ FOO ] bar [ BAZ ]')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux. ')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux. ')
- self.assert_round_trip('[ FOO ] ] ] bar BAZ')
- self.assert_round_trip('[ FOO ] ] ] bar [ BAZ ]')
- self.assert_round_trip('FOO ] ] bar ==== BAZ')
- self.assert_round_trip('=')
- self.assert_round_trip('#')
- self.assert_round_trip('# ')
- self.assert_round_trip('# Foo')
- self.assert_round_trip('# Foo')
- self.assert_round_trip('# Foo :')
- self.assert_round_trip('# Foo : =')
-
- def test_list_roundtrip(self):
- self.assert_list_round_trip('')
- self.assert_list_round_trip('\n')
- self.assert_list_round_trip('\n\n')
- self.assert_list_round_trip('bar')
- self.assert_list_round_trip('bar\n# Qux.')
- self.assert_list_round_trip('bar\n# Qux.\n')
-
- def test_reconstitute_only_these(self):
- lines = []
- reconstitute_only_these = []
-
- def add_line(matching_configurations, reconstitute):
- expectation_line = TestExpectationLine()
- expectation_line.original_string = "Nay"
- expectation_line.parsed_bug_modifiers = ['BUGX']
- expectation_line.name = 'Yay'
- expectation_line.parsed_expectations = set([IMAGE])
- expectation_line.matching_configurations = matching_configurations
- lines.append(expectation_line)
- if reconstitute:
- reconstitute_only_these.append(expectation_line)
-
- add_line(set([TestConfiguration('xp', 'x86', 'release')]), True)
- add_line(set([TestConfiguration('xp', 'x86', 'release'), TestConfiguration('xp', 'x86', 'debug')]), False)
- serialized = TestExpectations.list_to_string(lines, self._converter)
- self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ ImageOnlyFailure ]\nBug(x) [ XP ] Yay [ ImageOnlyFailure ]")
- serialized = TestExpectations.list_to_string(lines, self._converter, reconstitute_only_these=reconstitute_only_these)
- self.assertEqual(serialized, "Bug(x) [ XP Release ] Yay [ ImageOnlyFailure ]\nNay")
-
- def disabled_test_string_whitespace_stripping(self):
- # FIXME: Re-enable this test once we rework the code to no longer support the old syntax.
- self.assert_round_trip('\n', '')
- self.assert_round_trip(' [ FOO ] bar [ BAZ ]', '[ FOO ] bar [ BAZ ]')
- self.assert_round_trip('[ FOO ] bar [ BAZ ]', '[ FOO ] bar [ BAZ ]')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.', '[ FOO ] bar [ BAZ ] # Qux.')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.', '[ FOO ] bar [ BAZ ] # Qux.')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.', '[ FOO ] bar [ BAZ ] # Qux.')
- self.assert_round_trip('[ FOO ] bar [ BAZ ] # Qux.', '[ FOO ] bar [ BAZ ] # Qux.')
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py b/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py
deleted file mode 100644
index 52b720854..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_failures.py
+++ /dev/null
@@ -1,223 +0,0 @@
-# Copyright (C) 2010 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.
-
-import cPickle
-
-from webkitpy.layout_tests.models import test_expectations
-
-
-def is_reftest_failure(failure_list):
- failure_types = [type(f) for f in failure_list]
- return set((FailureReftestMismatch, FailureReftestMismatchDidNotOccur, FailureReftestNoImagesGenerated)).intersection(failure_types)
-
-# FIXME: This is backwards. Each TestFailure subclass should know what
-# test_expectation type it corresponds too. Then this method just
-# collects them all from the failure list and returns the worst one.
-def determine_result_type(failure_list):
- """Takes a set of test_failures and returns which result type best fits
- the list of failures. "Best fits" means we use the worst type of failure.
-
- Returns:
- one of the test_expectations result types - PASS, FAIL, CRASH, etc."""
-
- if not failure_list or len(failure_list) == 0:
- return test_expectations.PASS
-
- failure_types = [type(f) for f in failure_list]
- if FailureCrash in failure_types:
- return test_expectations.CRASH
- elif FailureTimeout in failure_types:
- return test_expectations.TIMEOUT
- elif FailureEarlyExit in failure_types:
- return test_expectations.SKIP
- elif (FailureMissingResult in failure_types or
- FailureMissingImage in failure_types or
- FailureMissingImageHash in failure_types or
- FailureMissingAudio in failure_types):
- return test_expectations.MISSING
- else:
- is_text_failure = FailureTextMismatch in failure_types
- is_image_failure = (FailureImageHashIncorrect in failure_types or
- FailureImageHashMismatch in failure_types)
- is_audio_failure = (FailureAudioMismatch in failure_types)
- if is_text_failure and is_image_failure:
- return test_expectations.IMAGE_PLUS_TEXT
- elif is_text_failure:
- return test_expectations.TEXT
- elif is_image_failure or is_reftest_failure(failure_list):
- return test_expectations.IMAGE
- elif is_audio_failure:
- return test_expectations.AUDIO
- else:
- raise ValueError("unclassifiable set of failures: "
- + str(failure_types))
-
-
-class TestFailure(object):
- """Abstract base class that defines the failure interface."""
-
- @staticmethod
- def loads(s):
- """Creates a TestFailure object from the specified string."""
- return cPickle.loads(s)
-
- def message(self):
- """Returns a string describing the failure in more detail."""
- raise NotImplementedError
-
- def __eq__(self, other):
- return self.__class__.__name__ == other.__class__.__name__
-
- def __ne__(self, other):
- return self.__class__.__name__ != other.__class__.__name__
-
- def __hash__(self):
- return hash(self.__class__.__name__)
-
- def dumps(self):
- """Returns the string/JSON representation of a TestFailure."""
- return cPickle.dumps(self)
-
- def driver_needs_restart(self):
- """Returns True if we should kill DumpRenderTree/WebKitTestRunner before the next test."""
- return False
-
-
-class FailureTimeout(TestFailure):
- def __init__(self, is_reftest=False):
- super(FailureTimeout, self).__init__()
- self.is_reftest = is_reftest
-
- def message(self):
- return "test timed out"
-
- def driver_needs_restart(self):
- return True
-
-
-class FailureCrash(TestFailure):
- def __init__(self, is_reftest=False, process_name='DumpRenderTree', pid=None):
- super(FailureCrash, self).__init__()
- self.process_name = process_name
- self.pid = pid
- self.is_reftest = is_reftest
-
- def message(self):
- if self.pid:
- return "%s crashed [pid=%d]" % (self.process_name, self.pid)
- return self.process_name + " crashed"
-
- def driver_needs_restart(self):
- return True
-
-
-class FailureMissingResult(TestFailure):
- def message(self):
- return "-expected.txt was missing"
-
-
-class FailureTextMismatch(TestFailure):
- def message(self):
- return "text diff"
-
-class FailureMissingImageHash(TestFailure):
- def message(self):
- return "-expected.png was missing an embedded checksum"
-
-
-class FailureMissingImage(TestFailure):
- def message(self):
- return "-expected.png was missing"
-
-
-class FailureImageHashMismatch(TestFailure):
- def __init__(self, diff_percent=0):
- super(FailureImageHashMismatch, self).__init__()
- self.diff_percent = diff_percent
-
- def message(self):
- return "image diff"
-
-
-class FailureImageHashIncorrect(TestFailure):
- def message(self):
- return "-expected.png embedded checksum is incorrect"
-
-
-class FailureReftestMismatch(TestFailure):
- def __init__(self, reference_filename=None):
- super(FailureReftestMismatch, self).__init__()
- self.reference_filename = reference_filename
- self.diff_percent = None
-
- def message(self):
- return "reference mismatch"
-
-
-class FailureReftestMismatchDidNotOccur(TestFailure):
- def __init__(self, reference_filename=None):
- super(FailureReftestMismatchDidNotOccur, self).__init__()
- self.reference_filename = reference_filename
-
- def message(self):
- return "reference mismatch didn't happen"
-
-
-class FailureReftestNoImagesGenerated(TestFailure):
- def __init__(self, reference_filename=None):
- super(FailureReftestNoImagesGenerated, self).__init__()
- self.reference_filename = reference_filename
-
- def message(self):
- return "reference didn't generate pixel results."
-
-
-class FailureMissingAudio(TestFailure):
- def message(self):
- return "expected audio result was missing"
-
-
-class FailureAudioMismatch(TestFailure):
- def message(self):
- return "audio mismatch"
-
-
-class FailureEarlyExit(TestFailure):
- def message(self):
- return "skipped due to early exit"
-
-
-# Convenient collection of all failure classes for anything that might
-# need to enumerate over them all.
-ALL_FAILURE_CLASSES = (FailureTimeout, FailureCrash, FailureMissingResult,
- FailureTextMismatch, FailureMissingImageHash,
- FailureMissingImage, FailureImageHashMismatch,
- FailureImageHashIncorrect, FailureReftestMismatch,
- FailureReftestMismatchDidNotOccur, FailureReftestNoImagesGenerated,
- FailureMissingAudio, FailureAudioMismatch,
- FailureEarlyExit)
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py b/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py
deleted file mode 100644
index ea9a2e82d..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_failures_unittest.py
+++ /dev/null
@@ -1,73 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.layout_tests.models.test_failures import *
-
-
-class TestFailuresTest(unittest.TestCase):
- def assert_loads(self, cls):
- failure_obj = cls()
- s = failure_obj.dumps()
- new_failure_obj = TestFailure.loads(s)
- self.assertIsInstance(new_failure_obj, cls)
-
- self.assertEqual(failure_obj, new_failure_obj)
-
- # Also test that != is implemented.
- self.assertFalse(failure_obj != new_failure_obj)
-
- def test_unknown_failure_type(self):
- class UnknownFailure(TestFailure):
- def message(self):
- return ''
-
- failure_obj = UnknownFailure()
- self.assertRaises(ValueError, determine_result_type, [failure_obj])
-
- def test_message_is_virtual(self):
- failure_obj = TestFailure()
- self.assertRaises(NotImplementedError, failure_obj.message)
-
- def test_loads(self):
- for c in ALL_FAILURE_CLASSES:
- self.assert_loads(c)
-
- def test_equals(self):
- self.assertEqual(FailureCrash(), FailureCrash())
- self.assertNotEqual(FailureCrash(), FailureTimeout())
- crash_set = set([FailureCrash(), FailureCrash()])
- self.assertEqual(len(crash_set), 1)
- # The hash happens to be the name of the class, but sets still work:
- crash_set = set([FailureCrash(), "FailureCrash"])
- self.assertEqual(len(crash_set), 2)
-
- def test_crashes(self):
- self.assertEqual(FailureCrash().message(), 'DumpRenderTree crashed')
- self.assertEqual(FailureCrash(process_name='foo', pid=1234).message(), 'foo crashed [pid=1234]')
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_input.py b/Tools/Scripts/webkitpy/layout_tests/models/test_input.py
deleted file mode 100644
index 58c84ab64..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_input.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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.
-
-
-class TestInput(object):
- """Groups information about a test for easy passing of data."""
-
- def __init__(self, test_name, timeout=None, requires_lock=None, reference_files=None, should_run_pixel_tests=None):
- # TestInput objects are normally constructed by the manager and passed
- # to the workers, but these some fields are set lazily in the workers where possible
- # because they require us to look at the filesystem and we want to be able to do that in parallel.
- self.test_name = test_name
- self.timeout = timeout # in msecs; should rename this for consistency
- self.requires_lock = requires_lock
- self.reference_files = reference_files
- self.should_run_pixel_tests = should_run_pixel_tests
-
- def __repr__(self):
- return "TestInput('%s', timeout=%s, requires_lock=%s, reference_files=%s, should_run_pixel_tests=%s)" % (self.test_name, self.timeout, self.requires_lock, self.reference_files, self.should_run_pixel_tests)
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_results.py b/Tools/Scripts/webkitpy/layout_tests/models/test_results.py
deleted file mode 100644
index d6fd10b18..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_results.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (C) 2010 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.
-
-import cPickle
-
-from webkitpy.layout_tests.models import test_failures
-
-
-class TestResult(object):
- """Data object containing the results of a single test."""
-
- @staticmethod
- def loads(string):
- return cPickle.loads(string)
-
- def __init__(self, test_name, failures=None, test_run_time=None, has_stderr=False, reftest_type=None, pid=None, references=None):
- self.test_name = test_name
- self.failures = failures or []
- self.test_run_time = test_run_time or 0 # The time taken to execute the test itself.
- self.has_stderr = has_stderr
- self.reftest_type = reftest_type or []
- self.pid = pid
- self.references = references or []
-
- # FIXME: Setting this in the constructor makes this class hard to mutate.
- self.type = test_failures.determine_result_type(failures)
-
- # These are set by the worker, not by the driver, so they are not passed to the constructor.
- self.worker_name = ''
- self.shard_name = ''
- self.total_run_time = 0 # The time taken to run the test plus any references, compute diffs, etc.
- self.test_number = None
-
- def __eq__(self, other):
- return (self.test_name == other.test_name and
- self.failures == other.failures and
- self.test_run_time == other.test_run_time)
-
- def __ne__(self, other):
- return not (self == other)
-
- def has_failure_matching_types(self, *failure_classes):
- for failure in self.failures:
- if type(failure) in failure_classes:
- return True
- return False
-
- def dumps(self):
- return cPickle.dumps(self)
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_results_unittest.py b/Tools/Scripts/webkitpy/layout_tests/models/test_results_unittest.py
deleted file mode 100644
index e1bb2f27a..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_results_unittest.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.layout_tests.models.test_results import TestResult
-
-
-class TestResultsTest(unittest.TestCase):
- def test_defaults(self):
- result = TestResult("foo")
- self.assertEqual(result.test_name, 'foo')
- self.assertEqual(result.failures, [])
- self.assertEqual(result.test_run_time, 0)
-
- def test_loads(self):
- result = TestResult(test_name='foo',
- failures=[],
- test_run_time=1.1)
- s = result.dumps()
- new_result = TestResult.loads(s)
- self.assertIsInstance(new_result, TestResult)
-
- self.assertEqual(new_result, result)
-
- # Also check that != is implemented.
- self.assertFalse(new_result != result)
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py b/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py
deleted file mode 100644
index 3af122485..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py
+++ /dev/null
@@ -1,260 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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.
-
-import logging
-
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-
-
-_log = logging.getLogger(__name__)
-
-
-class TestRunResults(object):
- def __init__(self, expectations, num_tests):
- self.total = num_tests
- self.remaining = self.total
- self.expectations = expectations
- self.expected = 0
- self.unexpected = 0
- self.unexpected_failures = 0
- self.unexpected_crashes = 0
- self.unexpected_timeouts = 0
- self.tests_by_expectation = {}
- self.tests_by_timeline = {}
- self.results_by_name = {} # Map of test name to the last result for the test.
- self.all_results = [] # All results from a run, including every iteration of every test.
- self.unexpected_results_by_name = {}
- self.failures_by_name = {}
- self.total_failures = 0
- self.expected_skips = 0
- for expectation in test_expectations.TestExpectations.EXPECTATIONS.values():
- self.tests_by_expectation[expectation] = set()
- for timeline in test_expectations.TestExpectations.TIMELINES.values():
- self.tests_by_timeline[timeline] = expectations.get_tests_with_timeline(timeline)
- self.slow_tests = set()
- self.interrupted = False
-
- def add(self, test_result, expected, test_is_slow):
- self.tests_by_expectation[test_result.type].add(test_result.test_name)
- self.results_by_name[test_result.test_name] = test_result
- if test_result.type != test_expectations.SKIP:
- self.all_results.append(test_result)
- self.remaining -= 1
- if len(test_result.failures):
- self.total_failures += 1
- self.failures_by_name[test_result.test_name] = test_result.failures
- if expected:
- self.expected += 1
- if test_result.type == test_expectations.SKIP:
- self.expected_skips += 1
- else:
- self.unexpected_results_by_name[test_result.test_name] = test_result
- self.unexpected += 1
- if len(test_result.failures):
- self.unexpected_failures += 1
- if test_result.type == test_expectations.CRASH:
- self.unexpected_crashes += 1
- elif test_result.type == test_expectations.TIMEOUT:
- self.unexpected_timeouts += 1
- if test_is_slow:
- self.slow_tests.add(test_result.test_name)
-
-
-class RunDetails(object):
- def __init__(self, exit_code, summarized_results=None, initial_results=None, retry_results=None, enabled_pixel_tests_in_retry=False):
- self.exit_code = exit_code
- self.summarized_results = summarized_results
- self.initial_results = initial_results
- self.retry_results = retry_results
- self.enabled_pixel_tests_in_retry = enabled_pixel_tests_in_retry
-
-
-def _interpret_test_failures(failures):
- test_dict = {}
- failure_types = [type(failure) for failure in failures]
- # FIXME: get rid of all this is_* values once there is a 1:1 map between
- # TestFailure type and test_expectations.EXPECTATION.
- if test_failures.FailureMissingAudio in failure_types:
- test_dict['is_missing_audio'] = True
-
- if test_failures.FailureMissingResult in failure_types:
- test_dict['is_missing_text'] = True
-
- if test_failures.FailureMissingImage in failure_types or test_failures.FailureMissingImageHash in failure_types:
- test_dict['is_missing_image'] = True
-
- if 'image_diff_percent' not in test_dict:
- for failure in failures:
- if isinstance(failure, test_failures.FailureImageHashMismatch) or isinstance(failure, test_failures.FailureReftestMismatch):
- test_dict['image_diff_percent'] = failure.diff_percent
-
- return test_dict
-
-
-def summarize_results(port_obj, expectations, initial_results, retry_results, enabled_pixel_tests_in_retry):
- """Returns a dictionary containing a summary of the test runs, with the following fields:
- 'version': a version indicator
- 'fixable': The number of fixable tests (NOW - PASS)
- 'skipped': The number of skipped tests (NOW & SKIPPED)
- 'num_regressions': The number of non-flaky failures
- 'num_flaky': The number of flaky failures
- 'num_missing': The number of tests with missing results
- 'num_passes': The number of unexpected passes
- 'tests': a dict of tests -> {'expected': '...', 'actual': '...'}
- """
- results = {}
- results['version'] = 3
-
- tbe = initial_results.tests_by_expectation
- tbt = initial_results.tests_by_timeline
- results['fixable'] = len(tbt[test_expectations.NOW] - tbe[test_expectations.PASS])
- results['skipped'] = len(tbt[test_expectations.NOW] & tbe[test_expectations.SKIP])
-
- num_passes = 0
- num_flaky = 0
- num_missing = 0
- num_regressions = 0
- keywords = {}
- for expecation_string, expectation_enum in test_expectations.TestExpectations.EXPECTATIONS.iteritems():
- keywords[expectation_enum] = expecation_string.upper()
-
- for modifier_string, modifier_enum in test_expectations.TestExpectations.MODIFIERS.iteritems():
- keywords[modifier_enum] = modifier_string.upper()
-
- tests = {}
-
- for test_name, result in initial_results.results_by_name.iteritems():
- # Note that if a test crashed in the original run, we ignore
- # whether or not it crashed when we retried it (if we retried it),
- # and always consider the result not flaky.
- expected = expectations.get_expectations_string(test_name)
- result_type = result.type
- actual = [keywords[result_type]]
-
- if result_type == test_expectations.SKIP:
- continue
-
- test_dict = {}
- if result.has_stderr:
- test_dict['has_stderr'] = True
-
- if result.reftest_type:
- test_dict.update(reftest_type=list(result.reftest_type))
-
- if expectations.has_modifier(test_name, test_expectations.WONTFIX):
- test_dict['wontfix'] = True
-
- if result_type == test_expectations.PASS:
- num_passes += 1
- # FIXME: include passing tests that have stderr output.
- if expected == 'PASS':
- continue
- elif result_type == test_expectations.CRASH:
- if test_name in initial_results.unexpected_results_by_name:
- num_regressions += 1
- elif result_type == test_expectations.MISSING:
- if test_name in initial_results.unexpected_results_by_name:
- num_missing += 1
- elif test_name in initial_results.unexpected_results_by_name:
- if retry_results and test_name not in retry_results.unexpected_results_by_name:
- actual.extend(expectations.get_expectations_string(test_name).split(" "))
- num_flaky += 1
- elif retry_results:
- retry_result_type = retry_results.unexpected_results_by_name[test_name].type
- if result_type != retry_result_type:
- if enabled_pixel_tests_in_retry and result_type == test_expectations.TEXT and retry_result_type == test_expectations.IMAGE_PLUS_TEXT:
- num_regressions += 1
- else:
- num_flaky += 1
- actual.append(keywords[retry_result_type])
- else:
- num_regressions += 1
- else:
- num_regressions += 1
-
- test_dict['expected'] = expected
- test_dict['actual'] = " ".join(actual)
-
- test_dict.update(_interpret_test_failures(result.failures))
-
- if retry_results:
- retry_result = retry_results.unexpected_results_by_name.get(test_name)
- if retry_result:
- test_dict.update(_interpret_test_failures(retry_result.failures))
-
- # Store test hierarchically by directory. e.g.
- # foo/bar/baz.html: test_dict
- # foo/bar/baz1.html: test_dict
- #
- # becomes
- # foo: {
- # bar: {
- # baz.html: test_dict,
- # baz1.html: test_dict
- # }
- # }
- parts = test_name.split('/')
- current_map = tests
- for i, part in enumerate(parts):
- if i == (len(parts) - 1):
- current_map[part] = test_dict
- break
- if part not in current_map:
- current_map[part] = {}
- current_map = current_map[part]
-
- results['tests'] = tests
- results['num_passes'] = num_passes
- results['num_flaky'] = num_flaky
- results['num_missing'] = num_missing
- results['num_regressions'] = num_regressions
- results['uses_expectations_file'] = port_obj.uses_test_expectations_file()
- results['interrupted'] = initial_results.interrupted # Does results.html have enough information to compute this itself? (by checking total number of results vs. total number of tests?)
- results['layout_tests_dir'] = port_obj.layout_tests_dir()
- results['has_wdiff'] = port_obj.wdiff_available()
- results['has_pretty_patch'] = port_obj.pretty_patch_available()
- results['pixel_tests_enabled'] = port_obj.get_option('pixel_tests')
-
- try:
- # We only use the svn revision for using trac links in the results.html file,
- # Don't do this by default since it takes >100ms.
- # FIXME: Do we really need to populate this both here and in the json_results_generator?
- if port_obj.get_option("builder_name"):
- port_obj.host.initialize_scm()
- results['revision'] = port_obj.host.scm().head_svn_revision()
- except Exception, e:
- _log.warn("Failed to determine svn revision for checkout (cwd: %s, webkit_base: %s), leaving 'revision' key blank in full_results.json.\n%s" % (port_obj._filesystem.getcwd(), port_obj.path_from_webkit_base(), e))
- # Handle cases where we're running outside of version control.
- import traceback
- _log.debug('Failed to learn head svn revision:')
- _log.debug(traceback.format_exc())
- results['revision'] = ""
-
- return results
diff --git a/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py b/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py
deleted file mode 100644
index c0d9265f0..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/models/test_run_results_unittest.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_run_results
-
-
-def get_result(test_name, result_type=test_expectations.PASS, run_time=0):
- failures = []
- if result_type == test_expectations.TIMEOUT:
- failures = [test_failures.FailureTimeout()]
- elif result_type == test_expectations.AUDIO:
- failures = [test_failures.FailureAudioMismatch()]
- elif result_type == test_expectations.CRASH:
- failures = [test_failures.FailureCrash()]
- return test_results.TestResult(test_name, failures=failures, test_run_time=run_time)
-
-
-def run_results(port):
- tests = ['passes/text.html', 'failures/expected/timeout.html', 'failures/expected/crash.html', 'failures/expected/hang.html',
- 'failures/expected/audio.html']
- expectations = test_expectations.TestExpectations(port, tests)
- return test_run_results.TestRunResults(expectations, len(tests))
-
-
-def summarized_results(port, expected, passing, flaky):
- test_is_slow = False
-
- initial_results = run_results(port)
- if expected:
- initial_results.add(get_result('passes/text.html', test_expectations.PASS), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/audio.html', test_expectations.AUDIO), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/timeout.html', test_expectations.TIMEOUT), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/crash.html', test_expectations.CRASH), expected, test_is_slow)
- elif passing:
- initial_results.add(get_result('passes/text.html'), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/audio.html'), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/timeout.html'), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/crash.html'), expected, test_is_slow)
- else:
- initial_results.add(get_result('passes/text.html', test_expectations.TIMEOUT), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/audio.html', test_expectations.AUDIO), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/timeout.html', test_expectations.CRASH), expected, test_is_slow)
- initial_results.add(get_result('failures/expected/crash.html', test_expectations.TIMEOUT), expected, test_is_slow)
-
- # we only list hang.html here, since normally this is WontFix
- initial_results.add(get_result('failures/expected/hang.html', test_expectations.TIMEOUT), expected, test_is_slow)
-
- if flaky:
- retry_results = run_results(port)
- retry_results.add(get_result('passes/text.html'), True, test_is_slow)
- retry_results.add(get_result('failures/expected/timeout.html'), True, test_is_slow)
- retry_results.add(get_result('failures/expected/crash.html'), True, test_is_slow)
- else:
- retry_results = None
-
- return test_run_results.summarize_results(port, initial_results.expectations, initial_results, retry_results, enabled_pixel_tests_in_retry=False)
-
-
-class InterpretTestFailuresTest(unittest.TestCase):
- def setUp(self):
- host = MockHost()
- self.port = host.port_factory.get(port_name='test')
-
- def test_interpret_test_failures(self):
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureImageHashMismatch(diff_percent=0.42)])
- self.assertEqual(test_dict['image_diff_percent'], 0.42)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureReftestMismatch(self.port.abspath_for_test('foo/reftest-expected.html'))])
- self.assertIn('image_diff_percent', test_dict)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureReftestMismatchDidNotOccur(self.port.abspath_for_test('foo/reftest-expected-mismatch.html'))])
- self.assertEqual(len(test_dict), 0)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureMissingAudio()])
- self.assertIn('is_missing_audio', test_dict)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureMissingResult()])
- self.assertIn('is_missing_text', test_dict)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureMissingImage()])
- self.assertIn('is_missing_image', test_dict)
-
- test_dict = test_run_results._interpret_test_failures([test_failures.FailureMissingImageHash()])
- self.assertIn('is_missing_image', test_dict)
-
-
-class SummarizedResultsTest(unittest.TestCase):
- def setUp(self):
- host = MockHost(initialize_scm_by_default=False)
- self.port = host.port_factory.get(port_name='test')
-
- def test_no_svn_revision(self):
- summary = summarized_results(self.port, expected=False, passing=False, flaky=False)
- self.assertNotIn('revision', summary)
-
- def test_svn_revision(self):
- self.port._options.builder_name = 'dummy builder'
- summary = summarized_results(self.port, expected=False, passing=False, flaky=False)
- self.assertNotEquals(summary['revision'], '')
-
- def test_summarized_results_wontfix(self):
- self.port._options.builder_name = 'dummy builder'
- summary = summarized_results(self.port, expected=False, passing=False, flaky=False)
- self.assertTrue(summary['tests']['failures']['expected']['hang.html']['wontfix'])
diff --git a/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py b/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/reftests/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py b/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py
deleted file mode 100644
index e21d73d4f..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2011 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.
-
-# 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.
-
-"""Utility module for reftests."""
-
-
-from HTMLParser import HTMLParser
-
-
-class ExtractReferenceLinkParser(HTMLParser):
-
- def __init__(self):
- HTMLParser.__init__(self)
- self.matches = []
- self.mismatches = []
-
- def handle_starttag(self, tag, attrs):
- if tag != "link":
- return
- attrs = dict(attrs)
- if not "rel" in attrs:
- return
- if not "href" in attrs:
- return
- if attrs["rel"] == "match":
- self.matches.append(attrs["href"])
- if attrs["rel"] == "mismatch":
- self.mismatches.append(attrs["href"])
-
-
-def get_reference_link(html_string):
- """Returns reference links in the given html_string.
-
- Returns:
- a tuple of two URL lists, (matches, mismatches).
- """
- parser = ExtractReferenceLinkParser()
- parser.feed(html_string)
- parser.close()
-
- return parser.matches, parser.mismatches
diff --git a/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py b/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py
deleted file mode 100644
index 85b18e2b1..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/reftests/extract_reference_link_unittest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2011 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.
-
-# 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.
-
-import unittest2 as unittest
-
-from webkitpy.layout_tests.reftests import extract_reference_link
-
-
-class ExtractLinkMatchTest(unittest.TestCase):
-
- def test_getExtractMatch(self):
- html_1 = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>CSS Test: DESCRIPTION OF TEST</title>
-<link rel="author" title="NAME_OF_AUTHOR"
-href="mailto:EMAIL OR http://CONTACT_PAGE"/>
-<link rel="help" href="RELEVANT_SPEC_SECTION"/>
-<link rel="match" href="green-box-ref.xht" />
-<link rel="match" href="blue-box-ref.xht" />
-<link rel="mismatch" href="red-box-notref.xht" />
-<link rel="mismatch" href="red-box-notref.xht" />
-<meta name="flags" content="TOKENS" />
-<meta name="assert" content="TEST ASSERTION"/>
-<style type="text/css"><![CDATA[
-CSS FOR TEST
-]]></style>
-</head>
-<body>
-CONTENT OF TEST
-</body>
-</html>
-"""
- matches, mismatches = extract_reference_link.get_reference_link(html_1)
- self.assertItemsEqual(matches,
- ["green-box-ref.xht", "blue-box-ref.xht"])
- self.assertItemsEqual(mismatches,
- ["red-box-notref.xht", "red-box-notref.xht"])
-
- html_2 = ""
- empty_tuple_1 = extract_reference_link.get_reference_link(html_2)
- self.assertEqual(empty_tuple_1, ([], []))
-
- # Link does not have a "ref" attribute.
- html_3 = """<link href="RELEVANT_SPEC_SECTION"/>"""
- empty_tuple_2 = extract_reference_link.get_reference_link(html_3)
- self.assertEqual(empty_tuple_2, ([], []))
-
- # Link does not have a "href" attribute.
- html_4 = """<link rel="match"/>"""
- empty_tuple_3 = extract_reference_link.get_reference_link(html_4)
- self.assertEqual(empty_tuple_3, ([], []))
-
- # Link does not have a "/" at the end.
- html_5 = """<link rel="help" href="RELEVANT_SPEC_SECTION">"""
- empty_tuple_4 = extract_reference_link.get_reference_link(html_5)
- self.assertEqual(empty_tuple_4, ([], []))
diff --git a/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py b/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
deleted file mode 100644
index 6b4bb76d1..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py
+++ /dev/null
@@ -1,384 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-# Copyright (C) 2011 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:
-#
-# * 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.
-
-import logging
-import optparse
-import os
-import signal
-import sys
-import traceback
-
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.controllers.manager import Manager
-from webkitpy.port import configuration_options, platform_options
-from webkitpy.layout_tests.views import buildbot_results
-from webkitpy.layout_tests.views import printing
-
-
-_log = logging.getLogger(__name__)
-
-
-# This mirrors what the shell normally does.
-INTERRUPTED_EXIT_STATUS = signal.SIGINT + 128
-
-# This is a randomly chosen exit code that can be tested against to
-# indicate that an unexpected exception occurred.
-EXCEPTIONAL_EXIT_STATUS = 254
-
-
-def main(argv, stdout, stderr):
- options, args = parse_args(argv)
-
- if options.platform and 'test' in options.platform:
- # It's a bit lame to import mocks into real code, but this allows the user
- # to run tests against the test platform interactively, which is useful for
- # debugging test failures.
- from webkitpy.common.host_mock import MockHost
- host = MockHost()
- else:
- host = Host()
-
- if options.lint_test_files:
- from webkitpy.layout_tests.lint_test_expectations import lint
- return lint(host, options, stderr)
-
- try:
- port = host.port_factory.get(options.platform, options)
- except NotImplementedError, e:
- # FIXME: is this the best way to handle unsupported port names?
- print >> stderr, str(e)
- return EXCEPTIONAL_EXIT_STATUS
-
- try:
- run_details = run(port, options, args, stderr)
- if run_details.exit_code != -1:
- bot_printer = buildbot_results.BuildBotPrinter(stdout, options.debug_rwt_logging)
- bot_printer.print_results(run_details)
-
- return run_details.exit_code
- except KeyboardInterrupt:
- return INTERRUPTED_EXIT_STATUS
- except BaseException as e:
- if isinstance(e, Exception):
- print >> stderr, '\n%s raised: %s' % (e.__class__.__name__, str(e))
- traceback.print_exc(file=stderr)
- return EXCEPTIONAL_EXIT_STATUS
-
-
-def parse_args(args):
- option_group_definitions = []
-
- option_group_definitions.append(("Platform options", platform_options()))
- option_group_definitions.append(("Configuration options", configuration_options()))
- option_group_definitions.append(("Printing Options", printing.print_options()))
-
- option_group_definitions.append(("EFL-specific Options", [
- optparse.make_option("--webprocess-cmd-prefix", type="string",
- default=False, help="Prefix used when spawning the Web process (Debug mode only)"),
- ]))
-
- option_group_definitions.append(("WebKit Options", [
- optparse.make_option("--gc-between-tests", action="store_true", default=False,
- help="Force garbage collection between each test"),
- optparse.make_option("--complex-text", action="store_true", default=False,
- help="Use the complex text code path for all text (Mac OS X and Windows only)"),
- optparse.make_option("-l", "--leaks", action="store_true", default=False,
- help="Enable leaks checking (Mac OS X only)"),
- optparse.make_option("-g", "--guard-malloc", action="store_true", default=False,
- help="Enable Guard Malloc (Mac OS X only)"),
- optparse.make_option("--threaded", action="store_true", default=False,
- help="Run a concurrent JavaScript thread with each test"),
- optparse.make_option("--webkit-test-runner", "-2", action="store_true",
- help="Use WebKitTestRunner rather than DumpRenderTree."),
- # FIXME: We should merge this w/ --build-directory and only have one flag.
- optparse.make_option("--root", action="store",
- help="Path to a directory containing the executables needed to run tests."),
- ]))
-
- option_group_definitions.append(("Results Options", [
- optparse.make_option("-p", "--pixel", "--pixel-tests", action="store_true",
- dest="pixel_tests", help="Enable pixel-to-pixel PNG comparisons"),
- optparse.make_option("--no-pixel", "--no-pixel-tests", action="store_false",
- dest="pixel_tests", help="Disable pixel-to-pixel PNG comparisons"),
- optparse.make_option("--no-sample-on-timeout", action="store_false",
- dest="sample_on_timeout", help="Don't run sample on timeout (Mac OS X only)"),
- optparse.make_option("--no-ref-tests", action="store_true",
- dest="no_ref_tests", help="Skip all ref tests"),
- optparse.make_option("--tolerance",
- help="Ignore image differences less than this percentage (some "
- "ports may ignore this option)", type="float"),
- optparse.make_option("--results-directory", help="Location of test results"),
- optparse.make_option("--build-directory",
- help="Path to the directory under which build files are kept (should not include configuration)"),
- optparse.make_option("--add-platform-exceptions", action="store_true", default=False,
- help="Save generated results into the *most-specific-platform* directory rather than the *generic-platform* directory"),
- optparse.make_option("--new-baseline", action="store_true",
- default=False, help="Save generated results as new baselines "
- "into the *most-specific-platform* directory, overwriting whatever's "
- "already there. Equivalent to --reset-results --add-platform-exceptions"),
- optparse.make_option("--reset-results", action="store_true",
- default=False, help="Reset expectations to the "
- "generated results in their existing location."),
- optparse.make_option("--no-new-test-results", action="store_false",
- dest="new_test_results", default=True,
- help="Don't create new baselines when no expected results exist"),
-
- #FIXME: we should support a comma separated list with --pixel-test-directory as well.
- optparse.make_option("--pixel-test-directory", action="append", default=[], dest="pixel_test_directories",
- help="A directory where it is allowed to execute tests as pixel tests. "
- "Specify multiple times to add multiple directories. "
- "This option implies --pixel-tests. If specified, only those tests "
- "will be executed as pixel tests that are located in one of the "
- "directories enumerated with the option. Some ports may ignore this "
- "option while others can have a default value that can be overridden here."),
-
- optparse.make_option("--skip-failing-tests", action="store_true",
- default=False, help="Skip tests that are expected to fail. "
- "Note: When using this option, you might miss new crashes "
- "in these tests."),
- optparse.make_option("--additional-drt-flag", action="append",
- default=[], help="Additional command line flag to pass to DumpRenderTree "
- "Specify multiple times to add multiple flags."),
- optparse.make_option("--driver-name", type="string",
- help="Alternative DumpRenderTree binary to use"),
- optparse.make_option("--additional-platform-directory", action="append",
- default=[], help="Additional directory where to look for test "
- "baselines (will take precendence over platform baselines). "
- "Specify multiple times to add multiple search path entries."),
- optparse.make_option("--additional-expectations", action="append", default=[],
- help="Path to a test_expectations file that will override previous expectations. "
- "Specify multiple times for multiple sets of overrides."),
- optparse.make_option("--compare-port", action="store", default=None,
- help="Use the specified port's baselines first"),
- optparse.make_option("--no-show-results", action="store_false",
- default=True, dest="show_results",
- help="Don't launch a browser with results after the tests "
- "are done"),
- optparse.make_option("--full-results-html", action="store_true",
- default=False,
- help="Show all failures in results.html, rather than only regressions"),
- optparse.make_option("--clobber-old-results", action="store_true",
- default=False, help="Clobbers test results from previous runs."),
- optparse.make_option("--http", action="store_true", dest="http",
- default=True, help="Run HTTP and WebSocket tests (default)"),
- optparse.make_option("--no-http", action="store_false", dest="http",
- help="Don't run HTTP and WebSocket tests"),
- optparse.make_option("--ignore-metrics", action="store_true", dest="ignore_metrics",
- default=False, help="Ignore rendering metrics related information from test "
- "output, only compare the structure of the rendertree."),
- optparse.make_option("--nocheck-sys-deps", action="store_true",
- default=False,
- help="Don't check the system dependencies (themes)"),
- optparse.make_option("--nojava", action="store_true",
- default=False,
- help="Don't build java support files"),
- ]))
-
- option_group_definitions.append(("Testing Options", [
- optparse.make_option("--build", dest="build",
- action="store_true", default=True,
- help="Check to ensure the DumpRenderTree build is up-to-date "
- "(default)."),
- optparse.make_option("--no-build", dest="build",
- action="store_false", help="Don't check to see if the "
- "DumpRenderTree build is up-to-date."),
- optparse.make_option("-n", "--dry-run", action="store_true",
- default=False,
- help="Do everything but actually run the tests or upload results."),
- optparse.make_option("--wrapper",
- help="wrapper command to insert before invocations of "
- "DumpRenderTree; option is split on whitespace before "
- "running. (Example: --wrapper='valgrind --smc-check=all')"),
- optparse.make_option("-i", "--ignore-tests", action="append", default=[],
- help="directories or test to ignore (may specify multiple times)"),
- optparse.make_option("--test-list", action="append",
- help="read list of tests to run from file", metavar="FILE"),
- optparse.make_option("--skipped", action="store", default="default",
- help=("control how tests marked SKIP are run. "
- "'default' == Skip tests unless explicitly listed on the command line, "
- "'ignore' == Run them anyway, "
- "'only' == only run the SKIP tests, "
- "'always' == always skip, even if listed on the command line.")),
- optparse.make_option("--force", dest="skipped", action="store_const", const='ignore',
- help="Run all tests, even those marked SKIP in the test list (same as --skipped=ignore)"),
- optparse.make_option("--time-out-ms",
- help="Set the timeout for each test"),
- optparse.make_option("--order", action="store", default="natural",
- help=("determine the order in which the test cases will be run. "
- "'none' == use the order in which the tests were listed either in arguments or test list, "
- "'natural' == use the natural order (default), "
- "'random' == randomize the test order.")),
- optparse.make_option("--run-chunk",
- help=("Run a specified chunk (n:l), the nth of len l, "
- "of the layout tests")),
- optparse.make_option("--run-part", help=("Run a specified part (n:m), "
- "the nth of m parts, of the layout tests")),
- optparse.make_option("--batch-size",
- help=("Run a the tests in batches (n), after every n tests, "
- "DumpRenderTree is relaunched."), type="int", default=None),
- optparse.make_option("--run-singly", action="store_true",
- default=False, help="run a separate DumpRenderTree for each test (implies --verbose)"),
- optparse.make_option("--child-processes",
- help="Number of DumpRenderTrees to run in parallel."),
- # FIXME: Display default number of child processes that will run.
- optparse.make_option("-f", "--fully-parallel", action="store_true",
- help="run all tests in parallel"),
- optparse.make_option("--exit-after-n-failures", type="int", default=None,
- help="Exit after the first N failures instead of running all "
- "tests"),
- optparse.make_option("--exit-after-n-crashes-or-timeouts", type="int",
- default=None, help="Exit after the first N crashes instead of "
- "running all tests"),
- optparse.make_option("--iterations", type="int", default=1, help="Number of times to run the set of tests (e.g. ABCABCABC)"),
- optparse.make_option("--repeat-each", type="int", default=1, help="Number of times to run each test (e.g. AAABBBCCC)"),
- optparse.make_option("--retry-failures", action="store_true",
- default=True,
- help="Re-try any tests that produce unexpected results (default)"),
- optparse.make_option("--no-retry-failures", action="store_false",
- dest="retry_failures",
- help="Don't re-try any tests that produce unexpected results."),
- optparse.make_option("--max-locked-shards", type="int", default=0,
- help="Set the maximum number of locked shards"),
- optparse.make_option("--additional-env-var", type="string", action="append", default=[],
- help="Passes that environment variable to the tests (--additional-env-var=NAME=VALUE)"),
- optparse.make_option("--profile", action="store_true",
- help="Output per-test profile information."),
- optparse.make_option("--profiler", action="store",
- help="Output per-test profile information, using the specified profiler."),
- ]))
-
- option_group_definitions.append(("Miscellaneous Options", [
- optparse.make_option("--lint-test-files", action="store_true",
- default=False, help=("Makes sure the test files parse for all "
- "configurations. Does not run any tests.")),
- ]))
-
- # FIXME: Move these into json_results_generator.py
- option_group_definitions.append(("Result JSON Options", [
- optparse.make_option("--master-name", help="The name of the buildbot master."),
- optparse.make_option("--builder-name", default="",
- help=("The name of the builder shown on the waterfall running "
- "this script e.g. WebKit.")),
- optparse.make_option("--build-name", default="DUMMY_BUILD_NAME",
- help=("The name of the builder used in its path, e.g. "
- "webkit-rel.")),
- optparse.make_option("--build-number", default="DUMMY_BUILD_NUMBER",
- help=("The build number of the builder running this script.")),
- optparse.make_option("--test-results-server", default="",
- help=("If specified, upload results json files to this appengine "
- "server.")),
- ]))
-
- option_parser = optparse.OptionParser()
-
- for group_name, group_options in option_group_definitions:
- option_group = optparse.OptionGroup(option_parser, group_name)
- option_group.add_options(group_options)
- option_parser.add_option_group(option_group)
-
- return option_parser.parse_args(args)
-
-
-def _set_up_derived_options(port, options):
- """Sets the options values that depend on other options values."""
- if not options.child_processes:
- options.child_processes = os.environ.get("WEBKIT_TEST_CHILD_PROCESSES",
- str(port.default_child_processes()))
- if not options.max_locked_shards:
- options.max_locked_shards = int(os.environ.get("WEBKIT_TEST_MAX_LOCKED_SHARDS",
- str(port.default_max_locked_shards())))
-
- if not options.configuration:
- options.configuration = port.default_configuration()
-
- if options.pixel_tests is None:
- options.pixel_tests = port.default_pixel_tests()
-
- if not options.time_out_ms:
- options.time_out_ms = str(port.default_timeout_ms())
-
- options.slow_time_out_ms = str(5 * int(options.time_out_ms))
-
- if options.additional_platform_directory:
- additional_platform_directories = []
- for path in options.additional_platform_directory:
- additional_platform_directories.append(port.host.filesystem.abspath(path))
- options.additional_platform_directory = additional_platform_directories
-
- if not options.http and options.skipped in ('ignore', 'only'):
- _log.warning("--force/--skipped=%s overrides --no-http." % (options.skipped))
- options.http = True
-
- if options.ignore_metrics and (options.new_baseline or options.reset_results):
- _log.warning("--ignore-metrics has no effect with --new-baselines or with --reset-results")
-
- if options.new_baseline:
- options.reset_results = True
- options.add_platform_exceptions = True
-
- if options.pixel_test_directories:
- options.pixel_tests = True
- varified_dirs = set()
- pixel_test_directories = options.pixel_test_directories
- for directory in pixel_test_directories:
- # FIXME: we should support specifying the directories all the ways we support it for additional
- # arguments specifying which tests and directories to run. We should also move the logic for that
- # to Port.
- filesystem = port.host.filesystem
- if not filesystem.isdir(filesystem.join(port.layout_tests_dir(), directory)):
- _log.warning("'%s' was passed to --pixel-test-directories, which doesn't seem to be a directory" % str(directory))
- else:
- varified_dirs.add(directory)
-
- options.pixel_test_directories = list(varified_dirs)
-
- if options.run_singly:
- options.verbose = True
-
-
-def run(port, options, args, logging_stream):
- logger = logging.getLogger()
- logger.setLevel(logging.DEBUG if options.debug_rwt_logging else logging.INFO)
-
- try:
- printer = printing.Printer(port, options, logging_stream, logger=logger)
-
- _set_up_derived_options(port, options)
- manager = Manager(port, options, printer)
- printer.print_config(port.results_directory())
-
- run_details = manager.run(args)
- _log.debug("Testing completed, Exit status: %d" % run_details.exit_code)
- return run_details
- finally:
- printer.cleanup()
-
-if __name__ == '__main__':
- sys.exit(main(sys.argv[1:], sys.stdout, sys.stderr))
diff --git a/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py b/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py
deleted file mode 100644
index c8d3495e4..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py
+++ /dev/null
@@ -1,968 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-# Copyright (C) 2011 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:
-#
-# * 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.
-
-import codecs
-import json
-import logging
-import os
-import platform
-import Queue
-import re
-import StringIO
-import sys
-import thread
-import time
-import threading
-import unittest2 as unittest
-
-from webkitpy.common.system import outputcapture, path
-from webkitpy.common.system.crashlogs_unittest import make_mock_crash_report_darwin
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.host import Host
-from webkitpy.common.host_mock import MockHost
-
-from webkitpy import port
-from webkitpy.layout_tests import run_webkit_tests
-from webkitpy.port import Port
-from webkitpy.port import test
-from webkitpy.test.skip import skip_if
-from webkitpy.tool.mocktool import MockOptions
-
-
-def parse_args(extra_args=None, tests_included=False, new_results=False, print_nothing=True):
- extra_args = extra_args or []
- args = []
- if not '--platform' in extra_args:
- args.extend(['--platform', 'test'])
- if not new_results:
- args.append('--no-new-test-results')
-
- if not '--child-processes' in extra_args:
- args.extend(['--child-processes', 1])
- args.extend(extra_args)
- if not tests_included:
- # We use the glob to test that globbing works.
- args.extend(['passes',
- 'http/tests',
- 'websocket/tests',
- 'failures/expected/*'])
- return run_webkit_tests.parse_args(args)
-
-
-def passing_run(extra_args=None, port_obj=None, tests_included=False, host=None, shared_port=True):
- options, parsed_args = parse_args(extra_args, tests_included)
- if not port_obj:
- host = host or MockHost()
- port_obj = host.port_factory.get(port_name=options.platform, options=options)
-
- if shared_port:
- port_obj.host.port_factory.get = lambda *args, **kwargs: port_obj
-
- logging_stream = StringIO.StringIO()
- run_details = run_webkit_tests.run(port_obj, options, parsed_args, logging_stream=logging_stream)
- return run_details.exit_code == 0
-
-
-def logging_run(extra_args=None, port_obj=None, tests_included=False, host=None, new_results=False, shared_port=True):
- options, parsed_args = parse_args(extra_args=extra_args,
- tests_included=tests_included,
- print_nothing=False, new_results=new_results)
- host = host or MockHost()
- if not port_obj:
- port_obj = host.port_factory.get(port_name=options.platform, options=options)
-
- run_details, output = run_and_capture(port_obj, options, parsed_args, shared_port)
- return (run_details, output, host.user)
-
-
-def run_and_capture(port_obj, options, parsed_args, shared_port=True):
- if shared_port:
- port_obj.host.port_factory.get = lambda *args, **kwargs: port_obj
- oc = outputcapture.OutputCapture()
- try:
- oc.capture_output()
- logging_stream = StringIO.StringIO()
- run_details = run_webkit_tests.run(port_obj, options, parsed_args, logging_stream=logging_stream)
- finally:
- oc.restore_output()
- return (run_details, logging_stream)
-
-
-def get_tests_run(args, host=None):
- results = get_test_results(args, host)
- return [result.test_name for result in results]
-
-
-def get_test_batches(args, host=None):
- results = get_test_results(args, host)
- batches = []
- batch = []
- current_pid = None
- for result in results:
- if batch and result.pid != current_pid:
- batches.append(batch)
- batch = []
- batch.append(result.test_name)
- if batch:
- batches.append(batch)
- return batches
-
-
-def get_test_results(args, host=None):
- options, parsed_args = parse_args(args, tests_included=True)
-
- host = host or MockHost()
- port_obj = host.port_factory.get(port_name=options.platform, options=options)
-
- oc = outputcapture.OutputCapture()
- oc.capture_output()
- logging_stream = StringIO.StringIO()
- try:
- run_details = run_webkit_tests.run(port_obj, options, parsed_args, logging_stream=logging_stream)
- finally:
- oc.restore_output()
-
- all_results = []
- if run_details.initial_results:
- all_results.extend(run_details.initial_results.all_results)
-
- if run_details.retry_results:
- all_results.extend(run_details.retry_results.all_results)
- return all_results
-
-
-def parse_full_results(full_results_text):
- json_to_eval = full_results_text.replace("ADD_RESULTS(", "").replace(");", "")
- compressed_results = json.loads(json_to_eval)
- return compressed_results
-
-
-class StreamTestingMixin(object):
- def assertContains(self, stream, string):
- self.assertTrue(string in stream.getvalue())
-
- def assertEmpty(self, stream):
- self.assertFalse(stream.getvalue())
-
- def assertNotEmpty(self, stream):
- self.assertTrue(stream.getvalue())
-
-
-class RunTest(unittest.TestCase, StreamTestingMixin):
- def setUp(self):
- # A real PlatformInfo object is used here instead of a
- # MockPlatformInfo because we need to actually check for
- # Windows and Mac to skip some tests.
- self._platform = SystemHost().platform
-
- # FIXME: Remove this when we fix test-webkitpy to work
- # properly on cygwin (bug 63846).
- self.should_test_processes = not self._platform.is_win()
-
- def test_basic(self):
- options, args = parse_args(tests_included=True)
- logging_stream = StringIO.StringIO()
- host = MockHost()
- port_obj = host.port_factory.get(options.platform, options)
- details = run_webkit_tests.run(port_obj, options, args, logging_stream)
-
- # These numbers will need to be updated whenever we add new tests.
- self.assertEqual(details.initial_results.total, test.TOTAL_TESTS)
- self.assertEqual(details.initial_results.expected_skips, test.TOTAL_SKIPS)
- self.assertEqual(len(details.initial_results.unexpected_results_by_name), test.UNEXPECTED_PASSES + test.UNEXPECTED_FAILURES)
- self.assertEqual(details.exit_code, test.UNEXPECTED_FAILURES)
- self.assertEqual(details.retry_results.total, test.TOTAL_RETRIES)
-
- one_line_summary = "%d tests ran as expected, %d didn't:\n" % (
- details.initial_results.total - details.initial_results.expected_skips - len(details.initial_results.unexpected_results_by_name),
- len(details.initial_results.unexpected_results_by_name))
- self.assertTrue(one_line_summary in logging_stream.buflist)
-
- # Ensure the results were summarized properly.
- self.assertEqual(details.summarized_results['num_regressions'], details.exit_code)
-
- # Ensure the image diff percentage is in the results.
- self.assertEqual(details.summarized_results['tests']['failures']['expected']['image.html']['image_diff_percent'], 1)
-
- # Ensure the results were written out and displayed.
- full_results_text = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- json_to_eval = full_results_text.replace("ADD_RESULTS(", "").replace(");", "")
- self.assertEqual(json.loads(json_to_eval), details.summarized_results)
-
- self.assertEqual(host.user.opened_urls, [path.abspath_to_uri(MockHost().platform, '/tmp/layout-test-results/results.html')])
-
-
- def test_batch_size(self):
- batch_tests_run = get_test_batches(['--batch-size', '2'])
- for batch in batch_tests_run:
- self.assertTrue(len(batch) <= 2, '%s had too many tests' % ', '.join(batch))
-
- def test_max_locked_shards(self):
- # Tests for the default of using one locked shard even in the case of more than one child process.
- if not self.should_test_processes:
- return
- save_env_webkit_test_max_locked_shards = None
- if "WEBKIT_TEST_MAX_LOCKED_SHARDS" in os.environ:
- save_env_webkit_test_max_locked_shards = os.environ["WEBKIT_TEST_MAX_LOCKED_SHARDS"]
- del os.environ["WEBKIT_TEST_MAX_LOCKED_SHARDS"]
- _, regular_output, _ = logging_run(['--debug-rwt-logging', '--child-processes', '2'], shared_port=False)
- try:
- self.assertTrue(any(['1 locked' in line for line in regular_output.buflist]))
- finally:
- if save_env_webkit_test_max_locked_shards:
- os.environ["WEBKIT_TEST_MAX_LOCKED_SHARDS"] = save_env_webkit_test_max_locked_shards
-
- def test_child_processes_2(self):
- if self.should_test_processes:
- _, regular_output, _ = logging_run(
- ['--debug-rwt-logging', '--child-processes', '2'], shared_port=False)
- self.assertTrue(any(['Running 2 ' in line for line in regular_output.buflist]))
-
- def test_child_processes_min(self):
- if self.should_test_processes:
- _, regular_output, _ = logging_run(
- ['--debug-rwt-logging', '--child-processes', '2', '-i', 'passes/passes', 'passes'],
- tests_included=True, shared_port=False)
- self.assertTrue(any(['Running 1 ' in line for line in regular_output.buflist]))
-
- def test_dryrun(self):
- tests_run = get_tests_run(['--dry-run'])
- self.assertEqual(tests_run, [])
-
- tests_run = get_tests_run(['-n'])
- self.assertEqual(tests_run, [])
-
- def test_exception_raised(self):
- # Exceptions raised by a worker are treated differently depending on
- # whether they are in-process or out. inline exceptions work as normal,
- # which allows us to get the full stack trace and traceback from the
- # worker. The downside to this is that it could be any error, but this
- # is actually useful in testing.
- #
- # Exceptions raised in a separate process are re-packaged into
- # WorkerExceptions (a subclass of BaseException), which have a string capture of the stack which can
- # be printed, but don't display properly in the unit test exception handlers.
- self.assertRaises(BaseException, logging_run,
- ['failures/expected/exception.html', '--child-processes', '1'], tests_included=True)
-
- if self.should_test_processes:
- self.assertRaises(BaseException, logging_run,
- ['--child-processes', '2', '--force', 'failures/expected/exception.html', 'passes/text.html'], tests_included=True, shared_port=False)
-
- def test_full_results_html(self):
- # FIXME: verify html?
- details, _, _ = logging_run(['--full-results-html'])
- self.assertEqual(details.exit_code, 0)
-
- def test_hung_thread(self):
- details, err, _ = logging_run(['--run-singly', '--time-out-ms=50', 'failures/expected/hang.html'], tests_included=True)
- # Note that hang.html is marked as WontFix and all WontFix tests are
- # expected to Pass, so that actually running them generates an "unexpected" error.
- self.assertEqual(details.exit_code, 1)
- self.assertNotEmpty(err)
-
- def test_keyboard_interrupt(self):
- # Note that this also tests running a test marked as SKIP if
- # you specify it explicitly.
- self.assertRaises(KeyboardInterrupt, logging_run, ['failures/expected/keyboard.html', '--child-processes', '1'], tests_included=True)
-
- if self.should_test_processes:
- self.assertRaises(KeyboardInterrupt, logging_run,
- ['failures/expected/keyboard.html', 'passes/text.html', '--child-processes', '2', '--force'], tests_included=True, shared_port=False)
-
- def test_no_tests_found(self):
- details, err, _ = logging_run(['resources'], tests_included=True)
- self.assertEqual(details.exit_code, -1)
- self.assertContains(err, 'No tests to run.\n')
-
- def test_no_tests_found_2(self):
- details, err, _ = logging_run(['foo'], tests_included=True)
- self.assertEqual(details.exit_code, -1)
- self.assertContains(err, 'No tests to run.\n')
-
- def test_natural_order(self):
- tests_to_run = ['passes/audio.html', 'failures/expected/text.html', 'failures/expected/missing_text.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=natural'] + tests_to_run)
- self.assertEqual(['failures/expected/missing_text.html', 'failures/expected/text.html', 'passes/args.html', 'passes/audio.html'], tests_run)
-
- def test_natural_order_test_specified_multiple_times(self):
- tests_to_run = ['passes/args.html', 'passes/audio.html', 'passes/audio.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=natural'] + tests_to_run)
- self.assertEqual(['passes/args.html', 'passes/args.html', 'passes/audio.html', 'passes/audio.html'], tests_run)
-
- def test_random_order(self):
- tests_to_run = ['passes/audio.html', 'failures/expected/text.html', 'failures/expected/missing_text.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=random'] + tests_to_run)
- self.assertEqual(sorted(tests_to_run), sorted(tests_run))
-
- def test_random_order_test_specified_multiple_times(self):
- tests_to_run = ['passes/args.html', 'passes/audio.html', 'passes/audio.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=random'] + tests_to_run)
- self.assertEqual(tests_run.count('passes/audio.html'), 2)
- self.assertEqual(tests_run.count('passes/args.html'), 2)
-
- def test_no_order(self):
- tests_to_run = ['passes/audio.html', 'failures/expected/text.html', 'failures/expected/missing_text.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=none'] + tests_to_run)
- self.assertEqual(tests_to_run, tests_run)
-
- def test_no_order_test_specified_multiple_times(self):
- tests_to_run = ['passes/args.html', 'passes/audio.html', 'passes/audio.html', 'passes/args.html']
- tests_run = get_tests_run(['--order=none'] + tests_to_run)
- self.assertEqual(tests_to_run, tests_run)
-
- def test_no_order_with_directory_entries_in_natural_order(self):
- tests_to_run = ['http/tests/ssl', 'perf/foo', 'http/tests/passes']
- tests_run = get_tests_run(['--order=none'] + tests_to_run)
- self.assertEqual(tests_run, ['http/tests/ssl/text.html', 'perf/foo/test.html', 'http/tests/passes/image.html', 'http/tests/passes/text.html'])
-
- def test_gc_between_tests(self):
- self.assertTrue(passing_run(['--gc-between-tests']))
-
- def test_complex_text(self):
- self.assertTrue(passing_run(['--complex-text']))
-
- def test_threaded(self):
- self.assertTrue(passing_run(['--threaded']))
-
- def test_repeat_each(self):
- tests_to_run = ['passes/image.html', 'passes/text.html']
- tests_run = get_tests_run(['--repeat-each', '2'] + tests_to_run)
- self.assertEqual(tests_run, ['passes/image.html', 'passes/image.html', 'passes/text.html', 'passes/text.html'])
-
- def test_ignore_flag(self):
- # Note that passes/image.html is expected to be run since we specified it directly.
- tests_run = get_tests_run(['-i', 'passes', 'passes/image.html'])
- self.assertFalse('passes/text.html' in tests_run)
- self.assertTrue('passes/image.html' in tests_run)
-
- def test_skipped_flag(self):
- tests_run = get_tests_run(['passes'])
- self.assertFalse('passes/skipped/skip.html' in tests_run)
- num_tests_run_by_default = len(tests_run)
-
- # Check that nothing changes when we specify skipped=default.
- self.assertEqual(len(get_tests_run(['--skipped=default', 'passes'])),
- num_tests_run_by_default)
-
- # Now check that we run one more test (the skipped one).
- tests_run = get_tests_run(['--skipped=ignore', 'passes'])
- self.assertTrue('passes/skipped/skip.html' in tests_run)
- self.assertEqual(len(tests_run), num_tests_run_by_default + 1)
-
- # Now check that we only run the skipped test.
- self.assertEqual(get_tests_run(['--skipped=only', 'passes']), ['passes/skipped/skip.html'])
-
- # Now check that we don't run anything.
- self.assertEqual(get_tests_run(['--skipped=always', 'passes/skipped/skip.html']), [])
-
- def test_iterations(self):
- tests_to_run = ['passes/image.html', 'passes/text.html']
- tests_run = get_tests_run(['--iterations', '2'] + tests_to_run)
- self.assertEqual(tests_run, ['passes/image.html', 'passes/text.html', 'passes/image.html', 'passes/text.html'])
-
- def test_repeat_each_iterations_num_tests(self):
- # The total number of tests should be: number_of_tests *
- # repeat_each * iterations
- host = MockHost()
- _, err, _ = logging_run(
- ['--iterations', '2', '--repeat-each', '4', '--debug-rwt-logging', 'passes/text.html', 'failures/expected/text.html'],
- tests_included=True, host=host)
- self.assertContains(err, "All 16 tests ran as expected.\n")
-
- def test_run_chunk(self):
- # Test that we actually select the right chunk
- all_tests_run = get_tests_run(['passes', 'failures'])
- chunk_tests_run = get_tests_run(['--run-chunk', '1:4', 'passes', 'failures'])
- self.assertEqual(all_tests_run[4:8], chunk_tests_run)
-
- # Test that we wrap around if the number of tests is not evenly divisible by the chunk size
- tests_to_run = ['passes/error.html', 'passes/image.html', 'passes/platform_image.html', 'passes/text.html']
- chunk_tests_run = get_tests_run(['--run-chunk', '1:3'] + tests_to_run)
- self.assertEqual(['passes/text.html', 'passes/error.html', 'passes/image.html'], chunk_tests_run)
-
- def test_run_force(self):
- # This raises an exception because we run
- # failures/expected/exception.html, which is normally SKIPped.
-
- self.assertRaises(ValueError, logging_run, ['--force'])
-
- def test_run_part(self):
- # Test that we actually select the right part
- tests_to_run = ['passes/error.html', 'passes/image.html', 'passes/platform_image.html', 'passes/text.html']
- tests_run = get_tests_run(['--run-part', '1:2'] + tests_to_run)
- self.assertEqual(['passes/error.html', 'passes/image.html'], tests_run)
-
- # Test that we wrap around if the number of tests is not evenly divisible by the chunk size
- # (here we end up with 3 parts, each with 2 tests, and we only have 4 tests total, so the
- # last part repeats the first two tests).
- chunk_tests_run = get_tests_run(['--run-part', '3:3'] + tests_to_run)
- self.assertEqual(['passes/error.html', 'passes/image.html'], chunk_tests_run)
-
- def test_run_singly(self):
- batch_tests_run = get_test_batches(['--run-singly'])
- for batch in batch_tests_run:
- self.assertEqual(len(batch), 1, '%s had too many tests' % ', '.join(batch))
-
- def test_skip_failing_tests(self):
- # This tests that we skip both known failing and known flaky tests. Because there are
- # no known flaky tests in the default test_expectations, we add additional expectations.
- host = MockHost()
- host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) passes/image.html [ ImageOnlyFailure Pass ]\n')
-
- batches = get_test_batches(['--skip-failing-tests', '--additional-expectations', '/tmp/overrides.txt'], host=host)
- has_passes_text = False
- for batch in batches:
- self.assertFalse('failures/expected/text.html' in batch)
- self.assertFalse('passes/image.html' in batch)
- has_passes_text = has_passes_text or ('passes/text.html' in batch)
- self.assertTrue(has_passes_text)
-
- def test_run_singly_actually_runs_tests(self):
- details, _, _ = logging_run(['--run-singly'], tests_included=True)
- self.assertEqual(details.exit_code, test.UNEXPECTED_FAILURES - 1) # failures/expected/hang.html actually passes w/ --run-singly.
-
- def test_single_file(self):
- tests_run = get_tests_run(['passes/text.html'])
- self.assertEqual(tests_run, ['passes/text.html'])
-
- def test_single_file_with_prefix(self):
- tests_run = get_tests_run(['LayoutTests/passes/text.html'])
- self.assertEqual(['passes/text.html'], tests_run)
-
- def test_single_skipped_file(self):
- tests_run = get_tests_run(['failures/expected/keybaord.html'])
- self.assertEqual([], tests_run)
-
- def test_stderr_is_saved(self):
- host = MockHost()
- self.assertTrue(passing_run(host=host))
- self.assertEqual(host.filesystem.read_text_file('/tmp/layout-test-results/passes/error-stderr.txt'),
- 'stuff going to stderr')
-
- def test_test_list(self):
- host = MockHost()
- filename = '/tmp/foo.txt'
- host.filesystem.write_text_file(filename, 'passes/text.html')
- tests_run = get_tests_run(['--test-list=%s' % filename], host=host)
- self.assertEqual(['passes/text.html'], tests_run)
- host.filesystem.remove(filename)
- details, err, user = logging_run(['--test-list=%s' % filename], tests_included=True, host=host)
- self.assertEqual(details.exit_code, -1)
- self.assertNotEmpty(err)
-
- def test_test_list_with_prefix(self):
- host = MockHost()
- filename = '/tmp/foo.txt'
- host.filesystem.write_text_file(filename, 'LayoutTests/passes/text.html')
- tests_run = get_tests_run(['--test-list=%s' % filename], host=host)
- self.assertEqual(['passes/text.html'], tests_run)
-
- def test_missing_and_unexpected_results(self):
- # Test that we update expectations in place. If the expectation
- # is missing, update the expected generic location.
- host = MockHost()
- details, err, _ = logging_run(['--no-show-results',
- 'failures/expected/missing_image.html',
- 'failures/unexpected/missing_text.html',
- 'failures/unexpected/text-image-checksum.html'],
- tests_included=True, host=host)
- file_list = host.filesystem.written_files.keys()
- self.assertEqual(details.exit_code, 1)
- expected_token = '"unexpected":{"text-image-checksum.html":{"expected":"PASS","actual":"IMAGE+TEXT","image_diff_percent":1},"missing_text.html":{"expected":"PASS","is_missing_text":true,"actual":"MISSING"}'
- json_string = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- self.assertTrue(json_string.find(expected_token) != -1)
- self.assertTrue(json_string.find('"num_regressions":1') != -1)
- self.assertTrue(json_string.find('"num_flaky":0') != -1)
- self.assertTrue(json_string.find('"num_missing":1') != -1)
-
- def test_pixel_test_directories(self):
- host = MockHost()
-
- """Both tests have faling checksum. We include only the first in pixel tests so only that should fail."""
- args = ['--pixel-tests', '--pixel-test-directory', 'failures/unexpected/pixeldir',
- 'failures/unexpected/pixeldir/image_in_pixeldir.html',
- 'failures/unexpected/image_not_in_pixeldir.html']
- details, err, _ = logging_run(extra_args=args, host=host, tests_included=True)
-
- self.assertEqual(details.exit_code, 1)
- expected_token = '"unexpected":{"pixeldir":{"image_in_pixeldir.html":{"expected":"PASS","actual":"IMAGE"'
- json_string = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- self.assertTrue(json_string.find(expected_token) != -1)
-
- def test_missing_and_unexpected_results_with_custom_exit_code(self):
- # Test that we update expectations in place. If the expectation
- # is missing, update the expected generic location.
- class CustomExitCodePort(test.TestPort):
- def exit_code_from_summarized_results(self, unexpected_results):
- return unexpected_results['num_regressions'] + unexpected_results['num_missing']
-
- host = MockHost()
- options, parsed_args = run_webkit_tests.parse_args(['--pixel-tests', '--no-new-test-results'])
- test_port = CustomExitCodePort(host, options=options)
- details, err, _ = logging_run(['--no-show-results',
- 'failures/expected/missing_image.html',
- 'failures/unexpected/missing_text.html',
- 'failures/unexpected/text-image-checksum.html'],
- tests_included=True, host=host, port_obj=test_port)
- self.assertEqual(details.exit_code, 2)
-
- def test_crash_with_stderr(self):
- host = MockHost()
- _, regular_output, _ = logging_run(['failures/unexpected/crash-with-stderr.html'], tests_included=True, host=host)
- self.assertTrue(host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json').find('{"crash-with-stderr.html":{"expected":"PASS","actual":"CRASH","has_stderr":true}}') != -1)
-
- def test_no_image_failure_with_image_diff(self):
- host = MockHost()
- _, regular_output, _ = logging_run(['failures/unexpected/checksum-with-matching-image.html'], tests_included=True, host=host)
- self.assertTrue(host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json').find('"num_regressions":0') != -1)
-
- def test_crash_log(self):
- # FIXME: Need to rewrite these tests to not be mac-specific, or move them elsewhere.
- # Currently CrashLog uploading only works on Darwin.
- if not self._platform.is_mac():
- return
- mock_crash_report = make_mock_crash_report_darwin('DumpRenderTree', 12345)
- host = MockHost()
- host.filesystem.write_text_file('/Users/mock/Library/Logs/DiagnosticReports/DumpRenderTree_2011-06-13-150719_quadzen.crash', mock_crash_report)
- _, regular_output, _ = logging_run(['failures/unexpected/crash-with-stderr.html'], tests_included=True, host=host)
- expected_crash_log = mock_crash_report
- self.assertEqual(host.filesystem.read_text_file('/tmp/layout-test-results/failures/unexpected/crash-with-stderr-crash-log.txt'), expected_crash_log)
-
- def test_web_process_crash_log(self):
- # FIXME: Need to rewrite these tests to not be mac-specific, or move them elsewhere.
- # Currently CrashLog uploading only works on Darwin.
- if not self._platform.is_mac():
- return
- mock_crash_report = make_mock_crash_report_darwin('WebProcess', 12345)
- host = MockHost()
- host.filesystem.write_text_file('/Users/mock/Library/Logs/DiagnosticReports/WebProcess_2011-06-13-150719_quadzen.crash', mock_crash_report)
- logging_run(['failures/unexpected/web-process-crash-with-stderr.html'], tests_included=True, host=host)
- self.assertEqual(host.filesystem.read_text_file('/tmp/layout-test-results/failures/unexpected/web-process-crash-with-stderr-crash-log.txt'), mock_crash_report)
-
- def test_exit_after_n_failures_upload(self):
- host = MockHost()
- details, regular_output, user = logging_run(
- ['failures/unexpected/text-image-checksum.html', 'passes/text.html', '--exit-after-n-failures', '1'],
- tests_included=True, host=host)
-
- # By returning False, we know that the incremental results were generated and then deleted.
- self.assertFalse(host.filesystem.exists('/tmp/layout-test-results/incremental_results.json'))
-
- # This checks that we report only the number of tests that actually failed.
- self.assertEqual(details.exit_code, 1)
-
- # This checks that passes/text.html is considered SKIPped.
- self.assertTrue('"skipped":1' in host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json'))
-
- # This checks that we told the user we bailed out.
- self.assertTrue('Exiting early after 1 failures. 1 tests run.\n' in regular_output.getvalue())
-
- # This checks that neither test ran as expected.
- # FIXME: This log message is confusing; tests that were skipped should be called out separately.
- self.assertTrue('0 tests ran as expected, 2 didn\'t:\n' in regular_output.getvalue())
-
- def test_exit_after_n_failures(self):
- # Unexpected failures should result in tests stopping.
- tests_run = get_tests_run(['failures/unexpected/text-image-checksum.html', 'passes/text.html', '--exit-after-n-failures', '1'])
- self.assertEqual(['failures/unexpected/text-image-checksum.html'], tests_run)
-
- # But we'll keep going for expected ones.
- tests_run = get_tests_run(['failures/expected/text.html', 'passes/text.html', '--exit-after-n-failures', '1'])
- self.assertEqual(['failures/expected/text.html', 'passes/text.html'], tests_run)
-
- def test_exit_after_n_crashes(self):
- # Unexpected crashes should result in tests stopping.
- tests_run = get_tests_run(['failures/unexpected/crash.html', 'passes/text.html', '--exit-after-n-crashes-or-timeouts', '1'])
- self.assertEqual(['failures/unexpected/crash.html'], tests_run)
-
- # Same with timeouts.
- tests_run = get_tests_run(['failures/unexpected/timeout.html', 'passes/text.html', '--exit-after-n-crashes-or-timeouts', '1'])
- self.assertEqual(['failures/unexpected/timeout.html'], tests_run)
-
- # But we'll keep going for expected ones.
- tests_run = get_tests_run(['failures/expected/crash.html', 'passes/text.html', '--exit-after-n-crashes-or-timeouts', '1'])
- self.assertEqual(['failures/expected/crash.html', 'passes/text.html'], tests_run)
-
- def test_results_directory_absolute(self):
- # We run a configuration that should fail, to generate output, then
- # look for what the output results url was.
-
- host = MockHost()
- with host.filesystem.mkdtemp() as tmpdir:
- _, _, user = logging_run(['--results-directory=' + str(tmpdir)], tests_included=True, host=host)
- self.assertEqual(user.opened_urls, [path.abspath_to_uri(host.platform, host.filesystem.join(tmpdir, 'results.html'))])
-
- def test_results_directory_default(self):
- # We run a configuration that should fail, to generate output, then
- # look for what the output results url was.
-
- # This is the default location.
- _, _, user = logging_run(tests_included=True)
- self.assertEqual(user.opened_urls, [path.abspath_to_uri(MockHost().platform, '/tmp/layout-test-results/results.html')])
-
- def test_results_directory_relative(self):
- # We run a configuration that should fail, to generate output, then
- # look for what the output results url was.
- host = MockHost()
- host.filesystem.maybe_make_directory('/tmp/cwd')
- host.filesystem.chdir('/tmp/cwd')
- _, _, user = logging_run(['--results-directory=foo'], tests_included=True, host=host)
- self.assertEqual(user.opened_urls, [path.abspath_to_uri(host.platform, '/tmp/cwd/foo/results.html')])
-
- def test_retrying_and_flaky_tests(self):
- host = MockHost()
- details, err, _ = logging_run(['--debug-rwt-logging', 'failures/flaky'], tests_included=True, host=host)
- self.assertEqual(details.exit_code, 0)
- self.assertTrue('Retrying' in err.getvalue())
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/failures/flaky/text-actual.txt'))
- self.assertFalse(host.filesystem.exists('/tmp/layout-test-results/retries/failures/flaky/text-actual.txt'))
-
- # Now we test that --clobber-old-results does remove the old entries and the old retries,
- # and that we don't retry again.
- host = MockHost()
- details, err, _ = logging_run(['--no-retry-failures', '--clobber-old-results', 'failures/flaky'], tests_included=True, host=host)
- self.assertEqual(details.exit_code, 1)
- self.assertTrue('Clobbering old results' in err.getvalue())
- self.assertTrue('flaky/text.html' in err.getvalue())
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/failures/flaky/text-actual.txt'))
- self.assertFalse(host.filesystem.exists('retries'))
-
- def test_retrying_force_pixel_tests(self):
- host = MockHost()
- details, err, _ = logging_run(['--no-pixel-tests', 'failures/unexpected/text-image-checksum.html'], tests_included=True, host=host)
- self.assertEqual(details.exit_code, 1)
- self.assertTrue('Retrying' in err.getvalue())
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/failures/unexpected/text-image-checksum-actual.txt'))
- self.assertFalse(host.filesystem.exists('/tmp/layout-test-results/failures/unexpected/text-image-checksum-actual.png'))
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/retries/failures/unexpected/text-image-checksum-actual.txt'))
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/retries/failures/unexpected/text-image-checksum-actual.png'))
- json_string = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- json = parse_full_results(json_string)
- self.assertEqual(json["tests"]["failures"]["unexpected"]["text-image-checksum.html"],
- {"expected": "PASS", "actual": "TEXT IMAGE+TEXT", "image_diff_percent": 1})
- self.assertFalse(json["pixel_tests_enabled"])
- self.assertEqual(details.enabled_pixel_tests_in_retry, True)
-
- def test_retrying_uses_retries_directory(self):
- host = MockHost()
- details, err, _ = logging_run(['--debug-rwt-logging', 'failures/unexpected/text-image-checksum.html'], tests_included=True, host=host)
- self.assertEqual(details.exit_code, 1)
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/failures/unexpected/text-image-checksum-actual.txt'))
- self.assertTrue(host.filesystem.exists('/tmp/layout-test-results/retries/failures/unexpected/text-image-checksum-actual.txt'))
-
- def test_run_order__inline(self):
- # These next tests test that we run the tests in ascending alphabetical
- # order per directory. HTTP tests are sharded separately from other tests,
- # so we have to test both.
- tests_run = get_tests_run(['-i', 'passes/passes', 'passes'])
- self.assertEqual(tests_run, sorted(tests_run))
-
- tests_run = get_tests_run(['http/tests/passes'])
- self.assertEqual(tests_run, sorted(tests_run))
-
- def test_tolerance(self):
- class ImageDiffTestPort(test.TestPort):
- def diff_image(self, expected_contents, actual_contents, tolerance=None):
- self.tolerance_used_for_diff_image = self._options.tolerance
- return (True, 1, None)
-
- def get_port_for_run(args):
- options, parsed_args = run_webkit_tests.parse_args(args)
- host = MockHost()
- test_port = ImageDiffTestPort(host, options=options)
- res = passing_run(args, port_obj=test_port, tests_included=True)
- self.assertTrue(res)
- return test_port
-
- base_args = ['--pixel-tests', '--no-new-test-results', 'failures/expected/*']
-
- # If we pass in an explicit tolerance argument, then that will be used.
- test_port = get_port_for_run(base_args + ['--tolerance', '.1'])
- self.assertEqual(0.1, test_port.tolerance_used_for_diff_image)
- test_port = get_port_for_run(base_args + ['--tolerance', '0'])
- self.assertEqual(0, test_port.tolerance_used_for_diff_image)
-
- # Otherwise the port's default tolerance behavior (including ignoring it)
- # should be used.
- test_port = get_port_for_run(base_args)
- self.assertEqual(None, test_port.tolerance_used_for_diff_image)
-
- def test_virtual(self):
- self.assertTrue(passing_run(['passes/text.html', 'passes/args.html',
- 'virtual/passes/text.html', 'virtual/passes/args.html']))
-
- def test_reftest_run(self):
- tests_run = get_tests_run(['passes/reftest.html'])
- self.assertEqual(['passes/reftest.html'], tests_run)
-
- def test_reftest_run_reftests_if_pixel_tests_are_disabled(self):
- tests_run = get_tests_run(['--no-pixel-tests', 'passes/reftest.html'])
- self.assertEqual(['passes/reftest.html'], tests_run)
-
- def test_reftest_skip_reftests_if_no_ref_tests(self):
- tests_run = get_tests_run(['--no-ref-tests', 'passes/reftest.html'])
- self.assertEqual([], tests_run)
- tests_run = get_tests_run(['--no-ref-tests', '--no-pixel-tests', 'passes/reftest.html'])
- self.assertEqual([], tests_run)
-
- def test_reftest_expected_html_should_be_ignored(self):
- tests_run = get_tests_run(['passes/reftest-expected.html'])
- self.assertEqual([], tests_run)
-
- def test_reftest_driver_should_run_expected_html(self):
- tests_run = get_test_results(['passes/reftest.html'])
- self.assertEqual(tests_run[0].references, ['passes/reftest-expected.html'])
-
- def test_reftest_driver_should_run_expected_mismatch_html(self):
- tests_run = get_test_results(['passes/mismatch.html'])
- self.assertEqual(tests_run[0].references, ['passes/mismatch-expected-mismatch.html'])
-
- def test_reftest_should_not_use_naming_convention_if_not_listed_in_reftestlist(self):
- host = MockHost()
- _, err, _ = logging_run(['--no-show-results', 'reftests/foo/'], tests_included=True, host=host)
- json_string = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- self.assertTrue(json_string.find('"unlistedtest.html":{"expected":"PASS","is_missing_text":true,"actual":"MISSING","is_missing_image":true}') != -1)
- self.assertTrue(json_string.find('"num_regressions":4') != -1)
- self.assertTrue(json_string.find('"num_flaky":0') != -1)
- self.assertTrue(json_string.find('"num_missing":1') != -1)
-
- def test_additional_platform_directory(self):
- self.assertTrue(passing_run(['--additional-platform-directory', '/tmp/foo']))
- self.assertTrue(passing_run(['--additional-platform-directory', '/tmp/../foo']))
- self.assertTrue(passing_run(['--additional-platform-directory', '/tmp/foo', '--additional-platform-directory', '/tmp/bar']))
- self.assertTrue(passing_run(['--additional-platform-directory', 'foo']))
-
- def test_additional_expectations(self):
- host = MockHost()
- host.filesystem.write_text_file('/tmp/overrides.txt', 'Bug(x) failures/unexpected/mismatch.html [ ImageOnlyFailure ]\n')
- self.assertTrue(passing_run(['--additional-expectations', '/tmp/overrides.txt', 'failures/unexpected/mismatch.html'],
- tests_included=True, host=host))
-
- def test_no_http_and_force(self):
- # See test_run_force, using --force raises an exception.
- # FIXME: We would like to check the warnings generated.
- self.assertRaises(ValueError, logging_run, ['--force', '--no-http'])
-
- @staticmethod
- def has_test_of_type(tests, type):
- return [test for test in tests if type in test]
-
- def test_no_http_tests(self):
- batch_tests_dryrun = get_tests_run(['LayoutTests/http', 'websocket/'])
- self.assertTrue(RunTest.has_test_of_type(batch_tests_dryrun, 'http'))
- self.assertTrue(RunTest.has_test_of_type(batch_tests_dryrun, 'websocket'))
-
- batch_tests_run_no_http = get_tests_run(['--no-http', 'LayoutTests/http', 'websocket/'])
- self.assertFalse(RunTest.has_test_of_type(batch_tests_run_no_http, 'http'))
- self.assertFalse(RunTest.has_test_of_type(batch_tests_run_no_http, 'websocket'))
-
- batch_tests_run_http = get_tests_run(['--http', 'LayoutTests/http', 'websocket/'])
- self.assertTrue(RunTest.has_test_of_type(batch_tests_run_http, 'http'))
- self.assertTrue(RunTest.has_test_of_type(batch_tests_run_http, 'websocket'))
-
- def test_platform_tests_are_found(self):
- tests_run = get_tests_run(['--platform', 'test-mac-leopard', 'http'])
- self.assertTrue('platform/test-mac-leopard/http/test.html' in tests_run)
- self.assertFalse('platform/test-win-win7/http/test.html' in tests_run)
-
- def test_output_diffs(self):
- # Test to ensure that we don't generate -wdiff.html or -pretty.html if wdiff and PrettyPatch
- # aren't available.
- host = MockHost()
- _, err, _ = logging_run(['--pixel-tests', 'failures/unexpected/text-image-checksum.html'], tests_included=True, host=host)
- written_files = host.filesystem.written_files
- self.assertTrue(any(path.endswith('-diff.txt') for path in written_files.keys()))
- self.assertFalse(any(path.endswith('-wdiff.html') for path in written_files.keys()))
- self.assertFalse(any(path.endswith('-pretty-diff.html') for path in written_files.keys()))
-
- full_results_text = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- full_results = json.loads(full_results_text.replace("ADD_RESULTS(", "").replace(");", ""))
- self.assertEqual(full_results['has_wdiff'], False)
- self.assertEqual(full_results['has_pretty_patch'], False)
-
- def test_unsupported_platform(self):
- stdout = StringIO.StringIO()
- stderr = StringIO.StringIO()
- res = run_webkit_tests.main(['--platform', 'foo'], stdout, stderr)
-
- self.assertEqual(res, run_webkit_tests.EXCEPTIONAL_EXIT_STATUS)
- self.assertEqual(stdout.getvalue(), '')
- self.assertTrue('unsupported platform' in stderr.getvalue())
-
- def test_verbose_in_child_processes(self):
- # When we actually run multiple processes, we may have to reconfigure logging in the
- # child process (e.g., on win32) and we need to make sure that works and we still
- # see the verbose log output. However, we can't use logging_run() because using
- # outputcapture to capture stdout and stderr latter results in a nonpicklable host.
-
- # Test is flaky on Windows: https://bugs.webkit.org/show_bug.cgi?id=98559
- if not self.should_test_processes:
- return
-
- options, parsed_args = parse_args(['--verbose', '--fully-parallel', '--child-processes', '2', 'passes/text.html', 'passes/image.html'], tests_included=True, print_nothing=False)
- host = MockHost()
- port_obj = host.port_factory.get(port_name=options.platform, options=options)
- logging_stream = StringIO.StringIO()
- run_webkit_tests.run(port_obj, options, parsed_args, logging_stream=logging_stream)
- self.assertTrue('text.html passed' in logging_stream.getvalue())
- self.assertTrue('image.html passed' in logging_stream.getvalue())
-
-
-class EndToEndTest(unittest.TestCase):
- def test_reftest_with_two_notrefs(self):
- # Test that we update expectations in place. If the expectation
- # is missing, update the expected generic location.
- host = MockHost()
- _, _, _ = logging_run(['--no-show-results', 'reftests/foo/'], tests_included=True, host=host)
- file_list = host.filesystem.written_files.keys()
-
- json_string = host.filesystem.read_text_file('/tmp/layout-test-results/full_results.json')
- json = parse_full_results(json_string)
- self.assertTrue("multiple-match-success.html" not in json["tests"]["reftests"]["foo"])
- self.assertTrue("multiple-mismatch-success.html" not in json["tests"]["reftests"]["foo"])
- self.assertTrue("multiple-both-success.html" not in json["tests"]["reftests"]["foo"])
- self.assertEqual(json["tests"]["reftests"]["foo"]["multiple-match-failure.html"],
- {"expected": "PASS", "actual": "IMAGE", "reftest_type": ["=="], "image_diff_percent": 1})
- self.assertEqual(json["tests"]["reftests"]["foo"]["multiple-mismatch-failure.html"],
- {"expected": "PASS", "actual": "IMAGE", "reftest_type": ["!="]})
- self.assertEqual(json["tests"]["reftests"]["foo"]["multiple-both-failure.html"],
- {"expected": "PASS", "actual": "IMAGE", "reftest_type": ["==", "!="]})
-
-
-class RebaselineTest(unittest.TestCase, StreamTestingMixin):
- def assertBaselines(self, file_list, file, extensions, err):
- "assert that the file_list contains the baselines."""
- for ext in extensions:
- baseline = file + "-expected" + ext
- baseline_msg = 'Writing new expected result "%s"\n' % baseline
- self.assertTrue(any(f.find(baseline) != -1 for f in file_list))
- self.assertContains(err, baseline_msg)
-
- # FIXME: Add tests to ensure that we're *not* writing baselines when we're not
- # supposed to be.
-
- def test_reset_results(self):
- # Test that we update expectations in place. If the expectation
- # is missing, update the expected generic location.
- host = MockHost()
- details, err, _ = logging_run(
- ['--pixel-tests', '--reset-results', 'passes/image.html', 'failures/expected/missing_image.html'],
- tests_included=True, host=host, new_results=True)
- file_list = host.filesystem.written_files.keys()
- self.assertEqual(details.exit_code, 0)
- self.assertEqual(len(file_list), 8)
- self.assertBaselines(file_list, "passes/image", [".txt", ".png"], err)
- self.assertBaselines(file_list, "failures/expected/missing_image", [".txt", ".png"], err)
-
- def test_missing_results(self):
- # Test that we update expectations in place. If the expectation
- # is missing, update the expected generic location.
- host = MockHost()
- details, err, _ = logging_run(['--no-show-results',
- 'failures/unexpected/missing_text.html',
- 'failures/unexpected/missing_image.html',
- 'failures/unexpected/missing_audio.html',
- 'failures/unexpected/missing_render_tree_dump.html'],
- tests_included=True, host=host, new_results=True)
- file_list = host.filesystem.written_files.keys()
- self.assertEqual(details.exit_code, 0)
- self.assertEqual(len(file_list), 10)
- self.assertBaselines(file_list, "failures/unexpected/missing_text", [".txt"], err)
- self.assertBaselines(file_list, "platform/test/failures/unexpected/missing_image", [".png"], err)
- self.assertBaselines(file_list, "platform/test/failures/unexpected/missing_render_tree_dump", [".txt"], err)
-
- def test_new_baseline(self):
- # Test that we update the platform expectations in the version-specific directories
- # for both existing and new baselines.
- host = MockHost()
- details, err, _ = logging_run(
- ['--pixel-tests', '--new-baseline', 'passes/image.html', 'failures/expected/missing_image.html'],
- tests_included=True, host=host, new_results=True)
- file_list = host.filesystem.written_files.keys()
- self.assertEqual(details.exit_code, 0)
- self.assertEqual(len(file_list), 8)
- self.assertBaselines(file_list,
- "platform/test-mac-leopard/passes/image", [".txt", ".png"], err)
- self.assertBaselines(file_list,
- "platform/test-mac-leopard/failures/expected/missing_image", [".txt", ".png"], err)
-
-
-class PortTest(unittest.TestCase):
- def assert_mock_port_works(self, port_name, args=[]):
- self.assertTrue(passing_run(args + ['--platform', 'mock-' + port_name, 'fast/harness/results.html'], tests_included=True, host=Host()))
-
- def disabled_test_chromium_mac_lion(self):
- self.assert_mock_port_works('chromium-mac-lion')
-
- def disabled_test_chromium_mac_lion_in_test_shell_mode(self):
- self.assert_mock_port_works('chromium-mac-lion', args=['--additional-drt-flag=--test-shell'])
-
- def disabled_test_qt_linux(self):
- self.assert_mock_port_works('qt-linux')
-
- def disabled_test_mac_lion(self):
- self.assert_mock_port_works('mac-lion')
-
-
-class MainTest(unittest.TestCase):
- def test_exception_handling(self):
- orig_run_fn = run_webkit_tests.run
-
- # unused args pylint: disable=W0613
- def interrupting_run(port, options, args, stderr):
- raise KeyboardInterrupt
-
- def successful_run(port, options, args, stderr):
-
- class FakeRunDetails(object):
- exit_code = -1
-
- return FakeRunDetails()
-
- def exception_raising_run(port, options, args, stderr):
- assert False
-
- stdout = StringIO.StringIO()
- stderr = StringIO.StringIO()
- try:
- run_webkit_tests.run = interrupting_run
- res = run_webkit_tests.main([], stdout, stderr)
- self.assertEqual(res, run_webkit_tests.INTERRUPTED_EXIT_STATUS)
-
- run_webkit_tests.run = successful_run
- res = run_webkit_tests.main(['--platform', 'test'], stdout, stderr)
- self.assertEqual(res, -1)
-
- run_webkit_tests.run = exception_raising_run
- res = run_webkit_tests.main([], stdout, stderr)
- self.assertEqual(res, run_webkit_tests.EXCEPTIONAL_EXIT_STATUS)
- finally:
- run_webkit_tests.run = orig_run_fn
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/__init__.py b/Tools/Scripts/webkitpy/layout_tests/servers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py b/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py
deleted file mode 100644
index eb64d8299..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py
+++ /dev/null
@@ -1,192 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""A class to start/stop the apache http server used by layout tests."""
-
-
-import logging
-import os
-import re
-import socket
-import sys
-
-from webkitpy.layout_tests.servers import http_server_base
-
-
-_log = logging.getLogger(__name__)
-
-
-class LayoutTestApacheHttpd(http_server_base.HttpServerBase):
- def __init__(self, port_obj, output_dir, additional_dirs=None, number_of_servers=None):
- """Args:
- port_obj: handle to the platform-specific routines
- output_dir: the absolute path to the layout test result directory
- """
- http_server_base.HttpServerBase.__init__(self, port_obj, number_of_servers)
- # We use the name "httpd" instead of "apache" to make our paths (e.g. the pid file: /tmp/WebKit/httpd.pid)
- # match old-run-webkit-tests: https://bugs.webkit.org/show_bug.cgi?id=63956
- self._name = 'httpd'
- self._mappings = [{'port': 8000},
- {'port': 8080},
- {'port': 8443, 'sslcert': True}]
- self._output_dir = output_dir
- self._filesystem.maybe_make_directory(output_dir)
-
- self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % self._name)
-
- test_dir = self._port_obj.layout_tests_dir()
- js_test_resources_dir = self._filesystem.join(test_dir, "fast", "js", "resources")
- media_resources_dir = self._filesystem.join(test_dir, "media")
- mime_types_path = self._filesystem.join(test_dir, "http", "conf", "mime.types")
- cert_file = self._filesystem.join(test_dir, "http", "conf", "webkit-httpd.pem")
- access_log = self._filesystem.join(output_dir, "access_log.txt")
- error_log = self._filesystem.join(output_dir, "error_log.txt")
- document_root = self._filesystem.join(test_dir, "http", "tests")
-
- # FIXME: We shouldn't be calling a protected method of _port_obj!
- executable = self._port_obj._path_to_apache()
-
- start_cmd = [executable,
- '-f', "\"%s\"" % self._get_apache_config_file_path(test_dir, output_dir),
- '-C', "\'DocumentRoot \"%s\"\'" % document_root,
- '-c', "\'Alias /js-test-resources \"%s\"'" % js_test_resources_dir,
- '-c', "\'Alias /media-resources \"%s\"'" % media_resources_dir,
- '-c', "\'TypesConfig \"%s\"\'" % mime_types_path,
- '-c', "\'CustomLog \"%s\" common\'" % access_log,
- '-c', "\'ErrorLog \"%s\"\'" % error_log,
- '-C', "\'User \"%s\"\'" % os.environ.get("USERNAME", os.environ.get("USER", "")),
- '-c', "\'PidFile %s'" % self._pid_file,
- '-k', "start"]
-
- enable_ipv6 = self._port_obj.http_server_supports_ipv6()
- # Perform part of the checks Apache's APR does when trying to listen to
- # a specific host/port. This allows us to avoid trying to listen to
- # IPV6 addresses when it fails on Apache. APR itself tries to call
- # getaddrinfo() again without AI_ADDRCONFIG if the first call fails
- # with EBADFLAGS, but that is not how it normally fails in our use
- # cases, so ignore that for now.
- # See https://bugs.webkit.org/show_bug.cgi?id=98602#c7
- try:
- socket.getaddrinfo('::1', 0, 0, 0, 0, socket.AI_ADDRCONFIG)
- except:
- enable_ipv6 = False
-
- for mapping in self._mappings:
- port = mapping['port']
-
- start_cmd += ['-C', "\'Listen 127.0.0.1:%d\'" % port]
-
- # We listen to both IPv4 and IPv6 loop-back addresses, but ignore
- # requests to 8000 from random users on network.
- # See https://bugs.webkit.org/show_bug.cgi?id=37104
- if enable_ipv6:
- start_cmd += ['-C', "\'Listen [::1]:%d\'" % port]
-
- if additional_dirs:
- for alias, path in additional_dirs.iteritems():
- start_cmd += ['-c', "\'Alias %s \"%s\"\'" % (alias, path),
- # Disable CGI handler for additional dirs.
- '-c', "\'<Location %s>\'" % alias,
- '-c', "\'RemoveHandler .cgi .pl\'",
- '-c', "\'</Location>\'"]
-
- if self._number_of_servers:
- start_cmd += ['-c', "\'StartServers %d\'" % self._number_of_servers,
- '-c', "\'MinSpareServers %d\'" % self._number_of_servers,
- '-c', "\'MaxSpareServers %d\'" % self._number_of_servers]
-
- stop_cmd = [executable,
- '-f', "\"%s\"" % self._get_apache_config_file_path(test_dir, output_dir),
- '-c', "\'PidFile %s'" % self._pid_file,
- '-k', "stop"]
-
- start_cmd.extend(['-c', "\'SSLCertificateFile %s\'" % cert_file])
- # Join the string here so that Cygwin/Windows and Mac/Linux
- # can use the same code. Otherwise, we could remove the single
- # quotes above and keep cmd as a sequence.
- # FIXME: It's unclear if this is still needed.
- self._start_cmd = " ".join(start_cmd)
- self._stop_cmd = " ".join(stop_cmd)
-
- def _get_apache_config_file_path(self, test_dir, output_dir):
- """Returns the path to the apache config file to use.
- Args:
- test_dir: absolute path to the LayoutTests directory.
- output_dir: absolute path to the layout test results directory.
- """
- httpd_config = self._port_obj._path_to_apache_config_file()
- httpd_config_copy = os.path.join(output_dir, "httpd.conf")
- httpd_conf = self._filesystem.read_text_file(httpd_config)
-
- # FIXME: Why do we need to copy the config file since we're not modifying it?
- self._filesystem.write_text_file(httpd_config_copy, httpd_conf)
-
- return httpd_config_copy
-
- def _spawn_process(self):
- _log.debug('Starting %s server, cmd="%s"' % (self._name, str(self._start_cmd)))
- retval, err = self._run(self._start_cmd)
- if retval or len(err):
- raise http_server_base.ServerError('Failed to start %s: %s' % (self._name, err))
-
- # For some reason apache isn't guaranteed to have created the pid file before
- # the process exits, so we wait a little while longer.
- if not self._wait_for_action(lambda: self._filesystem.exists(self._pid_file)):
- raise http_server_base.ServerError('Failed to start %s: no pid file found' % self._name)
-
- return int(self._filesystem.read_text_file(self._pid_file))
-
- def _stop_running_server(self):
- # If apache was forcefully killed, the pid file will not have been deleted, so check
- # that the process specified by the pid_file no longer exists before deleting the file.
- if self._pid and not self._executive.check_running_pid(self._pid):
- self._filesystem.remove(self._pid_file)
- return
-
- retval, err = self._run(self._stop_cmd)
- if retval or len(err):
- raise http_server_base.ServerError('Failed to stop %s: %s' % (self._name, err))
-
- # For some reason apache isn't guaranteed to have actually stopped after
- # the stop command returns, so we wait a little while longer for the
- # pid file to be removed.
- if not self._wait_for_action(lambda: not self._filesystem.exists(self._pid_file)):
- raise http_server_base.ServerError('Failed to stop %s: pid file still exists' % self._name)
-
- def _run(self, cmd):
- # Use shell=True because we join the arguments into a string for
- # the sake of Window/Cygwin and it needs quoting that breaks
- # shell=False.
- # FIXME: We should not need to be joining shell arguments into strings.
- # shell=True is a trail of tears.
- # Note: Not thread safe: http://bugs.python.org/issue2320
- process = self._executive.popen(cmd, shell=True, stderr=self._executive.PIPE)
- process.wait()
- retval = process.returncode
- err = process.stderr.read()
- return (retval, err)
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py b/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py
deleted file mode 100644
index 5b4ffa79a..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2012 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.
-
-import re
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.host_mock import MockHost
-from webkitpy.port import test
-from webkitpy.layout_tests.servers.apache_http_server import LayoutTestApacheHttpd
-from webkitpy.layout_tests.servers.http_server_base import ServerError
-
-
-class TestLayoutTestApacheHttpd(unittest.TestCase):
- def test_start_cmd(self):
- # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726
- if sys.platform in ('cygwin', 'win32'):
- return
-
- def fake_pid(_):
- host.filesystem.write_text_file('/tmp/WebKit/httpd.pid', '42')
- return True
-
- host = MockHost()
- host.executive = MockExecutive(should_log=True)
- test_port = test.TestPort(host)
- host.filesystem.write_text_file(test_port._path_to_apache_config_file(), '')
-
- server = LayoutTestApacheHttpd(test_port, "/mock/output_dir", number_of_servers=4)
- server._check_that_all_ports_are_available = lambda: True
- server._is_server_running_on_all_ports = lambda: True
- server._wait_for_action = fake_pid
- oc = OutputCapture()
- try:
- oc.capture_output()
- server.start()
- server.stop()
- finally:
- _, _, logs = oc.restore_output()
- self.assertIn("StartServers 4", logs)
- self.assertIn("MinSpareServers 4", logs)
- self.assertIn("MaxSpareServers 4", logs)
- self.assertTrue(host.filesystem.exists("/mock/output_dir/httpd.conf"))
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/http_server.py b/Tools/Scripts/webkitpy/layout_tests/servers/http_server.py
deleted file mode 100644
index 604f76b89..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/http_server.py
+++ /dev/null
@@ -1,228 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""A class to help start/stop the lighttpd server used by layout tests."""
-
-import logging
-import os
-import time
-
-from webkitpy.layout_tests.servers import http_server_base
-
-
-_log = logging.getLogger(__name__)
-
-
-class Lighttpd(http_server_base.HttpServerBase):
-
- def __init__(self, port_obj, output_dir, background=False, port=None,
- root=None, run_background=None, additional_dirs=None,
- layout_tests_dir=None, number_of_servers=None):
- """Args:
- output_dir: the absolute path to the layout test result directory
- """
- # Webkit tests
- http_server_base.HttpServerBase.__init__(self, port_obj, number_of_servers)
- self._name = 'lighttpd'
- self._output_dir = output_dir
- self._port = port
- self._root = root
- self._run_background = run_background
- self._additional_dirs = additional_dirs
- self._layout_tests_dir = layout_tests_dir
-
- self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % self._name)
-
- if self._port:
- self._port = int(self._port)
-
- if not self._layout_tests_dir:
- self._layout_tests_dir = self._port_obj.layout_tests_dir()
-
- self._webkit_tests = os.path.join(self._layout_tests_dir, 'http', 'tests')
- self._js_test_resource = os.path.join(self._layout_tests_dir, 'fast', 'js', 'resources')
- self._media_resource = os.path.join(self._layout_tests_dir, 'media')
-
- # Self generated certificate for SSL server (for client cert get
- # <base-path>\chrome\test\data\ssl\certs\root_ca_cert.crt)
- self._pem_file = os.path.join(
- os.path.dirname(os.path.abspath(__file__)), 'httpd2.pem')
-
- # One mapping where we can get to everything
- self.VIRTUALCONFIG = []
-
- if self._webkit_tests:
- self.VIRTUALCONFIG.extend(
- # Three mappings (one with SSL) for LayoutTests http tests
- [{'port': 8000, 'docroot': self._webkit_tests},
- {'port': 8080, 'docroot': self._webkit_tests},
- {'port': 8443, 'docroot': self._webkit_tests,
- 'sslcert': self._pem_file}])
-
- def _prepare_config(self):
- base_conf_file = self._port_obj.path_from_webkit_base('Tools',
- 'Scripts', 'webkitpy', 'layout_tests', 'servers', 'lighttpd.conf')
- out_conf_file = os.path.join(self._output_dir, 'lighttpd.conf')
- time_str = time.strftime("%d%b%Y-%H%M%S")
- access_file_name = "access.log-" + time_str + ".txt"
- access_log = os.path.join(self._output_dir, access_file_name)
- log_file_name = "error.log-" + time_str + ".txt"
- error_log = os.path.join(self._output_dir, log_file_name)
-
- # Write out the config
- base_conf = self._filesystem.read_text_file(base_conf_file)
-
- # FIXME: This should be re-worked so that this block can
- # use with open() instead of a manual file.close() call.
- f = self._filesystem.open_text_file_for_writing(out_conf_file)
- f.write(base_conf)
-
- # Write out our cgi handlers. Run perl through env so that it
- # processes the #! line and runs perl with the proper command
- # line arguments. Emulate apache's mod_asis with a cat cgi handler.
- f.write(('cgi.assign = ( ".cgi" => "/usr/bin/env",\n'
- ' ".pl" => "/usr/bin/env",\n'
- ' ".asis" => "/bin/cat",\n'
- ' ".php" => "%s" )\n\n') %
- self._port_obj._path_to_lighttpd_php())
-
- # Setup log files
- f.write(('server.errorlog = "%s"\n'
- 'accesslog.filename = "%s"\n\n') % (error_log, access_log))
-
- # Setup upload folders. Upload folder is to hold temporary upload files
- # and also POST data. This is used to support XHR layout tests that
- # does POST.
- f.write(('server.upload-dirs = ( "%s" )\n\n') % (self._output_dir))
-
- # Setup a link to where the js test templates are stored
- f.write(('alias.url = ( "/js-test-resources" => "%s" )\n\n') %
- (self._js_test_resource))
-
- if self._additional_dirs:
- for alias, path in self._additional_dirs.iteritems():
- f.write(('alias.url += ( "%s" => "%s" )\n\n') % (alias, path))
-
- # Setup a link to where the media resources are stored.
- f.write(('alias.url += ( "/media-resources" => "%s" )\n\n') %
- (self._media_resource))
-
- # dump out of virtual host config at the bottom.
- if self._root:
- if self._port:
- # Have both port and root dir.
- mappings = [{'port': self._port, 'docroot': self._root}]
- else:
- # Have only a root dir - set the ports as for LayoutTests.
- # This is used in ui_tests to run http tests against a browser.
-
- # default set of ports as for LayoutTests but with a
- # specified root.
- mappings = [{'port': 8000, 'docroot': self._root},
- {'port': 8080, 'docroot': self._root},
- {'port': 8443, 'docroot': self._root,
- 'sslcert': self._pem_file}]
- else:
- mappings = self.VIRTUALCONFIG
- for mapping in mappings:
- ssl_setup = ''
- if 'sslcert' in mapping:
- ssl_setup = (' ssl.engine = "enable"\n'
- ' ssl.pemfile = "%s"\n' % mapping['sslcert'])
-
- f.write(('$SERVER["socket"] == "127.0.0.1:%d" {\n'
- ' server.document-root = "%s"\n' +
- ssl_setup +
- '}\n\n') % (mapping['port'], mapping['docroot']))
- f.close()
-
- executable = self._port_obj._path_to_lighttpd()
- module_path = self._port_obj._path_to_lighttpd_modules()
- start_cmd = [executable,
- # Newly written config file
- '-f', os.path.join(self._output_dir, 'lighttpd.conf'),
- # Where it can find its module dynamic libraries
- '-m', module_path]
-
- if not self._run_background:
- start_cmd.append(# Don't background
- '-D')
-
- # Copy liblightcomp.dylib to /tmp/lighttpd/lib to work around the
- # bug that mod_alias.so loads it from the hard coded path.
- if self._port_obj.host.platform.is_mac():
- tmp_module_path = '/tmp/lighttpd/lib'
- if not self._filesystem.exists(tmp_module_path):
- self._filesystem.maybe_make_directory(tmp_module_path)
- lib_file = 'liblightcomp.dylib'
- self._filesystem.copyfile(self._filesystem.join(module_path, lib_file),
- self._filesystem.join(tmp_module_path, lib_file))
-
- self._start_cmd = start_cmd
- self._env = self._port_obj.setup_environ_for_server('lighttpd')
- self._mappings = mappings
-
- def _remove_stale_logs(self):
- # Sometimes logs are open in other processes but they should clear eventually.
- for log_prefix in ('access.log-', 'error.log-'):
- try:
- self._remove_log_files(self._output_dir, log_prefix)
- except OSError, e:
- _log.warning('Failed to remove old %s %s files' % (self._name, log_prefix))
-
- def _spawn_process(self):
- _log.debug('Starting %s server, cmd="%s"' % (self._name, self._start_cmd))
- process = self._executive.popen(self._start_cmd, env=self._env, shell=False, stderr=self._executive.PIPE)
- pid = process.pid
- self._filesystem.write_text_file(self._pid_file, str(pid))
- return pid
-
- def _stop_running_server(self):
- # FIXME: It would be nice if we had a cleaner way of killing this process.
- # Currently we throw away the process object created in _spawn_process,
- # since there doesn't appear to be any way to kill the server any more
- # cleanly using it than just killing the pid, and we need to support
- # killing a pid directly anyway for run-webkit-httpd and run-webkit-websocketserver.
- self._wait_for_action(self._check_and_kill)
- if self._filesystem.exists(self._pid_file):
- self._filesystem.remove(self._pid_file)
-
- def _check_and_kill(self):
- if self._executive.check_running_pid(self._pid):
- host = self._port_obj.host
- if host.platform.is_win() and not host.platform.is_cygwin():
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=106838
- # We need to kill all of the child processes as well as the
- # parent, so we can't use executive.kill_process().
- #
- # If this is actually working, we should figure out a clean API.
- self._executive.run_command(["taskkill.exe", "/f", "/t", "/pid", self._pid], error_handler=self._executive.ignore_error)
- else:
- self._executive.kill_process(self._pid)
- return False
- return True
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py b/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py
deleted file mode 100644
index 3ce15a568..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py
+++ /dev/null
@@ -1,217 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Base class with common routines between the Apache, Lighttpd, and websocket servers."""
-
-import errno
-import logging
-import socket
-import sys
-import tempfile
-import time
-
-
-_log = logging.getLogger(__name__)
-
-
-class ServerError(Exception):
- pass
-
-
-class HttpServerBase(object):
- """A skeleton class for starting and stopping servers used by the layout tests."""
-
- def __init__(self, port_obj, number_of_servers=None):
- self._executive = port_obj._executive
- self._filesystem = port_obj._filesystem
- self._name = '<virtual>'
- self._mappings = {}
- self._pid = None
- self._pid_file = None
- self._port_obj = port_obj
- self._number_of_servers = number_of_servers
-
- # We need a non-checkout-dependent place to put lock files, etc. We
- # don't use the Python default on the Mac because it defaults to a
- # randomly-generated directory under /var/folders and no one would ever
- # look there.
- tmpdir = tempfile.gettempdir()
- if port_obj.host.platform.is_mac():
- tmpdir = '/tmp'
-
- self._runtime_path = self._filesystem.join(tmpdir, "WebKit")
- self._filesystem.maybe_make_directory(self._runtime_path)
-
- def start(self):
- """Starts the server. It is an error to start an already started server.
-
- This method also stops any stale servers started by a previous instance."""
- assert not self._pid, '%s server is already running' % self._name
-
- # Stop any stale servers left over from previous instances.
- if self._filesystem.exists(self._pid_file):
- try:
- self._pid = int(self._filesystem.read_text_file(self._pid_file))
- self._stop_running_server()
- except (ValueError, UnicodeDecodeError):
- # These could be raised if the pid file is corrupt.
- self._remove_pid_file()
- self._pid = None
-
- self._remove_stale_logs()
- self._prepare_config()
- self._check_that_all_ports_are_available()
-
- self._pid = self._spawn_process()
-
- if self._wait_for_action(self._is_server_running_on_all_ports):
- _log.debug("%s successfully started (pid = %d)" % (self._name, self._pid))
- else:
- self._stop_running_server()
- raise ServerError('Failed to start %s server' % self._name)
-
- def stop(self):
- """Stops the server. Stopping a server that isn't started is harmless."""
- actual_pid = None
- try:
- if self._filesystem.exists(self._pid_file):
- try:
- actual_pid = int(self._filesystem.read_text_file(self._pid_file))
- except (ValueError, UnicodeDecodeError):
- # These could be raised if the pid file is corrupt.
- pass
- if not self._pid:
- self._pid = actual_pid
-
- if not self._pid:
- return
-
- if not actual_pid:
- _log.warning('Failed to stop %s: pid file is missing' % self._name)
- return
- if self._pid != actual_pid:
- _log.warning('Failed to stop %s: pid file contains %d, not %d' %
- (self._name, actual_pid, self._pid))
- # Try to kill the existing pid, anyway, in case it got orphaned.
- self._executive.kill_process(self._pid)
- self._pid = None
- return
-
- _log.debug("Attempting to shut down %s server at pid %d" % (self._name, self._pid))
- self._stop_running_server()
- _log.debug("%s server at pid %d stopped" % (self._name, self._pid))
- self._pid = None
- finally:
- # Make sure we delete the pid file no matter what happens.
- self._remove_pid_file()
-
- def _prepare_config(self):
- """This routine can be overridden by subclasses to do any sort
- of initialization required prior to starting the server that may fail."""
- pass
-
- def _remove_stale_logs(self):
- """This routine can be overridden by subclasses to try and remove logs
- left over from a prior run. This routine should log warnings if the
- files cannot be deleted, but should not fail unless failure to
- delete the logs will actually cause start() to fail."""
- pass
-
- def _spawn_process(self):
- """This routine must be implemented by subclasses to actually start the server.
-
- This routine returns the pid of the started process, and also ensures that that
- pid has been written to self._pid_file."""
- raise NotImplementedError()
-
- def _stop_running_server(self):
- """This routine must be implemented by subclasses to actually stop the running server listed in self._pid_file."""
- raise NotImplementedError()
-
- # Utility routines.
-
- def _remove_pid_file(self):
- if self._filesystem.exists(self._pid_file):
- self._filesystem.remove(self._pid_file)
-
- def _remove_log_files(self, folder, starts_with):
- files = self._filesystem.listdir(folder)
- for file in files:
- if file.startswith(starts_with):
- full_path = self._filesystem.join(folder, file)
- self._filesystem.remove(full_path)
-
- def _wait_for_action(self, action, wait_secs=20.0, sleep_secs=1.0):
- """Repeat the action for wait_sec or until it succeeds, sleeping for sleep_secs
- in between each attempt. Returns whether it succeeded."""
- start_time = time.time()
- while time.time() - start_time < wait_secs:
- if action():
- return True
- _log.debug("Waiting for action: %s" % action)
- time.sleep(sleep_secs)
-
- return False
-
- def _is_server_running_on_all_ports(self):
- """Returns whether the server is running on all the desired ports."""
- if not self._executive.check_running_pid(self._pid):
- _log.debug("Server isn't running at all")
- raise ServerError("Server exited")
-
- for mapping in self._mappings:
- s = socket.socket()
- port = mapping['port']
- try:
- s.connect(('localhost', port))
- _log.debug("Server running on %d" % port)
- except IOError, e:
- if e.errno not in (errno.ECONNREFUSED, errno.ECONNRESET):
- raise
- _log.debug("Server NOT running on %d: %s" % (port, e))
- return False
- finally:
- s.close()
- return True
-
- def _check_that_all_ports_are_available(self):
- for mapping in self._mappings:
- s = socket.socket()
- s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- port = mapping['port']
- try:
- s.bind(('localhost', port))
- except IOError, e:
- if e.errno in (errno.EALREADY, errno.EADDRINUSE):
- raise ServerError('Port %d is already in use.' % port)
- elif sys.platform == 'win32' and e.errno in (errno.WSAEACCES,): # pylint: disable=E1101
- raise ServerError('Port %d is already in use.' % port)
- else:
- raise
- finally:
- s.close()
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py b/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py
deleted file mode 100644
index 2cf1d2cf0..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_base_unittest.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.port import test
-from webkitpy.layout_tests.servers.http_server_base import HttpServerBase
-
-
-class TestHttpServerBase(unittest.TestCase):
- def test_corrupt_pid_file(self):
- # This tests that if the pid file is corrupt or invalid,
- # both start() and stop() deal with it correctly and delete the file.
- host = MockHost()
- test_port = test.TestPort(host)
-
- server = HttpServerBase(test_port)
- server._pid_file = '/tmp/pidfile'
- server._spawn_process = lambda: 4
- server._is_server_running_on_all_ports = lambda: True
-
- host.filesystem.write_text_file(server._pid_file, 'foo')
- server.stop()
- self.assertEqual(host.filesystem.files[server._pid_file], None)
-
- host.filesystem.write_text_file(server._pid_file, 'foo')
- server.start()
- self.assertEqual(server._pid, 4)
-
- # Note that the pid file would not be None if _spawn_process()
- # was actually a real implementation.
- self.assertEqual(host.filesystem.files[server._pid_file], None)
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py b/Tools/Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py
deleted file mode 100644
index aa6e59dc5..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_integrationtest.py
+++ /dev/null
@@ -1,145 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Integration tests for the new-run-webkit-httpd and new-run-webkit-websocketserver scripts"""
-
-# FIXME: Rename this file to something more descriptive.
-
-import errno
-import os
-import socket
-import subprocess
-import sys
-import tempfile
-import unittest2 as unittest
-
-
-class BaseTest(unittest.TestCase):
- """Basic framework for script tests."""
- HOST = 'localhost'
-
- # Override in actual test classes.
- PORTS = None
- SCRIPT_NAME = None
-
- def assert_servers_are_down(self, ports=None):
- ports = ports or self.PORTS
- for port in ports:
- try:
- test_socket = socket.socket()
- test_socket.connect((self.HOST, port))
- self.fail()
- except IOError, e:
- self.assertTrue(e.errno in (errno.ECONNREFUSED, errno.ECONNRESET))
- finally:
- test_socket.close()
-
- def assert_servers_are_up(self, ports=None):
- ports = ports or self.PORTS
- for port in ports:
- try:
- test_socket = socket.socket()
- test_socket.connect((self.HOST, port))
- except IOError, e:
- self.fail('failed to connect to %s:%d' % (self.HOST, port))
- finally:
- test_socket.close()
-
- def run_script(self, args):
- script_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
- script_path = os.path.join(script_dir, self.SCRIPT_NAME)
- return subprocess.call([sys.executable, script_path] + args, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
-
- def integration_test_server__normal(self):
- if not self.SCRIPT_NAME:
- return
-
- self.assert_servers_are_down()
- self.assertEqual(self.run_script(['--server', 'start']), 0)
- self.assert_servers_are_up()
- self.assertEqual(self.run_script(['--server', 'stop']), 0)
- self.assert_servers_are_down()
-
- def integration_test_server__fails(self):
- if not self.SCRIPT_NAME:
- return
-
- # Test that if a port isn't available, the call fails.
- for port_number in self.PORTS:
- test_socket = socket.socket()
- try:
- try:
- test_socket.bind((self.HOST, port_number))
- except socket.error, e:
- if e.errno in (errno.EADDRINUSE, errno.EALREADY):
- self.fail('could not bind to port %d: %s' % (port_number, str(e)))
- raise
- self.assertEqual(self.run_script(['--server', 'start']), 1)
- finally:
- self.run_script(['--server', 'stop'])
- test_socket.close()
-
- # Test that calling stop() twice is harmless.
- self.assertEqual(self.run_script(['--server', 'stop']), 0)
-
- def maybe_make_dir(self, *comps):
- try:
- os.makedirs(os.path.join(*comps))
- except OSError, e:
- if e.errno != errno.EEXIST:
- raise
-
- def integration_test_port_and_root(self):
- if not self.SCRIPT_NAME:
- return
-
- tmpdir = tempfile.mkdtemp(prefix='webkitpytest')
- self.maybe_make_dir(tmpdir, 'http', 'tests', 'websocket')
- self.maybe_make_dir(tmpdir, 'fast', 'js', 'resources')
- self.maybe_make_dir(tmpdir, 'media')
-
- self.assert_servers_are_down([18000])
- self.assertEqual(self.run_script(['--server', 'start', '--port=18000', '--root', tmpdir]), 0)
- self.assert_servers_are_up([18000])
- self.assertEqual(self.run_script(['--server', 'stop']), 0)
- self.assert_servers_are_down([18000])
-
-
-class HTTPServerTest(BaseTest):
- """Tests that new-run-webkit-http must pass."""
-
- PORTS = (8000, 8080, 8443)
- SCRIPT_NAME = 'new-run-webkit-httpd'
-
-
-class WebsocketserverTest(BaseTest):
- """Tests that new-run-webkit-websocketserver must pass."""
-
- # FIXME: test TLS at some point?
- PORTS = (8880, )
- SCRIPT_NAME = 'new-run-webkit-websocketserver'
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_unittest.py b/Tools/Scripts/webkitpy/layout_tests/servers/http_server_unittest.py
deleted file mode 100644
index 621838f00..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/http_server_unittest.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright (C) 2012 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.
-
-import re
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.port import test
-from webkitpy.layout_tests.servers.http_server import Lighttpd
-from webkitpy.layout_tests.servers.http_server_base import ServerError
-
-
-class TestHttpServer(unittest.TestCase):
- def test_start_cmd(self):
- # Fails on win - see https://bugs.webkit.org/show_bug.cgi?id=84726
- if sys.platform in ('cygwin', 'win32'):
- return
-
- host = MockHost()
- test_port = test.TestPort(host)
- host.filesystem.write_text_file(
- "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf", "Mock Config\n")
- host.filesystem.write_text_file(
- "/usr/lib/lighttpd/liblightcomp.dylib", "Mock dylib")
-
- server = Lighttpd(test_port, "/mock/output_dir",
- additional_dirs={
- "/mock/one-additional-dir": "/mock-checkout/one-additional-dir",
- "/mock/another-additional-dir": "/mock-checkout/one-additional-dir"})
- self.assertRaises(ServerError, server.start)
-
- config_file = host.filesystem.read_text_file("/mock/output_dir/lighttpd.conf")
- self.assertEqual(re.findall(r"alias.url.+", config_file), [
- 'alias.url = ( "/js-test-resources" => "/test.checkout/LayoutTests/fast/js/resources" )',
- 'alias.url += ( "/mock/one-additional-dir" => "/mock-checkout/one-additional-dir" )',
- 'alias.url += ( "/mock/another-additional-dir" => "/mock-checkout/one-additional-dir" )',
- 'alias.url += ( "/media-resources" => "/test.checkout/LayoutTests/media" )',
- ])
-
- def test_win32_start_and_stop(self):
- host = MockHost()
- test_port = test.TestPort(host)
- host.filesystem.write_text_file(
- "/mock-checkout/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf", "Mock Config\n")
- host.filesystem.write_text_file(
- "/usr/lib/lighttpd/liblightcomp.dylib", "Mock dylib")
-
- host.platform.is_win = lambda: True
- host.platform.is_cygwin = lambda: False
-
- server = Lighttpd(test_port, "/mock/output_dir",
- additional_dirs={
- "/mock/one-additional-dir": "/mock-checkout/one-additional-dir",
- "/mock/another-additional-dir": "/mock-checkout/one-additional-dir"})
- server._check_that_all_ports_are_available = lambda: True
- server._is_server_running_on_all_ports = lambda: True
-
- server.start()
- self.assertNotEquals(host.executive.calls, [])
-
- def wait_for_action(action):
- if action():
- return True
- return action()
-
- def mock_returns(return_values):
- def return_value_thunk(*args, **kwargs):
- return return_values.pop(0)
- return return_value_thunk
-
- host.executive.check_running_pid = mock_returns([True, False])
- server._wait_for_action = wait_for_action
-
- server.stop()
- self.assertEqual(['taskkill.exe', '/f', '/t', '/pid', 42], host.executive.calls[1])
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/httpd2.pem b/Tools/Scripts/webkitpy/layout_tests/servers/httpd2.pem
deleted file mode 100644
index 6349b782b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/httpd2.pem
+++ /dev/null
@@ -1,41 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIEZDCCAkygAwIBAgIBATANBgkqhkiG9w0BAQUFADBgMRAwDgYDVQQDEwdUZXN0
-IENBMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMN
-TW91bnRhaW4gVmlldzESMBAGA1UEChMJQ2VydCBUZXN0MB4XDTA4MDcyODIyMzIy
-OFoXDTEzMDcyNzIyMzIyOFowSjELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlm
-b3JuaWExEjAQBgNVBAoTCUNlcnQgVGVzdDESMBAGA1UEAxMJMTI3LjAuMC4xMIGf
-MA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU3
-3BdRCd67DFM44GRrsjDSH4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYG
-qgNiV2ywxTlMj7NlN2C7SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a
-3JPJe1TaIab5GwIDAQABo4HCMIG/MAkGA1UdEwQCMAAwHQYDVR0OBBYEFCYLBv5K
-x5sLNVlpLh5FwTwhdDl7MIGSBgNVHSMEgYowgYeAFF3Of5nj1BlBMU/Gz7El9Vqv
-45cxoWSkYjBgMRAwDgYDVQQDEwdUZXN0IENBMQswCQYDVQQGEwJVUzETMBEGA1UE
-CBMKQ2FsaWZvcm5pYTEWMBQGA1UEBxMNTW91bnRhaW4gVmlldzESMBAGA1UEChMJ
-Q2VydCBUZXN0ggkA1FGT1D/e2U4wDQYJKoZIhvcNAQEFBQADggIBAEtkVmLObUgk
-b2cIA2S+QDtifq1UgVfBbytvR2lFmnADOR55mo0gHQG3HHqq4g034LmoVXDHhUk8
-Gb6aFiv4QubmVhLXcUelTRXwiNvGzkW7pC6Jrq105hdPjzXMKTcmiLaopm5Fqfc7
-hj5Cn1Sjspc8pdeQjrbeMdvca7KlFrGP8YkwCU2xOOX9PiN9G0966BWfjnr/fZZp
-+OQVuUFHdiAZwthEMuDpAAXHqYXIsermgdOpgJaA53cf8NqBV2QGhtFgtsJCRoiu
-7DKqhyRWBGyz19VIH2b7y+6qvQVxuHk19kKRM0nftw/yNcJnm7gtttespMUPsOMa
-a2SD1G0hm0TND6vxaBhgR3cVqpl/qIpAdFi00Tm7hTyYE7I43zPW03t+/DpCt3Um
-EMRZsQ90co5q+bcx/vQ7YAtwUh30uMb0wpibeyCwDp8cqNmSiRkEuc/FjTYes5t8
-5gR//WX1l0+qjrjusO9NmoLnq2Yk6UcioX+z+q6Z/dudGfqhLfeWD2Q0LWYA242C
-d7km5Y3KAt1PJdVsof/aiVhVdddY/OIEKTRQhWEdDbosy2eh16BCKXT2FFvhNDg1
-AYFvn6I8nj9IldMJiIc3DdhacEAEzRMeRgPdzAa1griKUGknxsyTyRii8ru0WS6w
-DCNrlDOVXdzYGEZooBI76BDVY0W0akjV
------END CERTIFICATE-----
------BEGIN RSA PRIVATE KEY-----
-MIICXQIBAAKBgQDQj2tPWPUgbuI4H3/3dnttqVbndwU33BdRCd67DFM44GRrsjDS
-H4bY/EbFyX9D52d/iy6ZaAmDePcCz5k/fgP3DMujykYGqgNiV2ywxTlMj7NlN2C7
-SRt68fQMZr5iI7rypdxuaZt9lSMD3ENBffYtuLTyZd9a3JPJe1TaIab5GwIDAQAB
-AoGANHXu8z2YIzlhE+bwhGm8MGBpKL3qhRuKjeriqMA36tWezOw8lY4ymEAU+Ulv
-BsCdaxqydQoTYou57m4TyUHEcxq9pq3H0zB0qL709DdHi/t4zbV9XIoAzC5v0/hG
-9+Ca29TwC02FCw+qLkNrtwCpwOcQmc+bPxqvFu1iMiahURECQQD2I/Hi2413CMZz
-TBjl8fMiVO9GhA2J0sc8Qi+YcgJakaLD9xcbaiLkTzPZDlA389C1b6Ia+poAr4YA
-Ve0FFbxpAkEA2OobayyHE/QtPEqoy6NLR57jirmVBNmSWWd4lAyL5UIHIYVttJZg
-8CLvbzaU/iDGwR+wKsM664rKPHEmtlyo4wJBAMeSqYO5ZOCJGu9NWjrHjM3fdAsG
-8zs2zhiLya+fcU0iHIksBW5TBmt71Jw/wMc9R5J1K0kYvFml98653O5si1ECQBCk
-RV4/mE1rmlzZzYFyEcB47DQkcM5ictvxGEsje0gnfKyRtAz6zI0f4QbDRUMJ+LWw
-XK+rMsYHa+SfOb0b9skCQQCLdeonsIpFDv/Uv+flHISy0WA+AFkLXrRkBKh6G/OD
-dMHaNevkJgUnpceVEnkrdenp5CcEoFTI17pd+nBgDm/B
------END RSA PRIVATE KEY-----
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf b/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf
deleted file mode 100644
index 4360c37d9..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/lighttpd.conf
+++ /dev/null
@@ -1,89 +0,0 @@
-server.tag = "LightTPD/1.4.19 (Win32)"
-server.modules = ( "mod_accesslog",
- "mod_alias",
- "mod_cgi",
- "mod_rewrite" )
-
-# default document root required
-server.document-root = "."
-
-# files to check for if .../ is requested
-index-file.names = ( "index.php", "index.pl", "index.cgi",
- "index.html", "index.htm", "default.htm" )
-# mimetype mapping
-mimetype.assign = (
- ".gif" => "image/gif",
- ".jpg" => "image/jpeg",
- ".jpeg" => "image/jpeg",
- ".png" => "image/png",
- ".svg" => "image/svg+xml",
- ".css" => "text/css",
- ".html" => "text/html",
- ".htm" => "text/html",
- ".xhtml" => "application/xhtml+xml",
- ".js" => "application/x-javascript",
- ".log" => "text/plain",
- ".conf" => "text/plain",
- ".text" => "text/plain",
- ".txt" => "text/plain",
- ".dtd" => "text/xml",
- ".xml" => "text/xml",
- ".manifest" => "text/cache-manifest",
- )
-
-# Use the "Content-Type" extended attribute to obtain mime type if possible
-mimetype.use-xattr = "enable"
-
-##
-# which extensions should not be handle via static-file transfer
-#
-# .php, .pl, .fcgi are most often handled by mod_fastcgi or mod_cgi
-static-file.exclude-extensions = ( ".php", ".pl", ".cgi" )
-
-server.bind = "localhost"
-server.port = 8001
-
-## virtual directory listings
-dir-listing.activate = "enable"
-#dir-listing.encoding = "iso-8859-2"
-#dir-listing.external-css = "style/oldstyle.css"
-
-## enable debugging
-#debug.log-request-header = "enable"
-#debug.log-response-header = "enable"
-#debug.log-request-handling = "enable"
-#debug.log-file-not-found = "enable"
-
-#### SSL engine
-#ssl.engine = "enable"
-#ssl.pemfile = "server.pem"
-
-# Rewrite rule for utf-8 path test (LayoutTests/http/tests/uri/utf8-path.html)
-# See the apache rewrite rule at LayoutTests/http/tests/uri/intercept/.htaccess
-# Rewrite rule for LayoutTests/http/tests/appcache/cyrillic-uri.html.
-# See the apache rewrite rule at
-# LayoutTests/http/tests/appcache/resources/intercept/.htaccess
-url.rewrite-once = (
- "^/uri/intercept/(.*)" => "/uri/resources/print-uri.php",
- "^/appcache/resources/intercept/(.*)" => "/appcache/resources/print-uri.php"
-)
-
-# LayoutTests/http/tests/xmlhttprequest/response-encoding.html uses an htaccess
-# to override charset for reply2.txt, reply2.xml, and reply4.txt.
-$HTTP["url"] =~ "^/xmlhttprequest/resources/reply2.(txt|xml)" {
- mimetype.assign = (
- ".txt" => "text/plain; charset=windows-1251",
- ".xml" => "text/xml; charset=windows-1251"
- )
-}
-$HTTP["url"] =~ "^/xmlhttprequest/resources/reply4.txt" {
- mimetype.assign = ( ".txt" => "text/plain; charset=koi8-r" )
-}
-
-# LayoutTests/http/tests/appcache/wrong-content-type.html uses an htaccess
-# to override mime type for wrong-content-type.manifest.
-$HTTP["url"] =~ "^/appcache/resources/wrong-content-type.manifest" {
- mimetype.assign = ( ".manifest" => "text/plain" )
-}
-
-# Autogenerated test-specific config follows.
diff --git a/Tools/Scripts/webkitpy/layout_tests/servers/websocket_server.py b/Tools/Scripts/webkitpy/layout_tests/servers/websocket_server.py
deleted file mode 100644
index 2ffdc321d..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/servers/websocket_server.py
+++ /dev/null
@@ -1,176 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""A class to help start/stop the PyWebSocket server used by layout tests."""
-
-import logging
-import os
-import sys
-import time
-
-from webkitpy.layout_tests.servers import http_server
-from webkitpy.layout_tests.servers import http_server_base
-
-_log = logging.getLogger(__name__)
-
-
-_WS_LOG_PREFIX = 'pywebsocket.ws.log-'
-_WSS_LOG_PREFIX = 'pywebsocket.wss.log-'
-
-
-_DEFAULT_WS_PORT = 8880
-_DEFAULT_WSS_PORT = 9323
-
-
-class PyWebSocket(http_server.Lighttpd):
- def __init__(self, port_obj, output_dir, port=_DEFAULT_WS_PORT,
- root=None, use_tls=False,
- private_key=None, certificate=None, ca_certificate=None,
- pidfile=None):
- """Args:
- output_dir: the absolute path to the layout test result directory
- """
- http_server.Lighttpd.__init__(self, port_obj, output_dir,
- port=_DEFAULT_WS_PORT,
- root=root)
- self._output_dir = output_dir
- self._pid_file = pidfile
- self._process = None
-
- self._port = port
- self._root = root
- self._use_tls = use_tls
-
- self._name = 'pywebsocket'
- if self._use_tls:
- self._name = 'pywebsocket_secure'
-
- if private_key:
- self._private_key = private_key
- else:
- self._private_key = self._pem_file
- if certificate:
- self._certificate = certificate
- else:
- self._certificate = self._pem_file
- self._ca_certificate = ca_certificate
- if self._port:
- self._port = int(self._port)
- self._wsin = None
- self._wsout = None
- self._mappings = [{'port': self._port}]
-
- if not self._pid_file:
- self._pid_file = self._filesystem.join(self._runtime_path, '%s.pid' % self._name)
-
- # Webkit tests
- # FIXME: This is the wrong way to detect if we're in Chrome vs. WebKit!
- # The port objects are supposed to abstract this.
- if self._root:
- self._layout_tests = self._filesystem.abspath(self._root)
- self._web_socket_tests = self._filesystem.abspath(self._filesystem.join(self._root, 'http', 'tests', 'websocket', 'tests'))
- else:
- try:
- self._layout_tests = self._port_obj.layout_tests_dir()
- self._web_socket_tests = self._filesystem.join(self._layout_tests, 'http', 'tests', 'websocket', 'tests')
- except:
- self._web_socket_tests = None
-
- if self._use_tls:
- self._log_prefix = _WSS_LOG_PREFIX
- else:
- self._log_prefix = _WS_LOG_PREFIX
-
- def _prepare_config(self):
- time_str = time.strftime('%d%b%Y-%H%M%S')
- log_file_name = self._log_prefix + time_str
- # FIXME: Doesn't Executive have a devnull, so that we don't have to use os.devnull directly?
- self._wsin = open(os.devnull, 'r')
-
- error_log = self._filesystem.join(self._output_dir, log_file_name + "-err.txt")
- output_log = self._filesystem.join(self._output_dir, log_file_name + "-out.txt")
- self._wsout = self._filesystem.open_text_file_for_writing(output_log)
-
- from webkitpy.thirdparty import mod_pywebsocket
- python_interp = sys.executable
- # FIXME: Use self._filesystem.path_to_module(self.__module__) instead of __file__
- # I think this is trying to get the chrome directory? Doesn't the port object know that?
- pywebsocket_base = self._filesystem.join(self._filesystem.dirname(self._filesystem.dirname(self._filesystem.dirname(self._filesystem.abspath(__file__)))), 'thirdparty')
- pywebsocket_script = self._filesystem.join(pywebsocket_base, 'mod_pywebsocket', 'standalone.py')
- start_cmd = [
- python_interp, '-u', pywebsocket_script,
- '--server-host', 'localhost',
- '--port', str(self._port),
- # FIXME: Don't we have a self._port_obj.layout_test_path?
- '--document-root', self._filesystem.join(self._layout_tests, 'http', 'tests'),
- '--scan-dir', self._web_socket_tests,
- '--cgi-paths', '/websocket/tests',
- '--log-file', error_log,
- ]
-
- handler_map_file = self._filesystem.join(self._web_socket_tests, 'handler_map.txt')
- if self._filesystem.exists(handler_map_file):
- _log.debug('Using handler_map_file: %s' % handler_map_file)
- start_cmd.append('--websock-handlers-map-file')
- start_cmd.append(handler_map_file)
- else:
- _log.warning('No handler_map_file found')
-
- if self._use_tls:
- start_cmd.extend(['-t', '-k', self._private_key,
- '-c', self._certificate])
- if self._ca_certificate:
- start_cmd.append('--ca-certificate')
- start_cmd.append(self._ca_certificate)
-
- self._start_cmd = start_cmd
- server_name = self._filesystem.basename(pywebsocket_script)
- self._env = self._port_obj.setup_environ_for_server(server_name)
- self._env['PYTHONPATH'] = (pywebsocket_base + os.path.pathsep + self._env.get('PYTHONPATH', ''))
-
- def _remove_stale_logs(self):
- try:
- self._remove_log_files(self._output_dir, self._log_prefix)
- except OSError, e:
- _log.warning('Failed to remove stale %s log files: %s' % (self._name, str(e)))
-
- def _spawn_process(self):
- _log.debug('Starting %s server, cmd="%s"' % (self._name, self._start_cmd))
- self._process = self._executive.popen(self._start_cmd, env=self._env, shell=False, stdin=self._wsin, stdout=self._wsout, stderr=self._executive.STDOUT)
- self._filesystem.write_text_file(self._pid_file, str(self._process.pid))
- return self._process.pid
-
- def _stop_running_server(self):
- super(PyWebSocket, self)._stop_running_server()
-
- if self._wsin:
- self._wsin.close()
- self._wsin = None
- if self._wsout:
- self._wsout.close()
- self._wsout = None
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/__init__.py b/Tools/Scripts/webkitpy/layout_tests/views/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py b/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py
deleted file mode 100644
index 3191b84ea..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results.py
+++ /dev/null
@@ -1,167 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-
-from webkitpy.layout_tests.models import test_expectations
-
-from webkitpy.common.net import resultsjsonparser
-
-
-TestExpectations = test_expectations.TestExpectations
-TestExpectationParser = test_expectations.TestExpectationParser
-
-
-class BuildBotPrinter(object):
- # This output is parsed by buildbots and must only be changed in coordination with buildbot scripts (see webkit.org's
- # Tools/BuildSlaveSupport/build.webkit.org-config/master.cfg: RunWebKitTests._parseNewRunWebKitTestsOutput
- # and chromium.org's buildbot/master.chromium/scripts/master/log_parser/webkit_test_command.py).
-
- def __init__(self, stream, debug_logging):
- self.stream = stream
- self.debug_logging = debug_logging
-
- def print_results(self, run_details):
- if self.debug_logging:
- self.print_run_results(run_details.initial_results)
- self.print_unexpected_results(run_details.summarized_results, run_details.enabled_pixel_tests_in_retry)
-
- def _print(self, msg):
- self.stream.write(msg + '\n')
-
- def print_run_results(self, run_results):
- failed = run_results.total_failures
- total = run_results.total
- passed = total - failed - run_results.remaining
- percent_passed = 0.0
- if total > 0:
- percent_passed = float(passed) * 100 / total
-
- self._print("=> Results: %d/%d tests passed (%.1f%%)" % (passed, total, percent_passed))
- self._print("")
- self._print_run_results_entry(run_results, test_expectations.NOW, "Tests to be fixed")
-
- self._print("")
- # FIXME: We should be skipping anything marked WONTFIX, so we shouldn't bother logging these stats.
- self._print_run_results_entry(run_results, test_expectations.WONTFIX,
- "Tests that will only be fixed if they crash (WONTFIX)")
- self._print("")
-
- def _print_run_results_entry(self, run_results, timeline, heading):
- total = len(run_results.tests_by_timeline[timeline])
- not_passing = (total -
- len(run_results.tests_by_expectation[test_expectations.PASS] &
- run_results.tests_by_timeline[timeline]))
- self._print("=> %s (%d):" % (heading, not_passing))
-
- for result in TestExpectations.EXPECTATION_ORDER:
- if result in (test_expectations.PASS, test_expectations.SKIP):
- continue
- results = (run_results.tests_by_expectation[result] & run_results.tests_by_timeline[timeline])
- desc = TestExpectations.EXPECTATION_DESCRIPTIONS[result]
- if not_passing and len(results):
- pct = len(results) * 100.0 / not_passing
- self._print(" %5d %-24s (%4.1f%%)" % (len(results), desc, pct))
-
- def print_unexpected_results(self, summarized_results, enabled_pixel_tests_in_retry=False):
- passes = {}
- flaky = {}
- regressions = {}
-
- def add_to_dict_of_lists(dict, key, value):
- dict.setdefault(key, []).append(value)
-
- def add_result(test, results, passes=passes, flaky=flaky, regressions=regressions):
- actual = results['actual'].split(" ")
- expected = results['expected'].split(" ")
-
- def is_expected(result):
- return (result in expected) or (result in ('AUDIO', 'TEXT', 'IMAGE+TEXT') and 'FAIL' in expected)
-
- if all(is_expected(actual_result) for actual_result in actual):
- # Don't print anything for tests that ran as expected.
- return
-
- if actual == ['PASS']:
- if 'CRASH' in expected:
- add_to_dict_of_lists(passes, 'Expected to crash, but passed', test)
- elif 'TIMEOUT' in expected:
- add_to_dict_of_lists(passes, 'Expected to timeout, but passed', test)
- else:
- add_to_dict_of_lists(passes, 'Expected to fail, but passed', test)
- elif enabled_pixel_tests_in_retry and actual == ['TEXT', 'IMAGE+TEXT']:
- add_to_dict_of_lists(regressions, actual[0], test)
- elif len(actual) > 1:
- # We group flaky tests by the first actual result we got.
- add_to_dict_of_lists(flaky, actual[0], test)
- else:
- add_to_dict_of_lists(regressions, results['actual'], test)
-
- resultsjsonparser.for_each_test(summarized_results['tests'], add_result)
-
- if len(passes) or len(flaky) or len(regressions):
- self._print("")
- if len(passes):
- for key, tests in passes.iteritems():
- self._print("%s: (%d)" % (key, len(tests)))
- tests.sort()
- for test in tests:
- self._print(" %s" % test)
- self._print("")
- self._print("")
-
- if len(flaky):
- descriptions = TestExpectations.EXPECTATION_DESCRIPTIONS
- for key, tests in flaky.iteritems():
- result = TestExpectations.EXPECTATIONS[key.lower()]
- self._print("Unexpected flakiness: %s (%d)" % (descriptions[result], len(tests)))
- tests.sort()
-
- for test in tests:
- result = resultsjsonparser.result_for_test(summarized_results['tests'], test)
- actual = result['actual'].split(" ")
- expected = result['expected'].split(" ")
- result = TestExpectations.EXPECTATIONS[key.lower()]
- # FIXME: clean this up once the old syntax is gone
- new_expectations_list = [TestExpectationParser._inverted_expectation_tokens[exp] for exp in list(set(actual) | set(expected))]
- self._print(" %s [ %s ]" % (test, " ".join(new_expectations_list)))
- self._print("")
- self._print("")
-
- if len(regressions):
- descriptions = TestExpectations.EXPECTATION_DESCRIPTIONS
- for key, tests in regressions.iteritems():
- result = TestExpectations.EXPECTATIONS[key.lower()]
- self._print("Regressions: Unexpected %s (%d)" % (descriptions[result], len(tests)))
- tests.sort()
- for test in tests:
- self._print(" %s [ %s ]" % (test, TestExpectationParser._inverted_expectation_tokens[key]))
- self._print("")
-
- if len(summarized_results['tests']) and self.debug_logging:
- self._print("%s" % ("-" * 78))
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py b/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py
deleted file mode 100644
index 5ce15c1dc..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/buildbot_results_unittest.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models import test_run_results
-from webkitpy.layout_tests.models import test_run_results
-from webkitpy.layout_tests.models import test_run_results_unittest
-from webkitpy.layout_tests.views import buildbot_results
-
-
-class BuildBotPrinterTests(unittest.TestCase):
- def assertEmpty(self, stream):
- self.assertFalse(stream.getvalue())
-
- def assertNotEmpty(self, stream):
- self.assertTrue(stream.getvalue())
-
- def get_printer(self):
- stream = StringIO.StringIO()
- printer = buildbot_results.BuildBotPrinter(stream, debug_logging=True)
- return printer, stream
-
- def test_print_unexpected_results(self):
- port = MockHost().port_factory.get('test')
- printer, out = self.get_printer()
-
- # test everything running as expected
- DASHED_LINE = "-" * 78 + "\n"
- summary = test_run_results_unittest.summarized_results(port, expected=True, passing=False, flaky=False)
- printer.print_unexpected_results(summary)
- self.assertEqual(out.getvalue(), DASHED_LINE)
-
- # test failures
- printer, out = self.get_printer()
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=False, flaky=False)
- printer.print_unexpected_results(summary)
- self.assertNotEmpty(out)
-
- # test unexpected flaky
- printer, out = self.get_printer()
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=False, flaky=True)
- printer.print_unexpected_results(summary)
- self.assertNotEmpty(out)
-
- printer, out = self.get_printer()
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=False, flaky=False)
- printer.print_unexpected_results(summary)
- self.assertNotEmpty(out)
-
- printer, out = self.get_printer()
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=False, flaky=False)
- printer.print_unexpected_results(summary)
- self.assertNotEmpty(out)
-
- printer, out = self.get_printer()
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=True, flaky=False)
- printer.print_unexpected_results(summary)
- self.assertNotEmpty(out)
-
- def test_print_results(self):
- port = MockHost().port_factory.get('test')
- printer, out = self.get_printer()
- initial_results = test_run_results_unittest.run_results(port)
- summary = test_run_results_unittest.summarized_results(port, expected=False, passing=True, flaky=False)
- details = test_run_results.RunDetails(summary['num_regressions'], summary, initial_results, None)
- printer.print_results(details)
- self.assertNotEmpty(out)
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py b/Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py
deleted file mode 100644
index fd04ad868..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (C) 2010, 2012 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.
-
-import logging
-import os
-import sys
-import time
-
-LOG_HANDLER_NAME = 'MeteredStreamLogHandler'
-
-
-class MeteredStream(object):
- """
- This class implements a stream wrapper that has 'meters' as well as
- regular output. A 'meter' is a single line of text that can be erased
- and rewritten repeatedly, without producing multiple lines of output. It
- can be used to produce effects like progress bars.
- """
-
- @staticmethod
- def _erasure(txt):
- num_chars = len(txt)
- return '\b' * num_chars + ' ' * num_chars + '\b' * num_chars
-
- @staticmethod
- def _ensure_newline(txt):
- return txt if txt.endswith('\n') else txt + '\n'
-
- def __init__(self, stream=None, verbose=False, logger=None, time_fn=None, pid=None, number_of_columns=None):
- self._stream = stream or sys.stderr
- self._verbose = verbose
- self._time_fn = time_fn or time.time
- self._pid = pid or os.getpid()
- self._isatty = self._stream.isatty()
- self._erasing = self._isatty and not verbose
- self._last_partial_line = ''
- self._last_write_time = 0.0
- self._throttle_delay_in_secs = 0.066 if self._erasing else 10.0
- self._number_of_columns = sys.maxint
- if self._isatty and number_of_columns:
- self._number_of_columns = number_of_columns
-
- self._logger = logger
- self._log_handler = None
- if self._logger:
- log_level = logging.DEBUG if verbose else logging.INFO
- self._log_handler = _LogHandler(self)
- self._log_handler.setLevel(log_level)
- self._logger.addHandler(self._log_handler)
-
- def __del__(self):
- self.cleanup()
-
- def cleanup(self):
- if self._logger:
- self._logger.removeHandler(self._log_handler)
- self._log_handler = None
-
- def write_throttled_update(self, txt):
- now = self._time_fn()
- if now - self._last_write_time >= self._throttle_delay_in_secs:
- self.write_update(txt, now)
-
- def write_update(self, txt, now=None):
- self.write(txt, now)
- if self._erasing:
- self._last_partial_line = txt[txt.rfind('\n') + 1:]
-
- def write(self, txt, now=None, pid=None):
- now = now or self._time_fn()
- pid = pid or self._pid
- self._last_write_time = now
- if self._last_partial_line:
- self._erase_last_partial_line()
- if self._verbose:
- now_tuple = time.localtime(now)
- msg = '%02d:%02d:%02d.%03d %d %s' % (now_tuple.tm_hour, now_tuple.tm_min, now_tuple.tm_sec, int((now * 1000) % 1000), pid, self._ensure_newline(txt))
- elif self._isatty:
- msg = txt
- else:
- msg = self._ensure_newline(txt)
-
- self._stream.write(msg)
-
- def writeln(self, txt, now=None, pid=None):
- self.write(self._ensure_newline(txt), now, pid)
-
- def _erase_last_partial_line(self):
- num_chars = len(self._last_partial_line)
- self._stream.write(self._erasure(self._last_partial_line))
- self._last_partial_line = ''
-
- def flush(self):
- if self._last_partial_line:
- self._stream.write('\n')
- self._last_partial_line = ''
- self._stream.flush()
-
- def number_of_columns(self):
- return self._number_of_columns
-
-
-class _LogHandler(logging.Handler):
- def __init__(self, meter):
- logging.Handler.__init__(self)
- self._meter = meter
- self.name = LOG_HANDLER_NAME
-
- def emit(self, record):
- self._meter.writeln(record.getMessage(), record.created, record.process)
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py b/Tools/Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py
deleted file mode 100644
index 0eaec2db9..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/metered_stream_unittest.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright (C) 2010, 2012 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.
-
-import logging
-import re
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.layout_tests.views.metered_stream import MeteredStream
-
-
-class RegularTest(unittest.TestCase):
- verbose = False
- isatty = False
-
- def setUp(self):
- self.stream = StringIO.StringIO()
- self.buflist = self.stream.buflist
- self.stream.isatty = lambda: self.isatty
-
- # configure a logger to test that log calls do normally get included.
- self.logger = logging.getLogger(__name__)
- self.logger.setLevel(logging.DEBUG)
- self.logger.propagate = False
-
- # add a dummy time counter for a default behavior.
- self.times = range(10)
-
- self.meter = MeteredStream(self.stream, self.verbose, self.logger, self.time_fn, 8675)
-
- def tearDown(self):
- if self.meter:
- self.meter.cleanup()
- self.meter = None
-
- def time_fn(self):
- return self.times.pop(0)
-
- def test_logging_not_included(self):
- # This tests that if we don't hand a logger to the MeteredStream,
- # nothing is logged.
- logging_stream = StringIO.StringIO()
- handler = logging.StreamHandler(logging_stream)
- root_logger = logging.getLogger()
- orig_level = root_logger.level
- root_logger.addHandler(handler)
- root_logger.setLevel(logging.DEBUG)
- try:
- self.meter = MeteredStream(self.stream, self.verbose, None, self.time_fn, 8675)
- self.meter.write_throttled_update('foo')
- self.meter.write_update('bar')
- self.meter.write('baz')
- self.assertEqual(logging_stream.buflist, [])
- finally:
- root_logger.removeHandler(handler)
- root_logger.setLevel(orig_level)
-
- def _basic(self, times):
- self.times = times
- self.meter.write_update('foo')
- self.meter.write_update('bar')
- self.meter.write_throttled_update('baz')
- self.meter.write_throttled_update('baz 2')
- self.meter.writeln('done')
- self.assertEqual(self.times, [])
- return self.buflist
-
- def test_basic(self):
- buflist = self._basic([0, 1, 2, 13, 14])
- self.assertEqual(buflist, ['foo\n', 'bar\n', 'baz 2\n', 'done\n'])
-
- def _log_after_update(self):
- self.meter.write_update('foo')
- self.logger.info('bar')
- return self.buflist
-
- def test_log_after_update(self):
- buflist = self._log_after_update()
- self.assertEqual(buflist, ['foo\n', 'bar\n'])
-
- def test_log_args(self):
- self.logger.info('foo %s %d', 'bar', 2)
- self.assertEqual(self.buflist, ['foo bar 2\n'])
-
-class TtyTest(RegularTest):
- verbose = False
- isatty = True
-
- def test_basic(self):
- buflist = self._basic([0, 1, 1.05, 1.1, 2])
- self.assertEqual(buflist, ['foo',
- MeteredStream._erasure('foo'), 'bar',
- MeteredStream._erasure('bar'), 'baz 2',
- MeteredStream._erasure('baz 2'), 'done\n'])
-
- def test_log_after_update(self):
- buflist = self._log_after_update()
- self.assertEqual(buflist, ['foo',
- MeteredStream._erasure('foo'), 'bar\n'])
-
-
-class VerboseTest(RegularTest):
- isatty = False
- verbose = True
-
- def test_basic(self):
- buflist = self._basic([0, 1, 2.1, 13, 14.1234])
- # We don't bother to match the hours and minutes of the timestamp since
- # the local timezone can vary and we can't set that portably and easily.
- self.assertTrue(re.match('\d\d:\d\d:00.000 8675 foo\n', buflist[0]))
- self.assertTrue(re.match('\d\d:\d\d:01.000 8675 bar\n', buflist[1]))
- self.assertTrue(re.match('\d\d:\d\d:13.000 8675 baz 2\n', buflist[2]))
- self.assertTrue(re.match('\d\d:\d\d:14.123 8675 done\n', buflist[3]))
- self.assertEqual(len(buflist), 4)
-
- def test_log_after_update(self):
- buflist = self._log_after_update()
- self.assertTrue(re.match('\d\d:\d\d:00.000 8675 foo\n', buflist[0]))
-
- # The second argument should have a real timestamp and pid, so we just check the format.
- self.assertTrue(re.match('\d\d:\d\d:\d\d.\d\d\d \d+ bar\n', buflist[1]))
-
- self.assertEqual(len(buflist), 2)
-
- def test_log_args(self):
- self.logger.info('foo %s %d', 'bar', 2)
- self.assertEqual(len(self.buflist), 1)
- self.assertTrue(self.buflist[0].endswith('foo bar 2\n'))
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/printing.py b/Tools/Scripts/webkitpy/layout_tests/views/printing.py
deleted file mode 100644
index 9a9caa589..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/printing.py
+++ /dev/null
@@ -1,393 +0,0 @@
-# Copyright (C) 2010, 2012 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.
-
-"""Package that handles non-debug, non-file output for run-webkit-tests."""
-
-import math
-import optparse
-
-from webkitpy.tool import grammar
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models.test_expectations import TestExpectations, TestExpectationParser
-from webkitpy.layout_tests.views.metered_stream import MeteredStream
-
-
-NUM_SLOW_TESTS_TO_LOG = 10
-
-
-def print_options():
- return [
- optparse.make_option('-q', '--quiet', action='store_true', default=False,
- help='run quietly (errors, warnings, and progress only)'),
- optparse.make_option('-v', '--verbose', action='store_true', default=False,
- help='print a summarized result for every test (one line per test)'),
- optparse.make_option('--details', action='store_true', default=False,
- help='print detailed results for every test'),
- optparse.make_option('--debug-rwt-logging', action='store_true', default=False,
- help='print timestamps and debug information for run-webkit-tests itself'),
- ]
-
-
-class Printer(object):
- """Class handling all non-debug-logging printing done by run-webkit-tests."""
-
- def __init__(self, port, options, regular_output, logger=None):
- self.num_started = 0
- self.num_tests = 0
- self._port = port
- self._options = options
- self._meter = MeteredStream(regular_output, options.debug_rwt_logging, logger=logger,
- number_of_columns=self._port.host.platform.terminal_width())
- self._running_tests = []
- self._completed_tests = []
-
- def cleanup(self):
- self._meter.cleanup()
-
- def __del__(self):
- self.cleanup()
-
- def print_config(self, results_directory):
- self._print_default("Using port '%s'" % self._port.name())
- self._print_default("Test configuration: %s" % self._port.test_configuration())
- self._print_default("Placing test results in %s" % results_directory)
-
- # FIXME: should these options be in printing_options?
- if self._options.new_baseline:
- self._print_default("Placing new baselines in %s" % self._port.baseline_path())
-
- fs = self._port.host.filesystem
- fallback_path = [fs.split(x)[1] for x in self._port.baseline_search_path()]
- self._print_default("Baseline search path: %s -> generic" % " -> ".join(fallback_path))
-
- self._print_default("Using %s build" % self._options.configuration)
- if self._options.pixel_tests:
- self._print_default("Pixel tests enabled")
- else:
- self._print_default("Pixel tests disabled")
-
- self._print_default("Regular timeout: %s, slow test timeout: %s" %
- (self._options.time_out_ms, self._options.slow_time_out_ms))
-
- self._print_default('Command line: ' + ' '.join(self._port.driver_cmd_line()))
- self._print_default('')
-
- def print_found(self, num_all_test_files, num_to_run, repeat_each, iterations):
- found_str = 'Found %s; running %d' % (grammar.pluralize('test', num_all_test_files), num_to_run)
- if repeat_each * iterations > 1:
- found_str += ' (%d times each: --repeat-each=%d --iterations=%d)' % (repeat_each * iterations, repeat_each, iterations)
- found_str += ', skipping %d' % (num_all_test_files - num_to_run)
- self._print_default(found_str + '.')
-
- def print_expected(self, run_results, tests_with_result_type_callback):
- self._print_expected_results_of_type(run_results, test_expectations.PASS, "passes", tests_with_result_type_callback)
- self._print_expected_results_of_type(run_results, test_expectations.FAIL, "failures", tests_with_result_type_callback)
- self._print_expected_results_of_type(run_results, test_expectations.FLAKY, "flaky", tests_with_result_type_callback)
- self._print_debug('')
-
- def print_workers_and_shards(self, num_workers, num_shards, num_locked_shards):
- driver_name = self._port.driver_name()
- if num_workers == 1:
- self._print_default("Running 1 %s." % driver_name)
- self._print_debug("(%s)." % grammar.pluralize('shard', num_shards))
- else:
- self._print_default("Running %d %ss in parallel." % (num_workers, driver_name))
- self._print_debug("(%d shards; %d locked)." % (num_shards, num_locked_shards))
- self._print_default('')
-
- def _print_expected_results_of_type(self, run_results, result_type, result_type_str, tests_with_result_type_callback):
- tests = tests_with_result_type_callback(result_type)
- now = run_results.tests_by_timeline[test_expectations.NOW]
- wontfix = run_results.tests_by_timeline[test_expectations.WONTFIX]
-
- # We use a fancy format string in order to print the data out in a
- # nicely-aligned table.
- fmtstr = ("Expect: %%5d %%-8s (%%%dd now, %%%dd wontfix)"
- % (self._num_digits(now), self._num_digits(wontfix)))
- self._print_debug(fmtstr % (len(tests), result_type_str, len(tests & now), len(tests & wontfix)))
-
- def _num_digits(self, num):
- ndigits = 1
- if len(num):
- ndigits = int(math.log10(len(num))) + 1
- return ndigits
-
- def print_results(self, run_time, run_results, summarized_results):
- self._print_timing_statistics(run_time, run_results)
- self._print_one_line_summary(run_results.total - run_results.expected_skips,
- run_results.expected - run_results.expected_skips,
- run_results.unexpected)
-
- def _print_timing_statistics(self, total_time, run_results):
- self._print_debug("Test timing:")
- self._print_debug(" %6.2f total testing time" % total_time)
- self._print_debug("")
-
- self._print_worker_statistics(run_results, int(self._options.child_processes))
- self._print_aggregate_test_statistics(run_results)
- self._print_individual_test_times(run_results)
- self._print_directory_timings(run_results)
-
- def _print_worker_statistics(self, run_results, num_workers):
- self._print_debug("Thread timing:")
- stats = {}
- cuml_time = 0
- for result in run_results.results_by_name.values():
- stats.setdefault(result.worker_name, {'num_tests': 0, 'total_time': 0})
- stats[result.worker_name]['num_tests'] += 1
- stats[result.worker_name]['total_time'] += result.total_run_time
- cuml_time += result.total_run_time
-
- for worker_name in stats:
- self._print_debug(" %10s: %5d tests, %6.2f secs" % (worker_name, stats[worker_name]['num_tests'], stats[worker_name]['total_time']))
- self._print_debug(" %6.2f cumulative, %6.2f optimal" % (cuml_time, cuml_time / num_workers))
- self._print_debug("")
-
- def _print_aggregate_test_statistics(self, run_results):
- times_for_dump_render_tree = [result.test_run_time for result in run_results.results_by_name.values()]
- self._print_statistics_for_test_timings("PER TEST TIME IN TESTSHELL (seconds):", times_for_dump_render_tree)
-
- def _print_individual_test_times(self, run_results):
- # Reverse-sort by the time spent in DumpRenderTree.
-
- individual_test_timings = sorted(run_results.results_by_name.values(), key=lambda result: result.test_run_time, reverse=True)
- num_printed = 0
- slow_tests = []
- timeout_or_crash_tests = []
- unexpected_slow_tests = []
- for test_tuple in individual_test_timings:
- test_name = test_tuple.test_name
- is_timeout_crash_or_slow = False
- if test_name in run_results.slow_tests:
- is_timeout_crash_or_slow = True
- slow_tests.append(test_tuple)
-
- if test_name in run_results.failures_by_name:
- result = run_results.results_by_name[test_name].type
- if (result == test_expectations.TIMEOUT or
- result == test_expectations.CRASH):
- is_timeout_crash_or_slow = True
- timeout_or_crash_tests.append(test_tuple)
-
- if (not is_timeout_crash_or_slow and num_printed < NUM_SLOW_TESTS_TO_LOG):
- num_printed = num_printed + 1
- unexpected_slow_tests.append(test_tuple)
-
- self._print_debug("")
- self._print_test_list_timing("%s slowest tests that are not marked as SLOW and did not timeout/crash:" %
- NUM_SLOW_TESTS_TO_LOG, unexpected_slow_tests)
- self._print_debug("")
- self._print_test_list_timing("Tests marked as SLOW:", slow_tests)
- self._print_debug("")
- self._print_test_list_timing("Tests that timed out or crashed:", timeout_or_crash_tests)
- self._print_debug("")
-
- def _print_test_list_timing(self, title, test_list):
- self._print_debug(title)
- for test_tuple in test_list:
- test_run_time = round(test_tuple.test_run_time, 1)
- self._print_debug(" %s took %s seconds" % (test_tuple.test_name, test_run_time))
-
- def _print_directory_timings(self, run_results):
- stats = {}
- for result in run_results.results_by_name.values():
- stats.setdefault(result.shard_name, {'num_tests': 0, 'total_time': 0})
- stats[result.shard_name]['num_tests'] += 1
- stats[result.shard_name]['total_time'] += result.total_run_time
-
- timings = []
- for directory in stats:
- timings.append((directory, round(stats[directory]['total_time'], 1), stats[directory]['num_tests']))
- timings.sort()
-
- self._print_debug("Time to process slowest subdirectories:")
- min_seconds_to_print = 10
- for timing in timings:
- if timing[0] > min_seconds_to_print:
- self._print_debug(" %s took %s seconds to run %s tests." % timing)
- self._print_debug("")
-
- def _print_statistics_for_test_timings(self, title, timings):
- self._print_debug(title)
- timings.sort()
-
- num_tests = len(timings)
- if not num_tests:
- return
- percentile90 = timings[int(.9 * num_tests)]
- percentile99 = timings[int(.99 * num_tests)]
-
- if num_tests % 2 == 1:
- median = timings[((num_tests - 1) / 2) - 1]
- else:
- lower = timings[num_tests / 2 - 1]
- upper = timings[num_tests / 2]
- median = (float(lower + upper)) / 2
-
- mean = sum(timings) / num_tests
-
- for timing in timings:
- sum_of_deviations = math.pow(timing - mean, 2)
-
- std_deviation = math.sqrt(sum_of_deviations / num_tests)
- self._print_debug(" Median: %6.3f" % median)
- self._print_debug(" Mean: %6.3f" % mean)
- self._print_debug(" 90th percentile: %6.3f" % percentile90)
- self._print_debug(" 99th percentile: %6.3f" % percentile99)
- self._print_debug(" Standard dev: %6.3f" % std_deviation)
- self._print_debug("")
-
- def _print_one_line_summary(self, total, expected, unexpected):
- incomplete = total - expected - unexpected
- incomplete_str = ''
- if incomplete:
- self._print_default("")
- incomplete_str = " (%d didn't run)" % incomplete
-
- if self._options.verbose or self._options.debug_rwt_logging or unexpected:
- self.writeln("")
-
- summary = ''
- if unexpected == 0:
- if expected == total:
- if expected > 1:
- summary = "All %d tests ran as expected." % expected
- else:
- summary = "The test ran as expected."
- else:
- summary = "%s ran as expected%s." % (grammar.pluralize('test', expected), incomplete_str)
- else:
- summary = "%s ran as expected, %d didn't%s:" % (grammar.pluralize('test', expected), unexpected, incomplete_str)
-
- self._print_quiet(summary)
- self._print_quiet("")
-
- def _test_status_line(self, test_name, suffix):
- format_string = '[%d/%d] %s%s'
- status_line = format_string % (self.num_started, self.num_tests, test_name, suffix)
- if len(status_line) > self._meter.number_of_columns():
- overflow_columns = len(status_line) - self._meter.number_of_columns()
- ellipsis = '...'
- if len(test_name) < overflow_columns + len(ellipsis) + 2:
- # We don't have enough space even if we elide, just show the test filename.
- fs = self._port.host.filesystem
- test_name = fs.split(test_name)[1]
- else:
- new_length = len(test_name) - overflow_columns - len(ellipsis)
- prefix = int(new_length / 2)
- test_name = test_name[:prefix] + ellipsis + test_name[-(new_length - prefix):]
- return format_string % (self.num_started, self.num_tests, test_name, suffix)
-
- def print_started_test(self, test_name):
- self.num_started += 1
- self._running_tests.append(test_name)
- if len(self._running_tests) > 1:
- suffix = ' (+%d)' % (len(self._running_tests) - 1)
- else:
- suffix = ''
- if self._options.verbose:
- write = self._meter.write_update
- else:
- write = self._meter.write_throttled_update
- write(self._test_status_line(test_name, suffix))
-
- def print_finished_test(self, result, expected, exp_str, got_str):
- test_name = result.test_name
-
- result_message = self._result_message(result.type, result.failures, expected, self._options.verbose)
-
- if self._options.details:
- self._print_test_trace(result, exp_str, got_str)
- elif (self._options.verbose and not self._options.debug_rwt_logging) or not expected:
- self.writeln(self._test_status_line(test_name, result_message))
- elif self.num_started == self.num_tests:
- self._meter.write_update('')
- else:
- if test_name == self._running_tests[0]:
- self._completed_tests.insert(0, [test_name, result_message])
- else:
- self._completed_tests.append([test_name, result_message])
-
- for test_name, result_message in self._completed_tests:
- self._meter.write_throttled_update(self._test_status_line(test_name, result_message))
- self._completed_tests = []
- self._running_tests.remove(test_name)
-
- def _result_message(self, result_type, failures, expected, verbose):
- exp_string = ' unexpectedly' if not expected else ''
- if result_type == test_expectations.PASS:
- return ' passed%s' % exp_string
- else:
- return ' failed%s (%s)' % (exp_string, ', '.join(failure.message() for failure in failures))
-
-
- def _print_test_trace(self, result, exp_str, got_str):
- test_name = result.test_name
- self._print_default(self._test_status_line(test_name, ''))
-
- base = self._port.lookup_virtual_test_base(test_name)
- if base:
- args = ' '.join(self._port.lookup_virtual_test_args(test_name))
- self._print_default(' base: %s' % base)
- self._print_default(' args: %s' % args)
-
- for extension in ('.txt', '.png', '.wav', '.webarchive'):
- self._print_baseline(test_name, extension)
-
- self._print_default(' exp: %s' % exp_str)
- self._print_default(' got: %s' % got_str)
- self._print_default(' took: %-.3f' % result.test_run_time)
- self._print_default('')
-
- def _print_baseline(self, test_name, extension):
- baseline = self._port.expected_filename(test_name, extension)
- if self._port._filesystem.exists(baseline):
- relpath = self._port.relative_test_filename(baseline)
- else:
- relpath = '<none>'
- self._print_default(' %s: %s' % (extension[1:], relpath))
-
- def _print_quiet(self, msg):
- self.writeln(msg)
-
- def _print_default(self, msg):
- if not self._options.quiet:
- self.writeln(msg)
-
- def _print_debug(self, msg):
- if self._options.debug_rwt_logging:
- self.writeln(msg)
-
- def write_update(self, msg):
- self._meter.write_update(msg)
-
- def writeln(self, msg):
- self._meter.writeln(msg)
-
- def flush(self):
- self._meter.flush()
diff --git a/Tools/Scripts/webkitpy/layout_tests/views/printing_unittest.py b/Tools/Scripts/webkitpy/layout_tests/views/printing_unittest.py
deleted file mode 100644
index d65cc5e12..000000000
--- a/Tools/Scripts/webkitpy/layout_tests/views/printing_unittest.py
+++ /dev/null
@@ -1,187 +0,0 @@
-# Copyright (C) 2010, 2012 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.
-
-"""Unit tests for printing.py."""
-
-import optparse
-import StringIO
-import sys
-import time
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-
-from webkitpy.common.system import logtesting
-from webkitpy import port
-from webkitpy.layout_tests.controllers import manager
-from webkitpy.layout_tests.models import test_expectations
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.views import printing
-
-
-def get_options(args):
- print_options = printing.print_options()
- option_parser = optparse.OptionParser(option_list=print_options)
- return option_parser.parse_args(args)
-
-
-class TestUtilityFunctions(unittest.TestCase):
- def test_print_options(self):
- options, args = get_options([])
- self.assertIsNotNone(options)
-
-
-class Testprinter(unittest.TestCase):
- def assertEmpty(self, stream):
- self.assertFalse(stream.getvalue())
-
- def assertNotEmpty(self, stream):
- self.assertTrue(stream.getvalue())
-
- def assertWritten(self, stream, contents):
- self.assertEqual(stream.buflist, contents)
-
- def reset(self, stream):
- stream.buflist = []
- stream.buf = ''
-
- def get_printer(self, args=None):
- args = args or []
- printing_options = printing.print_options()
- option_parser = optparse.OptionParser(option_list=printing_options)
- options, args = option_parser.parse_args(args)
- host = MockHost()
- self._port = host.port_factory.get('test', options)
- nproc = 2
-
- regular_output = StringIO.StringIO()
- printer = printing.Printer(self._port, options, regular_output)
- return printer, regular_output
-
- def get_result(self, test_name, result_type=test_expectations.PASS, run_time=0):
- failures = []
- if result_type == test_expectations.TIMEOUT:
- failures = [test_failures.FailureTimeout()]
- elif result_type == test_expectations.CRASH:
- failures = [test_failures.FailureCrash()]
- return test_results.TestResult(test_name, failures=failures, test_run_time=run_time)
-
- def test_configure_and_cleanup(self):
- # This test verifies that calling cleanup repeatedly and deleting
- # the object is safe.
- printer, err = self.get_printer()
- printer.cleanup()
- printer.cleanup()
- printer = None
-
- def test_print_config(self):
- printer, err = self.get_printer()
- # FIXME: it's lame that i have to set these options directly.
- printer._options.pixel_tests = True
- printer._options.new_baseline = True
- printer._options.time_out_ms = 6000
- printer._options.slow_time_out_ms = 12000
- printer.print_config('/tmp')
- self.assertIn("Using port 'test-mac-leopard'", err.getvalue())
- self.assertIn('Test configuration: <leopard, x86, release>', err.getvalue())
- self.assertIn('Placing test results in /tmp', err.getvalue())
- self.assertIn('Baseline search path: test-mac-leopard -> test-mac-snowleopard -> generic', err.getvalue())
- self.assertIn('Using Release build', err.getvalue())
- self.assertIn('Pixel tests enabled', err.getvalue())
- self.assertIn('Command line:', err.getvalue())
- self.assertIn('Regular timeout: ', err.getvalue())
-
- self.reset(err)
- printer._options.quiet = True
- printer.print_config('/tmp')
- self.assertNotIn('Baseline search path: test-mac-leopard -> test-mac-snowleopard -> generic', err.getvalue())
-
- def test_print_one_line_summary(self):
- printer, err = self.get_printer()
- printer._print_one_line_summary(1, 1, 0)
- self.assertWritten(err, ["The test ran as expected.\n", "\n"])
-
- printer, err = self.get_printer()
- printer._print_one_line_summary(1, 1, 0)
- self.assertWritten(err, ["The test ran as expected.\n", "\n"])
-
- printer, err = self.get_printer()
- printer._print_one_line_summary(2, 1, 1)
- self.assertWritten(err, ["\n", "1 test ran as expected, 1 didn't:\n", "\n"])
-
- printer, err = self.get_printer()
- printer._print_one_line_summary(3, 2, 1)
- self.assertWritten(err, ["\n", "2 tests ran as expected, 1 didn't:\n", "\n"])
-
- printer, err = self.get_printer()
- printer._print_one_line_summary(3, 2, 0)
- self.assertWritten(err, ['\n', "2 tests ran as expected (1 didn't run).\n", '\n'])
-
- def test_test_status_line(self):
- printer, _ = self.get_printer()
- printer._meter.number_of_columns = lambda: 80
- actual = printer._test_status_line('fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html', ' passed')
- self.assertEqual(80, len(actual))
- self.assertEqual(actual, '[0/0] fast/dom/HTMLFormElement/associa...after-index-assertion-fail1.html passed')
-
- printer._meter.number_of_columns = lambda: 89
- actual = printer._test_status_line('fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html', ' passed')
- self.assertEqual(89, len(actual))
- self.assertEqual(actual, '[0/0] fast/dom/HTMLFormElement/associated-...ents-after-index-assertion-fail1.html passed')
-
- printer._meter.number_of_columns = lambda: sys.maxint
- actual = printer._test_status_line('fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html', ' passed')
- self.assertEqual(90, len(actual))
- self.assertEqual(actual, '[0/0] fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html passed')
-
- printer._meter.number_of_columns = lambda: 18
- actual = printer._test_status_line('fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html', ' passed')
- self.assertEqual(18, len(actual))
- self.assertEqual(actual, '[0/0] f...l passed')
-
- printer._meter.number_of_columns = lambda: 10
- actual = printer._test_status_line('fast/dom/HTMLFormElement/associated-elements-after-index-assertion-fail1.html', ' passed')
- self.assertEqual(actual, '[0/0] associated-elements-after-index-assertion-fail1.html passed')
-
- def test_details(self):
- printer, err = self.get_printer(['--details'])
- result = self.get_result('passes/image.html')
- printer.print_started_test('passes/image.html')
- printer.print_finished_test(result, expected=False, exp_str='', got_str='')
- self.assertNotEmpty(err)
-
- def test_print_found(self):
- printer, err = self.get_printer()
-
- printer.print_found(100, 10, 1, 1)
- self.assertWritten(err, ["Found 100 tests; running 10, skipping 90.\n"])
-
- self.reset(err)
- printer.print_found(100, 10, 2, 3)
- self.assertWritten(err, ["Found 100 tests; running 10 (6 times each: --repeat-each=2 --iterations=3), skipping 90.\n"])
diff --git a/Tools/Scripts/webkitpy/performance_tests/__init__.py b/Tools/Scripts/webkitpy/performance_tests/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/performance_tests/perftest.py b/Tools/Scripts/webkitpy/performance_tests/perftest.py
deleted file mode 100644
index 0df3cc0ea..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/perftest.py
+++ /dev/null
@@ -1,433 +0,0 @@
-# Copyright (C) 2012 Google Inc. All rights reserved.
-# Copyright (C) 2012 Zoltan Horvath, Adobe Systems Incorporated. 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.
-
-
-import errno
-import logging
-import math
-import re
-import os
-import signal
-import socket
-import subprocess
-import sys
-import time
-
-# Import for auto-install
-if sys.platform not in ('cygwin', 'win32'):
- # FIXME: webpagereplay doesn't work on win32. See https://bugs.webkit.org/show_bug.cgi?id=88279.
- import webkitpy.thirdparty.autoinstalled.webpagereplay.replay
-
-from webkitpy.layout_tests.controllers.test_result_writer import TestResultWriter
-from webkitpy.port.driver import DriverInput
-from webkitpy.port.driver import DriverOutput
-
-DEFAULT_TEST_RUNNER_COUNT = 4
-
-_log = logging.getLogger(__name__)
-
-
-class PerfTestMetric(object):
- def __init__(self, metric, unit=None, iterations=None):
- # FIXME: Fix runner.js to report correct metric names
- self._iterations = iterations or []
- self._unit = unit or self.metric_to_unit(metric)
- self._metric = self.time_unit_to_metric(self._unit) if metric == 'Time' else metric
-
- def name(self):
- return self._metric
-
- def has_values(self):
- return bool(self._iterations)
-
- def append_group(self, group_values):
- assert isinstance(group_values, list)
- self._iterations.append(group_values)
-
- def grouped_iteration_values(self):
- return self._iterations
-
- def flattened_iteration_values(self):
- return [value for group_values in self._iterations for value in group_values]
-
- def unit(self):
- return self._unit
-
- @staticmethod
- def metric_to_unit(metric):
- assert metric in ('Time', 'Malloc', 'JSHeap')
- return 'ms' if metric == 'Time' else 'bytes'
-
- @staticmethod
- def time_unit_to_metric(unit):
- return {'fps': 'FrameRate', 'runs/s': 'Runs', 'ms': 'Time'}[unit]
-
-
-class PerfTest(object):
-
- def __init__(self, port, test_name, test_path, test_runner_count=DEFAULT_TEST_RUNNER_COUNT):
- self._port = port
- self._test_name = test_name
- self._test_path = test_path
- self._description = None
- self._metrics = {}
- self._ordered_metrics_name = []
- self._test_runner_count = test_runner_count
-
- def test_name(self):
- return self._test_name
-
- def test_name_without_file_extension(self):
- return re.sub(r'\.\w+$', '', self.test_name())
-
- def test_path(self):
- return self._test_path
-
- def description(self):
- return self._description
-
- def prepare(self, time_out_ms):
- return True
-
- def _create_driver(self):
- return self._port.create_driver(worker_number=0, no_timeout=True)
-
- def run(self, time_out_ms):
- for _ in xrange(self._test_runner_count):
- driver = self._create_driver()
- try:
- if not self._run_with_driver(driver, time_out_ms):
- return None
- finally:
- driver.stop()
-
- should_log = not self._port.get_option('profile')
- if should_log and self._description:
- _log.info('DESCRIPTION: %s' % self._description)
-
- results = {}
- for metric_name in self._ordered_metrics_name:
- metric = self._metrics[metric_name]
- results[metric.name()] = metric.grouped_iteration_values()
- if should_log:
- legacy_chromium_bot_compatible_name = self.test_name_without_file_extension().replace('/', ': ')
- self.log_statistics(legacy_chromium_bot_compatible_name + ': ' + metric.name(),
- metric.flattened_iteration_values(), metric.unit())
-
- return results
-
- @staticmethod
- def log_statistics(test_name, values, unit):
- sorted_values = sorted(values)
-
- # Compute the mean and variance using Knuth's online algorithm (has good numerical stability).
- square_sum = 0
- mean = 0
- for i, time in enumerate(sorted_values):
- delta = time - mean
- sweep = i + 1.0
- mean += delta / sweep
- square_sum += delta * (time - mean)
-
- middle = int(len(sorted_values) / 2)
- mean = sum(sorted_values) / len(values)
- median = sorted_values[middle] if len(sorted_values) % 2 else (sorted_values[middle - 1] + sorted_values[middle]) / 2
- stdev = math.sqrt(square_sum / (len(sorted_values) - 1)) if len(sorted_values) > 1 else 0
-
- _log.info('RESULT %s= %s %s' % (test_name, mean, unit))
- _log.info('median= %s %s, stdev= %s %s, min= %s %s, max= %s %s' %
- (median, unit, stdev, unit, sorted_values[0], unit, sorted_values[-1], unit))
-
- _description_regex = re.compile(r'^Description: (?P<description>.*)$', re.IGNORECASE)
- _metrics_regex = re.compile(r'^(?P<metric>Time|Malloc|JS Heap):')
- _statistics_keys = ['avg', 'median', 'stdev', 'min', 'max', 'unit', 'values']
- _score_regex = re.compile(r'^(?P<key>' + r'|'.join(_statistics_keys) + r')\s+(?P<value>([0-9\.]+(,\s+)?)+)\s*(?P<unit>.*)')
-
- def _run_with_driver(self, driver, time_out_ms):
- output = self.run_single(driver, self.test_path(), time_out_ms)
- self._filter_output(output)
- if self.run_failed(output):
- return False
-
- current_metric = None
- for line in re.split('\n', output.text):
- description_match = self._description_regex.match(line)
- metric_match = self._metrics_regex.match(line)
- score = self._score_regex.match(line)
-
- if description_match:
- self._description = description_match.group('description')
- elif metric_match:
- current_metric = metric_match.group('metric').replace(' ', '')
- elif score:
- if score.group('key') != 'values':
- continue
-
- metric = self._ensure_metrics(current_metric, score.group('unit'))
- metric.append_group(map(lambda value: float(value), score.group('value').split(', ')))
- else:
- _log.error('ERROR: ' + line)
- return False
-
- return True
-
- def _ensure_metrics(self, metric_name, unit=None):
- if metric_name not in self._metrics:
- self._metrics[metric_name] = PerfTestMetric(metric_name, unit)
- self._ordered_metrics_name.append(metric_name)
- return self._metrics[metric_name]
-
- def run_single(self, driver, test_path, time_out_ms, should_run_pixel_test=False):
- return driver.run_test(DriverInput(test_path, time_out_ms, image_hash=None, should_run_pixel_test=should_run_pixel_test), stop_when_done=False)
-
- def run_failed(self, output):
- if output.text == None or output.error:
- pass
- elif output.timeout:
- _log.error('timeout: %s' % self.test_name())
- elif output.crash:
- _log.error('crash: %s' % self.test_name())
- else:
- return False
-
- if output.error:
- _log.error('error: %s\n%s' % (self.test_name(), output.error))
-
- return True
-
- @staticmethod
- def _should_ignore_line(regexps, line):
- if not line:
- return True
- for regexp in regexps:
- if regexp.search(line):
- return True
- return False
-
- _lines_to_ignore_in_stderr = [
- re.compile(r'^Unknown option:'),
- re.compile(r'^\[WARNING:proxy_service.cc'),
- re.compile(r'^\[INFO:'),
- # These stderr messages come from content_shell on chromium-linux.
- re.compile(r'INFO:SkFontHost_fontconfig.cpp'),
- re.compile(r'Running without the SUID sandbox'),
- ]
-
- _lines_to_ignore_in_parser_result = [
- re.compile(r'^Running \d+ times$'),
- re.compile(r'^Ignoring warm-up '),
- re.compile(r'^Info:'),
- re.compile(r'^\d+(.\d+)?(\s*(runs\/s|ms|fps))?$'),
- # Following are for handle existing test like Dromaeo
- re.compile(re.escape("""main frame - has 1 onunload handler(s)""")),
- re.compile(re.escape("""frame "<!--framePath //<!--frame0-->-->" - has 1 onunload handler(s)""")),
- re.compile(re.escape("""frame "<!--framePath //<!--frame0-->/<!--frame0-->-->" - has 1 onunload handler(s)""")),
- # Following is for html5.html
- re.compile(re.escape("""Blocked access to external URL http://www.whatwg.org/specs/web-apps/current-work/""")),
- re.compile(r"CONSOLE MESSAGE: (line \d+: )?Blocked script execution in '[A-Za-z0-9\-\.:]+' because the document's frame is sandboxed and the 'allow-scripts' permission is not set."),
- re.compile(r"CONSOLE MESSAGE: (line \d+: )?Not allowed to load local resource"),
- # Dromaeo reports values for subtests. Ignore them for now.
- re.compile(r'(?P<name>.+): \[(?P<values>(\d+(.\d+)?,\s+)*\d+(.\d+)?)\]'),
- ]
-
- def _filter_output(self, output):
- if output.error:
- output.error = '\n'.join([line for line in re.split('\n', output.error) if not self._should_ignore_line(self._lines_to_ignore_in_stderr, line)])
- if output.text:
- output.text = '\n'.join([line for line in re.split('\n', output.text) if not self._should_ignore_line(self._lines_to_ignore_in_parser_result, line)])
-
-
-class SingleProcessPerfTest(PerfTest):
- def __init__(self, port, test_name, test_path, test_runner_count=1):
- super(SingleProcessPerfTest, self).__init__(port, test_name, test_path, test_runner_count)
-
-
-class ReplayServer(object):
- def __init__(self, archive, record):
- self._process = None
-
- # FIXME: Should error if local proxy isn't set to forward requests to localhost:8080 and localhost:8443
-
- replay_path = webkitpy.thirdparty.autoinstalled.webpagereplay.replay.__file__
- args = ['python', replay_path, '--no-dns_forwarding', '--port', '8080', '--ssl_port', '8443', '--use_closest_match', '--log_level', 'warning']
- if record:
- args.append('--record')
- args.append(archive)
-
- self._process = subprocess.Popen(args)
-
- def wait_until_ready(self):
- for i in range(0, 3):
- try:
- connection = socket.create_connection(('localhost', '8080'), timeout=1)
- connection.close()
- return True
- except socket.error:
- time.sleep(1)
- continue
- return False
-
- def stop(self):
- if self._process:
- self._process.send_signal(signal.SIGINT)
- self._process.wait()
- self._process = None
-
- def __del__(self):
- self.stop()
-
-
-class ReplayPerfTest(PerfTest):
- _FORCE_GC_FILE = 'resources/force-gc.html'
-
- def __init__(self, port, test_name, test_path, test_runner_count=DEFAULT_TEST_RUNNER_COUNT):
- super(ReplayPerfTest, self).__init__(port, test_name, test_path, test_runner_count)
- self.force_gc_test = self._port.host.filesystem.join(self._port.perf_tests_dir(), self._FORCE_GC_FILE)
-
- def _start_replay_server(self, archive, record):
- try:
- return ReplayServer(archive, record)
- except OSError as error:
- if error.errno == errno.ENOENT:
- _log.error("Replay tests require web-page-replay.")
- else:
- raise error
-
- def prepare(self, time_out_ms):
- filesystem = self._port.host.filesystem
- path_without_ext = filesystem.splitext(self.test_path())[0]
-
- self._archive_path = filesystem.join(path_without_ext + '.wpr')
- self._expected_image_path = filesystem.join(path_without_ext + '-expected.png')
- self._url = filesystem.read_text_file(self.test_path()).split('\n')[0]
-
- if filesystem.isfile(self._archive_path) and filesystem.isfile(self._expected_image_path):
- _log.info("Replay ready for %s" % self._archive_path)
- return True
-
- _log.info("Preparing replay for %s" % self.test_name())
-
- driver = self._port.create_driver(worker_number=0, no_timeout=True)
- try:
- output = self.run_single(driver, self._archive_path, time_out_ms, record=True)
- finally:
- driver.stop()
-
- if not output or not filesystem.isfile(self._archive_path):
- _log.error("Failed to prepare a replay for %s" % self.test_name())
- return False
-
- _log.info("Prepared replay for %s" % self.test_name())
-
- return True
-
- def _run_with_driver(self, driver, time_out_ms):
- times = []
- malloc = []
- js_heap = []
-
- for i in range(0, 6):
- output = self.run_single(driver, self.test_path(), time_out_ms)
- if not output or self.run_failed(output):
- return False
- if i == 0:
- continue
-
- times.append(output.test_time * 1000)
-
- if not output.measurements:
- continue
-
- for metric, result in output.measurements.items():
- assert metric == 'Malloc' or metric == 'JSHeap'
- if metric == 'Malloc':
- malloc.append(result)
- else:
- js_heap.append(result)
-
- if times:
- self._ensure_metrics('Time').append_group(times)
- if malloc:
- self._ensure_metrics('Malloc').append_group(malloc)
- if js_heap:
- self._ensure_metrics('JSHeap').append_group(js_heap)
-
- return True
-
- def run_single(self, driver, url, time_out_ms, record=False):
- server = self._start_replay_server(self._archive_path, record)
- if not server:
- _log.error("Web page replay didn't start.")
- return None
-
- try:
- _log.debug("Waiting for Web page replay to start.")
- if not server.wait_until_ready():
- _log.error("Web page replay didn't start.")
- return None
-
- _log.debug("Web page replay started. Loading the page.")
- # Force GC to prevent pageload noise. See https://bugs.webkit.org/show_bug.cgi?id=98203
- super(ReplayPerfTest, self).run_single(driver, self.force_gc_test, time_out_ms, False)
- output = super(ReplayPerfTest, self).run_single(driver, self._url, time_out_ms, should_run_pixel_test=True)
- if self.run_failed(output):
- return None
-
- if not output.image:
- _log.error("Loading the page did not generate image results")
- _log.error(output.text)
- return None
-
- filesystem = self._port.host.filesystem
- dirname = filesystem.dirname(self._archive_path)
- filename = filesystem.split(self._archive_path)[1]
- writer = TestResultWriter(filesystem, self._port, dirname, filename)
- if record:
- writer.write_image_files(actual_image=None, expected_image=output.image)
- else:
- writer.write_image_files(actual_image=output.image, expected_image=None)
-
- return output
- finally:
- server.stop()
-
-
-class PerfTestFactory(object):
-
- _pattern_map = [
- (re.compile(r'^Dromaeo/'), SingleProcessPerfTest),
- (re.compile(r'(.+)\.replay$'), ReplayPerfTest),
- ]
-
- @classmethod
- def create_perf_test(cls, port, test_name, path, test_runner_count=DEFAULT_TEST_RUNNER_COUNT):
- for (pattern, test_class) in cls._pattern_map:
- if pattern.match(test_name):
- return test_class(port, test_name, path, test_runner_count)
- return PerfTest(port, test_name, path, test_runner_count)
diff --git a/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py b/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py
deleted file mode 100644
index b904b9760..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/perftest_unittest.py
+++ /dev/null
@@ -1,472 +0,0 @@
-# Copyright (C) 2012 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.
-
-import StringIO
-import json
-import math
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.driver import DriverOutput
-from webkitpy.port.test import TestDriver
-from webkitpy.port.test import TestPort
-from webkitpy.performance_tests.perftest import PerfTest
-from webkitpy.performance_tests.perftest import PerfTestMetric
-from webkitpy.performance_tests.perftest import PerfTestFactory
-from webkitpy.performance_tests.perftest import ReplayPerfTest
-from webkitpy.performance_tests.perftest import SingleProcessPerfTest
-
-
-class MockPort(TestPort):
- def __init__(self, custom_run_test=None):
- super(MockPort, self).__init__(host=MockHost(), custom_run_test=custom_run_test)
-
-
-class TestPerfTestMetric(unittest.TestCase):
- def test_init_set_missing_unit(self):
- self.assertEqual(PerfTestMetric('Time', iterations=[1, 2, 3, 4, 5]).unit(), 'ms')
- self.assertEqual(PerfTestMetric('Malloc', iterations=[1, 2, 3, 4, 5]).unit(), 'bytes')
- self.assertEqual(PerfTestMetric('JSHeap', iterations=[1, 2, 3, 4, 5]).unit(), 'bytes')
-
- def test_init_set_time_metric(self):
- self.assertEqual(PerfTestMetric('Time', 'ms').name(), 'Time')
- self.assertEqual(PerfTestMetric('Time', 'fps').name(), 'FrameRate')
- self.assertEqual(PerfTestMetric('Time', 'runs/s').name(), 'Runs')
-
- def test_has_values(self):
- self.assertFalse(PerfTestMetric('Time').has_values())
- self.assertTrue(PerfTestMetric('Time', iterations=[1]).has_values())
-
- def test_append(self):
- metric = PerfTestMetric('Time')
- metric2 = PerfTestMetric('Time')
- self.assertFalse(metric.has_values())
- self.assertFalse(metric2.has_values())
-
- metric.append_group([1])
- self.assertTrue(metric.has_values())
- self.assertFalse(metric2.has_values())
- self.assertEqual(metric.grouped_iteration_values(), [[1]])
- self.assertEqual(metric.flattened_iteration_values(), [1])
-
- metric.append_group([2])
- self.assertEqual(metric.grouped_iteration_values(), [[1], [2]])
- self.assertEqual(metric.flattened_iteration_values(), [1, 2])
-
- metric2.append_group([3])
- self.assertTrue(metric2.has_values())
- self.assertEqual(metric.flattened_iteration_values(), [1, 2])
- self.assertEqual(metric2.flattened_iteration_values(), [3])
-
- metric.append_group([4, 5])
- self.assertEqual(metric.grouped_iteration_values(), [[1], [2], [4, 5]])
- self.assertEqual(metric.flattened_iteration_values(), [1, 2, 4, 5])
-
-
-class TestPerfTest(unittest.TestCase):
- def _assert_results_are_correct(self, test, output):
- test.run_single = lambda driver, path, time_out_ms: output
- self.assertTrue(test._run_with_driver(None, None))
- self.assertEqual(test._metrics.keys(), ['Time'])
- self.assertEqual(test._metrics['Time'].flattened_iteration_values(), [1080, 1120, 1095, 1101, 1104])
-
- def test_parse_output(self):
- output = DriverOutput("""
-Running 20 times
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50862 ms
-min 1080 ms
-max 1120 ms
-""", image=None, image_hash=None, audio=None)
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- self._assert_results_are_correct(test, output)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, '')
-
- def test_parse_output_with_failing_line(self):
- output = DriverOutput("""
-Running 20 times
-Ignoring warm-up run (1115)
-
-some-unrecognizable-line
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50862 ms
-min 1080 ms
-max 1120 ms
-""", image=None, image_hash=None, audio=None)
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- test.run_single = lambda driver, path, time_out_ms: output
- self.assertFalse(test._run_with_driver(None, None))
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, 'ERROR: some-unrecognizable-line\n')
-
- def test_parse_output_with_description(self):
- output = DriverOutput("""
-Description: this is a test description.
-
-Running 20 times
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50862 ms
-min 1080 ms
-max 1120 ms""", image=None, image_hash=None, audio=None)
- test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- self._assert_results_are_correct(test, output)
- self.assertEqual(test.description(), 'this is a test description.')
-
- def test_ignored_stderr_lines(self):
- test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- output_with_lines_to_ignore = DriverOutput('', image=None, image_hash=None, audio=None, error="""
-Unknown option: --foo-bar
-Should not be ignored
-[WARNING:proxy_service.cc] bad moon a-rising
-[WARNING:chrome.cc] Something went wrong
-[INFO:SkFontHost_android.cpp(1158)] Use Test Config File Main /data/local/tmp/drt/android_main_fonts.xml, Fallback /data/local/tmp/drt/android_fallback_fonts.xml, Font Dir /data/local/tmp/drt/fonts/
-[ERROR:main.cc] The sky has fallen""")
- test._filter_output(output_with_lines_to_ignore)
- self.assertEqual(output_with_lines_to_ignore.error,
- "Should not be ignored\n"
- "[WARNING:chrome.cc] Something went wrong\n"
- "[ERROR:main.cc] The sky has fallen")
-
- def test_parse_output_with_subtests(self):
- output = DriverOutput("""
-Running 20 times
-some test: [1, 2, 3, 4, 5]
-other test = else: [6, 7, 8, 9, 10]
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50862 ms
-min 1080 ms
-max 1120 ms
-""", image=None, image_hash=None, audio=None)
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- test = PerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- self._assert_results_are_correct(test, output)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, '')
-
-
-class TestSingleProcessPerfTest(unittest.TestCase):
- def test_use_only_one_process(self):
- called = [0]
-
- def run_single(driver, path, time_out_ms):
- called[0] += 1
- return DriverOutput("""
-Running 20 times
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50862 ms
-min 1080 ms
-max 1120 ms""", image=None, image_hash=None, audio=None)
-
- test = SingleProcessPerfTest(MockPort(), 'some-test', '/path/some-dir/some-test')
- test.run_single = run_single
- self.assertTrue(test.run(0))
- self.assertEqual(called[0], 1)
-
-
-class TestReplayPerfTest(unittest.TestCase):
- class ReplayTestPort(MockPort):
- def __init__(self, custom_run_test=None):
-
- class ReplayTestDriver(TestDriver):
- def run_test(self, text_input, stop_when_done):
- return custom_run_test(text_input, stop_when_done) if custom_run_test else None
-
- self._custom_driver_class = ReplayTestDriver
- super(self.__class__, self).__init__()
-
- def _driver_class(self):
- return self._custom_driver_class
-
- class MockReplayServer(object):
- def __init__(self, wait_until_ready=True):
- self.wait_until_ready = lambda: wait_until_ready
-
- def stop(self):
- pass
-
- def _add_file(self, port, dirname, filename, content=True):
- port.host.filesystem.maybe_make_directory(dirname)
- port.host.filesystem.write_binary_file(port.host.filesystem.join(dirname, filename), content)
-
- def _setup_test(self, run_test=None):
- test_port = self.ReplayTestPort(run_test)
- self._add_file(test_port, '/path/some-dir', 'some-test.replay', 'http://some-test/')
- test = ReplayPerfTest(test_port, 'some-test.replay', '/path/some-dir/some-test.replay')
- test._start_replay_server = lambda archive, record: self.__class__.MockReplayServer()
- return test, test_port
-
- def test_run_single(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
-
- loaded_pages = []
-
- def run_test(test_input, stop_when_done):
- if test_input.test_name == test.force_gc_test:
- loaded_pages.append(test_input)
- return
- if test_input.test_name != "about:blank":
- self.assertEqual(test_input.test_name, 'http://some-test/')
- loaded_pages.append(test_input)
- self._add_file(port, '/path/some-dir', 'some-test.wpr', 'wpr content')
- return DriverOutput('actual text', 'actual image', 'actual checksum',
- audio=None, crash=False, timeout=False, error=False, test_time=12345)
-
- test, port = self._setup_test(run_test)
- test._archive_path = '/path/some-dir/some-test.wpr'
- test._url = 'http://some-test/'
-
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- output = test.run_single(driver, '/path/some-dir/some-test.replay', time_out_ms=100)
- self.assertTrue(output)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(len(loaded_pages), 2)
- self.assertEqual(loaded_pages[0].test_name, test.force_gc_test)
- self.assertEqual(loaded_pages[1].test_name, 'http://some-test/')
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, '')
- self.assertEqual(port.host.filesystem.read_binary_file('/path/some-dir/some-test-actual.png'), 'actual image')
- self.assertEqual(output.test_time, 12345)
-
- def test_run_single_fails_without_webpagereplay(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
-
- test, port = self._setup_test()
- test._start_replay_server = lambda archive, record: None
- test._archive_path = '/path/some-dir.wpr'
- test._url = 'http://some-test/'
-
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- self.assertEqual(test.run_single(driver, '/path/some-dir/some-test.replay', time_out_ms=100), None)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, "Web page replay didn't start.\n")
-
- def test_run_with_driver_accumulates_results(self):
- port = MockPort()
- test, port = self._setup_test()
- counter = [0]
-
- def mock_run_signle(drive, path, timeout):
- counter[0] += 1
- return DriverOutput('some output', image=None, image_hash=None, audio=None, test_time=counter[0], measurements={})
-
- test.run_single = mock_run_signle
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- self.assertTrue(test._run_with_driver(driver, None))
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, '')
-
- self.assertEqual(test._metrics.keys(), ['Time'])
- self.assertEqual(test._metrics['Time'].flattened_iteration_values(), [float(i * 1000) for i in range(2, 7)])
-
- def test_run_with_driver_accumulates_memory_results(self):
- port = MockPort()
- test, port = self._setup_test()
- counter = [0]
-
- def mock_run_signle(drive, path, timeout):
- counter[0] += 1
- return DriverOutput('some output', image=None, image_hash=None, audio=None, test_time=counter[0], measurements={'Malloc': 10, 'JSHeap': 5})
-
- test.run_single = mock_run_signle
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- self.assertTrue(test._run_with_driver(driver, None))
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, '')
-
- metrics = test._metrics
- self.assertEqual(sorted(metrics.keys()), ['JSHeap', 'Malloc', 'Time'])
- self.assertEqual(metrics['Time'].flattened_iteration_values(), [float(i * 1000) for i in range(2, 7)])
- self.assertEqual(metrics['Malloc'].flattened_iteration_values(), [float(10)] * 5)
- self.assertEqual(metrics['JSHeap'].flattened_iteration_values(), [float(5)] * 5)
-
- def test_prepare_fails_when_wait_until_ready_fails(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
-
- test, port = self._setup_test()
- test._start_replay_server = lambda archive, record: self.__class__.MockReplayServer(wait_until_ready=False)
- test._archive_path = '/path/some-dir.wpr'
- test._url = 'http://some-test/'
-
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- self.assertEqual(test.run_single(driver, '/path/some-dir/some-test.replay', time_out_ms=100), None)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, "Web page replay didn't start.\n")
-
- def test_run_single_fails_when_output_has_error(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
-
- loaded_pages = []
-
- def run_test(test_input, stop_when_done):
- loaded_pages.append(test_input)
- self._add_file(port, '/path/some-dir', 'some-test.wpr', 'wpr content')
- return DriverOutput('actual text', 'actual image', 'actual checksum',
- audio=None, crash=False, timeout=False, error='some error')
-
- test, port = self._setup_test(run_test)
- test._archive_path = '/path/some-dir.wpr'
- test._url = 'http://some-test/'
-
- try:
- driver = port.create_driver(worker_number=1, no_timeout=True)
- self.assertEqual(test.run_single(driver, '/path/some-dir/some-test.replay', time_out_ms=100), None)
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(len(loaded_pages), 2)
- self.assertEqual(loaded_pages[0].test_name, test.force_gc_test)
- self.assertEqual(loaded_pages[1].test_name, 'http://some-test/')
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, 'error: some-test.replay\nsome error\n')
-
- def test_prepare(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
-
- def run_test(test_input, stop_when_done):
- self._add_file(port, '/path/some-dir', 'some-test.wpr', 'wpr content')
- return DriverOutput('actual text', 'actual image', 'actual checksum',
- audio=None, crash=False, timeout=False, error=False)
-
- test, port = self._setup_test(run_test)
-
- try:
- self.assertTrue(test.prepare(time_out_ms=100))
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
-
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, 'Preparing replay for some-test.replay\nPrepared replay for some-test.replay\n')
- self.assertEqual(port.host.filesystem.read_binary_file('/path/some-dir/some-test-expected.png'), 'actual image')
-
- def test_prepare_calls_run_single(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
- called = [False]
-
- def run_single(driver, url, time_out_ms, record):
- self.assertTrue(record)
- self.assertEqual(url, '/path/some-dir/some-test.wpr')
- called[0] = True
- return False
-
- test, port = self._setup_test()
- test.run_single = run_single
-
- try:
- self.assertFalse(test.prepare(time_out_ms=100))
- finally:
- actual_stdout, actual_stderr, actual_logs = output_capture.restore_output()
- self.assertTrue(called[0])
- self.assertEqual(test._archive_path, '/path/some-dir/some-test.wpr')
- self.assertEqual(test._url, 'http://some-test/')
- self.assertEqual(actual_stdout, '')
- self.assertEqual(actual_stderr, '')
- self.assertEqual(actual_logs, "Preparing replay for some-test.replay\nFailed to prepare a replay for some-test.replay\n")
-
-
-class TestPerfTestFactory(unittest.TestCase):
- def test_regular_test(self):
- test = PerfTestFactory.create_perf_test(MockPort(), 'some-dir/some-test', '/path/some-dir/some-test')
- self.assertEqual(test.__class__, PerfTest)
diff --git a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py
deleted file mode 100644
index adfabffbd..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py
+++ /dev/null
@@ -1,354 +0,0 @@
-# Copyright (C) 2012 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.
-
-"""Run Inspector's perf tests in perf mode."""
-
-import os
-import json
-import logging
-import optparse
-import time
-import datetime
-
-from webkitpy.common import find_files
-from webkitpy.common.checkout.scm.detection import SCMDetector
-from webkitpy.common.config.urls import view_source_url
-from webkitpy.common.host import Host
-from webkitpy.common.net.file_uploader import FileUploader
-from webkitpy.performance_tests.perftest import PerfTestFactory
-from webkitpy.performance_tests.perftest import DEFAULT_TEST_RUNNER_COUNT
-
-
-_log = logging.getLogger(__name__)
-
-
-class PerfTestsRunner(object):
- _default_branch = 'webkit-trunk'
- EXIT_CODE_BAD_BUILD = -1
- EXIT_CODE_BAD_SOURCE_JSON = -2
- EXIT_CODE_BAD_MERGE = -3
- EXIT_CODE_FAILED_UPLOADING = -4
- EXIT_CODE_BAD_PREPARATION = -5
-
- _DEFAULT_JSON_FILENAME = 'PerformanceTestsResults.json'
-
- def __init__(self, args=None, port=None):
- self._options, self._args = PerfTestsRunner._parse_args(args)
- if port:
- self._port = port
- self._host = self._port.host
- else:
- self._host = Host()
- self._port = self._host.port_factory.get(self._options.platform, self._options)
- self._host.initialize_scm()
- self._webkit_base_dir_len = len(self._port.webkit_base())
- self._base_path = self._port.perf_tests_dir()
- self._timestamp = time.time()
- self._utc_timestamp = datetime.datetime.utcnow()
-
-
- @staticmethod
- def _parse_args(args=None):
- def _expand_path(option, opt_str, value, parser):
- path = os.path.expandvars(os.path.expanduser(value))
- setattr(parser.values, option.dest, path)
- perf_option_list = [
- optparse.make_option('--debug', action='store_const', const='Debug', dest="configuration",
- help='Set the configuration to Debug'),
- optparse.make_option('--release', action='store_const', const='Release', dest="configuration",
- help='Set the configuration to Release'),
- optparse.make_option("--platform",
- help="Specify port/platform being tested (i.e. chromium-mac)"),
- optparse.make_option("--builder-name",
- help=("The name of the builder shown on the waterfall running this script e.g. google-mac-2.")),
- optparse.make_option("--build-number",
- help=("The build number of the builder running this script.")),
- optparse.make_option("--build", dest="build", action="store_true", default=True,
- help="Check to ensure the DumpRenderTree build is up-to-date (default)."),
- optparse.make_option("--no-build", dest="build", action="store_false",
- help="Don't check to see if the DumpRenderTree build is up-to-date."),
- optparse.make_option("--build-directory",
- help="Path to the directory under which build files are kept (should not include configuration)"),
- optparse.make_option("--time-out-ms", default=600 * 1000,
- help="Set the timeout for each test"),
- optparse.make_option("--no-results", action="store_false", dest="generate_results", default=True,
- help="Do no generate results JSON and results page."),
- optparse.make_option("--output-json-path", action='callback', callback=_expand_path, type="str",
- help="Path to generate a JSON file at; may contain previous results if it already exists."),
- optparse.make_option("--reset-results", action="store_true",
- help="Clears the content in the generated JSON file before adding the results."),
- optparse.make_option("--slave-config-json-path", action='callback', callback=_expand_path, type="str",
- help="Only used on bots. Path to a slave configuration file."),
- optparse.make_option("--description",
- help="Add a description to the output JSON file if one is generated"),
- optparse.make_option("--no-show-results", action="store_false", default=True, dest="show_results",
- help="Don't launch a browser with results after the tests are done"),
- optparse.make_option("--test-results-server",
- help="Upload the generated JSON file to the specified server when --output-json-path is present."),
- optparse.make_option("--webkit-test-runner", "-2", action="store_true",
- help="Use WebKitTestRunner rather than DumpRenderTree."),
- optparse.make_option("--replay", dest="replay", action="store_true", default=False,
- help="Run replay tests."),
- optparse.make_option("--force", dest="use_skipped_list", action="store_false", default=True,
- help="Run all tests, including the ones in the Skipped list."),
- optparse.make_option("--profile", action="store_true",
- help="Output per-test profile information."),
- optparse.make_option("--profiler", action="store",
- help="Output per-test profile information, using the specified profiler."),
- optparse.make_option("--additional-drt-flag", action="append",
- default=[], help="Additional command line flag to pass to DumpRenderTree "
- "Specify multiple times to add multiple flags."),
- optparse.make_option("--driver-name", type="string",
- help="Alternative DumpRenderTree binary to use"),
- optparse.make_option("--repeat", default=1, type="int",
- help="Specify number of times to run test set (default: 1)."),
- optparse.make_option("--test-runner-count", default=DEFAULT_TEST_RUNNER_COUNT, type="int",
- help="Specify number of times to invoke test runner for each performance test."),
- ]
- return optparse.OptionParser(option_list=(perf_option_list)).parse_args(args)
-
- def _collect_tests(self):
- test_extensions = ['.html', '.svg']
- if self._options.replay:
- test_extensions.append('.replay')
-
- def _is_test_file(filesystem, dirname, filename):
- return filesystem.splitext(filename)[1] in test_extensions
-
- filesystem = self._host.filesystem
-
- paths = []
- for arg in self._args:
- if filesystem.exists(filesystem.join(self._base_path, arg)):
- paths.append(arg)
- else:
- relpath = filesystem.relpath(arg, self._base_path)
- if filesystem.exists(filesystem.join(self._base_path, relpath)):
- paths.append(filesystem.normpath(relpath))
- else:
- _log.warn('Path was not found:' + arg)
-
- skipped_directories = set(['.svn', 'resources'])
- test_files = find_files.find(filesystem, self._base_path, paths, skipped_directories, _is_test_file)
- tests = []
- for path in test_files:
- relative_path = filesystem.relpath(path, self._base_path).replace('\\', '/')
- if self._options.use_skipped_list and self._port.skips_perf_test(relative_path) and filesystem.normpath(relative_path) not in paths:
- continue
- test = PerfTestFactory.create_perf_test(self._port, relative_path, path, test_runner_count=self._options.test_runner_count)
- tests.append(test)
-
- return tests
-
- def run(self):
- if not self._port.check_build(needs_http=False):
- _log.error("Build not up to date for %s" % self._port._path_to_driver())
- return self.EXIT_CODE_BAD_BUILD
-
- run_count = 0
- repeat = self._options.repeat
- while (run_count < repeat):
- run_count += 1
-
- tests = self._collect_tests()
- runs = ' (Run %d of %d)' % (run_count, repeat) if repeat > 1 else ''
- _log.info("Running %d tests%s" % (len(tests), runs))
-
- for test in tests:
- if not test.prepare(self._options.time_out_ms):
- return self.EXIT_CODE_BAD_PREPARATION
-
- unexpected = self._run_tests_set(sorted(list(tests), key=lambda test: test.test_name()))
-
- if self._options.generate_results and not self._options.profile:
- exit_code = self._generate_results()
- if exit_code:
- return exit_code
-
- if self._options.generate_results and not self._options.profile:
- test_results_server = self._options.test_results_server
- if test_results_server and not self._upload_json(test_results_server, self._output_json_path()):
- return self.EXIT_CODE_FAILED_UPLOADING
-
- if self._options.show_results:
- self._port.show_results_html_file(self._results_page_path())
-
- return unexpected
-
- def _output_json_path(self):
- output_json_path = self._options.output_json_path
- if output_json_path:
- return output_json_path
- return self._host.filesystem.join(self._port.perf_results_directory(), self._DEFAULT_JSON_FILENAME)
-
- def _results_page_path(self):
- return self._host.filesystem.splitext(self._output_json_path())[0] + '.html'
-
- def _generate_results(self):
- options = self._options
- output_json_path = self._output_json_path()
- output = self._generate_results_dict(self._timestamp, options.description, options.platform, options.builder_name, options.build_number)
-
- if options.slave_config_json_path:
- output = self._merge_slave_config_json(options.slave_config_json_path, output)
- if not output:
- return self.EXIT_CODE_BAD_SOURCE_JSON
-
- output = self._merge_outputs_if_needed(output_json_path, output)
- if not output:
- return self.EXIT_CODE_BAD_MERGE
-
- filesystem = self._host.filesystem
- json_output = json.dumps(output)
- filesystem.write_text_file(output_json_path, json_output)
-
- template_path = filesystem.join(self._port.perf_tests_dir(), 'resources/results-template.html')
- template = filesystem.read_text_file(template_path)
-
- absolute_path_to_trunk = filesystem.dirname(self._port.perf_tests_dir())
- results_page = template.replace('%AbsolutePathToWebKitTrunk%', absolute_path_to_trunk)
- results_page = results_page.replace('%PeformanceTestsResultsJSON%', json_output)
-
- filesystem.write_text_file(self._results_page_path(), results_page)
-
- def _generate_results_dict(self, timestamp, description, platform, builder_name, build_number):
- revisions = {}
- for (name, path) in self._port.repository_paths():
- scm = SCMDetector(self._host.filesystem, self._host.executive).detect_scm_system(path) or self._host.scm()
- revision = scm.svn_revision(path)
- revisions[name] = {'revision': revision, 'timestamp': scm.timestamp_of_revision(path, revision)}
-
- meta_info = {
- 'description': description,
- 'buildTime': self._datetime_in_ES5_compatible_iso_format(self._utc_timestamp),
- 'platform': platform,
- 'revisions': revisions,
- 'builderName': builder_name,
- 'buildNumber': int(build_number) if build_number else None}
-
- contents = {'tests': {}}
- for key, value in meta_info.items():
- if value:
- contents[key] = value
-
- for test, metrics in self._results:
- for metric_name, iteration_values in metrics.iteritems():
- if not isinstance(iteration_values, list): # We can't reports results without individual measurements.
- continue
-
- tests = contents['tests']
- path = test.test_name_without_file_extension().split('/')
- for i in range(0, len(path)):
- is_last_token = i + 1 == len(path)
- url = view_source_url('PerformanceTests/' + (test.test_name() if is_last_token else '/'.join(path[0:i + 1])))
- tests.setdefault(path[i], {'url': url})
- current_test = tests[path[i]]
- if is_last_token:
- current_test.setdefault('metrics', {})
- assert metric_name not in current_test['metrics']
- current_test['metrics'][metric_name] = {'current': iteration_values}
- else:
- current_test.setdefault('tests', {})
- tests = current_test['tests']
-
- return contents
-
- @staticmethod
- def _datetime_in_ES5_compatible_iso_format(datetime):
- return datetime.strftime('%Y-%m-%dT%H:%M:%S.%f')
-
- def _merge_slave_config_json(self, slave_config_json_path, contents):
- if not self._host.filesystem.isfile(slave_config_json_path):
- _log.error("Missing slave configuration JSON file: %s" % slave_config_json_path)
- return None
-
- try:
- slave_config_json = self._host.filesystem.open_text_file_for_reading(slave_config_json_path)
- slave_config = json.load(slave_config_json)
- for key in slave_config:
- contents['builder' + key.capitalize()] = slave_config[key]
- return contents
- except Exception, error:
- _log.error("Failed to merge slave configuration JSON file %s: %s" % (slave_config_json_path, error))
- return None
-
- def _merge_outputs_if_needed(self, output_json_path, output):
- if self._options.reset_results or not self._host.filesystem.isfile(output_json_path):
- return [output]
- try:
- existing_outputs = json.loads(self._host.filesystem.read_text_file(output_json_path))
- return existing_outputs + [output]
- except Exception, error:
- _log.error("Failed to merge output JSON file %s: %s" % (output_json_path, error))
- return None
-
- def _upload_json(self, test_results_server, json_path, host_path="/api/report", file_uploader=FileUploader):
- url = "https://%s%s" % (test_results_server, host_path)
- uploader = file_uploader(url, 120)
- try:
- response = uploader.upload_single_text_file(self._host.filesystem, 'application/json', json_path)
- except Exception, error:
- _log.error("Failed to upload JSON file to %s in 120s: %s" % (url, error))
- return False
-
- response_body = [line.strip('\n') for line in response]
- if response_body != ['OK']:
- try:
- parsed_response = json.loads('\n'.join(response_body))
- except:
- _log.error("Uploaded JSON to %s but got a bad response:" % url)
- for line in response_body:
- _log.error(line)
- return False
- if parsed_response.get('status') != 'OK':
- _log.error("Uploaded JSON to %s but got an error:" % url)
- _log.error(json.dumps(parsed_response, indent=4))
- return False
-
- _log.info("JSON file uploaded to %s." % url)
- return True
-
- def _run_tests_set(self, tests):
- result_count = len(tests)
- failures = 0
- self._results = []
-
- for i, test in enumerate(tests):
- _log.info('Running %s (%d of %d)' % (test.test_name(), i + 1, len(tests)))
- start_time = time.time()
- metrics = test.run(self._options.time_out_ms)
- if metrics:
- self._results.append((test, metrics))
- else:
- failures += 1
- _log.error('FAILED')
-
- _log.info('Finished: %f s' % (time.time() - start_time))
- _log.info('')
-
- return failures
diff --git a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py
deleted file mode 100644
index a0832a9cd..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_integrationtest.py
+++ /dev/null
@@ -1,562 +0,0 @@
-# Copyright (C) 2012 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.
-
-"""Integration tests for run_perf_tests."""
-
-import StringIO
-import datetime
-import json
-import re
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.driver import DriverOutput
-from webkitpy.port.test import TestPort
-from webkitpy.performance_tests.perftest import PerfTest
-from webkitpy.performance_tests.perftestsrunner import PerfTestsRunner
-
-
-class EventTargetWrapperTestData:
- text = """Running 20 times
-Ignoring warm-up run (1502)
-1504
-1505
-1510
-1504
-1507
-1509
-1510
-1487
-1488
-1472
-1472
-1488
-1473
-1472
-1475
-1487
-1486
-1486
-1475
-1471
-
-Time:
-values 1486, 1471, 1510, 1505, 1478, 1490 ms
-avg 1490 ms
-median 1488 ms
-stdev 15.13935 ms
-min 1471 ms
-max 1510 ms
-"""
-
- output = """Running Bindings/event-target-wrapper.html (1 of 2)
-RESULT Bindings: event-target-wrapper: Time= 1490.0 ms
-median= 1488.0 ms, stdev= 14.11751 ms, min= 1471.0 ms, max= 1510.0 ms
-Finished: 0.1 s
-
-"""
-
- results = {'url': 'http://trac.webkit.org/browser/trunk/PerformanceTests/Bindings/event-target-wrapper.html',
- 'metrics': {'Time': {'current': [[1486.0, 1471.0, 1510.0, 1505.0, 1478.0, 1490.0]] * 4}}}
-
-
-class SomeParserTestData:
- text = """Running 20 times
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50861 ms
-min 1080 ms
-max 1120 ms
-"""
-
- output = """Running Parser/some-parser.html (2 of 2)
-RESULT Parser: some-parser: Time= 1100.0 ms
-median= 1101.0 ms, stdev= 13.31402 ms, min= 1080.0 ms, max= 1120.0 ms
-Finished: 0.1 s
-
-"""
-
- results = {'url': 'http://trac.webkit.org/browser/trunk/PerformanceTests/Parser/some-parser.html',
- 'metrics': {'Time': {'current': [[1080.0, 1120.0, 1095.0, 1101.0, 1104.0]] * 4}}}
-
-
-class MemoryTestData:
- text = """Running 20 times
-Ignoring warm-up run (1115)
-
-Time:
-values 1080, 1120, 1095, 1101, 1104 ms
-avg 1100 ms
-median 1101 ms
-stdev 14.50861 ms
-min 1080 ms
-max 1120 ms
-
-JS Heap:
-values 825000, 811000, 848000, 837000, 829000 bytes
-avg 830000 bytes
-median 829000 bytes
-stdev 13784.04875 bytes
-min 811000 bytes
-max 848000 bytes
-
-Malloc:
-values 529000, 511000, 548000, 536000, 521000 bytes
-avg 529000 bytes
-median 529000 bytes
-stdev 14124.44689 bytes
-min 511000 bytes
-max 548000 bytes
-"""
-
- output = """Running 1 tests
-Running Parser/memory-test.html (1 of 1)
-RESULT Parser: memory-test: Time= 1100.0 ms
-median= 1101.0 ms, stdev= 13.31402 ms, min= 1080.0 ms, max= 1120.0 ms
-RESULT Parser: memory-test: JSHeap= 830000.0 bytes
-median= 829000.0 bytes, stdev= 12649.11064 bytes, min= 811000.0 bytes, max= 848000.0 bytes
-RESULT Parser: memory-test: Malloc= 529000.0 bytes
-median= 529000.0 bytes, stdev= 12961.48139 bytes, min= 511000.0 bytes, max= 548000.0 bytes
-Finished: 0.1 s
-"""
-
- results = {'current': [[1080, 1120, 1095, 1101, 1104]] * 4}
- js_heap_results = {'current': [[825000, 811000, 848000, 837000, 829000]] * 4}
- malloc_results = {'current': [[529000, 511000, 548000, 536000, 521000]] * 4}
-
-
-class TestDriver:
- def run_test(self, driver_input, stop_when_done):
- text = ''
- timeout = False
- crash = False
- if driver_input.test_name.endswith('pass.html'):
- text = SomeParserTestData.text
- elif driver_input.test_name.endswith('timeout.html'):
- timeout = True
- elif driver_input.test_name.endswith('failed.html'):
- text = None
- elif driver_input.test_name.endswith('tonguey.html'):
- text = 'we are not expecting an output from perf tests but RESULT blablabla'
- elif driver_input.test_name.endswith('crash.html'):
- crash = True
- elif driver_input.test_name.endswith('event-target-wrapper.html'):
- text = EventTargetWrapperTestData.text
- elif driver_input.test_name.endswith('some-parser.html'):
- text = SomeParserTestData.text
- elif driver_input.test_name.endswith('memory-test.html'):
- text = MemoryTestData.text
- return DriverOutput(text, '', '', '', crash=crash, timeout=timeout)
-
- def start(self):
- """do nothing"""
-
- def stop(self):
- """do nothing"""
-
-
-class MainTest(unittest.TestCase):
- def _normalize_output(self, log):
- return re.sub(r'(stdev=\s+\d+\.\d{5})\d+', r'\1', re.sub(r'Finished: [0-9\.]+ s', 'Finished: 0.1 s', log))
-
- def _load_output_json(self, runner):
- json_content = runner._host.filesystem.read_text_file(runner._output_json_path())
- return json.loads(re.sub(r'("stdev":\s*\d+\.\d{5})\d+', r'\1', json_content))
-
- def create_runner(self, args=[], driver_class=TestDriver):
- options, parsed_args = PerfTestsRunner._parse_args(args)
- test_port = TestPort(host=MockHost(), options=options)
- test_port.create_driver = lambda worker_number=None, no_timeout=False: driver_class()
-
- runner = PerfTestsRunner(args=args, port=test_port)
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'inspector')
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'Bindings')
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'Parser')
-
- return runner, test_port
-
- def run_test(self, test_name):
- runner, port = self.create_runner()
- tests = [PerfTest(port, test_name, runner._host.filesystem.join('some-dir', test_name))]
- return runner._run_tests_set(tests) == 0
-
- def test_run_passing_test(self):
- self.assertTrue(self.run_test('pass.html'))
-
- def test_run_silent_test(self):
- self.assertFalse(self.run_test('silent.html'))
-
- def test_run_failed_test(self):
- self.assertFalse(self.run_test('failed.html'))
-
- def test_run_tonguey_test(self):
- self.assertFalse(self.run_test('tonguey.html'))
-
- def test_run_timeout_test(self):
- self.assertFalse(self.run_test('timeout.html'))
-
- def test_run_crash_test(self):
- self.assertFalse(self.run_test('crash.html'))
-
- def _tests_for_runner(self, runner, test_names):
- filesystem = runner._host.filesystem
- tests = []
- for test in test_names:
- path = filesystem.join(runner._base_path, test)
- dirname = filesystem.dirname(path)
- tests.append(PerfTest(runner._port, test, path))
- return tests
-
- def test_run_test_set_kills_drt_per_run(self):
-
- class TestDriverWithStopCount(TestDriver):
- stop_count = 0
- def stop(self):
- TestDriverWithStopCount.stop_count += 1
-
- runner, port = self.create_runner(driver_class=TestDriverWithStopCount)
-
- tests = self._tests_for_runner(runner, ['inspector/pass.html', 'inspector/silent.html', 'inspector/failed.html',
- 'inspector/tonguey.html', 'inspector/timeout.html', 'inspector/crash.html'])
- unexpected_result_count = runner._run_tests_set(tests)
-
- self.assertEqual(TestDriverWithStopCount.stop_count, 9)
-
- def test_run_test_set_for_parser_tests(self):
- runner, port = self.create_runner()
- tests = self._tests_for_runner(runner, ['Bindings/event-target-wrapper.html', 'Parser/some-parser.html'])
- output = OutputCapture()
- output.capture_output()
- try:
- unexpected_result_count = runner._run_tests_set(tests)
- finally:
- stdout, stderr, log = output.restore_output()
- self.assertEqual(unexpected_result_count, 0)
- self.assertEqual(self._normalize_output(log), EventTargetWrapperTestData.output + SomeParserTestData.output)
-
- def test_run_memory_test(self):
- runner, port = self.create_runner_and_setup_results_template()
- runner._timestamp = 123456789
- port.host.filesystem.write_text_file(runner._base_path + '/Parser/memory-test.html', 'some content')
-
- output = OutputCapture()
- output.capture_output()
- try:
- unexpected_result_count = runner.run()
- finally:
- stdout, stderr, log = output.restore_output()
- self.assertEqual(unexpected_result_count, 0)
- self.assertEqual(self._normalize_output(log), MemoryTestData.output + '\nMOCK: user.open_url: file://...\n')
- parser_tests = self._load_output_json(runner)[0]['tests']['Parser']['tests']
- self.assertEqual(parser_tests['memory-test']['metrics']['Time'], MemoryTestData.results)
- self.assertEqual(parser_tests['memory-test']['metrics']['JSHeap'], MemoryTestData.js_heap_results)
- self.assertEqual(parser_tests['memory-test']['metrics']['Malloc'], MemoryTestData.malloc_results)
-
- def _test_run_with_json_output(self, runner, filesystem, upload_succeeds=False, results_shown=True, expected_exit_code=0, repeat=1, compare_logs=True):
- filesystem.write_text_file(runner._base_path + '/Parser/some-parser.html', 'some content')
- filesystem.write_text_file(runner._base_path + '/Bindings/event-target-wrapper.html', 'some content')
-
- uploaded = [False]
-
- def mock_upload_json(hostname, json_path, host_path=None):
- # FIXME: Get rid of the hard-coded perf.webkit.org once we've completed the transition.
- self.assertIn(hostname, ['some.host'])
- self.assertIn(json_path, ['/mock-checkout/output.json'])
- self.assertIn(host_path, [None, '/api/report'])
- uploaded[0] = upload_succeeds
- return upload_succeeds
-
- runner._upload_json = mock_upload_json
- runner._timestamp = 123456789
- runner._utc_timestamp = datetime.datetime(2013, 2, 8, 15, 19, 37, 460000)
- output_capture = OutputCapture()
- output_capture.capture_output()
- try:
- self.assertEqual(runner.run(), expected_exit_code)
- finally:
- stdout, stderr, logs = output_capture.restore_output()
-
- if not expected_exit_code and compare_logs:
- expected_logs = ''
- for i in xrange(repeat):
- runs = ' (Run %d of %d)' % (i + 1, repeat) if repeat > 1 else ''
- expected_logs += 'Running 2 tests%s\n' % runs + EventTargetWrapperTestData.output + SomeParserTestData.output
- if results_shown:
- expected_logs += 'MOCK: user.open_url: file://...\n'
- self.assertEqual(self._normalize_output(logs), expected_logs)
-
- self.assertEqual(uploaded[0], upload_succeeds)
-
- return logs
-
- _event_target_wrapper_and_inspector_results = {
- "Bindings":
- {"url": "http://trac.webkit.org/browser/trunk/PerformanceTests/Bindings",
- "tests": {"event-target-wrapper": EventTargetWrapperTestData.results}},
- "Parser":
- {"url": "http://trac.webkit.org/browser/trunk/PerformanceTests/Parser",
- "tests": {"some-parser": SomeParserTestData.results}}}
-
- def test_run_with_json_output(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server=some.host'])
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
-
- filesystem = port.host.filesystem
- self.assertTrue(filesystem.isfile(runner._output_json_path()))
- self.assertTrue(filesystem.isfile(filesystem.splitext(runner._output_json_path())[0] + '.html'))
-
- def test_run_with_description(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server=some.host', '--description', 'some description'])
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "description": "some description",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
-
- def create_runner_and_setup_results_template(self, args=[]):
- runner, port = self.create_runner(args)
- filesystem = port.host.filesystem
- filesystem.write_text_file(runner._base_path + '/resources/results-template.html',
- 'BEGIN<script src="%AbsolutePathToWebKitTrunk%/some.js"></script>'
- '<script src="%AbsolutePathToWebKitTrunk%/other.js"></script><script>%PeformanceTestsResultsJSON%</script>END')
- filesystem.write_text_file(runner._base_path + '/Dromaeo/resources/dromaeo/web/lib/jquery-1.6.4.js', 'jquery content')
- return runner, port
-
- def test_run_respects_no_results(self):
- runner, port = self.create_runner(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server=some.host', '--no-results'])
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=False, results_shown=False)
- self.assertFalse(port.host.filesystem.isfile('/mock-checkout/output.json'))
-
- def test_run_generates_json_by_default(self):
- runner, port = self.create_runner_and_setup_results_template()
- filesystem = port.host.filesystem
- output_json_path = runner._output_json_path()
- results_page_path = filesystem.splitext(output_json_path)[0] + '.html'
-
- self.assertFalse(filesystem.isfile(output_json_path))
- self.assertFalse(filesystem.isfile(results_page_path))
-
- self._test_run_with_json_output(runner, port.host.filesystem)
-
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
-
- self.assertTrue(filesystem.isfile(output_json_path))
- self.assertTrue(filesystem.isfile(results_page_path))
-
- def test_run_merges_output_by_default(self):
- runner, port = self.create_runner_and_setup_results_template()
- filesystem = port.host.filesystem
- output_json_path = runner._output_json_path()
-
- filesystem.write_text_file(output_json_path, '[{"previous": "results"}]')
-
- self._test_run_with_json_output(runner, port.host.filesystem)
-
- self.assertEqual(self._load_output_json(runner), [{"previous": "results"}, {
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
- self.assertTrue(filesystem.isfile(filesystem.splitext(output_json_path)[0] + '.html'))
-
- def test_run_respects_reset_results(self):
- runner, port = self.create_runner_and_setup_results_template(args=["--reset-results"])
- filesystem = port.host.filesystem
- output_json_path = runner._output_json_path()
-
- filesystem.write_text_file(output_json_path, '[{"previous": "results"}]')
-
- self._test_run_with_json_output(runner, port.host.filesystem)
-
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
- self.assertTrue(filesystem.isfile(filesystem.splitext(output_json_path)[0] + '.html'))
- pass
-
- def test_run_generates_and_show_results_page(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json'])
- page_shown = []
- port.show_results_html_file = lambda path: page_shown.append(path)
- filesystem = port.host.filesystem
- self._test_run_with_json_output(runner, filesystem, results_shown=False)
-
- expected_entry = {"buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}
-
- self.maxDiff = None
- self.assertEqual(runner._output_json_path(), '/mock-checkout/output.json')
- self.assertEqual(self._load_output_json(runner), [expected_entry])
- self.assertEqual(filesystem.read_text_file('/mock-checkout/output.html'),
- 'BEGIN<script src="/test.checkout/some.js"></script><script src="/test.checkout/other.js"></script>'
- '<script>%s</script>END' % port.host.filesystem.read_text_file(runner._output_json_path()))
- self.assertEqual(page_shown[0], '/mock-checkout/output.html')
-
- self._test_run_with_json_output(runner, filesystem, results_shown=False)
- self.assertEqual(runner._output_json_path(), '/mock-checkout/output.json')
- self.assertEqual(self._load_output_json(runner), [expected_entry, expected_entry])
- self.assertEqual(filesystem.read_text_file('/mock-checkout/output.html'),
- 'BEGIN<script src="/test.checkout/some.js"></script><script src="/test.checkout/other.js"></script>'
- '<script>%s</script>END' % port.host.filesystem.read_text_file(runner._output_json_path()))
-
- def test_run_respects_no_show_results(self):
- show_results_html_file = lambda path: page_shown.append(path)
-
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json'])
- page_shown = []
- port.show_results_html_file = show_results_html_file
- self._test_run_with_json_output(runner, port.host.filesystem, results_shown=False)
- self.assertEqual(page_shown[0], '/mock-checkout/output.html')
-
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--no-show-results'])
- page_shown = []
- port.show_results_html_file = show_results_html_file
- self._test_run_with_json_output(runner, port.host.filesystem, results_shown=False)
- self.assertEqual(page_shown, [])
-
- def test_run_with_bad_output_json(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json'])
- port.host.filesystem.write_text_file('/mock-checkout/output.json', 'bad json')
- self._test_run_with_json_output(runner, port.host.filesystem, expected_exit_code=PerfTestsRunner.EXIT_CODE_BAD_MERGE)
- port.host.filesystem.write_text_file('/mock-checkout/output.json', '{"another bad json": "1"}')
- self._test_run_with_json_output(runner, port.host.filesystem, expected_exit_code=PerfTestsRunner.EXIT_CODE_BAD_MERGE)
-
- def test_run_with_slave_config_json(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--slave-config-json-path=/mock-checkout/slave-config.json', '--test-results-server=some.host'])
- port.host.filesystem.write_text_file('/mock-checkout/slave-config.json', '{"key": "value"}')
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}, "builderKey": "value"}])
-
- def test_run_with_bad_slave_config_json(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--slave-config-json-path=/mock-checkout/slave-config.json', '--test-results-server=some.host'])
- logs = self._test_run_with_json_output(runner, port.host.filesystem, expected_exit_code=PerfTestsRunner.EXIT_CODE_BAD_SOURCE_JSON)
- self.assertTrue('Missing slave configuration JSON file: /mock-checkout/slave-config.json' in logs)
- port.host.filesystem.write_text_file('/mock-checkout/slave-config.json', 'bad json')
- self._test_run_with_json_output(runner, port.host.filesystem, expected_exit_code=PerfTestsRunner.EXIT_CODE_BAD_SOURCE_JSON)
- port.host.filesystem.write_text_file('/mock-checkout/slave-config.json', '["another bad json"]')
- self._test_run_with_json_output(runner, port.host.filesystem, expected_exit_code=PerfTestsRunner.EXIT_CODE_BAD_SOURCE_JSON)
-
- def test_run_with_multiple_repositories(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server=some.host'])
- port.repository_paths = lambda: [('webkit', '/mock-checkout'), ('some', '/mock-checkout/some')]
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- self.assertEqual(self._load_output_json(runner), [{
- "buildTime": "2013-02-08T15:19:37.460000", "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"webkit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"},
- "some": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
-
- def test_run_with_upload_json(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server', 'some.host', '--platform', 'platform1', '--builder-name', 'builder1', '--build-number', '123'])
-
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- generated_json = json.loads(port.host.filesystem.files['/mock-checkout/output.json'])
- self.assertEqual(generated_json[0]['platform'], 'platform1')
- self.assertEqual(generated_json[0]['builderName'], 'builder1')
- self.assertEqual(generated_json[0]['buildNumber'], 123)
-
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=False, expected_exit_code=PerfTestsRunner.EXIT_CODE_FAILED_UPLOADING)
-
- def test_run_with_upload_json_should_generate_perf_webkit_json(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server', 'some.host', '--platform', 'platform1', '--builder-name', 'builder1', '--build-number', '123',
- '--slave-config-json-path=/mock-checkout/slave-config.json'])
- port.host.filesystem.write_text_file('/mock-checkout/slave-config.json', '{"key": "value1"}')
-
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True)
- generated_json = json.loads(port.host.filesystem.files['/mock-checkout/output.json'])
- self.assertTrue(isinstance(generated_json, list))
- self.assertEqual(len(generated_json), 1)
-
- output = generated_json[0]
- self.maxDiff = None
- self.assertEqual(output['platform'], 'platform1')
- self.assertEqual(output['buildNumber'], 123)
- self.assertEqual(output['buildTime'], '2013-02-08T15:19:37.460000')
- self.assertEqual(output['builderName'], 'builder1')
- self.assertEqual(output['builderKey'], 'value1')
- self.assertEqual(output['revisions'], {'WebKit': {'revision': '5678', 'timestamp': '2013-02-01 08:48:05 +0000'}})
- self.assertEqual(output['tests'].keys(), ['Bindings', 'Parser'])
- self.assertEqual(sorted(output['tests']['Bindings'].keys()), ['tests', 'url'])
- self.assertEqual(output['tests']['Bindings']['url'], 'http://trac.webkit.org/browser/trunk/PerformanceTests/Bindings')
- self.assertEqual(output['tests']['Bindings']['tests'].keys(), ['event-target-wrapper'])
- self.assertEqual(output['tests']['Bindings']['tests']['event-target-wrapper'], {
- 'url': 'http://trac.webkit.org/browser/trunk/PerformanceTests/Bindings/event-target-wrapper.html',
- 'metrics': {'Time': {'current': [[1486.0, 1471.0, 1510.0, 1505.0, 1478.0, 1490.0]] * 4}}})
-
- def test_run_with_repeat(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-results-server=some.host', '--repeat', '5'])
- self._test_run_with_json_output(runner, port.host.filesystem, upload_succeeds=True, repeat=5)
- self.assertEqual(self._load_output_json(runner), [
- {"buildTime": "2013-02-08T15:19:37.460000",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}},
- {"buildTime": "2013-02-08T15:19:37.460000",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}},
- {"buildTime": "2013-02-08T15:19:37.460000",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}},
- {"buildTime": "2013-02-08T15:19:37.460000",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}},
- {"buildTime": "2013-02-08T15:19:37.460000",
- "tests": self._event_target_wrapper_and_inspector_results,
- "revisions": {"WebKit": {"timestamp": "2013-02-01 08:48:05 +0000", "revision": "5678"}}}])
-
- def test_run_with_test_runner_count(self):
- runner, port = self.create_runner_and_setup_results_template(args=['--output-json-path=/mock-checkout/output.json',
- '--test-runner-count=3'])
- self._test_run_with_json_output(runner, port.host.filesystem, compare_logs=False)
- generated_json = json.loads(port.host.filesystem.files['/mock-checkout/output.json'])
- self.assertTrue(isinstance(generated_json, list))
- self.assertEqual(len(generated_json), 1)
-
- output = generated_json[0]['tests']['Bindings']['tests']['event-target-wrapper']['metrics']['Time']['current']
- self.assertEqual(len(output), 3)
- expectedMetrics = EventTargetWrapperTestData.results['metrics']['Time']['current'][0]
- for metrics in output:
- self.assertEqual(metrics, expectedMetrics)
diff --git a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py b/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py
deleted file mode 100644
index 29bd7a8b1..000000000
--- a/Tools/Scripts/webkitpy/performance_tests/perftestsrunner_unittest.py
+++ /dev/null
@@ -1,231 +0,0 @@
-# Copyright (C) 2012 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.
-
-"""Unit tests for run_perf_tests."""
-
-import StringIO
-import json
-import re
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.test import TestPort
-from webkitpy.performance_tests.perftest import DEFAULT_TEST_RUNNER_COUNT
-from webkitpy.performance_tests.perftestsrunner import PerfTestsRunner
-
-
-class MainTest(unittest.TestCase):
- def create_runner(self, args=[]):
- options, parsed_args = PerfTestsRunner._parse_args(args)
- test_port = TestPort(host=MockHost(), options=options)
- runner = PerfTestsRunner(args=args, port=test_port)
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'inspector')
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'Bindings')
- runner._host.filesystem.maybe_make_directory(runner._base_path, 'Parser')
- return runner, test_port
-
- def _add_file(self, runner, dirname, filename, content=True):
- dirname = runner._host.filesystem.join(runner._base_path, dirname) if dirname else runner._base_path
- runner._host.filesystem.maybe_make_directory(dirname)
- runner._host.filesystem.files[runner._host.filesystem.join(dirname, filename)] = content
-
- def test_collect_tests(self):
- runner, port = self.create_runner()
- self._add_file(runner, 'inspector', 'a_file.html', 'a content')
- tests = runner._collect_tests()
- self.assertEqual(len(tests), 1)
-
- def _collect_tests_and_sort_test_name(self, runner):
- return sorted([test.test_name() for test in runner._collect_tests()])
-
- def test_collect_tests_with_multile_files(self):
- runner, port = self.create_runner(args=['PerformanceTests/test1.html', 'test2.html'])
-
- def add_file(filename):
- port.host.filesystem.files[runner._host.filesystem.join(runner._base_path, filename)] = 'some content'
-
- add_file('test1.html')
- add_file('test2.html')
- add_file('test3.html')
- port.host.filesystem.chdir(runner._port.perf_tests_dir()[:runner._port.perf_tests_dir().rfind(runner._host.filesystem.sep)])
- self.assertItemsEqual(self._collect_tests_and_sort_test_name(runner), ['test1.html', 'test2.html'])
-
- def test_collect_tests_with_skipped_list(self):
- runner, port = self.create_runner()
-
- self._add_file(runner, 'inspector', 'test1.html')
- self._add_file(runner, 'inspector', 'unsupported_test1.html')
- self._add_file(runner, 'inspector', 'test2.html')
- self._add_file(runner, 'inspector/resources', 'resource_file.html')
- self._add_file(runner, 'unsupported', 'unsupported_test2.html')
- port.skipped_perf_tests = lambda: ['inspector/unsupported_test1.html', 'unsupported']
- self.assertItemsEqual(self._collect_tests_and_sort_test_name(runner), ['inspector/test1.html', 'inspector/test2.html'])
-
- def test_collect_tests_with_skipped_list_and_files(self):
- runner, port = self.create_runner(args=['Suite/Test1.html', 'Suite/SkippedTest1.html', 'SkippedSuite/Test1.html'])
-
- self._add_file(runner, 'SkippedSuite', 'Test1.html')
- self._add_file(runner, 'SkippedSuite', 'Test2.html')
- self._add_file(runner, 'Suite', 'Test1.html')
- self._add_file(runner, 'Suite', 'Test2.html')
- self._add_file(runner, 'Suite', 'SkippedTest1.html')
- self._add_file(runner, 'Suite', 'SkippedTest2.html')
- port.skipped_perf_tests = lambda: ['Suite/SkippedTest1.html', 'Suite/SkippedTest1.html', 'SkippedSuite']
- self.assertItemsEqual(self._collect_tests_and_sort_test_name(runner),
- ['SkippedSuite/Test1.html', 'Suite/SkippedTest1.html', 'Suite/Test1.html'])
-
- def test_collect_tests_with_ignored_skipped_list(self):
- runner, port = self.create_runner(args=['--force'])
-
- self._add_file(runner, 'inspector', 'test1.html')
- self._add_file(runner, 'inspector', 'unsupported_test1.html')
- self._add_file(runner, 'inspector', 'test2.html')
- self._add_file(runner, 'inspector/resources', 'resource_file.html')
- self._add_file(runner, 'unsupported', 'unsupported_test2.html')
- port.skipped_perf_tests = lambda: ['inspector/unsupported_test1.html', 'unsupported']
- self.assertItemsEqual(self._collect_tests_and_sort_test_name(runner), ['inspector/test1.html', 'inspector/test2.html', 'inspector/unsupported_test1.html', 'unsupported/unsupported_test2.html'])
-
- def test_collect_tests_should_ignore_replay_tests_by_default(self):
- runner, port = self.create_runner()
- self._add_file(runner, 'Replay', 'www.webkit.org.replay')
- self.assertItemsEqual(runner._collect_tests(), [])
-
- def test_collect_tests_with_replay_tests(self):
- runner, port = self.create_runner(args=['--replay'])
- self._add_file(runner, 'Replay', 'www.webkit.org.replay')
- tests = runner._collect_tests()
- self.assertEqual(len(tests), 1)
- self.assertEqual(tests[0].__class__.__name__, 'ReplayPerfTest')
-
- def test_default_args(self):
- runner, port = self.create_runner()
- options, args = PerfTestsRunner._parse_args([])
- self.assertTrue(options.build)
- self.assertEqual(options.time_out_ms, 600 * 1000)
- self.assertTrue(options.generate_results)
- self.assertTrue(options.show_results)
- self.assertFalse(options.replay)
- self.assertTrue(options.use_skipped_list)
- self.assertEqual(options.repeat, 1)
- self.assertEqual(options.test_runner_count, DEFAULT_TEST_RUNNER_COUNT)
-
- def test_parse_args(self):
- runner, port = self.create_runner()
- options, args = PerfTestsRunner._parse_args([
- '--build-directory=folder42',
- '--platform=platform42',
- '--builder-name', 'webkit-mac-1',
- '--build-number=56',
- '--time-out-ms=42',
- '--no-show-results',
- '--reset-results',
- '--output-json-path=a/output.json',
- '--slave-config-json-path=a/source.json',
- '--test-results-server=somehost',
- '--additional-drt-flag=--enable-threaded-parser',
- '--additional-drt-flag=--awesomesauce',
- '--repeat=5',
- '--test-runner-count=5',
- '--debug'])
- self.assertTrue(options.build)
- self.assertEqual(options.build_directory, 'folder42')
- self.assertEqual(options.platform, 'platform42')
- self.assertEqual(options.builder_name, 'webkit-mac-1')
- self.assertEqual(options.build_number, '56')
- self.assertEqual(options.time_out_ms, '42')
- self.assertEqual(options.configuration, 'Debug')
- self.assertFalse(options.show_results)
- self.assertTrue(options.reset_results)
- self.assertEqual(options.output_json_path, 'a/output.json')
- self.assertEqual(options.slave_config_json_path, 'a/source.json')
- self.assertEqual(options.test_results_server, 'somehost')
- self.assertEqual(options.additional_drt_flag, ['--enable-threaded-parser', '--awesomesauce'])
- self.assertEqual(options.repeat, 5)
- self.assertEqual(options.test_runner_count, 5)
-
- def test_upload_json(self):
- runner, port = self.create_runner()
- port.host.filesystem.files['/mock-checkout/some.json'] = 'some content'
-
- class MockFileUploader:
- called = []
- upload_single_text_file_throws = False
- upload_single_text_file_return_value = None
-
- @classmethod
- def reset(cls):
- cls.called = []
- cls.upload_single_text_file_throws = False
- cls.upload_single_text_file_return_value = None
-
- def __init__(mock, url, timeout):
- self.assertEqual(url, 'https://some.host/some/path')
- self.assertTrue(isinstance(timeout, int) and timeout)
- mock.called.append('FileUploader')
-
- def upload_single_text_file(mock, filesystem, content_type, filename):
- self.assertEqual(filesystem, port.host.filesystem)
- self.assertEqual(content_type, 'application/json')
- self.assertEqual(filename, 'some.json')
- mock.called.append('upload_single_text_file')
- if mock.upload_single_text_file_throws:
- raise Exception
- return mock.upload_single_text_file_return_value
-
- MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('OK')
- self.assertTrue(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
- self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
-
- MockFileUploader.reset()
- MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('Some error')
- output = OutputCapture()
- output.capture_output()
- self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
- _, _, logs = output.restore_output()
- self.assertEqual(logs, 'Uploaded JSON to https://some.host/some/path but got a bad response:\nSome error\n')
-
- # Throwing an exception upload_single_text_file shouldn't blow up _upload_json
- MockFileUploader.reset()
- MockFileUploader.upload_single_text_file_throws = True
- self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
- self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
-
- MockFileUploader.reset()
- MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('{"status": "OK"}')
- self.assertTrue(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
- self.assertEqual(MockFileUploader.called, ['FileUploader', 'upload_single_text_file'])
-
- MockFileUploader.reset()
- MockFileUploader.upload_single_text_file_return_value = StringIO.StringIO('{"status": "SomethingHasFailed", "failureStored": false}')
- output = OutputCapture()
- output.capture_output()
- self.assertFalse(runner._upload_json('some.host', 'some.json', '/some/path', MockFileUploader))
- _, _, logs = output.restore_output()
- serialized_json = json.dumps({'status': 'SomethingHasFailed', 'failureStored': False}, indent=4)
- self.assertEqual(logs, 'Uploaded JSON to https://some.host/some/path but got an error:\n%s\n' % serialized_json)
diff --git a/Tools/Scripts/webkitpy/port/__init__.py b/Tools/Scripts/webkitpy/port/__init__.py
deleted file mode 100644
index b2a50844c..000000000
--- a/Tools/Scripts/webkitpy/port/__init__.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Port-specific entrypoints for the layout tests test infrastructure."""
-
-import builders # Why is this in port?
-
-from base import Port # It's possible we don't need to export this virtual baseclass outside the module.
-from driver import Driver, DriverInput, DriverOutput
-from factory import platform_options, configuration_options
diff --git a/Tools/Scripts/webkitpy/port/apple.py b/Tools/Scripts/webkitpy/port/apple.py
deleted file mode 100644
index 966d04a9d..000000000
--- a/Tools/Scripts/webkitpy/port/apple.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (C) 2011 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 Google name 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.
-
-import logging
-
-from webkitpy.port.base import Port
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-
-
-_log = logging.getLogger(__name__)
-
-
-class ApplePort(Port):
- """Shared logic between all of Apple's ports."""
-
- # This is used to represent the version of an operating system
- # corresponding to the "mac" or "win" base LayoutTests/platform
- # directory. I'm not sure this concept is very useful,
- # but it gives us a way to refer to fallback paths *only* including
- # the base directory.
- # This is mostly done because TestConfiguration assumes that self.version()
- # will never return None. (None would be another way to represent this concept.)
- # Apple supposedly has explicit "future" results which are kept in an internal repository.
- # It's possible that Apple would want to fix this code to work better with those results.
- FUTURE_VERSION = 'future' # FIXME: This whole 'future' thing feels like a hack.
-
- # overridden in subclasses
- VERSION_FALLBACK_ORDER = []
- ARCHITECTURES = []
-
- @classmethod
- def determine_full_port_name(cls, host, options, port_name):
- options = options or {}
- if port_name in (cls.port_name, cls.port_name + '-wk2'):
- # If the port_name matches the (badly named) cls.port_name, that
- # means that they passed 'mac' or 'win' and didn't specify a version.
- # That convention means that we're supposed to use the version currently
- # being run, so this won't work if you're not on mac or win (respectively).
- # If you're not on the o/s in question, you must specify a full version or -future (cf. above).
- assert host.platform.os_name in port_name, "%s is not in %s!" % (host.platform.os_name, port_name)
- if port_name == cls.port_name and not getattr(options, 'webkit_test_runner', False):
- port_name = cls.port_name + '-' + host.platform.os_version
- else:
- port_name = cls.port_name + '-' + host.platform.os_version + '-wk2'
- elif getattr(options, 'webkit_test_runner', False) and '-wk2' not in port_name:
- port_name += '-wk2'
-
- return port_name
-
- def _strip_port_name_prefix(self, port_name):
- # Callers treat this return value as the "version", which only works
- # because Apple ports use a simple name-version port_name scheme.
- # FIXME: This parsing wouldn't be needed if port_name handling was moved to factory.py
- # instead of the individual port constructors.
- return port_name[len(self.port_name + '-'):]
-
- def __init__(self, host, port_name, **kwargs):
- super(ApplePort, self).__init__(host, port_name, **kwargs)
-
- allowed_port_names = self.VERSION_FALLBACK_ORDER + [self.operating_system() + "-future"]
- port_name = port_name.replace('-wk2', '')
- self._version = self._strip_port_name_prefix(port_name)
- assert port_name in allowed_port_names, "%s is not in %s" % (port_name, allowed_port_names)
-
- def _skipped_file_search_paths(self):
- # We don't have a dedicated Skipped file for the most recent version of the port;
- # we just use the one in platform/{mac,win}
- most_recent_name = self.VERSION_FALLBACK_ORDER[-1]
- return set(filter(lambda name: name != most_recent_name, super(ApplePort, self)._skipped_file_search_paths()))
-
- # FIXME: A more sophisticated version of this function should move to WebKitPort and replace all calls to name().
- # This is also a misleading name, since 'mac-future' gets remapped to 'mac'.
- def _port_name_with_version(self):
- return self.name().replace('-future', '').replace('-wk2', '')
-
- def _generate_all_test_configurations(self):
- configurations = []
- allowed_port_names = self.VERSION_FALLBACK_ORDER + [self.operating_system() + "-future"]
- for port_name in allowed_port_names:
- for build_type in self.ALL_BUILD_TYPES:
- for architecture in self.ARCHITECTURES:
- configurations.append(TestConfiguration(version=self._strip_port_name_prefix(port_name), architecture=architecture, build_type=build_type))
- return configurations
diff --git a/Tools/Scripts/webkitpy/port/base.py b/Tools/Scripts/webkitpy/port/base.py
deleted file mode 100644
index 9ded9d193..000000000
--- a/Tools/Scripts/webkitpy/port/base.py
+++ /dev/null
@@ -1,1547 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-"""Abstract base class of Port-specific entry points for the layout tests
-test infrastructure (the Port and Driver classes)."""
-
-import cgi
-import difflib
-import errno
-import itertools
-import logging
-import os
-import operator
-import optparse
-import re
-import sys
-
-try:
- from collections import OrderedDict
-except ImportError:
- # Needed for Python < 2.7
- from webkitpy.thirdparty.ordered_dict import OrderedDict
-
-
-from webkitpy.common import find_files
-from webkitpy.common import read_checksum_from_png
-from webkitpy.common.memoized import memoized
-from webkitpy.common.system import path
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.webkit_finder import WebKitFinder
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-from webkitpy.port import config as port_config
-from webkitpy.port import driver
-from webkitpy.port import http_lock
-from webkitpy.port import image_diff
-from webkitpy.port import server_process
-from webkitpy.port.factory import PortFactory
-from webkitpy.layout_tests.servers import apache_http_server
-from webkitpy.layout_tests.servers import http_server
-from webkitpy.layout_tests.servers import websocket_server
-
-_log = logging.getLogger(__name__)
-
-
-class Port(object):
- """Abstract class for Port-specific hooks for the layout_test package."""
-
- # Subclasses override this. This should indicate the basic implementation
- # part of the port name, e.g., 'win', 'gtk'; there is probably (?) one unique value per class.
-
- # FIXME: We should probably rename this to something like 'implementation_name'.
- port_name = None
-
- # Test names resemble unix relative paths, and use '/' as a directory separator.
- TEST_PATH_SEPARATOR = '/'
-
- ALL_BUILD_TYPES = ('debug', 'release')
-
- @classmethod
- def determine_full_port_name(cls, host, options, port_name):
- """Return a fully-specified port name that can be used to construct objects."""
- # Subclasses will usually override this.
- options = options or {}
- assert port_name.startswith(cls.port_name)
- if getattr(options, 'webkit_test_runner', False) and not '-wk2' in port_name:
- return port_name + '-wk2'
- return port_name
-
- def __init__(self, host, port_name, options=None, **kwargs):
-
- # This value may be different from cls.port_name by having version modifiers
- # and other fields appended to it (for example, 'qt-arm' or 'mac-wk2').
- self._name = port_name
-
- # These are default values that should be overridden in a subclasses.
- self._version = ''
- self._architecture = 'x86'
-
- # FIXME: Ideally we'd have a package-wide way to get a
- # well-formed options object that had all of the necessary
- # options defined on it.
- self._options = options or optparse.Values()
-
- if self._name and '-wk2' in self._name:
- self._options.webkit_test_runner = True
-
- self.host = host
- self._executive = host.executive
- self._filesystem = host.filesystem
- self._webkit_finder = WebKitFinder(host.filesystem)
- self._config = port_config.Config(self._executive, self._filesystem, self.port_name)
-
- self._helper = None
- self._http_server = None
- self._websocket_server = None
- self._image_differ = None
- self._server_process_constructor = server_process.ServerProcess # overridable for testing
- self._http_lock = None # FIXME: Why does this live on the port object?
-
- # Python's Popen has a bug that causes any pipes opened to a
- # process that can't be executed to be leaked. Since this
- # code is specifically designed to tolerate exec failures
- # to gracefully handle cases where wdiff is not installed,
- # the bug results in a massive file descriptor leak. As a
- # workaround, if an exec failure is ever experienced for
- # wdiff, assume it's not available. This will leak one
- # file descriptor but that's better than leaking each time
- # wdiff would be run.
- #
- # http://mail.python.org/pipermail/python-list/
- # 2008-August/505753.html
- # http://bugs.python.org/issue3210
- self._wdiff_available = None
-
- # FIXME: prettypatch.py knows this path, why is it copied here?
- self._pretty_patch_path = self.path_from_webkit_base("Websites", "bugs.webkit.org", "PrettyPatch", "prettify.rb")
- self._pretty_patch_available = None
-
- if not hasattr(options, 'configuration') or not options.configuration:
- self.set_option_default('configuration', self.default_configuration())
- self._test_configuration = None
- self._reftest_list = {}
- self._results_directory = None
- self._root_was_set = hasattr(options, 'root') and options.root
-
- def additional_drt_flag(self):
- return []
-
- def supports_per_test_timeout(self):
- return False
-
- def default_pixel_tests(self):
- # FIXME: Disable until they are run by default on build.webkit.org.
- return False
-
- def default_timeout_ms(self):
- if self.get_option('webkit_test_runner'):
- # Add some more time to WebKitTestRunner because it needs to syncronise the state
- # with the web process and we want to detect if there is a problem with that in the driver.
- return 80 * 1000
- return 35 * 1000
-
- def driver_stop_timeout(self):
- """ Returns the amount of time in seconds to wait before killing the process in driver.stop()."""
- # We want to wait for at least 3 seconds, but if we are really slow, we want to be slow on cleanup as
- # well (for things like ASAN, Valgrind, etc.)
- return 3.0 * float(self.get_option('time_out_ms', '0')) / self.default_timeout_ms()
-
- def wdiff_available(self):
- if self._wdiff_available is None:
- self._wdiff_available = self.check_wdiff(logging=False)
- return self._wdiff_available
-
- def pretty_patch_available(self):
- if self._pretty_patch_available is None:
- self._pretty_patch_available = self.check_pretty_patch(logging=False)
- return self._pretty_patch_available
-
- def should_retry_crashes(self):
- return False
-
- def default_child_processes(self):
- """Return the number of DumpRenderTree instances to use for this port."""
- return self._executive.cpu_count()
-
- def default_max_locked_shards(self):
- """Return the number of "locked" shards to run in parallel (like the http tests)."""
- return 1
-
- def worker_startup_delay_secs(self):
- # FIXME: If we start workers up too quickly, DumpRenderTree appears
- # to thrash on something and time out its first few tests. Until
- # we can figure out what's going on, sleep a bit in between
- # workers. See https://bugs.webkit.org/show_bug.cgi?id=79147 .
- return 0.1
-
- def baseline_path(self):
- """Return the absolute path to the directory to store new baselines in for this port."""
- # FIXME: remove once all callers are calling either baseline_version_dir() or baseline_platform_dir()
- return self.baseline_version_dir()
-
- def baseline_platform_dir(self):
- """Return the absolute path to the default (version-independent) platform-specific results."""
- return self._filesystem.join(self.layout_tests_dir(), 'platform', self.port_name)
-
- def baseline_version_dir(self):
- """Return the absolute path to the platform-and-version-specific results."""
- baseline_search_paths = self.baseline_search_path()
- return baseline_search_paths[0]
-
- def baseline_search_path(self):
- return self.get_option('additional_platform_directory', []) + self._compare_baseline() + self.default_baseline_search_path()
-
- def default_baseline_search_path(self):
- """Return a list of absolute paths to directories to search under for
- baselines. The directories are searched in order."""
- search_paths = []
- if self.get_option('webkit_test_runner'):
- search_paths.append(self._wk2_port_name())
- search_paths.append(self.name())
- if self.name() != self.port_name:
- search_paths.append(self.port_name)
- return map(self._webkit_baseline_path, search_paths)
-
- @memoized
- def _compare_baseline(self):
- factory = PortFactory(self.host)
- target_port = self.get_option('compare_port')
- if target_port:
- return factory.get(target_port).default_baseline_search_path()
- return []
-
- def check_build(self, needs_http):
- """This routine is used to ensure that the build is up to date
- and all the needed binaries are present."""
- # If we're using a pre-built copy of WebKit (--root), we assume it also includes a build of DRT.
- if not self._root_was_set and self.get_option('build') and not self._build_driver():
- return False
- if not self._check_driver():
- return False
- if self.get_option('pixel_tests'):
- if not self.check_image_diff():
- return False
- if not self._check_port_build():
- return False
- return True
-
- def _check_driver(self):
- driver_path = self._path_to_driver()
- if not self._filesystem.exists(driver_path):
- _log.error("%s was not found at %s" % (self.driver_name(), driver_path))
- return False
- return True
-
- def _check_port_build(self):
- # Ports can override this method to do additional checks.
- return True
-
- def check_sys_deps(self, needs_http):
- """If the port needs to do some runtime checks to ensure that the
- tests can be run successfully, it should override this routine.
- This step can be skipped with --nocheck-sys-deps.
-
- Returns whether the system is properly configured."""
- if needs_http:
- return self.check_httpd()
- return True
-
- def check_image_diff(self, override_step=None, logging=True):
- """This routine is used to check whether image_diff binary exists."""
- image_diff_path = self._path_to_image_diff()
- if not self._filesystem.exists(image_diff_path):
- _log.error("ImageDiff was not found at %s" % image_diff_path)
- return False
- return True
-
- def check_pretty_patch(self, logging=True):
- """Checks whether we can use the PrettyPatch ruby script."""
- try:
- _ = self._executive.run_command(['ruby', '--version'])
- except OSError, e:
- if e.errno in [errno.ENOENT, errno.EACCES, errno.ECHILD]:
- if logging:
- _log.warning("Ruby is not installed; can't generate pretty patches.")
- _log.warning('')
- return False
-
- if not self._filesystem.exists(self._pretty_patch_path):
- if logging:
- _log.warning("Unable to find %s; can't generate pretty patches." % self._pretty_patch_path)
- _log.warning('')
- return False
-
- return True
-
- def check_wdiff(self, logging=True):
- if not self._path_to_wdiff():
- # Don't need to log here since this is the port choosing not to use wdiff.
- return False
-
- try:
- _ = self._executive.run_command([self._path_to_wdiff(), '--help'])
- except OSError:
- if logging:
- message = self._wdiff_missing_message()
- if message:
- for line in message.splitlines():
- _log.warning(' ' + line)
- _log.warning('')
- return False
-
- return True
-
- def _wdiff_missing_message(self):
- return 'wdiff is not installed; please install it to generate word-by-word diffs.'
-
- def check_httpd(self):
- if self._uses_apache():
- httpd_path = self._path_to_apache()
- else:
- httpd_path = self._path_to_lighttpd()
-
- try:
- server_name = self._filesystem.basename(httpd_path)
- env = self.setup_environ_for_server(server_name)
- if self._executive.run_command([httpd_path, "-v"], env=env, return_exit_code=True) != 0:
- _log.error("httpd seems broken. Cannot run http tests.")
- return False
- return True
- except OSError:
- _log.error("No httpd found. Cannot run http tests.")
- return False
-
- def do_text_results_differ(self, expected_text, actual_text):
- return expected_text != actual_text
-
- def do_audio_results_differ(self, expected_audio, actual_audio):
- return expected_audio != actual_audio
-
- def diff_image(self, expected_contents, actual_contents, tolerance=None):
- """Compare two images and return a tuple of an image diff, a percentage difference (0-100), and an error string.
-
- |tolerance| should be a percentage value (0.0 - 100.0).
- If it is omitted, the port default tolerance value is used.
-
- If an error occurs (like ImageDiff isn't found, or crashes, we log an error and return True (for a diff).
- """
- if not actual_contents and not expected_contents:
- return (None, 0, None)
- if not actual_contents or not expected_contents:
- return (True, 0, None)
- if not self._image_differ:
- self._image_differ = image_diff.ImageDiffer(self)
- self.set_option_default('tolerance', 0.1)
- if tolerance is None:
- tolerance = self.get_option('tolerance')
- return self._image_differ.diff_image(expected_contents, actual_contents, tolerance)
-
- def diff_text(self, expected_text, actual_text, expected_filename, actual_filename):
- """Returns a string containing the diff of the two text strings
- in 'unified diff' format."""
-
- # The filenames show up in the diff output, make sure they're
- # raw bytes and not unicode, so that they don't trigger join()
- # trying to decode the input.
- def to_raw_bytes(string_value):
- if isinstance(string_value, unicode):
- return string_value.encode('utf-8')
- return string_value
- expected_filename = to_raw_bytes(expected_filename)
- actual_filename = to_raw_bytes(actual_filename)
- diff = difflib.unified_diff(expected_text.splitlines(True),
- actual_text.splitlines(True),
- expected_filename,
- actual_filename)
- return ''.join(diff)
-
- def check_for_leaks(self, process_name, process_pid):
- # Subclasses should check for leaks in the running process
- # and print any necessary warnings if leaks are found.
- # FIXME: We should consider moving much of this logic into
- # Executive and make it platform-specific instead of port-specific.
- pass
-
- def print_leaks_summary(self):
- # Subclasses can override this to print a summary of leaks found
- # while running the layout tests.
- pass
-
- def driver_name(self):
- if self.get_option('driver_name'):
- return self.get_option('driver_name')
- if self.get_option('webkit_test_runner'):
- return 'WebKitTestRunner'
- return 'DumpRenderTree'
-
- def expected_baselines_by_extension(self, test_name):
- """Returns a dict mapping baseline suffix to relative path for each baseline in
- a test. For reftests, it returns ".==" or ".!=" instead of the suffix."""
- # FIXME: The name similarity between this and expected_baselines() below, is unfortunate.
- # We should probably rename them both.
- baseline_dict = {}
- reference_files = self.reference_files(test_name)
- if reference_files:
- # FIXME: How should this handle more than one type of reftest?
- baseline_dict['.' + reference_files[0][0]] = self.relative_test_filename(reference_files[0][1])
-
- for extension in self.baseline_extensions():
- path = self.expected_filename(test_name, extension, return_default=False)
- baseline_dict[extension] = self.relative_test_filename(path) if path else path
-
- return baseline_dict
-
- def baseline_extensions(self):
- """Returns a tuple of all of the non-reftest baseline extensions we use. The extensions include the leading '.'."""
- return ('.wav', '.webarchive', '.txt', '.png')
-
- def expected_baselines(self, test_name, suffix, all_baselines=False):
- """Given a test name, finds where the baseline results are located.
-
- Args:
- test_name: name of test file (usually a relative path under LayoutTests/)
- suffix: file suffix of the expected results, including dot; e.g.
- '.txt' or '.png'. This should not be None, but may be an empty
- string.
- all_baselines: If True, return an ordered list of all baseline paths
- for the given platform. If False, return only the first one.
- Returns
- a list of ( platform_dir, results_filename ), where
- platform_dir - abs path to the top of the results tree (or test
- tree)
- results_filename - relative path from top of tree to the results
- file
- (port.join() of the two gives you the full path to the file,
- unless None was returned.)
- Return values will be in the format appropriate for the current
- platform (e.g., "\\" for path separators on Windows). If the results
- file is not found, then None will be returned for the directory,
- but the expected relative pathname will still be returned.
-
- This routine is generic but lives here since it is used in
- conjunction with the other baseline and filename routines that are
- platform specific.
- """
- baseline_filename = self._filesystem.splitext(test_name)[0] + '-expected' + suffix
- baseline_search_path = self.baseline_search_path()
-
- baselines = []
- for platform_dir in baseline_search_path:
- if self._filesystem.exists(self._filesystem.join(platform_dir, baseline_filename)):
- baselines.append((platform_dir, baseline_filename))
-
- if not all_baselines and baselines:
- return baselines
-
- # If it wasn't found in a platform directory, return the expected
- # result in the test directory, even if no such file actually exists.
- platform_dir = self.layout_tests_dir()
- if self._filesystem.exists(self._filesystem.join(platform_dir, baseline_filename)):
- baselines.append((platform_dir, baseline_filename))
-
- if baselines:
- return baselines
-
- return [(None, baseline_filename)]
-
- def expected_filename(self, test_name, suffix, return_default=True):
- """Given a test name, returns an absolute path to its expected results.
-
- If no expected results are found in any of the searched directories,
- the directory in which the test itself is located will be returned.
- The return value is in the format appropriate for the platform
- (e.g., "\\" for path separators on windows).
-
- Args:
- test_name: name of test file (usually a relative path under LayoutTests/)
- suffix: file suffix of the expected results, including dot; e.g. '.txt'
- or '.png'. This should not be None, but may be an empty string.
- platform: the most-specific directory name to use to build the
- search list of directories; e.g. 'mountainlion-wk2'
- return_default: if True, returns the path to the generic expectation if nothing
- else is found; if False, returns None.
-
- This routine is generic but is implemented here to live alongside
- the other baseline and filename manipulation routines.
- """
- # FIXME: The [0] here is very mysterious, as is the destructured return.
- platform_dir, baseline_filename = self.expected_baselines(test_name, suffix)[0]
- if platform_dir:
- return self._filesystem.join(platform_dir, baseline_filename)
-
- actual_test_name = self.lookup_virtual_test_base(test_name)
- if actual_test_name:
- return self.expected_filename(actual_test_name, suffix)
-
- if return_default:
- return self._filesystem.join(self.layout_tests_dir(), baseline_filename)
- return None
-
- def expected_checksum(self, test_name):
- """Returns the checksum of the image we expect the test to produce, or None if it is a text-only test."""
- png_path = self.expected_filename(test_name, '.png')
-
- if self._filesystem.exists(png_path):
- with self._filesystem.open_binary_file_for_reading(png_path) as filehandle:
- return read_checksum_from_png.read_checksum(filehandle)
-
- return None
-
- def expected_image(self, test_name):
- """Returns the image we expect the test to produce."""
- baseline_path = self.expected_filename(test_name, '.png')
- if not self._filesystem.exists(baseline_path):
- return None
- return self._filesystem.read_binary_file(baseline_path)
-
- def expected_audio(self, test_name):
- baseline_path = self.expected_filename(test_name, '.wav')
- if not self._filesystem.exists(baseline_path):
- return None
- return self._filesystem.read_binary_file(baseline_path)
-
- def expected_text(self, test_name):
- """Returns the text output we expect the test to produce, or None
- if we don't expect there to be any text output.
- End-of-line characters are normalized to '\n'."""
- # FIXME: DRT output is actually utf-8, but since we don't decode the
- # output from DRT (instead treating it as a binary string), we read the
- # baselines as a binary string, too.
- baseline_path = self.expected_filename(test_name, '.txt')
- if not self._filesystem.exists(baseline_path):
- baseline_path = self.expected_filename(test_name, '.webarchive')
- if not self._filesystem.exists(baseline_path):
- return None
- text = self._filesystem.read_binary_file(baseline_path)
- return text.replace("\r\n", "\n")
-
- def _get_reftest_list(self, test_name):
- dirname = self._filesystem.join(self.layout_tests_dir(), self._filesystem.dirname(test_name))
- if dirname not in self._reftest_list:
- self._reftest_list[dirname] = Port._parse_reftest_list(self._filesystem, dirname)
- return self._reftest_list[dirname]
-
- @staticmethod
- def _parse_reftest_list(filesystem, test_dirpath):
- reftest_list_path = filesystem.join(test_dirpath, 'reftest.list')
- if not filesystem.isfile(reftest_list_path):
- return None
- reftest_list_file = filesystem.read_text_file(reftest_list_path)
-
- parsed_list = {}
- for line in reftest_list_file.split('\n'):
- line = re.sub('#.+$', '', line)
- split_line = line.split()
- if len(split_line) < 3:
- continue
- expectation_type, test_file, ref_file = split_line
- parsed_list.setdefault(filesystem.join(test_dirpath, test_file), []).append((expectation_type, filesystem.join(test_dirpath, ref_file)))
- return parsed_list
-
- def reference_files(self, test_name):
- """Return a list of expectation (== or !=) and filename pairs"""
-
- reftest_list = self._get_reftest_list(test_name)
- if not reftest_list:
- reftest_list = []
- for expectation, prefix in (('==', ''), ('!=', '-mismatch')):
- for extention in Port._supported_reference_extensions:
- path = self.expected_filename(test_name, prefix + extention)
- if self._filesystem.exists(path):
- reftest_list.append((expectation, path))
- return reftest_list
-
- return reftest_list.get(self._filesystem.join(self.layout_tests_dir(), test_name), []) # pylint: disable=E1103
-
- def tests(self, paths):
- """Return the list of tests found. Both generic and platform-specific tests matching paths should be returned."""
- expanded_paths = self._expanded_paths(paths)
- tests = self._real_tests(expanded_paths)
- tests.extend(self._virtual_tests(expanded_paths, self.populated_virtual_test_suites()))
- return tests
-
- def _expanded_paths(self, paths):
- expanded_paths = []
- fs = self._filesystem
- all_platform_dirs = [path for path in fs.glob(fs.join(self.layout_tests_dir(), 'platform', '*')) if fs.isdir(path)]
- for path in paths:
- expanded_paths.append(path)
- if self.test_isdir(path) and not path.startswith('platform'):
- for platform_dir in all_platform_dirs:
- if fs.isdir(fs.join(platform_dir, path)) and platform_dir in self.baseline_search_path():
- expanded_paths.append(self.relative_test_filename(fs.join(platform_dir, path)))
-
- return expanded_paths
-
- def _real_tests(self, paths):
- # When collecting test cases, skip these directories
- skipped_directories = set(['.svn', '_svn', 'resources', 'script-tests', 'reference', 'reftest'])
- files = find_files.find(self._filesystem, self.layout_tests_dir(), paths, skipped_directories, Port._is_test_file, self.test_key)
- return [self.relative_test_filename(f) for f in files]
-
- # When collecting test cases, we include any file with these extensions.
- _supported_test_extensions = set(['.html', '.shtml', '.xml', '.xhtml', '.pl', '.htm', '.php', '.svg', '.mht', '.xht'])
- _supported_reference_extensions = set(['.html', '.xml', '.xhtml', '.htm', '.svg', '.xht'])
-
- @staticmethod
- # If any changes are made here be sure to update the isUsedInReftest method in old-run-webkit-tests as well.
- def is_reference_html_file(filesystem, dirname, filename):
- if filename.startswith('ref-') or filename.startswith('notref-'):
- return True
- filename_wihout_ext, ext = filesystem.splitext(filename)
- if ext not in Port._supported_reference_extensions:
- return False
- for suffix in ['-expected', '-expected-mismatch', '-ref', '-notref']:
- if filename_wihout_ext.endswith(suffix):
- return True
- return False
-
- @staticmethod
- def _has_supported_extension(filesystem, filename):
- """Return true if filename is one of the file extensions we want to run a test on."""
- extension = filesystem.splitext(filename)[1]
- return extension in Port._supported_test_extensions
-
- @staticmethod
- def _is_test_file(filesystem, dirname, filename):
- return Port._has_supported_extension(filesystem, filename) and not Port.is_reference_html_file(filesystem, dirname, filename)
-
- def test_key(self, test_name):
- """Turns a test name into a list with two sublists, the natural key of the
- dirname, and the natural key of the basename.
-
- This can be used when sorting paths so that files in a directory.
- directory are kept together rather than being mixed in with files in
- subdirectories."""
- dirname, basename = self.split_test(test_name)
- return (self._natural_sort_key(dirname + self.TEST_PATH_SEPARATOR), self._natural_sort_key(basename))
-
- def _natural_sort_key(self, string_to_split):
- """ Turns a string into a list of string and number chunks, i.e. "z23a" -> ["z", 23, "a"]
-
- This can be used to implement "natural sort" order. See:
- http://www.codinghorror.com/blog/2007/12/sorting-for-humans-natural-sort-order.html
- http://nedbatchelder.com/blog/200712.html#e20071211T054956
- """
- def tryint(val):
- try:
- return int(val)
- except ValueError:
- return val
-
- return [tryint(chunk) for chunk in re.split('(\d+)', string_to_split)]
-
- def test_dirs(self):
- """Returns the list of top-level test directories."""
- layout_tests_dir = self.layout_tests_dir()
- return filter(lambda x: self._filesystem.isdir(self._filesystem.join(layout_tests_dir, x)),
- self._filesystem.listdir(layout_tests_dir))
-
- @memoized
- def test_isfile(self, test_name):
- """Return True if the test name refers to a directory of tests."""
- # Used by test_expectations.py to apply rules to whole directories.
- if self._filesystem.isfile(self.abspath_for_test(test_name)):
- return True
- base = self.lookup_virtual_test_base(test_name)
- return base and self._filesystem.isfile(self.abspath_for_test(base))
-
- @memoized
- def test_isdir(self, test_name):
- """Return True if the test name refers to a directory of tests."""
- # Used by test_expectations.py to apply rules to whole directories.
- if self._filesystem.isdir(self.abspath_for_test(test_name)):
- return True
- base = self.lookup_virtual_test_base(test_name)
- return base and self._filesystem.isdir(self.abspath_for_test(base))
-
- @memoized
- def test_exists(self, test_name):
- """Return True if the test name refers to an existing test or baseline."""
- # Used by test_expectations.py to determine if an entry refers to a
- # valid test and by printing.py to determine if baselines exist.
- return self.test_isfile(test_name) or self.test_isdir(test_name)
-
- def split_test(self, test_name):
- """Splits a test name into the 'directory' part and the 'basename' part."""
- index = test_name.rfind(self.TEST_PATH_SEPARATOR)
- if index < 1:
- return ('', test_name)
- return (test_name[0:index], test_name[index:])
-
- def normalize_test_name(self, test_name):
- """Returns a normalized version of the test name or test directory."""
- if test_name.endswith('/'):
- return test_name
- if self.test_isdir(test_name):
- return test_name + '/'
- return test_name
-
- def driver_cmd_line(self):
- """Prints the DRT command line that will be used."""
- driver = self.create_driver(0)
- return driver.cmd_line(self.get_option('pixel_tests'), [])
-
- def update_baseline(self, baseline_path, data):
- """Updates the baseline for a test.
-
- Args:
- baseline_path: the actual path to use for baseline, not the path to
- the test. This function is used to update either generic or
- platform-specific baselines, but we can't infer which here.
- data: contents of the baseline.
- """
- self._filesystem.write_binary_file(baseline_path, data)
-
- # FIXME: update callers to create a finder and call it instead of these next five routines (which should be protected).
- def webkit_base(self):
- return self._webkit_finder.webkit_base()
-
- def path_from_webkit_base(self, *comps):
- return self._webkit_finder.path_from_webkit_base(*comps)
-
- def path_to_script(self, script_name):
- return self._webkit_finder.path_to_script(script_name)
-
- def layout_tests_dir(self):
- return self._webkit_finder.layout_tests_dir()
-
- def perf_tests_dir(self):
- return self._webkit_finder.perf_tests_dir()
-
- def skipped_layout_tests(self, test_list):
- """Returns tests skipped outside of the TestExpectations files."""
- return set(self._tests_for_other_platforms()).union(self._skipped_tests_for_unsupported_features(test_list))
-
- def _tests_from_skipped_file_contents(self, skipped_file_contents):
- tests_to_skip = []
- for line in skipped_file_contents.split('\n'):
- line = line.strip()
- line = line.rstrip('/') # Best to normalize directory names to not include the trailing slash.
- if line.startswith('#') or not len(line):
- continue
- tests_to_skip.append(line)
- return tests_to_skip
-
- def _expectations_from_skipped_files(self, skipped_file_paths):
- tests_to_skip = []
- for search_path in skipped_file_paths:
- filename = self._filesystem.join(self._webkit_baseline_path(search_path), "Skipped")
- if not self._filesystem.exists(filename):
- _log.debug("Skipped does not exist: %s" % filename)
- continue
- _log.debug("Using Skipped file: %s" % filename)
- skipped_file_contents = self._filesystem.read_text_file(filename)
- tests_to_skip.extend(self._tests_from_skipped_file_contents(skipped_file_contents))
- return tests_to_skip
-
- @memoized
- def skipped_perf_tests(self):
- return self._expectations_from_skipped_files([self.perf_tests_dir()])
-
- def skips_perf_test(self, test_name):
- for test_or_category in self.skipped_perf_tests():
- if test_or_category == test_name:
- return True
- category = self._filesystem.join(self.perf_tests_dir(), test_or_category)
- if self._filesystem.isdir(category) and test_name.startswith(test_or_category):
- return True
- return False
-
- def name(self):
- """Returns a name that uniquely identifies this particular type of port
- (e.g., "mac-snowleopard" or "chromium-linux-x86_x64" and can be passed
- to factory.get() to instantiate the port."""
- return self._name
-
- def operating_system(self):
- # Subclasses should override this default implementation.
- return 'mac'
-
- def version(self):
- """Returns a string indicating the version of a given platform, e.g.
- 'leopard' or 'xp'.
-
- This is used to help identify the exact port when parsing test
- expectations, determining search paths, and logging information."""
- return self._version
-
- def architecture(self):
- return self._architecture
-
- def get_option(self, name, default_value=None):
- return getattr(self._options, name, default_value)
-
- def set_option_default(self, name, default_value):
- return self._options.ensure_value(name, default_value)
-
- @memoized
- def path_to_generic_test_expectations_file(self):
- return self._filesystem.join(self.layout_tests_dir(), 'TestExpectations')
-
- @memoized
- def path_to_test_expectations_file(self):
- """Update the test expectations to the passed-in string.
-
- This is used by the rebaselining tool. Raises NotImplementedError
- if the port does not use expectations files."""
-
- # FIXME: We need to remove this when we make rebaselining work with multiple files and just generalize expectations_files().
-
- # test_expectations are always in mac/ not mac-leopard/ by convention, hence we use port_name instead of name().
- return self._filesystem.join(self._webkit_baseline_path(self.port_name), 'TestExpectations')
-
- def relative_test_filename(self, filename):
- """Returns a test_name a relative unix-style path for a filename under the LayoutTests
- directory. Ports may legitimately return abspaths here if no relpath makes sense."""
- # Ports that run on windows need to override this method to deal with
- # filenames with backslashes in them.
- if filename.startswith(self.layout_tests_dir()):
- return self.host.filesystem.relpath(filename, self.layout_tests_dir())
- else:
- return self.host.filesystem.abspath(filename)
-
- @memoized
- def abspath_for_test(self, test_name):
- """Returns the full path to the file for a given test name. This is the
- inverse of relative_test_filename()."""
- return self._filesystem.join(self.layout_tests_dir(), test_name)
-
- def results_directory(self):
- """Absolute path to the place to store the test results (uses --results-directory)."""
- if not self._results_directory:
- option_val = self.get_option('results_directory') or self.default_results_directory()
- self._results_directory = self._filesystem.abspath(option_val)
- return self._results_directory
-
- def perf_results_directory(self):
- return self._build_path()
-
- def default_results_directory(self):
- """Absolute path to the default place to store the test results."""
- # Results are store relative to the built products to make it easy
- # to have multiple copies of webkit checked out and built.
- return self._build_path('layout-test-results')
-
- def setup_test_run(self):
- """Perform port-specific work at the beginning of a test run."""
- pass
-
- def clean_up_test_run(self):
- """Perform port-specific work at the end of a test run."""
- if self._image_differ:
- self._image_differ.stop()
- self._image_differ = None
-
- # FIXME: os.environ access should be moved to onto a common/system class to be more easily mockable.
- def _value_or_default_from_environ(self, name, default=None):
- if name in os.environ:
- return os.environ[name]
- return default
-
- def _copy_value_from_environ_if_set(self, clean_env, name):
- if name in os.environ:
- clean_env[name] = os.environ[name]
-
- def setup_environ_for_server(self, server_name=None):
- # We intentionally copy only a subset of os.environ when
- # launching subprocesses to ensure consistent test results.
- clean_env = {}
- variables_to_copy = [
- # For Linux:
- 'XAUTHORITY',
- 'HOME',
- 'LANG',
- 'LD_LIBRARY_PATH',
- 'DBUS_SESSION_BUS_ADDRESS',
- 'XDG_DATA_DIRS',
-
- # Darwin:
- 'DYLD_LIBRARY_PATH',
- 'HOME',
-
- # CYGWIN:
- 'HOMEDRIVE',
- 'HOMEPATH',
- '_NT_SYMBOL_PATH',
-
- # Windows:
- 'PATH',
-
- # Most ports (?):
- 'WEBKIT_TESTFONTS',
- 'WEBKIT_OUTPUTDIR',
-
- # Chromium:
- 'CHROME_DEVEL_SANDBOX',
- ]
- for variable in variables_to_copy:
- self._copy_value_from_environ_if_set(clean_env, variable)
-
- # For Linux:
- clean_env['DISPLAY'] = self._value_or_default_from_environ('DISPLAY', ':1')
-
- for string_variable in self.get_option('additional_env_var', []):
- [name, value] = string_variable.split('=', 1)
- clean_env[name] = value
-
- return clean_env
-
- def show_results_html_file(self, results_filename):
- """This routine should display the HTML file pointed at by
- results_filename in a users' browser."""
- return self.host.user.open_url(path.abspath_to_uri(self.host.platform, results_filename))
-
- def create_driver(self, worker_number, no_timeout=False):
- """Return a newly created Driver subclass for starting/stopping the test driver."""
- return driver.DriverProxy(self, worker_number, self._driver_class(), pixel_tests=self.get_option('pixel_tests'), no_timeout=no_timeout)
-
- def start_helper(self):
- """If a port needs to reconfigure graphics settings or do other
- things to ensure a known test configuration, it should override this
- method."""
- pass
-
- def start_http_server(self, additional_dirs=None, number_of_servers=None):
- """Start a web server. Raise an error if it can't start or is already running.
-
- Ports can stub this out if they don't need a web server to be running."""
- assert not self._http_server, 'Already running an http server.'
-
- if self._uses_apache():
- server = apache_http_server.LayoutTestApacheHttpd(self, self.results_directory(), additional_dirs=additional_dirs, number_of_servers=number_of_servers)
- else:
- server = http_server.Lighttpd(self, self.results_directory(), additional_dirs=additional_dirs, number_of_servers=number_of_servers)
-
- server.start()
- self._http_server = server
-
- def start_websocket_server(self):
- """Start a web server. Raise an error if it can't start or is already running.
-
- Ports can stub this out if they don't need a websocket server to be running."""
- assert not self._websocket_server, 'Already running a websocket server.'
-
- server = websocket_server.PyWebSocket(self, self.results_directory())
- server.start()
- self._websocket_server = server
-
- def http_server_supports_ipv6(self):
- # Cygwin is the only platform to still use Apache 1.3, which only supports IPV4.
- # Once it moves to Apache 2, we can drop this method altogether.
- if self.host.platform.is_cygwin():
- return False
- return True
-
- def acquire_http_lock(self):
- self._http_lock = http_lock.HttpLock(None, filesystem=self._filesystem, executive=self._executive)
- self._http_lock.wait_for_httpd_lock()
-
- def stop_helper(self):
- """Shut down the test helper if it is running. Do nothing if
- it isn't, or it isn't available. If a port overrides start_helper()
- it must override this routine as well."""
- pass
-
- def stop_http_server(self):
- """Shut down the http server if it is running. Do nothing if it isn't."""
- if self._http_server:
- self._http_server.stop()
- self._http_server = None
-
- def stop_websocket_server(self):
- """Shut down the websocket server if it is running. Do nothing if it isn't."""
- if self._websocket_server:
- self._websocket_server.stop()
- self._websocket_server = None
-
- def release_http_lock(self):
- if self._http_lock:
- self._http_lock.cleanup_http_lock()
-
- def exit_code_from_summarized_results(self, unexpected_results):
- """Given summarized results, compute the exit code to be returned by new-run-webkit-tests.
- Bots turn red when this function returns a non-zero value. By default, return the number of regressions
- to avoid turning bots red by flaky failures, unexpected passes, and missing results"""
- # Don't turn bots red for flaky failures, unexpected passes, and missing results.
- return unexpected_results['num_regressions']
-
- #
- # TEST EXPECTATION-RELATED METHODS
- #
-
- def test_configuration(self):
- """Returns the current TestConfiguration for the port."""
- if not self._test_configuration:
- self._test_configuration = TestConfiguration(self._version, self._architecture, self._options.configuration.lower())
- return self._test_configuration
-
- # FIXME: Belongs on a Platform object.
- @memoized
- def all_test_configurations(self):
- """Returns a list of TestConfiguration instances, representing all available
- test configurations for this port."""
- return self._generate_all_test_configurations()
-
- # FIXME: Belongs on a Platform object.
- def configuration_specifier_macros(self):
- """Ports may provide a way to abbreviate configuration specifiers to conveniently
- refer to them as one term or alias specific values to more generic ones. For example:
-
- (xp, vista, win7) -> win # Abbreviate all Windows versions into one namesake.
- (lucid) -> linux # Change specific name of the Linux distro to a more generic term.
-
- Returns a dictionary, each key representing a macro term ('win', for example),
- and value being a list of valid configuration specifiers (such as ['xp', 'vista', 'win7'])."""
- return {}
-
- def all_baseline_variants(self):
- """Returns a list of platform names sufficient to cover all the baselines.
-
- The list should be sorted so that a later platform will reuse
- an earlier platform's baselines if they are the same (e.g.,
- 'snowleopard' should precede 'leopard')."""
- raise NotImplementedError
-
- def uses_test_expectations_file(self):
- # This is different from checking test_expectations() is None, because
- # some ports have Skipped files which are returned as part of test_expectations().
- return self._filesystem.exists(self.path_to_test_expectations_file())
-
- def warn_if_bug_missing_in_test_expectations(self):
- return False
-
- def expectations_dict(self):
- """Returns an OrderedDict of name -> expectations strings.
- The names are expected to be (but not required to be) paths in the filesystem.
- If the name is a path, the file can be considered updatable for things like rebaselining,
- so don't use names that are paths if they're not paths.
- Generally speaking the ordering should be files in the filesystem in cascade order
- (TestExpectations followed by Skipped, if the port honors both formats),
- then any built-in expectations (e.g., from compile-time exclusions), then --additional-expectations options."""
- # FIXME: rename this to test_expectations() once all the callers are updated to know about the ordered dict.
- expectations = OrderedDict()
-
- for path in self.expectations_files():
- if self._filesystem.exists(path):
- expectations[path] = self._filesystem.read_text_file(path)
-
- for path in self.get_option('additional_expectations', []):
- expanded_path = self._filesystem.expanduser(path)
- if self._filesystem.exists(expanded_path):
- _log.debug("reading additional_expectations from path '%s'" % path)
- expectations[path] = self._filesystem.read_text_file(expanded_path)
- else:
- _log.warning("additional_expectations path '%s' does not exist" % path)
- return expectations
-
- def _port_specific_expectations_files(self):
- # Unlike baseline_search_path, we only want to search [WK2-PORT, PORT-VERSION, PORT] and any directories
- # included via --additional-platform-directory, not the full casade.
- search_paths = [self.port_name]
-
- non_wk2_name = self.name().replace('-wk2', '')
- if non_wk2_name != self.port_name:
- search_paths.append(non_wk2_name)
-
- if self.get_option('webkit_test_runner'):
- # Because nearly all of the skipped tests for WebKit 2 are due to cross-platform
- # issues, all wk2 ports share a skipped list under platform/wk2.
- search_paths.extend(["wk2", self._wk2_port_name()])
-
- search_paths.extend(self.get_option("additional_platform_directory", []))
-
- return [self._filesystem.join(self._webkit_baseline_path(d), 'TestExpectations') for d in search_paths]
-
- def expectations_files(self):
- return [self.path_to_generic_test_expectations_file()] + self._port_specific_expectations_files()
-
- def repository_paths(self):
- """Returns a list of (repository_name, repository_path) tuples of its depending code base.
- By default it returns a list that only contains a ('WebKit', <webkitRepositoryPath>) tuple."""
-
- # We use LayoutTest directory here because webkit_base isn't a part of WebKit repository in Chromium port
- # where turnk isn't checked out as a whole.
- return [('WebKit', self.layout_tests_dir())]
-
- _WDIFF_DEL = '##WDIFF_DEL##'
- _WDIFF_ADD = '##WDIFF_ADD##'
- _WDIFF_END = '##WDIFF_END##'
-
- def _format_wdiff_output_as_html(self, wdiff):
- wdiff = cgi.escape(wdiff)
- wdiff = wdiff.replace(self._WDIFF_DEL, "<span class=del>")
- wdiff = wdiff.replace(self._WDIFF_ADD, "<span class=add>")
- wdiff = wdiff.replace(self._WDIFF_END, "</span>")
- html = "<head><style>.del { background: #faa; } "
- html += ".add { background: #afa; }</style></head>"
- html += "<pre>%s</pre>" % wdiff
- return html
-
- def _wdiff_command(self, actual_filename, expected_filename):
- executable = self._path_to_wdiff()
- return [executable,
- "--start-delete=%s" % self._WDIFF_DEL,
- "--end-delete=%s" % self._WDIFF_END,
- "--start-insert=%s" % self._WDIFF_ADD,
- "--end-insert=%s" % self._WDIFF_END,
- actual_filename,
- expected_filename]
-
- @staticmethod
- def _handle_wdiff_error(script_error):
- # Exit 1 means the files differed, any other exit code is an error.
- if script_error.exit_code != 1:
- raise script_error
-
- def _run_wdiff(self, actual_filename, expected_filename):
- """Runs wdiff and may throw exceptions.
- This is mostly a hook for unit testing."""
- # Diffs are treated as binary as they may include multiple files
- # with conflicting encodings. Thus we do not decode the output.
- command = self._wdiff_command(actual_filename, expected_filename)
- wdiff = self._executive.run_command(command, decode_output=False,
- error_handler=self._handle_wdiff_error)
- return self._format_wdiff_output_as_html(wdiff)
-
- def wdiff_text(self, actual_filename, expected_filename):
- """Returns a string of HTML indicating the word-level diff of the
- contents of the two filenames. Returns an empty string if word-level
- diffing isn't available."""
- if not self.wdiff_available():
- return ""
- try:
- # It's possible to raise a ScriptError we pass wdiff invalid paths.
- return self._run_wdiff(actual_filename, expected_filename)
- except OSError, e:
- if e.errno in [errno.ENOENT, errno.EACCES, errno.ECHILD]:
- # Silently ignore cases where wdiff is missing.
- self._wdiff_available = False
- return ""
- raise
-
- # This is a class variable so we can test error output easily.
- _pretty_patch_error_html = "Failed to run PrettyPatch, see error log."
-
- def pretty_patch_text(self, diff_path):
- if self._pretty_patch_available is None:
- self._pretty_patch_available = self.check_pretty_patch(logging=False)
- if not self._pretty_patch_available:
- return self._pretty_patch_error_html
- command = ("ruby", "-I", self._filesystem.dirname(self._pretty_patch_path),
- self._pretty_patch_path, diff_path)
- try:
- # Diffs are treated as binary (we pass decode_output=False) as they
- # may contain multiple files of conflicting encodings.
- return self._executive.run_command(command, decode_output=False)
- except OSError, e:
- # If the system is missing ruby log the error and stop trying.
- self._pretty_patch_available = False
- _log.error("Failed to run PrettyPatch (%s): %s" % (command, e))
- return self._pretty_patch_error_html
- except ScriptError, e:
- # If ruby failed to run for some reason, log the command
- # output and stop trying.
- self._pretty_patch_available = False
- _log.error("Failed to run PrettyPatch (%s):\n%s" % (command, e.message_with_output()))
- return self._pretty_patch_error_html
-
- def default_configuration(self):
- return self._config.default_configuration()
-
- #
- # PROTECTED ROUTINES
- #
- # The routines below should only be called by routines in this class
- # or any of its subclasses.
- #
-
- def _uses_apache(self):
- return True
-
- # FIXME: This does not belong on the port object.
- @memoized
- def _path_to_apache(self):
- """Returns the full path to the apache binary.
-
- This is needed only by ports that use the apache_http_server module."""
- # The Apache binary path can vary depending on OS and distribution
- # See http://wiki.apache.org/httpd/DistrosDefaultLayout
- for path in ["/usr/sbin/httpd", "/usr/sbin/apache2"]:
- if self._filesystem.exists(path):
- return path
- _log.error("Could not find apache. Not installed or unknown path.")
- return None
-
- # FIXME: This belongs on some platform abstraction instead of Port.
- def _is_redhat_based(self):
- return self._filesystem.exists('/etc/redhat-release')
-
- def _is_debian_based(self):
- return self._filesystem.exists('/etc/debian_version')
-
- def _is_arch_based(self):
- return self._filesystem.exists('/etc/arch-release')
-
- def _apache_version(self):
- config = self._executive.run_command([self._path_to_apache(), '-v'])
- return re.sub(r'(?:.|\n)*Server version: Apache/(\d+\.\d+)(?:.|\n)*', r'\1', config)
-
- # We pass sys_platform into this method to make it easy to unit test.
- def _apache_config_file_name_for_platform(self, sys_platform):
- if sys_platform == 'cygwin':
- return 'cygwin-httpd.conf' # CYGWIN is the only platform to still use Apache 1.3.
- if sys_platform.startswith('linux'):
- if self._is_redhat_based():
- return 'fedora-httpd-' + self._apache_version() + '.conf'
- if self._is_debian_based():
- return 'debian-httpd-' + self._apache_version() + '.conf'
- if self._is_arch_based():
- return 'archlinux-httpd.conf'
- # All platforms use apache2 except for CYGWIN (and Mac OS X Tiger and prior, which we no longer support).
- return "apache2-httpd.conf"
-
- def _path_to_apache_config_file(self):
- """Returns the full path to the apache configuration file.
-
- If the WEBKIT_HTTP_SERVER_CONF_PATH environment variable is set, its
- contents will be used instead.
-
- This is needed only by ports that use the apache_http_server module."""
- config_file_from_env = os.environ.get('WEBKIT_HTTP_SERVER_CONF_PATH')
- if config_file_from_env:
- if not self._filesystem.exists(config_file_from_env):
- raise IOError('%s was not found on the system' % config_file_from_env)
- return config_file_from_env
-
- config_file_name = self._apache_config_file_name_for_platform(sys.platform)
- return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', config_file_name)
-
- def _build_path(self, *comps):
- root_directory = self.get_option('root')
- if not root_directory:
- build_directory = self.get_option('build_directory')
- if build_directory:
- root_directory = self._filesystem.join(build_directory, self.get_option('configuration'))
- else:
- root_directory = self._config.build_directory(self.get_option('configuration'))
- # Set --root so that we can pass this to subprocesses and avoid making the
- # slow call to config.build_directory() N times in each worker.
- # FIXME: This is like @memoized, but more annoying and fragile; there should be another
- # way to propagate values without mutating the options list.
- self.set_option_default('root', root_directory)
- return self._filesystem.join(self._filesystem.abspath(root_directory), *comps)
-
- def _path_to_driver(self, configuration=None):
- """Returns the full path to the test driver (DumpRenderTree)."""
- return self._build_path(self.driver_name())
-
- def _driver_tempdir(self):
- return self._filesystem.mkdtemp(prefix='%s-' % self.driver_name())
-
- def _driver_tempdir_for_environment(self):
- return self._driver_tempdir()
-
- def _path_to_webcore_library(self):
- """Returns the full path to a built copy of WebCore."""
- return None
-
- def _path_to_helper(self):
- """Returns the full path to the layout_test_helper binary, which
- is used to help configure the system for the test run, or None
- if no helper is needed.
-
- This is likely only used by start/stop_helper()."""
- return None
-
- def _path_to_image_diff(self):
- """Returns the full path to the image_diff binary, or None if it is not available.
-
- This is likely used only by diff_image()"""
- return self._build_path('ImageDiff')
-
- def _path_to_lighttpd(self):
- """Returns the path to the LigHTTPd binary.
-
- This is needed only by ports that use the http_server.py module."""
- raise NotImplementedError('Port._path_to_lighttpd')
-
- def _path_to_lighttpd_modules(self):
- """Returns the path to the LigHTTPd modules directory.
-
- This is needed only by ports that use the http_server.py module."""
- raise NotImplementedError('Port._path_to_lighttpd_modules')
-
- def _path_to_lighttpd_php(self):
- """Returns the path to the LigHTTPd PHP executable.
-
- This is needed only by ports that use the http_server.py module."""
- raise NotImplementedError('Port._path_to_lighttpd_php')
-
- @memoized
- def _path_to_wdiff(self):
- """Returns the full path to the wdiff binary, or None if it is not available.
-
- This is likely used only by wdiff_text()"""
- for path in ("/usr/bin/wdiff", "/usr/bin/dwdiff"):
- if self._filesystem.exists(path):
- return path
- return None
-
- def _webkit_baseline_path(self, platform):
- """Return the full path to the top of the baseline tree for a
- given platform."""
- return self._filesystem.join(self.layout_tests_dir(), 'platform', platform)
-
- # FIXME: Belongs on a Platform object.
- def _generate_all_test_configurations(self):
- """Generates a list of TestConfiguration instances, representing configurations
- for a platform across all OSes, architectures, build and graphics types."""
- raise NotImplementedError('Port._generate_test_configurations')
-
- def _driver_class(self):
- """Returns the port's driver implementation."""
- return driver.Driver
-
- def _get_crash_log(self, name, pid, stdout, stderr, newer_than):
- name_str = name or '<unknown process name>'
- pid_str = str(pid or '<unknown>')
- stdout_lines = (stdout or '<empty>').decode('utf8', 'replace').splitlines()
- stderr_lines = (stderr or '<empty>').decode('utf8', 'replace').splitlines()
- return (stderr, 'crash log for %s (pid %s):\n%s\n%s\n' % (name_str, pid_str,
- '\n'.join(('STDOUT: ' + l) for l in stdout_lines),
- '\n'.join(('STDERR: ' + l) for l in stderr_lines)))
-
- def look_for_new_crash_logs(self, crashed_processes, start_time):
- pass
-
- def look_for_new_samples(self, unresponsive_processes, start_time):
- pass
-
- def sample_process(self, name, pid):
- pass
-
- def virtual_test_suites(self):
- return []
-
- def find_system_pid(self, name, pid):
- # This is only overridden on Windows
- return pid
-
- @memoized
- def populated_virtual_test_suites(self):
- suites = self.virtual_test_suites()
-
- # Sanity-check the suites to make sure they don't point to other suites.
- suite_dirs = [suite.name for suite in suites]
- for suite in suites:
- assert suite.base not in suite_dirs
-
- for suite in suites:
- base_tests = self._real_tests([suite.base])
- suite.tests = {}
- for test in base_tests:
- suite.tests[test.replace(suite.base, suite.name, 1)] = test
- return suites
-
- def _virtual_tests(self, paths, suites):
- virtual_tests = list()
- for suite in suites:
- if paths:
- for test in suite.tests:
- if any(test.startswith(p) for p in paths):
- virtual_tests.append(test)
- else:
- virtual_tests.extend(suite.tests.keys())
- return virtual_tests
-
- def lookup_virtual_test_base(self, test_name):
- for suite in self.populated_virtual_test_suites():
- if test_name.startswith(suite.name):
- return test_name.replace(suite.name, suite.base, 1)
- return None
-
- def lookup_virtual_test_args(self, test_name):
- for suite in self.populated_virtual_test_suites():
- if test_name.startswith(suite.name):
- return suite.args
- return []
-
- def should_run_as_pixel_test(self, test_input):
- if not self._options.pixel_tests:
- return False
- if self._options.pixel_test_directories:
- return any(test_input.test_name.startswith(directory) for directory in self._options.pixel_test_directories)
- return self._should_run_as_pixel_test(test_input)
-
- def _should_run_as_pixel_test(self, test_input):
- # Default behavior is to allow all test to run as pixel tests if --pixel-tests is on and
- # --pixel-test-directory is not specified.
- return True
-
- # FIXME: Eventually we should standarize port naming, and make this method smart enough
- # to use for all port configurations (including architectures, graphics types, etc).
- def _port_flag_for_scripts(self):
- # This is overrriden by ports which need a flag passed to scripts to distinguish the use of that port.
- # For example --qt on linux, since a user might have both Gtk and Qt libraries installed.
- return None
-
- # This is modeled after webkitdirs.pm argumentsForConfiguration() from old-run-webkit-tests
- def _arguments_for_configuration(self):
- config_args = []
- config_args.append(self._config.flag_for_configuration(self.get_option('configuration')))
- # FIXME: We may need to add support for passing --32-bit like old-run-webkit-tests had.
- port_flag = self._port_flag_for_scripts()
- if port_flag:
- config_args.append(port_flag)
- return config_args
-
- def _run_script(self, script_name, args=None, include_configuration_arguments=True, decode_output=True, env=None):
- run_script_command = [self.path_to_script(script_name)]
- if include_configuration_arguments:
- run_script_command.extend(self._arguments_for_configuration())
- if args:
- run_script_command.extend(args)
- output = self._executive.run_command(run_script_command, cwd=self.webkit_base(), decode_output=decode_output, env=env)
- _log.debug('Output of %s:\n%s' % (run_script_command, output))
- return output
-
- def _build_driver(self):
- environment = self.host.copy_current_environment()
- environment.disable_gcc_smartquotes()
- env = environment.to_dictionary()
-
- # FIXME: We build both DumpRenderTree and WebKitTestRunner for
- # WebKitTestRunner runs because DumpRenderTree still includes
- # the DumpRenderTreeSupport module and the TestNetscapePlugin.
- # These two projects should be factored out into their own
- # projects.
- try:
- self._run_script("build-dumprendertree", args=self._build_driver_flags(), env=env)
- if self.get_option('webkit_test_runner'):
- self._run_script("build-webkittestrunner", args=self._build_driver_flags(), env=env)
- except ScriptError, e:
- _log.error(e.message_with_output(output_limit=None))
- return False
- return True
-
- def _build_driver_flags(self):
- return []
-
- def test_search_path(self):
- return self.baseline_search_path()
-
- def _tests_for_other_platforms(self):
- # By default we will skip any directory under LayoutTests/platform
- # that isn't in our baseline search path (this mirrors what
- # old-run-webkit-tests does in findTestsToRun()).
- # Note this returns LayoutTests/platform/*, not platform/*/*.
- entries = self._filesystem.glob(self._webkit_baseline_path('*'))
- dirs_to_skip = []
- for entry in entries:
- if self._filesystem.isdir(entry) and entry not in self.test_search_path():
- basename = self._filesystem.basename(entry)
- dirs_to_skip.append('platform/%s' % basename)
- return dirs_to_skip
-
- def _runtime_feature_list(self):
- """If a port makes certain features available only through runtime flags, it can override this routine to indicate which ones are available."""
- return None
-
- def nm_command(self):
- return 'nm'
-
- def _modules_to_search_for_symbols(self):
- path = self._path_to_webcore_library()
- if path:
- return [path]
- return []
-
- def _symbols_string(self):
- symbols = ''
- for path_to_module in self._modules_to_search_for_symbols():
- try:
- symbols += self._executive.run_command([self.nm_command(), path_to_module], error_handler=self._executive.ignore_error)
- except OSError, e:
- _log.warn("Failed to run nm: %s. Can't determine supported features correctly." % e)
- return symbols
-
- # Ports which use run-time feature detection should define this method and return
- # a dictionary mapping from Feature Names to skipped directoires. NRWT will
- # run DumpRenderTree --print-supported-features and parse the output.
- # If the Feature Names are not found in the output, the corresponding directories
- # will be skipped.
- def _missing_feature_to_skipped_tests(self):
- """Return the supported feature dictionary. Keys are feature names and values
- are the lists of directories to skip if the feature name is not matched."""
- # FIXME: This list matches WebKitWin and should be moved onto the Win port.
- return {
- "Accelerated Compositing": ["compositing"],
- "3D Rendering": ["animations/3d", "transforms/3d"],
- }
-
- def _has_test_in_directories(self, directory_lists, test_list):
- if not test_list:
- return False
-
- directories = itertools.chain.from_iterable(directory_lists)
- for directory, test in itertools.product(directories, test_list):
- if test.startswith(directory):
- return True
- return False
-
- def _skipped_tests_for_unsupported_features(self, test_list):
- # Only check the runtime feature list of there are tests in the test_list that might get skipped.
- # This is a performance optimization to avoid the subprocess call to DRT.
- # If the port supports runtime feature detection, disable any tests
- # for features missing from the runtime feature list.
- # If _runtime_feature_list returns a non-None value, then prefer
- # runtime feature detection over static feature detection.
- if self._has_test_in_directories(self._missing_feature_to_skipped_tests().values(), test_list):
- supported_feature_list = self._runtime_feature_list()
- if supported_feature_list is not None:
- return reduce(operator.add, [directories for feature, directories in self._missing_feature_to_skipped_tests().items() if feature not in supported_feature_list])
-
- return []
-
- def _wk2_port_name(self):
- # By current convention, the WebKit2 name is always mac-wk2, win-wk2, not mac-leopard-wk2, etc,
- # except for Qt because WebKit2 is only supported by Qt 5.0 (therefore: qt-5.0-wk2).
- return "%s-wk2" % self.port_name
-
-
-class VirtualTestSuite(object):
- def __init__(self, name, base, args, tests=None):
- self.name = name
- self.base = base
- self.args = args
- self.tests = tests or set()
-
- def __repr__(self):
- return "VirtualTestSuite('%s', '%s', %s)" % (self.name, self.base, self.args)
diff --git a/Tools/Scripts/webkitpy/port/base_unittest.py b/Tools/Scripts/webkitpy/port/base_unittest.py
deleted file mode 100644
index c04cae0c0..000000000
--- a/Tools/Scripts/webkitpy/port/base_unittest.py
+++ /dev/null
@@ -1,507 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import optparse
-import sys
-import tempfile
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system import executive_mock
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.path import abspath_to_uri
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions
-from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-from webkitpy.port import Port, Driver, DriverOutput
-from webkitpy.port.test import add_unit_tests_to_mock_filesystem, TestPort
-
-class PortTest(unittest.TestCase):
- def make_port(self, executive=None, with_tests=False, port_name=None, **kwargs):
- host = MockSystemHost()
- if executive:
- host.executive = executive
- if with_tests:
- add_unit_tests_to_mock_filesystem(host.filesystem)
- return TestPort(host, **kwargs)
- return Port(host, port_name or 'baseport', **kwargs)
-
- def test_default_child_processes(self):
- port = self.make_port()
- self.assertIsNotNone(port.default_child_processes())
-
- def test_format_wdiff_output_as_html(self):
- output = "OUTPUT %s %s %s" % (Port._WDIFF_DEL, Port._WDIFF_ADD, Port._WDIFF_END)
- html = self.make_port()._format_wdiff_output_as_html(output)
- expected_html = "<head><style>.del { background: #faa; } .add { background: #afa; }</style></head><pre>OUTPUT <span class=del> <span class=add> </span></pre>"
- self.assertEqual(html, expected_html)
-
- def test_wdiff_command(self):
- port = self.make_port()
- port._path_to_wdiff = lambda: "/path/to/wdiff"
- command = port._wdiff_command("/actual/path", "/expected/path")
- expected_command = [
- "/path/to/wdiff",
- "--start-delete=##WDIFF_DEL##",
- "--end-delete=##WDIFF_END##",
- "--start-insert=##WDIFF_ADD##",
- "--end-insert=##WDIFF_END##",
- "/actual/path",
- "/expected/path",
- ]
- self.assertEqual(command, expected_command)
-
- def _file_with_contents(self, contents, encoding="utf-8"):
- new_file = tempfile.NamedTemporaryFile()
- new_file.write(contents.encode(encoding))
- new_file.flush()
- return new_file
-
- def test_pretty_patch_os_error(self):
- port = self.make_port(executive=executive_mock.MockExecutive2(exception=OSError))
- oc = OutputCapture()
- oc.capture_output()
- self.assertEqual(port.pretty_patch_text("patch.txt"),
- port._pretty_patch_error_html)
-
- # This tests repeated calls to make sure we cache the result.
- self.assertEqual(port.pretty_patch_text("patch.txt"),
- port._pretty_patch_error_html)
- oc.restore_output()
-
- def test_pretty_patch_script_error(self):
- # FIXME: This is some ugly white-box test hacking ...
- port = self.make_port(executive=executive_mock.MockExecutive2(exception=ScriptError))
- port._pretty_patch_available = True
- self.assertEqual(port.pretty_patch_text("patch.txt"),
- port._pretty_patch_error_html)
-
- # This tests repeated calls to make sure we cache the result.
- self.assertEqual(port.pretty_patch_text("patch.txt"),
- port._pretty_patch_error_html)
-
- def integration_test_run_wdiff(self):
- executive = Executive()
- # This may fail on some systems. We could ask the port
- # object for the wdiff path, but since we don't know what
- # port object to use, this is sufficient for now.
- try:
- wdiff_path = executive.run_command(["which", "wdiff"]).rstrip()
- except Exception, e:
- wdiff_path = None
-
- port = self.make_port(executive=executive)
- port._path_to_wdiff = lambda: wdiff_path
-
- if wdiff_path:
- # "with tempfile.NamedTemporaryFile() as actual" does not seem to work in Python 2.5
- actual = self._file_with_contents(u"foo")
- expected = self._file_with_contents(u"bar")
- wdiff = port._run_wdiff(actual.name, expected.name)
- expected_wdiff = "<head><style>.del { background: #faa; } .add { background: #afa; }</style></head><pre><span class=del>foo</span><span class=add>bar</span></pre>"
- self.assertEqual(wdiff, expected_wdiff)
- # Running the full wdiff_text method should give the same result.
- port._wdiff_available = True # In case it's somehow already disabled.
- wdiff = port.wdiff_text(actual.name, expected.name)
- self.assertEqual(wdiff, expected_wdiff)
- # wdiff should still be available after running wdiff_text with a valid diff.
- self.assertTrue(port._wdiff_available)
- actual.close()
- expected.close()
-
- # Bogus paths should raise a script error.
- self.assertRaises(ScriptError, port._run_wdiff, "/does/not/exist", "/does/not/exist2")
- self.assertRaises(ScriptError, port.wdiff_text, "/does/not/exist", "/does/not/exist2")
- # wdiff will still be available after running wdiff_text with invalid paths.
- self.assertTrue(port._wdiff_available)
-
- # If wdiff does not exist _run_wdiff should throw an OSError.
- port._path_to_wdiff = lambda: "/invalid/path/to/wdiff"
- self.assertRaises(OSError, port._run_wdiff, "foo", "bar")
-
- # wdiff_text should not throw an error if wdiff does not exist.
- self.assertEqual(port.wdiff_text("foo", "bar"), "")
- # However wdiff should not be available after running wdiff_text if wdiff is missing.
- self.assertFalse(port._wdiff_available)
-
- def test_wdiff_text(self):
- port = self.make_port()
- port.wdiff_available = lambda: True
- port._run_wdiff = lambda a, b: 'PASS'
- self.assertEqual('PASS', port.wdiff_text(None, None))
-
- def test_diff_text(self):
- port = self.make_port()
- # Make sure that we don't run into decoding exceptions when the
- # filenames are unicode, with regular or malformed input (expected or
- # actual input is always raw bytes, not unicode).
- port.diff_text('exp', 'act', 'exp.txt', 'act.txt')
- port.diff_text('exp', 'act', u'exp.txt', 'act.txt')
- port.diff_text('exp', 'act', u'a\xac\u1234\u20ac\U00008000', 'act.txt')
-
- port.diff_text('exp' + chr(255), 'act', 'exp.txt', 'act.txt')
- port.diff_text('exp' + chr(255), 'act', u'exp.txt', 'act.txt')
-
- # Though expected and actual files should always be read in with no
- # encoding (and be stored as str objects), test unicode inputs just to
- # be safe.
- port.diff_text(u'exp', 'act', 'exp.txt', 'act.txt')
- port.diff_text(
- u'a\xac\u1234\u20ac\U00008000', 'act', 'exp.txt', 'act.txt')
-
- # And make sure we actually get diff output.
- diff = port.diff_text('foo', 'bar', 'exp.txt', 'act.txt')
- self.assertIn('foo', diff)
- self.assertIn('bar', diff)
- self.assertIn('exp.txt', diff)
- self.assertIn('act.txt', diff)
- self.assertNotIn('nosuchthing', diff)
-
- def test_setup_test_run(self):
- port = self.make_port()
- # This routine is a no-op. We just test it for coverage.
- port.setup_test_run()
-
- def test_test_dirs(self):
- port = self.make_port()
- port.host.filesystem.write_text_file(port.layout_tests_dir() + '/canvas/test', '')
- port.host.filesystem.write_text_file(port.layout_tests_dir() + '/css2.1/test', '')
- dirs = port.test_dirs()
- self.assertIn('canvas', dirs)
- self.assertIn('css2.1', dirs)
-
- def test_skipped_perf_tests(self):
- port = self.make_port()
-
- def add_text_file(dirname, filename, content='some content'):
- dirname = port.host.filesystem.join(port.perf_tests_dir(), dirname)
- port.host.filesystem.maybe_make_directory(dirname)
- port.host.filesystem.write_text_file(port.host.filesystem.join(dirname, filename), content)
-
- add_text_file('inspector', 'test1.html')
- add_text_file('inspector', 'unsupported_test1.html')
- add_text_file('inspector', 'test2.html')
- add_text_file('inspector/resources', 'resource_file.html')
- add_text_file('unsupported', 'unsupported_test2.html')
- add_text_file('', 'Skipped', '\n'.join(['Layout', '', 'SunSpider', 'Supported/some-test.html']))
- self.assertEqual(port.skipped_perf_tests(), ['Layout', 'SunSpider', 'Supported/some-test.html'])
-
- def test_get_option__set(self):
- options, args = optparse.OptionParser().parse_args([])
- options.foo = 'bar'
- port = self.make_port(options=options)
- self.assertEqual(port.get_option('foo'), 'bar')
-
- def test_get_option__unset(self):
- port = self.make_port()
- self.assertIsNone(port.get_option('foo'))
-
- def test_get_option__default(self):
- port = self.make_port()
- self.assertEqual(port.get_option('foo', 'bar'), 'bar')
-
- def test_additional_platform_directory(self):
- port = self.make_port(port_name='foo')
- port.default_baseline_search_path = lambda: ['LayoutTests/platform/foo']
- layout_test_dir = port.layout_tests_dir()
- test_file = 'fast/test.html'
-
- # No additional platform directory
- self.assertEqual(
- port.expected_baselines(test_file, '.txt'),
- [(None, 'fast/test-expected.txt')])
- self.assertEqual(port.baseline_path(), 'LayoutTests/platform/foo')
-
- # Simple additional platform directory
- port._options.additional_platform_directory = ['/tmp/local-baselines']
- port._filesystem.write_text_file('/tmp/local-baselines/fast/test-expected.txt', 'foo')
- self.assertEqual(
- port.expected_baselines(test_file, '.txt'),
- [('/tmp/local-baselines', 'fast/test-expected.txt')])
- self.assertEqual(port.baseline_path(), '/tmp/local-baselines')
-
- # Multiple additional platform directories
- port._options.additional_platform_directory = ['/foo', '/tmp/local-baselines']
- self.assertEqual(
- port.expected_baselines(test_file, '.txt'),
- [('/tmp/local-baselines', 'fast/test-expected.txt')])
- self.assertEqual(port.baseline_path(), '/foo')
-
- def test_nonexistant_expectations(self):
- port = self.make_port(port_name='foo')
- port.expectations_files = lambda: ['/mock-checkout/LayoutTests/platform/exists/TestExpectations', '/mock-checkout/LayoutTests/platform/nonexistant/TestExpectations']
- port._filesystem.write_text_file('/mock-checkout/LayoutTests/platform/exists/TestExpectations', '')
- self.assertEqual('\n'.join(port.expectations_dict().keys()), '/mock-checkout/LayoutTests/platform/exists/TestExpectations')
-
- def test_additional_expectations(self):
- port = self.make_port(port_name='foo')
- port.port_name = 'foo'
- port._filesystem.write_text_file('/mock-checkout/LayoutTests/platform/foo/TestExpectations', '')
- port._filesystem.write_text_file(
- '/tmp/additional-expectations-1.txt', 'content1\n')
- port._filesystem.write_text_file(
- '/tmp/additional-expectations-2.txt', 'content2\n')
-
- self.assertEqual('\n'.join(port.expectations_dict().values()), '')
-
- port._options.additional_expectations = [
- '/tmp/additional-expectations-1.txt']
- self.assertEqual('\n'.join(port.expectations_dict().values()), '\ncontent1\n')
-
- port._options.additional_expectations = [
- '/tmp/nonexistent-file', '/tmp/additional-expectations-1.txt']
- self.assertEqual('\n'.join(port.expectations_dict().values()), '\ncontent1\n')
-
- port._options.additional_expectations = [
- '/tmp/additional-expectations-1.txt', '/tmp/additional-expectations-2.txt']
- self.assertEqual('\n'.join(port.expectations_dict().values()), '\ncontent1\n\ncontent2\n')
-
- def test_additional_env_var(self):
- port = self.make_port(options=optparse.Values({'additional_env_var': ['FOO=BAR', 'BAR=FOO']}))
- self.assertEqual(port.get_option('additional_env_var'), ['FOO=BAR', 'BAR=FOO'])
- environment = port.setup_environ_for_server()
- self.assertTrue(('FOO' in environment) & ('BAR' in environment))
- self.assertEqual(environment['FOO'], 'BAR')
- self.assertEqual(environment['BAR'], 'FOO')
-
- def test_uses_test_expectations_file(self):
- port = self.make_port(port_name='foo')
- port.port_name = 'foo'
- port.path_to_test_expectations_file = lambda: '/mock-results/TestExpectations'
- self.assertFalse(port.uses_test_expectations_file())
- port._filesystem = MockFileSystem({'/mock-results/TestExpectations': ''})
- self.assertTrue(port.uses_test_expectations_file())
-
- def test_find_no_paths_specified(self):
- port = self.make_port(with_tests=True)
- layout_tests_dir = port.layout_tests_dir()
- tests = port.tests([])
- self.assertNotEqual(len(tests), 0)
-
- def test_find_one_test(self):
- port = self.make_port(with_tests=True)
- tests = port.tests(['failures/expected/image.html'])
- self.assertEqual(len(tests), 1)
-
- def test_find_glob(self):
- port = self.make_port(with_tests=True)
- tests = port.tests(['failures/expected/im*'])
- self.assertEqual(len(tests), 2)
-
- def test_find_with_skipped_directories(self):
- port = self.make_port(with_tests=True)
- tests = port.tests(['userscripts'])
- self.assertNotIn('userscripts/resources/iframe.html', tests)
-
- def test_find_with_skipped_directories_2(self):
- port = self.make_port(with_tests=True)
- tests = port.tests(['userscripts/resources'])
- self.assertEqual(tests, [])
-
- def test_is_test_file(self):
- filesystem = MockFileSystem()
- self.assertTrue(Port._is_test_file(filesystem, '', 'foo.html'))
- self.assertTrue(Port._is_test_file(filesystem, '', 'foo.shtml'))
- self.assertTrue(Port._is_test_file(filesystem, '', 'foo.svg'))
- self.assertTrue(Port._is_test_file(filesystem, '', 'test-ref-test.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo.png'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected.svg'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected.xht'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected-mismatch.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected-mismatch.svg'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-expected-mismatch.xhtml'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-ref.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-notref.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-notref.xht'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'foo-ref.xhtml'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'ref-foo.html'))
- self.assertFalse(Port._is_test_file(filesystem, '', 'notref-foo.xhr'))
-
- def test_is_reference_html_file(self):
- filesystem = MockFileSystem()
- self.assertTrue(Port.is_reference_html_file(filesystem, '', 'foo-expected.html'))
- self.assertTrue(Port.is_reference_html_file(filesystem, '', 'foo-expected-mismatch.xml'))
- self.assertTrue(Port.is_reference_html_file(filesystem, '', 'foo-ref.xhtml'))
- self.assertTrue(Port.is_reference_html_file(filesystem, '', 'foo-notref.svg'))
- self.assertFalse(Port.is_reference_html_file(filesystem, '', 'foo.html'))
- self.assertFalse(Port.is_reference_html_file(filesystem, '', 'foo-expected.txt'))
- self.assertFalse(Port.is_reference_html_file(filesystem, '', 'foo-expected.shtml'))
- self.assertFalse(Port.is_reference_html_file(filesystem, '', 'foo-expected.php'))
- self.assertFalse(Port.is_reference_html_file(filesystem, '', 'foo-expected.mht'))
-
- def test_parse_reftest_list(self):
- port = self.make_port(with_tests=True)
- port.host.filesystem.files['bar/reftest.list'] = "\n".join(["== test.html test-ref.html",
- "",
- "# some comment",
- "!= test-2.html test-notref.html # more comments",
- "== test-3.html test-ref.html",
- "== test-3.html test-ref2.html",
- "!= test-3.html test-notref.html"])
-
- reftest_list = Port._parse_reftest_list(port.host.filesystem, 'bar')
- self.assertEqual(reftest_list, {'bar/test.html': [('==', 'bar/test-ref.html')],
- 'bar/test-2.html': [('!=', 'bar/test-notref.html')],
- 'bar/test-3.html': [('==', 'bar/test-ref.html'), ('==', 'bar/test-ref2.html'), ('!=', 'bar/test-notref.html')]})
-
- def test_reference_files(self):
- port = self.make_port(with_tests=True)
- self.assertEqual(port.reference_files('passes/svgreftest.svg'), [('==', port.layout_tests_dir() + '/passes/svgreftest-expected.svg')])
- self.assertEqual(port.reference_files('passes/xhtreftest.svg'), [('==', port.layout_tests_dir() + '/passes/xhtreftest-expected.html')])
- self.assertEqual(port.reference_files('passes/phpreftest.php'), [('!=', port.layout_tests_dir() + '/passes/phpreftest-expected-mismatch.svg')])
-
- def test_operating_system(self):
- self.assertEqual('mac', self.make_port().operating_system())
-
- def test_http_server_supports_ipv6(self):
- port = self.make_port()
- self.assertTrue(port.http_server_supports_ipv6())
- port.host.platform.os_name = 'cygwin'
- self.assertFalse(port.http_server_supports_ipv6())
- port.host.platform.os_name = 'win'
- self.assertTrue(port.http_server_supports_ipv6())
-
- def test_check_httpd_success(self):
- port = self.make_port(executive=MockExecutive2())
- port._path_to_apache = lambda: '/usr/sbin/httpd'
- capture = OutputCapture()
- capture.capture_output()
- self.assertTrue(port.check_httpd())
- _, _, logs = capture.restore_output()
- self.assertEqual('', logs)
-
- def test_httpd_returns_error_code(self):
- port = self.make_port(executive=MockExecutive2(exit_code=1))
- port._path_to_apache = lambda: '/usr/sbin/httpd'
- capture = OutputCapture()
- capture.capture_output()
- self.assertFalse(port.check_httpd())
- _, _, logs = capture.restore_output()
- self.assertEqual('httpd seems broken. Cannot run http tests.\n', logs)
-
- def test_test_exists(self):
- port = self.make_port(with_tests=True)
- self.assertTrue(port.test_exists('passes'))
- self.assertTrue(port.test_exists('passes/text.html'))
- self.assertFalse(port.test_exists('passes/does_not_exist.html'))
-
- self.assertTrue(port.test_exists('virtual'))
- self.assertFalse(port.test_exists('virtual/does_not_exist.html'))
- self.assertTrue(port.test_exists('virtual/passes/text.html'))
-
- def test_test_isfile(self):
- port = self.make_port(with_tests=True)
- self.assertFalse(port.test_isfile('passes'))
- self.assertTrue(port.test_isfile('passes/text.html'))
- self.assertFalse(port.test_isfile('passes/does_not_exist.html'))
-
- self.assertFalse(port.test_isfile('virtual'))
- self.assertTrue(port.test_isfile('virtual/passes/text.html'))
- self.assertFalse(port.test_isfile('virtual/does_not_exist.html'))
-
- def test_test_isdir(self):
- port = self.make_port(with_tests=True)
- self.assertTrue(port.test_isdir('passes'))
- self.assertFalse(port.test_isdir('passes/text.html'))
- self.assertFalse(port.test_isdir('passes/does_not_exist.html'))
- self.assertFalse(port.test_isdir('passes/does_not_exist/'))
-
- self.assertTrue(port.test_isdir('virtual'))
- self.assertFalse(port.test_isdir('virtual/does_not_exist.html'))
- self.assertFalse(port.test_isdir('virtual/does_not_exist/'))
- self.assertFalse(port.test_isdir('virtual/passes/text.html'))
-
- def test_tests(self):
- port = self.make_port(with_tests=True)
- tests = port.tests([])
- self.assertIn('passes/text.html', tests)
- self.assertIn('virtual/passes/text.html', tests)
-
- tests = port.tests(['passes'])
- self.assertIn('passes/text.html', tests)
- self.assertIn('passes/passes/test-virtual-passes.html', tests)
- self.assertNotIn('virtual/passes/text.html', tests)
-
- tests = port.tests(['virtual/passes'])
- self.assertNotIn('passes/text.html', tests)
- self.assertIn('virtual/passes/test-virtual-passes.html', tests)
- self.assertIn('virtual/passes/passes/test-virtual-passes.html', tests)
- self.assertNotIn('virtual/passes/test-virtual-virtual/passes.html', tests)
- self.assertNotIn('virtual/passes/virtual/passes/test-virtual-passes.html', tests)
-
- def test_build_path(self):
- port = self.make_port(options=optparse.Values({'build_directory': '/my-build-directory/'}))
- self.assertEqual(port._build_path(), '/my-build-directory/Release')
-
-
-class NaturalCompareTest(unittest.TestCase):
- def setUp(self):
- self._port = TestPort(MockSystemHost())
-
- def assert_cmp(self, x, y, result):
- self.assertEqual(cmp(self._port._natural_sort_key(x), self._port._natural_sort_key(y)), result)
-
- def test_natural_compare(self):
- self.assert_cmp('a', 'a', 0)
- self.assert_cmp('ab', 'a', 1)
- self.assert_cmp('a', 'ab', -1)
- self.assert_cmp('', '', 0)
- self.assert_cmp('', 'ab', -1)
- self.assert_cmp('1', '2', -1)
- self.assert_cmp('2', '1', 1)
- self.assert_cmp('1', '10', -1)
- self.assert_cmp('2', '10', -1)
- self.assert_cmp('foo_1.html', 'foo_2.html', -1)
- self.assert_cmp('foo_1.1.html', 'foo_2.html', -1)
- self.assert_cmp('foo_1.html', 'foo_10.html', -1)
- self.assert_cmp('foo_2.html', 'foo_10.html', -1)
- self.assert_cmp('foo_23.html', 'foo_10.html', 1)
- self.assert_cmp('foo_23.html', 'foo_100.html', -1)
-
-
-class KeyCompareTest(unittest.TestCase):
- def setUp(self):
- self._port = TestPort(MockSystemHost())
-
- def assert_cmp(self, x, y, result):
- self.assertEqual(cmp(self._port.test_key(x), self._port.test_key(y)), result)
-
- def test_test_key(self):
- self.assert_cmp('/a', '/a', 0)
- self.assert_cmp('/a', '/b', -1)
- self.assert_cmp('/a2', '/a10', -1)
- self.assert_cmp('/a2/foo', '/a10/foo', -1)
- self.assert_cmp('/a/foo11', '/a/foo2', 1)
- self.assert_cmp('/ab', '/a/a/b', -1)
- self.assert_cmp('/a/a/b', '/ab', 1)
- self.assert_cmp('/foo-bar/baz', '/foo/baz', -1)
diff --git a/Tools/Scripts/webkitpy/port/builders.py b/Tools/Scripts/webkitpy/port/builders.py
deleted file mode 100644
index cb0f3e532..000000000
--- a/Tools/Scripts/webkitpy/port/builders.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (C) 2011 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.
-
-import re
-
-from webkitpy.common.memoized import memoized
-
-
-# In this dictionary, each item stores:
-# * port_name -- a fully qualified port name
-# * is_debug -- whether we are using a debug build
-# * move_overwritten_baselines_to -- (optional) list of platform directories that we will copy an existing
-# baseline to before pulling down a new baseline during rebaselining. This is useful
-# for bringing up a new port, for example when adding a Lion was the most recent Mac version and
-# we wanted to bring up Mountain Lion, we would want to copy an existing baseline in platform/mac
-# to platform/mac-mountainlion before updating the platform/mac entry.
-# * rebaseline_override_dir -- (optional) directory to put baselines in instead of where you would normally put them.
-# This is useful when we don't have bots that cover particular configurations; so, e.g., you might
-# support mac-mountainlion but not have a mac-mountainlion bot yet, so you'd want to put the mac-lion
-# results into platform/mac temporarily.
-
-_exact_matches = {
- # These builders are on build.webkit.org.
- "Apple MountainLion Release WK1 (Tests)": {"port_name": "mac-mountainlion", "is_debug": False, "rebaseline_override_dir": "mac"},
- "Apple MountainLion Debug WK1 (Tests)": {"port_name": "mac-mountainlion", "is_debug": True, "rebaseline_override_dir": "mac"},
- "Apple MountainLion Release WK2 (Tests)": {"port_name": "mac-mountainlion-wk2", "is_debug": False, "rebaseline_override_dir": "mac"},
- "Apple MountainLion Debug WK2 (Tests)": {"port_name": "mac-mountainlion-wk2", "is_debug": True, "rebaseline_override_dir": "mac"},
- "Apple Lion Release WK1 (Tests)": {"port_name": "mac-lion", "is_debug": False},
- "Apple Lion Debug WK1 (Tests)": {"port_name": "mac-lion", "is_debug": True},
- "Apple Lion Release WK2 (Tests)": {"port_name": "mac-lion-wk2", "is_debug": False},
- "Apple Lion Debug WK2 (Tests)": {"port_name": "mac-lion-wk2", "is_debug": True},
-
- "Apple Win XP Debug (Tests)": {"port_name": "win-xp", "is_debug": True},
- # FIXME: Remove rebaseline_override_dir once there is an Apple buildbot that corresponds to platform/win.
- "Apple Win 7 Release (Tests)": {"port_name": "win-7sp0", "is_debug": False, "rebaseline_override_dir": "win"},
-
- "GTK Linux 32-bit Release": {"port_name": "gtk", "is_debug": False},
- "GTK Linux 64-bit Debug": {"port_name": "gtk", "is_debug": True},
- "GTK Linux 64-bit Release": {"port_name": "gtk", "is_debug": False},
- "GTK Linux 64-bit Release WK2 (Tests)": {"port_name": "gtk-wk2", "is_debug": False},
-
- # FIXME: Remove rebaseline_override_dir once there are Qt bots for all the platform/qt-* directories.
- "Qt Linux Release": {"port_name": "qt-linux", "is_debug": False, "rebaseline_override_dir": "qt"},
-
- "EFL Linux 64-bit Release": {"port_name": "efl", "is_debug": False},
- "EFL Linux 64-bit Release WK2": {"port_name": "efl-wk2", "is_debug": False},
- "EFL Linux 64-bit Debug WK2": {"port_name": "efl-wk2", "is_debug": True},
-}
-
-
-_fuzzy_matches = {
- # These builders are on build.webkit.org.
- r"SnowLeopard": "mac-snowleopard",
- r"Apple Lion": "mac-lion",
- r"Windows": "win",
- r"GTK": "gtk",
- r"Qt": "qt",
-}
-
-
-_ports_without_builders = [
- "qt-mac",
- "qt-win",
- "qt-wk2",
-]
-
-
-def builder_path_from_name(builder_name):
- return re.sub(r'[\s().]', '_', builder_name)
-
-
-def all_builder_names():
- return sorted(set(_exact_matches.keys()))
-
-
-def all_port_names():
- return sorted(set(map(lambda x: x["port_name"], _exact_matches.values()) + _ports_without_builders))
-
-
-def rebaseline_override_dir(builder_name):
- return _exact_matches[builder_name].get("rebaseline_override_dir", None)
-
-
-def move_overwritten_baselines_to(builder_name):
- return _exact_matches[builder_name].get("move_overwritten_baselines_to", [])
-
-
-def port_name_for_builder_name(builder_name):
- if builder_name in _exact_matches:
- return _exact_matches[builder_name]["port_name"]
-
- for regexp, port_name in _fuzzy_matches.items():
- if re.match(regexp, builder_name):
- return port_name
-
-
-def builder_name_for_port_name(target_port_name):
- debug_builder_name = None
- for builder_name, builder_info in _exact_matches.items():
- if builder_info['port_name'] == target_port_name:
- if builder_info['is_debug']:
- debug_builder_name = builder_name
- else:
- return builder_name
- return debug_builder_name
-
-
-def builder_path_for_port_name(port_name):
- builder_path_from_name(builder_name_for_port_name(port_name))
diff --git a/Tools/Scripts/webkitpy/port/builders_unittest.py b/Tools/Scripts/webkitpy/port/builders_unittest.py
deleted file mode 100644
index 77551b983..000000000
--- a/Tools/Scripts/webkitpy/port/builders_unittest.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2011 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.
-
-import builders
-import unittest2 as unittest
-
-
-class BuildersTest(unittest.TestCase):
- def test_path_from_name(self):
- tests = {
- 'test': 'test',
- 'Mac 10.6 (dbg)(1)': 'Mac_10_6__dbg__1_',
- '(.) ': '____',
- }
- for name, expected in tests.items():
- self.assertEqual(expected, builders.builder_path_from_name(name))
diff --git a/Tools/Scripts/webkitpy/port/config.py b/Tools/Scripts/webkitpy/port/config.py
deleted file mode 100644
index 8c893533b..000000000
--- a/Tools/Scripts/webkitpy/port/config.py
+++ /dev/null
@@ -1,141 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Wrapper objects for WebKit-specific utility routines."""
-
-# FIXME: This file needs to be unified with common/config/ports.py .
-
-import logging
-
-from webkitpy.common import webkit_finder
-
-
-_log = logging.getLogger(__name__)
-
-#
-# FIXME: This is used to record if we've already hit the filesystem to look
-# for a default configuration. We cache this to speed up the unit tests,
-# but this can be reset with clear_cached_configuration(). This should be
-# replaced with us consistently using MockConfigs() for tests that don't
-# hit the filesystem at all and provide a reliable value.
-#
-_have_determined_configuration = False
-_configuration = "Release"
-
-
-def clear_cached_configuration():
- global _have_determined_configuration, _configuration
- _have_determined_configuration = False
- _configuration = "Release"
-
-
-class Config(object):
- _FLAGS_FROM_CONFIGURATIONS = {
- "Debug": "--debug",
- "Release": "--release",
- }
-
- def __init__(self, executive, filesystem, port_implementation=None):
- self._executive = executive
- self._filesystem = filesystem
- self._webkit_finder = webkit_finder.WebKitFinder(self._filesystem)
- self._default_configuration = None
- self._build_directories = {}
- self._port_implementation = port_implementation
-
- def build_directory(self, configuration):
- """Returns the path to the build directory for the configuration."""
- if configuration:
- flags = ["--configuration", self.flag_for_configuration(configuration)]
- else:
- configuration = ""
- flags = []
-
- if self._port_implementation:
- flags.append('--' + self._port_implementation)
-
- if not self._build_directories.get(configuration):
- args = ["perl", self._webkit_finder.path_to_script("webkit-build-directory")] + flags
- output = self._executive.run_command(args, cwd=self._webkit_finder.webkit_base(), return_stderr=False).rstrip()
- parts = output.split("\n")
- self._build_directories[configuration] = parts[0]
-
- if len(parts) == 2:
- default_configuration = parts[1][len(parts[0]):]
- if default_configuration.startswith("/"):
- default_configuration = default_configuration[1:]
- self._build_directories[default_configuration] = parts[1]
-
- return self._build_directories[configuration]
-
- def flag_for_configuration(self, configuration):
- return self._FLAGS_FROM_CONFIGURATIONS[configuration]
-
- def default_configuration(self):
- """Returns the default configuration for the user.
-
- Returns the value set by 'set-webkit-configuration', or "Release"
- if that has not been set. This mirrors the logic in webkitdirs.pm."""
- if not self._default_configuration:
- self._default_configuration = self._determine_configuration()
- if not self._default_configuration:
- self._default_configuration = 'Release'
- if self._default_configuration not in self._FLAGS_FROM_CONFIGURATIONS:
- _log.warn("Configuration \"%s\" is not a recognized value.\n" % self._default_configuration)
- _log.warn("Scripts may fail. See 'set-webkit-configuration --help'.")
- return self._default_configuration
-
- def _determine_configuration(self):
- # This mirrors the logic in webkitdirs.pm:determineConfiguration().
- #
- # FIXME: See the comment at the top of the file regarding unit tests
- # and our use of global mutable static variables.
- # FIXME: We should just @memoize this method and then this will only
- # be read once per object lifetime (which should be sufficiently fast).
- global _have_determined_configuration, _configuration
- if not _have_determined_configuration:
- contents = self._read_configuration()
- if not contents:
- contents = "Release"
- if contents == "Deployment":
- contents = "Release"
- if contents == "Development":
- contents = "Debug"
- _configuration = contents
- _have_determined_configuration = True
- return _configuration
-
- def _read_configuration(self):
- try:
- configuration_path = self._filesystem.join(self.build_directory(None), "Configuration")
- if not self._filesystem.exists(configuration_path):
- return None
- except:
- return None
-
- return self._filesystem.read_text_file(configuration_path).rstrip()
diff --git a/Tools/Scripts/webkitpy/port/config_standalone.py b/Tools/Scripts/webkitpy/port/config_standalone.py
deleted file mode 100644
index 274a07b33..000000000
--- a/Tools/Scripts/webkitpy/port/config_standalone.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""FIXME: This script is used by
-config_unittest.test_default_configuration__standalone() to read the
-default configuration to work around any possible caching / reset bugs. See
-https://bugs.webkit.org/show_bug?id=49360 for the motivation. We can remove
-this test when we remove the global configuration cache in config.py."""
-
-import os
-import sys
-
-
-# Ensure that webkitpy is in PYTHONPATH.
-this_dir = os.path.abspath(sys.path[0])
-up = os.path.dirname
-script_dir = up(up(up(this_dir)))
-if script_dir not in sys.path:
- sys.path.append(script_dir)
-
-from webkitpy.common.system import executive
-from webkitpy.common.system import executive_mock
-from webkitpy.common.system import filesystem
-from webkitpy.common.system import filesystem_mock
-
-import config
-
-
-def main(argv=None):
- if not argv:
- argv = sys.argv
-
- if len(argv) == 3 and argv[1] == '--mock':
- e = executive_mock.MockExecutive2(output='foo\nfoo/%s' % argv[2])
- fs = filesystem_mock.MockFileSystem({'foo/Configuration': argv[2]})
- else:
- e = executive.Executive()
- fs = filesystem.FileSystem()
-
- c = config.Config(e, fs)
- print c.default_configuration()
-
-if __name__ == '__main__':
- main()
diff --git a/Tools/Scripts/webkitpy/port/config_unittest.py b/Tools/Scripts/webkitpy/port/config_unittest.py
deleted file mode 100644
index 4015d5b61..000000000
--- a/Tools/Scripts/webkitpy/port/config_unittest.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright (C) 2010 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.
-
-import os
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.system.executive_mock import MockExecutive2
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.webkit_finder import WebKitFinder
-
-import config
-
-
-class ConfigTest(unittest.TestCase):
- def setUp(self):
- config.clear_cached_configuration()
-
- def tearDown(self):
- config.clear_cached_configuration()
-
- def make_config(self, output='', files=None, exit_code=0, exception=None, run_command_fn=None, stderr='', port_implementation=None):
- e = MockExecutive2(output=output, exit_code=exit_code, exception=exception, run_command_fn=run_command_fn, stderr=stderr)
- fs = MockFileSystem(files)
- return config.Config(e, fs, port_implementation=port_implementation)
-
- def assert_configuration(self, contents, expected):
- # This tests that a configuration file containing
- # _contents_ ends up being interpreted as _expected_.
- output = 'foo\nfoo/%s' % contents
- c = self.make_config(output, {'foo/Configuration': contents})
- self.assertEqual(c.default_configuration(), expected)
-
- def test_build_directory(self):
- # --top-level
- def mock_webkit_build_directory(arg_list):
- if arg_list == ['--top-level']:
- return '/WebKitBuild/'
- elif arg_list == ['--configuration', '--debug']:
- return '/WebKitBuild/Debug'
- elif arg_list == ['--configuration', '--release']:
- return '/WebKitBuild/Release'
- elif arg_list == []:
- return '/WebKitBuild/\n/WebKitBuild//Debug\n'
- return 'Error'
-
- def mock_run_command(arg_list):
- if 'webkit-build-directory' in arg_list[1]:
- return mock_webkit_build_directory(arg_list[2:])
- return 'Error'
-
- c = self.make_config(run_command_fn=mock_run_command)
- self.assertEqual(c.build_directory(None), '/WebKitBuild/')
-
- # Test again to check caching
- self.assertEqual(c.build_directory(None), '/WebKitBuild/')
-
- # Test other values
- self.assertTrue(c.build_directory('Release').endswith('/Release'))
- self.assertTrue(c.build_directory('Debug').endswith('/Debug'))
- self.assertRaises(KeyError, c.build_directory, 'Unknown')
-
- # Test that stderr output from webkit-build-directory won't mangle the build dir
- c = self.make_config(output='/WebKitBuild/', stderr="mock stderr output from webkit-build-directory")
- self.assertEqual(c.build_directory(None), '/WebKitBuild/')
-
- def test_build_directory_passes_port_implementation(self):
- def mock_run_command(arg_list):
- self.assetEquals('--gtk' in arg_list)
- return '/tmp'
-
- c = self.make_config(run_command_fn=mock_run_command, port_implementation='gtk')
-
- def test_default_configuration__release(self):
- self.assert_configuration('Release', 'Release')
-
- def test_default_configuration__debug(self):
- self.assert_configuration('Debug', 'Debug')
-
- def test_default_configuration__deployment(self):
- self.assert_configuration('Deployment', 'Release')
-
- def test_default_configuration__development(self):
- self.assert_configuration('Development', 'Debug')
-
- def test_default_configuration__notfound(self):
- # This tests what happens if the default configuration file doesn't exist.
- c = self.make_config(output='foo\nfoo/Release', files={'foo/Configuration': None})
- self.assertEqual(c.default_configuration(), "Release")
-
- def test_default_configuration__unknown(self):
- # Ignore the warning about an unknown configuration value.
- oc = OutputCapture()
- oc.capture_output()
- self.assert_configuration('Unknown', 'Unknown')
- oc.restore_output()
-
- def test_default_configuration__standalone(self):
- # FIXME: This test runs a standalone python script to test
- # reading the default configuration to work around any possible
- # caching / reset bugs. See https://bugs.webkit.org/show_bug.cgi?id=49360
- # for the motivation. We can remove this test when we remove the
- # global configuration cache in config.py.
- e = Executive()
- fs = FileSystem()
- c = config.Config(e, fs)
- script = WebKitFinder(fs).path_from_webkit_base('Tools', 'Scripts', 'webkitpy', 'port', 'config_standalone.py')
-
- # Note: don't use 'Release' here, since that's the normal default.
- expected = 'Debug'
-
- args = [sys.executable, script, '--mock', expected]
- actual = e.run_command(args).rstrip()
- self.assertEqual(actual, expected)
-
- def test_default_configuration__no_perl(self):
- # We need perl to run webkit-build-directory to find out where the
- # default configuration file is. See what happens if perl isn't
- # installed. (We should get the default value, 'Release').
- c = self.make_config(exception=OSError)
- actual = c.default_configuration()
- self.assertEqual(actual, 'Release')
-
- def test_default_configuration__scripterror(self):
- # We run webkit-build-directory to find out where the default
- # configuration file is. See what happens if that script fails.
- # (We should get the default value, 'Release').
- c = self.make_config(exception=ScriptError())
- actual = c.default_configuration()
- self.assertEqual(actual, 'Release')
diff --git a/Tools/Scripts/webkitpy/port/driver.py b/Tools/Scripts/webkitpy/port/driver.py
deleted file mode 100644
index 5061bd6d1..000000000
--- a/Tools/Scripts/webkitpy/port/driver.py
+++ /dev/null
@@ -1,562 +0,0 @@
-# Copyright (C) 2011 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 Google name 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.
-
-import base64
-import copy
-import logging
-import re
-import shlex
-import sys
-import time
-import os
-
-from webkitpy.common.system import path
-from webkitpy.common.system.profiler import ProfilerFactory
-
-
-_log = logging.getLogger(__name__)
-
-
-class DriverInput(object):
- def __init__(self, test_name, timeout, image_hash, should_run_pixel_test, args=None):
- self.test_name = test_name
- self.timeout = timeout # in ms
- self.image_hash = image_hash
- self.should_run_pixel_test = should_run_pixel_test
- self.args = args or []
-
-
-class DriverOutput(object):
- """Groups information about a output from driver for easy passing
- and post-processing of data."""
-
- strip_patterns = []
- strip_patterns.append((re.compile('at \(-?[0-9]+,-?[0-9]+\) *'), ''))
- strip_patterns.append((re.compile('size -?[0-9]+x-?[0-9]+ *'), ''))
- strip_patterns.append((re.compile('text run width -?[0-9]+: '), ''))
- strip_patterns.append((re.compile('text run width -?[0-9]+ [a-zA-Z ]+: '), ''))
- strip_patterns.append((re.compile('RenderButton {BUTTON} .*'), 'RenderButton {BUTTON}'))
- strip_patterns.append((re.compile('RenderImage {INPUT} .*'), 'RenderImage {INPUT}'))
- strip_patterns.append((re.compile('RenderBlock {INPUT} .*'), 'RenderBlock {INPUT}'))
- strip_patterns.append((re.compile('RenderTextControl {INPUT} .*'), 'RenderTextControl {INPUT}'))
- strip_patterns.append((re.compile('\([0-9]+px'), 'px'))
- strip_patterns.append((re.compile(' *" *\n +" *'), ' '))
- strip_patterns.append((re.compile('" +$'), '"'))
- strip_patterns.append((re.compile('- '), '-'))
- strip_patterns.append((re.compile('\n( *)"\s+'), '\n\g<1>"'))
- strip_patterns.append((re.compile('\s+"\n'), '"\n'))
- strip_patterns.append((re.compile('scrollWidth [0-9]+'), 'scrollWidth'))
- strip_patterns.append((re.compile('scrollHeight [0-9]+'), 'scrollHeight'))
- strip_patterns.append((re.compile('scrollX [0-9]+'), 'scrollX'))
- strip_patterns.append((re.compile('scrollY [0-9]+'), 'scrollY'))
- strip_patterns.append((re.compile('scrolled to [0-9]+,[0-9]+'), 'scrolled'))
-
- def __init__(self, text, image, image_hash, audio, crash=False,
- test_time=0, measurements=None, timeout=False, error='', crashed_process_name='??',
- crashed_pid=None, crash_log=None, pid=None):
- # FIXME: Args could be renamed to better clarify what they do.
- self.text = text
- self.image = image # May be empty-string if the test crashes.
- self.image_hash = image_hash
- self.image_diff = None # image_diff gets filled in after construction.
- self.audio = audio # Binary format is port-dependent.
- self.crash = crash
- self.crashed_process_name = crashed_process_name
- self.crashed_pid = crashed_pid
- self.crash_log = crash_log
- self.test_time = test_time
- self.measurements = measurements
- self.timeout = timeout
- self.error = error # stderr output
- self.pid = pid
-
- def has_stderr(self):
- return bool(self.error)
-
- def strip_metrics(self):
- if not self.text:
- return
- for pattern in self.strip_patterns:
- self.text = re.sub(pattern[0], pattern[1], self.text)
-
-
-class Driver(object):
- """object for running test(s) using DumpRenderTree/WebKitTestRunner."""
-
- def __init__(self, port, worker_number, pixel_tests, no_timeout=False):
- """Initialize a Driver to subsequently run tests.
-
- Typically this routine will spawn DumpRenderTree in a config
- ready for subsequent input.
-
- port - reference back to the port object.
- worker_number - identifier for a particular worker/driver instance
- """
- self._port = port
- self._worker_number = worker_number
- self._no_timeout = no_timeout
-
- self._driver_tempdir = None
- # WebKitTestRunner can report back subprocess crashes by printing
- # "#CRASHED - PROCESSNAME". Since those can happen at any time
- # and ServerProcess won't be aware of them (since the actual tool
- # didn't crash, just a subprocess) we record the crashed subprocess name here.
- self._crashed_process_name = None
- self._crashed_pid = None
-
- # WebKitTestRunner can report back subprocesses that became unresponsive
- # This could mean they crashed.
- self._subprocess_was_unresponsive = False
-
- # stderr reading is scoped on a per-test (not per-block) basis, so we store the accumulated
- # stderr output, as well as if we've seen #EOF on this driver instance.
- # FIXME: We should probably remove _read_first_block and _read_optional_image_block and
- # instead scope these locally in run_test.
- self.error_from_test = str()
- self.err_seen_eof = False
- self._server_process = None
-
- self._measurements = {}
- if self._port.get_option("profile"):
- profiler_name = self._port.get_option("profiler")
- self._profiler = ProfilerFactory.create_profiler(self._port.host,
- self._port._path_to_driver(), self._port.results_directory(), profiler_name)
- else:
- self._profiler = None
-
- def __del__(self):
- self.stop()
-
- def run_test(self, driver_input, stop_when_done):
- """Run a single test and return the results.
-
- Note that it is okay if a test times out or crashes and leaves
- the driver in an indeterminate state. The upper layers of the program
- are responsible for cleaning up and ensuring things are okay.
-
- Returns a DriverOutput object.
- """
- start_time = time.time()
- self.start(driver_input.should_run_pixel_test, driver_input.args)
- test_begin_time = time.time()
- self.error_from_test = str()
- self.err_seen_eof = False
-
- command = self._command_from_driver_input(driver_input)
- deadline = test_begin_time + int(driver_input.timeout) / 1000.0
-
- self._server_process.write(command)
- text, audio = self._read_first_block(deadline) # First block is either text or audio
- image, actual_image_hash = self._read_optional_image_block(deadline) # The second (optional) block is image data.
-
- crashed = self.has_crashed()
- timed_out = self._server_process.timed_out
- pid = self._server_process.pid()
-
- if stop_when_done or crashed or timed_out:
- # We call stop() even if we crashed or timed out in order to get any remaining stdout/stderr output.
- # In the timeout case, we kill the hung process as well.
- out, err = self._server_process.stop(self._port.driver_stop_timeout() if stop_when_done else 0.0)
- if out:
- text += out
- if err:
- self.error_from_test += err
- self._server_process = None
-
- crash_log = None
- if crashed:
- self.error_from_test, crash_log = self._get_crash_log(text, self.error_from_test, newer_than=start_time)
-
- # If we don't find a crash log use a placeholder error message instead.
- if not crash_log:
- pid_str = str(self._crashed_pid) if self._crashed_pid else "unknown pid"
- crash_log = 'No crash log found for %s:%s.\n' % (self._crashed_process_name, pid_str)
- # If we were unresponsive append a message informing there may not have been a crash.
- if self._subprocess_was_unresponsive:
- crash_log += 'Process failed to become responsive before timing out.\n'
-
- # Print stdout and stderr to the placeholder crash log; we want as much context as possible.
- if self.error_from_test:
- crash_log += '\nstdout:\n%s\nstderr:\n%s\n' % (text, self.error_from_test)
-
- return DriverOutput(text, image, actual_image_hash, audio,
- crash=crashed, test_time=time.time() - test_begin_time, measurements=self._measurements,
- timeout=timed_out, error=self.error_from_test,
- crashed_process_name=self._crashed_process_name,
- crashed_pid=self._crashed_pid, crash_log=crash_log, pid=pid)
-
- def _get_crash_log(self, stdout, stderr, newer_than):
- return self._port._get_crash_log(self._crashed_process_name, self._crashed_pid, stdout, stderr, newer_than)
-
- # FIXME: Seems this could just be inlined into callers.
- @classmethod
- def _command_wrapper(cls, wrapper_option):
- # Hook for injecting valgrind or other runtime instrumentation,
- # used by e.g. tools/valgrind/valgrind_tests.py.
- return shlex.split(wrapper_option) if wrapper_option else []
-
- HTTP_DIR = "http/tests/"
- HTTP_LOCAL_DIR = "http/tests/local/"
-
- def is_http_test(self, test_name):
- return test_name.startswith(self.HTTP_DIR) and not test_name.startswith(self.HTTP_LOCAL_DIR)
-
- def test_to_uri(self, test_name):
- """Convert a test name to a URI."""
- if not self.is_http_test(test_name):
- return path.abspath_to_uri(self._port.host.platform, self._port.abspath_for_test(test_name))
-
- relative_path = test_name[len(self.HTTP_DIR):]
-
- # TODO(dpranke): remove the SSL reference?
- if relative_path.startswith("ssl/"):
- return "https://127.0.0.1:8443/" + relative_path
- return "http://127.0.0.1:8000/" + relative_path
-
- def uri_to_test(self, uri):
- """Return the base layout test name for a given URI.
-
- This returns the test name for a given URI, e.g., if you passed in
- "file:///src/LayoutTests/fast/html/keygen.html" it would return
- "fast/html/keygen.html".
-
- """
- if uri.startswith("file:///"):
- prefix = path.abspath_to_uri(self._port.host.platform, self._port.layout_tests_dir())
- if not prefix.endswith('/'):
- prefix += '/'
- return uri[len(prefix):]
- if uri.startswith("http://"):
- return uri.replace('http://127.0.0.1:8000/', self.HTTP_DIR)
- if uri.startswith("https://"):
- return uri.replace('https://127.0.0.1:8443/', self.HTTP_DIR)
- raise NotImplementedError('unknown url type: %s' % uri)
-
- def has_crashed(self):
- if self._server_process is None:
- return False
- if self._crashed_process_name:
- return True
- if self._server_process.has_crashed():
- self._crashed_process_name = self._server_process.name()
- self._crashed_pid = self._server_process.pid()
- return True
- return False
-
- def start(self, pixel_tests, per_test_args):
- # FIXME: Callers shouldn't normally call this, since this routine
- # may not be specifying the correct combination of pixel test and
- # per_test args.
- #
- # The only reason we have this routine at all is so the perftestrunner
- # can pause before running a test; it might be better to push that
- # into run_test() directly.
- if not self._server_process:
- self._start(pixel_tests, per_test_args)
- self._run_post_start_tasks()
-
- def _setup_environ_for_driver(self, environment):
- environment['DYLD_LIBRARY_PATH'] = self._port._build_path()
- environment['DYLD_FRAMEWORK_PATH'] = self._port._build_path()
- # FIXME: We're assuming that WebKitTestRunner checks this DumpRenderTree-named environment variable.
- # FIXME: Commented out for now to avoid tests breaking. Re-enable after
- # we cut over to NRWT
- #environment['DUMPRENDERTREE_TEMP'] = str(self._port._driver_tempdir_for_environment())
- environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
- if 'WEBKIT_OUTPUTDIR' in os.environ:
- environment['WEBKIT_OUTPUTDIR'] = os.environ['WEBKIT_OUTPUTDIR']
- if self._profiler:
- environment = self._profiler.adjusted_environment(environment)
- return environment
-
- def _start(self, pixel_tests, per_test_args):
- self.stop()
- self._driver_tempdir = self._port._driver_tempdir()
- server_name = self._port.driver_name()
- environment = self._port.setup_environ_for_server(server_name)
- environment = self._setup_environ_for_driver(environment)
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, server_name, self.cmd_line(pixel_tests, per_test_args), environment)
- self._server_process.start()
-
- def _run_post_start_tasks(self):
- # Remote drivers may override this to delay post-start tasks until the server has ack'd.
- if self._profiler:
- self._profiler.attach_to_pid(self._pid_on_target())
-
- def _pid_on_target(self):
- # Remote drivers will override this method to return the pid on the device.
- return self._server_process.pid()
-
- def stop(self):
- if self._server_process:
- self._server_process.stop(self._port.driver_stop_timeout())
- self._server_process = None
- if self._profiler:
- self._profiler.profile_after_exit()
-
- if self._driver_tempdir:
- self._port._filesystem.rmtree(str(self._driver_tempdir))
- self._driver_tempdir = None
-
- def cmd_line(self, pixel_tests, per_test_args):
- cmd = self._command_wrapper(self._port.get_option('wrapper'))
- cmd.append(self._port._path_to_driver())
- if self._port.get_option('gc_between_tests'):
- cmd.append('--gc-between-tests')
- if self._port.get_option('complex_text'):
- cmd.append('--complex-text')
- if self._port.get_option('threaded'):
- cmd.append('--threaded')
- if self._no_timeout:
- cmd.append('--no-timeout')
- # FIXME: We need to pass --timeout=SECONDS to WebKitTestRunner for WebKit2.
-
- cmd.extend(self._port.get_option('additional_drt_flag', []))
- cmd.extend(self._port.additional_drt_flag())
-
- cmd.extend(per_test_args)
-
- cmd.append('-')
- return cmd
-
- def _check_for_driver_crash(self, error_line):
- if error_line == "#CRASHED\n":
- # This is used on Windows to report that the process has crashed
- # See http://trac.webkit.org/changeset/65537.
- self._crashed_process_name = self._server_process.name()
- self._crashed_pid = self._server_process.pid()
- elif (error_line.startswith("#CRASHED - ")
- or error_line.startswith("#PROCESS UNRESPONSIVE - ")):
- # WebKitTestRunner uses this to report that the WebProcess subprocess crashed.
- match = re.match('#(?:CRASHED|PROCESS UNRESPONSIVE) - (\S+)', error_line)
- self._crashed_process_name = match.group(1) if match else 'WebProcess'
- match = re.search('pid (\d+)', error_line)
- pid = int(match.group(1)) if match else None
- self._crashed_pid = pid
- # FIXME: delete this after we're sure this code is working :)
- _log.debug('%s crash, pid = %s, error_line = %s' % (self._crashed_process_name, str(pid), error_line))
- if error_line.startswith("#PROCESS UNRESPONSIVE - "):
- self._subprocess_was_unresponsive = True
- self._port.sample_process(self._crashed_process_name, self._crashed_pid)
- # We want to show this since it's not a regular crash and probably we don't have a crash log.
- self.error_from_test += error_line
- return True
- return self.has_crashed()
-
- def _command_from_driver_input(self, driver_input):
- # FIXME: performance tests pass in full URLs instead of test names.
- if driver_input.test_name.startswith('http://') or driver_input.test_name.startswith('https://') or driver_input.test_name == ('about:blank'):
- command = driver_input.test_name
- elif self.is_http_test(driver_input.test_name):
- command = self.test_to_uri(driver_input.test_name)
- else:
- command = self._port.abspath_for_test(driver_input.test_name)
- if sys.platform == 'cygwin':
- command = path.cygpath(command)
-
- assert not driver_input.image_hash or driver_input.should_run_pixel_test
-
- # ' is the separator between arguments.
- if self._port.supports_per_test_timeout():
- command += "'--timeout'%s" % driver_input.timeout
- if driver_input.should_run_pixel_test:
- command += "'--pixel-test"
- if driver_input.image_hash:
- command += "'" + driver_input.image_hash
- return command + "\n"
-
- def _read_first_block(self, deadline):
- # returns (text_content, audio_content)
- block = self._read_block(deadline)
- if block.malloc:
- self._measurements['Malloc'] = float(block.malloc)
- if block.js_heap:
- self._measurements['JSHeap'] = float(block.js_heap)
- if block.content_type == 'audio/wav':
- return (None, block.decoded_content)
- return (block.decoded_content, None)
-
- def _read_optional_image_block(self, deadline):
- # returns (image, actual_image_hash)
- block = self._read_block(deadline, wait_for_stderr_eof=True)
- if block.content and block.content_type == 'image/png':
- return (block.decoded_content, block.content_hash)
- return (None, block.content_hash)
-
- def _read_header(self, block, line, header_text, header_attr, header_filter=None):
- if line.startswith(header_text) and getattr(block, header_attr) is None:
- value = line.split()[1]
- if header_filter:
- value = header_filter(value)
- setattr(block, header_attr, value)
- return True
- return False
-
- def _process_stdout_line(self, block, line):
- if (self._read_header(block, line, 'Content-Type: ', 'content_type')
- or self._read_header(block, line, 'Content-Transfer-Encoding: ', 'encoding')
- or self._read_header(block, line, 'Content-Length: ', '_content_length', int)
- or self._read_header(block, line, 'ActualHash: ', 'content_hash')
- or self._read_header(block, line, 'DumpMalloc: ', 'malloc')
- or self._read_header(block, line, 'DumpJSHeap: ', 'js_heap')):
- return
- # Note, we're not reading ExpectedHash: here, but we could.
- # If the line wasn't a header, we just append it to the content.
- block.content += line
-
- def _strip_eof(self, line):
- if line and line.endswith("#EOF\n"):
- return line[:-5], True
- return line, False
-
- def _read_block(self, deadline, wait_for_stderr_eof=False):
- block = ContentBlock()
- out_seen_eof = False
-
- while not self.has_crashed():
- if out_seen_eof and (self.err_seen_eof or not wait_for_stderr_eof):
- break
-
- if self.err_seen_eof:
- out_line = self._server_process.read_stdout_line(deadline)
- err_line = None
- elif out_seen_eof:
- out_line = None
- err_line = self._server_process.read_stderr_line(deadline)
- else:
- out_line, err_line = self._server_process.read_either_stdout_or_stderr_line(deadline)
-
- if self._server_process.timed_out or self.has_crashed():
- break
-
- if out_line:
- assert not out_seen_eof
- out_line, out_seen_eof = self._strip_eof(out_line)
- if err_line:
- assert not self.err_seen_eof
- err_line, self.err_seen_eof = self._strip_eof(err_line)
-
- if out_line:
- if out_line[-1] != "\n":
- _log.error("Last character read from DRT stdout line was not a newline! This indicates either a NRWT or DRT bug.")
- content_length_before_header_check = block._content_length
- self._process_stdout_line(block, out_line)
- # FIXME: Unlike HTTP, DRT dumps the content right after printing a Content-Length header.
- # Don't wait until we're done with headers, just read the binary blob right now.
- if content_length_before_header_check != block._content_length:
- block.content = self._server_process.read_stdout(deadline, block._content_length)
-
- if err_line:
- if self._check_for_driver_crash(err_line):
- break
- self.error_from_test += err_line
-
- block.decode_content()
- return block
-
-
-class ContentBlock(object):
- def __init__(self):
- self.content_type = None
- self.encoding = None
- self.content_hash = None
- self._content_length = None
- # Content is treated as binary data even though the text output is usually UTF-8.
- self.content = str() # FIXME: Should be bytearray() once we require Python 2.6.
- self.decoded_content = None
- self.malloc = None
- self.js_heap = None
-
- def decode_content(self):
- if self.encoding == 'base64' and self.content is not None:
- self.decoded_content = base64.b64decode(self.content)
- else:
- self.decoded_content = self.content
-
-class DriverProxy(object):
- """A wrapper for managing two Driver instances, one with pixel tests and
- one without. This allows us to handle plain text tests and ref tests with a
- single driver."""
-
- def __init__(self, port, worker_number, driver_instance_constructor, pixel_tests, no_timeout):
- self._port = port
- self._worker_number = worker_number
- self._driver_instance_constructor = driver_instance_constructor
- self._no_timeout = no_timeout
-
- # FIXME: We shouldn't need to create a driver until we actually run a test.
- self._driver = self._make_driver(pixel_tests)
- self._driver_cmd_line = None
-
- def _make_driver(self, pixel_tests):
- return self._driver_instance_constructor(self._port, self._worker_number, pixel_tests, self._no_timeout)
-
- # FIXME: this should be a @classmethod (or implemented on Port instead).
- def is_http_test(self, test_name):
- return self._driver.is_http_test(test_name)
-
- # FIXME: this should be a @classmethod (or implemented on Port instead).
- def test_to_uri(self, test_name):
- return self._driver.test_to_uri(test_name)
-
- # FIXME: this should be a @classmethod (or implemented on Port instead).
- def uri_to_test(self, uri):
- return self._driver.uri_to_test(uri)
-
- def run_test(self, driver_input, stop_when_done):
- base = self._port.lookup_virtual_test_base(driver_input.test_name)
- if base:
- virtual_driver_input = copy.copy(driver_input)
- virtual_driver_input.test_name = base
- virtual_driver_input.args = self._port.lookup_virtual_test_args(driver_input.test_name)
- return self.run_test(virtual_driver_input, stop_when_done)
-
- pixel_tests_needed = driver_input.should_run_pixel_test
- cmd_line_key = self._cmd_line_as_key(pixel_tests_needed, driver_input.args)
- if cmd_line_key != self._driver_cmd_line:
- self._driver.stop()
- self._driver = self._make_driver(pixel_tests_needed)
- self._driver_cmd_line = cmd_line_key
-
- return self._driver.run_test(driver_input, stop_when_done)
-
- def has_crashed(self):
- return self._driver.has_crashed()
-
- def stop(self):
- self._driver.stop()
-
- # FIXME: this should be a @classmethod (or implemented on Port instead).
- def cmd_line(self, pixel_tests=None, per_test_args=None):
- return self._driver.cmd_line(pixel_tests, per_test_args or [])
-
- def _cmd_line_as_key(self, pixel_tests, per_test_args):
- return ' '.join(self.cmd_line(pixel_tests, per_test_args))
diff --git a/Tools/Scripts/webkitpy/port/driver_unittest.py b/Tools/Scripts/webkitpy/port/driver_unittest.py
deleted file mode 100644
index adfdc6344..000000000
--- a/Tools/Scripts/webkitpy/port/driver_unittest.py
+++ /dev/null
@@ -1,269 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-from webkitpy.port import Port, Driver, DriverOutput
-from webkitpy.port.server_process_mock import MockServerProcess
-
-# FIXME: remove the dependency on TestWebKitPort
-from webkitpy.port.port_testcase import TestWebKitPort
-
-from webkitpy.tool.mocktool import MockOptions
-
-
-class DriverOutputTest(unittest.TestCase):
- def test_strip_metrics(self):
- patterns = [
- ('RenderView at (0,0) size 800x600', 'RenderView '),
- ('text run at (0,0) width 100: "some text"', '"some text"'),
- ('RenderBlock {HTML} at (0,0) size 800x600', 'RenderBlock {HTML} '),
- ('RenderBlock {INPUT} at (29,3) size 12x12 [color=#000000]', 'RenderBlock {INPUT}'),
-
- ('RenderBlock (floating) {DT} at (5,5) size 79x310 [border: (5px solid #000000)]',
- 'RenderBlock (floating) {DT} [border: px solid #000000)]'),
-
- ('\n "truncate text "\n', '\n "truncate text"\n'),
-
- ('RenderText {#text} at (0,3) size 41x12\n text run at (0,3) width 41: "whimper "\n',
- 'RenderText {#text} \n "whimper"\n'),
-
- ("""text run at (0,0) width 109: ".one {color: green;}"
- text run at (109,0) width 0: " "
- text run at (0,17) width 81: ".1 {color: red;}"
- text run at (81,17) width 0: " "
- text run at (0,34) width 102: ".a1 {color: green;}"
- text run at (102,34) width 0: " "
- text run at (0,51) width 120: "P.two {color: purple;}"
- text run at (120,51) width 0: " "\n""",
- '".one {color: green;} .1 {color: red;} .a1 {color: green;} P.two {color: purple;}"\n'),
-
- ('text-- other text', 'text--other text'),
-
- (' some output "truncate trailing spaces at end of line after text" \n',
- ' some output "truncate trailing spaces at end of line after text"\n'),
-
- (r'scrollWidth 120', r'scrollWidth'),
- (r'scrollHeight 120', r'scrollHeight'),
- ]
-
- for pattern in patterns:
- driver_output = DriverOutput(pattern[0], None, None, None)
- driver_output.strip_metrics()
- self.assertEqual(driver_output.text, pattern[1])
-
-
-class DriverTest(unittest.TestCase):
- def make_port(self):
- port = Port(MockSystemHost(), 'test', MockOptions(configuration='Release'))
- port._config.build_directory = lambda configuration: '/mock-build'
- return port
-
- def _assert_wrapper(self, wrapper_string, expected_wrapper):
- wrapper = Driver(self.make_port(), None, pixel_tests=False)._command_wrapper(wrapper_string)
- self.assertEqual(wrapper, expected_wrapper)
-
- def test_command_wrapper(self):
- self._assert_wrapper(None, [])
- self._assert_wrapper("valgrind", ["valgrind"])
-
- # Validate that shlex works as expected.
- command_with_spaces = "valgrind --smc-check=\"check with spaces!\" --foo"
- expected_parse = ["valgrind", "--smc-check=check with spaces!", "--foo"]
- self._assert_wrapper(command_with_spaces, expected_parse)
-
- def test_test_to_uri(self):
- port = self.make_port()
- driver = Driver(port, None, pixel_tests=False)
- self.assertEqual(driver.test_to_uri('foo/bar.html'), 'file://%s/foo/bar.html' % port.layout_tests_dir())
- self.assertEqual(driver.test_to_uri('http/tests/foo.html'), 'http://127.0.0.1:8000/foo.html')
- self.assertEqual(driver.test_to_uri('http/tests/ssl/bar.html'), 'https://127.0.0.1:8443/ssl/bar.html')
-
- def test_uri_to_test(self):
- port = self.make_port()
- driver = Driver(port, None, pixel_tests=False)
- self.assertEqual(driver.uri_to_test('file://%s/foo/bar.html' % port.layout_tests_dir()), 'foo/bar.html')
- self.assertEqual(driver.uri_to_test('http://127.0.0.1:8000/foo.html'), 'http/tests/foo.html')
- self.assertEqual(driver.uri_to_test('https://127.0.0.1:8443/ssl/bar.html'), 'http/tests/ssl/bar.html')
-
- def test_read_block(self):
- port = TestWebKitPort()
- driver = Driver(port, 0, pixel_tests=False)
- driver._server_process = MockServerProcess(lines=[
- 'ActualHash: foobar',
- 'Content-Type: my_type',
- 'Content-Transfer-Encoding: none',
- "#EOF",
- ])
- content_block = driver._read_block(0)
- self.assertEqual(content_block.content_type, 'my_type')
- self.assertEqual(content_block.encoding, 'none')
- self.assertEqual(content_block.content_hash, 'foobar')
- driver._server_process = None
-
- def test_read_binary_block(self):
- port = TestWebKitPort()
- driver = Driver(port, 0, pixel_tests=True)
- driver._server_process = MockServerProcess(lines=[
- 'ActualHash: actual',
- 'ExpectedHash: expected',
- 'Content-Type: image/png',
- 'Content-Length: 9',
- "12345678",
- "#EOF",
- ])
- content_block = driver._read_block(0)
- self.assertEqual(content_block.content_type, 'image/png')
- self.assertEqual(content_block.content_hash, 'actual')
- self.assertEqual(content_block.content, '12345678\n')
- self.assertEqual(content_block.decoded_content, '12345678\n')
- driver._server_process = None
-
- def test_read_base64_block(self):
- port = TestWebKitPort()
- driver = Driver(port, 0, pixel_tests=True)
- driver._server_process = MockServerProcess(lines=[
- 'ActualHash: actual',
- 'ExpectedHash: expected',
- 'Content-Type: image/png',
- 'Content-Transfer-Encoding: base64',
- 'Content-Length: 12',
- 'MTIzNDU2NzgK#EOF',
- ])
- content_block = driver._read_block(0)
- self.assertEqual(content_block.content_type, 'image/png')
- self.assertEqual(content_block.content_hash, 'actual')
- self.assertEqual(content_block.encoding, 'base64')
- self.assertEqual(content_block.content, 'MTIzNDU2NzgK')
- self.assertEqual(content_block.decoded_content, '12345678\n')
-
- def test_no_timeout(self):
- port = TestWebKitPort()
- port._config.build_directory = lambda configuration: '/mock-build'
- driver = Driver(port, 0, pixel_tests=True, no_timeout=True)
- self.assertEqual(driver.cmd_line(True, []), ['/mock-build/DumpRenderTree', '--no-timeout', '-'])
-
- def test_check_for_driver_crash(self):
- port = TestWebKitPort()
- driver = Driver(port, 0, pixel_tests=True)
-
- class FakeServerProcess(object):
- def __init__(self, crashed):
- self.crashed = crashed
-
- def pid(self):
- return 1234
-
- def name(self):
- return 'FakeServerProcess'
-
- def has_crashed(self):
- return self.crashed
-
- def stop(self, timeout):
- pass
-
- def assert_crash(driver, error_line, crashed, name, pid, unresponsive=False):
- self.assertEqual(driver._check_for_driver_crash(error_line), crashed)
- self.assertEqual(driver._crashed_process_name, name)
- self.assertEqual(driver._crashed_pid, pid)
- self.assertEqual(driver._subprocess_was_unresponsive, unresponsive)
- driver.stop()
-
- driver._server_process = FakeServerProcess(False)
- assert_crash(driver, '', False, None, None)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(False)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '#CRASHED\n', True, 'FakeServerProcess', 1234)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(False)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '#CRASHED - WebProcess\n', True, 'WebProcess', None)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(False)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '#CRASHED - WebProcess (pid 8675)\n', True, 'WebProcess', 8675)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(False)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '#PROCESS UNRESPONSIVE - WebProcess (pid 8675)\n', True, 'WebProcess', 8675, True)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(False)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '#CRASHED - renderer (pid 8675)\n', True, 'renderer', 8675)
-
- driver._crashed_process_name = None
- driver._crashed_pid = None
- driver._server_process = FakeServerProcess(True)
- driver._subprocess_was_unresponsive = False
- assert_crash(driver, '', True, 'FakeServerProcess', 1234)
-
- def test_creating_a_port_does_not_write_to_the_filesystem(self):
- port = TestWebKitPort()
- driver = Driver(port, 0, pixel_tests=True)
- self.assertEqual(port._filesystem.written_files, {})
- self.assertEqual(port._filesystem.last_tmpdir, None)
-
- def test_stop_cleans_up_properly(self):
- port = TestWebKitPort()
- port._server_process_constructor = MockServerProcess
- driver = Driver(port, 0, pixel_tests=True)
- driver.start(True, [])
- last_tmpdir = port._filesystem.last_tmpdir
- self.assertNotEquals(last_tmpdir, None)
- driver.stop()
- self.assertFalse(port._filesystem.isdir(last_tmpdir))
-
- def test_two_starts_cleans_up_properly(self):
- port = TestWebKitPort()
- port._server_process_constructor = MockServerProcess
- driver = Driver(port, 0, pixel_tests=True)
- driver.start(True, [])
- last_tmpdir = port._filesystem.last_tmpdir
- driver._start(True, [])
- self.assertFalse(port._filesystem.isdir(last_tmpdir))
-
- def test_start_actually_starts(self):
- port = TestWebKitPort()
- port._server_process_constructor = MockServerProcess
- driver = Driver(port, 0, pixel_tests=True)
- driver.start(True, [])
- self.assertTrue(driver._server_process.started)
diff --git a/Tools/Scripts/webkitpy/port/efl.py b/Tools/Scripts/webkitpy/port/efl.py
deleted file mode 100644
index 01c66eba8..000000000
--- a/Tools/Scripts/webkitpy/port/efl.py
+++ /dev/null
@@ -1,136 +0,0 @@
-# Copyright (C) 2011 ProFUSION Embedded Systems. All rights reserved.
-# Copyright (C) 2011 Samsung Electronics. All rights reserved.
-# Copyright (C) 2012 Intel Corporation
-#
-# 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.
-#
-# 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.
-
-"""WebKit Efl implementation of the Port interface."""
-
-import os
-
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-from webkitpy.port.base import Port
-from webkitpy.port.pulseaudio_sanitizer import PulseAudioSanitizer
-from webkitpy.port.xvfbdriver import XvfbDriver
-
-
-class EflPort(Port):
- port_name = 'efl'
-
- def __init__(self, *args, **kwargs):
- super(EflPort, self).__init__(*args, **kwargs)
-
- self._jhbuild_wrapper_path = [self.path_from_webkit_base('Tools', 'jhbuild', 'jhbuild-wrapper'), '--efl', 'run']
-
- self.set_option_default('wrapper', ' '.join(self._jhbuild_wrapper_path))
- self.webprocess_cmd_prefix = self.get_option('webprocess_cmd_prefix')
-
- self._pulseaudio_sanitizer = PulseAudioSanitizer()
-
- def _port_flag_for_scripts(self):
- return "--efl"
-
- def setup_test_run(self):
- super(EflPort, self).setup_test_run()
- self._pulseaudio_sanitizer.unload_pulseaudio_module()
-
- def setup_environ_for_server(self, server_name=None):
- env = super(EflPort, self).setup_environ_for_server(server_name)
-
- # If DISPLAY environment variable is unset in the system
- # e.g. on build bot, remove DISPLAY variable from the dictionary
- if not 'DISPLAY' in os.environ:
- del env['DISPLAY']
-
- env['TEST_RUNNER_INJECTED_BUNDLE_FILENAME'] = self._build_path('lib', 'libTestRunnerInjectedBundle.so')
- env['TEST_RUNNER_PLUGIN_PATH'] = self._build_path('lib')
-
- # Silence GIO warnings about using the "memory" GSettings backend.
- env['GSETTINGS_BACKEND'] = 'memory'
-
- if self.webprocess_cmd_prefix:
- env['WEB_PROCESS_CMD_PREFIX'] = self.webprocess_cmd_prefix
-
- return env
-
- def default_timeout_ms(self):
- # Tests run considerably slower under gdb
- # or valgrind.
- if self.get_option('webprocess_cmd_prefix'):
- return 350 * 1000
- return super(EflPort, self).default_timeout_ms()
-
- def clean_up_test_run(self):
- super(EflPort, self).clean_up_test_run()
- self._pulseaudio_sanitizer.restore_pulseaudio_module()
-
- def _generate_all_test_configurations(self):
- return [TestConfiguration(version=self._version, architecture='x86', build_type=build_type) for build_type in self.ALL_BUILD_TYPES]
-
- def _driver_class(self):
- return XvfbDriver
-
- def _path_to_driver(self):
- return self._build_path('bin', self.driver_name())
-
- def _path_to_image_diff(self):
- return self._build_path('bin', 'ImageDiff')
-
- def _image_diff_command(self, *args, **kwargs):
- return self._jhbuild_wrapper_path + super(EflPort, self)._image_diff_command(*args, **kwargs)
-
- def _path_to_webcore_library(self):
- static_path = self._build_path('lib', 'libwebcore_efl.a')
- dyn_path = self._build_path('lib', 'libwebcore_efl.so')
- return static_path if self._filesystem.exists(static_path) else dyn_path
-
- def _search_paths(self):
- search_paths = []
- if self.get_option('webkit_test_runner'):
- search_paths.append(self.port_name + '-wk2')
- search_paths.append('wk2')
- else:
- search_paths.append(self.port_name + '-wk1')
- search_paths.append(self.port_name)
- return search_paths
-
- def default_baseline_search_path(self):
- return map(self._webkit_baseline_path, self._search_paths())
-
- def _port_specific_expectations_files(self):
- # FIXME: We should be able to use the default algorithm here.
- return list(reversed([self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in self._search_paths()]))
-
- def show_results_html_file(self, results_filename):
- # FIXME: We should find a way to share this implmentation with Gtk,
- # or teach run-launcher how to call run-safari and move this down to WebKitPort.
- run_launcher_args = ["file://%s" % results_filename]
- if self.get_option('webkit_test_runner'):
- run_launcher_args.append('-2')
- # FIXME: old-run-webkit-tests also added ["-graphicssystem", "raster", "-style", "windows"]
- # FIXME: old-run-webkit-tests converted results_filename path for cygwin.
- self._run_script("run-launcher", run_launcher_args)
-
- def check_sys_deps(self, needs_http):
- return super(EflPort, self).check_sys_deps(needs_http) and XvfbDriver.check_xvfb(self)
diff --git a/Tools/Scripts/webkitpy/port/efl_unittest.py b/Tools/Scripts/webkitpy/port/efl_unittest.py
deleted file mode 100644
index a16dbaf57..000000000
--- a/Tools/Scripts/webkitpy/port/efl_unittest.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2011 ProFUSION Embedded Systems. All rights reserved.
-# Copyright (C) 2011 Samsung Electronics. 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.
-#
-# 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.efl import EflPort
-from webkitpy.port.pulseaudio_sanitizer_mock import PulseAudioSanitizerMock
-from webkitpy.port import port_testcase
-
-
-class EflPortTest(port_testcase.PortTestCase):
- port_name = 'efl'
- port_maker = EflPort
-
- # Additionally mocks out the PulseAudioSanitizer methods.
- def make_port(self, host=None, port_name=None, options=None, os_name=None, os_version=None, **kwargs):
- port = super(EflPortTest, self).make_port(host, port_name, options, os_name, os_version, **kwargs)
- port._pulseaudio_sanitizer = PulseAudioSanitizerMock()
- return port
-
- def test_show_results_html_file(self):
- port = self.make_port()
- port._executive = MockExecutive(should_log=True)
- expected_logs = "MOCK run_command: ['Tools/Scripts/run-launcher', '--release', '--efl', 'file://test.html'], cwd=/mock-checkout\n"
- OutputCapture().assert_outputs(self, port.show_results_html_file, ["test.html"], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/port/factory.py b/Tools/Scripts/webkitpy/port/factory.py
deleted file mode 100644
index e9f146563..000000000
--- a/Tools/Scripts/webkitpy/port/factory.py
+++ /dev/null
@@ -1,128 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Factory method to retrieve the appropriate port implementation."""
-
-import fnmatch
-import optparse
-import re
-
-from webkitpy.port import builders
-
-
-def platform_options(use_globs=False):
- return [
- optparse.make_option('--platform', action='store',
- help=('Glob-style list of platform/ports to use (e.g., "mac*")' if use_globs else 'Platform to use (e.g., "mac-lion")')),
- optparse.make_option('--efl', action='store_const', dest='platform',
- const=('efl*' if use_globs else 'efl'),
- help=('Alias for --platform=efl*' if use_globs else 'Alias for --platform=efl')),
- optparse.make_option('--gtk', action='store_const', dest='platform',
- const=('gtk*' if use_globs else 'gtk'),
- help=('Alias for --platform=gtk*' if use_globs else 'Alias for --platform=gtk')),
- optparse.make_option('--qt', action='store_const', dest="platform",
- const=('qt*' if use_globs else 'qt'),
- help=('Alias for --platform=qt' if use_globs else 'Alias for --platform=qt')),
- ]
-
-
-def configuration_options():
- return [
- optparse.make_option("-t", "--target", dest="configuration", help="(DEPRECATED)"),
- # FIXME: --help should display which configuration is default.
- optparse.make_option('--debug', action='store_const', const='Debug', dest="configuration",
- help='Set the configuration to Debug'),
- optparse.make_option('--release', action='store_const', const='Release', dest="configuration",
- help='Set the configuration to Release'),
- optparse.make_option('--32-bit', action='store_const', const='x86', default=None, dest="architecture",
- help='use 32-bit binaries by default (x86 instead of x86_64)'),
- ]
-
-
-
-def _builder_options(builder_name):
- configuration = "Debug" if re.search(r"[d|D](ebu|b)g", builder_name) else "Release"
- is_webkit2 = builder_name.find("WK2") != -1
- builder_name = builder_name
- return optparse.Values({'builder_name': builder_name, 'configuration': configuration, 'webkit_test_runner': is_webkit2})
-
-
-class PortFactory(object):
- PORT_CLASSES = (
- 'efl.EflPort',
- 'gtk.GtkPort',
- 'mac.MacPort',
- 'mock_drt.MockDRTPort',
- 'qt.QtPort',
- 'test.TestPort',
- 'win.WinPort',
- )
-
- def __init__(self, host):
- self._host = host
-
- def _default_port(self, options):
- platform = self._host.platform
- if platform.is_linux() or platform.is_freebsd():
- return 'qt-linux'
- elif platform.is_mac():
- return 'mac'
- elif platform.is_win():
- return 'win'
- raise NotImplementedError('unknown platform: %s' % platform)
-
- def get(self, port_name=None, options=None, **kwargs):
- """Returns an object implementing the Port interface. If
- port_name is None, this routine attempts to guess at the most
- appropriate port on this platform."""
- port_name = port_name or self._default_port(options)
-
- for port_class in self.PORT_CLASSES:
- module_name, class_name = port_class.rsplit('.', 1)
- module = __import__(module_name, globals(), locals(), [], -1)
- cls = module.__dict__[class_name]
- if port_name.startswith(cls.port_name):
- port_name = cls.determine_full_port_name(self._host, options, port_name)
- return cls(self._host, port_name, options=options, **kwargs)
- raise NotImplementedError('unsupported platform: "%s"' % port_name)
-
- def all_port_names(self, platform=None):
- """Return a list of all valid, fully-specified, "real" port names.
-
- This is the list of directories that are used as actual baseline_paths()
- by real ports. This does not include any "fake" names like "test"
- or "mock-mac", and it does not include any directories that are not.
-
- If platform is not specified, we will glob-match all ports"""
- platform = platform or '*'
- return fnmatch.filter(builders.all_port_names(), platform)
-
- def get_from_builder_name(self, builder_name):
- port_name = builders.port_name_for_builder_name(builder_name)
- assert port_name, "unrecognized builder name '%s'" % builder_name
- return self.get(port_name, _builder_options(builder_name))
diff --git a/Tools/Scripts/webkitpy/port/factory_unittest.py b/Tools/Scripts/webkitpy/port/factory_unittest.py
deleted file mode 100644
index 6f09a2eb9..000000000
--- a/Tools/Scripts/webkitpy/port/factory_unittest.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.mocktool import MockOptions
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-from webkitpy.port import factory
-from webkitpy.port import gtk
-from webkitpy.port import mac
-from webkitpy.port import qt
-from webkitpy.port import test
-from webkitpy.port import win
-
-
-class FactoryTest(unittest.TestCase):
- """Test that the factory creates the proper port object for given combination of port_name, host.platform, and options."""
- # FIXME: The ports themselves should expose what options they require,
- # instead of passing generic "options".
-
- def setUp(self):
- self.webkit_options = MockOptions(pixel_tests=False)
-
- def assert_port(self, port_name=None, os_name=None, os_version=None, options=None, cls=None):
- host = MockSystemHost(os_name=os_name, os_version=os_version)
- port = factory.PortFactory(host).get(port_name, options=options)
- self.assertIsInstance(port, cls)
-
- def test_mac(self):
- self.assert_port(port_name='mac-lion', cls=mac.MacPort)
- self.assert_port(port_name='mac-lion-wk2', cls=mac.MacPort)
- self.assert_port(port_name='mac', os_name='mac', os_version='lion', cls=mac.MacPort)
- self.assert_port(port_name=None, os_name='mac', os_version='lion', cls=mac.MacPort)
-
- def test_win(self):
- self.assert_port(port_name='win-xp', cls=win.WinPort)
- self.assert_port(port_name='win-xp-wk2', cls=win.WinPort)
- self.assert_port(port_name='win', os_name='win', os_version='xp', cls=win.WinPort)
- self.assert_port(port_name=None, os_name='win', os_version='xp', cls=win.WinPort)
- self.assert_port(port_name=None, os_name='win', os_version='xp', options=self.webkit_options, cls=win.WinPort)
-
- def test_gtk(self):
- self.assert_port(port_name='gtk', cls=gtk.GtkPort)
-
- def test_qt(self):
- self.assert_port(port_name='qt', cls=qt.QtPort)
-
- def test_unknown_specified(self):
- self.assertRaises(NotImplementedError, factory.PortFactory(MockSystemHost()).get, port_name='unknown')
-
- def test_unknown_default(self):
- self.assertRaises(NotImplementedError, factory.PortFactory(MockSystemHost(os_name='vms')).get)
-
- def test_get_from_builder_name(self):
- self.assertEqual(factory.PortFactory(MockSystemHost()).get_from_builder_name('Apple Lion Release WK1 (Tests)').name(),
- 'mac-lion')
diff --git a/Tools/Scripts/webkitpy/port/gtk.py b/Tools/Scripts/webkitpy/port/gtk.py
deleted file mode 100644
index 63b8eb89a..000000000
--- a/Tools/Scripts/webkitpy/port/gtk.py
+++ /dev/null
@@ -1,179 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-import os
-import subprocess
-
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-from webkitpy.port.base import Port
-from webkitpy.port.pulseaudio_sanitizer import PulseAudioSanitizer
-from webkitpy.port.xvfbdriver import XvfbDriver
-
-
-class GtkPort(Port):
- port_name = "gtk"
-
- def __init__(self, *args, **kwargs):
- super(GtkPort, self).__init__(*args, **kwargs)
- self._pulseaudio_sanitizer = PulseAudioSanitizer()
-
- def warn_if_bug_missing_in_test_expectations(self):
- return not self.get_option('webkit_test_runner')
-
- def _port_flag_for_scripts(self):
- return "--gtk"
-
- def _driver_class(self):
- return XvfbDriver
-
- def default_timeout_ms(self):
- if self.get_option('configuration') == 'Debug':
- return 12 * 1000
- return 6 * 1000
-
- def setup_test_run(self):
- super(GtkPort, self).setup_test_run()
- self._pulseaudio_sanitizer.unload_pulseaudio_module()
-
- def clean_up_test_run(self):
- super(GtkPort, self).clean_up_test_run()
- self._pulseaudio_sanitizer.restore_pulseaudio_module()
-
- def setup_environ_for_server(self, server_name=None):
- environment = super(GtkPort, self).setup_environ_for_server(server_name)
- environment['GTK_MODULES'] = 'gail'
- environment['GSETTINGS_BACKEND'] = 'memory'
- environment['LIBOVERLAY_SCROLLBAR'] = '0'
- environment['TEST_RUNNER_INJECTED_BUNDLE_FILENAME'] = self._build_path('Libraries', 'libTestRunnerInjectedBundle.la')
- environment['TEST_RUNNER_TEST_PLUGIN_PATH'] = self._build_path('TestNetscapePlugin', '.libs')
- environment['WEBKIT_INSPECTOR_PATH'] = self._build_path('Programs', 'resources', 'inspector')
- environment['AUDIO_RESOURCES_PATH'] = self.path_from_webkit_base('Source', 'WebCore', 'platform', 'audio', 'resources')
- self._copy_value_from_environ_if_set(environment, 'WEBKIT_OUTPUTDIR')
- return environment
-
- def _generate_all_test_configurations(self):
- configurations = []
- for build_type in self.ALL_BUILD_TYPES:
- configurations.append(TestConfiguration(version=self._version, architecture='x86', build_type=build_type))
- return configurations
-
- def _path_to_driver(self):
- return self._build_path('Programs', self.driver_name())
-
- def _path_to_image_diff(self):
- return self._build_path('Programs', 'ImageDiff')
-
- def _path_to_webcore_library(self):
- gtk_library_names = [
- "libwebkitgtk-1.0.so",
- "libwebkitgtk-3.0.so",
- "libwebkit2gtk-1.0.so",
- ]
-
- for library in gtk_library_names:
- full_library = self._build_path(".libs", library)
- if self._filesystem.isfile(full_library):
- return full_library
- return None
-
- def _search_paths(self):
- search_paths = []
- if self.get_option('webkit_test_runner'):
- search_paths.extend([self.port_name + '-wk2', 'wk2'])
- else:
- search_paths.append(self.port_name + '-wk1')
- search_paths.append(self.port_name)
- search_paths.extend(self.get_option("additional_platform_directory", []))
- return search_paths
-
- def default_baseline_search_path(self):
- return map(self._webkit_baseline_path, self._search_paths())
-
- def _port_specific_expectations_files(self):
- return [self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in reversed(self._search_paths())]
-
- # FIXME: We should find a way to share this implmentation with Gtk,
- # or teach run-launcher how to call run-safari and move this down to Port.
- def show_results_html_file(self, results_filename):
- run_launcher_args = ["file://%s" % results_filename]
- if self.get_option('webkit_test_runner'):
- run_launcher_args.append('-2')
- # FIXME: old-run-webkit-tests also added ["-graphicssystem", "raster", "-style", "windows"]
- # FIXME: old-run-webkit-tests converted results_filename path for cygwin.
- self._run_script("run-launcher", run_launcher_args)
-
- def check_sys_deps(self, needs_http):
- return super(GtkPort, self).check_sys_deps(needs_http) and XvfbDriver.check_xvfb(self)
-
- def _get_gdb_output(self, coredump_path):
- cmd = ['gdb', '-ex', 'thread apply all bt 1024', '--batch', str(self._path_to_driver()), coredump_path]
- proc = subprocess.Popen(cmd, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- stdout, stderr = proc.communicate()
- errors = [l.strip().decode('utf8', 'ignore') for l in stderr.splitlines()]
- return (stdout.decode('utf8', 'ignore'), errors)
-
- def _get_crash_log(self, name, pid, stdout, stderr, newer_than):
- pid_representation = str(pid or '<unknown>')
- log_directory = os.environ.get("WEBKIT_CORE_DUMPS_DIRECTORY")
- errors = []
- crash_log = ''
- expected_crash_dump_filename = "core-pid_%s-_-process_%s" % (pid_representation, name)
-
- def match_filename(filesystem, directory, filename):
- if pid:
- return filename == expected_crash_dump_filename
- return filename.find(name) > -1
-
- if log_directory:
- dumps = self._filesystem.files_under(log_directory, file_filter=match_filename)
- if dumps:
- # Get the most recent coredump matching the pid and/or process name.
- coredump_path = list(reversed(sorted(dumps)))[0]
- if not newer_than or self._filesystem.mtime(coredump_path) > newer_than:
- crash_log, errors = self._get_gdb_output(coredump_path)
-
- stderr_lines = errors + (stderr or '<empty>').decode('utf8', 'ignore').splitlines()
- errors_str = '\n'.join(('STDERR: ' + l) for l in stderr_lines)
- if not crash_log:
- if not log_directory:
- log_directory = "/path/to/coredumps"
- core_pattern = os.path.join(log_directory, "core-pid_%p-_-process_%e")
- crash_log = """\
-Coredump %(expected_crash_dump_filename)s not found. To enable crash logs:
-
-- run this command as super-user: echo "%(core_pattern)s" > /proc/sys/kernel/core_pattern
-- enable core dumps: ulimit -c unlimited
-- set the WEBKIT_CORE_DUMPS_DIRECTORY environment variable: export WEBKIT_CORE_DUMPS_DIRECTORY=%(log_directory)s
-
-""" % locals()
-
- return (stderr, """\
-Crash log for %(name)s (pid %(pid_representation)s):
-
-%(crash_log)s
-%(errors_str)s""" % locals())
diff --git a/Tools/Scripts/webkitpy/port/gtk_unittest.py b/Tools/Scripts/webkitpy/port/gtk_unittest.py
deleted file mode 100644
index e806091bb..000000000
--- a/Tools/Scripts/webkitpy/port/gtk_unittest.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-import sys
-import os
-
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.gtk import GtkPort
-from webkitpy.port.pulseaudio_sanitizer_mock import PulseAudioSanitizerMock
-from webkitpy.port import port_testcase
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions
-
-
-class GtkPortTest(port_testcase.PortTestCase):
- port_name = 'gtk'
- port_maker = GtkPort
-
- # Additionally mocks out the PulseAudioSanitizer methods.
- def make_port(self, host=None, port_name=None, options=None, os_name=None, os_version=None, **kwargs):
- port = super(GtkPortTest, self).make_port(host, port_name, options, os_name, os_version, **kwargs)
- port._pulseaudio_sanitizer = PulseAudioSanitizerMock()
- return port
-
- def test_default_baseline_search_path(self):
- port = self.make_port()
- self.assertEqual(port.default_baseline_search_path(), ['/mock-checkout/LayoutTests/platform/gtk-wk1',
- '/mock-checkout/LayoutTests/platform/gtk'])
-
- port = self.make_port(options=MockOptions(webkit_test_runner=True))
- self.assertEqual(port.default_baseline_search_path(), ['/mock-checkout/LayoutTests/platform/gtk-wk2',
- '/mock-checkout/LayoutTests/platform/wk2', '/mock-checkout/LayoutTests/platform/gtk'])
-
- def test_port_specific_expectations_files(self):
- port = self.make_port()
- self.assertEqual(port.expectations_files(), ['/mock-checkout/LayoutTests/TestExpectations',
- '/mock-checkout/LayoutTests/platform/gtk/TestExpectations',
- '/mock-checkout/LayoutTests/platform/gtk-wk1/TestExpectations'])
-
- port = self.make_port(options=MockOptions(webkit_test_runner=True))
- self.assertEqual(port.expectations_files(), ['/mock-checkout/LayoutTests/TestExpectations',
- '/mock-checkout/LayoutTests/platform/gtk/TestExpectations',
- '/mock-checkout/LayoutTests/platform/wk2/TestExpectations',
- '/mock-checkout/LayoutTests/platform/gtk-wk2/TestExpectations'])
-
- def test_show_results_html_file(self):
- port = self.make_port()
- port._executive = MockExecutive(should_log=True)
- expected_logs = "MOCK run_command: ['Tools/Scripts/run-launcher', '--release', '--gtk', 'file://test.html'], cwd=/mock-checkout\n"
- OutputCapture().assert_outputs(self, port.show_results_html_file, ["test.html"], expected_logs=expected_logs)
-
- def test_default_timeout_ms(self):
- self.assertEqual(self.make_port(options=MockOptions(configuration='Release')).default_timeout_ms(), 6000)
- self.assertEqual(self.make_port(options=MockOptions(configuration='Debug')).default_timeout_ms(), 12000)
-
- def test_get_crash_log(self):
- core_directory = os.environ.get('WEBKIT_CORE_DUMPS_DIRECTORY', '/path/to/coredumps')
- core_pattern = os.path.join(core_directory, "core-pid_%p-_-process_%e")
- mock_empty_crash_log = """\
-Crash log for DumpRenderTree (pid 28529):
-
-Coredump core-pid_28529-_-process_DumpRenderTree not found. To enable crash logs:
-
-- run this command as super-user: echo "%(core_pattern)s" > /proc/sys/kernel/core_pattern
-- enable core dumps: ulimit -c unlimited
-- set the WEBKIT_CORE_DUMPS_DIRECTORY environment variable: export WEBKIT_CORE_DUMPS_DIRECTORY=%(core_directory)s
-
-
-STDERR: <empty>""" % locals()
-
- def _mock_gdb_output(coredump_path):
- return (mock_empty_crash_log, [])
-
- port = self.make_port()
- port._get_gdb_output = mock_empty_crash_log
- stderr, log = port._get_crash_log("DumpRenderTree", 28529, "", "", newer_than=None)
- self.assertEqual(stderr, "")
- self.assertMultiLineEqual(log, mock_empty_crash_log)
-
- stderr, log = port._get_crash_log("DumpRenderTree", 28529, "", "", newer_than=0.0)
- self.assertEqual(stderr, "")
- self.assertMultiLineEqual(log, mock_empty_crash_log)
diff --git a/Tools/Scripts/webkitpy/port/http_lock.py b/Tools/Scripts/webkitpy/port/http_lock.py
deleted file mode 100644
index bdde37e32..000000000
--- a/Tools/Scripts/webkitpy/port/http_lock.py
+++ /dev/null
@@ -1,137 +0,0 @@
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-# Copyright (C) 2010 Andras Becsi (abecsi@inf.u-szeged.hu), University of Szeged
-#
-# 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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.
-
-# FIXME: rename this file, and add more text about how this is
-# different from the base file_lock class.
-
-"""This class helps to block NRWT threads when more NRWTs run
-perf, http and websocket tests in a same time."""
-
-import logging
-import os
-import sys
-import tempfile
-import time
-
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.file_lock import FileLock
-from webkitpy.common.system.filesystem import FileSystem
-
-
-_log = logging.getLogger(__name__)
-
-
-class HttpLock(object):
- def __init__(self, lock_path, lock_file_prefix="WebKitHttpd.lock.", guard_lock="WebKit.lock", filesystem=None, executive=None, name='HTTP'):
- self._executive = executive or Executive()
- self._filesystem = filesystem or FileSystem()
- self._lock_path = lock_path
- if not self._lock_path:
- # FIXME: FileSystem should have an accessor for tempdir()
- self._lock_path = tempfile.gettempdir()
- self._lock_file_prefix = lock_file_prefix
- self._lock_file_path_prefix = self._filesystem.join(self._lock_path, self._lock_file_prefix)
- self._guard_lock_file = self._filesystem.join(self._lock_path, guard_lock)
- self._guard_lock = FileLock(self._guard_lock_file)
- self._process_lock_file_name = ""
- self._name = name
-
- def cleanup_http_lock(self):
- """Delete the lock file if exists."""
- if self._filesystem.exists(self._process_lock_file_name):
- _log.debug("Removing lock file: %s" % self._process_lock_file_name)
- self._filesystem.remove(self._process_lock_file_name)
-
- def _extract_lock_number(self, lock_file_name):
- """Return the lock number from lock file."""
- prefix_length = len(self._lock_file_path_prefix)
- return int(lock_file_name[prefix_length:])
-
- def _lock_file_list(self):
- """Return the list of lock files sequentially."""
- lock_list = self._filesystem.glob(self._lock_file_path_prefix + '*')
- lock_list.sort(key=self._extract_lock_number)
- return lock_list
-
- def _next_lock_number(self):
- """Return the next available lock number."""
- lock_list = self._lock_file_list()
- if not lock_list:
- return 0
- return self._extract_lock_number(lock_list[-1]) + 1
-
- def _current_lock_pid(self):
- """Return with the current lock pid. If the lock is not valid
- it deletes the lock file."""
- lock_list = self._lock_file_list()
- if not lock_list:
- _log.debug("No lock file list")
- return
- try:
- current_pid = self._filesystem.read_text_file(lock_list[0])
- if not (current_pid and self._executive.check_running_pid(int(current_pid))):
- _log.debug("Removing stuck lock file: %s" % lock_list[0])
- self._filesystem.remove(lock_list[0])
- return
- except IOError, e:
- _log.debug("IOError: %s" % e)
- return
- except OSError, e:
- _log.debug("OSError: %s" % e)
- return
- return int(current_pid)
-
- def _create_lock_file(self):
- """The lock files are used to schedule the running test sessions in first
- come first served order. The guard lock ensures that the lock numbers are
- sequential."""
- if not self._filesystem.exists(self._lock_path):
- _log.debug("Lock directory does not exist: %s" % self._lock_path)
- return False
-
- if not self._guard_lock.acquire_lock():
- _log.debug("Guard lock timed out!")
- return False
-
- self._process_lock_file_name = (self._lock_file_path_prefix + str(self._next_lock_number()))
- _log.debug("Creating lock file: %s" % self._process_lock_file_name)
- # FIXME: Executive.py should have an accessor for getpid()
- self._filesystem.write_text_file(self._process_lock_file_name, str(os.getpid()))
- self._guard_lock.release_lock()
- return True
-
- def wait_for_httpd_lock(self):
- """Create a lock file and wait until it's turn comes. If something goes wrong
- it wont do any locking."""
- if not self._create_lock_file():
- _log.debug("Warning, %s locking failed!" % self._name)
- return
-
- # FIXME: This can hang forever!
- while self._current_lock_pid() != os.getpid():
- time.sleep(1)
-
- _log.debug("%s lock acquired" % self._name)
diff --git a/Tools/Scripts/webkitpy/port/http_lock_unittest.py b/Tools/Scripts/webkitpy/port/http_lock_unittest.py
deleted file mode 100644
index 25af12fab..000000000
--- a/Tools/Scripts/webkitpy/port/http_lock_unittest.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright (C) 2010 Gabor Rapcsanyi (rgabor@inf.u-szeged.hu), University of Szeged
-#
-# 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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.
-
-from http_lock import HttpLock
-import os # Used for os.getpid()
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive
-
-
-# FIXME: These tests all touch the real disk, but could be written to a MockFileSystem instead.
-class HttpLockTestWithRealFileSystem(unittest.TestCase):
- # FIXME: Unit tests do not use an __init__ method, but rather setUp and tearDown methods.
- def __init__(self, testFunc):
- self.http_lock = HttpLock(None, "WebKitTestHttpd.lock.", "WebKitTest.lock")
- self.filesystem = self.http_lock._filesystem # FIXME: We should be passing in a MockFileSystem instead.
- self.lock_file_path_prefix = self.filesystem.join(self.http_lock._lock_path, self.http_lock._lock_file_prefix)
- self.lock_file_name = self.lock_file_path_prefix + "0"
- self.guard_lock_file = self.http_lock._guard_lock_file
- self.clean_all_lockfile()
- unittest.TestCase.__init__(self, testFunc)
-
- def clean_all_lockfile(self):
- if self.filesystem.exists(self.guard_lock_file):
- self.filesystem.remove(self.guard_lock_file)
- lock_list = self.filesystem.glob(self.lock_file_path_prefix + '*')
- for file_name in lock_list:
- self.filesystem.remove(file_name)
-
- def assertEqual(self, first, second):
- if first != second:
- self.clean_all_lockfile()
- unittest.TestCase.assertEqual(self, first, second)
-
- def _check_lock_file(self):
- if self.filesystem.exists(self.lock_file_name):
- pid = os.getpid()
- lock_file_pid = self.filesystem.read_text_file(self.lock_file_name)
- self.assertEqual(pid, int(lock_file_pid))
- return True
- return False
-
- def test_lock_lifecycle(self):
- self.http_lock._create_lock_file()
-
- self.assertEqual(True, self._check_lock_file())
- self.assertEqual(1, self.http_lock._next_lock_number())
-
- self.http_lock.cleanup_http_lock()
-
- self.assertEqual(False, self._check_lock_file())
- self.assertEqual(0, self.http_lock._next_lock_number())
-
-
-class HttpLockTest(unittest.TestCase):
- def setUp(self):
- self.filesystem = MockFileSystem()
- self.http_lock = HttpLock(None, "WebKitTestHttpd.lock.", "WebKitTest.lock", filesystem=self.filesystem, executive=MockExecutive())
- # FIXME: Shouldn't we be able to get these values from the http_lock object directly?
- self.lock_file_path_prefix = self.filesystem.join(self.http_lock._lock_path, self.http_lock._lock_file_prefix)
- self.lock_file_name = self.lock_file_path_prefix + "0"
-
- def test_current_lock_pid(self):
- # FIXME: Once Executive wraps getpid, we can mock this and not use a real pid.
- current_pid = os.getpid()
- self.http_lock._filesystem.write_text_file(self.lock_file_name, str(current_pid))
- self.assertEqual(self.http_lock._current_lock_pid(), current_pid)
-
- def test_extract_lock_number(self):
- lock_file_list = (
- self.lock_file_path_prefix + "00",
- self.lock_file_path_prefix + "9",
- self.lock_file_path_prefix + "001",
- self.lock_file_path_prefix + "021",
- )
-
- expected_number_list = (0, 9, 1, 21)
-
- for lock_file, expected in zip(lock_file_list, expected_number_list):
- self.assertEqual(self.http_lock._extract_lock_number(lock_file), expected)
-
- def test_lock_file_list(self):
- self.http_lock._filesystem = MockFileSystem({
- self.lock_file_path_prefix + "6": "",
- self.lock_file_path_prefix + "1": "",
- self.lock_file_path_prefix + "4": "",
- self.lock_file_path_prefix + "3": "",
- })
-
- expected_file_list = [
- self.lock_file_path_prefix + "1",
- self.lock_file_path_prefix + "3",
- self.lock_file_path_prefix + "4",
- self.lock_file_path_prefix + "6",
- ]
-
- self.assertEqual(self.http_lock._lock_file_list(), expected_file_list)
diff --git a/Tools/Scripts/webkitpy/port/image_diff.py b/Tools/Scripts/webkitpy/port/image_diff.py
deleted file mode 100644
index 4f1b059b4..000000000
--- a/Tools/Scripts/webkitpy/port/image_diff.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu>, University of Szeged
-# Copyright (C) 2011, 2012 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:
-#
-# * 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 Google name 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.
-
-"""WebKit implementations of the Port interface."""
-
-import logging
-import re
-import time
-
-from webkitpy.port import server_process
-
-
-_log = logging.getLogger(__name__)
-
-
-class ImageDiffer(object):
- def __init__(self, port):
- self._port = port
- self._tolerance = None
- self._process = None
-
- def diff_image(self, expected_contents, actual_contents, tolerance):
- if tolerance != self._tolerance:
- self.stop()
- try:
- assert(expected_contents)
- assert(actual_contents)
- assert(tolerance is not None)
-
- if not self._process:
- self._start(tolerance)
- # Note that although we are handed 'old', 'new', ImageDiff wants 'new', 'old'.
- self._process.write('Content-Length: %d\n%sContent-Length: %d\n%s' % (
- len(actual_contents), actual_contents,
- len(expected_contents), expected_contents))
- return self._read()
- except IOError as exception:
- return (None, 0, "Failed to compute an image diff: %s" % str(exception))
-
- def _start(self, tolerance):
- command = [self._port._path_to_image_diff(), '--tolerance', str(tolerance)]
- environment = self._port.setup_environ_for_server('ImageDiff')
- self._process = self._port._server_process_constructor(self._port, 'ImageDiff', command, environment)
- self._process.start()
- self._tolerance = tolerance
-
- def _read(self):
- deadline = time.time() + 2.0
- output = None
- output_image = ""
-
- while not self._process.timed_out and not self._process.has_crashed():
- output = self._process.read_stdout_line(deadline)
- if self._process.timed_out or self._process.has_crashed() or not output:
- break
-
- if output.startswith('diff'): # This is the last line ImageDiff prints.
- break
-
- if output.startswith('Content-Length'):
- m = re.match('Content-Length: (\d+)', output)
- content_length = int(m.group(1))
- output_image = self._process.read_stdout(deadline, content_length)
- output = self._process.read_stdout_line(deadline)
- break
-
- stderr = self._process.pop_all_buffered_stderr()
- err_str = ''
- if stderr:
- err_str += "ImageDiff produced stderr output:\n" + stderr
- if self._process.timed_out:
- err_str += "ImageDiff timed out\n"
- if self._process.has_crashed():
- err_str += "ImageDiff crashed\n"
-
- # FIXME: There is no need to shut down the ImageDiff server after every diff.
- self._process.stop()
-
- diff_percent = 0
- if output and output.startswith('diff'):
- m = re.match('diff: (.+)% (passed|failed)', output)
- if m.group(2) == 'passed':
- return (None, 0, None)
- diff_percent = float(m.group(1))
-
- return (output_image, diff_percent, err_str or None)
-
- def stop(self):
- if self._process:
- self._process.stop()
- self._process = None
diff --git a/Tools/Scripts/webkitpy/port/image_diff_unittest.py b/Tools/Scripts/webkitpy/port/image_diff_unittest.py
deleted file mode 100644
index c06192eb0..000000000
--- a/Tools/Scripts/webkitpy/port/image_diff_unittest.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2012 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.
-
-"""Unit testing base class for Port implementations."""
-
-import unittest2 as unittest
-
-from webkitpy.port.server_process_mock import MockServerProcess
-from webkitpy.port.image_diff import ImageDiffer
-
-
-class FakePort(object):
- def __init__(self, server_process_output):
- self._server_process_constructor = lambda port, nm, cmd, env: MockServerProcess(lines=server_process_output)
-
- def _path_to_image_diff(self):
- return ''
-
- def setup_environ_for_server(self, nm):
- return None
-
-
-class TestImageDiffer(unittest.TestCase):
- def test_diff_image_failed(self):
- port = FakePort(['diff: 100% failed\n'])
- image_differ = ImageDiffer(port)
- self.assertEqual(image_differ.diff_image('foo', 'bar', 0.1), ('', 100.0, None))
-
- def test_diff_image_passed(self):
- port = FakePort(['diff: 0% passed\n'])
- image_differ = ImageDiffer(port)
- self.assertEqual(image_differ.diff_image('foo', 'bar', 0.1), (None, 0, None))
diff --git a/Tools/Scripts/webkitpy/port/leakdetector.py b/Tools/Scripts/webkitpy/port/leakdetector.py
deleted file mode 100644
index f46cd34e5..000000000
--- a/Tools/Scripts/webkitpy/port/leakdetector.py
+++ /dev/null
@@ -1,153 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-import logging
-import re
-
-from webkitpy.common.system.executive import ScriptError
-
-_log = logging.getLogger(__name__)
-
-
-# If other ports/platforms decide to support --leaks, we should see about sharing as much of this code as possible.
-# Right now this code is only used by Apple's MacPort.
-
-class LeakDetector(object):
- def __init__(self, port):
- # We should operate on a "platform" not a port here.
- self._port = port
- self._executive = port._executive
- self._filesystem = port._filesystem
-
- # We exclude the following reported leaks so they do not 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.
- def _types_to_exlude_from_leaks(self):
- # Currently we don't have any type excludes from OS leaks, but we will likely again in the future.
- return []
-
- def _callstacks_to_exclude_from_leaks(self):
- callstacks = [
- "Flash_EnforceLocalSecurity", # leaks in Flash plug-in code, rdar://problem/4449747
- "ScanFromString", # <http://code.google.com/p/angleproject/issues/detail?id=249> leak in ANGLE
- ]
- if self._port.is_snowleopard():
- callstacks += [
- "readMakerNoteProps", # <rdar://problem/7156432> leak in ImageIO
- "QTKitMovieControllerView completeUISetup", # <rdar://problem/7155156> leak in QTKit
- "getVMInitArgs", # <rdar://problem/7714444> leak in Java
- "Java_java_lang_System_initProperties", # <rdar://problem/7714465> leak in Java
- "glrCompExecuteKernel", # <rdar://problem/7815391> leak in graphics driver while using OpenGL
- "NSNumberFormatter getObjectValue:forString:errorDescription:", # <rdar://problem/7149350> Leak in NSNumberFormatter
- ]
- elif self._port.is_lion():
- callstacks += [
- "FigByteFlumeCustomURLCreateWithURL", # <rdar://problem/10461926> leak in CoreMedia
- "PDFPage\(PDFPageInternal\) pageLayoutIfAvail", # <rdar://problem/10462055> leak in PDFKit
- "SecTransformExecute", # <rdar://problem/10470667> leak in Security.framework
- "_NSCopyStyleRefForFocusRingStyleClip", # <rdar://problem/10462031> leak in AppKit
- ]
- return callstacks
-
- def _leaks_args(self, pid):
- leaks_args = []
- for callstack in self._callstacks_to_exclude_from_leaks():
- leaks_args += ['--exclude-callstack=%s' % callstack]
- for excluded_type in self._types_to_exlude_from_leaks():
- leaks_args += ['--exclude-type=%s' % excluded_type]
- leaks_args.append(pid)
- return leaks_args
-
- def _parse_leaks_output(self, leaks_output):
- _, count, bytes = re.search(r'Process (?P<pid>\d+): (?P<count>\d+) leaks? for (?P<bytes>\d+) total', leaks_output).groups()
- excluded_match = re.search(r'(?P<excluded>\d+) leaks? excluded', leaks_output)
- excluded = excluded_match.group('excluded') if excluded_match else 0
- return int(count), int(excluded), int(bytes)
-
- def leaks_files_in_directory(self, directory):
- return self._filesystem.glob(self._filesystem.join(directory, "*-leaks.txt"))
-
- def leaks_file_name(self, process_name, process_pid):
- # We include the number of files this worker has already written in the name to prevent overwritting previous leak results..
- return "%s-%s-leaks.txt" % (process_name, process_pid)
-
- def count_total_bytes_and_unique_leaks(self, leak_files):
- merge_depth = 5 # ORWT had a --merge-leak-depth argument, but that seems out of scope for the run-webkit-tests tool.
- args = [
- '--merge-depth',
- merge_depth,
- ] + leak_files
- try:
- parse_malloc_history_output = self._port._run_script("parse-malloc-history", args, include_configuration_arguments=False)
- except ScriptError, e:
- _log.warn("Failed to parse leaks output: %s" % e.message_with_output())
- return
-
- # total: 5,888 bytes (0 bytes excluded).
- unique_leak_count = len(re.findall(r'^(\d*)\scalls', parse_malloc_history_output, re.MULTILINE))
- total_bytes_string = re.search(r'^total\:\s(.+)\s\(', parse_malloc_history_output, re.MULTILINE).group(1)
- return (total_bytes_string, unique_leak_count)
-
- def count_total_leaks(self, leak_file_paths):
- total_leaks = 0
- for leak_file_path in leak_file_paths:
- # Leaks have been seen to include non-utf8 data, so we use read_binary_file.
- # See https://bugs.webkit.org/show_bug.cgi?id=71112.
- leaks_output = self._filesystem.read_binary_file(leak_file_path)
- count, _, _ = self._parse_leaks_output(leaks_output)
- total_leaks += count
- return total_leaks
-
- def check_for_leaks(self, process_name, process_pid):
- _log.debug("Checking for leaks in %s" % process_name)
- try:
- # Oddly enough, run-leaks (or the underlying leaks tool) does not seem to always output utf-8,
- # thus we pass decode_output=False. Without this code we've seen errors like:
- # "UnicodeDecodeError: 'utf8' codec can't decode byte 0x88 in position 779874: unexpected code byte"
- leaks_output = self._port._run_script("run-leaks", self._leaks_args(process_pid), include_configuration_arguments=False, decode_output=False)
- except ScriptError, e:
- _log.warn("Failed to run leaks tool: %s" % e.message_with_output())
- return
-
- # FIXME: We end up parsing this output 3 times. Once here and twice for summarizing.
- count, excluded, bytes = self._parse_leaks_output(leaks_output)
- adjusted_count = count - excluded
- if not adjusted_count:
- return
-
- leaks_filename = self.leaks_file_name(process_name, process_pid)
- leaks_output_path = self._filesystem.join(self._port.results_directory(), leaks_filename)
- self._filesystem.write_binary_file(leaks_output_path, leaks_output)
-
- # FIXME: Ideally we would not be logging from the worker process, but rather pass the leak
- # information back to the manager and have it log.
- if excluded:
- _log.info("%s leaks (%s bytes including %s excluded leaks) were found, details in %s" % (adjusted_count, bytes, excluded, leaks_output_path))
- else:
- _log.info("%s leaks (%s bytes) were found, details in %s" % (count, bytes, leaks_output_path))
diff --git a/Tools/Scripts/webkitpy/port/leakdetector_unittest.py b/Tools/Scripts/webkitpy/port/leakdetector_unittest.py
deleted file mode 100644
index d81f2b211..000000000
--- a/Tools/Scripts/webkitpy/port/leakdetector_unittest.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.port.leakdetector import LeakDetector
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.executive_mock import MockExecutive
-
-
-class LeakDetectorTest(unittest.TestCase):
- def _mock_port(self):
- class MockPort(object):
- def __init__(self):
- self._filesystem = MockFileSystem()
- self._executive = MockExecutive()
-
- return MockPort()
-
- def _make_detector(self):
- return LeakDetector(self._mock_port())
-
- def test_leaks_args(self):
- detector = self._make_detector()
- detector._callstacks_to_exclude_from_leaks = lambda: ['foo bar', 'BAZ']
- detector._types_to_exlude_from_leaks = lambda: ['abcdefg', 'hi jklmno']
- expected_args = ['--exclude-callstack=foo bar', '--exclude-callstack=BAZ', '--exclude-type=abcdefg', '--exclude-type=hi jklmno', 1234]
- self.assertEqual(detector._leaks_args(1234), expected_args)
-
- example_leaks_output = """Process 5122: 663744 nodes malloced for 78683 KB
-Process 5122: 337301 leaks for 6525216 total leaked bytes.
-Leak: 0x38cb600 size=3072 zone: DefaultMallocZone_0x1d94000 instance of 'NSCFData', type ObjC, implemented in Foundation
- 0xa033f0b8 0x01001384 0x00000b3a 0x00000b3a ..3.....:...:...
- 0x00000000 0x038cb620 0x00000000 0x00000000 .... ...........
- 0x00000000 0x21000000 0x726c6468 0x00000000 .......!hdlr....
- 0x00000000 0x7269646d 0x6c707061 0x00000000 ....mdirappl....
- 0x00000000 0x04000000 0x736c69c1 0x00000074 .........ilst...
- 0x6f74a923 0x0000006f 0x7461641b 0x00000061 #.too....data...
- 0x00000001 0x76614c00 0x2e323566 0x302e3236 .....Lavf52.62.0
- 0x37000000 0x6d616ea9 0x2f000000 0x61746164 ...7.nam.../data
- ...
-Leak: 0x2a9c960 size=288 zone: DefaultMallocZone_0x1d94000
- 0x09a1cc47 0x1bda8560 0x3d472cd1 0xfbe9bccd G...`....,G=....
- 0x8bcda008 0x9e972a91 0xa892cf63 0x2448bdb0 .....*..c.....H$
- 0x4736fc34 0xdbe2d94e 0x25f56688 0x839402a4 4.6GN....f.%....
- 0xd12496b3 0x59c40c12 0x8cfcab2a 0xd20ef9c4 ..$....Y*.......
- 0xe7c56b1b 0x5835af45 0xc69115de 0x6923e4bb .k..E.5X......#i
- 0x86f15553 0x15d40fa9 0x681288a4 0xc33298a9 SU.........h..2.
- 0x439bb535 0xc4fc743d 0x7dfaaff8 0x2cc49a4a 5..C=t.....}J..,
- 0xdd119df8 0x7e086821 0x3d7d129e 0x2e1b1547 ....!h.~..}=G...
- ...
-Leak: 0x25102fe0 size=176 zone: DefaultMallocZone_0x1d94000 string 'NSException Data'
-"""
-
- example_leaks_output_with_exclusions = """
-Process 57064: 865808 nodes malloced for 81032 KB
-Process 57064: 282 leaks for 21920 total leaked bytes.
-Leak: 0x7fc506023960 size=576 zone: DefaultMallocZone_0x107c29000 URLConnectionLoader::LoaderConnectionEventQueue C++ CFNetwork
- 0x73395460 0x00007fff 0x7488af40 0x00007fff `T9s....@..t....
- 0x73395488 0x00007fff 0x46eecd74 0x0001ed83 .T9s....t..F....
- 0x0100000a 0x00000000 0x7488bfc0 0x00007fff ...........t....
- 0x00000000 0x00000000 0x46eecd8b 0x0001ed83 ...........F....
- 0x00000000 0x00000000 0x00000000 0x00000000 ................
- 0x00000000 0x00000000 0x46eecda3 0x0001ed83 ...........F....
- 0x00000000 0x00000000 0x00000000 0x00000000 ................
- 0x00000000 0x00000000 0x46eecdbc 0x0001ed83 ...........F....
- ...
-Leak: 0x7fc506025980 size=432 zone: DefaultMallocZone_0x107c29000 URLConnectionInstanceData CFType CFNetwork
- 0x74862b28 0x00007fff 0x00012b80 0x00000001 (+.t.....+......
- 0x73395310 0x00007fff 0x733953f8 0x00007fff .S9s.....S9s....
- 0x4d555458 0x00000000 0x00000000 0x00002068 XTUM........h ..
- 0x00000000 0x00000000 0x00000b00 0x00000b00 ................
- 0x00000000 0x00000000 0x060259b8 0x00007fc5 .........Y......
- 0x060259bc 0x00007fc5 0x00000000 0x00000000 .Y..............
- 0x73395418 0x00007fff 0x06025950 0x00007fc5 .T9s....PY......
- 0x73395440 0x00007fff 0x00005013 0x00000001 @T9s.....P......
- ...
-
-
-Binary Images:
- 0x107ac2000 - 0x107b4aff7 +DumpRenderTree (??? - ???) <5694BE03-A60A-30B2-9D40-27CFFCFB88EE> /Volumes/Data/WebKit-BuildSlave/lion-intel-leaks/build/WebKitBuild/Debug/DumpRenderTree
- 0x107c2f000 - 0x107c58fff +libWebCoreTestSupport.dylib (535.8.0 - compatibility 1.0.0) <E4F7A13E-5807-30F7-A399-62F8395F9106> /Volumes/Data/WebKit-BuildSlave/lion-intel-leaks/build/WebKitBuild/Debug/libWebCoreTestSupport.dylib
-17 leaks excluded (not printed)
-"""
-
- def test_parse_leaks_output(self):
- self.assertEqual(self._make_detector()._parse_leaks_output(self.example_leaks_output), (337301, 0, 6525216))
- self.assertEqual(self._make_detector()._parse_leaks_output(self.example_leaks_output_with_exclusions), (282, 17, 21920))
-
- def test_leaks_files_in_directory(self):
- detector = self._make_detector()
- self.assertEqual(detector.leaks_files_in_directory('/bogus-directory'), [])
- detector._filesystem = MockFileSystem({
- '/mock-results/DumpRenderTree-1234-leaks.txt': '',
- '/mock-results/DumpRenderTree-23423-leaks.txt': '',
- '/mock-results/DumpRenderTree-823-leaks.txt': '',
- })
- self.assertEqual(len(detector.leaks_files_in_directory('/mock-results')), 3)
-
- def test_count_total_bytes_and_unique_leaks(self):
- detector = self._make_detector()
-
- def mock_run_script(name, args, include_configuration_arguments=False):
- print "MOCK _run_script: %s %s" % (name, args)
- return """1 calls for 16 bytes: -[NSURLRequest mutableCopyWithZone:] | +[NSObject(NSObject) allocWithZone:] | _internal_class_createInstanceFromZone | calloc | malloc_zone_calloc
-
-147 calls for 9,408 bytes: _CFRuntimeCreateInstance | _ZN3WTF24StringWrapperCFAllocatorL8allocateElmPv StringImplCF.cpp:67 | WTF::fastMalloc(unsigned long) FastMalloc.cpp:268 | malloc | malloc_zone_malloc
-
-total: 5,888 bytes (0 bytes excluded)."""
- detector._port._run_script = mock_run_script
-
- leak_files = ['/mock-results/DumpRenderTree-1234-leaks.txt', '/mock-results/DumpRenderTree-1235-leaks.txt']
- expected_stdout = "MOCK _run_script: parse-malloc-history ['--merge-depth', 5, '/mock-results/DumpRenderTree-1234-leaks.txt', '/mock-results/DumpRenderTree-1235-leaks.txt']\n"
- results_tuple = OutputCapture().assert_outputs(self, detector.count_total_bytes_and_unique_leaks, [leak_files], expected_stdout=expected_stdout)
- self.assertEqual(results_tuple, ("5,888 bytes", 2))
-
- def test_count_total_leaks(self):
- detector = self._make_detector()
- detector._filesystem = MockFileSystem({
- # The \xff is some non-utf8 characters to make sure we don't blow up trying to parse the file.
- '/mock-results/DumpRenderTree-1234-leaks.txt': '\xff\nProcess 1234: 12 leaks for 40 total leaked bytes.\n\xff\n',
- '/mock-results/DumpRenderTree-23423-leaks.txt': 'Process 1235: 12341 leaks for 27934 total leaked bytes.\n',
- '/mock-results/DumpRenderTree-823-leaks.txt': 'Process 12356: 23412 leaks for 18 total leaked bytes.\n',
- })
- leak_file_paths = ['/mock-results/DumpRenderTree-1234-leaks.txt', '/mock-results/DumpRenderTree-23423-leaks.txt', '/mock-results/DumpRenderTree-823-leaks.txt']
- self.assertEqual(detector.count_total_leaks(leak_file_paths), 35765)
diff --git a/Tools/Scripts/webkitpy/port/mac.py b/Tools/Scripts/webkitpy/port/mac.py
deleted file mode 100644
index 0b24ce70e..000000000
--- a/Tools/Scripts/webkitpy/port/mac.py
+++ /dev/null
@@ -1,305 +0,0 @@
-# Copyright (C) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2012, 2013 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:
-#
-# * 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 Google name 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.
-
-import logging
-import os
-import time
-
-from webkitpy.common.system.crashlogs import CrashLogs
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.port.apple import ApplePort
-from webkitpy.port.leakdetector import LeakDetector
-
-
-_log = logging.getLogger(__name__)
-
-
-class MacPort(ApplePort):
- port_name = "mac"
-
- VERSION_FALLBACK_ORDER = ['mac-snowleopard', 'mac-lion', 'mac-mountainlion']
-
- ARCHITECTURES = ['x86_64', 'x86']
-
- def __init__(self, host, port_name, **kwargs):
- ApplePort.__init__(self, host, port_name, **kwargs)
- self._architecture = self.get_option('architecture')
-
- if not self._architecture:
- self._architecture = 'x86_64'
-
- self._leak_detector = LeakDetector(self)
- if self.get_option("leaks"):
- # DumpRenderTree slows down noticably if we run more than about 1000 tests in a batch
- # with MallocStackLogging enabled.
- self.set_option_default("batch_size", 1000)
-
- def default_timeout_ms(self):
- if self.get_option('guard_malloc'):
- return 350 * 1000
- return super(MacPort, self).default_timeout_ms()
-
- def supports_per_test_timeout(self):
- return True
-
- def _build_driver_flags(self):
- return ['ARCHS=i386'] if self.architecture() == 'x86' else []
-
- def should_retry_crashes(self):
- # On Apple Mac, we retry crashes due to https://bugs.webkit.org/show_bug.cgi?id=82233
- return True
-
- def default_baseline_search_path(self):
- name = self._name.replace('-wk2', '')
- if name.endswith(self.FUTURE_VERSION):
- fallback_names = [self.port_name]
- else:
- fallback_names = self.VERSION_FALLBACK_ORDER[self.VERSION_FALLBACK_ORDER.index(name):-1] + [self.port_name]
- if self.get_option('webkit_test_runner'):
- fallback_names = [self._wk2_port_name(), 'wk2'] + fallback_names
- return map(self._webkit_baseline_path, fallback_names)
-
- def _port_specific_expectations_files(self):
- return list(reversed([self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in self.baseline_search_path()]))
-
- def setup_environ_for_server(self, server_name=None):
- env = super(MacPort, self).setup_environ_for_server(server_name)
- if server_name == self.driver_name():
- if self.get_option('leaks'):
- env['MallocStackLogging'] = '1'
- if self.get_option('guard_malloc'):
- env['DYLD_INSERT_LIBRARIES'] = '/usr/lib/libgmalloc.dylib:' + self._build_path("libWebCoreTestShim.dylib")
- else:
- env['DYLD_INSERT_LIBRARIES'] = self._build_path("libWebCoreTestShim.dylib")
- env['XML_CATALOG_FILES'] = '' # work around missing /etc/catalog <rdar://problem/4292995>
- return env
-
- def operating_system(self):
- return 'mac'
-
- # Belongs on a Platform object.
- def is_snowleopard(self):
- return self._version == "snowleopard"
-
- # Belongs on a Platform object.
- def is_lion(self):
- return self._version == "lion"
-
- def default_child_processes(self):
- if self._version == "snowleopard":
- _log.warning("Cannot run tests in parallel on Snow Leopard due to rdar://problem/10621525.")
- return 1
-
- default_count = super(MacPort, self).default_child_processes()
-
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=95906 With too many WebProcess WK2 tests get stuck in resource contention.
- # To alleviate the issue reduce the number of running processes
- # Anecdotal evidence suggests that a 4 core/8 core logical machine may run into this, but that a 2 core/4 core logical machine does not.
- should_throttle_for_wk2 = self.get_option('webkit_test_runner') and default_count > 4
- # We also want to throttle for leaks bots.
- if should_throttle_for_wk2 or self.get_option('leaks'):
- default_count = int(.75 * default_count)
-
- # Make sure we have enough ram to support that many instances:
- total_memory = self.host.platform.total_bytes_memory()
- if total_memory:
- bytes_per_drt = 256 * 1024 * 1024 # Assume each DRT needs 256MB to run.
- overhead = 2048 * 1024 * 1024 # Assume we need 2GB free for the O/S
- supportable_instances = max((total_memory - overhead) / bytes_per_drt, 1) # Always use one process, even if we don't have space for it.
- if supportable_instances < default_count:
- _log.warning("This machine could support %s child processes, but only has enough memory for %s." % (default_count, supportable_instances))
- else:
- _log.warning("Cannot determine available memory for child processes, using default child process count of %s." % default_count)
- supportable_instances = default_count
- return min(supportable_instances, default_count)
-
- def _build_java_test_support(self):
- java_tests_path = self._filesystem.join(self.layout_tests_dir(), "java")
- build_java = [self.make_command(), "-C", java_tests_path]
- if self._executive.run_command(build_java, return_exit_code=True): # Paths are absolute, so we don't need to set a cwd.
- _log.error("Failed to build Java support files: %s" % build_java)
- return False
- return True
-
- def check_for_leaks(self, process_name, process_pid):
- if not self.get_option('leaks'):
- return
- # We could use http://code.google.com/p/psutil/ to get the process_name from the pid.
- self._leak_detector.check_for_leaks(process_name, process_pid)
-
- def print_leaks_summary(self):
- if not self.get_option('leaks'):
- return
- # We're in the manager process, so the leak detector will not have a valid list of leak files.
- # FIXME: This is a hack, but we don't have a better way to get this information from the workers yet.
- # FIXME: This will include too many leaks in subsequent runs until the results directory is cleared!
- leaks_files = self._leak_detector.leaks_files_in_directory(self.results_directory())
- if not leaks_files:
- return
- total_bytes_string, unique_leaks = self._leak_detector.count_total_bytes_and_unique_leaks(leaks_files)
- total_leaks = self._leak_detector.count_total_leaks(leaks_files)
- _log.info("%s total leaks found for a total of %s!" % (total_leaks, total_bytes_string))
- _log.info("%s unique leaks found!" % unique_leaks)
-
- def _check_port_build(self):
- return self.get_option('nojava') or self._build_java_test_support()
-
- def _path_to_webcore_library(self):
- return self._build_path('WebCore.framework/Versions/A/WebCore')
-
- def show_results_html_file(self, results_filename):
- # We don't use self._run_script() because we don't want to wait for the script
- # to exit and we want the output to show up on stdout in case there are errors
- # launching the browser.
- self._executive.popen([self.path_to_script('run-safari')] + self._arguments_for_configuration() + ['--no-saved-state', '-NSOpen', results_filename],
- cwd=self.webkit_base(), stdout=file(os.devnull), stderr=file(os.devnull))
-
- # FIXME: The next two routines turn off the http locking in order
- # to work around failures on the bots caused when the slave restarts.
- # See https://bugs.webkit.org/show_bug.cgi?id=64886 for more info.
- # The proper fix is to make sure the slave is actually stopping NRWT
- # properly on restart. Note that by removing the lock file and not waiting,
- # the result should be that if there is a web server already running,
- # it'll be killed and this one will be started in its place; this
- # may lead to weird things happening in the other run. However, I don't
- # think we're (intentionally) actually running multiple runs concurrently
- # on any Mac bots.
-
- def acquire_http_lock(self):
- pass
-
- def release_http_lock(self):
- pass
-
- def sample_file_path(self, name, pid):
- return self._filesystem.join(self.results_directory(), "{0}-{1}-sample.txt".format(name, pid))
-
- def _get_crash_log(self, name, pid, stdout, stderr, newer_than, time_fn=None, sleep_fn=None, wait_for_log=True):
- # Note that we do slow-spin here and wait, since it appears the time
- # ReportCrash takes to actually write and flush the file varies when there are
- # lots of simultaneous crashes going on.
- # FIXME: Should most of this be moved into CrashLogs()?
- time_fn = time_fn or time.time
- sleep_fn = sleep_fn or time.sleep
- crash_log = ''
- crash_logs = CrashLogs(self.host)
- now = time_fn()
- # FIXME: delete this after we're sure this code is working ...
- _log.debug('looking for crash log for %s:%s' % (name, str(pid)))
- deadline = now + 5 * int(self.get_option('child_processes', 1))
- while not crash_log and now <= deadline:
- crash_log = crash_logs.find_newest_log(name, pid, include_errors=True, newer_than=newer_than)
- if not wait_for_log:
- break
- if not crash_log or not [line for line in crash_log.splitlines() if not line.startswith('ERROR')]:
- sleep_fn(0.1)
- now = time_fn()
-
- if not crash_log:
- return (stderr, None)
- return (stderr, crash_log)
-
- def look_for_new_crash_logs(self, crashed_processes, start_time):
- """Since crash logs can take a long time to be written out if the system is
- under stress do a second pass at the end of the test run.
-
- crashes: test_name -> pid, process_name tuple of crashed process
- start_time: time the tests started at. We're looking for crash
- logs after that time.
- """
- crash_logs = {}
- for (test_name, process_name, pid) in crashed_processes:
- # Passing None for output. This is a second pass after the test finished so
- # if the output had any logging we would have already collected it.
- crash_log = self._get_crash_log(process_name, pid, None, None, start_time, wait_for_log=False)[1]
- if not crash_log:
- continue
- crash_logs[test_name] = crash_log
- return crash_logs
-
- def look_for_new_samples(self, unresponsive_processes, start_time):
- sample_files = {}
- for (test_name, process_name, pid) in unresponsive_processes:
- sample_file = self.sample_file_path(process_name, pid)
- if not self._filesystem.isfile(sample_file):
- continue
- sample_files[test_name] = sample_file
- return sample_files
-
- def sample_process(self, name, pid):
- try:
- hang_report = self.sample_file_path(name, pid)
- self._executive.run_command([
- "/usr/bin/sample",
- pid,
- 10,
- 10,
- "-file",
- hang_report,
- ])
- except ScriptError as e:
- _log.warning('Unable to sample process:' + str(e))
-
- def _path_to_helper(self):
- binary_name = 'LayoutTestHelper'
- return self._build_path(binary_name)
-
- def start_helper(self):
- helper_path = self._path_to_helper()
- if helper_path:
- _log.debug("Starting layout helper %s" % helper_path)
- self._helper = self._executive.popen([helper_path],
- stdin=self._executive.PIPE, stdout=self._executive.PIPE, stderr=None)
- is_ready = self._helper.stdout.readline()
- if not is_ready.startswith('ready'):
- _log.error("LayoutTestHelper failed to be ready")
-
- def stop_helper(self):
- if self._helper:
- _log.debug("Stopping LayoutTestHelper")
- try:
- self._helper.stdin.write("x\n")
- self._helper.stdin.close()
- self._helper.wait()
- except IOError, e:
- _log.debug("IOError raised while stopping helper: %s" % str(e))
- self._helper = None
-
- def make_command(self):
- return self.xcrun_find('make', '/usr/bin/make')
-
- def nm_command(self):
- return self.xcrun_find('nm', 'nm')
-
- def xcrun_find(self, command, fallback):
- try:
- return self._executive.run_command(['xcrun', '-find', command]).rstrip()
- except ScriptError:
- _log.warn("xcrun failed; falling back to '%s'." % fallback)
- return fallback
diff --git a/Tools/Scripts/webkitpy/port/mac_unittest.py b/Tools/Scripts/webkitpy/port/mac_unittest.py
deleted file mode 100644
index e58904a1a..000000000
--- a/Tools/Scripts/webkitpy/port/mac_unittest.py
+++ /dev/null
@@ -1,257 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.port.mac import MacPort
-from webkitpy.port import port_testcase
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions
-from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2, MockProcess, ScriptError
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-
-class MacTest(port_testcase.PortTestCase):
- os_name = 'mac'
- os_version = 'lion'
- port_name = 'mac-lion'
- port_maker = MacPort
-
- def assert_skipped_file_search_paths(self, port_name, expected_paths, use_webkit2=False):
- port = self.make_port(port_name=port_name, options=MockOptions(webkit_test_runner=use_webkit2))
- self.assertEqual(port._skipped_file_search_paths(), expected_paths)
-
- def test_default_timeout_ms(self):
- super(MacTest, self).test_default_timeout_ms()
- self.assertEqual(self.make_port(options=MockOptions(guard_malloc=True)).default_timeout_ms(), 350000)
-
-
- example_skipped_file = u"""
-# <rdar://problem/5647952> fast/events/mouseout-on-window.html needs mac DRT to issue mouse out events
-fast/events/mouseout-on-window.html
-
-# <rdar://problem/5643675> window.scrollTo scrolls a window with no scrollbars
-fast/events/attempt-scroll-with-no-scrollbars.html
-
-# see bug <rdar://problem/5646437> REGRESSION (r28015): svg/batik/text/smallFonts fails
-svg/batik/text/smallFonts.svg
-
-# Java tests don't work on WK2
-java/
-"""
- example_skipped_tests = [
- "fast/events/mouseout-on-window.html",
- "fast/events/attempt-scroll-with-no-scrollbars.html",
- "svg/batik/text/smallFonts.svg",
- "java",
- ]
-
- def test_tests_from_skipped_file_contents(self):
- port = self.make_port()
- self.assertEqual(port._tests_from_skipped_file_contents(self.example_skipped_file), self.example_skipped_tests)
-
- def assert_name(self, port_name, os_version_string, expected):
- host = MockSystemHost(os_name='mac', os_version=os_version_string)
- port = self.make_port(host=host, port_name=port_name)
- self.assertEqual(expected, port.name())
-
- def test_tests_for_other_platforms(self):
- platforms = ['mac', 'chromium-linux', 'mac-snowleopard']
- port = self.make_port(port_name='mac-snowleopard')
- platform_dir_paths = map(port._webkit_baseline_path, platforms)
- # Replace our empty mock file system with one which has our expected platform directories.
- port._filesystem = MockFileSystem(dirs=platform_dir_paths)
-
- dirs_to_skip = port._tests_for_other_platforms()
- self.assertIn('platform/chromium-linux', dirs_to_skip)
- self.assertNotIn('platform/mac', dirs_to_skip)
- self.assertNotIn('platform/mac-snowleopard', dirs_to_skip)
-
- def test_version(self):
- port = self.make_port()
- self.assertTrue(port.version())
-
- def test_versions(self):
- # Note: these tests don't need to be exhaustive as long as we get path coverage.
- self.assert_name('mac', 'snowleopard', 'mac-snowleopard')
- self.assert_name('mac-snowleopard', 'leopard', 'mac-snowleopard')
- self.assert_name('mac-snowleopard', 'lion', 'mac-snowleopard')
-
- self.assert_name('mac', 'lion', 'mac-lion')
- self.assert_name('mac-lion', 'lion', 'mac-lion')
-
- self.assert_name('mac', 'mountainlion', 'mac-mountainlion')
- self.assert_name('mac-mountainlion', 'lion', 'mac-mountainlion')
-
- self.assert_name('mac', 'future', 'mac-future')
- self.assert_name('mac-future', 'future', 'mac-future')
-
- self.assertRaises(AssertionError, self.assert_name, 'mac-tiger', 'leopard', 'mac-leopard')
-
- def test_setup_environ_for_server(self):
- port = self.make_port(options=MockOptions(leaks=True, guard_malloc=True))
- env = port.setup_environ_for_server(port.driver_name())
- self.assertEqual(env['MallocStackLogging'], '1')
- self.assertEqual(env['DYLD_INSERT_LIBRARIES'], '/usr/lib/libgmalloc.dylib:/mock-build/libWebCoreTestShim.dylib')
-
- def _assert_search_path(self, port_name, baseline_path, search_paths, use_webkit2=False):
- port = self.make_port(port_name=port_name, options=MockOptions(webkit_test_runner=use_webkit2))
- absolute_search_paths = map(port._webkit_baseline_path, search_paths)
- self.assertEqual(port.baseline_path(), port._webkit_baseline_path(baseline_path))
- self.assertEqual(port.baseline_search_path(), absolute_search_paths)
-
- def test_baseline_search_path(self):
- # Note that we don't need total coverage here, just path coverage, since this is all data driven.
- self._assert_search_path('mac-snowleopard', 'mac-snowleopard', ['mac-snowleopard', 'mac-lion', 'mac'])
- self._assert_search_path('mac-lion', 'mac-lion', ['mac-lion', 'mac'])
- self._assert_search_path('mac-mountainlion', 'mac', ['mac'])
- self._assert_search_path('mac-future', 'mac', ['mac'])
- self._assert_search_path('mac-snowleopard', 'mac-wk2', ['mac-wk2', 'wk2', 'mac-snowleopard', 'mac-lion', 'mac'], use_webkit2=True)
- self._assert_search_path('mac-lion', 'mac-wk2', ['mac-wk2', 'wk2', 'mac-lion', 'mac'], use_webkit2=True)
- self._assert_search_path('mac-mountainlion', 'mac-wk2', ['mac-wk2', 'wk2', 'mac'], use_webkit2=True)
- self._assert_search_path('mac-future', 'mac-wk2', ['mac-wk2', 'wk2', 'mac'], use_webkit2=True)
-
- def test_show_results_html_file(self):
- port = self.make_port()
- # Delay setting a should_log executive to avoid logging from MacPort.__init__.
- port._executive = MockExecutive(should_log=True)
- expected_logs = "MOCK popen: ['Tools/Scripts/run-safari', '--release', '--no-saved-state', '-NSOpen', 'test.html'], cwd=/mock-checkout\n"
- OutputCapture().assert_outputs(self, port.show_results_html_file, ["test.html"], expected_logs=expected_logs)
-
- def test_operating_system(self):
- self.assertEqual('mac', self.make_port().operating_system())
-
- def test_default_child_processes(self):
- port = self.make_port(port_name='mac-lion')
- # MockPlatformInfo only has 2 mock cores. The important part is that 2 > 1.
- self.assertEqual(port.default_child_processes(), 2)
-
- bytes_for_drt = 200 * 1024 * 1024
- port.host.platform.total_bytes_memory = lambda: bytes_for_drt
- expected_logs = "This machine could support 2 child processes, but only has enough memory for 1.\n"
- child_processes = OutputCapture().assert_outputs(self, port.default_child_processes, (), expected_logs=expected_logs)
- self.assertEqual(child_processes, 1)
-
- # Make sure that we always use one process, even if we don't have the memory for it.
- port.host.platform.total_bytes_memory = lambda: bytes_for_drt - 1
- expected_logs = "This machine could support 2 child processes, but only has enough memory for 1.\n"
- child_processes = OutputCapture().assert_outputs(self, port.default_child_processes, (), expected_logs=expected_logs)
- self.assertEqual(child_processes, 1)
-
- # SnowLeopard has a CFNetwork bug which causes crashes if we execute more than one copy of DRT at once.
- port = self.make_port(port_name='mac-snowleopard')
- expected_logs = "Cannot run tests in parallel on Snow Leopard due to rdar://problem/10621525.\n"
- child_processes = OutputCapture().assert_outputs(self, port.default_child_processes, (), expected_logs=expected_logs)
- self.assertEqual(child_processes, 1)
-
- def test_get_crash_log(self):
- # Mac crash logs are tested elsewhere, so here we just make sure we don't crash.
- def fake_time_cb():
- times = [0, 20, 40]
- return lambda: times.pop(0)
- port = self.make_port(port_name='mac-snowleopard')
- port._get_crash_log('DumpRenderTree', 1234, '', '', 0,
- time_fn=fake_time_cb(), sleep_fn=lambda delay: None)
-
- def test_helper_starts(self):
- host = MockSystemHost(MockExecutive())
- port = self.make_port(host)
- oc = OutputCapture()
- oc.capture_output()
- host.executive._proc = MockProcess('ready\n')
- port.start_helper()
- port.stop_helper()
- oc.restore_output()
-
- # make sure trying to stop the helper twice is safe.
- port.stop_helper()
-
- def test_helper_fails_to_start(self):
- host = MockSystemHost(MockExecutive())
- port = self.make_port(host)
- oc = OutputCapture()
- oc.capture_output()
- port.start_helper()
- port.stop_helper()
- oc.restore_output()
-
- def test_helper_fails_to_stop(self):
- host = MockSystemHost(MockExecutive())
- host.executive._proc = MockProcess()
-
- def bad_waiter():
- raise IOError('failed to wait')
- host.executive._proc.wait = bad_waiter
-
- port = self.make_port(host)
- oc = OutputCapture()
- oc.capture_output()
- port.start_helper()
- port.stop_helper()
- oc.restore_output()
-
- def test_sample_process(self):
-
- def logging_run_command(args):
- print args
-
- port = self.make_port()
- port._executive = MockExecutive2(run_command_fn=logging_run_command)
- expected_stdout = "['/usr/bin/sample', 42, 10, 10, '-file', '/mock-build/layout-test-results/test-42-sample.txt']\n"
- OutputCapture().assert_outputs(self, port.sample_process, args=['test', 42], expected_stdout=expected_stdout)
-
- def test_sample_process_throws_exception(self):
-
- def throwing_run_command(args):
- raise ScriptError("MOCK script error")
-
- port = self.make_port()
- port._executive = MockExecutive2(run_command_fn=throwing_run_command)
- OutputCapture().assert_outputs(self, port.sample_process, args=['test', 42])
-
- def test_32bit(self):
- port = self.make_port(options=MockOptions(architecture='x86'))
-
- def run_script(script, args=None, env=None):
- self.args = args
-
- port._run_script = run_script
- self.assertEqual(port.architecture(), 'x86')
- port._build_driver()
- self.assertEqual(self.args, ['ARCHS=i386'])
-
- def test_64bit(self):
- # Apple Mac port is 64-bit by default
- port = self.make_port()
- self.assertEqual(port.architecture(), 'x86_64')
-
- def run_script(script, args=None, env=None):
- self.args = args
-
- port._run_script = run_script
- port._build_driver()
- self.assertEqual(self.args, [])
diff --git a/Tools/Scripts/webkitpy/port/mock_drt.py b/Tools/Scripts/webkitpy/port/mock_drt.py
deleted file mode 100644
index 00591f13a..000000000
--- a/Tools/Scripts/webkitpy/port/mock_drt.py
+++ /dev/null
@@ -1,299 +0,0 @@
-# Copyright (c) 2012 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 Google name 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 an implementation of the Port interface that overrides other
-ports and changes the Driver binary to "MockDRT".
-
-The MockDRT objects emulate what a real DRT would do. In particular, they
-return the output a real DRT would return for a given test, assuming that
-test actually passes (except for reftests, which currently cause the
-MockDRT to crash).
-"""
-
-import base64
-import logging
-import optparse
-import os
-import sys
-
-# Since we execute this script directly as part of the unit tests, we need to ensure
-# that Tools/Scripts is in sys.path for the next imports to work correctly.
-script_dir = os.path.dirname(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
-if script_dir not in sys.path:
- sys.path.append(script_dir)
-
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.port.driver import DriverInput, DriverOutput, DriverProxy
-from webkitpy.port.factory import PortFactory
-
-_log = logging.getLogger(__name__)
-
-
-class MockDRTPort(object):
- port_name = 'mock'
-
- @classmethod
- def determine_full_port_name(cls, host, options, port_name):
- return port_name
-
- def __init__(self, host, port_name, **kwargs):
- self.__delegate = PortFactory(host).get(port_name.replace('mock-', ''), **kwargs)
-
- def __getattr__(self, name):
- return getattr(self.__delegate, name)
-
- def check_build(self, needs_http):
- return True
-
- def check_sys_deps(self, needs_http):
- return True
-
- def create_driver(self, worker_number, no_timeout=False):
- # The magic of the MockDRTPort is that we create a driver that has a
- # cmd_line() method monkey-patched to invoke this script instead of DRT.
- return DriverProxy(self, worker_number, self._mocked_driver_maker, pixel_tests=self.get_option('pixel_tests'), no_timeout=no_timeout)
-
- @staticmethod
- def _mocked_driver_maker(port, worker_number, pixel_tests, no_timeout=False):
- path_to_this_file = port.host.filesystem.abspath(__file__.replace('.pyc', '.py'))
- driver = port.__delegate._driver_class()(port, worker_number, pixel_tests, no_timeout)
- driver.cmd_line = port._overriding_cmd_line(driver.cmd_line,
- port.__delegate._path_to_driver(),
- sys.executable,
- path_to_this_file,
- port.__delegate.name())
- return driver
-
- @staticmethod
- def _overriding_cmd_line(original_cmd_line, driver_path, python_exe, this_file, port_name):
- def new_cmd_line(pixel_tests, per_test_args):
- cmd_line = original_cmd_line(pixel_tests, per_test_args)
- index = cmd_line.index(driver_path)
- cmd_line[index:index + 1] = [python_exe, this_file, '--platform', port_name]
- return cmd_line
-
- return new_cmd_line
-
- def start_helper(self):
- pass
-
- def start_http_server(self, number_of_servers):
- pass
-
- def start_websocket_server(self):
- pass
-
- def acquire_http_lock(self):
- pass
-
- def stop_helper(self):
- pass
-
- def stop_http_server(self):
- pass
-
- def stop_websocket_server(self):
- pass
-
- def release_http_lock(self):
- pass
-
- def show_results_html_file(self, results_filename):
- pass
-
-
-def main(argv, host, stdin, stdout, stderr):
- """Run the tests."""
-
- options, args = parse_options(argv)
- if options.test_shell:
- drt = MockTestShell(options, args, host, stdin, stdout, stderr)
- else:
- drt = MockDRT(options, args, host, stdin, stdout, stderr)
- return drt.run()
-
-
-def parse_options(argv):
- # FIXME: We have to do custom arg parsing instead of using the optparse
- # module. First, Chromium and non-Chromium DRTs have a different argument
- # syntax. Chromium uses --pixel-tests=<path>, and non-Chromium uses
- # --pixel-tests as a boolean flag. Second, we don't want to have to list
- # every command line flag DRT accepts, but optparse complains about
- # unrecognized flags. At some point it might be good to share a common
- # DRT options class between this file and webkit.py and chromium.py
- # just to get better type checking.
- platform_index = argv.index('--platform')
- platform = argv[platform_index + 1]
-
- pixel_tests = False
- pixel_path = None
- test_shell = '--test-shell' in argv
- if test_shell:
- for arg in argv:
- if arg.startswith('--pixel-tests'):
- pixel_tests = True
- pixel_path = arg[len('--pixel-tests='):]
- else:
- pixel_tests = '--pixel-tests' in argv
- options = optparse.Values({'test_shell': test_shell, 'platform': platform, 'pixel_tests': pixel_tests, 'pixel_path': pixel_path})
- return (options, argv)
-
-
-class MockDRT(object):
- def __init__(self, options, args, host, stdin, stdout, stderr):
- self._options = options
- self._args = args
- self._host = host
- self._stdout = stdout
- self._stdin = stdin
- self._stderr = stderr
-
- port_name = None
- if options.platform:
- port_name = options.platform
- self._port = PortFactory(host).get(port_name=port_name, options=options)
- self._driver = self._port.create_driver(0)
-
- def run(self):
- while True:
- line = self._stdin.readline()
- if not line:
- return 0
- driver_input = self.input_from_line(line)
- dirname, basename = self._port.split_test(driver_input.test_name)
- is_reftest = (self._port.reference_files(driver_input.test_name) or
- self._port.is_reference_html_file(self._port._filesystem, dirname, basename))
- output = self.output_for_test(driver_input, is_reftest)
- self.write_test_output(driver_input, output, is_reftest)
-
- def input_from_line(self, line):
- vals = line.strip().split("'")
- if len(vals) == 1:
- uri = vals[0]
- checksum = None
- else:
- uri = vals[0]
- checksum = vals[1]
- if uri.startswith('http://') or uri.startswith('https://'):
- test_name = self._driver.uri_to_test(uri)
- else:
- test_name = self._port.relative_test_filename(uri)
-
- return DriverInput(test_name, 0, checksum, self._options.pixel_tests)
-
- def output_for_test(self, test_input, is_reftest):
- port = self._port
- actual_text = port.expected_text(test_input.test_name)
- actual_audio = port.expected_audio(test_input.test_name)
- actual_image = None
- actual_checksum = None
- if is_reftest:
- # Make up some output for reftests.
- actual_text = 'reference text\n'
- actual_checksum = 'mock-checksum'
- actual_image = 'blank'
- if test_input.test_name.endswith('-mismatch.html'):
- actual_text = 'not reference text\n'
- actual_checksum = 'not-mock-checksum'
- actual_image = 'not blank'
- elif self._options.pixel_tests and test_input.image_hash:
- actual_checksum = port.expected_checksum(test_input.test_name)
- actual_image = port.expected_image(test_input.test_name)
-
- return DriverOutput(actual_text, actual_image, actual_checksum, actual_audio)
-
- def write_test_output(self, test_input, output, is_reftest):
- if output.audio:
- self._stdout.write('Content-Type: audio/wav\n')
- self._stdout.write('Content-Transfer-Encoding: base64\n')
- self._stdout.write(base64.b64encode(output.audio))
- else:
- self._stdout.write('Content-Type: text/plain\n')
- # FIXME: Note that we don't ensure there is a trailing newline!
- # This mirrors actual (Mac) DRT behavior but is a bug.
- if output.text:
- self._stdout.write(output.text)
-
- self._stdout.write('#EOF\n')
-
- if self._options.pixel_tests and output.image_hash:
- self._stdout.write('\n')
- self._stdout.write('ActualHash: %s\n' % output.image_hash)
- self._stdout.write('ExpectedHash: %s\n' % test_input.image_hash)
- if output.image_hash != test_input.image_hash:
- self._stdout.write('Content-Type: image/png\n')
- self._stdout.write('Content-Length: %s\n' % len(output.image))
- self._stdout.write(output.image)
- self._stdout.write('#EOF\n')
- self._stdout.flush()
- self._stderr.write('#EOF\n')
- self._stderr.flush()
-
-
-class MockTestShell(MockDRT):
- def input_from_line(self, line):
- vals = line.strip().split()
- if len(vals) == 3:
- uri, timeout, checksum = vals
- else:
- uri, timeout = vals
- checksum = None
-
- test_name = self._driver.uri_to_test(uri)
- return DriverInput(test_name, timeout, checksum, self._options.pixel_tests)
-
- def output_for_test(self, test_input, is_reftest):
- # FIXME: This is a hack to make virtual tests work. Need something more general.
- original_test_name = test_input.test_name
- if '--enable-accelerated-2d-canvas' in self._args and 'canvas' in test_input.test_name:
- test_input.test_name = 'platform/chromium/virtual/gpu/' + test_input.test_name
- output = super(MockTestShell, self).output_for_test(test_input, is_reftest)
- test_input.test_name = original_test_name
- return output
-
- def write_test_output(self, test_input, output, is_reftest):
- self._stdout.write("#URL:%s\n" % self._driver.test_to_uri(test_input.test_name))
- if self._options.pixel_tests and output.image_hash:
- self._stdout.write("#MD5:%s\n" % output.image_hash)
- if output.image:
- self._host.filesystem.maybe_make_directory(self._host.filesystem.dirname(self._options.pixel_path))
- self._host.filesystem.write_binary_file(self._options.pixel_path, output.image)
- if output.text:
- self._stdout.write(output.text)
-
- if output.text and not output.text.endswith('\n'):
- self._stdout.write('\n')
- self._stdout.write('#EOF\n')
- self._stdout.flush()
-
-
-if __name__ == '__main__':
- # Note that the Mock in MockDRT refers to the fact that it is emulating a
- # real DRT, and as such, it needs access to a real SystemHost, not a MockSystemHost.
- sys.exit(main(sys.argv[1:], SystemHost(), sys.stdin, sys.stdout, sys.stderr))
diff --git a/Tools/Scripts/webkitpy/port/mock_drt_unittest.py b/Tools/Scripts/webkitpy/port/mock_drt_unittest.py
deleted file mode 100644
index 46ee57bcc..000000000
--- a/Tools/Scripts/webkitpy/port/mock_drt_unittest.py
+++ /dev/null
@@ -1,267 +0,0 @@
-# Copyright (C) 2011 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.
-
-"""Unit tests for MockDRT."""
-
-import sys
-import unittest2 as unittest
-
-from webkitpy.common import newstringio
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.port import mock_drt
-from webkitpy.port import port_testcase
-from webkitpy.port import test
-from webkitpy.port.factory import PortFactory
-from webkitpy.tool import mocktool
-
-
-mock_options = mocktool.MockOptions(configuration='Release')
-
-
-class MockDRTPortTest(port_testcase.PortTestCase):
-
- def make_port(self, options=mock_options):
- host = MockSystemHost()
- test.add_unit_tests_to_mock_filesystem(host.filesystem)
- return mock_drt.MockDRTPort(host, port_name='mock-mac-lion', options=options)
-
- def test_port_name_in_constructor(self):
- self.assertTrue(mock_drt.MockDRTPort(MockSystemHost(), port_name='mock-test'))
-
- def test_check_sys_deps(self):
- pass
-
- def test_diff_image(self):
- pass
-
- def test_diff_image_crashed(self):
- pass
-
- def test_uses_apache(self):
- pass
-
- def integration_test_http_lock(self):
- pass
-
- def integration_test_start_helper(self):
- pass
-
- def integration_test_http_server__normal(self):
- pass
-
- def integration_test_http_server__fails(self):
- pass
-
- def integration_test_websocket_server__normal(self):
- pass
-
- def integration_test_websocket_server__fails(self):
- pass
-
- def integration_test_helper(self):
- pass
-
- def test_get_crash_log(self):
- pass
-
- def test_check_build(self):
- pass
-
-
-class MockDRTTest(unittest.TestCase):
- def input_line(self, port, test_name, checksum=None):
- url = port.create_driver(0).test_to_uri(test_name)
- if url.startswith('file://'):
- url = url[len('file://'):]
-
- if checksum:
- return url + "'" + checksum + '\n'
- return url + '\n'
-
- def extra_args(self, pixel_tests):
- if pixel_tests:
- return ['--pixel-tests', '-']
- return ['-']
-
- def make_drt(self, options, args, host, stdin, stdout, stderr):
- return mock_drt.MockDRT(options, args, host, stdin, stdout, stderr)
-
- def make_input_output(self, port, test_name, pixel_tests,
- expected_checksum, drt_output, drt_input=None, expected_text=None):
- if pixel_tests:
- if not expected_checksum:
- expected_checksum = port.expected_checksum(test_name)
- if not drt_input:
- drt_input = self.input_line(port, test_name, expected_checksum)
- text_output = expected_text or port.expected_text(test_name) or ''
-
- if not drt_output:
- drt_output = self.expected_output(port, test_name, pixel_tests,
- text_output, expected_checksum)
- return (drt_input, drt_output)
-
- def expected_output(self, port, test_name, pixel_tests, text_output, expected_checksum):
- output = ['Content-Type: text/plain\n']
- if text_output:
- output.append(text_output)
- output.append('#EOF\n')
- if pixel_tests and expected_checksum:
- output.extend(['\n',
- 'ActualHash: %s\n' % expected_checksum,
- 'ExpectedHash: %s\n' % expected_checksum])
- output.append('#EOF\n')
- return output
-
- def assertTest(self, test_name, pixel_tests, expected_checksum=None, drt_output=None, host=None, expected_text=None):
- port_name = 'test'
- host = host or MockSystemHost()
- test.add_unit_tests_to_mock_filesystem(host.filesystem)
- port = PortFactory(host).get(port_name)
- drt_input, drt_output = self.make_input_output(port, test_name,
- pixel_tests, expected_checksum, drt_output, drt_input=None, expected_text=expected_text)
-
- args = ['--platform', port_name] + self.extra_args(pixel_tests)
- stdin = newstringio.StringIO(drt_input)
- stdout = newstringio.StringIO()
- stderr = newstringio.StringIO()
- options, args = mock_drt.parse_options(args)
-
- drt = self.make_drt(options, args, host, stdin, stdout, stderr)
- res = drt.run()
-
- self.assertEqual(res, 0)
-
- # We use the StringIO.buflist here instead of getvalue() because
- # the StringIO might be a mix of unicode/ascii and 8-bit strings.
- self.assertEqual(stdout.buflist, drt_output)
- self.assertEqual(stderr.getvalue(), '' if options.test_shell else '#EOF\n')
-
- def test_main(self):
- host = MockSystemHost()
- test.add_unit_tests_to_mock_filesystem(host.filesystem)
- stdin = newstringio.StringIO()
- stdout = newstringio.StringIO()
- stderr = newstringio.StringIO()
- res = mock_drt.main(['--platform', 'test'] + self.extra_args(False),
- host, stdin, stdout, stderr)
- self.assertEqual(res, 0)
- self.assertEqual(stdout.getvalue(), '')
- self.assertEqual(stderr.getvalue(), '')
- self.assertEqual(host.filesystem.written_files, {})
-
- def test_pixeltest_passes(self):
- # This also tests that we handle HTTP: test URLs properly.
- self.assertTest('http/tests/passes/text.html', True)
-
- def test_pixeltest__fails(self):
- self.assertTest('failures/expected/image_checksum.html', pixel_tests=True,
- expected_checksum='image_checksum-checksum',
- drt_output=['Content-Type: text/plain\n',
- 'image_checksum-txt',
- '#EOF\n',
- '\n',
- 'ActualHash: image_checksum-checksum\n',
- 'ExpectedHash: image_checksum-checksum\n',
- '#EOF\n'])
-
- def test_textonly(self):
- self.assertTest('passes/image.html', False)
-
- def test_checksum_in_png(self):
- self.assertTest('passes/checksum_in_image.html', True)
-
- def test_missing_image(self):
- self.assertTest('failures/expected/missing_image.html', True)
-
- def test_missing_text(self):
- self.assertTest('failures/expected/missing_text.html', True)
-
- def test_reftest_match(self):
- self.assertTest('passes/reftest.html', False, expected_checksum='mock-checksum', expected_text='reference text\n')
- self.assertTest('passes/reftest.html', True, expected_checksum='mock-checksum', expected_text='reference text\n')
-
- def test_reftest_mismatch(self):
- self.assertTest('passes/mismatch.html', False, expected_checksum='mock-checksum', expected_text='reference text\n')
- self.assertTest('passes/mismatch.html', True, expected_checksum='mock-checksum', expected_text='reference text\n')
-
-
-class MockTestShellTest(MockDRTTest):
- def extra_args(self, pixel_tests):
- if pixel_tests:
- return ['--pixel-tests=/tmp/png_result0.png']
- return []
-
- def make_drt(self, options, args, host, stdin, stdout, stderr):
- options.test_shell = True
-
- # We have to set these by hand because --platform test won't trigger
- # the Chromium code paths.
- options.pixel_path = '/tmp/png_result0.png'
- options.pixel_tests = True
-
- return mock_drt.MockTestShell(options, args, host, stdin, stdout, stderr)
-
- def input_line(self, port, test_name, checksum=None):
- url = port.create_driver(0).test_to_uri(test_name)
- if checksum:
- return url + ' 6000 ' + checksum + '\n'
- return url + ' 6000\n'
-
- def expected_output(self, port, test_name, pixel_tests, text_output, expected_checksum):
- url = port.create_driver(0).test_to_uri(test_name)
- output = ['#URL:%s\n' % url]
- if expected_checksum:
- output.append('#MD5:%s\n' % expected_checksum)
- if text_output:
- output.append(text_output)
- if not text_output.endswith('\n'):
- output.append('\n')
- output.append('#EOF\n')
- return output
-
- def test_pixeltest__fails(self):
- host = MockSystemHost()
- url = '#URL:file://'
- url = url + '%s/failures/expected/image_checksum.html' % PortFactory(host).get('test').layout_tests_dir()
- self.assertTest('failures/expected/image_checksum.html', pixel_tests=True,
- expected_checksum='image_checksum',
- drt_output=[url + '\n',
- '#MD5:image_checksum-checksum\n',
- 'image_checksum-txt',
- '\n',
- '#EOF\n'],
- host=host)
- self.assertEqual(host.filesystem.written_files,
- {'/tmp/png_result0.png': 'image_checksum\x8a-pngtEXtchecksum\x00image_checksum-checksum'})
-
- def test_test_shell_parse_options(self):
- options, args = mock_drt.parse_options(['--platform', 'chromium-mac', '--test-shell',
- '--pixel-tests=/tmp/png_result0.png'])
- self.assertTrue(options.test_shell)
- self.assertTrue(options.pixel_tests)
- self.assertEqual(options.pixel_path, '/tmp/png_result0.png')
diff --git a/Tools/Scripts/webkitpy/port/port_testcase.py b/Tools/Scripts/webkitpy/port/port_testcase.py
deleted file mode 100644
index 63cc1e990..000000000
--- a/Tools/Scripts/webkitpy/port/port_testcase.py
+++ /dev/null
@@ -1,630 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Unit testing base class for Port implementations."""
-
-import errno
-import logging
-import os
-import socket
-import sys
-import time
-import unittest2 as unittest
-
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.port.base import Port
-from webkitpy.port.server_process_mock import MockServerProcess
-from webkitpy.layout_tests.servers import http_server_base
-from webkitpy.tool.mocktool import MockOptions
-
-
-# FIXME: get rid of this fixture
-class TestWebKitPort(Port):
- port_name = "testwebkitport"
-
- def __init__(self, port_name=None, symbols_string=None,
- expectations_file=None, skips_file=None, host=None, config=None,
- **kwargs):
- port_name = port_name or TestWebKitPort.port_name
- self.symbols_string = symbols_string # Passing "" disables all staticly-detectable features.
- host = host or MockSystemHost()
- super(TestWebKitPort, self).__init__(host, port_name=port_name, **kwargs)
-
- def all_test_configurations(self):
- return [self.test_configuration()]
-
- def _symbols_string(self):
- return self.symbols_string
-
- def _tests_for_other_platforms(self):
- return ["media", ]
-
- def _tests_for_disabled_features(self):
- return ["accessibility", ]
-
-
-class PortTestCase(unittest.TestCase):
- """Tests that all Port implementations must pass."""
- HTTP_PORTS = (8000, 8080, 8443)
- WEBSOCKET_PORTS = (8880,)
-
- # Subclasses override this to point to their Port subclass.
- os_name = None
- os_version = None
- port_maker = TestWebKitPort
- port_name = None
-
- def make_port(self, host=None, port_name=None, options=None, os_name=None, os_version=None, **kwargs):
- host = host or MockSystemHost(os_name=(os_name or self.os_name), os_version=(os_version or self.os_version))
- options = options or MockOptions(configuration='Release')
- port_name = port_name or self.port_name
- port_name = self.port_maker.determine_full_port_name(host, options, port_name)
- port = self.port_maker(host, port_name, options=options, **kwargs)
- port._config.build_directory = lambda configuration: '/mock-build'
- return port
-
- def test_default_max_locked_shards(self):
- port = self.make_port()
- port.default_child_processes = lambda: 16
- self.assertEqual(port.default_max_locked_shards(), 1)
- port.default_child_processes = lambda: 2
- self.assertEqual(port.default_max_locked_shards(), 1)
-
- def test_default_timeout_ms(self):
- self.assertEqual(self.make_port(options=MockOptions(configuration='Release')).default_timeout_ms(), 35000)
- self.assertEqual(self.make_port(options=MockOptions(configuration='Debug')).default_timeout_ms(), 35000)
-
- def test_default_pixel_tests(self):
- self.assertEqual(self.make_port().default_pixel_tests(), False)
-
- def test_driver_cmd_line(self):
- port = self.make_port()
- self.assertTrue(len(port.driver_cmd_line()))
-
- options = MockOptions(additional_drt_flag=['--foo=bar', '--foo=baz'])
- port = self.make_port(options=options)
- cmd_line = port.driver_cmd_line()
- self.assertTrue('--foo=bar' in cmd_line)
- self.assertTrue('--foo=baz' in cmd_line)
-
- def assert_servers_are_down(self, host, ports):
- for port in ports:
- try:
- test_socket = socket.socket()
- test_socket.connect((host, port))
- self.fail()
- except IOError, e:
- self.assertTrue(e.errno in (errno.ECONNREFUSED, errno.ECONNRESET))
- finally:
- test_socket.close()
-
- def assert_servers_are_up(self, host, ports):
- for port in ports:
- try:
- test_socket = socket.socket()
- test_socket.connect((host, port))
- except IOError, e:
- self.fail('failed to connect to %s:%d' % (host, port))
- finally:
- test_socket.close()
-
- def integration_test_http_lock(self):
- port = self.make_port()
- # Only checking that no exception is raised.
- port.acquire_http_lock()
- port.release_http_lock()
-
- def integration_test_check_sys_deps(self):
- port = self.make_port()
- # Only checking that no exception is raised.
- port.check_sys_deps(True)
-
- def integration_test_helper(self):
- port = self.make_port()
- # Only checking that no exception is raised.
- port.start_helper()
- port.stop_helper()
-
- def integration_test_http_server__normal(self):
- port = self.make_port()
- self.assert_servers_are_down('localhost', self.HTTP_PORTS)
- port.start_http_server()
- self.assert_servers_are_up('localhost', self.HTTP_PORTS)
- port.stop_http_server()
- self.assert_servers_are_down('localhost', self.HTTP_PORTS)
-
- def integration_test_http_server__fails(self):
- port = self.make_port()
- # Test that if a port isn't available, the call fails.
- for port_number in self.HTTP_PORTS:
- test_socket = socket.socket()
- try:
- try:
- test_socket.bind(('localhost', port_number))
- except socket.error, e:
- if e.errno in (errno.EADDRINUSE, errno.EALREADY):
- self.fail('could not bind to port %d' % port_number)
- raise
- try:
- port.start_http_server()
- self.fail('should not have been able to start the server while bound to %d' % port_number)
- except http_server_base.ServerError, e:
- pass
- finally:
- port.stop_http_server()
- test_socket.close()
-
- # Test that calling start() twice fails.
- try:
- port.start_http_server()
- self.assertRaises(AssertionError, port.start_http_server)
- finally:
- port.stop_http_server()
-
- def integration_test_http_server__two_servers(self):
- # Test that calling start() on two different ports causes the
- # first port to be treated as stale and killed.
- port = self.make_port()
- # Test that if a port isn't available, the call fails.
- port.start_http_server()
- new_port = self.make_port()
- try:
- new_port.start_http_server()
-
- # Check that the first server was killed.
- self.assertFalse(port._executive.check_running_pid(port._http_server._pid))
-
- # Check that there is something running.
- self.assert_servers_are_up('localhost', self.HTTP_PORTS)
-
- # Test that calling stop() on a killed server is harmless.
- port.stop_http_server()
- finally:
- port.stop_http_server()
- new_port.stop_http_server()
-
- # Test that calling stop() twice is harmless.
- new_port.stop_http_server()
-
- def integration_test_image_diff(self):
- port = self.make_port()
- # FIXME: This test will never run since we are using a MockFilesystem for these tests!?!?
- if not port.check_image_diff():
- # The port hasn't been built - don't run the tests.
- return
-
- dir = port.layout_tests_dir()
- file1 = port._filesystem.join(dir, 'fast', 'css', 'button_center.png')
- contents1 = port._filesystem.read_binary_file(file1)
- file2 = port._filesystem.join(dir, 'fast', 'css',
- 'remove-shorthand-expected.png')
- contents2 = port._filesystem.read_binary_file(file2)
- tmpfd, tmpfile = port._filesystem.open_binary_tempfile('')
- tmpfd.close()
-
- self.assertFalse(port.diff_image(contents1, contents1)[0])
- self.assertTrue(port.diff_image(contents1, contents2)[0])
-
- self.assertTrue(port.diff_image(contents1, contents2, tmpfile)[0])
-
- port._filesystem.remove(tmpfile)
-
- def test_diff_image__missing_both(self):
- port = self.make_port()
- self.assertFalse(port.diff_image(None, None)[0])
- self.assertFalse(port.diff_image(None, '')[0])
- self.assertFalse(port.diff_image('', None)[0])
-
- self.assertFalse(port.diff_image('', '')[0])
-
- def test_diff_image__missing_actual(self):
- port = self.make_port()
- self.assertTrue(port.diff_image(None, 'foo')[0])
- self.assertTrue(port.diff_image('', 'foo')[0])
-
- def test_diff_image__missing_expected(self):
- port = self.make_port()
- self.assertTrue(port.diff_image('foo', None)[0])
- self.assertTrue(port.diff_image('foo', '')[0])
-
- def test_diff_image(self):
- port = self.make_port()
- self.proc = None
-
- def make_proc(port, nm, cmd, env):
- self.proc = MockServerProcess(port, nm, cmd, env, lines=['diff: 100% failed\n', 'diff: 100% failed\n'])
- return self.proc
-
- port._server_process_constructor = make_proc
- port.setup_test_run()
- self.assertEqual(port.diff_image('foo', 'bar'), ('', 100.0, None))
- self.assertEqual(self.proc.cmd[1:3], ["--tolerance", "0.1"])
-
- self.assertEqual(port.diff_image('foo', 'bar', None), ('', 100.0, None))
- self.assertEqual(self.proc.cmd[1:3], ["--tolerance", "0.1"])
-
- self.assertEqual(port.diff_image('foo', 'bar', 0), ('', 100.0, None))
- self.assertEqual(self.proc.cmd[1:3], ["--tolerance", "0"])
-
- port.clean_up_test_run()
- self.assertTrue(self.proc.stopped)
- self.assertEqual(port._image_differ, None)
-
- def test_diff_image_crashed(self):
- port = self.make_port()
- self.proc = None
-
- def make_proc(port, nm, cmd, env):
- self.proc = MockServerProcess(port, nm, cmd, env, crashed=True)
- return self.proc
-
- port._server_process_constructor = make_proc
- port.setup_test_run()
- self.assertEqual(port.diff_image('foo', 'bar'), ('', 0, 'ImageDiff crashed\n'))
- port.clean_up_test_run()
-
- def test_check_wdiff(self):
- port = self.make_port()
- port.check_wdiff()
-
- def integration_test_websocket_server__normal(self):
- port = self.make_port()
- self.assert_servers_are_down('localhost', self.WEBSOCKET_PORTS)
- port.start_websocket_server()
- self.assert_servers_are_up('localhost', self.WEBSOCKET_PORTS)
- port.stop_websocket_server()
- self.assert_servers_are_down('localhost', self.WEBSOCKET_PORTS)
-
- def integration_test_websocket_server__fails(self):
- port = self.make_port()
-
- # Test that start() fails if a port isn't available.
- for port_number in self.WEBSOCKET_PORTS:
- test_socket = socket.socket()
- try:
- test_socket.bind(('localhost', port_number))
- try:
- port.start_websocket_server()
- self.fail('should not have been able to start the server while bound to %d' % port_number)
- except http_server_base.ServerError, e:
- pass
- finally:
- port.stop_websocket_server()
- test_socket.close()
-
- # Test that calling start() twice fails.
- try:
- port.start_websocket_server()
- self.assertRaises(AssertionError, port.start_websocket_server)
- finally:
- port.stop_websocket_server()
-
- def integration_test_websocket_server__two_servers(self):
- port = self.make_port()
-
- # Test that calling start() on two different ports causes the
- # first port to be treated as stale and killed.
- port.start_websocket_server()
- new_port = self.make_port()
- try:
- new_port.start_websocket_server()
-
- # Check that the first server was killed.
- self.assertFalse(port._executive.check_running_pid(port._websocket_server._pid))
-
- # Check that there is something running.
- self.assert_servers_are_up('localhost', self.WEBSOCKET_PORTS)
-
- # Test that calling stop() on a killed server is harmless.
- port.stop_websocket_server()
- finally:
- port.stop_websocket_server()
- new_port.stop_websocket_server()
-
- # Test that calling stop() twice is harmless.
- new_port.stop_websocket_server()
-
- def test_test_configuration(self):
- port = self.make_port()
- self.assertTrue(port.test_configuration())
-
- def test_all_test_configurations(self):
- port = self.make_port()
- self.assertTrue(len(port.all_test_configurations()) > 0)
- self.assertTrue(port.test_configuration() in port.all_test_configurations(), "%s not in %s" % (port.test_configuration(), port.all_test_configurations()))
-
- def integration_test_http_server__loop(self):
- port = self.make_port()
-
- i = 0
- while i < 10:
- self.assert_servers_are_down('localhost', self.HTTP_PORTS)
- port.start_http_server()
-
- # We sleep in between alternating runs to ensure that this
- # test handles both back-to-back starts and stops and
- # starts and stops separated by a delay.
- if i % 2:
- time.sleep(0.1)
-
- self.assert_servers_are_up('localhost', self.HTTP_PORTS)
- port.stop_http_server()
- if i % 2:
- time.sleep(0.1)
-
- i += 1
-
- def test_get_crash_log(self):
- port = self.make_port()
- self.assertEqual(port._get_crash_log(None, None, None, None, newer_than=None),
- (None,
- 'crash log for <unknown process name> (pid <unknown>):\n'
- 'STDOUT: <empty>\n'
- 'STDERR: <empty>\n'))
-
- self.assertEqual(port._get_crash_log('foo', 1234, 'out bar\nout baz', 'err bar\nerr baz\n', newer_than=None),
- ('err bar\nerr baz\n',
- 'crash log for foo (pid 1234):\n'
- 'STDOUT: out bar\n'
- 'STDOUT: out baz\n'
- 'STDERR: err bar\n'
- 'STDERR: err baz\n'))
-
- self.assertEqual(port._get_crash_log('foo', 1234, 'foo\xa6bar', 'foo\xa6bar', newer_than=None),
- ('foo\xa6bar',
- u'crash log for foo (pid 1234):\n'
- u'STDOUT: foo\ufffdbar\n'
- u'STDERR: foo\ufffdbar\n'))
-
- self.assertEqual(port._get_crash_log('foo', 1234, 'foo\xa6bar', 'foo\xa6bar', newer_than=1.0),
- ('foo\xa6bar',
- u'crash log for foo (pid 1234):\n'
- u'STDOUT: foo\ufffdbar\n'
- u'STDERR: foo\ufffdbar\n'))
-
- def assert_build_path(self, options, dirs, expected_path):
- port = self.make_port(options=options)
- for directory in dirs:
- port.host.filesystem.maybe_make_directory(directory)
- self.assertEqual(port._build_path(), expected_path)
-
- def test_expectations_ordering(self):
- port = self.make_port()
- for path in port.expectations_files():
- port._filesystem.write_text_file(path, '')
- ordered_dict = port.expectations_dict()
- self.assertEqual(port.path_to_generic_test_expectations_file(), ordered_dict.keys()[0])
- self.assertEqual(port.path_to_test_expectations_file(), ordered_dict.keys()[1])
-
- options = MockOptions(additional_expectations=['/tmp/foo', '/tmp/bar'])
- port = self.make_port(options=options)
- for path in port.expectations_files():
- port._filesystem.write_text_file(path, '')
- port._filesystem.write_text_file('/tmp/foo', 'foo')
- port._filesystem.write_text_file('/tmp/bar', 'bar')
- ordered_dict = port.expectations_dict()
- self.assertEqual(ordered_dict.keys()[-2:], options.additional_expectations) # pylint: disable=E1101
- self.assertEqual(ordered_dict.values()[-2:], ['foo', 'bar'])
-
- def test_path_to_test_expectations_file(self):
- port = TestWebKitPort()
- port._options = MockOptions(webkit_test_runner=False)
- self.assertEqual(port.path_to_test_expectations_file(), '/mock-checkout/LayoutTests/platform/testwebkitport/TestExpectations')
-
- port = TestWebKitPort()
- port._options = MockOptions(webkit_test_runner=True)
- self.assertEqual(port.path_to_test_expectations_file(), '/mock-checkout/LayoutTests/platform/testwebkitport/TestExpectations')
-
- port = TestWebKitPort()
- port.host.filesystem.files['/mock-checkout/LayoutTests/platform/testwebkitport/TestExpectations'] = 'some content'
- port._options = MockOptions(webkit_test_runner=False)
- self.assertEqual(port.path_to_test_expectations_file(), '/mock-checkout/LayoutTests/platform/testwebkitport/TestExpectations')
-
- def test_skipped_directories_for_features(self):
- supported_features = ["Accelerated Compositing", "Foo Feature"]
- expected_directories = set(["animations/3d", "transforms/3d"])
- port = TestWebKitPort(supported_features=supported_features)
- port._runtime_feature_list = lambda: supported_features
- result_directories = set(port._skipped_tests_for_unsupported_features(test_list=["animations/3d/foo.html"]))
- self.assertEqual(result_directories, expected_directories)
-
- def test_skipped_directories_for_features_no_matching_tests_in_test_list(self):
- supported_features = ["Accelerated Compositing", "Foo Feature"]
- expected_directories = set([])
- result_directories = set(TestWebKitPort(supported_features=supported_features)._skipped_tests_for_unsupported_features(test_list=['foo.html']))
- self.assertEqual(result_directories, expected_directories)
-
- def test_skipped_tests_for_unsupported_features_empty_test_list(self):
- supported_features = ["Accelerated Compositing", "Foo Feature"]
- expected_directories = set([])
- result_directories = set(TestWebKitPort(supported_features=supported_features)._skipped_tests_for_unsupported_features(test_list=None))
- self.assertEqual(result_directories, expected_directories)
-
- def test_skipped_layout_tests(self):
- self.assertEqual(TestWebKitPort().skipped_layout_tests(test_list=[]), set(['media']))
-
- def test_expectations_files(self):
- port = TestWebKitPort()
-
- def platform_dirs(port):
- return [port.host.filesystem.basename(port.host.filesystem.dirname(f)) for f in port.expectations_files()]
-
- self.assertEqual(platform_dirs(port), ['LayoutTests', 'testwebkitport'])
-
- port = TestWebKitPort(port_name="testwebkitport-version")
- self.assertEqual(platform_dirs(port), ['LayoutTests', 'testwebkitport', 'testwebkitport-version'])
-
- port = TestWebKitPort(port_name="testwebkitport-version-wk2")
- self.assertEqual(platform_dirs(port), ['LayoutTests', 'testwebkitport', 'testwebkitport-version', 'wk2', 'testwebkitport-wk2'])
-
- port = TestWebKitPort(port_name="testwebkitport-version",
- options=MockOptions(additional_platform_directory=["internal-testwebkitport"]))
- self.assertEqual(platform_dirs(port), ['LayoutTests', 'testwebkitport', 'testwebkitport-version', 'internal-testwebkitport'])
-
- def test_root_option(self):
- port = TestWebKitPort()
- port._options = MockOptions(root='/foo')
- self.assertEqual(port._path_to_driver(), "/foo/DumpRenderTree")
-
- def test_test_expectations(self):
- # Check that we read the expectations file
- host = MockSystemHost()
- host.filesystem.write_text_file('/mock-checkout/LayoutTests/platform/testwebkitport/TestExpectations',
- 'BUG_TESTEXPECTATIONS SKIP : fast/html/article-element.html = FAIL\n')
- port = TestWebKitPort(host=host)
- self.assertEqual(''.join(port.expectations_dict().values()), 'BUG_TESTEXPECTATIONS SKIP : fast/html/article-element.html = FAIL\n')
-
- def test_build_driver(self):
- output = OutputCapture()
- port = TestWebKitPort()
- # Delay setting _executive to avoid logging during construction
- port._executive = MockExecutive(should_log=True)
- port._options = MockOptions(configuration="Release") # This should not be necessary, but I think TestWebKitPort is actually reading from disk (and thus detects the current configuration).
- expected_logs = "MOCK run_command: ['Tools/Scripts/build-dumprendertree', '--release'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}\n"
- self.assertTrue(output.assert_outputs(self, port._build_driver, expected_logs=expected_logs))
-
- # Make sure when passed --webkit-test-runner we build the right tool.
- port._options = MockOptions(webkit_test_runner=True, configuration="Release")
- expected_logs = "MOCK run_command: ['Tools/Scripts/build-dumprendertree', '--release'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}\nMOCK run_command: ['Tools/Scripts/build-webkittestrunner', '--release'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}\n"
- self.assertTrue(output.assert_outputs(self, port._build_driver, expected_logs=expected_logs))
-
- # Make sure we show the build log when --verbose is passed, which we simulate by setting the logging level to DEBUG.
- output.set_log_level(logging.DEBUG)
- port._options = MockOptions(configuration="Release")
- expected_logs = """MOCK run_command: ['Tools/Scripts/build-dumprendertree', '--release'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}
-Output of ['Tools/Scripts/build-dumprendertree', '--release']:
-MOCK output of child process
-"""
- self.assertTrue(output.assert_outputs(self, port._build_driver, expected_logs=expected_logs))
- output.set_log_level(logging.INFO)
-
- # Make sure that failure to build returns False.
- port._executive = MockExecutive(should_log=True, should_throw=True)
- # Because WK2 currently has to build both webkittestrunner and DRT, if DRT fails, that's the only one it tries.
- expected_logs = """MOCK run_command: ['Tools/Scripts/build-dumprendertree', '--release'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}
-MOCK ScriptError
-
-MOCK output of child process
-"""
- self.assertFalse(output.assert_outputs(self, port._build_driver, expected_logs=expected_logs))
-
- def _assert_config_file_for_platform(self, port, platform, config_file):
- self.assertEqual(port._apache_config_file_name_for_platform(platform), config_file)
-
- def test_linux_distro_detection(self):
- port = TestWebKitPort()
- self.assertFalse(port._is_redhat_based())
- self.assertFalse(port._is_debian_based())
-
- port._filesystem = MockFileSystem({'/etc/redhat-release': ''})
- self.assertTrue(port._is_redhat_based())
- self.assertFalse(port._is_debian_based())
-
- port._filesystem = MockFileSystem({'/etc/debian_version': ''})
- self.assertFalse(port._is_redhat_based())
- self.assertTrue(port._is_debian_based())
-
- port._filesystem = MockFileSystem({'/etc/arch-release': ''})
- self.assertFalse(port._is_redhat_based())
- self.assertTrue(port._is_arch_based())
-
- def test_apache_config_file_name_for_platform(self):
- port = TestWebKitPort()
- self._assert_config_file_for_platform(port, 'cygwin', 'cygwin-httpd.conf')
-
- self._assert_config_file_for_platform(port, 'linux2', 'apache2-httpd.conf')
- self._assert_config_file_for_platform(port, 'linux3', 'apache2-httpd.conf')
-
- port._is_redhat_based = lambda: True
- port._apache_version = lambda: '2.2'
- self._assert_config_file_for_platform(port, 'linux2', 'fedora-httpd-2.2.conf')
-
- port = TestWebKitPort()
- port._is_debian_based = lambda: True
- port._apache_version = lambda: '2.2'
- self._assert_config_file_for_platform(port, 'linux2', 'debian-httpd-2.2.conf')
-
- self._assert_config_file_for_platform(port, 'mac', 'apache2-httpd.conf')
- self._assert_config_file_for_platform(port, 'win32', 'apache2-httpd.conf') # win32 isn't a supported sys.platform. AppleWin/WinCairo/WinCE ports all use cygwin.
- self._assert_config_file_for_platform(port, 'barf', 'apache2-httpd.conf')
-
- def test_path_to_apache_config_file(self):
- port = TestWebKitPort()
-
- saved_environ = os.environ.copy()
- try:
- os.environ['WEBKIT_HTTP_SERVER_CONF_PATH'] = '/path/to/httpd.conf'
- self.assertRaises(IOError, port._path_to_apache_config_file)
- port._filesystem.write_text_file('/existing/httpd.conf', 'Hello, world!')
- os.environ['WEBKIT_HTTP_SERVER_CONF_PATH'] = '/existing/httpd.conf'
- self.assertEqual(port._path_to_apache_config_file(), '/existing/httpd.conf')
- finally:
- os.environ = saved_environ.copy()
-
- # Mock out _apache_config_file_name_for_platform to ignore the passed sys.platform value.
- port._apache_config_file_name_for_platform = lambda platform: 'httpd.conf'
- self.assertEqual(port._path_to_apache_config_file(), '/mock-checkout/LayoutTests/http/conf/httpd.conf')
-
- # Check that even if we mock out _apache_config_file_name, the environment variable takes precedence.
- saved_environ = os.environ.copy()
- try:
- os.environ['WEBKIT_HTTP_SERVER_CONF_PATH'] = '/existing/httpd.conf'
- self.assertEqual(port._path_to_apache_config_file(), '/existing/httpd.conf')
- finally:
- os.environ = saved_environ.copy()
-
- def test_check_build(self):
- port = self.make_port(options=MockOptions(build=True))
- self.build_called = False
-
- def build_driver_called():
- self.build_called = True
- return True
-
- port._build_driver = build_driver_called
- port.check_build(False)
- self.assertTrue(self.build_called)
-
- port = self.make_port(options=MockOptions(root='/tmp', build=True))
- self.build_called = False
- port._build_driver = build_driver_called
- port.check_build(False)
- self.assertFalse(self.build_called, None)
-
- port = self.make_port(options=MockOptions(build=False))
- self.build_called = False
- port._build_driver = build_driver_called
- port.check_build(False)
- self.assertFalse(self.build_called, None)
-
- def test_additional_platform_directory(self):
- port = self.make_port(options=MockOptions(additional_platform_directory=['/tmp/foo']))
- self.assertEqual(port.baseline_search_path()[0], '/tmp/foo')
diff --git a/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer.py b/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer.py
deleted file mode 100644
index 465b92158..000000000
--- a/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyrigth (C) 2012 Intel Corporation
-#
-# 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 Google name 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.
-
-import logging
-import os
-import subprocess
-
-
-_log = logging.getLogger(__name__)
-
-
-# Shared by GTK and EFL for pulseaudio sanitizing before running tests.
-class PulseAudioSanitizer:
- def unload_pulseaudio_module(self):
- # Unload pulseaudio's module-stream-restore, since it remembers
- # volume settings from different runs, and could affect
- # multimedia tests results
- self._pa_module_index = -1
- with open(os.devnull, 'w') as devnull:
- try:
- pactl_process = subprocess.Popen(["pactl", "list", "short", "modules"], stdout=subprocess.PIPE, stderr=devnull)
- pactl_process.wait()
- except OSError:
- # pactl might not be available.
- _log.debug('pactl not found. Please install pulseaudio-utils to avoid some potential media test failures.')
- return
- modules_list = pactl_process.communicate()[0]
- for module in modules_list.splitlines():
- if module.find("module-stream-restore") >= 0:
- # Some pulseaudio-utils versions don't provide
- # the index, just an empty string
- self._pa_module_index = module.split('\t')[0] or -1
- try:
- # Since they could provide other stuff (not an index
- # nor an empty string, let's make sure this is an int.
- if int(self._pa_module_index) != -1:
- pactl_process = subprocess.Popen(["pactl", "unload-module", self._pa_module_index])
- pactl_process.wait()
- if pactl_process.returncode == 0:
- _log.debug('Unloaded module-stream-restore successfully')
- else:
- _log.debug('Unloading module-stream-restore failed')
- except ValueError:
- # pactl should have returned an index if the module is found
- _log.debug('Unable to parse module index. Please check if your pulseaudio-utils version is too old.')
- return
-
- def restore_pulseaudio_module(self):
- # If pulseaudio's module-stream-restore was previously unloaded,
- # restore it back. We shouldn't need extra checks here, since an
- # index != -1 here means we successfully unloaded it previously.
- if self._pa_module_index != -1:
- with open(os.devnull, 'w') as devnull:
- pactl_process = subprocess.Popen(["pactl", "load-module", "module-stream-restore"], stdout=devnull, stderr=devnull)
- pactl_process.wait()
- if pactl_process.returncode == 0:
- _log.debug('Restored module-stream-restore successfully')
- else:
- _log.debug('Restoring module-stream-restore failed')
diff --git a/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py b/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py
deleted file mode 100644
index 88a962a2e..000000000
--- a/Tools/Scripts/webkitpy/port/pulseaudio_sanitizer_mock.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyrigth (C) 2013 Zan Dobersek <zandobersek@gmail.com>
-#
-# 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 Google name 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.
-
-
-class PulseAudioSanitizerMock:
- def unload_pulseaudio_module(self):
- pass
-
- def restore_pulseaudio_module(self):
- pass
diff --git a/Tools/Scripts/webkitpy/port/qt.py b/Tools/Scripts/webkitpy/port/qt.py
deleted file mode 100644
index 5db5d8eea..000000000
--- a/Tools/Scripts/webkitpy/port/qt.py
+++ /dev/null
@@ -1,190 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-"""QtWebKit implementation of the Port interface."""
-
-import glob
-import logging
-import re
-import sys
-import os
-import platform
-
-from webkitpy.common.memoized import memoized
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-from webkitpy.port.base import Port
-from webkitpy.port.xvfbdriver import XvfbDriver
-
-_log = logging.getLogger(__name__)
-
-
-class QtPort(Port):
- ALL_VERSIONS = ['linux', 'win', 'mac']
- port_name = "qt"
-
- def _wk2_port_name(self):
- return "qt-wk2"
-
- def _port_flag_for_scripts(self):
- return "--qt"
-
- @classmethod
- def determine_full_port_name(cls, host, options, port_name):
- if port_name and port_name != cls.port_name:
- return port_name
- return port_name + '-' + host.platform.os_name
-
- # sys_platform exists only for unit testing.
- def __init__(self, host, port_name, **kwargs):
- super(QtPort, self).__init__(host, port_name, **kwargs)
-
- self._operating_system = port_name.replace('qt-', '')
-
- # FIXME: Why is this being set at all?
- self._version = self.operating_system()
-
- def _generate_all_test_configurations(self):
- configurations = []
- for version in self.ALL_VERSIONS:
- for build_type in self.ALL_BUILD_TYPES:
- configurations.append(TestConfiguration(version=version, architecture='x86', build_type=build_type))
- return configurations
-
- def _build_driver(self):
- # The Qt port builds DRT as part of the main build step
- return True
-
- def supports_per_test_timeout(self):
- return True
-
- def _path_to_driver(self):
- return self._build_path('bin/%s' % self.driver_name())
-
- def _path_to_image_diff(self):
- return self._build_path('bin/ImageDiff')
-
- def _path_to_webcore_library(self):
- if self.operating_system() == 'mac':
- return self._build_path('lib/QtWebKitWidgets.framework/QtWebKitWidgets')
- else:
- return self._build_path('lib/libQt5WebKitWidgets.so')
-
- def _modules_to_search_for_symbols(self):
- # We search in every library to be reliable in the case of building with CONFIG+=force_static_libs_as_shared.
- if self.operating_system() == 'mac':
- frameworks = glob.glob(os.path.join(self._build_path('lib'), '*.framework'))
- return [os.path.join(framework, os.path.splitext(os.path.basename(framework))[0]) for framework in frameworks]
- else:
- suffix = 'dll' if self.operating_system() == 'win' else 'so'
- return glob.glob(os.path.join(self._build_path('lib'), 'lib*.' + suffix))
-
- @memoized
- def qt_version(self):
- version = ''
- try:
- for line in self._executive.run_command(['qmake', '-v']).split('\n'):
- match = re.search('Qt\sversion\s(?P<version>\d\.\d)', line)
- if match:
- version = match.group('version')
- break
- except OSError:
- version = '5.0'
- return version
-
- def _search_paths(self):
- # qt-mac-wk2
- # /
- # qt-wk1 qt-wk2
- # \/
- # qt-5.x
- # \
- # (qt-linux|qt-mac|qt-win)
- # |
- # qt
- search_paths = []
- if self.get_option('webkit_test_runner'):
- if self.operating_system() == 'mac':
- search_paths.append('qt-mac-wk2')
- search_paths.append('qt-wk2')
- else:
- search_paths.append('qt-wk1')
-
- search_paths.append('qt-' + self.qt_version())
-
- search_paths.append(self.port_name + '-' + self.operating_system())
- search_paths.append(self.port_name)
- return search_paths
-
- def default_baseline_search_path(self):
- return map(self._webkit_baseline_path, self._search_paths())
-
- def _port_specific_expectations_files(self):
- paths = self._search_paths()
- if self.get_option('webkit_test_runner'):
- paths.append('wk2')
-
- # expectations_files() uses the directories listed in _search_paths reversed.
- # e.g. qt -> qt-linux -> qt-5.x -> qt-wk1
- return list(reversed([self._filesystem.join(self._webkit_baseline_path(p), 'TestExpectations') for p in paths]))
-
- def setup_environ_for_server(self, server_name=None):
- clean_env = super(QtPort, self).setup_environ_for_server(server_name)
- clean_env['QTWEBKIT_PLUGIN_PATH'] = self._build_path('lib/plugins')
- self._copy_value_from_environ_if_set(clean_env, 'QT_DRT_WEBVIEW_MODE')
- self._copy_value_from_environ_if_set(clean_env, 'DYLD_IMAGE_SUFFIX')
- self._copy_value_from_environ_if_set(clean_env, 'QT_WEBKIT_LOG')
- self._copy_value_from_environ_if_set(clean_env, 'DISABLE_NI_WARNING')
- self._copy_value_from_environ_if_set(clean_env, 'QT_WEBKIT_PAUSE_UI_PROCESS')
- self._copy_value_from_environ_if_set(clean_env, 'QT_QPA_PLATFORM_PLUGIN_PATH')
- self._copy_value_from_environ_if_set(clean_env, 'QT_WEBKIT_DISABLE_UIPROCESS_DUMPPIXELS')
- return clean_env
-
- # FIXME: We should find a way to share this implmentation with Gtk,
- # or teach run-launcher how to call run-safari and move this down to Port.
- def show_results_html_file(self, results_filename):
- run_launcher_args = []
- if self.get_option('webkit_test_runner'):
- run_launcher_args.append('-2')
- run_launcher_args.append("file://%s" % results_filename)
- self._run_script("run-launcher", run_launcher_args)
-
- def operating_system(self):
- return self._operating_system
-
- def check_sys_deps(self, needs_http):
- result = super(QtPort, self).check_sys_deps(needs_http)
- if not 'WEBKIT_TESTFONTS' in os.environ:
- _log.error('\nThe WEBKIT_TESTFONTS environment variable is not defined or not set properly.')
- _log.error('You must set it before running the tests.')
- _log.error('Use git to grab the actual fonts from http://gitorious.org/qtwebkit/testfonts')
- return False
- return result
-
- # Qt port is not ready for parallel testing, see https://bugs.webkit.org/show_bug.cgi?id=77730 for details.
- def default_child_processes(self):
- return 1
diff --git a/Tools/Scripts/webkitpy/port/qt_unittest.py b/Tools/Scripts/webkitpy/port/qt_unittest.py
deleted file mode 100644
index 2338f673b..000000000
--- a/Tools/Scripts/webkitpy/port/qt_unittest.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-import os
-from copy import deepcopy
-
-from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.port import port_testcase
-from webkitpy.port.qt import QtPort
-from webkitpy.tool.mocktool import MockOptions
-
-
-class QtPortTest(port_testcase.PortTestCase):
- port_name = 'qt-mac'
- port_maker = QtPort
- search_paths_cases = [
- {'search_paths':['qt-mac-wk2', 'qt-wk2', 'qt-5.0', 'qt-mac', 'qt'], 'os_name':'mac', 'use_webkit2':True, 'qt_version':'5.0'},
- {'search_paths':['qt-wk2', 'qt-5.0', 'qt-win', 'qt'], 'os_name':'win', 'use_webkit2':True, 'qt_version':'5.0'},
- {'search_paths':['qt-wk2', 'qt-5.0', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':True, 'qt_version':'5.0'},
-
- {'search_paths':['qt-wk1', 'qt-5.0', 'qt-mac', 'qt'], 'os_name':'mac', 'use_webkit2':False, 'qt_version':'5.0'},
- {'search_paths':['qt-wk1', 'qt-5.0', 'qt-win', 'qt'], 'os_name':'win', 'use_webkit2':False, 'qt_version':'5.0'},
- {'search_paths':['qt-wk1', 'qt-5.0', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':False, 'qt_version':'5.0'},
- {'search_paths':['qt-wk1', 'qt-5.1', 'qt-linux', 'qt'], 'os_name':'linux', 'use_webkit2':False, 'qt_version':'5.1'},
- ]
-
- def _assert_search_path(self, search_paths, os_name, use_webkit2=False, qt_version='5.0'):
- # FIXME: Port constructors should not "parse" the port name, but
- # rather be passed components (directly or via setters). Once
- # we fix that, this method will need a re-write.
- host = MockSystemHost(os_name=os_name)
- host.executive = MockExecutive2(self._qt_version(qt_version))
- port_name = 'qt-' + os_name
- port = self.make_port(host=host, qt_version=qt_version, port_name=port_name,
- options=MockOptions(webkit_test_runner=use_webkit2, platform='qt'))
- absolute_search_paths = map(port._webkit_baseline_path, search_paths)
- self.assertEqual(port.baseline_search_path(), absolute_search_paths)
-
- def _assert_expectations_files(self, search_paths, os_name, use_webkit2=False, qt_version='5.0'):
- # FIXME: Port constructors should not "parse" the port name, but
- # rather be passed components (directly or via setters). Once
- # we fix that, this method will need a re-write.
- host = MockSystemHost(os_name=os_name)
- host.executive = MockExecutive2(self._qt_version(qt_version))
- port_name = 'qt-' + os_name
- port = self.make_port(host=host, qt_version=qt_version, port_name=port_name,
- options=MockOptions(webkit_test_runner=use_webkit2, platform='qt'))
- self.assertEqual(port.expectations_files(), search_paths)
-
- def _qt_version(self, qt_version):
- if qt_version in '5.0':
- return 'QMake version 2.01a\nUsing Qt version 5.0.0 in /usr/local/Trolltech/Qt-5.0.0/lib'
- if qt_version in '5.1':
- return 'QMake version 3.0\nUsing Qt version 5.1.1 in /usr/local/Qt-5.1/lib'
-
- def test_baseline_search_path(self):
- for case in self.search_paths_cases:
- self._assert_search_path(**case)
-
- def test_expectations_files(self):
- for case in self.search_paths_cases:
- expectations_case = deepcopy(case)
- if expectations_case['use_webkit2']:
- expectations_case['search_paths'].append("wk2")
- expectations_case['search_paths'].append('')
- expectations_case['search_paths'].reverse()
- expectations_case['search_paths'] = map(lambda path: '/mock-checkout/LayoutTests/TestExpectations' if not path else '/mock-checkout/LayoutTests/platform/%s/TestExpectations' % (path), expectations_case['search_paths'])
- self._assert_expectations_files(**expectations_case)
-
- def test_show_results_html_file(self):
- port = self.make_port()
- port._executive = MockExecutive(should_log=True)
- expected_logs = "MOCK run_command: ['Tools/Scripts/run-launcher', '--release', '--qt', 'file://test.html'], cwd=/mock-checkout\n"
- OutputCapture().assert_outputs(self, port.show_results_html_file, ["test.html"], expected_logs=expected_logs)
-
- def test_setup_environ_for_server(self):
- port = self.make_port()
- env = port.setup_environ_for_server(port.driver_name())
- self.assertEqual(env['QTWEBKIT_PLUGIN_PATH'], '/mock-build/lib/plugins')
-
- def test_operating_system(self):
- self.assertEqual('linux', self.make_port(port_name='qt-linux', os_name='linux').operating_system())
- self.assertEqual('mac', self.make_port(os_name='mac').operating_system())
- self.assertEqual('win', self.make_port(port_name='qt-win', os_name='win').operating_system())
-
- def test_check_sys_deps(self):
- port = self.make_port()
-
- # Success
- os.environ['WEBKIT_TESTFONTS'] = '/tmp/foo'
- port._executive = MockExecutive2(exit_code=0)
- self.assertTrue(port.check_sys_deps(needs_http=False))
-
- # Failure
- del os.environ['WEBKIT_TESTFONTS']
- port._executive = MockExecutive2(exit_code=1,
- output='testing output failure')
- self.assertFalse(port.check_sys_deps(needs_http=False))
diff --git a/Tools/Scripts/webkitpy/port/server_process.py b/Tools/Scripts/webkitpy/port/server_process.py
deleted file mode 100644
index 8184d2587..000000000
--- a/Tools/Scripts/webkitpy/port/server_process.py
+++ /dev/null
@@ -1,380 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-"""Package that implements the ServerProcess wrapper class"""
-
-import errno
-import logging
-import signal
-import sys
-import time
-
-# Note that although win32 python does provide an implementation of
-# the win32 select API, it only works on sockets, and not on the named pipes
-# used by subprocess, so we have to use the native APIs directly.
-if sys.platform == 'win32':
- import msvcrt
- import win32pipe
- import win32file
-else:
- import fcntl
- import os
- import select
-
-from webkitpy.common.system.executive import ScriptError
-
-
-_log = logging.getLogger(__name__)
-
-
-class ServerProcess(object):
- """This class provides a wrapper around a subprocess that
- implements a simple request/response usage model. The primary benefit
- is that reading responses takes a deadline, so that we don't ever block
- indefinitely. The class also handles transparently restarting processes
- as necessary to keep issuing commands."""
-
- def __init__(self, port_obj, name, cmd, env=None, universal_newlines=False, treat_no_data_as_crash=False):
- self._port = port_obj
- self._name = name # Should be the command name (e.g. DumpRenderTree, ImageDiff)
- self._cmd = cmd
- self._env = env
- # Set if the process outputs non-standard newlines like '\r\n' or '\r'.
- # Don't set if there will be binary data or the data must be ASCII encoded.
- self._universal_newlines = universal_newlines
- self._treat_no_data_as_crash = treat_no_data_as_crash
- self._host = self._port.host
- self._pid = None
- self._reset()
-
- # See comment in imports for why we need the win32 APIs and can't just use select.
- # FIXME: there should be a way to get win32 vs. cygwin from platforminfo.
- self._use_win32_apis = sys.platform == 'win32'
-
- def name(self):
- return self._name
-
- def pid(self):
- return self._pid
-
- def _reset(self):
- if getattr(self, '_proc', None):
- if self._proc.stdin:
- self._proc.stdin.close()
- self._proc.stdin = None
- if self._proc.stdout:
- self._proc.stdout.close()
- self._proc.stdout = None
- if self._proc.stderr:
- self._proc.stderr.close()
- self._proc.stderr = None
-
- self._proc = None
- self._output = str() # bytesarray() once we require Python 2.6
- self._error = str() # bytesarray() once we require Python 2.6
- self._crashed = False
- self.timed_out = False
-
- def process_name(self):
- return self._name
-
- def _start(self):
- if self._proc:
- raise ValueError("%s already running" % self._name)
- self._reset()
- # close_fds is a workaround for http://bugs.python.org/issue2320
- close_fds = not self._host.platform.is_win()
- self._proc = self._host.executive.popen(self._cmd, stdin=self._host.executive.PIPE,
- stdout=self._host.executive.PIPE,
- stderr=self._host.executive.PIPE,
- close_fds=close_fds,
- env=self._env,
- universal_newlines=self._universal_newlines)
- self._pid = self._proc.pid
- self._port.find_system_pid(self.name(), self._pid)
- fd = self._proc.stdout.fileno()
- if not self._use_win32_apis:
- fl = fcntl.fcntl(fd, fcntl.F_GETFL)
- fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
- fd = self._proc.stderr.fileno()
- fl = fcntl.fcntl(fd, fcntl.F_GETFL)
- fcntl.fcntl(fd, fcntl.F_SETFL, fl | os.O_NONBLOCK)
-
- def _handle_possible_interrupt(self):
- """This routine checks to see if the process crashed or exited
- because of a keyboard interrupt and raises KeyboardInterrupt
- accordingly."""
- # FIXME: Linux and Mac set the returncode to -signal.SIGINT if a
- # subprocess is killed with a ctrl^C. Previous comments in this
- # routine said that supposedly Windows returns 0xc000001d, but that's not what
- # -1073741510 evaluates to. Figure out what the right value is
- # for win32 and cygwin here ...
- if self._proc.returncode in (-1073741510, -signal.SIGINT):
- raise KeyboardInterrupt
-
- def poll(self):
- """Check to see if the underlying process is running; returns None
- if it still is (wrapper around subprocess.poll)."""
- if self._proc:
- return self._proc.poll()
- return None
-
- def write(self, bytes):
- """Write a request to the subprocess. The subprocess is (re-)start()'ed
- if is not already running."""
- if not self._proc:
- self._start()
- try:
- self._proc.stdin.write(bytes)
- except IOError, e:
- self.stop(0.0)
- # stop() calls _reset(), so we have to set crashed to True after calling stop().
- self._crashed = True
-
- def _pop_stdout_line_if_ready(self):
- index_after_newline = self._output.find('\n') + 1
- if index_after_newline > 0:
- return self._pop_output_bytes(index_after_newline)
- return None
-
- def _pop_stderr_line_if_ready(self):
- index_after_newline = self._error.find('\n') + 1
- if index_after_newline > 0:
- return self._pop_error_bytes(index_after_newline)
- return None
-
- def pop_all_buffered_stderr(self):
- return self._pop_error_bytes(len(self._error))
-
- def read_stdout_line(self, deadline):
- return self._read(deadline, self._pop_stdout_line_if_ready)
-
- def read_stderr_line(self, deadline):
- return self._read(deadline, self._pop_stderr_line_if_ready)
-
- def read_either_stdout_or_stderr_line(self, deadline):
- def retrieve_bytes_from_buffers():
- stdout_line = self._pop_stdout_line_if_ready()
- if stdout_line:
- return stdout_line, None
- stderr_line = self._pop_stderr_line_if_ready()
- if stderr_line:
- return None, stderr_line
- return None # Instructs the caller to keep waiting.
-
- return_value = self._read(deadline, retrieve_bytes_from_buffers)
- # FIXME: This is a bit of a hack around the fact that _read normally only returns one value, but this caller wants it to return two.
- if return_value is None:
- return None, None
- return return_value
-
- def read_stdout(self, deadline, size):
- if size <= 0:
- raise ValueError('ServerProcess.read() called with a non-positive size: %d ' % size)
-
- def retrieve_bytes_from_stdout_buffer():
- if len(self._output) >= size:
- return self._pop_output_bytes(size)
- return None
-
- return self._read(deadline, retrieve_bytes_from_stdout_buffer)
-
- def _log(self, message):
- # This is a bit of a hack, but we first log a blank line to avoid
- # messing up the master process's output.
- _log.info('')
- _log.info(message)
-
- def _handle_timeout(self):
- self.timed_out = True
- self._port.sample_process(self._name, self._proc.pid)
-
- def _split_string_after_index(self, string, index):
- return string[:index], string[index:]
-
- def _pop_output_bytes(self, bytes_count):
- output, self._output = self._split_string_after_index(self._output, bytes_count)
- return output
-
- def _pop_error_bytes(self, bytes_count):
- output, self._error = self._split_string_after_index(self._error, bytes_count)
- return output
-
- def _wait_for_data_and_update_buffers_using_select(self, deadline, stopping=False):
- if self._proc.stdout.closed or self._proc.stderr.closed:
- # If the process crashed and is using FIFOs, like Chromium Android, the
- # stdout and stderr pipes will be closed.
- return
-
- out_fd = self._proc.stdout.fileno()
- err_fd = self._proc.stderr.fileno()
- select_fds = (out_fd, err_fd)
- try:
- read_fds, _, _ = select.select(select_fds, [], select_fds, max(deadline - time.time(), 0))
- except select.error, e:
- # We can ignore EINVAL since it's likely the process just crashed and we'll
- # figure that out the next time through the loop in _read().
- if e.args[0] == errno.EINVAL:
- return
- raise
-
- try:
- # Note that we may get no data during read() even though
- # select says we got something; see the select() man page
- # on linux. I don't know if this happens on Mac OS and
- # other Unixen as well, but we don't bother special-casing
- # Linux because it's relatively harmless either way.
- if out_fd in read_fds:
- data = self._proc.stdout.read()
- if not data and not stopping and (self._treat_no_data_as_crash or self._proc.poll()):
- self._crashed = True
- self._output += data
-
- if err_fd in read_fds:
- data = self._proc.stderr.read()
- if not data and not stopping and (self._treat_no_data_as_crash or self._proc.poll()):
- self._crashed = True
- self._error += data
- except IOError, e:
- # We can ignore the IOErrors because we will detect if the subporcess crashed
- # the next time through the loop in _read()
- pass
-
- def _wait_for_data_and_update_buffers_using_win32_apis(self, deadline):
- # See http://code.activestate.com/recipes/440554-module-to-allow-asynchronous-subprocess-use-on-win/
- # and http://docs.activestate.com/activepython/2.6/pywin32/modules.html
- # for documentation on all of these win32-specific modules.
- now = time.time()
- out_fh = msvcrt.get_osfhandle(self._proc.stdout.fileno())
- err_fh = msvcrt.get_osfhandle(self._proc.stderr.fileno())
- while (self._proc.poll() is None) and (now < deadline):
- output = self._non_blocking_read_win32(out_fh)
- error = self._non_blocking_read_win32(err_fh)
- if output or error:
- if output:
- self._output += output
- if error:
- self._error += error
- return
- time.sleep(0.01)
- now = time.time()
- return
-
- def _non_blocking_read_win32(self, handle):
- try:
- _, avail, _ = win32pipe.PeekNamedPipe(handle, 0)
- if avail > 0:
- _, buf = win32file.ReadFile(handle, avail, None)
- return buf
- except Exception, e:
- if e[0] not in (109, errno.ESHUTDOWN): # 109 == win32 ERROR_BROKEN_PIPE
- raise
- return None
-
- def has_crashed(self):
- if not self._crashed and self.poll():
- self._crashed = True
- self._handle_possible_interrupt()
- return self._crashed
-
- # This read function is a bit oddly-designed, as it polls both stdout and stderr, yet
- # only reads/returns from one of them (buffering both in local self._output/self._error).
- # It might be cleaner to pass in the file descriptor to poll instead.
- def _read(self, deadline, fetch_bytes_from_buffers_callback):
- while True:
- if self.has_crashed():
- return None
-
- if time.time() > deadline:
- self._handle_timeout()
- return None
-
- bytes = fetch_bytes_from_buffers_callback()
- if bytes is not None:
- return bytes
-
- if self._use_win32_apis:
- self._wait_for_data_and_update_buffers_using_win32_apis(deadline)
- else:
- self._wait_for_data_and_update_buffers_using_select(deadline)
-
- def start(self):
- if not self._proc:
- self._start()
-
- def stop(self, timeout_secs=3.0):
- if not self._proc:
- return (None, None)
-
- # Only bother to check for leaks or stderr if the process is still running.
- if self.poll() is None:
- self._port.check_for_leaks(self.name(), self.pid())
-
- now = time.time()
- if self._proc.stdin:
- self._proc.stdin.close()
- self._proc.stdin = None
- killed = False
- if timeout_secs:
- deadline = now + timeout_secs
- while self._proc.poll() is None and time.time() < deadline:
- time.sleep(0.01)
- if self._proc.poll() is None:
- _log.warning('stopping %s(pid %d) timed out, killing it' % (self._name, self._proc.pid))
-
- if self._proc.poll() is None:
- self._kill()
- killed = True
- _log.debug('killed pid %d' % self._proc.pid)
-
- # read any remaining data on the pipes and return it.
- if not killed:
- if self._use_win32_apis:
- self._wait_for_data_and_update_buffers_using_win32_apis(now)
- else:
- self._wait_for_data_and_update_buffers_using_select(now, stopping=True)
- out, err = self._output, self._error
- self._reset()
- return (out, err)
-
- def kill(self):
- self.stop(0.0)
-
- def _kill(self):
- self._host.executive.kill_process(self._proc.pid)
- if self._proc.poll() is not None:
- self._proc.wait()
-
- def replace_outputs(self, stdout, stderr):
- assert self._proc
- if stdout:
- self._proc.stdout.close()
- self._proc.stdout = stdout
- if stderr:
- self._proc.stderr.close()
- self._proc.stderr = stderr
diff --git a/Tools/Scripts/webkitpy/port/server_process_mock.py b/Tools/Scripts/webkitpy/port/server_process_mock.py
deleted file mode 100644
index d234ebdc3..000000000
--- a/Tools/Scripts/webkitpy/port/server_process_mock.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2012 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.
-
-
-class MockServerProcess(object):
- def __init__(self, port_obj=None, name=None, cmd=None, env=None, universal_newlines=False, lines=None, crashed=False):
- self.timed_out = False
- self.lines = lines or []
- self.crashed = crashed
- self.writes = []
- self.cmd = cmd
- self.env = env
- self.started = False
- self.stopped = False
-
- def write(self, bytes):
- self.writes.append(bytes)
-
- def has_crashed(self):
- return self.crashed
-
- def read_stdout_line(self, deadline):
- return self.lines.pop(0) + "\n"
-
- def read_stdout(self, deadline, size):
- first_line = self.lines[0]
- if size > len(first_line):
- self.lines.pop(0)
- remaining_size = size - len(first_line) - 1
- if not remaining_size:
- return first_line + "\n"
- return first_line + "\n" + self.read_stdout(deadline, remaining_size)
- result = self.lines[0][:size]
- self.lines[0] = self.lines[0][size:]
- return result
-
- def pop_all_buffered_stderr(self):
- return ''
-
- def read_either_stdout_or_stderr_line(self, deadline):
- # FIXME: We should have tests which intermix stderr and stdout lines.
- return self.read_stdout_line(deadline), None
-
- def start(self):
- self.started = True
-
- def stop(self, kill_directly=False):
- self.stopped = True
- return
-
- def kill(self):
- return
diff --git a/Tools/Scripts/webkitpy/port/server_process_unittest.py b/Tools/Scripts/webkitpy/port/server_process_unittest.py
deleted file mode 100644
index 5ad7d0ea7..000000000
--- a/Tools/Scripts/webkitpy/port/server_process_unittest.py
+++ /dev/null
@@ -1,152 +0,0 @@
-# Copyright (C) 2011 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.
-
-import sys
-import time
-import unittest2 as unittest
-
-from webkitpy.port.factory import PortFactory
-from webkitpy.port import server_process
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.common.system.outputcapture import OutputCapture
-
-
-
-class TrivialMockPort(object):
- def __init__(self):
- self.host = MockSystemHost()
- self.host.executive.kill_process = lambda x: None
- self.host.executive.kill_process = lambda x: None
-
- def results_directory(self):
- return "/mock-results"
-
- def check_for_leaks(self, process_name, process_pid):
- pass
-
- def process_kill_time(self):
- return 1
-
-
-class MockFile(object):
- def __init__(self, server_process):
- self._server_process = server_process
- self.closed = False
-
- def fileno(self):
- return 1
-
- def write(self, line):
- self._server_process.broken_pipes.append(self)
- raise IOError
-
- def close(self):
- self.closed = True
-
-
-class MockProc(object):
- def __init__(self, server_process):
- self.stdin = MockFile(server_process)
- self.stdout = MockFile(server_process)
- self.stderr = MockFile(server_process)
- self.pid = 1
-
- def poll(self):
- return 1
-
- def wait(self):
- return 0
-
-
-class FakeServerProcess(server_process.ServerProcess):
- def _start(self):
- self._proc = MockProc(self)
- self.stdin = self._proc.stdin
- self.stdout = self._proc.stdout
- self.stderr = self._proc.stderr
- self._pid = self._proc.pid
- self.broken_pipes = []
-
-
-class TestServerProcess(unittest.TestCase):
- def test_basic(self):
- cmd = [sys.executable, '-c', 'import sys; import time; time.sleep(0.02); print "stdout"; sys.stdout.flush(); print >>sys.stderr, "stderr"']
- host = SystemHost()
- factory = PortFactory(host)
- port = factory.get()
- now = time.time()
- proc = server_process.ServerProcess(port, 'python', cmd)
- proc.write('')
-
- self.assertEqual(proc.poll(), None)
- self.assertFalse(proc.has_crashed())
-
- # check that doing a read after an expired deadline returns
- # nothing immediately.
- line = proc.read_stdout_line(now - 1)
- self.assertEqual(line, None)
-
- # FIXME: This part appears to be flaky. line should always be non-None.
- # FIXME: https://bugs.webkit.org/show_bug.cgi?id=88280
- line = proc.read_stdout_line(now + 1.0)
- if line:
- self.assertEqual(line.strip(), "stdout")
-
- line = proc.read_stderr_line(now + 1.0)
- if line:
- self.assertEqual(line.strip(), "stderr")
-
- proc.stop(0)
-
- def test_cleanup(self):
- port_obj = TrivialMockPort()
- server_process = FakeServerProcess(port_obj=port_obj, name="test", cmd=["test"])
- server_process._start()
- server_process.stop()
- self.assertTrue(server_process.stdin.closed)
- self.assertTrue(server_process.stdout.closed)
- self.assertTrue(server_process.stderr.closed)
-
- def test_broken_pipe(self):
- port_obj = TrivialMockPort()
-
- port_obj.host.platform.os_name = 'win'
- server_process = FakeServerProcess(port_obj=port_obj, name="test", cmd=["test"])
- server_process.write("should break")
- self.assertTrue(server_process.has_crashed())
- self.assertIsNotNone(server_process.pid())
- self.assertIsNone(server_process._proc)
- self.assertEqual(server_process.broken_pipes, [server_process.stdin])
-
- port_obj.host.platform.os_name = 'mac'
- server_process = FakeServerProcess(port_obj=port_obj, name="test", cmd=["test"])
- server_process.write("should break")
- self.assertTrue(server_process.has_crashed())
- self.assertIsNone(server_process._proc)
- self.assertEqual(server_process.broken_pipes, [server_process.stdin])
diff --git a/Tools/Scripts/webkitpy/port/test.py b/Tools/Scripts/webkitpy/port/test.py
deleted file mode 100644
index 76fea3ba1..000000000
--- a/Tools/Scripts/webkitpy/port/test.py
+++ /dev/null
@@ -1,610 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-import base64
-import sys
-import time
-
-from webkitpy.port import Port, Driver, DriverOutput
-from webkitpy.port.base import VirtualTestSuite
-from webkitpy.layout_tests.models.test_configuration import TestConfiguration
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.crashlogs import CrashLogs
-
-
-# This sets basic expectations for a test. Each individual expectation
-# can be overridden by a keyword argument in TestList.add().
-class TestInstance(object):
- def __init__(self, name):
- self.name = name
- self.base = name[(name.rfind("/") + 1):name.rfind(".")]
- self.crash = False
- self.web_process_crash = False
- self.exception = False
- self.hang = False
- self.keyboard = False
- self.error = ''
- self.timeout = False
- self.is_reftest = False
-
- # The values of each field are treated as raw byte strings. They
- # will be converted to unicode strings where appropriate using
- # FileSystem.read_text_file().
- self.actual_text = self.base + '-txt'
- self.actual_checksum = self.base + '-checksum'
-
- # We add the '\x8a' for the image file to prevent the value from
- # being treated as UTF-8 (the character is invalid)
- self.actual_image = self.base + '\x8a' + '-png' + 'tEXtchecksum\x00' + self.actual_checksum
-
- self.expected_text = self.actual_text
- self.expected_image = self.actual_image
-
- self.actual_audio = None
- self.expected_audio = None
-
-
-# This is an in-memory list of tests, what we want them to produce, and
-# what we want to claim are the expected results.
-class TestList(object):
- def __init__(self):
- self.tests = {}
-
- def add(self, name, **kwargs):
- test = TestInstance(name)
- for key, value in kwargs.items():
- test.__dict__[key] = value
- self.tests[name] = test
-
- def add_reftest(self, name, reference_name, same_image):
- self.add(name, actual_checksum='xxx', actual_image='XXX', is_reftest=True)
- if same_image:
- self.add(reference_name, actual_checksum='xxx', actual_image='XXX', is_reftest=True)
- else:
- self.add(reference_name, actual_checksum='yyy', actual_image='YYY', is_reftest=True)
-
- def keys(self):
- return self.tests.keys()
-
- def __contains__(self, item):
- return item in self.tests
-
- def __getitem__(self, item):
- return self.tests[item]
-
-#
-# These numbers may need to be updated whenever we add or delete tests.
-#
-TOTAL_TESTS = 106
-TOTAL_SKIPS = 28
-TOTAL_RETRIES = 14
-
-UNEXPECTED_PASSES = 6
-UNEXPECTED_FAILURES = 17
-
-def unit_test_list():
- tests = TestList()
- tests.add('failures/expected/crash.html', crash=True)
- tests.add('failures/expected/exception.html', exception=True)
- tests.add('failures/expected/timeout.html', timeout=True)
- tests.add('failures/expected/hang.html', hang=True)
- tests.add('failures/expected/missing_text.html', expected_text=None)
- tests.add('failures/expected/image.html',
- actual_image='image_fail-pngtEXtchecksum\x00checksum_fail',
- expected_image='image-pngtEXtchecksum\x00checksum-png')
- tests.add('failures/expected/image_checksum.html',
- actual_checksum='image_checksum_fail-checksum',
- actual_image='image_checksum_fail-png')
- tests.add('failures/expected/audio.html',
- actual_audio=base64.b64encode('audio_fail-wav'), expected_audio='audio-wav',
- actual_text=None, expected_text=None,
- actual_image=None, expected_image=None,
- actual_checksum=None)
- tests.add('failures/expected/keyboard.html', keyboard=True)
- tests.add('failures/expected/missing_check.html',
- expected_image='missing_check-png')
- tests.add('failures/expected/missing_image.html', expected_image=None)
- tests.add('failures/expected/missing_audio.html', expected_audio=None,
- actual_text=None, expected_text=None,
- actual_image=None, expected_image=None,
- actual_checksum=None)
- tests.add('failures/expected/missing_text.html', expected_text=None)
- tests.add('failures/expected/newlines_leading.html',
- expected_text="\nfoo\n", actual_text="foo\n")
- tests.add('failures/expected/newlines_trailing.html',
- expected_text="foo\n\n", actual_text="foo\n")
- tests.add('failures/expected/newlines_with_excess_CR.html',
- expected_text="foo\r\r\r\n", actual_text="foo\n")
- tests.add('failures/expected/text.html', actual_text='text_fail-png')
- tests.add('failures/expected/skip_text.html', actual_text='text diff')
- tests.add('failures/flaky/text.html')
- tests.add('failures/unexpected/missing_text.html', expected_text=None)
- tests.add('failures/unexpected/missing_check.html', expected_image='missing-check-png')
- tests.add('failures/unexpected/missing_image.html', expected_image=None)
- tests.add('failures/unexpected/missing_render_tree_dump.html', actual_text="""layer at (0,0) size 800x600
- RenderView at (0,0) size 800x600
-layer at (0,0) size 800x34
- RenderBlock {HTML} at (0,0) size 800x34
- RenderBody {BODY} at (8,8) size 784x18
- RenderText {#text} at (0,0) size 133x18
- text run at (0,0) width 133: "This is an image test!"
-""", expected_text=None)
- tests.add('failures/unexpected/crash.html', crash=True)
- tests.add('failures/unexpected/crash-with-stderr.html', crash=True,
- error="mock-std-error-output")
- tests.add('failures/unexpected/web-process-crash-with-stderr.html', web_process_crash=True,
- error="mock-std-error-output")
- tests.add('failures/unexpected/pass.html')
- tests.add('failures/unexpected/text-checksum.html',
- actual_text='text-checksum_fail-txt',
- actual_checksum='text-checksum_fail-checksum')
- tests.add('failures/unexpected/text-image-checksum.html',
- actual_text='text-image-checksum_fail-txt',
- actual_image='text-image-checksum_fail-pngtEXtchecksum\x00checksum_fail',
- actual_checksum='text-image-checksum_fail-checksum')
- tests.add('failures/unexpected/checksum-with-matching-image.html',
- actual_checksum='text-image-checksum_fail-checksum')
- tests.add('failures/unexpected/skip_pass.html')
- tests.add('failures/unexpected/text.html', actual_text='text_fail-txt')
- tests.add('failures/unexpected/timeout.html', timeout=True)
- tests.add('http/tests/passes/text.html')
- tests.add('http/tests/passes/image.html')
- tests.add('http/tests/ssl/text.html')
- tests.add('passes/args.html')
- tests.add('passes/error.html', error='stuff going to stderr')
- tests.add('passes/image.html')
- tests.add('passes/audio.html',
- actual_audio=base64.b64encode('audio-wav'), expected_audio='audio-wav',
- actual_text=None, expected_text=None,
- actual_image=None, expected_image=None,
- actual_checksum=None)
- tests.add('passes/platform_image.html')
- tests.add('passes/checksum_in_image.html',
- expected_image='tEXtchecksum\x00checksum_in_image-checksum')
- tests.add('passes/skipped/skip.html')
-
- # Note that here the checksums don't match but the images do, so this test passes "unexpectedly".
- # See https://bugs.webkit.org/show_bug.cgi?id=69444 .
- tests.add('failures/unexpected/checksum.html', actual_checksum='checksum_fail-checksum')
-
- # Text output files contain "\r\n" on Windows. This may be
- # helpfully filtered to "\r\r\n" by our Python/Cygwin tooling.
- tests.add('passes/text.html',
- expected_text='\nfoo\n\n', actual_text='\nfoo\r\n\r\r\n')
-
- # For reftests.
- tests.add_reftest('passes/reftest.html', 'passes/reftest-expected.html', same_image=True)
- tests.add_reftest('passes/mismatch.html', 'passes/mismatch-expected-mismatch.html', same_image=False)
- tests.add_reftest('passes/svgreftest.svg', 'passes/svgreftest-expected.svg', same_image=True)
- tests.add_reftest('passes/xhtreftest.xht', 'passes/xhtreftest-expected.html', same_image=True)
- tests.add_reftest('passes/phpreftest.php', 'passes/phpreftest-expected-mismatch.svg', same_image=False)
- tests.add_reftest('failures/expected/reftest.html', 'failures/expected/reftest-expected.html', same_image=False)
- tests.add_reftest('failures/expected/mismatch.html', 'failures/expected/mismatch-expected-mismatch.html', same_image=True)
- tests.add_reftest('failures/unexpected/reftest.html', 'failures/unexpected/reftest-expected.html', same_image=False)
- tests.add_reftest('failures/unexpected/mismatch.html', 'failures/unexpected/mismatch-expected-mismatch.html', same_image=True)
- tests.add('failures/unexpected/reftest-nopixel.html', actual_checksum=None, actual_image=None, is_reftest=True)
- tests.add('failures/unexpected/reftest-nopixel-expected.html', actual_checksum=None, actual_image=None, is_reftest=True)
- # FIXME: Add a reftest which crashes.
- tests.add('reftests/foo/test.html')
- tests.add('reftests/foo/test-ref.html')
-
- tests.add('reftests/foo/multiple-match-success.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/multiple-match-failure.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/multiple-mismatch-success.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/multiple-mismatch-failure.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/multiple-both-success.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/multiple-both-failure.html', actual_checksum='abc', actual_image='abc')
-
- tests.add('reftests/foo/matching-ref.html', actual_checksum='abc', actual_image='abc')
- tests.add('reftests/foo/mismatching-ref.html', actual_checksum='def', actual_image='def')
- tests.add('reftests/foo/second-mismatching-ref.html', actual_checksum='ghi', actual_image='ghi')
-
- # The following files shouldn't be treated as reftests
- tests.add_reftest('reftests/foo/unlistedtest.html', 'reftests/foo/unlistedtest-expected.html', same_image=True)
- tests.add('reftests/foo/reference/bar/common.html')
- tests.add('reftests/foo/reftest/bar/shared.html')
-
- tests.add('websocket/tests/passes/text.html')
-
- # For testing test are properly included from platform directories.
- tests.add('platform/test-mac-leopard/http/test.html')
- tests.add('platform/test-win-win7/http/test.html')
-
- # For --no-http tests, test that platform specific HTTP tests are properly skipped.
- tests.add('platform/test-snow-leopard/http/test.html')
- tests.add('platform/test-snow-leopard/websocket/test.html')
-
- # For testing if perf tests are running in a locked shard.
- tests.add('perf/foo/test.html')
- tests.add('perf/foo/test-ref.html')
-
- # For testing --pixel-test-directories.
- tests.add('failures/unexpected/pixeldir/image_in_pixeldir.html',
- actual_image='image_in_pixeldir-pngtEXtchecksum\x00checksum_fail',
- expected_image='image_in_pixeldir-pngtEXtchecksum\x00checksum-png')
- tests.add('failures/unexpected/image_not_in_pixeldir.html',
- actual_image='image_not_in_pixeldir-pngtEXtchecksum\x00checksum_fail',
- expected_image='image_not_in_pixeldir-pngtEXtchecksum\x00checksum-png')
-
- # For testing that virtual test suites don't expand names containing themselves
- # See webkit.org/b/97925 and base_unittest.PortTest.test_tests().
- tests.add('passes/test-virtual-passes.html')
- tests.add('passes/passes/test-virtual-passes.html')
-
- return tests
-
-
-# Here we use a non-standard location for the layout tests, to ensure that
-# this works. The path contains a '.' in the name because we've seen bugs
-# related to this before.
-
-LAYOUT_TEST_DIR = '/test.checkout/LayoutTests'
-PERF_TEST_DIR = '/test.checkout/PerformanceTests'
-
-
-# Here we synthesize an in-memory filesystem from the test list
-# in order to fully control the test output and to demonstrate that
-# we don't need a real filesystem to run the tests.
-def add_unit_tests_to_mock_filesystem(filesystem):
- # Add the test_expectations file.
- filesystem.maybe_make_directory(LAYOUT_TEST_DIR + '/platform/test')
- if not filesystem.exists(LAYOUT_TEST_DIR + '/platform/test/TestExpectations'):
- filesystem.write_text_file(LAYOUT_TEST_DIR + '/platform/test/TestExpectations', """
-Bug(test) failures/expected/crash.html [ Crash ]
-Bug(test) failures/expected/image.html [ ImageOnlyFailure ]
-Bug(test) failures/expected/audio.html [ Failure ]
-Bug(test) failures/expected/image_checksum.html [ ImageOnlyFailure ]
-Bug(test) failures/expected/mismatch.html [ ImageOnlyFailure ]
-Bug(test) failures/expected/missing_check.html [ Missing Pass ]
-Bug(test) failures/expected/missing_image.html [ Missing Pass ]
-Bug(test) failures/expected/missing_audio.html [ Missing Pass ]
-Bug(test) failures/expected/missing_text.html [ Missing Pass ]
-Bug(test) failures/expected/newlines_leading.html [ Failure ]
-Bug(test) failures/expected/newlines_trailing.html [ Failure ]
-Bug(test) failures/expected/newlines_with_excess_CR.html [ Failure ]
-Bug(test) failures/expected/reftest.html [ ImageOnlyFailure ]
-Bug(test) failures/expected/text.html [ Failure ]
-Bug(test) failures/expected/timeout.html [ Timeout ]
-Bug(test) failures/expected/hang.html [ WontFix ]
-Bug(test) failures/expected/keyboard.html [ WontFix ]
-Bug(test) failures/expected/exception.html [ WontFix ]
-Bug(test) failures/unexpected/pass.html [ Failure ]
-Bug(test) passes/skipped/skip.html [ Skip ]
-""")
-
- filesystem.maybe_make_directory(LAYOUT_TEST_DIR + '/reftests/foo')
- filesystem.write_text_file(LAYOUT_TEST_DIR + '/reftests/foo/reftest.list', """
-== test.html test-ref.html
-
-== multiple-match-success.html mismatching-ref.html
-== multiple-match-success.html matching-ref.html
-== multiple-match-failure.html mismatching-ref.html
-== multiple-match-failure.html second-mismatching-ref.html
-!= multiple-mismatch-success.html mismatching-ref.html
-!= multiple-mismatch-success.html second-mismatching-ref.html
-!= multiple-mismatch-failure.html mismatching-ref.html
-!= multiple-mismatch-failure.html matching-ref.html
-== multiple-both-success.html matching-ref.html
-== multiple-both-success.html mismatching-ref.html
-!= multiple-both-success.html second-mismatching-ref.html
-== multiple-both-failure.html matching-ref.html
-!= multiple-both-failure.html second-mismatching-ref.html
-!= multiple-both-failure.html matching-ref.html
-""")
-
- # FIXME: This test was only being ignored because of missing a leading '/'.
- # Fixing the typo causes several tests to assert, so disabling the test entirely.
- # Add in a file should be ignored by port.find_test_files().
- #files[LAYOUT_TEST_DIR + '/userscripts/resources/iframe.html'] = 'iframe'
-
- def add_file(test, suffix, contents):
- dirname = filesystem.join(LAYOUT_TEST_DIR, test.name[0:test.name.rfind('/')])
- base = test.base
- filesystem.maybe_make_directory(dirname)
- filesystem.write_binary_file(filesystem.join(dirname, base + suffix), contents)
-
- # Add each test and the expected output, if any.
- test_list = unit_test_list()
- for test in test_list.tests.values():
- add_file(test, test.name[test.name.rfind('.'):], '')
- if test.is_reftest:
- continue
- if test.actual_audio:
- add_file(test, '-expected.wav', test.expected_audio)
- continue
- add_file(test, '-expected.txt', test.expected_text)
- add_file(test, '-expected.png', test.expected_image)
-
- filesystem.write_text_file(filesystem.join(LAYOUT_TEST_DIR, 'virtual', 'passes', 'args-expected.txt'), 'args-txt --virtual-arg')
- # Clear the list of written files so that we can watch what happens during testing.
- filesystem.clear_written_files()
-
-
-class TestPort(Port):
- port_name = 'test'
- default_port_name = 'test-mac-leopard'
-
- """Test implementation of the Port interface."""
- ALL_BASELINE_VARIANTS = (
- 'test-linux-x86_64',
- 'test-mac-snowleopard', 'test-mac-leopard',
- 'test-win-vista', 'test-win-win7', 'test-win-xp',
- )
-
- @classmethod
- def determine_full_port_name(cls, host, options, port_name):
- if port_name == 'test':
- return TestPort.default_port_name
- return port_name
-
- def __init__(self, host, port_name=None, **kwargs):
- Port.__init__(self, host, port_name or TestPort.default_port_name, **kwargs)
- self._tests = unit_test_list()
- self._flakes = set()
- self._expectations_path = LAYOUT_TEST_DIR + '/platform/test/TestExpectations'
- self._results_directory = None
-
- self._operating_system = 'mac'
- if self._name.startswith('test-win'):
- self._operating_system = 'win'
- elif self._name.startswith('test-linux'):
- self._operating_system = 'linux'
-
- version_map = {
- 'test-win-xp': 'xp',
- 'test-win-win7': 'win7',
- 'test-win-vista': 'vista',
- 'test-mac-leopard': 'leopard',
- 'test-mac-snowleopard': 'snowleopard',
- 'test-linux-x86_64': 'lucid',
- }
- self._version = version_map[self._name]
-
- def default_pixel_tests(self):
- return True
-
- def _path_to_driver(self):
- # This routine shouldn't normally be called, but it is called by
- # the mock_drt Driver. We return something, but make sure it's useless.
- return 'MOCK _path_to_driver'
-
- def baseline_search_path(self):
- search_paths = {
- 'test-mac-snowleopard': ['test-mac-snowleopard'],
- 'test-mac-leopard': ['test-mac-leopard', 'test-mac-snowleopard'],
- 'test-win-win7': ['test-win-win7'],
- 'test-win-vista': ['test-win-vista', 'test-win-win7'],
- 'test-win-xp': ['test-win-xp', 'test-win-vista', 'test-win-win7'],
- 'test-linux-x86_64': ['test-linux', 'test-win-win7'],
- }
- return [self._webkit_baseline_path(d) for d in search_paths[self.name()]]
-
- def default_child_processes(self):
- return 1
-
- def worker_startup_delay_secs(self):
- return 0
-
- def check_build(self, needs_http):
- return True
-
- def check_sys_deps(self, needs_http):
- return True
-
- def default_configuration(self):
- return 'Release'
-
- def diff_image(self, expected_contents, actual_contents, tolerance=None):
- diffed = actual_contents != expected_contents
- if not actual_contents and not expected_contents:
- return (None, 0, None)
- if not actual_contents or not expected_contents:
- return (True, 0, None)
- if 'ref' in expected_contents:
- assert tolerance == 0
- if diffed:
- return ("< %s\n---\n> %s\n" % (expected_contents, actual_contents), 1, None)
- return (None, 0, None)
-
- def layout_tests_dir(self):
- return LAYOUT_TEST_DIR
-
- def perf_tests_dir(self):
- return PERF_TEST_DIR
-
- def webkit_base(self):
- return '/test.checkout'
-
- def _skipped_tests_for_unsupported_features(self, test_list):
- return set(['failures/expected/skip_text.html',
- 'failures/unexpected/skip_pass.html',
- 'virtual/skipped'])
-
- def name(self):
- return self._name
-
- def operating_system(self):
- return self._operating_system
-
- def _path_to_wdiff(self):
- return None
-
- def default_results_directory(self):
- return '/tmp/layout-test-results'
-
- def setup_test_run(self):
- pass
-
- def _driver_class(self):
- return TestDriver
-
- def start_http_server(self, additional_dirs=None, number_of_servers=None):
- pass
-
- def start_websocket_server(self):
- pass
-
- def acquire_http_lock(self):
- pass
-
- def stop_http_server(self):
- pass
-
- def stop_websocket_server(self):
- pass
-
- def release_http_lock(self):
- pass
-
- def _path_to_lighttpd(self):
- return "/usr/sbin/lighttpd"
-
- def _path_to_lighttpd_modules(self):
- return "/usr/lib/lighttpd"
-
- def _path_to_lighttpd_php(self):
- return "/usr/bin/php-cgi"
-
- def _path_to_apache(self):
- return "/usr/sbin/httpd"
-
- def _path_to_apache_config_file(self):
- return self._filesystem.join(self.layout_tests_dir(), 'http', 'conf', 'httpd.conf')
-
- def path_to_test_expectations_file(self):
- return self._expectations_path
-
- def all_test_configurations(self):
- """Returns a sequence of the TestConfigurations the port supports."""
- # By default, we assume we want to test every graphics type in
- # every configuration on every system.
- test_configurations = []
- for version, architecture in self._all_systems():
- for build_type in self._all_build_types():
- test_configurations.append(TestConfiguration(
- version=version,
- architecture=architecture,
- build_type=build_type))
- return test_configurations
-
- def _all_systems(self):
- return (('leopard', 'x86'),
- ('snowleopard', 'x86'),
- ('xp', 'x86'),
- ('vista', 'x86'),
- ('win7', 'x86'),
- ('lucid', 'x86'),
- ('lucid', 'x86_64'))
-
- def _all_build_types(self):
- return ('debug', 'release')
-
- def configuration_specifier_macros(self):
- """To avoid surprises when introducing new macros, these are intentionally fixed in time."""
- return {'mac': ['leopard', 'snowleopard'], 'win': ['xp', 'vista', 'win7'], 'linux': ['lucid']}
-
- def all_baseline_variants(self):
- return self.ALL_BASELINE_VARIANTS
-
- def virtual_test_suites(self):
- return [
- VirtualTestSuite('virtual/passes', 'passes', ['--virtual-arg']),
- VirtualTestSuite('virtual/skipped', 'failures/expected', ['--virtual-arg2']),
- ]
-
-
-class TestDriver(Driver):
- """Test/Dummy implementation of the DumpRenderTree interface."""
- next_pid = 1
-
- def __init__(self, *args, **kwargs):
- super(TestDriver, self).__init__(*args, **kwargs)
- self.started = False
- self.pid = 0
-
- def cmd_line(self, pixel_tests, per_test_args):
- pixel_tests_flag = '-p' if pixel_tests else ''
- return [self._port._path_to_driver()] + [pixel_tests_flag] + self._port.get_option('additional_drt_flag', []) + per_test_args
-
- def run_test(self, test_input, stop_when_done):
- if not self.started:
- self.started = True
- self.pid = TestDriver.next_pid
- TestDriver.next_pid += 1
-
- start_time = time.time()
- test_name = test_input.test_name
- test_args = test_input.args or []
- test = self._port._tests[test_name]
- if test.keyboard:
- raise KeyboardInterrupt
- if test.exception:
- raise ValueError('exception from ' + test_name)
- if test.hang:
- time.sleep((float(test_input.timeout) * 4) / 1000.0 + 1.0) # The 1.0 comes from thread_padding_sec in layout_test_runnery.
-
- audio = None
- actual_text = test.actual_text
-
- if 'flaky' in test_name and not test_name in self._port._flakes:
- self._port._flakes.add(test_name)
- actual_text = 'flaky text failure'
-
- if actual_text and test_args and test_name == 'passes/args.html':
- actual_text = actual_text + ' ' + ' '.join(test_args)
-
- if test.actual_audio:
- audio = base64.b64decode(test.actual_audio)
- crashed_process_name = None
- crashed_pid = None
- if test.crash:
- crashed_process_name = self._port.driver_name()
- crashed_pid = 1
- elif test.web_process_crash:
- crashed_process_name = 'WebProcess'
- crashed_pid = 2
-
- crash_log = ''
- if crashed_process_name:
- crash_logs = CrashLogs(self._port.host)
- crash_log = crash_logs.find_newest_log(crashed_process_name, None) or ''
-
- if stop_when_done:
- self.stop()
-
- if test.actual_checksum == test_input.image_hash:
- image = None
- else:
- image = test.actual_image
- return DriverOutput(actual_text, image, test.actual_checksum, audio,
- crash=test.crash or test.web_process_crash, crashed_process_name=crashed_process_name,
- crashed_pid=crashed_pid, crash_log=crash_log,
- test_time=time.time() - start_time, timeout=test.timeout, error=test.error, pid=self.pid)
-
- def stop(self):
- self.started = False
diff --git a/Tools/Scripts/webkitpy/port/win.py b/Tools/Scripts/webkitpy/port/win.py
deleted file mode 100644
index 18175d60b..000000000
--- a/Tools/Scripts/webkitpy/port/win.py
+++ /dev/null
@@ -1,284 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2013 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:
-#
-# * 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 Google name 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.
-
-import atexit
-import os
-import logging
-import re
-import sys
-import time
-
-from webkitpy.common.system.crashlogs import CrashLogs
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.system.executive import ScriptError, Executive
-from webkitpy.common.system.path import abspath_to_uri, cygpath
-from webkitpy.port.apple import ApplePort
-
-
-_log = logging.getLogger(__name__)
-
-
-class WinPort(ApplePort):
- port_name = "win"
-
- VERSION_FALLBACK_ORDER = ["win-xp", "win-vista", "win-7sp0", "win"]
-
- ARCHITECTURES = ['x86']
-
- CRASH_LOG_PREFIX = "CrashLog"
-
- POST_MORTEM_DEBUGGER_KEY = "/HKLM/SOFTWARE/Microsoft/Windows NT/CurrentVersion/AeDebug/%s"
-
- previous_debugger_values = {}
-
- def do_text_results_differ(self, expected_text, actual_text):
- # Sanity was restored in WK2, so we don't need this hack there.
- if self.get_option('webkit_test_runner'):
- return ApplePort.do_text_results_differ(self, expected_text, actual_text)
-
- # This is a hack (which dates back to ORWT).
- # Windows does not have an EDITING DELEGATE, so we strip any EDITING DELEGATE
- # messages to make more of the tests pass.
- # It's possible more of the ports might want this and this could move down into WebKitPort.
- delegate_regexp = re.compile("^EDITING DELEGATE: .*?\n", re.MULTILINE)
- expected_text = delegate_regexp.sub("", expected_text)
- actual_text = delegate_regexp.sub("", actual_text)
- return expected_text != actual_text
-
- def default_baseline_search_path(self):
- name = self._name.replace('-wk2', '')
- if name.endswith(self.FUTURE_VERSION):
- fallback_names = [self.port_name]
- else:
- fallback_names = self.VERSION_FALLBACK_ORDER[self.VERSION_FALLBACK_ORDER.index(name):-1] + [self.port_name]
- # FIXME: The AppleWin port falls back to AppleMac for some results. Eventually we'll have a shared 'apple' port.
- if self.get_option('webkit_test_runner'):
- fallback_names.insert(0, 'win-wk2')
- fallback_names.append('mac-wk2')
- # Note we do not add 'wk2' here, even though it's included in _skipped_search_paths().
- # FIXME: Perhaps we should get this list from MacPort?
- fallback_names.extend(['mac-lion', 'mac'])
- return map(self._webkit_baseline_path, fallback_names)
-
- def operating_system(self):
- return 'win'
-
- def show_results_html_file(self, results_filename):
- self._run_script('run-safari', [abspath_to_uri(SystemHost().platform, results_filename)])
-
- # FIXME: webkitperl/httpd.pm installs /usr/lib/apache/libphp4.dll on cycwin automatically
- # as part of running old-run-webkit-tests. That's bad design, but we may need some similar hack.
- # We might use setup_environ_for_server for such a hack (or modify apache_http_server.py).
-
- def _runtime_feature_list(self):
- supported_features_command = [self._path_to_driver(), '--print-supported-features']
- try:
- output = self._executive.run_command(supported_features_command, error_handler=Executive.ignore_error)
- except OSError, e:
- _log.warn("Exception running driver: %s, %s. Driver must be built before calling WebKitPort.test_expectations()." % (supported_features_command, e))
- return None
-
- # Note: win/DumpRenderTree.cpp does not print a leading space before the features_string.
- match_object = re.match("SupportedFeatures:\s*(?P<features_string>.*)\s*", output)
- if not match_object:
- return None
- return match_object.group('features_string').split(' ')
-
- # Note: These are based on the stock Cygwin locations for these files.
- def _uses_apache(self):
- return False
-
- def _path_to_lighttpd(self):
- return "/usr/sbin/lighttpd"
-
- def _path_to_lighttpd_modules(self):
- return "/usr/lib/lighttpd"
-
- def _path_to_lighttpd_php(self):
- return "/usr/bin/php-cgi"
-
- def _driver_tempdir_for_environment(self):
- return cygpath(self._driver_tempdir())
-
- def test_search_path(self):
- test_fallback_names = [path for path in self.baseline_search_path() if not path.startswith(self._webkit_baseline_path('mac'))]
- return map(self._webkit_baseline_path, test_fallback_names)
-
- def _ntsd_location(self):
- possible_paths = [self._filesystem.join(os.environ['PROGRAMFILES'], "Windows Kits", "8.0", "Debuggers", "x86", "ntsd.exe"),
- self._filesystem.join(os.environ['PROGRAMFILES'], "Windows Kits", "8.0", "Debuggers", "x64", "ntsd.exe"),
- self._filesystem.join(os.environ['PROGRAMFILES'], "Debugging Tools for Windows (x86)", "ntsd.exe"),
- self._filesystem.join(os.environ['ProgramW6432'], "Debugging Tools for Windows (x64)", "ntsd.exe"),
- self._filesystem.join(os.environ['SYSTEMROOT'], "system32", "ntsd.exe")]
- for path in possible_paths:
- expanded_path = self._filesystem.expanduser(path)
- if self._filesystem.exists(expanded_path):
- _log.debug("Using ntsd located in '%s'" % path)
- return expanded_path
- return None
-
- def create_debugger_command_file(self):
- debugger_temp_directory = str(self._filesystem.mkdtemp())
- command_file = self._filesystem.join(debugger_temp_directory, "debugger-commands.txt")
- commands = ''.join(['.logopen /t "%s\\%s.txt"\n' % (cygpath(self.results_directory()), self.CRASH_LOG_PREFIX),
- '.srcpath "%s"\n' % cygpath(self._webkit_finder.webkit_base()),
- '!analyze -vv\n',
- '~*kpn\n',
- 'q\n'])
- self._filesystem.write_text_file(command_file, commands)
- return command_file
-
- def read_registry_string(self, key):
- registry_key = self.POST_MORTEM_DEBUGGER_KEY % key
- read_registry_command = ["regtool", "--wow32", "get", registry_key]
- value = self._executive.run_command(read_registry_command, error_handler=Executive.ignore_error)
- return value.rstrip()
-
- def write_registry_string(self, key, value):
- registry_key = self.POST_MORTEM_DEBUGGER_KEY % key
- set_reg_value_command = ["regtool", "--wow32", "set", "-s", str(registry_key), str(value)]
- rc = self._executive.run_command(set_reg_value_command, return_exit_code=True)
- if rc == 2:
- add_reg_value_command = ["regtool", "--wow32", "add", "-s", str(registry_key)]
- rc = self._executive.run_command(add_reg_value_command, return_exit_code=True)
- if rc == 0:
- rc = self._executive.run_command(set_reg_value_command, return_exit_code=True)
- if rc:
- _log.warn("Error setting key: %s to value %s. Error=%ld." % (key, value, rc))
- return False
-
- # On Windows Vista/7 with UAC enabled, regtool will fail to modify the registry, but will still
- # return a successful exit code. So we double-check here that the value we tried to write to the
- # registry was really written.
- if self.read_registry_string(key) != value:
- _log.warn("Regtool reported success, but value of key %s did not change." % key)
- return False
-
- return True
-
- def setup_crash_log_saving(self):
- if '_NT_SYMBOL_PATH' not in os.environ:
- _log.warning("The _NT_SYMBOL_PATH environment variable is not set. Crash logs will not be saved.")
- return None
- ntsd_path = self._ntsd_location()
- if not ntsd_path:
- _log.warning("Can't find ntsd.exe. Crash logs will not be saved.")
- return None
- # If we used -c (instead of -cf) we could pass the commands directly on the command line. But
- # when the commands include multiple quoted paths (e.g., for .logopen and .srcpath), Windows
- # fails to invoke the post-mortem debugger at all (perhaps due to a bug in Windows's command
- # line parsing). So we save the commands to a file instead and tell the debugger to execute them
- # using -cf.
- command_file = self.create_debugger_command_file()
- if not command_file:
- return None
- debugger_options = '"{0}" -p %ld -e %ld -g -noio -lines -cf "{1}"'.format(cygpath(ntsd_path), cygpath(command_file))
- registry_settings = {'Debugger': debugger_options, 'Auto': "1"}
- for key in registry_settings:
- self.previous_debugger_values[key] = self.read_registry_string(key)
- self.write_registry_string(key, registry_settings[key])
-
- def restore_crash_log_saving(self):
- for key in self.previous_debugger_values:
- self.write_registry_string(key, self.previous_debugger_values[key])
-
- def setup_test_run(self):
- atexit.register(self.restore_crash_log_saving)
- self.setup_crash_log_saving()
- super(WinPort, self).setup_test_run()
-
- def clean_up_test_run(self):
- self.restore_crash_log_saving()
- super(WinPort, self).clean_up_test_run()
-
- def _get_crash_log(self, name, pid, stdout, stderr, newer_than, time_fn=None, sleep_fn=None, wait_for_log=True):
- # Note that we do slow-spin here and wait, since it appears the time
- # ReportCrash takes to actually write and flush the file varies when there are
- # lots of simultaneous crashes going on.
- # FIXME: Should most of this be moved into CrashLogs()?
- time_fn = time_fn or time.time
- sleep_fn = sleep_fn or time.sleep
- crash_log = ''
- crash_logs = CrashLogs(self.host, self.results_directory())
- now = time_fn()
- # FIXME: delete this after we're sure this code is working ...
- _log.debug('looking for crash log for %s:%s' % (name, str(pid)))
- deadline = now + 5 * int(self.get_option('child_processes', 1))
- while not crash_log and now <= deadline:
- # If the system_pid hasn't been determined yet, just try with the passed in pid. We'll be checking again later
- system_pid = self._executive.pid_to_system_pid.get(pid)
- if system_pid == None:
- break # We haven't mapped cygwin pid->win pid yet
- crash_log = crash_logs.find_newest_log(name, system_pid, include_errors=True, newer_than=newer_than)
- if not wait_for_log:
- break
- if not crash_log or not [line for line in crash_log.splitlines() if line.startswith('quit:')]:
- sleep_fn(0.1)
- now = time_fn()
-
- if not crash_log:
- return (stderr, None)
- return (stderr, crash_log)
-
- def look_for_new_crash_logs(self, crashed_processes, start_time):
- """Since crash logs can take a long time to be written out if the system is
- under stress do a second pass at the end of the test run.
-
- crashes: test_name -> pid, process_name tuple of crashed process
- start_time: time the tests started at. We're looking for crash
- logs after that time.
- """
- crash_logs = {}
- for (test_name, process_name, pid) in crashed_processes:
- # Passing None for output. This is a second pass after the test finished so
- # if the output had any logging we would have already collected it.
- crash_log = self._get_crash_log(process_name, pid, None, None, start_time, wait_for_log=False)[1]
- if crash_log:
- crash_logs[test_name] = crash_log
- return crash_logs
-
- def find_system_pid(self, name, pid):
- system_pid = int(pid)
- # Windows and Cygwin PIDs are not the same. We need to find the Windows
- # PID for our Cygwin process so we can match it later to any crash
- # files we end up creating (which will be tagged with the Windows PID)
- ps_process = self._executive.run_command(['ps', '-e'], error_handler=Executive.ignore_error)
- for line in ps_process.splitlines():
- tokens = line.strip().split()
- try:
- cpid, ppid, pgid, winpid, tty, uid, stime, process_name = tokens
- if process_name.endswith(name):
- self._executive.pid_to_system_pid[int(cpid)] = int(winpid)
- if int(pid) == int(cpid):
- system_pid = int(winpid)
- break
- except ValueError, e:
- pass
-
- return system_pid
diff --git a/Tools/Scripts/webkitpy/port/win_unittest.py b/Tools/Scripts/webkitpy/port/win_unittest.py
deleted file mode 100644
index 97da3a1b2..000000000
--- a/Tools/Scripts/webkitpy/port/win_unittest.py
+++ /dev/null
@@ -1,118 +0,0 @@
-# Copyright (C) 2011 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.
-
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.executive_mock import MockExecutive, MockExecutive2
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.port import port_testcase
-from webkitpy.port.win import WinPort
-from webkitpy.tool.mocktool import MockOptions
-
-
-class WinPortTest(port_testcase.PortTestCase):
- os_name = 'win'
- os_version = 'xp'
- port_name = 'win-xp'
- port_maker = WinPort
-
- def test_show_results_html_file(self):
- port = self.make_port()
- port._executive = MockExecutive(should_log=True)
- capture = OutputCapture()
- capture.capture_output()
- port.show_results_html_file('test.html')
- _, _, logs = capture.restore_output()
- # We can't know for sure what path will be produced by cygpath, but we can assert about
- # everything else.
- self.assertTrue(logs.startswith("MOCK run_command: ['Tools/Scripts/run-safari', '--release', '"))
- self.assertTrue(logs.endswith("test.html'], cwd=/mock-checkout\n"))
-
- def _assert_search_path(self, expected_search_paths, version, use_webkit2=False):
- port = self.make_port(port_name='win', os_version=version, options=MockOptions(webkit_test_runner=use_webkit2))
- absolute_search_paths = map(port._webkit_baseline_path, expected_search_paths)
- self.assertEqual(port.baseline_search_path(), absolute_search_paths)
-
- def test_baseline_search_path(self):
- self._assert_search_path(['win-xp', 'win-vista', 'win-7sp0', 'win', 'mac-lion', 'mac'], 'xp')
- self._assert_search_path(['win-vista', 'win-7sp0', 'win', 'mac-lion', 'mac'], 'vista')
- self._assert_search_path(['win-7sp0', 'win', 'mac-lion', 'mac'], '7sp0')
-
- self._assert_search_path(['win-wk2', 'win-xp', 'win-vista', 'win-7sp0', 'win', 'mac-wk2', 'mac-lion', 'mac'], 'xp', use_webkit2=True)
- self._assert_search_path(['win-wk2', 'win-vista', 'win-7sp0', 'win', 'mac-wk2', 'mac-lion', 'mac'], 'vista', use_webkit2=True)
- self._assert_search_path(['win-wk2', 'win-7sp0', 'win', 'mac-wk2', 'mac-lion', 'mac'], '7sp0', use_webkit2=True)
-
- def _assert_version(self, port_name, expected_version):
- host = MockSystemHost(os_name='win', os_version=expected_version)
- port = WinPort(host, port_name=port_name)
- self.assertEqual(port.version(), expected_version)
-
- def test_versions(self):
- self._assert_version('win-xp', 'xp')
- self._assert_version('win-vista', 'vista')
- self._assert_version('win-7sp0', '7sp0')
- self.assertRaises(AssertionError, self._assert_version, 'win-me', 'xp')
-
- def test_compare_text(self):
- expected = "EDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\nfoo\nEDITING DELEGATE: webViewDidChangeSelection:WebViewDidChangeSelectionNotification\n"
- port = self.make_port()
- self.assertFalse(port.do_text_results_differ(expected, "foo\n"))
- self.assertTrue(port.do_text_results_differ(expected, "foo"))
- self.assertTrue(port.do_text_results_differ(expected, "bar"))
-
- # This hack doesn't exist in WK2.
- port._options = MockOptions(webkit_test_runner=True)
- self.assertTrue(port.do_text_results_differ(expected, "foo\n"))
-
- def test_operating_system(self):
- self.assertEqual('win', self.make_port().operating_system())
-
- def test_runtime_feature_list(self):
- port = self.make_port()
- port._executive.run_command = lambda command, cwd=None, error_handler=None: "Nonsense"
- # runtime_features_list returns None when its results are meaningless (it couldn't run DRT or parse the output, etc.)
- self.assertEqual(port._runtime_feature_list(), None)
- port._executive.run_command = lambda command, cwd=None, error_handler=None: "SupportedFeatures:foo bar"
- self.assertEqual(port._runtime_feature_list(), ['foo', 'bar'])
-
- def test_expectations_files(self):
- self.assertEqual(len(self.make_port().expectations_files()), 3)
- self.assertEqual(len(self.make_port(options=MockOptions(webkit_test_runner=True, configuration='Release')).expectations_files()), 5)
-
- def test_get_crash_log(self):
- # Win crash logs are tested elsewhere, so here we just make sure we don't crash.
- def fake_time_cb():
- times = [0, 20, 40]
- return lambda: times.pop(0)
- port = self.make_port(port_name='win')
- port._get_crash_log('DumpRenderTree', 1234, '', '', 0,
- time_fn=fake_time_cb(), sleep_fn=lambda delay: None)
diff --git a/Tools/Scripts/webkitpy/port/xvfbdriver.py b/Tools/Scripts/webkitpy/port/xvfbdriver.py
deleted file mode 100644
index fc6675029..000000000
--- a/Tools/Scripts/webkitpy/port/xvfbdriver.py
+++ /dev/null
@@ -1,113 +0,0 @@
-# Copyright (C) 2010 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 Google name 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.
-
-import logging
-import os
-import re
-import time
-
-from webkitpy.port.server_process import ServerProcess
-from webkitpy.port.driver import Driver
-from webkitpy.common.system.file_lock import FileLock
-
-_log = logging.getLogger(__name__)
-
-
-class XvfbDriver(Driver):
- @staticmethod
- def check_xvfb(port):
- xvfb_found = port.host.executive.run_command(['which', 'Xvfb'], return_exit_code=True) is 0
- if not xvfb_found:
- _log.error("No Xvfb found. Cannot run layout tests.")
- return xvfb_found
-
- def __init__(self, *args, **kwargs):
- Driver.__init__(self, *args, **kwargs)
- self._guard_lock = None
- self._startup_delay_secs = 1.0
-
- def _next_free_display(self):
- running_pids = self._port.host.executive.run_command(['ps', '-eo', 'comm,command'])
- reserved_screens = set()
- for pid in running_pids.split('\n'):
- match = re.match('(X|Xvfb|Xorg)\s+.*\s:(?P<screen_number>\d+)', pid)
- if match:
- reserved_screens.add(int(match.group('screen_number')))
- for i in range(99):
- if i not in reserved_screens:
- _guard_lock_file = self._port.host.filesystem.join('/tmp', 'WebKitXvfb.lock.%i' % i)
- self._guard_lock = self._port.host.make_file_lock(_guard_lock_file)
- if self._guard_lock.acquire_lock():
- return i
-
- def _start(self, pixel_tests, per_test_args):
- self.stop()
-
- # Use even displays for pixel tests and odd ones otherwise. When pixel tests are disabled,
- # DriverProxy creates two drivers, one for normal and the other for ref tests. Both have
- # the same worker number, so this prevents them from using the same Xvfb instance.
- display_id = self._next_free_display()
- self._lock_file = "/tmp/.X%d-lock" % display_id
-
- run_xvfb = ["Xvfb", ":%d" % display_id, "-screen", "0", "800x600x24", "-nolisten", "tcp"]
- with open(os.devnull, 'w') as devnull:
- self._xvfb_process = self._port.host.executive.popen(run_xvfb, stderr=devnull)
-
- # Crashes intend to occur occasionally in the first few tests that are run through each
- # worker because the Xvfb display isn't ready yet. Halting execution a bit should avoid that.
- time.sleep(self._startup_delay_secs)
-
- server_name = self._port.driver_name()
- environment = self._port.setup_environ_for_server(server_name)
- # We must do this here because the DISPLAY number depends on _worker_number
- environment['DISPLAY'] = ":%d" % display_id
- self._driver_tempdir = self._port._filesystem.mkdtemp(prefix='%s-' % self._port.driver_name())
- environment['DUMPRENDERTREE_TEMP'] = str(self._driver_tempdir)
- environment['LOCAL_RESOURCE_ROOT'] = self._port.layout_tests_dir()
-
- # Currently on WebKit2, there is no API for setting the application
- # cache directory. Each worker should have it's own and it should be
- # cleaned afterwards, so we set it to inside the temporary folder by
- # prepending XDG_CACHE_HOME with DUMPRENDERTREE_TEMP.
- environment['XDG_CACHE_HOME'] = self._port.host.filesystem.join(str(self._driver_tempdir), 'appcache')
-
- self._crashed_process_name = None
- self._crashed_pid = None
- self._server_process = self._port._server_process_constructor(self._port, server_name, self.cmd_line(pixel_tests, per_test_args), environment)
- self._server_process.start()
-
- def stop(self):
- super(XvfbDriver, self).stop()
- if self._guard_lock:
- self._guard_lock.release_lock()
- self._guard_lock = None
- if getattr(self, '_xvfb_process', None):
- self._port.host.executive.kill_process(self._xvfb_process.pid)
- self._xvfb_process = None
- if self._port.host.filesystem.exists(self._lock_file):
- self._port.host.filesystem.remove(self._lock_file)
diff --git a/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py b/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py
deleted file mode 100644
index ec9f14c45..000000000
--- a/Tools/Scripts/webkitpy/port/xvfbdriver_unittest.py
+++ /dev/null
@@ -1,135 +0,0 @@
-# Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com>
-#
-# 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.
-
-import logging
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive2
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.port import Port
-from webkitpy.port.server_process_mock import MockServerProcess
-from webkitpy.port.xvfbdriver import XvfbDriver
-from webkitpy.tool.mocktool import MockOptions
-
-_log = logging.getLogger(__name__)
-
-
-class XvfbDriverTest(unittest.TestCase):
- def make_driver(self, worker_number=0, xorg_running=False, executive=None):
- port = Port(MockSystemHost(log_executive=True, executive=executive), 'xvfbdrivertestport', options=MockOptions(configuration='Release'))
- port._config.build_directory = lambda configuration: "/mock-build"
- port._server_process_constructor = MockServerProcess
- if xorg_running:
- port._executive._running_pids['Xorg'] = 108
-
- driver = XvfbDriver(port, worker_number=worker_number, pixel_tests=True)
- driver._startup_delay_secs = 0
- return driver
-
- def cleanup_driver(self, driver):
- # Setting _xvfb_process member to None is necessary as the Driver object is stopped on deletion,
- # killing the Xvfb process if present. Thus, this method should only be called from tests that do not
- # intend to test the behavior of XvfbDriver.stop.
- driver._xvfb_process = None
-
- def assertDriverStartSuccessful(self, driver, expected_logs, expected_display, pixel_tests=False):
- OutputCapture().assert_outputs(self, driver.start, [pixel_tests, []], expected_logs=expected_logs)
- self.assertTrue(driver._server_process.started)
- self.assertEqual(driver._server_process.env["DISPLAY"], expected_display)
-
- def test_start_no_pixel_tests(self):
- driver = self.make_driver()
- expected_logs = "MOCK run_command: ['ps', '-eo', 'comm,command'], cwd=None\nMOCK popen: ['Xvfb', ':0', '-screen', '0', '800x600x24', '-nolisten', 'tcp']\n"
- self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":0")
- self.cleanup_driver(driver)
-
- def test_start_pixel_tests(self):
- driver = self.make_driver()
- expected_logs = "MOCK run_command: ['ps', '-eo', 'comm,command'], cwd=None\nMOCK popen: ['Xvfb', ':0', '-screen', '0', '800x600x24', '-nolisten', 'tcp']\n"
- self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":0", pixel_tests=True)
- self.cleanup_driver(driver)
-
- def test_start_arbitrary_worker_number(self):
- driver = self.make_driver(worker_number=17)
- expected_logs = "MOCK run_command: ['ps', '-eo', 'comm,command'], cwd=None\nMOCK popen: ['Xvfb', ':0', '-screen', '0', '800x600x24', '-nolisten', 'tcp']\n"
- self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":0", pixel_tests=True)
- self.cleanup_driver(driver)
-
- def test_next_free_display(self):
- output = "Xorg /usr/bin/X :0 -auth /var/run/lightdm/root/:0 -nolisten tcp vt7 -novtswitch -background none\nXvfb Xvfb :1 -screen 0 800x600x24 -nolisten tcp"
- executive = MockExecutive2(output)
- driver = self.make_driver(executive=executive)
- self.assertEqual(driver._next_free_display(), 2)
- self.cleanup_driver(driver)
- output = "X /usr/bin/X :0 vt7 -nolisten tcp -auth /var/run/xauth/A:0-8p7Ybb"
- executive = MockExecutive2(output)
- driver = self.make_driver(executive=executive)
- self.assertEqual(driver._next_free_display(), 1)
- self.cleanup_driver(driver)
- output = "Xvfb Xvfb :0 -screen 0 800x600x24 -nolisten tcp"
- executive = MockExecutive2(output)
- driver = self.make_driver(executive=executive)
- self.assertEqual(driver._next_free_display(), 1)
- self.cleanup_driver(driver)
- output = "Xvfb Xvfb :1 -screen 0 800x600x24 -nolisten tcp\nXvfb Xvfb :0 -screen 0 800x600x24 -nolisten tcp\nXvfb Xvfb :3 -screen 0 800x600x24 -nolisten tcp"
- executive = MockExecutive2(output)
- driver = self.make_driver(executive=executive)
- self.assertEqual(driver._next_free_display(), 2)
- self.cleanup_driver(driver)
-
- def test_start_next_worker(self):
- driver = self.make_driver()
- driver._next_free_display = lambda: 0
- expected_logs = "MOCK popen: ['Xvfb', ':0', '-screen', '0', '800x600x24', '-nolisten', 'tcp']\n"
- self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":0", pixel_tests=True)
- self.cleanup_driver(driver)
- driver = self.make_driver()
- driver._next_free_display = lambda: 3
- expected_logs = "MOCK popen: ['Xvfb', ':3', '-screen', '0', '800x600x24', '-nolisten', 'tcp']\n"
- self.assertDriverStartSuccessful(driver, expected_logs=expected_logs, expected_display=":3", pixel_tests=True)
- self.cleanup_driver(driver)
-
- def test_stop(self):
- filesystem = MockFileSystem(files={'/tmp/.X42-lock': '1234\n'})
- port = Port(MockSystemHost(log_executive=True, filesystem=filesystem), 'xvfbdrivertestport', options=MockOptions(configuration='Release'))
- port._executive.kill_process = lambda x: _log.info("MOCK kill_process pid: " + str(x))
- driver = XvfbDriver(port, worker_number=0, pixel_tests=True)
-
- class FakeXvfbProcess(object):
- pid = 1234
-
- driver._xvfb_process = FakeXvfbProcess()
- driver._lock_file = '/tmp/.X42-lock'
-
- expected_logs = "MOCK kill_process pid: 1234\n"
- OutputCapture().assert_outputs(self, driver.stop, [], expected_logs=expected_logs)
-
- self.assertIsNone(driver._xvfb_process)
- self.assertFalse(port._filesystem.exists(driver._lock_file))
diff --git a/Tools/Scripts/webkitpy/pylintrc b/Tools/Scripts/webkitpy/pylintrc
deleted file mode 100644
index caadcfbe6..000000000
--- a/Tools/Scripts/webkitpy/pylintrc
+++ /dev/null
@@ -1,312 +0,0 @@
-# Copyright (c) 2012 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.
-
-[MASTER]
-
-# Specify a configuration file.
-#rcfile=
-
-# Python code to execute, usually for sys.path manipulation such as
-# pygtk.require().
-#init-hook=
-
-# Profiled execution.
-profile=no
-
-# Add files or directories to the blacklist. They should be base names, not
-# paths.
-ignore=CVS
-
-# Pickle collected data for later comparisons.
-persistent=yes
-
-# List of plugins (as comma separated values of python modules names) to load,
-# usually to register additional checkers.
-load-plugins=
-
-
-[MESSAGES CONTROL]
-
-# Enable the message, report, category or checker with the given id(s). You can
-# either give multiple identifier separated by comma (,) or put this option
-# multiple time.
-#enable=
-
-# Disable the message, report, category or checker with the given id(s). You
-# can either give multiple identifier separated by comma (,) or put this option
-# multiple time (only on the command line, not in the configuration file where
-# it should appear only once).
-# CHANGED:
-# C0103: Invalid name ""
-# C0111: Missing docstring
-# C0301: Line too long
-# C0302: Too many lines in module (N)
-# I0010: Unable to consider inline option ''
-# I0011: Locally disabling WNNNN
-#
-# R0201: Method could be a function
-# R0801: Similar lines in N files
-# R0901: Too many ancestors (8/7)
-# R0902: Too many instance attributes (N/7)
-# R0903: Too few public methods (N/2)
-# R0904: Too many public methods (N/20)
-# R0911: Too many return statements (N/6)
-# R0912: Too many branches (N/12)
-# R0913: Too many arguments (N/5)
-# R0914: Too many local variables (N/15)
-# R0915: Too many statements (N/50)
-# R0921: Abstract class not referenced
-# R0922: Abstract class is only referenced 1 times
-# W0122: Use of the exec statement
-# W0141: Used builtin function ''
-# W0212: Access to a protected member X of a client class
-# W0142: Used * or ** magic
-# W0401: Wildcard import X
-# W0402: Uses of a deprecated module 'string'
-# W0404: 41: Reimport 'XX' (imported line NN)
-# W0511: TODO
-# W0603: Using the global statement
-# W0614: Unused import X from wildcard import
-# W0703: Catch "Exception"
-# W1201: Specify string format arguments as logging function parameters
-disable=C0103,C0111,C0301,C0302,I0010,I0011,R0201,R0801,R0901,R0902,R0903,R0904,R0911,R0912,R0913,R0914,R0915,R0921,R0922,W0122,W0141,W0142,W0212,W0401,W0402,W0404,W0511,W0603,W0614,W0703,W1201
-
-
-[REPORTS]
-
-# Set the output format. Available formats are text, parseable, colorized, msvs
-# (visual studio) and html
-output-format=text
-
-# Include message's id in output
-include-ids=yes
-
-# Put messages in a separate file for each module / package specified on the
-# command line instead of printing them on stdout. Reports (if any) will be
-# written in a file name "pylint_global.[txt|html]".
-files-output=no
-
-# Tells whether to display a full report or only the messages
-# CHANGED:
-reports=no
-
-# Python expression which should return a note less than 10 (10 is the highest
-# note). You have access to the variables errors warning, statement which
-# respectively contain the number of errors / warnings messages and the total
-# number of statements analyzed. This is used by the global evaluation report
-# (RP0004).
-evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)
-
-# Add a comment according to your evaluation note. This is used by the global
-# evaluation report (RP0004).
-comment=no
-
-
-[VARIABLES]
-
-# Tells whether we should check for unused import in __init__ files.
-init-import=no
-
-# A regular expression matching the beginning of the name of dummy variables
-# (i.e. not used).
-dummy-variables-rgx=_|dummy
-
-# List of additional names supposed to be defined in builtins. Remember that
-# you should avoid to define new builtins when possible.
-additional-builtins=
-
-
-[TYPECHECK]
-
-# Tells whether missing members accessed in mixin class should be ignored. A
-# mixin class is detected if its name ends with "mixin" (case insensitive).
-ignore-mixin-members=yes
-
-# List of classes names for which member attributes should not be checked
-# (useful for classes with attributes dynamically set).
-ignored-classes=SQLObject,twisted.internet.reactor,hashlib,google.appengine.api.memcache
-
-# When zope mode is activated, add a predefined set of Zope acquired attributes
-# to generated-members.
-zope=no
-
-# List of members which are set dynamically and missed by pylint inference
-# system, and so shouldn't trigger E0201 when accessed. Python regular
-# expressions are accepted.
-generated-members=REQUEST,acl_users,aq_parent
-
-
-[MISCELLANEOUS]
-
-# List of note tags to take in consideration, separated by a comma.
-notes=FIXME,XXX,TODO
-
-
-[SIMILARITIES]
-
-# Minimum lines number of a similarity.
-min-similarity-lines=4
-
-# Ignore comments when computing similarities.
-ignore-comments=yes
-
-# Ignore docstrings when computing similarities.
-ignore-docstrings=yes
-
-
-[FORMAT]
-
-# Maximum number of characters on a single line.
-max-line-length=200
-
-# Maximum number of lines in a module
-max-module-lines=1000
-
-# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1
-# tab).
-# CHANGED:
-indent-string=' '
-
-
-[BASIC]
-
-# Required attributes for module, separated by a comma
-required-attributes=
-
-# List of builtins function names that should not be used, separated by a comma
-bad-functions=map,filter,apply,input
-
-# Regular expression which should only match correct module names
-module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$
-
-# Regular expression which should only match correct module level names
-const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$
-
-# Regular expression which should only match correct class names
-class-rgx=[A-Z_][a-zA-Z0-9]+$
-
-# Regular expression which should only match correct function names
-function-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match correct method names
-method-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match correct instance attribute names
-attr-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match correct argument names
-argument-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match correct variable names
-variable-rgx=[a-z_][a-z0-9_]{2,30}$
-
-# Regular expression which should only match correct list comprehension /
-# generator expression variable names
-inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$
-
-# Good variable names which should always be accepted, separated by a comma
-good-names=i,j,k,ex,Run,_
-
-# Bad variable names which should always be refused, separated by a comma
-bad-names=foo,bar,baz,toto,tutu,tata
-
-# Regular expression which should only match functions or classes name which do
-# not require a docstring
-no-docstring-rgx=__.*__
-
-
-[DESIGN]
-
-# Maximum number of arguments for function / method
-max-args=5
-
-# Argument names that match this expression will be ignored. Default to name
-# with leading underscore
-ignored-argument-names=_.*
-
-# Maximum number of locals for function / method body
-max-locals=15
-
-# Maximum number of return / yield for function / method body
-max-returns=6
-
-# Maximum number of branch for function / method body
-max-branchs=12
-
-# Maximum number of statements in function / method body
-max-statements=50
-
-# Maximum number of parents for a class (see R0901).
-max-parents=7
-
-# Maximum number of attributes for a class (see R0902).
-max-attributes=7
-
-# Minimum number of public methods for a class (see R0903).
-min-public-methods=2
-
-# Maximum number of public methods for a class (see R0904).
-max-public-methods=20
-
-
-[CLASSES]
-
-# List of interface methods to ignore, separated by a comma. This is used for
-# instance to not check methods defines in Zope's Interface base class.
-ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by
-
-# List of method names used to declare (i.e. assign) instance attributes.
-defining-attr-methods=__init__,__new__,setUp
-
-# List of valid names for the first argument in a class method.
-valid-classmethod-first-arg=cls
-
-
-[IMPORTS]
-
-# Deprecated modules which should not be used, separated by a comma
-deprecated-modules=regsub,string,TERMIOS,Bastion,rexec
-
-# Create a graph of every (i.e. internal and external) dependencies in the
-# given file (report RP0402 must not be disabled)
-import-graph=
-
-# Create a graph of external dependencies in the given file (report RP0402 must
-# not be disabled)
-ext-import-graph=
-
-# Create a graph of internal dependencies in the given file (report RP0402 must
-# not be disabled)
-int-import-graph=
-
-
-[EXCEPTIONS]
-
-# Exceptions that will emit a warning when being caught. Defaults to
-# "Exception"
-overgeneral-exceptions=Exception
diff --git a/Tools/Scripts/webkitpy/style/__init__.py b/Tools/Scripts/webkitpy/style/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/style/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/style/checker.py b/Tools/Scripts/webkitpy/style/checker.py
deleted file mode 100644
index f9e4a4695..000000000
--- a/Tools/Scripts/webkitpy/style/checker.py
+++ /dev/null
@@ -1,895 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2010 ProFUSION embedded systems
-#
-# 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.
-
-"""Front end of some style-checker modules."""
-
-import logging
-import os.path
-import re
-import sys
-
-from checkers.common import categories as CommonCategories
-from checkers.common import CarriageReturnChecker
-from checkers.changelog import ChangeLogChecker
-from checkers.cpp import CppChecker
-from checkers.cmake import CMakeChecker
-from checkers.jsonchecker import JSONChecker
-from checkers.png import PNGChecker
-from checkers.python import PythonChecker
-from checkers.test_expectations import TestExpectationsChecker
-from checkers.text import TextChecker
-from checkers.watchlist import WatchListChecker
-from checkers.xcodeproj import XcodeProjectFileChecker
-from checkers.xml import XMLChecker
-from error_handlers import DefaultStyleErrorHandler
-from filter import FilterConfiguration
-from optparser import ArgumentParser
-from optparser import DefaultCommandOptionValues
-from webkitpy.common.system.logutils import configure_logging as _configure_logging
-
-
-_log = logging.getLogger(__name__)
-
-
-# These are default option values for the command-line option parser.
-_DEFAULT_MIN_CONFIDENCE = 1
-_DEFAULT_OUTPUT_FORMAT = 'emacs'
-
-
-# FIXME: For style categories we will never want to have, remove them.
-# For categories for which we want to have similar functionality,
-# modify the implementation and enable them.
-#
-# Throughout this module, we use "filter rule" rather than "filter"
-# for an individual boolean filter flag like "+foo". This allows us to
-# reserve "filter" for what one gets by collectively applying all of
-# the filter rules.
-#
-# The base filter rules are the filter rules that begin the list of
-# filter rules used to check style. For example, these rules precede
-# any user-specified filter rules. Since by default all categories are
-# checked, this list should normally include only rules that begin
-# with a "-" sign.
-_BASE_FILTER_RULES = [
- '-build/endif_comment',
- '-build/include_what_you_use', # <string> for std::string
- '-build/storage_class', # const static
- '-legal/copyright',
- '-readability/multiline_comment',
- '-readability/braces', # int foo() {};
- '-readability/fn_size',
- '-readability/casting',
- '-readability/function',
- '-runtime/arrays', # variable length array
- '-runtime/casting',
- '-runtime/sizeof',
- '-runtime/explicit', # explicit
- '-runtime/virtual', # virtual dtor
- '-runtime/printf',
- '-runtime/threadsafe_fn',
- '-runtime/rtti',
- '-whitespace/blank_line',
- '-whitespace/end_of_line',
- # List Python pep8 categories last.
- #
- # Because much of WebKit's Python code base does not abide by the
- # PEP8 79 character limit, we ignore the 79-character-limit category
- # pep8/E501 for now.
- #
- # FIXME: Consider bringing WebKit's Python code base into conformance
- # with the 79 character limit, or some higher limit that is
- # agreeable to the WebKit project.
- '-pep8/E501',
-
- # FIXME: Move the pylint rules from the pylintrc to here. This will
- # also require us to re-work lint-webkitpy to produce the equivalent output.
- ]
-
-
-# The path-specific filter rules.
-#
-# This list is order sensitive. Only the first path substring match
-# is used. See the FilterConfiguration documentation in filter.py
-# for more information on this list.
-#
-# Each string appearing in this nested list should have at least
-# one associated unit test assertion. These assertions are located,
-# for example, in the test_path_rules_specifier() unit test method of
-# checker_unittest.py.
-_PATH_RULES_SPECIFIER = [
- # Files in these directories are consumers of the WebKit
- # API and therefore do not follow the same header including
- # discipline as WebCore.
-
- ([# TestNetscapePlugIn has no config.h and uses funny names like
- # NPP_SetWindow.
- "Tools/DumpRenderTree/TestNetscapePlugIn/",
- # The API test harnesses have no config.h and use funny macros like
- # TEST_CLASS_NAME.
- "Tools/WebKitAPITest/",
- "Tools/TestWebKitAPI/",
- "Source/WebKit/qt/tests/qdeclarativewebview"],
- ["-build/include",
- "-readability/naming"]),
- ([# There is no clean way to avoid "yy_*" names used by flex.
- "Source/WebCore/css/CSSParser.cpp",
- # Qt code uses '_' in some places (such as private slots
- # and on test xxx_data methos on tests)
- "Source/JavaScriptCore/qt/",
- "Source/WebKit/qt/tests/",
- "Source/WebKit/qt/declarative/",
- "Source/WebKit/qt/examples/"],
- ["-readability/naming"]),
-
- ([# The Qt APIs use Qt declaration style, it puts the * to
- # the variable name, not to the class.
- "Source/WebKit/qt/Api/",
- "Source/WebKit/qt/WidgetApi/"],
- ["-readability/naming",
- "-whitespace/declaration"]),
-
- ([# Qt's MiniBrowser has no config.h
- "Tools/MiniBrowser/qt",
- "Tools/MiniBrowser/qt/raw"],
- ["-build/include"]),
-
- ([# The Qt APIs use Qt/QML naming style, which includes
- # naming parameters in h files.
- "Source/WebKit2/UIProcess/API/qt"],
- ["-readability/parameter_name"]),
-
- ([# The GTK+ port uses the autotoolsconfig.h header in some C sources
- # to serve the same purpose of config.h.
- "Tools/GtkLauncher/main.c"],
- ["-build/include_order"]),
-
- ([# The GTK+ APIs use GTK+ naming style, which includes
- # lower-cased, underscore-separated values, whitespace before
- # parens for function calls, and always having variable names.
- # Also, GTK+ allows the use of NULL.
- "Source/WebCore/bindings/scripts/test/GObject",
- "Source/WebKit/gtk/webkit/",
- "Tools/DumpRenderTree/gtk/"],
- ["-readability/naming",
- "-readability/parameter_name",
- "-readability/null",
- "-readability/enum_casing",
- "-whitespace/parens"]),
-
- ([# The GTK+ API use upper case, underscore separated, words in
- # certain types of enums (e.g. signals, properties).
- "Source/WebKit2/UIProcess/API/gtk",
- "Source/WebKit2/WebProcess/InjectedBundle/API/gtk"],
- ["-readability/enum_casing"]),
-
- ([# Header files in ForwardingHeaders have no header guards or
- # exceptional header guards (e.g., WebCore_FWD_Debugger_h).
- "/ForwardingHeaders/"],
- ["-build/header_guard"]),
- ([# assembler has lots of opcodes that use underscores, so
- # we don't check for underscores in that directory.
- "Source/JavaScriptCore/assembler/",
- "Source/JavaScriptCore/jit/JIT"],
- ["-readability/naming/underscores"]),
- ([# JITStubs has an usual syntax which causes false alarms for a few checks.
- "JavaScriptCore/jit/JITStubs.cpp"],
- ["-readability/parameter_name",
- "-whitespace/parens"]),
-
- ([# The EFL APIs use EFL naming style, which includes
- # both lower-cased and camel-cased, underscore-sparated
- # values.
- "Source/WebKit/efl/ewk/",
- "Source/WebKit2/UIProcess/API/efl/"],
- ["-readability/naming",
- "-readability/parameter_name"]),
- ([# EWebLauncher and MiniBrowser are EFL simple application.
- # They need to use efl coding style and they don't have config.h.
- "Tools/EWebLauncher/",
- "Tools/MiniBrowser/efl/"],
- ["-readability/naming",
- "-readability/parameter_name",
- "-whitespace/declaration",
- "-build/include_order"]),
-
- # WebKit2 rules:
- # WebKit2 and certain directories have idiosyncracies.
- ([# NPAPI has function names with underscores.
- "Source/WebKit2/WebProcess/Plugins/Netscape"],
- ["-readability/naming"]),
- ([# The WebKit2 C API has names with underscores and whitespace-aligned
- # struct members. Also, we allow unnecessary parameter names in
- # WebKit2 APIs because we're matching CF's header style.
- # Additionally, we use word which starts with non-capital letter 'k'
- # for types of enums.
- "Source/WebKit2/UIProcess/API/C/",
- "Source/WebKit2/Shared/API/c/",
- "Source/WebKit2/WebProcess/InjectedBundle/API/c/"],
- ["-readability/enum_casing",
- "-readability/naming",
- "-readability/parameter_name",
- "-whitespace/declaration"]),
- ([# These files define GObjects, which implies some definitions of
- # variables and functions containing underscores.
- "Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.cpp",
- "Source/WebCore/platform/graphics/clutter/GraphicsLayerActor.h",
- "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer1.cpp",
- "Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp",
- "Source/WebCore/platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp",
- "Source/WebCore/platform/audio/gstreamer/WebKitWebAudioSourceGStreamer.cpp",
- "Source/WebCore/platform/network/soup/ProxyResolverSoup.cpp",
- "Source/WebCore/platform/network/soup/ProxyResolverSoup.h"],
- ["-readability/naming"]),
-
- # For third-party Python code, keep only the following checks--
- #
- # No tabs: to avoid having to set the SVN allow-tabs property.
- # No trailing white space: since this is easy to correct.
- # No carriage-return line endings: since this is easy to correct.
- #
- (["webkitpy/thirdparty/"],
- ["-",
- "+pep8/W191", # Tabs
- "+pep8/W291", # Trailing white space
- "+whitespace/carriage_return"]),
-
- ([# glu's libtess is third-party code, and doesn't follow WebKit style.
- "Source/ThirdParty/glu"],
- ["-readability",
- "-whitespace",
- "-build/header_guard",
- "-build/include_order"]),
-
- ([# There is no way to avoid the symbols __jit_debug_register_code
- # and __jit_debug_descriptor when integrating with gdb.
- "Source/JavaScriptCore/jit/GDBInterface.cpp"],
- ["-readability/naming"]),
-
- ([# On some systems the trailing CR is causing parser failure.
- "Source/JavaScriptCore/parser/Keywords.table"],
- ["+whitespace/carriage_return"]),
-]
-
-
-_CPP_FILE_EXTENSIONS = [
- 'c',
- 'cpp',
- 'h',
- ]
-
-_JSON_FILE_EXTENSION = 'json'
-
-_PYTHON_FILE_EXTENSION = 'py'
-
-_TEXT_FILE_EXTENSIONS = [
- 'ac',
- 'cc',
- 'cgi',
- 'css',
- 'exp',
- 'flex',
- 'gyp',
- 'gypi',
- 'html',
- 'idl',
- 'in',
- 'js',
- 'mm',
- 'php',
- 'pl',
- 'pm',
- 'pri',
- 'pro',
- 'rb',
- 'sh',
- 'table',
- 'txt',
- 'wm',
- 'xhtml',
- 'y',
- ]
-
-_XCODEPROJ_FILE_EXTENSION = 'pbxproj'
-
-_XML_FILE_EXTENSIONS = [
- 'vcproj',
- 'vsprops',
- ]
-
-_PNG_FILE_EXTENSION = 'png'
-
-_CMAKE_FILE_EXTENSION = 'cmake'
-
-# Files to skip that are less obvious.
-#
-# Some files should be skipped when checking style. For example,
-# WebKit maintains some files in Mozilla style on purpose to ease
-# future merges.
-_SKIPPED_FILES_WITH_WARNING = [
- "Source/WebKit/gtk/tests/",
- # All WebKit*.h files in Source/WebKit2/UIProcess/API/gtk,
- # except those ending in ...Private.h are GTK+ API headers,
- # which differ greatly from WebKit coding style.
- re.compile(r'Source/WebKit2/UIProcess/API/gtk/WebKit(?!.*Private\.h).*\.h$'),
- re.compile(r'Source/WebKit2/WebProcess/InjectedBundle/API/gtk/WebKit(?!.*Private\.h).*\.h$'),
- 'Source/WebKit2/UIProcess/API/gtk/webkit2.h',
- 'Source/WebKit2/WebProcess/InjectedBundle/API/gtk/webkit-web-extension.h']
-
-# Files to skip that are more common or obvious.
-#
-# This list should be in addition to files with FileType.NONE. Files
-# with FileType.NONE are automatically skipped without warning.
-_SKIPPED_FILES_WITHOUT_WARNING = [
- "LayoutTests" + os.path.sep,
- "Source/ThirdParty/leveldb" + os.path.sep,
- # Prevents this being recognized as a text file.
- "Source/WebCore/GNUmakefile.features.am.in",
- ]
-
-# Extensions of files which are allowed to contain carriage returns.
-_CARRIAGE_RETURN_ALLOWED_FILE_EXTENSIONS = [
- 'png',
- 'vcproj',
- 'vsprops',
- ]
-
-# The maximum number of errors to report per file, per category.
-# If a category is not a key, then it has no maximum.
-_MAX_REPORTS_PER_CATEGORY = {
- "whitespace/carriage_return": 1
-}
-
-
-def _all_categories():
- """Return the set of all categories used by check-webkit-style."""
- # Take the union across all checkers.
- categories = CommonCategories.union(CppChecker.categories)
- categories = categories.union(JSONChecker.categories)
- categories = categories.union(TestExpectationsChecker.categories)
- categories = categories.union(ChangeLogChecker.categories)
- categories = categories.union(PNGChecker.categories)
-
- # FIXME: Consider adding all of the pep8 categories. Since they
- # are not too meaningful for documentation purposes, for
- # now we add only the categories needed for the unit tests
- # (which validate the consistency of the configuration
- # settings against the known categories, etc).
- categories = categories.union(["pep8/W191", "pep8/W291", "pep8/E501"])
-
- return categories
-
-
-def _check_webkit_style_defaults():
- """Return the default command-line options for check-webkit-style."""
- return DefaultCommandOptionValues(min_confidence=_DEFAULT_MIN_CONFIDENCE,
- output_format=_DEFAULT_OUTPUT_FORMAT)
-
-
-# This function assists in optparser not having to import from checker.
-def check_webkit_style_parser():
- all_categories = _all_categories()
- default_options = _check_webkit_style_defaults()
- return ArgumentParser(all_categories=all_categories,
- base_filter_rules=_BASE_FILTER_RULES,
- default_options=default_options)
-
-
-def check_webkit_style_configuration(options):
- """Return a StyleProcessorConfiguration instance for check-webkit-style.
-
- Args:
- options: A CommandOptionValues instance.
-
- """
- filter_configuration = FilterConfiguration(
- base_rules=_BASE_FILTER_RULES,
- path_specific=_PATH_RULES_SPECIFIER,
- user_rules=options.filter_rules)
-
- return StyleProcessorConfiguration(filter_configuration=filter_configuration,
- max_reports_per_category=_MAX_REPORTS_PER_CATEGORY,
- min_confidence=options.min_confidence,
- output_format=options.output_format,
- stderr_write=sys.stderr.write)
-
-
-def _create_log_handlers(stream):
- """Create and return a default list of logging.Handler instances.
-
- Format WARNING messages and above to display the logging level, and
- messages strictly below WARNING not to display it.
-
- Args:
- stream: See the configure_logging() docstring.
-
- """
- # Handles logging.WARNING and above.
- error_handler = logging.StreamHandler(stream)
- error_handler.setLevel(logging.WARNING)
- formatter = logging.Formatter("%(levelname)s: %(message)s")
- error_handler.setFormatter(formatter)
-
- # Create a logging.Filter instance that only accepts messages
- # below WARNING (i.e. filters out anything WARNING or above).
- non_error_filter = logging.Filter()
- # The filter method accepts a logging.LogRecord instance.
- non_error_filter.filter = lambda record: record.levelno < logging.WARNING
-
- non_error_handler = logging.StreamHandler(stream)
- non_error_handler.addFilter(non_error_filter)
- formatter = logging.Formatter("%(message)s")
- non_error_handler.setFormatter(formatter)
-
- return [error_handler, non_error_handler]
-
-
-def _create_debug_log_handlers(stream):
- """Create and return a list of logging.Handler instances for debugging.
-
- Args:
- stream: See the configure_logging() docstring.
-
- """
- handler = logging.StreamHandler(stream)
- formatter = logging.Formatter("%(name)s: %(levelname)-8s %(message)s")
- handler.setFormatter(formatter)
-
- return [handler]
-
-
-def configure_logging(stream, logger=None, is_verbose=False):
- """Configure logging, and return the list of handlers added.
-
- Returns:
- A list of references to the logging handlers added to the root
- logger. This allows the caller to later remove the handlers
- using logger.removeHandler. This is useful primarily during unit
- testing where the caller may want to configure logging temporarily
- and then undo the configuring.
-
- Args:
- stream: A file-like object to which to log. The stream must
- define an "encoding" data attribute, or else logging
- raises an error.
- logger: A logging.logger instance to configure. This parameter
- should be used only in unit tests. Defaults to the
- root logger.
- is_verbose: A boolean value of whether logging should be verbose.
-
- """
- # If the stream does not define an "encoding" data attribute, the
- # logging module can throw an error like the following:
- #
- # Traceback (most recent call last):
- # File "/System/Library/Frameworks/Python.framework/Versions/2.6/...
- # lib/python2.6/logging/__init__.py", line 761, in emit
- # self.stream.write(fs % msg.encode(self.stream.encoding))
- # LookupError: unknown encoding: unknown
- if logger is None:
- logger = logging.getLogger()
-
- if is_verbose:
- logging_level = logging.DEBUG
- handlers = _create_debug_log_handlers(stream)
- else:
- logging_level = logging.INFO
- handlers = _create_log_handlers(stream)
-
- handlers = _configure_logging(logging_level=logging_level, logger=logger,
- handlers=handlers)
-
- return handlers
-
-
-# Enum-like idiom
-class FileType:
-
- NONE = 0 # FileType.NONE evaluates to False.
- # Alphabetize remaining types
- CHANGELOG = 1
- CPP = 2
- JSON = 3
- PNG = 4
- PYTHON = 5
- TEXT = 6
- WATCHLIST = 7
- XML = 8
- XCODEPROJ = 9
- CMAKE = 10
-
-
-class CheckerDispatcher(object):
-
- """Supports determining whether and how to check style, based on path."""
-
- def _file_extension(self, file_path):
- """Return the file extension without the leading dot."""
- return os.path.splitext(file_path)[1].lstrip(".")
-
- def _should_skip_file_path(self, file_path, skip_array_entry):
- match = re.search("\s*png$", file_path)
- if match:
- return False
- if isinstance(skip_array_entry, str):
- if file_path.find(skip_array_entry) >= 0:
- return True
- elif skip_array_entry.match(file_path):
- return True
- return False
-
- def should_skip_with_warning(self, file_path):
- """Return whether the given file should be skipped with a warning."""
- for skipped_file in _SKIPPED_FILES_WITH_WARNING:
- if self._should_skip_file_path(file_path, skipped_file):
- return True
- return False
-
- def should_skip_without_warning(self, file_path):
- """Return whether the given file should be skipped without a warning."""
- if not self._file_type(file_path): # FileType.NONE.
- return True
- # Since "LayoutTests" is in _SKIPPED_FILES_WITHOUT_WARNING, make
- # an exception to prevent files like "LayoutTests/ChangeLog" and
- # "LayoutTests/ChangeLog-2009-06-16" from being skipped.
- # Files like 'TestExpectations' are also should not be skipped.
- #
- # FIXME: Figure out a good way to avoid having to add special logic
- # for this special case.
- basename = os.path.basename(file_path)
- if basename.startswith('ChangeLog'):
- return False
- elif basename == 'TestExpectations':
- return False
- for skipped_file in _SKIPPED_FILES_WITHOUT_WARNING:
- if self._should_skip_file_path(file_path, skipped_file):
- return True
- return False
-
- def should_check_and_strip_carriage_returns(self, file_path):
- return self._file_extension(file_path) not in _CARRIAGE_RETURN_ALLOWED_FILE_EXTENSIONS
-
- def _file_type(self, file_path):
- """Return the file type corresponding to the given file."""
- file_extension = self._file_extension(file_path)
-
- if (file_extension in _CPP_FILE_EXTENSIONS) or (file_path == '-'):
- # FIXME: Do something about the comment below and the issue it
- # raises since cpp_style already relies on the extension.
- #
- # Treat stdin as C++. Since the extension is unknown when
- # reading from stdin, cpp_style tests should not rely on
- # the extension.
- return FileType.CPP
- elif file_extension == _JSON_FILE_EXTENSION:
- return FileType.JSON
- elif file_extension == _PYTHON_FILE_EXTENSION:
- return FileType.PYTHON
- elif file_extension in _XML_FILE_EXTENSIONS:
- return FileType.XML
- elif os.path.basename(file_path).startswith('ChangeLog'):
- return FileType.CHANGELOG
- elif os.path.basename(file_path) == 'watchlist':
- return FileType.WATCHLIST
- elif file_extension == _XCODEPROJ_FILE_EXTENSION:
- return FileType.XCODEPROJ
- elif file_extension == _PNG_FILE_EXTENSION:
- return FileType.PNG
- elif ((file_extension == _CMAKE_FILE_EXTENSION) or os.path.basename(file_path) == 'CMakeLists.txt'):
- return FileType.CMAKE
- elif ((not file_extension and os.path.join("Tools", "Scripts") in file_path) or
- file_extension in _TEXT_FILE_EXTENSIONS or os.path.basename(file_path) == 'TestExpectations'):
- return FileType.TEXT
- else:
- return FileType.NONE
-
- def _create_checker(self, file_type, file_path, handle_style_error,
- min_confidence):
- """Instantiate and return a style checker based on file type."""
- if file_type == FileType.NONE:
- checker = None
- elif file_type == FileType.CHANGELOG:
- should_line_be_checked = None
- if handle_style_error:
- should_line_be_checked = handle_style_error.should_line_be_checked
- checker = ChangeLogChecker(file_path, handle_style_error, should_line_be_checked)
- elif file_type == FileType.CPP:
- file_extension = self._file_extension(file_path)
- checker = CppChecker(file_path, file_extension,
- handle_style_error, min_confidence)
- elif file_type == FileType.JSON:
- checker = JSONChecker(file_path, handle_style_error)
- elif file_type == FileType.PYTHON:
- checker = PythonChecker(file_path, handle_style_error)
- elif file_type == FileType.XML:
- checker = XMLChecker(file_path, handle_style_error)
- elif file_type == FileType.XCODEPROJ:
- checker = XcodeProjectFileChecker(file_path, handle_style_error)
- elif file_type == FileType.PNG:
- checker = PNGChecker(file_path, handle_style_error)
- elif file_type == FileType.CMAKE:
- checker = CMakeChecker(file_path, handle_style_error)
- elif file_type == FileType.TEXT:
- basename = os.path.basename(file_path)
- if basename == 'TestExpectations':
- checker = TestExpectationsChecker(file_path, handle_style_error)
- else:
- checker = TextChecker(file_path, handle_style_error)
- elif file_type == FileType.WATCHLIST:
- checker = WatchListChecker(file_path, handle_style_error)
- else:
- raise ValueError('Invalid file type "%(file_type)s": the only valid file types '
- "are %(NONE)s, %(CPP)s, and %(TEXT)s."
- % {"file_type": file_type,
- "NONE": FileType.NONE,
- "CPP": FileType.CPP,
- "TEXT": FileType.TEXT})
-
- return checker
-
- def dispatch(self, file_path, handle_style_error, min_confidence):
- """Instantiate and return a style checker based on file path."""
- file_type = self._file_type(file_path)
-
- checker = self._create_checker(file_type,
- file_path,
- handle_style_error,
- min_confidence)
- return checker
-
-
-# FIXME: Remove the stderr_write attribute from this class and replace
-# its use with calls to a logging module logger.
-class StyleProcessorConfiguration(object):
-
- """Stores configuration values for the StyleProcessor class.
-
- Attributes:
- min_confidence: An integer between 1 and 5 inclusive that is the
- minimum confidence level of style errors to report.
-
- max_reports_per_category: The maximum number of errors to report
- per category, per file.
-
- stderr_write: A function that takes a string as a parameter and
- serves as stderr.write.
-
- """
-
- def __init__(self,
- filter_configuration,
- max_reports_per_category,
- min_confidence,
- output_format,
- stderr_write):
- """Create a StyleProcessorConfiguration instance.
-
- Args:
- filter_configuration: A FilterConfiguration instance. The default
- is the "empty" filter configuration, which
- means that all errors should be checked.
-
- max_reports_per_category: The maximum number of errors to report
- per category, per file.
-
- min_confidence: An integer between 1 and 5 inclusive that is the
- minimum confidence level of style errors to report.
- The default is 1, which reports all style errors.
-
- output_format: A string that is the output format. The supported
- output formats are "emacs" which emacs can parse
- and "vs7" which Microsoft Visual Studio 7 can parse.
-
- stderr_write: A function that takes a string as a parameter and
- serves as stderr.write.
-
- """
- self._filter_configuration = filter_configuration
- self._output_format = output_format
-
- self.max_reports_per_category = max_reports_per_category
- self.min_confidence = min_confidence
- self.stderr_write = stderr_write
-
- def is_reportable(self, category, confidence_in_error, file_path):
- """Return whether an error is reportable.
-
- An error is reportable if both the confidence in the error is
- at least the minimum confidence level and the current filter
- says the category should be checked for the given path.
-
- Args:
- category: A string that is a style category.
- confidence_in_error: An integer between 1 and 5 inclusive that is
- the application's confidence in the error.
- A higher number means greater confidence.
- file_path: The path of the file being checked
-
- """
- if confidence_in_error < self.min_confidence:
- return False
-
- return self._filter_configuration.should_check(category, file_path)
-
- def write_style_error(self,
- category,
- confidence_in_error,
- file_path,
- line_number,
- message):
- """Write a style error to the configured stderr."""
- if self._output_format == 'vs7':
- format_string = "%s(%s): %s [%s] [%d]\n"
- else:
- format_string = "%s:%s: %s [%s] [%d]\n"
-
- self.stderr_write(format_string % (file_path,
- line_number,
- message,
- category,
- confidence_in_error))
-
-
-class ProcessorBase(object):
-
- """The base class for processors of lists of lines."""
-
- def should_process(self, file_path):
- """Return whether the file at file_path should be processed.
-
- The TextFileReader class calls this method prior to reading in
- the lines of a file. Use this method, for example, to prevent
- the style checker from reading binary files into memory.
-
- """
- raise NotImplementedError('Subclasses should implement.')
-
- def process(self, lines, file_path, **kwargs):
- """Process lines of text read from a file.
-
- Args:
- lines: A list of lines of text to process.
- file_path: The path from which the lines were read.
- **kwargs: This argument signifies that the process() method of
- subclasses of ProcessorBase may support additional
- keyword arguments.
- For example, a style checker's check() method
- may support a "reportable_lines" parameter that represents
- the line numbers of the lines for which style errors
- should be reported.
-
- """
- raise NotImplementedError('Subclasses should implement.')
-
-
-class StyleProcessor(ProcessorBase):
-
- """A ProcessorBase for checking style.
-
- Attributes:
- error_count: An integer that is the total number of reported
- errors for the lifetime of this instance.
-
- """
-
- def __init__(self, configuration, mock_dispatcher=None,
- mock_increment_error_count=None,
- mock_carriage_checker_class=None):
- """Create an instance.
-
- Args:
- configuration: A StyleProcessorConfiguration instance.
- mock_dispatcher: A mock CheckerDispatcher instance. This
- parameter is for unit testing. Defaults to a
- CheckerDispatcher instance.
- mock_increment_error_count: A mock error-count incrementer.
- mock_carriage_checker_class: A mock class for checking and
- transforming carriage returns.
- This parameter is for unit testing.
- Defaults to CarriageReturnChecker.
-
- """
- if mock_dispatcher is None:
- dispatcher = CheckerDispatcher()
- else:
- dispatcher = mock_dispatcher
-
- if mock_increment_error_count is None:
- # The following blank line is present to avoid flagging by pep8.py.
-
- def increment_error_count():
- """Increment the total count of reported errors."""
- self.error_count += 1
- else:
- increment_error_count = mock_increment_error_count
-
- if mock_carriage_checker_class is None:
- # This needs to be a class rather than an instance since the
- # process() method instantiates one using parameters.
- carriage_checker_class = CarriageReturnChecker
- else:
- carriage_checker_class = mock_carriage_checker_class
-
- self.error_count = 0
-
- self._carriage_checker_class = carriage_checker_class
- self._configuration = configuration
- self._dispatcher = dispatcher
- self._increment_error_count = increment_error_count
-
- def should_process(self, file_path):
- """Return whether the file should be checked for style."""
- if self._dispatcher.should_skip_without_warning(file_path):
- return False
- if self._dispatcher.should_skip_with_warning(file_path):
- _log.warn('File exempt from style guide. Skipping: "%s"'
- % file_path)
- return False
- return True
-
- def process(self, lines, file_path, line_numbers=None):
- """Check the given lines for style.
-
- Arguments:
- lines: A list of all lines in the file to check.
- file_path: The path of the file to process. If possible, the path
- should be relative to the source root. Otherwise,
- path-specific logic may not behave as expected.
- line_numbers: A list of line numbers of the lines for which
- style errors should be reported, or None if errors
- for all lines should be reported. When not None, this
- list normally contains the line numbers corresponding
- to the modified lines of a patch.
-
- """
- _log.debug("Checking style: " + file_path)
-
- style_error_handler = DefaultStyleErrorHandler(
- configuration=self._configuration,
- file_path=file_path,
- increment_error_count=self._increment_error_count,
- line_numbers=line_numbers)
-
- carriage_checker = self._carriage_checker_class(style_error_handler)
-
- # Check for and remove trailing carriage returns ("\r").
- if self._dispatcher.should_check_and_strip_carriage_returns(file_path):
- lines = carriage_checker.check(lines)
-
- min_confidence = self._configuration.min_confidence
- checker = self._dispatcher.dispatch(file_path,
- style_error_handler,
- min_confidence)
-
- if checker is None:
- raise AssertionError("File should not be checked: '%s'" % file_path)
-
- _log.debug("Using class: " + checker.__class__.__name__)
-
- checker.check(lines)
diff --git a/Tools/Scripts/webkitpy/style/checker_unittest.py b/Tools/Scripts/webkitpy/style/checker_unittest.py
deleted file mode 100644
index 9a139c7c8..000000000
--- a/Tools/Scripts/webkitpy/style/checker_unittest.py
+++ /dev/null
@@ -1,893 +0,0 @@
-# -*- coding: utf-8; -*-
-#
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2009 Torch Mobile Inc.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-"""Unit tests for style.py."""
-
-import logging
-import os
-import unittest2 as unittest
-
-import checker as style
-from webkitpy.common.system.logtesting import LogTesting, TestLogStream
-from checker import _BASE_FILTER_RULES
-from checker import _MAX_REPORTS_PER_CATEGORY
-from checker import _PATH_RULES_SPECIFIER as PATH_RULES_SPECIFIER
-from checker import _all_categories
-from checker import check_webkit_style_configuration
-from checker import check_webkit_style_parser
-from checker import configure_logging
-from checker import CheckerDispatcher
-from checker import ProcessorBase
-from checker import StyleProcessor
-from checker import StyleProcessorConfiguration
-from checkers.changelog import ChangeLogChecker
-from checkers.cpp import CppChecker
-from checkers.jsonchecker import JSONChecker
-from checkers.python import PythonChecker
-from checkers.text import TextChecker
-from checkers.xml import XMLChecker
-from error_handlers import DefaultStyleErrorHandler
-from filter import validate_filter_rules
-from filter import FilterConfiguration
-from optparser import ArgumentParser
-from optparser import CommandOptionValues
-from webkitpy.common.system.logtesting import LoggingTestCase
-from webkitpy.style.filereader import TextFileReader
-
-
-class ConfigureLoggingTestBase(unittest.TestCase):
-
- """Base class for testing configure_logging().
-
- Sub-classes should implement:
-
- is_verbose: The is_verbose value to pass to configure_logging().
-
- """
-
- def setUp(self):
- is_verbose = self.is_verbose
-
- log_stream = TestLogStream(self)
-
- # Use a logger other than the root logger or one prefixed with
- # webkit so as not to conflict with test-webkitpy logging.
- logger = logging.getLogger("unittest")
-
- # Configure the test logger not to pass messages along to the
- # root logger. This prevents test messages from being
- # propagated to loggers used by test-webkitpy logging (e.g.
- # the root logger).
- logger.propagate = False
-
- self._handlers = configure_logging(stream=log_stream, logger=logger,
- is_verbose=is_verbose)
- self._log = logger
- self._log_stream = log_stream
-
- def tearDown(self):
- """Reset logging to its original state.
-
- This method ensures that the logging configuration set up
- for a unit test does not affect logging in other unit tests.
-
- """
- logger = self._log
- for handler in self._handlers:
- logger.removeHandler(handler)
-
- def assert_log_messages(self, messages):
- """Assert that the logged messages equal the given messages."""
- self._log_stream.assertMessages(messages)
-
-
-class ConfigureLoggingTest(ConfigureLoggingTestBase):
-
- """Tests the configure_logging() function."""
-
- is_verbose = False
-
- def test_warning_message(self):
- self._log.warn("test message")
- self.assert_log_messages(["WARNING: test message\n"])
-
- def test_below_warning_message(self):
- # We test the boundary case of a logging level equal to 29.
- # In practice, we will probably only be calling log.info(),
- # which corresponds to a logging level of 20.
- level = logging.WARNING - 1 # Equals 29.
- self._log.log(level, "test message")
- self.assert_log_messages(["test message\n"])
-
- def test_debug_message(self):
- self._log.debug("test message")
- self.assert_log_messages([])
-
- def test_two_messages(self):
- self._log.info("message1")
- self._log.info("message2")
- self.assert_log_messages(["message1\n", "message2\n"])
-
-
-class ConfigureLoggingVerboseTest(ConfigureLoggingTestBase):
-
- """Tests the configure_logging() function with is_verbose True."""
-
- is_verbose = True
-
- def test_debug_message(self):
- self._log.debug("test message")
- self.assert_log_messages(["unittest: DEBUG test message\n"])
-
-
-class GlobalVariablesTest(unittest.TestCase):
-
- """Tests validity of the global variables."""
-
- def _all_categories(self):
- return _all_categories()
-
- def defaults(self):
- return style._check_webkit_style_defaults()
-
- def test_webkit_base_filter_rules(self):
- base_filter_rules = _BASE_FILTER_RULES
- defaults = self.defaults()
- already_seen = []
- validate_filter_rules(base_filter_rules, self._all_categories())
- # Also do some additional checks.
- for rule in base_filter_rules:
- # Check no leading or trailing white space.
- self.assertEqual(rule, rule.strip())
- # All categories are on by default, so defaults should
- # begin with -.
- self.assertTrue(rule.startswith('-'))
- # Check no rule occurs twice.
- self.assertNotIn(rule, already_seen)
- already_seen.append(rule)
-
- def test_defaults(self):
- """Check that default arguments are valid."""
- default_options = self.defaults()
-
- # FIXME: We should not need to call parse() to determine
- # whether the default arguments are valid.
- parser = ArgumentParser(all_categories=self._all_categories(),
- base_filter_rules=[],
- default_options=default_options)
- # No need to test the return value here since we test parse()
- # on valid arguments elsewhere.
- #
- # The default options are valid: no error or SystemExit.
- parser.parse(args=[])
-
- def test_path_rules_specifier(self):
- all_categories = self._all_categories()
- for (sub_paths, path_rules) in PATH_RULES_SPECIFIER:
- validate_filter_rules(path_rules, self._all_categories())
-
- config = FilterConfiguration(path_specific=PATH_RULES_SPECIFIER)
-
- def assertCheck(path, category):
- """Assert that the given category should be checked."""
- message = ('Should check category "%s" for path "%s".'
- % (category, path))
- self.assertTrue(config.should_check(category, path))
-
- def assertNoCheck(path, category):
- """Assert that the given category should not be checked."""
- message = ('Should not check category "%s" for path "%s".'
- % (category, path))
- self.assertFalse(config.should_check(category, path), message)
-
- assertCheck("random_path.cpp",
- "build/include")
- assertNoCheck("Tools/WebKitAPITest/main.cpp",
- "build/include")
- assertCheck("random_path.cpp",
- "readability/naming")
- assertNoCheck("Source/WebKit/gtk/webkit/webkit.h",
- "readability/naming")
- assertNoCheck("Tools/DumpRenderTree/gtk/DumpRenderTree.cpp",
- "readability/null")
- assertNoCheck("Source/WebKit/efl/ewk/ewk_view.h",
- "readability/naming")
- assertNoCheck("Source/WebCore/css/CSSParser.cpp",
- "readability/naming")
-
- # Test if Qt exceptions are indeed working
- assertCheck("Source/WebKit/qt/WidgetApi/qwebpage.cpp",
- "readability/braces")
- assertCheck("Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp",
- "readability/braces")
- assertCheck("Source/WebKit/qt/declarative/platformplugin/WebPlugin.cpp",
- "readability/braces")
- assertCheck("Source/WebKit/qt/examples/platformplugin/WebPlugin.cpp",
- "readability/braces")
- assertNoCheck("Source/WebKit/qt/WidgetApi/qwebpage.cpp",
- "readability/naming")
- assertNoCheck("Source/WebKit/qt/tests/qwebelement/tst_qwebelement.cpp",
- "readability/naming")
- assertNoCheck("Source/WebKit/qt/declarative/platformplugin/WebPlugin.cpp",
- "readability/naming")
- assertNoCheck("Source/WebKit/qt/examples/platformplugin/WebPlugin.cpp",
- "readability/naming")
-
- assertNoCheck("Tools/MiniBrowser/qt/UrlLoader.cpp",
- "build/include")
-
- assertNoCheck("Source/WebKit2/UIProcess/API/qt",
- "readability/parameter_name")
-
- assertNoCheck("Source/WebCore/ForwardingHeaders/debugger/Debugger.h",
- "build/header_guard")
-
- assertNoCheck("Source/WebCore/platform/graphics/gstreamer/VideoSinkGStreamer.cpp",
- "readability/naming")
-
- # Third-party Python code: webkitpy/thirdparty
- path = "Tools/Scripts/webkitpy/thirdparty/mock.py"
- assertNoCheck(path, "build/include")
- assertNoCheck(path, "pep8/E401") # A random pep8 category.
- assertCheck(path, "pep8/W191")
- assertCheck(path, "pep8/W291")
- assertCheck(path, "whitespace/carriage_return")
-
- # Test if the exception for GDBInterface.cpp is in place.
- assertNoCheck("Source/JavaScriptCore/jit/GDBInterface.cpp",
- "readability/naming")
-
- # Javascript keywords.
- assertCheck("Source/JavaScriptCore/parser/Keywords.table", "whitespace/carriage_return")
-
- def test_max_reports_per_category(self):
- """Check that _MAX_REPORTS_PER_CATEGORY is valid."""
- all_categories = self._all_categories()
- for category in _MAX_REPORTS_PER_CATEGORY.iterkeys():
- self.assertIn(category, all_categories,
- 'Key "%s" is not a category' % category)
-
-
-class CheckWebKitStyleFunctionTest(unittest.TestCase):
-
- """Tests the functions with names of the form check_webkit_style_*."""
-
- def test_check_webkit_style_configuration(self):
- # Exercise the code path to make sure the function does not error out.
- option_values = CommandOptionValues()
- configuration = check_webkit_style_configuration(option_values)
-
- def test_check_webkit_style_parser(self):
- # Exercise the code path to make sure the function does not error out.
- parser = check_webkit_style_parser()
-
-
-class CheckerDispatcherSkipTest(unittest.TestCase):
-
- """Tests the "should skip" methods of the CheckerDispatcher class."""
-
- def setUp(self):
- self._dispatcher = CheckerDispatcher()
-
- def test_should_skip_with_warning(self):
- """Test should_skip_with_warning()."""
- # Check skipped files.
- paths_to_skip = [
- "Source/WebKit/gtk/tests/testatk.c",
- "Source/WebKit2/UIProcess/API/gtk/webkit2.h",
- "Source/WebKit2/UIProcess/API/gtk/WebKitWebView.h",
- "Source/WebKit2/UIProcess/API/gtk/WebKitLoader.h",
- ]
-
- for path in paths_to_skip:
- self.assertTrue(self._dispatcher.should_skip_with_warning(path),
- "Checking: " + path)
-
- # Verify that some files are not skipped.
- paths_not_to_skip = [
- "foo.txt",
- "Source/WebKit2/UIProcess/API/gtk/HelperClass.cpp",
- "Source/WebKit2/UIProcess/API/gtk/HelperClass.h",
- "Source/WebKit2/UIProcess/API/gtk/WebKitWebView.cpp",
- "Source/WebKit2/UIProcess/API/gtk/WebKitWebViewPrivate.h",
- "Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.cpp",
- "Source/WebKit2/UIProcess/API/gtk/tests/WebViewTest.h",
- ]
-
- for path in paths_not_to_skip:
- self.assertFalse(self._dispatcher.should_skip_with_warning(path))
-
- def _assert_should_skip_without_warning(self, path, is_checker_none,
- expected):
- # Check the file type before asserting the return value.
- checker = self._dispatcher.dispatch(file_path=path,
- handle_style_error=None,
- min_confidence=3)
- message = 'while checking: %s' % path
- self.assertEqual(checker is None, is_checker_none, message)
- self.assertEqual(self._dispatcher.should_skip_without_warning(path),
- expected, message)
-
- def test_should_skip_without_warning__true(self):
- """Test should_skip_without_warning() for True return values."""
- # Check a file with NONE file type.
- path = 'foo.asdf' # Non-sensical file extension.
- self._assert_should_skip_without_warning(path,
- is_checker_none=True,
- expected=True)
-
- # Check files with non-NONE file type. These examples must be
- # drawn from the _SKIPPED_FILES_WITHOUT_WARNING configuration
- # variable.
- path = os.path.join('LayoutTests', 'foo.txt')
- self._assert_should_skip_without_warning(path,
- is_checker_none=False,
- expected=True)
-
- def test_should_skip_without_warning__false(self):
- """Test should_skip_without_warning() for False return values."""
- paths = ['foo.txt',
- os.path.join('LayoutTests', 'ChangeLog'),
- ]
-
- for path in paths:
- self._assert_should_skip_without_warning(path,
- is_checker_none=False,
- expected=False)
-
-
-class CheckerDispatcherCarriageReturnTest(unittest.TestCase):
- def test_should_check_and_strip_carriage_returns(self):
- files = {
- 'foo.txt': True,
- 'foo.cpp': True,
- 'foo.vcproj': False,
- 'foo.vsprops': False,
- }
-
- dispatcher = CheckerDispatcher()
- for file_path, expected_result in files.items():
- self.assertEqual(dispatcher.should_check_and_strip_carriage_returns(file_path), expected_result, 'Checking: %s' % file_path)
-
-
-class CheckerDispatcherDispatchTest(unittest.TestCase):
-
- """Tests dispatch() method of CheckerDispatcher class."""
-
- def dispatch(self, file_path):
- """Call dispatch() with the given file path."""
- dispatcher = CheckerDispatcher()
- self.mock_handle_style_error = DefaultStyleErrorHandler('', None, None, [])
- checker = dispatcher.dispatch(file_path,
- self.mock_handle_style_error,
- min_confidence=3)
- return checker
-
- def assert_checker_none(self, file_path):
- """Assert that the dispatched checker is None."""
- checker = self.dispatch(file_path)
- self.assertIsNone(checker, 'Checking: "%s"' % file_path)
-
- def assert_checker(self, file_path, expected_class):
- """Assert the type of the dispatched checker."""
- checker = self.dispatch(file_path)
- got_class = checker.__class__
- self.assertEqual(got_class, expected_class,
- 'For path "%(file_path)s" got %(got_class)s when '
- "expecting %(expected_class)s."
- % {"file_path": file_path,
- "got_class": got_class,
- "expected_class": expected_class})
-
- def assert_checker_changelog(self, file_path):
- """Assert that the dispatched checker is a ChangeLogChecker."""
- self.assert_checker(file_path, ChangeLogChecker)
-
- def assert_checker_cpp(self, file_path):
- """Assert that the dispatched checker is a CppChecker."""
- self.assert_checker(file_path, CppChecker)
-
- def assert_checker_json(self, file_path):
- """Assert that the dispatched checker is a JSONChecker."""
- self.assert_checker(file_path, JSONChecker)
-
- def assert_checker_python(self, file_path):
- """Assert that the dispatched checker is a PythonChecker."""
- self.assert_checker(file_path, PythonChecker)
-
- def assert_checker_text(self, file_path):
- """Assert that the dispatched checker is a TextChecker."""
- self.assert_checker(file_path, TextChecker)
-
- def assert_checker_xml(self, file_path):
- """Assert that the dispatched checker is a XMLChecker."""
- self.assert_checker(file_path, XMLChecker)
-
- def test_changelog_paths(self):
- """Test paths that should be checked as ChangeLog."""
- paths = [
- "ChangeLog",
- "ChangeLog-2009-06-16",
- os.path.join("Source", "WebCore", "ChangeLog"),
- ]
-
- for path in paths:
- self.assert_checker_changelog(path)
-
- # Check checker attributes on a typical input.
- file_path = "ChangeLog"
- self.assert_checker_changelog(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker.file_path, file_path)
- self.assertEqual(checker.handle_style_error,
- self.mock_handle_style_error)
-
- def test_cpp_paths(self):
- """Test paths that should be checked as C++."""
- paths = [
- "-",
- "foo.c",
- "foo.cpp",
- "foo.h",
- ]
-
- for path in paths:
- self.assert_checker_cpp(path)
-
- # Check checker attributes on a typical input.
- file_base = "foo"
- file_extension = "c"
- file_path = file_base + "." + file_extension
- self.assert_checker_cpp(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker.file_extension, file_extension)
- self.assertEqual(checker.file_path, file_path)
- self.assertEqual(checker.handle_style_error, self.mock_handle_style_error)
- self.assertEqual(checker.min_confidence, 3)
- # Check "-" for good measure.
- file_base = "-"
- file_extension = ""
- file_path = file_base
- self.assert_checker_cpp(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker.file_extension, file_extension)
- self.assertEqual(checker.file_path, file_path)
-
- def test_json_paths(self):
- """Test paths that should be checked as JSON."""
- paths = [
- "Source/WebCore/inspector/Inspector.json",
- "Tools/BuildSlaveSupport/build.webkit.org-config/config.json",
- ]
-
- for path in paths:
- self.assert_checker_json(path)
-
- # Check checker attributes on a typical input.
- file_base = "foo"
- file_extension = "json"
- file_path = file_base + "." + file_extension
- self.assert_checker_json(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker._handle_style_error,
- self.mock_handle_style_error)
-
- def test_python_paths(self):
- """Test paths that should be checked as Python."""
- paths = [
- "foo.py",
- "Tools/Scripts/modules/text_style.py",
- ]
-
- for path in paths:
- self.assert_checker_python(path)
-
- # Check checker attributes on a typical input.
- file_base = "foo"
- file_extension = "css"
- file_path = file_base + "." + file_extension
- self.assert_checker_text(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker.file_path, file_path)
- self.assertEqual(checker.handle_style_error,
- self.mock_handle_style_error)
-
- def test_text_paths(self):
- """Test paths that should be checked as text."""
- paths = [
- "foo.ac",
- "foo.cc",
- "foo.cgi",
- "foo.css",
- "foo.exp",
- "foo.flex",
- "foo.gyp",
- "foo.gypi",
- "foo.html",
- "foo.idl",
- "foo.in",
- "foo.js",
- "foo.mm",
- "foo.php",
- "foo.pl",
- "foo.pm",
- "foo.pri",
- "foo.pro",
- "foo.rb",
- "foo.sh",
- "foo.txt",
- "foo.wm",
- "foo.xhtml",
- "foo.y",
- os.path.join("Source", "WebCore", "inspector", "front-end", "inspector.js"),
- os.path.join("Tools", "Scripts", "check-webkit-style"),
- ]
-
- for path in paths:
- self.assert_checker_text(path)
-
- # Check checker attributes on a typical input.
- file_base = "foo"
- file_extension = "css"
- file_path = file_base + "." + file_extension
- self.assert_checker_text(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker.file_path, file_path)
- self.assertEqual(checker.handle_style_error, self.mock_handle_style_error)
-
- def test_xml_paths(self):
- """Test paths that should be checked as XML."""
- paths = [
- "Source/WebCore/WebCore.vcproj/WebCore.vcproj",
- "WebKitLibraries/win/tools/vsprops/common.vsprops",
- ]
-
- for path in paths:
- self.assert_checker_xml(path)
-
- # Check checker attributes on a typical input.
- file_base = "foo"
- file_extension = "vcproj"
- file_path = file_base + "." + file_extension
- self.assert_checker_xml(file_path)
- checker = self.dispatch(file_path)
- self.assertEqual(checker._handle_style_error,
- self.mock_handle_style_error)
-
- def test_none_paths(self):
- """Test paths that have no file type.."""
- paths = [
- "Makefile",
- "foo.asdf", # Non-sensical file extension.
- "foo.exe",
- ]
-
- for path in paths:
- self.assert_checker_none(path)
-
-
-class StyleProcessorConfigurationTest(unittest.TestCase):
-
- """Tests the StyleProcessorConfiguration class."""
-
- def setUp(self):
- self._error_messages = []
- """The messages written to _mock_stderr_write() of this class."""
-
- def _mock_stderr_write(self, message):
- self._error_messages.append(message)
-
- def _style_checker_configuration(self, output_format="vs7"):
- """Return a StyleProcessorConfiguration instance for testing."""
- base_rules = ["-whitespace", "+whitespace/tab"]
- filter_configuration = FilterConfiguration(base_rules=base_rules)
-
- return StyleProcessorConfiguration(
- filter_configuration=filter_configuration,
- max_reports_per_category={"whitespace/newline": 1},
- min_confidence=3,
- output_format=output_format,
- stderr_write=self._mock_stderr_write)
-
- def test_init(self):
- """Test the __init__() method."""
- configuration = self._style_checker_configuration()
-
- # Check that __init__ sets the "public" data attributes correctly.
- self.assertEqual(configuration.max_reports_per_category,
- {"whitespace/newline": 1})
- self.assertEqual(configuration.stderr_write, self._mock_stderr_write)
- self.assertEqual(configuration.min_confidence, 3)
-
- def test_is_reportable(self):
- """Test the is_reportable() method."""
- config = self._style_checker_configuration()
-
- self.assertTrue(config.is_reportable("whitespace/tab", 3, "foo.txt"))
-
- # Test the confidence check code path by varying the confidence.
- self.assertFalse(config.is_reportable("whitespace/tab", 2, "foo.txt"))
-
- # Test the category check code path by varying the category.
- self.assertFalse(config.is_reportable("whitespace/line", 4, "foo.txt"))
-
- def _call_write_style_error(self, output_format):
- config = self._style_checker_configuration(output_format=output_format)
- config.write_style_error(category="whitespace/tab",
- confidence_in_error=5,
- file_path="foo.h",
- line_number=100,
- message="message")
-
- def test_write_style_error_emacs(self):
- """Test the write_style_error() method."""
- self._call_write_style_error("emacs")
- self.assertEqual(self._error_messages,
- ["foo.h:100: message [whitespace/tab] [5]\n"])
-
- def test_write_style_error_vs7(self):
- """Test the write_style_error() method."""
- self._call_write_style_error("vs7")
- self.assertEqual(self._error_messages,
- ["foo.h(100): message [whitespace/tab] [5]\n"])
-
-
-class StyleProcessor_EndToEndTest(LoggingTestCase):
-
- """Test the StyleProcessor class with an emphasis on end-to-end tests."""
-
- def setUp(self):
- LoggingTestCase.setUp(self)
- self._messages = []
-
- def _mock_stderr_write(self, message):
- """Save a message so it can later be asserted."""
- self._messages.append(message)
-
- def test_init(self):
- """Test __init__ constructor."""
- configuration = StyleProcessorConfiguration(
- filter_configuration=FilterConfiguration(),
- max_reports_per_category={},
- min_confidence=3,
- output_format="vs7",
- stderr_write=self._mock_stderr_write)
- processor = StyleProcessor(configuration)
-
- self.assertEqual(processor.error_count, 0)
- self.assertEqual(self._messages, [])
-
- def test_process(self):
- configuration = StyleProcessorConfiguration(
- filter_configuration=FilterConfiguration(),
- max_reports_per_category={},
- min_confidence=3,
- output_format="vs7",
- stderr_write=self._mock_stderr_write)
- processor = StyleProcessor(configuration)
-
- processor.process(lines=['line1', 'Line with tab:\t'],
- file_path='foo.txt')
- self.assertEqual(processor.error_count, 1)
- expected_messages = ['foo.txt(2): Line contains tab character. '
- '[whitespace/tab] [5]\n']
- self.assertEqual(self._messages, expected_messages)
-
-
-class StyleProcessor_CodeCoverageTest(LoggingTestCase):
-
- """Test the StyleProcessor class with an emphasis on code coverage.
-
- This class makes heavy use of mock objects.
-
- """
-
- class MockDispatchedChecker(object):
-
- """A mock checker dispatched by the MockDispatcher."""
-
- def __init__(self, file_path, min_confidence, style_error_handler):
- self.file_path = file_path
- self.min_confidence = min_confidence
- self.style_error_handler = style_error_handler
-
- def check(self, lines):
- self.lines = lines
-
- class MockDispatcher(object):
-
- """A mock CheckerDispatcher class."""
-
- def __init__(self):
- self.dispatched_checker = None
-
- def should_skip_with_warning(self, file_path):
- return file_path.endswith('skip_with_warning.txt')
-
- def should_skip_without_warning(self, file_path):
- return file_path.endswith('skip_without_warning.txt')
-
- def should_check_and_strip_carriage_returns(self, file_path):
- return not file_path.endswith('carriage_returns_allowed.txt')
-
- def dispatch(self, file_path, style_error_handler, min_confidence):
- if file_path.endswith('do_not_process.txt'):
- return None
-
- checker = StyleProcessor_CodeCoverageTest.MockDispatchedChecker(
- file_path,
- min_confidence,
- style_error_handler)
-
- # Save the dispatched checker so the current test case has a
- # way to access and check it.
- self.dispatched_checker = checker
-
- return checker
-
- def setUp(self):
- LoggingTestCase.setUp(self)
- # We can pass an error-message swallower here because error message
- # output is tested instead in the end-to-end test case above.
- configuration = StyleProcessorConfiguration(
- filter_configuration=FilterConfiguration(),
- max_reports_per_category={"whitespace/newline": 1},
- min_confidence=3,
- output_format="vs7",
- stderr_write=self._swallow_stderr_message)
-
- mock_carriage_checker_class = self._create_carriage_checker_class()
- mock_dispatcher = self.MockDispatcher()
- # We do not need to use a real incrementer here because error-count
- # incrementing is tested instead in the end-to-end test case above.
- mock_increment_error_count = self._do_nothing
-
- processor = StyleProcessor(configuration=configuration,
- mock_carriage_checker_class=mock_carriage_checker_class,
- mock_dispatcher=mock_dispatcher,
- mock_increment_error_count=mock_increment_error_count)
-
- self._configuration = configuration
- self._mock_dispatcher = mock_dispatcher
- self._processor = processor
-
- def _do_nothing(self):
- # We provide this function so the caller can pass it to the
- # StyleProcessor constructor. This lets us assert the equality of
- # the DefaultStyleErrorHandler instance generated by the process()
- # method with an expected instance.
- pass
-
- def _swallow_stderr_message(self, message):
- """Swallow a message passed to stderr.write()."""
- # This is a mock stderr.write() for passing to the constructor
- # of the StyleProcessorConfiguration class.
- pass
-
- def _create_carriage_checker_class(self):
-
- # Create a reference to self with a new name so its name does not
- # conflict with the self introduced below.
- test_case = self
-
- class MockCarriageChecker(object):
-
- """A mock carriage-return checker."""
-
- def __init__(self, style_error_handler):
- self.style_error_handler = style_error_handler
-
- # This gives the current test case access to the
- # instantiated carriage checker.
- test_case.carriage_checker = self
-
- def check(self, lines):
- # Save the lines so the current test case has a way to access
- # and check them.
- self.lines = lines
-
- return lines
-
- return MockCarriageChecker
-
- def test_should_process__skip_without_warning(self):
- """Test should_process() for a skip-without-warning file."""
- file_path = "foo/skip_without_warning.txt"
-
- self.assertFalse(self._processor.should_process(file_path))
-
- def test_should_process__skip_with_warning(self):
- """Test should_process() for a skip-with-warning file."""
- file_path = "foo/skip_with_warning.txt"
-
- self.assertFalse(self._processor.should_process(file_path))
-
- self.assertLog(['WARNING: File exempt from style guide. '
- 'Skipping: "foo/skip_with_warning.txt"\n'])
-
- def test_should_process__true_result(self):
- """Test should_process() for a file that should be processed."""
- file_path = "foo/skip_process.txt"
-
- self.assertTrue(self._processor.should_process(file_path))
-
- def test_process__checker_dispatched(self):
- """Test the process() method for a path with a dispatched checker."""
- file_path = 'foo.txt'
- lines = ['line1', 'line2']
- line_numbers = [100]
-
- expected_error_handler = DefaultStyleErrorHandler(
- configuration=self._configuration,
- file_path=file_path,
- increment_error_count=self._do_nothing,
- line_numbers=line_numbers)
-
- self._processor.process(lines=lines,
- file_path=file_path,
- line_numbers=line_numbers)
-
- # Check that the carriage-return checker was instantiated correctly
- # and was passed lines correctly.
- carriage_checker = self.carriage_checker
- self.assertEqual(carriage_checker.style_error_handler,
- expected_error_handler)
- self.assertEqual(carriage_checker.lines, ['line1', 'line2'])
-
- # Check that the style checker was dispatched correctly and was
- # passed lines correctly.
- checker = self._mock_dispatcher.dispatched_checker
- self.assertEqual(checker.file_path, 'foo.txt')
- self.assertEqual(checker.min_confidence, 3)
- self.assertEqual(checker.style_error_handler, expected_error_handler)
-
- self.assertEqual(checker.lines, ['line1', 'line2'])
-
- def test_process__no_checker_dispatched(self):
- """Test the process() method for a path with no dispatched checker."""
- path = os.path.join('foo', 'do_not_process.txt')
- self.assertRaises(AssertionError, self._processor.process,
- lines=['line1', 'line2'], file_path=path,
- line_numbers=[100])
-
- def test_process__carriage_returns_not_stripped(self):
- """Test that carriage returns aren't stripped from files that are allowed to contain them."""
- file_path = 'carriage_returns_allowed.txt'
- lines = ['line1\r', 'line2\r']
- line_numbers = [100]
- self._processor.process(lines=lines,
- file_path=file_path,
- line_numbers=line_numbers)
- # The carriage return checker should never have been invoked, and so
- # should not have saved off any lines.
- self.assertFalse(hasattr(self.carriage_checker, 'lines'))
diff --git a/Tools/Scripts/webkitpy/style/checkers/__init__.py b/Tools/Scripts/webkitpy/style/checkers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/style/checkers/changelog.py b/Tools/Scripts/webkitpy/style/checkers/changelog.py
deleted file mode 100644
index 699bc3dea..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/changelog.py
+++ /dev/null
@@ -1,94 +0,0 @@
-# Copyright (C) 2011 Patrick Gansterer <paroga@paroga.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 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.
-
-"""Checks WebKit style for ChangeLog files."""
-
-import re
-from common import TabChecker
-from webkitpy.common.checkout.changelog import parse_bug_id_from_changelog
-
-
-class ChangeLogChecker(object):
- """Processes text lines for checking style."""
-
- categories = set(['changelog/bugnumber', 'changelog/filechangedescriptionwhitespace'])
-
- def __init__(self, file_path, handle_style_error, should_line_be_checked):
- self.file_path = file_path
- self.handle_style_error = handle_style_error
- self.should_line_be_checked = should_line_be_checked
- self._tab_checker = TabChecker(file_path, handle_style_error)
-
- def check_entry(self, first_line_checked, entry_lines):
- if not entry_lines:
- return
- for line in entry_lines:
- if parse_bug_id_from_changelog(line):
- break
- if re.search("Unreviewed", line, re.IGNORECASE):
- break
- if re.search("build", line, re.IGNORECASE) and re.search("fix", line, re.IGNORECASE):
- break
- else:
- self.handle_style_error(first_line_checked,
- "changelog/bugnumber", 5,
- "ChangeLog entry has no bug number")
- # check file change descriptions for style violations
- line_no = first_line_checked - 1
- for line in entry_lines:
- line_no = line_no + 1
- # filter file change descriptions
- if not re.match('\s*\*\s', line):
- continue
- if re.search(':\s*$', line) or re.search(':\s', line):
- continue
- self.handle_style_error(line_no,
- "changelog/filechangedescriptionwhitespace", 5,
- "Need whitespace between colon and description")
-
- # check for a lingering "No new tests. (OOPS!)" left over from prepare-changeLog.
- line_no = first_line_checked - 1
- for line in entry_lines:
- line_no = line_no + 1
- if re.match('\s*No new tests. \(OOPS!\)$', line):
- self.handle_style_error(line_no,
- "changelog/nonewtests", 5,
- "You should remove the 'No new tests' and either add and list tests, or explain why no new tests were possible.")
-
- def check(self, lines):
- self._tab_checker.check(lines)
- first_line_checked = 0
- entry_lines = []
-
- for line_index, line in enumerate(lines):
- if not self.should_line_be_checked(line_index + 1):
- # If we transitioned from finding changed lines to
- # unchanged lines, then we are done.
- if first_line_checked:
- break
- continue
- if not first_line_checked:
- first_line_checked = line_index + 1
- entry_lines.append(line)
-
- self.check_entry(first_line_checked, entry_lines)
diff --git a/Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py b/Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py
deleted file mode 100644
index 0ec0ec2da..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/changelog_unittest.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# Copyright (C) 2010 Apple Inc. All rights reserved.
-# Copyright (C) 2011 Patrick Gansterer <paroga@paroga.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 INC. 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 INC. 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.
-
-"""Unit test for changelog.py."""
-
-import changelog
-import unittest2 as unittest
-
-
-class ChangeLogCheckerTest(unittest.TestCase):
- """Tests ChangeLogChecker class."""
-
- def assert_no_error(self, lines_to_check, changelog_data):
- def handle_style_error(line_number, category, confidence, message):
- self.fail('Unexpected error: %d %s %d %s for\n%s' % (line_number, category, confidence, message, changelog_data))
- self.lines_to_check = set(lines_to_check)
- checker = changelog.ChangeLogChecker('ChangeLog', handle_style_error, self.mock_should_line_be_checked)
- checker.check(changelog_data.split('\n'))
-
- def assert_error(self, expected_line_number, lines_to_check, expected_category, changelog_data):
- self.had_error = False
-
- def handle_style_error(line_number, category, confidence, message):
- self.had_error = True
- self.assertEqual(expected_line_number, line_number)
- self.assertEqual(expected_category, category)
- self.lines_to_check = set(lines_to_check)
- checker = changelog.ChangeLogChecker('ChangeLog', handle_style_error, self.mock_should_line_be_checked)
- checker.check(changelog_data.split('\n'))
- self.assertTrue(self.had_error)
-
- def mock_handle_style_error(self):
- pass
-
- def mock_should_line_be_checked(self, line_number):
- return line_number in self.lines_to_check
-
- def test_init(self):
- checker = changelog.ChangeLogChecker('ChangeLog', self.mock_handle_style_error, self.mock_should_line_be_checked)
- self.assertEqual(checker.file_path, 'ChangeLog')
- self.assertEqual(checker.handle_style_error, self.mock_handle_style_error)
- self.assertEqual(checker.should_line_be_checked, self.mock_should_line_be_checked)
-
- def test_missing_bug_number(self):
- self.assert_error(1, range(1, 20), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n')
- self.assert_error(1, range(1, 20), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=\n')
- self.assert_error(1, range(1, 20), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' https://bugs.webkit.org/show_bug.cgi?id=\n')
- self.assert_error(1, range(1, 20), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' http://webkit.org/b/\n')
- self.assert_error(1, range(1, 20), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug'
- '\n'
- ' http://trac.webkit.org/changeset/12345\n')
- self.assert_error(2, range(2, 5), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' Example bug\n'
- ' https://bugs.webkit.org/show_bug.cgi\n'
- '\n'
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' Another change\n')
- self.assert_error(2, range(2, 6), 'changelog/bugnumber',
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' Example bug\n'
- ' More text about bug.\n'
- '\n'
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' No bug in this change.\n')
-
- def test_file_descriptions(self):
- self.assert_error(5, range(1, 20), 'changelog/filechangedescriptionwhitespace',
- '2011-01-01 Dmitry Lomov <dslomov@google.com>\n'
- ' ExampleBug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=12345\n'
- '\n'
- ' * Source/Tools/random-script.py:Fixed')
- self.assert_error(6, range(1, 20), 'changelog/filechangedescriptionwhitespace',
- '2011-01-01 Dmitry Lomov <dslomov@google.com>\n'
- ' ExampleBug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=12345\n'
- '\n'
- ' * Source/Tools/another-file: Done\n'
- ' * Source/Tools/random-script.py:Fixed\n'
- ' * Source/Tools/one-morefile:\n')
-
- def test_no_new_tests(self):
- self.assert_error(5, range(1, 20), 'changelog/nonewtests',
- '2011-01-01 Dmitry Lomov <dslomov@google.com>\n'
- ' ExampleBug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=12345\n'
- '\n'
- ' No new tests. (OOPS!)\n'
- ' * Source/Tools/random-script.py: Fixed')
-
- def test_no_error(self):
- self.assert_no_error([],
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example ChangeLog entry out of range\n'
- ' http://example.com/\n')
- self.assert_no_error([],
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=12345\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' http://bugs.webkit.org/show_bug.cgi?id=12345\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' https://bugs.webkit.org/show_bug.cgi?id=12345\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Example bug\n'
- ' http://webkit.org/b/12345\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Unreview build fix for r12345.\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Fix build after a bad change.\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- '\n'
- ' Fix example port build.\n')
- self.assert_no_error(range(2, 6),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' Example bug\n'
- ' https://bugs.webkit.org/show_bug.cgi?id=12345\n'
- '\n'
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' No bug here!\n')
- self.assert_no_error(range(1, 20),
- '2011-01-01 Patrick Gansterer <paroga@paroga.com>\n'
- ' Example bug\n'
- ' https://bugs.webkit.org/show_bug.cgi?id=12345\n'
- ' * Source/WebKit/foo.cpp: \n'
- ' * Source/WebKit/bar.cpp:\n'
- ' * Source/WebKit/foobar.cpp: Description\n')
diff --git a/Tools/Scripts/webkitpy/style/checkers/cmake.py b/Tools/Scripts/webkitpy/style/checkers/cmake.py
deleted file mode 100644
index 06b8929fa..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/cmake.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright (C) 2012 Intel 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 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.
-
-
-"""Supports checking WebKit style in cmake files.(.cmake, CMakeLists.txt)"""
-
-import re
-
-from common import TabChecker
-
-
-class CMakeChecker(object):
-
- """Processes CMake lines for checking style."""
-
- # NO_SPACE_CMDS list are based on commands section of CMake document.
- # Now it is generated from
- # http://www.cmake.org/cmake/help/v2.8.10/cmake.html#section_Commands.
- # Some commands are from default CMake modules such as pkg_check_modules.
- # Please keep list in alphabet order.
- #
- # For commands in this list, spaces should not be added it and its
- # parentheses. For eg, message("testing"), not message ("testing")
- #
- # The conditional commands like if, else, endif, foreach, endforeach,
- # while, endwhile and break are listed in ONE_SPACE_CMDS
- NO_SPACE_CMDS = [
- 'add_custom_command', 'add_custom_target', 'add_definitions',
- 'add_dependencies', 'add_executable', 'add_library',
- 'add_subdirectory', 'add_test', 'aux_source_directory',
- 'build_command',
- 'cmake_minimum_required', 'cmake_policy', 'configure_file',
- 'create_test_sourcelist',
- 'define_property',
- 'enable_language', 'enable_testing', 'endfunction', 'endmacro',
- 'execute_process', 'export',
- 'file', 'find_file', 'find_library', 'find_package', 'find_path',
- 'find_program', 'fltk_wrap_ui', 'function',
- 'get_cmake_property', 'get_directory_property',
- 'get_filename_component', 'get_property', 'get_source_file_property',
- 'get_target_property', 'get_test_property',
- 'include', 'include_directories', 'include_external_msproject',
- 'include_regular_expression', 'install',
- 'link_directories', 'list', 'load_cache', 'load_command',
- 'macro', 'mark_as_advanced', 'math', 'message',
- 'option',
- #From FindPkgConfig.cmake
- 'pkg_check_modules',
- 'project',
- 'qt_wrap_cpp', 'qt_wrap_ui',
- 'remove_definitions', 'return',
- 'separate_arguments', 'set', 'set_directory_properties', 'set_property',
- 'set_source_files_properties', 'set_target_properties',
- 'set_tests_properties', 'site_name', 'source_group', 'string',
- 'target_link_libraries', 'try_compile', 'try_run',
- 'unset',
- 'variable_watch',
- ]
-
- # CMake conditional commands, require one space between command and
- # its parentheses, such as "if (", "foreach (", etc.
- ONE_SPACE_CMDS = [
- 'if', 'else', 'elseif', 'endif',
- 'foreach', 'endforeach',
- 'while', 'endwhile',
- 'break',
- ]
-
- def __init__(self, file_path, handle_style_error):
- self._handle_style_error = handle_style_error
- self._tab_checker = TabChecker(file_path, handle_style_error)
-
- def check(self, lines):
- self._tab_checker.check(lines)
- self._num_lines = len(lines)
- for l in xrange(self._num_lines):
- self._process_line(l + 1, lines[l])
-
- def _process_line(self, line_number, line_content):
- if re.match('(^|\ +)#', line_content):
- # ignore comment line
- return
- l = line_content.expandtabs(4)
- # check command like message( "testing")
- if re.search('\(\ +', l):
- self._handle_style_error(line_number, 'whitespace/parentheses', 5,
- 'No space after "("')
- # check command like message("testing" )
- if re.search('\ +\)', l) and not re.search('^\ +\)$', l):
- self._handle_style_error(line_number, 'whitespace/parentheses', 5,
- 'No space before ")"')
- self._check_trailing_whitespace(line_number, l)
- self._check_no_space_cmds(line_number, l)
- self._check_one_space_cmds(line_number, l)
- self._check_indent(line_number, line_content)
-
- def _check_trailing_whitespace(self, line_number, line_content):
- line_content = line_content.rstrip('\n') # chr(10), newline
- line_content = line_content.rstrip('\r') # chr(13), carriage return
- line_content = line_content.rstrip('\x0c') # chr(12), form feed, ^L
- stripped = line_content.rstrip()
- if line_content != stripped:
- self._handle_style_error(line_number, 'whitespace/trailing', 5,
- 'No trailing spaces')
-
- def _check_no_space_cmds(self, line_number, line_content):
- # check command like "SET (" or "Set("
- for t in self.NO_SPACE_CMDS:
- self._check_non_lowercase_cmd(line_number, line_content, t)
- if re.search('(^|\ +)' + t.lower() + '\ +\(', line_content):
- msg = 'No space between command "' + t.lower() + '" and its parentheses, should be "' + t + '("'
- self._handle_style_error(line_number, 'whitespace/parentheses', 5, msg)
-
- def _check_one_space_cmds(self, line_number, line_content):
- # check command like "IF (" or "if(" or "if (" or "If ()"
- for t in self.ONE_SPACE_CMDS:
- self._check_non_lowercase_cmd(line_number, line_content, t)
- if re.search('(^|\ +)' + t.lower() + '(\(|\ \ +\()', line_content):
- msg = 'One space between command "' + t.lower() + '" and its parentheses, should be "' + t + ' ("'
- self._handle_style_error(line_number, 'whitespace/parentheses', 5, msg)
-
- def _check_non_lowercase_cmd(self, line_number, line_content, cmd):
- if re.search('(^|\ +)' + cmd + '\ *\(', line_content, flags=re.IGNORECASE) and \
- (not re.search('(^|\ +)' + cmd.lower() + '\ *\(', line_content)):
- msg = 'Use lowercase command "' + cmd.lower() + '"'
- self._handle_style_error(line_number, 'command/lowercase', 5, msg)
-
- def _check_indent(self, line_number, line_content):
- #TODO (halton): add indent checking
- pass
diff --git a/Tools/Scripts/webkitpy/style/checkers/cmake_unittest.py b/Tools/Scripts/webkitpy/style/checkers/cmake_unittest.py
deleted file mode 100644
index 7b2cdaf0e..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/cmake_unittest.py
+++ /dev/null
@@ -1,90 +0,0 @@
-# Copyright (C) 2012 Intel 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. 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 INC. 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.
-
-"""Unit test for cmake.py."""
-
-import unittest2 as unittest
-
-from cmake import CMakeChecker
-
-
-class CMakeCheckerTest(unittest.TestCase):
-
- """Tests CMakeChecker class."""
-
- def test_init(self):
- """Test __init__() method."""
- def _mock_handle_style_error(self):
- pass
-
- checker = CMakeChecker("foo.cmake", _mock_handle_style_error)
- self.assertEqual(checker._handle_style_error, _mock_handle_style_error)
-
- def test_check(self):
- """Test check() method."""
- errors = []
-
- def _mock_handle_style_error(line_number, category, confidence,
- message):
- error = (line_number, category, confidence, message)
- errors.append(error)
-
- checker = CMakeChecker("foo.cmake", _mock_handle_style_error)
-
- lines = [
- '# This file is sample input for cmake_unittest.py and includes below problems:\n',
- 'IF ()',
- '\tmessage("Error line with Tab")\n',
- ' message("Error line with endding spaces") \n',
- ' message( "Error line with space after (")\n',
- ' message("Error line with space before (" )\n',
- ' MESSAGE("Error line with upper case non-condtional command")\n',
- ' MESSage("Error line with upper case non-condtional command")\n',
- ' message("correct message line")\n',
- 'ENDif ()\n',
- '\n',
- 'if()\n',
- 'endif ()\n',
- '\n',
- 'macro ()\n',
- 'ENDMacro()\n',
- '\n',
- 'function ()\n',
- 'endfunction()\n',
- ]
- checker.check(lines)
-
- self.maxDiff = None
- self.assertEqual(errors, [
- (3, 'whitespace/tab', 5, 'Line contains tab character.'),
- (2, 'command/lowercase', 5, 'Use lowercase command "if"'),
- (4, 'whitespace/trailing', 5, 'No trailing spaces'),
- (5, 'whitespace/parentheses', 5, 'No space after "("'),
- (6, 'whitespace/parentheses', 5, 'No space before ")"'),
- (7, 'command/lowercase', 5, 'Use lowercase command "message"'),
- (8, 'command/lowercase', 5, 'Use lowercase command "message"'),
- (10, 'command/lowercase', 5, 'Use lowercase command "endif"'),
- (12, 'whitespace/parentheses', 5, 'One space between command "if" and its parentheses, should be "if ("'),
- (15, 'whitespace/parentheses', 5, 'No space between command "macro" and its parentheses, should be "macro("'),
- (16, 'command/lowercase', 5, 'Use lowercase command "endmacro"'),
- (18, 'whitespace/parentheses', 5, 'No space between command "function" and its parentheses, should be "function("'),
- ])
diff --git a/Tools/Scripts/webkitpy/style/checkers/common.py b/Tools/Scripts/webkitpy/style/checkers/common.py
deleted file mode 100644
index 76aa956b8..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/common.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Supports style checking not specific to any one file type."""
-
-
-# FIXME: Test this list in the same way that the list of CppChecker
-# categories is tested, for example by checking that all of its
-# elements appear in the unit tests. This should probably be done
-# after moving the relevant cpp_unittest.ErrorCollector code
-# into a shared location and refactoring appropriately.
-categories = set([
- "whitespace/carriage_return",
- "whitespace/tab"])
-
-
-class CarriageReturnChecker(object):
-
- """Supports checking for and handling carriage returns."""
-
- def __init__(self, handle_style_error):
- self._handle_style_error = handle_style_error
-
- def check(self, lines):
- """Check for and strip trailing carriage returns from lines."""
- for line_number in range(len(lines)):
- if not lines[line_number].endswith("\r"):
- continue
-
- self._handle_style_error(line_number + 1, # Correct for offset.
- "whitespace/carriage_return",
- 1,
- "One or more unexpected \\r (^M) found; "
- "better to use only a \\n")
-
- lines[line_number] = lines[line_number].rstrip("\r")
-
- return lines
-
-
-class TabChecker(object):
-
- """Supports checking for and handling tabs."""
-
- def __init__(self, file_path, handle_style_error):
- self.file_path = file_path
- self.handle_style_error = handle_style_error
-
- def check(self, lines):
- # FIXME: share with cpp_style.
- for line_number, line in enumerate(lines):
- if "\t" in line:
- self.handle_style_error(line_number + 1,
- "whitespace/tab", 5,
- "Line contains tab character.")
diff --git a/Tools/Scripts/webkitpy/style/checkers/common_unittest.py b/Tools/Scripts/webkitpy/style/checkers/common_unittest.py
deleted file mode 100644
index 8449b989b..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/common_unittest.py
+++ /dev/null
@@ -1,121 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Unit tests for common.py."""
-
-import unittest2 as unittest
-
-from common import CarriageReturnChecker
-from common import TabChecker
-
-# FIXME: The unit tests for the cpp, text, and common checkers should
-# share supporting test code. This can include, for example, the
-# mock style error handling code and the code to check that all
-# of a checker's categories are covered by the unit tests.
-# Such shared code can be located in a shared test file, perhaps
-# even this file.
-class CarriageReturnCheckerTest(unittest.TestCase):
-
- """Tests check_no_carriage_return()."""
-
- _category = "whitespace/carriage_return"
- _confidence = 1
- _expected_message = ("One or more unexpected \\r (^M) found; "
- "better to use only a \\n")
-
- def setUp(self):
- self._style_errors = [] # The list of accumulated style errors.
-
- def _mock_style_error_handler(self, line_number, category, confidence,
- message):
- """Append the error information to the list of style errors."""
- error = (line_number, category, confidence, message)
- self._style_errors.append(error)
-
- def assert_carriage_return(self, input_lines, expected_lines, error_lines):
- """Process the given line and assert that the result is correct."""
- handle_style_error = self._mock_style_error_handler
-
- checker = CarriageReturnChecker(handle_style_error)
- output_lines = checker.check(input_lines)
-
- # Check both the return value and error messages.
- self.assertEqual(output_lines, expected_lines)
-
- expected_errors = [(line_number, self._category, self._confidence,
- self._expected_message)
- for line_number in error_lines]
- self.assertEqual(self._style_errors, expected_errors)
-
- def test_ends_with_carriage(self):
- self.assert_carriage_return(["carriage return\r"],
- ["carriage return"],
- [1])
-
- def test_ends_with_nothing(self):
- self.assert_carriage_return(["no carriage return"],
- ["no carriage return"],
- [])
-
- def test_ends_with_newline(self):
- self.assert_carriage_return(["no carriage return\n"],
- ["no carriage return\n"],
- [])
-
- def test_carriage_in_middle(self):
- # The CarriageReturnChecker checks only the final character
- # of each line.
- self.assert_carriage_return(["carriage\r in a string"],
- ["carriage\r in a string"],
- [])
-
- def test_multiple_errors(self):
- self.assert_carriage_return(["line1", "line2\r", "line3\r"],
- ["line1", "line2", "line3"],
- [2, 3])
-
-
-class TabCheckerTest(unittest.TestCase):
-
- """Tests for TabChecker."""
-
- def assert_tab(self, input_lines, error_lines):
- """Assert when the given lines contain tabs."""
- self._error_lines = []
-
- def style_error_handler(line_number, category, confidence, message):
- self.assertEqual(category, 'whitespace/tab')
- self.assertEqual(confidence, 5)
- self.assertEqual(message, 'Line contains tab character.')
- self._error_lines.append(line_number)
-
- checker = TabChecker('', style_error_handler)
- checker.check(input_lines)
- self.assertEqual(self._error_lines, error_lines)
-
- def test_notab(self):
- self.assert_tab([''], [])
- self.assert_tab(['foo', 'bar'], [])
-
- def test_tab(self):
- self.assert_tab(['\tfoo'], [1])
- self.assert_tab(['line1', '\tline2', 'line3\t'], [2, 3])
diff --git a/Tools/Scripts/webkitpy/style/checkers/cpp.py b/Tools/Scripts/webkitpy/style/checkers/cpp.py
deleted file mode 100644
index d67e69ad8..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/cpp.py
+++ /dev/null
@@ -1,3761 +0,0 @@
-# -*- coding: utf-8 -*-
-#
-# Copyright (C) 2009, 2010, 2012 Google Inc. All rights reserved.
-# Copyright (C) 2009 Torch Mobile Inc.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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 the modified version of Google's cpplint. The original code is
-# http://google-styleguide.googlecode.com/svn/trunk/cpplint/cpplint.py
-
-"""Support for check-webkit-style."""
-
-import codecs
-import math # for log
-import os
-import os.path
-import re
-import sre_compile
-import string
-import sys
-import unicodedata
-
-from webkitpy.common.memoized import memoized
-
-# The key to use to provide a class to fake loading a header file.
-INCLUDE_IO_INJECTION_KEY = 'include_header_io'
-
-# Headers that we consider STL headers.
-_STL_HEADERS = frozenset([
- 'algobase.h', 'algorithm', 'alloc.h', 'bitset', 'deque', 'exception',
- 'function.h', 'functional', 'hash_map', 'hash_map.h', 'hash_set',
- 'hash_set.h', 'iterator', 'list', 'list.h', 'map', 'memory', 'pair.h',
- 'pthread_alloc', 'queue', 'set', 'set.h', 'sstream', 'stack',
- 'stl_alloc.h', 'stl_relops.h', 'type_traits.h',
- 'utility', 'vector', 'vector.h',
- ])
-
-
-# Non-STL C++ system headers.
-_CPP_HEADERS = frozenset([
- 'algo.h', 'builtinbuf.h', 'bvector.h', 'cassert', 'cctype',
- 'cerrno', 'cfloat', 'ciso646', 'climits', 'clocale', 'cmath',
- 'complex', 'complex.h', 'csetjmp', 'csignal', 'cstdarg', 'cstddef',
- 'cstdio', 'cstdlib', 'cstring', 'ctime', 'cwchar', 'cwctype',
- 'defalloc.h', 'deque.h', 'editbuf.h', 'exception', 'fstream',
- 'fstream.h', 'hashtable.h', 'heap.h', 'indstream.h', 'iomanip',
- 'iomanip.h', 'ios', 'iosfwd', 'iostream', 'iostream.h', 'istream.h',
- 'iterator.h', 'limits', 'map.h', 'multimap.h', 'multiset.h',
- 'numeric', 'ostream.h', 'parsestream.h', 'pfstream.h', 'PlotFile.h',
- 'procbuf.h', 'pthread_alloc.h', 'rope', 'rope.h', 'ropeimpl.h',
- 'SFile.h', 'slist', 'slist.h', 'stack.h', 'stdexcept',
- 'stdiostream.h', 'streambuf.h', 'stream.h', 'strfile.h', 'string',
- 'strstream', 'strstream.h', 'tempbuf.h', 'tree.h', 'typeinfo', 'valarray',
- ])
-
-
-# Assertion macros. These are defined in base/logging.h and
-# testing/base/gunit.h. Note that the _M versions need to come first
-# for substring matching to work.
-_CHECK_MACROS = [
- 'DCHECK', 'CHECK',
- 'EXPECT_TRUE_M', 'EXPECT_TRUE',
- 'ASSERT_TRUE_M', 'ASSERT_TRUE',
- 'EXPECT_FALSE_M', 'EXPECT_FALSE',
- 'ASSERT_FALSE_M', 'ASSERT_FALSE',
- ]
-
-# Replacement macros for CHECK/DCHECK/EXPECT_TRUE/EXPECT_FALSE
-_CHECK_REPLACEMENT = dict([(m, {}) for m in _CHECK_MACROS])
-
-for op, replacement in [('==', 'EQ'), ('!=', 'NE'),
- ('>=', 'GE'), ('>', 'GT'),
- ('<=', 'LE'), ('<', 'LT')]:
- _CHECK_REPLACEMENT['DCHECK'][op] = 'DCHECK_%s' % replacement
- _CHECK_REPLACEMENT['CHECK'][op] = 'CHECK_%s' % replacement
- _CHECK_REPLACEMENT['EXPECT_TRUE'][op] = 'EXPECT_%s' % replacement
- _CHECK_REPLACEMENT['ASSERT_TRUE'][op] = 'ASSERT_%s' % replacement
- _CHECK_REPLACEMENT['EXPECT_TRUE_M'][op] = 'EXPECT_%s_M' % replacement
- _CHECK_REPLACEMENT['ASSERT_TRUE_M'][op] = 'ASSERT_%s_M' % replacement
-
-for op, inv_replacement in [('==', 'NE'), ('!=', 'EQ'),
- ('>=', 'LT'), ('>', 'LE'),
- ('<=', 'GT'), ('<', 'GE')]:
- _CHECK_REPLACEMENT['EXPECT_FALSE'][op] = 'EXPECT_%s' % inv_replacement
- _CHECK_REPLACEMENT['ASSERT_FALSE'][op] = 'ASSERT_%s' % inv_replacement
- _CHECK_REPLACEMENT['EXPECT_FALSE_M'][op] = 'EXPECT_%s_M' % inv_replacement
- _CHECK_REPLACEMENT['ASSERT_FALSE_M'][op] = 'ASSERT_%s_M' % inv_replacement
-
-
-# These constants define types of headers for use with
-# _IncludeState.check_next_include_order().
-_CONFIG_HEADER = 0
-_PRIMARY_HEADER = 1
-_OTHER_HEADER = 2
-_MOC_HEADER = 3
-
-
-# A dictionary of items customize behavior for unit test. For example,
-# INCLUDE_IO_INJECTION_KEY allows providing a custom io class which allows
-# for faking a header file.
-_unit_test_config = {}
-
-
-# The regexp compilation caching is inlined in all regexp functions for
-# performance reasons; factoring it out into a separate function turns out
-# to be noticeably expensive.
-_regexp_compile_cache = {}
-
-
-def match(pattern, s):
- """Matches the string with the pattern, caching the compiled regexp."""
- if not pattern in _regexp_compile_cache:
- _regexp_compile_cache[pattern] = sre_compile.compile(pattern)
- return _regexp_compile_cache[pattern].match(s)
-
-
-def search(pattern, s):
- """Searches the string for the pattern, caching the compiled regexp."""
- if not pattern in _regexp_compile_cache:
- _regexp_compile_cache[pattern] = sre_compile.compile(pattern)
- return _regexp_compile_cache[pattern].search(s)
-
-
-def sub(pattern, replacement, s):
- """Substitutes occurrences of a pattern, caching the compiled regexp."""
- if not pattern in _regexp_compile_cache:
- _regexp_compile_cache[pattern] = sre_compile.compile(pattern)
- return _regexp_compile_cache[pattern].sub(replacement, s)
-
-
-def subn(pattern, replacement, s):
- """Substitutes occurrences of a pattern, caching the compiled regexp."""
- if not pattern in _regexp_compile_cache:
- _regexp_compile_cache[pattern] = sre_compile.compile(pattern)
- return _regexp_compile_cache[pattern].subn(replacement, s)
-
-
-def iteratively_replace_matches_with_char(pattern, char_replacement, s):
- """Returns the string with replacement done.
-
- Every character in the match is replaced with char.
- Due to the iterative nature, pattern should not match char or
- there will be an infinite loop.
-
- Example:
- pattern = r'<[^>]>' # template parameters
- char_replacement = '_'
- s = 'A<B<C, D>>'
- Returns 'A_________'
-
- Args:
- pattern: The regex to match.
- char_replacement: The character to put in place of every
- character of the match.
- s: The string on which to do the replacements.
-
- Returns:
- True, if the given line is blank.
- """
- while True:
- matched = search(pattern, s)
- if not matched:
- return s
- start_match_index = matched.start(0)
- end_match_index = matched.end(0)
- match_length = end_match_index - start_match_index
- s = s[:start_match_index] + char_replacement * match_length + s[end_match_index:]
-
-
-def _rfind_in_lines(regex, lines, start_position, not_found_position):
- """Does a reverse find starting at start position and going backwards until
- a match is found.
-
- Returns the position where the regex ended.
- """
- # Put the regex in a group and proceed it with a greedy expression that
- # matches anything to ensure that we get the last possible match in a line.
- last_in_line_regex = r'.*(' + regex + ')'
- current_row = start_position.row
-
- # Start with the given row and trim off everything past what may be matched.
- current_line = lines[start_position.row][:start_position.column]
- while True:
- found_match = match(last_in_line_regex, current_line)
- if found_match:
- return Position(current_row, found_match.end(1))
-
- # A match was not found so continue backward.
- current_row -= 1
- if current_row < 0:
- return not_found_position
- current_line = lines[current_row]
-
-
-def _convert_to_lower_with_underscores(text):
- """Converts all text strings in camelCase or PascalCase to lowers with underscores."""
-
- # First add underscores before any capital letter followed by a lower case letter
- # as long as it is in a word.
- # (This put an underscore before Password but not P and A in WPAPassword).
- text = sub(r'(?<=[A-Za-z0-9])([A-Z])(?=[a-z])', r'_\1', text)
-
- # Next add underscores before capitals at the end of words if it was
- # preceeded by lower case letter or number.
- # (This puts an underscore before A in isA but not A in CBA).
- text = sub(r'(?<=[a-z0-9])([A-Z])(?=\b)', r'_\1', text)
-
- # Next add underscores when you have a captial letter which is followed by a capital letter
- # but is not proceeded by one. (This puts an underscore before A in 'WordADay').
- text = sub(r'(?<=[a-z0-9])([A-Z][A-Z_])', r'_\1', text)
-
- return text.lower()
-
-
-
-def _create_acronym(text):
- """Creates an acronym for the given text."""
- # Removes all lower case letters except those starting words.
- text = sub(r'(?<!\b)[a-z]', '', text)
- return text.upper()
-
-
-def up_to_unmatched_closing_paren(s):
- """Splits a string into two parts up to first unmatched ')'.
-
- Args:
- s: a string which is a substring of line after '('
- (e.g., "a == (b + c))").
-
- Returns:
- A pair of strings (prefix before first unmatched ')',
- remainder of s after first unmatched ')'), e.g.,
- up_to_unmatched_closing_paren("a == (b + c)) { ")
- returns "a == (b + c)", " {".
- Returns None, None if there is no unmatched ')'
-
- """
- i = 1
- for pos, c in enumerate(s):
- if c == '(':
- i += 1
- elif c == ')':
- i -= 1
- if i == 0:
- return s[:pos], s[pos + 1:]
- return None, None
-
-class _IncludeState(dict):
- """Tracks line numbers for includes, and the order in which includes appear.
-
- As a dict, an _IncludeState object serves as a mapping between include
- filename and line number on which that file was included.
-
- Call check_next_include_order() once for each header in the file, passing
- in the type constants defined above. Calls in an illegal order will
- raise an _IncludeError with an appropriate error message.
-
- """
- # self._section will move monotonically through this set. If it ever
- # needs to move backwards, check_next_include_order will raise an error.
- _INITIAL_SECTION = 0
- _CONFIG_SECTION = 1
- _PRIMARY_SECTION = 2
- _OTHER_SECTION = 3
-
- _TYPE_NAMES = {
- _CONFIG_HEADER: 'WebCore config.h',
- _PRIMARY_HEADER: 'header this file implements',
- _OTHER_HEADER: 'other header',
- _MOC_HEADER: 'moc file',
- }
- _SECTION_NAMES = {
- _INITIAL_SECTION: "... nothing.",
- _CONFIG_SECTION: "WebCore config.h.",
- _PRIMARY_SECTION: 'a header this file implements.',
- _OTHER_SECTION: 'other header.',
- }
-
- def __init__(self):
- dict.__init__(self)
- self._section = self._INITIAL_SECTION
- self._visited_primary_section = False
- self.header_types = dict();
-
- def visited_primary_section(self):
- return self._visited_primary_section
-
- def check_next_include_order(self, header_type, file_is_header, primary_header_exists):
- """Returns a non-empty error message if the next header is out of order.
-
- This function also updates the internal state to be ready to check
- the next include.
-
- Args:
- header_type: One of the _XXX_HEADER constants defined above.
- file_is_header: Whether the file that owns this _IncludeState is itself a header
-
- Returns:
- The empty string if the header is in the right order, or an
- error message describing what's wrong.
-
- """
- if header_type == _CONFIG_HEADER and file_is_header:
- return 'Header file should not contain WebCore config.h.'
- if header_type == _PRIMARY_HEADER and file_is_header:
- return 'Header file should not contain itself.'
- if header_type == _MOC_HEADER:
- return ''
-
- error_message = ''
- if self._section != self._OTHER_SECTION:
- before_error_message = ('Found %s before %s' %
- (self._TYPE_NAMES[header_type],
- self._SECTION_NAMES[self._section + 1]))
- after_error_message = ('Found %s after %s' %
- (self._TYPE_NAMES[header_type],
- self._SECTION_NAMES[self._section]))
-
- if header_type == _CONFIG_HEADER:
- if self._section >= self._CONFIG_SECTION:
- error_message = after_error_message
- self._section = self._CONFIG_SECTION
- elif header_type == _PRIMARY_HEADER:
- if self._section >= self._PRIMARY_SECTION:
- error_message = after_error_message
- elif self._section < self._CONFIG_SECTION:
- error_message = before_error_message
- self._section = self._PRIMARY_SECTION
- self._visited_primary_section = True
- else:
- assert header_type == _OTHER_HEADER
- if not file_is_header and self._section < self._PRIMARY_SECTION:
- if primary_header_exists:
- error_message = before_error_message
- self._section = self._OTHER_SECTION
-
- return error_message
-
-
-class Position(object):
- """Holds the position of something."""
- def __init__(self, row, column):
- self.row = row
- self.column = column
-
- def __str__(self):
- return '(%s, %s)' % (self.row, self.column)
-
- def __cmp__(self, other):
- return self.row.__cmp__(other.row) or self.column.__cmp__(other.column)
-
-
-class Parameter(object):
- """Information about one function parameter."""
- def __init__(self, parameter, parameter_name_index, row):
- self.type = parameter[:parameter_name_index].strip()
- # Remove any initializers from the parameter name (e.g. int i = 5).
- self.name = sub(r'=.*', '', parameter[parameter_name_index:]).strip()
- self.row = row
-
- @memoized
- def lower_with_underscores_name(self):
- """Returns the parameter name in the lower with underscores format."""
- return _convert_to_lower_with_underscores(self.name)
-
-
-class SingleLineView(object):
- """Converts multiple lines into a single line (with line breaks replaced by a
- space) to allow for easier searching."""
- def __init__(self, lines, start_position, end_position):
- """Create a SingleLineView instance.
-
- Args:
- lines: a list of multiple lines to combine into a single line.
- start_position: offset within lines of where to start the single line.
- end_position: just after where to end (like a slice operation).
- """
- # Get the rows of interest.
- trimmed_lines = lines[start_position.row:end_position.row + 1]
-
- # Remove the columns on the last line that aren't included.
- trimmed_lines[-1] = trimmed_lines[-1][:end_position.column]
-
- # Remove the columns on the first line that aren't included.
- trimmed_lines[0] = trimmed_lines[0][start_position.column:]
-
- # Create a single line with all of the parameters.
- self.single_line = ' '.join(trimmed_lines)
-
- # Keep the row lengths, so we can calculate the original row number
- # given a column in the single line (adding 1 due to the space added
- # during the join).
- self._row_lengths = [len(line) + 1 for line in trimmed_lines]
- self._starting_row = start_position.row
-
- def convert_column_to_row(self, single_line_column_number):
- """Convert the column number from the single line into the original
- line number.
-
- Special cases:
- * Columns in the added spaces are considered part of the previous line.
- * Columns beyond the end of the line are consider part the last line
- in the view."""
- total_columns = 0
- row_offset = 0
- while row_offset < len(self._row_lengths) - 1 and single_line_column_number >= total_columns + self._row_lengths[row_offset]:
- total_columns += self._row_lengths[row_offset]
- row_offset += 1
- return self._starting_row + row_offset
-
-
-def create_skeleton_parameters(all_parameters):
- """Converts a parameter list to a skeleton version.
-
- The skeleton only has one word for the parameter name, one word for the type,
- and commas after each parameter and only there. Everything in the skeleton
- remains in the same columns as the original."""
- all_simplifications = (
- # Remove template parameters, function declaration parameters, etc.
- r'(<[^<>]*?>)|(\([^\(\)]*?\))|(\{[^\{\}]*?\})',
- # Remove all initializers.
- r'=[^,]*',
- # Remove :: and everything before it.
- r'[^,]*::',
- # Remove modifiers like &, *.
- r'[&*]',
- # Remove const modifiers.
- r'\bconst\s+(?=[A-Za-z])',
- # Remove numerical modifiers like long.
- r'\b(unsigned|long|short)\s+(?=unsigned|long|short|int|char|double|float)')
-
- skeleton_parameters = all_parameters
- for simplification in all_simplifications:
- skeleton_parameters = iteratively_replace_matches_with_char(simplification, ' ', skeleton_parameters)
- # If there are any parameters, then add a , after the last one to
- # make a regular pattern of a , following every parameter.
- if skeleton_parameters.strip():
- skeleton_parameters += ','
- return skeleton_parameters
-
-
-def find_parameter_name_index(skeleton_parameter):
- """Determines where the parametere name starts given the skeleton parameter."""
- # The first space from the right in the simplified parameter is where the parameter
- # name starts unless the first space is before any content in the simplified parameter.
- before_name_index = skeleton_parameter.rstrip().rfind(' ')
- if before_name_index != -1 and skeleton_parameter[:before_name_index].strip():
- return before_name_index + 1
- return len(skeleton_parameter)
-
-
-def parameter_list(elided_lines, start_position, end_position):
- """Generator for a function's parameters."""
- # Create new positions that omit the outer parenthesis of the parameters.
- start_position = Position(row=start_position.row, column=start_position.column + 1)
- end_position = Position(row=end_position.row, column=end_position.column - 1)
- single_line_view = SingleLineView(elided_lines, start_position, end_position)
- skeleton_parameters = create_skeleton_parameters(single_line_view.single_line)
- end_index = -1
-
- while True:
- # Find the end of the next parameter.
- start_index = end_index + 1
- end_index = skeleton_parameters.find(',', start_index)
-
- # No comma means that all parameters have been parsed.
- if end_index == -1:
- return
- row = single_line_view.convert_column_to_row(end_index)
-
- # Parse the parameter into a type and parameter name.
- skeleton_parameter = skeleton_parameters[start_index:end_index]
- name_offset = find_parameter_name_index(skeleton_parameter)
- parameter = single_line_view.single_line[start_index:end_index]
- yield Parameter(parameter, name_offset, row)
-
-
-class _FunctionState(object):
- """Tracks current function name and the number of lines in its body.
-
- Attributes:
- min_confidence: The minimum confidence level to use while checking style.
-
- """
-
- _NORMAL_TRIGGER = 250 # for --v=0, 500 for --v=1, etc.
- _TEST_TRIGGER = 400 # about 50% more than _NORMAL_TRIGGER.
-
- def __init__(self, min_confidence):
- self.min_confidence = min_confidence
- self.current_function = ''
- self.in_a_function = False
- self.lines_in_function = 0
- # Make sure these will not be mistaken for real positions (even when a
- # small amount is added to them).
- self.body_start_position = Position(-1000, 0)
- self.end_position = Position(-1000, 0)
-
- def begin(self, function_name, function_name_start_position, body_start_position, end_position,
- parameter_start_position, parameter_end_position, clean_lines):
- """Start analyzing function body.
-
- Args:
- function_name: The name of the function being tracked.
- function_name_start_position: Position in elided where the function name starts.
- body_start_position: Position in elided of the { or the ; for a prototype.
- end_position: Position in elided just after the final } (or ; is.
- parameter_start_position: Position in elided of the '(' for the parameters.
- parameter_end_position: Position in elided just after the ')' for the parameters.
- clean_lines: A CleansedLines instance containing the file.
- """
- self.in_a_function = True
- self.lines_in_function = -1 # Don't count the open brace line.
- self.current_function = function_name
- self.function_name_start_position = function_name_start_position
- self.body_start_position = body_start_position
- self.end_position = end_position
- self.is_declaration = clean_lines.elided[body_start_position.row][body_start_position.column] == ';'
- self.parameter_start_position = parameter_start_position
- self.parameter_end_position = parameter_end_position
- self.is_pure = False
- if self.is_declaration:
- characters_after_parameters = SingleLineView(clean_lines.elided, parameter_end_position, body_start_position).single_line
- self.is_pure = bool(match(r'\s*=\s*0\s*', characters_after_parameters))
- self._clean_lines = clean_lines
- self._parameter_list = None
-
- def modifiers_and_return_type(self):
- """Returns the modifiers and the return type."""
- # Go backwards from where the function name is until we encounter one of several things:
- # ';' or '{' or '}' or 'private:', etc. or '#' or return Position(0, 0)
- elided = self._clean_lines.elided
- start_modifiers = _rfind_in_lines(r';|\{|\}|((private|public|protected):)|(#.*)',
- elided, self.parameter_start_position, Position(0, 0))
- return SingleLineView(elided, start_modifiers, self.function_name_start_position).single_line.strip()
-
- def parameter_list(self):
- if not self._parameter_list:
- # Store the final result as a tuple since that is immutable.
- self._parameter_list = tuple(parameter_list(self._clean_lines.elided, self.parameter_start_position, self.parameter_end_position))
-
- return self._parameter_list
-
- def count(self, line_number):
- """Count line in current function body."""
- if self.in_a_function and line_number >= self.body_start_position.row:
- self.lines_in_function += 1
-
- def check(self, error, line_number):
- """Report if too many lines in function body.
-
- Args:
- error: The function to call with any errors found.
- line_number: The number of the line to check.
- """
- if match(r'T(EST|est)', self.current_function):
- base_trigger = self._TEST_TRIGGER
- else:
- base_trigger = self._NORMAL_TRIGGER
- trigger = base_trigger * 2 ** self.min_confidence
-
- if self.lines_in_function > trigger:
- error_level = int(math.log(self.lines_in_function / base_trigger, 2))
- # 50 => 0, 100 => 1, 200 => 2, 400 => 3, 800 => 4, 1600 => 5, ...
- if error_level > 5:
- error_level = 5
- error(line_number, 'readability/fn_size', error_level,
- 'Small and focused functions are preferred:'
- ' %s has %d non-comment lines'
- ' (error triggered by exceeding %d lines).' % (
- self.current_function, self.lines_in_function, trigger))
-
- def end(self):
- """Stop analyzing function body."""
- self.in_a_function = False
-
-
-class _IncludeError(Exception):
- """Indicates a problem with the include order in a file."""
- pass
-
-
-class FileInfo:
- """Provides utility functions for filenames.
-
- FileInfo provides easy access to the components of a file's path
- relative to the project root.
- """
-
- def __init__(self, filename):
- self._filename = filename
-
- def full_name(self):
- """Make Windows paths like Unix."""
- return os.path.abspath(self._filename).replace('\\', '/')
-
- def repository_name(self):
- """Full name after removing the local path to the repository.
-
- If we have a real absolute path name here we can try to do something smart:
- detecting the root of the checkout and truncating /path/to/checkout from
- the name so that we get header guards that don't include things like
- "C:\Documents and Settings\..." or "/home/username/..." in them and thus
- people on different computers who have checked the source out to different
- locations won't see bogus errors.
- """
- fullname = self.full_name()
-
- if os.path.exists(fullname):
- project_dir = os.path.dirname(fullname)
-
- if os.path.exists(os.path.join(project_dir, ".svn")):
- # If there's a .svn file in the current directory, we
- # recursively look up the directory tree for the top
- # of the SVN checkout
- root_dir = project_dir
- one_up_dir = os.path.dirname(root_dir)
- while os.path.exists(os.path.join(one_up_dir, ".svn")):
- root_dir = os.path.dirname(root_dir)
- one_up_dir = os.path.dirname(one_up_dir)
-
- prefix = os.path.commonprefix([root_dir, project_dir])
- return fullname[len(prefix) + 1:]
-
-
- # Not SVN <= 1.6? Try to find a git, or svn top level directory by
- # searching up from the current path.
- root_dir = os.path.dirname(fullname)
- while (root_dir != os.path.dirname(root_dir)
- and not os.path.exists(os.path.join(root_dir, ".git"))
- and not os.path.exists(os.path.join(root_dir, ".svn"))):
- root_dir = os.path.dirname(root_dir)
- if (os.path.exists(os.path.join(root_dir, ".git")) or
- os.path.exists(os.path.join(root_dir, ".svn"))):
- prefix = os.path.commonprefix([root_dir, project_dir])
- return fullname[len(prefix) + 1:]
-
- # Don't know what to do; header guard warnings may be wrong...
- return fullname
-
- def split(self):
- """Splits the file into the directory, basename, and extension.
-
- For 'chrome/browser/browser.cpp', Split() would
- return ('chrome/browser', 'browser', '.cpp')
-
- Returns:
- A tuple of (directory, basename, extension).
- """
-
- googlename = self.repository_name()
- project, rest = os.path.split(googlename)
- return (project,) + os.path.splitext(rest)
-
- def base_name(self):
- """File base name - text after the final slash, before the final period."""
- return self.split()[1]
-
- def extension(self):
- """File extension - text following the final period."""
- return self.split()[2]
-
- def no_extension(self):
- """File has no source file extension."""
- return '/'.join(self.split()[0:2])
-
- def is_source(self):
- """File has a source file extension."""
- return self.extension()[1:] in ('c', 'cc', 'cpp', 'cxx')
-
-
-# Matches standard C++ escape esequences per 2.13.2.3 of the C++ standard.
-_RE_PATTERN_CLEANSE_LINE_ESCAPES = re.compile(
- r'\\([abfnrtv?"\\\']|\d+|x[0-9a-fA-F]+)')
-# Matches strings. Escape codes should already be removed by ESCAPES.
-_RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES = re.compile(r'"[^"]*"')
-# Matches characters. Escape codes should already be removed by ESCAPES.
-_RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES = re.compile(r"'.'")
-# Matches multi-line C++ comments.
-# This RE is a little bit more complicated than one might expect, because we
-# have to take care of space removals tools so we can handle comments inside
-# statements better.
-# The current rule is: We only clear spaces from both sides when we're at the
-# end of the line. Otherwise, we try to remove spaces from the right side,
-# if this doesn't work we try on left side but only if there's a non-character
-# on the right.
-_RE_PATTERN_CLEANSE_LINE_C_COMMENTS = re.compile(
- r"""(\s*/\*.*\*/\s*$|
- /\*.*\*/\s+|
- \s+/\*.*\*/(?=\W)|
- /\*.*\*/)""", re.VERBOSE)
-
-
-def is_cpp_string(line):
- """Does line terminate so, that the next symbol is in string constant.
-
- This function does not consider single-line nor multi-line comments.
-
- Args:
- line: is a partial line of code starting from the 0..n.
-
- Returns:
- True, if next character appended to 'line' is inside a
- string constant.
- """
-
- line = line.replace(r'\\', 'XX') # after this, \\" does not match to \"
- return ((line.count('"') - line.count(r'\"') - line.count("'\"'")) & 1) == 1
-
-
-def find_next_multi_line_comment_start(lines, line_index):
- """Find the beginning marker for a multiline comment."""
- while line_index < len(lines):
- if lines[line_index].strip().startswith('/*'):
- # Only return this marker if the comment goes beyond this line
- if lines[line_index].strip().find('*/', 2) < 0:
- return line_index
- line_index += 1
- return len(lines)
-
-
-def find_next_multi_line_comment_end(lines, line_index):
- """We are inside a comment, find the end marker."""
- while line_index < len(lines):
- if lines[line_index].strip().endswith('*/'):
- return line_index
- line_index += 1
- return len(lines)
-
-
-def remove_multi_line_comments_from_range(lines, begin, end):
- """Clears a range of lines for multi-line comments."""
- # Having // dummy comments makes the lines non-empty, so we will not get
- # unnecessary blank line warnings later in the code.
- for i in range(begin, end):
- lines[i] = '// dummy'
-
-
-def remove_multi_line_comments(lines, error):
- """Removes multiline (c-style) comments from lines."""
- line_index = 0
- while line_index < len(lines):
- line_index_begin = find_next_multi_line_comment_start(lines, line_index)
- if line_index_begin >= len(lines):
- return
- line_index_end = find_next_multi_line_comment_end(lines, line_index_begin)
- if line_index_end >= len(lines):
- error(line_index_begin + 1, 'readability/multiline_comment', 5,
- 'Could not find end of multi-line comment')
- return
- remove_multi_line_comments_from_range(lines, line_index_begin, line_index_end + 1)
- line_index = line_index_end + 1
-
-
-def cleanse_comments(line):
- """Removes //-comments and single-line C-style /* */ comments.
-
- Args:
- line: A line of C++ source.
-
- Returns:
- The line with single-line comments removed.
- """
- comment_position = line.find('//')
- if comment_position != -1 and not is_cpp_string(line[:comment_position]):
- line = line[:comment_position]
- # get rid of /* ... */
- return _RE_PATTERN_CLEANSE_LINE_C_COMMENTS.sub('', line)
-
-
-class CleansedLines(object):
- """Holds 3 copies of all lines with different preprocessing applied to them.
-
- 1) elided member contains lines without strings and comments,
- 2) lines member contains lines without comments, and
- 3) raw member contains all the lines without processing.
- All these three members are of <type 'list'>, and of the same length.
- """
-
- def __init__(self, lines):
- self.elided = []
- self.lines = []
- self.raw_lines = lines
- self._num_lines = len(lines)
- for line_number in range(len(lines)):
- self.lines.append(cleanse_comments(lines[line_number]))
- elided = self.collapse_strings(lines[line_number])
- self.elided.append(cleanse_comments(elided))
-
- def num_lines(self):
- """Returns the number of lines represented."""
- return self._num_lines
-
- @staticmethod
- def collapse_strings(elided):
- """Collapses strings and chars on a line to simple "" or '' blocks.
-
- We nix strings first so we're not fooled by text like '"http://"'
-
- Args:
- elided: The line being processed.
-
- Returns:
- The line with collapsed strings.
- """
- if not _RE_PATTERN_INCLUDE.match(elided):
- # Remove escaped characters first to make quote/single quote collapsing
- # basic. Things that look like escaped characters shouldn't occur
- # outside of strings and chars.
- elided = _RE_PATTERN_CLEANSE_LINE_ESCAPES.sub('', elided)
- elided = _RE_PATTERN_CLEANSE_LINE_SINGLE_QUOTES.sub("''", elided)
- elided = _RE_PATTERN_CLEANSE_LINE_DOUBLE_QUOTES.sub('""', elided)
- return elided
-
-
-def close_expression(elided, position):
- """If input points to ( or { or [, finds the position that closes it.
-
- If elided[position.row][position.column] points to a '(' or '{' or '[',
- finds the line_number/pos that correspond to the closing of the expression.
-
- Args:
- elided: A CleansedLines.elided instance containing the file.
- position: The position of the opening item.
-
- Returns:
- The Position *past* the closing brace, or Position(len(elided), -1)
- if we never find a close. Note we ignore strings and comments when matching.
- """
- line = elided[position.row]
- start_character = line[position.column]
- if start_character == '(':
- enclosing_character_regex = r'[\(\)]'
- elif start_character == '[':
- enclosing_character_regex = r'[\[\]]'
- elif start_character == '{':
- enclosing_character_regex = r'[\{\}]'
- else:
- return Position(len(elided), -1)
-
- current_column = position.column + 1
- line_number = position.row
- net_open = 1
- for line in elided[position.row:]:
- line = line[current_column:]
-
- # Search the current line for opening and closing characters.
- while True:
- next_enclosing_character = search(enclosing_character_regex, line)
- # No more on this line.
- if not next_enclosing_character:
- break
- current_column += next_enclosing_character.end(0)
- line = line[next_enclosing_character.end(0):]
- if next_enclosing_character.group(0) == start_character:
- net_open += 1
- else:
- net_open -= 1
- if not net_open:
- return Position(line_number, current_column)
-
- # Proceed to the next line.
- line_number += 1
- current_column = 0
-
- # The given item was not closed.
- return Position(len(elided), -1)
-
-def check_for_copyright(lines, error):
- """Logs an error if no Copyright message appears at the top of the file."""
-
- # We'll say it should occur by line 10. Don't forget there's a
- # dummy line at the front.
- for line in xrange(1, min(len(lines), 11)):
- if re.search(r'Copyright', lines[line], re.I):
- break
- else: # means no copyright line was found
- error(0, 'legal/copyright', 5,
- 'No copyright message found. '
- 'You should have a line: "Copyright [year] <Copyright Owner>"')
-
-
-def get_header_guard_cpp_variable(filename):
- """Returns the CPP variable that should be used as a header guard.
-
- Args:
- filename: The name of a C++ header file.
-
- Returns:
- The CPP variable that should be used as a header guard in the
- named file.
-
- """
-
- # Restores original filename in case that style checker is invoked from Emacs's
- # flymake.
- filename = re.sub(r'_flymake\.h$', '.h', filename)
-
- standard_name = sub(r'[-.\s]', '_', os.path.basename(filename))
-
- # Files under WTF typically have header guards that start with WTF_.
- if '/wtf/' in filename:
- special_name = "WTF_" + standard_name
- else:
- special_name = standard_name
- return (special_name, standard_name)
-
-
-def check_for_header_guard(filename, lines, error):
- """Checks that the file contains a header guard.
-
- Logs an error if no #ifndef header guard is present. For other
- headers, checks that the full pathname is used.
-
- Args:
- filename: The name of the C++ header file.
- lines: An array of strings, each representing a line of the file.
- error: The function to call with any errors found.
- """
-
- cppvar = get_header_guard_cpp_variable(filename)
-
- ifndef = None
- ifndef_line_number = 0
- define = None
- for line_number, line in enumerate(lines):
- line_split = line.split()
- if len(line_split) >= 2:
- # find the first occurrence of #ifndef and #define, save arg
- if not ifndef and line_split[0] == '#ifndef':
- # set ifndef to the header guard presented on the #ifndef line.
- ifndef = line_split[1]
- ifndef_line_number = line_number
- if not define and line_split[0] == '#define':
- define = line_split[1]
- if define and ifndef:
- break
-
- if not ifndef or not define or ifndef != define:
- error(0, 'build/header_guard', 5,
- 'No #ifndef header guard found, suggested CPP variable is: %s' %
- cppvar[0])
- return
-
- # The guard should be File_h.
- if ifndef not in cppvar:
- error(ifndef_line_number, 'build/header_guard', 5,
- '#ifndef header guard has wrong style, please use: %s' % cppvar[0])
-
-
-def check_for_unicode_replacement_characters(lines, error):
- """Logs an error for each line containing Unicode replacement characters.
-
- These indicate that either the file contained invalid UTF-8 (likely)
- or Unicode replacement characters (which it shouldn't). Note that
- it's possible for this to throw off line numbering if the invalid
- UTF-8 occurred adjacent to a newline.
-
- Args:
- lines: An array of strings, each representing a line of the file.
- error: The function to call with any errors found.
- """
- for line_number, line in enumerate(lines):
- if u'\ufffd' in line:
- error(line_number, 'readability/utf8', 5,
- 'Line contains invalid UTF-8 (or Unicode replacement character).')
-
-
-def check_for_new_line_at_eof(lines, error):
- """Logs an error if there is no newline char at the end of the file.
-
- Args:
- lines: An array of strings, each representing a line of the file.
- error: The function to call with any errors found.
- """
-
- # The array lines() was created by adding two newlines to the
- # original file (go figure), then splitting on \n.
- # To verify that the file ends in \n, we just have to make sure the
- # last-but-two element of lines() exists and is empty.
- if len(lines) < 3 or lines[-2]:
- error(len(lines) - 2, 'whitespace/ending_newline', 5,
- 'Could not find a newline character at the end of the file.')
-
-
-def check_for_multiline_comments_and_strings(clean_lines, line_number, error):
- """Logs an error if we see /* ... */ or "..." that extend past one line.
-
- /* ... */ comments are legit inside macros, for one line.
- Otherwise, we prefer // comments, so it's ok to warn about the
- other. Likewise, it's ok for strings to extend across multiple
- lines, as long as a line continuation character (backslash)
- terminates each line. Although not currently prohibited by the C++
- style guide, it's ugly and unnecessary. We don't do well with either
- in this lint program, so we warn about both.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
- line = clean_lines.elided[line_number]
-
- # Remove all \\ (escaped backslashes) from the line. They are OK, and the
- # second (escaped) slash may trigger later \" detection erroneously.
- line = line.replace('\\\\', '')
-
- if line.count('/*') > line.count('*/'):
- error(line_number, 'readability/multiline_comment', 5,
- 'Complex multi-line /*...*/-style comment found. '
- 'Lint may give bogus warnings. '
- 'Consider replacing these with //-style comments, '
- 'with #if 0...#endif, '
- 'or with more clearly structured multi-line comments.')
-
- if (line.count('"') - line.count('\\"')) % 2:
- error(line_number, 'readability/multiline_string', 5,
- 'Multi-line string ("...") found. This lint script doesn\'t '
- 'do well with such strings, and may give bogus warnings. They\'re '
- 'ugly and unnecessary, and you should use concatenation instead".')
-
-
-_THREADING_LIST = (
- ('asctime(', 'asctime_r('),
- ('ctime(', 'ctime_r('),
- ('getgrgid(', 'getgrgid_r('),
- ('getgrnam(', 'getgrnam_r('),
- ('getlogin(', 'getlogin_r('),
- ('getpwnam(', 'getpwnam_r('),
- ('getpwuid(', 'getpwuid_r('),
- ('gmtime(', 'gmtime_r('),
- ('localtime(', 'localtime_r('),
- ('rand(', 'rand_r('),
- ('readdir(', 'readdir_r('),
- ('strtok(', 'strtok_r('),
- ('ttyname(', 'ttyname_r('),
- )
-
-
-def check_posix_threading(clean_lines, line_number, error):
- """Checks for calls to thread-unsafe functions.
-
- Much code has been originally written without consideration of
- multi-threading. Also, engineers are relying on their old experience;
- they have learned posix before threading extensions were added. These
- tests guide the engineers to use thread-safe functions (when using
- posix directly).
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
- line = clean_lines.elided[line_number]
- for single_thread_function, multithread_safe_function in _THREADING_LIST:
- index = line.find(single_thread_function)
- # Comparisons made explicit for clarity
- if index >= 0 and (index == 0 or (not line[index - 1].isalnum()
- and line[index - 1] not in ('_', '.', '>'))):
- error(line_number, 'runtime/threadsafe_fn', 2,
- 'Consider using ' + multithread_safe_function +
- '...) instead of ' + single_thread_function +
- '...) for improved thread safety.')
-
-
-# Matches invalid increment: *count++, which moves pointer instead of
-# incrementing a value.
-_RE_PATTERN_INVALID_INCREMENT = re.compile(
- r'^\s*\*\w+(\+\+|--);')
-
-
-def check_invalid_increment(clean_lines, line_number, error):
- """Checks for invalid increment *count++.
-
- For example following function:
- void increment_counter(int* count) {
- *count++;
- }
- is invalid, because it effectively does count++, moving pointer, and should
- be replaced with ++*count, (*count)++ or *count += 1.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
- line = clean_lines.elided[line_number]
- if _RE_PATTERN_INVALID_INCREMENT.match(line):
- error(line_number, 'runtime/invalid_increment', 5,
- 'Changing pointer instead of value (or unused value of operator*).')
-
-
-class _ClassInfo(object):
- """Stores information about a class."""
-
- def __init__(self, name, line_number):
- self.name = name
- self.line_number = line_number
- self.seen_open_brace = False
- self.is_derived = False
- self.virtual_method_line_number = None
- self.has_virtual_destructor = False
- self.brace_depth = 0
-
-
-class _ClassState(object):
- """Holds the current state of the parse relating to class declarations.
-
- It maintains a stack of _ClassInfos representing the parser's guess
- as to the current nesting of class declarations. The innermost class
- is at the top (back) of the stack. Typically, the stack will either
- be empty or have exactly one entry.
- """
-
- def __init__(self):
- self.classinfo_stack = []
-
- def check_finished(self, error):
- """Checks that all classes have been completely parsed.
-
- Call this when all lines in a file have been processed.
- Args:
- error: The function to call with any errors found.
- """
- if self.classinfo_stack:
- # Note: This test can result in false positives if #ifdef constructs
- # get in the way of brace matching. See the testBuildClass test in
- # cpp_style_unittest.py for an example of this.
- error(self.classinfo_stack[0].line_number, 'build/class', 5,
- 'Failed to find complete declaration of class %s' %
- self.classinfo_stack[0].name)
-
-
-class _FileState(object):
- def __init__(self, clean_lines, file_extension):
- self._did_inside_namespace_indent_warning = False
- self._clean_lines = clean_lines
- if file_extension in ['m', 'mm']:
- self._is_objective_c = True
- self._is_c = False
- elif file_extension == 'h':
- # In the case of header files, it is unknown if the file
- # is c / objective c or not, so set this value to None and then
- # if it is requested, use heuristics to guess the value.
- self._is_objective_c = None
- self._is_c = None
- elif file_extension == 'c':
- self._is_c = True
- self._is_objective_c = False
- else:
- self._is_objective_c = False
- self._is_c = False
-
- def set_did_inside_namespace_indent_warning(self):
- self._did_inside_namespace_indent_warning = True
-
- def did_inside_namespace_indent_warning(self):
- return self._did_inside_namespace_indent_warning
-
- def is_objective_c(self):
- if self._is_objective_c is None:
- for line in self._clean_lines.elided:
- # Starting with @ or #import seem like the best indications
- # that we have an Objective C file.
- if line.startswith("@") or line.startswith("#import"):
- self._is_objective_c = True
- break
- else:
- self._is_objective_c = False
- return self._is_objective_c
-
- def is_c(self):
- if self._is_c is None:
- for line in self._clean_lines.lines:
- # if extern "C" is found, then it is a good indication
- # that we have a C header file.
- if line.startswith('extern "C"'):
- self._is_c = True
- break
- else:
- self._is_c = False
- return self._is_c
-
- def is_c_or_objective_c(self):
- """Return whether the file extension corresponds to C or Objective-C."""
- return self.is_c() or self.is_objective_c()
-
-
-class _EnumState(object):
- """Maintains whether currently in an enum declaration, and checks whether
- enum declarations follow the style guide.
- """
-
- def __init__(self):
- self.in_enum_decl = False
- self.is_webidl_enum = False
-
- def process_clean_line(self, line):
- # FIXME: The regular expressions for expr_all_uppercase and expr_enum_end only accept integers
- # and identifiers for the value of the enumerator, but do not accept any other constant
- # expressions. However, this is sufficient for now (11/27/2012).
- expr_all_uppercase = r'\s*[A-Z0-9_]+\s*(?:=\s*[a-zA-Z0-9]+\s*)?,?\s*$'
- expr_starts_lowercase = r'\s*[a-z]'
- expr_enum_end = r'}\s*(?:[a-zA-Z0-9]+\s*(?:=\s*[a-zA-Z0-9]+)?)?\s*;\s*'
- expr_enum_start = r'\s*enum(?:\s+[a-zA-Z0-9]+)?\s*\{?\s*'
- if self.in_enum_decl:
- if match(r'\s*' + expr_enum_end + r'$', line):
- self.in_enum_decl = False
- self.is_webidl_enum = False
- elif match(expr_all_uppercase, line):
- return self.is_webidl_enum
- elif match(expr_starts_lowercase, line):
- return False
- else:
- matched = match(expr_enum_start + r'$', line)
- if matched:
- self.in_enum_decl = True
- else:
- matched = match(expr_enum_start + r'(?P<members>.*)' + expr_enum_end + r'$', line)
- if matched:
- members = matched.group('members').split(',')
- found_invalid_member = False
- for member in members:
- if match(expr_all_uppercase, member):
- found_invalid_member = not self.is_webidl_enum
- if match(expr_starts_lowercase, member):
- found_invalid_member = True
- if found_invalid_member:
- self.is_webidl_enum = False
- return False
- return True
- return True
-
-def check_for_non_standard_constructs(clean_lines, line_number,
- class_state, error):
- """Logs an error if we see certain non-ANSI constructs ignored by gcc-2.
-
- Complain about several constructs which gcc-2 accepts, but which are
- not standard C++. Warning about these in lint is one way to ease the
- transition to new compilers.
- - put storage class first (e.g. "static const" instead of "const static").
- - "%lld" instead of %qd" in printf-type functions.
- - "%1$d" is non-standard in printf-type functions.
- - "\%" is an undefined character escape sequence.
- - text after #endif is not allowed.
- - invalid inner-style forward declaration.
- - >? and <? operators, and their >?= and <?= cousins.
- - classes with virtual methods need virtual destructors (compiler warning
- available, but not turned on yet.)
-
- Additionally, check for constructor/destructor style violations as it
- is very convenient to do so while checking for gcc-2 compliance.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- class_state: A _ClassState instance which maintains information about
- the current stack of nested class declarations being parsed.
- error: A callable to which errors are reported, which takes parameters:
- line number, error level, and message
- """
-
- # Remove comments from the line, but leave in strings for now.
- line = clean_lines.lines[line_number]
-
- if search(r'printf\s*\(.*".*%[-+ ]?\d*q', line):
- error(line_number, 'runtime/printf_format', 3,
- '%q in format strings is deprecated. Use %ll instead.')
-
- if search(r'printf\s*\(.*".*%\d+\$', line):
- error(line_number, 'runtime/printf_format', 2,
- '%N$ formats are unconventional. Try rewriting to avoid them.')
-
- # Remove escaped backslashes before looking for undefined escapes.
- line = line.replace('\\\\', '')
-
- if search(r'("|\').*\\(%|\[|\(|{)', line):
- error(line_number, 'build/printf_format', 3,
- '%, [, (, and { are undefined character escapes. Unescape them.')
-
- # For the rest, work with both comments and strings removed.
- line = clean_lines.elided[line_number]
-
- if search(r'\b(const|volatile|void|char|short|int|long'
- r'|float|double|signed|unsigned'
- r'|schar|u?int8|u?int16|u?int32|u?int64)'
- r'\s+(auto|register|static|extern|typedef)\b',
- line):
- error(line_number, 'build/storage_class', 5,
- 'Storage class (static, extern, typedef, etc) should be first.')
-
- if match(r'\s*#\s*endif\s*[^/\s]+', line):
- error(line_number, 'build/endif_comment', 5,
- 'Uncommented text after #endif is non-standard. Use a comment.')
-
- if match(r'\s*class\s+(\w+\s*::\s*)+\w+\s*;', line):
- error(line_number, 'build/forward_decl', 5,
- 'Inner-style forward declarations are invalid. Remove this line.')
-
- if search(r'(\w+|[+-]?\d+(\.\d*)?)\s*(<|>)\?=?\s*(\w+|[+-]?\d+)(\.\d*)?', line):
- error(line_number, 'build/deprecated', 3,
- '>? and <? (max and min) operators are non-standard and deprecated.')
-
- # Track class entry and exit, and attempt to find cases within the
- # class declaration that don't meet the C++ style
- # guidelines. Tracking is very dependent on the code matching Google
- # style guidelines, but it seems to perform well enough in testing
- # to be a worthwhile addition to the checks.
- classinfo_stack = class_state.classinfo_stack
- # Look for a class declaration
- class_decl_match = match(
- r'\s*(template\s*<[\w\s<>,:]*>\s*)?(class|struct)\s+(\w+(::\w+)*)', line)
- if class_decl_match:
- classinfo_stack.append(_ClassInfo(class_decl_match.group(3), line_number))
-
- # Everything else in this function uses the top of the stack if it's
- # not empty.
- if not classinfo_stack:
- return
-
- classinfo = classinfo_stack[-1]
-
- # If the opening brace hasn't been seen look for it and also
- # parent class declarations.
- if not classinfo.seen_open_brace:
- # If the line has a ';' in it, assume it's a forward declaration or
- # a single-line class declaration, which we won't process.
- if line.find(';') != -1:
- classinfo_stack.pop()
- return
- classinfo.seen_open_brace = (line.find('{') != -1)
- # Look for a bare ':'
- if search('(^|[^:]):($|[^:])', line):
- classinfo.is_derived = True
- if not classinfo.seen_open_brace:
- return # Everything else in this function is for after open brace
-
- # The class may have been declared with namespace or classname qualifiers.
- # The constructor and destructor will not have those qualifiers.
- base_classname = classinfo.name.split('::')[-1]
-
- # Look for single-argument constructors that aren't marked explicit.
- # Technically a valid construct, but against style.
- args = match(r'(?<!explicit)\s+%s\s*\(([^,()]+)\)'
- % re.escape(base_classname),
- line)
- if (args
- and args.group(1) != 'void'
- and not match(r'(const\s+)?%s\s*&' % re.escape(base_classname),
- args.group(1).strip())):
- error(line_number, 'runtime/explicit', 5,
- 'Single-argument constructors should be marked explicit.')
-
- # Look for methods declared virtual.
- if search(r'\bvirtual\b', line):
- classinfo.virtual_method_line_number = line_number
- # Only look for a destructor declaration on the same line. It would
- # be extremely unlikely for the destructor declaration to occupy
- # more than one line.
- if search(r'~%s\s*\(' % base_classname, line):
- classinfo.has_virtual_destructor = True
-
- # Look for class end.
- brace_depth = classinfo.brace_depth
- brace_depth = brace_depth + line.count('{') - line.count('}')
- if brace_depth <= 0:
- classinfo = classinfo_stack.pop()
- # Try to detect missing virtual destructor declarations.
- # For now, only warn if a non-derived class with virtual methods lacks
- # a virtual destructor. This is to make it less likely that people will
- # declare derived virtual destructors without declaring the base
- # destructor virtual.
- if ((classinfo.virtual_method_line_number is not None)
- and (not classinfo.has_virtual_destructor)
- and (not classinfo.is_derived)): # Only warn for base classes
- error(classinfo.line_number, 'runtime/virtual', 4,
- 'The class %s probably needs a virtual destructor due to '
- 'having virtual method(s), one declared at line %d.'
- % (classinfo.name, classinfo.virtual_method_line_number))
- else:
- classinfo.brace_depth = brace_depth
-
-
-def check_spacing_for_function_call(line, line_number, error):
- """Checks for the correctness of various spacing around function calls.
-
- Args:
- line: The text of the line to check.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- # Since function calls often occur inside if/for/foreach/while/switch
- # expressions - which have their own, more liberal conventions - we
- # first see if we should be looking inside such an expression for a
- # function call, to which we can apply more strict standards.
- function_call = line # if there's no control flow construct, look at whole line
- for pattern in (r'\bif\s*\((.*)\)\s*{',
- r'\bfor\s*\((.*)\)\s*{',
- r'\bforeach\s*\((.*)\)\s*{',
- r'\bwhile\s*\((.*)\)\s*[{;]',
- r'\bswitch\s*\((.*)\)\s*{'):
- matched = search(pattern, line)
- if matched:
- function_call = matched.group(1) # look inside the parens for function calls
- break
-
- # Except in if/for/foreach/while/switch, there should never be space
- # immediately inside parens (eg "f( 3, 4 )"). We make an exception
- # for nested parens ( (a+b) + c ). Likewise, there should never be
- # a space before a ( when it's a function argument. I assume it's a
- # function argument when the char before the whitespace is legal in
- # a function name (alnum + _) and we're not starting a macro. Also ignore
- # pointers and references to arrays and functions coz they're too tricky:
- # we use a very simple way to recognize these:
- # " (something)(maybe-something)" or
- # " (something)(maybe-something," or
- # " (something)[something]"
- # Note that we assume the contents of [] to be short enough that
- # they'll never need to wrap.
- if ( # Ignore control structures.
- not search(r'\b(if|for|foreach|while|switch|return|new|delete)\b', function_call)
- # Ignore pointers/references to functions.
- and not search(r' \([^)]+\)\([^)]*(\)|,$)', function_call)
- # Ignore pointers/references to arrays.
- and not search(r' \([^)]+\)\[[^\]]+\]', function_call)):
- if search(r'\w\s*\([ \t](?!\s*\\$)', function_call): # a ( used for a fn call
- error(line_number, 'whitespace/parens', 4,
- 'Extra space after ( in function call')
- elif search(r'\([ \t]+(?!(\s*\\)|\()', function_call):
- error(line_number, 'whitespace/parens', 2,
- 'Extra space after (')
- if (search(r'\w\s+\(', function_call)
- and not match(r'\s*(#|typedef)', function_call)):
- error(line_number, 'whitespace/parens', 4,
- 'Extra space before ( in function call')
- # If the ) is followed only by a newline or a { + newline, assume it's
- # part of a control statement (if/while/etc), and don't complain
- if search(r'[^)\s]\s+\)(?!\s*$|{\s*$)', function_call):
- error(line_number, 'whitespace/parens', 2,
- 'Extra space before )')
-
-
-def is_blank_line(line):
- """Returns true if the given line is blank.
-
- We consider a line to be blank if the line is empty or consists of
- only white spaces.
-
- Args:
- line: A line of a string.
-
- Returns:
- True, if the given line is blank.
- """
- return not line or line.isspace()
-
-
-def detect_functions(clean_lines, line_number, function_state, error):
- """Finds where functions start and end.
-
- Uses a simplistic algorithm assuming other style guidelines
- (especially spacing) are followed.
- Trivial bodies are unchecked, so constructors with huge initializer lists
- may be missed.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- function_state: Current function name and lines in body so far.
- error: The function to call with any errors found.
- """
- # Are we now past the end of a function?
- if function_state.end_position.row + 1 == line_number:
- function_state.end()
-
- # If we're in a function, don't try to detect a new one.
- if function_state.in_a_function:
- return
-
- lines = clean_lines.lines
- line = lines[line_number]
- raw = clean_lines.raw_lines
- raw_line = raw[line_number]
-
- # Lines ending with a \ indicate a macro. Don't try to check them.
- if raw_line.endswith('\\'):
- return
-
- regexp = r'\s*(\w(\w|::|\*|\&|\s|<|>|,|~|(operator\s*(/|-|=|!|\+)+))*)\(' # decls * & space::name( ...
- match_result = match(regexp, line)
- if not match_result:
- return
-
- # If the name is all caps and underscores, figure it's a macro and
- # ignore it, unless it's TEST or TEST_F.
- function_name = match_result.group(1).split()[-1]
- if function_name != 'TEST' and function_name != 'TEST_F' and match(r'[A-Z_]+$', function_name):
- return
-
- joined_line = ''
- for start_line_number in xrange(line_number, clean_lines.num_lines()):
- start_line = clean_lines.elided[start_line_number]
- joined_line += ' ' + start_line.lstrip()
- body_match = search(r'{|;', start_line)
- if body_match:
- body_start_position = Position(start_line_number, body_match.start(0))
-
- # Replace template constructs with _ so that no spaces remain in the function name,
- # while keeping the column numbers of other characters the same as "line".
- line_with_no_templates = iteratively_replace_matches_with_char(r'<[^<>]*>', '_', line)
- match_function = search(r'((\w|:|<|>|,|~|(operator\s*(/|-|=|!|\+)+))*)\(', line_with_no_templates)
- if not match_function:
- return # The '(' must have been inside of a template.
-
- # Use the column numbers from the modified line to find the
- # function name in the original line.
- function = line[match_function.start(1):match_function.end(1)]
- function_name_start_position = Position(line_number, match_function.start(1))
-
- if match(r'TEST', function): # Handle TEST... macros
- parameter_regexp = search(r'(\(.*\))', joined_line)
- if parameter_regexp: # Ignore bad syntax
- function += parameter_regexp.group(1)
- else:
- function += '()'
-
- parameter_start_position = Position(line_number, match_function.end(1))
- parameter_end_position = close_expression(clean_lines.elided, parameter_start_position)
- if parameter_end_position.row == len(clean_lines.elided):
- # No end was found.
- return
-
- if start_line[body_start_position.column] == ';':
- end_position = Position(body_start_position.row, body_start_position.column + 1)
- else:
- end_position = close_expression(clean_lines.elided, body_start_position)
-
- # Check for nonsensical positions. (This happens in test cases which check code snippets.)
- if parameter_end_position > body_start_position:
- return
-
- function_state.begin(function, function_name_start_position, body_start_position, end_position,
- parameter_start_position, parameter_end_position, clean_lines)
- return
-
- # No body for the function (or evidence of a non-function) was found.
- error(line_number, 'readability/fn_size', 5,
- 'Lint failed to find start of function body.')
-
-
-def check_for_function_lengths(clean_lines, line_number, function_state, error):
- """Reports for long function bodies.
-
- For an overview why this is done, see:
- http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Write_Short_Functions
-
- Blank/comment lines are not counted so as to avoid encouraging the removal
- of vertical space and commments just to get through a lint check.
- NOLINT *on the last line of a function* disables this check.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- function_state: Current function name and lines in body so far.
- error: The function to call with any errors found.
- """
- lines = clean_lines.lines
- line = lines[line_number]
- raw = clean_lines.raw_lines
- raw_line = raw[line_number]
-
- if function_state.end_position.row == line_number: # last line
- if not search(r'\bNOLINT\b', raw_line):
- function_state.check(error, line_number)
- elif not match(r'^\s*$', line):
- function_state.count(line_number) # Count non-blank/non-comment lines.
-
-
-def _check_parameter_name_against_text(parameter, text, error):
- """Checks to see if the parameter name is contained within the text.
-
- Return false if the check failed (i.e. an error was produced).
- """
-
- # Treat 'lower with underscores' as a canonical form because it is
- # case insensitive while still retaining word breaks. (This ensures that
- # 'elate' doesn't look like it is duplicating of 'NateLate'.)
- canonical_parameter_name = parameter.lower_with_underscores_name()
-
- # Appends "object" to all text to catch variables that did the same (but only
- # do this when the parameter name is more than a single character to avoid
- # flagging 'b' which may be an ok variable when used in an rgba function).
- if len(canonical_parameter_name) > 1:
- text = sub(r'(\w)\b', r'\1Object', text)
- canonical_text = _convert_to_lower_with_underscores(text)
-
- # Used to detect cases like ec for ExceptionCode.
- acronym = _create_acronym(text).lower()
- if canonical_text.find(canonical_parameter_name) != -1 or acronym.find(canonical_parameter_name) != -1:
- error(parameter.row, 'readability/parameter_name', 5,
- 'The parameter name "%s" adds no information, so it should be removed.' % parameter.name)
- return False
- return True
-
-
-def check_function_definition_and_pass_ptr(type_text, row, location_description, error):
- """Check that function definitions for use Pass*Ptr instead of *Ptr.
-
- Args:
- type_text: A string containing the type. (For return values, it may contain more than the type.)
- row: The row number of the type.
- location_description: Used to indicate where the type is. This is either 'parameter' or 'return'.
- error: The function to call with any errors found.
- """
- match_ref_or_own_ptr = '(?=\W|^)(Ref|Own)Ptr(?=\W)'
- bad_type_usage = search(match_ref_or_own_ptr, type_text)
- if not bad_type_usage or type_text.endswith('&') or type_text.endswith('*'):
- return
- type_name = bad_type_usage.group(0)
- error(row, 'readability/pass_ptr', 5,
- 'The %s type should use Pass%s instead of %s.' % (location_description, type_name, type_name))
-
-
-def check_function_definition(filename, file_extension, clean_lines, line_number, function_state, error):
- """Check that function definitions for style issues.
-
- Specifically, check that parameter names in declarations add information.
-
- Args:
- filename: Filename of the file that is being processed.
- file_extension: The current file extension, without the leading dot.
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- function_state: Current function name and lines in body so far.
- error: The function to call with any errors found.
- """
- if line_number != function_state.body_start_position.row:
- return
-
- modifiers_and_return_type = function_state.modifiers_and_return_type()
- check_function_definition_and_pass_ptr(modifiers_and_return_type, function_state.function_name_start_position.row, 'return', error)
-
- parameter_list = function_state.parameter_list()
- for parameter in parameter_list:
- check_function_definition_and_pass_ptr(parameter.type, parameter.row, 'parameter', error)
-
- # Do checks specific to function declarations and parameter names.
- if not function_state.is_declaration or not parameter.name:
- continue
-
- # Check the parameter name against the function name for single parameter set functions.
- if len(parameter_list) == 1 and match('set[A-Z]', function_state.current_function):
- trimmed_function_name = function_state.current_function[len('set'):]
- if not _check_parameter_name_against_text(parameter, trimmed_function_name, error):
- continue # Since an error was noted for this name, move to the next parameter.
-
- # Check the parameter name against the type.
- if not _check_parameter_name_against_text(parameter, parameter.type, error):
- continue # Since an error was noted for this name, move to the next parameter.
-
-
-def check_pass_ptr_usage(clean_lines, line_number, function_state, error):
- """Check for proper usage of Pass*Ptr.
-
- Currently this is limited to detecting declarations of Pass*Ptr
- variables inside of functions.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- function_state: Current function name and lines in body so far.
- error: The function to call with any errors found.
- """
- if not function_state.in_a_function:
- return
-
- lines = clean_lines.lines
- line = lines[line_number]
- if line_number > function_state.body_start_position.row:
- matched_pass_ptr = match(r'^\s*Pass([A-Z][A-Za-z]*)Ptr<', line)
- if matched_pass_ptr:
- type_name = 'Pass%sPtr' % matched_pass_ptr.group(1)
- error(line_number, 'readability/pass_ptr', 5,
- 'Local variables should never be %s (see '
- 'http://webkit.org/coding/RefPtr.html).' % type_name)
-
-
-def check_for_leaky_patterns(clean_lines, line_number, function_state, error):
- """Check for constructs known to be leak prone.
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- function_state: Current function name and lines in body so far.
- error: The function to call with any errors found.
- """
- lines = clean_lines.lines
- line = lines[line_number]
-
- matched_get_dc = search(r'\b(?P<function_name>GetDC(Ex)?)\s*\(', line)
- if matched_get_dc:
- error(line_number, 'runtime/leaky_pattern', 5,
- 'Use the class HWndDC instead of calling %s to avoid potential '
- 'memory leaks.' % matched_get_dc.group('function_name'))
-
- matched_create_dc = search(r'\b(?P<function_name>Create(Compatible)?DC)\s*\(', line)
- matched_own_dc = search(r'\badoptPtr\b', line)
- if matched_create_dc and not matched_own_dc:
- error(line_number, 'runtime/leaky_pattern', 5,
- 'Use adoptPtr and OwnPtr<HDC> when calling %s to avoid potential '
- 'memory leaks.' % matched_create_dc.group('function_name'))
-
-
-def check_spacing(file_extension, clean_lines, line_number, error):
- """Checks for the correctness of various spacing issues in the code.
-
- Things we check for: spaces around operators, spaces after
- if/for/while/switch, no spaces around parens in function calls, two
- spaces between code and comment, don't start a block with a blank
- line, don't end a function with a blank line, don't have too many
- blank lines in a row.
-
- Args:
- file_extension: The current file extension, without the leading dot.
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- raw = clean_lines.raw_lines
- line = raw[line_number]
-
- # Before nixing comments, check if the line is blank for no good
- # reason. This includes the first line after a block is opened, and
- # blank lines at the end of a function (ie, right before a line like '}').
- if is_blank_line(line):
- elided = clean_lines.elided
- previous_line = elided[line_number - 1]
- previous_brace = previous_line.rfind('{')
- # FIXME: Don't complain if line before blank line, and line after,
- # both start with alnums and are indented the same amount.
- # This ignores whitespace at the start of a namespace block
- # because those are not usually indented.
- if (previous_brace != -1 and previous_line[previous_brace:].find('}') == -1
- and previous_line[:previous_brace].find('namespace') == -1):
- # OK, we have a blank line at the start of a code block. Before we
- # complain, we check if it is an exception to the rule: The previous
- # non-empty line has the parameters of a function header that are indented
- # 4 spaces (because they did not fit in a 80 column line when placed on
- # the same line as the function name). We also check for the case where
- # the previous line is indented 6 spaces, which may happen when the
- # initializers of a constructor do not fit into a 80 column line.
- exception = False
- if match(r' {6}\w', previous_line): # Initializer list?
- # We are looking for the opening column of initializer list, which
- # should be indented 4 spaces to cause 6 space indentation afterwards.
- search_position = line_number - 2
- while (search_position >= 0
- and match(r' {6}\w', elided[search_position])):
- search_position -= 1
- exception = (search_position >= 0
- and elided[search_position][:5] == ' :')
- else:
- # Search for the function arguments or an initializer list. We use a
- # simple heuristic here: If the line is indented 4 spaces; and we have a
- # closing paren, without the opening paren, followed by an opening brace
- # or colon (for initializer lists) we assume that it is the last line of
- # a function header. If we have a colon indented 4 spaces, it is an
- # initializer list.
- exception = (match(r' {4}\w[^\(]*\)\s*(const\s*)?(\{\s*$|:)',
- previous_line)
- or match(r' {4}:', previous_line))
-
- if not exception:
- error(line_number, 'whitespace/blank_line', 2,
- 'Blank line at the start of a code block. Is this needed?')
- # This doesn't ignore whitespace at the end of a namespace block
- # because that is too hard without pairing open/close braces;
- # however, a special exception is made for namespace closing
- # brackets which have a comment containing "namespace".
- #
- # Also, ignore blank lines at the end of a block in a long if-else
- # chain, like this:
- # if (condition1) {
- # // Something followed by a blank line
- #
- # } else if (condition2) {
- # // Something else
- # }
- if line_number + 1 < clean_lines.num_lines():
- next_line = raw[line_number + 1]
- if (next_line
- and match(r'\s*}', next_line)
- and next_line.find('namespace') == -1
- and next_line.find('} else ') == -1):
- error(line_number, 'whitespace/blank_line', 3,
- 'Blank line at the end of a code block. Is this needed?')
-
- # Next, we check for proper spacing with respect to comments.
- comment_position = line.find('//')
- if comment_position != -1:
- # Check if the // may be in quotes. If so, ignore it
- # Comparisons made explicit for clarity
- if (line.count('"', 0, comment_position) - line.count('\\"', 0, comment_position)) % 2 == 0: # not in quotes
- # Allow one space before end of line comment.
- if (not match(r'^\s*$', line[:comment_position])
- and (comment_position >= 1
- and ((line[comment_position - 1] not in string.whitespace)
- or (comment_position >= 2
- and line[comment_position - 2] in string.whitespace)))):
- error(line_number, 'whitespace/comments', 5,
- 'One space before end of line comments')
- # There should always be a space between the // and the comment
- commentend = comment_position + 2
- if commentend < len(line) and not line[commentend] == ' ':
- # but some lines are exceptions -- e.g. if they're big
- # comment delimiters like:
- # //----------------------------------------------------------
- # or they begin with multiple slashes followed by a space:
- # //////// Header comment
- matched = (search(r'[=/-]{4,}\s*$', line[commentend:])
- or search(r'^/+ ', line[commentend:]))
- if not matched:
- error(line_number, 'whitespace/comments', 4,
- 'Should have a space between // and comment')
-
- # There should only be one space after punctuation in a comment.
- if search(r'[.!?,;:]\s\s+\w', line[comment_position:]):
- error(line_number, 'whitespace/comments', 5,
- 'Should have only a single space after a punctuation in a comment.')
-
- line = clean_lines.elided[line_number] # get rid of comments and strings
-
- # Don't try to do spacing checks for operator methods
- line = sub(r'operator(==|!=|<|<<|<=|>=|>>|>|\+=|-=|\*=|/=|%=|&=|\|=|^=|<<=|>>=|/)\(', 'operator\(', line)
- # Don't try to do spacing checks for #include or #import statements at
- # minimum because it messes up checks for spacing around /
- if match(r'\s*#\s*(?:include|import)', line):
- return
- if search(r'[\w.]=[\w.]', line):
- error(line_number, 'whitespace/operators', 4,
- 'Missing spaces around =')
-
- # FIXME: It's not ok to have spaces around binary operators like .
-
- # You should always have whitespace around binary operators.
- # Alas, we can't test < or > because they're legitimately used sans spaces
- # (a->b, vector<int> a). The only time we can tell is a < with no >, and
- # only if it's not template params list spilling into the next line.
- matched = search(r'[^<>=!\s](==|!=|\+=|-=|\*=|/=|/|\|=|&=|<<=|>>=|<=|>=|\|\||\||&&|>>|<<)[^<>=!\s]', line)
- if not matched:
- # Note that while it seems that the '<[^<]*' term in the following
- # regexp could be simplified to '<.*', which would indeed match
- # the same class of strings, the [^<] means that searching for the
- # regexp takes linear rather than quadratic time.
- if not search(r'<[^<]*,\s*$', line): # template params spill
- matched = search(r'[^<>=!\s](<)[^<>=!\s]([^>]|->)*$', line)
- if matched:
- error(line_number, 'whitespace/operators', 3,
- 'Missing spaces around %s' % matched.group(1))
-
- # There shouldn't be space around unary operators
- matched = search(r'(!\s|~\s|[\s]--[\s;]|[\s]\+\+[\s;])', line)
- if matched:
- error(line_number, 'whitespace/operators', 4,
- 'Extra space for operator %s' % matched.group(1))
-
- # A pet peeve of mine: no spaces after an if, while, switch, or for
- matched = search(r' (if\(|for\(|foreach\(|while\(|switch\()', line)
- if matched:
- error(line_number, 'whitespace/parens', 5,
- 'Missing space before ( in %s' % matched.group(1))
-
- # For if/for/foreach/while/switch, the left and right parens should be
- # consistent about how many spaces are inside the parens, and
- # there should either be zero or one spaces inside the parens.
- # We don't want: "if ( foo)" or "if ( foo )".
- # Exception: "for ( ; foo; bar)" and "for (foo; bar; )" are allowed.
- matched = search(r'\b(?P<statement>if|for|foreach|while|switch)\s*\((?P<remainder>.*)$', line)
- if matched:
- statement = matched.group('statement')
- condition, rest = up_to_unmatched_closing_paren(matched.group('remainder'))
- if condition is not None:
- condition_match = search(r'(?P<leading>[ ]*)(?P<separator>.).*[^ ]+(?P<trailing>[ ]*)', condition)
- if condition_match:
- n_leading = len(condition_match.group('leading'))
- n_trailing = len(condition_match.group('trailing'))
- if n_leading != 0:
- for_exception = statement == 'for' and condition.startswith(' ;')
- if not for_exception:
- error(line_number, 'whitespace/parens', 5,
- 'Extra space after ( in %s' % statement)
- if n_trailing != 0:
- for_exception = statement == 'for' and condition.endswith('; ')
- if not for_exception:
- error(line_number, 'whitespace/parens', 5,
- 'Extra space before ) in %s' % statement)
-
- # Do not check for more than one command in macros
- in_preprocessor_directive = match(r'\s*#', line)
- if not in_preprocessor_directive and not match(r'((\s*{\s*}?)|(\s*;?))\s*\\?$', rest):
- error(line_number, 'whitespace/parens', 4,
- 'More than one command on the same line in %s' % statement)
-
- # You should always have a space after a comma (either as fn arg or operator)
- if search(r',[^\s]', line):
- error(line_number, 'whitespace/comma', 3,
- 'Missing space after ,')
-
- matched = search(r'^\s*(?P<token1>[a-zA-Z0-9_\*&]+)\s\s+(?P<token2>[a-zA-Z0-9_\*&]+)', line)
- if matched:
- error(line_number, 'whitespace/declaration', 3,
- 'Extra space between %s and %s' % (matched.group('token1'), matched.group('token2')))
-
- if file_extension == 'cpp':
- # C++ should have the & or * beside the type not the variable name.
- matched = match(r'\s*\w+(?<!\breturn|\bdelete)\s+(?P<pointer_operator>\*|\&)\w+', line)
- if matched:
- error(line_number, 'whitespace/declaration', 3,
- 'Declaration has space between type name and %s in %s' % (matched.group('pointer_operator'), matched.group(0).strip()))
-
- elif file_extension == 'c':
- # C Pointer declaration should have the * beside the variable not the type name.
- matched = search(r'^\s*\w+\*\s+\w+', line)
- if matched:
- error(line_number, 'whitespace/declaration', 3,
- 'Declaration has space between * and variable name in %s' % matched.group(0).strip())
-
- # Next we will look for issues with function calls.
- check_spacing_for_function_call(line, line_number, error)
-
- # Except after an opening paren, you should have spaces before your braces.
- # And since you should never have braces at the beginning of a line, this is
- # an easy test.
- if search(r'[^ ({]{', line):
- error(line_number, 'whitespace/braces', 5,
- 'Missing space before {')
-
- # Make sure '} else {' has spaces.
- if search(r'}else', line):
- error(line_number, 'whitespace/braces', 5,
- 'Missing space before else')
-
- # You shouldn't have spaces before your brackets, except maybe after
- # 'delete []' or 'new char * []'.
- if search(r'\w\s+\[', line) and not search(r'delete\s+\[', line):
- error(line_number, 'whitespace/braces', 5,
- 'Extra space before [')
-
- # There should always be a single space in between braces on the same line.
- if search(r'\{\}', line):
- error(line_number, 'whitespace/braces', 5, 'Missing space inside { }.')
- if search(r'\{\s\s+\}', line):
- error(line_number, 'whitespace/braces', 5, 'Too many spaces inside { }.')
-
- # You shouldn't have a space before a semicolon at the end of the line.
- # There's a special case for "for" since the style guide allows space before
- # the semicolon there.
- if search(r':\s*;\s*$', line):
- error(line_number, 'whitespace/semicolon', 5,
- 'Semicolon defining empty statement. Use { } instead.')
- elif search(r'^\s*;\s*$', line):
- error(line_number, 'whitespace/semicolon', 5,
- 'Line contains only semicolon. If this should be an empty statement, '
- 'use { } instead.')
- elif (search(r'\s+;\s*$', line) and not search(r'\bfor\b', line)):
- error(line_number, 'whitespace/semicolon', 5,
- 'Extra space before last semicolon. If this should be an empty '
- 'statement, use { } instead.')
- elif (search(r'\b(for|while)\s*\(.*\)\s*;\s*$', line)
- and line.count('(') == line.count(')')
- # Allow do {} while();
- and not search(r'}\s*while', line)):
- error(line_number, 'whitespace/semicolon', 5,
- 'Semicolon defining empty statement for this loop. Use { } instead.')
-
-
-def get_previous_non_blank_line(clean_lines, line_number):
- """Return the most recent non-blank line and its line number.
-
- Args:
- clean_lines: A CleansedLines instance containing the file contents.
- line_number: The number of the line to check.
-
- Returns:
- A tuple with two elements. The first element is the contents of the last
- non-blank line before the current line, or the empty string if this is the
- first non-blank line. The second is the line number of that line, or -1
- if this is the first non-blank line.
- """
-
- previous_line_number = line_number - 1
- while previous_line_number >= 0:
- previous_line = clean_lines.elided[previous_line_number]
- if not is_blank_line(previous_line): # if not a blank line...
- return (previous_line, previous_line_number)
- previous_line_number -= 1
- return ('', -1)
-
-
-def check_namespace_indentation(clean_lines, line_number, file_extension, file_state, error):
- """Looks for indentation errors inside of namespaces.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_extension: The extension (dot not included) of the file.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- namespace_match = match(r'(?P<namespace_indentation>\s*)namespace\s+\S+\s*{\s*$', line)
- if not namespace_match:
- return
-
- current_indentation_level = len(namespace_match.group('namespace_indentation'))
- if current_indentation_level > 0:
- # Don't warn about an indented namespace if we already warned about indented code.
- if not file_state.did_inside_namespace_indent_warning():
- error(line_number, 'whitespace/indent', 4,
- 'namespace should never be indented.')
- return
- looking_for_semicolon = False;
- line_offset = 0
- in_preprocessor_directive = False;
- for current_line in clean_lines.elided[line_number + 1:]:
- line_offset += 1
- if not current_line.strip():
- continue
- if not current_indentation_level:
- if not (in_preprocessor_directive or looking_for_semicolon):
- if not match(r'\S', current_line) and not file_state.did_inside_namespace_indent_warning():
- file_state.set_did_inside_namespace_indent_warning()
- error(line_number + line_offset, 'whitespace/indent', 4,
- 'Code inside a namespace should not be indented.')
- if in_preprocessor_directive or (current_line.strip()[0] == '#'): # This takes care of preprocessor directive syntax.
- in_preprocessor_directive = current_line[-1] == '\\'
- else:
- looking_for_semicolon = ((current_line.find(';') == -1) and (current_line.strip()[-1] != '}')) or (current_line[-1] == '\\')
- else:
- looking_for_semicolon = False; # If we have a brace we may not need a semicolon.
- current_indentation_level += current_line.count('{') - current_line.count('}')
- if current_indentation_level < 0:
- break;
-
-
-def check_enum_casing(clean_lines, line_number, enum_state, error):
- """Looks for incorrectly named enum values.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- enum_state: A _EnumState instance which maintains enum declaration state.
- error: The function to call with any errors found.
- """
-
- enum_state.is_webidl_enum |= bool(match(r'\s*// Web(?:Kit)?IDL enum\s*$', clean_lines.raw_lines[line_number]))
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
- if not enum_state.process_clean_line(line):
- error(line_number, 'readability/enum_casing', 4,
- 'enum members should use InterCaps with an initial capital letter.')
-
-def check_directive_indentation(clean_lines, line_number, file_state, error):
- """Looks for indentation of preprocessor directives.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- indented_preprocessor_directives = match(r'\s+#', line)
- if not indented_preprocessor_directives:
- return
-
- error(line_number, 'whitespace/indent', 4, 'preprocessor directives (e.g., #ifdef, #define, #import) should never be indented.')
-
-
-def get_initial_spaces_for_line(clean_line):
- initial_spaces = 0
- while initial_spaces < len(clean_line) and clean_line[initial_spaces] == ' ':
- initial_spaces += 1
- return initial_spaces
-
-
-def check_indentation_amount(clean_lines, line_number, error):
- line = clean_lines.elided[line_number]
- initial_spaces = get_initial_spaces_for_line(line)
-
- if initial_spaces % 4:
- error(line_number, 'whitespace/indent', 3,
- 'Weird number of spaces at line-start. Are you using a 4-space indent?')
- return
-
- previous_line = get_previous_non_blank_line(clean_lines, line_number)[0]
- if not previous_line.strip() or match(r'\s*\w+\s*:\s*$', previous_line) or previous_line[0] == '#':
- return
-
- previous_line_initial_spaces = get_initial_spaces_for_line(previous_line)
- if initial_spaces > previous_line_initial_spaces + 4:
- error(line_number, 'whitespace/indent', 3, 'When wrapping a line, only indent 4 spaces.')
-
-
-def check_using_std(clean_lines, line_number, file_state, error):
- """Looks for 'using std::foo;' statements which should be replaced with 'using namespace std;'.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
-
- # This check doesn't apply to C or Objective-C implementation files.
- if file_state.is_c_or_objective_c():
- return
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- using_std_match = match(r'\s*using\s+std::(?P<method_name>\S+)\s*;\s*$', line)
- if not using_std_match:
- return
-
- method_name = using_std_match.group('method_name')
- error(line_number, 'build/using_std', 4,
- "Use 'using namespace std;' instead of 'using std::%s;'." % method_name)
-
-
-def check_using_namespace(clean_lines, line_number, file_extension, error):
- """Looks for 'using namespace foo;' which should be removed.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_extension: The extension (dot not included) of the file.
- error: The function to call with any errors found.
- """
-
- # This check applies only to headers.
- if file_extension != 'h':
- return
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- using_namespace_match = match(r'\s*using\s+namespace\s+(?P<method_name>\S+)\s*;\s*$', line)
- if not using_namespace_match:
- return
-
- method_name = using_namespace_match.group('method_name')
- error(line_number, 'build/using_namespace', 4,
- "Do not use 'using namespace %s;'." % method_name)
-
-def check_max_min_macros(clean_lines, line_number, file_state, error):
- """Looks use of MAX() and MIN() macros that should be replaced with std::max() and std::min().
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
-
- # This check doesn't apply to C or Objective-C implementation files.
- if file_state.is_c_or_objective_c():
- return
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- max_min_macros_search = search(r'\b(?P<max_min_macro>(MAX|MIN))\s*\(', line)
- if not max_min_macros_search:
- return
-
- max_min_macro = max_min_macros_search.group('max_min_macro')
- max_min_macro_lower = max_min_macro.lower()
- error(line_number, 'runtime/max_min_macros', 4,
- 'Use std::%s() or std::%s<type>() instead of the %s() macro.'
- % (max_min_macro_lower, max_min_macro_lower, max_min_macro))
-
-
-def check_ctype_functions(clean_lines, line_number, file_state, error):
- """Looks for use of the standard functions in ctype.h and suggest they be replaced
- by use of equivilent ones in <wtf/ASCIICType.h>?.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- ctype_function_search = search(r'\b(?P<ctype_function>(isalnum|isalpha|isascii|isblank|iscntrl|isdigit|isgraph|islower|isprint|ispunct|isspace|isupper|isxdigit|toascii|tolower|toupper))\s*\(', line)
- if not ctype_function_search:
- return
-
- ctype_function = ctype_function_search.group('ctype_function')
- error(line_number, 'runtime/ctype_function', 4,
- 'Use equivelent function in <wtf/ASCIICType.h> instead of the %s() function.'
- % (ctype_function))
-
-def check_switch_indentation(clean_lines, line_number, error):
- """Looks for indentation errors inside of switch statements.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- switch_match = match(r'(?P<switch_indentation>\s*)switch\s*\(.+\)\s*{\s*$', line)
- if not switch_match:
- return
-
- switch_indentation = switch_match.group('switch_indentation')
- inner_indentation = switch_indentation + ' ' * 4
- line_offset = 0
- encountered_nested_switch = False
-
- for current_line in clean_lines.elided[line_number + 1:]:
- line_offset += 1
-
- # Skip not only empty lines but also those with preprocessor directives.
- if current_line.strip() == '' or current_line.startswith('#'):
- continue
-
- if match(r'\s*switch\s*\(.+\)\s*{\s*$', current_line):
- # Complexity alarm - another switch statement nested inside the one
- # that we're currently testing. We'll need to track the extent of
- # that inner switch if the upcoming label tests are still supposed
- # to work correctly. Let's not do that; instead, we'll finish
- # checking this line, and then leave it like that. Assuming the
- # indentation is done consistently (even if incorrectly), this will
- # still catch all indentation issues in practice.
- encountered_nested_switch = True
-
- current_indentation_match = match(r'(?P<indentation>\s*)(?P<remaining_line>.*)$', current_line);
- current_indentation = current_indentation_match.group('indentation')
- remaining_line = current_indentation_match.group('remaining_line')
-
- # End the check at the end of the switch statement.
- if remaining_line.startswith('}') and current_indentation == switch_indentation:
- break
- # Case and default branches should not be indented. The regexp also
- # catches single-line cases like "default: break;" but does not trigger
- # on stuff like "Document::Foo();".
- elif match(r'(default|case\s+.*)\s*:([^:].*)?$', remaining_line):
- if current_indentation != switch_indentation:
- error(line_number + line_offset, 'whitespace/indent', 4,
- 'A case label should not be indented, but line up with its switch statement.')
- # Don't throw an error for multiple badly indented labels,
- # one should be enough to figure out the problem.
- break
- # We ignore goto labels at the very beginning of a line.
- elif match(r'\w+\s*:\s*$', remaining_line):
- continue
- # It's not a goto label, so check if it's indented at least as far as
- # the switch statement plus one more level of indentation.
- elif not current_indentation.startswith(inner_indentation):
- error(line_number + line_offset, 'whitespace/indent', 4,
- 'Non-label code inside switch statements should be indented.')
- # Don't throw an error for multiple badly indented statements,
- # one should be enough to figure out the problem.
- break
-
- if encountered_nested_switch:
- break
-
-
-def check_braces(clean_lines, line_number, error):
- """Looks for misplaced braces (e.g. at the end of line).
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- if match(r'\s*{\s*$', line):
- # We allow an open brace to start a line in the case where someone
- # is using braces for function definition or in a block to
- # explicitly create a new scope, which is commonly used to control
- # the lifetime of stack-allocated variables. We don't detect this
- # perfectly: we just don't complain if the last non-whitespace
- # character on the previous non-blank line is ';', ':', '{', '}',
- # ')', or ') const' and doesn't begin with 'if|for|while|switch|else'.
- # We also allow '#' for #endif and '=' for array initialization.
- previous_line = get_previous_non_blank_line(clean_lines, line_number)[0]
- if ((not search(r'[;:}{)=]\s*$|\)\s*((const|OVERRIDE)\s*)*\s*$', previous_line)
- or search(r'\b(if|for|foreach|while|switch|else)\b', previous_line))
- and previous_line.find('#') < 0):
- error(line_number, 'whitespace/braces', 4,
- 'This { should be at the end of the previous line')
- elif (search(r'\)\s*(((const|OVERRIDE)\s*)*\s*)?{\s*$', line)
- and line.count('(') == line.count(')')
- and not search(r'\b(if|for|foreach|while|switch)\b', line)
- and not match(r'\s+[A-Z_][A-Z_0-9]+\b', line)):
- error(line_number, 'whitespace/braces', 4,
- 'Place brace on its own line for function definitions.')
-
- if (match(r'\s*}\s*(else\s*({\s*)?)?$', line) and line_number > 1):
- # We check if a closed brace has started a line to see if a
- # one line control statement was previous.
- previous_line = clean_lines.elided[line_number - 2]
- last_open_brace = previous_line.rfind('{')
- if (last_open_brace != -1 and previous_line.find('}', last_open_brace) == -1
- and search(r'\b(if|for|foreach|while|else)\b', previous_line)):
- error(line_number, 'whitespace/braces', 4,
- 'One line control clauses should not use braces.')
-
- # An else clause should be on the same line as the preceding closing brace.
- if match(r'\s*else\s*', line):
- previous_line = get_previous_non_blank_line(clean_lines, line_number)[0]
- if match(r'\s*}\s*$', previous_line):
- error(line_number, 'whitespace/newline', 4,
- 'An else should appear on the same line as the preceding }')
-
- # Likewise, an else should never have the else clause on the same line
- if search(r'\belse [^\s{]', line) and not search(r'\belse if\b', line):
- error(line_number, 'whitespace/newline', 4,
- 'Else clause should never be on same line as else (use 2 lines)')
-
- # In the same way, a do/while should never be on one line
- if match(r'\s*do [^\s{]', line):
- error(line_number, 'whitespace/newline', 4,
- 'do/while clauses should not be on a single line')
-
- # Braces shouldn't be followed by a ; unless they're defining a struct
- # or initializing an array.
- # We can't tell in general, but we can for some common cases.
- previous_line_number = line_number
- while True:
- (previous_line, previous_line_number) = get_previous_non_blank_line(clean_lines, previous_line_number)
- if match(r'\s+{.*}\s*;', line) and not previous_line.count(';'):
- line = previous_line + line
- else:
- break
- if (search(r'{.*}\s*;', line)
- and line.count('{') == line.count('}')
- and not search(r'struct|class|enum|\s*=\s*{', line)):
- error(line_number, 'readability/braces', 4,
- "You don't need a ; after a }")
-
-
-def check_exit_statement_simplifications(clean_lines, line_number, error):
- """Looks for else or else-if statements that should be written as an
- if statement when the prior if concludes with a return, break, continue or
- goto statement.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- line = clean_lines.elided[line_number] # Get rid of comments and strings.
-
- else_match = match(r'(?P<else_indentation>\s*)(\}\s*)?else(\s+if\s*\(|(?P<else>\s*(\{\s*)?\Z))', line)
- if not else_match:
- return
-
- else_indentation = else_match.group('else_indentation')
- inner_indentation = else_indentation + ' ' * 4
-
- previous_lines = clean_lines.elided[:line_number]
- previous_lines.reverse()
- line_offset = 0
- encountered_exit_statement = False
-
- for current_line in previous_lines:
- line_offset -= 1
-
- # Skip not only empty lines but also those with preprocessor directives
- # and goto labels.
- if current_line.strip() == '' or current_line.startswith('#') or match(r'\w+\s*:\s*$', current_line):
- continue
-
- # Skip lines with closing braces on the original indentation level.
- # Even though the styleguide says they should be on the same line as
- # the "else if" statement, we also want to check for instances where
- # the current code does not comply with the coding style. Thus, ignore
- # these lines and proceed to the line before that.
- if current_line == else_indentation + '}':
- continue
-
- current_indentation_match = match(r'(?P<indentation>\s*)(?P<remaining_line>.*)$', current_line);
- current_indentation = current_indentation_match.group('indentation')
- remaining_line = current_indentation_match.group('remaining_line')
-
- # As we're going up the lines, the first real statement to encounter
- # has to be an exit statement (return, break, continue or goto) -
- # otherwise, this check doesn't apply.
- if not encountered_exit_statement:
- # We only want to find exit statements if they are on exactly
- # the same level of indentation as expected from the code inside
- # the block. If the indentation doesn't strictly match then we
- # might have a nested if or something, which must be ignored.
- if current_indentation != inner_indentation:
- break
- if match(r'(return(\W+.*)|(break|continue)\s*;|goto\s*\w+;)$', remaining_line):
- encountered_exit_statement = True
- continue
- break
-
- # When code execution reaches this point, we've found an exit statement
- # as last statement of the previous block. Now we only need to make
- # sure that the block belongs to an "if", then we can throw an error.
-
- # Skip lines with opening braces on the original indentation level,
- # similar to the closing braces check above. ("if (condition)\n{")
- if current_line == else_indentation + '{':
- continue
-
- # Skip everything that's further indented than our "else" or "else if".
- if current_indentation.startswith(else_indentation) and current_indentation != else_indentation:
- continue
-
- # So we've got a line with same (or less) indentation. Is it an "if"?
- # If yes: throw an error. If no: don't throw an error.
- # Whatever the outcome, this is the end of our loop.
- if match(r'if\s*\(', remaining_line):
- if else_match.start('else') != -1:
- error(line_number + line_offset, 'readability/control_flow', 4,
- 'An else statement can be removed when the prior "if" '
- 'concludes with a return, break, continue or goto statement.')
- else:
- error(line_number + line_offset, 'readability/control_flow', 4,
- 'An else if statement should be written as an if statement '
- 'when the prior "if" concludes with a return, break, '
- 'continue or goto statement.')
- break
-
-
-def replaceable_check(operator, macro, line):
- """Determine whether a basic CHECK can be replaced with a more specific one.
-
- For example suggest using CHECK_EQ instead of CHECK(a == b) and
- similarly for CHECK_GE, CHECK_GT, CHECK_LE, CHECK_LT, CHECK_NE.
-
- Args:
- operator: The C++ operator used in the CHECK.
- macro: The CHECK or EXPECT macro being called.
- line: The current source line.
-
- Returns:
- True if the CHECK can be replaced with a more specific one.
- """
-
- # This matches decimal and hex integers, strings, and chars (in that order).
- match_constant = r'([-+]?(\d+|0[xX][0-9a-fA-F]+)[lLuU]{0,3}|".*"|\'.*\')'
-
- # Expression to match two sides of the operator with something that
- # looks like a literal, since CHECK(x == iterator) won't compile.
- # This means we can't catch all the cases where a more specific
- # CHECK is possible, but it's less annoying than dealing with
- # extraneous warnings.
- match_this = (r'\s*' + macro + r'\((\s*' +
- match_constant + r'\s*' + operator + r'[^<>].*|'
- r'.*[^<>]' + operator + r'\s*' + match_constant +
- r'\s*\))')
-
- # Don't complain about CHECK(x == NULL) or similar because
- # CHECK_EQ(x, NULL) won't compile (requires a cast).
- # Also, don't complain about more complex boolean expressions
- # involving && or || such as CHECK(a == b || c == d).
- return match(match_this, line) and not search(r'NULL|&&|\|\|', line)
-
-
-def check_check(clean_lines, line_number, error):
- """Checks the use of CHECK and EXPECT macros.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- error: The function to call with any errors found.
- """
-
- # Decide the set of replacement macros that should be suggested
- raw_lines = clean_lines.raw_lines
- current_macro = ''
- for macro in _CHECK_MACROS:
- if raw_lines[line_number].find(macro) >= 0:
- current_macro = macro
- break
- if not current_macro:
- # Don't waste time here if line doesn't contain 'CHECK' or 'EXPECT'
- return
-
- line = clean_lines.elided[line_number] # get rid of comments and strings
-
- # Encourage replacing plain CHECKs with CHECK_EQ/CHECK_NE/etc.
- for operator in ['==', '!=', '>=', '>', '<=', '<']:
- if replaceable_check(operator, current_macro, line):
- error(line_number, 'readability/check', 2,
- 'Consider using %s instead of %s(a %s b)' % (
- _CHECK_REPLACEMENT[current_macro][operator],
- current_macro, operator))
- break
-
-
-def check_for_comparisons_to_zero(clean_lines, line_number, error):
- # Get the line without comments and strings.
- line = clean_lines.elided[line_number]
-
- # Include NULL here so that users don't have to convert NULL to 0 first and then get this error.
- if search(r'[=!]=\s*(NULL|0|true|false)[^\w.]', line) or search(r'[^\w.](NULL|0|true|false)\s*[=!]=', line):
- if not search('LIKELY', line) and not search('UNLIKELY', line):
- error(line_number, 'readability/comparison_to_zero', 5,
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.')
-
-
-def check_for_null(clean_lines, line_number, file_state, error):
- # This check doesn't apply to C or Objective-C implementation files.
- if file_state.is_c_or_objective_c():
- return
-
- line = clean_lines.elided[line_number]
-
- # Don't warn about NULL usage in g_*(). See Bug 32858 and 39372.
- if search(r'\bg(_[a-z]+)+\b', line):
- return
-
- # Don't warn about NULL usage in gst_*(). See Bug 70498.
- if search(r'\bgst(_[a-z]+)+\b', line):
- return
-
- # Don't warn about NULL usage in gdk_pixbuf_save_to_*{join,concat}(). See Bug 43090.
- if search(r'\bgdk_pixbuf_save_to\w+\b', line):
- return
-
- # Don't warn about NULL usage in gtk_widget_style_get(), gtk_style_context_get_style(), or gtk_style_context_get(). See Bug 51758
- if search(r'\bgtk_widget_style_get\(\w+\b', line) or search(r'\bgtk_style_context_get_style\(\w+\b', line) or search(r'\bgtk_style_context_get\(\w+\b', line):
- return
-
- # Don't warn about NULL usage in soup_server_new(). See Bug 77890.
- if search(r'\bsoup_server_new\(\w+\b', line):
- return
-
- if search(r'\bNULL\b', line):
- error(line_number, 'readability/null', 5, 'Use 0 instead of NULL.')
- return
-
- line = clean_lines.raw_lines[line_number]
- # See if NULL occurs in any comments in the line. If the search for NULL using the raw line
- # matches, then do the check with strings collapsed to avoid giving errors for
- # NULLs occurring in strings.
- if search(r'\bNULL\b', line) and search(r'\bNULL\b', CleansedLines.collapse_strings(line)):
- error(line_number, 'readability/null', 4, 'Use 0 or null instead of NULL (even in *comments*).')
-
-def get_line_width(line):
- """Determines the width of the line in column positions.
-
- Args:
- line: A string, which may be a Unicode string.
-
- Returns:
- The width of the line in column positions, accounting for Unicode
- combining characters and wide characters.
- """
- if isinstance(line, unicode):
- width = 0
- for c in unicodedata.normalize('NFC', line):
- if unicodedata.east_asian_width(c) in ('W', 'F'):
- width += 2
- elif not unicodedata.combining(c):
- width += 1
- return width
- return len(line)
-
-
-def check_style(clean_lines, line_number, file_extension, class_state, file_state, enum_state, error):
- """Checks rules from the 'C++ style rules' section of cppguide.html.
-
- Most of these rules are hard to test (naming, comment style), but we
- do what we can. In particular we check for 4-space indents, line lengths,
- tab usage, spaces inside code, etc.
-
- Args:
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_extension: The extension (without the dot) of the filename.
- class_state: A _ClassState instance which maintains information about
- the current stack of nested class declarations being parsed.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- enum_state: A _EnumState instance which maintains the current enum state.
- error: The function to call with any errors found.
- """
-
- raw_lines = clean_lines.raw_lines
- line = raw_lines[line_number]
-
- if line.find('\t') != -1:
- error(line_number, 'whitespace/tab', 1,
- 'Tab found; better to use spaces')
-
- cleansed_line = clean_lines.elided[line_number]
- if line and line[-1].isspace():
- error(line_number, 'whitespace/end_of_line', 4,
- 'Line ends in whitespace. Consider deleting these extra spaces.')
-
- if (cleansed_line.count(';') > 1
- # for loops are allowed two ;'s (and may run over two lines).
- and cleansed_line.find('for') == -1
- and (get_previous_non_blank_line(clean_lines, line_number)[0].find('for') == -1
- or get_previous_non_blank_line(clean_lines, line_number)[0].find(';') != -1)
- # It's ok to have many commands in a switch case that fits in 1 line
- and not ((cleansed_line.find('case ') != -1
- or cleansed_line.find('default:') != -1)
- and cleansed_line.find('break;') != -1)
- # Also it's ok to have many commands in trivial single-line accessors in class definitions.
- and not (match(r'.*\(.*\).*{.*.}', line)
- and class_state.classinfo_stack
- and line.count('{') == line.count('}'))
- and not cleansed_line.startswith('#define ')
- # It's ok to use use WTF_MAKE_NONCOPYABLE and WTF_MAKE_FAST_ALLOCATED macros in 1 line
- and not (cleansed_line.find("WTF_MAKE_NONCOPYABLE") != -1
- and cleansed_line.find("WTF_MAKE_FAST_ALLOCATED") != -1)):
- error(line_number, 'whitespace/newline', 4,
- 'More than one command on the same line')
-
- if cleansed_line.strip().endswith('||') or cleansed_line.strip().endswith('&&'):
- error(line_number, 'whitespace/operators', 4,
- 'Boolean expressions that span multiple lines should have their '
- 'operators on the left side of the line instead of the right side.')
-
- # Some more style checks
- check_namespace_indentation(clean_lines, line_number, file_extension, file_state, error)
- check_directive_indentation(clean_lines, line_number, file_state, error)
- check_using_std(clean_lines, line_number, file_state, error)
- check_using_namespace(clean_lines, line_number, file_extension, error)
- check_max_min_macros(clean_lines, line_number, file_state, error)
- check_ctype_functions(clean_lines, line_number, file_state, error)
- check_switch_indentation(clean_lines, line_number, error)
- check_braces(clean_lines, line_number, error)
- check_exit_statement_simplifications(clean_lines, line_number, error)
- check_spacing(file_extension, clean_lines, line_number, error)
- check_check(clean_lines, line_number, error)
- check_for_comparisons_to_zero(clean_lines, line_number, error)
- check_for_null(clean_lines, line_number, file_state, error)
- check_indentation_amount(clean_lines, line_number, error)
- check_enum_casing(clean_lines, line_number, enum_state, error)
-
-
-_RE_PATTERN_INCLUDE_NEW_STYLE = re.compile(r'#include +"[^/]+\.h"')
-_RE_PATTERN_INCLUDE = re.compile(r'^\s*#\s*include\s*([<"])([^>"]*)[>"].*$')
-# Matches the first component of a filename delimited by -s and _s. That is:
-# _RE_FIRST_COMPONENT.match('foo').group(0) == 'foo'
-# _RE_FIRST_COMPONENT.match('foo.cpp').group(0) == 'foo'
-# _RE_FIRST_COMPONENT.match('foo-bar_baz.cpp').group(0) == 'foo'
-# _RE_FIRST_COMPONENT.match('foo_bar-baz.cpp').group(0) == 'foo'
-_RE_FIRST_COMPONENT = re.compile(r'^[^-_.]+')
-
-
-def _drop_common_suffixes(filename):
- """Drops common suffixes like _test.cpp or -inl.h from filename.
-
- For example:
- >>> _drop_common_suffixes('foo/foo-inl.h')
- 'foo/foo'
- >>> _drop_common_suffixes('foo/bar/foo.cpp')
- 'foo/bar/foo'
- >>> _drop_common_suffixes('foo/foo_internal.h')
- 'foo/foo'
- >>> _drop_common_suffixes('foo/foo_unusualinternal.h')
- 'foo/foo_unusualinternal'
-
- Args:
- filename: The input filename.
-
- Returns:
- The filename with the common suffix removed.
- """
- for suffix in ('test.cpp', 'regtest.cpp', 'unittest.cpp',
- 'inl.h', 'impl.h', 'internal.h'):
- if (filename.endswith(suffix) and len(filename) > len(suffix)
- and filename[-len(suffix) - 1] in ('-', '_')):
- return filename[:-len(suffix) - 1]
- return os.path.splitext(filename)[0]
-
-
-def _classify_include(filename, include, is_system, include_state):
- """Figures out what kind of header 'include' is.
-
- Args:
- filename: The current file cpp_style is running over.
- include: The path to a #included file.
- is_system: True if the #include used <> rather than "".
- include_state: An _IncludeState instance in which the headers are inserted.
-
- Returns:
- One of the _XXX_HEADER constants.
-
- For example:
- >>> _classify_include('foo.cpp', 'config.h', False)
- _CONFIG_HEADER
- >>> _classify_include('foo.cpp', 'foo.h', False)
- _PRIMARY_HEADER
- >>> _classify_include('foo.cpp', 'bar.h', False)
- _OTHER_HEADER
- """
-
- # If it is a system header we know it is classified as _OTHER_HEADER.
- if is_system and not include.startswith('public/'):
- return _OTHER_HEADER
-
- # If the include is named config.h then this is WebCore/config.h.
- if include == "config.h":
- return _CONFIG_HEADER
-
- # There cannot be primary includes in header files themselves. Only an
- # include exactly matches the header filename will be is flagged as
- # primary, so that it triggers the "don't include yourself" check.
- if filename.endswith('.h') and filename != include:
- return _OTHER_HEADER;
-
- # Qt's moc files do not follow the naming and ordering rules, so they should be skipped
- if include.startswith('moc_') and include.endswith('.cpp'):
- return _MOC_HEADER
-
- if include.endswith('.moc'):
- return _MOC_HEADER
-
- # If the target file basename starts with the include we're checking
- # then we consider it the primary header.
- target_base = FileInfo(filename).base_name()
- include_base = FileInfo(include).base_name()
-
- # If we haven't encountered a primary header, then be lenient in checking.
- if not include_state.visited_primary_section():
- if target_base.find(include_base) != -1:
- return _PRIMARY_HEADER
- # Qt private APIs use _p.h suffix.
- if include_base.find(target_base) != -1 and include_base.endswith('_p'):
- return _PRIMARY_HEADER
-
- # If we already encountered a primary header, perform a strict comparison.
- # In case the two filename bases are the same then the above lenient check
- # probably was a false positive.
- elif include_state.visited_primary_section() and target_base == include_base:
- if include == "ResourceHandleWin.h":
- # FIXME: Thus far, we've only seen one example of these, but if we
- # start to see more, please consider generalizing this check
- # somehow.
- return _OTHER_HEADER
- return _PRIMARY_HEADER
-
- return _OTHER_HEADER
-
-
-def _does_primary_header_exist(filename):
- """Return a primary header file name for a file, or empty string
- if the file is not source file or primary header does not exist.
- """
- fileinfo = FileInfo(filename)
- if not fileinfo.is_source():
- return False
- primary_header = fileinfo.no_extension() + ".h"
- return os.path.isfile(primary_header)
-
-
-def check_include_line(filename, file_extension, clean_lines, line_number, include_state, error):
- """Check rules that are applicable to #include lines.
-
- Strings on #include lines are NOT removed from elided line, to make
- certain tasks easier. However, to prevent false positives, checks
- applicable to #include lines in CheckLanguage must be put here.
-
- Args:
- filename: The name of the current file.
- file_extension: The current file extension, without the leading dot.
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- include_state: An _IncludeState instance in which the headers are inserted.
- error: The function to call with any errors found.
- """
- # FIXME: For readability or as a possible optimization, consider
- # exiting early here by checking whether the "build/include"
- # category should be checked for the given filename. This
- # may involve having the error handler classes expose a
- # should_check() method, in addition to the usual __call__
- # method.
- line = clean_lines.lines[line_number]
-
- matched = _RE_PATTERN_INCLUDE.search(line)
- if not matched:
- return
-
- include = matched.group(2)
- is_system = (matched.group(1) == '<')
-
- # Look for any of the stream classes that are part of standard C++.
- if match(r'(f|ind|io|i|o|parse|pf|stdio|str|)?stream$', include):
- error(line_number, 'readability/streams', 3,
- 'Streams are highly discouraged.')
-
- # Look for specific includes to fix.
- if include.startswith('wtf/') and not is_system:
- error(line_number, 'build/include', 4,
- 'wtf includes should be <wtf/file.h> instead of "wtf/file.h".')
-
- duplicate_header = include in include_state
- if duplicate_header:
- error(line_number, 'build/include', 4,
- '"%s" already included at %s:%s' %
- (include, filename, include_state[include]))
- else:
- include_state[include] = line_number
-
- header_type = _classify_include(filename, include, is_system, include_state)
- primary_header_exists = _does_primary_header_exist(filename)
- include_state.header_types[line_number] = header_type
-
- # Only proceed if this isn't a duplicate header.
- if duplicate_header:
- return
-
- # We want to ensure that headers appear in the right order:
- # 1) for implementation files: config.h, primary header, blank line, alphabetically sorted
- # 2) for header files: alphabetically sorted
- # The include_state object keeps track of the last type seen
- # and complains if the header types are out of order or missing.
- error_message = include_state.check_next_include_order(header_type,
- file_extension == "h",
- primary_header_exists)
-
- # Check to make sure we have a blank line after primary header.
- if not error_message and header_type == _PRIMARY_HEADER:
- next_line = clean_lines.raw_lines[line_number + 1]
- if not is_blank_line(next_line):
- error(line_number, 'build/include_order', 4,
- 'You should add a blank line after implementation file\'s own header.')
-
- # Check to make sure all headers besides config.h and the primary header are
- # alphabetically sorted. Skip Qt's moc files.
- if not error_message and header_type == _OTHER_HEADER:
- previous_line_number = line_number - 1;
- previous_line = clean_lines.lines[previous_line_number]
- previous_match = _RE_PATTERN_INCLUDE.search(previous_line)
- while (not previous_match and previous_line_number > 0
- and not search(r'\A(#if|#ifdef|#ifndef|#else|#elif|#endif)', previous_line)):
- previous_line_number -= 1;
- previous_line = clean_lines.lines[previous_line_number]
- previous_match = _RE_PATTERN_INCLUDE.search(previous_line)
- if previous_match:
- previous_header_type = include_state.header_types[previous_line_number]
- if previous_header_type == _OTHER_HEADER and previous_line.strip() > line.strip():
- # This type of error is potentially a problem with this line or the previous one,
- # so if the error is filtered for one line, report it for the next. This is so that
- # we properly handle patches, for which only modified lines produce errors.
- if not error(line_number - 1, 'build/include_order', 4, 'Alphabetical sorting problem.'):
- error(line_number, 'build/include_order', 4, 'Alphabetical sorting problem.')
-
- if error_message:
- if file_extension == 'h':
- error(line_number, 'build/include_order', 4,
- '%s Should be: alphabetically sorted.' %
- error_message)
- else:
- error(line_number, 'build/include_order', 4,
- '%s Should be: config.h, primary header, blank line, and then alphabetically sorted.' %
- error_message)
-
-
-def check_language(filename, clean_lines, line_number, file_extension, include_state,
- file_state, error):
- """Checks rules from the 'C++ language rules' section of cppguide.html.
-
- Some of these rules are hard to test (function overloading, using
- uint32 inappropriately), but we do the best we can.
-
- Args:
- filename: The name of the current file.
- clean_lines: A CleansedLines instance containing the file.
- line_number: The number of the line to check.
- file_extension: The extension (without the dot) of the filename.
- include_state: An _IncludeState instance in which the headers are inserted.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
- # If the line is empty or consists of entirely a comment, no need to
- # check it.
- line = clean_lines.elided[line_number]
- if not line:
- return
-
- matched = _RE_PATTERN_INCLUDE.search(line)
- if matched:
- check_include_line(filename, file_extension, clean_lines, line_number, include_state, error)
- return
-
- # FIXME: figure out if they're using default arguments in fn proto.
-
- # Check to see if they're using an conversion function cast.
- # I just try to capture the most common basic types, though there are more.
- # Parameterless conversion functions, such as bool(), are allowed as they are
- # probably a member operator declaration or default constructor.
- matched = search(
- r'\b(int|float|double|bool|char|int32|uint32|int64|uint64)\([^)]', line)
- if matched:
- # gMock methods are defined using some variant of MOCK_METHODx(name, type)
- # where type may be float(), int(string), etc. Without context they are
- # virtually indistinguishable from int(x) casts.
- if not match(r'^\s*MOCK_(CONST_)?METHOD\d+(_T)?\(', line):
- error(line_number, 'readability/casting', 4,
- 'Using deprecated casting style. '
- 'Use static_cast<%s>(...) instead' %
- matched.group(1))
-
- check_c_style_cast(line_number, line, clean_lines.raw_lines[line_number],
- 'static_cast',
- r'\((int|float|double|bool|char|u?int(16|32|64))\)',
- error)
- # This doesn't catch all cases. Consider (const char * const)"hello".
- check_c_style_cast(line_number, line, clean_lines.raw_lines[line_number],
- 'reinterpret_cast', r'\((\w+\s?\*+\s?)\)', error)
-
- # In addition, we look for people taking the address of a cast. This
- # is dangerous -- casts can assign to temporaries, so the pointer doesn't
- # point where you think.
- if search(
- r'(&\([^)]+\)[\w(])|(&(static|dynamic|reinterpret)_cast\b)', line):
- error(line_number, 'runtime/casting', 4,
- ('Are you taking an address of a cast? '
- 'This is dangerous: could be a temp var. '
- 'Take the address before doing the cast, rather than after'))
-
- # Check for people declaring static/global STL strings at the top level.
- # This is dangerous because the C++ language does not guarantee that
- # globals with constructors are initialized before the first access.
- matched = match(
- r'((?:|static +)(?:|const +))string +([a-zA-Z0-9_:]+)\b(.*)',
- line)
- # Make sure it's not a function.
- # Function template specialization looks like: "string foo<Type>(...".
- # Class template definitions look like: "string Foo<Type>::Method(...".
- if matched and not match(r'\s*(<.*>)?(::[a-zA-Z0-9_]+)?\s*\(([^"]|$)',
- matched.group(3)):
- error(line_number, 'runtime/string', 4,
- 'For a static/global string constant, use a C style string instead: '
- '"%schar %s[]".' %
- (matched.group(1), matched.group(2)))
-
- # Check that we're not using RTTI outside of testing code.
- if search(r'\bdynamic_cast<', line):
- error(line_number, 'runtime/rtti', 5,
- 'Do not use dynamic_cast<>. If you need to cast within a class '
- "hierarchy, use static_cast<> to upcast. Google doesn't support "
- 'RTTI.')
-
- if search(r'\b([A-Za-z0-9_]*_)\(\1\)', line):
- error(line_number, 'runtime/init', 4,
- 'You seem to be initializing a member variable with itself.')
-
- if file_extension == 'h':
- # FIXME: check that 1-arg constructors are explicit.
- # How to tell it's a constructor?
- # (handled in check_for_non_standard_constructs for now)
- pass
-
- # Check if people are using the verboten C basic types. The only exception
- # we regularly allow is "unsigned short port" for port.
- if search(r'\bshort port\b', line):
- if not search(r'\bunsigned short port\b', line):
- error(line_number, 'runtime/int', 4,
- 'Use "unsigned short" for ports, not "short"')
-
- # When snprintf is used, the second argument shouldn't be a literal.
- matched = search(r'snprintf\s*\(([^,]*),\s*([0-9]*)\s*,', line)
- if matched:
- error(line_number, 'runtime/printf', 3,
- 'If you can, use sizeof(%s) instead of %s as the 2nd arg '
- 'to snprintf.' % (matched.group(1), matched.group(2)))
-
- # Check if some verboten C functions are being used.
- if search(r'\bsprintf\b', line):
- error(line_number, 'runtime/printf', 5,
- 'Never use sprintf. Use snprintf instead.')
- matched = search(r'\b(strcpy|strcat)\b', line)
- if matched:
- error(line_number, 'runtime/printf', 4,
- 'Almost always, snprintf is better than %s' % matched.group(1))
-
- if search(r'\bsscanf\b', line):
- error(line_number, 'runtime/printf', 1,
- 'sscanf can be ok, but is slow and can overflow buffers.')
-
- # Check for suspicious usage of "if" like
- # } if (a == b) {
- if search(r'\}\s*if\s*\(', line):
- error(line_number, 'readability/braces', 4,
- 'Did you mean "else if"? If not, start a new line for "if".')
-
- # Check for potential format string bugs like printf(foo).
- # We constrain the pattern not to pick things like DocidForPrintf(foo).
- # Not perfect but it can catch printf(foo.c_str()) and printf(foo->c_str())
- matched = re.search(r'\b((?:string)?printf)\s*\(([\w.\->()]+)\)', line, re.I)
- if matched:
- error(line_number, 'runtime/printf', 4,
- 'Potential format string bug. Do %s("%%s", %s) instead.'
- % (matched.group(1), matched.group(2)))
-
- # Check for potential memset bugs like memset(buf, sizeof(buf), 0).
- matched = search(r'memset\s*\(([^,]*),\s*([^,]*),\s*0\s*\)', line)
- if matched and not match(r"^''|-?[0-9]+|0x[0-9A-Fa-f]$", matched.group(2)):
- error(line_number, 'runtime/memset', 4,
- 'Did you mean "memset(%s, 0, %s)"?'
- % (matched.group(1), matched.group(2)))
-
- # Detect variable-length arrays.
- matched = match(r'\s*(.+::)?(\w+) [a-z]\w*\[(.+)];', line)
- if (matched and matched.group(2) != 'return' and matched.group(2) != 'delete' and
- matched.group(3).find(']') == -1):
- # Split the size using space and arithmetic operators as delimiters.
- # If any of the resulting tokens are not compile time constants then
- # report the error.
- tokens = re.split(r'\s|\+|\-|\*|\/|<<|>>]', matched.group(3))
- is_const = True
- skip_next = False
- for tok in tokens:
- if skip_next:
- skip_next = False
- continue
-
- if search(r'sizeof\(.+\)', tok):
- continue
- if search(r'arraysize\(\w+\)', tok):
- continue
-
- tok = tok.lstrip('(')
- tok = tok.rstrip(')')
- if not tok:
- continue
- if match(r'\d+', tok):
- continue
- if match(r'0[xX][0-9a-fA-F]+', tok):
- continue
- if match(r'k[A-Z0-9]\w*', tok):
- continue
- if match(r'(.+::)?k[A-Z0-9]\w*', tok):
- continue
- if match(r'(.+::)?[A-Z][A-Z0-9_]*', tok):
- continue
- # A catch all for tricky sizeof cases, including 'sizeof expression',
- # 'sizeof(*type)', 'sizeof(const type)', 'sizeof(struct StructName)'
- # requires skipping the next token becasue we split on ' ' and '*'.
- if tok.startswith('sizeof'):
- skip_next = True
- continue
- is_const = False
- break
- if not is_const:
- error(line_number, 'runtime/arrays', 1,
- 'Do not use variable-length arrays. Use an appropriately named '
- "('k' followed by CamelCase) compile-time constant for the size.")
-
- # Check for use of unnamed namespaces in header files. Registration
- # macros are typically OK, so we allow use of "namespace {" on lines
- # that end with backslashes.
- if (file_extension == 'h'
- and search(r'\bnamespace\s*{', line)
- and line[-1] != '\\'):
- error(line_number, 'build/namespaces', 4,
- 'Do not use unnamed namespaces in header files. See '
- 'http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces'
- ' for more information.')
-
- # Check for plain bitfields declared without either "singed" or "unsigned".
- # Most compilers treat such bitfields as signed, but there are still compilers like
- # RVCT 4.0 that use unsigned by default.
- matched = re.match(r'\s*((const|mutable)\s+)?(char|(short(\s+int)?)|int|long(\s+(long|int))?)\s+[a-zA-Z_][a-zA-Z0-9_]*\s*:\s*\d+\s*;', line)
- if matched:
- error(line_number, 'runtime/bitfields', 5,
- 'Please declare integral type bitfields with either signed or unsigned.')
-
- check_identifier_name_in_declaration(filename, line_number, line, file_state, error)
-
- # Check for unsigned int (should be just 'unsigned')
- if search(r'\bunsigned int\b', line):
- error(line_number, 'runtime/unsigned', 1,
- 'Omit int when using unsigned')
-
- # Check that we're not using static_cast<Text*>.
- if search(r'\bstatic_cast<Text\*>', line):
- error(line_number, 'readability/check', 4,
- 'Consider using toText helper function in WebCore/dom/Text.h '
- 'instead of static_cast<Text*>')
-
-def check_identifier_name_in_declaration(filename, line_number, line, file_state, error):
- """Checks if identifier names contain any underscores.
-
- As identifiers in libraries we are using have a bunch of
- underscores, we only warn about the declarations of identifiers
- and don't check use of identifiers.
-
- Args:
- filename: The name of the current file.
- line_number: The number of the line to check.
- line: The line of code to check.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- error: The function to call with any errors found.
- """
- # We don't check a return statement.
- if match(r'\s*(return|delete)\b', line):
- return
-
- # Basically, a declaration is a type name followed by whitespaces
- # followed by an identifier. The type name can be complicated
- # due to type adjectives and templates. We remove them first to
- # simplify the process to find declarations of identifiers.
-
- # Convert "long long", "long double", and "long long int" to
- # simple types, but don't remove simple "long".
- line = sub(r'long (long )?(?=long|double|int)', '', line)
- # Convert unsigned/signed types to simple types, too.
- line = sub(r'(unsigned|signed) (?=char|short|int|long)', '', line)
- line = sub(r'\b(inline|using|static|const|volatile|auto|register|extern|typedef|restrict|struct|class|virtual)(?=\W)', '', line)
-
- # Remove "new" and "new (expr)" to simplify, too.
- line = sub(r'new\s*(\([^)]*\))?', '', line)
-
- # Remove all template parameters by removing matching < and >.
- # Loop until no templates are removed to remove nested templates.
- while True:
- line, number_of_replacements = subn(r'<([\w\s:]|::)+\s*[*&]*\s*>', '', line)
- if not number_of_replacements:
- break
-
- # Declarations of local variables can be in condition expressions
- # of control flow statements (e.g., "if (RenderObject* p = o->parent())").
- # We remove the keywords and the first parenthesis.
- #
- # Declarations in "while", "if", and "switch" are different from
- # other declarations in two aspects:
- #
- # - There can be only one declaration between the parentheses.
- # (i.e., you cannot write "if (int i = 0, j = 1) {}")
- # - The variable must be initialized.
- # (i.e., you cannot write "if (int i) {}")
- #
- # and we will need different treatments for them.
- line = sub(r'^\s*for\s*\(', '', line)
- line, control_statement = subn(r'^\s*(while|else if|if|switch)\s*\(', '', line)
-
- # Detect variable and functions.
- type_regexp = r'\w([\w]|\s*[*&]\s*|::)+'
- identifier_regexp = r'(?P<identifier>[\w:]+)'
- maybe_bitfield_regexp = r'(:\s*\d+\s*)?'
- character_after_identifier_regexp = r'(?P<character_after_identifier>[[;()=,])(?!=)'
- declaration_without_type_regexp = r'\s*' + identifier_regexp + r'\s*' + maybe_bitfield_regexp + character_after_identifier_regexp
- declaration_with_type_regexp = r'\s*' + type_regexp + r'\s' + declaration_without_type_regexp
- is_function_arguments = False
- number_of_identifiers = 0
- while True:
- # If we are seeing the first identifier or arguments of a
- # function, there should be a type name before an identifier.
- if not number_of_identifiers or is_function_arguments:
- declaration_regexp = declaration_with_type_regexp
- else:
- declaration_regexp = declaration_without_type_regexp
-
- matched = match(declaration_regexp, line)
- if not matched:
- return
- identifier = matched.group('identifier')
- character_after_identifier = matched.group('character_after_identifier')
-
- # If we removed a non-for-control statement, the character after
- # the identifier should be '='. With this rule, we can avoid
- # warning for cases like "if (val & INT_MAX) {".
- if control_statement and character_after_identifier != '=':
- return
-
- is_function_arguments = is_function_arguments or character_after_identifier == '('
-
- # Remove "m_" and "s_" to allow them.
- modified_identifier = sub(r'(^|(?<=::))[ms]_', '', identifier)
- if not file_state.is_objective_c() and modified_identifier.find('_') >= 0:
- # Various exceptions to the rule: JavaScript op codes functions, const_iterator.
- if (not (filename.find('JavaScriptCore') >= 0 and modified_identifier.find('op_') >= 0)
- and not (filename.find('gtk') >= 0 and modified_identifier.startswith('webkit_') >= 0)
- and not modified_identifier.startswith('tst_')
- and not modified_identifier.startswith('webkit_dom_object_')
- and not modified_identifier.startswith('webkit_soup')
- and not modified_identifier.startswith('NPN_')
- and not modified_identifier.startswith('NPP_')
- and not modified_identifier.startswith('NP_')
- and not modified_identifier.startswith('qt_')
- and not modified_identifier.startswith('_q_')
- and not modified_identifier.startswith('cairo_')
- and not modified_identifier.startswith('Ecore_')
- and not modified_identifier.startswith('Eina_')
- and not modified_identifier.startswith('Evas_')
- and not modified_identifier.startswith('Ewk_')
- and not modified_identifier.startswith('cti_')
- and not modified_identifier.find('::qt_') >= 0
- and not modified_identifier.find('::_q_') >= 0
- and not modified_identifier == "const_iterator"
- and not modified_identifier == "vm_throw"
- and not modified_identifier == "DFG_OPERATION"):
- error(line_number, 'readability/naming/underscores', 4, identifier + " is incorrectly named. Don't use underscores in your identifier names.")
-
- # Check for variables named 'l', these are too easy to confuse with '1' in some fonts
- if modified_identifier == 'l':
- error(line_number, 'readability/naming', 4, identifier + " is incorrectly named. Don't use the single letter 'l' as an identifier name.")
-
- # There can be only one declaration in non-for-control statements.
- if control_statement:
- return
- # We should continue checking if this is a function
- # declaration because we need to check its arguments.
- # Also, we need to check multiple declarations.
- if character_after_identifier != '(' and character_after_identifier != ',':
- return
-
- number_of_identifiers += 1
- line = line[matched.end():]
-
-def check_c_style_cast(line_number, line, raw_line, cast_type, pattern,
- error):
- """Checks for a C-style cast by looking for the pattern.
-
- This also handles sizeof(type) warnings, due to similarity of content.
-
- Args:
- line_number: The number of the line to check.
- line: The line of code to check.
- raw_line: The raw line of code to check, with comments.
- cast_type: The string for the C++ cast to recommend. This is either
- reinterpret_cast or static_cast, depending.
- pattern: The regular expression used to find C-style casts.
- error: The function to call with any errors found.
- """
- matched = search(pattern, line)
- if not matched:
- return
-
- # e.g., sizeof(int)
- sizeof_match = match(r'.*sizeof\s*$', line[0:matched.start(1) - 1])
- if sizeof_match:
- error(line_number, 'runtime/sizeof', 1,
- 'Using sizeof(type). Use sizeof(varname) instead if possible')
- return
-
- remainder = line[matched.end(0):]
-
- # The close paren is for function pointers as arguments to a function.
- # eg, void foo(void (*bar)(int));
- # The semicolon check is a more basic function check; also possibly a
- # function pointer typedef.
- # eg, void foo(int); or void foo(int) const;
- # The equals check is for function pointer assignment.
- # eg, void *(*foo)(int) = ...
- #
- # Right now, this will only catch cases where there's a single argument, and
- # it's unnamed. It should probably be expanded to check for multiple
- # arguments with some unnamed.
- function_match = match(r'\s*(\)|=|(const)?\s*(;|\{|throw\(\)))', remainder)
- if function_match:
- if (not function_match.group(3)
- or function_match.group(3) == ';'
- or raw_line.find('/*') < 0):
- error(line_number, 'readability/function', 3,
- 'All parameters should be named in a function')
- return
-
- # At this point, all that should be left is actual casts.
- error(line_number, 'readability/casting', 4,
- 'Using C-style cast. Use %s<%s>(...) instead' %
- (cast_type, matched.group(1)))
-
-
-_HEADERS_CONTAINING_TEMPLATES = (
- ('<deque>', ('deque',)),
- ('<functional>', ('unary_function', 'binary_function',
- 'plus', 'minus', 'multiplies', 'divides', 'modulus',
- 'negate',
- 'equal_to', 'not_equal_to', 'greater', 'less',
- 'greater_equal', 'less_equal',
- 'logical_and', 'logical_or', 'logical_not',
- 'unary_negate', 'not1', 'binary_negate', 'not2',
- 'bind1st', 'bind2nd',
- 'pointer_to_unary_function',
- 'pointer_to_binary_function',
- 'ptr_fun',
- 'mem_fun_t', 'mem_fun', 'mem_fun1_t', 'mem_fun1_ref_t',
- 'mem_fun_ref_t',
- 'const_mem_fun_t', 'const_mem_fun1_t',
- 'const_mem_fun_ref_t', 'const_mem_fun1_ref_t',
- 'mem_fun_ref',
- )),
- ('<limits>', ('numeric_limits',)),
- ('<list>', ('list',)),
- ('<map>', ('map', 'multimap',)),
- ('<memory>', ('allocator',)),
- ('<queue>', ('queue', 'priority_queue',)),
- ('<set>', ('set', 'multiset',)),
- ('<stack>', ('stack',)),
- ('<string>', ('char_traits', 'basic_string',)),
- ('<utility>', ('pair',)),
- ('<vector>', ('vector',)),
-
- # gcc extensions.
- # Note: std::hash is their hash, ::hash is our hash
- ('<hash_map>', ('hash_map', 'hash_multimap',)),
- ('<hash_set>', ('hash_set', 'hash_multiset',)),
- ('<slist>', ('slist',)),
- )
-
-_HEADERS_ACCEPTED_BUT_NOT_PROMOTED = {
- # We can trust with reasonable confidence that map gives us pair<>, too.
- 'pair<>': ('map', 'multimap', 'hash_map', 'hash_multimap')
-}
-
-_RE_PATTERN_STRING = re.compile(r'\bstring\b')
-
-_re_pattern_algorithm_header = []
-for _template in ('copy', 'max', 'min', 'min_element', 'sort', 'swap',
- 'transform'):
- # Match max<type>(..., ...), max(..., ...), but not foo->max, foo.max or
- # type::max().
- _re_pattern_algorithm_header.append(
- (re.compile(r'[^>.]\b' + _template + r'(<.*?>)?\([^\)]'),
- _template,
- '<algorithm>'))
-
-_re_pattern_templates = []
-for _header, _templates in _HEADERS_CONTAINING_TEMPLATES:
- for _template in _templates:
- _re_pattern_templates.append(
- (re.compile(r'(\<|\b)' + _template + r'\s*\<'),
- _template + '<>',
- _header))
-
-
-def files_belong_to_same_module(filename_cpp, filename_h):
- """Check if these two filenames belong to the same module.
-
- The concept of a 'module' here is a as follows:
- foo.h, foo-inl.h, foo.cpp, foo_test.cpp and foo_unittest.cpp belong to the
- same 'module' if they are in the same directory.
- some/path/public/xyzzy and some/path/internal/xyzzy are also considered
- to belong to the same module here.
-
- If the filename_cpp contains a longer path than the filename_h, for example,
- '/absolute/path/to/base/sysinfo.cpp', and this file would include
- 'base/sysinfo.h', this function also produces the prefix needed to open the
- header. This is used by the caller of this function to more robustly open the
- header file. We don't have access to the real include paths in this context,
- so we need this guesswork here.
-
- Known bugs: tools/base/bar.cpp and base/bar.h belong to the same module
- according to this implementation. Because of this, this function gives
- some false positives. This should be sufficiently rare in practice.
-
- Args:
- filename_cpp: is the path for the .cpp file
- filename_h: is the path for the header path
-
- Returns:
- Tuple with a bool and a string:
- bool: True if filename_cpp and filename_h belong to the same module.
- string: the additional prefix needed to open the header file.
- """
-
- if not filename_cpp.endswith('.cpp'):
- return (False, '')
- filename_cpp = filename_cpp[:-len('.cpp')]
- if filename_cpp.endswith('_unittest'):
- filename_cpp = filename_cpp[:-len('_unittest')]
- elif filename_cpp.endswith('_test'):
- filename_cpp = filename_cpp[:-len('_test')]
- filename_cpp = filename_cpp.replace('/public/', '/')
- filename_cpp = filename_cpp.replace('/internal/', '/')
-
- if not filename_h.endswith('.h'):
- return (False, '')
- filename_h = filename_h[:-len('.h')]
- if filename_h.endswith('-inl'):
- filename_h = filename_h[:-len('-inl')]
- filename_h = filename_h.replace('/public/', '/')
- filename_h = filename_h.replace('/internal/', '/')
-
- files_belong_to_same_module = filename_cpp.endswith(filename_h)
- common_path = ''
- if files_belong_to_same_module:
- common_path = filename_cpp[:-len(filename_h)]
- return files_belong_to_same_module, common_path
-
-
-def update_include_state(filename, include_state, io=codecs):
- """Fill up the include_state with new includes found from the file.
-
- Args:
- filename: the name of the header to read.
- include_state: an _IncludeState instance in which the headers are inserted.
- io: The io factory to use to read the file. Provided for testability.
-
- Returns:
- True if a header was succesfully added. False otherwise.
- """
- io = _unit_test_config.get(INCLUDE_IO_INJECTION_KEY, codecs)
- header_file = None
- try:
- header_file = io.open(filename, 'r', 'utf8', 'replace')
- except IOError:
- return False
- line_number = 0
- for line in header_file:
- line_number += 1
- clean_line = cleanse_comments(line)
- matched = _RE_PATTERN_INCLUDE.search(clean_line)
- if matched:
- include = matched.group(2)
- # The value formatting is cute, but not really used right now.
- # What matters here is that the key is in include_state.
- include_state.setdefault(include, '%s:%d' % (filename, line_number))
- return True
-
-
-def check_for_include_what_you_use(filename, clean_lines, include_state, error):
- """Reports for missing stl includes.
-
- This function will output warnings to make sure you are including the headers
- necessary for the stl containers and functions that you use. We only give one
- reason to include a header. For example, if you use both equal_to<> and
- less<> in a .h file, only one (the latter in the file) of these will be
- reported as a reason to include the <functional>.
-
- Args:
- filename: The name of the current file.
- clean_lines: A CleansedLines instance containing the file.
- include_state: An _IncludeState instance.
- error: The function to call with any errors found.
- """
- required = {} # A map of header name to line_number and the template entity.
- # Example of required: { '<functional>': (1219, 'less<>') }
-
- for line_number in xrange(clean_lines.num_lines()):
- line = clean_lines.elided[line_number]
- if not line or line[0] == '#':
- continue
-
- # String is special -- it is a non-templatized type in STL.
- if _RE_PATTERN_STRING.search(line):
- required['<string>'] = (line_number, 'string')
-
- for pattern, template, header in _re_pattern_algorithm_header:
- if pattern.search(line):
- required[header] = (line_number, template)
-
- # The following function is just a speed up, no semantics are changed.
- if not '<' in line: # Reduces the cpu time usage by skipping lines.
- continue
-
- for pattern, template, header in _re_pattern_templates:
- if pattern.search(line):
- required[header] = (line_number, template)
-
- # The policy is that if you #include something in foo.h you don't need to
- # include it again in foo.cpp. Here, we will look at possible includes.
- # Let's copy the include_state so it is only messed up within this function.
- include_state = include_state.copy()
-
- # Did we find the header for this file (if any) and succesfully load it?
- header_found = False
-
- # Use the absolute path so that matching works properly.
- abs_filename = os.path.abspath(filename)
-
- # For Emacs's flymake.
- # If cpp_style is invoked from Emacs's flymake, a temporary file is generated
- # by flymake and that file name might end with '_flymake.cpp'. In that case,
- # restore original file name here so that the corresponding header file can be
- # found.
- # e.g. If the file name is 'foo_flymake.cpp', we should search for 'foo.h'
- # instead of 'foo_flymake.h'
- abs_filename = re.sub(r'_flymake\.cpp$', '.cpp', abs_filename)
-
- # include_state is modified during iteration, so we iterate over a copy of
- # the keys.
- for header in include_state.keys(): #NOLINT
- (same_module, common_path) = files_belong_to_same_module(abs_filename, header)
- fullpath = common_path + header
- if same_module and update_include_state(fullpath, include_state):
- header_found = True
-
- # If we can't find the header file for a .cpp, assume it's because we don't
- # know where to look. In that case we'll give up as we're not sure they
- # didn't include it in the .h file.
- # FIXME: Do a better job of finding .h files so we are confident that
- # not having the .h file means there isn't one.
- if filename.endswith('.cpp') and not header_found:
- return
-
- # All the lines have been processed, report the errors found.
- for required_header_unstripped in required:
- template = required[required_header_unstripped][1]
- if template in _HEADERS_ACCEPTED_BUT_NOT_PROMOTED:
- headers = _HEADERS_ACCEPTED_BUT_NOT_PROMOTED[template]
- if [True for header in headers if header in include_state]:
- continue
- if required_header_unstripped.strip('<>"') not in include_state:
- error(required[required_header_unstripped][0],
- 'build/include_what_you_use', 4,
- 'Add #include ' + required_header_unstripped + ' for ' + template)
-
-
-def process_line(filename, file_extension,
- clean_lines, line, include_state, function_state,
- class_state, file_state, enum_state, error):
- """Processes a single line in the file.
-
- Args:
- filename: Filename of the file that is being processed.
- file_extension: The extension (dot not included) of the file.
- clean_lines: An array of strings, each representing a line of the file,
- with comments stripped.
- line: Number of line being processed.
- include_state: An _IncludeState instance in which the headers are inserted.
- function_state: A _FunctionState instance which counts function lines, etc.
- class_state: A _ClassState instance which maintains information about
- the current stack of nested class declarations being parsed.
- file_state: A _FileState instance which maintains information about
- the state of things in the file.
- enum_state: A _EnumState instance which maintains an enum declaration
- state.
- error: A callable to which errors are reported, which takes arguments:
- line number, error level, and message
-
- """
- raw_lines = clean_lines.raw_lines
- detect_functions(clean_lines, line, function_state, error)
- check_for_function_lengths(clean_lines, line, function_state, error)
- if search(r'\bNOLINT\b', raw_lines[line]): # ignore nolint lines
- return
- if match(r'\s*\b__asm\b', raw_lines[line]): # Ignore asm lines as they format differently.
- return
- check_function_definition(filename, file_extension, clean_lines, line, function_state, error)
- check_pass_ptr_usage(clean_lines, line, function_state, error)
- check_for_leaky_patterns(clean_lines, line, function_state, error)
- check_for_multiline_comments_and_strings(clean_lines, line, error)
- check_style(clean_lines, line, file_extension, class_state, file_state, enum_state, error)
- check_language(filename, clean_lines, line, file_extension, include_state,
- file_state, error)
- check_for_non_standard_constructs(clean_lines, line, class_state, error)
- check_posix_threading(clean_lines, line, error)
- check_invalid_increment(clean_lines, line, error)
-
-
-def _process_lines(filename, file_extension, lines, error, min_confidence):
- """Performs lint checks and reports any errors to the given error function.
-
- Args:
- filename: Filename of the file that is being processed.
- file_extension: The extension (dot not included) of the file.
- lines: An array of strings, each representing a line of the file, with the
- last element being empty if the file is termined with a newline.
- error: A callable to which errors are reported, which takes 4 arguments:
- """
- lines = (['// marker so line numbers and indices both start at 1'] + lines +
- ['// marker so line numbers end in a known way'])
-
- include_state = _IncludeState()
- function_state = _FunctionState(min_confidence)
- class_state = _ClassState()
-
- check_for_copyright(lines, error)
-
- if file_extension == 'h':
- check_for_header_guard(filename, lines, error)
-
- remove_multi_line_comments(lines, error)
- clean_lines = CleansedLines(lines)
- file_state = _FileState(clean_lines, file_extension)
- enum_state = _EnumState()
- for line in xrange(clean_lines.num_lines()):
- process_line(filename, file_extension, clean_lines, line,
- include_state, function_state, class_state, file_state,
- enum_state, error)
- class_state.check_finished(error)
-
- check_for_include_what_you_use(filename, clean_lines, include_state, error)
-
- # We check here rather than inside process_line so that we see raw
- # lines rather than "cleaned" lines.
- check_for_unicode_replacement_characters(lines, error)
-
- check_for_new_line_at_eof(lines, error)
-
-
-class CppChecker(object):
-
- """Processes C++ lines for checking style."""
-
- # This list is used to--
- #
- # (1) generate an explicit list of all possible categories,
- # (2) unit test that all checked categories have valid names, and
- # (3) unit test that all categories are getting unit tested.
- #
- categories = set([
- 'build/class',
- 'build/deprecated',
- 'build/endif_comment',
- 'build/forward_decl',
- 'build/header_guard',
- 'build/include',
- 'build/include_order',
- 'build/include_what_you_use',
- 'build/namespaces',
- 'build/printf_format',
- 'build/storage_class',
- 'build/using_std',
- 'build/using_namespace',
- 'legal/copyright',
- 'readability/braces',
- 'readability/casting',
- 'readability/check',
- 'readability/comparison_to_zero',
- 'readability/constructors',
- 'readability/control_flow',
- 'readability/enum_casing',
- 'readability/fn_size',
- 'readability/function',
- 'readability/multiline_comment',
- 'readability/multiline_string',
- 'readability/parameter_name',
- 'readability/naming',
- 'readability/naming/underscores',
- 'readability/null',
- 'readability/pass_ptr',
- 'readability/streams',
- 'readability/todo',
- 'readability/utf8',
- 'readability/webkit_export',
- 'runtime/arrays',
- 'runtime/bitfields',
- 'runtime/casting',
- 'runtime/ctype_function',
- 'runtime/explicit',
- 'runtime/init',
- 'runtime/int',
- 'runtime/invalid_increment',
- 'runtime/leaky_pattern',
- 'runtime/max_min_macros',
- 'runtime/memset',
- 'runtime/printf',
- 'runtime/printf_format',
- 'runtime/references',
- 'runtime/rtti',
- 'runtime/sizeof',
- 'runtime/string',
- 'runtime/threadsafe_fn',
- 'runtime/unsigned',
- 'runtime/virtual',
- 'whitespace/blank_line',
- 'whitespace/braces',
- 'whitespace/comma',
- 'whitespace/comments',
- 'whitespace/declaration',
- 'whitespace/end_of_line',
- 'whitespace/ending_newline',
- 'whitespace/indent',
- 'whitespace/line_length',
- 'whitespace/newline',
- 'whitespace/operators',
- 'whitespace/parens',
- 'whitespace/semicolon',
- 'whitespace/tab',
- 'whitespace/todo',
- ])
-
- def __init__(self, file_path, file_extension, handle_style_error,
- min_confidence):
- """Create a CppChecker instance.
-
- Args:
- file_extension: A string that is the file extension, without
- the leading dot.
-
- """
- self.file_extension = file_extension
- self.file_path = file_path
- self.handle_style_error = handle_style_error
- self.min_confidence = min_confidence
-
- # Useful for unit testing.
- def __eq__(self, other):
- """Return whether this CppChecker instance is equal to another."""
- if self.file_extension != other.file_extension:
- return False
- if self.file_path != other.file_path:
- return False
- if self.handle_style_error != other.handle_style_error:
- return False
- if self.min_confidence != other.min_confidence:
- return False
-
- return True
-
- # Useful for unit testing.
- def __ne__(self, other):
- # Python does not automatically deduce __ne__() from __eq__().
- return not self.__eq__(other)
-
- def check(self, lines):
- _process_lines(self.file_path, self.file_extension, lines,
- self.handle_style_error, self.min_confidence)
-
-
-# FIXME: Remove this function (requires refactoring unit tests).
-def process_file_data(filename, file_extension, lines, error, min_confidence, unit_test_config):
- global _unit_test_config
- _unit_test_config = unit_test_config
- checker = CppChecker(filename, file_extension, error, min_confidence)
- checker.check(lines)
- _unit_test_config = {}
diff --git a/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py b/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
deleted file mode 100644
index 6ef857c41..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/cpp_unittest.py
+++ /dev/null
@@ -1,4857 +0,0 @@
-# -*- coding: utf-8; -*-
-#
-# Copyright (C) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2009 Torch Mobile Inc.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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.
-
-"""Unit test for cpp_style.py."""
-
-# FIXME: Add a good test that tests UpdateIncludeState.
-
-import codecs
-import os
-import random
-import re
-import unittest2 as unittest
-import cpp as cpp_style
-from cpp import CppChecker
-from ..filter import FilterConfiguration
-
-# This class works as an error collector and replaces cpp_style.Error
-# function for the unit tests. We also verify each category we see
-# is in STYLE_CATEGORIES, to help keep that list up to date.
-class ErrorCollector:
- _all_style_categories = CppChecker.categories
- # This is a list including all categories seen in any unit test.
- _seen_style_categories = {}
-
- def __init__(self, assert_fn, filter=None, lines_to_check=None):
- """assert_fn: a function to call when we notice a problem.
- filter: filters the errors that we are concerned about."""
- self._assert_fn = assert_fn
- self._errors = []
- self._lines_to_check = lines_to_check
- if not filter:
- filter = FilterConfiguration()
- self._filter = filter
-
- def __call__(self, line_number, category, confidence, message):
- self._assert_fn(category in self._all_style_categories,
- 'Message "%s" has category "%s",'
- ' which is not in STYLE_CATEGORIES' % (message, category))
-
- if self._lines_to_check and not line_number in self._lines_to_check:
- return False
-
- if self._filter.should_check(category, ""):
- self._seen_style_categories[category] = 1
- self._errors.append('%s [%s] [%d]' % (message, category, confidence))
- return True
-
- def results(self):
- if len(self._errors) < 2:
- return ''.join(self._errors) # Most tests expect to have a string.
- else:
- return self._errors # Let's give a list if there is more than one.
-
- def result_list(self):
- return self._errors
-
- def verify_all_categories_are_seen(self):
- """Fails if there's a category in _all_style_categories - _seen_style_categories.
-
- This should only be called after all tests are run, so
- _seen_style_categories has had a chance to fully populate. Since
- this isn't called from within the normal unittest framework, we
- can't use the normal unittest assert macros. Instead we just exit
- when we see an error. Good thing this test is always run last!
- """
- for category in self._all_style_categories:
- if category not in self._seen_style_categories:
- import sys
- sys.exit('FATAL ERROR: There are no tests for category "%s"' % category)
-
-
-# This class is a lame mock of codecs. We do not verify filename, mode, or
-# encoding, but for the current use case it is not needed.
-class MockIo:
- def __init__(self, mock_file):
- self.mock_file = mock_file
-
- def open(self, unused_filename, unused_mode, unused_encoding, _): # NOLINT
- # (lint doesn't like open as a method name)
- return self.mock_file
-
-
-class CppFunctionsTest(unittest.TestCase):
-
- """Supports testing functions that do not need CppStyleTestBase."""
-
- def test_convert_to_lower_with_underscores(self):
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('ABC'), 'abc')
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('aB'), 'a_b')
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('isAName'), 'is_a_name')
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('AnotherTest'), 'another_test')
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('PassRefPtr<MyClass>'), 'pass_ref_ptr<my_class>')
- self.assertEqual(cpp_style._convert_to_lower_with_underscores('_ABC'), '_abc')
-
- def test_create_acronym(self):
- self.assertEqual(cpp_style._create_acronym('ABC'), 'ABC')
- self.assertEqual(cpp_style._create_acronym('IsAName'), 'IAN')
- self.assertEqual(cpp_style._create_acronym('PassRefPtr<MyClass>'), 'PRP<MC>')
-
- def test_is_c_or_objective_c(self):
- clean_lines = cpp_style.CleansedLines([''])
- clean_objc_lines = cpp_style.CleansedLines(['#import "header.h"'])
- self.assertTrue(cpp_style._FileState(clean_lines, 'c').is_c_or_objective_c())
- self.assertTrue(cpp_style._FileState(clean_lines, 'm').is_c_or_objective_c())
- self.assertFalse(cpp_style._FileState(clean_lines, 'cpp').is_c_or_objective_c())
- self.assertFalse(cpp_style._FileState(clean_lines, 'cc').is_c_or_objective_c())
- self.assertFalse(cpp_style._FileState(clean_lines, 'h').is_c_or_objective_c())
- self.assertTrue(cpp_style._FileState(clean_objc_lines, 'h').is_c_or_objective_c())
-
- def test_parameter(self):
- # Test type.
- parameter = cpp_style.Parameter('ExceptionCode', 13, 1)
- self.assertEqual(parameter.type, 'ExceptionCode')
- self.assertEqual(parameter.name, '')
- self.assertEqual(parameter.row, 1)
-
- # Test type and name.
- parameter = cpp_style.Parameter('PassRefPtr<MyClass> parent', 19, 1)
- self.assertEqual(parameter.type, 'PassRefPtr<MyClass>')
- self.assertEqual(parameter.name, 'parent')
- self.assertEqual(parameter.row, 1)
-
- # Test type, no name, with default value.
- parameter = cpp_style.Parameter('MyClass = 0', 7, 0)
- self.assertEqual(parameter.type, 'MyClass')
- self.assertEqual(parameter.name, '')
- self.assertEqual(parameter.row, 0)
-
- # Test type, name, and default value.
- parameter = cpp_style.Parameter('MyClass a = 0', 7, 0)
- self.assertEqual(parameter.type, 'MyClass')
- self.assertEqual(parameter.name, 'a')
- self.assertEqual(parameter.row, 0)
-
- def test_single_line_view(self):
- start_position = cpp_style.Position(row=1, column=1)
- end_position = cpp_style.Position(row=3, column=1)
- single_line_view = cpp_style.SingleLineView(['0', 'abcde', 'fgh', 'i'], start_position, end_position)
- self.assertEqual(single_line_view.single_line, 'bcde fgh i')
- self.assertEqual(single_line_view.convert_column_to_row(0), 1)
- self.assertEqual(single_line_view.convert_column_to_row(4), 1)
- self.assertEqual(single_line_view.convert_column_to_row(5), 2)
- self.assertEqual(single_line_view.convert_column_to_row(8), 2)
- self.assertEqual(single_line_view.convert_column_to_row(9), 3)
- self.assertEqual(single_line_view.convert_column_to_row(100), 3)
-
- start_position = cpp_style.Position(row=0, column=3)
- end_position = cpp_style.Position(row=0, column=4)
- single_line_view = cpp_style.SingleLineView(['abcdef'], start_position, end_position)
- self.assertEqual(single_line_view.single_line, 'd')
-
- def test_create_skeleton_parameters(self):
- self.assertEqual(cpp_style.create_skeleton_parameters(''), '')
- self.assertEqual(cpp_style.create_skeleton_parameters(' '), ' ')
- self.assertEqual(cpp_style.create_skeleton_parameters('long'), 'long,')
- self.assertEqual(cpp_style.create_skeleton_parameters('const unsigned long int'), ' int,')
- self.assertEqual(cpp_style.create_skeleton_parameters('long int*'), ' int ,')
- self.assertEqual(cpp_style.create_skeleton_parameters('PassRefPtr<Foo> a'), 'PassRefPtr a,')
- self.assertEqual(cpp_style.create_skeleton_parameters(
- 'ComplexTemplate<NestedTemplate1<MyClass1, MyClass2>, NestedTemplate1<MyClass1, MyClass2> > param, int second'),
- 'ComplexTemplate param, int second,')
- self.assertEqual(cpp_style.create_skeleton_parameters('int = 0, Namespace::Type& a'), 'int , Type a,')
- # Create skeleton parameters is a bit too aggressive with function variables, but
- # it allows for parsing other parameters and declarations like this are rare.
- self.assertEqual(cpp_style.create_skeleton_parameters('void (*fn)(int a, int b), Namespace::Type& a'),
- 'void , Type a,')
-
- # This doesn't look like functions declarations but the simplifications help to eliminate false positives.
- self.assertEqual(cpp_style.create_skeleton_parameters('b{d}'), 'b ,')
-
- def test_find_parameter_name_index(self):
- self.assertEqual(cpp_style.find_parameter_name_index(' int a '), 5)
- self.assertEqual(cpp_style.find_parameter_name_index(' PassRefPtr '), 16)
- self.assertEqual(cpp_style.find_parameter_name_index('double'), 6)
-
- def test_parameter_list(self):
- elided_lines = ['int blah(PassRefPtr<MyClass> paramName,',
- 'const Other1Class& foo,',
- 'const ComplexTemplate<Class1, NestedTemplate<P1, P2> >* const * param = new ComplexTemplate<Class1, NestedTemplate<P1, P2> >(34, 42),',
- 'int* myCount = 0);']
- start_position = cpp_style.Position(row=0, column=8)
- end_position = cpp_style.Position(row=3, column=16)
-
- expected_parameters = ({'type': 'PassRefPtr<MyClass>', 'name': 'paramName', 'row': 0},
- {'type': 'const Other1Class&', 'name': 'foo', 'row': 1},
- {'type': 'const ComplexTemplate<Class1, NestedTemplate<P1, P2> >* const *', 'name': 'param', 'row': 2},
- {'type': 'int*', 'name': 'myCount', 'row': 3})
- index = 0
- for parameter in cpp_style.parameter_list(elided_lines, start_position, end_position):
- expected_parameter = expected_parameters[index]
- self.assertEqual(parameter.type, expected_parameter['type'])
- self.assertEqual(parameter.name, expected_parameter['name'])
- self.assertEqual(parameter.row, expected_parameter['row'])
- index += 1
- self.assertEqual(index, len(expected_parameters))
-
- def test_check_parameter_against_text(self):
- error_collector = ErrorCollector(self.assertTrue)
- parameter = cpp_style.Parameter('FooF ooF', 4, 1)
- self.assertFalse(cpp_style._check_parameter_name_against_text(parameter, 'FooF', error_collector))
- self.assertEqual(error_collector.results(),
- 'The parameter name "ooF" adds no information, so it should be removed. [readability/parameter_name] [5]')
-
-class CppStyleTestBase(unittest.TestCase):
- """Provides some useful helper functions for cpp_style tests.
-
- Attributes:
- min_confidence: An integer that is the current minimum confidence
- level for the tests.
-
- """
-
- # FIXME: Refactor the unit tests so the confidence level is passed
- # explicitly, just like it is in the real code.
- min_confidence = 1;
-
- # Helper function to avoid needing to explicitly pass confidence
- # in all the unit test calls to cpp_style.process_file_data().
- def process_file_data(self, filename, file_extension, lines, error, unit_test_config={}):
- """Call cpp_style.process_file_data() with the min_confidence."""
- return cpp_style.process_file_data(filename, file_extension, lines,
- error, self.min_confidence, unit_test_config)
-
- def perform_lint(self, code, filename, basic_error_rules, unit_test_config={}, lines_to_check=None):
- error_collector = ErrorCollector(self.assertTrue, FilterConfiguration(basic_error_rules), lines_to_check)
- lines = code.split('\n')
- extension = filename.split('.')[1]
- self.process_file_data(filename, extension, lines, error_collector, unit_test_config)
- return error_collector.results()
-
- # Perform lint on single line of input and return the error message.
- def perform_single_line_lint(self, code, filename):
- basic_error_rules = ('-build/header_guard',
- '-legal/copyright',
- '-readability/fn_size',
- '-readability/parameter_name',
- '-readability/pass_ptr',
- '-whitespace/ending_newline')
- return self.perform_lint(code, filename, basic_error_rules)
-
- # Perform lint over multiple lines and return the error message.
- def perform_multi_line_lint(self, code, file_extension):
- basic_error_rules = ('-build/header_guard',
- '-legal/copyright',
- '-readability/parameter_name',
- '-whitespace/ending_newline')
- return self.perform_lint(code, 'test.' + file_extension, basic_error_rules)
-
- # Only keep some errors related to includes, namespaces and rtti.
- def perform_language_rules_check(self, filename, code, lines_to_check=None):
- basic_error_rules = ('-',
- '+build/include',
- '+build/include_order',
- '+build/namespaces',
- '+runtime/rtti')
- return self.perform_lint(code, filename, basic_error_rules, lines_to_check=lines_to_check)
-
- # Only keep function length errors.
- def perform_function_lengths_check(self, code):
- basic_error_rules = ('-',
- '+readability/fn_size')
- return self.perform_lint(code, 'test.cpp', basic_error_rules)
-
- # Only keep pass ptr errors.
- def perform_pass_ptr_check(self, code):
- basic_error_rules = ('-',
- '+readability/pass_ptr')
- return self.perform_lint(code, 'test.cpp', basic_error_rules)
-
- # Only keep leaky pattern errors.
- def perform_leaky_pattern_check(self, code):
- basic_error_rules = ('-',
- '+runtime/leaky_pattern')
- return self.perform_lint(code, 'test.cpp', basic_error_rules)
-
- # Only include what you use errors.
- def perform_include_what_you_use(self, code, filename='foo.h', io=codecs):
- basic_error_rules = ('-',
- '+build/include_what_you_use')
- unit_test_config = {cpp_style.INCLUDE_IO_INJECTION_KEY: io}
- return self.perform_lint(code, filename, basic_error_rules, unit_test_config)
-
- # Perform lint and compare the error message with "expected_message".
- def assert_lint(self, code, expected_message, file_name='foo.cpp'):
- self.assertEqual(expected_message, self.perform_single_line_lint(code, file_name))
-
- def assert_lint_one_of_many_errors_re(self, code, expected_message_re, file_name='foo.cpp'):
- messages = self.perform_single_line_lint(code, file_name)
- for message in messages:
- if re.search(expected_message_re, message):
- return
-
- self.assertEqual(expected_message_re, messages)
-
- def assert_multi_line_lint(self, code, expected_message, file_name='foo.h'):
- file_extension = file_name[file_name.rfind('.') + 1:]
- self.assertEqual(expected_message, self.perform_multi_line_lint(code, file_extension))
-
- def assert_multi_line_lint_re(self, code, expected_message_re, file_name='foo.h'):
- file_extension = file_name[file_name.rfind('.') + 1:]
- message = self.perform_multi_line_lint(code, file_extension)
- if not re.search(expected_message_re, message):
- self.fail('Message was:\n' + message + 'Expected match to "' + expected_message_re + '"')
-
- def assert_language_rules_check(self, file_name, code, expected_message, lines_to_check=None):
- self.assertEqual(expected_message,
- self.perform_language_rules_check(file_name, code, lines_to_check))
-
- def assert_include_what_you_use(self, code, expected_message):
- self.assertEqual(expected_message,
- self.perform_include_what_you_use(code))
-
- def assert_blank_lines_check(self, lines, start_errors, end_errors):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp', lines, error_collector)
- self.assertEqual(
- start_errors,
- error_collector.results().count(
- 'Blank line at the start of a code block. Is this needed?'
- ' [whitespace/blank_line] [2]'))
- self.assertEqual(
- end_errors,
- error_collector.results().count(
- 'Blank line at the end of a code block. Is this needed?'
- ' [whitespace/blank_line] [3]'))
-
- def assert_positions_equal(self, position, tuple_position):
- """Checks if the two positions are equal.
-
- position: a cpp_style.Position object.
- tuple_position: a tuple (row, column) to compare against."""
- self.assertEqual(position, cpp_style.Position(tuple_position[0], tuple_position[1]),
- 'position %s, tuple_position %s' % (position, tuple_position))
-
-
-class FunctionDetectionTest(CppStyleTestBase):
- def perform_function_detection(self, lines, function_information, detection_line=0):
- clean_lines = cpp_style.CleansedLines(lines)
- function_state = cpp_style._FunctionState(5)
- error_collector = ErrorCollector(self.assertTrue)
- cpp_style.detect_functions(clean_lines, detection_line, function_state, error_collector)
- if not function_information:
- self.assertEqual(function_state.in_a_function, False)
- return
- self.assertEqual(function_state.in_a_function, True)
- self.assertEqual(function_state.current_function, function_information['name'] + '()')
- self.assertEqual(function_state.modifiers_and_return_type(), function_information['modifiers_and_return_type'])
- self.assertEqual(function_state.is_pure, function_information['is_pure'])
- self.assertEqual(function_state.is_declaration, function_information['is_declaration'])
- self.assert_positions_equal(function_state.function_name_start_position, function_information['function_name_start_position'])
- self.assert_positions_equal(function_state.parameter_start_position, function_information['parameter_start_position'])
- self.assert_positions_equal(function_state.parameter_end_position, function_information['parameter_end_position'])
- self.assert_positions_equal(function_state.body_start_position, function_information['body_start_position'])
- self.assert_positions_equal(function_state.end_position, function_information['end_position'])
- expected_parameters = function_information.get('parameter_list')
- if expected_parameters:
- actual_parameters = function_state.parameter_list()
- self.assertEqual(len(actual_parameters), len(expected_parameters))
- for index in range(len(expected_parameters)):
- actual_parameter = actual_parameters[index]
- expected_parameter = expected_parameters[index]
- self.assertEqual(actual_parameter.type, expected_parameter['type'])
- self.assertEqual(actual_parameter.name, expected_parameter['name'])
- self.assertEqual(actual_parameter.row, expected_parameter['row'])
-
- def test_basic_function_detection(self):
- self.perform_function_detection(
- ['void theTestFunctionName(int) {',
- '}'],
- {'name': 'theTestFunctionName',
- 'modifiers_and_return_type': 'void',
- 'function_name_start_position': (0, 5),
- 'parameter_start_position': (0, 24),
- 'parameter_end_position': (0, 29),
- 'body_start_position': (0, 30),
- 'end_position': (1, 1),
- 'is_pure': False,
- 'is_declaration': False})
-
- def test_function_declaration_detection(self):
- self.perform_function_detection(
- ['void aFunctionName(int);'],
- {'name': 'aFunctionName',
- 'modifiers_and_return_type': 'void',
- 'function_name_start_position': (0, 5),
- 'parameter_start_position': (0, 18),
- 'parameter_end_position': (0, 23),
- 'body_start_position': (0, 23),
- 'end_position': (0, 24),
- 'is_pure': False,
- 'is_declaration': True})
-
- self.perform_function_detection(
- ['CheckedInt<T> operator /(const CheckedInt<T> &lhs, const CheckedInt<T> &rhs);'],
- {'name': 'operator /',
- 'modifiers_and_return_type': 'CheckedInt<T>',
- 'function_name_start_position': (0, 14),
- 'parameter_start_position': (0, 24),
- 'parameter_end_position': (0, 76),
- 'body_start_position': (0, 76),
- 'end_position': (0, 77),
- 'is_pure': False,
- 'is_declaration': True})
-
- self.perform_function_detection(
- ['CheckedInt<T> operator -(const CheckedInt<T> &lhs, const CheckedInt<T> &rhs);'],
- {'name': 'operator -',
- 'modifiers_and_return_type': 'CheckedInt<T>',
- 'function_name_start_position': (0, 14),
- 'parameter_start_position': (0, 24),
- 'parameter_end_position': (0, 76),
- 'body_start_position': (0, 76),
- 'end_position': (0, 77),
- 'is_pure': False,
- 'is_declaration': True})
-
- self.perform_function_detection(
- ['CheckedInt<T> operator !=(const CheckedInt<T> &lhs, const CheckedInt<T> &rhs);'],
- {'name': 'operator !=',
- 'modifiers_and_return_type': 'CheckedInt<T>',
- 'function_name_start_position': (0, 14),
- 'parameter_start_position': (0, 25),
- 'parameter_end_position': (0, 77),
- 'body_start_position': (0, 77),
- 'end_position': (0, 78),
- 'is_pure': False,
- 'is_declaration': True})
-
- self.perform_function_detection(
- ['CheckedInt<T> operator +(const CheckedInt<T> &lhs, const CheckedInt<T> &rhs);'],
- {'name': 'operator +',
- 'modifiers_and_return_type': 'CheckedInt<T>',
- 'function_name_start_position': (0, 14),
- 'parameter_start_position': (0, 24),
- 'parameter_end_position': (0, 76),
- 'body_start_position': (0, 76),
- 'end_position': (0, 77),
- 'is_pure': False,
- 'is_declaration': True})
-
- def test_pure_function_detection(self):
- self.perform_function_detection(
- ['virtual void theTestFunctionName(int = 0);'],
- {'name': 'theTestFunctionName',
- 'modifiers_and_return_type': 'virtual void',
- 'function_name_start_position': (0, 13),
- 'parameter_start_position': (0, 32),
- 'parameter_end_position': (0, 41),
- 'body_start_position': (0, 41),
- 'end_position': (0, 42),
- 'is_pure': False,
- 'is_declaration': True})
-
- self.perform_function_detection(
- ['virtual void theTestFunctionName(int) = 0;'],
- {'name': 'theTestFunctionName',
- 'modifiers_and_return_type': 'virtual void',
- 'function_name_start_position': (0, 13),
- 'parameter_start_position': (0, 32),
- 'parameter_end_position': (0, 37),
- 'body_start_position': (0, 41),
- 'end_position': (0, 42),
- 'is_pure': True,
- 'is_declaration': True})
-
- # Hopefully, no one writes code like this but it is a tricky case.
- self.perform_function_detection(
- ['virtual void theTestFunctionName(int)',
- ' = ',
- ' 0 ;'],
- {'name': 'theTestFunctionName',
- 'modifiers_and_return_type': 'virtual void',
- 'function_name_start_position': (0, 13),
- 'parameter_start_position': (0, 32),
- 'parameter_end_position': (0, 37),
- 'body_start_position': (2, 3),
- 'end_position': (2, 4),
- 'is_pure': True,
- 'is_declaration': True})
-
- def test_ignore_macros(self):
- self.perform_function_detection(['void aFunctionName(int); \\'], None)
-
- def test_non_functions(self):
- # This case exposed an error because the open brace was in quotes.
- self.perform_function_detection(
- ['asm(',
- ' "stmdb sp!, {r1-r3}" "\n"',
- ');'],
- # This isn't a function but it looks like one to our simple
- # algorithm and that is ok.
- {'name': 'asm',
- 'modifiers_and_return_type': '',
- 'function_name_start_position': (0, 0),
- 'parameter_start_position': (0, 3),
- 'parameter_end_position': (2, 1),
- 'body_start_position': (2, 1),
- 'end_position': (2, 2),
- 'is_pure': False,
- 'is_declaration': True})
-
- # Simple test case with something that is not a function.
- self.perform_function_detection(['class Stuff;'], None)
-
- def test_parameter_list(self):
- # A function with no arguments.
- function_state = self.perform_function_detection(
- ['void functionName();'],
- {'name': 'functionName',
- 'modifiers_and_return_type': 'void',
- 'function_name_start_position': (0, 5),
- 'parameter_start_position': (0, 17),
- 'parameter_end_position': (0, 19),
- 'body_start_position': (0, 19),
- 'end_position': (0, 20),
- 'is_pure': False,
- 'is_declaration': True,
- 'parameter_list': ()})
-
- # A function with one argument.
- function_state = self.perform_function_detection(
- ['void functionName(int);'],
- {'name': 'functionName',
- 'modifiers_and_return_type': 'void',
- 'function_name_start_position': (0, 5),
- 'parameter_start_position': (0, 17),
- 'parameter_end_position': (0, 22),
- 'body_start_position': (0, 22),
- 'end_position': (0, 23),
- 'is_pure': False,
- 'is_declaration': True,
- 'parameter_list':
- ({'type': 'int', 'name': '', 'row': 0},)})
-
- # A function with unsigned and short arguments
- function_state = self.perform_function_detection(
- ['void functionName(unsigned a, short b, long c, long long short unsigned int);'],
- {'name': 'functionName',
- 'modifiers_and_return_type': 'void',
- 'function_name_start_position': (0, 5),
- 'parameter_start_position': (0, 17),
- 'parameter_end_position': (0, 76),
- 'body_start_position': (0, 76),
- 'end_position': (0, 77),
- 'is_pure': False,
- 'is_declaration': True,
- 'parameter_list':
- ({'type': 'unsigned', 'name': 'a', 'row': 0},
- {'type': 'short', 'name': 'b', 'row': 0},
- {'type': 'long', 'name': 'c', 'row': 0},
- {'type': 'long long short unsigned int', 'name': '', 'row': 0})})
-
- # Some parameter type with modifiers and no parameter names.
- function_state = self.perform_function_detection(
- ['virtual void determineARIADropEffects(Vector<String>*&, const unsigned long int*&, const MediaPlayer::Preload, Other<Other2, Other3<P1, P2> >, int);'],
- {'name': 'determineARIADropEffects',
- 'modifiers_and_return_type': 'virtual void',
- 'parameter_start_position': (0, 37),
- 'function_name_start_position': (0, 13),
- 'parameter_end_position': (0, 147),
- 'body_start_position': (0, 147),
- 'end_position': (0, 148),
- 'is_pure': False,
- 'is_declaration': True,
- 'parameter_list':
- ({'type': 'Vector<String>*&', 'name': '', 'row': 0},
- {'type': 'const unsigned long int*&', 'name': '', 'row': 0},
- {'type': 'const MediaPlayer::Preload', 'name': '', 'row': 0},
- {'type': 'Other<Other2, Other3<P1, P2> >', 'name': '', 'row': 0},
- {'type': 'int', 'name': '', 'row': 0})})
-
- # Try parsing a function with a very complex definition.
- function_state = self.perform_function_detection(
- ['#define MyMacro(a) a',
- 'virtual',
- 'AnotherTemplate<Class1, Class2> aFunctionName(PassRefPtr<MyClass> paramName,',
- 'const Other1Class& foo,',
- 'const ComplexTemplate<Class1, NestedTemplate<P1, P2> >* const * param = new ComplexTemplate<Class1, NestedTemplate<P1, P2> >(34, 42),',
- 'int* myCount = 0);'],
- {'name': 'aFunctionName',
- 'modifiers_and_return_type': 'virtual AnotherTemplate<Class1, Class2>',
- 'function_name_start_position': (2, 32),
- 'parameter_start_position': (2, 45),
- 'parameter_end_position': (5, 17),
- 'body_start_position': (5, 17),
- 'end_position': (5, 18),
- 'is_pure': False,
- 'is_declaration': True,
- 'parameter_list':
- ({'type': 'PassRefPtr<MyClass>', 'name': 'paramName', 'row': 2},
- {'type': 'const Other1Class&', 'name': 'foo', 'row': 3},
- {'type': 'const ComplexTemplate<Class1, NestedTemplate<P1, P2> >* const *', 'name': 'param', 'row': 4},
- {'type': 'int*', 'name': 'myCount', 'row': 5})},
- detection_line=2)
-
-
-class CppStyleTest(CppStyleTestBase):
-
- def test_asm_lines_ignored(self):
- self.assert_lint(
- '__asm mov [registration], eax',
- '')
-
- # Test get line width.
- def test_get_line_width(self):
- self.assertEqual(0, cpp_style.get_line_width(''))
- self.assertEqual(10, cpp_style.get_line_width(u'x' * 10))
- self.assertEqual(16, cpp_style.get_line_width(u'都|道|府|県|支庁'))
-
- def test_find_next_multi_line_comment_start(self):
- self.assertEqual(1, cpp_style.find_next_multi_line_comment_start([''], 0))
-
- lines = ['a', 'b', '/* c']
- self.assertEqual(2, cpp_style.find_next_multi_line_comment_start(lines, 0))
-
- lines = ['char a[] = "/*";'] # not recognized as comment.
- self.assertEqual(1, cpp_style.find_next_multi_line_comment_start(lines, 0))
-
- def test_find_next_multi_line_comment_end(self):
- self.assertEqual(1, cpp_style.find_next_multi_line_comment_end([''], 0))
- lines = ['a', 'b', ' c */']
- self.assertEqual(2, cpp_style.find_next_multi_line_comment_end(lines, 0))
-
- def test_remove_multi_line_comments_from_range(self):
- lines = ['a', ' /* comment ', ' * still comment', ' comment */ ', 'b']
- cpp_style.remove_multi_line_comments_from_range(lines, 1, 4)
- self.assertEqual(['a', '// dummy', '// dummy', '// dummy', 'b'], lines)
-
- def test_position(self):
- position = cpp_style.Position(3, 4)
- self.assert_positions_equal(position, (3, 4))
- self.assertEqual(position.row, 3)
- self.assertTrue(position > cpp_style.Position(position.row - 1, position.column + 1))
- self.assertTrue(position > cpp_style.Position(position.row, position.column - 1))
- self.assertTrue(position < cpp_style.Position(position.row, position.column + 1))
- self.assertTrue(position < cpp_style.Position(position.row + 1, position.column - 1))
- self.assertEqual(position.__str__(), '(3, 4)')
-
- def test_rfind_in_lines(self):
- not_found_position = cpp_style.Position(10, 11)
- start_position = cpp_style.Position(2, 2)
- lines = ['ab', 'ace', 'test']
- self.assertEqual(not_found_position, cpp_style._rfind_in_lines('st', lines, start_position, not_found_position))
- self.assertTrue(cpp_style.Position(1, 1) == cpp_style._rfind_in_lines('a', lines, start_position, not_found_position))
- self.assertEqual(cpp_style.Position(2, 2), cpp_style._rfind_in_lines('(te|a)', lines, start_position, not_found_position))
-
- def test_close_expression(self):
- self.assertEqual(cpp_style.Position(1, -1), cpp_style.close_expression([')('], cpp_style.Position(0, 1)))
- self.assertEqual(cpp_style.Position(1, -1), cpp_style.close_expression([') ()'], cpp_style.Position(0, 1)))
- self.assertEqual(cpp_style.Position(0, 4), cpp_style.close_expression([')[)]'], cpp_style.Position(0, 1)))
- self.assertEqual(cpp_style.Position(0, 5), cpp_style.close_expression(['}{}{}'], cpp_style.Position(0, 3)))
- self.assertEqual(cpp_style.Position(1, 1), cpp_style.close_expression(['}{}{', '}'], cpp_style.Position(0, 3)))
- self.assertEqual(cpp_style.Position(2, -1), cpp_style.close_expression(['][][', ' '], cpp_style.Position(0, 3)))
-
- def test_spaces_at_end_of_line(self):
- self.assert_lint(
- '// Hello there ',
- 'Line ends in whitespace. Consider deleting these extra spaces.'
- ' [whitespace/end_of_line] [4]')
-
- # Test C-style cast cases.
- def test_cstyle_cast(self):
- self.assert_lint(
- 'int a = (int)1.0;',
- 'Using C-style cast. Use static_cast<int>(...) instead'
- ' [readability/casting] [4]')
- self.assert_lint(
- 'int *a = (int *)DEFINED_VALUE;',
- 'Using C-style cast. Use reinterpret_cast<int *>(...) instead'
- ' [readability/casting] [4]', 'foo.c')
- self.assert_lint(
- 'uint16 a = (uint16)1.0;',
- 'Using C-style cast. Use static_cast<uint16>(...) instead'
- ' [readability/casting] [4]')
- self.assert_lint(
- 'int32 a = (int32)1.0;',
- 'Using C-style cast. Use static_cast<int32>(...) instead'
- ' [readability/casting] [4]')
- self.assert_lint(
- 'uint64 a = (uint64)1.0;',
- 'Using C-style cast. Use static_cast<uint64>(...) instead'
- ' [readability/casting] [4]')
-
- # Test taking address of casts (runtime/casting)
- def test_runtime_casting(self):
- self.assert_lint(
- 'int* x = &static_cast<int*>(foo);',
- 'Are you taking an address of a cast? '
- 'This is dangerous: could be a temp var. '
- 'Take the address before doing the cast, rather than after'
- ' [runtime/casting] [4]')
-
- self.assert_lint(
- 'int* x = &dynamic_cast<int *>(foo);',
- ['Are you taking an address of a cast? '
- 'This is dangerous: could be a temp var. '
- 'Take the address before doing the cast, rather than after'
- ' [runtime/casting] [4]',
- 'Do not use dynamic_cast<>. If you need to cast within a class '
- 'hierarchy, use static_cast<> to upcast. Google doesn\'t support '
- 'RTTI. [runtime/rtti] [5]'])
-
- self.assert_lint(
- 'int* x = &reinterpret_cast<int *>(foo);',
- 'Are you taking an address of a cast? '
- 'This is dangerous: could be a temp var. '
- 'Take the address before doing the cast, rather than after'
- ' [runtime/casting] [4]')
-
- # It's OK to cast an address.
- self.assert_lint(
- 'int* x = reinterpret_cast<int *>(&foo);',
- '')
-
- def test_runtime_selfinit(self):
- self.assert_lint(
- 'Foo::Foo(Bar r, Bel l) : r_(r_), l_(l_) { }',
- 'You seem to be initializing a member variable with itself.'
- ' [runtime/init] [4]')
- self.assert_lint(
- 'Foo::Foo(Bar r, Bel l) : r_(r), l_(l) { }',
- '')
- self.assert_lint(
- 'Foo::Foo(Bar r) : r_(r), l_(r_), ll_(l_) { }',
- '')
-
- def test_runtime_rtti(self):
- statement = 'int* x = dynamic_cast<int*>(&foo);'
- error_message = (
- 'Do not use dynamic_cast<>. If you need to cast within a class '
- 'hierarchy, use static_cast<> to upcast. Google doesn\'t support '
- 'RTTI. [runtime/rtti] [5]')
- # dynamic_cast is disallowed in most files.
- self.assert_language_rules_check('foo.cpp', statement, error_message)
- self.assert_language_rules_check('foo.h', statement, error_message)
-
- # Test for static_cast readability.
- def test_static_cast_readability(self):
- self.assert_lint(
- 'Text* x = static_cast<Text*>(foo);',
- 'Consider using toText helper function in WebCore/dom/Text.h '
- 'instead of static_cast<Text*>'
- ' [readability/check] [4]')
-
- # We cannot test this functionality because of difference of
- # function definitions. Anyway, we may never enable this.
- #
- # # Test for unnamed arguments in a method.
- # def test_check_for_unnamed_params(self):
- # message = ('All parameters should be named in a function'
- # ' [readability/function] [3]')
- # self.assert_lint('virtual void A(int*) const;', message)
- # self.assert_lint('virtual void B(void (*fn)(int*));', message)
- # self.assert_lint('virtual void C(int*);', message)
- # self.assert_lint('void *(*f)(void *) = x;', message)
- # self.assert_lint('void Method(char*) {', message)
- # self.assert_lint('void Method(char*);', message)
- # self.assert_lint('void Method(char* /*x*/);', message)
- # self.assert_lint('typedef void (*Method)(int32);', message)
- # self.assert_lint('static void operator delete[](void*) throw();', message)
- #
- # self.assert_lint('virtual void D(int* p);', '')
- # self.assert_lint('void operator delete(void* x) throw();', '')
- # self.assert_lint('void Method(char* x)\n{', '')
- # self.assert_lint('void Method(char* /*x*/)\n{', '')
- # self.assert_lint('void Method(char* x);', '')
- # self.assert_lint('typedef void (*Method)(int32 x);', '')
- # self.assert_lint('static void operator delete[](void* x) throw();', '')
- # self.assert_lint('static void operator delete[](void* /*x*/) throw();', '')
- #
- # # This one should technically warn, but doesn't because the function
- # # pointer is confusing.
- # self.assert_lint('virtual void E(void (*fn)(int* p));', '')
-
- # Test deprecated casts such as int(d)
- def test_deprecated_cast(self):
- self.assert_lint(
- 'int a = int(2.2);',
- 'Using deprecated casting style. '
- 'Use static_cast<int>(...) instead'
- ' [readability/casting] [4]')
- # Checks for false positives...
- self.assert_lint(
- 'int a = int(); // Constructor, o.k.',
- '')
- self.assert_lint(
- 'X::X() : a(int()) { } // default Constructor, o.k.',
- '')
- self.assert_lint(
- 'operator bool(); // Conversion operator, o.k.',
- '')
-
- # The second parameter to a gMock method definition is a function signature
- # that often looks like a bad cast but should not picked up by lint.
- def test_mock_method(self):
- self.assert_lint(
- 'MOCK_METHOD0(method, int());',
- '')
- self.assert_lint(
- 'MOCK_CONST_METHOD1(method, float(string));',
- '')
- self.assert_lint(
- 'MOCK_CONST_METHOD2_T(method, double(float, float));',
- '')
-
- # Test sizeof(type) cases.
- def test_sizeof_type(self):
- self.assert_lint(
- 'sizeof(int);',
- 'Using sizeof(type). Use sizeof(varname) instead if possible'
- ' [runtime/sizeof] [1]')
- self.assert_lint(
- 'sizeof(int *);',
- 'Using sizeof(type). Use sizeof(varname) instead if possible'
- ' [runtime/sizeof] [1]')
-
- # Test typedef cases. There was a bug that cpp_style misidentified
- # typedef for pointer to function as C-style cast and produced
- # false-positive error messages.
- def test_typedef_for_pointer_to_function(self):
- self.assert_lint(
- 'typedef void (*Func)(int x);',
- '')
- self.assert_lint(
- 'typedef void (*Func)(int *x);',
- '')
- self.assert_lint(
- 'typedef void Func(int x);',
- '')
- self.assert_lint(
- 'typedef void Func(int *x);',
- '')
-
- def test_include_what_you_use_no_implementation_files(self):
- code = 'std::vector<int> foo;'
- self.assertEqual('Add #include <vector> for vector<>'
- ' [build/include_what_you_use] [4]',
- self.perform_include_what_you_use(code, 'foo.h'))
- self.assertEqual('',
- self.perform_include_what_you_use(code, 'foo.cpp'))
-
- def test_include_what_you_use(self):
- self.assert_include_what_you_use(
- '''#include <vector>
- std::vector<int> foo;
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <map>
- std::pair<int,int> foo;
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <multimap>
- std::pair<int,int> foo;
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <hash_map>
- std::pair<int,int> foo;
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <utility>
- std::pair<int,int> foo;
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <vector>
- DECLARE_string(foobar);
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <vector>
- DEFINE_string(foobar, "", "");
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <vector>
- std::pair<int,int> foo;
- ''',
- 'Add #include <utility> for pair<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- std::vector<int> foo;
- ''',
- 'Add #include <vector> for vector<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include <vector>
- std::set<int> foo;
- ''',
- 'Add #include <set> for set<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- hash_map<int, int> foobar;
- ''',
- 'Add #include <hash_map> for hash_map<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- bool foobar = std::less<int>(0,1);
- ''',
- 'Add #include <functional> for less<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- bool foobar = min<int>(0,1);
- ''',
- 'Add #include <algorithm> for min [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- 'void a(const string &foobar);',
- 'Add #include <string> for string [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- bool foobar = swap(0,1);
- ''',
- 'Add #include <algorithm> for swap [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- bool foobar = transform(a.begin(), a.end(), b.start(), Foo);
- ''',
- 'Add #include <algorithm> for transform '
- '[build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include "base/foobar.h"
- bool foobar = min_element(a.begin(), a.end());
- ''',
- 'Add #include <algorithm> for min_element '
- '[build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''foo->swap(0,1);
- foo.swap(0,1);
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include <string>
- void a(const std::multimap<int,string> &foobar);
- ''',
- 'Add #include <map> for multimap<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include <queue>
- void a(const std::priority_queue<int> &foobar);
- ''',
- '')
- self.assert_include_what_you_use(
- '''#include "base/basictypes.h"
- #include "base/port.h"
- #include <assert.h>
- #include <string>
- #include <vector>
- vector<string> hajoa;''', '')
- self.assert_include_what_you_use(
- '''#include <string>
- int i = numeric_limits<int>::max()
- ''',
- 'Add #include <limits> for numeric_limits<>'
- ' [build/include_what_you_use] [4]')
- self.assert_include_what_you_use(
- '''#include <limits>
- int i = numeric_limits<int>::max()
- ''',
- '')
-
- # Test the UpdateIncludeState code path.
- mock_header_contents = ['#include "blah/foo.h"', '#include "blah/bar.h"']
- message = self.perform_include_what_you_use(
- '#include "config.h"\n'
- '#include "blah/a.h"\n',
- filename='blah/a.cpp',
- io=MockIo(mock_header_contents))
- self.assertEqual(message, '')
-
- mock_header_contents = ['#include <set>']
- message = self.perform_include_what_you_use(
- '''#include "config.h"
- #include "blah/a.h"
-
- std::set<int> foo;''',
- filename='blah/a.cpp',
- io=MockIo(mock_header_contents))
- self.assertEqual(message, '')
-
- # If there's just a .cpp and the header can't be found then it's ok.
- message = self.perform_include_what_you_use(
- '''#include "config.h"
- #include "blah/a.h"
-
- std::set<int> foo;''',
- filename='blah/a.cpp')
- self.assertEqual(message, '')
-
- # Make sure we find the headers with relative paths.
- mock_header_contents = ['']
- message = self.perform_include_what_you_use(
- '''#include "config.h"
- #include "%s%sa.h"
-
- std::set<int> foo;''' % (os.path.basename(os.getcwd()), os.path.sep),
- filename='a.cpp',
- io=MockIo(mock_header_contents))
- self.assertEqual(message, 'Add #include <set> for set<> '
- '[build/include_what_you_use] [4]')
-
- def test_files_belong_to_same_module(self):
- f = cpp_style.files_belong_to_same_module
- self.assertEqual((True, ''), f('a.cpp', 'a.h'))
- self.assertEqual((True, ''), f('base/google.cpp', 'base/google.h'))
- self.assertEqual((True, ''), f('base/google_test.cpp', 'base/google.h'))
- self.assertEqual((True, ''),
- f('base/google_unittest.cpp', 'base/google.h'))
- self.assertEqual((True, ''),
- f('base/internal/google_unittest.cpp',
- 'base/public/google.h'))
- self.assertEqual((True, 'xxx/yyy/'),
- f('xxx/yyy/base/internal/google_unittest.cpp',
- 'base/public/google.h'))
- self.assertEqual((True, 'xxx/yyy/'),
- f('xxx/yyy/base/google_unittest.cpp',
- 'base/public/google.h'))
- self.assertEqual((True, ''),
- f('base/google_unittest.cpp', 'base/google-inl.h'))
- self.assertEqual((True, '/home/build/google3/'),
- f('/home/build/google3/base/google.cpp', 'base/google.h'))
-
- self.assertEqual((False, ''),
- f('/home/build/google3/base/google.cpp', 'basu/google.h'))
- self.assertEqual((False, ''), f('a.cpp', 'b.h'))
-
- def test_cleanse_line(self):
- self.assertEqual('int foo = 0; ',
- cpp_style.cleanse_comments('int foo = 0; // danger!'))
- self.assertEqual('int o = 0;',
- cpp_style.cleanse_comments('int /* foo */ o = 0;'))
- self.assertEqual('foo(int a, int b);',
- cpp_style.cleanse_comments('foo(int a /* abc */, int b);'))
- self.assertEqual('f(a, b);',
- cpp_style.cleanse_comments('f(a, /* name */ b);'))
- self.assertEqual('f(a, b);',
- cpp_style.cleanse_comments('f(a /* name */, b);'))
- self.assertEqual('f(a, b);',
- cpp_style.cleanse_comments('f(a, /* name */b);'))
-
- def test_multi_line_comments(self):
- # missing explicit is bad
- self.assert_multi_line_lint(
- r'''int a = 0;
- /* multi-liner
- class Foo {
- Foo(int f); // should cause a lint warning in code
- }
- */ ''',
- '')
- self.assert_multi_line_lint(
- '''\
- /* int a = 0; multi-liner
- static const int b = 0;''',
- ['Could not find end of multi-line comment'
- ' [readability/multiline_comment] [5]',
- 'Complex multi-line /*...*/-style comment found. '
- 'Lint may give bogus warnings. Consider replacing these with '
- '//-style comments, with #if 0...#endif, or with more clearly '
- 'structured multi-line comments. [readability/multiline_comment] [5]'])
- self.assert_multi_line_lint(r''' /* multi-line comment''',
- ['Could not find end of multi-line comment'
- ' [readability/multiline_comment] [5]',
- 'Complex multi-line /*...*/-style comment found. '
- 'Lint may give bogus warnings. Consider replacing these with '
- '//-style comments, with #if 0...#endif, or with more clearly '
- 'structured multi-line comments. [readability/multiline_comment] [5]'])
- self.assert_multi_line_lint(r''' // /* comment, but not multi-line''', '')
-
- def test_multiline_strings(self):
- multiline_string_error_message = (
- 'Multi-line string ("...") found. This lint script doesn\'t '
- 'do well with such strings, and may give bogus warnings. They\'re '
- 'ugly and unnecessary, and you should use concatenation instead".'
- ' [readability/multiline_string] [5]')
-
- file_path = 'mydir/foo.cpp'
-
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'cpp',
- ['const char* str = "This is a\\',
- ' multiline string.";'],
- error_collector)
- self.assertEqual(
- 2, # One per line.
- error_collector.result_list().count(multiline_string_error_message))
-
- # Test non-explicit single-argument constructors
- def test_explicit_single_argument_constructors(self):
- # missing explicit is bad
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(int f);
- };''',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]')
- # missing explicit is bad, even with whitespace
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo (int f);
- };''',
- ['Extra space before ( in function call [whitespace/parens] [4]',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]'])
- # missing explicit, with distracting comment, is still bad
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(int f); // simpler than Foo(blargh, blarg)
- };''',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]')
- # missing explicit, with qualified classname
- self.assert_multi_line_lint(
- '''\
- class Qualifier::AnotherOne::Foo {
- Foo(int f);
- };''',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]')
- # structs are caught as well.
- self.assert_multi_line_lint(
- '''\
- struct Foo {
- Foo(int f);
- };''',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]')
- # Templatized classes are caught as well.
- self.assert_multi_line_lint(
- '''\
- template<typename T> class Foo {
- Foo(int f);
- };''',
- 'Single-argument constructors should be marked explicit.'
- ' [runtime/explicit] [5]')
- # proper style is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- explicit Foo(int f);
- };''',
- '')
- # two argument constructor is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(int f, int b);
- };''',
- '')
- # two argument constructor, across two lines, is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(int f,
- int b);
- };''',
- '')
- # non-constructor (but similar name), is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- aFoo(int f);
- };''',
- '')
- # constructor with void argument is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(void);
- };''',
- '')
- # single argument method is okay
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Bar(int b);
- };''',
- '')
- # comments should be ignored
- self.assert_multi_line_lint(
- '''\
- class Foo {
- // Foo(int f);
- };''',
- '')
- # single argument function following class definition is okay
- # (okay, it's not actually valid, but we don't want a false positive)
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(int f, int b);
- };
- Foo(int f);''',
- '')
- # single argument function is okay
- self.assert_multi_line_lint(
- '''static Foo(int f);''',
- '')
- # single argument copy constructor is okay.
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(const Foo&);
- };''',
- '')
- self.assert_multi_line_lint(
- '''\
- class Foo {
- Foo(Foo&);
- };''',
- '')
-
- def test_slash_star_comment_on_single_line(self):
- self.assert_multi_line_lint(
- '''/* static */ Foo(int f);''',
- '')
- self.assert_multi_line_lint(
- '''/*/ static */ Foo(int f);''',
- '')
- self.assert_multi_line_lint(
- '''/*/ static Foo(int f);''',
- 'Could not find end of multi-line comment'
- ' [readability/multiline_comment] [5]')
- self.assert_multi_line_lint(
- ''' /*/ static Foo(int f);''',
- 'Could not find end of multi-line comment'
- ' [readability/multiline_comment] [5]')
-
- # Test suspicious usage of "if" like this:
- # if (a == b) {
- # DoSomething();
- # } if (a == c) { // Should be "else if".
- # DoSomething(); // This gets called twice if a == b && a == c.
- # }
- def test_suspicious_usage_of_if(self):
- self.assert_lint(
- ' if (a == b) {',
- '')
- self.assert_lint(
- ' } if (a == b) {',
- 'Did you mean "else if"? If not, start a new line for "if".'
- ' [readability/braces] [4]')
-
- # Test suspicious usage of memset. Specifically, a 0
- # as the final argument is almost certainly an error.
- def test_suspicious_usage_of_memset(self):
- # Normal use is okay.
- self.assert_lint(
- ' memset(buf, 0, sizeof(buf))',
- '')
-
- # A 0 as the final argument is almost certainly an error.
- self.assert_lint(
- ' memset(buf, sizeof(buf), 0)',
- 'Did you mean "memset(buf, 0, sizeof(buf))"?'
- ' [runtime/memset] [4]')
- self.assert_lint(
- ' memset(buf, xsize * ysize, 0)',
- 'Did you mean "memset(buf, 0, xsize * ysize)"?'
- ' [runtime/memset] [4]')
-
- # There is legitimate test code that uses this form.
- # This is okay since the second argument is a literal.
- self.assert_lint(
- " memset(buf, 'y', 0)",
- '')
- self.assert_lint(
- ' memset(buf, 4, 0)',
- '')
- self.assert_lint(
- ' memset(buf, -1, 0)',
- '')
- self.assert_lint(
- ' memset(buf, 0xF1, 0)',
- '')
- self.assert_lint(
- ' memset(buf, 0xcd, 0)',
- '')
-
- def test_check_posix_threading(self):
- self.assert_lint('sctime_r()', '')
- self.assert_lint('strtok_r()', '')
- self.assert_lint(' strtok_r(foo, ba, r)', '')
- self.assert_lint('brand()', '')
- self.assert_lint('_rand()', '')
- self.assert_lint('.rand()', '')
- self.assert_lint('>rand()', '')
- self.assert_lint('rand()',
- 'Consider using rand_r(...) instead of rand(...)'
- ' for improved thread safety.'
- ' [runtime/threadsafe_fn] [2]')
- self.assert_lint('strtok()',
- 'Consider using strtok_r(...) '
- 'instead of strtok(...)'
- ' for improved thread safety.'
- ' [runtime/threadsafe_fn] [2]')
-
- # Test potential format string bugs like printf(foo).
- def test_format_strings(self):
- self.assert_lint('printf("foo")', '')
- self.assert_lint('printf("foo: %s", foo)', '')
- self.assert_lint('DocidForPrintf(docid)', '') # Should not trigger.
- self.assert_lint(
- 'printf(foo)',
- 'Potential format string bug. Do printf("%s", foo) instead.'
- ' [runtime/printf] [4]')
- self.assert_lint(
- 'printf(foo.c_str())',
- 'Potential format string bug. '
- 'Do printf("%s", foo.c_str()) instead.'
- ' [runtime/printf] [4]')
- self.assert_lint(
- 'printf(foo->c_str())',
- 'Potential format string bug. '
- 'Do printf("%s", foo->c_str()) instead.'
- ' [runtime/printf] [4]')
- self.assert_lint(
- 'StringPrintf(foo)',
- 'Potential format string bug. Do StringPrintf("%s", foo) instead.'
- ''
- ' [runtime/printf] [4]')
-
- # Variable-length arrays are not permitted.
- def test_variable_length_array_detection(self):
- errmsg = ('Do not use variable-length arrays. Use an appropriately named '
- "('k' followed by CamelCase) compile-time constant for the size."
- ' [runtime/arrays] [1]')
-
- self.assert_lint('int a[any_old_variable];', errmsg)
- self.assert_lint('int doublesize[some_var * 2];', errmsg)
- self.assert_lint('int a[afunction()];', errmsg)
- self.assert_lint('int a[function(kMaxFooBars)];', errmsg)
- self.assert_lint('bool aList[items_->size()];', errmsg)
- self.assert_lint('namespace::Type buffer[len+1];', errmsg)
-
- self.assert_lint('int a[64];', '')
- self.assert_lint('int a[0xFF];', '')
- self.assert_lint('int first[256], second[256];', '')
- self.assert_lint('int arrayName[kCompileTimeConstant];', '')
- self.assert_lint('char buf[somenamespace::kBufSize];', '')
- self.assert_lint('int arrayName[ALL_CAPS];', '')
- self.assert_lint('AClass array1[foo::bar::ALL_CAPS];', '')
- self.assert_lint('int a[kMaxStrLen + 1];', '')
- self.assert_lint('int a[sizeof(foo)];', '')
- self.assert_lint('int a[sizeof(*foo)];', '')
- self.assert_lint('int a[sizeof foo];', '')
- self.assert_lint('int a[sizeof(struct Foo)];', '')
- self.assert_lint('int a[128 - sizeof(const bar)];', '')
- self.assert_lint('int a[(sizeof(foo) * 4)];', '')
- self.assert_lint('int a[(arraysize(fixed_size_array)/2) << 1];', 'Missing spaces around / [whitespace/operators] [3]')
- self.assert_lint('delete a[some_var];', '')
- self.assert_lint('return a[some_var];', '')
-
- # Brace usage
- def test_braces(self):
- # Braces shouldn't be followed by a ; unless they're defining a struct
- # or initializing an array
- self.assert_lint('int a[3] = { 1, 2, 3 };', '')
- self.assert_lint(
- '''\
- const int foo[] =
- {1, 2, 3 };''',
- '')
- # For single line, unmatched '}' with a ';' is ignored (not enough context)
- self.assert_multi_line_lint(
- '''\
- int a[3] = { 1,
- 2,
- 3 };''',
- '')
- self.assert_multi_line_lint(
- '''\
- int a[2][3] = { { 1, 2 },
- { 3, 4 } };''',
- '')
- self.assert_multi_line_lint(
- '''\
- int a[2][3] =
- { { 1, 2 },
- { 3, 4 } };''',
- '')
-
- # CHECK/EXPECT_TRUE/EXPECT_FALSE replacements
- def test_check_check(self):
- self.assert_lint('CHECK(x == 42)',
- 'Consider using CHECK_EQ instead of CHECK(a == b)'
- ' [readability/check] [2]')
- self.assert_lint('CHECK(x != 42)',
- 'Consider using CHECK_NE instead of CHECK(a != b)'
- ' [readability/check] [2]')
- self.assert_lint('CHECK(x >= 42)',
- 'Consider using CHECK_GE instead of CHECK(a >= b)'
- ' [readability/check] [2]')
- self.assert_lint('CHECK(x > 42)',
- 'Consider using CHECK_GT instead of CHECK(a > b)'
- ' [readability/check] [2]')
- self.assert_lint('CHECK(x <= 42)',
- 'Consider using CHECK_LE instead of CHECK(a <= b)'
- ' [readability/check] [2]')
- self.assert_lint('CHECK(x < 42)',
- 'Consider using CHECK_LT instead of CHECK(a < b)'
- ' [readability/check] [2]')
-
- self.assert_lint('DCHECK(x == 42)',
- 'Consider using DCHECK_EQ instead of DCHECK(a == b)'
- ' [readability/check] [2]')
- self.assert_lint('DCHECK(x != 42)',
- 'Consider using DCHECK_NE instead of DCHECK(a != b)'
- ' [readability/check] [2]')
- self.assert_lint('DCHECK(x >= 42)',
- 'Consider using DCHECK_GE instead of DCHECK(a >= b)'
- ' [readability/check] [2]')
- self.assert_lint('DCHECK(x > 42)',
- 'Consider using DCHECK_GT instead of DCHECK(a > b)'
- ' [readability/check] [2]')
- self.assert_lint('DCHECK(x <= 42)',
- 'Consider using DCHECK_LE instead of DCHECK(a <= b)'
- ' [readability/check] [2]')
- self.assert_lint('DCHECK(x < 42)',
- 'Consider using DCHECK_LT instead of DCHECK(a < b)'
- ' [readability/check] [2]')
-
- self.assert_lint(
- 'EXPECT_TRUE("42" == x)',
- 'Consider using EXPECT_EQ instead of EXPECT_TRUE(a == b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE("42" != x)',
- 'Consider using EXPECT_NE instead of EXPECT_TRUE(a != b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE(+42 >= x)',
- 'Consider using EXPECT_GE instead of EXPECT_TRUE(a >= b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE_M(-42 > x)',
- 'Consider using EXPECT_GT_M instead of EXPECT_TRUE_M(a > b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE_M(42U <= x)',
- 'Consider using EXPECT_LE_M instead of EXPECT_TRUE_M(a <= b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE_M(42L < x)',
- 'Consider using EXPECT_LT_M instead of EXPECT_TRUE_M(a < b)'
- ' [readability/check] [2]')
-
- self.assert_lint(
- 'EXPECT_FALSE(x == 42)',
- 'Consider using EXPECT_NE instead of EXPECT_FALSE(a == b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_FALSE(x != 42)',
- 'Consider using EXPECT_EQ instead of EXPECT_FALSE(a != b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_FALSE(x >= 42)',
- 'Consider using EXPECT_LT instead of EXPECT_FALSE(a >= b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'ASSERT_FALSE(x > 42)',
- 'Consider using ASSERT_LE instead of ASSERT_FALSE(a > b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'ASSERT_FALSE(x <= 42)',
- 'Consider using ASSERT_GT instead of ASSERT_FALSE(a <= b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'ASSERT_FALSE_M(x < 42)',
- 'Consider using ASSERT_GE_M instead of ASSERT_FALSE_M(a < b)'
- ' [readability/check] [2]')
-
- self.assert_lint('CHECK(some_iterator == obj.end())', '')
- self.assert_lint('EXPECT_TRUE(some_iterator == obj.end())', '')
- self.assert_lint('EXPECT_FALSE(some_iterator == obj.end())', '')
-
- self.assert_lint('CHECK(CreateTestFile(dir, (1 << 20)));', '')
- self.assert_lint('CHECK(CreateTestFile(dir, (1 >> 20)));', '')
-
- self.assert_lint('CHECK(x<42)',
- ['Missing spaces around <'
- ' [whitespace/operators] [3]',
- 'Consider using CHECK_LT instead of CHECK(a < b)'
- ' [readability/check] [2]'])
- self.assert_lint('CHECK(x>42)',
- 'Consider using CHECK_GT instead of CHECK(a > b)'
- ' [readability/check] [2]')
-
- self.assert_lint(
- ' EXPECT_TRUE(42 < x) // Random comment.',
- 'Consider using EXPECT_LT instead of EXPECT_TRUE(a < b)'
- ' [readability/check] [2]')
- self.assert_lint(
- 'EXPECT_TRUE( 42 < x )',
- ['Extra space after ( in function call'
- ' [whitespace/parens] [4]',
- 'Consider using EXPECT_LT instead of EXPECT_TRUE(a < b)'
- ' [readability/check] [2]'])
- self.assert_lint(
- 'CHECK("foo" == "foo")',
- 'Consider using CHECK_EQ instead of CHECK(a == b)'
- ' [readability/check] [2]')
-
- self.assert_lint('CHECK_EQ("foo", "foo")', '')
-
- def test_brace_at_begin_of_line(self):
- self.assert_lint('{',
- 'This { should be at the end of the previous line'
- ' [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- '#endif\n'
- '{\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition) {',
- '')
- self.assert_multi_line_lint(
- ' MACRO1(macroArg) {',
- '')
- self.assert_multi_line_lint(
- 'ACCESSOR_GETTER(MessageEventPorts) {',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'int foo() {',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'int foo() const {',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'int foo() const OVERRIDE {',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'int foo() OVERRIDE {',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'int foo() const\n'
- '{\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'int foo() OVERRIDE\n'
- '{\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition\n'
- ' && condition2\n'
- ' && condition3) {\n'
- '}\n',
- '')
-
- def test_mismatching_spaces_in_parens(self):
- self.assert_lint('if (foo ) {', 'Extra space before ) in if'
- ' [whitespace/parens] [5]')
- self.assert_lint('switch ( foo) {', 'Extra space after ( in switch'
- ' [whitespace/parens] [5]')
- self.assert_lint('for (foo; ba; bar ) {', 'Extra space before ) in for'
- ' [whitespace/parens] [5]')
- self.assert_lint('for ((foo); (ba); (bar) ) {', 'Extra space before ) in for'
- ' [whitespace/parens] [5]')
- self.assert_lint('for (; foo; bar) {', '')
- self.assert_lint('for (; (foo); (bar)) {', '')
- self.assert_lint('for ( ; foo; bar) {', '')
- self.assert_lint('for ( ; (foo); (bar)) {', '')
- self.assert_lint('for ( ; foo; bar ) {', 'Extra space before ) in for'
- ' [whitespace/parens] [5]')
- self.assert_lint('for ( ; (foo); (bar) ) {', 'Extra space before ) in for'
- ' [whitespace/parens] [5]')
- self.assert_lint('for (foo; bar; ) {', '')
- self.assert_lint('for ((foo); (bar); ) {', '')
- self.assert_lint('foreach (foo, foos ) {', 'Extra space before ) in foreach'
- ' [whitespace/parens] [5]')
- self.assert_lint('foreach ( foo, foos) {', 'Extra space after ( in foreach'
- ' [whitespace/parens] [5]')
- self.assert_lint('while ( foo) {', 'Extra space after ( in while'
- ' [whitespace/parens] [5]')
-
- def test_spacing_for_fncall(self):
- self.assert_lint('if (foo) {', '')
- self.assert_lint('for (foo;bar;baz) {', '')
- self.assert_lint('foreach (foo, foos) {', '')
- self.assert_lint('while (foo) {', '')
- self.assert_lint('switch (foo) {', '')
- self.assert_lint('new (RenderArena()) RenderInline(document())', '')
- self.assert_lint('foo( bar)', 'Extra space after ( in function call'
- ' [whitespace/parens] [4]')
- self.assert_lint('foobar( \\', '')
- self.assert_lint('foobar( \\', '')
- self.assert_lint('( a + b)', 'Extra space after ('
- ' [whitespace/parens] [2]')
- self.assert_lint('((a+b))', '')
- self.assert_lint('foo (foo)', 'Extra space before ( in function call'
- ' [whitespace/parens] [4]')
- self.assert_lint('#elif (foo(bar))', '')
- self.assert_lint('#elif (foo(bar) && foo(baz))', '')
- self.assert_lint('typedef foo (*foo)(foo)', '')
- self.assert_lint('typedef foo (*foo12bar_)(foo)', '')
- self.assert_lint('typedef foo (Foo::*bar)(foo)', '')
- self.assert_lint('foo (Foo::*bar)(',
- 'Extra space before ( in function call'
- ' [whitespace/parens] [4]')
- self.assert_lint('typedef foo (Foo::*bar)(', '')
- self.assert_lint('(foo)(bar)', '')
- self.assert_lint('Foo (*foo)(bar)', '')
- self.assert_lint('Foo (*foo)(Bar bar,', '')
- self.assert_lint('char (*p)[sizeof(foo)] = &foo', '')
- self.assert_lint('char (&ref)[sizeof(foo)] = &foo', '')
- self.assert_lint('const char32 (*table[])[6];', '')
-
- def test_spacing_before_braces(self):
- self.assert_lint('if (foo){', 'Missing space before {'
- ' [whitespace/braces] [5]')
- self.assert_lint('for{', 'Missing space before {'
- ' [whitespace/braces] [5]')
- self.assert_lint('for {', '')
- self.assert_lint('EXPECT_DEBUG_DEATH({', '')
-
- def test_spacing_between_braces(self):
- self.assert_lint(' { }', '')
- self.assert_lint(' {}', 'Missing space inside { }. [whitespace/braces] [5]')
- self.assert_lint(' { }', 'Too many spaces inside { }. [whitespace/braces] [5]')
-
- def test_spacing_around_else(self):
- self.assert_lint('}else {', 'Missing space before else'
- ' [whitespace/braces] [5]')
- self.assert_lint('} else{', 'Missing space before {'
- ' [whitespace/braces] [5]')
- self.assert_lint('} else {', '')
- self.assert_lint('} else if', '')
-
- def test_spacing_for_binary_ops(self):
- self.assert_lint('if (foo<=bar) {', 'Missing spaces around <='
- ' [whitespace/operators] [3]')
- self.assert_lint('if (foo<bar) {', 'Missing spaces around <'
- ' [whitespace/operators] [3]')
- self.assert_lint('if (foo<bar->baz) {', 'Missing spaces around <'
- ' [whitespace/operators] [3]')
- self.assert_lint('if (foo<bar->bar) {', 'Missing spaces around <'
- ' [whitespace/operators] [3]')
- self.assert_lint('typedef hash_map<Foo, Bar', 'Missing spaces around <'
- ' [whitespace/operators] [3]')
- self.assert_lint('typedef hash_map<FoooooType, BaaaaarType,', '')
- self.assert_lint('a<Foo> t+=b;', 'Missing spaces around +='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo> t-=b;', 'Missing spaces around -='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t*=b;', 'Missing spaces around *='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t/=b;', 'Missing spaces around /='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t|=b;', 'Missing spaces around |='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t&=b;', 'Missing spaces around &='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t<<=b;', 'Missing spaces around <<='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t>>=b;', 'Missing spaces around >>='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t>>=&b|c;', 'Missing spaces around >>='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t<<=*b/c;', 'Missing spaces around <<='
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo> t -= b;', '')
- self.assert_lint('a<Foo> t += b;', '')
- self.assert_lint('a<Foo*> t *= b;', '')
- self.assert_lint('a<Foo*> t /= b;', '')
- self.assert_lint('a<Foo*> t |= b;', '')
- self.assert_lint('a<Foo*> t &= b;', '')
- self.assert_lint('a<Foo*> t <<= b;', '')
- self.assert_lint('a<Foo*> t >>= b;', '')
- self.assert_lint('a<Foo*> t >>= &b|c;', 'Missing spaces around |'
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t <<= *b/c;', 'Missing spaces around /'
- ' [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t <<= b/c; //Test', [
- 'Should have a space between // and comment '
- '[whitespace/comments] [4]', 'Missing'
- ' spaces around / [whitespace/operators] [3]'])
- self.assert_lint('a<Foo*> t <<= b||c; //Test', ['One space before end'
- ' of line comments [whitespace/comments] [5]',
- 'Should have a space between // and comment '
- '[whitespace/comments] [4]',
- 'Missing spaces around || [whitespace/operators] [3]'])
- self.assert_lint('a<Foo*> t <<= b&&c; // Test', 'Missing spaces around'
- ' && [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t <<= b&&&c; // Test', 'Missing spaces around'
- ' && [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t <<= b&&*c; // Test', 'Missing spaces around'
- ' && [whitespace/operators] [3]')
- self.assert_lint('a<Foo*> t <<= b && *c; // Test', '')
- self.assert_lint('a<Foo*> t <<= b && &c; // Test', '')
- self.assert_lint('a<Foo*> t <<= b || &c; /*Test', 'Complex multi-line '
- '/*...*/-style comment found. Lint may give bogus '
- 'warnings. Consider replacing these with //-style'
- ' comments, with #if 0...#endif, or with more clearly'
- ' structured multi-line comments. [readability/multiline_comment] [5]')
- self.assert_lint('a<Foo&> t <<= &b | &c;', '')
- self.assert_lint('a<Foo*> t <<= &b & &c; // Test', '')
- self.assert_lint('a<Foo*> t <<= *b / &c; // Test', '')
- self.assert_lint('if (a=b == 1)', 'Missing spaces around = [whitespace/operators] [4]')
- self.assert_lint('a = 1<<20', 'Missing spaces around << [whitespace/operators] [3]')
- self.assert_lint('if (a = b == 1)', '')
- self.assert_lint('a = 1 << 20', '')
- self.assert_multi_line_lint('#include <sys/io.h>\n', '')
- self.assert_multi_line_lint('#import <foo/bar.h>\n', '')
-
- def test_operator_methods(self):
- self.assert_lint('String operator+(const String&, const String&);', '')
- self.assert_lint('String operator/(const String&, const String&);', '')
- self.assert_lint('bool operator==(const String&, const String&);', '')
- self.assert_lint('String& operator-=(const String&, const String&);', '')
- self.assert_lint('String& operator+=(const String&, const String&);', '')
- self.assert_lint('String& operator*=(const String&, const String&);', '')
- self.assert_lint('String& operator%=(const String&, const String&);', '')
- self.assert_lint('String& operator&=(const String&, const String&);', '')
- self.assert_lint('String& operator<<=(const String&, const String&);', '')
- self.assert_lint('String& operator>>=(const String&, const String&);', '')
- self.assert_lint('String& operator|=(const String&, const String&);', '')
- self.assert_lint('String& operator^=(const String&, const String&);', '')
-
- def test_spacing_before_last_semicolon(self):
- self.assert_lint('call_function() ;',
- 'Extra space before last semicolon. If this should be an '
- 'empty statement, use { } instead.'
- ' [whitespace/semicolon] [5]')
- self.assert_lint('while (true) ;',
- 'Extra space before last semicolon. If this should be an '
- 'empty statement, use { } instead.'
- ' [whitespace/semicolon] [5]')
- self.assert_lint('default:;',
- 'Semicolon defining empty statement. Use { } instead.'
- ' [whitespace/semicolon] [5]')
- self.assert_lint(' ;',
- 'Line contains only semicolon. If this should be an empty '
- 'statement, use { } instead.'
- ' [whitespace/semicolon] [5]')
- self.assert_lint('for (int i = 0; ;', '')
-
- # Static or global STL strings.
- def test_static_or_global_stlstrings(self):
- self.assert_lint('string foo;',
- 'For a static/global string constant, use a C style '
- 'string instead: "char foo[]".'
- ' [runtime/string] [4]')
- self.assert_lint('string kFoo = "hello"; // English',
- 'For a static/global string constant, use a C style '
- 'string instead: "char kFoo[]".'
- ' [runtime/string] [4]')
- self.assert_lint('static string foo;',
- 'For a static/global string constant, use a C style '
- 'string instead: "static char foo[]".'
- ' [runtime/string] [4]')
- self.assert_lint('static const string foo;',
- 'For a static/global string constant, use a C style '
- 'string instead: "static const char foo[]".'
- ' [runtime/string] [4]')
- self.assert_lint('string Foo::bar;',
- 'For a static/global string constant, use a C style '
- 'string instead: "char Foo::bar[]".'
- ' [runtime/string] [4]')
- # Rare case.
- self.assert_lint('string foo("foobar");',
- 'For a static/global string constant, use a C style '
- 'string instead: "char foo[]".'
- ' [runtime/string] [4]')
- # Should not catch local or member variables.
- self.assert_lint(' string foo', '')
- # Should not catch functions.
- self.assert_lint('string EmptyString() { return ""; }', '')
- self.assert_lint('string EmptyString () { return ""; }', '')
- self.assert_lint('string VeryLongNameFunctionSometimesEndsWith(\n'
- ' VeryLongNameType veryLongNameVariable) { }', '')
- self.assert_lint('template<>\n'
- 'string FunctionTemplateSpecialization<SomeType>(\n'
- ' int x) { return ""; }', '')
- self.assert_lint('template<>\n'
- 'string FunctionTemplateSpecialization<vector<A::B>* >(\n'
- ' int x) { return ""; }', '')
-
- # should not catch methods of template classes.
- self.assert_lint('string Class<Type>::Method() const\n'
- '{\n'
- ' return "";\n'
- '}\n', '')
- self.assert_lint('string Class<Type>::Method(\n'
- ' int arg) const\n'
- '{\n'
- ' return "";\n'
- '}\n', '')
-
- def test_no_spaces_in_function_calls(self):
- self.assert_lint('TellStory(1, 3);',
- '')
- self.assert_lint('TellStory(1, 3 );',
- 'Extra space before )'
- ' [whitespace/parens] [2]')
- self.assert_lint('TellStory(1 /* wolf */, 3 /* pigs */);',
- '')
- self.assert_multi_line_lint('#endif\n );',
- '')
-
- def test_one_spaces_between_code_and_comments(self):
- self.assert_lint('} // namespace foo',
- '')
- self.assert_lint('}// namespace foo',
- 'One space before end of line comments'
- ' [whitespace/comments] [5]')
- self.assert_lint('printf("foo"); // Outside quotes.',
- '')
- self.assert_lint('int i = 0; // Having one space is fine.','')
- self.assert_lint('int i = 0; // Having two spaces is bad.',
- 'One space before end of line comments'
- ' [whitespace/comments] [5]')
- self.assert_lint('int i = 0; // Having three spaces is bad.',
- 'One space before end of line comments'
- ' [whitespace/comments] [5]')
- self.assert_lint('// Top level comment', '')
- self.assert_lint(' // Line starts with four spaces.', '')
- self.assert_lint('foo();\n'
- '{ // A scope is opening.', '')
- self.assert_lint(' foo();\n'
- ' { // An indented scope is opening.', '')
- self.assert_lint('if (foo) { // not a pure scope',
- '')
- self.assert_lint('printf("// In quotes.")', '')
- self.assert_lint('printf("\\"%s // In quotes.")', '')
- self.assert_lint('printf("%s", "// In quotes.")', '')
-
- def test_one_spaces_after_punctuation_in_comments(self):
- self.assert_lint('int a; // This is a sentence.',
- '')
- self.assert_lint('int a; // This is a sentence. ',
- 'Line ends in whitespace. Consider deleting these extra spaces. [whitespace/end_of_line] [4]')
- self.assert_lint('int a; // This is a sentence. This is a another sentence.',
- '')
- self.assert_lint('int a; // This is a sentence. This is a another sentence.',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
- self.assert_lint('int a; // This is a sentence! This is a another sentence.',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
- self.assert_lint('int a; // Why did I write this? This is a another sentence.',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
- self.assert_lint('int a; // Elementary, my dear.',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
- self.assert_lint('int a; // The following should be clear: Is it?',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
- self.assert_lint('int a; // Look at the follow semicolon; I hope this gives an error.',
- 'Should have only a single space after a punctuation in a comment. [whitespace/comments] [5]')
-
- def test_space_after_comment_marker(self):
- self.assert_lint('//', '')
- self.assert_lint('//x', 'Should have a space between // and comment'
- ' [whitespace/comments] [4]')
- self.assert_lint('// x', '')
- self.assert_lint('//----', '')
- self.assert_lint('//====', '')
- self.assert_lint('//////', '')
- self.assert_lint('////// x', '')
- self.assert_lint('/// x', '')
- self.assert_lint('////x', 'Should have a space between // and comment'
- ' [whitespace/comments] [4]')
-
- def test_newline_at_eof(self):
- def do_test(self, data, is_missing_eof):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp', data.split('\n'),
- error_collector)
- # The warning appears only once.
- self.assertEqual(
- int(is_missing_eof),
- error_collector.results().count(
- 'Could not find a newline character at the end of the file.'
- ' [whitespace/ending_newline] [5]'))
-
- do_test(self, '// Newline\n// at EOF\n', False)
- do_test(self, '// No newline\n// at EOF', True)
-
- def test_invalid_utf8(self):
- def do_test(self, raw_bytes, has_invalid_utf8):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp',
- unicode(raw_bytes, 'utf8', 'replace').split('\n'),
- error_collector)
- # The warning appears only once.
- self.assertEqual(
- int(has_invalid_utf8),
- error_collector.results().count(
- 'Line contains invalid UTF-8'
- ' (or Unicode replacement character).'
- ' [readability/utf8] [5]'))
-
- do_test(self, 'Hello world\n', False)
- do_test(self, '\xe9\x8e\xbd\n', False)
- do_test(self, '\xe9x\x8e\xbd\n', True)
- # This is the encoding of the replacement character itself (which
- # you can see by evaluating codecs.getencoder('utf8')(u'\ufffd')).
- do_test(self, '\xef\xbf\xbd\n', True)
-
- def test_is_blank_line(self):
- self.assertTrue(cpp_style.is_blank_line(''))
- self.assertTrue(cpp_style.is_blank_line(' '))
- self.assertTrue(cpp_style.is_blank_line(' \t\r\n'))
- self.assertTrue(not cpp_style.is_blank_line('int a;'))
- self.assertTrue(not cpp_style.is_blank_line('{'))
-
- def test_blank_lines_check(self):
- self.assert_blank_lines_check(['{\n', '\n', '\n', '}\n'], 1, 1)
- self.assert_blank_lines_check([' if (foo) {\n', '\n', ' }\n'], 1, 1)
- self.assert_blank_lines_check(
- ['\n', '// {\n', '\n', '\n', '// Comment\n', '{\n', '}\n'], 0, 0)
- self.assert_blank_lines_check(['\n', 'run("{");\n', '\n'], 0, 0)
- self.assert_blank_lines_check(['\n', ' if (foo) { return 0; }\n', '\n'], 0, 0)
-
- def test_allow_blank_line_before_closing_namespace(self):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp',
- ['namespace {', '', '} // namespace'],
- error_collector)
- self.assertEqual(0, error_collector.results().count(
- 'Blank line at the end of a code block. Is this needed?'
- ' [whitespace/blank_line] [3]'))
-
- def test_allow_blank_line_before_if_else_chain(self):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp',
- ['if (hoge) {',
- '', # No warning
- '} else if (piyo) {',
- '', # No warning
- '} else if (piyopiyo) {',
- ' hoge = true;', # No warning
- '} else {',
- '', # Warning on this line
- '}'],
- error_collector)
- self.assertEqual(1, error_collector.results().count(
- 'Blank line at the end of a code block. Is this needed?'
- ' [whitespace/blank_line] [3]'))
-
- def test_else_on_same_line_as_closing_braces(self):
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('foo.cpp', 'cpp',
- ['if (hoge) {',
- '',
- '}',
- ' else {' # Warning on this line
- '',
- '}'],
- error_collector)
- self.assertEqual(1, error_collector.results().count(
- 'An else should appear on the same line as the preceding }'
- ' [whitespace/newline] [4]'))
-
- def test_else_clause_not_on_same_line_as_else(self):
- self.assert_lint(' else DoSomethingElse();',
- 'Else clause should never be on same line as else '
- '(use 2 lines) [whitespace/newline] [4]')
- self.assert_lint(' else ifDoSomethingElse();',
- 'Else clause should never be on same line as else '
- '(use 2 lines) [whitespace/newline] [4]')
- self.assert_lint(' else if (blah) {', '')
- self.assert_lint(' variable_ends_in_else = true;', '')
-
- def test_comma(self):
- self.assert_lint('a = f(1,2);',
- 'Missing space after , [whitespace/comma] [3]')
- self.assert_lint('int tmp=a,a=b,b=tmp;',
- ['Missing spaces around = [whitespace/operators] [4]',
- 'Missing space after , [whitespace/comma] [3]'])
- self.assert_lint('f(a, /* name */ b);', '')
- self.assert_lint('f(a, /* name */b);', '')
-
- def test_declaration(self):
- self.assert_lint('int a;', '')
- self.assert_lint('int a;', 'Extra space between int and a [whitespace/declaration] [3]')
- self.assert_lint('int* a;', 'Extra space between int* and a [whitespace/declaration] [3]')
- self.assert_lint('else if { }', '')
- self.assert_lint('else if { }', 'Extra space between else and if [whitespace/declaration] [3]')
-
- def test_pointer_reference_marker_location(self):
- self.assert_lint('int* b;', '', 'foo.cpp')
- self.assert_lint('int *b;',
- 'Declaration has space between type name and * in int *b [whitespace/declaration] [3]',
- 'foo.cpp')
- self.assert_lint('return *b;', '', 'foo.cpp')
- self.assert_lint('delete *b;', '', 'foo.cpp')
- self.assert_lint('int *b;', '', 'foo.c')
- self.assert_lint('int* b;',
- 'Declaration has space between * and variable name in int* b [whitespace/declaration] [3]',
- 'foo.c')
- self.assert_lint('int& b;', '', 'foo.cpp')
- self.assert_lint('int &b;',
- 'Declaration has space between type name and & in int &b [whitespace/declaration] [3]',
- 'foo.cpp')
- self.assert_lint('return &b;', '', 'foo.cpp')
-
- def test_indent(self):
- self.assert_lint('static int noindent;', '')
- self.assert_lint(' int fourSpaceIndent;', '')
- self.assert_lint(' int oneSpaceIndent;',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_lint(' int threeSpaceIndent;',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_lint(' char* oneSpaceIndent = "public:";',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_lint(' public:',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_lint(' public:',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_lint(' public:',
- 'Weird number of spaces at line-start. '
- 'Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_multi_line_lint(
- 'class Foo {\n'
- 'public:\n'
- ' enum Bar {\n'
- ' Alpha,\n'
- ' Beta,\n'
- '#if ENABLED_BETZ\n'
- ' Charlie,\n'
- '#endif\n'
- ' };\n'
- '};',
- '')
-
- def test_not_alabel(self):
- self.assert_lint('MyVeryLongNamespace::MyVeryLongClassName::', '')
-
- def test_tab(self):
- self.assert_lint('\tint a;',
- 'Tab found; better to use spaces [whitespace/tab] [1]')
- self.assert_lint('int a = 5;\t// set a to 5',
- 'Tab found; better to use spaces [whitespace/tab] [1]')
-
- def test_unnamed_namespaces_in_headers(self):
- self.assert_language_rules_check(
- 'foo.h', 'namespace {',
- 'Do not use unnamed namespaces in header files. See'
- ' http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml#Namespaces'
- ' for more information. [build/namespaces] [4]')
- # namespace registration macros are OK.
- self.assert_language_rules_check('foo.h', 'namespace { \\', '')
- # named namespaces are OK.
- self.assert_language_rules_check('foo.h', 'namespace foo {', '')
- self.assert_language_rules_check('foo.h', 'namespace foonamespace {', '')
- self.assert_language_rules_check('foo.cpp', 'namespace {', '')
- self.assert_language_rules_check('foo.cpp', 'namespace foo {', '')
-
- def test_build_class(self):
- # Test that the linter can parse to the end of class definitions,
- # and that it will report when it can't.
- # Use multi-line linter because it performs the ClassState check.
- self.assert_multi_line_lint(
- 'class Foo {',
- 'Failed to find complete declaration of class Foo'
- ' [build/class] [5]')
- # Don't warn on forward declarations of various types.
- self.assert_multi_line_lint(
- 'class Foo;',
- '')
- self.assert_multi_line_lint(
- '''\
- struct Foo*
- foo = NewFoo();''',
- '')
- # Here is an example where the linter gets confused, even though
- # the code doesn't violate the style guide.
- self.assert_multi_line_lint(
- 'class Foo\n'
- '#ifdef DERIVE_FROM_GOO\n'
- ' : public Goo {\n'
- '#else\n'
- ' : public Hoo {\n'
- '#endif\n'
- '};',
- 'Failed to find complete declaration of class Foo'
- ' [build/class] [5]')
-
- def test_build_end_comment(self):
- # The crosstool compiler we currently use will fail to compile the
- # code in this test, so we might consider removing the lint check.
- self.assert_lint('#endif Not a comment',
- 'Uncommented text after #endif is non-standard.'
- ' Use a comment.'
- ' [build/endif_comment] [5]')
-
- def test_build_forward_decl(self):
- # The crosstool compiler we currently use will fail to compile the
- # code in this test, so we might consider removing the lint check.
- self.assert_lint('class Foo::Goo;',
- 'Inner-style forward declarations are invalid.'
- ' Remove this line.'
- ' [build/forward_decl] [5]')
-
- def test_build_header_guard(self):
- file_path = 'mydir/Foo.h'
-
- # We can't rely on our internal stuff to get a sane path on the open source
- # side of things, so just parse out the suggested header guard. This
- # doesn't allow us to test the suggested header guard, but it does let us
- # test all the other header tests.
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h', [], error_collector)
- expected_guard = ''
- matcher = re.compile(
- 'No \#ifndef header guard found\, suggested CPP variable is\: ([A-Za-z_0-9]+) ')
- for error in error_collector.result_list():
- matches = matcher.match(error)
- if matches:
- expected_guard = matches.group(1)
- break
-
- # Make sure we extracted something for our header guard.
- self.assertNotEqual(expected_guard, '')
-
- # Wrong guard
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h',
- ['#ifndef FOO_H', '#define FOO_H'], error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- '#ifndef header guard has wrong style, please use: %s'
- ' [build/header_guard] [5]' % expected_guard),
- error_collector.result_list())
-
- # No define
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h',
- ['#ifndef %s' % expected_guard], error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- 'No #ifndef header guard found, suggested CPP variable is: %s'
- ' [build/header_guard] [5]' % expected_guard),
- error_collector.result_list())
-
- # Mismatched define
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h',
- ['#ifndef %s' % expected_guard,
- '#define FOO_H'],
- error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- 'No #ifndef header guard found, suggested CPP variable is: %s'
- ' [build/header_guard] [5]' % expected_guard),
- error_collector.result_list())
-
- # No header guard errors
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h',
- ['#ifndef %s' % expected_guard,
- '#define %s' % expected_guard,
- '#endif // %s' % expected_guard],
- error_collector)
- for line in error_collector.result_list():
- if line.find('build/header_guard') != -1:
- self.fail('Unexpected error: %s' % line)
-
- # Completely incorrect header guard
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'h',
- ['#ifndef FOO',
- '#define FOO',
- '#endif // FOO'],
- error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- '#ifndef header guard has wrong style, please use: %s'
- ' [build/header_guard] [5]' % expected_guard),
- error_collector.result_list())
-
- # Special case for flymake
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('mydir/Foo_flymake.h', 'h',
- ['#ifndef %s' % expected_guard,
- '#define %s' % expected_guard,
- '#endif // %s' % expected_guard],
- error_collector)
- for line in error_collector.result_list():
- if line.find('build/header_guard') != -1:
- self.fail('Unexpected error: %s' % line)
-
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data('mydir/Foo_flymake.h', 'h', [], error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- 'No #ifndef header guard found, suggested CPP variable is: %s'
- ' [build/header_guard] [5]' % expected_guard),
- error_collector.result_list())
-
- # Verify that we don't blindly suggest the WTF prefix for all headers.
- self.assertFalse(expected_guard.startswith('WTF_'))
-
- # Allow the WTF_ prefix for files in that directory.
- header_guard_filter = FilterConfiguration(('-', '+build/header_guard'))
- error_collector = ErrorCollector(self.assertTrue, header_guard_filter)
- self.process_file_data('Source/JavaScriptCore/wtf/TestName.h', 'h',
- ['#ifndef WTF_TestName_h', '#define WTF_TestName_h'],
- error_collector)
- self.assertEqual(0, len(error_collector.result_list()),
- error_collector.result_list())
-
- # Also allow the non WTF_ prefix for files in that directory.
- error_collector = ErrorCollector(self.assertTrue, header_guard_filter)
- self.process_file_data('Source/JavaScriptCore/wtf/TestName.h', 'h',
- ['#ifndef TestName_h', '#define TestName_h'],
- error_collector)
- self.assertEqual(0, len(error_collector.result_list()),
- error_collector.result_list())
-
- # Verify that we suggest the WTF prefix version.
- error_collector = ErrorCollector(self.assertTrue, header_guard_filter)
- self.process_file_data('Source/JavaScriptCore/wtf/TestName.h', 'h',
- ['#ifndef BAD_TestName_h', '#define BAD_TestName_h'],
- error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(
- '#ifndef header guard has wrong style, please use: WTF_TestName_h'
- ' [build/header_guard] [5]'),
- error_collector.result_list())
-
- def test_build_printf_format(self):
- self.assert_lint(
- r'printf("\%%d", value);',
- '%, [, (, and { are undefined character escapes. Unescape them.'
- ' [build/printf_format] [3]')
-
- self.assert_lint(
- r'snprintf(buffer, sizeof(buffer), "\[%d", value);',
- '%, [, (, and { are undefined character escapes. Unescape them.'
- ' [build/printf_format] [3]')
-
- self.assert_lint(
- r'fprintf(file, "\(%d", value);',
- '%, [, (, and { are undefined character escapes. Unescape them.'
- ' [build/printf_format] [3]')
-
- self.assert_lint(
- r'vsnprintf(buffer, sizeof(buffer), "\\\{%d", ap);',
- '%, [, (, and { are undefined character escapes. Unescape them.'
- ' [build/printf_format] [3]')
-
- # Don't warn if double-slash precedes the symbol
- self.assert_lint(r'printf("\\%%%d", value);',
- '')
-
- def test_runtime_printf_format(self):
- self.assert_lint(
- r'fprintf(file, "%q", value);',
- '%q in format strings is deprecated. Use %ll instead.'
- ' [runtime/printf_format] [3]')
-
- self.assert_lint(
- r'aprintf(file, "The number is %12q", value);',
- '%q in format strings is deprecated. Use %ll instead.'
- ' [runtime/printf_format] [3]')
-
- self.assert_lint(
- r'printf(file, "The number is" "%-12q", value);',
- '%q in format strings is deprecated. Use %ll instead.'
- ' [runtime/printf_format] [3]')
-
- self.assert_lint(
- r'printf(file, "The number is" "%+12q", value);',
- '%q in format strings is deprecated. Use %ll instead.'
- ' [runtime/printf_format] [3]')
-
- self.assert_lint(
- r'printf(file, "The number is" "% 12q", value);',
- '%q in format strings is deprecated. Use %ll instead.'
- ' [runtime/printf_format] [3]')
-
- self.assert_lint(
- r'snprintf(file, "Never mix %d and %1$d parmaeters!", value);',
- '%N$ formats are unconventional. Try rewriting to avoid them.'
- ' [runtime/printf_format] [2]')
-
- def assert_lintLogCodeOnError(self, code, expected_message):
- # Special assert_lint which logs the input code on error.
- result = self.perform_single_line_lint(code, 'foo.cpp')
- if result != expected_message:
- self.fail('For code: "%s"\nGot: "%s"\nExpected: "%s"'
- % (code, result, expected_message))
-
- def test_build_storage_class(self):
- qualifiers = [None, 'const', 'volatile']
- signs = [None, 'signed', 'unsigned']
- types = ['void', 'char', 'int', 'float', 'double',
- 'schar', 'int8', 'uint8', 'int16', 'uint16',
- 'int32', 'uint32', 'int64', 'uint64']
- storage_classes = ['auto', 'extern', 'register', 'static', 'typedef']
-
- build_storage_class_error_message = (
- 'Storage class (static, extern, typedef, etc) should be first.'
- ' [build/storage_class] [5]')
-
- # Some explicit cases. Legal in C++, deprecated in C99.
- self.assert_lint('const int static foo = 5;',
- build_storage_class_error_message)
-
- self.assert_lint('char static foo;',
- build_storage_class_error_message)
-
- self.assert_lint('double const static foo = 2.0;',
- build_storage_class_error_message)
-
- self.assert_lint('uint64 typedef unsignedLongLong;',
- build_storage_class_error_message)
-
- self.assert_lint('int register foo = 0;',
- build_storage_class_error_message)
-
- # Since there are a very large number of possibilities, randomly
- # construct declarations.
- # Make sure that the declaration is logged if there's an error.
- # Seed generator with an integer for absolute reproducibility.
- random.seed(25)
- for unused_i in range(10):
- # Build up random list of non-storage-class declaration specs.
- other_decl_specs = [random.choice(qualifiers), random.choice(signs),
- random.choice(types)]
- # remove None
- other_decl_specs = filter(lambda x: x is not None, other_decl_specs)
-
- # shuffle
- random.shuffle(other_decl_specs)
-
- # insert storage class after the first
- storage_class = random.choice(storage_classes)
- insertion_point = random.randint(1, len(other_decl_specs))
- decl_specs = (other_decl_specs[0:insertion_point]
- + [storage_class]
- + other_decl_specs[insertion_point:])
-
- self.assert_lintLogCodeOnError(
- ' '.join(decl_specs) + ';',
- build_storage_class_error_message)
-
- # but no error if storage class is first
- self.assert_lintLogCodeOnError(
- storage_class + ' ' + ' '.join(other_decl_specs),
- '')
-
- def test_legal_copyright(self):
- legal_copyright_message = (
- 'No copyright message found. '
- 'You should have a line: "Copyright [year] <Copyright Owner>"'
- ' [legal/copyright] [5]')
-
- copyright_line = '// Copyright 2008 Google Inc. All Rights Reserved.'
-
- file_path = 'mydir/googleclient/foo.cpp'
-
- # There should be a copyright message in the first 10 lines
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'cpp', [], error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(legal_copyright_message))
-
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(
- file_path, 'cpp',
- ['' for unused_i in range(10)] + [copyright_line],
- error_collector)
- self.assertEqual(
- 1,
- error_collector.result_list().count(legal_copyright_message))
-
- # Test that warning isn't issued if Copyright line appears early enough.
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(file_path, 'cpp', [copyright_line], error_collector)
- for message in error_collector.result_list():
- if message.find('legal/copyright') != -1:
- self.fail('Unexpected error: %s' % message)
-
- error_collector = ErrorCollector(self.assertTrue)
- self.process_file_data(
- file_path, 'cpp',
- ['' for unused_i in range(9)] + [copyright_line],
- error_collector)
- for message in error_collector.result_list():
- if message.find('legal/copyright') != -1:
- self.fail('Unexpected error: %s' % message)
-
- def test_invalid_increment(self):
- self.assert_lint('*count++;',
- 'Changing pointer instead of value (or unused value of '
- 'operator*). [runtime/invalid_increment] [5]')
-
- # Integral bitfields must be declared with either signed or unsigned keyword.
- def test_plain_integral_bitfields(self):
- errmsg = ('Please declare integral type bitfields with either signed or unsigned. [runtime/bitfields] [5]')
-
- self.assert_lint('int a : 30;', errmsg)
- self.assert_lint('mutable short a : 14;', errmsg)
- self.assert_lint('const char a : 6;', errmsg)
- self.assert_lint('long int a : 30;', errmsg)
- self.assert_lint('int a = 1 ? 0 : 30;', '')
-
-class CleansedLinesTest(unittest.TestCase):
- def test_init(self):
- lines = ['Line 1',
- 'Line 2',
- 'Line 3 // Comment test',
- 'Line 4 "foo"']
-
- clean_lines = cpp_style.CleansedLines(lines)
- self.assertEqual(lines, clean_lines.raw_lines)
- self.assertEqual(4, clean_lines.num_lines())
-
- self.assertEqual(['Line 1',
- 'Line 2',
- 'Line 3 ',
- 'Line 4 "foo"'],
- clean_lines.lines)
-
- self.assertEqual(['Line 1',
- 'Line 2',
- 'Line 3 ',
- 'Line 4 ""'],
- clean_lines.elided)
-
- def test_init_empty(self):
- clean_lines = cpp_style.CleansedLines([])
- self.assertEqual([], clean_lines.raw_lines)
- self.assertEqual(0, clean_lines.num_lines())
-
- def test_collapse_strings(self):
- collapse = cpp_style.CleansedLines.collapse_strings
- self.assertEqual('""', collapse('""')) # "" (empty)
- self.assertEqual('"""', collapse('"""')) # """ (bad)
- self.assertEqual('""', collapse('"xyz"')) # "xyz" (string)
- self.assertEqual('""', collapse('"\\\""')) # "\"" (string)
- self.assertEqual('""', collapse('"\'"')) # "'" (string)
- self.assertEqual('"\"', collapse('"\"')) # "\" (bad)
- self.assertEqual('""', collapse('"\\\\"')) # "\\" (string)
- self.assertEqual('"', collapse('"\\\\\\"')) # "\\\" (bad)
- self.assertEqual('""', collapse('"\\\\\\\\"')) # "\\\\" (string)
-
- self.assertEqual('\'\'', collapse('\'\'')) # '' (empty)
- self.assertEqual('\'\'', collapse('\'a\'')) # 'a' (char)
- self.assertEqual('\'\'', collapse('\'\\\'\'')) # '\'' (char)
- self.assertEqual('\'', collapse('\'\\\'')) # '\' (bad)
- self.assertEqual('', collapse('\\012')) # '\012' (char)
- self.assertEqual('', collapse('\\xfF0')) # '\xfF0' (char)
- self.assertEqual('', collapse('\\n')) # '\n' (char)
- self.assertEqual('\#', collapse('\\#')) # '\#' (bad)
-
- self.assertEqual('StringReplace(body, "", "");',
- collapse('StringReplace(body, "\\\\", "\\\\\\\\");'))
- self.assertEqual('\'\' ""',
- collapse('\'"\' "foo"'))
-
-
-class OrderOfIncludesTest(CppStyleTestBase):
- def setUp(self):
- self.include_state = cpp_style._IncludeState()
-
- # Cheat os.path.abspath called in FileInfo class.
- self.os_path_abspath_orig = os.path.abspath
- os.path.abspath = lambda value: value
-
- def tearDown(self):
- os.path.abspath = self.os_path_abspath_orig
-
- def test_try_drop_common_suffixes(self):
- self.assertEqual('foo/foo', cpp_style._drop_common_suffixes('foo/foo-inl.h'))
- self.assertEqual('foo/bar/foo',
- cpp_style._drop_common_suffixes('foo/bar/foo_inl.h'))
- self.assertEqual('foo/foo', cpp_style._drop_common_suffixes('foo/foo.cpp'))
- self.assertEqual('foo/foo_unusualinternal',
- cpp_style._drop_common_suffixes('foo/foo_unusualinternal.h'))
- self.assertEqual('',
- cpp_style._drop_common_suffixes('_test.cpp'))
- self.assertEqual('test',
- cpp_style._drop_common_suffixes('test.cpp'))
-
-
-class OrderOfIncludesTest(CppStyleTestBase):
- def setUp(self):
- self.include_state = cpp_style._IncludeState()
-
- # Cheat os.path.abspath called in FileInfo class.
- self.os_path_abspath_orig = os.path.abspath
- self.os_path_isfile_orig = os.path.isfile
- os.path.abspath = lambda value: value
-
- def tearDown(self):
- os.path.abspath = self.os_path_abspath_orig
- os.path.isfile = self.os_path_isfile_orig
-
- def test_check_next_include_order__no_config(self):
- self.assertEqual('Header file should not contain WebCore config.h.',
- self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, True, True))
-
- def test_check_next_include_order__no_self(self):
- self.assertEqual('Header file should not contain itself.',
- self.include_state.check_next_include_order(cpp_style._PRIMARY_HEADER, True, True))
- # Test actual code to make sure that header types are correctly assigned.
- self.assert_language_rules_check('Foo.h',
- '#include "Foo.h"\n',
- 'Header file should not contain itself. Should be: alphabetically sorted.'
- ' [build/include_order] [4]')
- self.assert_language_rules_check('FooBar.h',
- '#include "Foo.h"\n',
- '')
-
- def test_check_next_include_order__likely_then_config(self):
- self.assertEqual('Found header this file implements before WebCore config.h.',
- self.include_state.check_next_include_order(cpp_style._PRIMARY_HEADER, False, True))
- self.assertEqual('Found WebCore config.h after a header this file implements.',
- self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, False, True))
-
- def test_check_next_include_order__other_then_config(self):
- self.assertEqual('Found other header before WebCore config.h.',
- self.include_state.check_next_include_order(cpp_style._OTHER_HEADER, False, True))
- self.assertEqual('Found WebCore config.h after other header.',
- self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, False, True))
-
- def test_check_next_include_order__config_then_other_then_likely(self):
- self.assertEqual('', self.include_state.check_next_include_order(cpp_style._CONFIG_HEADER, False, True))
- self.assertEqual('Found other header before a header this file implements.',
- self.include_state.check_next_include_order(cpp_style._OTHER_HEADER, False, True))
- self.assertEqual('Found header this file implements after other header.',
- self.include_state.check_next_include_order(cpp_style._PRIMARY_HEADER, False, True))
-
- def test_check_alphabetical_include_order(self):
- self.assert_language_rules_check('foo.h',
- '#include "a.h"\n'
- '#include "c.h"\n'
- '#include "b.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- self.assert_language_rules_check('foo.h',
- '#include "a.h"\n'
- '#include "b.h"\n'
- '#include "c.h"\n',
- '')
-
- self.assert_language_rules_check('foo.h',
- '#include <assert.h>\n'
- '#include "bar.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- self.assert_language_rules_check('foo.h',
- '#include "bar.h"\n'
- '#include <assert.h>\n',
- '')
-
- def test_check_alphabetical_include_order_errors_reported_for_both_lines(self):
- # If one of the two lines of out of order headers are filtered, the error should be
- # reported on the other line.
- self.assert_language_rules_check('foo.h',
- '#include "a.h"\n'
- '#include "c.h"\n'
- '#include "b.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]',
- lines_to_check=[2])
-
- self.assert_language_rules_check('foo.h',
- '#include "a.h"\n'
- '#include "c.h"\n'
- '#include "b.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]',
- lines_to_check=[3])
-
- # If no lines are filtered, the error should be reported only once.
- self.assert_language_rules_check('foo.h',
- '#include "a.h"\n'
- '#include "c.h"\n'
- '#include "b.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- def test_check_line_break_after_own_header(self):
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '#include "bar.h"\n',
- 'You should add a blank line after implementation file\'s own header. [build/include_order] [4]')
-
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#include "bar.h"\n',
- '')
-
- def test_check_preprocessor_in_include_section(self):
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#ifdef BAZ\n'
- '#include "baz.h"\n'
- '#else\n'
- '#include "foobar.h"\n'
- '#endif"\n'
- '#include "bar.h"\n', # No flag because previous is in preprocessor section
- '')
-
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#ifdef BAZ\n'
- '#include "baz.h"\n'
- '#endif"\n'
- '#include "bar.h"\n'
- '#include "a.h"\n', # Should still flag this.
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#ifdef BAZ\n'
- '#include "baz.h"\n'
- '#include "bar.h"\n' #Should still flag this
- '#endif"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#ifdef BAZ\n'
- '#include "baz.h"\n'
- '#endif"\n'
- '#ifdef FOOBAR\n'
- '#include "foobar.h"\n'
- '#endif"\n'
- '#include "bar.h"\n'
- '#include "a.h"\n', # Should still flag this.
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- # Check that after an already included error, the sorting rules still work.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#include "foo.h"\n'
- '#include "g.h"\n',
- '"foo.h" already included at foo.cpp:2 [build/include] [4]')
-
- def test_primary_header(self):
- # File with non-existing primary header should not produce errors.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '\n'
- '#include "bar.h"\n',
- '')
- # Pretend that header files exist.
- os.path.isfile = lambda filename: True
- # Missing include for existing primary header -> error.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '\n'
- '#include "bar.h"\n',
- 'Found other header before a header this file implements. '
- 'Should be: config.h, primary header, blank line, and then '
- 'alphabetically sorted. [build/include_order] [4]')
- # Having include for existing primary header -> no error.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#include "bar.h"\n',
- '')
-
- os.path.isfile = self.os_path_isfile_orig
-
- def test_public_primary_header(self):
- # System header is not considered a primary header.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include <other/foo.h>\n'
- '\n'
- '#include "a.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- # ...except that it starts with public/.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include <public/foo.h>\n'
- '\n'
- '#include "a.h"\n',
- '')
-
- # Even if it starts with public/ its base part must match with the source file name.
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include <public/foop.h>\n'
- '\n'
- '#include "a.h"\n',
- 'Alphabetical sorting problem. [build/include_order] [4]')
-
- def test_check_wtf_includes(self):
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#include <wtf/Assertions.h>\n',
- '')
- self.assert_language_rules_check('foo.cpp',
- '#include "config.h"\n'
- '#include "foo.h"\n'
- '\n'
- '#include "wtf/Assertions.h"\n',
- 'wtf includes should be <wtf/file.h> instead of "wtf/file.h".'
- ' [build/include] [4]')
-
- def test_classify_include(self):
- classify_include = cpp_style._classify_include
- include_state = cpp_style._IncludeState()
- self.assertEqual(cpp_style._CONFIG_HEADER,
- classify_include('foo/foo.cpp',
- 'config.h',
- False, include_state))
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('foo/internal/foo.cpp',
- 'foo/public/foo.h',
- False, include_state))
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('foo/internal/foo.cpp',
- 'foo/other/public/foo.h',
- False, include_state))
- self.assertEqual(cpp_style._OTHER_HEADER,
- classify_include('foo/internal/foo.cpp',
- 'foo/other/public/foop.h',
- False, include_state))
- self.assertEqual(cpp_style._OTHER_HEADER,
- classify_include('foo/foo.cpp',
- 'string',
- True, include_state))
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('fooCustom.cpp',
- 'foo.h',
- False, include_state))
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('PrefixFooCustom.cpp',
- 'Foo.h',
- False, include_state))
- self.assertEqual(cpp_style._MOC_HEADER,
- classify_include('foo.cpp',
- 'foo.moc',
- False, include_state))
- self.assertEqual(cpp_style._MOC_HEADER,
- classify_include('foo.cpp',
- 'moc_foo.cpp',
- False, include_state))
- # <public/foo.h> must be considered as primary even if is_system is True.
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('foo/foo.cpp',
- 'public/foo.h',
- True, include_state))
- self.assertEqual(cpp_style._OTHER_HEADER,
- classify_include('foo.cpp',
- 'foo.h',
- True, include_state))
- self.assertEqual(cpp_style._OTHER_HEADER,
- classify_include('foo.cpp',
- 'public/foop.h',
- True, include_state))
- # Qt private APIs use _p.h suffix.
- self.assertEqual(cpp_style._PRIMARY_HEADER,
- classify_include('foo.cpp',
- 'foo_p.h',
- False, include_state))
- # Tricky example where both includes might be classified as primary.
- self.assert_language_rules_check('ScrollbarThemeWince.cpp',
- '#include "config.h"\n'
- '#include "ScrollbarThemeWince.h"\n'
- '\n'
- '#include "Scrollbar.h"\n',
- '')
- self.assert_language_rules_check('ScrollbarThemeWince.cpp',
- '#include "config.h"\n'
- '#include "Scrollbar.h"\n'
- '\n'
- '#include "ScrollbarThemeWince.h"\n',
- 'Found header this file implements after a header this file implements.'
- ' Should be: config.h, primary header, blank line, and then alphabetically sorted.'
- ' [build/include_order] [4]')
- self.assert_language_rules_check('ResourceHandleWin.cpp',
- '#include "config.h"\n'
- '#include "ResourceHandle.h"\n'
- '\n'
- '#include "ResourceHandleWin.h"\n',
- '')
-
- def test_try_drop_common_suffixes(self):
- self.assertEqual('foo/foo', cpp_style._drop_common_suffixes('foo/foo-inl.h'))
- self.assertEqual('foo/bar/foo',
- cpp_style._drop_common_suffixes('foo/bar/foo_inl.h'))
- self.assertEqual('foo/foo', cpp_style._drop_common_suffixes('foo/foo.cpp'))
- self.assertEqual('foo/foo_unusualinternal',
- cpp_style._drop_common_suffixes('foo/foo_unusualinternal.h'))
- self.assertEqual('',
- cpp_style._drop_common_suffixes('_test.cpp'))
- self.assertEqual('test',
- cpp_style._drop_common_suffixes('test.cpp'))
- self.assertEqual('test',
- cpp_style._drop_common_suffixes('test.cpp'))
-
-class CheckForFunctionLengthsTest(CppStyleTestBase):
- def setUp(self):
- # Reducing these thresholds for the tests speeds up tests significantly.
- self.old_normal_trigger = cpp_style._FunctionState._NORMAL_TRIGGER
- self.old_test_trigger = cpp_style._FunctionState._TEST_TRIGGER
-
- cpp_style._FunctionState._NORMAL_TRIGGER = 10
- cpp_style._FunctionState._TEST_TRIGGER = 25
-
- def tearDown(self):
- cpp_style._FunctionState._NORMAL_TRIGGER = self.old_normal_trigger
- cpp_style._FunctionState._TEST_TRIGGER = self.old_test_trigger
-
- # FIXME: Eliminate the need for this function.
- def set_min_confidence(self, min_confidence):
- """Set new test confidence and return old test confidence."""
- old_min_confidence = self.min_confidence
- self.min_confidence = min_confidence
- return old_min_confidence
-
- def assert_function_lengths_check(self, code, expected_message):
- """Check warnings for long function bodies are as expected.
-
- Args:
- code: C++ source code expected to generate a warning message.
- expected_message: Message expected to be generated by the C++ code.
- """
- self.assertEqual(expected_message,
- self.perform_function_lengths_check(code))
-
- def trigger_lines(self, error_level):
- """Return number of lines needed to trigger a function length warning.
-
- Args:
- error_level: --v setting for cpp_style.
-
- Returns:
- Number of lines needed to trigger a function length warning.
- """
- return cpp_style._FunctionState._NORMAL_TRIGGER * 2 ** error_level
-
- def trigger_test_lines(self, error_level):
- """Return number of lines needed to trigger a test function length warning.
-
- Args:
- error_level: --v setting for cpp_style.
-
- Returns:
- Number of lines needed to trigger a test function length warning.
- """
- return cpp_style._FunctionState._TEST_TRIGGER * 2 ** error_level
-
- def assert_function_length_check_definition(self, lines, error_level):
- """Generate long function definition and check warnings are as expected.
-
- Args:
- lines: Number of lines to generate.
- error_level: --v setting for cpp_style.
- """
- trigger_level = self.trigger_lines(self.min_confidence)
- self.assert_function_lengths_check(
- 'void test(int x)' + self.function_body(lines),
- ('Small and focused functions are preferred: '
- 'test() has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]'
- % (lines, trigger_level, error_level)))
-
- def assert_function_length_check_definition_ok(self, lines):
- """Generate shorter function definition and check no warning is produced.
-
- Args:
- lines: Number of lines to generate.
- """
- self.assert_function_lengths_check(
- 'void test(int x)' + self.function_body(lines),
- '')
-
- def assert_function_length_check_at_error_level(self, error_level):
- """Generate and check function at the trigger level for --v setting.
-
- Args:
- error_level: --v setting for cpp_style.
- """
- self.assert_function_length_check_definition(self.trigger_lines(error_level),
- error_level)
-
- def assert_function_length_check_below_error_level(self, error_level):
- """Generate and check function just below the trigger level for --v setting.
-
- Args:
- error_level: --v setting for cpp_style.
- """
- self.assert_function_length_check_definition(self.trigger_lines(error_level) - 1,
- error_level - 1)
-
- def assert_function_length_check_above_error_level(self, error_level):
- """Generate and check function just above the trigger level for --v setting.
-
- Args:
- error_level: --v setting for cpp_style.
- """
- self.assert_function_length_check_definition(self.trigger_lines(error_level) + 1,
- error_level)
-
- def function_body(self, number_of_lines):
- return ' {\n' + ' this_is_just_a_test();\n' * number_of_lines + '}'
-
- def function_body_with_blank_lines(self, number_of_lines):
- return ' {\n' + ' this_is_just_a_test();\n\n' * number_of_lines + '}'
-
- def function_body_with_no_lints(self, number_of_lines):
- return ' {\n' + ' this_is_just_a_test(); // NOLINT\n' * number_of_lines + '}'
-
- # Test line length checks.
- def test_function_length_check_declaration(self):
- self.assert_function_lengths_check(
- 'void test();', # Not a function definition
- '')
-
- def test_function_length_check_declaration_with_block_following(self):
- self.assert_function_lengths_check(
- ('void test();\n'
- + self.function_body(66)), # Not a function definition
- '')
-
- def test_function_length_check_class_definition(self):
- self.assert_function_lengths_check( # Not a function definition
- 'class Test' + self.function_body(66) + ';',
- '')
-
- def test_function_length_check_trivial(self):
- self.assert_function_lengths_check(
- 'void test() {}', # Not counted
- '')
-
- def test_function_length_check_empty(self):
- self.assert_function_lengths_check(
- 'void test() {\n}',
- '')
-
- def test_function_length_check_definition_below_severity0(self):
- old_min_confidence = self.set_min_confidence(0)
- self.assert_function_length_check_definition_ok(self.trigger_lines(0) - 1)
- self.set_min_confidence(old_min_confidence)
-
- def test_function_length_check_definition_at_severity0(self):
- old_min_confidence = self.set_min_confidence(0)
- self.assert_function_length_check_definition_ok(self.trigger_lines(0))
- self.set_min_confidence(old_min_confidence)
-
- def test_function_length_check_definition_above_severity0(self):
- old_min_confidence = self.set_min_confidence(0)
- self.assert_function_length_check_above_error_level(0)
- self.set_min_confidence(old_min_confidence)
-
- def test_function_length_check_definition_below_severity1v0(self):
- old_min_confidence = self.set_min_confidence(0)
- self.assert_function_length_check_below_error_level(1)
- self.set_min_confidence(old_min_confidence)
-
- def test_function_length_check_definition_at_severity1v0(self):
- old_min_confidence = self.set_min_confidence(0)
- self.assert_function_length_check_at_error_level(1)
- self.set_min_confidence(old_min_confidence)
-
- def test_function_length_check_definition_below_severity1(self):
- self.assert_function_length_check_definition_ok(self.trigger_lines(1) - 1)
-
- def test_function_length_check_definition_at_severity1(self):
- self.assert_function_length_check_definition_ok(self.trigger_lines(1))
-
- def test_function_length_check_definition_above_severity1(self):
- self.assert_function_length_check_above_error_level(1)
-
- def test_function_length_check_definition_severity1_plus_indented(self):
- error_level = 1
- error_lines = self.trigger_lines(error_level) + 1
- trigger_level = self.trigger_lines(self.min_confidence)
- indent_spaces = ' '
- self.assert_function_lengths_check(
- re.sub(r'(?m)^(.)', indent_spaces + r'\1',
- 'void test_indent(int x)\n' + self.function_body(error_lines)),
- ('Small and focused functions are preferred: '
- 'test_indent() has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_definition_severity1_plus_blanks(self):
- error_level = 1
- error_lines = self.trigger_lines(error_level) + 1
- trigger_level = self.trigger_lines(self.min_confidence)
- self.assert_function_lengths_check(
- 'void test_blanks(int x)' + self.function_body(error_lines),
- ('Small and focused functions are preferred: '
- 'test_blanks() has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_complex_definition_severity1(self):
- error_level = 1
- error_lines = self.trigger_lines(error_level) + 1
- trigger_level = self.trigger_lines(self.min_confidence)
- self.assert_function_lengths_check(
- ('my_namespace::my_other_namespace::MyVeryLongTypeName<Type1, bool func(const Element*)>*\n'
- 'my_namespace::my_other_namespace<Type3, Type4>::~MyFunction<Type5<Type6, Type7> >(int arg1, char* arg2)'
- + self.function_body(error_lines)),
- ('Small and focused functions are preferred: '
- 'my_namespace::my_other_namespace<Type3, Type4>::~MyFunction<Type5<Type6, Type7> >()'
- ' has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_definition_severity1_for_test(self):
- error_level = 1
- error_lines = self.trigger_test_lines(error_level) + 1
- trigger_level = self.trigger_test_lines(self.min_confidence)
- self.assert_function_lengths_check(
- 'TEST_F(Test, Mutator)' + self.function_body(error_lines),
- ('Small and focused functions are preferred: '
- 'TEST_F(Test, Mutator) has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_definition_severity1_for_split_line_test(self):
- error_level = 1
- error_lines = self.trigger_test_lines(error_level) + 1
- trigger_level = self.trigger_test_lines(self.min_confidence)
- self.assert_function_lengths_check(
- ('TEST_F(GoogleUpdateRecoveryRegistryProtectedTest,\n'
- ' FixGoogleUpdate_AllValues_MachineApp)' # note: 4 spaces
- + self.function_body(error_lines)),
- ('Small and focused functions are preferred: '
- 'TEST_F(GoogleUpdateRecoveryRegistryProtectedTest, ' # 1 space
- 'FixGoogleUpdate_AllValues_MachineApp) has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_definition_severity1_for_bad_test_doesnt_break(self):
- error_level = 1
- error_lines = self.trigger_test_lines(error_level) + 1
- trigger_level = self.trigger_test_lines(self.min_confidence)
- # Since the function name isn't valid, the function detection algorithm
- # will skip it, so no error is produced.
- self.assert_function_lengths_check(
- ('TEST_F('
- + self.function_body(error_lines)),
- '')
-
- def test_function_length_check_definition_severity1_with_embedded_no_lints(self):
- error_level = 1
- error_lines = self.trigger_lines(error_level) + 1
- trigger_level = self.trigger_lines(self.min_confidence)
- self.assert_function_lengths_check(
- 'void test(int x)' + self.function_body_with_no_lints(error_lines),
- ('Small and focused functions are preferred: '
- 'test() has %d non-comment lines '
- '(error triggered by exceeding %d lines).'
- ' [readability/fn_size] [%d]')
- % (error_lines, trigger_level, error_level))
-
- def test_function_length_check_definition_severity1_with_no_lint(self):
- self.assert_function_lengths_check(
- ('void test(int x)' + self.function_body(self.trigger_lines(1))
- + ' // NOLINT -- long function'),
- '')
-
- def test_function_length_check_definition_below_severity2(self):
- self.assert_function_length_check_below_error_level(2)
-
- def test_function_length_check_definition_severity2(self):
- self.assert_function_length_check_at_error_level(2)
-
- def test_function_length_check_definition_above_severity2(self):
- self.assert_function_length_check_above_error_level(2)
-
- def test_function_length_check_definition_below_severity3(self):
- self.assert_function_length_check_below_error_level(3)
-
- def test_function_length_check_definition_severity3(self):
- self.assert_function_length_check_at_error_level(3)
-
- def test_function_length_check_definition_above_severity3(self):
- self.assert_function_length_check_above_error_level(3)
-
- def test_function_length_check_definition_below_severity4(self):
- self.assert_function_length_check_below_error_level(4)
-
- def test_function_length_check_definition_severity4(self):
- self.assert_function_length_check_at_error_level(4)
-
- def test_function_length_check_definition_above_severity4(self):
- self.assert_function_length_check_above_error_level(4)
-
- def test_function_length_check_definition_below_severity5(self):
- self.assert_function_length_check_below_error_level(5)
-
- def test_function_length_check_definition_at_severity5(self):
- self.assert_function_length_check_at_error_level(5)
-
- def test_function_length_check_definition_above_severity5(self):
- self.assert_function_length_check_above_error_level(5)
-
- def test_function_length_check_definition_huge_lines(self):
- # 5 is the limit
- self.assert_function_length_check_definition(self.trigger_lines(6), 5)
-
- def test_function_length_not_determinable(self):
- # Macro invocation without terminating semicolon.
- self.assert_function_lengths_check(
- 'MACRO(arg)',
- '')
-
- # Macro with underscores
- self.assert_function_lengths_check(
- 'MACRO_WITH_UNDERSCORES(arg1, arg2, arg3)',
- '')
-
- self.assert_function_lengths_check(
- 'NonMacro(arg)',
- 'Lint failed to find start of function body.'
- ' [readability/fn_size] [5]')
-
-
-class NoNonVirtualDestructorsTest(CppStyleTestBase):
-
- def test_no_error(self):
- self.assert_multi_line_lint(
- '''\
- class Foo {
- virtual ~Foo();
- virtual void foo();
- };''',
- '')
-
- self.assert_multi_line_lint(
- '''\
- class Foo {
- virtual inline ~Foo();
- virtual void foo();
- };''',
- '')
-
- self.assert_multi_line_lint(
- '''\
- class Foo {
- inline virtual ~Foo();
- virtual void foo();
- };''',
- '')
-
- self.assert_multi_line_lint(
- '''\
- class Foo::Goo {
- virtual ~Goo();
- virtual void goo();
- };''',
- '')
- self.assert_multi_line_lint(
- 'class Foo { void foo(); };',
- 'More than one command on the same line [whitespace/newline] [4]')
- self.assert_multi_line_lint(
- 'class MyClass {\n'
- ' int getIntValue() { ASSERT(m_ptr); return *m_ptr; }\n'
- '};\n',
- '')
- self.assert_multi_line_lint(
- 'class MyClass {\n'
- ' int getIntValue()\n'
- ' {\n'
- ' ASSERT(m_ptr); return *m_ptr;\n'
- ' }\n'
- '};\n',
- 'More than one command on the same line [whitespace/newline] [4]')
-
- self.assert_multi_line_lint(
- '''\
- class Qualified::Goo : public Foo {
- virtual void goo();
- };''',
- '')
-
- def test_no_destructor_when_virtual_needed(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo {
- virtual void foo();
- };''',
- 'The class Foo probably needs a virtual destructor')
-
- def test_enum_casing(self):
- self.assert_multi_line_lint(
- '''\
- enum Foo {
- FOO_ONE = 1,
- FOO_TWO
- };
- enum { FOO_ONE };
- enum {FooOne, fooTwo};
- enum {
- FOO_ONE
- };''',
- ['enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4]'] * 5)
-
- self.assert_multi_line_lint(
- '''\
- enum Foo {
- fooOne = 1,
- FooTwo = 2
- };''',
- 'enum members should use InterCaps with an initial capital letter. [readability/enum_casing] [4]')
-
- self.assert_multi_line_lint(
- '''\
- enum Foo {
- FooOne = 1,
- FooTwo
- } fooVar = FooOne;
- enum { FooOne, FooTwo };
- enum { FooOne, FooTwo } fooVar = FooTwo;
- enum { FooOne= FooTwo } foo;
- enum Enum123 {
- FooOne,
- FooTwo = FooOne,
- };''',
- '')
-
- self.assert_multi_line_lint(
- '''\
- // WebIDL enum
- enum Foo {
- FOO_ONE = 1,
- FOO_TWO = 2,
- };''',
- '')
-
- self.assert_multi_line_lint(
- '''\
- // WebKitIDL enum
- enum Foo { FOO_ONE, FOO_TWO };''',
- '')
-
- def test_destructor_non_virtual_when_virtual_needed(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo {
- ~Foo();
- virtual void foo();
- };''',
- 'The class Foo probably needs a virtual destructor')
-
- def test_no_warn_when_derived(self):
- self.assert_multi_line_lint(
- '''\
- class Foo : public Goo {
- virtual void foo();
- };''',
- '')
-
- def test_internal_braces(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo {
- enum Goo {
- Goo
- };
- virtual void foo();
- };''',
- 'The class Foo probably needs a virtual destructor')
-
- def test_inner_class_needs_virtual_destructor(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo {
- class Goo {
- virtual void goo();
- };
- };''',
- 'The class Goo probably needs a virtual destructor')
-
- def test_outer_class_needs_virtual_destructor(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo {
- class Goo {
- };
- virtual void foo();
- };''',
- 'The class Foo probably needs a virtual destructor')
-
- def test_qualified_class_needs_virtual_destructor(self):
- self.assert_multi_line_lint_re(
- '''\
- class Qualified::Foo {
- virtual void foo();
- };''',
- 'The class Qualified::Foo probably needs a virtual destructor')
-
- def test_multi_line_declaration_no_error(self):
- self.assert_multi_line_lint_re(
- '''\
- class Foo
- : public Goo {
- virtual void foo();
- };''',
- '')
-
- def test_multi_line_declaration_with_error(self):
- self.assert_multi_line_lint(
- '''\
- class Foo
- {
- virtual void foo();
- };''',
- ['This { should be at the end of the previous line '
- '[whitespace/braces] [4]',
- 'The class Foo probably needs a virtual destructor due to having '
- 'virtual method(s), one declared at line 3. [runtime/virtual] [4]'])
-
-
-class PassPtrTest(CppStyleTestBase):
- # For http://webkit.org/coding/RefPtr.html
-
- def assert_pass_ptr_check(self, code, expected_message):
- """Check warnings for Pass*Ptr are as expected.
-
- Args:
- code: C++ source code expected to generate a warning message.
- expected_message: Message expected to be generated by the C++ code.
- """
- self.assertEqual(expected_message,
- self.perform_pass_ptr_check(code))
-
- def test_pass_ref_ptr_in_function(self):
- self.assert_pass_ptr_check(
- 'int myFunction()\n'
- '{\n'
- ' PassRefPtr<Type1> variable = variable2;\n'
- '}',
- 'Local variables should never be PassRefPtr (see '
- 'http://webkit.org/coding/RefPtr.html). [readability/pass_ptr] [5]')
-
- def test_pass_own_ptr_in_function(self):
- self.assert_pass_ptr_check(
- 'int myFunction()\n'
- '{\n'
- ' PassOwnPtr<Type1> variable = variable2;\n'
- '}',
- 'Local variables should never be PassOwnPtr (see '
- 'http://webkit.org/coding/RefPtr.html). [readability/pass_ptr] [5]')
-
- def test_pass_other_type_ptr_in_function(self):
- self.assert_pass_ptr_check(
- 'int myFunction()\n'
- '{\n'
- ' PassOtherTypePtr<Type1> variable;\n'
- '}',
- 'Local variables should never be PassOtherTypePtr (see '
- 'http://webkit.org/coding/RefPtr.html). [readability/pass_ptr] [5]')
-
- def test_pass_ref_ptr_return_value(self):
- self.assert_pass_ptr_check(
- 'PassRefPtr<Type1>\n'
- 'myFunction(int)\n'
- '{\n'
- '}',
- '')
- self.assert_pass_ptr_check(
- 'PassRefPtr<Type1> myFunction(int)\n'
- '{\n'
- '}',
- '')
- self.assert_pass_ptr_check(
- 'PassRefPtr<Type1> myFunction();\n',
- '')
- self.assert_pass_ptr_check(
- 'OwnRefPtr<Type1> myFunction();\n',
- '')
- self.assert_pass_ptr_check(
- 'RefPtr<Type1> myFunction(int)\n'
- '{\n'
- '}',
- 'The return type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5]')
- self.assert_pass_ptr_check(
- 'OwnPtr<Type1> myFunction(int)\n'
- '{\n'
- '}',
- 'The return type should use PassOwnPtr instead of OwnPtr. [readability/pass_ptr] [5]')
-
- def test_ref_ptr_parameter_value(self):
- self.assert_pass_ptr_check(
- 'int myFunction(PassRefPtr<Type1>)\n'
- '{\n'
- '}',
- '')
- self.assert_pass_ptr_check(
- 'int myFunction(RefPtr<Type1>)\n'
- '{\n'
- '}',
- 'The parameter type should use PassRefPtr instead of RefPtr. [readability/pass_ptr] [5]')
- self.assert_pass_ptr_check(
- 'int myFunction(RefPtr<Type1>&)\n'
- '{\n'
- '}',
- '')
- self.assert_pass_ptr_check(
- 'int myFunction(RefPtr<Type1>*)\n'
- '{\n'
- '}',
- '')
-
- def test_own_ptr_parameter_value(self):
- self.assert_pass_ptr_check(
- 'int myFunction(PassOwnPtr<Type1>)\n'
- '{\n'
- '}',
- '')
- self.assert_pass_ptr_check(
- 'int myFunction(OwnPtr<Type1>)\n'
- '{\n'
- '}',
- 'The parameter type should use PassOwnPtr instead of OwnPtr. [readability/pass_ptr] [5]')
- self.assert_pass_ptr_check(
- 'int myFunction(OwnPtr<Type1>& simple)\n'
- '{\n'
- '}',
- '')
-
- def test_ref_ptr_member_variable(self):
- self.assert_pass_ptr_check(
- 'class Foo {'
- ' RefPtr<Type1> m_other;\n'
- '};\n',
- '')
-
-
-class LeakyPatternTest(CppStyleTestBase):
-
- def assert_leaky_pattern_check(self, code, expected_message):
- """Check warnings for leaky patterns are as expected.
-
- Args:
- code: C++ source code expected to generate a warning message.
- expected_message: Message expected to be generated by the C++ code.
- """
- self.assertEqual(expected_message,
- self.perform_leaky_pattern_check(code))
-
- def test_get_dc(self):
- self.assert_leaky_pattern_check(
- 'HDC hdc = GetDC(hwnd);',
- 'Use the class HWndDC instead of calling GetDC to avoid potential '
- 'memory leaks. [runtime/leaky_pattern] [5]')
-
- def test_get_dc(self):
- self.assert_leaky_pattern_check(
- 'HDC hdc = GetDCEx(hwnd, 0, 0);',
- 'Use the class HWndDC instead of calling GetDCEx to avoid potential '
- 'memory leaks. [runtime/leaky_pattern] [5]')
-
- def test_own_get_dc(self):
- self.assert_leaky_pattern_check(
- 'HWndDC hdc(hwnd);',
- '')
-
- def test_create_dc(self):
- self.assert_leaky_pattern_check(
- 'HDC dc2 = ::CreateDC();',
- 'Use adoptPtr and OwnPtr<HDC> when calling CreateDC to avoid potential '
- 'memory leaks. [runtime/leaky_pattern] [5]')
-
- self.assert_leaky_pattern_check(
- 'adoptPtr(CreateDC());',
- '')
-
- def test_create_compatible_dc(self):
- self.assert_leaky_pattern_check(
- 'HDC dc2 = CreateCompatibleDC(dc);',
- 'Use adoptPtr and OwnPtr<HDC> when calling CreateCompatibleDC to avoid potential '
- 'memory leaks. [runtime/leaky_pattern] [5]')
- self.assert_leaky_pattern_check(
- 'adoptPtr(CreateCompatibleDC(dc));',
- '')
-
-
-class WebKitStyleTest(CppStyleTestBase):
-
- # for http://webkit.org/coding/coding-style.html
- def test_indentation(self):
- # 1. Use spaces, not tabs. Tabs should only appear in files that
- # require them for semantic meaning, like Makefiles.
- self.assert_multi_line_lint(
- 'class Foo {\n'
- ' int goo;\n'
- '};',
- '')
- self.assert_multi_line_lint(
- 'class Foo {\n'
- '\tint goo;\n'
- '};',
- 'Tab found; better to use spaces [whitespace/tab] [1]')
-
- # 2. The indent size is 4 spaces.
- self.assert_multi_line_lint(
- 'class Foo {\n'
- ' int goo;\n'
- '};',
- '')
- self.assert_multi_line_lint(
- 'class Foo {\n'
- ' int goo;\n'
- '};',
- 'Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]')
-
- # 3. In a header, code inside a namespace should not be indented.
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- 'class Document {\n'
- ' int myVariable;\n'
- '};\n'
- '}',
- '',
- 'foo.h')
- self.assert_multi_line_lint(
- 'namespace OuterNamespace {\n'
- ' namespace InnerNamespace {\n'
- ' class Document {\n'
- '};\n'
- '};\n'
- '}',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.h')
- self.assert_multi_line_lint(
- 'namespace OuterNamespace {\n'
- ' class Document {\n'
- ' namespace InnerNamespace {\n'
- '};\n'
- '};\n'
- '}',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.h')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- '#if 0\n'
- ' class Document {\n'
- '};\n'
- '#endif\n'
- '}',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.h')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- 'class Document {\n'
- '};\n'
- '}',
- '',
- 'foo.h')
-
- # 4. In an implementation file (files with the extension .cpp, .c
- # or .mm), code inside a namespace should not be indented.
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- 'Document::Foo()\n'
- ' : foo(bar)\n'
- ' , boo(far)\n'
- '{\n'
- ' stuff();\n'
- '}',
- '',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace OuterNamespace {\n'
- 'namespace InnerNamespace {\n'
- 'Document::Foo() { }\n'
- ' void* p;\n'
- '}\n'
- '}\n',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace OuterNamespace {\n'
- 'namespace InnerNamespace {\n'
- 'Document::Foo() { }\n'
- '}\n'
- ' void* p;\n'
- '}\n',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- ' const char* foo = "start:;"\n'
- ' "dfsfsfs";\n'
- '}\n',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- 'const char* foo(void* a = ";", // ;\n'
- ' void* b);\n'
- ' void* p;\n'
- '}\n',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- 'const char* foo[] = {\n'
- ' "void* b);", // ;\n'
- ' "asfdf",\n'
- ' }\n'
- ' void* p;\n'
- '}\n',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n\n'
- 'const char* foo[] = {\n'
- ' "void* b);", // }\n'
- ' "asfdf",\n'
- ' }\n'
- '}\n',
- '',
- 'foo.cpp')
- self.assert_multi_line_lint(
- ' namespace WebCore {\n\n'
- ' void Document::Foo()\n'
- ' {\n'
- 'start: // infinite loops are fun!\n'
- ' goto start;\n'
- ' }',
- 'namespace should never be indented. [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- ' Document::Foo() { }\n'
- '}',
- 'Code inside a namespace should not be indented.'
- ' [whitespace/indent] [4]',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- '#define abc(x) x; \\\n'
- ' x\n'
- '}',
- '',
- 'foo.cpp')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- '#define abc(x) x; \\\n'
- ' x\n'
- ' void* x;'
- '}',
- 'Code inside a namespace should not be indented. [whitespace/indent] [4]',
- 'foo.cpp')
-
- # 5. A case label should line up with its switch statement. The
- # case statement is indented.
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' case barCondition:\n'
- ' i++;\n'
- ' break;\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- '')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' switch (otherCondition) {\n'
- ' default:\n'
- ' return;\n'
- ' }\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- '')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition: break;\n'
- ' default: return;\n'
- ' }\n',
- '')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' case barCondition:\n'
- ' i++;\n'
- ' break;\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- 'A case label should not be indented, but line up with its switch statement.'
- ' [whitespace/indent] [4]')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' break;\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- 'A case label should not be indented, but line up with its switch statement.'
- ' [whitespace/indent] [4]')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' case barCondition:\n'
- ' switch (otherCondition) {\n'
- ' default:\n'
- ' return;\n'
- ' }\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- 'A case label should not be indented, but line up with its switch statement.'
- ' [whitespace/indent] [4]')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' case barCondition:\n'
- ' i++;\n'
- ' break;\n\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- 'Non-label code inside switch statements should be indented.'
- ' [whitespace/indent] [4]')
- self.assert_multi_line_lint(
- ' switch (condition) {\n'
- ' case fooCondition:\n'
- ' case barCondition:\n'
- ' switch (otherCondition) {\n'
- ' default:\n'
- ' return;\n'
- ' }\n'
- ' default:\n'
- ' i--;\n'
- ' }\n',
- 'Non-label code inside switch statements should be indented.'
- ' [whitespace/indent] [4]')
-
- # 6. Boolean expressions at the same nesting level that span
- # multiple lines should have their operators on the left side of
- # the line instead of the right side.
- self.assert_multi_line_lint(
- ' return attr->name() == srcAttr\n'
- ' || attr->name() == lowsrcAttr;\n',
- '')
- self.assert_multi_line_lint(
- ' return attr->name() == srcAttr ||\n'
- ' attr->name() == lowsrcAttr;\n',
- 'Boolean expressions that span multiple lines should have their '
- 'operators on the left side of the line instead of the right side.'
- ' [whitespace/operators] [4]')
-
- def test_spacing(self):
- # 1. Do not place spaces around unary operators.
- self.assert_multi_line_lint(
- 'i++;',
- '')
- self.assert_multi_line_lint(
- 'i ++;',
- 'Extra space for operator ++; [whitespace/operators] [4]')
-
- # 2. Do place spaces around binary and ternary operators.
- self.assert_multi_line_lint(
- 'y = m * x + b;',
- '')
- self.assert_multi_line_lint(
- 'f(a, b);',
- '')
- self.assert_multi_line_lint(
- 'c = a | b;',
- '')
- self.assert_multi_line_lint(
- 'return condition ? 1 : 0;',
- '')
- self.assert_multi_line_lint(
- 'y=m*x+b;',
- 'Missing spaces around = [whitespace/operators] [4]')
- self.assert_multi_line_lint(
- 'f(a,b);',
- 'Missing space after , [whitespace/comma] [3]')
- self.assert_multi_line_lint(
- 'c = a|b;',
- 'Missing spaces around | [whitespace/operators] [3]')
- # FIXME: We cannot catch this lint error.
- # self.assert_multi_line_lint(
- # 'return condition ? 1:0;',
- # '')
-
- # 3. Place spaces between control statements and their parentheses.
- self.assert_multi_line_lint(
- ' if (condition)\n'
- ' doIt();\n',
- '')
- self.assert_multi_line_lint(
- ' if(condition)\n'
- ' doIt();\n',
- 'Missing space before ( in if( [whitespace/parens] [5]')
-
- # 4. Do not place spaces between a function and its parentheses,
- # or between a parenthesis and its content.
- self.assert_multi_line_lint(
- 'f(a, b);',
- '')
- self.assert_multi_line_lint(
- 'f (a, b);',
- 'Extra space before ( in function call [whitespace/parens] [4]')
- self.assert_multi_line_lint(
- 'f( a, b );',
- ['Extra space after ( in function call [whitespace/parens] [4]',
- 'Extra space before ) [whitespace/parens] [2]'])
-
- def test_line_breaking(self):
- # 1. Each statement should get its own line.
- self.assert_multi_line_lint(
- ' x++;\n'
- ' y++;\n'
- ' if (condition);\n'
- ' doIt();\n',
- '')
- self.assert_multi_line_lint(
- ' if (condition) \\\n'
- ' doIt();\n',
- '')
- self.assert_multi_line_lint(
- ' x++; y++;',
- 'More than one command on the same line [whitespace/newline] [4]')
- self.assert_multi_line_lint(
- ' if (condition) doIt();\n',
- 'More than one command on the same line in if [whitespace/parens] [4]')
- # Ensure that having a # in the line doesn't hide the error.
- self.assert_multi_line_lint(
- ' x++; char a[] = "#";',
- 'More than one command on the same line [whitespace/newline] [4]')
- # Ignore preprocessor if's.
- self.assert_multi_line_lint(
- '#if (condition) || (condition2)\n',
- '')
-
- # 2. An else statement should go on the same line as a preceding
- # close brace if one is present, else it should line up with the
- # if statement.
- self.assert_multi_line_lint(
- 'if (condition) {\n'
- ' doSomething();\n'
- ' doSomethingAgain();\n'
- '} else {\n'
- ' doSomethingElse();\n'
- ' doSomethingElseAgain();\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else\n'
- ' doSomethingElse();\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else {\n'
- ' doSomethingElse();\n'
- ' doSomethingElseAgain();\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- '#define TEST_ASSERT(expression) do { if (!(expression)) { TestsController::shared().testFailed(__FILE__, __LINE__, #expression); return; } } while (0)\n',
- '')
- self.assert_multi_line_lint(
- '#define TEST_ASSERT(expression) do { if ( !(expression)) { TestsController::shared().testFailed(__FILE__, __LINE__, #expression); return; } } while (0)\n',
- 'Extra space after ( in if [whitespace/parens] [5]')
- # FIXME: currently we only check first conditional, so we cannot detect errors in next ones.
- # self.assert_multi_line_lint(
- # '#define TEST_ASSERT(expression) do { if (!(expression)) { TestsController::shared().testFailed(__FILE__, __LINE__, #expression); return; } } while (0 )\n',
- # 'Mismatching spaces inside () in if [whitespace/parens] [5]')
- self.assert_multi_line_lint(
- 'WTF_MAKE_NONCOPYABLE(ClassName); WTF_MAKE_FAST_ALLOCATED;\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition) {\n'
- ' doSomething();\n'
- ' doSomethingAgain();\n'
- '}\n'
- 'else {\n'
- ' doSomethingElse();\n'
- ' doSomethingElseAgain();\n'
- '}\n',
- 'An else should appear on the same line as the preceding } [whitespace/newline] [4]')
- self.assert_multi_line_lint(
- 'if (condition) doSomething(); else doSomethingElse();\n',
- ['More than one command on the same line [whitespace/newline] [4]',
- 'Else clause should never be on same line as else (use 2 lines) [whitespace/newline] [4]',
- 'More than one command on the same line in if [whitespace/parens] [4]'])
- self.assert_multi_line_lint(
- 'if (condition) doSomething(); else {\n'
- ' doSomethingElse();\n'
- '}\n',
- ['More than one command on the same line in if [whitespace/parens] [4]',
- 'One line control clauses should not use braces. [whitespace/braces] [4]'])
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else {\n'
- ' doSomethingElse();\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'if (condition) {\n'
- ' doSomething1();\n'
- ' doSomething2();\n'
- '} else {\n'
- ' doSomethingElse();\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'void func()\n'
- '{\n'
- ' while (condition) { }\n'
- ' return 0;\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'void func()\n'
- '{\n'
- ' for (i = 0; i < 42; i++) { foobar(); }\n'
- ' return 0;\n'
- '}\n',
- 'More than one command on the same line in for [whitespace/parens] [4]')
-
- # 3. An else if statement should be written as an if statement
- # when the prior if concludes with a return statement.
- self.assert_multi_line_lint(
- 'if (motivated) {\n'
- ' if (liquid)\n'
- ' return money;\n'
- '} else if (tired)\n'
- ' break;\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else if (otherCondition)\n'
- ' doSomethingElse();\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else\n'
- ' doSomethingElse();\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' returnValue = foo;\n'
- 'else if (otherCondition)\n'
- ' returnValue = bar;\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' returnValue = foo;\n'
- 'else\n'
- ' returnValue = bar;\n',
- '')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- ' doSomething();\n'
- 'else if (liquid)\n'
- ' return money;\n'
- 'else if (broke)\n'
- ' return favor;\n'
- 'else\n'
- ' sleep(28800);\n',
- '')
- self.assert_multi_line_lint(
- 'if (liquid) {\n'
- ' prepare();\n'
- ' return money;\n'
- '} else if (greedy) {\n'
- ' keep();\n'
- ' return nothing;\n'
- '}\n',
- 'An else if statement should be written as an if statement when the '
- 'prior "if" concludes with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
- self.assert_multi_line_lint(
- ' if (stupid) {\n'
- 'infiniteLoop:\n'
- ' goto infiniteLoop;\n'
- ' } else if (evil)\n'
- ' goto hell;\n',
- 'An else if statement should be written as an if statement when the '
- 'prior "if" concludes with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
- self.assert_multi_line_lint(
- 'if (liquid)\n'
- '{\n'
- ' prepare();\n'
- ' return money;\n'
- '}\n'
- 'else if (greedy)\n'
- ' keep();\n',
- ['This { should be at the end of the previous line [whitespace/braces] [4]',
- 'An else should appear on the same line as the preceding } [whitespace/newline] [4]',
- 'An else if statement should be written as an if statement when the '
- 'prior "if" concludes with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]'])
- self.assert_multi_line_lint(
- 'if (gone)\n'
- ' return;\n'
- 'else if (here)\n'
- ' go();\n',
- 'An else if statement should be written as an if statement when the '
- 'prior "if" concludes with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
- self.assert_multi_line_lint(
- 'if (gone)\n'
- ' return;\n'
- 'else\n'
- ' go();\n',
- 'An else statement can be removed when the prior "if" concludes '
- 'with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
- self.assert_multi_line_lint(
- 'if (motivated) {\n'
- ' prepare();\n'
- ' continue;\n'
- '} else {\n'
- ' cleanUp();\n'
- ' break;\n'
- '}\n',
- 'An else statement can be removed when the prior "if" concludes '
- 'with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
- self.assert_multi_line_lint(
- 'if (tired)\n'
- ' break;\n'
- 'else {\n'
- ' prepare();\n'
- ' continue;\n'
- '}\n',
- 'An else statement can be removed when the prior "if" concludes '
- 'with a return, break, continue or goto statement.'
- ' [readability/control_flow] [4]')
-
- def test_braces(self):
- # 1. Function definitions: place each brace on its own line.
- self.assert_multi_line_lint(
- 'int main()\n'
- '{\n'
- ' doSomething();\n'
- '}\n',
- '')
- self.assert_multi_line_lint(
- 'int main() {\n'
- ' doSomething();\n'
- '}\n',
- 'Place brace on its own line for function definitions. [whitespace/braces] [4]')
-
- # 2. Other braces: place the open brace on the line preceding the
- # code block; place the close brace on its own line.
- self.assert_multi_line_lint(
- 'class MyClass {\n'
- ' int foo;\n'
- '};\n',
- '')
- self.assert_multi_line_lint(
- 'namespace WebCore {\n'
- 'int foo;\n'
- '};\n',
- '')
- self.assert_multi_line_lint(
- 'for (int i = 0; i < 10; i++) {\n'
- ' DoSomething();\n'
- '};\n',
- '')
- self.assert_multi_line_lint(
- 'class MyClass\n'
- '{\n'
- ' int foo;\n'
- '};\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'for (int i = 0; i < 10; i++)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'while (true)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'foreach (Foo* foo, foos)\n'
- '{\n'
- ' int bar;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'switch (type)\n'
- '{\n'
- 'case foo: return;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'if (condition)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'for (int i = 0; i < 10; i++)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'while (true)\n'
- '{\n'
- ' int foo;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'switch (type)\n'
- '{\n'
- 'case foo: return;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
- self.assert_multi_line_lint(
- 'else if (type)\n'
- '{\n'
- 'case foo: return;\n'
- '}\n',
- 'This { should be at the end of the previous line [whitespace/braces] [4]')
-
- # 3. One-line control clauses should not use braces unless
- # comments are included or a single statement spans multiple
- # lines.
- self.assert_multi_line_lint(
- 'if (true) {\n'
- ' int foo;\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'for (; foo; bar) {\n'
- ' int foo;\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'foreach (foo, foos) {\n'
- ' int bar;\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'while (true) {\n'
- ' int foo;\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'if (true)\n'
- ' int foo;\n'
- 'else {\n'
- ' int foo;\n'
- '}\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'if (true) {\n'
- ' int foo;\n'
- '} else\n'
- ' int foo;\n',
- 'One line control clauses should not use braces. [whitespace/braces] [4]')
-
- self.assert_multi_line_lint(
- 'if (true) {\n'
- ' // Some comment\n'
- ' int foo;\n'
- '}\n',
- '')
-
- self.assert_multi_line_lint(
- 'if (true) {\n'
- ' myFunction(reallyLongParam1, reallyLongParam2,\n'
- ' reallyLongParam3);\n'
- '}\n',
- 'Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]')
-
- self.assert_multi_line_lint(
- 'if (true) {\n'
- ' myFunction(reallyLongParam1, reallyLongParam2,\n'
- ' reallyLongParam3);\n'
- '}\n',
- 'When wrapping a line, only indent 4 spaces. [whitespace/indent] [3]')
-
- # 4. Control clauses without a body should use empty braces.
- self.assert_multi_line_lint(
- 'for ( ; current; current = current->next) { }\n',
- '')
- self.assert_multi_line_lint(
- 'for ( ; current;\n'
- ' current = current->next) { }\n',
- 'Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3]')
- self.assert_multi_line_lint(
- 'for ( ; current; current = current->next);\n',
- 'Semicolon defining empty statement for this loop. Use { } instead. [whitespace/semicolon] [5]')
- self.assert_multi_line_lint(
- 'while (true);\n',
- 'Semicolon defining empty statement for this loop. Use { } instead. [whitespace/semicolon] [5]')
- self.assert_multi_line_lint(
- '} while (true);\n',
- '')
-
- def test_null_false_zero(self):
- # 1. In C++, the null pointer value should be written as 0. In C,
- # it should be written as NULL. In Objective-C and Objective-C++,
- # follow the guideline for C or C++, respectively, but use nil to
- # represent a null Objective-C object.
- self.assert_lint(
- 'functionCall(NULL)',
- 'Use 0 instead of NULL.'
- ' [readability/null] [5]',
- 'foo.cpp')
- self.assert_lint(
- "// Don't use NULL in comments since it isn't in code.",
- 'Use 0 or null instead of NULL (even in *comments*).'
- ' [readability/null] [4]',
- 'foo.cpp')
- self.assert_lint(
- '"A string with NULL" // and a comment with NULL is tricky to flag correctly in cpp_style.',
- 'Use 0 or null instead of NULL (even in *comments*).'
- ' [readability/null] [4]',
- 'foo.cpp')
- self.assert_lint(
- '"A string containing NULL is ok"',
- '',
- 'foo.cpp')
- self.assert_lint(
- 'if (aboutNULL)',
- '',
- 'foo.cpp')
- self.assert_lint(
- 'myVariable = NULLify',
- '',
- 'foo.cpp')
- # Make sure that the NULL check does not apply to C and Objective-C files.
- self.assert_lint(
- 'functionCall(NULL)',
- '',
- 'foo.c')
- self.assert_lint(
- 'functionCall(NULL)',
- '',
- 'foo.m')
-
- # Make sure that the NULL check does not apply to g_object_{set,get} and
- # g_str{join,concat}
- self.assert_lint(
- 'g_object_get(foo, "prop", &bar, NULL);',
- '')
- self.assert_lint(
- 'g_object_set(foo, "prop", bar, NULL);',
- '')
- self.assert_lint(
- 'g_build_filename(foo, bar, NULL);',
- '')
- self.assert_lint(
- 'gst_bin_add_many(foo, bar, boo, NULL);',
- '')
- self.assert_lint(
- 'gst_bin_remove_many(foo, bar, boo, NULL);',
- '')
- self.assert_lint(
- 'gst_element_link_many(foo, bar, boo, NULL);',
- '')
- self.assert_lint(
- 'gst_element_unlink_many(foo, bar, boo, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_get(foo, "value", G_TYPE_INT, &value, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_set(foo, "value", G_TYPE_INT, value, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_remove_fields(foo, "value", "bar", NULL);',
- '')
- self.assert_lint(
- 'gst_structure_new("foo", "value", G_TYPE_INT, value, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_id_new(FOO, VALUE, G_TYPE_INT, value, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_id_set(FOO, VALUE, G_TYPE_INT, value, NULL);',
- '')
- self.assert_lint(
- 'gst_structure_id_get(FOO, VALUE, G_TYPE_INT, &value, NULL);',
- '')
- self.assert_lint(
- 'gst_caps_new_simple(mime, "value", G_TYPE_INT, &value, NULL);',
- '')
- self.assert_lint(
- 'gst_caps_new_full(structure1, structure2, NULL);',
- '')
- self.assert_lint(
- 'gchar* result = g_strconcat("part1", "part2", "part3", NULL);',
- '')
- self.assert_lint(
- 'gchar* result = g_strconcat("part1", NULL);',
- '')
- self.assert_lint(
- 'gchar* result = g_strjoin(",", "part1", "part2", "part3", NULL);',
- '')
- self.assert_lint(
- 'gchar* result = g_strjoin(",", "part1", NULL);',
- '')
- self.assert_lint(
- 'gchar* result = gdk_pixbuf_save_to_callback(pixbuf, function, data, type, error, NULL);',
- '')
- self.assert_lint(
- 'gchar* result = gdk_pixbuf_save_to_buffer(pixbuf, function, data, type, error, NULL);',
- '')
- self.assert_lint(
- 'gchar* result = gdk_pixbuf_save_to_stream(pixbuf, function, data, type, error, NULL);',
- '')
- self.assert_lint(
- 'gtk_widget_style_get(style, "propertyName", &value, "otherName", &otherValue, NULL);',
- '')
- self.assert_lint(
- 'gtk_style_context_get_style(context, "propertyName", &value, "otherName", &otherValue, NULL);',
- '')
- self.assert_lint(
- 'gtk_style_context_get(context, static_cast<GtkStateFlags>(0), "property", &value, NULL);',
- '')
- self.assert_lint(
- 'gtk_widget_style_get_property(style, NULL, NULL);',
- 'Use 0 instead of NULL. [readability/null] [5]',
- 'foo.cpp')
- self.assert_lint(
- 'gtk_widget_style_get_valist(style, NULL, NULL);',
- 'Use 0 instead of NULL. [readability/null] [5]',
- 'foo.cpp')
-
- # 2. C++ and C bool values should be written as true and
- # false. Objective-C BOOL values should be written as YES and NO.
- # FIXME: Implement this.
-
- # 3. Tests for true/false, null/non-null, and zero/non-zero should
- # all be done without equality comparisons.
- self.assert_lint(
- 'if (count == 0)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
- self.assert_lint_one_of_many_errors_re(
- 'if (string != NULL)',
- r'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons\.')
- self.assert_lint(
- 'if (condition == true)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
- self.assert_lint(
- 'if (myVariable != /* Why would anyone put a comment here? */ false)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
-
- self.assert_lint(
- 'if (0 /* This comment also looks odd to me. */ != aLongerVariableName)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
- self.assert_lint_one_of_many_errors_re(
- 'if (NULL == thisMayBeNull)',
- r'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons\.')
- self.assert_lint(
- 'if (true != anotherCondition)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
- self.assert_lint(
- 'if (false == myBoolValue)',
- 'Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons.'
- ' [readability/comparison_to_zero] [5]')
-
- self.assert_lint(
- 'if (fontType == trueType)',
- '')
- self.assert_lint(
- 'if (othertrue == fontType)',
- '')
- self.assert_lint(
- 'if (LIKELY(foo == 0))',
- '')
- self.assert_lint(
- 'if (UNLIKELY(foo == 0))',
- '')
- self.assert_lint(
- 'if ((a - b) == 0.5)',
- '')
- self.assert_lint(
- 'if (0.5 == (a - b))',
- '')
- self.assert_lint(
- 'if (LIKELY(foo == NULL))',
- 'Use 0 instead of NULL. [readability/null] [5]')
- self.assert_lint(
- 'if (UNLIKELY(foo == NULL))',
- 'Use 0 instead of NULL. [readability/null] [5]')
-
- def test_directive_indentation(self):
- self.assert_lint(
- " #if FOO",
- "preprocessor directives (e.g., #ifdef, #define, #import) should never be indented."
- " [whitespace/indent] [4]",
- "foo.cpp")
-
- def test_using_std(self):
- self.assert_lint(
- 'using std::min;',
- "Use 'using namespace std;' instead of 'using std::min;'."
- " [build/using_std] [4]",
- 'foo.cpp')
-
- def test_using_namespace(self):
- self.assert_lint(
- 'using namespace foo;',
- "Do not use 'using namespace foo;'."
- " [build/using_namespace] [4]",
- 'foo.h')
-
- def test_max_macro(self):
- self.assert_lint(
- 'int i = MAX(0, 1);',
- '',
- 'foo.c')
-
- self.assert_lint(
- 'int i = MAX(0, 1);',
- 'Use std::max() or std::max<type>() instead of the MAX() macro.'
- ' [runtime/max_min_macros] [4]',
- 'foo.cpp')
-
- self.assert_lint(
- 'inline int foo() { return MAX(0, 1); }',
- 'Use std::max() or std::max<type>() instead of the MAX() macro.'
- ' [runtime/max_min_macros] [4]',
- 'foo.h')
-
- def test_min_macro(self):
- self.assert_lint(
- 'int i = MIN(0, 1);',
- '',
- 'foo.c')
-
- self.assert_lint(
- 'int i = MIN(0, 1);',
- 'Use std::min() or std::min<type>() instead of the MIN() macro.'
- ' [runtime/max_min_macros] [4]',
- 'foo.cpp')
-
- self.assert_lint(
- 'inline int foo() { return MIN(0, 1); }',
- 'Use std::min() or std::min<type>() instead of the MIN() macro.'
- ' [runtime/max_min_macros] [4]',
- 'foo.h')
-
- def test_ctype_fucntion(self):
- self.assert_lint(
- 'int i = isascii(8);',
- 'Use equivelent function in <wtf/ASCIICType.h> instead of the '
- 'isascii() function. [runtime/ctype_function] [4]',
- 'foo.cpp')
-
- def test_names(self):
- name_underscore_error_message = " is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4]"
- name_tooshort_error_message = " is incorrectly named. Don't use the single letter 'l' as an identifier name. [readability/naming] [4]"
-
- # Basic cases from WebKit style guide.
- self.assert_lint('struct Data;', '')
- self.assert_lint('size_t bufferSize;', '')
- self.assert_lint('class HTMLDocument;', '')
- self.assert_lint('String mimeType();', '')
- self.assert_lint('size_t buffer_size;',
- 'buffer_size' + name_underscore_error_message)
- self.assert_lint('short m_length;', '')
- self.assert_lint('short _length;',
- '_length' + name_underscore_error_message)
- self.assert_lint('short length_;',
- 'length_' + name_underscore_error_message)
- self.assert_lint('unsigned _length;',
- '_length' + name_underscore_error_message)
- self.assert_lint('unsigned long _length;',
- '_length' + name_underscore_error_message)
- self.assert_lint('unsigned long long _length;',
- '_length' + name_underscore_error_message)
-
- # Allow underscores in Objective C files.
- self.assert_lint('unsigned long long _length;',
- '',
- 'foo.m')
- self.assert_lint('unsigned long long _length;',
- '',
- 'foo.mm')
- self.assert_lint('#import "header_file.h"\n'
- 'unsigned long long _length;',
- '',
- 'foo.h')
- self.assert_lint('unsigned long long _length;\n'
- '@interface WebFullscreenWindow;',
- '',
- 'foo.h')
- self.assert_lint('unsigned long long _length;\n'
- '@implementation WebFullscreenWindow;',
- '',
- 'foo.h')
- self.assert_lint('unsigned long long _length;\n'
- '@class WebWindowFadeAnimation;',
- '',
- 'foo.h')
-
- # Variable name 'l' is easy to confuse with '1'
- self.assert_lint('int l;', 'l' + name_tooshort_error_message)
- self.assert_lint('size_t l;', 'l' + name_tooshort_error_message)
- self.assert_lint('long long l;', 'l' + name_tooshort_error_message)
-
- # Pointers, references, functions, templates, and adjectives.
- self.assert_lint('char* under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('const int UNDER_SCORE;',
- 'UNDER_SCORE' + name_underscore_error_message)
- self.assert_lint('static inline const char const& const under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('WebCore::RenderObject* under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('int func_name();',
- 'func_name' + name_underscore_error_message)
- self.assert_lint('RefPtr<RenderObject*> under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('WTF::Vector<WTF::RefPtr<const RenderObject* const> > under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('int under_score[];',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('struct dirent* under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('long under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('long long under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('long double under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('long long int under_score;',
- 'under_score' + name_underscore_error_message)
-
- # Declarations in control statement.
- self.assert_lint('if (int under_score = 42) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('else if (int under_score = 42) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('for (int under_score = 42; cond; i++) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('while (foo & under_score = bar) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('for (foo * under_score = p; cond; i++) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('for (foo * under_score; cond; i++) {',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('while (foo & value_in_thirdparty_library) {', '')
- self.assert_lint('while (foo * value_in_thirdparty_library) {', '')
- self.assert_lint('if (mli && S_OK == mli->foo()) {', '')
-
- # More member variables and functions.
- self.assert_lint('int SomeClass::s_validName', '')
- self.assert_lint('int m_under_score;',
- 'm_under_score' + name_underscore_error_message)
- self.assert_lint('int SomeClass::s_under_score = 0;',
- 'SomeClass::s_under_score' + name_underscore_error_message)
- self.assert_lint('int SomeClass::under_score = 0;',
- 'SomeClass::under_score' + name_underscore_error_message)
-
- # Other statements.
- self.assert_lint('return INT_MAX;', '')
- self.assert_lint('return_t under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('goto under_score;',
- 'under_score' + name_underscore_error_message)
- self.assert_lint('delete static_cast<Foo*>(p);', '')
-
- # Multiple variables in one line.
- self.assert_lint('void myFunction(int variable1, int another_variable);',
- 'another_variable' + name_underscore_error_message)
- self.assert_lint('int variable1, another_variable;',
- 'another_variable' + name_underscore_error_message)
- self.assert_lint('int first_variable, secondVariable;',
- 'first_variable' + name_underscore_error_message)
- self.assert_lint('void my_function(int variable_1, int variable_2);',
- ['my_function' + name_underscore_error_message,
- 'variable_1' + name_underscore_error_message,
- 'variable_2' + name_underscore_error_message])
- self.assert_lint('for (int variable_1, variable_2;;) {',
- ['variable_1' + name_underscore_error_message,
- 'variable_2' + name_underscore_error_message])
-
- # There is an exception for op code functions but only in the JavaScriptCore directory.
- self.assert_lint('void this_op_code(int var1, int var2)', '', 'Source/JavaScriptCore/foo.cpp')
- self.assert_lint('void op_code(int var1, int var2)', '', 'Source/JavaScriptCore/foo.cpp')
- self.assert_lint('void this_op_code(int var1, int var2)', 'this_op_code' + name_underscore_error_message)
-
- # GObject requires certain magical names in class declarations.
- self.assert_lint('void webkit_dom_object_init();', '')
- self.assert_lint('void webkit_dom_object_class_init();', '')
-
- # There is an exception for GTK+ API.
- self.assert_lint('void webkit_web_view_load(int var1, int var2)', '', 'Source/Webkit/gtk/webkit/foo.cpp')
- self.assert_lint('void webkit_web_view_load(int var1, int var2)', '', 'Source/Webkit2/UIProcess/gtk/foo.cpp')
-
- # Test that this doesn't also apply to files not in a 'gtk' directory.
- self.assert_lint('void webkit_web_view_load(int var1, int var2)',
- 'webkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
- ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
- # Test that this doesn't also apply to names that don't start with 'webkit_'.
- self.assert_lint_one_of_many_errors_re('void otherkit_web_view_load(int var1, int var2)',
- 'otherkit_web_view_load is incorrectly named. Don\'t use underscores in your identifier names.'
- ' [readability/naming/underscores] [4]', 'Source/Webkit/webkit/foo.cpp')
-
- # There is an exception for some unit tests that begin with "tst_".
- self.assert_lint('void tst_QWebFrame::arrayObjectEnumerable(int var1, int var2)', '')
-
- # The Qt API uses names that begin with "qt_" or "_q_".
- self.assert_lint('void QTFrame::qt_drt_is_awesome(int var1, int var2)', '')
- self.assert_lint('void QTFrame::_q_drt_is_awesome(int var1, int var2)', '')
- self.assert_lint('void qt_drt_is_awesome(int var1, int var2);', '')
- self.assert_lint('void _q_drt_is_awesome(int var1, int var2);', '')
-
- # Cairo forward-declarations should not be a failure.
- self.assert_lint('typedef struct _cairo cairo_t;', '')
- self.assert_lint('typedef struct _cairo_surface cairo_surface_t;', '')
- self.assert_lint('typedef struct _cairo_scaled_font cairo_scaled_font_t;', '')
-
- # EFL forward-declarations should not be a failure.
- self.assert_lint('typedef struct _Ecore_Evas Ecore_Evas;', '')
- self.assert_lint('typedef struct _Ecore_Pipe Ecore_Pipe;', '')
- self.assert_lint('typedef struct _Eina_Rectangle Eina_Rectangle;', '')
- self.assert_lint('typedef struct _Evas_Object Evas_Object;', '')
- self.assert_lint('typedef struct _Ewk_History_Item Ewk_History_Item;', '')
-
- # NPAPI functions that start with NPN_, NPP_ or NP_ are allowed.
- self.assert_lint('void NPN_Status(NPP, const char*)', '')
- self.assert_lint('NPError NPP_SetWindow(NPP instance, NPWindow *window)', '')
- self.assert_lint('NPObject* NP_Allocate(NPP, NPClass*)', '')
-
- # const_iterator is allowed as well.
- self.assert_lint('typedef VectorType::const_iterator const_iterator;', '')
-
- # vm_throw is allowed as well.
- self.assert_lint('int vm_throw;', '')
-
- # Bitfields.
- self.assert_lint('unsigned _fillRule : 1;',
- '_fillRule' + name_underscore_error_message)
-
- # new operators in initialization.
- self.assert_lint('OwnPtr<uint32_t> variable(new uint32_t);', '')
- self.assert_lint('OwnPtr<uint32_t> variable(new (expr) uint32_t);', '')
- self.assert_lint('OwnPtr<uint32_t> under_score(new uint32_t);',
- 'under_score' + name_underscore_error_message)
-
- def test_parameter_names(self):
- # Leave meaningless variable names out of function declarations.
- meaningless_variable_name_error_message = 'The parameter name "%s" adds no information, so it should be removed. [readability/parameter_name] [5]'
-
- parameter_error_rules = ('-',
- '+readability/parameter_name')
- # No variable name, so no error.
- self.assertEqual('',
- self.perform_lint('void func(int);', 'test.cpp', parameter_error_rules))
-
- # Verify that copying the name of the set function causes the error (with some odd casing).
- self.assertEqual(meaningless_variable_name_error_message % 'itemCount',
- self.perform_lint('void setItemCount(size_t itemCount);', 'test.cpp', parameter_error_rules))
- self.assertEqual(meaningless_variable_name_error_message % 'abcCount',
- self.perform_lint('void setABCCount(size_t abcCount);', 'test.cpp', parameter_error_rules))
-
- # Verify that copying a type name will trigger the warning (even if the type is a template parameter).
- self.assertEqual(meaningless_variable_name_error_message % 'context',
- self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context);', 'test.cpp', parameter_error_rules))
-
- # Verify that acronyms as variable names trigger the error (for both set functions and type names).
- self.assertEqual(meaningless_variable_name_error_message % 'ec',
- self.perform_lint('void setExceptionCode(int ec);', 'test.cpp', parameter_error_rules))
- self.assertEqual(meaningless_variable_name_error_message % 'ec',
- self.perform_lint('void funct(ExceptionCode ec);', 'test.cpp', parameter_error_rules))
-
- # 'object' alone, appended, or as part of an acronym is meaningless.
- self.assertEqual(meaningless_variable_name_error_message % 'object',
- self.perform_lint('void funct(RenderView object);', 'test.cpp', parameter_error_rules))
- self.assertEqual(meaningless_variable_name_error_message % 'viewObject',
- self.perform_lint('void funct(RenderView viewObject);', 'test.cpp', parameter_error_rules))
- self.assertEqual(meaningless_variable_name_error_message % 'rvo',
- self.perform_lint('void funct(RenderView rvo);', 'test.cpp', parameter_error_rules))
-
- # Check that r, g, b, and a are allowed.
- self.assertEqual('',
- self.perform_lint('void setRGBAValues(int r, int g, int b, int a);', 'test.cpp', parameter_error_rules))
-
- # Verify that a simple substring match isn't done which would cause false positives.
- self.assertEqual('',
- self.perform_lint('void setNateLateCount(size_t elate);', 'test.cpp', parameter_error_rules))
- self.assertEqual('',
- self.perform_lint('void funct(NateLate elate);', 'test.cpp', parameter_error_rules))
-
- # Don't have generate warnings for functions (only declarations).
- self.assertEqual('',
- self.perform_lint('void funct(PassRefPtr<ScriptExecutionContext> context)\n'
- '{\n'
- '}\n', 'test.cpp', parameter_error_rules))
-
- def test_comments(self):
- # A comment at the beginning of a line is ok.
- self.assert_lint('// comment', '')
- self.assert_lint(' // comment', '')
-
- self.assert_lint('} // namespace WebCore',
- 'One space before end of line comments'
- ' [whitespace/comments] [5]')
-
- def test_webkit_export_check(self):
- webkit_export_error_rules = ('-', '+readability/webkit_export')
- self.assertEqual('',
- self.perform_lint(
- '{}\n'
- 'WEBKIT_EXPORT\n'
- 'virtual\n'
- 'int\n'
- 'foo() = 0;\n',
- 'test.h',
- webkit_export_error_rules))
-
- def test_other(self):
- # FIXME: Implement this.
- pass
-
-
-class CppCheckerTest(unittest.TestCase):
-
- """Tests CppChecker class."""
-
- def mock_handle_style_error(self):
- pass
-
- def _checker(self):
- return CppChecker("foo", "h", self.mock_handle_style_error, 3)
-
- def test_init(self):
- """Test __init__ constructor."""
- checker = self._checker()
- self.assertEqual(checker.file_extension, "h")
- self.assertEqual(checker.file_path, "foo")
- self.assertEqual(checker.handle_style_error, self.mock_handle_style_error)
- self.assertEqual(checker.min_confidence, 3)
-
- def test_eq(self):
- """Test __eq__ equality function."""
- checker1 = self._checker()
- checker2 = self._checker()
-
- # == calls __eq__.
- self.assertTrue(checker1 == checker2)
-
- def mock_handle_style_error2(self):
- pass
-
- # Verify that a difference in any argument cause equality to fail.
- checker = CppChecker("foo", "h", self.mock_handle_style_error, 3)
- self.assertFalse(checker == CppChecker("bar", "h", self.mock_handle_style_error, 3))
- self.assertFalse(checker == CppChecker("foo", "c", self.mock_handle_style_error, 3))
- self.assertFalse(checker == CppChecker("foo", "h", mock_handle_style_error2, 3))
- self.assertFalse(checker == CppChecker("foo", "h", self.mock_handle_style_error, 4))
-
- def test_ne(self):
- """Test __ne__ inequality function."""
- checker1 = self._checker()
- checker2 = self._checker()
-
- # != calls __ne__.
- # By default, __ne__ always returns true on different objects.
- # Thus, just check the distinguishing case to verify that the
- # code defines __ne__.
- self.assertFalse(checker1 != checker2)
diff --git a/Tools/Scripts/webkitpy/style/checkers/jsonchecker.py b/Tools/Scripts/webkitpy/style/checkers/jsonchecker.py
deleted file mode 100644
index 264cbeec3..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/jsonchecker.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2011 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. 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 INC. 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.
-
-"""Checks WebKit style for JSON files."""
-
-import json
-import re
-
-
-class JSONChecker(object):
- """Processes JSON lines for checking style."""
-
- categories = set(('json/syntax',))
-
- def __init__(self, file_path, handle_style_error):
- self._handle_style_error = handle_style_error
- self._handle_style_error.turn_off_line_filtering()
-
- def check(self, lines):
- try:
- json.loads('\n'.join(lines) + '\n')
- except ValueError, e:
- self._handle_style_error(self.line_number_from_json_exception(e), 'json/syntax', 5, str(e))
-
- @staticmethod
- def line_number_from_json_exception(error):
- match = re.search(r': line (?P<line>\d+) column \d+', str(error))
- if not match:
- return 0
- return int(match.group('line'))
diff --git a/Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py b/Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py
deleted file mode 100644
index 62a0793c4..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/jsonchecker_unittest.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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.
-
-"""Unit test for jsonchecker.py."""
-
-import unittest2 as unittest
-
-import jsonchecker
-
-
-class MockErrorHandler(object):
- def __init__(self, handle_style_error):
- self.turned_off_filtering = False
- self._handle_style_error = handle_style_error
-
- def turn_off_line_filtering(self):
- self.turned_off_filtering = True
-
- def __call__(self, line_number, category, confidence, message):
- self._handle_style_error(self, line_number, category, confidence, message)
- return True
-
-
-class JSONCheckerTest(unittest.TestCase):
- """Tests JSONChecker class."""
-
- def test_line_number_from_json_exception(self):
- tests = (
- (0, 'No JSON object could be decoded'),
- (2, 'Expecting property name: line 2 column 1 (char 2)'),
- (3, 'Expecting object: line 3 column 1 (char 15)'),
- (9, 'Expecting property name: line 9 column 21 (char 478)'),
- )
- for expected_line, message in tests:
- self.assertEqual(expected_line, jsonchecker.JSONChecker.line_number_from_json_exception(ValueError(message)))
-
- def assert_no_error(self, json_data):
- def handle_style_error(mock_error_handler, line_number, category, confidence, message):
- self.fail('Unexpected error: %d %s %d %s' % (line_number, category, confidence, message))
-
- error_handler = MockErrorHandler(handle_style_error)
- checker = jsonchecker.JSONChecker('foo.json', error_handler)
- checker.check(json_data.split('\n'))
- self.assertTrue(error_handler.turned_off_filtering)
-
- def assert_error(self, expected_line_number, expected_category, json_data):
- def handle_style_error(mock_error_handler, line_number, category, confidence, message):
- mock_error_handler.had_error = True
- self.assertEqual(expected_line_number, line_number)
- self.assertEqual(expected_category, category)
- self.assertIn(category, jsonchecker.JSONChecker.categories)
-
- error_handler = MockErrorHandler(handle_style_error)
- error_handler.had_error = False
-
- checker = jsonchecker.JSONChecker('foo.json', error_handler)
- checker.check(json_data.split('\n'))
- self.assertTrue(error_handler.had_error)
- self.assertTrue(error_handler.turned_off_filtering)
-
- def mock_handle_style_error(self):
- pass
-
- def test_conflict_marker(self):
- self.assert_error(0, 'json/syntax', '<<<<<<< HEAD\n{\n}\n')
-
- def test_single_quote(self):
- self.assert_error(2, 'json/syntax', "{\n'slaves': []\n}\n")
-
- def test_init(self):
- error_handler = MockErrorHandler(self.mock_handle_style_error)
- checker = jsonchecker.JSONChecker('foo.json', error_handler)
- self.assertEqual(checker._handle_style_error, error_handler)
-
- def test_no_error(self):
- self.assert_no_error("""{
- "slaves": [ { "name": "test-slave", "platform": "*" },
- { "name": "apple-xserve-4", "platform": "mac-snowleopard" }
- ],
-
- "builders": [ { "name": "SnowLeopard Intel Release (Build)", "type": "Build", "builddir": "snowleopard-intel-release",
- "platform": "mac-snowleopard", "configuration": "release", "architectures": ["x86_64"],
- "slavenames": ["apple-xserve-4"]
- }
- ],
-
- "schedulers": [ { "type": "PlatformSpecificScheduler", "platform": "mac-snowleopard", "branch": "trunk", "treeStableTimer": 45.0,
- "builderNames": ["SnowLeopard Intel Release (Build)", "SnowLeopard Intel Debug (Build)"]
- }
- ]
-}
-""")
diff --git a/Tools/Scripts/webkitpy/style/checkers/png.py b/Tools/Scripts/webkitpy/style/checkers/png.py
deleted file mode 100644
index 430d6f0a0..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/png.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2012 Balazs Ankes (bank@inf.u-szeged.hu) University of Szeged
-#
-# 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 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.
-
-
-"""Supports checking WebKit style in png files."""
-
-import os
-import re
-
-from webkitpy.common import checksvnconfigfile
-from webkitpy.common import read_checksum_from_png
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.common.checkout.scm.detection import SCMDetector
-
-class PNGChecker(object):
- """Check svn:mime-type for checking style"""
-
- categories = set(['image/png'])
-
- def __init__(self, file_path, handle_style_error, scm=None, host=None):
- self._file_path = file_path
- self._handle_style_error = handle_style_error
- self._host = host or SystemHost()
- self._fs = self._host.filesystem
- self._detector = scm or SCMDetector(self._fs, self._host.executive).detect_scm_system(self._fs.getcwd())
-
- def check(self, inline=None):
- errorstr = ""
- config_file_path = ""
- detection = self._detector.display_name()
-
- if self._fs.exists(self._file_path) and self._file_path.endswith("-expected.png"):
- with self._fs.open_binary_file_for_reading(self._file_path) as filehandle:
- if not read_checksum_from_png.read_checksum(filehandle):
- self._handle_style_error(0, 'image/png', 5, "Image lacks a checksum. Generate pngs using run-webkit-tests to ensure they have a checksum.")
-
- if detection == "git":
- (file_missing, autoprop_missing, png_missing) = checksvnconfigfile.check(self._host, self._fs)
- config_file_path = checksvnconfigfile.config_file_path(self._host, self._fs)
-
- if file_missing:
- self._handle_style_error(0, 'image/png', 5, "There is no SVN config file. (%s)" % config_file_path)
- elif autoprop_missing and png_missing:
- self._handle_style_error(0, 'image/png', 5, checksvnconfigfile.errorstr_autoprop(config_file_path) + checksvnconfigfile.errorstr_png(config_file_path))
- elif autoprop_missing:
- self._handle_style_error(0, 'image/png', 5, checksvnconfigfile.errorstr_autoprop(config_file_path))
- elif png_missing:
- self._handle_style_error(0, 'image/png', 5, checksvnconfigfile.errorstr_png(config_file_path))
-
- elif detection == "svn":
- prop_get = self._detector.propget("svn:mime-type", self._file_path)
- if prop_get != "image/png":
- errorstr = "Set the svn:mime-type property (svn propset svn:mime-type image/png %s)." % self._file_path
- self._handle_style_error(0, 'image/png', 5, errorstr)
-
diff --git a/Tools/Scripts/webkitpy/style/checkers/png_unittest.py b/Tools/Scripts/webkitpy/style/checkers/png_unittest.py
deleted file mode 100644
index a71a441f1..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/png_unittest.py
+++ /dev/null
@@ -1,131 +0,0 @@
-# Copyright (C) 2012 Balazs Ankes (bank@inf.u-szeged.hu) University of Szeged
-#
-# 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 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.
-
-"""Unit test for png.py."""
-
-import unittest2 as unittest
-from png import PNGChecker
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-
-
-class MockSCMDetector(object):
-
- def __init__(self, scm, prop=None):
- self._scm = scm
- self._prop = prop
-
- def display_name(self):
- return self._scm
-
- def propget(self, pname, path):
- return self._prop
-
-
-class PNGCheckerTest(unittest.TestCase):
- """Tests PNGChecker class."""
-
- def test_init(self):
- """Test __init__() method."""
-
- def mock_handle_style_error(self):
- pass
-
- checker = PNGChecker("test/config", mock_handle_style_error, MockSCMDetector('git'), MockSystemHost())
- self.assertEqual(checker._file_path, "test/config")
- self.assertEqual(checker._handle_style_error, mock_handle_style_error)
-
- def test_check(self):
- errors = []
-
- def mock_handle_style_error(line_number, category, confidence, message):
- error = (line_number, category, confidence, message)
- errors.append(error)
-
- file_path = ''
-
- fs = MockFileSystem()
-
- scm = MockSCMDetector('svn')
- checker = PNGChecker(file_path, mock_handle_style_error, scm, MockSystemHost(filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 1)
- self.assertEqual(errors[0],
- (0, 'image/png', 5, 'Set the svn:mime-type property (svn propset svn:mime-type image/png ).'))
-
- files = {'/Users/mock/.subversion/config': 'enable-auto-props = yes\n*.png = svn:mime-type=image/png'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker("config", mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 0)
-
- files = {'/Users/mock/.subversion/config': '#enable-auto-props = yes'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker("config", mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 1)
-
- files = {'/Users/mock/.subversion/config': 'enable-auto-props = yes\n#enable-auto-props = yes\n*.png = svn:mime-type=image/png'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker("config", mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 0)
-
- files = {'/Users/mock/.subversion/config': '#enable-auto-props = yes\nenable-auto-props = yes\n*.png = svn:mime-type=image/png'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker("config", mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 0)
-
- files = {'/Users/mock/.subversion/config': 'enable-auto-props = no'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker("config", mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 1)
-
- file_path = "foo.png"
- fs.write_binary_file(file_path, "Dummy binary data")
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker(file_path, mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 1)
-
- file_path = "foo-expected.png"
- fs.write_binary_file(file_path, "Dummy binary data")
- scm = MockSCMDetector('git')
- errors = []
- checker = PNGChecker(file_path, mock_handle_style_error, scm, MockSystemHost(os_name='linux', filesystem=fs))
- checker.check()
- self.assertEqual(len(errors), 2)
- self.assertEqual(errors[0], (0, 'image/png', 5, 'Image lacks a checksum. Generate pngs using run-webkit-tests to ensure they have a checksum.'))
diff --git a/Tools/Scripts/webkitpy/style/checkers/python.py b/Tools/Scripts/webkitpy/style/checkers/python.py
deleted file mode 100644
index 2066d9d51..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/python.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Supports checking WebKit style in Python files."""
-
-import re
-from StringIO import StringIO
-
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.webkit_finder import WebKitFinder
-from webkitpy.thirdparty.autoinstalled import pep8
-from webkitpy.thirdparty.autoinstalled.pylint import lint
-from webkitpy.thirdparty.autoinstalled.pylint.reporters.text import ParseableTextReporter
-
-
-class PythonChecker(object):
- """Processes text lines for checking style."""
- def __init__(self, file_path, handle_style_error):
- self._file_path = file_path
- self._handle_style_error = handle_style_error
-
- def check(self, lines):
- self._check_pep8(lines)
- self._check_pylint(lines)
-
- def _check_pep8(self, lines):
- # Initialize pep8.options, which is necessary for
- # Checker.check_all() to execute.
- pep8.process_options(arglist=[self._file_path])
-
- pep8_checker = pep8.Checker(self._file_path)
-
- def _pep8_handle_error(line_number, offset, text, check):
- # FIXME: Incorporate the character offset into the error output.
- # This will require updating the error handler __call__
- # signature to include an optional "offset" parameter.
- pep8_code = text[:4]
- pep8_message = text[5:]
-
- category = "pep8/" + pep8_code
-
- self._handle_style_error(line_number, category, 5, pep8_message)
-
- pep8_checker.report_error = _pep8_handle_error
- pep8_errors = pep8_checker.check_all()
-
- def _check_pylint(self, lines):
- pylinter = Pylinter()
-
- # FIXME: for now, we only report pylint errors, but we should be catching and
- # filtering warnings using the rules in style/checker.py instead.
- output = pylinter.run(['-E', self._file_path])
-
- lint_regex = re.compile('([^:]+):([^:]+): \[([^]]+)\] (.*)')
- for error in output.getvalue().splitlines():
- match_obj = lint_regex.match(error)
- assert(match_obj)
- line_number = int(match_obj.group(2))
- category_and_method = match_obj.group(3).split(', ')
- category = 'pylint/' + (category_and_method[0])
- if len(category_and_method) > 1:
- message = '[%s] %s' % (category_and_method[1], match_obj.group(4))
- else:
- message = match_obj.group(4)
- self._handle_style_error(line_number, category, 5, message)
-
-
-class Pylinter(object):
- # We filter out these messages because they are bugs in pylint that produce false positives.
- # FIXME: Does it make sense to combine these rules with the rules in style/checker.py somehow?
- FALSE_POSITIVES = [
- # possibly http://www.logilab.org/ticket/98613 ?
- "Instance of 'Popen' has no 'poll' member",
- "Instance of 'Popen' has no 'returncode' member",
- "Instance of 'Popen' has no 'stdin' member",
- "Instance of 'Popen' has no 'stdout' member",
- "Instance of 'Popen' has no 'stderr' member",
- "Instance of 'Popen' has no 'wait' member",
- "Instance of 'Popen' has no 'pid' member",
- ]
-
- def __init__(self):
- self._pylintrc = WebKitFinder(FileSystem()).path_from_webkit_base('Tools', 'Scripts', 'webkitpy', 'pylintrc')
-
- def run(self, argv):
- output = _FilteredStringIO(self.FALSE_POSITIVES)
- lint.Run(['--rcfile', self._pylintrc] + argv, reporter=ParseableTextReporter(output=output), exit=False)
- return output
-
-
-class _FilteredStringIO(StringIO):
- def __init__(self, bad_messages):
- StringIO.__init__(self)
- self.dropped_last_msg = False
- self.bad_messages = bad_messages
-
- def write(self, msg=''):
- if not self._filter(msg):
- StringIO.write(self, msg)
-
- def _filter(self, msg):
- if any(bad_message in msg for bad_message in self.bad_messages):
- self.dropped_last_msg = True
- return True
- if self.dropped_last_msg:
- # We drop the newline after a dropped message as well.
- self.dropped_last_msg = False
- if msg == '\n':
- return True
- return False
diff --git a/Tools/Scripts/webkitpy/style/checkers/python_unittest.py b/Tools/Scripts/webkitpy/style/checkers/python_unittest.py
deleted file mode 100644
index 2aa7cbe4c..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/python_unittest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Unit tests for python.py."""
-
-import os
-import unittest2 as unittest
-
-from python import PythonChecker
-
-
-class PythonCheckerTest(unittest.TestCase):
-
- """Tests the PythonChecker class."""
-
- def test_init(self):
- """Test __init__() method."""
- def _mock_handle_style_error(self):
- pass
-
- checker = PythonChecker("foo.txt", _mock_handle_style_error)
- self.assertEqual(checker._file_path, "foo.txt")
- self.assertEqual(checker._handle_style_error,
- _mock_handle_style_error)
-
- def test_check(self):
- """Test check() method."""
- errors = []
-
- def _mock_handle_style_error(line_number, category, confidence,
- message):
- error = (line_number, category, confidence, message)
- errors.append(error)
-
- current_dir = os.path.dirname(__file__)
- file_path = os.path.join(current_dir, "python_unittest_input.py")
-
- checker = PythonChecker(file_path, _mock_handle_style_error)
- checker.check(lines=[])
-
- self.assertEqual(errors, [
- (4, "pep8/W291", 5, "trailing whitespace"),
- (4, "pylint/E0602", 5, "Undefined variable 'error'"),
- ])
-
- def test_pylint_false_positives(self):
- """Test that pylint false positives are suppressed."""
- errors = []
-
- def _mock_handle_style_error(line_number, category, confidence,
- message):
- error = (line_number, category, confidence, message)
- errors.append(error)
-
- current_dir = os.path.dirname(__file__)
- file_path = os.path.join(current_dir, "python_unittest_falsepositives.py")
-
- checker = PythonChecker(file_path, _mock_handle_style_error)
- checker.check(lines=[])
-
- self.assertEqual(errors, [])
diff --git a/Tools/Scripts/webkitpy/style/checkers/python_unittest_falsepositives.py b/Tools/Scripts/webkitpy/style/checkers/python_unittest_falsepositives.py
deleted file mode 100644
index 0ad66a502..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/python_unittest_falsepositives.py
+++ /dev/null
@@ -1,16 +0,0 @@
-# This test verifies that the false positives generated by pylint are
-# correctly suppressed.
-
-import subprocess
-
-
-def test_popen(proc):
- p = subprocess.Popen(proc, stdout=subprocess.PIPE,
- stderr=subprocess.STDOUT)
- tmp1 = p.poll
- tmp2 = p.returncode
- tmp3 = p.stdin
- tmp4 = p.stdout
- tmp5 = p.stderr
- tmp6 = p.wait
- tmp7 = p.pid
diff --git a/Tools/Scripts/webkitpy/style/checkers/python_unittest_input.py b/Tools/Scripts/webkitpy/style/checkers/python_unittest_input.py
deleted file mode 100644
index afa1d4e22..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/python_unittest_input.py
+++ /dev/null
@@ -1,4 +0,0 @@
-# This file is sample input for python_unittest.py and includes two
-# problems, one that will generate a PEP-8 warning for trailing whitespace
-# and one that will generate a pylint error for an undefined variable.
-print error()
diff --git a/Tools/Scripts/webkitpy/style/checkers/test_expectations.py b/Tools/Scripts/webkitpy/style/checkers/test_expectations.py
deleted file mode 100644
index 67f38416d..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/test_expectations.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Checks WebKit style for test_expectations files."""
-
-import logging
-import optparse
-import os
-import re
-import sys
-
-from common import TabChecker
-from webkitpy.common.host import Host
-from webkitpy.layout_tests.models.test_expectations import TestExpectationParser
-
-
-_log = logging.getLogger(__name__)
-
-
-class TestExpectationsChecker(object):
- """Processes TestExpectations lines for validating the syntax."""
-
- categories = set(['test/expectations'])
-
- def _determine_port_from_expectations_path(self, host, expectations_path):
- # Pass a configuration to avoid calling default_configuration() when initializing the port (takes 0.5 seconds on a Mac Pro!).
- options_wk1 = optparse.Values({'configuration': 'Release', 'webkit_test_runner': False})
- options_wk2 = optparse.Values({'configuration': 'Release', 'webkit_test_runner': True})
- for port_name in host.port_factory.all_port_names():
- ports = [host.port_factory.get(port_name, options=options_wk1), host.port_factory.get(port_name, options=options_wk2)]
- for port in ports:
- for test_expectation_file in port.expectations_files():
- if test_expectation_file.replace(port.path_from_webkit_base() + host.filesystem.sep, '') == expectations_path:
- return port
- return None
-
- def __init__(self, file_path, handle_style_error, host=None):
- self._file_path = file_path
- self._handle_style_error = handle_style_error
- self._tab_checker = TabChecker(file_path, handle_style_error)
-
- # FIXME: host should be a required parameter, not an optional one.
- host = host or Host()
- host.initialize_scm()
-
- self._port_obj = self._determine_port_from_expectations_path(host, file_path)
-
- # Suppress error messages of test_expectations module since they will be reported later.
- log = logging.getLogger("webkitpy.layout_tests.layout_package.test_expectations")
- log.setLevel(logging.CRITICAL)
-
- def _handle_error_message(self, lineno, message, confidence):
- pass
-
- def check_test_expectations(self, expectations_str, tests=None):
- parser = TestExpectationParser(self._port_obj, tests, allow_rebaseline_modifier=False)
- expectations = parser.parse('expectations', expectations_str)
-
- level = 5
- for expectation_line in expectations:
- for warning in expectation_line.warnings:
- self._handle_style_error(expectation_line.line_number, 'test/expectations', level, warning)
-
- def check_tabs(self, lines):
- self._tab_checker.check(lines)
-
- def check(self, lines):
- expectations = '\n'.join(lines)
- if self._port_obj:
- self.check_test_expectations(expectations_str=expectations, tests=None)
-
- # Warn tabs in lines as well
- self.check_tabs(lines)
diff --git a/Tools/Scripts/webkitpy/style/checkers/test_expectations_unittest.py b/Tools/Scripts/webkitpy/style/checkers/test_expectations_unittest.py
deleted file mode 100644
index 18648dfee..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/test_expectations_unittest.py
+++ /dev/null
@@ -1,122 +0,0 @@
-# Copyright (C) 2010 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.
-
-import os
-import sys
-import unittest2 as unittest
-
-from test_expectations import TestExpectationsChecker
-from webkitpy.common.host_mock import MockHost
-
-
-class ErrorCollector(object):
- """An error handler class for unit tests."""
-
- def __init__(self):
- self._errors = []
- self.turned_off_filtering = False
-
- def turn_off_line_filtering(self):
- self.turned_off_filtering = True
-
- def __call__(self, lineno, category, confidence, message):
- self._errors.append('%s [%s] [%d]' % (message, category, confidence))
- return True
-
- def get_errors(self):
- return ''.join(self._errors)
-
- def reset_errors(self):
- self._errors = []
- self.turned_off_filtering = False
-
-
-class TestExpectationsTestCase(unittest.TestCase):
- """TestCase for test_expectations.py"""
-
- def setUp(self):
- self._error_collector = ErrorCollector()
- self._test_file = 'passes/text.html'
-
- def _expect_port_for_expectations_path(self, expected_port_implementation, expectations_path):
- host = MockHost()
- checker = TestExpectationsChecker(expectations_path, ErrorCollector(), host=host)
- port = checker._determine_port_from_expectations_path(host, expectations_path)
- if port:
- self.assertTrue(port.name().startswith(expected_port_implementation))
- else:
- self.assertIsNone(expected_port_implementation)
-
- def test_determine_port_from_expectations_path(self):
- self._expect_port_for_expectations_path(None, '/')
- self._expect_port_for_expectations_path(None, '/mock-checkout/LayoutTests/platform/win/TestExpectations')
- self._expect_port_for_expectations_path('win', 'LayoutTests/platform/win/TestExpectations')
- self._expect_port_for_expectations_path('efl', 'LayoutTests/platform/efl/TestExpectations')
- self._expect_port_for_expectations_path('efl', 'LayoutTests/platform/efl-wk1/TestExpectations')
- self._expect_port_for_expectations_path('efl', 'LayoutTests/platform/efl-wk2/TestExpectations')
- self._expect_port_for_expectations_path('qt', 'LayoutTests/platform/qt-win/TestExpectations')
- # FIXME: check-webkit-style doesn't know how to create port objects for all Qt version (4.8, 5.0) and
- # will only check files based on the installed version of Qt.
- #self._expect_port_for_expectations_path('qt', 'LayoutTests/platform/qt-5.0-wk2/TestExpectations')
-
- def assert_lines_lint(self, lines, should_pass, expected_output=None):
- self._error_collector.reset_errors()
-
- host = MockHost()
- checker = TestExpectationsChecker('test/TestExpectations',
- self._error_collector, host=host)
-
- # We should have failed to find a valid port object for that path.
- self.assertIsNone(checker._port_obj)
-
- # Now use a test port so we can check the lines.
- checker._port_obj = host.port_factory.get('test-mac-leopard')
- checker.check_test_expectations(expectations_str='\n'.join(lines),
- tests=[self._test_file])
- checker.check_tabs(lines)
- if should_pass:
- self.assertEqual('', self._error_collector.get_errors())
- elif expected_output:
- self.assertEqual(expected_output, self._error_collector.get_errors())
- else:
- self.assertNotEquals('', self._error_collector.get_errors())
-
- # Note that a patch might change a line that introduces errors elsewhere, but we
- # don't want to lint the whole file (it can unfairly punish patches for pre-existing errors).
- # We rely on a separate lint-webkitpy step on the bots to keep the whole file okay.
- # FIXME: See https://bugs.webkit.org/show_bug.cgi?id=104712 .
- self.assertFalse(self._error_collector.turned_off_filtering)
-
- def test_valid_expectations(self):
- self.assert_lines_lint(["webkit.org/b/1234 [ Mac ] passes/text.html [ Pass Failure ]"], should_pass=True)
-
- def test_invalid_expectations(self):
- self.assert_lines_lint(["Bug(me) passes/text.html [ Give Up]"], should_pass=False)
-
- def test_tab(self):
- self.assert_lines_lint(["\twebkit.org/b/1 passes/text.html [ Pass ]"], should_pass=False, expected_output="Line contains tab character. [whitespace/tab] [5]")
diff --git a/Tools/Scripts/webkitpy/style/checkers/text.py b/Tools/Scripts/webkitpy/style/checkers/text.py
deleted file mode 100644
index 114765875..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/text.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@webkit.org)
-#
-# 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.
-
-"""Checks WebKit style for text files."""
-
-from common import TabChecker
-
-class TextChecker(object):
-
- """Processes text lines for checking style."""
-
- def __init__(self, file_path, handle_style_error):
- self.file_path = file_path
- self.handle_style_error = handle_style_error
- self._tab_checker = TabChecker(file_path, handle_style_error)
-
- def check(self, lines):
- self._tab_checker.check(lines)
-
-
-# FIXME: Remove this function (requires refactoring unit tests).
-def process_file_data(filename, lines, error):
- checker = TextChecker(filename, error)
- checker.check(lines)
-
diff --git a/Tools/Scripts/webkitpy/style/checkers/text_unittest.py b/Tools/Scripts/webkitpy/style/checkers/text_unittest.py
deleted file mode 100644
index 01e373abc..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/text_unittest.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (C) 2009 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.
-
-"""Unit test for text_style.py."""
-
-import unittest2 as unittest
-
-import text as text_style
-from text import TextChecker
-
-class TextStyleTestCase(unittest.TestCase):
- """TestCase for text_style.py"""
-
- def assertNoError(self, lines):
- """Asserts that the specified lines has no errors."""
- self.had_error = False
-
- def error_for_test(line_number, category, confidence, message):
- """Records if an error occurs."""
- self.had_error = True
-
- text_style.process_file_data('', lines, error_for_test)
- self.assertFalse(self.had_error, '%s should not have any errors.' % lines)
-
- def assertError(self, lines, expected_line_number):
- """Asserts that the specified lines has an error."""
- self.had_error = False
-
- def error_for_test(line_number, category, confidence, message):
- """Checks if the expected error occurs."""
- self.assertEqual(expected_line_number, line_number)
- self.assertEqual('whitespace/tab', category)
- self.had_error = True
-
- text_style.process_file_data('', lines, error_for_test)
- self.assertTrue(self.had_error, '%s should have an error [whitespace/tab].' % lines)
-
-
- def test_no_error(self):
- """Tests for no error cases."""
- self.assertNoError([''])
- self.assertNoError(['abc def', 'ggg'])
-
-
- def test_error(self):
- """Tests for error cases."""
- self.assertError(['2009-12-16\tKent Tamura\t<tkent@chromium.org>'], 1)
- self.assertError(['2009-12-16 Kent Tamura <tkent@chromium.org>',
- '',
- '\tReviewed by NOBODY.'], 3)
-
-
-class TextCheckerTest(unittest.TestCase):
-
- """Tests TextChecker class."""
-
- def mock_handle_style_error(self):
- pass
-
- def test_init(self):
- """Test __init__ constructor."""
- checker = TextChecker("foo.txt", self.mock_handle_style_error)
- self.assertEqual(checker.file_path, "foo.txt")
- self.assertEqual(checker.handle_style_error, self.mock_handle_style_error)
diff --git a/Tools/Scripts/webkitpy/style/checkers/watchlist.py b/Tools/Scripts/webkitpy/style/checkers/watchlist.py
deleted file mode 100644
index d1a27f777..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/watchlist.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2011 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.
-
-
-"""Checks WebKit style for the watchlist file."""
-
-
-from webkitpy.common.watchlist.watchlistparser import WatchListParser
-
-
-class WatchListChecker(object):
-
- """Processes the watch list for checking style."""
-
- def __init__(self, file_path, handle_style_error):
- self._handle_style_error = handle_style_error
- self._handle_style_error.turn_off_line_filtering()
-
- def check(self, lines):
- def log_to_style_error(message):
- # Always report line 0 since we don't have anything better.
- self._handle_style_error(0,
- 'watchlist/general', 5,
- message)
-
- WatchListParser(log_error=log_to_style_error).parse('\n'.join(lines))
diff --git a/Tools/Scripts/webkitpy/style/checkers/watchlist_unittest.py b/Tools/Scripts/webkitpy/style/checkers/watchlist_unittest.py
deleted file mode 100644
index 90950c9f9..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/watchlist_unittest.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (C) 2010 Apple Inc. All rights reserved.
-# Copyright (C) 2011 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.
-
-
-'''Unit tests for watchlist.py.'''
-
-
-import unittest2 as unittest
-
-
-import watchlist
-
-
-class MockErrorHandler(object):
- def __init__(self, handle_style_error):
- self.turned_off_filtering = False
- self._handle_style_error = handle_style_error
-
- def turn_off_line_filtering(self):
- self.turned_off_filtering = True
-
- def __call__(self, line_number, category, confidence, message):
- self._handle_style_error(self, line_number, category, confidence, message)
- return True
-
-
-class WatchListTest(unittest.TestCase):
- def test_basic_error_message(self):
- def handle_style_error(mock_error_handler, line_number, category, confidence, message):
- mock_error_handler.had_error = True
- self.assertEqual(0, line_number)
- self.assertEqual('watchlist/general', category)
-
- error_handler = MockErrorHandler(handle_style_error)
- error_handler.had_error = False
- checker = watchlist.WatchListChecker('watchlist', error_handler)
- checker.check(['{"DEFINTIONS": {}}'])
- self.assertTrue(error_handler.had_error)
- self.assertTrue(error_handler.turned_off_filtering)
diff --git a/Tools/Scripts/webkitpy/style/checkers/xcodeproj.py b/Tools/Scripts/webkitpy/style/checkers/xcodeproj.py
deleted file mode 100644
index 3de3d197f..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/xcodeproj.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2011 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:
-# 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 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.
-
-"""Checks Xcode project files."""
-
-import re
-
-
-class XcodeProjectFileChecker(object):
-
- """Processes Xcode project file lines for checking style."""
-
- def __init__(self, file_path, handle_style_error):
- self.file_path = file_path
- self.handle_style_error = handle_style_error
- self.handle_style_error.turn_off_line_filtering()
- self._development_region_regex = re.compile('developmentRegion = (?P<region>.+);')
-
- def _check_development_region(self, line_index, line):
- """Returns True when developmentRegion is detected."""
- matched = self._development_region_regex.search(line)
- if not matched:
- return False
- if matched.group('region') != 'English':
- self.handle_style_error(line_index,
- 'xcodeproj/settings', 5,
- 'developmentRegion is not English.')
- return True
-
- def check(self, lines):
- development_region_is_detected = False
- for line_index, line in enumerate(lines):
- if self._check_development_region(line_index, line):
- development_region_is_detected = True
-
- if not development_region_is_detected:
- self.handle_style_error(len(lines),
- 'xcodeproj/settings', 5,
- 'Missing "developmentRegion = English".')
diff --git a/Tools/Scripts/webkitpy/style/checkers/xcodeproj_unittest.py b/Tools/Scripts/webkitpy/style/checkers/xcodeproj_unittest.py
deleted file mode 100644
index 36a1a41da..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/xcodeproj_unittest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2011 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:
-# 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 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.
-
-"""Unit test for xcodeproj.py."""
-
-import xcodeproj
-import unittest2 as unittest
-
-
-class TestErrorHandler(object):
- """Error handler for XcodeProjectFileChecker unittests"""
- def __init__(self, handler):
- self.handler = handler
-
- def turn_off_line_filtering(self):
- pass
-
- def __call__(self, line_number, category, confidence, message):
- self.handler(self, line_number, category, confidence, message)
- return True
-
-
-class XcodeProjectFileCheckerTest(unittest.TestCase):
- """Tests XcodeProjectFileChecker class."""
-
- def assert_no_error(self, lines):
- def handler(error_handler, line_number, category, confidence, message):
- self.fail('Unexpected error: %d %s %d %s' % (line_number, category, confidence, message))
-
- error_handler = TestErrorHandler(handler)
- checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
- checker.check(lines)
-
- def assert_error(self, lines, expected_message):
- self.had_error = False
-
- def handler(error_handler, line_number, category, confidence, message):
- self.assertEqual(expected_message, message)
- self.had_error = True
- error_handler = TestErrorHandler(handler)
- checker = xcodeproj.XcodeProjectFileChecker('', error_handler)
- checker.check(lines)
- self.assertTrue(self.had_error, '%s should have error: %s.' % (lines, expected_message))
-
- def test_detect_development_region(self):
- self.assert_no_error(['developmentRegion = English;'])
- self.assert_error([''], 'Missing "developmentRegion = English".')
- self.assert_error(['developmentRegion = Japanese;'],
- 'developmentRegion is not English.')
diff --git a/Tools/Scripts/webkitpy/style/checkers/xml.py b/Tools/Scripts/webkitpy/style/checkers/xml.py
deleted file mode 100644
index ff4a4159f..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/xml.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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.
-
-"""Checks WebKit style for XML files."""
-
-from __future__ import absolute_import
-
-from xml.parsers import expat
-
-
-class XMLChecker(object):
- """Processes XML lines for checking style."""
-
- def __init__(self, file_path, handle_style_error):
- self._handle_style_error = handle_style_error
- self._handle_style_error.turn_off_line_filtering()
-
- def check(self, lines):
- parser = expat.ParserCreate()
- try:
- for line in lines:
- parser.Parse(line)
- parser.Parse('\n')
- parser.Parse('', True)
- except expat.ExpatError, error:
- self._handle_style_error(error.lineno, 'xml/syntax', 5, expat.ErrorString(error.code))
diff --git a/Tools/Scripts/webkitpy/style/checkers/xml_unittest.py b/Tools/Scripts/webkitpy/style/checkers/xml_unittest.py
deleted file mode 100644
index a224de3f0..000000000
--- a/Tools/Scripts/webkitpy/style/checkers/xml_unittest.py
+++ /dev/null
@@ -1,87 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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.
-
-"""Unit test for xml.py."""
-
-import unittest2 as unittest
-
-import xml
-
-
-class MockErrorHandler(object):
- def __init__(self, handle_style_error):
- self.turned_off_filtering = False
- self._handle_style_error = handle_style_error
-
- def turn_off_line_filtering(self):
- self.turned_off_filtering = True
-
- def __call__(self, line_number, category, confidence, message):
- self._handle_style_error(self, line_number, category, confidence, message)
- return True
-
-
-class XMLCheckerTest(unittest.TestCase):
- """Tests XMLChecker class."""
-
- def assert_no_error(self, xml_data):
- def handle_style_error(mock_error_handler, line_number, category, confidence, message):
- self.fail('Unexpected error: %d %s %d %s' % (line_number, category, confidence, message))
-
- error_handler = MockErrorHandler(handle_style_error)
- checker = xml.XMLChecker('foo.xml', error_handler)
- checker.check(xml_data.split('\n'))
- self.assertTrue(error_handler.turned_off_filtering)
-
- def assert_error(self, expected_line_number, expected_category, xml_data):
- def handle_style_error(mock_error_handler, line_number, category, confidence, message):
- mock_error_handler.had_error = True
- self.assertEqual(expected_line_number, line_number)
- self.assertEqual(expected_category, category)
-
- error_handler = MockErrorHandler(handle_style_error)
- error_handler.had_error = False
-
- checker = xml.XMLChecker('foo.xml', error_handler)
- checker.check(xml_data.split('\n'))
- self.assertTrue(error_handler.had_error)
- self.assertTrue(error_handler.turned_off_filtering)
-
- def mock_handle_style_error(self):
- pass
-
- def test_conflict_marker(self):
- self.assert_error(1, 'xml/syntax', '<<<<<<< HEAD\n<foo>\n</foo>\n')
-
- def test_extra_closing_tag(self):
- self.assert_error(3, 'xml/syntax', '<foo>\n</foo>\n</foo>\n')
-
- def test_init(self):
- error_handler = MockErrorHandler(self.mock_handle_style_error)
- checker = xml.XMLChecker('foo.xml', error_handler)
- self.assertEqual(checker._handle_style_error, error_handler)
-
- def test_missing_closing_tag(self):
- self.assert_error(3, 'xml/syntax', '<foo>\n<bar>\n</foo>\n')
-
- def test_no_error(self):
- self.assert_no_error('<foo>\n</foo>')
diff --git a/Tools/Scripts/webkitpy/style/error_handlers.py b/Tools/Scripts/webkitpy/style/error_handlers.py
deleted file mode 100644
index 99d5cb33b..000000000
--- a/Tools/Scripts/webkitpy/style/error_handlers.py
+++ /dev/null
@@ -1,164 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Defines style error handler classes.
-
-A style error handler is a function to call when a style error is
-found. Style error handlers can also have state. A class that represents
-a style error handler should implement the following methods.
-
-Methods:
-
- __call__(self, line_number, category, confidence, message):
-
- Handle the occurrence of a style error.
-
- Check whether the error is reportable. If so, increment the total
- error count and report the details. Note that error reporting can
- be suppressed after reaching a certain number of reports.
-
- Args:
- line_number: The integer line number of the line containing the error.
- category: The name of the category of the error, for example
- "whitespace/newline".
- confidence: An integer between 1 and 5 inclusive that represents the
- application's level of confidence in the error. The value
- 5 means that we are certain of the problem, and the
- value 1 means that it could be a legitimate construct.
- message: The error message to report.
-
-"""
-
-
-import sys
-
-
-class DefaultStyleErrorHandler(object):
-
- """The default style error handler."""
-
- def __init__(self, file_path, configuration, increment_error_count,
- line_numbers=None):
- """Create a default style error handler.
-
- Args:
- file_path: The path to the file containing the error. This
- is used for reporting to the user.
- configuration: A StyleProcessorConfiguration instance.
- increment_error_count: A function that takes no arguments and
- increments the total count of reportable
- errors.
- line_numbers: An array of line numbers of the lines for which
- style errors should be reported, or None if errors
- for all lines should be reported. When it is not
- None, this array normally contains the line numbers
- corresponding to the modified lines of a patch.
-
- """
- if line_numbers is not None:
- line_numbers = set(line_numbers)
-
- self._file_path = file_path
- self._configuration = configuration
- self._increment_error_count = increment_error_count
- self._line_numbers = line_numbers
-
- # A string to integer dictionary cache of the number of reportable
- # errors per category passed to this instance.
- self._category_totals = {}
-
- # Useful for unit testing.
- def __eq__(self, other):
- """Return whether this instance is equal to another."""
- if self._configuration != other._configuration:
- return False
- if self._file_path != other._file_path:
- return False
- if self._increment_error_count != other._increment_error_count:
- return False
- if self._line_numbers != other._line_numbers:
- return False
-
- return True
-
- # Useful for unit testing.
- def __ne__(self, other):
- # Python does not automatically deduce __ne__ from __eq__.
- return not self.__eq__(other)
-
- def _add_reportable_error(self, category):
- """Increment the error count and return the new category total."""
- self._increment_error_count() # Increment the total.
-
- # Increment the category total.
- if not category in self._category_totals:
- self._category_totals[category] = 1
- else:
- self._category_totals[category] += 1
-
- return self._category_totals[category]
-
- def _max_reports(self, category):
- """Return the maximum number of errors to report."""
- if not category in self._configuration.max_reports_per_category:
- return None
- return self._configuration.max_reports_per_category[category]
-
- def should_line_be_checked(self, line_number):
- "Returns if a particular line should be checked"
- # Was the line that was modified?
- return self._line_numbers is None or line_number in self._line_numbers
-
- def turn_off_line_filtering(self):
- self._line_numbers = None
-
- def __call__(self, line_number, category, confidence, message):
- """Handle the occurrence of a style error.
-
- See the docstring of this module for more information.
-
- """
- if not self.should_line_be_checked(line_number):
- return False
-
- if not self._configuration.is_reportable(category=category,
- confidence_in_error=confidence,
- file_path=self._file_path):
- return False
-
- category_total = self._add_reportable_error(category)
-
- max_reports = self._max_reports(category)
-
- if (max_reports is not None) and (category_total > max_reports):
- # Then suppress displaying the error.
- return False
-
- self._configuration.write_style_error(category=category,
- confidence_in_error=confidence,
- file_path=self._file_path,
- line_number=line_number,
- message=message)
- if category_total == max_reports:
- self._configuration.stderr_write("Suppressing further [%s] reports "
- "for this file.\n" % category)
- return True
diff --git a/Tools/Scripts/webkitpy/style/error_handlers_unittest.py b/Tools/Scripts/webkitpy/style/error_handlers_unittest.py
deleted file mode 100644
index 0b4c35596..000000000
--- a/Tools/Scripts/webkitpy/style/error_handlers_unittest.py
+++ /dev/null
@@ -1,196 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Unit tests for error_handlers.py."""
-
-
-import unittest2 as unittest
-
-from checker import StyleProcessorConfiguration
-from error_handlers import DefaultStyleErrorHandler
-from filter import FilterConfiguration
-
-
-class DefaultStyleErrorHandlerTest(unittest.TestCase):
-
- """Tests the DefaultStyleErrorHandler class."""
-
- def setUp(self):
- self._error_messages = []
- self._error_count = 0
-
- _category = "whitespace/tab"
- """The category name for the tests in this class."""
-
- _file_path = "foo.h"
- """The file path for the tests in this class."""
-
- def _mock_increment_error_count(self):
- self._error_count += 1
-
- def _mock_stderr_write(self, message):
- self._error_messages.append(message)
-
- def _style_checker_configuration(self):
- """Return a StyleProcessorConfiguration instance for testing."""
- base_rules = ["-whitespace", "+whitespace/tab"]
- filter_configuration = FilterConfiguration(base_rules=base_rules)
-
- return StyleProcessorConfiguration(
- filter_configuration=filter_configuration,
- max_reports_per_category={"whitespace/tab": 2},
- min_confidence=3,
- output_format="vs7",
- stderr_write=self._mock_stderr_write)
-
- def _error_handler(self, configuration, line_numbers=None):
- return DefaultStyleErrorHandler(configuration=configuration,
- file_path=self._file_path,
- increment_error_count=self._mock_increment_error_count,
- line_numbers=line_numbers)
-
- def _check_initialized(self):
- """Check that count and error messages are initialized."""
- self.assertEqual(0, self._error_count)
- self.assertEqual(0, len(self._error_messages))
-
- def _call_error_handler(self, handle_error, confidence, line_number=100):
- """Call the given error handler with a test error."""
- handle_error(line_number=line_number,
- category=self._category,
- confidence=confidence,
- message="message")
-
- def test_eq__true_return_value(self):
- """Test the __eq__() method for the return value of True."""
- handler1 = self._error_handler(configuration=None)
- handler2 = self._error_handler(configuration=None)
-
- self.assertTrue(handler1.__eq__(handler2))
-
- def test_eq__false_return_value(self):
- """Test the __eq__() method for the return value of False."""
- def make_handler(configuration=self._style_checker_configuration(),
- file_path='foo.txt', increment_error_count=lambda: True,
- line_numbers=[100]):
- return DefaultStyleErrorHandler(configuration=configuration,
- file_path=file_path,
- increment_error_count=increment_error_count,
- line_numbers=line_numbers)
-
- handler = make_handler()
-
- # Establish a baseline for our comparisons below.
- self.assertTrue(handler.__eq__(make_handler()))
-
- # Verify that a difference in any argument causes equality to fail.
- self.assertFalse(handler.__eq__(make_handler(configuration=None)))
- self.assertFalse(handler.__eq__(make_handler(file_path='bar.txt')))
- self.assertFalse(handler.__eq__(make_handler(increment_error_count=None)))
- self.assertFalse(handler.__eq__(make_handler(line_numbers=[50])))
-
- def test_ne(self):
- """Test the __ne__() method."""
- # By default, __ne__ always returns true on different objects.
- # Thus, check just the distinguishing case to verify that the
- # code defines __ne__.
- handler1 = self._error_handler(configuration=None)
- handler2 = self._error_handler(configuration=None)
-
- self.assertFalse(handler1.__ne__(handler2))
-
- def test_non_reportable_error(self):
- """Test __call__() with a non-reportable error."""
- self._check_initialized()
- configuration = self._style_checker_configuration()
-
- confidence = 1
- # Confirm the error is not reportable.
- self.assertFalse(configuration.is_reportable(self._category,
- confidence,
- self._file_path))
- error_handler = self._error_handler(configuration)
- self._call_error_handler(error_handler, confidence)
-
- self.assertEqual(0, self._error_count)
- self.assertEqual([], self._error_messages)
-
- # Also serves as a reportable error test.
- def test_max_reports_per_category(self):
- """Test error report suppression in __call__() method."""
- self._check_initialized()
- configuration = self._style_checker_configuration()
- error_handler = self._error_handler(configuration)
-
- confidence = 5
-
- # First call: usual reporting.
- self._call_error_handler(error_handler, confidence)
- self.assertEqual(1, self._error_count)
- self.assertEqual(1, len(self._error_messages))
- self.assertEqual(self._error_messages,
- ["foo.h(100): message [whitespace/tab] [5]\n"])
-
- # Second call: suppression message reported.
- self._call_error_handler(error_handler, confidence)
- # The "Suppressing further..." message counts as an additional
- # message (but not as an addition to the error count).
- self.assertEqual(2, self._error_count)
- self.assertEqual(3, len(self._error_messages))
- self.assertEqual(self._error_messages[-2],
- "foo.h(100): message [whitespace/tab] [5]\n")
- self.assertEqual(self._error_messages[-1],
- "Suppressing further [whitespace/tab] reports "
- "for this file.\n")
-
- # Third call: no report.
- self._call_error_handler(error_handler, confidence)
- self.assertEqual(3, self._error_count)
- self.assertEqual(3, len(self._error_messages))
-
- def test_line_numbers(self):
- """Test the line_numbers parameter."""
- self._check_initialized()
- configuration = self._style_checker_configuration()
- error_handler = self._error_handler(configuration,
- line_numbers=[50])
- confidence = 5
-
- # Error on non-modified line: no error.
- self._call_error_handler(error_handler, confidence, line_number=60)
- self.assertEqual(0, self._error_count)
- self.assertEqual([], self._error_messages)
-
- # Error on modified line: error.
- self._call_error_handler(error_handler, confidence, line_number=50)
- self.assertEqual(1, self._error_count)
- self.assertEqual(self._error_messages,
- ["foo.h(50): message [whitespace/tab] [5]\n"])
-
- # Error on non-modified line after turning off line filtering: error.
- error_handler.turn_off_line_filtering()
- self._call_error_handler(error_handler, confidence, line_number=60)
- self.assertEqual(2, self._error_count)
- self.assertEqual(self._error_messages,
- ['foo.h(50): message [whitespace/tab] [5]\n',
- 'foo.h(60): message [whitespace/tab] [5]\n',
- 'Suppressing further [whitespace/tab] reports for this file.\n'])
diff --git a/Tools/Scripts/webkitpy/style/filereader.py b/Tools/Scripts/webkitpy/style/filereader.py
deleted file mode 100644
index 1181ad4d8..000000000
--- a/Tools/Scripts/webkitpy/style/filereader.py
+++ /dev/null
@@ -1,154 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2010 ProFUSION embedded systems
-#
-# 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.
-
-"""Supports reading and processing text files."""
-
-import codecs
-import logging
-import os
-import sys
-
-
-_log = logging.getLogger(__name__)
-
-
-class TextFileReader(object):
-
- """Supports reading and processing text files.
-
- Attributes:
- file_count: The total number of files passed to this instance
- for processing, including non-text files and files
- that should be skipped.
- delete_only_file_count: The total number of files that are not
- processed this instance actually because
- the files don't have any modified lines
- but should be treated as processed.
-
- """
-
- def __init__(self, filesystem, processor):
- """Create an instance.
-
- Arguments:
- processor: A ProcessorBase instance.
-
- """
- # FIXME: Although TextFileReader requires a FileSystem it circumvents it in two places!
- self.filesystem = filesystem
- self._processor = processor
- self.file_count = 0
- self.delete_only_file_count = 0
-
- def _read_lines(self, file_path):
- """Read the file at a path, and return its lines.
-
- Raises:
- IOError: If the file does not exist or cannot be read.
-
- """
- # Support the UNIX convention of using "-" for stdin.
- if file_path == '-':
- file = codecs.StreamReaderWriter(sys.stdin,
- codecs.getreader('utf8'),
- codecs.getwriter('utf8'),
- 'replace')
- else:
- # We do not open the file with universal newline support
- # (codecs does not support it anyway), so the resulting
- # lines contain trailing "\r" characters if we are reading
- # a file with CRLF endings.
- # FIXME: This should use self.filesystem
- file = codecs.open(file_path, 'r', 'utf8', 'replace')
-
- try:
- contents = file.read()
- finally:
- file.close()
-
- lines = contents.split('\n')
- return lines
-
- def process_file(self, file_path, **kwargs):
- """Process the given file by calling the processor's process() method.
-
- Args:
- file_path: The path of the file to process.
- **kwargs: Any additional keyword parameters that should be passed
- to the processor's process() method. The process()
- method should support these keyword arguments.
-
- Raises:
- SystemExit: If no file at file_path exists.
-
- """
- self.file_count += 1
-
- if not self.filesystem.exists(file_path) and file_path != "-":
- _log.error("File does not exist: '%s'" % file_path)
- sys.exit(1) # FIXME: This should throw or return instead of exiting directly.
-
- if not self._processor.should_process(file_path):
- _log.debug("Skipping file: '%s'" % file_path)
- return
- _log.debug("Processing file: '%s'" % file_path)
-
- try:
- lines = self._read_lines(file_path)
- except IOError, err:
- message = ("Could not read file. Skipping: '%s'\n %s" % (file_path, err))
- _log.warn(message)
- return
-
- self._processor.process(lines, file_path, **kwargs)
-
- def _process_directory(self, directory):
- """Process all files in the given directory, recursively."""
- # FIXME: We should consider moving to self.filesystem.files_under() (or adding walk() to FileSystem)
- for dir_path, dir_names, file_names in os.walk(directory):
- for file_name in file_names:
- file_path = self.filesystem.join(dir_path, file_name)
- self.process_file(file_path)
-
- def process_paths(self, paths):
- for path in paths:
- if self.filesystem.isdir(path):
- self._process_directory(directory=path)
- else:
- self.process_file(path)
-
- def count_delete_only_file(self):
- """Count up files that contains only deleted lines.
-
- Files which has no modified or newly-added lines don't need
- to check style, but should be treated as checked. For that
- purpose, we just count up the number of such files.
- """
- self.delete_only_file_count += 1
diff --git a/Tools/Scripts/webkitpy/style/filereader_unittest.py b/Tools/Scripts/webkitpy/style/filereader_unittest.py
deleted file mode 100644
index 2c506ec20..000000000
--- a/Tools/Scripts/webkitpy/style/filereader_unittest.py
+++ /dev/null
@@ -1,155 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 unittest2 as unittest
-
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.logtesting import LoggingTestCase
-from webkitpy.style.checker import ProcessorBase
-from webkitpy.style.filereader import TextFileReader
-
-
-class TextFileReaderTest(LoggingTestCase):
-
- class MockProcessor(ProcessorBase):
-
- """A processor for test purposes.
-
- This processor simply records the parameters passed to its process()
- method for later checking by the unittest test methods.
-
- """
-
- def __init__(self):
- self.processed = []
- """The parameters passed for all calls to the process() method."""
-
- def should_process(self, file_path):
- return not file_path.endswith('should_not_process.txt')
-
- def process(self, lines, file_path, test_kwarg=None):
- self.processed.append((lines, file_path, test_kwarg))
-
- def setUp(self):
- LoggingTestCase.setUp(self)
- # FIXME: This should be a MockFileSystem once TextFileReader is moved entirely on top of FileSystem.
- self.filesystem = FileSystem()
- self._temp_dir = str(self.filesystem.mkdtemp())
- self._processor = TextFileReaderTest.MockProcessor()
- self._file_reader = TextFileReader(self.filesystem, self._processor)
-
- def tearDown(self):
- LoggingTestCase.tearDown(self)
- self.filesystem.rmtree(self._temp_dir)
-
- def _create_file(self, rel_path, text):
- """Create a file with given text and return the path to the file."""
- # FIXME: There are better/more secure APIs for creating tmp file paths.
- file_path = self.filesystem.join(self._temp_dir, rel_path)
- self.filesystem.write_text_file(file_path, text)
- return file_path
-
- def _passed_to_processor(self):
- """Return the parameters passed to MockProcessor.process()."""
- return self._processor.processed
-
- def _assert_file_reader(self, passed_to_processor, file_count):
- """Assert the state of the file reader."""
- self.assertEqual(passed_to_processor, self._passed_to_processor())
- self.assertEqual(file_count, self._file_reader.file_count)
-
- def test_process_file__does_not_exist(self):
- try:
- self._file_reader.process_file('does_not_exist.txt')
- except SystemExit, err:
- self.assertEqual(str(err), '1')
- else:
- self.fail('No Exception raised.')
- self._assert_file_reader([], 1)
- self.assertLog(["ERROR: File does not exist: 'does_not_exist.txt'\n"])
-
- def test_process_file__is_dir(self):
- temp_dir = self.filesystem.join(self._temp_dir, 'test_dir')
- self.filesystem.maybe_make_directory(temp_dir)
-
- self._file_reader.process_file(temp_dir)
-
- # Because the log message below contains exception text, it is
- # possible that the text varies across platforms. For this reason,
- # we check only the portion of the log message that we control,
- # namely the text at the beginning.
- log_messages = self.logMessages()
- # We remove the message we are looking at to prevent the tearDown()
- # from raising an exception when it asserts that no log messages
- # remain.
- message = log_messages.pop()
-
- self.assertTrue(message.startswith("WARNING: Could not read file. Skipping: '%s'\n " % temp_dir))
-
- self._assert_file_reader([], 1)
-
- def test_process_file__should_not_process(self):
- file_path = self._create_file('should_not_process.txt', 'contents')
-
- self._file_reader.process_file(file_path)
- self._assert_file_reader([], 1)
-
- def test_process_file__multiple_lines(self):
- file_path = self._create_file('foo.txt', 'line one\r\nline two\n')
-
- self._file_reader.process_file(file_path)
- processed = [(['line one\r', 'line two', ''], file_path, None)]
- self._assert_file_reader(processed, 1)
-
- def test_process_file__file_stdin(self):
- file_path = self._create_file('-', 'file contents')
-
- self._file_reader.process_file(file_path=file_path, test_kwarg='foo')
- processed = [(['file contents'], file_path, 'foo')]
- self._assert_file_reader(processed, 1)
-
- def test_process_file__with_kwarg(self):
- file_path = self._create_file('foo.txt', 'file contents')
-
- self._file_reader.process_file(file_path=file_path, test_kwarg='foo')
- processed = [(['file contents'], file_path, 'foo')]
- self._assert_file_reader(processed, 1)
-
- def test_process_paths(self):
- # We test a list of paths that contains both a file and a directory.
- dir = self.filesystem.join(self._temp_dir, 'foo_dir')
- self.filesystem.maybe_make_directory(dir)
-
- file_path1 = self._create_file('file1.txt', 'foo')
-
- rel_path = self.filesystem.join('foo_dir', 'file2.txt')
- file_path2 = self._create_file(rel_path, 'bar')
-
- self._file_reader.process_paths([dir, file_path1])
- processed = [(['bar'], file_path2, None),
- (['foo'], file_path1, None)]
- self._assert_file_reader(processed, 2)
-
- def test_count_delete_only_file(self):
- self._file_reader.count_delete_only_file()
- delete_only_file_count = self._file_reader.delete_only_file_count
- self.assertEqual(delete_only_file_count, 1)
diff --git a/Tools/Scripts/webkitpy/style/filter.py b/Tools/Scripts/webkitpy/style/filter.py
deleted file mode 100644
index 608a9e60c..000000000
--- a/Tools/Scripts/webkitpy/style/filter.py
+++ /dev/null
@@ -1,278 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
-
-"""Contains filter-related code."""
-
-
-def validate_filter_rules(filter_rules, all_categories):
- """Validate the given filter rules, and raise a ValueError if not valid.
-
- Args:
- filter_rules: A list of boolean filter rules, for example--
- ["-whitespace", "+whitespace/braces"]
- all_categories: A list of all available category names, for example--
- ["whitespace/tabs", "whitespace/braces"]
-
- Raises:
- ValueError: An error occurs if a filter rule does not begin
- with "+" or "-" or if a filter rule does not match
- the beginning of some category name in the list
- of all available categories.
-
- """
- for rule in filter_rules:
- if not (rule.startswith('+') or rule.startswith('-')):
- raise ValueError('Invalid filter rule "%s": every rule '
- "must start with + or -." % rule)
-
- for category in all_categories:
- if category.startswith(rule[1:]):
- break
- else:
- raise ValueError('Suspected incorrect filter rule "%s": '
- "the rule does not match the beginning "
- "of any category name." % rule)
-
-
-class _CategoryFilter(object):
-
- """Filters whether to check style categories."""
-
- def __init__(self, filter_rules=None):
- """Create a category filter.
-
- Args:
- filter_rules: A list of strings that are filter rules, which
- are strings beginning with the plus or minus
- symbol (+/-). The list should include any
- default filter rules at the beginning.
- Defaults to the empty list.
-
- Raises:
- ValueError: Invalid filter rule if a rule does not start with
- plus ("+") or minus ("-").
-
- """
- if filter_rules is None:
- filter_rules = []
-
- self._filter_rules = filter_rules
- self._should_check_category = {} # Cached dictionary of category to True/False
-
- def __str__(self):
- return ",".join(self._filter_rules)
-
- # Useful for unit testing.
- def __eq__(self, other):
- """Return whether this CategoryFilter instance is equal to another."""
- return self._filter_rules == other._filter_rules
-
- # Useful for unit testing.
- def __ne__(self, other):
- # Python does not automatically deduce from __eq__().
- return not (self == other)
-
- def should_check(self, category):
- """Return whether the category should be checked.
-
- The rules for determining whether a category should be checked
- are as follows. By default all categories should be checked.
- Then apply the filter rules in order from first to last, with
- later flags taking precedence.
-
- A filter rule applies to a category if the string after the
- leading plus/minus (+/-) matches the beginning of the category
- name. A plus (+) means the category should be checked, while a
- minus (-) means the category should not be checked.
-
- """
- if category in self._should_check_category:
- return self._should_check_category[category]
-
- should_check = True # All categories checked by default.
- for rule in self._filter_rules:
- if not category.startswith(rule[1:]):
- continue
- should_check = rule.startswith('+')
- self._should_check_category[category] = should_check # Update cache.
- return should_check
-
-
-class FilterConfiguration(object):
-
- """Supports filtering with path-specific and user-specified rules."""
-
- def __init__(self, base_rules=None, path_specific=None, user_rules=None):
- """Create a FilterConfiguration instance.
-
- Args:
- base_rules: The starting list of filter rules to use for
- processing. The default is the empty list, which
- by itself would mean that all categories should be
- checked.
-
- path_specific: A list of (sub_paths, path_rules) pairs
- that stores the path-specific filter rules for
- appending to the base rules.
- The "sub_paths" value is a list of path
- substrings. If a file path contains one of the
- substrings, then the corresponding path rules
- are appended. The first substring match takes
- precedence, i.e. only the first match triggers
- an append.
- The "path_rules" value is a list of filter
- rules that can be appended to the base rules.
-
- user_rules: A list of filter rules that is always appended
- to the base rules and any path rules. In other
- words, the user rules take precedence over the
- everything. In practice, the user rules are
- provided by the user from the command line.
-
- """
- if base_rules is None:
- base_rules = []
- if path_specific is None:
- path_specific = []
- if user_rules is None:
- user_rules = []
-
- self._base_rules = base_rules
- self._path_specific = path_specific
- self._path_specific_lower = None
- """The backing store for self._get_path_specific_lower()."""
-
- self._user_rules = user_rules
-
- self._path_rules_to_filter = {}
- """Cached dictionary of path rules to CategoryFilter instance."""
-
- # The same CategoryFilter instance can be shared across
- # multiple keys in this dictionary. This allows us to take
- # greater advantage of the caching done by
- # CategoryFilter.should_check().
- self._path_to_filter = {}
- """Cached dictionary of file path to CategoryFilter instance."""
-
- # Useful for unit testing.
- def __eq__(self, other):
- """Return whether this FilterConfiguration is equal to another."""
- if self._base_rules != other._base_rules:
- return False
- if self._path_specific != other._path_specific:
- return False
- if self._user_rules != other._user_rules:
- return False
-
- return True
-
- # Useful for unit testing.
- def __ne__(self, other):
- # Python does not automatically deduce this from __eq__().
- return not self.__eq__(other)
-
- # We use the prefix "_get" since the name "_path_specific_lower"
- # is already taken up by the data attribute backing store.
- def _get_path_specific_lower(self):
- """Return a copy of self._path_specific with the paths lower-cased."""
- if self._path_specific_lower is None:
- self._path_specific_lower = []
- for (sub_paths, path_rules) in self._path_specific:
- sub_paths = map(str.lower, sub_paths)
- self._path_specific_lower.append((sub_paths, path_rules))
- return self._path_specific_lower
-
- def _path_rules_from_path(self, path):
- """Determine the path-specific rules to use, and return as a tuple.
-
- This method returns a tuple rather than a list so the return
- value can be passed to _filter_from_path_rules() without change.
-
- """
- path = path.lower()
- for (sub_paths, path_rules) in self._get_path_specific_lower():
- for sub_path in sub_paths:
- if path.find(sub_path) > -1:
- return tuple(path_rules)
- return () # Default to the empty tuple.
-
- def _filter_from_path_rules(self, path_rules):
- """Return the CategoryFilter associated to the given path rules.
-
- Args:
- path_rules: A tuple of path rules. We require a tuple rather
- than a list so the value can be used as a dictionary
- key in self._path_rules_to_filter.
-
- """
- # We reuse the same CategoryFilter where possible to take
- # advantage of the caching they do.
- if path_rules not in self._path_rules_to_filter:
- rules = list(self._base_rules) # Make a copy
- rules.extend(path_rules)
- rules.extend(self._user_rules)
- self._path_rules_to_filter[path_rules] = _CategoryFilter(rules)
-
- return self._path_rules_to_filter[path_rules]
-
- def _filter_from_path(self, path):
- """Return the CategoryFilter associated to a path."""
- if path not in self._path_to_filter:
- path_rules = self._path_rules_from_path(path)
- filter = self._filter_from_path_rules(path_rules)
- self._path_to_filter[path] = filter
-
- return self._path_to_filter[path]
-
- def should_check(self, category, path):
- """Return whether the given category should be checked.
-
- This method determines whether a category should be checked
- by checking the category name against the filter rules for
- the given path.
-
- For a given path, the filter rules are the combination of
- the base rules, the path-specific rules, and the user-provided
- rules -- in that order. As we will describe below, later rules
- in the list take precedence. The path-specific rules are the
- rules corresponding to the first element of the "path_specific"
- parameter that contains a string case-insensitively matching
- some substring of the path. If there is no such element,
- there are no path-specific rules for that path.
-
- Given a list of filter rules, the logic for determining whether
- a category should be checked is as follows. By default all
- categories should be checked. Then apply the filter rules in
- order from first to last, with later flags taking precedence.
-
- A filter rule applies to a category if the string after the
- leading plus/minus (+/-) matches the beginning of the category
- name. A plus (+) means the category should be checked, while a
- minus (-) means the category should not be checked.
-
- Args:
- category: The category name.
- path: The path of the file being checked.
-
- """
- return self._filter_from_path(path).should_check(category)
-
diff --git a/Tools/Scripts/webkitpy/style/filter_unittest.py b/Tools/Scripts/webkitpy/style/filter_unittest.py
deleted file mode 100644
index b4dd7bc7c..000000000
--- a/Tools/Scripts/webkitpy/style/filter_unittest.py
+++ /dev/null
@@ -1,256 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@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.
-#
-# THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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.
-
-"""Unit tests for filter.py."""
-
-import unittest2 as unittest
-
-from filter import _CategoryFilter as CategoryFilter
-from filter import validate_filter_rules
-from filter import FilterConfiguration
-
-# On Testing __eq__() and __ne__():
-#
-# In the tests below, we deliberately do not use assertEqual() or
-# assertNotEquals() to test __eq__() or __ne__(). We do this to be
-# very explicit about what we are testing, especially in the case
-# of assertNotEquals().
-#
-# Part of the reason is that it is not immediately clear what
-# expression the unittest module uses to assert "not equals" -- the
-# negation of __eq__() or __ne__(), which are not necessarily
-# equivalent expresions in Python. For example, from Python's "Data
-# Model" documentation--
-#
-# "There are no implied relationships among the comparison
-# operators. The truth of x==y does not imply that x!=y is
-# false. Accordingly, when defining __eq__(), one should
-# also define __ne__() so that the operators will behave as
-# expected."
-#
-# (from http://docs.python.org/reference/datamodel.html#object.__ne__ )
-
-class ValidateFilterRulesTest(unittest.TestCase):
-
- """Tests validate_filter_rules() function."""
-
- def test_validate_filter_rules(self):
- all_categories = ["tabs", "whitespace", "build/include"]
-
- bad_rules = [
- "tabs",
- "*tabs",
- " tabs",
- " +tabs",
- "+whitespace/newline",
- "+xxx",
- ]
-
- good_rules = [
- "+tabs",
- "-tabs",
- "+build"
- ]
-
- for rule in bad_rules:
- self.assertRaises(ValueError, validate_filter_rules,
- [rule], all_categories)
-
- for rule in good_rules:
- # This works: no error.
- validate_filter_rules([rule], all_categories)
-
-
-class CategoryFilterTest(unittest.TestCase):
-
- """Tests CategoryFilter class."""
-
- def test_init(self):
- """Test __init__ method."""
- # Test that the attributes are getting set correctly.
- filter = CategoryFilter(["+"])
- self.assertEqual(["+"], filter._filter_rules)
-
- def test_init_default_arguments(self):
- """Test __init__ method default arguments."""
- filter = CategoryFilter()
- self.assertEqual([], filter._filter_rules)
-
- def test_str(self):
- """Test __str__ "to string" operator."""
- filter = CategoryFilter(["+a", "-b"])
- self.assertEqual(str(filter), "+a,-b")
-
- def test_eq(self):
- """Test __eq__ equality function."""
- filter1 = CategoryFilter(["+a", "+b"])
- filter2 = CategoryFilter(["+a", "+b"])
- filter3 = CategoryFilter(["+b", "+a"])
-
- # See the notes at the top of this module about testing
- # __eq__() and __ne__().
- self.assertTrue(filter1.__eq__(filter2))
- self.assertFalse(filter1.__eq__(filter3))
-
- def test_ne(self):
- """Test __ne__ inequality function."""
- # By default, __ne__ always returns true on different objects.
- # Thus, just check the distinguishing case to verify that the
- # code defines __ne__.
- #
- # Also, see the notes at the top of this module about testing
- # __eq__() and __ne__().
- self.assertFalse(CategoryFilter().__ne__(CategoryFilter()))
-
- def test_should_check(self):
- """Test should_check() method."""
- filter = CategoryFilter()
- self.assertTrue(filter.should_check("everything"))
- # Check a second time to exercise cache.
- self.assertTrue(filter.should_check("everything"))
-
- filter = CategoryFilter(["-"])
- self.assertFalse(filter.should_check("anything"))
- # Check a second time to exercise cache.
- self.assertFalse(filter.should_check("anything"))
-
- filter = CategoryFilter(["-", "+ab"])
- self.assertTrue(filter.should_check("abc"))
- self.assertFalse(filter.should_check("a"))
-
- filter = CategoryFilter(["+", "-ab"])
- self.assertFalse(filter.should_check("abc"))
- self.assertTrue(filter.should_check("a"))
-
-
-class FilterConfigurationTest(unittest.TestCase):
-
- """Tests FilterConfiguration class."""
-
- def _config(self, base_rules, path_specific, user_rules):
- """Return a FilterConfiguration instance."""
- return FilterConfiguration(base_rules=base_rules,
- path_specific=path_specific,
- user_rules=user_rules)
-
- def test_init(self):
- """Test __init__ method."""
- # Test that the attributes are getting set correctly.
- # We use parameter values that are different from the defaults.
- base_rules = ["-"]
- path_specific = [(["path"], ["+a"])]
- user_rules = ["+"]
-
- config = self._config(base_rules, path_specific, user_rules)
-
- self.assertEqual(base_rules, config._base_rules)
- self.assertEqual(path_specific, config._path_specific)
- self.assertEqual(user_rules, config._user_rules)
-
- def test_default_arguments(self):
- # Test that the attributes are getting set correctly to the defaults.
- config = FilterConfiguration()
-
- self.assertEqual([], config._base_rules)
- self.assertEqual([], config._path_specific)
- self.assertEqual([], config._user_rules)
-
- def test_eq(self):
- """Test __eq__ method."""
- # See the notes at the top of this module about testing
- # __eq__() and __ne__().
- self.assertTrue(FilterConfiguration().__eq__(FilterConfiguration()))
-
- # Verify that a difference in any argument causes equality to fail.
- config = FilterConfiguration()
-
- # These parameter values are different from the defaults.
- base_rules = ["-"]
- path_specific = [(["path"], ["+a"])]
- user_rules = ["+"]
-
- self.assertFalse(config.__eq__(FilterConfiguration(
- base_rules=base_rules)))
- self.assertFalse(config.__eq__(FilterConfiguration(
- path_specific=path_specific)))
- self.assertFalse(config.__eq__(FilterConfiguration(
- user_rules=user_rules)))
-
- def test_ne(self):
- """Test __ne__ method."""
- # By default, __ne__ always returns true on different objects.
- # Thus, just check the distinguishing case to verify that the
- # code defines __ne__.
- #
- # Also, see the notes at the top of this module about testing
- # __eq__() and __ne__().
- self.assertFalse(FilterConfiguration().__ne__(FilterConfiguration()))
-
- def test_base_rules(self):
- """Test effect of base_rules on should_check()."""
- base_rules = ["-b"]
- path_specific = []
- user_rules = []
-
- config = self._config(base_rules, path_specific, user_rules)
-
- self.assertTrue(config.should_check("a", "path"))
- self.assertFalse(config.should_check("b", "path"))
-
- def test_path_specific(self):
- """Test effect of path_rules_specifier on should_check()."""
- base_rules = ["-"]
- path_specific = [(["path1"], ["+b"]),
- (["path2"], ["+c"])]
- user_rules = []
-
- config = self._config(base_rules, path_specific, user_rules)
-
- self.assertFalse(config.should_check("c", "path1"))
- self.assertTrue(config.should_check("c", "path2"))
- # Test that first match takes precedence.
- self.assertFalse(config.should_check("c", "path2/path1"))
-
- def test_path_with_different_case(self):
- """Test a path that differs only in case."""
- base_rules = ["-"]
- path_specific = [(["Foo/"], ["+whitespace"])]
- user_rules = []
-
- config = self._config(base_rules, path_specific, user_rules)
-
- self.assertFalse(config.should_check("whitespace", "Fooo/bar.txt"))
- self.assertTrue(config.should_check("whitespace", "Foo/bar.txt"))
- # Test different case.
- self.assertTrue(config.should_check("whitespace", "FOO/bar.txt"))
-
- def test_user_rules(self):
- """Test effect of user_rules on should_check()."""
- base_rules = ["-"]
- path_specific = []
- user_rules = ["+b"]
-
- config = self._config(base_rules, path_specific, user_rules)
-
- self.assertFalse(config.should_check("a", "path"))
- self.assertTrue(config.should_check("b", "path"))
-
diff --git a/Tools/Scripts/webkitpy/style/main.py b/Tools/Scripts/webkitpy/style/main.py
deleted file mode 100644
index 574368a3e..000000000
--- a/Tools/Scripts/webkitpy/style/main.py
+++ /dev/null
@@ -1,162 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 codecs
-import logging
-import sys
-
-import webkitpy.style.checker as checker
-from webkitpy.style.patchreader import PatchReader
-from webkitpy.style.checker import StyleProcessor
-from webkitpy.style.filereader import TextFileReader
-from webkitpy.common.host import Host
-
-
-_log = logging.getLogger(__name__)
-
-
-def change_directory(filesystem, checkout_root, paths):
- """Change the working directory to the WebKit checkout root, if possible.
-
- If every path in the paths parameter is below the checkout root (or if
- the paths parameter is empty or None), this method changes the current
- working directory to the checkout root and converts the paths parameter
- as described below.
- This allows the paths being checked to be displayed relative to the
- checkout root, and for path-specific style checks to work as expected.
- Path-specific checks include whether files should be skipped, whether
- custom style rules should apply to certain files, etc.
-
- Returns:
- paths: A copy of the paths parameter -- possibly converted, as follows.
- If this method changed the current working directory to the
- checkout root, then the list is the paths parameter converted to
- normalized paths relative to the checkout root.
-
- Args:
- paths: A list of paths to the files that should be checked for style.
- This argument can be None or the empty list if a git commit
- or all changes under the checkout root should be checked.
- checkout_root: The path to the root of the WebKit checkout.
-
- """
- if paths is not None:
- paths = list(paths)
-
- if paths:
- # Then try converting all of the paths to paths relative to
- # the checkout root.
- rel_paths = []
- for path in paths:
- rel_path = filesystem.relpath(path, checkout_root)
- if rel_path.startswith(filesystem.pardir):
- # Then the path is not below the checkout root. Since all
- # paths should be interpreted relative to the same root,
- # do not interpret any of the paths as relative to the
- # checkout root. Interpret all of them relative to the
- # current working directory, and do not change the current
- # working directory.
- _log.warn(
-"""Path-dependent style checks may not work correctly:
-
- One of the given paths is outside the WebKit checkout of the current
- working directory:
-
- Path: %s
- Checkout root: %s
-
- Pass only files below the checkout root to ensure correct results.
- See the help documentation for more info.
-"""
- % (path, checkout_root))
-
- return paths
- rel_paths.append(rel_path)
- # If we got here, the conversion was successful.
- paths = rel_paths
-
- _log.debug("Changing to checkout root: " + checkout_root)
- filesystem.chdir(checkout_root)
-
- return paths
-
-
-class CheckWebKitStyle(object):
- def _engage_awesome_stderr_hacks(self):
- # Change stderr to write with replacement characters so we don't die
- # if we try to print something containing non-ASCII characters.
- stderr = codecs.StreamReaderWriter(sys.stderr,
- codecs.getreader('utf8'),
- codecs.getwriter('utf8'),
- 'replace')
- # Setting an "encoding" attribute on the stream is necessary to
- # prevent the logging module from raising an error. See
- # the checker.configure_logging() function for more information.
- stderr.encoding = "UTF-8"
-
- # FIXME: Change webkitpy.style so that we do not need to overwrite
- # the global sys.stderr. This involves updating the code to
- # accept a stream parameter where necessary, and not calling
- # sys.stderr explicitly anywhere.
- sys.stderr = stderr
- return stderr
-
- def main(self):
- args = sys.argv[1:]
-
- host = Host()
- host.initialize_scm()
-
- stderr = self._engage_awesome_stderr_hacks()
-
- # Checking for the verbose flag before calling check_webkit_style_parser()
- # lets us enable verbose logging earlier.
- is_verbose = "-v" in args or "--verbose" in args
-
- checker.configure_logging(stream=stderr, is_verbose=is_verbose)
- _log.debug("Verbose logging enabled.")
-
- parser = checker.check_webkit_style_parser()
- (paths, options) = parser.parse(args)
-
- configuration = checker.check_webkit_style_configuration(options)
-
- paths = change_directory(host.filesystem, checkout_root=host.scm().checkout_root, paths=paths)
-
- style_processor = StyleProcessor(configuration)
- file_reader = TextFileReader(host.filesystem, style_processor)
-
- if paths and not options.diff_files:
- file_reader.process_paths(paths)
- else:
- changed_files = paths if options.diff_files else None
- patch = host.scm().create_patch(options.git_commit, changed_files=changed_files)
- patch_checker = PatchReader(file_reader)
- patch_checker.check(patch)
-
- error_count = style_processor.error_count
- file_count = file_reader.file_count
- delete_only_file_count = file_reader.delete_only_file_count
-
- _log.info("Total errors found: %d in %d files" % (error_count, file_count))
- # We fail when style errors are found or there are no checked files.
- return error_count > 0 or (file_count == 0 and delete_only_file_count == 0)
diff --git a/Tools/Scripts/webkitpy/style/main_unittest.py b/Tools/Scripts/webkitpy/style/main_unittest.py
deleted file mode 100644
index dbfc7c83a..000000000
--- a/Tools/Scripts/webkitpy/style/main_unittest.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 unittest2 as unittest
-
-from main import change_directory
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.logtesting import LogTesting
-
-
-class ChangeDirectoryTest(unittest.TestCase):
- _original_directory = "/original"
- _checkout_root = "/WebKit"
-
- def setUp(self):
- self._log = LogTesting.setUp(self)
- self.filesystem = MockFileSystem(dirs=[self._original_directory, self._checkout_root], cwd=self._original_directory)
-
- def tearDown(self):
- self._log.tearDown()
-
- def _change_directory(self, paths, checkout_root):
- return change_directory(self.filesystem, paths=paths, checkout_root=checkout_root)
-
- def _assert_result(self, actual_return_value, expected_return_value,
- expected_log_messages, expected_current_directory):
- self.assertEqual(actual_return_value, expected_return_value)
- self._log.assertMessages(expected_log_messages)
- self.assertEqual(self.filesystem.getcwd(), expected_current_directory)
-
- def test_paths_none(self):
- paths = self._change_directory(checkout_root=self._checkout_root, paths=None)
- self._assert_result(paths, None, [], self._checkout_root)
-
- def test_paths_convertible(self):
- paths = ["/WebKit/foo1.txt", "/WebKit/foo2.txt"]
- paths = self._change_directory(checkout_root=self._checkout_root, paths=paths)
- self._assert_result(paths, ["foo1.txt", "foo2.txt"], [], self._checkout_root)
-
- def test_with_scm_paths_unconvertible(self):
- paths = ["/WebKit/foo1.txt", "/outside/foo2.txt"]
- paths = self._change_directory(checkout_root=self._checkout_root, paths=paths)
- log_messages = [
-"""WARNING: Path-dependent style checks may not work correctly:
-
- One of the given paths is outside the WebKit checkout of the current
- working directory:
-
- Path: /outside/foo2.txt
- Checkout root: /WebKit
-
- Pass only files below the checkout root to ensure correct results.
- See the help documentation for more info.
-
-"""]
- self._assert_result(paths, paths, log_messages, self._original_directory)
diff --git a/Tools/Scripts/webkitpy/style/optparser.py b/Tools/Scripts/webkitpy/style/optparser.py
deleted file mode 100644
index 4b638c055..000000000
--- a/Tools/Scripts/webkitpy/style/optparser.py
+++ /dev/null
@@ -1,457 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Supports the parsing of command-line options for check-webkit-style."""
-
-import logging
-from optparse import OptionParser
-import os.path
-import sys
-
-from filter import validate_filter_rules
-# This module should not import anything from checker.py.
-
-_log = logging.getLogger(__name__)
-
-_USAGE = """usage: %prog [--help] [options] [path1] [path2] ...
-
-Overview:
- Check coding style according to WebKit style guidelines:
-
- http://webkit.org/coding/coding-style.html
-
- Path arguments can be files and directories. If neither a git commit nor
- paths are passed, then all changes in your source control working directory
- are checked.
-
-Style errors:
- This script assigns to every style error a confidence score from 1-5 and
- a category name. A confidence score of 5 means the error is certainly
- a problem, and 1 means it could be fine.
-
- Category names appear in error messages in brackets, for example
- [whitespace/indent]. See the options section below for an option that
- displays all available categories and which are reported by default.
-
-Filters:
- Use filters to configure what errors to report. Filters are specified using
- a comma-separated list of boolean filter rules. The script reports errors
- in a category if the category passes the filter, as described below.
-
- All categories start out passing. Boolean filter rules are then evaluated
- from left to right, with later rules taking precedence. For example, the
- rule "+foo" passes any category that starts with "foo", and "-foo" fails
- any such category. The filter input "-whitespace,+whitespace/braces" fails
- the category "whitespace/tab" and passes "whitespace/braces".
-
- Examples: --filter=-whitespace,+whitespace/braces
- --filter=-whitespace,-runtime/printf,+runtime/printf_format
- --filter=-,+build/include_what_you_use
-
-Paths:
- Certain style-checking behavior depends on the paths relative to
- the WebKit source root of the files being checked. For example,
- certain types of errors may be handled differently for files in
- WebKit/gtk/webkit/ (e.g. by suppressing "readability/naming" errors
- for files in this directory).
-
- Consequently, if the path relative to the source root cannot be
- determined for a file being checked, then style checking may not
- work correctly for that file. This can occur, for example, if no
- WebKit checkout can be found, or if the source root can be detected,
- but one of the files being checked lies outside the source tree.
-
- If a WebKit checkout can be detected and all files being checked
- are in the source tree, then all paths will automatically be
- converted to paths relative to the source root prior to checking.
- This is also useful for display purposes.
-
- Currently, this command can detect the source root only if the
- command is run from within a WebKit checkout (i.e. if the current
- working directory is below the root of a checkout). In particular,
- it is not recommended to run this script from a directory outside
- a checkout.
-
- Running this script from a top-level WebKit source directory and
- checking only files in the source tree will ensure that all style
- checking behaves correctly -- whether or not a checkout can be
- detected. This is because all file paths will already be relative
- to the source root and so will not need to be converted."""
-
-_EPILOG = ("This script can miss errors and does not substitute for "
- "code review.")
-
-
-# This class should not have knowledge of the flag key names.
-class DefaultCommandOptionValues(object):
-
- """Stores the default check-webkit-style command-line options.
-
- Attributes:
- output_format: A string that is the default output format.
- min_confidence: An integer that is the default minimum confidence level.
-
- """
-
- def __init__(self, min_confidence, output_format):
- self.min_confidence = min_confidence
- self.output_format = output_format
-
-
-# This class should not have knowledge of the flag key names.
-class CommandOptionValues(object):
-
- """Stores the option values passed by the user via the command line.
-
- Attributes:
- is_verbose: A boolean value of whether verbose logging is enabled.
-
- filter_rules: The list of filter rules provided by the user.
- These rules are appended to the base rules and
- path-specific rules and so take precedence over
- the base filter rules, etc.
-
- git_commit: A string representing the git commit to check.
- The default is None.
-
- min_confidence: An integer between 1 and 5 inclusive that is the
- minimum confidence level of style errors to report.
- The default is 1, which reports all errors.
-
- output_format: A string that is the output format. The supported
- output formats are "emacs" which emacs can parse
- and "vs7" which Microsoft Visual Studio 7 can parse.
-
- """
- def __init__(self,
- filter_rules=None,
- git_commit=None,
- diff_files=None,
- is_verbose=False,
- min_confidence=1,
- output_format="emacs"):
- if filter_rules is None:
- filter_rules = []
-
- if (min_confidence < 1) or (min_confidence > 5):
- raise ValueError('Invalid "min_confidence" parameter: value '
- "must be an integer between 1 and 5 inclusive. "
- 'Value given: "%s".' % min_confidence)
-
- if output_format not in ("emacs", "vs7"):
- raise ValueError('Invalid "output_format" parameter: '
- 'value must be "emacs" or "vs7". '
- 'Value given: "%s".' % output_format)
-
- self.filter_rules = filter_rules
- self.git_commit = git_commit
- self.diff_files = diff_files
- self.is_verbose = is_verbose
- self.min_confidence = min_confidence
- self.output_format = output_format
-
- # Useful for unit testing.
- def __eq__(self, other):
- """Return whether this instance is equal to another."""
- if self.filter_rules != other.filter_rules:
- return False
- if self.git_commit != other.git_commit:
- return False
- if self.diff_files != other.diff_files:
- return False
- if self.is_verbose != other.is_verbose:
- return False
- if self.min_confidence != other.min_confidence:
- return False
- if self.output_format != other.output_format:
- return False
-
- return True
-
- # Useful for unit testing.
- def __ne__(self, other):
- # Python does not automatically deduce this from __eq__().
- return not self.__eq__(other)
-
-
-class ArgumentPrinter(object):
-
- """Supports the printing of check-webkit-style command arguments."""
-
- def _flag_pair_to_string(self, flag_key, flag_value):
- return '--%(key)s=%(val)s' % {'key': flag_key, 'val': flag_value }
-
- def to_flag_string(self, options):
- """Return a flag string of the given CommandOptionValues instance.
-
- This method orders the flag values alphabetically by the flag key.
-
- Args:
- options: A CommandOptionValues instance.
-
- """
- flags = {}
- flags['min-confidence'] = options.min_confidence
- flags['output'] = options.output_format
- # Only include the filter flag if user-provided rules are present.
- filter_rules = options.filter_rules
- if filter_rules:
- flags['filter'] = ",".join(filter_rules)
- if options.git_commit:
- flags['git-commit'] = options.git_commit
- if options.diff_files:
- flags['diff_files'] = options.diff_files
-
- flag_string = ''
- # Alphabetizing lets us unit test this method.
- for key in sorted(flags.keys()):
- flag_string += self._flag_pair_to_string(key, flags[key]) + ' '
-
- return flag_string.strip()
-
-
-class ArgumentParser(object):
-
- # FIXME: Move the documentation of the attributes to the __init__
- # docstring after making the attributes internal.
- """Supports the parsing of check-webkit-style command arguments.
-
- Attributes:
- create_usage: A function that accepts a DefaultCommandOptionValues
- instance and returns a string of usage instructions.
- Defaults to the function that generates the usage
- string for check-webkit-style.
- default_options: A DefaultCommandOptionValues instance that provides
- the default values for options not explicitly
- provided by the user.
- stderr_write: A function that takes a string as a parameter and
- serves as stderr.write. Defaults to sys.stderr.write.
- This parameter should be specified only for unit tests.
-
- """
-
- def __init__(self,
- all_categories,
- default_options,
- base_filter_rules=None,
- mock_stderr=None,
- usage=None):
- """Create an ArgumentParser instance.
-
- Args:
- all_categories: The set of all available style categories.
- default_options: See the corresponding attribute in the class
- docstring.
- Keyword Args:
- base_filter_rules: The list of filter rules at the beginning of
- the list of rules used to check style. This
- list has the least precedence when checking
- style and precedes any user-provided rules.
- The class uses this parameter only for display
- purposes to the user. Defaults to the empty list.
- create_usage: See the documentation of the corresponding
- attribute in the class docstring.
- stderr_write: See the documentation of the corresponding
- attribute in the class docstring.
-
- """
- if base_filter_rules is None:
- base_filter_rules = []
- stderr = sys.stderr if mock_stderr is None else mock_stderr
- if usage is None:
- usage = _USAGE
-
- self._all_categories = all_categories
- self._base_filter_rules = base_filter_rules
-
- # FIXME: Rename these to reflect that they are internal.
- self.default_options = default_options
- self.stderr_write = stderr.write
-
- self._parser = self._create_option_parser(stderr=stderr,
- usage=usage,
- default_min_confidence=self.default_options.min_confidence,
- default_output_format=self.default_options.output_format)
-
- def _create_option_parser(self, stderr, usage,
- default_min_confidence, default_output_format):
- # Since the epilog string is short, it is not necessary to replace
- # the epilog string with a mock epilog string when testing.
- # For this reason, we use _EPILOG directly rather than passing it
- # as an argument like we do for the usage string.
- parser = OptionParser(usage=usage, epilog=_EPILOG)
-
- filter_help = ('set a filter to control what categories of style '
- 'errors to report. Specify a filter using a comma-'
- 'delimited list of boolean filter rules, for example '
- '"--filter -whitespace,+whitespace/braces". To display '
- 'all categories and which are enabled by default, pass '
- """no value (e.g. '-f ""' or '--filter=').""")
- parser.add_option("-f", "--filter-rules", metavar="RULES",
- dest="filter_value", help=filter_help)
-
- git_commit_help = ("check all changes in the given commit. "
- "Use 'commit_id..' to check all changes after commmit_id")
- parser.add_option("-g", "--git-diff", "--git-commit",
- metavar="COMMIT", dest="git_commit", help=git_commit_help,)
-
- diff_files_help = "diff the files passed on the command line rather than checking the style of every line"
- parser.add_option("--diff-files", action="store_true", dest="diff_files", default=False, help=diff_files_help)
-
- min_confidence_help = ("set the minimum confidence of style errors "
- "to report. Can be an integer 1-5, with 1 "
- "displaying all errors. Defaults to %default.")
- parser.add_option("-m", "--min-confidence", metavar="INT",
- type="int", dest="min_confidence",
- default=default_min_confidence,
- help=min_confidence_help)
-
- output_format_help = ('set the output format, which can be "emacs" '
- 'or "vs7" (for Visual Studio). '
- 'Defaults to "%default".')
- parser.add_option("-o", "--output-format", metavar="FORMAT",
- choices=["emacs", "vs7"],
- dest="output_format", default=default_output_format,
- help=output_format_help)
-
- verbose_help = "enable verbose logging."
- parser.add_option("-v", "--verbose", dest="is_verbose", default=False,
- action="store_true", help=verbose_help)
-
- # Override OptionParser's error() method so that option help will
- # also display when an error occurs. Normally, just the usage
- # string displays and not option help.
- parser.error = self._parse_error
-
- # Override OptionParser's print_help() method so that help output
- # does not render to the screen while running unit tests.
- print_help = parser.print_help
- parser.print_help = lambda file=stderr: print_help(file=file)
-
- return parser
-
- def _parse_error(self, error_message):
- """Print the help string and an error message, and exit."""
- # The method format_help() includes both the usage string and
- # the flag options.
- help = self._parser.format_help()
- # Separate help from the error message with a single blank line.
- self.stderr_write(help + "\n")
- if error_message:
- _log.error(error_message)
-
- # Since we are using this method to replace/override the Python
- # module optparse's OptionParser.error() method, we match its
- # behavior and exit with status code 2.
- #
- # As additional background, Python documentation says--
- #
- # "Unix programs generally use 2 for command line syntax errors
- # and 1 for all other kind of errors."
- #
- # (from http://docs.python.org/library/sys.html#sys.exit )
- sys.exit(2)
-
- def _exit_with_categories(self):
- """Exit and print the style categories and default filter rules."""
- self.stderr_write('\nAll categories:\n')
- for category in sorted(self._all_categories):
- self.stderr_write(' ' + category + '\n')
-
- self.stderr_write('\nDefault filter rules**:\n')
- for filter_rule in sorted(self._base_filter_rules):
- self.stderr_write(' ' + filter_rule + '\n')
- self.stderr_write('\n**The command always evaluates the above rules, '
- 'and before any --filter flag.\n\n')
-
- sys.exit(0)
-
- def _parse_filter_flag(self, flag_value):
- """Parse the --filter flag, and return a list of filter rules.
-
- Args:
- flag_value: A string of comma-separated filter rules, for
- example "-whitespace,+whitespace/indent".
-
- """
- filters = []
- for uncleaned_filter in flag_value.split(','):
- filter = uncleaned_filter.strip()
- if not filter:
- continue
- filters.append(filter)
- return filters
-
- def parse(self, args):
- """Parse the command line arguments to check-webkit-style.
-
- Args:
- args: A list of command-line arguments as returned by sys.argv[1:].
-
- Returns:
- A tuple of (paths, options)
-
- paths: The list of paths to check.
- options: A CommandOptionValues instance.
-
- """
- (options, paths) = self._parser.parse_args(args=args)
-
- filter_value = options.filter_value
- git_commit = options.git_commit
- diff_files = options.diff_files
- is_verbose = options.is_verbose
- min_confidence = options.min_confidence
- output_format = options.output_format
-
- if filter_value is not None and not filter_value:
- # Then the user explicitly passed no filter, for
- # example "-f ''" or "--filter=".
- self._exit_with_categories()
-
- # Validate user-provided values.
-
- min_confidence = int(min_confidence)
- if (min_confidence < 1) or (min_confidence > 5):
- self._parse_error('option --min-confidence: invalid integer: '
- '%s: value must be between 1 and 5'
- % min_confidence)
-
- if filter_value:
- filter_rules = self._parse_filter_flag(filter_value)
- else:
- filter_rules = []
-
- try:
- validate_filter_rules(filter_rules, self._all_categories)
- except ValueError, err:
- self._parse_error(err)
-
- options = CommandOptionValues(filter_rules=filter_rules,
- git_commit=git_commit,
- diff_files=diff_files,
- is_verbose=is_verbose,
- min_confidence=min_confidence,
- output_format=output_format)
-
- return (paths, options)
-
diff --git a/Tools/Scripts/webkitpy/style/optparser_unittest.py b/Tools/Scripts/webkitpy/style/optparser_unittest.py
deleted file mode 100644
index 0c9002adf..000000000
--- a/Tools/Scripts/webkitpy/style/optparser_unittest.py
+++ /dev/null
@@ -1,258 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""Unit tests for parser.py."""
-
-import unittest2 as unittest
-
-from webkitpy.common.system.logtesting import LoggingTestCase
-from webkitpy.style.optparser import ArgumentParser
-from webkitpy.style.optparser import ArgumentPrinter
-from webkitpy.style.optparser import CommandOptionValues as ProcessorOptions
-from webkitpy.style.optparser import DefaultCommandOptionValues
-
-
-class ArgumentPrinterTest(unittest.TestCase):
-
- """Tests the ArgumentPrinter class."""
-
- _printer = ArgumentPrinter()
-
- def _create_options(self,
- output_format='emacs',
- min_confidence=3,
- filter_rules=[],
- git_commit=None):
- return ProcessorOptions(filter_rules=filter_rules,
- git_commit=git_commit,
- min_confidence=min_confidence,
- output_format=output_format)
-
- def test_to_flag_string(self):
- options = self._create_options('vs7', 5, ['+foo', '-bar'], 'git')
- self.assertEqual('--filter=+foo,-bar --git-commit=git '
- '--min-confidence=5 --output=vs7',
- self._printer.to_flag_string(options))
-
- # This is to check that --filter and --git-commit do not
- # show up when not user-specified.
- options = self._create_options()
- self.assertEqual('--min-confidence=3 --output=emacs',
- self._printer.to_flag_string(options))
-
-
-class ArgumentParserTest(LoggingTestCase):
-
- """Test the ArgumentParser class."""
-
- class _MockStdErr(object):
-
- def write(self, message):
- # We do not want the usage string or style categories
- # to print during unit tests, so print nothing.
- return
-
- def _parse(self, args):
- """Call a test parser.parse()."""
- parser = self._create_parser()
- return parser.parse(args)
-
- def _create_defaults(self):
- """Return a DefaultCommandOptionValues instance for testing."""
- base_filter_rules = ["-", "+whitespace"]
- return DefaultCommandOptionValues(min_confidence=3,
- output_format="vs7")
-
- def _create_parser(self):
- """Return an ArgumentParser instance for testing."""
- default_options = self._create_defaults()
-
- all_categories = ["build" ,"whitespace"]
-
- mock_stderr = self._MockStdErr()
-
- return ArgumentParser(all_categories=all_categories,
- base_filter_rules=[],
- default_options=default_options,
- mock_stderr=mock_stderr,
- usage="test usage")
-
- def test_parse_documentation(self):
- parse = self._parse
-
- # FIXME: Test both the printing of the usage string and the
- # filter categories help.
-
- # Request the usage string.
- self.assertRaises(SystemExit, parse, ['--help'])
- # Request default filter rules and available style categories.
- self.assertRaises(SystemExit, parse, ['--filter='])
-
- def test_parse_bad_values(self):
- parse = self._parse
-
- # Pass an unsupported argument.
- self.assertRaises(SystemExit, parse, ['--bad'])
- self.assertLog(['ERROR: no such option: --bad\n'])
-
- self.assertRaises(SystemExit, parse, ['--min-confidence=bad'])
- self.assertLog(['ERROR: option --min-confidence: '
- "invalid integer value: 'bad'\n"])
- self.assertRaises(SystemExit, parse, ['--min-confidence=0'])
- self.assertLog(['ERROR: option --min-confidence: invalid integer: 0: '
- 'value must be between 1 and 5\n'])
- self.assertRaises(SystemExit, parse, ['--min-confidence=6'])
- self.assertLog(['ERROR: option --min-confidence: invalid integer: 6: '
- 'value must be between 1 and 5\n'])
- parse(['--min-confidence=1']) # works
- parse(['--min-confidence=5']) # works
-
- self.assertRaises(SystemExit, parse, ['--output=bad'])
- self.assertLog(['ERROR: option --output-format: invalid choice: '
- "'bad' (choose from 'emacs', 'vs7')\n"])
- parse(['--output=vs7']) # works
-
- # Pass a filter rule not beginning with + or -.
- self.assertRaises(SystemExit, parse, ['--filter=build'])
- self.assertLog(['ERROR: Invalid filter rule "build": '
- 'every rule must start with + or -.\n'])
- parse(['--filter=+build']) # works
-
- def test_parse_default_arguments(self):
- parse = self._parse
-
- (files, options) = parse([])
-
- self.assertEqual(files, [])
-
- self.assertEqual(options.filter_rules, [])
- self.assertIsNone(options.git_commit)
- self.assertFalse(options.diff_files)
- self.assertFalse(options.is_verbose)
- self.assertEqual(options.min_confidence, 3)
- self.assertEqual(options.output_format, 'vs7')
-
- def test_parse_explicit_arguments(self):
- parse = self._parse
-
- # Pass non-default explicit values.
- (files, options) = parse(['--min-confidence=4'])
- self.assertEqual(options.min_confidence, 4)
- (files, options) = parse(['--output=emacs'])
- self.assertEqual(options.output_format, 'emacs')
- (files, options) = parse(['-g', 'commit'])
- self.assertEqual(options.git_commit, 'commit')
- (files, options) = parse(['--git-commit=commit'])
- self.assertEqual(options.git_commit, 'commit')
- (files, options) = parse(['--git-diff=commit'])
- self.assertEqual(options.git_commit, 'commit')
- (files, options) = parse(['--verbose'])
- self.assertTrue(options.is_verbose)
- (files, options) = parse(['--diff-files', 'file.txt'])
- self.assertTrue(options.diff_files)
-
- # Pass user_rules.
- (files, options) = parse(['--filter=+build,-whitespace'])
- self.assertEqual(options.filter_rules,
- ["+build", "-whitespace"])
-
- # Pass spurious white space in user rules.
- (files, options) = parse(['--filter=+build, -whitespace'])
- self.assertEqual(options.filter_rules,
- ["+build", "-whitespace"])
-
- def test_parse_files(self):
- parse = self._parse
-
- (files, options) = parse(['foo.cpp'])
- self.assertEqual(files, ['foo.cpp'])
-
- # Pass multiple files.
- (files, options) = parse(['--output=emacs', 'foo.cpp', 'bar.cpp'])
- self.assertEqual(files, ['foo.cpp', 'bar.cpp'])
-
-
-class CommandOptionValuesTest(unittest.TestCase):
-
- """Tests CommandOptionValues class."""
-
- def test_init(self):
- """Test __init__ constructor."""
- # Check default parameters.
- options = ProcessorOptions()
- self.assertEqual(options.filter_rules, [])
- self.assertIsNone(options.git_commit)
- self.assertFalse(options.is_verbose)
- self.assertEqual(options.min_confidence, 1)
- self.assertEqual(options.output_format, "emacs")
-
- # Check argument validation.
- self.assertRaises(ValueError, ProcessorOptions, output_format="bad")
- ProcessorOptions(output_format="emacs") # No ValueError: works
- ProcessorOptions(output_format="vs7") # works
- self.assertRaises(ValueError, ProcessorOptions, min_confidence=0)
- self.assertRaises(ValueError, ProcessorOptions, min_confidence=6)
- ProcessorOptions(min_confidence=1) # works
- ProcessorOptions(min_confidence=5) # works
-
- # Check attributes.
- options = ProcessorOptions(filter_rules=["+"],
- git_commit="commit",
- is_verbose=True,
- min_confidence=3,
- output_format="vs7")
- self.assertEqual(options.filter_rules, ["+"])
- self.assertEqual(options.git_commit, "commit")
- self.assertTrue(options.is_verbose)
- self.assertEqual(options.min_confidence, 3)
- self.assertEqual(options.output_format, "vs7")
-
- def test_eq(self):
- """Test __eq__ equality function."""
- self.assertTrue(ProcessorOptions().__eq__(ProcessorOptions()))
-
- # Also verify that a difference in any argument causes equality to fail.
-
- # Explicitly create a ProcessorOptions instance with all default
- # values. We do this to be sure we are assuming the right default
- # values in our self.assertFalse() calls below.
- options = ProcessorOptions(filter_rules=[],
- git_commit=None,
- is_verbose=False,
- min_confidence=1,
- output_format="emacs")
- # Verify that we created options correctly.
- self.assertTrue(options.__eq__(ProcessorOptions()))
-
- self.assertFalse(options.__eq__(ProcessorOptions(filter_rules=["+"])))
- self.assertFalse(options.__eq__(ProcessorOptions(git_commit="commit")))
- self.assertFalse(options.__eq__(ProcessorOptions(is_verbose=True)))
- self.assertFalse(options.__eq__(ProcessorOptions(min_confidence=2)))
- self.assertFalse(options.__eq__(ProcessorOptions(output_format="vs7")))
-
- def test_ne(self):
- """Test __ne__ inequality function."""
- # By default, __ne__ always returns true on different objects.
- # Thus, just check the distinguishing case to verify that the
- # code defines __ne__.
- self.assertFalse(ProcessorOptions().__ne__(ProcessorOptions()))
-
diff --git a/Tools/Scripts/webkitpy/style/patchreader.py b/Tools/Scripts/webkitpy/style/patchreader.py
deleted file mode 100644
index 8495cd054..000000000
--- a/Tools/Scripts/webkitpy/style/patchreader.py
+++ /dev/null
@@ -1,83 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-# Copyright (C) 2010 ProFUSION embedded systems
-#
-# 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.
-
-import logging
-import re
-
-from webkitpy.common.checkout.diff_parser import DiffParser
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.checkout.scm.detection import SCMDetector
-
-
-_log = logging.getLogger(__name__)
-
-
-class PatchReader(object):
- """Supports checking style in patches."""
-
- def __init__(self, text_file_reader):
- """Create a PatchReader instance.
-
- Args:
- text_file_reader: A TextFileReader instance.
-
- """
- self._text_file_reader = text_file_reader
-
- def check(self, patch_string, fs=None):
- """Check style in the given patch."""
- fs = fs or FileSystem()
- patch_files = DiffParser(patch_string.splitlines()).files
-
- # If the user uses git, checking subversion config file only once is enough.
- call_only_once = True
-
- for path, diff_file in patch_files.iteritems():
- line_numbers = diff_file.added_or_modified_line_numbers()
- _log.debug('Found %s new or modified lines in: %s' % (len(line_numbers), path))
-
- if not line_numbers:
- match = re.search("\s*png$", path)
- if match and fs.exists(path):
- if call_only_once:
- self._text_file_reader.process_file(file_path=path, line_numbers=None)
- cwd = FileSystem().getcwd()
- detection = SCMDetector(fs, Executive()).detect_scm_system(cwd)
- if detection.display_name() == "git":
- call_only_once = False
- continue
- # Don't check files which contain only deleted lines
- # as they can never add style errors. However, mark them as
- # processed so that we count up number of such files.
- self._text_file_reader.count_delete_only_file()
- continue
-
- self._text_file_reader.process_file(file_path=path, line_numbers=line_numbers)
diff --git a/Tools/Scripts/webkitpy/style/patchreader_unittest.py b/Tools/Scripts/webkitpy/style/patchreader_unittest.py
deleted file mode 100644
index f7368ec2b..000000000
--- a/Tools/Scripts/webkitpy/style/patchreader_unittest.py
+++ /dev/null
@@ -1,101 +0,0 @@
-# Copyright (C) 2010 Google Inc. All rights reserved.
-# Copyright (C) 2009 Torch Mobile Inc.
-# Copyright (C) 2009 Apple Inc. All rights reserved.
-# Copyright (C) 2010 Chris Jerdonek (chris.jerdonek@gmail.com)
-#
-# 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.style.patchreader import PatchReader
-
-
-class PatchReaderTest(unittest.TestCase):
-
- """Test the PatchReader class."""
-
- class MockTextFileReader(object):
-
- def __init__(self):
- self.passed_to_process_file = []
- """A list of (file_path, line_numbers) pairs."""
- self.delete_only_file_count = 0
- """A number of times count_delete_only_file() called"""
-
- def process_file(self, file_path, line_numbers):
- self.passed_to_process_file.append((file_path, line_numbers))
-
- def count_delete_only_file(self):
- self.delete_only_file_count += 1
-
- def setUp(self):
- file_reader = self.MockTextFileReader()
- self._file_reader = file_reader
- self._patch_checker = PatchReader(file_reader)
-
- def _call_check_patch(self, patch_string):
- self._patch_checker.check(patch_string)
-
- def _assert_checked(self, passed_to_process_file, delete_only_file_count):
- self.assertEqual(self._file_reader.passed_to_process_file,
- passed_to_process_file)
- self.assertEqual(self._file_reader.delete_only_file_count,
- delete_only_file_count)
-
- def test_check_patch(self):
- # The modified line_numbers array for this patch is: [2].
- self._call_check_patch("""diff --git a/__init__.py b/__init__.py
-index ef65bee..e3db70e 100644
---- a/__init__.py
-+++ b/__init__.py
-@@ -1,1 +1,2 @@
- # Required for Python to search this directory for module files
-+# New line
-""")
- self._assert_checked([("__init__.py", [2])], 0)
-
- def test_check_patch_with_deletion(self):
- self._call_check_patch("""Index: __init__.py
-===================================================================
---- __init__.py (revision 3593)
-+++ __init__.py (working copy)
-@@ -1 +0,0 @@
--foobar
-""")
- # _mock_check_file should not be called for the deletion patch.
- self._assert_checked([], 1)
-
- def test_check_patch_with_png_deletion(self):
- fs = MockFileSystem()
- diff_text = """Index: LayoutTests/platform/mac/foo-expected.png
-===================================================================
-Cannot display: file marked as a binary type.
-svn:mime-type = image/png
-"""
- self._patch_checker.check(diff_text, fs)
- self._assert_checked([], 1)
diff --git a/Tools/Scripts/webkitpy/test/__init__.py b/Tools/Scripts/webkitpy/test/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/test/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/test/finder.py b/Tools/Scripts/webkitpy/test/finder.py
deleted file mode 100644
index 21eceac06..000000000
--- a/Tools/Scripts/webkitpy/test/finder.py
+++ /dev/null
@@ -1,173 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 module is responsible for finding python tests."""
-
-import logging
-import re
-
-
-_log = logging.getLogger(__name__)
-
-
-class _DirectoryTree(object):
- def __init__(self, filesystem, top_directory, starting_subdirectory):
- self.filesystem = filesystem
- self.top_directory = filesystem.realpath(top_directory)
- self.search_directory = self.top_directory
- self.top_package = ''
- if starting_subdirectory:
- self.top_package = starting_subdirectory.replace(filesystem.sep, '.') + '.'
- self.search_directory = filesystem.join(self.top_directory, starting_subdirectory)
-
- def find_modules(self, suffixes, sub_directory=None):
- if sub_directory:
- search_directory = self.filesystem.join(self.top_directory, sub_directory)
- else:
- search_directory = self.search_directory
-
- def file_filter(filesystem, dirname, basename):
- return any(basename.endswith(suffix) for suffix in suffixes)
-
- filenames = self.filesystem.files_under(search_directory, file_filter=file_filter)
- return [self.to_module(filename) for filename in filenames]
-
- def to_module(self, path):
- return path.replace(self.top_directory + self.filesystem.sep, '').replace(self.filesystem.sep, '.')[:-3]
-
- def subpath(self, path):
- """Returns the relative path from the top of the tree to the path, or None if the path is not under the top of the tree."""
- realpath = self.filesystem.realpath(self.filesystem.join(self.top_directory, path))
- if realpath.startswith(self.top_directory + self.filesystem.sep):
- return realpath.replace(self.top_directory + self.filesystem.sep, '')
- return None
-
- def clean(self):
- """Delete all .pyc files in the tree that have no matching .py file."""
- _log.debug("Cleaning orphaned *.pyc files from: %s" % self.search_directory)
- filenames = self.filesystem.files_under(self.search_directory)
- for filename in filenames:
- if filename.endswith(".pyc") and filename[:-1] not in filenames:
- _log.info("Deleting orphan *.pyc file: %s" % filename)
- self.filesystem.remove(filename)
-
-
-class Finder(object):
- def __init__(self, filesystem):
- self.filesystem = filesystem
- self.trees = []
- self._names_to_skip = []
-
- def add_tree(self, top_directory, starting_subdirectory=None):
- self.trees.append(_DirectoryTree(self.filesystem, top_directory, starting_subdirectory))
-
- def skip(self, names, reason, bugid):
- self._names_to_skip.append(tuple([names, reason, bugid]))
-
- def additional_paths(self, paths):
- return [tree.top_directory for tree in self.trees if tree.top_directory not in paths]
-
- def clean_trees(self):
- for tree in self.trees:
- tree.clean()
-
- def is_module(self, name):
- relpath = name.replace('.', self.filesystem.sep) + '.py'
- return any(self.filesystem.exists(self.filesystem.join(tree.top_directory, relpath)) for tree in self.trees)
-
- def is_dotted_name(self, name):
- return re.match(r'[a-zA-Z.][a-zA-Z0-9_.]*', name)
-
- def to_module(self, path):
- for tree in self.trees:
- if path.startswith(tree.top_directory):
- return tree.to_module(path)
- return None
-
- def find_names(self, args, find_all):
- suffixes = ['_unittest.py', '_integrationtest.py']
- if args:
- names = []
- for arg in args:
- names.extend(self._find_names_for_arg(arg, suffixes))
- return names
-
- return self._default_names(suffixes, find_all)
-
- def _find_names_for_arg(self, arg, suffixes):
- realpath = self.filesystem.realpath(arg)
- if self.filesystem.exists(realpath):
- names = self._find_in_trees(realpath, suffixes)
- if not names:
- _log.error("%s is not in one of the test trees." % arg)
- return names
-
- # See if it's a python package in a tree (or a relative path from the top of a tree).
- names = self._find_in_trees(arg.replace('.', self.filesystem.sep), suffixes)
- if names:
- return names
-
- if self.is_dotted_name(arg):
- # The name may not exist, but that's okay; we'll find out later.
- return [arg]
-
- _log.error("%s is not a python name or an existing file or directory." % arg)
- return []
-
- def _find_in_trees(self, path, suffixes):
- for tree in self.trees:
- relpath = tree.subpath(path)
- if not relpath:
- continue
- if self.filesystem.isfile(path):
- return [tree.to_module(path)]
- else:
- return tree.find_modules(suffixes, path)
- return []
-
- def _default_names(self, suffixes, find_all):
- modules = []
- for tree in self.trees:
- modules.extend(tree.find_modules(suffixes))
- modules.sort()
-
- for module in modules:
- _log.debug("Found: %s" % module)
-
- if not find_all:
- for (names, reason, bugid) in self._names_to_skip:
- self._exclude(modules, names, reason, bugid)
-
- return modules
-
- def _exclude(self, modules, module_prefixes, reason, bugid):
- _log.info('Skipping tests in the following modules or packages because they %s:' % reason)
- for prefix in module_prefixes:
- _log.info(' %s' % prefix)
- modules_to_exclude = filter(lambda m: m.startswith(prefix), modules)
- for m in modules_to_exclude:
- if len(modules_to_exclude) > 1:
- _log.debug(' %s' % m)
- modules.remove(m)
- _log.info(' (https://bugs.webkit.org/show_bug.cgi?id=%d; use --all to include)' % bugid)
- _log.info('')
diff --git a/Tools/Scripts/webkitpy/test/finder_unittest.py b/Tools/Scripts/webkitpy/test/finder_unittest.py
deleted file mode 100644
index f1259ef49..000000000
--- a/Tools/Scripts/webkitpy/test/finder_unittest.py
+++ /dev/null
@@ -1,126 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-#
-# 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. 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 INC. 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 logging
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.test.finder import Finder
-
-
-class FinderTest(unittest.TestCase):
- def setUp(self):
- files = {
- '/foo/bar/baz.py': '',
- '/foo/bar/baz_unittest.py': '',
- '/foo2/bar2/baz2.py': '',
- '/foo2/bar2/baz2.pyc': '',
- '/foo2/bar2/baz2_integrationtest.py': '',
- '/foo2/bar2/missing.pyc': '',
- '/tmp/another_unittest.py': '',
- }
- self.fs = MockFileSystem(files)
- self.finder = Finder(self.fs)
- self.finder.add_tree('/foo', 'bar')
- self.finder.add_tree('/foo2')
-
- # Here we have to jump through a hoop to make sure test-webkitpy doesn't log
- # any messages from these tests :(.
- self.root_logger = logging.getLogger()
- self.log_levels = []
- self.log_handlers = self.root_logger.handlers[:]
- for handler in self.log_handlers:
- self.log_levels.append(handler.level)
- handler.level = logging.CRITICAL
-
- def tearDown(self):
- for handler in self.log_handlers:
- handler.level = self.log_levels.pop(0)
-
- def test_additional_system_paths(self):
- self.assertEqual(self.finder.additional_paths(['/usr']),
- ['/foo', '/foo2'])
-
- def test_is_module(self):
- self.assertTrue(self.finder.is_module('bar.baz'))
- self.assertTrue(self.finder.is_module('bar2.baz2'))
- self.assertTrue(self.finder.is_module('bar2.baz2_integrationtest'))
-
- # Missing the proper namespace.
- self.assertFalse(self.finder.is_module('baz'))
-
- def test_to_module(self):
- self.assertEqual(self.finder.to_module('/foo/test.py'), 'test')
- self.assertEqual(self.finder.to_module('/foo/bar/test.py'), 'bar.test')
- self.assertEqual(self.finder.to_module('/foo/bar/pytest.py'), 'bar.pytest')
-
- def test_clean(self):
- self.assertTrue(self.fs.exists('/foo2/bar2/missing.pyc'))
- self.finder.clean_trees()
- self.assertFalse(self.fs.exists('/foo2/bar2/missing.pyc'))
-
- def check_names(self, names, expected_names, find_all=True):
- self.assertEqual(self.finder.find_names(names, find_all), expected_names)
-
- def test_default_names(self):
- self.check_names([], ['bar.baz_unittest', 'bar2.baz2_integrationtest'], find_all=True)
- self.check_names([], ['bar.baz_unittest', 'bar2.baz2_integrationtest'], find_all=False)
-
- # Should return the names given it, even if they don't exist.
- self.check_names(['foobar'], ['foobar'], find_all=False)
-
- def test_paths(self):
- self.fs.chdir('/foo/bar')
- self.check_names(['baz_unittest.py'], ['bar.baz_unittest'])
- self.check_names(['./baz_unittest.py'], ['bar.baz_unittest'])
- self.check_names(['/foo/bar/baz_unittest.py'], ['bar.baz_unittest'])
- self.check_names(['.'], ['bar.baz_unittest'])
- self.check_names(['../../foo2/bar2'], ['bar2.baz2_integrationtest'])
-
- self.fs.chdir('/')
- self.check_names(['bar'], ['bar.baz_unittest'])
- self.check_names(['/foo/bar/'], ['bar.baz_unittest'])
-
- # This works 'by accident' since it maps onto a package.
- self.check_names(['bar/'], ['bar.baz_unittest'])
-
- # This should log an error, since it's outside the trees.
- oc = OutputCapture()
- oc.set_log_level(logging.ERROR)
- oc.capture_output()
- try:
- self.check_names(['/tmp/another_unittest.py'], [])
- finally:
- _, _, logs = oc.restore_output()
- self.assertIn('another_unittest.py', logs)
-
- # Paths that don't exist are errors.
- oc.capture_output()
- try:
- self.check_names(['/foo/bar/notexist_unittest.py'], [])
- finally:
- _, _, logs = oc.restore_output()
- self.assertIn('notexist_unittest.py', logs)
-
- # Names that don't exist are caught later, at load time.
- self.check_names(['bar.notexist_unittest'], ['bar.notexist_unittest'])
diff --git a/Tools/Scripts/webkitpy/test/main.py b/Tools/Scripts/webkitpy/test/main.py
deleted file mode 100644
index 4270ace5d..000000000
--- a/Tools/Scripts/webkitpy/test/main.py
+++ /dev/null
@@ -1,237 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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.
-
-"""unit testing code for webkitpy."""
-
-import logging
-import multiprocessing
-import optparse
-import os
-import StringIO
-import sys
-import time
-import traceback
-import unittest
-
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.test.finder import Finder
-from webkitpy.test.printer import Printer
-from webkitpy.test.runner import Runner, unit_test_name
-
-_log = logging.getLogger(__name__)
-
-
-def main():
- up = os.path.dirname
- webkit_root = up(up(up(up(up(os.path.abspath(__file__))))))
-
- tester = Tester()
- tester.add_tree(os.path.join(webkit_root, 'Tools', 'Scripts'), 'webkitpy')
- tester.add_tree(os.path.join(webkit_root, 'Source', 'WebKit2', 'Scripts'), 'webkit2')
-
- tester.skip(('webkitpy.common.checkout.scm.scm_unittest',), 'are really, really, slow', 31818)
- if sys.platform == 'win32':
- tester.skip(('webkitpy.common.checkout', 'webkitpy.common.config', 'webkitpy.tool'), 'fail horribly on win32', 54526)
-
- # This only needs to run on Unix, so don't worry about win32 for now.
- appengine_sdk_path = '/usr/local/google_appengine'
- if os.path.exists(appengine_sdk_path):
- if not appengine_sdk_path in sys.path:
- sys.path.append(appengine_sdk_path)
- import dev_appserver
- from google.appengine.dist import use_library
- use_library('django', '1.2')
- dev_appserver.fix_sys_path()
- tester.add_tree(os.path.join(webkit_root, 'Tools', 'QueueStatusServer'))
- else:
- _log.info('Skipping QueueStatusServer tests; the Google AppEngine Python SDK is not installed.')
-
- return not tester.run()
-
-
-class Tester(object):
- def __init__(self, filesystem=None):
- self.finder = Finder(filesystem or FileSystem())
- self.printer = Printer(sys.stderr)
- self._options = None
-
- def add_tree(self, top_directory, starting_subdirectory=None):
- self.finder.add_tree(top_directory, starting_subdirectory)
-
- def skip(self, names, reason, bugid):
- self.finder.skip(names, reason, bugid)
-
- def _parse_args(self, argv=None):
- parser = optparse.OptionParser(usage='usage: %prog [options] [args...]')
- parser.add_option('-a', '--all', action='store_true', default=False,
- help='run all the tests')
- parser.add_option('-c', '--coverage', action='store_true', default=False,
- help='generate code coverage info (requires http://pypi.python.org/pypi/coverage)')
- parser.add_option('-i', '--integration-tests', action='store_true', default=False,
- help='run integration tests as well as unit tests'),
- parser.add_option('-j', '--child-processes', action='store', type='int', default=(1 if sys.platform == 'win32' else multiprocessing.cpu_count()),
- help='number of tests to run in parallel (default=%default)')
- parser.add_option('-p', '--pass-through', action='store_true', default=False,
- help='be debugger friendly by passing captured output through to the system')
- parser.add_option('-q', '--quiet', action='store_true', default=False,
- help='run quietly (errors, warnings, and progress only)')
- parser.add_option('-t', '--timing', action='store_true', default=False,
- help='display per-test execution time (implies --verbose)')
- parser.add_option('-v', '--verbose', action='count', default=0,
- help='verbose output (specify once for individual test results, twice for debug messages)')
-
- parser.epilog = ('[args...] is an optional list of modules, test_classes, or individual tests. '
- 'If no args are given, all the tests will be run.')
-
- return parser.parse_args(argv)
-
- def run(self):
- self._options, args = self._parse_args()
- self.printer.configure(self._options)
-
- self.finder.clean_trees()
-
- names = self.finder.find_names(args, self._options.all)
- if not names:
- _log.error('No tests to run')
- return False
-
- return self._run_tests(names)
-
- def _run_tests(self, names):
- # Make sure PYTHONPATH is set up properly.
- sys.path = self.finder.additional_paths(sys.path) + sys.path
-
- # We autoinstall everything up so that we can run tests concurrently
- # and not have to worry about autoinstalling packages concurrently.
- self.printer.write_update("Checking autoinstalled packages ...")
- from webkitpy.thirdparty import autoinstall_everything
- installed_something = autoinstall_everything()
-
- # FIXME: There appears to be a bug in Python 2.6.1 that is causing multiprocessing
- # to hang after we install the packages in a clean checkout.
- if installed_something:
- _log.warning("We installed new packages, so running things serially at first")
- self._options.child_processes = 1
-
- if self._options.coverage:
- _log.warning("Checking code coverage, so running things serially")
- self._options.child_processes = 1
-
- import webkitpy.thirdparty.autoinstalled.coverage as coverage
- cov = coverage.coverage(omit=["/usr/*", "*/webkitpy/thirdparty/autoinstalled/*", "*/webkitpy/thirdparty/BeautifulSoup.py"])
- cov.start()
-
- self.printer.write_update("Checking imports ...")
- if not self._check_imports(names):
- return False
-
- self.printer.write_update("Finding the individual test methods ...")
- loader = _Loader()
- parallel_tests, serial_tests = self._test_names(loader, names)
-
- self.printer.write_update("Running the tests ...")
- self.printer.num_tests = len(parallel_tests) + len(serial_tests)
- start = time.time()
- test_runner = Runner(self.printer, loader)
- test_runner.run(parallel_tests, self._options.child_processes)
- test_runner.run(serial_tests, 1)
-
- self.printer.print_result(time.time() - start)
-
- if self._options.coverage:
- cov.stop()
- cov.save()
- cov.report(show_missing=False)
-
- return not self.printer.num_errors and not self.printer.num_failures
-
- def _check_imports(self, names):
- for name in names:
- if self.finder.is_module(name):
- # if we failed to load a name and it looks like a module,
- # try importing it directly, because loadTestsFromName()
- # produces lousy error messages for bad modules.
- try:
- __import__(name)
- except ImportError:
- _log.fatal('Failed to import %s:' % name)
- self._log_exception()
- return False
- return True
-
- def _test_names(self, loader, names):
- parallel_test_method_prefixes = ['test_']
- serial_test_method_prefixes = ['serial_test_']
- if self._options.integration_tests:
- parallel_test_method_prefixes.append('integration_test_')
- serial_test_method_prefixes.append('serial_integration_test_')
-
- parallel_tests = []
- loader.test_method_prefixes = parallel_test_method_prefixes
- for name in names:
- parallel_tests.extend(self._all_test_names(loader.loadTestsFromName(name, None)))
-
- serial_tests = []
- loader.test_method_prefixes = serial_test_method_prefixes
- for name in names:
- serial_tests.extend(self._all_test_names(loader.loadTestsFromName(name, None)))
-
- # loader.loadTestsFromName() will not verify that names begin with one of the test_method_prefixes
- # if the names were explicitly provided (e.g., MainTest.test_basic), so this means that any individual
- # tests will be included in both parallel_tests and serial_tests, and we need to de-dup them.
- serial_tests = list(set(serial_tests).difference(set(parallel_tests)))
-
- return (parallel_tests, serial_tests)
-
- def _all_test_names(self, suite):
- names = []
- if hasattr(suite, '_tests'):
- for t in suite._tests:
- names.extend(self._all_test_names(t))
- else:
- names.append(unit_test_name(suite))
- return names
-
- def _log_exception(self):
- s = StringIO.StringIO()
- traceback.print_exc(file=s)
- for l in s.buflist:
- _log.error(' ' + l.rstrip())
-
-
-class _Loader(unittest.TestLoader):
- test_method_prefixes = []
-
- def getTestCaseNames(self, testCaseClass):
- def isTestMethod(attrname, testCaseClass=testCaseClass):
- if not hasattr(getattr(testCaseClass, attrname), '__call__'):
- return False
- return (any(attrname.startswith(prefix) for prefix in self.test_method_prefixes))
- testFnNames = filter(isTestMethod, dir(testCaseClass))
- testFnNames.sort()
- return testFnNames
-
-
-if __name__ == '__main__':
- sys.exit(main())
diff --git a/Tools/Scripts/webkitpy/test/main_unittest.py b/Tools/Scripts/webkitpy/test/main_unittest.py
deleted file mode 100644
index 8a1b56d29..000000000
--- a/Tools/Scripts/webkitpy/test/main_unittest.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-#
-# 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. 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 INC. 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 logging
-import sys
-import unittest2 as unittest
-import StringIO
-
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.test.main import Tester, _Loader
-
-
-STUBS_CLASS = __name__ + ".TestStubs"
-
-
-class TestStubs(unittest.TestCase):
- def test_empty(self):
- pass
-
- def integration_test_empty(self):
- pass
-
- def serial_test_empty(self):
- pass
-
- def serial_integration_test_empty(self):
- pass
-
-
-class TesterTest(unittest.TestCase):
-
- def test_no_tests_found(self):
- tester = Tester()
- errors = StringIO.StringIO()
-
- # Here we need to remove any existing log handlers so that they
- # don't log the messages webkitpy.test while we're testing it.
- root_logger = logging.getLogger()
- root_handlers = root_logger.handlers
- root_logger.handlers = []
-
- tester.printer.stream = errors
- tester.finder.find_names = lambda args, run_all: []
- oc = OutputCapture()
- try:
- oc.capture_output()
- self.assertFalse(tester.run())
- finally:
- _, _, logs = oc.restore_output()
- root_logger.handlers = root_handlers
-
- self.assertIn('No tests to run', errors.getvalue())
- self.assertIn('No tests to run', logs)
-
- def _find_test_names(self, args):
- tester = Tester()
- tester._options, args = tester._parse_args(args)
- return tester._test_names(_Loader(), args)
-
- def test_individual_names_are_not_run_twice(self):
- args = [STUBS_CLASS + '.test_empty']
- parallel_tests, serial_tests = self._find_test_names(args)
- self.assertEqual(parallel_tests, args)
- self.assertEqual(serial_tests, [])
-
- def test_integration_tests_are_not_found_by_default(self):
- parallel_tests, serial_tests = self._find_test_names([STUBS_CLASS])
- self.assertEqual(parallel_tests, [
- STUBS_CLASS + '.test_empty',
- ])
- self.assertEqual(serial_tests, [
- STUBS_CLASS + '.serial_test_empty',
- ])
-
- def test_integration_tests_are_found(self):
- parallel_tests, serial_tests = self._find_test_names(['--integration-tests', STUBS_CLASS])
- self.assertEqual(parallel_tests, [
- STUBS_CLASS + '.integration_test_empty',
- STUBS_CLASS + '.test_empty',
- ])
- self.assertEqual(serial_tests, [
- STUBS_CLASS + '.serial_integration_test_empty',
- STUBS_CLASS + '.serial_test_empty',
- ])
-
- def integration_test_coverage_works(self):
- filesystem = FileSystem()
- executive = Executive()
- module_path = filesystem.path_to_module(self.__module__)
- script_dir = module_path[0:module_path.find('webkitpy') - 1]
- proc = executive.popen([sys.executable, filesystem.join(script_dir, 'test-webkitpy'), '-c', STUBS_CLASS + '.test_empty'],
- stdout=executive.PIPE, stderr=executive.PIPE)
- out, _ = proc.communicate()
- retcode = proc.returncode
- self.assertEqual(retcode, 0)
- self.assertIn('Cover', out)
diff --git a/Tools/Scripts/webkitpy/test/printer.py b/Tools/Scripts/webkitpy/test/printer.py
deleted file mode 100644
index b5bea3f9f..000000000
--- a/Tools/Scripts/webkitpy/test/printer.py
+++ /dev/null
@@ -1,214 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 logging
-import StringIO
-
-from webkitpy.common.system.systemhost import SystemHost
-from webkitpy.layout_tests.views.metered_stream import MeteredStream
-
-_log = logging.getLogger(__name__)
-
-
-class Printer(object):
- def __init__(self, stream, options=None):
- self.stream = stream
- self.meter = None
- self.options = options
- self.num_tests = 0
- self.num_started = 0
- self.num_errors = 0
- self.num_failures = 0
- self.running_tests = []
- self.completed_tests = []
- if options:
- self.configure(options)
-
- def configure(self, options):
- self.options = options
-
- if options.timing:
- # --timing implies --verbose
- options.verbose = max(options.verbose, 1)
-
- log_level = logging.INFO
- if options.quiet:
- log_level = logging.WARNING
- elif options.verbose == 2:
- log_level = logging.DEBUG
-
- self.meter = MeteredStream(self.stream, (options.verbose == 2),
- number_of_columns=SystemHost().platform.terminal_width())
-
- handler = logging.StreamHandler(self.stream)
- # We constrain the level on the handler rather than on the root
- # logger itself. This is probably better because the handler is
- # configured and known only to this module, whereas the root logger
- # is an object shared (and potentially modified) by many modules.
- # Modifying the handler, then, is less intrusive and less likely to
- # interfere with modifications made by other modules (e.g. in unit
- # tests).
- handler.name = __name__
- handler.setLevel(log_level)
- formatter = logging.Formatter("%(message)s")
- handler.setFormatter(formatter)
-
- logger = logging.getLogger()
- logger.addHandler(handler)
- logger.setLevel(logging.NOTSET)
-
- # Filter out most webkitpy messages.
- #
- # Messages can be selectively re-enabled for this script by updating
- # this method accordingly.
- def filter_records(record):
- """Filter out autoinstall and non-third-party webkitpy messages."""
- # FIXME: Figure out a way not to use strings here, for example by
- # using syntax like webkitpy.test.__name__. We want to be
- # sure not to import any non-Python 2.4 code, though, until
- # after the version-checking code has executed.
- if (record.name.startswith("webkitpy.common.system.autoinstall") or
- record.name.startswith("webkitpy.test")):
- return True
- if record.name.startswith("webkitpy"):
- return False
- return True
-
- testing_filter = logging.Filter()
- testing_filter.filter = filter_records
-
- # Display a message so developers are not mystified as to why
- # logging does not work in the unit tests.
- _log.info("Suppressing most webkitpy logging while running unit tests.")
- handler.addFilter(testing_filter)
-
- if self.options.pass_through:
- # FIXME: Can't import at top of file, as outputcapture needs unittest2
- from webkitpy.common.system import outputcapture
- outputcapture.OutputCapture.stream_wrapper = _CaptureAndPassThroughStream
-
- def write_update(self, msg):
- self.meter.write_update(msg)
-
- def print_started_test(self, source, test_name):
- self.running_tests.append(test_name)
- if len(self.running_tests) > 1:
- suffix = ' (+%d)' % (len(self.running_tests) - 1)
- else:
- suffix = ''
-
- if self.options.verbose:
- write = self.meter.write_update
- else:
- write = self.meter.write_throttled_update
-
- write(self._test_line(self.running_tests[0], suffix))
-
- def print_finished_test(self, source, test_name, test_time, failures, errors):
- write = self.meter.writeln
- if failures:
- lines = failures[0].splitlines() + ['']
- suffix = ' failed:'
- self.num_failures += 1
- elif errors:
- lines = errors[0].splitlines() + ['']
- suffix = ' erred:'
- self.num_errors += 1
- else:
- suffix = ' passed'
- lines = []
- if self.options.verbose:
- write = self.meter.writeln
- else:
- write = self.meter.write_throttled_update
- if self.options.timing:
- suffix += ' %.4fs' % test_time
-
- self.num_started += 1
-
- if test_name == self.running_tests[0]:
- self.completed_tests.insert(0, [test_name, suffix, lines])
- else:
- self.completed_tests.append([test_name, suffix, lines])
- self.running_tests.remove(test_name)
-
- for test_name, msg, lines in self.completed_tests:
- if lines:
- self.meter.writeln(self._test_line(test_name, msg))
- for line in lines:
- self.meter.writeln(' ' + line)
- else:
- write(self._test_line(test_name, msg))
- self.completed_tests = []
-
- def _test_line(self, test_name, suffix):
- format_string = '[%d/%d] %s%s'
- status_line = format_string % (self.num_started, self.num_tests, test_name, suffix)
- if len(status_line) > self.meter.number_of_columns():
- overflow_columns = len(status_line) - self.meter.number_of_columns()
- ellipsis = '...'
- if len(test_name) < overflow_columns + len(ellipsis) + 3:
- # We don't have enough space even if we elide, just show the test method name.
- test_name = test_name.split('.')[-1]
- else:
- new_length = len(test_name) - overflow_columns - len(ellipsis)
- prefix = int(new_length / 2)
- test_name = test_name[:prefix] + ellipsis + test_name[-(new_length - prefix):]
- return format_string % (self.num_started, self.num_tests, test_name, suffix)
-
- def print_result(self, run_time):
- write = self.meter.writeln
- write('Ran %d test%s in %.3fs' % (self.num_started, self.num_started != 1 and "s" or "", run_time))
- if self.num_failures or self.num_errors:
- write('FAILED (failures=%d, errors=%d)\n' % (self.num_failures, self.num_errors))
- else:
- write('\nOK\n')
-
-
-class _CaptureAndPassThroughStream(object):
- def __init__(self, stream):
- self._buffer = StringIO.StringIO()
- self._stream = stream
-
- def write(self, msg):
- self._stream.write(msg)
-
- # Note that we don't want to capture any output generated by the debugger
- # because that could cause the results of capture_output() to be invalid.
- if not self._message_is_from_pdb():
- self._buffer.write(msg)
-
- def _message_is_from_pdb(self):
- # We will assume that if the pdb module is in the stack then the output
- # is being generated by the python debugger (or the user calling something
- # from inside the debugger).
- import inspect
- import pdb
- stack = inspect.stack()
- return any(frame[1] == pdb.__file__.replace('.pyc', '.py') for frame in stack)
-
- def flush(self):
- self._stream.flush()
-
- def getvalue(self):
- return self._buffer.getvalue()
diff --git a/Tools/Scripts/webkitpy/test/runner.py b/Tools/Scripts/webkitpy/test/runner.py
deleted file mode 100644
index d3f57643c..000000000
--- a/Tools/Scripts/webkitpy/test/runner.py
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-#
-# 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. 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 INC. 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.
-
-"""code to actually run a list of python tests."""
-
-import re
-import time
-import unittest
-
-from webkitpy.common import message_pool
-
-_test_description = re.compile("(\w+) \(([\w.]+)\)")
-
-
-def unit_test_name(test):
- m = _test_description.match(str(test))
- return "%s.%s" % (m.group(2), m.group(1))
-
-
-class Runner(object):
- def __init__(self, printer, loader):
- self.printer = printer
- self.loader = loader
- self.tests_run = 0
- self.errors = []
- self.failures = []
- self.worker_factory = lambda caller: _Worker(caller, self.loader)
-
- def run(self, test_names, num_workers):
- if not test_names:
- return
- num_workers = min(num_workers, len(test_names))
- with message_pool.get(self, self.worker_factory, num_workers) as pool:
- pool.run(('test', test_name) for test_name in test_names)
-
- def handle(self, message_name, source, test_name, delay=None, failures=None, errors=None):
- if message_name == 'started_test':
- self.printer.print_started_test(source, test_name)
- return
-
- self.tests_run += 1
- if failures:
- self.failures.append((test_name, failures))
- if errors:
- self.errors.append((test_name, errors))
- self.printer.print_finished_test(source, test_name, delay, failures, errors)
-
-
-class _Worker(object):
- def __init__(self, caller, loader):
- self._caller = caller
- self._loader = loader
-
- def handle(self, message_name, source, test_name):
- assert message_name == 'test'
- result = unittest.TestResult()
- start = time.time()
- self._caller.post('started_test', test_name)
-
- # We will need to rework this if a test_name results in multiple tests.
- self._loader.loadTestsFromName(test_name, None).run(result)
- self._caller.post('finished_test', test_name, time.time() - start,
- [failure[1] for failure in result.failures], [error[1] for error in result.errors])
diff --git a/Tools/Scripts/webkitpy/test/runner_unittest.py b/Tools/Scripts/webkitpy/test/runner_unittest.py
deleted file mode 100644
index 46a9507fd..000000000
--- a/Tools/Scripts/webkitpy/test/runner_unittest.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (C) 2012 Google, Inc.
-#
-# 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. 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 INC. 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 logging
-import re
-import StringIO
-import unittest2 as unittest
-
-from webkitpy.tool.mocktool import MockOptions
-from webkitpy.test.printer import Printer
-from webkitpy.test.runner import Runner
-
-
-class FakeModuleSuite(object):
- def __init__(self, name, result, msg):
- self.name = name
- self.result = result
- self.msg = msg
-
- def __str__(self):
- return self.name
-
- def run(self, result):
- result.testsRun += 1
- if self.result == 'F':
- result.failures.append((self.name, self.msg))
- elif self.result == 'E':
- result.errors.append((self.name, self.msg))
-
-
-class FakeTopSuite(object):
- def __init__(self, tests):
- self._tests = tests
-
-
-class FakeLoader(object):
- def __init__(self, *test_triples):
- self.triples = test_triples
- self._tests = []
- self._results = {}
- for test_name, result, msg in self.triples:
- self._tests.append(test_name)
- m = re.match("(\w+) \(([\w.]+)\)", test_name)
- self._results['%s.%s' % (m.group(2), m.group(1))] = tuple([test_name, result, msg])
-
- def top_suite(self):
- return FakeTopSuite(self._tests)
-
- def loadTestsFromName(self, name, _):
- return FakeModuleSuite(*self._results[name])
-
-
-class RunnerTest(unittest.TestCase):
- def setUp(self):
- # Here we have to jump through a hoop to make sure test-webkitpy doesn't log
- # any messages from these tests :(.
- self.root_logger = logging.getLogger()
- self.log_levels = []
- self.log_handlers = self.root_logger.handlers[:]
- for handler in self.log_handlers:
- self.log_levels.append(handler.level)
- handler.level = logging.CRITICAL
-
- def tearDown(self):
- for handler in self.log_handlers:
- handler.level = self.log_levels.pop(0)
-
- def test_run(self, verbose=0, timing=False, child_processes=1, quiet=False):
- options = MockOptions(verbose=verbose, timing=timing, child_processes=child_processes, quiet=quiet, pass_through=False)
- stream = StringIO.StringIO()
- loader = FakeLoader(('test1 (Foo)', '.', ''),
- ('test2 (Foo)', 'F', 'test2\nfailed'),
- ('test3 (Foo)', 'E', 'test3\nerred'))
- runner = Runner(Printer(stream, options), loader)
- runner.run(['Foo.test1', 'Foo.test2', 'Foo.test3'], 1)
- self.assertEqual(runner.tests_run, 3)
- self.assertEqual(len(runner.failures), 1)
- self.assertEqual(len(runner.errors), 1)
diff --git a/Tools/Scripts/webkitpy/test/skip.py b/Tools/Scripts/webkitpy/test/skip.py
deleted file mode 100644
index 8587d56cb..000000000
--- a/Tools/Scripts/webkitpy/test/skip.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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 logging
-
-_log = logging.getLogger(__name__)
-
-
-def skip_if(klass, condition, message=None, logger=None):
- """Makes all test_* methods in a given class no-ops if the given condition
- is False. Backported from Python 3.1+'s unittest.skipIf decorator."""
- if not logger:
- logger = _log
- if not condition:
- return klass
- for name in dir(klass):
- attr = getattr(klass, name)
- if not callable(attr):
- continue
- if not name.startswith('test_'):
- continue
- setattr(klass, name, _skipped_method(attr, message, logger))
- klass._printed_skipped_message = False
- return klass
-
-
-def _skipped_method(method, message, logger):
- def _skip(*args):
- if method.im_class._printed_skipped_message:
- return
- method.im_class._printed_skipped_message = True
- logger.info('Skipping %s.%s: %s' % (method.__module__, method.im_class.__name__, message))
- return _skip
diff --git a/Tools/Scripts/webkitpy/test/skip_unittest.py b/Tools/Scripts/webkitpy/test/skip_unittest.py
deleted file mode 100644
index bfcb6a67c..000000000
--- a/Tools/Scripts/webkitpy/test/skip_unittest.py
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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 StringIO
-import logging
-import unittest2 as unittest
-
-from webkitpy.test.skip import skip_if
-
-
-class SkipTest(unittest.TestCase):
- def setUp(self):
- self.logger = logging.getLogger(__name__)
-
- self.old_level = self.logger.level
- self.logger.setLevel(logging.INFO)
-
- self.old_propagate = self.logger.propagate
- self.logger.propagate = False
-
- self.log_stream = StringIO.StringIO()
- self.handler = logging.StreamHandler(self.log_stream)
- self.logger.addHandler(self.handler)
-
- self.foo_was_called = False
-
- def tearDown(self):
- self.logger.removeHandler(self.handler)
- self.propagate = self.old_propagate
- self.logger.setLevel(self.old_level)
-
- def create_fixture_class(self):
- class TestSkipFixture(object):
- def __init__(self, callback):
- self.callback = callback
-
- def test_foo(self):
- self.callback()
-
- return TestSkipFixture
-
- def foo_callback(self):
- self.foo_was_called = True
-
- def test_skip_if_false(self):
- klass = skip_if(self.create_fixture_class(), False, 'Should not see this message.', logger=self.logger)
- klass(self.foo_callback).test_foo()
- self.assertEqual(self.log_stream.getvalue(), '')
- self.assertTrue(self.foo_was_called)
-
- def test_skip_if_true(self):
- klass = skip_if(self.create_fixture_class(), True, 'Should see this message.', logger=self.logger)
- klass(self.foo_callback).test_foo()
- self.assertEqual(self.log_stream.getvalue(), 'Skipping webkitpy.test.skip_unittest.TestSkipFixture: Should see this message.\n')
- self.assertFalse(self.foo_was_called)
diff --git a/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py b/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py
deleted file mode 100644
index 4b17b853d..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/BeautifulSoup.py
+++ /dev/null
@@ -1,2014 +0,0 @@
-"""Beautiful Soup
-Elixir and Tonic
-"The Screen-Scraper's Friend"
-http://www.crummy.com/software/BeautifulSoup/
-
-Beautiful Soup parses a (possibly invalid) XML or HTML document into a
-tree representation. It provides methods and Pythonic idioms that make
-it easy to navigate, search, and modify the tree.
-
-A well-formed XML/HTML document yields a well-formed data
-structure. An ill-formed XML/HTML document yields a correspondingly
-ill-formed data structure. If your document is only locally
-well-formed, you can use this library to find and process the
-well-formed part of it.
-
-Beautiful Soup works with Python 2.2 and up. It has no external
-dependencies, but you'll have more success at converting data to UTF-8
-if you also install these three packages:
-
-* chardet, for auto-detecting character encodings
- http://chardet.feedparser.org/
-* cjkcodecs and iconv_codec, which add more encodings to the ones supported
- by stock Python.
- http://cjkpython.i18n.org/
-
-Beautiful Soup defines classes for two main parsing strategies:
-
- * BeautifulStoneSoup, for parsing XML, SGML, or your domain-specific
- language that kind of looks like XML.
-
- * BeautifulSoup, for parsing run-of-the-mill HTML code, be it valid
- or invalid. This class has web browser-like heuristics for
- obtaining a sensible parse tree in the face of common HTML errors.
-
-Beautiful Soup also defines a class (UnicodeDammit) for autodetecting
-the encoding of an HTML or XML document, and converting it to
-Unicode. Much of this code is taken from Mark Pilgrim's Universal Feed Parser.
-
-For more than you ever wanted to know about Beautiful Soup, see the
-documentation:
-http://www.crummy.com/software/BeautifulSoup/documentation.html
-
-Here, have some legalese:
-
-Copyright (c) 2004-2010, Leonard Richardson
-
-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 the the Beautiful Soup Consortium and All
- Night Kosher Bakery 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, DAMMIT.
-
-"""
-from __future__ import generators
-
-__author__ = "Leonard Richardson (leonardr@segfault.org)"
-__version__ = "3.2.0"
-__copyright__ = "Copyright (c) 2004-2010 Leonard Richardson"
-__license__ = "New-style BSD"
-
-from sgmllib import SGMLParser, SGMLParseError
-import codecs
-import markupbase
-import types
-import re
-import sgmllib
-try:
- from htmlentitydefs import name2codepoint
-except ImportError:
- name2codepoint = {}
-try:
- set
-except NameError:
- from sets import Set as set
-
-#These hacks make Beautiful Soup able to parse XML with namespaces
-sgmllib.tagfind = re.compile('[a-zA-Z][-_.:a-zA-Z0-9]*')
-markupbase._declname_match = re.compile(r'[a-zA-Z][-_.:a-zA-Z0-9]*\s*').match
-
-DEFAULT_OUTPUT_ENCODING = "utf-8"
-
-def _match_css_class(str):
- """Build a RE to match the given CSS class."""
- return re.compile(r"(^|.*\s)%s($|\s)" % str)
-
-# First, the classes that represent markup elements.
-
-class PageElement(object):
- """Contains the navigational information for some part of the page
- (either a tag or a piece of text)"""
-
- def setup(self, parent=None, previous=None):
- """Sets up the initial relations between this element and
- other elements."""
- self.parent = parent
- self.previous = previous
- self.next = None
- self.previousSibling = None
- self.nextSibling = None
- if self.parent and self.parent.contents:
- self.previousSibling = self.parent.contents[-1]
- self.previousSibling.nextSibling = self
-
- def replaceWith(self, replaceWith):
- oldParent = self.parent
- myIndex = self.parent.index(self)
- if hasattr(replaceWith, "parent")\
- and replaceWith.parent is self.parent:
- # We're replacing this element with one of its siblings.
- index = replaceWith.parent.index(replaceWith)
- if index and index < myIndex:
- # Furthermore, it comes before this element. That
- # means that when we extract it, the index of this
- # element will change.
- myIndex = myIndex - 1
- self.extract()
- oldParent.insert(myIndex, replaceWith)
-
- def replaceWithChildren(self):
- myParent = self.parent
- myIndex = self.parent.index(self)
- self.extract()
- reversedChildren = list(self.contents)
- reversedChildren.reverse()
- for child in reversedChildren:
- myParent.insert(myIndex, child)
-
- def extract(self):
- """Destructively rips this element out of the tree."""
- if self.parent:
- try:
- del self.parent.contents[self.parent.index(self)]
- except ValueError:
- pass
-
- #Find the two elements that would be next to each other if
- #this element (and any children) hadn't been parsed. Connect
- #the two.
- lastChild = self._lastRecursiveChild()
- nextElement = lastChild.next
-
- if self.previous:
- self.previous.next = nextElement
- if nextElement:
- nextElement.previous = self.previous
- self.previous = None
- lastChild.next = None
-
- self.parent = None
- if self.previousSibling:
- self.previousSibling.nextSibling = self.nextSibling
- if self.nextSibling:
- self.nextSibling.previousSibling = self.previousSibling
- self.previousSibling = self.nextSibling = None
- return self
-
- def _lastRecursiveChild(self):
- "Finds the last element beneath this object to be parsed."
- lastChild = self
- while hasattr(lastChild, 'contents') and lastChild.contents:
- lastChild = lastChild.contents[-1]
- return lastChild
-
- def insert(self, position, newChild):
- if isinstance(newChild, basestring) \
- and not isinstance(newChild, NavigableString):
- newChild = NavigableString(newChild)
-
- position = min(position, len(self.contents))
- if hasattr(newChild, 'parent') and newChild.parent is not None:
- # We're 'inserting' an element that's already one
- # of this object's children.
- if newChild.parent is self:
- index = self.index(newChild)
- if index > position:
- # Furthermore we're moving it further down the
- # list of this object's children. That means that
- # when we extract this element, our target index
- # will jump down one.
- position = position - 1
- newChild.extract()
-
- newChild.parent = self
- previousChild = None
- if position == 0:
- newChild.previousSibling = None
- newChild.previous = self
- else:
- previousChild = self.contents[position-1]
- newChild.previousSibling = previousChild
- newChild.previousSibling.nextSibling = newChild
- newChild.previous = previousChild._lastRecursiveChild()
- if newChild.previous:
- newChild.previous.next = newChild
-
- newChildsLastElement = newChild._lastRecursiveChild()
-
- if position >= len(self.contents):
- newChild.nextSibling = None
-
- parent = self
- parentsNextSibling = None
- while not parentsNextSibling:
- parentsNextSibling = parent.nextSibling
- parent = parent.parent
- if not parent: # This is the last element in the document.
- break
- if parentsNextSibling:
- newChildsLastElement.next = parentsNextSibling
- else:
- newChildsLastElement.next = None
- else:
- nextChild = self.contents[position]
- newChild.nextSibling = nextChild
- if newChild.nextSibling:
- newChild.nextSibling.previousSibling = newChild
- newChildsLastElement.next = nextChild
-
- if newChildsLastElement.next:
- newChildsLastElement.next.previous = newChildsLastElement
- self.contents.insert(position, newChild)
-
- def append(self, tag):
- """Appends the given tag to the contents of this tag."""
- self.insert(len(self.contents), tag)
-
- def findNext(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the first item that matches the given criteria and
- appears after this Tag in the document."""
- return self._findOne(self.findAllNext, name, attrs, text, **kwargs)
-
- def findAllNext(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns all items that match the given criteria and appear
- after this Tag in the document."""
- return self._findAll(name, attrs, text, limit, self.nextGenerator,
- **kwargs)
-
- def findNextSibling(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the closest sibling to this Tag that matches the
- given criteria and appears after this Tag in the document."""
- return self._findOne(self.findNextSiblings, name, attrs, text,
- **kwargs)
-
- def findNextSiblings(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns the siblings of this Tag that match the given
- criteria and appear after this Tag in the document."""
- return self._findAll(name, attrs, text, limit,
- self.nextSiblingGenerator, **kwargs)
- fetchNextSiblings = findNextSiblings # Compatibility with pre-3.x
-
- def findPrevious(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the first item that matches the given criteria and
- appears before this Tag in the document."""
- return self._findOne(self.findAllPrevious, name, attrs, text, **kwargs)
-
- def findAllPrevious(self, name=None, attrs={}, text=None, limit=None,
- **kwargs):
- """Returns all items that match the given criteria and appear
- before this Tag in the document."""
- return self._findAll(name, attrs, text, limit, self.previousGenerator,
- **kwargs)
- fetchPrevious = findAllPrevious # Compatibility with pre-3.x
-
- def findPreviousSibling(self, name=None, attrs={}, text=None, **kwargs):
- """Returns the closest sibling to this Tag that matches the
- given criteria and appears before this Tag in the document."""
- return self._findOne(self.findPreviousSiblings, name, attrs, text,
- **kwargs)
-
- def findPreviousSiblings(self, name=None, attrs={}, text=None,
- limit=None, **kwargs):
- """Returns the siblings of this Tag that match the given
- criteria and appear before this Tag in the document."""
- return self._findAll(name, attrs, text, limit,
- self.previousSiblingGenerator, **kwargs)
- fetchPreviousSiblings = findPreviousSiblings # Compatibility with pre-3.x
-
- def findParent(self, name=None, attrs={}, **kwargs):
- """Returns the closest parent of this Tag that matches the given
- criteria."""
- # NOTE: We can't use _findOne because findParents takes a different
- # set of arguments.
- r = None
- l = self.findParents(name, attrs, 1)
- if l:
- r = l[0]
- return r
-
- def findParents(self, name=None, attrs={}, limit=None, **kwargs):
- """Returns the parents of this Tag that match the given
- criteria."""
-
- return self._findAll(name, attrs, None, limit, self.parentGenerator,
- **kwargs)
- fetchParents = findParents # Compatibility with pre-3.x
-
- #These methods do the real heavy lifting.
-
- def _findOne(self, method, name, attrs, text, **kwargs):
- r = None
- l = method(name, attrs, text, 1, **kwargs)
- if l:
- r = l[0]
- return r
-
- def _findAll(self, name, attrs, text, limit, generator, **kwargs):
- "Iterates over a generator looking for things that match."
-
- if isinstance(name, SoupStrainer):
- strainer = name
- # (Possibly) special case some findAll*(...) searches
- elif text is None and not limit and not attrs and not kwargs:
- # findAll*(True)
- if name is True:
- return [element for element in generator()
- if isinstance(element, Tag)]
- # findAll*('tag-name')
- elif isinstance(name, basestring):
- return [element for element in generator()
- if isinstance(element, Tag) and
- element.name == name]
- else:
- strainer = SoupStrainer(name, attrs, text, **kwargs)
- # Build a SoupStrainer
- else:
- strainer = SoupStrainer(name, attrs, text, **kwargs)
- results = ResultSet(strainer)
- g = generator()
- while True:
- try:
- i = g.next()
- except StopIteration:
- break
- if i:
- found = strainer.search(i)
- if found:
- results.append(found)
- if limit and len(results) >= limit:
- break
- return results
-
- #These Generators can be used to navigate starting from both
- #NavigableStrings and Tags.
- def nextGenerator(self):
- i = self
- while i is not None:
- i = i.next
- yield i
-
- def nextSiblingGenerator(self):
- i = self
- while i is not None:
- i = i.nextSibling
- yield i
-
- def previousGenerator(self):
- i = self
- while i is not None:
- i = i.previous
- yield i
-
- def previousSiblingGenerator(self):
- i = self
- while i is not None:
- i = i.previousSibling
- yield i
-
- def parentGenerator(self):
- i = self
- while i is not None:
- i = i.parent
- yield i
-
- # Utility methods
- def substituteEncoding(self, str, encoding=None):
- encoding = encoding or "utf-8"
- return str.replace("%SOUP-ENCODING%", encoding)
-
- def toEncoding(self, s, encoding=None):
- """Encodes an object to a string in some encoding, or to Unicode.
- ."""
- if isinstance(s, unicode):
- if encoding:
- s = s.encode(encoding)
- elif isinstance(s, str):
- if encoding:
- s = s.encode(encoding)
- else:
- s = unicode(s)
- else:
- if encoding:
- s = self.toEncoding(str(s), encoding)
- else:
- s = unicode(s)
- return s
-
-class NavigableString(unicode, PageElement):
-
- def __new__(cls, value):
- """Create a new NavigableString.
-
- When unpickling a NavigableString, this method is called with
- the string in DEFAULT_OUTPUT_ENCODING. That encoding needs to be
- passed in to the superclass's __new__ or the superclass won't know
- how to handle non-ASCII characters.
- """
- if isinstance(value, unicode):
- return unicode.__new__(cls, value)
- return unicode.__new__(cls, value, DEFAULT_OUTPUT_ENCODING)
-
- def __getnewargs__(self):
- return (NavigableString.__str__(self),)
-
- def __getattr__(self, attr):
- """text.string gives you text. This is for backwards
- compatibility for Navigable*String, but for CData* it lets you
- get the string without the CData wrapper."""
- if attr == 'string':
- return self
- else:
- raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__.__name__, attr)
-
- def __unicode__(self):
- return str(self).decode(DEFAULT_OUTPUT_ENCODING)
-
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- if encoding:
- return self.encode(encoding)
- else:
- return self
-
-class CData(NavigableString):
-
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return "<![CDATA[%s]]>" % NavigableString.__str__(self, encoding)
-
-class ProcessingInstruction(NavigableString):
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- output = self
- if "%SOUP-ENCODING%" in output:
- output = self.substituteEncoding(output, encoding)
- return "<?%s?>" % self.toEncoding(output, encoding)
-
-class Comment(NavigableString):
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return "<!--%s-->" % NavigableString.__str__(self, encoding)
-
-class Declaration(NavigableString):
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return "<!%s>" % NavigableString.__str__(self, encoding)
-
-class Tag(PageElement):
-
- """Represents a found HTML tag with its attributes and contents."""
-
- def _invert(h):
- "Cheap function to invert a hash."
- i = {}
- for k,v in h.items():
- i[v] = k
- return i
-
- XML_ENTITIES_TO_SPECIAL_CHARS = { "apos" : "'",
- "quot" : '"',
- "amp" : "&",
- "lt" : "<",
- "gt" : ">" }
-
- XML_SPECIAL_CHARS_TO_ENTITIES = _invert(XML_ENTITIES_TO_SPECIAL_CHARS)
-
- def _convertEntities(self, match):
- """Used in a call to re.sub to replace HTML, XML, and numeric
- entities with the appropriate Unicode characters. If HTML
- entities are being converted, any unrecognized entities are
- escaped."""
- x = match.group(1)
- if self.convertHTMLEntities and x in name2codepoint:
- return unichr(name2codepoint[x])
- elif x in self.XML_ENTITIES_TO_SPECIAL_CHARS:
- if self.convertXMLEntities:
- return self.XML_ENTITIES_TO_SPECIAL_CHARS[x]
- else:
- return u'&%s;' % x
- elif len(x) > 0 and x[0] == '#':
- # Handle numeric entities
- if len(x) > 1 and x[1] == 'x':
- return unichr(int(x[2:], 16))
- else:
- return unichr(int(x[1:]))
-
- elif self.escapeUnrecognizedEntities:
- return u'&amp;%s;' % x
- else:
- return u'&%s;' % x
-
- def __init__(self, parser, name, attrs=None, parent=None,
- previous=None):
- "Basic constructor."
-
- # We don't actually store the parser object: that lets extracted
- # chunks be garbage-collected
- self.parserClass = parser.__class__
- self.isSelfClosing = parser.isSelfClosingTag(name)
- self.name = name
- if attrs is None:
- attrs = []
- elif isinstance(attrs, dict):
- attrs = attrs.items()
- self.attrs = attrs
- self.contents = []
- self.setup(parent, previous)
- self.hidden = False
- self.containsSubstitutions = False
- self.convertHTMLEntities = parser.convertHTMLEntities
- self.convertXMLEntities = parser.convertXMLEntities
- self.escapeUnrecognizedEntities = parser.escapeUnrecognizedEntities
-
- # Convert any HTML, XML, or numeric entities in the attribute values.
- convert = lambda(k, val): (k,
- re.sub("&(#\d+|#x[0-9a-fA-F]+|\w+);",
- self._convertEntities,
- val))
- self.attrs = map(convert, self.attrs)
-
- def getString(self):
- if (len(self.contents) == 1
- and isinstance(self.contents[0], NavigableString)):
- return self.contents[0]
-
- def setString(self, string):
- """Replace the contents of the tag with a string"""
- self.clear()
- self.append(string)
-
- string = property(getString, setString)
-
- def getText(self, separator=u""):
- if not len(self.contents):
- return u""
- stopNode = self._lastRecursiveChild().next
- strings = []
- current = self.contents[0]
- while current is not stopNode:
- if isinstance(current, NavigableString):
- strings.append(current.strip())
- current = current.next
- return separator.join(strings)
-
- text = property(getText)
-
- def get(self, key, default=None):
- """Returns the value of the 'key' attribute for the tag, or
- the value given for 'default' if it doesn't have that
- attribute."""
- return self._getAttrMap().get(key, default)
-
- def clear(self):
- """Extract all children."""
- for child in self.contents[:]:
- child.extract()
-
- def index(self, element):
- for i, child in enumerate(self.contents):
- if child is element:
- return i
- raise ValueError("Tag.index: element not in tag")
-
- def has_key(self, key):
- return self._getAttrMap().has_key(key)
-
- def __getitem__(self, key):
- """tag[key] returns the value of the 'key' attribute for the tag,
- and throws an exception if it's not there."""
- return self._getAttrMap()[key]
-
- def __iter__(self):
- "Iterating over a tag iterates over its contents."
- return iter(self.contents)
-
- def __len__(self):
- "The length of a tag is the length of its list of contents."
- return len(self.contents)
-
- def __contains__(self, x):
- return x in self.contents
-
- def __nonzero__(self):
- "A tag is non-None even if it has no contents."
- return True
-
- def __setitem__(self, key, value):
- """Setting tag[key] sets the value of the 'key' attribute for the
- tag."""
- self._getAttrMap()
- self.attrMap[key] = value
- found = False
- for i in range(0, len(self.attrs)):
- if self.attrs[i][0] == key:
- self.attrs[i] = (key, value)
- found = True
- if not found:
- self.attrs.append((key, value))
- self._getAttrMap()[key] = value
-
- def __delitem__(self, key):
- "Deleting tag[key] deletes all 'key' attributes for the tag."
- for item in self.attrs:
- if item[0] == key:
- self.attrs.remove(item)
- #We don't break because bad HTML can define the same
- #attribute multiple times.
- self._getAttrMap()
- if self.attrMap.has_key(key):
- del self.attrMap[key]
-
- def __call__(self, *args, **kwargs):
- """Calling a tag like a function is the same as calling its
- findAll() method. Eg. tag('a') returns a list of all the A tags
- found within this tag."""
- return apply(self.findAll, args, kwargs)
-
- def __getattr__(self, tag):
- #print "Getattr %s.%s" % (self.__class__, tag)
- if len(tag) > 3 and tag.rfind('Tag') == len(tag)-3:
- return self.find(tag[:-3])
- elif tag.find('__') != 0:
- return self.find(tag)
- raise AttributeError, "'%s' object has no attribute '%s'" % (self.__class__, tag)
-
- def __eq__(self, other):
- """Returns true iff this tag has the same name, the same attributes,
- and the same contents (recursively) as the given tag.
-
- NOTE: right now this will return false if two tags have the
- same attributes in a different order. Should this be fixed?"""
- if other is self:
- return True
- if not hasattr(other, 'name') or not hasattr(other, 'attrs') or not hasattr(other, 'contents') or self.name != other.name or self.attrs != other.attrs or len(self) != len(other):
- return False
- for i in range(0, len(self.contents)):
- if self.contents[i] != other.contents[i]:
- return False
- return True
-
- def __ne__(self, other):
- """Returns true iff this tag is not identical to the other tag,
- as defined in __eq__."""
- return not self == other
-
- def __repr__(self, encoding=DEFAULT_OUTPUT_ENCODING):
- """Renders this tag as a string."""
- return self.__str__(encoding)
-
- def __unicode__(self):
- return self.__str__(None)
-
- BARE_AMPERSAND_OR_BRACKET = re.compile("([<>]|"
- + "&(?!#\d+;|#x[0-9a-fA-F]+;|\w+;)"
- + ")")
-
- def _sub_entity(self, x):
- """Used with a regular expression to substitute the
- appropriate XML entity for an XML special character."""
- return "&" + self.XML_SPECIAL_CHARS_TO_ENTITIES[x.group(0)[0]] + ";"
-
- def __str__(self, encoding=DEFAULT_OUTPUT_ENCODING,
- prettyPrint=False, indentLevel=0):
- """Returns a string or Unicode representation of this tag and
- its contents. To get Unicode, pass None for encoding.
-
- NOTE: since Python's HTML parser consumes whitespace, this
- method is not certain to reproduce the whitespace present in
- the original string."""
-
- encodedName = self.toEncoding(self.name, encoding)
-
- attrs = []
- if self.attrs:
- for key, val in self.attrs:
- fmt = '%s="%s"'
- if isinstance(val, basestring):
- if self.containsSubstitutions and '%SOUP-ENCODING%' in val:
- val = self.substituteEncoding(val, encoding)
-
- # The attribute value either:
- #
- # * Contains no embedded double quotes or single quotes.
- # No problem: we enclose it in double quotes.
- # * Contains embedded single quotes. No problem:
- # double quotes work here too.
- # * Contains embedded double quotes. No problem:
- # we enclose it in single quotes.
- # * Embeds both single _and_ double quotes. This
- # can't happen naturally, but it can happen if
- # you modify an attribute value after parsing
- # the document. Now we have a bit of a
- # problem. We solve it by enclosing the
- # attribute in single quotes, and escaping any
- # embedded single quotes to XML entities.
- if '"' in val:
- fmt = "%s='%s'"
- if "'" in val:
- # TODO: replace with apos when
- # appropriate.
- val = val.replace("'", "&squot;")
-
- # Now we're okay w/r/t quotes. But the attribute
- # value might also contain angle brackets, or
- # ampersands that aren't part of entities. We need
- # to escape those to XML entities too.
- val = self.BARE_AMPERSAND_OR_BRACKET.sub(self._sub_entity, val)
-
- attrs.append(fmt % (self.toEncoding(key, encoding),
- self.toEncoding(val, encoding)))
- close = ''
- closeTag = ''
- if self.isSelfClosing:
- close = ' /'
- else:
- closeTag = '</%s>' % encodedName
-
- indentTag, indentContents = 0, 0
- if prettyPrint:
- indentTag = indentLevel
- space = (' ' * (indentTag-1))
- indentContents = indentTag + 1
- contents = self.renderContents(encoding, prettyPrint, indentContents)
- if self.hidden:
- s = contents
- else:
- s = []
- attributeString = ''
- if attrs:
- attributeString = ' ' + ' '.join(attrs)
- if prettyPrint:
- s.append(space)
- s.append('<%s%s%s>' % (encodedName, attributeString, close))
- if prettyPrint:
- s.append("\n")
- s.append(contents)
- if prettyPrint and contents and contents[-1] != "\n":
- s.append("\n")
- if prettyPrint and closeTag:
- s.append(space)
- s.append(closeTag)
- if prettyPrint and closeTag and self.nextSibling:
- s.append("\n")
- s = ''.join(s)
- return s
-
- def decompose(self):
- """Recursively destroys the contents of this tree."""
- self.extract()
- if len(self.contents) == 0:
- return
- current = self.contents[0]
- while current is not None:
- next = current.next
- if isinstance(current, Tag):
- del current.contents[:]
- current.parent = None
- current.previous = None
- current.previousSibling = None
- current.next = None
- current.nextSibling = None
- current = next
-
- def prettify(self, encoding=DEFAULT_OUTPUT_ENCODING):
- return self.__str__(encoding, True)
-
- def renderContents(self, encoding=DEFAULT_OUTPUT_ENCODING,
- prettyPrint=False, indentLevel=0):
- """Renders the contents of this tag as a string in the given
- encoding. If encoding is None, returns a Unicode string.."""
- s=[]
- for c in self:
- text = None
- if isinstance(c, NavigableString):
- text = c.__str__(encoding)
- elif isinstance(c, Tag):
- s.append(c.__str__(encoding, prettyPrint, indentLevel))
- if text and prettyPrint:
- text = text.strip()
- if text:
- if prettyPrint:
- s.append(" " * (indentLevel-1))
- s.append(text)
- if prettyPrint:
- s.append("\n")
- return ''.join(s)
-
- #Soup methods
-
- def find(self, name=None, attrs={}, recursive=True, text=None,
- **kwargs):
- """Return only the first child of this Tag matching the given
- criteria."""
- r = None
- l = self.findAll(name, attrs, recursive, text, 1, **kwargs)
- if l:
- r = l[0]
- return r
- findChild = find
-
- def findAll(self, name=None, attrs={}, recursive=True, text=None,
- limit=None, **kwargs):
- """Extracts a list of Tag objects that match the given
- criteria. You can specify the name of the Tag and any
- attributes you want the Tag to have.
-
- The value of a key-value pair in the 'attrs' map can be a
- string, a list of strings, a regular expression object, or a
- callable that takes a string and returns whether or not the
- string matches for some custom definition of 'matches'. The
- same is true of the tag name."""
- generator = self.recursiveChildGenerator
- if not recursive:
- generator = self.childGenerator
- return self._findAll(name, attrs, text, limit, generator, **kwargs)
- findChildren = findAll
-
- # Pre-3.x compatibility methods
- first = find
- fetch = findAll
-
- def fetchText(self, text=None, recursive=True, limit=None):
- return self.findAll(text=text, recursive=recursive, limit=limit)
-
- def firstText(self, text=None, recursive=True):
- return self.find(text=text, recursive=recursive)
-
- #Private methods
-
- def _getAttrMap(self):
- """Initializes a map representation of this tag's attributes,
- if not already initialized."""
- if not getattr(self, 'attrMap'):
- self.attrMap = {}
- for (key, value) in self.attrs:
- self.attrMap[key] = value
- return self.attrMap
-
- #Generator methods
- def childGenerator(self):
- # Just use the iterator from the contents
- return iter(self.contents)
-
- def recursiveChildGenerator(self):
- if not len(self.contents):
- raise StopIteration
- stopNode = self._lastRecursiveChild().next
- current = self.contents[0]
- while current is not stopNode:
- yield current
- current = current.next
-
-
-# Next, a couple classes to represent queries and their results.
-class SoupStrainer:
- """Encapsulates a number of ways of matching a markup element (tag or
- text)."""
-
- def __init__(self, name=None, attrs={}, text=None, **kwargs):
- self.name = name
- if isinstance(attrs, basestring):
- kwargs['class'] = _match_css_class(attrs)
- attrs = None
- if kwargs:
- if attrs:
- attrs = attrs.copy()
- attrs.update(kwargs)
- else:
- attrs = kwargs
- self.attrs = attrs
- self.text = text
-
- def __str__(self):
- if self.text:
- return self.text
- else:
- return "%s|%s" % (self.name, self.attrs)
-
- def searchTag(self, markupName=None, markupAttrs={}):
- found = None
- markup = None
- if isinstance(markupName, Tag):
- markup = markupName
- markupAttrs = markup
- callFunctionWithTagData = callable(self.name) \
- and not isinstance(markupName, Tag)
-
- if (not self.name) \
- or callFunctionWithTagData \
- or (markup and self._matches(markup, self.name)) \
- or (not markup and self._matches(markupName, self.name)):
- if callFunctionWithTagData:
- match = self.name(markupName, markupAttrs)
- else:
- match = True
- markupAttrMap = None
- for attr, matchAgainst in self.attrs.items():
- if not markupAttrMap:
- if hasattr(markupAttrs, 'get'):
- markupAttrMap = markupAttrs
- else:
- markupAttrMap = {}
- for k,v in markupAttrs:
- markupAttrMap[k] = v
- attrValue = markupAttrMap.get(attr)
- if not self._matches(attrValue, matchAgainst):
- match = False
- break
- if match:
- if markup:
- found = markup
- else:
- found = markupName
- return found
-
- def search(self, markup):
- #print 'looking for %s in %s' % (self, markup)
- found = None
- # If given a list of items, scan it for a text element that
- # matches.
- if hasattr(markup, "__iter__") \
- and not isinstance(markup, Tag):
- for element in markup:
- if isinstance(element, NavigableString) \
- and self.search(element):
- found = element
- break
- # If it's a Tag, make sure its name or attributes match.
- # Don't bother with Tags if we're searching for text.
- elif isinstance(markup, Tag):
- if not self.text:
- found = self.searchTag(markup)
- # If it's text, make sure the text matches.
- elif isinstance(markup, NavigableString) or \
- isinstance(markup, basestring):
- if self._matches(markup, self.text):
- found = markup
- else:
- raise Exception, "I don't know how to match against a %s" \
- % markup.__class__
- return found
-
- def _matches(self, markup, matchAgainst):
- #print "Matching %s against %s" % (markup, matchAgainst)
- result = False
- if matchAgainst is True:
- result = markup is not None
- elif callable(matchAgainst):
- result = matchAgainst(markup)
- else:
- #Custom match methods take the tag as an argument, but all
- #other ways of matching match the tag name as a string.
- if isinstance(markup, Tag):
- markup = markup.name
- if markup and not isinstance(markup, basestring):
- markup = unicode(markup)
- #Now we know that chunk is either a string, or None.
- if hasattr(matchAgainst, 'match'):
- # It's a regexp object.
- result = markup and matchAgainst.search(markup)
- elif hasattr(matchAgainst, '__iter__'): # list-like
- result = markup in matchAgainst
- elif hasattr(matchAgainst, 'items'):
- result = markup.has_key(matchAgainst)
- elif matchAgainst and isinstance(markup, basestring):
- if isinstance(markup, unicode):
- matchAgainst = unicode(matchAgainst)
- else:
- matchAgainst = str(matchAgainst)
-
- if not result:
- result = matchAgainst == markup
- return result
-
-class ResultSet(list):
- """A ResultSet is just a list that keeps track of the SoupStrainer
- that created it."""
- def __init__(self, source):
- list.__init__([])
- self.source = source
-
-# Now, some helper functions.
-
-def buildTagMap(default, *args):
- """Turns a list of maps, lists, or scalars into a single map.
- Used to build the SELF_CLOSING_TAGS, NESTABLE_TAGS, and
- NESTING_RESET_TAGS maps out of lists and partial maps."""
- built = {}
- for portion in args:
- if hasattr(portion, 'items'):
- #It's a map. Merge it.
- for k,v in portion.items():
- built[k] = v
- elif hasattr(portion, '__iter__'): # is a list
- #It's a list. Map each item to the default.
- for k in portion:
- built[k] = default
- else:
- #It's a scalar. Map it to the default.
- built[portion] = default
- return built
-
-# Now, the parser classes.
-
-class BeautifulStoneSoup(Tag, SGMLParser):
-
- """This class contains the basic parser and search code. It defines
- a parser that knows nothing about tag behavior except for the
- following:
-
- You can't close a tag without closing all the tags it encloses.
- That is, "<foo><bar></foo>" actually means
- "<foo><bar></bar></foo>".
-
- [Another possible explanation is "<foo><bar /></foo>", but since
- this class defines no SELF_CLOSING_TAGS, it will never use that
- explanation.]
-
- This class is useful for parsing XML or made-up markup languages,
- or when BeautifulSoup makes an assumption counter to what you were
- expecting."""
-
- SELF_CLOSING_TAGS = {}
- NESTABLE_TAGS = {}
- RESET_NESTING_TAGS = {}
- QUOTE_TAGS = {}
- PRESERVE_WHITESPACE_TAGS = []
-
- MARKUP_MASSAGE = [(re.compile('(<[^<>]*)/>'),
- lambda x: x.group(1) + ' />'),
- (re.compile('<!\s+([^<>]*)>'),
- lambda x: '<!' + x.group(1) + '>')
- ]
-
- ROOT_TAG_NAME = u'[document]'
-
- HTML_ENTITIES = "html"
- XML_ENTITIES = "xml"
- XHTML_ENTITIES = "xhtml"
- # TODO: This only exists for backwards-compatibility
- ALL_ENTITIES = XHTML_ENTITIES
-
- # Used when determining whether a text node is all whitespace and
- # can be replaced with a single space. A text node that contains
- # fancy Unicode spaces (usually non-breaking) should be left
- # alone.
- STRIP_ASCII_SPACES = { 9: None, 10: None, 12: None, 13: None, 32: None, }
-
- def __init__(self, markup="", parseOnlyThese=None, fromEncoding=None,
- markupMassage=True, smartQuotesTo=XML_ENTITIES,
- convertEntities=None, selfClosingTags=None, isHTML=False):
- """The Soup object is initialized as the 'root tag', and the
- provided markup (which can be a string or a file-like object)
- is fed into the underlying parser.
-
- sgmllib will process most bad HTML, and the BeautifulSoup
- class has some tricks for dealing with some HTML that kills
- sgmllib, but Beautiful Soup can nonetheless choke or lose data
- if your data uses self-closing tags or declarations
- incorrectly.
-
- By default, Beautiful Soup uses regexes to sanitize input,
- avoiding the vast majority of these problems. If the problems
- don't apply to you, pass in False for markupMassage, and
- you'll get better performance.
-
- The default parser massage techniques fix the two most common
- instances of invalid HTML that choke sgmllib:
-
- <br/> (No space between name of closing tag and tag close)
- <! --Comment--> (Extraneous whitespace in declaration)
-
- You can pass in a custom list of (RE object, replace method)
- tuples to get Beautiful Soup to scrub your input the way you
- want."""
-
- self.parseOnlyThese = parseOnlyThese
- self.fromEncoding = fromEncoding
- self.smartQuotesTo = smartQuotesTo
- self.convertEntities = convertEntities
- # Set the rules for how we'll deal with the entities we
- # encounter
- if self.convertEntities:
- # It doesn't make sense to convert encoded characters to
- # entities even while you're converting entities to Unicode.
- # Just convert it all to Unicode.
- self.smartQuotesTo = None
- if convertEntities == self.HTML_ENTITIES:
- self.convertXMLEntities = False
- self.convertHTMLEntities = True
- self.escapeUnrecognizedEntities = True
- elif convertEntities == self.XHTML_ENTITIES:
- self.convertXMLEntities = True
- self.convertHTMLEntities = True
- self.escapeUnrecognizedEntities = False
- elif convertEntities == self.XML_ENTITIES:
- self.convertXMLEntities = True
- self.convertHTMLEntities = False
- self.escapeUnrecognizedEntities = False
- else:
- self.convertXMLEntities = False
- self.convertHTMLEntities = False
- self.escapeUnrecognizedEntities = False
-
- self.instanceSelfClosingTags = buildTagMap(None, selfClosingTags)
- SGMLParser.__init__(self)
-
- if hasattr(markup, 'read'): # It's a file-type object.
- markup = markup.read()
- self.markup = markup
- self.markupMassage = markupMassage
- try:
- self._feed(isHTML=isHTML)
- except StopParsing:
- pass
- self.markup = None # The markup can now be GCed
-
- def convert_charref(self, name):
- """This method fixes a bug in Python's SGMLParser."""
- try:
- n = int(name)
- except ValueError:
- return
- if not 0 <= n <= 127 : # ASCII ends at 127, not 255
- return
- return self.convert_codepoint(n)
-
- def _feed(self, inDocumentEncoding=None, isHTML=False):
- # Convert the document to Unicode.
- markup = self.markup
- if isinstance(markup, unicode):
- if not hasattr(self, 'originalEncoding'):
- self.originalEncoding = None
- else:
- dammit = UnicodeDammit\
- (markup, [self.fromEncoding, inDocumentEncoding],
- smartQuotesTo=self.smartQuotesTo, isHTML=isHTML)
- markup = dammit.unicode
- self.originalEncoding = dammit.originalEncoding
- self.declaredHTMLEncoding = dammit.declaredHTMLEncoding
- if markup:
- if self.markupMassage:
- if not hasattr(self.markupMassage, "__iter__"):
- self.markupMassage = self.MARKUP_MASSAGE
- for fix, m in self.markupMassage:
- markup = fix.sub(m, markup)
- # TODO: We get rid of markupMassage so that the
- # soup object can be deepcopied later on. Some
- # Python installations can't copy regexes. If anyone
- # was relying on the existence of markupMassage, this
- # might cause problems.
- del(self.markupMassage)
- self.reset()
-
- SGMLParser.feed(self, markup)
- # Close out any unfinished strings and close all the open tags.
- self.endData()
- while self.currentTag.name != self.ROOT_TAG_NAME:
- self.popTag()
-
- def __getattr__(self, methodName):
- """This method routes method call requests to either the SGMLParser
- superclass or the Tag superclass, depending on the method name."""
- #print "__getattr__ called on %s.%s" % (self.__class__, methodName)
-
- if methodName.startswith('start_') or methodName.startswith('end_') \
- or methodName.startswith('do_'):
- return SGMLParser.__getattr__(self, methodName)
- elif not methodName.startswith('__'):
- return Tag.__getattr__(self, methodName)
- else:
- raise AttributeError
-
- def isSelfClosingTag(self, name):
- """Returns true iff the given string is the name of a
- self-closing tag according to this parser."""
- return self.SELF_CLOSING_TAGS.has_key(name) \
- or self.instanceSelfClosingTags.has_key(name)
-
- def reset(self):
- Tag.__init__(self, self, self.ROOT_TAG_NAME)
- self.hidden = 1
- SGMLParser.reset(self)
- self.currentData = []
- self.currentTag = None
- self.tagStack = []
- self.quoteStack = []
- self.pushTag(self)
-
- def popTag(self):
- tag = self.tagStack.pop()
-
- #print "Pop", tag.name
- if self.tagStack:
- self.currentTag = self.tagStack[-1]
- return self.currentTag
-
- def pushTag(self, tag):
- #print "Push", tag.name
- if self.currentTag:
- self.currentTag.contents.append(tag)
- self.tagStack.append(tag)
- self.currentTag = self.tagStack[-1]
-
- def endData(self, containerClass=NavigableString):
- if self.currentData:
- currentData = u''.join(self.currentData)
- if (currentData.translate(self.STRIP_ASCII_SPACES) == '' and
- not set([tag.name for tag in self.tagStack]).intersection(
- self.PRESERVE_WHITESPACE_TAGS)):
- if '\n' in currentData:
- currentData = '\n'
- else:
- currentData = ' '
- self.currentData = []
- if self.parseOnlyThese and len(self.tagStack) <= 1 and \
- (not self.parseOnlyThese.text or \
- not self.parseOnlyThese.search(currentData)):
- return
- o = containerClass(currentData)
- o.setup(self.currentTag, self.previous)
- if self.previous:
- self.previous.next = o
- self.previous = o
- self.currentTag.contents.append(o)
-
-
- def _popToTag(self, name, inclusivePop=True):
- """Pops the tag stack up to and including the most recent
- instance of the given tag. If inclusivePop is false, pops the tag
- stack up to but *not* including the most recent instqance of
- the given tag."""
- #print "Popping to %s" % name
- if name == self.ROOT_TAG_NAME:
- return
-
- numPops = 0
- mostRecentTag = None
- for i in range(len(self.tagStack)-1, 0, -1):
- if name == self.tagStack[i].name:
- numPops = len(self.tagStack)-i
- break
- if not inclusivePop:
- numPops = numPops - 1
-
- for i in range(0, numPops):
- mostRecentTag = self.popTag()
- return mostRecentTag
-
- def _smartPop(self, name):
-
- """We need to pop up to the previous tag of this type, unless
- one of this tag's nesting reset triggers comes between this
- tag and the previous tag of this type, OR unless this tag is a
- generic nesting trigger and another generic nesting trigger
- comes between this tag and the previous tag of this type.
-
- Examples:
- <p>Foo<b>Bar *<p>* should pop to 'p', not 'b'.
- <p>Foo<table>Bar *<p>* should pop to 'table', not 'p'.
- <p>Foo<table><tr>Bar *<p>* should pop to 'tr', not 'p'.
-
- <li><ul><li> *<li>* should pop to 'ul', not the first 'li'.
- <tr><table><tr> *<tr>* should pop to 'table', not the first 'tr'
- <td><tr><td> *<td>* should pop to 'tr', not the first 'td'
- """
-
- nestingResetTriggers = self.NESTABLE_TAGS.get(name)
- isNestable = nestingResetTriggers != None
- isResetNesting = self.RESET_NESTING_TAGS.has_key(name)
- popTo = None
- inclusive = True
- for i in range(len(self.tagStack)-1, 0, -1):
- p = self.tagStack[i]
- if (not p or p.name == name) and not isNestable:
- #Non-nestable tags get popped to the top or to their
- #last occurance.
- popTo = name
- break
- if (nestingResetTriggers is not None
- and p.name in nestingResetTriggers) \
- or (nestingResetTriggers is None and isResetNesting
- and self.RESET_NESTING_TAGS.has_key(p.name)):
-
- #If we encounter one of the nesting reset triggers
- #peculiar to this tag, or we encounter another tag
- #that causes nesting to reset, pop up to but not
- #including that tag.
- popTo = p.name
- inclusive = False
- break
- p = p.parent
- if popTo:
- self._popToTag(popTo, inclusive)
-
- def unknown_starttag(self, name, attrs, selfClosing=0):
- #print "Start tag %s: %s" % (name, attrs)
- if self.quoteStack:
- #This is not a real tag.
- #print "<%s> is not real!" % name
- attrs = ''.join([' %s="%s"' % (x, y) for x, y in attrs])
- self.handle_data('<%s%s>' % (name, attrs))
- return
- self.endData()
-
- if not self.isSelfClosingTag(name) and not selfClosing:
- self._smartPop(name)
-
- if self.parseOnlyThese and len(self.tagStack) <= 1 \
- and (self.parseOnlyThese.text or not self.parseOnlyThese.searchTag(name, attrs)):
- return
-
- tag = Tag(self, name, attrs, self.currentTag, self.previous)
- if self.previous:
- self.previous.next = tag
- self.previous = tag
- self.pushTag(tag)
- if selfClosing or self.isSelfClosingTag(name):
- self.popTag()
- if name in self.QUOTE_TAGS:
- #print "Beginning quote (%s)" % name
- self.quoteStack.append(name)
- self.literal = 1
- return tag
-
- def unknown_endtag(self, name):
- #print "End tag %s" % name
- if self.quoteStack and self.quoteStack[-1] != name:
- #This is not a real end tag.
- #print "</%s> is not real!" % name
- self.handle_data('</%s>' % name)
- return
- self.endData()
- self._popToTag(name)
- if self.quoteStack and self.quoteStack[-1] == name:
- self.quoteStack.pop()
- self.literal = (len(self.quoteStack) > 0)
-
- def handle_data(self, data):
- self.currentData.append(data)
-
- def _toStringSubclass(self, text, subclass):
- """Adds a certain piece of text to the tree as a NavigableString
- subclass."""
- self.endData()
- self.handle_data(text)
- self.endData(subclass)
-
- def handle_pi(self, text):
- """Handle a processing instruction as a ProcessingInstruction
- object, possibly one with a %SOUP-ENCODING% slot into which an
- encoding will be plugged later."""
- if text[:3] == "xml":
- text = u"xml version='1.0' encoding='%SOUP-ENCODING%'"
- self._toStringSubclass(text, ProcessingInstruction)
-
- def handle_comment(self, text):
- "Handle comments as Comment objects."
- self._toStringSubclass(text, Comment)
-
- def handle_charref(self, ref):
- "Handle character references as data."
- if self.convertEntities:
- data = unichr(int(ref))
- else:
- data = '&#%s;' % ref
- self.handle_data(data)
-
- def handle_entityref(self, ref):
- """Handle entity references as data, possibly converting known
- HTML and/or XML entity references to the corresponding Unicode
- characters."""
- data = None
- if self.convertHTMLEntities:
- try:
- data = unichr(name2codepoint[ref])
- except KeyError:
- pass
-
- if not data and self.convertXMLEntities:
- data = self.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref)
-
- if not data and self.convertHTMLEntities and \
- not self.XML_ENTITIES_TO_SPECIAL_CHARS.get(ref):
- # TODO: We've got a problem here. We're told this is
- # an entity reference, but it's not an XML entity
- # reference or an HTML entity reference. Nonetheless,
- # the logical thing to do is to pass it through as an
- # unrecognized entity reference.
- #
- # Except: when the input is "&carol;" this function
- # will be called with input "carol". When the input is
- # "AT&T", this function will be called with input
- # "T". We have no way of knowing whether a semicolon
- # was present originally, so we don't know whether
- # this is an unknown entity or just a misplaced
- # ampersand.
- #
- # The more common case is a misplaced ampersand, so I
- # escape the ampersand and omit the trailing semicolon.
- data = "&amp;%s" % ref
- if not data:
- # This case is different from the one above, because we
- # haven't already gone through a supposedly comprehensive
- # mapping of entities to Unicode characters. We might not
- # have gone through any mapping at all. So the chances are
- # very high that this is a real entity, and not a
- # misplaced ampersand.
- data = "&%s;" % ref
- self.handle_data(data)
-
- def handle_decl(self, data):
- "Handle DOCTYPEs and the like as Declaration objects."
- self._toStringSubclass(data, Declaration)
-
- def parse_declaration(self, i):
- """Treat a bogus SGML declaration as raw data. Treat a CDATA
- declaration as a CData object."""
- j = None
- if self.rawdata[i:i+9] == '<![CDATA[':
- k = self.rawdata.find(']]>', i)
- if k == -1:
- k = len(self.rawdata)
- data = self.rawdata[i+9:k]
- j = k+3
- self._toStringSubclass(data, CData)
- else:
- try:
- j = SGMLParser.parse_declaration(self, i)
- except SGMLParseError:
- toHandle = self.rawdata[i:]
- self.handle_data(toHandle)
- j = i + len(toHandle)
- return j
-
-class BeautifulSoup(BeautifulStoneSoup):
-
- """This parser knows the following facts about HTML:
-
- * Some tags have no closing tag and should be interpreted as being
- closed as soon as they are encountered.
-
- * The text inside some tags (ie. 'script') may contain tags which
- are not really part of the document and which should be parsed
- as text, not tags. If you want to parse the text as tags, you can
- always fetch it and parse it explicitly.
-
- * Tag nesting rules:
-
- Most tags can't be nested at all. For instance, the occurance of
- a <p> tag should implicitly close the previous <p> tag.
-
- <p>Para1<p>Para2
- should be transformed into:
- <p>Para1</p><p>Para2
-
- Some tags can be nested arbitrarily. For instance, the occurance
- of a <blockquote> tag should _not_ implicitly close the previous
- <blockquote> tag.
-
- Alice said: <blockquote>Bob said: <blockquote>Blah
- should NOT be transformed into:
- Alice said: <blockquote>Bob said: </blockquote><blockquote>Blah
-
- Some tags can be nested, but the nesting is reset by the
- interposition of other tags. For instance, a <tr> tag should
- implicitly close the previous <tr> tag within the same <table>,
- but not close a <tr> tag in another table.
-
- <table><tr>Blah<tr>Blah
- should be transformed into:
- <table><tr>Blah</tr><tr>Blah
- but,
- <tr>Blah<table><tr>Blah
- should NOT be transformed into
- <tr>Blah<table></tr><tr>Blah
-
- Differing assumptions about tag nesting rules are a major source
- of problems with the BeautifulSoup class. If BeautifulSoup is not
- treating as nestable a tag your page author treats as nestable,
- try ICantBelieveItsBeautifulSoup, MinimalSoup, or
- BeautifulStoneSoup before writing your own subclass."""
-
- def __init__(self, *args, **kwargs):
- if not kwargs.has_key('smartQuotesTo'):
- kwargs['smartQuotesTo'] = self.HTML_ENTITIES
- kwargs['isHTML'] = True
- BeautifulStoneSoup.__init__(self, *args, **kwargs)
-
- SELF_CLOSING_TAGS = buildTagMap(None,
- ('br' , 'hr', 'input', 'img', 'meta',
- 'spacer', 'link', 'frame', 'base', 'col'))
-
- PRESERVE_WHITESPACE_TAGS = set(['pre', 'textarea'])
-
- QUOTE_TAGS = {'script' : None, 'textarea' : None}
-
- #According to the HTML standard, each of these inline tags can
- #contain another tag of the same type. Furthermore, it's common
- #to actually use these tags this way.
- NESTABLE_INLINE_TAGS = ('span', 'font', 'q', 'object', 'bdo', 'sub', 'sup',
- 'center')
-
- #According to the HTML standard, these block tags can contain
- #another tag of the same type. Furthermore, it's common
- #to actually use these tags this way.
- NESTABLE_BLOCK_TAGS = ('blockquote', 'div', 'fieldset', 'ins', 'del')
-
- #Lists can contain other lists, but there are restrictions.
- NESTABLE_LIST_TAGS = { 'ol' : [],
- 'ul' : [],
- 'li' : ['ul', 'ol'],
- 'dl' : [],
- 'dd' : ['dl'],
- 'dt' : ['dl'] }
-
- #Tables can contain other tables, but there are restrictions.
- NESTABLE_TABLE_TAGS = {'table' : [],
- 'tr' : ['table', 'tbody', 'tfoot', 'thead'],
- 'td' : ['tr'],
- 'th' : ['tr'],
- 'thead' : ['table'],
- 'tbody' : ['table'],
- 'tfoot' : ['table'],
- }
-
- NON_NESTABLE_BLOCK_TAGS = ('address', 'form', 'p', 'pre')
-
- #If one of these tags is encountered, all tags up to the next tag of
- #this type are popped.
- RESET_NESTING_TAGS = buildTagMap(None, NESTABLE_BLOCK_TAGS, 'noscript',
- NON_NESTABLE_BLOCK_TAGS,
- NESTABLE_LIST_TAGS,
- NESTABLE_TABLE_TAGS)
-
- NESTABLE_TAGS = buildTagMap([], NESTABLE_INLINE_TAGS, NESTABLE_BLOCK_TAGS,
- NESTABLE_LIST_TAGS, NESTABLE_TABLE_TAGS)
-
- # Used to detect the charset in a META tag; see start_meta
- CHARSET_RE = re.compile("((^|;)\s*charset=)([^;]*)", re.M)
-
- def start_meta(self, attrs):
- """Beautiful Soup can detect a charset included in a META tag,
- try to convert the document to that charset, and re-parse the
- document from the beginning."""
- httpEquiv = None
- contentType = None
- contentTypeIndex = None
- tagNeedsEncodingSubstitution = False
-
- for i in range(0, len(attrs)):
- key, value = attrs[i]
- key = key.lower()
- if key == 'http-equiv':
- httpEquiv = value
- elif key == 'content':
- contentType = value
- contentTypeIndex = i
-
- if httpEquiv and contentType: # It's an interesting meta tag.
- match = self.CHARSET_RE.search(contentType)
- if match:
- if (self.declaredHTMLEncoding is not None or
- self.originalEncoding == self.fromEncoding):
- # An HTML encoding was sniffed while converting
- # the document to Unicode, or an HTML encoding was
- # sniffed during a previous pass through the
- # document, or an encoding was specified
- # explicitly and it worked. Rewrite the meta tag.
- def rewrite(match):
- return match.group(1) + "%SOUP-ENCODING%"
- newAttr = self.CHARSET_RE.sub(rewrite, contentType)
- attrs[contentTypeIndex] = (attrs[contentTypeIndex][0],
- newAttr)
- tagNeedsEncodingSubstitution = True
- else:
- # This is our first pass through the document.
- # Go through it again with the encoding information.
- newCharset = match.group(3)
- if newCharset and newCharset != self.originalEncoding:
- self.declaredHTMLEncoding = newCharset
- self._feed(self.declaredHTMLEncoding)
- raise StopParsing
- pass
- tag = self.unknown_starttag("meta", attrs)
- if tag and tagNeedsEncodingSubstitution:
- tag.containsSubstitutions = True
-
-class StopParsing(Exception):
- pass
-
-class ICantBelieveItsBeautifulSoup(BeautifulSoup):
-
- """The BeautifulSoup class is oriented towards skipping over
- common HTML errors like unclosed tags. However, sometimes it makes
- errors of its own. For instance, consider this fragment:
-
- <b>Foo<b>Bar</b></b>
-
- This is perfectly valid (if bizarre) HTML. However, the
- BeautifulSoup class will implicitly close the first b tag when it
- encounters the second 'b'. It will think the author wrote
- "<b>Foo<b>Bar", and didn't close the first 'b' tag, because
- there's no real-world reason to bold something that's already
- bold. When it encounters '</b></b>' it will close two more 'b'
- tags, for a grand total of three tags closed instead of two. This
- can throw off the rest of your document structure. The same is
- true of a number of other tags, listed below.
-
- It's much more common for someone to forget to close a 'b' tag
- than to actually use nested 'b' tags, and the BeautifulSoup class
- handles the common case. This class handles the not-co-common
- case: where you can't believe someone wrote what they did, but
- it's valid HTML and BeautifulSoup screwed up by assuming it
- wouldn't be."""
-
- I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS = \
- ('em', 'big', 'i', 'small', 'tt', 'abbr', 'acronym', 'strong',
- 'cite', 'code', 'dfn', 'kbd', 'samp', 'strong', 'var', 'b',
- 'big')
-
- I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS = ('noscript',)
-
- NESTABLE_TAGS = buildTagMap([], BeautifulSoup.NESTABLE_TAGS,
- I_CANT_BELIEVE_THEYRE_NESTABLE_BLOCK_TAGS,
- I_CANT_BELIEVE_THEYRE_NESTABLE_INLINE_TAGS)
-
-class MinimalSoup(BeautifulSoup):
- """The MinimalSoup class is for parsing HTML that contains
- pathologically bad markup. It makes no assumptions about tag
- nesting, but it does know which tags are self-closing, that
- <script> tags contain Javascript and should not be parsed, that
- META tags may contain encoding information, and so on.
-
- This also makes it better for subclassing than BeautifulStoneSoup
- or BeautifulSoup."""
-
- RESET_NESTING_TAGS = buildTagMap('noscript')
- NESTABLE_TAGS = {}
-
-class BeautifulSOAP(BeautifulStoneSoup):
- """This class will push a tag with only a single string child into
- the tag's parent as an attribute. The attribute's name is the tag
- name, and the value is the string child. An example should give
- the flavor of the change:
-
- <foo><bar>baz</bar></foo>
- =>
- <foo bar="baz"><bar>baz</bar></foo>
-
- You can then access fooTag['bar'] instead of fooTag.barTag.string.
-
- This is, of course, useful for scraping structures that tend to
- use subelements instead of attributes, such as SOAP messages. Note
- that it modifies its input, so don't print the modified version
- out.
-
- I'm not sure how many people really want to use this class; let me
- know if you do. Mainly I like the name."""
-
- def popTag(self):
- if len(self.tagStack) > 1:
- tag = self.tagStack[-1]
- parent = self.tagStack[-2]
- parent._getAttrMap()
- if (isinstance(tag, Tag) and len(tag.contents) == 1 and
- isinstance(tag.contents[0], NavigableString) and
- not parent.attrMap.has_key(tag.name)):
- parent[tag.name] = tag.contents[0]
- BeautifulStoneSoup.popTag(self)
-
-#Enterprise class names! It has come to our attention that some people
-#think the names of the Beautiful Soup parser classes are too silly
-#and "unprofessional" for use in enterprise screen-scraping. We feel
-#your pain! For such-minded folk, the Beautiful Soup Consortium And
-#All-Night Kosher Bakery recommends renaming this file to
-#"RobustParser.py" (or, in cases of extreme enterprisiness,
-#"RobustParserBeanInterface.class") and using the following
-#enterprise-friendly class aliases:
-class RobustXMLParser(BeautifulStoneSoup):
- pass
-class RobustHTMLParser(BeautifulSoup):
- pass
-class RobustWackAssHTMLParser(ICantBelieveItsBeautifulSoup):
- pass
-class RobustInsanelyWackAssHTMLParser(MinimalSoup):
- pass
-class SimplifyingSOAPParser(BeautifulSOAP):
- pass
-
-######################################################
-#
-# Bonus library: Unicode, Dammit
-#
-# This class forces XML data into a standard format (usually to UTF-8
-# or Unicode). It is heavily based on code from Mark Pilgrim's
-# Universal Feed Parser. It does not rewrite the XML or HTML to
-# reflect a new encoding: that happens in BeautifulStoneSoup.handle_pi
-# (XML) and BeautifulSoup.start_meta (HTML).
-
-# Autodetects character encodings.
-# Download from http://chardet.feedparser.org/
-try:
- import chardet
-# import chardet.constants
-# chardet.constants._debug = 1
-except ImportError:
- chardet = None
-
-# cjkcodecs and iconv_codec make Python know about more character encodings.
-# Both are available from http://cjkpython.i18n.org/
-# They're built in if you use Python 2.4.
-try:
- import cjkcodecs.aliases
-except ImportError:
- pass
-try:
- import iconv_codec
-except ImportError:
- pass
-
-class UnicodeDammit:
- """A class for detecting the encoding of a *ML document and
- converting it to a Unicode string. If the source encoding is
- windows-1252, can replace MS smart quotes with their HTML or XML
- equivalents."""
-
- # This dictionary maps commonly seen values for "charset" in HTML
- # meta tags to the corresponding Python codec names. It only covers
- # values that aren't in Python's aliases and can't be determined
- # by the heuristics in find_codec.
- CHARSET_ALIASES = { "macintosh" : "mac-roman",
- "x-sjis" : "shift-jis" }
-
- def __init__(self, markup, overrideEncodings=[],
- smartQuotesTo='xml', isHTML=False):
- self.declaredHTMLEncoding = None
- self.markup, documentEncoding, sniffedEncoding = \
- self._detectEncoding(markup, isHTML)
- self.smartQuotesTo = smartQuotesTo
- self.triedEncodings = []
- if markup == '' or isinstance(markup, unicode):
- self.originalEncoding = None
- self.unicode = unicode(markup)
- return
-
- u = None
- for proposedEncoding in overrideEncodings:
- u = self._convertFrom(proposedEncoding)
- if u: break
- if not u:
- for proposedEncoding in (documentEncoding, sniffedEncoding):
- u = self._convertFrom(proposedEncoding)
- if u: break
-
- # If no luck and we have auto-detection library, try that:
- if not u and chardet and not isinstance(self.markup, unicode):
- u = self._convertFrom(chardet.detect(self.markup)['encoding'])
-
- # As a last resort, try utf-8 and windows-1252:
- if not u:
- for proposed_encoding in ("utf-8", "windows-1252"):
- u = self._convertFrom(proposed_encoding)
- if u: break
-
- self.unicode = u
- if not u: self.originalEncoding = None
-
- def _subMSChar(self, orig):
- """Changes a MS smart quote character to an XML or HTML
- entity."""
- sub = self.MS_CHARS.get(orig)
- if isinstance(sub, tuple):
- if self.smartQuotesTo == 'xml':
- sub = '&#x%s;' % sub[1]
- else:
- sub = '&%s;' % sub[0]
- return sub
-
- def _convertFrom(self, proposed):
- proposed = self.find_codec(proposed)
- if not proposed or proposed in self.triedEncodings:
- return None
- self.triedEncodings.append(proposed)
- markup = self.markup
-
- # Convert smart quotes to HTML if coming from an encoding
- # that might have them.
- if self.smartQuotesTo and proposed.lower() in("windows-1252",
- "iso-8859-1",
- "iso-8859-2"):
- markup = re.compile("([\x80-\x9f])").sub \
- (lambda(x): self._subMSChar(x.group(1)),
- markup)
-
- try:
- # print "Trying to convert document to %s" % proposed
- u = self._toUnicode(markup, proposed)
- self.markup = u
- self.originalEncoding = proposed
- except Exception, e:
- # print "That didn't work!"
- # print e
- return None
- #print "Correct encoding: %s" % proposed
- return self.markup
-
- def _toUnicode(self, data, encoding):
- '''Given a string and its encoding, decodes the string into Unicode.
- %encoding is a string recognized by encodings.aliases'''
-
- # strip Byte Order Mark (if present)
- if (len(data) >= 4) and (data[:2] == '\xfe\xff') \
- and (data[2:4] != '\x00\x00'):
- encoding = 'utf-16be'
- data = data[2:]
- elif (len(data) >= 4) and (data[:2] == '\xff\xfe') \
- and (data[2:4] != '\x00\x00'):
- encoding = 'utf-16le'
- data = data[2:]
- elif data[:3] == '\xef\xbb\xbf':
- encoding = 'utf-8'
- data = data[3:]
- elif data[:4] == '\x00\x00\xfe\xff':
- encoding = 'utf-32be'
- data = data[4:]
- elif data[:4] == '\xff\xfe\x00\x00':
- encoding = 'utf-32le'
- data = data[4:]
- newdata = unicode(data, encoding)
- return newdata
-
- def _detectEncoding(self, xml_data, isHTML=False):
- """Given a document, tries to detect its XML encoding."""
- xml_encoding = sniffed_xml_encoding = None
- try:
- if xml_data[:4] == '\x4c\x6f\xa7\x94':
- # EBCDIC
- xml_data = self._ebcdic_to_ascii(xml_data)
- elif xml_data[:4] == '\x00\x3c\x00\x3f':
- # UTF-16BE
- sniffed_xml_encoding = 'utf-16be'
- xml_data = unicode(xml_data, 'utf-16be').encode('utf-8')
- elif (len(xml_data) >= 4) and (xml_data[:2] == '\xfe\xff') \
- and (xml_data[2:4] != '\x00\x00'):
- # UTF-16BE with BOM
- sniffed_xml_encoding = 'utf-16be'
- xml_data = unicode(xml_data[2:], 'utf-16be').encode('utf-8')
- elif xml_data[:4] == '\x3c\x00\x3f\x00':
- # UTF-16LE
- sniffed_xml_encoding = 'utf-16le'
- xml_data = unicode(xml_data, 'utf-16le').encode('utf-8')
- elif (len(xml_data) >= 4) and (xml_data[:2] == '\xff\xfe') and \
- (xml_data[2:4] != '\x00\x00'):
- # UTF-16LE with BOM
- sniffed_xml_encoding = 'utf-16le'
- xml_data = unicode(xml_data[2:], 'utf-16le').encode('utf-8')
- elif xml_data[:4] == '\x00\x00\x00\x3c':
- # UTF-32BE
- sniffed_xml_encoding = 'utf-32be'
- xml_data = unicode(xml_data, 'utf-32be').encode('utf-8')
- elif xml_data[:4] == '\x3c\x00\x00\x00':
- # UTF-32LE
- sniffed_xml_encoding = 'utf-32le'
- xml_data = unicode(xml_data, 'utf-32le').encode('utf-8')
- elif xml_data[:4] == '\x00\x00\xfe\xff':
- # UTF-32BE with BOM
- sniffed_xml_encoding = 'utf-32be'
- xml_data = unicode(xml_data[4:], 'utf-32be').encode('utf-8')
- elif xml_data[:4] == '\xff\xfe\x00\x00':
- # UTF-32LE with BOM
- sniffed_xml_encoding = 'utf-32le'
- xml_data = unicode(xml_data[4:], 'utf-32le').encode('utf-8')
- elif xml_data[:3] == '\xef\xbb\xbf':
- # UTF-8 with BOM
- sniffed_xml_encoding = 'utf-8'
- xml_data = unicode(xml_data[3:], 'utf-8').encode('utf-8')
- else:
- sniffed_xml_encoding = 'ascii'
- pass
- except:
- xml_encoding_match = None
- xml_encoding_match = re.compile(
- '^<\?.*encoding=[\'"](.*?)[\'"].*\?>').match(xml_data)
- if not xml_encoding_match and isHTML:
- regexp = re.compile('<\s*meta[^>]+charset=([^>]*?)[;\'">]', re.I)
- xml_encoding_match = regexp.search(xml_data)
- if xml_encoding_match is not None:
- xml_encoding = xml_encoding_match.groups()[0].lower()
- if isHTML:
- self.declaredHTMLEncoding = xml_encoding
- if sniffed_xml_encoding and \
- (xml_encoding in ('iso-10646-ucs-2', 'ucs-2', 'csunicode',
- 'iso-10646-ucs-4', 'ucs-4', 'csucs4',
- 'utf-16', 'utf-32', 'utf_16', 'utf_32',
- 'utf16', 'u16')):
- xml_encoding = sniffed_xml_encoding
- return xml_data, xml_encoding, sniffed_xml_encoding
-
-
- def find_codec(self, charset):
- return self._codec(self.CHARSET_ALIASES.get(charset, charset)) \
- or (charset and self._codec(charset.replace("-", ""))) \
- or (charset and self._codec(charset.replace("-", "_"))) \
- or charset
-
- def _codec(self, charset):
- if not charset: return charset
- codec = None
- try:
- codecs.lookup(charset)
- codec = charset
- except (LookupError, ValueError):
- pass
- return codec
-
- EBCDIC_TO_ASCII_MAP = None
- def _ebcdic_to_ascii(self, s):
- c = self.__class__
- if not c.EBCDIC_TO_ASCII_MAP:
- emap = (0,1,2,3,156,9,134,127,151,141,142,11,12,13,14,15,
- 16,17,18,19,157,133,8,135,24,25,146,143,28,29,30,31,
- 128,129,130,131,132,10,23,27,136,137,138,139,140,5,6,7,
- 144,145,22,147,148,149,150,4,152,153,154,155,20,21,158,26,
- 32,160,161,162,163,164,165,166,167,168,91,46,60,40,43,33,
- 38,169,170,171,172,173,174,175,176,177,93,36,42,41,59,94,
- 45,47,178,179,180,181,182,183,184,185,124,44,37,95,62,63,
- 186,187,188,189,190,191,192,193,194,96,58,35,64,39,61,34,
- 195,97,98,99,100,101,102,103,104,105,196,197,198,199,200,
- 201,202,106,107,108,109,110,111,112,113,114,203,204,205,
- 206,207,208,209,126,115,116,117,118,119,120,121,122,210,
- 211,212,213,214,215,216,217,218,219,220,221,222,223,224,
- 225,226,227,228,229,230,231,123,65,66,67,68,69,70,71,72,
- 73,232,233,234,235,236,237,125,74,75,76,77,78,79,80,81,
- 82,238,239,240,241,242,243,92,159,83,84,85,86,87,88,89,
- 90,244,245,246,247,248,249,48,49,50,51,52,53,54,55,56,57,
- 250,251,252,253,254,255)
- import string
- c.EBCDIC_TO_ASCII_MAP = string.maketrans( \
- ''.join(map(chr, range(256))), ''.join(map(chr, emap)))
- return s.translate(c.EBCDIC_TO_ASCII_MAP)
-
- MS_CHARS = { '\x80' : ('euro', '20AC'),
- '\x81' : ' ',
- '\x82' : ('sbquo', '201A'),
- '\x83' : ('fnof', '192'),
- '\x84' : ('bdquo', '201E'),
- '\x85' : ('hellip', '2026'),
- '\x86' : ('dagger', '2020'),
- '\x87' : ('Dagger', '2021'),
- '\x88' : ('circ', '2C6'),
- '\x89' : ('permil', '2030'),
- '\x8A' : ('Scaron', '160'),
- '\x8B' : ('lsaquo', '2039'),
- '\x8C' : ('OElig', '152'),
- '\x8D' : '?',
- '\x8E' : ('#x17D', '17D'),
- '\x8F' : '?',
- '\x90' : '?',
- '\x91' : ('lsquo', '2018'),
- '\x92' : ('rsquo', '2019'),
- '\x93' : ('ldquo', '201C'),
- '\x94' : ('rdquo', '201D'),
- '\x95' : ('bull', '2022'),
- '\x96' : ('ndash', '2013'),
- '\x97' : ('mdash', '2014'),
- '\x98' : ('tilde', '2DC'),
- '\x99' : ('trade', '2122'),
- '\x9a' : ('scaron', '161'),
- '\x9b' : ('rsaquo', '203A'),
- '\x9c' : ('oelig', '153'),
- '\x9d' : '?',
- '\x9e' : ('#x17E', '17E'),
- '\x9f' : ('Yuml', ''),}
-
-#######################################################################
-
-
-#By default, act as an HTML pretty-printer.
-if __name__ == '__main__':
- import sys
- soup = BeautifulSoup(sys.stdin)
- print soup.prettify()
diff --git a/Tools/Scripts/webkitpy/thirdparty/__init__.py b/Tools/Scripts/webkitpy/thirdparty/__init__.py
deleted file mode 100644
index 601e2fbb3..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/__init__.py
+++ /dev/null
@@ -1,189 +0,0 @@
-# Copyright (C) 2010 Chris Jerdonek (cjerdonek@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 INC. 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 INC. 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 module is required for Python to treat this directory as a package.
-
-"""Autoinstalls third-party code required by WebKit."""
-
-
-import codecs
-import os
-import sys
-
-from webkitpy.common.system.autoinstall import AutoInstaller
-from webkitpy.common.system.filesystem import FileSystem
-
-_THIRDPARTY_DIR = os.path.dirname(__file__)
-_AUTOINSTALLED_DIR = os.path.join(_THIRDPARTY_DIR, "autoinstalled")
-
-# Putting the autoinstall code into webkitpy/thirdparty/__init__.py
-# ensures that no autoinstalling occurs until a caller imports from
-# webkitpy.thirdparty. This is useful if the caller wants to configure
-# logging prior to executing autoinstall code.
-
-# FIXME: If any of these servers is offline, webkit-patch breaks (and maybe
-# other scripts do, too). See <http://webkit.org/b/42080>.
-
-# We put auto-installed third-party modules in this directory--
-#
-# webkitpy/thirdparty/autoinstalled
-fs = FileSystem()
-fs.maybe_make_directory(_AUTOINSTALLED_DIR)
-
-init_path = fs.join(_AUTOINSTALLED_DIR, "__init__.py")
-if not fs.exists(init_path):
- fs.write_text_file(init_path, "")
-
-readme_path = fs.join(_AUTOINSTALLED_DIR, "README")
-if not fs.exists(readme_path):
- fs.write_text_file(readme_path,
- "This directory is auto-generated by WebKit and is "
- "safe to delete.\nIt contains needed third-party Python "
- "packages automatically downloaded from the web.")
-
-
-class AutoinstallImportHook(object):
- def __init__(self, filesystem=None):
- self._fs = filesystem or FileSystem()
-
- def _ensure_autoinstalled_dir_is_in_sys_path(self):
- # Some packages require that the are being put somewhere under a directory in sys.path.
- if not _AUTOINSTALLED_DIR in sys.path:
- sys.path.append(_AUTOINSTALLED_DIR)
-
- def find_module(self, fullname, _):
- # This method will run before each import. See http://www.python.org/dev/peps/pep-0302/
- if '.autoinstalled' not in fullname:
- return
-
- # Note: all of the methods must follow the "_install_XXX" convention in
- # order for autoinstall_everything(), below, to work properly.
- if '.mechanize' in fullname:
- self._install_mechanize()
- elif '.pep8' in fullname:
- self._install_pep8()
- elif '.pylint' in fullname:
- self._install_pylint()
- elif '.coverage' in fullname:
- self._install_coverage()
- elif '.eliza' in fullname:
- self._install_eliza()
- elif '.irc' in fullname:
- self._install_irc()
- elif '.buildbot' in fullname:
- self._install_buildbot()
- elif '.webpagereplay' in fullname:
- self._install_webpagereplay()
-
- def _install_mechanize(self):
- return self._install("http://pypi.python.org/packages/source/m/mechanize/mechanize-0.2.5.tar.gz",
- "mechanize-0.2.5/mechanize")
-
- def _install_pep8(self):
- return self._install("http://pypi.python.org/packages/source/p/pep8/pep8-0.5.0.tar.gz#md5=512a818af9979290cd619cce8e9c2e2b",
- "pep8-0.5.0/pep8.py")
-
- def _install_pylint(self):
- self._ensure_autoinstalled_dir_is_in_sys_path()
- did_install_something = False
- if (not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "pylint")) or
- not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "logilab/astng")) or
- not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "logilab/common"))):
- installer = AutoInstaller(target_dir=_AUTOINSTALLED_DIR)
- files_to_remove = []
- if sys.platform == 'win32':
- files_to_remove = ['test/data/write_protected_file.txt']
- did_install_something = installer.install("http://pypi.python.org/packages/source/l/logilab-common/logilab-common-0.58.1.tar.gz#md5=77298ab2d8bb8b4af9219791e7cee8ce", url_subpath="logilab-common-0.58.1", target_name="logilab/common", files_to_remove=files_to_remove)
- did_install_something |= installer.install("http://pypi.python.org/packages/source/l/logilab-astng/logilab-astng-0.24.1.tar.gz#md5=ddaf66e4d85714d9c47a46d4bed406de", url_subpath="logilab-astng-0.24.1", target_name="logilab/astng")
- did_install_something |= installer.install('http://pypi.python.org/packages/source/p/pylint/pylint-0.25.1.tar.gz#md5=728bbc2b339bc3749af013709a7f87a5', url_subpath="pylint-0.25.1", target_name="pylint")
- return did_install_something
-
- # autoinstalled.buildbot is used by BuildSlaveSupport/build.webkit.org-config/mastercfg_unittest.py
- # and should ideally match the version of BuildBot used at build.webkit.org.
- def _install_buildbot(self):
- # The buildbot package uses jinja2, for example, in buildbot/status/web/base.py.
- # buildbot imports jinja2 directly (as though it were installed on the system),
- # so the search path needs to include jinja2. We put jinja2 in
- # its own directory so that we can include it in the search path
- # without including other modules as a side effect.
- jinja_dir = self._fs.join(_AUTOINSTALLED_DIR, "jinja2")
- installer = AutoInstaller(append_to_search_path=True, target_dir=jinja_dir)
- did_install_something = installer.install(url="http://pypi.python.org/packages/source/J/Jinja2/Jinja2-2.6.tar.gz#md5=1c49a8825c993bfdcf55bb36897d28a2",
- url_subpath="Jinja2-2.6/jinja2")
-
- SQLAlchemy_dir = self._fs.join(_AUTOINSTALLED_DIR, "sqlalchemy")
- installer = AutoInstaller(append_to_search_path=True, target_dir=SQLAlchemy_dir)
- did_install_something |= installer.install(url="http://pypi.python.org/packages/source/S/SQLAlchemy/SQLAlchemy-0.7.7.tar.gz#md5=ddf6df7e014cea318fa981364f3f93b9",
- url_subpath="SQLAlchemy-0.7.7/lib/sqlalchemy")
-
- did_install_something |= self._install("http://pypi.python.org/packages/source/b/buildbot/buildbot-0.8.6p1.tar.gz#md5=b6727d2810c692062c657492bcbeac6a", "buildbot-0.8.6p1/buildbot")
- return did_install_something
-
- def _install_coverage(self):
- self._ensure_autoinstalled_dir_is_in_sys_path()
- return self._install(url="http://pypi.python.org/packages/source/c/coverage/coverage-3.5.1.tar.gz#md5=410d4c8155a4dab222f2bc51212d4a24", url_subpath="coverage-3.5.1/coverage")
-
- def _install_eliza(self):
- return self._install(url="http://www.adambarth.com/webkit/eliza", target_name="eliza.py")
-
- def _install_irc(self):
- # Since irclib and ircbot are two top-level packages, we need to import
- # them separately. We group them into an irc package for better
- # organization purposes.
- irc_dir = self._fs.join(_AUTOINSTALLED_DIR, "irc")
- installer = AutoInstaller(target_dir=irc_dir)
- did_install_something = installer.install(url="http://downloads.sourceforge.net/project/python-irclib/python-irclib/0.4.8/python-irclib-0.4.8.zip",
- url_subpath="irclib.py")
- did_install_something |= installer.install(url="http://downloads.sourceforge.net/project/python-irclib/python-irclib/0.4.8/python-irclib-0.4.8.zip",
- url_subpath="ircbot.py")
- return did_install_something
-
- def _install_unittest2(self):
- self._ensure_autoinstalled_dir_is_in_sys_path()
- return self._install(url="http://pypi.python.org/packages/source/u/unittest2/unittest2-0.5.1.tar.gz#md5=a0af5cac92bbbfa0c3b0e99571390e0f", url_subpath="unittest2-0.5.1/unittest2")
-
- def _install_webpagereplay(self):
- did_install_something = False
- if not self._fs.exists(self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay")):
- did_install_something = self._install("http://web-page-replay.googlecode.com/files/webpagereplay-1.1.2.tar.gz", "webpagereplay-1.1.2")
- self._fs.move(self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay-1.1.2"), self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay"))
-
- module_init_path = self._fs.join(_AUTOINSTALLED_DIR, "webpagereplay", "__init__.py")
- if not self._fs.exists(module_init_path):
- self._fs.write_text_file(module_init_path, "")
- return did_install_something
-
- def _install(self, url, url_subpath=None, target_name=None):
- installer = AutoInstaller(target_dir=_AUTOINSTALLED_DIR)
- return installer.install(url=url, url_subpath=url_subpath, target_name=target_name)
-
-
-_hook = AutoinstallImportHook()
-sys.meta_path.append(_hook)
-
-
-def autoinstall_everything():
- install_methods = [method for method in dir(_hook.__class__) if method.startswith('_install_')]
- did_install_something = False
- for method in install_methods:
- did_install_something |= getattr(_hook, method)()
- return did_install_something
diff --git a/Tools/Scripts/webkitpy/thirdparty/__init___unittest.py b/Tools/Scripts/webkitpy/thirdparty/__init___unittest.py
deleted file mode 100644
index f687ae009..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/__init___unittest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2011 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.
-
-import sys
-import unittest2 as unittest
-
-from webkitpy.thirdparty import AutoinstallImportHook
-
-
-class ThirdpartyTest(unittest.TestCase):
- def test_import_hook(self):
- # Add another import hook and make sure we get called.
- class MockImportHook(AutoinstallImportHook):
- def __init__(self):
- AutoinstallImportHook.__init__(self)
- self.eliza_installed = False
-
- def _install_eliza(self):
- self.eliza_installed = True
-
- mock_import_hook = MockImportHook()
- try:
- # The actual AutoinstallImportHook should be installed before us,
- # so these modules will get installed before MockImportHook runs.
- sys.meta_path.append(mock_import_hook)
- # unused-variable, import failures - pylint: disable-msg=W0612,E0611,F0401
- from webkitpy.thirdparty.autoinstalled import eliza
- self.assertTrue(mock_import_hook.eliza_installed)
-
- finally:
- sys.meta_path.remove(mock_import_hook)
-
- def test_imports(self):
- # This method tests that we can actually import everything.
- # unused-variable, import failures - pylint: disable-msg=W0612,E0611,F0401
- import webkitpy.thirdparty.autoinstalled.buildbot
- import webkitpy.thirdparty.autoinstalled.coverage
- import webkitpy.thirdparty.autoinstalled.eliza
- import webkitpy.thirdparty.autoinstalled.irc.ircbot
- import webkitpy.thirdparty.autoinstalled.irc.irclib
- import webkitpy.thirdparty.autoinstalled.mechanize
- import webkitpy.thirdparty.autoinstalled.pylint
- import webkitpy.thirdparty.autoinstalled.webpagereplay
- import webkitpy.thirdparty.autoinstalled.pep8
diff --git a/Tools/Scripts/webkitpy/thirdparty/mock.py b/Tools/Scripts/webkitpy/thirdparty/mock.py
deleted file mode 100644
index 015c19e94..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mock.py
+++ /dev/null
@@ -1,309 +0,0 @@
-# mock.py
-# Test tools for mocking and patching.
-# Copyright (C) 2007-2009 Michael Foord
-# E-mail: fuzzyman AT voidspace DOT org DOT uk
-
-# mock 0.6.0
-# http://www.voidspace.org.uk/python/mock/
-
-# Released subject to the BSD License
-# Please see http://www.voidspace.org.uk/python/license.shtml
-
-# 2009-11-25: Licence downloaded from above URL.
-# BEGIN DOWNLOADED LICENSE
-#
-# Copyright (c) 2003-2009, Michael Foord
-# All rights reserved.
-# E-mail : fuzzyman AT voidspace DOT org DOT uk
-#
-# 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 Michael Foord nor the name of Voidspace
-# 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.
-#
-# END DOWNLOADED LICENSE
-
-# Scripts maintained at http://www.voidspace.org.uk/python/index.shtml
-# Comments, suggestions and bug reports welcome.
-
-
-__all__ = (
- 'Mock',
- 'patch',
- 'patch_object',
- 'sentinel',
- 'DEFAULT'
-)
-
-__version__ = '0.6.0'
-
-class SentinelObject(object):
- def __init__(self, name):
- self.name = name
-
- def __repr__(self):
- return '<SentinelObject "%s">' % self.name
-
-
-class Sentinel(object):
- def __init__(self):
- self._sentinels = {}
-
- def __getattr__(self, name):
- return self._sentinels.setdefault(name, SentinelObject(name))
-
-
-sentinel = Sentinel()
-
-DEFAULT = sentinel.DEFAULT
-
-class OldStyleClass:
- pass
-ClassType = type(OldStyleClass)
-
-def _is_magic(name):
- return '__%s__' % name[2:-2] == name
-
-def _copy(value):
- if type(value) in (dict, list, tuple, set):
- return type(value)(value)
- return value
-
-
-class Mock(object):
-
- def __init__(self, spec=None, side_effect=None, return_value=DEFAULT,
- name=None, parent=None, wraps=None):
- self._parent = parent
- self._name = name
- if spec is not None and not isinstance(spec, list):
- spec = [member for member in dir(spec) if not _is_magic(member)]
-
- self._methods = spec
- self._children = {}
- self._return_value = return_value
- self.side_effect = side_effect
- self._wraps = wraps
-
- self.reset_mock()
-
-
- def reset_mock(self):
- self.called = False
- self.call_args = None
- self.call_count = 0
- self.call_args_list = []
- self.method_calls = []
- for child in self._children.itervalues():
- child.reset_mock()
- if isinstance(self._return_value, Mock):
- self._return_value.reset_mock()
-
-
- def __get_return_value(self):
- if self._return_value is DEFAULT:
- self._return_value = Mock()
- return self._return_value
-
- def __set_return_value(self, value):
- self._return_value = value
-
- return_value = property(__get_return_value, __set_return_value)
-
-
- def __call__(self, *args, **kwargs):
- self.called = True
- self.call_count += 1
- self.call_args = (args, kwargs)
- self.call_args_list.append((args, kwargs))
-
- parent = self._parent
- name = self._name
- while parent is not None:
- parent.method_calls.append((name, args, kwargs))
- if parent._parent is None:
- break
- name = parent._name + '.' + name
- parent = parent._parent
-
- ret_val = DEFAULT
- if self.side_effect is not None:
- if (isinstance(self.side_effect, Exception) or
- isinstance(self.side_effect, (type, ClassType)) and
- issubclass(self.side_effect, Exception)):
- raise self.side_effect
-
- ret_val = self.side_effect(*args, **kwargs)
- if ret_val is DEFAULT:
- ret_val = self.return_value
-
- if self._wraps is not None and self._return_value is DEFAULT:
- return self._wraps(*args, **kwargs)
- if ret_val is DEFAULT:
- ret_val = self.return_value
- return ret_val
-
-
- def __getattr__(self, name):
- if self._methods is not None:
- if name not in self._methods:
- raise AttributeError("Mock object has no attribute '%s'" % name)
- elif _is_magic(name):
- raise AttributeError(name)
-
- if name not in self._children:
- wraps = None
- if self._wraps is not None:
- wraps = getattr(self._wraps, name)
- self._children[name] = Mock(parent=self, name=name, wraps=wraps)
-
- return self._children[name]
-
-
- def assert_called_with(self, *args, **kwargs):
- assert self.call_args == (args, kwargs), 'Expected: %s\nCalled with: %s' % ((args, kwargs), self.call_args)
-
-
-def _dot_lookup(thing, comp, import_path):
- try:
- return getattr(thing, comp)
- except AttributeError:
- __import__(import_path)
- return getattr(thing, comp)
-
-
-def _importer(target):
- components = target.split('.')
- import_path = components.pop(0)
- thing = __import__(import_path)
-
- for comp in components:
- import_path += ".%s" % comp
- thing = _dot_lookup(thing, comp, import_path)
- return thing
-
-
-class _patch(object):
- def __init__(self, target, attribute, new, spec, create):
- self.target = target
- self.attribute = attribute
- self.new = new
- self.spec = spec
- self.create = create
- self.has_local = False
-
-
- def __call__(self, func):
- if hasattr(func, 'patchings'):
- func.patchings.append(self)
- return func
-
- def patched(*args, **keywargs):
- # don't use a with here (backwards compatability with 2.5)
- extra_args = []
- for patching in patched.patchings:
- arg = patching.__enter__()
- if patching.new is DEFAULT:
- extra_args.append(arg)
- args += tuple(extra_args)
- try:
- return func(*args, **keywargs)
- finally:
- for patching in getattr(patched, 'patchings', []):
- patching.__exit__()
-
- patched.patchings = [self]
- patched.__name__ = func.__name__
- patched.compat_co_firstlineno = getattr(func, "compat_co_firstlineno",
- func.func_code.co_firstlineno)
- return patched
-
-
- def get_original(self):
- target = self.target
- name = self.attribute
- create = self.create
-
- original = DEFAULT
- if _has_local_attr(target, name):
- try:
- original = target.__dict__[name]
- except AttributeError:
- # for instances of classes with slots, they have no __dict__
- original = getattr(target, name)
- elif not create and not hasattr(target, name):
- raise AttributeError("%s does not have the attribute %r" % (target, name))
- return original
-
-
- def __enter__(self):
- new, spec, = self.new, self.spec
- original = self.get_original()
- if new is DEFAULT:
- # XXXX what if original is DEFAULT - shouldn't use it as a spec
- inherit = False
- if spec == True:
- # set spec to the object we are replacing
- spec = original
- if isinstance(spec, (type, ClassType)):
- inherit = True
- new = Mock(spec=spec)
- if inherit:
- new.return_value = Mock(spec=spec)
- self.temp_original = original
- setattr(self.target, self.attribute, new)
- return new
-
-
- def __exit__(self, *_):
- if self.temp_original is not DEFAULT:
- setattr(self.target, self.attribute, self.temp_original)
- else:
- delattr(self.target, self.attribute)
- del self.temp_original
-
-
-def patch_object(target, attribute, new=DEFAULT, spec=None, create=False):
- return _patch(target, attribute, new, spec, create)
-
-
-def patch(target, new=DEFAULT, spec=None, create=False):
- try:
- target, attribute = target.rsplit('.', 1)
- except (TypeError, ValueError):
- raise TypeError("Need a valid target to patch. You supplied: %r" % (target,))
- target = _importer(target)
- return _patch(target, attribute, new, spec, create)
-
-
-
-def _has_local_attr(obj, name):
- try:
- return name in vars(obj)
- except TypeError:
- # objects without a __dict__
- return hasattr(obj, name)
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING
deleted file mode 100644
index 989d02e4c..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/COPYING
+++ /dev/null
@@ -1,28 +0,0 @@
-Copyright 2012, 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.
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py
deleted file mode 100644
index 454ae0c45..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/__init__.py
+++ /dev/null
@@ -1,197 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""WebSocket extension for Apache HTTP Server.
-
-mod_pywebsocket is a WebSocket extension for Apache HTTP Server
-intended for testing or experimental purposes. mod_python is required.
-
-
-Installation
-============
-
-0. Prepare an Apache HTTP Server for which mod_python is enabled.
-
-1. Specify the following Apache HTTP Server directives to suit your
- configuration.
-
- If mod_pywebsocket is not in the Python path, specify the following.
- <websock_lib> is the directory where mod_pywebsocket is installed.
-
- PythonPath "sys.path+['<websock_lib>']"
-
- Always specify the following. <websock_handlers> is the directory where
- user-written WebSocket handlers are placed.
-
- PythonOption mod_pywebsocket.handler_root <websock_handlers>
- PythonHeaderParserHandler mod_pywebsocket.headerparserhandler
-
- To limit the search for WebSocket handlers to a directory <scan_dir>
- under <websock_handlers>, configure as follows:
-
- PythonOption mod_pywebsocket.handler_scan <scan_dir>
-
- <scan_dir> is useful in saving scan time when <websock_handlers>
- contains many non-WebSocket handler files.
-
- If you want to allow handlers whose canonical path is not under the root
- directory (i.e. symbolic link is in root directory but its target is not),
- configure as follows:
-
- PythonOption mod_pywebsocket.allow_handlers_outside_root_dir On
-
- Example snippet of httpd.conf:
- (mod_pywebsocket is in /websock_lib, WebSocket handlers are in
- /websock_handlers, port is 80 for ws, 443 for wss.)
-
- <IfModule python_module>
- PythonPath "sys.path+['/websock_lib']"
- PythonOption mod_pywebsocket.handler_root /websock_handlers
- PythonHeaderParserHandler mod_pywebsocket.headerparserhandler
- </IfModule>
-
-2. Tune Apache parameters for serving WebSocket. We'd like to note that at
- least TimeOut directive from core features and RequestReadTimeout
- directive from mod_reqtimeout should be modified not to kill connections
- in only a few seconds of idle time.
-
-3. Verify installation. You can use example/console.html to poke the server.
-
-
-Writing WebSocket handlers
-==========================
-
-When a WebSocket request comes in, the resource name
-specified in the handshake is considered as if it is a file path under
-<websock_handlers> and the handler defined in
-<websock_handlers>/<resource_name>_wsh.py is invoked.
-
-For example, if the resource name is /example/chat, the handler defined in
-<websock_handlers>/example/chat_wsh.py is invoked.
-
-A WebSocket handler is composed of the following three functions:
-
- web_socket_do_extra_handshake(request)
- web_socket_transfer_data(request)
- web_socket_passive_closing_handshake(request)
-
-where:
- request: mod_python request.
-
-web_socket_do_extra_handshake is called during the handshake after the
-headers are successfully parsed and WebSocket properties (ws_location,
-ws_origin, and ws_resource) are added to request. A handler
-can reject the request by raising an exception.
-
-A request object has the following properties that you can use during the
-extra handshake (web_socket_do_extra_handshake):
-- ws_resource
-- ws_origin
-- ws_version
-- ws_location (HyBi 00 only)
-- ws_extensions (HyBi 06 and later)
-- ws_deflate (HyBi 06 and later)
-- ws_protocol
-- ws_requested_protocols (HyBi 06 and later)
-
-The last two are a bit tricky. See the next subsection.
-
-
-Subprotocol Negotiation
------------------------
-
-For HyBi 06 and later, ws_protocol is always set to None when
-web_socket_do_extra_handshake is called. If ws_requested_protocols is not
-None, you must choose one subprotocol from this list and set it to
-ws_protocol.
-
-For HyBi 00, when web_socket_do_extra_handshake is called,
-ws_protocol is set to the value given by the client in
-Sec-WebSocket-Protocol header or None if
-such header was not found in the opening handshake request. Finish extra
-handshake with ws_protocol untouched to accept the request subprotocol.
-Then, Sec-WebSocket-Protocol header will be sent to
-the client in response with the same value as requested. Raise an exception
-in web_socket_do_extra_handshake to reject the requested subprotocol.
-
-
-Data Transfer
--------------
-
-web_socket_transfer_data is called after the handshake completed
-successfully. A handler can receive/send messages from/to the client
-using request. mod_pywebsocket.msgutil module provides utilities
-for data transfer.
-
-You can receive a message by the following statement.
-
- message = request.ws_stream.receive_message()
-
-This call blocks until any complete text frame arrives, and the payload data
-of the incoming frame will be stored into message. When you're using IETF
-HyBi 00 or later protocol, receive_message() will return None on receiving
-client-initiated closing handshake. When any error occurs, receive_message()
-will raise some exception.
-
-You can send a message by the following statement.
-
- request.ws_stream.send_message(message)
-
-
-Closing Connection
-------------------
-
-Executing the following statement or just return-ing from
-web_socket_transfer_data cause connection close.
-
- request.ws_stream.close_connection()
-
-close_connection will wait
-for closing handshake acknowledgement coming from the client. When it
-couldn't receive a valid acknowledgement, raises an exception.
-
-web_socket_passive_closing_handshake is called after the server receives
-incoming closing frame from the client peer immediately. You can specify
-code and reason by return values. They are sent as a outgoing closing frame
-from the server. A request object has the following properties that you can
-use in web_socket_passive_closing_handshake.
-- ws_close_code
-- ws_close_reason
-
-
-Threading
----------
-
-A WebSocket handler must be thread-safe if the server (Apache or
-standalone.py) is configured to use threads.
-"""
-
-
-# vi:sts=4 sw=4 et tw=72
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py
deleted file mode 100644
index 8235666bb..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_base.py
+++ /dev/null
@@ -1,181 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""Base stream class.
-"""
-
-
-# Note: request.connection.write/read are used in this module, even though
-# mod_python document says that they should be used only in connection
-# handlers. Unfortunately, we have no other options. For example,
-# request.write/read are not suitable because they don't allow direct raw bytes
-# writing/reading.
-
-
-import socket
-
-from mod_pywebsocket import util
-
-
-# Exceptions
-
-
-class ConnectionTerminatedException(Exception):
- """This exception will be raised when a connection is terminated
- unexpectedly.
- """
-
- pass
-
-
-class InvalidFrameException(ConnectionTerminatedException):
- """This exception will be raised when we received an invalid frame we
- cannot parse.
- """
-
- pass
-
-
-class BadOperationException(Exception):
- """This exception will be raised when send_message() is called on
- server-terminated connection or receive_message() is called on
- client-terminated connection.
- """
-
- pass
-
-
-class UnsupportedFrameException(Exception):
- """This exception will be raised when we receive a frame with flag, opcode
- we cannot handle. Handlers can just catch and ignore this exception and
- call receive_message() again to continue processing the next frame.
- """
-
- pass
-
-
-class InvalidUTF8Exception(Exception):
- """This exception will be raised when we receive a text frame which
- contains invalid UTF-8 strings.
- """
-
- pass
-
-
-class StreamBase(object):
- """Base stream class."""
-
- def __init__(self, request):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- """
-
- self._logger = util.get_class_logger(self)
-
- self._request = request
-
- def _read(self, length):
- """Reads length bytes from connection. In case we catch any exception,
- prepends remote address to the exception message and raise again.
-
- Raises:
- ConnectionTerminatedException: when read returns empty string.
- """
-
- try:
- read_bytes = self._request.connection.read(length)
- if not read_bytes:
- raise ConnectionTerminatedException(
- 'Receiving %d byte failed. Peer (%r) closed connection' %
- (length, (self._request.connection.remote_addr,)))
- return read_bytes
- except socket.error, e:
- # Catch a socket.error. Because it's not a child class of the
- # IOError prior to Python 2.6, we cannot omit this except clause.
- # Use %s rather than %r for the exception to use human friendly
- # format.
- raise ConnectionTerminatedException(
- 'Receiving %d byte failed. socket.error (%s) occurred' %
- (length, e))
- except IOError, e:
- # Also catch an IOError because mod_python throws it.
- raise ConnectionTerminatedException(
- 'Receiving %d byte failed. IOError (%s) occurred' %
- (length, e))
-
- def _write(self, bytes_to_write):
- """Writes given bytes to connection. In case we catch any exception,
- prepends remote address to the exception message and raise again.
- """
-
- try:
- self._request.connection.write(bytes_to_write)
- except Exception, e:
- util.prepend_message_to_exception(
- 'Failed to send message to %r: ' %
- (self._request.connection.remote_addr,),
- e)
- raise
-
- def receive_bytes(self, length):
- """Receives multiple bytes. Retries read when we couldn't receive the
- specified amount.
-
- Raises:
- ConnectionTerminatedException: when read returns empty string.
- """
-
- read_bytes = []
- while length > 0:
- new_read_bytes = self._read(length)
- read_bytes.append(new_read_bytes)
- length -= len(new_read_bytes)
- return ''.join(read_bytes)
-
- def _read_until(self, delim_char):
- """Reads bytes until we encounter delim_char. The result will not
- contain delim_char.
-
- Raises:
- ConnectionTerminatedException: when read returns empty string.
- """
-
- read_bytes = []
- while True:
- ch = self._read(1)
- if ch == delim_char:
- break
- read_bytes.append(ch)
- return ''.join(read_bytes)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py
deleted file mode 100644
index 94cf5b31b..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hixie75.py
+++ /dev/null
@@ -1,229 +0,0 @@
-# Copyright 2011, 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 file provides a class for parsing/building frames of the WebSocket
-protocol version HyBi 00 and Hixie 75.
-
-Specification:
-- HyBi 00 http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00
-- Hixie 75 http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-75
-"""
-
-
-from mod_pywebsocket import common
-from mod_pywebsocket._stream_base import BadOperationException
-from mod_pywebsocket._stream_base import ConnectionTerminatedException
-from mod_pywebsocket._stream_base import InvalidFrameException
-from mod_pywebsocket._stream_base import StreamBase
-from mod_pywebsocket._stream_base import UnsupportedFrameException
-from mod_pywebsocket import util
-
-
-class StreamHixie75(StreamBase):
- """A class for parsing/building frames of the WebSocket protocol version
- HyBi 00 and Hixie 75.
- """
-
- def __init__(self, request, enable_closing_handshake=False):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- enable_closing_handshake: to let StreamHixie75 perform closing
- handshake as specified in HyBi 00, set
- this option to True.
- """
-
- StreamBase.__init__(self, request)
-
- self._logger = util.get_class_logger(self)
-
- self._enable_closing_handshake = enable_closing_handshake
-
- self._request.client_terminated = False
- self._request.server_terminated = False
-
- def send_message(self, message, end=True, binary=False):
- """Send message.
-
- Args:
- message: unicode string to send.
- binary: not used in hixie75.
-
- Raises:
- BadOperationException: when called on a server-terminated
- connection.
- """
-
- if not end:
- raise BadOperationException(
- 'StreamHixie75 doesn\'t support send_message with end=False')
-
- if binary:
- raise BadOperationException(
- 'StreamHixie75 doesn\'t support send_message with binary=True')
-
- if self._request.server_terminated:
- raise BadOperationException(
- 'Requested send_message after sending out a closing handshake')
-
- self._write(''.join(['\x00', message.encode('utf-8'), '\xff']))
-
- def _read_payload_length_hixie75(self):
- """Reads a length header in a Hixie75 version frame with length.
-
- Raises:
- ConnectionTerminatedException: when read returns empty string.
- """
-
- length = 0
- while True:
- b_str = self._read(1)
- b = ord(b_str)
- length = length * 128 + (b & 0x7f)
- if (b & 0x80) == 0:
- break
- return length
-
- def receive_message(self):
- """Receive a WebSocket frame and return its payload an unicode string.
-
- Returns:
- payload unicode string in a WebSocket frame.
-
- Raises:
- ConnectionTerminatedException: when read returns empty
- string.
- BadOperationException: when called on a client-terminated
- connection.
- """
-
- if self._request.client_terminated:
- raise BadOperationException(
- 'Requested receive_message after receiving a closing '
- 'handshake')
-
- while True:
- # Read 1 byte.
- # mp_conn.read will block if no bytes are available.
- # Timeout is controlled by TimeOut directive of Apache.
- frame_type_str = self.receive_bytes(1)
- frame_type = ord(frame_type_str)
- if (frame_type & 0x80) == 0x80:
- # The payload length is specified in the frame.
- # Read and discard.
- length = self._read_payload_length_hixie75()
- if length > 0:
- _ = self.receive_bytes(length)
- # 5.3 3. 12. if /type/ is 0xFF and /length/ is 0, then set the
- # /client terminated/ flag and abort these steps.
- if not self._enable_closing_handshake:
- continue
-
- if frame_type == 0xFF and length == 0:
- self._request.client_terminated = True
-
- if self._request.server_terminated:
- self._logger.debug(
- 'Received ack for server-initiated closing '
- 'handshake')
- return None
-
- self._logger.debug(
- 'Received client-initiated closing handshake')
-
- self._send_closing_handshake()
- self._logger.debug(
- 'Sent ack for client-initiated closing handshake')
- return None
- else:
- # The payload is delimited with \xff.
- bytes = self._read_until('\xff')
- # The WebSocket protocol section 4.4 specifies that invalid
- # characters must be replaced with U+fffd REPLACEMENT
- # CHARACTER.
- message = bytes.decode('utf-8', 'replace')
- if frame_type == 0x00:
- return message
- # Discard data of other types.
-
- def _send_closing_handshake(self):
- if not self._enable_closing_handshake:
- raise BadOperationException(
- 'Closing handshake is not supported in Hixie 75 protocol')
-
- self._request.server_terminated = True
-
- # 5.3 the server may decide to terminate the WebSocket connection by
- # running through the following steps:
- # 1. send a 0xFF byte and a 0x00 byte to the client to indicate the
- # start of the closing handshake.
- self._write('\xff\x00')
-
- def close_connection(self, unused_code='', unused_reason=''):
- """Closes a WebSocket connection.
-
- Raises:
- ConnectionTerminatedException: when closing handshake was
- not successfull.
- """
-
- if self._request.server_terminated:
- self._logger.debug(
- 'Requested close_connection but server is already terminated')
- return
-
- if not self._enable_closing_handshake:
- self._request.server_terminated = True
- self._logger.debug('Connection closed')
- return
-
- self._send_closing_handshake()
- self._logger.debug('Sent server-initiated closing handshake')
-
- # TODO(ukai): 2. wait until the /client terminated/ flag has been set,
- # or until a server-defined timeout expires.
- #
- # For now, we expect receiving closing handshake right after sending
- # out closing handshake, and if we couldn't receive non-handshake
- # frame, we take it as ConnectionTerminatedException.
- message = self.receive_message()
- if message is not None:
- raise ConnectionTerminatedException(
- 'Didn\'t receive valid ack for closing handshake')
- # TODO: 3. close the WebSocket connection.
- # note: mod_python Connection (mp_conn) doesn't have close method.
-
- def send_ping(self, body):
- raise BadOperationException(
- 'StreamHixie75 doesn\'t support send_ping')
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py
deleted file mode 100644
index a8a49e3c3..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/_stream_hybi.py
+++ /dev/null
@@ -1,887 +0,0 @@
-# Copyright 2012, 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 file provides classes and helper functions for parsing/building frames
-of the WebSocket protocol (RFC 6455).
-
-Specification:
-http://tools.ietf.org/html/rfc6455
-"""
-
-
-from collections import deque
-import logging
-import os
-import struct
-import time
-
-from mod_pywebsocket import common
-from mod_pywebsocket import util
-from mod_pywebsocket._stream_base import BadOperationException
-from mod_pywebsocket._stream_base import ConnectionTerminatedException
-from mod_pywebsocket._stream_base import InvalidFrameException
-from mod_pywebsocket._stream_base import InvalidUTF8Exception
-from mod_pywebsocket._stream_base import StreamBase
-from mod_pywebsocket._stream_base import UnsupportedFrameException
-
-
-_NOOP_MASKER = util.NoopMasker()
-
-
-class Frame(object):
-
- def __init__(self, fin=1, rsv1=0, rsv2=0, rsv3=0,
- opcode=None, payload=''):
- self.fin = fin
- self.rsv1 = rsv1
- self.rsv2 = rsv2
- self.rsv3 = rsv3
- self.opcode = opcode
- self.payload = payload
-
-
-# Helper functions made public to be used for writing unittests for WebSocket
-# clients.
-
-
-def create_length_header(length, mask):
- """Creates a length header.
-
- Args:
- length: Frame length. Must be less than 2^63.
- mask: Mask bit. Must be boolean.
-
- Raises:
- ValueError: when bad data is given.
- """
-
- if mask:
- mask_bit = 1 << 7
- else:
- mask_bit = 0
-
- if length < 0:
- raise ValueError('length must be non negative integer')
- elif length <= 125:
- return chr(mask_bit | length)
- elif length < (1 << 16):
- return chr(mask_bit | 126) + struct.pack('!H', length)
- elif length < (1 << 63):
- return chr(mask_bit | 127) + struct.pack('!Q', length)
- else:
- raise ValueError('Payload is too big for one frame')
-
-
-def create_header(opcode, payload_length, fin, rsv1, rsv2, rsv3, mask):
- """Creates a frame header.
-
- Raises:
- Exception: when bad data is given.
- """
-
- if opcode < 0 or 0xf < opcode:
- raise ValueError('Opcode out of range')
-
- if payload_length < 0 or (1 << 63) <= payload_length:
- raise ValueError('payload_length out of range')
-
- if (fin | rsv1 | rsv2 | rsv3) & ~1:
- raise ValueError('FIN bit and Reserved bit parameter must be 0 or 1')
-
- header = ''
-
- first_byte = ((fin << 7)
- | (rsv1 << 6) | (rsv2 << 5) | (rsv3 << 4)
- | opcode)
- header += chr(first_byte)
- header += create_length_header(payload_length, mask)
-
- return header
-
-
-def _build_frame(header, body, mask):
- if not mask:
- return header + body
-
- masking_nonce = os.urandom(4)
- masker = util.RepeatedXorMasker(masking_nonce)
-
- return header + masking_nonce + masker.mask(body)
-
-
-def _filter_and_format_frame_object(frame, mask, frame_filters):
- for frame_filter in frame_filters:
- frame_filter.filter(frame)
-
- header = create_header(
- frame.opcode, len(frame.payload), frame.fin,
- frame.rsv1, frame.rsv2, frame.rsv3, mask)
- return _build_frame(header, frame.payload, mask)
-
-
-def create_binary_frame(
- message, opcode=common.OPCODE_BINARY, fin=1, mask=False, frame_filters=[]):
- """Creates a simple binary frame with no extension, reserved bit."""
-
- frame = Frame(fin=fin, opcode=opcode, payload=message)
- return _filter_and_format_frame_object(frame, mask, frame_filters)
-
-
-def create_text_frame(
- message, opcode=common.OPCODE_TEXT, fin=1, mask=False, frame_filters=[]):
- """Creates a simple text frame with no extension, reserved bit."""
-
- encoded_message = message.encode('utf-8')
- return create_binary_frame(encoded_message, opcode, fin, mask,
- frame_filters)
-
-
-def parse_frame(receive_bytes, logger=None,
- ws_version=common.VERSION_HYBI_LATEST,
- unmask_receive=True):
- """Parses a frame. Returns a tuple containing each header field and
- payload.
-
- Args:
- receive_bytes: a function that reads frame data from a stream or
- something similar. The function takes length of the bytes to be
- read. The function must raise ConnectionTerminatedException if
- there is not enough data to be read.
- logger: a logging object.
- ws_version: the version of WebSocket protocol.
- unmask_receive: unmask received frames. When received unmasked
- frame, raises InvalidFrameException.
-
- Raises:
- ConnectionTerminatedException: when receive_bytes raises it.
- InvalidFrameException: when the frame contains invalid data.
- """
-
- if not logger:
- logger = logging.getLogger()
-
- logger.log(common.LOGLEVEL_FINE, 'Receive the first 2 octets of a frame')
-
- received = receive_bytes(2)
-
- first_byte = ord(received[0])
- fin = (first_byte >> 7) & 1
- rsv1 = (first_byte >> 6) & 1
- rsv2 = (first_byte >> 5) & 1
- rsv3 = (first_byte >> 4) & 1
- opcode = first_byte & 0xf
-
- second_byte = ord(received[1])
- mask = (second_byte >> 7) & 1
- payload_length = second_byte & 0x7f
-
- logger.log(common.LOGLEVEL_FINE,
- 'FIN=%s, RSV1=%s, RSV2=%s, RSV3=%s, opcode=%s, '
- 'Mask=%s, Payload_length=%s',
- fin, rsv1, rsv2, rsv3, opcode, mask, payload_length)
-
- if (mask == 1) != unmask_receive:
- raise InvalidFrameException(
- 'Mask bit on the received frame did\'nt match masking '
- 'configuration for received frames')
-
- # The HyBi and later specs disallow putting a value in 0x0-0xFFFF
- # into the 8-octet extended payload length field (or 0x0-0xFD in
- # 2-octet field).
- valid_length_encoding = True
- length_encoding_bytes = 1
- if payload_length == 127:
- logger.log(common.LOGLEVEL_FINE,
- 'Receive 8-octet extended payload length')
-
- extended_payload_length = receive_bytes(8)
- payload_length = struct.unpack(
- '!Q', extended_payload_length)[0]
- if payload_length > 0x7FFFFFFFFFFFFFFF:
- raise InvalidFrameException(
- 'Extended payload length >= 2^63')
- if ws_version >= 13 and payload_length < 0x10000:
- valid_length_encoding = False
- length_encoding_bytes = 8
-
- logger.log(common.LOGLEVEL_FINE,
- 'Decoded_payload_length=%s', payload_length)
- elif payload_length == 126:
- logger.log(common.LOGLEVEL_FINE,
- 'Receive 2-octet extended payload length')
-
- extended_payload_length = receive_bytes(2)
- payload_length = struct.unpack(
- '!H', extended_payload_length)[0]
- if ws_version >= 13 and payload_length < 126:
- valid_length_encoding = False
- length_encoding_bytes = 2
-
- logger.log(common.LOGLEVEL_FINE,
- 'Decoded_payload_length=%s', payload_length)
-
- if not valid_length_encoding:
- logger.warning(
- 'Payload length is not encoded using the minimal number of '
- 'bytes (%d is encoded using %d bytes)',
- payload_length,
- length_encoding_bytes)
-
- if mask == 1:
- logger.log(common.LOGLEVEL_FINE, 'Receive mask')
-
- masking_nonce = receive_bytes(4)
- masker = util.RepeatedXorMasker(masking_nonce)
-
- logger.log(common.LOGLEVEL_FINE, 'Mask=%r', masking_nonce)
- else:
- masker = _NOOP_MASKER
-
- logger.log(common.LOGLEVEL_FINE, 'Receive payload data')
- if logger.isEnabledFor(common.LOGLEVEL_FINE):
- receive_start = time.time()
-
- raw_payload_bytes = receive_bytes(payload_length)
-
- if logger.isEnabledFor(common.LOGLEVEL_FINE):
- logger.log(
- common.LOGLEVEL_FINE,
- 'Done receiving payload data at %s MB/s',
- payload_length / (time.time() - receive_start) / 1000 / 1000)
- logger.log(common.LOGLEVEL_FINE, 'Unmask payload data')
-
- if logger.isEnabledFor(common.LOGLEVEL_FINE):
- unmask_start = time.time()
-
- unmasked_bytes = masker.mask(raw_payload_bytes)
-
- if logger.isEnabledFor(common.LOGLEVEL_FINE):
- logger.log(
- common.LOGLEVEL_FINE,
- 'Done unmasking payload data at %s MB/s',
- payload_length / (time.time() - unmask_start) / 1000 / 1000)
-
- return opcode, unmasked_bytes, fin, rsv1, rsv2, rsv3
-
-
-class FragmentedFrameBuilder(object):
- """A stateful class to send a message as fragments."""
-
- def __init__(self, mask, frame_filters=[], encode_utf8=True):
- """Constructs an instance."""
-
- self._mask = mask
- self._frame_filters = frame_filters
- # This is for skipping UTF-8 encoding when building text type frames
- # from compressed data.
- self._encode_utf8 = encode_utf8
-
- self._started = False
-
- # Hold opcode of the first frame in messages to verify types of other
- # frames in the message are all the same.
- self._opcode = common.OPCODE_TEXT
-
- def build(self, payload_data, end, binary):
- if binary:
- frame_type = common.OPCODE_BINARY
- else:
- frame_type = common.OPCODE_TEXT
- if self._started:
- if self._opcode != frame_type:
- raise ValueError('Message types are different in frames for '
- 'the same message')
- opcode = common.OPCODE_CONTINUATION
- else:
- opcode = frame_type
- self._opcode = frame_type
-
- if end:
- self._started = False
- fin = 1
- else:
- self._started = True
- fin = 0
-
- if binary or not self._encode_utf8:
- return create_binary_frame(
- payload_data, opcode, fin, self._mask, self._frame_filters)
- else:
- return create_text_frame(
- payload_data, opcode, fin, self._mask, self._frame_filters)
-
-
-def _create_control_frame(opcode, body, mask, frame_filters):
- frame = Frame(opcode=opcode, payload=body)
-
- for frame_filter in frame_filters:
- frame_filter.filter(frame)
-
- if len(frame.payload) > 125:
- raise BadOperationException(
- 'Payload data size of control frames must be 125 bytes or less')
-
- header = create_header(
- frame.opcode, len(frame.payload), frame.fin,
- frame.rsv1, frame.rsv2, frame.rsv3, mask)
- return _build_frame(header, frame.payload, mask)
-
-
-def create_ping_frame(body, mask=False, frame_filters=[]):
- return _create_control_frame(common.OPCODE_PING, body, mask, frame_filters)
-
-
-def create_pong_frame(body, mask=False, frame_filters=[]):
- return _create_control_frame(common.OPCODE_PONG, body, mask, frame_filters)
-
-
-def create_close_frame(body, mask=False, frame_filters=[]):
- return _create_control_frame(
- common.OPCODE_CLOSE, body, mask, frame_filters)
-
-
-def create_closing_handshake_body(code, reason):
- body = ''
- if code is not None:
- if (code > common.STATUS_USER_PRIVATE_MAX or
- code < common.STATUS_NORMAL_CLOSURE):
- raise BadOperationException('Status code is out of range')
- if (code == common.STATUS_NO_STATUS_RECEIVED or
- code == common.STATUS_ABNORMAL_CLOSURE or
- code == common.STATUS_TLS_HANDSHAKE):
- raise BadOperationException('Status code is reserved pseudo '
- 'code')
- encoded_reason = reason.encode('utf-8')
- body = struct.pack('!H', code) + encoded_reason
- return body
-
-
-class StreamOptions(object):
- """Holds option values to configure Stream objects."""
-
- def __init__(self):
- """Constructs StreamOptions."""
-
- # Filters applied to frames.
- self.outgoing_frame_filters = []
- self.incoming_frame_filters = []
-
- # Filters applied to messages. Control frames are not affected by them.
- self.outgoing_message_filters = []
- self.incoming_message_filters = []
-
- self.encode_text_message_to_utf8 = True
- self.mask_send = False
- self.unmask_receive = True
-
-
-class Stream(StreamBase):
- """A class for parsing/building frames of the WebSocket protocol
- (RFC 6455).
- """
-
- def __init__(self, request, options):
- """Constructs an instance.
-
- Args:
- request: mod_python request.
- """
-
- StreamBase.__init__(self, request)
-
- self._logger = util.get_class_logger(self)
-
- self._options = options
-
- self._request.client_terminated = False
- self._request.server_terminated = False
-
- # Holds body of received fragments.
- self._received_fragments = []
- # Holds the opcode of the first fragment.
- self._original_opcode = None
-
- self._writer = FragmentedFrameBuilder(
- self._options.mask_send, self._options.outgoing_frame_filters,
- self._options.encode_text_message_to_utf8)
-
- self._ping_queue = deque()
-
- def _receive_frame(self):
- """Receives a frame and return data in the frame as a tuple containing
- each header field and payload separately.
-
- Raises:
- ConnectionTerminatedException: when read returns empty
- string.
- InvalidFrameException: when the frame contains invalid data.
- """
-
- def _receive_bytes(length):
- return self.receive_bytes(length)
-
- return parse_frame(receive_bytes=_receive_bytes,
- logger=self._logger,
- ws_version=self._request.ws_version,
- unmask_receive=self._options.unmask_receive)
-
- def _receive_frame_as_frame_object(self):
- opcode, unmasked_bytes, fin, rsv1, rsv2, rsv3 = self._receive_frame()
-
- return Frame(fin=fin, rsv1=rsv1, rsv2=rsv2, rsv3=rsv3,
- opcode=opcode, payload=unmasked_bytes)
-
- def receive_filtered_frame(self):
- """Receives a frame and applies frame filters and message filters.
- The frame to be received must satisfy following conditions:
- - The frame is not fragmented.
- - The opcode of the frame is TEXT or BINARY.
-
- DO NOT USE this method except for testing purpose.
- """
-
- frame = self._receive_frame_as_frame_object()
- if not frame.fin:
- raise InvalidFrameException(
- 'Segmented frames must not be received via '
- 'receive_filtered_frame()')
- if (frame.opcode != common.OPCODE_TEXT and
- frame.opcode != common.OPCODE_BINARY):
- raise InvalidFrameException(
- 'Control frames must not be received via '
- 'receive_filtered_frame()')
-
- for frame_filter in self._options.incoming_frame_filters:
- frame_filter.filter(frame)
- for message_filter in self._options.incoming_message_filters:
- frame.payload = message_filter.filter(frame.payload)
- return frame
-
- def send_message(self, message, end=True, binary=False):
- """Send message.
-
- Args:
- message: text in unicode or binary in str to send.
- binary: send message as binary frame.
-
- Raises:
- BadOperationException: when called on a server-terminated
- connection or called with inconsistent message type or
- binary parameter.
- """
-
- if self._request.server_terminated:
- raise BadOperationException(
- 'Requested send_message after sending out a closing handshake')
-
- if binary and isinstance(message, unicode):
- raise BadOperationException(
- 'Message for binary frame must be instance of str')
-
- for message_filter in self._options.outgoing_message_filters:
- message = message_filter.filter(message, end, binary)
-
- try:
- # Set this to any positive integer to limit maximum size of data in
- # payload data of each frame.
- MAX_PAYLOAD_DATA_SIZE = -1
-
- if MAX_PAYLOAD_DATA_SIZE <= 0:
- self._write(self._writer.build(message, end, binary))
- return
-
- bytes_written = 0
- while True:
- end_for_this_frame = end
- bytes_to_write = len(message) - bytes_written
- if (MAX_PAYLOAD_DATA_SIZE > 0 and
- bytes_to_write > MAX_PAYLOAD_DATA_SIZE):
- end_for_this_frame = False
- bytes_to_write = MAX_PAYLOAD_DATA_SIZE
-
- frame = self._writer.build(
- message[bytes_written:bytes_written + bytes_to_write],
- end_for_this_frame,
- binary)
- self._write(frame)
-
- bytes_written += bytes_to_write
-
- # This if must be placed here (the end of while block) so that
- # at least one frame is sent.
- if len(message) <= bytes_written:
- break
- except ValueError, e:
- raise BadOperationException(e)
-
- def _get_message_from_frame(self, frame):
- """Gets a message from frame. If the message is composed of fragmented
- frames and the frame is not the last fragmented frame, this method
- returns None. The whole message will be returned when the last
- fragmented frame is passed to this method.
-
- Raises:
- InvalidFrameException: when the frame doesn't match defragmentation
- context, or the frame contains invalid data.
- """
-
- if frame.opcode == common.OPCODE_CONTINUATION:
- if not self._received_fragments:
- if frame.fin:
- raise InvalidFrameException(
- 'Received a termination frame but fragmentation '
- 'not started')
- else:
- raise InvalidFrameException(
- 'Received an intermediate frame but '
- 'fragmentation not started')
-
- if frame.fin:
- # End of fragmentation frame
- self._received_fragments.append(frame.payload)
- message = ''.join(self._received_fragments)
- self._received_fragments = []
- return message
- else:
- # Intermediate frame
- self._received_fragments.append(frame.payload)
- return None
- else:
- if self._received_fragments:
- if frame.fin:
- raise InvalidFrameException(
- 'Received an unfragmented frame without '
- 'terminating existing fragmentation')
- else:
- raise InvalidFrameException(
- 'New fragmentation started without terminating '
- 'existing fragmentation')
-
- if frame.fin:
- # Unfragmented frame
-
- self._original_opcode = frame.opcode
- return frame.payload
- else:
- # Start of fragmentation frame
-
- if common.is_control_opcode(frame.opcode):
- raise InvalidFrameException(
- 'Control frames must not be fragmented')
-
- self._original_opcode = frame.opcode
- self._received_fragments.append(frame.payload)
- return None
-
- def _process_close_message(self, message):
- """Processes close message.
-
- Args:
- message: close message.
-
- Raises:
- InvalidFrameException: when the message is invalid.
- """
-
- self._request.client_terminated = True
-
- # Status code is optional. We can have status reason only if we
- # have status code. Status reason can be empty string. So,
- # allowed cases are
- # - no application data: no code no reason
- # - 2 octet of application data: has code but no reason
- # - 3 or more octet of application data: both code and reason
- if len(message) == 0:
- self._logger.debug('Received close frame (empty body)')
- self._request.ws_close_code = (
- common.STATUS_NO_STATUS_RECEIVED)
- elif len(message) == 1:
- raise InvalidFrameException(
- 'If a close frame has status code, the length of '
- 'status code must be 2 octet')
- elif len(message) >= 2:
- self._request.ws_close_code = struct.unpack(
- '!H', message[0:2])[0]
- self._request.ws_close_reason = message[2:].decode(
- 'utf-8', 'replace')
- self._logger.debug(
- 'Received close frame (code=%d, reason=%r)',
- self._request.ws_close_code,
- self._request.ws_close_reason)
-
- # As we've received a close frame, no more data is coming over the
- # socket. We can now safely close the socket without worrying about
- # RST sending.
-
- if self._request.server_terminated:
- self._logger.debug(
- 'Received ack for server-initiated closing handshake')
- return
-
- self._logger.debug(
- 'Received client-initiated closing handshake')
-
- code = common.STATUS_NORMAL_CLOSURE
- reason = ''
- if hasattr(self._request, '_dispatcher'):
- dispatcher = self._request._dispatcher
- code, reason = dispatcher.passive_closing_handshake(
- self._request)
- if code is None and reason is not None and len(reason) > 0:
- self._logger.warning(
- 'Handler specified reason despite code being None')
- reason = ''
- if reason is None:
- reason = ''
- self._send_closing_handshake(code, reason)
- self._logger.debug(
- 'Acknowledged closing handshake initiated by the peer '
- '(code=%r, reason=%r)', code, reason)
-
- def _process_ping_message(self, message):
- """Processes ping message.
-
- Args:
- message: ping message.
- """
-
- try:
- handler = self._request.on_ping_handler
- if handler:
- handler(self._request, message)
- return
- except AttributeError, e:
- pass
- self._send_pong(message)
-
- def _process_pong_message(self, message):
- """Processes pong message.
-
- Args:
- message: pong message.
- """
-
- # TODO(tyoshino): Add ping timeout handling.
-
- inflight_pings = deque()
-
- while True:
- try:
- expected_body = self._ping_queue.popleft()
- if expected_body == message:
- # inflight_pings contains pings ignored by the
- # other peer. Just forget them.
- self._logger.debug(
- 'Ping %r is acked (%d pings were ignored)',
- expected_body, len(inflight_pings))
- break
- else:
- inflight_pings.append(expected_body)
- except IndexError, e:
- # The received pong was unsolicited pong. Keep the
- # ping queue as is.
- self._ping_queue = inflight_pings
- self._logger.debug('Received a unsolicited pong')
- break
-
- try:
- handler = self._request.on_pong_handler
- if handler:
- handler(self._request, message)
- except AttributeError, e:
- pass
-
- def receive_message(self):
- """Receive a WebSocket frame and return its payload as a text in
- unicode or a binary in str.
-
- Returns:
- payload data of the frame
- - as unicode instance if received text frame
- - as str instance if received binary frame
- or None iff received closing handshake.
- Raises:
- BadOperationException: when called on a client-terminated
- connection.
- ConnectionTerminatedException: when read returns empty
- string.
- InvalidFrameException: when the frame contains invalid
- data.
- UnsupportedFrameException: when the received frame has
- flags, opcode we cannot handle. You can ignore this
- exception and continue receiving the next frame.
- """
-
- if self._request.client_terminated:
- raise BadOperationException(
- 'Requested receive_message after receiving a closing '
- 'handshake')
-
- while True:
- # mp_conn.read will block if no bytes are available.
- # Timeout is controlled by TimeOut directive of Apache.
-
- frame = self._receive_frame_as_frame_object()
-
- # Check the constraint on the payload size for control frames
- # before extension processes the frame.
- # See also http://tools.ietf.org/html/rfc6455#section-5.5
- if (common.is_control_opcode(frame.opcode) and
- len(frame.payload) > 125):
- raise InvalidFrameException(
- 'Payload data size of control frames must be 125 bytes or '
- 'less')
-
- for frame_filter in self._options.incoming_frame_filters:
- frame_filter.filter(frame)
-
- if frame.rsv1 or frame.rsv2 or frame.rsv3:
- raise UnsupportedFrameException(
- 'Unsupported flag is set (rsv = %d%d%d)' %
- (frame.rsv1, frame.rsv2, frame.rsv3))
-
- message = self._get_message_from_frame(frame)
- if message is None:
- continue
-
- for message_filter in self._options.incoming_message_filters:
- message = message_filter.filter(message)
-
- if self._original_opcode == common.OPCODE_TEXT:
- # The WebSocket protocol section 4.4 specifies that invalid
- # characters must be replaced with U+fffd REPLACEMENT
- # CHARACTER.
- try:
- return message.decode('utf-8')
- except UnicodeDecodeError, e:
- raise InvalidUTF8Exception(e)
- elif self._original_opcode == common.OPCODE_BINARY:
- return message
- elif self._original_opcode == common.OPCODE_CLOSE:
- self._process_close_message(message)
- return None
- elif self._original_opcode == common.OPCODE_PING:
- self._process_ping_message(message)
- elif self._original_opcode == common.OPCODE_PONG:
- self._process_pong_message(message)
- else:
- raise UnsupportedFrameException(
- 'Opcode %d is not supported' % self._original_opcode)
-
- def _send_closing_handshake(self, code, reason):
- body = create_closing_handshake_body(code, reason)
- frame = create_close_frame(
- body, mask=self._options.mask_send,
- frame_filters=self._options.outgoing_frame_filters)
-
- self._request.server_terminated = True
-
- self._write(frame)
-
- def close_connection(self, code=common.STATUS_NORMAL_CLOSURE, reason='',
- wait_response=True):
- """Closes a WebSocket connection.
-
- Args:
- code: Status code for close frame. If code is None, a close
- frame with empty body will be sent.
- reason: string representing close reason.
- wait_response: True when caller want to wait the response.
- Raises:
- BadOperationException: when reason is specified with code None
- or reason is not an instance of both str and unicode.
- """
-
- if self._request.server_terminated:
- self._logger.debug(
- 'Requested close_connection but server is already terminated')
- return
-
- if code is None:
- if reason is not None and len(reason) > 0:
- raise BadOperationException(
- 'close reason must not be specified if code is None')
- reason = ''
- else:
- if not isinstance(reason, str) and not isinstance(reason, unicode):
- raise BadOperationException(
- 'close reason must be an instance of str or unicode')
-
- self._send_closing_handshake(code, reason)
- self._logger.debug(
- 'Initiated closing handshake (code=%r, reason=%r)',
- code, reason)
-
- if (code == common.STATUS_GOING_AWAY or
- code == common.STATUS_PROTOCOL_ERROR) or not wait_response:
- # It doesn't make sense to wait for a close frame if the reason is
- # protocol error or that the server is going away. For some of
- # other reasons, it might not make sense to wait for a close frame,
- # but it's not clear, yet.
- return
-
- # TODO(ukai): 2. wait until the /client terminated/ flag has been set,
- # or until a server-defined timeout expires.
- #
- # For now, we expect receiving closing handshake right after sending
- # out closing handshake.
- message = self.receive_message()
- if message is not None:
- raise ConnectionTerminatedException(
- 'Didn\'t receive valid ack for closing handshake')
- # TODO: 3. close the WebSocket connection.
- # note: mod_python Connection (mp_conn) doesn't have close method.
-
- def send_ping(self, body=''):
- frame = create_ping_frame(
- body,
- self._options.mask_send,
- self._options.outgoing_frame_filters)
- self._write(frame)
-
- self._ping_queue.append(body)
-
- def _send_pong(self, body):
- frame = create_pong_frame(
- body,
- self._options.mask_send,
- self._options.outgoing_frame_filters)
- self._write(frame)
-
- def get_last_received_opcode(self):
- """Returns the opcode of the WebSocket message which the last received
- frame belongs to. The return value is valid iff immediately after
- receive_message call.
- """
-
- return self._original_opcode
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py
deleted file mode 100644
index afa123368..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/common.py
+++ /dev/null
@@ -1,307 +0,0 @@
-# Copyright 2012, 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 file must not depend on any module specific to the WebSocket protocol.
-"""
-
-
-from mod_pywebsocket import http_header_util
-
-
-# Additional log level definitions.
-LOGLEVEL_FINE = 9
-
-# Constants indicating WebSocket protocol version.
-VERSION_HIXIE75 = -1
-VERSION_HYBI00 = 0
-VERSION_HYBI01 = 1
-VERSION_HYBI02 = 2
-VERSION_HYBI03 = 2
-VERSION_HYBI04 = 4
-VERSION_HYBI05 = 5
-VERSION_HYBI06 = 6
-VERSION_HYBI07 = 7
-VERSION_HYBI08 = 8
-VERSION_HYBI09 = 8
-VERSION_HYBI10 = 8
-VERSION_HYBI11 = 8
-VERSION_HYBI12 = 8
-VERSION_HYBI13 = 13
-VERSION_HYBI14 = 13
-VERSION_HYBI15 = 13
-VERSION_HYBI16 = 13
-VERSION_HYBI17 = 13
-
-# Constants indicating WebSocket protocol latest version.
-VERSION_HYBI_LATEST = VERSION_HYBI13
-
-# Port numbers
-DEFAULT_WEB_SOCKET_PORT = 80
-DEFAULT_WEB_SOCKET_SECURE_PORT = 443
-
-# Schemes
-WEB_SOCKET_SCHEME = 'ws'
-WEB_SOCKET_SECURE_SCHEME = 'wss'
-
-# Frame opcodes defined in the spec.
-OPCODE_CONTINUATION = 0x0
-OPCODE_TEXT = 0x1
-OPCODE_BINARY = 0x2
-OPCODE_CLOSE = 0x8
-OPCODE_PING = 0x9
-OPCODE_PONG = 0xa
-
-# UUIDs used by HyBi 04 and later opening handshake and frame masking.
-WEBSOCKET_ACCEPT_UUID = '258EAFA5-E914-47DA-95CA-C5AB0DC85B11'
-
-# Opening handshake header names and expected values.
-UPGRADE_HEADER = 'Upgrade'
-WEBSOCKET_UPGRADE_TYPE = 'websocket'
-WEBSOCKET_UPGRADE_TYPE_HIXIE75 = 'WebSocket'
-CONNECTION_HEADER = 'Connection'
-UPGRADE_CONNECTION_TYPE = 'Upgrade'
-HOST_HEADER = 'Host'
-ORIGIN_HEADER = 'Origin'
-SEC_WEBSOCKET_ORIGIN_HEADER = 'Sec-WebSocket-Origin'
-SEC_WEBSOCKET_KEY_HEADER = 'Sec-WebSocket-Key'
-SEC_WEBSOCKET_ACCEPT_HEADER = 'Sec-WebSocket-Accept'
-SEC_WEBSOCKET_VERSION_HEADER = 'Sec-WebSocket-Version'
-SEC_WEBSOCKET_PROTOCOL_HEADER = 'Sec-WebSocket-Protocol'
-SEC_WEBSOCKET_EXTENSIONS_HEADER = 'Sec-WebSocket-Extensions'
-SEC_WEBSOCKET_DRAFT_HEADER = 'Sec-WebSocket-Draft'
-SEC_WEBSOCKET_KEY1_HEADER = 'Sec-WebSocket-Key1'
-SEC_WEBSOCKET_KEY2_HEADER = 'Sec-WebSocket-Key2'
-SEC_WEBSOCKET_LOCATION_HEADER = 'Sec-WebSocket-Location'
-
-# Extensions
-DEFLATE_FRAME_EXTENSION = 'deflate-frame'
-PERFRAME_COMPRESSION_EXTENSION = 'perframe-compress'
-PERMESSAGE_COMPRESSION_EXTENSION = 'permessage-compress'
-PERMESSAGE_DEFLATE_EXTENSION = 'permessage-deflate'
-X_WEBKIT_DEFLATE_FRAME_EXTENSION = 'x-webkit-deflate-frame'
-X_WEBKIT_PERMESSAGE_COMPRESSION_EXTENSION = 'x-webkit-permessage-compress'
-MUX_EXTENSION = 'mux_DO_NOT_USE'
-
-# Status codes
-# Code STATUS_NO_STATUS_RECEIVED, STATUS_ABNORMAL_CLOSURE, and
-# STATUS_TLS_HANDSHAKE are pseudo codes to indicate specific error cases.
-# Could not be used for codes in actual closing frames.
-# Application level errors must use codes in the range
-# STATUS_USER_REGISTERED_BASE to STATUS_USER_PRIVATE_MAX. The codes in the
-# range STATUS_USER_REGISTERED_BASE to STATUS_USER_REGISTERED_MAX are managed
-# by IANA. Usually application must define user protocol level errors in the
-# range STATUS_USER_PRIVATE_BASE to STATUS_USER_PRIVATE_MAX.
-STATUS_NORMAL_CLOSURE = 1000
-STATUS_GOING_AWAY = 1001
-STATUS_PROTOCOL_ERROR = 1002
-STATUS_UNSUPPORTED_DATA = 1003
-STATUS_NO_STATUS_RECEIVED = 1005
-STATUS_ABNORMAL_CLOSURE = 1006
-STATUS_INVALID_FRAME_PAYLOAD_DATA = 1007
-STATUS_POLICY_VIOLATION = 1008
-STATUS_MESSAGE_TOO_BIG = 1009
-STATUS_MANDATORY_EXTENSION = 1010
-STATUS_INTERNAL_ENDPOINT_ERROR = 1011
-STATUS_TLS_HANDSHAKE = 1015
-STATUS_USER_REGISTERED_BASE = 3000
-STATUS_USER_REGISTERED_MAX = 3999
-STATUS_USER_PRIVATE_BASE = 4000
-STATUS_USER_PRIVATE_MAX = 4999
-# Following definitions are aliases to keep compatibility. Applications must
-# not use these obsoleted definitions anymore.
-STATUS_NORMAL = STATUS_NORMAL_CLOSURE
-STATUS_UNSUPPORTED = STATUS_UNSUPPORTED_DATA
-STATUS_CODE_NOT_AVAILABLE = STATUS_NO_STATUS_RECEIVED
-STATUS_ABNORMAL_CLOSE = STATUS_ABNORMAL_CLOSURE
-STATUS_INVALID_FRAME_PAYLOAD = STATUS_INVALID_FRAME_PAYLOAD_DATA
-STATUS_MANDATORY_EXT = STATUS_MANDATORY_EXTENSION
-
-# HTTP status codes
-HTTP_STATUS_BAD_REQUEST = 400
-HTTP_STATUS_FORBIDDEN = 403
-HTTP_STATUS_NOT_FOUND = 404
-
-
-def is_control_opcode(opcode):
- return (opcode >> 3) == 1
-
-
-class ExtensionParameter(object):
- """Holds information about an extension which is exchanged on extension
- negotiation in opening handshake.
- """
-
- def __init__(self, name):
- self._name = name
- # TODO(tyoshino): Change the data structure to more efficient one such
- # as dict when the spec changes to say like
- # - Parameter names must be unique
- # - The order of parameters is not significant
- self._parameters = []
-
- def name(self):
- return self._name
-
- def add_parameter(self, name, value):
- self._parameters.append((name, value))
-
- def get_parameters(self):
- return self._parameters
-
- def get_parameter_names(self):
- return [name for name, unused_value in self._parameters]
-
- def has_parameter(self, name):
- for param_name, param_value in self._parameters:
- if param_name == name:
- return True
- return False
-
- def get_parameter_value(self, name):
- for param_name, param_value in self._parameters:
- if param_name == name:
- return param_value
-
-
-class ExtensionParsingException(Exception):
- def __init__(self, name):
- super(ExtensionParsingException, self).__init__(name)
-
-
-def _parse_extension_param(state, definition, allow_quoted_string):
- param_name = http_header_util.consume_token(state)
-
- if param_name is None:
- raise ExtensionParsingException('No valid parameter name found')
-
- http_header_util.consume_lwses(state)
-
- if not http_header_util.consume_string(state, '='):
- definition.add_parameter(param_name, None)
- return
-
- http_header_util.consume_lwses(state)
-
- if allow_quoted_string:
- # TODO(toyoshim): Add code to validate that parsed param_value is token
- param_value = http_header_util.consume_token_or_quoted_string(state)
- else:
- param_value = http_header_util.consume_token(state)
- if param_value is None:
- raise ExtensionParsingException(
- 'No valid parameter value found on the right-hand side of '
- 'parameter %r' % param_name)
-
- definition.add_parameter(param_name, param_value)
-
-
-def _parse_extension(state, allow_quoted_string):
- extension_token = http_header_util.consume_token(state)
- if extension_token is None:
- return None
-
- extension = ExtensionParameter(extension_token)
-
- while True:
- http_header_util.consume_lwses(state)
-
- if not http_header_util.consume_string(state, ';'):
- break
-
- http_header_util.consume_lwses(state)
-
- try:
- _parse_extension_param(state, extension, allow_quoted_string)
- except ExtensionParsingException, e:
- raise ExtensionParsingException(
- 'Failed to parse parameter for %r (%r)' %
- (extension_token, e))
-
- return extension
-
-
-def parse_extensions(data, allow_quoted_string=False):
- """Parses Sec-WebSocket-Extensions header value returns a list of
- ExtensionParameter objects.
-
- Leading LWSes must be trimmed.
- """
-
- state = http_header_util.ParsingState(data)
-
- extension_list = []
- while True:
- extension = _parse_extension(state, allow_quoted_string)
- if extension is not None:
- extension_list.append(extension)
-
- http_header_util.consume_lwses(state)
-
- if http_header_util.peek(state) is None:
- break
-
- if not http_header_util.consume_string(state, ','):
- raise ExtensionParsingException(
- 'Failed to parse Sec-WebSocket-Extensions header: '
- 'Expected a comma but found %r' %
- http_header_util.peek(state))
-
- http_header_util.consume_lwses(state)
-
- if len(extension_list) == 0:
- raise ExtensionParsingException(
- 'No valid extension entry found')
-
- return extension_list
-
-
-def format_extension(extension):
- """Formats an ExtensionParameter object."""
-
- formatted_params = [extension.name()]
- for param_name, param_value in extension.get_parameters():
- if param_value is None:
- formatted_params.append(param_name)
- else:
- quoted_value = http_header_util.quote_if_necessary(param_value)
- formatted_params.append('%s=%s' % (param_name, quoted_value))
- return '; '.join(formatted_params)
-
-
-def format_extensions(extension_list):
- """Formats a list of ExtensionParameter objects."""
-
- formatted_extension_list = []
- for extension in extension_list:
- formatted_extension_list.append(format_extension(extension))
- return ', '.join(formatted_extension_list)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py
deleted file mode 100644
index 96c91e0c9..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/dispatch.py
+++ /dev/null
@@ -1,393 +0,0 @@
-# Copyright 2012, 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.
-
-
-"""Dispatch WebSocket request.
-"""
-
-
-import logging
-import os
-import re
-
-from mod_pywebsocket import common
-from mod_pywebsocket import handshake
-from mod_pywebsocket import msgutil
-from mod_pywebsocket import mux
-from mod_pywebsocket import stream
-from mod_pywebsocket import util
-
-
-_SOURCE_PATH_PATTERN = re.compile(r'(?i)_wsh\.py$')
-_SOURCE_SUFFIX = '_wsh.py'
-_DO_EXTRA_HANDSHAKE_HANDLER_NAME = 'web_socket_do_extra_handshake'
-_TRANSFER_DATA_HANDLER_NAME = 'web_socket_transfer_data'
-_PASSIVE_CLOSING_HANDSHAKE_HANDLER_NAME = (
- 'web_socket_passive_closing_handshake')
-
-
-class DispatchException(Exception):
- """Exception in dispatching WebSocket request."""
-
- def __init__(self, name, status=common.HTTP_STATUS_NOT_FOUND):
- super(DispatchException, self).__init__(name)
- self.status = status
-
-
-def _default_passive_closing_handshake_handler(request):
- """Default web_socket_passive_closing_handshake handler."""
-
- return common.STATUS_NORMAL_CLOSURE, ''
-
-
-def _normalize_path(path):
- """Normalize path.
-
- Args:
- path: the path to normalize.
-
- Path is converted to the absolute path.
- The input path can use either '\\' or '/' as the separator.
- The normalized path always uses '/' regardless of the platform.
- """
-
- path = path.replace('\\', os.path.sep)
- path = os.path.realpath(path)
- path = path.replace('\\', '/')
- return path
-
-
-def _create_path_to_resource_converter(base_dir):
- """Returns a function that converts the path of a WebSocket handler source
- file to a resource string by removing the path to the base directory from
- its head, removing _SOURCE_SUFFIX from its tail, and replacing path
- separators in it with '/'.
-
- Args:
- base_dir: the path to the base directory.
- """
-
- base_dir = _normalize_path(base_dir)
-
- base_len = len(base_dir)
- suffix_len = len(_SOURCE_SUFFIX)
-
- def converter(path):
- if not path.endswith(_SOURCE_SUFFIX):
- return None
- # _normalize_path must not be used because resolving symlink breaks
- # following path check.
- path = path.replace('\\', '/')
- if not path.startswith(base_dir):
- return None
- return path[base_len:-suffix_len]
-
- return converter
-
-
-def _enumerate_handler_file_paths(directory):
- """Returns a generator that enumerates WebSocket Handler source file names
- in the given directory.
- """
-
- for root, unused_dirs, files in os.walk(directory):
- for base in files:
- path = os.path.join(root, base)
- if _SOURCE_PATH_PATTERN.search(path):
- yield path
-
-
-class _HandlerSuite(object):
- """A handler suite holder class."""
-
- def __init__(self, do_extra_handshake, transfer_data,
- passive_closing_handshake):
- self.do_extra_handshake = do_extra_handshake
- self.transfer_data = transfer_data
- self.passive_closing_handshake = passive_closing_handshake
-
-
-def _source_handler_file(handler_definition):
- """Source a handler definition string.
-
- Args:
- handler_definition: a string containing Python statements that define
- handler functions.
- """
-
- global_dic = {}
- try:
- exec handler_definition in global_dic
- except Exception:
- raise DispatchException('Error in sourcing handler:' +
- util.get_stack_trace())
- passive_closing_handshake_handler = None
- try:
- passive_closing_handshake_handler = _extract_handler(
- global_dic, _PASSIVE_CLOSING_HANDSHAKE_HANDLER_NAME)
- except Exception:
- passive_closing_handshake_handler = (
- _default_passive_closing_handshake_handler)
- return _HandlerSuite(
- _extract_handler(global_dic, _DO_EXTRA_HANDSHAKE_HANDLER_NAME),
- _extract_handler(global_dic, _TRANSFER_DATA_HANDLER_NAME),
- passive_closing_handshake_handler)
-
-
-def _extract_handler(dic, name):
- """Extracts a callable with the specified name from the given dictionary
- dic.
- """
-
- if name not in dic:
- raise DispatchException('%s is not defined.' % name)
- handler = dic[name]
- if not callable(handler):
- raise DispatchException('%s is not callable.' % name)
- return handler
-
-
-class Dispatcher(object):
- """Dispatches WebSocket requests.
-
- This class maintains a map from resource name to handlers.
- """
-
- def __init__(
- self, root_dir, scan_dir=None,
- allow_handlers_outside_root_dir=True):
- """Construct an instance.
-
- Args:
- root_dir: The directory where handler definition files are
- placed.
- scan_dir: The directory where handler definition files are
- searched. scan_dir must be a directory under root_dir,
- including root_dir itself. If scan_dir is None,
- root_dir is used as scan_dir. scan_dir can be useful
- in saving scan time when root_dir contains many
- subdirectories.
- allow_handlers_outside_root_dir: Scans handler files even if their
- canonical path is not under root_dir.
- """
-
- self._logger = util.get_class_logger(self)
-
- self._handler_suite_map = {}
- self._source_warnings = []
- if scan_dir is None:
- scan_dir = root_dir
- if not os.path.realpath(scan_dir).startswith(
- os.path.realpath(root_dir)):
- raise DispatchException('scan_dir:%s must be a directory under '
- 'root_dir:%s.' % (scan_dir, root_dir))
- self._source_handler_files_in_dir(
- root_dir, scan_dir, allow_handlers_outside_root_dir)
-
- def add_resource_path_alias(self,
- alias_resource_path, existing_resource_path):
- """Add resource path alias.
-
- Once added, request to alias_resource_path would be handled by
- handler registered for existing_resource_path.
-
- Args:
- alias_resource_path: alias resource path
- existing_resource_path: existing resource path
- """
- try:
- handler_suite = self._handler_suite_map[existing_resource_path]
- self._handler_suite_map[alias_resource_path] = handler_suite
- except KeyError:
- raise DispatchException('No handler for: %r' %
- existing_resource_path)
-
- def source_warnings(self):
- """Return warnings in sourcing handlers."""
-
- return self._source_warnings
-
- def do_extra_handshake(self, request):
- """Do extra checking in WebSocket handshake.
-
- Select a handler based on request.uri and call its
- web_socket_do_extra_handshake function.
-
- Args:
- request: mod_python request.
-
- Raises:
- DispatchException: when handler was not found
- AbortedByUserException: when user handler abort connection
- HandshakeException: when opening handshake failed
- """
-
- handler_suite = self.get_handler_suite(request.ws_resource)
- if handler_suite is None:
- raise DispatchException('No handler for: %r' % request.ws_resource)
- do_extra_handshake_ = handler_suite.do_extra_handshake
- try:
- do_extra_handshake_(request)
- except handshake.AbortedByUserException, e:
- # Re-raise to tell the caller of this function to finish this
- # connection without sending any error.
- self._logger.debug('%s', util.get_stack_trace())
- raise
- except Exception, e:
- util.prepend_message_to_exception(
- '%s raised exception for %s: ' % (
- _DO_EXTRA_HANDSHAKE_HANDLER_NAME,
- request.ws_resource),
- e)
- raise handshake.HandshakeException(e, common.HTTP_STATUS_FORBIDDEN)
-
- def transfer_data(self, request):
- """Let a handler transfer_data with a WebSocket client.
-
- Select a handler based on request.ws_resource and call its
- web_socket_transfer_data function.
-
- Args:
- request: mod_python request.
-
- Raises:
- DispatchException: when handler was not found
- AbortedByUserException: when user handler abort connection
- """
-
- # TODO(tyoshino): Terminate underlying TCP connection if possible.
- try:
- if mux.use_mux(request):
- mux.start(request, self)
- else:
- handler_suite = self.get_handler_suite(request.ws_resource)
- if handler_suite is None:
- raise DispatchException('No handler for: %r' %
- request.ws_resource)
- transfer_data_ = handler_suite.transfer_data
- transfer_data_(request)
-
- if not request.server_terminated:
- request.ws_stream.close_connection()
- # Catch non-critical exceptions the handler didn't handle.
- except handshake.AbortedByUserException, e:
- self._logger.debug('%s', util.get_stack_trace())
- raise
- except msgutil.BadOperationException, e:
- self._logger.debug('%s', e)
- request.ws_stream.close_connection(
- common.STATUS_INTERNAL_ENDPOINT_ERROR)
- except msgutil.InvalidFrameException, e:
- # InvalidFrameException must be caught before
- # ConnectionTerminatedException that catches InvalidFrameException.
- self._logger.debug('%s', e)
- request.ws_stream.close_connection(common.STATUS_PROTOCOL_ERROR)
- except msgutil.UnsupportedFrameException, e:
- self._logger.debug('%s', e)
- request.ws_stream.close_connection(common.STATUS_UNSUPPORTED_DATA)
- except stream.InvalidUTF8Exception, e:
- self._logger.debug('%s', e)
- request.ws_stream.close_connection(
- common.STATUS_INVALID_FRAME_PAYLOAD_DATA)
- except msgutil.ConnectionTerminatedException, e:
- self._logger.debug('%s', e)
- except Exception, e:
- # Any other exceptions are forwarded to the caller of this
- # function.
- util.prepend_message_to_exception(
- '%s raised exception for %s: ' % (
- _TRANSFER_DATA_HANDLER_NAME, request.ws_resource),
- e)
- raise
-
- def passive_closing_handshake(self, request):
- """Prepare code and reason for responding client initiated closing
- handshake.
- """
-
- handler_suite = self.get_handler_suite(request.ws_resource)
- if handler_suite is None:
- return _default_passive_closing_handshake_handler(request)
- return handler_suite.passive_closing_handshake(request)
-
- def get_handler_suite(self, resource):
- """Retrieves two handlers (one for extra handshake processing, and one
- for data transfer) for the given request as a HandlerSuite object.
- """
-
- fragment = None
- if '#' in resource:
- resource, fragment = resource.split('#', 1)
- if '?' in resource:
- resource = resource.split('?', 1)[0]
- handler_suite = self._handler_suite_map.get(resource)
- if handler_suite and fragment:
- raise DispatchException('Fragment identifiers MUST NOT be used on '
- 'WebSocket URIs',
- common.HTTP_STATUS_BAD_REQUEST)
- return handler_suite
-
- def _source_handler_files_in_dir(
- self, root_dir, scan_dir, allow_handlers_outside_root_dir):
- """Source all the handler source files in the scan_dir directory.
-
- The resource path is determined relative to root_dir.
- """
-
- # We build a map from resource to handler code assuming that there's
- # only one path from root_dir to scan_dir and it can be obtained by
- # comparing realpath of them.
-
- # Here we cannot use abspath. See
- # https://bugs.webkit.org/show_bug.cgi?id=31603
-
- convert = _create_path_to_resource_converter(root_dir)
- scan_realpath = os.path.realpath(scan_dir)
- root_realpath = os.path.realpath(root_dir)
- for path in _enumerate_handler_file_paths(scan_realpath):
- if (not allow_handlers_outside_root_dir and
- (not os.path.realpath(path).startswith(root_realpath))):
- self._logger.debug(
- 'Canonical path of %s is not under root directory' %
- path)
- continue
- try:
- handler_suite = _source_handler_file(open(path).read())
- except DispatchException, e:
- self._source_warnings.append('%s: %s' % (path, e))
- continue
- resource = convert(path)
- if resource is None:
- self._logger.debug(
- 'Path to resource conversion on %s failed' % path)
- else:
- self._handler_suite_map[convert(path)] = handler_suite
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py
deleted file mode 100644
index 552d2c072..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/extensions.py
+++ /dev/null
@@ -1,894 +0,0 @@
-# Copyright 2012, 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.
-
-
-from mod_pywebsocket import common
-from mod_pywebsocket import util
-from mod_pywebsocket.http_header_util import quote_if_necessary
-
-
-_available_processors = {}
-_compression_extension_names = []
-
-
-class ExtensionProcessorInterface(object):
-
- def __init__(self, request):
- self._request = request
- self._active = True
-
- def request(self):
- return self._request
-
- def name(self):
- return None
-
- def check_consistency_with_other_processors(self, processors):
- pass
-
- def set_active(self, active):
- self._active = active
-
- def is_active(self):
- return self._active
-
- def _get_extension_response_internal(self):
- return None
-
- def get_extension_response(self):
- if self._active:
- response = self._get_extension_response_internal()
- if response is None:
- self._active = False
- return response
- return None
-
- def _setup_stream_options_internal(self, stream_options):
- pass
-
- def setup_stream_options(self, stream_options):
- if self._active:
- self._setup_stream_options_internal(stream_options)
-
-
-def _log_outgoing_compression_ratio(
- logger, original_bytes, filtered_bytes, average_ratio):
- # Print inf when ratio is not available.
- ratio = float('inf')
- if original_bytes != 0:
- ratio = float(filtered_bytes) / original_bytes
-
- logger.debug('Outgoing compression ratio: %f (average: %f)' %
- (ratio, average_ratio))
-
-
-def _log_incoming_compression_ratio(
- logger, received_bytes, filtered_bytes, average_ratio):
- # Print inf when ratio is not available.
- ratio = float('inf')
- if filtered_bytes != 0:
- ratio = float(received_bytes) / filtered_bytes
-
- logger.debug('Incoming compression ratio: %f (average: %f)' %
- (ratio, average_ratio))
-
-
-def _parse_window_bits(bits):
- """Return parsed integer value iff the given string conforms to the
- grammar of the window bits extension parameters.
- """
-
- if bits is None:
- raise ValueError('Value is required')
-
- # For non integer values such as "10.0", ValueError will be raised.
- int_bits = int(bits)
-
- # First condition is to drop leading zero case e.g. "08".
- if bits != str(int_bits) or int_bits < 8 or int_bits > 15:
- raise ValueError('Invalid value: %r' % bits)
-
- return int_bits
-
-
-class _AverageRatioCalculator(object):
- """Stores total bytes of original and result data, and calculates average
- result / original ratio.
- """
-
- def __init__(self):
- self._total_original_bytes = 0
- self._total_result_bytes = 0
-
- def add_original_bytes(self, value):
- self._total_original_bytes += value
-
- def add_result_bytes(self, value):
- self._total_result_bytes += value
-
- def get_average_ratio(self):
- if self._total_original_bytes != 0:
- return (float(self._total_result_bytes) /
- self._total_original_bytes)
- else:
- return float('inf')
-
-
-class DeflateFrameExtensionProcessor(ExtensionProcessorInterface):
- """deflate-frame extension processor.
-
- Specification:
- http://tools.ietf.org/html/draft-tyoshino-hybi-websocket-perframe-deflate
- """
-
- _WINDOW_BITS_PARAM = 'max_window_bits'
- _NO_CONTEXT_TAKEOVER_PARAM = 'no_context_takeover'
-
- def __init__(self, request):
- ExtensionProcessorInterface.__init__(self, request)
- self._logger = util.get_class_logger(self)
-
- self._response_window_bits = None
- self._response_no_context_takeover = False
- self._bfinal = False
-
- # Calculates
- # (Total outgoing bytes supplied to this filter) /
- # (Total bytes sent to the network after applying this filter)
- self._outgoing_average_ratio_calculator = _AverageRatioCalculator()
-
- # Calculates
- # (Total bytes received from the network) /
- # (Total incoming bytes obtained after applying this filter)
- self._incoming_average_ratio_calculator = _AverageRatioCalculator()
-
- def name(self):
- return common.DEFLATE_FRAME_EXTENSION
-
- def _get_extension_response_internal(self):
- # Any unknown parameter will be just ignored.
-
- window_bits = None
- if self._request.has_parameter(self._WINDOW_BITS_PARAM):
- window_bits = self._request.get_parameter_value(
- self._WINDOW_BITS_PARAM)
- try:
- window_bits = _parse_window_bits(window_bits)
- except ValueError, e:
- return None
-
- no_context_takeover = self._request.has_parameter(
- self._NO_CONTEXT_TAKEOVER_PARAM)
- if (no_context_takeover and
- self._request.get_parameter_value(
- self._NO_CONTEXT_TAKEOVER_PARAM) is not None):
- return None
-
- self._rfc1979_deflater = util._RFC1979Deflater(
- window_bits, no_context_takeover)
-
- self._rfc1979_inflater = util._RFC1979Inflater()
-
- self._compress_outgoing = True
-
- response = common.ExtensionParameter(self._request.name())
-
- if self._response_window_bits is not None:
- response.add_parameter(
- self._WINDOW_BITS_PARAM, str(self._response_window_bits))
- if self._response_no_context_takeover:
- response.add_parameter(
- self._NO_CONTEXT_TAKEOVER_PARAM, None)
-
- self._logger.debug(
- 'Enable %s extension ('
- 'request: window_bits=%s; no_context_takeover=%r, '
- 'response: window_wbits=%s; no_context_takeover=%r)' %
- (self._request.name(),
- window_bits,
- no_context_takeover,
- self._response_window_bits,
- self._response_no_context_takeover))
-
- return response
-
- def _setup_stream_options_internal(self, stream_options):
-
- class _OutgoingFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
-
- def filter(self, frame):
- self._parent._outgoing_filter(frame)
-
- class _IncomingFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
-
- def filter(self, frame):
- self._parent._incoming_filter(frame)
-
- stream_options.outgoing_frame_filters.append(
- _OutgoingFilter(self))
- stream_options.incoming_frame_filters.insert(
- 0, _IncomingFilter(self))
-
- def set_response_window_bits(self, value):
- self._response_window_bits = value
-
- def set_response_no_context_takeover(self, value):
- self._response_no_context_takeover = value
-
- def set_bfinal(self, value):
- self._bfinal = value
-
- def enable_outgoing_compression(self):
- self._compress_outgoing = True
-
- def disable_outgoing_compression(self):
- self._compress_outgoing = False
-
- def _outgoing_filter(self, frame):
- """Transform outgoing frames. This method is called only by
- an _OutgoingFilter instance.
- """
-
- original_payload_size = len(frame.payload)
- self._outgoing_average_ratio_calculator.add_original_bytes(
- original_payload_size)
-
- if (not self._compress_outgoing or
- common.is_control_opcode(frame.opcode)):
- self._outgoing_average_ratio_calculator.add_result_bytes(
- original_payload_size)
- return
-
- frame.payload = self._rfc1979_deflater.filter(
- frame.payload, bfinal=self._bfinal)
- frame.rsv1 = 1
-
- filtered_payload_size = len(frame.payload)
- self._outgoing_average_ratio_calculator.add_result_bytes(
- filtered_payload_size)
-
- _log_outgoing_compression_ratio(
- self._logger,
- original_payload_size,
- filtered_payload_size,
- self._outgoing_average_ratio_calculator.get_average_ratio())
-
- def _incoming_filter(self, frame):
- """Transform incoming frames. This method is called only by
- an _IncomingFilter instance.
- """
-
- received_payload_size = len(frame.payload)
- self._incoming_average_ratio_calculator.add_result_bytes(
- received_payload_size)
-
- if frame.rsv1 != 1 or common.is_control_opcode(frame.opcode):
- self._incoming_average_ratio_calculator.add_original_bytes(
- received_payload_size)
- return
-
- frame.payload = self._rfc1979_inflater.filter(frame.payload)
- frame.rsv1 = 0
-
- filtered_payload_size = len(frame.payload)
- self._incoming_average_ratio_calculator.add_original_bytes(
- filtered_payload_size)
-
- _log_incoming_compression_ratio(
- self._logger,
- received_payload_size,
- filtered_payload_size,
- self._incoming_average_ratio_calculator.get_average_ratio())
-
-
-_available_processors[common.DEFLATE_FRAME_EXTENSION] = (
- DeflateFrameExtensionProcessor)
-_compression_extension_names.append(common.DEFLATE_FRAME_EXTENSION)
-
-_available_processors[common.X_WEBKIT_DEFLATE_FRAME_EXTENSION] = (
- DeflateFrameExtensionProcessor)
-_compression_extension_names.append(common.X_WEBKIT_DEFLATE_FRAME_EXTENSION)
-
-
-def _parse_compression_method(data):
- """Parses the value of "method" extension parameter."""
-
- return common.parse_extensions(data, allow_quoted_string=True)
-
-
-def _create_accepted_method_desc(method_name, method_params):
- """Creates accepted-method-desc from given method name and parameters"""
-
- extension = common.ExtensionParameter(method_name)
- for name, value in method_params:
- extension.add_parameter(name, value)
- return common.format_extension(extension)
-
-
-class CompressionExtensionProcessorBase(ExtensionProcessorInterface):
- """Base class for perframe-compress and permessage-compress extension."""
-
- _METHOD_PARAM = 'method'
-
- def __init__(self, request):
- ExtensionProcessorInterface.__init__(self, request)
- self._logger = util.get_class_logger(self)
- self._compression_method_name = None
- self._compression_processor = None
- self._compression_processor_hook = None
-
- def name(self):
- return ''
-
- def _lookup_compression_processor(self, method_desc):
- return None
-
- def _get_compression_processor_response(self):
- """Looks up the compression processor based on the self._request and
- returns the compression processor's response.
- """
-
- method_list = self._request.get_parameter_value(self._METHOD_PARAM)
- if method_list is None:
- return None
- methods = _parse_compression_method(method_list)
- if methods is None:
- return None
- comression_processor = None
- # The current implementation tries only the first method that matches
- # supported algorithm. Following methods aren't tried even if the
- # first one is rejected.
- # TODO(bashi): Need to clarify this behavior.
- for method_desc in methods:
- compression_processor = self._lookup_compression_processor(
- method_desc)
- if compression_processor is not None:
- self._compression_method_name = method_desc.name()
- break
- if compression_processor is None:
- return None
-
- if self._compression_processor_hook:
- self._compression_processor_hook(compression_processor)
-
- processor_response = compression_processor.get_extension_response()
- if processor_response is None:
- return None
- self._compression_processor = compression_processor
- return processor_response
-
- def _get_extension_response_internal(self):
- processor_response = self._get_compression_processor_response()
- if processor_response is None:
- return None
-
- response = common.ExtensionParameter(self._request.name())
- accepted_method_desc = _create_accepted_method_desc(
- self._compression_method_name,
- processor_response.get_parameters())
- response.add_parameter(self._METHOD_PARAM, accepted_method_desc)
- self._logger.debug(
- 'Enable %s extension (method: %s)' %
- (self._request.name(), self._compression_method_name))
- return response
-
- def _setup_stream_options_internal(self, stream_options):
- if self._compression_processor is None:
- return
- self._compression_processor.setup_stream_options(stream_options)
-
- def set_compression_processor_hook(self, hook):
- self._compression_processor_hook = hook
-
- def get_compression_processor(self):
- return self._compression_processor
-
-
-class PerFrameCompressExtensionProcessor(CompressionExtensionProcessorBase):
- """perframe-compress processor.
-
- Specification:
- http://tools.ietf.org/html/draft-ietf-hybi-websocket-perframe-compression
- """
-
- _DEFLATE_METHOD = 'deflate'
-
- def __init__(self, request):
- CompressionExtensionProcessorBase.__init__(self, request)
-
- def name(self):
- return common.PERFRAME_COMPRESSION_EXTENSION
-
- def _lookup_compression_processor(self, method_desc):
- if method_desc.name() == self._DEFLATE_METHOD:
- return DeflateFrameExtensionProcessor(method_desc)
- return None
-
-
-_available_processors[common.PERFRAME_COMPRESSION_EXTENSION] = (
- PerFrameCompressExtensionProcessor)
-_compression_extension_names.append(common.PERFRAME_COMPRESSION_EXTENSION)
-
-
-class PerMessageDeflateExtensionProcessor(ExtensionProcessorInterface):
- """permessage-deflate extension processor. It's also used for
- permessage-compress extension when the deflate method is chosen.
-
- Specification:
- http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression-08
- """
-
- _S2C_MAX_WINDOW_BITS_PARAM = 's2c_max_window_bits'
- _S2C_NO_CONTEXT_TAKEOVER_PARAM = 's2c_no_context_takeover'
- _C2S_MAX_WINDOW_BITS_PARAM = 'c2s_max_window_bits'
- _C2S_NO_CONTEXT_TAKEOVER_PARAM = 'c2s_no_context_takeover'
-
- def __init__(self, request, draft08=True):
- """Construct PerMessageDeflateExtensionProcessor
-
- Args:
- draft08: Follow the constraints on the parameters that were not
- specified for permessage-compress but are specified for
- permessage-deflate as on
- draft-ietf-hybi-permessage-compression-08.
- """
-
- ExtensionProcessorInterface.__init__(self, request)
- self._logger = util.get_class_logger(self)
-
- self._c2s_max_window_bits = None
- self._c2s_no_context_takeover = False
-
- self._draft08 = draft08
-
- def name(self):
- return 'deflate'
-
- def _get_extension_response_internal(self):
- if self._draft08:
- for name in self._request.get_parameter_names():
- if name not in [self._S2C_MAX_WINDOW_BITS_PARAM,
- self._S2C_NO_CONTEXT_TAKEOVER_PARAM,
- self._C2S_MAX_WINDOW_BITS_PARAM]:
- self._logger.debug('Unknown parameter: %r', name)
- return None
- else:
- # Any unknown parameter will be just ignored.
- pass
-
- s2c_max_window_bits = None
- if self._request.has_parameter(self._S2C_MAX_WINDOW_BITS_PARAM):
- s2c_max_window_bits = self._request.get_parameter_value(
- self._S2C_MAX_WINDOW_BITS_PARAM)
- try:
- s2c_max_window_bits = _parse_window_bits(s2c_max_window_bits)
- except ValueError, e:
- self._logger.debug('Bad %s parameter: %r',
- self._S2C_MAX_WINDOW_BITS_PARAM,
- e)
- return None
-
- s2c_no_context_takeover = self._request.has_parameter(
- self._S2C_NO_CONTEXT_TAKEOVER_PARAM)
- if (s2c_no_context_takeover and
- self._request.get_parameter_value(
- self._S2C_NO_CONTEXT_TAKEOVER_PARAM) is not None):
- self._logger.debug('%s parameter must not have a value: %r',
- self._S2C_NO_CONTEXT_TAKEOVER_PARAM,
- s2c_no_context_takeover)
- return None
-
- c2s_max_window_bits = self._request.has_parameter(
- self._C2S_MAX_WINDOW_BITS_PARAM)
- if (self._draft08 and
- c2s_max_window_bits and
- self._request.get_parameter_value(
- self._C2S_MAX_WINDOW_BITS_PARAM) is not None):
- self._logger.debug('%s parameter must not have a value in a '
- 'client\'s opening handshake: %r',
- self._C2S_MAX_WINDOW_BITS_PARAM,
- c2s_max_window_bits)
- return None
-
- self._rfc1979_deflater = util._RFC1979Deflater(
- s2c_max_window_bits, s2c_no_context_takeover)
-
- self._rfc1979_inflater = util._RFC1979Inflater()
-
- self._framer = _PerMessageDeflateFramer(
- s2c_max_window_bits, s2c_no_context_takeover)
- self._framer.set_bfinal(False)
- self._framer.set_compress_outgoing_enabled(True)
-
- response = common.ExtensionParameter(self._request.name())
-
- if s2c_max_window_bits is not None:
- response.add_parameter(
- self._S2C_MAX_WINDOW_BITS_PARAM, str(s2c_max_window_bits))
-
- if s2c_no_context_takeover:
- response.add_parameter(
- self._S2C_NO_CONTEXT_TAKEOVER_PARAM, None)
-
- if self._c2s_max_window_bits is not None:
- if self._draft08 and c2s_max_window_bits:
- self._logger.debug('Processor is configured to use %s but '
- 'the client cannot accept it',
- self._C2S_MAX_WINDOW_BITS_PARAM)
- return None
- response.add_parameter(
- self._C2S_MAX_WINDOW_BITS_PARAM,
- str(self._c2s_max_window_bits))
-
- if self._c2s_no_context_takeover:
- response.add_parameter(
- self._C2S_NO_CONTEXT_TAKEOVER_PARAM, None)
-
- self._logger.debug(
- 'Enable %s extension ('
- 'request: s2c_max_window_bits=%s; s2c_no_context_takeover=%r, '
- 'response: c2s_max_window_bits=%s; c2s_no_context_takeover=%r)' %
- (self._request.name(),
- s2c_max_window_bits,
- s2c_no_context_takeover,
- self._c2s_max_window_bits,
- self._c2s_no_context_takeover))
-
- return response
-
- def _setup_stream_options_internal(self, stream_options):
- self._framer.setup_stream_options(stream_options)
-
- def set_c2s_max_window_bits(self, value):
- """If this option is specified, this class adds the c2s_max_window_bits
- extension parameter to the handshake response, but doesn't reduce the
- LZ77 sliding window size of its inflater. I.e., you can use this for
- testing client implementation but cannot reduce memory usage of this
- class.
-
- If this method has been called with True and an offer without the
- c2s_max_window_bits extension parameter is received,
- - (When processing the permessage-deflate extension) this processor
- declines the request.
- - (When processing the permessage-compress extension) this processor
- accepts the request.
- """
-
- self._c2s_max_window_bits = value
-
- def set_c2s_no_context_takeover(self, value):
- """If this option is specified, this class adds the
- c2s_no_context_takeover extension parameter to the handshake response,
- but doesn't reset inflater for each message. I.e., you can use this for
- testing client implementation but cannot reduce memory usage of this
- class.
- """
-
- self._c2s_no_context_takeover = value
-
- def set_bfinal(self, value):
- self._framer.set_bfinal(value)
-
- def enable_outgoing_compression(self):
- self._framer.set_compress_outgoing_enabled(True)
-
- def disable_outgoing_compression(self):
- self._framer.set_compress_outgoing_enabled(False)
-
-
-class _PerMessageDeflateFramer(object):
- """A framer for extensions with per-message DEFLATE feature."""
-
- def __init__(self, deflate_max_window_bits, deflate_no_context_takeover):
- self._logger = util.get_class_logger(self)
-
- self._rfc1979_deflater = util._RFC1979Deflater(
- deflate_max_window_bits, deflate_no_context_takeover)
-
- self._rfc1979_inflater = util._RFC1979Inflater()
-
- self._bfinal = False
-
- self._compress_outgoing_enabled = False
-
- # True if a message is fragmented and compression is ongoing.
- self._compress_ongoing = False
-
- # Calculates
- # (Total outgoing bytes supplied to this filter) /
- # (Total bytes sent to the network after applying this filter)
- self._outgoing_average_ratio_calculator = _AverageRatioCalculator()
-
- # Calculates
- # (Total bytes received from the network) /
- # (Total incoming bytes obtained after applying this filter)
- self._incoming_average_ratio_calculator = _AverageRatioCalculator()
-
- def set_bfinal(self, value):
- self._bfinal = value
-
- def set_compress_outgoing_enabled(self, value):
- self._compress_outgoing_enabled = value
-
- def _process_incoming_message(self, message, decompress):
- if not decompress:
- return message
-
- received_payload_size = len(message)
- self._incoming_average_ratio_calculator.add_result_bytes(
- received_payload_size)
-
- message = self._rfc1979_inflater.filter(message)
-
- filtered_payload_size = len(message)
- self._incoming_average_ratio_calculator.add_original_bytes(
- filtered_payload_size)
-
- _log_incoming_compression_ratio(
- self._logger,
- received_payload_size,
- filtered_payload_size,
- self._incoming_average_ratio_calculator.get_average_ratio())
-
- return message
-
- def _process_outgoing_message(self, message, end, binary):
- if not binary:
- message = message.encode('utf-8')
-
- if not self._compress_outgoing_enabled:
- return message
-
- original_payload_size = len(message)
- self._outgoing_average_ratio_calculator.add_original_bytes(
- original_payload_size)
-
- message = self._rfc1979_deflater.filter(
- message, flush=end, bfinal=self._bfinal)
-
- filtered_payload_size = len(message)
- self._outgoing_average_ratio_calculator.add_result_bytes(
- filtered_payload_size)
-
- _log_outgoing_compression_ratio(
- self._logger,
- original_payload_size,
- filtered_payload_size,
- self._outgoing_average_ratio_calculator.get_average_ratio())
-
- if not self._compress_ongoing:
- self._outgoing_frame_filter.set_compression_bit()
- self._compress_ongoing = not end
- return message
-
- def _process_incoming_frame(self, frame):
- if frame.rsv1 == 1 and not common.is_control_opcode(frame.opcode):
- self._incoming_message_filter.decompress_next_message()
- frame.rsv1 = 0
-
- def _process_outgoing_frame(self, frame, compression_bit):
- if (not compression_bit or
- common.is_control_opcode(frame.opcode)):
- return
-
- frame.rsv1 = 1
-
- def setup_stream_options(self, stream_options):
- """Creates filters and sets them to the StreamOptions."""
-
- class _OutgoingMessageFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
-
- def filter(self, message, end=True, binary=False):
- return self._parent._process_outgoing_message(
- message, end, binary)
-
- class _IncomingMessageFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
- self._decompress_next_message = False
-
- def decompress_next_message(self):
- self._decompress_next_message = True
-
- def filter(self, message):
- message = self._parent._process_incoming_message(
- message, self._decompress_next_message)
- self._decompress_next_message = False
- return message
-
- self._outgoing_message_filter = _OutgoingMessageFilter(self)
- self._incoming_message_filter = _IncomingMessageFilter(self)
- stream_options.outgoing_message_filters.append(
- self._outgoing_message_filter)
- stream_options.incoming_message_filters.append(
- self._incoming_message_filter)
-
- class _OutgoingFrameFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
- self._set_compression_bit = False
-
- def set_compression_bit(self):
- self._set_compression_bit = True
-
- def filter(self, frame):
- self._parent._process_outgoing_frame(
- frame, self._set_compression_bit)
- self._set_compression_bit = False
-
- class _IncomingFrameFilter(object):
-
- def __init__(self, parent):
- self._parent = parent
-
- def filter(self, frame):
- self._parent._process_incoming_frame(frame)
-
- self._outgoing_frame_filter = _OutgoingFrameFilter(self)
- self._incoming_frame_filter = _IncomingFrameFilter(self)
- stream_options.outgoing_frame_filters.append(
- self._outgoing_frame_filter)
- stream_options.incoming_frame_filters.append(
- self._incoming_frame_filter)
-
- stream_options.encode_text_message_to_utf8 = False
-
-
-_available_processors[common.PERMESSAGE_DEFLATE_EXTENSION] = (
- PerMessageDeflateExtensionProcessor)
-# TODO(tyoshino): Reorganize class names.
-_compression_extension_names.append('deflate')
-
-
-class PerMessageCompressExtensionProcessor(
- CompressionExtensionProcessorBase):
- """permessage-compress extension processor.
-
- Specification:
- http://tools.ietf.org/html/draft-ietf-hybi-permessage-compression
- """
-
- _DEFLATE_METHOD = 'deflate'
-
- def __init__(self, request):
- CompressionExtensionProcessorBase.__init__(self, request)
-
- def name(self):
- return common.PERMESSAGE_COMPRESSION_EXTENSION
-
- def _lookup_compression_processor(self, method_desc):
- if method_desc.name() == self._DEFLATE_METHOD:
- return PerMessageDeflateExtensionProcessor(method_desc, False)
- return None
-
-
-_available_processors[common.PERMESSAGE_COMPRESSION_EXTENSION] = (
- PerMessageCompressExtensionProcessor)
-_compression_extension_names.append(common.PERMESSAGE_COMPRESSION_EXTENSION)
-
-
-class MuxExtensionProcessor(ExtensionProcessorInterface):
- """WebSocket multiplexing extension processor."""
-
- _QUOTA_PARAM = 'quota'
-
- def __init__(self, request):
- ExtensionProcessorInterface.__init__(self, request)
- self._quota = 0
- self._extensions = []
-
- def name(self):
- return common.MUX_EXTENSION
-
- def check_consistency_with_other_processors(self, processors):
- before_mux = True
- for processor in processors:
- name = processor.name()
- if name == self.name():
- before_mux = False
- continue
- if not processor.is_active():
- continue
- if before_mux:
- # Mux extension cannot be used after extensions
- # that depend on frame boundary, extension data field, or any
- # reserved bits which are attributed to each frame.
- if (name == common.PERFRAME_COMPRESSION_EXTENSION or
- name == common.DEFLATE_FRAME_EXTENSION or
- name == common.X_WEBKIT_DEFLATE_FRAME_EXTENSION):
- self.set_active(False)
- return
- else:
- # Mux extension should not be applied before any history-based
- # compression extension.
- if (name == common.PERFRAME_COMPRESSION_EXTENSION or
- name == common.DEFLATE_FRAME_EXTENSION or
- name == common.X_WEBKIT_DEFLATE_FRAME_EXTENSION or
- name == common.PERMESSAGE_COMPRESSION_EXTENSION or
- name == common.X_WEBKIT_PERMESSAGE_COMPRESSION_EXTENSION):
- self.set_active(False)
- return
-
- def _get_extension_response_internal(self):
- self._active = False
- quota = self._request.get_parameter_value(self._QUOTA_PARAM)
- if quota is not None:
- try:
- quota = int(quota)
- except ValueError, e:
- return None
- if quota < 0 or quota >= 2 ** 32:
- return None
- self._quota = quota
-
- self._active = True
- return common.ExtensionParameter(common.MUX_EXTENSION)
-
- def _setup_stream_options_internal(self, stream_options):
- pass
-
- def set_quota(self, quota):
- self._quota = quota
-
- def quota(self):
- return self._quota
-
- def set_extensions(self, extensions):
- self._extensions = extensions
-
- def extensions(self):
- return self._extensions
-
-
-_available_processors[common.MUX_EXTENSION] = MuxExtensionProcessor
-
-
-def get_extension_processor(extension_request):
- processor_class = _available_processors.get(extension_request.name())
- if processor_class is None:
- return None
- return processor_class(extension_request)
-
-
-def is_compression_extension(extension_name):
- return extension_name in _compression_extension_names
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py
deleted file mode 100644
index 194f6b395..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/__init__.py
+++ /dev/null
@@ -1,110 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""WebSocket opening handshake processor. This class try to apply available
-opening handshake processors for each protocol version until a connection is
-successfully established.
-"""
-
-
-import logging
-
-from mod_pywebsocket import common
-from mod_pywebsocket.handshake import hybi00
-from mod_pywebsocket.handshake import hybi
-# Export AbortedByUserException, HandshakeException, and VersionException
-# symbol from this module.
-from mod_pywebsocket.handshake._base import AbortedByUserException
-from mod_pywebsocket.handshake._base import HandshakeException
-from mod_pywebsocket.handshake._base import VersionException
-
-
-_LOGGER = logging.getLogger(__name__)
-
-
-def do_handshake(request, dispatcher, allowDraft75=False, strict=False):
- """Performs WebSocket handshake.
-
- Args:
- request: mod_python request.
- dispatcher: Dispatcher (dispatch.Dispatcher).
- allowDraft75: obsolete argument. ignored.
- strict: obsolete argument. ignored.
-
- Handshaker will add attributes such as ws_resource in performing
- handshake.
- """
-
- _LOGGER.debug('Client\'s opening handshake resource: %r', request.uri)
- # To print mimetools.Message as escaped one-line string, we converts
- # headers_in to dict object. Without conversion, if we use %r, it just
- # prints the type and address, and if we use %s, it prints the original
- # header string as multiple lines.
- #
- # Both mimetools.Message and MpTable_Type of mod_python can be
- # converted to dict.
- #
- # mimetools.Message.__str__ returns the original header string.
- # dict(mimetools.Message object) returns the map from header names to
- # header values. While MpTable_Type doesn't have such __str__ but just
- # __repr__ which formats itself as well as dictionary object.
- _LOGGER.debug(
- 'Client\'s opening handshake headers: %r', dict(request.headers_in))
-
- handshakers = []
- handshakers.append(
- ('RFC 6455', hybi.Handshaker(request, dispatcher)))
- handshakers.append(
- ('HyBi 00', hybi00.Handshaker(request, dispatcher)))
-
- for name, handshaker in handshakers:
- _LOGGER.debug('Trying protocol version %s', name)
- try:
- handshaker.do_handshake()
- _LOGGER.info('Established (%s protocol)', name)
- return
- except HandshakeException, e:
- _LOGGER.debug(
- 'Failed to complete opening handshake as %s protocol: %r',
- name, e)
- if e.status:
- raise e
- except AbortedByUserException, e:
- raise
- except VersionException, e:
- raise
-
- # TODO(toyoshim): Add a test to cover the case all handshakers fail.
- raise HandshakeException(
- 'Failed to complete opening handshake for all available protocols',
- status=common.HTTP_STATUS_BAD_REQUEST)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py
deleted file mode 100644
index c993a584b..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/_base.py
+++ /dev/null
@@ -1,182 +0,0 @@
-# Copyright 2012, 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.
-
-
-"""Common functions and exceptions used by WebSocket opening handshake
-processors.
-"""
-
-
-from mod_pywebsocket import common
-from mod_pywebsocket import http_header_util
-
-
-class AbortedByUserException(Exception):
- """Exception for aborting a connection intentionally.
-
- If this exception is raised in do_extra_handshake handler, the connection
- will be abandoned. No other WebSocket or HTTP(S) handler will be invoked.
-
- If this exception is raised in transfer_data_handler, the connection will
- be closed without closing handshake. No other WebSocket or HTTP(S) handler
- will be invoked.
- """
-
- pass
-
-
-class HandshakeException(Exception):
- """This exception will be raised when an error occurred while processing
- WebSocket initial handshake.
- """
-
- def __init__(self, name, status=None):
- super(HandshakeException, self).__init__(name)
- self.status = status
-
-
-class VersionException(Exception):
- """This exception will be raised when a version of client request does not
- match with version the server supports.
- """
-
- def __init__(self, name, supported_versions=''):
- """Construct an instance.
-
- Args:
- supported_version: a str object to show supported hybi versions.
- (e.g. '8, 13')
- """
- super(VersionException, self).__init__(name)
- self.supported_versions = supported_versions
-
-
-def get_default_port(is_secure):
- if is_secure:
- return common.DEFAULT_WEB_SOCKET_SECURE_PORT
- else:
- return common.DEFAULT_WEB_SOCKET_PORT
-
-
-def validate_subprotocol(subprotocol):
- """Validate a value in the Sec-WebSocket-Protocol field.
-
- See the Section 4.1., 4.2.2., and 4.3. of RFC 6455.
- """
-
- if not subprotocol:
- raise HandshakeException('Invalid subprotocol name: empty')
-
- # Parameter should be encoded HTTP token.
- state = http_header_util.ParsingState(subprotocol)
- token = http_header_util.consume_token(state)
- rest = http_header_util.peek(state)
- # If |rest| is not None, |subprotocol| is not one token or invalid. If
- # |rest| is None, |token| must not be None because |subprotocol| is
- # concatenation of |token| and |rest| and is not None.
- if rest is not None:
- raise HandshakeException('Invalid non-token string in subprotocol '
- 'name: %r' % rest)
-
-
-def parse_host_header(request):
- fields = request.headers_in[common.HOST_HEADER].split(':', 1)
- if len(fields) == 1:
- return fields[0], get_default_port(request.is_https())
- try:
- return fields[0], int(fields[1])
- except ValueError, e:
- raise HandshakeException('Invalid port number format: %r' % e)
-
-
-def format_header(name, value):
- return '%s: %s\r\n' % (name, value)
-
-
-def get_mandatory_header(request, key):
- value = request.headers_in.get(key)
- if value is None:
- raise HandshakeException('Header %s is not defined' % key)
- return value
-
-
-def validate_mandatory_header(request, key, expected_value, fail_status=None):
- value = get_mandatory_header(request, key)
-
- if value.lower() != expected_value.lower():
- raise HandshakeException(
- 'Expected %r for header %s but found %r (case-insensitive)' %
- (expected_value, key, value), status=fail_status)
-
-
-def check_request_line(request):
- # 5.1 1. The three character UTF-8 string "GET".
- # 5.1 2. A UTF-8-encoded U+0020 SPACE character (0x20 byte).
- if request.method != 'GET':
- raise HandshakeException('Method is not GET: %r' % request.method)
-
- if request.protocol != 'HTTP/1.1':
- raise HandshakeException('Version is not HTTP/1.1: %r' %
- request.protocol)
-
-
-def parse_token_list(data):
- """Parses a header value which follows 1#token and returns parsed elements
- as a list of strings.
-
- Leading LWSes must be trimmed.
- """
-
- state = http_header_util.ParsingState(data)
-
- token_list = []
-
- while True:
- token = http_header_util.consume_token(state)
- if token is not None:
- token_list.append(token)
-
- http_header_util.consume_lwses(state)
-
- if http_header_util.peek(state) is None:
- break
-
- if not http_header_util.consume_string(state, ','):
- raise HandshakeException(
- 'Expected a comma but found %r' % http_header_util.peek(state))
-
- http_header_util.consume_lwses(state)
-
- if len(token_list) == 0:
- raise HandshakeException('No valid token found')
-
- return token_list
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py
deleted file mode 100644
index 1d54a662d..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi.py
+++ /dev/null
@@ -1,435 +0,0 @@
-# Copyright 2012, 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 file provides the opening handshake processor for the WebSocket
-protocol (RFC 6455).
-
-Specification:
-http://tools.ietf.org/html/rfc6455
-"""
-
-
-# Note: request.connection.write is used in this module, even though mod_python
-# document says that it should be used only in connection handlers.
-# Unfortunately, we have no other options. For example, request.write is not
-# suitable because it doesn't allow direct raw bytes writing.
-
-
-import base64
-import logging
-import os
-import re
-
-from mod_pywebsocket import common
-from mod_pywebsocket.extensions import get_extension_processor
-from mod_pywebsocket.extensions import is_compression_extension
-from mod_pywebsocket.handshake._base import check_request_line
-from mod_pywebsocket.handshake._base import format_header
-from mod_pywebsocket.handshake._base import get_mandatory_header
-from mod_pywebsocket.handshake._base import HandshakeException
-from mod_pywebsocket.handshake._base import parse_token_list
-from mod_pywebsocket.handshake._base import validate_mandatory_header
-from mod_pywebsocket.handshake._base import validate_subprotocol
-from mod_pywebsocket.handshake._base import VersionException
-from mod_pywebsocket.stream import Stream
-from mod_pywebsocket.stream import StreamOptions
-from mod_pywebsocket import util
-
-
-# Used to validate the value in the Sec-WebSocket-Key header strictly. RFC 4648
-# disallows non-zero padding, so the character right before == must be any of
-# A, Q, g and w.
-_SEC_WEBSOCKET_KEY_REGEX = re.compile('^[+/0-9A-Za-z]{21}[AQgw]==$')
-
-# Defining aliases for values used frequently.
-_VERSION_HYBI08 = common.VERSION_HYBI08
-_VERSION_HYBI08_STRING = str(_VERSION_HYBI08)
-_VERSION_LATEST = common.VERSION_HYBI_LATEST
-_VERSION_LATEST_STRING = str(_VERSION_LATEST)
-_SUPPORTED_VERSIONS = [
- _VERSION_LATEST,
- _VERSION_HYBI08,
-]
-
-
-def compute_accept(key):
- """Computes value for the Sec-WebSocket-Accept header from value of the
- Sec-WebSocket-Key header.
- """
-
- accept_binary = util.sha1_hash(
- key + common.WEBSOCKET_ACCEPT_UUID).digest()
- accept = base64.b64encode(accept_binary)
-
- return (accept, accept_binary)
-
-
-class Handshaker(object):
- """Opening handshake processor for the WebSocket protocol (RFC 6455)."""
-
- def __init__(self, request, dispatcher):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- dispatcher: Dispatcher (dispatch.Dispatcher).
-
- Handshaker will add attributes such as ws_resource during handshake.
- """
-
- self._logger = util.get_class_logger(self)
-
- self._request = request
- self._dispatcher = dispatcher
-
- def _validate_connection_header(self):
- connection = get_mandatory_header(
- self._request, common.CONNECTION_HEADER)
-
- try:
- connection_tokens = parse_token_list(connection)
- except HandshakeException, e:
- raise HandshakeException(
- 'Failed to parse %s: %s' % (common.CONNECTION_HEADER, e))
-
- connection_is_valid = False
- for token in connection_tokens:
- if token.lower() == common.UPGRADE_CONNECTION_TYPE.lower():
- connection_is_valid = True
- break
- if not connection_is_valid:
- raise HandshakeException(
- '%s header doesn\'t contain "%s"' %
- (common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE))
-
- def do_handshake(self):
- self._request.ws_close_code = None
- self._request.ws_close_reason = None
-
- # Parsing.
-
- check_request_line(self._request)
-
- validate_mandatory_header(
- self._request,
- common.UPGRADE_HEADER,
- common.WEBSOCKET_UPGRADE_TYPE)
-
- self._validate_connection_header()
-
- self._request.ws_resource = self._request.uri
-
- unused_host = get_mandatory_header(self._request, common.HOST_HEADER)
-
- self._request.ws_version = self._check_version()
-
- # This handshake must be based on latest hybi. We are responsible to
- # fallback to HTTP on handshake failure as latest hybi handshake
- # specifies.
- try:
- self._get_origin()
- self._set_protocol()
- self._parse_extensions()
-
- # Key validation, response generation.
-
- key = self._get_key()
- (accept, accept_binary) = compute_accept(key)
- self._logger.debug(
- '%s: %r (%s)',
- common.SEC_WEBSOCKET_ACCEPT_HEADER,
- accept,
- util.hexify(accept_binary))
-
- self._logger.debug('Protocol version is RFC 6455')
-
- # Setup extension processors.
-
- processors = []
- if self._request.ws_requested_extensions is not None:
- for extension_request in self._request.ws_requested_extensions:
- processor = get_extension_processor(extension_request)
- # Unknown extension requests are just ignored.
- if processor is not None:
- processors.append(processor)
- self._request.ws_extension_processors = processors
-
- # List of extra headers. The extra handshake handler may add header
- # data as name/value pairs to this list and pywebsocket appends
- # them to the WebSocket handshake.
- self._request.extra_headers = []
-
- # Extra handshake handler may modify/remove processors.
- self._dispatcher.do_extra_handshake(self._request)
- processors = filter(lambda processor: processor is not None,
- self._request.ws_extension_processors)
-
- # Ask each processor if there are extensions on the request which
- # cannot co-exist. When processor decided other processors cannot
- # co-exist with it, the processor marks them (or itself) as
- # "inactive". The first extension processor has the right to
- # make the final call.
- for processor in reversed(processors):
- if processor.is_active():
- processor.check_consistency_with_other_processors(
- processors)
- processors = filter(lambda processor: processor.is_active(),
- processors)
-
- accepted_extensions = []
-
- # We need to take into account of mux extension here.
- # If mux extension exists:
- # - Remove processors of extensions for logical channel,
- # which are processors located before the mux processor
- # - Pass extension requests for logical channel to mux processor
- # - Attach the mux processor to the request. It will be referred
- # by dispatcher to see whether the dispatcher should use mux
- # handler or not.
- mux_index = -1
- for i, processor in enumerate(processors):
- if processor.name() == common.MUX_EXTENSION:
- mux_index = i
- break
- if mux_index >= 0:
- logical_channel_extensions = []
- for processor in processors[:mux_index]:
- logical_channel_extensions.append(processor.request())
- processor.set_active(False)
- self._request.mux_processor = processors[mux_index]
- self._request.mux_processor.set_extensions(
- logical_channel_extensions)
- processors = filter(lambda processor: processor.is_active(),
- processors)
-
- stream_options = StreamOptions()
-
- for index, processor in enumerate(processors):
- if not processor.is_active():
- continue
-
- extension_response = processor.get_extension_response()
- if extension_response is None:
- # Rejected.
- continue
-
- accepted_extensions.append(extension_response)
-
- processor.setup_stream_options(stream_options)
-
- if not is_compression_extension(processor.name()):
- continue
-
- # Inactivate all of the following compression extensions.
- for j in xrange(index + 1, len(processors)):
- if is_compression_extension(processors[j].name()):
- processors[j].set_active(False)
-
- if len(accepted_extensions) > 0:
- self._request.ws_extensions = accepted_extensions
- self._logger.debug(
- 'Extensions accepted: %r',
- map(common.ExtensionParameter.name, accepted_extensions))
- else:
- self._request.ws_extensions = None
-
- self._request.ws_stream = self._create_stream(stream_options)
-
- if self._request.ws_requested_protocols is not None:
- if self._request.ws_protocol is None:
- raise HandshakeException(
- 'do_extra_handshake must choose one subprotocol from '
- 'ws_requested_protocols and set it to ws_protocol')
- validate_subprotocol(self._request.ws_protocol)
-
- self._logger.debug(
- 'Subprotocol accepted: %r',
- self._request.ws_protocol)
- else:
- if self._request.ws_protocol is not None:
- raise HandshakeException(
- 'ws_protocol must be None when the client didn\'t '
- 'request any subprotocol')
-
- self._send_handshake(accept)
- except HandshakeException, e:
- if not e.status:
- # Fallback to 400 bad request by default.
- e.status = common.HTTP_STATUS_BAD_REQUEST
- raise e
-
- def _get_origin(self):
- if self._request.ws_version is _VERSION_HYBI08:
- origin_header = common.SEC_WEBSOCKET_ORIGIN_HEADER
- else:
- origin_header = common.ORIGIN_HEADER
- origin = self._request.headers_in.get(origin_header)
- if origin is None:
- self._logger.debug('Client request does not have origin header')
- self._request.ws_origin = origin
-
- def _check_version(self):
- version = get_mandatory_header(self._request,
- common.SEC_WEBSOCKET_VERSION_HEADER)
- if version == _VERSION_HYBI08_STRING:
- return _VERSION_HYBI08
- if version == _VERSION_LATEST_STRING:
- return _VERSION_LATEST
-
- if version.find(',') >= 0:
- raise HandshakeException(
- 'Multiple versions (%r) are not allowed for header %s' %
- (version, common.SEC_WEBSOCKET_VERSION_HEADER),
- status=common.HTTP_STATUS_BAD_REQUEST)
- raise VersionException(
- 'Unsupported version %r for header %s' %
- (version, common.SEC_WEBSOCKET_VERSION_HEADER),
- supported_versions=', '.join(map(str, _SUPPORTED_VERSIONS)))
-
- def _set_protocol(self):
- self._request.ws_protocol = None
-
- protocol_header = self._request.headers_in.get(
- common.SEC_WEBSOCKET_PROTOCOL_HEADER)
-
- if protocol_header is None:
- self._request.ws_requested_protocols = None
- return
-
- self._request.ws_requested_protocols = parse_token_list(
- protocol_header)
- self._logger.debug('Subprotocols requested: %r',
- self._request.ws_requested_protocols)
-
- def _parse_extensions(self):
- extensions_header = self._request.headers_in.get(
- common.SEC_WEBSOCKET_EXTENSIONS_HEADER)
- if not extensions_header:
- self._request.ws_requested_extensions = None
- return
-
- if self._request.ws_version is common.VERSION_HYBI08:
- allow_quoted_string=False
- else:
- allow_quoted_string=True
- try:
- self._request.ws_requested_extensions = common.parse_extensions(
- extensions_header, allow_quoted_string=allow_quoted_string)
- except common.ExtensionParsingException, e:
- raise HandshakeException(
- 'Failed to parse Sec-WebSocket-Extensions header: %r' % e)
-
- self._logger.debug(
- 'Extensions requested: %r',
- map(common.ExtensionParameter.name,
- self._request.ws_requested_extensions))
-
- def _validate_key(self, key):
- if key.find(',') >= 0:
- raise HandshakeException('Request has multiple %s header lines or '
- 'contains illegal character \',\': %r' %
- (common.SEC_WEBSOCKET_KEY_HEADER, key))
-
- # Validate
- key_is_valid = False
- try:
- # Validate key by quick regex match before parsing by base64
- # module. Because base64 module skips invalid characters, we have
- # to do this in advance to make this server strictly reject illegal
- # keys.
- if _SEC_WEBSOCKET_KEY_REGEX.match(key):
- decoded_key = base64.b64decode(key)
- if len(decoded_key) == 16:
- key_is_valid = True
- except TypeError, e:
- pass
-
- if not key_is_valid:
- raise HandshakeException(
- 'Illegal value for header %s: %r' %
- (common.SEC_WEBSOCKET_KEY_HEADER, key))
-
- return decoded_key
-
- def _get_key(self):
- key = get_mandatory_header(
- self._request, common.SEC_WEBSOCKET_KEY_HEADER)
-
- decoded_key = self._validate_key(key)
-
- self._logger.debug(
- '%s: %r (%s)',
- common.SEC_WEBSOCKET_KEY_HEADER,
- key,
- util.hexify(decoded_key))
-
- return key
-
- def _create_stream(self, stream_options):
- return Stream(self._request, stream_options)
-
- def _create_handshake_response(self, accept):
- response = []
-
- response.append('HTTP/1.1 101 Switching Protocols\r\n')
-
- # WebSocket headers
- response.append(format_header(
- common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE))
- response.append(format_header(
- common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE))
- response.append(format_header(
- common.SEC_WEBSOCKET_ACCEPT_HEADER, accept))
- if self._request.ws_protocol is not None:
- response.append(format_header(
- common.SEC_WEBSOCKET_PROTOCOL_HEADER,
- self._request.ws_protocol))
- if (self._request.ws_extensions is not None and
- len(self._request.ws_extensions) != 0):
- response.append(format_header(
- common.SEC_WEBSOCKET_EXTENSIONS_HEADER,
- common.format_extensions(self._request.ws_extensions)))
-
- # Headers not specific for WebSocket
- for name, value in self._request.extra_headers:
- response.append(format_header(name, value))
-
- response.append('\r\n')
-
- return ''.join(response)
-
- def _send_handshake(self, accept):
- raw_response = self._create_handshake_response(accept)
- self._request.connection.write(raw_response)
- self._logger.debug('Sent server\'s opening handshake: %r',
- raw_response)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py
deleted file mode 100644
index 8757717a6..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/handshake/hybi00.py
+++ /dev/null
@@ -1,293 +0,0 @@
-# Copyright 2011, 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 file provides the opening handshake processor for the WebSocket
-protocol version HyBi 00.
-
-Specification:
-http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-00
-"""
-
-
-# Note: request.connection.write/read are used in this module, even though
-# mod_python document says that they should be used only in connection
-# handlers. Unfortunately, we have no other options. For example,
-# request.write/read are not suitable because they don't allow direct raw bytes
-# writing/reading.
-
-
-import logging
-import re
-import struct
-
-from mod_pywebsocket import common
-from mod_pywebsocket.stream import StreamHixie75
-from mod_pywebsocket import util
-from mod_pywebsocket.handshake._base import HandshakeException
-from mod_pywebsocket.handshake._base import check_request_line
-from mod_pywebsocket.handshake._base import format_header
-from mod_pywebsocket.handshake._base import get_default_port
-from mod_pywebsocket.handshake._base import get_mandatory_header
-from mod_pywebsocket.handshake._base import parse_host_header
-from mod_pywebsocket.handshake._base import validate_mandatory_header
-
-
-_MANDATORY_HEADERS = [
- # key, expected value or None
- [common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE_HIXIE75],
- [common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE],
-]
-
-
-def _validate_subprotocol(subprotocol):
- """Checks if characters in subprotocol are in range between U+0020 and
- U+007E. A value in the Sec-WebSocket-Protocol field need to satisfy this
- requirement.
-
- See the Section 4.1. Opening handshake of the spec.
- """
-
- if not subprotocol:
- raise HandshakeException('Invalid subprotocol name: empty')
-
- # Parameter should be in the range U+0020 to U+007E.
- for c in subprotocol:
- if not 0x20 <= ord(c) <= 0x7e:
- raise HandshakeException(
- 'Illegal character in subprotocol name: %r' % c)
-
-
-def _check_header_lines(request, mandatory_headers):
- check_request_line(request)
-
- # The expected field names, and the meaning of their corresponding
- # values, are as follows.
- # |Upgrade| and |Connection|
- for key, expected_value in mandatory_headers:
- validate_mandatory_header(request, key, expected_value)
-
-
-def _build_location(request):
- """Build WebSocket location for request."""
-
- location_parts = []
- if request.is_https():
- location_parts.append(common.WEB_SOCKET_SECURE_SCHEME)
- else:
- location_parts.append(common.WEB_SOCKET_SCHEME)
- location_parts.append('://')
- host, port = parse_host_header(request)
- connection_port = request.connection.local_addr[1]
- if port != connection_port:
- raise HandshakeException('Header/connection port mismatch: %d/%d' %
- (port, connection_port))
- location_parts.append(host)
- if (port != get_default_port(request.is_https())):
- location_parts.append(':')
- location_parts.append(str(port))
- location_parts.append(request.unparsed_uri)
- return ''.join(location_parts)
-
-
-class Handshaker(object):
- """Opening handshake processor for the WebSocket protocol version HyBi 00.
- """
-
- def __init__(self, request, dispatcher):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- dispatcher: Dispatcher (dispatch.Dispatcher).
-
- Handshaker will add attributes such as ws_resource in performing
- handshake.
- """
-
- self._logger = util.get_class_logger(self)
-
- self._request = request
- self._dispatcher = dispatcher
-
- def do_handshake(self):
- """Perform WebSocket Handshake.
-
- On _request, we set
- ws_resource, ws_protocol, ws_location, ws_origin, ws_challenge,
- ws_challenge_md5: WebSocket handshake information.
- ws_stream: Frame generation/parsing class.
- ws_version: Protocol version.
-
- Raises:
- HandshakeException: when any error happened in parsing the opening
- handshake request.
- """
-
- # 5.1 Reading the client's opening handshake.
- # dispatcher sets it in self._request.
- _check_header_lines(self._request, _MANDATORY_HEADERS)
- self._set_resource()
- self._set_subprotocol()
- self._set_location()
- self._set_origin()
- self._set_challenge_response()
- self._set_protocol_version()
-
- self._dispatcher.do_extra_handshake(self._request)
-
- self._send_handshake()
-
- def _set_resource(self):
- self._request.ws_resource = self._request.uri
-
- def _set_subprotocol(self):
- # |Sec-WebSocket-Protocol|
- subprotocol = self._request.headers_in.get(
- common.SEC_WEBSOCKET_PROTOCOL_HEADER)
- if subprotocol is not None:
- _validate_subprotocol(subprotocol)
- self._request.ws_protocol = subprotocol
-
- def _set_location(self):
- # |Host|
- host = self._request.headers_in.get(common.HOST_HEADER)
- if host is not None:
- self._request.ws_location = _build_location(self._request)
- # TODO(ukai): check host is this host.
-
- def _set_origin(self):
- # |Origin|
- origin = self._request.headers_in.get(common.ORIGIN_HEADER)
- if origin is not None:
- self._request.ws_origin = origin
-
- def _set_protocol_version(self):
- # |Sec-WebSocket-Draft|
- draft = self._request.headers_in.get(common.SEC_WEBSOCKET_DRAFT_HEADER)
- if draft is not None and draft != '0':
- raise HandshakeException('Illegal value for %s: %s' %
- (common.SEC_WEBSOCKET_DRAFT_HEADER,
- draft))
-
- self._logger.debug('Protocol version is HyBi 00')
- self._request.ws_version = common.VERSION_HYBI00
- self._request.ws_stream = StreamHixie75(self._request, True)
-
- def _set_challenge_response(self):
- # 5.2 4-8.
- self._request.ws_challenge = self._get_challenge()
- # 5.2 9. let /response/ be the MD5 finterprint of /challenge/
- self._request.ws_challenge_md5 = util.md5_hash(
- self._request.ws_challenge).digest()
- self._logger.debug(
- 'Challenge: %r (%s)',
- self._request.ws_challenge,
- util.hexify(self._request.ws_challenge))
- self._logger.debug(
- 'Challenge response: %r (%s)',
- self._request.ws_challenge_md5,
- util.hexify(self._request.ws_challenge_md5))
-
- def _get_key_value(self, key_field):
- key_value = get_mandatory_header(self._request, key_field)
-
- self._logger.debug('%s: %r', key_field, key_value)
-
- # 5.2 4. let /key-number_n/ be the digits (characters in the range
- # U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE (9)) in /key_n/,
- # interpreted as a base ten integer, ignoring all other characters
- # in /key_n/.
- try:
- key_number = int(re.sub("\\D", "", key_value))
- except:
- raise HandshakeException('%s field contains no digit' % key_field)
- # 5.2 5. let /spaces_n/ be the number of U+0020 SPACE characters
- # in /key_n/.
- spaces = re.subn(" ", "", key_value)[1]
- if spaces == 0:
- raise HandshakeException('%s field contains no space' % key_field)
-
- self._logger.debug(
- '%s: Key-number is %d and number of spaces is %d',
- key_field, key_number, spaces)
-
- # 5.2 6. if /key-number_n/ is not an integral multiple of /spaces_n/
- # then abort the WebSocket connection.
- if key_number % spaces != 0:
- raise HandshakeException(
- '%s: Key-number (%d) is not an integral multiple of spaces '
- '(%d)' % (key_field, key_number, spaces))
- # 5.2 7. let /part_n/ be /key-number_n/ divided by /spaces_n/.
- part = key_number / spaces
- self._logger.debug('%s: Part is %d', key_field, part)
- return part
-
- def _get_challenge(self):
- # 5.2 4-7.
- key1 = self._get_key_value(common.SEC_WEBSOCKET_KEY1_HEADER)
- key2 = self._get_key_value(common.SEC_WEBSOCKET_KEY2_HEADER)
- # 5.2 8. let /challenge/ be the concatenation of /part_1/,
- challenge = ''
- challenge += struct.pack('!I', key1) # network byteorder int
- challenge += struct.pack('!I', key2) # network byteorder int
- challenge += self._request.connection.read(8)
- return challenge
-
- def _send_handshake(self):
- response = []
-
- # 5.2 10. send the following line.
- response.append('HTTP/1.1 101 WebSocket Protocol Handshake\r\n')
-
- # 5.2 11. send the following fields to the client.
- response.append(format_header(
- common.UPGRADE_HEADER, common.WEBSOCKET_UPGRADE_TYPE_HIXIE75))
- response.append(format_header(
- common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE))
- response.append(format_header(
- common.SEC_WEBSOCKET_LOCATION_HEADER, self._request.ws_location))
- response.append(format_header(
- common.SEC_WEBSOCKET_ORIGIN_HEADER, self._request.ws_origin))
- if self._request.ws_protocol:
- response.append(format_header(
- common.SEC_WEBSOCKET_PROTOCOL_HEADER,
- self._request.ws_protocol))
- # 5.2 12. send two bytes 0x0D 0x0A.
- response.append('\r\n')
- # 5.2 13. send /response/
- response.append(self._request.ws_challenge_md5)
-
- raw_response = ''.join(response)
- self._request.connection.write(raw_response)
- self._logger.debug('Sent server\'s opening handshake: %r',
- raw_response)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py
deleted file mode 100644
index c244421cf..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/headerparserhandler.py
+++ /dev/null
@@ -1,254 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""PythonHeaderParserHandler for mod_pywebsocket.
-
-Apache HTTP Server and mod_python must be configured such that this
-function is called to handle WebSocket request.
-"""
-
-
-import logging
-
-from mod_python import apache
-
-from mod_pywebsocket import common
-from mod_pywebsocket import dispatch
-from mod_pywebsocket import handshake
-from mod_pywebsocket import util
-
-
-# PythonOption to specify the handler root directory.
-_PYOPT_HANDLER_ROOT = 'mod_pywebsocket.handler_root'
-
-# PythonOption to specify the handler scan directory.
-# This must be a directory under the root directory.
-# The default is the root directory.
-_PYOPT_HANDLER_SCAN = 'mod_pywebsocket.handler_scan'
-
-# PythonOption to allow handlers whose canonical path is
-# not under the root directory. It's disallowed by default.
-# Set this option with value of 'yes' to allow.
-_PYOPT_ALLOW_HANDLERS_OUTSIDE_ROOT = (
- 'mod_pywebsocket.allow_handlers_outside_root_dir')
-# Map from values to their meanings. 'Yes' and 'No' are allowed just for
-# compatibility.
-_PYOPT_ALLOW_HANDLERS_OUTSIDE_ROOT_DEFINITION = {
- 'off': False, 'no': False, 'on': True, 'yes': True}
-
-# (Obsolete option. Ignored.)
-# PythonOption to specify to allow handshake defined in Hixie 75 version
-# protocol. The default is None (Off)
-_PYOPT_ALLOW_DRAFT75 = 'mod_pywebsocket.allow_draft75'
-# Map from values to their meanings.
-_PYOPT_ALLOW_DRAFT75_DEFINITION = {'off': False, 'on': True}
-
-
-class ApacheLogHandler(logging.Handler):
- """Wrapper logging.Handler to emit log message to apache's error.log."""
-
- _LEVELS = {
- logging.DEBUG: apache.APLOG_DEBUG,
- logging.INFO: apache.APLOG_INFO,
- logging.WARNING: apache.APLOG_WARNING,
- logging.ERROR: apache.APLOG_ERR,
- logging.CRITICAL: apache.APLOG_CRIT,
- }
-
- def __init__(self, request=None):
- logging.Handler.__init__(self)
- self._log_error = apache.log_error
- if request is not None:
- self._log_error = request.log_error
-
- # Time and level will be printed by Apache.
- self._formatter = logging.Formatter('%(name)s: %(message)s')
-
- def emit(self, record):
- apache_level = apache.APLOG_DEBUG
- if record.levelno in ApacheLogHandler._LEVELS:
- apache_level = ApacheLogHandler._LEVELS[record.levelno]
-
- msg = self._formatter.format(record)
-
- # "server" parameter must be passed to have "level" parameter work.
- # If only "level" parameter is passed, nothing shows up on Apache's
- # log. However, at this point, we cannot get the server object of the
- # virtual host which will process WebSocket requests. The only server
- # object we can get here is apache.main_server. But Wherever (server
- # configuration context or virtual host context) we put
- # PythonHeaderParserHandler directive, apache.main_server just points
- # the main server instance (not any of virtual server instance). Then,
- # Apache follows LogLevel directive in the server configuration context
- # to filter logs. So, we need to specify LogLevel in the server
- # configuration context. Even if we specify "LogLevel debug" in the
- # virtual host context which actually handles WebSocket connections,
- # DEBUG level logs never show up unless "LogLevel debug" is specified
- # in the server configuration context.
- #
- # TODO(tyoshino): Provide logging methods on request object. When
- # request is mp_request object (when used together with Apache), the
- # methods call request.log_error indirectly. When request is
- # _StandaloneRequest, the methods call Python's logging facility which
- # we create in standalone.py.
- self._log_error(msg, apache_level, apache.main_server)
-
-
-def _configure_logging():
- logger = logging.getLogger()
- # Logs are filtered by Apache based on LogLevel directive in Apache
- # configuration file. We must just pass logs for all levels to
- # ApacheLogHandler.
- logger.setLevel(logging.DEBUG)
- logger.addHandler(ApacheLogHandler())
-
-
-_configure_logging()
-
-_LOGGER = logging.getLogger(__name__)
-
-
-def _parse_option(name, value, definition):
- if value is None:
- return False
-
- meaning = definition.get(value.lower())
- if meaning is None:
- raise Exception('Invalid value for PythonOption %s: %r' %
- (name, value))
- return meaning
-
-
-def _create_dispatcher():
- _LOGGER.info('Initializing Dispatcher')
-
- options = apache.main_server.get_options()
-
- handler_root = options.get(_PYOPT_HANDLER_ROOT, None)
- if not handler_root:
- raise Exception('PythonOption %s is not defined' % _PYOPT_HANDLER_ROOT,
- apache.APLOG_ERR)
-
- handler_scan = options.get(_PYOPT_HANDLER_SCAN, handler_root)
-
- allow_handlers_outside_root = _parse_option(
- _PYOPT_ALLOW_HANDLERS_OUTSIDE_ROOT,
- options.get(_PYOPT_ALLOW_HANDLERS_OUTSIDE_ROOT),
- _PYOPT_ALLOW_HANDLERS_OUTSIDE_ROOT_DEFINITION)
-
- dispatcher = dispatch.Dispatcher(
- handler_root, handler_scan, allow_handlers_outside_root)
-
- for warning in dispatcher.source_warnings():
- apache.log_error(
- 'mod_pywebsocket: Warning in source loading: %s' % warning,
- apache.APLOG_WARNING)
-
- return dispatcher
-
-
-# Initialize
-_dispatcher = _create_dispatcher()
-
-
-def headerparserhandler(request):
- """Handle request.
-
- Args:
- request: mod_python request.
-
- This function is named headerparserhandler because it is the default
- name for a PythonHeaderParserHandler.
- """
-
- handshake_is_done = False
- try:
- # Fallback to default http handler for request paths for which
- # we don't have request handlers.
- if not _dispatcher.get_handler_suite(request.uri):
- request.log_error(
- 'mod_pywebsocket: No handler for resource: %r' % request.uri,
- apache.APLOG_INFO)
- request.log_error(
- 'mod_pywebsocket: Fallback to Apache', apache.APLOG_INFO)
- return apache.DECLINED
- except dispatch.DispatchException, e:
- request.log_error(
- 'mod_pywebsocket: Dispatch failed for error: %s' % e,
- apache.APLOG_INFO)
- if not handshake_is_done:
- return e.status
-
- try:
- allow_draft75 = _parse_option(
- _PYOPT_ALLOW_DRAFT75,
- apache.main_server.get_options().get(_PYOPT_ALLOW_DRAFT75),
- _PYOPT_ALLOW_DRAFT75_DEFINITION)
-
- try:
- handshake.do_handshake(
- request, _dispatcher, allowDraft75=allow_draft75)
- except handshake.VersionException, e:
- request.log_error(
- 'mod_pywebsocket: Handshake failed for version error: %s' % e,
- apache.APLOG_INFO)
- request.err_headers_out.add(common.SEC_WEBSOCKET_VERSION_HEADER,
- e.supported_versions)
- return apache.HTTP_BAD_REQUEST
- except handshake.HandshakeException, e:
- # Handshake for ws/wss failed.
- # Send http response with error status.
- request.log_error(
- 'mod_pywebsocket: Handshake failed for error: %s' % e,
- apache.APLOG_INFO)
- return e.status
-
- handshake_is_done = True
- request._dispatcher = _dispatcher
- _dispatcher.transfer_data(request)
- except handshake.AbortedByUserException, e:
- request.log_error('mod_pywebsocket: Aborted: %s' % e, apache.APLOG_INFO)
- except Exception, e:
- # DispatchException can also be thrown if something is wrong in
- # pywebsocket code. It's caught here, then.
-
- request.log_error('mod_pywebsocket: Exception occurred: %s\n%s' %
- (e, util.get_stack_trace()),
- apache.APLOG_ERR)
- # Unknown exceptions before handshake mean Apache must handle its
- # request with another handler.
- if not handshake_is_done:
- return apache.DECLINED
- # Set assbackwards to suppress response header generation by Apache.
- request.assbackwards = 1
- return apache.DONE # Return DONE such that no other handlers are invoked.
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py
deleted file mode 100644
index b77465393..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/http_header_util.py
+++ /dev/null
@@ -1,263 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""Utilities for parsing and formatting headers that follow the grammar defined
-in HTTP RFC http://www.ietf.org/rfc/rfc2616.txt.
-"""
-
-
-import urlparse
-
-
-_SEPARATORS = '()<>@,;:\\"/[]?={} \t'
-
-
-def _is_char(c):
- """Returns true iff c is in CHAR as specified in HTTP RFC."""
-
- return ord(c) <= 127
-
-
-def _is_ctl(c):
- """Returns true iff c is in CTL as specified in HTTP RFC."""
-
- return ord(c) <= 31 or ord(c) == 127
-
-
-class ParsingState(object):
-
- def __init__(self, data):
- self.data = data
- self.head = 0
-
-
-def peek(state, pos=0):
- """Peeks the character at pos from the head of data."""
-
- if state.head + pos >= len(state.data):
- return None
-
- return state.data[state.head + pos]
-
-
-def consume(state, amount=1):
- """Consumes specified amount of bytes from the head and returns the
- consumed bytes. If there's not enough bytes to consume, returns None.
- """
-
- if state.head + amount > len(state.data):
- return None
-
- result = state.data[state.head:state.head + amount]
- state.head = state.head + amount
- return result
-
-
-def consume_string(state, expected):
- """Given a parsing state and a expected string, consumes the string from
- the head. Returns True if consumed successfully. Otherwise, returns
- False.
- """
-
- pos = 0
-
- for c in expected:
- if c != peek(state, pos):
- return False
- pos += 1
-
- consume(state, pos)
- return True
-
-
-def consume_lws(state):
- """Consumes a LWS from the head. Returns True if any LWS is consumed.
- Otherwise, returns False.
-
- LWS = [CRLF] 1*( SP | HT )
- """
-
- original_head = state.head
-
- consume_string(state, '\r\n')
-
- pos = 0
-
- while True:
- c = peek(state, pos)
- if c == ' ' or c == '\t':
- pos += 1
- else:
- if pos == 0:
- state.head = original_head
- return False
- else:
- consume(state, pos)
- return True
-
-
-def consume_lwses(state):
- """Consumes *LWS from the head."""
-
- while consume_lws(state):
- pass
-
-
-def consume_token(state):
- """Consumes a token from the head. Returns the token or None if no token
- was found.
- """
-
- pos = 0
-
- while True:
- c = peek(state, pos)
- if c is None or c in _SEPARATORS or _is_ctl(c) or not _is_char(c):
- if pos == 0:
- return None
-
- return consume(state, pos)
- else:
- pos += 1
-
-
-def consume_token_or_quoted_string(state):
- """Consumes a token or a quoted-string, and returns the token or unquoted
- string. If no token or quoted-string was found, returns None.
- """
-
- original_head = state.head
-
- if not consume_string(state, '"'):
- return consume_token(state)
-
- result = []
-
- expect_quoted_pair = False
-
- while True:
- if not expect_quoted_pair and consume_lws(state):
- result.append(' ')
- continue
-
- c = consume(state)
- if c is None:
- # quoted-string is not enclosed with double quotation
- state.head = original_head
- return None
- elif expect_quoted_pair:
- expect_quoted_pair = False
- if _is_char(c):
- result.append(c)
- else:
- # Non CHAR character found in quoted-pair
- state.head = original_head
- return None
- elif c == '\\':
- expect_quoted_pair = True
- elif c == '"':
- return ''.join(result)
- elif _is_ctl(c):
- # Invalid character %r found in qdtext
- state.head = original_head
- return None
- else:
- result.append(c)
-
-
-def quote_if_necessary(s):
- """Quotes arbitrary string into quoted-string."""
-
- quote = False
- if s == '':
- return '""'
-
- result = []
- for c in s:
- if c == '"' or c in _SEPARATORS or _is_ctl(c) or not _is_char(c):
- quote = True
-
- if c == '"' or _is_ctl(c):
- result.append('\\' + c)
- else:
- result.append(c)
-
- if quote:
- return '"' + ''.join(result) + '"'
- else:
- return ''.join(result)
-
-
-def parse_uri(uri):
- """Parse absolute URI then return host, port and resource."""
-
- parsed = urlparse.urlsplit(uri)
- if parsed.scheme != 'wss' and parsed.scheme != 'ws':
- # |uri| must be a relative URI.
- # TODO(toyoshim): Should validate |uri|.
- return None, None, uri
-
- if parsed.hostname is None:
- return None, None, None
-
- port = None
- try:
- port = parsed.port
- except ValueError, e:
- # port property cause ValueError on invalid null port description like
- # 'ws://host:/path'.
- return None, None, None
-
- if port is None:
- if parsed.scheme == 'ws':
- port = 80
- else:
- port = 443
-
- path = parsed.path
- if not path:
- path += '/'
- if parsed.query:
- path += '?' + parsed.query
- if parsed.fragment:
- path += '#' + parsed.fragment
-
- return parsed.hostname, port, path
-
-
-try:
- urlparse.uses_netloc.index('ws')
-except ValueError, e:
- # urlparse in Python2.5.1 doesn't have 'ws' and 'wss' entries.
- urlparse.uses_netloc.append('ws')
- urlparse.uses_netloc.append('wss')
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py
deleted file mode 100644
index 4d4cd9585..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/memorizingfile.py
+++ /dev/null
@@ -1,99 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2011, 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.
-
-
-"""Memorizing file.
-
-A memorizing file wraps a file and memorizes lines read by readline.
-"""
-
-
-import sys
-
-
-class MemorizingFile(object):
- """MemorizingFile wraps a file and memorizes lines read by readline.
-
- Note that data read by other methods are not memorized. This behavior
- is good enough for memorizing lines SimpleHTTPServer reads before
- the control reaches WebSocketRequestHandler.
- """
-
- def __init__(self, file_, max_memorized_lines=sys.maxint):
- """Construct an instance.
-
- Args:
- file_: the file object to wrap.
- max_memorized_lines: the maximum number of lines to memorize.
- Only the first max_memorized_lines are memorized.
- Default: sys.maxint.
- """
-
- self._file = file_
- self._memorized_lines = []
- self._max_memorized_lines = max_memorized_lines
- self._buffered = False
- self._buffered_line = None
-
- def __getattribute__(self, name):
- if name in ('_file', '_memorized_lines', '_max_memorized_lines',
- '_buffered', '_buffered_line', 'readline',
- 'get_memorized_lines'):
- return object.__getattribute__(self, name)
- return self._file.__getattribute__(name)
-
- def readline(self, size=-1):
- """Override file.readline and memorize the line read.
-
- Note that even if size is specified and smaller than actual size,
- the whole line will be read out from underlying file object by
- subsequent readline calls.
- """
-
- if self._buffered:
- line = self._buffered_line
- self._buffered = False
- else:
- line = self._file.readline()
- if line and len(self._memorized_lines) < self._max_memorized_lines:
- self._memorized_lines.append(line)
- if size >= 0 and size < len(line):
- self._buffered = True
- self._buffered_line = line[size:]
- return line[:size]
- return line
-
- def get_memorized_lines(self):
- """Get lines memorized so far."""
- return self._memorized_lines
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py
deleted file mode 100644
index 4c1a0114b..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/msgutil.py
+++ /dev/null
@@ -1,219 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""Message related utilities.
-
-Note: request.connection.write/read are used in this module, even though
-mod_python document says that they should be used only in connection
-handlers. Unfortunately, we have no other options. For example,
-request.write/read are not suitable because they don't allow direct raw
-bytes writing/reading.
-"""
-
-
-import Queue
-import threading
-
-
-# Export Exception symbols from msgutil for backward compatibility
-from mod_pywebsocket._stream_base import ConnectionTerminatedException
-from mod_pywebsocket._stream_base import InvalidFrameException
-from mod_pywebsocket._stream_base import BadOperationException
-from mod_pywebsocket._stream_base import UnsupportedFrameException
-
-
-# An API for handler to send/receive WebSocket messages.
-def close_connection(request):
- """Close connection.
-
- Args:
- request: mod_python request.
- """
- request.ws_stream.close_connection()
-
-
-def send_message(request, payload_data, end=True, binary=False):
- """Send a message (or part of a message).
-
- Args:
- request: mod_python request.
- payload_data: unicode text or str binary to send.
- end: True to terminate a message.
- False to send payload_data as part of a message that is to be
- terminated by next or later send_message call with end=True.
- binary: send payload_data as binary frame(s).
- Raises:
- BadOperationException: when server already terminated.
- """
- request.ws_stream.send_message(payload_data, end, binary)
-
-
-def receive_message(request):
- """Receive a WebSocket frame and return its payload as a text in
- unicode or a binary in str.
-
- Args:
- request: mod_python request.
- Raises:
- InvalidFrameException: when client send invalid frame.
- UnsupportedFrameException: when client send unsupported frame e.g. some
- of reserved bit is set but no extension can
- recognize it.
- InvalidUTF8Exception: when client send a text frame containing any
- invalid UTF-8 string.
- ConnectionTerminatedException: when the connection is closed
- unexpectedly.
- BadOperationException: when client already terminated.
- """
- return request.ws_stream.receive_message()
-
-
-def send_ping(request, body=''):
- request.ws_stream.send_ping(body)
-
-
-class MessageReceiver(threading.Thread):
- """This class receives messages from the client.
-
- This class provides three ways to receive messages: blocking,
- non-blocking, and via callback. Callback has the highest precedence.
-
- Note: This class should not be used with the standalone server for wss
- because pyOpenSSL used by the server raises a fatal error if the socket
- is accessed from multiple threads.
- """
-
- def __init__(self, request, onmessage=None):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- onmessage: a function to be called when a message is received.
- May be None. If not None, the function is called on
- another thread. In that case, MessageReceiver.receive
- and MessageReceiver.receive_nowait are useless
- because they will never return any messages.
- """
-
- threading.Thread.__init__(self)
- self._request = request
- self._queue = Queue.Queue()
- self._onmessage = onmessage
- self._stop_requested = False
- self.setDaemon(True)
- self.start()
-
- def run(self):
- try:
- while not self._stop_requested:
- message = receive_message(self._request)
- if self._onmessage:
- self._onmessage(message)
- else:
- self._queue.put(message)
- finally:
- close_connection(self._request)
-
- def receive(self):
- """ Receive a message from the channel, blocking.
-
- Returns:
- message as a unicode string.
- """
- return self._queue.get()
-
- def receive_nowait(self):
- """ Receive a message from the channel, non-blocking.
-
- Returns:
- message as a unicode string if available. None otherwise.
- """
- try:
- message = self._queue.get_nowait()
- except Queue.Empty:
- message = None
- return message
-
- def stop(self):
- """Request to stop this instance.
-
- The instance will be stopped after receiving the next message.
- This method may not be very useful, but there is no clean way
- in Python to forcefully stop a running thread.
- """
- self._stop_requested = True
-
-
-class MessageSender(threading.Thread):
- """This class sends messages to the client.
-
- This class provides both synchronous and asynchronous ways to send
- messages.
-
- Note: This class should not be used with the standalone server for wss
- because pyOpenSSL used by the server raises a fatal error if the socket
- is accessed from multiple threads.
- """
-
- def __init__(self, request):
- """Construct an instance.
-
- Args:
- request: mod_python request.
- """
- threading.Thread.__init__(self)
- self._request = request
- self._queue = Queue.Queue()
- self.setDaemon(True)
- self.start()
-
- def run(self):
- while True:
- message, condition = self._queue.get()
- condition.acquire()
- send_message(self._request, message)
- condition.notify()
- condition.release()
-
- def send(self, message):
- """Send a message, blocking."""
-
- condition = threading.Condition()
- condition.acquire()
- self._queue.put((message, condition))
- condition.wait()
-
- def send_nowait(self, message):
- """Send a message, non-blocking."""
-
- self._queue.put((message, threading.Condition()))
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py
deleted file mode 100644
index 76334685b..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/mux.py
+++ /dev/null
@@ -1,1889 +0,0 @@
-# Copyright 2012, 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 file provides classes and helper functions for multiplexing extension.
-
-Specification:
-http://tools.ietf.org/html/draft-ietf-hybi-websocket-multiplexing-06
-"""
-
-
-import collections
-import copy
-import email
-import email.parser
-import logging
-import math
-import struct
-import threading
-import traceback
-
-from mod_pywebsocket import common
-from mod_pywebsocket import handshake
-from mod_pywebsocket import util
-from mod_pywebsocket._stream_base import BadOperationException
-from mod_pywebsocket._stream_base import ConnectionTerminatedException
-from mod_pywebsocket._stream_base import InvalidFrameException
-from mod_pywebsocket._stream_hybi import Frame
-from mod_pywebsocket._stream_hybi import Stream
-from mod_pywebsocket._stream_hybi import StreamOptions
-from mod_pywebsocket._stream_hybi import create_binary_frame
-from mod_pywebsocket._stream_hybi import create_closing_handshake_body
-from mod_pywebsocket._stream_hybi import create_header
-from mod_pywebsocket._stream_hybi import create_length_header
-from mod_pywebsocket._stream_hybi import parse_frame
-from mod_pywebsocket.handshake import hybi
-
-
-_CONTROL_CHANNEL_ID = 0
-_DEFAULT_CHANNEL_ID = 1
-
-_MUX_OPCODE_ADD_CHANNEL_REQUEST = 0
-_MUX_OPCODE_ADD_CHANNEL_RESPONSE = 1
-_MUX_OPCODE_FLOW_CONTROL = 2
-_MUX_OPCODE_DROP_CHANNEL = 3
-_MUX_OPCODE_NEW_CHANNEL_SLOT = 4
-
-_MAX_CHANNEL_ID = 2 ** 29 - 1
-
-_INITIAL_NUMBER_OF_CHANNEL_SLOTS = 64
-_INITIAL_QUOTA_FOR_CLIENT = 8 * 1024
-
-_HANDSHAKE_ENCODING_IDENTITY = 0
-_HANDSHAKE_ENCODING_DELTA = 1
-
-# We need only these status code for now.
-_HTTP_BAD_RESPONSE_MESSAGES = {
- common.HTTP_STATUS_BAD_REQUEST: 'Bad Request',
-}
-
-# DropChannel reason code
-# TODO(bashi): Define all reason code defined in -05 draft.
-_DROP_CODE_NORMAL_CLOSURE = 1000
-
-_DROP_CODE_INVALID_ENCAPSULATING_MESSAGE = 2001
-_DROP_CODE_CHANNEL_ID_TRUNCATED = 2002
-_DROP_CODE_ENCAPSULATED_FRAME_IS_TRUNCATED = 2003
-_DROP_CODE_UNKNOWN_MUX_OPCODE = 2004
-_DROP_CODE_INVALID_MUX_CONTROL_BLOCK = 2005
-_DROP_CODE_CHANNEL_ALREADY_EXISTS = 2006
-_DROP_CODE_NEW_CHANNEL_SLOT_VIOLATION = 2007
-_DROP_CODE_UNKNOWN_REQUEST_ENCODING = 2010
-
-_DROP_CODE_SEND_QUOTA_VIOLATION = 3005
-_DROP_CODE_SEND_QUOTA_OVERFLOW = 3006
-_DROP_CODE_ACKNOWLEDGED = 3008
-_DROP_CODE_BAD_FRAGMENTATION = 3009
-
-
-class MuxUnexpectedException(Exception):
- """Exception in handling multiplexing extension."""
- pass
-
-
-# Temporary
-class MuxNotImplementedException(Exception):
- """Raised when a flow enters unimplemented code path."""
- pass
-
-
-class LogicalConnectionClosedException(Exception):
- """Raised when logical connection is gracefully closed."""
- pass
-
-
-class PhysicalConnectionError(Exception):
- """Raised when there is a physical connection error."""
- def __init__(self, drop_code, message=''):
- super(PhysicalConnectionError, self).__init__(
- 'code=%d, message=%r' % (drop_code, message))
- self.drop_code = drop_code
- self.message = message
-
-
-class LogicalChannelError(Exception):
- """Raised when there is a logical channel error."""
- def __init__(self, channel_id, drop_code, message=''):
- super(LogicalChannelError, self).__init__(
- 'channel_id=%d, code=%d, message=%r' % (
- channel_id, drop_code, message))
- self.channel_id = channel_id
- self.drop_code = drop_code
- self.message = message
-
-
-def _encode_channel_id(channel_id):
- if channel_id < 0:
- raise ValueError('Channel id %d must not be negative' % channel_id)
-
- if channel_id < 2 ** 7:
- return chr(channel_id)
- if channel_id < 2 ** 14:
- return struct.pack('!H', 0x8000 + channel_id)
- if channel_id < 2 ** 21:
- first = chr(0xc0 + (channel_id >> 16))
- return first + struct.pack('!H', channel_id & 0xffff)
- if channel_id < 2 ** 29:
- return struct.pack('!L', 0xe0000000 + channel_id)
-
- raise ValueError('Channel id %d is too large' % channel_id)
-
-
-def _encode_number(number):
- return create_length_header(number, False)
-
-
-def _create_add_channel_response(channel_id, encoded_handshake,
- encoding=0, rejected=False):
- if encoding != 0 and encoding != 1:
- raise ValueError('Invalid encoding %d' % encoding)
-
- first_byte = ((_MUX_OPCODE_ADD_CHANNEL_RESPONSE << 5) |
- (rejected << 4) | encoding)
- block = (chr(first_byte) +
- _encode_channel_id(channel_id) +
- _encode_number(len(encoded_handshake)) +
- encoded_handshake)
- return block
-
-
-def _create_drop_channel(channel_id, code=None, message=''):
- if len(message) > 0 and code is None:
- raise ValueError('Code must be specified if message is specified')
-
- first_byte = _MUX_OPCODE_DROP_CHANNEL << 5
- block = chr(first_byte) + _encode_channel_id(channel_id)
- if code is None:
- block += _encode_number(0) # Reason size
- else:
- reason = struct.pack('!H', code) + message
- reason_size = _encode_number(len(reason))
- block += reason_size + reason
-
- return block
-
-
-def _create_flow_control(channel_id, replenished_quota):
- first_byte = _MUX_OPCODE_FLOW_CONTROL << 5
- block = (chr(first_byte) +
- _encode_channel_id(channel_id) +
- _encode_number(replenished_quota))
- return block
-
-
-def _create_new_channel_slot(slots, send_quota):
- if slots < 0 or send_quota < 0:
- raise ValueError('slots and send_quota must be non-negative.')
- first_byte = _MUX_OPCODE_NEW_CHANNEL_SLOT << 5
- block = (chr(first_byte) +
- _encode_number(slots) +
- _encode_number(send_quota))
- return block
-
-
-def _create_fallback_new_channel_slot():
- first_byte = (_MUX_OPCODE_NEW_CHANNEL_SLOT << 5) | 1 # Set the F flag
- block = (chr(first_byte) + _encode_number(0) + _encode_number(0))
- return block
-
-
-def _parse_request_text(request_text):
- request_line, header_lines = request_text.split('\r\n', 1)
-
- words = request_line.split(' ')
- if len(words) != 3:
- raise ValueError('Bad Request-Line syntax %r' % request_line)
- [command, path, version] = words
- if version != 'HTTP/1.1':
- raise ValueError('Bad request version %r' % version)
-
- # email.parser.Parser() parses RFC 2822 (RFC 822) style headers.
- # RFC 6455 refers RFC 2616 for handshake parsing, and RFC 2616 refers
- # RFC 822.
- headers = email.parser.Parser().parsestr(header_lines)
- return command, path, version, headers
-
-
-class _ControlBlock(object):
- """A structure that holds parsing result of multiplexing control block.
- Control block specific attributes will be added by _MuxFramePayloadParser.
- (e.g. encoded_handshake will be added for AddChannelRequest and
- AddChannelResponse)
- """
-
- def __init__(self, opcode):
- self.opcode = opcode
-
-
-class _MuxFramePayloadParser(object):
- """A class that parses multiplexed frame payload."""
-
- def __init__(self, payload):
- self._data = payload
- self._read_position = 0
- self._logger = util.get_class_logger(self)
-
- def read_channel_id(self):
- """Reads channel id.
-
- Raises:
- ValueError: when the payload doesn't contain
- valid channel id.
- """
-
- remaining_length = len(self._data) - self._read_position
- pos = self._read_position
- if remaining_length == 0:
- raise ValueError('Invalid channel id format')
-
- channel_id = ord(self._data[pos])
- channel_id_length = 1
- if channel_id & 0xe0 == 0xe0:
- if remaining_length < 4:
- raise ValueError('Invalid channel id format')
- channel_id = struct.unpack('!L',
- self._data[pos:pos+4])[0] & 0x1fffffff
- channel_id_length = 4
- elif channel_id & 0xc0 == 0xc0:
- if remaining_length < 3:
- raise ValueError('Invalid channel id format')
- channel_id = (((channel_id & 0x1f) << 16) +
- struct.unpack('!H', self._data[pos+1:pos+3])[0])
- channel_id_length = 3
- elif channel_id & 0x80 == 0x80:
- if remaining_length < 2:
- raise ValueError('Invalid channel id format')
- channel_id = struct.unpack('!H',
- self._data[pos:pos+2])[0] & 0x3fff
- channel_id_length = 2
- self._read_position += channel_id_length
-
- return channel_id
-
- def read_inner_frame(self):
- """Reads an inner frame.
-
- Raises:
- PhysicalConnectionError: when the inner frame is invalid.
- """
-
- if len(self._data) == self._read_position:
- raise PhysicalConnectionError(
- _DROP_CODE_ENCAPSULATED_FRAME_IS_TRUNCATED)
-
- bits = ord(self._data[self._read_position])
- self._read_position += 1
- fin = (bits & 0x80) == 0x80
- rsv1 = (bits & 0x40) == 0x40
- rsv2 = (bits & 0x20) == 0x20
- rsv3 = (bits & 0x10) == 0x10
- opcode = bits & 0xf
- payload = self.remaining_data()
- # Consume rest of the message which is payload data of the original
- # frame.
- self._read_position = len(self._data)
- return fin, rsv1, rsv2, rsv3, opcode, payload
-
- def _read_number(self):
- if self._read_position + 1 > len(self._data):
- raise ValueError(
- 'Cannot read the first byte of number field')
-
- number = ord(self._data[self._read_position])
- if number & 0x80 == 0x80:
- raise ValueError(
- 'The most significant bit of the first byte of number should '
- 'be unset')
- self._read_position += 1
- pos = self._read_position
- if number == 127:
- if pos + 8 > len(self._data):
- raise ValueError('Invalid number field')
- self._read_position += 8
- number = struct.unpack('!Q', self._data[pos:pos+8])[0]
- if number > 0x7FFFFFFFFFFFFFFF:
- raise ValueError('Encoded number(%d) >= 2^63' % number)
- if number <= 0xFFFF:
- raise ValueError(
- '%d should not be encoded by 9 bytes encoding' % number)
- return number
- if number == 126:
- if pos + 2 > len(self._data):
- raise ValueError('Invalid number field')
- self._read_position += 2
- number = struct.unpack('!H', self._data[pos:pos+2])[0]
- if number <= 125:
- raise ValueError(
- '%d should not be encoded by 3 bytes encoding' % number)
- return number
-
- def _read_size_and_contents(self):
- """Reads data that consists of followings:
- - the size of the contents encoded the same way as payload length
- of the WebSocket Protocol with 1 bit padding at the head.
- - the contents.
- """
-
- try:
- size = self._read_number()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- str(e))
- pos = self._read_position
- if pos + size > len(self._data):
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Cannot read %d bytes data' % size)
-
- self._read_position += size
- return self._data[pos:pos+size]
-
- def _read_add_channel_request(self, first_byte, control_block):
- reserved = (first_byte >> 2) & 0x7
- if reserved != 0:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Reserved bits must be unset')
-
- # Invalid encoding will be handled by MuxHandler.
- encoding = first_byte & 0x3
- try:
- control_block.channel_id = self.read_channel_id()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
- control_block.encoding = encoding
- encoded_handshake = self._read_size_and_contents()
- control_block.encoded_handshake = encoded_handshake
- return control_block
-
- def _read_add_channel_response(self, first_byte, control_block):
- reserved = (first_byte >> 2) & 0x3
- if reserved != 0:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Reserved bits must be unset')
-
- control_block.accepted = (first_byte >> 4) & 1
- control_block.encoding = first_byte & 0x3
- try:
- control_block.channel_id = self.read_channel_id()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
- control_block.encoded_handshake = self._read_size_and_contents()
- return control_block
-
- def _read_flow_control(self, first_byte, control_block):
- reserved = first_byte & 0x1f
- if reserved != 0:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Reserved bits must be unset')
-
- try:
- control_block.channel_id = self.read_channel_id()
- control_block.send_quota = self._read_number()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- str(e))
-
- return control_block
-
- def _read_drop_channel(self, first_byte, control_block):
- reserved = first_byte & 0x1f
- if reserved != 0:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Reserved bits must be unset')
-
- try:
- control_block.channel_id = self.read_channel_id()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK)
- reason = self._read_size_and_contents()
- if len(reason) == 0:
- control_block.drop_code = None
- control_block.drop_message = ''
- elif len(reason) >= 2:
- control_block.drop_code = struct.unpack('!H', reason[:2])[0]
- control_block.drop_message = reason[2:]
- else:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Received DropChannel that conains only 1-byte reason')
- return control_block
-
- def _read_new_channel_slot(self, first_byte, control_block):
- reserved = first_byte & 0x1e
- if reserved != 0:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Reserved bits must be unset')
- control_block.fallback = first_byte & 1
- try:
- control_block.slots = self._read_number()
- control_block.send_quota = self._read_number()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- str(e))
- return control_block
-
- def read_control_blocks(self):
- """Reads control block(s).
-
- Raises:
- PhysicalConnectionError: when the payload contains invalid control
- block(s).
- StopIteration: when no control blocks left.
- """
-
- while self._read_position < len(self._data):
- first_byte = ord(self._data[self._read_position])
- self._read_position += 1
- opcode = (first_byte >> 5) & 0x7
- control_block = _ControlBlock(opcode=opcode)
- if opcode == _MUX_OPCODE_ADD_CHANNEL_REQUEST:
- yield self._read_add_channel_request(first_byte, control_block)
- elif opcode == _MUX_OPCODE_ADD_CHANNEL_RESPONSE:
- yield self._read_add_channel_response(
- first_byte, control_block)
- elif opcode == _MUX_OPCODE_FLOW_CONTROL:
- yield self._read_flow_control(first_byte, control_block)
- elif opcode == _MUX_OPCODE_DROP_CHANNEL:
- yield self._read_drop_channel(first_byte, control_block)
- elif opcode == _MUX_OPCODE_NEW_CHANNEL_SLOT:
- yield self._read_new_channel_slot(first_byte, control_block)
- else:
- raise PhysicalConnectionError(
- _DROP_CODE_UNKNOWN_MUX_OPCODE,
- 'Invalid opcode %d' % opcode)
-
- assert self._read_position == len(self._data)
- raise StopIteration
-
- def remaining_data(self):
- """Returns remaining data."""
-
- return self._data[self._read_position:]
-
-
-class _LogicalRequest(object):
- """Mimics mod_python request."""
-
- def __init__(self, channel_id, command, path, protocol, headers,
- connection):
- """Constructs an instance.
-
- Args:
- channel_id: the channel id of the logical channel.
- command: HTTP request command.
- path: HTTP request path.
- headers: HTTP headers.
- connection: _LogicalConnection instance.
- """
-
- self.channel_id = channel_id
- self.method = command
- self.uri = path
- self.protocol = protocol
- self.headers_in = headers
- self.connection = connection
- self.server_terminated = False
- self.client_terminated = False
-
- def is_https(self):
- """Mimics request.is_https(). Returns False because this method is
- used only by old protocols (hixie and hybi00).
- """
-
- return False
-
-
-class _LogicalConnection(object):
- """Mimics mod_python mp_conn."""
-
- # For details, see the comment of set_read_state().
- STATE_ACTIVE = 1
- STATE_GRACEFULLY_CLOSED = 2
- STATE_TERMINATED = 3
-
- def __init__(self, mux_handler, channel_id):
- """Constructs an instance.
-
- Args:
- mux_handler: _MuxHandler instance.
- channel_id: channel id of this connection.
- """
-
- self._mux_handler = mux_handler
- self._channel_id = channel_id
- self._incoming_data = ''
-
- # - Protects _waiting_write_completion
- # - Signals the thread waiting for completion of write by mux handler
- self._write_condition = threading.Condition()
- self._waiting_write_completion = False
-
- self._read_condition = threading.Condition()
- self._read_state = self.STATE_ACTIVE
-
- def get_local_addr(self):
- """Getter to mimic mp_conn.local_addr."""
-
- return self._mux_handler.physical_connection.get_local_addr()
- local_addr = property(get_local_addr)
-
- def get_remote_addr(self):
- """Getter to mimic mp_conn.remote_addr."""
-
- return self._mux_handler.physical_connection.get_remote_addr()
- remote_addr = property(get_remote_addr)
-
- def get_memorized_lines(self):
- """Gets memorized lines. Not supported."""
-
- raise MuxUnexpectedException('_LogicalConnection does not support '
- 'get_memorized_lines')
-
- def write(self, data):
- """Writes data. mux_handler sends data asynchronously. The caller will
- be suspended until write done.
-
- Args:
- data: data to be written.
-
- Raises:
- MuxUnexpectedException: when called before finishing the previous
- write.
- """
-
- try:
- self._write_condition.acquire()
- if self._waiting_write_completion:
- raise MuxUnexpectedException(
- 'Logical connection %d is already waiting the completion '
- 'of write' % self._channel_id)
-
- self._waiting_write_completion = True
- self._mux_handler.send_data(self._channel_id, data)
- self._write_condition.wait()
- # TODO(tyoshino): Raise an exception if woke up by on_writer_done.
- finally:
- self._write_condition.release()
-
- def write_control_data(self, data):
- """Writes data via the control channel. Don't wait finishing write
- because this method can be called by mux dispatcher.
-
- Args:
- data: data to be written.
- """
-
- self._mux_handler.send_control_data(data)
-
- def on_write_data_done(self):
- """Called when sending data is completed."""
-
- try:
- self._write_condition.acquire()
- if not self._waiting_write_completion:
- raise MuxUnexpectedException(
- 'Invalid call of on_write_data_done for logical '
- 'connection %d' % self._channel_id)
- self._waiting_write_completion = False
- self._write_condition.notify()
- finally:
- self._write_condition.release()
-
- def on_writer_done(self):
- """Called by the mux handler when the writer thread has finished."""
-
- try:
- self._write_condition.acquire()
- self._waiting_write_completion = False
- self._write_condition.notify()
- finally:
- self._write_condition.release()
-
-
- def append_frame_data(self, frame_data):
- """Appends incoming frame data. Called when mux_handler dispatches
- frame data to the corresponding application.
-
- Args:
- frame_data: incoming frame data.
- """
-
- self._read_condition.acquire()
- self._incoming_data += frame_data
- self._read_condition.notify()
- self._read_condition.release()
-
- def read(self, length):
- """Reads data. Blocks until enough data has arrived via physical
- connection.
-
- Args:
- length: length of data to be read.
- Raises:
- LogicalConnectionClosedException: when closing handshake for this
- logical channel has been received.
- ConnectionTerminatedException: when the physical connection has
- closed, or an error is caused on the reader thread.
- """
-
- self._read_condition.acquire()
- while (self._read_state == self.STATE_ACTIVE and
- len(self._incoming_data) < length):
- self._read_condition.wait()
-
- try:
- if self._read_state == self.STATE_GRACEFULLY_CLOSED:
- raise LogicalConnectionClosedException(
- 'Logical channel %d has closed.' % self._channel_id)
- elif self._read_state == self.STATE_TERMINATED:
- raise ConnectionTerminatedException(
- 'Receiving %d byte failed. Logical channel (%d) closed' %
- (length, self._channel_id))
-
- value = self._incoming_data[:length]
- self._incoming_data = self._incoming_data[length:]
- finally:
- self._read_condition.release()
-
- return value
-
- def set_read_state(self, new_state):
- """Sets the state of this connection. Called when an event for this
- connection has occurred.
-
- Args:
- new_state: state to be set. new_state must be one of followings:
- - STATE_GRACEFULLY_CLOSED: when closing handshake for this
- connection has been received.
- - STATE_TERMINATED: when the physical connection has closed or
- DropChannel of this connection has received.
- """
-
- self._read_condition.acquire()
- self._read_state = new_state
- self._read_condition.notify()
- self._read_condition.release()
-
-
-class _InnerMessage(object):
- """Holds the result of _InnerMessageBuilder.build().
- """
-
- def __init__(self, opcode, payload):
- self.opcode = opcode
- self.payload = payload
-
-
-class _InnerMessageBuilder(object):
- """A class that holds the context of inner message fragmentation and
- builds a message from fragmented inner frame(s).
- """
-
- def __init__(self):
- self._control_opcode = None
- self._pending_control_fragments = []
- self._message_opcode = None
- self._pending_message_fragments = []
- self._frame_handler = self._handle_first
-
- def _handle_first(self, frame):
- if frame.opcode == common.OPCODE_CONTINUATION:
- raise InvalidFrameException('Sending invalid continuation opcode')
-
- if common.is_control_opcode(frame.opcode):
- return self._process_first_fragmented_control(frame)
- else:
- return self._process_first_fragmented_message(frame)
-
- def _process_first_fragmented_control(self, frame):
- self._control_opcode = frame.opcode
- self._pending_control_fragments.append(frame.payload)
- if not frame.fin:
- self._frame_handler = self._handle_fragmented_control
- return None
- return self._reassemble_fragmented_control()
-
- def _process_first_fragmented_message(self, frame):
- self._message_opcode = frame.opcode
- self._pending_message_fragments.append(frame.payload)
- if not frame.fin:
- self._frame_handler = self._handle_fragmented_message
- return None
- return self._reassemble_fragmented_message()
-
- def _handle_fragmented_control(self, frame):
- if frame.opcode != common.OPCODE_CONTINUATION:
- raise InvalidFrameException(
- 'Sending invalid opcode %d while sending fragmented control '
- 'message' % frame.opcode)
- self._pending_control_fragments.append(frame.payload)
- if not frame.fin:
- return None
- return self._reassemble_fragmented_control()
-
- def _reassemble_fragmented_control(self):
- opcode = self._control_opcode
- payload = ''.join(self._pending_control_fragments)
- self._control_opcode = None
- self._pending_control_fragments = []
- if self._message_opcode is not None:
- self._frame_handler = self._handle_fragmented_message
- else:
- self._frame_handler = self._handle_first
- return _InnerMessage(opcode, payload)
-
- def _handle_fragmented_message(self, frame):
- # Sender can interleave a control message while sending fragmented
- # messages.
- if common.is_control_opcode(frame.opcode):
- if self._control_opcode is not None:
- raise MuxUnexpectedException(
- 'Should not reach here(Bug in builder)')
- return self._process_first_fragmented_control(frame)
-
- if frame.opcode != common.OPCODE_CONTINUATION:
- raise InvalidFrameException(
- 'Sending invalid opcode %d while sending fragmented message' %
- frame.opcode)
- self._pending_message_fragments.append(frame.payload)
- if not frame.fin:
- return None
- return self._reassemble_fragmented_message()
-
- def _reassemble_fragmented_message(self):
- opcode = self._message_opcode
- payload = ''.join(self._pending_message_fragments)
- self._message_opcode = None
- self._pending_message_fragments = []
- self._frame_handler = self._handle_first
- return _InnerMessage(opcode, payload)
-
- def build(self, frame):
- """Build an inner message. Returns an _InnerMessage instance when
- the given frame is the last fragmented frame. Returns None otherwise.
-
- Args:
- frame: an inner frame.
- Raises:
- InvalidFrameException: when received invalid opcode. (e.g.
- receiving non continuation data opcode but the fin flag of
- the previous inner frame was not set.)
- """
-
- return self._frame_handler(frame)
-
-
-class _LogicalStream(Stream):
- """Mimics the Stream class. This class interprets multiplexed WebSocket
- frames.
- """
-
- def __init__(self, request, stream_options, send_quota, receive_quota):
- """Constructs an instance.
-
- Args:
- request: _LogicalRequest instance.
- stream_options: StreamOptions instance.
- send_quota: Initial send quota.
- receive_quota: Initial receive quota.
- """
-
- # Physical stream is responsible for masking.
- stream_options.unmask_receive = False
- Stream.__init__(self, request, stream_options)
-
- self._send_closed = False
- self._send_quota = send_quota
- # - Protects _send_closed and _send_quota
- # - Signals the thread waiting for send quota replenished
- self._send_condition = threading.Condition()
-
- # The opcode of the first frame in messages.
- self._message_opcode = common.OPCODE_TEXT
- # True when the last message was fragmented.
- self._last_message_was_fragmented = False
-
- self._receive_quota = receive_quota
- self._write_inner_frame_semaphore = threading.Semaphore()
-
- self._inner_message_builder = _InnerMessageBuilder()
-
- def _create_inner_frame(self, opcode, payload, end=True):
- frame = Frame(fin=end, opcode=opcode, payload=payload)
- for frame_filter in self._options.outgoing_frame_filters:
- frame_filter.filter(frame)
-
- if len(payload) != len(frame.payload):
- raise MuxUnexpectedException(
- 'Mux extension must not be used after extensions which change '
- ' frame boundary')
-
- first_byte = ((frame.fin << 7) | (frame.rsv1 << 6) |
- (frame.rsv2 << 5) | (frame.rsv3 << 4) | frame.opcode)
- return chr(first_byte) + frame.payload
-
- def _write_inner_frame(self, opcode, payload, end=True):
- payload_length = len(payload)
- write_position = 0
-
- try:
- # An inner frame will be fragmented if there is no enough send
- # quota. This semaphore ensures that fragmented inner frames are
- # sent in order on the logical channel.
- # Note that frames that come from other logical channels or
- # multiplexing control blocks can be inserted between fragmented
- # inner frames on the physical channel.
- self._write_inner_frame_semaphore.acquire()
-
- # Consume an octet quota when this is the first fragmented frame.
- if opcode != common.OPCODE_CONTINUATION:
- try:
- self._send_condition.acquire()
- while (not self._send_closed) and self._send_quota == 0:
- self._send_condition.wait()
-
- if self._send_closed:
- raise BadOperationException(
- 'Logical connection %d is closed' %
- self._request.channel_id)
-
- self._send_quota -= 1
- finally:
- self._send_condition.release()
-
- while write_position < payload_length:
- try:
- self._send_condition.acquire()
- while (not self._send_closed) and self._send_quota == 0:
- self._logger.debug(
- 'No quota. Waiting FlowControl message for %d.' %
- self._request.channel_id)
- self._send_condition.wait()
-
- if self._send_closed:
- raise BadOperationException(
- 'Logical connection %d is closed' %
- self.request._channel_id)
-
- remaining = payload_length - write_position
- write_length = min(self._send_quota, remaining)
- inner_frame_end = (
- end and
- (write_position + write_length == payload_length))
-
- inner_frame = self._create_inner_frame(
- opcode,
- payload[write_position:write_position+write_length],
- inner_frame_end)
- self._send_quota -= write_length
- self._logger.debug('Consumed quota=%d, remaining=%d' %
- (write_length, self._send_quota))
- finally:
- self._send_condition.release()
-
- # Writing data will block the worker so we need to release
- # _send_condition before writing.
- self._logger.debug('Sending inner frame: %r' % inner_frame)
- self._request.connection.write(inner_frame)
- write_position += write_length
-
- opcode = common.OPCODE_CONTINUATION
-
- except ValueError, e:
- raise BadOperationException(e)
- finally:
- self._write_inner_frame_semaphore.release()
-
- def replenish_send_quota(self, send_quota):
- """Replenish send quota."""
-
- try:
- self._send_condition.acquire()
- if self._send_quota + send_quota > 0x7FFFFFFFFFFFFFFF:
- self._send_quota = 0
- raise LogicalChannelError(
- self._request.channel_id, _DROP_CODE_SEND_QUOTA_OVERFLOW)
- self._send_quota += send_quota
- self._logger.debug('Replenished send quota for channel id %d: %d' %
- (self._request.channel_id, self._send_quota))
- finally:
- self._send_condition.notify()
- self._send_condition.release()
-
- def consume_receive_quota(self, amount):
- """Consumes receive quota. Returns False on failure."""
-
- if self._receive_quota < amount:
- self._logger.debug('Violate quota on channel id %d: %d < %d' %
- (self._request.channel_id,
- self._receive_quota, amount))
- return False
- self._receive_quota -= amount
- return True
-
- def send_message(self, message, end=True, binary=False):
- """Override Stream.send_message."""
-
- if self._request.server_terminated:
- raise BadOperationException(
- 'Requested send_message after sending out a closing handshake')
-
- if binary and isinstance(message, unicode):
- raise BadOperationException(
- 'Message for binary frame must be instance of str')
-
- if binary:
- opcode = common.OPCODE_BINARY
- else:
- opcode = common.OPCODE_TEXT
- message = message.encode('utf-8')
-
- for message_filter in self._options.outgoing_message_filters:
- message = message_filter.filter(message, end, binary)
-
- if self._last_message_was_fragmented:
- if opcode != self._message_opcode:
- raise BadOperationException('Message types are different in '
- 'frames for the same message')
- opcode = common.OPCODE_CONTINUATION
- else:
- self._message_opcode = opcode
-
- self._write_inner_frame(opcode, message, end)
- self._last_message_was_fragmented = not end
-
- def _receive_frame(self):
- """Overrides Stream._receive_frame.
-
- In addition to call Stream._receive_frame, this method adds the amount
- of payload to receiving quota and sends FlowControl to the client.
- We need to do it here because Stream.receive_message() handles
- control frames internally.
- """
-
- opcode, payload, fin, rsv1, rsv2, rsv3 = Stream._receive_frame(self)
- amount = len(payload)
- # Replenish extra one octet when receiving the first fragmented frame.
- if opcode != common.OPCODE_CONTINUATION:
- amount += 1
- self._receive_quota += amount
- frame_data = _create_flow_control(self._request.channel_id,
- amount)
- self._logger.debug('Sending flow control for %d, replenished=%d' %
- (self._request.channel_id, amount))
- self._request.connection.write_control_data(frame_data)
- return opcode, payload, fin, rsv1, rsv2, rsv3
-
- def _get_message_from_frame(self, frame):
- """Overrides Stream._get_message_from_frame.
- """
-
- try:
- inner_message = self._inner_message_builder.build(frame)
- except InvalidFrameException:
- raise LogicalChannelError(
- self._request.channel_id, _DROP_CODE_BAD_FRAGMENTATION)
-
- if inner_message is None:
- return None
- self._original_opcode = inner_message.opcode
- return inner_message.payload
-
- def receive_message(self):
- """Overrides Stream.receive_message."""
-
- # Just call Stream.receive_message(), but catch
- # LogicalConnectionClosedException, which is raised when the logical
- # connection has closed gracefully.
- try:
- return Stream.receive_message(self)
- except LogicalConnectionClosedException, e:
- self._logger.debug('%s', e)
- return None
-
- def _send_closing_handshake(self, code, reason):
- """Overrides Stream._send_closing_handshake."""
-
- body = create_closing_handshake_body(code, reason)
- self._logger.debug('Sending closing handshake for %d: (%r, %r)' %
- (self._request.channel_id, code, reason))
- self._write_inner_frame(common.OPCODE_CLOSE, body, end=True)
-
- self._request.server_terminated = True
-
- def send_ping(self, body=''):
- """Overrides Stream.send_ping"""
-
- self._logger.debug('Sending ping on logical channel %d: %r' %
- (self._request.channel_id, body))
- self._write_inner_frame(common.OPCODE_PING, body, end=True)
-
- self._ping_queue.append(body)
-
- def _send_pong(self, body):
- """Overrides Stream._send_pong"""
-
- self._logger.debug('Sending pong on logical channel %d: %r' %
- (self._request.channel_id, body))
- self._write_inner_frame(common.OPCODE_PONG, body, end=True)
-
- def close_connection(self, code=common.STATUS_NORMAL_CLOSURE, reason=''):
- """Overrides Stream.close_connection."""
-
- # TODO(bashi): Implement
- self._logger.debug('Closing logical connection %d' %
- self._request.channel_id)
- self._request.server_terminated = True
-
- def stop_sending(self):
- """Stops accepting new send operation (_write_inner_frame)."""
-
- self._send_condition.acquire()
- self._send_closed = True
- self._send_condition.notify()
- self._send_condition.release()
-
-
-class _OutgoingData(object):
- """A structure that holds data to be sent via physical connection and
- origin of the data.
- """
-
- def __init__(self, channel_id, data):
- self.channel_id = channel_id
- self.data = data
-
-
-class _PhysicalConnectionWriter(threading.Thread):
- """A thread that is responsible for writing data to physical connection.
-
- TODO(bashi): Make sure there is no thread-safety problem when the reader
- thread reads data from the same socket at a time.
- """
-
- def __init__(self, mux_handler):
- """Constructs an instance.
-
- Args:
- mux_handler: _MuxHandler instance.
- """
-
- threading.Thread.__init__(self)
- self._logger = util.get_class_logger(self)
- self._mux_handler = mux_handler
- self.setDaemon(True)
-
- # When set, make this thread stop accepting new data, flush pending
- # data and exit.
- self._stop_requested = False
- # The close code of the physical connection.
- self._close_code = common.STATUS_NORMAL_CLOSURE
- # Deque for passing write data. It's protected by _deque_condition
- # until _stop_requested is set.
- self._deque = collections.deque()
- # - Protects _deque, _stop_requested and _close_code
- # - Signals threads waiting for them to be available
- self._deque_condition = threading.Condition()
-
- def put_outgoing_data(self, data):
- """Puts outgoing data.
-
- Args:
- data: _OutgoingData instance.
-
- Raises:
- BadOperationException: when the thread has been requested to
- terminate.
- """
-
- try:
- self._deque_condition.acquire()
- if self._stop_requested:
- raise BadOperationException('Cannot write data anymore')
-
- self._deque.append(data)
- self._deque_condition.notify()
- finally:
- self._deque_condition.release()
-
- def _write_data(self, outgoing_data):
- message = (_encode_channel_id(outgoing_data.channel_id) +
- outgoing_data.data)
- try:
- self._mux_handler.physical_stream.send_message(
- message=message, end=True, binary=True)
- except Exception, e:
- util.prepend_message_to_exception(
- 'Failed to send message to %r: ' %
- (self._mux_handler.physical_connection.remote_addr,), e)
- raise
-
- # TODO(bashi): It would be better to block the thread that sends
- # control data as well.
- if outgoing_data.channel_id != _CONTROL_CHANNEL_ID:
- self._mux_handler.notify_write_data_done(outgoing_data.channel_id)
-
- def run(self):
- try:
- self._deque_condition.acquire()
- while not self._stop_requested:
- if len(self._deque) == 0:
- self._deque_condition.wait()
- continue
-
- outgoing_data = self._deque.popleft()
-
- self._deque_condition.release()
- self._write_data(outgoing_data)
- self._deque_condition.acquire()
-
- # Flush deque.
- #
- # At this point, self._deque_condition is always acquired.
- try:
- while len(self._deque) > 0:
- outgoing_data = self._deque.popleft()
- self._write_data(outgoing_data)
- finally:
- self._deque_condition.release()
-
- # Close physical connection.
- try:
- # Don't wait the response here. The response will be read
- # by the reader thread.
- self._mux_handler.physical_stream.close_connection(
- self._close_code, wait_response=False)
- except Exception, e:
- util.prepend_message_to_exception(
- 'Failed to close the physical connection: %r' % e)
- raise
- finally:
- self._mux_handler.notify_writer_done()
-
- def stop(self, close_code=common.STATUS_NORMAL_CLOSURE):
- """Stops the writer thread."""
-
- self._deque_condition.acquire()
- self._stop_requested = True
- self._close_code = close_code
- self._deque_condition.notify()
- self._deque_condition.release()
-
-
-class _PhysicalConnectionReader(threading.Thread):
- """A thread that is responsible for reading data from physical connection.
- """
-
- def __init__(self, mux_handler):
- """Constructs an instance.
-
- Args:
- mux_handler: _MuxHandler instance.
- """
-
- threading.Thread.__init__(self)
- self._logger = util.get_class_logger(self)
- self._mux_handler = mux_handler
- self.setDaemon(True)
-
- def run(self):
- while True:
- try:
- physical_stream = self._mux_handler.physical_stream
- message = physical_stream.receive_message()
- if message is None:
- break
- # Below happens only when a data message is received.
- opcode = physical_stream.get_last_received_opcode()
- if opcode != common.OPCODE_BINARY:
- self._mux_handler.fail_physical_connection(
- _DROP_CODE_INVALID_ENCAPSULATING_MESSAGE,
- 'Received a text message on physical connection')
- break
-
- except ConnectionTerminatedException, e:
- self._logger.debug('%s', e)
- break
-
- try:
- self._mux_handler.dispatch_message(message)
- except PhysicalConnectionError, e:
- self._mux_handler.fail_physical_connection(
- e.drop_code, e.message)
- break
- except LogicalChannelError, e:
- self._mux_handler.fail_logical_channel(
- e.channel_id, e.drop_code, e.message)
- except Exception, e:
- self._logger.debug(traceback.format_exc())
- break
-
- self._mux_handler.notify_reader_done()
-
-
-class _Worker(threading.Thread):
- """A thread that is responsible for running the corresponding application
- handler.
- """
-
- def __init__(self, mux_handler, request):
- """Constructs an instance.
-
- Args:
- mux_handler: _MuxHandler instance.
- request: _LogicalRequest instance.
- """
-
- threading.Thread.__init__(self)
- self._logger = util.get_class_logger(self)
- self._mux_handler = mux_handler
- self._request = request
- self.setDaemon(True)
-
- def run(self):
- self._logger.debug('Logical channel worker started. (id=%d)' %
- self._request.channel_id)
- try:
- # Non-critical exceptions will be handled by dispatcher.
- self._mux_handler.dispatcher.transfer_data(self._request)
- except LogicalChannelError, e:
- self._mux_handler.fail_logical_channel(
- e.channel_id, e.drop_code, e.message)
- finally:
- self._mux_handler.notify_worker_done(self._request.channel_id)
-
-
-class _MuxHandshaker(hybi.Handshaker):
- """Opening handshake processor for multiplexing."""
-
- _DUMMY_WEBSOCKET_KEY = 'dGhlIHNhbXBsZSBub25jZQ=='
-
- def __init__(self, request, dispatcher, send_quota, receive_quota):
- """Constructs an instance.
- Args:
- request: _LogicalRequest instance.
- dispatcher: Dispatcher instance (dispatch.Dispatcher).
- send_quota: Initial send quota.
- receive_quota: Initial receive quota.
- """
-
- hybi.Handshaker.__init__(self, request, dispatcher)
- self._send_quota = send_quota
- self._receive_quota = receive_quota
-
- # Append headers which should not be included in handshake field of
- # AddChannelRequest.
- # TODO(bashi): Make sure whether we should raise exception when
- # these headers are included already.
- request.headers_in[common.UPGRADE_HEADER] = (
- common.WEBSOCKET_UPGRADE_TYPE)
- request.headers_in[common.SEC_WEBSOCKET_VERSION_HEADER] = (
- str(common.VERSION_HYBI_LATEST))
- request.headers_in[common.SEC_WEBSOCKET_KEY_HEADER] = (
- self._DUMMY_WEBSOCKET_KEY)
-
- def _create_stream(self, stream_options):
- """Override hybi.Handshaker._create_stream."""
-
- self._logger.debug('Creating logical stream for %d' %
- self._request.channel_id)
- return _LogicalStream(
- self._request, stream_options, self._send_quota,
- self._receive_quota)
-
- def _create_handshake_response(self, accept):
- """Override hybi._create_handshake_response."""
-
- response = []
-
- response.append('HTTP/1.1 101 Switching Protocols\r\n')
-
- # Upgrade and Sec-WebSocket-Accept should be excluded.
- response.append('%s: %s\r\n' % (
- common.CONNECTION_HEADER, common.UPGRADE_CONNECTION_TYPE))
- if self._request.ws_protocol is not None:
- response.append('%s: %s\r\n' % (
- common.SEC_WEBSOCKET_PROTOCOL_HEADER,
- self._request.ws_protocol))
- if (self._request.ws_extensions is not None and
- len(self._request.ws_extensions) != 0):
- response.append('%s: %s\r\n' % (
- common.SEC_WEBSOCKET_EXTENSIONS_HEADER,
- common.format_extensions(self._request.ws_extensions)))
- response.append('\r\n')
-
- return ''.join(response)
-
- def _send_handshake(self, accept):
- """Override hybi.Handshaker._send_handshake."""
-
- # Don't send handshake response for the default channel
- if self._request.channel_id == _DEFAULT_CHANNEL_ID:
- return
-
- handshake_response = self._create_handshake_response(accept)
- frame_data = _create_add_channel_response(
- self._request.channel_id,
- handshake_response)
- self._logger.debug('Sending handshake response for %d: %r' %
- (self._request.channel_id, frame_data))
- self._request.connection.write_control_data(frame_data)
-
-
-class _LogicalChannelData(object):
- """A structure that holds information about logical channel.
- """
-
- def __init__(self, request, worker):
- self.request = request
- self.worker = worker
- self.drop_code = _DROP_CODE_NORMAL_CLOSURE
- self.drop_message = ''
-
-
-class _HandshakeDeltaBase(object):
- """A class that holds information for delta-encoded handshake."""
-
- def __init__(self, headers):
- self._headers = headers
-
- def create_headers(self, delta=None):
- """Creates request headers for an AddChannelRequest that has
- delta-encoded handshake.
-
- Args:
- delta: headers should be overridden.
- """
-
- headers = copy.copy(self._headers)
- if delta:
- for key, value in delta.items():
- # The spec requires that a header with an empty value is
- # removed from the delta base.
- if len(value) == 0 and headers.has_key(key):
- del headers[key]
- else:
- headers[key] = value
- return headers
-
-
-class _MuxHandler(object):
- """Multiplexing handler. When a handler starts, it launches three
- threads; the reader thread, the writer thread, and a worker thread.
-
- The reader thread reads data from the physical stream, i.e., the
- ws_stream object of the underlying websocket connection. The reader
- thread interprets multiplexed frames and dispatches them to logical
- channels. Methods of this class are mostly called by the reader thread.
-
- The writer thread sends multiplexed frames which are created by
- logical channels via the physical connection.
-
- The worker thread launched at the starting point handles the
- "Implicitly Opened Connection". If multiplexing handler receives
- an AddChannelRequest and accepts it, the handler will launch a new worker
- thread and dispatch the request to it.
- """
-
- def __init__(self, request, dispatcher):
- """Constructs an instance.
-
- Args:
- request: mod_python request of the physical connection.
- dispatcher: Dispatcher instance (dispatch.Dispatcher).
- """
-
- self.original_request = request
- self.dispatcher = dispatcher
- self.physical_connection = request.connection
- self.physical_stream = request.ws_stream
- self._logger = util.get_class_logger(self)
- self._logical_channels = {}
- self._logical_channels_condition = threading.Condition()
- # Holds client's initial quota
- self._channel_slots = collections.deque()
- self._handshake_base = None
- self._worker_done_notify_received = False
- self._reader = None
- self._writer = None
-
- def start(self):
- """Starts the handler.
-
- Raises:
- MuxUnexpectedException: when the handler already started, or when
- opening handshake of the default channel fails.
- """
-
- if self._reader or self._writer:
- raise MuxUnexpectedException('MuxHandler already started')
-
- self._reader = _PhysicalConnectionReader(self)
- self._writer = _PhysicalConnectionWriter(self)
- self._reader.start()
- self._writer.start()
-
- # Create "Implicitly Opened Connection".
- logical_connection = _LogicalConnection(self, _DEFAULT_CHANNEL_ID)
- headers = copy.copy(self.original_request.headers_in)
- # Add extensions for logical channel.
- headers[common.SEC_WEBSOCKET_EXTENSIONS_HEADER] = (
- common.format_extensions(
- self.original_request.mux_processor.extensions()))
- self._handshake_base = _HandshakeDeltaBase(headers)
- logical_request = _LogicalRequest(
- _DEFAULT_CHANNEL_ID,
- self.original_request.method,
- self.original_request.uri,
- self.original_request.protocol,
- self._handshake_base.create_headers(),
- logical_connection)
- # Client's send quota for the implicitly opened connection is zero,
- # but we will send FlowControl later so set the initial quota to
- # _INITIAL_QUOTA_FOR_CLIENT.
- self._channel_slots.append(_INITIAL_QUOTA_FOR_CLIENT)
- send_quota = self.original_request.mux_processor.quota()
- if not self._do_handshake_for_logical_request(
- logical_request, send_quota=send_quota):
- raise MuxUnexpectedException(
- 'Failed handshake on the default channel id')
- self._add_logical_channel(logical_request)
-
- # Send FlowControl for the implicitly opened connection.
- frame_data = _create_flow_control(_DEFAULT_CHANNEL_ID,
- _INITIAL_QUOTA_FOR_CLIENT)
- logical_request.connection.write_control_data(frame_data)
-
- def add_channel_slots(self, slots, send_quota):
- """Adds channel slots.
-
- Args:
- slots: number of slots to be added.
- send_quota: initial send quota for slots.
- """
-
- self._channel_slots.extend([send_quota] * slots)
- # Send NewChannelSlot to client.
- frame_data = _create_new_channel_slot(slots, send_quota)
- self.send_control_data(frame_data)
-
- def wait_until_done(self, timeout=None):
- """Waits until all workers are done. Returns False when timeout has
- occurred. Returns True on success.
-
- Args:
- timeout: timeout in sec.
- """
-
- self._logical_channels_condition.acquire()
- try:
- while len(self._logical_channels) > 0:
- self._logger.debug('Waiting workers(%d)...' %
- len(self._logical_channels))
- self._worker_done_notify_received = False
- self._logical_channels_condition.wait(timeout)
- if not self._worker_done_notify_received:
- self._logger.debug('Waiting worker(s) timed out')
- return False
- finally:
- self._logical_channels_condition.release()
-
- # Flush pending outgoing data
- self._writer.stop()
- self._writer.join()
-
- return True
-
- def notify_write_data_done(self, channel_id):
- """Called by the writer thread when a write operation has done.
-
- Args:
- channel_id: objective channel id.
- """
-
- try:
- self._logical_channels_condition.acquire()
- if channel_id in self._logical_channels:
- channel_data = self._logical_channels[channel_id]
- channel_data.request.connection.on_write_data_done()
- else:
- self._logger.debug('Seems that logical channel for %d has gone'
- % channel_id)
- finally:
- self._logical_channels_condition.release()
-
- def send_control_data(self, data):
- """Sends data via the control channel.
-
- Args:
- data: data to be sent.
- """
-
- self._writer.put_outgoing_data(_OutgoingData(
- channel_id=_CONTROL_CHANNEL_ID, data=data))
-
- def send_data(self, channel_id, data):
- """Sends data via given logical channel. This method is called by
- worker threads.
-
- Args:
- channel_id: objective channel id.
- data: data to be sent.
- """
-
- self._writer.put_outgoing_data(_OutgoingData(
- channel_id=channel_id, data=data))
-
- def _send_drop_channel(self, channel_id, code=None, message=''):
- frame_data = _create_drop_channel(channel_id, code, message)
- self._logger.debug(
- 'Sending drop channel for channel id %d' % channel_id)
- self.send_control_data(frame_data)
-
- def _send_error_add_channel_response(self, channel_id, status=None):
- if status is None:
- status = common.HTTP_STATUS_BAD_REQUEST
-
- if status in _HTTP_BAD_RESPONSE_MESSAGES:
- message = _HTTP_BAD_RESPONSE_MESSAGES[status]
- else:
- self._logger.debug('Response message for %d is not found' % status)
- message = '???'
-
- response = 'HTTP/1.1 %d %s\r\n\r\n' % (status, message)
- frame_data = _create_add_channel_response(channel_id,
- encoded_handshake=response,
- encoding=0, rejected=True)
- self.send_control_data(frame_data)
-
- def _create_logical_request(self, block):
- if block.channel_id == _CONTROL_CHANNEL_ID:
- # TODO(bashi): Raise PhysicalConnectionError with code 2006
- # instead of MuxUnexpectedException.
- raise MuxUnexpectedException(
- 'Received the control channel id (0) as objective channel '
- 'id for AddChannel')
-
- if block.encoding > _HANDSHAKE_ENCODING_DELTA:
- raise PhysicalConnectionError(
- _DROP_CODE_UNKNOWN_REQUEST_ENCODING)
-
- method, path, version, headers = _parse_request_text(
- block.encoded_handshake)
- if block.encoding == _HANDSHAKE_ENCODING_DELTA:
- headers = self._handshake_base.create_headers(headers)
-
- connection = _LogicalConnection(self, block.channel_id)
- request = _LogicalRequest(block.channel_id, method, path, version,
- headers, connection)
- return request
-
- def _do_handshake_for_logical_request(self, request, send_quota=0):
- try:
- receive_quota = self._channel_slots.popleft()
- except IndexError:
- raise LogicalChannelError(
- request.channel_id, _DROP_CODE_NEW_CHANNEL_SLOT_VIOLATION)
-
- handshaker = _MuxHandshaker(request, self.dispatcher,
- send_quota, receive_quota)
- try:
- handshaker.do_handshake()
- except handshake.VersionException, e:
- self._logger.info('%s', e)
- self._send_error_add_channel_response(
- request.channel_id, status=common.HTTP_STATUS_BAD_REQUEST)
- return False
- except handshake.HandshakeException, e:
- # TODO(bashi): Should we _Fail the Logical Channel_ with 3001
- # instead?
- self._logger.info('%s', e)
- self._send_error_add_channel_response(request.channel_id,
- status=e.status)
- return False
- except handshake.AbortedByUserException, e:
- self._logger.info('%s', e)
- self._send_error_add_channel_response(request.channel_id)
- return False
-
- return True
-
- def _add_logical_channel(self, logical_request):
- try:
- self._logical_channels_condition.acquire()
- if logical_request.channel_id in self._logical_channels:
- self._logger.debug('Channel id %d already exists' %
- logical_request.channel_id)
- raise PhysicalConnectionError(
- _DROP_CODE_CHANNEL_ALREADY_EXISTS,
- 'Channel id %d already exists' %
- logical_request.channel_id)
- worker = _Worker(self, logical_request)
- channel_data = _LogicalChannelData(logical_request, worker)
- self._logical_channels[logical_request.channel_id] = channel_data
- worker.start()
- finally:
- self._logical_channels_condition.release()
-
- def _process_add_channel_request(self, block):
- try:
- logical_request = self._create_logical_request(block)
- except ValueError, e:
- self._logger.debug('Failed to create logical request: %r' % e)
- self._send_error_add_channel_response(
- block.channel_id, status=common.HTTP_STATUS_BAD_REQUEST)
- return
- if self._do_handshake_for_logical_request(logical_request):
- if block.encoding == _HANDSHAKE_ENCODING_IDENTITY:
- # Update handshake base.
- # TODO(bashi): Make sure this is the right place to update
- # handshake base.
- self._handshake_base = _HandshakeDeltaBase(
- logical_request.headers_in)
- self._add_logical_channel(logical_request)
- else:
- self._send_error_add_channel_response(
- block.channel_id, status=common.HTTP_STATUS_BAD_REQUEST)
-
- def _process_flow_control(self, block):
- try:
- self._logical_channels_condition.acquire()
- if not block.channel_id in self._logical_channels:
- return
- channel_data = self._logical_channels[block.channel_id]
- channel_data.request.ws_stream.replenish_send_quota(
- block.send_quota)
- finally:
- self._logical_channels_condition.release()
-
- def _process_drop_channel(self, block):
- self._logger.debug(
- 'DropChannel received for %d: code=%r, reason=%r' %
- (block.channel_id, block.drop_code, block.drop_message))
- try:
- self._logical_channels_condition.acquire()
- if not block.channel_id in self._logical_channels:
- return
- channel_data = self._logical_channels[block.channel_id]
- channel_data.drop_code = _DROP_CODE_ACKNOWLEDGED
-
- # Close the logical channel
- channel_data.request.connection.set_read_state(
- _LogicalConnection.STATE_TERMINATED)
- channel_data.request.ws_stream.stop_sending()
- finally:
- self._logical_channels_condition.release()
-
- def _process_control_blocks(self, parser):
- for control_block in parser.read_control_blocks():
- opcode = control_block.opcode
- self._logger.debug('control block received, opcode: %d' % opcode)
- if opcode == _MUX_OPCODE_ADD_CHANNEL_REQUEST:
- self._process_add_channel_request(control_block)
- elif opcode == _MUX_OPCODE_ADD_CHANNEL_RESPONSE:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Received AddChannelResponse')
- elif opcode == _MUX_OPCODE_FLOW_CONTROL:
- self._process_flow_control(control_block)
- elif opcode == _MUX_OPCODE_DROP_CHANNEL:
- self._process_drop_channel(control_block)
- elif opcode == _MUX_OPCODE_NEW_CHANNEL_SLOT:
- raise PhysicalConnectionError(
- _DROP_CODE_INVALID_MUX_CONTROL_BLOCK,
- 'Received NewChannelSlot')
- else:
- raise MuxUnexpectedException(
- 'Unexpected opcode %r' % opcode)
-
- def _process_logical_frame(self, channel_id, parser):
- self._logger.debug('Received a frame. channel id=%d' % channel_id)
- try:
- self._logical_channels_condition.acquire()
- if not channel_id in self._logical_channels:
- # We must ignore the message for an inactive channel.
- return
- channel_data = self._logical_channels[channel_id]
- fin, rsv1, rsv2, rsv3, opcode, payload = parser.read_inner_frame()
- consuming_byte = len(payload)
- if opcode != common.OPCODE_CONTINUATION:
- consuming_byte += 1
- if not channel_data.request.ws_stream.consume_receive_quota(
- consuming_byte):
- # The client violates quota. Close logical channel.
- raise LogicalChannelError(
- channel_id, _DROP_CODE_SEND_QUOTA_VIOLATION)
- header = create_header(opcode, len(payload), fin, rsv1, rsv2, rsv3,
- mask=False)
- frame_data = header + payload
- channel_data.request.connection.append_frame_data(frame_data)
- finally:
- self._logical_channels_condition.release()
-
- def dispatch_message(self, message):
- """Dispatches message. The reader thread calls this method.
-
- Args:
- message: a message that contains encapsulated frame.
- Raises:
- PhysicalConnectionError: if the message contains physical
- connection level errors.
- LogicalChannelError: if the message contains logical channel
- level errors.
- """
-
- parser = _MuxFramePayloadParser(message)
- try:
- channel_id = parser.read_channel_id()
- except ValueError, e:
- raise PhysicalConnectionError(_DROP_CODE_CHANNEL_ID_TRUNCATED)
- if channel_id == _CONTROL_CHANNEL_ID:
- self._process_control_blocks(parser)
- else:
- self._process_logical_frame(channel_id, parser)
-
- def notify_worker_done(self, channel_id):
- """Called when a worker has finished.
-
- Args:
- channel_id: channel id corresponded with the worker.
- """
-
- self._logger.debug('Worker for channel id %d terminated' % channel_id)
- try:
- self._logical_channels_condition.acquire()
- if not channel_id in self._logical_channels:
- raise MuxUnexpectedException(
- 'Channel id %d not found' % channel_id)
- channel_data = self._logical_channels.pop(channel_id)
- finally:
- self._worker_done_notify_received = True
- self._logical_channels_condition.notify()
- self._logical_channels_condition.release()
-
- if not channel_data.request.server_terminated:
- self._send_drop_channel(
- channel_id, code=channel_data.drop_code,
- message=channel_data.drop_message)
-
- def notify_reader_done(self):
- """This method is called by the reader thread when the reader has
- finished.
- """
-
- self._logger.debug(
- 'Termiating all logical connections waiting for incoming data '
- '...')
- self._logical_channels_condition.acquire()
- for channel_data in self._logical_channels.values():
- try:
- channel_data.request.connection.set_read_state(
- _LogicalConnection.STATE_TERMINATED)
- except Exception:
- self._logger.debug(traceback.format_exc())
- self._logical_channels_condition.release()
-
- def notify_writer_done(self):
- """This method is called by the writer thread when the writer has
- finished.
- """
-
- self._logger.debug(
- 'Termiating all logical connections waiting for write '
- 'completion ...')
- self._logical_channels_condition.acquire()
- for channel_data in self._logical_channels.values():
- try:
- channel_data.request.connection.on_writer_done()
- except Exception:
- self._logger.debug(traceback.format_exc())
- self._logical_channels_condition.release()
-
- def fail_physical_connection(self, code, message):
- """Fail the physical connection.
-
- Args:
- code: drop reason code.
- message: drop message.
- """
-
- self._logger.debug('Failing the physical connection...')
- self._send_drop_channel(_CONTROL_CHANNEL_ID, code, message)
- self._writer.stop(common.STATUS_INTERNAL_ENDPOINT_ERROR)
-
- def fail_logical_channel(self, channel_id, code, message):
- """Fail a logical channel.
-
- Args:
- channel_id: channel id.
- code: drop reason code.
- message: drop message.
- """
-
- self._logger.debug('Failing logical channel %d...' % channel_id)
- try:
- self._logical_channels_condition.acquire()
- if channel_id in self._logical_channels:
- channel_data = self._logical_channels[channel_id]
- # Close the logical channel. notify_worker_done() will be
- # called later and it will send DropChannel.
- channel_data.drop_code = code
- channel_data.drop_message = message
-
- channel_data.request.connection.set_read_state(
- _LogicalConnection.STATE_TERMINATED)
- channel_data.request.ws_stream.stop_sending()
- else:
- self._send_drop_channel(channel_id, code, message)
- finally:
- self._logical_channels_condition.release()
-
-
-def use_mux(request):
- return hasattr(request, 'mux_processor') and (
- request.mux_processor.is_active())
-
-
-def start(request, dispatcher):
- mux_handler = _MuxHandler(request, dispatcher)
- mux_handler.start()
-
- mux_handler.add_channel_slots(_INITIAL_NUMBER_OF_CHANNEL_SLOTS,
- _INITIAL_QUOTA_FOR_CLIENT)
-
- mux_handler.wait_until_done()
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py
deleted file mode 100755
index 2bf3b0c28..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/standalone.py
+++ /dev/null
@@ -1,1139 +0,0 @@
-#!/usr/bin/env python
-#
-# Copyright 2012, 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.
-
-
-"""Standalone WebSocket server.
-
-Use this file to launch pywebsocket without Apache HTTP Server.
-
-
-BASIC USAGE
-
-Go to the src directory and run
-
- $ python mod_pywebsocket/standalone.py [-p <ws_port>]
- [-w <websock_handlers>]
- [-d <document_root>]
-
-<ws_port> is the port number to use for ws:// connection.
-
-<document_root> is the path to the root directory of HTML files.
-
-<websock_handlers> is the path to the root directory of WebSocket handlers.
-If not specified, <document_root> will be used. See __init__.py (or
-run $ pydoc mod_pywebsocket) for how to write WebSocket handlers.
-
-For more detail and other options, run
-
- $ python mod_pywebsocket/standalone.py --help
-
-or see _build_option_parser method below.
-
-For trouble shooting, adding "--log_level debug" might help you.
-
-
-TRY DEMO
-
-Go to the src directory and run
-
- $ python standalone.py -d example
-
-to launch pywebsocket with the sample handler and html on port 80. Open
-http://localhost/console.html, click the connect button, type something into
-the text box next to the send button and click the send button. If everything
-is working, you'll see the message you typed echoed by the server.
-
-
-SUPPORTING TLS
-
-To support TLS, run standalone.py with -t, -k, and -c options.
-
-Note that when ssl module is used and the key/cert location is incorrect,
-TLS connection silently fails while pyOpenSSL fails on startup.
-
-
-SUPPORTING CLIENT AUTHENTICATION
-
-To support client authentication with TLS, run standalone.py with -t, -k, -c,
-and --tls-client-auth, and --tls-client-ca options.
-
-E.g., $./standalone.py -d ../example -p 10443 -t -c ../test/cert/cert.pem -k
-../test/cert/key.pem --tls-client-auth --tls-client-ca=../test/cert/cacert.pem
-
-
-CONFIGURATION FILE
-
-You can also write a configuration file and use it by specifying the path to
-the configuration file by --config option. Please write a configuration file
-following the documentation of the Python ConfigParser library. Name of each
-entry must be the long version argument name. E.g. to set log level to debug,
-add the following line:
-
-log_level=debug
-
-For options which doesn't take value, please add some fake value. E.g. for
---tls option, add the following line:
-
-tls=True
-
-Note that tls will be enabled even if you write tls=False as the value part is
-fake.
-
-When both a command line argument and a configuration file entry are set for
-the same configuration item, the command line value will override one in the
-configuration file.
-
-
-THREADING
-
-This server is derived from SocketServer.ThreadingMixIn. Hence a thread is
-used for each request.
-
-
-SECURITY WARNING
-
-This uses CGIHTTPServer and CGIHTTPServer is not secure.
-It may execute arbitrary Python code or external programs. It should not be
-used outside a firewall.
-"""
-
-import BaseHTTPServer
-import CGIHTTPServer
-import SimpleHTTPServer
-import SocketServer
-import ConfigParser
-import base64
-import httplib
-import logging
-import logging.handlers
-import optparse
-import os
-import re
-import select
-import socket
-import sys
-import threading
-import time
-
-from mod_pywebsocket import common
-from mod_pywebsocket import dispatch
-from mod_pywebsocket import handshake
-from mod_pywebsocket import http_header_util
-from mod_pywebsocket import memorizingfile
-from mod_pywebsocket import util
-
-
-_DEFAULT_LOG_MAX_BYTES = 1024 * 256
-_DEFAULT_LOG_BACKUP_COUNT = 5
-
-_DEFAULT_REQUEST_QUEUE_SIZE = 128
-
-# 1024 is practically large enough to contain WebSocket handshake lines.
-_MAX_MEMORIZED_LINES = 1024
-
-# Constants for the --tls_module flag.
-_TLS_BY_STANDARD_MODULE = 'ssl'
-_TLS_BY_PYOPENSSL = 'pyopenssl'
-
-
-class _StandaloneConnection(object):
- """Mimic mod_python mp_conn."""
-
- def __init__(self, request_handler):
- """Construct an instance.
-
- Args:
- request_handler: A WebSocketRequestHandler instance.
- """
-
- self._request_handler = request_handler
-
- def get_local_addr(self):
- """Getter to mimic mp_conn.local_addr."""
-
- return (self._request_handler.server.server_name,
- self._request_handler.server.server_port)
- local_addr = property(get_local_addr)
-
- def get_remote_addr(self):
- """Getter to mimic mp_conn.remote_addr.
-
- Setting the property in __init__ won't work because the request
- handler is not initialized yet there."""
-
- return self._request_handler.client_address
- remote_addr = property(get_remote_addr)
-
- def write(self, data):
- """Mimic mp_conn.write()."""
-
- return self._request_handler.wfile.write(data)
-
- def read(self, length):
- """Mimic mp_conn.read()."""
-
- return self._request_handler.rfile.read(length)
-
- def get_memorized_lines(self):
- """Get memorized lines."""
-
- return self._request_handler.rfile.get_memorized_lines()
-
-
-class _StandaloneRequest(object):
- """Mimic mod_python request."""
-
- def __init__(self, request_handler, use_tls):
- """Construct an instance.
-
- Args:
- request_handler: A WebSocketRequestHandler instance.
- """
-
- self._logger = util.get_class_logger(self)
-
- self._request_handler = request_handler
- self.connection = _StandaloneConnection(request_handler)
- self._use_tls = use_tls
- self.headers_in = request_handler.headers
-
- def get_uri(self):
- """Getter to mimic request.uri.
-
- This method returns the raw data at the Request-URI part of the
- Request-Line, while the uri method on the request object of mod_python
- returns the path portion after parsing the raw data. This behavior is
- kept for compatibility.
- """
-
- return self._request_handler.path
- uri = property(get_uri)
-
- def get_unparsed_uri(self):
- """Getter to mimic request.unparsed_uri."""
-
- return self._request_handler.path
- unparsed_uri = property(get_unparsed_uri)
-
- def get_method(self):
- """Getter to mimic request.method."""
-
- return self._request_handler.command
- method = property(get_method)
-
- def get_protocol(self):
- """Getter to mimic request.protocol."""
-
- return self._request_handler.request_version
- protocol = property(get_protocol)
-
- def is_https(self):
- """Mimic request.is_https()."""
-
- return self._use_tls
-
-
-def _import_ssl():
- global ssl
- try:
- import ssl
- return True
- except ImportError:
- return False
-
-
-def _import_pyopenssl():
- global OpenSSL
- try:
- import OpenSSL.SSL
- return True
- except ImportError:
- return False
-
-
-class _StandaloneSSLConnection(object):
- """A wrapper class for OpenSSL.SSL.Connection to
- - provide makefile method which is not supported by the class
- - tweak shutdown method since OpenSSL.SSL.Connection.shutdown doesn't
- accept the "how" argument.
- - convert SysCallError exceptions that its recv method may raise into a
- return value of '', meaning EOF. We cannot overwrite the recv method on
- self._connection since it's immutable.
- """
-
- _OVERRIDDEN_ATTRIBUTES = ['_connection', 'makefile', 'shutdown', 'recv']
-
- def __init__(self, connection):
- self._connection = connection
-
- def __getattribute__(self, name):
- if name in _StandaloneSSLConnection._OVERRIDDEN_ATTRIBUTES:
- return object.__getattribute__(self, name)
- return self._connection.__getattribute__(name)
-
- def __setattr__(self, name, value):
- if name in _StandaloneSSLConnection._OVERRIDDEN_ATTRIBUTES:
- return object.__setattr__(self, name, value)
- return self._connection.__setattr__(name, value)
-
- def makefile(self, mode='r', bufsize=-1):
- return socket._fileobject(self, mode, bufsize)
-
- def shutdown(self, unused_how):
- self._connection.shutdown()
-
- def recv(self, bufsize, flags=0):
- if flags != 0:
- raise ValueError('Non-zero flags not allowed')
-
- try:
- return self._connection.recv(bufsize)
- except OpenSSL.SSL.SysCallError, (err, message):
- if err == -1:
- # Suppress "unexpected EOF" exception. See the OpenSSL document
- # for SSL_get_error.
- return ''
- raise
-
-
-def _alias_handlers(dispatcher, websock_handlers_map_file):
- """Set aliases specified in websock_handler_map_file in dispatcher.
-
- Args:
- dispatcher: dispatch.Dispatcher instance
- websock_handler_map_file: alias map file
- """
-
- fp = open(websock_handlers_map_file)
- try:
- for line in fp:
- if line[0] == '#' or line.isspace():
- continue
- m = re.match('(\S+)\s+(\S+)', line)
- if not m:
- logging.warning('Wrong format in map file:' + line)
- continue
- try:
- dispatcher.add_resource_path_alias(
- m.group(1), m.group(2))
- except dispatch.DispatchException, e:
- logging.error(str(e))
- finally:
- fp.close()
-
-
-class WebSocketServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
- """HTTPServer specialized for WebSocket."""
-
- # Overrides SocketServer.ThreadingMixIn.daemon_threads
- daemon_threads = True
- # Overrides BaseHTTPServer.HTTPServer.allow_reuse_address
- allow_reuse_address = True
-
- def __init__(self, options):
- """Override SocketServer.TCPServer.__init__ to set SSL enabled
- socket object to self.socket before server_bind and server_activate,
- if necessary.
- """
-
- # Share a Dispatcher among request handlers to save time for
- # instantiation. Dispatcher can be shared because it is thread-safe.
- options.dispatcher = dispatch.Dispatcher(
- options.websock_handlers,
- options.scan_dir,
- options.allow_handlers_outside_root_dir)
- if options.websock_handlers_map_file:
- _alias_handlers(options.dispatcher,
- options.websock_handlers_map_file)
- warnings = options.dispatcher.source_warnings()
- if warnings:
- for warning in warnings:
- logging.warning('Warning in source loading: %s' % warning)
-
- self._logger = util.get_class_logger(self)
-
- self.request_queue_size = options.request_queue_size
- self.__ws_is_shut_down = threading.Event()
- self.__ws_serving = False
-
- SocketServer.BaseServer.__init__(
- self, (options.server_host, options.port), WebSocketRequestHandler)
-
- # Expose the options object to allow handler objects access it. We name
- # it with websocket_ prefix to avoid conflict.
- self.websocket_server_options = options
-
- self._create_sockets()
- self.server_bind()
- self.server_activate()
-
- def _create_sockets(self):
- self.server_name, self.server_port = self.server_address
- self._sockets = []
- if not self.server_name:
- # On platforms that doesn't support IPv6, the first bind fails.
- # On platforms that supports IPv6
- # - If it binds both IPv4 and IPv6 on call with AF_INET6, the
- # first bind succeeds and the second fails (we'll see 'Address
- # already in use' error).
- # - If it binds only IPv6 on call with AF_INET6, both call are
- # expected to succeed to listen both protocol.
- addrinfo_array = [
- (socket.AF_INET6, socket.SOCK_STREAM, '', '', ''),
- (socket.AF_INET, socket.SOCK_STREAM, '', '', '')]
- else:
- addrinfo_array = socket.getaddrinfo(self.server_name,
- self.server_port,
- socket.AF_UNSPEC,
- socket.SOCK_STREAM,
- socket.IPPROTO_TCP)
- for addrinfo in addrinfo_array:
- self._logger.info('Create socket on: %r', addrinfo)
- family, socktype, proto, canonname, sockaddr = addrinfo
- try:
- socket_ = socket.socket(family, socktype)
- except Exception, e:
- self._logger.info('Skip by failure: %r', e)
- continue
- server_options = self.websocket_server_options
- if server_options.use_tls:
- # For the case of _HAS_OPEN_SSL, we do wrapper setup after
- # accept.
- if server_options.tls_module == _TLS_BY_STANDARD_MODULE:
- if server_options.tls_client_auth:
- if server_options.tls_client_cert_optional:
- client_cert_ = ssl.CERT_OPTIONAL
- else:
- client_cert_ = ssl.CERT_REQUIRED
- else:
- client_cert_ = ssl.CERT_NONE
- socket_ = ssl.wrap_socket(socket_,
- keyfile=server_options.private_key,
- certfile=server_options.certificate,
- ssl_version=ssl.PROTOCOL_SSLv23,
- ca_certs=server_options.tls_client_ca,
- cert_reqs=client_cert_,
- do_handshake_on_connect=False)
- self._sockets.append((socket_, addrinfo))
-
- def server_bind(self):
- """Override SocketServer.TCPServer.server_bind to enable multiple
- sockets bind.
- """
-
- failed_sockets = []
-
- for socketinfo in self._sockets:
- socket_, addrinfo = socketinfo
- self._logger.info('Bind on: %r', addrinfo)
- if self.allow_reuse_address:
- socket_.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
- try:
- socket_.bind(self.server_address)
- except Exception, e:
- self._logger.info('Skip by failure: %r', e)
- socket_.close()
- failed_sockets.append(socketinfo)
- if self.server_address[1] == 0:
- # The operating system assigns the actual port number for port
- # number 0. This case, the second and later sockets should use
- # the same port number. Also self.server_port is rewritten
- # because it is exported, and will be used by external code.
- self.server_address = (
- self.server_name, socket_.getsockname()[1])
- self.server_port = self.server_address[1]
- self._logger.info('Port %r is assigned', self.server_port)
-
- for socketinfo in failed_sockets:
- self._sockets.remove(socketinfo)
-
- def server_activate(self):
- """Override SocketServer.TCPServer.server_activate to enable multiple
- sockets listen.
- """
-
- failed_sockets = []
-
- for socketinfo in self._sockets:
- socket_, addrinfo = socketinfo
- self._logger.info('Listen on: %r', addrinfo)
- try:
- socket_.listen(self.request_queue_size)
- except Exception, e:
- self._logger.info('Skip by failure: %r', e)
- socket_.close()
- failed_sockets.append(socketinfo)
-
- for socketinfo in failed_sockets:
- self._sockets.remove(socketinfo)
-
- if len(self._sockets) == 0:
- self._logger.critical(
- 'No sockets activated. Use info log level to see the reason.')
-
- def server_close(self):
- """Override SocketServer.TCPServer.server_close to enable multiple
- sockets close.
- """
-
- for socketinfo in self._sockets:
- socket_, addrinfo = socketinfo
- self._logger.info('Close on: %r', addrinfo)
- socket_.close()
-
- def fileno(self):
- """Override SocketServer.TCPServer.fileno."""
-
- self._logger.critical('Not supported: fileno')
- return self._sockets[0][0].fileno()
-
- def handle_error(self, request, client_address):
- """Override SocketServer.handle_error."""
-
- self._logger.error(
- 'Exception in processing request from: %r\n%s',
- client_address,
- util.get_stack_trace())
- # Note: client_address is a tuple.
-
- def get_request(self):
- """Override TCPServer.get_request to wrap OpenSSL.SSL.Connection
- object with _StandaloneSSLConnection to provide makefile method. We
- cannot substitute OpenSSL.SSL.Connection.makefile since it's readonly
- attribute.
- """
-
- accepted_socket, client_address = self.socket.accept()
-
- server_options = self.websocket_server_options
- if server_options.use_tls:
- if server_options.tls_module == _TLS_BY_STANDARD_MODULE:
- try:
- accepted_socket.do_handshake()
- except ssl.SSLError, e:
- self._logger.debug('%r', e)
- raise
-
- # Print cipher in use. Handshake is done on accept.
- self._logger.debug('Cipher: %s', accepted_socket.cipher())
- self._logger.debug('Client cert: %r',
- accepted_socket.getpeercert())
- elif server_options.tls_module == _TLS_BY_PYOPENSSL:
- # We cannot print the cipher in use. pyOpenSSL doesn't provide
- # any method to fetch that.
-
- ctx = OpenSSL.SSL.Context(OpenSSL.SSL.SSLv23_METHOD)
- ctx.use_privatekey_file(server_options.private_key)
- ctx.use_certificate_file(server_options.certificate)
-
- def default_callback(conn, cert, errnum, errdepth, ok):
- return ok == 1
-
- # See the OpenSSL document for SSL_CTX_set_verify.
- if server_options.tls_client_auth:
- verify_mode = OpenSSL.SSL.VERIFY_PEER
- if not server_options.tls_client_cert_optional:
- verify_mode |= OpenSSL.SSL.VERIFY_FAIL_IF_NO_PEER_CERT
- ctx.set_verify(verify_mode, default_callback)
- ctx.load_verify_locations(server_options.tls_client_ca,
- None)
- else:
- ctx.set_verify(OpenSSL.SSL.VERIFY_NONE, default_callback)
-
- accepted_socket = OpenSSL.SSL.Connection(ctx, accepted_socket)
- accepted_socket.set_accept_state()
-
- # Convert SSL related error into socket.error so that
- # SocketServer ignores them and keeps running.
- #
- # TODO(tyoshino): Convert all kinds of errors.
- try:
- accepted_socket.do_handshake()
- except OpenSSL.SSL.Error, e:
- # Set errno part to 1 (SSL_ERROR_SSL) like the ssl module
- # does.
- self._logger.debug('%r', e)
- raise socket.error(1, '%r' % e)
- cert = accepted_socket.get_peer_certificate()
- self._logger.debug('Client cert subject: %r',
- cert.get_subject().get_components())
- accepted_socket = _StandaloneSSLConnection(accepted_socket)
- else:
- raise ValueError('No TLS support module is available')
-
- return accepted_socket, client_address
-
- def serve_forever(self, poll_interval=0.5):
- """Override SocketServer.BaseServer.serve_forever."""
-
- self.__ws_serving = True
- self.__ws_is_shut_down.clear()
- handle_request = self.handle_request
- if hasattr(self, '_handle_request_noblock'):
- handle_request = self._handle_request_noblock
- else:
- self._logger.warning('Fallback to blocking request handler')
- try:
- while self.__ws_serving:
- r, w, e = select.select(
- [socket_[0] for socket_ in self._sockets],
- [], [], poll_interval)
- for socket_ in r:
- self.socket = socket_
- handle_request()
- self.socket = None
- finally:
- self.__ws_is_shut_down.set()
-
- def shutdown(self):
- """Override SocketServer.BaseServer.shutdown."""
-
- self.__ws_serving = False
- self.__ws_is_shut_down.wait()
-
-
-class WebSocketRequestHandler(CGIHTTPServer.CGIHTTPRequestHandler):
- """CGIHTTPRequestHandler specialized for WebSocket."""
-
- # Use httplib.HTTPMessage instead of mimetools.Message.
- MessageClass = httplib.HTTPMessage
-
- def setup(self):
- """Override SocketServer.StreamRequestHandler.setup to wrap rfile
- with MemorizingFile.
-
- This method will be called by BaseRequestHandler's constructor
- before calling BaseHTTPRequestHandler.handle.
- BaseHTTPRequestHandler.handle will call
- BaseHTTPRequestHandler.handle_one_request and it will call
- WebSocketRequestHandler.parse_request.
- """
-
- # Call superclass's setup to prepare rfile, wfile, etc. See setup
- # definition on the root class SocketServer.StreamRequestHandler to
- # understand what this does.
- CGIHTTPServer.CGIHTTPRequestHandler.setup(self)
-
- self.rfile = memorizingfile.MemorizingFile(
- self.rfile,
- max_memorized_lines=_MAX_MEMORIZED_LINES)
-
- def __init__(self, request, client_address, server):
- self._logger = util.get_class_logger(self)
-
- self._options = server.websocket_server_options
-
- # Overrides CGIHTTPServerRequestHandler.cgi_directories.
- self.cgi_directories = self._options.cgi_directories
- # Replace CGIHTTPRequestHandler.is_executable method.
- if self._options.is_executable_method is not None:
- self.is_executable = self._options.is_executable_method
-
- # This actually calls BaseRequestHandler.__init__.
- CGIHTTPServer.CGIHTTPRequestHandler.__init__(
- self, request, client_address, server)
-
- def parse_request(self):
- """Override BaseHTTPServer.BaseHTTPRequestHandler.parse_request.
-
- Return True to continue processing for HTTP(S), False otherwise.
-
- See BaseHTTPRequestHandler.handle_one_request method which calls
- this method to understand how the return value will be handled.
- """
-
- # We hook parse_request method, but also call the original
- # CGIHTTPRequestHandler.parse_request since when we return False,
- # CGIHTTPRequestHandler.handle_one_request continues processing and
- # it needs variables set by CGIHTTPRequestHandler.parse_request.
- #
- # Variables set by this method will be also used by WebSocket request
- # handling (self.path, self.command, self.requestline, etc. See also
- # how _StandaloneRequest's members are implemented using these
- # attributes).
- if not CGIHTTPServer.CGIHTTPRequestHandler.parse_request(self):
- return False
-
- if self._options.use_basic_auth:
- auth = self.headers.getheader('Authorization')
- if auth != self._options.basic_auth_credential:
- self.send_response(401)
- self.send_header('WWW-Authenticate',
- 'Basic realm="Pywebsocket"')
- self.end_headers()
- self._logger.info('Request basic authentication')
- return True
-
- host, port, resource = http_header_util.parse_uri(self.path)
- if resource is None:
- self._logger.info('Invalid URI: %r', self.path)
- self._logger.info('Fallback to CGIHTTPRequestHandler')
- return True
- server_options = self.server.websocket_server_options
- if host is not None:
- validation_host = server_options.validation_host
- if validation_host is not None and host != validation_host:
- self._logger.info('Invalid host: %r (expected: %r)',
- host,
- validation_host)
- self._logger.info('Fallback to CGIHTTPRequestHandler')
- return True
- if port is not None:
- validation_port = server_options.validation_port
- if validation_port is not None and port != validation_port:
- self._logger.info('Invalid port: %r (expected: %r)',
- port,
- validation_port)
- self._logger.info('Fallback to CGIHTTPRequestHandler')
- return True
- self.path = resource
-
- request = _StandaloneRequest(self, self._options.use_tls)
-
- try:
- # Fallback to default http handler for request paths for which
- # we don't have request handlers.
- if not self._options.dispatcher.get_handler_suite(self.path):
- self._logger.info('No handler for resource: %r',
- self.path)
- self._logger.info('Fallback to CGIHTTPRequestHandler')
- return True
- except dispatch.DispatchException, e:
- self._logger.info('Dispatch failed for error: %s', e)
- self.send_error(e.status)
- return False
-
- # If any Exceptions without except clause setup (including
- # DispatchException) is raised below this point, it will be caught
- # and logged by WebSocketServer.
-
- try:
- try:
- handshake.do_handshake(
- request,
- self._options.dispatcher,
- allowDraft75=self._options.allow_draft75,
- strict=self._options.strict)
- except handshake.VersionException, e:
- self._logger.info('Handshake failed for version error: %s', e)
- self.send_response(common.HTTP_STATUS_BAD_REQUEST)
- self.send_header(common.SEC_WEBSOCKET_VERSION_HEADER,
- e.supported_versions)
- self.end_headers()
- return False
- except handshake.HandshakeException, e:
- # Handshake for ws(s) failed.
- self._logger.info('Handshake failed for error: %s', e)
- self.send_error(e.status)
- return False
-
- request._dispatcher = self._options.dispatcher
- self._options.dispatcher.transfer_data(request)
- except handshake.AbortedByUserException, e:
- self._logger.info('Aborted: %s', e)
- return False
-
- def log_request(self, code='-', size='-'):
- """Override BaseHTTPServer.log_request."""
-
- self._logger.info('"%s" %s %s',
- self.requestline, str(code), str(size))
-
- def log_error(self, *args):
- """Override BaseHTTPServer.log_error."""
-
- # Despite the name, this method is for warnings than for errors.
- # For example, HTTP status code is logged by this method.
- self._logger.warning('%s - %s',
- self.address_string(),
- args[0] % args[1:])
-
- def is_cgi(self):
- """Test whether self.path corresponds to a CGI script.
-
- Add extra check that self.path doesn't contains ..
- Also check if the file is a executable file or not.
- If the file is not executable, it is handled as static file or dir
- rather than a CGI script.
- """
-
- if CGIHTTPServer.CGIHTTPRequestHandler.is_cgi(self):
- if '..' in self.path:
- return False
- # strip query parameter from request path
- resource_name = self.path.split('?', 2)[0]
- # convert resource_name into real path name in filesystem.
- scriptfile = self.translate_path(resource_name)
- if not os.path.isfile(scriptfile):
- return False
- if not self.is_executable(scriptfile):
- return False
- return True
- return False
-
-
-def _get_logger_from_class(c):
- return logging.getLogger('%s.%s' % (c.__module__, c.__name__))
-
-
-def _configure_logging(options):
- logging.addLevelName(common.LOGLEVEL_FINE, 'FINE')
-
- logger = logging.getLogger()
- logger.setLevel(logging.getLevelName(options.log_level.upper()))
- if options.log_file:
- handler = logging.handlers.RotatingFileHandler(
- options.log_file, 'a', options.log_max, options.log_count)
- else:
- handler = logging.StreamHandler()
- formatter = logging.Formatter(
- '[%(asctime)s] [%(levelname)s] %(name)s: %(message)s')
- handler.setFormatter(formatter)
- logger.addHandler(handler)
-
- deflate_log_level_name = logging.getLevelName(
- options.deflate_log_level.upper())
- _get_logger_from_class(util._Deflater).setLevel(
- deflate_log_level_name)
- _get_logger_from_class(util._Inflater).setLevel(
- deflate_log_level_name)
-
-
-def _build_option_parser():
- parser = optparse.OptionParser()
-
- parser.add_option('--config', dest='config_file', type='string',
- default=None,
- help=('Path to configuration file. See the file comment '
- 'at the top of this file for the configuration '
- 'file format'))
- parser.add_option('-H', '--server-host', '--server_host',
- dest='server_host',
- default='',
- help='server hostname to listen to')
- parser.add_option('-V', '--validation-host', '--validation_host',
- dest='validation_host',
- default=None,
- help='server hostname to validate in absolute path.')
- parser.add_option('-p', '--port', dest='port', type='int',
- default=common.DEFAULT_WEB_SOCKET_PORT,
- help='port to listen to')
- parser.add_option('-P', '--validation-port', '--validation_port',
- dest='validation_port', type='int',
- default=None,
- help='server port to validate in absolute path.')
- parser.add_option('-w', '--websock-handlers', '--websock_handlers',
- dest='websock_handlers',
- default='.',
- help=('The root directory of WebSocket handler files. '
- 'If the path is relative, --document-root is used '
- 'as the base.'))
- parser.add_option('-m', '--websock-handlers-map-file',
- '--websock_handlers_map_file',
- dest='websock_handlers_map_file',
- default=None,
- help=('WebSocket handlers map file. '
- 'Each line consists of alias_resource_path and '
- 'existing_resource_path, separated by spaces.'))
- parser.add_option('-s', '--scan-dir', '--scan_dir', dest='scan_dir',
- default=None,
- help=('Must be a directory under --websock-handlers. '
- 'Only handlers under this directory are scanned '
- 'and registered to the server. '
- 'Useful for saving scan time when the handler '
- 'root directory contains lots of files that are '
- 'not handler file or are handler files but you '
- 'don\'t want them to be registered. '))
- parser.add_option('--allow-handlers-outside-root-dir',
- '--allow_handlers_outside_root_dir',
- dest='allow_handlers_outside_root_dir',
- action='store_true',
- default=False,
- help=('Scans WebSocket handlers even if their canonical '
- 'path is not under --websock-handlers.'))
- parser.add_option('-d', '--document-root', '--document_root',
- dest='document_root', default='.',
- help='Document root directory.')
- parser.add_option('-x', '--cgi-paths', '--cgi_paths', dest='cgi_paths',
- default=None,
- help=('CGI paths relative to document_root.'
- 'Comma-separated. (e.g -x /cgi,/htbin) '
- 'Files under document_root/cgi_path are handled '
- 'as CGI programs. Must be executable.'))
- parser.add_option('-t', '--tls', dest='use_tls', action='store_true',
- default=False, help='use TLS (wss://)')
- parser.add_option('--tls-module', '--tls_module', dest='tls_module',
- type='choice',
- choices = [_TLS_BY_STANDARD_MODULE, _TLS_BY_PYOPENSSL],
- help='Use ssl module if "%s" is specified. '
- 'Use pyOpenSSL module if "%s" is specified' %
- (_TLS_BY_STANDARD_MODULE, _TLS_BY_PYOPENSSL))
- parser.add_option('-k', '--private-key', '--private_key',
- dest='private_key',
- default='', help='TLS private key file.')
- parser.add_option('-c', '--certificate', dest='certificate',
- default='', help='TLS certificate file.')
- parser.add_option('--tls-client-auth', dest='tls_client_auth',
- action='store_true', default=False,
- help='Requests TLS client auth on every connection.')
- parser.add_option('--tls-client-cert-optional',
- dest='tls_client_cert_optional',
- action='store_true', default=False,
- help=('Makes client certificate optional even though '
- 'TLS client auth is enabled.'))
- parser.add_option('--tls-client-ca', dest='tls_client_ca', default='',
- help=('Specifies a pem file which contains a set of '
- 'concatenated CA certificates which are used to '
- 'validate certificates passed from clients'))
- parser.add_option('--basic-auth', dest='use_basic_auth',
- action='store_true', default=False,
- help='Requires Basic authentication.')
- parser.add_option('--basic-auth-credential',
- dest='basic_auth_credential', default='test:test',
- help='Specifies the credential of basic authentication '
- 'by username:password pair (e.g. test:test).')
- parser.add_option('-l', '--log-file', '--log_file', dest='log_file',
- default='', help='Log file.')
- # Custom log level:
- # - FINE: Prints status of each frame processing step
- parser.add_option('--log-level', '--log_level', type='choice',
- dest='log_level', default='warn',
- choices=['fine',
- 'debug', 'info', 'warning', 'warn', 'error',
- 'critical'],
- help='Log level.')
- parser.add_option('--deflate-log-level', '--deflate_log_level',
- type='choice',
- dest='deflate_log_level', default='warn',
- choices=['debug', 'info', 'warning', 'warn', 'error',
- 'critical'],
- help='Log level for _Deflater and _Inflater.')
- parser.add_option('--thread-monitor-interval-in-sec',
- '--thread_monitor_interval_in_sec',
- dest='thread_monitor_interval_in_sec',
- type='int', default=-1,
- help=('If positive integer is specified, run a thread '
- 'monitor to show the status of server threads '
- 'periodically in the specified inteval in '
- 'second. If non-positive integer is specified, '
- 'disable the thread monitor.'))
- parser.add_option('--log-max', '--log_max', dest='log_max', type='int',
- default=_DEFAULT_LOG_MAX_BYTES,
- help='Log maximum bytes')
- parser.add_option('--log-count', '--log_count', dest='log_count',
- type='int', default=_DEFAULT_LOG_BACKUP_COUNT,
- help='Log backup count')
- parser.add_option('--allow-draft75', dest='allow_draft75',
- action='store_true', default=False,
- help='Obsolete option. Ignored.')
- parser.add_option('--strict', dest='strict', action='store_true',
- default=False, help='Obsolete option. Ignored.')
- parser.add_option('-q', '--queue', dest='request_queue_size', type='int',
- default=_DEFAULT_REQUEST_QUEUE_SIZE,
- help='request queue size')
-
- return parser
-
-
-class ThreadMonitor(threading.Thread):
- daemon = True
-
- def __init__(self, interval_in_sec):
- threading.Thread.__init__(self, name='ThreadMonitor')
-
- self._logger = util.get_class_logger(self)
-
- self._interval_in_sec = interval_in_sec
-
- def run(self):
- while True:
- thread_name_list = []
- for thread in threading.enumerate():
- thread_name_list.append(thread.name)
- self._logger.info(
- "%d active threads: %s",
- threading.active_count(),
- ', '.join(thread_name_list))
- time.sleep(self._interval_in_sec)
-
-
-def _parse_args_and_config(args):
- parser = _build_option_parser()
-
- # First, parse options without configuration file.
- temporary_options, temporary_args = parser.parse_args(args=args)
- if temporary_args:
- logging.critical(
- 'Unrecognized positional arguments: %r', temporary_args)
- sys.exit(1)
-
- if temporary_options.config_file:
- try:
- config_fp = open(temporary_options.config_file, 'r')
- except IOError, e:
- logging.critical(
- 'Failed to open configuration file %r: %r',
- temporary_options.config_file,
- e)
- sys.exit(1)
-
- config_parser = ConfigParser.SafeConfigParser()
- config_parser.readfp(config_fp)
- config_fp.close()
-
- args_from_config = []
- for name, value in config_parser.items('pywebsocket'):
- args_from_config.append('--' + name)
- args_from_config.append(value)
- if args is None:
- args = args_from_config
- else:
- args = args_from_config + args
- return parser.parse_args(args=args)
- else:
- return temporary_options, temporary_args
-
-
-def _main(args=None):
- """You can call this function from your own program, but please note that
- this function has some side-effects that might affect your program. For
- example, util.wrap_popen3_for_win use in this method replaces implementation
- of os.popen3.
- """
-
- options, args = _parse_args_and_config(args=args)
-
- os.chdir(options.document_root)
-
- _configure_logging(options)
-
- if options.allow_draft75:
- logging.warning('--allow_draft75 option is obsolete.')
-
- if options.strict:
- logging.warning('--strict option is obsolete.')
-
- # TODO(tyoshino): Clean up initialization of CGI related values. Move some
- # of code here to WebSocketRequestHandler class if it's better.
- options.cgi_directories = []
- options.is_executable_method = None
- if options.cgi_paths:
- options.cgi_directories = options.cgi_paths.split(',')
- if sys.platform in ('cygwin', 'win32'):
- cygwin_path = None
- # For Win32 Python, it is expected that CYGWIN_PATH
- # is set to a directory of cygwin binaries.
- # For example, websocket_server.py in Chromium sets CYGWIN_PATH to
- # full path of third_party/cygwin/bin.
- if 'CYGWIN_PATH' in os.environ:
- cygwin_path = os.environ['CYGWIN_PATH']
- util.wrap_popen3_for_win(cygwin_path)
-
- def __check_script(scriptpath):
- return util.get_script_interp(scriptpath, cygwin_path)
-
- options.is_executable_method = __check_script
-
- if options.use_tls:
- if options.tls_module is None:
- if _import_ssl():
- options.tls_module = _TLS_BY_STANDARD_MODULE
- logging.debug('Using ssl module')
- elif _import_pyopenssl():
- options.tls_module = _TLS_BY_PYOPENSSL
- logging.debug('Using pyOpenSSL module')
- else:
- logging.critical(
- 'TLS support requires ssl or pyOpenSSL module.')
- sys.exit(1)
- elif options.tls_module == _TLS_BY_STANDARD_MODULE:
- if not _import_ssl():
- logging.critical('ssl module is not available')
- sys.exit(1)
- elif options.tls_module == _TLS_BY_PYOPENSSL:
- if not _import_pyopenssl():
- logging.critical('pyOpenSSL module is not available')
- sys.exit(1)
- else:
- logging.critical('Invalid --tls-module option: %r',
- options.tls_module)
- sys.exit(1)
-
- if not options.private_key or not options.certificate:
- logging.critical(
- 'To use TLS, specify private_key and certificate.')
- sys.exit(1)
-
- if (options.tls_client_cert_optional and
- not options.tls_client_auth):
- logging.critical('Client authentication must be enabled to '
- 'specify tls_client_cert_optional')
- sys.exit(1)
- else:
- if options.tls_module is not None:
- logging.critical('Use --tls-module option only together with '
- '--use-tls option.')
- sys.exit(1)
-
- if options.tls_client_auth:
- logging.critical('TLS must be enabled for client authentication.')
- sys.exit(1)
-
- if options.tls_client_cert_optional:
- logging.critical('TLS must be enabled for client authentication.')
- sys.exit(1)
-
- if not options.scan_dir:
- options.scan_dir = options.websock_handlers
-
- if options.use_basic_auth:
- options.basic_auth_credential = 'Basic ' + base64.b64encode(
- options.basic_auth_credential)
-
- try:
- if options.thread_monitor_interval_in_sec > 0:
- # Run a thread monitor to show the status of server threads for
- # debugging.
- ThreadMonitor(options.thread_monitor_interval_in_sec).start()
-
- server = WebSocketServer(options)
- server.serve_forever()
- except Exception, e:
- logging.critical('mod_pywebsocket: %s' % e)
- logging.critical('mod_pywebsocket: %s' % util.get_stack_trace())
- sys.exit(1)
-
-
-if __name__ == '__main__':
- _main(sys.argv[1:])
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py
deleted file mode 100644
index edc533279..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/stream.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright 2011, 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 file exports public symbols.
-"""
-
-
-from mod_pywebsocket._stream_base import BadOperationException
-from mod_pywebsocket._stream_base import ConnectionTerminatedException
-from mod_pywebsocket._stream_base import InvalidFrameException
-from mod_pywebsocket._stream_base import InvalidUTF8Exception
-from mod_pywebsocket._stream_base import UnsupportedFrameException
-from mod_pywebsocket._stream_hixie75 import StreamHixie75
-from mod_pywebsocket._stream_hybi import Frame
-from mod_pywebsocket._stream_hybi import Stream
-from mod_pywebsocket._stream_hybi import StreamOptions
-
-# These methods are intended to be used by WebSocket client developers to have
-# their implementations receive broken data in tests.
-from mod_pywebsocket._stream_hybi import create_close_frame
-from mod_pywebsocket._stream_hybi import create_header
-from mod_pywebsocket._stream_hybi import create_length_header
-from mod_pywebsocket._stream_hybi import create_ping_frame
-from mod_pywebsocket._stream_hybi import create_pong_frame
-from mod_pywebsocket._stream_hybi import create_binary_frame
-from mod_pywebsocket._stream_hybi import create_text_frame
-from mod_pywebsocket._stream_hybi import create_closing_handshake_body
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py b/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py
deleted file mode 100644
index adaca3a08..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/mod_pywebsocket/util.py
+++ /dev/null
@@ -1,409 +0,0 @@
-# Copyright 2011, 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.
-
-
-"""WebSocket utilities.
-"""
-
-
-import array
-import errno
-
-# Import hash classes from a module available and recommended for each Python
-# version and re-export those symbol. Use sha and md5 module in Python 2.4, and
-# hashlib module in Python 2.6.
-try:
- import hashlib
- md5_hash = hashlib.md5
- sha1_hash = hashlib.sha1
-except ImportError:
- import md5
- import sha
- md5_hash = md5.md5
- sha1_hash = sha.sha
-
-import StringIO
-import logging
-import os
-import re
-import socket
-import traceback
-import zlib
-
-try:
- from mod_pywebsocket import fast_masking
-except ImportError:
- pass
-
-
-def get_stack_trace():
- """Get the current stack trace as string.
-
- This is needed to support Python 2.3.
- TODO: Remove this when we only support Python 2.4 and above.
- Use traceback.format_exc instead.
- """
-
- out = StringIO.StringIO()
- traceback.print_exc(file=out)
- return out.getvalue()
-
-
-def prepend_message_to_exception(message, exc):
- """Prepend message to the exception."""
-
- exc.args = (message + str(exc),)
- return
-
-
-def __translate_interp(interp, cygwin_path):
- """Translate interp program path for Win32 python to run cygwin program
- (e.g. perl). Note that it doesn't support path that contains space,
- which is typically true for Unix, where #!-script is written.
- For Win32 python, cygwin_path is a directory of cygwin binaries.
-
- Args:
- interp: interp command line
- cygwin_path: directory name of cygwin binary, or None
- Returns:
- translated interp command line.
- """
- if not cygwin_path:
- return interp
- m = re.match('^[^ ]*/([^ ]+)( .*)?', interp)
- if m:
- cmd = os.path.join(cygwin_path, m.group(1))
- return cmd + m.group(2)
- return interp
-
-
-def get_script_interp(script_path, cygwin_path=None):
- """Gets #!-interpreter command line from the script.
-
- It also fixes command path. When Cygwin Python is used, e.g. in WebKit,
- it could run "/usr/bin/perl -wT hello.pl".
- When Win32 Python is used, e.g. in Chromium, it couldn't. So, fix
- "/usr/bin/perl" to "<cygwin_path>\perl.exe".
-
- Args:
- script_path: pathname of the script
- cygwin_path: directory name of cygwin binary, or None
- Returns:
- #!-interpreter command line, or None if it is not #!-script.
- """
- fp = open(script_path)
- line = fp.readline()
- fp.close()
- m = re.match('^#!(.*)', line)
- if m:
- return __translate_interp(m.group(1), cygwin_path)
- return None
-
-
-def wrap_popen3_for_win(cygwin_path):
- """Wrap popen3 to support #!-script on Windows.
-
- Args:
- cygwin_path: path for cygwin binary if command path is needed to be
- translated. None if no translation required.
- """
-
- __orig_popen3 = os.popen3
-
- def __wrap_popen3(cmd, mode='t', bufsize=-1):
- cmdline = cmd.split(' ')
- interp = get_script_interp(cmdline[0], cygwin_path)
- if interp:
- cmd = interp + ' ' + cmd
- return __orig_popen3(cmd, mode, bufsize)
-
- os.popen3 = __wrap_popen3
-
-
-def hexify(s):
- return ' '.join(map(lambda x: '%02x' % ord(x), s))
-
-
-def get_class_logger(o):
- return logging.getLogger(
- '%s.%s' % (o.__class__.__module__, o.__class__.__name__))
-
-
-class NoopMasker(object):
- """A masking object that has the same interface as RepeatedXorMasker but
- just returns the string passed in without making any change.
- """
-
- def __init__(self):
- pass
-
- def mask(self, s):
- return s
-
-
-class RepeatedXorMasker(object):
- """A masking object that applies XOR on the string given to mask method
- with the masking bytes given to the constructor repeatedly. This object
- remembers the position in the masking bytes the last mask method call
- ended and resumes from that point on the next mask method call.
- """
-
- def __init__(self, masking_key):
- self._masking_key = masking_key
- self._masking_key_index = 0
-
- def _mask_using_swig(self, s):
- masked_data = fast_masking.mask(
- s, self._masking_key, self._masking_key_index)
- self._masking_key_index = (
- (self._masking_key_index + len(s)) % len(self._masking_key))
- return masked_data
-
- def _mask_using_array(self, s):
- result = array.array('B')
- result.fromstring(s)
-
- # Use temporary local variables to eliminate the cost to access
- # attributes
- masking_key = map(ord, self._masking_key)
- masking_key_size = len(masking_key)
- masking_key_index = self._masking_key_index
-
- for i in xrange(len(result)):
- result[i] ^= masking_key[masking_key_index]
- masking_key_index = (masking_key_index + 1) % masking_key_size
-
- self._masking_key_index = masking_key_index
-
- return result.tostring()
-
- if 'fast_masking' in globals():
- mask = _mask_using_swig
- else:
- mask = _mask_using_array
-
-
-# By making wbits option negative, we can suppress CMF/FLG (2 octet) and
-# ADLER32 (4 octet) fields of zlib so that we can use zlib module just as
-# deflate library. DICTID won't be added as far as we don't set dictionary.
-# LZ77 window of 32K will be used for both compression and decompression.
-# For decompression, we can just use 32K to cover any windows size. For
-# compression, we use 32K so receivers must use 32K.
-#
-# Compression level is Z_DEFAULT_COMPRESSION. We don't have to match level
-# to decode.
-#
-# See zconf.h, deflate.cc, inflate.cc of zlib library, and zlibmodule.c of
-# Python. See also RFC1950 (ZLIB 3.3).
-
-
-class _Deflater(object):
-
- def __init__(self, window_bits):
- self._logger = get_class_logger(self)
-
- self._compress = zlib.compressobj(
- zlib.Z_DEFAULT_COMPRESSION, zlib.DEFLATED, -window_bits)
-
- def compress(self, bytes):
- compressed_bytes = self._compress.compress(bytes)
- self._logger.debug('Compress input %r', bytes)
- self._logger.debug('Compress result %r', compressed_bytes)
- return compressed_bytes
-
- def compress_and_flush(self, bytes):
- compressed_bytes = self._compress.compress(bytes)
- compressed_bytes += self._compress.flush(zlib.Z_SYNC_FLUSH)
- self._logger.debug('Compress input %r', bytes)
- self._logger.debug('Compress result %r', compressed_bytes)
- return compressed_bytes
-
- def compress_and_finish(self, bytes):
- compressed_bytes = self._compress.compress(bytes)
- compressed_bytes += self._compress.flush(zlib.Z_FINISH)
- self._logger.debug('Compress input %r', bytes)
- self._logger.debug('Compress result %r', compressed_bytes)
- return compressed_bytes
-
-
-class _Inflater(object):
-
- def __init__(self):
- self._logger = get_class_logger(self)
-
- self._unconsumed = ''
-
- self.reset()
-
- def decompress(self, size):
- if not (size == -1 or size > 0):
- raise Exception('size must be -1 or positive')
-
- data = ''
-
- while True:
- if size == -1:
- data += self._decompress.decompress(self._unconsumed)
- # See Python bug http://bugs.python.org/issue12050 to
- # understand why the same code cannot be used for updating
- # self._unconsumed for here and else block.
- self._unconsumed = ''
- else:
- data += self._decompress.decompress(
- self._unconsumed, size - len(data))
- self._unconsumed = self._decompress.unconsumed_tail
- if self._decompress.unused_data:
- # Encountered a last block (i.e. a block with BFINAL = 1) and
- # found a new stream (unused_data). We cannot use the same
- # zlib.Decompress object for the new stream. Create a new
- # Decompress object to decompress the new one.
- #
- # It's fine to ignore unconsumed_tail if unused_data is not
- # empty.
- self._unconsumed = self._decompress.unused_data
- self.reset()
- if size >= 0 and len(data) == size:
- # data is filled. Don't call decompress again.
- break
- else:
- # Re-invoke Decompress.decompress to try to decompress all
- # available bytes before invoking read which blocks until
- # any new byte is available.
- continue
- else:
- # Here, since unused_data is empty, even if unconsumed_tail is
- # not empty, bytes of requested length are already in data. We
- # don't have to "continue" here.
- break
-
- if data:
- self._logger.debug('Decompressed %r', data)
- return data
-
- def append(self, data):
- self._logger.debug('Appended %r', data)
- self._unconsumed += data
-
- def reset(self):
- self._logger.debug('Reset')
- self._decompress = zlib.decompressobj(-zlib.MAX_WBITS)
-
-
-# Compresses/decompresses given octets using the method introduced in RFC1979.
-
-
-class _RFC1979Deflater(object):
- """A compressor class that applies DEFLATE to given byte sequence and
- flushes using the algorithm described in the RFC1979 section 2.1.
- """
-
- def __init__(self, window_bits, no_context_takeover):
- self._deflater = None
- if window_bits is None:
- window_bits = zlib.MAX_WBITS
- self._window_bits = window_bits
- self._no_context_takeover = no_context_takeover
-
- def filter(self, bytes, flush=True, bfinal=False):
- if self._deflater is None or (self._no_context_takeover and flush):
- self._deflater = _Deflater(self._window_bits)
-
- if bfinal:
- result = self._deflater.compress_and_finish(bytes)
- # Add a padding block with BFINAL = 0 and BTYPE = 0.
- result = result + chr(0)
- self._deflater = None
- return result
- if flush:
- # Strip last 4 octets which is LEN and NLEN field of a
- # non-compressed block added for Z_SYNC_FLUSH.
- return self._deflater.compress_and_flush(bytes)[:-4]
- return self._deflater.compress(bytes)
-
-
-class _RFC1979Inflater(object):
- """A decompressor class for byte sequence compressed and flushed following
- the algorithm described in the RFC1979 section 2.1.
- """
-
- def __init__(self):
- self._inflater = _Inflater()
-
- def filter(self, bytes):
- # Restore stripped LEN and NLEN field of a non-compressed block added
- # for Z_SYNC_FLUSH.
- self._inflater.append(bytes + '\x00\x00\xff\xff')
- return self._inflater.decompress(-1)
-
-
-class DeflateSocket(object):
- """A wrapper class for socket object to intercept send and recv to perform
- deflate compression and decompression transparently.
- """
-
- # Size of the buffer passed to recv to receive compressed data.
- _RECV_SIZE = 4096
-
- def __init__(self, socket):
- self._socket = socket
-
- self._logger = get_class_logger(self)
-
- self._deflater = _Deflater(zlib.MAX_WBITS)
- self._inflater = _Inflater()
-
- def recv(self, size):
- """Receives data from the socket specified on the construction up
- to the specified size. Once any data is available, returns it even
- if it's smaller than the specified size.
- """
-
- # TODO(tyoshino): Allow call with size=0. It should block until any
- # decompressed data is available.
- if size <= 0:
- raise Exception('Non-positive size passed')
- while True:
- data = self._inflater.decompress(size)
- if len(data) != 0:
- return data
-
- read_data = self._socket.recv(DeflateSocket._RECV_SIZE)
- if not read_data:
- return ''
- self._inflater.append(read_data)
-
- def sendall(self, bytes):
- self.send(bytes)
-
- def send(self, bytes):
- self._socket.sendall(self._deflater.compress_and_flush(bytes))
- return len(bytes)
-
-
-# vi:sts=4 sw=4 et
diff --git a/Tools/Scripts/webkitpy/thirdparty/ordered_dict.py b/Tools/Scripts/webkitpy/thirdparty/ordered_dict.py
deleted file mode 100644
index 3dc735a4a..000000000
--- a/Tools/Scripts/webkitpy/thirdparty/ordered_dict.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (c) 2009 Raymond Hettinger.
-#
-# 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", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-# SOFTWARE.
-
-# This code is obtained from http://code.activestate.com/recipes/576669/
-
-from collections import MutableMapping
-
-class OrderedDict(dict, MutableMapping):
-
- # Methods with direct access to underlying attributes
-
- def __init__(self, *args, **kwds):
- if len(args) > 1:
- raise TypeError('expected at 1 argument, got %d', len(args))
- if not hasattr(self, '_keys'):
- self._keys = []
- self.update(*args, **kwds)
-
- def clear(self):
- del self._keys[:]
- dict.clear(self)
-
- def __setitem__(self, key, value):
- if key not in self:
- self._keys.append(key)
- dict.__setitem__(self, key, value)
-
- def __delitem__(self, key):
- dict.__delitem__(self, key)
- self._keys.remove(key)
-
- def __iter__(self):
- return iter(self._keys)
-
- def __reversed__(self):
- return reversed(self._keys)
-
- def popitem(self):
- if not self:
- raise KeyError
- key = self._keys.pop()
- value = dict.pop(self, key)
- return key, value
-
- def __reduce__(self):
- items = [[k, self[k]] for k in self]
- inst_dict = vars(self).copy()
- inst_dict.pop('_keys', None)
- return (self.__class__, (items,), inst_dict)
-
- # Methods with indirect access via the above methods
-
- setdefault = MutableMapping.setdefault
- update = MutableMapping.update
- pop = MutableMapping.pop
- keys = MutableMapping.keys
- values = MutableMapping.values
- items = MutableMapping.items
-
- def __repr__(self):
- pairs = ', '.join(map('%r: %r'.__mod__, self.items()))
- return '%s({%s})' % (self.__class__.__name__, pairs)
-
- def copy(self):
- return self.__class__(self)
-
- @classmethod
- def fromkeys(cls, iterable, value=None):
- d = cls()
- for key in iterable:
- d[key] = value
- return d
diff --git a/Tools/Scripts/webkitpy/to_be_moved/__init__.py b/Tools/Scripts/webkitpy/to_be_moved/__init__.py
deleted file mode 100644
index c0528b783..000000000
--- a/Tools/Scripts/webkitpy/to_be_moved/__init__.py
+++ /dev/null
@@ -1,10 +0,0 @@
-# Required for Python to search this directory for module files
-# This directory houses Python modules that do not yet have a proper home.
-#
-# Some of the Python modules in this directory aren't really part of webkitpy
-# in the sense that they're not classes that are meant to be used as part of
-# the webkitpy library. Instead, they're a bunch of helper code for individual
-# scripts in in Tools/Scripts.
-#
-# Really, all this code should either be refactored or moved somewhere else,
-# hence the somewhat lame name for this directory.
diff --git a/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py b/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py
deleted file mode 100644
index c7082c84a..000000000
--- a/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright (C) 2010 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:
-# 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 glob
-import logging
-import optparse
-import os
-import re
-import sys
-from webkitpy.common.checkout import scm
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import Executive
-
-
-_log = logging.getLogger(__name__)
-
-
-def remove_first_line_comment(text):
- return re.compile(r'^<!--.*?-->\s*', re.DOTALL).sub('', text)
-
-
-def translate_includes(text):
- # Mapping of single filename to relative path under WebKit root.
- # Assumption: these filenames are globally unique.
- include_mapping = {
- "js-test-style.css": "../../js/resources",
- "js-test-pre.js": "../../js/resources",
- "js-test-post.js": "../../js/resources",
- "desktop-gl-constants.js": "resources",
- }
-
- for filename, path in include_mapping.items():
- search = r'(?:[^"\'= ]*/)?' + re.escape(filename)
- # We use '/' instead of os.path.join in order to produce consistent
- # output cross-platform.
- replace = path + '/' + filename
- text = re.sub(search, replace, text)
-
- return text
-
-
-def translate_khronos_test(text):
- """
- This method translates the contents of a Khronos test to a WebKit test.
- """
-
- translateFuncs = [
- remove_first_line_comment,
- translate_includes,
- ]
-
- for f in translateFuncs:
- text = f(text)
-
- return text
-
-
-def update_file(in_filename, out_dir):
- # check in_filename exists
- # check out_dir exists
- out_filename = os.path.join(out_dir, os.path.basename(in_filename))
-
- _log.debug("Processing " + in_filename)
- with open(in_filename, 'r') as in_file:
- with open(out_filename, 'w') as out_file:
- out_file.write(translate_khronos_test(in_file.read()))
-
-
-def update_directory(in_dir, out_dir):
- for filename in glob.glob(os.path.join(in_dir, '*.html')):
- update_file(os.path.join(in_dir, filename), out_dir)
-
-
-def default_out_dir():
- detector = scm.SCMDetector(FileSystem(), Executive())
- current_scm = detector.detect_scm_system(os.path.dirname(sys.argv[0]))
- if not current_scm:
- return os.getcwd()
- root_dir = current_scm.checkout_root
- if not root_dir:
- return os.getcwd()
- out_dir = os.path.join(root_dir, "LayoutTests/fast/canvas/webgl")
- if os.path.isdir(out_dir):
- return out_dir
- return os.getcwd()
-
-
-def configure_logging(options):
- """Configures the logging system."""
- log_fmt = '%(levelname)s: %(message)s'
- log_datefmt = '%y%m%d %H:%M:%S'
- log_level = logging.INFO
- if options.verbose:
- log_fmt = ('%(asctime)s %(filename)s:%(lineno)-4d %(levelname)s '
- '%(message)s')
- log_level = logging.DEBUG
- logging.basicConfig(level=log_level, format=log_fmt,
- datefmt=log_datefmt)
-
-
-def option_parser():
- usage = "usage: %prog [options] (input file or directory)"
- parser = optparse.OptionParser(usage=usage)
- parser.add_option('-v', '--verbose',
- action='store_true',
- default=False,
- help='include debug-level logging')
- parser.add_option('-o', '--output',
- action='store',
- type='string',
- default=default_out_dir(),
- metavar='DIR',
- help='specify an output directory to place files '
- 'in [default: %default]')
- return parser
-
-
-def main():
- parser = option_parser()
- (options, args) = parser.parse_args()
- configure_logging(options)
-
- if len(args) == 0:
- _log.error("Must specify an input directory or filename.")
- parser.print_help()
- return 1
-
- in_name = args[0]
- if os.path.isfile(in_name):
- update_file(in_name, options.output)
- elif os.path.isdir(in_name):
- update_directory(in_name, options.output)
- else:
- _log.error("'%s' is not a directory or a file.", in_name)
- return 2
-
- return 0
diff --git a/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py b/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py
deleted file mode 100644
index 028a4c6f2..000000000
--- a/Tools/Scripts/webkitpy/to_be_moved/update_webgl_conformance_tests_unittest.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (C) 2010 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.
-
-"""Unit tests for update_webgl_conformance_tests."""
-
-import unittest2 as unittest
-from webkitpy.to_be_moved import update_webgl_conformance_tests as webgl
-
-
-def construct_script(name):
- return "<script src=\"" + name + "\"></script>\n"
-
-
-def construct_style(name):
- return "<link rel=\"stylesheet\" href=\"" + name + "\">"
-
-
-class TestTranslation(unittest.TestCase):
- def assert_unchanged(self, text):
- self.assertEqual(text, webgl.translate_khronos_test(text))
-
- def assert_translate(self, input, output):
- self.assertEqual(output, webgl.translate_khronos_test(input))
-
- def test_simple_unchanged(self):
- self.assert_unchanged("")
- self.assert_unchanged("<html></html>")
-
- def test_header_strip(self):
- single_line_header = "<!-- single line header. -->"
- multi_line_header = """<!-- this is a multi-line
- header. it should all be removed too.
- -->"""
- text = "<html></html>"
- self.assert_translate(single_line_header, "")
- self.assert_translate(single_line_header + text, text)
- self.assert_translate(multi_line_header + text, text)
-
- def dont_strip_other_headers(self):
- self.assert_unchanged("<html>\n<!-- don't remove comments on other lines. -->\n</html>")
-
- def test_include_rewriting(self):
- # Mappings to None are unchanged
- styles = {
- "../resources/js-test-style.css": "../../js/resources/js-test-style.css",
- "fail.css": None,
- "resources/stylesheet.css": None,
- "../resources/style.css": None,
- }
- scripts = {
- "../resources/js-test-pre.js": "../../js/resources/js-test-pre.js",
- "../resources/js-test-post.js": "../../js/resources/js-test-post.js",
- "../resources/desktop-gl-constants.js": "resources/desktop-gl-constants.js",
-
- "resources/shadow-offset.js": None,
- "../resources/js-test-post-async.js": None,
- }
-
- input_text = ""
- output_text = ""
- for input, output in styles.items():
- input_text += construct_style(input)
- output_text += construct_style(output if output else input)
- for input, output in scripts.items():
- input_text += construct_script(input)
- output_text += construct_script(output if output else input)
-
- head = '<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">\n<html>\n<head>\n'
- foot = '</head>\n<body>\n</body>\n</html>'
- input_text = head + input_text + foot
- output_text = head + output_text + foot
- self.assert_translate(input_text, output_text)
diff --git a/Tools/Scripts/webkitpy/tool/__init__.py b/Tools/Scripts/webkitpy/tool/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/tool/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/tool/bot/__init__.py b/Tools/Scripts/webkitpy/tool/bot/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/tool/bot/botinfo.py b/Tools/Scripts/webkitpy/tool/bot/botinfo.py
deleted file mode 100644
index 11a3d40f4..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/botinfo.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (c) 2011 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.
-
-
-# FIXME: We should consider hanging one of these off the tool object.
-class BotInfo(object):
- def __init__(self, tool, port_name):
- self._tool = tool
- self._port_name = port_name
-
- def summary_text(self):
- # bot_id is also stored on the options dictionary on the tool.
- bot_id = self._tool.status_server.bot_id
- bot_id_string = "Bot: %s " % (bot_id) if bot_id else ""
- return "%sPort: %s Platform: %s" % (bot_id_string, self._port_name, self._tool.platform.display_name())
diff --git a/Tools/Scripts/webkitpy/tool/bot/botinfo_unittest.py b/Tools/Scripts/webkitpy/tool/bot/botinfo_unittest.py
deleted file mode 100644
index 04861f452..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/botinfo_unittest.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (c) 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.bot.botinfo import BotInfo
-from webkitpy.tool.mocktool import MockTool
-from webkitpy.common.net.statusserver_mock import MockStatusServer
-from webkitpy.port.test import TestPort
-
-
-class BotInfoTest(unittest.TestCase):
-
- def test_summary_text(self):
- tool = MockTool()
- tool.status_server = MockStatusServer("MockBotId")
- self.assertEqual(BotInfo(tool, 'port-name').summary_text(), "Bot: MockBotId Port: port-name Platform: MockPlatform 1.0")
diff --git a/Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py b/Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py
deleted file mode 100644
index a95c7b103..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/commitqueuetask.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.tool.bot.patchanalysistask import PatchAnalysisTask, PatchAnalysisTaskDelegate
-
-
-class CommitQueueTaskDelegate(PatchAnalysisTaskDelegate):
- def parent_command(self):
- return "commit-queue"
-
- def did_pass_testing_ews(self, patch):
- raise NotImplementedError("subclasses must implement")
-
-
-class CommitQueueTask(PatchAnalysisTask):
- def validate(self):
- # Bugs might get closed, or patches might be obsoleted or r-'d while the
- # commit-queue is processing.
- self._patch = self._delegate.refetch_patch(self._patch)
- if self._patch.is_obsolete():
- return False
- if self._patch.bug().is_closed():
- return False
- if not self._patch.committer():
- return False
- if self._patch.review() == "-":
- return False
- return True
-
- def _validate_changelog(self):
- return self._run_command([
- "validate-changelog",
- "--check-oops",
- "--non-interactive",
- self._patch.id(),
- ],
- "ChangeLog validated",
- "ChangeLog did not pass validation")
-
- def _did_pass_tests_recently(self):
- if self._delegate.did_pass_testing_ews(self._patch):
- return True
- return self._test_patch()
-
- def run(self):
- if not self.validate():
- return False
- if not self._clean():
- return False
- if not self._update():
- return False
- if not self._apply():
- return self.report_failure()
- if not self._validate_changelog():
- return self.report_failure()
- if not self._patch.is_rollout():
- if not self._build():
- if not self._build_without_patch():
- return False
- return self.report_failure()
- if not self._did_pass_tests_recently():
- return False
- # Make sure the patch is still valid before landing (e.g., make sure
- # no one has set commit-queue- since we started working on the patch.)
- if not self.validate():
- return False
- # FIXME: We should understand why the land failure occurred and retry if possible.
- if not self._land():
- return self.report_failure()
- return True
diff --git a/Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py b/Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py
deleted file mode 100644
index 1eabde1b5..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/commitqueuetask_unittest.py
+++ /dev/null
@@ -1,583 +0,0 @@
-# Copyright (c) 2010 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.
-
-from datetime import datetime
-import logging
-import unittest2 as unittest
-
-from webkitpy.common.net import bugzilla
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.bot.commitqueuetask import *
-from webkitpy.tool.bot.expectedfailures import ExpectedFailures
-from webkitpy.tool.mocktool import MockTool
-
-_log = logging.getLogger(__name__)
-
-
-class MockCommitQueue(CommitQueueTaskDelegate):
- def __init__(self, error_plan):
- self._error_plan = error_plan
- self._failure_status_id = 0
-
- def run_command(self, command):
- _log.info("run_webkit_patch: %s" % command)
- if self._error_plan:
- error = self._error_plan.pop(0)
- if error:
- raise error
-
- def command_passed(self, success_message, patch):
- _log.info("command_passed: success_message='%s' patch='%s'" % (
- success_message, patch.id()))
-
- def command_failed(self, failure_message, script_error, patch):
- _log.info("command_failed: failure_message='%s' script_error='%s' patch='%s'" % (
- failure_message, script_error, patch.id()))
- self._failure_status_id += 1
- return self._failure_status_id
-
- def refetch_patch(self, patch):
- return patch
-
- def expected_failures(self):
- return ExpectedFailures()
-
- def test_results(self):
- return None
-
- def report_flaky_tests(self, patch, flaky_results, results_archive):
- flaky_tests = [result.filename for result in flaky_results]
- _log.info("report_flaky_tests: patch='%s' flaky_tests='%s' archive='%s'" % (patch.id(), flaky_tests, results_archive.filename))
-
- def archive_last_test_results(self, patch):
- _log.info("archive_last_test_results: patch='%s'" % patch.id())
- archive = Mock()
- archive.filename = "mock-archive-%s.zip" % patch.id()
- return archive
-
- def build_style(self):
- return "both"
-
- def did_pass_testing_ews(self, patch):
- return False
-
-
-class FailingTestCommitQueue(MockCommitQueue):
- def __init__(self, error_plan, test_failure_plan):
- MockCommitQueue.__init__(self, error_plan)
- self._test_run_counter = -1 # Special value to indicate tests have never been run.
- self._test_failure_plan = test_failure_plan
-
- def run_command(self, command):
- if command[0] == "build-and-test":
- self._test_run_counter += 1
- MockCommitQueue.run_command(self, command)
-
- def _mock_test_result(self, testname):
- return test_results.TestResult(testname, [test_failures.FailureTextMismatch()])
-
- def test_results(self):
- # Doesn't make sense to ask for the test_results until the tests have run at least once.
- assert(self._test_run_counter >= 0)
- failures_for_run = self._test_failure_plan[self._test_run_counter]
- results = LayoutTestResults(map(self._mock_test_result, failures_for_run))
- # This makes the results trustable by ExpectedFailures.
- results.set_failure_limit_count(10)
- return results
-
-
-# We use GoldenScriptError to make sure that the code under test throws the
-# correct (i.e., golden) exception.
-class GoldenScriptError(ScriptError):
- pass
-
-
-class CommitQueueTaskTest(unittest.TestCase):
- def _run_through_task(self, commit_queue, expected_logs, expected_exception=None, expect_retry=False):
- self.maxDiff = None
- tool = MockTool(log_executive=True)
- patch = tool.bugs.fetch_attachment(10000)
- task = CommitQueueTask(commit_queue, patch)
- success = OutputCapture().assert_outputs(self, task.run, expected_logs=expected_logs, expected_exception=expected_exception)
- if not expected_exception:
- self.assertEqual(success, not expect_retry)
- return task
-
- def test_success_case(self):
- commit_queue = MockCommitQueue([])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_passed: success_message='Passed tests' patch='10000'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_passed: success_message='Landed patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs)
-
- def test_fast_success_case(self):
- commit_queue = MockCommitQueue([])
- commit_queue.did_pass_testing_ews = lambda patch: True
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_passed: success_message='Landed patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs)
-
- def test_clean_failure(self):
- commit_queue = MockCommitQueue([
- ScriptError("MOCK clean failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_failed: failure_message='Unable to clean working directory' script_error='MOCK clean failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, expect_retry=True)
-
- def test_update_failure(self):
- commit_queue = MockCommitQueue([
- None,
- ScriptError("MOCK update failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_failed: failure_message='Unable to update working directory' script_error='MOCK update failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, expect_retry=True)
-
- def test_apply_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- GoldenScriptError("MOCK apply failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_failed: failure_message='Patch does not apply' script_error='MOCK apply failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
-
- def test_validate_changelog_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- GoldenScriptError("MOCK validate failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_failed: failure_message='ChangeLog did not pass validation' script_error='MOCK validate failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
-
- def test_build_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- GoldenScriptError("MOCK build failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_failed: failure_message='Patch does not build' script_error='MOCK build failure' patch='10000'
-run_webkit_patch: ['build', '--force-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Able to build without patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
-
- def test_red_build_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- ScriptError("MOCK build failure"),
- ScriptError("MOCK clean build failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_failed: failure_message='Patch does not build' script_error='MOCK build failure' patch='10000'
-run_webkit_patch: ['build', '--force-clean', '--no-update', '--build-style=both']
-command_failed: failure_message='Unable to build without patch' script_error='MOCK clean build failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, expect_retry=True)
-
- def test_flaky_test_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- None,
- ScriptError("MOCK tests failure"),
- ])
- # CommitQueueTask will only report flaky tests if we successfully parsed
- # results.json and returned a LayoutTestResults object, so we fake one.
- commit_queue.test_results = lambda: LayoutTestResults([])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK tests failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_passed: success_message='Passed tests' patch='10000'
-report_flaky_tests: patch='10000' flaky_tests='[]' archive='mock-archive-10000.zip'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_passed: success_message='Landed patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs)
-
- def test_failed_archive(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- None,
- ScriptError("MOCK tests failure"),
- ])
- commit_queue.test_results = lambda: LayoutTestResults([])
- # It's possible delegate to fail to archive layout tests, don't try to report
- # flaky tests when that happens.
- commit_queue.archive_last_test_results = lambda patch: None
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK tests failure' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_passed: success_message='Passed tests' patch='10000'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_passed: success_message='Landed patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs)
-
- def test_double_flaky_test_failure(self):
- commit_queue = FailingTestCommitQueue([
- None,
- None,
- None,
- None,
- None,
- ScriptError("MOCK test failure"),
- ScriptError("MOCK test failure again"),
- ], [
- "foo.html",
- "bar.html",
- "foo.html",
- ])
- # The (subtle) point of this test is that report_flaky_tests does not appear
- # in the expected_logs for this run.
- # Note also that there is no attempt to run the tests w/o the patch.
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure again' patch='10000'
-"""
- tool = MockTool(log_executive=True)
- patch = tool.bugs.fetch_attachment(10000)
- task = CommitQueueTask(commit_queue, patch)
- success = OutputCapture().assert_outputs(self, task.run, expected_logs=expected_logs)
- self.assertFalse(success)
-
- def test_test_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- None,
- GoldenScriptError("MOCK test failure"),
- ScriptError("MOCK test failure again"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure again' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--force-clean', '--no-update', '--build', '--test', '--non-interactive']
-command_passed: success_message='Able to pass tests without patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
-
- def test_red_test_failure(self):
- commit_queue = FailingTestCommitQueue([
- None,
- None,
- None,
- None,
- None,
- ScriptError("MOCK test failure"),
- ScriptError("MOCK test failure again"),
- ScriptError("MOCK clean test failure"),
- ], [
- "foo.html",
- "foo.html",
- "foo.html",
- ])
-
- # Tests always fail, and always return the same results, but we
- # should still be able to land in this case!
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure again' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--force-clean', '--no-update', '--build', '--test', '--non-interactive']
-command_failed: failure_message='Unable to pass tests without patch (tree is red?)' script_error='MOCK clean test failure' patch='10000'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_passed: success_message='Landed patch' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs)
-
- def test_very_red_tree_retry(self):
- lots_of_failing_tests = map(lambda num: "test-%s.html" % num, range(0, 100))
- commit_queue = FailingTestCommitQueue([
- None,
- None,
- None,
- None,
- None,
- ScriptError("MOCK test failure"),
- ScriptError("MOCK test failure again"),
- ScriptError("MOCK clean test failure"),
- ], [
- lots_of_failing_tests,
- lots_of_failing_tests,
- lots_of_failing_tests,
- ])
-
- # Tests always fail, and return so many failures that we do not
- # trust the results (see ExpectedFailures._can_trust_results) so we
- # just give up and retry the patch.
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure again' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--force-clean', '--no-update', '--build', '--test', '--non-interactive']
-command_failed: failure_message='Unable to pass tests without patch (tree is red?)' script_error='MOCK clean test failure' patch='10000'
-"""
- self._run_through_task(commit_queue, expected_logs, expect_retry=True)
-
- def test_red_tree_patch_rejection(self):
- commit_queue = FailingTestCommitQueue([
- None,
- None,
- None,
- None,
- None,
- GoldenScriptError("MOCK test failure"),
- ScriptError("MOCK test failure again"),
- ScriptError("MOCK clean test failure"),
- ], [
- ["foo.html", "bar.html"],
- ["foo.html", "bar.html"],
- ["foo.html"],
- ])
-
- # Tests always fail, but the clean tree only fails one test
- # while the patch fails two. So we should reject the patch!
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_failed: failure_message='Patch does not pass tests' script_error='MOCK test failure again' patch='10000'
-archive_last_test_results: patch='10000'
-run_webkit_patch: ['build-and-test', '--force-clean', '--no-update', '--build', '--test', '--non-interactive']
-command_failed: failure_message='Unable to pass tests without patch (tree is red?)' script_error='MOCK clean test failure' patch='10000'
-"""
- task = self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
- self.assertEqual(task.results_from_patch_test_run(task._patch).failing_tests(), ["foo.html", "bar.html"])
- # failure_status_id should be of the test with patch (1), not the test without patch (2).
- self.assertEqual(task.failure_status_id, 1)
-
- def test_land_failure(self):
- commit_queue = MockCommitQueue([
- None,
- None,
- None,
- None,
- None,
- None,
- GoldenScriptError("MOCK land failure"),
- ])
- expected_logs = """run_webkit_patch: ['clean']
-command_passed: success_message='Cleaned working directory' patch='10000'
-run_webkit_patch: ['update']
-command_passed: success_message='Updated working directory' patch='10000'
-run_webkit_patch: ['apply-attachment', '--no-update', '--non-interactive', 10000]
-command_passed: success_message='Applied patch' patch='10000'
-run_webkit_patch: ['validate-changelog', '--check-oops', '--non-interactive', 10000]
-command_passed: success_message='ChangeLog validated' patch='10000'
-run_webkit_patch: ['build', '--no-clean', '--no-update', '--build-style=both']
-command_passed: success_message='Built patch' patch='10000'
-run_webkit_patch: ['build-and-test', '--no-clean', '--no-update', '--test', '--non-interactive']
-command_passed: success_message='Passed tests' patch='10000'
-run_webkit_patch: ['land-attachment', '--force-clean', '--non-interactive', '--parent-command=commit-queue', 10000]
-command_failed: failure_message='Unable to land patch' script_error='MOCK land failure' patch='10000'
-"""
- # FIXME: This should really be expect_retry=True for a better user experiance.
- self._run_through_task(commit_queue, expected_logs, GoldenScriptError)
-
- def _expect_validate(self, patch, is_valid):
- class MockDelegate(object):
- def refetch_patch(self, patch):
- return patch
-
- def expected_failures(self):
- return ExpectedFailures()
-
- task = CommitQueueTask(MockDelegate(), patch)
- self.assertEqual(task.validate(), is_valid)
-
- def _mock_patch(self, attachment_dict={}, bug_dict={'bug_status': 'NEW'}, committer="fake"):
- bug = bugzilla.Bug(bug_dict, None)
- patch = bugzilla.Attachment(attachment_dict, bug)
- patch._committer = committer
- return patch
-
- def test_validate(self):
- self._expect_validate(self._mock_patch(), True)
- self._expect_validate(self._mock_patch({'is_obsolete': True}), False)
- self._expect_validate(self._mock_patch(bug_dict={'bug_status': 'CLOSED'}), False)
- self._expect_validate(self._mock_patch(committer=None), False)
- self._expect_validate(self._mock_patch({'review': '-'}), False)
diff --git a/Tools/Scripts/webkitpy/tool/bot/earlywarningsystemtask.py b/Tools/Scripts/webkitpy/tool/bot/earlywarningsystemtask.py
deleted file mode 100644
index b66cfbc8e..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/earlywarningsystemtask.py
+++ /dev/null
@@ -1,66 +0,0 @@
-# Copyright (c) 2011 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.
-
-from webkitpy.tool.bot.patchanalysistask import PatchAnalysisTask, PatchAnalysisTaskDelegate, UnableToApplyPatch
-
-
-class EarlyWarningSystemTaskDelegate(PatchAnalysisTaskDelegate):
- pass
-
-
-class EarlyWarningSystemTask(PatchAnalysisTask):
- def __init__(self, delegate, patch, should_run_tests=True):
- PatchAnalysisTask.__init__(self, delegate, patch)
- self._should_run_tests = should_run_tests
-
- def validate(self):
- self._patch = self._delegate.refetch_patch(self._patch)
- if self._patch.is_obsolete():
- return False
- if self._patch.bug().is_closed():
- return False
- if self._patch.review() == "-":
- return False
- return True
-
- def run(self):
- if not self.validate():
- return False
- if not self._clean():
- return False
- if not self._update():
- return False
- if not self._apply():
- raise UnableToApplyPatch(self._patch)
- if not self._build():
- if not self._build_without_patch():
- return False
- return self.report_failure()
- if not self._should_run_tests:
- return True
- return self._test_patch()
diff --git a/Tools/Scripts/webkitpy/tool/bot/expectedfailures.py b/Tools/Scripts/webkitpy/tool/bot/expectedfailures.py
deleted file mode 100644
index c0cfe21e3..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/expectedfailures.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (c) 2011 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.
-
-
-class ExpectedFailures(object):
- def __init__(self):
- self._failures = set()
- self._is_trustworthy = True
-
- @classmethod
- def _has_failures(cls, results):
- return bool(results and results.failing_tests())
-
- @classmethod
- def _should_trust(cls, results):
- return bool(cls._has_failures(results) and results.failure_limit_count() and len(results.failing_tests()) < results.failure_limit_count())
-
- def failures_were_expected(self, results):
- if not self._is_trustworthy:
- return False
- if not self._should_trust(results):
- return False
- return set(results.failing_tests()) <= self._failures
-
- def unexpected_failures_observed(self, results):
- if not self._is_trustworthy:
- return None
- if not self._has_failures(results):
- return None
- return set(results.failing_tests()) - self._failures
-
- def update(self, results):
- if results:
- self._failures = set(results.failing_tests())
- self._is_trustworthy = self._should_trust(results)
diff --git a/Tools/Scripts/webkitpy/tool/bot/expectedfailures_unittest.py b/Tools/Scripts/webkitpy/tool/bot/expectedfailures_unittest.py
deleted file mode 100644
index b639856f3..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/expectedfailures_unittest.py
+++ /dev/null
@@ -1,95 +0,0 @@
-# Copyright (c) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.bot.expectedfailures import ExpectedFailures
-
-
-class MockResults(object):
- def __init__(self, failing_tests=[], failure_limit=10):
- self._failing_tests = failing_tests
- self._failure_limit_count = failure_limit
-
- def failure_limit_count(self):
- return self._failure_limit_count
-
- def failing_tests(self):
- return self._failing_tests
-
-
-class ExpectedFailuresTest(unittest.TestCase):
- def _assert_can_trust(self, results, can_trust):
- self.assertEqual(ExpectedFailures._should_trust(results), can_trust)
-
- def test_can_trust_results(self):
- self._assert_can_trust(None, False)
- self._assert_can_trust(MockResults(failing_tests=[], failure_limit=None), False)
- self._assert_can_trust(MockResults(failing_tests=[], failure_limit=10), False)
- self._assert_can_trust(MockResults(failing_tests=[1], failure_limit=None), False)
- self._assert_can_trust(MockResults(failing_tests=[1], failure_limit=2), True)
- self._assert_can_trust(MockResults(failing_tests=[1], failure_limit=1), False)
- self._assert_can_trust(MockResults(failing_tests=[1, 2], failure_limit=1), False)
-
- def _assert_expected(self, expected_failures, failures, expected):
- self.assertEqual(expected_failures.failures_were_expected(MockResults(failures)), expected)
-
- def test_failures_were_expected(self):
- failures = ExpectedFailures()
- failures.update(MockResults(['foo.html']))
- self._assert_expected(failures, ['foo.html'], True)
- self._assert_expected(failures, ['bar.html'], False)
- self._assert_expected(failures, ['bar.html', 'foo.html'], False)
-
- failures.update(MockResults(['baz.html']))
- self._assert_expected(failures, ['baz.html'], True)
- self._assert_expected(failures, ['foo.html'], False)
-
- failures.update(MockResults([]))
- self._assert_expected(failures, ['baz.html'], False)
- self._assert_expected(failures, ['foo.html'], False)
-
- def test_unexpected_failures_observed(self):
- failures = ExpectedFailures()
- failures.update(MockResults(['foo.html']))
- self.assertEqual(failures.unexpected_failures_observed(MockResults(['foo.html', 'bar.html'])), set(['bar.html']))
- self.assertEqual(failures.unexpected_failures_observed(MockResults(['baz.html'])), set(['baz.html']))
- unbounded_results = MockResults(['baz.html', 'qux.html', 'taco.html'], failure_limit=3)
- self.assertEqual(failures.unexpected_failures_observed(unbounded_results), set(['baz.html', 'qux.html', 'taco.html']))
- unbounded_results_with_existing_failure = MockResults(['foo.html', 'baz.html', 'qux.html', 'taco.html'], failure_limit=4)
- self.assertEqual(failures.unexpected_failures_observed(unbounded_results_with_existing_failure), set(['baz.html', 'qux.html', 'taco.html']))
-
- def test_unexpected_failures_observed_when_tree_is_hosed(self):
- failures = ExpectedFailures()
- failures.update(MockResults(['foo.html', 'banana.html'], failure_limit=2))
- self.assertEqual(failures.unexpected_failures_observed(MockResults(['foo.html', 'bar.html'])), None)
- self.assertEqual(failures.unexpected_failures_observed(MockResults(['baz.html'])), None)
- unbounded_results = MockResults(['baz.html', 'qux.html', 'taco.html'], failure_limit=3)
- self.assertEqual(failures.unexpected_failures_observed(unbounded_results), None)
- unbounded_results_with_existing_failure = MockResults(['foo.html', 'baz.html', 'qux.html', 'taco.html'], failure_limit=4)
- self.assertEqual(failures.unexpected_failures_observed(unbounded_results_with_existing_failure), None)
diff --git a/Tools/Scripts/webkitpy/tool/bot/feeders.py b/Tools/Scripts/webkitpy/tool/bot/feeders.py
deleted file mode 100644
index f4bc4b927..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/feeders.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (c) 2010 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.
-
-import logging
-
-from webkitpy.common.config.committervalidator import CommitterValidator
-from webkitpy.tool.grammar import pluralize
-
-_log = logging.getLogger(__name__)
-
-
-class AbstractFeeder(object):
- def __init__(self, tool):
- self._tool = tool
-
- def feed(self):
- raise NotImplementedError("subclasses must implement")
-
-
-class CommitQueueFeeder(AbstractFeeder):
- queue_name = "commit-queue"
-
- def __init__(self, tool):
- AbstractFeeder.__init__(self, tool)
- self.committer_validator = CommitterValidator(self._tool)
-
- def _update_work_items(self, item_ids):
- # FIXME: This is the last use of update_work_items, the commit-queue
- # should move to feeding patches one at a time like the EWS does.
- self._tool.status_server.update_work_items(self.queue_name, item_ids)
- _log.info("Feeding %s items %s" % (self.queue_name, item_ids))
-
- def feed(self):
- patches = self._validate_patches()
- patches = self._patches_with_acceptable_review_flag(patches)
- patches = sorted(patches, self._patch_cmp)
- patch_ids = [patch.id() for patch in patches]
- self._update_work_items(patch_ids)
-
- def _patches_for_bug(self, bug_id):
- return self._tool.bugs.fetch_bug(bug_id).commit_queued_patches(include_invalid=True)
-
- # Filters out patches with r? or r-, only r+ or no review are OK to land.
- def _patches_with_acceptable_review_flag(self, patches):
- return [patch for patch in patches if patch.review() in [None, '+']]
-
- def _validate_patches(self):
- # Not using BugzillaQueries.fetch_patches_from_commit_queue() so we can reject patches with invalid committers/reviewers.
- bug_ids = self._tool.bugs.queries.fetch_bug_ids_from_commit_queue()
- all_patches = sum([self._patches_for_bug(bug_id) for bug_id in bug_ids], [])
- return self.committer_validator.patches_after_rejecting_invalid_commiters_and_reviewers(all_patches)
-
- def _patch_cmp(self, a, b):
- # Sort first by is_rollout, then by attach_date.
- # Reversing the order so that is_rollout is first.
- rollout_cmp = cmp(b.is_rollout(), a.is_rollout())
- if rollout_cmp != 0:
- return rollout_cmp
- return cmp(a.attach_date(), b.attach_date())
-
-
-class EWSFeeder(AbstractFeeder):
- def __init__(self, tool):
- self._ids_sent_to_server = set()
- AbstractFeeder.__init__(self, tool)
-
- def feed(self):
- ids_needing_review = set(self._tool.bugs.queries.fetch_attachment_ids_from_review_queue())
- new_ids = ids_needing_review.difference(self._ids_sent_to_server)
- _log.info("Feeding EWS (%s, %s new)" % (pluralize("r? patch", len(ids_needing_review)), len(new_ids)))
- for attachment_id in new_ids: # Order doesn't really matter for the EWS.
- self._tool.status_server.submit_to_ews(attachment_id)
- self._ids_sent_to_server.add(attachment_id)
diff --git a/Tools/Scripts/webkitpy/tool/bot/feeders_unittest.py b/Tools/Scripts/webkitpy/tool/bot/feeders_unittest.py
deleted file mode 100644
index b70a6371e..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/feeders_unittest.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (c) 2010 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.
-
-from datetime import datetime
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.bot.feeders import *
-from webkitpy.tool.mocktool import MockTool
-
-
-class FeedersTest(unittest.TestCase):
- def test_commit_queue_feeder(self):
- feeder = CommitQueueFeeder(MockTool())
- expected_logs = """Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)
-Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)
-MOCK setting flag 'commit-queue' to '-' on attachment '10001' with comment 'Rejecting attachment 10001 from commit-queue.\n\nnon-committer@example.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.
-
-- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.
-
-- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed). The commit-queue restarts itself every 2 hours. After restart the commit-queue will correctly respect your committer rights.'
-MOCK: update_work_items: commit-queue [10005, 10000]
-Feeding commit-queue items [10005, 10000]
-"""
- OutputCapture().assert_outputs(self, feeder.feed, expected_logs=expected_logs)
-
- def _mock_attachment(self, is_rollout, attach_date):
- attachment = Mock()
- attachment.is_rollout = lambda: is_rollout
- attachment.attach_date = lambda: attach_date
- return attachment
-
- def test_patch_cmp(self):
- long_ago_date = datetime(1900, 1, 21)
- recent_date = datetime(2010, 1, 21)
- attachment1 = self._mock_attachment(is_rollout=False, attach_date=recent_date)
- attachment2 = self._mock_attachment(is_rollout=False, attach_date=long_ago_date)
- attachment3 = self._mock_attachment(is_rollout=True, attach_date=recent_date)
- attachment4 = self._mock_attachment(is_rollout=True, attach_date=long_ago_date)
- attachments = [attachment1, attachment2, attachment3, attachment4]
- expected_sort = [attachment4, attachment3, attachment2, attachment1]
- queue = CommitQueueFeeder(MockTool())
- attachments.sort(queue._patch_cmp)
- self.assertEqual(attachments, expected_sort)
-
- def test_patches_with_acceptable_review_flag(self):
- class MockPatch(object):
- def __init__(self, patch_id, review):
- self.id = patch_id
- self.review = lambda: review
-
- feeder = CommitQueueFeeder(MockTool())
- patches = [MockPatch(1, None), MockPatch(2, '-'), MockPatch(3, "+")]
- self.assertEqual([patch.id for patch in feeder._patches_with_acceptable_review_flag(patches)], [1, 3])
diff --git a/Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py b/Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py
deleted file mode 100644
index b9fdf669c..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/flakytestreporter.py
+++ /dev/null
@@ -1,196 +0,0 @@
-# Copyright (c) 2010 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.
-
-import codecs
-import logging
-import os.path
-
-from webkitpy.common.net.layouttestresults import path_for_layout_test, LayoutTestResults
-from webkitpy.common.config import urls
-from webkitpy.tool.bot.botinfo import BotInfo
-from webkitpy.tool.grammar import plural, pluralize, join_with_separators
-
-_log = logging.getLogger(__name__)
-
-
-class FlakyTestReporter(object):
- def __init__(self, tool, bot_name):
- self._tool = tool
- self._bot_name = bot_name
- # FIXME: Use the real port object
- self._bot_info = BotInfo(tool, tool.deprecated_port().name())
-
- def _author_emails_for_test(self, flaky_test):
- test_path = path_for_layout_test(flaky_test)
- commit_infos = self._tool.checkout().recent_commit_infos_for_files([test_path])
- # This ignores authors which are not committers because we don't have their bugzilla_email.
- return set([commit_info.author().bugzilla_email() for commit_info in commit_infos if commit_info.author()])
-
- def _bugzilla_email(self):
- # FIXME: This is kinda a funny way to get the bugzilla email,
- # we could also just create a Credentials object directly
- # but some of the Credentials logic is in bugzilla.py too...
- self._tool.bugs.authenticate()
- return self._tool.bugs.username
-
- # FIXME: This should move into common.config
- _bot_emails = set([
- "commit-queue@webkit.org", # commit-queue
- "eseidel@chromium.org", # old commit-queue
- "webkit.review.bot@gmail.com", # style-queue, sheriff-bot, CrLx/Gtk EWS
- "buildbot@hotmail.com", # Win EWS
- # Mac EWS currently uses eric@webkit.org, but that's not normally a bot
- ])
-
- def _lookup_bug_for_flaky_test(self, flaky_test):
- bugs = self._tool.bugs.queries.fetch_bugs_matching_search(search_string=flaky_test)
- if not bugs:
- return None
- # Match any bugs which are from known bots or the email this bot is using.
- allowed_emails = self._bot_emails | set([self._bugzilla_email])
- bugs = filter(lambda bug: bug.reporter_email() in allowed_emails, bugs)
- if not bugs:
- return None
- if len(bugs) > 1:
- # FIXME: There are probably heuristics we could use for finding
- # the right bug instead of the first, like open vs. closed.
- _log.warn("Found %s %s matching '%s' filed by a bot, using the first." % (pluralize('bug', len(bugs)), [bug.id() for bug in bugs], flaky_test))
- return bugs[0]
-
- def _view_source_url_for_test(self, test_path):
- return urls.view_source_url("LayoutTests/%s" % test_path)
-
- def _create_bug_for_flaky_test(self, flaky_test, author_emails, latest_flake_message):
- format_values = {
- 'test': flaky_test,
- 'authors': join_with_separators(sorted(author_emails)),
- 'flake_message': latest_flake_message,
- 'test_url': self._view_source_url_for_test(flaky_test),
- 'bot_name': self._bot_name,
- }
- title = "Flaky Test: %(test)s" % format_values
- description = """This is an automatically generated bug from the %(bot_name)s.
-%(test)s has been flaky on the %(bot_name)s.
-
-%(test)s was authored by %(authors)s.
-%(test_url)s
-
-%(flake_message)s
-
-The bots will update this with information from each new failure.
-
-If you believe this bug to be fixed or invalid, feel free to close. The bots will re-open if the flake re-occurs.
-
-If you would like to track this test fix with another bug, please close this bug as a duplicate. The bots will follow the duplicate chain when making future comments.
-""" % format_values
-
- master_flake_bug = 50856 # MASTER: Flaky tests found by the commit-queue
- return self._tool.bugs.create_bug(title, description,
- component="Tools / Tests",
- cc=",".join(author_emails),
- blocked="50856")
-
- # This is over-engineered, but it makes for pretty bug messages.
- def _optional_author_string(self, author_emails):
- if not author_emails:
- return ""
- heading_string = plural('author') if len(author_emails) > 1 else 'author'
- authors_string = join_with_separators(sorted(author_emails))
- return " (%s: %s)" % (heading_string, authors_string)
-
- def _latest_flake_message(self, flaky_result, patch):
- failure_messages = [failure.message() for failure in flaky_result.failures]
- flake_message = "The %s just saw %s flake (%s) while processing attachment %s on bug %s." % (self._bot_name, flaky_result.test_name, ", ".join(failure_messages), patch.id(), patch.bug_id())
- return "%s\n%s" % (flake_message, self._bot_info.summary_text())
-
- def _results_diff_path_for_test(self, test_path):
- # FIXME: This is a big hack. We should get this path from results.json
- # except that old-run-webkit-tests doesn't produce a results.json
- # so we just guess at the file path.
- (test_path_root, _) = os.path.splitext(test_path)
- return "%s-diffs.txt" % test_path_root
-
- def _follow_duplicate_chain(self, bug):
- while bug.is_closed() and bug.duplicate_of():
- bug = self._tool.bugs.fetch_bug(bug.duplicate_of())
- return bug
-
- def _update_bug_for_flaky_test(self, bug, latest_flake_message):
- self._tool.bugs.post_comment_to_bug(bug.id(), latest_flake_message)
-
- # This method is needed because our archive paths include a leading tmp/layout-test-results
- def _find_in_archive(self, path, archive):
- for archived_path in archive.namelist():
- # Archives are currently created with full paths.
- if archived_path.endswith(path):
- return archived_path
- return None
-
- def _attach_failure_diff(self, flake_bug_id, flaky_test, results_archive_zip):
- results_diff_path = self._results_diff_path_for_test(flaky_test)
- # Check to make sure that the path makes sense.
- # Since we're not actually getting this path from the results.html
- # there is a chance it's wrong.
- bot_id = self._tool.status_server.bot_id or "bot"
- archive_path = self._find_in_archive(results_diff_path, results_archive_zip)
- if archive_path:
- results_diff = results_archive_zip.read(archive_path)
- description = "Failure diff from %s" % bot_id
- self._tool.bugs.add_attachment_to_bug(flake_bug_id, results_diff, description, filename="failure.diff")
- else:
- _log.warn("%s does not exist in results archive, uploading entire archive." % results_diff_path)
- description = "Archive of layout-test-results from %s" % bot_id
- # results_archive is a ZipFile object, grab the File object (.fp) to pass to Mechanize for uploading.
- results_archive_file = results_archive_zip.fp
- # Rewind the file object to start (since Mechanize won't do that automatically)
- # See https://bugs.webkit.org/show_bug.cgi?id=54593
- results_archive_file.seek(0)
- self._tool.bugs.add_attachment_to_bug(flake_bug_id, results_archive_file, description, filename="layout-test-results.zip")
-
- def report_flaky_tests(self, patch, flaky_test_results, results_archive):
- message = "The %s encountered the following flaky tests while processing attachment %s:\n\n" % (self._bot_name, patch.id())
- for flaky_result in flaky_test_results:
- flaky_test = flaky_result.test_name
- bug = self._lookup_bug_for_flaky_test(flaky_test)
- latest_flake_message = self._latest_flake_message(flaky_result, patch)
- author_emails = self._author_emails_for_test(flaky_test)
- if not bug:
- _log.info("Bug does not already exist for %s, creating." % flaky_test)
- flake_bug_id = self._create_bug_for_flaky_test(flaky_test, author_emails, latest_flake_message)
- else:
- bug = self._follow_duplicate_chain(bug)
- # FIXME: Ideally we'd only make one comment per flake, not two. But that's not possible
- # in all cases (e.g. when reopening), so for now file attachment and comment are separate.
- self._update_bug_for_flaky_test(bug, latest_flake_message)
- flake_bug_id = bug.id()
-
- self._attach_failure_diff(flake_bug_id, flaky_test, results_archive)
- message += "%s bug %s%s\n" % (flaky_test, flake_bug_id, self._optional_author_string(author_emails))
-
- message += "The %s is continuing to process your patch." % self._bot_name
- self._tool.bugs.post_comment_to_bug(patch.bug_id(), message)
diff --git a/Tools/Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py b/Tools/Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py
deleted file mode 100644
index 5e30a66aa..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/flakytestreporter_unittest.py
+++ /dev/null
@@ -1,169 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.config.committers import Committer
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.bot.flakytestreporter import FlakyTestReporter
-from webkitpy.tool.mocktool import MockTool
-from webkitpy.common.net.statusserver_mock import MockStatusServer
-
-
-# Creating fake CommitInfos is a pain, so we use a mock one here.
-class MockCommitInfo(object):
- def __init__(self, author_email):
- self._author_email = author_email
-
- def author(self):
- # It's definitely possible to have commits with authors who
- # are not in our contributors.json list.
- if not self._author_email:
- return None
- return Committer("Mock Committer", self._author_email)
-
-
-class FlakyTestReporterTest(unittest.TestCase):
- def _mock_test_result(self, testname):
- return test_results.TestResult(testname, [test_failures.FailureTextMismatch()])
-
- def _assert_emails_for_test(self, emails):
- tool = MockTool()
- reporter = FlakyTestReporter(tool, 'dummy-queue')
- commit_infos = [MockCommitInfo(email) for email in emails]
- tool.checkout().recent_commit_infos_for_files = lambda paths: set(commit_infos)
- self.assertEqual(reporter._author_emails_for_test([]), set(emails))
-
- def test_author_emails_for_test(self):
- self._assert_emails_for_test([])
- self._assert_emails_for_test(["test1@test.com", "test1@test.com"])
- self._assert_emails_for_test(["test1@test.com", "test2@test.com"])
-
- def test_create_bug_for_flaky_test(self):
- reporter = FlakyTestReporter(MockTool(), 'dummy-queue')
- expected_logs = """MOCK create_bug
-bug_title: Flaky Test: foo/bar.html
-bug_description: This is an automatically generated bug from the dummy-queue.
-foo/bar.html has been flaky on the dummy-queue.
-
-foo/bar.html was authored by test@test.com.
-http://trac.webkit.org/browser/trunk/LayoutTests/foo/bar.html
-
-FLAKE_MESSAGE
-
-The bots will update this with information from each new failure.
-
-If you believe this bug to be fixed or invalid, feel free to close. The bots will re-open if the flake re-occurs.
-
-If you would like to track this test fix with another bug, please close this bug as a duplicate. The bots will follow the duplicate chain when making future comments.
-
-component: Tools / Tests
-cc: test@test.com
-blocked: 50856
-"""
- OutputCapture().assert_outputs(self, reporter._create_bug_for_flaky_test, ['foo/bar.html', ['test@test.com'], 'FLAKE_MESSAGE'], expected_logs=expected_logs)
-
- def test_follow_duplicate_chain(self):
- tool = MockTool()
- reporter = FlakyTestReporter(tool, 'dummy-queue')
- bug = tool.bugs.fetch_bug(50004)
- self.assertEqual(reporter._follow_duplicate_chain(bug).id(), 50002)
-
- def test_report_flaky_tests_creating_bug(self):
- tool = MockTool()
- tool.filesystem = MockFileSystem({"/mock-results/foo/bar-diffs.txt": "mock"})
- tool.status_server = MockStatusServer(bot_id="mock-bot-id")
- reporter = FlakyTestReporter(tool, 'dummy-queue')
- reporter._lookup_bug_for_flaky_test = lambda bug_id: None
- patch = tool.bugs.fetch_attachment(10000)
- expected_logs = """Bug does not already exist for foo/bar.html, creating.
-MOCK create_bug
-bug_title: Flaky Test: foo/bar.html
-bug_description: This is an automatically generated bug from the dummy-queue.
-foo/bar.html has been flaky on the dummy-queue.
-
-foo/bar.html was authored by abarth@webkit.org.
-http://trac.webkit.org/browser/trunk/LayoutTests/foo/bar.html
-
-The dummy-queue just saw foo/bar.html flake (text diff) while processing attachment 10000 on bug 50000.
-Bot: mock-bot-id Port: MockPort Platform: MockPlatform 1.0
-
-The bots will update this with information from each new failure.
-
-If you believe this bug to be fixed or invalid, feel free to close. The bots will re-open if the flake re-occurs.
-
-If you would like to track this test fix with another bug, please close this bug as a duplicate. The bots will follow the duplicate chain when making future comments.
-
-component: Tools / Tests
-cc: abarth@webkit.org
-blocked: 50856
-MOCK add_attachment_to_bug: bug_id=60001, description=Failure diff from mock-bot-id filename=failure.diff mimetype=None
-MOCK bug comment: bug_id=50000, cc=None
---- Begin comment ---
-The dummy-queue encountered the following flaky tests while processing attachment 10000:
-
-foo/bar.html bug 60001 (author: abarth@webkit.org)
-The dummy-queue is continuing to process your patch.
---- End comment ---
-
-"""
- test_results = [self._mock_test_result('foo/bar.html')]
-
- class MockZipFile(object):
- def read(self, path):
- return ""
-
- def namelist(self):
- return ['foo/bar-diffs.txt']
-
- OutputCapture().assert_outputs(self, reporter.report_flaky_tests, [patch, test_results, MockZipFile()], expected_logs=expected_logs)
-
- def test_optional_author_string(self):
- reporter = FlakyTestReporter(MockTool(), 'dummy-queue')
- self.assertEqual(reporter._optional_author_string([]), "")
- self.assertEqual(reporter._optional_author_string(["foo@bar.com"]), " (author: foo@bar.com)")
- self.assertEqual(reporter._optional_author_string(["a@b.com", "b@b.com"]), " (authors: a@b.com and b@b.com)")
-
- def test_results_diff_path_for_test(self):
- reporter = FlakyTestReporter(MockTool(), 'dummy-queue')
- self.assertEqual(reporter._results_diff_path_for_test("test.html"), "test-diffs.txt")
-
- def test_find_in_archive(self):
- reporter = FlakyTestReporter(MockTool(), 'dummy-queue')
-
- class MockZipFile(object):
- def namelist(self):
- return ["tmp/layout-test-results/foo/bar-diffs.txt"]
-
- reporter._find_in_archive("foo/bar-diffs.txt", MockZipFile())
- # This is not ideal, but its
- reporter._find_in_archive("txt", MockZipFile())
diff --git a/Tools/Scripts/webkitpy/tool/bot/irc_command.py b/Tools/Scripts/webkitpy/tool/bot/irc_command.py
deleted file mode 100644
index 9b9915769..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/irc_command.py
+++ /dev/null
@@ -1,319 +0,0 @@
-# Copyright (c) 2010 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.
-
-import itertools
-import random
-import re
-
-from webkitpy.common.config import irc as config_irc
-from webkitpy.common.config import urls
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.net.web import Web
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.bot.queueengine import TerminateQueue
-from webkitpy.tool.grammar import join_with_separators
-
-
-def _post_error_and_check_for_bug_url(tool, nicks_string, exception):
- tool.irc().post("%s" % exception)
- bug_id = urls.parse_bug_id(exception.output)
- if bug_id:
- bug_url = tool.bugs.bug_url_for_bug_id(bug_id)
- tool.irc().post("%s: Ugg... Might have created %s" % (nicks_string, bug_url))
-
-
-# FIXME: Merge with Command?
-class IRCCommand(object):
- usage_string = None
- help_string = None
-
- def execute(self, nick, args, tool, sheriff):
- raise NotImplementedError("subclasses must implement")
-
- @classmethod
- def usage(cls, nick):
- return "%s: Usage: %s" % (nick, cls.usage_string)
-
- @classmethod
- def help(cls, nick):
- return "%s: %s" % (nick, cls.help_string)
-
-
-class CreateBug(IRCCommand):
- usage_string = "create-bug BUG_TITLE"
- help_string = "Creates a Bugzilla bug with the given title."
-
- def execute(self, nick, args, tool, sheriff):
- if not args:
- return self.usage(nick)
-
- bug_title = " ".join(args)
- bug_description = "%s\nRequested by %s on %s." % (bug_title, nick, config_irc.channel)
-
- # There happens to be a committers list hung off of Bugzilla, so
- # re-using that one makes things easiest for now.
- requester = tool.bugs.committers.contributor_by_irc_nickname(nick)
- requester_email = requester.bugzilla_email() if requester else None
-
- try:
- bug_id = tool.bugs.create_bug(bug_title, bug_description, cc=requester_email, assignee=requester_email)
- bug_url = tool.bugs.bug_url_for_bug_id(bug_id)
- return "%s: Created bug: %s" % (nick, bug_url)
- except Exception, e:
- return "%s: Failed to create bug:\n%s" % (nick, e)
-
-
-class Help(IRCCommand):
- usage_string = "help [COMMAND]"
- help_string = "Provides help on my individual commands."
-
- def execute(self, nick, args, tool, sheriff):
- if args:
- for command_name in args:
- if command_name in commands:
- self._post_command_help(nick, tool, commands[command_name])
- else:
- tool.irc().post("%s: Available commands: %s" % (nick, ", ".join(sorted(visible_commands.keys()))))
- tool.irc().post('%s: Type "%s: help COMMAND" for help on my individual commands.' % (nick, sheriff.name()))
-
- def _post_command_help(self, nick, tool, command):
- tool.irc().post(command.usage(nick))
- tool.irc().post(command.help(nick))
- aliases = " ".join(sorted(filter(lambda alias: commands[alias] == command and alias not in visible_commands, commands)))
- if aliases:
- tool.irc().post("%s: Aliases: %s" % (nick, aliases))
-
-
-class Hi(IRCCommand):
- usage_string = "hi"
- help_string = "Responds with hi."
-
- def execute(self, nick, args, tool, sheriff):
- if len(args) and re.match(sheriff.name() + r'_*\s*!\s*', ' '.join(args)):
- return "%s: hi %s!" % (nick, nick)
- quips = tool.bugs.quips()
- quips.append('"Only you can prevent forest fires." -- Smokey the Bear')
- return random.choice(quips)
-
-
-class PingPong(IRCCommand):
- usage_string = "ping"
- help_string = "Responds with pong."
-
- def execute(self, nick, args, tool, sheriff):
- return nick + ": pong"
-
-
-class YouThere(IRCCommand):
- usage_string = "yt?"
- help_string = "Responds with yes."
-
- def execute(self, nick, args, tool, sheriff):
- return "%s: yes" % nick
-
-
-class Restart(IRCCommand):
- usage_string = "restart"
- help_string = "Restarts sherrifbot. Will update its WebKit checkout, and re-join the channel momentarily."
-
- def execute(self, nick, args, tool, sheriff):
- tool.irc().post("Restarting...")
- raise TerminateQueue()
-
-
-class RollChromiumDEPS(IRCCommand):
- usage_string = "roll-chromium-deps REVISION"
- help_string = "Rolls WebKit's Chromium DEPS to the given revision???"
-
- def execute(self, nick, args, tool, sheriff):
- if not len(args):
- return self.usage(nick)
- tool.irc().post("%s: Will roll Chromium DEPS to %s" % (nick, ' '.join(args)))
- tool.irc().post("%s: Rolling Chromium DEPS to %s" % (nick, ' '.join(args)))
- tool.irc().post("%s: Rolled Chromium DEPS to %s" % (nick, ' '.join(args)))
- tool.irc().post("%s: Thank You" % nick)
-
-
-class Rollout(IRCCommand):
- usage_string = "rollout SVN_REVISION [SVN_REVISIONS] REASON"
- help_string = "Opens a rollout bug, CCing author + reviewer, and attaching the reverse-diff of the given revisions marked as commit-queue=?."
-
- def _extract_revisions(self, arg):
- revision_list = []
- possible_revisions = arg.split(",")
- for revision in possible_revisions:
- revision = revision.strip()
- if not revision:
- continue
- revision = revision.lstrip("r")
- # If one part of the arg isn't in the correct format,
- # then none of the arg should be considered a revision.
- if not revision.isdigit():
- return None
- revision_list.append(int(revision))
- return revision_list
-
- def _parse_args(self, args):
- if not args:
- return (None, None)
-
- svn_revision_list = []
- remaining_args = args[:]
- # First process all revisions.
- while remaining_args:
- new_revisions = self._extract_revisions(remaining_args[0])
- if not new_revisions:
- break
- svn_revision_list += new_revisions
- remaining_args = remaining_args[1:]
-
- # Was there a revision number?
- if not len(svn_revision_list):
- return (None, None)
-
- # Everything left is the reason.
- rollout_reason = " ".join(remaining_args)
- return svn_revision_list, rollout_reason
-
- def _responsible_nicknames_from_revisions(self, tool, sheriff, svn_revision_list):
- commit_infos = map(tool.checkout().commit_info_for_revision, svn_revision_list)
- nickname_lists = map(sheriff.responsible_nicknames_from_commit_info, commit_infos)
- return sorted(set(itertools.chain(*nickname_lists)))
-
- def _nicks_string(self, tool, sheriff, requester_nick, svn_revision_list):
- # FIXME: _parse_args guarentees that our svn_revision_list is all numbers.
- # However, it's possible our checkout will not include one of the revisions,
- # so we may need to catch exceptions from commit_info_for_revision here.
- target_nicks = [requester_nick] + self._responsible_nicknames_from_revisions(tool, sheriff, svn_revision_list)
- return ", ".join(target_nicks)
-
- def _update_working_copy(self, tool):
- tool.scm().discard_local_changes()
- tool.executive.run_and_throw_if_fail(tool.deprecated_port().update_webkit_command(), quiet=True, cwd=tool.scm().checkout_root)
-
- def _check_diff_failure(self, error_log, tool):
- if not error_log:
- return None
-
- revert_failure_message_start = error_log.find("Failed to apply reverse diff for revision")
- if revert_failure_message_start == -1:
- return None
-
- lines = error_log[revert_failure_message_start:].split('\n')[1:]
- files = itertools.takewhile(lambda line: tool.filesystem.exists(tool.scm().absolute_path(line)), lines)
- if files:
- return "Failed to apply reverse diff for file(s): %s" % ", ".join(files)
- return None
-
- def execute(self, nick, args, tool, sheriff):
- svn_revision_list, rollout_reason = self._parse_args(args)
-
- if (not svn_revision_list or not rollout_reason):
- return self.usage(nick)
-
- revision_urls_string = join_with_separators([urls.view_revision_url(revision) for revision in svn_revision_list])
- tool.irc().post("%s: Preparing rollout for %s ..." % (nick, revision_urls_string))
-
- self._update_working_copy(tool)
-
- # FIXME: IRCCommand should bind to a tool and have a self._tool like Command objects do.
- # Likewise we should probably have a self._sheriff.
- nicks_string = self._nicks_string(tool, sheriff, nick, svn_revision_list)
-
- try:
- complete_reason = "%s (Requested by %s on %s)." % (
- rollout_reason, nick, config_irc.channel)
- bug_id = sheriff.post_rollout_patch(svn_revision_list, complete_reason)
- bug_url = tool.bugs.bug_url_for_bug_id(bug_id)
- tool.irc().post("%s: Created rollout: %s" % (nicks_string, bug_url))
- except ScriptError, e:
- tool.irc().post("%s: Failed to create rollout patch:" % nicks_string)
- diff_failure = self._check_diff_failure(e.output, tool)
- if diff_failure:
- return "%s: %s" % (nicks_string, diff_failure)
- _post_error_and_check_for_bug_url(tool, nicks_string, e)
-
-
-class Whois(IRCCommand):
- usage_string = "whois SEARCH_STRING"
- help_string = "Searches known contributors and returns any matches with irc, email and full name. Wild card * permitted."
-
- def _full_record_and_nick(self, contributor):
- result = ''
-
- if contributor.irc_nicknames:
- result += ' (:%s)' % ', :'.join(contributor.irc_nicknames)
-
- if contributor.can_review:
- result += ' (r)'
- elif contributor.can_commit:
- result += ' (c)'
-
- return unicode(contributor) + result
-
- def execute(self, nick, args, tool, sheriff):
- if not args:
- return self.usage(nick)
- search_string = unicode(" ".join(args))
- # FIXME: We should get the ContributorList off the tool somewhere.
- contributors = CommitterList().contributors_by_search_string(search_string)
- if not contributors:
- return unicode("%s: Sorry, I don't know any contributors matching '%s'.") % (nick, search_string)
- if len(contributors) > 5:
- return unicode("%s: More than 5 contributors match '%s', could you be more specific?") % (nick, search_string)
- if len(contributors) == 1:
- contributor = contributors[0]
- if not contributor.irc_nicknames:
- return unicode("%s: %s hasn't told me their nick. Boo hoo :-(") % (nick, contributor)
- return unicode("%s: %s is %s. Why do you ask?") % (nick, search_string, self._full_record_and_nick(contributor))
- contributor_nicks = map(self._full_record_and_nick, contributors)
- contributors_string = join_with_separators(contributor_nicks, only_two_separator=" or ", last_separator=', or ')
- return unicode("%s: I'm not sure who you mean? %s could be '%s'.") % (nick, contributors_string, search_string)
-
-
-# FIXME: Lame. We should have an auto-registering CommandCenter.
-visible_commands = {
- "create-bug": CreateBug,
- "help": Help,
- "hi": Hi,
- "ping": PingPong,
- "restart": Restart,
- "roll-chromium-deps": RollChromiumDEPS,
- "rollout": Rollout,
- "whois": Whois,
- "yt?": YouThere,
-}
-
-# Add revert as an "easter egg" command. Why?
-# revert is the same as rollout and it would be confusing to list both when
-# they do the same thing. However, this command is a very natural thing for
-# people to use and it seems silly to have them hunt around for "rollout" instead.
-commands = visible_commands.copy()
-commands["revert"] = Rollout
-# "hello" Alias for "hi" command for the purposes of testing aliases
-commands["hello"] = Hi
diff --git a/Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py b/Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py
deleted file mode 100644
index 1bf26a158..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/irc_command_unittest.py
+++ /dev/null
@@ -1,143 +0,0 @@
-# Copyright (c) 2010 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.
-
-import os
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.bot.irc_command import *
-from webkitpy.tool.mocktool import MockTool
-from webkitpy.common.net.web_mock import MockWeb
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-
-
-class IRCCommandTest(unittest.TestCase):
- def test_whois(self):
- whois = Whois()
- self.assertEqual("tom: Usage: whois SEARCH_STRING",
- whois.execute("tom", [], None, None))
- self.assertEqual('tom: Adam Barth is "Adam Barth" <abarth@webkit.org> (:abarth) (r). Why do you ask?',
- whois.execute("tom", ["Adam", "Barth"], None, None))
- self.assertEqual("tom: Sorry, I don't know any contributors matching 'unknown@example.com'.",
- whois.execute("tom", ["unknown@example.com"], None, None))
- self.assertEqual('tom: tonyg@chromium.org is "Tony Gentilcore" <tonyg@chromium.org> (:tonyg-cr) (r). Why do you ask?',
- whois.execute("tom", ["tonyg@chromium.org"], None, None))
- self.assertEqual('tom: TonyG@Chromium.org is "Tony Gentilcore" <tonyg@chromium.org> (:tonyg-cr) (r). Why do you ask?',
- whois.execute("tom", ["TonyG@Chromium.org"], None, None))
- self.assertEqual('tom: rniwa is "Ryosuke Niwa" <rniwa@webkit.org> (:rniwa) (r). Why do you ask?',
- whois.execute("tom", ["rniwa"], None, None))
- self.assertEqual('tom: lopez is "Xan Lopez" <xan.lopez@gmail.com> (:xan) (r). Why do you ask?',
- whois.execute("tom", ["lopez"], None, None))
- self.assertEqual(u'tom: Osztrogon\u00e1c is "Csaba Osztrogon\u00e1c" <ossy@webkit.org> (:ossy) (r). Why do you ask?',
- whois.execute("tom", [u'Osztrogon\u00e1c'], None, None))
- self.assertEqual('tom: "Vicki Murley" <vicki@apple.com> hasn\'t told me their nick. Boo hoo :-(',
- whois.execute("tom", ["vicki@apple.com"], None, None))
- self.assertEqual('tom: I\'m not sure who you mean? "Gavin Peters" <gavinp@chromium.org> (:gavinp) (c) or "Gavin Barraclough" <barraclough@apple.com> (:gbarra) (r) could be \'Gavin\'.',
- whois.execute("tom", ["Gavin"], None, None))
- self.assertEqual('tom: More than 5 contributors match \'david\', could you be more specific?',
- whois.execute("tom", ["david"], None, None))
-
- def test_create_bug(self):
- create_bug = CreateBug()
- self.assertEqual("tom: Usage: create-bug BUG_TITLE",
- create_bug.execute("tom", [], None, None))
-
- example_args = ["sherrif-bot", "should", "have", "a", "create-bug", "command"]
- tool = MockTool()
-
- # MockBugzilla has a create_bug, but it logs to stderr, this avoids any logging.
- tool.bugs.create_bug = lambda a, b, cc=None, assignee=None: 50004
- self.assertEqual("tom: Created bug: http://example.com/50004",
- create_bug.execute("tom", example_args, tool, None))
-
- def mock_create_bug(title, description, cc=None, assignee=None):
- raise Exception("Exception from bugzilla!")
- tool.bugs.create_bug = mock_create_bug
- self.assertEqual("tom: Failed to create bug:\nException from bugzilla!",
- create_bug.execute("tom", example_args, tool, None))
-
- def test_rollout_updates_working_copy(self):
- rollout = Rollout()
- tool = MockTool()
- tool.executive = MockExecutive(should_log=True)
- expected_logs = "MOCK run_and_throw_if_fail: ['mock-update-webkit'], cwd=/mock-checkout\n"
- OutputCapture().assert_outputs(self, rollout._update_working_copy, [tool], expected_logs=expected_logs)
-
- def test_rollout(self):
- rollout = Rollout()
- self.assertEqual(([1234], "testing foo"),
- rollout._parse_args(["1234", "testing", "foo"]))
-
- self.assertEqual(([554], "testing foo"),
- rollout._parse_args(["r554", "testing", "foo"]))
-
- self.assertEqual(([556, 792], "testing foo"),
- rollout._parse_args(["r556", "792", "testing", "foo"]))
-
- self.assertEqual(([128, 256], "testing foo"),
- rollout._parse_args(["r128,r256", "testing", "foo"]))
-
- self.assertEqual(([512, 1024, 2048], "testing foo"),
- rollout._parse_args(["512,", "1024,2048", "testing", "foo"]))
-
- # Test invalid argument parsing:
- self.assertEqual((None, None), rollout._parse_args([]))
- self.assertEqual((None, None), rollout._parse_args(["--bar", "1234"]))
-
- # Invalid arguments result in the USAGE message.
- self.assertEqual("tom: Usage: rollout SVN_REVISION [SVN_REVISIONS] REASON",
- rollout.execute("tom", [], None, None))
-
- tool = MockTool()
- tool.filesystem.files["/mock-checkout/test/file/one"] = ""
- tool.filesystem.files["/mock-checkout/test/file/two"] = ""
- self.assertEqual("Failed to apply reverse diff for file(s): test/file/one, test/file/two",
- rollout._check_diff_failure("""
-Preparing rollout for bug 123456.
-Updating working directory
-Failed to apply reverse diff for revision 123456 because of the following conflicts:
-test/file/one
-test/file/two
-Failed to apply reverse diff for revision 123456 because of the following conflicts:
-test/file/one
-test/file/two
-Updating OpenSource
-Current branch master is up to date.
- """, tool))
- self.assertEqual(None, rollout._check_diff_failure("""
-Preparing rollout for bug 123456.
-Updating working directory
-Some other error report involving file paths:
-test/file/one
-test/file/two
-Updating OpenSource
-Current branch master is up to date.
- """, tool))
-
- # FIXME: We need a better way to test IRCCommands which call tool.irc().post()
diff --git a/Tools/Scripts/webkitpy/tool/bot/ircbot.py b/Tools/Scripts/webkitpy/tool/bot/ircbot.py
deleted file mode 100644
index 0c45b97bf..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/ircbot.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.tool.bot.queueengine import TerminateQueue
-from webkitpy.tool.bot.irc_command import IRCCommand
-from webkitpy.common.net.irc.ircbot import IRCBotDelegate
-from webkitpy.common.thread.threadedmessagequeue import ThreadedMessageQueue
-
-
-class _IRCThreadTearoff(IRCBotDelegate):
- def __init__(self, name, password, message_queue, wakeup_event):
- self._name = name
- self._password = password
- self._message_queue = message_queue
- self._wakeup_event = wakeup_event
-
- # IRCBotDelegate methods
-
- def irc_message_received(self, nick, message):
- self._message_queue.post([nick, message])
- self._wakeup_event.set()
-
- def irc_nickname(self):
- return self._name
-
- def irc_password(self):
- return self._password
-
-
-class Eliza(IRCCommand):
- therapist = None
-
- def __init__(self):
- if not self.therapist:
- import webkitpy.thirdparty.autoinstalled.eliza as eliza
- Eliza.therapist = eliza.eliza()
-
- def execute(self, nick, args, tool, sheriff):
- return "%s: %s" % (nick, self.therapist.respond(" ".join(args)))
-
-
-class IRCBot(object):
- def __init__(self, name, tool, agent, commands):
- self._name = name
- self._tool = tool
- self._agent = agent
- self._message_queue = ThreadedMessageQueue()
- self._commands = commands
-
- def irc_delegate(self):
- return _IRCThreadTearoff(self._name, self._tool.irc_password,
- self._message_queue, self._tool.wakeup_event)
-
- def _parse_command_and_args(self, request):
- tokenized_request = request.strip().split(" ")
- command = self._commands.get(tokenized_request[0])
- args = tokenized_request[1:]
- if not command:
- # Give the peoples someone to talk with.
- command = Eliza
- args = tokenized_request
- return (command, args)
-
- def process_message(self, requester_nick, request):
- command, args = self._parse_command_and_args(request)
- try:
- response = command().execute(requester_nick, args, self._tool, self._agent)
- if response:
- self._tool.irc().post(response)
- except TerminateQueue:
- raise
- # This will catch everything else. SystemExit and KeyboardInterrupt are not subclasses of Exception, so we won't catch those.
- except Exception, e:
- self._tool.irc().post("Exception executing command: %s" % e)
-
- def process_pending_messages(self):
- (messages, is_running) = self._message_queue.take_all()
- for message in messages:
- (nick, request) = message
- self.process_message(nick, request)
diff --git a/Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py b/Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py
deleted file mode 100644
index 7e1767023..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/ircbot_unittest.py
+++ /dev/null
@@ -1,158 +0,0 @@
-# Copyright (c) 2010 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.
-
-import unittest2 as unittest
-import random
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.bot import irc_command
-from webkitpy.tool.bot.queueengine import TerminateQueue
-from webkitpy.tool.bot.sheriff import Sheriff
-from webkitpy.tool.bot.ircbot import IRCBot
-from webkitpy.tool.bot.ircbot import Eliza
-from webkitpy.tool.bot.sheriff_unittest import MockSheriffBot
-from webkitpy.tool.mocktool import MockTool
-
-
-def run(message):
- tool = MockTool()
- tool.ensure_irc_connected(None)
- bot = IRCBot("sheriffbot", tool, Sheriff(tool, MockSheriffBot()), irc_command.commands)
- bot._message_queue.post(["mock_nick", message])
- bot.process_pending_messages()
-
-
-class IRCBotTest(unittest.TestCase):
- def test_eliza(self):
- eliza = Eliza()
- eliza.execute("tom", "hi", None, None)
- eliza.execute("tom", "bye", None, None)
-
- def test_parse_command_and_args(self):
- tool = MockTool()
- bot = IRCBot("sheriffbot", tool, Sheriff(tool, MockSheriffBot()), irc_command.commands)
- self.assertEqual(bot._parse_command_and_args(""), (Eliza, [""]))
- self.assertEqual(bot._parse_command_and_args(" "), (Eliza, [""]))
- self.assertEqual(bot._parse_command_and_args(" hi "), (irc_command.Hi, []))
- self.assertEqual(bot._parse_command_and_args(" hi there "), (irc_command.Hi, ["there"]))
-
- def test_exception_during_command(self):
- tool = MockTool()
- tool.ensure_irc_connected(None)
- bot = IRCBot("sheriffbot", tool, Sheriff(tool, MockSheriffBot()), irc_command.commands)
-
- class CommandWithException(object):
- def execute(self, nick, args, tool, sheriff):
- raise Exception("mock_exception")
-
- bot._parse_command_and_args = lambda request: (CommandWithException, [])
- expected_logs = 'MOCK: irc.post: Exception executing command: mock_exception\n'
- OutputCapture().assert_outputs(self, bot.process_message, args=["mock_nick", "ignored message"], expected_logs=expected_logs)
-
- class CommandWithException(object):
- def execute(self, nick, args, tool, sheriff):
- raise KeyboardInterrupt()
-
- bot._parse_command_and_args = lambda request: (CommandWithException, [])
- # KeyboardInterrupt and SystemExit are not subclasses of Exception and thus correctly will not be caught.
- OutputCapture().assert_outputs(self, bot.process_message, args=["mock_nick", "ignored message"], expected_exception=KeyboardInterrupt)
-
- def test_hi(self):
- random.seed(23324)
- expected_logs = 'MOCK: irc.post: "Only you can prevent forest fires." -- Smokey the Bear\n'
- OutputCapture().assert_outputs(self, run, args=["hi"], expected_logs=expected_logs)
-
- def test_help(self):
- expected_logs = 'MOCK: irc.post: mock_nick: Available commands: create-bug, help, hi, ping, restart, roll-chromium-deps, rollout, whois, yt?\nMOCK: irc.post: mock_nick: Type "mock-sheriff-bot: help COMMAND" for help on my individual commands.\n'
- OutputCapture().assert_outputs(self, run, args=["help"], expected_logs=expected_logs)
- expected_logs = 'MOCK: irc.post: mock_nick: Usage: hi\nMOCK: irc.post: mock_nick: Responds with hi.\nMOCK: irc.post: mock_nick: Aliases: hello\n'
- OutputCapture().assert_outputs(self, run, args=["help hi"], expected_logs=expected_logs)
- OutputCapture().assert_outputs(self, run, args=["help hello"], expected_logs=expected_logs)
-
- def test_restart(self):
- expected_logs = "MOCK: irc.post: Restarting...\n"
- OutputCapture().assert_outputs(self, run, args=["restart"], expected_logs=expected_logs, expected_exception=TerminateQueue)
-
- def test_rollout(self):
- expected_logs = "MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654 ...\nMOCK: irc.post: mock_nick, abarth, darin, eseidel: Created rollout: http://example.com/36936\n"
- OutputCapture().assert_outputs(self, run, args=["rollout 21654 This patch broke the world"], expected_logs=expected_logs)
-
- def test_revert(self):
- expected_logs = "MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654 ...\nMOCK: irc.post: mock_nick, abarth, darin, eseidel: Created rollout: http://example.com/36936\n"
- OutputCapture().assert_outputs(self, run, args=["revert 21654 This patch broke the world"], expected_logs=expected_logs)
-
- def test_multi_rollout(self):
- expected_logs = "MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654, http://trac.webkit.org/changeset/21655, and http://trac.webkit.org/changeset/21656 ...\nMOCK: irc.post: mock_nick, abarth, darin, eseidel: Created rollout: http://example.com/36936\n"
- OutputCapture().assert_outputs(self, run, args=["rollout 21654 21655 21656 This 21654 patch broke the world"], expected_logs=expected_logs)
-
- def test_rollout_with_r_in_svn_revision(self):
- expected_logs = "MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654 ...\nMOCK: irc.post: mock_nick, abarth, darin, eseidel: Created rollout: http://example.com/36936\n"
- OutputCapture().assert_outputs(self, run, args=["rollout r21654 This patch broke the world"], expected_logs=expected_logs)
-
- def test_multi_rollout_with_r_in_svn_revision(self):
- expected_logs = "MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654, http://trac.webkit.org/changeset/21655, and http://trac.webkit.org/changeset/21656 ...\nMOCK: irc.post: mock_nick, abarth, darin, eseidel: Created rollout: http://example.com/36936\n"
- OutputCapture().assert_outputs(self, run, args=["rollout r21654 21655 r21656 This r21654 patch broke the world"], expected_logs=expected_logs)
-
- def test_rollout_bananas(self):
- expected_logs = "MOCK: irc.post: mock_nick: Usage: rollout SVN_REVISION [SVN_REVISIONS] REASON\n"
- OutputCapture().assert_outputs(self, run, args=["rollout bananas"], expected_logs=expected_logs)
-
- def test_rollout_invalidate_revision(self):
- # When folks pass junk arguments, we should just spit the usage back at them.
- expected_logs = "MOCK: irc.post: mock_nick: Usage: rollout SVN_REVISION [SVN_REVISIONS] REASON\n"
- OutputCapture().assert_outputs(self, run,
- args=["rollout --component=Tools 21654"],
- expected_logs=expected_logs)
-
- def test_rollout_invalidate_reason(self):
- # FIXME: I'm slightly confused as to why this doesn't return the USAGE message.
- expected_logs = """MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654 ...
-MOCK: irc.post: mock_nick, abarth, darin, eseidel: Failed to create rollout patch:
-MOCK: irc.post: The rollout reason may not begin with - (\"-bad (Requested by mock_nick on #webkit).\").
-"""
- OutputCapture().assert_outputs(self, run,
- args=["rollout 21654 -bad"],
- expected_logs=expected_logs)
-
- def test_multi_rollout_invalidate_reason(self):
- expected_logs = """MOCK: irc.post: mock_nick: Preparing rollout for http://trac.webkit.org/changeset/21654, http://trac.webkit.org/changeset/21655, and http://trac.webkit.org/changeset/21656 ...
-MOCK: irc.post: mock_nick, abarth, darin, eseidel: Failed to create rollout patch:
-MOCK: irc.post: The rollout reason may not begin with - (\"-bad (Requested by mock_nick on #webkit).\").
-"""
- OutputCapture().assert_outputs(self, run,
- args=["rollout "
- "21654 21655 r21656 -bad"],
- expected_logs=expected_logs)
-
- def test_rollout_no_reason(self):
- expected_logs = "MOCK: irc.post: mock_nick: Usage: rollout SVN_REVISION [SVN_REVISIONS] REASON\n"
- OutputCapture().assert_outputs(self, run, args=["rollout 21654"], expected_logs=expected_logs)
-
- def test_multi_rollout_no_reason(self):
- expected_logs = "MOCK: irc.post: mock_nick: Usage: rollout SVN_REVISION [SVN_REVISIONS] REASON\n"
- OutputCapture().assert_outputs(self, run, args=["rollout 21654 21655 r21656"], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py b/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py
deleted file mode 100644
index a9e53ddb2..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (c) 2013 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.
-
-import logging
-
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.net.unittestresults import UnitTestResults
-from webkitpy.tool.steps.runtests import RunTests
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: This class no longer has a clear purpose, and should probably
-# be made part of Port, or renamed to LayoutTestResultsArchiver or something more fitting?
-class LayoutTestResultsReader(object):
- def __init__(self, host, results_directory, archive_directory):
- self._host = host
- self._results_directory = results_directory
- self._archive_directory = archive_directory
-
- # FIXME: This exists for mocking, but should instead be mocked via
- # host.filesystem.read_text_file. They have different error handling at the moment.
- def _read_file_contents(self, path):
- try:
- return self._host.filesystem.read_text_file(path)
- except IOError, e: # File does not exist or can't be read.
- return None
-
- # FIXME: This logic should move to the port object.
- def _create_layout_test_results(self):
- results_path = self._host.filesystem.join(self._results_directory, "full_results.json")
- results_html = self._read_file_contents(results_path)
- if not results_html:
- return None
- return LayoutTestResults.results_from_string(results_html)
-
- def _create_unit_test_results(self):
- results_path = self._host.filesystem.join(self._results_directory, "webkit_unit_tests_output.xml")
- results_xml = self._read_file_contents(results_path)
- if not results_xml:
- return None
- return UnitTestResults.results_from_string(results_xml)
-
- def results(self):
- layout_test_results = self._create_layout_test_results()
- unit_test_results = self._create_unit_test_results()
- if layout_test_results:
- # FIXME: This is used to detect if we had N failures due to
- # N tests failing, or if we hit the "exit-after-n-failures" limit.
- # These days we could just check for the "interrupted" key in results.json instead!
- layout_test_results.set_failure_limit_count(RunTests.NON_INTERACTIVE_FAILURE_LIMIT_COUNT)
- if unit_test_results:
- layout_test_results.add_unit_test_failures(unit_test_results)
- return layout_test_results
-
- def archive(self, patch):
- filesystem = self._host.filesystem
- workspace = self._host.workspace
- results_directory = self._results_directory
- results_name, _ = filesystem.splitext(filesystem.basename(results_directory))
- # Note: We name the zip with the bug_id instead of patch_id to match work_item_log_path().
- zip_path = workspace.find_unused_filename(self._archive_directory, "%s-%s" % (patch.bug_id(), results_name), "zip")
- if not zip_path:
- return None
- if not filesystem.isdir(results_directory):
- _log.info("%s does not exist, not archiving." % results_directory)
- return None
- archive = workspace.create_zip(filesystem.abspath(zip_path), filesystem.abspath(results_directory))
- # Remove the results directory to prevent http logs, etc. from getting huge between runs.
- # We could have create_zip remove the original, but this is more explicit.
- filesystem.rmtree(results_directory)
- return archive
diff --git a/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py b/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py
deleted file mode 100644
index c779bb8df..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/layouttestresultsreader_unittest.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright (c) 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-from webkitpy.common.host_mock import MockHost
-
-from .layouttestresultsreader import LayoutTestResultsReader
-
-
-class LayoutTestResultsReaderTest(unittest.TestCase):
- def test_missing_layout_test_results(self):
- host = MockHost()
- reader = LayoutTestResultsReader(host, "/mock-results", "/var/logs")
- layout_tests_results_path = '/mock-results/full_results.json'
- unit_tests_results_path = '/mock-results/webkit_unit_tests_output.xml'
- host.filesystem = MockFileSystem({layout_tests_results_path: None,
- unit_tests_results_path: None})
- # Make sure that our filesystem mock functions as we expect.
- self.assertRaises(IOError, host.filesystem.read_text_file, layout_tests_results_path)
- self.assertRaises(IOError, host.filesystem.read_text_file, unit_tests_results_path)
- # layout_test_results shouldn't raise even if the results.json file is missing.
- self.assertIsNone(reader.results())
-
- def test_create_unit_test_results(self):
- host = MockHost()
- reader = LayoutTestResultsReader(host, "/mock-results", "/var/logs")
- unit_tests_results_path = '/mock-results/webkit_unit_tests_output.xml'
- no_failures_xml = """<?xml version="1.0" encoding="UTF-8"?>
-<testsuites tests="3" failures="0" disabled="0" errors="0" time="11.35" name="AllTests">
- <testsuite name="RenderTableCellDeathTest" tests="3" failures="0" disabled="0" errors="0" time="0.677">
- <testcase name="CanSetColumn" status="run" time="0.168" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetColumnIndex" status="run" time="0.129" classname="RenderTableCellDeathTest" />
- <testcase name="CrashIfSettingUnsetRowIndex" status="run" time="0.123" classname="RenderTableCellDeathTest" />
- </testsuite>
-</testsuites>"""
- host.filesystem = MockFileSystem({unit_tests_results_path: no_failures_xml})
- self.assertEqual(reader._create_unit_test_results(), [])
-
- def test_missing_unit_test_results_path(self):
- host = MockHost()
- reader = LayoutTestResultsReader(host, "/mock-results", "/var/logs")
- reader._create_layout_test_results = lambda: LayoutTestResults([])
- reader._create_unit_test_results = lambda: None
- # layout_test_results shouldn't raise even if the unit tests xml file is missing.
- self.assertIsNotNone(reader.results(), None)
- self.assertEqual(reader.results().failing_tests(), [])
-
-
- def test_layout_test_results(self):
- reader = LayoutTestResultsReader(MockHost(), "/mock-results", "/var/logs")
- reader._read_file_contents = lambda path: None
- self.assertIsNone(reader.results())
- reader._read_file_contents = lambda path: ""
- self.assertIsNone(reader.results())
- reader._create_layout_test_results = lambda: LayoutTestResults([])
- results = reader.results()
- self.assertIsNotNone(results)
- self.assertEqual(results.failure_limit_count(), 30) # This value matches RunTests.NON_INTERACTIVE_FAILURE_LIMIT_COUNT
-
- def test_archive_last_layout_test_results(self):
- host = MockHost()
- results_directory = "/mock-results"
- reader = LayoutTestResultsReader(host, results_directory, "/var/logs")
- patch = host.bugs.fetch_attachment(10001)
- host.filesystem = MockFileSystem()
- # Should fail because the results_directory does not exist.
- expected_logs = "/mock-results does not exist, not archiving.\n"
- archive = OutputCapture().assert_outputs(self, reader.archive, [patch], expected_logs=expected_logs)
- self.assertIsNone(archive)
-
- host.filesystem.maybe_make_directory(results_directory)
- self.assertTrue(host.filesystem.exists(results_directory))
-
- self.assertIsNotNone(reader.archive(patch))
- self.assertFalse(host.filesystem.exists(results_directory))
-
- def test_archive_last_layout_test_results_with_relative_path(self):
- host = MockHost()
- results_directory = "/mock-checkout/layout-test-results"
-
- host.filesystem.maybe_make_directory(results_directory)
- host.filesystem.maybe_make_directory('/var/logs')
- self.assertTrue(host.filesystem.exists(results_directory))
-
- host.filesystem.chdir('/var')
- reader = LayoutTestResultsReader(host, results_directory, 'logs')
- patch = host.bugs.fetch_attachment(10001)
- # Should fail because the results_directory does not exist.
- self.assertIsNotNone(reader.archive(patch))
- self.assertEqual(host.workspace.source_path, results_directory)
- self.assertEqual(host.workspace.zip_path, '/var/logs/50000-layout-test-results.zip')
diff --git a/Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py b/Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py
deleted file mode 100644
index b01c6c7e2..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/patchanalysistask.py
+++ /dev/null
@@ -1,253 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.net.layouttestresults import LayoutTestResults
-
-
-class UnableToApplyPatch(Exception):
- def __init__(self, patch):
- Exception.__init__(self)
- self.patch = patch
-
-
-class PatchAnalysisTaskDelegate(object):
- def parent_command(self):
- raise NotImplementedError("subclasses must implement")
-
- def run_command(self, command):
- raise NotImplementedError("subclasses must implement")
-
- def command_passed(self, message, patch):
- raise NotImplementedError("subclasses must implement")
-
- def command_failed(self, message, script_error, patch):
- raise NotImplementedError("subclasses must implement")
-
- def refetch_patch(self, patch):
- raise NotImplementedError("subclasses must implement")
-
- def expected_failures(self):
- raise NotImplementedError("subclasses must implement")
-
- def test_results(self):
- raise NotImplementedError("subclasses must implement")
-
- def archive_last_test_results(self, patch):
- raise NotImplementedError("subclasses must implement")
-
- def build_style(self):
- raise NotImplementedError("subclasses must implement")
-
- # We could make results_archive optional, but for now it's required.
- def report_flaky_tests(self, patch, flaky_tests, results_archive):
- raise NotImplementedError("subclasses must implement")
-
-
-class PatchAnalysisTask(object):
- def __init__(self, delegate, patch):
- self._delegate = delegate
- self._patch = patch
- self._script_error = None
- self._results_archive_from_patch_test_run = None
- self._results_from_patch_test_run = None
- self._expected_failures = delegate.expected_failures()
-
- def _run_command(self, command, success_message, failure_message):
- try:
- self._delegate.run_command(command)
- self._delegate.command_passed(success_message, patch=self._patch)
- return True
- except ScriptError, e:
- self._script_error = e
- self.failure_status_id = self._delegate.command_failed(failure_message, script_error=self._script_error, patch=self._patch)
- return False
-
- def _clean(self):
- return self._run_command([
- "clean",
- ],
- "Cleaned working directory",
- "Unable to clean working directory")
-
- def _update(self):
- # FIXME: Ideally the status server log message should include which revision we updated to.
- return self._run_command([
- "update",
- ],
- "Updated working directory",
- "Unable to update working directory")
-
- def _apply(self):
- return self._run_command([
- "apply-attachment",
- "--no-update",
- "--non-interactive",
- self._patch.id(),
- ],
- "Applied patch",
- "Patch does not apply")
-
- def _build(self):
- return self._run_command([
- "build",
- "--no-clean",
- "--no-update",
- "--build-style=%s" % self._delegate.build_style(),
- ],
- "Built patch",
- "Patch does not build")
-
- def _build_without_patch(self):
- return self._run_command([
- "build",
- "--force-clean",
- "--no-update",
- "--build-style=%s" % self._delegate.build_style(),
- ],
- "Able to build without patch",
- "Unable to build without patch")
-
- def _test(self):
- return self._run_command([
- "build-and-test",
- "--no-clean",
- "--no-update",
- # Notice that we don't pass --build, which means we won't build!
- "--test",
- "--non-interactive",
- ],
- "Passed tests",
- "Patch does not pass tests")
-
- def _build_and_test_without_patch(self):
- return self._run_command([
- "build-and-test",
- "--force-clean",
- "--no-update",
- "--build",
- "--test",
- "--non-interactive",
- ],
- "Able to pass tests without patch",
- "Unable to pass tests without patch (tree is red?)")
-
- def _land(self):
- # Unclear if this should pass --quiet or not. If --parent-command always does the reporting, then it should.
- return self._run_command([
- "land-attachment",
- "--force-clean",
- "--non-interactive",
- "--parent-command=" + self._delegate.parent_command(),
- self._patch.id(),
- ],
- "Landed patch",
- "Unable to land patch")
-
- def _report_flaky_tests(self, flaky_test_results, results_archive):
- self._delegate.report_flaky_tests(self._patch, flaky_test_results, results_archive)
-
- def _results_failed_different_tests(self, first, second):
- first_failing_tests = [] if not first else first.failing_tests()
- second_failing_tests = [] if not second else second.failing_tests()
- return first_failing_tests != second_failing_tests
-
- def _test_patch(self):
- if self._test():
- return True
-
- # Note: archive_last_test_results deletes the results directory, making these calls order-sensitve.
- # We could remove this dependency by building the test_results from the archive.
- first_results = self._delegate.test_results()
- first_results_archive = self._delegate.archive_last_test_results(self._patch)
- first_script_error = self._script_error
- first_failure_status_id = self.failure_status_id
-
- if self._expected_failures.failures_were_expected(first_results):
- return True
-
- if self._test():
- # Only report flaky tests if we were successful at parsing results.json and archiving results.
- if first_results and first_results_archive:
- self._report_flaky_tests(first_results.failing_test_results(), first_results_archive)
- return True
-
- second_results = self._delegate.test_results()
- if self._results_failed_different_tests(first_results, second_results):
- # We could report flaky tests here, but we would need to be careful
- # to use similar checks to ExpectedFailures._can_trust_results
- # to make sure we don't report constant failures as flakes when
- # we happen to hit the --exit-after-N-failures limit.
- # See https://bugs.webkit.org/show_bug.cgi?id=51272
- return False
-
- # Archive (and remove) second results so test_results() after
- # build_and_test_without_patch won't use second results instead of the clean-tree results.
- second_results_archive = self._delegate.archive_last_test_results(self._patch)
-
- if self._build_and_test_without_patch():
- # The error from the previous ._test() run is real, report it.
- return self.report_failure(first_results_archive, first_results, first_script_error)
-
- clean_tree_results = self._delegate.test_results()
- self._expected_failures.update(clean_tree_results)
-
- # Re-check if the original results are now to be expected to avoid a full re-try.
- if self._expected_failures.failures_were_expected(first_results):
- return True
-
- # Now that we have updated information about failing tests with a clean checkout, we can
- # tell if our original failures were unexpected and fail the patch if necessary.
- if self._expected_failures.unexpected_failures_observed(first_results):
- self.failure_status_id = first_failure_status_id
- return self.report_failure(first_results_archive, first_results, first_script_error)
-
- # We don't know what's going on. The tree is likely very red (beyond our layout-test-results
- # failure limit), just keep retrying the patch. until someone fixes the tree.
- return False
-
- def results_archive_from_patch_test_run(self, patch):
- assert(self._patch.id() == patch.id()) # PatchAnalysisTask is not currently re-useable.
- return self._results_archive_from_patch_test_run
-
- def results_from_patch_test_run(self, patch):
- assert(self._patch.id() == patch.id()) # PatchAnalysisTask is not currently re-useable.
- return self._results_from_patch_test_run
-
- def report_failure(self, results_archive=None, results=None, script_error=None):
- if not self.validate():
- return False
- self._results_archive_from_patch_test_run = results_archive
- self._results_from_patch_test_run = results
- raise script_error or self._script_error
-
- def validate(self):
- raise NotImplementedError("subclasses must implement")
-
- def run(self):
- raise NotImplementedError("subclasses must implement")
diff --git a/Tools/Scripts/webkitpy/tool/bot/queueengine.py b/Tools/Scripts/webkitpy/tool/bot/queueengine.py
deleted file mode 100644
index 90e553f86..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/queueengine.py
+++ /dev/null
@@ -1,165 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-import sys
-import traceback
-
-from datetime import datetime, timedelta
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.outputtee import OutputTee
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: This will be caught by "except Exception:" blocks, we should consider
-# making this inherit from SystemExit instead (or BaseException, except that's not recommended).
-class TerminateQueue(Exception):
- pass
-
-
-class QueueEngineDelegate:
- def queue_log_path(self):
- raise NotImplementedError, "subclasses must implement"
-
- def work_item_log_path(self, work_item):
- raise NotImplementedError, "subclasses must implement"
-
- def begin_work_queue(self):
- raise NotImplementedError, "subclasses must implement"
-
- def should_continue_work_queue(self):
- raise NotImplementedError, "subclasses must implement"
-
- def next_work_item(self):
- raise NotImplementedError, "subclasses must implement"
-
- def process_work_item(self, work_item):
- raise NotImplementedError, "subclasses must implement"
-
- def handle_unexpected_error(self, work_item, message):
- raise NotImplementedError, "subclasses must implement"
-
-
-class QueueEngine:
- def __init__(self, name, delegate, wakeup_event, seconds_to_sleep=120):
- self._name = name
- self._delegate = delegate
- self._wakeup_event = wakeup_event
- self._output_tee = OutputTee()
- self._seconds_to_sleep = seconds_to_sleep
-
- log_date_format = "%Y-%m-%d %H:%M:%S"
- handled_error_code = 2
-
- # Child processes exit with a special code to the parent queue process can detect the error was handled.
- @classmethod
- def exit_after_handled_error(cls, error):
- _log.error(error)
- sys.exit(cls.handled_error_code)
-
- def run(self):
- self._begin_logging()
-
- self._delegate.begin_work_queue()
- while (self._delegate.should_continue_work_queue()):
- try:
- self._ensure_work_log_closed()
- work_item = self._delegate.next_work_item()
- if not work_item:
- self._sleep("No work item.")
- continue
-
- # FIXME: Work logs should not depend on bug_id specificaly.
- # This looks fixed, no?
- self._open_work_log(work_item)
- try:
- if not self._delegate.process_work_item(work_item):
- _log.warning("Unable to process work item.")
- continue
- except ScriptError, e:
- # Use a special exit code to indicate that the error was already
- # handled in the child process and we should just keep looping.
- if e.exit_code == self.handled_error_code:
- continue
- message = "Unexpected failure when processing patch! Please file a bug against webkit-patch.\n%s" % e.message_with_output()
- self._delegate.handle_unexpected_error(work_item, message)
- except TerminateQueue, e:
- self._stopping("TerminateQueue exception received.")
- return 0
- except KeyboardInterrupt, e:
- self._stopping("User terminated queue.")
- return 1
- except Exception, e:
- traceback.print_exc()
- # Don't try tell the status bot, in case telling it causes an exception.
- self._sleep("Exception while preparing queue")
- self._stopping("Delegate terminated queue.")
- return 0
-
- def _stopping(self, message):
- _log.info("\n%s" % message)
- self._delegate.stop_work_queue(message)
- # Be careful to shut down our OutputTee or the unit tests will be unhappy.
- self._ensure_work_log_closed()
- self._output_tee.remove_log(self._queue_log)
-
- def _begin_logging(self):
- self._queue_log = self._output_tee.add_log(self._delegate.queue_log_path())
- self._work_log = None
-
- def _open_work_log(self, work_item):
- work_item_log_path = self._delegate.work_item_log_path(work_item)
- if not work_item_log_path:
- return
- self._work_log = self._output_tee.add_log(work_item_log_path)
-
- def _ensure_work_log_closed(self):
- # If we still have a bug log open, close it.
- if self._work_log:
- self._output_tee.remove_log(self._work_log)
- self._work_log = None
-
- def _now(self):
- """Overriden by the unit tests to allow testing _sleep_message"""
- return datetime.now()
-
- def _sleep_message(self, message):
- wake_time = self._now() + timedelta(seconds=self._seconds_to_sleep)
- if self._seconds_to_sleep < 3 * 60:
- sleep_duration_text = str(self._seconds_to_sleep) + ' seconds'
- else:
- sleep_duration_text = str(round(self._seconds_to_sleep / 60)) + ' minutes'
- return "%s Sleeping until %s (%s)." % (message, wake_time.strftime(self.log_date_format), sleep_duration_text)
-
- def _sleep(self, message):
- _log.info(self._sleep_message(message))
- self._wakeup_event.wait(self._seconds_to_sleep)
- self._wakeup_event.clear()
diff --git a/Tools/Scripts/webkitpy/tool/bot/queueengine_unittest.py b/Tools/Scripts/webkitpy/tool/bot/queueengine_unittest.py
deleted file mode 100644
index de9fa2398..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/queueengine_unittest.py
+++ /dev/null
@@ -1,183 +0,0 @@
-# Copyright (c) 2009 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.
-
-import datetime
-import os
-import shutil
-import tempfile
-import threading
-import unittest2 as unittest
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.bot.queueengine import QueueEngine, QueueEngineDelegate, TerminateQueue
-
-
-class LoggingDelegate(QueueEngineDelegate):
- def __init__(self, test):
- self._test = test
- self._callbacks = []
- self._run_before = False
- self.stop_message = None
-
- expected_callbacks = [
- 'queue_log_path',
- 'begin_work_queue',
- 'should_continue_work_queue',
- 'next_work_item',
- 'work_item_log_path',
- 'process_work_item',
- 'should_continue_work_queue',
- 'stop_work_queue',
- ]
-
- def record(self, method_name):
- self._callbacks.append(method_name)
-
- def queue_log_path(self):
- self.record("queue_log_path")
- return os.path.join(self._test.temp_dir, "queue_log_path")
-
- def work_item_log_path(self, work_item):
- self.record("work_item_log_path")
- return os.path.join(self._test.temp_dir, "work_log_path", "%s.log" % work_item)
-
- def begin_work_queue(self):
- self.record("begin_work_queue")
-
- def should_continue_work_queue(self):
- self.record("should_continue_work_queue")
- if not self._run_before:
- self._run_before = True
- return True
- return False
-
- def next_work_item(self):
- self.record("next_work_item")
- return "work_item"
-
- def process_work_item(self, work_item):
- self.record("process_work_item")
- self._test.assertEqual(work_item, "work_item")
- return True
-
- def handle_unexpected_error(self, work_item, message):
- self.record("handle_unexpected_error")
- self._test.assertEqual(work_item, "work_item")
-
- def stop_work_queue(self, message):
- self.record("stop_work_queue")
- self.stop_message = message
-
-
-class RaisingDelegate(LoggingDelegate):
- def __init__(self, test, exception):
- LoggingDelegate.__init__(self, test)
- self._exception = exception
-
- def process_work_item(self, work_item):
- self.record("process_work_item")
- raise self._exception
-
-
-class FastQueueEngine(QueueEngine):
- def __init__(self, delegate):
- QueueEngine.__init__(self, "fast-queue", delegate, threading.Event())
-
- # No sleep for the wicked.
- seconds_to_sleep = 0
-
- def _sleep(self, message):
- pass
-
-
-class QueueEngineTest(unittest.TestCase):
- def test_trivial(self):
- delegate = LoggingDelegate(self)
- self._run_engine(delegate)
- self.assertEqual(delegate.stop_message, "Delegate terminated queue.")
- self.assertEqual(delegate._callbacks, LoggingDelegate.expected_callbacks)
- self.assertTrue(os.path.exists(os.path.join(self.temp_dir, "queue_log_path")))
- self.assertTrue(os.path.exists(os.path.join(self.temp_dir, "work_log_path", "work_item.log")))
-
- def test_unexpected_error(self):
- delegate = RaisingDelegate(self, ScriptError(exit_code=3))
- self._run_engine(delegate)
- expected_callbacks = LoggingDelegate.expected_callbacks[:]
- work_item_index = expected_callbacks.index('process_work_item')
- # The unexpected error should be handled right after process_work_item starts
- # but before any other callback. Otherwise callbacks should be normal.
- expected_callbacks.insert(work_item_index + 1, 'handle_unexpected_error')
- self.assertEqual(delegate._callbacks, expected_callbacks)
-
- def test_handled_error(self):
- delegate = RaisingDelegate(self, ScriptError(exit_code=QueueEngine.handled_error_code))
- self._run_engine(delegate)
- self.assertEqual(delegate._callbacks, LoggingDelegate.expected_callbacks)
-
- def _run_engine(self, delegate, engine=None, termination_message=None):
- if not engine:
- engine = QueueEngine("test-queue", delegate, threading.Event())
- if not termination_message:
- termination_message = "Delegate terminated queue."
- expected_logs = "\n%s\n" % termination_message
- OutputCapture().assert_outputs(self, engine.run, expected_logs=expected_logs)
-
- def _test_terminating_queue(self, exception, termination_message):
- work_item_index = LoggingDelegate.expected_callbacks.index('process_work_item')
- # The terminating error should be handled right after process_work_item.
- # There should be no other callbacks after stop_work_queue.
- expected_callbacks = LoggingDelegate.expected_callbacks[:work_item_index + 1]
- expected_callbacks.append("stop_work_queue")
-
- delegate = RaisingDelegate(self, exception)
- self._run_engine(delegate, termination_message=termination_message)
-
- self.assertEqual(delegate._callbacks, expected_callbacks)
- self.assertEqual(delegate.stop_message, termination_message)
-
- def test_terminating_error(self):
- self._test_terminating_queue(KeyboardInterrupt(), "User terminated queue.")
- self._test_terminating_queue(TerminateQueue(), "TerminateQueue exception received.")
-
- def test_now(self):
- """Make sure there are no typos in the QueueEngine.now() method."""
- engine = QueueEngine("test", None, None)
- self.assertIsInstance(engine._now(), datetime.datetime)
-
- def test_sleep_message(self):
- engine = QueueEngine("test", None, None)
- engine._now = lambda: datetime.datetime(2010, 1, 1)
- expected_sleep_message = "MESSAGE Sleeping until 2010-01-01 00:02:00 (120 seconds)."
- self.assertEqual(engine._sleep_message("MESSAGE"), expected_sleep_message)
-
- def setUp(self):
- self.temp_dir = tempfile.mkdtemp(suffix="work_queue_test_logs")
-
- def tearDown(self):
- shutil.rmtree(self.temp_dir)
diff --git a/Tools/Scripts/webkitpy/tool/bot/sheriff.py b/Tools/Scripts/webkitpy/tool/bot/sheriff.py
deleted file mode 100644
index 9ef487537..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/sheriff.py
+++ /dev/null
@@ -1,105 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.common.config import urls
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.grammar import join_with_separators
-
-
-class Sheriff(object):
- def __init__(self, tool, sheriffbot):
- self._tool = tool
- self._sheriffbot = sheriffbot
-
- def name(self):
- return self._sheriffbot.name
-
- def responsible_nicknames_from_commit_info(self, commit_info):
- nestedList = [party.irc_nicknames for party in commit_info.responsible_parties() if party.irc_nicknames]
- return reduce(lambda list, childList: list + childList, nestedList)
-
- def post_irc_warning(self, commit_info, builders):
- irc_nicknames = sorted(self.responsible_nicknames_from_commit_info(commit_info))
- irc_prefix = ": " if irc_nicknames else ""
- irc_message = "%s%s%s might have broken %s" % (
- ", ".join(irc_nicknames),
- irc_prefix,
- urls.view_revision_url(commit_info.revision()),
- join_with_separators([builder.name() for builder in builders]))
-
- self._tool.irc().post(irc_message)
-
- def post_irc_summary(self, failure_map):
- failing_tests = failure_map.failing_tests()
- if not failing_tests:
- return
- test_list_limit = 5
- irc_message = "New failures: %s" % ", ".join(sorted(failing_tests)[:test_list_limit])
- failure_count = len(failing_tests)
- if failure_count > test_list_limit:
- irc_message += " (and %s more...)" % (failure_count - test_list_limit)
- self._tool.irc().post(irc_message)
-
- def post_rollout_patch(self, svn_revision_list, rollout_reason):
- # Ensure that svn revisions are numbers (and not options to
- # create-rollout).
- try:
- svn_revisions = " ".join([str(int(revision)) for revision in svn_revision_list])
- except:
- raise ScriptError(message="Invalid svn revision number \"%s\"."
- % " ".join(svn_revision_list))
-
- if rollout_reason.startswith("-"):
- raise ScriptError(message="The rollout reason may not begin "
- "with - (\"%s\")." % rollout_reason)
-
- output = self._sheriffbot.run_webkit_patch([
- "create-rollout",
- "--force-clean",
- # In principle, we should pass --non-interactive here, but it
- # turns out that create-rollout doesn't need it yet. We can't
- # pass it prophylactically because we reject unrecognized command
- # line switches.
- "--parent-command=sheriff-bot",
- svn_revisions,
- rollout_reason,
- ])
- return urls.parse_bug_id(output)
-
- def post_blame_comment_on_bug(self, commit_info, builders, tests):
- if not commit_info.bug_id():
- return
- comment = "%s might have broken %s" % (
- urls.view_revision_url(commit_info.revision()),
- join_with_separators([builder.name() for builder in builders]))
- if tests:
- comment += "\nThe following tests are not passing:\n"
- comment += "\n".join(tests)
- self._tool.bugs.post_comment_to_bug(commit_info.bug_id(),
- comment,
- cc=self._sheriffbot.watchers)
diff --git a/Tools/Scripts/webkitpy/tool/bot/sheriff_unittest.py b/Tools/Scripts/webkitpy/tool/bot/sheriff_unittest.py
deleted file mode 100644
index cf989c9ce..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/sheriff_unittest.py
+++ /dev/null
@@ -1,89 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.buildbot import Builder
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.bot.sheriff import Sheriff
-from webkitpy.tool.mocktool import MockTool
-
-
-class MockSheriffBot(object):
- name = "mock-sheriff-bot"
- watchers = [
- "watcher@example.com",
- ]
-
- def run_webkit_patch(self, args):
- return "Created bug https://bugs.webkit.org/show_bug.cgi?id=36936\n"
-
-
-class SheriffTest(unittest.TestCase):
- def test_post_blame_comment_on_bug(self):
- def run():
- sheriff = Sheriff(MockTool(), MockSheriffBot())
- builders = [
- Builder("Foo", None),
- Builder("Bar", None),
- ]
- commit_info = Mock()
- commit_info.bug_id = lambda: None
- commit_info.revision = lambda: 4321
- # Should do nothing with no bug_id
- sheriff.post_blame_comment_on_bug(commit_info, builders, [])
- sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
- # Should try to post a comment to the bug, but MockTool.bugs does nothing.
- commit_info.bug_id = lambda: 1234
- sheriff.post_blame_comment_on_bug(commit_info, builders, [])
- sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1"])
- sheriff.post_blame_comment_on_bug(commit_info, builders, ["mock-test-1", "mock-test-2"])
-
- expected_logs = u"""MOCK bug comment: bug_id=1234, cc=['watcher@example.com']
---- Begin comment ---
-http://trac.webkit.org/changeset/4321 might have broken Foo and Bar
---- End comment ---
-
-MOCK bug comment: bug_id=1234, cc=['watcher@example.com']
---- Begin comment ---
-http://trac.webkit.org/changeset/4321 might have broken Foo and Bar
-The following tests are not passing:
-mock-test-1
---- End comment ---
-
-MOCK bug comment: bug_id=1234, cc=['watcher@example.com']
---- Begin comment ---
-http://trac.webkit.org/changeset/4321 might have broken Foo and Bar
-The following tests are not passing:
-mock-test-1
-mock-test-2
---- End comment ---
-
-"""
- OutputCapture().assert_outputs(self, run, expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/bot/stylequeuetask.py b/Tools/Scripts/webkitpy/tool/bot/stylequeuetask.py
deleted file mode 100644
index 01f7f723f..000000000
--- a/Tools/Scripts/webkitpy/tool/bot/stylequeuetask.py
+++ /dev/null
@@ -1,75 +0,0 @@
-# Copyright (c) 2012 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.
-
-from webkitpy.tool.bot.patchanalysistask import PatchAnalysisTask, PatchAnalysisTaskDelegate, UnableToApplyPatch
-
-
-class StyleQueueTaskDelegate(PatchAnalysisTaskDelegate):
- def parent_command(self):
- return "style-queue"
-
-
-class StyleQueueTask(PatchAnalysisTask):
- def validate(self):
- self._patch = self._delegate.refetch_patch(self._patch)
- if self._patch.is_obsolete():
- return False
- if self._patch.bug().is_closed():
- return False
- if self._patch.review() == "-":
- return False
- return True
-
- def _check_style(self):
- return self._run_command([
- "check-style-local",
- "--non-interactive",
- "--quiet",
- ],
- "Style checked",
- "Patch did not pass style check")
-
- def _apply_watch_list(self):
- return self._run_command([
- "apply-watchlist-local",
- self._patch.bug_id(),
- ],
- "Watchlist applied",
- "Unabled to apply watchlist")
-
- def run(self):
- if not self._clean():
- return False
- if not self._update():
- return False
- if not self._apply():
- raise UnableToApplyPatch(self._patch)
- self._apply_watch_list()
- if not self._check_style():
- return self.report_failure()
- return True
diff --git a/Tools/Scripts/webkitpy/tool/commands/__init__.py b/Tools/Scripts/webkitpy/tool/commands/__init__.py
deleted file mode 100644
index a584ee037..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/__init__.py
+++ /dev/null
@@ -1,24 +0,0 @@
-# Required for Python to search this directory for module files
-
-from webkitpy.tool.commands.adduserstogroups import AddUsersToGroups
-from webkitpy.tool.commands.analyzechangelog import AnalyzeChangeLog
-from webkitpy.tool.commands.applywatchlistlocal import ApplyWatchListLocal
-from webkitpy.tool.commands.bugfortest import BugForTest
-from webkitpy.tool.commands.bugsearch import BugSearch
-from webkitpy.tool.commands.download import *
-from webkitpy.tool.commands.earlywarningsystem import AbstractEarlyWarningSystem
-from webkitpy.tool.commands.findusers import FindUsers
-from webkitpy.tool.commands.gardenomatic import GardenOMatic
-from webkitpy.tool.commands.newcommitbot import NewCommitBot
-from webkitpy.tool.commands.openbugs import OpenBugs
-from webkitpy.tool.commands.perfalizer import Perfalizer
-from webkitpy.tool.commands.prettydiff import PrettyDiff
-from webkitpy.tool.commands.queries import *
-from webkitpy.tool.commands.queues import *
-from webkitpy.tool.commands.rebaseline import Rebaseline
-from webkitpy.tool.commands.rebaselineserver import RebaselineServer
-from webkitpy.tool.commands.sheriffbot import *
-from webkitpy.tool.commands.upload import *
-from webkitpy.tool.commands.suggestnominations import *
-
-AbstractEarlyWarningSystem.load_ews_classes()
diff --git a/Tools/Scripts/webkitpy/tool/commands/abstractlocalservercommand.py b/Tools/Scripts/webkitpy/tool/commands/abstractlocalservercommand.py
deleted file mode 100644
index 25a36ce0b..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/abstractlocalservercommand.py
+++ /dev/null
@@ -1,57 +0,0 @@
-# Copyright (C) 2011 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:
-#
-# 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 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.
-
-from optparse import make_option
-import threading
-
-from webkitpy.tool.multicommandtool import Command
-
-
-class AbstractLocalServerCommand(Command):
- server = None
- launch_path = "/"
-
- def __init__(self):
- options = [
- make_option("--httpd-port", action="store", type="int", default=8127, help="Port to use for the HTTP server"),
- make_option("--no-show-results", action="store_false", default=True, dest="show_results", help="Don't launch a browser with the rebaseline server"),
- ]
- Command.__init__(self, options=options)
-
- def _prepare_config(self, options, args, tool):
- return None
-
- def execute(self, options, args, tool):
- config = self._prepare_config(options, args, tool)
-
- server_url = "http://localhost:%d%s" % (options.httpd_port, self.launch_path)
- print "Starting server at %s" % server_url
- print "Use the 'Exit' link in the UI, %squitquitquit or Ctrl-C to stop" % server_url
-
- if options.show_results:
- # FIXME: This seems racy.
- threading.Timer(0.1, lambda: self._tool.user.open_url(server_url)).start()
-
- httpd = self.server(httpd_port=options.httpd_port, config=config) # pylint: disable=E1102
- httpd.serve_forever()
diff --git a/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py b/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py
deleted file mode 100644
index fcc76ca14..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/abstractsequencedcommand.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.commands.stepsequence import StepSequence
-from webkitpy.tool.multicommandtool import Command
-
-_log = logging.getLogger(__name__)
-
-
-class AbstractSequencedCommand(Command):
- steps = None
- def __init__(self):
- self._sequence = StepSequence(self.steps)
- Command.__init__(self, self._sequence.options())
-
- def _prepare_state(self, options, args, tool):
- return None
-
- def execute(self, options, args, tool):
- try:
- state = self._prepare_state(options, args, tool)
- except ScriptError, e:
- _log.error(e.message_with_output())
- self._exit(e.exit_code or 2)
-
- self._sequence.run_and_handle_errors(tool, options, state)
diff --git a/Tools/Scripts/webkitpy/tool/commands/adduserstogroups.py b/Tools/Scripts/webkitpy/tool/commands/adduserstogroups.py
deleted file mode 100644
index 25e719f61..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/adduserstogroups.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2011 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.
-
-from webkitpy.tool.multicommandtool import Command
-
-
-class AddUsersToGroups(Command):
- name = "add-users-to-groups"
- help_text = "Add users matching subtring to specified groups"
-
- # This probably belongs in bugzilla.py
- known_groups = ['canconfirm', 'editbugs']
-
- def execute(self, options, args, tool):
- search_string = args[0]
- # FIXME: We could allow users to specify groups on the command line.
- list_title = 'Add users matching "%s" which groups?' % search_string
- # FIXME: Need a way to specify that "none" is not allowed.
- # FIXME: We could lookup what groups the current user is able to grant from bugzilla.
- groups = tool.user.prompt_with_list(list_title, self.known_groups, can_choose_multiple=True)
- if not groups:
- print "No groups specified."
- return
-
- login_userid_pairs = tool.bugs.queries.fetch_login_userid_pairs_matching_substring(search_string)
- if not login_userid_pairs:
- print "No users found matching '%s'" % search_string
- return
-
- print "Found %s users matching %s:" % (len(login_userid_pairs), search_string)
- for (login, user_id) in login_userid_pairs:
- print "%s (%s)" % (login, user_id)
-
- confirm_message = "Are you sure you want add %s users to groups %s? (This action cannot be undone using webkit-patch.)" % (len(login_userid_pairs), groups)
- if not tool.user.confirm(confirm_message):
- return
-
- for (login, user_id) in login_userid_pairs:
- print "Adding %s to %s" % (login, groups)
- tool.bugs.add_user_to_groups(user_id, groups)
diff --git a/Tools/Scripts/webkitpy/tool/commands/analyzechangelog.py b/Tools/Scripts/webkitpy/tool/commands/analyzechangelog.py
deleted file mode 100644
index 1a1e810de..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/analyzechangelog.py
+++ /dev/null
@@ -1,206 +0,0 @@
-# Copyright (c) 2011 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.
-
-import json
-import re
-import time
-
-from webkitpy.common.checkout.scm.detection import SCMDetector
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.common.config.contributionareas import ContributionAreas
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import Executive
-from webkitpy.tool.multicommandtool import Command
-from webkitpy.tool import steps
-
-
-class AnalyzeChangeLog(Command):
- name = "analyze-changelog"
- help_text = "Experimental command for analyzing change logs."
- long_help = "This command parses changelogs in a specified directory and summarizes the result as JSON files."
-
- def __init__(self):
- options = [
- steps.Options.changelog_count,
- ]
- Command.__init__(self, options=options)
-
- @staticmethod
- def _enumerate_changelogs(filesystem, dirname, changelog_count):
- changelogs = [filesystem.join(dirname, filename) for filename in filesystem.listdir(dirname) if re.match('^ChangeLog(-(\d{4}-\d{2}-\d{2}))?$', filename)]
- # Make sure ChangeLog shows up before ChangeLog-2011-01-01
- changelogs = sorted(changelogs, key=lambda filename: filename + 'X', reverse=True)
- return changelogs[:changelog_count]
-
- @staticmethod
- def _generate_jsons(filesystem, jsons, output_dir):
- for filename in jsons:
- print ' Generating', filename
- filesystem.write_text_file(filesystem.join(output_dir, filename), json.dumps(jsons[filename], indent=2))
-
- def execute(self, options, args, tool):
- filesystem = self._tool.filesystem
- if len(args) < 1 or not filesystem.exists(args[0]):
- print "Need the directory name to look for changelog as the first argument"
- return
- changelog_dir = filesystem.abspath(args[0])
-
- if len(args) < 2 or not filesystem.exists(args[1]):
- print "Need the output directory name as the second argument"
- return
- output_dir = args[1]
-
- startTime = time.time()
-
- print 'Enumerating ChangeLog files...'
- changelogs = AnalyzeChangeLog._enumerate_changelogs(filesystem, changelog_dir, options.changelog_count)
-
- analyzer = ChangeLogAnalyzer(tool, changelogs)
- analyzer.analyze()
-
- print 'Generating json files...'
- json_files = {
- 'summary.json': analyzer.summary(),
- 'contributors.json': analyzer.contributors_statistics(),
- 'areas.json': analyzer.areas_statistics(),
- }
- AnalyzeChangeLog._generate_jsons(filesystem, json_files, output_dir)
- commands_dir = filesystem.dirname(filesystem.path_to_module(self.__module__))
- print commands_dir
- filesystem.copyfile(filesystem.join(commands_dir, 'data/summary.html'), filesystem.join(output_dir, 'summary.html'))
-
- tick = time.time() - startTime
- print 'Finished in %02dm:%02ds' % (int(tick / 60), int(tick % 60))
-
-
-class ChangeLogAnalyzer(object):
- def __init__(self, host, changelog_paths):
- self._changelog_paths = changelog_paths
- self._filesystem = host.filesystem
- self._contribution_areas = ContributionAreas(host.filesystem)
- self._scm = host.scm()
- self._parsed_revisions = {}
-
- self._contributors_statistics = {}
- self._areas_statistics = dict([(area, {'reviewed': 0, 'unreviewed': 0, 'contributors': {}}) for area in self._contribution_areas.names()])
- self._summary = {'reviewed': 0, 'unreviewed': 0}
-
- self._longest_filename = max([len(path) - len(self._scm.checkout_root) for path in changelog_paths])
- self._filename = ''
- self._length_of_previous_output = 0
-
- def contributors_statistics(self):
- return self._contributors_statistics
-
- def areas_statistics(self):
- return self._areas_statistics
-
- def summary(self):
- return self._summary
-
- def _print_status(self, status):
- if self._length_of_previous_output:
- print "\r" + " " * self._length_of_previous_output,
- new_output = ('%' + str(self._longest_filename) + 's: %s') % (self._filename, status)
- print "\r" + new_output,
- self._length_of_previous_output = len(new_output)
-
- def _set_filename(self, filename):
- if self._filename:
- print
- self._filename = filename
-
- def analyze(self):
- for path in self._changelog_paths:
- self._set_filename(self._filesystem.relpath(path, self._scm.checkout_root))
- with self._filesystem.open_text_file_for_reading(path) as changelog:
- self._print_status('Parsing entries...')
- number_of_parsed_entries = self._analyze_entries(ChangeLog.parse_entries_from_file(changelog), path)
- self._print_status('Done (%d entries)' % number_of_parsed_entries)
- print
- self._summary['contributors'] = len(self._contributors_statistics)
- self._summary['contributors_with_reviews'] = sum([1 for contributor in self._contributors_statistics.values() if contributor['reviews']['total']])
- self._summary['contributors_without_reviews'] = self._summary['contributors'] - self._summary['contributors_with_reviews']
-
- def _collect_statistics_for_contributor_area(self, area, contributor, contribution_type, reviewed):
- area_contributors = self._areas_statistics[area]['contributors']
- if contributor not in area_contributors:
- area_contributors[contributor] = {'reviews': 0, 'reviewed': 0, 'unreviewed': 0}
- if contribution_type == 'patches':
- contribution_type = 'reviewed' if reviewed else 'unreviewed'
- area_contributors[contributor][contribution_type] += 1
-
- def _collect_statistics_for_contributor(self, contributor, contribution_type, areas, touched_files, reviewed):
- if contributor not in self._contributors_statistics:
- self._contributors_statistics[contributor] = {
- 'reviews': {'total': 0, 'areas': {}, 'files': {}},
- 'patches': {'reviewed': 0, 'unreviewed': 0, 'areas': {}, 'files': {}}}
- statistics = self._contributors_statistics[contributor][contribution_type]
-
- if contribution_type == 'reviews':
- statistics['total'] += 1
- elif reviewed:
- statistics['reviewed'] += 1
- else:
- statistics['unreviewed'] += 1
-
- for area in areas:
- self._increment_dictionary_value(statistics['areas'], area)
- self._collect_statistics_for_contributor_area(area, contributor, contribution_type, reviewed)
- for touchedfile in touched_files:
- self._increment_dictionary_value(statistics['files'], touchedfile)
-
- def _increment_dictionary_value(self, dictionary, key):
- dictionary[key] = dictionary.get(key, 0) + 1
-
- def _analyze_entries(self, entries, changelog_path):
- dirname = self._filesystem.dirname(changelog_path)
- i = 0
- for i, entry in enumerate(entries):
- self._print_status('(%s) entries' % i)
- assert(entry.authors())
-
- touchedfiles_for_entry = [self._filesystem.relpath(self._filesystem.join(dirname, name), self._scm.checkout_root) for name in entry.touched_files()]
- areas_for_entry = self._contribution_areas.areas_for_touched_files(touchedfiles_for_entry)
- authors_for_entry = entry.authors()
- reviewers_for_entry = entry.reviewers()
-
- for reviewer in reviewers_for_entry:
- self._collect_statistics_for_contributor(reviewer.full_name, 'reviews', areas_for_entry, touchedfiles_for_entry, reviewed=True)
-
- for author in authors_for_entry:
- self._collect_statistics_for_contributor(author['name'], 'patches', areas_for_entry, touchedfiles_for_entry,
- reviewed=bool(reviewers_for_entry))
-
- for area in areas_for_entry:
- self._areas_statistics[area]['reviewed' if reviewers_for_entry else 'unreviewed'] += 1
-
- self._summary['reviewed' if reviewers_for_entry else 'unreviewed'] += 1
-
- self._print_status('(%s) entries' % i)
- return i
diff --git a/Tools/Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py b/Tools/Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py
deleted file mode 100644
index 9c13740a2..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/analyzechangelog_unittest.py
+++ /dev/null
@@ -1,185 +0,0 @@
-# Cpyright (c) 2011 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.
-
-import json
-import sys
-from webkitpy.common.config.contributionareas import ContributionAreas
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive import Executive
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.commands.analyzechangelog import AnalyzeChangeLog
-from webkitpy.tool.commands.analyzechangelog import ChangeLogAnalyzer
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.multicommandtool import Command
-
-
-class AnalyzeChangeLogTest(CommandsTest):
- def test_enumerate_enumerate_changelogs(self):
- filesystem = MockFileSystem({
- 'foo/ChangeLog': '',
- 'foo/ChangeLog-2010-06-23': '',
- 'foo/ChangeLog-2010-12-31': '',
- 'foo/ChangeLog-x': '',
- 'foo/ChangeLog-2011-01-01': '',
- })
- changelogs = AnalyzeChangeLog._enumerate_changelogs(filesystem, 'foo/', None)
- self.assertEqual(changelogs, ['foo/ChangeLog', 'foo/ChangeLog-2011-01-01', 'foo/ChangeLog-2010-12-31', 'foo/ChangeLog-2010-06-23'])
-
- changelogs = AnalyzeChangeLog._enumerate_changelogs(filesystem, 'foo/', 2)
- self.assertEqual(changelogs, ['foo/ChangeLog', 'foo/ChangeLog-2011-01-01'])
-
- def test_generate_jsons(self):
- filesystem = MockFileSystem()
- test_json = {'array.json': [1, 2, 3, {'key': 'value'}], 'dictionary.json': {'somekey': 'somevalue', 'array': [4, 5]}}
-
- capture = OutputCapture()
- capture.capture_output()
-
- AnalyzeChangeLog._generate_jsons(filesystem, test_json, 'bar')
- self.assertEqual(set(filesystem.files.keys()), set(['bar/array.json', 'bar/dictionary.json']))
-
- capture.restore_output()
-
- self.assertEqual(json.loads(filesystem.files['bar/array.json']), test_json['array.json'])
- self.assertEqual(json.loads(filesystem.files['bar/dictionary.json']), test_json['dictionary.json'])
-
-
-class ChangeLogAnalyzerTest(CommandsTest):
- def test_analyze_one_changelog(self):
- host = MockHost()
- host.filesystem.files['mock-checkout/foo/ChangeLog'] = u"""2011-11-17 Mark Rowe <mrowe@apple.com>
-
- <http://webkit.org/b/72646> Disable deprecation warnings around code where we cannot easily
- switch away from the deprecated APIs.
-
- Reviewed by Sam Weinig.
-
- * platform/mac/WebCoreNSStringExtras.mm:
- * platform/network/cf/SocketStreamHandleCFNet.cpp:
- (WebCore::SocketStreamHandle::reportErrorToClient):
-
-2011-11-19 Kevin Ollivier <kevino@theolliviers.com>
-
- [wx] C++ bindings build fix for move of array classes to WTF.
-
- * bindings/scripts/CodeGeneratorCPP.pm:
- (GetCPPTypeGetter):
- (GetNamespaceForClass):
- (GenerateHeader):
- (GenerateImplementation):
-
-2011-10-27 Philippe Normand <pnormand@igalia.com> and Zan Dobersek <zandobersek@gmail.com>
-
- [GStreamer] WebAudio AudioFileReader implementation
- https://bugs.webkit.org/show_bug.cgi?id=69834
-
- Reviewed by Martin Robinson.
-
- Basic FileReader implementation, supporting one or 2 audio
- channels. An empty AudioDestination is also provided, its complete
- implementation is handled in bug 69835.
-
- * GNUmakefile.am:
- * GNUmakefile.list.am:
- * platform/audio/gstreamer/AudioDestinationGStreamer.cpp: Added.
- (WebCore::AudioDestination::create):
- (WebCore::AudioDestination::hardwareSampleRate):
- (WebCore::AudioDestinationGStreamer::AudioDestinationGStreamer):
- (WebCore::AudioDestinationGStreamer::~AudioDestinationGStreamer):
- (WebCore::AudioDestinationGStreamer::start):
- (WebCore::AudioDestinationGStreamer::stop):
- * platform/audio/gstreamer/AudioDestinationGStreamer.h: Added.
- (WebCore::AudioDestinationGStreamer::isPlaying):
- (WebCore::AudioDestinationGStreamer::sampleRate):
- (WebCore::AudioDestinationGStreamer::sourceProvider):
- * platform/audio/gstreamer/AudioFileReaderGStreamer.cpp: Added.
- (WebCore::getGStreamerAudioCaps):
- (WebCore::getFloatFromByteReader):
- (WebCore::copyGstreamerBuffersToAudioChannel):
- (WebCore::onAppsinkNewBufferCallback):
- (WebCore::messageCallback):
- (WebCore::onGStreamerDeinterleavePadAddedCallback):
- (WebCore::onGStreamerDeinterleaveReadyCallback):
- (WebCore::onGStreamerDecodebinPadAddedCallback):
- (WebCore::AudioFileReader::AudioFileReader):
- (WebCore::AudioFileReader::~AudioFileReader):
- (WebCore::AudioFileReader::handleBuffer):
- (WebCore::AudioFileReader::handleMessage):
- (WebCore::AudioFileReader::handleNewDeinterleavePad):
- (WebCore::AudioFileReader::deinterleavePadsConfigured):
- (WebCore::AudioFileReader::plugDeinterleave):
- (WebCore::AudioFileReader::createBus):
- (WebCore::createBusFromAudioFile):
- (WebCore::createBusFromInMemoryAudioFile):
- * platform/audio/gtk/AudioBusGtk.cpp: Added.
- (WebCore::AudioBus::loadPlatformResource):
-"""
-
- capture = OutputCapture()
- capture.capture_output()
-
- analyzer = ChangeLogAnalyzer(host, ['mock-checkout/foo/ChangeLog'])
- analyzer.analyze()
-
- capture.restore_output()
-
- self.assertEqual(analyzer.summary(),
- {'reviewed': 2, 'unreviewed': 1, 'contributors': 6, 'contributors_with_reviews': 2, 'contributors_without_reviews': 4})
-
- self.assertEqual(set(analyzer.contributors_statistics().keys()),
- set(['Sam Weinig', u'Mark Rowe', u'Kevin Ollivier', 'Martin Robinson', u'Philippe Normand', u'Zan Dobersek']))
-
- self.assertEqual(analyzer.contributors_statistics()['Sam Weinig'],
- {'reviews': {'files': {u'foo/platform/mac/WebCoreNSStringExtras.mm': 1, u'foo/platform/network/cf/SocketStreamHandleCFNet.cpp': 1},
- 'total': 1, 'areas': {'Network': 1}}, 'patches': {'files': {}, 'areas': {}, 'unreviewed': 0, 'reviewed': 0}})
- self.assertEqual(analyzer.contributors_statistics()[u'Mark Rowe'],
- {'reviews': {'files': {}, 'total': 0, 'areas': {}}, 'patches': {'files': {u'foo/platform/mac/WebCoreNSStringExtras.mm': 1,
- u'foo/platform/network/cf/SocketStreamHandleCFNet.cpp': 1}, 'areas': {'Network': 1}, 'unreviewed': 0, 'reviewed': 1}})
- self.assertEqual(analyzer.contributors_statistics()[u'Kevin Ollivier'],
- {'reviews': {'files': {}, 'total': 0, 'areas': {}}, 'patches': {'files': {u'foo/bindings/scripts/CodeGeneratorCPP.pm': 1},
- 'areas': {'Bindings': 1}, 'unreviewed': 1, 'reviewed': 0}})
-
- files_for_audio_patch = {u'foo/GNUmakefile.am': 1, u'foo/GNUmakefile.list.am': 1, 'foo/platform/audio/gstreamer/AudioDestinationGStreamer.cpp': 1,
- 'foo/platform/audio/gstreamer/AudioDestinationGStreamer.h': 1, 'foo/platform/audio/gstreamer/AudioFileReaderGStreamer.cpp': 1,
- 'foo/platform/audio/gtk/AudioBusGtk.cpp': 1}
- author_expectation_for_audio_patch = {'reviews': {'files': {}, 'total': 0, 'areas': {}},
- 'patches': {'files': files_for_audio_patch, 'areas': {'The WebKitGTK+ Port': 1}, 'unreviewed': 0, 'reviewed': 1}}
- self.assertEqual(analyzer.contributors_statistics()[u'Martin Robinson'],
- {'reviews': {'files': files_for_audio_patch, 'total': 1, 'areas': {'The WebKitGTK+ Port': 1}},
- 'patches': {'files': {}, 'areas': {}, 'unreviewed': 0, 'reviewed': 0}})
- self.assertEqual(analyzer.contributors_statistics()[u'Philippe Normand'], author_expectation_for_audio_patch)
- self.assertEqual(analyzer.contributors_statistics()[u'Zan Dobersek'], author_expectation_for_audio_patch)
-
- areas_statistics = analyzer.areas_statistics()
- areas_with_patches = [area for area in areas_statistics if areas_statistics[area]['reviewed'] or areas_statistics[area]['unreviewed']]
- self.assertEqual(set(areas_with_patches), set(['Bindings', 'Network', 'The WebKitGTK+ Port']))
- self.assertEqual(areas_statistics['Bindings'], {'unreviewed': 1, 'reviewed': 0, 'contributors':
- {u'Kevin Ollivier': {'reviews': 0, 'unreviewed': 1, 'reviewed': 0}}})
- self.assertEqual(areas_statistics['Network'], {'unreviewed': 0, 'reviewed': 1, 'contributors':
- {'Sam Weinig': {'reviews': 1, 'unreviewed': 0, 'reviewed': 0}, u'Mark Rowe': {'reviews': 0, 'unreviewed': 0, 'reviewed': 1}}})
diff --git a/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal.py b/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal.py
deleted file mode 100644
index 6735d4842..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (c) 2011 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.
-
-from webkitpy.tool.commands.abstractsequencedcommand import AbstractSequencedCommand
-from webkitpy.tool import steps
-
-
-class ApplyWatchListLocal(AbstractSequencedCommand):
- name = "apply-watchlist-local"
- help_text = "Applies the watchlist to local changes"
- argument_names = "[BUGID]"
- steps = [
- steps.ApplyWatchList,
- ]
- long_help = """"Applies the watchlist to local changes.
-The results is logged if a bug is no given. This may be used to try out a watchlist change."""
-
- def _prepare_state(self, options, args, tool):
- if len(args) > 1:
- raise Exception("Too many arguments given: %s" % (' '.join(args)))
- if not args:
- return {}
- return {
- "bug_id": args[0],
- }
diff --git a/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py b/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py
deleted file mode 100644
index e88a86fa5..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/applywatchlistlocal_unittest.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (c) 2011 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.
-
-
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.applywatchlistlocal import ApplyWatchListLocal
-
-
-class ApplyWatchListLocalTest(CommandsTest):
- def test_args_parsing(self):
- expected_logs = """MockWatchList: determine_cc_and_messages
-No bug was updated because no id was given.
-Result of watchlist: cc "abarth@webkit.org, eric@webkit.org, levin@chromium.org" messages "Message1.
-
-Message2."
-"""
- self.assert_execute_outputs(ApplyWatchListLocal(), [''], expected_logs=expected_logs)
-
- def test_args_parsing_with_bug(self):
- expected_logs = """MockWatchList: determine_cc_and_messages
-MOCK bug comment: bug_id=50002, cc=set(['eric@webkit.org', 'levin@chromium.org', 'abarth@webkit.org'])
---- Begin comment ---
-Message1.
-
-Message2.
---- End comment ---\n\n"""
- self.assert_execute_outputs(ApplyWatchListLocal(), ['50002'], expected_logs=expected_logs)
-
- def test_args_parsing_with_two_bugs(self):
- self._assertRaisesRegexp(Exception, 'Too many arguments given: 1234 5678', self.assert_execute_outputs, ApplyWatchListLocal(), ['1234', '5678'])
diff --git a/Tools/Scripts/webkitpy/tool/commands/bugfortest.py b/Tools/Scripts/webkitpy/tool/commands/bugfortest.py
deleted file mode 100644
index f6f84115e..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/bugfortest.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.tool.multicommandtool import Command
-from webkitpy.tool.bot.flakytestreporter import FlakyTestReporter
-
-
-# This is mostly a command for testing FlakyTestReporter, however
-# it could be easily expanded to auto-create bugs, etc. if another
-# command outside of webkitpy wanted to use it.
-class BugForTest(Command):
- name = "bug-for-test"
- help_text = "Finds the bugzilla bug for a given test"
-
- def execute(self, options, args, tool):
- reporter = FlakyTestReporter(tool, "webkitpy")
- search_string = args[0]
- bug = reporter._lookup_bug_for_flaky_test(search_string)
- if bug:
- bug = reporter._follow_duplicate_chain(bug)
- print "%5s %s" % (bug.id(), bug.title())
- else:
- print "No bugs found matching '%s'" % search_string
diff --git a/Tools/Scripts/webkitpy/tool/commands/bugsearch.py b/Tools/Scripts/webkitpy/tool/commands/bugsearch.py
deleted file mode 100644
index 1f3af7a70..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/bugsearch.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.tool.multicommandtool import Command
-
-
-class BugSearch(Command):
- name = "bug-search"
- help_text = "List bugs matching a query"
- argument_names = "QUERY"
- long_help = \
-"""Runs the bugzilla quicksearch QUERY on bugs.webkit.org, and lists all bugs
-returned. QUERY can be as simple as a bug number or a comma delimited list of
-bug numbers.
-See https://bugzilla.mozilla.org/page.cgi?id=quicksearch.html for full
-documentation on the query format."""
-
- def execute(self, options, args, tool):
- search_string = args[0]
- bugs = tool.bugs.queries.fetch_bugs_matching_quicksearch(search_string)
- for bug in bugs:
- print "%5s %s" % (bug.id(), bug.title())
- if not bugs:
- print "No bugs found matching '%s'" % search_string
diff --git a/Tools/Scripts/webkitpy/tool/commands/commandtest.py b/Tools/Scripts/webkitpy/tool/commands/commandtest.py
deleted file mode 100644
index 655c33fda..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/commandtest.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2009 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.
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.webkitunittest import TestCase
-from webkitpy.tool.mocktool import MockOptions, MockTool
-
-
-class CommandsTest(TestCase):
- def assert_execute_outputs(self, command, args=[], expected_stdout="", expected_stderr="", expected_exception=None, expected_logs=None, options=MockOptions(), tool=MockTool()):
- options.blocks = None
- options.cc = 'MOCK cc'
- options.component = 'MOCK component'
- options.confirm = True
- options.email = 'MOCK email'
- options.git_commit = 'MOCK git commit'
- options.obsolete_patches = True
- options.open_bug = True
- options.port = 'MOCK port'
- options.update_changelogs = False
- options.quiet = True
- options.reviewer = 'MOCK reviewer'
- command.bind_to_tool(tool)
- OutputCapture().assert_outputs(self, command.execute, [options, args, tool], expected_stdout=expected_stdout, expected_stderr=expected_stderr, expected_exception=expected_exception, expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/commands/data/summary.html b/Tools/Scripts/webkitpy/tool/commands/data/summary.html
deleted file mode 100644
index abf80d84f..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/data/summary.html
+++ /dev/null
@@ -1,455 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>ChangeLog Analysis</title>
-<style type="text/css">
-
-body {
- font-family: 'Helvetica' 'Segoe UI Light' sans-serif;
- font-weight: 200;
- padding: 20px;
- min-width: 1200px;
-}
-
-* {
- padding: 0px;
- margin: 0px;
- border: 0px;
-}
-
-h1, h2, h3 {
- font-weight: 200;
-}
-
-h1 {
- margin: 0 0 1em 0;
-}
-
-h2 {
- font-size: 1.2em;
- text-align: center;
- margin-bottom: 1em;
-}
-
-h3 {
- font-size: 1em;
-}
-
-.view {
- margin: 0px;
- width: 600px;
- float: left;
-}
-
-.graph-container p {
- width: 200px;
- text-align: right;
- margin: 20px 0 20px 0;
- padding: 5px;
- border-right: solid 1px black;
-}
-
-.graph-container table {
- width: 100%;
-}
-
-.graph-container table, .graph-container td {
- border-collapse: collapse;
- border: none;
-}
-
-.graph-container td {
- padding: 5px;
- vertical-align: center;
-}
-
-.graph-container td:first-child {
- width: 200px;
- text-align: right;
- border-right: solid 1px black;
-}
-
-.graph-container .selected {
- background: #eee;
-}
-
-#reviewers .selected td:first-child {
- border-radius: 10px 0px 0px 10px;
-}
-
-#areas .selected td:last-child {
- border-radius: 0px 10px 10px 0px;
-}
-
-.graph-container .bar {
- display: inline-block;
- min-height: 1em;
- background: #9f6;
- margin-right: 0.4ex;
-}
-
-.graph-container .reviewed-patches {
- background: #3cf;
- margin-right: 1px;
-}
-
-.graph-container .unreviewed-patches {
- background: #f99;
-}
-
-.constrained {
- background: #eee;
- border-radius: 10px;
-}
-
-.constrained .vertical-bar {
- border-right: solid 1px #eee;
-}
-
-#header {
- border-spacing: 5px;
-}
-
-#header section {
- display: table-cell;
- width: 200px;
- vertical-align: top;
- border: solid 2px #ccc;
- border-collapse: collapse;
- padding: 5px;
- font-size: 0.8em;
-}
-
-#header dt {
- float: left;
-}
-
-#header dt:after {
- content: ': ';
-}
-
-#header .legend {
- width: 600px;
-}
-
-.legend .bar {
- width: 15ex;
- padding: 2px;
-}
-
-.legend .reviews {
- width: 25ex;
-}
-
-.legend td:first-child {
- width: 18ex;
-}
-
-</style>
-</head>
-<body>
-<h1>ChangeLog Analysis</h1>
-
-<section id="header">
-<section id="summary">
-<h2>Summary</h2>
-</section>
-
-<section class="legend">
-<h2>Legend</h2>
-<div class="graph-container">
-<table>
-<tbody>
-<tr><td>Contributor's name</td>
-<td><span class="bar reviews">Reviews</span> <span class="value-container">(# of reviews)</span><br>
-<span class="bar reviewed-patches">Reviewed</span><span class="bar unreviewed-patches">Unreviewed</span>
-<span class="value-container">(# of reviewed):(# of unreviewed)</span></td></tr>
-</tbody>
-</table>
-</div>
-</section>
-</section>
-
-<section id="contributors" class="view">
-<h2 id="contributors-title">Contributors</h2>
-<div class="graph-container"></div>
-</section>
-
-<section id="areas" class="view">
-<h2 id="areas-title">Areas of contributions</h2>
-<div class="graph-container"></div>
-</section>
-
-<script>
-
-// Naive implementation of element extensions discussed on public-webapps
-
-if (!Element.prototype.append) {
- Element.prototype.append = function () {
- for (var i = 0; i < arguments.length; i++) {
- // FIXME: Take care of other node types
- if (arguments[i] instanceof Element || arguments[i] instanceof CharacterData)
- this.appendChild(arguments[i]);
- else
- this.appendChild(document.createTextNode(arguments[i]));
- }
- return this;
- }
-}
-
-if (!Node.prototype.remove) {
- Node.prototype.remove = function () {
- this.parentNode.removeChild(this);
- return this;
- }
-}
-
-if (!Element.create) {
- Element.create = function () {
- if (arguments.length < 1)
- return null;
- var element = document.createElement(arguments[0]);
- if (arguments.length == 1)
- return element;
-
- // FIXME: the second argument can be content or IDL attributes
- var attributes = arguments[1];
- for (attribute in attributes)
- element.setAttribute(attribute, attributes[attribute]);
-
- if (arguments.length >= 3)
- element.append.apply(element, arguments[2]);
-
- return element;
- }
-}
-
-if (!Node.prototype.removeAllChildren) {
- Node.prototype.removeAllChildren = function () {
- while (this.firstChild)
- this.firstChild.remove();
- return this;
- }
-}
-
-Element.prototype.removeClassNameFromAllElements = function (className) {
- var elements = this.getElementsByClassName(className);
- for (var i = 0; i < elements.length; i++)
- elements[i].classList.remove(className);
-}
-
-function getJSON(url, callback) {
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, true);
- xhr.onreadystatechange = function () {
- if (this.readyState == 4)
- callback(JSON.parse(xhr.responseText));
- }
- xhr.send();
-}
-
-function GraphView(container) {
- this._container = container;
- this._defaultData = null;
-}
-
-GraphView.prototype.setData = function(data, constrained) {
- if (constrained)
- this._container.classList.add('constrained');
- else
- this._container.classList.remove('constrained');
- this._clearGraph();
- this._constructGraph(data);
-}
-
-GraphView.prototype.setDefaultData = function(data) {
- this._defaultData = data;
- this.setData(data);
-}
-
-GraphView.prototype.reset = function () {
- this.setMarginTop();
- this.setData(this._defaultData);
-}
-
-GraphView.prototype.isConstrained = function () { return this._container.classList.contains('constrained'); }
-
-GraphView.prototype.targetRow = function (node) {
- var target = null;
-
- while (node && node != this._container) {
- if (node.localName == 'tr')
- target = node;
- node = node.parentNode;
- }
-
- return node && target;
-}
-
-GraphView.prototype.selectRow = function (row) {
- this._container.removeClassNameFromAllElements('selected');
- row.classList.add('selected');
-}
-
-GraphView.prototype.setMarginTop = function (y) { this._container.style.marginTop = y ? y + 'px' : null; }
-GraphView.prototype._graphContainer = function () { return this._container.getElementsByClassName('graph-container')[0]; }
-GraphView.prototype._clearGraph = function () { return this._graphContainer().removeAllChildren(); }
-
-GraphView.prototype._numberOfPatches = function (dataItem) {
- return dataItem.numberOfReviewedPatches + (dataItem.numberOfUnreviewedPatches !== undefined ? dataItem.numberOfUnreviewedPatches : 0);
-}
-
-GraphView.prototype._maximumValue = function (labels, data) {
- var numberOfPatches = this._numberOfPatches;
- return Math.max.apply(null, labels.map(function (label) {
- return Math.max(numberOfPatches(data[label]), data[label].numberOfReviews !== undefined ? data[label].numberOfReviews : 0);
- }));
-}
-
-GraphView.prototype._sortLabelsByNumberOfReviwsAndReviewedPatches = function(data) {
- var labels = Object.keys(data);
- if (!labels.length)
- return null;
- var numberOfPatches = this._numberOfPatches;
- var computeValue = function (dataItem) {
- return numberOfPatches(dataItem) + (dataItem.numberOfReviews !== undefined ? dataItem.numberOfReviews : 0);
- }
- labels.sort(function (a, b) { return computeValue(data[b]) - computeValue(data[a]); });
- return labels;
-}
-
-GraphView.prototype._constructGraph = function (data) {
- var element = this._graphContainer();
- var labels = this._sortLabelsByNumberOfReviwsAndReviewedPatches(data);
- if (!labels) {
- element.append(Element.create('p', {}, ['None']));
- return;
- }
-
- var maxValue = this._maximumValue(labels, data);
- var computeStyleForBar = function (value) { return 'width:' + (value * 85.0 / maxValue) + '%' }
-
- var table = Element.create('table', {}, [Element.create('tbody')]);
- for (var i = 0; i < labels.length; i++) {
- var label = labels[i];
- var item = data[label];
- var row = Element.create('tr', {}, [Element.create('td', {}, [label]), Element.create('td', {})]);
- var valueCell = row.lastChild;
-
- if (item.numberOfReviews != undefined) {
- valueCell.append(
- Element.create('span', {'class': 'bar reviews', 'style': computeStyleForBar(item.numberOfReviews) }),
- Element.create('span', {'class': 'value-container'}, [item.numberOfReviews]),
- Element.create('br')
- );
- }
-
- valueCell.append(Element.create('span', {'class': 'bar reviewed-patches', 'style': computeStyleForBar(item.numberOfReviewedPatches) }));
- if (item.numberOfUnreviewedPatches !== undefined)
- valueCell.append(Element.create('span', {'class': 'bar unreviewed-patches', 'style': computeStyleForBar(item.numberOfUnreviewedPatches) }));
-
- valueCell.append(Element.create('span', {'class': 'value-container'},
- [item.numberOfReviewedPatches + (item.numberOfUnreviewedPatches !== undefined ? ':' + item.numberOfUnreviewedPatches : '')]));
-
- table.firstChild.append(row);
- row.label = label;
- row.data = item;
- }
- element.append(table);
-}
-
-var contributorsView = new GraphView(document.querySelector('#contributors'));
-var areasView = new GraphView(document.querySelector('#areas'));
-
-getJSON('summary.json',
- function (summary) {
- var summaryContainer = document.querySelector('#summary');
- summaryContainer.append(Element.create('dl', {}, [
- Element.create('dt', {}, ['Total entries (reviewed)']),
- Element.create('dd', {}, [(summary['reviewed'] + summary['unreviewed']) + ' (' + summary['reviewed'] + ')']),
- Element.create('dt', {}, ['Total contributors']),
- Element.create('dd', {}, [summary['contributors']]),
- Element.create('dt', {}, ['Contributors who reviewed']),
- Element.create('dd', {}, [summary['contributors_with_reviews']]),
- ]));
- });
-
-getJSON('contributors.json',
- function (contributors) {
- for (var contributor in contributors) {
- contributor = contributors[contributor];
- contributor.numberOfReviews = contributor.reviews ? contributor.reviews.total : 0;
- contributor.numberOfReviewedPatches = contributor.patches ? contributor.patches.reviewed : 0;
- contributor.numberOfUnreviewedPatches = contributor.patches ? contributor.patches.unreviewed : 0;
- }
- contributorsView.setDefaultData(contributors);
- });
-
-getJSON('areas.json',
- function (areas) {
- for (var area in areas) {
- areas[area].numberOfReviewedPatches = areas[area].reviewed;
- areas[area].numberOfUnreviewedPatches = areas[area].unreviewed;
- }
- areasView.setDefaultData(areas);
- });
-
-function contributorAreas(contributorData) {
- var areas = new Object;
- for (var area in contributorData.reviews.areas) {
- if (!areas[area])
- areas[area] = {'numberOfReviewedPatches': 0};
- areas[area].numberOfReviews = contributorData.reviews.areas[area];
- }
- for (var area in contributorData.patches.areas) {
- if (!areas[area])
- areas[area] = {'numberOfReviews': 0};
- areas[area].numberOfReviewedPatches = contributorData.patches.areas[area];
- }
- return areas;
-}
-
-function areaContributors(areaData) {
- var contributors = areaData['contributors'];
- for (var contributor in contributors) {
- contributor = contributors[contributor];
- contributor.numberOfReviews = contributor.reviews;
- contributor.numberOfReviewedPatches = contributor.reviewed;
- contributor.numberOfUnreviewedPatches = contributor.unreviewed;
- }
- return contributors;
-}
-
-var mouseTimer = 0;
-window.onmouseover = function (event) {
- clearTimeout(mouseTimer);
-
- var row = contributorsView.targetRow(event.target);
- if (row) {
- if (!contributorsView.isConstrained()) {
- contributorsView.selectRow(row);
- areasView.setMarginTop(row.firstChild.offsetTop);
- areasView.setData(contributorAreas(row.data), 'constrained');
- }
- return;
- }
-
- row = areasView.targetRow(event.target);
- if (row) {
- if (!areasView.isConstrained()) {
- areasView.selectRow(row);
- contributorsView.setMarginTop(row.firstChild.offsetTop);
- contributorsView.setData(areaContributors(row.data), 'constrained');
- }
- return;
- }
-
- mouseTimer = setTimeout(function () {
- contributorsView.reset();
- areasView.reset();
- }, 500);
-}
-
-</script>
-</body>
-</html>
diff --git a/Tools/Scripts/webkitpy/tool/commands/download.py b/Tools/Scripts/webkitpy/tool/commands/download.py
deleted file mode 100644
index 85f576928..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/download.py
+++ /dev/null
@@ -1,496 +0,0 @@
-# Copyright (c) 2009, 2011 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-
-from webkitpy.tool import steps
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.common.config import urls
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.commands.abstractsequencedcommand import AbstractSequencedCommand
-from webkitpy.tool.commands.stepsequence import StepSequence
-from webkitpy.tool.comments import bug_comment_from_commit_text
-from webkitpy.tool.grammar import pluralize
-from webkitpy.tool.multicommandtool import Command
-
-_log = logging.getLogger(__name__)
-
-
-class Clean(AbstractSequencedCommand):
- name = "clean"
- help_text = "Clean the working copy"
- steps = [
- steps.DiscardLocalChanges,
- ]
-
- def _prepare_state(self, options, args, tool):
- options.force_clean = True
-
-
-class Update(AbstractSequencedCommand):
- name = "update"
- help_text = "Update working copy (used internally)"
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- ]
-
-
-class Build(AbstractSequencedCommand):
- name = "build"
- help_text = "Update working copy and build"
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.Build,
- ]
-
- def _prepare_state(self, options, args, tool):
- options.build = True
-
-
-class BuildAndTest(AbstractSequencedCommand):
- name = "build-and-test"
- help_text = "Update working copy, build, and run the tests"
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.Build,
- steps.RunTests,
- ]
-
-
-class Land(AbstractSequencedCommand):
- name = "land"
- help_text = "Land the current working directory diff and updates the associated bug if any"
- argument_names = "[BUGID]"
- show_in_main_help = True
- steps = [
- steps.AddSvnMimetypeForPng,
- steps.UpdateChangeLogsWithReviewer,
- steps.ValidateReviewer,
- steps.ValidateChangeLogs, # We do this after UpdateChangeLogsWithReviewer to avoid not having to cache the diff twice.
- steps.Build,
- steps.RunTests,
- steps.Commit,
- steps.CloseBugForLandDiff,
- ]
- long_help = """land commits the current working copy diff (just as svn or git commit would).
-land will NOT build and run the tests before committing, but you can use the --build option for that.
-If a bug id is provided, or one can be found in the ChangeLog land will update the bug after committing."""
-
- def _prepare_state(self, options, args, tool):
- changed_files = self._tool.scm().changed_files(options.git_commit)
- return {
- "changed_files": changed_files,
- "bug_id": (args and args[0]) or tool.checkout().bug_id_for_this_commit(options.git_commit, changed_files),
- }
-
-
-class LandCowhand(AbstractSequencedCommand):
- # Gender-blind term for cowboy, see: http://en.wiktionary.org/wiki/cowhand
- name = "land-cowhand"
- help_text = "Prepares a ChangeLog and lands the current working directory diff."
- steps = [
- steps.PrepareChangeLog,
- steps.EditChangeLog,
- steps.CheckStyle,
- steps.ConfirmDiff,
- steps.Build,
- steps.RunTests,
- steps.Commit,
- steps.CloseBugForLandDiff,
- ]
-
- def _prepare_state(self, options, args, tool):
- options.check_style_filter = "-changelog"
-
-
-class LandCowboy(LandCowhand):
- name = "land-cowboy"
-
- def _prepare_state(self, options, args, tool):
- _log.warning("land-cowboy is deprecated, use land-cowhand instead.")
- LandCowhand._prepare_state(self, options, args, tool)
-
-
-class CheckStyleLocal(AbstractSequencedCommand):
- name = "check-style-local"
- help_text = "Run check-webkit-style on the current working directory diff"
- steps = [
- steps.CheckStyle,
- ]
-
-
-class AbstractPatchProcessingCommand(Command):
- # Subclasses must implement the methods below. We don't declare them here
- # because we want to be able to implement them with mix-ins.
- #
- # pylint: disable=E1101
- # def _fetch_list_of_patches_to_process(self, options, args, tool):
- # def _prepare_to_process(self, options, args, tool):
- # def _process_patch(self, options, args, tool):
-
- @staticmethod
- def _collect_patches_by_bug(patches):
- bugs_to_patches = {}
- for patch in patches:
- bugs_to_patches[patch.bug_id()] = bugs_to_patches.get(patch.bug_id(), []) + [patch]
- return bugs_to_patches
-
- def execute(self, options, args, tool):
- self._prepare_to_process(options, args, tool)
- patches = self._fetch_list_of_patches_to_process(options, args, tool)
-
- # It's nice to print out total statistics.
- bugs_to_patches = self._collect_patches_by_bug(patches)
- _log.info("Processing %s from %s." % (pluralize("patch", len(patches)), pluralize("bug", len(bugs_to_patches))))
-
- for patch in patches:
- self._process_patch(patch, options, args, tool)
-
-
-class AbstractPatchSequencingCommand(AbstractPatchProcessingCommand):
- prepare_steps = None
- main_steps = None
-
- def __init__(self):
- options = []
- self._prepare_sequence = StepSequence(self.prepare_steps)
- self._main_sequence = StepSequence(self.main_steps)
- options = sorted(set(self._prepare_sequence.options() + self._main_sequence.options()))
- AbstractPatchProcessingCommand.__init__(self, options)
-
- def _prepare_to_process(self, options, args, tool):
- try:
- self.state = self._prepare_state(options, args, tool)
- except ScriptError, e:
- _log.error(e.message_with_output())
- self._exit(e.exit_code or 2)
- self._prepare_sequence.run_and_handle_errors(tool, options, self.state)
-
- def _process_patch(self, patch, options, args, tool):
- state = {}
- state.update(self.state or {})
- state["patch"] = patch
- self._main_sequence.run_and_handle_errors(tool, options, state)
-
- def _prepare_state(self, options, args, tool):
- return None
-
-
-class ProcessAttachmentsMixin(object):
- def _fetch_list_of_patches_to_process(self, options, args, tool):
- return map(lambda patch_id: tool.bugs.fetch_attachment(patch_id), args)
-
-
-class ProcessBugsMixin(object):
- def _fetch_list_of_patches_to_process(self, options, args, tool):
- all_patches = []
- for bug_id in args:
- patches = tool.bugs.fetch_bug(bug_id).reviewed_patches()
- _log.info("%s found on bug %s." % (pluralize("reviewed patch", len(patches)), bug_id))
- all_patches += patches
- if not all_patches:
- _log.info("No reviewed patches found, looking for unreviewed patches.")
- for bug_id in args:
- patches = tool.bugs.fetch_bug(bug_id).patches()
- _log.info("%s found on bug %s." % (pluralize("patch", len(patches)), bug_id))
- all_patches += patches
- return all_patches
-
-
-class ProcessURLsMixin(object):
- def _fetch_list_of_patches_to_process(self, options, args, tool):
- all_patches = []
- for url in args:
- bug_id = urls.parse_bug_id(url)
- if bug_id:
- patches = tool.bugs.fetch_bug(bug_id).patches()
- _log.info("%s found on bug %s." % (pluralize("patch", len(patches)), bug_id))
- all_patches += patches
-
- attachment_id = urls.parse_attachment_id(url)
- if attachment_id:
- all_patches += tool.bugs.fetch_attachment(attachment_id)
-
- return all_patches
-
-
-class CheckStyle(AbstractPatchSequencingCommand, ProcessAttachmentsMixin):
- name = "check-style"
- help_text = "Run check-webkit-style on the specified attachments"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- main_steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.ApplyPatch,
- steps.CheckStyle,
- ]
-
-
-class BuildAttachment(AbstractPatchSequencingCommand, ProcessAttachmentsMixin):
- name = "build-attachment"
- help_text = "Apply and build patches from bugzilla"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- main_steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.ApplyPatch,
- steps.Build,
- ]
-
-
-class BuildAndTestAttachment(AbstractPatchSequencingCommand, ProcessAttachmentsMixin):
- name = "build-and-test-attachment"
- help_text = "Apply, build, and test patches from bugzilla"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- main_steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.ApplyPatch,
- steps.Build,
- steps.RunTests,
- ]
-
-
-class AbstractPatchApplyingCommand(AbstractPatchSequencingCommand):
- prepare_steps = [
- steps.EnsureLocalCommitIfNeeded,
- steps.CleanWorkingDirectory,
- steps.Update,
- ]
- main_steps = [
- steps.ApplyPatchWithLocalCommit,
- ]
- long_help = """Updates the working copy.
-Downloads and applies the patches, creating local commits if necessary."""
-
-
-class ApplyAttachment(AbstractPatchApplyingCommand, ProcessAttachmentsMixin):
- name = "apply-attachment"
- help_text = "Apply an attachment to the local working directory"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- show_in_main_help = True
-
-
-class ApplyFromBug(AbstractPatchApplyingCommand, ProcessBugsMixin):
- name = "apply-from-bug"
- help_text = "Apply reviewed patches from provided bugs to the local working directory"
- argument_names = "BUGID [BUGIDS]"
- show_in_main_help = True
-
-
-class ApplyWatchList(AbstractPatchSequencingCommand, ProcessAttachmentsMixin):
- name = "apply-watchlist"
- help_text = "Applies the watchlist to the specified attachments"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- main_steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.ApplyPatch,
- steps.ApplyWatchList,
- ]
- long_help = """"Applies the watchlist to the specified attachments.
-Downloads the attachment, applies it locally, runs the watchlist against it, and updates the bug with the result."""
-
-
-class AbstractPatchLandingCommand(AbstractPatchSequencingCommand):
- main_steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.ApplyPatch,
- steps.ValidateChangeLogs,
- steps.ValidateReviewer,
- steps.Build,
- steps.RunTests,
- steps.Commit,
- steps.ClosePatch,
- steps.CloseBug,
- ]
- long_help = """Checks to make sure builders are green.
-Updates the working copy.
-Applies the patch.
-Builds.
-Runs the layout tests.
-Commits the patch.
-Clears the flags on the patch.
-Closes the bug if no patches are marked for review."""
-
-
-class LandAttachment(AbstractPatchLandingCommand, ProcessAttachmentsMixin):
- name = "land-attachment"
- help_text = "Land patches from bugzilla, optionally building and testing them first"
- argument_names = "ATTACHMENT_ID [ATTACHMENT_IDS]"
- show_in_main_help = True
-
-
-class LandFromBug(AbstractPatchLandingCommand, ProcessBugsMixin):
- name = "land-from-bug"
- help_text = "Land all patches on the given bugs, optionally building and testing them first"
- argument_names = "BUGID [BUGIDS]"
- show_in_main_help = True
-
-
-class LandFromURL(AbstractPatchLandingCommand, ProcessURLsMixin):
- name = "land-from-url"
- help_text = "Land all patches on the given URLs, optionally building and testing them first"
- argument_names = "URL [URLS]"
-
-
-class ValidateChangelog(AbstractSequencedCommand):
- name = "validate-changelog"
- help_text = "Validate that the ChangeLogs and reviewers look reasonable"
- long_help = """Examines the current diff to see whether the ChangeLogs
-and the reviewers listed in the ChangeLogs look reasonable.
-"""
- steps = [
- steps.ValidateChangeLogs,
- steps.ValidateReviewer,
- ]
-
-
-class AbstractRolloutPrepCommand(AbstractSequencedCommand):
- argument_names = "REVISION [REVISIONS] REASON"
-
- def _commit_info(self, revision):
- commit_info = self._tool.checkout().commit_info_for_revision(revision)
- if commit_info and commit_info.bug_id():
- # Note: Don't print a bug URL here because it will confuse the
- # SheriffBot because the SheriffBot just greps the output
- # of create-rollout for bug URLs. It should do better
- # parsing instead.
- _log.info("Preparing rollout for bug %s." % commit_info.bug_id())
- else:
- _log.info("Unable to parse bug number from diff.")
- return commit_info
-
- def _prepare_state(self, options, args, tool):
- revision_list = []
- for revision in str(args[0]).split():
- if revision.isdigit():
- revision_list.append(int(revision))
- else:
- raise ScriptError(message="Invalid svn revision number: " + revision)
- revision_list.sort()
-
- # We use the earliest revision for the bug info
- earliest_revision = revision_list[0]
- state = {
- "revision": earliest_revision,
- "revision_list": revision_list,
- "reason": args[1],
- }
- commit_info = self._commit_info(earliest_revision)
- if commit_info:
- state["bug_id"] = commit_info.bug_id()
- cc_list = sorted([party.bugzilla_email()
- for party in commit_info.responsible_parties()
- if party.bugzilla_email()])
- # FIXME: We should used the list as the canonical representation.
- state["bug_cc"] = ",".join(cc_list)
- return state
-
-
-class PrepareRollout(AbstractRolloutPrepCommand):
- name = "prepare-rollout"
- help_text = "Revert the given revision(s) in the working copy and prepare ChangeLogs with revert reason"
- long_help = """Updates the working copy.
-Applies the inverse diff for the provided revision(s).
-Creates an appropriate rollout ChangeLog, including a trac link and bug link.
-"""
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.RevertRevision,
- steps.PrepareChangeLogForRevert,
- ]
-
-
-class CreateRollout(AbstractRolloutPrepCommand):
- name = "create-rollout"
- help_text = "Creates a bug to track the broken SVN revision(s) and uploads a rollout patch."
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.RevertRevision,
- steps.CreateBug,
- steps.PrepareChangeLogForRevert,
- steps.PostDiffForRevert,
- ]
-
- def _prepare_state(self, options, args, tool):
- state = AbstractRolloutPrepCommand._prepare_state(self, options, args, tool)
- # Currently, state["bug_id"] points to the bug that caused the
- # regression. We want to create a new bug that blocks the old bug
- # so we move state["bug_id"] to state["bug_blocked"] and delete the
- # old state["bug_id"] so that steps.CreateBug will actually create
- # the new bug that we want (and subsequently store its bug id into
- # state["bug_id"])
- state["bug_blocked"] = state["bug_id"]
- del state["bug_id"]
- state["bug_title"] = "REGRESSION(r%s): %s" % (state["revision"], state["reason"])
- state["bug_description"] = "%s broke the build:\n%s" % (urls.view_revision_url(state["revision"]), state["reason"])
- # FIXME: If we had more context here, we could link to other open bugs
- # that mention the test that regressed.
- if options.parent_command == "sheriff-bot":
- state["bug_description"] += """
-
-This is an automatic bug report generated by the sheriff-bot. If this bug
-report was created because of a flaky test, please file a bug for the flaky
-test (if we don't already have one on file) and dup this bug against that bug
-so that we can track how often these flaky tests case pain.
-
-"Only you can prevent forest fires." -- Smokey the Bear
-"""
- return state
-
-
-class Rollout(AbstractRolloutPrepCommand):
- name = "rollout"
- show_in_main_help = True
- help_text = "Revert the given revision(s) in the working copy and optionally commit the revert and re-open the original bug"
- long_help = """Updates the working copy.
-Applies the inverse diff for the provided revision.
-Creates an appropriate rollout ChangeLog, including a trac link and bug link.
-Opens the generated ChangeLogs in $EDITOR.
-Shows the prepared diff for confirmation.
-Commits the revert and updates the bug (including re-opening the bug if necessary)."""
- steps = [
- steps.DiscardLocalChanges,
- steps.Update,
- steps.RevertRevision,
- steps.PrepareChangeLogForRevert,
- steps.EditChangeLog,
- steps.ConfirmDiff,
- steps.Build,
- steps.Commit,
- steps.ReopenBugAfterRollout,
- ]
diff --git a/Tools/Scripts/webkitpy/tool/commands/download_unittest.py b/Tools/Scripts/webkitpy/tool/commands/download_unittest.py
deleted file mode 100644
index d35706f7e..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/download_unittest.py
+++ /dev/null
@@ -1,357 +0,0 @@
-# Copyright (C) 2009, 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.download import *
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.common.checkout.checkout_mock import MockCheckout
-
-
-class AbstractRolloutPrepCommandTest(unittest.TestCase):
- def test_commit_info(self):
- command = AbstractRolloutPrepCommand()
- tool = MockTool()
- command.bind_to_tool(tool)
- output = OutputCapture()
-
- expected_logs = "Preparing rollout for bug 50000.\n"
- commit_info = output.assert_outputs(self, command._commit_info, [1234], expected_logs=expected_logs)
- self.assertTrue(commit_info)
-
- mock_commit_info = Mock()
- mock_commit_info.bug_id = lambda: None
- tool._checkout.commit_info_for_revision = lambda revision: mock_commit_info
- expected_logs = "Unable to parse bug number from diff.\n"
- commit_info = output.assert_outputs(self, command._commit_info, [1234], expected_logs=expected_logs)
- self.assertEqual(commit_info, mock_commit_info)
-
- def test_prepare_state(self):
- command = AbstractRolloutPrepCommand()
- mock_commit_info = MockCheckout().commit_info_for_revision(123)
- command._commit_info = lambda revision: mock_commit_info
-
- state = command._prepare_state(None, ["124 123 125", "Reason"], None)
- self.assertEqual(123, state["revision"])
- self.assertEqual([123, 124, 125], state["revision_list"])
-
- self.assertRaises(ScriptError, command._prepare_state, options=None, args=["125 r122 123", "Reason"], tool=None)
- self.assertRaises(ScriptError, command._prepare_state, options=None, args=["125 foo 123", "Reason"], tool=None)
-
- command._commit_info = lambda revision: None
- state = command._prepare_state(None, ["124 123 125", "Reason"], None)
- self.assertEqual(123, state["revision"])
- self.assertEqual([123, 124, 125], state["revision_list"])
-
-
-class DownloadCommandsTest(CommandsTest):
- def _default_options(self):
- options = MockOptions()
- options.build = True
- options.build_style = True
- options.check_style = True
- options.check_style_filter = None
- options.clean = True
- options.close_bug = True
- options.force_clean = False
- options.non_interactive = False
- options.parent_command = 'MOCK parent command'
- options.quiet = False
- options.test = True
- options.update = True
- return options
-
- def test_build(self):
- expected_logs = "Updating working directory\nBuilding WebKit\n"
- self.assert_execute_outputs(Build(), [], options=self._default_options(), expected_logs=expected_logs)
-
- def test_build_and_test(self):
- expected_logs = """Updating working directory
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-"""
- self.assert_execute_outputs(BuildAndTest(), [], options=self._default_options(), expected_logs=expected_logs)
-
- def test_apply_attachment(self):
- options = self._default_options()
- options.update = True
- options.local_commit = True
- expected_logs = "Updating working directory\nProcessing 1 patch from 1 bug.\nProcessing patch 10000 from bug 50000.\n"
- self.assert_execute_outputs(ApplyAttachment(), [10000], options=options, expected_logs=expected_logs)
-
- def test_apply_from_bug(self):
- options = self._default_options()
- options.update = True
- options.local_commit = True
-
- expected_logs = "Updating working directory\n0 reviewed patches found on bug 50001.\nNo reviewed patches found, looking for unreviewed patches.\n1 patch found on bug 50001.\nProcessing 1 patch from 1 bug.\nProcessing patch 10002 from bug 50001.\n"
- self.assert_execute_outputs(ApplyFromBug(), [50001], options=options, expected_logs=expected_logs)
-
- expected_logs = "Updating working directory\n2 reviewed patches found on bug 50000.\nProcessing 2 patches from 1 bug.\nProcessing patch 10000 from bug 50000.\nProcessing patch 10001 from bug 50000.\n"
- self.assert_execute_outputs(ApplyFromBug(), [50000], options=options, expected_logs=expected_logs)
-
- def test_apply_watch_list(self):
- expected_logs = """Processing 1 patch from 1 bug.
-Updating working directory
-MOCK run_and_throw_if_fail: ['mock-update-webkit'], cwd=/mock-checkout
-Processing patch 10000 from bug 50000.
-MockWatchList: determine_cc_and_messages
-No bug was updated because no id was given.
-Result of watchlist: cc "abarth@webkit.org, eric@webkit.org, levin@chromium.org" messages "Message1.
-
-Message2."
-"""
- self.assert_execute_outputs(ApplyWatchList(), [10000], options=self._default_options(), expected_logs=expected_logs, tool=MockTool(log_executive=True))
-
- def test_land(self):
- expected_logs = """Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Updating bug 50000
-"""
- mock_tool = MockTool()
- mock_tool.scm().create_patch = Mock(return_value="Patch1\nMockPatch\n")
- mock_tool.checkout().modified_changelogs = Mock(return_value=[])
- self.assert_execute_outputs(Land(), [50000], options=self._default_options(), expected_logs=expected_logs, tool=mock_tool)
- # Make sure we're not calling expensive calls too often.
- self.assertEqual(mock_tool.scm().create_patch.call_count, 0)
- self.assertEqual(mock_tool.checkout().modified_changelogs.call_count, 1)
-
- def test_land_cowhand(self):
- expected_logs = """MOCK run_and_throw_if_fail: ['mock-prepare-ChangeLog', '--email=MOCK email', '--merge-base=None', 'MockFile1'], cwd=/mock-checkout
-MOCK run_and_throw_if_fail: ['mock-check-webkit-style', '--git-commit', 'MOCK git commit', '--diff-files', 'MockFile1', '--filter', '-changelog'], cwd=/mock-checkout
-MOCK run_command: ['ruby', '-I', '/mock-checkout/Websites/bugs.webkit.org/PrettyPatch', '/mock-checkout/Websites/bugs.webkit.org/PrettyPatch/prettify.rb'], cwd=None, input=Patch1
-MOCK: user.open_url: file://...
-Was that diff correct?
-Building WebKit
-MOCK run_and_throw_if_fail: ['mock-build-webkit'], cwd=/mock-checkout, env={'LC_ALL': 'C', 'MOCK_ENVIRON_COPY': '1'}
-Running Python unit tests
-MOCK run_and_throw_if_fail: ['mock-test-webkitpy'], cwd=/mock-checkout
-Running Perl unit tests
-MOCK run_and_throw_if_fail: ['mock-test-webkitperl'], cwd=/mock-checkout
-Running JavaScriptCore tests
-MOCK run_and_throw_if_fail: ['mock-run-javacriptcore-tests'], cwd=/mock-checkout
-Running bindings generation tests
-MOCK run_and_throw_if_fail: ['mock-run-bindings-tests'], cwd=/mock-checkout
-Running WebKit unit tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-unit-tests'], cwd=/mock-checkout
-Running run-webkit-tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-tests', '--quiet'], cwd=/mock-checkout
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-No bug id provided.
-"""
- mock_tool = MockTool(log_executive=True)
- self.assert_execute_outputs(LandCowhand(), [50000], options=self._default_options(), expected_logs=expected_logs, tool=mock_tool)
-
- expected_logs = "land-cowboy is deprecated, use land-cowhand instead.\n" + expected_logs
- self.assert_execute_outputs(LandCowboy(), [50000], options=self._default_options(), expected_logs=expected_logs, tool=mock_tool)
-
- def test_land_red_builders(self):
- expected_logs = """Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Updating bug 50000
-"""
- mock_tool = MockTool()
- mock_tool.buildbot.light_tree_on_fire()
- self.assert_execute_outputs(Land(), [50000], options=self._default_options(), expected_logs=expected_logs, tool=mock_tool)
-
- def test_check_style(self):
- expected_logs = """Processing 1 patch from 1 bug.
-Updating working directory
-MOCK run_and_throw_if_fail: ['mock-update-webkit'], cwd=/mock-checkout
-Processing patch 10000 from bug 50000.
-MOCK run_and_throw_if_fail: ['mock-check-webkit-style', '--git-commit', 'MOCK git commit', '--diff-files', 'MockFile1'], cwd=/mock-checkout
-"""
- self.assert_execute_outputs(CheckStyle(), [10000], options=self._default_options(), expected_logs=expected_logs, tool=MockTool(log_executive=True))
-
- def test_build_attachment(self):
- expected_logs = "Processing 1 patch from 1 bug.\nUpdating working directory\nProcessing patch 10000 from bug 50000.\nBuilding WebKit\n"
- self.assert_execute_outputs(BuildAttachment(), [10000], options=self._default_options(), expected_logs=expected_logs)
-
- def test_land_attachment(self):
- # FIXME: This expected result is imperfect, notice how it's seeing the same patch as still there after it thought it would have cleared the flags.
- expected_logs = """Processing 1 patch from 1 bug.
-Updating working directory
-Processing patch 10000 from bug 50000.
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Not closing bug 50000 as attachment 10000 has review=+. Assuming there are more patches to land from this bug.
-"""
- self.assert_execute_outputs(LandAttachment(), [10000], options=self._default_options(), expected_logs=expected_logs)
-
- def test_land_from_bug(self):
- # FIXME: This expected result is imperfect, notice how it's seeing the same patch as still there after it thought it would have cleared the flags.
- expected_logs = """2 reviewed patches found on bug 50000.
-Processing 2 patches from 1 bug.
-Updating working directory
-Processing patch 10000 from bug 50000.
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Not closing bug 50000 as attachment 10000 has review=+. Assuming there are more patches to land from this bug.
-Updating working directory
-Processing patch 10001 from bug 50000.
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Not closing bug 50000 as attachment 10000 has review=+. Assuming there are more patches to land from this bug.
-"""
- self.assert_execute_outputs(LandFromBug(), [50000], options=self._default_options(), expected_logs=expected_logs)
-
- def test_land_from_url(self):
- # FIXME: This expected result is imperfect, notice how it's seeing the same patch as still there after it thought it would have cleared the flags.
- expected_logs = """2 patches found on bug 50000.
-Processing 2 patches from 1 bug.
-Updating working directory
-Processing patch 10000 from bug 50000.
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Not closing bug 50000 as attachment 10000 has review=+. Assuming there are more patches to land from this bug.
-Updating working directory
-Processing patch 10001 from bug 50000.
-Building WebKit
-Running Python unit tests
-Running Perl unit tests
-Running JavaScriptCore tests
-Running bindings generation tests
-Running WebKit unit tests
-Running run-webkit-tests
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-Not closing bug 50000 as attachment 10000 has review=+. Assuming there are more patches to land from this bug.
-"""
- self.assert_execute_outputs(LandFromURL(), ["https://bugs.webkit.org/show_bug.cgi?id=50000"], options=self._default_options(), expected_logs=expected_logs)
-
- def test_prepare_rollout(self):
- expected_logs = "Preparing rollout for bug 50000.\nUpdating working directory\n"
- self.assert_execute_outputs(PrepareRollout(), [852, "Reason"], options=self._default_options(), expected_logs=expected_logs)
-
- def test_create_rollout(self):
- expected_logs = """Preparing rollout for bug 50000.
-Updating working directory
-MOCK create_bug
-bug_title: REGRESSION(r852): Reason
-bug_description: http://trac.webkit.org/changeset/852 broke the build:
-Reason
-component: MOCK component
-cc: MOCK cc
-blocked: 50000
-MOCK add_patch_to_bug: bug_id=60001, description=ROLLOUT of r852, mark_for_review=False, mark_for_commit_queue=True, mark_for_landing=False
--- Begin comment --
-Any committer can land this patch automatically by marking it commit-queue+. The commit-queue will build and test the patch before landing to ensure that the rollout will be successful. This process takes approximately 15 minutes.
-
-If you would like to land the rollout faster, you can use the following command:
-
- webkit-patch land-attachment ATTACHMENT_ID
-
-where ATTACHMENT_ID is the ID of this attachment.
--- End comment --
-"""
- self.assert_execute_outputs(CreateRollout(), [852, "Reason"], options=self._default_options(), expected_logs=expected_logs)
- self.assert_execute_outputs(CreateRollout(), ["855 852 854", "Reason"], options=self._default_options(), expected_logs=expected_logs)
-
- def test_create_rollout_resolved(self):
- expected_logs = """Preparing rollout for bug 50004.
-Updating working directory
-MOCK create_bug
-bug_title: REGRESSION(r3001): Reason
-bug_description: http://trac.webkit.org/changeset/3001 broke the build:
-Reason
-component: MOCK component
-cc: MOCK cc
-blocked: 50004
-MOCK reopen_bug 50004 with comment 'Re-opened since this is blocked by bug 60001'
-MOCK add_patch_to_bug: bug_id=60001, description=ROLLOUT of r3001, mark_for_review=False, mark_for_commit_queue=True, mark_for_landing=False
--- Begin comment --
-Any committer can land this patch automatically by marking it commit-queue+. The commit-queue will build and test the patch before landing to ensure that the rollout will be successful. This process takes approximately 15 minutes.
-
-If you would like to land the rollout faster, you can use the following command:
-
- webkit-patch land-attachment ATTACHMENT_ID
-
-where ATTACHMENT_ID is the ID of this attachment.
--- End comment --
-"""
- self.assert_execute_outputs(CreateRollout(), [3001, "Reason"], options=self._default_options(), expected_logs=expected_logs)
-
- def test_rollout(self):
- expected_logs = """Preparing rollout for bug 50000.
-Updating working directory
-MOCK: user.open_url: file://...
-Was that diff correct?
-Building WebKit
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-MOCK reopen_bug 50000 with comment 'Reverted r852 for reason:
-
-Reason
-
-Committed r49824: <http://trac.webkit.org/changeset/49824>'
-"""
- self.assert_execute_outputs(Rollout(), [852, "Reason"], options=self._default_options(), expected_logs=expected_logs)
-
diff --git a/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py b/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py
deleted file mode 100644
index b5e285c64..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem.py
+++ /dev/null
@@ -1,157 +0,0 @@
-# Copyright (c) 2009 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.
-
-import json
-import logging
-from optparse import make_option
-
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.config.ports import DeprecatedPort
-from webkitpy.common.system.filesystem import FileSystem
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.bot.earlywarningsystemtask import EarlyWarningSystemTask, EarlyWarningSystemTaskDelegate
-from webkitpy.tool.bot.expectedfailures import ExpectedFailures
-from webkitpy.tool.bot.layouttestresultsreader import LayoutTestResultsReader
-from webkitpy.tool.bot.patchanalysistask import UnableToApplyPatch
-from webkitpy.tool.bot.queueengine import QueueEngine
-from webkitpy.tool.commands.queues import AbstractReviewQueue
-
-_log = logging.getLogger(__name__)
-
-
-class AbstractEarlyWarningSystem(AbstractReviewQueue, EarlyWarningSystemTaskDelegate):
- _build_style = "release"
- # FIXME: Switch _default_run_tests from opt-in to opt-out once more bots are ready to run tests.
- run_tests = False
-
- def __init__(self):
- options = [make_option("--run-tests", action="store_true", dest="run_tests", default=self.run_tests, help="Run the Layout tests for each patch")]
- AbstractReviewQueue.__init__(self, options=options)
-
- def begin_work_queue(self):
- AbstractReviewQueue.begin_work_queue(self)
- self._expected_failures = ExpectedFailures()
- self._layout_test_results_reader = LayoutTestResultsReader(self._tool, self._port.results_directory(), self._log_directory())
-
- def _failing_tests_message(self, task, patch):
- results = task.results_from_patch_test_run(patch)
- unexpected_failures = self._expected_failures.unexpected_failures_observed(results)
- if not unexpected_failures:
- return None
- return "New failing tests:\n%s" % "\n".join(unexpected_failures)
-
- def _post_reject_message_on_bug(self, tool, patch, status_id, extra_message_text=None):
- results_link = tool.status_server.results_url_for_status(status_id)
- message = "Attachment %s did not pass %s (%s):\nOutput: %s" % (patch.id(), self.name, self.port_name, results_link)
- if extra_message_text:
- message += "\n\n%s" % extra_message_text
- # FIXME: We might want to add some text about rejecting from the commit-queue in
- # the case where patch.commit_queue() isn't already set to '-'.
- if self.watchers:
- tool.bugs.add_cc_to_bug(patch.bug_id(), self.watchers)
- tool.bugs.set_flag_on_attachment(patch.id(), "commit-queue", "-", message)
-
- def review_patch(self, patch):
- task = EarlyWarningSystemTask(self, patch, self._options.run_tests)
- if not task.validate():
- self._did_error(patch, "%s did not process patch." % self.name)
- return False
- try:
- return task.run()
- except UnableToApplyPatch, e:
- self._did_error(patch, "%s unable to apply patch." % self.name)
- return False
- except ScriptError, e:
- self._post_reject_message_on_bug(self._tool, patch, task.failure_status_id, self._failing_tests_message(task, patch))
- results_archive = task.results_archive_from_patch_test_run(patch)
- if results_archive:
- self._upload_results_archive_for_patch(patch, results_archive)
- self._did_fail(patch)
- # FIXME: We're supposed to be able to raise e again here and have
- # one of our base classes mark the patch as fail, but there seems
- # to be an issue with the exit_code.
- return False
-
- # EarlyWarningSystemDelegate methods
-
- def parent_command(self):
- return self.name
-
- def run_command(self, command):
- self.run_webkit_patch(command + [self._deprecated_port.flag()])
-
- def command_passed(self, message, patch):
- pass
-
- def command_failed(self, message, script_error, patch):
- failure_log = self._log_from_script_error_for_upload(script_error)
- return self._update_status(message, patch=patch, results_file=failure_log)
-
- def expected_failures(self):
- return self._expected_failures
-
- def test_results(self):
- return self._layout_test_results_reader.results()
-
- def archive_last_test_results(self, patch):
- return self._layout_test_results_reader.archive(patch)
-
- def build_style(self):
- return self._build_style
-
- def refetch_patch(self, patch):
- return self._tool.bugs.fetch_attachment(patch.id())
-
- def report_flaky_tests(self, patch, flaky_test_results, results_archive):
- pass
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- # FIXME: Why does this not exit(1) like the superclass does?
- _log.error(script_error.message_with_output())
-
- @classmethod
- def load_ews_classes(cls):
- filesystem = FileSystem()
- json_path = filesystem.join(filesystem.dirname(filesystem.path_to_module('webkitpy.common.config')), 'ews.json')
- try:
- ewses = json.loads(filesystem.read_text_file(json_path))
- except ValueError:
- return None
-
- classes = []
- for name, config in ewses.iteritems():
- classes.append(type(str(name.replace(' ', '')), (AbstractEarlyWarningSystem,), {
- 'name': config['port'] + '-ews',
- 'port_name': config['port'],
- 'watchers': config.get('watchers', []),
- 'run_tests': config.get('runTests', cls.run_tests),
- }))
- return classes
diff --git a/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py b/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py
deleted file mode 100644
index 78dae3ba9..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/earlywarningsystem_unittest.py
+++ /dev/null
@@ -1,91 +0,0 @@
-# Copyright (C) 2009 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.
-
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.bot.queueengine import QueueEngine
-from webkitpy.tool.commands.earlywarningsystem import *
-from webkitpy.tool.commands.queuestest import QueuesTest
-from webkitpy.tool.mocktool import MockTool, MockOptions
-
-
-class AbstractEarlyWarningSystemTest(QueuesTest):
- def test_failing_tests_message(self):
- # Needed to define port_name, used in AbstractEarlyWarningSystem.__init__
- class TestEWS(AbstractEarlyWarningSystem):
- port_name = "win" # Needs to be a port which port/factory understands.
-
- ews = TestEWS()
- ews.bind_to_tool(MockTool())
- ews._options = MockOptions(port=None, confirm=False)
- OutputCapture().assert_outputs(self, ews.begin_work_queue, expected_logs=self._default_begin_work_queue_logs(ews.name))
- ews._expected_failures.unexpected_failures_observed = lambda results: set(["foo.html", "bar.html"])
- task = Mock()
- patch = ews._tool.bugs.fetch_attachment(10000)
- self.assertMultiLineEqual(ews._failing_tests_message(task, patch), "New failing tests:\nbar.html\nfoo.html")
-
-
-class EarlyWarningSystemTest(QueuesTest):
- def _default_expected_logs(self, ews):
- string_replacements = {
- "name": ews.name,
- "port": ews.port_name,
- }
- if ews.run_tests:
- run_tests_line = "Running: webkit-patch --status-host=example.com build-and-test --no-clean --no-update --test --non-interactive --port=%(port)s\n" % string_replacements
- else:
- run_tests_line = ""
- string_replacements['run_tests_line'] = run_tests_line
-
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs(ews.name),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean --port=%(port)s
-Running: webkit-patch --status-host=example.com update --port=%(port)s
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000 --port=%(port)s
-Running: webkit-patch --status-host=example.com build --no-clean --no-update --build-style=release --port=%(port)s
-%(run_tests_line)sMOCK: update_status: %(name)s Pass
-MOCK: release_work_item: %(name)s 10000
-""" % string_replacements,
- "handle_unexpected_error": "Mock error message\n",
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- }
- return expected_logs
-
- def _test_ews(self, ews):
- ews.bind_to_tool(MockTool())
- options = Mock()
- options.port = None
- options.run_tests = ews.run_tests
- self.assert_queue_outputs(ews, expected_logs=self._default_expected_logs(ews), options=options)
-
- def test_ewses(self):
- classes = AbstractEarlyWarningSystem.load_ews_classes()
- self.assertTrue(classes)
- self.maxDiff = None
- for ews_class in classes:
- self._test_ews(ews_class())
diff --git a/Tools/Scripts/webkitpy/tool/commands/findusers.py b/Tools/Scripts/webkitpy/tool/commands/findusers.py
deleted file mode 100644
index ae4702373..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/findusers.py
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (c) 2011 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.
-
-from webkitpy.tool.multicommandtool import Command
-
-
-class FindUsers(Command):
- name = "find-users"
- help_text = "Find users matching substring"
-
- def execute(self, options, args, tool):
- search_string = args[0]
- login_userid_pairs = tool.bugs.queries.fetch_login_userid_pairs_matching_substring(search_string)
- for (login, user_id) in login_userid_pairs:
- user = tool.bugs.fetch_user(user_id)
- groups_string = ", ".join(user['groups']) if user['groups'] else "none"
- print "%s <%s> (%s) (%s)" % (user['name'], user['login'], user_id, groups_string)
- else:
- print "No users found matching '%s'" % search_string
diff --git a/Tools/Scripts/webkitpy/tool/commands/gardenomatic.py b/Tools/Scripts/webkitpy/tool/commands/gardenomatic.py
deleted file mode 100644
index e9762858d..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/gardenomatic.py
+++ /dev/null
@@ -1,59 +0,0 @@
-# Copyright (C) 2011 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:
-#
-# 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 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.
-
-from webkitpy.port import builders
-from webkitpy.tool.commands.rebaseline import AbstractRebaseliningCommand
-from webkitpy.tool.servers.gardeningserver import GardeningHTTPServer
-
-
-class GardenOMatic(AbstractRebaseliningCommand):
- name = "garden-o-matic"
- help_text = "Command for gardening the WebKit tree."
-
- def __init__(self):
- super(GardenOMatic, self).__init__(options=(self.platform_options + [
- self.move_overwritten_baselines_option,
- self.results_directory_option,
- self.no_optimize_option,
- ]))
-
- def execute(self, options, args, tool):
- print "This command runs a local HTTP server that changes your working copy"
- print "based on the actions you take in the web-based UI."
-
- args = {}
- if options.platform:
- # FIXME: This assumes that the port implementation (chromium-, gtk-, etc.) is the first part of options.platform.
- args['platform'] = options.platform.split('-')[0]
- builder = builders.builder_name_for_port_name(options.platform)
- if builder:
- args['builder'] = builder
- if options.results_directory:
- args['useLocalResults'] = "true"
-
- httpd = GardeningHTTPServer(httpd_port=8127, config={'tool': tool, 'options': options})
- self._tool.user.open_url(httpd.url(args))
-
- print "Local HTTP server started."
- httpd.serve_forever()
diff --git a/Tools/Scripts/webkitpy/tool/commands/newcommitbot.py b/Tools/Scripts/webkitpy/tool/commands/newcommitbot.py
deleted file mode 100644
index 958576158..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/newcommitbot.py
+++ /dev/null
@@ -1,172 +0,0 @@
-# Copyright (c) 2012 Google Inc. All rights reserved.
-# Copyright (c) 2013 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:
-#
-# * 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.
-
-import logging
-import re
-
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.bot.irc_command import IRCCommand
-from webkitpy.tool.bot.irc_command import Help
-from webkitpy.tool.bot.irc_command import Hi
-from webkitpy.tool.bot.irc_command import PingPong
-from webkitpy.tool.bot.irc_command import Restart
-from webkitpy.tool.bot.irc_command import YouThere
-from webkitpy.tool.bot.ircbot import IRCBot
-from webkitpy.tool.commands.queues import AbstractQueue
-from webkitpy.tool.commands.stepsequence import StepSequenceErrorHandler
-
-_log = logging.getLogger(__name__)
-
-
-class Agent(object):
- def __init__(self, tool, newcommitbot):
- self._tool = tool
- self._newcommitbot = newcommitbot
-
- def name(self):
- return 'WKR'
-
-
-class NewCommitBot(AbstractQueue, StepSequenceErrorHandler):
- name = "WKR"
- watchers = AbstractQueue.watchers + ["rniwa@webkit.org"]
-
- _commands = {
- "hi": Hi,
- "ping": PingPong,
- "restart": Restart,
- "yt?": YouThere,
- }
-
- _maximum_number_of_revisions_to_avoid_spamming_irc = 10
-
- # AbstractQueue methods
-
- def begin_work_queue(self):
- AbstractQueue.begin_work_queue(self)
- self._last_svn_revision = int(self._tool.scm().head_svn_revision())
- self._irc_bot = IRCBot(self.name, self._tool, Agent(self._tool, self), self._commands)
- self._tool.ensure_irc_connected(self._irc_bot.irc_delegate())
-
- def work_item_log_path(self, failure_map):
- return None
-
- def next_work_item(self):
- self._irc_bot.process_pending_messages()
-
- _log.info('Last SVN revision: %d' % self._last_svn_revision)
-
- count = 0
- while count < self._maximum_number_of_revisions_to_avoid_spamming_irc:
- new_revision = self._last_svn_revision + 1
- try:
- commit_log = self._tool.executive.run_command(['svn', 'log', 'https://svn.webkit.org/repository/webkit/trunk', '--non-interactive', '--revision',
- self._tool.scm().strip_r_from_svn_revision(new_revision)])
- except ScriptError:
- break
-
- self._last_svn_revision = new_revision
- if self._is_empty_log(commit_log):
- continue
-
- count += 1
- _log.info('Found revision %d' % new_revision)
- self._tool.irc().post(self._summarize_commit_log(commit_log).encode('utf-8'))
-
- def _is_empty_log(self, commit_log):
- return re.match(r'^\-+$', commit_log)
-
- def process_work_item(self, failure_map):
- return True
-
- _patch_by_regex = re.compile(r'^Patch\s+by\s+(?P<author>.+?)\s+on(\s+\d{4}-\d{2}-\d{2})?\n?', re.MULTILINE | re.IGNORECASE)
- _rollout_regex = re.compile(r'(rolling out|reverting) (?P<revisions>r?\d+((,\s*|,?\s*and\s+)?r?\d+)*)\.?\s*', re.MULTILINE | re.IGNORECASE)
- _requested_by_regex = re.compile(r'^\"?(?P<reason>.+?)\"? \(Requested\s+by\s+(?P<author>.+?)\s+on\s+#webkit\)\.', re.MULTILINE | re.IGNORECASE)
- _bugzilla_url_regex = re.compile(r'http(s?)://bugs\.webkit\.org/show_bug\.cgi\?id=(?P<id>\d+)', re.MULTILINE)
- _trac_url_regex = re.compile(r'http(s?)://trac.webkit.org/changeset/(?P<revision>\d+)', re.MULTILINE)
-
- @classmethod
- def _summarize_commit_log(self, commit_log, committer_list=CommitterList()):
- patch_by = self._patch_by_regex.search(commit_log)
- commit_log = self._patch_by_regex.sub('', commit_log, count=1)
-
- rollout = self._rollout_regex.search(commit_log)
- commit_log = self._rollout_regex.sub('', commit_log, count=1)
-
- requested_by = self._requested_by_regex.search(commit_log)
-
- commit_log = self._bugzilla_url_regex.sub(r'https://webkit.org/b/\g<id>', commit_log)
- commit_log = self._trac_url_regex.sub(r'https://trac.webkit.org/r\g<revision>', commit_log)
-
- for contributor in committer_list.contributors():
- if not contributor.irc_nicknames:
- continue
- name_with_nick = "%s (%s)" % (contributor.full_name, contributor.irc_nicknames[0])
- if contributor.full_name in commit_log:
- commit_log = commit_log.replace(contributor.full_name, name_with_nick)
- for email in contributor.emails:
- commit_log = commit_log.replace(' <' + email + '>', '')
- else:
- for email in contributor.emails:
- commit_log = commit_log.replace(email, name_with_nick)
-
- lines = commit_log.split('\n')[1:-2] # Ignore lines with ----------.
-
- firstline = re.match(r'^(?P<revision>r\d+) \| (?P<email>[^\|]+) \| (?P<timestamp>[^|]+) \| [^\n]+', lines[0])
- assert firstline
- author = firstline.group('email')
- if patch_by:
- author = patch_by.group('author')
-
- linkified_revision = 'https://trac.webkit.org/%s' % firstline.group('revision')
- lines[0] = '%s by %s' % (linkified_revision, author)
-
- if rollout:
- if requested_by:
- author = requested_by.group('author')
- contributor = committer_list.contributor_by_irc_nickname(author)
- if contributor:
- author = "%s (%s)" % (contributor.full_name, contributor.irc_nicknames[0])
- return '%s rolled out %s in %s : %s' % (author, rollout.group('revisions'),
- linkified_revision, requested_by.group('reason'))
- lines[0] = '%s rolled out %s in %s' % (author, rollout.group('revisions'), linkified_revision)
-
- return ' '.join(filter(lambda line: len(line), lines)[0:4])
-
- def handle_unexpected_error(self, failure_map, message):
- _log.error(message)
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- # Ideally we would post some information to IRC about what went wrong
- # here, but we don't have the IRC password in the child process.
- pass
diff --git a/Tools/Scripts/webkitpy/tool/commands/newcommitbot_unittest.py b/Tools/Scripts/webkitpy/tool/commands/newcommitbot_unittest.py
deleted file mode 100644
index 05bf45664..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/newcommitbot_unittest.py
+++ /dev/null
@@ -1,129 +0,0 @@
-# Copyright (C) 2013 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:
-#
-# * 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.commands.newcommitbot import NewCommitBot
-
-
-class NewCommitBotTest(unittest.TestCase):
- def test_summarize_commit_log_basic(self):
- self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
-r143106 | jochen@chromium.org | 2013-02-16 10:27:07 -0800 (Sat, 16 Feb 2013) | 10 lines
-
-[chromium] initialize all variables of TestRunner classes
-https://bugs.webkit.org/show_bug.cgi?id=110013
-
-Reviewed by Adam Barth.
-
-* DumpRenderTree/chromium/TestRunner/src/TestInterfaces.cpp:
-(WebTestRunner::TestInterfaces::TestInterfaces):
-* DumpRenderTree/chromium/TestRunner/src/TestRunner.cpp:
-(WebTestRunner::TestRunner::TestRunner):
-
-------------------------------------------------------------------------"""),
- "https://trac.webkit.org/r143106 by Jochen Eisinger (jochen__) [chromium] initialize all variables of TestRunner classes"
- " https://webkit.org/b/110013 Reviewed by Adam Barth (abarth).")
-
- self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
-r140066 | simon.fraser@apple.com | 2013-01-17 16:10:31 -0800 (Thu, 17 Jan 2013) | 10 lines
-
-Allow PaintInfo to carry all PaintBehavior flags
-https://bugs.webkit.org/show_bug.cgi?id=106980
-
-Reviewed by Beth Dakin.
-
-In r139908 I missed one instance of the PaintInfo constructor that should take PaintBehaviorNormal
-instead of "false".
-
-* rendering/RenderScrollbarPart.cpp:
-(WebCore::RenderScrollbarPart::paintIntoRect):
-------------------------------------------------------------------------"""),
- "https://trac.webkit.org/r140066 by Simon Fraser (smfr)"
- " Allow PaintInfo to carry all PaintBehavior flags https://webkit.org/b/106980 Reviewed by Beth Dakin (dethbakin).")
-
- def test_summarize_commit_log_rollout(self):
- self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
-r143104 | commit-queue@webkit.org | 2013-02-16 09:09:01 -0800 (Sat, 16 Feb 2013) | 27 lines
-
-Unreviewed, rolling out r142734.
-http://trac.webkit.org/changeset/142734
-https://bugs.webkit.org/show_bug.cgi?id=110018
-
-"Triggered crashes on lots of websites" (Requested by ggaren
-on #webkit).
-
-Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2013-02-16
-
-Source/WebCore:
-
-------------------------------------------------------------------------"""),
- "Geoffrey Garen (ggaren) rolled out r142734 in https://trac.webkit.org/r143104 : Triggered crashes on lots of websites")
-
- self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
-r139884 | kov@webkit.org | 2013-01-16 08:26:10 -0800 (Wed, 16 Jan 2013) | 23 lines
-
-[GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying
-https://bugs.webkit.org/show_bug.cgi?id=105552
-
-Reverting 139877. It made a couple of API tests fail.
-
-* platform/graphics/gstreamer/GStreamerVersioning.cpp:
-* platform/graphics/gstreamer/GStreamerVersioning.h:
-* platform/graphics/gstreamer/WebKitWebSourceGStreamer.cpp:
-(StreamingClient):
-(_WebKitWebSrcPrivate):
-
-------------------------------------------------------------------------"""),
- "Gustavo Noronha Silva (kov) rolled out 139877 in https://trac.webkit.org/r139884"
- " [GStreamer][Soup] Let GStreamer provide the buffer data is downloaded to, to avoid copying"
- " https://webkit.org/b/105552 It made a couple of API tests fail.")
-
- self.assertEqual(NewCommitBot._summarize_commit_log("""------------------------------------------------------------------------
-r135487 | commit-queue@webkit.org | 2012-11-22 00:09:25 -0800 (Thu, 22 Nov 2012) | 52 lines
-
-Unreviewed, rolling out r134927 and r134944.
-http://trac.webkit.org/changeset/134927
-http://trac.webkit.org/changeset/134944
-https://bugs.webkit.org/show_bug.cgi?id=103028
-
-Reverting the reverts after merging. (Requested by vsevik on
-#webkit).
-
-Patch by Sheriff Bot <webkit.review.bot@gmail.com> on 2012-11-22
-
-* English.lproj/localizedStrings.js:
-* WebCore.gypi:
-* WebCore.vcproj/WebCore.vcproj:
-* inspector/compile-front-end.py:
-* inspector/front-end/AdvancedSearchController.js:
-* inspector/front-end/CallStackSidebarPane.js:
-
-------------------------------------------------------------------------"""),
- "Vsevolod Vlasov (vsevik) rolled out r134927 and r134944 in https://trac.webkit.org/r135487 :"
- " Reverting the reverts after merging.")
diff --git a/Tools/Scripts/webkitpy/tool/commands/openbugs.py b/Tools/Scripts/webkitpy/tool/commands/openbugs.py
deleted file mode 100644
index b2ed532e6..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/openbugs.py
+++ /dev/null
@@ -1,65 +0,0 @@
-# Copyright (c) 2010 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.
-
-import logging
-import re
-import sys
-
-from webkitpy.tool.multicommandtool import Command
-
-_log = logging.getLogger(__name__)
-
-
-class OpenBugs(Command):
- name = "open-bugs"
- help_text = "Finds all bug numbers passed in arguments (or stdin if no args provided) and opens them in a web browser"
-
- bug_number_regexp = re.compile(r"\b\d{4,6}\b")
-
- def _open_bugs(self, bug_ids):
- for bug_id in bug_ids:
- bug_url = self._tool.bugs.bug_url_for_bug_id(bug_id)
- self._tool.user.open_url(bug_url)
-
- # _find_bugs_in_string mostly exists for easy unit testing.
- def _find_bugs_in_string(self, string):
- return self.bug_number_regexp.findall(string)
-
- def _find_bugs_in_iterable(self, iterable):
- return sum([self._find_bugs_in_string(string) for string in iterable], [])
-
- def execute(self, options, args, tool):
- if args:
- bug_ids = self._find_bugs_in_iterable(args)
- else:
- # This won't open bugs until stdin is closed but could be made to easily. That would just make unit testing slightly harder.
- bug_ids = self._find_bugs_in_iterable(sys.stdin)
-
- _log.info("%s bugs found in input." % len(bug_ids))
-
- self._open_bugs(bug_ids)
diff --git a/Tools/Scripts/webkitpy/tool/commands/openbugs_unittest.py b/Tools/Scripts/webkitpy/tool/commands/openbugs_unittest.py
deleted file mode 100644
index 680e5142e..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/openbugs_unittest.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2009 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.
-
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.openbugs import OpenBugs
-
-class OpenBugsTest(CommandsTest):
-
- find_bugs_in_string_expectations = [
- ["123", []],
- ["1234", ["1234"]],
- ["12345", ["12345"]],
- ["123456", ["123456"]],
- ["1234567", []],
- [" 123456 234567", ["123456", "234567"]],
- ]
-
- def test_find_bugs_in_string(self):
- openbugs = OpenBugs()
- for expectation in self.find_bugs_in_string_expectations:
- self.assertEqual(openbugs._find_bugs_in_string(expectation[0]), expectation[1])
-
- def test_args_parsing(self):
- expected_logs = "2 bugs found in input.\nMOCK: user.open_url: http://example.com/12345\nMOCK: user.open_url: http://example.com/23456\n"
- self.assert_execute_outputs(OpenBugs(), ["12345\n23456"], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/commands/perfalizer.py b/Tools/Scripts/webkitpy/tool/commands/perfalizer.py
deleted file mode 100644
index ed0e01548..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/perfalizer.py
+++ /dev/null
@@ -1,218 +0,0 @@
-# Copyright (c) 2012 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.
-
-import logging
-
-from webkitpy.tool.bot.expectedfailures import ExpectedFailures
-from webkitpy.tool.bot.irc_command import IRCCommand
-from webkitpy.tool.bot.irc_command import Help
-from webkitpy.tool.bot.irc_command import Hi
-from webkitpy.tool.bot.irc_command import Restart
-from webkitpy.tool.bot.ircbot import IRCBot
-from webkitpy.tool.bot.patchanalysistask import PatchAnalysisTask, PatchAnalysisTaskDelegate, UnableToApplyPatch
-from webkitpy.tool.bot.sheriff import Sheriff
-from webkitpy.tool.commands.queues import AbstractQueue
-from webkitpy.tool.commands.stepsequence import StepSequenceErrorHandler
-
-_log = logging.getLogger(__name__)
-
-
-class PerfalizerTask(PatchAnalysisTask):
- def __init__(self, tool, patch, logger):
- PatchAnalysisTask.__init__(self, self, patch)
- self._port = tool.port_factory.get()
- self._tool = tool
- self._logger = logger
-
- def _copy_build_product_without_patch(self):
- filesystem = self._tool.filesystem
- configuration = filesystem.basename(self._port._build_path())
- self._build_directory = filesystem.dirname(self._port._build_path())
- self._build_directory_without_patch = self._build_directory + 'WithoutPatch'
-
- try:
- filesystem.rmtree(self._build_directory_without_patch)
- filesystem.copytree(filesystem.join(self._build_directory, configuration),
- filesystem.join(self._build_directory_without_patch, configuration))
- return True
- except:
- return False
-
- def run(self):
- if not self._patch.committer() and not self._patch.attacher().can_commit:
- self._logger('The patch %d is not authorized by a commmitter' % self._patch.id())
- return False
-
- self._logger('Preparing to run performance tests for the attachment %d...' % self._patch.id())
- if not self._clean() or not self._update():
- return False
-
- head_revision = self._tool.scm().head_svn_revision()
-
- self._logger('Building WebKit at r%s without the patch' % head_revision)
- if not self._build_without_patch():
- return False
-
- if not self._port.check_build(needs_http=False):
- self._logger('Failed to build DumpRenderTree.')
- return False
-
- if not self._copy_build_product_without_patch():
- self._logger('Failed to copy the build product from %s to %s' % (self._build_directory, self._build_directory_without_patch))
- return False
-
- self._logger('Building WebKit at r%s with the patch' % head_revision)
- if not self._apply() or not self._build():
- return False
-
- if not self._port.check_build(needs_http=False):
- self._logger('Failed to build DumpRenderTree.')
- return False
-
- filesystem = self._tool.filesystem
- if filesystem.exists(self._json_path()):
- filesystem.remove(self._json_path())
-
- self._logger("Running performance tests...")
- if self._run_perf_test(self._build_directory_without_patch, 'without %d' % self._patch.id()) < 0:
- self._logger('Failed to run performance tests without the patch.')
- return False
-
- if self._run_perf_test(self._build_directory, 'with %d' % self._patch.id()) < 0:
- self._logger('Failed to run performance tests with the patch.')
- return False
-
- if not filesystem.exists(self._results_page_path()):
- self._logger('Failed to generate the results page.')
- return False
-
- results_page = filesystem.read_text_file(self._results_page_path())
- self._tool.bugs.add_attachment_to_bug(self._patch.bug_id(), results_page,
- description="Performance tests results for %d" % self._patch.id(), mimetype='text/html')
-
- self._logger("Uploaded the results on the bug %d" % self._patch.bug_id())
- return True
-
- def parent_command(self):
- return "perfalizer"
-
- def run_webkit_patch(self, args):
- webkit_patch_args = [self._tool.path()]
- webkit_patch_args.extend(args)
- return self._tool.executive.run_and_throw_if_fail(webkit_patch_args, cwd=self._tool.scm().checkout_root)
-
- def _json_path(self):
- return self._tool.filesystem.join(self._build_directory, 'PerformanceTestResults.json')
-
- def _results_page_path(self):
- return self._tool.filesystem.join(self._build_directory, 'PerformanceTestResults.html')
-
- def _run_perf_test(self, build_path, description):
- filesystem = self._tool.filesystem
- script_path = filesystem.join(filesystem.dirname(self._tool.path()), 'run-perf-tests')
- perf_test_runner_args = [script_path, '--no-build', '--no-show-results', '--build-directory', build_path,
- '--output-json-path', self._json_path(), '--description', description]
- return self._tool.executive.run_and_throw_if_fail(perf_test_runner_args, cwd=self._tool.scm().checkout_root)
-
- def run_command(self, command):
- self.run_webkit_patch(command)
-
- def command_passed(self, message, patch):
- pass
-
- def command_failed(self, message, script_error, patch):
- self._logger(message)
-
- def refetch_patch(self, patch):
- return self._tool.bugs.fetch_attachment(patch.id())
-
- def expected_failures(self):
- return ExpectedFailures()
-
- def build_style(self):
- return "release"
-
-
-class PerfTest(IRCCommand):
- def execute(self, nick, args, tool, sheriff):
- if not args:
- tool.irc().post(nick + ": Please specify an attachment/patch id")
- return
-
- patch_id = args[0]
- patch = tool.bugs.fetch_attachment(patch_id)
- if not patch:
- tool.irc().post(nick + ": Could not fetch the patch")
- return
-
- task = PerfalizerTask(tool, patch, lambda message: tool.irc().post('%s: %s' % (nick, message)))
- task.run()
-
-
-class Perfalizer(AbstractQueue, StepSequenceErrorHandler):
- name = "perfalizer"
- watchers = AbstractQueue.watchers + ["rniwa@webkit.org"]
-
- _commands = {
- "help": Help,
- "hi": Hi,
- "restart": Restart,
- "test": PerfTest,
- }
-
- # AbstractQueue methods
-
- def begin_work_queue(self):
- AbstractQueue.begin_work_queue(self)
- self._sheriff = Sheriff(self._tool, self)
- self._irc_bot = IRCBot("perfalizer", self._tool, self._sheriff, self._commands)
- self._tool.ensure_irc_connected(self._irc_bot.irc_delegate())
-
- def work_item_log_path(self, failure_map):
- return None
-
- def _is_old_failure(self, revision):
- return self._tool.status_server.svn_revision(revision)
-
- def next_work_item(self):
- self._irc_bot.process_pending_messages()
- return
-
- def process_work_item(self, failure_map):
- return True
-
- def handle_unexpected_error(self, failure_map, message):
- _log.error(message)
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- # Ideally we would post some information to IRC about what went wrong
- # here, but we don't have the IRC password in the child process.
- pass
diff --git a/Tools/Scripts/webkitpy/tool/commands/perfalizer_unittest.py b/Tools/Scripts/webkitpy/tool/commands/perfalizer_unittest.py
deleted file mode 100644
index 3efb46129..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/perfalizer_unittest.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.buildbot import Builder
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.port.test import TestPort
-from webkitpy.tool.commands.perfalizer import PerfalizerTask
-from webkitpy.tool.mocktool import MockTool
-
-
-class PerfalizerTaskTest(unittest.TestCase):
- def _create_and_run_perfalizer(self, commands_to_fail=[]):
- tool = MockTool()
- patch = tool.bugs.fetch_attachment(10000)
-
- logs = []
-
- def logger(message):
- logs.append(message)
-
- def run_webkit_patch(args):
- if args[0] in commands_to_fail:
- raise ScriptError
-
- def run_perf_test(build_path, description):
- self.assertTrue(description == 'without 10000' or description == 'with 10000')
- if 'run-perf-tests' in commands_to_fail:
- return -1
- if 'results-page' not in commands_to_fail:
- tool.filesystem.write_text_file(tool.filesystem.join(build_path, 'PerformanceTestResults.html'), 'results page')
- return 0
-
- perfalizer = PerfalizerTask(tool, patch, logger)
- perfalizer._port = TestPort(tool)
- perfalizer.run_webkit_patch = run_webkit_patch
- perfalizer._run_perf_test = run_perf_test
-
- capture = OutputCapture()
- capture.capture_output()
-
- if commands_to_fail:
- self.assertFalse(perfalizer.run())
- else:
- self.assertTrue(perfalizer.run())
-
- capture.restore_output()
-
- return logs
-
- def test_run(self):
- self.assertEqual(self._create_and_run_perfalizer(), [
- 'Preparing to run performance tests for the attachment 10000...',
- 'Building WebKit at r1234 without the patch',
- 'Building WebKit at r1234 with the patch',
- 'Running performance tests...',
- 'Uploaded the results on the bug 50000'])
-
- def test_run_with_clean_fails(self):
- self.assertEqual(self._create_and_run_perfalizer(['clean']), [
- 'Preparing to run performance tests for the attachment 10000...',
- 'Unable to clean working directory'])
-
- def test_run_with_update_fails(self):
- logs = self._create_and_run_perfalizer(['update'])
- self.assertEqual(len(logs), 2)
- self.assertEqual(logs[-1], 'Unable to update working directory')
-
- def test_run_with_build_fails(self):
- logs = self._create_and_run_perfalizer(['build'])
- self.assertEqual(len(logs), 3)
-
- def test_run_with_build_fails(self):
- logs = self._create_and_run_perfalizer(['apply-attachment'])
- self.assertEqual(len(logs), 4)
-
- def test_run_with_perf_test_fails(self):
- logs = self._create_and_run_perfalizer(['run-perf-tests'])
- self.assertEqual(len(logs), 5)
- self.assertEqual(logs[-1], 'Failed to run performance tests without the patch.')
-
- def test_run_without_results_page(self):
- logs = self._create_and_run_perfalizer(['results-page'])
- self.assertEqual(len(logs), 5)
- self.assertEqual(logs[-1], 'Failed to generate the results page.')
diff --git a/Tools/Scripts/webkitpy/tool/commands/prettydiff.py b/Tools/Scripts/webkitpy/tool/commands/prettydiff.py
deleted file mode 100644
index 66a06a69e..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/prettydiff.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (c) 2010 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.
-
-from webkitpy.tool.commands.abstractsequencedcommand import AbstractSequencedCommand
-from webkitpy.tool import steps
-
-
-class PrettyDiff(AbstractSequencedCommand):
- name = "pretty-diff"
- help_text = "Shows the pretty diff in the default browser"
- show_in_main_help = True
- steps = [
- steps.ConfirmDiff,
- ]
diff --git a/Tools/Scripts/webkitpy/tool/commands/queries.py b/Tools/Scripts/webkitpy/tool/commands/queries.py
deleted file mode 100644
index ff1b46ef2..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/queries.py
+++ /dev/null
@@ -1,611 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# Copyright (c) 2009 Apple Inc. All rights reserved.
-# Copyright (c) 2012 Intel Corporation. All rights reserved.
-# Copyright (c) 2013 University of Szeged. 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.
-
-import fnmatch
-import logging
-import re
-
-from datetime import datetime
-from optparse import make_option
-
-from webkitpy.tool import steps
-
-from webkitpy.common.checkout.commitinfo import CommitInfo
-from webkitpy.common.config.committers import CommitterList
-import webkitpy.common.config.urls as config_urls
-from webkitpy.common.net.buildbot import BuildBot
-from webkitpy.common.net.bugzilla import Bugzilla
-from webkitpy.common.net.regressionwindow import RegressionWindow
-from webkitpy.common.system.crashlogs import CrashLogs
-from webkitpy.common.system.user import User
-from webkitpy.tool.commands.abstractsequencedcommand import AbstractSequencedCommand
-from webkitpy.tool.grammar import pluralize
-from webkitpy.tool.multicommandtool import Command
-from webkitpy.layout_tests.models.test_expectations import TestExpectations
-from webkitpy.port import platform_options, configuration_options
-
-_log = logging.getLogger(__name__)
-
-
-class SuggestReviewers(AbstractSequencedCommand):
- name = "suggest-reviewers"
- help_text = "Suggest reviewers for a patch based on recent changes to the modified files."
- steps = [
- steps.SuggestReviewers,
- ]
-
- def _prepare_state(self, options, args, tool):
- options.suggest_reviewers = True
-
-
-class BugsToCommit(Command):
- name = "bugs-to-commit"
- help_text = "List bugs in the commit-queue"
-
- def execute(self, options, args, tool):
- # FIXME: This command is poorly named. It's fetching the commit-queue list here. The name implies it's fetching pending-commit (all r+'d patches).
- bug_ids = tool.bugs.queries.fetch_bug_ids_from_commit_queue()
- for bug_id in bug_ids:
- print "%s" % bug_id
-
-
-class PatchesInCommitQueue(Command):
- name = "patches-in-commit-queue"
- help_text = "List patches in the commit-queue"
-
- def execute(self, options, args, tool):
- patches = tool.bugs.queries.fetch_patches_from_commit_queue()
- _log.info("Patches in commit queue:")
- for patch in patches:
- print patch.url()
-
-
-class PatchesToCommitQueue(Command):
- name = "patches-to-commit-queue"
- help_text = "Patches which should be added to the commit queue"
- def __init__(self):
- options = [
- make_option("--bugs", action="store_true", dest="bugs", help="Output bug links instead of patch links"),
- ]
- Command.__init__(self, options=options)
-
- @staticmethod
- def _needs_commit_queue(patch):
- if patch.commit_queue() == "+": # If it's already cq+, ignore the patch.
- _log.info("%s already has cq=%s" % (patch.id(), patch.commit_queue()))
- return False
-
- # We only need to worry about patches from contributers who are not yet committers.
- committer_record = CommitterList().committer_by_email(patch.attacher_email())
- if committer_record:
- _log.info("%s committer = %s" % (patch.id(), committer_record))
- return not committer_record
-
- def execute(self, options, args, tool):
- patches = tool.bugs.queries.fetch_patches_from_pending_commit_list()
- patches_needing_cq = filter(self._needs_commit_queue, patches)
- if options.bugs:
- bugs_needing_cq = map(lambda patch: patch.bug_id(), patches_needing_cq)
- bugs_needing_cq = sorted(set(bugs_needing_cq))
- for bug_id in bugs_needing_cq:
- print "%s" % tool.bugs.bug_url_for_bug_id(bug_id)
- else:
- for patch in patches_needing_cq:
- print "%s" % tool.bugs.attachment_url_for_id(patch.id(), action="edit")
-
-
-class PatchesToReview(Command):
- name = "patches-to-review"
- help_text = "List bugs which have attachments pending review"
-
- def __init__(self):
- options = [
- make_option("--all", action="store_true",
- help="Show all bugs regardless of who is on CC (it might take a while)"),
- make_option("--include-cq-denied", action="store_true",
- help="By default, r? patches with cq- are omitted unless this option is set"),
- make_option("--cc-email",
- help="Specifies the email on the CC field (defaults to your bugzilla login email)"),
- ]
- Command.__init__(self, options=options)
-
- def _print_report(self, report, cc_email, print_all):
- if print_all:
- print "Bugs with attachments pending review:"
- else:
- print "Bugs with attachments pending review that has %s in the CC list:" % cc_email
-
- print "http://webkit.org/b/bugid Description (age in days)"
- for row in report:
- print "%s (%d)" % (row[1], row[0])
-
- print "Total: %d" % len(report)
-
- def _generate_report(self, bugs, include_cq_denied):
- report = []
-
- for bug in bugs:
- patch = bug.unreviewed_patches()[-1]
-
- if not include_cq_denied and patch.commit_queue() == "-":
- continue
-
- age_in_days = (datetime.today() - patch.attach_date()).days
- report.append((age_in_days, "http://webkit.org/b/%-7s %s" % (bug.id(), bug.title())))
-
- report.sort()
- return report
-
- def execute(self, options, args, tool):
- tool.bugs.authenticate()
-
- cc_email = options.cc_email
- if not cc_email and not options.all:
- cc_email = tool.bugs.username
-
- bugs = tool.bugs.queries.fetch_bugs_from_review_queue(cc_email=cc_email)
- report = self._generate_report(bugs, options.include_cq_denied)
- self._print_report(report, cc_email, options.all)
-
-
-class WhatBroke(Command):
- name = "what-broke"
- help_text = "Print failing buildbots (%s) and what revisions broke them" % config_urls.buildbot_url
-
- def _print_builder_line(self, builder_name, max_name_width, status_message):
- print "%s : %s" % (builder_name.ljust(max_name_width), status_message)
-
- def _print_blame_information_for_builder(self, builder_status, name_width, avoid_flakey_tests=True):
- builder = self._tool.buildbot.builder_with_name(builder_status["name"])
- red_build = builder.build(builder_status["build_number"])
- regression_window = builder.find_regression_window(red_build)
- if not regression_window.failing_build():
- self._print_builder_line(builder.name(), name_width, "FAIL (error loading build information)")
- return
- if not regression_window.build_before_failure():
- self._print_builder_line(builder.name(), name_width, "FAIL (blame-list: sometime before %s?)" % regression_window.failing_build().revision())
- return
-
- revisions = regression_window.revisions()
- first_failure_message = ""
- if (regression_window.failing_build() == builder.build(builder_status["build_number"])):
- first_failure_message = " FIRST FAILURE, possibly a flaky test"
- self._print_builder_line(builder.name(), name_width, "FAIL (blame-list: %s%s)" % (revisions, first_failure_message))
- for revision in revisions:
- commit_info = self._tool.checkout().commit_info_for_revision(revision)
- if commit_info:
- print commit_info.blame_string(self._tool.bugs)
- else:
- print "FAILED to fetch CommitInfo for r%s, likely missing ChangeLog" % revision
-
- def execute(self, options, args, tool):
- builder_statuses = tool.buildbot.builder_statuses()
- longest_builder_name = max(map(len, map(lambda builder: builder["name"], builder_statuses)))
- failing_builders = 0
- for builder_status in builder_statuses:
- # If the builder is green, print OK, exit.
- if builder_status["is_green"]:
- continue
- self._print_blame_information_for_builder(builder_status, name_width=longest_builder_name)
- failing_builders += 1
- if failing_builders:
- print "%s of %s are failing" % (failing_builders, pluralize("builder", len(builder_statuses)))
- else:
- print "All builders are passing!"
-
-
-class ResultsFor(Command):
- name = "results-for"
- help_text = "Print a list of failures for the passed revision from bots on %s" % config_urls.buildbot_url
- argument_names = "REVISION"
-
- def _print_layout_test_results(self, results):
- if not results:
- print " No results."
- return
- for title, files in results.parsed_results().items():
- print " %s" % title
- for filename in files:
- print " %s" % filename
-
- def execute(self, options, args, tool):
- builders = self._tool.buildbot.builders()
- for builder in builders:
- print "%s:" % builder.name()
- build = builder.build_for_revision(args[0], allow_failed_lookups=True)
- self._print_layout_test_results(build.layout_test_results())
-
-
-class FailureReason(Command):
- name = "failure-reason"
- help_text = "Lists revisions where individual test failures started at %s" % config_urls.buildbot_url
-
- def _blame_line_for_revision(self, revision):
- try:
- commit_info = self._tool.checkout().commit_info_for_revision(revision)
- except Exception, e:
- return "FAILED to fetch CommitInfo for r%s, exception: %s" % (revision, e)
- if not commit_info:
- return "FAILED to fetch CommitInfo for r%s, likely missing ChangeLog" % revision
- return commit_info.blame_string(self._tool.bugs)
-
- def _print_blame_information_for_transition(self, regression_window, failing_tests):
- red_build = regression_window.failing_build()
- print "SUCCESS: Build %s (r%s) was the first to show failures: %s" % (red_build._number, red_build.revision(), failing_tests)
- print "Suspect revisions:"
- for revision in regression_window.revisions():
- print self._blame_line_for_revision(revision)
-
- def _explain_failures_for_builder(self, builder, start_revision):
- print "Examining failures for \"%s\", starting at r%s" % (builder.name(), start_revision)
- revision_to_test = start_revision
- build = builder.build_for_revision(revision_to_test, allow_failed_lookups=True)
- layout_test_results = build.layout_test_results()
- if not layout_test_results:
- # FIXME: This could be made more user friendly.
- print "Failed to load layout test results from %s; can't continue. (start revision = r%s)" % (build.results_url(), start_revision)
- return 1
-
- results_to_explain = set(layout_test_results.failing_tests())
- last_build_with_results = build
- print "Starting at %s" % revision_to_test
- while results_to_explain:
- revision_to_test -= 1
- new_build = builder.build_for_revision(revision_to_test, allow_failed_lookups=True)
- if not new_build:
- print "No build for %s" % revision_to_test
- continue
- build = new_build
- latest_results = build.layout_test_results()
- if not latest_results:
- print "No results build %s (r%s)" % (build._number, build.revision())
- continue
- failures = set(latest_results.failing_tests())
- if len(failures) >= 20:
- # FIXME: We may need to move this logic into the LayoutTestResults class.
- # The buildbot stops runs after 20 failures so we don't have full results to work with here.
- print "Too many failures in build %s (r%s), ignoring." % (build._number, build.revision())
- continue
- fixed_results = results_to_explain - failures
- if not fixed_results:
- print "No change in build %s (r%s), %s unexplained failures (%s in this build)" % (build._number, build.revision(), len(results_to_explain), len(failures))
- last_build_with_results = build
- continue
- regression_window = RegressionWindow(build, last_build_with_results)
- self._print_blame_information_for_transition(regression_window, fixed_results)
- last_build_with_results = build
- results_to_explain -= fixed_results
- if results_to_explain:
- print "Failed to explain failures: %s" % results_to_explain
- return 1
- print "Explained all results for %s" % builder.name()
- return 0
-
- def _builder_to_explain(self):
- builder_statuses = self._tool.buildbot.builder_statuses()
- red_statuses = [status for status in builder_statuses if not status["is_green"]]
- print "%s failing" % (pluralize("builder", len(red_statuses)))
- builder_choices = [status["name"] for status in red_statuses]
- # We could offer an "All" choice here.
- chosen_name = self._tool.user.prompt_with_list("Which builder to diagnose:", builder_choices)
- # FIXME: prompt_with_list should really take a set of objects and a set of names and then return the object.
- for status in red_statuses:
- if status["name"] == chosen_name:
- return (self._tool.buildbot.builder_with_name(chosen_name), status["built_revision"])
-
- def execute(self, options, args, tool):
- (builder, latest_revision) = self._builder_to_explain()
- start_revision = self._tool.user.prompt("Revision to walk backwards from? [%s] " % latest_revision) or latest_revision
- if not start_revision:
- print "Revision required."
- return 1
- return self._explain_failures_for_builder(builder, start_revision=int(start_revision))
-
-
-class FindFlakyTests(Command):
- name = "find-flaky-tests"
- help_text = "Lists tests that often fail for a single build at %s" % config_urls.buildbot_url
-
- def _find_failures(self, builder, revision):
- build = builder.build_for_revision(revision, allow_failed_lookups=True)
- if not build:
- print "No build for %s" % revision
- return (None, None)
- results = build.layout_test_results()
- if not results:
- print "No results build %s (r%s)" % (build._number, build.revision())
- return (None, None)
- failures = set(results.failing_tests())
- if len(failures) >= 20:
- # FIXME: We may need to move this logic into the LayoutTestResults class.
- # The buildbot stops runs after 20 failures so we don't have full results to work with here.
- print "Too many failures in build %s (r%s), ignoring." % (build._number, build.revision())
- return (None, None)
- return (build, failures)
-
- def _increment_statistics(self, flaky_tests, flaky_test_statistics):
- for test in flaky_tests:
- count = flaky_test_statistics.get(test, 0)
- flaky_test_statistics[test] = count + 1
-
- def _print_statistics(self, statistics):
- print "=== Results ==="
- print "Occurances Test name"
- for value, key in sorted([(value, key) for key, value in statistics.items()]):
- print "%10d %s" % (value, key)
-
- def _walk_backwards_from(self, builder, start_revision, limit):
- flaky_test_statistics = {}
- all_previous_failures = set([])
- one_time_previous_failures = set([])
- previous_build = None
- for i in range(limit):
- revision = start_revision - i
- print "Analyzing %s ... " % revision,
- (build, failures) = self._find_failures(builder, revision)
- if failures == None:
- # Notice that we don't loop on the empty set!
- continue
- print "has %s failures" % len(failures)
- flaky_tests = one_time_previous_failures - failures
- if flaky_tests:
- print "Flaky tests: %s %s" % (sorted(flaky_tests),
- previous_build.results_url())
- self._increment_statistics(flaky_tests, flaky_test_statistics)
- one_time_previous_failures = failures - all_previous_failures
- all_previous_failures = failures
- previous_build = build
- self._print_statistics(flaky_test_statistics)
-
- def _builder_to_analyze(self):
- statuses = self._tool.buildbot.builder_statuses()
- choices = [status["name"] for status in statuses]
- chosen_name = self._tool.user.prompt_with_list("Which builder to analyze:", choices)
- for status in statuses:
- if status["name"] == chosen_name:
- return (self._tool.buildbot.builder_with_name(chosen_name), status["built_revision"])
-
- def execute(self, options, args, tool):
- (builder, latest_revision) = self._builder_to_analyze()
- limit = self._tool.user.prompt("How many revisions to look through? [10000] ") or 10000
- return self._walk_backwards_from(builder, latest_revision, limit=int(limit))
-
-
-class TreeStatus(Command):
- name = "tree-status"
- help_text = "Print the status of the %s buildbots" % config_urls.buildbot_url
- long_help = """Fetches build status from http://build.webkit.org/one_box_per_builder
-and displayes the status of each builder."""
-
- def execute(self, options, args, tool):
- for builder in tool.buildbot.builder_statuses():
- status_string = "ok" if builder["is_green"] else "FAIL"
- print "%s : %s" % (status_string.ljust(4), builder["name"])
-
-
-class CrashLog(Command):
- name = "crash-log"
- help_text = "Print the newest crash log for the given process"
- long_help = """Finds the newest crash log matching the given process name
-and PID and prints it to stdout."""
- argument_names = "PROCESS_NAME [PID]"
-
- def execute(self, options, args, tool):
- crash_logs = CrashLogs(tool)
- pid = None
- if len(args) > 1:
- pid = int(args[1])
- print crash_logs.find_newest_log(args[0], pid)
-
-
-class PrintExpectations(Command):
- name = 'print-expectations'
- help_text = 'Print the expected result for the given test(s) on the given port(s)'
-
- def __init__(self):
- options = [
- make_option('--all', action='store_true', default=False,
- help='display the expectations for *all* tests'),
- make_option('-x', '--exclude-keyword', action='append', default=[],
- help='limit to tests not matching the given keyword (for example, "skip", "slow", or "crash". May specify multiple times'),
- make_option('-i', '--include-keyword', action='append', default=[],
- help='limit to tests with the given keyword (for example, "skip", "slow", or "crash". May specify multiple times'),
- make_option('--csv', action='store_true', default=False,
- help='Print a CSV-style report that includes the port name, modifiers, tests, and expectations'),
- make_option('-f', '--full', action='store_true', default=False,
- help='Print a full TestExpectations-style line for every match'),
- make_option('--paths', action='store_true', default=False,
- help='display the paths for all applicable expectation files'),
- ] + platform_options(use_globs=True)
-
- Command.__init__(self, options=options)
- self._expectation_models = {}
-
- def execute(self, options, args, tool):
- if not options.paths and not args and not options.all:
- print "You must either specify one or more test paths or --all."
- return
-
- if options.platform:
- port_names = fnmatch.filter(tool.port_factory.all_port_names(), options.platform)
- if not port_names:
- default_port = tool.port_factory.get(options.platform)
- if default_port:
- port_names = [default_port.name()]
- else:
- print "No port names match '%s'" % options.platform
- return
- else:
- default_port = tool.port_factory.get(port_names[0])
- else:
- default_port = tool.port_factory.get(options=options)
- port_names = [default_port.name()]
-
- if options.paths:
- files = default_port.expectations_files()
- layout_tests_dir = default_port.layout_tests_dir()
- for file in files:
- if file.startswith(layout_tests_dir):
- file = file.replace(layout_tests_dir, 'LayoutTests')
- print file
- return
-
- tests = set(default_port.tests(args))
- for port_name in port_names:
- model = self._model(options, port_name, tests)
- tests_to_print = self._filter_tests(options, model, tests)
- lines = [model.get_expectation_line(test) for test in sorted(tests_to_print)]
- if port_name != port_names[0]:
- print
- print '\n'.join(self._format_lines(options, port_name, lines))
-
- def _filter_tests(self, options, model, tests):
- filtered_tests = set()
- if options.include_keyword:
- for keyword in options.include_keyword:
- filtered_tests.update(model.get_test_set_for_keyword(keyword))
- else:
- filtered_tests = tests
-
- for keyword in options.exclude_keyword:
- filtered_tests.difference_update(model.get_test_set_for_keyword(keyword))
- return filtered_tests
-
- def _format_lines(self, options, port_name, lines):
- output = []
- if options.csv:
- for line in lines:
- output.append("%s,%s" % (port_name, line.to_csv()))
- elif lines:
- include_modifiers = options.full
- include_expectations = options.full or len(options.include_keyword) != 1 or len(options.exclude_keyword)
- output.append("// For %s" % port_name)
- for line in lines:
- output.append("%s" % line.to_string(None, include_modifiers, include_expectations, include_comment=False))
- return output
-
- def _model(self, options, port_name, tests):
- port = self._tool.port_factory.get(port_name, options)
- return TestExpectations(port, tests).model()
-
-
-class PrintBaselines(Command):
- name = 'print-baselines'
- help_text = 'Prints the baseline locations for given test(s) on the given port(s)'
-
- def __init__(self):
- options = [
- make_option('--all', action='store_true', default=False,
- help='display the baselines for *all* tests'),
- make_option('--csv', action='store_true', default=False,
- help='Print a CSV-style report that includes the port name, test_name, test platform, baseline type, baseline location, and baseline platform'),
- make_option('--include-virtual-tests', action='store_true',
- help='Include virtual tests'),
- ] + platform_options(use_globs=True)
- Command.__init__(self, options=options)
- self._platform_regexp = re.compile('platform/([^\/]+)/(.+)')
-
- def execute(self, options, args, tool):
- if not args and not options.all:
- print "You must either specify one or more test paths or --all."
- return
-
- default_port = tool.port_factory.get()
- if options.platform:
- port_names = fnmatch.filter(tool.port_factory.all_port_names(), options.platform)
- if not port_names:
- print "No port names match '%s'" % options.platform
- else:
- port_names = [default_port.name()]
-
- if options.include_virtual_tests:
- tests = sorted(default_port.tests(args))
- else:
- # FIXME: make real_tests() a public method.
- tests = sorted(default_port._real_tests(args))
-
- for port_name in port_names:
- if port_name != port_names[0]:
- print
- if not options.csv:
- print "// For %s" % port_name
- port = tool.port_factory.get(port_name)
- for test_name in tests:
- self._print_baselines(options, port_name, test_name, port.expected_baselines_by_extension(test_name))
-
- def _print_baselines(self, options, port_name, test_name, baselines):
- for extension in sorted(baselines.keys()):
- baseline_location = baselines[extension]
- if baseline_location:
- if options.csv:
- print "%s,%s,%s,%s,%s,%s" % (port_name, test_name, self._platform_for_path(test_name),
- extension[1:], baseline_location, self._platform_for_path(baseline_location))
- else:
- print baseline_location
-
- def _platform_for_path(self, relpath):
- platform_matchobj = self._platform_regexp.match(relpath)
- if platform_matchobj:
- return platform_matchobj.group(1)
- return None
-
-
-class FindResolvedBugs(Command):
- name = "find-resolved-bugs"
- help_text = "Collect the RESOLVED bugs in the given TestExpectations file"
- argument_names = "TEST_EXPECTATIONS_FILE"
-
- def execute(self, options, args, tool):
- filename = args[0]
- if not tool.filesystem.isfile(filename):
- print "The given path is not a file, please pass a valid path."
- return
-
- ids = set()
- inputfile = tool.filesystem.open_text_file_for_reading(filename)
- for line in inputfile:
- result = re.search("(https://bugs\.webkit\.org/show_bug\.cgi\?id=|webkit\.org/b/)([0-9]+)", line)
- if result:
- ids.add(result.group(2))
- inputfile.close()
-
- resolved_ids = set()
- num_of_bugs = len(ids)
- bugzilla = Bugzilla()
- for i, bugid in enumerate(ids, start=1):
- bug = bugzilla.fetch_bug(bugid)
- print "Checking bug %s \t [%d/%d]" % (bugid, i, num_of_bugs)
- if not bug.is_open():
- resolved_ids.add(bugid)
-
- print "Resolved bugs in %s :" % (filename)
- for bugid in resolved_ids:
- print "https://bugs.webkit.org/show_bug.cgi?id=%s" % (bugid)
diff --git a/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py b/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py
deleted file mode 100644
index 8800cac3b..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/queries_unittest.py
+++ /dev/null
@@ -1,299 +0,0 @@
-# Copyright (C) 2009 Google Inc. All rights reserved.
-# Copyright (C) 2012 Intel Corporation. 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.net.bugzilla import Bugzilla
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.port.test import TestPort
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.queries import *
-from webkitpy.tool.mocktool import MockTool, MockOptions
-
-
-class MockTestPort1(object):
- def skips_layout_test(self, test_name):
- return test_name in ["media/foo/bar.html", "foo"]
-
-
-class MockTestPort2(object):
- def skips_layout_test(self, test_name):
- return test_name == "media/foo/bar.html"
-
-
-class MockPortFactory(object):
- def __init__(self):
- self._all_ports = {
- "test_port1": MockTestPort1(),
- "test_port2": MockTestPort2(),
- }
-
- def all_port_names(self, options=None):
- return self._all_ports.keys()
-
- def get(self, port_name):
- return self._all_ports.get(port_name)
-
-
-class QueryCommandsTest(CommandsTest):
- def test_bugs_to_commit(self):
- expected_logs = "Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)\n"
- self.assert_execute_outputs(BugsToCommit(), None, "50000\n50003\n", expected_logs=expected_logs)
-
- def test_patches_in_commit_queue(self):
- expected_stdout = "http://example.com/10000\nhttp://example.com/10002\n"
- expected_logs = "Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)\nPatches in commit queue:\n"
- self.assert_execute_outputs(PatchesInCommitQueue(), None, expected_stdout, expected_logs=expected_logs)
-
- def test_patches_to_commit_queue(self):
- expected_stdout = "http://example.com/10003&action=edit\n"
- expected_logs = "10000 already has cq=+\n10001 already has cq=+\n10004 committer = \"Eric Seidel\" <eric@webkit.org>\n"
- options = Mock()
- options.bugs = False
- self.assert_execute_outputs(PatchesToCommitQueue(), None, expected_stdout, expected_logs=expected_logs, options=options)
-
- expected_stdout = "http://example.com/50003\n"
- options.bugs = True
- self.assert_execute_outputs(PatchesToCommitQueue(), None, expected_stdout, expected_logs=expected_logs, options=options)
-
- def test_patches_to_review(self):
- options = Mock()
-
- # When no cc_email is provided, we use the Bugzilla username by default.
- # The MockBugzilla will fake the authentication using username@webkit.org
- # as login and it should match the username at the report header.
- options.cc_email = None
- options.include_cq_denied = False
- options.all = False
- expected_stdout = \
- "Bugs with attachments pending review that has username@webkit.org in the CC list:\n" \
- "http://webkit.org/b/bugid Description (age in days)\n" \
- "Total: 0\n"
- expected_stderr = ""
- self.assert_execute_outputs(PatchesToReview(), None, expected_stdout, expected_stderr, options=options)
-
- options.cc_email = "abarth@webkit.org"
- options.include_cq_denied = True
- options.all = False
- expected_stdout = \
- "Bugs with attachments pending review that has abarth@webkit.org in the CC list:\n" \
- "http://webkit.org/b/bugid Description (age in days)\n" \
- "http://webkit.org/b/50001 Bug with a patch needing review. (0)\n" \
- "Total: 1\n"
- expected_stderr = ""
- self.assert_execute_outputs(PatchesToReview(), None, expected_stdout, expected_stderr, options=options)
-
- options.cc_email = None
- options.include_cq_denied = True
- options.all = True
- expected_stdout = \
- "Bugs with attachments pending review:\n" \
- "http://webkit.org/b/bugid Description (age in days)\n" \
- "http://webkit.org/b/50001 Bug with a patch needing review. (0)\n" \
- "Total: 1\n"
- self.assert_execute_outputs(PatchesToReview(), None, expected_stdout, expected_stderr, options=options)
-
- options.cc_email = None
- options.include_cq_denied = False
- options.all = True
- expected_stdout = \
- "Bugs with attachments pending review:\n" \
- "http://webkit.org/b/bugid Description (age in days)\n" \
- "Total: 0\n"
- self.assert_execute_outputs(PatchesToReview(), None, expected_stdout, expected_stderr, options=options)
-
- options.cc_email = "invalid_email@example.com"
- options.all = False
- options.include_cq_denied = True
- expected_stdout = \
- "Bugs with attachments pending review that has invalid_email@example.com in the CC list:\n" \
- "http://webkit.org/b/bugid Description (age in days)\n" \
- "Total: 0\n"
- self.assert_execute_outputs(PatchesToReview(), None, expected_stdout, expected_stderr, options=options)
-
- def test_tree_status(self):
- expected_stdout = "ok : Builder1\nok : Builder2\n"
- self.assert_execute_outputs(TreeStatus(), None, expected_stdout)
-
-
-class FailureReasonTest(unittest.TestCase):
- def test_blame_line_for_revision(self):
- tool = MockTool()
- command = FailureReason()
- command.bind_to_tool(tool)
- # This is an artificial example, mostly to test the CommitInfo lookup failure case.
- self.assertEqual(command._blame_line_for_revision(0), "FAILED to fetch CommitInfo for r0, likely missing ChangeLog")
-
- def raising_mock(self):
- raise Exception("MESSAGE")
- tool.checkout().commit_info_for_revision = raising_mock
- self.assertEqual(command._blame_line_for_revision(0), "FAILED to fetch CommitInfo for r0, exception: MESSAGE")
-
-
-class PrintExpectationsTest(unittest.TestCase):
- def run_test(self, tests, expected_stdout, platform='test-win-xp', **args):
- options = MockOptions(all=False, csv=False, full=False, platform=platform,
- include_keyword=[], exclude_keyword=[], paths=False).update(**args)
- tool = MockTool()
- tool.port_factory.all_port_names = lambda: TestPort.ALL_BASELINE_VARIANTS
- command = PrintExpectations()
- command.bind_to_tool(tool)
-
- oc = OutputCapture()
- try:
- oc.capture_output()
- command.execute(options, tests, tool)
- finally:
- stdout, _, _ = oc.restore_output()
- self.assertMultiLineEqual(stdout, expected_stdout)
-
- def test_basic(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('// For test-win-xp\n'
- 'failures/expected/image.html [ ImageOnlyFailure ]\n'
- 'failures/expected/text.html [ Failure ]\n'))
-
- def test_multiple(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('// For test-win-vista\n'
- 'failures/expected/image.html [ ImageOnlyFailure ]\n'
- 'failures/expected/text.html [ Failure ]\n'
- '\n'
- '// For test-win-win7\n'
- 'failures/expected/image.html [ ImageOnlyFailure ]\n'
- 'failures/expected/text.html [ Failure ]\n'
- '\n'
- '// For test-win-xp\n'
- 'failures/expected/image.html [ ImageOnlyFailure ]\n'
- 'failures/expected/text.html [ Failure ]\n'),
- platform='test-win-*')
-
- def test_full(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('// For test-win-xp\n'
- 'Bug(test) failures/expected/image.html [ ImageOnlyFailure ]\n'
- 'Bug(test) failures/expected/text.html [ Failure ]\n'),
- full=True)
-
- def test_exclude(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('// For test-win-xp\n'
- 'failures/expected/text.html [ Failure ]\n'),
- exclude_keyword=['image'])
-
- def test_include(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('// For test-win-xp\n'
- 'failures/expected/image.html\n'),
- include_keyword=['image'])
-
- def test_csv(self):
- self.run_test(['failures/expected/text.html', 'failures/expected/image.html'],
- ('test-win-xp,failures/expected/image.html,BUGTEST,IMAGE\n'
- 'test-win-xp,failures/expected/text.html,BUGTEST,FAIL\n'),
- csv=True)
-
- def test_paths(self):
- self.run_test([],
- ('LayoutTests/TestExpectations\n'
- 'LayoutTests/platform/test/TestExpectations\n'
- 'LayoutTests/platform/test-win-xp/TestExpectations\n'),
- paths=True)
-
- def test_platform(self):
- self.run_test(['platform/test-mac-leopard/http/test.html'],
- ('// For test-mac-snowleopard\n'
- 'platform/test-mac-leopard [ Pass Skip WontFix ]\n' # Note that this is the expectation (from being skipped internally), not the test name
- '\n'
- '// For test-mac-leopard\n'
- 'platform/test-mac-leopard/http/test.html [ Pass ]\n'),
- platform='test-mac-*')
-
-class PrintBaselinesTest(unittest.TestCase):
- def setUp(self):
- self.oc = None
- self.tool = MockTool()
- self.test_port = self.tool.port_factory.get('test-win-xp')
- self.tool.port_factory.get = lambda port_name=None: self.test_port
- self.tool.port_factory.all_port_names = lambda: TestPort.ALL_BASELINE_VARIANTS
-
- def tearDown(self):
- if self.oc:
- self.restore_output()
-
- def capture_output(self):
- self.oc = OutputCapture()
- self.oc.capture_output()
-
- def restore_output(self):
- stdout, stderr, logs = self.oc.restore_output()
- self.oc = None
- return (stdout, stderr, logs)
-
- def test_basic(self):
- command = PrintBaselines()
- command.bind_to_tool(self.tool)
- self.capture_output()
- command.execute(MockOptions(all=False, include_virtual_tests=False, csv=False, platform=None), ['passes/text.html'], self.tool)
- stdout, _, _ = self.restore_output()
- self.assertMultiLineEqual(stdout,
- ('// For test-win-xp\n'
- 'passes/text-expected.png\n'
- 'passes/text-expected.txt\n'))
-
- def test_multiple(self):
- command = PrintBaselines()
- command.bind_to_tool(self.tool)
- self.capture_output()
- command.execute(MockOptions(all=False, include_virtual_tests=False, csv=False, platform='test-win-*'), ['passes/text.html'], self.tool)
- stdout, _, _ = self.restore_output()
- self.assertMultiLineEqual(stdout,
- ('// For test-win-vista\n'
- 'passes/text-expected.png\n'
- 'passes/text-expected.txt\n'
- '\n'
- '// For test-win-win7\n'
- 'passes/text-expected.png\n'
- 'passes/text-expected.txt\n'
- '\n'
- '// For test-win-xp\n'
- 'passes/text-expected.png\n'
- 'passes/text-expected.txt\n'))
-
- def test_csv(self):
- command = PrintBaselines()
- command.bind_to_tool(self.tool)
- self.capture_output()
- command.execute(MockOptions(all=False, platform='*xp', csv=True, include_virtual_tests=False), ['passes/text.html'], self.tool)
- stdout, _, _ = self.restore_output()
- self.assertMultiLineEqual(stdout,
- ('test-win-xp,passes/text.html,None,png,passes/text-expected.png,None\n'
- 'test-win-xp,passes/text.html,None,txt,passes/text-expected.txt,None\n'))
diff --git a/Tools/Scripts/webkitpy/tool/commands/queues.py b/Tools/Scripts/webkitpy/tool/commands/queues.py
deleted file mode 100644
index 74724cffb..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/queues.py
+++ /dev/null
@@ -1,490 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import codecs
-import logging
-import os
-import sys
-import time
-import traceback
-
-from datetime import datetime
-from optparse import make_option
-from StringIO import StringIO
-
-from webkitpy.common.config.committervalidator import CommitterValidator
-from webkitpy.common.config.ports import DeprecatedPort
-from webkitpy.common.net.bugzilla import Attachment
-from webkitpy.common.net.statusserver import StatusServer
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.bot.botinfo import BotInfo
-from webkitpy.tool.bot.commitqueuetask import CommitQueueTask, CommitQueueTaskDelegate
-from webkitpy.tool.bot.expectedfailures import ExpectedFailures
-from webkitpy.tool.bot.feeders import CommitQueueFeeder, EWSFeeder
-from webkitpy.tool.bot.flakytestreporter import FlakyTestReporter
-from webkitpy.tool.bot.layouttestresultsreader import LayoutTestResultsReader
-from webkitpy.tool.bot.patchanalysistask import UnableToApplyPatch
-from webkitpy.tool.bot.queueengine import QueueEngine, QueueEngineDelegate
-from webkitpy.tool.bot.stylequeuetask import StyleQueueTask, StyleQueueTaskDelegate
-from webkitpy.tool.commands.stepsequence import StepSequenceErrorHandler
-from webkitpy.tool.multicommandtool import Command, TryAgain
-
-_log = logging.getLogger(__name__)
-
-
-class AbstractQueue(Command, QueueEngineDelegate):
- watchers = [
- ]
-
- _pass_status = "Pass"
- _fail_status = "Fail"
- _retry_status = "Retry"
- _error_status = "Error"
-
- def __init__(self, options=None): # Default values should never be collections (like []) as default values are shared between invocations
- options_list = (options or []) + [
- make_option("--no-confirm", action="store_false", dest="confirm", default=True, help="Do not ask the user for confirmation before running the queue. Dangerous!"),
- make_option("--exit-after-iteration", action="store", type="int", dest="iterations", default=None, help="Stop running the queue after iterating this number of times."),
- ]
- self.help_text = "Run the %s" % self.name
- Command.__init__(self, options=options_list)
- self._iteration_count = 0
-
- def _cc_watchers(self, bug_id):
- try:
- self._tool.bugs.add_cc_to_bug(bug_id, self.watchers)
- except Exception, e:
- traceback.print_exc()
- _log.error("Failed to CC watchers.")
-
- def run_webkit_patch(self, args):
- webkit_patch_args = [self._tool.path()]
- # FIXME: This is a hack, we should have a more general way to pass global options.
- # FIXME: We must always pass global options and their value in one argument
- # because our global option code looks for the first argument which does
- # not begin with "-" and assumes that is the command name.
- webkit_patch_args += ["--status-host=%s" % self._tool.status_server.host]
- if self._tool.status_server.bot_id:
- webkit_patch_args += ["--bot-id=%s" % self._tool.status_server.bot_id]
- if self._options.port:
- webkit_patch_args += ["--port=%s" % self._options.port]
- webkit_patch_args.extend(args)
-
- try:
- args_for_printing = list(webkit_patch_args)
- args_for_printing[0] = 'webkit-patch' # Printing our path for each log is redundant.
- _log.info("Running: %s" % self._tool.executive.command_for_printing(args_for_printing))
- command_output = self._tool.executive.run_command(webkit_patch_args, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- # Make sure the whole output gets printed if the command failed.
- _log.error(e.message_with_output(output_limit=None))
- raise
- return command_output
-
- def _log_directory(self):
- return os.path.join("..", "%s-logs" % self.name)
-
- # QueueEngineDelegate methods
-
- def queue_log_path(self):
- return os.path.join(self._log_directory(), "%s.log" % self.name)
-
- def work_item_log_path(self, work_item):
- raise NotImplementedError, "subclasses must implement"
-
- def begin_work_queue(self):
- _log.info("CAUTION: %s will discard all local changes in \"%s\"" % (self.name, self._tool.scm().checkout_root))
- if self._options.confirm:
- response = self._tool.user.prompt("Are you sure? Type \"yes\" to continue: ")
- if (response != "yes"):
- _log.error("User declined.")
- sys.exit(1)
- _log.info("Running WebKit %s." % self.name)
- self._tool.status_server.update_status(self.name, "Starting Queue")
-
- def stop_work_queue(self, reason):
- self._tool.status_server.update_status(self.name, "Stopping Queue, reason: %s" % reason)
-
- def should_continue_work_queue(self):
- self._iteration_count += 1
- return not self._options.iterations or self._iteration_count <= self._options.iterations
-
- def next_work_item(self):
- raise NotImplementedError, "subclasses must implement"
-
- def process_work_item(self, work_item):
- raise NotImplementedError, "subclasses must implement"
-
- def handle_unexpected_error(self, work_item, message):
- raise NotImplementedError, "subclasses must implement"
-
- # Command methods
-
- def execute(self, options, args, tool, engine=QueueEngine):
- self._options = options # FIXME: This code is wrong. Command.options is a list, this assumes an Options element!
- self._tool = tool # FIXME: This code is wrong too! Command.bind_to_tool handles this!
- return engine(self.name, self, self._tool.wakeup_event, self._options.seconds_to_sleep).run()
-
- @classmethod
- def _log_from_script_error_for_upload(cls, script_error, output_limit=None):
- # We have seen request timeouts with app engine due to large
- # log uploads. Trying only the last 512k.
- if not output_limit:
- output_limit = 512 * 1024 # 512k
- output = script_error.message_with_output(output_limit=output_limit)
- # We pre-encode the string to a byte array before passing it
- # to status_server, because ClientForm (part of mechanize)
- # wants a file-like object with pre-encoded data.
- return StringIO(output.encode("utf-8"))
-
- @classmethod
- def _update_status_for_script_error(cls, tool, state, script_error, is_error=False):
- message = str(script_error)
- if is_error:
- message = "Error: %s" % message
- failure_log = cls._log_from_script_error_for_upload(script_error)
- return tool.status_server.update_status(cls.name, message, state["patch"], failure_log)
-
-
-class FeederQueue(AbstractQueue):
- name = "feeder-queue"
-
- _sleep_duration = 30 # seconds
-
- # AbstractQueue methods
-
- def begin_work_queue(self):
- AbstractQueue.begin_work_queue(self)
- self.feeders = [
- CommitQueueFeeder(self._tool),
- EWSFeeder(self._tool),
- ]
-
- def next_work_item(self):
- # This really show inherit from some more basic class that doesn't
- # understand work items, but the base class in the heirarchy currently
- # understands work items.
- return "synthetic-work-item"
-
- def process_work_item(self, work_item):
- for feeder in self.feeders:
- feeder.feed()
- time.sleep(self._sleep_duration)
- return True
-
- def work_item_log_path(self, work_item):
- return None
-
- def handle_unexpected_error(self, work_item, message):
- _log.error(message)
-
-
-class AbstractPatchQueue(AbstractQueue):
- def _update_status(self, message, patch=None, results_file=None):
- return self._tool.status_server.update_status(self.name, message, patch, results_file)
-
- def _next_patch(self):
- # FIXME: Bugzilla accessibility should be checked here; if it's unaccessible,
- # it should return None.
- patch = None
- while not patch:
- patch_id = self._tool.status_server.next_work_item(self.name)
- if not patch_id:
- return None
- patch = self._tool.bugs.fetch_attachment(patch_id)
- if not patch:
- # FIXME: Using a fake patch because release_work_item has the wrong API.
- # We also don't really need to release the lock (although that's fine),
- # mostly we just need to remove this bogus patch from our queue.
- # If for some reason bugzilla is just down, then it will be re-fed later.
- fake_patch = Attachment({'id': patch_id}, None)
- self._release_work_item(fake_patch)
- return patch
-
- def _release_work_item(self, patch):
- self._tool.status_server.release_work_item(self.name, patch)
-
- def _did_pass(self, patch):
- self._update_status(self._pass_status, patch)
- self._release_work_item(patch)
-
- def _did_fail(self, patch):
- self._update_status(self._fail_status, patch)
- self._release_work_item(patch)
-
- def _did_retry(self, patch):
- self._update_status(self._retry_status, patch)
- self._release_work_item(patch)
-
- def _did_error(self, patch, reason):
- message = "%s: %s" % (self._error_status, reason)
- self._update_status(message, patch)
- self._release_work_item(patch)
-
- def work_item_log_path(self, patch):
- return os.path.join(self._log_directory(), "%s.log" % patch.bug_id())
-
-
-# Used to share code between the EWS and commit-queue.
-class PatchProcessingQueue(AbstractPatchQueue):
- # Subclasses must override.
- port_name = None
-
- def __init__(self, options=None):
- self._port = None # We can't instantiate port here because tool isn't avaialble.
- AbstractPatchQueue.__init__(self, options)
-
- # FIXME: This is a hack to map between the old port names and the new port names.
- def _new_port_name_from_old(self, port_name, platform):
- # ApplePort.determine_full_port_name asserts if the name doesn't include version.
- if port_name == 'mac':
- return 'mac-' + platform.os_version
- if port_name == 'win':
- return 'win-future'
- return port_name
-
- def begin_work_queue(self):
- AbstractPatchQueue.begin_work_queue(self)
- if not self.port_name:
- return
- # FIXME: This is only used for self._deprecated_port.flag()
- self._deprecated_port = DeprecatedPort.port(self.port_name)
- # FIXME: This violates abstraction
- self._tool._deprecated_port = self._deprecated_port
- self._port = self._tool.port_factory.get(self._new_port_name_from_old(self.port_name, self._tool.platform))
-
- def _upload_results_archive_for_patch(self, patch, results_archive_zip):
- if not self._port:
- self._port = self._tool.port_factory.get(self._new_port_name_from_old(self.port_name, self._tool.platform))
-
- bot_id = self._tool.status_server.bot_id or "bot"
- description = "Archive of layout-test-results from %s for %s" % (bot_id, self._port.name())
- # results_archive is a ZipFile object, grab the File object (.fp) to pass to Mechanize for uploading.
- results_archive_file = results_archive_zip.fp
- # Rewind the file object to start (since Mechanize won't do that automatically)
- # See https://bugs.webkit.org/show_bug.cgi?id=54593
- results_archive_file.seek(0)
- # FIXME: This is a small lie to always say run-webkit-tests since Chromium uses new-run-webkit-tests.
- # We could make this code look up the test script name off the port.
- comment_text = "The attached test failures were seen while running run-webkit-tests on the %s.\n" % (self.name)
- # FIXME: We could easily list the test failures from the archive here,
- # currently callers do that separately.
- comment_text += BotInfo(self._tool, self._port.name()).summary_text()
- self._tool.bugs.add_attachment_to_bug(patch.bug_id(), results_archive_file, description, filename="layout-test-results.zip", comment_text=comment_text)
-
-
-class CommitQueue(PatchProcessingQueue, StepSequenceErrorHandler, CommitQueueTaskDelegate):
- name = "commit-queue"
- port_name = "mac-mountainlion"
-
- # AbstractPatchQueue methods
-
- def begin_work_queue(self):
- PatchProcessingQueue.begin_work_queue(self)
- self.committer_validator = CommitterValidator(self._tool)
- self._expected_failures = ExpectedFailures()
- self._layout_test_results_reader = LayoutTestResultsReader(self._tool, self._port.results_directory(), self._log_directory())
-
- def next_work_item(self):
- return self._next_patch()
-
- def process_work_item(self, patch):
- self._cc_watchers(patch.bug_id())
- task = CommitQueueTask(self, patch)
- try:
- if task.run():
- self._did_pass(patch)
- return True
- self._did_retry(patch)
- except ScriptError, e:
- validator = CommitterValidator(self._tool)
- validator.reject_patch_from_commit_queue(patch.id(), self._error_message_for_bug(task, patch, e))
- results_archive = task.results_archive_from_patch_test_run(patch)
- if results_archive:
- self._upload_results_archive_for_patch(patch, results_archive)
- self._did_fail(patch)
-
- def _failing_tests_message(self, task, patch):
- results = task.results_from_patch_test_run(patch)
- unexpected_failures = self._expected_failures.unexpected_failures_observed(results)
- if not unexpected_failures:
- return None
- return "New failing tests:\n%s" % "\n".join(unexpected_failures)
-
- def _error_message_for_bug(self, task, patch, script_error):
- message = self._failing_tests_message(task, patch)
- if not message:
- message = script_error.message_with_output()
- results_link = self._tool.status_server.results_url_for_status(task.failure_status_id)
- return "%s\nFull output: %s" % (message, results_link)
-
- def handle_unexpected_error(self, patch, message):
- self.committer_validator.reject_patch_from_commit_queue(patch.id(), message)
-
- # CommitQueueTaskDelegate methods
-
- def run_command(self, command):
- self.run_webkit_patch(command + [self._deprecated_port.flag()])
-
- def command_passed(self, message, patch):
- self._update_status(message, patch=patch)
-
- def command_failed(self, message, script_error, patch):
- failure_log = self._log_from_script_error_for_upload(script_error)
- return self._update_status(message, patch=patch, results_file=failure_log)
-
- def expected_failures(self):
- return self._expected_failures
-
- def test_results(self):
- return self._layout_test_results_reader.results()
-
- def archive_last_test_results(self, patch):
- return self._layout_test_results_reader.archive(patch)
-
- def build_style(self):
- return "release"
-
- def refetch_patch(self, patch):
- return self._tool.bugs.fetch_attachment(patch.id())
-
- def report_flaky_tests(self, patch, flaky_test_results, results_archive=None):
- reporter = FlakyTestReporter(self._tool, self.name)
- reporter.report_flaky_tests(patch, flaky_test_results, results_archive)
-
- def did_pass_testing_ews(self, patch):
- # Only Mac and Mac WK2 run tests
- # FIXME: We shouldn't have to hard-code it here.
- patch_status = self._tool.status_server.patch_status
- return patch_status("mac-ews", patch.id()) == self._pass_status or patch_status("mac-wk2-ews", patch.id()) == self._pass_status
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- # Hitting this error handler should be pretty rare. It does occur,
- # however, when a patch no longer applies to top-of-tree in the final
- # land step.
- _log.error(script_error.message_with_output())
-
- @classmethod
- def handle_checkout_needs_update(cls, tool, state, options, error):
- message = "Tests passed, but commit failed (checkout out of date). Updating, then landing without building or re-running tests."
- tool.status_server.update_status(cls.name, message, state["patch"])
- # The only time when we find out that out checkout needs update is
- # when we were ready to actually pull the trigger and land the patch.
- # Rather than spinning in the master process, we retry without
- # building or testing, which is much faster.
- options.build = False
- options.test = False
- options.update = True
- raise TryAgain()
-
-
-class AbstractReviewQueue(PatchProcessingQueue, StepSequenceErrorHandler):
- """This is the base-class for the EWS queues and the style-queue."""
- def __init__(self, options=None):
- PatchProcessingQueue.__init__(self, options)
-
- def review_patch(self, patch):
- raise NotImplementedError("subclasses must implement")
-
- # AbstractPatchQueue methods
-
- def begin_work_queue(self):
- PatchProcessingQueue.begin_work_queue(self)
-
- def next_work_item(self):
- return self._next_patch()
-
- def process_work_item(self, patch):
- try:
- if not self.review_patch(patch):
- return False
- self._did_pass(patch)
- return True
- except ScriptError, e:
- if e.exit_code != QueueEngine.handled_error_code:
- self._did_fail(patch)
- else:
- # The subprocess handled the error, but won't have released the patch, so we do.
- # FIXME: We need to simplify the rules by which _release_work_item is called.
- self._release_work_item(patch)
- raise e
-
- def handle_unexpected_error(self, patch, message):
- _log.error(message)
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- _log.error(script_error.output)
-
-
-class StyleQueue(AbstractReviewQueue, StyleQueueTaskDelegate):
- name = "style-queue"
-
- def __init__(self):
- AbstractReviewQueue.__init__(self)
-
- def review_patch(self, patch):
- task = StyleQueueTask(self, patch)
- if not task.validate():
- self._did_error(patch, "%s did not process patch." % self.name)
- return False
- try:
- return task.run()
- except UnableToApplyPatch, e:
- self._did_error(patch, "%s unable to apply patch." % self.name)
- return False
- except ScriptError, e:
- message = "Attachment %s did not pass %s:\n\n%s\n\nIf any of these errors are false positives, please file a bug against check-webkit-style." % (patch.id(), self.name, e.output)
- self._tool.bugs.post_comment_to_bug(patch.bug_id(), message, cc=self.watchers)
- self._did_fail(patch)
- return False
- return True
-
- # StyleQueueTaskDelegate methods
-
- def run_command(self, command):
- self.run_webkit_patch(command)
-
- def command_passed(self, message, patch):
- self._update_status(message, patch=patch)
-
- def command_failed(self, message, script_error, patch):
- failure_log = self._log_from_script_error_for_upload(script_error)
- return self._update_status(message, patch=patch, results_file=failure_log)
-
- def expected_failures(self):
- return None
-
- def refetch_patch(self, patch):
- return self._tool.bugs.fetch_attachment(patch.id())
diff --git a/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py b/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py
deleted file mode 100644
index a09164dde..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/queues_unittest.py
+++ /dev/null
@@ -1,510 +0,0 @@
-# Copyright (C) 2009 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.
-
-import os
-import StringIO
-
-from webkitpy.common.checkout.scm import CheckoutNeedsUpdate
-from webkitpy.common.checkout.scm.scm_mock import MockSCM
-from webkitpy.common.net.bugzilla import Attachment
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.layout_tests.models import test_results
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.queues import *
-from webkitpy.tool.commands.queuestest import QueuesTest
-from webkitpy.tool.commands.stepsequence import StepSequence
-from webkitpy.common.net.statusserver_mock import MockStatusServer
-from webkitpy.tool.mocktool import MockTool, MockOptions
-
-
-class TestCommitQueue(CommitQueue):
- def __init__(self, tool=None):
- CommitQueue.__init__(self)
- if tool:
- self.bind_to_tool(tool)
- self._options = MockOptions(confirm=False, parent_command="commit-queue", port=None)
-
- def begin_work_queue(self):
- output_capture = OutputCapture()
- output_capture.capture_output()
- CommitQueue.begin_work_queue(self)
- output_capture.restore_output()
-
-
-class TestQueue(AbstractPatchQueue):
- name = "test-queue"
-
-
-class TestReviewQueue(AbstractReviewQueue):
- name = "test-review-queue"
-
-
-class TestFeederQueue(FeederQueue):
- _sleep_duration = 0
-
-
-class AbstractQueueTest(CommandsTest):
- def test_log_directory(self):
- self.assertEqual(TestQueue()._log_directory(), os.path.join("..", "test-queue-logs"))
-
- def _assert_run_webkit_patch(self, run_args, port=None):
- queue = TestQueue()
- tool = MockTool()
- tool.status_server.bot_id = "gort"
- tool.executive = Mock()
- queue.bind_to_tool(tool)
- queue._options = Mock()
- queue._options.port = port
-
- queue.run_webkit_patch(run_args)
- expected_run_args = ["echo", "--status-host=example.com", "--bot-id=gort"]
- if port:
- expected_run_args.append("--port=%s" % port)
- expected_run_args.extend(run_args)
- tool.executive.run_command.assert_called_with(expected_run_args, cwd='/mock-checkout')
-
- def test_run_webkit_patch(self):
- self._assert_run_webkit_patch([1])
- self._assert_run_webkit_patch(["one", 2])
- self._assert_run_webkit_patch([1], port="mockport")
-
- def test_iteration_count(self):
- queue = TestQueue()
- queue._options = Mock()
- queue._options.iterations = 3
- self.assertTrue(queue.should_continue_work_queue())
- self.assertTrue(queue.should_continue_work_queue())
- self.assertTrue(queue.should_continue_work_queue())
- self.assertFalse(queue.should_continue_work_queue())
-
- def test_no_iteration_count(self):
- queue = TestQueue()
- queue._options = Mock()
- self.assertTrue(queue.should_continue_work_queue())
- self.assertTrue(queue.should_continue_work_queue())
- self.assertTrue(queue.should_continue_work_queue())
- self.assertTrue(queue.should_continue_work_queue())
-
- def _assert_log_message(self, script_error, log_message):
- failure_log = AbstractQueue._log_from_script_error_for_upload(script_error, output_limit=10)
- self.assertTrue(failure_log.read(), log_message)
-
- def test_log_from_script_error_for_upload(self):
- self._assert_log_message(ScriptError("test"), "test")
- unicode_tor = u"WebKit \u2661 Tor Arne Vestb\u00F8!"
- utf8_tor = unicode_tor.encode("utf-8")
- self._assert_log_message(ScriptError(unicode_tor), utf8_tor)
- script_error = ScriptError(unicode_tor, output=unicode_tor)
- expected_output = "%s\nLast %s characters of output:\n%s" % (utf8_tor, 10, utf8_tor[-10:])
- self._assert_log_message(script_error, expected_output)
-
-
-class FeederQueueTest(QueuesTest):
- def test_feeder_queue(self):
- queue = TestFeederQueue()
- tool = MockTool(log_executive=True)
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("feeder-queue"),
- "process_work_item": """Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)
-Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)
-MOCK setting flag 'commit-queue' to '-' on attachment '10001' with comment 'Rejecting attachment 10001 from commit-queue.\n\nnon-committer@example.com does not have committer permissions according to http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/common/config/committers.py.
-
-- If you do not have committer rights please read http://webkit.org/coding/contributing.html for instructions on how to use bugzilla flags.
-
-- If you have committer rights please correct the error in Tools/Scripts/webkitpy/common/config/committers.py by adding yourself to the file (no review needed). The commit-queue restarts itself every 2 hours. After restart the commit-queue will correctly respect your committer rights.'
-MOCK: update_work_items: commit-queue [10005, 10000]
-Feeding commit-queue items [10005, 10000]
-Feeding EWS (1 r? patch, 1 new)
-MOCK: submit_to_ews: 10002
-""",
- "handle_unexpected_error": "Mock error message\n",
- }
- self.assert_queue_outputs(queue, tool=tool, expected_logs=expected_logs)
-
-
-class AbstractPatchQueueTest(CommandsTest):
- def test_next_patch(self):
- queue = AbstractPatchQueue()
- tool = MockTool()
- queue.bind_to_tool(tool)
- queue._options = Mock()
- queue._options.port = None
- self.assertIsNone(queue._next_patch())
- tool.status_server = MockStatusServer(work_items=[2, 10000, 10001])
- expected_stdout = "MOCK: fetch_attachment: 2 is not a known attachment id\n" # A mock-only message to prevent us from making mistakes.
- expected_logs = "MOCK: release_work_item: None 2\n"
- patch = OutputCapture().assert_outputs(self, queue._next_patch, expected_stdout=expected_stdout, expected_logs=expected_logs)
- # The patch.id() == 2 is ignored because it doesn't exist.
- self.assertEqual(patch.id(), 10000)
- self.assertEqual(queue._next_patch().id(), 10001)
- self.assertEqual(queue._next_patch(), None) # When the queue is empty
-
-
-class PatchProcessingQueueTest(CommandsTest):
- def test_upload_results_archive_for_patch(self):
- queue = PatchProcessingQueue()
- queue.name = "mock-queue"
- tool = MockTool()
- queue.bind_to_tool(tool)
- queue._options = Mock()
- queue._options.port = None
- patch = queue._tool.bugs.fetch_attachment(10001)
- expected_logs = """MOCK add_attachment_to_bug: bug_id=50000, description=Archive of layout-test-results from bot for mac-snowleopard filename=layout-test-results.zip mimetype=None
--- Begin comment --
-The attached test failures were seen while running run-webkit-tests on the mock-queue.
-Port: mac-snowleopard Platform: MockPlatform 1.0
--- End comment --
-"""
- OutputCapture().assert_outputs(self, queue._upload_results_archive_for_patch, [patch, Mock()], expected_logs=expected_logs)
-
-
-class NeedsUpdateSequence(StepSequence):
- def _run(self, tool, options, state):
- raise CheckoutNeedsUpdate([], 1, "", None)
-
-
-class AlwaysCommitQueueTool(object):
- def __init__(self):
- self.status_server = MockStatusServer()
-
- def command_by_name(self, name):
- return CommitQueue
-
-
-class SecondThoughtsCommitQueue(TestCommitQueue):
- def __init__(self, tool=None):
- self._reject_patch = False
- TestCommitQueue.__init__(self, tool)
-
- def run_command(self, command):
- # We want to reject the patch after the first validation,
- # so wait to reject it until after some other command has run.
- self._reject_patch = True
- return CommitQueue.run_command(self, command)
-
- def refetch_patch(self, patch):
- if not self._reject_patch:
- return self._tool.bugs.fetch_attachment(patch.id())
-
- attachment_dictionary = {
- "id": patch.id(),
- "bug_id": patch.bug_id(),
- "name": "Rejected",
- "is_obsolete": True,
- "is_patch": False,
- "review": "-",
- "reviewer_email": "foo@bar.com",
- "commit-queue": "-",
- "committer_email": "foo@bar.com",
- "attacher_email": "Contributer1",
- }
- return Attachment(attachment_dictionary, None)
-
-
-class CommitQueueTest(QueuesTest):
- def _mock_test_result(self, testname):
- return test_results.TestResult(testname, [test_failures.FailureTextMismatch()])
-
- def test_commit_queue(self):
- tool = MockTool()
- tool.filesystem.write_text_file('/tmp/layout-test-results/full_results.json', '') # Otherwise the commit-queue will hit a KeyError trying to read the results from the MockFileSystem.
- tool.filesystem.write_text_file('/tmp/layout-test-results/webkit_unit_tests_output.xml', '')
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("commit-queue"),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean --port=mac
-MOCK: update_status: commit-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update --port=mac
-MOCK: update_status: commit-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000 --port=mac
-MOCK: update_status: commit-queue Applied patch
-Running: webkit-patch --status-host=example.com validate-changelog --check-oops --non-interactive 10000 --port=mac
-MOCK: update_status: commit-queue ChangeLog validated
-Running: webkit-patch --status-host=example.com build --no-clean --no-update --build-style=release --port=mac
-MOCK: update_status: commit-queue Built patch
-Running: webkit-patch --status-host=example.com build-and-test --no-clean --no-update --test --non-interactive --port=mac
-MOCK: update_status: commit-queue Passed tests
-Running: webkit-patch --status-host=example.com land-attachment --force-clean --non-interactive --parent-command=commit-queue 10000 --port=mac
-MOCK: update_status: commit-queue Landed patch
-MOCK: update_status: commit-queue Pass
-MOCK: release_work_item: commit-queue 10000
-""",
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- "handle_unexpected_error": "MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nMock error message'\n",
- }
- self.assert_queue_outputs(CommitQueue(), tool=tool, expected_logs=expected_logs)
-
- def test_commit_queue_failure(self):
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("commit-queue"),
- "process_work_item": """MOCK: update_status: commit-queue Cleaned working directory
-MOCK: update_status: commit-queue Updated working directory
-MOCK: update_status: commit-queue Patch does not apply
-MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nMOCK script error
-Full output: http://dummy_url'
-MOCK: update_status: commit-queue Fail
-MOCK: release_work_item: commit-queue 10000
-""",
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- "handle_unexpected_error": "MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nMock error message'\n",
- }
- queue = CommitQueue()
-
- def mock_run_webkit_patch(command):
- if command[0] == 'clean' or command[0] == 'update':
- # We want cleaning to succeed so we can error out on a step
- # that causes the commit-queue to reject the patch.
- return
- raise ScriptError('MOCK script error')
-
- queue.run_webkit_patch = mock_run_webkit_patch
- self.assert_queue_outputs(queue, expected_logs=expected_logs)
-
- def test_commit_queue_failure_with_failing_tests(self):
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("commit-queue"),
- "process_work_item": """MOCK: update_status: commit-queue Cleaned working directory
-MOCK: update_status: commit-queue Updated working directory
-MOCK: update_status: commit-queue Patch does not apply
-MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nNew failing tests:
-mock_test_name.html
-another_test_name.html
-Full output: http://dummy_url'
-MOCK: update_status: commit-queue Fail
-MOCK: release_work_item: commit-queue 10000
-""",
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- "handle_unexpected_error": "MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nMock error message'\n",
- }
- queue = CommitQueue()
-
- def mock_run_webkit_patch(command):
- if command[0] == 'clean' or command[0] == 'update':
- # We want cleaning to succeed so we can error out on a step
- # that causes the commit-queue to reject the patch.
- return
- queue._expected_failures.unexpected_failures_observed = lambda results: ["mock_test_name.html", "another_test_name.html"]
- raise ScriptError('MOCK script error')
-
- queue.run_webkit_patch = mock_run_webkit_patch
- self.assert_queue_outputs(queue, expected_logs=expected_logs)
-
- def test_rollout(self):
- tool = MockTool()
- tool.filesystem.write_text_file('/tmp/layout-test-results/full_results.json', '') # Otherwise the commit-queue will hit a KeyError trying to read the results from the MockFileSystem.
- tool.filesystem.write_text_file('/tmp/layout-test-results/webkit_unit_tests_output.xml', '')
- tool.buildbot.light_tree_on_fire()
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("commit-queue"),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean --port=%(port)s
-MOCK: update_status: commit-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update --port=%(port)s
-MOCK: update_status: commit-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000 --port=%(port)s
-MOCK: update_status: commit-queue Applied patch
-Running: webkit-patch --status-host=example.com validate-changelog --check-oops --non-interactive 10000 --port=%(port)s
-MOCK: update_status: commit-queue ChangeLog validated
-Running: webkit-patch --status-host=example.com build --no-clean --no-update --build-style=release --port=%(port)s
-MOCK: update_status: commit-queue Built patch
-Running: webkit-patch --status-host=example.com build-and-test --no-clean --no-update --test --non-interactive --port=%(port)s
-MOCK: update_status: commit-queue Passed tests
-Running: webkit-patch --status-host=example.com land-attachment --force-clean --non-interactive --parent-command=commit-queue 10000 --port=%(port)s
-MOCK: update_status: commit-queue Landed patch
-MOCK: update_status: commit-queue Pass
-MOCK: release_work_item: commit-queue 10000
-""" % {"port": "mac"},
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- "handle_unexpected_error": "MOCK setting flag 'commit-queue' to '-' on attachment '10000' with comment 'Rejecting attachment 10000 from commit-queue.\n\nMock error message'\n",
- }
- self.assert_queue_outputs(CommitQueue(), tool=tool, expected_logs=expected_logs)
-
- def test_rollout_lands(self):
- tool = MockTool()
- tool.buildbot.light_tree_on_fire()
- rollout_patch = tool.bugs.fetch_attachment(10005) # _patch6, a rollout patch.
- assert(rollout_patch.is_rollout())
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("commit-queue"),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean --port=%(port)s
-MOCK: update_status: commit-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update --port=%(port)s
-MOCK: update_status: commit-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10005 --port=%(port)s
-MOCK: update_status: commit-queue Applied patch
-Running: webkit-patch --status-host=example.com validate-changelog --check-oops --non-interactive 10005 --port=%(port)s
-MOCK: update_status: commit-queue ChangeLog validated
-Running: webkit-patch --status-host=example.com land-attachment --force-clean --non-interactive --parent-command=commit-queue 10005 --port=%(port)s
-MOCK: update_status: commit-queue Landed patch
-MOCK: update_status: commit-queue Pass
-MOCK: release_work_item: commit-queue 10005
-""" % {"port": "mac"},
- "handle_script_error": "ScriptError error message\n\nMOCK output\n",
- "handle_unexpected_error": "MOCK setting flag 'commit-queue' to '-' on attachment '10005' with comment 'Rejecting attachment 10005 from commit-queue.\n\nMock error message'\n",
- }
- self.assert_queue_outputs(CommitQueue(), tool=tool, work_item=rollout_patch, expected_logs=expected_logs)
-
- def test_auto_retry(self):
- queue = CommitQueue()
- options = Mock()
- options.parent_command = "commit-queue"
- tool = AlwaysCommitQueueTool()
- sequence = NeedsUpdateSequence(None)
-
- expected_logs = """Commit failed because the checkout is out of date. Please update and try again.
-MOCK: update_status: commit-queue Tests passed, but commit failed (checkout out of date). Updating, then landing without building or re-running tests.
-"""
- state = {'patch': None}
- OutputCapture().assert_outputs(self, sequence.run_and_handle_errors, [tool, options, state], expected_exception=TryAgain, expected_logs=expected_logs)
-
- self.assertTrue(options.update)
- self.assertFalse(options.build)
- self.assertFalse(options.test)
-
- def test_manual_reject_during_processing(self):
- queue = SecondThoughtsCommitQueue(MockTool())
- queue.begin_work_queue()
- queue._tool.filesystem.write_text_file('/tmp/layout-test-results/full_results.json', '') # Otherwise the commit-queue will hit a KeyError trying to read the results from the MockFileSystem.
- queue._tool.filesystem.write_text_file('/tmp/layout-test-results/webkit_unit_tests_output.xml', '')
- queue._options = Mock()
- queue._options.port = None
- expected_logs = """Running: webkit-patch --status-host=example.com clean --port=mac
-MOCK: update_status: commit-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update --port=mac
-MOCK: update_status: commit-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000 --port=mac
-MOCK: update_status: commit-queue Applied patch
-Running: webkit-patch --status-host=example.com validate-changelog --check-oops --non-interactive 10000 --port=mac
-MOCK: update_status: commit-queue ChangeLog validated
-Running: webkit-patch --status-host=example.com build --no-clean --no-update --build-style=release --port=mac
-MOCK: update_status: commit-queue Built patch
-Running: webkit-patch --status-host=example.com build-and-test --no-clean --no-update --test --non-interactive --port=mac
-MOCK: update_status: commit-queue Passed tests
-MOCK: update_status: commit-queue Retry
-MOCK: release_work_item: commit-queue 10000
-"""
- self.maxDiff = None
- OutputCapture().assert_outputs(self, queue.process_work_item, [QueuesTest.mock_work_item], expected_logs=expected_logs)
-
- def test_report_flaky_tests(self):
- queue = TestCommitQueue(MockTool())
- expected_logs = """MOCK bug comment: bug_id=50002, cc=None
---- Begin comment ---
-The commit-queue just saw foo/bar.html flake (text diff) while processing attachment 10000 on bug 50000.
-Port: MockPort Platform: MockPlatform 1.0
---- End comment ---
-
-MOCK add_attachment_to_bug: bug_id=50002, description=Failure diff from bot filename=failure.diff mimetype=None
-MOCK bug comment: bug_id=50002, cc=None
---- Begin comment ---
-The commit-queue just saw bar/baz.html flake (text diff) while processing attachment 10000 on bug 50000.
-Port: MockPort Platform: MockPlatform 1.0
---- End comment ---
-
-bar/baz-diffs.txt does not exist in results archive, uploading entire archive.
-MOCK add_attachment_to_bug: bug_id=50002, description=Archive of layout-test-results from bot filename=layout-test-results.zip mimetype=None
-MOCK bug comment: bug_id=50000, cc=None
---- Begin comment ---
-The commit-queue encountered the following flaky tests while processing attachment 10000:
-
-foo/bar.html bug 50002 (author: abarth@webkit.org)
-bar/baz.html bug 50002 (author: abarth@webkit.org)
-The commit-queue is continuing to process your patch.
---- End comment ---
-
-"""
- test_names = ["foo/bar.html", "bar/baz.html"]
- test_results = [self._mock_test_result(name) for name in test_names]
-
- class MockZipFile(object):
- def __init__(self):
- self.fp = StringIO()
-
- def read(self, path):
- return ""
-
- def namelist(self):
- # This is intentionally missing one diffs.txt to exercise the "upload the whole zip" codepath.
- return ['foo/bar-diffs.txt']
-
- OutputCapture().assert_outputs(self, queue.report_flaky_tests, [QueuesTest.mock_work_item, test_results, MockZipFile()], expected_logs=expected_logs)
-
- def test_did_pass_testing_ews(self):
- tool = MockTool()
- patch = tool.bugs.fetch_attachment(10000)
- queue = TestCommitQueue(tool)
- self.assertFalse(queue.did_pass_testing_ews(patch))
-
-
-class StyleQueueTest(QueuesTest):
- def test_style_queue_with_style_exception(self):
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("style-queue"),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean
-MOCK: update_status: style-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update
-MOCK: update_status: style-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000
-MOCK: update_status: style-queue Applied patch
-Running: webkit-patch --status-host=example.com apply-watchlist-local 50000
-MOCK: update_status: style-queue Watchlist applied
-Running: webkit-patch --status-host=example.com check-style-local --non-interactive --quiet
-MOCK: update_status: style-queue Style checked
-MOCK: update_status: style-queue Pass
-MOCK: release_work_item: style-queue 10000
-""",
- "handle_unexpected_error": "Mock error message\n",
- "handle_script_error": "MOCK output\n",
- }
- tool = MockTool(executive_throws_when_run=set(['check-style']))
- self.assert_queue_outputs(StyleQueue(), expected_logs=expected_logs, tool=tool)
-
- def test_style_queue_with_watch_list_exception(self):
- expected_logs = {
- "begin_work_queue": self._default_begin_work_queue_logs("style-queue"),
- "process_work_item": """Running: webkit-patch --status-host=example.com clean
-MOCK: update_status: style-queue Cleaned working directory
-Running: webkit-patch --status-host=example.com update
-MOCK: update_status: style-queue Updated working directory
-Running: webkit-patch --status-host=example.com apply-attachment --no-update --non-interactive 10000
-MOCK: update_status: style-queue Applied patch
-Running: webkit-patch --status-host=example.com apply-watchlist-local 50000
-Exception for ['echo', '--status-host=example.com', 'apply-watchlist-local', 50000]
-
-MOCK command output
-MOCK: update_status: style-queue Unabled to apply watchlist
-Running: webkit-patch --status-host=example.com check-style-local --non-interactive --quiet
-MOCK: update_status: style-queue Style checked
-MOCK: update_status: style-queue Pass
-MOCK: release_work_item: style-queue 10000
-""",
- "handle_unexpected_error": "Mock error message\n",
- "handle_script_error": "MOCK output\n",
- }
- tool = MockTool(executive_throws_when_run=set(['apply-watchlist-local']))
- self.assert_queue_outputs(StyleQueue(), expected_logs=expected_logs, tool=tool)
diff --git a/Tools/Scripts/webkitpy/tool/commands/queuestest.py b/Tools/Scripts/webkitpy/tool/commands/queuestest.py
deleted file mode 100644
index c633b8479..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/queuestest.py
+++ /dev/null
@@ -1,107 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.net.bugzilla import Attachment
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.stepsequence import StepSequenceErrorHandler
-from webkitpy.tool.mocktool import MockTool
-
-
-class MockQueueEngine(object):
- def __init__(self, name, queue, wakeup_event, seconds_to_sleep):
- pass
-
- def run(self):
- pass
-
-
-class QueuesTest(unittest.TestCase):
- # This is _patch1 in mocktool.py
- mock_work_item = MockTool().bugs.fetch_attachment(10000)
-
- def assert_outputs(self, func, func_name, args, expected_stdout, expected_stderr, expected_exceptions, expected_logs):
- exception = None
- if expected_exceptions and func_name in expected_exceptions:
- exception = expected_exceptions[func_name]
-
- logs = None
- if expected_logs and func_name in expected_logs:
- logs = expected_logs[func_name]
-
- OutputCapture().assert_outputs(self,
- func,
- args=args,
- expected_stdout=expected_stdout.get(func_name, ""),
- expected_stderr=expected_stderr.get(func_name, ""),
- expected_exception=exception,
- expected_logs=logs)
-
- def _default_begin_work_queue_stderr(self, name):
- string_replacements = {"name": name}
- return "MOCK: update_status: %(name)s Starting Queue\n" % string_replacements
-
- def _default_begin_work_queue_logs(self, name):
- checkout_dir = '/mock-checkout'
- string_replacements = {"name": name, 'checkout_dir': checkout_dir}
- return "CAUTION: %(name)s will discard all local changes in \"%(checkout_dir)s\"\nRunning WebKit %(name)s.\nMOCK: update_status: %(name)s Starting Queue\n" % string_replacements
-
- def assert_queue_outputs(self, queue, args=None, work_item=None, expected_stdout=None, expected_stderr=None, expected_exceptions=None, expected_logs=None, options=None, tool=None):
- if not tool:
- tool = MockTool()
- # This is a hack to make it easy for callers to not have to setup a custom MockFileSystem just to test the commit-queue
- # the cq tries to read the layout test results, and will hit a KeyError in MockFileSystem if we don't do this.
- tool.filesystem.write_text_file('/mock-results/full_results.json', "")
- if not expected_stdout:
- expected_stdout = {}
- if not expected_stderr:
- expected_stderr = {}
- if not args:
- args = []
- if not options:
- options = Mock()
- options.port = None
- if not work_item:
- work_item = self.mock_work_item
- tool.user.prompt = lambda message: "yes"
-
- queue.execute(options, args, tool, engine=MockQueueEngine)
-
- self.assert_outputs(queue.queue_log_path, "queue_log_path", [], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.work_item_log_path, "work_item_log_path", [work_item], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.begin_work_queue, "begin_work_queue", [], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.should_continue_work_queue, "should_continue_work_queue", [], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.next_work_item, "next_work_item", [], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.process_work_item, "process_work_item", [work_item], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- self.assert_outputs(queue.handle_unexpected_error, "handle_unexpected_error", [work_item, "Mock error message"], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
- # Should we have a different function for testing StepSequenceErrorHandlers?
- if isinstance(queue, StepSequenceErrorHandler):
- self.assert_outputs(queue.handle_script_error, "handle_script_error", [tool, {"patch": self.mock_work_item}, ScriptError(message="ScriptError error message", script_args="MockErrorCommand", output="MOCK output")], expected_stdout, expected_stderr, expected_exceptions, expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline.py
deleted file mode 100644
index 06d42d097..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/rebaseline.py
+++ /dev/null
@@ -1,496 +0,0 @@
-# Copyright (c) 2010 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.
-
-import json
-import logging
-import optparse
-import sys
-
-from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.layout_tests.controllers.test_result_writer import TestResultWriter
-from webkitpy.layout_tests.models import test_failures
-from webkitpy.layout_tests.models.test_expectations import TestExpectations, BASELINE_SUFFIX_LIST
-from webkitpy.port import builders
-from webkitpy.port import factory
-from webkitpy.tool.multicommandtool import Command
-
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: Should TestResultWriter know how to compute this string?
-def _baseline_name(fs, test_name, suffix):
- return fs.splitext(test_name)[0] + TestResultWriter.FILENAME_SUFFIX_EXPECTED + "." + suffix
-
-
-class AbstractRebaseliningCommand(Command):
- # not overriding execute() - pylint: disable=W0223
-
- move_overwritten_baselines_option = optparse.make_option("--move-overwritten-baselines", action="store_true", default=False,
- help="Move overwritten baselines elsewhere in the baseline path. This is for bringing up new ports.")
-
- no_optimize_option = optparse.make_option('--no-optimize', dest='optimize', action='store_false', default=True,
- help=('Do not optimize/de-dup the expectations after rebaselining (default is to de-dup automatically). '
- 'You can use "webkit-patch optimize-baselines" to optimize separately.'))
-
- platform_options = factory.platform_options(use_globs=True)
-
- results_directory_option = optparse.make_option("--results-directory", help="Local results directory to use")
-
- suffixes_option = optparse.make_option("--suffixes", default=','.join(BASELINE_SUFFIX_LIST), action="store",
- help="Comma-separated-list of file types to rebaseline")
-
- def __init__(self, options=None):
- super(AbstractRebaseliningCommand, self).__init__(options=options)
- self._baseline_suffix_list = BASELINE_SUFFIX_LIST
-
-
-class RebaselineTest(AbstractRebaseliningCommand):
- name = "rebaseline-test-internal"
- help_text = "Rebaseline a single test from a buildbot. Only intended for use by other webkit-patch commands."
-
- def __init__(self):
- super(RebaselineTest, self).__init__(options=[
- self.no_optimize_option,
- self.results_directory_option,
- self.suffixes_option,
- optparse.make_option("--builder", help="Builder to pull new baselines from"),
- optparse.make_option("--move-overwritten-baselines-to", action="append", default=[],
- help="Platform to move existing baselines to before rebaselining. This is for bringing up new ports."),
- optparse.make_option("--test", help="Test to rebaseline"),
- ])
- self._scm_changes = {'add': []}
-
- def _results_url(self, builder_name):
- return self._tool.buildbot.builder_with_name(builder_name).latest_layout_test_results_url()
-
- def _baseline_directory(self, builder_name):
- port = self._tool.port_factory.get_from_builder_name(builder_name)
- override_dir = builders.rebaseline_override_dir(builder_name)
- if override_dir:
- return self._tool.filesystem.join(port.layout_tests_dir(), 'platform', override_dir)
- return port.baseline_version_dir()
-
- def _copy_existing_baseline(self, move_overwritten_baselines_to, test_name, suffix):
- old_baselines = []
- new_baselines = []
-
- # Need to gather all the baseline paths before modifying the filesystem since
- # the modifications can affect the results of port.expected_filename.
- for platform in move_overwritten_baselines_to:
- port = self._tool.port_factory.get(platform)
- old_baseline = port.expected_filename(test_name, "." + suffix)
- if not self._tool.filesystem.exists(old_baseline):
- _log.debug("No existing baseline for %s." % test_name)
- continue
-
- new_baseline = self._tool.filesystem.join(port.baseline_path(), self._file_name_for_expected_result(test_name, suffix))
- if self._tool.filesystem.exists(new_baseline):
- _log.debug("Existing baseline at %s, not copying over it." % new_baseline)
- continue
-
- old_baselines.append(old_baseline)
- new_baselines.append(new_baseline)
-
- for i in range(len(old_baselines)):
- old_baseline = old_baselines[i]
- new_baseline = new_baselines[i]
-
- _log.debug("Copying baseline from %s to %s." % (old_baseline, new_baseline))
- self._tool.filesystem.maybe_make_directory(self._tool.filesystem.dirname(new_baseline))
- self._tool.filesystem.copyfile(old_baseline, new_baseline)
- if not self._tool.scm().exists(new_baseline):
- self._add_to_scm(new_baseline)
-
- def _save_baseline(self, data, target_baseline):
- if not data:
- return
- filesystem = self._tool.filesystem
- filesystem.maybe_make_directory(filesystem.dirname(target_baseline))
- filesystem.write_binary_file(target_baseline, data)
- if not self._tool.scm().exists(target_baseline):
- self._add_to_scm(target_baseline)
-
- def _add_to_scm(self, path):
- self._scm_changes['add'].append(path)
-
- def _update_expectations_file(self, builder_name, test_name):
- port = self._tool.port_factory.get_from_builder_name(builder_name)
-
- # Since rebaseline-test-internal can be called multiple times in parallel,
- # we need to ensure that we're not trying to update the expectations file
- # concurrently as well.
- # FIXME: We should rework the code to not need this; maybe just download
- # the files in parallel and rebaseline local files serially?
- try:
- path = port.path_to_test_expectations_file()
- lock = self._tool.make_file_lock(path + '.lock')
- lock.acquire_lock()
- expectations = TestExpectations(port, include_generic=False, include_overrides=False)
- for test_configuration in port.all_test_configurations():
- if test_configuration.version == port.test_configuration().version:
- expectationsString = expectations.remove_configuration_from_test(test_name, test_configuration)
-
- self._tool.filesystem.write_text_file(path, expectationsString)
- finally:
- lock.release_lock()
-
- def _test_root(self, test_name):
- return self._tool.filesystem.splitext(test_name)[0]
-
- def _file_name_for_actual_result(self, test_name, suffix):
- return "%s-actual.%s" % (self._test_root(test_name), suffix)
-
- def _file_name_for_expected_result(self, test_name, suffix):
- return "%s-expected.%s" % (self._test_root(test_name), suffix)
-
- def _rebaseline_test(self, builder_name, test_name, move_overwritten_baselines_to, suffix, results_url):
- baseline_directory = self._baseline_directory(builder_name)
-
- source_baseline = "%s/%s" % (results_url, self._file_name_for_actual_result(test_name, suffix))
- target_baseline = self._tool.filesystem.join(baseline_directory, self._file_name_for_expected_result(test_name, suffix))
-
- if move_overwritten_baselines_to:
- self._copy_existing_baseline(move_overwritten_baselines_to, test_name, suffix)
-
- _log.debug("Retrieving %s." % source_baseline)
- self._save_baseline(self._tool.web.get_binary(source_baseline, convert_404_to_None=True), target_baseline)
-
- def _rebaseline_test_and_update_expectations(self, options):
- if options.results_directory:
- results_url = 'file://' + options.results_directory
- else:
- results_url = self._results_url(options.builder)
- self._baseline_suffix_list = options.suffixes.split(',')
- for suffix in self._baseline_suffix_list:
- self._rebaseline_test(options.builder, options.test, options.move_overwritten_baselines_to, suffix, results_url)
- self._update_expectations_file(options.builder, options.test)
-
- def execute(self, options, args, tool):
- self._rebaseline_test_and_update_expectations(options)
- print json.dumps(self._scm_changes)
-
-
-class OptimizeBaselines(AbstractRebaseliningCommand):
- name = "optimize-baselines"
- help_text = "Reshuffles the baselines for the given tests to use as litte space on disk as possible."
- argument_names = "TEST_NAMES"
-
- def __init__(self):
- super(OptimizeBaselines, self).__init__(options=[self.suffixes_option] + self.platform_options)
-
- def _optimize_baseline(self, optimizer, test_name):
- for suffix in self._baseline_suffix_list:
- baseline_name = _baseline_name(self._tool.filesystem, test_name, suffix)
- if not optimizer.optimize(baseline_name):
- print "Heuristics failed to optimize %s" % baseline_name
-
- def execute(self, options, args, tool):
- self._baseline_suffix_list = options.suffixes.split(',')
- port_names = tool.port_factory.all_port_names(options.platform)
- if not port_names:
- print "No port names match '%s'" % options.platform
- return
-
- optimizer = BaselineOptimizer(tool, port_names)
- port = tool.port_factory.get(port_names[0])
- for test_name in port.tests(args):
- _log.info("Optimizing %s" % test_name)
- self._optimize_baseline(optimizer, test_name)
-
-
-class AnalyzeBaselines(AbstractRebaseliningCommand):
- name = "analyze-baselines"
- help_text = "Analyzes the baselines for the given tests and prints results that are identical."
- argument_names = "TEST_NAMES"
-
- def __init__(self):
- super(AnalyzeBaselines, self).__init__(options=[
- self.suffixes_option,
- optparse.make_option('--missing', action='store_true', default=False, help='show missing baselines as well'),
- ] + self.platform_options)
- self._optimizer_class = BaselineOptimizer # overridable for testing
- self._baseline_optimizer = None
- self._port = None
-
- def _write(self, msg):
- print msg
-
- def _analyze_baseline(self, options, test_name):
- for suffix in self._baseline_suffix_list:
- baseline_name = _baseline_name(self._tool.filesystem, test_name, suffix)
- results_by_directory = self._baseline_optimizer.read_results_by_directory(baseline_name)
- if results_by_directory:
- self._write("%s:" % baseline_name)
- self._baseline_optimizer.write_by_directory(results_by_directory, self._write, " ")
- elif options.missing:
- self._write("%s: (no baselines found)" % baseline_name)
-
- def execute(self, options, args, tool):
- self._baseline_suffix_list = options.suffixes.split(',')
- port_names = tool.port_factory.all_port_names(options.platform)
- if not port_names:
- print "No port names match '%s'" % options.platform
- return
-
- self._baseline_optimizer = self._optimizer_class(tool, port_names)
- self._port = tool.port_factory.get(port_names[0])
- for test_name in self._port.tests(args):
- self._analyze_baseline(options, test_name)
-
-
-class AbstractParallelRebaselineCommand(AbstractRebaseliningCommand):
- # not overriding execute() - pylint: disable=W0223
-
- def _run_webkit_patch(self, args, verbose):
- try:
- verbose_args = ['--verbose'] if verbose else []
- stderr = self._tool.executive.run_command([self._tool.path()] + verbose_args + args, cwd=self._tool.scm().checkout_root, return_stderr=True)
- for line in stderr.splitlines():
- print >> sys.stderr, line
- except ScriptError, e:
- _log.error(e)
-
- def _builders_to_fetch_from(self, builders_to_check):
- # This routine returns the subset of builders that will cover all of the baseline search paths
- # used in the input list. In particular, if the input list contains both Release and Debug
- # versions of a configuration, we *only* return the Release version (since we don't save
- # debug versions of baselines).
- release_builders = set()
- debug_builders = set()
- builders_to_fallback_paths = {}
- for builder in builders_to_check:
- port = self._tool.port_factory.get_from_builder_name(builder)
- if port.test_configuration().build_type == 'Release':
- release_builders.add(builder)
- else:
- debug_builders.add(builder)
- for builder in list(release_builders) + list(debug_builders):
- port = self._tool.port_factory.get_from_builder_name(builder)
- fallback_path = port.baseline_search_path()
- if fallback_path not in builders_to_fallback_paths.values():
- builders_to_fallback_paths[builder] = fallback_path
- return builders_to_fallback_paths.keys()
-
- def _rebaseline_commands(self, test_list, options):
-
- path_to_webkit_patch = self._tool.path()
- cwd = self._tool.scm().checkout_root
- commands = []
- for test in test_list:
- for builder in self._builders_to_fetch_from(test_list[test]):
- suffixes = ','.join(test_list[test][builder])
- cmd_line = [path_to_webkit_patch, 'rebaseline-test-internal', '--suffixes', suffixes, '--builder', builder, '--test', test]
- if options.move_overwritten_baselines:
- move_overwritten_baselines_to = builders.move_overwritten_baselines_to(builder)
- for platform in move_overwritten_baselines_to:
- cmd_line.extend(['--move-overwritten-baselines-to', platform])
- if options.results_directory:
- cmd_line.extend(['--results-directory', options.results_directory])
- if options.verbose:
- cmd_line.append('--verbose')
- commands.append(tuple([cmd_line, cwd]))
- return commands
-
- def _files_to_add(self, command_results):
- files_to_add = set()
- for output in [result[1].split('\n') for result in command_results]:
- file_added = False
- for line in output:
- try:
- if line:
- files_to_add.update(json.loads(line)['add'])
- file_added = True
- except ValueError:
- _log.debug('"%s" is not a JSON object, ignoring' % line)
-
- if not file_added:
- _log.debug('Could not add file based off output "%s"' % output)
-
-
- return list(files_to_add)
-
- def _optimize_baselines(self, test_list, verbose=False):
- # We don't run this in parallel because modifying the SCM in parallel is unreliable.
- for test in test_list:
- all_suffixes = set()
- for builder in self._builders_to_fetch_from(test_list[test]):
- all_suffixes.update(test_list[test][builder])
- # FIXME: We should propagate the platform options as well.
- self._run_webkit_patch(['optimize-baselines', '--suffixes', ','.join(all_suffixes), test], verbose)
-
- def _rebaseline(self, options, test_list):
- for test, builders_to_check in sorted(test_list.items()):
- _log.info("Rebaselining %s" % test)
- for builder, suffixes in sorted(builders_to_check.items()):
- _log.debug(" %s: %s" % (builder, ",".join(suffixes)))
-
- commands = self._rebaseline_commands(test_list, options)
- command_results = self._tool.executive.run_in_parallel(commands)
-
- log_output = '\n'.join(result[2] for result in command_results).replace('\n\n', '\n')
- for line in log_output.split('\n'):
- if line:
- print >> sys.stderr, line # FIXME: Figure out how to log properly.
-
- files_to_add = self._files_to_add(command_results)
- if files_to_add:
- self._tool.scm().add_list(list(files_to_add))
-
- if options.optimize:
- self._optimize_baselines(test_list, options.verbose)
-
-
-class RebaselineJson(AbstractParallelRebaselineCommand):
- name = "rebaseline-json"
- help_text = "Rebaseline based off JSON passed to stdin. Intended to only be called from other scripts."
-
- def __init__(self,):
- super(RebaselineJson, self).__init__(options=[
- self.move_overwritten_baselines_option,
- self.no_optimize_option,
- self.results_directory_option,
- ])
-
- def execute(self, options, args, tool):
- self._rebaseline(options, json.loads(sys.stdin.read()))
-
-
-class RebaselineExpectations(AbstractParallelRebaselineCommand):
- name = "rebaseline-expectations"
- help_text = "Rebaselines the tests indicated in TestExpectations."
-
- def __init__(self):
- super(RebaselineExpectations, self).__init__(options=[
- self.move_overwritten_baselines_option,
- self.no_optimize_option,
- ] + self.platform_options)
- self._test_list = None
-
- def _update_expectations_files(self, port_name):
- port = self._tool.port_factory.get(port_name)
-
- expectations = TestExpectations(port)
- for path in port.expectations_dict():
- if self._tool.filesystem.exists(path):
- self._tool.filesystem.write_text_file(path, expectations.remove_rebaselined_tests(expectations.get_rebaselining_failures(), path))
-
- def _tests_to_rebaseline(self, port):
- tests_to_rebaseline = {}
- expectations = TestExpectations(port, include_overrides=True)
- for test in expectations.get_rebaselining_failures():
- tests_to_rebaseline[test] = TestExpectations.suffixes_for_expectations(expectations.get_expectations(test))
- return tests_to_rebaseline
-
- def _add_tests_to_rebaseline_for_port(self, port_name):
- builder_name = builders.builder_name_for_port_name(port_name)
- if not builder_name:
- return
- tests = self._tests_to_rebaseline(self._tool.port_factory.get(port_name)).items()
-
- if tests:
- _log.info("Retrieving results for %s from %s." % (port_name, builder_name))
-
- for test_name, suffixes in tests:
- _log.info(" %s (%s)" % (test_name, ','.join(suffixes)))
- if test_name not in self._test_list:
- self._test_list[test_name] = {}
- self._test_list[test_name][builder_name] = suffixes
-
- def execute(self, options, args, tool):
- options.results_directory = None
- self._test_list = {}
- port_names = tool.port_factory.all_port_names(options.platform)
- for port_name in port_names:
- self._add_tests_to_rebaseline_for_port(port_name)
- if not self._test_list:
- _log.warning("Did not find any tests marked Rebaseline.")
- return
-
- self._rebaseline(options, self._test_list)
-
- for port_name in port_names:
- self._update_expectations_files(port_name)
-
-
-class Rebaseline(AbstractParallelRebaselineCommand):
- name = "rebaseline"
- help_text = "Rebaseline tests with results from the build bots. Shows the list of failing tests on the builders if no test names are provided."
- argument_names = "[TEST_NAMES]"
-
- def __init__(self):
- super(Rebaseline, self).__init__(options=[
- self.move_overwritten_baselines_option,
- self.no_optimize_option,
- # FIXME: should we support the platform options in addition to (or instead of) --builders?
- self.suffixes_option,
- optparse.make_option("--builders", default=None, action="append", help="Comma-separated-list of builders to pull new baselines from (can also be provided multiple times)"),
- ])
-
- def _builders_to_pull_from(self):
- webkit_buildbot_builder_names = []
- for name in builders.all_builder_names():
- webkit_buildbot_builder_names.append(name)
-
- titles = ["build.webkit.org bots"]
- lists = [webkit_buildbot_builder_names]
-
- chosen_names = self._tool.user.prompt_with_multiple_lists("Which builder to pull results from:", titles, lists, can_choose_multiple=True)
- return [self._builder_with_name(name) for name in chosen_names]
-
- def _builder_with_name(self, name):
- return self._tool.buildbot.builder_with_name(name)
-
- def _tests_to_update(self, builder):
- failing_tests = builder.latest_layout_test_results().tests_matching_failure_types([test_failures.FailureTextMismatch])
- return self._tool.user.prompt_with_list("Which test(s) to rebaseline for %s:" % builder.name(), failing_tests, can_choose_multiple=True)
-
- def execute(self, options, args, tool):
- options.results_directory = None
- if options.builders:
- builders_to_check = []
- for builder_names in options.builders:
- builders_to_check += [self._builder_with_name(name) for name in builder_names.split(",")]
- else:
- builders_to_check = self._builders_to_pull_from()
-
- test_list = {}
- suffixes_to_update = options.suffixes.split(",")
-
- for builder in builders_to_check:
- tests = args or self._tests_to_update(builder)
- for test in tests:
- if test not in test_list:
- test_list[test] = {}
- test_list[test][builder.name()] = suffixes_to_update
-
- if options.verbose:
- _log.debug("rebaseline-json: " + str(test_list))
-
- self._rebaseline(options, test_list)
diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py b/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
deleted file mode 100644
index 43a8786fe..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/rebaseline_unittest.py
+++ /dev/null
@@ -1,401 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.checkout.baselineoptimizer import BaselineOptimizer
-from webkitpy.common.net.buildbot.buildbot_mock import MockBuilder
-from webkitpy.common.system.executive_mock import MockExecutive2
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.rebaseline import *
-from webkitpy.tool.mocktool import MockTool, MockOptions
-
-
-class _BaseTestCase(unittest.TestCase):
- MOCK_WEB_RESULT = 'MOCK Web result, convert 404 to None=True'
- WEB_PREFIX = 'http://example.com/f/builders/Apple Lion Release WK1 (Tests)/results/layout-test-results'
-
- command_constructor = None
-
- def setUp(self):
- self.tool = MockTool()
- self.command = self.command_constructor() # lint warns that command_constructor might not be set, but this is intentional; pylint: disable=E1102
- self.command.bind_to_tool(self.tool)
- self.lion_port = self.tool.port_factory.get_from_builder_name("Apple Lion Release WK1 (Tests)")
- self.lion_expectations_path = self.lion_port.path_to_test_expectations_file()
-
- # FIXME: we should override builders._exact_matches here to point to a set
- # of test ports and restore the value in tearDown(), and that way the
- # individual tests wouldn't have to worry about it.
-
- def _expand(self, path):
- if self.tool.filesystem.isabs(path):
- return path
- return self.tool.filesystem.join(self.lion_port.layout_tests_dir(), path)
-
- def _read(self, path):
- return self.tool.filesystem.read_text_file(self._expand(path))
-
- def _write(self, path, contents):
- self.tool.filesystem.write_text_file(self._expand(path), contents)
-
- def _zero_out_test_expectations(self):
- for port_name in self.tool.port_factory.all_port_names():
- port = self.tool.port_factory.get(port_name)
- for path in port.expectations_files():
- self._write(path, '')
- self.tool.filesystem.written_files = {}
-
-
-class TestRebaselineTest(_BaseTestCase):
- command_constructor = RebaselineTest # AKA webkit-patch rebaseline-test-internal
-
- def setUp(self):
- super(TestRebaselineTest, self).setUp()
- self.options = MockOptions(builder="Apple Lion Release WK1 (Tests)", test="userscripts/another-test.html", suffixes="txt",
- move_overwritten_baselines_to=None, results_directory=None)
-
- def test_baseline_directory(self):
- command = self.command
- self.assertMultiLineEqual(command._baseline_directory("Apple Win XP Debug (Tests)"), "/mock-checkout/LayoutTests/platform/win-xp")
- self.assertMultiLineEqual(command._baseline_directory("Apple Win 7 Release (Tests)"), "/mock-checkout/LayoutTests/platform/win")
- self.assertMultiLineEqual(command._baseline_directory("Apple Lion Release WK1 (Tests)"), "/mock-checkout/LayoutTests/platform/mac-lion")
- self.assertMultiLineEqual(command._baseline_directory("Apple Lion Release WK2 (Tests)"), "/mock-checkout/LayoutTests/platform/mac-wk2")
- self.assertMultiLineEqual(command._baseline_directory("Apple MountainLion Release WK1 (Tests)"), "/mock-checkout/LayoutTests/platform/mac")
- self.assertMultiLineEqual(command._baseline_directory("Apple MountainLion Release WK2 (Tests)"), "/mock-checkout/LayoutTests/platform/mac")
- self.assertMultiLineEqual(command._baseline_directory("GTK Linux 64-bit Debug"), "/mock-checkout/LayoutTests/platform/gtk-wk1")
- self.assertMultiLineEqual(command._baseline_directory("GTK Linux 64-bit Release WK2 (Tests)"), "/mock-checkout/LayoutTests/platform/gtk-wk2")
- self.assertMultiLineEqual(command._baseline_directory("EFL Linux 64-bit Release WK2"), "/mock-checkout/LayoutTests/platform/efl-wk2")
- self.assertMultiLineEqual(command._baseline_directory("Qt Linux Release"), "/mock-checkout/LayoutTests/platform/qt")
-
- def test_rebaseline_updates_expectations_file_noop(self):
- self._zero_out_test_expectations()
- self._write(self.lion_expectations_path, """Bug(B) [ Mac Linux XP Debug ] fast/dom/Window/window-postmessage-clone-really-deep-array.html [ Pass ]
-Bug(A) [ Debug ] : fast/css/large-list-of-rules-crash.html [ Failure ]
-""")
- self._write("fast/dom/Window/window-postmessage-clone-really-deep-array.html", "Dummy test contents")
- self._write("fast/css/large-list-of-rules-crash.html", "Dummy test contents")
- self._write("userscripts/another-test.html", "Dummy test contents")
-
- self.options.suffixes = "png,wav,txt"
- self.command._rebaseline_test_and_update_expectations(self.options)
-
- self.assertItemsEqual(self.tool.web.urls_fetched,
- [self.WEB_PREFIX + '/userscripts/another-test-actual.png',
- self.WEB_PREFIX + '/userscripts/another-test-actual.wav',
- self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])
- new_expectations = self._read(self.lion_expectations_path)
- self.assertMultiLineEqual(new_expectations, """Bug(B) [ Mac Linux XP Debug ] fast/dom/Window/window-postmessage-clone-really-deep-array.html [ Pass ]
-Bug(A) [ Debug ] : fast/css/large-list-of-rules-crash.html [ Failure ]
-""")
-
- def test_rebaseline_updates_expectations_file(self):
- self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
- self._write("userscripts/another-test.html", "Dummy test contents")
-
- self.options.suffixes = 'png,wav,txt'
- self.command._rebaseline_test_and_update_expectations(self.options)
-
- self.assertItemsEqual(self.tool.web.urls_fetched,
- [self.WEB_PREFIX + '/userscripts/another-test-actual.png',
- self.WEB_PREFIX + '/userscripts/another-test-actual.wav',
- self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])
- new_expectations = self._read(self.lion_expectations_path)
- self.assertMultiLineEqual(new_expectations, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
-
- def test_rebaseline_does_not_include_overrides(self):
- self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nBug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
- self._write("userscripts/another-test.html", "Dummy test contents")
-
- self.options.suffixes = 'png,wav,txt'
- self.command._rebaseline_test_and_update_expectations(self.options)
-
- self.assertItemsEqual(self.tool.web.urls_fetched,
- [self.WEB_PREFIX + '/userscripts/another-test-actual.png',
- self.WEB_PREFIX + '/userscripts/another-test-actual.wav',
- self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])
-
- new_expectations = self._read(self.lion_expectations_path)
- self.assertMultiLineEqual(new_expectations, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nBug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
-
- def test_rebaseline_test(self):
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", None, "txt", self.WEB_PREFIX)
- self.assertItemsEqual(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])
-
- def test_rebaseline_test_with_results_directory(self):
- self._write(self.lion_expectations_path, "Bug(x) [ Mac ] userscripts/another-test.html [ ImageOnlyFailure ]\nbug(z) [ Linux ] userscripts/another-test.html [ ImageOnlyFailure ]\n")
- self.options.results_directory = '/tmp'
- self.command._rebaseline_test_and_update_expectations(self.options)
- self.assertItemsEqual(self.tool.web.urls_fetched, ['file:///tmp/userscripts/another-test-actual.txt'])
-
- def test_rebaseline_test_and_print_scm_changes(self):
- self.command._print_scm_changes = True
- self.command._scm_changes = {'add': [], 'delete': []}
- self.tool._scm.exists = lambda x: False
-
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", None, "txt", None)
-
- self.assertDictEqual(self.command._scm_changes, {'add': ['/mock-checkout/LayoutTests/platform/mac-lion/userscripts/another-test-expected.txt'], 'delete': []})
-
- def test_rebaseline_and_copy_test(self):
- self._write("userscripts/another-test-expected.txt", "generic result")
-
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", ["mac-lion-wk2"], "txt", None)
-
- self.assertMultiLineEqual(self._read('platform/mac-lion/userscripts/another-test-expected.txt'), self.MOCK_WEB_RESULT)
- self.assertMultiLineEqual(self._read('platform/mac-wk2/userscripts/another-test-expected.txt'), 'generic result')
-
- def test_rebaseline_and_copy_test_no_existing_result(self):
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", ["mac-lion-wk2"], "txt", None)
-
- self.assertMultiLineEqual(self._read('platform/mac-lion/userscripts/another-test-expected.txt'), self.MOCK_WEB_RESULT)
- self.assertFalse(self.tool.filesystem.exists(self._expand('platform/mac-lion-wk2/userscripts/another-test-expected.txt')))
-
- def test_rebaseline_and_copy_test_with_lion_result(self):
- self._write("platform/mac-lion/userscripts/another-test-expected.txt", "original lion result")
-
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", ["mac-lion-wk2"], "txt", self.WEB_PREFIX)
-
- self.assertItemsEqual(self.tool.web.urls_fetched, [self.WEB_PREFIX + '/userscripts/another-test-actual.txt'])
- self.assertMultiLineEqual(self._read("platform/mac-wk2/userscripts/another-test-expected.txt"), "original lion result")
- self.assertMultiLineEqual(self._read("platform/mac-lion/userscripts/another-test-expected.txt"), self.MOCK_WEB_RESULT)
-
- def test_rebaseline_and_copy_no_overwrite_test(self):
- self._write("platform/mac-lion/userscripts/another-test-expected.txt", "original lion result")
- self._write("platform/mac-lion-wk2/userscripts/another-test-expected.txt", "original lion wk2 result")
-
- self.command._rebaseline_test("Apple Lion Release WK1 (Tests)", "userscripts/another-test.html", ["mac-lion-wk2"], "txt", None)
-
- self.assertMultiLineEqual(self._read("platform/mac-lion-wk2/userscripts/another-test-expected.txt"), "original lion wk2 result")
- self.assertMultiLineEqual(self._read("platform/mac-lion/userscripts/another-test-expected.txt"), self.MOCK_WEB_RESULT)
-
- def test_rebaseline_test_internal_with_move_overwritten_baselines_to(self):
- self.tool.executive = MockExecutive2()
-
- # FIXME: it's confusing that this is the test- port, and not the regular lion port. Really all of the tests should be using the test ports.
- port = self.tool.port_factory.get('test-mac-snowleopard')
- self._write(port._filesystem.join(port.layout_tests_dir(), 'platform/test-mac-snowleopard/failures/expected/image-expected.txt'), 'original snowleopard result')
-
- old_exact_matches = builders._exact_matches
- oc = OutputCapture()
- try:
- builders._exact_matches = {
- "MOCK Leopard": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
- "MOCK SnowLeopard": {"port_name": "test-mac-snowleopard", "specifiers": set(["mock-specifier"])},
- }
-
- options = MockOptions(optimize=True, builder="MOCK SnowLeopard", suffixes="txt",
- move_overwritten_baselines_to=["test-mac-leopard"], verbose=True, test="failures/expected/image.html",
- results_directory=None)
-
- oc.capture_output()
- self.command.execute(options, [], self.tool)
- finally:
- out, _, _ = oc.restore_output()
- builders._exact_matches = old_exact_matches
-
- self.assertMultiLineEqual(self._read(self.tool.filesystem.join(port.layout_tests_dir(), 'platform/test-mac-leopard/failures/expected/image-expected.txt')), 'original snowleopard result')
- self.assertMultiLineEqual(out, '{"add": []}\n')
-
-
-class TestRebaselineJson(_BaseTestCase):
- command_constructor = RebaselineJson
-
- def setUp(self):
- super(TestRebaselineJson, self).setUp()
- self.tool.executive = MockExecutive2()
- self.old_exact_matches = builders._exact_matches
- builders._exact_matches = {
- "MOCK builder": {"port_name": "test-mac-snowleopard", "specifiers": set(["mock-specifier"]),
- "move_overwritten_baselines_to": ["test-mac-leopard"]},
- "MOCK builder (Debug)": {"port_name": "test-mac-snowleopard", "specifiers": set(["mock-specifier", "debug"])},
- }
-
- def tearDown(self):
- builders._exact_matches = self.old_exact_matches
- super(TestRebaselineJson, self).tearDown()
-
- def test_rebaseline_all(self):
- options = MockOptions(optimize=True, verbose=True, move_overwritten_baselines=False, results_directory=None)
- self.command._rebaseline(options, {"user-scripts/another-test.html": {"MOCK builder": ["txt", "png"]}})
-
- # Note that we have one run_in_parallel() call followed by a run_command()
- self.assertEqual(self.tool.executive.calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder', '--test', 'user-scripts/another-test.html', '--verbose']],
- ['echo', '--verbose', 'optimize-baselines', '--suffixes', 'txt,png', 'user-scripts/another-test.html']])
-
- def test_rebaseline_debug(self):
- options = MockOptions(optimize=True, verbose=True, move_overwritten_baselines=False, results_directory=None)
- self.command._rebaseline(options, {"user-scripts/another-test.html": {"MOCK builder (Debug)": ["txt", "png"]}})
-
- # Note that we have one run_in_parallel() call followed by a run_command()
- self.assertEqual(self.tool.executive.calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder (Debug)', '--test', 'user-scripts/another-test.html', '--verbose']],
- ['echo', '--verbose', 'optimize-baselines', '--suffixes', 'txt,png', 'user-scripts/another-test.html']])
-
- def test_move_overwritten(self):
- options = MockOptions(optimize=True, verbose=True, move_overwritten_baselines=True, results_directory=None)
- self.command._rebaseline(options, {"user-scripts/another-test.html": {"MOCK builder": ["txt", "png"]}})
-
- # Note that we have one run_in_parallel() call followed by a run_command()
- self.assertEqual(self.tool.executive.calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder', '--test', 'user-scripts/another-test.html', '--move-overwritten-baselines-to', 'test-mac-leopard', '--verbose']],
- ['echo', '--verbose', 'optimize-baselines', '--suffixes', 'txt,png', 'user-scripts/another-test.html']])
-
- def test_no_optimize(self):
- options = MockOptions(optimize=False, verbose=True, move_overwritten_baselines=False, results_directory=None)
- self.command._rebaseline(options, {"user-scripts/another-test.html": {"MOCK builder (Debug)": ["txt", "png"]}})
-
- # Note that we have only one run_in_parallel() call
- self.assertEqual(self.tool.executive.calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder (Debug)', '--test', 'user-scripts/another-test.html', '--verbose']]])
-
- def test_results_directory(self):
- options = MockOptions(optimize=False, verbose=True, move_overwritten_baselines=False, results_directory='/tmp')
- self.command._rebaseline(options, {"user-scripts/another-test.html": {"MOCK builder": ["txt", "png"]}})
-
- # Note that we have only one run_in_parallel() call
- self.assertEqual(self.tool.executive.calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder', '--test', 'user-scripts/another-test.html', '--results-directory', '/tmp', '--verbose']]])
-
-
-class TestRebaseline(_BaseTestCase):
- # This command shares most of its logic with RebaselineJson, so these tests just test what is different.
-
- command_constructor = Rebaseline # AKA webkit-patch rebaseline
-
- def test_tests_to_update(self):
- build = Mock()
- OutputCapture().assert_outputs(self, self.command._tests_to_update, [build])
-
- def test_rebaseline(self):
- self.command._builders_to_pull_from = lambda: [MockBuilder('MOCK builder')]
- self.command._tests_to_update = lambda builder: ['mock/path/to/test.html']
-
- self._zero_out_test_expectations()
-
- old_exact_matches = builders._exact_matches
- oc = OutputCapture()
- try:
- builders._exact_matches = {
- "MOCK builder": {"port_name": "test-mac-leopard", "specifiers": set(["mock-specifier"])},
- }
- oc.capture_output()
- self.command.execute(MockOptions(optimize=False, builders=None, suffixes="txt,png", verbose=True, move_overwritten_baselines=False), [], self.tool)
- finally:
- oc.restore_output()
- builders._exact_matches = old_exact_matches
-
- calls = filter(lambda x: x != ['qmake', '-v'] and x[0] != 'perl', self.tool.executive.calls)
- self.assertEqual(calls,
- [[['echo', 'rebaseline-test-internal', '--suffixes', 'txt,png', '--builder', 'MOCK builder', '--test', 'mock/path/to/test.html', '--verbose']]])
-
-
-class TestRebaselineExpectations(_BaseTestCase):
- command_constructor = RebaselineExpectations
-
- def setUp(self):
- super(TestRebaselineExpectations, self).setUp()
- self.options = MockOptions(optimize=False, builders=None, suffixes=['txt'], verbose=False, platform=None,
- move_overwritten_baselines=False, results_directory=None)
-
- def test_rebaseline_expectations(self):
- self._zero_out_test_expectations()
-
- self.tool.executive = MockExecutive2()
-
- self.command._tests_to_rebaseline = lambda port: {'userscripts/another-test.html': set(['txt']), 'userscripts/images.svg': set(['png'])}
- self.command.execute(self.options, [], self.tool)
-
- # FIXME: change this to use the test- ports.
- calls = filter(lambda x: x != ['qmake', '-v'], self.tool.executive.calls)
- self.assertEqual(len(calls), 1)
- self.assertEqual(len(calls[0]), 22)
-
- def test_rebaseline_expectations_noop(self):
- self._zero_out_test_expectations()
-
- oc = OutputCapture()
- try:
- oc.capture_output()
- self.command.execute(self.options, [], self.tool)
- finally:
- _, _, logs = oc.restore_output()
- self.assertEqual(self.tool.filesystem.written_files, {})
- self.assertEqual(logs, 'Did not find any tests marked Rebaseline.\n')
-
- def disabled_test_overrides_are_included_correctly(self):
- # This tests that the any tests marked as REBASELINE in the overrides are found, but
- # that the overrides do not get written into the main file.
- self._zero_out_test_expectations()
-
- self._write(self.lion_expectations_path, '')
- self.lion_port.expectations_dict = lambda: {
- self.lion_expectations_path: '',
- 'overrides': ('Bug(x) userscripts/another-test.html [ Failure Rebaseline ]\n'
- 'Bug(y) userscripts/test.html [ Crash ]\n')}
- self._write('/userscripts/another-test.html', '')
-
- self.assertDictEqual(self.command._tests_to_rebaseline(self.lion_port), {'userscripts/another-test.html': set(['png', 'txt', 'wav'])})
- self.assertEqual(self._read(self.lion_expectations_path), '')
-
-
-class _FakeOptimizer(BaselineOptimizer):
- def read_results_by_directory(self, baseline_name):
- if baseline_name.endswith('txt'):
- return {'LayoutTests/passes/text.html': '123456',
- 'LayoutTests/platform/test-mac-leopard/passes/text.html': 'abcdef'}
- return {}
-
-
-class TestAnalyzeBaselines(_BaseTestCase):
- command_constructor = AnalyzeBaselines
-
- def setUp(self):
- super(TestAnalyzeBaselines, self).setUp()
- self.port = self.tool.port_factory.get('test')
- self.tool.port_factory.get = (lambda port_name=None, options=None: self.port)
- self.lines = []
- self.command._optimizer_class = _FakeOptimizer
- self.command._write = (lambda msg: self.lines.append(msg)) # pylint bug warning about unnecessary lambda? pylint: disable=W0108
-
- def test_default(self):
- self.command.execute(MockOptions(suffixes='txt', missing=False, platform=None), ['passes/text.html'], self.tool)
- self.assertEqual(self.lines,
- ['passes/text-expected.txt:',
- ' (generic): 123456',
- ' test-mac-leopard: abcdef'])
-
- def test_missing_baselines(self):
- self.command.execute(MockOptions(suffixes='png,txt', missing=True, platform=None), ['passes/text.html'], self.tool)
- self.assertEqual(self.lines,
- ['passes/text-expected.png: (no baselines found)',
- 'passes/text-expected.txt:',
- ' (generic): 123456',
- ' test-mac-leopard: abcdef'])
diff --git a/Tools/Scripts/webkitpy/tool/commands/rebaselineserver.py b/Tools/Scripts/webkitpy/tool/commands/rebaselineserver.py
deleted file mode 100644
index 09c6d0bc6..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/rebaselineserver.py
+++ /dev/null
@@ -1,98 +0,0 @@
-# Copyright (c) 2010 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.
-
-"""Starts a local HTTP server which displays layout test failures (given a test
-results directory), provides comparisons of expected and actual results (both
-images and text) and allows one-click rebaselining of tests."""
-
-from webkitpy.common import system
-from webkitpy.common.net.resultsjsonparser import for_each_test, JSONTestResult
-from webkitpy.layout_tests.layout_package import json_results_generator
-from webkitpy.tool.commands.abstractlocalservercommand import AbstractLocalServerCommand
-from webkitpy.tool.servers.rebaselineserver import get_test_baselines, RebaselineHTTPServer, STATE_NEEDS_REBASELINE
-
-
-class TestConfig(object):
- def __init__(self, test_port, layout_tests_directory, results_directory, platforms, filesystem, scm):
- self.test_port = test_port
- self.layout_tests_directory = layout_tests_directory
- self.results_directory = results_directory
- self.platforms = platforms
- self.filesystem = filesystem
- self.scm = scm
-
-
-class RebaselineServer(AbstractLocalServerCommand):
- name = "rebaseline-server"
- help_text = __doc__
- argument_names = "/path/to/results/directory"
-
- server = RebaselineHTTPServer
-
- def _gather_baselines(self, results_json):
- # Rebaseline server and it's associated JavaScript expected the tests subtree to
- # be key-value pairs instead of hierarchical.
- # FIXME: make the rebaseline server use the hierarchical tree.
- new_tests_subtree = {}
-
- def gather_baselines_for_test(test_name, result_dict):
- result = JSONTestResult(test_name, result_dict)
- if result.did_pass_or_run_as_expected():
- return
- result_dict['state'] = STATE_NEEDS_REBASELINE
- result_dict['baselines'] = get_test_baselines(test_name, self._test_config)
- new_tests_subtree[test_name] = result_dict
-
- for_each_test(results_json['tests'], gather_baselines_for_test)
- results_json['tests'] = new_tests_subtree
-
- def _prepare_config(self, options, args, tool):
- results_directory = args[0]
- filesystem = system.filesystem.FileSystem()
- scm = self._tool.scm()
-
- print 'Parsing full_results.json...'
- results_json_path = filesystem.join(results_directory, 'full_results.json')
- results_json = json_results_generator.load_json(filesystem, results_json_path)
-
- port = tool.port_factory.get()
- layout_tests_directory = port.layout_tests_dir()
- platforms = filesystem.listdir(filesystem.join(layout_tests_directory, 'platform'))
- self._test_config = TestConfig(port, layout_tests_directory, results_directory, platforms, filesystem, scm)
-
- print 'Gathering current baselines...'
- self._gather_baselines(results_json)
-
- return {
- 'test_config': self._test_config,
- "results_json": results_json,
- "platforms_json": {
- 'platforms': platforms,
- 'defaultPlatform': port.name(),
- },
- }
diff --git a/Tools/Scripts/webkitpy/tool/commands/sheriffbot.py b/Tools/Scripts/webkitpy/tool/commands/sheriffbot.py
deleted file mode 100644
index aea3b51bf..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/sheriffbot.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (c) 2009 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.
-
-import logging
-
-from webkitpy.tool.bot.sheriff import Sheriff
-from webkitpy.tool.bot.irc_command import commands as irc_commands
-from webkitpy.tool.bot.ircbot import IRCBot
-from webkitpy.tool.commands.queues import AbstractQueue
-from webkitpy.tool.commands.stepsequence import StepSequenceErrorHandler
-
-_log = logging.getLogger(__name__)
-
-
-class SheriffBot(AbstractQueue, StepSequenceErrorHandler):
- name = "webkitbot"
- watchers = AbstractQueue.watchers + [
- "abarth@webkit.org",
- "eric@webkit.org",
- ]
-
- # AbstractQueue methods
-
- def begin_work_queue(self):
- AbstractQueue.begin_work_queue(self)
- self._sheriff = Sheriff(self._tool, self)
- self._irc_bot = IRCBot(self.name, self._tool, self._sheriff, irc_commands)
- self._tool.ensure_irc_connected(self._irc_bot.irc_delegate())
-
- def work_item_log_path(self, failure_map):
- return None
-
- def _is_old_failure(self, revision):
- return self._tool.status_server.svn_revision(revision)
-
- def next_work_item(self):
- self._irc_bot.process_pending_messages()
- return
-
- def process_work_item(self, failure_map):
- return True
-
- def handle_unexpected_error(self, failure_map, message):
- _log.error(message)
-
- # StepSequenceErrorHandler methods
-
- @classmethod
- def handle_script_error(cls, tool, state, script_error):
- # Ideally we would post some information to IRC about what went wrong
- # here, but we don't have the IRC password in the child process.
- pass
diff --git a/Tools/Scripts/webkitpy/tool/commands/sheriffbot_unittest.py b/Tools/Scripts/webkitpy/tool/commands/sheriffbot_unittest.py
deleted file mode 100644
index 76caaf3c0..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/sheriffbot_unittest.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.commands.queuestest import QueuesTest, MockQueueEngine
-from webkitpy.tool.commands import SheriffBot
-from webkitpy.tool.mocktool import MockTool, MockOptions
-from webkitpy.tool.bot.irc_command import Rollout
-
-
-class SheriffBotTest(QueuesTest):
- def test_command_aliases(self):
- tool = MockTool()
- options = MockOptions()
- options.ensure_value("confirm", False)
- options.ensure_value("seconds_to_sleep", 120)
- sheriffbot = SheriffBot()
- sheriffbot.execute(options, [], tool, MockQueueEngine)
- sheriffbot.begin_work_queue()
- irc_bot = sheriffbot._irc_bot
- # Test Rollout command aliases
- revert_command, args = irc_bot._parse_command_and_args("revert")
- self.assertEqual(revert_command, Rollout)
diff --git a/Tools/Scripts/webkitpy/tool/commands/stepsequence.py b/Tools/Scripts/webkitpy/tool/commands/stepsequence.py
deleted file mode 100644
index 1668cdb63..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/stepsequence.py
+++ /dev/null
@@ -1,86 +0,0 @@
-# Copyright (C) 2009 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.
-
-import logging
-
-from webkitpy.tool import steps
-
-from webkitpy.common.checkout.scm import CheckoutNeedsUpdate
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.bot.queueengine import QueueEngine
-
-_log = logging.getLogger(__name__)
-
-
-class StepSequenceErrorHandler():
- @classmethod
- def handle_script_error(cls, tool, patch, script_error):
- raise NotImplementedError, "subclasses must implement"
-
- @classmethod
- def handle_checkout_needs_update(cls, tool, state, options, error):
- raise NotImplementedError, "subclasses must implement"
-
-
-class StepSequence(object):
- def __init__(self, steps):
- self._steps = steps or []
-
- def options(self):
- collected_options = [
- steps.Options.parent_command,
- steps.Options.quiet,
- ]
- for step in self._steps:
- collected_options = collected_options + step.options()
- # Remove duplicates.
- collected_options = sorted(set(collected_options))
- return collected_options
-
- def _run(self, tool, options, state):
- for step in self._steps:
- step(tool, options).run(state)
-
- def run_and_handle_errors(self, tool, options, state=None):
- if not state:
- state = {}
- try:
- self._run(tool, options, state)
- except CheckoutNeedsUpdate, e:
- _log.info("Commit failed because the checkout is out of date. Please update and try again.")
- if options.parent_command:
- command = tool.command_by_name(options.parent_command)
- command.handle_checkout_needs_update(tool, state, options, e)
- QueueEngine.exit_after_handled_error(e)
- except ScriptError, e:
- if not options.quiet:
- _log.error(e.message_with_output())
- if options.parent_command:
- command = tool.command_by_name(options.parent_command)
- command.handle_script_error(tool, state, e)
- QueueEngine.exit_after_handled_error(e)
diff --git a/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py b/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py
deleted file mode 100644
index 6244c295f..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/suggestnominations.py
+++ /dev/null
@@ -1,305 +0,0 @@
-# Copyright (c) 2011 Google Inc. All rights reserved.
-# Copyright (c) 2011 Code Aurora Forum. 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.
-
-from optparse import make_option
-import re
-
-from webkitpy.common.checkout.changelog import ChangeLogEntry
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.tool.grammar import join_with_separators
-from webkitpy.tool.multicommandtool import Command
-
-
-class CommitLogError(Exception):
- def __init__(self):
- Exception.__init__(self)
-
-
-class CommitLogMissingReviewer(CommitLogError):
- def __init__(self):
- CommitLogError.__init__(self)
-
-
-class AbstractCommitLogCommand(Command):
- _leading_indent_regexp = re.compile(r"^[ ]{4}", re.MULTILINE)
- _reviewed_by_regexp = re.compile(ChangeLogEntry.reviewed_by_regexp, re.MULTILINE)
- _patch_by_regexp = re.compile(r'^Patch by (?P<name>.+?)\s+<(?P<email>[^<>]+)> on (?P<date>\d{4}-\d{2}-\d{2})$', re.MULTILINE)
- _committer_regexp = re.compile(r'^Author: (?P<email>\S+)\s+<[^>]+>$', re.MULTILINE)
- _date_regexp = re.compile(r'^Date: (?P<date>\d{4}-\d{2}-\d{2}) (?P<time>\d{2}:\d{2}:\d{2}) [\+\-]\d{4}$', re.MULTILINE)
- _revision_regexp = re.compile(r'^git-svn-id: http://svn.webkit.org/repository/webkit/trunk@(?P<svnid>\d+) (?P<gitid>[0-9a-f\-]{36})$', re.MULTILINE)
-
- def __init__(self, options=None):
- options = options or []
- options += [
- make_option("--max-commit-age", action="store", dest="max_commit_age", type="int", default=9, help="Specify maximum commit age to consider (in months)."),
- ]
- options = sorted(options, cmp=lambda a, b: cmp(a._long_opts, b._long_opts))
- super(AbstractCommitLogCommand, self).__init__(options=options)
- # FIXME: This should probably be on the tool somewhere.
- self._committer_list = CommitterList()
-
- def _init_options(self, options):
- self.verbose = options.verbose
- self.max_commit_age = options.max_commit_age
-
- # FIXME: This should move to scm.py
- def _recent_commit_messages(self):
- git_log = self._tool.executive.run_command(['git', 'log', '--date=iso', '--since="%s months ago"' % self.max_commit_age])
- messages = re.compile(r"^commit \w{40}$", re.MULTILINE).split(git_log)[1:] # Ignore the first message which will be empty.
- for message in messages:
- # Unindent all the lines
- (message, _) = self._leading_indent_regexp.subn("", message)
- yield message.lstrip() # Remove any leading newlines from the log message.
-
- def _author_name_from_email(self, email):
- contributor = self._committer_list.contributor_by_email(email)
- return contributor.full_name if contributor else None
-
- def _contributor_from_email(self, email):
- contributor = self._committer_list.contributor_by_email(email)
- return contributor if contributor else None
-
- def _parse_commit_message(self, commit_message):
- committer_match = self._committer_regexp.search(commit_message)
- if not committer_match:
- raise CommitLogError
-
- committer_email = committer_match.group('email')
- if not committer_email:
- raise CommitLogError
-
- committer = self._contributor_from_email(committer_email)
- if not committer:
- raise CommitLogError
-
- commit_date_match = self._date_regexp.search(commit_message)
- if not commit_date_match:
- raise CommitLogError
- commit_date = commit_date_match.group('date')
-
- revision_match = self._revision_regexp.search(commit_message)
- if not revision_match:
- raise CommitLogError
- revision = revision_match.group('svnid')
-
- # Look for "Patch by" line first, which is used for non-committer contributors;
- # otherwise, use committer info determined above.
- author_match = self._patch_by_regexp.search(commit_message)
- if not author_match:
- author_match = committer_match
-
- author_email = author_match.group('email')
- if not author_email:
- author_email = committer_email
-
- author_name = author_match.group('name') if 'name' in author_match.groupdict() else None
- if not author_name:
- author_name = self._author_name_from_email(author_email)
- if not author_name:
- raise CommitLogError
-
- contributor = self._contributor_from_email(author_email)
- if contributor and author_name != contributor.full_name and contributor.full_name:
- author_name = contributor.full_name
-
- reviewer_match = self._reviewed_by_regexp.search(commit_message)
- if not reviewer_match:
- raise CommitLogMissingReviewer
- reviewers = reviewer_match.group('reviewer')
-
- return {
- 'committer': committer,
- 'commit_date': commit_date,
- 'revision': revision,
- 'author_email': author_email,
- 'author_name': author_name,
- 'contributor': contributor,
- 'reviewers': reviewers,
- }
-
-
-class SuggestNominations(AbstractCommitLogCommand):
- name = "suggest-nominations"
- help_text = "Suggest contributors for committer/reviewer nominations"
-
- def __init__(self):
- options = [
- make_option("--committer-minimum", action="store", dest="committer_minimum", type="int", default=10, help="Specify minimum patch count for Committer nominations."),
- make_option("--reviewer-minimum", action="store", dest="reviewer_minimum", type="int", default=80, help="Specify minimum patch count for Reviewer nominations."),
- make_option("--show-commits", action="store_true", dest="show_commits", default=False, help="Show commit history with nomination suggestions."),
- ]
- super(SuggestNominations, self).__init__(options=options)
-
- def _init_options(self, options):
- super(SuggestNominations, self)._init_options(options)
- self.committer_minimum = options.committer_minimum
- self.reviewer_minimum = options.reviewer_minimum
- self.show_commits = options.show_commits
-
- def _count_commit(self, commit, analysis):
- author_name = commit['author_name']
- author_email = commit['author_email']
- revision = commit['revision']
- commit_date = commit['commit_date']
-
- # See if we already have a contributor with this author_name or email
- counter_by_name = analysis['counters_by_name'].get(author_name)
- counter_by_email = analysis['counters_by_email'].get(author_email)
- if counter_by_name:
- if counter_by_email:
- if counter_by_name != counter_by_email:
- # Merge these two counters This is for the case where we had
- # John Smith (jsmith@gmail.com) and Jonathan Smith (jsmith@apple.com)
- # and just found a John Smith (jsmith@apple.com). Now we know the
- # two names are the same person
- counter_by_name['names'] |= counter_by_email['names']
- counter_by_name['emails'] |= counter_by_email['emails']
- counter_by_name['count'] += counter_by_email.get('count', 0)
- analysis['counters_by_email'][author_email] = counter_by_name
- else:
- # Add email to the existing counter
- analysis['counters_by_email'][author_email] = counter_by_name
- counter_by_name['emails'] |= set([author_email])
- else:
- if counter_by_email:
- # Add name to the existing counter
- analysis['counters_by_name'][author_name] = counter_by_email
- counter_by_email['names'] |= set([author_name])
- else:
- # Create new counter
- new_counter = {'names': set([author_name]), 'emails': set([author_email]), 'latest_name': author_name, 'latest_email': author_email, 'commits': ""}
- analysis['counters_by_name'][author_name] = new_counter
- analysis['counters_by_email'][author_email] = new_counter
-
- assert(analysis['counters_by_name'][author_name] == analysis['counters_by_email'][author_email])
- counter = analysis['counters_by_name'][author_name]
- counter['count'] = counter.get('count', 0) + 1
-
- if revision.isdigit():
- revision = "http://trac.webkit.org/changeset/" + revision
- counter['commits'] += " commit: %s on %s by %s (%s)\n" % (revision, commit_date, author_name, author_email)
-
- def _count_recent_patches(self):
- analysis = {
- 'counters_by_name': {},
- 'counters_by_email': {},
- }
- for commit_message in self._recent_commit_messages():
- try:
- self._count_commit(self._parse_commit_message(commit_message), analysis)
- except CommitLogError, exception:
- continue
- return analysis['counters_by_email']
-
- def _collect_nominations(self, counters_by_email):
- nominations = []
- for author_email, counter in counters_by_email.items():
- if author_email != counter['latest_email']:
- continue
- roles = []
-
- contributor = self._committer_list.contributor_by_email(author_email)
-
- author_name = counter['latest_name']
- patch_count = counter['count']
-
- if patch_count >= self.committer_minimum and (not contributor or not contributor.can_commit):
- roles.append("committer")
- if patch_count >= self.reviewer_minimum and contributor and contributor.can_commit and not contributor.can_review:
- roles.append("reviewer")
- if roles:
- nominations.append({
- 'roles': roles,
- 'author_name': author_name,
- 'author_email': author_email,
- 'patch_count': patch_count,
- })
- return nominations
-
- def _print_nominations(self, nominations, counters_by_email):
- def nomination_cmp(a_nomination, b_nomination):
- roles_result = cmp(a_nomination['roles'], b_nomination['roles'])
- if roles_result:
- return -roles_result
- count_result = cmp(a_nomination['patch_count'], b_nomination['patch_count'])
- if count_result:
- return -count_result
- return cmp(a_nomination['author_name'], b_nomination['author_name'])
-
- for nomination in sorted(nominations, nomination_cmp):
- # This is a little bit of a hack, but its convienent to just pass the nomination dictionary to the formating operator.
- nomination['roles_string'] = join_with_separators(nomination['roles']).upper()
- print "%(roles_string)s: %(author_name)s (%(author_email)s) has %(patch_count)s reviewed patches" % nomination
- counter = counters_by_email[nomination['author_email']]
-
- if self.show_commits:
- print counter['commits']
-
- def _print_counts(self, counters_by_email):
- def counter_cmp(a_tuple, b_tuple):
- # split the tuples
- # the second element is the "counter" structure
- _, a_counter = a_tuple
- _, b_counter = b_tuple
-
- count_result = cmp(a_counter['count'], b_counter['count'])
- if count_result:
- return -count_result
- return cmp(a_counter['latest_name'].lower(), b_counter['latest_name'].lower())
-
- for author_email, counter in sorted(counters_by_email.items(), counter_cmp):
- if author_email != counter['latest_email']:
- continue
- contributor = self._committer_list.contributor_by_email(author_email)
- author_name = counter['latest_name']
- patch_count = counter['count']
- counter['names'] = counter['names'] - set([author_name])
- counter['emails'] = counter['emails'] - set([author_email])
-
- alias_list = []
- for alias in counter['names']:
- alias_list.append(alias)
- for alias in counter['emails']:
- alias_list.append(alias)
- if alias_list:
- print "CONTRIBUTOR: %s (%s) has %d reviewed patches %s" % (author_name, author_email, patch_count, "(aliases: " + ", ".join(alias_list) + ")")
- else:
- print "CONTRIBUTOR: %s (%s) has %d reviewed patches" % (author_name, author_email, patch_count)
- return
-
- def execute(self, options, args, tool):
- self._init_options(options)
- patch_counts = self._count_recent_patches()
- nominations = self._collect_nominations(patch_counts)
- self._print_nominations(nominations, patch_counts)
- if self.verbose:
- self._print_counts(patch_counts)
-
-if __name__ == "__main__":
- SuggestNominations()
diff --git a/Tools/Scripts/webkitpy/tool/commands/suggestnominations_unittest.py b/Tools/Scripts/webkitpy/tool/commands/suggestnominations_unittest.py
deleted file mode 100644
index 63054c516..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/suggestnominations_unittest.py
+++ /dev/null
@@ -1,103 +0,0 @@
-# Copyright (C) 2011 Google Inc. All rights reserved.
-# Copyright (C) 2011 Code Aurora Forum. 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.
-
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.suggestnominations import SuggestNominations
-from webkitpy.tool.mocktool import MockOptions, MockTool
-
-
-class SuggestNominationsTest(CommandsTest):
-
- mock_git_output = """commit 60831dde5beb22f35aef305a87fca7b5f284c698
-Author: fpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
-Date: 2011-09-15 19:56:21 +0000
-
- Value profiles collect no information for global variables
- https://bugs.webkit.org/show_bug.cgi?id=68143
-
- Reviewed by Geoffrey Garen.
-
- git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95219 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-"""
- mock_same_author_commit_message = """Author: fpizlo@apple.com <fpizlo@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
-Date: 2011-09-15 19:56:21 +0000
-
-Value profiles collect no information for global variables
-https://bugs.webkit.org/show_bug.cgi?id=68143
-
-Reviewed by Geoffrey Garen.
-
-git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95219 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-"""
-
- def _make_options(self, **kwargs):
- defaults = {
- 'committer_minimum': 10,
- 'max_commit_age': 9,
- 'reviewer_minimum': 80,
- 'show_commits': False,
- 'verbose': False,
- }
- options = MockOptions(**defaults)
- options.update(**kwargs)
- return options
-
- def test_recent_commit_messages(self):
- tool = MockTool()
- suggest_nominations = SuggestNominations()
- suggest_nominations._init_options(options=self._make_options())
- suggest_nominations.bind_to_tool(tool)
-
- tool.executive.run_command = lambda command: self.mock_git_output
- self.assertEqual(list(suggest_nominations._recent_commit_messages()), [self.mock_same_author_commit_message])
-
- mock_non_committer_commit_message = """
-Author: commit-queue@webkit.org <commit-queue@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
-Date: 2009-09-15 14:08:42 +0000
-
-Let TestWebKitAPI work for chromium
-https://bugs.webkit.org/show_bug.cgi?id=67756
-
-Patch by Xianzhu Wang <wangxianzhu@chromium.org> on 2011-09-15
-Reviewed by Sam Weinig.
-
-Source/WebKit/chromium:
-
-* WebKit.gyp:
-
-git-svn-id: http://svn.webkit.org/repository/webkit/trunk@95188 268f45cc-cd09-0410-ab3c-d52691b4dbfc
-"""
-
- def test_basic(self):
- expected_stdout = "REVIEWER: Xianzhu Wang (wangxianzhu@chromium.org) has 88 reviewed patches\n"
- options = self._make_options()
- suggest_nominations = SuggestNominations()
- suggest_nominations._init_options(options=options)
- suggest_nominations._recent_commit_messages = lambda: [self.mock_non_committer_commit_message for _ in range(88)]
- self.assert_execute_outputs(suggest_nominations, [], expected_stdout=expected_stdout, options=options)
diff --git a/Tools/Scripts/webkitpy/tool/commands/upload.py b/Tools/Scripts/webkitpy/tool/commands/upload.py
deleted file mode 100644
index 69dc4f715..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/upload.py
+++ /dev/null
@@ -1,521 +0,0 @@
-# Copyright (c) 2009, 2010 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import logging
-import os
-import re
-import sys
-
-from optparse import make_option
-
-from webkitpy.tool import steps
-
-from webkitpy.common.checkout.changelog import parse_bug_id_from_changelog
-from webkitpy.common.config.committers import CommitterList
-from webkitpy.common.system.user import User
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.abstractsequencedcommand import AbstractSequencedCommand
-from webkitpy.tool.comments import bug_comment_from_svn_revision
-from webkitpy.tool.grammar import pluralize, join_with_separators
-from webkitpy.tool.multicommandtool import Command
-
-_log = logging.getLogger(__name__)
-
-
-class CommitMessageForCurrentDiff(Command):
- name = "commit-message"
- help_text = "Print a commit message suitable for the uncommitted changes"
-
- def __init__(self):
- options = [
- steps.Options.git_commit,
- ]
- Command.__init__(self, options=options)
-
- def execute(self, options, args, tool):
- # This command is a useful test to make sure commit_message_for_this_commit
- # always returns the right value regardless of the current working directory.
- print "%s" % tool.checkout().commit_message_for_this_commit(options.git_commit).message()
-
-
-class CleanPendingCommit(Command):
- name = "clean-pending-commit"
- help_text = "Clear r+ on obsolete patches so they do not appear in the pending-commit list."
-
- # NOTE: This was designed to be generic, but right now we're only processing patches from the pending-commit list, so only r+ matters.
- def _flags_to_clear_on_patch(self, patch):
- if not patch.is_obsolete():
- return None
- what_was_cleared = []
- if patch.review() == "+":
- if patch.reviewer():
- what_was_cleared.append(u"%s's review+" % patch.reviewer().full_name)
- else:
- what_was_cleared.append("review+")
- return join_with_separators(what_was_cleared)
-
- def execute(self, options, args, tool):
- committers = CommitterList()
- for bug_id in tool.bugs.queries.fetch_bug_ids_from_pending_commit_list():
- bug = self._tool.bugs.fetch_bug(bug_id)
- patches = bug.patches(include_obsolete=True)
- for patch in patches:
- flags_to_clear = self._flags_to_clear_on_patch(patch)
- if not flags_to_clear:
- continue
- message = u"Cleared %s from obsolete attachment %s so that this bug does not appear in http://webkit.org/pending-commit." % (flags_to_clear, patch.id())
- self._tool.bugs.obsolete_attachment(patch.id(), message)
-
-
-# FIXME: This should be share more logic with AssignToCommitter and CleanPendingCommit
-class CleanReviewQueue(Command):
- name = "clean-review-queue"
- help_text = "Clear r? on obsolete patches so they do not appear in the pending-review list."
-
- def execute(self, options, args, tool):
- queue_url = "http://webkit.org/pending-review"
- # We do this inefficient dance to be more like webkit.org/pending-review
- # bugs.queries.fetch_bug_ids_from_review_queue() doesn't return
- # closed bugs, but folks using /pending-review will see them. :(
- for patch_id in tool.bugs.queries.fetch_attachment_ids_from_review_queue():
- patch = self._tool.bugs.fetch_attachment(patch_id)
- if not patch.review() == "?":
- continue
- attachment_obsolete_modifier = ""
- if patch.is_obsolete():
- attachment_obsolete_modifier = "obsolete "
- elif patch.bug().is_closed():
- bug_closed_explanation = " If you would like this patch reviewed, please attach it to a new bug (or re-open this bug before marking it for review again)."
- else:
- # Neither the patch was obsolete or the bug was closed, next patch...
- continue
- message = "Cleared review? from %sattachment %s so that this bug does not appear in %s.%s" % (attachment_obsolete_modifier, patch.id(), queue_url, bug_closed_explanation)
- self._tool.bugs.obsolete_attachment(patch.id(), message)
-
-
-class AssignToCommitter(Command):
- name = "assign-to-committer"
- help_text = "Assign bug to whoever attached the most recent r+'d patch"
-
- def _patches_have_commiters(self, reviewed_patches):
- for patch in reviewed_patches:
- if not patch.committer():
- return False
- return True
-
- def _assign_bug_to_last_patch_attacher(self, bug_id):
- committers = CommitterList()
- bug = self._tool.bugs.fetch_bug(bug_id)
- if not bug.is_unassigned():
- assigned_to_email = bug.assigned_to_email()
- _log.info(u"Bug %s is already assigned to %s (%s)." % (bug_id, assigned_to_email, committers.committer_by_email(assigned_to_email)))
- return
-
- reviewed_patches = bug.reviewed_patches()
- if not reviewed_patches:
- _log.info("Bug %s has no non-obsolete patches, ignoring." % bug_id)
- return
-
- # We only need to do anything with this bug if one of the r+'d patches does not have a valid committer (cq+ set).
- if self._patches_have_commiters(reviewed_patches):
- _log.info("All reviewed patches on bug %s already have commit-queue+, ignoring." % bug_id)
- return
-
- latest_patch = reviewed_patches[-1]
- attacher_email = latest_patch.attacher_email()
- committer = committers.committer_by_email(attacher_email)
- if not committer:
- _log.info("Attacher %s is not a committer. Bug %s likely needs commit-queue+." % (attacher_email, bug_id))
- return
-
- reassign_message = u"Attachment %s was posted by a committer and has review+, assigning to %s for commit." % (latest_patch.id(), committer.full_name)
- self._tool.bugs.reassign_bug(bug_id, committer.bugzilla_email(), reassign_message)
-
- def execute(self, options, args, tool):
- for bug_id in tool.bugs.queries.fetch_bug_ids_from_pending_commit_list():
- self._assign_bug_to_last_patch_attacher(bug_id)
-
-
-class ObsoleteAttachments(AbstractSequencedCommand):
- name = "obsolete-attachments"
- help_text = "Mark all attachments on a bug as obsolete"
- argument_names = "BUGID"
- steps = [
- steps.ObsoletePatches,
- ]
-
- def _prepare_state(self, options, args, tool):
- return { "bug_id" : args[0] }
-
-
-class AttachToBug(AbstractSequencedCommand):
- name = "attach-to-bug"
- help_text = "Attach the the file to the bug"
- argument_names = "BUGID FILEPATH"
- steps = [
- steps.AttachToBug,
- ]
-
- def _prepare_state(self, options, args, tool):
- state = {}
- state["bug_id"] = args[0]
- state["filepath"] = args[1]
- return state
-
-
-class AbstractPatchUploadingCommand(AbstractSequencedCommand):
- def _bug_id(self, options, args, tool, state):
- # Perfer a bug id passed as an argument over a bug url in the diff (i.e. ChangeLogs).
- bug_id = args and args[0]
- if not bug_id:
- changed_files = self._tool.scm().changed_files(options.git_commit)
- state["changed_files"] = changed_files
- bug_id = tool.checkout().bug_id_for_this_commit(options.git_commit, changed_files)
- return bug_id
-
- def _prepare_state(self, options, args, tool):
- state = {}
- state["bug_id"] = self._bug_id(options, args, tool, state)
- if not state["bug_id"]:
- _log.error("No bug id passed and no bug url found in ChangeLogs.")
- sys.exit(1)
- return state
-
-
-class Post(AbstractPatchUploadingCommand):
- name = "post"
- help_text = "Attach the current working directory diff to a bug as a patch file"
- argument_names = "[BUGID]"
- steps = [
- steps.ValidateChangeLogs,
- steps.CheckStyle,
- steps.ConfirmDiff,
- steps.ObsoletePatches,
- steps.SuggestReviewers,
- steps.EnsureBugIsOpenAndAssigned,
- steps.PostDiff,
- ]
-
-
-class LandSafely(AbstractPatchUploadingCommand):
- name = "land-safely"
- help_text = "Land the current diff via the commit-queue"
- argument_names = "[BUGID]"
- long_help = """land-safely updates the ChangeLog with the reviewer listed
- in bugs.webkit.org for BUGID (or the bug ID detected from the ChangeLog).
- The command then uploads the current diff to the bug and marks it for
- commit by the commit-queue."""
- show_in_main_help = True
- steps = [
- steps.UpdateChangeLogsWithReviewer,
- steps.ValidateChangeLogs,
- steps.ObsoletePatches,
- steps.EnsureBugIsOpenAndAssigned,
- steps.PostDiffForCommit,
- ]
-
-
-class HasLanded(AbstractPatchUploadingCommand):
- name = "has-landed"
- help_text = "Check that the current code was successfully landed and no changes remain."
- argument_names = "[BUGID]"
- steps = [
- steps.HasLanded,
- ]
-
-
-class Prepare(AbstractSequencedCommand):
- name = "prepare"
- help_text = "Creates a bug (or prompts for an existing bug) and prepares the ChangeLogs"
- argument_names = "[BUGID]"
- steps = [
- steps.PromptForBugOrTitle,
- steps.CreateBug,
- steps.PrepareChangeLog,
- ]
-
- def _prepare_state(self, options, args, tool):
- bug_id = args and args[0]
- return { "bug_id" : bug_id }
-
-
-class Upload(AbstractPatchUploadingCommand):
- name = "upload"
- help_text = "Automates the process of uploading a patch for review"
- argument_names = "[BUGID]"
- show_in_main_help = True
- steps = [
- steps.ValidateChangeLogs,
- steps.CheckStyle,
- steps.PromptForBugOrTitle,
- steps.CreateBug,
- steps.PrepareChangeLog,
- steps.EditChangeLog,
- steps.ConfirmDiff,
- steps.ObsoletePatches,
- steps.SuggestReviewers,
- steps.EnsureBugIsOpenAndAssigned,
- steps.PostDiff,
- ]
- long_help = """upload uploads the current diff to bugs.webkit.org.
- If no bug id is provided, upload will create a bug.
- If the current diff does not have a ChangeLog, upload
- will prepare a ChangeLog. Once a patch is read, upload
- will open the ChangeLogs for editing using the command in the
- EDITOR environment variable and will display the diff using the
- command in the PAGER environment variable."""
-
- def _prepare_state(self, options, args, tool):
- state = {}
- state["bug_id"] = self._bug_id(options, args, tool, state)
- return state
-
-
-class EditChangeLogs(AbstractSequencedCommand):
- name = "edit-changelogs"
- help_text = "Opens modified ChangeLogs in $EDITOR"
- show_in_main_help = True
- steps = [
- steps.EditChangeLog,
- ]
-
-
-class PostCommits(Command):
- name = "post-commits"
- help_text = "Attach a range of local commits to bugs as patch files"
- argument_names = "COMMITISH"
-
- def __init__(self):
- options = [
- make_option("-b", "--bug-id", action="store", type="string", dest="bug_id", help="Specify bug id if no URL is provided in the commit log."),
- make_option("--add-log-as-comment", action="store_true", dest="add_log_as_comment", default=False, help="Add commit log message as a comment when uploading the patch."),
- make_option("-m", "--description", action="store", type="string", dest="description", help="Description string for the attachment (default: description from commit message)"),
- steps.Options.obsolete_patches,
- steps.Options.review,
- steps.Options.request_commit,
- ]
- Command.__init__(self, options=options, requires_local_commits=True)
-
- def _comment_text_for_commit(self, options, commit_message, tool, commit_id):
- comment_text = None
- if (options.add_log_as_comment):
- comment_text = commit_message.body(lstrip=True)
- comment_text += "---\n"
- comment_text += tool.scm().files_changed_summary_for_commit(commit_id)
- return comment_text
-
- def execute(self, options, args, tool):
- commit_ids = tool.scm().commit_ids_from_commitish_arguments(args)
- if len(commit_ids) > 10: # We could lower this limit, 10 is too many for one bug as-is.
- _log.error("webkit-patch does not support attaching %s at once. Are you sure you passed the right commit range?" % (pluralize("patch", len(commit_ids))))
- sys.exit(1)
-
- have_obsoleted_patches = set()
- for commit_id in commit_ids:
- commit_message = tool.scm().commit_message_for_local_commit(commit_id)
-
- # Prefer --bug-id=, then a bug url in the commit message, then a bug url in the entire commit diff (i.e. ChangeLogs).
- bug_id = options.bug_id or parse_bug_id_from_changelog(commit_message.message()) or parse_bug_id_from_changelog(tool.scm().create_patch(git_commit=commit_id))
- if not bug_id:
- _log.info("Skipping %s: No bug id found in commit or specified with --bug-id." % commit_id)
- continue
-
- if options.obsolete_patches and bug_id not in have_obsoleted_patches:
- state = { "bug_id": bug_id }
- steps.ObsoletePatches(tool, options).run(state)
- have_obsoleted_patches.add(bug_id)
-
- diff = tool.scm().create_patch(git_commit=commit_id)
- description = options.description or commit_message.description(lstrip=True, strip_url=True)
- comment_text = self._comment_text_for_commit(options, commit_message, tool, commit_id)
- tool.bugs.add_patch_to_bug(bug_id, diff, description, comment_text, mark_for_review=options.review, mark_for_commit_queue=options.request_commit)
-
-
-# FIXME: This command needs to be brought into the modern age with steps and CommitInfo.
-class MarkBugFixed(Command):
- name = "mark-bug-fixed"
- help_text = "Mark the specified bug as fixed"
- argument_names = "[SVN_REVISION]"
- def __init__(self):
- options = [
- make_option("--bug-id", action="store", type="string", dest="bug_id", help="Specify bug id if no URL is provided in the commit log."),
- make_option("--comment", action="store", type="string", dest="comment", help="Text to include in bug comment."),
- make_option("--open", action="store_true", default=False, dest="open_bug", help="Open bug in default web browser (Mac only)."),
- make_option("--update-only", action="store_true", default=False, dest="update_only", help="Add comment to the bug, but do not close it."),
- ]
- Command.__init__(self, options=options)
-
- # FIXME: We should be using checkout().changelog_entries_for_revision(...) instead here.
- def _fetch_commit_log(self, tool, svn_revision):
- if not svn_revision:
- return tool.scm().last_svn_commit_log()
- return tool.scm().svn_commit_log(svn_revision)
-
- def _determine_bug_id_and_svn_revision(self, tool, bug_id, svn_revision):
- commit_log = self._fetch_commit_log(tool, svn_revision)
-
- if not bug_id:
- bug_id = parse_bug_id_from_changelog(commit_log)
-
- if not svn_revision:
- match = re.search("^r(?P<svn_revision>\d+) \|", commit_log, re.MULTILINE)
- if match:
- svn_revision = match.group('svn_revision')
-
- if not bug_id or not svn_revision:
- not_found = []
- if not bug_id:
- not_found.append("bug id")
- if not svn_revision:
- not_found.append("svn revision")
- _log.error("Could not find %s on command-line or in %s."
- % (" or ".join(not_found), "r%s" % svn_revision if svn_revision else "last commit"))
- sys.exit(1)
-
- return (bug_id, svn_revision)
-
- def execute(self, options, args, tool):
- bug_id = options.bug_id
-
- svn_revision = args and args[0]
- if svn_revision:
- if re.match("^r[0-9]+$", svn_revision, re.IGNORECASE):
- svn_revision = svn_revision[1:]
- if not re.match("^[0-9]+$", svn_revision):
- _log.error("Invalid svn revision: '%s'" % svn_revision)
- sys.exit(1)
-
- needs_prompt = False
- if not bug_id or not svn_revision:
- needs_prompt = True
- (bug_id, svn_revision) = self._determine_bug_id_and_svn_revision(tool, bug_id, svn_revision)
-
- _log.info("Bug: <%s> %s" % (tool.bugs.bug_url_for_bug_id(bug_id), tool.bugs.fetch_bug_dictionary(bug_id)["title"]))
- _log.info("Revision: %s" % svn_revision)
-
- if options.open_bug:
- tool.user.open_url(tool.bugs.bug_url_for_bug_id(bug_id))
-
- if needs_prompt:
- if not tool.user.confirm("Is this correct?"):
- self._exit(1)
-
- bug_comment = bug_comment_from_svn_revision(svn_revision)
- if options.comment:
- bug_comment = "%s\n\n%s" % (options.comment, bug_comment)
-
- if options.update_only:
- _log.info("Adding comment to Bug %s." % bug_id)
- tool.bugs.post_comment_to_bug(bug_id, bug_comment)
- else:
- _log.info("Adding comment to Bug %s and marking as Resolved/Fixed." % bug_id)
- tool.bugs.close_bug_as_fixed(bug_id, bug_comment)
-
-
-# FIXME: Requires unit test. Blocking issue: too complex for now.
-class CreateBug(Command):
- name = "create-bug"
- help_text = "Create a bug from local changes or local commits"
- argument_names = "[COMMITISH]"
-
- def __init__(self):
- options = [
- steps.Options.cc,
- steps.Options.component,
- make_option("--no-prompt", action="store_false", dest="prompt", default=True, help="Do not prompt for bug title and comment; use commit log instead."),
- make_option("--no-review", action="store_false", dest="review", default=True, help="Do not mark the patch for review."),
- make_option("--request-commit", action="store_true", dest="request_commit", default=False, help="Mark the patch as needing auto-commit after review."),
- ]
- Command.__init__(self, options=options)
-
- def create_bug_from_commit(self, options, args, tool):
- commit_ids = tool.scm().commit_ids_from_commitish_arguments(args)
- if len(commit_ids) > 3:
- _log.error("Are you sure you want to create one bug with %s patches?" % len(commit_ids))
- sys.exit(1)
-
- commit_id = commit_ids[0]
-
- bug_title = ""
- comment_text = ""
- if options.prompt:
- (bug_title, comment_text) = self.prompt_for_bug_title_and_comment()
- else:
- commit_message = tool.scm().commit_message_for_local_commit(commit_id)
- bug_title = commit_message.description(lstrip=True, strip_url=True)
- comment_text = commit_message.body(lstrip=True)
- comment_text += "---\n"
- comment_text += tool.scm().files_changed_summary_for_commit(commit_id)
-
- diff = tool.scm().create_patch(git_commit=commit_id)
- bug_id = tool.bugs.create_bug(bug_title, comment_text, options.component, diff, "Patch", cc=options.cc, mark_for_review=options.review, mark_for_commit_queue=options.request_commit)
-
- if bug_id and len(commit_ids) > 1:
- options.bug_id = bug_id
- options.obsolete_patches = False
- # FIXME: We should pass through --no-comment switch as well.
- PostCommits.execute(self, options, commit_ids[1:], tool)
-
- def create_bug_from_patch(self, options, args, tool):
- bug_title = ""
- comment_text = ""
- if options.prompt:
- (bug_title, comment_text) = self.prompt_for_bug_title_and_comment()
- else:
- commit_message = tool.checkout().commit_message_for_this_commit(options.git_commit)
- bug_title = commit_message.description(lstrip=True, strip_url=True)
- comment_text = commit_message.body(lstrip=True)
-
- diff = tool.scm().create_patch(options.git_commit)
- bug_id = tool.bugs.create_bug(bug_title, comment_text, options.component, diff, "Patch", cc=options.cc, mark_for_review=options.review, mark_for_commit_queue=options.request_commit)
-
- def prompt_for_bug_title_and_comment(self):
- bug_title = User.prompt("Bug title: ")
- # FIXME: User should provide a function for doing this multi-line prompt.
- print "Bug comment (hit ^D on blank line to end):"
- lines = sys.stdin.readlines()
- try:
- sys.stdin.seek(0, os.SEEK_END)
- except IOError:
- # Cygwin raises an Illegal Seek (errno 29) exception when the above
- # seek() call is made. Ignoring it seems to cause no harm.
- # FIXME: Figure out a way to get avoid the exception in the first
- # place.
- pass
- comment_text = "".join(lines)
- return (bug_title, comment_text)
-
- def execute(self, options, args, tool):
- if len(args):
- if (not tool.scm().supports_local_commits()):
- _log.error("Extra arguments not supported; patch is taken from working directory.")
- sys.exit(1)
- self.create_bug_from_commit(options, args, tool)
- else:
- self.create_bug_from_patch(options, args, tool)
diff --git a/Tools/Scripts/webkitpy/tool/commands/upload_unittest.py b/Tools/Scripts/webkitpy/tool/commands/upload_unittest.py
deleted file mode 100644
index ad1b591e0..000000000
--- a/Tools/Scripts/webkitpy/tool/commands/upload_unittest.py
+++ /dev/null
@@ -1,151 +0,0 @@
-# Copyright (C) 2009 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.
-
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.commands.commandtest import CommandsTest
-from webkitpy.tool.commands.upload import *
-from webkitpy.tool.mocktool import MockOptions, MockTool
-
-class UploadCommandsTest(CommandsTest):
- def test_commit_message_for_current_diff(self):
- tool = MockTool()
- expected_stdout = "This is a fake commit message that is at least 50 characters.\n"
- self.assert_execute_outputs(CommitMessageForCurrentDiff(), [], expected_stdout=expected_stdout, tool=tool)
-
- def test_clean_pending_commit(self):
- self.assert_execute_outputs(CleanPendingCommit(), [])
-
- def test_assign_to_committer(self):
- tool = MockTool()
- expected_logs = """Warning, attachment 10001 on bug 50000 has invalid committer (non-committer@example.com)
-MOCK reassign_bug: bug_id=50000, assignee=eric@webkit.org
--- Begin comment --
-Attachment 10001 was posted by a committer and has review+, assigning to Eric Seidel for commit.
--- End comment --
-Bug 50003 is already assigned to foo@foo.com (None).
-Bug 50002 has no non-obsolete patches, ignoring.
-"""
- self.assert_execute_outputs(AssignToCommitter(), [], expected_logs=expected_logs, tool=tool)
-
- def test_obsolete_attachments(self):
- expected_logs = "Obsoleting 2 old patches on bug 50000\n"
- self.assert_execute_outputs(ObsoleteAttachments(), [50000], expected_logs=expected_logs)
-
- def test_post(self):
- options = MockOptions()
- options.cc = None
- options.check_style = True
- options.check_style_filter = None
- options.comment = None
- options.description = "MOCK description"
- options.request_commit = False
- options.review = True
- options.suggest_reviewers = False
- expected_logs = """MOCK: user.open_url: file://...
-Was that diff correct?
-Obsoleting 2 old patches on bug 50000
-MOCK reassign_bug: bug_id=50000, assignee=None
-MOCK add_patch_to_bug: bug_id=50000, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False
-MOCK: user.open_url: http://example.com/50000
-"""
- self.assert_execute_outputs(Post(), [50000], options=options, expected_logs=expected_logs)
-
- def test_attach_to_bug(self):
- options = MockOptions()
- options.comment = "extra comment"
- options.description = "file description"
- expected_logs = """MOCK add_attachment_to_bug: bug_id=50000, description=file description filename=None mimetype=None
--- Begin comment --
-extra comment
--- End comment --
-"""
- self.assert_execute_outputs(AttachToBug(), [50000, "path/to/file.txt", "file description"], options=options, expected_logs=expected_logs)
-
- def test_attach_to_bug_no_description_or_comment(self):
- options = MockOptions()
- options.comment = None
- options.description = None
- expected_logs = "MOCK add_attachment_to_bug: bug_id=50000, description=file.txt filename=None mimetype=None\n"
- self.assert_execute_outputs(AttachToBug(), [50000, "path/to/file.txt"], options=options, expected_logs=expected_logs)
-
- def test_land_safely(self):
- expected_logs = """Obsoleting 2 old patches on bug 50000
-MOCK reassign_bug: bug_id=50000, assignee=None
-MOCK add_patch_to_bug: bug_id=50000, description=Patch for landing, mark_for_review=False, mark_for_commit_queue=False, mark_for_landing=True
-"""
- self.assert_execute_outputs(LandSafely(), [50000], expected_logs=expected_logs)
-
- def test_prepare_diff_with_arg(self):
- self.assert_execute_outputs(Prepare(), [50000])
-
- def test_prepare(self):
- expected_logs = "MOCK create_bug\nbug_title: Mock user response\nbug_description: Mock user response\ncomponent: MOCK component\ncc: MOCK cc\n"
- self.assert_execute_outputs(Prepare(), [], expected_logs=expected_logs)
-
- def test_upload(self):
- options = MockOptions()
- options.cc = None
- options.check_style = True
- options.check_style_filter = None
- options.comment = None
- options.description = "MOCK description"
- options.request_commit = False
- options.review = True
- options.suggest_reviewers = False
- expected_logs = """MOCK: user.open_url: file://...
-Was that diff correct?
-Obsoleting 2 old patches on bug 50000
-MOCK reassign_bug: bug_id=50000, assignee=None
-MOCK add_patch_to_bug: bug_id=50000, description=MOCK description, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False
-MOCK: user.open_url: http://example.com/50000
-"""
- self.assert_execute_outputs(Upload(), [50000], options=options, expected_logs=expected_logs)
-
- def test_mark_bug_fixed(self):
- tool = MockTool()
- tool._scm.last_svn_commit_log = lambda: "r9876 |"
- options = Mock()
- options.bug_id = 50000
- options.comment = "MOCK comment"
- expected_logs = """Bug: <http://example.com/50000> Bug with two r+'d and cq+'d patches, one of which has an invalid commit-queue setter.
-Revision: 9876
-MOCK: user.open_url: http://example.com/50000
-Is this correct?
-Adding comment to Bug 50000.
-MOCK bug comment: bug_id=50000, cc=None
---- Begin comment ---
-MOCK comment
-
-Committed r9876: <http://trac.webkit.org/changeset/9876>
---- End comment ---
-
-"""
- self.assert_execute_outputs(MarkBugFixed(), [], expected_logs=expected_logs, tool=tool, options=options)
-
- def test_edit_changelog(self):
- self.assert_execute_outputs(EditChangeLogs(), [])
diff --git a/Tools/Scripts/webkitpy/tool/comments.py b/Tools/Scripts/webkitpy/tool/comments.py
deleted file mode 100644
index 771953e69..000000000
--- a/Tools/Scripts/webkitpy/tool/comments.py
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-#
-# A tool for automating dealing with bugzilla, posting patches, committing
-# patches, etc.
-
-from webkitpy.common.config import urls
-
-
-def bug_comment_from_svn_revision(svn_revision):
- return "Committed r%s: <%s>" % (svn_revision, urls.view_revision_url(svn_revision))
-
-
-def bug_comment_from_commit_text(scm, commit_text):
- svn_revision = scm.svn_revision_from_commit_text(commit_text)
- return bug_comment_from_svn_revision(svn_revision)
diff --git a/Tools/Scripts/webkitpy/tool/gcovr b/Tools/Scripts/webkitpy/tool/gcovr
deleted file mode 100755
index e4a1f8850..000000000
--- a/Tools/Scripts/webkitpy/tool/gcovr
+++ /dev/null
@@ -1,1029 +0,0 @@
-#! /usr/bin/env python
-#
-# A report generator for gcov 3.4
-#
-# This routine generates a format that is similar to the format generated
-# by the Python coverage.py module. This code is similar to the
-# data processing performed by lcov's geninfo command. However, we
-# don't worry about parsing the *.gcna files, and backwards compatibility for
-# older versions of gcov is not supported.
-#
-# Outstanding issues
-# - verify that gcov 3.4 or newer is being used
-# - verify support for symbolic links
-#
-# gcovr is a FAST project. For documentation, bug reporting, and
-# updates, see https://software.sandia.gov/trac/fast/wiki/gcovr
-#
-# _________________________________________________________________________
-#
-# FAST: Utilities for Agile Software Development
-# Copyright (c) 2008 Sandia Corporation.
-# This software is distributed under the BSD License.
-# Under the terms of Contract DE-AC04-94AL85000 with Sandia Corporation,
-# the U.S. Government retains certain rights in this software.
-# For more information, see the FAST README.txt file.
-#
-# $Revision: 2839 $
-# $Date: 2013-05-27 11:13:17 -0700 (Mon, 27 May 2013) $
-# _________________________________________________________________________
-#
-
-import copy
-import glob
-import os
-import re
-import subprocess
-import sys
-import time
-import xml.dom.minidom
-
-from optparse import OptionParser
-from string import Template
-from os.path import normpath
-
-__version__ = "2.5-prerelease"
-src_revision = "$Revision: 2839 $"
-gcov_cmd = "gcov"
-
-output_re = re.compile("[Cc]reating [`'](.*)'$")
-source_re = re.compile("cannot open (source|graph) file")
-
-starting_dir = os.getcwd()
-
-
-def version_str():
- ans = __version__
- m = re.match('\$Revision:\s*(\S+)\s*\$', src_revision)
- if m:
- ans = ans + " (r%s)" % (m.group(1))
- return ans
-
-#
-# Container object for coverage statistics
-#
-class CoverageData(object):
-
- def __init__(self, fname, uncovered, uncovered_exceptional, covered, branches, noncode):
- self.fname=fname
- # Shallow copies are cheap & "safe" because the caller will
- # throw away their copies of covered & uncovered after calling
- # us exactly *once*
- self.uncovered = copy.copy(uncovered)
- self.uncovered_exceptional = copy.copy(uncovered_exceptional)
- self.covered = copy.copy(covered)
- self.noncode = copy.copy(noncode)
- # But, a deep copy is required here
- self.all_lines = copy.deepcopy(uncovered)
- self.all_lines.update(uncovered_exceptional)
- self.all_lines.update(covered.keys())
- self.branches = copy.deepcopy(branches)
-
- def update(self, uncovered, uncovered_exceptional, covered, branches, noncode):
- self.all_lines.update(uncovered)
- self.all_lines.update(uncovered_exceptional)
- self.all_lines.update(covered.keys())
- self.uncovered.update(uncovered)
- self.uncovered_exceptional.update(uncovered_exceptional)
- self.noncode.intersection_update(noncode)
- for k in covered.keys():
- self.covered[k] = self.covered.get(k,0) + covered[k]
- for k in branches.keys():
- for b in branches[k]:
- d = self.branches.setdefault(k, {})
- d[b] = d.get(b, 0) + branches[k][b]
- self.uncovered.difference_update(self.covered.keys())
- self.uncovered_exceptional.difference_update(self.covered.keys())
-
- def uncovered_str(self, exceptional):
- if options.show_branch:
- # Don't do any aggregation on branch results
- tmp = []
- for line in self.branches.keys():
- for branch in self.branches[line]:
- if self.branches[line][branch] == 0:
- tmp.append(line)
- break
-
- tmp.sort()
- return ",".join([str(x) for x in tmp]) or ""
-
- if exceptional:
- tmp = list(self.uncovered_exceptional)
- else:
- tmp = list(self.uncovered)
- if len(tmp) == 0:
- return ""
-
- tmp.sort()
- first = None
- last = None
- ranges=[]
- for item in tmp:
- if last is None:
- first=item
- last=item
- elif item == (last+1):
- last=item
- else:
- if len(self.noncode.intersection(range(last+1,item))) \
- == item - last - 1:
- last = item
- continue
-
- if first==last:
- ranges.append(str(first))
- else:
- ranges.append(str(first)+"-"+str(last))
- first=item
- last=item
- if first==last:
- ranges.append(str(first))
- else:
- ranges.append(str(first)+"-"+str(last))
- return ",".join(ranges)
-
- def coverage(self):
- if ( options.show_branch ):
- total = 0
- cover = 0
- for line in self.branches.keys():
- for branch in self.branches[line].keys():
- total += 1
- cover += self.branches[line][branch] > 0 and 1 or 0
- else:
- total = len(self.all_lines)
- cover = len(self.covered)
-
- percent = total and str(int(100.0*cover/total)) or "--"
- return (total, cover, percent)
-
- def summary(self):
- tmp = options.filter.sub('',self.fname)
- if not self.fname.endswith(tmp):
- # Do no truncation if the filter does not start matching at
- # the beginning of the string
- tmp = self.fname
- tmp = tmp.ljust(40)
- if len(tmp) > 40:
- tmp=tmp+"\n"+" "*40
-
- (total, cover, percent) = self.coverage()
- uncovered_lines = self.uncovered_str(False)
- if not options.show_branch:
- t = self.uncovered_str(True)
- if len(t):
- uncovered_lines += " [* " + t + "]";
- return ( total, cover,
- tmp + str(total).rjust(8) + str(cover).rjust(8) + \
- percent.rjust(6) + "% " + uncovered_lines )
-
-
-def resolve_symlinks(orig_path):
- """
- Return the normalized absolute path name with all symbolic links resolved
- """
- drive,tmp = os.path.splitdrive(os.path.abspath(orig_path))
- if not drive:
- drive = os.path.sep
- parts = tmp.split(os.path.sep)
- actual_path = [drive]
- while parts:
- actual_path.append(parts.pop(0))
- if not os.path.islink(os.path.join(*actual_path)):
- continue
- actual_path[-1] = os.readlink(os.path.join(*actual_path))
- tmp_drive, tmp_path = os.path.splitdrive(
- resolve_symlinks(os.path.join(*actual_path)) )
- if tmp_drive:
- drive = tmp_drive
- actual_path = [drive] + tmp_path.split(os.path.sep)
- return os.path.join(*actual_path)
-
-
-def path_startswith(path, base):
- return path.startswith(base) and (
- len(base) == len(path) or path[len(base)] == os.path.sep )
-
-
-class PathAliaser(object):
- def __init__(self):
- self.aliases = {}
- self.master_targets = set()
- self.preferred_name = {}
-
- def master_path(self, path):
- match_found = False
- while True:
- for base, alias in self.aliases.items():
- if path_startswith(path, base):
- path = alias + path[len(base):]
- match_found = True
- break
- for master_base in self.master_targets:
- if path_startswith(path, master_base):
- return path, master_base, True
- if match_found:
- sys.stderr.write(
- "(ERROR) violating fundamental assumption while walking "
- "directory tree.\n\tPlease report this to the gcovr "
- "developers.\n" )
- return path, None, match_found
-
- def unalias_path(self, path):
- path = resolve_symlinks(path)
- path, master_base, known_path = self.master_path(path)
- if not known_path:
- return path
- # Try and resolve the preferred name for this location
- if master_base in self.preferred_name:
- return self.preferred_name[master_base] + path[len(master_base):]
- return path
-
- def add_master_target(self, master):
- self.master_targets.add(master)
-
- def add_alias(self, target, master):
- self.aliases[target] = master
-
- def set_preferred(self, master, preferred):
- self.preferred_name[master] = preferred
-
-aliases = PathAliaser()
-
-# This is UGLY. Here's why: UNIX resolves symbolic links by walking the
-# entire directory structure. What that means is that relative links
-# are always relative to the actual directory inode, and not the
-# "virtual" path that the user might have traversed (over symlinks) on
-# the way to that directory. Here's the canonical example:
-#
-# a / b / c / testfile
-# a / d / e --> ../../a/b
-# m / n --> /a
-# x / y / z --> /m/n/d
-#
-# If we start in "y", we will see the following directory structure:
-# y
-# |-- z
-# |-- e
-# |-- c
-# |-- testfile
-#
-# The problem is that using a simple traversal based on the Python
-# documentation:
-#
-# (os.path.join(os.path.dirname(path), os.readlink(result)))
-#
-# will not work: we will see a link to /m/n/d from /x/y, but completely
-# miss the fact that n is itself a link. If we then naively attempt to
-# apply the "c" relative link, we get an intermediate path that looks
-# like "/m/n/d/e/../../a/b", which would get normalized to "/m/n/a/b"; a
-# nonexistant path. The solution is that we need to walk the original
-# path, along with the full path of all links 1 directory at a time and
-# check for embedded symlinks.
-#
-def link_walker(path):
- targets = [os.path.abspath(path)]
- while targets:
- target_dir = targets.pop(0)
- actual_dir = resolve_symlinks(target_dir)
- #print "target dir: %s (%s)" % (target_dir, actual_dir)
- master_name, master_base, visited = aliases.master_path(actual_dir)
- if visited:
- #print " ...root already visited as %s" % master_name
- aliases.add_alias(target_dir, master_name)
- continue
- if master_name != target_dir:
- aliases.set_preferred(master_name, target_dir)
- aliases.add_alias(target_dir, master_name)
- aliases.add_master_target(master_name)
- #print " ...master name = %s" % master_name
- #print " ...walking %s" % target_dir
- for root, dirs, files in os.walk(target_dir, topdown=True):
- #print " ...reading %s" % root
- for d in dirs:
- tmp = os.path.abspath(os.path.join(root, d))
- #print " ...checking %s" % tmp
- if os.path.islink(tmp):
- #print " ...buffering link %s" % tmp
- targets.append(tmp)
- yield root, dirs, files
-
-
-def search_file(expr, path):
- """
- Given a search path, recursively descend to find files that match a
- regular expression.
- """
- ans = []
- pattern = re.compile(expr)
- if path is None or path == ".":
- path = os.getcwd()
- elif not os.path.exists(path):
- raise IOError("Unknown directory '"+path+"'")
- for root, dirs, files in link_walker(path):
- for name in files:
- if pattern.match(name):
- name = os.path.join(root,name)
- if os.path.islink(name):
- ans.append( os.path.abspath(os.readlink(name)) )
- else:
- ans.append( os.path.abspath(name) )
- return ans
-
-
-#
-# Get the list of datafiles in the directories specified by the user
-#
-def get_datafiles(flist, options):
- allfiles=[]
- for dir in flist:
- if options.verbose:
- sys.stdout.write( "Scanning directory %s for gcda/gcno files...\n"
- % (dir, ) )
- files = search_file(".*\.gc(da|no)$", dir)
- # gcno files will *only* produce uncovered results; however,
- # that is useful information for the case where a compilation
- # unit is never actually exercised by the test code. So, we
- # will process gcno files, but ONLY if there is no corresponding
- # gcda file.
- gcda_files = [file for file in files if file.endswith('gcda')]
- tmp = set(gcda_files)
- gcno_files = [ file for file in files if
- file.endswith('gcno') and file[:-2]+'da' not in tmp ]
- if options.verbose:
- sys.stdout.write(
- "Found %d files (and will process %d)\n" %
- ( len(files), len(gcda_files) + len(gcno_files) ) )
- allfiles.extend(gcda_files)
- allfiles.extend(gcno_files)
- return allfiles
-
-
-def process_gcov_data(file, covdata, options):
- INPUT = open(file,"r")
- #
- # Get the filename
- #
- line = INPUT.readline()
- segments=line.split(':',3)
- if len(segments) != 4 or not segments[2].lower().strip().endswith('source'):
- raise RuntimeError('Fatal error parsing gcov file, line 1: \n\t"%s"' % line.rstrip())
- currdir = os.getcwd()
- os.chdir(starting_dir)
- fname = aliases.unalias_path(os.path.abspath((segments[-1]).strip()))
- os.chdir(currdir)
- if options.verbose:
- sys.stdout.write("Parsing coverage data for file %s\n" % fname)
- #
- # Return if the filename does not match the filter
- #
- if not options.filter.match(fname):
- if options.verbose:
- sys.stdout.write(" Filtering coverage data for file %s\n" % fname)
- return
- #
- # Return if the filename matches the exclude pattern
- #
- for i in range(0,len(options.exclude)):
- if options.exclude[i].match(options.filter.sub('',fname)) or \
- options.exclude[i].match(fname) or \
- options.exclude[i].match(os.path.abspath(fname)):
- if options.verbose:
- sys.stdout.write(" Excluding coverage data for file %s\n" % fname)
- return
- #
- # Parse each line, and record the lines
- # that are uncovered
- #
- noncode = set()
- uncovered = set()
- uncovered_exceptional = set()
- covered = {}
- branches = {}
- #first_record=True
- lineno = 0
- for line in INPUT:
- segments=line.split(":",2)
- #print "HERE", segments
- tmp = segments[0].strip()
- if len(segments) > 1:
- try:
- lineno = int(segments[1].strip())
- except:
- pass # keep previous line number!
-
- if tmp[0] == '#':
- uncovered.add( lineno )
- elif tmp[0] == '=':
- uncovered_exceptional.add( lineno )
- elif tmp[0] in "0123456789":
- covered[lineno] = int(segments[0].strip())
- elif tmp[0] == '-':
- # remember certain non-executed lines
- code = segments[2].strip()
- if len(code) == 0 or code == "{" or code == "}" or \
- code.startswith("//") or code == 'else':
- noncode.add( lineno )
- elif tmp.startswith('branch'):
- fields = line.split()
- try:
- count = int(fields[3])
- branches.setdefault(lineno, {})[int(fields[1])] = count
- except:
- # We ignore branches that were "never executed"
- pass
- elif tmp.startswith('call'):
- pass
- elif tmp.startswith('function'):
- pass
- elif tmp[0] == 'f':
- pass
- #if first_record:
- #first_record=False
- #uncovered.add(prev)
- #if prev in uncovered:
- #tokens=re.split('[ \t]+',tmp)
- #if tokens[3] != "0":
- #uncovered.remove(prev)
- #prev = int(segments[1].strip())
- #first_record=True
- else:
- sys.stderr.write(
- "(WARNING) Unrecognized GCOV output: '%s'\n"
- "\tThis is indicitive of a gcov output parse error.\n"
- "\tPlease report this to the gcovr developers." % tmp )
- ##print 'uncovered',uncovered
- ##print 'covered',covered
- ##print 'branches',branches
- ##print 'noncode',noncode
- #
- # If the file is already in covdata, then we
- # remove lines that are covered here. Otherwise,
- # initialize covdata
- #
- if not fname in covdata:
- covdata[fname] = CoverageData(fname,uncovered,uncovered_exceptional,covered,branches,noncode)
- else:
- covdata[fname].update(uncovered,uncovered_exceptional,covered,branches,noncode)
- INPUT.close()
-
-#
-# Process a datafile (generated by running the instrumented application)
-# and run gcov with the corresponding arguments
-#
-# This is trickier than it sounds: The gcda/gcno files are stored in the
-# same directory as the object files; however, gcov must be run from the
-# same directory where gcc/g++ was run. Normally, the user would know
-# where gcc/g++ was invoked from and could tell gcov the path to the
-# object (and gcda) files with the --object-directory command.
-# Unfortunately, we do everything backwards: gcovr looks for the gcda
-# files and then has to infer the original gcc working directory.
-#
-# In general, (but not always) we can assume that the gcda file is in a
-# subdirectory of the original gcc working directory, so we will first
-# try ".", and on error, move up the directory tree looking for the
-# correct working directory (letting gcov's own error codes dictate when
-# we hit the right directory). This covers 90+% of the "normal" cases.
-# The exception to this is if gcc was invoked with "-o ../[...]" (i.e.,
-# the object directory was a peer (not a parent/child) of the cwd. In
-# this case, things are really tough. We accept an argument
-# (--object-directory) that SHOULD BE THE SAME as the one povided to
-# gcc. We will then walk that path (backwards) in the hopes of
-# identifying the original gcc working directory (there is a bit of
-# trial-and-error here)
-#
-def process_datafile(filename, covdata, options):
- #
- # Launch gcov
- #
- abs_filename = os.path.abspath(filename)
- (dirname,fname) = os.path.split(abs_filename)
- #(name,ext) = os.path.splitext(base)
-
- potential_wd = []
- errors=[]
- Done = False
-
- if options.objdir:
- src_components = abs_filename.split(os.sep)
- components = normpath(options.objdir).split(os.sep)
- idx = 1
- while idx <= len(components):
- if idx > len(src_components):
- break
- if components[-1*idx] != src_components[-1*idx]:
- break
- idx += 1
- if idx > len(components):
- pass # a parent dir; the normal process will find it
- elif components[-1*idx] == '..':
- dirs = [ os.path.join(src_components[:len(src_components)-idx+1]) ]
- while idx <= len(components) and components[-1*idx] == '..':
- tmp = []
- for d in dirs:
- for f in os.listdir(d):
- x = os.path.join(d,f)
- if os.path.isdir(x):
- tmp.append(x)
- dirs = tmp
- idx += 1
- potential_wd = dirs
- else:
- if components[0] == '':
- # absolute path
- tmp = [ options.objdir ]
- else:
- # relative path: check relative to both the cwd and the
- # gcda file
- tmp = [ os.path.join(x, options.objdir) for x in
- [os.path.dirname(abs_filename), os.getcwd()] ]
- potential_wd = [ testdir for testdir in tmp
- if os.path.isdir(testdir) ]
- if len(potential_wd) == 0:
- errors.append("ERROR: cannot identify the location where GCC "
- "was run using --object-directory=%s\n" %
- options.objdir)
- # Revert to the normal
- #sys.exit(1)
-
- # no objdir was specified (or it was a parent dir); walk up the dir tree
- if len(potential_wd) == 0:
- wd = os.path.split(abs_filename)[0]
- while True:
- potential_wd.append(wd)
- wd = os.path.split(wd)[0]
- if wd == potential_wd[-1]:
- break
-
- cmd = [ gcov_cmd, abs_filename,
- "--branch-counts", "--branch-probabilities", "--preserve-paths",
- '--object-directory', dirname ]
-
- # NB: We are lazy English speakers, so we will only parse English output
- env = dict(os.environ)
- env['LC_ALL'] = 'en_US'
-
-
- while len(potential_wd) > 0 and not Done:
- # NB: either len(potential_wd) == 1, or all entires are absolute
- # paths, so we don't have to chdir(starting_dir) at every
- # iteration.
- os.chdir(potential_wd.pop(0))
-
-
- #if options.objdir:
- # cmd.extend(["--object-directory", Template(options.objdir).substitute(filename=filename, head=dirname, tail=base, root=name, ext=ext)])
-
- if options.verbose:
- sys.stdout.write("Running gcov: '%s' in '%s'\n" % ( ' '.join(cmd), os.getcwd() ))
- (out, err) = subprocess.Popen( cmd, env=env,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE ).communicate()
- out=out.decode('utf-8')
- err=err.decode('utf-8')
-
- # find the files that gcov created
- gcov_files = {'active':[], 'filter':[], 'exclude':[]}
- for line in out.splitlines():
- found = output_re.search(line.strip())
- if found is not None:
- fname = found.group(1)
- if not options.gcov_filter.match(fname):
- if options.verbose:
- sys.stdout.write("Filtering gcov file %s\n" % fname)
- gcov_files['filter'].append(fname)
- continue
- exclude=False
- for i in range(0,len(options.gcov_exclude)):
- if options.gcov_exclude[i].match(options.gcov_filter.sub('',fname)) or \
- options.gcov_exclude[i].match(fname) or \
- options.gcov_exclude[i].match(os.path.abspath(fname)):
- exclude=True
- break
- if not exclude:
- gcov_files['active'].append(fname)
- elif options.verbose:
- sys.stdout.write("Excluding gcov file %s\n" % fname)
- gcov_files['exclude'].append(fname)
-
- if source_re.search(err):
- # gcov tossed errors: try the next potential_wd
- errors.append(err)
- else:
- # Process *.gcov files
- for fname in gcov_files['active']:
- process_gcov_data(fname, covdata, options)
- Done = True
-
- if not options.keep:
- for group in gcov_files.values():
- for fname in group:
- if os.path.exists(fname):
- # Only remove files that actually exist.
- os.remove(fname)
-
- os.chdir(starting_dir)
- if options.delete:
- if not abs_filename.endswith('gcno'):
- os.remove(abs_filename)
-
- if not Done:
- sys.stderr.write(
- "(WARNING) GCOV produced the following errors processing %s:\n"
- "\t %s"
- "\t(gcovr could not infer a working directory that resolved it.)\n"
- % ( filename, "\t ".join(errors) ) )
-
-#
-# Produce the classic gcovr text report
-#
-def print_text_report(covdata):
- def _num_uncovered(key):
- (total, covered, percent) = covdata[key].coverage()
- return total - covered
- def _percent_uncovered(key):
- (total, covered, percent) = covdata[key].coverage()
- if covered:
- return -1.0*covered/total
- else:
- return total or 1e6
- def _alpha(key):
- return key
-
- if options.output:
- OUTPUT = open(options.output,'w')
- else:
- OUTPUT = sys.stdout
- total_lines=0
- total_covered=0
- # Header
- OUTPUT.write("-"*78 + '\n')
- a = options.show_branch and "Branches" or "Lines"
- b = options.show_branch and "Taken" or "Exec"
- c = "Missing"
- OUTPUT.write("File".ljust(40) + a.rjust(8) + b.rjust(8)+ " Cover " + c + "\n")
- OUTPUT.write("-"*78 + '\n')
-
- # Data
- keys = list(covdata.keys())
- keys.sort(key=options.sort_uncovered and _num_uncovered or \
- options.sort_percent and _percent_uncovered or _alpha)
- for key in keys:
- (t, n, txt) = covdata[key].summary()
- total_lines += t
- total_covered += n
- OUTPUT.write(txt + '\n')
-
- # Footer & summary
- OUTPUT.write("-"*78 + '\n')
- percent = total_lines and str(int(100.0*total_covered/total_lines)) or "--"
- OUTPUT.write("TOTAL".ljust(40) + str(total_lines).rjust(8) + \
- str(total_covered).rjust(8) + str(percent).rjust(6)+"%" + '\n')
- OUTPUT.write("-"*78 + '\n')
-
- # Close logfile
- if options.output:
- OUTPUT.close()
-
-#
-# Produce an XML report in the Cobertura format
-#
-def print_xml_report(covdata):
- branchTotal = 0
- branchCovered = 0
- lineTotal = 0
- lineCovered = 0
-
- options.show_branch = True
- for key in covdata.keys():
- (total, covered, percent) = covdata[key].coverage()
- branchTotal += total
- branchCovered += covered
-
- options.show_branch = False
- for key in covdata.keys():
- (total, covered, percent) = covdata[key].coverage()
- lineTotal += total
- lineCovered += covered
-
- impl = xml.dom.minidom.getDOMImplementation()
- docType = impl.createDocumentType(
- "coverage", None,
- "http://cobertura.sourceforge.net/xml/coverage-03.dtd" )
- doc = impl.createDocument(None, "coverage", docType)
- root = doc.documentElement
- root.setAttribute( "line-rate", lineTotal == 0 and '0.0' or
- str(float(lineCovered) / lineTotal) )
- root.setAttribute( "branch-rate", branchTotal == 0 and '0.0' or
- str(float(branchCovered) / branchTotal) )
- root.setAttribute( "timestamp", str(int(time.time())) )
- root.setAttribute( "version", "gcovr %s" % (version_str(),) )
-
- # Generate the <sources> element: this is either the root directory
- # (specified by --root), or the CWD.
- sources = doc.createElement("sources")
- root.appendChild(sources)
-
- # Generate the coverage output (on a per-package basis)
- packageXml = doc.createElement("packages")
- root.appendChild(packageXml)
- packages = {}
- source_dirs = set()
-
- keys = list(covdata.keys())
- keys.sort()
- for f in keys:
- data = covdata[f]
- dir = options.filter.sub('',f)
- if f.endswith(dir):
- src_path = f[:-1*len(dir)]
- if len(src_path) > 0:
- while dir.startswith(os.path.sep):
- src_path += os.path.sep
- dir = dir[len(os.path.sep):]
- source_dirs.add(src_path)
- else:
- # Do no truncation if the filter does not start matching at
- # the beginning of the string
- dir = f
- (dir, fname) = os.path.split(dir)
-
- package = packages.setdefault(
- dir, [ doc.createElement("package"), {},
- 0, 0, 0, 0 ] )
- c = doc.createElement("class")
- lines = doc.createElement("lines")
- c.appendChild(lines)
-
- class_lines = 0
- class_hits = 0
- class_branches = 0
- class_branch_hits = 0
- for line in data.all_lines:
- hits = data.covered.get(line, 0)
- class_lines += 1
- if hits > 0:
- class_hits += 1
- l = doc.createElement("line")
- l.setAttribute("number", str(line))
- l.setAttribute("hits", str(hits))
- branches = data.branches.get(line)
- if branches is None:
- l.setAttribute("branch", "false")
- else:
- b_hits = 0
- for v in branches.values():
- if v > 0:
- b_hits += 1
- coverage = 100*b_hits/len(branches)
- l.setAttribute("branch", "true")
- l.setAttribute( "condition-coverage",
- "%i%% (%i/%i)" %
- (coverage, b_hits, len(branches)) )
- cond = doc.createElement('condition')
- cond.setAttribute("number", "0")
- cond.setAttribute("type", "jump")
- cond.setAttribute("coverage", "%i%%" % ( coverage ) )
- class_branch_hits += b_hits
- class_branches += float(len(branches))
- conditions = doc.createElement("conditions")
- conditions.appendChild(cond)
- l.appendChild(conditions)
-
- lines.appendChild(l)
-
- className = fname.replace('.', '_')
- c.setAttribute("name", className)
- c.setAttribute("filename", os.path.join(dir, fname))
- c.setAttribute("line-rate", str(class_hits / (1.0*class_lines or 1.0)))
- c.setAttribute( "branch-rate",
- str(class_branch_hits / (1.0*class_branches or 1.0)) )
- c.setAttribute("complexity", "0.0")
-
- package[1][className] = c
- package[2] += class_hits
- package[3] += class_lines
- package[4] += class_branch_hits
- package[5] += class_branches
-
- for packageName, packageData in packages.items():
- package = packageData[0];
- packageXml.appendChild(package)
- classes = doc.createElement("classes")
- package.appendChild(classes)
- classNames = list(packageData[1].keys())
- classNames.sort()
- for className in classNames:
- classes.appendChild(packageData[1][className])
- package.setAttribute("name", packageName.replace(os.sep, '.'))
- package.setAttribute("line-rate", str(packageData[2]/(1.0*packageData[3] or 1.0)))
- package.setAttribute( "branch-rate", str(packageData[4] / (1.0*packageData[5] or 1.0) ))
- package.setAttribute("complexity", "0.0")
-
-
- # Populate the <sources> element: this is either the root directory
- # (specified by --root), or relative directories based
- # on the filter, or the CWD
- if options.root is not None:
- source = doc.createElement("source")
- source.appendChild(doc.createTextNode(options.root.strip()))
- sources.appendChild(source)
- elif len(source_dirs) > 0:
- cwd = os.getcwd()
- for d in source_dirs:
- source = doc.createElement("source")
- if d.startswith(cwd):
- reldir = d[len(cwd):].lstrip(os.path.sep)
- elif cwd.startswith(d):
- i = 1
- while normpath(d) != normpath(os.path.join(*tuple([cwd]+['..']*i))):
- i += 1
- reldir = os.path.join(*tuple(['..']*i))
- else:
- reldir = d
- source.appendChild(doc.createTextNode(reldir.strip()))
- sources.appendChild(source)
- else:
- source = doc.createElement("source")
- source.appendChild(doc.createTextNode('.'))
- sources.appendChild(source)
-
- if options.prettyxml:
- import textwrap
- lines = doc.toprettyxml(" ").split('\n')
- for i in xrange(len(lines)):
- n=0
- while n < len(lines[i]) and lines[i][n] == " ":
- n += 1
- lines[i] = "\n".join(textwrap.wrap(lines[i], 78, break_long_words=False, break_on_hyphens=False, subsequent_indent=" "+ n*" "))
- xmlString = "\n".join(lines)
- #print textwrap.wrap(doc.toprettyxml(" "), 80)
- else:
- xmlString = doc.toprettyxml(indent="")
- if options.output is None:
- sys.stdout.write(xmlString+'\n')
- else:
- OUTPUT = open(options.output, 'w')
- OUTPUT.write(xmlString +'\n')
- OUTPUT.close()
-
-
-##
-## MAIN
-##
-
-#
-# Create option parser
-#
-parser = OptionParser()
-parser.add_option("--version",
- help="Print the version number, then exit",
- action="store_true",
- dest="version",
- default=False)
-parser.add_option("-v","--verbose",
- help="Print progress messages",
- action="store_true",
- dest="verbose",
- default=False)
-parser.add_option('--object-directory',
- help="Specify the directory that contains the gcov data files. gcovr must be able to identify the path between the *.gcda files and the directory where gcc was originally run. Normally, gcovr can guess correctly. This option overrides gcovr's normal path detection and can specify either the path from gcc to the gcda file (i.e. what was passed to gcc's '-o' option), or the path from the gcda file to gcc's original working directory.",
- action="store",
- dest="objdir",
- default=None)
-parser.add_option("-o","--output",
- help="Print output to this filename",
- action="store",
- dest="output",
- default=None)
-parser.add_option("-k","--keep",
- help="Keep the temporary *.gcov files generated by gcov. By default, these are deleted.",
- action="store_true",
- dest="keep",
- default=False)
-parser.add_option("-d","--delete",
- help="Delete the coverage files after they are processed. These are generated by the users's program, and by default gcovr does not remove these files.",
- action="store_true",
- dest="delete",
- default=False)
-parser.add_option("-f","--filter",
- help="Keep only the data files that match this regular expression",
- action="store",
- dest="filter",
- default=None)
-parser.add_option("-e","--exclude",
- help="Exclude data files that match this regular expression",
- action="append",
- dest="exclude",
- default=[])
-parser.add_option("--gcov-filter",
- help="Keep only gcov data files that match this regular expression",
- action="store",
- dest="gcov_filter",
- default=None)
-parser.add_option("--gcov-exclude",
- help="Exclude gcov data files that match this regular expression",
- action="append",
- dest="gcov_exclude",
- default=[])
-parser.add_option("-r","--root",
- help="Defines the root directory. This is used to filter the files, and to standardize the output.",
- action="store",
- dest="root",
- default=None)
-parser.add_option("-x","--xml",
- help="Generate XML instead of the normal tabular output.",
- action="store_true",
- dest="xml",
- default=False)
-parser.add_option("--xml-pretty",
- help="Generate pretty XML instead of the normal dense format.",
- action="store_true",
- dest="prettyxml",
- default=False)
-parser.add_option("-b","--branches",
- help="Tabulate the branch coverage instead of the line coverage.",
- action="store_true",
- dest="show_branch",
- default=None)
-parser.add_option("-u","--sort-uncovered",
- help="Sort entries by increasing number of uncovered lines.",
- action="store_true",
- dest="sort_uncovered",
- default=None)
-parser.add_option("-p","--sort-percentage",
- help="Sort entries by decreasing percentage of covered lines.",
- action="store_true",
- dest="sort_percent",
- default=None)
-parser.usage="gcovr [options]"
-parser.description="A utility to run gcov and generate a simple report that summarizes the coverage"
-#
-# Process options
-#
-(options, args) = parser.parse_args(args=sys.argv)
-if options.version:
- sys.stdout.write(
- "gcovr %s\n"
- "\n"
- "Copyright (2008) Sandia Corporation. Under the terms of Contract\n"
- "DE-AC04-94AL85000 with Sandia Corporation, the U.S. Government\n"
- "retains certain rights in this software.\n"
- % (version_str(),) )
- sys.exit(0)
-if options.objdir:
- tmp = options.objdir.replace('/',os.sep).replace('\\',os.sep)
- while os.sep+os.sep in tmp:
- tmp = tmp.replace(os.sep+os.sep, os.sep)
- if normpath(options.objdir) != tmp:
- sys.stderr.write(
- "(WARNING) relative referencing in --object-directory.\n"
- "\tthis could cause strange errors when gcovr attempts to\n"
- "\tidentify the original gcc working directory.\n")
-#
-# Setup filters
-#
-for i in range(0,len(options.exclude)):
- options.exclude[i] = re.compile(options.exclude[i])
-if options.filter is not None:
- options.filter = re.compile(options.filter)
-elif options.root is not None:
- if not options.root:
- sys.stderr.write(
- "(ERROR) empty --root option.\n"
- "\tRoot specifies the path to the root directory of your project.\n"
- "\tThis option cannot be an empty string.\n")
- sys.exit(1)
- options.filter = re.compile(re.escape(os.path.abspath(options.root)+os.sep))
-if options.filter is None:
- options.filter = re.compile('')
-#
-for i in range(0,len(options.gcov_exclude)):
- options.gcov_exclude[i] = re.compile(options.gcov_exclude[i])
-if options.gcov_filter is not None:
- options.gcov_filter = re.compile(options.gcov_filter)
-else:
- options.gcov_filter = re.compile('')
-#
-# Get data files
-#
-if len(args) == 1:
- datafiles = get_datafiles(["."], options)
-else:
- datafiles = get_datafiles(args[1:], options)
-#
-# Get coverage data
-#
-covdata = {}
-for file in datafiles:
- process_datafile(file,covdata,options)
-if options.verbose:
- sys.stdout.write("Gathered coveraged data for "+str(len(covdata))+" files\n")
-#
-# Print report
-#
-if options.xml or options.prettyxml:
- print_xml_report(covdata)
-else:
- print_text_report(covdata)
diff --git a/Tools/Scripts/webkitpy/tool/grammar.py b/Tools/Scripts/webkitpy/tool/grammar.py
deleted file mode 100644
index 8db9826f8..000000000
--- a/Tools/Scripts/webkitpy/tool/grammar.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-
-import re
-
-
-def plural(noun):
- # This is a dumb plural() implementation that is just enough for our uses.
- if re.search("h$", noun):
- return noun + "es"
- else:
- return noun + "s"
-
-
-def pluralize(noun, count):
- if count != 1:
- noun = plural(noun)
- return "%d %s" % (count, noun)
-
-
-def join_with_separators(list_of_strings, separator=', ', only_two_separator=" and ", last_separator=', and '):
- if not list_of_strings:
- return ""
- if len(list_of_strings) == 1:
- return list_of_strings[0]
- if len(list_of_strings) == 2:
- return only_two_separator.join(list_of_strings)
- return "%s%s%s" % (separator.join(list_of_strings[:-1]), last_separator, list_of_strings[-1])
diff --git a/Tools/Scripts/webkitpy/tool/grammar_unittest.py b/Tools/Scripts/webkitpy/tool/grammar_unittest.py
deleted file mode 100644
index dd8081f32..000000000
--- a/Tools/Scripts/webkitpy/tool/grammar_unittest.py
+++ /dev/null
@@ -1,38 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.grammar import join_with_separators
-
-class GrammarTest(unittest.TestCase):
-
- def test_join_with_separators(self):
- self.assertEqual(join_with_separators(["one"]), "one")
- self.assertEqual(join_with_separators(["one", "two"]), "one and two")
- self.assertEqual(join_with_separators(["one", "two", "three"]), "one, two, and three")
diff --git a/Tools/Scripts/webkitpy/tool/main.py b/Tools/Scripts/webkitpy/tool/main.py
deleted file mode 100644
index 3fa6e6b5b..000000000
--- a/Tools/Scripts/webkitpy/tool/main.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (c) 2010 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-#
-# A tool for automating dealing with bugzilla, posting patches, committing patches, etc.
-
-from optparse import make_option
-import os
-import threading
-
-from webkitpy.common.config.ports import DeprecatedPort
-from webkitpy.common.host import Host
-from webkitpy.common.net.irc import ircproxy
-from webkitpy.common.net.statusserver import StatusServer
-from webkitpy.tool.multicommandtool import MultiCommandTool
-from webkitpy.tool import commands
-
-
-class WebKitPatch(MultiCommandTool, Host):
- global_options = [
- make_option("-v", "--verbose", action="store_true", dest="verbose", default=False, help="enable all logging"),
- make_option("-d", "--directory", action="append", dest="patch_directories", default=[], help="Directory to look at for changed files"),
- make_option("--status-host", action="store", dest="status_host", type="string", help="Hostname (e.g. localhost or commit.webkit.org) where status updates should be posted."),
- make_option("--bot-id", action="store", dest="bot_id", type="string", help="Identifier for this bot (if multiple bots are running for a queue)"),
- make_option("--irc-password", action="store", dest="irc_password", type="string", help="Password to use when communicating via IRC."),
- make_option("--seconds-to-sleep", action="store", default=120, type="int", help="Number of seconds to sleep in the task queue."),
- make_option("--port", action="store", dest="port", default=None, help="Specify a port (e.g., mac, qt, gtk, ...)."),
- ]
-
- def __init__(self, path):
- MultiCommandTool.__init__(self)
- Host.__init__(self)
- self._path = path
- self.status_server = StatusServer()
-
- self.wakeup_event = threading.Event()
- self._irc = None
- self._deprecated_port = None
-
- def deprecated_port(self):
- return self._deprecated_port
-
- def path(self):
- return self._path
-
- def ensure_irc_connected(self, irc_delegate):
- if not self._irc:
- self._irc = ircproxy.IRCProxy(irc_delegate)
-
- def irc(self):
- # We don't automatically construct IRCProxy here because constructing
- # IRCProxy actually connects to IRC. We want clients to explicitly
- # connect to IRC.
- return self._irc
-
- def command_completed(self):
- if self._irc:
- self._irc.disconnect()
-
- def should_show_in_main_help(self, command):
- if not command.show_in_main_help:
- return False
- if command.requires_local_commits:
- return self.scm().supports_local_commits()
- return True
-
- # FIXME: This may be unnecessary since we pass global options to all commands during execute() as well.
- def handle_global_options(self, options):
- self.initialize_scm(options.patch_directories)
- if options.status_host:
- self.status_server.set_host(options.status_host)
- if options.bot_id:
- self.status_server.set_bot_id(options.bot_id)
- if options.irc_password:
- self.irc_password = options.irc_password
- # If options.port is None, we'll get the default port for this platform.
- self._deprecated_port = DeprecatedPort.port(options.port)
-
- def should_execute_command(self, command):
- if command.requires_local_commits and not self.scm().supports_local_commits():
- failure_reason = "%s requires local commits using %s in %s." % (command.name, self.scm().display_name(), self.scm().checkout_root)
- return (False, failure_reason)
- return (True, None)
diff --git a/Tools/Scripts/webkitpy/tool/mocktool.py b/Tools/Scripts/webkitpy/tool/mocktool.py
deleted file mode 100644
index 175d1b848..000000000
--- a/Tools/Scripts/webkitpy/tool/mocktool.py
+++ /dev/null
@@ -1,85 +0,0 @@
-# Copyright (C) 2011 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.
-
-import threading
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.net.buildbot.buildbot_mock import MockBuildBot
-from webkitpy.common.net.statusserver_mock import MockStatusServer
-from webkitpy.common.net.irc.irc_mock import MockIRC
-
-# FIXME: Old-style "Ports" need to die and be replaced by modern layout_tests.port which needs to move to common.
-from webkitpy.common.config.ports_mock import MockPort
-
-
-# FIXME: We should just replace this with optparse.Values(default=kwargs)
-class MockOptions(object):
- """Mock implementation of optparse.Values."""
-
- def __init__(self, **kwargs):
- # The caller can set option values using keyword arguments. We don't
- # set any values by default because we don't know how this
- # object will be used. Generally speaking unit tests should
- # subclass this or provider wrapper functions that set a common
- # set of options.
- self.update(**kwargs)
-
- def update(self, **kwargs):
- self.__dict__.update(**kwargs)
- return self
-
- def ensure_value(self, key, value):
- if getattr(self, key, None) == None:
- self.__dict__[key] = value
- return self.__dict__[key]
-
-
-# FIXME: This should be renamed MockWebKitPatch.
-class MockTool(MockHost):
- def __init__(self, *args, **kwargs):
- MockHost.__init__(self, *args, **kwargs)
-
- self._deprecated_port = MockPort()
- self.status_server = MockStatusServer()
-
- self._irc = None
- self.irc_password = "MOCK irc password"
- self.wakeup_event = threading.Event()
-
- def deprecated_port(self):
- return self._deprecated_port
-
- def path(self):
- return "echo"
-
- def ensure_irc_connected(self, delegate):
- if not self._irc:
- self._irc = MockIRC()
-
- def irc(self):
- return self._irc
diff --git a/Tools/Scripts/webkitpy/tool/mocktool_unittest.py b/Tools/Scripts/webkitpy/tool/mocktool_unittest.py
deleted file mode 100644
index 35fdd3aac..000000000
--- a/Tools/Scripts/webkitpy/tool/mocktool_unittest.py
+++ /dev/null
@@ -1,55 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from mocktool import MockOptions
-
-
-class MockOptionsTest(unittest.TestCase):
- # MockOptions() should implement the same semantics that
- # optparse.Values does.
-
- def test_get__set(self):
- # Test that we can still set options after we construct the
- # object.
- options = MockOptions()
- options.foo = 'bar'
- self.assertEqual(options.foo, 'bar')
-
- def test_get__unset(self):
- # Test that unset options raise an exception (regular Mock
- # objects return an object and hence are different from
- # optparse.Values()).
- options = MockOptions()
- self.assertRaises(AttributeError, lambda: options.foo)
-
- def test_kwarg__set(self):
- # Test that keyword arguments work in the constructor.
- options = MockOptions(foo='bar')
- self.assertEqual(options.foo, 'bar')
diff --git a/Tools/Scripts/webkitpy/tool/multicommandtool.py b/Tools/Scripts/webkitpy/tool/multicommandtool.py
deleted file mode 100644
index 01b022f32..000000000
--- a/Tools/Scripts/webkitpy/tool/multicommandtool.py
+++ /dev/null
@@ -1,311 +0,0 @@
-# Copyright (c) 2009 Google Inc. All rights reserved.
-# 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:
-#
-# * 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.
-#
-# MultiCommandTool provides a framework for writing svn-like/git-like tools
-# which are called with the following format:
-# tool-name [global options] command-name [command options]
-
-import logging
-import sys
-
-from optparse import OptionParser, IndentedHelpFormatter, SUPPRESS_USAGE, make_option
-
-from webkitpy.tool.grammar import pluralize
-
-_log = logging.getLogger(__name__)
-
-
-class TryAgain(Exception):
- pass
-
-
-class Command(object):
- name = None
- show_in_main_help = False
- help_text = None
- long_help = None
- argument_names = None
-
- def __init__(self, options=None, requires_local_commits=False):
- self.required_arguments = self._parse_required_arguments(self.argument_names)
- self.options = options
- self.requires_local_commits = requires_local_commits
- self._tool = None
- # option_parser can be overriden by the tool using set_option_parser
- # This default parser will be used for standalone_help printing.
- self.option_parser = HelpPrintingOptionParser(usage=SUPPRESS_USAGE, add_help_option=False, option_list=self.options)
-
- def _exit(self, code):
- sys.exit(code)
-
- # This design is slightly awkward, but we need the
- # the tool to be able to create and modify the option_parser
- # before it knows what Command to run.
- def set_option_parser(self, option_parser):
- self.option_parser = option_parser
- self._add_options_to_parser()
-
- def _add_options_to_parser(self):
- options = self.options or []
- for option in options:
- self.option_parser.add_option(option)
-
- # The tool calls bind_to_tool on each Command after adding it to its list.
- def bind_to_tool(self, tool):
- # Command instances can only be bound to one tool at a time.
- if self._tool and tool != self._tool:
- raise Exception("Command already bound to tool!")
- self._tool = tool
-
- @staticmethod
- def _parse_required_arguments(argument_names):
- required_args = []
- if not argument_names:
- return required_args
- split_args = argument_names.split(" ")
- for argument in split_args:
- if argument[0] == '[':
- # For now our parser is rather dumb. Do some minimal validation that
- # we haven't confused it.
- if argument[-1] != ']':
- raise Exception("Failure to parse argument string %s. Argument %s is missing ending ]" % (argument_names, argument))
- else:
- required_args.append(argument)
- return required_args
-
- def name_with_arguments(self):
- usage_string = self.name
- if self.options:
- usage_string += " [options]"
- if self.argument_names:
- usage_string += " " + self.argument_names
- return usage_string
-
- def parse_args(self, args):
- return self.option_parser.parse_args(args)
-
- def check_arguments_and_execute(self, options, args, tool=None):
- if len(args) < len(self.required_arguments):
- _log.error("%s required, %s provided. Provided: %s Required: %s\nSee '%s help %s' for usage." % (
- pluralize("argument", len(self.required_arguments)),
- pluralize("argument", len(args)),
- "'%s'" % " ".join(args),
- " ".join(self.required_arguments),
- tool.name(),
- self.name))
- return 1
- return self.execute(options, args, tool) or 0
-
- def standalone_help(self):
- help_text = self.name_with_arguments().ljust(len(self.name_with_arguments()) + 3) + self.help_text + "\n\n"
- if self.long_help:
- help_text += "%s\n\n" % self.long_help
- help_text += self.option_parser.format_option_help(IndentedHelpFormatter())
- return help_text
-
- def execute(self, options, args, tool):
- raise NotImplementedError, "subclasses must implement"
-
- # main() exists so that Commands can be turned into stand-alone scripts.
- # Other parts of the code will likely require modification to work stand-alone.
- def main(self, args=sys.argv):
- (options, args) = self.parse_args(args)
- # Some commands might require a dummy tool
- return self.check_arguments_and_execute(options, args)
-
-
-class HelpPrintingOptionParser(OptionParser):
- def __init__(self, epilog_method=None, *args, **kwargs):
- self.epilog_method = epilog_method
- OptionParser.__init__(self, *args, **kwargs)
-
- def error(self, msg):
- self.print_usage(sys.stderr)
- error_message = "%s: error: %s\n" % (self.get_prog_name(), msg)
- # This method is overriden to add this one line to the output:
- error_message += "\nType \"%s --help\" to see usage.\n" % self.get_prog_name()
- self.exit(1, error_message)
-
- # We override format_epilog to avoid the default formatting which would paragraph-wrap the epilog
- # and also to allow us to compute the epilog lazily instead of in the constructor (allowing it to be context sensitive).
- def format_epilog(self, epilog):
- if self.epilog_method:
- return "\n%s\n" % self.epilog_method()
- return ""
-
-
-class HelpCommand(Command):
- name = "help"
- help_text = "Display information about this program or its subcommands"
- argument_names = "[COMMAND]"
-
- def __init__(self):
- options = [
- make_option("-a", "--all-commands", action="store_true", dest="show_all_commands", help="Print all available commands"),
- ]
- Command.__init__(self, options)
- self.show_all_commands = False # A hack used to pass --all-commands to _help_epilog even though it's called by the OptionParser.
-
- def _help_epilog(self):
- # Only show commands which are relevant to this checkout's SCM system. Might this be confusing to some users?
- if self.show_all_commands:
- epilog = "All %prog commands:\n"
- relevant_commands = self._tool.commands[:]
- else:
- epilog = "Common %prog commands:\n"
- relevant_commands = filter(self._tool.should_show_in_main_help, self._tool.commands)
- longest_name_length = max(map(lambda command: len(command.name), relevant_commands))
- relevant_commands.sort(lambda a, b: cmp(a.name, b.name))
- command_help_texts = map(lambda command: " %s %s\n" % (command.name.ljust(longest_name_length), command.help_text), relevant_commands)
- epilog += "%s\n" % "".join(command_help_texts)
- epilog += "See '%prog help --all-commands' to list all commands.\n"
- epilog += "See '%prog help COMMAND' for more information on a specific command.\n"
- return epilog.replace("%prog", self._tool.name()) # Use of %prog here mimics OptionParser.expand_prog_name().
-
- # FIXME: This is a hack so that we don't show --all-commands as a global option:
- def _remove_help_options(self):
- for option in self.options:
- self.option_parser.remove_option(option.get_opt_string())
-
- def execute(self, options, args, tool):
- if args:
- command = self._tool.command_by_name(args[0])
- if command:
- print command.standalone_help()
- return 0
-
- self.show_all_commands = options.show_all_commands
- self._remove_help_options()
- self.option_parser.print_help()
- return 0
-
-
-class MultiCommandTool(object):
- global_options = None
-
- def __init__(self, name=None, commands=None):
- self._name = name or OptionParser(prog=name).get_prog_name() # OptionParser has nice logic for fetching the name.
- # Allow the unit tests to disable command auto-discovery.
- self.commands = commands or [cls() for cls in self._find_all_commands() if cls.name]
- self.help_command = self.command_by_name(HelpCommand.name)
- # Require a help command, even if the manual test list doesn't include one.
- if not self.help_command:
- self.help_command = HelpCommand()
- self.commands.append(self.help_command)
- for command in self.commands:
- command.bind_to_tool(self)
-
- @classmethod
- def _add_all_subclasses(cls, class_to_crawl, seen_classes):
- for subclass in class_to_crawl.__subclasses__():
- if subclass not in seen_classes:
- seen_classes.add(subclass)
- cls._add_all_subclasses(subclass, seen_classes)
-
- @classmethod
- def _find_all_commands(cls):
- commands = set()
- cls._add_all_subclasses(Command, commands)
- return sorted(commands)
-
- def name(self):
- return self._name
-
- def _create_option_parser(self):
- usage = "Usage: %prog [options] COMMAND [ARGS]"
- return HelpPrintingOptionParser(epilog_method=self.help_command._help_epilog, prog=self.name(), usage=usage)
-
- @staticmethod
- def _split_command_name_from_args(args):
- # Assume the first argument which doesn't start with "-" is the command name.
- command_index = 0
- for arg in args:
- if arg[0] != "-":
- break
- command_index += 1
- else:
- return (None, args[:])
-
- command = args[command_index]
- return (command, args[:command_index] + args[command_index + 1:])
-
- def command_by_name(self, command_name):
- for command in self.commands:
- if command_name == command.name:
- return command
- return None
-
- def path(self):
- raise NotImplementedError, "subclasses must implement"
-
- def command_completed(self):
- pass
-
- def should_show_in_main_help(self, command):
- return command.show_in_main_help
-
- def should_execute_command(self, command):
- return True
-
- def _add_global_options(self, option_parser):
- global_options = self.global_options or []
- for option in global_options:
- option_parser.add_option(option)
-
- def handle_global_options(self, options):
- pass
-
- def main(self, argv=sys.argv):
- (command_name, args) = self._split_command_name_from_args(argv[1:])
-
- option_parser = self._create_option_parser()
- self._add_global_options(option_parser)
-
- command = self.command_by_name(command_name) or self.help_command
- if not command:
- option_parser.error("%s is not a recognized command" % command_name)
-
- command.set_option_parser(option_parser)
- (options, args) = command.parse_args(args)
- self.handle_global_options(options)
-
- (should_execute, failure_reason) = self.should_execute_command(command)
- if not should_execute:
- _log.error(failure_reason)
- return 0 # FIXME: Should this really be 0?
-
- while True:
- try:
- result = command.check_arguments_and_execute(options, args, self)
- break
- except TryAgain, e:
- pass
-
- self.command_completed()
- return result
diff --git a/Tools/Scripts/webkitpy/tool/multicommandtool_unittest.py b/Tools/Scripts/webkitpy/tool/multicommandtool_unittest.py
deleted file mode 100644
index a498e6929..000000000
--- a/Tools/Scripts/webkitpy/tool/multicommandtool_unittest.py
+++ /dev/null
@@ -1,180 +0,0 @@
-# Copyright (c) 2009 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.
-
-import sys
-import unittest2 as unittest
-
-from optparse import make_option
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.multicommandtool import MultiCommandTool, Command, TryAgain
-
-
-class TrivialCommand(Command):
- name = "trivial"
- show_in_main_help = True
- help_text = "help text"
- def __init__(self, **kwargs):
- Command.__init__(self, **kwargs)
-
- def execute(self, options, args, tool):
- pass
-
-
-class UncommonCommand(TrivialCommand):
- name = "uncommon"
- show_in_main_help = False
-
-
-class LikesToRetry(Command):
- name = "likes-to-retry"
- show_in_main_help = True
- help_text = "help text"
-
- def __init__(self, **kwargs):
- Command.__init__(self, **kwargs)
- self.execute_count = 0
-
- def execute(self, options, args, tool):
- self.execute_count += 1
- if self.execute_count < 2:
- raise TryAgain()
-
-
-class CommandTest(unittest.TestCase):
- def test_name_with_arguments(self):
- TrivialCommand.argument_names = "ARG1 ARG2"
- command_with_args = TrivialCommand()
- self.assertEqual(command_with_args.name_with_arguments(), "trivial ARG1 ARG2")
-
- TrivialCommand.argument_names = None
- command_with_args = TrivialCommand(options=[make_option("--my_option")])
- self.assertEqual(command_with_args.name_with_arguments(), "trivial [options]")
-
- def test_parse_required_arguments(self):
- self.assertEqual(Command._parse_required_arguments("ARG1 ARG2"), ["ARG1", "ARG2"])
- self.assertEqual(Command._parse_required_arguments("[ARG1] [ARG2]"), [])
- self.assertEqual(Command._parse_required_arguments("[ARG1] ARG2"), ["ARG2"])
- # Note: We might make our arg parsing smarter in the future and allow this type of arguments string.
- self.assertRaises(Exception, Command._parse_required_arguments, "[ARG1 ARG2]")
-
- def test_required_arguments(self):
- TrivialCommand.argument_names = "ARG1 ARG2 [ARG3]"
- two_required_arguments = TrivialCommand()
- expected_logs = "2 arguments required, 1 argument provided. Provided: 'foo' Required: ARG1 ARG2\nSee 'trivial-tool help trivial' for usage.\n"
- exit_code = OutputCapture().assert_outputs(self, two_required_arguments.check_arguments_and_execute, [None, ["foo"], TrivialTool()], expected_logs=expected_logs)
- self.assertEqual(exit_code, 1)
- TrivialCommand.argument_names = None
-
-
-class TrivialTool(MultiCommandTool):
- def __init__(self, commands=None):
- MultiCommandTool.__init__(self, name="trivial-tool", commands=commands)
-
- def path(self):
- return __file__
-
- def should_execute_command(self, command):
- return (True, None)
-
-
-class MultiCommandToolTest(unittest.TestCase):
- def _assert_split(self, args, expected_split):
- self.assertEqual(MultiCommandTool._split_command_name_from_args(args), expected_split)
-
- def test_split_args(self):
- # MultiCommandToolTest._split_command_name_from_args returns: (command, args)
- full_args = ["--global-option", "command", "--option", "arg"]
- full_args_expected = ("command", ["--global-option", "--option", "arg"])
- self._assert_split(full_args, full_args_expected)
-
- full_args = []
- full_args_expected = (None, [])
- self._assert_split(full_args, full_args_expected)
-
- full_args = ["command", "arg"]
- full_args_expected = ("command", ["arg"])
- self._assert_split(full_args, full_args_expected)
-
- def test_command_by_name(self):
- # This also tests Command auto-discovery.
- tool = TrivialTool()
- self.assertEqual(tool.command_by_name("trivial").name, "trivial")
- self.assertEqual(tool.command_by_name("bar"), None)
-
- def _assert_tool_main_outputs(self, tool, main_args, expected_stdout, expected_stderr = "", expected_exit_code=0):
- exit_code = OutputCapture().assert_outputs(self, tool.main, [main_args], expected_stdout=expected_stdout, expected_stderr=expected_stderr)
- self.assertEqual(exit_code, expected_exit_code)
-
- def test_retry(self):
- likes_to_retry = LikesToRetry()
- tool = TrivialTool(commands=[likes_to_retry])
- tool.main(["tool", "likes-to-retry"])
- self.assertEqual(likes_to_retry.execute_count, 2)
-
- def test_global_help(self):
- tool = TrivialTool(commands=[TrivialCommand(), UncommonCommand()])
- expected_common_commands_help = """Usage: trivial-tool [options] COMMAND [ARGS]
-
-Options:
- -h, --help show this help message and exit
-
-Common trivial-tool commands:
- trivial help text
-
-See 'trivial-tool help --all-commands' to list all commands.
-See 'trivial-tool help COMMAND' for more information on a specific command.
-
-"""
- self._assert_tool_main_outputs(tool, ["tool"], expected_common_commands_help)
- self._assert_tool_main_outputs(tool, ["tool", "help"], expected_common_commands_help)
- expected_all_commands_help = """Usage: trivial-tool [options] COMMAND [ARGS]
-
-Options:
- -h, --help show this help message and exit
-
-All trivial-tool commands:
- help Display information about this program or its subcommands
- trivial help text
- uncommon help text
-
-See 'trivial-tool help --all-commands' to list all commands.
-See 'trivial-tool help COMMAND' for more information on a specific command.
-
-"""
- self._assert_tool_main_outputs(tool, ["tool", "help", "--all-commands"], expected_all_commands_help)
- # Test that arguments can be passed before commands as well
- self._assert_tool_main_outputs(tool, ["tool", "--all-commands", "help"], expected_all_commands_help)
-
-
- def test_command_help(self):
- TrivialCommand.long_help = "LONG HELP"
- command_with_options = TrivialCommand(options=[make_option("--my_option")])
- tool = TrivialTool(commands=[command_with_options])
- expected_subcommand_help = "trivial [options] help text\n\nLONG HELP\n\nOptions:\n --my_option=MY_OPTION\n\n"
- self._assert_tool_main_outputs(tool, ["tool", "help", "trivial"], expected_subcommand_help)
diff --git a/Tools/Scripts/webkitpy/tool/servers/__init__.py b/Tools/Scripts/webkitpy/tool/servers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/index.html b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/index.html
deleted file mode 100644
index f40a34d5b..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/index.html
+++ /dev/null
@@ -1,182 +0,0 @@
-<!DOCTYPE html>
-<!--
- Copyright (c) 2010 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.
--->
-<html>
-<head>
- <title>Layout Test Rebaseline Server</title>
- <link rel="stylesheet" href="/main.css" type="text/css">
- <script src="/util.js"></script>
- <script src="/loupe.js"></script>
- <script src="/main.js"></script>
- <script src="/queue.js"></script>
-</head>
-<body class="loading">
-
-<pre id="log" style="display: none"></pre>
-<div id="queue" style="display: none">
- Queue:
- <select id="queue-select" size="10"></select>
- <button id="remove-queue-selection">Remove selection</button>
- <button id="rebaseline-queue">Rebaseline queue</button>
-</div>
-
-<div id="header">
- <div id="controls">
- <!-- Add a dummy <select> node so that this lines up with the text on the left -->
- <select style="visibility: hidden"></select>
- <span id="toggle-sort" class="link">Sort tests by metric</span>
- <span class="divider">|</span>
- <span id="toggle-log" class="link">Log</span>
- <span class="divider">|</span>
- <a href="/quitquitquit">Exit</a>
- </div>
-
- <span id="selectors">
- <label>
- Failure type:
- <select id="failure-type-selector"></select>
- </label>
-
- <label>
- Directory:
- <select id="directory-selector"></select>
- </label>
-
- <label>
- Test:
- <select id="test-selector"></select>
- </label>
- </span>
-
- <a id="test-link" target="_blank">View test</a>
-
- <span id="nav-buttons">
- <button id="previous-test">&laquo;</button>
- <span id="test-index"></span> of <span id="test-count"></span>
- <button id="next-test">&raquo;</button>
- </span>
-</div>
-
-<table id="test-output">
- <thead id="labels">
- <tr>
- <th>Expected</th>
- <th>Actual</th>
- <th>Diff</th>
- </tr>
- </thead>
- <tbody id="image-outputs" style="display: none">
- <tr>
- <td colspan="3"><h2>Image</h2></td>
- </tr>
- <tr>
- <td><img id="expected-image"></td>
- <td><img id="actual-image"></td>
- <td>
- <canvas id="diff-canvas" width="800" height="600"></canvas>
- <div id="diff-checksum" style="display: none">
- <h3>Checksum mismatch</h3>
- Expected: <span id="expected-checksum"></span><br>
- Actual: <span id="actual-checksum"></span>
- </div>
- </td>
- </tr>
- </tbody>
- <tbody id="text-outputs" style="display: none">
- <tr>
- <td colspan="3"><h2>Text</h2></td>
- </tr>
- <tr>
- <td><pre id="expected-text" class="text-output"></pre></td>
- <td><pre id="actual-text" class="text-output"></pre></td>
- <td><div id="diff-text-pretty" class="text-output"></div></td>
- </tr>
- </tbody>
-</table>
-
-<div id="footer">
- <label>State: <span id="state"></span></label>
- <label>Existing baselines: <span id="current-baselines"></span></label>
- <label>
- Baseline target:
- <select id="baseline-target"></select>
- </label>
- <label>
- Move current baselines to:
- <select id="baseline-move-to">
- <option value="none">Nowhere (replace)</option>
- </select>
- </label>
-
- <!-- Add a dummy <button> node so that this lines up with the text on the right -->
- <button style="visibility: hidden; padding-left: 0; padding-right: 0;"></button>
-
- <div id="action-buttons">
- <span id="toggle-queue" class="link">Queue</span>
- <button id="add-to-rebaseline-queue">Add to rebaseline queue</button>
- </div>
-</div>
-
-<table id="loupe" style="display: none">
- <tr>
- <td colspan="3" id="loupe-info">
- <span id="loupe-close" class="link">Close</span>
- <label>Coordinate: <span id="loupe-coordinate"></span></label>
- </td>
- </tr>
- <tr>
- <td>
- <div class="loupe-container">
- <canvas id="expected-loupe" width="210" height="210"></canvas>
- <div class="center-highlight"></div>
- </div>
- </td>
- <td>
- <div class="loupe-container">
- <canvas id="actual-loupe" width="210" height="210"></canvas>
- <div class="center-highlight"></div>
- </div>
- </td>
- <td>
- <div class="loupe-container">
- <canvas id="diff-loupe" width="210" height="210"></canvas>
- <div class="center-highlight"></div>
- </div>
- </td>
- </tr>
- <tr id="loupe-colors">
- <td><label>Exp. color: <span id="expected-loupe-color"></span></label></td>
- <td><label>Actual color: <span id="actual-loupe-color"></span></label></td>
- <td><label>Diff color: <span id="diff-loupe-color"></span></label></td>
- </tr>
-</table>
-
-</body>
-</html>
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/loupe.js b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/loupe.js
deleted file mode 100644
index 41f977ac8..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/loupe.js
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (c) 2010 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.
- */
-
-var LOUPE_MAGNIFICATION_FACTOR = 10;
-
-function Loupe()
-{
- this._node = $('loupe');
- this._currentCornerX = -1;
- this._currentCornerY = -1;
-
- var self = this;
-
- function handleOutputClick(event) { self._handleOutputClick(event); }
- $('expected-image').addEventListener('click', handleOutputClick);
- $('actual-image').addEventListener('click', handleOutputClick);
- $('diff-canvas').addEventListener('click', handleOutputClick);
-
- function handleLoupeClick(event) { self._handleLoupeClick(event); }
- $('expected-loupe').addEventListener('click', handleLoupeClick);
- $('actual-loupe').addEventListener('click', handleLoupeClick);
- $('diff-loupe').addEventListener('click', handleLoupeClick);
-
- function hide(event) { self.hide(); }
- $('loupe-close').addEventListener('click', hide);
-}
-
-Loupe.prototype._handleOutputClick = function(event)
-{
- // The -1 compensates for the border around the image/canvas.
- this._showFor(event.offsetX - 1, event.offsetY - 1);
-};
-
-Loupe.prototype._handleLoupeClick = function(event)
-{
- var deltaX = Math.floor(event.offsetX/LOUPE_MAGNIFICATION_FACTOR);
- var deltaY = Math.floor(event.offsetY/LOUPE_MAGNIFICATION_FACTOR);
-
- this._showFor(
- this._currentCornerX + deltaX, this._currentCornerY + deltaY);
-}
-
-Loupe.prototype.hide = function()
-{
- this._node.style.display = 'none';
-};
-
-Loupe.prototype._showFor = function(x, y)
-{
- this._fillFromImage(x, y, 'expected', $('expected-image'));
- this._fillFromImage(x, y, 'actual', $('actual-image'));
- this._fillFromCanvas(x, y, 'diff', $('diff-canvas'));
-
- this._node.style.display = '';
-};
-
-Loupe.prototype._fillFromImage = function(x, y, type, sourceImage)
-{
- var tempCanvas = document.createElement('canvas');
- tempCanvas.width = sourceImage.width;
- tempCanvas.height = sourceImage.height;
- var tempContext = tempCanvas.getContext('2d');
-
- tempContext.drawImage(sourceImage, 0, 0);
-
- this._fillFromCanvas(x, y, type, tempCanvas);
-};
-
-Loupe.prototype._fillFromCanvas = function(x, y, type, canvas)
-{
- var context = canvas.getContext('2d');
- var sourceImageData =
- context.getImageData(0, 0, canvas.width, canvas.height);
-
- var targetCanvas = $(type + '-loupe');
- var targetContext = targetCanvas.getContext('2d');
- targetContext.fillStyle = 'rgba(255, 255, 255, 1)';
- targetContext.fillRect(0, 0, targetCanvas.width, targetCanvas.height);
-
- var sourceXOffset = (targetCanvas.width/LOUPE_MAGNIFICATION_FACTOR - 1)/2;
- var sourceYOffset = (targetCanvas.height/LOUPE_MAGNIFICATION_FACTOR - 1)/2;
-
- function readPixelComponent(x, y, component) {
- var offset = (y * sourceImageData.width + x) * 4 + component;
- return sourceImageData.data[offset];
- }
-
- for (var i = -sourceXOffset; i <= sourceXOffset; i++) {
- for (var j = -sourceYOffset; j <= sourceYOffset; j++) {
- var sourceX = x + i;
- var sourceY = y + j;
-
- var sourceR = readPixelComponent(sourceX, sourceY, 0);
- var sourceG = readPixelComponent(sourceX, sourceY, 1);
- var sourceB = readPixelComponent(sourceX, sourceY, 2);
- var sourceA = readPixelComponent(sourceX, sourceY, 3)/255;
- sourceA = Math.round(sourceA * 10)/10;
-
- var targetX = (i + sourceXOffset) * LOUPE_MAGNIFICATION_FACTOR;
- var targetY = (j + sourceYOffset) * LOUPE_MAGNIFICATION_FACTOR;
- var colorString =
- sourceR + ', ' + sourceG + ', ' + sourceB + ', ' + sourceA;
- targetContext.fillStyle = 'rgba(' + colorString + ')';
- targetContext.fillRect(
- targetX, targetY,
- LOUPE_MAGNIFICATION_FACTOR, LOUPE_MAGNIFICATION_FACTOR);
-
- if (i == 0 && j == 0) {
- $('loupe-coordinate').textContent = sourceX + ', ' + sourceY;
- $(type + '-loupe-color').textContent = colorString;
- }
- }
- }
-
- this._currentCornerX = x - sourceXOffset;
- this._currentCornerY = y - sourceYOffset;
-};
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.css b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.css
deleted file mode 100644
index 280c3b2f9..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.css
+++ /dev/null
@@ -1,313 +0,0 @@
-/*
- * Copyright (c) 2010 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.
- */
-
-body {
- font-size: 12px;
- font-family: Helvetica, Arial, sans-serif;
- padding: 0;
- margin: 0;
-}
-
-.loading {
- opacity: 0.5;
-}
-
-div {
- margin: 0;
-}
-
-a, .link {
- color: #aaf;
- text-decoration: underline;
- cursor: pointer;
-}
-
-.link.selected {
- color: #fff;
- font-weight: bold;
- text-decoration: none;
-}
-
-#log,
-#queue {
- padding: .25em 0 0 .25em;
- position: absolute;
- right: 0;
- height: 200px;
- overflow: auto;
- background: #fff;
- -webkit-box-shadow: 1px 1px 5px rgba(0, 0, 0, .5);
-}
-
-#log {
- top: 2em;
- width: 500px;
-}
-
-#queue {
- bottom: 3em;
- width: 400px;
-}
-
-#queue-select {
- display: block;
- width: 390px;
-}
-
-#header,
-#footer {
- padding: .5em 1em;
- background: #333;
- color: #fff;
- -webkit-box-shadow: 0 1px 5px rgba(0, 0, 0, 0.5);
-}
-
-#header {
- margin-bottom: 1em;
-}
-
-#header .divider,
-#footer .divider {
- opacity: .3;
- padding: 0 .5em;
-}
-
-#header label,
-#footer label {
- padding-right: 1em;
- color: #ccc;
-}
-
-#test-link {
- margin-right: 1em;
-}
-
-#header label span,
-#footer label span {
- color: #fff;
- font-weight: bold;
-}
-
-#nav-buttons {
- white-space: nowrap;
-}
-
-#nav-buttons button {
- background: #fff;
- border: 0;
- border-radius: 10px;
-}
-
-#nav-buttons button:active {
- -webkit-box-shadow: 0 0 5px #33f inset;
- background: #aaa;
-}
-
-#nav-buttons button[disabled] {
- opacity: .5;
-}
-
-#controls {
- float: right;
-}
-
-.disabled-control {
- color: #888;
-}
-
-#test-output {
- border-spacing: 0;
- border-collapse: collapse;
- margin: 0 auto;
- width: 100%;
-}
-
-#test-output td,
-#test-output th {
- padding: 0;
- vertical-align: top;
-}
-
-#image-outputs img,
-#image-outputs canvas,
-#image-outputs #diff-checksum {
- width: 800px;
- height: 600px;
- border: solid 1px #ddd;
- -webkit-user-select: none;
- -webkit-user-drag: none;
-}
-
-#image-outputs img,
-#image-outputs canvas {
- cursor: crosshair;
-}
-
-#image-outputs img.loading,
-#image-outputs canvas.loading {
- opacity: .5;
-}
-
-#image-outputs #actual-image {
- margin: 0 1em;
-}
-
-#test-output #labels th {
- text-align: center;
- color: #666;
-}
-
-#text-outputs .text-output {
- height: 600px;
- width: 800px;
- overflow: auto;
-}
-
-#test-output h2 {
- border-bottom: solid 1px #ccc;
- font-weight: bold;
- margin: 0;
- background: #eee;
-}
-
-#footer {
- position: absolute;
- bottom: 0;
- left: 0;
- right: 0;
- margin-top: 1em;
-}
-
-#state.needs_rebaseline {
- color: yellow;
-}
-
-#state.rebaseline_failed {
- color: red;
-}
-
-#state.rebaseline_succeeded {
- color: green;
-}
-
-#state.in_queue {
- color: gray;
-}
-
-#current-baselines {
- font-weight: normal !important;
-}
-
-#current-baselines .platform {
- font-weight: bold;
-}
-
-#current-baselines a {
- color: #ddf;
-}
-
-#current-baselines .was-used-for-test {
- color: #aaf;
- font-weight: bold;
-}
-
-#action-buttons {
- float: right;
-}
-
-#action-buttons .link {
- margin-right: 1em;
-}
-
-#footer button {
- padding: 1em;
-}
-
-#loupe {
- -webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, .5);
- position: absolute;
- width: 634px;
- top: 50%;
- left: 50%;
- margin-left: -151px;
- margin-top: -50px;
- background: #fff;
- border-spacing: 0;
- border-collapse: collapse;
-}
-
-#loupe td {
- padding: 0;
- border: solid 1px #ccc;
-}
-
-#loupe label {
- color: #999;
- padding-right: 1em;
-}
-
-#loupe span {
- color: #000;
- font-weight: bold;
-}
-
-#loupe canvas {
- cursor: crosshair;
-}
-
-#loupe #loupe-close {
- float: right;
-}
-
-#loupe #loupe-info {
- background: #eee;
- padding: .3em .5em;
-}
-
-#loupe #loupe-colors td {
- text-align: center;
-}
-
-#loupe .loupe-container {
- position: relative;
- width: 210px;
- height: 210px;
-}
-
-#loupe .center-highlight {
- position: absolute;
- width: 10px;
- height: 10px;
- top: 50%;
- left: 50%;
- margin-left: -5px;
- margin-top: -5px;
- outline: solid 1px #999;
-}
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.js b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.js
deleted file mode 100644
index 5e1fa52c1..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/main.js
+++ /dev/null
@@ -1,577 +0,0 @@
-/*
- * Copyright (c) 2010 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.
- */
-
-var ALL_DIRECTORY_PATH = '[all]';
-
-var STATE_NEEDS_REBASELINE = 'needs_rebaseline';
-var STATE_REBASELINE_FAILED = 'rebaseline_failed';
-var STATE_REBASELINE_SUCCEEDED = 'rebaseline_succeeded';
-var STATE_IN_QUEUE = 'in_queue';
-var STATE_TO_DISPLAY_STATE = {};
-STATE_TO_DISPLAY_STATE[STATE_NEEDS_REBASELINE] = 'Needs rebaseline';
-STATE_TO_DISPLAY_STATE[STATE_REBASELINE_FAILED] = 'Rebaseline failed';
-STATE_TO_DISPLAY_STATE[STATE_REBASELINE_SUCCEEDED] = 'Rebaseline succeeded';
-STATE_TO_DISPLAY_STATE[STATE_IN_QUEUE] = 'In queue';
-
-var results;
-var testsByFailureType = {};
-var testsByDirectory = {};
-var selectedTests = [];
-var loupe;
-var queue;
-var shouldSortTestsByMetric = false;
-
-function main()
-{
- $('failure-type-selector').addEventListener('change', selectFailureType);
- $('directory-selector').addEventListener('change', selectDirectory);
- $('test-selector').addEventListener('change', selectTest);
- $('next-test').addEventListener('click', nextTest);
- $('previous-test').addEventListener('click', previousTest);
-
- $('toggle-log').addEventListener('click', function() { toggle('log'); });
- disableSorting();
-
- loupe = new Loupe();
- queue = new RebaselineQueue();
-
- document.addEventListener('keydown', function(event) {
- if (event.altKey || event.ctrlKey || event.metaKey || event.shiftKey) {
- return;
- }
-
- switch (event.keyIdentifier) {
- case 'Left':
- event.preventDefault();
- previousTest();
- break;
- case 'Right':
- event.preventDefault();
- nextTest();
- break;
- case 'U+0051': // q
- queue.addCurrentTest();
- break;
- case 'U+0058': // x
- queue.removeCurrentTest();
- break;
- case 'U+0052': // r
- queue.rebaseline();
- break;
- }
- });
-
- loadText('/platforms.json', function(text) {
- var platforms = JSON.parse(text);
- platforms.platforms.forEach(function(platform) {
- var platformOption = document.createElement('option');
- platformOption.value = platform;
- platformOption.textContent = platform;
-
- var targetOption = platformOption.cloneNode(true);
- targetOption.selected = platform == platforms.defaultPlatform;
- $('baseline-target').appendChild(targetOption);
- $('baseline-move-to').appendChild(platformOption.cloneNode(true));
- });
- });
-
- loadText('/results.json', function(text) {
- results = JSON.parse(text);
- displayResults();
- });
-}
-
-/**
- * Groups test results by failure type.
- */
-function displayResults()
-{
- var failureTypeSelector = $('failure-type-selector');
- var failureTypes = [];
-
- for (var testName in results.tests) {
- var test = results.tests[testName];
- if (test.actual == 'PASS') {
- continue;
- }
- var failureType = test.actual + ' (expected ' + test.expected + ')';
- if (!(failureType in testsByFailureType)) {
- testsByFailureType[failureType] = [];
- failureTypes.push(failureType);
- }
- testsByFailureType[failureType].push(testName);
- }
-
- // Sort by number of failures
- failureTypes.sort(function(a, b) {
- return testsByFailureType[b].length - testsByFailureType[a].length;
- });
-
- for (var i = 0, failureType; failureType = failureTypes[i]; i++) {
- var failureTypeOption = document.createElement('option');
- failureTypeOption.value = failureType;
- failureTypeOption.textContent = failureType + ' - ' + testsByFailureType[failureType].length + ' tests';
- failureTypeSelector.appendChild(failureTypeOption);
- }
-
- selectFailureType();
-
- document.body.className = '';
-}
-
-function enableSorting()
-{
- $('toggle-sort').onclick = function() {
- shouldSortTestsByMetric = !shouldSortTestsByMetric;
- // Regenerates the list of tests; this alphabetizes, and
- // then re-sorts if we turned sorting on.
- selectDirectory();
- }
- $('toggle-sort').classList.remove('disabled-control');
-}
-
-function disableSorting()
-{
- $('toggle-sort').onclick = function() { return false; }
- $('toggle-sort').classList.add('disabled-control');
-}
-
-/**
- * For a given failure type, gets all the tests and groups them by directory
- * (populating the directory selector with them).
- */
-function selectFailureType()
-{
- var selectedFailureType = getSelectValue('failure-type-selector');
- var tests = testsByFailureType[selectedFailureType];
-
- testsByDirectory = {}
- var displayDirectoryNamesByDirectory = {};
- var directories = [];
-
- // Include a special option for all tests
- testsByDirectory[ALL_DIRECTORY_PATH] = tests;
- displayDirectoryNamesByDirectory[ALL_DIRECTORY_PATH] = 'all';
- directories.push(ALL_DIRECTORY_PATH);
-
- // Roll up tests by ancestor directories
- tests.forEach(function(test) {
- var pathPieces = test.split('/');
- var pathDirectories = pathPieces.slice(0, pathPieces.length -1);
- var ancestorDirectory = '';
-
- pathDirectories.forEach(function(pathDirectory, index) {
- ancestorDirectory += pathDirectory + '/';
- if (!(ancestorDirectory in testsByDirectory)) {
- testsByDirectory[ancestorDirectory] = [];
- var displayDirectoryName = new Array(index * 6).join('&nbsp;') + pathDirectory;
- displayDirectoryNamesByDirectory[ancestorDirectory] = displayDirectoryName;
- directories.push(ancestorDirectory);
- }
-
- testsByDirectory[ancestorDirectory].push(test);
- });
- });
-
- directories.sort();
-
- var directorySelector = $('directory-selector');
- directorySelector.innerHTML = '';
-
- directories.forEach(function(directory) {
- var directoryOption = document.createElement('option');
- directoryOption.value = directory;
- directoryOption.innerHTML =
- displayDirectoryNamesByDirectory[directory] + ' - ' +
- testsByDirectory[directory].length + ' tests';
- directorySelector.appendChild(directoryOption);
- });
-
- selectDirectory();
-}
-
-/**
- * For a given failure type and directory and failure type, gets all the tests
- * in that directory and populatest the test selector with them.
- */
-function selectDirectory()
-{
- var previouslySelectedTest = getSelectedTest();
-
- var selectedDirectory = getSelectValue('directory-selector');
- selectedTests = testsByDirectory[selectedDirectory];
- selectedTests.sort();
-
- var testsByState = {};
- selectedTests.forEach(function(testName) {
- var state = results.tests[testName].state;
- if (state == STATE_IN_QUEUE) {
- state = STATE_NEEDS_REBASELINE;
- }
- if (!(state in testsByState)) {
- testsByState[state] = [];
- }
- testsByState[state].push(testName);
- });
-
- var optionIndexByTest = {};
-
- var testSelector = $('test-selector');
- testSelector.innerHTML = '';
-
- var selectedFailureType = getSelectValue('failure-type-selector');
- var sampleSelectedTest = testsByFailureType[selectedFailureType][0];
- var selectedTypeIsSortable = 'metric' in results.tests[sampleSelectedTest];
- if (selectedTypeIsSortable) {
- enableSorting();
- if (shouldSortTestsByMetric) {
- for (var state in testsByState) {
- testsByState[state].sort(function(a, b) {
- return results.tests[b].metric - results.tests[a].metric
- })
- }
- }
- } else
- disableSorting();
-
- for (var state in testsByState) {
- var stateOption = document.createElement('option');
- stateOption.textContent = STATE_TO_DISPLAY_STATE[state];
- stateOption.disabled = true;
- testSelector.appendChild(stateOption);
-
- testsByState[state].forEach(function(testName) {
- var testOption = document.createElement('option');
- testOption.value = testName;
- var testDisplayName = testName;
- if (testName.lastIndexOf(selectedDirectory) == 0) {
- testDisplayName = testName.substring(selectedDirectory.length);
- }
- testOption.innerHTML = '&nbsp;&nbsp;' + testDisplayName;
- optionIndexByTest[testName] = testSelector.options.length;
- testSelector.appendChild(testOption);
- });
- }
-
- if (previouslySelectedTest in optionIndexByTest) {
- testSelector.selectedIndex = optionIndexByTest[previouslySelectedTest];
- } else if (STATE_NEEDS_REBASELINE in testsByState) {
- testSelector.selectedIndex =
- optionIndexByTest[testsByState[STATE_NEEDS_REBASELINE][0]];
- selectTest();
- } else {
- testSelector.selectedIndex = 1;
- selectTest();
- }
-
- selectTest();
-}
-
-function getSelectedTest()
-{
- return getSelectValue('test-selector');
-}
-
-function selectTest()
-{
- var selectedTest = getSelectedTest();
-
- if (results.tests[selectedTest].actual.indexOf('IMAGE') != -1) {
- $('image-outputs').style.display = '';
- displayImageResults(selectedTest);
- } else {
- $('image-outputs').style.display = 'none';
- }
-
- if (results.tests[selectedTest].actual.indexOf('TEXT') != -1) {
- $('text-outputs').style.display = '';
- displayTextResults(selectedTest);
- } else {
- $('text-outputs').style.display = 'none';
- }
-
- var currentBaselines = $('current-baselines');
- currentBaselines.textContent = '';
- var baselines = results.tests[selectedTest].baselines;
- var testName = selectedTest.split('.').slice(0, -1).join('.');
- getSortedKeys(baselines).forEach(function(platform, i) {
- if (i != 0) {
- currentBaselines.appendChild(document.createTextNode('; '));
- }
- var platformName = document.createElement('span');
- platformName.className = 'platform';
- platformName.textContent = platform;
- currentBaselines.appendChild(platformName);
- currentBaselines.appendChild(document.createTextNode(' ('));
- getSortedKeys(baselines[platform]).forEach(function(extension, j) {
- if (j != 0) {
- currentBaselines.appendChild(document.createTextNode(', '));
- }
- var link = document.createElement('a');
- var baselinePath = '';
- if (platform != 'base') {
- baselinePath += 'platform/' + platform + '/';
- }
- baselinePath += testName + '-expected' + extension;
- link.href = getTracUrl(baselinePath);
- if (extension == '.checksum') {
- link.textContent = 'chk';
- } else {
- link.textContent = extension.substring(1);
- }
- link.target = '_blank';
- if (baselines[platform][extension]) {
- link.className = 'was-used-for-test';
- }
- currentBaselines.appendChild(link);
- });
- currentBaselines.appendChild(document.createTextNode(')'));
- });
-
- updateState();
- loupe.hide();
-
- prefetchNextImageTest();
-}
-
-function prefetchNextImageTest()
-{
- var testSelector = $('test-selector');
- if (testSelector.selectedIndex == testSelector.options.length - 1) {
- return;
- }
- var nextTest = testSelector.options[testSelector.selectedIndex + 1].value;
- if (results.tests[nextTest].actual.indexOf('IMAGE') != -1) {
- new Image().src = getTestResultUrl(nextTest, 'expected-image');
- new Image().src = getTestResultUrl(nextTest, 'actual-image');
- }
-}
-
-function updateState()
-{
- var testName = getSelectedTest();
- var testIndex = selectedTests.indexOf(testName);
- var testCount = selectedTests.length
- $('test-index').textContent = testIndex + 1;
- $('test-count').textContent = testCount;
-
- $('next-test').disabled = testIndex == testCount - 1;
- $('previous-test').disabled = testIndex == 0;
-
- $('test-link').href = getTracUrl(testName);
-
- var state = results.tests[testName].state;
- $('state').className = state;
- $('state').innerHTML = STATE_TO_DISPLAY_STATE[state];
-
- queue.updateState();
-}
-
-function getTestResultUrl(testName, mode)
-{
- return '/test_result?test=' + testName + '&mode=' + mode;
-}
-
-var currentExpectedImageTest;
-var currentActualImageTest;
-
-function displayImageResults(testName)
-{
- if (currentExpectedImageTest == currentActualImageTest
- && currentExpectedImageTest == testName) {
- return;
- }
-
- function displayImageResult(mode, callback) {
- var image = $(mode);
- image.className = 'loading';
- image.src = getTestResultUrl(testName, mode);
- image.onload = function() {
- image.className = '';
- callback();
- updateImageDiff();
- };
- }
-
- displayImageResult(
- 'expected-image',
- function() { currentExpectedImageTest = testName; });
- displayImageResult(
- 'actual-image',
- function() { currentActualImageTest = testName; });
-
- $('diff-canvas').className = 'loading';
- $('diff-canvas').style.display = '';
- $('diff-checksum').style.display = 'none';
-}
-
-/**
- * Computes a graphical a diff between the expected and actual images by
- * rendering each to a canvas, getting the image data, and comparing the RGBA
- * components of each pixel. The output is put into the diff canvas, with
- * identical pixels appearing at 12.5% opacity and different pixels being
- * highlighted in red.
- */
-function updateImageDiff() {
- if (currentExpectedImageTest != currentActualImageTest)
- return;
-
- var expectedImage = $('expected-image');
- var actualImage = $('actual-image');
-
- function getImageData(image) {
- var imageCanvas = document.createElement('canvas');
- imageCanvas.width = image.width;
- imageCanvas.height = image.height;
- imageCanvasContext = imageCanvas.getContext('2d');
-
- imageCanvasContext.fillStyle = 'rgba(255, 255, 255, 1)';
- imageCanvasContext.fillRect(
- 0, 0, image.width, image.height);
-
- imageCanvasContext.drawImage(image, 0, 0);
- return imageCanvasContext.getImageData(
- 0, 0, image.width, image.height);
- }
-
- var expectedImageData = getImageData(expectedImage);
- var actualImageData = getImageData(actualImage);
-
- var diffCanvas = $('diff-canvas');
- var diffCanvasContext = diffCanvas.getContext('2d');
- var diffImageData =
- diffCanvasContext.createImageData(diffCanvas.width, diffCanvas.height);
-
- // Avoiding property lookups for all these during the per-pixel loop below
- // provides a significant performance benefit.
- var expectedWidth = expectedImage.width;
- var expectedHeight = expectedImage.height;
- var expected = expectedImageData.data;
-
- var actualWidth = actualImage.width;
- var actual = actualImageData.data;
-
- var diffWidth = diffImageData.width;
- var diff = diffImageData.data;
-
- var hadDiff = false;
- for (var x = 0; x < expectedWidth; x++) {
- for (var y = 0; y < expectedHeight; y++) {
- var expectedOffset = (y * expectedWidth + x) * 4;
- var actualOffset = (y * actualWidth + x) * 4;
- var diffOffset = (y * diffWidth + x) * 4;
- if (expected[expectedOffset] != actual[actualOffset] ||
- expected[expectedOffset + 1] != actual[actualOffset + 1] ||
- expected[expectedOffset + 2] != actual[actualOffset + 2] ||
- expected[expectedOffset + 3] != actual[actualOffset + 3]) {
- hadDiff = true;
- diff[diffOffset] = 255;
- diff[diffOffset + 1] = 0;
- diff[diffOffset + 2] = 0;
- diff[diffOffset + 3] = 255;
- } else {
- diff[diffOffset] = expected[expectedOffset];
- diff[diffOffset + 1] = expected[expectedOffset + 1];
- diff[diffOffset + 2] = expected[expectedOffset + 2];
- diff[diffOffset + 3] = 32;
- }
- }
- }
-
- diffCanvasContext.putImageData(
- diffImageData,
- 0, 0,
- 0, 0,
- diffImageData.width, diffImageData.height);
- diffCanvas.className = '';
-
- if (!hadDiff) {
- diffCanvas.style.display = 'none';
- $('diff-checksum').style.display = '';
- loadTextResult(currentExpectedImageTest, 'expected-checksum');
- loadTextResult(currentExpectedImageTest, 'actual-checksum');
- }
-}
-
-function loadTextResult(testName, mode, responseIsHtml)
-{
- loadText(getTestResultUrl(testName, mode), function(text) {
- if (responseIsHtml) {
- $(mode).innerHTML = text;
- } else {
- $(mode).textContent = text;
- }
- });
-}
-
-function displayTextResults(testName)
-{
- loadTextResult(testName, 'expected-text');
- loadTextResult(testName, 'actual-text');
- loadTextResult(testName, 'diff-text-pretty', true);
-}
-
-function nextTest()
-{
- var testSelector = $('test-selector');
- var nextTestIndex = testSelector.selectedIndex + 1;
- while (true) {
- if (nextTestIndex == testSelector.options.length) {
- return;
- }
- if (testSelector.options[nextTestIndex].disabled) {
- nextTestIndex++;
- } else {
- testSelector.selectedIndex = nextTestIndex;
- selectTest();
- return;
- }
- }
-}
-
-function previousTest()
-{
- var testSelector = $('test-selector');
- var previousTestIndex = testSelector.selectedIndex - 1;
- while (true) {
- if (previousTestIndex == -1) {
- return;
- }
- if (testSelector.options[previousTestIndex].disabled) {
- previousTestIndex--;
- } else {
- testSelector.selectedIndex = previousTestIndex;
- selectTest();
- return
- }
- }
-}
-
-window.addEventListener('DOMContentLoaded', main);
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/queue.js b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/queue.js
deleted file mode 100644
index 338e28f80..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/queue.js
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- * Copyright (c) 2010 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.
- */
-
-function RebaselineQueue()
-{
- this._selectNode = $('queue-select');
- this._rebaselineButtonNode = $('rebaseline-queue');
- this._toggleNode = $('toggle-queue');
- this._removeSelectionButtonNode = $('remove-queue-selection');
-
- this._inProgressRebaselineCount = 0;
-
- var self = this;
- $('add-to-rebaseline-queue').addEventListener(
- 'click', function() { self.addCurrentTest(); });
- this._selectNode.addEventListener('change', updateState);
- this._removeSelectionButtonNode.addEventListener(
- 'click', function() { self._removeSelection(); });
- this._rebaselineButtonNode.addEventListener(
- 'click', function() { self.rebaseline(); });
- this._toggleNode.addEventListener(
- 'click', function() { toggle('queue'); });
-}
-
-RebaselineQueue.prototype.updateState = function()
-{
- var testName = getSelectedTest();
-
- var state = results.tests[testName].state;
- $('add-to-rebaseline-queue').disabled = state != STATE_NEEDS_REBASELINE;
-
- var queueLength = this._selectNode.options.length;
- if (this._inProgressRebaselineCount > 0) {
- this._rebaselineButtonNode.disabled = true;
- this._rebaselineButtonNode.textContent =
- 'Rebaseline in progress (' + this._inProgressRebaselineCount +
- ' tests left)';
- } else if (queueLength == 0) {
- this._rebaselineButtonNode.disabled = true;
- this._rebaselineButtonNode.textContent = 'Rebaseline queue';
- this._toggleNode.textContent = 'Queue';
- } else {
- this._rebaselineButtonNode.disabled = false;
- this._rebaselineButtonNode.textContent =
- 'Rebaseline queue (' + queueLength + ' tests)';
- this._toggleNode.textContent = 'Queue (' + queueLength + ' tests)';
- }
- this._removeSelectionButtonNode.disabled =
- this._selectNode.selectedIndex == -1;
-};
-
-RebaselineQueue.prototype.addCurrentTest = function()
-{
- var testName = getSelectedTest();
- var test = results.tests[testName];
-
- if (test.state != STATE_NEEDS_REBASELINE) {
- log('Cannot add test with state "' + test.state + '" to queue.',
- log.WARNING);
- return;
- }
-
- var queueOption = document.createElement('option');
- queueOption.value = testName;
- queueOption.textContent = testName;
- this._selectNode.appendChild(queueOption);
- test.state = STATE_IN_QUEUE;
- updateState();
-};
-
-RebaselineQueue.prototype.removeCurrentTest = function()
-{
- this._removeTest(getSelectedTest());
-};
-
-RebaselineQueue.prototype._removeSelection = function()
-{
- if (this._selectNode.selectedIndex == -1)
- return;
-
- this._removeTest(
- this._selectNode.options[this._selectNode.selectedIndex].value);
-};
-
-RebaselineQueue.prototype._removeTest = function(testName)
-{
- var queueOption = this._selectNode.firstChild;
-
- while (queueOption && queueOption.value != testName) {
- queueOption = queueOption.nextSibling;
- }
-
- if (!queueOption)
- return;
-
- this._selectNode.removeChild(queueOption);
- var test = results.tests[testName];
- test.state = STATE_NEEDS_REBASELINE;
- updateState();
-};
-
-RebaselineQueue.prototype.rebaseline = function()
-{
- var testNames = [];
- for (var queueOption = this._selectNode.firstChild;
- queueOption;
- queueOption = queueOption.nextSibling) {
- testNames.push(queueOption.value);
- }
-
- this._inProgressRebaselineCount = testNames.length;
- updateState();
-
- testNames.forEach(this._rebaselineTest, this);
-};
-
-RebaselineQueue.prototype._rebaselineTest = function(testName)
-{
- var baselineTarget = getSelectValue('baseline-target');
- var baselineMoveTo = getSelectValue('baseline-move-to');
-
- var xhr = new XMLHttpRequest();
- xhr.open('POST',
- '/rebaseline?test=' + encodeURIComponent(testName) +
- '&baseline-target=' + encodeURIComponent(baselineTarget) +
- '&baseline-move-to=' + encodeURIComponent(baselineMoveTo));
-
- var self = this;
- function handleResponse(logType, newState) {
- log(xhr.responseText, logType);
- self._removeTest(testName);
- self._inProgressRebaselineCount--;
- results.tests[testName].state = newState;
- updateState();
- // If we're done with a set of rebaselines, regenerate the test menu
- // (which is grouped by state) since test states have changed.
- if (self._inProgressRebaselineCount == 0) {
- selectDirectory();
- }
- }
-
- function handleSuccess() {
- handleResponse(log.SUCCESS, STATE_REBASELINE_SUCCEEDED);
- }
- function handleFailure() {
- handleResponse(log.ERROR, STATE_REBASELINE_FAILED);
- }
-
- xhr.addEventListener('load', function() {
- if (xhr.status < 400) {
- handleSuccess();
- } else {
- handleFailure();
- }
- });
- xhr.addEventListener('error', handleFailure);
-
- xhr.send();
-};
diff --git a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/util.js b/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/util.js
deleted file mode 100644
index 5ad761231..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/data/rebaselineserver/util.js
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * Copyright (c) 2010 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.
- */
-
-var results;
-var testsByFailureType = {};
-var testsByDirectory = {};
-var selectedTests = [];
-
-function $(id)
-{
- return document.getElementById(id);
-}
-
-function getSelectValue(id)
-{
- var select = $(id);
- if (select.selectedIndex == -1) {
- return null;
- } else {
- return select.options[select.selectedIndex].value;
- }
-}
-
-function loadText(url, callback)
-{
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url);
- xhr.addEventListener('load', function() { callback(xhr.responseText); });
- xhr.send();
-}
-
-function log(text, type)
-{
- var node = $('log');
-
- if (type) {
- var typeNode = document.createElement('span');
- typeNode.textContent = type.text;
- typeNode.style.color = type.color;
- node.appendChild(typeNode);
- }
-
- node.appendChild(document.createTextNode(text + '\n'));
- node.scrollTop = node.scrollHeight;
-}
-
-log.WARNING = {text: 'Warning: ', color: '#aa3'};
-log.SUCCESS = {text: 'Success: ', color: 'green'};
-log.ERROR = {text: 'Error: ', color: 'red'};
-
-function toggle(id)
-{
- var element = $(id);
- var toggler = $('toggle-' + id);
- if (element.style.display == 'none') {
- element.style.display = '';
- toggler.className = 'link selected';
- } else {
- element.style.display = 'none';
- toggler.className = 'link';
- }
-}
-
-function getTracUrl(layoutTestPath)
-{
- return 'http://trac.webkit.org/browser/trunk/LayoutTests/' + layoutTestPath;
-}
-
-function getSortedKeys(obj)
-{
- var keys = [];
- for (var key in obj) {
- keys.push(key);
- }
- keys.sort();
- return keys;
-} \ No newline at end of file
diff --git a/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py b/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py
deleted file mode 100644
index b06984660..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/gardeningserver.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (C) 2011 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:
-#
-# 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 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.
-
-import BaseHTTPServer
-import SocketServer
-import logging
-import json
-import os
-import sys
-import urllib
-
-from webkitpy.common.memoized import memoized
-from webkitpy.tool.servers.reflectionhandler import ReflectionHandler
-from webkitpy.port import builders
-
-
-_log = logging.getLogger(__name__)
-
-
-class GardeningHTTPServer(SocketServer.ThreadingMixIn, BaseHTTPServer.HTTPServer):
- def __init__(self, httpd_port, config):
- server_name = ''
- self.tool = config['tool']
- self.options = config['options']
- BaseHTTPServer.HTTPServer.__init__(self, (server_name, httpd_port), GardeningHTTPRequestHandler)
-
- def url(self, args=None):
- # We can't use urllib.encode() here because that encodes spaces as plus signs and the buildbots don't decode those properly.
- arg_string = ('?' + '&'.join("%s=%s" % (key, urllib.quote(value)) for (key, value) in args.items())) if args else ''
- return 'http://localhost:8127/garden-o-matic.html' + arg_string
-
-
-class GardeningHTTPRequestHandler(ReflectionHandler):
- STATIC_FILE_NAMES = frozenset()
-
- STATIC_FILE_EXTENSIONS = ('.js', '.css', '.html', '.gif', '.png', '.ico')
-
- STATIC_FILE_DIRECTORY = os.path.join(
- os.path.dirname(__file__),
- '..',
- '..',
- '..',
- '..',
- 'BuildSlaveSupport',
- 'build.webkit.org-config',
- 'public_html',
- 'TestFailures')
-
- allow_cross_origin_requests = True
- debug_output = ''
-
- def ping(self):
- self._serve_text('pong')
-
- def _run_webkit_patch(self, command, input_string):
- PIPE = self.server.tool.executive.PIPE
- process = self.server.tool.executive.popen([self.server.tool.path()] + command, cwd=self.server.tool.scm().checkout_root, stdin=PIPE, stdout=PIPE, stderr=PIPE)
- process.stdin.write(input_string)
- output, error = process.communicate()
- return (process.returncode, output, error)
-
- def rebaselineall(self):
- command = ['rebaseline-json']
- if self.server.options.move_overwritten_baselines:
- command.append('--move-overwritten-baselines')
- if self.server.options.results_directory:
- command.extend(['--results-directory', self.server.options.results_directory])
- if not self.server.options.optimize:
- command.append('--no-optimize')
- if self.server.options.verbose:
- command.append('--verbose')
- json_input = self.read_entity_body()
-
- _log.debug("calling %s, input='%s'", command, json_input)
- return_code, output, error = self._run_webkit_patch(command, json_input)
- print >> sys.stderr, error
- if return_code:
- _log.error("rebaseline-json failed: %d, output='%s'" % (return_code, output))
- else:
- _log.debug("rebaseline-json succeeded")
-
- # FIXME: propagate error and/or log messages back to the UI.
- self._serve_text('success')
-
- def localresult(self):
- path = self.query['path'][0]
- filesystem = self.server.tool.filesystem
-
- # Ensure that we're only serving files from inside the results directory.
- if not filesystem.isabs(path) and self.server.options.results_directory:
- fullpath = filesystem.abspath(filesystem.join(self.server.options.results_directory, path))
- if fullpath.startswith(filesystem.abspath(self.server.options.results_directory)):
- self._serve_file(fullpath, headers_only=(self.command == 'HEAD'))
- return
-
- self.send_response(403)
diff --git a/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py b/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py
deleted file mode 100644
index 9f9efe807..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/gardeningserver_unittest.py
+++ /dev/null
@@ -1,112 +0,0 @@
-# Copyright (C) 2011 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.
-
-import json
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.layout_tests.models.test_configuration import *
-from webkitpy.port import builders
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockTool
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.common.host_mock import MockHost
-from webkitpy.tool.servers.gardeningserver import *
-
-
-class TestPortFactory(object):
- # FIXME: Why is this a class method?
- @classmethod
- def create(cls):
- host = MockHost()
- return host.port_factory.get("test-win-xp")
-
- @classmethod
- def path_to_test_expectations_file(cls):
- return cls.create().path_to_test_expectations_file()
-
-
-class MockServer(object):
- def __init__(self):
- self.tool = MockTool()
- self.tool.executive = MockExecutive(should_log=True)
- self.tool.filesystem.files[TestPortFactory.path_to_test_expectations_file()] = ""
-
-
-# The real GardeningHTTPRequestHandler has a constructor that's too hard to
-# call in a unit test, so we create a subclass that's easier to constrcut.
-class TestGardeningHTTPRequestHandler(GardeningHTTPRequestHandler):
- def __init__(self, server):
- self.server = server
- self.body = None
-
- def _expectations_updater(self):
- return GardeningExpectationsUpdater(self.server.tool, TestPortFactory.create())
-
- def read_entity_body(self):
- return self.body if self.body else ''
-
- def _serve_text(self, text):
- print "== Begin Response =="
- print text
- print "== End Response =="
-
- def _serve_json(self, json_object):
- print "== Begin JSON Response =="
- print json.dumps(json_object)
- print "== End JSON Response =="
-
-
-class GardeningServerTest(unittest.TestCase):
- def _post_to_path(self, path, body=None, expected_stderr=None, expected_stdout=None, server=None):
- handler = TestGardeningHTTPRequestHandler(server or MockServer())
- handler.path = path
- handler.body = body
- OutputCapture().assert_outputs(self, handler.do_POST, expected_stderr=expected_stderr, expected_stdout=expected_stdout)
-
- def disabled_test_rollout(self):
- expected_stderr = "MOCK run_command: ['echo', 'rollout', '--force-clean', '--non-interactive', '2314', 'MOCK rollout reason'], cwd=/mock-checkout\n"
- expected_stdout = "== Begin Response ==\nsuccess\n== End Response ==\n"
- self._post_to_path("/rollout?revision=2314&reason=MOCK+rollout+reason", expected_stderr=expected_stderr, expected_stdout=expected_stdout)
-
- def disabled_test_rebaselineall(self):
- expected_stderr = "MOCK run_command: ['echo', 'rebaseline-json'], cwd=/mock-checkout, input={\"user-scripts/another-test.html\":{\"%s\": [%s]}}\n"
- expected_stdout = "== Begin Response ==\nsuccess\n== End Response ==\n"
- server = MockServer()
-
- self.output = ['{"add": [], "delete": []}', '']
-
- def run_command(args, cwd=None, input=None, **kwargs):
- print >> sys.stderr, "MOCK run_command: %s, cwd=%s, input=%s" % (args, cwd, input)
- return self.output.pop(0)
-
- server.tool.executive.run_command = run_command
- self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder": ["txt","png"]}}', expected_stderr=expected_stderr % ('MOCK builder', '"txt","png"'), expected_stdout=expected_stdout, server=server)
-
- self._post_to_path("/rebaselineall", body='{"user-scripts/another-test.html":{"MOCK builder (Debug)": ["txt","png"]}}', expected_stderr=expected_stderr % ('MOCK builder (Debug)', '"txt","png"'), expected_stdout=expected_stdout)
diff --git a/Tools/Scripts/webkitpy/tool/servers/rebaselineserver.py b/Tools/Scripts/webkitpy/tool/servers/rebaselineserver.py
deleted file mode 100644
index 41a32ba54..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/rebaselineserver.py
+++ /dev/null
@@ -1,289 +0,0 @@
-# Copyright (c) 2010 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.
-
-import fnmatch
-import os
-import os.path
-import BaseHTTPServer
-
-from webkitpy.common.host import Host # FIXME: This should not be needed!
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.port.base import Port
-from webkitpy.tool.servers.reflectionhandler import ReflectionHandler
-
-
-STATE_NEEDS_REBASELINE = 'needs_rebaseline'
-STATE_REBASELINE_FAILED = 'rebaseline_failed'
-STATE_REBASELINE_SUCCEEDED = 'rebaseline_succeeded'
-
-
-def _get_actual_result_files(test_file, test_config):
- test_name, _ = os.path.splitext(test_file)
- test_directory = os.path.dirname(test_file)
-
- test_results_directory = test_config.filesystem.join(
- test_config.results_directory, test_directory)
- actual_pattern = os.path.basename(test_name) + '-actual.*'
- actual_files = []
- for filename in test_config.filesystem.listdir(test_results_directory):
- if fnmatch.fnmatch(filename, actual_pattern):
- actual_files.append(filename)
- actual_files.sort()
- return tuple(actual_files)
-
-
-def _rebaseline_test(test_file, baseline_target, baseline_move_to, test_config, log):
- test_name, _ = os.path.splitext(test_file)
- test_directory = os.path.dirname(test_name)
-
- log('Rebaselining %s...' % test_name)
-
- actual_result_files = _get_actual_result_files(test_file, test_config)
- filesystem = test_config.filesystem
- scm = test_config.scm
- layout_tests_directory = test_config.layout_tests_directory
- results_directory = test_config.results_directory
- target_expectations_directory = filesystem.join(
- layout_tests_directory, 'platform', baseline_target, test_directory)
- test_results_directory = test_config.filesystem.join(
- test_config.results_directory, test_directory)
-
- # If requested, move current baselines out
- current_baselines = get_test_baselines(test_file, test_config)
- if baseline_target in current_baselines and baseline_move_to != 'none':
- log(' Moving current %s baselines to %s' %
- (baseline_target, baseline_move_to))
-
- # See which ones we need to move (only those that are about to be
- # updated), and make sure we're not clobbering any files in the
- # destination.
- current_extensions = set(current_baselines[baseline_target].keys())
- actual_result_extensions = [
- os.path.splitext(f)[1] for f in actual_result_files]
- extensions_to_move = current_extensions.intersection(
- actual_result_extensions)
-
- if extensions_to_move.intersection(
- current_baselines.get(baseline_move_to, {}).keys()):
- log(' Already had baselines in %s, could not move existing '
- '%s ones' % (baseline_move_to, baseline_target))
- return False
-
- # Do the actual move.
- if extensions_to_move:
- if not _move_test_baselines(
- test_file,
- list(extensions_to_move),
- baseline_target,
- baseline_move_to,
- test_config,
- log):
- return False
- else:
- log(' No current baselines to move')
-
- log(' Updating baselines for %s' % baseline_target)
- filesystem.maybe_make_directory(target_expectations_directory)
- for source_file in actual_result_files:
- source_path = filesystem.join(test_results_directory, source_file)
- destination_file = source_file.replace('-actual', '-expected')
- destination_path = filesystem.join(
- target_expectations_directory, destination_file)
- filesystem.copyfile(source_path, destination_path)
- try:
- scm.add(destination_path)
- log(' Updated %s' % destination_file)
- except ScriptError, error:
- log(' Could not update %s in SCM, exit code %d' %
- (destination_file, error.exit_code))
- return False
-
- return True
-
-
-def _move_test_baselines(test_file, extensions_to_move, source_platform, destination_platform, test_config, log):
- test_file_name = os.path.splitext(os.path.basename(test_file))[0]
- test_directory = os.path.dirname(test_file)
- filesystem = test_config.filesystem
-
- # Want predictable output order for unit tests.
- extensions_to_move.sort()
-
- source_directory = os.path.join(
- test_config.layout_tests_directory,
- 'platform',
- source_platform,
- test_directory)
- destination_directory = os.path.join(
- test_config.layout_tests_directory,
- 'platform',
- destination_platform,
- test_directory)
- filesystem.maybe_make_directory(destination_directory)
-
- for extension in extensions_to_move:
- file_name = test_file_name + '-expected' + extension
- source_path = filesystem.join(source_directory, file_name)
- destination_path = filesystem.join(destination_directory, file_name)
- filesystem.copyfile(source_path, destination_path)
- try:
- test_config.scm.add(destination_path)
- log(' Moved %s' % file_name)
- except ScriptError, error:
- log(' Could not update %s in SCM, exit code %d' %
- (file_name, error.exit_code))
- return False
-
- return True
-
-
-def get_test_baselines(test_file, test_config):
- # FIXME: This seems like a hack. This only seems used to access the Port.expected_baselines logic.
- class AllPlatformsPort(Port):
- def __init__(self, host):
- super(AllPlatformsPort, self).__init__(host, 'mac')
- self._platforms_by_directory = dict([(self._webkit_baseline_path(p), p) for p in test_config.platforms])
-
- def baseline_search_path(self):
- return self._platforms_by_directory.keys()
-
- def platform_from_directory(self, directory):
- return self._platforms_by_directory[directory]
-
- test_path = test_config.filesystem.join(test_config.layout_tests_directory, test_file)
-
- # FIXME: This should get the Host from the test_config to be mockable!
- host = Host()
- host.initialize_scm()
- host.filesystem = test_config.filesystem
- all_platforms_port = AllPlatformsPort(host)
-
- all_test_baselines = {}
- for baseline_extension in ('.txt', '.checksum', '.png'):
- test_baselines = test_config.test_port.expected_baselines(test_file, baseline_extension)
- baselines = all_platforms_port.expected_baselines(test_file, baseline_extension, all_baselines=True)
- for platform_directory, expected_filename in baselines:
- if not platform_directory:
- continue
- if platform_directory == test_config.layout_tests_directory:
- platform = 'base'
- else:
- platform = all_platforms_port.platform_from_directory(platform_directory)
- platform_baselines = all_test_baselines.setdefault(platform, {})
- was_used_for_test = (platform_directory, expected_filename) in test_baselines
- platform_baselines[baseline_extension] = was_used_for_test
-
- return all_test_baselines
-
-
-class RebaselineHTTPServer(BaseHTTPServer.HTTPServer):
- def __init__(self, httpd_port, config):
- server_name = ""
- BaseHTTPServer.HTTPServer.__init__(self, (server_name, httpd_port), RebaselineHTTPRequestHandler)
- self.test_config = config['test_config']
- self.results_json = config['results_json']
- self.platforms_json = config['platforms_json']
-
-
-class RebaselineHTTPRequestHandler(ReflectionHandler):
- STATIC_FILE_NAMES = frozenset([
- "index.html",
- "loupe.js",
- "main.js",
- "main.css",
- "queue.js",
- "util.js",
- ])
-
- STATIC_FILE_DIRECTORY = os.path.join(os.path.dirname(__file__), "data", "rebaselineserver")
-
- def results_json(self):
- self._serve_json(self.server.results_json)
-
- def test_config(self):
- self._serve_json(self.server.test_config)
-
- def platforms_json(self):
- self._serve_json(self.server.platforms_json)
-
- def rebaseline(self):
- test = self.query['test'][0]
- baseline_target = self.query['baseline-target'][0]
- baseline_move_to = self.query['baseline-move-to'][0]
- test_json = self.server.results_json['tests'][test]
-
- if test_json['state'] != STATE_NEEDS_REBASELINE:
- self.send_error(400, "Test %s is in unexpected state: %s" % (test, test_json["state"]))
- return
-
- log = []
- success = _rebaseline_test(
- test,
- baseline_target,
- baseline_move_to,
- self.server.test_config,
- log=lambda l: log.append(l))
-
- if success:
- test_json['state'] = STATE_REBASELINE_SUCCEEDED
- self.send_response(200)
- else:
- test_json['state'] = STATE_REBASELINE_FAILED
- self.send_response(500)
-
- self.send_header('Content-type', 'text/plain')
- self.end_headers()
- self.wfile.write('\n'.join(log))
-
- def test_result(self):
- test_name, _ = os.path.splitext(self.query['test'][0])
- mode = self.query['mode'][0]
- if mode == 'expected-image':
- file_name = test_name + '-expected.png'
- elif mode == 'actual-image':
- file_name = test_name + '-actual.png'
- if mode == 'expected-checksum':
- file_name = test_name + '-expected.checksum'
- elif mode == 'actual-checksum':
- file_name = test_name + '-actual.checksum'
- elif mode == 'diff-image':
- file_name = test_name + '-diff.png'
- if mode == 'expected-text':
- file_name = test_name + '-expected.txt'
- elif mode == 'actual-text':
- file_name = test_name + '-actual.txt'
- elif mode == 'diff-text':
- file_name = test_name + '-diff.txt'
- elif mode == 'diff-text-pretty':
- file_name = test_name + '-pretty-diff.html'
-
- file_path = os.path.join(self.server.test_config.results_directory, file_name)
-
- # Let results be cached for 60 seconds, so that they can be pre-fetched
- # by the UI
- self._serve_file(file_path, cacheable_seconds=60)
diff --git a/Tools/Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py b/Tools/Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py
deleted file mode 100644
index 721154cb6..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/rebaselineserver_unittest.py
+++ /dev/null
@@ -1,311 +0,0 @@
-# Copyright (C) 2010 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.
-
-import json
-import unittest2 as unittest
-
-from webkitpy.common.net import resultsjsonparser_unittest
-from webkitpy.common.host_mock import MockHost
-from webkitpy.layout_tests.layout_package.json_results_generator import strip_json_wrapper
-from webkitpy.port.base import Port
-from webkitpy.tool.commands.rebaselineserver import TestConfig, RebaselineServer
-from webkitpy.tool.servers import rebaselineserver
-
-
-class RebaselineTestTest(unittest.TestCase):
- def test_text_rebaseline_update(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/mac/fast/text-expected.txt',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='none',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Updating baselines for mac',
- ' Updated text-expected.txt',
- ])
-
- def test_text_rebaseline_new(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='none',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Updating baselines for mac',
- ' Updated text-expected.txt',
- ])
-
- def test_text_rebaseline_move_no_op_1(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/win/fast/text-expected.txt',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='mac-leopard',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Updating baselines for mac',
- ' Updated text-expected.txt',
- ])
-
- def test_text_rebaseline_move_no_op_2(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/mac/fast/text-expected.checksum',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='mac-leopard',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Moving current mac baselines to mac-leopard',
- ' No current baselines to move',
- ' Updating baselines for mac',
- ' Updated text-expected.txt',
- ])
-
- def test_text_rebaseline_move(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/mac/fast/text-expected.txt',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='mac-leopard',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Moving current mac baselines to mac-leopard',
- ' Moved text-expected.txt',
- ' Updating baselines for mac',
- ' Updated text-expected.txt',
- ])
-
- def test_text_rebaseline_move_only_images(self):
- self._assertRebaseline(
- test_files=(
- 'fast/image-expected.txt',
- 'platform/mac/fast/image-expected.txt',
- 'platform/mac/fast/image-expected.png',
- 'platform/mac/fast/image-expected.checksum',
- ),
- results_files=(
- 'fast/image-actual.png',
- 'fast/image-actual.checksum',
- ),
- test_name='fast/image.html',
- baseline_target='mac',
- baseline_move_to='mac-leopard',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/image...',
- ' Moving current mac baselines to mac-leopard',
- ' Moved image-expected.checksum',
- ' Moved image-expected.png',
- ' Updating baselines for mac',
- ' Updated image-expected.checksum',
- ' Updated image-expected.png',
- ])
-
- def test_text_rebaseline_move_already_exist(self):
- self._assertRebaseline(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/mac-leopard/fast/text-expected.txt',
- 'platform/mac/fast/text-expected.txt',
- ),
- results_files=(
- 'fast/text-actual.txt',
- ),
- test_name='fast/text.html',
- baseline_target='mac',
- baseline_move_to='mac-leopard',
- expected_success=False,
- expected_log=[
- 'Rebaselining fast/text...',
- ' Moving current mac baselines to mac-leopard',
- ' Already had baselines in mac-leopard, could not move existing mac ones',
- ])
-
- def test_image_rebaseline(self):
- self._assertRebaseline(
- test_files=(
- 'fast/image-expected.txt',
- 'platform/mac/fast/image-expected.png',
- 'platform/mac/fast/image-expected.checksum',
- ),
- results_files=(
- 'fast/image-actual.png',
- 'fast/image-actual.checksum',
- ),
- test_name='fast/image.html',
- baseline_target='mac',
- baseline_move_to='none',
- expected_success=True,
- expected_log=[
- 'Rebaselining fast/image...',
- ' Updating baselines for mac',
- ' Updated image-expected.checksum',
- ' Updated image-expected.png',
- ])
-
- def test_gather_baselines(self):
- example_json = resultsjsonparser_unittest.ResultsJSONParserTest._example_full_results_json
- results_json = json.loads(strip_json_wrapper(example_json))
- server = RebaselineServer()
- server._test_config = get_test_config()
- server._gather_baselines(results_json)
- self.assertEqual(results_json['tests']['svg/dynamic-updates/SVGFEDropShadowElement-dom-stdDeviation-attr.html']['state'], 'needs_rebaseline')
- self.assertNotIn('prototype-chocolate.html', results_json['tests'])
-
- def _assertRebaseline(self, test_files, results_files, test_name, baseline_target, baseline_move_to, expected_success, expected_log):
- log = []
- test_config = get_test_config(test_files, results_files)
- success = rebaselineserver._rebaseline_test(
- test_name,
- baseline_target,
- baseline_move_to,
- test_config,
- log=lambda l: log.append(l))
- self.assertEqual(expected_log, log)
- self.assertEqual(expected_success, success)
-
-
-class GetActualResultFilesTest(unittest.TestCase):
- def test(self):
- test_config = get_test_config(result_files=(
- 'fast/text-actual.txt',
- 'fast2/text-actual.txt',
- 'fast/text2-actual.txt',
- 'fast/text-notactual.txt',
- ))
- self.assertItemsEqual(
- ('text-actual.txt',),
- rebaselineserver._get_actual_result_files(
- 'fast/text.html', test_config))
-
-
-class GetBaselinesTest(unittest.TestCase):
- def test_no_baselines(self):
- self._assertBaselines(
- test_files=(),
- test_name='fast/missing.html',
- expected_baselines={})
-
- def test_text_baselines(self):
- self._assertBaselines(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/mac/fast/text-expected.txt',
- ),
- test_name='fast/text.html',
- expected_baselines={
- 'mac': {'.txt': True},
- 'base': {'.txt': False},
- })
-
- def test_image_and_text_baselines(self):
- self._assertBaselines(
- test_files=(
- 'fast/image-expected.txt',
- 'platform/mac/fast/image-expected.png',
- 'platform/mac/fast/image-expected.checksum',
- 'platform/win/fast/image-expected.png',
- 'platform/win/fast/image-expected.checksum',
- ),
- test_name='fast/image.html',
- expected_baselines={
- 'base': {'.txt': True},
- 'mac': {'.checksum': True, '.png': True},
- 'win': {'.checksum': False, '.png': False},
- })
-
- def test_extra_baselines(self):
- self._assertBaselines(
- test_files=(
- 'fast/text-expected.txt',
- 'platform/nosuchplatform/fast/text-expected.txt',
- ),
- test_name='fast/text.html',
- expected_baselines={'base': {'.txt': True}})
-
- def _assertBaselines(self, test_files, test_name, expected_baselines):
- actual_baselines = rebaselineserver.get_test_baselines(test_name, get_test_config(test_files))
- self.assertEqual(expected_baselines, actual_baselines)
-
-
-def get_test_config(test_files=[], result_files=[]):
- # We could grab this from port.layout_tests_dir(), but instantiating a fully mocked port is a pain.
- layout_tests_directory = "/mock-checkout/LayoutTests"
- results_directory = '/WebKitBuild/Debug/layout-test-results'
- host = MockHost()
- for file in test_files:
- host.filesystem.write_binary_file(host.filesystem.join(layout_tests_directory, file), '')
- for file in result_files:
- host.filesystem.write_binary_file(host.filesystem.join(results_directory, file), '')
-
- class TestMacPort(Port):
- port_name = "mac"
-
- return TestConfig(
- TestMacPort(host, 'mac'),
- layout_tests_directory,
- results_directory,
- ('mac', 'mac-leopard', 'win', 'linux'),
- host.filesystem,
- host.scm())
diff --git a/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py b/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py
deleted file mode 100644
index 954fb56a9..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/reflectionhandler.py
+++ /dev/null
@@ -1,144 +0,0 @@
-# Copyright (c) 2011 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.
-
-import BaseHTTPServer
-
-import cgi
-import codecs
-import datetime
-import fnmatch
-import json
-import mimetypes
-import os.path
-import shutil
-import threading
-import time
-import urlparse
-import wsgiref.handlers
-import BaseHTTPServer
-
-
-class ReflectionHandler(BaseHTTPServer.BaseHTTPRequestHandler):
- STATIC_FILE_EXTENSIONS = ['.js', '.css', '.html']
- # Subclasses should override.
- STATIC_FILE_DIRECTORY = None
-
- # Setting this flag to True causes the server to send
- # Access-Control-Allow-Origin: *
- # with every response.
- allow_cross_origin_requests = False
-
- def do_GET(self):
- self._handle_request()
-
- def do_POST(self):
- self._handle_request()
-
- def do_HEAD(self):
- self._handle_request()
-
- def read_entity_body(self):
- length = int(self.headers.getheader('content-length'))
- return self.rfile.read(length)
-
- def _read_entity_body_as_json(self):
- return json.loads(self.read_entity_body())
-
- def _handle_request(self):
- if "?" in self.path:
- path, query_string = self.path.split("?", 1)
- self.query = cgi.parse_qs(query_string)
- else:
- path = self.path
- self.query = {}
- function_or_file_name = path[1:] or "index.html"
-
- _, extension = os.path.splitext(function_or_file_name)
- if extension in self.STATIC_FILE_EXTENSIONS:
- self._serve_static_file(function_or_file_name)
- return
-
- function_name = function_or_file_name.replace(".", "_")
- if not hasattr(self, function_name):
- self.send_error(404, "Unknown function %s" % function_name)
- return
- if function_name[0] == "_":
- self.send_error(401, "Not allowed to invoke private or protected methods")
- return
- function = getattr(self, function_name)
- function()
-
- def _serve_static_file(self, static_path):
- self._serve_file(os.path.join(self.STATIC_FILE_DIRECTORY, static_path))
-
- def quitquitquit(self):
- self._serve_text("Server quit.\n")
- # Shutdown has to happen on another thread from the server's thread,
- # otherwise there's a deadlock
- threading.Thread(target=lambda: self.server.shutdown()).start()
-
- def _send_access_control_header(self):
- if self.allow_cross_origin_requests:
- self.send_header('Access-Control-Allow-Origin', '*')
-
- def _serve_text(self, text):
- self.send_response(200)
- self._send_access_control_header()
- self.send_header("Content-type", "text/plain")
- self.end_headers()
- self.wfile.write(text)
-
- def _serve_json(self, json_object):
- self.send_response(200)
- self._send_access_control_header()
- self.send_header('Content-type', 'application/json')
- self.end_headers()
- json.dump(json_object, self.wfile)
-
- def _serve_file(self, file_path, cacheable_seconds=0, headers_only=False):
- if not os.path.exists(file_path):
- self.send_error(404, "File not found")
- return
- with codecs.open(file_path, "rb") as static_file:
- self.send_response(200)
- self._send_access_control_header()
- self.send_header("Content-Length", os.path.getsize(file_path))
- mime_type, encoding = mimetypes.guess_type(file_path)
- if mime_type:
- self.send_header("Content-type", mime_type)
-
- if cacheable_seconds:
- expires_time = (datetime.datetime.now() +
- datetime.timedelta(0, cacheable_seconds))
- expires_formatted = wsgiref.handlers.format_date_time(
- time.mktime(expires_time.timetuple()))
- self.send_header("Expires", expires_formatted)
- self.end_headers()
-
- if not headers_only:
- shutil.copyfileobj(static_file, self.wfile)
diff --git a/Tools/Scripts/webkitpy/tool/servers/reflectionhandler_unittest.py b/Tools/Scripts/webkitpy/tool/servers/reflectionhandler_unittest.py
deleted file mode 100644
index e1d562364..000000000
--- a/Tools/Scripts/webkitpy/tool/servers/reflectionhandler_unittest.py
+++ /dev/null
@@ -1,70 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.servers.reflectionhandler import ReflectionHandler
-
-
-class TestReflectionHandler(ReflectionHandler):
- STATIC_FILE_DIRECTORY = "/"
-
- def __init__(self):
- self.static_files_served = set()
- self.errors_sent = set()
- self.functions_run = set()
-
- def _serve_static_file(self, name):
- self.static_files_served.add(name)
-
- def send_error(self, code, description):
- self.errors_sent.add(code)
-
- def function_one(self):
- self.functions_run.add("function_one")
-
- def some_html(self):
- self.functions_run.add("some_html")
-
-
-class ReflectionHandlerTest(unittest.TestCase):
- def assert_handler_response(self, requests, expected_static_files, expected_errors, expected_functions):
- handler = TestReflectionHandler()
- for request in requests:
- handler.path = request
- handler._handle_request()
- self.assertEqual(handler.static_files_served, expected_static_files)
- self.assertEqual(handler.errors_sent, expected_errors)
- self.assertEqual(handler.functions_run, expected_functions)
-
- def test_static_content_or_function_switch(self):
- self.assert_handler_response(["/test.js"], set(["test.js"]), set(), set())
- self.assert_handler_response(["/test.js", "/test.css", "/test.html"], set(["test.js", "test.html", "test.css"]), set(), set())
- self.assert_handler_response(["/test.js", "/test.exe", "/testhtml"], set(["test.js"]), set([404]), set())
- self.assert_handler_response(["/test.html", "/function.one"], set(["test.html"]), set(), set(['function_one']))
- self.assert_handler_response(["/some.html"], set(["some.html"]), set(), set())
diff --git a/Tools/Scripts/webkitpy/tool/steps/__init__.py b/Tools/Scripts/webkitpy/tool/steps/__init__.py
deleted file mode 100644
index 655f7d50a..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/__init__.py
+++ /dev/null
@@ -1,64 +0,0 @@
-# Copyright (C) 2010 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.
-
-# FIXME: Is this the right way to do this?
-from webkitpy.tool.steps.addsvnmimetypeforpng import AddSvnMimetypeForPng
-from webkitpy.tool.steps.applypatch import ApplyPatch
-from webkitpy.tool.steps.applypatchwithlocalcommit import ApplyPatchWithLocalCommit
-from webkitpy.tool.steps.applywatchlist import ApplyWatchList
-from webkitpy.tool.steps.attachtobug import AttachToBug
-from webkitpy.tool.steps.build import Build
-from webkitpy.tool.steps.checkstyle import CheckStyle
-from webkitpy.tool.steps.cleanworkingdirectory import CleanWorkingDirectory
-from webkitpy.tool.steps.closebug import CloseBug
-from webkitpy.tool.steps.closebugforlanddiff import CloseBugForLandDiff
-from webkitpy.tool.steps.closepatch import ClosePatch
-from webkitpy.tool.steps.commit import Commit
-from webkitpy.tool.steps.confirmdiff import ConfirmDiff
-from webkitpy.tool.steps.createbug import CreateBug
-from webkitpy.tool.steps.discardlocalchanges import DiscardLocalChanges
-from webkitpy.tool.steps.editchangelog import EditChangeLog
-from webkitpy.tool.steps.ensurebugisopenandassigned import EnsureBugIsOpenAndAssigned
-from webkitpy.tool.steps.ensurelocalcommitifneeded import EnsureLocalCommitIfNeeded
-from webkitpy.tool.steps.haslanded import HasLanded
-from webkitpy.tool.steps.obsoletepatches import ObsoletePatches
-from webkitpy.tool.steps.options import Options
-from webkitpy.tool.steps.postdiff import PostDiff
-from webkitpy.tool.steps.postdiffforcommit import PostDiffForCommit
-from webkitpy.tool.steps.postdiffforrevert import PostDiffForRevert
-from webkitpy.tool.steps.preparechangelog import PrepareChangeLog
-from webkitpy.tool.steps.preparechangelogforrevert import PrepareChangeLogForRevert
-from webkitpy.tool.steps.promptforbugortitle import PromptForBugOrTitle
-from webkitpy.tool.steps.reopenbugafterrollout import ReopenBugAfterRollout
-from webkitpy.tool.steps.revertrevision import RevertRevision
-from webkitpy.tool.steps.runtests import RunTests
-from webkitpy.tool.steps.suggestreviewers import SuggestReviewers
-from webkitpy.tool.steps.update import Update
-from webkitpy.tool.steps.updatechangelogswithreviewer import UpdateChangeLogsWithReviewer
-from webkitpy.tool.steps.validatechangelogs import ValidateChangeLogs
-from webkitpy.tool.steps.validatereviewer import ValidateReviewer
diff --git a/Tools/Scripts/webkitpy/tool/steps/abstractstep.py b/Tools/Scripts/webkitpy/tool/steps/abstractstep.py
deleted file mode 100644
index 2a5fea628..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/abstractstep.py
+++ /dev/null
@@ -1,78 +0,0 @@
-# Copyright (C) 2010 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.
-
-import sys
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.steps.options import Options
-
-
-class AbstractStep(object):
- def __init__(self, tool, options):
- self._tool = tool
- self._options = options
-
- def _exit(self, code):
- sys.exit(code)
-
- def _changed_files(self, state):
- return self.cached_lookup(state, "changed_files")
-
- _well_known_keys = {
- # FIXME: Should this use state.get('bug_id') or state.get('patch').bug_id() like UpdateChangeLogsWithReviewer does?
- "bug": lambda self, state: self._tool.bugs.fetch_bug(state["bug_id"]),
- # bug_title can either be a new title given by the user, or one from an existing bug.
- "bug_title": lambda self, state: self.cached_lookup(state, 'bug').title(),
- "changed_files": lambda self, state: self._tool.scm().changed_files(self._options.git_commit),
- "diff": lambda self, state: self._tool.scm().create_patch(self._options.git_commit, changed_files=self._changed_files(state)),
- # Absolute path to ChangeLog files.
- "changelogs": lambda self, state: self._tool.checkout().modified_changelogs(self._options.git_commit, changed_files=self._changed_files(state)),
- }
-
- def cached_lookup(self, state, key, promise=None):
- if state.get(key):
- return state[key]
- if not promise:
- promise = self._well_known_keys.get(key)
- state[key] = promise(self, state)
- return state[key]
-
- def did_modify_checkout(self, state):
- state["diff"] = None
- state["changelogs"] = None
- state["changed_files"] = None
-
- @classmethod
- def options(cls):
- return [
- # We need this option here because cached_lookup uses it. :(
- Options.git_commit,
- ]
-
- def run(self, state):
- raise NotImplementedError, "subclasses must implement"
diff --git a/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py b/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py
deleted file mode 100644
index 0ef0fed46..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng.py
+++ /dev/null
@@ -1,80 +0,0 @@
-# Copyright (C) 2012 Balazs Ankes (bank@inf.u-szeged.hu) University of Szeged
-#
-# 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 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.
-
-import logging
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.common import checksvnconfigfile
-from webkitpy.common.checkout.scm.detection import SCMDetector
-from webkitpy.common.system.systemhost import SystemHost
-
-_log = logging.getLogger(__name__)
-
-
-class AddSvnMimetypeForPng(AbstractStep):
- def __init__(self, tool, options, host=None, scm=None):
- self._tool = tool
- self._options = options
- self._host = host or SystemHost()
- self._fs = self._host.filesystem
- self._detector = scm or SCMDetector(self._fs, self._host.executive).detect_scm_system(self._fs.getcwd())
-
- def run(self, state):
- png_files = self._check_pngs(self._changed_files(state))
-
- if png_files:
- detection = self._detector.display_name()
-
- if detection == "git":
- (file_missing, autoprop_missing, png_missing) = checksvnconfigfile.check(self._host, self._fs)
- config_file_path = checksvnconfigfile.config_file_path(self._host, self._fs)
-
- if file_missing:
- _log.info("There is no SVN config file. The svn:mime-type of pngs won't set.")
- if not self._tool.user.confirm("Are you sure you want to continue?", default="n"):
- self._exit(1)
- elif autoprop_missing and png_missing:
- _log.info(checksvnconfigfile.errorstr_autoprop(config_file_path) + checksvnconfigfile.errorstr_png(config_file_path))
- if not self._tool.user.confirm("Do you want to continue?", default="n"):
- self._exit(1)
- elif autoprop_missing:
- _log.info(checksvnconfigfile.errorstr_autoprop(config_file_path))
- if not self._tool.user.confirm("Do you want to continue?", default="n"):
- self._exit(1)
- elif png_missing:
- _log.info(checksvnconfigfile.errorstr_png(config_file_path))
- if not self._tool.user.confirm("Do you want to continue?", default="n"):
- self._exit(1)
-
- elif detection == "svn":
- for filename in png_files:
- if self._detector.exists(filename) and self._detector.propget('svn:mime-type', filename) != 'image/png':
- print "Adding image/png mime-type to %s" % filename
- self._detector.propset('svn:mime-type', 'image/png', filename)
-
- def _check_pngs(self, changed_files):
- png_files = []
- for filename in changed_files:
- if filename.endswith('.png'):
- png_files.append(filename)
- return png_files
diff --git a/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py b/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py
deleted file mode 100644
index 12be0bee2..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/addsvnmimetypeforpng_unittest.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2012 Balazs Ankes (bank@inf.u-szeged.hu) University of Szeged
-#
-# 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 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.
-
-import unittest2 as unittest
-
-from webkitpy.tool.steps.addsvnmimetypeforpng import AddSvnMimetypeForPng
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.common.system.systemhost_mock import MockSystemHost
-from webkitpy.common.system.outputcapture import OutputCapture
-
-
-class MockSCMDetector(object):
-
- def __init__(self, scm):
- self._scm = scm
-
- def display_name(self):
- return self._scm
-
-
-class AddSvnMimetypeForPngTest(unittest.TestCase):
- def test_run(self):
- capture = OutputCapture()
- options = MockOptions(git_commit='MOCK git commit')
-
- files = {'/Users/mock/.subversion/config': 'enable-auto-props = yes\n*.png = svn:mime-type=image/png'}
- fs = MockFileSystem(files)
- scm = MockSCMDetector('git')
-
- step = AddSvnMimetypeForPng(MockTool(), options, MockSystemHost(os_name='linux', filesystem=fs), scm)
- state = {
- "changed_files": ["test.png", "test.txt"],
- }
- try:
- capture.assert_outputs(self, step.run, [state])
- except SystemExit, e:
- self.assertEqual(e.code, 1)
diff --git a/Tools/Scripts/webkitpy/tool/steps/applypatch.py b/Tools/Scripts/webkitpy/tool/steps/applypatch.py
deleted file mode 100644
index 50ee1f7ed..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/applypatch.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class ApplyPatch(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.non_interactive,
- ]
-
- def run(self, state):
- _log.info("Processing patch %s from bug %s." % (state["patch"].id(), state["patch"].bug_id()))
- self._tool.checkout().apply_patch(state["patch"])
diff --git a/Tools/Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py b/Tools/Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py
deleted file mode 100644
index 3dcd8d931..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/applypatchwithlocalcommit.py
+++ /dev/null
@@ -1,43 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.applypatch import ApplyPatch
-from webkitpy.tool.steps.options import Options
-
-class ApplyPatchWithLocalCommit(ApplyPatch):
- @classmethod
- def options(cls):
- return ApplyPatch.options() + [
- Options.local_commit,
- ]
-
- def run(self, state):
- ApplyPatch.run(self, state)
- if self._options.local_commit:
- commit_message = self._tool.checkout().commit_message_for_this_commit(git_commit=None)
- self._tool.scm().commit_locally_with_message(commit_message.message() or state["patch"].name())
diff --git a/Tools/Scripts/webkitpy/tool/steps/applywatchlist.py b/Tools/Scripts/webkitpy/tool/steps/applywatchlist.py
deleted file mode 100644
index a4bb89174..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/applywatchlist.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (C) 2011 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.
-
-from webkitpy.common.system import logutils
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-
-_log = logutils.get_logger(__file__)
-
-
-class ApplyWatchList(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.git_commit,
- ]
-
- def run(self, state):
- diff = self.cached_lookup(state, 'diff')
- bug_id = state.get('bug_id')
-
- cc_and_messages = self._tool.watch_list().determine_cc_and_messages(diff)
- cc_emails = cc_and_messages['cc_list']
- messages = cc_and_messages['messages']
- if bug_id:
- # Remove emails and cc's which are already in the bug or the reporter.
- bug = self._tool.bugs.fetch_bug(bug_id)
-
- messages = filter(lambda message: not bug.is_in_comments(message), messages)
- cc_emails = set(cc_emails).difference(bug.cc_emails())
- cc_emails.discard(bug.reporter_email())
-
- comment_text = '\n\n'.join(messages)
- if bug_id:
- if cc_emails or comment_text:
- self._tool.bugs.post_comment_to_bug(bug_id, comment_text, cc_emails)
- log_result = _log.debug
- else:
- _log.info('No bug was updated because no id was given.')
- log_result = _log.info
- log_result('Result of watchlist: cc "%s" messages "%s"' % (', '.join(cc_emails), comment_text))
diff --git a/Tools/Scripts/webkitpy/tool/steps/applywatchlist_unittest.py b/Tools/Scripts/webkitpy/tool/steps/applywatchlist_unittest.py
deleted file mode 100644
index a740c3d3c..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/applywatchlist_unittest.py
+++ /dev/null
@@ -1,51 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.applywatchlist import ApplyWatchList
-
-
-class ApplyWatchListTest(unittest.TestCase):
- def test_apply_watch_list_local(self):
- capture = OutputCapture()
- step = ApplyWatchList(MockTool(log_executive=True), MockOptions())
- state = {
- 'bug_id': '50001',
- 'diff': 'The diff',
- }
- expected_logs = """MockWatchList: determine_cc_and_messages
-MOCK bug comment: bug_id=50001, cc=set(['levin@chromium.org'])
---- Begin comment ---
-Message2.
---- End comment ---
-
-"""
- capture.assert_outputs(self, step.run, [state], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/steps/attachtobug.py b/Tools/Scripts/webkitpy/tool/steps/attachtobug.py
deleted file mode 100644
index a389e655c..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/attachtobug.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2011 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-
-class AttachToBug(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.comment,
- Options.description,
- ]
-
- def run(self, state):
- filepath = state["filepath"]
- bug_id = state["bug_id"]
- description = self._options.description or self._tool.filesystem.basename(filepath)
- comment_text = self._options.comment
-
- # add_attachment_to_bug fills in the filename from the file path.
- filename = None
- self._tool.bugs.add_attachment_to_bug(bug_id, filepath, description, filename, comment_text)
diff --git a/Tools/Scripts/webkitpy/tool/steps/build.py b/Tools/Scripts/webkitpy/tool/steps/build.py
deleted file mode 100644
index b02830ca2..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/build.py
+++ /dev/null
@@ -1,63 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class Build(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.build,
- Options.quiet,
- Options.build_style,
- ]
-
- def build(self, build_style):
- environment = self._tool.copy_current_environment()
- environment.disable_gcc_smartquotes()
- env = environment.to_dictionary()
-
- build_webkit_command = self._tool.deprecated_port().build_webkit_command(build_style=build_style)
- self._tool.executive.run_and_throw_if_fail(build_webkit_command, self._options.quiet,
- cwd=self._tool.scm().checkout_root, env=env)
-
- def run(self, state):
- if not self._options.build:
- return
- _log.info("Building WebKit")
- if self._options.build_style == "both":
- self.build("debug")
- self.build("release")
- else:
- self.build(self._options.build_style)
diff --git a/Tools/Scripts/webkitpy/tool/steps/checkstyle.py b/Tools/Scripts/webkitpy/tool/steps/checkstyle.py
deleted file mode 100644
index cec8a8132..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/checkstyle.py
+++ /dev/null
@@ -1,67 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-class CheckStyle(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.non_interactive,
- Options.check_style,
- Options.check_style_filter,
- Options.git_commit,
- ]
-
- def run(self, state):
- if not self._options.check_style:
- return
-
- args = []
- if self._options.git_commit:
- args.append("--git-commit")
- args.append(self._options.git_commit)
-
- args.append("--diff-files")
- args.extend(self._changed_files(state))
-
- if self._options.check_style_filter:
- args.append("--filter")
- args.append(self._options.check_style_filter)
-
- try:
- self._tool.executive.run_and_throw_if_fail(self._tool.deprecated_port().check_webkit_style_command() + args, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- if self._options.non_interactive:
- # We need to re-raise the exception here to have the
- # style-queue do the right thing.
- raise e
- if not self._tool.user.confirm("Are you sure you want to continue?"):
- self._exit(1)
diff --git a/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py b/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py
deleted file mode 100644
index a4cbe82c5..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory.py
+++ /dev/null
@@ -1,50 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-from webkitpy.common.system.executive import ScriptError
-
-
-class CleanWorkingDirectory(AbstractStep):
-
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.force_clean,
- Options.clean,
- ]
-
- def run(self, state):
- if not self._options.clean:
- return
-
- if self._tool.scm().has_working_directory_changes() and not self._options.force_clean:
- raise ScriptError("Working directory has changes, pass --force-clean to continue.")
-
- self._tool.scm().discard_working_directory_changes()
diff --git a/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py b/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py
deleted file mode 100644
index 7e31a9bd8..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/cleanworkingdirectory_unittest.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.cleanworkingdirectory import CleanWorkingDirectory
-from webkitpy.common.system.executive import ScriptError
-
-
-class CleanWorkingDirectoryTest(unittest.TestCase):
- def test_run_working_directory_changes_no_force(self):
- tool = MockTool()
- tool._scm = Mock()
- step = CleanWorkingDirectory(tool, MockOptions(clean=True, force_clean=False))
- tool._scm.has_working_directory_changes = lambda: True
- self.assertRaises(ScriptError, step.run, {})
- self.assertEqual(tool._scm.discard_working_directory_changes.call_count, 0)
-
- def test_run_working_directory_changes_force(self):
- tool = MockTool()
- tool._scm = Mock()
- step = CleanWorkingDirectory(tool, MockOptions(clean=True, force_clean=True))
- tool._scm.has_working_directory_changes = lambda: True
- step.run({})
- self.assertEqual(tool._scm.discard_working_directory_changes.call_count, 1)
-
- def test_run_no_local_changes(self):
- tool = MockTool()
- tool._scm = Mock()
- step = CleanWorkingDirectory(tool, MockOptions(clean=True, force_clean=False))
- tool._scm.has_working_directory_changes = lambda: False
- tool._scm.has_local_commits = lambda: False
- step.run({})
- self.assertEqual(tool._scm.discard_working_directory_changes.call_count, 1)
-
- def test_no_clean(self):
- tool = MockTool()
- tool._scm = Mock()
- step = CleanWorkingDirectory(tool, MockOptions(clean=False))
- step.run({})
- self.assertEqual(tool._scm.discard_working_directory_changes.call_count, 0)
diff --git a/Tools/Scripts/webkitpy/tool/steps/closebug.py b/Tools/Scripts/webkitpy/tool/steps/closebug.py
deleted file mode 100644
index e58be5468..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/closebug.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class CloseBug(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.close_bug,
- ]
-
- def run(self, state):
- if not self._options.close_bug:
- return
- # Check to make sure there are no r? or r+ patches on the bug before closing.
- # Assume that r- patches are just previous patches someone forgot to obsolete.
- # FIXME: Should this use self.cached_lookup('bug')? It's unclear if
- # state["patch"].bug_id() always equals state['bug_id'].
- patches = self._tool.bugs.fetch_bug(state["patch"].bug_id()).patches()
- for patch in patches:
- if patch.review() == "?" or patch.review() == "+":
- _log.info("Not closing bug %s as attachment %s has review=%s. Assuming there are more patches to land from this bug." % (patch.bug_id(), patch.id(), patch.review()))
- return
- self._tool.bugs.close_bug_as_fixed(state["patch"].bug_id(), "All reviewed patches have been landed. Closing bug.")
diff --git a/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff.py b/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff.py
deleted file mode 100644
index 1662d6a5d..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.comments import bug_comment_from_commit_text
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class CloseBugForLandDiff(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.close_bug,
- ]
-
- def run(self, state):
- comment_text = bug_comment_from_commit_text(self._tool.scm(), state["commit_text"])
- bug_id = state.get("bug_id")
- if not bug_id and state.get("patch"):
- bug_id = state.get("patch").bug_id()
-
- if bug_id:
- _log.info("Updating bug %s" % bug_id)
- if self._options.close_bug:
- self._tool.bugs.close_bug_as_fixed(bug_id, comment_text)
- else:
- # FIXME: We should a smart way to figure out if the patch is attached
- # to the bug, and if so obsolete it.
- self._tool.bugs.post_comment_to_bug(bug_id, comment_text)
- else:
- _log.info(comment_text)
- _log.info("No bug id provided.")
diff --git a/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py b/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py
deleted file mode 100644
index b042d4258..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/closebugforlanddiff_unittest.py
+++ /dev/null
@@ -1,40 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.closebugforlanddiff import CloseBugForLandDiff
-
-class CloseBugForLandDiffTest(unittest.TestCase):
- def test_empty_state(self):
- capture = OutputCapture()
- step = CloseBugForLandDiff(MockTool(), MockOptions())
- expected_logs = "Committed r49824: <http://trac.webkit.org/changeset/49824>\nNo bug id provided.\n"
- capture.assert_outputs(self, step.run, [{"commit_text": "Mock commit text"}], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/steps/closepatch.py b/Tools/Scripts/webkitpy/tool/steps/closepatch.py
deleted file mode 100644
index ff94df8b4..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/closepatch.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.comments import bug_comment_from_commit_text
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class ClosePatch(AbstractStep):
- def run(self, state):
- comment_text = bug_comment_from_commit_text(self._tool.scm(), state["commit_text"])
- self._tool.bugs.clear_attachment_flags(state["patch"].id(), comment_text)
diff --git a/Tools/Scripts/webkitpy/tool/steps/commit.py b/Tools/Scripts/webkitpy/tool/steps/commit.py
deleted file mode 100644
index 1d5109a00..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/commit.py
+++ /dev/null
@@ -1,108 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import sys
-
-from webkitpy.common.checkout.scm import AuthenticationError, AmbiguousCommitError
-from webkitpy.common.config import urls
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.user import User
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class Commit(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.non_interactive,
- ]
-
- def _commit_warning(self, error):
- return ('There are %s local commits (and possibly changes in the working directory. '
- 'Everything will be committed as a single commit. '
- 'To avoid this prompt, set "git config webkit-patch.commit-should-always-squash true".' % (
- error.num_local_commits))
-
- def _check_test_expectations(self, changed_files):
- test_expectations_files = [filename for filename in changed_files if filename.endswith('TestExpectations')]
- if not test_expectations_files:
- return
-
- args = ["--diff-files"]
- args.extend(test_expectations_files)
- try:
- self._tool.executive.run_and_throw_if_fail(self._tool.deprecated_port().check_webkit_style_command() + args, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- if self._options.non_interactive:
- raise
- if not self._tool.user.confirm("Are you sure you want to continue?", default="n"):
- self._exit(1)
-
- def run(self, state):
- self._commit_message = self._tool.checkout().commit_message_for_this_commit(self._options.git_commit).message()
- if len(self._commit_message) < 10:
- raise Exception("Attempted to commit with a commit message shorter than 10 characters. Either your patch is missing a ChangeLog or webkit-patch may have a bug.")
-
- self._check_test_expectations(self._changed_files(state))
- self._state = state
-
- username = None
- password = None
- force_squash = self._options.non_interactive
-
- num_tries = 0
- while num_tries < 3:
- num_tries += 1
-
- try:
- scm = self._tool.scm()
- commit_text = scm.commit_with_message(self._commit_message, git_commit=self._options.git_commit, username=username, password=password, force_squash=force_squash, changed_files=self._changed_files(state))
- svn_revision = scm.svn_revision_from_commit_text(commit_text)
- _log.info("Committed r%s: <%s>" % (svn_revision, urls.view_revision_url(svn_revision)))
- self._state["commit_text"] = commit_text
- break;
- except AmbiguousCommitError, e:
- if self._tool.user.confirm(self._commit_warning(e)):
- force_squash = True
- else:
- # This will correctly interrupt the rest of the commit process.
- raise ScriptError(message="Did not commit")
- except AuthenticationError, e:
- if self._options.non_interactive:
- raise ScriptError(message="Authentication required")
- username = self._tool.user.prompt("%s login: " % e.server_host, repeat=5)
- if not username:
- raise ScriptError("You need to specify the username on %s to perform the commit as." % e.server_host)
- if e.prompt_for_password:
- password = self._tool.user.prompt_password("%s password for %s: " % (e.server_host, username), repeat=5)
- if not password:
- raise ScriptError("You need to specify the password for %s on %s to perform the commit." % (username, e.server_host))
diff --git a/Tools/Scripts/webkitpy/tool/steps/commit_unittest.py b/Tools/Scripts/webkitpy/tool/steps/commit_unittest.py
deleted file mode 100644
index c6b76b428..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/commit_unittest.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2012 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.common.system.executive_mock import MockExecutive
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.commit import Commit
-
-
-class CommitTest(unittest.TestCase):
- def _test_check_test_expectations(self, filename):
- capture = OutputCapture()
- options = MockOptions()
- options.git_commit = ""
- options.non_interactive = True
-
- tool = MockTool()
- tool.user = None # Will cause any access of tool.user to raise an exception.
- step = Commit(tool, options)
- state = {
- "changed_files": [filename + "XXX"],
- }
-
- tool.executive = MockExecutive(should_log=True, should_throw_when_run=False)
- expected_logs = "Committed r49824: <http://trac.webkit.org/changeset/49824>\n"
- capture.assert_outputs(self, step.run, [state], expected_logs=expected_logs)
-
- state = {
- "changed_files": ["platform/chromium/" + filename],
- }
- expected_logs = """MOCK run_and_throw_if_fail: ['mock-check-webkit-style', '--diff-files', 'platform/chromium/%s'], cwd=/mock-checkout
-Committed r49824: <http://trac.webkit.org/changeset/49824>
-""" % filename
- capture.assert_outputs(self, step.run, [state], expected_logs=expected_logs)
-
- tool.executive = MockExecutive(should_log=True, should_throw_when_run=set(["platform/chromium/" + filename]))
- self.assertRaises(ScriptError, capture.assert_outputs, self, step.run, [state])
-
- def test_check_test_expectations(self):
- self._test_check_test_expectations('TestExpectations')
diff --git a/Tools/Scripts/webkitpy/tool/steps/confirmdiff.py b/Tools/Scripts/webkitpy/tool/steps/confirmdiff.py
deleted file mode 100644
index 86c8a2c8d..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/confirmdiff.py
+++ /dev/null
@@ -1,77 +0,0 @@
-# Copyright (C) 2010 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.
-
-import urllib
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-from webkitpy.common.prettypatch import PrettyPatch
-from webkitpy.common.system import logutils
-from webkitpy.common.system.executive import ScriptError
-
-
-_log = logutils.get_logger(__file__)
-
-
-class ConfirmDiff(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.confirm,
- ]
-
- def _show_pretty_diff(self, diff):
- if not self._tool.user.can_open_url():
- return None
-
- try:
- pretty_patch = PrettyPatch(self._tool.executive,
- self._tool.scm().checkout_root)
- pretty_diff_file = pretty_patch.pretty_diff_file(diff)
- url = "file://%s" % urllib.quote(pretty_diff_file.name)
- self._tool.user.open_url(url)
- # We return the pretty_diff_file here because we need to keep the
- # file alive until the user has had a chance to confirm the diff.
- return pretty_diff_file
- except ScriptError, e:
- _log.warning("PrettyPatch failed. :(")
- except OSError, e:
- _log.warning("PrettyPatch unavailable.")
-
- def run(self, state):
- if not self._options.confirm:
- return
- diff = self.cached_lookup(state, "diff")
- pretty_diff_file = self._show_pretty_diff(diff)
- if not pretty_diff_file:
- self._tool.user.page(diff)
- diff_correct = self._tool.user.confirm("Was that diff correct?")
- if pretty_diff_file:
- pretty_diff_file.close()
- if not diff_correct:
- self._exit(1)
diff --git a/Tools/Scripts/webkitpy/tool/steps/createbug.py b/Tools/Scripts/webkitpy/tool/steps/createbug.py
deleted file mode 100644
index 7e4a83504..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/createbug.py
+++ /dev/null
@@ -1,56 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-
-class CreateBug(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.cc,
- Options.component,
- Options.blocks,
- ]
-
- def run(self, state):
- # No need to create a bug if we already have one.
- if state.get("bug_id"):
- return
- cc = self._options.cc
- if not cc:
- cc = state.get("bug_cc")
- blocks = self._options.blocks
- if not blocks:
- blocks = state.get("bug_blocked")
- state["bug_id"] = self._tool.bugs.create_bug(state["bug_title"], state["bug_description"], blocked=blocks, component=self._options.component, cc=cc)
- if blocks:
- status = self._tool.bugs.fetch_bug(blocks).status()
- if status == 'RESOLVED':
- self._tool.bugs.reopen_bug(blocks, "Re-opened since this is blocked by bug %s" % state["bug_id"])
diff --git a/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges.py b/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges.py
deleted file mode 100644
index 8a84cc702..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-from webkitpy.common.system.executive import ScriptError
-
-
-class DiscardLocalChanges(AbstractStep):
-
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.clean,
- Options.force_clean,
- ]
-
- def run(self, state):
- if not self._options.clean:
- return
-
- if not self._options.force_clean:
- if self._tool.scm().has_working_directory_changes():
- raise ScriptError("Working directory has changes, pass --force-clean to continue.")
- if self._tool.scm().has_local_commits():
- raise ScriptError("Repository has local commits, pass --force-clean to continue.")
- self._tool.scm().discard_local_changes()
diff --git a/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges_unittest.py b/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges_unittest.py
deleted file mode 100644
index d38fc926c..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/discardlocalchanges_unittest.py
+++ /dev/null
@@ -1,97 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.discardlocalchanges import DiscardLocalChanges
-from webkitpy.common.system.executive import ScriptError
-
-
-class DiscardLocalChangesTest(unittest.TestCase):
- def test_skip_on_clean(self):
- tool = MockTool()
- tool._scm = Mock()
- step = DiscardLocalChanges(tool, MockOptions(clean=False))
- step.run({})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 0)
-
- def test_working_changes_exist_with_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: True
- tool._scm.has_local_commits = lambda: False
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=True))
- step.run({})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 1)
-
- def test_local_commits_exist_with_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: False
- tool._scm.has_local_commits = lambda: True
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=True))
- step.run({})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 1)
-
- def test_local_commits_and_working_changes_exist_with_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: True
- tool._scm.has_local_commits = lambda: True
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=True))
- step.run({})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 1)
-
- def test_no_changes_exist_with_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: False
- tool._scm.has_local_commits = lambda: False
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=True))
- step.run({})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 1)
-
- def test_error_working_changes_exist_without_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: True
- tool._scm.has_local_commits = lambda: False
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=False))
- self.assertRaises(ScriptError, step.run, {})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 0)
-
- def test_error_local_commits_exist_without_force(self):
- tool = MockTool()
- tool._scm = Mock()
- tool._scm.has_working_directory_changes = lambda: False
- tool._scm.has_local_commits = lambda: True
- step = DiscardLocalChanges(tool, MockOptions(clean=True, force_clean=False))
- self.assertRaises(ScriptError, step.run, {})
- self.assertEqual(tool._scm.discard_local_changes.call_count, 0)
diff --git a/Tools/Scripts/webkitpy/tool/steps/editchangelog.py b/Tools/Scripts/webkitpy/tool/steps/editchangelog.py
deleted file mode 100644
index 35cd5043e..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/editchangelog.py
+++ /dev/null
@@ -1,36 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class EditChangeLog(AbstractStep):
- def run(self, state):
- absolute_paths = map(self._tool.scm().absolute_path, self.cached_lookup(state, "changelogs"))
- self._tool.user.edit_changelog(absolute_paths)
- self.did_modify_checkout(state)
diff --git a/Tools/Scripts/webkitpy/tool/steps/ensurebugisopenandassigned.py b/Tools/Scripts/webkitpy/tool/steps/ensurebugisopenandassigned.py
deleted file mode 100644
index 54f90b6d7..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/ensurebugisopenandassigned.py
+++ /dev/null
@@ -1,41 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class EnsureBugIsOpenAndAssigned(AbstractStep):
- def run(self, state):
- bug = self.cached_lookup(state, "bug")
- if bug.is_unassigned():
- self._tool.bugs.reassign_bug(bug.id())
-
- if bug.is_closed():
- # FIXME: We should probably pass this message in somehow?
- # Right now this step is only used before PostDiff steps, so this is OK.
- self._tool.bugs.reopen_bug(bug.id(), "Reopening to attach new patch.")
diff --git a/Tools/Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py b/Tools/Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py
deleted file mode 100644
index 778d7ae56..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/ensurelocalcommitifneeded.py
+++ /dev/null
@@ -1,48 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import sys
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class EnsureLocalCommitIfNeeded(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.local_commit,
- ]
-
- def run(self, state):
- if self._options.local_commit and not self._tool.scm().supports_local_commits():
- _log.error("--local-commit passed, but %s does not support local commits" % self._tool.scm().display_name())
- sys.exit(1)
diff --git a/Tools/Scripts/webkitpy/tool/steps/haslanded.py b/Tools/Scripts/webkitpy/tool/steps/haslanded.py
deleted file mode 100644
index b0692b32b..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/haslanded.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright (C) 2010 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.
-
-import cStringIO as StringIO
-import logging
-import sys
-import re
-import tempfile
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.common.system.executive import Executive, ScriptError
-from webkitpy.common.checkout import diff_parser
-
-from webkitpy.tool.steps import confirmdiff
-
-_log = logging.getLogger(__name__)
-
-
-class HasLanded(confirmdiff.ConfirmDiff):
-
- @classmethod
- def convert_to_svn(cls, diff):
- lines = StringIO.StringIO(diff).readlines()
- convert = diff_parser.get_diff_converter(lines)
- return "".join(convert(x) for x in lines)
-
- @classmethod
- def strip_change_log(cls, diff):
- output = []
- skipping = False
- for line in StringIO.StringIO(diff).readlines():
- indexline = re.match("^Index: ([^\\n]*/)?([^/\\n]*)$", line)
- if skipping and indexline:
- skipping = False
- if indexline and indexline.group(2) == "ChangeLog":
- skipping = True
- if not skipping:
- output.append(line)
- return "".join(output)
-
- @classmethod
- def diff_diff(cls, diff1, diff2, diff1_suffix, diff2_suffix, executive=None):
- # Now this is where it gets complicated, we need to compare our diff to the diff at landed_revision.
- diff1_patch = tempfile.NamedTemporaryFile(suffix=diff1_suffix + '.patch')
- diff1_patch.write(diff1)
- diff1_patch.flush()
-
- # Check if there are any differences in the patch that don't happen
- diff2_patch = tempfile.NamedTemporaryFile(suffix=diff2_suffix + '.patch')
- diff2_patch.write(diff2)
- diff2_patch.flush()
-
- # Diff the two diff's together...
- if not executive:
- executive = Executive()
-
- try:
- return executive.run_command(
- ["interdiff", diff1_patch.name, diff2_patch.name], decode_output=False)
- except ScriptError, e:
- _log.warning("Unable to find interdiff util (part of GNU difftools package) which is required.")
- raise
-
- def run(self, state):
- # Check if there are changes first
- if not self._tool.scm().local_changes_exist():
- _log.warn("No local changes found, exiting.")
- return True
-
- # Check if there is a SVN revision in the bug from the commit queue
- landed_revision = self.cached_lookup(state, "bug").commit_revision()
- if not landed_revision:
- raise ScriptError("Unable to find landed message in associated bug.")
-
- # Now this is there it gets complicated, we need to compare our diff to the diff at landed_revision.
- landed_diff_bin = self._tool.scm().diff_for_revision(landed_revision)
- landed_diff_trimmed = self.strip_change_log(self.convert_to_svn(landed_diff_bin))
-
- # Check if there are any differences in the patch that don't happen
- local_diff_bin = self._tool.scm().create_patch()
- local_diff_trimmed = self.strip_change_log(self.convert_to_svn(local_diff_bin))
-
- # Diff the two diff's together...
- diff_diff = self.diff_diff(landed_diff_trimmed, local_diff_trimmed,
- '-landed', '-local',
- executive=self._tool.executive)
-
- with self._show_pretty_diff(diff_diff) as pretty_diff_file:
- if not pretty_diff_file:
- self._tool.user.page(diff_diff)
-
- if self._tool.user.confirm("May I discard local changes?"):
- # Discard changes if the user confirmed we should
- _log.warn("Discarding changes as requested.")
- self._tool.scm().discard_local_changes()
diff --git a/Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py b/Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py
deleted file mode 100644
index 3a67029a8..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/haslanded_unittest.py
+++ /dev/null
@@ -1,299 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-import subprocess
-
-from webkitpy.tool.steps.haslanded import HasLanded
-
-
-class HasLandedTest(unittest.TestCase):
- maxDiff = None
-
- @unittest.skipUnless(subprocess.call('which interdiff', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) == 0, "requires interdiff")
- def test_run(self):
- # These patches require trailing whitespace to remain valid patches.
- diff1 = """\
-Index: a.py
-===================================================================
---- a.py
-+++ a.py
-@@ -1,3 +1,5 @@
- A
- B
- C
-+D
-+E
-Index: b.py
-===================================================================
---- b.py 2013-01-21 15:20:59.693887185 +1100
-+++ b.py 2013-01-21 15:22:24.382555711 +1100
-@@ -1,3 +1,5 @@
- 1
- 2
- 3
-+4
-+5
-"""
-
- diff1_add_line = """\
-Index: a.py
-===================================================================
---- a.py
-+++ a.py
-@@ -1,3 +1,6 @@
- A
- B
- C
-+D
-+E
-+F
-Index: b.py
-===================================================================
---- b.py
-+++ b.py
-@@ -1,3 +1,5 @@
- 1
- 2
- 3
-+4
-+5
-"""
-
- diff1_remove_line = """\
-Index: a.py
-===================================================================
---- a.py
-+++ a.py
-@@ -1,3 +1,4 @@
- A
- B
- C
-+D
-Index: b.py
-===================================================================
---- b.py
-+++ b.py
-@@ -1,3 +1,5 @@
- 1
- 2
- 3
-+4
-+5
-"""
-
- diff1_add_file = diff1 + """\
-Index: c.py
-===================================================================
---- c.py
-+++ c.py
-@@ -1,3 +1,5 @@
- 1
- 2
- 3
-+4
-+5
-"""
-
- diff1_remove_file = """\
-Index: a.py
-===================================================================
---- a.py
-+++ a.py
-@@ -1,3 +1,5 @@
- A
- B
- C
-+D
-+E
-"""
- self.assertMultiLineEqual(
- HasLanded.diff_diff(diff1, diff1_add_line, '', 'add-line'),
- """\
-diff -u a.py a.py
---- a.py
-+++ a.py
-@@ -5,0 +6 @@
-+F
-""")
-
- self.assertMultiLineEqual(
- HasLanded.diff_diff(diff1, diff1_remove_line, '', 'remove-line'),
- """\
-diff -u a.py a.py
---- a.py
-+++ a.py
-@@ -5 +4,0 @@
--E
-""")
- self.assertMultiLineEqual(
- HasLanded.diff_diff(diff1, diff1_add_file, '', 'add-file'),
- """\
-only in patch2:
-unchanged:
---- c.py
-+++ c.py
-@@ -1,3 +1,5 @@
- 1
- 2
- 3
-+4
-+5
-""")
- self.assertMultiLineEqual(
- HasLanded.diff_diff(diff1, diff1_remove_file, '', 'remove-file'),
- """\
-reverted:
---- b.py 2013-01-21 15:22:24.382555711 +1100
-+++ b.py 2013-01-21 15:20:59.693887185 +1100
-@@ -1,5 +1,3 @@
- 1
- 2
- 3
--4
--5
-""")
-
- def test_convert_to_svn_and_strip_change_log(self):
- # These patches require trailing whitespace to remain valid patches.
- testbefore1 = HasLanded.convert_to_svn("""\
-diff --git a/Tools/ChangeLog b/Tools/ChangeLog
-index 219ba72..0390b73 100644
---- a/Tools/ChangeLog
-+++ b/Tools/ChangeLog
-@@ -1,3 +1,32 @@
-+2013-01-17 Tim 'mithro' Ansell <mithro@mithis.com>
-+
-+ Adding "has-landed" command to webkit-patch which allows a person to
-+ Reviewed by NOBODY (OOPS!).
-+
- 2013-01-20 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Extend diff_parser to support the --full-index output.
-diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-index 4bf8ec6..3a128cb 100644
---- a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-+++ b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-""")
- testafter1 = HasLanded.convert_to_svn("""\
-diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-index 4bf8ec6..3a128cb 100644
---- a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-+++ b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-diff --git a/Tools/ChangeLog b/Tools/ChangeLog
-index 219ba72..0390b73 100644
---- a/Tools/ChangeLog
-+++ b/Tools/ChangeLog
-@@ -1,3 +1,32 @@
-+2013-01-17 Tim 'mithro' Ansell <mithro@mithis.com>
-+
-+ Adding "has-landed" command to webkit-patch which allows a person to
-+ Reviewed by NOBODY (OOPS!).
-+
- 2013-01-20 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Extend diff_parser to support the --full-index output.
-""")
- testexpected1 = """\
-Index: Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-===================================================================
---- Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-+++ Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-"""
- testmiddle1 = HasLanded.convert_to_svn("""\
-diff --git a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-index 4bf8ec6..3a128cb 100644
---- a/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-+++ b/Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-diff --git a/ChangeLog b/ChangeLog
-index 219ba72..0390b73 100644
---- a/ChangeLog
-+++ b/ChangeLog
-@@ -1,3 +1,32 @@
-+2013-01-17 Tim 'mithro' Ansell <mithro@mithis.com>
-+
-+ Adding "has-landed" command to webkit-patch which allows a person to
-+ Reviewed by NOBODY (OOPS!).
-+
- 2013-01-20 Tim 'mithro' Ansell <mithro@mithis.com>
-
- Extend diff_parser to support the --full-index output.
-diff --git a/Tools/Scripts/webkitpy/common/other.py b/Tools/Scripts/webkitpy/common/other.py
-index 4bf8ec6..3a128cb 100644
---- a/Tools/Scripts/webkitpy/common/other.py
-+++ b/Tools/Scripts/webkitpy/common/other.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-""")
- testexpected2 = """\
-Index: Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-===================================================================
---- Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-+++ Tools/Scripts/webkitpy/common/net/bugzilla/bug.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-Index: Tools/Scripts/webkitpy/common/other.py
-===================================================================
---- Tools/Scripts/webkitpy/common/other.py
-+++ Tools/Scripts/webkitpy/common/other.py
-@@ -28,6 +28,8 @@
-+import re
-+
- from .attachment import Attachment
-
-"""
-
- self.assertMultiLineEqual(testexpected1, HasLanded.strip_change_log(testbefore1))
- self.assertMultiLineEqual(testexpected1, HasLanded.strip_change_log(testafter1))
- self.assertMultiLineEqual(testexpected2, HasLanded.strip_change_log(testmiddle1))
diff --git a/Tools/Scripts/webkitpy/tool/steps/metastep.py b/Tools/Scripts/webkitpy/tool/steps/metastep.py
deleted file mode 100644
index 7cbd1c55c..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/metastep.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-# FIXME: Unify with StepSequence? I'm not sure yet which is the better design.
-class MetaStep(AbstractStep):
- substeps = [] # Override in subclasses
- def __init__(self, tool, options):
- AbstractStep.__init__(self, tool, options)
- self._step_instances = []
- for step_class in self.substeps:
- self._step_instances.append(step_class(tool, options))
-
- @staticmethod
- def _collect_options_from_steps(steps):
- collected_options = []
- for step in steps:
- collected_options = collected_options + step.options()
- return collected_options
-
- @classmethod
- def options(cls):
- return cls._collect_options_from_steps(cls.substeps)
-
- def run(self, state):
- for step in self._step_instances:
- step.run(state)
diff --git a/Tools/Scripts/webkitpy/tool/steps/obsoletepatches.py b/Tools/Scripts/webkitpy/tool/steps/obsoletepatches.py
deleted file mode 100644
index dfed959cb..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/obsoletepatches.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.grammar import pluralize
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class ObsoletePatches(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.obsolete_patches,
- ]
-
- def run(self, state):
- if not self._options.obsolete_patches:
- return
- bug_id = state["bug_id"]
- patches = self._tool.bugs.fetch_bug(bug_id).patches()
- if not patches:
- return
- _log.info("Obsoleting %s on bug %s" % (pluralize("old patch", len(patches)), bug_id))
- for patch in patches:
- self._tool.bugs.obsolete_attachment(patch.id())
diff --git a/Tools/Scripts/webkitpy/tool/steps/options.py b/Tools/Scripts/webkitpy/tool/steps/options.py
deleted file mode 100644
index 7eda61459..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/options.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2010 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.
-
-from optparse import make_option
-
-class Options(object):
- blocks = make_option("--blocks", action="store", type="string", dest="blocks", default=None, help="Bug number which the created bug blocks.")
- build = make_option("--build", action="store_true", dest="build", default=False, help="Build and run run-webkit-tests before committing.")
- build_style = make_option("--build-style", action="store", dest="build_style", default=None, help="Whether to build debug, release, or both.")
- cc = make_option("--cc", action="store", type="string", dest="cc", help="Comma-separated list of email addresses to carbon-copy.")
- check_style = make_option("--ignore-style", action="store_false", dest="check_style", default=True, help="Don't check to see if the patch has proper style before uploading.")
- check_style_filter = make_option("--check-style-filter", action="store", type="string", dest="check_style_filter", default=None, help="Filter style-checker rules (see check-webkit-style --help).")
- clean = make_option("--no-clean", action="store_false", dest="clean", default=True, help="Don't check if the working directory is clean before applying patches")
- close_bug = make_option("--no-close", action="store_false", dest="close_bug", default=True, help="Leave bug open after landing.")
- comment = make_option("--comment", action="store", type="string", dest="comment", help="Comment to post to bug.")
- component = make_option("--component", action="store", type="string", dest="component", help="Component for the new bug.")
- confirm = make_option("--no-confirm", action="store_false", dest="confirm", default=True, help="Skip confirmation steps.")
- description = make_option("-m", "--description", action="store", type="string", dest="description", help="Description string for the attachment")
- email = make_option("--email", action="store", type="string", dest="email", help="Email address to use in ChangeLogs.")
- force_clean = make_option("--force-clean", action="store_true", dest="force_clean", default=False, help="Clean working directory before applying patches (removes local changes and commits)")
- git_commit = make_option("-g", "--git-commit", action="store", dest="git_commit", help="Operate on a local commit. If a range, the commits are squashed into one. <ref>.... includes the working copy changes. UPSTREAM can be used for the upstream/tracking branch.")
- local_commit = make_option("--local-commit", action="store_true", dest="local_commit", default=False, help="Make a local commit for each applied patch")
- non_interactive = make_option("--non-interactive", action="store_true", dest="non_interactive", default=False, help="Never prompt the user, fail as fast as possible.")
- obsolete_patches = make_option("--no-obsolete", action="store_false", dest="obsolete_patches", default=True, help="Do not obsolete old patches before posting this one.")
- open_bug = make_option("--open-bug", action="store_true", dest="open_bug", default=False, help="Opens the associated bug in a browser.")
- parent_command = make_option("--parent-command", action="store", dest="parent_command", default=None, help="(Internal) The command that spawned this instance.")
- quiet = make_option("--quiet", action="store_true", dest="quiet", default=False, help="Produce less console output.")
- request_commit = make_option("--request-commit", action="store_true", dest="request_commit", default=False, help="Mark the patch as needing auto-commit after review.")
- review = make_option("--no-review", action="store_false", dest="review", default=True, help="Do not mark the patch for review.")
- reviewer = make_option("-r", "--reviewer", action="store", type="string", dest="reviewer", help="Update ChangeLogs to say Reviewed by REVIEWER.")
- suggest_reviewers = make_option("--suggest-reviewers", action="store_true", default=False, help="Offer to CC appropriate reviewers.")
- test = make_option("--test", action="store_true", dest="test", default=False, help="Run run-webkit-tests before committing.")
- update = make_option("--no-update", action="store_false", dest="update", default=True, help="Don't update the working directory.")
- update_changelogs = make_option("--update-changelogs", action="store_true", dest="update_changelogs", default=False, help="Update existing ChangeLog entries with new date, bug description, and touched files/functions.")
- changelog_count = make_option("--changelog-count", action="store", type="int", dest="changelog_count", help="Number of changelogs to parse.")
diff --git a/Tools/Scripts/webkitpy/tool/steps/postdiff.py b/Tools/Scripts/webkitpy/tool/steps/postdiff.py
deleted file mode 100644
index 6913cab88..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/postdiff.py
+++ /dev/null
@@ -1,52 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-
-class PostDiff(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.description,
- Options.comment,
- Options.review,
- Options.request_commit,
- Options.open_bug,
- ]
-
- def run(self, state):
- diff = self.cached_lookup(state, "diff")
- description = self._options.description or "Patch"
- comment_text = self._options.comment
- bug_id = state["bug_id"]
-
- self._tool.bugs.add_patch_to_bug(bug_id, diff, description, comment_text=comment_text, mark_for_review=self._options.review, mark_for_commit_queue=self._options.request_commit)
- if self._options.open_bug:
- self._tool.user.open_url(self._tool.bugs.bug_url_for_bug_id(bug_id))
diff --git a/Tools/Scripts/webkitpy/tool/steps/postdiffforcommit.py b/Tools/Scripts/webkitpy/tool/steps/postdiffforcommit.py
deleted file mode 100644
index 13bc00c4f..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/postdiffforcommit.py
+++ /dev/null
@@ -1,39 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class PostDiffForCommit(AbstractStep):
- def run(self, state):
- self._tool.bugs.add_patch_to_bug(
- state["bug_id"],
- self.cached_lookup(state, "diff"),
- "Patch for landing",
- mark_for_review=False,
- mark_for_landing=True)
diff --git a/Tools/Scripts/webkitpy/tool/steps/postdiffforrevert.py b/Tools/Scripts/webkitpy/tool/steps/postdiffforrevert.py
deleted file mode 100644
index 2900eb39f..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/postdiffforrevert.py
+++ /dev/null
@@ -1,49 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.common.net.bugzilla import Attachment
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class PostDiffForRevert(AbstractStep):
- def run(self, state):
- comment_text = "Any committer can land this patch automatically by \
-marking it commit-queue+. The commit-queue will build and test \
-the patch before landing to ensure that the rollout will be \
-successful. This process takes approximately 15 minutes.\n\n\
-If you would like to land the rollout faster, you can use the \
-following command:\n\n\
- webkit-patch land-attachment ATTACHMENT_ID\n\n\
-where ATTACHMENT_ID is the ID of this attachment."
- self._tool.bugs.add_patch_to_bug(
- state["bug_id"],
- self.cached_lookup(state, "diff"),
- "%s%s" % (Attachment.rollout_preamble, state["revision"]),
- comment_text=comment_text,
- mark_for_review=False,
- mark_for_commit_queue=True)
diff --git a/Tools/Scripts/webkitpy/tool/steps/preparechangelog.py b/Tools/Scripts/webkitpy/tool/steps/preparechangelog.py
deleted file mode 100644
index 716ab826d..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/preparechangelog.py
+++ /dev/null
@@ -1,134 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import re
-import sys
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class PrepareChangeLog(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.quiet,
- Options.email,
- Options.git_commit,
- Options.update_changelogs,
- ]
-
- def _ensure_bug_url(self, state):
- if not state.get("bug_id"):
- return
- bug_id = state.get("bug_id")
- changelogs = self.cached_lookup(state, "changelogs")
- for changelog_path in changelogs:
- changelog = ChangeLog(changelog_path, self._tool.filesystem)
- if not changelog.latest_entry().bug_id():
- changelog.set_short_description_and_bug_url(
- self.cached_lookup(state, "bug_title"),
- self._tool.bugs.bug_url_for_bug_id(bug_id))
-
- def _resolve_existing_entry(self, changelog_path):
- # When this is called, the top entry in the ChangeLog was just created
- # by prepare-ChangeLog, as an clean updated version of the one below it.
- with self._tool.filesystem.open_text_file_for_reading(changelog_path) as changelog_file:
- entries_gen = ChangeLog.parse_entries_from_file(changelog_file)
- entries = zip(entries_gen, range(2))
-
- if not len(entries):
- raise Exception("Expected to find at least two ChangeLog entries in %s but found none." % changelog_path)
- if len(entries) == 1:
- # If we get here, it probably means we've just rolled over to a
- # new CL file, so we don't have anything to resolve.
- return
-
- (new_entry, _), (old_entry, _) = entries
- final_entry = self._merge_entries(old_entry, new_entry)
-
- changelog = ChangeLog(changelog_path, self._tool.filesystem)
- changelog.delete_entries(2)
- changelog.prepend_text(final_entry)
-
- def _merge_entries(self, old_entry, new_entry):
- final_entry = old_entry.contents()
-
- final_entry = final_entry.replace(old_entry.date(), new_entry.date(), 1)
-
- new_bug_desc = new_entry.bug_description()
- old_bug_desc = old_entry.bug_description()
- if new_bug_desc and old_bug_desc and new_bug_desc != old_bug_desc:
- final_entry = final_entry.replace(old_bug_desc, new_bug_desc)
-
- new_touched = new_entry.touched_functions()
- old_touched = old_entry.touched_functions()
- if new_touched != old_touched:
- if old_entry.is_touched_files_text_clean():
- final_entry = final_entry.replace(old_entry.touched_files_text(), new_entry.touched_files_text())
- else:
- final_entry += "\n" + new_entry.touched_files_text()
-
- return final_entry + "\n"
-
- def run(self, state):
- if self.cached_lookup(state, "changelogs"):
- self._ensure_bug_url(state)
- if not self._options.update_changelogs:
- return
-
- args = self._tool.deprecated_port().prepare_changelog_command()
- if state.get("bug_id"):
- args.append("--bug=%s" % state["bug_id"])
- args.append("--description=%s" % self.cached_lookup(state, 'bug_title'))
- if self._options.email:
- args.append("--email=%s" % self._options.email)
-
- if self._tool.scm().supports_local_commits():
- args.append("--merge-base=%s" % self._tool.scm().merge_base(self._options.git_commit))
-
- args.extend(self._changed_files(state))
-
- try:
- output = self._tool.executive.run_and_throw_if_fail(args, self._options.quiet, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- _log.error("Unable to prepare ChangeLogs.")
- sys.exit(1)
-
- # These are the ChangeLog entries added by prepare-Changelog
- changelogs = re.findall(r'Editing the (\S*/ChangeLog) file.', output)
- changelogs = set(self._tool.filesystem.join(self._tool.scm().checkout_root, f) for f in changelogs)
- for changelog in changelogs & set(self.cached_lookup(state, "changelogs")):
- self._resolve_existing_entry(changelog)
-
- self.did_modify_checkout(state)
diff --git a/Tools/Scripts/webkitpy/tool/steps/preparechangelog_unittest.py b/Tools/Scripts/webkitpy/tool/steps/preparechangelog_unittest.py
deleted file mode 100644
index 803f072a3..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/preparechangelog_unittest.py
+++ /dev/null
@@ -1,133 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-# Do not import changelog_unittest.ChangeLogTest directly as that will cause it to be run again.
-from webkitpy.common.checkout import changelog_unittest
-
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.preparechangelog import PrepareChangeLog
-
-class PrepareChangeLogTest(changelog_unittest.ChangeLogTest):
- def test_resolve_existing_entry(self):
- step = PrepareChangeLog(MockTool(), MockOptions())
-
- headers = ["2013-01-18 Timothy Loh <timloh@chromium.com>\n\n",
- "2013-01-20 Timothy Loh <timloh@chromium.com>\n\n",
- u"2009-08-17 Tor Arne Vestb\xf8 <vestbo@webkit.org>\n\n",
- u"2009-08-18 Tor Arne Vestb\xf8 <vestbo@webkit.org>\n\n",
- "2013-01-18 Eric Seidel <eric@webkit.org>\n\n",
- "2013-01-20 Eric Seidel <eric@webkit.org>\n\n",
- ]
-
- bug_descs = [" prepare-Changelog should support updating the list of changed files\n",
- " webkit-patch upload should support updating the list of changed files\n"]
-
- bug_url = " https://bugs.webkit.org/show_bug.cgi?id=74358\n\n"
-
- descriptions = ["", " A description of the changes.\n\n",
- " A description.\n\n With some\n line breaks\n\n"]
-
- changes = [
-""" * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog):
- (PrepareChangeLog.run):\n\n""",
-""" * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog._resolve_existing_entry):
- (PrepareChangeLog):
- (PrepareChangeLog.run):\n\n""",
-""" * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog): Some annotations
- (PrepareChangeLog.run):
- More annotations\n\n""",
-""" * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog): Some annotations
- (PrepareChangeLog.run):
- More annotations
-
- * Scripts/webkitpy/tool/steps/preparechangelog.py:
- (PrepareChangeLog._resolve_existing_entry):
- (PrepareChangeLog):
- (PrepareChangeLog.run):\n\n""",
- ]
-
- def make_entry(indices):
- a, b, c, d = indices
- return headers[a] + bug_descs[b] + bug_url + descriptions[c] + changes[d]
-
- test_cases = [((0, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)),
- ((0, 0, 0, 0), (0, 0, 1, 0), (0, 0, 1, 0)),
- ((1, 0, 0, 0), (0, 0, 2, 0), (1, 0, 2, 0)),
- ((0, 1, 0, 0), (0, 0, 1, 0), (0, 1, 1, 0)),
- ((0, 0, 0, 1), (0, 0, 0, 0), (0, 0, 0, 1)),
- ((0, 0, 0, 0), (0, 0, 1, 1), (0, 0, 1, 0)),
- ((0, 0, 0, 0), (0, 0, 2, 2), (0, 0, 2, 2)),
- ((0, 0, 0, 1), (0, 0, 1, 2), (0, 0, 1, 3)),
- ((1, 1, 0, 1), (0, 0, 0, 2), (1, 1, 0, 3)),
- ((3, 0, 0, 0), (2, 0, 1, 0), (3, 0, 1, 0)),
- ((4, 0, 0, 0), (0, 0, 0, 0), (0, 0, 0, 0)),
- ((5, 0, 0, 0), (0, 0, 0, 0), (1, 0, 0, 0)),
- ((0, 0, 0, 0), (4, 0, 0, 0), (4, 0, 0, 0)),
- ((1, 0, 0, 0), (4, 0, 0, 0), (5, 0, 0, 0)),
- ]
-
- for new, old, final in test_cases:
- new_entry = make_entry(new)
- old_entry = make_entry(old)
- start_file = new_entry + old_entry + self._rolled_over_footer
-
- final_entry = make_entry(final)
- end_file = final_entry + self._rolled_over_footer
-
- path = "ChangeLog"
- step._tool.filesystem = MockFileSystem()
- step._tool.filesystem.write_text_file(path, start_file)
- step._resolve_existing_entry(path)
- actual_output = step._tool.filesystem.read_text_file(path)
- self.assertEquals(actual_output, end_file)
-
- def test_ensure_bug_url(self):
- capture = OutputCapture()
- step = PrepareChangeLog(MockTool(), MockOptions())
- changelog_contents = u"%s\n%s" % (self._new_entry_boilerplate, self._example_changelog)
- changelog_path = "ChangeLog"
- state = {
- "bug_title": "Example title",
- "bug_id": 1234,
- "changelogs": [changelog_path],
- }
- step._tool.filesystem = MockFileSystem()
- step._tool.filesystem.write_text_file(changelog_path, changelog_contents)
- capture.assert_outputs(self, step._ensure_bug_url, [state])
- actual_contents = step._tool.filesystem.read_text_file(changelog_path)
- expected_message = "Example title\n http://example.com/1234"
- expected_contents = changelog_contents.replace("Need a short description (OOPS!).\n Need the bug URL (OOPS!).", expected_message)
- self.assertEqual(actual_contents, expected_contents)
diff --git a/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert.py b/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert.py
deleted file mode 100644
index 82e7b0252..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert.py
+++ /dev/null
@@ -1,58 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.common.config import urls
-from webkitpy.tool.grammar import join_with_separators
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class PrepareChangeLogForRevert(AbstractStep):
- @classmethod
- def _message_for_revert(cls, revision_list, reason, bug_url=None):
- message = "Unreviewed, rolling out %s.\n" % join_with_separators(['r' + str(revision) for revision in revision_list])
- for revision in revision_list:
- message += "%s\n" % urls.view_revision_url(revision)
- if bug_url:
- message += "%s\n" % bug_url
- # Add an extra new line after the rollout links, before any reason.
- message += "\n"
- if reason:
- message += "%s\n\n" % reason
- return message
-
- def run(self, state):
- # This could move to prepare-ChangeLog by adding a --revert= option.
- self._tool.executive.run_and_throw_if_fail(self._tool.deprecated_port().prepare_changelog_command(), cwd=self._tool.scm().checkout_root)
- changelog_paths = self._tool.checkout().modified_changelogs(git_commit=None)
- bug_url = self._tool.bugs.bug_url_for_bug_id(state["bug_id"]) if state["bug_id"] else None
- message = self._message_for_revert(state["revision_list"], state["reason"], bug_url)
- for changelog_path in changelog_paths:
- # FIXME: Seems we should prepare the message outside of changelogs.py and then just pass in
- # text that we want to use to replace the reviewed by line.
- ChangeLog(changelog_path).update_with_unreviewed_message(message)
diff --git a/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py b/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py
deleted file mode 100644
index 3ec6e9a60..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/preparechangelogforrevert_unittest.py
+++ /dev/null
@@ -1,120 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-
-# Do not import changelog_unittest.ChangeLogTest directly as that will cause it to be run again.
-from webkitpy.common.checkout import changelog_unittest
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.tool.steps.preparechangelogforrevert import *
-
-
-class UpdateChangeLogsForRevertTest(unittest.TestCase):
- _revert_entry_with_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r12345.
- http://trac.webkit.org/changeset/12345
- http://example.com/123
-
- Reason
-
- * Scripts/bugzilla-tool:
-'''
-
- _revert_entry_without_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r12345.
- http://trac.webkit.org/changeset/12345
-
- Reason
-
- * Scripts/bugzilla-tool:
-'''
-
- _multiple_revert_entry_with_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r12345, r12346, and r12347.
- http://trac.webkit.org/changeset/12345
- http://trac.webkit.org/changeset/12346
- http://trac.webkit.org/changeset/12347
- http://example.com/123
-
- Reason
-
- * Scripts/bugzilla-tool:
-'''
-
- _multiple_revert_entry_without_bug_url = '''2009-08-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r12345, r12346, and r12347.
- http://trac.webkit.org/changeset/12345
- http://trac.webkit.org/changeset/12346
- http://trac.webkit.org/changeset/12347
-
- Reason
-
- * Scripts/bugzilla-tool:
-'''
-
- _revert_with_log_reason = """2009-08-19 Eric Seidel <eric@webkit.org>
-
- Unreviewed, rolling out r12345.
- http://trac.webkit.org/changeset/12345
- http://example.com/123
-
- This is a very long reason which should be long enough so that
- _message_for_revert will need to wrap it. We'll also include
- a
- https://veryveryveryveryverylongbugurl.com/reallylongbugthingy.cgi?bug_id=12354
- link so that we can make sure we wrap that right too.
-
- * Scripts/bugzilla-tool:
-"""
-
- def _assert_message_for_revert_output(self, args, expected_entry):
- changelog_contents = u"%s\n%s" % (changelog_unittest.ChangeLogTest._new_entry_boilerplate, changelog_unittest.ChangeLogTest._example_changelog)
- changelog_path = "ChangeLog"
- fs = MockFileSystem({changelog_path: changelog_contents.encode("utf-8")})
- changelog = ChangeLog(changelog_path, fs)
- changelog.update_with_unreviewed_message(PrepareChangeLogForRevert._message_for_revert(*args))
- actual_entry = changelog.latest_entry()
- self.assertMultiLineEqual(actual_entry.contents(), expected_entry)
- self.assertIsNone(actual_entry.reviewer_text())
- # These checks could be removed to allow this to work on other entries:
- self.assertEqual(actual_entry.author_name(), "Eric Seidel")
- self.assertEqual(actual_entry.author_email(), "eric@webkit.org")
-
- def test_message_for_revert(self):
- self._assert_message_for_revert_output([[12345], "Reason"], self._revert_entry_without_bug_url)
- self._assert_message_for_revert_output([[12345], "Reason", "http://example.com/123"], self._revert_entry_with_bug_url)
- self._assert_message_for_revert_output([[12345, 12346, 12347], "Reason"], self._multiple_revert_entry_without_bug_url)
- self._assert_message_for_revert_output([[12345, 12346, 12347], "Reason", "http://example.com/123"], self._multiple_revert_entry_with_bug_url)
- long_reason = "This is a very long reason which should be long enough so that _message_for_revert will need to wrap it. We'll also include a https://veryveryveryveryverylongbugurl.com/reallylongbugthingy.cgi?bug_id=12354 link so that we can make sure we wrap that right too."
- self._assert_message_for_revert_output([[12345], long_reason, "http://example.com/123"], self._revert_with_log_reason)
diff --git a/Tools/Scripts/webkitpy/tool/steps/promptforbugortitle.py b/Tools/Scripts/webkitpy/tool/steps/promptforbugortitle.py
deleted file mode 100644
index 31c913cb0..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/promptforbugortitle.py
+++ /dev/null
@@ -1,45 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class PromptForBugOrTitle(AbstractStep):
- def run(self, state):
- # No need to prompt if we alrady have the bug_id.
- if state.get("bug_id"):
- return
- user_response = self._tool.user.prompt("Please enter a bug number or a title for a new bug:\n")
- # If the user responds with a number, we assume it's bug number.
- # Otherwise we assume it's a bug subject.
- try:
- state["bug_id"] = int(user_response)
- except ValueError, TypeError:
- state["bug_title"] = user_response
- # FIXME: This is kind of a lame description.
- state["bug_description"] = user_response
diff --git a/Tools/Scripts/webkitpy/tool/steps/reopenbugafterrollout.py b/Tools/Scripts/webkitpy/tool/steps/reopenbugafterrollout.py
deleted file mode 100644
index 39388f62e..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/reopenbugafterrollout.py
+++ /dev/null
@@ -1,47 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.comments import bug_comment_from_commit_text
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-_log = logging.getLogger(__name__)
-
-
-class ReopenBugAfterRollout(AbstractStep):
- def run(self, state):
- commit_comment = bug_comment_from_commit_text(self._tool.scm(), state["commit_text"])
- comment_text = "Reverted r%s for reason:\n\n%s\n\n%s" % (state["revision"], state["reason"], commit_comment)
-
- bug_id = state["bug_id"]
- if not bug_id:
- _log.info(comment_text)
- _log.info("No bugs were updated.")
- return
- self._tool.bugs.reopen_bug(bug_id, comment_text)
diff --git a/Tools/Scripts/webkitpy/tool/steps/revertrevision.py b/Tools/Scripts/webkitpy/tool/steps/revertrevision.py
deleted file mode 100644
index 8016be5b9..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/revertrevision.py
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-
-
-class RevertRevision(AbstractStep):
- def run(self, state):
- self._tool.checkout().apply_reverse_diffs(state["revision_list"])
- self.did_modify_checkout(state)
diff --git a/Tools/Scripts/webkitpy/tool/steps/runtests.py b/Tools/Scripts/webkitpy/tool/steps/runtests.py
deleted file mode 100644
index a45628b2d..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/runtests.py
+++ /dev/null
@@ -1,114 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import os
-import platform
-import sys
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-from webkitpy.common.system.executive import ScriptError
-
-_log = logging.getLogger(__name__)
-
-class RunTests(AbstractStep):
- # FIXME: This knowledge really belongs in the commit-queue.
- NON_INTERACTIVE_FAILURE_LIMIT_COUNT = 30
-
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.build_style,
- Options.test,
- Options.non_interactive,
- Options.quiet,
- ]
-
- def run(self, state):
- if not self._options.test:
- return
-
- if not self._options.non_interactive:
- # FIXME: We should teach the commit-queue and the EWS how to run these tests.
-
- python_unittests_command = self._tool.deprecated_port().run_python_unittests_command()
- if python_unittests_command:
- _log.info("Running Python unit tests")
- self._tool.executive.run_and_throw_if_fail(python_unittests_command, cwd=self._tool.scm().checkout_root)
-
- perl_unittests_command = self._tool.deprecated_port().run_perl_unittests_command()
- if perl_unittests_command:
- _log.info("Running Perl unit tests")
- self._tool.executive.run_and_throw_if_fail(perl_unittests_command, cwd=self._tool.scm().checkout_root)
-
- javascriptcore_tests_command = self._tool.deprecated_port().run_javascriptcore_tests_command()
- if javascriptcore_tests_command:
- _log.info("Running JavaScriptCore tests")
- self._tool.executive.run_and_throw_if_fail(javascriptcore_tests_command, quiet=True, cwd=self._tool.scm().checkout_root)
-
- bindings_tests_command = self._tool.deprecated_port().run_bindings_tests_command()
- if bindings_tests_command:
- _log.info("Running bindings generation tests")
- args = bindings_tests_command
- try:
- self._tool.executive.run_and_throw_if_fail(args, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- _log.info("Error running run-bindings-tests: %s" % e.message_with_output())
-
- webkit_unit_tests_command = self._tool.deprecated_port().run_webkit_unit_tests_command()
- if webkit_unit_tests_command:
- _log.info("Running WebKit unit tests")
- args = webkit_unit_tests_command
- try:
- self._tool.executive.run_and_throw_if_fail(args, cwd=self._tool.scm().checkout_root)
- except ScriptError, e:
- _log.info("Error running webkit_unit_tests: %s" % e.message_with_output())
-
-
- _log.info("Running run-webkit-tests")
- args = self._tool.deprecated_port().run_webkit_tests_command()
- if self._options.non_interactive:
- args.extend([
- "--no-new-test-results",
- "--no-show-results",
- "--exit-after-n-failures=%s" % self.NON_INTERACTIVE_FAILURE_LIMIT_COUNT,
- ])
-
- # old-run-webkit-tests does not support --skip-failing-tests
- # Using --quiet one Windows fails when we try to use /dev/null, disabling for now until we find a fix
- if sys.platform != "cygwin":
- args.append("--quiet")
- args.append("--skip-failing-tests")
- else:
- args.append("--no-build");
-
- if self._options.quiet:
- args.append("--quiet")
-
- self._tool.executive.run_and_throw_if_fail(args, cwd=self._tool.scm().checkout_root)
-
diff --git a/Tools/Scripts/webkitpy/tool/steps/runtests_unittest.py b/Tools/Scripts/webkitpy/tool/steps/runtests_unittest.py
deleted file mode 100644
index ef8920e9b..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/runtests_unittest.py
+++ /dev/null
@@ -1,61 +0,0 @@
-# Copyright (C) 2011 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.
-
-import platform
-import sys
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.runtests import RunTests
-
-class RunTestsTest(unittest.TestCase):
- def test_webkit_run_unit_tests(self):
- tool = MockTool(log_executive=True)
- tool._deprecated_port.run_python_unittests_command = lambda: None
- tool._deprecated_port.run_perl_unittests_command = lambda: None
- step = RunTests(tool, MockOptions(test=True, non_interactive=True, quiet=False))
-
- if sys.platform != "cygwin":
- expected_logs = """Running bindings generation tests
-MOCK run_and_throw_if_fail: ['mock-run-bindings-tests'], cwd=/mock-checkout
-Running WebKit unit tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-unit-tests'], cwd=/mock-checkout
-Running run-webkit-tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-tests', '--no-new-test-results', '--no-show-results', '--exit-after-n-failures=30', '--quiet', '--skip-failing-tests'], cwd=/mock-checkout
-"""
- else:
- expected_logs = """Running bindings generation tests
-MOCK run_and_throw_if_fail: ['mock-run-bindings-tests'], cwd=/mock-checkout
-Running WebKit unit tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-unit-tests'], cwd=/mock-checkout
-Running run-webkit-tests
-MOCK run_and_throw_if_fail: ['mock-run-webkit-tests', '--no-new-test-results', '--no-show-results', '--exit-after-n-failures=30', '--no-build'], cwd=/mock-checkout
-"""
-
- OutputCapture().assert_outputs(self, step.run, [{}], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/steps/steps_unittest.py b/Tools/Scripts/webkitpy/tool/steps/steps_unittest.py
deleted file mode 100644
index 7172ba7f5..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/steps_unittest.py
+++ /dev/null
@@ -1,117 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.common.config.ports import DeprecatedPort
-from webkitpy.tool.mocktool import MockOptions, MockTool
-
-from webkitpy.tool import steps
-
-class StepsTest(unittest.TestCase):
- def _step_options(self):
- options = MockOptions()
- options.non_interactive = True
- options.port = 'MOCK port'
- options.quiet = True
- options.test = True
- return options
-
- def _run_step(self, step, tool=None, options=None, state=None):
- if not tool:
- tool = MockTool()
- if not options:
- options = self._step_options()
- if not state:
- state = {}
- step(tool, options).run(state)
-
- def test_update_step(self):
- tool = MockTool()
- options = self._step_options()
- options.update = True
- expected_logs = "Updating working directory\n"
- OutputCapture().assert_outputs(self, self._run_step, [steps.Update, tool, options], expected_logs=expected_logs)
-
- def test_prompt_for_bug_or_title_step(self):
- tool = MockTool()
- tool.user.prompt = lambda message: 50000
- self._run_step(steps.PromptForBugOrTitle, tool=tool)
-
- def _post_diff_options(self):
- options = self._step_options()
- options.git_commit = None
- options.description = None
- options.comment = None
- options.review = True
- options.request_commit = False
- options.open_bug = True
- return options
-
- def _assert_step_output_with_bug(self, step, bug_id, expected_logs, options=None):
- state = {'bug_id': bug_id}
- OutputCapture().assert_outputs(self, self._run_step, [step, MockTool(), options, state], expected_logs=expected_logs)
-
- def _assert_post_diff_output_for_bug(self, step, bug_id, expected_logs):
- self._assert_step_output_with_bug(step, bug_id, expected_logs, self._post_diff_options())
-
- def test_post_diff(self):
- expected_logs = "MOCK add_patch_to_bug: bug_id=78, description=Patch, mark_for_review=True, mark_for_commit_queue=False, mark_for_landing=False\nMOCK: user.open_url: http://example.com/78\n"
- self._assert_post_diff_output_for_bug(steps.PostDiff, 78, expected_logs)
-
- def test_post_diff_for_commit(self):
- expected_logs = "MOCK add_patch_to_bug: bug_id=78, description=Patch for landing, mark_for_review=False, mark_for_commit_queue=False, mark_for_landing=True\n"
- self._assert_post_diff_output_for_bug(steps.PostDiffForCommit, 78, expected_logs)
-
- def test_ensure_bug_is_open_and_assigned(self):
- expected_logs = "MOCK reopen_bug 50004 with comment 'Reopening to attach new patch.'\n"
- self._assert_step_output_with_bug(steps.EnsureBugIsOpenAndAssigned, 50004, expected_logs)
- expected_logs = "MOCK reassign_bug: bug_id=50002, assignee=None\n"
- self._assert_step_output_with_bug(steps.EnsureBugIsOpenAndAssigned, 50002, expected_logs)
-
- def test_runtests_args(self):
- mock_options = self._step_options()
- mock_options.non_interactive = False
- step = steps.RunTests(MockTool(log_executive=True), mock_options)
- tool = MockTool(log_executive=True)
- # FIXME: We shouldn't use a real port-object here, but there is too much to mock at the moment.
- tool._deprecated_port = DeprecatedPort()
- step = steps.RunTests(tool, mock_options)
- expected_logs = """Running Python unit tests
-MOCK run_and_throw_if_fail: ['Tools/Scripts/test-webkitpy'], cwd=/mock-checkout
-Running Perl unit tests
-MOCK run_and_throw_if_fail: ['Tools/Scripts/test-webkitperl'], cwd=/mock-checkout
-Running JavaScriptCore tests
-MOCK run_and_throw_if_fail: ['Tools/Scripts/run-javascriptcore-tests'], cwd=/mock-checkout
-Running bindings generation tests
-MOCK run_and_throw_if_fail: ['Tools/Scripts/run-bindings-tests'], cwd=/mock-checkout
-Running run-webkit-tests
-MOCK run_and_throw_if_fail: ['Tools/Scripts/run-webkit-tests', '--quiet'], cwd=/mock-checkout
-"""
- OutputCapture().assert_outputs(self, step.run, [{}], expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/steps/suggestreviewers.py b/Tools/Scripts/webkitpy/tool/steps/suggestreviewers.py
deleted file mode 100644
index 40a24829b..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/suggestreviewers.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-
-class SuggestReviewers(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.git_commit,
- Options.suggest_reviewers,
- ]
-
- def run(self, state):
- if not self._options.suggest_reviewers:
- return
-
- reviewers = self._tool.checkout().suggested_reviewers(self._options.git_commit, self._changed_files(state))[:5]
- print "The following reviewers have recently modified files in your patch:"
- print ", ".join([reviewer.full_name for reviewer in reviewers])
-
- if not state.get('bug_id'):
- return
- if not self._tool.user.confirm("Would you like to CC them?"):
- return
- reviewer_emails = [reviewer.bugzilla_email() for reviewer in reviewers]
- self._tool.bugs.add_cc_to_bug(state['bug_id'], reviewer_emails)
diff --git a/Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py b/Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py
deleted file mode 100644
index fc096f118..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/suggestreviewers_unittest.py
+++ /dev/null
@@ -1,46 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.suggestreviewers import SuggestReviewers
-
-
-class SuggestReviewersTest(unittest.TestCase):
- def test_disabled(self):
- step = SuggestReviewers(MockTool(), MockOptions(suggest_reviewers=False))
- OutputCapture().assert_outputs(self, step.run, [{}])
-
- def test_basic(self):
- capture = OutputCapture()
- step = SuggestReviewers(MockTool(), MockOptions(suggest_reviewers=True, git_commit=None))
- expected_stdout = "The following reviewers have recently modified files in your patch:\nFoo Bar\n"
- expected_logs = "Would you like to CC them?\n"
- capture.assert_outputs(self, step.run, [{"bug_id": "123"}], expected_stdout=expected_stdout, expected_logs=expected_logs)
diff --git a/Tools/Scripts/webkitpy/tool/steps/update.py b/Tools/Scripts/webkitpy/tool/steps/update.py
deleted file mode 100644
index f70354078..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/update.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class Update(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.non_interactive,
- Options.update,
- Options.quiet,
- ]
-
- def run(self, state):
- if not self._options.update:
- return
- _log.info("Updating working directory")
- self._tool.executive.run_and_throw_if_fail(self._update_command(), quiet=self._options.quiet, cwd=self._tool.scm().checkout_root)
-
- def _update_command(self):
- update_command = self._tool.deprecated_port().update_webkit_command(self._options.non_interactive)
- return update_command
diff --git a/Tools/Scripts/webkitpy/tool/steps/update_unittest.py b/Tools/Scripts/webkitpy/tool/steps/update_unittest.py
deleted file mode 100644
index 49d6b4098..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/update_unittest.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2011 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.config.ports import MacPort, MacWK2Port
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.update import Update
-
-
-class UpdateTest(unittest.TestCase):
-
- def test_update_command_non_interactive(self):
- tool = MockTool()
- options = MockOptions(non_interactive=True)
- step = Update(tool, options)
- self.assertEqual(["mock-update-webkit"], step._update_command())
-
- tool._deprecated_port = MacPort()
- self.assertEqual(["Tools/Scripts/update-webkit"], step._update_command())
-
- tool._deprecated_port = MacWK2Port()
- self.assertEqual(["Tools/Scripts/update-webkit"], step._update_command())
-
- def test_update_command_interactive(self):
- tool = MockTool()
- options = MockOptions(non_interactive=False)
- step = Update(tool, options)
- self.assertEqual(["mock-update-webkit"], step._update_command())
-
- tool._deprecated_port = MacPort()
- self.assertEqual(["Tools/Scripts/update-webkit"], step._update_command())
-
- tool._deprecated_port = MacWK2Port()
- self.assertEqual(["Tools/Scripts/update-webkit"], step._update_command())
diff --git a/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py b/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py
deleted file mode 100644
index d433e3f21..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreview_unittest.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2009 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.updatechangelogswithreviewer import UpdateChangeLogsWithReviewer
-
-class UpdateChangeLogsWithReviewerTest(unittest.TestCase):
- def test_guess_reviewer_from_bug(self):
- capture = OutputCapture()
- step = UpdateChangeLogsWithReviewer(MockTool(), MockOptions())
- expected_logs = "No reviewed patches on bug 50001, cannot infer reviewer.\n"
- capture.assert_outputs(self, step._guess_reviewer_from_bug, [50001], expected_logs=expected_logs)
-
- def test_guess_reviewer_from_multipatch_bug(self):
- capture = OutputCapture()
- step = UpdateChangeLogsWithReviewer(MockTool(), MockOptions())
- expected_logs = "Guessing \"Reviewer2\" as reviewer from attachment 10001 on bug 50000.\n"
- capture.assert_outputs(self, step._guess_reviewer_from_bug, [50000], expected_logs=expected_logs)
-
- def test_empty_state(self):
- capture = OutputCapture()
- options = MockOptions()
- options.reviewer = 'MOCK reviewer'
- options.git_commit = 'MOCK git commit'
- step = UpdateChangeLogsWithReviewer(MockTool(), options)
- capture.assert_outputs(self, step.run, [{}])
diff --git a/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py b/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py
deleted file mode 100644
index ef210a02f..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/updatechangelogswithreviewer.py
+++ /dev/null
@@ -1,79 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.tool.grammar import pluralize
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-class UpdateChangeLogsWithReviewer(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.git_commit,
- Options.reviewer,
- ]
-
- def _guess_reviewer_from_bug(self, bug_id):
- # FIXME: It's unclear if it would be safe to use self.cached_lookup(state, 'bug')
- # here as we don't currently have a way to invalidate a bug after making changes (like ObsoletePatches does).
- patches = self._tool.bugs.fetch_bug(bug_id).reviewed_patches()
- if not patches:
- _log.info("%s on bug %s, cannot infer reviewer." % ("No reviewed patches", bug_id))
- return None
- patch = patches[-1]
- _log.info("Guessing \"%s\" as reviewer from attachment %s on bug %s." % (patch.reviewer().full_name, patch.id(), bug_id))
- return patch.reviewer().full_name
-
- def run(self, state):
- bug_id = state.get("bug_id")
- if not bug_id and state.get("patch"):
- bug_id = state.get("patch").bug_id()
-
- reviewer = self._options.reviewer
- if not reviewer:
- if not bug_id:
- _log.info("No bug id provided and --reviewer= not provided. Not updating ChangeLogs with reviewer.")
- return
- reviewer = self._guess_reviewer_from_bug(bug_id)
-
- if not reviewer:
- _log.info("Failed to guess reviewer from bug %s and --reviewer= not provided. Not updating ChangeLogs with reviewer." % bug_id)
- return
-
- # cached_lookup("changelogs") is always absolute paths.
- for changelog_path in self.cached_lookup(state, "changelogs"):
- ChangeLog(changelog_path).set_reviewer(reviewer)
-
- # Tell the world that we just changed something on disk so that the cached diff is invalidated.
- self.did_modify_checkout(state)
diff --git a/Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py b/Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py
deleted file mode 100644
index e77e5c01e..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/validatechangelogs.py
+++ /dev/null
@@ -1,92 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import sys
-
-from optparse import make_option
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-from webkitpy.common.checkout.diff_parser import DiffParser
-
-_log = logging.getLogger(__name__)
-
-
-# This is closely related to the ValidateReviewer step and the CommitterValidator class.
-# We may want to unify more of this code in one place.
-class ValidateChangeLogs(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- make_option("--check-oops", action="store_true", default=False, help="Check there are no OOPS left in change log"),
- Options.non_interactive,
- ]
-
- def _check_changelog_diff(self, diff_file):
- # Each line is a tuple, the first value is the deleted line number
- # Date, reviewer, bug title, bug url, and empty lines could all be
- # identical in the most recent entries. If the diff starts any
- # later than that, assume that the entry is wrong.
- if diff_file.lines[0][0] < 8:
- return True
- if self._options.non_interactive:
- return False
-
- _log.info("The diff to %s looks wrong. Are you sure your ChangeLog entry is at the top of the file?" % (diff_file.filename))
- # FIXME: Do we need to make the file path absolute?
- self._tool.scm().diff_for_file(diff_file.filename)
- if self._tool.user.confirm("OK to continue?", default='n'):
- return True
- return False
-
- def _changelog_contains_oops(self, diff_file):
- for diff_line in diff_file.lines:
- if 'OOPS!' in diff_line[2]:
- return True
- return False
-
- def run(self, state):
- changed_files = self.cached_lookup(state, "changed_files")
- for filename in changed_files:
- if not self._tool.checkout().is_path_to_changelog(filename):
- continue
- # Diff ChangeLogs directly because svn-create-patch will move
- # ChangeLog entries to the # top automatically, defeating our
- # validation here.
- # FIXME: Should we diff all the ChangeLogs at once?
- diff = self._tool.scm().diff_for_file(filename)
- parsed_diff = DiffParser(diff.splitlines())
- for filename, diff_file in parsed_diff.files.items():
- if not self._tool.checkout().is_path_to_changelog(diff_file.filename):
- continue
- if not self._check_changelog_diff(diff_file):
- _log.error("ChangeLog entry in %s is not at the top of the file." % diff_file.filename)
- sys.exit(1)
- if self._options.check_oops and self._changelog_contains_oops(diff_file):
- _log.error("ChangeLog entry in %s contains OOPS!." % diff_file.filename)
- sys.exit(1)
diff --git a/Tools/Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py b/Tools/Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py
deleted file mode 100644
index 50ecc4646..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/validatechangelogs_unittest.py
+++ /dev/null
@@ -1,69 +0,0 @@
-# Copyright (C) 2010 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.
-
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.mock import Mock
-from webkitpy.tool.mocktool import MockOptions, MockTool
-from webkitpy.tool.steps.validatechangelogs import ValidateChangeLogs
-
-
-class ValidateChangeLogsTest(unittest.TestCase):
-
- def _assert_start_line_produces_output(self, start_line, should_fail=False, non_interactive=False):
- tool = MockTool()
- step = ValidateChangeLogs(tool, MockOptions(git_commit=None, non_interactive=non_interactive))
- diff_file = Mock()
- diff_file.filename = "mock/ChangeLog"
- diff_file.lines = [(start_line, start_line, "foo")]
- expected_stdout = expected_stderr = expected_logs = ""
- if should_fail and not non_interactive:
- expected_logs = "The diff to mock/ChangeLog looks wrong. Are you sure your ChangeLog entry is at the top of the file?\nOK to continue?\n"
- result = OutputCapture().assert_outputs(self, step._check_changelog_diff, [diff_file], expected_logs=expected_logs)
- self.assertEqual(not result, should_fail)
-
- def test_check_changelog_diff(self):
- self._assert_start_line_produces_output(1)
- self._assert_start_line_produces_output(7)
- self._assert_start_line_produces_output(8, should_fail=True)
-
- self._assert_start_line_produces_output(1, non_interactive=False)
- self._assert_start_line_produces_output(8, non_interactive=True, should_fail=True)
-
- def test_changelog_contains_oops(self):
- tool = MockTool()
- tool._checkout.is_path_to_changelog = lambda path: True
- step = ValidateChangeLogs(tool, MockOptions(git_commit=None, non_interactive=True, check_oops=True))
- diff_file = Mock()
- diff_file.filename = "mock/ChangeLog"
- diff_file.lines = [(1, 1, "foo"), (2, 2, "bar OOPS! bar"), (3, 3, "foo")]
- self.assertTrue(OutputCapture().assert_outputs(self, step._changelog_contains_oops, [diff_file], expected_logs=''))
-
- diff_file.lines = [(1, 1, "foo"), (2, 2, "bar OOPS bar"), (3, 3, "foo")]
- self.assertFalse(OutputCapture().assert_outputs(self, step._changelog_contains_oops, [diff_file], expected_logs=''))
diff --git a/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py b/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py
deleted file mode 100644
index 90ddf5be3..000000000
--- a/Tools/Scripts/webkitpy/tool/steps/validatereviewer.py
+++ /dev/null
@@ -1,60 +0,0 @@
-# Copyright (C) 2010 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.
-
-import logging
-import sys
-
-from webkitpy.common.checkout.changelog import ChangeLog
-from webkitpy.tool.steps.abstractstep import AbstractStep
-from webkitpy.tool.steps.options import Options
-
-_log = logging.getLogger(__name__)
-
-
-# FIXME: Some of this logic should probably be unified with CommitterValidator?
-class ValidateReviewer(AbstractStep):
- @classmethod
- def options(cls):
- return AbstractStep.options() + [
- Options.non_interactive,
- ]
-
- def run(self, state):
- # FIXME: For now we disable this check when a user is driving the script
- # this check is too draconian (and too poorly tested) to foist upon users.
- if not self._options.non_interactive:
- return
- for changelog_path in self.cached_lookup(state, "changelogs"):
- changelog_entry = ChangeLog(changelog_path).latest_entry()
- if changelog_entry.has_valid_reviewer():
- continue
- reviewer_text = changelog_entry.reviewer_text()
- if reviewer_text:
- _log.info("%s found in %s does not appear to be a valid reviewer according to committers.py." % (reviewer_text, changelog_path))
- _log.error('%s neither lists a valid reviewer nor contains the string "Unreviewed" or "Rubber stamp" (case insensitive).' % changelog_path)
- sys.exit(1)
diff --git a/Tools/Scripts/webkitpy/w3c/__init__.py b/Tools/Scripts/webkitpy/w3c/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/Scripts/webkitpy/w3c/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/Scripts/webkitpy/w3c/test_converter.py b/Tools/Scripts/webkitpy/w3c/test_converter.py
deleted file mode 100644
index 2e9bfcb9a..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_converter.py
+++ /dev/null
@@ -1,193 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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 logging
-import re
-
-from webkitpy.common.host import Host
-from webkitpy.common.webkit_finder import WebKitFinder
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup, Tag
-
-
-_log = logging.getLogger(__name__)
-
-
-class W3CTestConverter(object):
-
- def __init__(self):
- self._host = Host()
- self._filesystem = self._host.filesystem
- self._webkit_root = WebKitFinder(self._filesystem).webkit_base()
-
- # These settings might vary between WebKit and Blink
- self._css_property_file = self.path_from_webkit_root('Source', 'WebCore', 'css', 'CSSPropertyNames.in')
- self._css_property_split_string = '='
-
- self.prefixed_properties = self.read_webkit_prefixed_css_property_list()
-
- def path_from_webkit_root(self, *comps):
- return self._filesystem.abspath(self._filesystem.join(self._webkit_root, *comps))
-
- def read_webkit_prefixed_css_property_list(self):
- prefixed_properties = []
-
- contents = self._filesystem.read_text_file(self._css_property_file)
- for line in contents.splitlines():
- # Find lines starting with the -webkit- prefix.
- match = re.match('-webkit-[\w|-]*', line)
- if match:
- # Ignore lines where both the prefixed and non-prefixed property
- # are supported - denoted by -webkit-some-property = some-property.
- fields = line.split(self._css_property_split_string)
- if len(fields) == 2 and fields[1].strip() in fields[0].strip():
- continue
- prefixed_properties.append(match.group(0))
-
- return prefixed_properties
-
- def convert_for_webkit(self, new_path, filename):
- """ Converts a file's |contents| so it will function correctly in its |new_path| in Webkit.
-
- Returns the list of modified properties and the modified text if the file was modifed, None otherwise."""
- contents = self._filesystem.read_binary_file(filename)
- if filename.endswith('.css'):
- return self.convert_css(contents, filename)
- return self.convert_html(new_path, contents, filename)
-
- def convert_css(self, contents, filename):
- return self.add_webkit_prefix_to_unprefixed_properties(contents, filename)
-
- def convert_html(self, new_path, contents, filename):
- doc = BeautifulSoup(contents)
- did_modify_paths = self.convert_testharness_paths(doc, new_path, filename)
- converted_properties_and_content = self.convert_prefixed_properties(doc, filename)
- return converted_properties_and_content if (did_modify_paths or converted_properties_and_content[0]) else None
-
- def convert_testharness_paths(self, doc, new_path, filename):
- """ Update links to testharness.js in the BeautifulSoup |doc| to point to the copy in |new_path|.
-
- Returns whether the document was modified."""
-
- # Look for the W3C-style path to any testharness files - scripts (.js) or links (.css)
- pattern = re.compile('/resources/testharness')
- script_tags = doc.findAll(src=pattern)
- link_tags = doc.findAll(href=pattern)
- testharness_tags = script_tags + link_tags
-
- if not testharness_tags:
- return False
-
- resources_path = self.path_from_webkit_root('LayoutTests', 'resources')
- resources_relpath = self._filesystem.relpath(resources_path, new_path)
-
- for tag in testharness_tags:
- # FIXME: We need to handle img, audio, video tags also.
- attr = 'src'
- if tag.name != 'script':
- attr = 'href'
-
- if not attr in tag.attrMap:
- # FIXME: Figure out what to do w/ invalid tags. For now, we return False
- # and leave the document unmodified, which means that it'll probably fail to run.
- _log.error("Missing an attr in %s" % filename)
- return False
-
- old_path = tag[attr]
- new_tag = Tag(doc, tag.name, tag.attrs)
- new_tag[attr] = re.sub(pattern, resources_relpath + '/testharness', old_path)
-
- self.replace_tag(tag, new_tag)
-
- return True
-
- def convert_prefixed_properties(self, doc, filename):
- """ Searches a BeautifulSoup |doc| for any CSS properties requiring the -webkit- prefix and converts them.
-
- Returns the list of converted properties and the modified document as a string """
-
- converted_properties = []
-
- # Look for inline and document styles.
- inline_styles = doc.findAll(style=re.compile('.*'))
- style_tags = doc.findAll('style')
- all_styles = inline_styles + style_tags
-
- for tag in all_styles:
-
- # Get the text whether in a style tag or style attribute.
- style_text = ''
- if tag.name == 'style':
- if not tag.contents:
- continue
- style_text = tag.contents[0]
- else:
- style_text = tag['style']
-
- updated_style_text = self.add_webkit_prefix_to_unprefixed_properties(style_text, filename)
-
- # Rewrite tag only if changes were made.
- if updated_style_text[0]:
- converted_properties.extend(updated_style_text[0])
-
- new_tag = Tag(doc, tag.name, tag.attrs)
- new_tag.insert(0, updated_style_text[1])
-
- self.replace_tag(tag, new_tag)
-
- return (converted_properties, doc.prettify())
-
- def add_webkit_prefix_to_unprefixed_properties(self, text, filename):
- """ Searches |text| for instances of properties requiring the -webkit- prefix and adds the prefix to them.
-
- Returns the list of converted properties and the modified text."""
-
- converted_properties = []
-
- for prefixed_property in self.prefixed_properties:
- # FIXME: add in both the prefixed and unprefixed versions, rather than just replacing them?
- # That might allow the imported test to work in other browsers more easily.
-
- unprefixed_property = prefixed_property.replace('-webkit-', '')
-
- # Look for the various ways it might be in the CSS
- # Match the the property preceded by either whitespace or left curly brace
- # or at the beginning of the string (for inline style attribute)
- pattern = '([\s{]|^)' + unprefixed_property + '(\s+:|:)'
- if re.search(pattern, text):
- _log.info('converting %s -> %s' % (unprefixed_property, prefixed_property))
- converted_properties.append(prefixed_property)
- text = re.sub(pattern, prefixed_property + ':', text)
-
- # FIXME: Handle the JS versions of these properties and GetComputedStyle, too.
- return (converted_properties, text)
-
- def replace_tag(self, old_tag, new_tag):
- index = old_tag.parent.contents.index(old_tag)
- old_tag.parent.insert(index, new_tag)
- old_tag.extract()
diff --git a/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py b/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py
deleted file mode 100644
index ff104abd5..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_converter_unittest.py
+++ /dev/null
@@ -1,319 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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
-import re
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup
-from webkitpy.w3c.test_converter import W3CTestConverter
-
-
-DUMMY_FILENAME = 'dummy.html'
-
-class W3CTestConverterTest(unittest.TestCase):
-
- def fake_dir_path(self, converter, dirname):
- return converter.path_from_webkit_root("LayoutTests", "css", dirname)
-
- def test_read_prefixed_property_list(self):
- """ Tests that the current list of properties requiring the -webkit- prefix load correctly """
-
- # FIXME: We should be passing in a MockHost here ...
- converter = W3CTestConverter()
- prop_list = converter.prefixed_properties
- self.assertTrue(prop_list, 'No prefixed properties found')
- for prop in prop_list:
- self.assertTrue(prop.startswith('-webkit-'))
-
- def test_convert_for_webkit_nothing_to_convert(self):
- """ Tests convert_for_webkit() using a basic test that has nothing to convert """
-
- test_html = """<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml">
-<head>
-<title>CSS Test: DESCRIPTION OF TEST</title>
-<link rel="author" title="NAME_OF_AUTHOR"
-href="mailto:EMAIL OR http://CONTACT_PAGE"/>
-<link rel="help" href="RELEVANT_SPEC_SECTION"/>
-<meta name="assert" content="TEST ASSERTION"/>
-<style type="text/css"><![CDATA[
-CSS FOR TEST
-]]></style>
-</head>
-<body>
-CONTENT OF TEST
-</body>
-</html>
-"""
- converter = W3CTestConverter()
-
- oc = OutputCapture()
- oc.capture_output()
- try:
- converted = converter.convert_html('/nothing/to/convert', test_html, DUMMY_FILENAME)
- finally:
- oc.restore_output()
-
- self.verify_no_conversion_happened(converted)
-
- def test_convert_for_webkit_harness_only(self):
- """ Tests convert_for_webkit() using a basic JS test that uses testharness.js only and has no prefixed properties """
-
- test_html = """<head>
-<link href="/resources/testharness.css" rel="stylesheet" type="text/css">
-<script src="/resources/testharness.js"></script>
-</head>
-"""
- converter = W3CTestConverter()
- fake_dir_path = self.fake_dir_path(converter, "harnessonly")
-
- converted = converter.convert_html(fake_dir_path, test_html, DUMMY_FILENAME)
-
- self.verify_conversion_happened(converted)
- self.verify_test_harness_paths(converter, converted[1], fake_dir_path, 1, 1)
- self.verify_prefixed_properties(converted, [])
-
- def test_convert_for_webkit_properties_only(self):
- """ Tests convert_for_webkit() using a test that has 2 prefixed properties: 1 in a style block + 1 inline style """
-
- test_html = """<html>
-<head>
-<link href="/resources/testharness.css" rel="stylesheet" type="text/css">
-<script src="/resources/testharness.js"></script>
-<style type="text/css">
-
-#block1 { @test0@: propvalue; }
-
-</style>
-</head>
-<body>
-<div id="elem1" style="@test1@: propvalue;"></div>
-</body>
-</html>
-"""
- converter = W3CTestConverter()
- fake_dir_path = self.fake_dir_path(converter, 'harnessandprops')
- test_content = self.generate_test_content(converter.prefixed_properties, 1, test_html)
-
- oc = OutputCapture()
- oc.capture_output()
- try:
- converted = converter.convert_html(fake_dir_path, test_content[1], DUMMY_FILENAME)
- finally:
- oc.restore_output()
-
- self.verify_conversion_happened(converted)
- self.verify_test_harness_paths(converter, converted[1], fake_dir_path, 1, 1)
- self.verify_prefixed_properties(converted, test_content[0])
-
- def test_convert_for_webkit_harness_and_properties(self):
- """ Tests convert_for_webkit() using a basic JS test that uses testharness.js and testharness.css and has 4 prefixed properties: 3 in a style block + 1 inline style """
-
- test_html = """<html>
-<head>
-<link href="/resources/testharness.css" rel="stylesheet" type="text/css">
-<script src="/resources/testharness.js"></script>
-<style type="text/css">
-
-#block1 { @test0@: propvalue; }
-#block2 { @test1@: propvalue; }
-#block3 { @test2@: propvalue; }
-
-</style>
-</head>
-<body>
-<div id="elem1" style="@test3@: propvalue;"></div>
-</body>
-</html>
-"""
- converter = W3CTestConverter()
- fake_dir_path = self.fake_dir_path(converter, 'harnessandprops')
-
- oc = OutputCapture()
- oc.capture_output()
- try:
- test_content = self.generate_test_content(converter.prefixed_properties, 2, test_html)
- converted = converter.convert_html(fake_dir_path, test_content[1], DUMMY_FILENAME)
- finally:
- oc.restore_output()
-
- self.verify_conversion_happened(converted)
- self.verify_test_harness_paths(converter, converted[1], fake_dir_path, 1, 1)
- self.verify_prefixed_properties(converted, test_content[0])
-
- def test_convert_test_harness_paths(self):
- """ Tests convert_testharness_paths() with a test that uses all three testharness files """
-
- test_html = """<head>
-<link href="/resources/testharness.css" rel="stylesheet" type="text/css">
-<script src="/resources/testharness.js"></script>
-<script src="/resources/testharnessreport.js"></script>
-</head>
-"""
- converter = W3CTestConverter()
-
- fake_dir_path = self.fake_dir_path(converter, 'testharnesspaths')
-
- doc = BeautifulSoup(test_html)
- oc = OutputCapture()
- oc.capture_output()
- try:
- converted = converter.convert_testharness_paths(doc, fake_dir_path, DUMMY_FILENAME)
- finally:
- oc.restore_output()
-
- self.verify_conversion_happened(converted)
- self.verify_test_harness_paths(converter, doc, fake_dir_path, 2, 1)
-
- def test_convert_prefixed_properties(self):
- """ Tests convert_prefixed_properties() file that has 20 properties requiring the -webkit- prefix:
- 10 in one style block + 5 in another style
- block + 5 inline styles, including one with multiple prefixed properties.
- The properties in the test content are in all sorts of wack formatting.
- """
-
- test_html = """<html>
-<style type="text/css"><![CDATA[
-
-.block1 {
- width: 300px;
- height: 300px
-}
-
-.block2 {
- @test0@: propvalue;
-}
-
-.block3{@test1@: propvalue;}
-
-.block4 { @test2@:propvalue; }
-
-.block5{ @test3@ :propvalue; }
-
-#block6 { @test4@ : propvalue; }
-
-#block7
-{
- @test5@: propvalue;
-}
-
-#block8 { @test6@: propvalue; }
-
-#block9:pseudo
-{
-
- @test7@: propvalue;
- @test8@: propvalue propvalue propvalue;;
-}
-
-]]></style>
-</head>
-<body>
- <div id="elem1" style="@test9@: propvalue;"></div>
- <div id="elem2" style="propname: propvalue; @test10@ : propvalue; propname:propvalue;"></div>
- <div id="elem2" style="@test11@: propvalue; @test12@ : propvalue; @test13@ :propvalue;"></div>
- <div id="elem3" style="@test14@:propvalue"></div>
-</body>
-<style type="text/css"><![CDATA[
-
-.block10{ @test15@: propvalue; }
-.block11{ @test16@: propvalue; }
-.block12{ @test17@: propvalue; }
-#block13:pseudo
-{
- @test18@: propvalue;
- @test19@: propvalue;
-}
-
-]]></style>
-</html>
-"""
- converter = W3CTestConverter()
-
- test_content = self.generate_test_content(converter.prefixed_properties, 20, test_html)
-
- oc = OutputCapture()
- oc.capture_output()
- try:
- converted = converter.convert_prefixed_properties(BeautifulSoup(test_content[1]), DUMMY_FILENAME)
- finally:
- oc.restore_output()
-
- self.verify_conversion_happened(converted)
- self.verify_prefixed_properties(converted, test_content[0])
-
- def verify_conversion_happened(self, converted):
- self.assertTrue(converted, "conversion didn't happen")
-
- def verify_no_conversion_happened(self, converted):
- self.assertEqual(converted, None, 'test should not have been converted')
-
- def verify_test_harness_paths(self, converter, converted, test_path, num_src_paths, num_href_paths):
- if isinstance(converted, basestring):
- converted = BeautifulSoup(converted)
-
- resources_dir = converter.path_from_webkit_root("LayoutTests", "resources")
-
- # Verify the original paths are gone, and the new paths are present.
- orig_path_pattern = re.compile('\"/resources/testharness')
- self.assertEquals(len(converted.findAll(src=orig_path_pattern)), 0, 'testharness src path was not converted')
- self.assertEquals(len(converted.findAll(href=orig_path_pattern)), 0, 'testharness href path was not converted')
-
- new_relpath = os.path.relpath(resources_dir, test_path)
- relpath_pattern = re.compile(new_relpath)
- self.assertEquals(len(converted.findAll(src=relpath_pattern)), num_src_paths, 'testharness src relative path not correct')
- self.assertEquals(len(converted.findAll(href=relpath_pattern)), num_href_paths, 'testharness href relative path not correct')
-
- def verify_prefixed_properties(self, converted, test_properties):
- self.assertEqual(len(converted[0]), len(test_properties), 'Incorrect number of properties converted')
- for test_prop in test_properties:
- self.assertTrue((test_prop in converted[1]), 'Property ' + test_prop + ' not found in converted doc')
-
- def generate_test_content(self, full_property_list, num_test_properties, html):
- """Inserts properties requiring a -webkit- prefix into the content, replacing \'@testXX@\' with a property."""
- test_properties = []
- count = 0
- while count < num_test_properties:
- test_properties.append(full_property_list[count])
- count += 1
-
- # Replace the tokens in the testhtml with the test properties. Walk backward
- # through the list to replace the double-digit tokens first
- index = len(test_properties) - 1
- while index >= 0:
- # Use the unprefixed version
- test_prop = test_properties[index].replace('-webkit-', '')
- # Replace the token
- html = html.replace('@test' + str(index) + '@', test_prop)
- index -= 1
-
- return (test_properties, html)
diff --git a/Tools/Scripts/webkitpy/w3c/test_importer.py b/Tools/Scripts/webkitpy/w3c/test_importer.py
deleted file mode 100644
index 119bd7d92..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_importer.py
+++ /dev/null
@@ -1,450 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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 imports a directory of W3C CSS tests into WebKit.
-
- You must have checked out the W3C repository to your local drive.
-
- This script will import the tests into WebKit following these rules:
-
- - Only tests that are approved or officially submitted awaiting review are imported
-
- - All tests are imported into LayoutTests/csswg
-
- - If the tests are approved, they'll be imported into a directory tree that
- mirrors the CSS Mercurial repo. For example, <csswg_repo_root>/approved/css2.1 is brought in
- as LayoutTests/csswg/approved/css2.1, maintaining the entire directory structure under that
-
- - If the tests are submitted, they'll be brought in as LayoutTests/csswg/submitted and will also
- maintain their directory structure under that. For example, everything under
- <csswg_repo_root>/contributors/adobe/submitted is brought into submitted, mirroring its
- directory structure in the csswg repo
-
- - If the import directory specified is just a contributor folder, only the submitted folder
- for that contributor is brought in. For example, to import all of Mozilla's tests, either
- <csswg_repo_root>/contributors/mozilla or <csswg_repo_root>/contributors/mozilla/submitted
- will work and are equivalent
-
- - For the time being, this script won't work if you try to import the full set of submitted
- tests under contributors/*/submitted. Since these are awaiting review, this is just a small
- control mechanism to enforce carefully selecting what non-approved tests are imported.
- It can obviously and easily be changed.
-
- - By default, only reftests and jstest are imported. This can be overridden with a -a or --all
- argument
-
- - Also by default, if test files by the same name already exist in the destination directory,
- they are overwritten with the idea that running this script would refresh files periodically.
- This can also be overridden by a -n or --no-overwrite flag
-
- - All files are converted to work in WebKit:
- 1. Paths to testharness.js files are modified point to Webkit's copy of them in
- LayoutTests/resources, using the correct relative path from the new location
- 2. All CSS properties requiring the -webkit-vendor prefix are prefixed - this current
- list of what needs prefixes is read from Source/WebCore/CSS/CSSProperties.in
- 3. Each reftest has its own copy of its reference file following the naming conventions
- new-run-webkit-tests expects
- 4. If a reference files lives outside the directory of the test that uses it, it is checked
- for paths to support files as it will be imported into a different relative position to the
- test file (in the same directory)
-
- - Upon completion, script outputs the total number tests imported, broken down by test type
-
- - Also upon completion, each directory where files are imported will have w3c-import.log written
- with a timestamp, the W3C Mercurial changeset if available, the list of CSS properties used that
- require prefixes, the list of imported files, and guidance for future test modification and
- maintenance.
-
- - On subsequent imports, this file is read to determine if files have been removed in the newer changesets.
- The script removes these files accordingly.
-"""
-
-# FIXME: Change this file to use the Host abstractions rather that os, sys, shutils, etc.
-
-import datetime
-import logging
-import mimetypes
-import optparse
-import os
-import shutil
-import sys
-
-from webkitpy.common.host import Host
-from webkitpy.common.webkit_finder import WebKitFinder
-from webkitpy.common.system.executive import ScriptError
-from webkitpy.w3c.test_parser import TestParser
-from webkitpy.w3c.test_converter import W3CTestConverter
-
-
-TEST_STATUS_UNKNOWN = 'unknown'
-TEST_STATUS_APPROVED = 'approved'
-TEST_STATUS_SUBMITTED = 'submitted'
-
-CHANGESET_NOT_AVAILABLE = 'Not Available'
-
-
-_log = logging.getLogger(__name__)
-
-
-def main(_argv, _stdout, _stderr):
- options, args = parse_args()
- import_dir = args[0]
- if len(args) == 1:
- repo_dir = os.path.dirname(import_dir)
- else:
- repo_dir = args[1]
-
- if not os.path.exists(import_dir):
- sys.exit('Source directory %s not found!' % import_dir)
-
- if not os.path.exists(repo_dir):
- sys.exit('Repository directory %s not found!' % repo_dir)
- if not repo_dir in import_dir:
- sys.exit('Repository directory %s must be a parent of %s' % (repo_dir, import_dir))
-
- configure_logging()
-
- test_importer = TestImporter(Host(), import_dir, repo_dir, options)
- test_importer.do_import()
-
-
-def configure_logging():
- class LogHandler(logging.StreamHandler):
-
- def format(self, record):
- if record.levelno > logging.INFO:
- return "%s: %s" % (record.levelname, record.getMessage())
- return record.getMessage()
-
- logger = logging.getLogger()
- logger.setLevel(logging.INFO)
- handler = LogHandler()
- handler.setLevel(logging.INFO)
- logger.addHandler(handler)
- return handler
-
-
-def parse_args():
- parser = optparse.OptionParser(usage='usage: %prog [options] w3c_test_directory [repo_directory]')
- parser.add_option('-n', '--no-overwrite', dest='overwrite', action='store_false', default=True,
- help='Flag to prevent duplicate test files from overwriting existing tests. By default, they will be overwritten')
- parser.add_option('-a', '--all', action='store_true', default=False,
- help='Import all tests including reftests, JS tests, and manual/pixel tests. By default, only reftests and JS tests are imported')
-
- options, args = parser.parse_args()
- if len(args) not in (1, 2):
- parser.error('Incorrect number of arguments')
- return options, args
-
-
-class TestImporter(object):
-
- def __init__(self, host, source_directory, repo_dir, options):
- self.host = host
- self.source_directory = source_directory
- self.options = options
-
- self.filesystem = self.host.filesystem
-
- webkit_finder = WebKitFinder(self.filesystem)
- self._webkit_root = webkit_finder.webkit_base()
- self.repo_dir = repo_dir
- subdirs = os.path.dirname(os.path.relpath(source_directory, repo_dir))
-
- self.destination_directory = webkit_finder.path_from_webkit_base("LayoutTests", 'w3c', *subdirs)
-
- self.changeset = CHANGESET_NOT_AVAILABLE
- self.test_status = TEST_STATUS_UNKNOWN
-
- self.import_list = []
-
- def do_import(self):
- self.find_importable_tests(self.source_directory)
- self.load_changeset()
- self.import_tests()
-
- def load_changeset(self):
- """Returns the current changeset from mercurial or "Not Available"."""
- try:
- self.changeset = self.host.executive.run_command(['hg', 'tip']).split('changeset:')[1]
- except (OSError, ScriptError):
- self.changeset = CHANGESET_NOT_AVAILABLE
-
- def find_importable_tests(self, directory):
- # FIXME: use filesystem
- for root, dirs, files in os.walk(directory):
- _log.info('Scanning ' + root + '...')
- total_tests = 0
- reftests = 0
- jstests = 0
-
- # "archive" and "data" dirs are internal csswg things that live in every approved directory.
- # FIXME: skip 'incoming' tests for now, but we should rework the 'test_status' concept and
- # support reading them as well.
- DIRS_TO_SKIP = ('.git', '.hg', 'data', 'archive', 'incoming')
- for d in DIRS_TO_SKIP:
- if d in dirs:
- dirs.remove(d)
-
- copy_list = []
-
- for filename in files:
- # FIXME: This block should really be a separate function, but the early-continues make that difficult.
-
- if filename.startswith('.') or filename.endswith('.pl'):
- continue # For some reason the w3c repo contains random perl scripts we don't care about.
-
- fullpath = os.path.join(root, filename)
-
- mimetype = mimetypes.guess_type(fullpath)
- if not 'html' in str(mimetype[0]) and not 'xml' in str(mimetype[0]):
- copy_list.append({'src': fullpath, 'dest': filename})
- continue
-
- test_parser = TestParser(vars(self.options), filename=fullpath)
- test_info = test_parser.analyze_test()
- if test_info is None:
- continue
-
- if 'reference' in test_info.keys():
- reftests += 1
- total_tests += 1
- test_basename = os.path.basename(test_info['test'])
-
- # Add the ref file, following WebKit style.
- # FIXME: Ideally we'd support reading the metadata
- # directly rather than relying on a naming convention.
- # Using a naming convention creates duplicate copies of the
- # reference files.
- ref_file = os.path.splitext(test_basename)[0] + '-expected'
- ref_file += os.path.splitext(test_basename)[1]
-
- copy_list.append({'src': test_info['reference'], 'dest': ref_file})
- copy_list.append({'src': test_info['test'], 'dest': filename})
-
- # Update any support files that need to move as well to remain relative to the -expected file.
- if 'refsupport' in test_info.keys():
- for support_file in test_info['refsupport']:
- source_file = os.path.join(os.path.dirname(test_info['reference']), support_file)
- source_file = os.path.normpath(source_file)
-
- # Keep the dest as it was
- to_copy = {'src': source_file, 'dest': support_file}
-
- # Only add it once
- if not(to_copy in copy_list):
- copy_list.append(to_copy)
- elif 'jstest' in test_info.keys():
- jstests += 1
- total_tests += 1
- copy_list.append({'src': fullpath, 'dest': filename})
- else:
- total_tests += 1
- copy_list.append({'src': fullpath, 'dest': filename})
-
- if not total_tests:
- # We can skip the support directory if no tests were found.
- if 'support' in dirs:
- dirs.remove('support')
-
- if copy_list:
- # Only add this directory to the list if there's something to import
- self.import_list.append({'dirname': root, 'copy_list': copy_list,
- 'reftests': reftests, 'jstests': jstests, 'total_tests': total_tests})
-
- def import_tests(self):
- converter = W3CTestConverter()
- total_imported_tests = 0
- total_imported_reftests = 0
- total_imported_jstests = 0
- total_prefixed_properties = {}
-
- for dir_to_copy in self.import_list:
- total_imported_tests += dir_to_copy['total_tests']
- total_imported_reftests += dir_to_copy['reftests']
- total_imported_jstests += dir_to_copy['jstests']
-
- prefixed_properties = []
-
- if not dir_to_copy['copy_list']:
- continue
-
- orig_path = dir_to_copy['dirname']
-
- subpath = os.path.relpath(orig_path, self.repo_dir)
- new_path = os.path.join(self.destination_directory, subpath)
-
- if not(os.path.exists(new_path)):
- os.makedirs(new_path)
-
- copied_files = []
-
- for file_to_copy in dir_to_copy['copy_list']:
- # FIXME: Split this block into a separate function.
- orig_filepath = os.path.normpath(file_to_copy['src'])
-
- if os.path.isdir(orig_filepath):
- # FIXME: Figure out what is triggering this and what to do about it.
- _log.error('%s refers to a directory' % orig_filepath)
- continue
-
- if not(os.path.exists(orig_filepath)):
- _log.warning('%s not found. Possible error in the test.', orig_filepath)
- continue
-
- new_filepath = os.path.join(new_path, file_to_copy['dest'])
-
- if not(os.path.exists(os.path.dirname(new_filepath))):
- os.makedirs(os.path.dirname(new_filepath))
-
- if not self.options.overwrite and os.path.exists(new_filepath):
- _log.info('Skipping import of existing file ' + new_filepath)
- else:
- # FIXME: Maybe doing a file diff is in order here for existing files?
- # In other words, there's no sense in overwriting identical files, but
- # there's no harm in copying the identical thing.
- _log.info('Importing: %s', orig_filepath)
- _log.info(' As: %s', new_filepath)
-
- # Only html, xml, or css should be converted
- # FIXME: Eventually, so should js when support is added for this type of conversion
- mimetype = mimetypes.guess_type(orig_filepath)
- if 'html' in str(mimetype[0]) or 'xml' in str(mimetype[0]) or 'css' in str(mimetype[0]):
- converted_file = converter.convert_for_webkit(new_path, filename=orig_filepath)
-
- if not converted_file:
- shutil.copyfile(orig_filepath, new_filepath) # The file was unmodified.
- else:
- for prefixed_property in converted_file[0]:
- total_prefixed_properties.setdefault(prefixed_property, 0)
- total_prefixed_properties[prefixed_property] += 1
-
- prefixed_properties.extend(set(converted_file[0]) - set(prefixed_properties))
- outfile = open(new_filepath, 'wb')
- outfile.write(converted_file[1])
- outfile.close()
- else:
- shutil.copyfile(orig_filepath, new_filepath)
-
- copied_files.append(new_filepath.replace(self._webkit_root, ''))
-
- self.remove_deleted_files(new_path, copied_files)
- self.write_import_log(new_path, copied_files, prefixed_properties)
-
- _log.info('Import complete')
-
- _log.info('IMPORTED %d TOTAL TESTS', total_imported_tests)
- _log.info('Imported %d reftests', total_imported_reftests)
- _log.info('Imported %d JS tests', total_imported_jstests)
- _log.info('Imported %d pixel/manual tests', total_imported_tests - total_imported_jstests - total_imported_reftests)
- _log.info('')
- _log.info('Properties needing prefixes (by count):')
- for prefixed_property in sorted(total_prefixed_properties, key=lambda p: total_prefixed_properties[p]):
- _log.info(' %s: %s', prefixed_property, total_prefixed_properties[prefixed_property])
-
- def setup_destination_directory(self):
- """ Creates a destination directory that mirrors that of the source approved or submitted directory """
-
- self.update_test_status()
-
- start = self.source_directory.find(self.test_status)
- new_subpath = self.source_directory[len(self.repo_dir):]
-
- destination_directory = os.path.join(self.destination_directory, new_subpath)
-
- if not os.path.exists(destination_directory):
- os.makedirs(destination_directory)
-
- _log.info('Tests will be imported into: %s', destination_directory)
-
- def update_test_status(self):
- """ Sets the test status to either 'approved' or 'submitted' """
-
- status = TEST_STATUS_UNKNOWN
-
- if 'approved' in self.source_directory.split(os.path.sep):
- status = TEST_STATUS_APPROVED
- elif 'submitted' in self.source_directory.split(os.path.sep):
- status = TEST_STATUS_SUBMITTED
-
- self.test_status = status
-
- def remove_deleted_files(self, import_directory, new_file_list):
- """ Reads an import log in |import_directory|, compares it to the |new_file_list|, and removes files not in the new list."""
-
- previous_file_list = []
-
- import_log_file = os.path.join(import_directory, 'w3c-import.log')
- if not os.path.exists(import_log_file):
- return
-
- import_log = open(import_log_file, 'r')
- contents = import_log.readlines()
-
- if 'List of files\n' in contents:
- list_index = contents.index('List of files:\n') + 1
- previous_file_list = [filename.strip() for filename in contents[list_index:]]
-
- deleted_files = set(previous_file_list) - set(new_file_list)
- for deleted_file in deleted_files:
- _log.info('Deleting file removed from the W3C repo: %s', deleted_file)
- deleted_file = os.path.join(self._webkit_root, deleted_file)
- os.remove(deleted_file)
-
- import_log.close()
-
- def write_import_log(self, import_directory, file_list, prop_list):
- """ Writes a w3c-import.log file in each directory with imported files. """
-
- now = datetime.datetime.now()
-
- import_log = open(os.path.join(import_directory, 'w3c-import.log'), 'w')
- import_log.write('The tests in this directory were imported from the W3C repository.\n')
- import_log.write('Do NOT modify these tests directly in Webkit. Instead, push changes to the W3C CSS repo:\n\n')
- import_log.write('http://hg.csswg.org/test\n\n')
- import_log.write('Then run the Tools/Scripts/import-w3c-tests in Webkit to reimport\n\n')
- import_log.write('Do NOT modify or remove this file\n\n')
- import_log.write('------------------------------------------------------------------------\n')
- import_log.write('Last Import: ' + now.strftime('%Y-%m-%d %H:%M') + '\n')
- import_log.write('W3C Mercurial changeset: ' + self.changeset + '\n')
- import_log.write('Test status at time of import: ' + self.test_status + '\n')
- import_log.write('------------------------------------------------------------------------\n')
- import_log.write('Properties requiring vendor prefixes:\n')
- if prop_list:
- for prop in prop_list:
- import_log.write(prop + '\n')
- else:
- import_log.write('None\n')
- import_log.write('------------------------------------------------------------------------\n')
- import_log.write('List of files:\n')
- for item in file_list:
- import_log.write(item + '\n')
-
- import_log.close()
diff --git a/Tools/Scripts/webkitpy/w3c/test_importer_unittest.py b/Tools/Scripts/webkitpy/w3c/test_importer_unittest.py
deleted file mode 100644
index 9103623dc..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_importer_unittest.py
+++ /dev/null
@@ -1,79 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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 optparse
-import shutil
-import tempfile
-import unittest2 as unittest
-
-from webkitpy.common.host_mock import MockHost
-from webkitpy.common.system.filesystem_mock import MockFileSystem
-from webkitpy.common.system.executive_mock import MockExecutive2, ScriptError
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.w3c.test_importer import TestImporter
-
-
-FAKE_SOURCE_DIR = '/blink/w3c'
-FAKE_REPO_DIR = '/blink'
-
-FAKE_FILES = {
- '/blink/w3c/empty_dir/README.txt': '',
- '/mock-checkout/LayoutTests/w3c/README.txt': '',
-}
-
-class TestImporterTest(unittest.TestCase):
-
- def test_import_dir_with_no_tests_and_no_hg(self):
- host = MockHost()
- host.executive = MockExecutive2(exception=OSError())
- host.filesystem = MockFileSystem(files=FAKE_FILES)
-
- importer = TestImporter(host, FAKE_SOURCE_DIR, FAKE_REPO_DIR, optparse.Values({"overwrite": False}))
-
- oc = OutputCapture()
- oc.capture_output()
- try:
- importer.do_import()
- finally:
- oc.restore_output()
-
- def test_import_dir_with_no_tests(self):
- host = MockHost()
- host.executive = MockExecutive2(exception=ScriptError("abort: no repository found in '/Volumes/Source/src/wk/Tools/Scripts/webkitpy/w3c' (.hg not found)!"))
- host.filesystem = MockFileSystem(files=FAKE_FILES)
-
- importer = TestImporter(host, FAKE_SOURCE_DIR, FAKE_REPO_DIR, optparse.Values({"overwrite": False}))
- oc = OutputCapture()
- oc.capture_output()
- try:
- importer.do_import()
- finally:
- oc.restore_output()
-
- # FIXME: Needs more tests.
diff --git a/Tools/Scripts/webkitpy/w3c/test_parser.py b/Tools/Scripts/webkitpy/w3c/test_parser.py
deleted file mode 100644
index bb66fdae6..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_parser.py
+++ /dev/null
@@ -1,162 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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 logging
-import re
-
-from webkitpy.common.host import Host
-from webkitpy.thirdparty.BeautifulSoup import BeautifulSoup as Parser
-
-
-_log = logging.getLogger(__name__)
-
-
-class TestParser(object):
-
- def __init__(self, options, filename):
- self.options = options
- self.filename = filename
- self.host = Host()
- self.filesystem = self.host.filesystem
-
- self.test_doc = None
- self.ref_doc = None
- self.load_file(filename)
-
- def load_file(self, filename):
- if self.filesystem.isfile(filename):
- try:
- self.test_doc = Parser(self.filesystem.read_binary_file(filename))
- except:
- # FIXME: Figure out what to do if we can't parse the file.
- _log.error("Failed to parse %s", filename)
- self.test_doc is None
- else:
- if self.filesystem.isdir(filename):
- # FIXME: Figure out what is triggering this and what to do about it.
- _log.error("Trying to load %s, which is a directory", filename)
- self.test_doc = None
- self.ref_doc = None
-
- def analyze_test(self, test_contents=None, ref_contents=None):
- """ Analyzes a file to determine if it's a test, what type of test, and what reference or support files it requires. Returns all of the test info """
-
- test_info = None
-
- if test_contents is None and self.test_doc is None:
- return test_info
-
- if test_contents is not None:
- self.test_doc = Parser(test_contents)
-
- if ref_contents is not None:
- self.ref_doc = Parser(ref_contents)
-
- # First check if it's a reftest
-
- matches = self.reference_links_of_type('match') + self.reference_links_of_type('mismatch')
- if matches:
- if len(matches) > 1:
- # FIXME: Is this actually true? We should fix this.
- _log.warning('Multiple references are not supported. Importing the first ref defined in %s',
- self.filesystem.basename(self.filename))
-
- try:
- ref_file = self.filesystem.join(self.filesystem.dirname(self.filename), matches[0]['href'])
- except KeyError as e:
- # FIXME: Figure out what to do w/ invalid test files.
- _log.error('%s has a reference link but is missing the "href"', self.filesystem)
- return None
-
- if self.ref_doc is None:
- self.ref_doc = self.load_file(ref_file)
-
- test_info = {'test': self.filename, 'reference': ref_file}
-
- # If the ref file path is relative, we need to check it for
- # relative paths also because when it lands in WebKit, it will be
- # moved down into the test dir.
- #
- # Note: The test files themselves are not checked for support files
- # outside their directories as the convention in the CSSWG is to
- # put all support files in the same dir or subdir as the test.
- #
- # All non-test files in the test's directory tree are normally
- # copied as part of the import as they are assumed to be required
- # support files.
- #
- # *But*, there is exactly one case in the entire css2.1 suite where
- # a test depends on a file that lives in a different directory,
- # which depends on another file that lives outside of its
- # directory. This code covers that case :)
- if matches[0]['href'].startswith('..'):
- support_files = self.support_files(self.ref_doc)
- test_info['refsupport'] = support_files
-
- elif self.is_jstest():
- test_info = {'test': self.filename, 'jstest': True}
- elif self.options['all'] is True and not('-ref' in self.filename) and not('reference' in self.filename):
- test_info = {'test': self.filename}
-
- return test_info
-
- def reference_links_of_type(self, reftest_type):
- return self.test_doc.findAll(rel=reftest_type)
-
- def is_jstest(self):
- """Returns whether the file appears to be a jstest, by searching for usage of W3C-style testharness paths."""
- return bool(self.test_doc.find(src=re.compile('[\'\"/]?/resources/testharness')))
-
- def support_files(self, doc):
- """ Searches the file for all paths specified in url()'s, href or src attributes."""
- support_files = []
-
- if doc is None:
- return support_files
-
- elements_with_src_attributes = doc.findAll(src=re.compile('.*'))
- elements_with_href_attributes = doc.findAll(href=re.compile('.*'))
-
- url_pattern = re.compile('url\(.*\)')
- urls = []
- for url in doc.findAll(text=url_pattern):
- url = re.search(url_pattern, url)
- url = re.sub('url\([\'\"]?', '', url.group(0))
- url = re.sub('[\'\"]?\)', '', url)
- urls.append(url)
-
- src_paths = [src_tag['src'] for src_tag in elements_with_src_attributes]
- href_paths = [href_tag['href'] for href_tag in elements_with_href_attributes]
-
- paths = src_paths + href_paths + urls
- for path in paths:
- if not(path.startswith('http:')) and not(path.startswith('mailto:')):
- support_files.append(path)
-
- return support_files
diff --git a/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py b/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py
deleted file mode 100644
index 7fb0c5b04..000000000
--- a/Tools/Scripts/webkitpy/w3c/test_parser_unittest.py
+++ /dev/null
@@ -1,217 +0,0 @@
-#!/usr/bin/env python
-
-# Copyright (C) 2013 Adobe Systems Incorporated. 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 COPYRIGHT HOLDER "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 HOLDER 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
-import unittest2 as unittest
-
-from webkitpy.common.system.outputcapture import OutputCapture
-from webkitpy.w3c.test_parser import TestParser
-
-
-options = {'all': False, 'no_overwrite': False}
-
-
-class TestParserTest(unittest.TestCase):
-
- def test_analyze_test_reftest_one_match(self):
- test_html = """<head>
-<link rel="match" href="green-box-ref.xht" />
-</head>
-"""
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
-
- self.assertNotEqual(test_info, None, 'did not find a test')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertTrue('reference' in test_info.keys(), 'did not find a reference file')
- self.assertTrue(test_info['reference'].startswith(test_path), 'reference path is not correct')
- self.assertFalse('refsupport' in test_info.keys(), 'there should be no refsupport files for this test')
- self.assertFalse('jstest' in test_info.keys(), 'test should not have been analyzed as a jstest')
-
- def test_analyze_test_reftest_multiple_matches(self):
- test_html = """<head>
-<link rel="match" href="green-box-ref.xht" />
-<link rel="match" href="blue-box-ref.xht" />
-<link rel="match" href="orange-box-ref.xht" />
-</head>
-"""
- oc = OutputCapture()
- oc.capture_output()
- try:
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
- finally:
- _, _, logs = oc.restore_output()
-
- self.assertNotEqual(test_info, None, 'did not find a test')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertTrue('reference' in test_info.keys(), 'did not find a reference file')
- self.assertTrue(test_info['reference'].startswith(test_path), 'reference path is not correct')
- self.assertFalse('refsupport' in test_info.keys(), 'there should be no refsupport files for this test')
- self.assertFalse('jstest' in test_info.keys(), 'test should not have been analyzed as a jstest')
-
- self.assertEqual(logs, 'Multiple references are not supported. Importing the first ref defined in somefile.html\n')
-
- def test_analyze_test_reftest_match_and_mismatch(self):
- test_html = """<head>
-<link rel="match" href="green-box-ref.xht" />
-<link rel="match" href="blue-box-ref.xht" />
-<link rel="mismatch" href="orange-box-notref.xht" />
-</head>
-"""
- oc = OutputCapture()
- oc.capture_output()
-
- try:
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
- finally:
- _, _, logs = oc.restore_output()
-
- self.assertNotEqual(test_info, None, 'did not find a test')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertTrue('reference' in test_info.keys(), 'did not find a reference file')
- self.assertTrue(test_info['reference'].startswith(test_path), 'reference path is not correct')
- self.assertFalse('refsupport' in test_info.keys(), 'there should be no refsupport files for this test')
- self.assertFalse('jstest' in test_info.keys(), 'test should not have been analyzed as a jstest')
-
- self.assertEqual(logs, 'Multiple references are not supported. Importing the first ref defined in somefile.html\n')
-
- def test_analyze_test_reftest_with_ref_support_Files(self):
- """ Tests analyze_test() using a reftest that has refers to a reference file outside of the tests directory and the reference file has paths to other support files """
-
- test_html = """<html>
-<head>
-<link rel="match" href="../reference/green-box-ref.xht" />
-</head>
-"""
- ref_html = """<head>
-<link href="support/css/ref-stylesheet.css" rel="stylesheet" type="text/css">
-<style type="text/css">
- background-image: url("../../support/some-image.png")
-</style>
-</head>
-<body>
-<div><img src="../support/black96x96.png" alt="Image download support must be enabled" /></div>
-</body>
-</html>
-"""
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html, ref_contents=ref_html)
-
- self.assertNotEqual(test_info, None, 'did not find a test')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertTrue('reference' in test_info.keys(), 'did not find a reference file')
- self.assertTrue(test_info['reference'].startswith(test_path), 'reference path is not correct')
- self.assertTrue('refsupport' in test_info.keys(), 'there should be refsupport files for this test')
- self.assertEquals(len(test_info['refsupport']), 3, 'there should be 3 support files in this reference')
- self.assertFalse('jstest' in test_info.keys(), 'test should not have been analyzed as a jstest')
-
- def test_analyze_jstest(self):
- """ Tests analyze_test() using a jstest """
-
- test_html = """<head>
-<link href="/resources/testharness.css" rel="stylesheet" type="text/css">
-<script src="/resources/testharness.js"></script>
-</head>
-"""
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
-
- self.assertNotEqual(test_info, None, 'test_info is None')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertFalse('reference' in test_info.keys(), 'shold not have found a reference file')
- self.assertFalse('refsupport' in test_info.keys(), 'there should be no refsupport files for this test')
- self.assertTrue('jstest' in test_info.keys(), 'test should be a jstest')
-
- def test_analyze_pixel_test_all_true(self):
- """ Tests analyze_test() using a test that is neither a reftest or jstest with all=False """
-
- test_html = """<html>
-<head>
-<title>CSS Test: DESCRIPTION OF TEST</title>
-<link rel="author" title="NAME_OF_AUTHOR" />
-<style type="text/css"><![CDATA[
-CSS FOR TEST
-]]></style>
-</head>
-<body>
-CONTENT OF TEST
-</body>
-</html>
-"""
- # Set options to 'all' so this gets found
- options['all'] = True
-
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
-
- self.assertNotEqual(test_info, None, 'test_info is None')
- self.assertTrue('test' in test_info.keys(), 'did not find a test file')
- self.assertFalse('reference' in test_info.keys(), 'shold not have found a reference file')
- self.assertFalse('refsupport' in test_info.keys(), 'there should be no refsupport files for this test')
- self.assertFalse('jstest' in test_info.keys(), 'test should not be a jstest')
-
- def test_analyze_pixel_test_all_false(self):
- """ Tests analyze_test() using a test that is neither a reftest or jstest, with -all=False """
-
- test_html = """<html>
-<head>
-<title>CSS Test: DESCRIPTION OF TEST</title>
-<link rel="author" title="NAME_OF_AUTHOR" />
-<style type="text/css"><![CDATA[
-CSS FOR TEST
-]]></style>
-</head>
-<body>
-CONTENT OF TEST
-</body>
-</html>
-"""
- # Set all to false so this gets skipped
- options['all'] = False
-
- test_path = '/some/madeup/path/'
- parser = TestParser(options, test_path + 'somefile.html')
- test_info = parser.analyze_test(test_contents=test_html)
-
- self.assertEqual(test_info, None, 'test should have been skipped')
-
- def test_analyze_non_html_file(self):
- """ Tests analyze_test() with a file that has no html"""
- # FIXME: use a mock filesystem
- parser = TestParser(options, os.path.join(os.path.dirname(__file__), 'test_parser.py'))
- test_info = parser.analyze_test()
- self.assertEqual(test_info, None, 'no tests should have been found in this file')
diff --git a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/fake-data-failing-expected.txt b/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/fake-data-failing-expected.txt
deleted file mode 100644
index 32e966fe3..000000000
--- a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/fake-data-failing-expected.txt
+++ /dev/null
@@ -1,11 +0,0 @@
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:2' included forbidden macro 'PLATFORM' => '#if PLATFORM(MAC)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:4' included forbidden macro 'CPU' => '#if CPU(X86)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:6' included forbidden macro 'OS' => '#if OS(DARWIN)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:8' included forbidden macro 'COMPILER' => '#if COMPILER(CLANG)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:10' included forbidden macro 'ENABLE' => '#if ENABLE(FEATURE)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:12' included forbidden macro 'HAVE' => '#if HAVE(FEATURE)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:14' included forbidden macro 'USE' => '#if USE(FEATURE)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:16' included forbidden macro 'COMPILER' => '#if COMPILER_SUPPORTS(FEATURE)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:18' included forbidden macro 'COMPILER' => '#if COMPILER_QUIRK(FEATURE)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:23' included forbidden macro 'PLATFORM' => ' #if PLATFORM(X)'
-ERROR: '--stripped--/Fake.framework/Headers/Fail.h:28' included forbidden macro 'PLATFORM' => '#if defined(ignored) && PLATFORM(X)'
diff --git a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/pass-expected.txt b/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/pass-expected.txt
deleted file mode 100644
index e69de29bb..000000000
--- a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/pass-expected.txt
+++ /dev/null
diff --git a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Fail.h b/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Fail.h
deleted file mode 100644
index 6b420924c..000000000
--- a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Fail.h
+++ /dev/null
@@ -1,29 +0,0 @@
-// Common macros that we want to catch.
-#if PLATFORM(MAC)
-#endif
-#if CPU(X86)
-#endif
-#if OS(DARWIN)
-#endif
-#if COMPILER(CLANG)
-#endif
-#if ENABLE(FEATURE)
-#endif
-#if HAVE(FEATURE)
-#endif
-#if USE(FEATURE)
-#endif
-#if COMPILER_SUPPORTS(FEATURE)
-#endif
-#if COMPILER_QUIRK(FEATURE)
-#endif
-
-// Indented.
-#if 1
- #if PLATFORM(X)
- #endif
-#endif
-
-// Conditionals, we don't evalute. We just check for the existence of the macro.
-#if defined(ignored) && PLATFORM(X)
-#endif
diff --git a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Pass.h b/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Pass.h
deleted file mode 100644
index 3a8a15d38..000000000
--- a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/resources/Fake.framework/Headers/Pass.h
+++ /dev/null
@@ -1,6 +0,0 @@
-// A macro word in a #error should not matter, that is just a coincidence.
-#error PLATFORM
-
-// There are references to a OS2, but that is not the OS() macro.
-#if defined(__OS2__) || defined(OS2)
-#endif
diff --git a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb b/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb
deleted file mode 100755
index e362ba399..000000000
--- a/Tools/Scripts/webkitruby/check-for-inappropriate-macros-in-external-headers-tests/run-test.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/env ruby
-
-# Copyright (C) 2012 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. 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 INC. 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.
-
-# Testing Tools/Scripts/check-for-macros-in-external-headers
-$test_directory = File.dirname(__FILE__)
-$tool = File.expand_path(File.join($test_directory, '..', '..', 'check-for-inappropriate-macros-in-external-headers'))
-puts "Testing: Tools/Scripts/check-for-inappropriate-macros-in-external-headers"
-
-$was_failure = false
-
-def sanitized_output(output)
- lines = output.split("\n").map { |line| line.sub(/\'(.*)?\/(.*)?\.framework/, "'--stripped--/\\2.framework") }
- lines.join("\n") + (lines.empty? ? "" : "\n")
-end
-
-def run_test(config)
- ENV['TARGET_BUILD_DIR'] = File.join($test_directory, 'resources')
- ENV['PROJECT_NAME'] = config[:framework]
- ENV['SHALLOW_BUNDLE'] = config[:shallow] ? 'YES' : 'NO'
- output = sanitized_output %x{ #{$tool} #{config[:paths].join(' ')} 2>&1 }
-
- if config[:expectedToPass] != ($?.exitstatus == 0)
- pass = false
- else
- expected_output = File.read File.join($test_directory, config[:expectedOutput])
- pass = output == expected_output
- end
-
- puts "#{pass ? "PASS" : "FAIL"} - #{config[:name]}"
- $was_failure = true if !pass
-end
-
-[
- {
- :name => 'test_good_fake_data',
- :framework => 'Fake',
- :shallow => true,
- :paths => ['Headers/Pass.h'],
- :expectedToPass => true,
- :expectedOutput => 'pass-expected.txt'
- },
- {
- :name => 'test_bad_fake_data',
- :framework => 'Fake',
- :shallow => true,
- :paths => ['Headers/Fail.h'],
- :expectedToPass => false,
- :expectedOutput => 'fake-data-failing-expected.txt'
- }
-].each { |x| run_test(x) }
-
-exit 1 if $was_failure
diff --git a/Tools/TestResultServer/app.yaml b/Tools/TestResultServer/app.yaml
deleted file mode 100644
index 505fcb51d..000000000
--- a/Tools/TestResultServer/app.yaml
+++ /dev/null
@@ -1,18 +0,0 @@
-application: webkit-test-results
-version: 1
-runtime: python
-api_version: 1
-
-handlers:
-- url: /stylesheets
- static_dir: stylesheets
-
-- url: /dashboards
- static_dir: static-dashboards
-
-- url: /testfile/delete
- script: main.py
- login: admin
-
-- url: /.*
- script: main.py
diff --git a/Tools/TestResultServer/generate_builders_json.py b/Tools/TestResultServer/generate_builders_json.py
deleted file mode 100644
index 43688455b..000000000
--- a/Tools/TestResultServer/generate_builders_json.py
+++ /dev/null
@@ -1,111 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 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.
-
-import json
-import logging
-import optparse
-import os
-import urllib2
-
-# FIXME: See if Tools/Scripts/webkitpy/layout_tests/port/builders.py should also read
-# the output json file here as its data source.
-
-
-def master_json_url(master_url):
- return master_url + '/json/builders'
-
-
-def builder_json_url(master_url, builder):
- return master_json_url(master_url) + '/' + urllib2.quote(builder)
-
-
-def cached_build_json_url(master_url, builder, build_number):
- return builder_json_url(master_url, builder) + '/builds/' + str(build_number)
-
-
-def fetch_json(url):
- logging.debug('Fetching %s' % url)
- return json.load(urllib2.urlopen(url))
-
-
-def insert_builder_and_test_data(masters):
- for master in masters:
- master_url = master['url']
- tests_object = {}
- master['tests'] = tests_object
-
- for builder in fetch_json(master_json_url(master_url)):
- build_data = fetch_json(builder_json_url(master_url, builder))
- cached_builds = build_data['cachedBuilds']
- current_builds = build_data['currentBuilds']
-
- latest_cached_build = cached_builds.pop()
- while latest_cached_build in current_builds and len(cached_builds):
- latest_cached_build = cached_builds.pop()
-
- for step in fetch_json(cached_build_json_url(master_url, builder, latest_cached_build))['steps']:
- step_name = step['name']
- if step_name != 'layout-test':
- continue
-
- # Adjust for backwards compatibility
- step_name = 'layout-tests'
-
- if step_name not in tests_object:
- tests_object[step_name] = {'builders': []}
- tests_object[step_name]['builders'].append(builder)
-
- for step_name in tests_object:
- tests_object[step_name]['builders'].sort()
-
-
-def main():
- option_parser = optparse.OptionParser()
- option_parser.add_option('-v', '--verbose', action='store_true', default=False, help='Print debug logging')
- options, args = option_parser.parse_args()
-
- logging.getLogger().setLevel(logging.DEBUG if options.verbose else logging.INFO)
-
- masters = [
- {'name': 'webkit.org', 'url': 'http://build.webkit.org'},
- ]
-
- insert_builder_and_test_data(masters)
-
- json_file_prefix = ('// This file is auto-generated by Tools/TestResultServer/generate_builders_json.py. It should not be manually modified.\n'
- '// It uses jsonp instead of proper json because we want to be able to load it from a file URL for local testing.\n'
- 'LOAD_BUILDBOT_DATA(')
- json_file_suffix = ');\n';
-
- json_file = open(os.path.join('static-dashboards', 'builders.jsonp'), 'w')
- json_file.write(json_file_prefix + json.dumps(masters, separators=(', ', ': '), indent=4, sort_keys=True) + json_file_suffix)
-
-
-if __name__ == "__main__":
- main()
diff --git a/Tools/TestResultServer/generate_builders_json_unittest.py b/Tools/TestResultServer/generate_builders_json_unittest.py
deleted file mode 100644
index b38ee1a26..000000000
--- a/Tools/TestResultServer/generate_builders_json_unittest.py
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2012 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.
-
-import logging
-import unittest
-
-import generate_builders_json
-
-
-class GenerateBuildersJsonTest(unittest.TestCase):
-
- def test_master_json_url(self):
- self.assertEqual(generate_builders_json.master_json_url('http://base'), 'http://base/json/builders')
-
- def test_builder_json_url(self):
- self.assertEqual(generate_builders_json.builder_json_url('http://base', 'dummybuilder'), 'http://base/json/builders/dummybuilder')
-
- def test_cached_build_json_url(self):
- self.assertEqual(generate_builders_json.cached_build_json_url('http://base', 'dummybuilder', 12345), 'http://base/json/builders/dummybuilder/builds/12345')
- self.assertEqual(generate_builders_json.cached_build_json_url('http://base', 'dummybuilder', '12345'), 'http://base/json/builders/dummybuilder/builds/12345')
-
- def test_generate_json_data(self):
- try:
- old_fetch_json = generate_builders_json.fetch_json
-
- fetched_urls = []
-
- def dummy_fetch_json(url):
- fetched_urls.append(url)
-
- if url == 'http://build.webkit.org/json/builders':
- return {'Apple Mac SnowLeopard Tests': None, 'EFL Linux Builder': None, 'GTK Linux Tests': None}
-
- if url == 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests':
- return {'cachedBuilds': [1, 2], 'currentBuilds': []}
- if url == 'http://build.webkit.org/json/builders/EFL%20Linux%20Builder':
- return {'cachedBuilds': [1, 2, 3], 'currentBuilds': [3]}
- if url == 'http://build.webkit.org/json/builders/GTK%20Linux%20Tests':
- return {'cachedBuilds': [2], 'currentBuilds': []}
-
- if url == 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests/builds/2':
- return {'steps': [{'name': 'layout-test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
- if url == 'http://build.webkit.org/json/builders/EFL%20Linux%20Builder/builds/2':
- return {'steps': [{'name': 'compile'}]}
- if url == 'http://build.webkit.org/json/builders/GTK%20Linux%20Tests/builds/2':
- return {'steps': [{'name': 'layout-test'}, {'name': 'archive_test_results'}, {'name': 'compile'}]}
-
- logging.error('Cannot fetch fake url: %s' % url)
-
- generate_builders_json.fetch_json = dummy_fetch_json
-
- masters = [
- {'name': 'webkit.org', 'url': 'http://build.webkit.org'},
- ]
-
- generate_builders_json.insert_builder_and_test_data(masters)
-
- expected_fetched_urls = [
- 'http://build.webkit.org/json/builders',
- 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests',
- 'http://build.webkit.org/json/builders/Apple%20Mac%20SnowLeopard%20Tests/builds/2',
- 'http://build.webkit.org/json/builders/GTK%20Linux%20Tests',
- 'http://build.webkit.org/json/builders/GTK%20Linux%20Tests/builds/2',
- 'http://build.webkit.org/json/builders/EFL%20Linux%20Builder',
- 'http://build.webkit.org/json/builders/EFL%20Linux%20Builder/builds/2']
- self.assertEqual(fetched_urls, expected_fetched_urls)
-
- expected_masters = [
- {
- 'url': 'http://build.webkit.org',
- 'tests': {
- 'layout-tests': {'builders': ['Apple Mac SnowLeopard Tests', 'GTK Linux Tests']},
- },
- 'name': 'webkit.org'
- },
- ]
- self.assertEqual(masters, expected_masters)
-
- finally:
- generate_builders_json.fetch_json = old_fetch_json
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/TestResultServer/handlers/__init__.py b/Tools/TestResultServer/handlers/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/TestResultServer/handlers/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/TestResultServer/handlers/menu.py b/Tools/TestResultServer/handlers/menu.py
deleted file mode 100644
index f15e53c1a..000000000
--- a/Tools/TestResultServer/handlers/menu.py
+++ /dev/null
@@ -1,68 +0,0 @@
-# Copyright (C) 2010 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.
-
-from google.appengine.api import users
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-
-dashboards = [
- ["Results", "/dashboards/flakiness_dashboard.html"],
- ["Timeline", "/dashboards/timeline_explorer.html"],
- ["Treemap", "/dashboards/treemap.html"],
- ["Stats", "/dashboards/aggregate_results.html"],
-]
-
-menu = [
- ["List of test files", "/testfile"],
- ["List of results.json files", "/testfile?name=results.json"],
- ["Upload test file", "/testfile/uploadform"],
-]
-
-
-class Menu(webapp.RequestHandler):
- def get(self):
- user = users.get_current_user()
- if user:
- user_email = user.email()
- login_text = "Sign out"
- login_url = users.create_logout_url(self.request.uri)
- else:
- user_email = ""
- login_text = "Sign in"
- login_url = users.create_login_url(self.request.uri)
-
- template_values = {
- "user_email": user_email,
- "login_text": login_text,
- "login_url": login_url,
- "menu": menu,
- "dashboards": dashboards,
- }
-
- self.response.out.write(
- template.render("templates/menu.html", template_values))
diff --git a/Tools/TestResultServer/handlers/testfilehandler.py b/Tools/TestResultServer/handlers/testfilehandler.py
deleted file mode 100644
index fd17202b4..000000000
--- a/Tools/TestResultServer/handlers/testfilehandler.py
+++ /dev/null
@@ -1,279 +0,0 @@
-# Copyright (C) 2010 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.
-
-import time
-import logging
-import re
-import urllib
-
-from google.appengine.api import users
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp import template
-from google.appengine.ext import db
-
-from model.jsonresults import JsonResults
-from model.testfile import TestFile
-
-PARAM_MASTER = "master"
-PARAM_BUILDER = "builder"
-PARAM_DIR = "dir"
-PARAM_FILE = "file"
-PARAM_NAME = "name"
-PARAM_KEY = "key"
-PARAM_TEST_TYPE = "testtype"
-PARAM_INCREMENTAL = "incremental"
-PARAM_TEST_LIST_JSON = "testlistjson"
-PARAM_CALLBACK = "callback"
-
-
-def _replace_jsonp_callback(json, callback_name):
- if callback_name and re.search(r"^[A-Za-z0-9_]+$", callback_name):
- if re.search(r"^[A-Za-z0-9_]+[(]", json):
- return re.sub(r"^[A-Za-z0-9_]+[(]", callback_name + "(", json)
- return callback_name + "(" + json + ")"
-
- return json
-
-
-class DeleteFile(webapp.RequestHandler):
- """Delete test file for a given builder and name from datastore."""
-
- def get(self):
- key = self.request.get(PARAM_KEY)
- master = self.request.get(PARAM_MASTER)
- builder = self.request.get(PARAM_BUILDER)
- test_type = self.request.get(PARAM_TEST_TYPE)
- name = self.request.get(PARAM_NAME)
-
- logging.debug(
- "Deleting File, master: %s, builder: %s, test_type: %s, name: %s, key: %s.",
- master, builder, test_type, name, key)
-
- TestFile.delete_file(key, master, builder, test_type, name, 100)
-
- # Display file list after deleting the file.
- self.redirect("/testfile?master=%s&builder=%s&testtype=%s&name=%s"
- % (master, builder, test_type, name))
-
-
-class GetFile(webapp.RequestHandler):
- """Get file content or list of files for given builder and name."""
-
- def _get_file_list(self, master, builder, test_type, name, callback_name=None):
- """Get and display a list of files that matches builder and file name.
-
- Args:
- builder: builder name
- test_type: type of the test
- name: file name
- """
-
- files = TestFile.get_files(
- master, builder, test_type, name, load_data=False, limit=100)
- if not files:
- logging.info("File not found, master: %s, builder: %s, test_type: %s, name: %s.",
- master, builder, test_type, name)
- self.response.out.write("File not found")
- return
-
- template_values = {
- "admin": users.is_current_user_admin(),
- "master": master,
- "builder": builder,
- "test_type": test_type,
- "name": name,
- "files": files,
- }
- if callback_name:
- json = template.render("templates/showfilelist.jsonp", template_values)
- self._serve_json(_replace_jsonp_callback(json, callback_name), files[0].date)
- return
- self.response.out.write(template.render("templates/showfilelist.html",
- template_values))
-
- def _get_file_content(self, master, builder, test_type, name):
- """Return content of the file that matches builder and file name.
-
- Args:
- builder: builder name
- test_type: type of the test
- name: file name
- """
-
- files = TestFile.get_files(
- master, builder, test_type, name, load_data=True, limit=1)
- if not files:
- logging.info("File not found, master %s, builder: %s, test_type: %s, name: %s.",
- master, builder, test_type, name)
- return None, None
-
- return files[0].data, files[0].date
-
- def _get_file_content_from_key(self, key):
- file = db.get(key)
-
- if not file:
- logging.info("File not found, key %s.", key)
- return None
-
- file.load_data()
- return file.data, file.date
-
- def _get_test_list_json(self, master, builder, test_type):
- """Return json file with test name list only, do not include test
- results and other non-test-data .
-
- Args:
- builder: builder name.
- test_type: type of test results.
- """
-
- json, date = self._get_file_content(master, builder, test_type, "results.json")
- if not json:
- return None
-
- return JsonResults.get_test_list(builder, json), date
-
- def _serve_json(self, json, modified_date):
- if json:
- if "If-Modified-Since" in self.request.headers:
- old_date = self.request.headers["If-Modified-Since"]
- if time.strptime(old_date, '%a, %d %b %Y %H:%M:%S %Z') == modified_date.utctimetuple():
- self.response.set_status(304)
- return
-
- # The appengine datetime objects are naive, so they lack a timezone.
- # In practice, appengine seems to use GMT.
- self.response.headers["Last-Modified"] = modified_date.strftime('%a, %d %b %Y %H:%M:%S') + ' GMT'
- self.response.headers["Content-Type"] = "application/json"
- self.response.headers["Access-Control-Allow-Origin"] = "*"
- self.response.out.write(json)
- else:
- self.error(404)
-
- def get(self):
- key = self.request.get(PARAM_KEY)
- master = self.request.get(PARAM_MASTER)
- builder = self.request.get(PARAM_BUILDER)
- test_type = self.request.get(PARAM_TEST_TYPE)
- name = self.request.get(PARAM_NAME)
- dir = self.request.get(PARAM_DIR)
- test_list_json = self.request.get(PARAM_TEST_LIST_JSON)
- callback_name = self.request.get(PARAM_CALLBACK)
-
- logging.debug(
- "Getting files, master %s, builder: %s, test_type: %s, name: %s.",
- master, builder, test_type, name)
-
- if not key:
- # If parameter "dir" is specified or there is no builder or filename
- # specified in the request, return list of files, otherwise, return
- # file content.
- if dir or not builder or not name:
- return self._get_file_list(master, builder, test_type, name, callback_name)
-
- if key:
- json, date = self._get_file_content_from_key(key)
- elif name == "results.json" and test_list_json:
- json, date = self._get_test_list_json(master, builder, test_type)
- else:
- json, date = self._get_file_content(master, builder, test_type, name)
-
- if json:
- json = _replace_jsonp_callback(json, callback_name)
-
- self._serve_json(json, date)
-
-
-class Upload(webapp.RequestHandler):
- """Upload test results file to datastore."""
-
- def post(self):
- file_params = self.request.POST.getall(PARAM_FILE)
- if not file_params:
- self.response.out.write("FAIL: missing upload file field.")
- return
-
- builder = self.request.get(PARAM_BUILDER)
- if not builder:
- self.response.out.write("FAIL: missing builder parameter.")
- return
-
- master = self.request.get(PARAM_MASTER)
- test_type = self.request.get(PARAM_TEST_TYPE)
- incremental = self.request.get(PARAM_INCREMENTAL)
-
- logging.debug(
- "Processing upload request, master: %s, builder: %s, test_type: %s.",
- master, builder, test_type)
-
- # There are two possible types of each file_params in the request:
- # one file item or a list of file items.
- # Normalize file_params to a file item list.
- files = []
- logging.debug("test: %s, type:%s", file_params, type(file_params))
- for item in file_params:
- if not isinstance(item, list) and not isinstance(item, tuple):
- item = [item]
- files.extend(item)
-
- errors = []
- for file in files:
- filename = file.filename.lower()
- if ((incremental and filename == "results.json") or
- (filename == "incremental_results.json")):
- # Merge incremental json results.
- update_succeeded = JsonResults.update(master, builder, test_type, file.value)
- else:
- update_succeeded = TestFile.add_file(
- master, builder, test_type, file.filename, file.value)
-
- if not update_succeeded:
- errors.append(
- "Upload failed, master: %s, builder: %s, test_type: %s, name: %s." %
- (master, builder, test_type, file.filename))
-
- if errors:
- messages = "FAIL: " + "; ".join(errors)
- logging.warning(messages)
- self.response.set_status(500, messages)
- self.response.out.write("FAIL")
- else:
- self.response.set_status(200)
- self.response.out.write("OK")
-
-
-class UploadForm(webapp.RequestHandler):
- """Show a form so user can upload a file."""
-
- def get(self):
- template_values = {
- "upload_url": "/testfile/upload",
- }
- self.response.out.write(template.render("templates/uploadform.html",
- template_values))
diff --git a/Tools/TestResultServer/index.yaml b/Tools/TestResultServer/index.yaml
deleted file mode 100644
index a7d3e48b0..000000000
--- a/Tools/TestResultServer/index.yaml
+++ /dev/null
@@ -1,65 +0,0 @@
-indexes:
-
-# AUTOGENERATED
-
-# This index.yaml is automatically updated whenever the dev_appserver
-# detects that a new type of query is run. If you want to manage the
-# index.yaml file manually, remove the above marker line (the line
-# saying "# AUTOGENERATED"). If you want to manage some indexes
-# manually, move them above the marker line. The index.yaml file is
-# automatically uploaded to the admin console when you next deploy
-# your application using appcfg.py.
-
-- kind: DashboardFile
- properties:
- - name: name
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: builder
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: builder
- - name: master
- - name: name
- - name: test_type
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: builder
- - name: name
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: builder
- - name: name
- - name: test_type
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: master
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: name
- - name: date
- direction: desc
-
-- kind: TestFile
- properties:
- - name: test_type
- - name: date
- direction: desc
diff --git a/Tools/TestResultServer/main.py b/Tools/TestResultServer/main.py
deleted file mode 100644
index 2fa61e5f3..000000000
--- a/Tools/TestResultServer/main.py
+++ /dev/null
@@ -1,54 +0,0 @@
-# Copyright (C) 2010 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.
-
-# Request a modern Django
-from google.appengine.dist import use_library
-use_library('django', '1.1')
-
-from google.appengine.ext import webapp
-from google.appengine.ext.webapp.util import run_wsgi_app
-
-from handlers import menu
-from handlers import testfilehandler
-
-routes = [
- ('/testfile/delete', testfilehandler.DeleteFile),
- ('/testfile/upload', testfilehandler.Upload),
- ('/testfile/uploadform', testfilehandler.UploadForm),
- ('/testfile/?', testfilehandler.GetFile),
- ('/*|/menu', menu.Menu),
-]
-
-application = webapp.WSGIApplication(routes, debug=True)
-
-
-def main():
- run_wsgi_app(application)
-
-if __name__ == "__main__":
- main()
diff --git a/Tools/TestResultServer/model/__init__.py b/Tools/TestResultServer/model/__init__.py
deleted file mode 100644
index ef65bee5b..000000000
--- a/Tools/TestResultServer/model/__init__.py
+++ /dev/null
@@ -1 +0,0 @@
-# Required for Python to search this directory for module files
diff --git a/Tools/TestResultServer/model/datastorefile.py b/Tools/TestResultServer/model/datastorefile.py
deleted file mode 100755
index ac28d641e..000000000
--- a/Tools/TestResultServer/model/datastorefile.py
+++ /dev/null
@@ -1,150 +0,0 @@
-# Copyright (C) 2010 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.
-
-from datetime import datetime
-import logging
-
-from google.appengine.ext import db
-
-MAX_DATA_ENTRY_PER_FILE = 10
-MAX_ENTRY_LEN = 1000 * 1000
-
-
-class DataEntry(db.Model):
- """Datastore entry that stores one segmant of file data
- (<1000*1000 bytes).
- """
-
- data = db.BlobProperty()
-
- @classmethod
- def get(cls, key):
- return db.get(key)
-
- def get_data(self, key):
- return db.get(key)
-
-
-class DataStoreFile(db.Model):
- """This class stores file in datastore.
- If a file is oversize (>1000*1000 bytes), the file is split into
- multiple segments and stored in multiple datastore entries.
- """
-
- name = db.StringProperty()
- data_keys = db.ListProperty(db.Key)
- # keys to the data store entries that can be reused for new data.
- # If it is emtpy, create new DataEntry.
- new_data_keys = db.ListProperty(db.Key)
- date = db.DateTimeProperty(auto_now_add=True)
-
- data = None
-
- def delete_data(self, keys=None):
- if not keys:
- keys = self.data_keys
-
- for key in keys:
- data_entry = DataEntry.get(key)
- if data_entry:
- data_entry.delete()
-
- def save_data(self, data):
- if not data:
- logging.warning("No data to save.")
- return False
-
- if len(data) > (MAX_DATA_ENTRY_PER_FILE * MAX_ENTRY_LEN):
- logging.error("File too big, can't save to datastore: %dK",
- len(data) / 1024)
- return False
-
- start = 0
- # Use the new_data_keys to store new data. If all new data are saved
- # successfully, swap new_data_keys and data_keys so we can reuse the
- # data_keys entries in next run. If unable to save new data for any
- # reason, only the data pointed by new_data_keys may be corrupted,
- # the existing data_keys data remains untouched. The corrupted data
- # in new_data_keys will be overwritten in next update.
- keys = self.new_data_keys
- self.new_data_keys = []
-
- while start < len(data):
- if keys:
- key = keys[0]
- data_entry = DataEntry.get(key)
- if not data_entry:
- logging.warning("Found key, but no data entry: %s", key)
- data_entry = DataEntry()
- else:
- data_entry = DataEntry()
-
- data_entry.data = db.Blob(data[start: start + MAX_ENTRY_LEN])
- try:
- data_entry.put()
- except Exception, err:
- logging.error("Failed to save data store entry: %s", err)
- if keys:
- self.delete_data(keys)
- return False
-
- logging.info("Data saved: %s.", data_entry.key())
- self.new_data_keys.append(data_entry.key())
- if keys:
- keys.pop(0)
-
- start = start + MAX_ENTRY_LEN
-
- if keys:
- self.delete_data(keys)
-
- temp_keys = self.data_keys
- self.data_keys = self.new_data_keys
- self.new_data_keys = temp_keys
- self.data = data
-
- return True
-
- def load_data(self):
- if not self.data_keys:
- logging.warning("No data to load.")
- return None
-
- data = []
- for key in self.data_keys:
- logging.info("Loading data for key: %s.", key)
- data_entry = DataEntry.get(key)
- if not data_entry:
- logging.error("No data found for key: %s.", key)
- return None
-
- data.append(data_entry.data)
-
- self.data = "".join(data)
-
- return self.data
diff --git a/Tools/TestResultServer/model/jsonresults.py b/Tools/TestResultServer/model/jsonresults.py
deleted file mode 100755
index 16316f3a1..000000000
--- a/Tools/TestResultServer/model/jsonresults.py
+++ /dev/null
@@ -1,362 +0,0 @@
-# Copyright (C) 2010 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.
-
-from datetime import datetime
-from django.utils import simplejson
-import logging
-import sys
-import traceback
-
-from model.testfile import TestFile
-
-JSON_RESULTS_FILE = "results.json"
-JSON_RESULTS_FILE_SMALL = "results-small.json"
-JSON_RESULTS_PREFIX = "ADD_RESULTS("
-JSON_RESULTS_SUFFIX = ");"
-JSON_RESULTS_VERSION_KEY = "version"
-JSON_RESULTS_BUILD_NUMBERS = "buildNumbers"
-JSON_RESULTS_TESTS = "tests"
-JSON_RESULTS_RESULTS = "results"
-JSON_RESULTS_TIMES = "times"
-JSON_RESULTS_PASS = "P"
-JSON_RESULTS_SKIP = "X"
-JSON_RESULTS_NO_DATA = "N"
-JSON_RESULTS_MIN_TIME = 3
-JSON_RESULTS_HIERARCHICAL_VERSION = 4
-JSON_RESULTS_MAX_BUILDS = 500
-JSON_RESULTS_MAX_BUILDS_SMALL = 100
-
-
-def _add_path_to_trie(path, value, trie):
- if not "/" in path:
- trie[path] = value
- return
-
- directory, slash, rest = path.partition("/")
- if not directory in trie:
- trie[directory] = {}
- _add_path_to_trie(rest, value, trie[directory])
-
-
-def _trie_json_tests(tests):
- """Breaks a test name into chunks by directory and puts the test time as a value in the lowest part, e.g.
- foo/bar/baz.html: VALUE1
- foo/bar/baz1.html: VALUE2
-
- becomes
- foo: {
- bar: {
- baz.html: VALUE1,
- baz1.html: VALUE2
- }
- }
- """
- trie = {}
- for test, value in tests.iteritems():
- _add_path_to_trie(test, value, trie)
- return trie
-
-
-def _is_directory(subtree):
- # FIXME: Some data got corrupted and has results/times at the directory level.
- # Once the data is fixed, this should assert that the directory level does not have
- # results or times and just return "JSON_RESULTS_RESULTS not in subtree".
- if JSON_RESULTS_RESULTS not in subtree:
- return True
-
- for key in subtree:
- if key not in (JSON_RESULTS_RESULTS, JSON_RESULTS_TIMES):
- del subtree[JSON_RESULTS_RESULTS]
- del subtree[JSON_RESULTS_TIMES]
- return True
-
- return False
-
-
-class JsonResults(object):
- @classmethod
- def _strip_prefix_suffix(cls, data):
- # FIXME: Stop stripping jsonp callback once we upload pure json everywhere.
- if data.startswith(JSON_RESULTS_PREFIX) and data.endswith(JSON_RESULTS_SUFFIX):
- return data[len(JSON_RESULTS_PREFIX):len(data) - len(JSON_RESULTS_SUFFIX)]
- return data
-
- @classmethod
- def _generate_file_data(cls, json, sort_keys=False):
- return simplejson.dumps(json, separators=(',', ':'), sort_keys=sort_keys)
-
- @classmethod
- def _load_json(cls, file_data):
- json_results_str = cls._strip_prefix_suffix(file_data)
- if not json_results_str:
- logging.warning("No json results data.")
- return None
-
- try:
- return simplejson.loads(json_results_str)
- except:
- logging.debug(json_results_str)
- logging.error("Failed to load json results: %s", traceback.print_exception(*sys.exc_info()))
- return None
-
- @classmethod
- def _merge_json(cls, aggregated_json, incremental_json, num_runs):
- cls._merge_non_test_data(aggregated_json, incremental_json, num_runs)
- incremental_tests = incremental_json[JSON_RESULTS_TESTS]
- if incremental_tests:
- aggregated_tests = aggregated_json[JSON_RESULTS_TESTS]
- cls._merge_tests(aggregated_tests, incremental_tests, num_runs)
- cls._normalize_results(aggregated_tests, num_runs)
-
- @classmethod
- def _merge_non_test_data(cls, aggregated_json, incremental_json, num_runs):
- incremental_builds = incremental_json[JSON_RESULTS_BUILD_NUMBERS]
- aggregated_builds = aggregated_json[JSON_RESULTS_BUILD_NUMBERS]
- aggregated_build_number = int(aggregated_builds[0])
-
- for index in reversed(range(len(incremental_builds))):
- build_number = int(incremental_builds[index])
- logging.debug("Merging build %s, incremental json index: %d.", build_number, index)
-
- # Merge this build into aggreagated results.
- cls._merge_one_build(aggregated_json, incremental_json, index, num_runs)
-
- @classmethod
- def _merge_one_build(cls, aggregated_json, incremental_json, incremental_index, num_runs):
- for key in incremental_json.keys():
- # Merge json results except "tests" properties (results, times etc).
- # "tests" properties will be handled separately.
- if key == JSON_RESULTS_TESTS:
- continue
-
- if key in aggregated_json:
- aggregated_json[key].insert(0, incremental_json[key][incremental_index])
- aggregated_json[key] = aggregated_json[key][:num_runs]
- else:
- aggregated_json[key] = incremental_json[key]
-
- @classmethod
- def _merge_tests(cls, aggregated_json, incremental_json, num_runs):
- # FIXME: Some data got corrupted and has results/times at the directory level.
- # Once the data is fixe, this should assert that the directory level does not have
- # results or times and just return "JSON_RESULTS_RESULTS not in subtree".
- if JSON_RESULTS_RESULTS in aggregated_json:
- del aggregated_json[JSON_RESULTS_RESULTS]
- if JSON_RESULTS_TIMES in aggregated_json:
- del aggregated_json[JSON_RESULTS_TIMES]
-
- all_tests = set(aggregated_json.iterkeys())
- if incremental_json:
- all_tests |= set(incremental_json.iterkeys())
-
- for test_name in all_tests:
- if test_name not in aggregated_json:
- aggregated_json[test_name] = incremental_json[test_name]
- continue
-
- incremental_sub_result = incremental_json[test_name] if incremental_json and test_name in incremental_json else None
- if _is_directory(aggregated_json[test_name]):
- cls._merge_tests(aggregated_json[test_name], incremental_sub_result, num_runs)
- continue
-
- if incremental_sub_result:
- results = incremental_sub_result[JSON_RESULTS_RESULTS]
- times = incremental_sub_result[JSON_RESULTS_TIMES]
- else:
- results = [[1, JSON_RESULTS_NO_DATA]]
- times = [[1, 0]]
-
- aggregated_test = aggregated_json[test_name]
- cls._insert_item_run_length_encoded(results, aggregated_test[JSON_RESULTS_RESULTS], num_runs)
- cls._insert_item_run_length_encoded(times, aggregated_test[JSON_RESULTS_TIMES], num_runs)
-
- @classmethod
- def _insert_item_run_length_encoded(cls, incremental_item, aggregated_item, num_runs):
- for item in incremental_item:
- if len(aggregated_item) and item[1] == aggregated_item[0][1]:
- aggregated_item[0][0] = min(aggregated_item[0][0] + item[0], num_runs)
- else:
- aggregated_item.insert(0, item)
-
- @classmethod
- def _normalize_results(cls, aggregated_json, num_runs):
- names_to_delete = []
- for test_name in aggregated_json:
- if _is_directory(aggregated_json[test_name]):
- cls._normalize_results(aggregated_json[test_name], num_runs)
- else:
- leaf = aggregated_json[test_name]
- leaf[JSON_RESULTS_RESULTS] = cls._remove_items_over_max_number_of_builds(leaf[JSON_RESULTS_RESULTS], num_runs)
- leaf[JSON_RESULTS_TIMES] = cls._remove_items_over_max_number_of_builds(leaf[JSON_RESULTS_TIMES], num_runs)
- if cls._should_delete_leaf(leaf):
- names_to_delete.append(test_name)
-
- for test_name in names_to_delete:
- del aggregated_json[test_name]
-
- @classmethod
- def _should_delete_leaf(cls, leaf):
- deletable_types = set((JSON_RESULTS_PASS, JSON_RESULTS_NO_DATA, JSON_RESULTS_SKIP))
- for result in leaf[JSON_RESULTS_RESULTS]:
- if result[1] not in deletable_types:
- return False
-
- for time in leaf[JSON_RESULTS_TIMES]:
- if time[1] >= JSON_RESULTS_MIN_TIME:
- return False
-
- return True
-
- @classmethod
- def _remove_items_over_max_number_of_builds(cls, encoded_list, num_runs):
- num_builds = 0
- index = 0
- for result in encoded_list:
- num_builds = num_builds + result[0]
- index = index + 1
- if num_builds >= num_runs:
- return encoded_list[:index]
-
- return encoded_list
-
- @classmethod
- def _check_json(cls, builder, json):
- version = json[JSON_RESULTS_VERSION_KEY]
- if version > JSON_RESULTS_HIERARCHICAL_VERSION:
- logging.error("Results JSON version '%s' is not supported.",
- version)
- return False
-
- if not builder in json:
- logging.error("Builder '%s' is not in json results.", builder)
- return False
-
- results_for_builder = json[builder]
- if not JSON_RESULTS_BUILD_NUMBERS in results_for_builder:
- logging.error("Missing build number in json results.")
- return False
-
- # FIXME: Once all the bots have cycled, we can remove this code since all the results will be heirarchical.
- if version < JSON_RESULTS_HIERARCHICAL_VERSION:
- json[builder][JSON_RESULTS_TESTS] = _trie_json_tests(results_for_builder[JSON_RESULTS_TESTS])
- json[JSON_RESULTS_VERSION_KEY] = JSON_RESULTS_HIERARCHICAL_VERSION
-
- return True
-
- @classmethod
- def merge(cls, builder, aggregated, incremental, num_runs, sort_keys=False):
- if not incremental:
- logging.warning("Nothing to merge.")
- return None
-
- logging.info("Loading incremental json...")
- incremental_json = cls._load_json(incremental)
- if not incremental_json:
- return None
-
- logging.info("Checking incremental json...")
- if not cls._check_json(builder, incremental_json):
- return None
-
- logging.info("Loading existing aggregated json...")
- aggregated_json = cls._load_json(aggregated)
- if not aggregated_json:
- return incremental
-
- logging.info("Checking existing aggregated json...")
- if not cls._check_json(builder, aggregated_json):
- return incremental
-
- if aggregated_json[builder][JSON_RESULTS_BUILD_NUMBERS][0] == incremental_json[builder][JSON_RESULTS_BUILD_NUMBERS][0]:
- logging.error("Incremental JSON's build number is the latest build number in the aggregated JSON: %d." % aggregated_json[builder][JSON_RESULTS_BUILD_NUMBERS][0])
- return aggregated
-
- logging.info("Merging json results...")
- try:
- cls._merge_json(aggregated_json[builder], incremental_json[builder], num_runs)
- except:
- logging.error("Failed to merge json results: %s", traceback.print_exception(*sys.exc_info()))
- return None
-
- aggregated_json[JSON_RESULTS_VERSION_KEY] = JSON_RESULTS_HIERARCHICAL_VERSION
-
- return cls._generate_file_data(aggregated_json, sort_keys)
-
- @classmethod
- def update(cls, master, builder, test_type, incremental):
- small_file_updated = cls.update_file(master, builder, test_type, incremental, JSON_RESULTS_FILE_SMALL, JSON_RESULTS_MAX_BUILDS_SMALL)
- large_file_updated = cls.update_file(master, builder, test_type, incremental, JSON_RESULTS_FILE, JSON_RESULTS_MAX_BUILDS)
-
- return small_file_updated and large_file_updated
-
- @classmethod
- def update_file(cls, master, builder, test_type, incremental, filename, num_runs):
- files = TestFile.get_files(master, builder, test_type, filename)
- if files:
- file = files[0]
- new_results = cls.merge(builder, file.data, incremental, num_runs)
- else:
- # Use the incremental data if there is no aggregated file to merge.
- file = TestFile()
- file.master = master
- file.builder = builder
- file.test_type = test_type
- file.name = filename
- new_results = incremental
- logging.info("No existing json results, incremental json is saved.")
-
- if not new_results or not file.save(new_results):
- logging.info("Update failed, master: %s, builder: %s, test_type: %s, name: %s." % (master, builder, test_type, filename))
- return False
-
- return True
-
- @classmethod
- def _delete_results_and_times(cls, tests):
- for key in tests.keys():
- if key in (JSON_RESULTS_RESULTS, JSON_RESULTS_TIMES):
- del tests[key]
- else:
- cls._delete_results_and_times(tests[key])
-
- @classmethod
- def get_test_list(cls, builder, json_file_data):
- logging.debug("Loading test results json...")
- json = cls._load_json(json_file_data)
- if not json:
- return None
-
- logging.debug("Checking test results json...")
- if not cls._check_json(builder, json):
- return None
-
- test_list_json = {}
- tests = json[builder][JSON_RESULTS_TESTS]
- cls._delete_results_and_times(tests)
- test_list_json[builder] = {"tests": tests}
- return cls._generate_file_data(test_list_json)
diff --git a/Tools/TestResultServer/model/jsonresults_unittest.py b/Tools/TestResultServer/model/jsonresults_unittest.py
deleted file mode 100755
index 0e65d0bf2..000000000
--- a/Tools/TestResultServer/model/jsonresults_unittest.py
+++ /dev/null
@@ -1,698 +0,0 @@
-# Copyright (C) 2010 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.
-
-try:
- import jsonresults
- from jsonresults import JsonResults
-except ImportError:
- print "ERROR: Add the TestResultServer, google_appengine and yaml/lib directories to your PYTHONPATH"
- raise
-
-from django.utils import simplejson
-
-import unittest
-
-
-JSON_RESULTS_TEMPLATE = (
- '{"Webkit":{'
- '"allFixableCount":[[TESTDATA_COUNT]],'
- '"buildNumbers":[[TESTDATA_BUILDNUMBERS]],'
- '"chromeRevision":[[TESTDATA_CHROMEREVISION]],'
- '"deferredCounts":[[TESTDATA_COUNTS]],'
- '"fixableCount":[[TESTDATA_COUNT]],'
- '"fixableCounts":[[TESTDATA_COUNTS]],'
- '"secondsSinceEpoch":[[TESTDATA_TIMES]],'
- '"tests":{[TESTDATA_TESTS]},'
- '"webkitRevision":[[TESTDATA_WEBKITREVISION]],'
- '"wontfixCounts":[[TESTDATA_COUNTS]]'
- '},'
- '"version":[VERSION]'
- '}')
-
-JSON_RESULTS_COUNTS_TEMPLATE = (
- '{'
- '"C":[TESTDATA],'
- '"F":[TESTDATA],'
- '"I":[TESTDATA],'
- '"O":[TESTDATA],'
- '"P":[TESTDATA],'
- '"T":[TESTDATA],'
- '"X":[TESTDATA],'
- '"Z":[TESTDATA]}')
-
-JSON_RESULTS_DIRECTORY_TEMPLATE = '[[TESTDATA_DIRECTORY]]:{[TESTDATA_DATA]}'
-
-JSON_RESULTS_TESTS_TEMPLATE = (
- '[[TESTDATA_TEST_NAME]]:{'
- '"results":[[TESTDATA_TEST_RESULTS]],'
- '"times":[[TESTDATA_TEST_TIMES]]}')
-
-JSON_RESULTS_TEST_LIST_TEMPLATE = (
- '{"Webkit":{"tests":{[TESTDATA_TESTS]}}}')
-
-
-class JsonResultsTest(unittest.TestCase):
- def setUp(self):
- self._builder = "Webkit"
-
- def test_strip_prefix_suffix(self):
- json = "['contents']"
- self.assertEqual(JsonResults._strip_prefix_suffix("ADD_RESULTS(" + json + ");"), json)
- self.assertEqual(JsonResults._strip_prefix_suffix(json), json)
-
- def _make_test_json(self, test_data):
- if not test_data:
- return ""
-
- builds = test_data["builds"]
- tests = test_data["tests"]
- if not builds or not tests:
- return ""
-
- json = JSON_RESULTS_TEMPLATE
-
- counts = []
- build_numbers = []
- webkit_revision = []
- chrome_revision = []
- times = []
- for build in builds:
- counts.append(JSON_RESULTS_COUNTS_TEMPLATE.replace("[TESTDATA]", build))
- build_numbers.append("1000%s" % build)
- webkit_revision.append("2000%s" % build)
- chrome_revision.append("3000%s" % build)
- times.append("100000%s000" % build)
-
- json = json.replace("[TESTDATA_COUNTS]", ",".join(counts))
- json = json.replace("[TESTDATA_COUNT]", ",".join(builds))
- json = json.replace("[TESTDATA_BUILDNUMBERS]", ",".join(build_numbers))
- json = json.replace("[TESTDATA_WEBKITREVISION]", ",".join(webkit_revision))
- json = json.replace("[TESTDATA_CHROMEREVISION]", ",".join(chrome_revision))
- json = json.replace("[TESTDATA_TIMES]", ",".join(times))
-
- version = str(test_data["version"]) if "version" in test_data else "4"
- json = json.replace("[VERSION]", version)
- json = json.replace("{[TESTDATA_TESTS]}", simplejson.dumps(tests, separators=(',', ':'), sort_keys=True))
- return json
-
- def _test_merge(self, aggregated_data, incremental_data, expected_data, max_builds=jsonresults.JSON_RESULTS_MAX_BUILDS):
- aggregated_results = self._make_test_json(aggregated_data)
- incremental_results = self._make_test_json(incremental_data)
- merged_results = JsonResults.merge(self._builder, aggregated_results, incremental_results, max_builds, sort_keys=True)
-
- if expected_data:
- expected_results = self._make_test_json(expected_data)
- self.assertEqual(merged_results, expected_results)
- else:
- self.assertFalse(merged_results)
-
- def _test_get_test_list(self, input_data, expected_data):
- input_results = self._make_test_json(input_data)
- expected_results = JSON_RESULTS_TEST_LIST_TEMPLATE.replace("{[TESTDATA_TESTS]}", simplejson.dumps(expected_data, separators=(',', ':')))
- actual_results = JsonResults.get_test_list(self._builder, input_results)
- self.assertEqual(actual_results, expected_results)
-
- def test_merge_null_incremental_results(self):
- # Empty incremental results json.
- # Nothing to merge.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Incremental results
- None,
- # Expect no merge happens.
- None)
-
- def test_merge_empty_incremental_results(self):
- # No actual incremental test results (only prefix and suffix) to merge.
- # Nothing to merge.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Incremental results
- {"builds": [],
- "tests": {}},
- # Expected no merge happens.
- None)
-
- def test_merge_empty_aggregated_results(self):
- # No existing aggregated results.
- # Merged results == new incremental results.
- self._test_merge(
- # Aggregated results
- None,
- # Incremental results
-
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Expected result
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}})
-
- def test_merge_duplicate_build_number(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[100, "F"]],
- "times": [[100, 0]]}}},
- # Incremental results
- {"builds": ["2"],
- "tests": {"001.html": {
- "results": [[1, "F"]],
- "times": [[1, 0]]}}},
- # Expected results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[100, "F"]],
- "times": [[100, 0]]}}})
-
- def test_merge_incremental_single_test_single_run_same_result(self):
- # Incremental results has the latest build and same test results for
- # that run.
- # Insert the incremental results at the first place and sum number
- # of runs for "F" (200 + 1) to get merged results.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"F"]],
- "times": [[1,0]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[201,"F"]],
- "times": [[201,0]]}}})
-
- def test_merge_single_test_single_run_different_result(self):
- # Incremental results has the latest build but different test results
- # for that run.
- # Insert the incremental results at the first place.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1, "I"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[1,"I"],[200,"F"]],
- "times": [[1,1],[200,0]]}}})
-
- def test_merge_single_test_single_run_result_changed(self):
- # Incremental results has the latest build but results which differ from
- # the latest result (but are the same as an older result).
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"],[10,"I"]],
- "times": [[200,0],[10,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"I"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[1,"I"],[200,"F"],[10,"I"]],
- "times": [[1,1],[200,0],[10,1]]}}})
-
- def test_merge_multiple_tests_single_run(self):
- # All tests have incremental updates.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]},
- "002.html": {
- "results": [[100,"I"]],
- "times": [[100,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"F"]],
- "times": [[1,0]]},
- "002.html": {
- "results": [[1,"I"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[201,"F"]],
- "times": [[201,0]]},
- "002.html": {
- "results": [[101,"I"]],
- "times": [[101,1]]}}})
-
- def test_merge_multiple_tests_single_run_one_no_result(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]},
- "002.html": {
- "results": [[100,"I"]],
- "times": [[100,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"002.html": {
- "results": [[1,"I"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[1,"N"],[200,"F"]],
- "times": [[201,0]]},
- "002.html": {
- "results": [[101,"I"]],
- "times": [[101,1]]}}})
-
- def test_merge_single_test_multiple_runs(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]}}},
- # Incremental results
- {"builds": ["4", "3"],
- "tests": {"001.html": {
- "results": [[2, "I"]],
- "times": [[2,2]]}}},
- # Expected results
- {"builds": ["4", "3", "2", "1"],
- "tests": {"001.html": {
- "results": [[2,"I"],[200,"F"]],
- "times": [[2,2],[200,0]]}}})
-
- def test_merge_multiple_tests_multiple_runs(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"F"]],
- "times": [[200,0]]},
- "002.html": {
- "results": [[10,"Z"]],
- "times": [[10,0]]}}},
- # Incremental results
- {"builds": ["4", "3"],
- "tests": {"001.html": {
- "results": [[2, "I"]],
- "times": [[2,2]]},
- "002.html": {
- "results": [[1,"C"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["4", "3", "2", "1"],
- "tests": {"001.html": {
- "results": [[2,"I"],[200,"F"]],
- "times": [[2,2],[200,0]]},
- "002.html": {
- "results": [[1,"C"],[10,"Z"]],
- "times": [[1,1],[10,0]]}}})
-
- def test_merge_incremental_result_older_build(self):
- # Test the build in incremental results is older than the most recent
- # build in aggregated results.
- self._test_merge(
- # Aggregated results
- {"builds": ["3", "1"],
- "tests": {"001.html": {
- "results": [[5,"F"]],
- "times": [[5,0]]}}},
- # Incremental results
- {"builds": ["2"],
- "tests": {"001.html": {
- "results": [[1, "F"]],
- "times": [[1,0]]}}},
- # Expected no merge happens.
- {"builds": ["2", "3", "1"],
- "tests": {"001.html": {
- "results": [[6,"F"]],
- "times": [[6,0]]}}})
-
- def test_merge_incremental_result_same_build(self):
- # Test the build in incremental results is same as the build in
- # aggregated results.
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[5,"F"]],
- "times": [[5,0]]}}},
- # Incremental results
- {"builds": ["3", "2"],
- "tests": {"001.html": {
- "results": [[2, "F"]],
- "times": [[2,0]]}}},
- # Expected no merge happens.
- {"builds": ["3", "2", "2", "1"],
- "tests": {"001.html": {
- "results": [[7,"F"]],
- "times": [[7,0]]}}})
-
- def test_merge_remove_new_test(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[199, "F"]],
- "times": [[199, 0]]},
- }},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1, "F"]],
- "times": [[1, 0]]},
- "002.html": {
- "results": [[1, "P"]],
- "times": [[1, 0]]},
- "003.html": {
- "results": [[1, "N"]],
- "times": [[1, 0]]},
- "004.html": {
- "results": [[1, "X"]],
- "times": [[1, 0]]},
- }},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[200, "F"]],
- "times": [[200, 0]]},
- }},
- max_builds=200)
-
-
- def test_merge_remove_test(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"P"]],
- "times": [[200,0]]},
- "002.html": {
- "results": [[10,"F"]],
- "times": [[10,0]]},
- "003.html": {
- "results": [[190, 'X'], [9, 'N'], [1,"F"]],
- "times": [[200,0]]},
- }},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"P"]],
- "times": [[1,0]]},
- "002.html": {
- "results": [[1,"P"]],
- "times": [[1,0]]},
- "003.html": {
- "results": [[1,"P"]],
- "times": [[1,0]]},
- }},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"002.html": {
- "results": [[1,"P"],[10,"F"]],
- "times": [[11,0]]}}},
- max_builds=200)
-
- def test_merge_keep_test_with_all_pass_but_slow_time(self):
- # Do not remove test where all run pass but max running time >= 5 seconds
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[200,"P"]],
- "times": [[200,jsonresults.JSON_RESULTS_MIN_TIME]]},
- "002.html": {
- "results": [[10,"F"]],
- "times": [[10,0]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"P"]],
- "times": [[1,1]]},
- "002.html": {
- "results": [[1,"P"]],
- "times": [[1,0]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[201,"P"]],
- "times": [[1,1],[200,jsonresults.JSON_RESULTS_MIN_TIME]]},
- "002.html": {
- "results": [[1,"P"],[10,"F"]],
- "times": [[11,0]]}}})
-
- def test_merge_prune_extra_results(self):
- # Remove items from test results and times that exceed the max number
- # of builds to track.
- max_builds = jsonresults.JSON_RESULTS_MAX_BUILDS
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[max_builds,"F"],[1,"I"]],
- "times": [[max_builds,0],[1,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"T"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[1,"T"],[max_builds,"F"]],
- "times": [[1,1],[max_builds,0]]}}})
-
- def test_merge_prune_extra_results_small(self):
- # Remove items from test results and times that exceed the max number
- # of builds to track, using smaller threshold.
- max_builds = jsonresults.JSON_RESULTS_MAX_BUILDS_SMALL
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[max_builds,"F"],[1,"I"]],
- "times": [[max_builds,0],[1,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"T"]],
- "times": [[1,1]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[1,"T"],[max_builds,"F"]],
- "times": [[1,1],[max_builds,0]]}}},
- int(max_builds))
-
- def test_merge_prune_extra_results_with_new_result_of_same_type(self):
- # Test that merging in a new result of the same type as the last result
- # causes old results to fall off.
- max_builds = jsonresults.JSON_RESULTS_MAX_BUILDS_SMALL
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"001.html": {
- "results": [[max_builds,"F"],[1,"N"]],
- "times": [[max_builds,0],[1,1]]}}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"001.html": {
- "results": [[1,"F"]],
- "times": [[1,0]]}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"001.html": {
- "results": [[max_builds,"F"]],
- "times": [[max_builds,0]]}}},
- int(max_builds))
-
- # FIXME: Some data got corrupted and has results and times at the directory level.
- # Once we've purged this from all the data, we should throw an error on this case.
- def test_merge_directory_hierarchy_extra_results_and_times(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"baz": {
- "003.html": {
- "results": [[25,"F"]],
- "times": [[25,0]]}},
- "results": [[25,"F"]],
- "times": [[25,0]]}},
- # Incremental results
- {"builds": ["3"],
- "tests": {"baz": {
- "003.html": {
- "results": [[1,"F"]],
- "times": [[1,0]]}}}},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"baz": {
- "003.html": {
- "results": [[26,"F"]],
- "times": [[26,0]]}}},
- "version": 4})
-
- def test_merge_build_directory_hierarchy(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"bar": {"baz": {
- "003.html": {
- "results": [[25,"F"]],
- "times": [[25,0]]}}},
- "foo": {
- "001.html": {
- "results": [[50,"F"]],
- "times": [[50,0]]},
- "002.html": {
- "results": [[100,"I"]],
- "times": [[100,0]]}}},
- "version": 4},
- # Incremental results
- {"builds": ["3"],
- "tests": {"baz": {
- "004.html": {
- "results": [[1,"I"]],
- "times": [[1,0]]}},
- "foo": {
- "001.html": {
- "results": [[1,"F"]],
- "times": [[1,0]]},
- "002.html": {
- "results": [[1,"I"]],
- "times": [[1,0]]}}},
- "version": 4},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"bar": {"baz": {
- "003.html": {
- "results": [[1,"N"],[25,"F"]],
- "times": [[26,0]]}}},
- "baz": {
- "004.html": {
- "results": [[1,"I"]],
- "times": [[1,0]]}},
- "foo": {
- "001.html": {
- "results": [[51,"F"]],
- "times": [[51,0]]},
- "002.html": {
- "results": [[101,"I"]],
- "times": [[101,0]]}}},
- "version": 4})
-
- # FIXME(aboxhall): Add some tests for xhtml/svg test results.
-
- def test_get_test_name_list(self):
- # Get test name list only. Don't include non-test-list data and
- # of test result details.
- # FIXME: This also tests a temporary bug in the data where directory-level
- # results have a results and times values. Once that bug is fixed,
- # remove this test-case and assert we don't ever hit it.
- self._test_get_test_list(
- # Input results
- {"builds": ["3", "2", "1"],
- "tests": {"foo": {
- "001.html": {
- "results": [[200,"P"]],
- "times": [[200,0]]},
- "results": [[1,"N"]],
- "times": [[1,0]]},
- "002.html": {
- "results": [[10,"F"]],
- "times": [[10,0]]}}},
- # Expected results
- {"foo": {"001.html":{}}, "002.html":{}})
-
- def test_gtest(self):
- self._test_merge(
- # Aggregated results
- {"builds": ["2", "1"],
- "tests": {"foo.bar": {
- "results": [[50,"F"]],
- "times": [[50,0]]},
- "foo.bar2": {
- "results": [[100,"I"]],
- "times": [[100,0]]},
- },
- "version": 3},
- # Incremental results
- {"builds": ["3"],
- "tests": {"foo.bar2": {
- "results": [[1,"I"]],
- "times": [[1,0]]},
- "foo.bar3": {
- "results": [[1,"F"]],
- "times": [[1,0]]},
- },
- "version": 4},
- # Expected results
- {"builds": ["3", "2", "1"],
- "tests": {"foo.bar": {
- "results": [[1, "N"], [50,"F"]],
- "times": [[51,0]]},
- "foo.bar2": {
- "results": [[101,"I"]],
- "times": [[101,0]]},
- "foo.bar3": {
- "results": [[1,"F"]],
- "times": [[1,0]]},
- },
- "version": 4})
-
-if __name__ == '__main__':
- unittest.main()
diff --git a/Tools/TestResultServer/model/testfile.py b/Tools/TestResultServer/model/testfile.py
deleted file mode 100644
index 9ab4227b5..000000000
--- a/Tools/TestResultServer/model/testfile.py
+++ /dev/null
@@ -1,111 +0,0 @@
-# Copyright (C) 2010 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.
-
-from datetime import datetime
-import logging
-
-from google.appengine.ext import db
-
-from model.datastorefile import DataStoreFile
-
-
-class TestFile(DataStoreFile):
- master = db.StringProperty()
- builder = db.StringProperty()
- test_type = db.StringProperty()
-
- @classmethod
- def delete_file(cls, key, master, builder, test_type, name, limit):
- if key:
- file = db.get(key)
- if not file:
- logging.warning("File not found, key: %s.", key)
- return False
-
- file._delete_all()
- else:
- files = cls.get_files(master, builder, test_type, name, limit)
- if not files:
- logging.warning(
- "File not found, master: %s, builder: %s, test_type:%s, name: %s.",
- builder, test_type, name)
- return False
-
- for file in files:
- file._delete_all()
-
- return True
-
- @classmethod
- def get_files(cls, master, builder, test_type, name, load_data=True, limit=1):
- query = TestFile.all()
- if master:
- query = query.filter("master =", master)
- if builder:
- query = query.filter("builder =", builder)
- if test_type:
- query = query.filter("test_type =", test_type)
- if name:
- query = query.filter("name =", name)
-
- files = query.order("-date").fetch(limit)
- if load_data:
- for file in files:
- file.load_data()
-
- return files
-
- @classmethod
- def add_file(cls, master, builder, test_type, name, data):
- file = TestFile()
- file.master = master
- file.builder = builder
- file.test_type = test_type
- file.name = name
-
- if not file.save(data):
- return None
-
- logging.info(
- "File saved, master: %s, builder: %s, test_type: %s, name: %s, key: %s.",
- master, builder, test_type, file.name, str(file.data_keys))
-
- return file
-
- def save(self, data):
- if not self.save_data(data):
- return False
-
- self.date = datetime.now()
- self.put()
-
- return True
-
- def _delete_all(self):
- self.delete_data()
- self.delete()
diff --git a/Tools/TestResultServer/static-dashboards/LICENSE.dygraph.txt b/Tools/TestResultServer/static-dashboards/LICENSE.dygraph.txt
deleted file mode 100644
index 536c0a8bf..000000000
--- a/Tools/TestResultServer/static-dashboards/LICENSE.dygraph.txt
+++ /dev/null
@@ -1,22 +0,0 @@
-Copyright (c) 2009 Dan Vanderkam
-
-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", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
-OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
-HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
-WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
-FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
-OTHER DEALINGS IN THE SOFTWARE.
diff --git a/Tools/TestResultServer/static-dashboards/README.dygraph.txt b/Tools/TestResultServer/static-dashboards/README.dygraph.txt
deleted file mode 100644
index e800692ba..000000000
--- a/Tools/TestResultServer/static-dashboards/README.dygraph.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-dygraphs JavaScript charting library
-Copyright (c) 2006-, Dan Vanderkam.
-
-Support: http://groups.google.com/group/dygraphs-users
-Source: http://github.com/danvk/dygraphs
-Issues: http://code.google.com/p/dygraphs/
-
-
-The dygraphs JavaScript library produces produces interactive, zoomable charts of time series.
-
-Features
-- Plots time series without using an external server or Flash
-- Supports multiple data series
-- Supports error bands around data series
-- Displays values on mouseover
-- Interactive zoom
-- Adjustable averaging period
-- Customizable click-through actions
-- Compatible with the Google Visualization API
-
-Demo
-For a gallery and documentation, see http://danvk.org/dygraphs/
-
-Minimal Example
-<html>
-<head>
-<script type="text/javascript" src="dygraph-combined.js"></script>
-</head>
-<body>
-<div id="graphdiv"></div>
-<script type="text/javascript">
- g = new Dygraph(
- document.getElementById("graphdiv"), // containing div
- "Date,Temperature\n" + // the data series
- "2008-05-07,75\n" +
- "2008-05-08,70\n" +
- "2008-05-09,80\n"
- );
-</script>
-</body>
-</html>
-
-License(s)
-dygraphs uses:
- - rgbcolor.js (Public Domain)
- - strftime.js (BSD License)
- - excanvas.js (Apache License)
- - YUI compressor (BSD License)
-
-rgbcolor: http://www.phpied.com/rgb-color-parser-in-javascript/
-strftime: http://tech.bluesmoon.info/2008/04/strftime-in-javascript.html
-excanvas: http://code.google.com/p/explorercanvas/
-yui compressor: http://developer.yahoo.com/yui/compressor/
-
-dygraphs is available under the MIT license, included in LICENSE.txt.
diff --git a/Tools/TestResultServer/static-dashboards/README.webtreemap.txt b/Tools/TestResultServer/static-dashboards/README.webtreemap.txt
deleted file mode 100644
index d9d885b99..000000000
--- a/Tools/TestResultServer/static-dashboards/README.webtreemap.txt
+++ /dev/null
@@ -1,63 +0,0 @@
-# webtreemap
-
-A simple treemap implementation using web technologies (DOM nodes, CSS
-styling and transitions) rather than a big canvas/svg/plugin.
-
-Play with a [demo][].
-
-[demo]: http://martine.github.com/webtreemap/demo/demo.html
-
-## Creating your own
-
-1. Create a page with a DOM node (i.e. a `<div>`) that will contain
- your treemap.
-2. Add the treemap to the node via something like
-
- appendTreemap(document.getElementById('mynode'), mydata);
-3. Style the treemap using CSS.
-
-### Input format
-
-The input data (`mydata` in the overview snippet) is a tree of nodes,
-likely imported via a separate JSON file. Each node (including the
-root) should contain data in the following format.
-
- {
- name: (HTML that is displayed via .innerHTML on the caption),
- data: {
- "$area": (a number, in arbitrary units)
- },
- children: (list of child tree nodes)
- }
-
-(This strange format for data comes from the the [JavaScript InfoVis
-Toolkit][thejit]. I might change it in the future.)
-
-The `$area` of a node should be the sum of the `$area` of all of its
-`children`.
-
-(At runtime, tree nodes will dynamically will gain two extra
-attributes, `parent` and `dom`; this is only worth pointing out so
-that you don't accidentally conflict with them.)
-
-### CSS styling
-
-The treemap is constructed with one `div` per region with a separate
-`div` for the caption. Each div is styleable via the
-`webtreemap-node` CSS class. The captions are stylable as
-`webtreemap-caption`.
-
-Each level of the tree also gets a per-level CSS class,
-`webtreemap-level0` through `webtreemap-level4`. These can be
-adjusted to e.g. made different levels different colors. To control
-the caption on a per-level basis, use a CSS selector like
-`.webtreemap-level2 > .webtreemap-caption`.
-
-Your best bet is to modify the included `webtreemap.css`, which
-contains comments about required and optional CSS attributes.
-
-## Related projects
-
-* [JavaScript InfoVis Toolkit][thejit]
-
-[thejit]: http://thejit.org/ \ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/aggregate_results.html b/Tools/TestResultServer/static-dashboards/aggregate_results.html
deleted file mode 100644
index 2790ddceb..000000000
--- a/Tools/TestResultServer/static-dashboards/aggregate_results.html
+++ /dev/null
@@ -1,62 +0,0 @@
-<!-- Copyright (C) 2011 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.
--->
-<!DOCTYPE HTML>
-<html>
-
-<head>
-<title>Layout test passing status</title>
-<style>
-h2 {
- margin: 0;
- font-size: 1.2em;
-}
-h3 {
- margin-bottom: 0;
- font-size: 1em;
-}
-.container {
- display: inline-block;
- padding: 3px;
-}
-img {
- border: 1px dotted grey;
- margin-right: 5px;
- padding: 2px;
-}
-</style>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="ui.js"></script>
-<script src="aggregate_results.js"></script>
-</head>
-<body></body>
-</html>
diff --git a/Tools/TestResultServer/static-dashboards/aggregate_results.js b/Tools/TestResultServer/static-dashboards/aggregate_results.js
deleted file mode 100644
index 0bec99ae2..000000000
--- a/Tools/TestResultServer/static-dashboards/aggregate_results.js
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright (C) 2013 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.
-//
-// @fileoverview Creates a dashboard for tracking number of passes/failures per run.
-//
-// Currently, only webkit tests are supported, but adding other test types
-// should just require the following steps:
-// -generate results.json for these tests
-// -copy them to the appropriate location
-// -add the builder name to the list of builders in dashboard_base.js.
-
-function generatePage(historyInstance)
-{
- var html = ui.html.testTypeSwitcher(true) + '<br>';
- for (var builder in currentBuilders())
- html += htmlForBuilder(builder);
- document.body.innerHTML = html;
-}
-
-function handleValidHashParameter(historyInstance, key, value)
-{
- switch(key) {
- case 'rawValues':
- historyInstance.dashboardSpecificState[key] = value == 'true';
- return true;
-
- default:
- return false;
- }
-}
-
-var defaultDashboardSpecificStateValues = {
- rawValues: false
-};
-
-
-var aggregateResultsConfig = {
- defaultStateValues: defaultDashboardSpecificStateValues,
- generatePage: generatePage,
- handleValidHashParameter: handleValidHashParameter,
-};
-
-// FIXME(jparent): Eventually remove all usage of global history object.
-var g_history = new history.History(aggregateResultsConfig);
-g_history.parseCrossDashboardParameters();
-
-function htmlForBuilder(builder)
-{
- var results = g_resultsByBuilder[builder];
- // Some keys were added later than others, so they don't have as many
- // builds. Use the shortest.
- // FIXME: Once 500 runs have finished, we can get rid of passing this
- // around and just assume all keys have the same number of builders for a
- // given builder.
- var numColumns = results[ALL_FIXABLE_COUNT_KEY].length;
- var html = '<div class=container><h2>' + builder + '</h2>';
-
- if (g_history.dashboardSpecificState.rawValues)
- html += rawValuesHTML(results, numColumns);
- else {
- html += '<a href="timeline_explorer.html' + (location.hash ? location.hash + '&' : '#') + 'builder=' + builder + '">' +
- chartHTML(results, numColumns) + '</a>';
- }
-
- html += '</div>';
- return html;
-}
-
-function rawValuesHTML(results, numColumns)
-{
- var html = htmlForSummaryTable(results, numColumns) +
- htmlForTestType(results, FIXABLE_COUNTS_KEY, FIXABLE_DESCRIPTION, numColumns);
- if (g_history.isLayoutTestResults()) {
- html += htmlForTestType(results, DEFERRED_COUNTS_KEY, DEFERRED_DESCRIPTION, numColumns) +
- htmlForTestType(results, WONTFIX_COUNTS_KEY, WONTFIX_DESCRIPTION, numColumns);
- }
- return html;
-}
-
-function chartHTML(results, numColumns)
-{
- var revisionKey = WEBKIT_REVISIONS_KEY;
- var revisionLabel = "WebKit Revision";
- var startRevision = results[revisionKey][numColumns - 1];
- var endRevision = results[revisionKey][0];
-
- var fixable = results[FIXABLE_COUNT_KEY].slice(0, numColumns);
- var html = chart("Total failing", {"": fixable}, revisionLabel, startRevision, endRevision);
-
- var values = valuesPerExpectation(results[FIXABLE_COUNTS_KEY], numColumns);
- // Don't care about number of passes for the charts.
- delete(values['P']);
-
- return html + chart("Detailed breakdown", values, revisionLabel, startRevision, endRevision);
-}
-
-var LABEL_COLORS = ['FF0000', '00FF00', '0000FF', '000000', 'FF6EB4', 'FFA812', '9B30FF', '00FFCC'];
-
-// FIXME: Find a better way to exclude outliers. This is just so we exclude
-// runs where every test failed.
-var MAX_VALUE = 10000;
-
-function filteredValues(values, desiredNumberOfPoints)
-{
- // Filter out values to make the graph a bit more readable and to keep URLs
- // from exceeding the browsers max length restriction.
- var filterAmount = Math.floor(values.length / desiredNumberOfPoints);
- if (filterAmount < 1)
- return values;
-
- return values.filter(function(element, index, array) {
- // Include the most recent and oldest values and exclude outliers.
- return (index % filterAmount == 0 || index == array.length - 1) && (array[index] < MAX_VALUE && array[index] != 0);
- });
-}
-
-function chartUrl(title, values, revisionLabel, startRevision, endRevision, desiredNumberOfPoints) {
- var maxValue = 0;
- for (var expectation in values)
- maxValue = Math.max(maxValue, Math.max.apply(null, filteredValues(values[expectation], desiredNumberOfPoints)));
-
- var chartData = '';
- var labels = '';
- var numLabels = 0;
-
- var first = true;
- for (var expectation in values) {
- chartData += (first ? 'e:' : ',') + extendedEncode(filteredValues(values[expectation], desiredNumberOfPoints).reverse(), maxValue);
-
- if (expectation) {
- numLabels++;
- labels += (first ? '' : '|') + expectationsMap()[expectation];
- }
- first = false;
- }
-
- var url = "http://chart.apis.google.com/chart?cht=lc&chs=600x400&chd=" +
- chartData + "&chg=15,15,1,3&chxt=x,x,y&chxl=1:||" + revisionLabel +
- "|&chxr=0," + startRevision + "," + endRevision + "|2,0," + maxValue + "&chtt=" + title;
-
-
- if (labels)
- url += "&chdl=" + labels + "&chco=" + LABEL_COLORS.slice(0, numLabels).join(',');
- return url;
-}
-
-function chart(title, values, revisionLabel, startRevision, endRevision)
-{
- var desiredNumberOfPoints = 400;
- var url = chartUrl(title, values, revisionLabel, startRevision, endRevision, desiredNumberOfPoints);
-
- while (url.length >= 2048) {
- // Decrease the desired number of points gradually until we get a URL that
- // doesn't exceed chartserver's max URL length.
- desiredNumberOfPoints = 3 / 4 * desiredNumberOfPoints;
- url = chartUrl(title, values, revisionLabel, startRevision, endRevision, desiredNumberOfPoints);
- }
-
- return '<img src="' + url + '">';
-}
-
-function wrapHTMLInTable(description, html)
-{
- return '<h3>' + description + '</h3><table><tbody>' + html + '</tbody></table>';
-}
-
-function htmlForSummaryTable(results, numColumns)
-{
- var percent = [];
- var fixable = results[FIXABLE_COUNT_KEY].slice(0, numColumns);
- var allFixable = results[ALL_FIXABLE_COUNT_KEY].slice(0, numColumns);
- for (var i = 0; i < numColumns; i++) {
- var percentage = 100 * (allFixable[i] - fixable[i]) / allFixable[i];
- // Round to the nearest tenth of a percent.
- percent.push(Math.round(percentage * 10) / 10 + '%');
- }
- var html = htmlForTableRow('WebKit Revision', results[WEBKIT_REVISIONS_KEY].slice(0, numColumns)) +
- htmlForTableRow('Percent passed', percent) +
- htmlForTableRow('Failures (deduped)', fixable) +
- htmlForTableRow('Fixable Tests', allFixable);
- return wrapHTMLInTable('Summary', html);
-}
-
-function valuesPerExpectation(counts, numColumns)
-{
- var values = {};
- for (var i = 0; i < numColumns; i++) {
- for (var expectation in expectationsMap()) {
- if (expectation in counts[i]) {
- var count = counts[i][expectation];
- if (!values[expectation])
- values[expectation] = [];
- values[expectation].push(count);
- }
- }
- }
- return values;
-}
-
-function htmlForTestType(results, key, description, numColumns)
-{
- var counts = results[key];
- var html = htmlForTableRow('WebKit Revision', results[WEBKIT_REVISIONS_KEY].slice(0, numColumns));
- var values = valuesPerExpectation(counts, numColumns);
- for (var expectation in values)
- html += htmlForTableRow(expectationsMap()[expectation], values[expectation]);
- return wrapHTMLInTable(description, html);
-}
-
-function htmlForTableRow(columnName, values)
-{
- return '<tr><td>' + columnName + '</td><td>' + values.join('</td><td>') + '</td></tr>';
-}
-
-// Taken from http://code.google.com/apis/chart/docs/data_formats.html.
-function extendedEncode(arrVals, maxVal)
-{
- var map = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.';
- var mapLength = map.length;
- var mapLengthSquared = mapLength * mapLength;
-
- var chartData = '';
-
- for (var i = 0, len = arrVals.length; i < len; i++) {
- // In case the array vals were translated to strings.
- var numericVal = new Number(arrVals[i]);
- // Scale the value to maxVal.
- var scaledVal = Math.floor(mapLengthSquared * numericVal / maxVal);
-
- if(scaledVal > mapLengthSquared - 1)
- chartData += "..";
- else if (scaledVal < 0)
- chartData += '__';
- else {
- // Calculate first and second digits and add them to the output.
- var quotient = Math.floor(scaledVal / mapLength);
- var remainder = scaledVal - mapLength * quotient;
- chartData += map.charAt(quotient) + map.charAt(remainder);
- }
- }
-
- return chartData;
-}
-
-window.addEventListener('load', function() {
- var resourceLoader = new loader.Loader();
- resourceLoader.load();
-}, false);
diff --git a/Tools/TestResultServer/static-dashboards/builders.js b/Tools/TestResultServer/static-dashboards/builders.js
deleted file mode 100644
index b18002bb1..000000000
--- a/Tools/TestResultServer/static-dashboards/builders.js
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright (C) 2012 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.
-
-// @fileoverview File that lists builders, their masters, and logical groupings
-// of them.
-
-function LOAD_BUILDBOT_DATA(builderData)
-{
- builders.masters = {};
- builderData.forEach(function(master) {
- builders.masters[master.name] = new builders.BuilderMaster(master.name, master.url, master.tests);
- })
-}
-
-var builders = builders || {};
-
-(function() {
-
-// FIXME: Move some of this loading logic into loader.js.
-
-builders._loadScript = function(url, success, error)
-{
- var script = document.createElement('script');
- script.src = url;
- script.onload = success;
- script.onerror = error;
- document.head.appendChild(script);
-}
-
-builders._requestBuilders = function()
-{
- var buildersUrl = 'builders.jsonp';
- builders._loadScript(buildersUrl, function() {}, function() {
- console.error('Could not load ' + buildersUrl);
- });
-}
-
-
-builders.BuilderMaster = function(name, basePath, tests)
-{
- this.name = name;
- this.basePath = basePath;
- this.tests = tests;
-}
-
-builders.BuilderMaster.prototype = {
- logPath: function(builder, buildNumber)
- {
- return this.basePath + '/builders/' + builder + '/builds/' + buildNumber;
- },
- builderJsonPath: function()
- {
- return this.basePath + '/json/builders';
- },
-}
-
-builders._requestBuilders();
-
-})();
-
-// FIXME: Move everything below into the anonymous namespace above.
-
-WEBKIT_BUILDER_MASTER = 'webkit.org';
-var LEGACY_BUILDER_MASTERS_TO_GROUPS = {
- 'webkit.org': '@ToT - webkit.org'
-};
-
-function BuilderGroup()
-{
- // Map of builderName (the name shown in the waterfall) to builderPath (the
- // path used in the builder's URL)
- this.builders = {};
-}
-
-BuilderGroup.prototype.append = function(builders) {
- builders.forEach(function(builderName) {
- this.builders[builderName] = builderName.replace(/[ .()]/g, '_');
- }, this);
-};
-
-BuilderGroup.prototype.defaultBuilder = function()
-{
- for (var builder in this.builders)
- return builder;
- console.error('There are no builders in this builder group.');
-}
-
-BuilderGroup.prototype.master = function()
-{
- return builderMaster(this.defaultBuilder());
-}
-
-var BUILDER_TO_MASTER = {};
-
-function builderMaster(builderName)
-{
- return BUILDER_TO_MASTER[builderName];
-}
-
-function requestBuilderList(builderGroups, masterName, groupName, builderGroup, testType, opt_builderFilter)
-{
- if (!builderGroups[groupName])
- builderGroups[groupName] = builderGroup;
- var master = builders.masters[masterName];
- var builderList = master.tests[testType].builders;
- if (opt_builderFilter)
- builderList = builderList.filter(opt_builderFilter);
- builderList.forEach(function(builderName) {
- BUILDER_TO_MASTER[builderName] = master;
- });
- builderGroups[groupName].append(builderList);
-}
-
-// FIXME: Look into whether we can move the grouping logic into builders.jsonp and get rid of this code.
-function loadBuildersList(groupName, testType) {
- switch (testType) {
- case 'layout-tests':
- switch(groupName) {
- case '@ToT - webkit.org':
- var builderGroup = new BuilderGroup();
- requestBuilderList(LAYOUT_TESTS_BUILDER_GROUPS, WEBKIT_BUILDER_MASTER, groupName, builderGroup, testType);
- break;
- default:
- console.error('Tried to load builders for an unsupported group "' + groupName + '"');
- }
- break;
-
- default:
- console.error('Tried to load builders for an unsupported test type "' + testType + '"');
- }
-}
-
-var LAYOUT_TESTS_BUILDER_GROUPS = {
- '@ToT - webkit.org': null,
-};
diff --git a/Tools/TestResultServer/static-dashboards/builders.jsonp b/Tools/TestResultServer/static-dashboards/builders.jsonp
deleted file mode 100644
index 205edc01d..000000000
--- a/Tools/TestResultServer/static-dashboards/builders.jsonp
+++ /dev/null
@@ -1,35 +0,0 @@
-// This file is auto-generated by Tools/TestResultServer/generate_builders_json.py. It should not be manually modified.
-// It uses jsonp instead of proper json because we want to be able to load it from a file URL for local testing.
-LOAD_BUILDBOT_DATA([
- {
- "name": "webkit.org",
- "tests": {
- "layout-tests": {
- "builders": [
- "Apple Lion Debug WK1 (Tests)",
- "Apple Lion Debug WK2 (Tests)",
- "Apple Lion Release WK1 (Tests)",
- "Apple Lion Release WK2 (Tests)",
- "Apple MountainLion (Leaks)",
- "Apple MountainLion Debug WK1 (Tests)",
- "Apple MountainLion Debug WK2 (Tests)",
- "Apple MountainLion Release WK1 (Tests)",
- "Apple MountainLion Release WK2 (Tests)",
- "Apple Win 7 Debug (Tests)",
- "Apple Win 7 Release (Tests)",
- "EFL Linux 64-bit Debug WK2",
- "EFL Linux 64-bit Release",
- "EFL Linux 64-bit Release WK2",
- "GTK Linux 32-bit Release",
- "GTK Linux 64-bit Debug WK1",
- "GTK Linux 64-bit Release",
- "GTK Linux 64-bit Release WK2 (Tests)",
- "Qt Linux Release",
- "Qt Mountain Lion Release",
- "WinCairo Release"
- ]
- }
- },
- "url": "http://build.webkit.org"
- }
-]);
diff --git a/Tools/TestResultServer/static-dashboards/builders_unittests.js b/Tools/TestResultServer/static-dashboards/builders_unittests.js
deleted file mode 100644
index 29c02f151..000000000
--- a/Tools/TestResultServer/static-dashboards/builders_unittests.js
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright (C) 2012 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.
-
-test('loading steps', 4, function() {
- var tests = {}
- var baseUrl = 'http://dummyurl';
- var name = 'dummyname';
- var master = new builders.BuilderMaster(name, baseUrl, tests);
-
- var builder = 'dummybuilder';
- var buildNumber = 12345;
- equal(master.logPath(builder, buildNumber), baseUrl + '/builders/' + builder + '/builds/' + buildNumber);
- equal(master.builderJsonPath(), baseUrl + '/json/builders');
- equal(master.tests, tests);
- equal(master.name, name);
-})
diff --git a/Tools/TestResultServer/static-dashboards/dashboard_base.js b/Tools/TestResultServer/static-dashboards/dashboard_base.js
deleted file mode 100644
index cb0411a39..000000000
--- a/Tools/TestResultServer/static-dashboards/dashboard_base.js
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright (C) 2012 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.
-
-// @fileoverview Base JS file for pages that want to parse the results JSON
-// from the testing bots. This deals with generic utility functions, visible
-// history, popups and appending the script elements for the JSON files.
-
-
-//////////////////////////////////////////////////////////////////////////////
-// CONSTANTS
-//////////////////////////////////////////////////////////////////////////////
-var GTEST_EXPECTATIONS_MAP_ = {
- 'P': 'PASS',
- 'F': 'FAIL',
- 'N': 'NO DATA',
- 'X': 'SKIPPED'
-};
-
-var LAYOUT_TEST_EXPECTATIONS_MAP_ = {
- 'P': 'PASS',
- 'N': 'NO DATA',
- 'X': 'SKIP',
- 'T': 'TIMEOUT',
- 'F': 'TEXT',
- 'C': 'CRASH',
- 'I': 'IMAGE',
- 'Z': 'IMAGE+TEXT',
- // We used to glob a bunch of expectations into "O" as OTHER. Expectations
- // are more precise now though and it just means MISSING.
- 'O': 'MISSING'
-};
-
-
-// Keys in the JSON files.
-var WONTFIX_COUNTS_KEY = 'wontfixCounts';
-var FIXABLE_COUNTS_KEY = 'fixableCounts';
-var DEFERRED_COUNTS_KEY = 'deferredCounts';
-var WONTFIX_DESCRIPTION = 'Tests never to be fixed (WONTFIX)';
-var FIXABLE_DESCRIPTION = 'All tests for this release';
-var DEFERRED_DESCRIPTION = 'All deferred tests (DEFER)';
-var FIXABLE_COUNT_KEY = 'fixableCount';
-var ALL_FIXABLE_COUNT_KEY = 'allFixableCount';
-var CHROME_REVISIONS_KEY = 'chromeRevision';
-var WEBKIT_REVISIONS_KEY = 'webkitRevision';
-var TIMESTAMPS_KEY = 'secondsSinceEpoch';
-var BUILD_NUMBERS_KEY = 'buildNumbers';
-var TESTS_KEY = 'tests';
-var ONE_DAY_SECONDS = 60 * 60 * 24;
-var ONE_WEEK_SECONDS = ONE_DAY_SECONDS * 7;
-
-// These should match the testtype uploaded to webkit-test-results.appspot.com.
-// See http://webkit-test-results.appspot.com/testfile.
-var TEST_TYPES = [
- 'layout-tests'
-];
-
-
-// Enum for indexing into the run-length encoded results in the JSON files.
-// 0 is where the count is length is stored. 1 is the value.
-var RLE = {
- LENGTH: 0,
- VALUE: 1
-}
-
-function isFailingResult(value)
-{
- return 'FSTOCIZ'.indexOf(value) != -1;
-}
-
-// Generic utility functions.
-function $(id)
-{
- return document.getElementById(id);
-}
-
-function currentBuilderGroupCategory()
-{
- return LAYOUT_TESTS_BUILDER_GROUPS;
-}
-
-function currentBuilderGroupName()
-{
- return g_history.crossDashboardState.group || Object.keys(currentBuilderGroupCategory())[0];
-}
-
-function currentBuilderGroup()
-{
- return currentBuilderGroupCategory()[currentBuilderGroupName()];
-}
-
-function currentBuilders()
-{
- return currentBuilderGroup().builders;
-}
-
-function isTipOfTreeWebKitBuilder()
-{
- return true;
-}
-
-var g_resultsByBuilder = {};
-var g_expectationsByPlatform = {};
-
-function isFlakinessDashboard()
-{
- return string.endsWith(window.location.pathname, 'flakiness_dashboard.html');
-}
-
-// Create a new function with some of its arguements
-// pre-filled.
-// Taken from goog.partial in the Closure library.
-// @param {Function} fn A function to partially apply.
-// @param {...*} var_args Additional arguments that are partially
-// applied to fn.
-// @return {!Function} A partially-applied form of the function bind() was
-// invoked as a method of.
-function partial(fn, var_args)
-{
- var args = Array.prototype.slice.call(arguments, 1);
- return function() {
- // Prepend the bound arguments to the current arguments.
- var newArgs = Array.prototype.slice.call(arguments);
- newArgs.unshift.apply(newArgs, args);
- return fn.apply(this, newArgs);
- };
-};
-
-// Returns the appropriate expectations map for the current testType.
-function expectationsMap()
-{
- return g_history.isLayoutTestResults() ? LAYOUT_TEST_EXPECTATIONS_MAP_ : GTEST_EXPECTATIONS_MAP_;
-}
diff --git a/Tools/TestResultServer/static-dashboards/dygraph-combined.js b/Tools/TestResultServer/static-dashboards/dygraph-combined.js
deleted file mode 100644
index 6a88059e4..000000000
--- a/Tools/TestResultServer/static-dashboards/dygraph-combined.js
+++ /dev/null
@@ -1 +0,0 @@
-DygraphLayout=function(b,a){this.dygraph_=b;this.options={};Dygraph.update(this.options,a?a:{});this.datasets=new Array();this.annotations=new Array()};DygraphLayout.prototype.attr_=function(a){return this.dygraph_.attr_(a)};DygraphLayout.prototype.addDataset=function(a,b){this.datasets[a]=b};DygraphLayout.prototype.setAnnotations=function(d){var e=this.attr_("xValueParser");for(var c=0;c<d.length;c++){var b={};if(!d[c].xval&&!d[c].x){this.dygraph_.error("Annotations must have an 'x' property");return}if(d[c].icon&&!(d[c].hasOwnProperty("width")&&d[c].hasOwnProperty("height"))){this.dygraph_.error("Must set width and height when setting annotation.icon property");return}Dygraph.update(b,d[c]);if(!b.xval){b.xval=e(b.x)}this.annotations.push(b)}};DygraphLayout.prototype.evaluate=function(){this._evaluateLimits();this._evaluateLineCharts();this._evaluateLineTicks();this._evaluateAnnotations()};DygraphLayout.prototype._evaluateLimits=function(){this.minxval=this.maxxval=null;if(this.options.dateWindow){this.minxval=this.options.dateWindow[0];this.maxxval=this.options.dateWindow[1]}else{for(var c in this.datasets){if(!this.datasets.hasOwnProperty(c)){continue}var d=this.datasets[c];var b=d[0][0];if(!this.minxval||b<this.minxval){this.minxval=b}var a=d[d.length-1][0];if(!this.maxxval||a>this.maxxval){this.maxxval=a}}}this.xrange=this.maxxval-this.minxval;this.xscale=(this.xrange!=0?1/this.xrange:1);this.minyval=this.options.yAxis[0];this.maxyval=this.options.yAxis[1];this.yrange=this.maxyval-this.minyval;this.yscale=(this.yrange!=0?1/this.yrange:1)};DygraphLayout.prototype._evaluateLineCharts=function(){this.points=new Array();for(var e in this.datasets){if(!this.datasets.hasOwnProperty(e)){continue}var d=this.datasets[e];for(var b=0;b<d.length;b++){var c=d[b];var a={x:((parseFloat(c[0])-this.minxval)*this.xscale),y:1-((parseFloat(c[1])-this.minyval)*this.yscale),xval:parseFloat(c[0]),yval:parseFloat(c[1]),name:e};if(a.y<=0){a.y=0}if(a.y>=1){a.y=1}this.points.push(a)}}};DygraphLayout.prototype._evaluateLineTicks=function(){this.xticks=new Array();for(var c=0;c<this.options.xTicks.length;c++){var b=this.options.xTicks[c];var a=b.label;var d=this.xscale*(b.v-this.minxval);if((d>=0)&&(d<=1)){this.xticks.push([d,a])}}this.yticks=new Array();for(var c=0;c<this.options.yTicks.length;c++){var b=this.options.yTicks[c];var a=b.label;var d=1-(this.yscale*(b.v-this.minyval));if((d>=0)&&(d<=1)){this.yticks.push([d,a])}}};DygraphLayout.prototype.evaluateWithError=function(){this.evaluate();if(!this.options.errorBars){return}var d=0;for(var g in this.datasets){if(!this.datasets.hasOwnProperty(g)){continue}var c=0;var f=this.datasets[g];for(var c=0;c<f.length;c++,d++){var e=f[c];var a=parseFloat(e[0]);var b=parseFloat(e[1]);if(a==this.points[d].xval&&b==this.points[d].yval){this.points[d].errorMinus=parseFloat(e[2]);this.points[d].errorPlus=parseFloat(e[3])}}}};DygraphLayout.prototype._evaluateAnnotations=function(){var f={};for(var d=0;d<this.annotations.length;d++){var b=this.annotations[d];f[b.xval+","+b.series]=b}this.annotated_points=[];for(var d=0;d<this.points.length;d++){var e=this.points[d];var c=e.xval+","+e.name;if(c in f){e.annotation=f[c];this.annotated_points.push(e)}}};DygraphLayout.prototype.removeAllDatasets=function(){delete this.datasets;this.datasets=new Array()};DygraphLayout.prototype.updateOptions=function(a){Dygraph.update(this.options,a?a:{})};DygraphCanvasRenderer=function(c,b,d,a){this.dygraph_=c;this.options={strokeWidth:0.5,drawXAxis:true,drawYAxis:true,axisLineColor:"black",axisLineWidth:0.5,axisTickSize:3,axisLabelColor:"black",axisLabelFont:"Arial",axisLabelFontSize:9,axisLabelWidth:50,drawYGrid:true,drawXGrid:true,gridLineColor:"rgb(128,128,128)",fillAlpha:0.15,underlayCallback:null};Dygraph.update(this.options,a);this.layout=d;this.element=b;this.container=this.element.parentNode;this.height=this.element.height;this.width=this.element.width;if(!this.isIE&&!(DygraphCanvasRenderer.isSupported(this.element))){throw"Canvas is not supported."}this.xlabels=new Array();this.ylabels=new Array();this.annotations=new Array();this.area={x:this.options.yAxisLabelWidth+2*this.options.axisTickSize,y:0};this.area.w=this.width-this.area.x-this.options.rightGap;this.area.h=this.height-this.options.axisLabelFontSize-2*this.options.axisTickSize;this.container.style.position="relative";this.container.style.width=this.width+"px"};DygraphCanvasRenderer.prototype.clear=function(){if(this.isIE){try{if(this.clearDelay){this.clearDelay.cancel();this.clearDelay=null}var b=this.element.getContext("2d")}catch(d){this.clearDelay=MochiKit.Async.wait(this.IEDelay);this.clearDelay.addCallback(bind(this.clear,this));return}}var b=this.element.getContext("2d");b.clearRect(0,0,this.width,this.height);for(var a=0;a<this.xlabels.length;a++){var c=this.xlabels[a];c.parentNode.removeChild(c)}for(var a=0;a<this.ylabels.length;a++){var c=this.ylabels[a];c.parentNode.removeChild(c)}for(var a=0;a<this.annotations.length;a++){var c=this.annotations[a];c.parentNode.removeChild(c)}this.xlabels=new Array();this.ylabels=new Array();this.annotations=new Array()};DygraphCanvasRenderer.isSupported=function(g){var b=null;try{if(typeof(g)=="undefined"||g==null){b=document.createElement("canvas")}else{b=g}var c=b.getContext("2d")}catch(d){var f=navigator.appVersion.match(/MSIE (\d\.\d)/);var a=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);if((!f)||(f[1]<6)||(a)){return false}return true}return true};DygraphCanvasRenderer.prototype.render=function(){var b=this.element.getContext("2d");if(this.options.underlayCallback){this.options.underlayCallback(b,this.area,this.layout,this.dygraph_)}if(this.options.drawYGrid){var d=this.layout.yticks;b.save();b.strokeStyle=this.options.gridLineColor;b.lineWidth=this.options.axisLineWidth;for(var c=0;c<d.length;c++){var a=this.area.x;var e=this.area.y+d[c][0]*this.area.h;b.beginPath();b.moveTo(a,e);b.lineTo(a+this.area.w,e);b.closePath();b.stroke()}}if(this.options.drawXGrid){var d=this.layout.xticks;b.save();b.strokeStyle=this.options.gridLineColor;b.lineWidth=this.options.axisLineWidth;for(var c=0;c<d.length;c++){var a=this.area.x+d[c][0]*this.area.w;var e=this.area.y+this.area.h;b.beginPath();b.moveTo(a,e);b.lineTo(a,this.area.y);b.closePath();b.stroke()}}this._renderLineChart();this._renderAxis();this._renderAnnotations()};DygraphCanvasRenderer.prototype._renderAxis=function(){if(!this.options.drawXAxis&&!this.options.drawYAxis){return}var b=this.element.getContext("2d");var g={position:"absolute",fontSize:this.options.axisLabelFontSize+"px",zIndex:10,color:this.options.axisLabelColor,width:this.options.axisLabelWidth+"px",overflow:"hidden"};var d=function(o){var q=document.createElement("div");for(var p in g){if(g.hasOwnProperty(p)){q.style[p]=g[p]}}q.appendChild(document.createTextNode(o));return q};b.save();b.strokeStyle=this.options.axisLineColor;b.lineWidth=this.options.axisLineWidth;if(this.options.drawYAxis){if(this.layout.yticks&&this.layout.yticks.length>0){for(var e=0;e<this.layout.yticks.length;e++){var f=this.layout.yticks[e];if(typeof(f)=="function"){return}var l=this.area.x;var j=this.area.y+f[0]*this.area.h;b.beginPath();b.moveTo(l,j);b.lineTo(l-this.options.axisTickSize,j);b.closePath();b.stroke();var k=d(f[1]);var h=(j-this.options.axisLabelFontSize/2);if(h<0){h=0}if(h+this.options.axisLabelFontSize+3>this.height){k.style.bottom="0px"}else{k.style.top=h+"px"}k.style.left="0px";k.style.textAlign="right";k.style.width=this.options.yAxisLabelWidth+"px";this.container.appendChild(k);this.ylabels.push(k)}var m=this.ylabels[0];var n=this.options.axisLabelFontSize;var a=parseInt(m.style.top)+n;if(a>this.height-n){m.style.top=(parseInt(m.style.top)-n/2)+"px"}}b.beginPath();b.moveTo(this.area.x,this.area.y);b.lineTo(this.area.x,this.area.y+this.area.h);b.closePath();b.stroke()}if(this.options.drawXAxis){if(this.layout.xticks){for(var e=0;e<this.layout.xticks.length;e++){var f=this.layout.xticks[e];if(typeof(dataset)=="function"){return}var l=this.area.x+f[0]*this.area.w;var j=this.area.y+this.area.h;b.beginPath();b.moveTo(l,j);b.lineTo(l,j+this.options.axisTickSize);b.closePath();b.stroke();var k=d(f[1]);k.style.textAlign="center";k.style.bottom="0px";var c=(l-this.options.axisLabelWidth/2);if(c+this.options.axisLabelWidth>this.width){c=this.width-this.options.xAxisLabelWidth;k.style.textAlign="right"}if(c<0){c=0;k.style.textAlign="left"}k.style.left=c+"px";k.style.width=this.options.xAxisLabelWidth+"px";this.container.appendChild(k);this.xlabels.push(k)}}b.beginPath();b.moveTo(this.area.x,this.area.y+this.area.h);b.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);b.closePath();b.stroke()}b.restore()};DygraphCanvasRenderer.prototype._renderAnnotations=function(){var h={position:"absolute",fontSize:this.options.axisLabelFontSize+"px",zIndex:10,overflow:"hidden"};var j=function(q,r,s,a){return function(t){var p=s.annotation;if(p.hasOwnProperty(q)){p[q](p,s,a.dygraph_,t)}else{if(a.dygraph_.attr_(r)){a.dygraph_.attr_(r)(p,s,a.dygraph_,t)}}}};var m=this.layout.annotated_points;for(var g=0;g<m.length;g++){var e=m[g];if(e.canvasx<this.area.x||e.canvasx>this.area.x+this.area.w){continue}var k=e.annotation;var l=6;if(k.hasOwnProperty("tickHeight")){l=k.tickHeight}var c=document.createElement("div");for(var b in h){if(h.hasOwnProperty(b)){c.style[b]=h[b]}}if(!k.hasOwnProperty("icon")){c.className="dygraphDefaultAnnotation"}if(k.hasOwnProperty("cssClass")){c.className+=" "+k.cssClass}var d=k.hasOwnProperty("width")?k.width:16;var n=k.hasOwnProperty("height")?k.height:16;if(k.hasOwnProperty("icon")){var f=document.createElement("img");f.src=k.icon;f.width=d;f.height=n;c.appendChild(f)}else{if(e.annotation.hasOwnProperty("shortText")){c.appendChild(document.createTextNode(e.annotation.shortText))}}c.style.left=(e.canvasx-d/2)+"px";if(k.attachAtBottom){c.style.top=(this.area.h-n-l)+"px"}else{c.style.top=(e.canvasy-n-l)+"px"}c.style.width=d+"px";c.style.height=n+"px";c.title=e.annotation.text;c.style.color=this.colors[e.name];c.style.borderColor=this.colors[e.name];k.div=c;Dygraph.addEvent(c,"click",j("clickHandler","annotationClickHandler",e,this));Dygraph.addEvent(c,"mouseover",j("mouseOverHandler","annotationMouseOverHandler",e,this));Dygraph.addEvent(c,"mouseout",j("mouseOutHandler","annotationMouseOutHandler",e,this));Dygraph.addEvent(c,"dblclick",j("dblClickHandler","annotationDblClickHandler",e,this));this.container.appendChild(c);this.annotations.push(c);var o=this.element.getContext("2d");o.strokeStyle=this.colors[e.name];o.beginPath();if(!k.attachAtBottom){o.moveTo(e.canvasx,e.canvasy);o.lineTo(e.canvasx,e.canvasy-2-l)}else{o.moveTo(e.canvasx,this.area.h);o.lineTo(e.canvasx,this.area.h-2-l)}o.closePath();o.stroke()}};DygraphCanvasRenderer.prototype._renderLineChart=function(){var c=this.element.getContext("2d");var f=this.options.colorScheme.length;var o=this.options.colorScheme;var z=this.options.fillAlpha;var E=this.layout.options.errorBars;var t=this.layout.options.fillGraph;var d=this.layout.options.stackedGraph;var l=this.layout.options.stepPlot;var G=[];for(var H in this.layout.datasets){if(this.layout.datasets.hasOwnProperty(H)){G.push(H)}}var A=G.length;this.colors={};for(var C=0;C<A;C++){this.colors[G[C]]=o[C%f]}for(var C=0;C<this.layout.points.length;C++){var v=this.layout.points[C];v.canvasx=this.area.w*v.x+this.area.x;v.canvasy=this.area.h*v.y+this.area.y}var p=function(j){return j&&!isNaN(j)};var u=c;if(E){if(t){this.dygraph_.warn("Can't use fillGraph option with error bars")}for(var C=0;C<A;C++){var k=G[C];var x=this.colors[k];u.save();var h=NaN;var e=NaN;var g=[-1,-1];var D=this.layout.yscale;var a=new RGBColor(x);var F="rgba("+a.r+","+a.g+","+a.b+","+z+")";u.fillStyle=F;u.beginPath();for(var y=0;y<this.layout.points.length;y++){var v=this.layout.points[y];if(v.name==k){if(!p(v.y)){h=NaN;continue}if(l){var r=[e-v.errorPlus*D,e+v.errorMinus*D];e=v.y}else{var r=[v.y-v.errorPlus*D,v.y+v.errorMinus*D]}r[0]=this.area.h*r[0]+this.area.y;r[1]=this.area.h*r[1]+this.area.y;if(!isNaN(h)){if(l){u.moveTo(h,r[0])}else{u.moveTo(h,g[0])}u.lineTo(v.canvasx,r[0]);u.lineTo(v.canvasx,r[1]);if(l){u.lineTo(h,r[1])}else{u.lineTo(h,g[1])}u.closePath()}g=r;h=v.canvasx}}u.fill()}}else{if(t){var b=1+this.layout.minyval*this.layout.yscale;if(b<0){b=0}else{if(b>1){b=1}}b=this.area.h*b+this.area.y;var q=[];for(var C=A-1;C>=0;C--){var k=G[C];var x=this.colors[k];u.save();var h=NaN;var g=[-1,-1];var D=this.layout.yscale;var a=new RGBColor(x);var F="rgba("+a.r+","+a.g+","+a.b+","+z+")";u.fillStyle=F;u.beginPath();for(var y=0;y<this.layout.points.length;y++){var v=this.layout.points[y];if(v.name==k){if(!p(v.y)){h=NaN;continue}var r;if(d){lastY=q[v.canvasx];if(lastY===undefined){lastY=b}q[v.canvasx]=v.canvasy;r=[v.canvasy,lastY]}else{r=[v.canvasy,b]}if(!isNaN(h)){u.moveTo(h,g[0]);if(l){u.lineTo(v.canvasx,g[0])}else{u.lineTo(v.canvasx,r[0])}u.lineTo(v.canvasx,r[1]);u.lineTo(h,g[1]);u.closePath()}g=r;h=v.canvasx}}u.fill()}}}for(var C=0;C<A;C++){var k=G[C];var x=this.colors[k];var s=this.dygraph_.attr_("strokeWidth",k);c.save();var v=this.layout.points[0];var m=this.dygraph_.attr_("pointSize",k);var h=null,e=null;var w=this.dygraph_.attr_("drawPoints",k);var B=this.layout.points;for(var y=0;y<B.length;y++){var v=B[y];if(v.name==k){if(!p(v.canvasy)){h=e=null}else{var n=(!h&&(y==B.length-1||!p(B[y+1].canvasy)));if(!h){h=v.canvasx;e=v.canvasy}else{if(s){u.beginPath();u.strokeStyle=x;u.lineWidth=s;u.moveTo(h,e);if(l){u.lineTo(v.canvasx,e)}h=v.canvasx;e=v.canvasy;u.lineTo(h,e);u.stroke()}}if(w||n){u.beginPath();u.fillStyle=x;u.arc(v.canvasx,v.canvasy,m,0,2*Math.PI,false);u.fill()}}}}}c.restore()};Dygraph=function(c,b,a){if(arguments.length>0){if(arguments.length==4){this.warn("Using deprecated four-argument dygraph constructor");this.__old_init__(c,b,arguments[2],arguments[3])}else{this.__init__(c,b,a)}}};Dygraph.NAME="Dygraph";Dygraph.VERSION="1.2";Dygraph.__repr__=function(){return"["+this.NAME+" "+this.VERSION+"]"};Dygraph.toString=function(){return this.__repr__()};Dygraph.DEFAULT_ROLL_PERIOD=1;Dygraph.DEFAULT_WIDTH=480;Dygraph.DEFAULT_HEIGHT=320;Dygraph.AXIS_LINE_WIDTH=0.3;Dygraph.DEFAULT_ATTRS={highlightCircleSize:3,pixelsPerXLabel:60,pixelsPerYLabel:30,labelsDivWidth:250,labelsDivStyles:{},labelsSeparateLines:false,labelsShowZeroValues:true,labelsKMB:false,labelsKMG2:false,showLabelsOnHighlight:true,yValueFormatter:function(a){return Dygraph.round_(a,2)},strokeWidth:1,axisTickSize:3,axisLabelFontSize:14,xAxisLabelWidth:50,yAxisLabelWidth:50,xAxisLabelFormatter:Dygraph.dateAxisFormatter,rightGap:5,showRoller:false,xValueFormatter:Dygraph.dateString_,xValueParser:Dygraph.dateParser,xTicker:Dygraph.dateTicker,delimiter:",",logScale:false,sigma:2,errorBars:false,fractions:false,wilsonInterval:true,customBars:false,fillGraph:false,fillAlpha:0.15,connectSeparatedPoints:false,stackedGraph:false,hideOverlayOnMouseOut:true,stepPlot:false};Dygraph.DEBUG=1;Dygraph.INFO=2;Dygraph.WARNING=3;Dygraph.ERROR=3;Dygraph.addedAnnotationCSS=false;Dygraph.prototype.__old_init__=function(f,d,e,b){if(e!=null){var a=["Date"];for(var c=0;c<e.length;c++){a.push(e[c])}Dygraph.update(b,{labels:a})}this.__init__(f,d,b)};Dygraph.prototype.__init__=function(c,b,a){if(a==null){a={}}this.maindiv_=c;this.file_=b;this.rollPeriod_=a.rollPeriod||Dygraph.DEFAULT_ROLL_PERIOD;this.previousVerticalX_=-1;this.fractions_=a.fractions||false;this.dateWindow_=a.dateWindow||null;this.valueRange_=a.valueRange||null;this.wilsonInterval_=a.wilsonInterval||true;this.is_initial_draw_=true;this.annotations_=[];c.innerHTML="";if(c.style.width==""){c.style.width=a.width||Dygraph.DEFAULT_WIDTH+"px"}if(c.style.height==""){c.style.height=a.height||Dygraph.DEFAULT_HEIGHT+"px"}this.width_=parseInt(c.style.width,10);this.height_=parseInt(c.style.height,10);if(c.style.width.indexOf("%")==c.style.width.length-1){this.width_=c.offsetWidth}if(c.style.height.indexOf("%")==c.style.height.length-1){this.height_=c.offsetHeight}if(this.width_==0){this.error("dygraph has zero width. Please specify a width in pixels.")}if(this.height_==0){this.error("dygraph has zero height. Please specify a height in pixels.")}if(a.stackedGraph){a.fillGraph=true}this.user_attrs_={};Dygraph.update(this.user_attrs_,a);this.attrs_={};Dygraph.update(this.attrs_,Dygraph.DEFAULT_ATTRS);this.boundaryIds_=[];this.labelsFromCSV_=(this.attr_("labels")==null);Dygraph.addAnnotationRule();this.createInterface_();this.start_()};Dygraph.prototype.attr_=function(b,a){if(a&&typeof(this.user_attrs_[a])!="undefined"&&this.user_attrs_[a]!=null&&typeof(this.user_attrs_[a][b])!="undefined"){return this.user_attrs_[a][b]}else{if(typeof(this.user_attrs_[b])!="undefined"){return this.user_attrs_[b]}else{if(typeof(this.attrs_[b])!="undefined"){return this.attrs_[b]}else{return null}}}};Dygraph.prototype.log=function(a,b){if(typeof(console)!="undefined"){switch(a){case Dygraph.DEBUG:console.debug("dygraphs: "+b);break;case Dygraph.INFO:console.info("dygraphs: "+b);break;case Dygraph.WARNING:console.warn("dygraphs: "+b);break;case Dygraph.ERROR:console.error("dygraphs: "+b);break}}};Dygraph.prototype.info=function(a){this.log(Dygraph.INFO,a)};Dygraph.prototype.warn=function(a){this.log(Dygraph.WARNING,a)};Dygraph.prototype.error=function(a){this.log(Dygraph.ERROR,a)};Dygraph.prototype.rollPeriod=function(){return this.rollPeriod_};Dygraph.prototype.xAxisRange=function(){if(this.dateWindow_){return this.dateWindow_}var b=this.rawData_[0][0];var a=this.rawData_[this.rawData_.length-1][0];return[b,a]};Dygraph.prototype.yAxisRange=function(){return this.displayedYRange_};Dygraph.prototype.toDomCoords=function(b,f){var c=[null,null];var d=this.plotter_.area;if(b!==null){var a=this.xAxisRange();c[0]=d.x+(b-a[0])/(a[1]-a[0])*d.w}if(f!==null){var e=this.yAxisRange();c[1]=d.y+(e[1]-f)/(e[1]-e[0])*d.h}return c};Dygraph.prototype.toDataCoords=function(b,f){var c=[null,null];var d=this.plotter_.area;if(b!==null){var a=this.xAxisRange();c[0]=a[0]+(b-d.x)/d.w*(a[1]-a[0])}if(f!==null){var e=this.yAxisRange();c[1]=e[0]+(d.h-f)/d.h*(e[1]-e[0])}return c};Dygraph.prototype.numColumns=function(){return this.rawData_[0].length};Dygraph.prototype.numRows=function(){return this.rawData_.length};Dygraph.prototype.getValue=function(b,a){if(b<0||b>this.rawData_.length){return null}if(a<0||a>this.rawData_[b].length){return null}return this.rawData_[b][a]};Dygraph.addEvent=function(c,a,b){var d=function(f){if(!f){var f=window.event}b(f)};if(window.addEventListener){c.addEventListener(a,d,false)}else{c.attachEvent("on"+a,d)}};Dygraph.clipCanvas_=function(b,c){var a=b.getContext("2d");a.beginPath();a.rect(c.left,c.top,c.width,c.height);a.clip()};Dygraph.prototype.createInterface_=function(){var a=this.maindiv_;this.graphDiv=document.createElement("div");this.graphDiv.style.width=this.width_+"px";this.graphDiv.style.height=this.height_+"px";a.appendChild(this.graphDiv);var c={top:0,left:this.attr_("yAxisLabelWidth")+2*this.attr_("axisTickSize")};c.width=this.width_-c.left-this.attr_("rightGap");c.height=this.height_-this.attr_("axisLabelFontSize")-2*this.attr_("axisTickSize");this.clippingArea_=c;this.canvas_=Dygraph.createCanvas();this.canvas_.style.position="absolute";this.canvas_.width=this.width_;this.canvas_.height=this.height_;this.canvas_.style.width=this.width_+"px";this.canvas_.style.height=this.height_+"px";this.hidden_=this.createPlotKitCanvas_(this.canvas_);this.graphDiv.appendChild(this.hidden_);this.graphDiv.appendChild(this.canvas_);this.mouseEventElement_=this.canvas_;Dygraph.clipCanvas_(this.hidden_,this.clippingArea_);Dygraph.clipCanvas_(this.canvas_,this.clippingArea_);var b=this;Dygraph.addEvent(this.mouseEventElement_,"mousemove",function(d){b.mouseMove_(d)});Dygraph.addEvent(this.mouseEventElement_,"mouseout",function(d){b.mouseOut_(d)});this.layoutOptions_={xOriginIsZero:false};Dygraph.update(this.layoutOptions_,this.attrs_);Dygraph.update(this.layoutOptions_,this.user_attrs_);Dygraph.update(this.layoutOptions_,{errorBars:(this.attr_("errorBars")||this.attr_("customBars"))});this.layout_=new DygraphLayout(this,this.layoutOptions_);this.renderOptions_={colorScheme:this.colors_,strokeColor:null,axisLineWidth:Dygraph.AXIS_LINE_WIDTH};Dygraph.update(this.renderOptions_,this.attrs_);Dygraph.update(this.renderOptions_,this.user_attrs_);this.plotter_=new DygraphCanvasRenderer(this,this.hidden_,this.layout_,this.renderOptions_);this.createStatusMessage_();this.createRollInterface_();this.createDragInterface_()};Dygraph.prototype.destroy=function(){var a=function(c){while(c.hasChildNodes()){a(c.firstChild);c.removeChild(c.firstChild)}};a(this.maindiv_);var b=function(c){for(var d in c){if(typeof(c[d])==="object"){c[d]=null}}};b(this.layout_);b(this.plotter_);b(this)};Dygraph.prototype.createPlotKitCanvas_=function(a){var b=Dygraph.createCanvas();b.style.position="absolute";b.style.top=a.style.top;b.style.left=a.style.left;b.width=this.width_;b.height=this.height_;b.style.width=this.width_+"px";b.style.height=this.height_+"px";return b};Dygraph.hsvToRGB=function(h,g,k){var c;var d;var l;if(g===0){c=k;d=k;l=k}else{var e=Math.floor(h*6);var j=(h*6)-e;var b=k*(1-g);var a=k*(1-(g*j));var m=k*(1-(g*(1-j)));switch(e){case 1:c=a;d=k;l=b;break;case 2:c=b;d=k;l=m;break;case 3:c=b;d=a;l=k;break;case 4:c=m;d=b;l=k;break;case 5:c=k;d=b;l=a;break;case 6:case 0:c=k;d=m;l=b;break}}c=Math.floor(255*c+0.5);d=Math.floor(255*d+0.5);l=Math.floor(255*l+0.5);return"rgb("+c+","+d+","+l+")"};Dygraph.prototype.setColors_=function(){var e=this.attr_("labels").length-1;this.colors_=[];var a=this.attr_("colors");if(!a){var c=this.attr_("colorSaturation")||1;var b=this.attr_("colorValue")||0.5;var j=Math.ceil(e/2);for(var d=1;d<=e;d++){if(!this.visibility()[d-1]){continue}var g=d%2?Math.ceil(d/2):(j+d/2);var f=(1*g/(1+e));this.colors_.push(Dygraph.hsvToRGB(f,c,b))}}else{for(var d=0;d<e;d++){if(!this.visibility()[d]){continue}var h=a[d%a.length];this.colors_.push(h)}}this.renderOptions_.colorScheme=this.colors_;Dygraph.update(this.plotter_.options,this.renderOptions_);Dygraph.update(this.layoutOptions_,this.user_attrs_);Dygraph.update(this.layoutOptions_,this.attrs_)};Dygraph.prototype.getColors=function(){return this.colors_};Dygraph.findPosX=function(a){var b=0;if(a.offsetParent){while(1){b+=a.offsetLeft;if(!a.offsetParent){break}a=a.offsetParent}}else{if(a.x){b+=a.x}}return b};Dygraph.findPosY=function(b){var a=0;if(b.offsetParent){while(1){a+=b.offsetTop;if(!b.offsetParent){break}b=b.offsetParent}}else{if(b.y){a+=b.y}}return a};Dygraph.prototype.createStatusMessage_=function(){var d=this.user_attrs_.labelsDiv;if(d&&null!=d&&(typeof(d)=="string"||d instanceof String)){this.user_attrs_.labelsDiv=document.getElementById(d)}if(!this.attr_("labelsDiv")){var a=this.attr_("labelsDivWidth");var c={position:"absolute",fontSize:"14px",zIndex:10,width:a+"px",top:"0px",left:(this.width_-a-2)+"px",background:"white",textAlign:"left",overflow:"hidden"};Dygraph.update(c,this.attr_("labelsDivStyles"));var e=document.createElement("div");for(var b in c){if(c.hasOwnProperty(b)){e.style[b]=c[b]}}this.graphDiv.appendChild(e);this.attrs_.labelsDiv=e}};Dygraph.prototype.createRollInterface_=function(){var f=this.attr_("showRoller")?"block":"none";var b={position:"absolute",zIndex:10,top:(this.plotter_.area.h-25)+"px",left:(this.plotter_.area.x+1)+"px",display:f};var e=document.createElement("input");e.type="text";e.size="2";e.value=this.rollPeriod_;for(var a in b){if(b.hasOwnProperty(a)){e.style[a]=b[a]}}var d=this.graphDiv;d.appendChild(e);var c=this;e.onchange=function(){c.adjustRoll(e.value)};return e};Dygraph.pageX=function(c){if(c.pageX){return(!c.pageX||c.pageX<0)?0:c.pageX}else{var d=document;var a=document.body;return c.clientX+(d.scrollLeft||a.scrollLeft)-(d.clientLeft||0)}};Dygraph.pageY=function(c){if(c.pageY){return(!c.pageY||c.pageY<0)?0:c.pageY}else{var d=document;var a=document.body;return c.clientY+(d.scrollTop||a.scrollTop)-(d.clientTop||0)}};Dygraph.prototype.createDragInterface_=function(){var o=this;var c=false;var e=false;var b=null;var a=null;var n=null;var l=null;var f=null;var m=null;var k=null;var g=0;var d=0;var j=function(p){return Dygraph.pageX(p)-g};var h=function(p){return Dygraph.pageY(p)-d};Dygraph.addEvent(this.mouseEventElement_,"mousemove",function(p){if(c){n=j(p);l=h(p);o.drawZoomRect_(b,n,f);f=n}else{if(e){n=j(p);l=h(p);o.dateWindow_[0]=m-(n/o.width_)*k;o.dateWindow_[1]=o.dateWindow_[0]+k;o.drawGraph_(o.rawData_)}}});Dygraph.addEvent(this.mouseEventElement_,"mousedown",function(p){g=Dygraph.findPosX(o.canvas_);d=Dygraph.findPosY(o.canvas_);b=j(p);a=h(p);if(p.altKey||p.shiftKey){if(!o.dateWindow_){return}e=true;k=o.dateWindow_[1]-o.dateWindow_[0];m=(b/o.width_)*k+o.dateWindow_[0]}else{c=true}});Dygraph.addEvent(document,"mouseup",function(p){if(c||e){c=false;b=null;a=null}if(e){e=false;m=null;k=null}});Dygraph.addEvent(this.mouseEventElement_,"mouseout",function(p){if(c){n=null;l=null}});Dygraph.addEvent(this.mouseEventElement_,"mouseup",function(r){if(c){c=false;n=j(r);l=h(r);var u=Math.abs(n-b);var s=Math.abs(l-a);if(u<2&&s<2&&o.lastx_!=undefined&&o.lastx_!=-1){if(o.attr_("clickCallback")!=null){o.attr_("clickCallback")(r,o.lastx_,o.selPoints_)}if(o.attr_("pointClickCallback")){var x=-1;var y=0;for(var v=0;v<o.selPoints_.length;v++){var t=o.selPoints_[v];var q=Math.pow(t.canvasx-n,2)+Math.pow(t.canvasy-l,2);if(x==-1||q<y){y=q;x=v}}var w=o.attr_("highlightCircleSize")+2;if(y<=5*5){o.attr_("pointClickCallback")(r,o.selPoints_[x])}}}if(u>=10){o.doZoom_(Math.min(b,n),Math.max(b,n))}else{o.canvas_.getContext("2d").clearRect(0,0,o.canvas_.width,o.canvas_.height)}b=null;a=null}if(e){e=false;m=null;k=null}});Dygraph.addEvent(this.mouseEventElement_,"dblclick",function(p){if(o.dateWindow_==null){return}o.dateWindow_=null;o.drawGraph_(o.rawData_);var q=o.rawData_[0][0];var r=o.rawData_[o.rawData_.length-1][0];if(o.attr_("zoomCallback")){o.attr_("zoomCallback")(q,r)}})};Dygraph.prototype.drawZoomRect_=function(c,d,b){var a=this.canvas_.getContext("2d");if(b){a.clearRect(Math.min(c,b),0,Math.abs(c-b),this.height_)}if(d&&c){a.fillStyle="rgba(128,128,128,0.33)";a.fillRect(Math.min(c,d),0,Math.abs(d-c),this.height_)}};Dygraph.prototype.doZoom_=function(d,a){var b=this.toDataCoords(d,null);var c=b[0];b=this.toDataCoords(a,null);var e=b[0];this.dateWindow_=[c,e];this.drawGraph_(this.rawData_);if(this.attr_("zoomCallback")){this.attr_("zoomCallback")(c,e)}};Dygraph.prototype.mouseMove_=function(b){var a=Dygraph.pageX(b)-Dygraph.findPosX(this.mouseEventElement_);var r=this.layout_.points;var m=-1;var j=-1;var o=1e+100;var q=-1;for(var f=0;f<r.length;f++){var h=Math.abs(r[f].canvasx-a);if(h>o){continue}o=h;q=f}if(q>=0){m=r[q].xval}if(a>r[r.length-1].canvasx){m=r[r.length-1].xval}this.selPoints_=[];var d=r.length;if(!this.attr_("stackedGraph")){for(var f=0;f<d;f++){if(r[f].xval==m){this.selPoints_.push(r[f])}}}else{var g=0;for(var f=d-1;f>=0;f--){if(r[f].xval==m){var c={};for(var e in r[f]){c[e]=r[f][e]}c.yval-=g;g+=c.yval;this.selPoints_.push(c)}}this.selPoints_.reverse()}if(this.attr_("highlightCallback")){var n=this.lastx_;if(n!==null&&m!=n){this.attr_("highlightCallback")(b,m,this.selPoints_)}}this.lastx_=m;this.updateSelection_()};Dygraph.prototype.updateSelection_=function(){var q=this.canvas_.getContext("2d");if(this.previousVerticalX_>=0){var h=0;var j=this.attr_("labels");for(var g=1;g<j.length;g++){var b=this.attr_("highlightCircleSize",j[g]);if(b>h){h=b}}var o=this.previousVerticalX_;q.clearRect(o-h-1,0,2*h+2,this.height_)}var p=function(c){return c&&!isNaN(c)};if(this.selPoints_.length>0){var d=this.selPoints_[0].canvasx;var e=this.attr_("xValueFormatter")(this.lastx_,this)+":";var f=this.attr_("yValueFormatter");var m=this.colors_.length;if(this.attr_("showLabelsOnHighlight")){for(var g=0;g<this.selPoints_.length;g++){if(!this.attr_("labelsShowZeroValues")&&this.selPoints_[g].yval==0){continue}if(!p(this.selPoints_[g].canvasy)){continue}if(this.attr_("labelsSeparateLines")){e+="<br/>"}var n=this.selPoints_[g];var l=new RGBColor(this.colors_[g%m]);var k=f(n.yval);e+=" <b><font color='"+l.toHex()+"'>"+n.name+"</font></b>:"+k}this.attr_("labelsDiv").innerHTML=e}q.save();for(var g=0;g<this.selPoints_.length;g++){if(!p(this.selPoints_[g].canvasy)){continue}var a=this.attr_("highlightCircleSize",this.selPoints_[g].name);q.beginPath();q.fillStyle=this.plotter_.colors[this.selPoints_[g].name];q.arc(d,this.selPoints_[g].canvasy,a,0,2*Math.PI,false);q.fill()}q.restore();this.previousVerticalX_=d}};Dygraph.prototype.setSelection=function(b){this.selPoints_=[];var c=0;if(b!==false){b=b-this.boundaryIds_[0][0]}if(b!==false&&b>=0){for(var a in this.layout_.datasets){if(b<this.layout_.datasets[a].length){this.selPoints_.push(this.layout_.points[c+b])}c+=this.layout_.datasets[a].length}}if(this.selPoints_.length){this.lastx_=this.selPoints_[0].xval;this.updateSelection_()}else{this.lastx_=-1;this.clearSelection()}};Dygraph.prototype.mouseOut_=function(a){if(this.attr_("unhighlightCallback")){this.attr_("unhighlightCallback")(a)}if(this.attr_("hideOverlayOnMouseOut")){this.clearSelection()}};Dygraph.prototype.clearSelection=function(){var a=this.canvas_.getContext("2d");a.clearRect(0,0,this.width_,this.height_);this.attr_("labelsDiv").innerHTML="";this.selPoints_=[];this.lastx_=-1};Dygraph.prototype.getSelection=function(){if(!this.selPoints_||this.selPoints_.length<1){return -1}for(var a=0;a<this.layout_.points.length;a++){if(this.layout_.points[a].x==this.selPoints_[0].x){return a+this.boundaryIds_[0][0]}}return -1};Dygraph.zeropad=function(a){if(a<10){return"0"+a}else{return""+a}};Dygraph.hmsString_=function(a){var c=Dygraph.zeropad;var b=new Date(a);if(b.getSeconds()){return c(b.getHours())+":"+c(b.getMinutes())+":"+c(b.getSeconds())}else{return c(b.getHours())+":"+c(b.getMinutes())}};Dygraph.dateAxisFormatter=function(b,c){if(c>=Dygraph.MONTHLY){return b.strftime("%b %y")}else{var a=b.getHours()*3600+b.getMinutes()*60+b.getSeconds()+b.getMilliseconds();if(a==0||c>=Dygraph.DAILY){return new Date(b.getTime()+3600*1000).strftime("%d%b")}else{return Dygraph.hmsString_(b.getTime())}}};Dygraph.dateString_=function(b,k){var c=Dygraph.zeropad;var g=new Date(b);var h=""+g.getFullYear();var e=c(g.getMonth()+1);var j=c(g.getDate());var f="";var a=g.getHours()*3600+g.getMinutes()*60+g.getSeconds();if(a){f=" "+Dygraph.hmsString_(b)}return h+"/"+e+"/"+j+f};Dygraph.round_=function(c,b){var a=Math.pow(10,b);return Math.round(c*a)/a};Dygraph.prototype.loadedEvent_=function(a){this.rawData_=this.parseCSV_(a);this.drawGraph_(this.rawData_)};Dygraph.prototype.months=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];Dygraph.prototype.quarters=["Jan","Apr","Jul","Oct"];Dygraph.prototype.addXTicks_=function(){var a,c;if(this.dateWindow_){a=this.dateWindow_[0];c=this.dateWindow_[1]}else{a=this.rawData_[0][0];c=this.rawData_[this.rawData_.length-1][0]}var b=this.attr_("xTicker")(a,c,this);this.layout_.updateOptions({xTicks:b})};Dygraph.SECONDLY=0;Dygraph.TWO_SECONDLY=1;Dygraph.FIVE_SECONDLY=2;Dygraph.TEN_SECONDLY=3;Dygraph.THIRTY_SECONDLY=4;Dygraph.MINUTELY=5;Dygraph.TWO_MINUTELY=6;Dygraph.FIVE_MINUTELY=7;Dygraph.TEN_MINUTELY=8;Dygraph.THIRTY_MINUTELY=9;Dygraph.HOURLY=10;Dygraph.TWO_HOURLY=11;Dygraph.SIX_HOURLY=12;Dygraph.DAILY=13;Dygraph.WEEKLY=14;Dygraph.MONTHLY=15;Dygraph.QUARTERLY=16;Dygraph.BIANNUAL=17;Dygraph.ANNUAL=18;Dygraph.DECADAL=19;Dygraph.NUM_GRANULARITIES=20;Dygraph.SHORT_SPACINGS=[];Dygraph.SHORT_SPACINGS[Dygraph.SECONDLY]=1000*1;Dygraph.SHORT_SPACINGS[Dygraph.TWO_SECONDLY]=1000*2;Dygraph.SHORT_SPACINGS[Dygraph.FIVE_SECONDLY]=1000*5;Dygraph.SHORT_SPACINGS[Dygraph.TEN_SECONDLY]=1000*10;Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_SECONDLY]=1000*30;Dygraph.SHORT_SPACINGS[Dygraph.MINUTELY]=1000*60;Dygraph.SHORT_SPACINGS[Dygraph.TWO_MINUTELY]=1000*60*2;Dygraph.SHORT_SPACINGS[Dygraph.FIVE_MINUTELY]=1000*60*5;Dygraph.SHORT_SPACINGS[Dygraph.TEN_MINUTELY]=1000*60*10;Dygraph.SHORT_SPACINGS[Dygraph.THIRTY_MINUTELY]=1000*60*30;Dygraph.SHORT_SPACINGS[Dygraph.HOURLY]=1000*3600;Dygraph.SHORT_SPACINGS[Dygraph.TWO_HOURLY]=1000*3600*2;Dygraph.SHORT_SPACINGS[Dygraph.SIX_HOURLY]=1000*3600*6;Dygraph.SHORT_SPACINGS[Dygraph.DAILY]=1000*86400;Dygraph.SHORT_SPACINGS[Dygraph.WEEKLY]=1000*604800;Dygraph.prototype.NumXTicks=function(e,b,g){if(g<Dygraph.MONTHLY){var h=Dygraph.SHORT_SPACINGS[g];return Math.floor(0.5+1*(b-e)/h)}else{var f=1;var d=12;if(g==Dygraph.QUARTERLY){d=3}if(g==Dygraph.BIANNUAL){d=2}if(g==Dygraph.ANNUAL){d=1}if(g==Dygraph.DECADAL){d=1;f=10}var c=365.2524*24*3600*1000;var a=1*(b-e)/c;return Math.floor(0.5+1*a*d/f)}};Dygraph.prototype.GetXAxis=function(m,h,a){var r=this.attr_("xAxisLabelFormatter");var y=[];if(a<Dygraph.MONTHLY){var c=Dygraph.SHORT_SPACINGS[a];var u="%d%b";var v=c/1000;var w=new Date(m);if(v<=60){var f=w.getSeconds();w.setSeconds(f-f%v)}else{w.setSeconds(0);v/=60;if(v<=60){var f=w.getMinutes();w.setMinutes(f-f%v)}else{w.setMinutes(0);v/=60;if(v<=24){var f=w.getHours();w.setHours(f-f%v)}else{w.setHours(0);v/=24;if(v==7){w.setDate(w.getDate()-w.getDay())}}}}m=w.getTime();for(var k=m;k<=h;k+=c){y.push({v:k,label:r(new Date(k),a)})}}else{var e;var n=1;if(a==Dygraph.MONTHLY){e=[0,1,2,3,4,5,6,7,8,9,10,11,12]}else{if(a==Dygraph.QUARTERLY){e=[0,3,6,9]}else{if(a==Dygraph.BIANNUAL){e=[0,6]}else{if(a==Dygraph.ANNUAL){e=[0]}else{if(a==Dygraph.DECADAL){e=[0];n=10}}}}}var q=new Date(m).getFullYear();var o=new Date(h).getFullYear();var b=Dygraph.zeropad;for(var s=q;s<=o;s++){if(s%n!=0){continue}for(var p=0;p<e.length;p++){var l=s+"/"+b(1+e[p])+"/01";var k=Date.parse(l);if(k<m||k>h){continue}y.push({v:k,label:r(new Date(k),a)})}}}return y};Dygraph.dateTicker=function(a,f,d){var b=-1;for(var e=0;e<Dygraph.NUM_GRANULARITIES;e++){var c=d.NumXTicks(a,f,e);if(d.width_/c>=d.attr_("pixelsPerXLabel")){b=e;break}}if(b>=0){return d.GetXAxis(a,f,b)}else{}};Dygraph.numericTicks=function(v,u,l){if(l.attr_("labelsKMG2")){var f=[1,2,4,8]}else{var f=[1,2,5]}var x,p,a,q;var h=l.attr_("pixelsPerYLabel");for(var t=-10;t<50;t++){if(l.attr_("labelsKMG2")){var c=Math.pow(16,t)}else{var c=Math.pow(10,t)}for(var s=0;s<f.length;s++){x=c*f[s];p=Math.floor(v/x)*x;a=Math.ceil(u/x)*x;q=Math.abs(a-p)/x;var d=l.height_/q;if(d>h){break}}if(d>h){break}}var w=[];var r;var o=[];if(l.attr_("labelsKMB")){r=1000;o=["K","M","B","T"]}if(l.attr_("labelsKMG2")){if(r){l.warn("Setting both labelsKMB and labelsKMG2. Pick one!")}r=1024;o=["k","M","G","T"]}if(p>a){x*=-1}for(var t=0;t<q;t++){var g=p+t*x;var b=Math.abs(g);var e=Dygraph.round_(g,2);if(o.length){var m=r*r*r*r;for(var s=3;s>=0;s--,m/=r){if(b>=m){e=Dygraph.round_(g/m,1)+o[s];break}}}w.push({label:e,v:g})}return w};Dygraph.prototype.addYTicks_=function(c,b){var a=Dygraph.numericTicks(c,b,this);this.layout_.updateOptions({yAxis:[c,b],yTicks:a})};Dygraph.prototype.extremeValues_=function(d){var h=null,f=null;var b=this.attr_("errorBars")||this.attr_("customBars");if(b){for(var c=0;c<d.length;c++){var g=d[c][1][0];if(!g){continue}var a=g-d[c][1][1];var e=g+d[c][1][2];if(a>g){a=g}if(e<g){e=g}if(f==null||e>f){f=e}if(h==null||a<h){h=a}}}else{for(var c=0;c<d.length;c++){var g=d[c][1];if(g===null||isNaN(g)){continue}if(f==null||g>f){f=g}if(h==null||g<h){h=g}}}return[h,f]};Dygraph.prototype.drawGraph_=function(D){var n=this.is_initial_draw_;this.is_initial_draw_=false;var z=null,y=null;this.layout_.removeAllDatasets();this.setColors_();this.attrs_.pointSize=0.5*this.attr_("highlightCircleSize");var d=[];var f=[];for(var w=D[0].length-1;w>=1;w--){if(!this.visibility()[w-1]){continue}var b=this.attr_("connectSeparatedPoints",w);var m=[];for(var u=0;u<D.length;u++){if(D[u][w]!=null||!b){var A=D[u][0];m.push([A,D[u][w]])}}m=this.rollingAverage(m,this.rollPeriod_);var p=this.attr_("errorBars")||this.attr_("customBars");if(this.dateWindow_){var F=this.dateWindow_[0];var g=this.dateWindow_[1];var q=[];var e=null,E=null;for(var t=0;t<m.length;t++){if(m[t][0]>=F&&e===null){e=t}if(m[t][0]<=g){E=t}}if(e===null){e=0}if(e>0){e--}if(E===null){E=m.length-1}if(E<m.length-1){E++}this.boundaryIds_[w-1]=[e,E];for(var t=e;t<=E;t++){q.push(m[t])}m=q}else{this.boundaryIds_[w-1]=[0,m.length-1]}var a=this.extremeValues_(m);var r=a[0];var o=a[1];if(z===null||r<z){z=r}if(y===null||o>y){y=o}if(p){for(var u=0;u<m.length;u++){val=[m[u][0],m[u][1][0],m[u][1][1],m[u][1][2]];m[u]=val}}else{if(this.attr_("stackedGraph")){var s=m.length;var B;for(var u=0;u<s;u++){var h=m[u][0];if(d[h]===undefined){d[h]=0}B=m[u][1];d[h]+=B;m[u]=[h,d[h]];if(!y||d[h]>y){y=d[h]}}}}f[w]=m}for(var w=1;w<f.length;w++){if(!this.visibility()[w-1]){continue}this.layout_.addDataset(this.attr_("labels")[w],f[w])}if(this.valueRange_!=null){this.addYTicks_(this.valueRange_[0],this.valueRange_[1]);this.displayedYRange_=this.valueRange_}else{if(this.attr_("includeZero")&&z>0){z=0}var v=y-z;if(v==0){v=y}var c=y+0.1*v;var C=z-0.1*v;if(C<0&&z>=0){C=0}if(c>0&&y<=0){c=0}if(this.attr_("includeZero")){if(y<0){c=0}if(z>0){C=0}}this.addYTicks_(C,c);this.displayedYRange_=[C,c]}this.addXTicks_();this.layout_.updateOptions({dateWindow:this.dateWindow_});this.layout_.evaluateWithError();this.plotter_.clear();this.plotter_.render();this.canvas_.getContext("2d").clearRect(0,0,this.canvas_.width,this.canvas_.height);if(this.attr_("drawCallback")!==null){this.attr_("drawCallback")(this,n)}};Dygraph.prototype.rollingAverage=function(m,d){if(m.length<2){return m}var d=Math.min(d,m.length-1);var b=[];var s=this.attr_("sigma");if(this.fractions_){var k=0;var h=0;var e=100;for(var x=0;x<m.length;x++){k+=m[x][1][0];h+=m[x][1][1];if(x-d>=0){k-=m[x-d][1][0];h-=m[x-d][1][1]}var B=m[x][0];var v=h?k/h:0;if(this.attr_("errorBars")){if(this.wilsonInterval_){if(h){var t=v<0?0:v,u=h;var A=s*Math.sqrt(t*(1-t)/u+s*s/(4*u*u));var a=1+s*s/h;var F=(t+s*s/(2*h)-A)/a;var o=(t+s*s/(2*h)+A)/a;b[x]=[B,[t*e,(t-F)*e,(o-t)*e]]}else{b[x]=[B,[0,0,0]]}}else{var z=h?s*Math.sqrt(v*(1-v)/h):1;b[x]=[B,[e*v,e*z,e*z]]}}else{b[x]=[B,e*v]}}}else{if(this.attr_("customBars")){var F=0;var C=0;var o=0;var g=0;for(var x=0;x<m.length;x++){var E=m[x][1];var l=E[1];b[x]=[m[x][0],[l,l-E[0],E[2]-l]];if(l!=null&&!isNaN(l)){F+=E[0];C+=l;o+=E[2];g+=1}if(x-d>=0){var r=m[x-d];if(r[1][1]!=null&&!isNaN(r[1][1])){F-=r[1][0];C-=r[1][1];o-=r[1][2];g-=1}}b[x]=[m[x][0],[1*C/g,1*(C-F)/g,1*(o-C)/g]]}}else{var q=Math.min(d-1,m.length-2);if(!this.attr_("errorBars")){if(d==1){return m}for(var x=0;x<m.length;x++){var c=0;var D=0;for(var w=Math.max(0,x-d+1);w<x+1;w++){var l=m[w][1];if(l==null||isNaN(l)){continue}D++;c+=m[w][1]}if(D){b[x]=[m[x][0],c/D]}else{b[x]=[m[x][0],null]}}}else{for(var x=0;x<m.length;x++){var c=0;var f=0;var D=0;for(var w=Math.max(0,x-d+1);w<x+1;w++){var l=m[w][1][0];if(l==null||isNaN(l)){continue}D++;c+=m[w][1][0];f+=Math.pow(m[w][1][1],2)}if(D){var z=Math.sqrt(f)/D;b[x]=[m[x][0],[c/D,s*z,s*z]]}else{b[x]=[m[x][0],[null,null,null]]}}}}}return b};Dygraph.dateParser=function(b,a){var c;var e;if(b.search("-")!=-1){c=b.replace("-","/","g");while(c.search("-")!=-1){c=c.replace("-","/")}e=Date.parse(c)}else{if(b.length==8){c=b.substr(0,4)+"/"+b.substr(4,2)+"/"+b.substr(6,2);e=Date.parse(c)}else{e=Date.parse(b)}}if(!e||isNaN(e)){a.error("Couldn't parse "+b+" as a date")}return e};Dygraph.prototype.detectTypeFromString_=function(b){var a=false;if(b.indexOf("-")>=0||b.indexOf("/")>=0||isNaN(parseFloat(b))){a=true}else{if(b.length==8&&b>"19700101"&&b<"20371231"){a=true}}if(a){this.attrs_.xValueFormatter=Dygraph.dateString_;this.attrs_.xValueParser=Dygraph.dateParser;this.attrs_.xTicker=Dygraph.dateTicker;this.attrs_.xAxisLabelFormatter=Dygraph.dateAxisFormatter}else{this.attrs_.xValueFormatter=function(c){return c};this.attrs_.xValueParser=function(c){return parseFloat(c)};this.attrs_.xTicker=Dygraph.numericTicks;this.attrs_.xAxisLabelFormatter=this.attrs_.xValueFormatter}};Dygraph.prototype.parseCSV_=function(h){var n=[];var r=h.split("\n");var b=this.attr_("delimiter");if(r[0].indexOf(b)==-1&&r[0].indexOf("\t")>=0){b="\t"}var a=0;if(this.labelsFromCSV_){a=1;this.attrs_.labels=r[0].split(b)}var k=function(j){var s=parseFloat(j);return isNaN(s)?null:s};var c;var p=false;var d=this.attr_("labels").length;var m=false;for(var g=a;g<r.length;g++){var q=r[g];if(q.length==0){continue}if(q[0]=="#"){continue}var f=q.split(b);if(f.length<2){continue}var l=[];if(!p){this.detectTypeFromString_(f[0]);c=this.attr_("xValueParser");p=true}l[0]=c(f[0],this);if(this.fractions_){for(var e=1;e<f.length;e++){var o=f[e].split("/");l[e]=[k(o[0]),k(o[1])]}}else{if(this.attr_("errorBars")){for(var e=1;e<f.length;e+=2){l[(e+1)/2]=[k(f[e]),k(f[e+1])]}}else{if(this.attr_("customBars")){for(var e=1;e<f.length;e++){var o=f[e].split(";");l[e]=[k(o[0]),k(o[1]),k(o[2])]}}else{for(var e=1;e<f.length;e++){l[e]=k(f[e])}}}}if(n.length>0&&l[0]<n[n.length-1][0]){m=true}n.push(l);if(l.length!=d){this.error("Number of columns in line "+g+" ("+l.length+") does not agree with number of labels ("+d+") "+q)}}if(m){this.warn("CSV is out of order; order it correctly to speed loading.");n.sort(function(s,j){return s[0]-j[0]})}return n};Dygraph.prototype.parseArray_=function(b){if(b.length==0){this.error("Can't plot empty data set");return null}if(b[0].length==0){this.error("Data set cannot contain an empty row");return null}if(this.attr_("labels")==null){this.warn("Using default labels. Set labels explicitly via 'labels' in the options parameter");this.attrs_.labels=["X"];for(var a=1;a<b[0].length;a++){this.attrs_.labels.push("Y"+a)}}if(Dygraph.isDateLike(b[0][0])){this.attrs_.xValueFormatter=Dygraph.dateString_;this.attrs_.xAxisLabelFormatter=Dygraph.dateAxisFormatter;this.attrs_.xTicker=Dygraph.dateTicker;var c=Dygraph.clone(b);for(var a=0;a<b.length;a++){if(c[a].length==0){this.error("Row "+(1+a)+" of data is empty");return null}if(c[a][0]==null||typeof(c[a][0].getTime)!="function"||isNaN(c[a][0].getTime())){this.error("x value in row "+(1+a)+" is not a Date");return null}c[a][0]=c[a][0].getTime()}return c}else{this.attrs_.xValueFormatter=function(d){return d};this.attrs_.xTicker=Dygraph.numericTicks;return b}};Dygraph.prototype.parseDataTable_=function(v){var g=v.getNumberOfColumns();var f=v.getNumberOfRows();var e=v.getColumnType(0);if(e=="date"||e=="datetime"){this.attrs_.xValueFormatter=Dygraph.dateString_;this.attrs_.xValueParser=Dygraph.dateParser;this.attrs_.xTicker=Dygraph.dateTicker;this.attrs_.xAxisLabelFormatter=Dygraph.dateAxisFormatter}else{if(e=="number"){this.attrs_.xValueFormatter=function(j){return j};this.attrs_.xValueParser=function(j){return parseFloat(j)};this.attrs_.xTicker=Dygraph.numericTicks;this.attrs_.xAxisLabelFormatter=this.attrs_.xValueFormatter}else{this.error("only 'date', 'datetime' and 'number' types are supported for column 1 of DataTable input (Got '"+e+"')");return null}}var l=[];var s={};var r=false;for(var p=1;p<g;p++){var b=v.getColumnType(p);if(b=="number"){l.push(p)}else{if(b=="string"&&this.attr_("displayAnnotations")){var q=l[l.length-1];if(!s.hasOwnProperty(q)){s[q]=[p]}else{s[q].push(p)}r=true}else{this.error("Only 'number' is supported as a dependent type with Gviz. 'string' is only supported if displayAnnotations is true")}}}var t=[v.getColumnLabel(0)];for(var p=0;p<l.length;p++){t.push(v.getColumnLabel(l[p]))}this.attrs_.labels=t;g=t.length;var u=[];var h=false;var a=[];for(var p=0;p<f;p++){var d=[];if(typeof(v.getValue(p,0))==="undefined"||v.getValue(p,0)===null){this.warn("Ignoring row "+p+" of DataTable because of undefined or null first column.");continue}if(e=="date"||e=="datetime"){d.push(v.getValue(p,0).getTime())}else{d.push(v.getValue(p,0))}if(!this.attr_("errorBars")){for(var n=0;n<l.length;n++){var c=l[n];d.push(v.getValue(p,c));if(r&&s.hasOwnProperty(c)&&v.getValue(p,s[c][0])!=null){var o={};o.series=v.getColumnLabel(c);o.xval=d[0];o.shortText=String.fromCharCode(65+a.length);o.text="";for(var m=0;m<s[c].length;m++){if(m){o.text+="\n"}o.text+=v.getValue(p,s[c][m])}a.push(o)}}}else{for(var n=0;n<g-1;n++){d.push([v.getValue(p,1+2*n),v.getValue(p,2+2*n)])}}if(u.length>0&&d[0]<u[u.length-1][0]){h=true}u.push(d)}if(h){this.warn("DataTable is out of order; order it correctly to speed loading.");u.sort(function(k,j){return k[0]-j[0]})}this.rawData_=u;if(a.length>0){this.setAnnotations(a,true)}};Dygraph.update=function(b,c){if(typeof(c)!="undefined"&&c!==null){for(var a in c){if(c.hasOwnProperty(a)){b[a]=c[a]}}}return b};Dygraph.isArrayLike=function(b){var a=typeof(b);if((a!="object"&&!(a=="function"&&typeof(b.item)=="function"))||b===null||typeof(b.length)!="number"||b.nodeType===3){return false}return true};Dygraph.isDateLike=function(a){if(typeof(a)!="object"||a===null||typeof(a.getTime)!="function"){return false}return true};Dygraph.clone=function(c){var b=[];for(var a=0;a<c.length;a++){if(Dygraph.isArrayLike(c[a])){b.push(Dygraph.clone(c[a]))}else{b.push(c[a])}}return b};Dygraph.prototype.start_=function(){if(typeof this.file_=="function"){this.loadedEvent_(this.file_())}else{if(Dygraph.isArrayLike(this.file_)){this.rawData_=this.parseArray_(this.file_);this.drawGraph_(this.rawData_)}else{if(typeof this.file_=="object"&&typeof this.file_.getColumnRange=="function"){this.parseDataTable_(this.file_);this.drawGraph_(this.rawData_)}else{if(typeof this.file_=="string"){if(this.file_.indexOf("\n")>=0){this.loadedEvent_(this.file_)}else{var b=new XMLHttpRequest();var a=this;b.onreadystatechange=function(){if(b.readyState==4){if(b.status==200){a.loadedEvent_(b.responseText)}}};b.open("GET",this.file_,true);b.send(null)}}else{this.error("Unknown data format: "+(typeof this.file_))}}}}};Dygraph.prototype.updateOptions=function(a){if(a.rollPeriod){this.rollPeriod_=a.rollPeriod}if(a.dateWindow){this.dateWindow_=a.dateWindow}if(a.valueRange){this.valueRange_=a.valueRange}Dygraph.update(this.user_attrs_,a);Dygraph.update(this.renderOptions_,a);this.labelsFromCSV_=(this.attr_("labels")==null);this.layout_.updateOptions({errorBars:this.attr_("errorBars")});if(a.file){this.file_=a.file;this.start_()}else{this.drawGraph_(this.rawData_)}};Dygraph.prototype.resize=function(b,a){if(this.resize_lock){return}this.resize_lock=true;if((b===null)!=(a===null)){this.warn("Dygraph.resize() should be called with zero parameters or two non-NULL parameters. Pretending it was zero.");b=a=null}this.maindiv_.innerHTML="";this.attrs_.labelsDiv=null;if(b){this.maindiv_.style.width=b+"px";this.maindiv_.style.height=a+"px";this.width_=b;this.height_=a}else{this.width_=this.maindiv_.offsetWidth;this.height_=this.maindiv_.offsetHeight}this.createInterface_();this.drawGraph_(this.rawData_);this.resize_lock=false};Dygraph.prototype.adjustRoll=function(a){this.rollPeriod_=a;this.drawGraph_(this.rawData_)};Dygraph.prototype.visibility=function(){if(!this.attr_("visibility")){this.attrs_.visibility=[]}while(this.attr_("visibility").length<this.rawData_[0].length-1){this.attr_("visibility").push(true)}return this.attr_("visibility")};Dygraph.prototype.setVisibility=function(b,c){var a=this.visibility();if(b<0&&b>=a.length){this.warn("invalid series number in setVisibility: "+b)}else{a[b]=c;this.drawGraph_(this.rawData_)}};Dygraph.prototype.setAnnotations=function(b,a){this.annotations_=b;this.layout_.setAnnotations(this.annotations_);if(!a){this.drawGraph_(this.rawData_)}};Dygraph.prototype.annotations=function(){return this.annotations_};Dygraph.prototype.indexFromSetName=function(a){var c=this.attr_("labels");for(var b=0;b<c.length;b++){if(c[b]==a){return b}}return null};Dygraph.addAnnotationRule=function(){if(Dygraph.addedAnnotationCSS){return}var a;if(document.styleSheets.length>0){a=document.styleSheets[0]}else{var c=document.createElement("style");c.type="text/css";document.getElementsByTagName("head")[0].appendChild(c);for(i=0;i<document.styleSheets.length;i++){if(document.styleSheets[i].disabled){continue}a=document.styleSheets[i]}}var b="border: 1px solid black; background-color: white; text-align: center;";if(a.insertRule){a.insertRule(".dygraphDefaultAnnotation { "+b+" }",0)}else{if(a.addRule){a.addRule(".dygraphDefaultAnnotation",b)}}Dygraph.addedAnnotationCSS=true};Dygraph.createCanvas=function(){var a=document.createElement("canvas");isIE=(/MSIE/.test(navigator.userAgent)&&!window.opera);if(isIE){a=G_vmlCanvasManager.initElement(a)}return a};Dygraph.GVizChart=function(a){this.container=a};Dygraph.GVizChart.prototype.draw=function(b,a){this.container.innerHTML="";this.date_graph=new Dygraph(this.container,b,a)};Dygraph.GVizChart.prototype.setSelection=function(b){var a=false;if(b.length){a=b[0].row}this.date_graph.setSelection(a)};Dygraph.GVizChart.prototype.getSelection=function(){var b=[];var c=this.date_graph.getSelection();if(c<0){return b}col=1;for(var a in this.date_graph.layout_.datasets){b.push({row:c,column:col});col++}return b};DateGraph=Dygraph;function RGBColor(g){this.ok=false;if(g.charAt(0)=="#"){g=g.substr(1,6)}g=g.replace(/ /g,"");g=g.toLowerCase();var a={aliceblue:"f0f8ff",antiquewhite:"faebd7",aqua:"00ffff",aquamarine:"7fffd4",azure:"f0ffff",beige:"f5f5dc",bisque:"ffe4c4",black:"000000",blanchedalmond:"ffebcd",blue:"0000ff",blueviolet:"8a2be2",brown:"a52a2a",burlywood:"deb887",cadetblue:"5f9ea0",chartreuse:"7fff00",chocolate:"d2691e",coral:"ff7f50",cornflowerblue:"6495ed",cornsilk:"fff8dc",crimson:"dc143c",cyan:"00ffff",darkblue:"00008b",darkcyan:"008b8b",darkgoldenrod:"b8860b",darkgray:"a9a9a9",darkgreen:"006400",darkkhaki:"bdb76b",darkmagenta:"8b008b",darkolivegreen:"556b2f",darkorange:"ff8c00",darkorchid:"9932cc",darkred:"8b0000",darksalmon:"e9967a",darkseagreen:"8fbc8f",darkslateblue:"483d8b",darkslategray:"2f4f4f",darkturquoise:"00ced1",darkviolet:"9400d3",deeppink:"ff1493",deepskyblue:"00bfff",dimgray:"696969",dodgerblue:"1e90ff",feldspar:"d19275",firebrick:"b22222",floralwhite:"fffaf0",forestgreen:"228b22",fuchsia:"ff00ff",gainsboro:"dcdcdc",ghostwhite:"f8f8ff",gold:"ffd700",goldenrod:"daa520",gray:"808080",green:"008000",greenyellow:"adff2f",honeydew:"f0fff0",hotpink:"ff69b4",indianred:"cd5c5c",indigo:"4b0082",ivory:"fffff0",khaki:"f0e68c",lavender:"e6e6fa",lavenderblush:"fff0f5",lawngreen:"7cfc00",lemonchiffon:"fffacd",lightblue:"add8e6",lightcoral:"f08080",lightcyan:"e0ffff",lightgoldenrodyellow:"fafad2",lightgrey:"d3d3d3",lightgreen:"90ee90",lightpink:"ffb6c1",lightsalmon:"ffa07a",lightseagreen:"20b2aa",lightskyblue:"87cefa",lightslateblue:"8470ff",lightslategray:"778899",lightsteelblue:"b0c4de",lightyellow:"ffffe0",lime:"00ff00",limegreen:"32cd32",linen:"faf0e6",magenta:"ff00ff",maroon:"800000",mediumaquamarine:"66cdaa",mediumblue:"0000cd",mediumorchid:"ba55d3",mediumpurple:"9370d8",mediumseagreen:"3cb371",mediumslateblue:"7b68ee",mediumspringgreen:"00fa9a",mediumturquoise:"48d1cc",mediumvioletred:"c71585",midnightblue:"191970",mintcream:"f5fffa",mistyrose:"ffe4e1",moccasin:"ffe4b5",navajowhite:"ffdead",navy:"000080",oldlace:"fdf5e6",olive:"808000",olivedrab:"6b8e23",orange:"ffa500",orangered:"ff4500",orchid:"da70d6",palegoldenrod:"eee8aa",palegreen:"98fb98",paleturquoise:"afeeee",palevioletred:"d87093",papayawhip:"ffefd5",peachpuff:"ffdab9",peru:"cd853f",pink:"ffc0cb",plum:"dda0dd",powderblue:"b0e0e6",purple:"800080",red:"ff0000",rosybrown:"bc8f8f",royalblue:"4169e1",saddlebrown:"8b4513",salmon:"fa8072",sandybrown:"f4a460",seagreen:"2e8b57",seashell:"fff5ee",sienna:"a0522d",silver:"c0c0c0",skyblue:"87ceeb",slateblue:"6a5acd",slategray:"708090",snow:"fffafa",springgreen:"00ff7f",steelblue:"4682b4",tan:"d2b48c",teal:"008080",thistle:"d8bfd8",tomato:"ff6347",turquoise:"40e0d0",violet:"ee82ee",violetred:"d02090",wheat:"f5deb3",white:"ffffff",whitesmoke:"f5f5f5",yellow:"ffff00",yellowgreen:"9acd32"};for(var c in a){if(g==c){g=a[c]}}var h=[{re:/^rgb\((\d{1,3}),\s*(\d{1,3}),\s*(\d{1,3})\)$/,example:["rgb(123, 234, 45)","rgb(255,234,245)"],process:function(j){return[parseInt(j[1]),parseInt(j[2]),parseInt(j[3])]}},{re:/^(\w{2})(\w{2})(\w{2})$/,example:["#00ff00","336699"],process:function(j){return[parseInt(j[1],16),parseInt(j[2],16),parseInt(j[3],16)]}},{re:/^(\w{1})(\w{1})(\w{1})$/,example:["#fb0","f0f"],process:function(j){return[parseInt(j[1]+j[1],16),parseInt(j[2]+j[2],16),parseInt(j[3]+j[3],16)]}}];for(var b=0;b<h.length;b++){var e=h[b].re;var d=h[b].process;var f=e.exec(g);if(f){channels=d(f);this.r=channels[0];this.g=channels[1];this.b=channels[2];this.ok=true}}this.r=(this.r<0||isNaN(this.r))?0:((this.r>255)?255:this.r);this.g=(this.g<0||isNaN(this.g))?0:((this.g>255)?255:this.g);this.b=(this.b<0||isNaN(this.b))?0:((this.b>255)?255:this.b);this.toRGB=function(){return"rgb("+this.r+", "+this.g+", "+this.b+")"};this.toHex=function(){var l=this.r.toString(16);var k=this.g.toString(16);var j=this.b.toString(16);if(l.length==1){l="0"+l}if(k.length==1){k="0"+k}if(j.length==1){j="0"+j}return"#"+l+k+j}}Date.ext={};Date.ext.util={};Date.ext.util.xPad=function(a,c,b){if(typeof(b)=="undefined"){b=10}for(;parseInt(a,10)<b&&b>1;b/=10){a=c.toString()+a}return a.toString()};Date.prototype.locale="en-GB";if(document.getElementsByTagName("html")&&document.getElementsByTagName("html")[0].lang){Date.prototype.locale=document.getElementsByTagName("html")[0].lang}Date.ext.locales={};Date.ext.locales.en={a:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],A:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],b:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],B:["January","February","March","April","May","June","July","August","September","October","November","December"],c:"%a %d %b %Y %T %Z",p:["AM","PM"],P:["am","pm"],x:"%d/%m/%y",X:"%T"};Date.ext.locales["en-US"]=Date.ext.locales.en;Date.ext.locales["en-US"].c="%a %d %b %Y %r %Z";Date.ext.locales["en-US"].x="%D";Date.ext.locales["en-US"].X="%r";Date.ext.locales["en-GB"]=Date.ext.locales.en;Date.ext.locales["en-AU"]=Date.ext.locales["en-GB"];Date.ext.formats={a:function(a){return Date.ext.locales[a.locale].a[a.getDay()]},A:function(a){return Date.ext.locales[a.locale].A[a.getDay()]},b:function(a){return Date.ext.locales[a.locale].b[a.getMonth()]},B:function(a){return Date.ext.locales[a.locale].B[a.getMonth()]},c:"toLocaleString",C:function(a){return Date.ext.util.xPad(parseInt(a.getFullYear()/100,10),0)},d:["getDate","0"],e:["getDate"," "],g:function(a){return Date.ext.util.xPad(parseInt(Date.ext.util.G(a)/100,10),0)},G:function(c){var e=c.getFullYear();var b=parseInt(Date.ext.formats.V(c),10);var a=parseInt(Date.ext.formats.W(c),10);if(a>b){e++}else{if(a===0&&b>=52){e--}}return e},H:["getHours","0"],I:function(b){var a=b.getHours()%12;return Date.ext.util.xPad(a===0?12:a,0)},j:function(c){var a=c-new Date(""+c.getFullYear()+"/1/1 GMT");a+=c.getTimezoneOffset()*60000;var b=parseInt(a/60000/60/24,10)+1;return Date.ext.util.xPad(b,0,100)},m:function(a){return Date.ext.util.xPad(a.getMonth()+1,0)},M:["getMinutes","0"],p:function(a){return Date.ext.locales[a.locale].p[a.getHours()>=12?1:0]},P:function(a){return Date.ext.locales[a.locale].P[a.getHours()>=12?1:0]},S:["getSeconds","0"],u:function(a){var b=a.getDay();return b===0?7:b},U:function(e){var a=parseInt(Date.ext.formats.j(e),10);var c=6-e.getDay();var b=parseInt((a+c)/7,10);return Date.ext.util.xPad(b,0)},V:function(e){var c=parseInt(Date.ext.formats.W(e),10);var a=(new Date(""+e.getFullYear()+"/1/1")).getDay();var b=c+(a>4||a<=1?0:1);if(b==53&&(new Date(""+e.getFullYear()+"/12/31")).getDay()<4){b=1}else{if(b===0){b=Date.ext.formats.V(new Date(""+(e.getFullYear()-1)+"/12/31"))}}return Date.ext.util.xPad(b,0)},w:"getDay",W:function(e){var a=parseInt(Date.ext.formats.j(e),10);var c=7-Date.ext.formats.u(e);var b=parseInt((a+c)/7,10);return Date.ext.util.xPad(b,0,10)},y:function(a){return Date.ext.util.xPad(a.getFullYear()%100,0)},Y:"getFullYear",z:function(c){var b=c.getTimezoneOffset();var a=Date.ext.util.xPad(parseInt(Math.abs(b/60),10),0);var e=Date.ext.util.xPad(b%60,0);return(b>0?"-":"+")+a+e},Z:function(a){return a.toString().replace(/^.*\(([^)]+)\)$/,"$1")},"%":function(a){return"%"}};Date.ext.aggregates={c:"locale",D:"%m/%d/%y",h:"%b",n:"\n",r:"%I:%M:%S %p",R:"%H:%M",t:"\t",T:"%H:%M:%S",x:"locale",X:"locale"};Date.ext.aggregates.z=Date.ext.formats.z(new Date());Date.ext.aggregates.Z=Date.ext.formats.Z(new Date());Date.ext.unsupported={};Date.prototype.strftime=function(a){if(!(this.locale in Date.ext.locales)){if(this.locale.replace(/-[a-zA-Z]+$/,"") in Date.ext.locales){this.locale=this.locale.replace(/-[a-zA-Z]+$/,"")}else{this.locale="en-GB"}}var c=this;while(a.match(/%[cDhnrRtTxXzZ]/)){a=a.replace(/%([cDhnrRtTxXzZ])/g,function(e,d){var g=Date.ext.aggregates[d];return(g=="locale"?Date.ext.locales[c.locale][d]:g)})}var b=a.replace(/%([aAbBCdegGHIjmMpPSuUVwWyY%])/g,function(e,d){var g=Date.ext.formats[d];if(typeof(g)=="string"){return c[g]()}else{if(typeof(g)=="function"){return g.call(c,c)}else{if(typeof(g)=="object"&&typeof(g[0])=="string"){return Date.ext.util.xPad(c[g[0]](),g[1])}else{return d}}}});c=null;return b}; \ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.css b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.css
deleted file mode 100644
index 063addf27..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.css
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-body {
- font-family: arial;
- font-size: 13px;
-}
-h2 {
- font-size: 16px;
- margin-bottom: .25em;
-}
-h3 {
- font-size: 13px;
- margin: 0;
-}
-input {
- margin-right: 15px;
-}
-label {
- padding-left: 2em;
- white-space: nowrap;
-}
-.forms {
- display: -webkit-box;
- -webkit-box-align: baseline;
-}
-.forms > * {
- display: block;
-}
-.forms span {
- padding: 0px 3px;
-}
-#tests-form {
- display: -webkit-box;
- -webkit-box-align: baseline;
- -webkit-box-flex: 1;
-}
-#tests-form > * {
- display: block;
-}
-#tests-input {
- display: -webkit-box;
- -webkit-box-flex: 1;
-}
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html
deleted file mode 100644
index 725bcc863..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.html
+++ /dev/null
@@ -1,39 +0,0 @@
-<!-- Copyright (C) 2011 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.
--->
-<!DOCTYPE HTML>
-<title>Chromium/WebKit Test History</title>
-<link rel="stylesheet" href="flakiness_dashboard.css"></link>
-<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="ui.js"></script>
-<script src="flakiness_dashboard.js"></script>
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
deleted file mode 100644
index 42ddf7e87..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard.js
+++ /dev/null
@@ -1,2511 +0,0 @@
-// Copyright (C) 2012 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.
-
-//////////////////////////////////////////////////////////////////////////////
-// CONSTANTS
-//////////////////////////////////////////////////////////////////////////////
-var ALL = 'ALL';
-var FORWARD = 'forward';
-var BACKWARD = 'backward';
-var GTEST_MODIFIERS = ['FLAKY', 'FAILS', 'MAYBE', 'DISABLED'];
-var TEST_URL_BASE_PATH_TRAC = 'http://trac.webkit.org/browser/trunk/LayoutTests/';
-var TEST_URL_BASE_PATH = "http://svn.webkit.org/repository/webkit/trunk/LayoutTests/";
-var EXPECTATIONS_URL_BASE_PATH = TEST_URL_BASE_PATH + "platform/";
-var TEST_RESULTS_BASE_PATH = 'http://build.chromium.org/f/chromium/layout_test_results/';
-var GPU_RESULTS_BASE_PATH = 'http://chromium-browser-gpu-tests.commondatastorage.googleapis.com/runs/'
-
-var PLATFORMS = {
- 'APPLE': {
- subPlatforms: {
- 'MAC': {
- expectationsDirectory: 'mac',
- subPlatforms: {
- 'LION': {
- expectationsDirectory: 'mac-lion',
- subPlatforms: {
- 'WK1': { fallbackPlatforms: ['APPLE_MAC_LION', 'APPLE_MAC'] },
- 'WK2': { fallbackPlatforms: ['APPLE_MAC_LION', 'APPLE_MAC', 'WK2'], expectationsDirectory: 'mac-wk2'}
- }
- },
- 'MOUNTAINLION': {
- subPlatforms: {
- 'WK1': { fallbackPlatforms: ['APPLE_MAC_MOUNTAINLION', 'APPLE_MAC'] },
- 'WK2': { fallbackPlatforms: ['APPLE_MAC_MOUNTAINLION', 'APPLE_MAC', 'WK2'], expectationsDirectory: 'mac-wk2'}
- }
- },
- }
- },
- 'WIN': {
- expectationsDirectory: 'win',
- subPlatforms: {
- 'XP': { fallbackPlatforms: ['APPLE_WIN'] },
- 'WIN7': { fallbackPlatforms: ['APPLE_WIN'] }
- }
- }
- }
- },
- 'GTK': {
- expectationsDirectory: 'gtk',
- subPlatforms: {
- 'LINUX': {
- subPlatforms: {
- 'WK1': { fallbackPlatforms: ['GTK'] },
- 'WK2': { fallbackPlatforms: ['GTK', 'WK2'], expectationsDirectory: 'gtk-wk2' }
- }
- }
- }
- },
- 'QT': {
- expectationsDirectory: 'qt',
- subPlatforms: {
- 'LINUX': { fallbackPlatforms: ['QT'] }
- }
- },
- 'EFL': {
- expectationsDirectory: 'efl',
- subPlatforms: {
- 'LINUX': {
- subPlatforms: {
- 'WK1': { fallbackPlatforms: ['EFL'], expectationsDirectory: 'efl-wk1' },
- 'WK2': { fallbackPlatforms: ['EFL', 'WK2'], expectationsDirectory: 'efl-wk2' }
- }
- }
- }
- },
- 'WK2': {
- basePlatform: true,
- expectationsDirectory: 'wk2'
- }
-};
-
-var BUILD_TYPES = {'DEBUG': 'DBG', 'RELEASE': 'RELEASE'};
-var MIN_SECONDS_FOR_SLOW_TEST = 4;
-var MIN_SECONDS_FOR_SLOW_TEST_DEBUG = 2 * MIN_SECONDS_FOR_SLOW_TEST;
-var FAIL_RESULTS = ['IMAGE', 'IMAGE+TEXT', 'TEXT', 'MISSING'];
-var CHUNK_SIZE = 25;
-var MAX_RESULTS = 1500;
-
-// FIXME: Figure out how to make this not be hard-coded.
-var VIRTUAL_SUITES = {
- 'platform/chromium/virtual/gpu/fast/canvas': 'fast/canvas',
- 'platform/chromium/virtual/gpu/canvas/philip': 'canvas/philip'
-};
-
-var resourceLoader;
-
-function generatePage(historyInstance)
-{
- if (historyInstance.crossDashboardState.useTestData)
- return;
-
- document.body.innerHTML = '<div id="loading-ui">LOADING...</div>';
- resourceLoader.showErrors();
-
- // tests expands to all tests that match the CSV list.
- // result expands to all tests that ever have the given result
- if (historyInstance.dashboardSpecificState.tests || historyInstance.dashboardSpecificState.result)
- generatePageForIndividualTests(individualTests());
- else if (historyInstance.dashboardSpecificState.expectationsUpdate)
- generatePageForExpectationsUpdate();
- else
- generatePageForBuilder(historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder());
-
- for (var builder in currentBuilders())
- processTestResultsForBuilderAsync(builder);
-
- postHeightChangedMessage();
-}
-
-function handleValidHashParameter(historyInstance, key, value)
-{
- switch(key) {
- case 'tests':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- return string.isValidName(value);
- });
- return true;
-
- case 'result':
- value = value.toUpperCase();
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- for (var result in LAYOUT_TEST_EXPECTATIONS_MAP_) {
- if (value == LAYOUT_TEST_EXPECTATIONS_MAP_[result])
- return true;
- }
- return false;
- });
- return true;
-
- case 'builder':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- return value in currentBuilders();
- });
-
- return true;
-
- case 'sortColumn':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- // Get all possible headers since the actual used set of headers
- // depends on the values in historyInstance.dashboardSpecificState, which are currently being set.
- var headers = tableHeaders(true);
- for (var i = 0; i < headers.length; i++) {
- if (value == sortColumnFromTableHeader(headers[i]))
- return true;
- }
- return value == 'test' || value == 'builder';
- });
- return true;
-
- case 'sortOrder':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- return value == FORWARD || value == BACKWARD;
- });
- return true;
-
- case 'resultsHeight':
- case 'updateIndex':
- case 'revision':
- history.validateParameter(historyInstance.dashboardSpecificState, key, Number(value),
- function() {
- return value.match(/^\d+$/);
- });
- return true;
-
- case 'showChrome':
- case 'showCorrectExpectations':
- case 'showWrongExpectations':
- case 'showExpectations':
- case 'showFlaky':
- case 'showLargeExpectations':
- case 'legacyExpectationsSemantics':
- case 'showSkipped':
- case 'showSlow':
- case 'showUnexpectedPasses':
- case 'showWontFixSkip':
- case 'expectationsUpdate':
- historyInstance.dashboardSpecificState[key] = value == 'true';
- return true;
-
- default:
- return false;
- }
-}
-
-// @param {Object} params New or modified query parameters as key: value.
-function handleQueryParameterChange(historyInstance, params)
-{
- for (key in params) {
- if (key == 'tests') {
- // Entering cross-builder view, only keep valid keys for that view.
- for (var currentKey in historyInstance.dashboardSpecificState) {
- if (isInvalidKeyForCrossBuilderView(currentKey)) {
- delete historyInstance.dashboardSpecificState[currentKey];
- }
- }
- } else if (isInvalidKeyForCrossBuilderView(key)) {
- delete historyInstance.dashboardSpecificState.tests;
- delete historyInstance.dashboardSpecificState.result;
- }
- }
-
- return true;
-}
-
-var defaultDashboardSpecificStateValues = {
- sortOrder: BACKWARD,
- sortColumn: 'flakiness',
- showExpectations: false,
- showFlaky: true,
- showLargeExpectations: false,
- legacyExpectationsSemantics: true,
- showChrome: true,
- showCorrectExpectations: false,
- showWrongExpectations: false,
- showWontFixSkip: false,
- showSlow: false,
- showSkipped: false,
- showUnexpectedPasses: false,
- expectationsUpdate: false,
- updateIndex: 0,
- resultsHeight: 300,
- revision: null,
- tests: '',
- result: '',
- builder: null
-};
-
-var DB_SPECIFIC_INVALIDATING_PARAMETERS = {
- 'tests' : 'builder',
- 'testType': 'builder',
- 'group': 'builder'
-};
-
-
-var flakinessConfig = {
- defaultStateValues: defaultDashboardSpecificStateValues,
- generatePage: generatePage,
- handleValidHashParameter: handleValidHashParameter,
- handleQueryParameterChange: handleQueryParameterChange,
- invalidatingHashParameters: DB_SPECIFIC_INVALIDATING_PARAMETERS
-};
-
-// FIXME(jparent): Eventually remove all usage of global history object.
-var g_history = new history.History(flakinessConfig);
-g_history.parseCrossDashboardParameters();
-
-//////////////////////////////////////////////////////////////////////////////
-// GLOBALS
-//////////////////////////////////////////////////////////////////////////////
-
-var g_perBuilderPlatformAndBuildType = {};
-var g_perBuilderFailures = {};
-// Map of builder to arrays of tests that are listed in the expectations file
-// but have for that builder.
-var g_perBuilderWithExpectationsButNoFailures = {};
-// Map of builder to arrays of paths that are skipped. This shows the raw
-// path used in TestExpectations rather than the test path since we
-// don't actually have any data here for skipped tests.
-var g_perBuilderSkippedPaths = {};
-// Maps test path to an array of {builder, testResults} objects.
-var g_testToResultsMap = {};
-// Tests that the user wants to update expectations for.
-var g_confirmedTests = {};
-
-function traversePlatformsTree(callback)
-{
- function traverse(platformObject, parentPlatform) {
- Object.keys(platformObject).forEach(function(platformName) {
- var platform = platformObject[platformName];
- platformName = parentPlatform ? parentPlatform + platformName : platformName;
-
- if (platform.subPlatforms)
- traverse(platform.subPlatforms, platformName + '_');
- else if (!platform.basePlatform)
- callback(platform, platformName);
- });
- }
- traverse(PLATFORMS, null);
-}
-
-function createResultsObjectForTest(test, builder)
-{
- return {
- test: test,
- builder: builder,
- // HTML for display of the results in the flakiness column
- html: '',
- flips: 0,
- slowestTime: 0,
- slowestNonTimeoutCrashTime: 0,
- meetsExpectations: true,
- isWontFixSkip: false,
- isFlaky: false,
- // Sorted string of missing expectations
- missing: '',
- // String of extra expectations (i.e. expectations that never occur).
- extra: '',
- modifiers: '',
- bugs: '',
- expectations : '',
- rawResults: '',
- // List of all the results the test actually has.
- actualResults: []
- };
-}
-
-function matchingElement(stringToMatch, elementsMap)
-{
- for (var element in elementsMap) {
- if (string.contains(stringToMatch, elementsMap[element]))
- return element;
- }
-}
-
-function determineWKPlatform(builderName, basePlatform)
-{
- var isWK2Builder = string.contains(builderName, 'WK2') || string.contains(builderName, 'WEBKIT2');
- return basePlatform + (isWK2Builder ? '_WK2' : '_WK1');
-}
-
-function determineBuilderPlatform(builderNameUpperCase)
-{
- if (string.contains(builderNameUpperCase, 'WINDOWS 7'))
- return 'APPLE_WIN_WIN7';
- if (string.contains(builderNameUpperCase, 'WINDOWS XP'))
- return 'APPLE_WIN_XP';
- if (string.contains(builderNameUpperCase, 'QT LINUX'))
- return 'QT_LINUX';
-
- if (string.contains(builderNameUpperCase, 'MOUNTAINLION'))
- return determineWKPlatform(builderNameUpperCase, 'APPLE_MAC_MOUNTAINLION');
- if (string.contains(builderNameUpperCase, 'LION'))
- return determineWKPlatform(builderNameUpperCase, 'APPLE_MAC_LION');
- if (string.contains(builderNameUpperCase, 'GTK LINUX'))
- return determineWKPlatform(builderNameUpperCase, 'GTK_LINUX');
- if (string.contains(builderNameUpperCase, 'EFL'))
- return determineWKPlatform(builderNameUpperCase, 'EFL_LINUX');
-}
-
-function platformAndBuildType(builderName)
-{
- if (!g_perBuilderPlatformAndBuildType[builderName]) {
- var builderNameUpperCase = builderName.toUpperCase();
- var platform = determineBuilderPlatform(builderNameUpperCase);
- if (!platform)
- console.error('Could not resolve platform for builder: ' + builderName);
-
- var buildType = string.contains(builderNameUpperCase, 'DEBUG') ? 'DEBUG' : 'RELEASE';
- g_perBuilderPlatformAndBuildType[builderName] = {platform: platform, buildType: buildType};
- }
- return g_perBuilderPlatformAndBuildType[builderName];
-}
-
-function isDebug(builderName)
-{
- return platformAndBuildType(builderName).buildType == 'DEBUG';
-}
-
-// Returns the expectation string for the given single character result.
-// This string should match the expectations that are put into
-// test_expectations.py.
-//
-// For example, if we start explicitly listing IMAGE result failures,
-// this function should start returning 'IMAGE'.
-function expectationsFileStringForResult(result)
-{
- // For the purposes of comparing against the expecations of a test,
- // consider simplified diff failures as just text failures since
- // the test_expectations file doesn't treat them specially.
- if (result == 'S')
- return 'TEXT';
-
- if (result == 'N')
- return '';
-
- return expectationsMap()[result];
-}
-
-var TestTrie = function(builders, resultsByBuilder)
-{
- this._trie = {};
-
- for (var builder in builders) {
- var testsForBuilder = resultsByBuilder[builder].tests;
- for (var test in testsForBuilder)
- this._addTest(test.split('/'), this._trie);
- }
-}
-
-TestTrie.prototype.forEach = function(callback, startingTriePath)
-{
- var testsTrie = this._trie;
- if (startingTriePath) {
- var splitPath = startingTriePath.split('/');
- while (splitPath.length && testsTrie)
- testsTrie = testsTrie[splitPath.shift()];
- }
-
- if (!testsTrie)
- return;
-
- function traverse(trie, triePath) {
- if (trie == true)
- callback(triePath);
- else {
- for (var member in trie)
- traverse(trie[member], triePath ? triePath + '/' + member : member);
- }
- }
- traverse(testsTrie, startingTriePath);
-}
-
-TestTrie.prototype._addTest = function(test, trie)
-{
- var rootComponent = test.shift();
- if (!test.length) {
- if (!trie[rootComponent])
- trie[rootComponent] = true;
- return;
- }
-
- if (!trie[rootComponent] || trie[rootComponent] == true)
- trie[rootComponent] = {};
- this._addTest(test, trie[rootComponent]);
-}
-
-// Map of all tests to true values. This is just so we can have the list of
-// all tests across all the builders.
-var g_allTestsTrie;
-
-function getAllTestsTrie()
-{
- if (!g_allTestsTrie)
- g_allTestsTrie = new TestTrie(currentBuilders(), g_resultsByBuilder);
-
- return g_allTestsTrie;
-}
-
-// Returns an array of tests to be displayed in the individual tests view.
-// Note that a directory can be listed as a test, so we expand that into all
-// tests in the directory.
-function individualTests()
-{
- if (g_history.dashboardSpecificState.result)
- return allTestsWithResult(g_history.dashboardSpecificState.result);
-
- if (!g_history.dashboardSpecificState.tests)
- return [];
-
- return individualTestsForSubstringList();
-}
-
-function substringList()
-{
- // Convert windows slashes to unix slashes.
- var tests = g_history.dashboardSpecificState.tests.replace(/\\/g, '/');
- var separator = string.contains(tests, ' ') ? ' ' : ',';
- var testList = tests.split(separator);
-
- if (g_history.isLayoutTestResults())
- return testList;
-
- var testListWithoutModifiers = [];
- testList.forEach(function(path) {
- GTEST_MODIFIERS.forEach(function(modifier) {
- path = path.replace('.' + modifier + '_', '.');
- });
- testListWithoutModifiers.push(path);
- });
- return testListWithoutModifiers;
-}
-
-function individualTestsForSubstringList()
-{
- var testList = substringList();
-
- // Put the tests into an object first and then move them into an array
- // as a way of deduping.
- var testsMap = {};
- for (var i = 0; i < testList.length; i++) {
- var path = testList[i];
-
- // Ignore whitespace entries as they'd match every test.
- if (path.match(/^\s*$/))
- continue;
-
- var hasAnyMatches = false;
- getAllTestsTrie().forEach(function(triePath) {
- if (string.caseInsensitiveContains(triePath, path)) {
- testsMap[triePath] = 1;
- hasAnyMatches = true;
- }
- });
-
- // If a path doesn't match any tests, then assume it's a full path
- // to a test that passes on all builders.
- if (!hasAnyMatches)
- testsMap[path] = 1;
- }
-
- var testsArray = [];
- for (var test in testsMap)
- testsArray.push(test);
- return testsArray;
-}
-
-// Returns whether this test's slowest time is above the cutoff for
-// being a slow test.
-function isSlowTest(resultsForTest)
-{
- var maxTime = isDebug(resultsForTest.builder) ? MIN_SECONDS_FOR_SLOW_TEST_DEBUG : MIN_SECONDS_FOR_SLOW_TEST;
- return resultsForTest.slowestNonTimeoutCrashTime > maxTime;
-}
-
-// Returns whether this test's slowest time is *well* below the cutoff for
-// being a slow test.
-function isFastTest(resultsForTest)
-{
- var maxTime = isDebug(resultsForTest.builder) ? MIN_SECONDS_FOR_SLOW_TEST_DEBUG : MIN_SECONDS_FOR_SLOW_TEST;
- return resultsForTest.slowestNonTimeoutCrashTime < maxTime / 2;
-}
-
-function allTestsWithResult(result)
-{
- processTestRunsForAllBuilders();
- var retVal = [];
-
- getAllTestsTrie().forEach(function(triePath) {
- for (var i = 0; i < g_testToResultsMap[triePath].length; i++) {
- if (g_testToResultsMap[triePath][i].actualResults.indexOf(result) != -1) {
- retVal.push(triePath);
- break;
- }
- }
- });
-
- return retVal;
-}
-
-
-// Adds all the tests for the given builder to the testMapToPopulate.
-function addTestsForBuilder(builder, testMapToPopulate)
-{
- var tests = g_resultsByBuilder[builder].tests;
- for (var test in tests) {
- testMapToPopulate[test] = true;
- }
-}
-
-// Map of all tests to true values by platform and build type.
-// e.g. g_allTestsByPlatformAndBuildType['XP']['DEBUG'] will have the union
-// of all tests run on the xp-debug builders.
-var g_allTestsByPlatformAndBuildType = {};
-traversePlatformsTree(function(platform, platformName) {
- g_allTestsByPlatformAndBuildType[platformName] = {};
-});
-
-// Map of all tests to true values by platform and build type.
-// e.g. g_allTestsByPlatformAndBuildType['WIN']['DEBUG'] will have the union
-// of all tests run on the win-debug builders.
-function allTestsWithSamePlatformAndBuildType(platform, buildType)
-{
- if (!g_allTestsByPlatformAndBuildType[platform][buildType]) {
- var tests = {};
- for (var thisBuilder in currentBuilders()) {
- var thisBuilderBuildInfo = platformAndBuildType(thisBuilder);
- if (thisBuilderBuildInfo.buildType == buildType && thisBuilderBuildInfo.platform == platform) {
- addTestsForBuilder(thisBuilder, tests);
- }
- }
- g_allTestsByPlatformAndBuildType[platform][buildType] = tests;
- }
-
- return g_allTestsByPlatformAndBuildType[platform][buildType];
-}
-
-function getExpectations(test, platform, buildType)
-{
- var testObject = g_allExpectations[test];
- if (!testObject)
- return null;
-
- var platformObject = testObject[platform];
- if (!platformObject)
- return null;
-
- return platformObject[buildType];
-}
-
-function filterBugs(modifiers)
-{
- var bugs = modifiers.match(/\b(Bug|webkit.org|crbug.com|code.google.com)\S*/g);
- if (!bugs)
- return {bugs: '', modifiers: modifiers};
- for (var j = 0; j < bugs.length; j++)
- modifiers = modifiers.replace(bugs[j], '');
- return {bugs: bugs.join(' '), modifiers: string.collapseWhitespace(string.trimString(modifiers))};
-}
-
-function populateExpectationsData(resultsObject)
-{
- var buildInfo = platformAndBuildType(resultsObject.builder);
- var expectations = getExpectations(resultsObject.test, buildInfo.platform, buildInfo.buildType);
- if (!expectations)
- return;
-
- resultsObject.expectations = expectations.expectations;
- var filteredModifiers = filterBugs(expectations.modifiers);
- resultsObject.modifiers = filteredModifiers.modifiers;
- resultsObject.bugs = filteredModifiers.bugs;
- resultsObject.isWontFixSkip = string.contains(expectations.modifiers, 'WONTFIX') || string.contains(expectations.modifiers, 'SKIP');
-}
-
-function platformObjectForName(platformName)
-{
- var platformsList = platformName.split("_");
- var platformObject = PLATFORMS[platformsList.shift()];
- platformsList.forEach(function(platformName) {
- platformObject = platformObject.subPlatforms[platformName];
- });
- return platformObject;
-}
-
-// Data structure to hold the processed expectations.
-// g_allExpectations[testPath][platform][buildType] gets the object that has
-// expectations and modifiers properties for this platform/buildType.
-//
-// platform and buildType both go through fallback sets of keys from most
-// specific key to least specific. For example, on Windows XP, we first
-// check the platform WIN-XP, if there's no such object, we check WIN,
-// then finally we check ALL. For build types, we check the current
-// buildType, then ALL.
-var g_allExpectations;
-
-function getParsedExpectations(data)
-{
- var expectations = [];
- var lines = data.split('\n');
- lines.forEach(function(line) {
- line = string.trimString(line);
- if (!line || string.startsWith(line, '#'))
- return;
-
- // This code mimics _tokenize_line_using_new_format() in
- // Tools/Scripts/webkitpy/layout_tests/models/test_expectations.py
- //
- // FIXME: consider doing more error checking here.
- //
- // FIXME: Clean this all up once we've fully cut over to the new syntax.
- var tokens = line.split(/\s+/)
- var parsed_bugs = [];
- var parsed_modifiers = [];
- var parsed_path;
- var parsed_expectations = [];
- var state = 'start';
-
- // This clones _configuration_tokens_list in test_expectations.py.
- // FIXME: unify with the platforms constants at the top of the file.
- var configuration_tokens = {
- 'Release': 'RELEASE',
- 'Debug': 'DEBUG',
- 'Mac': 'MAC',
- 'Win': 'WIN',
- 'Linux': 'LINUX',
- 'SnowLeopard': 'SNOWLEOPARD',
- 'Lion': 'LION',
- 'MountainLion': 'MOUNTAINLION',
- 'Win7': 'WIN7',
- 'XP': 'XP',
- 'Vista': 'VISTA',
- 'Android': 'ANDROID',
- };
-
- var expectation_tokens = {
- 'Crash': 'CRASH',
- 'Failure': 'FAIL',
- 'ImageOnlyFailure': 'IMAGE',
- 'Missing': 'MISSING',
- 'Pass': 'PASS',
- 'Rebaseline': 'REBASELINE',
- 'Skip': 'SKIP',
- 'Slow': 'SLOW',
- 'Timeout': 'TIMEOUT',
- 'WontFix': 'WONTFIX',
- };
-
-
- tokens.forEach(function(token) {
- if (token.indexOf('Bug') != -1 ||
- token.indexOf('webkit.org') != -1 ||
- token.indexOf('crbug.com') != -1 ||
- token.indexOf('code.google.com') != -1) {
- parsed_bugs.push(token);
- } else if (token == '[') {
- if (state == 'start') {
- state = 'configuration';
- } else if (state == 'name_found') {
- state = 'expectations';
- }
- } else if (token == ']') {
- if (state == 'configuration') {
- state = 'name';
- } else if (state == 'expectations') {
- state = 'done';
- }
- } else if (state == 'configuration') {
- parsed_modifiers.push(configuration_tokens[token]);
- } else if (state == 'expectations') {
- if (token == 'Rebaseline' || token == 'Skip' || token == 'Slow' || token == 'WontFix') {
- parsed_modifiers.push(token.toUpperCase());
- } else {
- parsed_expectations.push(expectation_tokens[token]);
- }
- } else if (token == '#') {
- state = 'done';
- } else if (state == 'name' || state == 'start') {
- parsed_path = token;
- state = 'name_found';
- }
- });
-
- if (!parsed_expectations.length) {
- if (parsed_modifiers.indexOf('Slow') == -1) {
- parsed_modifiers.push('Skip');
- parsed_expectations = ['Pass'];
- }
- }
-
- // FIXME: Should we include line number and comment lines here?
- expectations.push({
- modifiers: parsed_bugs.concat(parsed_modifiers).join(' '),
- path: parsed_path,
- expectations: parsed_expectations.join(' '),
- });
- });
- return expectations;
-}
-
-
-function addTestToAllExpectationsForPlatform(test, platformName, expectations, modifiers)
-{
- if (!g_allExpectations[test])
- g_allExpectations[test] = {};
-
- if (!g_allExpectations[test][platformName])
- g_allExpectations[test][platformName] = {};
-
- var allBuildTypes = [];
- modifiers.split(' ').forEach(function(modifier) {
- if (modifier in BUILD_TYPES) {
- allBuildTypes.push(modifier);
- return;
- }
- });
- if (!allBuildTypes.length)
- allBuildTypes = Object.keys(BUILD_TYPES);
-
- allBuildTypes.forEach(function(buildType) {
- g_allExpectations[test][platformName][buildType] = {modifiers: modifiers, expectations: expectations};
- });
-}
-
-function processExpectationsForPlatform(platformObject, platformName, expectationsArray)
-{
- if (!g_allExpectations)
- g_allExpectations = {};
-
- if (!expectationsArray)
- return;
-
- // Sort the array to hit more specific paths last. More specific
- // paths (e.g. foo/bar/baz.html) override entries for less-specific ones (e.g. foo/bar).
- expectationsArray.sort(alphanumericCompare('path'));
-
- for (var i = 0; i < expectationsArray.length; i++) {
- var path = expectationsArray[i].path;
- var modifiers = expectationsArray[i].modifiers;
- var expectations = expectationsArray[i].expectations;
-
- getAllTestsTrie().forEach(function(triePath) {
- addTestToAllExpectationsForPlatform(triePath, platformName, expectations, modifiers);
- }, path);
- }
-}
-
-function processExpectations()
-{
- // FIXME: An expectations-by-platform object should be passed into this function rather than checking
- // for a global object. That way this function can be better tested and meaningful errors can
- // be reported when expectations for a given platform are not found in that object.
- if (!g_expectationsByPlatform)
- return;
-
- traversePlatformsTree(function(platform, platformName) {
- if (platform.fallbackPlatforms) {
- platform.fallbackPlatforms.forEach(function(fallbackPlatform) {
- if (fallbackPlatform in g_expectationsByPlatform)
- processExpectationsForPlatform(platform, platformName, g_expectationsByPlatform[fallbackPlatform]);
- });
- }
-
- if (platformName in g_expectationsByPlatform)
- processExpectationsForPlatform(platform, platformName, g_expectationsByPlatform[platformName]);
- });
-
- g_expectationsByPlatform = undefined;
-}
-
-function processMissingTestsWithExpectations(builder, platform, buildType)
-{
- var noFailures = [];
- var skipped = [];
-
- var allTestsForPlatformAndBuildType = allTestsWithSamePlatformAndBuildType(platform, buildType);
- for (var test in g_allExpectations) {
- var expectations = getExpectations(test, platform, buildType);
-
- if (!expectations)
- continue;
-
- // Test has expectations, but no result in the builders results.
- // This means it's either SKIP or passes on all builds.
- if (!allTestsForPlatformAndBuildType[test] && !string.contains(expectations.modifiers, 'WONTFIX')) {
- if (string.contains(expectations.modifiers, 'SKIP'))
- skipped.push(test);
- else if (!expectations.expectations.match(/^\s*PASS\s*$/)) {
- // Don't show tests expected to always pass. This is used in ways like
- // the following:
- // foo/bar = FAIL
- // foo/bar/baz.html = PASS
- noFailures.push({test: test, expectations: expectations.expectations, modifiers: expectations.modifiers});
- }
- }
- }
-
- g_perBuilderSkippedPaths[builder] = skipped.sort();
- g_perBuilderWithExpectationsButNoFailures[builder] = noFailures.sort();
-}
-
-function processTestResultsForBuilderAsync(builder)
-{
- setTimeout(function() { processTestRunsForBuilder(builder); }, 0);
-}
-
-function processTestRunsForAllBuilders()
-{
- for (var builder in currentBuilders())
- processTestRunsForBuilder(builder);
-}
-
-function processTestRunsForBuilder(builderName)
-{
- if (g_perBuilderFailures[builderName])
- return;
-
- if (!g_resultsByBuilder[builderName]) {
- console.error('No tests found for ' + builderName);
- g_perBuilderFailures[builderName] = [];
- return;
- }
-
- processExpectations();
-
- var buildInfo = platformAndBuildType(builderName);
- var platform = buildInfo.platform;
- var buildType = buildInfo.buildType;
- processMissingTestsWithExpectations(builderName, platform, buildType);
-
- var failures = [];
- var allTestsForThisBuilder = g_resultsByBuilder[builderName].tests;
-
- for (var test in allTestsForThisBuilder) {
- var resultsForTest = createResultsObjectForTest(test, builderName);
- populateExpectationsData(resultsForTest);
-
- var rawTest = g_resultsByBuilder[builderName].tests[test];
- resultsForTest.rawTimes = rawTest.times;
- var rawResults = rawTest.results;
- resultsForTest.rawResults = rawResults;
-
- // FIXME: Switch to resultsByBuild
- var times = resultsForTest.rawTimes;
- var numTimesSeen = 0;
- var numResultsSeen = 0;
- var resultsIndex = 0;
- var currentResult;
- for (var i = 0; i < times.length; i++) {
- numTimesSeen += times[i][RLE.LENGTH];
-
- while (rawResults[resultsIndex] && numTimesSeen > (numResultsSeen + rawResults[resultsIndex][RLE.LENGTH])) {
- numResultsSeen += rawResults[resultsIndex][RLE.LENGTH];
- resultsIndex++;
- }
-
- if (rawResults && rawResults[resultsIndex])
- currentResult = rawResults[resultsIndex][RLE.VALUE];
-
- var time = times[i][RLE.VALUE]
-
- // Ignore times for crashing/timeout runs for the sake of seeing if
- // a test should be marked slow.
- if (currentResult != 'C' && currentResult != 'T')
- resultsForTest.slowestNonTimeoutCrashTime = Math.max(resultsForTest.slowestNonTimeoutCrashTime, time);
- resultsForTest.slowestTime = Math.max(resultsForTest.slowestTime, time);
- }
-
- processMissingAndExtraExpectations(resultsForTest);
- failures.push(resultsForTest);
-
- if (!g_testToResultsMap[test])
- g_testToResultsMap[test] = [];
- g_testToResultsMap[test].push(resultsForTest);
- }
-
- g_perBuilderFailures[builderName] = failures;
-}
-
-function processMissingAndExtraExpectations(resultsForTest)
-{
- // Heuristic for determining whether expectations apply to a given test:
- // -If a test result happens < MIN_RUNS_FOR_FLAKE, then consider it a flaky
- // result and include it in the list of expected results.
- // -Otherwise, grab the first contiguous set of runs with the same result
- // for >= MIN_RUNS_FOR_FLAKE and ignore all following runs >=
- // MIN_RUNS_FOR_FLAKE.
- // This lets us rule out common cases of a test changing expectations for
- // a few runs, then being fixed or otherwise modified in a non-flaky way.
- var rawResults = resultsForTest.rawResults;
-
- // If the first result is no-data that means the test is skipped or is
- // being run on a different builder (e.g. moved from one shard to another).
- // Ignore these results since we have no real data about what's going on.
- if (rawResults[0][RLE.VALUE] == 'N')
- return;
-
- // Only consider flake if it doesn't happen twice in a row.
- var MIN_RUNS_FOR_FLAKE = 2;
- var resultsMap = {}
- var numResultsSeen = 0;
- var haveSeenNonFlakeResult = false;
- var numRealResults = 0;
-
- var seenResults = {};
- for (var i = 0; i < rawResults.length; i++) {
- var numResults = rawResults[i][RLE.LENGTH];
- numResultsSeen += numResults;
-
- var result = rawResults[i][RLE.VALUE];
-
- var hasMinRuns = numResults >= MIN_RUNS_FOR_FLAKE;
- if (haveSeenNonFlakeResult && hasMinRuns)
- continue;
- else if (hasMinRuns)
- haveSeenNonFlakeResult = true;
- else if (!seenResults[result]) {
- // Only consider a short-lived result if we've seen it more than once.
- // Otherwise, we include lots of false-positives due to tests that fail
- // for a couple runs and then start passing.
- seenResults[result] = true;
- continue;
- }
-
- var expectation = expectationsFileStringForResult(result);
- resultsMap[expectation] = true;
- numRealResults++;
- }
-
- resultsForTest.flips = i - 1;
- resultsForTest.isFlaky = numRealResults > 1;
-
- var missingExpectations = [];
- var extraExpectations = [];
-
- if (g_history.isLayoutTestResults()) {
- var expectationsArray = resultsForTest.expectations ? resultsForTest.expectations.split(' ') : [];
- extraExpectations = expectationsArray.filter(
- function(element) {
- // FIXME: Once all the FAIL lines are removed from
- // TestExpectations, delete all the legacyExpectationsSemantics
- // code.
- if (g_history.dashboardSpecificState.legacyExpectationsSemantics) {
- if (element == 'FAIL') {
- for (var i = 0; i < FAIL_RESULTS.length; i++) {
- if (resultsMap[FAIL_RESULTS[i]])
- return false;
- }
- return true;
- }
- }
-
- return element && !resultsMap[element] && !string.contains(element, 'BUG');
- });
-
- for (var result in resultsMap) {
- resultsForTest.actualResults.push(result);
- var hasExpectation = false;
- for (var i = 0; i < expectationsArray.length; i++) {
- var expectation = expectationsArray[i];
- // FIXME: Once all the FAIL lines are removed from
- // TestExpectations, delete all the legacyExpectationsSemantics
- // code.
- if (g_history.dashboardSpecificState.legacyExpectationsSemantics) {
- if (expectation == 'FAIL') {
- for (var j = 0; j < FAIL_RESULTS.length; j++) {
- if (result == FAIL_RESULTS[j]) {
- hasExpectation = true;
- break;
- }
- }
- }
- }
-
- if (result == expectation)
- hasExpectation = true;
-
- if (hasExpectation)
- break;
- }
- // If we have no expectations for a test and it only passes, then don't
- // list PASS as a missing expectation. We only want to list PASS if it
- // flaky passes, so there would be other expectations.
- if (!hasExpectation && !(!expectationsArray.length && result == 'PASS' && numRealResults == 1))
- missingExpectations.push(result);
- }
-
- // Only highlight tests that take > 2 seconds as needing to be marked as
- // slow. There are too many tests that take ~2 seconds every couple
- // hundred runs. It's not worth the manual maintenance effort.
- // Also, if a test times out, then it should not be marked as slow.
- var minTimeForNeedsSlow = isDebug(resultsForTest.builder) ? 2 : 1;
- if (isSlowTest(resultsForTest) && !resultsMap['TIMEOUT'] && (!resultsForTest.modifiers || !string.contains(resultsForTest.modifiers, 'SLOW')))
- missingExpectations.push('SLOW');
- else if (isFastTest(resultsForTest) && resultsForTest.modifiers && string.contains(resultsForTest.modifiers, 'SLOW'))
- extraExpectations.push('SLOW');
-
- // If there are no missing results or modifiers besides build
- // type, platform, or bug and the expectations are all extra
- // that is, extraExpectations - expectations = PASS,
- // include PASS as extra, since that means this line in
- // test_expectations can be deleted..
- if (!missingExpectations.length && !(resultsForTest.modifiers && realModifiers(resultsForTest.modifiers))) {
- var extraPlusPass = extraExpectations.concat(['PASS']);
- if (extraPlusPass.sort().toString() == expectationsArray.slice(0).sort().toString())
- extraExpectations.push('PASS');
- }
-
- }
-
- resultsForTest.meetsExpectations = !missingExpectations.length && !extraExpectations.length;
- resultsForTest.missing = missingExpectations.sort().join(' ');
- resultsForTest.extra = extraExpectations.sort().join(' ');
-}
-
-
-var BUG_URL_PREFIX = '<a href="http://';
-var BUG_URL_POSTFIX = '/$1">crbug.com/$1</a> ';
-var WEBKIT_BUG_URL_POSTFIX = '/$1">webkit.org/b/$1</a> ';
-var INTERNAL_BUG_REPLACE_VALUE = BUG_URL_PREFIX + 'b' + BUG_URL_POSTFIX;
-var EXTERNAL_BUG_REPLACE_VALUE = BUG_URL_PREFIX + 'crbug.com' + BUG_URL_POSTFIX;
-var WEBKIT_BUG_REPLACE_VALUE = BUG_URL_PREFIX + 'webkit.org/b' + WEBKIT_BUG_URL_POSTFIX;
-
-function htmlForBugs(bugs)
-{
- bugs = bugs.replace(/crbug.com\/(\d+)(\ |$)/g, EXTERNAL_BUG_REPLACE_VALUE);
- bugs = bugs.replace(/webkit.org\/b\/(\d+)(\ |$)/g, WEBKIT_BUG_REPLACE_VALUE);
- return bugs;
-}
-
-function linkHTMLToOpenWindow(url, text)
-{
- return '<a href="' + url + '" target="_blank">' + text + '</a>';
-}
-
-// FIXME: replaced with ui.html.chromiumRevisionLink/ui.html.webKitRevisionLink
-function createBlameListHTML(revisions, index, urlBase, separator, repo)
-{
- var thisRevision = revisions[index];
- if (!thisRevision)
- return '';
-
- var previousRevision = revisions[index + 1];
- if (previousRevision && previousRevision != thisRevision) {
- previousRevision++;
- return linkHTMLToOpenWindow(urlBase + thisRevision + separator + previousRevision,
- repo + ' blamelist r' + previousRevision + ':r' + thisRevision);
- } else
- return 'At ' + repo + ' revision: ' + thisRevision;
-}
-
-// Returns whether the result for index'th result for testName on builder was
-// a failure.
-function isFailure(builder, testName, index)
-{
- var currentIndex = 0;
- var rawResults = g_resultsByBuilder[builder].tests[testName].results;
- for (var i = 0; i < rawResults.length; i++) {
- currentIndex += rawResults[i][RLE.LENGTH];
- if (currentIndex > index)
- return isFailingResult(rawResults[i][RLE.VALUE]);
- }
- console.error('Index exceeds number of results: ' + index);
-}
-
-// Returns an array of indexes for all builds where this test failed.
-function indexesForFailures(builder, testName)
-{
- var rawResults = g_resultsByBuilder[builder].tests[testName].results;
- var buildNumbers = g_resultsByBuilder[builder].buildNumbers;
- var index = 0;
- var failures = [];
- for (var i = 0; i < rawResults.length; i++) {
- var numResults = rawResults[i][RLE.LENGTH];
- if (isFailingResult(rawResults[i][RLE.VALUE])) {
- for (var j = 0; j < numResults; j++)
- failures.push(index + j);
- }
- index += numResults;
- }
- return failures;
-}
-
-// Returns the path to the failure log for this non-webkit test.
-function pathToFailureLog(testName)
-{
- return '/steps/' + g_history.crossDashboardState.testType + '/logs/' + testName.split('.')[1]
-}
-
-function showPopupForBuild(e, builder, index, opt_testName)
-{
- var html = '';
-
- var time = g_resultsByBuilder[builder].secondsSinceEpoch[index];
- if (time) {
- var date = new Date(time * 1000);
- html += date.toLocaleDateString() + ' ' + date.toLocaleTimeString();
- }
-
- var buildNumber = g_resultsByBuilder[builder].buildNumbers[index];
- var master = builderMaster(builder);
- var buildBasePath = master.logPath(builder, buildNumber);
-
- html += '<ul><li>' + linkHTMLToOpenWindow(buildBasePath, 'Build log') +
- '</li><li>' +
- createBlameListHTML(g_resultsByBuilder[builder].webkitRevision, index,
- 'http://trac.webkit.org/log/?verbose=on&rev=', '&stop_rev=',
- 'WebKit') +
- '</li>';
-
- if (master.name == WEBKIT_BUILDER_MASTER) {
- var revision = g_resultsByBuilder[builder].webkitRevision[index];
- html += '<li><span class=link onclick="g_history.setQueryParameter(\'revision\',' +
- revision + ')">Show results for WebKit r' + revision +
- '</span></li>';
- } else {
- html += '<li>' +
- createBlameListHTML(g_resultsByBuilder[builder].chromeRevision, index,
- 'http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&mode=html&range=', ':', 'Chrome') +
- '</li>';
-
- var chromeRevision = g_resultsByBuilder[builder].chromeRevision[index];
- if (chromeRevision && g_history.isLayoutTestResults()) {
- html += '<li><a href="' + TEST_RESULTS_BASE_PATH + currentBuilders()[builder] +
- '/' + chromeRevision + '/layout-test-results.zip">layout-test-results.zip</a></li>';
- }
- }
-
- if (!g_history.isLayoutTestResults() && opt_testName && isFailure(builder, opt_testName, index))
- html += '<li>' + linkHTMLToOpenWindow(buildBasePath + pathToFailureLog(opt_testName), 'Failure log') + '</li>';
-
- html += '</ul>';
- ui.popup.show(e.target, html);
-}
-
-function htmlForTestResults(test)
-{
- var html = '';
- var results = test.rawResults.concat();
- var times = test.rawTimes.concat();
- var builder = test.builder;
- var master = builderMaster(builder);
- var buildNumbers = g_resultsByBuilder[builder].buildNumbers;
-
- var indexToReplaceCurrentResult = -1;
- var indexToReplaceCurrentTime = -1;
- var currentResultArray, currentTimeArray, currentResult, innerHTML, resultString;
- for (var i = 0; i < buildNumbers.length; i++) {
- if (i > indexToReplaceCurrentResult) {
- currentResultArray = results.shift();
- if (currentResultArray) {
- currentResult = currentResultArray[RLE.VALUE];
- // Treat simplified diff failures as just text failures.
- if (currentResult == 'S')
- currentResult = 'F';
- indexToReplaceCurrentResult += currentResultArray[RLE.LENGTH];
- } else {
- currentResult = 'N';
- indexToReplaceCurrentResult += buildNumbers.length;
- }
- resultString = expectationsFileStringForResult(currentResult);
- }
-
- if (i > indexToReplaceCurrentTime) {
- currentTimeArray = times.shift();
- var currentTime = 0;
- if (currentResultArray) {
- currentTime = currentTimeArray[RLE.VALUE];
- indexToReplaceCurrentTime += currentTimeArray[RLE.LENGTH];
- } else
- indexToReplaceCurrentTime += buildNumbers.length;
-
- innerHTML = currentTime || '&nbsp;';
- }
-
- var extraClassNames = '';
- var webkitRevision = g_resultsByBuilder[builder].webkitRevision;
- var isWebkitMerge = webkitRevision[i + 1] && webkitRevision[i] != webkitRevision[i + 1];
- if (isWebkitMerge && master.name != WEBKIT_BUILDER_MASTER)
- extraClassNames += ' merge';
-
- html += '<td title="' + (resultString || 'NO DATA') + '. Click for more info." class="results ' + currentResult +
- extraClassNames + '" onclick=\'showPopupForBuild(event, "' + builder + '",' + i + ',"' + test.test + '")\'>' + innerHTML;
- }
- return html;
-}
-
-function htmlForTestsWithExpectationsButNoFailures(builder)
-{
- var tests = g_perBuilderWithExpectationsButNoFailures[builder];
- var skippedPaths = g_perBuilderSkippedPaths[builder];
- var showUnexpectedPassesLink = linkHTMLToToggleState('showUnexpectedPasses', 'tests that have not failed in last ' + g_resultsByBuilder[builder].buildNumbers.length + ' runs');
- var showSkippedLink = linkHTMLToToggleState('showSkipped', 'skipped tests in TestExpectations');
-
- var html = '';
- if (g_history.isLayoutTestResults() && (tests.length || skippedPaths.length)) {
- var buildInfo = platformAndBuildType(builder);
- html += '<h2 style="display:inline-block">Expectations for ' + buildInfo.platform + '-' + buildInfo.buildType + '</h2> ';
- if (!g_history.dashboardSpecificState.showUnexpectedPasses && tests.length)
- html += showUnexpectedPassesLink;
- html += ' ';
- if (!g_history.dashboardSpecificState.showSkipped && skippedPaths.length)
- html += showSkippedLink;
- }
-
- var open = '<div onclick="selectContents(this)">';
-
- if (g_history.dashboardSpecificState.showUnexpectedPasses && tests.length) {
- html += '<div id="passing-tests">' + showUnexpectedPassesLink;
- for (var i = 0; i < tests.length; i++)
- html += open + tests[i].test + '</div>';
- html += '</div>';
- }
-
- if (g_history.dashboardSpecificState.showSkipped && skippedPaths.length)
- html += '<div id="skipped-tests">' + showSkippedLink + open + skippedPaths.join('</div>' + open) + '</div></div>';
- return html + '<br>';
-}
-
-// Returns whether we should exclude test results from the test table.
-function shouldHideTest(testResult)
-{
- // For non-layout tests, we always show everything.
- if (!g_history.isLayoutTestResults())
- return false;
-
- if (testResult.isWontFixSkip)
- return !g_history.dashboardSpecificState.showWontFixSkip;
-
- if (testResult.isFlaky)
- return !g_history.dashboardSpecificState.showFlaky;
-
- if (isSlowTest(testResult))
- return !g_history.dashboardSpecificState.showSlow;
-
- if (testResult.meetsExpectations)
- return !g_history.dashboardSpecificState.showCorrectExpectations;
-
- return !g_history.dashboardSpecificState.showWrongExpectations;
-}
-
-// Sets the browser's selection to the element's contents.
-function selectContents(element)
-{
- window.getSelection().selectAllChildren(element);
-}
-
-function createBugHTML(test)
-{
- var symptom = test.isFlaky ? 'flaky' : 'failing';
- var title = encodeURIComponent('Layout Test ' + test.test + ' is ' + symptom);
- var description = encodeURIComponent('The following layout test is ' + symptom + ' on ' +
- '[insert platform]\n\n' + test.test + '\n\nProbable cause:\n\n' +
- '[insert probable cause]');
-
- var component = encodeURIComponent('Tools / Tests');
- url = 'https://bugs.webkit.org/enter_bug.cgi?assigned_to=webkit-unassigned%40lists.webkit.org&product=WebKit&form_name=enter_bug&component=' + component + '&short_desc=' + title + '&comment=' + description;
- return '<a href="' + url + '" class="file-bug">FILE BUG</a>';
-}
-
-function isCrossBuilderView()
-{
- return g_history.dashboardSpecificState.tests || g_history.dashboardSpecificState.result || g_history.dashboardSpecificState.expectationsUpdate;
-}
-
-function tableHeaders(opt_getAll)
-{
- var headers = [];
- if (isCrossBuilderView() || opt_getAll)
- headers.push('builder');
-
- if (!isCrossBuilderView() || opt_getAll)
- headers.push('test');
-
- if (g_history.isLayoutTestResults() || opt_getAll)
- headers.push('bugs', 'modifiers', 'expectations');
-
- headers.push('slowest run', 'flakiness (numbers are runtimes in seconds)');
- return headers;
-}
-
-function htmlForSingleTestRow(test)
-{
- if (!isCrossBuilderView() && shouldHideTest(test)) {
- // The innerHTML call is considerably faster if we exclude the rows for
- // items we're not showing than if we hide them using display:none.
- // For the crossBuilderView, we want to show all rows the user is
- // explicitly listing tests to view.
- return '';
- }
-
- var headers = tableHeaders();
- var html = '';
- for (var i = 0; i < headers.length; i++) {
- var header = headers[i];
- if (string.startsWith(header, 'test') || string.startsWith(header, 'builder')) {
- // If isCrossBuilderView() is true, we're just viewing a single test
- // with results for many builders, so the first column is builder names
- // instead of test paths.
- var testCellClassName = 'test-link' + (isCrossBuilderView() ? ' builder-name' : '');
- var testCellHTML = isCrossBuilderView() ? test.builder : '<span class="link" onclick="g_history.setQueryParameter(\'tests\',\'' + test.test +'\');">' + test.test + '</span>';
-
- html += '<tr><td class="' + testCellClassName + '">' + testCellHTML;
- } else if (string.startsWith(header, 'bugs'))
- html += '<td class=options-container>' + (test.bugs ? htmlForBugs(test.bugs) : createBugHTML(test));
- else if (string.startsWith(header, 'modifiers'))
- html += '<td class=options-container>' + test.modifiers;
- else if (string.startsWith(header, 'expectations'))
- html += '<td class=options-container>' + test.expectations;
- else if (string.startsWith(header, 'slowest'))
- html += '<td>' + (test.slowestTime ? test.slowestTime + 's' : '');
- else if (string.startsWith(header, 'flakiness'))
- html += htmlForTestResults(test);
- }
- return html;
-}
-
-function sortColumnFromTableHeader(headerText)
-{
- return headerText.split(' ', 1)[0];
-}
-
-function htmlForTableColumnHeader(headerName, opt_fillColSpan)
-{
- // Use the first word of the header title as the sortkey
- var thisSortValue = sortColumnFromTableHeader(headerName);
- var arrowHTML = thisSortValue == g_history.dashboardSpecificState.sortColumn ?
- '<span class=' + g_history.dashboardSpecificState.sortOrder + '>' + (g_history.dashboardSpecificState.sortOrder == FORWARD ? '&uarr;' : '&darr;' ) + '</span>' : '';
- return '<th sortValue=' + thisSortValue +
- // Extend last th through all the rest of the columns.
- (opt_fillColSpan ? ' colspan=10000' : '') +
- // Extra span here is so flex boxing actually centers.
- // There's probably a better way to do this with CSS only though.
- '><div class=table-header-content><span></span>' + arrowHTML +
- '<span class=header-text>' + headerName + '</span>' + arrowHTML + '</div></th>';
-}
-
-function htmlForTestTable(rowsHTML, opt_excludeHeaders)
-{
- var html = '<table class=test-table>';
- if (!opt_excludeHeaders) {
- html += '<thead><tr>';
- var headers = tableHeaders();
- for (var i = 0; i < headers.length; i++)
- html += htmlForTableColumnHeader(headers[i], i == headers.length - 1);
- html += '</tr></thead>';
- }
- return html + '<tbody>' + rowsHTML + '</tbody></table>';
-}
-
-function appendHTML(html)
-{
- // InnerHTML to a div that's not in the document. This is
- // ~300ms faster in Safari 4 and Chrome 4 on mac.
- var div = document.createElement('div');
- div.innerHTML = html;
- document.body.appendChild(div);
- postHeightChangedMessage();
-}
-
-function alphanumericCompare(column, reverse)
-{
- return reversibleCompareFunction(function(a, b) {
- // Put null entries at the bottom
- var a = a[column] ? String(a[column]) : 'z';
- var b = b[column] ? String(b[column]) : 'z';
-
- if (a < b)
- return -1;
- else if (a == b)
- return 0;
- else
- return 1;
- }, reverse);
-}
-
-function numericSort(column, reverse)
-{
- return reversibleCompareFunction(function(a, b) {
- a = parseFloat(a[column]);
- b = parseFloat(b[column]);
- return a - b;
- }, reverse);
-}
-
-function reversibleCompareFunction(compare, reverse)
-{
- return function(a, b) {
- return compare(reverse ? b : a, reverse ? a : b);
- };
-}
-
-function changeSort(e)
-{
- var target = e.currentTarget;
- e.preventDefault();
-
- var sortValue = target.getAttribute('sortValue');
- while (target && target.tagName != 'TABLE')
- target = target.parentNode;
-
- var sort = 'sortColumn';
- var orderKey = 'sortOrder';
- if (sortValue == g_history.dashboardSpecificState[sort] && g_history.dashboardSpecificState[orderKey] == FORWARD)
- order = BACKWARD;
- else
- order = FORWARD;
-
- g_history.setQueryParameter(sort, sortValue, orderKey, order);
-}
-
-function sortTests(tests, column, order)
-{
- var resultsProperty, sortFunctionGetter;
- if (column == 'flakiness') {
- sortFunctionGetter = numericSort;
- resultsProperty = 'flips';
- } else if (column == 'slowest') {
- sortFunctionGetter = numericSort;
- resultsProperty = 'slowestTime';
- } else {
- sortFunctionGetter = alphanumericCompare;
- resultsProperty = column;
- }
-
- tests.sort(sortFunctionGetter(resultsProperty, order == BACKWARD));
-}
-
-// Sorts a space separated expectations string in alphanumeric order.
-// @param {string} str The expectations string.
-// @return {string} The sorted string.
-function sortExpectationsString(str)
-{
- return str.split(' ').sort().join(' ');
-}
-
-function addUpdate(testsNeedingUpdate, test, builderName, missing, extra)
-{
- if (!testsNeedingUpdate[test])
- testsNeedingUpdate[test] = {};
-
- var buildInfo = platformAndBuildType(builderName);
- var builder = buildInfo.platform + ' ' + buildInfo.buildType;
- if (!testsNeedingUpdate[test][builder])
- testsNeedingUpdate[test][builder] = {};
-
- if (missing)
- testsNeedingUpdate[test][builder].missing = sortExpectationsString(missing);
-
- if (extra)
- testsNeedingUpdate[test][builder].extra = sortExpectationsString(extra);
-}
-
-
-// From a string of modifiers, returns a string of modifiers that
-// are for real result changes, like SLOW, and excludes modifiers
-// that specificy things like platform, build_type, bug.
-// @param {string} modifierString String containing all modifiers.
-// @return {string} String containing only modifiers that effect the results.
-function realModifiers(modifierString)
-{
- var modifiers = modifierString.split(' ');;
- return modifiers.filter(function(modifier) {
- return !(modifier in BUILD_TYPES || string.startsWith(modifier, 'BUG'));
- }).join(' ');
-}
-
-function generatePageForExpectationsUpdate()
-{
- // Always show all runs when auto-updating expectations.
- if (!g_history.crossDashboardState.showAllRuns)
- g_history.setQueryParameter('showAllRuns', true);
-
- processTestRunsForAllBuilders();
- var testsNeedingUpdate = {};
- for (var test in g_testToResultsMap) {
- var results = g_testToResultsMap[test];
- for (var i = 0; i < results.length; i++) {
- var thisResult = results[i];
-
- if (!thisResult.missing && !thisResult.extra)
- continue;
-
- var allPassesOrNoDatas = thisResult.rawResults.filter(function (x) { return x[1] != "P" && x[1] != "N"; }).length == 0;
-
- if (allPassesOrNoDatas)
- continue;
-
- addUpdate(testsNeedingUpdate, test, thisResult.builder, thisResult.missing, thisResult.extra);
- }
- }
-
- for (var builder in currentBuilders()) {
- var tests = g_perBuilderWithExpectationsButNoFailures[builder]
- for (var i = 0; i < tests.length; i++) {
- // Anything extra in this case is what is listed in expectations
- // plus modifiers other than bug, platform, build type.
- var modifiers = realModifiers(tests[i].modifiers);
- var extras = tests[i].expectations;
- extras += modifiers ? ' ' + modifiers : '';
- addUpdate(testsNeedingUpdate, tests[i].test, builder, null, extras);
- }
- }
-
- // Get the keys in alphabetical order, so it is easy to process groups
- // of tests.
- var keys = Object.keys(testsNeedingUpdate).sort();
- showUpdateInfoForTest(testsNeedingUpdate, keys);
-}
-
-// Show the test results and the json for differing expectations, and
-// allow the user to include or exclude this update.
-//
-// @param {Object} testsNeedingUpdate Tests that need updating.
-// @param {Array.<string>} keys Keys into the testNeedingUpdate object.
-function showUpdateInfoForTest(testsNeedingUpdate, keys)
-{
- var test = keys[g_history.dashboardSpecificState.updateIndex];
- document.body.innerHTML = '';
-
- // FIXME: Make this DOM creation less verbose.
- var index = document.createElement('div');
- index.style.cssFloat = 'right';
- index.textContent = (g_history.dashboardSpecificState.updateIndex + 1) + ' of ' + keys.length + ' tests';
- document.body.appendChild(index);
-
- var buttonRegion = document.createElement('div');
- var includeBtn = document.createElement('input');
- includeBtn.type = 'button';
- includeBtn.value = 'include selected';
- includeBtn.addEventListener('click', partial(handleUpdate, testsNeedingUpdate, keys), false);
- buttonRegion.appendChild(includeBtn);
-
- var previousBtn = document.createElement('input');
- previousBtn.type = 'button';
- previousBtn.value = 'previous';
- previousBtn.addEventListener('click',
- function() {
- setUpdateIndex(g_history.dashboardSpecificState.updateIndex - 1, testsNeedingUpdate, keys);
- },
- false);
- buttonRegion.appendChild(previousBtn);
-
- var nextBtn = document.createElement('input');
- nextBtn.type = 'button';
- nextBtn.value = 'next';
- nextBtn.addEventListener('click', partial(nextUpdate, testsNeedingUpdate, keys), false);
- buttonRegion.appendChild(nextBtn);
-
- var doneBtn = document.createElement('input');
- doneBtn.type = 'button';
- doneBtn.value = 'done';
- doneBtn.addEventListener('click', finishUpdate, false);
- buttonRegion.appendChild(doneBtn);
-
- document.body.appendChild(buttonRegion);
-
- var updates = testsNeedingUpdate[test];
- var checkboxes = document.createElement('div');
- for (var builder in updates) {
- // Create a checkbox for each builder.
- var checkboxRegion = document.createElement('div');
- var checkbox = document.createElement('input');
- checkbox.type = 'checkbox';
- checkbox.id = builder;
- checkbox.checked = true;
- checkboxRegion.appendChild(checkbox);
- checkboxRegion.appendChild(document.createTextNode(builder + ' : ' + JSON.stringify(updates[builder])));
- checkboxes.appendChild(checkboxRegion);
- }
- document.body.appendChild(checkboxes);
-
- var div = document.createElement('div');
- div.innerHTML = htmlForIndividualTestOnAllBuildersWithResultsLinks(test);
- document.body.appendChild(div);
- appendExpectations();
-}
-
-
-// When the user has finished selecting expectations to update, provide them
-// with json to copy over.
-function finishUpdate()
-{
- document.body.innerHTML = 'The next step is to copy the output below ' +
- 'into a local file and save it. Then, run<br><code>python ' +
- 'src/webkit/tools/layout_tests/webkitpy/layout_tests/update_expectat' +
- 'ions_from_dashboard.py path/to/local/file</code><br>in order to ' +
- 'update the expectations file.<br><textarea id="results" '+
- 'style="width:600px;height:600px;"> ' +
- JSON.stringify(g_confirmedTests) + '</textarea>';
- results.focus();
- document.execCommand('SelectAll');
-}
-
-// Handle user click on "include selected" button.
-// Includes the tests that are selected and exclude the rest.
-// @param {Object} testsNeedingUpdate Tests that need updating.
-// @param {Array.<string>} keys Keys into the testNeedingUpdate object.
-function handleUpdate(testsNeedingUpdate, keys)
-{
- var test = keys[g_history.dashboardSpecificState.updateIndex];
- var updates = testsNeedingUpdate[test];
- for (var builder in updates) {
- // Add included tests, and delete excluded tests if
- // they were previously included.
- if ($(builder).checked) {
- if (!g_confirmedTests[test])
- g_confirmedTests[test] = {};
- g_confirmedTests[test][builder] = testsNeedingUpdate[test][builder];
- } else if (g_confirmedTests[test] && g_confirmedTests[test][builder]) {
- delete g_confirmedTests[test][builder];
- if (!Object.keys(g_confirmedTests[test]).length)
- delete g_confirmedTests[test];
- }
- }
- nextUpdate(testsNeedingUpdate, keys);
-}
-
-
-// Move to the next item to update.
-// @param {Object} testsNeedingUpdate Tests that need updating.
-// @param {Array.<string>} keys Keys into the testNeedingUpdate object.
-function nextUpdate(testsNeedingUpdate, keys)
-{
- setUpdateIndex(g_history.dashboardSpecificState.updateIndex + 1, testsNeedingUpdate, keys);
-}
-
-
-// Advance the index we are updating at. If we walk over the end
-// or beginning, just loop.
-// @param {string} newIndex The index into the keys to move to.
-// @param {Object} testsNeedingUpdate Tests that need updating.
-// @param {Array.<string>} keys Keys into the testNeedingUpdate object.
-function setUpdateIndex(newIndex, testsNeedingUpdate, keys)
-{
- if (newIndex == -1)
- newIndex = keys.length - 1;
- else if (newIndex == keys.length)
- newIndex = 0;
- g_history.setQueryParameter("updateIndex", newIndex);
- showUpdateInfoForTest(testsNeedingUpdate, keys);
-}
-
-function htmlForIndividualTestOnAllBuilders(test)
-{
- processTestRunsForAllBuilders();
-
- var testResults = g_testToResultsMap[test];
- if (!testResults)
- return '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>';
-
- var html = '';
- var shownBuilders = [];
- for (var j = 0; j < testResults.length; j++) {
- shownBuilders.push(testResults[j].builder);
- html += htmlForSingleTestRow(testResults[j]);
- }
-
- var skippedBuilders = []
- for (builder in currentBuilders()) {
- if (shownBuilders.indexOf(builder) == -1)
- skippedBuilders.push(builder);
- }
-
- var skippedBuildersHtml = '';
- if (skippedBuilders.length) {
- skippedBuildersHtml = '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all runs passed:</div>' +
- '<div class=skipped-builder-list><div class=skipped-builder>' + skippedBuilders.join('</div><div class=skipped-builder>') + '</div></div>';
- }
-
- return htmlForTestTable(html) + skippedBuildersHtml;
-}
-
-function htmlForIndividualTestOnAllBuildersWithResultsLinks(test)
-{
- processTestRunsForAllBuilders();
-
- var testResults = g_testToResultsMap[test];
- var html = '';
- html += htmlForIndividualTestOnAllBuilders(test);
-
- html += '<div class=expectations test=' + test + '><div>' +
- linkHTMLToToggleState('showExpectations', 'results')
-
- if (g_history.isLayoutTestResults() || g_history.isGPUTestResults()) {
- if (g_history.isLayoutTestResults())
- html += ' | ' + linkHTMLToToggleState('showLargeExpectations', 'large thumbnails');
- if (testResults && currentBuilderGroup().master().name == WEBKIT_BUILDER_MASTER) {
- var revision = g_history.dashboardSpecificState.revision || '';
- html += '<form onsubmit="g_history.setQueryParameter(\'revision\', revision.value);' +
- 'return false;">Show results for WebKit revision: ' +
- '<input name=revision placeholder="e.g. 65540" value="' + revision +
- '" id=revision-input></form>';
- } else
- html += ' | <b>Only shows actual results/diffs from the most recent *failure* on each bot.</b>';
- } else {
- html += ' | <span>Results height:<input ' +
- 'onchange="g_history.setQueryParameter(\'resultsHeight\',this.value)" value="' +
- g_history.dashboardSpecificState.resultsHeight + '" style="width:2.5em">px</span>';
- }
- html += '</div></div>';
- return html;
-}
-
-function getExpectationsContainer(expectationsContainers, parentContainer, expectationsType)
-{
- if (!expectationsContainers[expectationsType]) {
- var container = document.createElement('div');
- container.className = 'expectations-container';
- parentContainer.appendChild(container);
- expectationsContainers[expectationsType] = container;
- }
- return expectationsContainers[expectationsType];
-}
-
-function ensureTrailingSlash(path)
-{
- if (path.match(/\/$/))
- return path;
- return path + '/';
-}
-
-function maybeAddPngChecksum(expectationDiv, pngUrl)
-{
- // pngUrl gets served from the browser cache since we just loaded it in an
- // <img> tag.
- loader.request(pngUrl,
- function(xhr) {
- // Convert the first 2k of the response to a byte string.
- var bytes = xhr.responseText.substring(0, 2048);
- for (var position = 0; position < bytes.length; ++position)
- bytes[position] = bytes[position] & 0xff;
-
- // Look for the comment.
- var commentKey = 'tEXtchecksum\x00';
- var checksumPosition = bytes.indexOf(commentKey);
- if (checksumPosition == -1)
- return;
-
- var checksum = bytes.substring(checksumPosition + commentKey.length, checksumPosition + commentKey.length + 32);
- var checksumContainer = document.createElement('span');
- checksumContainer.innerText = 'Embedded checksum: ' + checksum;
- checksumContainer.setAttribute('class', 'pngchecksum');
- expectationDiv.parentNode.appendChild(checksumContainer);
- },
- function(xhr) {},
- true);
-}
-
-// Adds a specific expectation. If it's an image, it's only added on the
-// image's onload handler. If it's a text file, then a script tag is appended
-// as a hack to see if the file 404s (necessary since it's cross-domain).
-// Once all the expectations for a specific type have loaded or errored
-// (e.g. all the text results), then we go through and identify which platform
-// uses which expectation.
-//
-// @param {Object} expectationsContainers Map from expectations type to
-// container DIV.
-// @param {Element} parentContainer Container element for
-// expectationsContainer divs.
-// @param {string} platform Platform string. Empty string for non-platform
-// specific expectations.
-// @param {string} path Relative path to the expectation.
-// @param {string} base Base path for the expectation URL.
-// @param {string} opt_builder Builder whose actual results this expectation
-// points to.
-// @param {string} opt_suite "virtual suite" that the test belongs to, if any.
-function addExpectationItem(expectationsContainers, parentContainer, platform, path, base, opt_builder, opt_suite)
-{
- var parts = path.split('.')
- var fileExtension = parts[parts.length - 1];
- if (fileExtension == 'html')
- fileExtension = 'txt';
-
- var container = getExpectationsContainer(expectationsContainers, parentContainer, fileExtension);
- var isImage = path.match(/\.png$/);
-
- // FIXME: Stop using script tags once all the places we pull from support CORS.
- var platformPart = platform ? ensureTrailingSlash(platform) : '';
- var suitePart = opt_suite ? ensureTrailingSlash(opt_suite) : '';
-
- var childContainer = document.createElement('span');
- childContainer.className = 'unloaded';
-
- var appendExpectationsItem = function(item) {
- childContainer.appendChild(expectationsTitle(platformPart + suitePart, path, opt_builder));
- childContainer.className = 'expectations-item';
- item.className = 'expectation ' + fileExtension;
- if (g_history.dashboardSpecificState.showLargeExpectations)
- item.className += ' large';
- childContainer.appendChild(item);
- handleFinishedLoadingExpectations(container);
- };
-
- var url = base + platformPart + path;
- if (isImage || !string.startsWith(base, 'http://svn.webkit.org')) {
- var dummyNode = document.createElement(isImage ? 'img' : 'script');
- dummyNode.src = url;
- dummyNode.onload = function() {
- var item;
- if (isImage) {
- item = dummyNode;
- if (string.startsWith(base, 'http://svn.webkit.org'))
- maybeAddPngChecksum(item, url);
- } else {
- item = document.createElement('iframe');
- item.src = url;
- }
- appendExpectationsItem(item);
- }
- dummyNode.onerror = function() {
- childContainer.parentNode.removeChild(childContainer);
- handleFinishedLoadingExpectations(container);
- }
-
- // Append script elements now so that they load. Images load without being
- // appended to the DOM.
- if (!isImage)
- childContainer.appendChild(dummyNode);
- } else {
- loader.request(url,
- function(xhr) {
- var item = document.createElement('pre');
- item.innerText = xhr.responseText;
- appendExpectationsItem(item);
- },
- function(xhr) {/* Do nothing on errors since they're expected */});
- }
-
- container.appendChild(childContainer);
-}
-
-
-// Identifies which expectations are used on which platform once all the
-// expectations of a given type have loaded (e.g. the container for png
-// expectations for this test had no child elements with the class
-// "unloaded").
-//
-// @param {string} container Element containing the expectations for a given
-// test and a given type (e.g. png).
-function handleFinishedLoadingExpectations(container)
-{
- if (container.getElementsByClassName('unloaded').length)
- return;
-
- var titles = container.getElementsByClassName('expectations-title');
- for (var platform in g_fallbacksMap) {
- var fallbacks = g_fallbacksMap[platform];
- var winner = null;
- var winningIndex = -1;
- for (var i = 0; i < titles.length; i++) {
- var title = titles[i];
-
- if (!winner && title.platform == "") {
- winner = title;
- continue;
- }
-
- var rawPlatform = title.platform && title.platform.replace('platform/', '');
- for (var j = 0; j < fallbacks.length; j++) {
- if ((winningIndex == -1 || winningIndex > j) && rawPlatform == fallbacks[j]) {
- winningIndex = j;
- winner = title;
- break;
- }
- }
- }
- if (winner)
- winner.getElementsByClassName('platforms')[0].innerHTML += '<div class=used-platform>' + platform + '</div>';
- else {
- console.log('No expectations identified for this test. This means ' +
- 'there is a logic bug in the dashboard for which expectations a ' +
- 'platform uses or trac.webkit.org/src.chromium.org is giving 5XXs.');
- }
- }
-
- consolidateUsedPlatforms(container);
-}
-
-// Consolidate platforms when all sub-platforms for a given platform are represented.
-// e.g., if all of the WIN- platforms are there, replace them with just WIN.
-function consolidateUsedPlatforms(container)
-{
- var allPlatforms = Object.keys(g_fallbacksMap);
-
- var platformElements = container.getElementsByClassName('platforms');
- for (var i = 0, platformsLength = platformElements.length; i < platformsLength; i++) {
- var usedPlatforms = platformElements[i].getElementsByClassName('used-platform');
- if (!usedPlatforms.length)
- continue;
-
- var platforms = {};
- platforms['MAC'] = {};
- platforms['WIN'] = {};
- platforms['LINUX'] = {};
- allPlatforms.forEach(function(platform) {
- if (string.startsWith(platform, 'MAC'))
- platforms['MAC'][platform] = 1;
- else if (string.startsWith(platform, 'WIN'))
- platforms['WIN'][platform] = 1;
- else if (string.startsWith(platform, 'LINUX'))
- platforms['LINUX'][platform] = 1;
- });
-
- for (var j = 0, usedPlatformsLength = usedPlatforms.length; j < usedPlatformsLength; j++) {
- for (var platform in platforms)
- delete platforms[platform][usedPlatforms[j].textContent];
- }
-
- for (var platform in platforms) {
- if (!Object.keys(platforms[platform]).length) {
- var nodesToRemove = [];
- for (var j = 0, usedPlatformsLength = usedPlatforms.length; j < usedPlatformsLength; j++) {
- var usedPlatform = usedPlatforms[j];
- if (string.startsWith(usedPlatform.textContent, platform))
- nodesToRemove.push(usedPlatform);
- }
-
- nodesToRemove.forEach(function(element) { element.parentNode.removeChild(element); });
- platformElements[i].insertAdjacentHTML('afterBegin', '<div class=used-platform>' + platform + '</div>');
- }
- }
- }
-}
-
-function addExpectations(expectationsContainers, container, base,
- platform, text, png, reftest_html_file, reftest_mismatch_html_file, suite)
-{
- var builder = '';
- addExpectationItem(expectationsContainers, container, platform, text, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, png, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, reftest_html_file, base, builder, suite);
- addExpectationItem(expectationsContainers, container, platform, reftest_mismatch_html_file, base, builder, suite);
-}
-
-function expectationsTitle(platform, path, builder)
-{
- var header = document.createElement('h3');
- header.className = 'expectations-title';
-
- var innerHTML;
- if (builder) {
- var resultsType;
- if (string.endsWith(path, '-crash-log.txt'))
- resultsType = 'STACKTRACE';
- else if (string.endsWith(path, '-actual.txt') || string.endsWith(path, '-actual.png'))
- resultsType = 'ACTUAL RESULTS';
- else if (string.endsWith(path, '-wdiff.html'))
- resultsType = 'WDIFF';
- else
- resultsType = 'DIFF';
-
- innerHTML = resultsType + ': ' + builder;
- } else if (platform === "") {
- var parts = path.split('/');
- innerHTML = parts[parts.length - 1];
- } else
- innerHTML = platform || path;
-
- header.innerHTML = '<div class=title>' + innerHTML +
- '</div><div style="float:left">&nbsp;</div>' +
- '<div class=platforms style="float:right"></div>';
- header.platform = platform;
- return header;
-}
-
-function loadExpectations(expectationsContainer)
-{
- var test = expectationsContainer.getAttribute('test');
- if (g_history.isLayoutTestResults())
- loadExpectationsLayoutTests(test, expectationsContainer);
- else {
- var results = g_testToResultsMap[test];
- for (var i = 0; i < results.length; i++)
- if (g_history.isGPUTestResults())
- loadGPUResultsForBuilder(results[i].builder, test, expectationsContainer);
- else
- loadNonWebKitResultsForBuilder(results[i].builder, test, expectationsContainer);
- }
-}
-
-function gpuResultsPath(chromeRevision, builder)
-{
- return chromeRevision + '_' + builder.replace(/[^A-Za-z0-9]+/g, '_');
-}
-
-function loadGPUResultsForBuilder(builder, test, expectationsContainer)
-{
- var container = document.createElement('div');
- container.className = 'expectations-container';
- container.innerHTML = '<div><b>' + builder + '</b></div>';
- expectationsContainer.appendChild(container);
-
- var failureIndex = indexesForFailures(builder, test)[0];
-
- var buildNumber = g_resultsByBuilder[builder].buildNumbers[failureIndex];
- var pathToLog = builderMaster(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
-
- var chromeRevision = g_resultsByBuilder[builder].chromeRevision[failureIndex];
- var resultsUrl = GPU_RESULTS_BASE_PATH + gpuResultsPath(chromeRevision, builder);
- var filename = test.split(/\./)[1] + '.png';
-
- appendNonWebKitResults(container, pathToLog, 'non-webkit-results');
- appendNonWebKitResults(container, resultsUrl + '/gen/' + filename, 'gpu-test-results', 'Generated');
- appendNonWebKitResults(container, resultsUrl + '/ref/' + filename, 'gpu-test-results', 'Reference');
- appendNonWebKitResults(container, resultsUrl + '/diff/' + filename, 'gpu-test-results', 'Diff');
-}
-
-function loadNonWebKitResultsForBuilder(builder, test, expectationsContainer)
-{
- var failureIndexes = indexesForFailures(builder, test);
- var container = document.createElement('div');
- container.innerHTML = '<div><b>' + builder + '</b></div>';
- expectationsContainer.appendChild(container);
- for (var i = 0; i < failureIndexes.length; i++) {
- // FIXME: This doesn't seem to work anymore. Did the paths change?
- // Once that's resolved, see if we need to try each GTEST_MODIFIERS prefix as well.
- var buildNumber = g_resultsByBuilder[builder].buildNumbers[failureIndexes[i]];
- var pathToLog = builderMaster(builder).logPath(builder, buildNumber) + pathToFailureLog(test);
- appendNonWebKitResults(container, pathToLog, 'non-webkit-results');
- }
-}
-
-function appendNonWebKitResults(container, url, itemClassName, opt_title)
-{
- // Use a script tag to detect whether the URL 404s.
- // Need to use a script tag since the URL is cross-domain.
- var dummyNode = document.createElement('script');
- dummyNode.src = url;
-
- dummyNode.onload = function() {
- var item = document.createElement('iframe');
- item.src = dummyNode.src;
- item.className = itemClassName;
- item.style.height = g_history.dashboardSpecificState.resultsHeight + 'px';
-
- if (opt_title) {
- var childContainer = document.createElement('div');
- childContainer.style.display = 'inline-block';
- var title = document.createElement('div');
- title.textContent = opt_title;
- childContainer.appendChild(title);
- childContainer.appendChild(item);
- container.replaceChild(childContainer, dummyNode);
- } else
- container.replaceChild(item, dummyNode);
- }
- dummyNode.onerror = function() {
- container.removeChild(dummyNode);
- }
-
- container.appendChild(dummyNode);
-}
-
-function buildInfoForRevision(builder, revision)
-{
- var revisions = g_resultsByBuilder[builder].webkitRevision;
- var revisionStart = 0, revisionEnd = 0, buildNumber = 0;
- for (var i = 0; i < revisions.length; i++) {
- if (revision > revisions[i]) {
- revisionStart = revisions[i - 1];
- revisionEnd = revisions[i];
- buildNumber = g_resultsByBuilder[builder].buildNumbers[i - 1];
- break;
- }
- }
-
- if (revisionEnd)
- revisionEnd++;
- else
- revisionEnd = '';
-
- return {revisionStart: revisionStart, revisionEnd: revisionEnd, buildNumber: buildNumber};
-}
-
-function lookupVirtualTestSuite(test) {
- for (var suite in VIRTUAL_SUITES) {
- if (test.indexOf(suite) != -1)
- return suite;
- }
- return '';
-}
-
-function baseTest(test, suite) {
- base = VIRTUAL_SUITES[suite];
- return base ? test.replace(suite, base) : test;
-}
-
-function loadBaselinesForTest(expectationsContainers, expectationsContainer, test) {
- var testWithoutSuffix = test.substring(0, test.lastIndexOf('.'));
- var text = testWithoutSuffix + "-expected.txt";
- var png = testWithoutSuffix + "-expected.png";
- var reftest_html_file = testWithoutSuffix + "-expected.html";
- var reftest_mismatch_html_file = testWithoutSuffix + "-expected-mismatch.html";
- var suite = lookupVirtualTestSuite(test);
-
- if (!suite)
- addExpectationItem(expectationsContainers, expectationsContainer, null, test, TEST_URL_BASE_PATH);
-
- addExpectations(expectationsContainers, expectationsContainer,
- TEST_URL_BASE_PATH, '', text, png, reftest_html_file, reftest_mismatch_html_file, suite);
-
- var fallbacks = allFallbacks();
- for (var i = 0; i < fallbacks.length; i++) {
- var fallback = 'platform/' + fallbacks[i];
- addExpectations(expectationsContainers, expectationsContainer, TEST_URL_BASE_PATH, fallback, text, png,
- reftest_html_file, reftest_mismatch_html_file, suite);
- }
-
- if (suite)
- loadBaselinesForTest(expectationsContainers, expectationsContainer, baseTest(test, suite));
-}
-
-function loadExpectationsLayoutTests(test, expectationsContainer)
-{
- // Map from file extension to container div for expectations of that type.
- var expectationsContainers = {};
-
- var revisionContainer = document.createElement('div');
- revisionContainer.textContent = "Showing results for: "
- expectationsContainer.appendChild(revisionContainer);
- for (var builder in currentBuilders()) {
- if (builderMaster(builder).name == WEBKIT_BUILDER_MASTER) {
- var latestRevision = g_history.dashboardSpecificState.revision || g_resultsByBuilder[builder].webkitRevision[0];
- var buildInfo = buildInfoForRevision(builder, latestRevision);
- var revisionInfo = document.createElement('div');
- revisionInfo.style.cssText = 'background:lightgray;margin:0 3px;padding:0 2px;display:inline-block;';
- revisionInfo.innerHTML = builder + ' r' + buildInfo.revisionEnd +
- ':r' + buildInfo.revisionStart + ', build ' + buildInfo.buildNumber;
- revisionContainer.appendChild(revisionInfo);
- }
- }
-
- loadBaselinesForTest(expectationsContainers, expectationsContainer, test);
-
- var testWithoutSuffix = test.substring(0, test.lastIndexOf('.'));
- var actualResultSuffixes = ['-actual.txt', '-actual.png', '-crash-log.txt', '-diff.txt', '-wdiff.html', '-diff.png'];
-
- for (var builder in currentBuilders()) {
- var actualResultsBase;
- if (builderMaster(builder).name == WEBKIT_BUILDER_MASTER) {
- var latestRevision = g_history.dashboardSpecificState.revision || g_resultsByBuilder[builder].webkitRevision[0];
- var buildInfo = buildInfoForRevision(builder, latestRevision);
- actualResultsBase = 'http://build.webkit.org/results/' + builder +
- '/r' + buildInfo.revisionStart + ' (' + buildInfo.buildNumber + ')/';
- } else
- actualResultsBase = TEST_RESULTS_BASE_PATH + currentBuilders()[builder] + '/results/layout-test-results/';
-
- for (var i = 0; i < actualResultSuffixes.length; i++) {
- addExpectationItem(expectationsContainers, expectationsContainer, null,
- testWithoutSuffix + actualResultSuffixes[i], actualResultsBase, builder);
- }
- }
-
- // Add a clearing element so floated elements don't bleed out of their
- // containing block.
- var br = document.createElement('br');
- br.style.clear = 'both';
- expectationsContainer.appendChild(br);
-}
-
-var g_allFallbacks;
-
-// Returns the reverse sorted, deduped list of all platform fallback
-// directories.
-function allFallbacks()
-{
- if (!g_allFallbacks) {
- var holder = {};
- for (var platform in g_fallbacksMap) {
- var fallbacks = g_fallbacksMap[platform];
- for (var i = 0; i < fallbacks.length; i++)
- holder[fallbacks[i]] = 1;
- }
-
- g_allFallbacks = [];
- for (var fallback in holder)
- g_allFallbacks.push(fallback);
-
- g_allFallbacks.sort(function(a, b) {
- if (a == b)
- return 0;
- return a < b;
- });
- }
- return g_allFallbacks;
-}
-
-function appendExpectations()
-{
- var expectations = g_history.dashboardSpecificState.showExpectations ? document.getElementsByClassName('expectations') : [];
- // Loading expectations is *very* slow. Use a large timeout to avoid
- // totally hanging the renderer.
- performChunkedAction(expectations, function(chunk) {
- for (var i = 0, len = chunk.length; i < len; i++)
- loadExpectations(chunk[i]);
- postHeightChangedMessage();
-
- }, hideLoadingUI, 10000);
-}
-
-function hideLoadingUI()
-{
- var loadingDiv = $('loading-ui');
- if (loadingDiv)
- loadingDiv.style.display = 'none';
- postHeightChangedMessage();
-}
-
-function generatePageForIndividualTests(tests)
-{
- console.log('Number of tests: ' + tests.length);
- if (g_history.dashboardSpecificState.showChrome)
- appendHTML(htmlForNavBar());
- performChunkedAction(tests, function(chunk) {
- appendHTML(htmlForIndividualTests(chunk));
- }, appendExpectations, 500);
- if (g_history.dashboardSpecificState.showChrome)
- $('tests-input').value = g_history.dashboardSpecificState.tests;
-}
-
-function performChunkedAction(tests, handleChunk, onComplete, timeout, opt_index) {
- var index = opt_index || 0;
- setTimeout(function() {
- var chunk = Array.prototype.slice.call(tests, index * CHUNK_SIZE, (index + 1) * CHUNK_SIZE);
- if (chunk.length) {
- handleChunk(chunk);
- performChunkedAction(tests, handleChunk, onComplete, timeout, ++index);
- } else
- onComplete();
- // No need for a timeout on the first chunked action.
- }, index ? timeout : 0);
-}
-
-function htmlForIndividualTests(tests)
-{
- var testsHTML = [];
- for (var i = 0; i < tests.length; i++) {
- var test = tests[i];
- var testNameHtml = '';
- if (g_history.dashboardSpecificState.showChrome || tests.length > 1) {
- if (g_history.isLayoutTestResults()) {
- var suite = lookupVirtualTestSuite(test);
- var base = suite ? baseTest(test, suite) : test;
- var tracURL = TEST_URL_BASE_PATH_TRAC + base;
- testNameHtml += '<h2>' + linkHTMLToOpenWindow(tracURL, test) + '</h2>';
- } else
- testNameHtml += '<h2>' + test + '</h2>';
- }
-
- testsHTML.push(testNameHtml + htmlForIndividualTestOnAllBuildersWithResultsLinks(test));
- }
- return testsHTML.join('<hr>');
-}
-
-function htmlForNavBar()
-{
- var extraHTML = '';
- var html = ui.html.testTypeSwitcher(false, extraHTML, isCrossBuilderView());
- html += '<div class=forms><form id=result-form ' +
- 'onsubmit="g_history.setQueryParameter(\'result\', result.value);' +
- 'return false;">Show all tests with result: ' +
- '<input name=result placeholder="e.g. CRASH" id=result-input>' +
- '</form><form id=tests-form ' +
- 'onsubmit="g_history.setQueryParameter(\'tests\', tests.value);' +
- 'return false;"><span>Show tests on all platforms: </span>' +
- '<input name=tests ' +
- 'placeholder="Comma or space-separated list of tests or partial ' +
- 'paths to show test results across all builders, e.g., ' +
- 'foo/bar.html,foo/baz,domstorage" id=tests-input></form>' +
- '<span class=link onclick="showLegend()">Show legend [type ?]</span></div>';
- return html;
-}
-
-function checkBoxToToggleState(key, text)
-{
- var stateEnabled = g_history.dashboardSpecificState[key];
- return '<label><input type=checkbox ' + (stateEnabled ? 'checked ' : '') + 'onclick="g_history.setQueryParameter(\'' + key + '\', ' + !stateEnabled + ')">' + text + '</label> ';
-}
-
-function linkHTMLToToggleState(key, linkText)
-{
- var stateEnabled = g_history.dashboardSpecificState[key];
- return '<span class=link onclick="g_history.setQueryParameter(\'' + key + '\', ' + !stateEnabled + ')">' + (stateEnabled ? 'Hide' : 'Show') + ' ' + linkText + '</span>';
-}
-
-function headerForTestTableHtml()
-{
- return '<h2 style="display:inline-block">Failing tests</h2>' +
- checkBoxToToggleState('showWontFixSkip', 'WONTFIX/SKIP') +
- checkBoxToToggleState('showCorrectExpectations', 'tests with correct expectations') +
- checkBoxToToggleState('showWrongExpectations', 'tests with wrong expectations') +
- checkBoxToToggleState('showFlaky', 'flaky') +
- checkBoxToToggleState('showSlow', 'slow');
-}
-
-function generatePageForBuilder(builderName)
-{
- processTestRunsForBuilder(builderName);
-
- var results = g_perBuilderFailures[builderName];
- sortTests(results, g_history.dashboardSpecificState.sortColumn, g_history.dashboardSpecificState.sortOrder);
-
- var testsHTML = '';
- if (results.length) {
- var tableRowsHTML = '';
- for (var i = 0; i < results.length; i++)
- tableRowsHTML += htmlForSingleTestRow(results[i])
- testsHTML = htmlForTestTable(tableRowsHTML);
- } else {
- testsHTML = '<div>No tests found. ';
- if (g_history.isLayoutTestResults())
- testsHTML += 'Try showing tests with correct expectations.</div>';
- else
- testsHTML += 'This means no tests have failed!</div>';
- }
-
- var html = htmlForNavBar();
-
- if (g_history.isLayoutTestResults())
- html += htmlForTestsWithExpectationsButNoFailures(builderName) + headerForTestTableHtml();
-
- html += '<br>' + testsHTML;
- appendHTML(html);
-
- var ths = document.getElementsByTagName('th');
- for (var i = 0; i < ths.length; i++) {
- ths[i].addEventListener('click', changeSort, false);
- ths[i].className = "sortable";
- }
-
- hideLoadingUI();
-}
-
-var VALID_KEYS_FOR_CROSS_BUILDER_VIEW = {
- tests: 1,
- result: 1,
- showChrome: 1,
- showExpectations: 1,
- showLargeExpectations: 1,
- legacyExpectationsSemantics: 1,
- resultsHeight: 1,
- revision: 1
-};
-
-function isInvalidKeyForCrossBuilderView(key)
-{
- return !(key in VALID_KEYS_FOR_CROSS_BUILDER_VIEW) && !(key in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES);
-}
-
-function hideLegend()
-{
- var legend = $('legend');
- if (legend)
- legend.parentNode.removeChild(legend);
-}
-
-var g_fallbacksMap = {};
-g_fallbacksMap['WIN-XP'] = ['chromium-win-xp', 'chromium-win', 'chromium'];
-g_fallbacksMap['WIN-7'] = ['chromium-win', 'chromium'];
-g_fallbacksMap['MAC-SNOWLEOPARD'] = ['chromium-mac-snowleopard', 'chromium-mac', 'chromium'];
-g_fallbacksMap['MAC-LION'] = ['chromium-mac', 'chromium'];
-g_fallbacksMap['LINUX-32'] = ['chromium-linux-x86', 'chromium-linux', 'chromium-win', 'chromium'];
-g_fallbacksMap['LINUX-64'] = ['chromium-linux', 'chromium-win', 'chromium'];
-
-function showLegend()
-{
- var legend = $('legend');
- if (!legend) {
- legend = document.createElement('div');
- legend.id = 'legend';
- document.body.appendChild(legend);
- }
-
- var html = '<div id=legend-toggle onclick="hideLegend()">Hide ' +
- 'legend [type esc]</div><div id=legend-contents>';
- for (var expectation in expectationsMap())
- html += '<div class=' + expectation + '>' + expectationsMap()[expectation] + '</div>';
-
- html += '<div class=merge>WEBKIT MERGE</div>';
- if (g_history.isLayoutTestResults())
- html += '</div><br style="clear:both"><div>TIMES:</div>' +
- htmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST) +
- '<div>DEBUG TIMES:</div>' +
- htmlForSlowTimes(MIN_SECONDS_FOR_SLOW_TEST_DEBUG);
-
- legend.innerHTML = html;
-}
-
-function htmlForSlowTimes(minTime)
-{
- return '<ul><li>&lt;1 second == !SLOW</li><li>&gt;1 second && &lt;' +
- minTime + ' seconds == SLOW || !SLOW is fine</li><li>&gt;' +
- minTime + ' seconds == SLOW</li></ul>';
-}
-
-function postHeightChangedMessage()
-{
- if (window == parent)
- return;
-
- var root = document.documentElement;
- var height = root.offsetHeight;
- if (root.offsetWidth < root.scrollWidth) {
- // We have a horizontal scrollbar. Include it in the height.
- var dummyNode = document.createElement('div');
- dummyNode.style.overflow = 'scroll';
- document.body.appendChild(dummyNode);
- var scrollbarWidth = dummyNode.offsetHeight - dummyNode.clientHeight;
- document.body.removeChild(dummyNode);
- height += scrollbarWidth;
- }
- parent.postMessage({command: 'heightChanged', height: height}, '*')
-}
-
-if (window != parent)
- window.addEventListener('blur', ui.popup.hide);
-
-document.addEventListener('keydown', function(e) {
- if (e.keyIdentifier == 'U+003F' || e.keyIdentifier == 'U+00BF') {
- // WebKit MAC retursn 3F. WebKit WIN returns BF. This is a bug!
- // ? key
- showLegend();
- } else if (e.keyIdentifier == 'U+001B') {
- // escape key
- hideLegend();
- ui.popup.hide();
- }
-}, false);
-
-window.addEventListener('load', function() {
- resourceLoader = new loader.Loader();
- resourceLoader.load();
-}, false);
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded.html b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded.html
deleted file mode 100644
index c371e78de..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded.html
+++ /dev/null
@@ -1,83 +0,0 @@
-<!-- Copyright (C) 2011 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.
--->
-<!DOCTYPE HTML>
-<style>
-iframe {
- width: 100%;
- display: block;
-}
-#toolbar {
- display: -webkit-flexbox;
- -webkit-flex-align: baseline;
-}
-#tests {
- -webkit-flex: 1;
- /* WebKit bug. Don't properly wrap input elements for flexing. */
- display: block;
-}
-</style>
-
-<div>This is a demo page for working on iframe embedding the flakiness dashboard.</div>
-<div id="toolbar">
- <input id="chrome" type=checkbox></input><label>Hide chrome</label> |
- <label>Tests:</label><input id=tests placeholder="Type test name here to load a different test in the frame" ></input>
-</div>
-<iframe src="flakiness_dashboard.html"></iframe>
-
-<script>
-var timeoutId;
-document.querySelector('#tests').oninput = function(event) {
- if (timeoutId)
- clearTimeout(timeoutId);
- timeoutId = setTimeout(setFrameSrc, 1000);
-};
-document.querySelector('#chrome').onchange = setFrameSrc;
-
-function setFrameSrc() {
- var tests = document.querySelector('#tests').value;
- var hideChrome = document.querySelector('#chrome').checked ? '&showChrome=false' : '';
- var url = 'flakiness_dashboard.html#tests=' + tests + hideChrome;
- document.querySelector('iframe').src = url;
-};
-
-function sizeIframeToContents() {
- document.querySelector('iframe').contentWindow.postMessage({command: 'queryContentHeight'}, '*');
-};
-
-window.addEventListener('message', function(event) {
- switch(event.data.command) {
- case 'heightChanged':
- document.querySelector('iframe').style.height = event.data.height + 'px';
- break;
-
- default:
- console.error('Did not understand message: ' + event.data);
- }
-});
-</script>
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js
deleted file mode 100644
index 039467a85..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_embedded_unittests.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright (C) 2011 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.
-
-test('hidePopupOnBlur', 2, function() {
- ui.popup.show(document.body, 'dummy content');
- ok(document.querySelector('#popup'));
-
- // Cause the window to be blurred.
- var frame = document.createElement('iframe');
- document.body.appendChild(frame);
- frame.focus();
- document.body.removeChild(frame);
-
- ok(!document.querySelector('#popup'));
-}); \ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css
deleted file mode 100644
index 6165bcdff..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_tests.css
+++ /dev/null
@@ -1,273 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#errors {
- color: red;
- font-size: 16px;
- margin: 0;
-}
-#result-input {
- width: 7em;
-}
-.test-link.builder-name {
- white-space: nowrap;
-}
-.test-link, .options-container {
- padding: 0 2px;
-}
-.test-table {
- white-space: nowrap;
- border-spacing: 1px;
-}
-/* Let the bugs column wrap. */
-.test-table tr > td:nth-child(2) {
- white-space: normal;
-}
-.test-table {
- width: 100%;
-}
-.test-table tr {
- border: 1px solid red;
- background-color: #E8E8E8;
-}
-.test-table tbody tr:hover {
- opacity: .7;
-}
-.test-table th {
- -webkit-user-select: none;
- -moz-user-select: none;
-}
-.link, .sortable .header-text {
- color: blue;
- text-decoration: underline;
- cursor: pointer;
-}
-.table-header-content,
-.table-header-content * {
- display: -webkit-box;
-}
-.table-header-content * {
- -webkit-box-flex: 1;
- cursor: pointer;
-}
-.results {
- cursor: pointer;
- padding: 0 1px;
- font-size: 10px;
- text-align: center;
-}
-#legend {
- position: fixed;
- top: 5px;
- right: 5px;
- width: 400px;
- padding: 2px;
- border: 2px solid grey;
- background-color: white;
- z-index: 1;
-}
-#legend ul, #legend ol {
- margin-top: 0;
- margin-bottom: 5px;
-}
-#legend-contents * {
- margin: 3px 0;
- padding: 0 2px;
- float: left;
- border: 1px solid grey;
-}
-.P {
- background-color: #3f3;
-}
-.N {
- background-color: #fff;
-}
-.X {
- background-color: lightgray;
-}
-.C {
- background-color: #c90;
-}
-.T {
- background-color: #fffc6c;
-}
-.I {
- background-color: #69f;
-}
-.S {
- background-color: #c6c;
-}
-.F {
- background-color: #e98080;
-}
-.O {
- background-color: #8a7700;
-}
-.Z {
- background-color: #96f;
-}
-#legend .merge {
- background-color: black;
- color: white;
-}
-.test-table .merge {
- border-right: solid 2px #000;
- padding-right: 0;
-}
-.separator {
- border: 1px solid lightgray;
- height: 0px;
-}
-#passing-tests,
-#skipped-tests {
- -webkit-column-count: 3;
- -webkit-column-gap: 25px;
- -webkit-column-rule: 1px dashed black;
- -moz-column-count: 3;
- -moz-column-gap: 25px;
- -moz-column-rule: 1px dashed black;
- border-top: 1px dashed black;
- border-bottom: 1px dashed black;
-}
-.not-found {
- color: red;
- font-size: large;
-}
-#loading-ui {
- position: fixed;
- top: 0;
- left: 0;
- background-color: yellow;
- padding: 5px;
- text-align: center;
- font-weight: bold;
-}
-#popup {
- background-color: white;
- z-index: 1;
- position: absolute;
- border: 3px solid grey;
- padding: 3px;
- -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
- -moz-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.5);
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
-}
-#popup > ul {
- margin: 0;
- padding-left: 20px;
-}
-.expectations-container {
- clear: both;
-}
-.expectations-item {
- float: left;
- border: 1px solid grey;
- display: -webkit-box;
- display: -moz-box;
- position: relative;
- -webkit-box-orient: vertical;
- -moz-box-orient: vertical;
-}
-.expectations-item .expectation {
- width: 400px;
- height: 300px;
- border: 0;
- border-top: 1px solid grey;
- overflow: auto;
- display: -webkit-box;
- display: -moz-box;
- -webkit-box-flex: 1;
- -moz-box-flex: 1;
-}
-pre.expectation {
- padding: 8px;
- margin: 0;
- box-sizing: border-box;
-}
-.expectations-item .large {
- width: 800px;
- height: 600px;
-}
-.non-webkit-results {
- width: 99%;
-}
-.gpu-test-results {
- width: 400px;
-}
-.used-platform {
- float: right;
- color: darkblue;
- margin: 0 5px;
-}
-.expectations-title {
- /* Hack to make a containing block for absolute positioned elements. */
- position: relative;
- clear: both;
-}
-.title {
- /* Position absolutely so the container does not grow to contain this. */
- position: absolute;
-}
-.platforms {
- position: absolute;
- right: 0;
- z-index: 1;
-}
-.file-bug {
- font-weight: bold;
- font-size: 11px;
-}
-.pngchecksum {
- position: absolute;
- right: 0;
- bottom: 0;
- background-color: #ffffc8;
- visibility: hidden;
-}
-.expectations-item:hover .pngchecksum {
- visibility: visible;
-}
-.skipped-builder-list {
- margin-left: 20px;
- background-color: #E8E8E8;
-}
-.skipped-builder {
- display: inline-block;
- white-space: nowrap;
-}
-.skipped-builder:after {
- content: '|';
- margin: 5px;
-}
-.skipped-builder:last-child:after {
- content: '';
-}
-
diff --git a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js b/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
deleted file mode 100644
index b008adf95..000000000
--- a/Tools/TestResultServer/static-dashboards/flakiness_dashboard_unittests.js
+++ /dev/null
@@ -1,637 +0,0 @@
-// Copyright (C) 2011 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.
-
-// FIXME(jparent): Rename this once it isn't globals.
-function resetGlobals()
-{
- allExpectations = null;
- allTests = null;
- g_expectationsByPlatform = {};
- g_resultsByBuilder = {};
- g_allExpectations = null;
- g_allTestsTrie = null;
- var historyInstance = new history.History(flakinessConfig);
- // FIXME(jparent): Remove this once global isn't used.
- g_history = historyInstance;
- g_testToResultsMap = {};
-
- for (var key in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES)
- historyInstance.crossDashboardState[key] = history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
-
- LOAD_BUILDBOT_DATA([{
- name: 'webkit.org',
- url: 'dummyurl',
- tests: {'layout-tests': {'builders': ['Apple Lion Release WK2 (Tests)', 'Apple Lion Debug WK2 (Tests)', 'GTK Linux 64-bit Release', 'Qt Linux Tests']}}
- }]);
-
- for (var group in LAYOUT_TESTS_BUILDER_GROUPS)
- LAYOUT_TESTS_BUILDER_GROUPS[group] = null;
-
- return historyInstance;
-}
-
-function stubResultsByBuilder(data)
-{
- for (var builder in currentBuilders())
- {
- g_resultsByBuilder[builder] = data[builder] || {'tests': []};
- };
-}
-
-function runExpectationsTest(builder, test, expectations, modifiers)
-{
- // Put in some dummy results. processExpectations expects the test to be
- // there.
- var tests = {};
- tests[test] = {'results': [[100, 'F']], 'times': [[100, 0]]};
- var results = {};
- results[builder] = {'tests': tests};
- stubResultsByBuilder(results);
-
- processExpectations();
- var resultsForTest = createResultsObjectForTest(test, builder);
- populateExpectationsData(resultsForTest);
-
- var message = 'Builder: ' + resultsForTest.builder + ' test: ' + resultsForTest.test;
- equal(resultsForTest.expectations, expectations, message);
- equal(resultsForTest.modifiers, modifiers, message);
-}
-
-test('releaseFail', 2, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var builder = 'Apple Lion Release WK2 (Tests)';
- var test = 'foo/1.html';
- var expectationsArray = [
- {'modifiers': 'RELEASE', 'expectations': 'FAIL'}
- ];
- g_expectationsByPlatform['APPLE_MAC_LION_WK2'] = getParsedExpectations('[ Release ] ' + test + ' [ Failure ]');
- runExpectationsTest(builder, test, 'FAIL', 'RELEASE');
-});
-
-test('releaseFailDebugCrashReleaseBuilder', 2, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var builder = 'Apple Lion Release WK2 (Tests)';
- var test = 'foo/1.html';
- var expectationsArray = [
- {'modifiers': 'RELEASE', 'expectations': 'FAIL'},
- {'modifiers': 'DEBUG', 'expectations': 'CRASH'}
- ];
- g_expectationsByPlatform['APPLE_MAC_LION_WK2'] = getParsedExpectations('[ Release ] ' + test + ' [ Failure ]\n' +
- '[ Debug ] ' + test + ' [ Crash ]');
- runExpectationsTest(builder, test, 'FAIL', 'RELEASE');
-});
-
-test('releaseFailDebugCrashDebugBuilder', 2, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var builder = 'Apple Lion Debug WK2 (Tests)';
- var test = 'foo/1.html';
- var expectationsArray = [
- {'modifiers': 'RELEASE', 'expectations': 'FAIL'},
- {'modifiers': 'DEBUG', 'expectations': 'CRASH'}
- ];
- g_expectationsByPlatform['APPLE_MAC_LION_WK2'] = getParsedExpectations('[ Release ] ' + test + ' [ Failure ]\n' +
- '[ Debug ] ' + test + ' [ Crash ]');
- runExpectationsTest(builder, test, 'CRASH', 'DEBUG');
-});
-
-test('overrideJustBuildType', 4, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
- var test = 'bar/1.html';
- g_expectationsByPlatform['APPLE_MAC_LION_WK2'] = getParsedExpectations('bar [ WontFix Failure Pass Timeout ]\n' +
- '[ Release ] ' + test + ' [ WontFix Failure ]\n' +
- '[ Debug ] ' + test + ' [ Crash ]');
-
- runExpectationsTest('Apple Lion Release WK2 (Tests)', test, 'FAIL', 'RELEASE WONTFIX');
- runExpectationsTest('Apple Lion Debug WK2 (Tests)', test, 'CRASH', 'DEBUG');
-});
-
-test('platformAndBuildType', 30, function() {
- var historyInstance = new history.History(flakinessConfig);
- // FIXME(jparent): Change to use the flakiness_db's history object
- // once it exists, rather than tracking global.
- g_history = historyInstance;
-
- var runPlatformAndBuildTypeTest = function(builder, expectedPlatform, expectedBuildType) {
- g_perBuilderPlatformAndBuildType = {};
- buildInfo = platformAndBuildType(builder);
- var message = 'Builder: ' + builder;
- equal(buildInfo.platform, expectedPlatform, message);
- equal(buildInfo.buildType, expectedBuildType, message);
- }
- // FIXME: These platforms should match whatever we use in the TestExpectations format.
- runPlatformAndBuildTypeTest('Lion Release (Tests)', 'APPLE_MAC_LION_WK1', 'RELEASE');
- runPlatformAndBuildTypeTest('Lion Debug (Tests)', 'APPLE_MAC_LION_WK1', 'DEBUG');
- runPlatformAndBuildTypeTest('MountainLion Release (Tests)', 'APPLE_MAC_MOUNTAINLION_WK1', 'RELEASE');
- runPlatformAndBuildTypeTest('MountainLion Leaks', 'APPLE_MAC_MOUNTAINLION_WK1', 'RELEASE');
- runPlatformAndBuildTypeTest('MountainLion Debug (Tests)', 'APPLE_MAC_MOUNTAINLION_WK1', 'DEBUG');
- runPlatformAndBuildTypeTest('GTK Linux 32-bit Release', 'GTK_LINUX_WK1', 'RELEASE');
- runPlatformAndBuildTypeTest('GTK Linux 32-bit Debug', 'GTK_LINUX_WK1', 'DEBUG');
- runPlatformAndBuildTypeTest('GTK Linux 64-bit Debug', 'GTK_LINUX_WK1', 'DEBUG');
- runPlatformAndBuildTypeTest('GTK Linux 64-bit Debug WK2', 'GTK_LINUX_WK2', 'DEBUG');
- runPlatformAndBuildTypeTest('Qt Linux Release', 'QT_LINUX', 'RELEASE');
- runPlatformAndBuildTypeTest('Windows 7 Release (Tests)', 'APPLE_WIN_WIN7', 'RELEASE');
- runPlatformAndBuildTypeTest('Windows XP Debug (Tests)', 'APPLE_WIN_XP', 'DEBUG');
-
- // FIXME: Should WebKit2 be it's own platform?
- runPlatformAndBuildTypeTest('MountainLion Release (WebKit2 Tests)', 'APPLE_MAC_MOUNTAINLION_WK2', 'RELEASE');
- runPlatformAndBuildTypeTest('MountainLion Debug (WebKit2 Tests)', 'APPLE_MAC_MOUNTAINLION_WK2', 'DEBUG');
- runPlatformAndBuildTypeTest('Windows 7 Release (WebKit2 Tests)', 'APPLE_WIN_WIN7', 'RELEASE');
-});
-
-test('realModifiers', 3, function() {
- equal(realModifiers('BUG(Foo) DEBUG SLOW'), 'SLOW');
- equal(realModifiers('BUG(Foo) RELEASE'), '');
- equal(realModifiers('BUG(Foo)'), '');
-});
-
-test('allTestsWithSamePlatformAndBuildType', 1, function() {
- // FIXME: test that allTestsWithSamePlatformAndBuildType actually returns the right set of tests.
- var expectedPlatformsList = ['APPLE_MAC_LION_WK1', 'APPLE_MAC_LION_WK2', 'APPLE_MAC_MOUNTAINLION_WK1', 'APPLE_MAC_MOUNTAINLION_WK2',
- 'APPLE_WIN_XP', 'APPLE_WIN_WIN7', 'GTK_LINUX_WK1', 'GTK_LINUX_WK2', 'QT_LINUX', 'EFL_LINUX_WK1', 'EFL_LINUX_WK2'];
- var actualPlatformsList = Object.keys(g_allTestsByPlatformAndBuildType);
- deepEqual(expectedPlatformsList, actualPlatformsList);
-});
-
-test('filterBugs',4, function() {
- var filtered = filterBugs('Skip crbug.com/123 webkit.org/b/123 Slow Bug(Tony) Debug')
- equal(filtered.modifiers, 'Skip Slow Debug');
- equal(filtered.bugs, 'crbug.com/123 webkit.org/b/123 Bug(Tony)');
-
- filtered = filterBugs('Skip Slow Debug')
- equal(filtered.modifiers, 'Skip Slow Debug');
- equal(filtered.bugs, '');
-});
-
-test('getExpectations', 14, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- stubResultsByBuilder({
- 'Apple Lion Release WK2 (Tests)' : {
- 'tests': {
- 'foo/test1.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- 'foo/test2.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- 'foo/test3.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- 'test1.html': {'results': [[100, 'F']], 'times': [[100, 0]]}
- }
- }
- });
-
- g_expectationsByPlatform['APPLE_MAC_LION_WK2'] = getParsedExpectations('Bug(123) foo [ Failure Pass Crash ]\n' +
- 'Bug(Foo) [ Release ] foo/test1.html [ Failure ]\n' +
- '[ Debug ] foo/test1.html [ Crash ]\n' +
- 'Bug(456) foo/test2.html [ Failure ]\n' +
- '[ Debug ] foo/test2.html [ Crash ]\n' +
- '[ Release ] test1.html [ Failure ]\n' +
- '[ Debug ] test1.html [ Crash ]\n');
-
- g_expectationsByPlatform['GTK'] = getParsedExpectations('Bug(42) foo/test2.html [ ImageOnlyFailure ]\n' +
- '[ Debug ] test1.html [ Crash ]\n');
- g_expectationsByPlatform['GTK_LINUX_WK1'] = getParsedExpectations('[ Release ] foo/test1.html [ ImageOnlyFailure ]\n' +
- 'Bug(789) foo/test2.html [ Crash ]\n');
- g_expectationsByPlatform['GTK_LINUX_WK2'] = getParsedExpectations('Bug(987) foo/test2.html [ Failure ]\n');
-
- processExpectations();
-
- var expectations = getExpectations('foo/test1.html', 'APPLE_MAC_LION_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"DEBUG","expectations":"CRASH"}');
-
- var expectations = getExpectations('foo/test1.html', 'APPLE_MAC_LION_WK2', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(Foo) RELEASE","expectations":"FAIL"}');
-
- var expectations = getExpectations('foo/test2.html', 'APPLE_MAC_LION_WK2', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(456)","expectations":"FAIL"}');
-
- var expectations = getExpectations('foo/test2.html', 'APPLE_MAC_LION_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"DEBUG","expectations":"CRASH"}');
-
- var expectations = getExpectations('test1.html', 'APPLE_MAC_LION_WK2', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"RELEASE","expectations":"FAIL"}');
-
- var expectations = getExpectations('foo/test3.html', 'APPLE_MAC_LION_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(123)","expectations":"FAIL PASS CRASH"}');
-
- var expectations = getExpectations('test1.html', 'APPLE_MAC_LION_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"DEBUG","expectations":"CRASH"}');
-
- var expectations = getExpectations('test1.html', 'APPLE_MAC_LION_WK2', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"RELEASE","expectations":"FAIL"}');
-
- var expectations = getExpectations('foo/test1.html', 'GTK_LINUX_WK1', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"RELEASE","expectations":"IMAGE"}');
-
- var expectations = getExpectations('foo/test2.html', 'GTK_LINUX_WK1', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(789)","expectations":"CRASH"}');
-
- var expectations = getExpectations('test1.html', 'GTK_LINUX_WK1', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"DEBUG","expectations":"CRASH"}');
-
- var expectations = getExpectations('foo/test2.html', 'GTK_LINUX_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(987)","expectations":"FAIL"}');
-
- var expectations = getExpectations('foo/test2.html', 'GTK_LINUX_WK2', 'RELEASE');
- equal(JSON.stringify(expectations), '{"modifiers":"Bug(987)","expectations":"FAIL"}');
-
- var expectations = getExpectations('test1.html', 'GTK_LINUX_WK2', 'DEBUG');
- equal(JSON.stringify(expectations), '{"modifiers":"DEBUG","expectations":"CRASH"}');
-});
-
-test('substringList', 2, function() {
- var historyInstance = new history.History(flakinessConfig);
- // FIXME(jparent): Remove this once global isn't used.
- g_history = historyInstance;
- historyInstance.crossDashboardState.testType = 'gtest';
- historyInstance.dashboardSpecificState.tests = 'test.FLAKY_foo test.FAILS_foo1 test.DISABLED_foo2 test.MAYBE_foo3 test.foo4';
- equal(substringList().toString(), 'test.foo,test.foo1,test.foo2,test.foo3,test.foo4');
-
- historyInstance.crossDashboardState.testType = 'layout-tests';
- historyInstance.dashboardSpecificState.tests = 'foo/bar.FLAKY_foo.html';
- equal(substringList().toString(), 'foo/bar.FLAKY_foo.html');
-});
-
-test('htmlForTestsWithExpectationsButNoFailures', 4, function() {
- var historyInstance = new history.History(defaultDashboardSpecificStateValues, generatePage, handleValidHashParameter);
- // FIXME(jparent): Remove this once global isn't used.
- g_history = historyInstance;
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
- var builder = 'Apple Lion Release WK2 (Tests)';
- g_perBuilderWithExpectationsButNoFailures[builder] = ['passing-test1.html', 'passing-test2.html'];
- g_perBuilderSkippedPaths[builder] = ['skipped-test1.html'];
- g_resultsByBuilder[builder] = { buildNumbers: [5, 4, 3, 1] };
-
- historyInstance.dashboardSpecificState.showUnexpectedPasses = true;
- historyInstance.dashboardSpecificState.showSkipped = true;
-
- historyInstance.crossDashboardState.group = '@ToT - webkit.org';
- historyInstance.crossDashboardState.testType = 'layout-tests';
-
- var container = document.createElement('div');
- container.innerHTML = htmlForTestsWithExpectationsButNoFailures(builder);
- equal(container.querySelectorAll('#passing-tests > div').length, 2);
- equal(container.querySelectorAll('#skipped-tests > div').length, 1);
-
- historyInstance.dashboardSpecificState.showUnexpectedPasses = false;
- historyInstance.dashboardSpecificState.showSkipped = false;
-
- var container = document.createElement('div');
- container.innerHTML = htmlForTestsWithExpectationsButNoFailures(builder);
- equal(container.querySelectorAll('#passing-tests > div').length, 0);
- equal(container.querySelectorAll('#skipped-tests > div').length, 0);
-});
-
-test('headerForTestTableHtml', 1, function() {
- var container = document.createElement('div');
- container.innerHTML = headerForTestTableHtml();
- equal(container.querySelectorAll('input').length, 5);
-});
-
-test('htmlForTestTypeSwitcherGroup', 6, function() {
- var historyInstance = new history.History(flakinessConfig);
- // FIXME(jparent): Remove this once global isn't used.
- g_history = historyInstance;
- var container = document.createElement('div');
- historyInstance.crossDashboardState.testType = 'ui_tests';
- container.innerHTML = ui.html.testTypeSwitcher(true);
- var selects = container.querySelectorAll('select');
- equal(selects.length, 2);
- var group = selects[1];
- equal(group.parentNode.textContent.indexOf('Group:'), 0);
- equal(group.children.length, 1);
-
- historyInstance.crossDashboardState.testType = 'layout-tests';
- container.innerHTML = ui.html.testTypeSwitcher(true);
- var selects = container.querySelectorAll('select');
- equal(selects.length, 2);
- var group = selects[1];
- equal(group.parentNode.textContent.indexOf('Group:'), 0);
- equal(group.children.length, 1);
-});
-
-test('htmlForIndividualTestOnAllBuilders', 1, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
- equal(htmlForIndividualTestOnAllBuilders('foo/nonexistant.html'), '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>');
-});
-
-test('htmlForIndividualTestOnAllBuildersWithResultsLinksNonexistant', 1, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
- equal(htmlForIndividualTestOnAllBuildersWithResultsLinks('foo/nonexistant.html'),
- '<div class="not-found">Test not found. Either it does not exist, is skipped or passes on all platforms.</div>' +
- '<div class=expectations test=foo/nonexistant.html>' +
- '<div>' +
- '<span class=link onclick="g_history.setQueryParameter(\'showExpectations\', true)">Show results</span> | ' +
- '<span class=link onclick="g_history.setQueryParameter(\'showLargeExpectations\', true)">Show large thumbnails</span> | ' +
- '<b>Only shows actual results/diffs from the most recent *failure* on each bot.</b>' +
- '</div>' +
- '</div>');
-});
-
-test('htmlForIndividualTestOnAllBuildersWithResultsLinks', 1, function() {
- var historyInstance = resetGlobals();
- historyInstance.crossDashboardState.group = '@ToT - webkit.org';
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var builderName = 'Apple Lion Release WK2 (Tests)';
- var test = 'dummytest.html';
- g_testToResultsMap[test] = [createResultsObjectForTest(test, builderName)];
-
- equal(htmlForIndividualTestOnAllBuildersWithResultsLinks(test),
- '<table class=test-table><thead><tr>' +
- '<th sortValue=test><div class=table-header-content><span></span><span class=header-text>test</span></div></th>' +
- '<th sortValue=bugs><div class=table-header-content><span></span><span class=header-text>bugs</span></div></th>' +
- '<th sortValue=modifiers><div class=table-header-content><span></span><span class=header-text>modifiers</span></div></th>' +
- '<th sortValue=expectations><div class=table-header-content><span></span><span class=header-text>expectations</span></div></th>' +
- '<th sortValue=slowest><div class=table-header-content><span></span><span class=header-text>slowest run</span></div></th>' +
- '<th sortValue=flakiness colspan=10000><div class=table-header-content><span></span><span class=header-text>flakiness (numbers are runtimes in seconds)</span></div></th>' +
- '</tr></thead>' +
- '<tbody></tbody>' +
- '</table>' +
- '<div>The following builders either don\'t run this test (e.g. it\'s skipped) or all runs passed:</div>' +
- '<div class=skipped-builder-list>' +
- '<div class=skipped-builder>Apple Lion Debug WK2 (Tests)</div><div class=skipped-builder>GTK Linux 64-bit Release</div><div class=skipped-builder>Qt Linux Tests</div>' +
- '</div>' +
- '<div class=expectations test=dummytest.html>' +
- '<div><span class=link onclick="g_history.setQueryParameter(\'showExpectations\', true)">Show results</span> | ' +
- '<span class=link onclick="g_history.setQueryParameter(\'showLargeExpectations\', true)">Show large thumbnails</span>' +
- '<form onsubmit="g_history.setQueryParameter(\'revision\', revision.value);return false;">' +
- 'Show results for WebKit revision: <input name=revision placeholder="e.g. 65540" value="" id=revision-input>' +
- '</form></div>' +
- '</div>');
-});
-
-test('htmlForIndividualTests', 4, function() {
- var historyInstance = resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
- var test1 = 'foo/nonexistant.html';
- var test2 = 'bar/nonexistant.html';
-
- historyInstance.dashboardSpecificState.showChrome = false;
-
- var tests = [test1, test2];
- equal(htmlForIndividualTests(tests),
- '<h2><a href="http://trac.webkit.org/browser/trunk/LayoutTests/foo/nonexistant.html" target="_blank">foo/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuilders(test1) +
- '<div class=expectations test=foo/nonexistant.html>' +
- '<div><span class=link onclick=\"g_history.setQueryParameter(\'showExpectations\', true)\">Show results</span> | ' +
- '<span class=link onclick=\"g_history.setQueryParameter(\'showLargeExpectations\', true)\">Show large thumbnails</span> | ' +
- '<b>Only shows actual results/diffs from the most recent *failure* on each bot.</b></div>' +
- '</div>' +
- '<hr>' +
- '<h2><a href="http://trac.webkit.org/browser/trunk/LayoutTests/bar/nonexistant.html" target="_blank">bar/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuilders(test2) +
- '<div class=expectations test=bar/nonexistant.html>' +
- '<div><span class=link onclick=\"g_history.setQueryParameter(\'showExpectations\', true)\">Show results</span> | ' +
- '<span class=link onclick=\"g_history.setQueryParameter(\'showLargeExpectations\', true)\">Show large thumbnails</span> | ' +
- '<b>Only shows actual results/diffs from the most recent *failure* on each bot.</b></div>' +
- '</div>');
-
- tests = [test1];
- equal(htmlForIndividualTests(tests), htmlForIndividualTestOnAllBuilders(test1) +
- '<div class=expectations test=foo/nonexistant.html>' +
- '<div><span class=link onclick=\"g_history.setQueryParameter(\'showExpectations\', true)\">Show results</span> | ' +
- '<span class=link onclick=\"g_history.setQueryParameter(\'showLargeExpectations\', true)\">Show large thumbnails</span> | ' +
- '<b>Only shows actual results/diffs from the most recent *failure* on each bot.</b></div>' +
- '</div>');
-
- historyInstance.dashboardSpecificState.showChrome = true;
-
- equal(htmlForIndividualTests(tests),
- '<h2><a href="http://trac.webkit.org/browser/trunk/LayoutTests/foo/nonexistant.html" target="_blank">foo/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuildersWithResultsLinks(test1));
-
- tests = [test1, test2];
- equal(htmlForIndividualTests(tests),
- '<h2><a href="http://trac.webkit.org/browser/trunk/LayoutTests/foo/nonexistant.html" target="_blank">foo/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuildersWithResultsLinks(test1) + '<hr>' +
- '<h2><a href="http://trac.webkit.org/browser/trunk/LayoutTests/bar/nonexistant.html" target="_blank">bar/nonexistant.html</a></h2>' +
- htmlForIndividualTestOnAllBuildersWithResultsLinks(test2));
-});
-
-test('htmlForSingleTestRow', 1, function() {
- var historyInstance = resetGlobals();
- var builder = 'dummyBuilder';
- BUILDER_TO_MASTER[builder] = WEBKIT_BUILDER_MASTER;
- var test = createResultsObjectForTest('foo/exists.html', builder);
- historyInstance.dashboardSpecificState.showCorrectExpectations = true;
- g_resultsByBuilder[builder] = {buildNumbers: [2, 1], webkitRevision: [1234, 1233]};
- test.rawResults = [[1, 'F'], [2, 'I']];
- test.rawTimes = [[1, 0], [2, 5]];
- var expected = '<tr>' +
- '<td class="test-link"><span class="link" onclick="g_history.setQueryParameter(\'tests\',\'foo/exists.html\');">foo/exists.html</span>' +
- '<td class=options-container><a href="https://bugs.webkit.org/enter_bug.cgi?assigned_to=webkit-unassigned%40lists.webkit.org&product=WebKit&form_name=enter_bug&component=Tools%20%2F%20Tests&short_desc=Layout%20Test%20foo%2Fexists.html%20is%20failing&comment=The%20following%20layout%20test%20is%20failing%20on%20%5Binsert%20platform%5D%0A%0Afoo%2Fexists.html%0A%0AProbable%20cause%3A%0A%0A%5Binsert%20probable%20cause%5D" class="file-bug">FILE BUG</a>' +
- '<td class=options-container>' +
- '<td class=options-container>' +
- '<td><td title="TEXT. Click for more info." class="results F merge" onclick=\'showPopupForBuild(event, "dummyBuilder",0,"foo/exists.html")\'>&nbsp;' +
- '<td title="IMAGE. Click for more info." class="results I" onclick=\'showPopupForBuild(event, "dummyBuilder",1,"foo/exists.html")\'>5';
-
- equal(htmlForSingleTestRow(test), expected);
-});
-
-test('lookupVirtualTestSuite', 2, function() {
- equal(lookupVirtualTestSuite('fast/canvas/foo.html'), '');
- equal(lookupVirtualTestSuite('platform/chromium/virtual/gpu/fast/canvas/foo.html'), 'platform/chromium/virtual/gpu/fast/canvas');
-});
-
-test('baseTest', 2, function() {
- equal(baseTest('fast/canvas/foo.html', ''), 'fast/canvas/foo.html');
- equal(baseTest('platform/chromium/virtual/gpu/fast/canvas/foo.html', 'platform/chromium/virtual/gpu/fast/canvas'), 'fast/canvas/foo.html');
-});
-
-// FIXME: Create builders_tests.js and move this there.
-
-test('requestBuilderListAddsBuilderGroupEntry', 1, function() {
- var testBuilderGroups = { '@ToT - dummy.org': null };
- var builderGroup = new BuilderGroup();
- var groupName = '@ToT - dummy.org';
- requestBuilderList(testBuilderGroups, 'webkit.org', groupName, builderGroup, 'layout-tests');
-
- equal(testBuilderGroups['@ToT - dummy.org'], builderGroup);
-})
-
-test('sortTests', 4, function() {
- var test1 = createResultsObjectForTest('foo/test1.html', 'dummyBuilder');
- var test2 = createResultsObjectForTest('foo/test2.html', 'dummyBuilder');
- var test3 = createResultsObjectForTest('foo/test3.html', 'dummyBuilder');
- test1.modifiers = 'b';
- test2.modifiers = 'a';
- test3.modifiers = '';
-
- var tests = [test1, test2, test3];
- sortTests(tests, 'modifiers', FORWARD);
- deepEqual(tests, [test2, test1, test3]);
- sortTests(tests, 'modifiers', BACKWARD);
- deepEqual(tests, [test3, test1, test2]);
-
- test1.bugs = 'b';
- test2.bugs = 'a';
- test3.bugs = '';
-
- var tests = [test1, test2, test3];
- sortTests(tests, 'bugs', FORWARD);
- deepEqual(tests, [test2, test1, test3]);
- sortTests(tests, 'bugs', BACKWARD);
- deepEqual(tests, [test3, test1, test2]);
-});
-
-test('popup', 2, function() {
- ui.popup.show(document.body, 'dummy content');
- ok(document.querySelector('#popup'));
- ui.popup.hide();
- ok(!document.querySelector('#popup'));
-});
-
-test('gpuResultsPath', 3, function() {
- equal(gpuResultsPath('777777', 'Win7 Release (ATI)'), '777777_Win7_Release_ATI_');
- equal(gpuResultsPath('123', 'GPU Linux (dbg)(NVIDIA)'), '123_GPU_Linux_dbg_NVIDIA_');
- equal(gpuResultsPath('12345', 'GPU Mac'), '12345_GPU_Mac');
-});
-
-test('TestTrie', 3, function() {
- var builders = {
- "Dummy Chromium Windows Builder": true,
- "Dummy GTK Linux Builder": true,
- "Dummy Apple Mac Lion Builder": true
- };
-
- var resultsByBuilder = {
- "Dummy Chromium Windows Builder": {
- tests: {
- "foo": true,
- "foo/bar/1.html": true,
- "foo/bar/baz": true
- }
- },
- "Dummy GTK Linux Builder": {
- tests: {
- "bar": true,
- "foo/1.html": true,
- "foo/bar/2.html": true,
- "foo/bar/baz/1.html": true,
- }
- },
- "Dummy Apple Mac Lion Builder": {
- tests: {
- "foo/bar/3.html": true,
- "foo/bar/baz/foo": true,
- }
- }
- };
- var expectedTrie = {
- "foo": {
- "bar": {
- "1.html": true,
- "2.html": true,
- "3.html": true,
- "baz": {
- "1.html": true,
- "foo": true
- }
- },
- "1.html": true
- },
- "bar": true
- }
-
- var trie = new TestTrie(builders, resultsByBuilder);
- deepEqual(trie._trie, expectedTrie);
-
- var leafsOfCompleteTrieTraversal = [];
- var expectedLeafs = ["foo/bar/1.html", "foo/bar/baz/1.html", "foo/bar/baz/foo", "foo/bar/2.html", "foo/bar/3.html", "foo/1.html", "bar"];
- trie.forEach(function(triePath) {
- leafsOfCompleteTrieTraversal.push(triePath);
- });
- deepEqual(leafsOfCompleteTrieTraversal, expectedLeafs);
-
- var leafsOfPartialTrieTraversal = [];
- expectedLeafs = ["foo/bar/1.html", "foo/bar/baz/1.html", "foo/bar/baz/foo", "foo/bar/2.html", "foo/bar/3.html"];
- trie.forEach(function(triePath) {
- leafsOfPartialTrieTraversal.push(triePath);
- }, "foo/bar");
- deepEqual(leafsOfPartialTrieTraversal, expectedLeafs);
-});
-
-test('changeTestTypeInvalidatesGroup', 1, function() {
- var historyInstance = resetGlobals();
- var originalGroup = '@ToT - webkit.org';
- var originalTestType = 'layout-tests';
- loadBuildersList(originalGroup, originalTestType);
- historyInstance.crossDashboardState.group = originalGroup;
- historyInstance.crossDashboardState.testType = originalTestType;
-
- historyInstance.invalidateQueryParameters({'testType': 'ui_tests'});
- notEqual(historyInstance.crossDashboardState.group, originalGroup, "group should have been invalidated");
-});
-
-test('shouldHideTest', 10, function() {
- var historyInstance = new history.History(flakinessConfig);
- historyInstance.parseParameters();
- // FIXME(jparent): Change to use the flakiness_dashboard's history object
- // once it exists, rather than tracking global.
- g_history = historyInstance;
- var test = createResultsObjectForTest('foo/test.html', 'dummyBuilder');
-
- equal(shouldHideTest(test), true, 'default layout test, hide it.');
- historyInstance.dashboardSpecificState.showCorrectExpectations = true;
- equal(shouldHideTest(test), false, 'show correct expectations.');
- historyInstance.dashboardSpecificState.showCorrectExpectations = false;
-
- test = createResultsObjectForTest('foo/test.html', 'dummyBuilder');
- test.isWontFixSkip = true;
- equal(shouldHideTest(test), true, 'by default hide these too');
- historyInstance.dashboardSpecificState.showWontFixSkip = true;
- equal(shouldHideTest(test), false, 'now we should show it');
- historyInstance.dashboardSpecificState.showWontFixSkip = false;
-
- test = createResultsObjectForTest('foo/test.html', 'dummyBuilder');
- test.isFlaky = true;
- equal(shouldHideTest(test), false, 'we show flaky tests by default');
- historyInstance.dashboardSpecificState.showFlaky = false;
- equal(shouldHideTest(test), true, 'do not show flaky test');
- historyInstance.dashboardSpecificState.showFlaky = true;
-
- test = createResultsObjectForTest('foo/test.html', 'dummyBuilder');
- test.slowestNonTimeoutCrashTime = MIN_SECONDS_FOR_SLOW_TEST + 1;
- equal(shouldHideTest(test), true, 'we hide slow tests by default');
- historyInstance.dashboardSpecificState.showSlow = true;
- equal(shouldHideTest(test), false, 'now show slow test');
- historyInstance.dashboardSpecificState.showSlow = false;
-
- test = createResultsObjectForTest('foo/test.html', 'dummyBuilder');
- historyInstance.crossDashboardState.testType = 'not layout tests';
- equal(shouldHideTest(test), false, 'show all non layout tests');
- test.isWontFixSkip = true;
- equal(shouldHideTest(test), false, 'show all non layout tests, even if wont fix');
-});
diff --git a/Tools/TestResultServer/static-dashboards/history.js b/Tools/TestResultServer/static-dashboards/history.js
deleted file mode 100644
index 3220c3df1..000000000
--- a/Tools/TestResultServer/static-dashboards/history.js
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright (C) 2013 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.
-
-
-var history = history || {};
-
-(function() {
-
-history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES = {
- group: null,
- showAllRuns: false,
- testType: 'layout-tests',
- useTestData: false,
-}
-
-history.validateParameter = function(state, key, value, validateFn)
-{
- if (validateFn())
- state[key] = value;
- else
- console.log(key + ' value is not valid: ' + value);
-}
-
-history.isTreeMap = function()
-{
- return string.endsWith(window.location.pathname, 'treemap.html');
-}
-
-// TODO(jparent): Make private once callers move here.
-history.queryHashAsMap = function()
-{
- var hash = window.location.hash;
- var paramsList = hash ? hash.substring(1).split('&') : [];
- var paramsMap = {};
- var invalidKeys = [];
- for (var i = 0; i < paramsList.length; i++) {
- var thisParam = paramsList[i].split('=');
- if (thisParam.length != 2) {
- console.log('Invalid query parameter: ' + paramsList[i]);
- continue;
- }
-
- paramsMap[thisParam[0]] = decodeURIComponent(thisParam[1]);
- }
-
- // FIXME: remove support for mapping from the master parameter to the group
- // one once the waterfall starts to pass in the builder name instead.
- if (paramsMap.master) {
- paramsMap.group = LEGACY_BUILDER_MASTERS_TO_GROUPS[paramsMap.master];
- if (!paramsMap.group)
- console.log('ERROR: Unknown master name: ' + paramsMap.master);
- window.location.hash = window.location.hash.replace('master=' + paramsMap.master, 'group=' + paramsMap.group);
- delete paramsMap.master;
- }
-
- return paramsMap;
-}
-
-history._diffStates = function(oldState, newState)
-{
- // If there is no old state, everything in the current state is new.
- if (!oldState)
- return newState;
-
- var changedParams = {};
- for (curKey in newState) {
- var oldVal = oldState[curKey];
- var newVal = newState[curKey];
- // Add new keys or changed values.
- if (!oldVal || oldVal != newVal)
- changedParams[curKey] = newVal;
- }
- return changedParams;
-}
-
-history._fillMissingValues = function(to, from)
-{
- for (var state in from) {
- if (!(state in to))
- to[state] = from[state];
- }
-}
-
-history.History = function(configuration)
-{
- this.crossDashboardState = {};
- this.dashboardSpecificState = {};
-
- if (configuration) {
- this._defaultDashboardSpecificStateValues = configuration.defaultStateValues;
- this._handleValidHashParameter = configuration.handleValidHashParameter;
- this._handleQueryParameterChange = configuration.handleQueryParameterChange || function(historyInstance, params) { return true; };
- this._dashboardSpecificInvalidatingParameters = configuration.invalidatingHashParameters;
- this._generatePage = configuration.generatePage;
- }
-}
-
-var RELOAD_REQUIRING_PARAMETERS = ['showAllRuns', 'group', 'testType'];
-
-var CROSS_DB_INVALIDATING_PARAMETERS = {
- 'testType': 'group'
-};
-
-history.History.prototype = {
- initialize: function()
- {
- window.onhashchange = this._handleLocationChange.bind(this);
- this._handleLocationChange();
- },
- isLayoutTestResults: function()
- {
- return this.crossDashboardState.testType == 'layout-tests';
- },
- isGPUTestResults: function()
- {
- return this.crossDashboardState.testType == 'gpu_tests';
- },
- parseCrossDashboardParameters: function()
- {
- this.crossDashboardState = {};
- var parameters = history.queryHashAsMap();
- for (parameterName in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES)
- this.parseParameter(parameters, parameterName);
-
- history._fillMissingValues(this.crossDashboardState, history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES);
- },
- _parseDashboardSpecificParameters: function()
- {
- this.dashboardSpecificState = {};
- var parameters = history.queryHashAsMap();
- for (parameterName in this._defaultDashboardSpecificStateValues)
- this.parseParameter(parameters, parameterName);
- },
- // TODO(jparent): Make private once callers move here.
- parseParameters: function()
- {
- var oldCrossDashboardState = this.crossDashboardState;
- var oldDashboardSpecificState = this.dashboardSpecificState;
-
- this.parseCrossDashboardParameters();
-
- // Some parameters require loading different JSON files when the value changes. Do a reload.
- if (Object.keys(oldCrossDashboardState).length) {
- for (var key in this.crossDashboardState) {
- if (oldCrossDashboardState[key] != this.crossDashboardState[key] && RELOAD_REQUIRING_PARAMETERS.indexOf(key) != -1) {
- window.location.reload();
- return false;
- }
- }
- }
-
- this._parseDashboardSpecificParameters();
- var dashboardSpecificDiffState = history._diffStates(oldDashboardSpecificState, this.dashboardSpecificState);
-
- history._fillMissingValues(this.dashboardSpecificState, this._defaultDashboardSpecificStateValues);
-
- // FIXME: dashboard_base shouldn't know anything about specific dashboard specific keys.
- if (dashboardSpecificDiffState.builder)
- delete this.dashboardSpecificState.tests;
- if (this.dashboardSpecificState.tests)
- delete this.dashboardSpecificState.builder;
-
- var shouldGeneratePage = true;
- if (Object.keys(dashboardSpecificDiffState).length)
- shouldGeneratePage = this._handleQueryParameterChange(this, dashboardSpecificDiffState);
- return shouldGeneratePage;
- },
- // TODO(jparent): Make private once callers move here.
- parseParameter: function(parameters, key)
- {
- if (!(key in parameters))
- return;
- var value = parameters[key];
- if (!this._handleValidHashParameterWrapper(key, value))
- console.log("Invalid query parameter: " + key + '=' + value);
- },
- // Takes a key and a value and sets the this.dashboardSpecificState[key] = value iff key is
- // a valid hash parameter and the value is a valid value for that key. Handles
- // cross-dashboard parameters then falls back to calling
- // handleValidHashParameter for dashboard-specific parameters.
- //
- // @return {boolean} Whether the key what inserted into the this.dashboardSpecificState.
- _handleValidHashParameterWrapper: function(key, value)
- {
- switch(key) {
- case 'testType':
- history.validateParameter(this.crossDashboardState, key, value,
- function() { return TEST_TYPES.indexOf(value) != -1; });
- return true;
-
- case 'group':
- history.validateParameter(this.crossDashboardState, key, value,
- function() {
- return value in LAYOUT_TESTS_BUILDER_GROUPS;
- });
- return true;
-
- case 'useTestData':
- case 'showAllRuns':
- this.crossDashboardState[key] = value == 'true';
- return true;
-
- default:
- return this._handleValidHashParameter(this, key, value);
- }
- },
- queryParameterValue: function(parameter)
- {
- return this.dashboardSpecificState[parameter] || this.crossDashboardState[parameter];
- },
- // Sets the page state. Takes varargs of key, value pairs.
- setQueryParameter: function(var_args)
- {
- var queryParamsAsState = {};
- for (var i = 0; i < arguments.length; i += 2) {
- var key = arguments[i];
- queryParamsAsState[key] = arguments[i + 1];
- }
-
- this.invalidateQueryParameters(queryParamsAsState);
-
- var newState = this._combinedDashboardState();
- for (var key in queryParamsAsState) {
- newState[key] = queryParamsAsState[key];
- }
-
- // Note: We use window.location.hash rather that window.location.replace
- // because of bugs in Chrome where extra entries were getting created
- // when back button was pressed and full page navigation was occuring.
- // FIXME: file those bugs.
- window.location.hash = this._permaLinkURLHash(newState);
- },
- toggleQueryParameter: function(param)
- {
- this.setQueryParameter(param, !this.queryParameterValue(param));
- },
- invalidateQueryParameters: function(queryParamsAsState)
- {
- for (var key in queryParamsAsState) {
- if (key in CROSS_DB_INVALIDATING_PARAMETERS)
- delete this.crossDashboardState[CROSS_DB_INVALIDATING_PARAMETERS[key]];
- if (this._dashboardSpecificInvalidatingParameters && key in this._dashboardSpecificInvalidatingParameters)
- delete this.dashboardSpecificState[this._dashboardSpecificInvalidatingParameters[key]];
- }
- },
- _joinParameters: function(stateObject)
- {
- var state = [];
- for (var key in stateObject) {
- var value = stateObject[key];
- if (value != this._defaultValue(key))
- state.push(key + '=' + encodeURIComponent(value));
- }
- return state.join('&');
- },
- _permaLinkURLHash: function(opt_state)
- {
- var state = opt_state || this._combinedDashboardState();
- return '#' + this._joinParameters(state);
- },
- _combinedDashboardState: function()
- {
- var combinedState = Object.create(this.dashboardSpecificState);
- for (var key in this.crossDashboardState)
- combinedState[key] = this.crossDashboardState[key];
- return combinedState;
- },
- _defaultValue: function(key)
- {
- if (key in this._defaultDashboardSpecificStateValues)
- return this._defaultDashboardSpecificStateValues[key];
- return history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
- },
- _handleLocationChange: function()
- {
- if (this.parseParameters())
- this._generatePage(this);
- }
-
-}
-
-})();
diff --git a/Tools/TestResultServer/static-dashboards/history_unittests.js b/Tools/TestResultServer/static-dashboards/history_unittests.js
deleted file mode 100644
index 75594536c..000000000
--- a/Tools/TestResultServer/static-dashboards/history_unittests.js
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright (C) 2013 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.
-
-test('queryHashAsMap', 2, function() {
- equal(window.location.hash, '#useTestData=true');
- deepEqual(history.queryHashAsMap(), {useTestData: 'true'});
-});
-
-test('diffStates', 5, function() {
- var newState = {a: 1, b: 2};
- deepEqual(history._diffStates(null, newState), newState);
-
- var oldState = {a: 1};
- deepEqual(history._diffStates(oldState, newState), {b: 2});
-
- // FIXME: This is kind of weird. I think the existing users of this code work correctly, but it's a confusing result.
- var oldState = {c: 1};
- deepEqual(history._diffStates(oldState, newState), {a:1, b: 2});
-
- var oldState = {a: 1, b: 2};
- deepEqual(history._diffStates(oldState, newState), {});
-
- var oldState = {a: 2, b: 3};
- deepEqual(history._diffStates(oldState, newState), {a: 1, b: 2});
-});
-
-test('parseCrossDashboardParameters', 2, function() {
- var historyInstance = new history.History();
- // FIXME(jparent): Remove this once parseParameters moves onto history obj.
- g_history = historyInstance;
- equal(window.location.hash, '#useTestData=true');
- historyInstance.parseCrossDashboardParameters();
-
- var expectedParameters = {};
- for (var key in history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES)
- expectedParameters[key] = history.DEFAULT_CROSS_DASHBOARD_STATE_VALUES[key];
- expectedParameters.useTestData = true;
-
- deepEqual(historyInstance.crossDashboardState, expectedParameters);
-});
diff --git a/Tools/TestResultServer/static-dashboards/loader.js b/Tools/TestResultServer/static-dashboards/loader.js
deleted file mode 100644
index 9504e9317..000000000
--- a/Tools/TestResultServer/static-dashboards/loader.js
+++ /dev/null
@@ -1,259 +0,0 @@
-// Copyright (C) 2012 Google Inc. All rights reserved.
-// Copyright (C) 2012 Zan Dobersek <zandobersek@gmail.com>
-//
-// 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.
-
-var loader = loader || {};
-
-(function() {
-
-var TEST_RESULTS_SERVER = 'http://webkit-test-results.appspot.com/';
-var CHROMIUM_EXPECTATIONS_URL = 'http://svn.webkit.org/repository/webkit/trunk/LayoutTests/platform/chromium/TestExpectations';
-
-function pathToBuilderResultsFile(builderName) {
- return TEST_RESULTS_SERVER + 'testfile?builder=' + builderName +
- '&master=' + builderMaster(builderName).name +
- '&testtype=' + g_history.crossDashboardState.testType + '&name=';
-}
-
-loader.request = function(url, success, error, opt_isBinaryData)
-{
- var xhr = new XMLHttpRequest();
- xhr.open('GET', url, true);
- if (opt_isBinaryData)
- xhr.overrideMimeType('text/plain; charset=x-user-defined');
- xhr.onreadystatechange = function(e) {
- if (xhr.readyState == 4) {
- if (xhr.status == 200)
- success(xhr);
- else
- error(xhr);
- }
- }
- xhr.send();
-}
-
-loader.Loader = function()
-{
- this._loadingSteps = [
- this._loadBuildersList,
- this._loadResultsFiles,
- this._loadExpectationsFiles,
- ];
-
- this._buildersThatFailedToLoad = [];
- this._staleBuilders = [];
- this._errors = new ui.Errors();
- // TODO(jparent): Pass in the appropriate history obj per db.
- this._history = g_history;
-}
-
-// TODO(aboxhall): figure out whether this is a performance bottleneck and
-// change calling code to understand the trie structure instead if necessary.
-loader.Loader._flattenTrie = function(trie, prefix)
-{
- var result = {};
- for (var name in trie) {
- var fullName = prefix ? prefix + "/" + name : name;
- var data = trie[name];
- if ("results" in data)
- result[fullName] = data;
- else {
- var partialResult = loader.Loader._flattenTrie(data, fullName);
- for (var key in partialResult) {
- result[key] = partialResult[key];
- }
- }
- }
- return result;
-}
-
-loader.Loader.prototype = {
- load: function()
- {
- this._loadNext();
- },
- showErrors: function()
- {
- this._errors.show();
- },
- _loadNext: function()
- {
- var loadingStep = this._loadingSteps.shift();
- if (!loadingStep) {
- this._addErrors();
- this._history.initialize();
- return;
- }
- loadingStep.apply(this);
- },
- _loadBuildersList: function()
- {
- loadBuildersList(currentBuilderGroupName(), this._history.crossDashboardState.testType);
- this._loadNext();
- },
- _loadResultsFiles: function()
- {
- for (var builderName in currentBuilders())
- this._loadResultsFileForBuilder(builderName);
- },
- _loadResultsFileForBuilder: function(builderName)
- {
- var resultsFilename;
- if (history.isTreeMap())
- resultsFilename = 'times_ms.json';
- else if (this._history.crossDashboardState.showAllRuns)
- resultsFilename = 'results.json';
- else
- resultsFilename = 'results-small.json';
-
- var resultsFileLocation = pathToBuilderResultsFile(builderName) + resultsFilename;
- loader.request(resultsFileLocation,
- partial(function(loader, builderName, xhr) {
- loader._handleResultsFileLoaded(builderName, xhr.responseText);
- }, this, builderName),
- partial(function(loader, builderName, xhr) {
- loader._handleResultsFileLoadError(builderName);
- }, this, builderName));
- },
- _handleResultsFileLoaded: function(builderName, fileData)
- {
- if (history.isTreeMap())
- this._processTimesJSONData(builderName, fileData);
- else
- this._processResultsJSONData(builderName, fileData);
-
- // We need this work-around for webkit.org/b/50589.
- if (!g_resultsByBuilder[builderName]) {
- this._handleResultsFileLoadError(builderName);
- return;
- }
-
- this._handleResourceLoad();
- },
- _processTimesJSONData: function(builderName, fileData)
- {
- // FIXME: We should probably include the builderName in the JSON
- // rather than relying on only loading one JSON file per page.
- g_resultsByBuilder[builderName] = JSON.parse(fileData);
- },
- _processResultsJSONData: function(builderName, fileData)
- {
- var builds = JSON.parse(fileData);
-
- var json_version = builds['version'];
- for (var builderName in builds) {
- if (builderName == 'version')
- continue;
-
- // If a test suite stops being run on a given builder, we don't want to show it.
- // Assume any builder without a run in two weeks for a given test suite isn't
- // running that suite anymore.
- // FIXME: Grab which bots run which tests directly from the buildbot JSON instead.
- var lastRunSeconds = builds[builderName].secondsSinceEpoch[0];
- if ((Date.now() / 1000) - lastRunSeconds > ONE_WEEK_SECONDS)
- continue;
-
- if ((Date.now() / 1000) - lastRunSeconds > ONE_DAY_SECONDS)
- this._staleBuilders.push(builderName);
-
- if (json_version >= 4)
- builds[builderName][TESTS_KEY] = loader.Loader._flattenTrie(builds[builderName][TESTS_KEY]);
- g_resultsByBuilder[builderName] = builds[builderName];
- }
- },
- _handleResultsFileLoadError: function(builderName)
- {
- console.error('Failed to load results file for ' + builderName + '.');
-
- // FIXME: loader shouldn't depend on state defined in dashboard_base.js.
- this._buildersThatFailedToLoad.push(builderName);
-
- // Remove this builder from builders, so we don't try to use the
- // data that isn't there.
- delete currentBuilders()[builderName];
-
- // Proceed as if the resource had loaded.
- this._handleResourceLoad();
- },
- _handleResourceLoad: function()
- {
- if (this._haveResultsFilesLoaded())
- this._loadNext();
- },
- _haveResultsFilesLoaded: function()
- {
- for (var builder in currentBuilders()) {
- if (!g_resultsByBuilder[builder])
- return false;
- }
- return true;
- },
- _loadExpectationsFiles: function()
- {
- if (!isFlakinessDashboard() && !this._history.crossDashboardState.useTestData) {
- this._loadNext();
- return;
- }
-
- var expectationsFilesToRequest = {};
- traversePlatformsTree(function(platform, platformName) {
- if (platform.fallbackPlatforms)
- platform.fallbackPlatforms.forEach(function(fallbackPlatform) {
- var fallbackPlatformObject = platformObjectForName(fallbackPlatform);
- if (fallbackPlatformObject.expectationsDirectory && !(fallbackPlatform in expectationsFilesToRequest))
- expectationsFilesToRequest[fallbackPlatform] = EXPECTATIONS_URL_BASE_PATH + fallbackPlatformObject.expectationsDirectory + '/TestExpectations';
- });
-
- if (platform.expectationsDirectory)
- expectationsFilesToRequest[platformName] = EXPECTATIONS_URL_BASE_PATH + platform.expectationsDirectory + '/TestExpectations';
- });
-
- for (platformWithExpectations in expectationsFilesToRequest)
- loader.request(expectationsFilesToRequest[platformWithExpectations],
- partial(function(loader, platformName, xhr) {
- g_expectationsByPlatform[platformName] = getParsedExpectations(xhr.responseText);
-
- delete expectationsFilesToRequest[platformName];
- if (!Object.keys(expectationsFilesToRequest).length)
- loader._loadNext();
- }, this, platformWithExpectations),
- partial(function(platformName, xhr) {
- console.error('Could not load expectations file for ' + platformName);
- }, platformWithExpectations));
- },
- _addErrors: function()
- {
- if (this._buildersThatFailedToLoad.length)
- this._errors.addError('ERROR: Failed to get data from ' + this._buildersThatFailedToLoad.toString() +'.');
-
- if (this._staleBuilders.length)
- this._errors.addError('ERROR: Data from ' + this._staleBuilders.toString() + ' is more than 1 day stale.');
- }
-}
-
-})();
diff --git a/Tools/TestResultServer/static-dashboards/loader_unittests.js b/Tools/TestResultServer/static-dashboards/loader_unittests.js
deleted file mode 100644
index fb92c1286..000000000
--- a/Tools/TestResultServer/static-dashboards/loader_unittests.js
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright (C) Zan Dobersek <zandobersek@gmail.com>
-//
-// 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.
-
-module('loader');
-
-test('loading steps', 1, function() {
- resetGlobals();
- var loadedSteps = [];
- g_history._handleLocationChange = function() {
- deepEqual(loadedSteps, ['step 1', 'step 2']);
- }
- var resourceLoader = new loader.Loader();
- function loadingStep1() {
- loadedSteps.push('step 1');
- resourceLoader.load();
- }
- function loadingStep2() {
- loadedSteps.push('step 2');
- resourceLoader.load();
- }
-
- resourceLoader._loadingSteps = [loadingStep1, loadingStep2];
- resourceLoader.load();
-});
-
-// Total number of assertions is 1 for the deepEqual of the builder lists
-// and then 2 per builder (one for ok, one for deepEqual of tests).
-test('results files loading', 9, function() {
- resetGlobals();
- var expectedLoadedBuilders = ['Apple Lion Debug WK2 (Tests)', 'Apple Lion Release WK2 (Tests)', 'GTK Linux 64-bit Release', 'Qt Linux Tests'];
- var loadedBuilders = [];
- var resourceLoader = new loader.Loader();
- resourceLoader._loadNext = function() {
- deepEqual(loadedBuilders.sort(), expectedLoadedBuilders);
- loadedBuilders.forEach(function(builderName) {
- ok('secondsSinceEpoch' in g_resultsByBuilder[builderName]);
- deepEqual(g_resultsByBuilder[builderName].tests, {});
- });
- }
-
- var requestFunction = loader.request;
- loader.request = function(url, successCallback, errorCallback) {
- var builderName = /builder=([\w ().-]+)&/.exec(url)[1];
- loadedBuilders.push(builderName);
- successCallback({responseText: '{"version": 4, "' + builderName + '": {"secondsSinceEpoch": [' + Date.now() + '], "tests": {}}}'});
- }
-
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- try {
- resourceLoader._loadResultsFiles();
- } finally {
- loader.request = requestFunction;
- }
-});
-
-test('expectations files loading', 1, function() {
- resetGlobals();
- g_history.parseCrossDashboardParameters();
- var expectedLoadedPlatforms = ["efl", "efl-wk1", "efl-wk2", "gtk", "gtk-wk2",
- "mac", "mac-lion", "mac-wk2", "mac-wk2", "qt", "win", "wk2"];
- var loadedPlatforms = [];
- var resourceLoader = new loader.Loader();
- resourceLoader._loadNext = function() {
- deepEqual(loadedPlatforms.sort(), expectedLoadedPlatforms);
- }
-
- var requestFunction = loader.request;
- loader.request = function(url, successCallback, errorCallback) {
- loadedPlatforms.push(/LayoutTests\/platform\/(.+)\/TestExpectations/.exec(url)[1]);
- successCallback({responseText: ''});
- }
-
- try {
- resourceLoader._loadExpectationsFiles();
- } finally {
- loader.request = requestFunction;
- }
-});
-
-test('results file failing to load', 2, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var resourceLoader = new loader.Loader();
- var resourceLoadCount = 0;
- resourceLoader._handleResourceLoad = function() {
- resourceLoadCount++;
- }
-
- var builder1 = 'builder1';
- currentBuilders()[builder1] = true;
- resourceLoader._handleResultsFileLoadError(builder1);
-
- var builder2 = 'builder2';
- currentBuilders()[builder2] = true;
- resourceLoader._handleResultsFileLoadError(builder2);
-
- deepEqual(resourceLoader._buildersThatFailedToLoad, [builder1, builder2]);
- equal(resourceLoadCount, 2);
-
-});
-
-test('Default builder gets set.', 3, function() {
- resetGlobals();
- loadBuildersList('@ToT - webkit.org', 'layout-tests');
-
- var defaultBuilder = currentBuilderGroup().defaultBuilder();
- ok(defaultBuilder, "Default builder should exist.");
-
- // Simulate error loading the default builder data, then make sure
- // a new defaultBuilder is set, and isn't the now invalid one.
- var resourceLoader = new loader.Loader();
- resourceLoader._handleResultsFileLoadError(defaultBuilder);
- var newDefaultBuilder = currentBuilderGroup().defaultBuilder();
- ok(newDefaultBuilder, "There should still be a default builder.");
- notEqual(newDefaultBuilder, defaultBuilder, "Default builder should not be the old default builder");
-});
-
-test('addBuilderLoadErrors', 1, function() {
- var resourceLoader = new loader.Loader();
- resourceLoader._buildersThatFailedToLoad = ['builder1', 'builder2'];
- resourceLoader._staleBuilders = ['staleBuilder1'];
- resourceLoader._addErrors();
- equal(resourceLoader._errors._messages, 'ERROR: Failed to get data from builder1,builder2.<br>ERROR: Data from staleBuilder1 is more than 1 day stale.<br>');
-});
-
-
-test('flattenTrie', 1, function() {
- resetGlobals();
- var tests = {
- 'bar.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- 'foo': {
- 'bar': {
- 'baz.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- }
- }
- };
- var expectedFlattenedTests = {
- 'bar.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- 'foo/bar/baz.html': {'results': [[100, 'F']], 'times': [[100, 0]]},
- };
- equal(JSON.stringify(loader.Loader._flattenTrie(tests)), JSON.stringify(expectedFlattenedTests))
-});
diff --git a/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html b/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html
deleted file mode 100644
index 161ecbb64..000000000
--- a/Tools/TestResultServer/static-dashboards/run-embedded-unittests.html
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2012 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:
-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. 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 INC. 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>
-<head>
-<link rel="stylesheet" href="../../../Source/ThirdParty/qunit/qunit/qunit.css">
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
-<script src="../../../Source/ThirdParty/qunit/qunit/qunit.js"></script>
-</head>
-<body>
-<h1 id="qunit-header">Test Results Server JavaScript Unit Tests</h1>
-<h2 id="qunit-banner"></h2>
-<div id="qunit-testrunner-toolbar"></div>
-<h2 id="qunit-userAgent"></h2>
-<ol id="qunit-tests"></ol>
-
-<link rel="stylesheet" href="flakiness_dashboard.css"></link>
-<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
-<script src="builders.js"></script>
-<script src="builders_unittests.js"></script>
-
-<script>
-// Mimic being embedded. All our embedded checks compare window and parent.
-window.parent = null;
-</script>
-
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="history_unittests.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="ui.js"></script>
-<script src="loader.js"></script>
-<script src="loader_unittests.js"></script>
-<script>
- // Mock out loader.request so that we don't actually make xhrs for tests.
- loader.request = function(url, successCallback, errorCallback) {};
-</script>
-<script src="flakiness_dashboard.js"></script>
-
-<script>
-window.location.href = '#useTestData=true';
-</script>
-
-<script src="flakiness_dashboard_embedded_unittests.js"></script>
-<!-- FIXME: Split this up into multiple unittest.js, e.g. one for builders.js and one for dashboard_base.js. -->
-<script src="flakiness_dashboard_unittests.js"></script>
-
-</body>
-</html>
diff --git a/Tools/TestResultServer/static-dashboards/run-unittests.html b/Tools/TestResultServer/static-dashboards/run-unittests.html
deleted file mode 100644
index d33c65589..000000000
--- a/Tools/TestResultServer/static-dashboards/run-unittests.html
+++ /dev/null
@@ -1,64 +0,0 @@
-<!DOCTYPE html>
-<!--
-Copyright (C) 2012 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:
-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. 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 INC. 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>
-<head>
-<link rel="stylesheet" href="../../../Source/ThirdParty/qunit/qunit/qunit.css">
-<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js"></script>
-<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.15/jquery-ui.min.js"></script>
-<script src="../../../Source/ThirdParty/qunit/qunit/qunit.js"></script>
-</head>
-<body>
-<h1 id="qunit-header">Test Results Server JavaScript Unit Tests</h1>
-<h2 id="qunit-banner"></h2>
-<div id="qunit-testrunner-toolbar"></div>
-<h2 id="qunit-userAgent"></h2>
-<ol id="qunit-tests"></ol>
-
-<link rel="stylesheet" href="flakiness_dashboard.css"></link>
-<link rel="stylesheet" href="flakiness_dashboard_tests.css"></link>
-<script src="builders.js"></script>
-<script src="builders_unittests.js"></script>
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="history_unittests.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="ui.js"></script>
-<script src="loader.js"></script>
-<script src="loader_unittests.js"></script>
-<script>
- // Mock out loader.request so that we don't actually make xhrs for tests.
- loader.request = function(url, successCallback, errorCallback) {};
-</script>
-<script src="flakiness_dashboard.js"></script>
-
-<script>
-window.location.href = '#useTestData=true';
-</script>
-
-<!-- FIXME: Split this up into multiple unittest.js, e.g. one for builders.js and one for dashboard_base.js. -->
-<script src="flakiness_dashboard_unittests.js"></script>
-</body>
-</html>
diff --git a/Tools/TestResultServer/static-dashboards/string.js b/Tools/TestResultServer/static-dashboards/string.js
deleted file mode 100644
index 3e1f7f9fb..000000000
--- a/Tools/TestResultServer/static-dashboards/string.js
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright (C) 2013 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.
-
-// @fileoverview Generic string utility functions.
-var string = string || {};
-
-(function() {
-
-string.contains = function(a, b)
-{
- return a.indexOf(b) != -1;
-}
-
-string.caseInsensitiveContains = function(a, b)
-{
- return a.match(new RegExp(b, 'i'));
-}
-
-string.startsWith = function(a, b)
-{
- return a.indexOf(b) == 0;
-}
-
-string.endsWith = function(a, b)
-{
- return a.lastIndexOf(b) == a.length - b.length;
-}
-
-string.isValidName = function(str)
-{
- return str.match(/[A-Za-z0-9\-\_,]/);
-}
-
-string.trimString = function(str)
-{
- return str.replace(/^\s+|\s+$/g, '');
-}
-
-string.collapseWhitespace = function(str)
-{
- return str.replace(/\s+/g, ' ');
-}
-
-})(); \ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/timeline_explorer.html b/Tools/TestResultServer/static-dashboards/timeline_explorer.html
deleted file mode 100644
index 05d2b51b8..000000000
--- a/Tools/TestResultServer/static-dashboards/timeline_explorer.html
+++ /dev/null
@@ -1,116 +0,0 @@
-<!-- Copyright (C) 2011 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.
--->
-<!DOCTYPE HTML>
-<html>
-
-<head>
-<title>Test Timeline Explorer</title>
-<style>
-body {
- font-family: Helvetica, Arial, sans-serif;
- font-size: 12px;
-}
-
-#timeline-container {
- position: relative;
-}
-
-#inspector-container {
- width: 300px;
- float: right;
- border-left: 1px dashed;
- padding-left: 5px;
- margin-left: 5px;
-}
-
-#inspector-container caption {
- background: #eee;
- font-weight: bold;
- padding: 2px;
- font-size: 14px;
- text-align: left;
-}
-
-#inspector-table {
- width: 100%;
-}
-
-#inspector-table td {
- white-space: nowrap;
-}
-
-#inspector-table .label {
- color: #666;
- text-align: right;
- width: 10em;
-}
-
-#inspector-table .delta.positive {
- color: #090;
-}
-
-#inspector-table .delta.negative {
- color: #900;
-}
-
-#inspector-container .buttons {
- padding: 1em 0;
- text-align: center;
-}
-
-#inspector-container #build-buttons {
- border-top: 1px dashed;
-}
-
-#indicator {
- top: 0;
- width: 1px;
- position: absolute;
- background: red;
-}
-</style>
-<script src="dygraph-combined.js"></script>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="timeline_explorer.js"></script>
-<script src="ui.js"></script>
-</head>
-<body>
- <div id="test-type-switcher"></div>
-
- <div id="inspector-container" style="visibility: hidden">
- <p>Click on a point on the graph to see details about that build.</p>
- <p>Click and drag on the graph to zoom in to that period.</p>
- </div>
- <div id="timeline-container">Loading...</div>
-</body>
-</html>
diff --git a/Tools/TestResultServer/static-dashboards/timeline_explorer.js b/Tools/TestResultServer/static-dashboards/timeline_explorer.js
deleted file mode 100644
index dffab47a1..000000000
--- a/Tools/TestResultServer/static-dashboards/timeline_explorer.js
+++ /dev/null
@@ -1,480 +0,0 @@
-// Copyright (C) 2013 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.
-var FAILING_TESTS_DATASET_NAME = 'Failing tests';
-
-var g_dygraph;
-var g_buildIndicesByTimestamp = {};
-var g_currentBuildIndex = -1;
-var g_currentBuilderTestResults;
-
-var defaultDashboardSpecificStateValues = {
- builder: null,
- buildTimestamp: -1,
- ignoreFlakyTests: true
-};
-
-var DB_SPECIFIC_INVALIDATING_PARAMETERS = {
- 'testType': 'builder',
- 'group': 'builder'
-};
-
-function generatePage(historyInstance)
-{
- g_buildIndicesByTimestamp = {};
- var results = g_resultsByBuilder[historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()];
-
- for (var i = 0; i < results[FIXABLE_COUNTS_KEY].length; i++) {
- var buildDate = new Date(results[TIMESTAMPS_KEY][i] * 1000);
- g_buildIndicesByTimestamp[buildDate.getTime()] = i;
- }
-
- if (historyInstance.dashboardSpecificState.buildTimestamp != -1 && historyInstance.dashboardSpecificState.buildTimestamp in g_buildIndicesByTimestamp) {
- var newBuildIndex = g_buildIndicesByTimestamp[historyInstance.dashboardSpecificState.buildTimestamp];
-
- if (newBuildIndex == g_currentBuildIndex) {
- // This happens when selectBuild is called, which updates the UI
- // immediately, in addition to updating the location hash (we don't
- // just rely on the hash change since we don't want to regenerate the
- // whole page just because the user clicked on something)
- return;
- } else if (newBuildIndex)
- g_currentBuildIndex = newBuildIndex;
- }
-
- initCurrentBuilderTestResults();
-
- $('test-type-switcher').innerHTML = ui.html.testTypeSwitcher( false,
- ui.html.checkbox('ignoreFlakyTests', 'Ignore flaky tests', historyInstance.dashboardSpecificState.ignoreFlakyTests, 'g_currentBuildIndex = -1')
- );
-
- updateTimelineForBuilder();
-}
-
-function handleValidHashParameter(historyInstance, key, value)
-{
- switch(key) {
- case 'builder':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() { return value in currentBuilders(); });
- return true;
- case 'buildTimestamp':
- historyInstance.dashboardSpecificState.buildTimestamp = parseInt(value, 10);
- return true;
- case 'ignoreFlakyTests':
- historyInstance.dashboardSpecificState.ignoreFlakyTests = value == 'true';
- return true;
- default:
- return false;
- }
-}
-
-var timelineConfig = {
- defaultStateValues: defaultDashboardSpecificStateValues,
- generatePage: generatePage,
- handleValidHashParameter: handleValidHashParameter,
- invalidatingHashParameters: DB_SPECIFIC_INVALIDATING_PARAMETERS
-};
-
-// FIXME(jparent): Eventually remove all usage of global history object.
-var g_history = new history.History(timelineConfig);
-g_history.parseCrossDashboardParameters();
-
-function initCurrentBuilderTestResults()
-{
- var startTime = Date.now();
- g_currentBuilderTestResults = _decompressResults(g_resultsByBuilder[g_history.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()]);
- console.log( 'Time to get test results by build: ' + (Date.now() - startTime));
-}
-
-function updateTimelineForBuilder()
-{
- var builder = g_history.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder();
- var results = g_resultsByBuilder[builder];
- var graphData = [];
-
- var annotations = [];
-
- // Dygraph prefers to be handed data in chronological order.
- for (var i = results[FIXABLE_COUNTS_KEY].length - 1; i >= 0; i--) {
- var buildDate = new Date(results[TIMESTAMPS_KEY][i] * 1000);
- // FIXME: Find a better way to exclude outliers. This is just so we
- // exclude runs where every test failed.
- var failureCount = Math.min(results[FIXABLE_COUNT_KEY][i], 10000);
-
- if (g_history.dashboardSpecificState.ignoreFlakyTests)
- failureCount -= g_currentBuilderTestResults.flakyDeltasByBuild[i].total || 0;
-
- graphData.push([buildDate, failureCount]);
- }
-
- var windowWidth = document.documentElement.clientWidth;
- var windowHeight = document.documentElement.clientHeight;
- var switcherNode = $('test-type-switcher');
- var inspectorNode = $('inspector-container');
- var graphWidth = windowWidth - 20 - inspectorNode.offsetWidth;
- var graphHeight = windowHeight - switcherNode.offsetTop - switcherNode.offsetHeight - 20;
-
- var containerNode = $('timeline-container');
- containerNode.style.height = graphHeight + 'px';
- containerNode.style.width = graphWidth + 'px';
- inspectorNode.style.height = graphHeight + 'px';
-
- g_dygraph = new Dygraph(
- containerNode,
- graphData, {
- labels: ['Date', FAILING_TESTS_DATASET_NAME],
- width: graphWidth,
- height: graphHeight,
- clickCallback: function(event, date) {
- selectBuild(results, builder, g_dygraph, g_buildIndicesByTimestamp[date]);
- },
- drawCallback: function(dygraph, isInitial) {
- if (isInitial)
- return;
- updateBuildIndicator(results, dygraph);
- },
- // xValueParser is necessary for annotations to work, even though we
- // already have Date instances
- xValueParser: function(input) { return input.getTime(); }
- });
- if (annotations.length)
- g_dygraph.setAnnotations(annotations);
-
- inspectorNode.style.visibility = 'visible';
-
- if (g_currentBuildIndex != -1)
- selectBuild(results, builder, g_dygraph, g_currentBuildIndex);
-}
-
-function selectBuild(results, builder, dygraph, index)
-{
- g_currentBuildIndex = index;
- updateBuildIndicator(results, dygraph);
- updateBuildInspector(results, builder, dygraph, index);
- g_history.setQueryParameter('buildTimestamp', results[TIMESTAMPS_KEY][index] * 1000);
-}
-
-function updateBuildIndicator(results, dygraph)
-{
- var indicatorNode = $('indicator');
-
- if (!indicatorNode) {
- var containerNode = $('timeline-container');
- indicatorNode = document.createElement('div');
- indicatorNode.id = 'indicator';
- indicatorNode.style.height = containerNode.offsetHeight + 'px';
- containerNode.appendChild(indicatorNode);
- }
-
- if (g_currentBuildIndex == -1)
- indicatorNode.style.display = 'none';
- else {
- indicatorNode.style.display = 'block';
- var buildDate = new Date(results[TIMESTAMPS_KEY][g_currentBuildIndex] * 1000);
- var domCoords = dygraph.toDomCoords(buildDate, 0);
- indicatorNode.style.left = domCoords[0] + 'px';
- }
-}
-
-function updateBuildInspector(results, builder, dygraph, index)
-{
- var html = '<table id="inspector-table"><caption>Details</caption>';
-
- function addRow(label, value)
- {
- html += '<tr><td class="label">' + label + '</td><td>' + value + '</td></tr>';
- }
-
- // Builder and results links
- var buildNumber = results[BUILD_NUMBERS_KEY][index];
- addRow('', '');
- var master = builderMaster(builder);
- var buildUrl = master.logPath(builder, results[BUILD_NUMBERS_KEY][index]);
- var resultsUrl = 'http://build.webkit.org/results/' + builder + '/r' + results[WEBKIT_REVISIONS_KEY][index] +
- ' (' + results[BUILD_NUMBERS_KEY][index] + ')';
-
- addRow('Build:', '<a href="' + buildUrl + '" target="_blank">' + buildNumber + '</a> (<a href="' + resultsUrl + '" target="_blank">results</a>)');
-
- // Revision link
- addRow('WebKit change:', ui.html.webKitRevisionLink(results, index));
-
- // Test status/counts
- addRow('', '');
-
- function addNumberRow(label, currentValue, previousValue)
- {
- var delta = currentValue - previousValue;
- var deltaText = ''
- if (delta < 0)
- deltaText = ' <span class="delta negative">' + delta + '</span>';
- else if (delta > 0)
- deltaText = ' <span class="delta positive">+' + delta + '</span>';
-
- addRow(label, currentValue + deltaText);
- }
-
- var expectations = expectationsMap();
- var flakyDeltasByBuild = g_currentBuilderTestResults.flakyDeltasByBuild;
- for (var expectationKey in expectations) {
- if (expectationKey in results[FIXABLE_COUNTS_KEY][index]) {
- var currentCount = results[FIXABLE_COUNTS_KEY][index][expectationKey];
- var previousCount = results[FIXABLE_COUNTS_KEY][index + 1][expectationKey];
- if (g_history.dashboardSpecificState.ignoreFlakyTests) {
- currentCount -= flakyDeltasByBuild[index][expectationKey] || 0;
- previousCount -= flakyDeltasByBuild[index + 1][expectationKey] || 0;
- }
- addNumberRow(expectations[expectationKey], currentCount, previousCount);
- }
- }
-
- var currentTotal = results[FIXABLE_COUNT_KEY][index];
- var previousTotal = results[FIXABLE_COUNT_KEY][index + 1];
- if (g_history.dashboardSpecificState.ignoreFlakyTests) {
- currentTotal -= flakyDeltasByBuild[index].total || 0;
- previousTotal -= flakyDeltasByBuild[index + 1].total || 0;
- }
- addNumberRow('Total failing tests:', currentTotal, previousTotal);
-
- html += '</table>';
-
- html += '<div id="changes-button" class="buttons">';
- html += '<button>Show changed test results</button>';
- html += '</div>';
-
- html += '<div id="build-buttons" class="buttons">';
- html += '<button>Previous build</button> <button>Next build</button>';
- html += '</div>';
-
- var inspectorNode = $('inspector-container');
- inspectorNode.innerHTML = html;
-
- inspectorNode.getElementsByTagName('button')[0].onclick = function() {
- showResultsDelta(index, buildNumber, buildUrl, resultsUrl);
- };
- inspectorNode.getElementsByTagName('button')[1].onclick = function() {
- selectBuild(results, builder, dygraph, index + 1);
- };
- inspectorNode.getElementsByTagName('button')[2].onclick = function() {
- selectBuild(results, builder, dygraph, index - 1);
- };
-}
-
-function showResultsDelta(index, buildNumber, buildUrl, resultsUrl)
-{
- var flakyTests = g_currentBuilderTestResults.flakyTests;
- var currentResults = g_currentBuilderTestResults.resultsByBuild[index];
- var testNames = g_currentBuilderTestResults.testNames;
- var previousResults = g_currentBuilderTestResults.resultsByBuild[index + 1];
- var expectations = expectationsMap();
-
- var deltas = {};
- function addDelta(category, testIndex)
- {
- if (g_history.dashboardSpecificState.ignoreFlakyTests && flakyTests[testIndex])
- return;
- if (!(category in deltas))
- deltas[category] = [];
- var testName = testNames[testIndex];
- var flakinessDashboardUrl = 'flakiness_dashboard.html' + (location.hash ? location.hash + '&' : '#') + 'tests=' + testName;
- var html = '<a href="' + flakinessDashboardUrl + '">' + testName + '</a>';
- if (flakyTests[testIndex])
- html += ' <span style="color: #f66">possibly flaky</span>';
- deltas[category].push(html);
- }
-
- for (var testIndex = 0; testIndex < currentResults.length; testIndex++) {
- if (currentResults[testIndex] === undefined)
- continue;
-
- if (previousResults[testIndex] !== undefined) {
- if (currentResults[testIndex] == previousResults[testIndex])
- continue;
- addDelta('Was <b>' + expectations[previousResults[testIndex]] + '</b> now <b>' + expectations[currentResults[testIndex]] + '</b>', testIndex);
- } else
- addDelta('Newly <b>' + expectations[currentResults[testIndex]] + '</b>', testIndex);
- }
-
- for (var testIndex = 0; testIndex < previousResults.length; testIndex++) {
- if (previousResults[testIndex] === undefined)
- continue;
- if (currentResults[testIndex] === undefined)
- addDelta('Was <b>' + expectations[previousResults[testIndex]] + '</b>', testIndex);
- }
-
- var html = '';
-
- html += '<head><base target="_blank"></head>';
- html += '<h1>Changes in test results</h1>';
-
- html += '<p>For build <a href="' + buildUrl + '" target="_blank">' +
- buildNumber + '</a> ' + '(<a href="' + resultsUrl +
- '" target="_blank">results</a>)</p>';
-
- for (var deltaCategory in deltas) {
- html += '<p><div>' + deltaCategory + ' (' + deltas[deltaCategory].length + ')</div><ul>';
- deltas[deltaCategory].forEach(function(deltaHtml) {
- html += '<li>' + deltaHtml + '</li>';
- });
- html += '</ul></p>';
- }
-
- var deltaWindow = window.open();
- deltaWindow.document.write(html);
-}
-
-var _FAILURE_EXPECTATIONS = {
- 'T': 1,
- 'F': 1,
- 'C': 1,
- 'I': 1,
- 'Z': 1
-};
-
-// "Decompresses" the RLE-encoding of test results so that we can query it
-// by build index and test name.
-//
-// @param {Object} results results for the current builder
-// @return Object with these properties:
-// - testNames: array mapping test index to test names.
-// - resultsByBuild: array of builds, for each build a (sparse) array of test results by test index.
-// - flakyTests: array with the boolean value true at test indices that are considered flaky (more than one single-build failure).
-// - flakyDeltasByBuild: array of builds, for each build a count of flaky test results by expectation, as well as a total.
-function _decompressResults(builderResults)
-{
- var builderTestResults = builderResults[TESTS_KEY];
- var buildCount = builderResults[FIXABLE_COUNTS_KEY].length;
- var resultsByBuild = new Array(buildCount);
- var flakyDeltasByBuild = new Array(buildCount);
-
- // Pre-sizing the test result arrays for each build saves us ~250ms
- var testCount = 0;
- for (var testName in builderTestResults)
- testCount++;
- for (var i = 0; i < buildCount; i++) {
- resultsByBuild[i] = new Array(testCount);
- resultsByBuild[i][testCount - 1] = undefined;
- flakyDeltasByBuild[i] = {};
- }
-
- // Using indices instead of the full test names for each build saves us
- // ~1500ms
- var testIndex = 0;
- var testNames = new Array(testCount);
- var flakyTests = new Array(testCount);
-
- // Decompress and "invert" test results (by build instead of by test) and
- // determine which are flaky.
- for (var testName in builderTestResults) {
- var oneBuildFailureCount = 0;
-
- testNames[testIndex] = testName;
- var testResults = builderTestResults[testName].results;
- for (var i = 0, rleResult, currentBuildIndex = 0; (rleResult = testResults[i]) && currentBuildIndex < buildCount; i++) {
- var count = rleResult[RLE.LENGTH];
- var value = rleResult[RLE.VALUE];
-
- if (count == 1 && value in _FAILURE_EXPECTATIONS)
- oneBuildFailureCount++;
-
- for (var j = 0; j < count; j++) {
- resultsByBuild[currentBuildIndex++][testIndex] = value;
- if (currentBuildIndex == buildCount)
- break;
- }
- }
-
- if (oneBuildFailureCount > 2)
- flakyTests[testIndex] = true;
-
- testIndex++;
- }
-
- // Now that we know which tests are flaky, count the test results that are
- // from flaky tests for each build.
- testIndex = 0;
- for (var testName in builderTestResults) {
- if (!flakyTests[testIndex++])
- continue;
-
- var testResults = builderTestResults[testName].results;
- for (var i = 0, rleResult, currentBuildIndex = 0; (rleResult = testResults[i]) && currentBuildIndex < buildCount; i++) {
- var count = rleResult[RLE.LENGTH];
- var value = rleResult[RLE.VALUE];
-
- for (var j = 0; j < count; j++) {
- var buildTestResults = flakyDeltasByBuild[currentBuildIndex++];
- function addFlakyDelta(key)
- {
- if (!(key in buildTestResults))
- buildTestResults[key] = 0;
- buildTestResults[key]++;
- }
- addFlakyDelta(value);
- if (value != 'P' && value != 'N')
- addFlakyDelta('total');
- if (currentBuildIndex == buildCount)
- break;
- }
- }
- }
-
- return {
- testNames: testNames,
- resultsByBuild: resultsByBuild,
- flakyTests: flakyTests,
- flakyDeltasByBuild: flakyDeltasByBuild
- };
-}
-
-document.addEventListener('keydown', function(e) {
- if (g_currentBuildIndex == -1)
- return;
-
- var builder = g_history.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder();
- switch (e.keyIdentifier) {
- case 'Left':
- selectBuild(
- g_resultsByBuilder[builder],
- builder,
- g_dygraph,
- g_currentBuildIndex + 1);
- break;
- case 'Right':
- selectBuild(
- g_resultsByBuilder[builder],
- builder,
- g_dygraph,
- g_currentBuildIndex - 1);
- break;
- }
-});
-
-window.addEventListener('load', function() {
- var resourceLoader = new loader.Loader();
- resourceLoader.load();
-}, false);
diff --git a/Tools/TestResultServer/static-dashboards/treemap.html b/Tools/TestResultServer/static-dashboards/treemap.html
deleted file mode 100644
index acf9af99a..000000000
--- a/Tools/TestResultServer/static-dashboards/treemap.html
+++ /dev/null
@@ -1,121 +0,0 @@
-<!-- Copyright (C) 2011 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.
--->
-<!DOCTYPE html>
-<title>Test Runtimes</title>
-<link rel='stylesheet' href='webtreemap.css'></link>
-<style>
-body {
- display: -moz-box;
- display: -webkit-box;
- display: box;
- -moz-box-orient: vertical;
- -webkit-box-orient: vertical;
- box-orient: vertical;
-
- position: absolute;
- top: 0;
- right: 0;
- bottom: 0;
- left: 0;
-}
-
-td:first-child {
- text-align: left;
-}
-
-td {
- text-align: right;
-}
-
-#map {
- display: -moz-box;
- display: -webkit-box;
- display: box;
-
- -moz-box-flex: 1;
- -webkit-box-flex: 1;
- box-flex: 1;
-
- position: relative;
- cursor: pointer;
- -webkit-user-select: none;
- -moz-user-select: none;
-}
-
-.extra-dom {
- display: none;
- border: none;
- border-top: 1px dashed;
- padding: 4px;
- margin: 0;
- overflow: auto;
- cursor: auto;
- -webkit-user-select: text;
- -moz-user-select: text;
-}
-
-#focused-leaf {
- display: -webkit-box;
- display: -moz-box;
- -webkit-box-orient: vertical;
- -moz-box-orient: vertical;
-}
-
-#focused-leaf > .extra-dom {
- display: -webkit-box;
- display: -moz-box;
- -webkit-box-flex: 1;
- -moz-box-flex: 1;
-}
-
-#focused-leaf.webtreemap-node:hover {
- background: white;
-}
-
-#focused-leaf .webtreemap-caption:hover {
- background: #eee;
-}
-
-.error {
- color: red;
- font-style: italic;
-}
-</style>
-<script src="builders.js"></script>
-<script src="loader.js"></script>
-<script src="string.js"></script>
-<script src="history.js"></script>
-<script src="dashboard_base.js"></script>
-<script src="ui.js"></script>
-<script src="treemap.js"></script>
-<script src="webtreemap.js"></script>
-
-<div id='header-container'></div>
-<p>Click on a box to zoom in. Click on the outermost box to zoom out. <a href="" onclick="showAverages();return false;">Show averages</a></p>
-<div id='map'></div>
diff --git a/Tools/TestResultServer/static-dashboards/treemap.js b/Tools/TestResultServer/static-dashboards/treemap.js
deleted file mode 100644
index db99b8ab8..000000000
--- a/Tools/TestResultServer/static-dashboards/treemap.js
+++ /dev/null
@@ -1,287 +0,0 @@
-// Copyright (C) 2013 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.
-
-var defaultDashboardSpecificStateValues = {
- builder: null,
- treemapfocus: '',
-};
-
-var DB_SPECIFIC_INVALIDATING_PARAMETERS = {
- 'testType': 'builder',
- 'group': 'builder'
-};
-
-function generatePage(historyInstance)
-{
- $('header-container').innerHTML = ui.html.testTypeSwitcher();
-
- g_isGeneratingPage = true;
-
- var rawTree = g_resultsByBuilder[historyInstance.dashboardSpecificState.builder || currentBuilderGroup().defaultBuilder()];
- g_webTree = convertToWebTreemapFormat('LayoutTests', rawTree);
- appendTreemap($('map'), g_webTree);
-
- if (historyInstance.dashboardSpecificState.treemapfocus)
- focusPath(g_webTree, historyInstance.dashboardSpecificState.treemapfocus)
-
- g_isGeneratingPage = false;
-}
-
-function handleValidHashParameter(historyInstance, key, value)
-{
- switch(key) {
- case 'builder':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() { return value in currentBuilders(); });
- return true;
-
- case 'treemapfocus':
- history.validateParameter(historyInstance.dashboardSpecificState, key, value,
- function() {
- // FIXME: There's probably a simpler regexp here. Just trying to match ascii + forward-slash.
- // e.g. LayoutTests/foo/bar.html
- return (value.match(/^(\w+\/\w*)*$/));
- });
- return true;
-
- default:
- return false;
- }
-}
-
-function handleQueryParameterChange(historyInstance, params)
-{
- for (var param in params) {
- if (param != 'treemapfocus') {
- $('map').innerHTML = 'Loading...';
- return true;
- }
- }
- return false;
-}
-
-var treemapConfig = {
- defaultStateValues: defaultDashboardSpecificStateValues,
- generatePage: generatePage,
- handleValidHashParameter: handleValidHashParameter,
- handleQueryParameterChange: handleQueryParameterChange,
- invalidatingHashParameters: DB_SPECIFIC_INVALIDATING_PARAMETERS
-};
-
-// FIXME(jparent): Eventually remove all usage of global history object.
-var g_history = new history.History(treemapConfig);
-g_history.parseCrossDashboardParameters();
-
-var TEST_URL_BASE_PATH = "http://svn.webkit.org/repository/webkit/trunk/";
-
-function humanReadableTime(milliseconds)
-{
- if (milliseconds < 1000)
- return Math.floor(milliseconds) + 'ms';
- else if (milliseconds < 60000)
- return (milliseconds / 1000).toPrecision(2) + 's';
-
- var minutes = Math.floor(milliseconds / 60000);
- var seconds = Math.floor((milliseconds - minutes * 60000) / 1000);
- return minutes + 'm' + seconds + 's';
-}
-
-// This looks like:
-// { "data": {"$area": (sum of all timings)},
-// "name": (name of this node),
-// "children": [ (child nodes, in the same format as this) ] }
-// childCount is added just to be includes in the node's name
-function convertToWebTreemapFormat(treename, tree, path)
-{
- var total = 0;
- var childCount = 0;
- var children = [];
- for (var name in tree) {
- var treeNode = tree[name];
- if (typeof treeNode == "number") {
- var time = treeNode;
- var node = {
- "data": {"$area": time},
- "name": name + " (" + humanReadableTime(time) + ")"
- };
- children.push(node);
- total += time;
- childCount++;
- } else {
- var newPath = path ? path + '/' + name : name;
- var subtree = convertToWebTreemapFormat(name, treeNode, newPath);
- children.push(subtree);
- total += subtree["data"]["$area"];
- childCount += subtree["childCount"];
- }
- }
-
- children.sort(function(a, b) {
- aTime = a.data["$area"]
- bTime = b.data["$area"]
- return bTime - aTime;
- });
-
- return {
- "data": {"$area": total},
- "name": treename + " (" + humanReadableTime(total) + " - " + childCount + " tests)",
- "children": children,
- "childCount": childCount,
- "path": path
- };
-}
-
-function listOfAllNonLeafNodes(tree, list)
-{
- if (!tree.children)
- return;
-
- if (!list)
- list = [];
- list.push(tree);
-
- tree.children.forEach(function(child) {
- listOfAllNonLeafNodes(child, list);
- });
- return list;
-}
-
-function reverseSortByAverage(list)
-{
- list.sort(function(a, b) {
- var avgA = a.data['$area'] / a.childCount;
- var avgB = b.data['$area'] / b.childCount;
- return avgB - avgA;
- });
-}
-
-function showAverages()
-{
- if (!document.getElementById('map'))
- return;
-
- var table = document.createElement('table');
- table.innerHTML = '<th>directory</th><th># tests</th><th>avg time / test</th>';
-
- var allNodes = listOfAllNonLeafNodes(g_webTree);
- reverseSortByAverage(allNodes);
- allNodes.forEach(function(node) {
- var average = node.data['$area'] / node.childCount;
- if (average > 100 && node.childCount != 1) {
- var tr = document.createElement('tr');
- tr.innerHTML = '<td></td><td>' + node.childCount + '</td><td>' + humanReadableTime(average) + '</td>';
- tr.querySelector('td').innerText = node.path;
- table.appendChild(tr);
- }
- });
-
- var map = document.getElementById('map');
- map.parentNode.replaceChild(table, map);
-}
-
-var g_isGeneratingPage = false;
-var g_webTree;
-
-function focusPath(tree, path)
-{
- var parts = decodeURIComponent(path).split('/');
- if (extractName(tree) != parts[0]) {
- console.error('Could not focus tree rooted at ' + parts[0]);
- return;
- }
-
- for (var i = 1; i < parts.length; i++) {
- var children = tree.children;
- for (var j = 0; j < children.length; j++) {
- var child = children[j];
- if (extractName(child) == parts[i]) {
- tree = child;
- focus(tree);
- break;
- }
- }
- if (j == children.length) {
- console.error('Could not find tree at ' + parts[i]);
- break;
- }
- }
-
-}
-
-function extractName(node)
-{
- return node.name.split(' ')[0];
-}
-
-function fullName(node)
-{
- var buffer = [extractName(node)];
- while (node.parent) {
- node = node.parent;
- buffer.unshift(extractName(node));
- }
- return buffer.join('/');
-}
-
-function handleFocus(tree)
-{
- var currentlyFocusedNode = $('focused-leaf');
- if (currentlyFocusedNode)
- currentlyFocusedNode.id = '';
-
- if (!tree.children)
- tree.dom.id = 'focused-leaf';
-
- var name = fullName(tree);
-
- if (!tree.children && !tree.extraDom && g_history.isLayoutTestResults()) {
- tree.extraDom = document.createElement('pre');
- tree.extraDom.className = 'extra-dom';
- tree.dom.appendChild(tree.extraDom);
-
- loader.request(TEST_URL_BASE_PATH + name,
- function(xhr) {
- tree.extraDom.onmousedown = function(e) {
- e.stopPropagation();
- };
- tree.extraDom.textContent = xhr.responseText;
- },
- function (xhr) {
- tree.extraDom.textContent = "Could not load test."
- });
- }
-
- // We don't want the focus calls during generatePage to try to modify the query state.
- if (!g_isGeneratingPage)
- g_history.setQueryParameter('treemapfocus', name);
-}
-
-window.addEventListener('load', function() {
- var resourceLoader = new loader.Loader();
- resourceLoader.load();
-}, false);
diff --git a/Tools/TestResultServer/static-dashboards/ui.js b/Tools/TestResultServer/static-dashboards/ui.js
deleted file mode 100644
index 8907986fb..000000000
--- a/Tools/TestResultServer/static-dashboards/ui.js
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright (C) 2013 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.
-
-var ui = ui || {};
-
-(function() {
-
-ui.popup = {};
-
-ui.popup.hide = function()
-{
- var popup = $('popup');
- if (popup) {
- popup.parentNode.removeChild(popup);
- document.removeEventListener('mousedown', ui.popup._handleMouseDown, false);
- }
-}
-
-ui.popup.show = function(target, html)
-{
- var popup = $('popup');
- if (!popup) {
- popup = document.createElement('div');
- popup.id = 'popup';
- document.body.appendChild(popup);
- document.addEventListener('mousedown', ui.popup._handleMouseDown, false);
- }
-
- // Set html first so that we can get accurate size metrics on the popup.
- popup.innerHTML = html;
-
- var targetRect = target.getBoundingClientRect();
-
- var x = Math.min(targetRect.left - 10, document.documentElement.clientWidth - popup.offsetWidth);
- x = Math.max(0, x);
- popup.style.left = x + document.body.scrollLeft + 'px';
-
- var y = targetRect.top + targetRect.height;
- if (y + popup.offsetHeight > document.documentElement.clientHeight)
- y = targetRect.top - popup.offsetHeight;
- y = Math.max(0, y);
- popup.style.top = y + document.body.scrollTop + 'px';
-}
-
-ui.popup._handleMouseDown = function(e) {
- // Clear the open popup, unless the click was inside the popup.
- var popup = $('popup');
- if (popup && e.target != popup && !(popup.compareDocumentPosition(e.target) & 16))
- ui.popup.hide();
-}
-
-ui.html = {};
-
-ui.html.checkbox = function(queryParameter, label, isChecked, opt_extraJavaScript)
-{
- var js = opt_extraJavaScript || '';
- return '<label style="padding-left: 2em">' +
- '<input type="checkbox" onchange="g_history.toggleQueryParameter(\'' + queryParameter + '\');' + js + '" ' +
- (isChecked ? 'checked' : '') + '>' + label +
- '</label> ';
-}
-
-ui.html.select = function(label, queryParameter, options)
-{
- var html = '<label style="padding-left: 2em">' + label + ': ' +
- '<select onchange="g_history.setQueryParameter(\'' + queryParameter + '\', this[this.selectedIndex].value)">';
-
- for (var i = 0; i < options.length; i++) {
- var value = options[i];
- html += '<option value="' + value + '" ' +
- (g_history.queryParameterValue(queryParameter) == value ? 'selected' : '') +
- '>' + value + '</option>'
- }
- html += '</select></label> ';
- return html;
-}
-
-// Returns the HTML for the select element to switch to different testTypes.
-ui.html.testTypeSwitcher = function(opt_noBuilderMenu, opt_extraHtml, opt_includeNoneBuilder)
-{
- var html = '<div style="border-bottom:1px dashed">';
- html += '' +
- ui.html._dashboardLink('Stats', 'aggregate_results.html') +
- ui.html._dashboardLink('Timeline', 'timeline_explorer.html') +
- ui.html._dashboardLink('Results', 'flakiness_dashboard.html') +
- ui.html._dashboardLink('Treemap', 'treemap.html');
-
- html += ui.html.select('Test type', 'testType', TEST_TYPES);
-
- if (!opt_noBuilderMenu) {
- var buildersForMenu = Object.keys(currentBuilders());
- if (opt_includeNoneBuilder)
- buildersForMenu.unshift('--------------');
- html += ui.html.select('Builder', 'builder', buildersForMenu);
- }
-
- html += ui.html.select('Group', 'group',
- Object.keys(currentBuilderGroupCategory()));
-
- if (!history.isTreeMap())
- html += ui.html.checkbox('showAllRuns', 'Show all runs', g_history.crossDashboardState.showAllRuns);
-
- if (opt_extraHtml)
- html += opt_extraHtml;
- return html + '</div>';
-}
-
-ui.html._loadDashboard = function(fileName)
-{
- var pathName = window.location.pathname;
- pathName = pathName.substring(0, pathName.lastIndexOf('/') + 1);
- window.location = pathName + fileName + window.location.hash;
-}
-
-ui.html._topLink = function(html, onClick, isSelected)
-{
- var cssText = isSelected ? 'font-weight: bold;' : 'color:blue;text-decoration:underline;cursor:pointer;';
- cssText += 'margin: 0 5px;';
- return '<span style="' + cssText + '" onclick="' + onClick + '">' + html + '</span>';
-}
-
-ui.html._dashboardLink = function(html, fileName)
-{
- var pathName = window.location.pathname;
- var currentFileName = pathName.substring(pathName.lastIndexOf('/') + 1);
- var isSelected = currentFileName == fileName;
- var onClick = 'ui.html._loadDashboard(\'' + fileName + '\')';
- return ui.html._topLink(html, onClick, isSelected);
-}
-
-ui.html._revisionLink = function(results, index, key, singleUrlTemplate, rangeUrlTemplate)
-{
- var currentRevision = parseInt(results[key][index], 10);
- var previousRevision = parseInt(results[key][index + 1], 10);
-
- function singleUrl()
- {
- return singleUrlTemplate.replace('<rev>', currentRevision);
- }
-
- function rangeUrl()
- {
- return rangeUrlTemplate.replace('<rev1>', currentRevision).replace('<rev2>', previousRevision + 1);
- }
-
- if (currentRevision == previousRevision)
- return 'At <a href="' + singleUrl() + '">r' + currentRevision + '</a>';
- else if (currentRevision - previousRevision == 1)
- return '<a href="' + singleUrl() + '">r' + currentRevision + '</a>';
- else
- return '<a href="' + rangeUrl() + '">r' + (previousRevision + 1) + ' to r' + currentRevision + '</a>';
-}
-
-ui.html.chromiumRevisionLink = function(results, index)
-{
- return ui.html._revisionLink(
- results,
- index,
- CHROME_REVISIONS_KEY,
- 'http://src.chromium.org/viewvc/chrome?view=rev&revision=<rev>',
- 'http://build.chromium.org/f/chromium/perf/dashboard/ui/changelog.html?url=/trunk/src&range=<rev2>:<rev1>&mode=html');
-}
-
-ui.html.webKitRevisionLink = function(results, index)
-{
- return ui.html._revisionLink(
- results,
- index,
- WEBKIT_REVISIONS_KEY,
- 'http://trac.webkit.org/changeset/<rev>',
- 'http://trac.webkit.org/log/trunk/?rev=<rev1>&stop_rev=<rev2>&limit=100&verbose=on');
-}
-
-
-ui.Errors = function() {
- this._messages = '';
- // Element to display the errors within.
- this._containerElement = null;
-}
-
-ui.Errors.prototype = {
- show: function()
- {
- if (!this._containerElement) {
- this._containerElement = document.createElement('H2');
- this._containerElement.style.color = 'red';
- this._containerElement.id = 'errors';
- document.body.appendChild(this._containerElement);
- }
-
- this._containerElement.innerHTML = this._messages;
- },
- // Record a new error message.
- addError: function(message)
- {
- this._messages += message + '<br>';
- }
-}
-
-})(); \ No newline at end of file
diff --git a/Tools/TestResultServer/static-dashboards/webtreemap.css b/Tools/TestResultServer/static-dashboards/webtreemap.css
deleted file mode 100644
index a07865016..000000000
--- a/Tools/TestResultServer/static-dashboards/webtreemap.css
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-.webtreemap-node {
- /* Required attributes. */
- position: absolute;
- overflow: hidden; /* To hide overlong captions. */
- background: white; /* Nodes must be opaque for zIndex layering. */
- border: solid 1px black; /* Calculations assume 1px border. */
-
- /* Optional: CSS animation. */
- -webkit-transition: top 0.3s,
- left 0.3s,
- width 0.3s,
- height 0.3s;
-}
-
-/* Optional: highlight nodes on mouseover. */
-.webtreemap-node:hover {
- background: #eee;
-}
-
-/* Optional: Different borders depending on level. */
-.webtreemap-level0 {
- border: solid 1px #444;
-}
-.webtreemap-level1 {
- border: solid 1px #666;
-}
-.webtreemap-level2 {
- border: solid 1px #888;
-}
-.webtreemap-level3 {
- border: solid 1px #aaa;
-}
-.webtreemap-level4 {
- border: solid 1px #ccc;
-}
-
-/* Optional: styling on node captions. */
-.webtreemap-caption {
- font-family: sans-serif;
- font-size: 11px;
- padding: 2px;
- text-align: center;
-}
-
-/* Optional: styling on captions on mouse hover. */
-/*.webtreemap-node:hover > .webtreemap-caption {
- text-decoration: underline;
-}*/
diff --git a/Tools/TestResultServer/static-dashboards/webtreemap.js b/Tools/TestResultServer/static-dashboards/webtreemap.js
deleted file mode 100644
index 35c03c68b..000000000
--- a/Tools/TestResultServer/static-dashboards/webtreemap.js
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-// Size of border around nodes.
-// We could support arbitrary borders using getComputedStyle(), but I am
-// skeptical the extra complexity (and performance hit) is worth it.
-var kBorderWidth = 1;
-
-// Padding around contents.
-// TODO: do this with a nested div to allow it to be CSS-styleable.
-var kPadding = 4;
-
-var focused = null;
-
-// Callback for embedding page to update after a focus.
-function handleFocus(tree) {}
-
-function focus(tree) {
- focused = tree;
-
- // Hide all visible siblings of all our ancestors by lowering them.
- var level = 0;
- var root = tree;
- while (root.parent) {
- root = root.parent;
- level += 1;
- for (var i = 0, sibling; sibling = root.children[i]; ++i) {
- if (sibling.dom)
- sibling.dom.style.zIndex = 0;
- }
- }
- var width = root.dom.offsetWidth;
- var height = root.dom.offsetHeight;
- // Unhide (raise) and maximize us and our ancestors.
- for (var t = tree; t.parent; t = t.parent) {
- // Shift off by border so we don't get nested borders.
- // TODO: actually make nested borders work (need to adjust width/height).
- position(t.dom, -kBorderWidth, -kBorderWidth, width, height);
- t.dom.style.zIndex = 1;
- }
- // And layout into the topmost box.
- layout(tree, level, width, height);
- handleFocus(tree);
-}
-
-function makeDom(tree, level) {
- var dom = document.createElement('div');
- dom.style.zIndex = 1;
- dom.className = 'webtreemap-node webtreemap-level' + Math.min(level, 4);
-
- dom.onmousedown = function(e) {
- if (e.button == 0) {
- if (focused && tree == focused && focused.parent) {
- focus(focused.parent);
- } else {
- focus(tree);
- }
- }
- e.stopPropagation();
- return true;
- };
-
- var caption = document.createElement('div');
- caption.className = 'webtreemap-caption';
- caption.innerHTML = tree.name;
- dom.appendChild(caption);
-
- tree.dom = dom;
- return dom;
-}
-
-function position(dom, x, y, width, height) {
- // CSS width/height does not include border.
- width -= kBorderWidth*2;
- height -= kBorderWidth*2;
-
- dom.style.left = x + 'px';
- dom.style.top = y + 'px';
- dom.style.width = Math.max(width, 0) + 'px';
- dom.style.height = Math.max(height, 0) + 'px';
-}
-
-// Given a list of rectangles |nodes|, the 1-d space available
-// |space|, and a starting rectangle index |start|, compute an span of
-// rectangles that optimizes a pleasant aspect ratio.
-//
-// Returns [end, sum], where end is one past the last rectangle and sum is the
-// 2-d sum of the rectangles' areas.
-function selectSpan(nodes, space, start) {
- // Add rectangle one by one, stopping when aspect ratios begin to go
- // bad. Result is [start,end) covering the best run for this span.
- // http://scholar.google.com/scholar?cluster=5972512107845615474
- var node = nodes[start];
- var rmin = node.data['$area']; // Smallest seen child so far.
- var rmax = rmin; // Largest child.
- var rsum = 0; // Sum of children in this span.
- var last_score = 0; // Best score yet found.
- for (var end = start; node = nodes[end]; ++end) {
- var size = node.data['$area'];
- if (size < rmin)
- rmin = size;
- if (size > rmax)
- rmax = size;
- rsum += size;
-
- // This formula is from the paper, but you can easily prove to
- // yourself it's taking the larger of the x/y aspect ratio or the
- // y/x aspect ratio. The additional magic fudge constant of 5
- // makes us prefer wider rectangles to taller ones.
- var score = Math.max(5*space*space*rmax / (rsum*rsum),
- 1*rsum*rsum / (space*space*rmin));
- if (last_score && score > last_score) {
- rsum -= size; // Undo size addition from just above.
- break;
- }
- last_score = score;
- }
- return [end, rsum];
-}
-
-function layout(tree, level, width, height) {
- if (!('children' in tree))
- return;
-
- var total = tree.data['$area'];
-
- // XXX why do I need an extra -1/-2 here for width/height to look right?
- var x1 = 0, y1 = 0, x2 = width - 1, y2 = height - 2;
- x1 += kPadding; y1 += kPadding;
- x2 -= kPadding; y2 -= kPadding;
- y1 += 14; // XXX get first child height for caption spacing
-
- var pixels_to_units = Math.sqrt(total / ((x2 - x1) * (y2 - y1)));
-
- for (var start = 0, child; child = tree.children[start]; ++start) {
- if (x2 - x1 < 60 || y2 - y1 < 40) {
- if (child.dom) {
- child.dom.style.zIndex = 0;
- position(child.dom, -2, -2, 0, 0);
- }
- continue;
- }
-
- // In theory we can dynamically decide whether to split in x or y based
- // on aspect ratio. In practice, changing split direction with this
- // layout doesn't look very good.
- // var ysplit = (y2 - y1) > (x2 - x1);
- var ysplit = true;
-
- var space; // Space available along layout axis.
- if (ysplit)
- space = (y2 - y1) * pixels_to_units;
- else
- space = (x2 - x1) * pixels_to_units;
-
- var span = selectSpan(tree.children, space, start);
- var end = span[0], rsum = span[1];
-
- // Now that we've selected a span, lay out rectangles [start,end) in our
- // available space.
- var x = x1, y = y1;
- for (var i = start; i < end; ++i) {
- child = tree.children[i];
- if (!child.dom) {
- child.parent = tree;
- child.dom = makeDom(child, level + 1);
- tree.dom.appendChild(child.dom);
- } else {
- child.dom.style.zIndex = 1;
- }
- var size = child.data['$area'];
- var frac = size / rsum;
- if (ysplit) {
- width = rsum / space;
- height = size / width;
- } else {
- height = rsum / space;
- width = size / height;
- }
- width /= pixels_to_units;
- height /= pixels_to_units;
- width = Math.round(width);
- height = Math.round(height);
- position(child.dom, x, y, width, height);
- if ('children' in child) {
- layout(child, level + 1, width, height);
- }
- if (ysplit)
- y += height;
- else
- x += width;
- }
-
- // Shrink our available space based on the amount we used.
- if (ysplit)
- x1 += Math.round((rsum / space) / pixels_to_units);
- else
- y1 += Math.round((rsum / space) / pixels_to_units);
-
- // end points one past where we ended, which is where we want to
- // begin the next iteration, but subtract one to balance the ++ in
- // the loop.
- start = end - 1;
- }
-}
-
-function appendTreemap(dom, data) {
- var style = getComputedStyle(dom, null);
- var width = parseInt(style.width);
- var height = parseInt(style.height);
- if (!data.dom)
- makeDom(data, 0);
- dom.appendChild(data.dom);
- position(data.dom, 0, 0, width, height);
- layout(data, 0, width, height);
-} \ No newline at end of file
diff --git a/Tools/TestResultServer/stylesheets/form.css b/Tools/TestResultServer/stylesheets/form.css
deleted file mode 100644
index b8f367d35..000000000
--- a/Tools/TestResultServer/stylesheets/form.css
+++ /dev/null
@@ -1,26 +0,0 @@
-body {
- font-family: Verdana;
- padding: 0px;
- color: #444;
-}
-h1 {
- color: #444;
- font-size: 14pt;
- font-style: italic;
- margin: 0px;
- padding: 5px;
-}
-.label {
- margin: 1px;
- padding: 5px;
- font-size: 11pt;
- width: 90px;
-}
-.inputtext {
- font-size: 11pt;
-}
-.button {
- margin: 1px;
- padding: 1px;
- font-size: 11pt;
-}
diff --git a/Tools/TestResultServer/stylesheets/menu.css b/Tools/TestResultServer/stylesheets/menu.css
deleted file mode 100644
index 933baa7d6..000000000
--- a/Tools/TestResultServer/stylesheets/menu.css
+++ /dev/null
@@ -1,9 +0,0 @@
-body {
- font-family: Verdana, Helvetica, sans-serif;
-}
-ul {
- list-style: none;
-}
-li {
- padding: 5px 0;
-}
diff --git a/Tools/TestResultServer/stylesheets/testfile.css b/Tools/TestResultServer/stylesheets/testfile.css
deleted file mode 100644
index 1b0921ce7..000000000
--- a/Tools/TestResultServer/stylesheets/testfile.css
+++ /dev/null
@@ -1,30 +0,0 @@
-body {
- font-family: Verdana, Helvetica, sans-serif;
- padding: 0px;
- color: #444;
-}
-h1 {
- color: #444;
- font-size: 14pt;
- font-style: italic;
- margin: 0px;
- padding: 5px;
-}
-table {
- border-spacing: 0px;
-}
-th {
- background-color: #AAA;
- color: white;
- text-align: left;
- padding: 5px;
- font-size: 12pt;
-}
-td {
- font-size: 11pt;
- padding: 3px;
- text-align: left;
-}
-tr:hover {
- background-color: #EEE;
-}
diff --git a/Tools/TestResultServer/templates/menu.html b/Tools/TestResultServer/templates/menu.html
deleted file mode 100644
index d47def7df..000000000
--- a/Tools/TestResultServer/templates/menu.html
+++ /dev/null
@@ -1,35 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Test Result Server</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/menu.css" />
-</head>
-<body>
-<h1>Test Result Server</h1>
-
-<div class=login>
- {% if user_email %}
- <span>{{ user_email }}</span>
- {% endif %}
- <span><a href="{{ login_url }}">{{ login_text }}</a></span>
-</div>
-
-<h2>Dashboards</h2>
-<div>
- <ul>{% for title,link in dashboards %}
- <li>
- <a href="{{ link }}" >{{ title }}</a>
- </li>{% endfor %}
- </ul>
-</div>
-
-<h2>JSON files</h2>
-<div>
- <ul>{% for title,link in menu %}
- <li>
- <a href="{{ link }}" >{{ title }}</a>
- </li>{% endfor %}
- </ul>
-</div>
-</body>
-</html>
diff --git a/Tools/TestResultServer/templates/showfilelist.html b/Tools/TestResultServer/templates/showfilelist.html
deleted file mode 100644
index d292fe27e..000000000
--- a/Tools/TestResultServer/templates/showfilelist.html
+++ /dev/null
@@ -1,58 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Test Results</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/testfile.css" />
-</head>
-<body>
-<h1>Test Results
-{% if builder or test_type or name %}
-- {{ builder }} {{test_type }} {{ name }}
-{% endif %}
-</h1>
-<div>
- <table>
- <tr>
- <th>Master</th>
- <th>Builder</th>
- <th>Test Type</th>
- <th>File</th>
- <th>Date</th>
- {% if admin %}
- <th></th>
- {% endif %}
- {% for file in files %}
- <tr>{% if file.builder and file.name %}
- <td><a href="/testfile?master={{ file.master }}" >
- {{ file.master }}
- </a>
- </td>
- <td><a href="/testfile?builder={{ file.builder }}" >
- {{ file.builder }}
- </a>
- </td>
- <td>{% if file.test_type %}
- <a href="/testfile?testtype={{ file.test_type }}" >
- {{ file.test_type }}
- </a>
- {% endif %}
- </td>
- <td><a href="/testfile?builder={{ file.builder }}&name={{ file.name }}" >
- {{ file.name }}
- </a>
- </td>
- <td>{{ file.date|date:"d-M-Y H:i:s" }}
- </td>
- {% if admin %}
- <td><a href="/testfile/delete?key={{ file.key }}&builder={{ builder }}&name={{ name }}" >
- Delete
- </a>
- </td>
- {% endif %}
- {% endif %}
- </tr>
- {% endfor %}
- </table>
-</div>
-</body>
-</html>
diff --git a/Tools/TestResultServer/templates/showfilelist.jsonp b/Tools/TestResultServer/templates/showfilelist.jsonp
deleted file mode 100644
index 2c482a83b..000000000
--- a/Tools/TestResultServer/templates/showfilelist.jsonp
+++ /dev/null
@@ -1,3 +0,0 @@
-CALLBACK([{% for file in files %}
- { "key": "{{ file.key }}" },{% endfor %}
-]);
diff --git a/Tools/TestResultServer/templates/uploadform.html b/Tools/TestResultServer/templates/uploadform.html
deleted file mode 100644
index 9974a24a0..000000000
--- a/Tools/TestResultServer/templates/uploadform.html
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE html>
-<html>
-<head>
-<title>Upload Test Result File</title>
-<link type="text/css" rel="stylesheet" href="/stylesheets/form.css" />
-</head>
-<body>
-<h1>Upload Test Result File</h1>
-<form id="uploadForm" name="test_result_upload" accept="text/html" action="{{ upload_url }}" enctype="multipart/form-data" method="post">
- <br>
- <table>
- <tr>
- <td class=label><label>Master:</label></td>
- <td><input class=inputtext type="text" name="master" placeholder="Chromium"/></td>
- </tr>
- <tr>
- <td class=label><label>Builder:</label></td>
- <td><input class=inputtext type="text" name="builder" placeholder="Webkit"/></td>
- </tr>
- <tr>
- <td class=label><label>Test Type:</label></td>
- <td><input class=inputtext type="text" name="testtype" placeholder="layout-tests"/></td>
- </tr>
- </table>
- <br>
- <div><input class=button type="checkbox" name="incremental">Incremental results, merge with server file.</div>
- <br>
- <div><input class=button type="file" name="file" multiple></div>
- <br>
- <div><input class=button type="submit" value="Upload"></div>
-</form>
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/CMakeLists.txt b/Tools/TestWebKitAPI/CMakeLists.txt
index 23f2184ce..c505fa25b 100644
--- a/Tools/TestWebKitAPI/CMakeLists.txt
+++ b/Tools/TestWebKitAPI/CMakeLists.txt
@@ -1,156 +1,228 @@
set(TESTWEBKITAPI_DIR "${TOOLS_DIR}/TestWebKitAPI")
-
-include_directories(${CMAKE_BINARY_DIR}
- ${TESTWEBKITAPI_DIR}
- ${CMAKE_SOURCE_DIR}/Source
- ${DERIVED_SOURCES_WEBCORE_DIR}
- ${DERIVED_SOURCES_WEBKIT2_DIR}/include
- ${JAVASCRIPTCORE_DIR}
- ${JAVASCRIPTCORE_DIR}/API
- ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
- ${THIRDPARTY_DIR}/gtest/include
- ${WEBCORE_DIR}/editing
- ${WEBCORE_DIR}/platform
- ${WEBCORE_DIR}/platform/graphics
- ${WEBCORE_DIR}/platform/text
- ${WEBCORE_DIR}/platform/network
- ${WEBKIT2_DIR}/Shared
- ${WEBKIT2_DIR}/Shared/API/c
- ${WEBKIT2_DIR}/Shared/Plugins
- ${WEBKIT2_DIR}/UIProcess
- ${WEBKIT2_DIR}/WebProcess/InjectedBundle
- ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c
- ${WTF_DIR}
+set(test_wtf_LIBRARIES
+ WTF${DEBUG_SUFFIX}
+ gtest
)
-WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-
-add_library(TestWebKitAPIInjectedBundle SHARED
- ${bundle_harness_SOURCES}
- ${TESTWEBKITAPI_DIR}/InjectedBundleController.cpp
- ${TESTWEBKITAPI_DIR}/InjectedBundleMain.cpp
- ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/CanHandleRequest_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ParentFrame_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMessage_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WKConnection_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillLoad_Bundle.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
+set(test_webcore_LIBRARIES
+ WTF${DEBUG_SUFFIX}
+ WebCore${DEBUG_SUFFIX}
+ gtest
)
set(TestWebKitAPI_LIBRARIES
- WTF
- WebKit2
+ WTF${DEBUG_SUFFIX}
)
-target_link_libraries(TestWebKitAPIInjectedBundle ${TestWebKitAPI_LIBRARIES})
-add_dependencies(TestWebKitAPIInjectedBundle ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
-
-get_property(TestWebKitAPIInjectedBundle_PATH TARGET TestWebKitAPIInjectedBundle PROPERTY LOCATION)
-
-add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1
- -DTEST_WEBKIT2_RESOURCES_DIR=\"${TESTWEBKITAPI_DIR}/Tests/WebKit2\"
- -DTEST_INJECTED_BUNDLE_PATH=\"${TestWebKitAPIInjectedBundle_PATH}\"
-)
-
-set(test_wtf_LIBRARIES
- WTF
+if (ENABLE_WEBKIT2)
+ set(test_webkit2_api_LIBRARIES
+ JavaScriptCore
+ TestWebKitAPIBase
+ WTF
+ WebKit2
+ gtest
+ )
+ list(APPEND TestWebKitAPI_LIBRARIES
+ WebKit2
+ )
+else ()
+ list(APPEND TestWebKitAPI_LIBRARIES
+ WebKit${DEBUG_SUFFIX}
+ )
+endif ()
+
+
+set(TestJavaScriptCore_LIBRARIES
+ JavaScriptCore
gtest
)
-add_executable(test_wtf
- ${test_main_SOURCES}
+set(TestWTF_SOURCES
+ ${TESTWEBKITAPI_DIR}/Counters.cpp
${TESTWEBKITAPI_DIR}/TestsController.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/AtomicString.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/CString.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/Condition.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/CheckedArithmeticOperations.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/DateMath.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/Deque.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/Functional.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/HashCountedSet.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/HashMap.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/HashSet.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/IntegerToStringConversion.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/ListHashSet.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/Lock.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/MD5.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/MathExtras.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/MediaTime.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/MetaAllocator.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/NakedPtr.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/OptionSet.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/ParkingLot.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/RedBlackTree.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/Ref.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/RefPtr.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/SHA1.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/SaturatedArithmeticOperations.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/StringBuilder.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/StringHasher.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/StringImpl.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/StringOperators.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/StringView.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/TemporaryChange.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/Vector.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WTF/VectorBasic.cpp
- ${TESTWEBKITAPI_DIR}/Tests/WTF/VectorReverse.cpp
${TESTWEBKITAPI_DIR}/Tests/WTF/WTFString.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WTF/WorkQueue.cpp
)
-target_link_libraries(test_wtf ${test_wtf_LIBRARIES})
-add_dependencies(test_wtf ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
-add_test(test_wtf ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_wtf)
-set_tests_properties(test_wtf PROPERTIES TIMEOUT 60)
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
-set(test_webcore_LIBRARIES
- gtest
- WTF
- WebCore
+include_directories(
+ ${TESTWEBKITAPI_DIR}
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/Source
+ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
+ ${DERIVED_SOURCES_WEBCORE_DIR}
+ ${JAVASCRIPTCORE_DIR}
+ ${JAVASCRIPTCORE_DIR}/API
+ ${JAVASCRIPTCORE_DIR}/ForwardingHeaders
+ ${THIRDPARTY_DIR}/gtest/include
+ ${WEBCORE_DIR}/css
+ ${WEBCORE_DIR}/dom
+ ${WEBCORE_DIR}/editing
+ ${WEBCORE_DIR}/loader/cache
+ ${WEBCORE_DIR}/platform
+ ${WEBCORE_DIR}/platform/animation
+ ${WEBCORE_DIR}/platform/graphics
+ ${WEBCORE_DIR}/platform/text
+ ${WEBCORE_DIR}/platform/network
+ ${WEBCORE_DIR}/platform/network/soup
+ ${WEBCORE_DIR}/rendering/style
+ ${WEBKIT2_DIR}/Platform/IPC
+ ${WEBKIT2_DIR}/Shared
+ ${WEBKIT2_DIR}/Shared/API
+ ${WEBKIT2_DIR}/Shared/API/c
+ ${WEBKIT2_DIR}/Shared/Plugins
+ ${WEBKIT2_DIR}/UIProcess
+ ${WEBKIT2_DIR}/UIProcess/API
+ ${WEBKIT2_DIR}/WebProcess/InjectedBundle
+ ${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c
+ ${WTF_DIR}
)
-foreach (testName ${test_webcore_BINARIES})
- add_executable(test_webcore_${testName} ${test_main_SOURCES} ${TESTWEBKITAPI_DIR}/TestsController.cpp ${TESTWEBKITAPI_DIR}/Tests/WebCore/${testName}.cpp)
- add_test(test_webcore_${testName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_webcore_${testName})
- set_tests_properties(test_webcore_${testName} PROPERTIES TIMEOUT 60)
- target_link_libraries(test_webcore_${testName} ${test_webcore_LIBRARIES})
-endforeach ()
+if (ENABLE_WEBKIT2)
+ add_library(TestWebKitAPIInjectedBundle SHARED
+ ${bundle_harness_SOURCES}
+ ${TESTWEBKITAPI_DIR}/InjectedBundleController.cpp
+ ${TESTWEBKITAPI_DIR}/InjectedBundleMain.cpp
+ ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/CanHandleRequest_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ParentFrame_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/UserMessage_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillLoad_Bundle.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
+ )
+
+ target_link_libraries(TestWebKitAPIInjectedBundle ${TestWebKitAPI_LIBRARIES})
+ add_dependencies(TestWebKitAPIInjectedBundle WTF ${ForwardingHeadersForTestWebKitAPI_NAME})
+
+ get_property(TestWebKitAPIInjectedBundle_PATH TARGET TestWebKitAPIInjectedBundle PROPERTY LOCATION)
+endif ()
+
+if (WIN32)
+ add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=0)
+else ()
+ add_definitions(-DGTEST_LINKED_AS_SHARED_LIBRARY=1)
+endif ()
+
+add_definitions(-DGTEST_HAS_RTTI=0
+ -DTEST_WEBKIT2_RESOURCES_DIR=\"${TESTWEBKITAPI_DIR}/Tests/WebKit2\"
+ -DTEST_INJECTED_BUNDLE_PATH=\"${TestWebKitAPIInjectedBundle_PATH}\"
+)
+
+# FIXME: This works around compatibility problems in the old version of the third-pary
+# googletest source code checkout. It should be removed once we upgrade to a newer version.
+if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+ add_definitions(-DGTEST_HAS_TR1_TUPLE=0)
+endif ()
-add_library(TestWebKitAPIBase
+add_executable(TestWTF
${test_main_SOURCES}
- ${webkit2_api_harness_SOURCES}
- ${TESTWEBKITAPI_DIR}/JavaScriptTest.cpp
- ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
- ${TESTWEBKITAPI_DIR}/TestsController.cpp
+ ${TestWTF_SOURCES}
)
-add_dependencies(TestWebKitAPIBase WebKit2 ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
+if (WIN32)
+ add_dependencies(TestWTF TestWTFLib)
+endif ()
-set(test_webkit2_api_LIBRARIES
- TestWebKitAPIBase
- WTF
- JavaScriptCore
- WebKit2
- gtest
+target_link_libraries(TestWTF ${test_wtf_LIBRARIES})
+add_dependencies(TestWTF WTF ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
+add_test(TestWTF ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF}/TestWTF)
+set_tests_properties(TestWTF PROPERTIES TIMEOUT 60)
+set_target_properties(TestWTF PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF}
)
-foreach (testName ${test_webkit2_api_BINARIES})
- get_filename_component(testBaseName ${testName} NAME)
- add_executable(test_webkit2_api_${testBaseName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
- add_test(test_webkit2_api_${testBaseName} ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/test_webkit2_api_${testBaseName})
- set_tests_properties(test_webkit2_api_${testBaseName} PROPERTIES TIMEOUT 60)
- target_link_libraries(test_webkit2_api_${testBaseName} ${test_webkit2_api_LIBRARIES})
+# FIXME: EFL is the only port that separates the WebCore binaries. Each port ought to do closer to the same thing.
+foreach (testName ${test_webcore_BINARIES})
+ add_executable(${testName} ${test_main_SOURCES} ${TESTWEBKITAPI_DIR}/TestsController.cpp ${TESTWEBKITAPI_DIR}/Tests/WebCore/${testName}.cpp)
+ add_test(${testName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore/${testName})
+ set_tests_properties(${testName} PROPERTIES TIMEOUT 60)
+ target_link_libraries(${testName} ${test_webcore_LIBRARIES})
+ set_target_properties(${testName} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore
+ )
endforeach ()
-# We don't run tests that are expected to fail. We could use the WILL_FAIL
-# property, but it reports failure when the test crashes or timeouts and would
-# make the bot red.
-
-foreach (testName ${test_webkit2_api_fail_BINARIES})
- add_executable(test_webkit2_api_fail_${testName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
- target_link_libraries(test_webkit2_api_fail_${testName} ${test_webkit2_api_LIBRARIES})
-endforeach ()
+if (ENABLE_WEBKIT2)
+ add_library(TestWebKitAPIBase
+ ${test_main_SOURCES}
+ ${webkit2_api_harness_SOURCES}
+ ${TESTWEBKITAPI_DIR}/JavaScriptTest.cpp
+ ${TESTWEBKITAPI_DIR}/PlatformUtilities.cpp
+ ${TESTWEBKITAPI_DIR}/TestsController.cpp
+ )
+
+ add_dependencies(TestWebKitAPIBase WebKit2 ${ForwardingHeadersForTestWebKitAPI_NAME} ${ForwardingNetworkHeadersForTestWebKitAPI_NAME})
+
+ foreach (testName ${test_webkit2_api_BINARIES})
+ get_filename_component(testBaseName ${testName} NAME)
+ add_executable(${testBaseName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
+ add_test(${testBaseName} ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/${testBaseName})
+ set_tests_properties(${testBaseName} PROPERTIES TIMEOUT 60)
+ target_link_libraries(${testBaseName} ${test_webkit2_api_LIBRARIES})
+ set_target_properties(${testBaseName} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2
+ )
+ endforeach ()
+
+ # We don't run tests that are expected to fail. We could use the WILL_FAIL
+ # property, but it reports failure when the test crashes or timeouts and would
+ # make the bot red.
+ foreach (testName ${test_webkit2_api_fail_BINARIES})
+ add_executable(${testName} ${TESTWEBKITAPI_DIR}/Tests/WebKit2/${testName}.cpp)
+ target_link_libraries(${testName} ${test_webkit2_api_LIBRARIES})
+ set_target_properties(${testName} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebKit2/failure
+ )
+ endforeach ()
+endif ()
diff --git a/Tools/TestWebKitAPI/Configurations/Base.xcconfig b/Tools/TestWebKitAPI/Configurations/Base.xcconfig
deleted file mode 100644
index 834faa366..000000000
--- a/Tools/TestWebKitAPI/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright (C) 2010 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.
-
-CLANG_CXX_LANGUAGE_STANDARD = gnu++0x;
-CLANG_CXX_LIBRARY = libc++;
-CLANG_WARN_CXX0X_EXTENSIONS = NO;
-HEADER_SEARCH_PATHS = ${BUILT_PRODUCTS_DIR}/usr/local/include $(WEBCORE_PRIVATE_HEADERS_DIR)/ForwardingHeaders $(WEBCORE_PRIVATE_HEADERS_DIR)/icu;
-FRAMEWORK_SEARCH_PATHS = $(FRAMEWORK_SEARCH_PATHS_$(PLATFORM_NAME));
-FRAMEWORK_SEARCH_PATHS_macosx = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks;
-
-GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST GTEST_HAS_TR1_TUPLE=0 GTEST_HAS_RTTI=0 $(GCC_PREPROCESSOR_DEFINITIONS_$(PLATFORM_NAME));
-GCC_PREPROCESSOR_DEFINITIONS_macosx = ENABLE_DASHBOARD_SUPPORT;
-DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
-PREBINDING = NO
-GCC_C_LANGUAGE_STANDARD = gnu99
-GCC_ENABLE_CPP_EXCEPTIONS = NO;
-GCC_ENABLE_CPP_RTTI = NO;
-GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_TREAT_WARNINGS_AS_ERRORS = YES
-GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO
-GCC_WARN_UNUSED_FUNCTION = YES
-GCC_WARN_UNUSED_VARIABLE = YES
-WARNING_CFLAGS = -Wall -W -Wno-unused-parameter
-LINKER_DISPLAYS_MANGLED_NAMES = YES;
-OTHER_CPLUSPLUSFLAGS = $(OTHER_CPLUSPLUSFLAGS) -ftemplate-depth=256;
-
-// DEBUG_DEFINES, GCC_OPTIMIZATION_LEVEL, STRIP_INSTALLED_PRODUCT and DEAD_CODE_STRIPPING vary between the debug and normal variants.
-// We set up the values for each variant here, and have the Debug configuration in the Xcode project use the _debug variant.
-DEBUG_DEFINES_debug = ;
-DEBUG_DEFINES_normal = NDEBUG;
-DEBUG_DEFINES = $(DEBUG_DEFINES_$(CURRENT_VARIANT));
-
-SUPPORTED_PLATFORMS = iphoneos iphonesimulator macosx;
-
-TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR);
-
-
-TARGETING_SAME_OS_X_VERSION = $(TARGETING_SAME_OS_X_VERSION_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-TARGETING_SAME_OS_X_VERSION_1070_1070 = YES;
-TARGETING_SAME_OS_X_VERSION_1080_1080 = YES;
-TARGETING_SAME_OS_X_VERSION_1090_1090 = YES;
-
-// Don't build against an SDK unless we're targeting an older OS version.
-SDKROOT = $(SDKROOT_TARGETING_SAME_OS_X_VERSION_$(TARGETING_SAME_OS_X_VERSION));
-SDKROOT_TARGETING_SAME_OS_X_VERSION_ = macosx;
-
-WEBKIT_UMBRELLA_FRAMEWORKS_DIR = $(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
-WEBCORE_PRIVATE_HEADERS_DIR = $(WEBKIT_UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/PrivateHeaders;
-
-EXCLUDED_SOURCE_FILE_NAMES = $(EXCLUDED_SOURCE_FILE_NAMES_$(PLATFORM_NAME));
-EXCLUDED_SOURCE_FILE_NAMES_macosx = *IOS.h *IOS.cpp *IOS.mm;
-EXCLUDED_SOURCE_FILE_NAMES_iphoneos = *Mac.h *Mac.cpp *Mac.mm *InjectedBundle* *PlatformUtilities* Tests/WebKit2/* Tests/WebKit2ObjC/* *_Bundle* JavaScriptTest.*;
-EXCLUDED_SOURCE_FILE_NAMES_iphonesimulator = $(EXCLUDED_SOURCE_FILE_NAMES_iphoneos);
diff --git a/Tools/TestWebKitAPI/Configurations/DebugRelease.xcconfig b/Tools/TestWebKitAPI/Configurations/DebugRelease.xcconfig
deleted file mode 100644
index f681015b8..000000000
--- a/Tools/TestWebKitAPI/Configurations/DebugRelease.xcconfig
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright (C) 2010 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 "Base.xcconfig"
-
-ARCHS = $(ARCHS_STANDARD_32_64_BIT);
-
-ONLY_ACTIVE_ARCH = YES;
-
-MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(TARGET_MAC_OS_X_VERSION_MAJOR))
-MACOSX_DEPLOYMENT_TARGET_1070 = 10.7;
-MACOSX_DEPLOYMENT_TARGET_1080 = 10.8;
-MACOSX_DEPLOYMENT_TARGET_1090 = 10.9;
-
-WEBKIT_UMBRELLA_FRAMEWORKS_DIR = $(BUILT_PRODUCTS_DIR);
diff --git a/Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig b/Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig
deleted file mode 100644
index 164a05cff..000000000
--- a/Tools/TestWebKitAPI/Configurations/InjectedBundle.xcconfig
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright (C) 2010 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.
-
-PRODUCT_NAME = InjectedBundleTestWebKitAPI;
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig b/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig
deleted file mode 100644
index 5fc6f7449..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPI.xcconfig
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright (C) 2010 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.
-
-PRODUCT_NAME = TestWebKitAPI;
-GCC_ENABLE_OBJC_EXCEPTIONS = YES;
-
-OTHER_LDFLAGS = -lgtest -framework JavaScriptCore -framework WebKit $(OTHER_LDFLAGS_$(PLATFORM_NAME));
-OTHER_LDFLAGS_iphoneos = -framework WebCore;
-OTHER_LDFLAGS_iphonesimulator = $(OTHER_LDFLAGS_iphoneos);
-OTHER_LDFLAGS_macosx = -framework Cocoa -framework Carbon -framework WebKit2;
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops
deleted file mode 100644
index 61b661413..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFLite.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPICFLite"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CFLite$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops
deleted file mode 100644
index cc25b8669..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICFNetwork.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPICFNetwork"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CFNetwork$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops
deleted file mode 100644
index 57ec3506e..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICommon.vsprops
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPICommon"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)&quot;;&quot;$(ProjectDir)\..&quot;;&quot;$(ConfigurationBuildDir)\include&quot;;&quot;$(ConfigurationBuildDir)\include\private\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\include\WebCore\ForwardingHeaders&quot;;&quot;$(ConfigurationBuildDir)\include\private&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(ProjectDir)\..\..\..\Source\ThirdParty\gtest\include&quot;"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="WebKit$(WebKitDLLConfigSuffix).lib JavaScriptCore$(WebKitDLLConfigSuffix).lib gtest.lib"
- SubSystem="1"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops
deleted file mode 100644
index ee139c0bc..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPICoreFoundation.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPICoreFoundation"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreFoundation$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops
deleted file mode 100644
index 981225f35..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\TestWebKitAPICommon.vsprops;.\TestWebKitAPICoreFoundation.vsprops;.\TestWebKitAPICFNetwork.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops
deleted file mode 100644
index f70863b49..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;.\TestWebKitAPICommon.vsprops;.\TestWebKitAPICoreFoundation.vsprops;.\TestWebKitAPICFNetwork.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops
deleted file mode 100644
index ba38ece12..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_wincairo.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;..\Configurations\TestWebKitAPICommon.vsprops;..\Configurations\TestWebKitAPICFLite.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops
deleted file mode 100644
index 5e19c4621..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIInjectedBundleCommon.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIInjectedBundleCommon"
- >
- <Tool
- Name="VCLinkerTool"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitDLLConfigSuffix).dll"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops
deleted file mode 100644
index e5edd81d8..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\TestWebKitAPICommon.vsprops;.\TestWebKitAPICoreFoundation.vsprops;.\TestWebKitAPICFNetwork.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops b/Tools/TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops
deleted file mode 100644
index 1b97b644d..000000000
--- a/Tools/TestWebKitAPI/Configurations/TestWebKitAPIReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="TestWebKitAPIReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;..\Configurations\TestWebKitAPICommon.vsprops;..\Configurations\TestWebKitAPICFLite.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/TestWebKitAPI/Counters.cpp b/Tools/TestWebKitAPI/Counters.cpp
new file mode 100644
index 000000000..87aa4bba2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Counters.cpp
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 "Counters.h"
+
+unsigned CopyMoveCounter::constructionCount = 0;
+unsigned CopyMoveCounter::copyCount = 0;
+unsigned CopyMoveCounter::moveCount = 0;
+
+unsigned ConstructorDestructorCounter::constructionCount = 0;
+unsigned ConstructorDestructorCounter::destructionCount = 0;
diff --git a/Tools/TestWebKitAPI/Counters.h b/Tools/TestWebKitAPI/Counters.h
new file mode 100644
index 000000000..1cfd7b71d
--- /dev/null
+++ b/Tools/TestWebKitAPI/Counters.h
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ * Copyright (C) 2014 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. 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 INC. 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 Counters_h
+#define Counters_h
+
+struct CopyMoveCounter {
+ static unsigned constructionCount;
+ static unsigned copyCount;
+ static unsigned moveCount;
+
+ struct TestingScope {
+ TestingScope()
+ {
+ constructionCount = 0;
+ copyCount = 0;
+ moveCount = 0;
+ }
+ };
+
+ CopyMoveCounter() { constructionCount++; }
+ CopyMoveCounter(const CopyMoveCounter&) { copyCount++; }
+ CopyMoveCounter& operator=(const CopyMoveCounter&) { copyCount++; return *this; }
+ CopyMoveCounter(CopyMoveCounter&&) { moveCount++; }
+ CopyMoveCounter& operator=(CopyMoveCounter&&) { moveCount++; return *this; }
+};
+
+
+struct ConstructorDestructorCounter {
+ static unsigned constructionCount;
+ static unsigned destructionCount;
+
+ struct TestingScope {
+ TestingScope()
+ {
+ constructionCount = 0;
+ destructionCount = 0;
+ }
+ };
+
+ ConstructorDestructorCounter() { constructionCount++; }
+ ~ConstructorDestructorCounter() { destructionCount++; }
+};
+
+template<typename T>
+struct DeleterCounter {
+ static unsigned deleterCount;
+
+ struct TestingScope {
+ TestingScope()
+ {
+ deleterCount = 0;
+ }
+ };
+
+ void operator()(T* p) const
+ {
+ deleterCount++;
+ delete p;
+ }
+};
+
+template<class T> unsigned DeleterCounter<T>::deleterCount = 0;
+
+#endif // Counters_h
diff --git a/Tools/TestWebKitAPI/DerivedSources.pri b/Tools/TestWebKitAPI/DerivedSources.pri
deleted file mode 100644
index cb391ad59..000000000
--- a/Tools/TestWebKitAPI/DerivedSources.pri
+++ /dev/null
@@ -1,12 +0,0 @@
-# -------------------------------------------------------------------
-# Derived sources for TestWebKitAPI
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = derived
-
-# Make sure forwarded headers needed by this project are present
-fwheader_generator.commands = perl $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl $${ROOT_WEBKIT_DIR}/Tools/TestWebKitAPI $${ROOT_BUILD_DIR}/Source/include qt
-fwheader_generator.depends = $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl
-GENERATORS += fwheader_generator
diff --git a/Tools/TestWebKitAPI/GNUmakefile.am b/Tools/TestWebKitAPI/GNUmakefile.am
deleted file mode 100644
index a3b3f9857..000000000
--- a/Tools/TestWebKitAPI/GNUmakefile.am
+++ /dev/null
@@ -1,375 +0,0 @@
-noinst_LTLIBRARIES += \
- Libraries/libTestWebKitAPIMain.la
-
-Libraries_libTestWebKitAPIMain_la_SOURCES = \
- Tools/TestWebKitAPI/Test.h \
- Tools/TestWebKitAPI/TestsController.cpp \
- Tools/TestWebKitAPI/TestsController.h \
- Tools/TestWebKitAPI/gtk/main.cpp
-
-# Use -isystem gcc flag so that gcc considers gtest headers as system headers.
-# We need this to avoid a lot of compile warnings due to -Wundef.
-# See http://code.google.com/p/googletest/issues/detail?id=258
-Libraries_libTestWebKitAPIMain_la_CPPFLAGS = \
- -isystem $(srcdir)/Source/ThirdParty/gtest/include \
- -I$(srcdir)/Tools/TestWebKitAPI \
- -I$(srcdir)/Source/ThirdParty/gtest/include \
- -I$(top_builddir)/DerivedSources/WebCore/include \
- -I$(top_builddir)/DerivedSources/WebKit2/include \
- $(global_cppflags) \
- $(javascriptcore_cppflags) \
- $(GTK_CFLAGS)
-
-noinst_PROGRAMS += \
- Programs/TestWebKitAPI/TestWTF \
- Programs/TestWebKitAPI/TestJavaScriptCore \
- Programs/TestWebKitAPI/TestWebCore \
- Programs/TestWebKitAPI/TestGtk
-
-if ENABLE_WEBKIT2
-noinst_PROGRAMS += \
- Programs/TestWebKitAPI/TestWebKit2
-endif # ENABLE_WEBKIT2
-
-Programs_TestWebKitAPI_TestWTF_CPPFLAGS = \
- $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS) \
- $(GLIB_LIBS) \
- $(CAIRO_CFLAGS)
-
-Programs_TestWebKitAPI_TestWTF_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Programs_TestWebKitAPI_TestWTF_LDADD = \
- Libraries/libTestWebKitAPIMain.la \
- Libraries/libgtest.la \
- libWTF.la \
- $(GTK_LIBS) \
- $(GLIB_LIBS)
-
-Programs_TestWebKitAPI_TestWTF_LDFLAGS = \
- -no-install \
- -no-fast-install
-
-Programs_TestWebKitAPI_TestWTF_SOURCES = \
- Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp \
- Tools/TestWebKitAPI/Tests/WTF/CString.cpp \
- Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp \
- Tools/TestWebKitAPI/Tests/WTF/Functional.cpp \
- Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp \
- Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp \
- Tools/TestWebKitAPI/Tests/WTF/IntegerToStringConversion.cpp \
- Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp \
- Tools/TestWebKitAPI/Tests/WTF/MD5.cpp \
- Tools/TestWebKitAPI/Tests/WTF/MathExtras.cpp \
- Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp \
- Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp \
- Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp \
- Tools/TestWebKitAPI/Tests/WTF/SHA1.cpp \
- Tools/TestWebKitAPI/Tests/WTF/SaturatedArithmeticOperations.cpp \
- Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp \
- Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp \
- Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp \
- Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp \
- Tools/TestWebKitAPI/Tests/WTF/TemporaryChange.cpp \
- Tools/TestWebKitAPI/Tests/WTF/Vector.cpp \
- Tools/TestWebKitAPI/Tests/WTF/VectorBasic.cpp \
- Tools/TestWebKitAPI/Tests/WTF/VectorReverse.cpp \
- Tools/TestWebKitAPI/WTFStringUtilities.h
-
-Programs_TestWebKitAPI_TestJavaScriptCore_CPPFLAGS = \
- $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS)
-
-Programs_TestWebKitAPI_TestJavaScriptCore_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Programs_TestWebKitAPI_TestJavaScriptCore_LDADD = \
- Libraries/libTestWebKitAPIMain.la \
- Libraries/libgtest.la \
- libWTF.la \
- $(GTK_LIBS)
-
-Programs_TestWebKitAPI_TestJavaScriptCore_LDFLAGS = \
- -no-install \
- -no-fast-install
-
-Programs_TestWebKitAPI_TestJavaScriptCore_SOURCES = \
- Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp
-
-webcore_layer_deps = \
- libPlatform.la \
- libPlatformGtk.la \
- libWebCorePlatform.la \
- libWebCoreGtk.la \
- libWebCore.la \
- libWebCoreModules.la
-if ENABLE_SVG
-webcore_layer_deps += \
- libWebCoreSVG.la
-endif
-if ENABLE_INDEXED_DATABASE
-webcore_layer_deps += \
- libLevelDB.la
-endif
-if USE_OPENGL
-webcore_layer_deps += \
- libANGLE.la
-endif
-
-webcore_layer_archives = $(foreach lib, $(webcore_layer_deps), $(shell echo $(lib) | sed "s/\(.*\)\.la/.libs\/\1.a/"))
-
-WebCoreLayer.a: $(webcore_layer_deps)
- $(AM_V_GEN)
- $(AM_V_at)$(shell rm -f $@)
- $(AM_V_at)$(foreach archive, $(webcore_layer_archives), $(shell ar t $(archive) | xargs -n50 ar cruT $@))
-
-DISTCLEANFILES += \
- $(top_builddir)/WebCoreLayer.a
-
-Programs_TestWebKitAPI_TestWebCore_CPPFLAGS = \
- $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS) \
- -I$(top_builddir)/DerivedSources/WebCore/include
-
-Programs_TestWebKitAPI_TestWebCore_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Programs_TestWebKitAPI_TestWebCore_LDADD = \
- Libraries/libTestWebKitAPIMain.la \
- Libraries/libgtest.la \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libWTF.la \
- WebCoreLayer.a \
- $(CAIRO_LIBS) \
- $(CLUTTER_LIBS) \
- $(FREETYPE_LIBS) \
- $(GAMEPAD_LIBS) \
- $(GEOCLUE_LIBS) \
- $(GAIL_LIBS) \
- $(GLIB_LIBS) \
- $(GSTREAMER_LIBS) \
- $(GTK_LIBS) \
- $(JPEG_LIBS) \
- $(LIBSECRET_LIBS) \
- $(LIBSOUP_LIBS) \
- $(LIBXML_LIBS) \
- $(LIBXSLT_LIBS) \
- $(OPENGL_LIBS) \
- $(PANGO_LIBS) \
- $(PNG_LIBS) \
- $(SQLITE3_LIBS) \
- $(UNICODE_LIBS) \
- $(WEBP_LIBS) \
- $(XRENDER_LIBS) \
- $(XT_LIBS) \
- $(ZLIB_LIBS)
-
-Programs_TestWebKitAPI_TestWebCore_LDFLAGS = \
- -no-install \
- -no-fast-install
-
-Programs_TestWebKitAPI_TestWebCore_SOURCES = \
- Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp \
- Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
-
-Programs_TestWebKitAPI_TestGtk_CPPFLAGS = \
- $(Programs_TestWebKitAPI_TestWTF_CPPFLAGS) \
- $(platform_cppflags) \
- $(platformgtk_cppflags) \
- $(webcore_cppflags) \
- $(webcoregtk_cppflags) \
- $(FREETYPE_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-
-Programs_TestWebKitAPI_TestGtk_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Programs_TestWebKitAPI_TestGtk_LDADD = \
- Libraries/libTestWebKitAPIMain.la \
- Libraries/libgtest.la \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libPlatformGtk.la \
- libWebCore.la \
- libWebCoreGtk.la \
- $(FREETYPE_LIBS) \
- $(GLIB_LIBS) \
- $(GTK_LIBS) \
- $(LIBSOUP_LIBS)
-
-Programs_TestWebKitAPI_TestGtk_LDFLAGS = \
- $(Programs_TestWebKitAPI_TestWTF_LDFLAGS)
-
-Programs_TestWebKitAPI_TestGtk_SOURCES = \
- Source/WebCore/platform/graphics/IntRect.cpp \
- Source/WebCore/platform/graphics/cairo/IntRectCairo.cpp \
- Source/WebCore/platform/graphics/gtk/IntRectGtk.cpp \
- Source/WebCore/platform/gtk/GtkInputMethodFilter.cpp \
- Tools/TestWebKitAPI/config.h \
- Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp
-
-Programs_TestWebKitAPI_TestWebKit2_CPPFLAGS = \
- $(Programs_TestWebKitAPI_TestWTF_CPPFLAGS) \
- -I$(top_builddir)/DerivedSources/WebKit2/include \
- $(FREETYPE_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-
-Programs_TestWebKitAPI_TestWebKit2_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Programs_TestWebKitAPI_TestWebKit2_LDADD = \
- Libraries/libTestWebKitAPIMain.la \
- Libraries/libgtest.la \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- $(FREETYPE_LIBS) \
- $(GLIB_LIBS) \
- $(GTK_LIBS) \
- $(LIBSOUP_LIBS)
-
-Programs_TestWebKitAPI_TestWebKit2_LDFLAGS = \
- $(Programs_TestWebKitAPI_TestWTF_LDFLAGS)
-
-Programs_TestWebKitAPI_TestWebKit2_SOURCES = \
- Tools/TestWebKitAPI/config.h \
- Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp \
- Tools/TestWebKitAPI/gtk/PlatformWebViewGtk.cpp \
- Tools/TestWebKitAPI/JavaScriptTest.cpp \
- Tools/TestWebKitAPI/JavaScriptTest.h \
- Tools/TestWebKitAPI/PlatformUtilities.cpp \
- Tools/TestWebKitAPI/PlatformUtilities.h \
- Tools/TestWebKitAPI/PlatformWebView.h \
- Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKConnection.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp
-
-if ENABLE_WEBKIT2
-noinst_LTLIBRARIES += \
- Libraries/libTestWebKitAPIInjectedBundle.la
-endif # ENABLE_WEBKIT2
-
-Libraries_libTestWebKitAPIInjectedBundle_la_SOURCES = \
- Tools/TestWebKitAPI/InjectedBundleController.cpp \
- Tools/TestWebKitAPI/InjectedBundleController.h \
- Tools/TestWebKitAPI/InjectedBundleMain.cpp \
- Tools/TestWebKitAPI/InjectedBundleTest.h \
- Tools/TestWebKitAPI/PlatformUtilities.cpp \
- Tools/TestWebKitAPI/PlatformUtilities.h \
- Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp \
- Tools/TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp \
- Tools/TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp \
- Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp
-
-Libraries_libTestWebKitAPIInjectedBundle_la_LDFLAGS = \
- -rpath ${shell pwd}/$(top_builddir)/Libraries/.libs \
- $(no_undefined) \
- -avoid-version \
- -module
-
-Libraries_libTestWebKitAPIInjectedBundle_la_CPPFLAGS = \
- $(Libraries_libTestWebKitAPIMain_la_CPPFLAGS) \
- -I$(top_builddir)/DerivedSources/InjectedBundle \
- $(GTK_CFLAGS)
-
-Libraries_libTestWebKitAPIInjectedBundle_la_CXXFLAGS = \
- -DGTEST_HAS_RTTI=0 \
- $(global_cxxflags)
-
-Libraries_libTestWebKitAPIInjectedBundle_la_CFLAGS = \
- $(global_cflags)
-
-
-stamp-testwebkitapi-webcore-forwarding-headers: $(WebKit2)/Scripts/generate-forwarding-headers.pl $(Programs_TestWebKitAPI_TestWebCore_SOURCES)
- $(AM_V_GEN)$(PERL) $< $(srcdir)/Tools/TestWebKitAPI/Tests/WebCore $(GENSOURCES_WEBCORE)/include gtk \
- && echo timestamp > $(@F)
-
-stamp-testwebkitapi-webkit2-forwarding-headers: $(WebKit2)/Scripts/generate-forwarding-headers.pl $(Programs_TestWebKitAPI_TestWebKit2_SOURCES) $(Libraries_libTestWebKitAPIInjectedBundle_la_SOURCES)
- $(AM_V_GEN)$(PERL) $< $(srcdir)/Tools/TestWebKitAPI $(GENSOURCES_WEBKIT2)/include gtk \
- && echo timestamp > $(@F)
-
-BUILT_SOURCES += $(top_builddir)/stamp-testwebkitapi-webcore-forwarding-headers
-if ENABLE_WEBKIT2
-BUILT_SOURCES += $(top_builddir)/stamp-testwebkitapi-webkit2-forwarding-headers
-endif # ENABLE_WEBKIT2
-
-
-EXTRA_DIST += \
- Tools/TestWebKitAPI/Tests/WebKit2/18-characters.html \
- Tools/TestWebKitAPI/Tests/WebKit2/file-with-anchor.html \
- Tools/TestWebKitAPI/Tests/WebKit2/find.html \
- Tools/TestWebKitAPI/Tests/WebKit2/icon.png \
- Tools/TestWebKitAPI/Tests/WebKit2/lots-of-iframes.html \
- Tools/TestWebKitAPI/Tests/WebKit2/lots-of-images.html \
- Tools/TestWebKitAPI/Tests/WebKit2/lots-of-text.html \
- Tools/TestWebKitAPI/Tests/WebKit2/mouse-move-listener.html \
- Tools/TestWebKitAPI/Tests/WebKit2/push-state.html \
- Tools/TestWebKitAPI/Tests/WebKit2/simple-accelerated-compositing.html \
- Tools/TestWebKitAPI/Tests/WebKit2/simple-form.html \
- Tools/TestWebKitAPI/Tests/WebKit2/simple.html \
- Tools/TestWebKitAPI/Tests/WebKit2/simple-iframe.html \
- Tools/TestWebKitAPI/Tests/WebKit2/simple-tall.html \
- Tools/TestWebKitAPI/Tests/WebKit2/spacebar-scrolling.html
diff --git a/Tools/TestWebKitAPI/InjectedBundle-Info.plist b/Tools/TestWebKitAPI/InjectedBundle-Info.plist
deleted file mode 100644
index c285a472c..000000000
--- a/Tools/TestWebKitAPI/InjectedBundle-Info.plist
+++ /dev/null
@@ -1,22 +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>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>com.yourcompany.${PRODUCT_NAME:rfc1034identifier}</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/Tools/TestWebKitAPI/InjectedBundle.pri b/Tools/TestWebKitAPI/InjectedBundle.pri
deleted file mode 100644
index 171a200f0..000000000
--- a/Tools/TestWebKitAPI/InjectedBundle.pri
+++ /dev/null
@@ -1,56 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for TestWebKitAPI's InjectedBundle
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = lib
-TARGET = TestWebKitAPIInjectedBundle
-
-INCLUDEPATH += $$PWD
-INCLUDEPATH += $${ROOT_WEBKIT_DIR}/Source/ThirdParty/gtest/include
-
-SOURCES += \
- $$PWD/InjectedBundleController.cpp \
- $$PWD/InjectedBundleController.h \
- $$PWD/InjectedBundleMain.cpp \
- $$PWD/InjectedBundleTest.h \
- $$PWD/PlatformUtilities.cpp \
- $$PWD/PlatformUtilities.h \
- $$PWD/qt/InjectedBundleControllerQt.cpp \
- $$PWD/qt/PlatformUtilitiesQt.cpp \
- $$PWD/Tests/WebKit2/CanHandleRequest_Bundle.cpp \
- $$PWD/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp \
- $$PWD/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp \
- $$PWD/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp \
- $$PWD/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp \
- $$PWD/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp \
- $$PWD/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp \
- $$PWD/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp \
- $$PWD/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp \
- $$PWD/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp \
- $$PWD/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp \
- $$PWD/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp \
- $$PWD/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp \
- $$PWD/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp \
- $$PWD/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp \
- $$PWD/Tests/WebKit2/ParentFrame_Bundle.cpp \
- $$PWD/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp \
- $$PWD/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp \
- $$PWD/Tests/WebKit2/UserMessage_Bundle.cpp \
- $$PWD/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp \
- $$PWD/Tests/WebKit2/WKConnection_Bundle.cpp
-
-
-DESTDIR = $${ROOT_BUILD_DIR}/lib
-
-QT += core webkit
-
-WEBKIT += wtf javascriptcore webcore webkit2
-
-CONFIG += plugin rpath compiling_thirdparty_code
-
-LIBS += -L$${ROOT_BUILD_DIR}/Source/ThirdParty/gtest/$$targetSubDir() -lgtest
-
-DEFINES += APITEST_SOURCE_DIR=\\\"$$PWD\\\" \
- ROOT_BUILD_DIR=\\\"$${ROOT_BUILD_DIR}\\\"
diff --git a/Tools/TestWebKitAPI/InjectedBundleController.cpp b/Tools/TestWebKitAPI/InjectedBundleController.cpp
index fb78013ee..53f39a874 100644
--- a/Tools/TestWebKitAPI/InjectedBundleController.cpp
+++ b/Tools/TestWebKitAPI/InjectedBundleController.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleController.h"
#include "InjectedBundleTest.h"
@@ -33,7 +36,7 @@
namespace TestWebKitAPI {
-InjectedBundleController& InjectedBundleController::shared()
+InjectedBundleController& InjectedBundleController::singleton()
{
static InjectedBundleController& shared = *new InjectedBundleController;
return shared;
@@ -54,16 +57,15 @@ void InjectedBundleController::initialize(WKBundleRef bundle, WKTypeRef initiali
if (!initializationUserData)
return;
- WKBundleClient client = {
- 0,
- this,
+ WKBundleClientV1 client = {
+ { 0, this },
didCreatePage,
willDestroyPage,
didInitializePageGroup,
didReceiveMessage,
didReceiveMessageToPage
};
- WKBundleSetClient(m_bundle, &client);
+ WKBundleSetClient(m_bundle, &client.base);
// Initialize the test from the "initializationUserData".
@@ -139,3 +141,5 @@ void InjectedBundleController::registerCreateInjectedBundleTestFunction(const st
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/InjectedBundleController.h b/Tools/TestWebKitAPI/InjectedBundleController.h
index 0ca112584..eaa7f0d17 100644
--- a/Tools/TestWebKitAPI/InjectedBundleController.h
+++ b/Tools/TestWebKitAPI/InjectedBundleController.h
@@ -26,7 +26,7 @@
#ifndef InjectedBundleController_h
#define InjectedBundleController_h
-#include <WebKit2/WKBundle.h>
+#include <WebKit/WKBundle.h>
#include <map>
#include <string>
@@ -36,7 +36,7 @@ class InjectedBundleTest;
class InjectedBundleController {
public:
- static InjectedBundleController& shared();
+ static InjectedBundleController& singleton();
void initialize(WKBundleRef, WKTypeRef);
diff --git a/Tools/TestWebKitAPI/InjectedBundleMain.cpp b/Tools/TestWebKitAPI/InjectedBundleMain.cpp
index 8ad6c2bad..b2537f737 100644
--- a/Tools/TestWebKitAPI/InjectedBundleMain.cpp
+++ b/Tools/TestWebKitAPI/InjectedBundleMain.cpp
@@ -24,8 +24,11 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleController.h"
-#include <WebKit2/WKBundleInitialize.h>
+#include <WebKit/WKBundleInitialize.h>
#if defined(WIN32) || defined(_WIN32)
extern "C" __declspec(dllexport)
@@ -34,5 +37,7 @@ extern "C"
#endif
void WKBundleInitialize(WKBundleRef bundle, WKTypeRef initializationUserData)
{
- TestWebKitAPI::InjectedBundleController::shared().initialize(bundle, initializationUserData);
+ TestWebKitAPI::InjectedBundleController::singleton().initialize(bundle, initializationUserData);
}
+
+#endif
diff --git a/Tools/TestWebKitAPI/InjectedBundleTest.h b/Tools/TestWebKitAPI/InjectedBundleTest.h
index d0f996aff..ad2cb9581 100644
--- a/Tools/TestWebKitAPI/InjectedBundleTest.h
+++ b/Tools/TestWebKitAPI/InjectedBundleTest.h
@@ -48,7 +48,7 @@ public:
public:
Register(const std::string& test)
{
- InjectedBundleController::shared().registerCreateInjectedBundleTestFunction(test, Register::create);
+ InjectedBundleController::singleton().registerCreateInjectedBundleTestFunction(test, Register::create);
}
private:
diff --git a/Tools/TestWebKitAPI/JavaScriptTest.cpp b/Tools/TestWebKitAPI/JavaScriptTest.cpp
index 85be89252..133d99eee 100644
--- a/Tools/TestWebKitAPI/JavaScriptTest.cpp
+++ b/Tools/TestWebKitAPI/JavaScriptTest.cpp
@@ -24,15 +24,18 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "Test.h"
#include <JavaScriptCore/JSContextRef.h>
#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKSerializedScriptValue.h>
-#include <wtf/OwnArrayPtr.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSerializedScriptValue.h>
+#include <wtf/StdLibExtras.h>
namespace TestWebKitAPI {
@@ -72,7 +75,7 @@ static void javaScriptCallback(WKSerializedScriptValueRef resultSerializedScript
Util::run(&context.didFinish);
size_t bufferSize = JSStringGetMaximumUTF8CStringSize(context.actualString.get());
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
+ auto buffer = std::make_unique<char[]>(bufferSize);
JSStringGetUTF8CString(context.actualString.get(), buffer.get(), bufferSize);
return compareJSResult(script, buffer.get(), expectedResult);
@@ -90,3 +93,5 @@ static void javaScriptCallback(WKSerializedScriptValueRef resultSerializedScript
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/JavaScriptTest.h b/Tools/TestWebKitAPI/JavaScriptTest.h
index c6e79c3b6..c0494b2ca 100644
--- a/Tools/TestWebKitAPI/JavaScriptTest.h
+++ b/Tools/TestWebKitAPI/JavaScriptTest.h
@@ -23,14 +23,9 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if PLATFORM(MAC)
-#ifdef __OBJC__
-@class WKView;
-@class WebView;
-#else
-class WKView;
-class WebView;
-#endif
+#if PLATFORM(COCOA)
+OBJC_CLASS WKView;
+OBJC_CLASS WebView;
#endif
namespace TestWebKitAPI {
@@ -44,7 +39,7 @@ namespace TestWebKitAPI {
::testing::AssertionResult runJSTest(const char* pageExpr, const char* scriptExpr, const char* expectedResultExpr, WKPageRef, const char* script, const char* expectedResult);
::testing::AssertionResult compareJSResult(const char* script, const char* actualResult, const char* expectedResult);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
::testing::AssertionResult runJSTest(const char* webViewExpr, const char* scriptExpr, const char* expectedResultExpr, WebView *, const char* script, const char* expectedResult);
::testing::AssertionResult runJSTest(const char* viewExpr, const char* scriptExpr, const char* expectedResultExpr, WKView *, const char* script, const char* expectedResult);
#endif
diff --git a/Tools/TestWebKitAPI/Makefile b/Tools/TestWebKitAPI/Makefile
deleted file mode 100644
index ed01cce4c..000000000
--- a/Tools/TestWebKitAPI/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Build TestWebKitAPI only on Snow Leopard and later.
-
-OSX_VERSION ?= $(shell sw_vers -productVersion | cut -d. -f 2)
-BUILD_TESTWEBKITAPI = $(shell (( $(OSX_VERSION) >= 6 )) && echo "YES" )
-
-ifeq "$(BUILD_TESTWEBKITAPI)" "YES"
-
-SCRIPTS_PATH = ../Scripts
-include ../../Makefile.shared
-
-else
-
-all: ;
-
-debug d development dev develop: ;
-
-release r deployment dep deploy: ;
-
-clean: ;
-
-endif
diff --git a/Tools/TestWebKitAPI/PlatformEfl.cmake b/Tools/TestWebKitAPI/PlatformEfl.cmake
deleted file mode 100644
index 28eaf77f5..000000000
--- a/Tools/TestWebKitAPI/PlatformEfl.cmake
+++ /dev/null
@@ -1,130 +0,0 @@
-add_custom_target(forwarding-headersEflForTestWebKitAPI
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT2_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include efl
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT2_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include CoordinatedGraphics
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${TESTWEBKITAPI_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include efl
-)
-set(ForwardingHeadersForTestWebKitAPI_NAME forwarding-headersEflForTestWebKitAPI)
-
-add_custom_target(forwarding-headersSoupForTestWebKitAPI
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT2_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include soup
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${TESTWEBKITAPI_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include soup
-)
-set(ForwardingNetworkHeadersForTestWebKitAPI_NAME forwarding-headersSoupForTestWebKitAPI)
-
-include_directories(
- ${WEBKIT2_DIR}/UIProcess/API/C/CoordinatedGraphics
- ${WEBKIT2_DIR}/UIProcess/API/C/soup
- ${WEBKIT2_DIR}/UIProcess/API/C/efl
- ${WEBKIT2_DIR}/UIProcess/API/efl
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
- ${LIBSOUP_INCLUDE_DIRS}
-)
-
-set(test_main_SOURCES
- ${TESTWEBKITAPI_DIR}/efl/main.cpp
-)
-
-set(bundle_harness_SOURCES
- ${TESTWEBKITAPI_DIR}/efl/InjectedBundleController.cpp
- ${TESTWEBKITAPI_DIR}/efl/PlatformUtilities.cpp
-)
-
-set(webkit2_api_harness_SOURCES
- ${TESTWEBKITAPI_DIR}/efl/PlatformUtilities.cpp
- ${TESTWEBKITAPI_DIR}/efl/PlatformWebView.cpp
-)
-
-# The list below works like a test expectation. Tests in the
-# test_{webkit2_api|webcore}_BINARIES list are added to the test runner and
-# tried on the bots on every build. Tests in test_{webkit2_api|webcore}_BINARIES
-# are compiled and suffixed with fail and skipped from the test runner.
-#
-# Make sure that the tests are passing on both Debug and
-# Release builds before adding it to test_{webkit2_api|webcore}_BINARIES.
-
-set(test_webcore_BINARIES
- LayoutUnit
- KURL
-)
-
-# In here we list the bundles that are used by our specific WK2 API Tests
-list(APPEND bundle_harness_SOURCES
- ${TESTWEBKITAPI_DIR}/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp
-)
-
-set(test_webkit2_api_BINARIES
- AboutBlankLoad
- CloseThenTerminate
- CookieManager
- DidAssociateFormControls
- DOMWindowExtensionNoCache
- DocumentStartUserScriptAlertCrash
- EvaluateJavaScript
- FailedLoad
- Find
- ForceRepaint
- FrameMIMETypeHTML
- FrameMIMETypePNG
- GetInjectedBundleInitializationUserDataCallback
- HitTestResultNodeHandle
- InjectedBundleBasic
- InjectedBundleFrameHitTest
- InjectedBundleInitializationUserDataCallbackWins
- LoadAlternateHTMLStringWithNonDirectoryURL
- LoadCanceledNoServerRedirectCallback
- LoadPageOnCrash
- MouseMoveAfterCrash
- NewFirstVisuallyNonEmptyLayout
- NewFirstVisuallyNonEmptyLayoutFails
- NewFirstVisuallyNonEmptyLayoutForImages
- PageLoadBasic
- PageLoadDidChangeLocationWithinPageForFrame
- PageVisibilityState
- ParentFrame
- PreventEmptyUserAgent
- PrivateBrowsingPushStateNoHistoryCallback
- ReloadPageAfterCrash
- ResizeWindowAfterCrash
- ResponsivenessTimerDoesntFireEarly
- TerminateTwice
- UserMessage
- WKConnection
- WKPreferences
- WKString
- WKStringJSString
- WKURL
- WillLoad
- WillSendSubmitEvent
- CoordinatedGraphics/WKViewUserViewportToContents
- efl/WKViewClientWebProcessCallbacks
-)
-
-# Seccomp filters is an internal API and its symbols
-# are not (and should not) be exposed by default. We
-# can only test it when building shared core.
-if (ENABLE_SECCOMP_FILTERS AND SHARED_CORE)
- list(APPEND test_webkit2_api_BINARIES
- SeccompFilters
- )
-endif ()
-
-set(test_webkit2_api_fail_BINARIES
- CanHandleRequest
- DOMWindowExtensionBasic
- DownloadDecideDestinationCrash
- NewFirstVisuallyNonEmptyLayoutFrames
- ResizeReversePaginatedWebView
- RestoreSessionStateContainingFormData
- ScrollPinningBehaviors
- ShouldGoToBackForwardListItem
- WKPageGetScaleFactorNotZero
-)
-
-# Tests disabled because of missing features on the test harness:
-#
-# SpacebarScrolling
diff --git a/Tools/TestWebKitAPI/PlatformQt.cmake b/Tools/TestWebKitAPI/PlatformQt.cmake
new file mode 100644
index 000000000..08d94c0d8
--- /dev/null
+++ b/Tools/TestWebKitAPI/PlatformQt.cmake
@@ -0,0 +1,53 @@
+set(TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/TestWebKitAPI")
+set(TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY_WTF "${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WTF")
+
+include_directories(
+ ${DERIVED_SOURCES_DIR}/ForwardingHeaders
+ ${DERIVED_SOURCES_DIR}/ForwardingHeaders/JavaScriptCore
+ ${TESTWEBKITAPI_DIR}
+)
+
+include_directories(SYSTEM
+ ${ICU_INCLUDE_DIRS}
+ ${Qt5Gui_INCLUDE_DIRS}
+)
+
+add_definitions(
+ -DROOT_BUILD_DIR="${CMAKE_BINARY_DIR}"
+ -DQT_NO_CAST_FROM_ASCII
+)
+
+if (WIN32)
+ add_definitions(-DUSE_CONSOLE_ENTRY_POINT)
+ add_definitions(-DWEBCORE_EXPORT=)
+ add_definitions(-DSTATICALLY_LINKED_WITH_WTF)
+endif ()
+
+set(test_main_SOURCES
+ ${TESTWEBKITAPI_DIR}/qt/main.cpp
+)
+
+list(APPEND test_wtf_LIBRARIES
+ ${Qt5Gui_LIBRARIES}
+)
+
+set(test_webcore_LIBRARIES
+ WebCore
+ gtest
+ ${Qt5Gui_LIBRARIES}
+)
+
+add_executable(TestWebCore
+ ${test_main_SOURCES}
+ ${TESTWEBKITAPI_DIR}/TestsController.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/LayoutUnit.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/URL.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/SharedBuffer.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/FileSystem.cpp
+ ${TESTWEBKITAPI_DIR}/Tests/WebCore/PublicSuffix.cpp
+)
+
+target_link_libraries(TestWebCore ${test_webcore_LIBRARIES})
+add_test(TestWebCore ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore/TestWebCore)
+set_tests_properties(TestWebCore PROPERTIES TIMEOUT 60)
+set_target_properties(TestWebCore PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${TESTWEBKITAPI_RUNTIME_OUTPUT_DIRECTORY}/WebCore)
diff --git a/Tools/TestWebKitAPI/PlatformUtilities.cpp b/Tools/TestWebKitAPI/PlatformUtilities.cpp
index 1ded2a94c..216c70ac2 100644
--- a/Tools/TestWebKitAPI/PlatformUtilities.cpp
+++ b/Tools/TestWebKitAPI/PlatformUtilities.cpp
@@ -24,14 +24,16 @@
*/
#include "config.h"
+
#include "PlatformUtilities.h"
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
+#include <wtf/StdLibExtras.h>
namespace TestWebKitAPI {
namespace Util {
+#if WK_HAVE_C_SPI
+
WKContextRef createContextWithInjectedBundle()
{
WKRetainPtr<WKStringRef> injectedBundlePath(AdoptWK, createInjectedBundlePath());
@@ -46,10 +48,10 @@ WKDictionaryRef createInitializationDictionaryForInjectedBundleTest(const std::s
WKRetainPtr<WKStringRef> testNameKey(AdoptWK, WKStringCreateWithUTF8CString("TestName"));
WKRetainPtr<WKStringRef> testNameString(AdoptWK, WKStringCreateWithUTF8CString(testName.c_str()));
- WKDictionaryAddItem(initializationDictionary, testNameKey.get(), testNameString.get());
+ WKDictionarySetItem(initializationDictionary, testNameKey.get(), testNameString.get());
WKRetainPtr<WKStringRef> userDataKey(AdoptWK, WKStringCreateWithUTF8CString("UserData"));
- WKDictionaryAddItem(initializationDictionary, userDataKey.get(), userData);
+ WKDictionarySetItem(initializationDictionary, userDataKey.get(), userData);
return initializationDictionary;
}
@@ -67,7 +69,7 @@ WKContextRef createContextForInjectedBundleTest(const std::string& testName, WKT
std::string toSTD(WKStringRef string)
{
size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
+ auto buffer = std::make_unique<char[]>(bufferSize);
size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
return std::string(buffer.get(), stringLength - 1);
}
@@ -77,14 +79,16 @@ std::string toSTD(WKRetainPtr<WKStringRef> string)
return toSTD(string.get());
}
-std::string toSTD(const char* string)
+WKRetainPtr<WKStringRef> toWK(const char* utf8String)
{
- return std::string(string);
+ return WKRetainPtr<WKStringRef>(AdoptWK, WKStringCreateWithUTF8CString(utf8String));
}
-WKRetainPtr<WKStringRef> toWK(const char* utf8String)
+#endif // WK_HAVE_C_SPI
+
+std::string toSTD(const char* string)
{
- return WKRetainPtr<WKStringRef>(AdoptWK, WKStringCreateWithUTF8CString(utf8String));
+ return std::string(string);
}
} // namespace Util
diff --git a/Tools/TestWebKitAPI/PlatformUtilities.h b/Tools/TestWebKitAPI/PlatformUtilities.h
index 10da84d33..7583e4ee0 100644
--- a/Tools/TestWebKitAPI/PlatformUtilities.h
+++ b/Tools/TestWebKitAPI/PlatformUtilities.h
@@ -26,15 +26,12 @@
#ifndef PlatformUtilities_h
#define PlatformUtilities_h
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKNativeEvent.h>
+#include <WebKit/WKRetainPtr.h>
#include <string>
-#if PLATFORM(MAC)
-#if __OBJC__
-@class NSString;
-#else
-class NSString;
-#endif
+#if USE(FOUNDATION)
+OBJC_CLASS NSString;
#endif
namespace TestWebKitAPI {
@@ -42,12 +39,14 @@ namespace Util {
// Runs a platform runloop until the 'done' is true.
void run(bool* done);
+void sleep(double seconds);
-#if PLATFORM(WIN)
-bool shouldTranslateMessage(const MSG&);
+std::string toSTD(const char*);
+#if USE(FOUNDATION)
+std::string toSTD(NSString *);
#endif
-void sleep(double seconds);
+#if WK_HAVE_C_SPI
WKContextRef createContextWithInjectedBundle();
WKContextRef createContextForInjectedBundleTest(const std::string&, WKTypeRef userData = 0);
@@ -62,13 +61,11 @@ bool isKeyDown(WKNativeEventPtr);
std::string toSTD(WKStringRef);
std::string toSTD(WKRetainPtr<WKStringRef>);
-std::string toSTD(const char*);
-#if PLATFORM(MAC)
-std::string toSTD(NSString *);
-#endif
WKRetainPtr<WKStringRef> toWK(const char* utf8String);
+#endif // WK_HAVE_C_SPI
+
template<typename T, typename U>
static inline ::testing::AssertionResult assertWKStringEqual(const char* expected_expression, const char* actual_expression, T expected, U actual)
{
@@ -78,6 +75,10 @@ static inline ::testing::AssertionResult assertWKStringEqual(const char* expecte
#define EXPECT_WK_STREQ(expected, actual) \
EXPECT_PRED_FORMAT2(TestWebKitAPI::Util::assertWKStringEqual, expected, actual)
+#if WK_API_ENABLED
+extern NSString * const TestPlugInClassNameParameter;
+#endif
+
} // namespace Util
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/PlatformWebView.h b/Tools/TestWebKitAPI/PlatformWebView.h
index 3eb791a19..f6819cd5e 100644
--- a/Tools/TestWebKitAPI/PlatformWebView.h
+++ b/Tools/TestWebKitAPI/PlatformWebView.h
@@ -30,7 +30,11 @@
#include <CoreGraphics/CGGeometry.h>
#endif
-#ifdef __APPLE__
+#if PLATFORM(MAC)
+#include <objc/objc.h>
+#endif
+
+#if defined(__APPLE__) && !PLATFORM(GTK)
#ifdef __OBJC__
@class WKView;
@class NSWindow;
@@ -40,19 +44,10 @@ class NSWindow;
#endif
typedef WKView *PlatformWKView;
typedef NSWindow *PlatformWindow;
-#elif defined(WIN32) || defined(_WIN32)
-typedef WKViewRef PlatformWKView;
-typedef HWND PlatformWindow;
#elif PLATFORM(GTK)
typedef WKViewRef PlatformWKView;
typedef GtkWidget *PlatformWindow;
#elif PLATFORM(EFL)
-typedef struct _Ecore_Evas Ecore_Evas;
-#if USE(EO)
-typedef struct _Eo Evas_Object;
-#else
-typedef struct _Evas_Object Evas_Object;
-#endif
typedef Evas_Object* PlatformWKView;
typedef Ecore_Evas* PlatformWindow;
#elif PLATFORM(QT)
@@ -66,13 +61,14 @@ typedef QQuickView* PlatformWindow;
namespace TestWebKitAPI {
-#if PLATFORM(WIN)
-class WindowMessageObserver;
-#endif
-
class PlatformWebView {
public:
- PlatformWebView(WKContextRef, WKPageGroupRef = 0);
+ explicit PlatformWebView(WKPageConfigurationRef);
+ explicit PlatformWebView(WKContextRef, WKPageGroupRef = 0);
+ explicit PlatformWebView(WKPageRef relatedPage);
+#if PLATFORM(MAC)
+ explicit PlatformWebView(WKContextRef, WKPageGroupRef, Class wkViewSubclass);
+#endif
~PlatformWebView();
WKPageRef page() const;
@@ -84,24 +80,19 @@ public:
void simulateAltKeyPress();
void simulateRightClick(unsigned x, unsigned y);
void simulateMouseMove(unsigned x, unsigned y);
-
-#if PLATFORM(WIN)
- void simulateAKeyDown();
- void setParentWindowMessageObserver(WindowMessageObserver* observer) { m_parentWindowMessageObserver = observer; }
+#if PLATFORM(MAC)
+ void simulateButtonClick(WKEventMouseButton, unsigned x, unsigned y, WKEventModifiers);
#endif
private:
-#if PLATFORM(WIN)
- static void registerWindowClass();
- static LRESULT CALLBACK wndProc(HWND, UINT message, WPARAM, LPARAM);
+#if PLATFORM(MAC)
+ void initialize(WKPageConfigurationRef, Class wkViewSubclass);
+#elif PLATFORM(GTK)
+ void initialize(WKPageConfigurationRef);
#endif
PlatformWKView m_view;
PlatformWindow m_window;
-
-#if PLATFORM(WIN)
- WindowMessageObserver* m_parentWindowMessageObserver;
-#endif
};
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Test.h b/Tools/TestWebKitAPI/Test.h
index ca43924a2..cf44045fb 100644
--- a/Tools/TestWebKitAPI/Test.h
+++ b/Tools/TestWebKitAPI/Test.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2016 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,6 +26,8 @@
#ifndef Test_h
#define Test_h
+#include <type_traits>
+
namespace TestWebKitAPI {
#define EXPECT_NOT_NULL(expression) \
@@ -40,6 +42,18 @@ namespace TestWebKitAPI {
#define ASSERT_NULL(expression) \
ASSERT_TRUE(!(expression))
+template<typename T>
+static inline ::testing::AssertionResult assertStrongEnum(const char* expected_expression, const char* actual_expression, T expected, T actual)
+{
+ static_assert(std::is_enum<T>::value, "T is not an enum type");
+ typedef typename std::underlying_type<T>::type UnderlyingStorageType;
+ return ::testing::internal::CmpHelperEQ(expected_expression, actual_expression, static_cast<UnderlyingStorageType>(expected), static_cast<UnderlyingStorageType>(actual));
+}
+
+#define EXPECT_STRONG_ENUM_EQ(expected, actual) \
+ EXPECT_PRED_FORMAT2(TestWebKitAPI::assertStrongEnum, expected, actual)
+
+
} // namespace TestWebKitAPI
#endif // Test_h
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.pri b/Tools/TestWebKitAPI/TestWebKitAPI.pri
deleted file mode 100644
index ddc9934f4..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.pri
+++ /dev/null
@@ -1,22 +0,0 @@
-
-INCLUDEPATH += $$PWD $${ROOT_WEBKIT_DIR}/Source/ThirdParty/gtest/include
-WEBKIT += wtf javascriptcore webkit2
-
-DEFINES += QT_NO_CAST_FROM_ASCII
-
-QT += core core-private gui gui-private webkit quick quick-private
-
-CONFIG += compiling_thirdparty_code
-
-SOURCES += \
- $$PWD/JavaScriptTest.cpp \
- $$PWD/PlatformUtilities.cpp \
- $$PWD/TestsController.cpp \
- $$PWD/qt/main.cpp \
- $$PWD/qt/PlatformUtilitiesQt.cpp \
- $$PWD/qt/PlatformWebViewQt.cpp
-
-LIBS += -L$${ROOT_BUILD_DIR}/Source/ThirdParty/gtest/$$targetSubDir() -lgtest
-
-DEFINES += ROOT_BUILD_DIR=\\\"$${ROOT_BUILD_DIR}\\\"
-
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.pro b/Tools/TestWebKitAPI/TestWebKitAPI.pro
deleted file mode 100644
index b9d0cd5b6..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.pro
+++ /dev/null
@@ -1,11 +0,0 @@
-TEMPLATE = subdirs
-CONFIG += ordered
-
-derived_sources.file = DerivedSources.pri
-injected_bundle.file = InjectedBundle.pri
-tests.file = Tests.pri
-
-SUBDIRS += derived_sources injected_bundle tests
-
-addStrictSubdirOrderBetween(derived_sources, injected_bundle)
-addStrictSubdirOrderBetween(derived_sources, tests)
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.sln b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.sln
deleted file mode 100644
index 38b2fd6b3..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.sln
+++ /dev/null
@@ -1,29 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 11.00
-# Visual Studio 2010
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "TestWebKitAPI", "TestWebKitAPI.vcxproj", "{AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}"
- ProjectSection(ProjectDependencies) = postProject
- {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8} = {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}
- EndProjectSection
-EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "gtest-md", "..\..\..\Source\ThirdParty\gtest\msvc\gtest-md.vcxproj", "{C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Win32 = Debug|Win32
- Release|Win32 = Release|Win32
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|Win32.ActiveCfg = Debug|Win32
- {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Debug|Win32.Build.0 = Debug|Win32
- {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|Win32.ActiveCfg = Release|Win32
- {AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}.Release|Win32.Build.0 = Release|Win32
- {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|Win32.ActiveCfg = Debug|Win32
- {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Debug|Win32.Build.0 = Debug|Win32
- {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|Win32.ActiveCfg = Release|Win32
- {C8F6C172-56F2-4E76-B5FA-C3B423B31BE8}.Release|Win32.Build.0 = Release|Win32
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj
deleted file mode 100644
index d6db8309a..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj
+++ /dev/null
@@ -1,314 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{AF94D13A-36C1-45FF-9B0B-EB5D3FF6F43D}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>TestWebKitAPI</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="TestWebKitAPIProduction.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" />
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="..\config.h" />
- <ClInclude Include="..\Test.h" />
- <ClInclude Include="..\TestsController.h" />
- <ClInclude Include="..\win\HostWindow.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\TestsController.cpp" />
- <ClCompile Include="..\Tests\WebCore\LayoutUnit.cpp" />
- <ClCompile Include="..\Tests\WebCore\win\BitmapImage.cpp">
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Production|x64'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
- </ClCompile>
- <ClCompile Include="..\Tests\WebKit\win\WebViewDestruction.cpp" />
- <ClCompile Include="..\Tests\WTF\cf\RetainPtr.cpp" />
- <ClCompile Include="..\Tests\WTF\cf\RetainPtrHashing.cpp" />
- <ClCompile Include="..\Tests\WTF\CheckedArithmeticOperations.cpp" />
- <ClCompile Include="..\Tests\WTF\Functional.cpp" />
- <ClCompile Include="..\Tests\WTF\HashMap.cpp" />
- <ClCompile Include="..\Tests\WTF\MD5.cpp" />
- <ClCompile Include="..\Tests\WTF\MathExtras.cpp" />
- <ClCompile Include="..\Tests\WTF\MediaTime.cpp" />
- <ClCompile Include="..\Tests\WTF\SHA1.cpp" />
- <ClCompile Include="..\Tests\WTF\SaturatedArithmeticOperations.cpp" />
- <ClCompile Include="..\Tests\WTF\StringHasher.cpp" />
- <ClCompile Include="..\Tests\WTF\StringOperators.cpp" />
- <ClCompile Include="..\Tests\WTF\Vector.cpp" />
- <ClCompile Include="..\Tests\WTF\VectorBasic.cpp" />
- <ClCompile Include="..\Tests\WTF\VectorReverse.cpp" />
- <ClCompile Include="..\win\HostWindow.cpp" />
- <ClCompile Include="..\win\main.cpp" />
- </ItemGroup>
- <ItemGroup>
- <None Include="TestWebKitAPIPostBuild.cmd" />
- <None Include="TestWebKitAPIPreBuild.cmd" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters
deleted file mode 100644
index 27cf75cb4..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPI.vcxproj.filters
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Tests">
- <UniqueIdentifier>{80b7e5c5-5c50-4363-ae7b-a0956e6a688d}</UniqueIdentifier>
- </Filter>
- <Filter Include="win">
- <UniqueIdentifier>{e0b41579-994a-4d5e-9c2a-2ec14cd0c606}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests\WTF">
- <UniqueIdentifier>{87f2c8f6-8710-4785-a918-2aec42c9f1d3}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests\WebCore">
- <UniqueIdentifier>{77db1e64-3c2d-4de3-adc1-860d4ea1c3c2}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests\WebKit">
- <UniqueIdentifier>{f8236406-78aa-4c83-b393-b060b09405a3}</UniqueIdentifier>
- </Filter>
- <Filter Include="Tests\WTF\cf">
- <UniqueIdentifier>{909ce22a-2223-4afa-af44-2d0153f13cc6}</UniqueIdentifier>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\config.h" />
- <ClInclude Include="..\Test.h" />
- <ClInclude Include="..\TestsController.h" />
- <ClInclude Include="..\win\HostWindow.h">
- <Filter>win</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\TestsController.cpp" />
- <ClCompile Include="..\win\HostWindow.cpp">
- <Filter>win</Filter>
- </ClCompile>
- <ClCompile Include="..\win\main.cpp">
- <Filter>win</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WebCore\win\BitmapImage.cpp">
- <Filter>Tests\WebCore</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WebCore\LayoutUnit.cpp">
- <Filter>Tests\WebCore</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WebKit\win\WebViewDestruction.cpp">
- <Filter>Tests\WebKit</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\CheckedArithmeticOperations.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\Functional.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\HashMap.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\MD5.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\MathExtras.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\MediaTime.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\SHA1.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\SaturatedArithmeticOperations.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\StringHasher.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\StringOperators.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\Vector.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\VectorBasic.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\VectorReverse.cpp">
- <Filter>Tests\WTF</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\cf\RetainPtr.cpp">
- <Filter>Tests\WTF\cf</Filter>
- </ClCompile>
- <ClCompile Include="..\Tests\WTF\cf\RetainPtrHashing.cpp">
- <Filter>Tests\WTF\cf</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="TestWebKitAPIPostBuild.cmd" />
- <None Include="TestWebKitAPIPreBuild.cmd" />
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommon.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommon.props
deleted file mode 100644
index 07bdf91db..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommon.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup>
- <Link>
- <SubSystem>Console</SubSystem>
- <AdditionalDependencies>CFNetwork$(DebugSuffix).lib;CoreFoundation$(DebugSuffix).lib;WebKit$(DebugSuffix).lib;WTF$(DebugSuffix).lib;JavaScriptCore$(DebugSuffix).lib;gtest$(DebugSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)..;$(ProjectDir)..\win;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\private;..\..\..\Source\ThirdParty\gtest\include;$(WebKit_Libraries)\include;$(WebKit_Libraries)\Include\private;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommonWinCairo.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommonWinCairo.props
deleted file mode 100644
index 5b75cd8ba..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPICommonWinCairo.props
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup>
- <Link>
- <SubSystem>Console</SubSystem>
- <AdditionalDependencies>CFLite.lib;WebKit.lib;JavaScriptCore.lib;gtest.lib;WTF.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)..;$(ProjectDir)..\win;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\private\JavaScriptCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\private;..\..\..\Source\ThirdParty\gtest\include;$(WebKit_Libraries)\include;$(WebKit_Libraries)\Include\private;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PreprocessorDefinitions>_CONSOLE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
- </ClCompile>
- </ItemDefinitionGroup>
- <ItemGroup />
-</Project>
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebug.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebug.props
deleted file mode 100644
index 76cef1409..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebug.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="TestWebKitAPICommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props
deleted file mode 100644
index ce507e69c..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIDebugWinCairo.props
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\cURL.props" />
- <Import Project="TestWebKitAPICommonWinCairo.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project>
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPostBuild.cmd b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPreBuild.cmd b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIProduction.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIProduction.props
deleted file mode 100644
index bac3a5bf2..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIProduction.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="TestWebKitAPICommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIRelease.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIRelease.props
deleted file mode 100644
index a25ac6c9b..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIRelease.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="TestWebKitAPICommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props b/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props
deleted file mode 100644
index 759c7fc3c..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.vcxproj/TestWebKitAPIReleaseWinCairo.props
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\WinCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\cURL.props" />
- <Import Project="TestWebKitAPICommonWinCairo.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project>
diff --git a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj b/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
deleted file mode 100644
index c484361c0..000000000
--- a/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,1359 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 45;
- objects = {
-
-/* Begin PBXBuildFile section */
- 00BC16871680FE810065F1E5 /* PublicSuffix.mm in Sources */ = {isa = PBXBuildFile; fileRef = 00BC16851680FE810065F1E5 /* PublicSuffix.mm */; };
- 00CD9F6315BE312C002DA2CE /* BackForwardList.mm in Sources */ = {isa = PBXBuildFile; fileRef = 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */; };
- 0BCD833514857CE400EA2003 /* HashMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BCD833414857CE400EA2003 /* HashMap.cpp */; };
- 0BCD856A1485C98B00EA2003 /* TemporaryChange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */; };
- 0F17BBD615AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0F17BBD415AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp */; };
- 0FC6C4CC141027E0005B7F0C /* RedBlackTree.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC6C4CB141027E0005B7F0C /* RedBlackTree.cpp */; };
- 0FC6C4CF141034AD005B7F0C /* MetaAllocator.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0FC6C4CE141034AD005B7F0C /* MetaAllocator.cpp */; };
- 14464013167A8305000BD218 /* LayoutUnit.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14464012167A8305000BD218 /* LayoutUnit.cpp */; };
- 14F3B11315E45EAB00210069 /* SaturatedArithmeticOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14F3B11215E45EAB00210069 /* SaturatedArithmeticOperations.cpp */; };
- 1A02C84F125D4A8400E3F4BD /* Find.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A02C84E125D4A8400E3F4BD /* Find.cpp */; };
- 1A02C870125D4CFD00E3F4BD /* find.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1A02C84B125D4A5E00E3F4BD /* find.html */; };
- 1A5FEFDD1270E2A3000E2921 /* EvaluateJavaScript.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1A5FEFDC1270E2A3000E2921 /* EvaluateJavaScript.cpp */; };
- 1A7BFC0C171A0BDB00BC5F64 /* WillSendSubmitEvent.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1A7BFC0A171A0BDB00BC5F64 /* WillSendSubmitEvent.mm */; };
- 1A9E52C913E65EF4006917F5 /* 18-characters.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C045F9461385C2F800C0F3CD /* 18-characters.html */; };
- 1AA9E55914980A9900001A8A /* Functional.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AA9E55714980A9900001A8A /* Functional.cpp */; };
- 1ADBEFAE130C689C00D61D19 /* ForceRepaint.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1ADBEFAD130C689C00D61D19 /* ForceRepaint.cpp */; };
- 1ADBEFE3130C6AA100D61D19 /* simple-accelerated-compositing.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 1ADBEFBC130C6A0100D61D19 /* simple-accelerated-compositing.html */; };
- 1AE72F48173EB214006362F0 /* TerminateTwice.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AE72F47173EB214006362F0 /* TerminateTwice.cpp */; };
- 1AEDE22613E5E7E700E62FE8 /* InjectedBundleControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */; };
- 1AEF994917A09F5400998EF0 /* GetPIDAfterAbortedProcessLaunch.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 1AEF994817A09F5300998EF0 /* GetPIDAfterAbortedProcessLaunch.cpp */; };
- 261516D615B0E60500A2C201 /* SetAndUpdateCacheModel.mm in Sources */ = {isa = PBXBuildFile; fileRef = 261516D515B0E60500A2C201 /* SetAndUpdateCacheModel.mm */; };
- 26300B1816755CD90066886D /* ListHashSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26300B1716755CD90066886D /* ListHashSet.cpp */; };
- 265AF55015D1E48A00B0CB4A /* WTFString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 265AF54F15D1E48A00B0CB4A /* WTFString.cpp */; };
- 266FAFD315E5775200F61D5B /* IntegerToStringConversion.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 266FAFD215E5775200F61D5B /* IntegerToStringConversion.cpp */; };
- 26A2C72F15E2E73C005B1A14 /* CString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26A2C72E15E2E73C005B1A14 /* CString.cpp */; };
- 26B2DFF915BDE599004F691D /* HashSet.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26B2DFF815BDE599004F691D /* HashSet.cpp */; };
- 26DF5A5E15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */; };
- 26DF5A6315A2A27E003689C2 /* CancelLoadFromResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 26DF5A6115A2A22B003689C2 /* CancelLoadFromResourceLoadDelegate.html */; };
- 26F1B44415CA434F00D1E4BF /* AtomicString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F1B44215CA434F00D1E4BF /* AtomicString.cpp */; };
- 26F1B44515CA434F00D1E4BF /* StringImpl.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26F1B44315CA434F00D1E4BF /* StringImpl.cpp */; };
- 290A9BB71735DE8A00D71BBC /* CloseNewWindowInNavigationPolicyDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 290A9BB51735DE8A00D71BBC /* CloseNewWindowInNavigationPolicyDelegate.mm */; };
- 290A9BB91735F63800D71BBC /* OpenNewWindow.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 290A9BB81735F42300D71BBC /* OpenNewWindow.html */; };
- 290F4275172A221C00939FF0 /* custom-protocol-sync-xhr.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 290F4274172A1FDE00939FF0 /* custom-protocol-sync-xhr.html */; };
- 290F4278172A232C00939FF0 /* CustomProtocolsSyncXHRTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 290F4276172A232C00939FF0 /* CustomProtocolsSyncXHRTest.mm */; };
- 290F427B172A23A500939FF0 /* TestProtocol.mm in Sources */ = {isa = PBXBuildFile; fileRef = 290F4279172A23A500939FF0 /* TestProtocol.mm */; };
- 291861FF17BD4DC700D4E41E /* StopLoadingFromDidFinishLoading.mm in Sources */ = {isa = PBXBuildFile; fileRef = 291861FD17BD4DC700D4E41E /* StopLoadingFromDidFinishLoading.mm */; };
- 2943BE86161DFEB800999E3D /* UserContentTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2943BE84161DFEB800999E3D /* UserContentTest.mm */; };
- 297234B4173AD04800983601 /* CustomProtocolsInvalidScheme.mm in Sources */ = {isa = PBXBuildFile; fileRef = 297234B2173AD04800983601 /* CustomProtocolsInvalidScheme.mm */; };
- 297234B7173AFAC700983601 /* CustomProtocolsInvalidScheme_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 297234B5173AFAC700983601 /* CustomProtocolsInvalidScheme_Bundle.cpp */; };
- 29AB8AA1164C735800D49BEC /* CustomProtocolsTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29AB8A9F164C735800D49BEC /* CustomProtocolsTest.mm */; };
- 29AB8AA4164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29AB8AA2164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.mm */; };
- 2D640B5517875DFF00BFAF99 /* ScrollPinningBehaviors.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2D640B5417875DFF00BFAF99 /* ScrollPinningBehaviors.cpp */; };
- 2DD7D3AA178205D00026E1E3 /* ResizeReversePaginatedWebView.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 2DD7D3A9178205D00026E1E3 /* ResizeReversePaginatedWebView.cpp */; };
- 2DD7D3AF178227B30026E1E3 /* lots-of-text-vertical-lr.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 2DD7D3AE178227AC0026E1E3 /* lots-of-text-vertical-lr.html */; };
- 2E7765CD16C4D80A00BA2BB1 /* mainIOS.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E7765CC16C4D80A00BA2BB1 /* mainIOS.mm */; };
- 2E7765CF16C4D81100BA2BB1 /* mainMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 2E7765CE16C4D81100BA2BB1 /* mainMac.mm */; };
- 333B9CE21277F23100FEFCE3 /* PreventEmptyUserAgent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */; };
- 33BE5AF5137B5A6C00705813 /* MouseMoveAfterCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33BE5AF4137B5A6C00705813 /* MouseMoveAfterCrash.cpp */; };
- 33BE5AF9137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33BE5AF8137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp */; };
- 33DC8911141953A300747EF7 /* LoadCanceledNoServerRedirectCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33DC8910141953A300747EF7 /* LoadCanceledNoServerRedirectCallback.cpp */; };
- 33DC8912141955FE00747EF7 /* simple-iframe.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 33DC890E1419539300747EF7 /* simple-iframe.html */; };
- 33DC89141419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 33DC89131419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp */; };
- 33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */; };
- 37200B9213A16230007A4FAD /* VectorReverse.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 37200B9113A16230007A4FAD /* VectorReverse.cpp */; };
- 3722C8691461E03E00C45D00 /* RenderedImageFromDOMRange.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */; };
- 3751AF7C169518F800764319 /* DOMNodeFromJSObject.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */; };
- 3776BC63150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */; };
- 378E64731632646D00B6C676 /* InjectedBundleFrameHitTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */; };
- 378E64771632655E00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */; };
- 378E64791632707400B6C676 /* link-with-title.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 378E647816326FDF00B6C676 /* link-with-title.html */; };
- 379028B614FABD92007E6B43 /* AcceptsFirstMouse.mm in Sources */ = {isa = PBXBuildFile; fileRef = 379028B514FABD92007E6B43 /* AcceptsFirstMouse.mm */; };
- 379028B914FAC24C007E6B43 /* acceptsFirstMouse.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */; };
- 3799AD3A14120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */; };
- 37A6895F148A9B50005100FA /* SubresourceErrorCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37A6895D148A9B50005100FA /* SubresourceErrorCrash.mm */; };
- 37DC678D140D7C5000ABCCDB /* DOMRangeOfString.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37DC678B140D7C5000ABCCDB /* DOMRangeOfString.mm */; };
- 37DC6791140D7D7600ABCCDB /* DOMRangeOfString.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 37DC678F140D7D3A00ABCCDB /* DOMRangeOfString.html */; };
- 37E1064C1697681800B78BD0 /* DOMHTMLTableCellElementCellAbove.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 37E1064B169767F700B78BD0 /* DOMHTMLTableCellElementCellAbove.html */; };
- 37E1064D16976C8500B78BD0 /* DOMHTMLTableCellCellAbove.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E1064A1697676400B78BD0 /* DOMHTMLTableCellCellAbove.mm */; };
- 37E38C34169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */; };
- 440A1D3914A0103A008A66F2 /* KURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 440A1D3814A0103A008A66F2 /* KURL.cpp */; };
- 4BB4160216815B2600824238 /* JSWrapperForNodeInWebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */; };
- 4BB4160416815F9100824238 /* ElementAtPointInWebFrame.mm in Sources */ = {isa = PBXBuildFile; fileRef = 4BB4160316815F9100824238 /* ElementAtPointInWebFrame.mm */; };
- 4BFDFFA71314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFDFFA61314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp */; };
- 4BFDFFA9131477770061F24B /* HitTestResultNodeHandle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4BFDFFA8131477770061F24B /* HitTestResultNodeHandle.cpp */; };
- 51393E201523944A005F39C5 /* DOMWindowExtensionBasic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51393E1E1523944A005F39C5 /* DOMWindowExtensionBasic.cpp */; };
- 51393E221523952D005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51393E1D1523944A005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp */; };
- 5142B2711517C88B00C32B19 /* ContextMenuCanCopyURL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5142B2701517C88B00C32B19 /* ContextMenuCanCopyURL.mm */; };
- 5142B2731517C8C800C32B19 /* ContextMenuCanCopyURL.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 5142B2721517C89100C32B19 /* ContextMenuCanCopyURL.html */; };
- 517E7DFC15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = 517E7DFB15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm */; };
- 517E7E04151119C100D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */; };
- 51E93017156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51E93016156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp */; };
- 51FBBB4D1513D4E900822738 /* WebViewCanPasteURL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 51FBBB4C1513D4E900822738 /* WebViewCanPasteURL.mm */; };
- 51FCF79A1534AC6D00104491 /* ShouldGoToBackForwardListItem.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FCF7981534AC6D00104491 /* ShouldGoToBackForwardListItem.cpp */; };
- 51FCF7A11534B2A000104491 /* ShouldGoToBackForwardListItem_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 51FCF7971534AC6D00104491 /* ShouldGoToBackForwardListItem_Bundle.cpp */; };
- 520BCF4C141EB09E00937EA8 /* WebArchive_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 520BCF4A141EB09E00937EA8 /* WebArchive_Bundle.cpp */; };
- 520BCF4D141EB09E00937EA8 /* WebArchive.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 520BCF4B141EB09E00937EA8 /* WebArchive.cpp */; };
- 52B8CF9615868CF000281053 /* SetDocumentURI.mm in Sources */ = {isa = PBXBuildFile; fileRef = 52B8CF9515868CF000281053 /* SetDocumentURI.mm */; };
- 52B8CF9815868D9100281053 /* SetDocumentURI.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 52B8CF9415868CF000281053 /* SetDocumentURI.html */; };
- 52CB47411448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52CB47401448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp */; };
- 52E5CE4614D21E9D003B2BD8 /* ParentFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52E5CE4514D21E9D003B2BD8 /* ParentFrame.cpp */; };
- 52E5CE4914D21EAB003B2BD8 /* ParentFrame_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */; };
- 76E182DA1547550100F1FADD /* WillSendSubmitEvent.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76E182D91547550100F1FADD /* WillSendSubmitEvent.cpp */; };
- 76E182DD1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */; };
- 76E182DF154767E600F1FADD /* auto-submitting-form.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 76E182DE15475A8300F1FADD /* auto-submitting-form.html */; };
- 7C8DDAAB1735DEEE00EA5AC0 /* CloseThenTerminate.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7C8DDAA91735DE1D00EA5AC0 /* CloseThenTerminate.cpp */; };
- 7CFBCADF1743234F00B2BFCF /* WillLoad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CFBCADD1743234F00B2BFCF /* WillLoad.cpp */; };
- 7CFBCAE51743238F00B2BFCF /* WillLoad_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7CFBCAE31743238E00B2BFCF /* WillLoad_Bundle.cpp */; };
- 81B50193140F232300D9EB58 /* StringBuilder.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 81B50192140F232300D9EB58 /* StringBuilder.cpp */; };
- 8A2C750E16CED9550024F352 /* ResizeWindowAfterCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A2C750D16CED9550024F352 /* ResizeWindowAfterCrash.cpp */; };
- 8A3AF93B16C9ED2700D248C1 /* ReloadPageAfterCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8A3AF93A16C9ED2700D248C1 /* ReloadPageAfterCrash.cpp */; };
- 8AA28C1A16D2FA7B002FF4DB /* LoadPageOnCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 8AA28C1916D2FA7B002FF4DB /* LoadPageOnCrash.cpp */; };
- 930AD402150698D00067970F /* lots-of-text.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 930AD401150698B30067970F /* lots-of-text.html */; };
- 9318778915EEC57700A9CCE3 /* NewFirstVisuallyNonEmptyLayoutForImages.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93AF4ECA1506F035007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages.cpp */; };
- 9361002914DC95A70061379D /* lots-of-iframes.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9361002814DC957B0061379D /* lots-of-iframes.html */; };
- 939BA91714103412001A01BD /* DeviceScaleFactorOnBack.mm in Sources */ = {isa = PBXBuildFile; fileRef = 939BA91614103412001A01BD /* DeviceScaleFactorOnBack.mm */; };
- 93ABA80916DDAB91002DB2FA /* StringHasher.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93ABA80816DDAB91002DB2FA /* StringHasher.cpp */; };
- 93AF4ECE1506F064007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93AF4ECD1506F064007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp */; };
- 93AF4ED01506F123007FD57E /* lots-of-images.html in Resources */ = {isa = PBXBuildFile; fileRef = 93AF4ECF1506F123007FD57E /* lots-of-images.html */; };
- 93AF4ED11506F130007FD57E /* lots-of-images.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 93AF4ECF1506F123007FD57E /* lots-of-images.html */; };
- 93F1DB3114DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB3014DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp */; };
- 93F1DB3414DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB3314DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp */; };
- 93F1DB5514DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */; };
- 93F1DB5714DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */; };
- 93F7E86C14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */; };
- 93F7E86F14DC8E5C00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */; };
- 9B26FC6C159D061000CC3765 /* HTMLFormCollectionNamedItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B26FC6B159D061000CC3765 /* HTMLFormCollectionNamedItem.mm */; };
- 9B26FCCA159D16DE00CC3765 /* HTMLFormCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B26FCB4159D15E700CC3765 /* HTMLFormCollectionNamedItem.html */; };
- 9B4F8FA4159D52B1002D9F94 /* HTMLCollectionNamedItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B4F8FA3159D52B1002D9F94 /* HTMLCollectionNamedItem.mm */; };
- 9B4F8FA7159D52DD002D9F94 /* HTMLCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */; };
- A51B650916ADF9B1007AA5D9 /* PageVisibilityState.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A51B650816ADF9B1007AA5D9 /* PageVisibilityState.cpp */; };
- A57A34F016AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm in Sources */ = {isa = PBXBuildFile; fileRef = A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */; };
- A57A34F216AF6B2B00C2501F /* PageVisibilityStateWithWindowChanges.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = A57A34F116AF69E200C2501F /* PageVisibilityStateWithWindowChanges.html */; };
- A5E2027315B2181900C13E14 /* WindowlessWebViewWithMedia.mm in Sources */ = {isa = PBXBuildFile; fileRef = A5E2027215B2181900C13E14 /* WindowlessWebViewWithMedia.mm */; };
- A5E2027515B21F6E00C13E14 /* WindowlessWebViewWithMedia.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = A5E2027015B2180600C13E14 /* WindowlessWebViewWithMedia.html */; };
- A7A966DB140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */; };
- B4039F9D15E6D8B3007255D6 /* MathExtras.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B4039F9C15E6D8B3007255D6 /* MathExtras.cpp */; };
- B55AD1D2179F336C00AC1494 /* PreventImageLoadWithAutoResizing.mm in Sources */ = {isa = PBXBuildFile; fileRef = B55AD1D1179F336600AC1494 /* PreventImageLoadWithAutoResizing.mm */; };
- B55AD1D5179F3B3000AC1494 /* PreventImageLoadWithAutoResizing_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = B55AD1D3179F3ABF00AC1494 /* PreventImageLoadWithAutoResizing_Bundle.cpp */; };
- B55F11A01516834F00915916 /* AttributedString.mm in Sources */ = {isa = PBXBuildFile; fileRef = B55F119F1516834F00915916 /* AttributedString.mm */; };
- B55F11B71517D03300915916 /* attributedStringCustomFont.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = B55F11B01517A2C400915916 /* attributedStringCustomFont.html */; };
- B55F11BE15191A0600915916 /* Ahem.ttf in Copy Resources */ = {isa = PBXBuildFile; fileRef = B55F11B9151916E600915916 /* Ahem.ttf */; };
- BC029B181486AD6400817DA9 /* RetainPtr.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC029B161486AD6400817DA9 /* RetainPtr.cpp */; };
- BC029B1C1486B25900817DA9 /* RetainPtr.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC029B1B1486B25900817DA9 /* RetainPtr.mm */; };
- BC131885117114B600B69727 /* PlatformUtilitiesMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */; };
- BC131AA9117131FC00B69727 /* TestsController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC131AA8117131FC00B69727 /* TestsController.cpp */; };
- BC22D31514DC689800FFB1DD /* UserMessage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22D31314DC689800FFB1DD /* UserMessage.cpp */; };
- BC22D31914DC68B900FFB1DD /* UserMessage_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC22D31714DC68B800FFB1DD /* UserMessage_Bundle.cpp */; };
- BC246D8E132F115A00B56D7C /* AboutBlankLoad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC246D8C132F115A00B56D7C /* AboutBlankLoad.cpp */; };
- BC246D9A132F1FE100B56D7C /* CanHandleRequest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC246D98132F1FE100B56D7C /* CanHandleRequest.cpp */; };
- BC246D9C132F1FF000B56D7C /* CanHandleRequest_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC246D97132F1FE100B56D7C /* CanHandleRequest_Bundle.cpp */; };
- BC2D004912A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC2D004812A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp */; };
- BC2D006412AA04CE00E732A3 /* file-with-anchor.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = BC2D004A12A9FEB300E732A3 /* file-with-anchor.html */; };
- BC3C4C7214575B6A0025FB62 /* WKBrowsingContextLoadDelegateTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC3C4C7014575B6A0025FB62 /* WKBrowsingContextLoadDelegateTest.mm */; };
- BC3C4C7F14587AA60025FB62 /* WKBrowsingContextGroupTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC3C4C7D14587AA60025FB62 /* WKBrowsingContextGroupTest.mm */; };
- BC55F5F914AD78EE00484BE1 /* Vector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC55F5F814AD78EE00484BE1 /* Vector.cpp */; };
- BC575A90126E74D3006F0F12 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCB9E9F011235BDE00A137E0 /* Cocoa.framework */; };
- BC575A91126E74D3006F0F12 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCA61DB411700EFD00460D1E /* WebKit2.framework */; };
- BC575A92126E74D3006F0F12 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC90964D1255620C00083756 /* JavaScriptCore.framework */; };
- BC575A97126E74F1006F0F12 /* InjectedBundleMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575946126E7351006F0F12 /* InjectedBundleMain.cpp */; };
- BC575AA2126E7660006F0F12 /* InjectedBundleController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575AA0126E7657006F0F12 /* InjectedBundleController.cpp */; };
- BC575AAD126E83B9006F0F12 /* InjectedBundleBasic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575AAC126E83B9006F0F12 /* InjectedBundleBasic.cpp */; };
- BC575AB0126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575AAF126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp */; };
- BC575BC0126F5752006F0F12 /* PlatformUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575BBF126F5752006F0F12 /* PlatformUtilities.cpp */; };
- BC575BD9126F58E2006F0F12 /* PlatformUtilities.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC575BBF126F5752006F0F12 /* PlatformUtilities.cpp */; };
- BC575BE0126F590D006F0F12 /* PlatformUtilitiesMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */; };
- BC7B61AA129A038700D174A4 /* WKPreferences.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC7B619A1299FE9E00D174A4 /* WKPreferences.cpp */; };
- BC901E241492ADCE0074A667 /* WKConnection.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC901E221492ADCE0074A667 /* WKConnection.cpp */; };
- BC901E331492AF390074A667 /* WKConnection_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC901E311492AF390074A667 /* WKConnection_Bundle.cpp */; };
- BC90955D125548AA00083756 /* PlatformWebViewMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC90955C125548AA00083756 /* PlatformWebViewMac.mm */; };
- BC90964C125561BF00083756 /* VectorBasic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC90964B125561BF00083756 /* VectorBasic.cpp */; };
- BC90977A125571AB00083756 /* PageLoadBasic.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC909779125571AB00083756 /* PageLoadBasic.cpp */; };
- BC909784125571CF00083756 /* simple.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = BC909778125571AB00083756 /* simple.html */; };
- BC90995E12567BC100083756 /* WKString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC90995D12567BC100083756 /* WKString.cpp */; };
- BC9099941256ACF100083756 /* WKStringJSString.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9099931256ACF100083756 /* WKStringJSString.cpp */; };
- BCAA485614A0444C0088FAC4 /* simple-tall.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = BCAA485514A021640088FAC4 /* simple-tall.html */; };
- BCAA485814A044D40088FAC4 /* EditorCommands.mm in Sources */ = {isa = PBXBuildFile; fileRef = BCAA485714A044D40088FAC4 /* EditorCommands.mm */; };
- BCB68040126FBFE100642A61 /* DocumentStartUserScriptAlertCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB6803F126FBFE100642A61 /* DocumentStartUserScriptAlertCrash.cpp */; };
- BCB68042126FBFF100642A61 /* DocumentStartUserScriptAlertCrash_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCB68041126FBFF100642A61 /* DocumentStartUserScriptAlertCrash_Bundle.cpp */; };
- BCBD3710125AA2EB00D2C29F /* FrameMIMETypeHTML.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBD370F125AA2EB00D2C29F /* FrameMIMETypeHTML.cpp */; };
- BCBD3737125ABBEB00D2C29F /* icon.png in Copy Resources */ = {isa = PBXBuildFile; fileRef = BCBD372E125ABBE600D2C29F /* icon.png */; };
- BCBD3761125ABCFE00D2C29F /* FrameMIMETypePNG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCBD3760125ABCFE00D2C29F /* FrameMIMETypePNG.cpp */; };
- BCC8B95B12611F4700DE46A4 /* FailedLoad.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC8B95A12611F4700DE46A4 /* FailedLoad.cpp */; };
- C01363C813C3997300EF3964 /* StringOperators.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C01363C713C3997300EF3964 /* StringOperators.cpp */; };
- C01A23F21266156700C9ED55 /* spacebar-scrolling.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C02B7882126615410026BF0F /* spacebar-scrolling.html */; };
- C02B77F2126612140026BF0F /* SpacebarScrolling.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C02B77F1126612140026BF0F /* SpacebarScrolling.cpp */; };
- C045F9451385C2EA00C0F3CD /* DownloadDecideDestinationCrash.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C045F9441385C2E900C0F3CD /* DownloadDecideDestinationCrash.cpp */; };
- C07E6CAF13FD67650038B22B /* DynamicDeviceScaleFactor.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07E6CAE13FD67650038B22B /* DynamicDeviceScaleFactor.mm */; };
- C07E6CB213FD73930038B22B /* devicePixelRatio.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C07E6CB113FD738A0038B22B /* devicePixelRatio.html */; };
- C081224213FC172400DC39AE /* JavaScriptTestMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C081224013FC172400DC39AE /* JavaScriptTestMac.mm */; };
- C081224513FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.m in Sources */ = {isa = PBXBuildFile; fileRef = C081224413FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.m */; };
- C08587BF13FE956C001EF4E5 /* WebKitAgnosticTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = C08587BD13FE956C001EF4E5 /* WebKitAgnosticTest.mm */; };
- C08587FC13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = C08587FB13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm */; };
- C085880013FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm in Sources */ = {isa = PBXBuildFile; fileRef = C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */; };
- C0991C51143C7D68007998F2 /* RetainPtrHashing.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0991C50143C7D68007998F2 /* RetainPtrHashing.cpp */; };
- C0ADBE7C12FCA4D000D2C129 /* JavaScriptTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0ADBE7A12FCA4D000D2C129 /* JavaScriptTest.cpp */; };
- C0ADBE8312FCA6AA00D2C129 /* RestoreSessionStateContainingFormData.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0ADBE8212FCA6AA00D2C129 /* RestoreSessionStateContainingFormData.cpp */; };
- C0ADBE9612FCA79B00D2C129 /* simple-form.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C0ADBE8412FCA6B600D2C129 /* simple-form.html */; };
- C0BD669D131D3CF700E18F2A /* ResponsivenessTimerDoesntFireEarly.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0BD669C131D3CF700E18F2A /* ResponsivenessTimerDoesntFireEarly.cpp */; };
- C0BD669F131D3CFF00E18F2A /* ResponsivenessTimerDoesntFireEarly_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C0BD669E131D3CFF00E18F2A /* ResponsivenessTimerDoesntFireEarly_Bundle.cpp */; };
- C0C5D3BE14598B6F00A802A6 /* GetBackingScaleFactor.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0C5D3BC14598B6F00A802A6 /* GetBackingScaleFactor.mm */; };
- C0C5D3C61459912900A802A6 /* GetBackingScaleFactor_Bundle.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0C5D3BD14598B6F00A802A6 /* GetBackingScaleFactor_Bundle.mm */; };
- C2CF975A16CEC7140054E99D /* JSContextBackForwardCache2.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C2CF975916CEC69E0054E99D /* JSContextBackForwardCache2.html */; };
- C2CF975B16CEC71B0054E99D /* JSContextBackForwardCache1.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C2CF975816CEC69E0054E99D /* JSContextBackForwardCache1.html */; };
- C2EB2DD316CAC7AC009B52EE /* WebViewDidCreateJavaScriptContext.mm in Sources */ = {isa = PBXBuildFile; fileRef = C2EB2DD116CAC7AC009B52EE /* WebViewDidCreateJavaScriptContext.mm */; };
- C507E8A714C6545B005D6B3B /* InspectorBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = C507E8A614C6545B005D6B3B /* InspectorBar.mm */; };
- C5101C4F176B8D9200EE9B15 /* findRanges.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C5101C4E176B8BB900EE9B15 /* findRanges.html */; };
- C51AFB99169F49FF009CCF66 /* FindMatches.mm in Sources */ = {isa = PBXBuildFile; fileRef = C51AFB98169F49FF009CCF66 /* FindMatches.mm */; };
- C540F776152E4DA000A40C8C /* SimplifyMarkup.mm in Sources */ = {isa = PBXBuildFile; fileRef = C540F775152E4DA000A40C8C /* SimplifyMarkup.mm */; };
- C540F784152E5A9A00A40C8C /* verboseMarkup.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C540F783152E5A7800A40C8C /* verboseMarkup.html */; };
- C54237F016B8955800E638FC /* PasteboardNotifications.mm in Sources */ = {isa = PBXBuildFile; fileRef = C54237EE16B8955800E638FC /* PasteboardNotifications.mm */; };
- C54237F116B8957D00E638FC /* PasteboardNotifications_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C54237ED16B8955800E638FC /* PasteboardNotifications_Bundle.cpp */; };
- C5E1AFFE16B221F1006CC1F2 /* execCopy.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = C5E1AFFD16B22179006CC1F2 /* execCopy.html */; };
- CD5393C81757BA9700C07123 /* MD5.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5393C71757BA9700C07123 /* MD5.cpp */; };
- CD5393CA1757BAC400C07123 /* SHA1.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5393C91757BAC400C07123 /* SHA1.cpp */; };
- CD5497B415857F0C00B5BC30 /* MediaTime.cpp in Sources */ = {isa = PBXBuildFile; fileRef = CD5497B315857F0C00B5BC30 /* MediaTime.cpp */; };
- E1220DA0155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm in Sources */ = {isa = PBXBuildFile; fileRef = E1220D9F155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm */; };
- E1220DCA155B28AA0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = E1220DC9155B287D0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html */; };
- E194E1BB177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm in Sources */ = {isa = PBXBuildFile; fileRef = E194E1BA177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm */; };
- E194E1BD177E53C7009C4D4E /* StopLoadingFromDidReceiveResponse.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = E194E1BC177E534A009C4D4E /* StopLoadingFromDidReceiveResponse.html */; };
- E490296814E2E3A4002BEDD1 /* TypingStyleCrash.mm in Sources */ = {isa = PBXBuildFile; fileRef = E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */; };
- E4A757D4178AF1B100B5D7A4 /* Deque.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E4A757D3178AEA5B00B5D7A4 /* Deque.cpp */; };
- F660AA0D15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F660AA0C15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp */; };
- F660AA1115A5F631003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F660AA0F15A5F624003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp */; };
- F660AA1315A619C9003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F660AA1215A619C8003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp */; };
- F660AA1515A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F660AA1415A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp */; };
- F6B7BE9417469209008A3445 /* DidAssociateFormControls.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6B7BE93174691EF008A3445 /* DidAssociateFormControls.cpp */; };
- F6B7BE9517469212008A3445 /* DidAssociateFormControls_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6B7BE92174691EF008A3445 /* DidAssociateFormControls_Bundle.cpp */; };
- F6B7BE9717469B96008A3445 /* associate-form-controls.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F6B7BE9617469B7E008A3445 /* associate-form-controls.html */; };
- F6F3F29113342FEB00A6BF19 /* CookieManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6F3F29013342FEB00A6BF19 /* CookieManager.cpp */; };
- F6F49C6915545C8E0007F39D /* DOMWindowExtensionNoCache.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6F49C6715545C8D0007F39D /* DOMWindowExtensionNoCache.cpp */; };
- F6F49C6B15545CA70007F39D /* DOMWindowExtensionNoCache_Bundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6F49C6615545C8D0007F39D /* DOMWindowExtensionNoCache_Bundle.cpp */; };
- F6FDDDD314241AD4004F1729 /* PrivateBrowsingPushStateNoHistoryCallback.cpp in Sources */ = {isa = PBXBuildFile; fileRef = F6FDDDD214241AD4004F1729 /* PrivateBrowsingPushStateNoHistoryCallback.cpp */; };
- F6FDDDD614241C6F004F1729 /* push-state.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = F6FDDDD514241C48004F1729 /* push-state.html */; };
- FE217ECD1640A54A0052988B /* VMInspector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = FE217ECC1640A54A0052988B /* VMInspector.cpp */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- BC575A95126E74E7006F0F12 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = BC57597F126E74AF006F0F12;
- remoteInfo = InjectedBundle;
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXCopyFilesBuildPhase section */
- 8DD76F9E0486AA7600D96B5E /* CopyFiles */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 8;
- dstPath = /usr/share/man/man1/;
- dstSubfolderSpec = 0;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 1;
- };
- BCB9F4FB112384C000A137E0 /* Copy Resources */ = {
- isa = PBXCopyFilesBuildPhase;
- buildActionMask = 2147483647;
- dstPath = TestWebKitAPI.resources;
- dstSubfolderSpec = 7;
- files = (
- 290A9BB91735F63800D71BBC /* OpenNewWindow.html in Copy Resources */,
- 290F4275172A221C00939FF0 /* custom-protocol-sync-xhr.html in Copy Resources */,
- C2CF975B16CEC71B0054E99D /* JSContextBackForwardCache1.html in Copy Resources */,
- C2CF975A16CEC7140054E99D /* JSContextBackForwardCache2.html in Copy Resources */,
- 1A9E52C913E65EF4006917F5 /* 18-characters.html in Copy Resources */,
- F6B7BE9717469B96008A3445 /* associate-form-controls.html in Copy Resources */,
- 379028B914FAC24C007E6B43 /* acceptsFirstMouse.html in Copy Resources */,
- B55F11BE15191A0600915916 /* Ahem.ttf in Copy Resources */,
- B55F11B71517D03300915916 /* attributedStringCustomFont.html in Copy Resources */,
- 76E182DF154767E600F1FADD /* auto-submitting-form.html in Copy Resources */,
- 26DF5A6315A2A27E003689C2 /* CancelLoadFromResourceLoadDelegate.html in Copy Resources */,
- 5142B2731517C8C800C32B19 /* ContextMenuCanCopyURL.html in Copy Resources */,
- C07E6CB213FD73930038B22B /* devicePixelRatio.html in Copy Resources */,
- 37E1064C1697681800B78BD0 /* DOMHTMLTableCellElementCellAbove.html in Copy Resources */,
- 37DC6791140D7D7600ABCCDB /* DOMRangeOfString.html in Copy Resources */,
- C5E1AFFE16B221F1006CC1F2 /* execCopy.html in Copy Resources */,
- BC2D006412AA04CE00E732A3 /* file-with-anchor.html in Copy Resources */,
- C5101C4F176B8D9200EE9B15 /* findRanges.html in Copy Resources */,
- 1A02C870125D4CFD00E3F4BD /* find.html in Copy Resources */,
- 9B4F8FA7159D52DD002D9F94 /* HTMLCollectionNamedItem.html in Copy Resources */,
- 9B26FCCA159D16DE00CC3765 /* HTMLFormCollectionNamedItem.html in Copy Resources */,
- BCBD3737125ABBEB00D2C29F /* icon.png in Copy Resources */,
- 378E64791632707400B6C676 /* link-with-title.html in Copy Resources */,
- 9361002914DC95A70061379D /* lots-of-iframes.html in Copy Resources */,
- 93AF4ED11506F130007FD57E /* lots-of-images.html in Copy Resources */,
- 930AD402150698D00067970F /* lots-of-text.html in Copy Resources */,
- 2DD7D3AF178227B30026E1E3 /* lots-of-text-vertical-lr.html in Copy Resources */,
- E1220DCA155B28AA0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html in Copy Resources */,
- 517E7E04151119C100D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html in Copy Resources */,
- 33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */,
- A57A34F216AF6B2B00C2501F /* PageVisibilityStateWithWindowChanges.html in Copy Resources */,
- F6FDDDD614241C6F004F1729 /* push-state.html in Copy Resources */,
- 52B8CF9815868D9100281053 /* SetDocumentURI.html in Copy Resources */,
- 1ADBEFE3130C6AA100D61D19 /* simple-accelerated-compositing.html in Copy Resources */,
- C0ADBE9612FCA79B00D2C129 /* simple-form.html in Copy Resources */,
- 33DC8912141955FE00747EF7 /* simple-iframe.html in Copy Resources */,
- BCAA485614A0444C0088FAC4 /* simple-tall.html in Copy Resources */,
- BC909784125571CF00083756 /* simple.html in Copy Resources */,
- C01A23F21266156700C9ED55 /* spacebar-scrolling.html in Copy Resources */,
- E194E1BD177E53C7009C4D4E /* StopLoadingFromDidReceiveResponse.html in Copy Resources */,
- C540F784152E5A9A00A40C8C /* verboseMarkup.html in Copy Resources */,
- A5E2027515B21F6E00C13E14 /* WindowlessWebViewWithMedia.html in Copy Resources */,
- );
- name = "Copy Resources";
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXCopyFilesBuildPhase section */
-
-/* Begin PBXFileReference section */
- 00BC16851680FE810065F1E5 /* PublicSuffix.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PublicSuffix.mm; sourceTree = "<group>"; };
- 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = BackForwardList.mm; sourceTree = "<group>"; };
- 0BCD833414857CE400EA2003 /* HashMap.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HashMap.cpp; path = WTF/HashMap.cpp; sourceTree = "<group>"; };
- 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TemporaryChange.cpp; path = WTF/TemporaryChange.cpp; sourceTree = "<group>"; };
- 0F17BBD415AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebCoreStatisticsWithNoWebProcess.cpp; sourceTree = "<group>"; };
- 0FC6C4CB141027E0005B7F0C /* RedBlackTree.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = RedBlackTree.cpp; path = WTF/RedBlackTree.cpp; sourceTree = "<group>"; };
- 0FC6C4CE141034AD005B7F0C /* MetaAllocator.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MetaAllocator.cpp; path = WTF/MetaAllocator.cpp; sourceTree = "<group>"; };
- 14464012167A8305000BD218 /* LayoutUnit.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LayoutUnit.cpp; sourceTree = "<group>"; };
- 14F3B11215E45EAB00210069 /* SaturatedArithmeticOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SaturatedArithmeticOperations.cpp; path = WTF/SaturatedArithmeticOperations.cpp; sourceTree = "<group>"; };
- 1A02C84B125D4A5E00E3F4BD /* find.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = find.html; sourceTree = "<group>"; };
- 1A02C84E125D4A8400E3F4BD /* Find.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Find.cpp; sourceTree = "<group>"; };
- 1A5FEFDC1270E2A3000E2921 /* EvaluateJavaScript.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EvaluateJavaScript.cpp; sourceTree = "<group>"; };
- 1A7BFC0A171A0BDB00BC5F64 /* WillSendSubmitEvent.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WillSendSubmitEvent.mm; sourceTree = "<group>"; };
- 1AA9E55714980A9900001A8A /* Functional.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Functional.cpp; path = WTF/Functional.cpp; sourceTree = "<group>"; };
- 1ADBEFAD130C689C00D61D19 /* ForceRepaint.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ForceRepaint.cpp; sourceTree = "<group>"; };
- 1ADBEFBC130C6A0100D61D19 /* simple-accelerated-compositing.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "simple-accelerated-compositing.html"; sourceTree = "<group>"; };
- 1AE72F47173EB214006362F0 /* TerminateTwice.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TerminateTwice.cpp; sourceTree = "<group>"; };
- 1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundleControllerMac.mm; sourceTree = "<group>"; };
- 1AEF994817A09F5300998EF0 /* GetPIDAfterAbortedProcessLaunch.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetPIDAfterAbortedProcessLaunch.cpp; sourceTree = "<group>"; };
- 261516D515B0E60500A2C201 /* SetAndUpdateCacheModel.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SetAndUpdateCacheModel.mm; sourceTree = "<group>"; };
- 26300B1716755CD90066886D /* ListHashSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = ListHashSet.cpp; path = WTF/ListHashSet.cpp; sourceTree = "<group>"; };
- 265AF54F15D1E48A00B0CB4A /* WTFString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WTFString.cpp; path = WTF/WTFString.cpp; sourceTree = "<group>"; };
- 266FAFD215E5775200F61D5B /* IntegerToStringConversion.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = IntegerToStringConversion.cpp; path = WTF/IntegerToStringConversion.cpp; sourceTree = "<group>"; };
- 26A2C72E15E2E73C005B1A14 /* CString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CString.cpp; path = WTF/CString.cpp; sourceTree = "<group>"; };
- 26B2DFF815BDE599004F691D /* HashSet.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HashSet.cpp; path = WTF/HashSet.cpp; sourceTree = "<group>"; };
- 26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CancelLoadFromResourceLoadDelegate.mm; sourceTree = "<group>"; };
- 26DF5A6115A2A22B003689C2 /* CancelLoadFromResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = CancelLoadFromResourceLoadDelegate.html; sourceTree = "<group>"; };
- 26F1B44215CA434F00D1E4BF /* AtomicString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AtomicString.cpp; path = WTF/AtomicString.cpp; sourceTree = "<group>"; };
- 26F1B44315CA434F00D1E4BF /* StringImpl.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringImpl.cpp; path = WTF/StringImpl.cpp; sourceTree = "<group>"; };
- 290A9BB51735DE8A00D71BBC /* CloseNewWindowInNavigationPolicyDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CloseNewWindowInNavigationPolicyDelegate.mm; sourceTree = "<group>"; };
- 290A9BB81735F42300D71BBC /* OpenNewWindow.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = OpenNewWindow.html; sourceTree = "<group>"; };
- 290F4274172A1FDE00939FF0 /* custom-protocol-sync-xhr.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "custom-protocol-sync-xhr.html"; sourceTree = "<group>"; };
- 290F4276172A232C00939FF0 /* CustomProtocolsSyncXHRTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = CustomProtocolsSyncXHRTest.mm; sourceTree = "<group>"; };
- 290F4279172A23A500939FF0 /* TestProtocol.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestProtocol.mm; sourceTree = "<group>"; };
- 290F427A172A23A500939FF0 /* TestProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestProtocol.h; sourceTree = "<group>"; };
- 291861FD17BD4DC700D4E41E /* StopLoadingFromDidFinishLoading.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StopLoadingFromDidFinishLoading.mm; sourceTree = "<group>"; };
- 2943BE84161DFEB800999E3D /* UserContentTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = UserContentTest.mm; path = WebKit2ObjC/UserContentTest.mm; sourceTree = "<group>"; };
- 297234B2173AD04800983601 /* CustomProtocolsInvalidScheme.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CustomProtocolsInvalidScheme.mm; path = WebKit2ObjC/CustomProtocolsInvalidScheme.mm; sourceTree = "<group>"; };
- 297234B5173AFAC700983601 /* CustomProtocolsInvalidScheme_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CustomProtocolsInvalidScheme_Bundle.cpp; path = WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp; sourceTree = "<group>"; };
- 29AB8A9F164C735800D49BEC /* CustomProtocolsTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = CustomProtocolsTest.mm; path = WebKit2ObjC/CustomProtocolsTest.mm; sourceTree = "<group>"; };
- 29AB8AA2164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestBrowsingContextLoadDelegate.mm; sourceTree = "<group>"; };
- 29AB8AA3164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestBrowsingContextLoadDelegate.h; sourceTree = "<group>"; };
- 2D640B5417875DFF00BFAF99 /* ScrollPinningBehaviors.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScrollPinningBehaviors.cpp; sourceTree = "<group>"; };
- 2DD7D3A9178205D00026E1E3 /* ResizeReversePaginatedWebView.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResizeReversePaginatedWebView.cpp; sourceTree = "<group>"; };
- 2DD7D3AE178227AC0026E1E3 /* lots-of-text-vertical-lr.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "lots-of-text-vertical-lr.html"; sourceTree = "<group>"; };
- 2E7765CC16C4D80A00BA2BB1 /* mainIOS.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = mainIOS.mm; sourceTree = "<group>"; };
- 2E7765CE16C4D81100BA2BB1 /* mainMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = mainMac.mm; sourceTree = "<group>"; };
- 333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PreventEmptyUserAgent.cpp; sourceTree = "<group>"; };
- 33BE5AF4137B5A6C00705813 /* MouseMoveAfterCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseMoveAfterCrash.cpp; sourceTree = "<group>"; };
- 33BE5AF8137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MouseMoveAfterCrash_Bundle.cpp; sourceTree = "<group>"; };
- 33DC890E1419539300747EF7 /* simple-iframe.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "simple-iframe.html"; sourceTree = "<group>"; };
- 33DC8910141953A300747EF7 /* LoadCanceledNoServerRedirectCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadCanceledNoServerRedirectCallback.cpp; sourceTree = "<group>"; };
- 33DC89131419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadCanceledNoServerRedirectCallback_Bundle.cpp; sourceTree = "<group>"; };
- 33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "mouse-move-listener.html"; sourceTree = "<group>"; };
- 37200B9113A16230007A4FAD /* VectorReverse.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VectorReverse.cpp; path = WTF/VectorReverse.cpp; sourceTree = "<group>"; };
- 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = RenderedImageFromDOMRange.mm; sourceTree = "<group>"; };
- 3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMNodeFromJSObject.mm; sourceTree = "<group>"; };
- 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceScaleFactorInDashboardRegions.mm; sourceTree = "<group>"; };
- 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleFrameHitTest.cpp; sourceTree = "<group>"; };
- 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleFrameHitTest_Bundle.cpp; sourceTree = "<group>"; };
- 378E647816326FDF00B6C676 /* link-with-title.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "link-with-title.html"; sourceTree = "<group>"; };
- 379028B514FABD92007E6B43 /* AcceptsFirstMouse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AcceptsFirstMouse.mm; sourceTree = "<group>"; };
- 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = acceptsFirstMouse.html; sourceTree = "<group>"; };
- 3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StringByEvaluatingJavaScriptFromString.mm; sourceTree = "<group>"; };
- 37A6895D148A9B50005100FA /* SubresourceErrorCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SubresourceErrorCrash.mm; sourceTree = "<group>"; };
- 37DC678B140D7C5000ABCCDB /* DOMRangeOfString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMRangeOfString.mm; sourceTree = "<group>"; };
- 37DC678F140D7D3A00ABCCDB /* DOMRangeOfString.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = DOMRangeOfString.html; sourceTree = "<group>"; };
- 37E1064A1697676400B78BD0 /* DOMHTMLTableCellCellAbove.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DOMHTMLTableCellCellAbove.mm; sourceTree = "<group>"; };
- 37E1064B169767F700B78BD0 /* DOMHTMLTableCellElementCellAbove.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = DOMHTMLTableCellElementCellAbove.html; sourceTree = "<group>"; };
- 37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewDidRemoveFrameFromHierarchy.mm; sourceTree = "<group>"; };
- 440A1D3814A0103A008A66F2 /* KURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = KURL.cpp; sourceTree = "<group>"; };
- 44A622C114A0E2B60048515B /* WTFStringUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WTFStringUtilities.h; sourceTree = "<group>"; };
- 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JSWrapperForNodeInWebFrame.mm; sourceTree = "<group>"; };
- 4BB4160316815F9100824238 /* ElementAtPointInWebFrame.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ElementAtPointInWebFrame.mm; sourceTree = "<group>"; };
- 4BFDFFA61314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestResultNodeHandle_Bundle.cpp; sourceTree = "<group>"; };
- 4BFDFFA8131477770061F24B /* HitTestResultNodeHandle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = HitTestResultNodeHandle.cpp; sourceTree = "<group>"; };
- 51393E1D1523944A005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtensionBasic_Bundle.cpp; sourceTree = "<group>"; };
- 51393E1E1523944A005F39C5 /* DOMWindowExtensionBasic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtensionBasic.cpp; sourceTree = "<group>"; };
- 5142B2701517C88B00C32B19 /* ContextMenuCanCopyURL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ContextMenuCanCopyURL.mm; sourceTree = "<group>"; };
- 5142B2721517C89100C32B19 /* ContextMenuCanCopyURL.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = ContextMenuCanCopyURL.html; sourceTree = "<group>"; };
- 517E7DFB15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCachePruneWithinResourceLoadDelegate.mm; sourceTree = "<group>"; };
- 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = MemoryCachePruneWithinResourceLoadDelegate.html; sourceTree = "<group>"; };
- 51E93016156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPageGetScaleFactorNotZero.cpp; sourceTree = "<group>"; };
- 51FBBB4C1513D4E900822738 /* WebViewCanPasteURL.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewCanPasteURL.mm; sourceTree = "<group>"; };
- 51FCF7971534AC6D00104491 /* ShouldGoToBackForwardListItem_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShouldGoToBackForwardListItem_Bundle.cpp; sourceTree = "<group>"; };
- 51FCF7981534AC6D00104491 /* ShouldGoToBackForwardListItem.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ShouldGoToBackForwardListItem.cpp; sourceTree = "<group>"; };
- 520BCF4A141EB09E00937EA8 /* WebArchive_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebArchive_Bundle.cpp; sourceTree = "<group>"; };
- 520BCF4B141EB09E00937EA8 /* WebArchive.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebArchive.cpp; sourceTree = "<group>"; };
- 52B8CF9415868CF000281053 /* SetDocumentURI.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = SetDocumentURI.html; sourceTree = "<group>"; };
- 52B8CF9515868CF000281053 /* SetDocumentURI.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SetDocumentURI.mm; sourceTree = "<group>"; };
- 52CB47401448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadAlternateHTMLStringWithNonDirectoryURL.cpp; sourceTree = "<group>"; };
- 52E5CE4514D21E9D003B2BD8 /* ParentFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentFrame.cpp; sourceTree = "<group>"; };
- 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ParentFrame_Bundle.cpp; sourceTree = "<group>"; };
- 76E182D91547550100F1FADD /* WillSendSubmitEvent.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillSendSubmitEvent.cpp; sourceTree = "<group>"; };
- 76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillSendSubmitEvent_Bundle.cpp; sourceTree = "<group>"; };
- 76E182DE15475A8300F1FADD /* auto-submitting-form.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "auto-submitting-form.html"; sourceTree = "<group>"; };
- 7C8DDAA91735DE1D00EA5AC0 /* CloseThenTerminate.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = CloseThenTerminate.cpp; sourceTree = "<group>"; };
- 7CFBCADD1743234F00B2BFCF /* WillLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillLoad.cpp; sourceTree = "<group>"; };
- 7CFBCAE31743238E00B2BFCF /* WillLoad_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WillLoad_Bundle.cpp; sourceTree = "<group>"; };
- 81B50192140F232300D9EB58 /* StringBuilder.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringBuilder.cpp; path = WTF/StringBuilder.cpp; sourceTree = "<group>"; };
- 8A2C750D16CED9550024F352 /* ResizeWindowAfterCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResizeWindowAfterCrash.cpp; sourceTree = "<group>"; };
- 8A3AF93A16C9ED2700D248C1 /* ReloadPageAfterCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ReloadPageAfterCrash.cpp; sourceTree = "<group>"; };
- 8AA28C1916D2FA7B002FF4DB /* LoadPageOnCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = LoadPageOnCrash.cpp; sourceTree = "<group>"; };
- 8DD76FA10486AA7600D96B5E /* TestWebKitAPI */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = TestWebKitAPI; sourceTree = BUILT_PRODUCTS_DIR; };
- 930AD401150698B30067970F /* lots-of-text.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "lots-of-text.html"; sourceTree = "<group>"; };
- 9361002814DC957B0061379D /* lots-of-iframes.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "lots-of-iframes.html"; sourceTree = "<group>"; };
- 939BA91614103412001A01BD /* DeviceScaleFactorOnBack.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeviceScaleFactorOnBack.mm; sourceTree = "<group>"; };
- 93ABA80816DDAB91002DB2FA /* StringHasher.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringHasher.cpp; path = WTF/StringHasher.cpp; sourceTree = "<group>"; };
- 93AF4ECA1506F035007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutForImages.cpp; sourceTree = "<group>"; };
- 93AF4ECD1506F064007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp; sourceTree = "<group>"; };
- 93AF4ECF1506F123007FD57E /* lots-of-images.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "lots-of-images.html"; sourceTree = "<group>"; };
- 93F1DB3014DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayout.cpp; sourceTree = "<group>"; };
- 93F1DB3314DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayout_Bundle.cpp; sourceTree = "<group>"; };
- 93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFails.cpp; sourceTree = "<group>"; };
- 93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp; sourceTree = "<group>"; };
- 93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFrames.cpp; sourceTree = "<group>"; };
- 93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp; sourceTree = "<group>"; };
- 9B26FC6B159D061000CC3765 /* HTMLFormCollectionNamedItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLFormCollectionNamedItem.mm; sourceTree = "<group>"; };
- 9B26FCB4159D15E700CC3765 /* HTMLFormCollectionNamedItem.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = HTMLFormCollectionNamedItem.html; sourceTree = "<group>"; };
- 9B4F8FA3159D52B1002D9F94 /* HTMLCollectionNamedItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLCollectionNamedItem.mm; sourceTree = "<group>"; };
- 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = HTMLCollectionNamedItem.html; sourceTree = "<group>"; };
- A51B650816ADF9B1007AA5D9 /* PageVisibilityState.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageVisibilityState.cpp; sourceTree = "<group>"; };
- A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PageVisibilityStateWithWindowChanges.mm; sourceTree = "<group>"; };
- A57A34F116AF69E200C2501F /* PageVisibilityStateWithWindowChanges.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = PageVisibilityStateWithWindowChanges.html; sourceTree = "<group>"; };
- A5E2027015B2180600C13E14 /* WindowlessWebViewWithMedia.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = WindowlessWebViewWithMedia.html; sourceTree = "<group>"; };
- A5E2027215B2181900C13E14 /* WindowlessWebViewWithMedia.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WindowlessWebViewWithMedia.mm; sourceTree = "<group>"; };
- A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = CheckedArithmeticOperations.cpp; path = WTF/CheckedArithmeticOperations.cpp; sourceTree = "<group>"; };
- B4039F9C15E6D8B3007255D6 /* MathExtras.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MathExtras.cpp; path = WTF/MathExtras.cpp; sourceTree = "<group>"; };
- B55AD1D1179F336600AC1494 /* PreventImageLoadWithAutoResizing.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; name = PreventImageLoadWithAutoResizing.mm; path = WebKit2ObjC/PreventImageLoadWithAutoResizing.mm; sourceTree = "<group>"; };
- B55AD1D3179F3ABF00AC1494 /* PreventImageLoadWithAutoResizing_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = PreventImageLoadWithAutoResizing_Bundle.cpp; path = WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp; sourceTree = "<group>"; };
- B55F119F1516834F00915916 /* AttributedString.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = AttributedString.mm; sourceTree = "<group>"; };
- B55F11B01517A2C400915916 /* attributedStringCustomFont.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = attributedStringCustomFont.html; sourceTree = "<group>"; };
- B55F11B9151916E600915916 /* Ahem.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; path = Ahem.ttf; sourceTree = "<group>"; };
- BC029B161486AD6400817DA9 /* RetainPtr.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RetainPtr.cpp; sourceTree = "<group>"; };
- BC029B1B1486B25900817DA9 /* RetainPtr.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = RetainPtr.mm; path = WTF/ns/RetainPtr.mm; sourceTree = "<group>"; };
- BC131883117114A800B69727 /* PlatformUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformUtilities.h; sourceTree = "<group>"; };
- BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformUtilitiesMac.mm; sourceTree = "<group>"; };
- BC131A9E1171317C00B69727 /* config.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
- BC131AA8117131FC00B69727 /* TestsController.cpp */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.cpp; fileEncoding = 4; path = TestsController.cpp; sourceTree = "<group>"; };
- BC22D31314DC689800FFB1DD /* UserMessage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMessage.cpp; sourceTree = "<group>"; };
- BC22D31714DC68B800FFB1DD /* UserMessage_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = UserMessage_Bundle.cpp; sourceTree = "<group>"; };
- BC246D8C132F115A00B56D7C /* AboutBlankLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AboutBlankLoad.cpp; sourceTree = "<group>"; };
- BC246D97132F1FE100B56D7C /* CanHandleRequest_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanHandleRequest_Bundle.cpp; sourceTree = "<group>"; };
- BC246D98132F1FE100B56D7C /* CanHandleRequest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CanHandleRequest.cpp; sourceTree = "<group>"; };
- BC2D004812A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageLoadDidChangeLocationWithinPageForFrame.cpp; sourceTree = "<group>"; };
- BC2D004A12A9FEB300E732A3 /* file-with-anchor.html */ = {isa = PBXFileReference; explicitFileType = text.html; fileEncoding = 4; path = "file-with-anchor.html"; sourceTree = "<group>"; };
- BC3C4C7014575B6A0025FB62 /* WKBrowsingContextLoadDelegateTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKBrowsingContextLoadDelegateTest.mm; path = WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm; sourceTree = "<group>"; };
- BC3C4C7D14587AA60025FB62 /* WKBrowsingContextGroupTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WKBrowsingContextGroupTest.mm; path = WebKit2ObjC/WKBrowsingContextGroupTest.mm; sourceTree = "<group>"; };
- BC55F5F814AD78EE00484BE1 /* Vector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Vector.cpp; path = WTF/Vector.cpp; sourceTree = "<group>"; };
- BC575946126E7351006F0F12 /* InjectedBundleMain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleMain.cpp; sourceTree = "<group>"; };
- BC575980126E74AF006F0F12 /* InjectedBundleTestWebKitAPI.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = InjectedBundleTestWebKitAPI.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
- BC575981126E74AF006F0F12 /* InjectedBundle-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "InjectedBundle-Info.plist"; sourceTree = "<group>"; };
- BC575A9E126E75FB006F0F12 /* InjectedBundleTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleTest.h; sourceTree = "<group>"; };
- BC575A9F126E7657006F0F12 /* InjectedBundleController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundleController.h; sourceTree = "<group>"; };
- BC575AA0126E7657006F0F12 /* InjectedBundleController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleController.cpp; sourceTree = "<group>"; };
- BC575AAC126E83B9006F0F12 /* InjectedBundleBasic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleBasic.cpp; sourceTree = "<group>"; };
- BC575AAF126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleBasic_Bundle.cpp; sourceTree = "<group>"; };
- BC575AE2126E88B1006F0F12 /* InjectedBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = InjectedBundle.xcconfig; sourceTree = "<group>"; };
- BC575BBF126F5752006F0F12 /* PlatformUtilities.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PlatformUtilities.cpp; sourceTree = "<group>"; };
- BC7B619A1299FE9E00D174A4 /* WKPreferences.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKPreferences.cpp; sourceTree = "<group>"; };
- BC901E221492ADCE0074A667 /* WKConnection.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKConnection.cpp; sourceTree = "<group>"; };
- BC901E311492AF390074A667 /* WKConnection_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKConnection_Bundle.cpp; sourceTree = "<group>"; };
- BC90951B125533D700083756 /* PlatformWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWebView.h; sourceTree = "<group>"; };
- BC90955C125548AA00083756 /* PlatformWebViewMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformWebViewMac.mm; sourceTree = "<group>"; };
- BC90957E12554CF900083756 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
- BC90957F12554CF900083756 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
- BC90958012554CF900083756 /* TestWebKitAPI.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = TestWebKitAPI.xcconfig; sourceTree = "<group>"; };
- BC90964B125561BF00083756 /* VectorBasic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VectorBasic.cpp; path = WTF/VectorBasic.cpp; sourceTree = "<group>"; };
- BC90964D1255620C00083756 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- BC909778125571AB00083756 /* simple.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = simple.html; sourceTree = "<group>"; };
- BC909779125571AB00083756 /* PageLoadBasic.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PageLoadBasic.cpp; sourceTree = "<group>"; };
- BC90995D12567BC100083756 /* WKString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKString.cpp; sourceTree = "<group>"; };
- BC9099931256ACF100083756 /* WKStringJSString.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WKStringJSString.cpp; sourceTree = "<group>"; };
- BCA61DB411700EFD00460D1E /* WebKit2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- BCAA485514A021640088FAC4 /* simple-tall.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "simple-tall.html"; sourceTree = "<group>"; };
- BCAA485714A044D40088FAC4 /* EditorCommands.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EditorCommands.mm; sourceTree = "<group>"; };
- BCB6803F126FBFE100642A61 /* DocumentStartUserScriptAlertCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentStartUserScriptAlertCrash.cpp; sourceTree = "<group>"; };
- BCB68041126FBFF100642A61 /* DocumentStartUserScriptAlertCrash_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DocumentStartUserScriptAlertCrash_Bundle.cpp; sourceTree = "<group>"; };
- BCB9E7C711234E3A00A137E0 /* TestsController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestsController.h; sourceTree = "<group>"; };
- BCB9E7FA112359A300A137E0 /* Test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Test.h; sourceTree = "<group>"; };
- BCB9E9F011235BDE00A137E0 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
- BCBD370F125AA2EB00D2C29F /* FrameMIMETypeHTML.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameMIMETypeHTML.cpp; sourceTree = "<group>"; };
- BCBD372E125ABBE600D2C29F /* icon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = icon.png; sourceTree = "<group>"; };
- BCBD3760125ABCFE00D2C29F /* FrameMIMETypePNG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FrameMIMETypePNG.cpp; sourceTree = "<group>"; };
- BCC8B95A12611F4700DE46A4 /* FailedLoad.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FailedLoad.cpp; sourceTree = "<group>"; };
- C01363C713C3997300EF3964 /* StringOperators.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = StringOperators.cpp; path = WTF/StringOperators.cpp; sourceTree = "<group>"; };
- C02B77F1126612140026BF0F /* SpacebarScrolling.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SpacebarScrolling.cpp; sourceTree = "<group>"; };
- C02B7853126613AE0026BF0F /* Carbon.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; name = Carbon.framework; sourceTree = SDKROOT; };
- C02B7882126615410026BF0F /* spacebar-scrolling.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "spacebar-scrolling.html"; sourceTree = "<group>"; };
- C045F9441385C2E900C0F3CD /* DownloadDecideDestinationCrash.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DownloadDecideDestinationCrash.cpp; sourceTree = "<group>"; };
- C045F9461385C2F800C0F3CD /* 18-characters.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "18-characters.html"; sourceTree = "<group>"; };
- C07E6CAE13FD67650038B22B /* DynamicDeviceScaleFactor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DynamicDeviceScaleFactor.mm; sourceTree = "<group>"; };
- C07E6CB113FD738A0038B22B /* devicePixelRatio.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = devicePixelRatio.html; sourceTree = "<group>"; };
- C081224013FC172400DC39AE /* JavaScriptTestMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = JavaScriptTestMac.mm; sourceTree = "<group>"; };
- C081224313FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SyntheticBackingScaleFactorWindow.h; sourceTree = "<group>"; };
- C081224413FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SyntheticBackingScaleFactorWindow.m; sourceTree = "<group>"; };
- C081224813FC1B0300DC39AE /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- C08587BD13FE956C001EF4E5 /* WebKitAgnosticTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebKitAgnosticTest.mm; sourceTree = "<group>"; };
- C08587BE13FE956C001EF4E5 /* WebKitAgnosticTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitAgnosticTest.h; sourceTree = "<group>"; };
- C08587FB13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InstanceMethodSwizzler.mm; sourceTree = "<group>"; };
- C08587FE13FEC3A6001EF4E5 /* InstanceMethodSwizzler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InstanceMethodSwizzler.h; sourceTree = "<group>"; };
- C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InstanceMethodSwizzler.mm; sourceTree = "<group>"; };
- C0991C50143C7D68007998F2 /* RetainPtrHashing.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RetainPtrHashing.cpp; sourceTree = "<group>"; };
- C0ADBE7A12FCA4D000D2C129 /* JavaScriptTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JavaScriptTest.cpp; sourceTree = "<group>"; };
- C0ADBE7B12FCA4D000D2C129 /* JavaScriptTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JavaScriptTest.h; sourceTree = "<group>"; };
- C0ADBE8212FCA6AA00D2C129 /* RestoreSessionStateContainingFormData.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = RestoreSessionStateContainingFormData.cpp; sourceTree = "<group>"; };
- C0ADBE8412FCA6B600D2C129 /* simple-form.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "simple-form.html"; sourceTree = "<group>"; };
- C0BD669C131D3CF700E18F2A /* ResponsivenessTimerDoesntFireEarly.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResponsivenessTimerDoesntFireEarly.cpp; sourceTree = "<group>"; };
- C0BD669E131D3CFF00E18F2A /* ResponsivenessTimerDoesntFireEarly_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ResponsivenessTimerDoesntFireEarly_Bundle.cpp; sourceTree = "<group>"; };
- C0C5D3BC14598B6F00A802A6 /* GetBackingScaleFactor.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GetBackingScaleFactor.mm; sourceTree = "<group>"; };
- C0C5D3BD14598B6F00A802A6 /* GetBackingScaleFactor_Bundle.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = GetBackingScaleFactor_Bundle.mm; sourceTree = "<group>"; };
- C2CF975816CEC69E0054E99D /* JSContextBackForwardCache1.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = JSContextBackForwardCache1.html; sourceTree = "<group>"; };
- C2CF975916CEC69E0054E99D /* JSContextBackForwardCache2.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = JSContextBackForwardCache2.html; sourceTree = "<group>"; };
- C2EB2DD116CAC7AC009B52EE /* WebViewDidCreateJavaScriptContext.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = WebViewDidCreateJavaScriptContext.mm; sourceTree = "<group>"; };
- C507E8A614C6545B005D6B3B /* InspectorBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InspectorBar.mm; sourceTree = "<group>"; };
- C5101C4E176B8BB900EE9B15 /* findRanges.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = findRanges.html; sourceTree = "<group>"; };
- C51AFB98169F49FF009CCF66 /* FindMatches.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FindMatches.mm; sourceTree = "<group>"; };
- C540F775152E4DA000A40C8C /* SimplifyMarkup.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SimplifyMarkup.mm; sourceTree = "<group>"; };
- C540F783152E5A7800A40C8C /* verboseMarkup.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = verboseMarkup.html; sourceTree = "<group>"; };
- C54237ED16B8955800E638FC /* PasteboardNotifications_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PasteboardNotifications_Bundle.cpp; sourceTree = "<group>"; };
- C54237EE16B8955800E638FC /* PasteboardNotifications.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PasteboardNotifications.mm; sourceTree = "<group>"; };
- C5E1AFFD16B22179006CC1F2 /* execCopy.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = execCopy.html; sourceTree = "<group>"; };
- CD5393C71757BA9700C07123 /* MD5.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MD5.cpp; path = WTF/MD5.cpp; sourceTree = "<group>"; };
- CD5393C91757BAC400C07123 /* SHA1.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = SHA1.cpp; path = WTF/SHA1.cpp; sourceTree = "<group>"; };
- CD5497B315857F0C00B5BC30 /* MediaTime.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MediaTime.cpp; path = WTF/MediaTime.cpp; sourceTree = "<group>"; };
- E1220D9F155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MemoryCacheDisableWithinResourceLoadDelegate.mm; sourceTree = "<group>"; };
- E1220DC9155B287D0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = MemoryCacheDisableWithinResourceLoadDelegate.html; sourceTree = "<group>"; };
- E194E1BA177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = StopLoadingFromDidReceiveResponse.mm; sourceTree = "<group>"; };
- E194E1BC177E534A009C4D4E /* StopLoadingFromDidReceiveResponse.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = StopLoadingFromDidReceiveResponse.html; sourceTree = "<group>"; };
- E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TypingStyleCrash.mm; sourceTree = "<group>"; };
- E4A757D3178AEA5B00B5D7A4 /* Deque.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = Deque.cpp; path = WTF/Deque.cpp; sourceTree = "<group>"; };
- F3FC3EE213678B7300126A65 /* libgtest.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libgtest.a; sourceTree = BUILT_PRODUCTS_DIR; };
- F660AA0C15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetInjectedBundleInitializationUserDataCallback.cpp; sourceTree = "<group>"; };
- F660AA0F15A5F624003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GetInjectedBundleInitializationUserDataCallback_Bundle.cpp; sourceTree = "<group>"; };
- F660AA1215A619C8003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleInitializationUserDataCallbackWins.cpp; sourceTree = "<group>"; };
- F660AA1415A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp; sourceTree = "<group>"; };
- F6B7BE92174691EF008A3445 /* DidAssociateFormControls_Bundle.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DidAssociateFormControls_Bundle.cpp; sourceTree = "<group>"; };
- F6B7BE93174691EF008A3445 /* DidAssociateFormControls.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; path = DidAssociateFormControls.cpp; sourceTree = "<group>"; };
- F6B7BE9617469B7E008A3445 /* associate-form-controls.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "associate-form-controls.html"; sourceTree = "<group>"; };
- F6F3F29013342FEB00A6BF19 /* CookieManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CookieManager.cpp; sourceTree = "<group>"; };
- F6F49C6615545C8D0007F39D /* DOMWindowExtensionNoCache_Bundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtensionNoCache_Bundle.cpp; sourceTree = "<group>"; };
- F6F49C6715545C8D0007F39D /* DOMWindowExtensionNoCache.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = DOMWindowExtensionNoCache.cpp; sourceTree = "<group>"; };
- F6FDDDD214241AD4004F1729 /* PrivateBrowsingPushStateNoHistoryCallback.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PrivateBrowsingPushStateNoHistoryCallback.cpp; sourceTree = "<group>"; };
- F6FDDDD514241C48004F1729 /* push-state.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "push-state.html"; sourceTree = "<group>"; };
- FE217ECC1640A54A0052988B /* VMInspector.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = VMInspector.cpp; sourceTree = "<group>"; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BC57597E126E74AF006F0F12 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC575A90126E74D3006F0F12 /* Cocoa.framework in Frameworks */,
- BC575A92126E74D3006F0F12 /* JavaScriptCore.framework in Frameworks */,
- BC575A91126E74D3006F0F12 /* WebKit2.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 08FB7794FE84155DC02AAC07 /* TestWebKitAPI */ = {
- isa = PBXGroup;
- children = (
- 08FB7795FE84155DC02AAC07 /* Source */,
- BCB9EB66112366D800A137E0 /* Tests */,
- BC90957D12554CEA00083756 /* Configurations */,
- 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
- 1AB674ADFE9D54B511CA2CBB /* Products */,
- );
- name = TestWebKitAPI;
- sourceTree = "<group>";
- };
- 08FB7795FE84155DC02AAC07 /* Source */ = {
- isa = PBXGroup;
- children = (
- BC575944126E733C006F0F12 /* InjectedBundle */,
- 2E9660DC16C07D7B00371B42 /* ios */,
- BCA61C3A11700B9400460D1E /* mac */,
- BC131A9E1171317C00B69727 /* config.h */,
- C0ADBE7A12FCA4D000D2C129 /* JavaScriptTest.cpp */,
- C0ADBE7B12FCA4D000D2C129 /* JavaScriptTest.h */,
- BC575BBF126F5752006F0F12 /* PlatformUtilities.cpp */,
- BC131883117114A800B69727 /* PlatformUtilities.h */,
- BC90951B125533D700083756 /* PlatformWebView.h */,
- BCB9E7FA112359A300A137E0 /* Test.h */,
- BC131AA8117131FC00B69727 /* TestsController.cpp */,
- BCB9E7C711234E3A00A137E0 /* TestsController.h */,
- 44A622C114A0E2B60048515B /* WTFStringUtilities.h */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- C02B7853126613AE0026BF0F /* Carbon.framework */,
- BCB9E9F011235BDE00A137E0 /* Cocoa.framework */,
- BC90964D1255620C00083756 /* JavaScriptCore.framework */,
- F3FC3EE213678B7300126A65 /* libgtest.a */,
- C081224813FC1B0300DC39AE /* WebKit.framework */,
- BCA61DB411700EFD00460D1E /* WebKit2.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 1AB674ADFE9D54B511CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8DD76FA10486AA7600D96B5E /* TestWebKitAPI */,
- BC575980126E74AF006F0F12 /* InjectedBundleTestWebKitAPI.bundle */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 2E9660DC16C07D7B00371B42 /* ios */ = {
- isa = PBXGroup;
- children = (
- 2E7765CC16C4D80A00BA2BB1 /* mainIOS.mm */,
- );
- path = ios;
- sourceTree = "<group>";
- };
- 440A1D3614A01000008A66F2 /* WebCore */ = {
- isa = PBXGroup;
- children = (
- 440A1D3814A0103A008A66F2 /* KURL.cpp */,
- 14464012167A8305000BD218 /* LayoutUnit.cpp */,
- );
- path = WebCore;
- sourceTree = "<group>";
- };
- BC029B1A1486B23800817DA9 /* ns */ = {
- isa = PBXGroup;
- children = (
- BC029B1B1486B25900817DA9 /* RetainPtr.mm */,
- );
- name = ns;
- sourceTree = "<group>";
- };
- BC3C4C6F14575B1D0025FB62 /* WebKit2 Objective-C */ = {
- isa = PBXGroup;
- children = (
- B55AD1D3179F3ABF00AC1494 /* PreventImageLoadWithAutoResizing_Bundle.cpp */,
- B55AD1D1179F336600AC1494 /* PreventImageLoadWithAutoResizing.mm */,
- 297234B2173AD04800983601 /* CustomProtocolsInvalidScheme.mm */,
- 297234B5173AFAC700983601 /* CustomProtocolsInvalidScheme_Bundle.cpp */,
- 29AB8A9F164C735800D49BEC /* CustomProtocolsTest.mm */,
- 290F4276172A232C00939FF0 /* CustomProtocolsSyncXHRTest.mm */,
- 2943BE84161DFEB800999E3D /* UserContentTest.mm */,
- BC3C4C7D14587AA60025FB62 /* WKBrowsingContextGroupTest.mm */,
- BC3C4C7014575B6A0025FB62 /* WKBrowsingContextLoadDelegateTest.mm */,
- );
- name = "WebKit2 Objective-C";
- sourceTree = "<group>";
- };
- BC575944126E733C006F0F12 /* InjectedBundle */ = {
- isa = PBXGroup;
- children = (
- BC575981126E74AF006F0F12 /* InjectedBundle-Info.plist */,
- BC575AA0126E7657006F0F12 /* InjectedBundleController.cpp */,
- BC575A9F126E7657006F0F12 /* InjectedBundleController.h */,
- BC575946126E7351006F0F12 /* InjectedBundleMain.cpp */,
- BC575A9E126E75FB006F0F12 /* InjectedBundleTest.h */,
- );
- name = InjectedBundle;
- sourceTree = "<group>";
- };
- BC90957D12554CEA00083756 /* Configurations */ = {
- isa = PBXGroup;
- children = (
- BC90957E12554CF900083756 /* Base.xcconfig */,
- BC90957F12554CF900083756 /* DebugRelease.xcconfig */,
- BC575AE2126E88B1006F0F12 /* InjectedBundle.xcconfig */,
- BC90958012554CF900083756 /* TestWebKitAPI.xcconfig */,
- );
- path = Configurations;
- sourceTree = "<group>";
- };
- BC9096411255616000083756 /* WebKit2 */ = {
- isa = PBXGroup;
- children = (
- C0C5D3BB14598B6F00A802A6 /* mac */,
- BC90977B125571AE00083756 /* Resources */,
- BC246D8C132F115A00B56D7C /* AboutBlankLoad.cpp */,
- 7C8DDAA91735DE1D00EA5AC0 /* CloseThenTerminate.cpp */,
- BC246D98132F1FE100B56D7C /* CanHandleRequest.cpp */,
- BC246D97132F1FE100B56D7C /* CanHandleRequest_Bundle.cpp */,
- F6F3F29013342FEB00A6BF19 /* CookieManager.cpp */,
- F6B7BE93174691EF008A3445 /* DidAssociateFormControls.cpp */,
- F6B7BE92174691EF008A3445 /* DidAssociateFormControls_Bundle.cpp */,
- BCB6803F126FBFE100642A61 /* DocumentStartUserScriptAlertCrash.cpp */,
- BCB68041126FBFF100642A61 /* DocumentStartUserScriptAlertCrash_Bundle.cpp */,
- 51393E1E1523944A005F39C5 /* DOMWindowExtensionBasic.cpp */,
- 51393E1D1523944A005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp */,
- F6F49C6715545C8D0007F39D /* DOMWindowExtensionNoCache.cpp */,
- F6F49C6615545C8D0007F39D /* DOMWindowExtensionNoCache_Bundle.cpp */,
- C045F9441385C2E900C0F3CD /* DownloadDecideDestinationCrash.cpp */,
- 1A5FEFDC1270E2A3000E2921 /* EvaluateJavaScript.cpp */,
- BCC8B95A12611F4700DE46A4 /* FailedLoad.cpp */,
- 1A02C84E125D4A8400E3F4BD /* Find.cpp */,
- C51AFB98169F49FF009CCF66 /* FindMatches.mm */,
- 1ADBEFAD130C689C00D61D19 /* ForceRepaint.cpp */,
- BCBD370F125AA2EB00D2C29F /* FrameMIMETypeHTML.cpp */,
- BCBD3760125ABCFE00D2C29F /* FrameMIMETypePNG.cpp */,
- F660AA0C15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp */,
- F660AA0F15A5F624003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp */,
- 4BFDFFA8131477770061F24B /* HitTestResultNodeHandle.cpp */,
- 4BFDFFA61314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp */,
- BC575AAC126E83B9006F0F12 /* InjectedBundleBasic.cpp */,
- BC575AAF126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp */,
- 378E64711632646D00B6C676 /* InjectedBundleFrameHitTest.cpp */,
- 378E64751632655D00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp */,
- F660AA1215A619C8003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp */,
- F660AA1415A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp */,
- 52CB47401448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp */,
- 33DC8910141953A300747EF7 /* LoadCanceledNoServerRedirectCallback.cpp */,
- 33DC89131419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp */,
- 8AA28C1916D2FA7B002FF4DB /* LoadPageOnCrash.cpp */,
- 33BE5AF4137B5A6C00705813 /* MouseMoveAfterCrash.cpp */,
- 33BE5AF8137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp */,
- 93F1DB3014DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp */,
- 93F1DB3314DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp */,
- 93F1DB5414DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp */,
- 93F1DB5614DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp */,
- 93AF4ECA1506F035007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages.cpp */,
- 93AF4ECD1506F064007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp */,
- 93F7E86B14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp */,
- 93F7E86E14DC8E5B00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp */,
- BC909779125571AB00083756 /* PageLoadBasic.cpp */,
- BC2D004812A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp */,
- A51B650816ADF9B1007AA5D9 /* PageVisibilityState.cpp */,
- 52E5CE4514D21E9D003B2BD8 /* ParentFrame.cpp */,
- 52E5CE4814D21EAB003B2BD8 /* ParentFrame_Bundle.cpp */,
- C54237EE16B8955800E638FC /* PasteboardNotifications.mm */,
- C54237ED16B8955800E638FC /* PasteboardNotifications_Bundle.cpp */,
- 333B9CE11277F23100FEFCE3 /* PreventEmptyUserAgent.cpp */,
- F6FDDDD214241AD4004F1729 /* PrivateBrowsingPushStateNoHistoryCallback.cpp */,
- 8A3AF93A16C9ED2700D248C1 /* ReloadPageAfterCrash.cpp */,
- 2DD7D3A9178205D00026E1E3 /* ResizeReversePaginatedWebView.cpp */,
- 8A2C750D16CED9550024F352 /* ResizeWindowAfterCrash.cpp */,
- C0BD669C131D3CF700E18F2A /* ResponsivenessTimerDoesntFireEarly.cpp */,
- C0BD669E131D3CFF00E18F2A /* ResponsivenessTimerDoesntFireEarly_Bundle.cpp */,
- C0ADBE8212FCA6AA00D2C129 /* RestoreSessionStateContainingFormData.cpp */,
- 2D640B5417875DFF00BFAF99 /* ScrollPinningBehaviors.cpp */,
- 51FCF7981534AC6D00104491 /* ShouldGoToBackForwardListItem.cpp */,
- 51FCF7971534AC6D00104491 /* ShouldGoToBackForwardListItem_Bundle.cpp */,
- C02B77F1126612140026BF0F /* SpacebarScrolling.cpp */,
- 1AE72F47173EB214006362F0 /* TerminateTwice.cpp */,
- BC22D31314DC689800FFB1DD /* UserMessage.cpp */,
- BC22D31714DC68B800FFB1DD /* UserMessage_Bundle.cpp */,
- 520BCF4B141EB09E00937EA8 /* WebArchive.cpp */,
- 520BCF4A141EB09E00937EA8 /* WebArchive_Bundle.cpp */,
- 0F17BBD415AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp */,
- 7CFBCADD1743234F00B2BFCF /* WillLoad.cpp */,
- 7CFBCAE31743238E00B2BFCF /* WillLoad_Bundle.cpp */,
- 76E182D91547550100F1FADD /* WillSendSubmitEvent.cpp */,
- 76E182DC1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp */,
- BC901E221492ADCE0074A667 /* WKConnection.cpp */,
- BC901E311492AF390074A667 /* WKConnection_Bundle.cpp */,
- 51E93016156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp */,
- BC7B619A1299FE9E00D174A4 /* WKPreferences.cpp */,
- BC90995D12567BC100083756 /* WKString.cpp */,
- BC9099931256ACF100083756 /* WKStringJSString.cpp */,
- );
- path = WebKit2;
- sourceTree = "<group>";
- };
- BC9096461255618900083756 /* WTF */ = {
- isa = PBXGroup;
- children = (
- C0991C4F143C7D68007998F2 /* cf */,
- BC029B1A1486B23800817DA9 /* ns */,
- 26F1B44215CA434F00D1E4BF /* AtomicString.cpp */,
- A7A966DA140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp */,
- 26A2C72E15E2E73C005B1A14 /* CString.cpp */,
- E4A757D3178AEA5B00B5D7A4 /* Deque.cpp */,
- 1AA9E55714980A9900001A8A /* Functional.cpp */,
- 0BCD833414857CE400EA2003 /* HashMap.cpp */,
- 26B2DFF815BDE599004F691D /* HashSet.cpp */,
- 266FAFD215E5775200F61D5B /* IntegerToStringConversion.cpp */,
- 26300B1716755CD90066886D /* ListHashSet.cpp */,
- CD5393C71757BA9700C07123 /* MD5.cpp */,
- B4039F9C15E6D8B3007255D6 /* MathExtras.cpp */,
- CD5497B315857F0C00B5BC30 /* MediaTime.cpp */,
- 0FC6C4CE141034AD005B7F0C /* MetaAllocator.cpp */,
- 0FC6C4CB141027E0005B7F0C /* RedBlackTree.cpp */,
- CD5393C91757BAC400C07123 /* SHA1.cpp */,
- 14F3B11215E45EAB00210069 /* SaturatedArithmeticOperations.cpp */,
- 81B50192140F232300D9EB58 /* StringBuilder.cpp */,
- 93ABA80816DDAB91002DB2FA /* StringHasher.cpp */,
- 26F1B44315CA434F00D1E4BF /* StringImpl.cpp */,
- C01363C713C3997300EF3964 /* StringOperators.cpp */,
- 0BCD85691485C98B00EA2003 /* TemporaryChange.cpp */,
- BC55F5F814AD78EE00484BE1 /* Vector.cpp */,
- BC90964B125561BF00083756 /* VectorBasic.cpp */,
- 37200B9113A16230007A4FAD /* VectorReverse.cpp */,
- 265AF54F15D1E48A00B0CB4A /* WTFString.cpp */,
- );
- name = WTF;
- sourceTree = "<group>";
- };
- BC90977B125571AE00083756 /* Resources */ = {
- isa = PBXGroup;
- children = (
- C045F9461385C2F800C0F3CD /* 18-characters.html */,
- F6B7BE9617469B7E008A3445 /* associate-form-controls.html */,
- 76E182DE15475A8300F1FADD /* auto-submitting-form.html */,
- 290F4274172A1FDE00939FF0 /* custom-protocol-sync-xhr.html */,
- C5E1AFFD16B22179006CC1F2 /* execCopy.html */,
- BC2D004A12A9FEB300E732A3 /* file-with-anchor.html */,
- 1A02C84B125D4A5E00E3F4BD /* find.html */,
- C5101C4E176B8BB900EE9B15 /* findRanges.html */,
- BCBD372E125ABBE600D2C29F /* icon.png */,
- 378E647816326FDF00B6C676 /* link-with-title.html */,
- 9361002814DC957B0061379D /* lots-of-iframes.html */,
- 93AF4ECF1506F123007FD57E /* lots-of-images.html */,
- 930AD401150698B30067970F /* lots-of-text.html */,
- 2DD7D3AE178227AC0026E1E3 /* lots-of-text-vertical-lr.html */,
- 33E79E05137B5FCE00E32D99 /* mouse-move-listener.html */,
- F6FDDDD514241C48004F1729 /* push-state.html */,
- 1ADBEFBC130C6A0100D61D19 /* simple-accelerated-compositing.html */,
- C0ADBE8412FCA6B600D2C129 /* simple-form.html */,
- 33DC890E1419539300747EF7 /* simple-iframe.html */,
- BCAA485514A021640088FAC4 /* simple-tall.html */,
- BC909778125571AB00083756 /* simple.html */,
- C02B7882126615410026BF0F /* spacebar-scrolling.html */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- BCA61C3A11700B9400460D1E /* mac */ = {
- isa = PBXGroup;
- children = (
- 1AEDE22413E5E7A000E62FE8 /* InjectedBundleControllerMac.mm */,
- C08587FE13FEC3A6001EF4E5 /* InstanceMethodSwizzler.h */,
- C08587FF13FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm */,
- C081224013FC172400DC39AE /* JavaScriptTestMac.mm */,
- 2E7765CE16C4D81100BA2BB1 /* mainMac.mm */,
- BC131884117114B600B69727 /* PlatformUtilitiesMac.mm */,
- BC90955C125548AA00083756 /* PlatformWebViewMac.mm */,
- C081224313FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.h */,
- C081224413FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.m */,
- 29AB8AA3164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.h */,
- 29AB8AA2164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.mm */,
- 290F427A172A23A500939FF0 /* TestProtocol.h */,
- 290F4279172A23A500939FF0 /* TestProtocol.mm */,
- C08587BE13FE956C001EF4E5 /* WebKitAgnosticTest.h */,
- C08587BD13FE956C001EF4E5 /* WebKitAgnosticTest.mm */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- BCB9EB66112366D800A137E0 /* Tests */ = {
- isa = PBXGroup;
- children = (
- FE217ECB1640A54A0052988B /* JavaScriptCore */,
- C07E6CAD13FD67650038B22B /* mac */,
- C08587F913FEC39B001EF4E5 /* TestWebKitAPI */,
- 440A1D3614A01000008A66F2 /* WebCore */,
- BC9096411255616000083756 /* WebKit2 */,
- BC3C4C6F14575B1D0025FB62 /* WebKit2 Objective-C */,
- BC9096461255618900083756 /* WTF */,
- );
- path = Tests;
- sourceTree = "<group>";
- };
- C07E6CAD13FD67650038B22B /* mac */ = {
- isa = PBXGroup;
- children = (
- C07E6CB013FD737C0038B22B /* Resources */,
- 379028B514FABD92007E6B43 /* AcceptsFirstMouse.mm */,
- B55F119F1516834F00915916 /* AttributedString.mm */,
- 00CD9F6215BE312C002DA2CE /* BackForwardList.mm */,
- 26DF5A5D15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm */,
- 290A9BB51735DE8A00D71BBC /* CloseNewWindowInNavigationPolicyDelegate.mm */,
- 5142B2701517C88B00C32B19 /* ContextMenuCanCopyURL.mm */,
- 3776BC62150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm */,
- 939BA91614103412001A01BD /* DeviceScaleFactorOnBack.mm */,
- 37E1064A1697676400B78BD0 /* DOMHTMLTableCellCellAbove.mm */,
- 3751AF7A169518F800764319 /* DOMNodeFromJSObject.mm */,
- 37DC678B140D7C5000ABCCDB /* DOMRangeOfString.mm */,
- C07E6CAE13FD67650038B22B /* DynamicDeviceScaleFactor.mm */,
- 4BB4160316815F9100824238 /* ElementAtPointInWebFrame.mm */,
- 9B4F8FA3159D52B1002D9F94 /* HTMLCollectionNamedItem.mm */,
- 9B26FC6B159D061000CC3765 /* HTMLFormCollectionNamedItem.mm */,
- C507E8A614C6545B005D6B3B /* InspectorBar.mm */,
- 4BB4160116815B2600824238 /* JSWrapperForNodeInWebFrame.mm */,
- E1220D9F155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm */,
- 517E7DFB15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm */,
- A57A34EF16AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm */,
- 00BC16851680FE810065F1E5 /* PublicSuffix.mm */,
- 3722C8681461E03E00C45D00 /* RenderedImageFromDOMRange.mm */,
- 261516D515B0E60500A2C201 /* SetAndUpdateCacheModel.mm */,
- 52B8CF9515868CF000281053 /* SetDocumentURI.mm */,
- C540F775152E4DA000A40C8C /* SimplifyMarkup.mm */,
- 291861FD17BD4DC700D4E41E /* StopLoadingFromDidFinishLoading.mm */,
- E194E1BA177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm */,
- 3799AD3914120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm */,
- 37A6895D148A9B50005100FA /* SubresourceErrorCrash.mm */,
- E490296714E2E3A4002BEDD1 /* TypingStyleCrash.mm */,
- 51FBBB4C1513D4E900822738 /* WebViewCanPasteURL.mm */,
- C2EB2DD116CAC7AC009B52EE /* WebViewDidCreateJavaScriptContext.mm */,
- 37E38C33169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm */,
- 1A7BFC0A171A0BDB00BC5F64 /* WillSendSubmitEvent.mm */,
- A5E2027215B2181900C13E14 /* WindowlessWebViewWithMedia.mm */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- C07E6CB013FD737C0038B22B /* Resources */ = {
- isa = PBXGroup;
- children = (
- C2CF975816CEC69E0054E99D /* JSContextBackForwardCache1.html */,
- C2CF975916CEC69E0054E99D /* JSContextBackForwardCache2.html */,
- 379028B814FABE49007E6B43 /* acceptsFirstMouse.html */,
- B55F11B9151916E600915916 /* Ahem.ttf */,
- B55F11B01517A2C400915916 /* attributedStringCustomFont.html */,
- 26DF5A6115A2A22B003689C2 /* CancelLoadFromResourceLoadDelegate.html */,
- 5142B2721517C89100C32B19 /* ContextMenuCanCopyURL.html */,
- C07E6CB113FD738A0038B22B /* devicePixelRatio.html */,
- 37E1064B169767F700B78BD0 /* DOMHTMLTableCellElementCellAbove.html */,
- 37DC678F140D7D3A00ABCCDB /* DOMRangeOfString.html */,
- 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */,
- 9B26FCB4159D15E700CC3765 /* HTMLFormCollectionNamedItem.html */,
- E1220DC9155B287D0013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.html */,
- 517E7E031511187500D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.html */,
- 290A9BB81735F42300D71BBC /* OpenNewWindow.html */,
- A57A34F116AF69E200C2501F /* PageVisibilityStateWithWindowChanges.html */,
- 52B8CF9415868CF000281053 /* SetDocumentURI.html */,
- E194E1BC177E534A009C4D4E /* StopLoadingFromDidReceiveResponse.html */,
- C540F783152E5A7800A40C8C /* verboseMarkup.html */,
- A5E2027015B2180600C13E14 /* WindowlessWebViewWithMedia.html */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- C08587F913FEC39B001EF4E5 /* TestWebKitAPI */ = {
- isa = PBXGroup;
- children = (
- C08587FA13FEC39B001EF4E5 /* mac */,
- );
- path = TestWebKitAPI;
- sourceTree = "<group>";
- };
- C08587FA13FEC39B001EF4E5 /* mac */ = {
- isa = PBXGroup;
- children = (
- C08587FB13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- C0991C4F143C7D68007998F2 /* cf */ = {
- isa = PBXGroup;
- children = (
- BC029B161486AD6400817DA9 /* RetainPtr.cpp */,
- C0991C50143C7D68007998F2 /* RetainPtrHashing.cpp */,
- );
- name = cf;
- path = WTF/cf;
- sourceTree = "<group>";
- };
- C0C5D3BB14598B6F00A802A6 /* mac */ = {
- isa = PBXGroup;
- children = (
- BCAA485714A044D40088FAC4 /* EditorCommands.mm */,
- C0C5D3BC14598B6F00A802A6 /* GetBackingScaleFactor.mm */,
- C0C5D3BD14598B6F00A802A6 /* GetBackingScaleFactor_Bundle.mm */,
- 1AEF994817A09F5300998EF0 /* GetPIDAfterAbortedProcessLaunch.cpp */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- FE217ECB1640A54A0052988B /* JavaScriptCore */ = {
- isa = PBXGroup;
- children = (
- FE217ECC1640A54A0052988B /* VMInspector.cpp */,
- );
- path = JavaScriptCore;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8DD76F960486AA7600D96B5E /* TestWebKitAPI */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "TestWebKitAPI" */;
- buildPhases = (
- 8DD76F990486AA7600D96B5E /* Sources */,
- 8DD76F9B0486AA7600D96B5E /* Frameworks */,
- 8DD76F9E0486AA7600D96B5E /* CopyFiles */,
- BCB9F4FB112384C000A137E0 /* Copy Resources */,
- );
- buildRules = (
- );
- dependencies = (
- BC575A96126E74E7006F0F12 /* PBXTargetDependency */,
- );
- name = TestWebKitAPI;
- productInstallPath = "$(HOME)/bin";
- productName = TestWebKitAPI;
- productReference = 8DD76FA10486AA7600D96B5E /* TestWebKitAPI */;
- productType = "com.apple.product-type.tool";
- };
- BC57597F126E74AF006F0F12 /* InjectedBundleTestWebKitAPI */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = BC575986126E74AF006F0F12 /* Build configuration list for PBXNativeTarget "InjectedBundleTestWebKitAPI" */;
- buildPhases = (
- BC57597C126E74AF006F0F12 /* Resources */,
- BC57597D126E74AF006F0F12 /* Sources */,
- BC57597E126E74AF006F0F12 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- );
- name = InjectedBundleTestWebKitAPI;
- productName = InjectedBundle;
- productReference = BC575980126E74AF006F0F12 /* InjectedBundleTestWebKitAPI.bundle */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 08FB7793FE84155DC02AAC07 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- };
- buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "TestWebKitAPI" */;
- compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 08FB7794FE84155DC02AAC07 /* TestWebKitAPI */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8DD76F960486AA7600D96B5E /* TestWebKitAPI */,
- BC57597F126E74AF006F0F12 /* InjectedBundleTestWebKitAPI */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- BC57597C126E74AF006F0F12 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 93AF4ED01506F123007FD57E /* lots-of-images.html in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8DD76F990486AA7600D96B5E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC246D8E132F115A00B56D7C /* AboutBlankLoad.cpp in Sources */,
- 297234B4173AD04800983601 /* CustomProtocolsInvalidScheme.mm in Sources */,
- 379028B614FABD92007E6B43 /* AcceptsFirstMouse.mm in Sources */,
- 291861FF17BD4DC700D4E41E /* StopLoadingFromDidFinishLoading.mm in Sources */,
- 26F1B44415CA434F00D1E4BF /* AtomicString.cpp in Sources */,
- B55F11A01516834F00915916 /* AttributedString.mm in Sources */,
- 00CD9F6315BE312C002DA2CE /* BackForwardList.mm in Sources */,
- 1AE72F48173EB214006362F0 /* TerminateTwice.cpp in Sources */,
- 26DF5A5E15A29BAA003689C2 /* CancelLoadFromResourceLoadDelegate.mm in Sources */,
- BC246D9A132F1FE100B56D7C /* CanHandleRequest.cpp in Sources */,
- A7A966DB140ECCC8005EF9B4 /* CheckedArithmeticOperations.cpp in Sources */,
- 5142B2711517C88B00C32B19 /* ContextMenuCanCopyURL.mm in Sources */,
- F6F3F29113342FEB00A6BF19 /* CookieManager.cpp in Sources */,
- 26A2C72F15E2E73C005B1A14 /* CString.cpp in Sources */,
- 29AB8AA1164C735800D49BEC /* CustomProtocolsTest.mm in Sources */,
- 3776BC63150946BC0043A66D /* DeviceScaleFactorInDashboardRegions.mm in Sources */,
- 939BA91714103412001A01BD /* DeviceScaleFactorOnBack.mm in Sources */,
- BCB68040126FBFE100642A61 /* DocumentStartUserScriptAlertCrash.cpp in Sources */,
- 37E1064D16976C8500B78BD0 /* DOMHTMLTableCellCellAbove.mm in Sources */,
- 3751AF7C169518F800764319 /* DOMNodeFromJSObject.mm in Sources */,
- 37DC678D140D7C5000ABCCDB /* DOMRangeOfString.mm in Sources */,
- 51393E201523944A005F39C5 /* DOMWindowExtensionBasic.cpp in Sources */,
- F6F49C6915545C8E0007F39D /* DOMWindowExtensionNoCache.cpp in Sources */,
- C045F9451385C2EA00C0F3CD /* DownloadDecideDestinationCrash.cpp in Sources */,
- C07E6CAF13FD67650038B22B /* DynamicDeviceScaleFactor.mm in Sources */,
- BCAA485814A044D40088FAC4 /* EditorCommands.mm in Sources */,
- 4BB4160416815F9100824238 /* ElementAtPointInWebFrame.mm in Sources */,
- 1A5FEFDD1270E2A3000E2921 /* EvaluateJavaScript.cpp in Sources */,
- BCC8B95B12611F4700DE46A4 /* FailedLoad.cpp in Sources */,
- 1A02C84F125D4A8400E3F4BD /* Find.cpp in Sources */,
- C51AFB99169F49FF009CCF66 /* FindMatches.mm in Sources */,
- 1ADBEFAE130C689C00D61D19 /* ForceRepaint.cpp in Sources */,
- BCBD3710125AA2EB00D2C29F /* FrameMIMETypeHTML.cpp in Sources */,
- BCBD3761125ABCFE00D2C29F /* FrameMIMETypePNG.cpp in Sources */,
- 290F427B172A23A500939FF0 /* TestProtocol.mm in Sources */,
- 1AA9E55914980A9900001A8A /* Functional.cpp in Sources */,
- C0C5D3BE14598B6F00A802A6 /* GetBackingScaleFactor.mm in Sources */,
- F660AA0D15A5F061003A1243 /* GetInjectedBundleInitializationUserDataCallback.cpp in Sources */,
- 0BCD833514857CE400EA2003 /* HashMap.cpp in Sources */,
- 2DD7D3AA178205D00026E1E3 /* ResizeReversePaginatedWebView.cpp in Sources */,
- 26B2DFF915BDE599004F691D /* HashSet.cpp in Sources */,
- 4BFDFFA9131477770061F24B /* HitTestResultNodeHandle.cpp in Sources */,
- 9B4F8FA4159D52B1002D9F94 /* HTMLCollectionNamedItem.mm in Sources */,
- 9B26FC6C159D061000CC3765 /* HTMLFormCollectionNamedItem.mm in Sources */,
- C2EB2DD316CAC7AC009B52EE /* WebViewDidCreateJavaScriptContext.mm in Sources */,
- BC575AAD126E83B9006F0F12 /* InjectedBundleBasic.cpp in Sources */,
- 378E64731632646D00B6C676 /* InjectedBundleFrameHitTest.cpp in Sources */,
- F660AA1315A619C9003A1243 /* InjectedBundleInitializationUserDataCallbackWins.cpp in Sources */,
- C507E8A714C6545B005D6B3B /* InspectorBar.mm in Sources */,
- C08587FC13FEC39B001EF4E5 /* InstanceMethodSwizzler.mm in Sources */,
- C085880013FEC3A6001EF4E5 /* InstanceMethodSwizzler.mm in Sources */,
- 266FAFD315E5775200F61D5B /* IntegerToStringConversion.cpp in Sources */,
- C0ADBE7C12FCA4D000D2C129 /* JavaScriptTest.cpp in Sources */,
- C081224213FC172400DC39AE /* JavaScriptTestMac.mm in Sources */,
- 4BB4160216815B2600824238 /* JSWrapperForNodeInWebFrame.mm in Sources */,
- 440A1D3914A0103A008A66F2 /* KURL.cpp in Sources */,
- 14464013167A8305000BD218 /* LayoutUnit.cpp in Sources */,
- 2D640B5517875DFF00BFAF99 /* ScrollPinningBehaviors.cpp in Sources */,
- 26300B1816755CD90066886D /* ListHashSet.cpp in Sources */,
- 52CB47411448FB9300873995 /* LoadAlternateHTMLStringWithNonDirectoryURL.cpp in Sources */,
- 33DC8911141953A300747EF7 /* LoadCanceledNoServerRedirectCallback.cpp in Sources */,
- 8AA28C1A16D2FA7B002FF4DB /* LoadPageOnCrash.cpp in Sources */,
- CD5393C81757BA9700C07123 /* MD5.cpp in Sources */,
- B4039F9D15E6D8B3007255D6 /* MathExtras.cpp in Sources */,
- CD5497B415857F0C00B5BC30 /* MediaTime.cpp in Sources */,
- E1220DA0155B25480013E2FC /* MemoryCacheDisableWithinResourceLoadDelegate.mm in Sources */,
- 517E7DFC15110EA600D0B008 /* MemoryCachePruneWithinResourceLoadDelegate.mm in Sources */,
- 0FC6C4CF141034AD005B7F0C /* MetaAllocator.cpp in Sources */,
- 33BE5AF5137B5A6C00705813 /* MouseMoveAfterCrash.cpp in Sources */,
- 93F1DB3114DA20760024C362 /* NewFirstVisuallyNonEmptyLayout.cpp in Sources */,
- 93F1DB5514DB1B730024C362 /* NewFirstVisuallyNonEmptyLayoutFails.cpp in Sources */,
- 9318778915EEC57700A9CCE3 /* NewFirstVisuallyNonEmptyLayoutForImages.cpp in Sources */,
- 7CFBCADF1743234F00B2BFCF /* WillLoad.cpp in Sources */,
- 93F7E86C14DC8E4D00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames.cpp in Sources */,
- BC90977A125571AB00083756 /* PageLoadBasic.cpp in Sources */,
- BC2D004912A9FDFA00E732A3 /* PageLoadDidChangeLocationWithinPageForFrame.cpp in Sources */,
- A51B650916ADF9B1007AA5D9 /* PageVisibilityState.cpp in Sources */,
- A57A34F016AF677200C2501F /* PageVisibilityStateWithWindowChanges.mm in Sources */,
- 52E5CE4614D21E9D003B2BD8 /* ParentFrame.cpp in Sources */,
- C54237F016B8955800E638FC /* PasteboardNotifications.mm in Sources */,
- BC575BC0126F5752006F0F12 /* PlatformUtilities.cpp in Sources */,
- BC131885117114B600B69727 /* PlatformUtilitiesMac.mm in Sources */,
- BC90955D125548AA00083756 /* PlatformWebViewMac.mm in Sources */,
- 333B9CE21277F23100FEFCE3 /* PreventEmptyUserAgent.cpp in Sources */,
- B55AD1D2179F336C00AC1494 /* PreventImageLoadWithAutoResizing.mm in Sources */,
- F6FDDDD314241AD4004F1729 /* PrivateBrowsingPushStateNoHistoryCallback.cpp in Sources */,
- 00BC16871680FE810065F1E5 /* PublicSuffix.mm in Sources */,
- 0FC6C4CC141027E0005B7F0C /* RedBlackTree.cpp in Sources */,
- 8A3AF93B16C9ED2700D248C1 /* ReloadPageAfterCrash.cpp in Sources */,
- 8A2C750E16CED9550024F352 /* ResizeWindowAfterCrash.cpp in Sources */,
- 3722C8691461E03E00C45D00 /* RenderedImageFromDOMRange.mm in Sources */,
- C0BD669D131D3CF700E18F2A /* ResponsivenessTimerDoesntFireEarly.cpp in Sources */,
- C0ADBE8312FCA6AA00D2C129 /* RestoreSessionStateContainingFormData.cpp in Sources */,
- 1AEF994917A09F5400998EF0 /* GetPIDAfterAbortedProcessLaunch.cpp in Sources */,
- BC029B181486AD6400817DA9 /* RetainPtr.cpp in Sources */,
- BC029B1C1486B25900817DA9 /* RetainPtr.mm in Sources */,
- C0991C51143C7D68007998F2 /* RetainPtrHashing.cpp in Sources */,
- CD5393CA1757BAC400C07123 /* SHA1.cpp in Sources */,
- 14F3B11315E45EAB00210069 /* SaturatedArithmeticOperations.cpp in Sources */,
- 261516D615B0E60500A2C201 /* SetAndUpdateCacheModel.mm in Sources */,
- 52B8CF9615868CF000281053 /* SetDocumentURI.mm in Sources */,
- 7C8DDAAB1735DEEE00EA5AC0 /* CloseThenTerminate.cpp in Sources */,
- 51FCF79A1534AC6D00104491 /* ShouldGoToBackForwardListItem.cpp in Sources */,
- C540F776152E4DA000A40C8C /* SimplifyMarkup.mm in Sources */,
- C02B77F2126612140026BF0F /* SpacebarScrolling.cpp in Sources */,
- E194E1BB177E5145009C4D4E /* StopLoadingFromDidReceiveResponse.mm in Sources */,
- 81B50193140F232300D9EB58 /* StringBuilder.cpp in Sources */,
- 3799AD3A14120A43005EB0C6 /* StringByEvaluatingJavaScriptFromString.mm in Sources */,
- 93ABA80916DDAB91002DB2FA /* StringHasher.cpp in Sources */,
- 26F1B44515CA434F00D1E4BF /* StringImpl.cpp in Sources */,
- C01363C813C3997300EF3964 /* StringOperators.cpp in Sources */,
- 37A6895F148A9B50005100FA /* SubresourceErrorCrash.mm in Sources */,
- C081224513FC19EC00DC39AE /* SyntheticBackingScaleFactorWindow.m in Sources */,
- 0BCD856A1485C98B00EA2003 /* TemporaryChange.cpp in Sources */,
- E4A757D4178AF1B100B5D7A4 /* Deque.cpp in Sources */,
- 29AB8AA4164C7A9300D49BEC /* TestBrowsingContextLoadDelegate.mm in Sources */,
- BC131AA9117131FC00B69727 /* TestsController.cpp in Sources */,
- E490296814E2E3A4002BEDD1 /* TypingStyleCrash.mm in Sources */,
- 2943BE86161DFEB800999E3D /* UserContentTest.mm in Sources */,
- 1A7BFC0C171A0BDB00BC5F64 /* WillSendSubmitEvent.mm in Sources */,
- BC22D31514DC689800FFB1DD /* UserMessage.cpp in Sources */,
- BC55F5F914AD78EE00484BE1 /* Vector.cpp in Sources */,
- BC90964C125561BF00083756 /* VectorBasic.cpp in Sources */,
- 37200B9213A16230007A4FAD /* VectorReverse.cpp in Sources */,
- 290A9BB71735DE8A00D71BBC /* CloseNewWindowInNavigationPolicyDelegate.mm in Sources */,
- FE217ECD1640A54A0052988B /* VMInspector.cpp in Sources */,
- 520BCF4D141EB09E00937EA8 /* WebArchive.cpp in Sources */,
- 0F17BBD615AF6C4D007AB753 /* WebCoreStatisticsWithNoWebProcess.cpp in Sources */,
- 290F4278172A232C00939FF0 /* CustomProtocolsSyncXHRTest.mm in Sources */,
- C08587BF13FE956C001EF4E5 /* WebKitAgnosticTest.mm in Sources */,
- 51FBBB4D1513D4E900822738 /* WebViewCanPasteURL.mm in Sources */,
- 37E38C34169B7D010084C28C /* WebViewDidRemoveFrameFromHierarchy.mm in Sources */,
- 76E182DA1547550100F1FADD /* WillSendSubmitEvent.cpp in Sources */,
- A5E2027315B2181900C13E14 /* WindowlessWebViewWithMedia.mm in Sources */,
- F6B7BE9417469209008A3445 /* DidAssociateFormControls.cpp in Sources */,
- BC3C4C7F14587AA60025FB62 /* WKBrowsingContextGroupTest.mm in Sources */,
- BC3C4C7214575B6A0025FB62 /* WKBrowsingContextLoadDelegateTest.mm in Sources */,
- BC901E241492ADCE0074A667 /* WKConnection.cpp in Sources */,
- 51E93017156B13E1004C99DF /* WKPageGetScaleFactorNotZero.cpp in Sources */,
- BC7B61AA129A038700D174A4 /* WKPreferences.cpp in Sources */,
- BC90995E12567BC100083756 /* WKString.cpp in Sources */,
- BC9099941256ACF100083756 /* WKStringJSString.cpp in Sources */,
- 265AF55015D1E48A00B0CB4A /* WTFString.cpp in Sources */,
- 2E7765CD16C4D80A00BA2BB1 /* mainIOS.mm in Sources */,
- 2E7765CF16C4D81100BA2BB1 /* mainMac.mm in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BC57597D126E74AF006F0F12 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC246D9C132F1FF000B56D7C /* CanHandleRequest_Bundle.cpp in Sources */,
- BCB68042126FBFF100642A61 /* DocumentStartUserScriptAlertCrash_Bundle.cpp in Sources */,
- 51393E221523952D005F39C5 /* DOMWindowExtensionBasic_Bundle.cpp in Sources */,
- F6F49C6B15545CA70007F39D /* DOMWindowExtensionNoCache_Bundle.cpp in Sources */,
- C0C5D3C61459912900A802A6 /* GetBackingScaleFactor_Bundle.mm in Sources */,
- B55AD1D5179F3B3000AC1494 /* PreventImageLoadWithAutoResizing_Bundle.cpp in Sources */,
- F660AA1115A5F631003A1243 /* GetInjectedBundleInitializationUserDataCallback_Bundle.cpp in Sources */,
- 4BFDFFA71314776C0061F24B /* HitTestResultNodeHandle_Bundle.cpp in Sources */,
- BC575AB0126E83C8006F0F12 /* InjectedBundleBasic_Bundle.cpp in Sources */,
- BC575AA2126E7660006F0F12 /* InjectedBundleController.cpp in Sources */,
- 1AEDE22613E5E7E700E62FE8 /* InjectedBundleControllerMac.mm in Sources */,
- 378E64771632655E00B6C676 /* InjectedBundleFrameHitTest_Bundle.cpp in Sources */,
- 297234B7173AFAC700983601 /* CustomProtocolsInvalidScheme_Bundle.cpp in Sources */,
- F660AA1515A61ABF003A1243 /* InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp in Sources */,
- BC575A97126E74F1006F0F12 /* InjectedBundleMain.cpp in Sources */,
- 33DC89141419579F00747EF7 /* LoadCanceledNoServerRedirectCallback_Bundle.cpp in Sources */,
- 33BE5AF9137B5AAE00705813 /* MouseMoveAfterCrash_Bundle.cpp in Sources */,
- 93F1DB3414DA20870024C362 /* NewFirstVisuallyNonEmptyLayout_Bundle.cpp in Sources */,
- 93F1DB5714DB1B840024C362 /* NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp in Sources */,
- 93AF4ECE1506F064007FD57E /* NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp in Sources */,
- 93F7E86F14DC8E5C00C84A99 /* NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp in Sources */,
- 52E5CE4914D21EAB003B2BD8 /* ParentFrame_Bundle.cpp in Sources */,
- C54237F116B8957D00E638FC /* PasteboardNotifications_Bundle.cpp in Sources */,
- 7CFBCAE51743238F00B2BFCF /* WillLoad_Bundle.cpp in Sources */,
- BC575BD9126F58E2006F0F12 /* PlatformUtilities.cpp in Sources */,
- BC575BE0126F590D006F0F12 /* PlatformUtilitiesMac.mm in Sources */,
- F6B7BE9517469212008A3445 /* DidAssociateFormControls_Bundle.cpp in Sources */,
- C0BD669F131D3CFF00E18F2A /* ResponsivenessTimerDoesntFireEarly_Bundle.cpp in Sources */,
- 51FCF7A11534B2A000104491 /* ShouldGoToBackForwardListItem_Bundle.cpp in Sources */,
- BC22D31914DC68B900FFB1DD /* UserMessage_Bundle.cpp in Sources */,
- 520BCF4C141EB09E00937EA8 /* WebArchive_Bundle.cpp in Sources */,
- 76E182DD1547569100F1FADD /* WillSendSubmitEvent_Bundle.cpp in Sources */,
- BC901E331492AF390074A667 /* WKConnection_Bundle.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- BC575A96126E74E7006F0F12 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = BC57597F126E74AF006F0F12 /* InjectedBundleTestWebKitAPI */;
- targetProxy = BC575A95126E74E7006F0F12 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1DEB927508733DD40010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC90958012554CF900083756 /* TestWebKitAPI.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- 1DEB927608733DD40010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC90958012554CF900083756 /* TestWebKitAPI.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- 1DEB927908733DD40010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC90957F12554CF900083756 /* DebugRelease.xcconfig */;
- buildSettings = {
- DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)";
- GCC_OPTIMIZATION_LEVEL = 0;
- };
- name = Debug;
- };
- 1DEB927A08733DD40010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC90957F12554CF900083756 /* DebugRelease.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- BC575984126E74AF006F0F12 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC575AE2126E88B1006F0F12 /* InjectedBundle.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- BC575985126E74AF006F0F12 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC575AE2126E88B1006F0F12 /* InjectedBundle.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "TestWebKitAPI" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB927508733DD40010E9CD /* Debug */,
- 1DEB927608733DD40010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "TestWebKitAPI" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB927908733DD40010E9CD /* Debug */,
- 1DEB927A08733DD40010E9CD /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
- BC575986126E74AF006F0F12 /* Build configuration list for PBXNativeTarget "InjectedBundleTestWebKitAPI" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- BC575984126E74AF006F0F12 /* Debug */,
- BC575985126E74AF006F0F12 /* Release */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Release;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/Tools/TestWebKitAPI/Tests.pri b/Tools/TestWebKitAPI/Tests.pri
deleted file mode 100644
index 15e81c094..000000000
--- a/Tools/TestWebKitAPI/Tests.pri
+++ /dev/null
@@ -1,3 +0,0 @@
-TEMPLATE = subdirs
-
-SUBDIRS += Tests/WTF Tests/JavaScriptCore Tests/WebKit2
diff --git a/Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm b/Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm
deleted file mode 100644
index 461cd75bd..000000000
--- a/Tools/TestWebKitAPI/Tests/CustomProtocolsSyncXHRTest.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "JavaScriptTest.h"
-#import "Test.h"
-
-#import "PlatformUtilities.h"
-#import "TestBrowsingContextLoadDelegate.h"
-#import "TestProtocol.h"
-#import <WebKit2/WKBrowsingContextGroupPrivate.h>
-#import <WebKit2/WKPreferencesPrivate.h>
-#import <WebKit2/WKRetainPtr.h>
-#import <WebKit2/WKString.h>
-#import <WebKit2/WKViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-static bool testFinished = false;
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2CustomProtocolsTest, SyncXHR)
-{
- [NSURLProtocol registerClass:[TestProtocol class]];
- [WKBrowsingContextController registerSchemeForCustomProtocol:[TestProtocol scheme]];
-
- RetainPtr<WKProcessGroup> processGroup = adoptNS([[WKProcessGroup alloc] init]);
- RetainPtr<WKBrowsingContextGroup> browsingContextGroup = adoptNS([[WKBrowsingContextGroup alloc] initWithIdentifier:@"TestIdentifier"]);
-
- // Allow file URLs to load non-file resources
- WKRetainPtr<WKPreferencesRef> preferences(AdoptWK, WKPreferencesCreate());
- WKPreferencesSetUniversalAccessFromFileURLsAllowed(preferences.get(), true);
- WKPageGroupSetPreferences(browsingContextGroup.get()._pageGroupRef, preferences.get());
-
- RetainPtr<WKView> wkView = adoptNS([[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup.get() browsingContextGroup:browsingContextGroup.get()]);
- RetainPtr<TestBrowsingContextLoadDelegate> delegate = adoptNS([[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- EXPECT_JS_EQ(wkView.get().pageRef, "window._testResult", "PASS");
- testFinished = true;
- }]);
- wkView.get().browsingContextController.loadDelegate = delegate.get();
-
- WKPageLoadURL(wkView.get().pageRef, Util::createURLForResource("custom-protocol-sync-xhr", "html"));
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/JavaScriptCore/JavaScriptCore.pro b/Tools/TestWebKitAPI/Tests/JavaScriptCore/JavaScriptCore.pro
deleted file mode 100644
index 9d44fad0e..000000000
--- a/Tools/TestWebKitAPI/Tests/JavaScriptCore/JavaScriptCore.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-TEMPLATE = app
-TARGET = tst_jsc
-
-SOURCES += *.cpp
-
-include(../../TestWebKitAPI.pri)
-
-DEFINES += APITEST_SOURCE_DIR=\\\"$$PWD\\\"
diff --git a/Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp b/Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp
deleted file mode 100644
index b1c1bacf3..000000000
--- a/Tools/TestWebKitAPI/Tests/JavaScriptCore/VMInspector.cpp
+++ /dev/null
@@ -1,689 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 <interpreter/VMInspector.h>
-#include <stdarg.h>
-#include <stdio.h>
-
-using namespace JSC;
-
-// There's not much we can test for the VMInspector::printf() case except to
-// make sure it does not crash. Unfortunately, we also don't want all the
-// test strings crowding out stdout. So, we forego the printf tests.
-// NOTE that the most interesting part of VMInspector::printf() is the
-// formatting functionality, and it is are already being tested by the
-// fprintf() and sprintf() cases.
-
-
-// The VMInspector::fprintf() test works by printing the string to a temp file,
-// and then reading the file content back into a buffer, which we, in turn,
-// compare against the expected string.
-
-TEST(JSC, VMInspectorFprintf)
-{
-#if ENABLE(VMINSPECTOR)
- char actual[1024];
- char expected[1024];
- const char* format;
- const char* expectedLiteral;
- FILE* file;
- const char* filename = "/tmp/VMInspectorFprintfTest.txt";
- size_t size;
-
-#define OPEN_FILE(file) \
- do { \
- file = fopen(filename, "w"); \
- } while (false)
-
-#define READ_AND_CLOSE_FILE(file, actual) \
- do { \
- fclose(file); \
- file = fopen(filename, "r"); \
- fseek(file, 0, SEEK_END); \
- size = ftell(file); \
- rewind(file); \
- fread(actual, 1, size, file); \
- actual[size] = '\0'; \
- fclose(file); \
- } while (false)
-
- // Testing standard default format specifiers:
- // Note: should work just like sprintf. So, we just compare against that.
- memset(actual, 'z', sizeof(actual));
- // The compiler warning flags are configured to expect a literal string for
- // ::sprintf below. So, use a #define for this one case to keep the
- // compiler happy.
-#undef LITERAL_FORMAT
-#define LITERAL_FORMAT "'%%%%' ==> '%%'\n"
-
- OPEN_FILE(file);
- VMInspector::fprintf(file, LITERAL_FORMAT);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, LITERAL_FORMAT);
-
-#undef LITERAL_FORMAT
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%c', 'x' ==> '%c'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 'x');
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*c', 8, 'x' ==> '%*c'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 8, 'x');
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 8, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%s', \"hello world\" ==> '%s'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, "hello world");
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello world\" ==> '%*s'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 8, "hello world");
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 8, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello\" ==> '%*s'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 8, "hello");
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 8, "hello");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%d', 987654321 ==> '%d'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 987654321);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 987654321);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 4276543210u ==> '%u'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 4276543210u);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 4276543210u);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 0xffffffff ==> '%u'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 0xffffffff);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%x', 0xffffffff ==> '%x'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 0xffffffff);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%p', (void*)0xabcdbabe ==> '%p'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, (void*)0xabcdbabe);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, (void*)0xabcdbabe);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%lu', 1234567890987654321ul ==> '%lu'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 1234567890987654321ul);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 1234567890987654321ul);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%f', 1234.567 ==> '%f'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 1234.567);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%.2f', 1234.567 ==> '%.2f'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 1234.567);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%10.2f', 1234.567 ==> '%10.2f'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 1234.567);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%010.2f', 1234.567 ==> '%010.2f'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 1234.567);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- // Bad / weird formats:
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4', 987654321 ==> '%5.4'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 987654321);
- READ_AND_CLOSE_FILE(file, actual);
- expectedLiteral = "'%5.4', 987654321 ==> 'ERROR @ \"%5.4' \"\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4' '%%d', 987654321, 4 ==> '%5.4' '%d'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 987654321, 4);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 987654321, 4);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%w' '%%d', 987654321, 6 ==> '%w' '%d'\n";
- OPEN_FILE(file);
- VMInspector::fprintf(file, format, 987654321, 6);
- READ_AND_CLOSE_FILE(file, actual);
- ::sprintf(expected, format, 987654321, 6);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
-
- // Testing the %b extension:
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%b', 0 ==> '%b'\n", 0);
- READ_AND_CLOSE_FILE(file, actual);
- ASSERT_EQ(strcmp(actual, "'%b', 0 ==> 'FALSE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%b', 1 ==> '%b'\n", 1);
- READ_AND_CLOSE_FILE(file, actual);
- ASSERT_EQ(strcmp(actual, "'%b', 1 ==> 'TRUE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%b', -123456789 ==> '%b'\n", -123456789);
- READ_AND_CLOSE_FILE(file, actual);
- ASSERT_EQ(strcmp(actual, "'%b', -123456789 ==> 'TRUE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%b', 123456789 ==> '%b'\n", 123456789);
- READ_AND_CLOSE_FILE(file, actual);
- ASSERT_EQ(strcmp(actual, "'%b', 123456789 ==> 'TRUE'\n"), 0);
-
-
- // Testing the %J<x> extensions:
- String str1("Test WTF String");
- String str2("");
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%Js' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- READ_AND_CLOSE_FILE(file, actual);
- expectedLiteral = "'%Js' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'Test WTF String' is NOT EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%Js' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- READ_AND_CLOSE_FILE(file, actual);
- expectedLiteral = "'%Js' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '' is EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%J+s' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- READ_AND_CLOSE_FILE(file, actual);
- expectedLiteral = "'%J+s' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"Test WTF String\"' is NOT EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- OPEN_FILE(file);
- VMInspector::fprintf(file, "'%%J+s' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- READ_AND_CLOSE_FILE(file, actual);
- expectedLiteral = "'%J+s' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"\"' is EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
-#undef OPEN_FILE
-#undef READ_AND_CLOSE_FILE
-
-#endif
-}
-
-
-TEST(JSC, VMInspectorSprintf)
-{
-#if ENABLE(VMINSPECTOR)
- char actual[1024];
- char expected[1024];
- const char* format;
- const char* expectedLiteral;
-
- // Testing standard default format specifiers:
- // Note: should work just like sprintf. So, we just compare against that.
- memset(actual, 'z', sizeof(actual));
- // The compiler warning flags are configured to expect a literal string for
- // ::sprintf below. So, use a #define for this one case to keep the
- // compiler happy.
-#undef LITERAL_FORMAT
-#define LITERAL_FORMAT "'%%%%' ==> '%%'\n"
- VMInspector::sprintf(actual, LITERAL_FORMAT);
- ::sprintf(expected, LITERAL_FORMAT);
-#undef LITERAL_FORMAT
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%c', 'x' ==> '%c'\n";
- VMInspector::sprintf(actual, format, 'x');
- ::sprintf(expected, format, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*c', 8, 'x' ==> '%*c'\n";
- VMInspector::sprintf(actual, format, 8, 'x');
- ::sprintf(expected, format, 8, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%s', \"hello world\" ==> '%s'\n";
- VMInspector::sprintf(actual, format, "hello world");
- ::sprintf(expected, format, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello world\" ==> '%*s'\n";
- VMInspector::sprintf(actual, format, 8, "hello world");
- ::sprintf(expected, format, 8, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello\" ==> '%*s'\n";
- VMInspector::sprintf(actual, format, 8, "hello");
- ::sprintf(expected, format, 8, "hello");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%d', 987654321 ==> '%d'\n";
- VMInspector::sprintf(actual, format, 987654321);
- ::sprintf(expected, format, 987654321);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 4276543210u ==> '%u'\n";
- VMInspector::sprintf(actual, format, 4276543210u);
- ::sprintf(expected, format, 4276543210u);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 0xffffffff ==> '%u'\n";
- VMInspector::sprintf(actual, format, 0xffffffff);
- ::sprintf(expected, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%x', 0xffffffff ==> '%x'\n";
- VMInspector::sprintf(actual, format, 0xffffffff);
- ::sprintf(expected, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%p', (void*)0xabcdbabe ==> '%p'\n";
- VMInspector::sprintf(actual, format, (void*)0xabcdbabe);
- ::sprintf(expected, format, (void*)0xabcdbabe);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%lu', 1234567890987654321ul ==> '%lu'\n";
- VMInspector::sprintf(actual, format, 1234567890987654321ul);
- ::sprintf(expected, format, 1234567890987654321ul);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%f', 1234.567 ==> '%f'\n";
- VMInspector::sprintf(actual, format, 1234.567);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%.2f', 1234.567 ==> '%.2f'\n";
- VMInspector::sprintf(actual, format, 1234.567);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%10.2f', 1234.567 ==> '%10.2f'\n";
- VMInspector::sprintf(actual, format, 1234.567);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%010.2f', 1234.567 ==> '%010.2f'\n";
- VMInspector::sprintf(actual, format, 1234.567);
- ::sprintf(expected, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- // Bad / weird formats:
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4', 987654321 ==> '%5.4'\n";
- VMInspector::sprintf(actual, format, 987654321);
- expectedLiteral = "'%5.4', 987654321 ==> 'ERROR @ \"%5.4' \"\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4' '%%d', 987654321, 4 ==> '%5.4' '%d'\n";
- VMInspector::sprintf(actual, format, 987654321, 4);
- ::sprintf(expected, format, 987654321, 4);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%w' '%%d', 987654321, 6 ==> '%w' '%d'\n";
- VMInspector::sprintf(actual, format, 987654321, 6);
- ::sprintf(expected, format, 987654321, 6);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
-
- // Testing the %b extension:
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%b', 0 ==> '%b'\n", 0);
- ASSERT_EQ(strcmp(actual, "'%b', 0 ==> 'FALSE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%b', 1 ==> '%b'\n", 1);
- ASSERT_EQ(strcmp(actual, "'%b', 1 ==> 'TRUE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%b', -123456789 ==> '%b'\n", -123456789);
- ASSERT_EQ(strcmp(actual, "'%b', -123456789 ==> 'TRUE'\n"), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%b', 123456789 ==> '%b'\n", 123456789);
- ASSERT_EQ(strcmp(actual, "'%b', 123456789 ==> 'TRUE'\n"), 0);
-
-
- // Testing the %J<x> extensions:
- String str1("Test WTF String");
- String str2("");
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%Js' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%Js' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'Test WTF String' is NOT EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%Js' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%Js' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '' is EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%J+s' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%J+s' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"Test WTF String\"' is NOT EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::sprintf(actual, "'%%J+s' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%J+s' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"\"' is EMPTY\n";
- ASSERT_EQ(strcmp(actual, expectedLiteral), 0);
-#endif
-}
-
-
-TEST(JSC, VMInspectorSnprintf)
-{
-#if ENABLE(VMINSPECTOR)
- char actual[1024];
- char expected[1024];
- const char* format;
- const char* expectedLiteral;
-
- size_t size = 1;
- while (size <= 100) {
-
- // Testing standard default format specifiers:
- // Note: should work just like snprintf. So, we just compare against that.
- memset(actual, 'z', sizeof(actual));
- // The compiler warning flags are configured to expect a literal string for
- // ::snprintf below. So, use a #define for this one case to keep the
- // compiler happy.
-#undef LITERAL_FORMAT
-#define LITERAL_FORMAT "'%%%%' ==> '%%'\n"
- VMInspector::snprintf(actual, size, LITERAL_FORMAT);
- ::snprintf(expected, size, LITERAL_FORMAT);
-#undef LITERAL_FORMAT
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%c', 'x' ==> '%c'\n";
- VMInspector::snprintf(actual, size, format, 'x');
- ::snprintf(expected, size, format, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*c', 8, 'x' ==> '%*c'\n";
- VMInspector::snprintf(actual, size, format, 8, 'x');
- ::snprintf(expected, size, format, 8, 'x');
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%s', \"hello world\" ==> '%s'\n";
- VMInspector::snprintf(actual, size, format, "hello world");
- ::snprintf(expected, size, format, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello world\" ==> '%*s'\n";
- VMInspector::snprintf(actual, size, format, 8, "hello world");
- ::snprintf(expected, size, format, 8, "hello world");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%*s', 8, \"hello\" ==> '%*s'\n";
- VMInspector::snprintf(actual, size, format, 8, "hello");
- ::snprintf(expected, size, format, 8, "hello");
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%d', 987654321 ==> '%d'\n";
- VMInspector::snprintf(actual, size, format, 987654321);
- ::snprintf(expected, size, format, 987654321);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 4276543210u ==> '%u'\n";
- VMInspector::snprintf(actual, size, format, 4276543210u);
- ::snprintf(expected, size, format, 4276543210u);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%u', 0xffffffff ==> '%u'\n";
- VMInspector::snprintf(actual, size, format, 0xffffffff);
- ::snprintf(expected, size, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%x', 0xffffffff ==> '%x'\n";
- VMInspector::snprintf(actual, size, format, 0xffffffff);
- ::snprintf(expected, size, format, 0xffffffff);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%p', (void*)0xabcdbabe ==> '%p'\n";
- VMInspector::snprintf(actual, size, format, (void*)0xabcdbabe);
- ::snprintf(expected, size, format, (void*)0xabcdbabe);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%lu', 1234567890987654321ul ==> '%lu'\n";
- VMInspector::snprintf(actual, size, format, 1234567890987654321ul);
- ::snprintf(expected, size, format, 1234567890987654321ul);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%f', 1234.567 ==> '%f'\n";
- VMInspector::snprintf(actual, size, format, 1234.567);
- ::snprintf(expected, size, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%.2f', 1234.567 ==> '%.2f'\n";
- VMInspector::snprintf(actual, size, format, 1234.567);
- ::snprintf(expected, size, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%10.2f', 1234.567 ==> '%10.2f'\n";
- VMInspector::snprintf(actual, size, format, 1234.567);
- ::snprintf(expected, size, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%010.2f', 1234.567 ==> '%010.2f'\n";
- VMInspector::snprintf(actual, size, format, 1234.567);
- ::snprintf(expected, size, format, 1234.567);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- // Bad / weird formats:
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4', 987654321 ==> '%5.4'\n";
- VMInspector::snprintf(actual, size, format, 987654321);
- expectedLiteral = "'%5.4', 987654321 ==> 'ERROR @ \"%5.4' \"\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%5.4' '%%d', 987654321, 4 ==> '%5.4' '%d'\n";
- VMInspector::snprintf(actual, size, format, 987654321, 4);
- ::snprintf(expected, size, format, 987654321, 4);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- format = "'%%w' '%%d', 987654321, 6 ==> '%w' '%d'\n";
- VMInspector::snprintf(actual, size, format, 987654321, 6);
- ::snprintf(expected, size, format, 987654321, 6);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
-
- // Testing the %b extension:
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%b', 0 ==> '%b'\n", 0);
- expectedLiteral = "'%b', 0 ==> 'FALSE'\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%b', 1 ==> '%b'\n", 1);
- expectedLiteral = "'%b', 1 ==> 'TRUE'\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%b', -123456789 ==> '%b'\n", -123456789);
- expectedLiteral = "'%b', -123456789 ==> 'TRUE'\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%b', 123456789 ==> '%b'\n", 123456789);
- expectedLiteral = "'%b', 123456789 ==> 'TRUE'\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- // Testing the %J<x> extensions:
- String str1("Test WTF String");
- String str2("");
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%Js' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%Js' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'Test WTF String' is NOT EMPTY\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%Js' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%Js' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%Js' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '' is EMPTY\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%J+s' is %%s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str1, str1.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%J+s' is %s, &str1, str1.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"Test WTF String\"' is NOT EMPTY\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- memset(actual, 'z', sizeof(actual));
- VMInspector::snprintf(actual, size, "'%%J+s' is %%s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> '%J+s' is %s\n",
- &str2, str2.isEmpty() ? "EMPTY" : "NOT EMPTY");
- expectedLiteral = "'%J+s' is %s, &str2, str2.isEmpty()?\"EMPTY\":\"NOT EMPTY\" ==> 'WTF::String \"\"' is EMPTY\n";
- ::snprintf(expected, size, "%s", expectedLiteral);
- ASSERT_EQ(strcmp(actual, expected), 0);
-
- // Test lower sizes more densely, and then space out to larger sizes.
- // We're doing this because the lower sizes might be interesting, but
- // for expediency, we don't want to test at this fine grain resolution
- // for all possible sizes. Hence, we accelerate the rate once we're
- // pass the interesting small sizes.
- if (size <= 5)
- size++;
- else
- size += 4;
- }
-#endif
-}
diff --git a/Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm b/Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm
deleted file mode 100644
index 94bb7ef97..000000000
--- a/Tools/TestWebKitAPI/Tests/TestWebKitAPI/mac/InstanceMethodSwizzler.mm
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "InstanceMethodSwizzler.h"
-
-#import <wtf/RetainPtr.h>
-
-@interface SimpleObject : NSObject
-- (void)setValue:(int*)value;
-@end
-
-@implementation SimpleObject
-- (void)setValue:(int*)value
-{
- *value = 1;
-}
-@end
-
-namespace TestWebKitAPI {
-
-static void setValue2(id self, SEL _cmd, int* value)
-{
- *value = 2;
-}
-
-static void setValue3(id self, SEL _cmd, int* value)
-{
- *value = 3;
-}
-
-TEST(TestWebKitAPI, InstanceMethodSwizzler)
-{
- RetainPtr<SimpleObject> object = adoptNS([[SimpleObject alloc] init]);
-
- int value = 0;
-
- [object.get() setValue:&value];
- EXPECT_EQ(value, 1);
-
- {
- InstanceMethodSwizzler swizzle([object.get() class], @selector(setValue:), reinterpret_cast<IMP>(setValue2));
-
- [object.get() setValue:&value];
- EXPECT_EQ(value, 2);
-
- {
- InstanceMethodSwizzler swizzle([object.get() class], @selector(setValue:), reinterpret_cast<IMP>(setValue3));
-
- [object.get() setValue:&value];
- EXPECT_EQ(value, 3);
- }
-
- [object.get() setValue:&value];
- EXPECT_EQ(value, 2);
- }
-
- [object.get() setValue:&value];
- EXPECT_EQ(value, 1);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp b/Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp
index bddf22c23..de962ec42 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/AtomicString.cpp
@@ -35,14 +35,11 @@ TEST(WTF, AtomicStringCreationFromLiteral)
ASSERT_EQ(strlen("Template Literal"), stringWithTemplate.length());
ASSERT_TRUE(stringWithTemplate == "Template Literal");
ASSERT_TRUE(stringWithTemplate.string().is8Bit());
- ASSERT_TRUE(stringWithTemplate.impl()->hasTerminatingNullCharacter());
const char* programmaticStringData = "Explicit Size Literal";
AtomicString programmaticString(programmaticStringData, strlen(programmaticStringData), AtomicString::ConstructFromLiteral);
ASSERT_EQ(strlen(programmaticStringData), programmaticString.length());
- ASSERT_TRUE(programmaticStringData == programmaticStringData);
ASSERT_TRUE(programmaticString.string().is8Bit());
- ASSERT_TRUE(programmaticString.impl()->hasTerminatingNullCharacter());
ASSERT_EQ(programmaticStringData, reinterpret_cast<const char*>(programmaticString.string().characters8()));
}
@@ -56,4 +53,12 @@ TEST(WTF, AtomicStringCreationFromLiteralUniqueness)
ASSERT_EQ(string1.impl(), string3.impl());
}
+TEST(WTF, AtomicStringExistingHash)
+{
+ AtomicString string1("Template Literal", AtomicString::ConstructFromLiteral);
+ ASSERT_EQ(string1.existingHash(), string1.impl()->existingHash());
+ AtomicString string2;
+ ASSERT_EQ(string2.existingHash(), 0u);
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/BloomFilter.cpp b/Tools/TestWebKitAPI/Tests/WTF/BloomFilter.cpp
new file mode 100644
index 000000000..802165211
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/BloomFilter.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 <wtf/BloomFilter.h>
+#include <wtf/RandomNumber.h>
+#include <wtf/SHA1.h>
+
+namespace TestWebKitAPI {
+
+static Vector<unsigned> generateRandomHashes(size_t hashCount)
+{
+ Vector<unsigned> hashes;
+ for (unsigned i = 0; i < hashCount; ++i)
+ hashes.append(static_cast<unsigned>(randomNumber() * std::numeric_limits<unsigned>::max()));
+ return hashes;
+}
+
+static Vector<SHA1::Digest> generateRandomDigests(size_t hashCount)
+{
+ Vector<SHA1::Digest> hashes;
+ SHA1 sha1;
+ for (unsigned i = 0; i < hashCount; ++i) {
+ double random = randomNumber();
+ sha1.addBytes(reinterpret_cast<uint8_t*>(&random), sizeof(double));
+ SHA1::Digest digest;
+ sha1.computeHash(digest);
+ hashes.append(digest);
+ }
+ return hashes;
+}
+
+TEST(WTF_BloomFilter, Basic)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ BloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ auto moreHashes = generateRandomHashes(hashCount);
+ unsigned mayContainCount = 0;
+ for (auto hash : moreHashes)
+ mayContainCount += filter.mayContain(hash) ? 1 : 0;
+ // False positive rate is ~0.09% so this should always be true.
+ EXPECT_TRUE(mayContainCount < hashCount / 10);
+
+ for (auto hash : moreHashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+ for (auto hash : moreHashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+}
+
+TEST(WTF_BloomFilter, BasicDigest)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomDigests(hashCount);
+
+ BloomFilter<20> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ auto moreHashes = generateRandomDigests(hashCount);
+ unsigned mayContainCount = 0;
+ for (auto hash : moreHashes)
+ mayContainCount += filter.mayContain(hash) ? 1 : 0;
+ // False positive rate is ~0.000004% so this should always be true.
+ EXPECT_TRUE(mayContainCount < hashCount / 10);
+
+ for (auto hash : moreHashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+ for (auto hash : moreHashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+}
+
+TEST(WTF_BloomFilter, BasicCounting)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ CountingBloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ for (auto hash : hashes)
+ filter.remove(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ auto moreHashes = generateRandomHashes(hashCount);
+ unsigned mayContainCount = 0;
+ for (auto hash : moreHashes)
+ mayContainCount += filter.mayContain(hash) ? 1 : 0;
+ // False positive rate is ~0.09% so this should always be true.
+ EXPECT_TRUE(mayContainCount < hashCount / 10);
+
+ for (auto hash : moreHashes)
+ filter.add(hash);
+ for (auto hash : hashes)
+ filter.remove(hash);
+
+ for (auto hash : moreHashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ for (auto hash : moreHashes)
+ filter.remove(hash);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(!filter.mayContain(hash));
+ for (auto hash : moreHashes)
+ EXPECT_TRUE(!filter.mayContain(hash));
+}
+
+TEST(WTF_BloomFilter, Clear)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ BloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ filter.clear();
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(!filter.mayContain(hash));
+}
+
+TEST(WTF_BloomFilter, ClearCounting)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ CountingBloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ filter.clear();
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(!filter.mayContain(hash));
+}
+
+TEST(WTF_BloomFilter, CountingOverflow)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ CountingBloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ for (unsigned i = 0; i < filter.maximumCount() + 100; ++i)
+ filter.add(hashes[0]);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+
+ for (auto hash : hashes)
+ filter.remove(hash);
+
+ unsigned mayContainCount = 0;
+ for (auto hash : hashes) {
+ if (hash == hashes[0])
+ EXPECT_TRUE(filter.mayContain(hash));
+ else
+ mayContainCount += filter.mayContain(hash) ? 1 : 0;
+ }
+ // False positive rate should be very low.
+ EXPECT_TRUE(mayContainCount < hashCount / 100);
+
+ for (unsigned i = 0; i < filter.maximumCount() + 100; ++i)
+ filter.remove(hashes[0]);
+
+ // The bucket has overflowed and is stuck.
+ EXPECT_TRUE(filter.mayContain(hashes[0]));
+}
+
+TEST(WTF_BloomFilter, Combine)
+{
+ const unsigned hashCount = 1000;
+ auto hashes = generateRandomHashes(hashCount);
+
+ BloomFilter<16> filter;
+ for (auto hash : hashes)
+ filter.add(hash);
+
+ auto moreHashes = generateRandomHashes(hashCount);
+
+ BloomFilter<16> anotherFilter;
+ for (auto hash : moreHashes)
+ anotherFilter.add(hash);
+
+ filter.add(anotherFilter);
+
+ for (auto hash : hashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+ for (auto hash : moreHashes)
+ EXPECT_TRUE(filter.mayContain(hash));
+}
+
+}
diff --git a/Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp b/Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp
index 77b8ff458..d6b548316 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/CheckedArithmeticOperations.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011, 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -28,117 +28,397 @@
namespace TestWebKitAPI {
-#define CheckedArithmeticTest(type, coerceLiteral, MixedSignednessTest) \
+class OverflowCrashLogger {
+protected:
+ void overflowed()
+ {
+ m_overflowCount++;
+ }
+
+ void clearOverflow()
+ {
+ m_overflowCount = 0;
+ }
+
+ static void crash()
+ {
+ s_didCrash = true;
+ }
+
+public:
+ void reset()
+ {
+ m_overflowCount = 0;
+ s_didCrash = false;
+ }
+
+ bool hasOverflowed() const { return m_overflowCount > 0; }
+ int overflowCount() const { return m_overflowCount; }
+
+ bool didCrash() const { return s_didCrash; }
+
+private:
+ int m_overflowCount { 0 };
+ static bool s_didCrash;
+};
+
+bool OverflowCrashLogger::s_didCrash = false;
+
+template <typename type>
+static void resetOverflow(Checked<type, OverflowCrashLogger>& value)
+{
+ value.reset();
+ value = 100;
+ value *= std::numeric_limits<type>::max();
+}
+
+#define CheckedArithmeticTest(type, Coercer, MixedSignednessTester) \
TEST(WTF, Checked_##type) \
{ \
- Checked<type, RecordOverflow> value; \
- EXPECT_EQ(coerceLiteral(0), value.unsafeGet()); \
- EXPECT_EQ(std::numeric_limits<type>::max(), (value + std::numeric_limits<type>::max()).unsafeGet()); \
- EXPECT_EQ(std::numeric_limits<type>::max(), (std::numeric_limits<type>::max() + value).unsafeGet()); \
- EXPECT_EQ(std::numeric_limits<type>::min(), (value + std::numeric_limits<type>::min()).unsafeGet()); \
- EXPECT_EQ(std::numeric_limits<type>::min(), (std::numeric_limits<type>::min() + value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value * coerceLiteral(0)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (coerceLiteral(0) * value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value * value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value - coerceLiteral(0)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (coerceLiteral(0) - value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value - value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value++).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(1), (value--).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(1), (++value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (--value).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(10), (value += coerceLiteral(10)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(10), value.unsafeGet()); \
- EXPECT_EQ(coerceLiteral(100), (value *= coerceLiteral(10)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(100), value.unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value -= coerceLiteral(100)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), value.unsafeGet()); \
- value = 10; \
- EXPECT_EQ(coerceLiteral(10), value.unsafeGet()); \
- EXPECT_EQ(coerceLiteral(0), (value - coerceLiteral(10)).unsafeGet()); \
- EXPECT_EQ(coerceLiteral(10), value.unsafeGet()); \
- value = std::numeric_limits<type>::min(); \
- EXPECT_EQ(true, (Checked<type, RecordOverflow>(value - coerceLiteral(1))).hasOverflowed()); \
- EXPECT_EQ(true, !((value--).hasOverflowed())); \
- EXPECT_EQ(true, value.hasOverflowed()); \
- value = std::numeric_limits<type>::max(); \
- EXPECT_EQ(true, !value.hasOverflowed()); \
- EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + coerceLiteral(1))).hasOverflowed()); \
- EXPECT_EQ(true, !(value++).hasOverflowed()); \
- EXPECT_EQ(true, value.hasOverflowed()); \
- value = std::numeric_limits<type>::max(); \
- EXPECT_EQ(true, (value += coerceLiteral(1)).hasOverflowed()); \
- EXPECT_EQ(true, value.hasOverflowed()); \
- value = 10; \
- type _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(0)).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(0) * value).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value)); \
- value = 0; \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value)); \
- value = 1; \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value)); \
- _value = 0; \
- value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)0).safeGet(_value)); \
- _value = 0; \
- value = 1; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)1).safeGet(_value)); \
- _value = 0; \
- value = 2; \
- EXPECT_EQ(true, CheckedState::DidOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value)); \
- _value = 0; \
- EXPECT_EQ(true, CheckedState::DidOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)2).safeGet(_value)); \
- value = 10; \
- EXPECT_EQ(true, (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).hasOverflowed()); \
- MixedSignednessTest(EXPECT_EQ(coerceLiteral(0), (value + -10).unsafeGet())); \
- MixedSignednessTest(EXPECT_EQ(0U, (value - 10U).unsafeGet())); \
- MixedSignednessTest(EXPECT_EQ(coerceLiteral(0), (-10 + value).unsafeGet())); \
- MixedSignednessTest(EXPECT_EQ(0U, (10U - value).unsafeGet())); \
- value = std::numeric_limits<type>::min(); \
- MixedSignednessTest(EXPECT_EQ(true, (Checked<type, RecordOverflow>(value - 1)).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, !(value--).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
- value = std::numeric_limits<type>::max(); \
- MixedSignednessTest(EXPECT_EQ(true, !value.hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + 1)).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, !(value++).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
- value = std::numeric_limits<type>::max(); \
- MixedSignednessTest(EXPECT_EQ(true, (value += 1).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
- value = std::numeric_limits<type>::min(); \
- MixedSignednessTest(EXPECT_EQ(true, (value - 1U).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, !(value--).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
- value = std::numeric_limits<type>::max(); \
- MixedSignednessTest(EXPECT_EQ(true, !value.hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + 1U)).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, !(value++).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
- value = std::numeric_limits<type>::max(); \
- MixedSignednessTest(EXPECT_EQ(true, (value += 1U).hasOverflowed())); \
- MixedSignednessTest(EXPECT_EQ(true, value.hasOverflowed())); \
+ typedef Coercer<type> CoercerType; \
+ typedef MixedSignednessTester<type, CoercerType> MixedSignednessTesterType; \
+ CheckedArithmeticTester<type, CoercerType, MixedSignednessTesterType>::run(); \
}
+
+#define coerceLiteral(x) Coercer::coerce(x)
+
+template <typename type, typename Coercer, typename MixedSignednessTester>
+class CheckedArithmeticTester {
+public:
+ static void run()
+ {
+ Checked<type, RecordOverflow> value;
+ EXPECT_EQ(coerceLiteral(0), value.unsafeGet());
+ EXPECT_EQ(std::numeric_limits<type>::max(), (value + std::numeric_limits<type>::max()).unsafeGet());
+ EXPECT_EQ(std::numeric_limits<type>::max(), (std::numeric_limits<type>::max() + value).unsafeGet());
+ EXPECT_EQ(std::numeric_limits<type>::min(), (value + std::numeric_limits<type>::min()).unsafeGet());
+ EXPECT_EQ(std::numeric_limits<type>::min(), (std::numeric_limits<type>::min() + value).unsafeGet());
+
+ EXPECT_EQ(coerceLiteral(0), (value * coerceLiteral(0)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (coerceLiteral(0) * value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value * value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value - coerceLiteral(0)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (coerceLiteral(0) - value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value - value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value++).unsafeGet());
+ EXPECT_EQ(coerceLiteral(1), (value--).unsafeGet());
+ EXPECT_EQ(coerceLiteral(1), (++value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (--value).unsafeGet());
+ EXPECT_EQ(coerceLiteral(10), (value += coerceLiteral(10)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(10), value.unsafeGet());
+ EXPECT_EQ(coerceLiteral(100), (value *= coerceLiteral(10)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(100), value.unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value -= coerceLiteral(100)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), value.unsafeGet());
+ value = 10;
+ EXPECT_EQ(coerceLiteral(10), value.unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (value - coerceLiteral(10)).unsafeGet());
+ EXPECT_EQ(coerceLiteral(10), value.unsafeGet());
+
+ value = std::numeric_limits<type>::min();
+ EXPECT_EQ(true, (Checked<type, RecordOverflow>(value - coerceLiteral(1))).hasOverflowed());
+ EXPECT_EQ(true, !((value--).hasOverflowed()));
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, !value.hasOverflowed());
+ EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + coerceLiteral(1))).hasOverflowed());
+ EXPECT_EQ(true, !(value++).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, (value += coerceLiteral(1)).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+
+ value = 10;
+ type _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(0)).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(0) * value).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value));
+ value = 0;
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value));
+ value = 1;
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * value).safeGet(_value));
+ _value = 0;
+ value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)0).safeGet(_value));
+ _value = 0;
+ value = 1;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidNotOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)1).safeGet(_value));
+ _value = 0;
+ value = 2;
+ EXPECT_EQ(true, CheckedState::DidOverflow == (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).safeGet(_value));
+ _value = 0;
+ EXPECT_EQ(true, CheckedState::DidOverflow == (Checked<type, RecordOverflow>(std::numeric_limits<type>::max()) * (type)2).safeGet(_value));
+ value = 10;
+ EXPECT_EQ(true, (value * Checked<type, RecordOverflow>(std::numeric_limits<type>::max())).hasOverflowed());
+
+
+ Checked<type, OverflowCrashLogger> nvalue; // to hold a not overflowed value.
+ Checked<type, OverflowCrashLogger> ovalue; // to hold an overflowed value.
+ bool unused;
+
+ _value = 75;
+ type _largeValue = 100;
+ type _smallValue = 50;
+
+ value = _smallValue;
+ nvalue = _value;
+ ovalue = _value;
+
+ // Make sure the OverflowCrashLogger is working as expected.
+ EXPECT_EQ(false, (ovalue.hasOverflowed()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), ovalue.hasOverflowed()));
+ EXPECT_EQ(false, (resetOverflow(ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (unused = (ovalue == ovalue), ovalue.didCrash()));
+ EXPECT_EQ(false, (resetOverflow(ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator== that should not overflow nor crash.
+ EXPECT_EQ(true, (nvalue == nvalue));
+ EXPECT_EQ(true, (nvalue == Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(false, (nvalue == value));
+ EXPECT_EQ(true, (nvalue == _value));
+ EXPECT_EQ(false, (nvalue == Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(false, (nvalue == std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator!= that should not overflow nor crash.
+ EXPECT_EQ(false, (nvalue != nvalue));
+ EXPECT_EQ(false, (nvalue != Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(true, (nvalue != value));
+ EXPECT_EQ(false, (nvalue != _value));
+ EXPECT_EQ(true, (nvalue != Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(true, (nvalue != std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator< that should not overflow nor crash.
+ EXPECT_EQ(false, (nvalue < nvalue));
+ EXPECT_EQ(false, (nvalue < value));
+ EXPECT_EQ(true, (nvalue < Checked<type, OverflowCrashLogger>(_largeValue)));
+ EXPECT_EQ(false, (nvalue < Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(false, (nvalue < Checked<type, OverflowCrashLogger>(_smallValue)));
+ EXPECT_EQ(true, (nvalue < _largeValue));
+ EXPECT_EQ(false, (nvalue < _value));
+ EXPECT_EQ(false, (nvalue < _smallValue));
+ EXPECT_EQ(true, (nvalue < Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(true, (nvalue < std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator<= that should not overflow nor crash.
+ EXPECT_EQ(true, (nvalue <= nvalue));
+ EXPECT_EQ(false, (nvalue <= value));
+ EXPECT_EQ(true, (nvalue <= Checked<type, OverflowCrashLogger>(_largeValue)));
+ EXPECT_EQ(true, (nvalue <= Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(false, (nvalue <= Checked<type, OverflowCrashLogger>(_smallValue)));
+ EXPECT_EQ(true, (nvalue <= _largeValue));
+ EXPECT_EQ(true, (nvalue <= _value));
+ EXPECT_EQ(false, (nvalue <= _smallValue));
+ EXPECT_EQ(true, (nvalue <= Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(true, (nvalue <= std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator> that should not overflow nor crash.
+ EXPECT_EQ(false, (nvalue > nvalue));
+ EXPECT_EQ(true, (nvalue > value));
+ EXPECT_EQ(false, (nvalue > Checked<type, OverflowCrashLogger>(_largeValue)));
+ EXPECT_EQ(false, (nvalue > Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(true, (nvalue > Checked<type, OverflowCrashLogger>(_smallValue)));
+ EXPECT_EQ(false, (nvalue > _largeValue));
+ EXPECT_EQ(false, (nvalue > _value));
+ EXPECT_EQ(true, (nvalue > _smallValue));
+ EXPECT_EQ(false, (nvalue > Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(false, (nvalue > std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator>= that should not overflow nor crash.
+ EXPECT_EQ(true, (nvalue >= nvalue));
+ EXPECT_EQ(true, (nvalue >= value));
+ EXPECT_EQ(false, (nvalue >= Checked<type, OverflowCrashLogger>(_largeValue)));
+ EXPECT_EQ(true, (nvalue >= Checked<type, OverflowCrashLogger>(_value)));
+ EXPECT_EQ(true, (nvalue >= Checked<type, OverflowCrashLogger>(_smallValue)));
+ EXPECT_EQ(false, (nvalue >= _largeValue));
+ EXPECT_EQ(true, (nvalue >= _value));
+ EXPECT_EQ(true, (nvalue >= _smallValue));
+ EXPECT_EQ(false, (nvalue >= Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())));
+ EXPECT_EQ(false, (nvalue >= std::numeric_limits<type>::max()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+ EXPECT_EQ(false, nvalue.didCrash());
+
+ // Test operator== with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == _value * std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue == nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue == ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ // Test operator!= with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != _value * std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue != nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue != ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ // Test operator< with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < Checked<type, OverflowCrashLogger>(_largeValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < Checked<type, OverflowCrashLogger>(_smallValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < _largeValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < _smallValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue < nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue < ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ // Test operator<= with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= Checked<type, OverflowCrashLogger>(_largeValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= Checked<type, OverflowCrashLogger>(_smallValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= _largeValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= _smallValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue <= nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue <= ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ // Test operator> with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > Checked<type, OverflowCrashLogger>(_largeValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > Checked<type, OverflowCrashLogger>(_smallValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > _largeValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > _smallValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue > nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue > ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ // Test operator>= with an overflowed value.
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= ovalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= Checked<type, OverflowCrashLogger>(_largeValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= Checked<type, OverflowCrashLogger>(_value)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= Checked<type, OverflowCrashLogger>(_smallValue)), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= _largeValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= _value), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= _smallValue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= Checked<type, OverflowCrashLogger>(std::numeric_limits<type>::max())), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= std::numeric_limits<type>::max()), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (ovalue >= nvalue), ovalue.didCrash()));
+ EXPECT_EQ(true, (resetOverflow(ovalue), unused = (nvalue >= ovalue), ovalue.didCrash()));
+
+ EXPECT_EQ(false, nvalue.hasOverflowed());
+
+ MixedSignednessTester::run();
+ }
+};
+
+template <typename type, typename Coercer>
+class AllowMixedSignednessTest {
+public:
+ static void run()
+ {
+ Checked<type, RecordOverflow> value;
+ value = 10;
+
+ EXPECT_EQ(coerceLiteral(0), (value + -10).unsafeGet());
+ EXPECT_EQ(0U, (value - 10U).unsafeGet());
+ EXPECT_EQ(coerceLiteral(0), (-10 + value).unsafeGet());
+ EXPECT_EQ(0U, (10U - value).unsafeGet());
+ value = std::numeric_limits<type>::min();
+ EXPECT_EQ(true, (Checked<type, RecordOverflow>(value - 1)).hasOverflowed());
+ EXPECT_EQ(true, !(value--).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, !value.hasOverflowed());
+ EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + 1)).hasOverflowed());
+ EXPECT_EQ(true, !(value++).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, (value += 1).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::min();
+ EXPECT_EQ(true, (value - 1U).hasOverflowed());
+ EXPECT_EQ(true, !(value--).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, !value.hasOverflowed());
+ EXPECT_EQ(true, (Checked<type, RecordOverflow>(value + 1U)).hasOverflowed());
+ EXPECT_EQ(true, !(value++).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ value = std::numeric_limits<type>::max();
+ EXPECT_EQ(true, (value += 1U).hasOverflowed());
+ EXPECT_EQ(true, value.hasOverflowed());
+ }
+};
+
+template <typename type, typename Coercer>
+class IgnoreMixedSignednessTest {
+public:
+ static void run() { }
+};
+
+template <typename type> class CoerceLiteralToUnsigned {
+public:
+ static unsigned coerce(type x) { return static_cast<unsigned>(x); }
+};
+
+template <typename type> class CoerceLiteralNop {
+public:
+ static type coerce(type x) { return x; }
+};
-#define CoerceLiteralToUnsigned(x) x##U
-#define CoerceLiteralNop(x) x
-#define AllowMixedSignednessTest(x) x
-#define IgnoreMixedSignednessTest(x)
CheckedArithmeticTest(int8_t, CoerceLiteralNop, IgnoreMixedSignednessTest)
CheckedArithmeticTest(int16_t, CoerceLiteralNop, IgnoreMixedSignednessTest)
CheckedArithmeticTest(int32_t, CoerceLiteralNop, AllowMixedSignednessTest)
@@ -146,4 +426,62 @@ CheckedArithmeticTest(uint32_t, CoerceLiteralToUnsigned, AllowMixedSignednessTes
CheckedArithmeticTest(int64_t, CoerceLiteralNop, IgnoreMixedSignednessTest)
CheckedArithmeticTest(uint64_t, CoerceLiteralToUnsigned, IgnoreMixedSignednessTest)
+TEST(CheckedArithmeticTest, IsInBounds)
+{
+ // bigger precision, signed, signed
+ EXPECT_TRUE(WTF::isInBounds<int32_t>(std::numeric_limits<int16_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<int32_t>(std::numeric_limits<int16_t>::min()));
+
+ // bigger precision, unsigned, signed
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>(std::numeric_limits<int32_t>::max()));
+ EXPECT_FALSE(WTF::isInBounds<uint32_t>(std::numeric_limits<int16_t>::min()));
+
+ EXPECT_FALSE(WTF::isInBounds<uint32_t>((int32_t)-1));
+ EXPECT_FALSE(WTF::isInBounds<uint16_t>((int32_t)-1));
+ EXPECT_FALSE(WTF::isInBounds<unsigned long>((int)-1));
+
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>((int32_t)1));
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>((int16_t)1));
+ EXPECT_TRUE(WTF::isInBounds<unsigned>((int)1));
+
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>((int32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<uint16_t>((int32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>((int16_t)0));
+ EXPECT_TRUE(WTF::isInBounds<unsigned>((int)0));
+
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>(std::numeric_limits<int32_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>(std::numeric_limits<int16_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<unsigned>(std::numeric_limits<int>::max()));
+
+ // bigger precision, signed, unsigned
+ EXPECT_TRUE(WTF::isInBounds<int32_t>(std::numeric_limits<uint16_t>::max()));
+ EXPECT_FALSE(WTF::isInBounds<int32_t>(std::numeric_limits<uint32_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<int32_t>((uint32_t)0));
+
+ // bigger precision, unsigned, unsigned
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>(std::numeric_limits<uint16_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<uint32_t>(std::numeric_limits<uint16_t>::min()));
+
+ // lower precision, signed signed
+ EXPECT_FALSE(WTF::isInBounds<int16_t>(std::numeric_limits<int32_t>::max()));
+ EXPECT_FALSE(WTF::isInBounds<int16_t>(std::numeric_limits<int32_t>::min()));
+ EXPECT_TRUE(WTF::isInBounds<int16_t>((int32_t)-1));
+ EXPECT_TRUE(WTF::isInBounds<int16_t>((int32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<int16_t>((int32_t)1));
+ // lower precision, unsigned, signed
+ EXPECT_FALSE(WTF::isInBounds<uint16_t>(std::numeric_limits<int32_t>::max()));
+ EXPECT_FALSE(WTF::isInBounds<uint16_t>(std::numeric_limits<int32_t>::min()));
+ EXPECT_FALSE(WTF::isInBounds<uint16_t>((int32_t)-1));
+ EXPECT_TRUE(WTF::isInBounds<uint16_t>((int32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<uint16_t>((int32_t)1));
+ // lower precision, signed, unsigned
+ EXPECT_FALSE(WTF::isInBounds<int16_t>(std::numeric_limits<uint32_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<int16_t>((uint32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<int16_t>((uint32_t)1));
+ // lower precision, unsigned, unsigned
+ EXPECT_FALSE(WTF::isInBounds<uint16_t>(std::numeric_limits<uint32_t>::max()));
+ EXPECT_TRUE(WTF::isInBounds<uint16_t>((uint32_t)0));
+ EXPECT_TRUE(WTF::isInBounds<uint16_t>((uint32_t)1));
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Condition.cpp b/Tools/TestWebKitAPI/Tests/WTF/Condition.cpp
new file mode 100644
index 000000000..c450d8953
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/Condition.cpp
@@ -0,0 +1,257 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 <mutex>
+#include <thread>
+#include <wtf/Condition.h>
+#include <wtf/DataLog.h>
+#include <wtf/Deque.h>
+#include <wtf/Lock.h>
+#include <wtf/StringPrintStream.h>
+#include <wtf/Threading.h>
+#include <wtf/Vector.h>
+
+using namespace WTF;
+
+namespace TestWebKitAPI {
+
+namespace {
+
+const bool verbose = false;
+
+enum NotifyStyle {
+ AlwaysNotifyOne,
+ TacticallyNotifyAll
+};
+
+template<typename Functor>
+void wait(Condition& condition, std::unique_lock<Lock>& locker, const Functor& predicate, std::chrono::microseconds timeout)
+{
+ if (timeout == std::chrono::microseconds::max())
+ condition.wait(locker, predicate);
+ else {
+ // This tests timeouts in the sense that it verifies that we can call wait() again after a
+ // timeout happened. That's a non-trivial piece of functionality since upon timeout the
+ // ParkingLot has to remove us from the queue.
+ while (!predicate())
+ condition.waitFor(locker, timeout, predicate);
+ }
+}
+
+void notify(NotifyStyle notifyStyle, Condition& condition, bool shouldNotify)
+{
+ switch (notifyStyle) {
+ case AlwaysNotifyOne:
+ condition.notifyOne();
+ break;
+ case TacticallyNotifyAll:
+ if (shouldNotify)
+ condition.notifyAll();
+ break;
+ }
+}
+
+void runTest(
+ unsigned numProducers,
+ unsigned numConsumers,
+ unsigned maxQueueSize,
+ unsigned numMessagesPerProducer,
+ NotifyStyle notifyStyle,
+ std::chrono::microseconds timeout = std::chrono::microseconds::max(),
+ std::chrono::microseconds delay = std::chrono::microseconds::zero())
+{
+ Deque<unsigned> queue;
+ bool shouldContinue = true;
+ Lock lock;
+ Condition emptyCondition;
+ Condition fullCondition;
+
+ Vector<ThreadIdentifier> consumerThreads;
+ Vector<ThreadIdentifier> producerThreads;
+
+ Vector<unsigned> received;
+ Lock receivedLock;
+
+ for (unsigned i = numConsumers; i--;) {
+ ThreadIdentifier threadIdentifier = createThread(
+ "Consumer thread",
+ [&] () {
+ for (;;) {
+ unsigned result;
+ unsigned shouldNotify = false;
+ {
+ std::unique_lock<Lock> locker(lock);
+ wait(
+ emptyCondition, locker,
+ [&] () {
+ if (verbose)
+ dataLog(toString(currentThread(), ": Checking consumption predicate with shouldContinue = ", shouldContinue, ", queue.size() == ", queue.size(), "\n"));
+ return !shouldContinue || !queue.isEmpty();
+ },
+ timeout);
+ if (!shouldContinue && queue.isEmpty())
+ return;
+ shouldNotify = queue.size() == maxQueueSize;
+ result = queue.takeFirst();
+ }
+ notify(notifyStyle, fullCondition, shouldNotify);
+
+ {
+ std::lock_guard<Lock> locker(receivedLock);
+ received.append(result);
+ }
+ }
+ });
+ consumerThreads.append(threadIdentifier);
+ }
+
+ std::this_thread::sleep_for(delay);
+
+ for (unsigned i = numProducers; i--;) {
+ ThreadIdentifier threadIdentifier = createThread(
+ "Producer Thread",
+ [&] () {
+ for (unsigned i = 0; i < numMessagesPerProducer; ++i) {
+ bool shouldNotify = false;
+ {
+ std::unique_lock<Lock> locker(lock);
+ wait(
+ fullCondition, locker,
+ [&] () {
+ if (verbose)
+ dataLog(toString(currentThread(), ": Checking production predicate with shouldContinue = ", shouldContinue, ", queue.size() == ", queue.size(), "\n"));
+ return queue.size() < maxQueueSize;
+ },
+ timeout);
+ shouldNotify = queue.isEmpty();
+ queue.append(i);
+ }
+ notify(notifyStyle, emptyCondition, shouldNotify);
+ }
+ });
+ producerThreads.append(threadIdentifier);
+ }
+
+ for (ThreadIdentifier threadIdentifier : producerThreads)
+ waitForThreadCompletion(threadIdentifier);
+
+ {
+ std::lock_guard<Lock> locker(lock);
+ shouldContinue = false;
+ }
+ emptyCondition.notifyAll();
+
+ for (ThreadIdentifier threadIdentifier : consumerThreads)
+ waitForThreadCompletion(threadIdentifier);
+
+ EXPECT_EQ(numProducers * numMessagesPerProducer, received.size());
+ std::sort(received.begin(), received.end());
+ for (unsigned messageIndex = 0; messageIndex < numMessagesPerProducer; ++messageIndex) {
+ for (unsigned producerIndex = 0; producerIndex < numProducers; ++producerIndex)
+ EXPECT_EQ(messageIndex, received[messageIndex * numProducers + producerIndex]);
+ }
+}
+
+} // anonymous namespace
+
+TEST(WTF_Condition, OneProducerOneConsumerOneSlot)
+{
+ runTest(1, 1, 1, 100000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, OneProducerOneConsumerOneSlotTimeout)
+{
+ runTest(
+ 1, 1, 1, 100000, TacticallyNotifyAll,
+ std::chrono::microseconds(10000),
+ std::chrono::microseconds(1000000));
+}
+
+TEST(WTF_Condition, OneProducerOneConsumerHundredSlots)
+{
+ runTest(1, 1, 100, 1000000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, TenProducersOneConsumerOneSlot)
+{
+ runTest(10, 1, 1, 10000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, TenProducersOneConsumerHundredSlotsNotifyAll)
+{
+ runTest(10, 1, 100, 10000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, TenProducersOneConsumerHundredSlotsNotifyOne)
+{
+ runTest(10, 1, 100, 10000, AlwaysNotifyOne);
+}
+
+TEST(WTF_Condition, OneProducerTenConsumersOneSlot)
+{
+ runTest(1, 10, 1, 10000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, OneProducerTenConsumersHundredSlotsNotifyAll)
+{
+ runTest(1, 10, 100, 100000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, OneProducerTenConsumersHundredSlotsNotifyOne)
+{
+ runTest(1, 10, 100, 100000, AlwaysNotifyOne);
+}
+
+TEST(WTF_Condition, TenProducersTenConsumersOneSlot)
+{
+ runTest(10, 10, 1, 50000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, TenProducersTenConsumersHundredSlotsNotifyAll)
+{
+ runTest(10, 10, 100, 50000, TacticallyNotifyAll);
+}
+
+TEST(WTF_Condition, TenProducersTenConsumersHundredSlotsNotifyOne)
+{
+ runTest(10, 10, 100, 50000, AlwaysNotifyOne);
+}
+
+TEST(WTF_Condition, TimeoutTimesOut)
+{
+ Lock lock;
+ Condition condition;
+
+ lock.lock();
+ bool result = condition.waitFor(
+ lock, std::chrono::microseconds(10000), [] () -> bool { return false; });
+ lock.unlock();
+
+ EXPECT_FALSE(result);
+}
+
+} // namespace TestWebKitAPI
+
diff --git a/Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp b/Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp
new file mode 100644
index 000000000..463041d48
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/DateMath.cpp
@@ -0,0 +1,208 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "Test.h"
+#include <wtf/DateMath.h>
+
+namespace TestWebKitAPI {
+
+// Note: The results of these function look weird if you do not understand the following mappings:
+// dayOfWeek: [0, 6] 0 being Monday, day: [1, 31], month: [0, 11], year: ex: 2011,
+// hours: [0, 23], minutes: [0, 59], seconds: [0, 59], utcOffset: [-720,720].
+
+TEST(WTF_DateMath, dateToDaysFrom1970)
+{
+ EXPECT_EQ(0.0, dateToDaysFrom1970(1970, 0, 1));
+ EXPECT_EQ(157.0, dateToDaysFrom1970(1970, 5, 7));
+ EXPECT_EQ(-145.0, dateToDaysFrom1970(1969, 7, 9));
+ EXPECT_EQ(16322, dateToDaysFrom1970(2014, 8, 9));
+}
+
+
+TEST(WTF_DateMath, isLeapYear)
+{
+ EXPECT_TRUE(isLeapYear(1804));
+ EXPECT_FALSE(isLeapYear(1900));
+ EXPECT_TRUE(isLeapYear(1968));
+ EXPECT_TRUE(isLeapYear(1976));
+ EXPECT_TRUE(isLeapYear(2000));
+ EXPECT_FALSE(isLeapYear(2010));
+ EXPECT_TRUE(isLeapYear(2012));
+ EXPECT_FALSE(isLeapYear(2100));
+}
+
+TEST(WTF_DateMath, msToYear)
+{
+ EXPECT_EQ(1962, msToYear(-220953600000));
+ EXPECT_EQ(1970, msToYear(0));
+ EXPECT_EQ(1970, msToYear(100));
+ EXPECT_EQ(1977, msToYear(220953600000));
+ EXPECT_EQ(2013, msToYear(1365318000000));
+}
+
+TEST(WTF_DateMath, msToDays)
+{
+ EXPECT_EQ(0, msToDays(0));
+ EXPECT_EQ(2557, msToDays(220953600000));
+ EXPECT_EQ(255, msToDays(22095360000));
+ EXPECT_EQ(25, msToDays(2209536000));
+ EXPECT_EQ(2, msToDays(220953600));
+ EXPECT_EQ(0, msToDays(22095360));
+ EXPECT_EQ(0, msToDays(2209536));
+}
+
+TEST(WTF_DateMath, msToMinutes)
+{
+ EXPECT_EQ(0, msToMinutes(0));
+ EXPECT_EQ(0, msToMinutes(220953600000));
+ EXPECT_EQ(36, msToMinutes(22095360000));
+ EXPECT_EQ(36, msToMinutes(22095360000));
+ EXPECT_EQ(45, msToMinutes(2209536000));
+ EXPECT_EQ(22, msToMinutes(220953600));
+ EXPECT_EQ(8, msToMinutes(22095360));
+ EXPECT_EQ(36, msToMinutes(2209536));
+}
+
+TEST(WTF_DateMath, msToHours)
+{
+ EXPECT_EQ(0, msToHours(0));
+ EXPECT_EQ(8, msToHours(220953600000));
+ EXPECT_EQ(17, msToHours(22095360000));
+ EXPECT_EQ(13, msToHours(2209536000));
+ EXPECT_EQ(13, msToHours(220953600));
+ EXPECT_EQ(6, msToHours(22095360));
+ EXPECT_EQ(0, msToHours(2209536));
+}
+
+TEST(WTF_DateMath, dayInYear)
+{
+ EXPECT_EQ(59, dayInYear(2015, 2, 1));
+ EXPECT_EQ(60, dayInYear(2012, 2, 1));
+ EXPECT_EQ(0, dayInYear(2015, 0, 1));
+ EXPECT_EQ(31, dayInYear(2015, 1, 1));
+}
+
+TEST(WTF_DateMath, monthFromDayInYear)
+{
+ EXPECT_EQ(2, monthFromDayInYear(59, false));
+ EXPECT_EQ(1, monthFromDayInYear(59, true));
+ EXPECT_EQ(2, monthFromDayInYear(60, true));
+ EXPECT_EQ(0, monthFromDayInYear(0, false));
+ EXPECT_EQ(0, monthFromDayInYear(0, true));
+ EXPECT_EQ(1, monthFromDayInYear(31, true));
+ EXPECT_EQ(1, monthFromDayInYear(31, false));
+}
+
+TEST(WTF_DateMath, dayInMonthFromDayInYear)
+{
+ EXPECT_EQ(1, dayInMonthFromDayInYear(0, false));
+ EXPECT_EQ(1, dayInMonthFromDayInYear(0, true));
+ EXPECT_EQ(1, dayInMonthFromDayInYear(59, false));
+ EXPECT_EQ(29, dayInMonthFromDayInYear(59, true));
+ EXPECT_EQ(1, dayInMonthFromDayInYear(60, true));
+ EXPECT_EQ(1, dayInMonthFromDayInYear(0, false));
+ EXPECT_EQ(1, dayInMonthFromDayInYear(0, true));
+ EXPECT_EQ(31, dayInMonthFromDayInYear(30, true));
+ EXPECT_EQ(31, dayInMonthFromDayInYear(30, false));
+ EXPECT_EQ(31, dayInMonthFromDayInYear(365, true));
+ EXPECT_EQ(32, dayInMonthFromDayInYear(365, false));
+ EXPECT_EQ(32, dayInMonthFromDayInYear(366, true));
+}
+
+TEST(WTF_DateMath, calculateLocalTimeOffset)
+{
+ // DST Start: April 30, 1967 (02:00 am)
+ LocalTimeOffset dstStart1967 = calculateLocalTimeOffset(-84301200000, WTF::LocalTime);
+ EXPECT_TRUE(dstStart1967.isDST);
+ EXPECT_EQ(-25200000, dstStart1967.offset);
+
+ // November 1, 1967 (02:00 am)
+ LocalTimeOffset dstAlmostEnd1967 = calculateLocalTimeOffset(-68317200000, WTF::LocalTime);
+ EXPECT_TRUE(dstAlmostEnd1967.isDST);
+ EXPECT_EQ(-25200000, dstAlmostEnd1967.offset);
+
+ // DST End: November 11, 1967 (02:00 am)
+ LocalTimeOffset dstEnd1967 = calculateLocalTimeOffset(-67536000000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd1967.isDST);
+ EXPECT_EQ(-25200000, dstStart1967.offset);
+
+ // DST Start: April 3, 1988 (02:00 am)
+ LocalTimeOffset dstStart1988 = calculateLocalTimeOffset(576054000000, WTF::LocalTime);
+ EXPECT_TRUE(dstStart1988.isDST);
+ EXPECT_EQ(-25200000, dstStart1988.offset);
+
+ // DST End: November 4, 2012 (02:00 am)
+ LocalTimeOffset dstEnd2012 = calculateLocalTimeOffset(1352012400000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd2012.isDST);
+ EXPECT_EQ(-28800000, dstEnd2012.offset);
+
+ // DST Begin: March 8, 2015
+ LocalTimeOffset dstBegin2015 = calculateLocalTimeOffset(1425801600000, WTF::LocalTime);
+ EXPECT_TRUE(dstBegin2015.isDST);
+ EXPECT_EQ(-25200000, dstBegin2015.offset);
+
+ LocalTimeOffset dstBegin2015UTC = calculateLocalTimeOffset(1425801600000, WTF::UTCTime);
+ EXPECT_FALSE(dstBegin2015UTC.isDST);
+ EXPECT_EQ(-28800000, dstBegin2015UTC.offset);
+
+ // DST End: November 1, 2015
+ LocalTimeOffset dstEnd2015 = calculateLocalTimeOffset(1446361200000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd2015.isDST);
+ EXPECT_EQ(-28800000, dstEnd2015.offset);
+
+ // DST Begin: March 13, 2016
+ LocalTimeOffset dstBegin2016 = calculateLocalTimeOffset(1458111600000, WTF::LocalTime);
+ EXPECT_TRUE(dstBegin2016.isDST);
+ EXPECT_EQ(-25200000, dstBegin2016.offset);
+
+ // DST End: November 6, 2016
+ LocalTimeOffset dstEnd2016 = calculateLocalTimeOffset(1478415600000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd2016.isDST);
+ EXPECT_EQ(-28800000, dstEnd2016.offset);
+
+ // DST Begin: March 12, 2017
+ LocalTimeOffset dstBegin2017 = calculateLocalTimeOffset(1489305600000, WTF::LocalTime);
+ EXPECT_TRUE(dstBegin2017.isDST);
+ EXPECT_EQ(-25200000, dstBegin2017.offset);
+
+ // DST End: November 5, 2017
+ LocalTimeOffset dstEnd2017 = calculateLocalTimeOffset(1509865200000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd2017.isDST);
+ EXPECT_EQ(-28800000, dstEnd2017.offset);
+
+ // DST Begin: March 11, 2018
+ LocalTimeOffset dstBegin2018 = calculateLocalTimeOffset(1520755200000, WTF::LocalTime);
+ EXPECT_TRUE(dstBegin2018.isDST);
+ EXPECT_EQ(-25200000, dstBegin2018.offset);
+
+ // DST End: November 4, 2018
+ LocalTimeOffset dstEnd2018 = calculateLocalTimeOffset(1541314800000, WTF::LocalTime);
+ EXPECT_FALSE(dstEnd2018.isDST);
+ EXPECT_EQ(-28800000, dstEnd2018.offset);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Deque.cpp b/Tools/TestWebKitAPI/Tests/WTF/Deque.cpp
index 26a815aba..83f1f82ee 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/Deque.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/Deque.cpp
@@ -24,11 +24,13 @@
*/
#include "config.h"
+
+#include "MoveOnly.h"
#include <wtf/Deque.h>
namespace TestWebKitAPI {
-TEST(WTF, DequeIterator)
+TEST(WTF_Deque, Iterator)
{
Deque<int> deque;
deque.append(11);
@@ -52,6 +54,28 @@ TEST(WTF, DequeIterator)
EXPECT_TRUE(end == it);
}
+TEST(WTF_Deque, InitializerList)
+{
+ Deque<int> deque = { 1, 2, 3, 4 };
+
+ EXPECT_EQ(4u, deque.size());
+
+ auto it = deque.begin();
+ auto end = deque.end();
+ EXPECT_TRUE(end != it);
+
+ EXPECT_EQ(1, *it);
+ ++it;
+ EXPECT_EQ(2, *it);
+ ++it;
+ EXPECT_EQ(3, *it);
+ ++it;
+ EXPECT_EQ(4, *it);
+ ++it;
+
+ EXPECT_TRUE(end == it);
+}
+
TEST(WTF, DequeReverseIterator)
{
Deque<int> deque;
@@ -76,7 +100,7 @@ TEST(WTF, DequeReverseIterator)
EXPECT_TRUE(end == it);
}
-TEST(WTF, DequeRemove)
+TEST(WTF_Deque, Remove)
{
Deque<int> deque;
deque.append(11);
@@ -103,4 +127,65 @@ TEST(WTF, DequeRemove)
EXPECT_TRUE(deque.isEmpty());
}
+TEST(WTF_Deque, MoveOnly)
+{
+ Deque<MoveOnly> deque;
+
+ deque.append(MoveOnly(1));
+ deque.prepend(MoveOnly(0));
+
+ EXPECT_EQ(0U, deque.first().value());
+ EXPECT_EQ(1U, deque.last().value());
+
+ auto first = deque.takeFirst();
+ EXPECT_EQ(0U, first.value());
+
+ auto last = deque.takeLast();
+ EXPECT_EQ(1U, last.value());
+}
+
+TEST(WTF_Deque, MoveConstructor)
+{
+ Deque<MoveOnly, 4> deque;
+
+ for (unsigned i = 0; i < 10; ++i)
+ deque.append(MoveOnly(i));
+
+ EXPECT_EQ(10u, deque.size());
+
+ Deque<MoveOnly, 4> deque2 = WTFMove(deque);
+
+ EXPECT_EQ(10u, deque2.size());
+
+ unsigned i = 0;
+ for (auto& element : deque2) {
+ EXPECT_EQ(i, element.value());
+ ++i;
+ }
+}
+
+TEST(WTF_Deque, MoveAssignmentOperator)
+{
+ Deque<MoveOnly, 4> deque1;
+
+ for (unsigned i = 0; i < 10; ++i)
+ deque1.append(MoveOnly(i));
+
+ EXPECT_EQ(10u, deque1.size());
+
+ Deque<MoveOnly, 4> deque2;
+ for (unsigned i = 0; i < 10; ++i)
+ deque2.append(MoveOnly(i * 2));
+
+ deque1 = WTFMove(deque2);
+
+ EXPECT_EQ(10u, deque2.size());
+
+ unsigned i = 0;
+ for (auto& element : deque1) {
+ EXPECT_EQ(i * 2, element.value());
+ ++i;
+ }
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp
new file mode 100644
index 000000000..4c1afd105
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/HashCountedSet.cpp
@@ -0,0 +1,468 @@
+/*
+ * Copyright (C) 2016 Apple Inc. All rights reserved.
+ * Copyright (C) 2011 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:
+ * 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. 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 INC. 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 "Counters.h"
+#include "MoveOnly.h"
+#include "RefLogger.h"
+#include <string>
+#include <wtf/HashCountedSet.h>
+#include <wtf/text/StringHash.h>
+
+namespace TestWebKitAPI {
+
+typedef WTF::HashCountedSet<int> IntHashCountedSet;
+
+TEST(WTF_HashCountedSet, HashTableIteratorComparison)
+{
+ IntHashCountedSet hashCountedSet;
+ hashCountedSet.add(1);
+ ASSERT_TRUE(hashCountedSet.begin() != hashCountedSet.end());
+ ASSERT_FALSE(hashCountedSet.begin() == hashCountedSet.end());
+
+ IntHashCountedSet::const_iterator begin = hashCountedSet.begin();
+ ASSERT_TRUE(begin == hashCountedSet.begin());
+ ASSERT_TRUE(hashCountedSet.begin() == begin);
+ ASSERT_TRUE(begin != hashCountedSet.end());
+ ASSERT_TRUE(hashCountedSet.end() != begin);
+ ASSERT_FALSE(begin != hashCountedSet.begin());
+ ASSERT_FALSE(hashCountedSet.begin() != begin);
+ ASSERT_FALSE(begin == hashCountedSet.end());
+ ASSERT_FALSE(hashCountedSet.end() == begin);
+}
+
+struct TestDoubleHashTraits : HashTraits<double> {
+ static const int minimumTableSize = 8;
+};
+
+typedef HashCountedSet<double, DefaultHash<double>::Hash, TestDoubleHashTraits> DoubleHashCountedSet;
+
+static int bucketForKey(double key)
+{
+ return DefaultHash<double>::Hash::hash(key) & (TestDoubleHashTraits::minimumTableSize - 1);
+}
+
+TEST(WTF_HashCountedSet, DoubleHashCollisions)
+{
+ // The "clobber" key here is one that ends up stealing the bucket that the -0 key
+ // originally wants to be in. This makes the 0 and -0 keys collide and the test then
+ // fails unless the FloatHash::equals() implementation can distinguish them.
+ const double clobberKey = 6;
+ const double zeroKey = 0;
+ const double negativeZeroKey = -zeroKey;
+
+ DoubleHashCountedSet hashCountedSet;
+
+ hashCountedSet.add(clobberKey);
+
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 0u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
+
+ hashCountedSet.add(zeroKey);
+ hashCountedSet.add(negativeZeroKey);
+
+ ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 1u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 1u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 1u);
+
+ hashCountedSet.add(clobberKey);
+ hashCountedSet.add(zeroKey);
+ hashCountedSet.add(negativeZeroKey);
+
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 2u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 2u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 2u);
+
+ hashCountedSet.add(clobberKey, 12);
+ hashCountedSet.add(zeroKey, 15);
+ hashCountedSet.add(negativeZeroKey, 17);
+
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 14u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 17u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 19u);
+}
+
+TEST(WTF_HashCountedSet, DoubleHashCollisionsInitialCount)
+{
+ // The "clobber" key here is one that ends up stealing the bucket that the -0 key
+ // originally wants to be in. This makes the 0 and -0 keys collide and the test then
+ // fails unless the FloatHash::equals() implementation can distinguish them.
+ const double clobberKey = 6;
+ const double zeroKey = 0;
+ const double negativeZeroKey = -zeroKey;
+
+ DoubleHashCountedSet hashCountedSet;
+
+ hashCountedSet.add(clobberKey, 5);
+
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 0u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
+
+ hashCountedSet.add(zeroKey, 22);
+ hashCountedSet.add(negativeZeroKey, 0);
+
+ ASSERT_EQ(bucketForKey(clobberKey), bucketForKey(negativeZeroKey));
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 5u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 22u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 0u);
+
+ hashCountedSet.add(clobberKey);
+ hashCountedSet.add(zeroKey);
+ hashCountedSet.add(negativeZeroKey);
+
+ ASSERT_EQ(hashCountedSet.count(clobberKey), 6u);
+ ASSERT_EQ(hashCountedSet.count(zeroKey), 23u);
+ ASSERT_EQ(hashCountedSet.count(negativeZeroKey), 1u);
+}
+
+
+TEST(WTF_HashCountedSet, MoveOnlyKeys)
+{
+ HashCountedSet<MoveOnly> moveOnlyKeys;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i + 1);
+ moveOnlyKeys.add(WTFMove(moveOnly));
+ }
+
+ for (size_t i = 0; i < 100; ++i) {
+ auto it = moveOnlyKeys.find(MoveOnly(i + 1));
+ ASSERT_FALSE(it == moveOnlyKeys.end());
+ ASSERT_EQ(it->value, 1u);
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_TRUE(moveOnlyKeys.remove(MoveOnly(i + 1)));
+
+ ASSERT_TRUE(moveOnlyKeys.isEmpty());
+}
+
+TEST(WTF_HashCountedSet, MoveOnlyKeysInitialCount)
+{
+ HashCountedSet<MoveOnly> moveOnlyKeys;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i + 1);
+ moveOnlyKeys.add(WTFMove(moveOnly), i + 1);
+ }
+
+ for (size_t i = 0; i < 100; ++i) {
+ auto it = moveOnlyKeys.find(MoveOnly(i + 1));
+ ASSERT_FALSE(it == moveOnlyKeys.end());
+ ASSERT_EQ(it->value, i + 1);
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1)).isNewEntry);
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_EQ(moveOnlyKeys.count(MoveOnly(i + 1)), i + 2);
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_FALSE(moveOnlyKeys.remove(MoveOnly(i + 1)));
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_EQ(moveOnlyKeys.count(MoveOnly(i + 1)), i + 1);
+}
+
+TEST(WTF_HashCountedSet, InitializerList)
+{
+ HashCountedSet<String> hashCountedSet = {
+ "one",
+ "two",
+ "three",
+ "four",
+ "four",
+ "four",
+ "four",
+ };
+
+ EXPECT_EQ(4u, hashCountedSet.size());
+
+ EXPECT_EQ(hashCountedSet.count("one"), 1u);
+ EXPECT_EQ(hashCountedSet.count("two"), 1u);
+ EXPECT_EQ(hashCountedSet.count("three"), 1u);
+ EXPECT_EQ(hashCountedSet.count("four"), 4u);
+}
+
+TEST(WTF_HashCountedSet, InitializerListInitialCount)
+{
+ HashCountedSet<String> hashCountedSet = {
+ { String("one"), 1u },
+ { String("two"), 2u },
+ { String("three"), 3u },
+ { String("four"), 4u },
+ };
+
+ EXPECT_EQ(4u, hashCountedSet.size());
+
+ EXPECT_EQ(hashCountedSet.count("one"), 1u);
+ EXPECT_EQ(hashCountedSet.count("two"), 2u);
+ EXPECT_EQ(hashCountedSet.count("three"), 3u);
+ EXPECT_EQ(hashCountedSet.count("four"), 4u);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ hashCountedSet.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKeyInitialCount)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ hashCountedSet.add(WTFMove(uniquePtr), 12);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ hashCountedSet.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey_CustomDeleter)
+{
+ ConstructorDestructorCounter::TestingScope constructorDestructorCounterScope;
+ DeleterCounter<ConstructorDestructorCounter>::TestingScope deleterCounterScope;
+
+ HashCountedSet<std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>>> hashCountedSet;
+
+ std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>> uniquePtr(new ConstructorDestructorCounter(), DeleterCounter<ConstructorDestructorCounter>());
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ EXPECT_EQ(0u, DeleterCounter<ConstructorDestructorCounter>::deleterCount);
+
+ hashCountedSet.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+
+ EXPECT_EQ(1u, DeleterCounter<ConstructorDestructorCounter>::deleterCount);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey_FindUsingRawPointer)
+{
+ HashCountedSet<std::unique_ptr<int>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ auto it = hashCountedSet.find(ptr);
+ ASSERT_TRUE(it != hashCountedSet.end());
+ EXPECT_EQ(ptr, it->key.get());
+ EXPECT_EQ(1u, it->value);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey_ContainsUsingRawPointer)
+{
+ HashCountedSet<std::unique_ptr<int>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(true, hashCountedSet.contains(ptr));
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey_GetUsingRawPointer)
+{
+ HashCountedSet<std::unique_ptr<int>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ int value = hashCountedSet.count(ptr);
+ EXPECT_EQ(1, value);
+}
+
+TEST(WTF_HashCountedSet, UniquePtrKey_RemoveUsingRawPointer)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashCountedSet<std::unique_ptr<ConstructorDestructorCounter>> hashCountedSet;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ ConstructorDestructorCounter* ptr = uniquePtr.get();
+ hashCountedSet.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ bool result = hashCountedSet.remove(ptr);
+ EXPECT_EQ(true, result);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_Add)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr);
+
+ ASSERT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+ EXPECT_EQ(1U, hashCountedSet.count(ptr));
+ EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRelease)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr.release());
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMove)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(WTFMove(ptr));
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddUsingRaw)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr.get());
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+ EXPECT_EQ(1U, hashCountedSet.count(ptr));
+ EXPECT_EQ(1U, hashCountedSet.count(ptr.get()));
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddKeyAlreadyPresent)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = hashCountedSet.add(ptr2);
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = hashCountedSet.add(ptr2.release());
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashCountedSet, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
+{
+ HashCountedSet<RefPtr<RefLogger>> hashCountedSet;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ hashCountedSet.add(ptr);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = hashCountedSet.add(WTFMove(ptr2));
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
index db6ca814f..145edae1a 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/HashMap.cpp
@@ -25,13 +25,18 @@
#include "config.h"
+#include "Counters.h"
+#include "MoveOnly.h"
+#include "RefLogger.h"
+#include <string>
#include <wtf/HashMap.h>
+#include <wtf/text/StringHash.h>
namespace TestWebKitAPI {
typedef WTF::HashMap<int, int> IntHashMap;
-TEST(WTF, HashTableIteratorComparison)
+TEST(WTF_HashMap, HashTableIteratorComparison)
{
IntHashMap map;
map.add(1, 2);
@@ -60,7 +65,7 @@ static int bucketForKey(double key)
return DefaultHash<double>::Hash::hash(key) & (TestDoubleHashTraits::minimumTableSize - 1);
}
-TEST(WTF, DoubleHashCollisions)
+TEST(WTF_HashMap, DoubleHashCollisions)
{
// The "clobber" key here is one that ends up stealing the bucket that the -0 key
// originally wants to be in. This makes the 0 and -0 keys collide and the test then
@@ -81,4 +86,617 @@ TEST(WTF, DoubleHashCollisions)
ASSERT_EQ(map.get(negativeZeroKey), 3);
}
+TEST(WTF_HashMap, MoveOnlyValues)
+{
+ HashMap<unsigned, MoveOnly> moveOnlyValues;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i + 1);
+ moveOnlyValues.set(i + 1, WTFMove(moveOnly));
+ }
+
+ for (size_t i = 0; i < 100; ++i) {
+ auto it = moveOnlyValues.find(i + 1);
+ ASSERT_FALSE(it == moveOnlyValues.end());
+ }
+
+ for (size_t i = 0; i < 50; ++i)
+ ASSERT_EQ(moveOnlyValues.take(i + 1).value(), i + 1);
+
+ for (size_t i = 50; i < 100; ++i)
+ ASSERT_TRUE(moveOnlyValues.remove(i + 1));
+
+ ASSERT_TRUE(moveOnlyValues.isEmpty());
+}
+
+TEST(WTF_HashMap, MoveOnlyKeys)
+{
+ HashMap<MoveOnly, unsigned> moveOnlyKeys;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i + 1);
+ moveOnlyKeys.set(WTFMove(moveOnly), i + 1);
+ }
+
+ for (size_t i = 0; i < 100; ++i) {
+ auto it = moveOnlyKeys.find(MoveOnly(i + 1));
+ ASSERT_FALSE(it == moveOnlyKeys.end());
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_FALSE(moveOnlyKeys.add(MoveOnly(i + 1), i + 1).isNewEntry);
+
+ for (size_t i = 0; i < 100; ++i)
+ ASSERT_TRUE(moveOnlyKeys.remove(MoveOnly(i + 1)));
+
+ ASSERT_TRUE(moveOnlyKeys.isEmpty());
+}
+
+TEST(WTF_HashMap, InitializerList)
+{
+ HashMap<unsigned, std::string> map = {
+ { 1, "one" },
+ { 2, "two" },
+ { 3, "three" },
+ { 4, "four" },
+ };
+
+ EXPECT_EQ(4u, map.size());
+
+ EXPECT_EQ("one", map.get(1));
+ EXPECT_EQ("two", map.get(2));
+ EXPECT_EQ("three", map.get(3));
+ EXPECT_EQ("four", map.get(4));
+ EXPECT_EQ(std::string(), map.get(5));
+}
+
+TEST(WTF_HashMap, EfficientGetter)
+{
+ HashMap<unsigned, CopyMoveCounter> map;
+ map.set(1, CopyMoveCounter());
+
+ {
+ CopyMoveCounter::TestingScope scope;
+ map.get(1);
+ EXPECT_EQ(0U, CopyMoveCounter::constructionCount);
+ EXPECT_EQ(1U, CopyMoveCounter::copyCount);
+ EXPECT_EQ(0U, CopyMoveCounter::moveCount);
+ }
+
+ {
+ CopyMoveCounter::TestingScope scope;
+ map.get(2);
+ EXPECT_EQ(1U, CopyMoveCounter::constructionCount);
+ EXPECT_EQ(0U, CopyMoveCounter::copyCount);
+ EXPECT_EQ(1U, CopyMoveCounter::moveCount);
+ }
+}
+
+TEST(WTF_HashMap, UniquePtrKey)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashMap<std::unique_ptr<ConstructorDestructorCounter>, int> map;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ map.add(WTFMove(uniquePtr), 2);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ map.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashMap, UniquePtrKey_CustomDeleter)
+{
+ ConstructorDestructorCounter::TestingScope constructorDestructorCounterScope;
+ DeleterCounter<ConstructorDestructorCounter>::TestingScope deleterCounterScope;
+
+ HashMap<std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>>, int> map;
+
+ std::unique_ptr<ConstructorDestructorCounter, DeleterCounter<ConstructorDestructorCounter>> uniquePtr(new ConstructorDestructorCounter(), DeleterCounter<ConstructorDestructorCounter>());
+ map.add(WTFMove(uniquePtr), 2);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ EXPECT_EQ(0u, DeleterCounter<ConstructorDestructorCounter>::deleterCount);
+
+ map.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+
+ EXPECT_EQ(1u, DeleterCounter<ConstructorDestructorCounter>::deleterCount);
+}
+
+TEST(WTF_HashMap, UniquePtrKey_FindUsingRawPointer)
+{
+ HashMap<std::unique_ptr<int>, int> map;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ map.add(WTFMove(uniquePtr), 2);
+
+ auto it = map.find(ptr);
+ ASSERT_TRUE(it != map.end());
+ EXPECT_EQ(ptr, it->key.get());
+ EXPECT_EQ(2, it->value);
+}
+
+TEST(WTF_HashMap, UniquePtrKey_ContainsUsingRawPointer)
+{
+ HashMap<std::unique_ptr<int>, int> map;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ map.add(WTFMove(uniquePtr), 2);
+
+ EXPECT_EQ(true, map.contains(ptr));
+}
+
+TEST(WTF_HashMap, UniquePtrKey_GetUsingRawPointer)
+{
+ HashMap<std::unique_ptr<int>, int> map;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ map.add(WTFMove(uniquePtr), 2);
+
+ int value = map.get(ptr);
+ EXPECT_EQ(2, value);
+}
+
+TEST(WTF_HashMap, UniquePtrKey_RemoveUsingRawPointer)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashMap<std::unique_ptr<ConstructorDestructorCounter>, int> map;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ ConstructorDestructorCounter* ptr = uniquePtr.get();
+ map.add(WTFMove(uniquePtr), 2);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ bool result = map.remove(ptr);
+ EXPECT_EQ(true, result);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashMap, UniquePtrKey_TakeUsingRawPointer)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashMap<std::unique_ptr<ConstructorDestructorCounter>, int> map;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ ConstructorDestructorCounter* ptr = uniquePtr.get();
+ map.add(WTFMove(uniquePtr), 2);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ int result = map.take(ptr);
+ EXPECT_EQ(2, result);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashMap, RefPtrKey_Add)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr, 0);
+
+ ASSERT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddUsingRelease)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr.release(), 0);
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddUsingMove)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.add(WTFMove(ptr), 0);
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddUsingRaw)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr.get(), 0);
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr, 0);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.add(ptr2, 0);
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddUsingReleaseKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr, 0);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.add(ptr2.release(), 0);
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_AddUsingMoveKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ map.add(ptr, 0);
+ }
+
+ EXPECT_STREQ("ref(a) ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.add(WTFMove(ptr2), 0);
+ EXPECT_FALSE(addResult.isNewEntry);
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_Set)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr, 0);
+
+ ASSERT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_SetUsingRelease)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr.release(), 0);
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+
+TEST(WTF_HashMap, RefPtrKey_SetUsingMove)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.set(WTFMove(ptr), 0);
+
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_SetUsingRaw)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr.get(), 0);
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_SetKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr, 0);
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.set(ptr2, 1);
+ EXPECT_FALSE(addResult.isNewEntry);
+ EXPECT_EQ(1, map.get(ptr.get()));
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_SetUsingReleaseKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr, 0);
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.set(ptr2.release(), 1);
+ EXPECT_FALSE(addResult.isNewEntry);
+ EXPECT_EQ(1, map.get(ptr.get()));
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, RefPtrKey_SetUsingMoveKeyAlreadyPresent)
+{
+ HashMap<RefPtr<RefLogger>, int> map;
+
+ DerivedRefLogger a("a");
+
+ RefPtr<RefLogger> ptr(&a);
+ map.set(ptr, 0);
+
+ EXPECT_STREQ("ref(a) ref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr2(&a);
+ auto addResult = map.set(WTFMove(ptr2), 1);
+ EXPECT_FALSE(addResult.isNewEntry);
+ EXPECT_EQ(1, map.get(ptr.get()));
+ }
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_HashMap, Ensure)
+{
+ HashMap<unsigned, unsigned> map;
+ {
+ auto addResult = map.ensure(1, [] { return 1; });
+ EXPECT_EQ(1u, addResult.iterator->value);
+ EXPECT_EQ(1u, addResult.iterator->key);
+ EXPECT_TRUE(addResult.isNewEntry);
+ auto addResult2 = map.ensure(1, [] { return 2; });
+ EXPECT_EQ(1u, addResult2.iterator->value);
+ EXPECT_EQ(1u, addResult2.iterator->key);
+ EXPECT_FALSE(addResult2.isNewEntry);
+ }
+}
+
+TEST(WTF_HashMap, Ensure_MoveOnlyValues)
+{
+ HashMap<unsigned, MoveOnly> moveOnlyValues;
+ {
+ auto addResult = moveOnlyValues.ensure(1, [] { return MoveOnly(1); });
+ EXPECT_EQ(1u, addResult.iterator->value.value());
+ EXPECT_EQ(1u, addResult.iterator->key);
+ EXPECT_TRUE(addResult.isNewEntry);
+ auto addResult2 = moveOnlyValues.ensure(1, [] { return MoveOnly(2); });
+ EXPECT_EQ(1u, addResult2.iterator->value.value());
+ EXPECT_EQ(1u, addResult2.iterator->key);
+ EXPECT_FALSE(addResult2.isNewEntry);
+ }
+}
+
+TEST(WTF_HashMap, Ensure_UniquePointer)
+{
+ HashMap<unsigned, std::unique_ptr<unsigned>> map;
+ {
+ auto addResult = map.ensure(1, [] { return std::make_unique<unsigned>(1); });
+ EXPECT_EQ(1u, *map.get(1));
+ EXPECT_EQ(1u, *addResult.iterator->value.get());
+ EXPECT_EQ(1u, addResult.iterator->key);
+ EXPECT_TRUE(addResult.isNewEntry);
+ auto addResult2 = map.ensure(1, [] { return std::make_unique<unsigned>(2); });
+ EXPECT_EQ(1u, *map.get(1));
+ EXPECT_EQ(1u, *addResult2.iterator->value.get());
+ EXPECT_EQ(1u, addResult2.iterator->key);
+ EXPECT_FALSE(addResult2.isNewEntry);
+ }
+}
+
+TEST(WTF_HashMap, Ensure_RefPtr)
+{
+ HashMap<unsigned, RefPtr<RefLogger>> map;
+
+ {
+ DerivedRefLogger a("a");
+
+ map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+ EXPECT_STREQ("ref(a) ", takeLogStr().c_str());
+
+ map.ensure(1, [&] { return RefPtr<RefLogger>(&a); });
+ EXPECT_STREQ("", takeLogStr().c_str());
+ }
+}
+
+class ObjectWithRefLogger {
+public:
+ ObjectWithRefLogger(Ref<RefLogger>&& logger)
+ : m_logger(WTFMove(logger))
+ {
+ }
+
+ Ref<RefLogger> m_logger;
+};
+
+
+void testMovingUsingEnsure(Ref<RefLogger>&& logger)
+{
+ HashMap<unsigned, std::unique_ptr<ObjectWithRefLogger>> map;
+
+ map.ensure(1, [&] { return std::make_unique<ObjectWithRefLogger>(WTFMove(logger)); });
+}
+
+void testMovingUsingAdd(Ref<RefLogger>&& logger)
+{
+ HashMap<unsigned, std::unique_ptr<ObjectWithRefLogger>> map;
+
+ auto& slot = map.add(1, nullptr).iterator->value;
+ slot = std::make_unique<ObjectWithRefLogger>(WTFMove(logger));
+}
+
+TEST(WTF_HashMap, Ensure_LambdasCapturingByReference)
+{
+ {
+ DerivedRefLogger a("a");
+ Ref<RefLogger> ref(a);
+ testMovingUsingEnsure(WTFMove(ref));
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+ }
+
+ {
+ DerivedRefLogger a("a");
+ Ref<RefLogger> ref(a);
+ testMovingUsingAdd(WTFMove(ref));
+
+ EXPECT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+ }
+}
+
+
+TEST(WTF_HashMap, ValueIsDestructedOnRemove)
+{
+ struct DestructorObserver {
+ DestructorObserver() = default;
+
+ DestructorObserver(bool* destructed)
+ : destructed(destructed)
+ {
+ }
+
+ ~DestructorObserver()
+ {
+ if (destructed)
+ *destructed = true;
+ }
+
+ DestructorObserver(DestructorObserver&& other)
+ : destructed(other.destructed)
+ {
+ other.destructed = nullptr;
+ }
+
+ DestructorObserver& operator=(DestructorObserver&& other)
+ {
+ destructed = other.destructed;
+ other.destructed = nullptr;
+ return *this;
+ }
+
+ bool* destructed { nullptr };
+ };
+
+ HashMap<int, DestructorObserver> map;
+
+ bool destructed = false;
+ map.add(5, DestructorObserver { &destructed });
+
+ EXPECT_FALSE(destructed);
+
+ bool removeResult = map.remove(5);
+
+ EXPECT_TRUE(removeResult);
+ EXPECT_TRUE(destructed);
+}
+
+TEST(WTF_HashMap, RefPtrNotZeroedBeforeDeref)
+{
+ struct DerefObserver {
+ NEVER_INLINE void ref()
+ {
+ ++count;
+ }
+ NEVER_INLINE void deref()
+ {
+ --count;
+ observedBucket = bucketAddress->get();
+ }
+ unsigned count { 1 };
+ const RefPtr<DerefObserver>* bucketAddress { nullptr };
+ const DerefObserver* observedBucket { nullptr };
+ };
+
+ auto observer = std::make_unique<DerefObserver>();
+
+ HashMap<RefPtr<DerefObserver>, int> map;
+ map.add(adoptRef(observer.get()), 5);
+
+ auto iterator = map.find(observer.get());
+ EXPECT_TRUE(iterator != map.end());
+
+ observer->bucketAddress = &iterator->key;
+
+ EXPECT_TRUE(observer->observedBucket == nullptr);
+ EXPECT_TRUE(map.remove(observer.get()));
+
+ // It if fine to either leave the old value intact at deletion or already set it to the deleted
+ // value.
+ // A zero would be a incorrect outcome as it would mean we nulled the bucket before an opaque
+ // call.
+ EXPECT_TRUE(observer->observedBucket == observer.get() || observer->observedBucket == RefPtr<DerefObserver>::hashTableDeletedValue());
+ EXPECT_EQ(observer->count, 0u);
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
index 71e21aa28..1d6ffc039 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/HashSet.cpp
@@ -25,7 +25,10 @@
#include "config.h"
+#include "Counters.h"
+#include "MoveOnly.h"
#include <wtf/HashSet.h>
+#include <wtf/RefPtr.h>
namespace TestWebKitAPI {
@@ -41,7 +44,7 @@ void testInitialCapacity()
HashSet<int, DefaultHash<int>::Hash, InitialCapacityTestHashTraits<initialCapacity> > testSet;
// Initial capacity is null.
- ASSERT_EQ(0, testSet.capacity());
+ ASSERT_EQ(0u, testSet.capacity());
// Adding items up to size should never change the capacity.
for (size_t i = 0; i < size; ++i) {
@@ -71,9 +74,279 @@ template<unsigned size> void generateTestCapacityUpToSize()
testInitialCapacity<size>();
}
-TEST(WTF, HashSetInitialCapacity)
+TEST(WTF_HashSet, InitialCapacity)
{
generateTestCapacityUpToSize<128>();
}
+TEST(WTF_HashSet, MoveOnly)
+{
+ HashSet<MoveOnly> hashSet;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i + 1);
+ hashSet.add(WTFMove(moveOnly));
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_TRUE(hashSet.contains(MoveOnly(i + 1)));
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_TRUE(hashSet.remove(MoveOnly(i + 1)));
+
+ EXPECT_TRUE(hashSet.isEmpty());
+
+ for (size_t i = 0; i < 100; ++i)
+ hashSet.add(MoveOnly(i + 1));
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_TRUE(hashSet.take(MoveOnly(i + 1)) == MoveOnly(i + 1));
+
+ EXPECT_TRUE(hashSet.isEmpty());
+
+ for (size_t i = 0; i < 100; ++i)
+ hashSet.add(MoveOnly(i + 1));
+
+ HashSet<MoveOnly> secondSet;
+
+ for (size_t i = 0; i < 100; ++i)
+ secondSet.add(hashSet.takeAny());
+
+ EXPECT_TRUE(hashSet.isEmpty());
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_TRUE(secondSet.contains(MoveOnly(i + 1)));
+}
+
+
+TEST(WTF_HashSet, UniquePtrKey)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashSet<std::unique_ptr<ConstructorDestructorCounter>> set;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ set.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ set.clear();
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashSet, UniquePtrKey_FindUsingRawPointer)
+{
+ HashSet<std::unique_ptr<int>> set;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ set.add(WTFMove(uniquePtr));
+
+ auto it = set.find(ptr);
+ ASSERT_TRUE(it != set.end());
+ EXPECT_EQ(ptr, it->get());
+ EXPECT_EQ(5, *it->get());
+}
+
+TEST(WTF_HashSet, UniquePtrKey_ContainsUsingRawPointer)
+{
+ HashSet<std::unique_ptr<int>> set;
+
+ auto uniquePtr = std::make_unique<int>(5);
+ int* ptr = uniquePtr.get();
+ set.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(true, set.contains(ptr));
+}
+
+TEST(WTF_HashSet, UniquePtrKey_RemoveUsingRawPointer)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashSet<std::unique_ptr<ConstructorDestructorCounter>> set;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ ConstructorDestructorCounter* ptr = uniquePtr.get();
+ set.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ bool result = set.remove(ptr);
+ EXPECT_EQ(true, result);
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashSet, UniquePtrKey_TakeUsingRawPointer)
+{
+ ConstructorDestructorCounter::TestingScope scope;
+
+ HashSet<std::unique_ptr<ConstructorDestructorCounter>> set;
+
+ auto uniquePtr = std::make_unique<ConstructorDestructorCounter>();
+ ConstructorDestructorCounter* ptr = uniquePtr.get();
+ set.add(WTFMove(uniquePtr));
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ auto result = set.take(ptr);
+ EXPECT_EQ(ptr, result.get());
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(0u, ConstructorDestructorCounter::destructionCount);
+
+ result = nullptr;
+
+ EXPECT_EQ(1u, ConstructorDestructorCounter::constructionCount);
+ EXPECT_EQ(1u, ConstructorDestructorCounter::destructionCount);
+}
+
+TEST(WTF_HashSet, CopyEmpty)
+{
+ {
+ HashSet<unsigned> foo;
+ HashSet<unsigned> bar(foo);
+
+ EXPECT_EQ(0u, bar.capacity());
+ EXPECT_EQ(0u, bar.size());
+ }
+ {
+ HashSet<unsigned> foo({ 1, 5, 64, 42 });
+ EXPECT_EQ(4u, foo.size());
+ foo.remove(1);
+ foo.remove(5);
+ foo.remove(42);
+ foo.remove(64);
+ HashSet<unsigned> bar(foo);
+
+ EXPECT_EQ(0u, bar.capacity());
+ EXPECT_EQ(0u, bar.size());
+ }
+}
+
+TEST(WTF_HashSet, CopyAllocateAtLeastMinimumCapacity)
+{
+ HashSet<unsigned> foo({ 42 });
+ EXPECT_EQ(1u, foo.size());
+ HashSet<unsigned> bar(foo);
+
+ EXPECT_EQ(8u, bar.capacity());
+ EXPECT_EQ(1u, bar.size());
+}
+
+TEST(WTF_HashSet, CopyCapacityIsNotOnBoundary)
+{
+ // Starting at 4 because the minimum size is 8.
+ // With a size of 8, a medium load can be up to 3.3333->3.
+ // Adding 1 to 3 would reach max load.
+ // While correct, that's not really what we care about here.
+ for (unsigned size = 4; size < 100; ++size) {
+ HashSet<unsigned> source;
+ for (unsigned i = 1; i < size + 1; ++i)
+ source.add(i);
+
+ HashSet<unsigned> copy1(source);
+ HashSet<unsigned> copy2(source);
+ HashSet<unsigned> copy3(source);
+
+ EXPECT_EQ(size, copy1.size());
+ EXPECT_EQ(size, copy2.size());
+ EXPECT_EQ(size, copy3.size());
+ for (unsigned i = 1; i < size + 1; ++i) {
+ EXPECT_TRUE(copy1.contains(i));
+ EXPECT_TRUE(copy2.contains(i));
+ EXPECT_TRUE(copy3.contains(i));
+ }
+ EXPECT_FALSE(copy1.contains(size + 2));
+ EXPECT_FALSE(copy2.contains(size + 2));
+ EXPECT_FALSE(copy3.contains(size + 2));
+
+ EXPECT_TRUE(copy2.remove(1));
+ EXPECT_EQ(copy1.capacity(), copy2.capacity());
+ EXPECT_FALSE(copy2.contains(1));
+
+ EXPECT_TRUE(copy3.add(size + 2).isNewEntry);
+ EXPECT_EQ(copy1.capacity(), copy3.capacity());
+ EXPECT_TRUE(copy3.contains(size + 2));
+ }
+}
+
+TEST(WTF_HashSet, RefPtrNotZeroedBeforeDeref)
+{
+ struct DerefObserver {
+ NEVER_INLINE void ref()
+ {
+ ++count;
+ }
+ NEVER_INLINE void deref()
+ {
+ --count;
+ observedBucket = bucketAddress->get();
+ }
+ unsigned count { 1 };
+ const RefPtr<DerefObserver>* bucketAddress { nullptr };
+ const DerefObserver* observedBucket { nullptr };
+ };
+
+ auto observer = std::make_unique<DerefObserver>();
+
+ HashSet<RefPtr<DerefObserver>> set;
+ set.add(adoptRef(observer.get()));
+
+ auto iterator = set.find(observer.get());
+ EXPECT_TRUE(iterator != set.end());
+
+ observer->bucketAddress = iterator.get();
+
+ EXPECT_TRUE(observer->observedBucket == nullptr);
+ EXPECT_TRUE(set.remove(observer.get()));
+
+ // It if fine to either leave the old value intact at deletion or already set it to the deleted
+ // value.
+ // A zero would be a incorrect outcome as it would mean we nulled the bucket before an opaque
+ // call.
+ EXPECT_TRUE(observer->observedBucket == observer.get() || observer->observedBucket == RefPtr<DerefObserver>::hashTableDeletedValue());
+ EXPECT_EQ(observer->count, 0u);
+}
+
+
+TEST(WTF_HashSet, UniquePtrNotZeroedBeforeDestructor)
+{
+ struct DestructorObserver {
+ ~DestructorObserver()
+ {
+ observe();
+ }
+ std::function<void()> observe;
+ };
+
+ const std::unique_ptr<DestructorObserver>* bucketAddress = nullptr;
+ const DestructorObserver* observedBucket = nullptr;
+ std::unique_ptr<DestructorObserver> observer(new DestructorObserver { [&]() {
+ observedBucket = bucketAddress->get();
+ }});
+
+ const DestructorObserver* observerAddress = observer.get();
+
+ HashSet<std::unique_ptr<DestructorObserver>> set;
+ auto addResult = set.add(WTFMove(observer));
+
+ EXPECT_TRUE(addResult.isNewEntry);
+ EXPECT_TRUE(observedBucket == nullptr);
+
+ bucketAddress = addResult.iterator.get();
+
+ EXPECT_TRUE(observedBucket == nullptr);
+ EXPECT_TRUE(set.remove(*addResult.iterator));
+
+ EXPECT_TRUE(observedBucket == observerAddress || observedBucket == reinterpret_cast<const DestructorObserver*>(-1));
+}
+
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp
index 7579c4299..d81dcfcfe 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/ListHashSet.cpp
@@ -25,11 +25,12 @@
#include "config.h"
+#include "MoveOnly.h"
#include <wtf/ListHashSet.h>
namespace TestWebKitAPI {
-TEST(WTF, ListHashSetRemoveFirst)
+TEST(WTF_ListHashSet, RemoveFirst)
{
ListHashSet<int> list;
list.add(1);
@@ -48,7 +49,26 @@ TEST(WTF, ListHashSetRemoveFirst)
ASSERT_TRUE(list.isEmpty());
}
-TEST(WTF, ListHashSetAppendOrMoveToLastNewItems)
+TEST(WTF_ListHashSet, RemoveLast)
+{
+ ListHashSet<int> list;
+ list.add(1);
+ list.add(2);
+ list.add(3);
+
+ ASSERT_EQ(3, list.last());
+
+ list.removeLast();
+ ASSERT_EQ(2, list.last());
+
+ list.removeLast();
+ ASSERT_EQ(1, list.last());
+
+ list.removeLast();
+ ASSERT_TRUE(list.isEmpty());
+}
+
+TEST(WTF_ListHashSet, AppendOrMoveToLastNewItems)
{
ListHashSet<int> list;
ListHashSet<int>::AddResult result = list.appendOrMoveToLast(1);
@@ -58,7 +78,7 @@ TEST(WTF, ListHashSetAppendOrMoveToLastNewItems)
result = list.appendOrMoveToLast(3);
ASSERT_TRUE(result.isNewEntry);
- ASSERT_EQ(list.size(), 3);
+ ASSERT_EQ(list.size(), 3u);
// The list should be in order 1, 2, 3.
ListHashSet<int>::iterator iterator = list.begin();
@@ -70,7 +90,7 @@ TEST(WTF, ListHashSetAppendOrMoveToLastNewItems)
++iterator;
}
-TEST(WTF, ListHashSetAppendOrMoveToLastWithDuplicates)
+TEST(WTF_ListHashSet, AppendOrMoveToLastWithDuplicates)
{
ListHashSet<int> list;
@@ -79,11 +99,11 @@ TEST(WTF, ListHashSetAppendOrMoveToLastWithDuplicates)
ASSERT_TRUE(result.isNewEntry);
result = list.appendOrMoveToLast(1);
ASSERT_FALSE(result.isNewEntry);
- ASSERT_EQ(1, list.size());
+ ASSERT_EQ(1u, list.size());
list.add(2);
list.add(3);
- ASSERT_EQ(3, list.size());
+ ASSERT_EQ(3u, list.size());
// Appending 2 move it to the end.
ASSERT_EQ(3, list.last());
@@ -98,7 +118,7 @@ TEST(WTF, ListHashSetAppendOrMoveToLastWithDuplicates)
ASSERT_FALSE(result.isNewEntry);
result = list.appendOrMoveToLast(1);
ASSERT_FALSE(result.isNewEntry);
- ASSERT_EQ(3, list.size());
+ ASSERT_EQ(3u, list.size());
ListHashSet<int>::iterator iterator = list.begin();
ASSERT_EQ(3, *iterator);
@@ -109,7 +129,7 @@ TEST(WTF, ListHashSetAppendOrMoveToLastWithDuplicates)
++iterator;
}
-TEST(WTF, ListHashSetPrependOrMoveToLastNewItems)
+TEST(WTF_ListHashSet, PrependOrMoveToLastNewItems)
{
ListHashSet<int> list;
ListHashSet<int>::AddResult result = list.prependOrMoveToFirst(1);
@@ -119,7 +139,7 @@ TEST(WTF, ListHashSetPrependOrMoveToLastNewItems)
result = list.prependOrMoveToFirst(3);
ASSERT_TRUE(result.isNewEntry);
- ASSERT_EQ(list.size(), 3);
+ ASSERT_EQ(list.size(), 3u);
// The list should be in order 3, 1, 2.
ListHashSet<int>::iterator iterator = list.begin();
@@ -131,7 +151,7 @@ TEST(WTF, ListHashSetPrependOrMoveToLastNewItems)
++iterator;
}
-TEST(WTF, ListHashSetPrependOrMoveToLastWithDuplicates)
+TEST(WTF_ListHashSet, PrependOrMoveToLastWithDuplicates)
{
ListHashSet<int> list;
@@ -140,11 +160,11 @@ TEST(WTF, ListHashSetPrependOrMoveToLastWithDuplicates)
ASSERT_TRUE(result.isNewEntry);
result = list.prependOrMoveToFirst(1);
ASSERT_FALSE(result.isNewEntry);
- ASSERT_EQ(1, list.size());
+ ASSERT_EQ(1u, list.size());
list.add(2);
list.add(3);
- ASSERT_EQ(3, list.size());
+ ASSERT_EQ(3u, list.size());
// Prepending 2 move it to the beginning.
ASSERT_EQ(1, list.first());
@@ -159,7 +179,7 @@ TEST(WTF, ListHashSetPrependOrMoveToLastWithDuplicates)
ASSERT_FALSE(result.isNewEntry);
result = list.prependOrMoveToFirst(3);
ASSERT_FALSE(result.isNewEntry);
- ASSERT_EQ(3, list.size());
+ ASSERT_EQ(3u, list.size());
ListHashSet<int>::iterator iterator = list.begin();
ASSERT_EQ(3, *iterator);
@@ -170,4 +190,80 @@ TEST(WTF, ListHashSetPrependOrMoveToLastWithDuplicates)
++iterator;
}
+TEST(WTF_ListHashSet, ReverseIterator)
+{
+ ListHashSet<int> list;
+
+ list.add(1);
+ list.add(2);
+ list.add(3);
+
+ auto it = list.rbegin();
+ ASSERT_EQ(3, *it);
+ ++it;
+ ASSERT_EQ(2, *it);
+ ++it;
+ ASSERT_EQ(1, *it);
+ ++it;
+ ASSERT_TRUE(it == list.rend());
+
+ const auto& listHashSet = list;
+
+ auto constIt = listHashSet.rbegin();
+ ASSERT_EQ(3, *constIt);
+ ++constIt;
+ ASSERT_EQ(2, *constIt);
+ ++constIt;
+ ASSERT_EQ(1, *constIt);
+ ++constIt;
+ ASSERT_TRUE(constIt == listHashSet.rend());
+}
+
+TEST(WTF_ListHashSet, MoveOnly)
+{
+ ListHashSet<MoveOnly> list;
+ list.add(MoveOnly(2));
+ list.add(MoveOnly(4));
+
+ // { 2, 4 }
+ ASSERT_EQ(2U, list.first().value());
+ ASSERT_EQ(4U, list.last().value());
+
+ list.appendOrMoveToLast(MoveOnly(3));
+
+ // { 2, 4, 3 }
+ ASSERT_EQ(3U, list.last().value());
+
+ // { 4, 3, 2 }
+ list.appendOrMoveToLast(MoveOnly(2));
+ ASSERT_EQ(4U, list.first().value());
+ ASSERT_EQ(2U, list.last().value());
+
+ list.prependOrMoveToFirst(MoveOnly(5));
+
+ // { 5, 2, 4, 3 }
+ ASSERT_EQ(5U, list.first().value());
+
+ list.prependOrMoveToFirst(MoveOnly(3));
+
+ // { 3, 5, 4, 2 }
+ ASSERT_EQ(3U, list.first().value());
+ ASSERT_EQ(2U, list.last().value());
+
+ list.insertBefore(MoveOnly(4), MoveOnly(1));
+ list.insertBefore(list.end(), MoveOnly(6));
+
+ // { 3, 5, 1, 4, 2, 6 }
+ ASSERT_EQ(3U, list.takeFirst().value());
+ ASSERT_EQ(5U, list.takeFirst().value());
+ ASSERT_EQ(1U, list.takeFirst().value());
+
+ // { 4, 2, 6 }
+ ASSERT_EQ(6U, list.takeLast().value());
+ ASSERT_EQ(2U, list.takeLast().value());
+ ASSERT_EQ(4U, list.takeLast().value());
+
+ ASSERT_TRUE(list.isEmpty());
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Lock.cpp b/Tools/TestWebKitAPI/Tests/WTF/Lock.cpp
new file mode 100644
index 000000000..5576302d6
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/Lock.cpp
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 <wtf/Lock.h>
+#include <wtf/Threading.h>
+#include <wtf/ThreadingPrimitives.h>
+#include <wtf/WordLock.h>
+
+using namespace WTF;
+
+namespace TestWebKitAPI {
+
+struct LockInspector {
+ template<typename LockType>
+ static bool isFullyReset(LockType& lock)
+ {
+ return lock.isFullyReset();
+ }
+};
+
+template<typename LockType>
+void runLockTest(unsigned numThreadGroups, unsigned numThreadsPerGroup, unsigned workPerCriticalSection, unsigned numIterations)
+{
+ std::unique_ptr<LockType[]> locks = std::make_unique<LockType[]>(numThreadGroups);
+ std::unique_ptr<double[]> words = std::make_unique<double[]>(numThreadGroups);
+ std::unique_ptr<ThreadIdentifier[]> threads = std::make_unique<ThreadIdentifier[]>(numThreadGroups * numThreadsPerGroup);
+
+ for (unsigned threadGroupIndex = numThreadGroups; threadGroupIndex--;) {
+ words[threadGroupIndex] = 0;
+
+ for (unsigned threadIndex = numThreadsPerGroup; threadIndex--;) {
+ threads[threadGroupIndex * numThreadsPerGroup + threadIndex] = createThread(
+ "Lock test thread",
+ [threadGroupIndex, &locks, &words, numIterations, workPerCriticalSection] () {
+ for (unsigned i = numIterations; i--;) {
+ locks[threadGroupIndex].lock();
+ for (unsigned j = workPerCriticalSection; j--;)
+ words[threadGroupIndex]++;
+ locks[threadGroupIndex].unlock();
+ }
+ });
+ }
+ }
+
+ for (unsigned threadIndex = numThreadGroups * numThreadsPerGroup; threadIndex--;)
+ waitForThreadCompletion(threads[threadIndex]);
+
+ double expected = 0;
+ for (uint64_t i = static_cast<uint64_t>(numIterations) * workPerCriticalSection * numThreadsPerGroup; i--;)
+ expected++;
+
+ for (unsigned threadGroupIndex = numThreadGroups; threadGroupIndex--;)
+ EXPECT_EQ(expected, words[threadGroupIndex]);
+
+ // Now test that the locks correctly reset themselves. We expect that if a single thread locks
+ // each of the locks twice in a row, then the lock should be in a pristine state.
+ for (unsigned threadGroupIndex = numThreadGroups; threadGroupIndex--;) {
+ for (unsigned i = 2; i--;) {
+ locks[threadGroupIndex].lock();
+ locks[threadGroupIndex].unlock();
+ }
+
+ EXPECT_EQ(true, LockInspector::isFullyReset(locks[threadGroupIndex]));
+ }
+}
+
+bool skipSlow()
+{
+#if PLATFORM(WIN) && !defined(NDEBUG)
+ return true;
+#else
+ return false;
+#endif
+}
+
+TEST(WTF_WordLock, UncontendedShortSection)
+{
+ runLockTest<WordLock>(1, 1, 1, 10000000);
+}
+
+TEST(WTF_WordLock, UncontendedLongSection)
+{
+ runLockTest<WordLock>(1, 1, 10000, 1000);
+}
+
+TEST(WTF_WordLock, ContendedShortSection)
+{
+ if (skipSlow())
+ return;
+ runLockTest<WordLock>(1, 10, 1, 5000000);
+}
+
+TEST(WTF_WordLock, ContendedLongSection)
+{
+ if (skipSlow())
+ return;
+ runLockTest<WordLock>(1, 10, 10000, 10000);
+}
+
+TEST(WTF_WordLock, ManyContendedShortSections)
+{
+ if (skipSlow())
+ return;
+ runLockTest<WordLock>(10, 10, 1, 500000);
+}
+
+TEST(WTF_WordLock, ManyContendedLongSections)
+{
+ if (skipSlow())
+ return;
+ runLockTest<WordLock>(10, 10, 10000, 500);
+}
+
+TEST(WTF_Lock, UncontendedShortSection)
+{
+ runLockTest<Lock>(1, 1, 1, 10000000);
+}
+
+TEST(WTF_Lock, UncontendedLongSection)
+{
+ runLockTest<Lock>(1, 1, 10000, 1000);
+}
+
+TEST(WTF_Lock, ContendedShortSection)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(1, 10, 1, 10000000);
+}
+
+TEST(WTF_Lock, ContendedLongSection)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(1, 10, 10000, 10000);
+}
+
+TEST(WTF_Lock, ManyContendedShortSections)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(10, 10, 1, 500000);
+}
+
+TEST(WTF_Lock, ManyContendedLongSections)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(10, 10, 10000, 1000);
+}
+
+TEST(WTF_Lock, ManyContendedLongerSections)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(10, 10, 100000, 1);
+}
+
+TEST(WTF_Lock, SectionAddressCollision)
+{
+ if (skipSlow())
+ return;
+ runLockTest<Lock>(4, 2, 10000, 2000);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp b/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp
index 7f592aee4..2c862a9cf 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/MD5.cpp
@@ -21,12 +21,12 @@ static void expectMD5(CString input, CString expected)
{
MD5 md5;
md5.addBytes(reinterpret_cast<const uint8_t*>(input.data()), input.length());
- Vector<uint8_t, 16> digest;
+ MD5::Digest digest;
md5.checksum(digest);
char* buf = 0;
CString actual = CString::newUninitialized(32, buf);
- for (size_t i = 0; i < 16; i++, buf += 2)
- snprintf(buf, 3, "%02x", digest.at(i));
+ for (size_t i = 0; i < MD5::hashSize; i++, buf += 2)
+ snprintf(buf, 3, "%02x", digest[i]);
ASSERT_EQ(expected.length(), actual.length());
ASSERT_STREQ(expected.data(), actual.data());
diff --git a/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp b/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp
index d6d48fc61..2386143e3 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/MediaTime.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -26,24 +26,14 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define _USE_MATH_DEFINES 1
#include "config.h"
+#include <limits>
+#include <wtf/MathExtras.h>
#include <wtf/MediaTime.h>
using namespace std;
-#if COMPILER(MSVC)
-// Work around Visual Studio 2008's lack of an INFINITY or NAN definition.
-#include <limits>
-#if !defined(INFINITY)
-#define INFINITY (numeric_limits<double>::infinity())
-#endif
-#if !defined(NAN)
-#define NAN (numeric_limits<double>::quiet_NaN())
-#endif
-#endif
-
namespace WTF {
std::ostream& operator<<(std::ostream& out, const MediaTime& val)
@@ -55,6 +45,8 @@ std::ostream& operator<<(std::ostream& out, const MediaTime& val)
out << "+infinite";
else if (val.isNegativeInfinite())
out << "-infinite";
+ else if (val.hasDoubleValue())
+ out << "double: " << val.toDouble();
else
out << "value: " << val.timeValue() << ", scale: " << val.timeScale();
return out << " }";
@@ -71,12 +63,17 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::positiveInfiniteTime(), true);
EXPECT_EQ(MediaTime::negativeInfiniteTime() == MediaTime::negativeInfiniteTime(), true);
EXPECT_EQ(MediaTime::positiveInfiniteTime() == MediaTime::positiveInfiniteTime(), true);
+ EXPECT_EQ(MediaTime::positiveInfiniteTime() != MediaTime::negativeInfiniteTime(), true);
EXPECT_EQ(MediaTime::invalidTime() == MediaTime::invalidTime(), true);
+ EXPECT_EQ(MediaTime::invalidTime() != MediaTime::invalidTime(), false);
+ EXPECT_EQ(MediaTime::invalidTime() != MediaTime::zeroTime(), true);
EXPECT_EQ(MediaTime::invalidTime() > MediaTime::negativeInfiniteTime(), true);
EXPECT_EQ(MediaTime::invalidTime() > MediaTime::positiveInfiniteTime(), true);
EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::invalidTime(), true);
EXPECT_EQ(MediaTime::positiveInfiniteTime() < MediaTime::invalidTime(), true);
EXPECT_EQ(MediaTime::indefiniteTime() == MediaTime::indefiniteTime(), true);
+ EXPECT_EQ(MediaTime::indefiniteTime() != MediaTime::indefiniteTime(), false);
+ EXPECT_EQ(MediaTime::indefiniteTime() != MediaTime::zeroTime(), true);
EXPECT_EQ(MediaTime::indefiniteTime() > MediaTime::negativeInfiniteTime(), true);
EXPECT_EQ(MediaTime::indefiniteTime() < MediaTime::positiveInfiniteTime(), true);
EXPECT_EQ(MediaTime::negativeInfiniteTime() < MediaTime::indefiniteTime(), true);
@@ -85,6 +82,7 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime::indefiniteTime() > MediaTime(1, 1), true);
EXPECT_EQ(MediaTime(1, 1) < MediaTime(2, 1), true);
EXPECT_EQ(MediaTime(2, 1) > MediaTime(1, 1), true);
+ EXPECT_EQ(MediaTime(1, 1) != MediaTime(2, 1), true);
EXPECT_EQ(MediaTime(2, 1) == MediaTime(2, 1), true);
EXPECT_EQ(MediaTime(2, 1) == MediaTime(4, 2), true);
@@ -93,6 +91,10 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime::negativeInfiniteTime() + MediaTime::negativeInfiniteTime(), MediaTime::negativeInfiniteTime());
EXPECT_EQ(MediaTime::positiveInfiniteTime() + MediaTime::negativeInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::negativeInfiniteTime() + MediaTime::positiveInfiniteTime(), MediaTime::invalidTime());
+ EXPECT_EQ(MediaTime::positiveInfiniteTime() + MediaTime(1, 1), MediaTime::positiveInfiniteTime());
+ EXPECT_EQ(MediaTime(1, 1) + MediaTime::positiveInfiniteTime(), MediaTime::positiveInfiniteTime());
+ EXPECT_EQ(MediaTime::negativeInfiniteTime() + MediaTime(1, 1), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime(1, 1) + MediaTime::negativeInfiniteTime(), MediaTime::negativeInfiniteTime());
EXPECT_EQ(MediaTime::invalidTime() + MediaTime::positiveInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::invalidTime() + MediaTime::negativeInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::invalidTime() + MediaTime::invalidTime(), MediaTime::invalidTime());
@@ -110,6 +112,10 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime::negativeInfiniteTime() - MediaTime::negativeInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::positiveInfiniteTime() - MediaTime::negativeInfiniteTime(), MediaTime::positiveInfiniteTime());
EXPECT_EQ(MediaTime::negativeInfiniteTime() - MediaTime::positiveInfiniteTime(), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime::positiveInfiniteTime() - MediaTime(1, 1), MediaTime::positiveInfiniteTime());
+ EXPECT_EQ(MediaTime(1, 1) - MediaTime::positiveInfiniteTime(), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime::negativeInfiniteTime() - MediaTime(1, 1), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime(1, 1) - MediaTime::negativeInfiniteTime(), MediaTime::positiveInfiniteTime());
EXPECT_EQ(MediaTime::invalidTime() - MediaTime::positiveInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::invalidTime() - MediaTime::negativeInfiniteTime(), MediaTime::invalidTime());
EXPECT_EQ(MediaTime::invalidTime() - MediaTime::invalidTime(), MediaTime::invalidTime());
@@ -122,6 +128,23 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime(1, 2) - MediaTime(1, 3), MediaTime(1, 6));
EXPECT_EQ(MediaTime(2, numeric_limits<int32_t>::max()-1) - MediaTime(1, numeric_limits<int32_t>::max()-2), MediaTime(1, numeric_limits<int32_t>::max()));
+ // Multiplication Operators
+ EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime::positiveInfiniteTime() * 2);
+ EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime::negativeInfiniteTime() * 2);
+ EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime::positiveInfiniteTime() * -2);
+ EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime::negativeInfiniteTime() * -2);
+ EXPECT_EQ(MediaTime::invalidTime(), MediaTime::invalidTime() * 2);
+ EXPECT_EQ(MediaTime::invalidTime(), MediaTime::invalidTime() * -2);
+ EXPECT_EQ(MediaTime::indefiniteTime(), MediaTime::indefiniteTime() * 2);
+ EXPECT_EQ(MediaTime::indefiniteTime(), MediaTime::indefiniteTime() * -2);
+ EXPECT_EQ(MediaTime(6, 1), MediaTime(3, 1) * 2);
+ EXPECT_EQ(MediaTime(0, 1), MediaTime(0, 1) * 2);
+ EXPECT_EQ(MediaTime(int64_t(1) << 60, 1), MediaTime(int64_t(1) << 60, 2) * 2);
+ EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime(numeric_limits<int64_t>::max(), 1) * 2);
+ EXPECT_EQ(MediaTime::positiveInfiniteTime(), MediaTime(numeric_limits<int64_t>::min(), 1) * -2);
+ EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime(numeric_limits<int64_t>::max(), 1) * -2);
+ EXPECT_EQ(MediaTime::negativeInfiniteTime(), MediaTime(numeric_limits<int64_t>::min(), 1) * 2);
+
// Constants
EXPECT_EQ(MediaTime::zeroTime(), MediaTime(0, 1));
EXPECT_EQ(MediaTime::invalidTime(), MediaTime(-1, 1, 0));
@@ -149,13 +172,29 @@ TEST(WTF, MediaTime)
EXPECT_EQ(MediaTime(3, 2).toDouble(), 1.5);
EXPECT_EQ(MediaTime(1, 1 << 16).toFloat(), 1 / pow(2.0f, 16.0f));
EXPECT_EQ(MediaTime(1, 1 << 30).toDouble(), 1 / pow(2.0, 30.0));
- EXPECT_EQ(MediaTime::createWithDouble(M_PI, 1 << 30), MediaTime(3373259426U, 1 << 30));
- EXPECT_EQ(MediaTime::createWithFloat(INFINITY), MediaTime::positiveInfiniteTime());
- EXPECT_EQ(MediaTime::createWithFloat(-INFINITY), MediaTime::negativeInfiniteTime());
- EXPECT_EQ(MediaTime::createWithFloat(NAN), MediaTime::invalidTime());
- EXPECT_EQ(MediaTime::createWithDouble(INFINITY), MediaTime::positiveInfiniteTime());
- EXPECT_EQ(MediaTime::createWithDouble(-INFINITY), MediaTime::negativeInfiniteTime());
- EXPECT_EQ(MediaTime::createWithDouble(NAN), MediaTime::invalidTime());
+ EXPECT_EQ(MediaTime::createWithDouble(piDouble, 1 << 30), MediaTime(3373259426U, 1 << 30));
+
+ EXPECT_EQ(MediaTime::createWithFloat(std::numeric_limits<float>::infinity()), MediaTime::positiveInfiniteTime());
+ EXPECT_EQ(MediaTime::createWithFloat(-std::numeric_limits<float>::infinity()), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime::createWithFloat(std::numeric_limits<float>::quiet_NaN()), MediaTime::invalidTime());
+
+ EXPECT_EQ(MediaTime::createWithDouble(std::numeric_limits<double>::infinity()), MediaTime::positiveInfiniteTime());
+ EXPECT_EQ(MediaTime::createWithDouble(-std::numeric_limits<double>::infinity()), MediaTime::negativeInfiniteTime());
+ EXPECT_EQ(MediaTime::createWithDouble(std::numeric_limits<double>::quiet_NaN()), MediaTime::invalidTime());
+
+ // Floating Point Round Trip
+ EXPECT_EQ(10.0123456789f, MediaTime::createWithFloat(10.0123456789f).toFloat());
+ EXPECT_EQ(10.0123456789, MediaTime::createWithDouble(10.0123456789).toDouble());
+
+ // Floating Point Math
+ EXPECT_EQ(1.5 + 3.3, (MediaTime::createWithDouble(1.5) + MediaTime::createWithDouble(3.3)).toDouble());
+ EXPECT_EQ(1.5 - 3.3, (MediaTime::createWithDouble(1.5) - MediaTime::createWithDouble(3.3)).toDouble());
+ EXPECT_EQ(-3.3, (-MediaTime::createWithDouble(3.3)).toDouble());
+ EXPECT_EQ(3.3 * 2, (MediaTime::createWithDouble(3.3) * 2).toDouble());
+
+ // Floating Point and non-Floating Point math
+ EXPECT_EQ(2.0, (MediaTime::createWithDouble(1.5) + MediaTime(1, 2)).toDouble());
+ EXPECT_EQ(1.0, (MediaTime::createWithDouble(1.5) - MediaTime(1, 2)).toDouble());
// Overflow Behavior
EXPECT_EQ(MediaTime::createWithFloat(pow(2.0f, 64.0f)), MediaTime::positiveInfiniteTime());
diff --git a/Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp b/Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp
index 61c16d1ab..59af4f849 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/MetaAllocator.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
@@ -31,6 +31,10 @@
#include <wtf/MetaAllocator.h>
#include <wtf/Vector.h>
+#if OS(WINDOWS)
+#undef small
+#endif
+
using namespace WTF;
namespace TestWebKitAPI {
diff --git a/Tools/TestWebKitAPI/Tests/WTF/MoveOnly.h b/Tools/TestWebKitAPI/Tests/WTF/MoveOnly.h
new file mode 100644
index 000000000..cecc49152
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/MoveOnly.h
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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 MoveOnly_h
+#define MoveOnly_h
+
+#include <wtf/HashFunctions.h>
+#include <wtf/HashTraits.h>
+
+class MoveOnly {
+public:
+ MoveOnly()
+ : m_value(0)
+ {
+ }
+
+ MoveOnly(unsigned value)
+ : m_value(value)
+ {
+ }
+
+ unsigned value() const
+ {
+ return m_value;
+ }
+
+ MoveOnly(MoveOnly&& other)
+ : m_value(other.m_value)
+ {
+ other.m_value = 0;
+ }
+
+ MoveOnly& operator=(MoveOnly&& other)
+ {
+ if (this == &other)
+ return *this;
+
+ m_value = other.m_value;
+ other.m_value = 0;
+ return *this;
+ }
+
+ friend bool operator==(const MoveOnly& a, const MoveOnly& b)
+ {
+ return a.m_value == b.m_value;
+ }
+
+private:
+ unsigned m_value;
+};
+
+namespace WTF {
+
+template<> struct HashTraits<MoveOnly> : public GenericHashTraits<MoveOnly> {
+ static void constructDeletedValue(MoveOnly& slot) { slot = MoveOnly(std::numeric_limits<unsigned>::max()); }
+ static bool isDeletedValue(const MoveOnly& slot) { return slot.value() == std::numeric_limits<unsigned>::max(); }
+};
+
+template<> struct DefaultHash<MoveOnly> {
+ struct Hash {
+ static unsigned hash(const MoveOnly& key)
+ {
+ return intHash(key.value());
+ }
+
+ static bool equal(const MoveOnly& a, const MoveOnly& b)
+ {
+ return a == b;
+ }
+
+ static const bool safeToCompareToEmptyOrDeleted = true;
+ };
+};
+} // namespace WTF
+
+#endif // MoveOnly_h
diff --git a/Tools/TestWebKitAPI/Tests/WTF/NakedPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/NakedPtr.cpp
new file mode 100644
index 000000000..f4b4836cd
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/NakedPtr.cpp
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2015 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 "RefLogger.h"
+#include <wtf/NakedPtr.h>
+
+namespace TestWebKitAPI {
+
+// For these tests, we need a base class and a derived class. For this purpose,
+// we reuse the RefLogger and DerivedRefLogger classes.
+
+TEST(WTF_NakedPtr, Basic)
+{
+ DerivedRefLogger a("a");
+
+ NakedPtr<RefLogger> empty;
+ ASSERT_EQ(nullptr, empty.get());
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ASSERT_EQ(&a, &*ptr);
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+
+ {
+ NakedPtr<RefLogger> ptr = &a;
+ ASSERT_EQ(&a, ptr.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2(p1);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2 = p1;
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2 = WTFMove(p1);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2(WTFMove(p1));
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<DerivedRefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2 = p1;
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<DerivedRefLogger> p1 = &a;
+ NakedPtr<RefLogger> p2 = WTFMove(p1);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr.clear();
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+}
+
+TEST(WTF_NakedPtr, Assignment)
+{
+ DerivedRefLogger a("a");
+ RefLogger b("b");
+ DerivedRefLogger c("c");
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ p1 = p2;
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = &b;
+ ASSERT_EQ(&b, ptr.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = nullptr;
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ p1 = WTFMove(p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<DerivedRefLogger> p2(&c);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ p1 = p2;
+ ASSERT_EQ(&c, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = &c;
+ ASSERT_EQ(&c, ptr.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<DerivedRefLogger> p2(&c);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ p1 = WTFMove(p2);
+ ASSERT_EQ(&c, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = ptr;
+ ASSERT_EQ(&a, ptr.get());
+ }
+
+ {
+ NakedPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+#if COMPILER(CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wself-move"
+#endif
+ ptr = WTFMove(ptr);
+#if COMPILER(CLANG)
+#pragma clang diagnostic pop
+#endif
+ ASSERT_EQ(&a, ptr.get());
+ }
+}
+
+TEST(WTF_NakedPtr, Swap)
+{
+ RefLogger a("a");
+ RefLogger b("b");
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ p1.swap(p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+
+ {
+ NakedPtr<RefLogger> p1(&a);
+ NakedPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ std::swap(p1, p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+}
+
+NakedPtr<RefLogger> nakedPtrFoo(RefLogger& logger)
+{
+ return NakedPtr<RefLogger>(&logger);
+}
+
+TEST(WTF_NakedPtr, ReturnValue)
+{
+ DerivedRefLogger a("a");
+
+ {
+ auto ptr = nakedPtrFoo(a);
+ ASSERT_EQ(&a, ptr.get());
+ ASSERT_EQ(&a, &*ptr);
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp b/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp
new file mode 100644
index 000000000..37efc9939
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/OptionSet.cpp
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2016 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. 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 INC. 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 "Test.h"
+#include <wtf/OptionSet.h>
+
+namespace TestWebKitAPI {
+
+enum class ExampleFlags : uint64_t {
+ A = 1 << 0,
+ B = 1 << 1,
+ C = 1 << 2,
+ D = 1ULL << 31,
+ E = 1ULL << 63,
+};
+
+TEST(WTF_OptionSet, EmptySet)
+{
+ OptionSet<ExampleFlags> set;
+ EXPECT_TRUE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::D));
+ EXPECT_FALSE(set.contains(ExampleFlags::E));
+}
+
+TEST(WTF_OptionSet, ContainsOneFlag)
+{
+ OptionSet<ExampleFlags> set = ExampleFlags::A;
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::D));
+ EXPECT_FALSE(set.contains(ExampleFlags::E));
+}
+
+TEST(WTF_OptionSet, ContainsTwoFlags)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::A, ExampleFlags::B };
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_TRUE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::D));
+ EXPECT_FALSE(set.contains(ExampleFlags::E));
+}
+
+TEST(WTF_OptionSet, ContainsTwoFlags2)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::A, ExampleFlags::D };
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_TRUE(set.contains(ExampleFlags::D));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::E));
+}
+
+TEST(WTF_OptionSet, ContainsTwoFlags3)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::D, ExampleFlags::E };
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::D));
+ EXPECT_TRUE(set.contains(ExampleFlags::E));
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+}
+
+TEST(WTF_OptionSet, OperatorBitwiseOr)
+{
+ OptionSet<ExampleFlags> set = ExampleFlags::A;
+ set |= ExampleFlags::C;
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_TRUE(set.contains(ExampleFlags::C));
+}
+
+TEST(WTF_OptionSet, EmptyOptionSetToRawValueToOptionSet)
+{
+ OptionSet<ExampleFlags> set;
+ EXPECT_TRUE(set.isEmpty());
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+
+ auto set2 = OptionSet<ExampleFlags>::fromRaw(set.toRaw());
+ EXPECT_TRUE(set2.isEmpty());
+ EXPECT_FALSE(set2.contains(ExampleFlags::A));
+ EXPECT_FALSE(set2.contains(ExampleFlags::B));
+ EXPECT_FALSE(set2.contains(ExampleFlags::C));
+}
+
+TEST(WTF_OptionSet, OptionSetThatContainsOneFlagToRawValueToOptionSet)
+{
+ OptionSet<ExampleFlags> set = ExampleFlags::A;
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::D));
+ EXPECT_FALSE(set.contains(ExampleFlags::E));
+
+ auto set2 = OptionSet<ExampleFlags>::fromRaw(set.toRaw());
+ EXPECT_FALSE(set2.isEmpty());
+ EXPECT_TRUE(set2.contains(ExampleFlags::A));
+ EXPECT_FALSE(set2.contains(ExampleFlags::B));
+ EXPECT_FALSE(set2.contains(ExampleFlags::C));
+ EXPECT_FALSE(set2.contains(ExampleFlags::D));
+ EXPECT_FALSE(set2.contains(ExampleFlags::E));
+}
+
+TEST(WTF_OptionSet, OptionSetThatContainsOneFlagToRawValueToOptionSet2)
+{
+ OptionSet<ExampleFlags> set = ExampleFlags::E;
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::E));
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::D));
+
+ auto set2 = OptionSet<ExampleFlags>::fromRaw(set.toRaw());
+ EXPECT_FALSE(set2.isEmpty());
+ EXPECT_TRUE(set2.contains(ExampleFlags::E));
+ EXPECT_FALSE(set2.contains(ExampleFlags::A));
+ EXPECT_FALSE(set2.contains(ExampleFlags::B));
+ EXPECT_FALSE(set2.contains(ExampleFlags::C));
+ EXPECT_FALSE(set2.contains(ExampleFlags::D));
+}
+
+TEST(WTF_OptionSet, OptionSetThatContainsTwoFlagsToRawValueToOptionSet)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::A, ExampleFlags::C };
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::A));
+ EXPECT_TRUE(set.contains(ExampleFlags::C));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+
+ auto set2 = OptionSet<ExampleFlags>::fromRaw(set.toRaw());
+ EXPECT_FALSE(set2.isEmpty());
+ EXPECT_TRUE(set2.contains(ExampleFlags::A));
+ EXPECT_TRUE(set2.contains(ExampleFlags::C));
+ EXPECT_FALSE(set2.contains(ExampleFlags::B));
+}
+
+TEST(WTF_OptionSet, OptionSetThatContainsTwoFlagsToRawValueToOptionSet2)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::D, ExampleFlags::E };
+ EXPECT_FALSE(set.isEmpty());
+ EXPECT_TRUE(set.contains(ExampleFlags::D));
+ EXPECT_TRUE(set.contains(ExampleFlags::E));
+ EXPECT_FALSE(set.contains(ExampleFlags::A));
+ EXPECT_FALSE(set.contains(ExampleFlags::B));
+ EXPECT_FALSE(set.contains(ExampleFlags::C));
+
+ auto set2 = OptionSet<ExampleFlags>::fromRaw(set.toRaw());
+ EXPECT_FALSE(set2.isEmpty());
+ EXPECT_TRUE(set2.contains(ExampleFlags::D));
+ EXPECT_TRUE(set2.contains(ExampleFlags::E));
+ EXPECT_FALSE(set2.contains(ExampleFlags::A));
+ EXPECT_FALSE(set2.contains(ExampleFlags::B));
+ EXPECT_FALSE(set2.contains(ExampleFlags::C));
+}
+
+TEST(WTF_OptionSet, TwoIteratorsIntoSameOptionSet)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::C, ExampleFlags::B };
+ OptionSet<ExampleFlags>::iterator it1 = set.begin();
+ OptionSet<ExampleFlags>::iterator it2 = it1;
+ ++it1;
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::C, *it1);
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::B, *it2);
+}
+
+TEST(WTF_OptionSet, IterateOverOptionSetThatContainsTwoFlags)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::A, ExampleFlags::C };
+ OptionSet<ExampleFlags>::iterator it = set.begin();
+ OptionSet<ExampleFlags>::iterator end = set.end();
+ EXPECT_TRUE(it != end);
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::A, *it);
+ ++it;
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::C, *it);
+ ++it;
+ EXPECT_TRUE(it == end);
+}
+
+TEST(WTF_OptionSet, IterateOverOptionSetThatContainsFlags2)
+{
+ OptionSet<ExampleFlags> set { ExampleFlags::D, ExampleFlags::E };
+ OptionSet<ExampleFlags>::iterator it = set.begin();
+ OptionSet<ExampleFlags>::iterator end = set.end();
+ EXPECT_TRUE(it != end);
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::D, *it);
+ ++it;
+ EXPECT_STRONG_ENUM_EQ(ExampleFlags::E, *it);
+ ++it;
+ EXPECT_TRUE(it == end);
+}
+
+TEST(WTF_OptionSet, NextItemAfterLargestIn32BitFlagSet)
+{
+ enum class ThirtyTwoBitFlags : uint32_t {
+ A = 1UL << 31,
+ };
+ OptionSet<ThirtyTwoBitFlags> set { ThirtyTwoBitFlags::A };
+ OptionSet<ThirtyTwoBitFlags>::iterator it = set.begin();
+ OptionSet<ThirtyTwoBitFlags>::iterator end = set.end();
+ EXPECT_TRUE(it != end);
+ ++it;
+ EXPECT_TRUE(it == end);
+}
+
+TEST(WTF_OptionSet, NextItemAfterLargestIn64BitFlagSet)
+{
+ enum class SixtyFourBitFlags : uint64_t {
+ A = 1ULL << 63,
+ };
+ OptionSet<SixtyFourBitFlags> set { SixtyFourBitFlags::A };
+ OptionSet<SixtyFourBitFlags>::iterator it = set.begin();
+ OptionSet<SixtyFourBitFlags>::iterator end = set.end();
+ EXPECT_TRUE(it != end);
+ ++it;
+ EXPECT_TRUE(it == end);
+}
+
+TEST(WTF_OptionSet, IterationOrderTheSameRegardlessOfInsertionOrder)
+{
+ OptionSet<ExampleFlags> set1 = ExampleFlags::C;
+ set1 |= ExampleFlags::A;
+
+ OptionSet<ExampleFlags> set2 = ExampleFlags::A;
+ set2 |= ExampleFlags::C;
+
+ OptionSet<ExampleFlags>::iterator it1 = set1.begin();
+ OptionSet<ExampleFlags>::iterator it2 = set2.begin();
+
+ EXPECT_TRUE(*it1 == *it2);
+ ++it1;
+ ++it2;
+ EXPECT_TRUE(*it1 == *it2);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp b/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp
new file mode 100644
index 000000000..a0715fd62
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/Optional.cpp
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 <wtf/Optional.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_Optional, Disengaged)
+{
+ {
+ Optional<int> optional;
+
+ EXPECT_FALSE(static_cast<bool>(optional));
+ }
+
+ {
+ Optional<int> optional { Nullopt };
+
+ EXPECT_FALSE(static_cast<bool>(optional));
+ }
+}
+
+TEST(WTF_Optional, Engaged)
+{
+ Optional<int> optional { 10 };
+
+ EXPECT_TRUE(static_cast<bool>(optional));
+ EXPECT_EQ(10, optional.value());
+}
+
+TEST(WTF_Optional, Destructor)
+{
+ static bool didCallDestructor = false;
+ struct A {
+ ~A()
+ {
+ EXPECT_FALSE(didCallDestructor);
+ didCallDestructor = true;
+ }
+ };
+
+ {
+ Optional<A> optional { InPlace };
+
+ EXPECT_TRUE(static_cast<bool>(optional));
+ }
+
+ EXPECT_TRUE(didCallDestructor);
+}
+
+TEST(WTF_Optional, Callback)
+{
+ bool called = false;
+ Optional<int> a;
+ int result = a.valueOrCompute([&] {
+ called = true;
+ return 300;
+ });
+ EXPECT_TRUE(called);
+ EXPECT_EQ(result, 300);
+
+ a = 250;
+ called = false;
+ result = a.valueOrCompute([&] {
+ called = true;
+ return 300;
+ });
+ EXPECT_FALSE(called);
+ EXPECT_EQ(result, 250);
+}
+
+TEST(WTF_Optional, Equality)
+{
+ Optional<int> unengaged1;
+ Optional<int> unengaged2;
+
+ Optional<int> engaged1 { 1 };
+ Optional<int> engaged2 { 2 };
+ Optional<int> engagedx2 { 2 };
+
+ EXPECT_TRUE(unengaged1 == unengaged2);
+ EXPECT_FALSE(engaged1 == engaged2);
+ EXPECT_FALSE(engaged1 == unengaged1);
+ EXPECT_TRUE(engaged2 == engagedx2);
+
+ EXPECT_TRUE(unengaged1 == Nullopt);
+ EXPECT_FALSE(engaged1 == Nullopt);
+ EXPECT_TRUE(Nullopt == unengaged1);
+ EXPECT_FALSE(Nullopt == engaged1);
+
+ EXPECT_TRUE(engaged1 == 1);
+ EXPECT_TRUE(1 == engaged1);
+ EXPECT_FALSE(unengaged1 == 1);
+ EXPECT_FALSE(1 == unengaged1);
+}
+
+TEST(WTF_Optional, Inequality)
+{
+ Optional<int> unengaged1;
+ Optional<int> unengaged2;
+
+ Optional<int> engaged1 { 1 };
+ Optional<int> engaged2 { 2 };
+ Optional<int> engagedx2 { 2 };
+
+ EXPECT_FALSE(unengaged1 != unengaged2);
+ EXPECT_TRUE(engaged1 != engaged2);
+ EXPECT_TRUE(engaged1 != unengaged1);
+ EXPECT_FALSE(engaged2 != engagedx2);
+
+ EXPECT_FALSE(unengaged1 != Nullopt);
+ EXPECT_TRUE(engaged1 != Nullopt);
+ EXPECT_FALSE(Nullopt != unengaged1);
+ EXPECT_TRUE(Nullopt != engaged1);
+
+ EXPECT_FALSE(engaged1 != 1);
+ EXPECT_TRUE(engaged1 != 2);
+ EXPECT_FALSE(1 != engaged1);
+ EXPECT_TRUE(2 != engaged1);
+
+ EXPECT_TRUE(unengaged1 != 1);
+ EXPECT_TRUE(1 != unengaged1);
+}
+
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/ParkingLot.cpp b/Tools/TestWebKitAPI/Tests/WTF/ParkingLot.cpp
new file mode 100644
index 000000000..b6a881fe0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/ParkingLot.cpp
@@ -0,0 +1,275 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 <condition_variable>
+#include <mutex>
+#include <thread>
+#include <wtf/DataLog.h>
+#include <wtf/HashSet.h>
+#include <wtf/ListDump.h>
+#include <wtf/ParkingLot.h>
+#include <wtf/Threading.h>
+#include <wtf/ThreadingPrimitives.h>
+
+using namespace WTF;
+
+namespace TestWebKitAPI {
+
+namespace {
+
+struct SingleLatchTest {
+ void initialize(unsigned numThreads)
+ {
+ // This implements a fair (FIFO) semaphore, and it starts out unavailable.
+ semaphore.store(0);
+
+ for (unsigned i = numThreads; i--;) {
+ threads.append(
+ createThread(
+ "Parking Test Thread",
+ [&] () {
+ EXPECT_NE(0u, currentThread());
+
+ down();
+
+ std::lock_guard<std::mutex> locker(lock);
+ awake.add(currentThread());
+ lastAwoken = currentThread();
+ condition.notify_one();
+ }));
+ }
+ }
+
+ void unparkOne(unsigned singleUnparkIndex)
+ {
+ EXPECT_EQ(0u, lastAwoken);
+
+ unsigned numWaitingOnAddress = 0;
+ Vector<ThreadIdentifier, 8> queue;
+ ParkingLot::forEach(
+ [&] (ThreadIdentifier threadIdentifier, const void* address) {
+ if (address != &semaphore)
+ return;
+
+ queue.append(threadIdentifier);
+
+ numWaitingOnAddress++;
+ });
+
+ EXPECT_LE(numWaitingOnAddress, threads.size() - singleUnparkIndex);
+
+ up();
+
+ {
+ std::unique_lock<std::mutex> locker(lock);
+ while (awake.size() < singleUnparkIndex + 1)
+ condition.wait(locker);
+ EXPECT_NE(0u, lastAwoken);
+ if (!queue.isEmpty() && queue[0] != lastAwoken) {
+ dataLog("Woke up wrong thread: queue = ", listDump(queue), ", last awoken = ", lastAwoken, "\n");
+ EXPECT_EQ(queue[0], lastAwoken);
+ }
+ lastAwoken = 0;
+ }
+ }
+
+ void finish(unsigned numSingleUnparks)
+ {
+ unsigned numWaitingOnAddress = 0;
+ ParkingLot::forEach(
+ [&] (ThreadIdentifier, const void* address) {
+ if (address != &semaphore)
+ return;
+
+ numWaitingOnAddress++;
+ });
+
+ EXPECT_LE(numWaitingOnAddress, threads.size() - numSingleUnparks);
+
+ semaphore.store(threads.size() - numSingleUnparks);
+ ParkingLot::unparkAll(&semaphore);
+
+ numWaitingOnAddress = 0;
+ ParkingLot::forEach(
+ [&] (ThreadIdentifier, const void* address) {
+ if (address != &semaphore)
+ return;
+
+ numWaitingOnAddress++;
+ });
+
+ EXPECT_EQ(0u, numWaitingOnAddress);
+
+ {
+ std::unique_lock<std::mutex> locker(lock);
+ while (awake.size() < threads.size())
+ condition.wait(locker);
+ }
+
+ for (ThreadIdentifier threadIdentifier : threads)
+ waitForThreadCompletion(threadIdentifier);
+ }
+
+ // Semaphore operations.
+ void down()
+ {
+ for (;;) {
+ int oldSemaphoreValue = semaphore.load();
+ int newSemaphoreValue = oldSemaphoreValue - 1;
+ if (!semaphore.compareExchangeWeak(oldSemaphoreValue, newSemaphoreValue))
+ continue;
+
+ if (oldSemaphoreValue > 0) {
+ // We acquired the semaphore. Done.
+ return;
+ }
+
+ // We need to wait.
+ if (ParkingLot::compareAndPark(&semaphore, newSemaphoreValue)) {
+ // We did wait, and then got woken up. This means that someone who up'd the semaphore
+ // passed ownership onto us.
+ return;
+ }
+
+ // We never parked, because the semaphore value changed. Undo our decrement and try again.
+ for (;;) {
+ int oldSemaphoreValue = semaphore.load();
+ if (semaphore.compareExchangeWeak(oldSemaphoreValue, oldSemaphoreValue + 1))
+ break;
+ }
+ }
+ }
+ void up()
+ {
+ int oldSemaphoreValue;
+ for (;;) {
+ oldSemaphoreValue = semaphore.load();
+ if (semaphore.compareExchangeWeak(oldSemaphoreValue, oldSemaphoreValue + 1))
+ break;
+ }
+
+ // Check if anyone was waiting on the semaphore. If they were, then pass ownership to them.
+ if (oldSemaphoreValue < 0)
+ ParkingLot::unparkOne(&semaphore);
+ }
+
+ Atomic<int> semaphore;
+ std::mutex lock;
+ std::condition_variable condition;
+ HashSet<ThreadIdentifier> awake;
+ Vector<ThreadIdentifier> threads;
+ ThreadIdentifier lastAwoken { 0 };
+};
+
+void runParkingTest(unsigned numLatches, unsigned delay, unsigned numThreads, unsigned numSingleUnparks)
+{
+ std::unique_ptr<SingleLatchTest[]> tests = std::make_unique<SingleLatchTest[]>(numLatches);
+
+ for (unsigned latchIndex = numLatches; latchIndex--;)
+ tests[latchIndex].initialize(numThreads);
+
+ for (unsigned unparkIndex = 0; unparkIndex < numSingleUnparks; ++unparkIndex) {
+ std::this_thread::sleep_for(std::chrono::microseconds(delay));
+ for (unsigned latchIndex = numLatches; latchIndex--;)
+ tests[latchIndex].unparkOne(unparkIndex);
+ }
+
+ for (unsigned latchIndex = numLatches; latchIndex--;)
+ tests[latchIndex].finish(numSingleUnparks);
+}
+
+void repeatParkingTest(unsigned numRepeats, unsigned numLatches, unsigned delay, unsigned numThreads, unsigned numSingleUnparks)
+{
+ while (numRepeats--)
+ runParkingTest(numLatches, delay, numThreads, numSingleUnparks);
+}
+
+} // anonymous namespace
+
+TEST(WTF_ParkingLot, UnparkAllOneFast)
+{
+ repeatParkingTest(10000, 1, 0, 1, 0);
+}
+
+TEST(WTF_ParkingLot, UnparkAllHundredFast)
+{
+ repeatParkingTest(100, 1, 0, 100, 0);
+}
+
+TEST(WTF_ParkingLot, UnparkOneOneFast)
+{
+ repeatParkingTest(1000, 1, 0, 1, 1);
+}
+
+TEST(WTF_ParkingLot, UnparkOneHundredFast)
+{
+ repeatParkingTest(20, 1, 0, 100, 100);
+}
+
+TEST(WTF_ParkingLot, UnparkOneFiftyThenFiftyAllFast)
+{
+ repeatParkingTest(50, 1, 0, 100, 50);
+}
+
+TEST(WTF_ParkingLot, UnparkAllOne)
+{
+ repeatParkingTest(100, 1, 10000, 1, 0);
+}
+
+TEST(WTF_ParkingLot, UnparkAllHundred)
+{
+ repeatParkingTest(100, 1, 10000, 100, 0);
+}
+
+TEST(WTF_ParkingLot, UnparkOneOne)
+{
+ repeatParkingTest(10, 1, 10000, 1, 1);
+}
+
+TEST(WTF_ParkingLot, UnparkOneFifty)
+{
+ repeatParkingTest(1, 1, 10000, 50, 50);
+}
+
+#if !PLATFORM(IOS)
+TEST(WTF_ParkingLot, UnparkOneFiftyThenFiftyAll)
+{
+ repeatParkingTest(2, 1, 10000, 100, 50);
+}
+#endif
+
+TEST(WTF_ParkingLot, HundredUnparkAllOneFast)
+{
+ repeatParkingTest(100, 100, 0, 1, 0);
+}
+
+TEST(WTF_ParkingLot, HundredUnparkAllOne)
+{
+ repeatParkingTest(1, 100, 10000, 1, 0);
+}
+
+} // namespace TestWebKitAPI
+
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp b/Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp
index 1a1c9fdfc..5e5c8adc4 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/RedBlackTree.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp b/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
new file mode 100644
index 000000000..c35606e23
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/Ref.cpp
@@ -0,0 +1,161 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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 "RefLogger.h"
+#include <wtf/Ref.h>
+#include <wtf/RefPtr.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_Ref, Basic)
+{
+ DerivedRefLogger a("a");
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ Ref<RefLogger> ptr(adoptRef(a));
+ ASSERT_EQ(&a, ptr.ptr());
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+ ASSERT_STREQ("deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_Ref, Assignment)
+{
+ DerivedRefLogger a("a");
+ RefLogger b("b");
+ DerivedRefLogger c("c");
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ log() << "| ";
+ ptr = b;
+ ASSERT_EQ(&b, ptr.ptr());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(b) deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ log() << "| ";
+ ptr = c;
+ ASSERT_EQ(&c, ptr.ptr());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(c) deref(a) | deref(c) ", takeLogStr().c_str());
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ log() << "| ";
+ ptr = adoptRef(b);
+ ASSERT_EQ(&b, ptr.ptr());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ log() << "| ";
+ ptr = adoptRef(c);
+ ASSERT_EQ(&c, ptr.ptr());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | deref(a) | deref(c) ", takeLogStr().c_str());
+}
+
+static Ref<RefLogger> passWithRef(Ref<RefLogger>&& reference)
+{
+ return WTFMove(reference);
+}
+
+static RefPtr<RefLogger> passWithPassRefPtr(PassRefPtr<RefLogger> reference)
+{
+ return reference;
+}
+
+TEST(WTF_Ref, ReturnValue)
+{
+ DerivedRefLogger a("a");
+ RefLogger b("b");
+ DerivedRefLogger c("c");
+
+ {
+ Ref<RefLogger> ptr(passWithRef(Ref<RefLogger>(a)));
+ ASSERT_EQ(&a, ptr.ptr());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ Ref<RefLogger> ptr(a);
+ ASSERT_EQ(&a, ptr.ptr());
+ log() << "| ";
+ ptr = passWithRef(b);
+ ASSERT_EQ(&b, ptr.ptr());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(b) deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(passWithRef(a));
+ ASSERT_EQ(&a, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(passWithPassRefPtr(passWithRef(a)));
+ ASSERT_EQ(&a, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> ptr(&a);
+ RefPtr<RefLogger> ptr2(WTFMove(ptr));
+ ASSERT_EQ(nullptr, ptr.get());
+ ASSERT_EQ(&a, ptr2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ Ref<DerivedRefLogger> derivedReference(a);
+ Ref<RefLogger> baseReference(passWithRef(derivedReference.copyRef()));
+ ASSERT_EQ(&a, derivedReference.ptr());
+ ASSERT_EQ(&a, baseReference.ptr());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RefCounter.cpp b/Tools/TestWebKitAPI/Tests/WTF/RefCounter.cpp
new file mode 100644
index 000000000..f8771e0c2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/RefCounter.cpp
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2011 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. 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 INC. 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 <wtf/Ref.h>
+#include <wtf/RefCounter.h>
+#include <wtf/text/WTFString.h>
+
+namespace TestWebKitAPI {
+
+static const int CallbackExpected = 0xC0FFEE;
+static const int CallbackNotExpected = 0xDECAF;
+
+enum CounterType { };
+typedef RefCounter::Token<CounterType> TokenType;
+
+TEST(WTF, RefCounter)
+{
+ // RefCounter API is pretty simple, containing the following 4 methods to test:
+ //
+ // 1) RefCounter(std::function<void()>);
+ // 2) ~RefCounter();
+ // 3) Ref<Count> token() const;
+ // 4) unsigned value() const;
+ //
+ // We'll test:
+ // 1) Construction:
+ // 1a) with a callback
+ // 1b) without a callback
+ // 2) Destruction where the RefCounter::Count has:
+ // 2a) a non-zero reference count (Count outlives RefCounter).
+ // 2b) a zero reference count (Count is deleted by RefCounter's destructor).
+ // 3) Call count to ref/deref the Count object, where:
+ // 3a) ref with callback from 0 -> 1.
+ // 3b) ref with callback from 1 -> >1.
+ // 3c) deref with callback from >1 -> 1.
+ // 3d) deref with callback from 1 -> 0.
+ // 3d) deref with callback from 1 -> 0.
+ // 3e) ref with callback from 1 -> >1 AFTER RefCounter has been destroyed.
+ // 3f) deref with callback from >1 -> 1 AFTER RefCounter has been destroyed.
+ // 3g) deref with callback from 1 -> 0 AFTER RefCounter has been destroyed.
+ // 3h) ref without callback
+ // 3i) deref without callback
+ // 3j) ref using a Ref rather than a RefPtr (make sure there is no unnecessary reference count churn).
+ // 3k) deref using a Ref rather than a RefPtr (make sure there is no unnecessary reference count churn).
+ // 4) Test the value of the counter:
+ // 4a) at construction.
+ // 4b) as read within the callback.
+ // 4c) as read after the ref/deref.
+
+ // These values will outlive the following block.
+ int callbackValue = CallbackNotExpected;
+ TokenType incTo1Again;
+
+ {
+ // Testing (1a) - Construction with a callback.
+ RefCounter* counterPtr = nullptr;
+ RefCounter counter([&](bool value) {
+ // Check that the callback is called at the expected times, and the correct number of times.
+ EXPECT_EQ(callbackValue, CallbackExpected);
+ // Value provided should be equal to the counter value.
+ EXPECT_EQ(value, counterPtr->value());
+ // return the value of the counter in the callback.
+ callbackValue = value;
+ });
+ counterPtr = &counter;
+ // Testing (4a) - after construction value() is 0.
+ EXPECT_EQ(0, static_cast<int>(counter.value()));
+
+ // Testing (3a) - ref with callback from 0 -> 1.
+ callbackValue = CallbackExpected;
+ TokenType incTo1(counter.token<CounterType>());
+ // Testing (4b) & (4c) - values within & after callback.
+ EXPECT_EQ(true, callbackValue);
+ EXPECT_EQ(1, static_cast<int>(counter.value()));
+
+ // Testing (3b) - ref with callback from 1 -> 2.
+ TokenType incTo2(incTo1);
+ // Testing (4b) & (4c) - values within & after callback.
+ EXPECT_EQ(2, static_cast<int>(counter.value()));
+
+ // Testing (3c) - deref with callback from >1 -> 1.
+ incTo1 = nullptr;
+ // Testing (4b) & (4c) - values within & after callback.
+ EXPECT_EQ(1, static_cast<int>(counter.value()));
+
+ {
+ // Testing (3j) - ref using a Ref rather than a RefPtr.
+ TokenType incTo2Again(counter.token<CounterType>());
+ // Testing (4b) & (4c) - values within & after callback.
+ EXPECT_EQ(2, static_cast<int>(counter.value()));
+ // Testing (3k) - deref using a Ref rather than a RefPtr.
+ }
+ EXPECT_EQ(1, static_cast<int>(counter.value()));
+ // Testing (4b) & (4c) - values within & after callback.
+
+ // Testing (3d) - deref with callback from 1 -> 0.
+ callbackValue = CallbackExpected;
+ incTo2 = nullptr;
+ // Testing (4b) & (4c) - values within & after callback.
+ EXPECT_EQ(0, callbackValue);
+ EXPECT_EQ(0, static_cast<int>(counter.value()));
+
+ // Testing (2a) - Destruction where the RefCounter::Count has a non-zero reference count.
+ callbackValue = CallbackExpected;
+ incTo1Again = counter.token<CounterType>();
+ EXPECT_EQ(1, callbackValue);
+ EXPECT_EQ(1, static_cast<int>(counter.value()));
+ callbackValue = CallbackNotExpected;
+ }
+
+ // Testing (3e) - ref with callback from 1 -> >1 AFTER RefCounter has been destroyed.
+ TokenType incTo2Again = incTo1Again;
+ // Testing (3f) - deref with callback from >1 -> 1 AFTER RefCounter has been destroyed.
+ incTo1Again = nullptr;
+ // Testing (3g) - deref with callback from 1 -> 0 AFTER RefCounter has been destroyed.
+ incTo2Again = nullptr;
+
+ // Testing (1b) - Construction without a callback.
+ RefCounter counter;
+ // Testing (4a) - after construction value() is 0.
+ EXPECT_EQ(0, static_cast<int>(counter.value()));
+ // Testing (3h) - ref without callback
+ TokenType incTo1(counter.token<CounterType>());
+ // Testing (4c) - value as read after the ref.
+ EXPECT_EQ(1, static_cast<int>(counter.value()));
+ // Testing (3i) - deref without callback
+ incTo1 = nullptr;
+ // Testing (4c) - value as read after the deref.
+ EXPECT_EQ(0, static_cast<int>(counter.value()));
+ // Testing (2b) - Destruction where the RefCounter::Count has a zero reference count.
+ // ... not a lot to test here! - we can at least ensure this code path is run & we don't crash!
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RefLogger.h b/Tools/TestWebKitAPI/Tests/WTF/RefLogger.h
new file mode 100644
index 000000000..c5cfb071f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/RefLogger.h
@@ -0,0 +1,56 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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 RefLogger_h
+
+namespace TestWebKitAPI {
+
+inline std::ostringstream& log()
+{
+ static std::ostringstream log;
+ return log;
+}
+
+inline std::string takeLogStr()
+{
+ std::string string = log().str();
+ log().str("");
+ return string;
+}
+
+struct RefLogger {
+ RefLogger(const char* name) : name(*name) { }
+ void ref() { log() << "ref(" << &name << ") "; }
+ void deref() { log() << "deref(" << &name << ") "; }
+ const char& name;
+};
+
+struct DerivedRefLogger : RefLogger {
+ DerivedRefLogger(const char* name) : RefLogger(name) { log().str(""); }
+};
+
+}
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp
new file mode 100644
index 000000000..aebe98c48
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/RefPtr.cpp
@@ -0,0 +1,406 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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 "RefLogger.h"
+#include <wtf/RefPtr.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_RefPtr, Basic)
+{
+ DerivedRefLogger a("a");
+
+ RefPtr<RefLogger> empty;
+ ASSERT_EQ(nullptr, empty.get());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ASSERT_EQ(&a, &*ptr);
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr = &a;
+ ASSERT_EQ(&a, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2(p1);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = p1;
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = WTFMove(p1);
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2(WTFMove(p1));
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = p1;
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) ref(a) deref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = WTFMove(p1);
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = nullptr;
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr.release();
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, AssignPassRefToRefPtr)
+{
+ DerivedRefLogger a("a");
+ {
+ Ref<RefLogger> passRef(a);
+ RefPtr<RefLogger> ptr = WTFMove(passRef);
+ ASSERT_EQ(&a, ptr.get());
+ ptr.release();
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, Adopt)
+{
+ DerivedRefLogger a("a");
+
+ RefPtr<RefLogger> empty;
+ ASSERT_EQ(nullptr, empty.get());
+
+ {
+ RefPtr<RefLogger> ptr(adoptRef(&a));
+ ASSERT_EQ(&a, ptr.get());
+ ASSERT_EQ(&a, &*ptr);
+ ASSERT_EQ(&a.name, &ptr->name);
+ }
+ ASSERT_STREQ("deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr = adoptRef(&a);
+ ASSERT_EQ(&a, ptr.get());
+ }
+ ASSERT_STREQ("deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, Assignment)
+{
+ DerivedRefLogger a("a");
+ RefLogger b("b");
+ DerivedRefLogger c("c");
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ log() << "| ";
+ p1 = p2;
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(b) | ref(b) deref(a) | deref(b) deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ ptr = &b;
+ ASSERT_EQ(&b, ptr.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(b) deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ ptr = adoptRef(&b);
+ ASSERT_EQ(&b, ptr.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ ptr = nullptr;
+ ASSERT_EQ(nullptr, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ log() << "| ";
+ p1 = WTFMove(p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(nullptr, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(b) | deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<DerivedRefLogger> p2(&c);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ log() << "| ";
+ p1 = p2;
+ ASSERT_EQ(&c, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(c) | ref(c) deref(a) | deref(c) deref(c) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ ptr = &c;
+ ASSERT_EQ(&c, ptr.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(c) deref(a) | deref(c) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ ptr = adoptRef(&c);
+ ASSERT_EQ(&c, ptr.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | deref(a) | deref(c) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<DerivedRefLogger> p2(&c);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ log() << "| ";
+ p1 = WTFMove(p2);
+ ASSERT_EQ(&c, p1.get());
+ ASSERT_EQ(nullptr, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(c) | deref(a) | deref(c) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ ptr = ptr;
+ ASSERT_EQ(&a, ptr.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) | ref(a) deref(a) | deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> ptr(&a);
+ ASSERT_EQ(&a, ptr.get());
+#if COMPILER(CLANG)
+#pragma clang diagnostic push
+#pragma clang diagnostic ignored "-Wunknown-pragmas"
+#pragma clang diagnostic ignored "-Wself-move"
+#endif
+ ptr = WTFMove(ptr);
+#if COMPILER(CLANG)
+#pragma clang diagnostic pop
+#endif
+ ASSERT_EQ(&a, ptr.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, Swap)
+{
+ RefLogger a("a");
+ RefLogger b("b");
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ p1.swap(p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(b) | deref(a) deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ std::swap(p1, p2);
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(b) | deref(a) deref(b) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, ReleaseNonNull)
+{
+ RefLogger a("a");
+
+ {
+ RefPtr<RefLogger> refPtr = &a;
+ RefPtr<RefLogger> ref = refPtr.releaseNonNull();
+ }
+
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+TEST(WTF_RefPtr, Release)
+{
+ DerivedRefLogger a("a");
+ RefLogger b("b");
+ DerivedRefLogger c("c");
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = p1.release();
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1 = &a;
+ RefPtr<RefLogger> p2(p1.release());
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<DerivedRefLogger> p1 = &a;
+ RefPtr<RefLogger> p2 = p1.release();
+ ASSERT_EQ(nullptr, p1.get());
+ ASSERT_EQ(&a, p2.get());
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<RefLogger> p2(&b);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&b, p2.get());
+ log() << "| ";
+ p1 = p2.release();
+ ASSERT_EQ(&b, p1.get());
+ ASSERT_EQ(nullptr, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(b) | deref(a) | deref(b) ", takeLogStr().c_str());
+
+ {
+ RefPtr<RefLogger> p1(&a);
+ RefPtr<DerivedRefLogger> p2(&c);
+ ASSERT_EQ(&a, p1.get());
+ ASSERT_EQ(&c, p2.get());
+ log() << "| ";
+ p1 = p2.release();
+ ASSERT_EQ(&c, p1.get());
+ ASSERT_EQ(nullptr, p2.get());
+ log() << "| ";
+ }
+ ASSERT_STREQ("ref(a) ref(c) | deref(a) | deref(c) ", takeLogStr().c_str());
+}
+
+RefPtr<RefLogger> f1(RefLogger& logger)
+{
+ return RefPtr<RefLogger>(&logger);
+}
+
+TEST(WTF_RefPtr, ReturnValue)
+{
+ DerivedRefLogger a("a");
+
+ {
+ f1(a);
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+
+ {
+ auto ptr = f1(a);
+ }
+ ASSERT_STREQ("ref(a) deref(a) ", takeLogStr().c_str());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp b/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp
new file mode 100644
index 000000000..e7e3d9f99
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/RunLoop.cpp
@@ -0,0 +1,57 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "PlatformUtilities.h"
+#include <wtf/RunLoop.h>
+
+namespace TestWebKitAPI {
+
+static bool testFinished;
+static int count = 100;
+
+TEST(WTF_RunLoop, Deadlock)
+{
+ RunLoop::initializeMainRunLoop();
+
+ struct DispatchFromDestructorTester {
+ ~DispatchFromDestructorTester() {
+ RunLoop::main().dispatch([] {
+ if (!(--count))
+ testFinished = true;
+ });
+ }
+ };
+
+ for (int i = 0; i < count; ++i) {
+ auto capture = std::make_shared<DispatchFromDestructorTester>();
+ RunLoop::main().dispatch([capture] { });
+ }
+
+ Util::run(&testFinished);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp
index d1b5b43bd..11bf3590e 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringBuilder.cpp
@@ -38,14 +38,17 @@ static void expectBuilderContent(const String& expected, const StringBuilder& bu
{
// Not using builder.toString() or builder.toStringPreserveCapacity() because they all
// change internal state of builder.
- EXPECT_EQ(expected, String(builder.characters(), builder.length()));
+ if (builder.is8Bit())
+ EXPECT_EQ(expected, String(builder.characters8(), builder.length()));
+ else
+ EXPECT_EQ(expected, String(builder.characters16(), builder.length()));
}
void expectEmpty(const StringBuilder& builder)
{
EXPECT_EQ(0U, builder.length());
EXPECT_TRUE(builder.isEmpty());
- EXPECT_EQ(0, builder.characters());
+ EXPECT_EQ(0, builder.characters8());
}
TEST(StringBuilderTest, DefaultConstructor)
@@ -72,20 +75,20 @@ TEST(StringBuilderTest, Append)
StringBuilder builder1;
builder.append("", 0);
expectBuilderContent("0123456789abcdefg#", builder);
- builder1.append(builder.characters(), builder.length());
+ builder1.append(builder.characters8(), builder.length());
builder1.append("XYZ");
- builder.append(builder1.characters(), builder1.length());
+ builder.append(builder1.characters8(), builder1.length());
expectBuilderContent("0123456789abcdefg#0123456789abcdefg#XYZ", builder);
StringBuilder builder2;
builder2.reserveCapacity(100);
builder2.append("xyz");
- const UChar* characters = builder2.characters();
+ const LChar* characters = builder2.characters8();
builder2.append("0123456789");
- ASSERT_EQ(characters, builder2.characters());
+ ASSERT_EQ(characters, builder2.characters8());
builder2.toStringPreserveCapacity(); // Test after reifyString with buffer preserved.
builder2.append("abcd");
- ASSERT_EQ(characters, builder2.characters());
+ ASSERT_EQ(characters, builder2.characters8());
// Test appending UChar32 characters to StringBuilder.
StringBuilder builderForUChar32Append;
@@ -140,7 +143,7 @@ TEST(StringBuilderTest, ToStringPreserveCapacity)
ASSERT_EQ(capacity, builder.capacity());
ASSERT_EQ(String("0123456789"), string);
ASSERT_EQ(string.impl(), builder.toStringPreserveCapacity().impl());
- ASSERT_EQ(string.characters(), builder.characters());
+ ASSERT_EQ(string.characters8(), builder.characters8());
// Changing the StringBuilder should not affect the original result of toStringPreserveCapacity().
builder.append("abcdefghijklmnopqrstuvwxyz");
@@ -151,7 +154,7 @@ TEST(StringBuilderTest, ToStringPreserveCapacity)
capacity = builder.capacity();
string = builder.toStringPreserveCapacity();
ASSERT_EQ(capacity, builder.capacity());
- ASSERT_EQ(string.characters(), builder.characters());
+ ASSERT_EQ(string.characters8(), builder.characters8());
ASSERT_EQ(String("0123456789abcdefghijklmnopqrstuvwxyz"), string);
builder.append("ABC");
ASSERT_EQ(String("0123456789abcdefghijklmnopqrstuvwxyz"), string);
@@ -160,7 +163,7 @@ TEST(StringBuilderTest, ToStringPreserveCapacity)
capacity = builder.capacity();
String string1 = builder.toStringPreserveCapacity();
ASSERT_EQ(capacity, builder.capacity());
- ASSERT_EQ(string1.characters(), builder.characters());
+ ASSERT_EQ(string1.characters8(), builder.characters8());
ASSERT_EQ(String("0123456789abcdefghijklmnopqrstuvwxyzABC"), string1);
string1.append("DEF");
ASSERT_EQ(String("0123456789abcdefghijklmnopqrstuvwxyzABC"), builder.toStringPreserveCapacity());
@@ -170,7 +173,7 @@ TEST(StringBuilderTest, ToStringPreserveCapacity)
capacity = builder.capacity();
string1 = builder.toStringPreserveCapacity();
ASSERT_EQ(capacity, builder.capacity());
- ASSERT_EQ(string.characters(), builder.characters());
+ ASSERT_EQ(string.characters8(), builder.characters8());
builder.resize(10);
builder.append("###");
ASSERT_EQ(String("0123456789abcdefghijklmnopqrstuvwxyzABC"), string1);
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp
index a4d223c99..739a8190e 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringHasher.cpp
@@ -25,7 +25,7 @@
#include "config.h"
-#include <wtf/StringHasher.h>
+#include <wtf/Hasher.h>
namespace TestWebKitAPI {
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp
index 35d64844c..01f36f7b6 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp
@@ -25,7 +25,7 @@
#include "config.h"
-#include <wtf/text/StringImpl.h>
+#include <wtf/text/SymbolImpl.h>
#include <wtf/text/WTFString.h>
namespace TestWebKitAPI {
@@ -37,7 +37,6 @@ TEST(WTF, StringImplCreationFromLiteral)
ASSERT_EQ(strlen("Template Literal"), stringWithTemplate->length());
ASSERT_TRUE(equal(stringWithTemplate.get(), "Template Literal"));
ASSERT_TRUE(stringWithTemplate->is8Bit());
- ASSERT_TRUE(stringWithTemplate->hasTerminatingNullCharacter());
// Constructor taking the size explicitely.
const char* programmaticStringData = "Explicit Size Literal";
@@ -46,7 +45,6 @@ TEST(WTF, StringImplCreationFromLiteral)
ASSERT_TRUE(equal(programmaticString.get(), programmaticStringData));
ASSERT_EQ(programmaticStringData, reinterpret_cast<const char*>(programmaticString->characters8()));
ASSERT_TRUE(programmaticString->is8Bit());
- ASSERT_TRUE(programmaticString->hasTerminatingNullCharacter());
// Constructor without explicit size.
const char* stringWithoutLengthLiteral = "No Size Literal";
@@ -55,18 +53,6 @@ TEST(WTF, StringImplCreationFromLiteral)
ASSERT_TRUE(equal(programmaticStringNoLength.get(), stringWithoutLengthLiteral));
ASSERT_EQ(stringWithoutLengthLiteral, reinterpret_cast<const char*>(programmaticStringNoLength->characters8()));
ASSERT_TRUE(programmaticStringNoLength->is8Bit());
- ASSERT_TRUE(programmaticStringNoLength->hasTerminatingNullCharacter());
-}
-
-TEST(WTF, StringImplFromLiteralLoop16BitConversion)
-{
- RefPtr<StringImpl> controlString = StringImpl::create("Template Literal");
- for (size_t i = 0; i < 10; ++i) {
- RefPtr<StringImpl> string = StringImpl::createFromLiteral("Template Literal");
-
- ASSERT_EQ(0, memcmp(controlString->characters(), string->characters(), controlString->length() * sizeof(UChar)));
- ASSERT_TRUE(string->has16BitShadow());
- }
}
TEST(WTF, StringImplReplaceWithLiteral)
@@ -113,4 +99,451 @@ TEST(WTF, StringImplReplaceWithLiteral)
ASSERT_TRUE(equal(testStringImpl.get(), "r555sum555"));
}
+TEST(WTF, StringImplEqualIgnoringASCIICaseBasic)
+{
+ RefPtr<StringImpl> a = StringImpl::createFromLiteral("aBcDeFG");
+ RefPtr<StringImpl> b = StringImpl::createFromLiteral("ABCDEFG");
+ RefPtr<StringImpl> c = StringImpl::createFromLiteral("abcdefg");
+ const char d[] = "aBcDeFG";
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ RefPtr<StringImpl> shorter = StringImpl::createFromLiteral("abcdef");
+ RefPtr<StringImpl> different = StringImpl::createFromLiteral("abcrefg");
+
+ // Identity.
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), a.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(b.get(), b.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(c.get(), c.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), d));
+ ASSERT_TRUE(equalIgnoringASCIICase(b.get(), d));
+ ASSERT_TRUE(equalIgnoringASCIICase(c.get(), d));
+
+ // Transitivity.
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), b.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(b.get(), c.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), c.get()));
+
+ // Negative cases.
+ ASSERT_FALSE(equalIgnoringASCIICase(a.get(), empty.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), empty.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(c.get(), empty.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(a.get(), shorter.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), shorter.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(c.get(), shorter.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(a.get(), different.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), different.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(c.get(), different.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(empty.get(), d));
+ ASSERT_FALSE(equalIgnoringASCIICase(shorter.get(), d));
+ ASSERT_FALSE(equalIgnoringASCIICase(different.get(), d));
+}
+
+TEST(WTF, StringImplEqualIgnoringASCIICaseWithNull)
+{
+ RefPtr<StringImpl> reference = StringImpl::createFromLiteral("aBcDeFG");
+ StringImpl* nullStringImpl = nullptr;
+ ASSERT_FALSE(equalIgnoringASCIICase(nullStringImpl, reference.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(reference.get(), nullStringImpl));
+ ASSERT_TRUE(equalIgnoringASCIICase(nullStringImpl, nullStringImpl));
+}
+
+TEST(WTF, StringImplEqualIgnoringASCIICaseWithEmpty)
+{
+ RefPtr<StringImpl> a = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ RefPtr<StringImpl> b = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), b.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(b.get(), a.get()));
+}
+
+static RefPtr<StringImpl> stringFromUTF8(const char* characters)
+{
+ return String::fromUTF8(characters).impl();
+}
+
+TEST(WTF, StringImplEqualIgnoringASCIICaseWithLatin1Characters)
+{
+ RefPtr<StringImpl> a = stringFromUTF8("aBcéeFG");
+ RefPtr<StringImpl> b = stringFromUTF8("ABCÉEFG");
+ RefPtr<StringImpl> c = stringFromUTF8("ABCéEFG");
+ RefPtr<StringImpl> d = stringFromUTF8("abcéefg");
+ const char e[] = "aBcéeFG";
+
+ // Identity.
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), a.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(b.get(), b.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(c.get(), c.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(d.get(), d.get()));
+
+ // All combination.
+ ASSERT_FALSE(equalIgnoringASCIICase(a.get(), b.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), c.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(a.get(), d.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), c.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), d.get()));
+ ASSERT_TRUE(equalIgnoringASCIICase(c.get(), d.get()));
+ ASSERT_FALSE(equalIgnoringASCIICase(a.get(), e));
+ ASSERT_FALSE(equalIgnoringASCIICase(b.get(), e));
+ ASSERT_FALSE(equalIgnoringASCIICase(c.get(), e));
+ ASSERT_FALSE(equalIgnoringASCIICase(d.get(), e));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseBasic)
+{
+ RefPtr<StringImpl> referenceA = stringFromUTF8("aBcéeFG");
+ RefPtr<StringImpl> referenceB = stringFromUTF8("ABCÉEFG");
+
+ // Search the exact string.
+ EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(referenceA.get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(referenceB.get()));
+
+ // A and B are distinct by the non-ascii character é/É.
+ EXPECT_EQ(static_cast<size_t>(notFound), referenceA->findIgnoringASCIICase(referenceB.get()));
+ EXPECT_EQ(static_cast<size_t>(notFound), referenceB->findIgnoringASCIICase(referenceA.get()));
+
+ // Find the prefix.
+ EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("a").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("abcé").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("A").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCé").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("a").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("abcÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("A").get()));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get()));
+
+ // Not a prefix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("x").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("accé").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("abcÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABDé").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("y").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("accÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("abcé").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Y").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABdÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCé").get()));
+
+ // Find the infix.
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cée").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("ée").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cé").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("c").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("é").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cée").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éE").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cé").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("C").get()));
+
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉe").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Ée").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("c").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("É").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉe").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉE").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("C").get()));
+
+ // Not an infix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("céd").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Ée").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("bé").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("x").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("É").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉe").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("éd").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Y").get()));
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cée").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("Éc").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cé").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("W").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("é").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("bÉe").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éE").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("BÉ").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("z").get()));
+
+ // Find the suffix.
+ EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("g").get()));
+ EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("efg").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éefg").get()));
+ EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("G").get()));
+ EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("EFG").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éEFG").get()));
+
+ EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("g").get()));
+ EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("efg").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Éefg").get()));
+ EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("G").get()));
+ EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("EFG").get()));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉEFG").get()));
+
+ // Not a suffix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("edg").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Éefg").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("w").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("dFG").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ÉEFG").get()));
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Z").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ffg").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éefg").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("r").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("EgG").get()));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éEFG").get()));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseWithValidOffset)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("ABCÉEFGaBcéeFG");
+ EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABC").get(), 0));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABC").get(), 1));
+ EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get(), 0));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get(), 1));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé").get(), 0));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé").get(), 1));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseWithInvalidOffset)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("ABCÉEFGaBcéeFG");
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC").get(), 15));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC").get(), 16));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get(), 17));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get(), 42));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").get(), std::numeric_limits<unsigned>::max()));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseOnNull)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("ABCÉEFG");
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 0));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 3));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 7));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 8));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 42));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, std::numeric_limits<unsigned>::max()));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseOnEmpty)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("ABCÉEFG");
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty.get()));
+ EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty.get(), 0));
+ EXPECT_EQ(static_cast<size_t>(3), reference->findIgnoringASCIICase(empty.get(), 3));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.get(), 7));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.get(), 8));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.get(), 42));
+ EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.get(), std::numeric_limits<unsigned>::max()));
+}
+
+TEST(WTF, StringImplFindIgnoringASCIICaseWithPatternLongerThanReference)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("ABCÉEFG");
+ RefPtr<StringImpl> pattern = stringFromUTF8("XABCÉEFG");
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(pattern.get()));
+ EXPECT_EQ(static_cast<size_t>(1), pattern->findIgnoringASCIICase(reference.get()));
+}
+
+TEST(WTF, StringImplStartsWithIgnoringASCIICaseBasic)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("aBcéX");
+ RefPtr<StringImpl> referenceEquivalent = stringFromUTF8("AbCéx");
+
+ // Identity.
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(reference.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*reference.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(referenceEquivalent.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*referenceEquivalent.get()));
+ ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(reference.get()));
+ ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*reference.get()));
+ ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(referenceEquivalent.get()));
+ ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*referenceEquivalent.get()));
+
+ // Proper prefixes.
+ RefPtr<StringImpl> aLower = StringImpl::createFromLiteral("a");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aLower.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aLower.get()));
+ RefPtr<StringImpl> aUpper = StringImpl::createFromLiteral("A");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aUpper.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aUpper.get()));
+
+ RefPtr<StringImpl> abcLower = StringImpl::createFromLiteral("abc");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcLower.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcLower.get()));
+ RefPtr<StringImpl> abcUpper = StringImpl::createFromLiteral("ABC");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcUpper.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcUpper.get()));
+
+ RefPtr<StringImpl> abcAccentLower = stringFromUTF8("abcé");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentLower.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentLower.get()));
+ RefPtr<StringImpl> abcAccentUpper = stringFromUTF8("ABCé");
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentUpper.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentUpper.get()));
+
+ // Negative cases.
+ RefPtr<StringImpl> differentFirstChar = stringFromUTF8("bBcéX");
+ RefPtr<StringImpl> differentFirstCharProperPrefix = stringFromUTF8("CBcé");
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstChar.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstChar.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstCharProperPrefix.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstCharProperPrefix.get()));
+
+ RefPtr<StringImpl> uppercaseAccent = stringFromUTF8("aBcÉX");
+ RefPtr<StringImpl> uppercaseAccentProperPrefix = stringFromUTF8("aBcÉX");
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccent.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccent.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccentProperPrefix.get()));
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccentProperPrefix.get()));
+}
+
+TEST(WTF, StringImplStartsWithIgnoringASCIICaseWithNull)
+{
+ RefPtr<StringImpl> reference = StringImpl::createFromLiteral("aBcDeFG");
+ ASSERT_FALSE(reference->startsWithIgnoringASCIICase(nullptr));
+
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ ASSERT_FALSE(empty->startsWithIgnoringASCIICase(nullptr));
+}
+
+TEST(WTF, StringImplStartsWithIgnoringASCIICaseWithEmpty)
+{
+ RefPtr<StringImpl> reference = StringImpl::createFromLiteral("aBcDeFG");
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(empty.get()));
+ ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*empty.get()));
+ ASSERT_TRUE(empty->startsWithIgnoringASCIICase(empty.get()));
+ ASSERT_TRUE(empty->startsWithIgnoringASCIICase(*empty.get()));
+ ASSERT_FALSE(empty->startsWithIgnoringASCIICase(reference.get()));
+ ASSERT_FALSE(empty->startsWithIgnoringASCIICase(*reference.get()));
+}
+
+TEST(WTF, StringImplEndsWithIgnoringASCIICaseBasic)
+{
+ RefPtr<StringImpl> reference = stringFromUTF8("XÉCbA");
+ RefPtr<StringImpl> referenceEquivalent = stringFromUTF8("xÉcBa");
+
+ // Identity.
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(reference.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*reference.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(referenceEquivalent.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*referenceEquivalent.get()));
+ ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(reference.get()));
+ ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*reference.get()));
+ ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(referenceEquivalent.get()));
+ ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*referenceEquivalent.get()));
+
+ // Proper suffixes.
+ RefPtr<StringImpl> aLower = StringImpl::createFromLiteral("a");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aLower.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aLower.get()));
+ RefPtr<StringImpl> aUpper = StringImpl::createFromLiteral("a");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aUpper.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aUpper.get()));
+
+ RefPtr<StringImpl> abcLower = StringImpl::createFromLiteral("cba");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcLower.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcLower.get()));
+ RefPtr<StringImpl> abcUpper = StringImpl::createFromLiteral("CBA");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcUpper.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcUpper.get()));
+
+ RefPtr<StringImpl> abcAccentLower = stringFromUTF8("Écba");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentLower.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentLower.get()));
+ RefPtr<StringImpl> abcAccentUpper = stringFromUTF8("ÉCBA");
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentUpper.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentUpper.get()));
+
+ // Negative cases.
+ RefPtr<StringImpl> differentLastChar = stringFromUTF8("XÉCbB");
+ RefPtr<StringImpl> differentLastCharProperSuffix = stringFromUTF8("ÉCbb");
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastChar.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastChar.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastCharProperSuffix.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastCharProperSuffix.get()));
+
+ RefPtr<StringImpl> lowercaseAccent = stringFromUTF8("aBcéX");
+ RefPtr<StringImpl> loweraseAccentProperSuffix = stringFromUTF8("aBcéX");
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(lowercaseAccent.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*lowercaseAccent.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(loweraseAccentProperSuffix.get()));
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*loweraseAccentProperSuffix.get()));
+}
+
+TEST(WTF, StringImplEndsWithIgnoringASCIICaseWithNull)
+{
+ RefPtr<StringImpl> reference = StringImpl::createFromLiteral("aBcDeFG");
+ ASSERT_FALSE(reference->endsWithIgnoringASCIICase(nullptr));
+
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ ASSERT_FALSE(empty->endsWithIgnoringASCIICase(nullptr));
+}
+
+TEST(WTF, StringImplEndsWithIgnoringASCIICaseWithEmpty)
+{
+ RefPtr<StringImpl> reference = StringImpl::createFromLiteral("aBcDeFG");
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(empty.get()));
+ ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*empty.get()));
+ ASSERT_TRUE(empty->endsWithIgnoringASCIICase(empty.get()));
+ ASSERT_TRUE(empty->endsWithIgnoringASCIICase(*empty.get()));
+ ASSERT_FALSE(empty->endsWithIgnoringASCIICase(reference.get()));
+ ASSERT_FALSE(empty->endsWithIgnoringASCIICase(*reference.get()));
+}
+
+TEST(WTF, StringImplCreateSymbolEmpty)
+{
+ RefPtr<StringImpl> reference = StringImpl::createSymbolEmpty();
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+ ASSERT_EQ(0u, reference->length());
+ ASSERT_TRUE(equal(reference.get(), ""));
+}
+
+TEST(WTF, StringImplCreateSymbol)
+{
+ RefPtr<StringImpl> original = stringFromUTF8("original");
+ RefPtr<StringImpl> reference = StringImpl::createSymbol(original);
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+ ASSERT_FALSE(original->isSymbol());
+ ASSERT_FALSE(original->isAtomic());
+ ASSERT_EQ(original->length(), reference->length());
+ ASSERT_TRUE(equal(reference.get(), "original"));
+}
+
+TEST(WTF, StringImplSymbolToAtomicString)
+{
+ RefPtr<StringImpl> original = stringFromUTF8("original");
+ RefPtr<StringImpl> reference = StringImpl::createSymbol(original);
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+
+ RefPtr<StringImpl> atomic = AtomicStringImpl::add(reference.get());
+ ASSERT_TRUE(atomic->isAtomic());
+ ASSERT_FALSE(atomic->isSymbol());
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+}
+
+TEST(WTF, StringImplSymbolEmptyToAtomicString)
+{
+ RefPtr<StringImpl> reference = StringImpl::createSymbolEmpty();
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+
+ RefPtr<StringImpl> atomic = AtomicStringImpl::add(reference.get());
+ ASSERT_TRUE(atomic->isAtomic());
+ ASSERT_FALSE(atomic->isSymbol());
+ ASSERT_TRUE(reference->isSymbol());
+ ASSERT_FALSE(reference->isAtomic());
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
index 149b85b21..7a1d9297f 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringOperators.cpp
@@ -184,4 +184,20 @@ TEST(WTF, StringOperators)
#endif
}
+TEST(WTF, ConcatenateCharacterArrayAndEmptyString)
+{
+ String emptyString;
+ EXPECT_EQ(static_cast<unsigned>(0), emptyString.length());
+
+ UChar ucharArray[] = { 't', 'e', 's', 't', '\0' };
+ String concatenation16 = ucharArray + emptyString;
+ ASSERT_EQ(static_cast<unsigned>(4), concatenation16.length());
+ ASSERT_TRUE(concatenation16 == String(ucharArray));
+
+ LChar lcharArray[] = { 't', 'e', 's', 't', '\0' };
+ String concatenation8 = lcharArray + emptyString;
+ ASSERT_EQ(static_cast<unsigned>(4), concatenation8.length());
+ ASSERT_TRUE(concatenation8 == String(lcharArray));
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp b/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp
new file mode 100644
index 000000000..408cc642e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/StringView.cpp
@@ -0,0 +1,736 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 <wtf/text/StringBuilder.h>
+#include <wtf/text/StringView.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF, StringViewEmptyVsNull)
+{
+ StringView nullView;
+ EXPECT_TRUE(nullView.isNull());
+ EXPECT_TRUE(nullView.isEmpty());
+
+ // Test in a boolean context to test operator bool().
+ if (nullView)
+ FAIL();
+ else
+ SUCCEED();
+
+ if (!nullView)
+ SUCCEED();
+ else
+ FAIL();
+
+ StringView emptyView = StringView::empty();
+ EXPECT_FALSE(emptyView.isNull());
+ EXPECT_TRUE(emptyView.isEmpty());
+
+ // Test in a boolean context to test operator bool().
+ if (emptyView)
+ SUCCEED();
+ else
+ FAIL();
+
+ if (!emptyView)
+ FAIL();
+ else
+ SUCCEED();
+
+ StringView viewWithCharacters(String("hello"));
+ EXPECT_FALSE(viewWithCharacters.isNull());
+ EXPECT_FALSE(viewWithCharacters.isEmpty());
+
+ // Test in a boolean context to test operator bool().
+ if (viewWithCharacters)
+ SUCCEED();
+ else
+ FAIL();
+
+ if (!viewWithCharacters)
+ FAIL();
+ else
+ SUCCEED();
+}
+
+bool compareLoopIterations(StringView::CodePoints codePoints, std::vector<UChar32> expected)
+{
+ std::vector<UChar32> actual;
+ for (auto codePoint : codePoints)
+ actual.push_back(codePoint);
+ return actual == expected;
+}
+
+static bool compareLoopIterations(StringView::CodeUnits codeUnits, std::vector<UChar> expected)
+{
+ std::vector<UChar> actual;
+ for (auto codeUnit : codeUnits)
+ actual.push_back(codeUnit);
+ return actual == expected;
+}
+
+static void build(StringBuilder& builder, std::vector<UChar> input)
+{
+ builder.clear();
+ for (auto codeUnit : input)
+ builder.append(codeUnit);
+}
+
+TEST(WTF, StringViewIterators)
+{
+ compareLoopIterations(StringView().codePoints(), { });
+ compareLoopIterations(StringView().codeUnits(), { });
+
+ compareLoopIterations(StringView::empty().codePoints(), { });
+ compareLoopIterations(StringView::empty().codeUnits(), { });
+
+ compareLoopIterations(StringView(String("hello")).codePoints(), {'h', 'e', 'l', 'l', 'o'});
+ compareLoopIterations(StringView(String("hello")).codeUnits(), {'h', 'e', 'l', 'l', 'o'});
+
+ StringBuilder b;
+ build(b, {0xD800, 0xDD55}); // Surrogates for unicode code point U+10155
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0x10155}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0xD800, 0xDD55}));
+
+ build(b, {0xD800}); // Leading surrogate only
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0xD800}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0xD800}));
+
+ build(b, {0xD800, 0xD801}); // Two leading surrogates
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0xD800, 0xD801}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0xD800, 0xD801}));
+
+ build(b, {0xDD55}); // Trailing surrogate only
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0xDD55}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0xDD55}));
+
+ build(b, {0xD800, 'h'}); // Leading surrogate followed by non-surrogate
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0xD800, 'h'}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0xD800, 'h'}));
+
+ build(b, {0x0306}); // "COMBINING BREVE"
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0x0306}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0x0306}));
+
+ build(b, {0x0306, 0xD800, 0xDD55, 'h', 'e', 'l', 'o'}); // Mix of single code unit and multi code unit code points
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codePoints(), {0x0306, 0x10155, 'h', 'e', 'l', 'o'}));
+ EXPECT_TRUE(compareLoopIterations(StringView(b.toString()).codeUnits(), {0x0306, 0xD800, 0xDD55, 'h', 'e', 'l', 'o'}));
+}
+
+TEST(WTF, StringViewEqualIgnoringASCIICaseBasic)
+{
+ RefPtr<StringImpl> a = StringImpl::createFromLiteral("aBcDeFG");
+ RefPtr<StringImpl> b = StringImpl::createFromLiteral("ABCDEFG");
+ RefPtr<StringImpl> c = StringImpl::createFromLiteral("abcdefg");
+ const char d[] = "aBcDeFG";
+ RefPtr<StringImpl> empty = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ RefPtr<StringImpl> shorter = StringImpl::createFromLiteral("abcdef");
+ RefPtr<StringImpl> different = StringImpl::createFromLiteral("abcrefg");
+
+ StringView stringViewA(*a.get());
+ StringView stringViewB(*b.get());
+ StringView stringViewC(*c.get());
+ StringView emptyStringView(*empty.get());
+ StringView shorterStringView(*shorter.get());
+ StringView differentStringView(*different.get());
+
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewC));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewC));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, d));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, d));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewC, d));
+
+ // Identity.
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewA));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewC, stringViewC));
+
+ // Transitivity.
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewC));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewC));
+
+ // Negative cases.
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewA, emptyStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, emptyStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewC, emptyStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewA, shorterStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, shorterStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewC, shorterStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewA, differentStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, differentStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewC, differentStringView));
+ ASSERT_FALSE(equalIgnoringASCIICase(emptyStringView, d));
+ ASSERT_FALSE(equalIgnoringASCIICase(shorterStringView, d));
+ ASSERT_FALSE(equalIgnoringASCIICase(differentStringView, d));
+}
+
+TEST(WTF, StringViewEqualIgnoringASCIICaseWithEmpty)
+{
+ RefPtr<StringImpl> a = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ RefPtr<StringImpl> b = StringImpl::create(reinterpret_cast<const LChar*>(""));
+ StringView stringViewA(*a.get());
+ StringView stringViewB(*b.get());
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewA));
+}
+
+TEST(WTF, StringViewEqualIgnoringASCIICaseWithLatin1Characters)
+{
+ RefPtr<StringImpl> a = StringImpl::create(reinterpret_cast<const LChar*>("aBcéeFG"));
+ RefPtr<StringImpl> b = StringImpl::create(reinterpret_cast<const LChar*>("ABCÉEFG"));
+ RefPtr<StringImpl> c = StringImpl::create(reinterpret_cast<const LChar*>("ABCéEFG"));
+ RefPtr<StringImpl> d = StringImpl::create(reinterpret_cast<const LChar*>("abcéefg"));
+ const char e[] = "aBcéeFG";
+ StringView stringViewA(*a.get());
+ StringView stringViewB(*b.get());
+ StringView stringViewC(*c.get());
+ StringView stringViewD(*d.get());
+
+ // Identity.
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewA));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewB, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewC, stringViewC));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewD, stringViewD));
+
+ // All combination.
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewA, stringViewB));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewC));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewA, stringViewD));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, stringViewC));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, stringViewD));
+ ASSERT_TRUE(equalIgnoringASCIICase(stringViewC, stringViewD));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewA, e));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewB, e));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewC, e));
+ ASSERT_FALSE(equalIgnoringASCIICase(stringViewD, e));
+}
+
+StringView stringViewFromLiteral(const char* characters)
+{
+ return StringView(reinterpret_cast<const LChar*>(characters), strlen(characters));
+}
+
+StringView stringViewFromUTF8(String &ref, const char* characters)
+{
+ ref = String::fromUTF8(characters);
+ return ref;
+}
+
+TEST(WTF, StringViewFindIgnoringASCIICaseBasic)
+{
+ String referenceAHolder;
+ StringView referenceA = stringViewFromUTF8(referenceAHolder, "aBcéeFG");
+ String referenceBHolder;
+ StringView referenceB = stringViewFromUTF8(referenceBHolder, "ABCÉEFG");
+
+ // Search the exact string.
+ EXPECT_EQ(static_cast<size_t>(0), referenceA.findIgnoringASCIICase(referenceA));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB.findIgnoringASCIICase(referenceB));
+
+ // A and B are distinct by the non-ascii character é/É.
+ EXPECT_EQ(static_cast<size_t>(notFound), referenceA.findIgnoringASCIICase(referenceB));
+ EXPECT_EQ(static_cast<size_t>(notFound), referenceB.findIgnoringASCIICase(referenceA));
+
+ String tempStringHolder;
+ // Find the prefix.
+ EXPECT_EQ(static_cast<size_t>(0), referenceA.findIgnoringASCIICase(stringViewFromLiteral("a")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "abcé")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA.findIgnoringASCIICase(stringViewFromLiteral("A")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCé")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB.findIgnoringASCIICase(stringViewFromLiteral("a")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "abcÉ")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB.findIgnoringASCIICase(stringViewFromLiteral("A")));
+ EXPECT_EQ(static_cast<size_t>(0), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ")));
+
+ // Not a prefix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromLiteral("x")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "accé")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "abcÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromLiteral("X")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABDé")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromLiteral("y")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "accÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "abcé")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromLiteral("Y")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABdÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCé")));
+
+ // Find the infix.
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cée")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ée")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cé")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "c")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "é")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Cée")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éE")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Cé")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "C")));
+
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cÉe")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Ée")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cÉ")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "c")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "É")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "CÉe")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ÉE")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "CÉ")));
+ EXPECT_EQ(static_cast<size_t>(2), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "C")));
+
+ // Not an infix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "céd")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Ée")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "bé")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "x")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "É")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "CÉe")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éd")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "CÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Y")));
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cée")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Éc")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "cé")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "W")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "é")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "bÉe")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éE")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "BÉ")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "z")));
+
+ // Find the suffix.
+ EXPECT_EQ(static_cast<size_t>(6), referenceA.findIgnoringASCIICase(stringViewFromLiteral("g")));
+ EXPECT_EQ(static_cast<size_t>(4), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "efg")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éefg")));
+ EXPECT_EQ(static_cast<size_t>(6), referenceA.findIgnoringASCIICase(stringViewFromLiteral("G")));
+ EXPECT_EQ(static_cast<size_t>(4), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "EFG")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éEFG")));
+
+ EXPECT_EQ(static_cast<size_t>(6), referenceB.findIgnoringASCIICase(stringViewFromLiteral("g")));
+ EXPECT_EQ(static_cast<size_t>(4), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "efg")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Éefg")));
+ EXPECT_EQ(static_cast<size_t>(6), referenceB.findIgnoringASCIICase(stringViewFromLiteral("G")));
+ EXPECT_EQ(static_cast<size_t>(4), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "EFG")));
+ EXPECT_EQ(static_cast<size_t>(3), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ÉEFG")));
+
+ // Not a suffix.
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromLiteral("X")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "edg")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "Éefg")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromLiteral("w")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "dFG")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ÉEFG")));
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromLiteral("Z")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ffg")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éefg")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromLiteral("r")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "EgG")));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "éEFG")));
+}
+
+TEST(WTF, StringViewFindIgnoringASCIICaseWithValidOffset)
+{
+ String referenceHolder;
+ StringView reference = stringViewFromUTF8(referenceHolder, "ABCÉEFGaBcéeFG");
+ String tempStringHolder;
+
+ EXPECT_EQ(static_cast<size_t>(0), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABC"), 0));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABC"), 1));
+ EXPECT_EQ(static_cast<size_t>(0), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ"), 0));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ"), 1));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCé"), 0));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCé"), 1));
+}
+
+TEST(WTF, StringViewFindIgnoringASCIICaseWithInvalidOffset)
+{
+ String referenceHolder;
+ StringView reference = stringViewFromUTF8(referenceHolder, "ABCÉEFGaBcéeFG");
+ String tempStringHolder;
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABC"), 15));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABC"), 16));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ"), 17));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ"), 42));
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(stringViewFromUTF8(tempStringHolder, "ABCÉ"), std::numeric_limits<unsigned>::max()));
+}
+
+TEST(WTF, StringViewFindIgnoringASCIICaseOnEmpty)
+{
+ String referenceHolder;
+ StringView reference = stringViewFromUTF8(referenceHolder, "ABCÉEFG");
+ StringView empty = stringViewFromLiteral("");
+ EXPECT_EQ(static_cast<size_t>(0), reference.findIgnoringASCIICase(empty));
+ EXPECT_EQ(static_cast<size_t>(0), reference.findIgnoringASCIICase(empty, 0));
+ EXPECT_EQ(static_cast<size_t>(3), reference.findIgnoringASCIICase(empty, 3));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(empty, 7));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(empty, 8));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(empty, 42));
+ EXPECT_EQ(static_cast<size_t>(7), reference.findIgnoringASCIICase(empty, std::numeric_limits<unsigned>::max()));
+}
+
+TEST(WTF, StringViewFindIgnoringASCIICaseWithPatternLongerThanReference)
+{
+ String referenceHolder;
+ StringView reference = stringViewFromUTF8(referenceHolder, "ABCÉEFG");
+ String patternHolder;
+ StringView pattern = stringViewFromUTF8(patternHolder, "ABCÉEFGA");
+
+ EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference.findIgnoringASCIICase(pattern));
+ EXPECT_EQ(static_cast<size_t>(0), pattern.findIgnoringASCIICase(reference));
+}
+
+TEST(WTF, StringViewStartsWithBasic)
+{
+ StringView reference = stringViewFromLiteral("abcdefg");
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "àîûèô");
+
+ StringView oneLetterPrefix = stringViewFromLiteral("a");
+ StringView shortPrefix = stringViewFromLiteral("abc");
+ StringView longPrefix = stringViewFromLiteral("abcdef");
+ StringView upperCasePrefix = stringViewFromLiteral("ABC");
+ StringView empty = stringViewFromLiteral("");
+ StringView notPrefix = stringViewFromLiteral("bc");
+
+ String oneLetterPrefixUTF8Ref;
+ StringView oneLetterPrefixUTF8 = stringViewFromUTF8(oneLetterPrefixUTF8Ref, "à");
+ String shortPrefixUTF8Ref;
+ StringView shortPrefixUTF8 = stringViewFromUTF8(shortPrefixUTF8Ref, "àî");
+ String longPrefixUTF8Ref;
+ StringView longPrefixUTF8 = stringViewFromUTF8(longPrefixUTF8Ref, "àîûè");
+ String upperCasePrefixUTF8Ref;
+ StringView upperCasePrefixUTF8 = stringViewFromUTF8(upperCasePrefixUTF8Ref, "ÀÎ");
+ String notPrefixUTF8Ref;
+ StringView notPrefixUTF8 = stringViewFromUTF8(notPrefixUTF8Ref, "îû");
+
+ EXPECT_TRUE(reference.startsWith(reference));
+ EXPECT_TRUE(reference.startsWith(oneLetterPrefix));
+ EXPECT_TRUE(reference.startsWith(shortPrefix));
+ EXPECT_TRUE(reference.startsWith(longPrefix));
+ EXPECT_TRUE(reference.startsWith(empty));
+
+ EXPECT_TRUE(referenceUTF8.startsWith(referenceUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWith(oneLetterPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWith(shortPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWith(longPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWith(empty));
+
+ EXPECT_FALSE(reference.startsWith(notPrefix));
+ EXPECT_FALSE(reference.startsWith(upperCasePrefix));
+ EXPECT_FALSE(reference.startsWith(notPrefixUTF8));
+ EXPECT_FALSE(reference.startsWith(upperCasePrefixUTF8));
+ EXPECT_FALSE(referenceUTF8.startsWith(notPrefix));
+ EXPECT_FALSE(referenceUTF8.startsWith(upperCasePrefix));
+ EXPECT_FALSE(referenceUTF8.startsWith(notPrefixUTF8));
+ EXPECT_FALSE(referenceUTF8.startsWith(upperCasePrefixUTF8));
+}
+
+TEST(WTF, StringViewStartsWithEmpty)
+{
+ StringView a = stringViewFromLiteral("");
+ String refB;
+ StringView b = stringViewFromUTF8(refB, "");
+
+ EXPECT_TRUE(a.startsWith(a));
+ EXPECT_TRUE(a.startsWith(b));
+ EXPECT_TRUE(b.startsWith(a));
+ EXPECT_TRUE(b.startsWith(b));
+}
+
+TEST(WTF, StringViewStartsWithIgnoringASCIICaseBasic)
+{
+ StringView reference = stringViewFromLiteral("abcdefg");
+
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "àîûèô");
+
+ StringView oneLetterPrefix = stringViewFromLiteral("a");
+ StringView shortPrefix = stringViewFromLiteral("abc");
+ StringView longPrefix = stringViewFromLiteral("abcdef");
+ StringView upperCasePrefix = stringViewFromLiteral("ABC");
+ StringView mixedCasePrefix = stringViewFromLiteral("aBcDe");
+ StringView empty = stringViewFromLiteral("");
+ StringView notPrefix = stringViewFromLiteral("bc");
+
+ String oneLetterPrefixUTF8Ref;
+ StringView oneLetterPrefixUTF8 = stringViewFromUTF8(oneLetterPrefixUTF8Ref, "à");
+ String shortPrefixUTF8Ref;
+ StringView shortPrefixUTF8 = stringViewFromUTF8(shortPrefixUTF8Ref, "àî");
+ String longPrefixUTF8Ref;
+ StringView longPrefixUTF8 = stringViewFromUTF8(longPrefixUTF8Ref, "àîûè");
+ String upperCasePrefixUTF8Ref;
+ StringView upperCasePrefixUTF8 = stringViewFromUTF8(upperCasePrefixUTF8Ref, "ÀÎ");
+ String notPrefixUTF8Ref;
+ StringView notPrefixUTF8 = stringViewFromUTF8(notPrefixUTF8Ref, "îû");
+
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(reference));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(oneLetterPrefix));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(shortPrefix));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(longPrefix));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(empty));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(upperCasePrefix));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(mixedCasePrefix));
+
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(referenceUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(oneLetterPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(shortPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(longPrefixUTF8));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(empty));
+
+ EXPECT_FALSE(reference.startsWithIgnoringASCIICase(notPrefix));
+ EXPECT_FALSE(reference.startsWithIgnoringASCIICase(notPrefixUTF8));
+ EXPECT_FALSE(reference.startsWithIgnoringASCIICase(upperCasePrefixUTF8));
+ EXPECT_FALSE(referenceUTF8.startsWithIgnoringASCIICase(notPrefix));
+ EXPECT_FALSE(referenceUTF8.startsWithIgnoringASCIICase(notPrefixUTF8));
+ EXPECT_FALSE(referenceUTF8.startsWithIgnoringASCIICase(upperCasePrefix));
+ EXPECT_FALSE(referenceUTF8.startsWithIgnoringASCIICase(upperCasePrefixUTF8));
+}
+
+
+TEST(WTF, StringViewStartsWithIgnoringASCIICaseEmpty)
+{
+ StringView a = stringViewFromLiteral("");
+ String refB;
+ StringView b = stringViewFromUTF8(refB, "");
+
+ EXPECT_TRUE(a.startsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(a.startsWithIgnoringASCIICase(b));
+ EXPECT_TRUE(b.startsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(b.startsWithIgnoringASCIICase(b));
+}
+
+TEST(WTF, StringViewStartsWithIgnoringASCIICaseWithLatin1Characters)
+{
+ StringView reference = stringViewFromLiteral("aBcéeFG");
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "aBcéeFG");
+
+ StringView a = stringViewFromLiteral("aBcéeF");
+ StringView b = stringViewFromLiteral("ABCéEF");
+ StringView c = stringViewFromLiteral("abcéef");
+ StringView d = stringViewFromLiteral("Abcéef");
+
+ String refE;
+ StringView e = stringViewFromUTF8(refE, "aBcéeF");
+ String refF;
+ StringView f = stringViewFromUTF8(refF, "ABCéEF");
+ String refG;
+ StringView g = stringViewFromUTF8(refG, "abcéef");
+ String refH;
+ StringView h = stringViewFromUTF8(refH, "Abcéef");
+
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(b));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(c));
+ EXPECT_TRUE(reference.startsWithIgnoringASCIICase(d));
+
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(e));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(f));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(g));
+ EXPECT_TRUE(referenceUTF8.startsWithIgnoringASCIICase(h));
+
+ EXPECT_FALSE(reference.endsWithIgnoringASCIICase(referenceUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(reference));
+}
+
+TEST(WTF, StringViewEndsWithBasic)
+{
+ StringView reference = stringViewFromLiteral("abcdefg");
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "àîûèô");
+
+ StringView oneLetterSuffix = stringViewFromLiteral("g");
+ StringView shortSuffix = stringViewFromLiteral("efg");
+ StringView longSuffix = stringViewFromLiteral("cdefg");
+ StringView upperCaseSuffix = stringViewFromLiteral("EFG");
+ StringView empty = stringViewFromLiteral("");
+ StringView notSuffix = stringViewFromLiteral("bc");
+
+ String oneLetterSuffixUTF8Ref;
+ StringView oneLetterSuffixUTF8 = stringViewFromUTF8(oneLetterSuffixUTF8Ref, "ô");
+ String shortSuffixUTF8Ref;
+ StringView shortSuffixUTF8 = stringViewFromUTF8(shortSuffixUTF8Ref, "èô");
+ String longSuffixUTF8Ref;
+ StringView longSuffixUTF8 = stringViewFromUTF8(longSuffixUTF8Ref, "îûèô");
+ String upperCaseSuffixUTF8Ref;
+ StringView upperCaseSuffixUTF8 = stringViewFromUTF8(upperCaseSuffixUTF8Ref, "ÈÔ");
+ String notSuffixUTF8Ref;
+ StringView notSuffixUTF8 = stringViewFromUTF8(notSuffixUTF8Ref, "îû");
+
+ EXPECT_TRUE(reference.endsWith(reference));
+ EXPECT_TRUE(reference.endsWith(oneLetterSuffix));
+ EXPECT_TRUE(reference.endsWith(shortSuffix));
+ EXPECT_TRUE(reference.endsWith(longSuffix));
+ EXPECT_TRUE(reference.endsWith(empty));
+
+ EXPECT_TRUE(referenceUTF8.endsWith(referenceUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWith(oneLetterSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWith(shortSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWith(longSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWith(empty));
+
+ EXPECT_FALSE(reference.endsWith(notSuffix));
+ EXPECT_FALSE(reference.endsWith(upperCaseSuffix));
+ EXPECT_FALSE(reference.endsWith(notSuffixUTF8));
+ EXPECT_FALSE(reference.endsWith(upperCaseSuffixUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWith(notSuffix));
+ EXPECT_FALSE(referenceUTF8.endsWith(upperCaseSuffix));
+ EXPECT_FALSE(referenceUTF8.endsWith(notSuffixUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWith(upperCaseSuffixUTF8));
+}
+
+TEST(WTF, StringViewEndsWithEmpty)
+{
+ StringView a = stringViewFromLiteral("");
+ String refB;
+ StringView b = stringViewFromUTF8(refB, "");
+
+ EXPECT_TRUE(a.endsWith(a));
+ EXPECT_TRUE(a.endsWith(b));
+ EXPECT_TRUE(b.endsWith(a));
+ EXPECT_TRUE(b.endsWith(b));
+}
+
+TEST(WTF, StringViewEndsWithIgnoringASCIICaseBasic)
+{
+ StringView reference = stringViewFromLiteral("abcdefg");
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "àîûèô");
+
+ StringView oneLetterSuffix = stringViewFromLiteral("g");
+ StringView shortSuffix = stringViewFromLiteral("efg");
+ StringView longSuffix = stringViewFromLiteral("bcdefg");
+ StringView upperCaseSuffix = stringViewFromLiteral("EFG");
+ StringView mixedCaseSuffix = stringViewFromLiteral("bCdeFg");
+ StringView empty = stringViewFromLiteral("");
+ StringView notSuffix = stringViewFromLiteral("bc");
+
+ String oneLetterSuffixUTF8Ref;
+ StringView oneLetterSuffixUTF8 = stringViewFromUTF8(oneLetterSuffixUTF8Ref, "ô");
+ String shortSuffixUTF8Ref;
+ StringView shortSuffixUTF8 = stringViewFromUTF8(shortSuffixUTF8Ref, "èô");
+ String longSuffixUTF8Ref;
+ StringView longSuffixUTF8 = stringViewFromUTF8(longSuffixUTF8Ref, "îûèô");
+ String upperCaseSuffixUTF8Ref;
+ StringView upperCaseSuffixUTF8 = stringViewFromUTF8(upperCaseSuffixUTF8Ref, "ÈÔ");
+ String notSuffixUTF8Ref;
+ StringView notSuffixUTF8 = stringViewFromUTF8(notSuffixUTF8Ref, "îû");
+
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(reference));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(oneLetterSuffix));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(shortSuffix));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(longSuffix));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(empty));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(upperCaseSuffix));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(mixedCaseSuffix));
+
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(referenceUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(oneLetterSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(shortSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(longSuffixUTF8));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(empty));
+
+ EXPECT_FALSE(reference.endsWithIgnoringASCIICase(notSuffix));
+ EXPECT_FALSE(reference.endsWithIgnoringASCIICase(notSuffixUTF8));
+ EXPECT_FALSE(reference.endsWithIgnoringASCIICase(upperCaseSuffixUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(notSuffix));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(notSuffixUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(upperCaseSuffix));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(upperCaseSuffixUTF8));
+}
+
+TEST(WTF, StringViewEndsWithIgnoringASCIICaseEmpty)
+{
+ StringView a = stringViewFromLiteral("");
+ String refB;
+ StringView b = stringViewFromUTF8(refB, "");
+
+ EXPECT_TRUE(a.endsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(a.endsWithIgnoringASCIICase(b));
+ EXPECT_TRUE(b.endsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(b.endsWithIgnoringASCIICase(b));
+}
+
+TEST(WTF, StringViewEndsWithIgnoringASCIICaseWithLatin1Characters)
+{
+ StringView reference = stringViewFromLiteral("aBcéeFG");
+ String referenceUTF8Ref;
+ StringView referenceUTF8 = stringViewFromUTF8(referenceUTF8Ref, "aBcéeFG");
+
+ StringView a = stringViewFromLiteral("BcéeFG");
+ StringView b = stringViewFromLiteral("BCéEFG");
+ StringView c = stringViewFromLiteral("bcéefG");
+ StringView d = stringViewFromLiteral("bcéefg");
+
+ String refE;
+ StringView e = stringViewFromUTF8(refE, "bcéefG");
+ String refF;
+ StringView f = stringViewFromUTF8(refF, "BCéEFG");
+ String refG;
+ StringView g = stringViewFromUTF8(refG, "bcéefG");
+ String refH;
+ StringView h = stringViewFromUTF8(refH, "bcéefg");
+
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(a));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(b));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(c));
+ EXPECT_TRUE(reference.endsWithIgnoringASCIICase(d));
+
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(e));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(f));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(g));
+ EXPECT_TRUE(referenceUTF8.endsWithIgnoringASCIICase(h));
+
+ EXPECT_FALSE(reference.endsWithIgnoringASCIICase(referenceUTF8));
+ EXPECT_FALSE(referenceUTF8.endsWithIgnoringASCIICase(reference));
+}
+
+TEST(WTF, StringView8Bit)
+{
+ StringView nullView;
+ StringView emptyView = StringView::empty();
+ EXPECT_TRUE(StringView().is8Bit());
+ EXPECT_TRUE(StringView::empty().is8Bit());
+
+ LChar* lcharPtr = nullptr;
+ UChar* ucharPtr = nullptr;
+ EXPECT_TRUE(StringView(lcharPtr, 0).is8Bit());
+ EXPECT_FALSE(StringView(ucharPtr, 0).is8Bit());
+
+ EXPECT_TRUE(StringView(String(lcharPtr, 0)).is8Bit());
+ EXPECT_TRUE(StringView(String(ucharPtr, 0)).is8Bit());
+
+ EXPECT_TRUE(StringView(String().impl()).is8Bit());
+ EXPECT_TRUE(StringView(emptyString().impl()).is8Bit());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp b/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp
index 9ffb0b2e8..6567ac559 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/Vector.cpp
@@ -24,10 +24,21 @@
*/
#include "config.h"
+
+#include "MoveOnly.h"
#include <wtf/Vector.h>
+#include <wtf/text/CString.h>
namespace TestWebKitAPI {
+TEST(WTF_Vector, Basic)
+{
+ Vector<int> intVector;
+ EXPECT_TRUE(intVector.isEmpty());
+ EXPECT_EQ(0U, intVector.size());
+ EXPECT_EQ(0U, intVector.capacity());
+}
+
TEST(WTF_Vector, Iterator)
{
Vector<int> intVector;
@@ -52,6 +63,159 @@ TEST(WTF_Vector, Iterator)
EXPECT_TRUE(end == it);
}
+TEST(WTF_Vector, OverloadedOperatorAmpersand)
+{
+ struct Test {
+ private:
+ Test* operator&();
+ };
+
+ Vector<Test> vector;
+ vector.append(Test());
+}
+
+TEST(WTF_Vector, AppendLast)
+{
+ Vector<unsigned> vector;
+ vector.append(0);
+
+ // FIXME: This test needs to be run with GuardMalloc to show the bug.
+ for (size_t i = 0; i < 100; ++i)
+ vector.append(const_cast<const unsigned&>(vector.last()));
+}
+
+TEST(WTF_Vector, InitializerList)
+{
+ Vector<int> vector = { 1, 2, 3, 4 };
+ EXPECT_EQ(4U, vector.size());
+
+ EXPECT_EQ(1, vector[0]);
+ EXPECT_EQ(2, vector[1]);
+ EXPECT_EQ(3, vector[2]);
+ EXPECT_EQ(4, vector[3]);
+}
+
+TEST(WTF_Vector, InitializeFromOtherInitialCapacity)
+{
+ Vector<int, 3> vector = { 1, 3, 2, 4 };
+ Vector<int, 5> vectorCopy(vector);
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+ EXPECT_EQ(5U, vectorCopy.capacity());
+
+ EXPECT_EQ(1, vectorCopy[0]);
+ EXPECT_EQ(3, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(4, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, CopyFromOtherInitialCapacity)
+{
+ Vector<int, 3> vector = { 1, 3, 2, 4 };
+ Vector<int, 5> vectorCopy { 0 };
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(1U, vectorCopy.size());
+
+ vectorCopy = vector;
+
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+ EXPECT_EQ(5U, vectorCopy.capacity());
+
+ EXPECT_EQ(1, vectorCopy[0]);
+ EXPECT_EQ(3, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(4, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, InitializeFromOtherOverflowBehavior)
+{
+ Vector<int, 7, WTF::CrashOnOverflow> vector = { 4, 3, 2, 1 };
+ Vector<int, 7, UnsafeVectorOverflow> vectorCopy(vector);
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+
+ EXPECT_EQ(4, vectorCopy[0]);
+ EXPECT_EQ(3, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(1, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, CopyFromOtherOverflowBehavior)
+{
+ Vector<int, 7, WTF::CrashOnOverflow> vector = { 4, 3, 2, 1 };
+ Vector<int, 7, UnsafeVectorOverflow> vectorCopy = { 0, 0, 0 };
+
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(3U, vectorCopy.size());
+
+ vectorCopy = vector;
+
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+
+ EXPECT_EQ(4, vectorCopy[0]);
+ EXPECT_EQ(3, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(1, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, InitializeFromOtherMinCapacity)
+{
+ Vector<int, 7, WTF::CrashOnOverflow, 1> vector = { 3, 4, 2, 1 };
+ Vector<int, 7, WTF::CrashOnOverflow, 50> vectorCopy(vector);
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+
+ EXPECT_EQ(3, vectorCopy[0]);
+ EXPECT_EQ(4, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(1, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, CopyFromOtherMinCapacity)
+{
+ Vector<int, 7, WTF::CrashOnOverflow, 1> vector = { 3, 4, 2, 1 };
+ Vector<int, 7, WTF::CrashOnOverflow, 50> vectorCopy;
+
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(0U, vectorCopy.size());
+
+ vectorCopy = vector;
+
+ EXPECT_EQ(4U, vector.size());
+ EXPECT_EQ(4U, vectorCopy.size());
+
+ EXPECT_EQ(3, vectorCopy[0]);
+ EXPECT_EQ(4, vectorCopy[1]);
+ EXPECT_EQ(2, vectorCopy[2]);
+ EXPECT_EQ(1, vectorCopy[3]);
+}
+
+TEST(WTF_Vector, Reverse)
+{
+ Vector<int> intVector;
+ intVector.append(10);
+ intVector.append(11);
+ intVector.append(12);
+ intVector.append(13);
+ intVector.reverse();
+
+ EXPECT_EQ(13, intVector[0]);
+ EXPECT_EQ(12, intVector[1]);
+ EXPECT_EQ(11, intVector[2]);
+ EXPECT_EQ(10, intVector[3]);
+
+ intVector.append(9);
+ intVector.reverse();
+
+ EXPECT_EQ(9, intVector[0]);
+ EXPECT_EQ(10, intVector[1]);
+ EXPECT_EQ(11, intVector[2]);
+ EXPECT_EQ(12, intVector[3]);
+ EXPECT_EQ(13, intVector[4]);
+}
+
TEST(WTF_Vector, ReverseIterator)
{
Vector<int> intVector;
@@ -76,4 +240,378 @@ TEST(WTF_Vector, ReverseIterator)
EXPECT_TRUE(end == it);
}
+TEST(WTF_Vector, MoveOnly_UncheckedAppend)
+{
+ Vector<MoveOnly> vector;
+
+ vector.reserveInitialCapacity(100);
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i);
+ vector.uncheckedAppend(WTFMove(moveOnly));
+ EXPECT_EQ(0U, moveOnly.value());
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_EQ(i, vector[i].value());
+}
+
+TEST(WTF_Vector, MoveOnly_Append)
+{
+ Vector<MoveOnly> vector;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i);
+ vector.append(WTFMove(moveOnly));
+ EXPECT_EQ(0U, moveOnly.value());
+ }
+
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_EQ(i, vector[i].value());
+
+ for (size_t i = 0; i < 16; ++i) {
+ Vector<MoveOnly> vector;
+
+ vector.append(i);
+
+ for (size_t j = 0; j < i; ++j)
+ vector.append(j);
+ vector.append(WTFMove(vector[0]));
+
+ EXPECT_EQ(0U, vector[0].value());
+
+ for (size_t j = 0; j < i; ++j)
+ EXPECT_EQ(j, vector[j + 1].value());
+ EXPECT_EQ(i, vector.last().value());
+ }
+}
+
+TEST(WTF_Vector, MoveOnly_Insert)
+{
+ Vector<MoveOnly> vector;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i);
+ vector.insert(0, WTFMove(moveOnly));
+ EXPECT_EQ(0U, moveOnly.value());
+ }
+
+ EXPECT_EQ(vector.size(), 100U);
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_EQ(99 - i, vector[i].value());
+
+ for (size_t i = 0; i < 200; i += 2) {
+ MoveOnly moveOnly(1000 + i);
+ vector.insert(i, WTFMove(moveOnly));
+ EXPECT_EQ(0U, moveOnly.value());
+ }
+
+ EXPECT_EQ(200U, vector.size());
+ for (size_t i = 0; i < 200; ++i) {
+ if (i % 2)
+ EXPECT_EQ(99 - i / 2, vector[i].value());
+ else
+ EXPECT_EQ(1000 + i, vector[i].value());
+ }
+}
+
+TEST(WTF_Vector, MoveOnly_TakeLast)
+{
+ Vector<MoveOnly> vector;
+
+ for (size_t i = 0; i < 100; ++i) {
+ MoveOnly moveOnly(i);
+ vector.append(WTFMove(moveOnly));
+ EXPECT_EQ(0U, moveOnly.value());
+ }
+
+ EXPECT_EQ(100U, vector.size());
+ for (size_t i = 0; i < 100; ++i)
+ EXPECT_EQ(99 - i, vector.takeLast().value());
+
+ EXPECT_EQ(0U, vector.size());
+}
+
+TEST(WTF_Vector, VectorOfVectorsOfVectorsInlineCapacitySwap)
+{
+ Vector<Vector<Vector<int, 1>, 1>, 1> a;
+ Vector<Vector<Vector<int, 1>, 1>, 1> b;
+ Vector<Vector<Vector<int, 1>, 1>, 1> c;
+
+ EXPECT_EQ(0U, a.size());
+ EXPECT_EQ(0U, b.size());
+ EXPECT_EQ(0U, c.size());
+
+ Vector<int, 1> x;
+ x.append(42);
+
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+
+ Vector<Vector<int, 1>, 1> y;
+ y.append(x);
+
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(42, y[0][0]);
+
+ a.append(y);
+
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(42, y[0][0]);
+ EXPECT_EQ(1U, a.size());
+ EXPECT_EQ(1U, a[0].size());
+ EXPECT_EQ(1U, a[0][0].size());
+ EXPECT_EQ(42, a[0][0][0]);
+
+ a.swap(b);
+
+ EXPECT_EQ(0U, a.size());
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(42, y[0][0]);
+ EXPECT_EQ(1U, b.size());
+ EXPECT_EQ(1U, b[0].size());
+ EXPECT_EQ(1U, b[0][0].size());
+ EXPECT_EQ(42, b[0][0][0]);
+
+ b.swap(c);
+
+ EXPECT_EQ(0U, a.size());
+ EXPECT_EQ(0U, b.size());
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(42, y[0][0]);
+ EXPECT_EQ(1U, c.size());
+ EXPECT_EQ(1U, c[0].size());
+ EXPECT_EQ(1U, c[0][0].size());
+ EXPECT_EQ(42, c[0][0][0]);
+
+ y[0][0] = 24;
+
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(24, y[0][0]);
+
+ a.append(y);
+
+ EXPECT_EQ(1U, x.size());
+ EXPECT_EQ(42, x[0]);
+ EXPECT_EQ(1U, y.size());
+ EXPECT_EQ(1U, y[0].size());
+ EXPECT_EQ(24, y[0][0]);
+ EXPECT_EQ(1U, a.size());
+ EXPECT_EQ(1U, a[0].size());
+ EXPECT_EQ(1U, a[0][0].size());
+ EXPECT_EQ(24, a[0][0][0]);
+ EXPECT_EQ(1U, c.size());
+ EXPECT_EQ(1U, c[0].size());
+ EXPECT_EQ(1U, c[0][0].size());
+ EXPECT_EQ(42, c[0][0][0]);
+ EXPECT_EQ(0U, b.size());
+}
+
+TEST(WTF_Vector, RemoveFirst)
+{
+ Vector<int> v;
+ EXPECT_TRUE(v.isEmpty());
+ EXPECT_FALSE(v.removeFirst(1));
+ EXPECT_FALSE(v.removeFirst(-1));
+ EXPECT_TRUE(v.isEmpty());
+
+ v.fill(2, 10);
+ EXPECT_EQ(10U, v.size());
+ EXPECT_FALSE(v.removeFirst(1));
+ EXPECT_EQ(10U, v.size());
+ v.clear();
+
+ v.fill(1, 10);
+ EXPECT_EQ(10U, v.size());
+ EXPECT_TRUE(v.removeFirst(1));
+ EXPECT_TRUE(v == Vector<int>({1, 1, 1, 1, 1, 1, 1, 1, 1}));
+ EXPECT_EQ(9U, v.size());
+ EXPECT_FALSE(v.removeFirst(2));
+ EXPECT_EQ(9U, v.size());
+ EXPECT_TRUE(v == Vector<int>({1, 1, 1, 1, 1, 1, 1, 1, 1}));
+
+ unsigned removed = 0;
+ while (v.removeFirst(1))
+ ++removed;
+ EXPECT_EQ(9U, removed);
+ EXPECT_TRUE(v.isEmpty());
+
+ v.resize(1);
+ EXPECT_EQ(1U, v.size());
+ EXPECT_TRUE(v.removeFirst(1));
+ EXPECT_EQ(0U, v.size());
+ EXPECT_TRUE(v.isEmpty());
+}
+
+TEST(WTF_Vector, RemoveAll)
+{
+ // Using a memcpy-able type.
+ static_assert(VectorTraits<int>::canMoveWithMemcpy, "Should use a memcpy-able type");
+ Vector<int> v;
+ EXPECT_TRUE(v.isEmpty());
+ EXPECT_FALSE(v.removeAll(1));
+ EXPECT_FALSE(v.removeAll(-1));
+ EXPECT_TRUE(v.isEmpty());
+
+ v.fill(1, 10);
+ EXPECT_EQ(10U, v.size());
+ EXPECT_EQ(10U, v.removeAll(1));
+ EXPECT_TRUE(v.isEmpty());
+
+ v.fill(2, 10);
+ EXPECT_EQ(10U, v.size());
+ EXPECT_EQ(0U, v.removeAll(1));
+ EXPECT_EQ(10U, v.size());
+
+ v = {1, 2, 1, 2, 1, 2, 2, 1, 1, 1};
+ EXPECT_EQ(10U, v.size());
+ EXPECT_EQ(6U, v.removeAll(1));
+ EXPECT_EQ(4U, v.size());
+ EXPECT_TRUE(v == Vector<int>({2, 2, 2, 2}));
+ EXPECT_TRUE(v.find(1) == notFound);
+ EXPECT_EQ(4U, v.removeAll(2));
+ EXPECT_TRUE(v.isEmpty());
+
+ v = {3, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 3};
+ EXPECT_EQ(12U, v.size());
+ EXPECT_EQ(6U, v.removeAll(1));
+ EXPECT_EQ(6U, v.size());
+ EXPECT_TRUE(v.find(1) == notFound);
+ EXPECT_TRUE(v == Vector<int>({3, 2, 2, 2, 2, 3}));
+
+ EXPECT_EQ(4U, v.removeAll(2));
+ EXPECT_EQ(2U, v.size());
+ EXPECT_TRUE(v.find(2) == notFound);
+ EXPECT_TRUE(v == Vector<int>({3, 3}));
+
+ EXPECT_EQ(2U, v.removeAll(3));
+ EXPECT_TRUE(v.isEmpty());
+
+ v = {1, 1, 1, 3, 2, 4, 2, 2, 2, 4, 4, 3};
+ EXPECT_EQ(12U, v.size());
+ EXPECT_EQ(3U, v.removeAll(1));
+ EXPECT_EQ(9U, v.size());
+ EXPECT_TRUE(v.find(1) == notFound);
+ EXPECT_TRUE(v == Vector<int>({3, 2, 4, 2, 2, 2, 4, 4, 3}));
+
+ // Using a non memcpy-able type.
+ static_assert(!VectorTraits<CString>::canMoveWithMemcpy, "Should use a non memcpy-able type");
+ Vector<CString> vExpected;
+ Vector<CString> v2;
+ EXPECT_TRUE(v2.isEmpty());
+ EXPECT_FALSE(v2.removeAll("1"));
+ EXPECT_TRUE(v2.isEmpty());
+
+ v2.fill("1", 10);
+ EXPECT_EQ(10U, v2.size());
+ EXPECT_EQ(10U, v2.removeAll("1"));
+ EXPECT_TRUE(v2.isEmpty());
+
+ v2.fill("2", 10);
+ EXPECT_EQ(10U, v2.size());
+ EXPECT_EQ(0U, v2.removeAll("1"));
+ EXPECT_EQ(10U, v2.size());
+
+ v2 = {"1", "2", "1", "2", "1", "2", "2", "1", "1", "1"};
+ EXPECT_EQ(10U, v2.size());
+ EXPECT_EQ(6U, v2.removeAll("1"));
+ EXPECT_EQ(4U, v2.size());
+ EXPECT_TRUE(v2.find("1") == notFound);
+ EXPECT_EQ(4U, v2.removeAll("2"));
+ EXPECT_TRUE(v2.isEmpty());
+
+ v2 = {"3", "1", "2", "1", "2", "1", "2", "2", "1", "1", "1", "3"};
+ EXPECT_EQ(12U, v2.size());
+ EXPECT_EQ(6U, v2.removeAll("1"));
+ EXPECT_EQ(6U, v2.size());
+ EXPECT_TRUE(v2.find("1") == notFound);
+ vExpected = {"3", "2", "2", "2", "2", "3"};
+ EXPECT_TRUE(v2 == vExpected);
+
+ EXPECT_EQ(4U, v2.removeAll("2"));
+ EXPECT_EQ(2U, v2.size());
+ EXPECT_TRUE(v2.find("2") == notFound);
+ vExpected = {"3", "3"};
+ EXPECT_TRUE(v2 == vExpected);
+
+ EXPECT_EQ(2U, v2.removeAll("3"));
+ EXPECT_TRUE(v2.isEmpty());
+
+ v2 = {"1", "1", "1", "3", "2", "4", "2", "2", "2", "4", "4", "3"};
+ EXPECT_EQ(12U, v2.size());
+ EXPECT_EQ(3U, v2.removeAll("1"));
+ EXPECT_EQ(9U, v2.size());
+ EXPECT_TRUE(v2.find("1") == notFound);
+ vExpected = {"3", "2", "4", "2", "2", "2", "4", "4", "3"};
+ EXPECT_TRUE(v2 == vExpected);
+}
+
+TEST(WTF_Vector, RemoveFirstMatching)
+{
+ Vector<int> v;
+ EXPECT_TRUE(v.isEmpty());
+ EXPECT_FALSE(v.removeFirstMatching([] (int value) { return value > 0; }));
+ EXPECT_FALSE(v.removeFirstMatching([] (int) { return true; }));
+ EXPECT_FALSE(v.removeFirstMatching([] (int) { return false; }));
+
+ v = {3, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 3};
+ EXPECT_EQ(12U, v.size());
+ EXPECT_FALSE(v.removeFirstMatching([] (int) { return false; }));
+ EXPECT_EQ(12U, v.size());
+ EXPECT_FALSE(v.removeFirstMatching([] (int value) { return value < 0; }));
+ EXPECT_EQ(12U, v.size());
+ EXPECT_TRUE(v.removeFirstMatching([] (int value) { return value < 3; }));
+ EXPECT_EQ(11U, v.size());
+ EXPECT_TRUE(v == Vector<int>({3, 2, 1, 2, 1, 2, 2, 1, 1, 1, 3}));
+ EXPECT_TRUE(v.removeFirstMatching([] (int value) { return value > 2; }));
+ EXPECT_EQ(10U, v.size());
+ EXPECT_TRUE(v == Vector<int>({2, 1, 2, 1, 2, 2, 1, 1, 1, 3}));
+ EXPECT_TRUE(v.removeFirstMatching([] (int value) { return value > 2; }));
+ EXPECT_EQ(9U, v.size());
+ EXPECT_TRUE(v == Vector<int>({2, 1, 2, 1, 2, 2, 1, 1, 1}));
+}
+
+TEST(WTF_Vector, RemoveAllMatching)
+{
+ Vector<int> v;
+ EXPECT_TRUE(v.isEmpty());
+ EXPECT_FALSE(v.removeAllMatching([] (int value) { return value > 0; }));
+ EXPECT_FALSE(v.removeAllMatching([] (int) { return true; }));
+ EXPECT_FALSE(v.removeAllMatching([] (int) { return false; }));
+
+ v = {3, 1, 2, 1, 2, 1, 2, 2, 1, 1, 1, 3};
+ EXPECT_EQ(12U, v.size());
+ EXPECT_EQ(0U, v.removeAllMatching([] (int) { return false; }));
+ EXPECT_EQ(12U, v.size());
+ EXPECT_EQ(0U, v.removeAllMatching([] (int value) { return value < 0; }));
+ EXPECT_EQ(12U, v.size());
+ EXPECT_EQ(12U, v.removeAllMatching([] (int value) { return value > 0; }));
+ EXPECT_TRUE(v.isEmpty());
+
+ v = {3, 1, 2, 1, 2, 1, 3, 2, 2, 1, 1, 1, 3};
+ EXPECT_EQ(13U, v.size());
+ EXPECT_EQ(3U, v.removeAllMatching([] (int value) { return value > 2; }));
+ EXPECT_EQ(10U, v.size());
+ EXPECT_TRUE(v == Vector<int>({1, 2, 1, 2, 1, 2, 2, 1, 1, 1}));
+ EXPECT_EQ(6U, v.removeAllMatching([] (int value) { return value != 2; }));
+ EXPECT_EQ(4U, v.size());
+ EXPECT_TRUE(v == Vector<int>({2, 2, 2, 2}));
+ EXPECT_EQ(4U, v.removeAllMatching([] (int value) { return value == 2; }));
+ EXPECT_TRUE(v.isEmpty());
+}
+
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/VectorBasic.cpp b/Tools/TestWebKitAPI/Tests/WTF/VectorBasic.cpp
deleted file mode 100644
index 211ef8841..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/VectorBasic.cpp
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 <wtf/Vector.h>
-
-namespace TestWebKitAPI {
-
-TEST(WTF, VectorBasic)
-{
- Vector<int> intVector;
- EXPECT_TRUE(intVector.isEmpty());
- EXPECT_EQ(0ul, intVector.size());
- EXPECT_EQ(0ul, intVector.capacity());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/VectorReverse.cpp b/Tools/TestWebKitAPI/Tests/WTF/VectorReverse.cpp
deleted file mode 100644
index 6d4a00f0f..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/VectorReverse.cpp
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 <wtf/Vector.h>
-
-namespace TestWebKitAPI {
-
-TEST(WTF, VectorReverse)
-{
- Vector<int> intVector;
- intVector.append(10);
- intVector.append(11);
- intVector.append(12);
- intVector.append(13);
- intVector.reverse();
-
- EXPECT_EQ(13, intVector[0]);
- EXPECT_EQ(12, intVector[1]);
- EXPECT_EQ(11, intVector[2]);
- EXPECT_EQ(10, intVector[3]);
-
- intVector.append(9);
- intVector.reverse();
-
- EXPECT_EQ(9, intVector[0]);
- EXPECT_EQ(10, intVector[1]);
- EXPECT_EQ(11, intVector[2]);
- EXPECT_EQ(12, intVector[3]);
- EXPECT_EQ(13, intVector[4]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/WTF.pro b/Tools/TestWebKitAPI/Tests/WTF/WTF.pro
deleted file mode 100644
index 8b3658ffd..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/WTF.pro
+++ /dev/null
@@ -1,32 +0,0 @@
-TEMPLATE = app
-TARGET = tst_wtf
-
-SOURCES += \
- AtomicString.cpp \
- CheckedArithmeticOperations.cpp \
- CString.cpp \
- Functional.cpp \
- HashMap.cpp \
- HashSet.cpp \
- IntegerToStringConversion.cpp \
- ListHashSet.cpp \
- MD5.cpp \
- MathExtras.cpp \
- MediaTime.cpp \
- RedBlackTree.cpp \
- SHA1.cpp \
- SaturatedArithmeticOperations.cpp \
- StringBuilder.cpp \
- StringHasher.cpp \
- StringImpl.cpp \
- StringOperators.cpp \
- TemporaryChange.cpp \
- Vector.cpp \
- VectorBasic.cpp \
- VectorReverse.cpp \
- WTFString.cpp
-
-include(../../TestWebKitAPI.pri)
-
-DEFINES += APITEST_SOURCE_DIR=\\\"$$PWD\\\"
-
diff --git a/Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp b/Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp
index 4a92cd4e8..e809ddac4 100644
--- a/Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp
+++ b/Tools/TestWebKitAPI/Tests/WTF/WTFString.cpp
@@ -38,14 +38,12 @@ TEST(WTF, StringCreationFromLiteral)
ASSERT_EQ(strlen("Explicit construction syntax"), stringFromLiteral.length());
ASSERT_TRUE(stringFromLiteral == "Explicit construction syntax");
ASSERT_TRUE(stringFromLiteral.is8Bit());
- ASSERT_TRUE(stringFromLiteral.impl()->hasTerminatingNullCharacter());
ASSERT_TRUE(String("Explicit construction syntax") == stringFromLiteral);
String stringWithTemplate("Template Literal", String::ConstructFromLiteral);
ASSERT_EQ(strlen("Template Literal"), stringWithTemplate.length());
ASSERT_TRUE(stringWithTemplate == "Template Literal");
ASSERT_TRUE(stringWithTemplate.is8Bit());
- ASSERT_TRUE(stringWithTemplate.impl()->hasTerminatingNullCharacter());
ASSERT_TRUE(String("Template Literal") == stringWithTemplate);
}
@@ -155,5 +153,143 @@ TEST(WTF, StringReplaceWithLiteral)
ASSERT_STREQ("résumé", testString.utf8().data());
}
+TEST(WTF, StringIsolatedCopy)
+{
+ String original = "1234";
+ auto copy = WTFMove(original).isolatedCopy();
+ ASSERT_FALSE(original.impl() == copy.impl());
+}
+
+TEST(WTF, StringToInt)
+{
+ bool ok;
+
+ EXPECT_EQ(0, String().toInt());
+ EXPECT_EQ(0, String().toInt(&ok));
+ EXPECT_FALSE(ok);
+
+ EXPECT_EQ(0, emptyString().toInt());
+ EXPECT_EQ(0, emptyString().toInt(&ok));
+ EXPECT_FALSE(ok);
+
+ EXPECT_EQ(0, String("0").toInt());
+ EXPECT_EQ(0, String("0").toInt(&ok));
+ EXPECT_TRUE(ok);
+
+ EXPECT_EQ(1, String("1").toInt());
+ EXPECT_EQ(1, String("1").toInt(&ok));
+ EXPECT_TRUE(ok);
+
+ EXPECT_EQ(2147483647, String("2147483647").toInt());
+ EXPECT_EQ(2147483647, String("2147483647").toInt(&ok));
+ EXPECT_TRUE(ok);
+
+ EXPECT_EQ(0, String("2147483648").toInt());
+ EXPECT_EQ(0, String("2147483648").toInt(&ok));
+ EXPECT_FALSE(ok);
+
+ EXPECT_EQ(-2147483648, String("-2147483648").toInt());
+ EXPECT_EQ(-2147483648, String("-2147483648").toInt(&ok));
+ EXPECT_TRUE(ok);
+
+ EXPECT_EQ(0, String("-2147483649").toInt());
+ EXPECT_EQ(0, String("-2147483649").toInt(&ok));
+ EXPECT_FALSE(ok);
+
+ // fail if we see leading junk
+ EXPECT_EQ(0, String("x1").toInt());
+ EXPECT_EQ(0, String("x1").toInt(&ok));
+ EXPECT_FALSE(ok);
+
+ // succeed if we see leading spaces
+ EXPECT_EQ(1, String(" 1").toInt());
+ EXPECT_EQ(1, String(" 1").toInt(&ok));
+ EXPECT_TRUE(ok);
+
+ // silently ignore trailing junk
+ EXPECT_EQ(1, String("1x").toInt());
+ EXPECT_EQ(1, String("1x").toInt(&ok));
+ EXPECT_TRUE(ok);
+}
+
+TEST(WTF, StringToDouble)
+{
+ bool ok;
+
+ EXPECT_EQ(0.0, String().toDouble());
+ EXPECT_EQ(0.0, String().toDouble(&ok));
+ EXPECT_FALSE(ok);
+
+ EXPECT_EQ(0.0, emptyString().toDouble());
+ EXPECT_EQ(0.0, emptyString().toDouble(&ok));
+ EXPECT_FALSE(ok);
+
+ EXPECT_EQ(0.0, String("0").toDouble());
+ EXPECT_EQ(0.0, String("0").toDouble(&ok));
+ EXPECT_TRUE(ok);
+
+ EXPECT_EQ(1.0, String("1").toDouble());
+ EXPECT_EQ(1.0, String("1").toDouble(&ok));
+ EXPECT_TRUE(ok);
+
+ // fail if we see leading junk
+ EXPECT_EQ(0.0, String("x1").toDouble());
+ EXPECT_EQ(0.0, String("x1").toDouble(&ok));
+ EXPECT_FALSE(ok);
+
+ // succeed if we see leading spaces
+ EXPECT_EQ(1.0, String(" 1").toDouble());
+ EXPECT_EQ(1.0, String(" 1").toDouble(&ok));
+ EXPECT_TRUE(ok);
+
+ // ignore trailing junk, but return false for "ok"
+ // FIXME: This is an inconsistency with toInt, which always guarantees
+ // it will return 0 if it's also going to return false for ok.
+ EXPECT_EQ(1.0, String("1x").toDouble());
+ EXPECT_EQ(1.0, String("1x").toDouble(&ok));
+ EXPECT_FALSE(ok);
+
+ // parse only numbers, not special values such as "infinity"
+ EXPECT_EQ(0.0, String("infinity").toDouble());
+ EXPECT_EQ(0.0, String("infinity").toDouble(&ok));
+ EXPECT_FALSE(ok);
+
+ // parse only numbers, not special values such as "nan"
+ EXPECT_EQ(0.0, String("nan").toDouble());
+ EXPECT_EQ(0.0, String("nan").toDouble(&ok));
+ EXPECT_FALSE(ok);
+}
+
+TEST(WTF, StringhasInfixStartingAt)
+{
+ EXPECT_TRUE(String("Test").is8Bit());
+ EXPECT_TRUE(String("Te").is8Bit());
+ EXPECT_TRUE(String("st").is8Bit());
+ EXPECT_TRUE(String("Test").hasInfixStartingAt(String("Te"), 0));
+ EXPECT_FALSE(String("Test").hasInfixStartingAt(String("Te"), 2));
+ EXPECT_TRUE(String("Test").hasInfixStartingAt(String("st"), 2));
+ EXPECT_FALSE(String("Test").hasInfixStartingAt(String("ST"), 2));
+
+ EXPECT_FALSE(String::fromUTF8("中国").is8Bit());
+ EXPECT_FALSE(String::fromUTF8("中").is8Bit());
+ EXPECT_FALSE(String::fromUTF8("国").is8Bit());
+ EXPECT_TRUE(String::fromUTF8("中国").hasInfixStartingAt(String::fromUTF8("中"), 0));
+ EXPECT_FALSE(String::fromUTF8("中国").hasInfixStartingAt(String::fromUTF8("中"), 1));
+ EXPECT_TRUE(String::fromUTF8("中国").hasInfixStartingAt(String::fromUTF8("国"), 1));
+
+ EXPECT_FALSE(String::fromUTF8("中国").hasInfixStartingAt(String("Te"), 0));
+ EXPECT_FALSE(String("Test").hasInfixStartingAt(String::fromUTF8("中"), 2));
+}
+
+TEST(WTF, StringExistingHash)
+{
+ String string1("Template Literal");
+ ASSERT_FALSE(string1.isNull());
+ ASSERT_FALSE(string1.impl()->hasHash());
+ string1.impl()->hash();
+ ASSERT_EQ(string1.existingHash(), string1.impl()->existingHash());
+ String string2;
+ ASSERT_EQ(string2.existingHash(), 0u);
+}
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp
new file mode 100644
index 000000000..5b900007a
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/WeakPtr.cpp
@@ -0,0 +1,187 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "test.h"
+
+#include <wtf/WeakPtr.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_WeakPtr, Basic)
+{
+ int dummy = 5;
+ WeakPtrFactory<int>* factory = new WeakPtrFactory<int>(&dummy);
+ WeakPtr<int> weakPtr1 = factory->createWeakPtr();
+ WeakPtr<int> weakPtr2 = factory->createWeakPtr();
+ WeakPtr<int> weakPtr3 = factory->createWeakPtr();
+ EXPECT_EQ(weakPtr1.get(), &dummy);
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr3.get(), &dummy);
+ EXPECT_TRUE(weakPtr1);
+ EXPECT_TRUE(weakPtr2);
+ EXPECT_TRUE(weakPtr3);
+ delete factory;
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_NULL(weakPtr2.get());
+ EXPECT_NULL(weakPtr3.get());
+ EXPECT_FALSE(weakPtr1);
+ EXPECT_FALSE(weakPtr2);
+ EXPECT_FALSE(weakPtr3);
+}
+
+TEST(WTF_WeakPtr, Assignment)
+{
+ int dummy = 5;
+ WeakPtr<int> weakPtr;
+ {
+ WeakPtrFactory<int> factory(&dummy);
+ EXPECT_NULL(weakPtr.get());
+ weakPtr = factory.createWeakPtr();
+ EXPECT_EQ(weakPtr.get(), &dummy);
+ }
+ EXPECT_NULL(weakPtr.get());
+}
+
+TEST(WTF_WeakPtr, MultipleFactories)
+{
+ int dummy1 = 5;
+ int dummy2 = 7;
+ WeakPtrFactory<int>* factory1 = new WeakPtrFactory<int>(&dummy1);
+ WeakPtrFactory<int>* factory2 = new WeakPtrFactory<int>(&dummy2);
+ WeakPtr<int> weakPtr1 = factory1->createWeakPtr();
+ WeakPtr<int> weakPtr2 = factory2->createWeakPtr();
+ EXPECT_EQ(weakPtr1.get(), &dummy1);
+ EXPECT_EQ(weakPtr2.get(), &dummy2);
+ delete factory1;
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_EQ(weakPtr2.get(), &dummy2);
+ delete factory2;
+ EXPECT_NULL(weakPtr2.get());
+}
+
+TEST(WTF_WeakPtr, RevokeAll)
+{
+ int dummy = 5;
+ WeakPtrFactory<int> factory(&dummy);
+ WeakPtr<int> weakPtr1 = factory.createWeakPtr();
+ WeakPtr<int> weakPtr2 = factory.createWeakPtr();
+ WeakPtr<int> weakPtr3 = factory.createWeakPtr();
+ EXPECT_EQ(weakPtr1.get(), &dummy);
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr3.get(), &dummy);
+ factory.revokeAll();
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_NULL(weakPtr2.get());
+ EXPECT_NULL(weakPtr3.get());
+}
+
+TEST(WTF_WeakPtr, NullFactory)
+{
+ WeakPtrFactory<int> factory(nullptr);
+ WeakPtr<int> weakPtr = factory.createWeakPtr();
+ EXPECT_NULL(weakPtr.get());
+ factory.revokeAll();
+ EXPECT_NULL(weakPtr.get());
+}
+
+struct Foo {
+ void bar() { };
+};
+
+TEST(WTF_WeakPtr, Dereference)
+{
+ Foo f;
+ WeakPtrFactory<Foo> factory(&f);
+ WeakPtr<Foo> weakPtr = factory.createWeakPtr();
+ weakPtr->bar();
+}
+
+TEST(WTF_WeakPtr, Forget)
+{
+ int dummy = 5;
+ int dummy2 = 7;
+
+ WeakPtrFactory<int> outerFactory(&dummy2);
+ WeakPtr<int> weakPtr1, weakPtr2, weakPtr3, weakPtr4;
+ {
+ WeakPtrFactory<int> innerFactory(&dummy);
+ weakPtr1 = innerFactory.createWeakPtr();
+ weakPtr2 = innerFactory.createWeakPtr();
+ weakPtr3 = innerFactory.createWeakPtr();
+ EXPECT_EQ(weakPtr1.get(), &dummy);
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr3.get(), &dummy);
+ weakPtr1.clear();
+ weakPtr3 = nullptr;
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_NULL(weakPtr3.get());
+ weakPtr1.clear();
+ weakPtr3.clear();
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_NULL(weakPtr3.get());
+ weakPtr3 = nullptr;
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_NULL(weakPtr3.get());
+
+ weakPtr4 = weakPtr2;
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr4.get(), &dummy);
+
+ WeakPtr<int> weakPtr5 = weakPtr2;
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr5.get(), &dummy);
+ weakPtr5.clear();
+ EXPECT_NULL(weakPtr5.get());
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+
+ weakPtr4 = outerFactory.createWeakPtr();
+ EXPECT_EQ(weakPtr2.get(), &dummy);
+ EXPECT_EQ(weakPtr4.get(), &dummy2);
+ }
+
+ EXPECT_NULL(weakPtr1.get());
+ EXPECT_NULL(weakPtr2.get());
+ EXPECT_EQ(weakPtr4.get(), &dummy2);
+
+ WeakPtr<int> weakPtr5 = weakPtr4;
+ EXPECT_EQ(weakPtr4.get(), &dummy2);
+ EXPECT_EQ(weakPtr5.get(), &dummy2);
+ weakPtr5.clear();
+ EXPECT_NULL(weakPtr5.get());
+ WeakPtr<int> weakPtr6 = weakPtr5;
+ EXPECT_NULL(weakPtr6.get());
+ EXPECT_EQ(weakPtr5.get(), weakPtr6.get());
+
+ WeakPtr<int> weakPtr7 = outerFactory.createWeakPtr();
+ EXPECT_EQ(weakPtr7.get(), &dummy2);
+ weakPtr7 = nullptr;
+ EXPECT_NULL(weakPtr7.get());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp b/Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp
new file mode 100644
index 000000000..74f5dc294
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/WorkQueue.cpp
@@ -0,0 +1,203 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "Test.h"
+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
+#include <wtf/Vector.h>
+#include <wtf/WorkQueue.h>
+#include <string>
+#include <thread>
+
+namespace TestWebKitAPI {
+
+static const char* simpleTestLabel = "simpleTest";
+static const char* longTestLabel = "longTest";
+static const char* thirdTestLabel = "thirdTest";
+static const char* dispatchAfterLabel = "dispatchAfter";
+
+TEST(WTF_WorkQueue, Simple)
+{
+ Lock m_lock;
+ Condition m_testCompleted;
+ Vector<std::string> m_functionCallOrder;
+
+ bool calledSimpleTest = false;
+ bool calledLongTest = false;
+ bool calledThirdTest = false;
+
+ static const char* simpleTestLabel = "simpleTest";
+ static const char* longTestLabel = "longTest";
+ static const char* thirdTestLabel = "thirdTest";
+
+ auto queue = WorkQueue::create("com.apple.WebKit.Test.simple");
+ int initialRefCount = queue->refCount();
+ EXPECT_EQ(1, initialRefCount);
+
+ LockHolder locker(m_lock);
+ queue->dispatch([&](void) {
+ m_functionCallOrder.append(simpleTestLabel);
+ calledSimpleTest = true;
+ });
+
+ queue->dispatch([&](void) {
+ m_functionCallOrder.append(longTestLabel);
+ std::this_thread::sleep_for(std::chrono::nanoseconds(100));
+ calledLongTest = true;
+ });
+
+ queue->dispatch([&](void) {
+ LockHolder locker(m_lock);
+ m_functionCallOrder.append(thirdTestLabel);
+ calledThirdTest = true;
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_TRUE(calledLongTest);
+ EXPECT_TRUE(calledThirdTest);
+
+ m_testCompleted.notifyOne();
+ });
+
+ EXPECT_GT(queue->refCount(), 1);
+
+ m_testCompleted.wait(m_lock);
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_TRUE(calledLongTest);
+ EXPECT_TRUE(calledThirdTest);
+
+ EXPECT_EQ(static_cast<size_t>(3), m_functionCallOrder.size());
+ EXPECT_STREQ(simpleTestLabel, m_functionCallOrder[0].c_str());
+ EXPECT_STREQ(longTestLabel, m_functionCallOrder[1].c_str());
+ EXPECT_STREQ(thirdTestLabel, m_functionCallOrder[2].c_str());
+}
+
+TEST(WTF_WorkQueue, TwoQueues)
+{
+ Lock m_lock;
+ Condition m_testQueue1Completed, m_testQueue2Completed;
+ Vector<std::string> m_functionCallOrder;
+
+ bool calledSimpleTest = false;
+ bool calledLongTest = false;
+ bool calledThirdTest = false;
+
+ auto queue1 = WorkQueue::create("com.apple.WebKit.Test.twoQueues1");
+ auto queue2 = WorkQueue::create("com.apple.WebKit.Test.twoQueues2");
+
+ EXPECT_EQ(1, queue1->refCount());
+ EXPECT_EQ(1, queue2->refCount());
+
+ LockHolder locker(m_lock);
+
+ queue1->dispatch([&](void) {
+ m_functionCallOrder.append(simpleTestLabel);
+ calledSimpleTest = true;
+ });
+
+ queue2->dispatch([&](void) {
+ std::this_thread::sleep_for(std::chrono::milliseconds(50));
+
+ LockHolder locker(m_lock);
+
+ // Will fail if queue2 took the mutex before queue1.
+ EXPECT_TRUE(calledThirdTest);
+
+ m_functionCallOrder.append(longTestLabel);
+ calledLongTest = true;
+ m_testQueue2Completed.notifyOne();
+ });
+
+ queue1->dispatch([&](void) {
+ LockHolder locker(m_lock);
+ m_functionCallOrder.append(thirdTestLabel);
+ calledThirdTest = true;
+
+ m_testQueue1Completed.notifyOne();
+ });
+
+ m_testQueue1Completed.wait(m_lock);
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_FALSE(calledLongTest);
+ EXPECT_TRUE(calledThirdTest);
+
+ m_testQueue2Completed.wait(m_lock);
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_TRUE(calledLongTest);
+ EXPECT_TRUE(calledThirdTest);
+
+ EXPECT_EQ(static_cast<size_t>(3), m_functionCallOrder.size());
+ EXPECT_STREQ(simpleTestLabel, m_functionCallOrder[0].c_str());
+ EXPECT_STREQ(thirdTestLabel, m_functionCallOrder[1].c_str());
+ EXPECT_STREQ(longTestLabel, m_functionCallOrder[2].c_str());
+}
+
+TEST(WTF_WorkQueue, DispatchAfter)
+{
+ Lock m_lock;
+ Condition m_testCompleted, m_dispatchAfterTestCompleted;
+ Vector<std::string> m_functionCallOrder;
+
+ bool calledSimpleTest = false;
+ bool calledDispatchAfterTest = false;
+
+ auto queue = WorkQueue::create("com.apple.WebKit.Test.dispatchAfter");
+
+ LockHolder locker(m_lock);
+
+ queue->dispatch([&](void) {
+ LockHolder locker(m_lock);
+ m_functionCallOrder.append(simpleTestLabel);
+ calledSimpleTest = true;
+ m_testCompleted.notifyOne();
+ });
+
+ queue->dispatchAfter(std::chrono::milliseconds(500), [&](void) {
+ LockHolder locker(m_lock);
+ m_functionCallOrder.append(dispatchAfterLabel);
+ calledDispatchAfterTest = true;
+ m_dispatchAfterTestCompleted.notifyOne();
+ });
+
+ m_testCompleted.wait(m_lock);
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_FALSE(calledDispatchAfterTest);
+
+ m_dispatchAfterTestCompleted.wait(m_lock);
+
+ EXPECT_TRUE(calledSimpleTest);
+ EXPECT_TRUE(calledDispatchAfterTest);
+
+ EXPECT_EQ(static_cast<size_t>(2), m_functionCallOrder.size());
+ EXPECT_STREQ(simpleTestLabel, m_functionCallOrder[0].c_str());
+ EXPECT_STREQ(dispatchAfterLabel, m_functionCallOrder[1].c_str());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp
deleted file mode 100644
index 0ca174cea..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtr.cpp
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 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 <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(RetainPtr, AdoptCF)
-{
- RetainPtr<CFStringRef> foo = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
-
- EXPECT_EQ(1, CFGetRetainCount(foo.get()));
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp b/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp
deleted file mode 100644
index 6dd7b6a56..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/cf/RetainPtrHashing.cpp
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2011 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 <wtf/HashSet.h>
-#include <wtf/HashMap.h>
-#include <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(RetainPtrHashing, HashSet)
-{
- HashSet<RetainPtr<CFStringRef> > set;
-
- RetainPtr<CFStringRef> foo = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
-
- EXPECT_FALSE(set.contains(foo));
- set.add(foo);
- EXPECT_TRUE(set.contains(foo));
-
- RetainPtr<CFStringRef> foo2 = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
- EXPECT_FALSE(set.contains(foo2));
- set.add(foo2);
- EXPECT_TRUE(set.contains(foo2));
-
- set.remove(foo);
- EXPECT_FALSE(set.contains(foo));
-}
-
-TEST(RetainPtrHashing, HashMapKey)
-{
- HashMap<RetainPtr<CFStringRef>, int> map;
-
- RetainPtr<CFStringRef> foo = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
-
- EXPECT_FALSE(map.contains(foo));
- map.add(foo, 1);
- EXPECT_EQ(1, map.get(foo));
-
- RetainPtr<CFStringRef> foo2 = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
- EXPECT_FALSE(map.contains(foo2));
- map.add(foo2, 2);
- EXPECT_EQ(2, map.get(foo2));
-
- map.remove(foo);
- EXPECT_FALSE(map.contains(foo));
-}
-
-TEST(RetainPtrHashing, HashMapValue)
-{
- HashMap<int, RetainPtr<CFStringRef> > map;
-
- RetainPtr<CFStringRef> foo = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
-
- EXPECT_FALSE(map.contains(1));
- map.add(1, foo);
- EXPECT_EQ(foo, map.get(1));
-
- RetainPtr<CFStringRef> foo2 = adoptCF(CFStringCreateWithCString(kCFAllocatorDefault, "foo", kCFStringEncodingUTF8));
- EXPECT_FALSE(map.contains(2));
- map.add(2, foo2);
- EXPECT_EQ(foo2, map.get(2));
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp
new file mode 100644
index 000000000..5389dcbc8
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/darwin/OSObjectPtr.cpp
@@ -0,0 +1,66 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 <wtf/OSObjectPtr.h>
+
+#include <dispatch/dispatch.h>
+#include <CoreFoundation/CoreFoundation.h>
+
+namespace TestWebKitAPI {
+
+TEST(OSObjectPtr, AdoptOSObject)
+{
+ OSObjectPtr<dispatch_queue_t> foo = adoptOSObject(dispatch_queue_create(0, DISPATCH_QUEUE_SERIAL));
+
+ EXPECT_EQ(1, CFGetRetainCount(foo.get()));
+}
+
+TEST(OSObjectPtr, RetainRelease)
+{
+ dispatch_queue_t foo = dispatch_queue_create(0, DISPATCH_QUEUE_SERIAL);
+ EXPECT_EQ(1, CFGetRetainCount(foo));
+
+ WTF::retainOSObject(foo);
+ EXPECT_EQ(2, CFGetRetainCount(foo));
+
+ WTF::releaseOSObject(foo);
+ EXPECT_EQ(1, CFGetRetainCount(foo));
+}
+
+TEST(OSObjectPtr, LeakRef)
+{
+ OSObjectPtr<dispatch_queue_t> foo = adoptOSObject(dispatch_queue_create(0, DISPATCH_QUEUE_SERIAL));
+ EXPECT_EQ(1, CFGetRetainCount(foo.get()));
+
+ dispatch_queue_t queue = foo.leakRef();
+ EXPECT_EQ(nullptr, foo.get());
+ EXPECT_EQ(1, CFGetRetainCount(queue));
+
+ WTF::releaseOSObject(queue);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp b/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp
new file mode 100644
index 000000000..11f02c7b0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/glib/GUniquePtr.cpp
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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. 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 INC. 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 <gio/gio.h>
+
+inline std::ostringstream& log()
+{
+ static std::ostringstream log;
+ return log;
+}
+
+inline std::string takeLogStr()
+{
+ std::string string = log().str();
+ log().str("");
+ return string;
+}
+
+static void (* _g_free)(void*) = g_free;
+#define g_free(x) \
+ log() << "g_free(" << ptr << ");"; \
+ _g_free(x);
+
+static void (* _g_error_free)(GError*) = g_error_free;
+#define g_error_free(x) \
+ log() << "g_error_free(" << ptr << ");"; \
+ _g_error_free(x);
+
+static void (* _g_list_free)(GList*) = g_list_free;
+#define g_list_free(x) \
+ log() << "g_list_free(" << ptr << ");"; \
+ _g_list_free(x);
+
+static void (* _g_slist_free)(GSList*) = g_slist_free;
+#define g_slist_free(x) \
+ log() << "g_slist_free(" << ptr << ");"; \
+ _g_slist_free(x);
+
+static void (* _g_pattern_spec_free)(GPatternSpec*) = g_pattern_spec_free;
+#define g_pattern_spec_free(x) \
+ log() << "g_pattern_spec_free(" << ptr << ");"; \
+ _g_pattern_spec_free(x);
+
+static void (* _g_dir_close)(GDir*) = g_dir_close;
+#define g_dir_close(x) \
+ log() << "g_dir_close(" << ptr << ");"; \
+ _g_dir_close(x);
+
+static void (* _g_timer_destroy)(GTimer*) = g_timer_destroy;
+#define g_timer_destroy(x) \
+ log() << "g_timer_destroy(" << ptr << ");"; \
+ _g_timer_destroy(x);
+
+static void (* _g_key_file_free)(GKeyFile*) = g_key_file_free;
+#define g_key_file_free(x) \
+ log() << "g_key_file_free(" << ptr << ");"; \
+ _g_key_file_free(x);
+
+#include <wtf/glib/GUniquePtr.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_GUniquePtr, Basic)
+{
+ std::ostringstream actual;
+
+ {
+ GUniquePtr<char> a(g_strdup("a"));
+ actual << "g_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GError> a(g_error_new_literal(G_IO_ERROR, G_IO_ERROR_NOT_FOUND, "a"));
+ actual << "g_error_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GList> a(g_list_prepend(nullptr, g_strdup("a")));
+ actual << "g_list_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GSList> a(g_slist_prepend(nullptr, g_strdup("a")));
+ actual << "g_slist_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GPatternSpec> a(g_pattern_spec_new("a"));
+ actual << "g_pattern_spec_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GDir> a(g_dir_open("/tmp", 0, nullptr));
+ actual << "g_dir_close(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GTimer> a(g_timer_new());
+ actual << "g_timer_destroy(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniquePtr<GKeyFile> a(g_key_file_new());
+ actual << "g_key_file_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+}
+
+static void returnOutChar(char** outChar)
+{
+ *outChar = g_strdup("a");
+}
+
+TEST(WTF_GUniquePtr, OutPtr)
+{
+ std::ostringstream actual;
+
+ {
+ GUniqueOutPtr<char> a;
+ ASSERT_EQ(nullptr, a.get());
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniqueOutPtr<char> a;
+ returnOutChar(&a.outPtr());
+ actual << "g_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniqueOutPtr<char> a;
+ returnOutChar(&a.outPtr());
+ actual << "g_free(" << a.get() << ");";
+ returnOutChar(&a.outPtr());
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+ actual << "g_free(" << a.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+
+ {
+ GUniqueOutPtr<char> a;
+ returnOutChar(&a.outPtr());
+ GUniquePtr<char> b = a.release();
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual << "g_free(" << b.get() << ");";
+ }
+ ASSERT_STREQ(actual.str().c_str(), takeLogStr().c_str());
+ actual.str("");
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp b/Tools/TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp
new file mode 100644
index 000000000..9923d6580
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WTF/glib/WorkQueueGLib.cpp
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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. 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 INC. 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 "Test.h"
+#include <gio/gio.h>
+#include <thread>
+#include <wtf/Condition.h>
+#include <wtf/Lock.h>
+#include <wtf/WorkQueue.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+
+namespace TestWebKitAPI {
+
+TEST(WTF_WorkQueue, AsyncIO)
+{
+ struct TestingContext {
+ Lock m_lock;
+ Condition m_testCompleted;
+ GMainContext* m_mainContext;
+ } context;
+
+ auto queue = WorkQueue::create("com.apple.WebKit.Test.AsyncIO");
+ context.m_mainContext = g_main_context_default();
+ EXPECT_FALSE(g_main_context_get_thread_default());
+
+ GUniquePtr<char> currentDirectory(g_get_current_dir());
+ GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(currentDirectory.get()));
+
+ LockHolder locker(context.m_lock);
+ queue->dispatch([&](void) {
+ EXPECT_TRUE(g_main_context_get_thread_default());
+ EXPECT_TRUE(g_main_context_get_thread_default() != context.m_mainContext);
+ context.m_mainContext = g_main_context_get_thread_default();
+ g_file_query_info_async(file.get(), G_FILE_ATTRIBUTE_STANDARD_SIZE, G_FILE_QUERY_INFO_NONE, G_PRIORITY_DEFAULT, nullptr,
+ [](GObject*, GAsyncResult*, gpointer userData) {
+ TestingContext* context = static_cast<TestingContext*>(userData);
+ LockHolder locker(context->m_lock);
+ EXPECT_EQ(g_main_context_get_thread_default(), context->m_mainContext);
+ context->m_testCompleted.notifyOne();
+ }, &context);
+ });
+
+ context.m_testCompleted.wait(context.m_lock);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm b/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm
deleted file mode 100644
index a03971c57..000000000
--- a/Tools/TestWebKitAPI/Tests/WTF/ns/RetainPtr.mm
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 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 <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(RetainPtr, AdoptNS)
-{
- RetainPtr<NSObject> foo = adoptNS([[NSObject alloc] init]);
-
- EXPECT_EQ(1, CFGetRetainCount(foo.get()));
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/CSSParser.cpp b/Tools/TestWebKitAPI/Tests/WebCore/CSSParser.cpp
new file mode 100644
index 000000000..25c450933
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/CSSParser.cpp
@@ -0,0 +1,88 @@
+/*
+ * Copyright (C) 2014 Igalia, S.L. 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. 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 INC. 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 <WebCore/CSSParser.h>
+#include <WebCore/CSSValueList.h>
+#include <WebCore/StyleProperties.h>
+
+namespace TestWebKitAPI {
+
+using namespace WebCore;
+
+#if ENABLE(CSS_GRID_LAYOUT)
+static unsigned computeNumberOfTracks(CSSValueList& valueList)
+{
+ unsigned numberOfTracks = 0;
+ for (const auto& value : valueList) {
+ if (value->isGridLineNamesValue())
+ continue;
+ ++numberOfTracks;
+ }
+ return numberOfTracks;
+}
+#endif
+
+TEST(CSSPropertyParserTest, GridTrackLimits)
+{
+#if ENABLE(CSS_GRID_LAYOUT)
+ struct {
+ const CSSPropertyID propertyID;
+ const char* input;
+ const size_t output;
+ } testCases[] = {
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(999999, 20px);", 999999},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(999999, 20px);", 999999},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(1000000, 10%);", 1000000},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(1000000, 10%);", 1000000},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(1000000, [first] -webkit-min-content [last]);", 1000000},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(1000000, [first] -webkit-min-content [last]);", 1000000},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(1000001, auto);", 1000000},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(1000001, auto);", 1000000},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(400000, 2em minmax(10px, -webkit-max-content) 0.5fr);", 999999},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(400000, 2em minmax(10px, -webkit-max-content) 0.5fr);", 999999},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last]);", 999999},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(600000, [first] 3vh 10% 2fr [nav] 10px auto 1fr 6em [last]);", 999999},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(100000000000000000000, 10% 1fr);", 1000000},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(100000000000000000000, 10% 1fr);", 1000000},
+ {CSSPropertyWebkitGridTemplateColumns, "-webkit-grid-template-columns: repeat(100000000000000000000, 10% 5em 1fr auto auto 15px -webkit-min-content);", 999999},
+ {CSSPropertyWebkitGridTemplateRows, "-webkit-grid-template-rows: repeat(100000000000000000000, 10% 5em 1fr auto auto 15px -webkit-min-content);", 999999},
+ };
+
+ CSSParser parser(strictCSSParserContext());
+ RefPtr<MutableStyleProperties> properties = MutableStyleProperties::create();
+
+ for (auto& testCase : testCases) {
+ ASSERT_TRUE(parser.parseDeclaration(properties.get(), testCase.input, nullptr, nullptr));
+ RefPtr<CSSValue> value = properties->getPropertyCSSValue(testCase.propertyID);
+
+ ASSERT_TRUE(value->isValueList());
+ EXPECT_EQ(computeNumberOfTracks(*downcast<CSSValueList>(value.get())), testCase.output);
+ }
+#endif // ENABLE(CSS_GRID_LAYOUT)
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp b/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp
new file mode 100644
index 000000000..286f30fd0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/CalculationValue.cpp
@@ -0,0 +1,283 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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 <WebCore/CalculationValue.h>
+
+namespace TestWebKitAPI {
+
+static unsigned deletionCount;
+
+class CalculationDeletionTestNode : public WebCore::CalcExpressionNode {
+public:
+ virtual ~CalculationDeletionTestNode()
+ {
+ ++deletionCount;
+ }
+
+ virtual float evaluate(float) const override { return 0; }
+ bool operator==(const CalcExpressionNode&) const override { ASSERT_NOT_REACHED(); return false; }
+};
+
+static Ref<WebCore::CalculationValue> createTestValue()
+{
+ auto node = std::make_unique<CalculationDeletionTestNode>();
+ return WebCore::CalculationValue::create(WTFMove(node), WebCore::CalculationRangeAll);
+}
+
+TEST(CalculationValue, LengthConstruction)
+{
+ RefPtr<WebCore::CalculationValue> value = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ WebCore::Length length(*value);
+ EXPECT_EQ(2U, value->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ WebCore::Length lengthA(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthB(lengthA);
+ EXPECT_EQ(2U, value->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ WebCore::Length lengthC(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthD(WTFMove(lengthC));
+ EXPECT_EQ(2U, value->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ value = nullptr;
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+}
+
+TEST(CalculationValue, LengthConstructionReleasedValue)
+{
+ RefPtr<WebCore::CalculationValue> value = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length length(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ }
+
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthA(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ WebCore::Length lengthB(lengthA);
+ EXPECT_EQ(1U, rawValue->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ }
+
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthC(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ WebCore::Length lengthD(WTFMove(lengthC));
+ EXPECT_EQ(1U, rawValue->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ }
+
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+}
+
+TEST(CalculationValue, LengthAssignment)
+{
+ RefPtr<WebCore::CalculationValue> value = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ WebCore::Length lengthA(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthB;
+ lengthB = lengthA;
+ EXPECT_EQ(2U, value->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+
+ {
+ WebCore::Length lengthC(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthD;
+ lengthD = WTFMove(lengthC);
+ EXPECT_EQ(2U, value->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ value = nullptr;
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+ RefPtr<WebCore::CalculationValue> value2 = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(1U, value2->refCount());
+
+ {
+ WebCore::Length lengthE(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthF(*value2);
+ EXPECT_EQ(2U, value2->refCount());
+ lengthE = lengthF;
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(2U, value2->refCount());
+ }
+
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(1U, value2->refCount());
+
+ {
+ WebCore::Length lengthG(*value);
+ EXPECT_EQ(2U, value->refCount());
+ WebCore::Length lengthH(*value2);
+ EXPECT_EQ(2U, value2->refCount());
+ lengthG = WTFMove(lengthH);
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(2U, value2->refCount());
+ }
+
+ EXPECT_EQ(0U, deletionCount);
+ value = nullptr;
+ EXPECT_EQ(1U, deletionCount);
+ value2 = nullptr;
+ EXPECT_EQ(2U, deletionCount);
+ deletionCount = 0;
+}
+
+TEST(CalculationValue, LengthAssignmentReleasedValue)
+{
+ RefPtr<WebCore::CalculationValue> value = createTestValue();
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthA(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ WebCore::Length lengthB;
+ lengthB = lengthA;
+ EXPECT_EQ(1U, rawValue->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ }
+
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthC(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ WebCore::Length lengthD;
+ lengthD = WTFMove(lengthC);
+ EXPECT_EQ(1U, rawValue->refCount());
+
+ EXPECT_EQ(0U, deletionCount);
+ }
+
+ EXPECT_EQ(1U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+ RefPtr<WebCore::CalculationValue> value2 = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(1U, value2->refCount());
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthE(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ auto* rawValue2 = value2.get();
+ WebCore::Length lengthF(value2.releaseNonNull());
+ EXPECT_EQ(1U, rawValue2->refCount());
+
+ lengthE = lengthF;
+ EXPECT_EQ(1U, deletionCount);
+ EXPECT_EQ(1U, rawValue2->refCount());
+ }
+
+ EXPECT_EQ(2U, deletionCount);
+ deletionCount = 0;
+
+ value = createTestValue();
+ value2 = createTestValue();
+
+ EXPECT_EQ(1U, value->refCount());
+ EXPECT_EQ(1U, value2->refCount());
+
+ {
+ auto* rawValue = value.get();
+ WebCore::Length lengthG(value.releaseNonNull());
+ EXPECT_EQ(1U, rawValue->refCount());
+ auto* rawValue2 = value2.get();
+ WebCore::Length lengthH(value2.releaseNonNull());
+ EXPECT_EQ(1U, rawValue2->refCount());
+
+ lengthG = WTFMove(lengthH);
+ EXPECT_EQ(1U, deletionCount);
+ EXPECT_EQ(1U, rawValue2->refCount());
+ }
+
+ EXPECT_EQ(2U, deletionCount);
+ deletionCount = 0;
+}
+
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp b/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp
new file mode 100644
index 000000000..d3c10afc7
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/ContentExtensions.cpp
@@ -0,0 +1,2795 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "PlatformUtilities.h"
+#include <JavaScriptCore/InitializeThreading.h>
+#include <WebCore/CombinedURLFilters.h>
+#include <WebCore/ContentExtensionCompiler.h>
+#include <WebCore/ContentExtensionError.h>
+#include <WebCore/ContentExtensionsBackend.h>
+#include <WebCore/DFA.h>
+#include <WebCore/DFABytecodeCompiler.h>
+#include <WebCore/DFABytecodeInterpreter.h>
+#include <WebCore/NFA.h>
+#include <WebCore/NFAToDFA.h>
+#include <WebCore/ResourceLoadInfo.h>
+#include <WebCore/URL.h>
+#include <WebCore/URLFilterParser.h>
+#include <wtf/MainThread.h>
+#include <wtf/RunLoop.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/StringBuilder.h>
+
+namespace WebCore {
+namespace ContentExtensions {
+inline std::ostream& operator<<(std::ostream& os, const ActionType& action)
+{
+ switch (action) {
+ case ActionType::BlockLoad:
+ return os << "ActionType::BlockLoad";
+ case ActionType::BlockCookies:
+ return os << "ActionType::BlockCookies";
+ case ActionType::CSSDisplayNoneSelector:
+ return os << "ActionType::CSSDisplayNone";
+ case ActionType::CSSDisplayNoneStyleSheet:
+ return os << "ActionType::CSSDisplayNoneStyleSheet";
+ case ActionType::IgnorePreviousRules:
+ return os << "ActionType::IgnorePreviousRules";
+ case ActionType::MakeHTTPS:
+ return os << "ActionType::MakeHTTPS";
+ case ActionType::InvalidAction:
+ return os << "ActionType::InvalidAction";
+ }
+}
+}
+}
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+class ContentExtensionTest : public testing::Test {
+public:
+ virtual void SetUp()
+ {
+ WTF::initializeMainThread();
+ JSC::initializeThreading();
+ RunLoop::initializeMainRunLoop();
+ }
+};
+
+struct CompiledContentExtensionData {
+ Vector<ContentExtensions::SerializedActionByte> actions;
+ Vector<ContentExtensions::DFABytecode> filtersWithoutDomains;
+ Vector<ContentExtensions::DFABytecode> filtersWithDomains;
+ Vector<ContentExtensions::DFABytecode> domainFilters;
+};
+
+class InMemoryContentExtensionCompilationClient final : public ContentExtensions::ContentExtensionCompilationClient {
+public:
+ InMemoryContentExtensionCompilationClient(CompiledContentExtensionData& data)
+ : m_data(data)
+ {
+ EXPECT_EQ(data.actions.size(), 0ull);
+ EXPECT_EQ(data.filtersWithoutDomains.size(), 0ull);
+ EXPECT_EQ(data.filtersWithDomains.size(), 0ull);
+ EXPECT_EQ(data.domainFilters.size(), 0ull);
+ }
+
+ virtual void writeActions(Vector<ContentExtensions::SerializedActionByte>&& actions) override
+ {
+ EXPECT_FALSE(finalized);
+ EXPECT_EQ(m_data.actions.size(), 0ull);
+ EXPECT_EQ(m_data.filtersWithoutDomains.size(), 0ull);
+ EXPECT_EQ(m_data.filtersWithDomains.size(), 0ull);
+ EXPECT_EQ(m_data.domainFilters.size(), 0ull);
+ m_data.actions.appendVector(actions);
+ }
+
+ virtual void writeFiltersWithoutDomainsBytecode(Vector<ContentExtensions::DFABytecode>&& bytecode) override
+ {
+ EXPECT_FALSE(finalized);
+ EXPECT_EQ(m_data.filtersWithDomains.size(), 0ull);
+ EXPECT_EQ(m_data.domainFilters.size(), 0ull);
+ m_data.filtersWithoutDomains.appendVector(bytecode);
+ }
+
+ virtual void writeFiltersWithDomainsBytecode(Vector<ContentExtensions::DFABytecode>&& bytecode) override
+ {
+ EXPECT_FALSE(finalized);
+ EXPECT_EQ(m_data.domainFilters.size(), 0ull);
+ m_data.filtersWithDomains.appendVector(bytecode);
+ }
+
+ virtual void writeDomainFiltersBytecode(Vector<ContentExtensions::DFABytecode>&& bytecode) override
+ {
+ EXPECT_FALSE(finalized);
+ m_data.domainFilters.appendVector(bytecode);
+ }
+
+ virtual void finalize() override
+ {
+ finalized = true;
+ }
+
+private:
+ CompiledContentExtensionData& m_data;
+ bool finalized { false };
+};
+
+class InMemoryCompiledContentExtension : public ContentExtensions::CompiledContentExtension {
+public:
+ static RefPtr<InMemoryCompiledContentExtension> createFromFilter(String&& filter)
+ {
+ CompiledContentExtensionData extensionData;
+ InMemoryContentExtensionCompilationClient client(extensionData);
+ auto compilerError = ContentExtensions::compileRuleList(client, WTFMove(filter));
+ if (compilerError) {
+ // Compiling should always succeed here. We have other tests for compile failures.
+ EXPECT_TRUE(false);
+ return nullptr;
+ }
+
+ return InMemoryCompiledContentExtension::create(WTFMove(extensionData));
+ }
+
+ static RefPtr<InMemoryCompiledContentExtension> create(CompiledContentExtensionData&& data)
+ {
+ return adoptRef(new InMemoryCompiledContentExtension(WTFMove(data)));
+ }
+
+ virtual ~InMemoryCompiledContentExtension()
+ {
+ }
+
+ virtual const ContentExtensions::SerializedActionByte* actions() const override { return m_data.actions.data(); }
+ virtual unsigned actionsLength() const override { return m_data.actions.size(); }
+ virtual const ContentExtensions::DFABytecode* filtersWithoutDomainsBytecode() const override { return m_data.filtersWithoutDomains.data(); }
+ virtual unsigned filtersWithoutDomainsBytecodeLength() const override { return m_data.filtersWithoutDomains.size(); }
+ virtual const ContentExtensions::DFABytecode* filtersWithDomainsBytecode() const override { return m_data.filtersWithDomains.data(); }
+ virtual unsigned filtersWithDomainsBytecodeLength() const override { return m_data.filtersWithDomains.size(); }
+ virtual const ContentExtensions::DFABytecode* domainFiltersBytecode() const override { return m_data.domainFilters.data(); }
+ virtual unsigned domainFiltersBytecodeLength() const override { return m_data.domainFilters.size(); }
+
+private:
+ InMemoryCompiledContentExtension(CompiledContentExtensionData&& data)
+ : m_data(WTFMove(data))
+ {
+ }
+
+ CompiledContentExtensionData m_data;
+};
+
+void static testRequest(ContentExtensions::ContentExtensionsBackend contentExtensionsBackend, const ResourceLoadInfo& resourceLoadInfo, Vector<ContentExtensions::ActionType> expectedActions, bool ignorePreviousRules = false)
+{
+ auto actions = contentExtensionsBackend.actionsForResourceLoad(resourceLoadInfo);
+ unsigned expectedSize = actions.size();
+ if (!ignorePreviousRules)
+ expectedSize--; // The last action is applying the compiled stylesheet.
+
+ EXPECT_EQ(expectedActions.size(), expectedSize);
+ if (expectedActions.size() != expectedSize)
+ return;
+
+ for (unsigned i = 0; i < expectedActions.size(); ++i)
+ EXPECT_EQ(expectedActions[i], actions[i].type());
+ if (!ignorePreviousRules)
+ EXPECT_EQ(actions[actions.size() - 1].type(), ContentExtensions::ActionType::CSSDisplayNoneStyleSheet);
+}
+
+static ResourceLoadInfo mainDocumentRequest(const char* url, ResourceType resourceType = ResourceType::Document)
+{
+ return { URL(URL(), url), URL(URL(), url), resourceType };
+}
+
+static ResourceLoadInfo subResourceRequest(const char* url, const char* mainDocumentURL, ResourceType resourceType = ResourceType::Document)
+{
+ return { URL(URL(), url), URL(URL(), mainDocumentURL), resourceType };
+}
+
+ContentExtensions::ContentExtensionsBackend makeBackend(const char* json)
+{
+ auto extension = InMemoryCompiledContentExtension::createFromFilter(json);
+ ContentExtensions::ContentExtensionsBackend backend;
+ backend.addContentExtension("testFilter", extension);
+ return backend;
+}
+
+static Vector<ContentExtensions::NFA> createNFAs(ContentExtensions::CombinedURLFilters& combinedURLFilters)
+{
+ Vector<ContentExtensions::NFA> nfas;
+
+ combinedURLFilters.processNFAs(std::numeric_limits<size_t>::max(), [&](ContentExtensions::NFA&& nfa) {
+ nfas.append(WTFMove(nfa));
+ });
+
+ return nfas;
+}
+
+TEST_F(ContentExtensionTest, Basic)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, SingleCharacter)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^z\"}}]");
+ testRequest(matchBackend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("zttp://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"y\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/ywebkit"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, SingleCharacterDisjunction)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^z\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^c\"}}]");
+ testRequest(matchBackend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("bttp://webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("cttp://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("dttp://webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("zttp://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"x\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"y\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/dwebkit"), { });
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/xwebkit"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/ywebkit"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("http://webkit.org/zwebkit"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeBasic)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"w[0-9]c\", \"url-filter-is-case-sensitive\":true}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"[A-H][a-z]cko\", \"url-filter-is-case-sensitive\":true}}]");
+
+ testRequest(backend, mainDocumentRequest("http://w3c.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("w2c://whatwg.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/w0c"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/wac"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/wAc"), { });
+
+ // Note: URL parsing and canonicalization lowercase the scheme and hostname.
+ testRequest(backend, mainDocumentRequest("Aacko://webkit.org"), { });
+ testRequest(backend, mainDocumentRequest("aacko://webkit.org"), { });
+ testRequest(backend, mainDocumentRequest("http://gCcko.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://gccko.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/Gecko"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/gecko"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/GEcko"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeExclusionGeneratingUniversalTransition)
+{
+ // Transition of the type ([^X]X) effictively transition on every input.
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[^a]+afoobar\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://w3c.org"), { });
+
+ testRequest(backend, mainDocumentRequest("http://w3c.org/foobafoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/foobarfoobar"), { });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/FOOBAFOOBAR"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/FOOBARFOOBAR"), { });
+
+ // The character before the "a" prefix cannot be another "a".
+ testRequest(backend, mainDocumentRequest("http://w3c.org/aafoobar"), { });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/Aafoobar"), { });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/aAfoobar"), { });
+ testRequest(backend, mainDocumentRequest("http://w3c.org/AAfoobar"), { });
+}
+
+TEST_F(ContentExtensionTest, PatternStartingWithGroup)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(http://whatwg\\\\.org/)?webkit\134\134.org\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://whatwg.org/webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://whatwg.org/webkit.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://whatwg.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://whatwg.org"), { });
+}
+
+TEST_F(ContentExtensionTest, PatternNestedGroups)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://webkit\\\\.org/(foo(bar)*)+\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarbar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foofoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarfoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foob"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foor"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bar"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/fobar"), { });
+}
+
+TEST_F(ContentExtensionTest, EmptyGroups)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://webkit\\\\.org/foo()bar\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://webkit\\\\.org/((me)()(too))\"}}]");
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bar"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/me"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/too"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/metoo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foome"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foomebar"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/mefoo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/mefootoo"), { });
+}
+
+TEST_F(ContentExtensionTest, QuantifiedEmptyGroups)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://webkit\\\\.org/foo()+bar\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://webkit\\\\.org/(()*()?(target)()+)\"}}]");
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bar"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/me"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/too"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/target"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foome"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foomebar"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/mefoo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/mefootoo"), { });
+}
+
+TEST_F(ContentExtensionTest, MatchPastEndOfString)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".+\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarbar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foofoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarfoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foob"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foor"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, StartOfLineAssertion)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^foobar\"}}]");
+
+ testRequest(backend, mainDocumentRequest("foobar://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("foobars:///foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("foobarfoobar:///foobarfoobarfoobar"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarfoo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarf"), { });
+ testRequest(backend, mainDocumentRequest("http://foobar.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foobar.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, EndOfLineAssertion)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"foobar$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("file:///foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("file:///foobarfoobarfoobar"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarfoo"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarf"), { });
+}
+
+TEST_F(ContentExtensionTest, EndOfLineAssertionWithInvertedCharacterSet)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[^y]$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/a"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/Ya"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/yFoobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/y"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/Y"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobary"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foobarY"), { });
+}
+
+TEST_F(ContentExtensionTest, DotDoesNotIncludeEndOfLine)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"https://webkit\\\\.org/.\"}}]");
+
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/A"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/z"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, PrefixInfixSuffixExactMatch)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"infix\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^prefix\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"suffix$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://exact\\\\.org/$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("infix://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://infix.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/infix"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("prefix://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://prefix.org/"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/prefix"), { });
+
+ testRequest(backend, mainDocumentRequest("https://webkit.org/suffix"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://suffix.org/"), { });
+ testRequest(backend, mainDocumentRequest("suffix://webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("http://exact.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://exact.org/oops"), { });
+}
+
+TEST_F(ContentExtensionTest, DuplicatedMatchAllTermsInVariousFormat)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".*.*(.)*(.*)(.+)*(.?)*infix\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"pre(.?)+(.+)?post\"}}]");
+
+ testRequest(backend, mainDocumentRequest("infix://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://infix.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/infix"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("pre://webkit.org/post"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://prepost.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://pre.org/posttail"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://pre.pre/posttail"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://pre.org/posttailpost"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("https://post.org/pre"), { });
+ testRequest(backend, mainDocumentRequest("https://pre.org/pre"), { });
+ testRequest(backend, mainDocumentRequest("https://post.org/post"), { });
+}
+
+TEST_F(ContentExtensionTest, UndistinguishableActionInsidePrefixTree)
+{
+ // In this case, the two actions are undistinguishable. The actions of "prefix" appear inside the prefixtree
+ // ending at "suffix".
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"prefix\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"prefixsuffix\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://prefix.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/prefix"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/aaaprefixaaa"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://prefixsuffix.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/prefixsuffix"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bbbprefixsuffixbbb"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://suffix.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/suffix"), { });
+}
+
+TEST_F(ContentExtensionTest, DistinguishableActionInsidePrefixTree)
+{
+ // In this case, the two actions are distinguishable.
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"prefix\"}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"prefixsuffix\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://prefix.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/prefix"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/aaaprefixaaa"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://prefixsuffix.org/"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/prefixsuffix"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bbbprefixsuffixbbb"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://suffix.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/suffix"), { });
+}
+
+TEST_F(ContentExtensionTest, DistinguishablePrefixAreNotMerged)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"foo\\\\.org\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"bar\\\\.org\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foo.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://bar.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://foor.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://fooar.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://fooba.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foob.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foor.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foar.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://foba.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://fob.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://barf.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://barfo.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://baroo.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://baro.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://baf.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://bafo.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://baoo.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://bao.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("http://foo.orgbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://oo.orgbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://o.orgbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://.orgbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://rgbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://gbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.orgar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.orgr.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.org.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.orgorg/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.orgrg/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://foo.orgg/"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+static void compareContents(const ContentExtensions::DFABytecodeInterpreter::Actions& a, const Vector<uint64_t>& b)
+{
+ EXPECT_EQ(a.size(), b.size());
+ for (unsigned i = 0; i < b.size(); ++i)
+ EXPECT_TRUE(a.contains(b[i]));
+}
+
+TEST_F(ContentExtensionTest, SearchSuffixesWithIdenticalActionAreMerged)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("foo\\.org", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("ba\\.org", false, 0));
+
+ Vector<ContentExtensions::NFA> nfas = createNFAs(combinedURLFilters);
+ EXPECT_EQ(1ul, nfas.size());
+ EXPECT_EQ(12ul, nfas.first().nodes.size());
+
+ ContentExtensions::DFA dfa = ContentExtensions::NFAToDFA::convert(nfas.first());
+ Vector<ContentExtensions::DFABytecode> bytecode;
+ ContentExtensions::DFABytecodeCompiler compiler(dfa, bytecode);
+ compiler.compile();
+ ContentExtensions::DFABytecodeInterpreter interpreter(bytecode.data(), bytecode.size());
+ compareContents(interpreter.interpret("foo.org", 0), { 0 });
+ compareContents(interpreter.interpret("ba.org", 0), { 0 });
+ compareContents(interpreter.interpret("bar.org", 0), { });
+
+ compareContents(interpreter.interpret("paddingfoo.org", 0), { 0 });
+ compareContents(interpreter.interpret("paddingba.org", 0), { 0 });
+ compareContents(interpreter.interpret("paddingbar.org", 0), { });
+}
+
+TEST_F(ContentExtensionTest, SearchSuffixesWithDistinguishableActionAreNotMerged)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("foo\\.org", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("ba\\.org", false, 1));
+
+ Vector<ContentExtensions::NFA> nfas = createNFAs(combinedURLFilters);
+
+ EXPECT_EQ(1ul, nfas.size());
+ EXPECT_EQ(17ul, nfas.first().nodes.size());
+
+ ContentExtensions::DFA dfa = ContentExtensions::NFAToDFA::convert(nfas.first());
+ Vector<ContentExtensions::DFABytecode> bytecode;
+ ContentExtensions::DFABytecodeCompiler compiler(dfa, bytecode);
+ compiler.compile();
+ ContentExtensions::DFABytecodeInterpreter interpreter(bytecode.data(), bytecode.size());
+ compareContents(interpreter.interpret("foo.org", 0), { 0 });
+ compareContents(interpreter.interpret("ba.org", 0), { 1 });
+ compareContents(interpreter.interpret("bar.org", 0), { });
+
+ compareContents(interpreter.interpret("paddingfoo.org", 0), { 0 });
+ compareContents(interpreter.interpret("paddingba.org", 0), { 1 });
+ compareContents(interpreter.interpret("paddingba.orgfoo.org", 0), { 1, 0 });
+ compareContents(interpreter.interpret("paddingbar.org", 0), { });
+}
+
+TEST_F(ContentExtensionTest, DomainTriggers)
+{
+ auto ifDomainBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"webkit.org\"]}}]");
+ testRequest(ifDomainBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.htm"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://not_webkit.org/test.htm"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://webkit.organization/test.htm"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { });
+ testRequest(ifDomainBackend, mainDocumentRequest("http://webkit.organization/test.html"), { });
+
+ auto unlessDomainBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"unless-domain\":[\"webkit.org\"]}}]");
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.htm"), { });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://not_webkit.org/test.htm"), { });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://webkit.organization/test.htm"), { });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessDomainBackend, mainDocumentRequest("http://webkit.organization/test.html"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto ifDomainStarBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"*webkit.org\"]}}]");
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.htm"), { });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://not_webkit.org/test.htm"), { });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://webkit.organization/test.htm"), { });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { });
+ testRequest(ifDomainStarBackend, mainDocumentRequest("http://webkit.organization/test.html"), { });
+
+ auto unlessDomainStarBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"unless-domain\":[\"*webkit.org\"]}}]");
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.htm"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://not_webkit.org/test.htm"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://webkit.organization/test.htm"), { });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessDomainStarBackend, mainDocumentRequest("http://webkit.organization/test.html"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto ifSubDomainBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"sub1.webkit.org\"]}}]");
+ testRequest(ifSubDomainBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(ifSubDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { });
+ testRequest(ifSubDomainBackend, mainDocumentRequest("http://sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifSubDomainBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { });
+
+ auto ifSubDomainStarBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"*sub1.webkit.org\"]}}]");
+ testRequest(ifSubDomainStarBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(ifSubDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { });
+ testRequest(ifSubDomainStarBackend, mainDocumentRequest("http://sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifSubDomainStarBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto unlessSubDomainBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"unless-domain\":[\"sub1.webkit.org\"]}}]");
+ testRequest(unlessSubDomainBackend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessSubDomainBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessSubDomainBackend, mainDocumentRequest("http://sub1.webkit.org/test.html"), { });
+ testRequest(unlessSubDomainBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+
+ auto unlessSubDomainStarBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"unless-domain\":[\"*sub1.webkit.org\"]}}]");
+ testRequest(unlessSubDomainStarBackend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessSubDomainStarBackend, mainDocumentRequest("http://bugs.webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(unlessSubDomainStarBackend, mainDocumentRequest("http://sub1.webkit.org/test.html"), { });
+ testRequest(unlessSubDomainStarBackend, mainDocumentRequest("http://sub2.sub1.webkit.org/test.html"), { });
+
+ auto combinedBackend1 = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test_block_load\", \"if-domain\":[\"webkit.org\"]}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"test_block_cookies\", \"unless-domain\":[\"webkit.org\"]}}]");
+ testRequest(combinedBackend1, mainDocumentRequest("http://webkit.org"), { });
+ testRequest(combinedBackend1, mainDocumentRequest("http://not_webkit.org"), { });
+ testRequest(combinedBackend1, mainDocumentRequest("http://webkit.org/test_block_load.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/test_block_load.html", "http://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/shouldnt_match.html", "http://webkit.org/"), { });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/test_block_load.html", "http://not_webkit.org/"), { });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/shouldnt_match.html", "http://not_webkit.org/"), { });
+ testRequest(combinedBackend1, mainDocumentRequest("http://webkit.org/test_block_cookies.html"), { });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/test_block_cookies.html", "http://webkit.org/"), { });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/shouldnt_match.html", "http://webkit.org/"), { });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/test_block_cookies.html", "http://not_webkit.org/path/to/main/document.html"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(combinedBackend1, subResourceRequest("http://whatwg.org/shouldnt_match.html", "http://not_webkit.org/"), { });
+
+ auto combinedBackend2 = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test_block_load\\\\.html\", \"if-domain\":[\"webkit.org\"]}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"test_block_cookies\\\\.html\", \"unless-domain\":[\"w3c.org\"]}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"test_css\\\\.html\"}}]");
+ testRequest(combinedBackend2, mainDocumentRequest("http://webkit.org/test_css.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(combinedBackend2, mainDocumentRequest("http://webkit.org/test_css.htm"), { });
+ testRequest(combinedBackend2, mainDocumentRequest("http://webkit.org/test_block_load.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(combinedBackend2, mainDocumentRequest("http://not_webkit.org/test_block_load.html"), { });
+ testRequest(combinedBackend2, mainDocumentRequest("http://not_webkit.org/test_css.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(combinedBackend2, mainDocumentRequest("http://webkit.org/TEST_CSS.hTmL/test_block_load.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad});
+ testRequest(combinedBackend2, mainDocumentRequest("http://w3c.org/test_css.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(combinedBackend2, mainDocumentRequest("http://w3c.org/test_block_load.html"), { });
+ testRequest(combinedBackend2, mainDocumentRequest("http://w3c.org/test_block_cookies.html"), { });
+ testRequest(combinedBackend2, mainDocumentRequest("http://w3c.org/test_css.html/test_block_cookies.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(combinedBackend2, mainDocumentRequest("http://not_w3c.org/test_block_cookies.html"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(combinedBackend2, mainDocumentRequest("http://not_w3c.org/test_css.html/test_block_cookies.html"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockCookies });
+
+ auto ifDomainWithFlagsBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\", \"if-domain\":[\"webkit.org\"],\"resource-type\":[\"image\"]}}]");
+ testRequest(ifDomainWithFlagsBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(ifDomainWithFlagsBackend, mainDocumentRequest("http://webkit.org/test.png", ResourceType::Image), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(ifDomainWithFlagsBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { });
+ testRequest(ifDomainWithFlagsBackend, mainDocumentRequest("http://not_webkit.org/test.png", ResourceType::Image), { });
+
+ auto unlessDomainWithFlagsBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\", \"unless-domain\":[\"webkit.org\"],\"resource-type\":[\"image\"]}}]");
+ testRequest(unlessDomainWithFlagsBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(unlessDomainWithFlagsBackend, mainDocumentRequest("http://webkit.org/test.png", ResourceType::Image), { });
+ testRequest(unlessDomainWithFlagsBackend, mainDocumentRequest("http://not_webkit.org/test.html"), { });
+ testRequest(unlessDomainWithFlagsBackend, mainDocumentRequest("http://not_webkit.org/test.png", ResourceType::Image), { ContentExtensions::ActionType::BlockLoad });
+
+ // Domains should not be interepted as regular expressions.
+ auto domainRegexBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"we?bkit.org\"]}}]");
+ testRequest(domainRegexBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(domainRegexBackend, mainDocumentRequest("http://wbkit.org/test.html"), { });
+
+ auto multipleIfDomainsBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"webkit.org\", \"w3c.org\"]}}]");
+ testRequest(multipleIfDomainsBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(multipleIfDomainsBackend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(multipleIfDomainsBackend, mainDocumentRequest("http://w3c.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(multipleIfDomainsBackend, mainDocumentRequest("http://whatwg.org/test.html"), { });
+
+ auto multipleUnlessDomainsBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"unless-domain\":[\"webkit.org\", \"w3c.org\"]}}]");
+ testRequest(multipleUnlessDomainsBackend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(multipleUnlessDomainsBackend, mainDocumentRequest("http://webkit.org/test.html"), { });
+ testRequest(multipleUnlessDomainsBackend, mainDocumentRequest("http://w3c.org/test.html"), { });
+ testRequest(multipleUnlessDomainsBackend, mainDocumentRequest("http://whatwg.org/test.html"), { ContentExtensions::ActionType::BlockLoad });
+
+ // FIXME: Add and test domain-specific popup-only blocking (with layout tests).
+}
+
+TEST_F(ContentExtensionTest, DomainTriggersAlongMergedActions)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"test\\\\.html\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"test\\\\.html\", \"if-domain\":[\"webkit.org\"]}},"
+ "{\"action\":{\"type\":\"css-display-none\", \"selector\": \"*\"},\"trigger\":{\"url-filter\":\"trigger-on-scripts\\\\.html\",\"resource-type\":[\"script\"]}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"ignore-previous\",\"resource-type\":[\"image\"]}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"except-this\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/test.htm"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/test.html"), { ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/test.html"), { ContentExtensions::ActionType::BlockCookies });
+
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/trigger-on-scripts.html"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/trigger-on-scripts.html"), { });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::BlockCookies });
+
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/ignore-previous-trigger-on-scripts.html"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ignore-previous-trigger-on-scripts.html"), { });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/ignore-previous-trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ignore-previous-trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::BlockCookies });
+
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/ignore-previous-trigger-on-scripts.html", ResourceType::Image), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ignore-previous-trigger-on-scripts.html", ResourceType::Image), { }, true);
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Image), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Image), { }, true);
+
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies }, true);
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies }, true);
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html", ResourceType::Script), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://notwebkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/except-this-ignore-previous-trigger-on-scripts.html.test.html", ResourceType::Script), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::BlockCookies });
+
+}
+
+TEST_F(ContentExtensionTest, MultipleExtensions)
+{
+ auto extension1 = InMemoryCompiledContentExtension::createFromFilter("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"block_load\"}}]");
+ auto extension2 = InMemoryCompiledContentExtension::createFromFilter("[{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"block_cookies\"}}]");
+ ContentExtensions::ContentExtensionsBackend backend;
+ backend.addContentExtension("testFilter1", extension1);
+ backend.addContentExtension("testFilter2", extension2);
+
+ // These each have two display:none stylesheets. The second one is implied by using the default parameter ignorePreviousRules = false.
+ testRequest(backend, mainDocumentRequest("http://webkit.org"), { ContentExtensions::ActionType::CSSDisplayNoneStyleSheet });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/block_load.html"), { ContentExtensions::ActionType::CSSDisplayNoneStyleSheet, ContentExtensions::ActionType::BlockLoad});
+ testRequest(backend, mainDocumentRequest("http://webkit.org/block_cookies.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet});
+ testRequest(backend, mainDocumentRequest("http://webkit.org/block_load/block_cookies.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet, ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/block_cookies/block_load.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet, ContentExtensions::ActionType::BlockLoad });
+
+ auto ignoreExtension1 = InMemoryCompiledContentExtension::createFromFilter("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"block_load\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"ignore1\"}}]");
+ auto ignoreExtension2 = InMemoryCompiledContentExtension::createFromFilter("[{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"block_cookies\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"ignore2\"}}]");
+ ContentExtensions::ContentExtensionsBackend backendWithIgnore;
+ backendWithIgnore.addContentExtension("testFilter1", ignoreExtension1);
+ backendWithIgnore.addContentExtension("testFilter2", ignoreExtension2);
+
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org"), { ContentExtensions::ActionType::CSSDisplayNoneStyleSheet, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet }, true);
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org/block_load/ignore1.html"), { ContentExtensions::ActionType::CSSDisplayNoneStyleSheet }, true);
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org/block_cookies/ignore1.html"), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet}, true);
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org/block_load/ignore2.html"), { ContentExtensions::ActionType::BlockLoad, ContentExtensions::ActionType::CSSDisplayNoneStyleSheet }, true);
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org/block_cookies/ignore2.html"), { ContentExtensions::ActionType::CSSDisplayNoneStyleSheet}, true);
+ testRequest(backendWithIgnore, mainDocumentRequest("http://webkit.org/block_load/block_cookies/ignore1/ignore2.html"), { }, true);
+}
+
+TEST_F(ContentExtensionTest, TermsKnownToMatchAnything)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre1.*post1$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre2(.*)post2$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre3(.*)?post3$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre4(.*)+post4$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre5(.*)*post5$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre6(.)*post6$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre7(.+)*post7$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre8(.?)*post8$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre9(.+)?post9$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^pre0(.?)+post0$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("pre1://webkit.org/post1"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre2://webkit.org/post2"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre3://webkit.org/post3"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre4://webkit.org/post4"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre5://webkit.org/post5"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre6://webkit.org/post6"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre7://webkit.org/post7"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre8://webkit.org/post8"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre9://webkit.org/post9"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("pre0://webkit.org/post0"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("pre1://webkit.org/post2"), { });
+ testRequest(backend, mainDocumentRequest("pre2://webkit.org/post3"), { });
+ testRequest(backend, mainDocumentRequest("pre3://webkit.org/post4"), { });
+ testRequest(backend, mainDocumentRequest("pre4://webkit.org/post5"), { });
+ testRequest(backend, mainDocumentRequest("pre5://webkit.org/post6"), { });
+ testRequest(backend, mainDocumentRequest("pre6://webkit.org/post7"), { });
+ testRequest(backend, mainDocumentRequest("pre7://webkit.org/post8"), { });
+ testRequest(backend, mainDocumentRequest("pre8://webkit.org/post9"), { });
+ testRequest(backend, mainDocumentRequest("pre9://webkit.org/post0"), { });
+ testRequest(backend, mainDocumentRequest("pre0://webkit.org/post1"), { });
+
+ testRequest(backend, mainDocumentRequest("pre0://webkit.org/post1"), { });
+ testRequest(backend, mainDocumentRequest("pre1://webkit.org/post2"), { });
+ testRequest(backend, mainDocumentRequest("pre2://webkit.org/post3"), { });
+ testRequest(backend, mainDocumentRequest("pre3://webkit.org/post4"), { });
+ testRequest(backend, mainDocumentRequest("pre4://webkit.org/post5"), { });
+ testRequest(backend, mainDocumentRequest("pre5://webkit.org/post6"), { });
+ testRequest(backend, mainDocumentRequest("pre6://webkit.org/post7"), { });
+ testRequest(backend, mainDocumentRequest("pre7://webkit.org/post8"), { });
+ testRequest(backend, mainDocumentRequest("pre8://webkit.org/post9"), { });
+ testRequest(backend, mainDocumentRequest("pre9://webkit.org/post0"), { });
+}
+
+TEST_F(ContentExtensionTest, TrailingDotStar)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"foo.*$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"bar(.*)$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("https://webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("foo://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://foo.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.foo/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foo"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("bar://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://bar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.bar/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bar"), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, TrailingTermsCarryingNoData)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"foob?a?r?\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"bazo(ok)?a?$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"cats*$\"}}]");
+
+ testRequest(backend, mainDocumentRequest("https://webkit.org/"), { });
+
+ // Anything is fine after foo.
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foob"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/fooc"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/fooba"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foobar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/foobar-stuff"), { ContentExtensions::ActionType::BlockLoad });
+
+ // Bazooka has to be at the tail without any character not defined by the filter.
+ testRequest(backend, mainDocumentRequest("https://webkit.org/baz"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazoa"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazob"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazoo"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazook"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazookb"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazooka"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/bazookaa"), { });
+
+ // The pattern must finish with cat, with any number of 's' following it, but no other character.
+ testRequest(backend, mainDocumentRequest("https://cat.org/"), { });
+ testRequest(backend, mainDocumentRequest("https://cats.org/"), { });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/cat"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/cats"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/catss"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/catsss"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/catso"), { });
+}
+
+TEST_F(ContentExtensionTest, UselessTermsMatchingEverythingAreEliminated)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern(".*web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.*)web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.)*web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.+)*web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.?)*web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.+)?web", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(.?)+web", false, 0));
+
+ Vector<ContentExtensions::NFA> nfas = createNFAs(combinedURLFilters);
+ EXPECT_EQ(1ul, nfas.size());
+ EXPECT_EQ(7ul, nfas.first().nodes.size());
+
+ ContentExtensions::DFA dfa = ContentExtensions::NFAToDFA::convert(nfas.first());
+ Vector<ContentExtensions::DFABytecode> bytecode;
+ ContentExtensions::DFABytecodeCompiler compiler(dfa, bytecode);
+ compiler.compile();
+ ContentExtensions::DFABytecodeInterpreter interpreter(bytecode.data(), bytecode.size());
+ compareContents(interpreter.interpret("eb", 0), { });
+ compareContents(interpreter.interpret("we", 0), { });
+ compareContents(interpreter.interpret("weeb", 0), { });
+ compareContents(interpreter.interpret("web", 0), { 0 });
+ compareContents(interpreter.interpret("wweb", 0), { 0 });
+ compareContents(interpreter.interpret("wwebb", 0), { 0 });
+ compareContents(interpreter.interpret("http://theweb.com/", 0), { 0 });
+}
+
+TEST_F(ContentExtensionTest, LoadType)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":[\"third-party\"]}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"whatwg.org\",\"load-type\":[\"first-party\"]}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"alwaysblock.pdf\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org"), { });
+ testRequest(backend, {URL(URL(), "http://webkit.org"), URL(URL(), "http://not_webkit.org"), ResourceType::Document}, { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://whatwg.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, {URL(URL(), "http://whatwg.org"), URL(URL(), "http://not_whatwg.org"), ResourceType::Document}, { });
+
+ testRequest(backend, mainDocumentRequest("http://foobar.org/alwaysblock.pdf"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, {URL(URL(), "http://foobar.org/alwaysblock.pdf"), URL(URL(), "http://not_foobar.org/alwaysblock.pdf"), ResourceType::Document}, { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, ResourceType)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"block_all_types.org\",\"resource-type\":[\"document\",\"image\",\"style-sheet\",\"script\",\"font\",\"raw\",\"svg-document\",\"media\",\"popup\"]}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"block_only_images\",\"resource-type\":[\"image\"]}}]");
+
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Document), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Image), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::StyleSheet), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Script), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Font), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Raw), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::SVGDocument), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Media), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_all_types.org", ResourceType::Popup), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_only_images.org", ResourceType::Image), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://block_only_images.org", ResourceType::Document), { });
+}
+
+TEST_F(ContentExtensionTest, ResourceAndLoadType)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"BlockOnlyIfThirdPartyAndScript\",\"resource-type\":[\"script\"],\"load-type\":[\"third-party\"]}}]");
+
+ testRequest(backend, subResourceRequest("http://webkit.org/BlockOnlyIfThirdPartyAndScript.js", "http://webkit.org", ResourceType::Script), { });
+ testRequest(backend, subResourceRequest("http://webkit.org/BlockOnlyIfThirdPartyAndScript.png", "http://not_webkit.org", ResourceType::Image), { });
+ testRequest(backend, subResourceRequest("http://webkit.org/BlockOnlyIfThirdPartyAndScript.js", "http://not_webkit.org", ResourceType::Script), { ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, ResourceOrLoadTypeMatchingEverything)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".*\",\"resource-type\":[\"image\"]}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\".*\",\"load-type\":[\"third-party\"]}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\".*\",\"load-type\":[\"first-party\"]}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org"), { }, true);
+ testRequest(backend, {URL(URL(), "http://webkit.org"), URL(URL(), "http://not_webkit.org"), ResourceType::Document}, { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, {URL(URL(), "http://webkit.org"), URL(URL(), "http://not_webkit.org"), ResourceType::Image}, { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, WideNFA)
+{
+ // Make an NFA with about 1400 nodes that won't be combined.
+ StringBuilder ruleList;
+ ruleList.append('[');
+ for (char c1 = 'A'; c1 <= 'Z'; ++c1) {
+ for (char c2 = 'A'; c2 <= 'C'; ++c2) {
+ for (char c3 = 'A'; c3 <= 'C'; ++c3) {
+ if (c1 != 'A' || c2 != 'A' || c3 != 'A')
+ ruleList.append(',');
+ ruleList.append("{\"action\":{\"type\":\"");
+
+ // Make every other rule ignore-previous-rules to not combine actions.
+ if (!((c1 + c2 + c3) % 2))
+ ruleList.append("ignore-previous-rules");
+ else {
+ ruleList.append("css-display-none");
+ ruleList.append("\",\"selector\":\"");
+ ruleList.append(c1);
+ ruleList.append(c2);
+ ruleList.append(c3);
+ }
+ ruleList.append("\"},\"trigger\":{\"url-filter\":\".*");
+ ruleList.append(c1);
+ ruleList.append(c2);
+ ruleList.append(c3);
+ ruleList.append("\", \"url-filter-is-case-sensitive\":true}}");
+ }
+ }
+ }
+ ruleList.append(']');
+
+ auto backend = makeBackend(ruleList.toString().utf8().data());
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/AAA"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/YAA"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ZAA"), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/LAA/AAA"), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/LAA/MAA"), { ContentExtensions::ActionType::CSSDisplayNoneSelector }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+}
+
+#ifdef NDEBUG
+static uint64_t expectedIndex(char c, unsigned position)
+{
+ uint64_t index = c - 'A';
+ for (unsigned i = 1; i < position; ++i)
+ index *= (i == 1) ? ('C' - 'A' + 1) : ('Z' - 'A' + 1);
+ return index;
+}
+#endif
+
+TEST_F(ContentExtensionTest, LargeJumps)
+{
+// A large test like this is necessary to test 24 and 32 bit jumps, but it's so large it times out in debug builds.
+#ifdef NDEBUG
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ uint64_t patternId = 0;
+ for (char c1 = 'A'; c1 <= 'Z'; ++c1) {
+ for (char c2 = 'A'; c2 <= 'Z'; ++c2) {
+ for (char c3 = 'A'; c3 <= 'Z'; ++c3) {
+ for (char c4 = 'A'; c4 <= 'C'; ++c4) {
+ StringBuilder pattern;
+ pattern.append(c1);
+ pattern.append(c2);
+ pattern.append(c3);
+ pattern.append(c4);
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern(pattern.toString(), true, patternId++));
+ }
+ }
+ }
+ }
+
+ Vector<ContentExtensions::NFA> nfas;
+ combinedURLFilters.processNFAs(std::numeric_limits<size_t>::max(), [&](ContentExtensions::NFA&& nfa) {
+ nfas.append(WTFMove(nfa));
+ });
+ EXPECT_EQ(nfas.size(), 1ull);
+
+ Vector<ContentExtensions::DFA> dfas;
+ for (auto& nfa : nfas)
+ dfas.append(ContentExtensions::NFAToDFA::convert(nfa));
+ EXPECT_EQ(dfas.size(), 1ull);
+
+ Vector<ContentExtensions::DFABytecode> combinedBytecode;
+ for (const auto& dfa : dfas) {
+ Vector<ContentExtensions::DFABytecode> bytecode;
+ ContentExtensions::DFABytecodeCompiler compiler(dfa, bytecode);
+ compiler.compile();
+ combinedBytecode.appendVector(bytecode);
+ }
+
+ ContentExtensions::DFABytecodeInterpreter interpreter(&combinedBytecode[0], combinedBytecode.size());
+
+ patternId = 0;
+ for (char c1 = 'A'; c1 <= 'Z'; ++c1) {
+ for (char c2 = 'A'; c2 <= 'Z'; ++c2) {
+ for (char c3 = 'A'; c3 <= 'Z'; ++c3) {
+ for (char c4 = 'A'; c4 <= 'C'; ++c4) {
+ StringBuilder pattern;
+ pattern.append(c1);
+ pattern.append(c2);
+ pattern.append(c3);
+ // Test different jumping patterns distributed throughout the DFA:
+ switch ((c1 + c2 + c3 + c4) % 4) {
+ case 0:
+ // This should not match.
+ pattern.append('x');
+ pattern.append(c4);
+ break;
+ case 1:
+ // This should jump back to the root, then match.
+ pattern.append('x');
+ pattern.append(c1);
+ pattern.append(c2);
+ pattern.append(c3);
+ pattern.append(c4);
+ break;
+ case 2:
+ // This should match at the end of the string.
+ pattern.append(c4);
+ break;
+ case 3:
+ // This should match then jump back to the root.
+ pattern.append(c4);
+ pattern.append('x');
+ break;
+ }
+ auto matches = interpreter.interpret(pattern.toString().utf8(), 0);
+ switch ((c1 + c2 + c3 + c4) % 4) {
+ case 0:
+ compareContents(matches, { });
+ break;
+ case 1:
+ case 2:
+ case 3:
+ compareContents(matches, {patternId});
+ break;
+ }
+ patternId++;
+ }
+ }
+ }
+ }
+
+ compareContents(interpreter.interpret("CAAAAx", 0), {expectedIndex('C', 4), expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("KAAAAx", 0), {expectedIndex('K', 4), expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("AKAAAx", 0), {expectedIndex('K', 3), expectedIndex('K', 4)});
+ compareContents(interpreter.interpret("AKxAAAAx", 0), {expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("AKAxAAAAx", 0), {expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("AKAxZKAxZKZxAAAAx", 0), {expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("ZAAAA", 0), {expectedIndex('Z', 4), expectedIndex('A', 1)});
+ compareContents(interpreter.interpret("ZZxZAAAB", 0), {expectedIndex('Z', 4), expectedIndex('B', 1)});
+#endif
+}
+
+TEST_F(ContentExtensionTest, DeepNFA)
+{
+ const unsigned size = 100000;
+
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ // FIXME: DFAToNFA::convert takes way too long on these deep NFAs. We should optimize for that case.
+
+ StringBuilder lotsOfAs;
+ for (unsigned i = 0; i < size; ++i)
+ lotsOfAs.append('A');
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern(lotsOfAs.toString().utf8().data(), false, 0));
+
+ // FIXME: Yarr ought to be able to handle 2MB regular expressions.
+ StringBuilder tooManyAs;
+ for (unsigned i = 0; i < size * 20; ++i)
+ tooManyAs.append('A');
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::YarrError, parser.addPattern(tooManyAs.toString().utf8().data(), false, 0));
+
+ StringBuilder nestedGroups;
+ for (unsigned i = 0; i < size; ++i)
+ nestedGroups.append('(');
+ for (unsigned i = 0; i < size; ++i)
+ nestedGroups.append("B)");
+ // FIXME: Add nestedGroups. Right now it also takes too long. It should be optimized.
+
+ // This should not crash and not timeout.
+ EXPECT_EQ(1ul, createNFAs(combinedURLFilters).size());
+}
+
+void checkCompilerError(const char* json, std::error_code expectedError)
+{
+ CompiledContentExtensionData extensionData;
+ InMemoryContentExtensionCompilationClient client(extensionData);
+ std::error_code compilerError = ContentExtensions::compileRuleList(client, json);
+ EXPECT_EQ(compilerError.value(), expectedError.value());
+ if (compilerError.value())
+ EXPECT_STREQ(compilerError.category().name(), expectedError.category().name());
+}
+
+TEST_F(ContentExtensionTest, MatchesEverything)
+{
+ // Only css-display-none rules with triggers that match everything, no domain rules, and no flags
+ // should go in the global display:none stylesheet. css-display-none rules with domain rules or flags
+ // are applied separately on pages where they apply.
+ auto backend1 = makeBackend("[{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\"}}]");
+ EXPECT_TRUE(nullptr != backend1.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend1, mainDocumentRequest("http://webkit.org"), { }); // Selector is in global stylesheet.
+
+ auto backend2 = makeBackend("[{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\",\"if-domain\":[\"webkit.org\"]}}]");
+ EXPECT_EQ(nullptr, backend2.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend2, mainDocumentRequest("http://webkit.org"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(backend2, mainDocumentRequest("http://w3c.org"), { });
+
+ auto backend3 = makeBackend("[{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\",\"unless-domain\":[\"webkit.org\"]}}]");
+ EXPECT_EQ(nullptr, backend3.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend3, mainDocumentRequest("http://webkit.org"), { });
+ testRequest(backend3, mainDocumentRequest("http://w3c.org"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+
+ auto backend4 = makeBackend("[{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\",\"load-type\":[\"third-party\"]}}]");
+ EXPECT_EQ(nullptr, backend4.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend4, mainDocumentRequest("http://webkit.org"), { });
+ testRequest(backend4, subResourceRequest("http://not_webkit.org", "http://webkit.org"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+
+ // css-display-none rules after ignore-previous-rules should not be put in the default stylesheet.
+ auto backend5 = makeBackend("[{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\".*\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\"}}]");
+ EXPECT_EQ(nullptr, backend5.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend5, mainDocumentRequest("http://webkit.org"), { ContentExtensions::ActionType::CSSDisplayNoneSelector }, true);
+
+ auto backend6 = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".*\",\"if-domain\":[\"webkit.org\",\"*w3c.org\"],\"resource-type\":[\"document\",\"script\"]}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"ignore\",\"if-domain\":[\"*webkit.org\",\"w3c.org\"]}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\".*\",\"unless-domain\":[\"webkit.org\",\"whatwg.org\"],\"resource-type\":[\"script\",\"image\"],\"load-type\":[\"third-party\"]}}]");
+ EXPECT_EQ(nullptr, backend6.globalDisplayNoneStyleSheet(ASCIILiteral("testFilter")));
+ testRequest(backend6, mainDocumentRequest("http://webkit.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, mainDocumentRequest("http://w3c.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, mainDocumentRequest("http://whatwg.org"), { });
+ testRequest(backend6, mainDocumentRequest("http://sub.webkit.org"), { });
+ testRequest(backend6, mainDocumentRequest("http://sub.w3c.org"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, mainDocumentRequest("http://sub.whatwg.org"), { });
+ testRequest(backend6, mainDocumentRequest("http://webkit.org/ignore"), { }, true);
+ testRequest(backend6, mainDocumentRequest("http://w3c.org/ignore"), { }, true);
+ testRequest(backend6, mainDocumentRequest("http://whatwg.org/ignore"), { });
+ testRequest(backend6, mainDocumentRequest("http://sub.webkit.org/ignore"), { }, true);
+ testRequest(backend6, mainDocumentRequest("http://sub.w3c.org/ignore"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, mainDocumentRequest("http://sub.whatwg.org/ignore"), { });
+ testRequest(backend6, subResourceRequest("http://example.com/image.png", "http://webkit.org/", ResourceType::Image), { });
+ testRequest(backend6, subResourceRequest("http://example.com/image.png", "http://w3c.org/", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend6, subResourceRequest("http://example.com/doc.html", "http://webkit.org/", ResourceType::Document), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, subResourceRequest("http://example.com/script.js", "http://webkit.org/", ResourceType::Script), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, subResourceRequest("http://example.com/script.js", "http://w3c.org/", ResourceType::Script), { ContentExtensions::ActionType::BlockCookies, ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend6, subResourceRequest("http://example.com/script.js", "http://example.com/", ResourceType::Script), { });
+ testRequest(backend6, subResourceRequest("http://example.com/ignore/image.png", "http://webkit.org/", ResourceType::Image), { }, true);
+ testRequest(backend6, subResourceRequest("http://example.com/ignore/image.png", "http://example.com/", ResourceType::Image), { });
+ testRequest(backend6, subResourceRequest("http://example.com/ignore/image.png", "http://example.org/", ResourceType::Image), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend6, subResourceRequest("http://example.com/doc.html", "http://example.org/", ResourceType::Document), { });
+ testRequest(backend6, subResourceRequest("http://example.com/", "http://example.com/", ResourceType::Font), { });
+ testRequest(backend6, subResourceRequest("http://example.com/ignore", "http://webkit.org/", ResourceType::Image), { }, true);
+ testRequest(backend6, subResourceRequest("http://example.com/ignore", "http://webkit.org/", ResourceType::Font), { }, true);
+ testRequest(backend6, subResourceRequest("http://example.com/", "http://example.com/", ResourceType::Script), { });
+ testRequest(backend6, subResourceRequest("http://example.com/ignore", "http://example.com/", ResourceType::Script), { });
+}
+
+TEST_F(ContentExtensionTest, InvalidJSON)
+{
+ checkCompilerError("[", ContentExtensions::ContentExtensionError::JSONInvalid);
+ checkCompilerError("123", ContentExtensions::ContentExtensionError::JSONTopLevelStructureNotAnObject);
+ checkCompilerError("{}", ContentExtensions::ContentExtensionError::JSONTopLevelStructureNotAnArray);
+ // FIXME: Add unit test for JSONInvalidRule if that is possible to hit.
+ checkCompilerError("[]", ContentExtensions::ContentExtensionError::JSONContainsNoRules);
+
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":5}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTrigger);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidURLFilterInTrigger);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":{}}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidURLFilterInTrigger);
+
+ // FIXME: Add unit test for JSONInvalidObjectInTriggerFlagsArray if that is possible to hit.
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":{}}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":[\"invalid\"]}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidStringInTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":[5]}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidStringInTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":5}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":\"first-party\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":null}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"load-type\":false}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":{}}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":[\"invalid\"]}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidStringInTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":[5]}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidStringInTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":5}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":\"document\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":null}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"resource-type\":false}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidTriggerFlagsArray);
+
+ StringBuilder rules;
+ rules.append("[");
+ for (unsigned i = 0; i < 49999; ++i)
+ rules.append("{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"a\"}},");
+ String rules50000 = rules.toString();
+ String rules50001 = rules.toString();
+ rules50000.append("{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"a\"}}]");
+ rules50001.append("{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"a\"}},{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"a\"}}]");
+ checkCompilerError(rules50000.utf8().data(), { });
+ checkCompilerError(rules50001.utf8().data(), ContentExtensions::ContentExtensionError::JSONTooManyRules);
+
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":{}}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[5]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[\"a\"]}}]", { });
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":\"a\"}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":false}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":null}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":{}}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[5]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[\"\"]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":\"a\"}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":null}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":false}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[\"A\"]}}]", ContentExtensions::ContentExtensionError::JSONDomainNotLowerCaseASCII);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[\"\\u00DC\"]}}]", ContentExtensions::ContentExtensionError::JSONDomainNotLowerCaseASCII);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[\"0\"]}}]", { });
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[\"a\"]}}]", { });
+
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[],\"unless-domain\":[\"a\"]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":[]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":5}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"unless-domain\":5}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":5,\"unless-domain\":5}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[]}}]", ContentExtensions::ContentExtensionError::JSONInvalidDomainList);
+
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[\"a\"],\"unless-domain\":[]}}]", ContentExtensions::ContentExtensionError::JSONUnlessAndIfDomain);
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\",\"if-domain\":[\"a\"],\"unless-domain\":[\"a\"]}}]", ContentExtensions::ContentExtensionError::JSONUnlessAndIfDomain);
+
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"webkit.org\", \"unexpected-identifier-should-be-ignored\":5}}]", { });
+
+ checkCompilerError("[{\"action\":5,\"trigger\":{\"url-filter\":\"webkit.org\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidAction);
+ checkCompilerError("[{\"action\":{\"type\":\"invalid\"},\"trigger\":{\"url-filter\":\"webkit.org\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidActionType);
+ checkCompilerError("[{\"action\":{\"type\":\"css-display-none\"},\"trigger\":{\"url-filter\":\"webkit.org\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidCSSDisplayNoneActionType);
+
+ checkCompilerError("[{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"webkit.org\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\".*\"}}]", { });
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".*\",\"if-domain\":[\"a\"]}}]", { });
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\".*\",\"unless-domain\":[\"a\"]}}]", { });
+ checkCompilerError("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[\"}}]",
+ ContentExtensions::ContentExtensionError::JSONInvalidRegex);
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines1)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^.*foo\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"bar$\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[ab]+bang\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/foo"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("foo://webkit.org/bar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bar"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bar://webkit.org/bar"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("abang://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bbang://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("cbang://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/bang"), { });
+ testRequest(backend, mainDocumentRequest("bang://webkit.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines1Partitioning)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ // Those two share a prefix.
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("^.*foo", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("bar$", false, 1));
+
+ // Not this one.
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("^[ab]+bang", false, 0));
+
+ EXPECT_EQ(2ul, createNFAs(combinedURLFilters).size());
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines2)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^foo\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^.*[a-c]+bar\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^webkit:\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[a-c]+b+oom\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("foo://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("webkit://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("http://bar.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://abar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://bbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://cbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://abcbar.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://dbar.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines2Partitioning)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("^foo", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("^.*[a-c]+bar", false, 1));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("^webkit:", false, 2));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("[a-c]+b+oom", false, 3));
+
+ // "^foo" and "^webkit:" can be grouped, the other two have a variable prefix.
+ EXPECT_EQ(3ul, createNFAs(combinedURLFilters).size());
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines3)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"A*D\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"A*BA+\"}},"
+ "{\"action\":{\"type\":\"make-https\"},\"trigger\":{\"url-filter\":\"A*BC\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/D"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/AAD"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/AB"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABA"), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABAD"), { }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/BC"), { ContentExtensions::ActionType::MakeHTTPS });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABC"), { ContentExtensions::ActionType::MakeHTTPS });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABABC"), { ContentExtensions::ActionType::MakeHTTPS }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABABCAD"), { ContentExtensions::ActionType::MakeHTTPS }, true);
+ testRequest(backend, mainDocumentRequest("http://webkit.org/ABCAD"), { ContentExtensions::ActionType::MakeHTTPS, ContentExtensions::ActionType::BlockLoad });
+}
+
+TEST_F(ContentExtensionTest, StrictPrefixSeparatedMachines3Partitioning)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A*D", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A*BA+", false, 1));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A*BC", false, 2));
+
+ // "A*A" and "A*BC" can be grouped, "A*BA+" should not.
+ EXPECT_EQ(2ul, createNFAs(combinedURLFilters).size());
+}
+
+TEST_F(ContentExtensionTest, SplittingLargeNFAs)
+{
+ const size_t expectedNFACounts[16] = {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 2, 1, 1, 1};
+
+ for (size_t i = 0; i < 16; i++) {
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A+BBB", false, 1));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A+CCC", false, 2));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("A+DDD", false, 2));
+
+ Vector<ContentExtensions::NFA> nfas;
+ combinedURLFilters.processNFAs(i, [&](ContentExtensions::NFA&& nfa) {
+ nfas.append(WTFMove(nfa));
+ });
+ EXPECT_EQ(nfas.size(), expectedNFACounts[i]);
+
+ Vector<ContentExtensions::DFA> dfas;
+ for (auto& nfa : nfas)
+ dfas.append(ContentExtensions::NFAToDFA::convert(nfa));
+
+ Vector<ContentExtensions::DFABytecode> combinedBytecode;
+ for (const auto& dfa : dfas) {
+ Vector<ContentExtensions::DFABytecode> bytecode;
+ ContentExtensions::DFABytecodeCompiler compiler(dfa, bytecode);
+ compiler.compile();
+ combinedBytecode.appendVector(bytecode);
+ }
+
+ ContentExtensions::DFABytecodeInterpreter interpreter(&combinedBytecode[0], combinedBytecode.size());
+
+ EXPECT_EQ(interpreter.interpret("ABBBX", 0).size(), 1ull);
+ EXPECT_EQ(interpreter.interpret("ACCCX", 0).size(), 1ull);
+ EXPECT_EQ(interpreter.interpret("ADDDX", 0).size(), 1ull);
+ EXPECT_EQ(interpreter.interpret("XBBBX", 0).size(), 0ull);
+ EXPECT_EQ(interpreter.interpret("ABBX", 0).size(), 0ull);
+ EXPECT_EQ(interpreter.interpret("ACCX", 0).size(), 0ull);
+ EXPECT_EQ(interpreter.interpret("ADDX", 0).size(), 0ull);
+ }
+}
+
+TEST_F(ContentExtensionTest, QuantifierInGroup)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(((A+)B)C)", false, 0));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(((A)B+)C)", false, 1));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(((A)B+)C)D", false, 2));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(((A)B)C+)", false, 3));
+ EXPECT_EQ(ContentExtensions::URLFilterParser::ParseStatus::Ok, parser.addPattern("(((A)B)C)", false, 4));
+
+ // (((A)B+)C) and (((A)B+)C)D should be in the same NFA.
+ EXPECT_EQ(4ul, createNFAs(combinedURLFilters).size());
+}
+
+static void testPatternStatus(String pattern, ContentExtensions::URLFilterParser::ParseStatus status)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+ EXPECT_EQ(status, parser.addPattern(pattern, false, 0));
+}
+
+TEST_F(ContentExtensionTest, ParsingFailures)
+{
+ testPatternStatus("a*b?.*.?[a-z]?[a-z]*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("a*b?.*.?[a-z]?[a-z]+", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("a*b?.*.?[a-z]?[a-z]", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus(".*?a", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus(".*a", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+
+ testPatternStatus("(?!)", ContentExtensions::URLFilterParser::ParseStatus::Group);
+ testPatternStatus("(?=)", ContentExtensions::URLFilterParser::ParseStatus::Group);
+ testPatternStatus("(?!a)", ContentExtensions::URLFilterParser::ParseStatus::Group);
+ testPatternStatus("(?=a)", ContentExtensions::URLFilterParser::ParseStatus::Group);
+ testPatternStatus("(regex)", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("(regex", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("((regex)", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("(?:regex)", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("(?:regex", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("[^.]+", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+
+ testPatternStatus("a++", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("[a]++", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("+", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+
+ testPatternStatus("[", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+ testPatternStatus("[a}", ContentExtensions::URLFilterParser::ParseStatus::YarrError);
+
+ // FIXME: Look into why these do not cause YARR parsing errors. They probably should.
+ testPatternStatus("a]", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("{", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("{[a]", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("{0", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("{0,", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("{0,1", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("a{0,1", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("a{a,b}", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+
+ const char nonASCII[2] = {-1, '\0'};
+ testPatternStatus(nonASCII, ContentExtensions::URLFilterParser::ParseStatus::NonASCII);
+ testPatternStatus("\\xff", ContentExtensions::URLFilterParser::ParseStatus::NonASCII);
+
+ testPatternStatus("\\x\\r\\n", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("\\b", ContentExtensions::URLFilterParser::ParseStatus::WordBoundary);
+ testPatternStatus("[\\d]", ContentExtensions::URLFilterParser::ParseStatus::AtomCharacter);
+ testPatternStatus("\\d\\D\\w\\s\\v\\h\\i\\c", ContentExtensions::URLFilterParser::ParseStatus::UnsupportedCharacterClass);
+
+ testPatternStatus("this|that", ContentExtensions::URLFilterParser::ParseStatus::Disjunction);
+ testPatternStatus("a{0,1}b", ContentExtensions::URLFilterParser::ParseStatus::Ok);
+ testPatternStatus("a{0,2}b", ContentExtensions::URLFilterParser::ParseStatus::InvalidQuantifier);
+ testPatternStatus("", ContentExtensions::URLFilterParser::ParseStatus::EmptyPattern);
+ testPatternStatus("$$", ContentExtensions::URLFilterParser::ParseStatus::MisplacedEndOfLine);
+ testPatternStatus("a^", ContentExtensions::URLFilterParser::ParseStatus::MisplacedStartOfLine);
+ testPatternStatus("(^)", ContentExtensions::URLFilterParser::ParseStatus::MisplacedStartOfLine);
+
+ testPatternStatus("(a)\\1", ContentExtensions::URLFilterParser::ParseStatus::Ok); // This should be BackReference, right?
+}
+
+TEST_F(ContentExtensionTest, PatternMatchingTheEmptyString)
+{
+ // Simple atoms.
+ testPatternStatus(".*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("a*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus(".?", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("a?", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+
+ // Character sets.
+ testPatternStatus("[a-z]*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("[a-z]?", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+
+ // Groups.
+ testPatternStatus("(foobar)*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(foobar)?", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.*)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(a*)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.?)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(a?)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("([a-z]*)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("([a-z]?)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+
+ testPatternStatus("(.)*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.+)*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.?)*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.*)*", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.+)?", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+ testPatternStatus("(.?)+", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+
+ // Nested groups.
+ testPatternStatus("((foo)?((.)*)(bar)*)", ContentExtensions::URLFilterParser::ParseStatus::MatchesEverything);
+}
+
+TEST_F(ContentExtensionTest, MinimizingWithMoreFinalStatesThanNonFinalStates)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^h[a-z://]+\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://foo.com/\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://bar.com/\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://foo.com/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("http://bar.com/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("attp://foo.com/"), { });
+ testRequest(backend, mainDocumentRequest("attp://bar.com/"), { });
+
+ testRequest(backend, mainDocumentRequest("http://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bttp://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bttps://webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("http://webkit.org/b"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://webkit.org/b"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("cttp://webkit.org/B"), { });
+ testRequest(backend, mainDocumentRequest("cttps://webkit.org/B"), { });
+}
+
+TEST_F(ContentExtensionTest, StatesWithDifferentActionsAreNotUnified1)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://www.webkit.org/\"}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"^https://www.webkit.org/\"}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"^attps://www.webkit.org/\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://www.webkit.org/"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("attps://www.webkit.org/"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://www.webkit.org/a"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://www.webkit.org/B"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("attps://www.webkit.org/c"), { ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("http://www.whatwg.org/"), { });
+ testRequest(backend, mainDocumentRequest("https://www.whatwg.org/"), { });
+ testRequest(backend, mainDocumentRequest("attps://www.whatwg.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, StatesWithDifferentActionsAreNotUnified2)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^http://www.webkit.org/\"}},"
+ "{\"action\":{\"type\":\"block-cookies\"},\"trigger\":{\"url-filter\":\"^https://www.webkit.org/\"}},"
+ "{\"action\":{\"type\":\"css-display-none\", \"selector\":\"#foo\"},\"trigger\":{\"url-filter\":\"^https://www.webkit.org/\"}}]");
+
+ testRequest(backend, mainDocumentRequest("http://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("https://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockCookies });
+ testRequest(backend, mainDocumentRequest("https://www.whatwg.org/"), { });
+ testRequest(backend, mainDocumentRequest("attps://www.whatwg.org/"), { });
+}
+
+// The order in which transitions from the root will be processed is unpredictable.
+// To exercises the various options, this test exists in various version exchanging the transition to the final state.
+TEST_F(ContentExtensionTest, FallbackTransitionsWithDifferentiatorDoNotMerge1)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.a\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^b.a\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bac\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bbc\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^BCC\"}}]");
+
+ testRequest(backend, mainDocumentRequest("aza://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bac://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bbc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bcc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("aac://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("abc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("acc://www.webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+}
+TEST_F(ContentExtensionTest, FallbackTransitionsWithDifferentiatorDoNotMerge2)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bac\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bbc\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^BCC\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.a\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^b.a\"}}]");
+
+ testRequest(backend, mainDocumentRequest("aza://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bac://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bbc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bcc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("aac://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("abc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("acc://www.webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { });
+}
+TEST_F(ContentExtensionTest, FallbackTransitionsWithDifferentiatorDoNotMerge3)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.c\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^b.c\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^baa\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bba\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^BCA\"}}]");
+
+ testRequest(backend, mainDocumentRequest("azc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("baa://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bba://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bca://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("aaa://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("aba://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("aca://www.webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+}
+TEST_F(ContentExtensionTest, FallbackTransitionsWithDifferentiatorDoNotMerge4)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^baa\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^bba\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^BCA\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.c\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^b.c\"}}]");
+
+ testRequest(backend, mainDocumentRequest("azc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bzc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("baa://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bba://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bca://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("aaa://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("aba://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("aca://www.webkit.org/"), { });
+
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bza://www.webkit.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, FallbackTransitionsToOtherNodeInSameGroupDoesNotDifferentiateGroup)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^aac\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.c\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^b.c\"}}]");
+
+ testRequest(backend, mainDocumentRequest("aac://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("abc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("bac://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("abc://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("aaa://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("aca://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("baa://www.webkit.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, SimpleFallBackTransitionDifferentiator1)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.bc.de\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^a.bd.ef\"}}]");
+
+ testRequest(backend, mainDocumentRequest("abbccde://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("aabcdde://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("aabddef://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("aabddef://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("abcde://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("abdef://www.webkit.org/"), { });
+}
+
+TEST_F(ContentExtensionTest, SimpleFallBackTransitionDifferentiator2)
+{
+ auto backend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^cb.\"}},"
+ "{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^db.b\"}}]");
+
+ testRequest(backend, mainDocumentRequest("cba://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("cbb://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("dbab://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(backend, mainDocumentRequest("dbxb://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+
+ testRequest(backend, mainDocumentRequest("cca://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("dddd://www.webkit.org/"), { });
+ testRequest(backend, mainDocumentRequest("bbbb://www.webkit.org/"), { });
+}
+
+// *** We have the following ranges intersections: ***
+// Full overlap.
+// 1)
+// A: |-----|
+// B: |---|
+// 2)
+// A: |-----|
+// B: |
+// 3)
+// A: |---|
+// B: |-----|
+// 4)
+// A: |
+// B: |-----|
+// One edge in common
+// 5)
+// A: |-|
+// B: |-|
+// 6)
+// A: |
+// B: |-|
+// 7)
+// A: |-|
+// B: |
+// 8)
+// A: |-|
+// B: |-|
+// 9)
+// A: |
+// B: |-|
+// 10)
+// A: |-|
+// B: |
+// B overlap on the left side of A.
+// 11)
+// A: |---|
+// B: |---|
+// 12)
+// A: |---|
+// B: |-----|
+// A overlap on the left side of B
+// 13)
+// A: |---|
+// B: |---|
+// 14)
+// A: |-----|
+// B: |---|
+// Equal ranges
+// 15)
+// A: |---|
+// B: |---|
+// 16)
+// A: |
+// B: |
+
+TEST_F(ContentExtensionTest, RangeOverlapCase1)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"^[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase2)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"^b\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"l\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.k.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.l.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase3)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[a-m]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[a-m]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase4)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^l\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[a-m]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("k://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("l://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"l\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[a-m]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.k.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.l.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase5)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[e-h]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[e-h]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase6)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[e-h]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[e-h]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase7)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^e\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"e\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase8)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[a-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[a-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase9)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[a-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[a-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase10)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^e\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"e\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase11)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[d-f]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[d-f]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+
+TEST_F(ContentExtensionTest, RangeOverlapCase12)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[d-g]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[d-g]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase13)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase14)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[b-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[b-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase15)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^[c-f]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^[c-f]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[c-f]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[c-f]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, RangeOverlapCase16)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^c\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^c\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"c\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"c\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, QuantifiedOneOrMoreRangesCase11And13)
+{
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"[c-e]+[g-i]+YYY\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[b-d]+[h-j]+YYY\"}}]");
+
+ // The interesting ranges only match between 'b' and 'k', plus a gap in 'f'.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.abyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.acyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.adyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aeyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.afyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.agyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ahyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aiyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ajyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.akyyy.xxx/"), { });
+
+ // 'b' is the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.byyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bcyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.beyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.biyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bkyyy.xxx/"), { });
+
+ // 'c' is the first character of the first rule, and it overlaps the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ccyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ceyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.chyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ciyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ckyyy.xxx/"), { });
+
+ // 'd' is in the first range of both rule. This series cover overlaps between the two rules.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.degyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dehyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfhyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.djyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+}
+
+TEST_F(ContentExtensionTest, QuantifiedOneOrMoreRangesCase11And13InGroups)
+{
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"([c-e])+([g-i]+YYY)\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"[b-d]+[h-j]+YYY\"}}]");
+
+ // The interesting ranges only match between 'b' and 'k', plus a gap in 'f'.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.abyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.acyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.adyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aeyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.afyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.agyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ahyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aiyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ajyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.akyyy.xxx/"), { });
+
+ // 'b' is the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.byyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bcyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.beyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.biyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bkyyy.xxx/"), { });
+
+ // 'c' is the first character of the first rule, and it overlaps the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ccyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ceyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.chyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ciyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ckyyy.xxx/"), { });
+
+ // 'd' is in the first range of both rule. This series cover overlaps between the two rules.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.degyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dehyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfhyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.djyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase1)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"^(bar)*[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"(bar)*[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase2)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"^(bar)*b\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { }, true);
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[a-m]\"}},"
+ "{\"action\":{\"type\":\"ignore-previous-rules\"},\"trigger\":{\"url-filter\":\"(bar)*l\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.k.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.l.xxx/"), { }, true);
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase3)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[a-m]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[a-m]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase4)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*l\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[a-m]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("k://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("l://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("m://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("n://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*l\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[a-m]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.k.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.l.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.m.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.n.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase5)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[e-h]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[e-h]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase6)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[e-h]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[e-h]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase7)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*e\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[a-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*e\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase8)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[a-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[a-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase9)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[a-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*e\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[a-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase10)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*e\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("i://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[e-h]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*e\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.i.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase11)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[d-f]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[d-f]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase12)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[d-g]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[e-g]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[d-g]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase13)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[b-d]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase14)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[b-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[c-e]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("h://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[b-e]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[c-e]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.h.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase15)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*[c-f]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*[c-f]\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("f://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("g://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[c-f]\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[c-f]\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.f.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.g.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedRangeOverlapCase16)
+{
+ auto matchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"^(foo)*c\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"^(bar)*c\"}}]");
+
+ testRequest(matchBackend, mainDocumentRequest("a://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("b://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("c://www.webkit.org/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(matchBackend, mainDocumentRequest("d://www.webkit.org/"), { });
+ testRequest(matchBackend, mainDocumentRequest("e://www.webkit.org/"), { });
+
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*c\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*c\"}}]");
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.a.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.b.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.c.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.d.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.e.xxx/"), { });
+}
+
+TEST_F(ContentExtensionTest, CombinedQuantifiedOneOrMoreRangesCase11And13)
+{
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*[c-e]+[g-i]+YYY\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[b-d]+[h-j]+YYY\"}}]");
+
+ // The interesting ranges only match between 'b' and 'k', plus a gap in 'f'.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.abyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.acyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.adyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aeyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.afyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.agyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ahyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aiyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ajyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.akyyy.xxx/"), { });
+
+ // 'b' is the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.byyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bcyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.beyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.biyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bkyyy.xxx/"), { });
+
+ // 'c' is the first character of the first rule, and it overlaps the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ccyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ceyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.chyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ciyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ckyyy.xxx/"), { });
+
+ // 'd' is in the first range of both rule. This series cover overlaps between the two rules.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.degyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dehyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfhyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.djyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+}
+
+TEST_F(ContentExtensionTest, CombinedQuantifiedOneOrMoreRangesCase11And13InGroups)
+{
+ auto searchBackend = makeBackend("[{\"action\":{\"type\":\"block\"},\"trigger\":{\"url-filter\":\"(foo)*([c-e])+([g-i]+YYY)\"}},"
+ "{\"action\":{\"type\":\"css-display-none\",\"selector\":\".hidden\"},\"trigger\":{\"url-filter\":\"(bar)*[b-d]+[h-j]+YYY\"}}]");
+
+ // The interesting ranges only match between 'b' and 'k', plus a gap in 'f'.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.abyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.acyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.adyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aeyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.afyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.agyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ahyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.aiyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ajyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.akyyy.xxx/"), { });
+
+ // 'b' is the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.byyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bcyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.beyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.biyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.bkyyy.xxx/"), { });
+
+ // 'c' is the first character of the first rule, and it overlaps the first character of the second rule.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cayyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cbyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ccyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cdyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ceyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cfyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.chyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ciyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.cjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ckyyy.xxx/"), { });
+
+ // 'd' is in the first range of both rule. This series cover overlaps between the two rules.
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddgyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddhhyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector, ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.degyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dehyyy.xxx/"), { ContentExtensions::ActionType::BlockLoad });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfgyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.dfhyyy.xxx/"), { });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.djyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+ testRequest(searchBackend, mainDocumentRequest("zzz://www.ddjjyyy.xxx/"), { ContentExtensions::ActionType::CSSDisplayNoneSelector });
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/DFACombiner.cpp b/Tools/TestWebKitAPI/Tests/WebCore/DFACombiner.cpp
new file mode 100644
index 000000000..d53ebb75a
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/DFACombiner.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "DFAHelpers.h"
+#include <WebCore/DFACombiner.h>
+#include <wtf/MainThread.h>
+
+using namespace WebCore;
+using namespace ContentExtensions;
+
+namespace TestWebKitAPI {
+
+class DFACombinerTest : public testing::Test {
+public:
+ virtual void SetUp()
+ {
+ WTF::initializeMainThread();
+ }
+};
+
+Vector<DFA> combine(Vector<DFA> dfas, unsigned minimumSize)
+{
+ DFACombiner combiner;
+ for (DFA& dfa : dfas)
+ combiner.addDFA(WTFMove(dfa));
+
+ Vector<DFA> output;
+ combiner.combineDFAs(minimumSize, [&output](DFA&& dfa) {
+ output.append(dfa);
+ });
+ return output;
+}
+
+TEST_F(DFACombinerTest, Basic)
+{
+ Vector<DFA> dfas = { buildDFAFromPatterns({ "foo"}), buildDFAFromPatterns({ "bar"}) };
+ Vector<DFA> combinedDFAs = combine(dfas, 10000);
+ EXPECT_EQ(static_cast<size_t>(1), combinedDFAs.size());
+
+ DFA reference = buildDFAFromPatterns({ "foo", "bar"});
+ reference.minimize();
+ EXPECT_EQ(countLiveNodes(reference), countLiveNodes(combinedDFAs.first()));
+}
+
+
+TEST_F(DFACombinerTest, IdenticalDFAs)
+{
+ Vector<DFA> dfas = { buildDFAFromPatterns({ "foo"}), buildDFAFromPatterns({ "foo"}) };
+ Vector<DFA> combinedDFAs = combine(dfas, 10000);
+ EXPECT_EQ(static_cast<size_t>(1), combinedDFAs.size());
+
+ // The result should have the exact same size as the minimized input.
+ DFA reference = buildDFAFromPatterns({ "foo"});
+ reference.minimize();
+ EXPECT_EQ(countLiveNodes(reference), countLiveNodes(combinedDFAs.first()));
+}
+
+TEST_F(DFACombinerTest, NoInput)
+{
+ DFACombiner combiner;
+ unsigned counter = 0;
+ combiner.combineDFAs(100000, [&counter](DFA&& dfa) {
+ ++counter;
+ });
+ EXPECT_EQ(static_cast<unsigned>(0), counter);
+}
+
+TEST_F(DFACombinerTest, SingleInput)
+{
+ Vector<DFA> dfas = { buildDFAFromPatterns({ "WebKit"}) };
+ Vector<DFA> combinedDFAs = combine(dfas, 10000);
+ EXPECT_EQ(static_cast<size_t>(1), combinedDFAs.size());
+
+ DFA reference = buildDFAFromPatterns({ "WebKit"});
+ reference.minimize();
+ EXPECT_EQ(countLiveNodes(reference), countLiveNodes(combinedDFAs.first()));
+}
+
+TEST_F(DFACombinerTest, InputTooLargeForMinimumSize)
+{
+ Vector<DFA> dfas = { buildDFAFromPatterns({ "foo"}), buildDFAFromPatterns({ "bar"}) };
+ Vector<DFA> combinedDFAs = combine(dfas, 2);
+ EXPECT_EQ(static_cast<size_t>(2), combinedDFAs.size());
+ EXPECT_EQ(static_cast<size_t>(4), countLiveNodes(combinedDFAs[0]));
+ EXPECT_EQ(static_cast<size_t>(4), countLiveNodes(combinedDFAs[1]));
+}
+
+TEST_F(DFACombinerTest, CombinedInputReachesMinimumSize)
+{
+ Vector<DFA> dfas = { buildDFAFromPatterns({ "foo"}), buildDFAFromPatterns({ "bar"}), buildDFAFromPatterns({ "WebKit"}) };
+ Vector<DFA> combinedDFAs = combine(dfas, 5);
+ EXPECT_EQ(static_cast<size_t>(2), combinedDFAs.size());
+ EXPECT_EQ(static_cast<size_t>(7), countLiveNodes(combinedDFAs[0]));
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(combinedDFAs[1]));
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/DFAHelpers.h b/Tools/TestWebKitAPI/Tests/WebCore/DFAHelpers.h
new file mode 100644
index 000000000..8c6402760
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/DFAHelpers.h
@@ -0,0 +1,67 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 <WebCore/CombinedURLFilters.h>
+#include <WebCore/NFA.h>
+#include <WebCore/NFAToDFA.h>
+#include <WebCore/URLFilterParser.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+static unsigned countLiveNodes(const ContentExtensions::DFA& dfa)
+{
+ unsigned counter = 0;
+ for (const auto& node : dfa.nodes) {
+ if (!node.isKilled())
+ ++counter;
+ }
+ return counter;
+}
+
+static Vector<ContentExtensions::NFA> createNFAs(ContentExtensions::CombinedURLFilters& combinedURLFilters)
+{
+ Vector<ContentExtensions::NFA> nfas;
+
+ combinedURLFilters.processNFAs(std::numeric_limits<size_t>::max(), [&](ContentExtensions::NFA&& nfa) {
+ nfas.append(WTFMove(nfa));
+ });
+
+ return nfas;
+}
+
+static ContentExtensions::DFA buildDFAFromPatterns(Vector<const char*> patterns)
+{
+ ContentExtensions::CombinedURLFilters combinedURLFilters;
+ ContentExtensions::URLFilterParser parser(combinedURLFilters);
+
+ for (const char* pattern : patterns)
+ parser.addPattern(pattern, false, 0);
+ Vector<ContentExtensions::NFA> nfas = createNFAs(combinedURLFilters);
+ return ContentExtensions::NFAToDFA::convert(nfas[0]);
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/DFAMinimizer.cpp b/Tools/TestWebKitAPI/Tests/WebCore/DFAMinimizer.cpp
new file mode 100644
index 000000000..bb3ac2e2a
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/DFAMinimizer.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "DFAHelpers.h"
+#include <wtf/MainThread.h>
+
+namespace TestWebKitAPI {
+
+class DFAMinimizerTest : public testing::Test {
+public:
+ virtual void SetUp()
+ {
+ WTF::initializeMainThread();
+ }
+};
+
+TEST_F(DFAMinimizerTest, BasicSearch)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ ".*foo", ".*bar", ".*bang"});
+ EXPECT_EQ(static_cast<size_t>(8), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(7), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, MergeSuffixes)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ ".*aaa", ".*aab", ".*aba", ".*abb", ".*baa", ".*bab", ".*bba", ".*bbb"});
+ EXPECT_EQ(static_cast<size_t>(12), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(4), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, MergeInfixes)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ ".*aaakit", ".*aabkit", ".*abakit", ".*abbkit", ".*baakit", ".*babkit", ".*bbakit", ".*bbbkit"});
+ EXPECT_EQ(static_cast<size_t>(15), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(7), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, FallbackTransitionsWithDifferentiatorDoNotMerge1)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^a.a", "^b.a", "^bac", "^bbc", "^BCC"});
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, FallbackTransitionsWithDifferentiatorDoNotMerge2)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^bbc", "^BCC", "^a.a", "^b.a"});
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, FallbackTransitionsWithDifferentiatorDoNotMerge3)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^a.c", "^b.c", "^baa", "^bba", "^BCA"});
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, FallbackTransitionsWithDifferentiatorDoNotMerge4)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^baa", "^bba", "^BCA", "^a.c", "^b.c"});
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(6), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, FallbackTransitionsToOtherNodeInSameGroupDoesNotDifferentiateGroup)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^aac", "^a.c", "^b.c"});
+ EXPECT_EQ(static_cast<size_t>(5), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(4), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, SimpleFallBackTransitionDifferentiator1)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^a.bc.de", "^a.bd.ef"});
+ EXPECT_EQ(static_cast<size_t>(11), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(11), countLiveNodes(dfa));
+}
+
+TEST_F(DFAMinimizerTest, SimpleFallBackTransitionDifferentiator2)
+{
+ ContentExtensions::DFA dfa = buildDFAFromPatterns({ "^cb.", "^db.b"});
+ EXPECT_EQ(static_cast<size_t>(7), countLiveNodes(dfa));
+ dfa.minimize();
+ EXPECT_EQ(static_cast<size_t>(7), countLiveNodes(dfa));
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/FileSystem.cpp b/Tools/TestWebKitAPI/Tests/WebCore/FileSystem.cpp
new file mode 100644
index 000000000..fb23a4b7c
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/FileSystem.cpp
@@ -0,0 +1,96 @@
+/*
+ * Copyright (C) 2015 Canon 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. 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 INC. 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 "Test.h"
+#include <WebCore/FileSystem.h>
+#include <wtf/MainThread.h>
+#include <wtf/StringExtras.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+const char* FileSystemTestData = "This is a test";
+
+// FIXME: Refactor FileSystemTest and SharedBufferTest as a single class.
+class FileSystemTest : public testing::Test {
+public:
+ virtual void SetUp() override
+ {
+ WTF::initializeMainThread();
+
+ // create temp file
+ PlatformFileHandle handle;
+ m_tempFilePath = openTemporaryFile("tempTestFile", handle);
+ writeToFile(handle, FileSystemTestData, strlen(FileSystemTestData));
+ closeFile(handle);
+
+ m_tempEmptyFilePath = openTemporaryFile("tempEmptyTestFile", handle);
+ closeFile(handle);
+ }
+
+ virtual void TearDown() override
+ {
+ deleteFile(m_tempFilePath);
+ deleteFile(m_tempEmptyFilePath);
+ }
+
+ const String& tempFilePath() { return m_tempFilePath; }
+ const String& tempEmptyFilePath() { return m_tempEmptyFilePath; }
+
+private:
+ String m_tempFilePath;
+ String m_tempEmptyFilePath;
+};
+
+TEST_F(FileSystemTest, MappingMissingFile)
+{
+ bool success;
+ MappedFileData mappedFileData(String("not_existing_file"), success);
+ EXPECT_FALSE(success);
+ EXPECT_TRUE(!mappedFileData);
+}
+
+TEST_F(FileSystemTest, MappingExistingFile)
+{
+ bool success;
+ MappedFileData mappedFileData(tempFilePath(), success);
+ EXPECT_TRUE(success);
+ EXPECT_TRUE(!!mappedFileData);
+ EXPECT_TRUE(mappedFileData.size() == strlen(FileSystemTestData));
+ EXPECT_TRUE(strnstr(FileSystemTestData, static_cast<const char*>(mappedFileData.data()), mappedFileData.size()));
+}
+
+TEST_F(FileSystemTest, MappingExistingEmptyFile)
+{
+ bool success;
+ MappedFileData mappedFileData(tempEmptyFilePath(), success);
+ EXPECT_TRUE(success);
+ EXPECT_TRUE(!mappedFileData);
+}
+
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp b/Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp
deleted file mode 100644
index 6eade5586..000000000
--- a/Tools/TestWebKitAPI/Tests/WebCore/KURL.cpp
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 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. 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 INC. 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 "WTFStringUtilities.h"
-#include <WebCore/KURL.h>
-#include <wtf/MainThread.h>
-
-using namespace WebCore;
-
-namespace TestWebKitAPI {
-
-class KURLTest : public testing::Test {
-public:
- virtual void SetUp()
- {
- WTF::initializeMainThread();
- }
-};
-
-TEST_F(KURLTest, KURLConstructorDefault)
-{
- KURL kurl;
-
- EXPECT_TRUE(kurl.isEmpty());
- EXPECT_TRUE(kurl.isNull());
- EXPECT_FALSE(kurl.isValid());
-}
-
-TEST_F(KURLTest, KURLConstructorConstChar)
-{
- KURL kurl(ParsedURLString, "http://username:password@www.example.com:8080/index.html?var=val#fragment");
-
- EXPECT_FALSE(kurl.isEmpty());
- EXPECT_FALSE(kurl.isNull());
- EXPECT_TRUE(kurl.isValid());
-
- EXPECT_EQ(String("http"), kurl.protocol());
- EXPECT_EQ(String("www.example.com"), kurl.host());
- EXPECT_TRUE(kurl.hasPort());
- EXPECT_EQ(8080, kurl.port());
- EXPECT_EQ(String("username"), kurl.user());
- EXPECT_EQ(String("password"), kurl.pass());
- EXPECT_EQ(String("/index.html"), kurl.path());
- EXPECT_EQ(String("index.html"), kurl.lastPathComponent());
- EXPECT_EQ(String("var=val"), kurl.query());
- EXPECT_TRUE(kurl.hasFragmentIdentifier());
- EXPECT_EQ(String("fragment"), kurl.fragmentIdentifier());
-}
-
-TEST_F(KURLTest, KURLDataURIStringSharing)
-{
- KURL baseURL(ParsedURLString, "http://www.webkit.org/");
- String threeApples = "data:text/plain;charset=utf-8;base64,76O/76O/76O/";
-
- KURL url(baseURL, threeApples);
- EXPECT_EQ(threeApples.impl(), url.string().impl());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp b/Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
index ceafb039c..f904c96a1 100644
--- a/Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebCore/LayoutUnit.cpp
@@ -28,8 +28,6 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#define ENABLE_SUBPIXEL_LAYOUT 1
-#define ENABLE_SATURATED_LAYOUT_ARITHMETIC 1
#include "config.h"
#include <WebCore/LayoutUnit.h>
@@ -77,6 +75,10 @@ TEST(WebCoreLayoutUnit, LayoutUnitFloat)
ASSERT_NEAR(LayoutUnit(345634.12335f).toFloat(), 345634.12335f, tolerance);
ASSERT_NEAR(LayoutUnit(-345634.12335f).toFloat(), -345634.12335f, tolerance);
ASSERT_NEAR(LayoutUnit(-345634).toFloat(), -345634.0f, tolerance);
+ ASSERT_NEAR(LayoutUnit(33554432.f).toFloat(), 33554432.f, tolerance);
+ ASSERT_NEAR(LayoutUnit(-33554432.f).toFloat(), -33554432.f, tolerance);
+ ASSERT_NEAR(LayoutUnit(33554432.f).toDouble(), 33554432.f, tolerance);
+ ASSERT_NEAR(LayoutUnit(-33554432.f).toDouble(), -33554432.f, tolerance);
}
TEST(WebCoreLayoutUnit, LayoutUnitRounding)
@@ -104,28 +106,6 @@ TEST(WebCoreLayoutUnit, LayoutUnitRounding)
ASSERT_EQ(LayoutUnit::fromFloatRound(1.51f).round(), 2);
}
-TEST(WebCoreLayoutUnit, LayoutUnitSnapSizeToPixel)
-{
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1), LayoutUnit(0)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1), LayoutUnit(0.5)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(0)), 2);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(0.49)), 2);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(0.5)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(0.75)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(0.99)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(1)), 2);
-
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(0.5), LayoutUnit(1.5)), 0);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(0.99), LayoutUnit(1.5)), 0);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.0), LayoutUnit(1.5)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.49), LayoutUnit(1.5)), 1);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(1.5), LayoutUnit(1.5)), 1);
-
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(100.5), LayoutUnit(100)), 101);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(intMaxForLayoutUnit), LayoutUnit(0.3)), intMaxForLayoutUnit);
- ASSERT_EQ(snapSizeToPixel(LayoutUnit(intMinForLayoutUnit), LayoutUnit(-0.3)), intMinForLayoutUnit);
-}
-
TEST(WebCoreLayoutUnit, LayoutUnitMultiplication)
{
ASSERT_EQ((LayoutUnit(1) * LayoutUnit(1)).toInt(), 1);
@@ -250,5 +230,19 @@ TEST(WebCoreLayoutUnit, LayoutUnitFloor)
ASSERT_EQ((LayoutUnit(intMinForLayoutUnit) + LayoutUnit(1)).floor(), intMinForLayoutUnit + 1);
}
+TEST(WebCoreLayoutUnit, LayoutUnitPixelSnapping)
+{
+ for (int i = -100000; i <= 100000; ++i) {
+ ASSERT_EQ(roundToDevicePixel(LayoutUnit(i), 1), i);
+ ASSERT_EQ(roundToDevicePixel(LayoutUnit(i), 2), i);
+ ASSERT_EQ(roundToDevicePixel(LayoutUnit(i), 3), i);
+ }
+
+ for (float i = -10000; i < 0; i = i + 0.5)
+ ASSERT_FLOAT_EQ(roundToDevicePixel(LayoutUnit(i), 2), i);
+
+ for (float i = -10000.25; i < 0; i = i + 0.5)
+ ASSERT_FLOAT_EQ(roundToDevicePixel(LayoutUnit(i), 2), i + 0.25);
+}
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp b/Tools/TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp
new file mode 100644
index 000000000..986388302
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/ParsedContentRange.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2016 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. 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 INC. 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 <WebCore/ParsedContentRange.h>
+#include <wtf/text/WTFString.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+TEST(WebCore, ParsedContentRangeFromString)
+{
+ // Basic parsing
+ ASSERT_TRUE(ParsedContentRange("bytes 0-1/2").isValid());
+ ASSERT_TRUE(ParsedContentRange("bytes 0-1/*").isValid());
+ ASSERT_EQ(0, ParsedContentRange("bytes 0-1/2").firstBytePosition());
+ ASSERT_EQ(1, ParsedContentRange("bytes 0-1/2").lastBytePosition());
+ ASSERT_EQ(2, ParsedContentRange("bytes 0-1/2").instanceLength());
+ ASSERT_EQ(ParsedContentRange::UnknownLength, ParsedContentRange("bytes 0-1/*").instanceLength());
+
+ // Whitespace errors
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0 -1/*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0- 1/*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1 /*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/ *").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/* ").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/ 2").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/2 ").isValid());
+
+ // Non-digit errors
+ ASSERT_FALSE(ParsedContentRange("bytes abcd-1/2").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-abcd/2").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/abcd").isValid());
+
+ // Range requirement errors
+ ASSERT_FALSE(ParsedContentRange("bytes 1-0/2").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-2/1").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 2/0-1").isValid());
+ ASSERT_FALSE(ParsedContentRange("abcd 0/1-2").isValid());
+
+ // Negative value errors
+ ASSERT_FALSE(ParsedContentRange("bytes -0-1/*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes -1/*").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0--0/2").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 0-1/-2").isValid());
+
+ // Edge cases
+ ASSERT_TRUE(ParsedContentRange("bytes 9223372036854775805-9223372036854775806/9223372036854775807").isValid());
+ ASSERT_FALSE(ParsedContentRange("bytes 9223372036854775808-9223372036854775809/9223372036854775810").isValid());
+}
+
+TEST(WebCore, ParsedContentRangeFromValues)
+{
+ ASSERT_TRUE(ParsedContentRange(0, 1, 2).isValid());
+ ASSERT_TRUE(ParsedContentRange(0, 1, ParsedContentRange::UnknownLength).isValid());
+ ASSERT_FALSE(ParsedContentRange().isValid());
+ ASSERT_FALSE(ParsedContentRange(1, 0, 2).isValid());
+ ASSERT_FALSE(ParsedContentRange(0, 2, 1).isValid());
+ ASSERT_FALSE(ParsedContentRange(0, 0, 0).isValid());
+ ASSERT_FALSE(ParsedContentRange(-1, 1, 2).isValid());
+ ASSERT_FALSE(ParsedContentRange(0, -1, 2).isValid());
+ ASSERT_FALSE(ParsedContentRange(0, 1, -2).isValid());
+ ASSERT_FALSE(ParsedContentRange(-2, -1, 2).isValid());
+}
+
+TEST(WebCore, ParsedContentRangeToString)
+{
+ ASSERT_STREQ("bytes 0-1/2", ParsedContentRange(0, 1, 2).headerValue().utf8().data());
+ ASSERT_STREQ("bytes 0-1/*", ParsedContentRange(0, 1, ParsedContentRange::UnknownLength).headerValue().utf8().data());
+ ASSERT_STREQ("", ParsedContentRange().headerValue().utf8().data());
+}
+
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp b/Tools/TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp
new file mode 100644
index 000000000..f87ba63eb
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/PublicSuffix.cpp
@@ -0,0 +1,78 @@
+/*
+ * Copyright (C) 2012 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. 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 INC. 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"
+
+#if ENABLE(PUBLIC_SUFFIX_LIST)
+
+#include "WTFStringUtilities.h"
+#include <WebCore/PublicSuffix.h>
+#include <wtf/MainThread.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+class PublicSuffix: public testing::Test {
+public:
+ virtual void SetUp()
+ {
+ WTF::initializeMainThread();
+ }
+};
+
+TEST_F(PublicSuffix, IsPublicSuffix)
+{
+ EXPECT_TRUE(isPublicSuffix("com"));
+ EXPECT_FALSE(isPublicSuffix("test.com"));
+ EXPECT_FALSE(isPublicSuffix("com.com"));
+ EXPECT_TRUE(isPublicSuffix("net"));
+ EXPECT_TRUE(isPublicSuffix("org"));
+ EXPECT_TRUE(isPublicSuffix("co.uk"));
+ EXPECT_FALSE(isPublicSuffix("bl.uk"));
+ EXPECT_FALSE(isPublicSuffix("test.co.uk"));
+ EXPECT_TRUE(isPublicSuffix("xn--zf0ao64a.tw"));
+}
+
+TEST_F(PublicSuffix, TopPrivatelyControlledDomain)
+{
+ EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("test.com"));
+ EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("com.test.com"));
+ EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("subdomain.test.com"));
+ EXPECT_EQ(String("com.com"), topPrivatelyControlledDomain("www.com.com"));
+ EXPECT_EQ(String("test.co.uk"), topPrivatelyControlledDomain("test.co.uk"));
+ EXPECT_EQ(String("test.co.uk"), topPrivatelyControlledDomain("subdomain.test.co.uk"));
+ EXPECT_EQ(String("bl.uk"), topPrivatelyControlledDomain("bl.uk"));
+ EXPECT_EQ(String("bl.uk"), topPrivatelyControlledDomain("subdomain.bl.uk"));
+ EXPECT_EQ(String("test.xn--zf0ao64a.tw"), topPrivatelyControlledDomain("test.xn--zf0ao64a.tw"));
+ EXPECT_EQ(String("test.xn--zf0ao64a.tw"), topPrivatelyControlledDomain("www.test.xn--zf0ao64a.tw"));
+ EXPECT_EQ(String("127.0.0.1"), topPrivatelyControlledDomain("127.0.0.1"));
+ EXPECT_EQ(String(), topPrivatelyControlledDomain("1"));
+ EXPECT_EQ(String(), topPrivatelyControlledDomain("com"));
+}
+
+}
+
+#endif // ENABLE(PUBLIC_SUFFIX_LIST)
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp b/Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp
new file mode 100644
index 000000000..295281ef9
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/SharedBuffer.cpp
@@ -0,0 +1,119 @@
+/*
+ * Copyright (C) 2015 Canon 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. 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 INC. 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 "Test.h"
+#include <WebCore/SharedBuffer.h>
+#include <wtf/MainThread.h>
+#include <wtf/StringExtras.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+const char* SharedBufferTestData = "This is a test";
+
+class SharedBufferTest : public testing::Test {
+public:
+ virtual void SetUp() override
+ {
+ WTF::initializeMainThread();
+
+ // create temp file
+ PlatformFileHandle handle;
+ m_tempFilePath = openTemporaryFile("tempTestFile", handle);
+ writeToFile(handle, SharedBufferTestData, strlen(SharedBufferTestData));
+ closeFile(handle);
+
+ m_tempEmptyFilePath = openTemporaryFile("tempEmptyTestFile", handle);
+ closeFile(handle);
+ }
+
+ virtual void TearDown() override
+ {
+ deleteFile(m_tempFilePath);
+ deleteFile(m_tempEmptyFilePath);
+ }
+
+ const String& tempFilePath() { return m_tempFilePath; }
+ const String& tempEmptyFilePath() { return m_tempEmptyFilePath; }
+
+private:
+ String m_tempFilePath;
+ String m_tempEmptyFilePath;
+};
+
+TEST_F(SharedBufferTest, createWithContentsOfMissingFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(String("not_existing_file"));
+ ASSERT_NULL(buffer);
+}
+
+TEST_F(SharedBufferTest, createWithContentsOfExistingFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(tempFilePath());
+ ASSERT_NOT_NULL(buffer);
+ EXPECT_TRUE(buffer->size() == strlen(SharedBufferTestData));
+ EXPECT_TRUE(String(SharedBufferTestData) == String(buffer->data(), buffer->size()));
+}
+
+TEST_F(SharedBufferTest, createWithContentsOfExistingEmptyFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(tempEmptyFilePath());
+ ASSERT_NOT_NULL(buffer);
+ EXPECT_TRUE(buffer->isEmpty());
+}
+
+TEST_F(SharedBufferTest, copyBufferCreatedWithContentsOfExistingFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(tempFilePath());
+ ASSERT_NOT_NULL(buffer);
+ RefPtr<SharedBuffer> copy = buffer->copy();
+ EXPECT_GT(buffer->size(), 0U);
+ EXPECT_TRUE(buffer->size() == copy->size());
+ EXPECT_TRUE(!memcmp(buffer->data(), copy->data(), buffer->size()));
+}
+
+TEST_F(SharedBufferTest, clearBufferCreatedWithContentsOfExistingFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(tempFilePath());
+ ASSERT_NOT_NULL(buffer);
+ buffer->clear();
+ EXPECT_TRUE(!buffer->size());
+ EXPECT_TRUE(!buffer->data());
+}
+
+TEST_F(SharedBufferTest, appendBufferCreatedWithContentsOfExistingFile)
+{
+ RefPtr<SharedBuffer> buffer = SharedBuffer::createWithContentsOfFile(tempFilePath());
+ ASSERT_NOT_NULL(buffer);
+ buffer->append("a", 1);
+ EXPECT_TRUE(buffer->size() == (strlen(SharedBufferTestData) + 1));
+ EXPECT_TRUE(!memcmp(buffer->data(), SharedBufferTestData, strlen(SharedBufferTestData)));
+ EXPECT_EQ('a', buffer->data()[strlen(SharedBufferTestData)]);
+}
+
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp b/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp
new file mode 100644
index 000000000..1612bf8f0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/TimeRanges.cpp
@@ -0,0 +1,293 @@
+/*
+ * Copyright (c) 2013, 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.
+ */
+
+#include "config.h"
+#include <WebCore/TimeRanges.h>
+
+#include <WebCore/ExceptionCodePlaceholder.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+static std::string ToString(const TimeRanges& ranges)
+{
+ std::stringstream ss;
+ ss << "{";
+ for (unsigned i = 0; i < ranges.length(); ++i)
+ ss << " [" << ranges.start(i, IGNORE_EXCEPTION) << "," << ranges.end(i, IGNORE_EXCEPTION) << ")";
+ ss << " }";
+
+ return ss.str();
+}
+
+#define ASSERT_RANGE(expected, range) EXPECT_EQ(expected, ToString(*range))
+
+TEST(TimeRanges, Empty)
+{
+ ASSERT_RANGE("{ }", TimeRanges::create().ptr());
+}
+
+TEST(TimeRanges, SingleRange)
+{
+ ASSERT_RANGE("{ [1,2) }", TimeRanges::create(1, 2).ptr());
+}
+
+TEST(TimeRanges, AddOrder)
+{
+ RefPtr<TimeRanges> rangeA = TimeRanges::create();
+ RefPtr<TimeRanges> rangeB = TimeRanges::create();
+
+ rangeA->add(0, 2);
+ rangeA->add(3, 4);
+ rangeA->add(5, 100);
+
+ std::string expected = "{ [0,2) [3,4) [5,100) }";
+ ASSERT_RANGE(expected, rangeA);
+
+ // Add the values in rangeA to rangeB in reverse order.
+ for (int i = rangeA->length() - 1; i >= 0; --i)
+ rangeB->add(rangeA->start(i, IGNORE_EXCEPTION), rangeA->end(i, IGNORE_EXCEPTION));
+
+ ASSERT_RANGE(expected, rangeB);
+}
+
+TEST(TimeRanges, OverlappingAdds)
+{
+ RefPtr<TimeRanges> ranges = TimeRanges::create();
+
+ ranges->add(0, 2);
+ ranges->add(10, 11);
+ ASSERT_RANGE("{ [0,2) [10,11) }", ranges);
+
+ ranges->add(0, 2);
+ ASSERT_RANGE("{ [0,2) [10,11) }", ranges);
+
+ ranges->add(2, 3);
+ ASSERT_RANGE("{ [0,3) [10,11) }", ranges);
+
+ ranges->add(2, 6);
+ ASSERT_RANGE("{ [0,6) [10,11) }", ranges);
+
+ ranges->add(9, 10);
+ ASSERT_RANGE("{ [0,6) [9,11) }", ranges);
+
+ ranges->add(8, 10);
+ ASSERT_RANGE("{ [0,6) [8,11) }", ranges);
+
+ ranges->add(-1, 7);
+ ASSERT_RANGE("{ [-1,7) [8,11) }", ranges);
+
+ ranges->add(6, 9);
+ ASSERT_RANGE("{ [-1,11) }", ranges);
+}
+
+TEST(TimeRanges, IntersectWith_Self)
+{
+ RefPtr<TimeRanges> ranges = TimeRanges::create(0, 2);
+
+ ASSERT_RANGE("{ [0,2) }", ranges);
+
+ ranges->intersectWith(*ranges.get());
+
+ ASSERT_RANGE("{ [0,2) }", ranges);
+}
+
+TEST(TimeRanges, IntersectWith_IdenticalRange)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create(0, 2);
+ RefPtr<TimeRanges> rangesB = rangesA->copy();
+
+ ASSERT_RANGE("{ [0,2) }", rangesA);
+ ASSERT_RANGE("{ [0,2) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [0,2) }", rangesA);
+ ASSERT_RANGE("{ [0,2) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_Empty)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create(0, 2);
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ ASSERT_RANGE("{ [0,2) }", rangesA);
+ ASSERT_RANGE("{ }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ }", rangesA);
+ ASSERT_RANGE("{ }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_DisjointRanges1)
+{
+
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(0, 1);
+ rangesA->add(4, 5);
+
+ rangesB->add(2, 3);
+ rangesB->add(6, 7);
+
+ ASSERT_RANGE("{ [0,1) [4,5) }", rangesA);
+ ASSERT_RANGE("{ [2,3) [6,7) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ }", rangesA);
+ ASSERT_RANGE("{ [2,3) [6,7) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_DisjointRanges2)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(0, 1);
+ rangesA->add(4, 5);
+
+ rangesB->add(1, 4);
+ rangesB->add(5, 7);
+
+ ASSERT_RANGE("{ [0,1) [4,5) }", rangesA);
+ ASSERT_RANGE("{ [1,4) [5,7) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ }", rangesA);
+ ASSERT_RANGE("{ [1,4) [5,7) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_CompleteOverlap1)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(1, 3);
+ rangesA->add(4, 5);
+ rangesA->add(6, 9);
+
+ rangesB->add(0, 10);
+
+ ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
+ ASSERT_RANGE("{ [0,10) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
+ ASSERT_RANGE("{ [0,10) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_CompleteOverlap2)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(1, 3);
+ rangesA->add(4, 5);
+ rangesA->add(6, 9);
+
+ rangesB->add(1, 9);
+
+ ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
+ ASSERT_RANGE("{ [1,9) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [1,3) [4,5) [6,9) }", rangesA);
+ ASSERT_RANGE("{ [1,9) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_Gaps1)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(0, 2);
+ rangesA->add(4, 6);
+
+ rangesB->add(1, 5);
+
+ ASSERT_RANGE("{ [0,2) [4,6) }", rangesA);
+ ASSERT_RANGE("{ [1,5) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [1,2) [4,5) }", rangesA);
+ ASSERT_RANGE("{ [1,5) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_Gaps2)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(0, 2);
+ rangesA->add(4, 6);
+ rangesA->add(8, 10);
+
+ rangesB->add(1, 9);
+
+ ASSERT_RANGE("{ [0,2) [4,6) [8,10) }", rangesA);
+ ASSERT_RANGE("{ [1,9) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [1,2) [4,6) [8,9) }", rangesA);
+ ASSERT_RANGE("{ [1,9) }", rangesB);
+}
+
+TEST(TimeRanges, IntersectWith_Gaps3)
+{
+ RefPtr<TimeRanges> rangesA = TimeRanges::create();
+ RefPtr<TimeRanges> rangesB = TimeRanges::create();
+
+ rangesA->add(0, 2);
+ rangesA->add(4, 7);
+ rangesA->add(8, 10);
+
+ rangesB->add(1, 5);
+ rangesB->add(6, 9);
+
+ ASSERT_RANGE("{ [0,2) [4,7) [8,10) }", rangesA);
+ ASSERT_RANGE("{ [1,5) [6,9) }", rangesB);
+
+ rangesA->intersectWith(*rangesB.get());
+
+ ASSERT_RANGE("{ [1,2) [4,5) [6,7) [8,9) }", rangesA);
+ ASSERT_RANGE("{ [1,5) [6,9) }", rangesB);
+}
+
+}
+
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp b/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp
new file mode 100644
index 000000000..4a7f53977
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebCore/URL.cpp
@@ -0,0 +1,82 @@
+/*
+ * Copyright (C) 2011, 2012 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. 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 INC. 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 "WTFStringUtilities.h"
+#include <WebCore/URL.h>
+#include <wtf/MainThread.h>
+
+using namespace WebCore;
+
+namespace TestWebKitAPI {
+
+class URLTest : public testing::Test {
+public:
+ virtual void SetUp()
+ {
+ WTF::initializeMainThread();
+ }
+};
+
+TEST_F(URLTest, URLConstructorDefault)
+{
+ URL kurl;
+
+ EXPECT_TRUE(kurl.isEmpty());
+ EXPECT_TRUE(kurl.isNull());
+ EXPECT_FALSE(kurl.isValid());
+}
+
+TEST_F(URLTest, URLConstructorConstChar)
+{
+ URL kurl(ParsedURLString, "http://username:password@www.example.com:8080/index.html?var=val#fragment");
+
+ EXPECT_FALSE(kurl.isEmpty());
+ EXPECT_FALSE(kurl.isNull());
+ EXPECT_TRUE(kurl.isValid());
+
+ EXPECT_EQ(String("http"), kurl.protocol());
+ EXPECT_EQ(String("www.example.com"), kurl.host());
+ EXPECT_TRUE(kurl.hasPort());
+ EXPECT_EQ(8080, kurl.port());
+ EXPECT_EQ(String("username"), kurl.user());
+ EXPECT_EQ(String("password"), kurl.pass());
+ EXPECT_EQ(String("/index.html"), kurl.path());
+ EXPECT_EQ(String("index.html"), kurl.lastPathComponent());
+ EXPECT_EQ(String("var=val"), kurl.query());
+ EXPECT_TRUE(kurl.hasFragmentIdentifier());
+ EXPECT_EQ(String("fragment"), kurl.fragmentIdentifier());
+}
+
+TEST_F(URLTest, URLDataURIStringSharing)
+{
+ URL baseURL(ParsedURLString, "http://www.webkit.org/");
+ String threeApples = "data:text/plain;charset=utf-8;base64,76O/76O/76O/";
+
+ URL url(baseURL, threeApples);
+ EXPECT_EQ(threeApples.impl(), url.string().impl());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp b/Tools/TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp
deleted file mode 100644
index 61b87cdad..000000000
--- a/Tools/TestWebKitAPI/Tests/WebCore/win/BitmapImage.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2012 peavo@outlook.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 INC. 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 INC. 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 <WebCore/BitmapImage.h>
-
-using namespace WebCore;
-
-namespace TestWebKitAPI {
-
-// Test that there is no crash when BitmapImage::getHBITMAPOfSize() is called
-// for an image with empty frames (BitmapImage::frameAtIndex(i) return null), WebKit Bug 102689.
-
-class BitmapImageTest : public WebCore::BitmapImage {
-public:
- BitmapImageTest()
- {
- m_frames.grow(1);
- }
-
- virtual size_t frameCount()
- {
- return 1;
- }
-};
-
-TEST(WebCore, BitmapImageEmptyFrameTest)
-{
- SIZE sz = {16, 16};
- RefPtr<BitmapImageTest> bitmapImageTest = adoptRef(new BitmapImageTest);
- int bits[256];
- HBITMAP hBitmap = CreateBitmap(16, 16, 1, 32, bits);
- bitmapImageTest->getHBITMAPOfSize(hBitmap, &sz);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp b/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp
deleted file mode 100644
index 3e6630f98..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit/win/WebViewDestruction.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "HostWindow.h"
-#include "Test.h"
-#include <WebCore/COMPtr.h>
-#include <WebKit/WebKit.h>
-#include <WebKit/WebKitCOMAPI.h>
-#include <wtf/PassOwnPtr.h>
-
-namespace TestWebKitAPI {
-
-template <typename T>
-static HRESULT WebKitCreateInstance(REFCLSID clsid, T** object)
-{
- return WebKitCreateInstance(clsid, 0, __uuidof(T), reinterpret_cast<void**>(object));
-}
-
-class WebViewDestruction : public ::testing::Test {
-protected:
- virtual void SetUp();
- virtual void TearDown();
-
- static int webViewCount();
- static void runMessagePump(DWORD timeoutMilliseconds);
-
- COMPtr<IWebView> m_webView;
-};
-
-class WebViewDestructionWithHostWindow : public WebViewDestruction {
-protected:
- virtual void SetUp();
- virtual void TearDown();
-
- HostWindow m_window;
- HWND m_viewWindow;
-};
-
-void WebViewDestruction::SetUp()
-{
- EXPECT_HRESULT_SUCCEEDED(WebKitCreateInstance(__uuidof(WebView), &m_webView));
-}
-
-int WebViewDestruction::webViewCount()
-{
- COMPtr<IWebKitStatistics> statistics;
- if (FAILED(WebKitCreateInstance(__uuidof(WebKitStatistics), &statistics)))
- return -1;
- int count;
- if (FAILED(statistics->webViewCount(&count)))
- return -1;
- return count;
-}
-
-void WebViewDestructionWithHostWindow::SetUp()
-{
- WebViewDestruction::SetUp();
-
- EXPECT_TRUE(m_window.initialize());
- EXPECT_HRESULT_SUCCEEDED(m_webView->setHostWindow(reinterpret_cast<OLE_HANDLE>(m_window.window())));
- EXPECT_HRESULT_SUCCEEDED(m_webView->initWithFrame(m_window.clientRect(), 0, 0));
-
- COMPtr<IWebViewPrivate> viewPrivate(Query, m_webView);
- ASSERT_NOT_NULL(viewPrivate);
- EXPECT_HRESULT_SUCCEEDED(viewPrivate->viewWindow(reinterpret_cast<OLE_HANDLE*>(&m_viewWindow)));
- EXPECT_TRUE(::IsWindow(m_viewWindow));
-}
-
-void WebViewDestruction::runMessagePump(DWORD timeoutMilliseconds)
-{
- // FIXME: We should move this functionality to PlatformUtilities at some point.
-
- DWORD startTickCount = ::GetTickCount();
- MSG msg;
- BOOL result;
- while ((result = ::PeekMessageW(&msg, 0, 0, 0, PM_REMOVE)) && ::GetTickCount() - startTickCount <= timeoutMilliseconds) {
- if (result == -1)
- break;
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
-}
-
-void WebViewDestruction::TearDown()
-{
- // Allow window messages to be processed, because in some cases that would trigger a crash (e.g., <http://webkit.org/b/32827>).
- runMessagePump(50);
-
- // We haven't crashed. Release the WebView and ensure that its view window has been destroyed and the WebView doesn't leak.
- int currentWebViewCount = webViewCount();
- EXPECT_GT(currentWebViewCount, 0);
-
- m_webView = 0;
-
- EXPECT_EQ(webViewCount(), currentWebViewCount - 1);
-}
-
-void WebViewDestructionWithHostWindow::TearDown()
-{
- WebViewDestruction::TearDown();
-
- EXPECT_FALSE(::IsWindow(m_viewWindow));
-}
-
-// Tests that releasing a WebView without calling IWebView::initWithFrame works.
-TEST_F(WebViewDestruction, NoInitWithFrame)
-{
-}
-
-TEST_F(WebViewDestruction, CloseWithoutInitWithFrame)
-{
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
-}
-
-// Tests that calling IWebView::close without calling DestroyWindow, then releasing a WebView doesn't crash. <http://webkit.org/b/32827>
-TEST_F(WebViewDestructionWithHostWindow, CloseWithoutDestroyViewWindow)
-{
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
-}
-
-TEST_F(WebViewDestructionWithHostWindow, DestroyViewWindowWithoutClose)
-{
- ::DestroyWindow(m_viewWindow);
-}
-
-TEST_F(WebViewDestructionWithHostWindow, CloseThenDestroyViewWindow)
-{
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
- ::DestroyWindow(m_viewWindow);
-}
-
-TEST_F(WebViewDestructionWithHostWindow, DestroyViewWindowThenClose)
-{
- ::DestroyWindow(m_viewWindow);
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
-}
-
-TEST_F(WebViewDestructionWithHostWindow, DestroyHostWindow)
-{
- ::DestroyWindow(m_window.window());
-}
-
-TEST_F(WebViewDestructionWithHostWindow, DestroyHostWindowThenClose)
-{
- ::DestroyWindow(m_window.window());
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
-}
-
-TEST_F(WebViewDestructionWithHostWindow, CloseThenDestroyHostWindow)
-{
- EXPECT_HRESULT_SUCCEEDED(m_webView->close());
- ::DestroyWindow(m_window.window());
-}
-
-} // namespace WebKitAPITest
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp
index 42939dd2d..5503edd9e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/AboutBlankLoad.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
@@ -43,10 +46,13 @@ TEST(WebKit2, AboutBlankLoad)
WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0 , sizeof(loaderClient));
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKPageLoadURL(webView.page(), adoptWK(WKURLCreateWithUTF8CString("about:blank")).get());
@@ -54,3 +60,5 @@ TEST(WebKit2, AboutBlankLoad)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/mac/Ahem.ttf b/Tools/TestWebKitAPI/Tests/WebKit2/Ahem.ttf
index ac81cb031..ac81cb031 100644
--- a/Tools/TestWebKitAPI/Tests/mac/Ahem.ttf
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/Ahem.ttf
Binary files differ
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp
index e3e5d0cc6..a1d09f2cd 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContextPrivate.h>
+#include <WebKit/WKContextPrivate.h>
namespace TestWebKitAPI {
@@ -45,11 +48,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messag
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, CanHandleRequest)
@@ -69,3 +74,5 @@ TEST(WebKit2, CanHandleRequest)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp
index 5f66b537a..590615e8c 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CanHandleRequest_Bundle.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
+#include <WebKit/WKBundlePage.h>
namespace TestWebKitAPI {
@@ -65,3 +68,5 @@ void CanHandleRequestTest::didReceiveMessage(WKBundleRef bundle, WKStringRef mes
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp
new file mode 100644
index 000000000..b5e4a901b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CloseFromWithinCreatePage.cpp
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+
+namespace TestWebKitAPI {
+
+static bool testDone;
+static std::unique_ptr<PlatformWebView> openedWebView;
+
+static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, WKSecurityOriginRef, const void* clientInfo)
+{
+ // FIXME: Check that the alert text matches the storage.
+ testDone = true;
+}
+
+static WKPageRef createNewPage(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo)
+{
+ EXPECT_TRUE(openedWebView == nullptr);
+
+ openedWebView = std::make_unique<PlatformWebView>(page);
+
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 5;
+ uiClient.runJavaScriptAlert = runJavaScriptAlert;
+ WKPageSetPageUIClient(openedWebView->page(), &uiClient.base);
+
+ WKPageClose(page);
+
+ WKRetain(openedWebView->page());
+ return openedWebView->page();
+}
+
+TEST(WebKit2, CloseFromWithinCreatePage)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ PlatformWebView webView(context.get());
+
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 5;
+ uiClient.createNewPage = createNewPage;
+ uiClient.runJavaScriptAlert = runJavaScriptAlert;
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("close-from-within-create-page", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&testDone);
+
+ openedWebView = nullptr;
+}
+
+}
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CloseThenTerminate.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CloseThenTerminate.cpp
index 09230bb57..71239e4f0 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/CloseThenTerminate.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CloseThenTerminate.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
@@ -44,10 +47,13 @@ TEST(WebKit2, CloseThenTerminate)
WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0 , sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -59,3 +65,5 @@ TEST(WebKit2, CloseThenTerminate)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp
index df5fb2eb0..d231e0e75 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CookieManager.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKCookieManager.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKCookieManager.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -72,12 +75,13 @@ TEST(WebKit2, CookieManager)
wkContext.adopt(WKContextCreate());
PlatformWebView webView(wkContext.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKPageLoadURL(webView.page(), adoptWK(WKURLCreateWithUTF8CString("about:blank")).get());
@@ -85,3 +89,5 @@ TEST(WebKit2, CookieManager)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp
new file mode 100644
index 000000000..ef9625b99
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2013 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 HOLDERS 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 "PlatformUtilities.h"
+#include "Test.h"
+
+#include <WebKit/WKContext.h>
+#include <WebKit/WKPage.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKView.h>
+
+namespace TestWebKitAPI {
+
+static bool didWebProcessCrash = false;
+static bool didWebProcessRelaunch = false;
+static bool didFinishLoad = false;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void webProcessCrashed(WKViewRef view, WKURLRef, const void*)
+{
+ // WebProcess crashed, so at this point the view should not be active.
+ ASSERT_FALSE(WKViewIsActive(view));
+ didWebProcessCrash = true;
+}
+
+static void webProcessRelaunched(WKViewRef view, const void*)
+{
+ // WebProcess just relaunched, so at this point the view should not be active.
+ ASSERT_FALSE(WKViewIsActive(view));
+
+ didWebProcessRelaunch = true;
+}
+
+TEST(WebKit2, WKViewIsActiveSetIsActive)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ WKRetainPtr<WKViewRef> view = adoptWK(WKViewCreate(context.get(), 0));
+
+ WKViewInitialize(view.get());
+
+ // At this point we should have an active view.
+ ASSERT_TRUE(WKViewIsActive(view.get()));
+
+ // Now we are going to play with its active state a few times.
+ WKViewSetIsActive(view.get(), true);
+ ASSERT_TRUE(WKViewIsActive(view.get()));
+
+ WKViewSetIsActive(view.get(), false);
+ ASSERT_FALSE(WKViewIsActive(view.get()));
+
+ WKViewSetIsActive(view.get(), false);
+ ASSERT_FALSE(WKViewIsActive(view.get()));
+
+ WKViewSetIsActive(view.get(), true);
+ ASSERT_TRUE(WKViewIsActive(view.get()));
+}
+
+TEST(WebKit2, WKViewIsActive)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("WKViewIsActiveSetIsActiveTest"));
+ WKRetainPtr<WKViewRef> view = adoptWK(WKViewCreate(context.get(), 0));
+
+ WKViewClientV0 viewClient;
+ memset(&viewClient, 0, sizeof(WKViewClientV0));
+ viewClient.base.version = 0;
+ viewClient.webProcessCrashed = webProcessCrashed;
+ viewClient.webProcessDidRelaunch = webProcessRelaunched;
+ WKViewSetViewClient(view.get(), &viewClient.base);
+
+ WKViewInitialize(view.get());
+
+ // At this point we should have an active view.
+ ASSERT_TRUE(WKViewIsActive(view.get()));
+
+ WKPageLoaderClientV3 pageLoaderClient;
+ memset(&pageLoaderClient, 0, sizeof(WKPageLoaderClient));
+ pageLoaderClient.base.version = 3;
+ pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+ WKPageSetPageLoaderClient(WKViewGetPage(view.get()), &pageLoaderClient.base);
+
+ const WKSize size = WKSizeMake(100, 100);
+ WKViewSetSize(view.get(), size);
+
+ didFinishLoad = false;
+ didWebProcessCrash = false;
+ didWebProcessRelaunch = false;
+
+ WKRetainPtr<WKURLRef> simpleUrl = adoptWK(Util::createURLForResource("../WebKit/simple", "html"));
+ WKPageLoadURL(WKViewGetPage(view.get()), simpleUrl.get());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("Crash").get(), 0);
+ Util::run(&didWebProcessCrash);
+ ASSERT_TRUE(didWebProcessCrash);
+
+ WKPageLoadURL(WKViewGetPage(view.get()), simpleUrl.get());
+ Util::run(&didFinishLoad);
+
+ ASSERT_TRUE(didWebProcessRelaunch);
+ ASSERT_TRUE(didFinishLoad);
+}
+
+} // TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp
new file mode 100644
index 000000000..a3cb1b6de
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewIsActiveSetIsActive_Bundle.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2013 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 HOLDERS 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 "InjectedBundleTest.h"
+#include <WebKit/WKRetainPtr.h>
+
+#include <cstdlib>
+
+namespace TestWebKitAPI {
+
+class WKViewIsActiveSetIsActiveTest : public InjectedBundleTest {
+public:
+ WKViewIsActiveSetIsActiveTest(const std::string& identifier)
+ : InjectedBundleTest(identifier)
+ {
+ }
+
+ virtual void didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef messageBody)
+ {
+ if (!WKStringIsEqualToUTF8CString(messageName, "Crash"))
+ return;
+ abort();
+ }
+};
+
+static InjectedBundleTest::Register<WKViewIsActiveSetIsActiveTest> registrar("WKViewIsActiveSetIsActiveTest");
+
+} // namespace TestWebKitAPI
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp
new file mode 100644
index 000000000..5c556ecee
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewRestoreZoomAndScrollBackForward.cpp
@@ -0,0 +1,129 @@
+/*
+ * Copyright (C) 2012-2013 Nokia Corporation and/or its subsidiary(-ies).
+ * Copyright (C) 2011 Samsung Electronics. 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 COPYRIGHT HOLDERS ``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 HOLDERS 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 "ewk_view_private.h"
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include <WebKit/WKContext.h>
+#include <WebKit/WKRetainPtr.h>
+#include "Test.h"
+
+namespace TestWebKitAPI {
+
+static bool finishedLoad = false;
+static bool scroll = false;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ finishedLoad = true;
+}
+
+static void didChangeContentsPosition(WKViewRef, WKPoint p, const void*)
+{
+ scroll = true;
+}
+
+TEST(WebKit2, WKViewRestoreZoomAndScrollBackForward)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ PlatformWebView webView(context.get());
+ WKRetainPtr<WKViewRef> view = EWKViewGetWKView(webView.platformView());
+
+ WKPageSetUseFixedLayout(webView.page(), true);
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKViewClientV0 viewClient;
+ memset(&viewClient, 0, sizeof(viewClient));
+ viewClient.base.version = 0;
+ viewClient.didChangeContentsPosition = didChangeContentsPosition;
+ WKViewSetViewClient(view.get(), &viewClient.base);
+
+ // Load first page.
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("CoordinatedGraphics/backforward1", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+ Util::run(&finishedLoad);
+
+ // Change scale and position on first page.
+ float firstPageScale = 2.0;
+ WKPoint firstPageScrollPosition = WKPointMake(10, 350); // Scroll position of first page.
+ WKViewSetContentPosition(view.get(), firstPageScrollPosition);
+ WKViewSetContentScaleFactor(view.get(), firstPageScale);
+ float currentPageScale = WKViewGetContentScaleFactor(view.get());
+ WKPoint currentPagePosition = WKViewGetContentPosition(view.get());
+ Util::run(&scroll);
+ EXPECT_EQ(firstPageScale, currentPageScale);
+ EXPECT_EQ(firstPageScrollPosition.x, currentPagePosition.x);
+ EXPECT_EQ(firstPageScrollPosition.y, currentPagePosition.y);
+
+ // Load second page.
+ finishedLoad = false;
+ url = adoptWK(Util::createURLForResource("CoordinatedGraphics/backforward2", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+ Util::run(&finishedLoad);
+
+ // Check if second page scale and position is correct.
+ currentPageScale = WKViewGetContentScaleFactor(view.get());
+ currentPagePosition = WKViewGetContentPosition(view.get());
+ EXPECT_EQ(1, currentPageScale);
+ EXPECT_EQ(0, currentPagePosition.x);
+ EXPECT_EQ(0, currentPagePosition.y);
+
+ // Go back first page.
+ scroll = false;
+ finishedLoad = false;
+ WKPageGoBack(webView.page());
+ Util::run(&finishedLoad);
+ Util::run(&scroll);
+
+ // Check if scroll position and scale of first page are restored correctly.
+ currentPageScale = WKViewGetContentScaleFactor(view.get());
+ currentPagePosition = WKViewGetContentPosition(view.get());
+ EXPECT_EQ(firstPageScale, currentPageScale);
+ EXPECT_EQ(firstPageScrollPosition.x, currentPagePosition.x);
+ EXPECT_EQ(firstPageScrollPosition.y, currentPagePosition.y);
+
+ // Go to second page again.
+ WKPageGoForward(webView.page());
+ scroll = false;
+ finishedLoad = false;
+ Util::run(&finishedLoad);
+
+ // Check if the scroll position and scale of second page are restored correctly.
+ currentPageScale = WKViewGetContentScaleFactor(view.get());
+ currentPagePosition = WKViewGetContentPosition(view.get());
+ EXPECT_EQ(1, currentPageScale);
+ EXPECT_EQ(0, currentPagePosition.x);
+ EXPECT_EQ(0, currentPagePosition.y);
+}
+
+} // TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp
index de80f4437..2445fd71f 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/WKViewUserViewportToContents.cpp
@@ -25,12 +25,12 @@
#include "config.h"
-#include "WebKit2/WKView.h"
-#include "WebKit2/WKRetainPtr.h"
+#include "WebKit/WKView.h"
+#include "WebKit/WKRetainPtr.h"
namespace TestWebKitAPI {
-TEST(WebKit2, WKViewUserViewportToContents)
+TEST(WebKit2, DISABLED_WKViewUserViewportToContents)
{
// This test creates a WKView and uses the WKViewUserViewportToContents
// function to convert viewport coordinates to contents (page) coordinates.
@@ -38,9 +38,12 @@ TEST(WebKit2, WKViewUserViewportToContents)
// conversion math is right.
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- WKRetainPtr<WKViewRef> webView(AdoptWK, WKViewCreate(context.get(), 0));
+ WKRetainPtr<WKPageConfigurationRef> configuration(AdoptWK, WKPageConfigurationCreate());
+ WKPageConfigurationSetContext(configuration.get(), context.get());
- WKViewInitialize(webView.get());
+ WKRetainPtr<WKViewRef> webView(AdoptWK, WKViewCreate(context.get(), configuration.get()));
+
+ WKViewSetIsActive(webView.get(), true);
WKPageSetUseFixedLayout(WKViewGetPage(webView.get()), false);
WKPoint out;
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward1.html b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward1.html
new file mode 100644
index 000000000..98c1c107c
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward1.html
@@ -0,0 +1,5 @@
+<html>
+<body style="width:100%; height:100%">
+ <div style="position: absolute; top: 0; left: 0; width: 900px; height: 1200px;"></div>
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward2.html b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward2.html
new file mode 100644
index 000000000..3806b9d32
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/CoordinatedGraphics/backforward2.html
@@ -0,0 +1 @@
+<body style="width:100%; height:100%"/>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp
index 7ccddaea2..c336652ac 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
#include <wtf/Vector.h>
namespace TestWebKitAPI {
@@ -83,12 +86,13 @@ TEST(WebKit2, DISABLED_DOMWindowExtensionBasic)
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("DOMWindowExtensionBasic", pageGroup.get()));
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
// The default cache model has a capacity of 0, so it is necessary to switch to a cache
// model that actually allows for a page cache.
@@ -132,3 +136,5 @@ TEST(WebKit2, DISABLED_DOMWindowExtensionBasic)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
index 5b1296f47..9bdc683ba 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionBasic_Bundle.cpp
@@ -24,14 +24,17 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
-#include <WebKit2/WKBundleDOMWindowExtension.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePageGroup.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundleDOMWindowExtension.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePageGroup.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <wtf/HashMap.h>
#include <assert.h>
@@ -152,18 +155,18 @@ void DOMWindowExtensionBasic::didCreatePage(WKBundleRef bundle, WKBundlePageRef
{
m_bundle = bundle;
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV1 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 1;
- pageLoaderClient.clientInfo = this;
+ pageLoaderClient.base.version = 1;
+ pageLoaderClient.base.clientInfo = this;
pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrameCallback;
pageLoaderClient.globalObjectIsAvailableForFrame = globalObjectIsAvailableForFrameCallback;
pageLoaderClient.willDisconnectDOMWindowExtensionFromGlobalObject = willDisconnectDOMWindowExtensionFromGlobalObjectCallback;
pageLoaderClient.didReconnectDOMWindowExtensionToGlobalObject = didReconnectDOMWindowExtensionToGlobalObjectCallback;
pageLoaderClient.willDestroyGlobalObjectForDOMWindowExtension = willDestroyGlobalObjectForDOMWindowExtensionCallback;
- WKBundlePageSetPageLoaderClient(page, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
}
void DOMWindowExtensionBasic::willDestroyPage(WKBundleRef, WKBundlePageRef)
@@ -257,3 +260,5 @@ static void willDestroyGlobalObjectForDOMWindowExtensionCallback(WKBundlePageRef
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp
index ac04012ca..56a069fb9 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
@@ -84,12 +87,13 @@ TEST(WebKit2, DISABLED_DOMWindowExtensionNoCache)
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("DOMWindowExtensionNoCache", pageGroup.get()));
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV1 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = kWKContextInjectedBundleClientCurrentVersion;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 1;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
// Disable the page cache.
WKContextSetCacheModel(context.get(), kWKCacheModelDocumentViewer);
@@ -131,3 +135,5 @@ TEST(WebKit2, DISABLED_DOMWindowExtensionNoCache)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
index f563b67c6..e48dadd1e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DOMWindowExtensionNoCache_Bundle.cpp
@@ -24,14 +24,17 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
-#include <WebKit2/WKBundleDOMWindowExtension.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePageGroup.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundleDOMWindowExtension.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePageGroup.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <wtf/HashMap.h>
#include <assert.h>
@@ -159,18 +162,18 @@ void DOMWindowExtensionNoCache::didCreatePage(WKBundleRef bundle, WKBundlePageRe
{
m_bundle = bundle;
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV7 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = kWKBundlePageLoaderClientCurrentVersion;
- pageLoaderClient.clientInfo = this;
+ pageLoaderClient.base.version = 7;
+ pageLoaderClient.base.clientInfo = this;
pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrameCallback;
pageLoaderClient.globalObjectIsAvailableForFrame = globalObjectIsAvailableForFrameCallback;
pageLoaderClient.willDisconnectDOMWindowExtensionFromGlobalObject = willDisconnectDOMWindowExtensionFromGlobalObjectCallback;
pageLoaderClient.didReconnectDOMWindowExtensionToGlobalObject = didReconnectDOMWindowExtensionToGlobalObjectCallback;
pageLoaderClient.willDestroyGlobalObjectForDOMWindowExtension = willDestroyGlobalObjectForDOMWindowExtensionCallback;
- WKBundlePageSetPageLoaderClient(page, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
}
void DOMWindowExtensionNoCache::willDestroyPage(WKBundleRef, WKBundlePageRef)
@@ -276,3 +279,5 @@ static void willDestroyGlobalObjectForDOMWindowExtensionCallback(WKBundlePageRef
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls.cpp
index 4e6b4fe1d..a930f5346 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
@@ -63,11 +66,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messag
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, DidAssociateFormControls)
@@ -81,3 +86,5 @@ TEST(WebKit2, DidAssociateFormControls)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
index b742650af..5dcd91da8 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DidAssociateFormControls_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundlePage.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundlePage.h>
namespace TestWebKitAPI {
@@ -36,7 +39,7 @@ class DidAssociateFormControlsTest : public InjectedBundleTest {
public:
DidAssociateFormControlsTest(const std::string& identifier);
- virtual void didCreatePage(WKBundleRef, WKBundlePageRef) OVERRIDE;
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef) override;
};
static InjectedBundleTest::Register<DidAssociateFormControlsTest> registrar("DidAssociateFormControlsTest");
@@ -50,11 +53,11 @@ static void didAssociateFormControls(WKBundlePageRef page, WKArrayRef elementHan
{
WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate());
- WKDictionaryAddItem(messageBody.get(), Util::toWK("Page").get(), page);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("Page").get(), page);
WKRetainPtr<WKUInt64Ref> numberOfElements = adoptWK(WKUInt64Create(WKArrayGetSize(elementHandles)));
- WKDictionaryAddItem(messageBody.get(), Util::toWK("NumberOfControls").get(), numberOfElements.get());
+ WKDictionarySetItem(messageBody.get(), Util::toWK("NumberOfControls").get(), numberOfElements.get());
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("DidReceiveDidAssociateFormControls").get(), messageBody.get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("DidReceiveDidAssociateFormControls").get(), messageBody.get());
}
DidAssociateFormControlsTest::DidAssociateFormControlsTest(const std::string& identifier)
@@ -64,15 +67,17 @@ DidAssociateFormControlsTest::DidAssociateFormControlsTest(const std::string& id
void DidAssociateFormControlsTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageFormClient formClient;
+ WKBundlePageFormClientV2 formClient;
memset(&formClient, 0, sizeof(formClient));
- formClient.version = 2;
- formClient.clientInfo = this;
+ formClient.base.version = 2;
+ formClient.base.clientInfo = this;
formClient.shouldNotifyOnFormChanges = shouldNotifyOnFormChanges;
formClient.didAssociateFormControls = didAssociateFormControls;
- WKBundlePageSetFormClient(page, &formClient);
+ WKBundlePageSetFormClient(page, &formClient.base);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DidNotHandleKeyDown.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DidNotHandleKeyDown.cpp
new file mode 100644
index 000000000..b5f4fb863
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DidNotHandleKeyDown.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "JavaScriptTest.h"
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool didFinishTest;
+static bool didNotHandleKeyDownEvent;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+}
+
+static void didNotHandleKeyEventCallback(WKPageRef, WKNativeEventPtr event, const void*)
+{
+ if (Util::isKeyDown(event))
+ didNotHandleKeyDownEvent = true;
+ didFinishTest = true;
+}
+
+TEST(WebKit2, DidNotHandleKeyDown)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextWithInjectedBundle());
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPageUIClientV0 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 0;
+ uiClient.didNotHandleKeyEvent = didNotHandleKeyEventCallback;
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ webView.simulateSpacebarKeyPress();
+
+ Util::run(&didFinishTest);
+ EXPECT_TRUE(didNotHandleKeyDownEvent);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp
index 7559da28d..21bca74dd 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -50,12 +53,13 @@ TEST(WebKit2, DocumentStartUserScriptAlertCrashTest)
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("DocumentStartUserScriptAlertCrashTest", pageGroup.get()));
PlatformWebView webView(context.get(), pageGroup.get());
- WKPageUIClient uiClient;
+ WKPageUIClientV0 uiClient;
memset(&uiClient, 0, sizeof(uiClient));
- uiClient.version = 0;
- uiClient.clientInfo = 0;
+
+ uiClient.base.version = 0;
uiClient.runJavaScriptAlert = runJavaScriptAlert;
- WKPageSetPageUIClient(webView.page(), &uiClient);
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -64,3 +68,5 @@ TEST(WebKit2, DocumentStartUserScriptAlertCrashTest)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
index 30805f759..18b9f1b48 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DocumentStartUserScriptAlertCrash_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
-#include <WebKit2/WKBundlePageGroup.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePageGroup.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <assert.h>
namespace TestWebKitAPI {
@@ -53,3 +56,5 @@ public:
static InjectedBundleTest::Register<DocumentStartUserScriptAlertCrashTest> registrar("DocumentStartUserScriptAlertCrashTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp
index f360646dd..eac36d87a 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/DownloadDecideDestinationCrash.cpp
@@ -24,15 +24,18 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKDownload.h>
+#include <WebKit/WKDownload.h>
namespace TestWebKitAPI {
static bool didDecideDestination;
-static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*)
+static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKFrameRef, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*)
{
WKFramePolicyListenerDownload(listener);
}
@@ -41,25 +44,29 @@ static WKStringRef decideDestinationWithSuggestedFilename(WKContextRef, WKDownlo
{
didDecideDestination = true;
WKDownloadCancel(download);
- return Util::toWK("does not matter").leakRef();
+ return Util::toWK("/tmp/WebKitAPITest/DownloadDecideDestinationCrash").leakRef();
}
static void setContextDownloadClient(WKContextRef context)
{
- WKContextDownloadClient client;
+ WKContextDownloadClientV0 client;
memset(&client, 0, sizeof(client));
+
+ client.base.version = 0;
client.decideDestinationWithSuggestedFilename = decideDestinationWithSuggestedFilename;
- WKContextSetDownloadClient(context, &client);
+ WKContextSetDownloadClient(context, &client.base);
}
static void setPagePolicyClient(WKPageRef page)
{
- WKPagePolicyClient policyClient;
+ WKPagePolicyClientV1 policyClient;
memset(&policyClient, 0, sizeof(policyClient));
+
+ policyClient.base.version = 1;
policyClient.decidePolicyForNavigationAction = decidePolicyForNavigationAction;
- WKPageSetPagePolicyClient(page, &policyClient);
+ WKPageSetPagePolicyClient(page, &policyClient.base);
}
TEST(WebKit2, DownloadDecideDestinationCrash)
@@ -79,3 +86,5 @@ TEST(WebKit2, DownloadDecideDestinationCrash)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp
new file mode 100644
index 000000000..07a81f646
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/EphemeralSessionPushStateNoHistoryCallback.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool testDone;
+
+static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void* clientInfo)
+{
+ // This should never be called when navigating in Private Browsing.
+ FAIL();
+}
+
+static void didSameDocumentNavigationForFrame(WKPageRef page, WKFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef userData, const void *clientInfo)
+{
+ testDone = true;
+}
+
+TEST(WebKit2, EphemeralSessionPushStateNoHistoryCallback)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ WKContextHistoryClientV0 historyClient;
+ memset(&historyClient, 0, sizeof(historyClient));
+
+ historyClient.base.version = 0;
+ historyClient.didNavigateWithNavigationData = didNavigateWithNavigationData;
+
+ WKContextSetHistoryClient(context.get(), &historyClient.base);
+
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV0 pageLoaderClient;
+ memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
+
+ pageLoaderClient.base.version = 0;
+ pageLoaderClient.didSameDocumentNavigationForFrame = didSameDocumentNavigationForFrame;
+
+ WKPageSetPageLoaderClient(webView.page(), &pageLoaderClient.base);
+
+ WKSessionRef session = WKSessionCreate(true);
+ WKPageSetSession(webView.page(), session);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("push-state", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&testDone);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp
index 90ad04fd1..a6b5a4dd5 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/EvaluateJavaScript.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKSerializedScriptValue.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSerializedScriptValue.h>
namespace TestWebKitAPI {
@@ -58,3 +61,5 @@ TEST(WebKit2, EvaluateJavaScriptThatThrowsAnException)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp
index 99b1b9744..c12b5366b 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/FailedLoad.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -50,13 +53,13 @@ TEST(WebKit2, FailedLoad)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+ loaderClient.base.version = 0;
loaderClient.didFailProvisionalLoadWithErrorForFrame = didFailProvisionalLoadWithErrorForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::URLForNonExistentResource());
WKPageLoadURL(webView.page(), url.get());
@@ -65,3 +68,5 @@ TEST(WebKit2, FailedLoad)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp
index 2717c1355..2e2189906 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/Find.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -51,19 +54,21 @@ TEST(WebKit2, Find)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
- WKPageFindClient findClient;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPageFindClientV0 findClient;
memset(&findClient, 0, sizeof(findClient));
- findClient.version = 0;
+ findClient.base.version = 0;
findClient.didCountStringMatches = didCountStringMatches;
- WKPageSetPageFindClient(webView.page(), &findClient);
+
+ WKPageSetPageFindClient(webView.page(), &findClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("find", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -77,3 +82,5 @@ TEST(WebKit2, Find)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm b/Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm
deleted file mode 100644
index 4a5734f58..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/FindMatches.mm
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#import <WebKit/WebDocumentPrivate.h>
-#import <WebKit/DOMPrivate.h>
-#include <WebKit2/WKImage.h>
-#import <wtf/RetainPtr.h>
-
-@interface FindMatchesWK1FrameLoadDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoadWK1;
-
-@implementation FindMatchesWK1FrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoadWK1 = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-static bool didFinishLoad = false;
-static bool didCallFindStringMatches = false;
-static bool didCallGetImage = false;
-static WKFindOptions findOptions = kWKFindOptionsAtWordStarts;
-
-RetainPtr<WebView> webkit1View;
-
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
-{
- didFinishLoad = true;
-}
-
-static void didFindStringMatches(WKPageRef page, WKStringRef string, WKArrayRef matches, int firstIndex, const void* clientInfo)
-{
- if (WKStringIsEqualToUTF8CString(string, "Hello")) {
- size_t numMatches = WKArrayGetSize(matches);
- EXPECT_EQ(3u, numMatches);
-
- if (findOptions & kWKFindOptionsBackwards)
- EXPECT_EQ(1, firstIndex);
- else
- EXPECT_EQ(2, firstIndex);
-
- for (size_t i = 0; i < numMatches; ++i) {
- WKTypeRef items = WKArrayGetItemAtIndex(matches, i);
- WKTypeID type = WKGetTypeID(items);
- EXPECT_EQ(type, WKArrayGetTypeID());
- WKArrayRef rects = reinterpret_cast<WKArrayRef>(items);
- size_t numRects = WKArrayGetSize(rects);
- EXPECT_EQ(1u, numRects);
- items = WKArrayGetItemAtIndex(rects, 0);
- type = WKGetTypeID(items);
- EXPECT_EQ(type, WKRectGetTypeID());
- WKRect rect = WKRectGetValue(reinterpret_cast<WKRectRef>(items));
- rect = rect;
- }
- } else if (WKStringIsEqualToUTF8CString(string, "crazy")) {
- size_t numMatches = WKArrayGetSize(matches);
- EXPECT_EQ(1u, numMatches);
- EXPECT_EQ(kWKFindResultNoMatchAfterUserSelection, firstIndex);
- }
- didCallFindStringMatches = true;
-}
-
-static void didGetImageForMatchResult(WKPageRef page, WKImageRef image, uint32_t index, const void* clientInfo)
-{
- WKSize size = WKImageGetSize(image);
-
- DOMDocument *document = webkit1View.get().mainFrameDocument;
- DOMRange *range = [document createRange];
- DOMNode *target = [document getElementById:@"target"];
- [range selectNode:target];
- NSImage *expectedImage = [range renderedImageForcingBlackText:YES];
- NSSize expectedSize = [expectedImage size];
- EXPECT_EQ(size.width, expectedSize.width);
- EXPECT_EQ(size.height, expectedSize.height);
- didCallGetImage = true;
-}
-
-TEST(WebKit2, FindMatches)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
-
- WKPageFindMatchesClient findMatchesClient;
- memset(&findMatchesClient, 0, sizeof(findMatchesClient));
-
- findMatchesClient.version = 0;
- findMatchesClient.didFindStringMatches = didFindStringMatches;
- findMatchesClient.didGetImageForMatchResult = didGetImageForMatchResult;
-
- WKPageSetPageFindMatchesClient(webView.page(), &findMatchesClient);
-
- // This HTML file contains 3 occurrences of the word Hello and has the second occurence of the word 'world' selected.
- // It contains 1 occurrence of the word 'crazy' that is before the selected word.
- WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("findRanges", "html"));
- WKPageLoadURL(webView.page(), url.get());
-
- Util::run(&didFinishLoad);
-
- WKRetainPtr<WKStringRef> findString(AdoptWK, WKStringCreateWithUTF8CString("Hello"));
-
- WKPageFindStringMatches(webView.page(), findString.get(), findOptions, 100);
- Util::run(&didCallFindStringMatches);
-
- didCallFindStringMatches = false;
- findOptions |= kWKFindOptionsBackwards;
- WKPageFindStringMatches(webView.page(), findString.get(), findOptions, 100);
- Util::run(&didCallFindStringMatches);
-
- webkit1View = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<FindMatchesWK1FrameLoadDelegate> frameLoadDelegate = adoptNS([FindMatchesWK1FrameLoadDelegate new]);
-
- webkit1View.get().frameLoadDelegate = frameLoadDelegate.get();
- [webkit1View.get().mainFrame loadHTMLString:@"Test search. Hello <span id=\"target\">Hello</span> Hello!" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&didFinishLoadWK1);
-
- WKPageGetImageForFindMatch(webView.page(), 0);
- Util::run(&didCallGetImage);
-
- didCallFindStringMatches = false;
- findOptions &= ~kWKFindOptionsBackwards;
- WKRetainPtr<WKStringRef> findOtherString(AdoptWK, WKStringCreateWithUTF8CString("crazy"));
- WKPageFindStringMatches(webView.page(), findOtherString.get(), findOptions, 100);
- Util::run(&didCallFindStringMatches);
-
- WKPageHideFindUI(webView.page());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp
index 08873f843..6cd63fab4 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ForceRepaint.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -51,12 +54,13 @@ TEST(WebKit2, ForceRepaint)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple-accelerated-compositing", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -66,3 +70,5 @@ TEST(WebKit2, ForceRepaint)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp
index 734986628..2c9c11332 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypeHTML.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -58,15 +61,15 @@ TEST(WebKit2, FrameMIMETypeHTML)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+ loaderClient.base.version = 0;
loaderClient.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame;
loaderClient.didCommitLoadForFrame = didCommitLoadForFrame;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -75,3 +78,5 @@ TEST(WebKit2, FrameMIMETypeHTML)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp
index 46f63dae9..eb3bf38a3 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/FrameMIMETypePNG.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -57,15 +60,15 @@ TEST(WebKit2, FrameMIMETypePNG)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+ loaderClient.base.version = 0;
loaderClient.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame;
loaderClient.didCommitLoadForFrame = didCommitLoadForFrame;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("icon", "png"));
WKPageLoadURL(webView.page(), url.get());
@@ -74,3 +77,5 @@ TEST(WebKit2, FrameMIMETypePNG)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/Geolocation.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/Geolocation.cpp
new file mode 100644
index 000000000..90fd37937
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/Geolocation.cpp
@@ -0,0 +1,356 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKRetainPtr.h>
+#include <string.h>
+#include <vector>
+
+using namespace std;
+
+namespace TestWebKitAPI {
+
+enum class GeolocationEvent {
+ StartUpdating,
+ StopUpdating,
+ EnableHighAccuracy,
+ DisableHighAccuracy
+};
+
+ostream& operator<<(ostream& outputStream, const GeolocationEvent& geolocationEvent)
+{
+ switch (geolocationEvent) {
+ case GeolocationEvent::StartUpdating:
+ outputStream << "GeolocationEvent::StartUpdating";
+ break;
+ case GeolocationEvent::StopUpdating:
+ outputStream << "GeolocationEvent::StopUpdating";
+ break;
+ case GeolocationEvent::EnableHighAccuracy:
+ outputStream << "GeolocationEvent::EnableHighAccuracy";
+ break;
+ case GeolocationEvent::DisableHighAccuracy:
+ outputStream << "GeolocationEvent::DisableHighAccuracy";
+ break;
+ }
+ return outputStream;
+}
+
+struct GeolocationStateTracker {
+ vector<GeolocationEvent> events;
+
+ virtual ~GeolocationStateTracker() { }
+ virtual void eventsChanged() { }
+
+ static void startUpdatingCallback(WKGeolocationManagerRef manager, const void* clientInfo)
+ {
+ GeolocationStateTracker* stateTracker = static_cast<GeolocationStateTracker*>(const_cast<void*>(clientInfo));
+ stateTracker->events.push_back(GeolocationEvent::StartUpdating);
+ stateTracker->eventsChanged();
+
+ WKRetainPtr<WKGeolocationPositionRef> position = adoptWK(WKGeolocationPositionCreate(0, 50.644358, 3.345453, 2.53));
+ WKGeolocationManagerProviderDidChangePosition(manager, position.get());
+ }
+
+ static void stopUpdatingCallback(WKGeolocationManagerRef, const void* clientInfo)
+ {
+ GeolocationStateTracker* stateTracker = static_cast<GeolocationStateTracker*>(const_cast<void*>(clientInfo));
+ stateTracker->events.push_back(GeolocationEvent::StopUpdating);
+ stateTracker->eventsChanged();
+ }
+
+ static void setEnableHighAccuracyCallback(WKGeolocationManagerRef, bool enable, const void* clientInfo)
+ {
+ GeolocationStateTracker* stateTracker = static_cast<GeolocationStateTracker*>(const_cast<void*>(clientInfo));
+ if (enable)
+ stateTracker->events.push_back(GeolocationEvent::EnableHighAccuracy);
+ else
+ stateTracker->events.push_back(GeolocationEvent::DisableHighAccuracy);
+ stateTracker->eventsChanged();
+ }
+};
+
+void decidePolicyForGeolocationPermissionRequestCallBack(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef origin, WKGeolocationPermissionRequestRef permissionRequest, const void* clientInfo)
+{
+ WKGeolocationPermissionRequestAllow(permissionRequest);
+}
+
+void setupGeolocationProvider(WKContextRef context, void *clientInfo)
+{
+ WKGeolocationProviderV1 providerCallback;
+ memset(&providerCallback, 0, sizeof(WKGeolocationProviderV1));
+
+ providerCallback.base.version = 1;
+ providerCallback.base.clientInfo = clientInfo;
+ providerCallback.startUpdating = GeolocationStateTracker::startUpdatingCallback;
+ providerCallback.stopUpdating = GeolocationStateTracker::stopUpdatingCallback;
+ providerCallback.setEnableHighAccuracy = GeolocationStateTracker::setEnableHighAccuracyCallback;
+
+ WKGeolocationManagerSetProvider(WKContextGetGeolocationManager(context), &providerCallback.base);
+}
+
+void setupView(PlatformWebView& webView)
+{
+ WKPageUIClientV2 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 2;
+ uiClient.decidePolicyForGeolocationPermissionRequest = decidePolicyForGeolocationPermissionRequestCallBack;
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+}
+
+// GeolocationBasic.
+struct GeolocationBasicStateTracker : GeolocationStateTracker {
+ bool finished;
+
+ GeolocationBasicStateTracker() : finished(false) { }
+ virtual void eventsChanged()
+ {
+ switch (events.size()) {
+ case 1:
+ EXPECT_EQ(GeolocationEvent::DisableHighAccuracy, events[0]);
+ break;
+ case 2:
+ EXPECT_EQ(GeolocationEvent::StartUpdating, events[1]);
+ break;
+ case 3:
+ EXPECT_EQ(GeolocationEvent::StopUpdating, events[2]);
+ finished = true;
+ break;
+ default:
+ EXPECT_TRUE(false);
+ finished = true;
+ }
+ }
+};
+
+TEST(WebKit2, GeolocationBasic)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ GeolocationBasicStateTracker stateTracker;
+ setupGeolocationProvider(context.get(), &stateTracker);
+
+ PlatformWebView webView(context.get());
+ setupView(webView);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("geolocationGetCurrentPosition", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&stateTracker.finished);
+}
+
+// Geolocation requested with High Accuracy.
+struct GeolocationBasicWithHighAccuracyStateTracker : GeolocationStateTracker {
+ bool finished;
+
+ GeolocationBasicWithHighAccuracyStateTracker() : finished(false) { }
+ virtual void eventsChanged()
+ {
+ switch (events.size()) {
+ case 1:
+ EXPECT_EQ(GeolocationEvent::EnableHighAccuracy, events[0]);
+ break;
+ case 2:
+ EXPECT_EQ(GeolocationEvent::StartUpdating, events[1]);
+ break;
+ case 3:
+ EXPECT_EQ(GeolocationEvent::StopUpdating, events[2]);
+ finished = true;
+ break;
+ default:
+ EXPECT_TRUE(false);
+ finished = true;
+ }
+ }
+};
+
+TEST(WebKit2, GeolocationBasicWithHighAccuracy)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ GeolocationBasicWithHighAccuracyStateTracker stateTracker;
+ setupGeolocationProvider(context.get(), &stateTracker);
+
+ PlatformWebView webView(context.get());
+ setupView(webView);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("geolocationGetCurrentPositionWithHighAccuracy", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&stateTracker.finished);
+}
+
+// Geolocation start without High Accuracy, then requires High Accuracy.
+struct GeolocationTransitionToHighAccuracyStateTracker : GeolocationStateTracker {
+ bool finishedFirstStep { false };
+ bool enabledHighAccuracy { false };
+ bool finished { false };
+
+ virtual void eventsChanged()
+ {
+ switch (events.size()) {
+ case 1:
+ EXPECT_EQ(GeolocationEvent::DisableHighAccuracy, events[0]);
+ break;
+ case 2:
+ EXPECT_EQ(GeolocationEvent::StartUpdating, events[1]);
+ finishedFirstStep = true;
+ break;
+ case 3:
+ EXPECT_EQ(GeolocationEvent::EnableHighAccuracy, events[2]);
+ enabledHighAccuracy = true;
+ break;
+ case 4:
+ EXPECT_EQ(GeolocationEvent::DisableHighAccuracy, events[3]);
+ break;
+ case 5:
+ EXPECT_EQ(GeolocationEvent::StopUpdating, events[4]);
+ finished = true;
+ break;
+ default:
+ EXPECT_TRUE(false);
+ finishedFirstStep = true;
+ enabledHighAccuracy = true;
+ finished = true;
+ }
+ }
+};
+
+TEST(WebKit2, GeolocationTransitionToHighAccuracy)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ WKContextSetMaximumNumberOfProcesses(context.get(), 1);
+
+ GeolocationTransitionToHighAccuracyStateTracker stateTracker;
+ setupGeolocationProvider(context.get(), &stateTracker);
+
+ PlatformWebView lowAccuracyWebView(context.get());
+ setupView(lowAccuracyWebView);
+ WKRetainPtr<WKURLRef> lowAccuracyURL(AdoptWK, Util::createURLForResource("geolocationWatchPosition", "html"));
+ WKPageLoadURL(lowAccuracyWebView.page(), lowAccuracyURL.get());
+ Util::run(&stateTracker.finishedFirstStep);
+
+ PlatformWebView highAccuracyWebView(context.get());
+ setupView(highAccuracyWebView);
+ WKRetainPtr<WKURLRef> highAccuracyURL(AdoptWK, Util::createURLForResource("geolocationWatchPositionWithHighAccuracy", "html"));
+ WKPageLoadURL(highAccuracyWebView.page(), highAccuracyURL.get());
+ Util::run(&stateTracker.enabledHighAccuracy);
+
+ WKRetainPtr<WKURLRef> resetUrl = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
+ WKPageLoadURL(highAccuracyWebView.page(), resetUrl.get());
+ Util::run(&stateTracker.enabledHighAccuracy);
+ WKPageLoadURL(lowAccuracyWebView.page(), resetUrl.get());
+ Util::run(&stateTracker.finished);
+}
+
+// Geolocation start with High Accuracy, then should fall back to low accuracy.
+struct GeolocationTransitionToLowAccuracyStateTracker : GeolocationStateTracker {
+ bool finishedFirstStep { false };
+ bool disabledHighAccuracy { false };
+ bool finished { false };
+
+ virtual void eventsChanged()
+ {
+ switch (events.size()) {
+ case 1:
+ EXPECT_EQ(GeolocationEvent::EnableHighAccuracy, events[0]);
+ break;
+ case 2:
+ EXPECT_EQ(GeolocationEvent::StartUpdating, events[1]);
+ finishedFirstStep = true;
+ break;
+ case 3:
+ EXPECT_EQ(GeolocationEvent::DisableHighAccuracy, events[2]);
+ disabledHighAccuracy = true;
+ break;
+ case 4:
+ EXPECT_EQ(GeolocationEvent::StopUpdating, events[3]);
+ finished = true;
+ break;
+ default:
+ EXPECT_TRUE(false);
+ finishedFirstStep = true;
+ disabledHighAccuracy = true;
+ finished = true;
+ }
+ }
+};
+
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
+{
+ *static_cast<bool*>(const_cast<void*>(clientInfo)) = true;
+}
+
+TEST(WebKit2, GeolocationTransitionToLowAccuracy)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ WKContextSetMaximumNumberOfProcesses(context.get(), 1);
+
+ GeolocationTransitionToLowAccuracyStateTracker stateTracker;
+ setupGeolocationProvider(context.get(), &stateTracker);
+
+ PlatformWebView highAccuracyWebView(context.get());
+ setupView(highAccuracyWebView);
+ WKRetainPtr<WKURLRef> highAccuracyURL(AdoptWK, Util::createURLForResource("geolocationWatchPositionWithHighAccuracy", "html"));
+ WKPageLoadURL(highAccuracyWebView.page(), highAccuracyURL.get());
+ Util::run(&stateTracker.finishedFirstStep);
+
+ PlatformWebView lowAccuracyWebView(context.get());
+ setupView(lowAccuracyWebView);
+
+ bool finishedSecondStep = false;
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.base.clientInfo = &finishedSecondStep;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(lowAccuracyWebView.page(), &loaderClient.base);
+
+ WKRetainPtr<WKURLRef> lowAccuracyURL(AdoptWK, Util::createURLForResource("geolocationWatchPosition", "html"));
+ WKPageLoadURL(lowAccuracyWebView.page(), lowAccuracyURL.get());
+ Util::run(&finishedSecondStep);
+
+ WKRetainPtr<WKURLRef> resetUrl = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
+ WKPageLoadURL(highAccuracyWebView.page(), resetUrl.get());
+ Util::run(&stateTracker.disabledHighAccuracy);
+ WKPageLoadURL(lowAccuracyWebView.page(), resetUrl.get());
+ Util::run(&stateTracker.finished);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp
index 4bfe87949..e3280a3b7 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -47,13 +50,14 @@ TEST(WebKit2, GetInjectedBundleInitializationUserDataCallback)
{
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextWithInjectedBundle());
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV1 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 1;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 1;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
injectedBundleClient.getInjectedBundleInitializationUserData = getInjectedBundleInitializationUserData;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
PlatformWebView webView(context.get());
@@ -64,3 +68,5 @@ TEST(WebKit2, GetInjectedBundleInitializationUserDataCallback)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
index 97500b59b..bf8da42e3 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/GetInjectedBundleInitializationUserDataCallback_Bundle.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -46,3 +49,5 @@ public:
static InjectedBundleTest::Register<GetInjectedBundleInitializationUserDataCallbackTest> registrar("GetInjectedBundleInitializationUserDataCallbackTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp
index 2100d28c3..1f4a3726c 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -48,22 +51,24 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRe
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, HitTestResultNodeHandle)
@@ -84,3 +89,5 @@ TEST(WebKit2, HitTestResultNodeHandle)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
index 882909e81..d68ff2193 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/HitTestResultNodeHandle_Bundle.cpp
@@ -24,12 +24,15 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "InjectedBundleController.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleHitTestResult.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleHitTestResult.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -46,19 +49,23 @@ public:
if (!nodeHandle)
return;
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("HitTestResultNodeHandleTestDoneMessageName").get(), Util::toWK("HitTestResultNodeHandleTestDoneMessageBody").get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("HitTestResultNodeHandleTestDoneMessageName").get(), Util::toWK("HitTestResultNodeHandleTestDoneMessageBody").get());
}
virtual void didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageContextMenuClient contextMenuClient;
+ WKBundlePageContextMenuClientV0 contextMenuClient;
memset(&contextMenuClient, 0, sizeof(contextMenuClient));
+
+ contextMenuClient.base.version = 0;
contextMenuClient.getContextMenuFromDefaultMenu = getContextMenuFromDefaultMenu;
- WKBundlePageSetContextMenuClient(page, &contextMenuClient);
+ WKBundlePageSetContextMenuClient(page, &contextMenuClient.base);
}
};
static InjectedBundleTest::Register<HitTestResultNodeHandleTest> registrar("HitTestResultNodeHandleTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp
index 083a88f05..a1d4046ed 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -52,21 +55,23 @@ TEST(WebKit2, InjectedBundleBasic)
{
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("InjectedBundleBasicTest"));
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -75,3 +80,5 @@ TEST(WebKit2, InjectedBundleBasic)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
index 6a597be41..4d8689b93 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleBasic_Bundle.cpp
@@ -24,8 +24,11 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -47,3 +50,5 @@ public:
static InjectedBundleTest::Register<InjectedBundleBasicTest> registrar("InjectedBundleBasicTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp
index 9320801d3..e178dc3cb 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -43,12 +46,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRe
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, InjectedBundleFrameHitTest)
@@ -65,3 +69,5 @@ TEST(WebKit2, InjectedBundleFrameHitTest)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
index ddaeec182..14806685e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleFrameHitTest_Bundle.cpp
@@ -24,13 +24,16 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundleFramePrivate.h>
-#include <WebKit2/WKBundleHitTestResult.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundleFramePrivate.h>
+#include <WebKit/WKBundleHitTestResult.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -41,7 +44,7 @@ public:
{
}
- virtual void didCreatePage(WKBundleRef, WKBundlePageRef) OVERRIDE;
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef) override;
void frameLoadFinished(WKBundleFrameRef);
WKBundleRef m_bundle;
@@ -58,14 +61,14 @@ void InjectedBundleFrameHitTestTest::didCreatePage(WKBundleRef bundle, WKBundleP
{
m_bundle = bundle;
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV1 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 1;
- pageLoaderClient.clientInfo = this;
+ pageLoaderClient.base.version = 1;
+ pageLoaderClient.base.clientInfo = this;
pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrameCallback;
- WKBundlePageSetPageLoaderClient(page, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
}
void InjectedBundleFrameHitTestTest::frameLoadFinished(WKBundleFrameRef frame)
@@ -76,3 +79,5 @@ void InjectedBundleFrameHitTestTest::frameLoadFinished(WKBundleFrameRef frame)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp
index 360cf39db..678aaa85b 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -49,13 +52,14 @@ TEST(WebKit2, InjectedBundleInitializationUserDataCallbackWins)
WKRetainPtr<WKDictionaryRef> initializationDictionary(AdoptWK, Util::createInitializationDictionaryForInjectedBundleTest("InjectedBundleInitializationUserDataCallbackWinsTest", Util::toWK("Set with WKContextSetInitializationUserDataForInjectedBundle").get()));
WKContextSetInitializationUserDataForInjectedBundle(context.get(), initializationDictionary.get());
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV1 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 1;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 1;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
injectedBundleClient.getInjectedBundleInitializationUserData = getInjectedBundleInitializationUserData;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
PlatformWebView webView(context.get());
@@ -66,3 +70,5 @@ TEST(WebKit2, InjectedBundleInitializationUserDataCallbackWins)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
index 36708a4d7..cac7738dd 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleInitializationUserDataCallbackWins_Bundle.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -46,3 +49,5 @@ public:
static InjectedBundleTest::Register<InjectedBundleInitializationUserDataCallbackWinsTest> registrar("InjectedBundleInitializationUserDataCallbackWinsTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootOpen_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootOpen_Bundle.cpp
new file mode 100644
index 000000000..4a923dba9
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootOpen_Bundle.cpp
@@ -0,0 +1,65 @@
+/*
+ * Copyright (C) 2010, 2016 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "InjectedBundleTest.h"
+#include <WebKit/WKBundlePageGroup.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
+#include <assert.h>
+
+namespace TestWebKitAPI {
+
+class InjectedBundleMakeAllShadowRootOpenTest : public InjectedBundleTest {
+public:
+ InjectedBundleMakeAllShadowRootOpenTest(const std::string& identifier)
+ : InjectedBundleTest(identifier)
+ { }
+
+ virtual void initialize(WKBundleRef bundle, WKTypeRef userData)
+ {
+ assert(WKGetTypeID(userData) == WKBundlePageGroupGetTypeID());
+ WKBundlePageGroupRef pageGroup = static_cast<WKBundlePageGroupRef>(userData);
+
+ auto world = WKBundleScriptWorldCreateWorld();
+ WKBundleScriptWorldMakeAllShadowRootsOpen(world);
+
+ WKRetainPtr<WKStringRef> source(AdoptWK, WKStringCreateWithUTF8CString(
+ "var element = document.createElement('div');"
+ "element.attachShadow({mode: 'closed'});"
+ "alert(element.shadowRoot ? 'PASS' : 'FAIL');"));
+ WKBundleAddUserScript(bundle, pageGroup, world, source.get(), 0, 0, 0, kWKInjectAtDocumentStart, kWKInjectInAllFrames);
+ }
+};
+
+static InjectedBundleTest::Register<InjectedBundleMakeAllShadowRootOpenTest> registrar("InjectedBundleMakeAllShadowRootOpenTest");
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen.cpp
new file mode 100644
index 000000000..982e6964e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/InjectedBundleMakeAllShadowRootsOpen.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2010, 2016 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool done;
+
+static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void* clientInfo)
+{
+ ASSERT_NOT_NULL(frame);
+
+ EXPECT_EQ(page, WKFrameGetPage(frame));
+ EXPECT_WK_STREQ("PASS", alertText);
+
+ done = true;
+}
+
+TEST(WebKit2, InjectedBundleMakeAllShadowRootOpenTest)
+{
+ WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(WKStringCreateWithUTF8CString("InjectedBundleMakeAllShadowRootOpenTestPageGroup")));
+
+ WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("InjectedBundleMakeAllShadowRootOpenTest", pageGroup.get()));
+ PlatformWebView webView(context.get(), pageGroup.get());
+
+ WKPageUIClientV0 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 0;
+ uiClient.runJavaScriptAlert = runJavaScriptAlert;
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&done);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp
new file mode 100644
index 000000000..aa294643c
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/LayoutMilestonesWithAllContentInFrame.cpp
@@ -0,0 +1,71 @@
+/*
+ * Copyright (C) 2013 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool testDone;
+
+static void didLayout(WKPageRef page, WKLayoutMilestones milestones, WKTypeRef, const void* clientInfo)
+{
+ // This test ensures that the DidFirstVisuallyNonEmptyLayout will be reached for the main frame
+ // even when all of the content is in a subframe.
+ if (milestones & kWKDidFirstVisuallyNonEmptyLayout)
+ testDone = true;
+}
+
+TEST(WebKit2, LayoutMilestonesWithAllContentInFrame)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV3 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 3;
+ loaderClient.base.clientInfo = &webView;
+ loaderClient.didLayout = didLayout;
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPageListenForLayoutMilestones(webView.page(), kWKDidFirstVisuallyNonEmptyLayout);
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("all-content-in-one-iframe", "html")).get());
+
+ Util::run(&testDone);
+ EXPECT_TRUE(testDone);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp
index 78787414d..acc23348b 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/LoadAlternateHTMLStringWithNonDirectoryURL.cpp
@@ -1,5 +1,6 @@
/*
* Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2015 Igalia S.L.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -24,13 +25,16 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContext.h>
-#include <WebKit2/WKPage.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKContext.h>
+#include <WebKit/WKPage.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -41,26 +45,41 @@ static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef us
didFinishLoad = true;
}
-TEST(WebKit2, LoadAlternateHTMLStringWithNonDirectoryURL)
+static void loadAlternateHTMLString(WKURLRef baseURL, WKURLRef unreachableURL)
{
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
- WKRetainPtr<WKURLRef> fileURL(AdoptWK, Util::createURLForResource("simple", "html"));
WKRetainPtr<WKStringRef> alternateHTMLString(AdoptWK, WKStringCreateWithUTF8CString("<html><body><img src='icon.png'></body></html>"));
-
- // Call WKPageLoadAlternateHTMLString() with fileURL which does not point to a directory
- WKPageLoadAlternateHTMLString(webView.page(), alternateHTMLString.get(), fileURL.get(), fileURL.get());
-
+ WKPageLoadAlternateHTMLString(webView.page(), alternateHTMLString.get(), baseURL, unreachableURL);
+
// If we can finish loading the html without resulting in an invalid message being sent from the WebProcess, this test passes.
Util::run(&didFinishLoad);
}
+TEST(WebKit2, LoadAlternateHTMLStringWithNonDirectoryURL)
+{
+ // Call WKPageLoadAlternateHTMLString() with fileURL which does not point to a directory.
+ WKRetainPtr<WKURLRef> fileURL(AdoptWK, Util::createURLForResource("simple", "html"));
+ loadAlternateHTMLString(fileURL.get(), fileURL.get());
+}
+
+TEST(WebKit2, LoadAlternateHTMLStringWithEmptyBaseURL)
+{
+ // Call WKPageLoadAlternateHTMLString() with empty baseURL to make sure this test works
+ // when baseURL does not grant read access to the unreachableURL. We use a separate test
+ // to ensure the previous test does not pollute the result.
+ WKRetainPtr<WKURLRef> unreachableURL(AdoptWK, Util::URLForNonExistentResource());
+ loadAlternateHTMLString(nullptr, unreachableURL.get());
+}
+
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp
index 7dbd063bc..ac45fba26 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback.cpp
@@ -24,13 +24,16 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContext.h>
-#include <WebKit2/WKFrame.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKContext.h>
+#include <WebKit/WKFrame.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -59,27 +62,30 @@ TEST(WebKit2, LoadCanceledNoServerRedirectCallback)
{
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("LoadCanceledNoServerRedirectCallbackTest"));
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
- WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient);
+
+ injectedBundleClient.base.version = 0;
+
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
- WKContextHistoryClient historyClient;
+ WKContextHistoryClientV0 historyClient;
memset(&historyClient, 0, sizeof(historyClient));
- historyClient.version = 0;
+ historyClient.base.version = 0;
historyClient.didPerformServerRedirect = didPerformServerRedirect;
- WKContextSetHistoryClient(context.get(), &historyClient);
+
+ WKContextSetHistoryClient(context.get(), &historyClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple-iframe", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -90,3 +96,5 @@ TEST(WebKit2, LoadCanceledNoServerRedirectCallback)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
index 0792c3f8a..6ea0dc77d 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/LoadCanceledNoServerRedirectCallback_Bundle.cpp
@@ -24,13 +24,16 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
#include "Test.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKRetainPtr.h>
#include <wtf/Assertions.h>
@@ -56,13 +59,13 @@ public:
virtual void didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageResourceLoadClient resourceLoadClient;
+ WKBundlePageResourceLoadClientV0 resourceLoadClient;
memset(&resourceLoadClient, 0, sizeof(resourceLoadClient));
- resourceLoadClient.version = 0;
+ resourceLoadClient.base.version = 0;
resourceLoadClient.willSendRequestForFrame = willSendRequestForFrame;
- WKBundlePageSetResourceLoadClient(page, &resourceLoadClient);
+ WKBundlePageSetResourceLoadClient(page, &resourceLoadClient.base);
}
};
@@ -70,3 +73,5 @@ public:
static InjectedBundleTest::Register<LoadCanceledNoServerRedirectCallbackTest> registrar("LoadCanceledNoServerRedirectCallbackTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp
index f3d1830d6..63ad664e2 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/LoadPageOnCrash.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -43,9 +46,12 @@ public:
, secondSuccessfulLoad(false)
{
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.clientInfo = this;
+
+ loaderClient.base.version = 0;
+ loaderClient.base.clientInfo = this;
loaderClient.didFinishLoadForFrame = didFinishLoad;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
}
void loadUrl()
@@ -59,7 +65,7 @@ public:
}
WKRetainPtr<WKContextRef> context;
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
PlatformWebView webView;
WKRetainPtr<WKURLRef> url;
@@ -100,3 +106,5 @@ TEST(WebKit2, LoadPageAfterCrash)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp
new file mode 100644
index 000000000..f77a11ad8
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/MenuTypesForMouseEvents.cpp
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "JavaScriptTest.h"
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+
+namespace TestWebKitAPI {
+
+static bool didFinishLoad;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void setPageLoaderClient(WKPageRef page)
+{
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+}
+
+static void buildAndPerformTest(WKEventMouseButton button, WKEventModifiers modifiers, const char* expectedButton, const char* expectedMenuType)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ PlatformWebView webView(context.get());
+ setPageLoaderClient(webView.page());
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("mouse-button-listener", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+ Util::run(&didFinishLoad);
+
+ didFinishLoad = false;
+
+ webView.simulateButtonClick(button, 10, 10, modifiers);
+
+ EXPECT_JS_EQ(webView.page(), "pressedMouseButton()", expectedButton);
+ EXPECT_JS_EQ(webView.page(), "displayedMenu()", expectedMenuType);
+}
+
+TEST(WebKit2, MenuAndButtonForNormalLeftClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonLeftButton, 0, "0", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForNormalRightClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonRightButton, 0, "2", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForNormalMiddleClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonMiddleButton, 0, "1", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForControlLeftClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonLeftButton, kWKEventModifiersControlKey, "0", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForControlRightClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonRightButton, kWKEventModifiersControlKey, "2", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForControlMiddleClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonMiddleButton, kWKEventModifiersControlKey, "1", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForShiftLeftClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonLeftButton, kWKEventModifiersShiftKey, "0", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForShiftRightClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonRightButton, kWKEventModifiersShiftKey, "2", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForShiftMiddleClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonMiddleButton, kWKEventModifiersShiftKey, "1", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForCommandLeftClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonLeftButton, kWKEventModifiersMetaKey, "0", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForCommandRightClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonRightButton, kWKEventModifiersMetaKey, "2", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForCommandMiddleClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonMiddleButton, kWKEventModifiersMetaKey, "1", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForAltLeftClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonLeftButton, kWKEventModifiersAltKey, "0", "none");
+}
+
+TEST(WebKit2, MenuAndButtonForAltRightClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonRightButton, kWKEventModifiersAltKey, "2", "context");
+}
+
+TEST(WebKit2, MenuAndButtonForAltMiddleClick)
+{
+ buildAndPerformTest(kWKEventMouseButtonMiddleButton, kWKEventModifiersAltKey, "1", "none");
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ModalAlertsSPI.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ModalAlertsSPI.cpp
new file mode 100644
index 000000000..0278f005b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ModalAlertsSPI.cpp
@@ -0,0 +1,123 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKFrame.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSecurityOriginRef.h>
+
+namespace TestWebKitAPI {
+
+static bool done;
+static unsigned dialogsSeen;
+static const unsigned dialogsExpected = 3;
+
+static void analyzeDialogArguments(WKPageRef page, WKFrameRef frame, WKSecurityOriginRef securityOrigin)
+{
+ EXPECT_EQ(page, WKFrameGetPage(frame));
+
+ WKRetainPtr<WKURLRef> url = adoptWK(WKFrameCopyURL(frame));
+ WKRetainPtr<WKStringRef> urlString = adoptWK(WKURLCopyString(url.get()));
+ EXPECT_WK_STREQ("about:blank", urlString.get());
+
+ WKRetainPtr<WKStringRef> protocol = adoptWK(WKSecurityOriginCopyProtocol(securityOrigin));
+ EXPECT_WK_STREQ("file", protocol.get());
+
+ WKRetainPtr<WKStringRef> host = adoptWK(WKSecurityOriginCopyHost(securityOrigin));
+ EXPECT_WK_STREQ("", host.get());
+
+ EXPECT_EQ(WKSecurityOriginGetPort(securityOrigin), 0);
+
+ if (++dialogsSeen == dialogsExpected)
+ done = true;
+}
+
+static void runJavaScriptAlert(WKPageRef page, WKStringRef, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void*)
+{
+ analyzeDialogArguments(page, frame, securityOrigin);
+}
+
+static bool runJavaScriptConfirm(WKPageRef page, WKStringRef, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void*)
+{
+ analyzeDialogArguments(page, frame, securityOrigin);
+ return false;
+}
+
+static WKStringRef runJavaScriptPrompt(WKPageRef page, WKStringRef, WKStringRef, WKFrameRef frame, WKSecurityOriginRef securityOrigin, const void*)
+{
+ analyzeDialogArguments(page, frame, securityOrigin);
+ return nullptr;
+}
+
+static std::unique_ptr<PlatformWebView> openedWebView;
+
+static WKPageRef createNewPage(WKPageRef page, WKURLRequestRef urlRequest, WKDictionaryRef features, WKEventModifiers modifiers, WKEventMouseButton mouseButton, const void *clientInfo)
+{
+ EXPECT_TRUE(openedWebView == nullptr);
+
+ openedWebView = std::make_unique<PlatformWebView>(page);
+
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 5;
+ uiClient.runJavaScriptAlert = runJavaScriptAlert;
+ uiClient.runJavaScriptConfirm = runJavaScriptConfirm;
+ uiClient.runJavaScriptPrompt = runJavaScriptPrompt;
+
+ WKPageSetPageUIClient(openedWebView->page(), &uiClient.base);
+
+ WKRetain(openedWebView->page());
+ return openedWebView->page();
+}
+
+TEST(WebKit2, ModalAlertsSPI)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ PlatformWebView webView(context.get());
+
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 5;
+ uiClient.createNewPage = createNewPage;
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("modal-alerts-in-new-about-blank-window", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&done);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp
index 4bf5527f9..9d7f3997d 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
@@ -39,20 +42,16 @@ static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
-#if PLATFORM(WIN)
-TEST(WebKit2, DISABLED_MouseMoveAfterCrash)
-#else
TEST(WebKit2, MouseMoveAfterCrash)
-#endif
{
WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("MouseMoveAfterCrashTest"));
@@ -90,3 +89,5 @@ TEST(WebKit2, MouseMoveAfterCrash)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
index a07562093..8d92f4209 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/MouseMoveAfterCrash_Bundle.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
@@ -54,3 +57,5 @@ void MouseMoveAfterCrashTest::didReceiveMessage(WKBundleRef bundle, WKStringRef
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp
index 605003ed6..778d285ba 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContextPrivate.h>
+#include <WebKit/WKContextPrivate.h>
namespace TestWebKitAPI {
@@ -57,12 +60,13 @@ static void didLayout(WKPageRef, WKLayoutMilestones type, WKTypeRef, const void
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
loaderClient.didLayout = didLayout;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
// FIXME: This test has been broken since http://trac.webkit.org/changeset/115752 It's failing because
@@ -85,3 +89,5 @@ TEST(WebKit2, DISABLED_NewFirstVisuallyNonEmptyLayout)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp
index 06c71502e..5cff318fa 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -56,13 +59,14 @@ static void didLayout(WKPageRef, WKLayoutMilestones type, WKTypeRef, const void
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
loaderClient.didLayout = didLayout;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
TEST(WebKit2, NewFirstVisuallyNonEmptyLayoutFails)
@@ -85,3 +89,5 @@ TEST(WebKit2, NewFirstVisuallyNonEmptyLayoutFails)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
index b909ec941..2700d66c8 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFails_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace TestWebKitAPI {
@@ -49,3 +52,5 @@ public:
static InjectedBundleTest::Register<NewFirstVisuallyNonEmptyLayoutFailsTest> registrar("NewFirstVisuallyNonEmptyLayoutFailsTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp
index 2ec5bd05c..7bd1fd7b3 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContextPrivate.h>
+#include <WebKit/WKContextPrivate.h>
namespace TestWebKitAPI {
@@ -57,12 +60,13 @@ static void didLayout(WKPageRef, WKLayoutMilestones type, WKTypeRef, const void
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
loaderClient.didLayout = didLayout;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
// FIXME: This test has been broken since http://trac.webkit.org/changeset/115752 It's failing because
@@ -85,3 +89,5 @@ TEST(WebKit2, DISABLED_NewFirstVisuallyNonEmptyLayoutForImages)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
index bdaade77b..d8644bb69 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutForImages_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace TestWebKitAPI {
@@ -49,3 +52,5 @@ public:
static InjectedBundleTest::Register<NewFirstVisuallyNonEmptyLayoutForImagesTest> registrar("NewFirstVisuallyNonEmptyLayoutForImagesTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp
index 1ad4b9986..c7b24680e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -61,13 +64,14 @@ static void didLayout(WKPageRef, WKLayoutMilestones type, WKTypeRef, const void
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
loaderClient.didLayout = didLayout;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
TEST(WebKit2, NewFirstVisuallyNonEmptyLayoutFrames)
@@ -89,3 +93,5 @@ TEST(WebKit2, NewFirstVisuallyNonEmptyLayoutFrames)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
index 33e16bd3e..f66fc957d 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayoutFrames_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace TestWebKitAPI {
@@ -49,3 +52,5 @@ public:
static InjectedBundleTest::Register<NewFirstVisuallyNonEmptyLayoutFramesTest> registrar("NewFirstVisuallyNonEmptyLayoutFramesTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
index c408c3b2c..8f1901d10 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/NewFirstVisuallyNonEmptyLayout_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace TestWebKitAPI {
@@ -49,3 +52,5 @@ public:
static InjectedBundleTest::Register<NewFirstVisuallyNonEmptyLayoutTest> registrar("NewFirstVisuallyNonEmptyLayoutTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp
index 5f2f6e283..ad62a5b29 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadBasic.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -85,7 +88,7 @@ static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef us
test1Done = true;
}
-static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
+static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKFrameRef originatingFrame, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
{
State* state = reinterpret_cast<State*>(const_cast<void*>(clientInfo));
EXPECT_FALSE(state->didStartProvisionalLoadForFrame);
@@ -103,11 +106,12 @@ static void decidePolicyForNewWindowAction(WKPageRef page, WKFrameRef frame, WKF
WKFramePolicyListenerUse(listener);
}
-static void decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
+static void decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef request, bool canShowMIMEType, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
{
WKFramePolicyListenerUse(listener);
}
+// FIXME: http://webkit.org/b/127934 REGRESSION (r163037): WebKit2.PageLoadBasic API test failing on Mountain Lion
TEST(WebKit2, PageLoadBasic)
{
State state;
@@ -115,25 +119,27 @@ TEST(WebKit2, PageLoadBasic)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = &state;
+ loaderClient.base.version = 0;
+ loaderClient.base.clientInfo = &state;
loaderClient.didStartProvisionalLoadForFrame = didStartProvisionalLoadForFrame;
loaderClient.didCommitLoadForFrame = didCommitLoadForFrame;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
- WKPagePolicyClient policyClient;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPagePolicyClientV1 policyClient;
memset(&policyClient, 0, sizeof(policyClient));
- policyClient.version = 0;
- policyClient.clientInfo = &state;
+ policyClient.base.version = 1;
+ policyClient.base.clientInfo = &state;
policyClient.decidePolicyForNavigationAction = decidePolicyForNavigationAction;
policyClient.decidePolicyForNewWindowAction = decidePolicyForNewWindowAction;
policyClient.decidePolicyForResponse = decidePolicyForResponse;
- WKPageSetPagePolicyClient(webView.page(), &policyClient);
+
+ WKPageSetPagePolicyClient(webView.page(), &policyClient.base);
// Before loading anything, the active url should be null
EXPECT_NULL(WKPageCopyActiveURL(webView.page()));
@@ -149,4 +155,26 @@ TEST(WebKit2, PageLoadBasic)
Util::run(&test1Done);
}
+TEST(WebKit2, PageReload)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ PlatformWebView webView(context.get());
+
+ // Reload test before url loading.
+ WKPageReload(webView.page());
+ WKPageReload(webView.page());
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ // Reload test after url loading.
+ WKPageReload(webView.page());
+
+ WKRetainPtr<WKURLRef> activeUrl = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeUrl.get());
+ EXPECT_TRUE(WKURLIsEqual(activeUrl.get(), url.get()));
+}
+
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp
index 86fbe5ed6..46838db93 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PageLoadDidChangeLocationWithinPageForFrame.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -60,11 +63,14 @@ TEST(WebKit2, PageLoadDidChangeLocationWithinPageForFrame)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
loaderClient.didSameDocumentNavigationForFrame = didSameDocumentNavigationForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("file-with-anchor", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -81,3 +87,5 @@ TEST(WebKit2, PageLoadDidChangeLocationWithinPageForFrame)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp
deleted file mode 100644
index 8907b92e5..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PageVisibilityState.cpp
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-#include <JavaScriptCore/JSContextRef.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKSerializedScriptValue.h>
-
-namespace TestWebKitAPI {
-
-static bool testDone;
-
-static void didRunStep1StateChangeVisibleToHidden(WKSerializedScriptValueRef, WKErrorRef, void*);
-static void didRunStep2StateChangeHiddenToPrerender(WKSerializedScriptValueRef, WKErrorRef, void*);
-static void didRunStep3StateChangePrerenderToUnloaded(WKSerializedScriptValueRef, WKErrorRef, void*);
-static void didRunStep4InStateUnloaded(WKSerializedScriptValueRef, WKErrorRef, void*);
-
-static void setPageVisibilityStateWithEvalContinuation(PlatformWebView* webView, WKPageVisibilityState visibilityState, WKPageRunJavaScriptFunction callback)
-{
- WKPageSetVisibilityState(webView->page(), visibilityState, false);
- WKRetainPtr<WKStringRef> javaScriptString(AdoptWK, WKStringCreateWithUTF8CString("document.visibilityState"));
- WKPageRunJavaScriptInMainFrame(webView->page(), javaScriptString.get(), static_cast<void*>(webView), callback);
-}
-
-static void assertSerializedScriptValueIsStringValue(WKSerializedScriptValueRef serializedValue, WKErrorRef error, const char *expected)
-{
- EXPECT_NULL(error);
- EXPECT_NOT_NULL(serializedValue);
- if (error || !serializedValue)
- return;
-
- JSGlobalContextRef scriptContext = JSGlobalContextCreate(0);
- JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedValue, scriptContext, 0);
- EXPECT_TRUE(JSValueIsString(scriptContext, scriptValue));
- if (!JSValueIsString(scriptContext, scriptValue)) {
- JSGlobalContextRelease(scriptContext);
- return;
- }
-
- JSStringRef expectedString = JSStringCreateWithUTF8CString(expected);
- JSStringRef scriptString = JSValueToStringCopy(scriptContext, scriptValue, 0);
- EXPECT_TRUE(JSStringIsEqual(scriptString, expectedString));
-
- JSStringRelease(scriptString);
- JSStringRelease(expectedString);
- JSGlobalContextRelease(scriptContext);
-}
-
-static void didRunStep1StateChangeVisibleToHidden(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context)
-{
- assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "visible");
- setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStateHidden, didRunStep2StateChangeHiddenToPrerender);
-}
-
-static void didRunStep2StateChangeHiddenToPrerender(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context)
-{
- assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "hidden");
- setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStatePrerender, didRunStep3StateChangePrerenderToUnloaded);
-}
-
-static void didRunStep3StateChangePrerenderToUnloaded(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context)
-{
- assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "prerender");
- setPageVisibilityStateWithEvalContinuation(static_cast<PlatformWebView*>(context), kWKPageVisibilityStateUnloaded, didRunStep4InStateUnloaded);
-}
-
-static void didRunStep4InStateUnloaded(WKSerializedScriptValueRef resultSerializedScriptValue, WKErrorRef error, void* context)
-{
- assertSerializedScriptValueIsStringValue(resultSerializedScriptValue, error, "unloaded");
- testDone = true;
-}
-
-TEST(WebKit2, PageVisibilityState)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
-
- // Pass the PlatformWebView webView on as the context of the evals, so we can continue to eval on it.
- PlatformWebView webView(context.get());
- setPageVisibilityStateWithEvalContinuation(&webView, kWKPageVisibilityStateVisible, didRunStep1StateChangeVisibleToHidden);
-
- Util::run(&testDone);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp
index 7645c66ee..7953608c8 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKContextPrivate.h>
+#include <WebKit/WKContextPrivate.h>
namespace TestWebKitAPI {
@@ -45,11 +48,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messag
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, ParentFrame)
@@ -66,3 +71,5 @@ TEST(WebKit2, ParentFrame)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp
index 40035e90c..e1da9ee02 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ParentFrame_Bundle.cpp
@@ -24,12 +24,15 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -67,13 +70,15 @@ void ParentFrameTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
testBundle = bundle;
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV1 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 1;
+ pageLoaderClient.base.version = 1;
pageLoaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKBundlePageSetPageLoaderClient(page, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm b/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm
deleted file mode 100644
index 6635fae9e..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications.mm
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-
-#include <WebKit2/WKString.h>
-
-namespace TestWebKitAPI {
-
-static bool finished = false;
-
-static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo)
-{
- if (WKStringIsEqualToUTF8CString(messageName, "PasteboardNotificationTestDoneMessageName")
- && WKStringIsEqualToUTF8CString(static_cast<WKStringRef>(messageBody), "didWriteToPasteboard")) {
- NSData* data = [[NSPasteboard generalPasteboard] dataForType:@"AnotherArchivePasteboardType"];
- EXPECT_NE(data, (NSData*)nil);
- finished = true;
- }
-}
-
-static void setInjectedBundleClient(WKContextRef context)
-{
- WKContextInjectedBundleClient injectedBundleClient;
- memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
- injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
-}
-
-TEST(WebKit2, PasteboardNotifications)
-{
- [[NSPasteboard generalPasteboard] clearContents];
-
- WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("PasteboardNotificationsTest"));
- setInjectedBundleClient(context.get());
-
- PlatformWebView webView(context.get());
-
- WKRetainPtr<WKPreferencesRef> preferences(AdoptWK, WKPreferencesCreate());
- WKPreferencesSetJavaScriptCanAccessClipboard(preferences.get(), true);
-
- WKPageGroupRef pageGroup = WKPageGetPageGroup(webView.page());
- WKPageGroupSetPreferences(pageGroup, preferences.get());
-
- WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("execCopy", "html")).get());
- Util::run(&finished);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp
index d33b77b55..8c1404e7a 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PasteboardNotifications_Bundle.cpp
@@ -24,13 +24,16 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKArray.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleBackForwardListItem.h>
-#include <WebKit2/WKWebArchive.h>
+#include <WebKit/WKArray.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleBackForwardListItem.h>
+#include <WebKit/WKWebArchive.h>
namespace TestWebKitAPI {
@@ -46,7 +49,7 @@ static InjectedBundleTest::Register<PasteboardNotificationsTest> registrar("Past
static void willWriteToPasteboard(WKBundlePageRef page, WKBundleRangeHandleRef range, const void*)
{
if (!range)
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("PasteboardNotificationTestDoneMessageName").get(), Util::toWK("willWritetoPasteboardFail").get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("PasteboardNotificationTestDoneMessageName").get(), Util::toWK("willWritetoPasteboardFail").get());
}
static void getPasteboardDataForRange(WKBundlePageRef, WKBundleRangeHandleRef range, WKArrayRef* pasteboardTypes, WKArrayRef* pasteboardData, const void*)
@@ -59,7 +62,7 @@ static void getPasteboardDataForRange(WKBundlePageRef, WKBundleRangeHandleRef ra
static void didWriteToPasteboard(WKBundlePageRef, const void*)
{
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("PasteboardNotificationTestDoneMessageName").get(), Util::toWK("didWriteToPasteboard").get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("PasteboardNotificationTestDoneMessageName").get(), Util::toWK("didWriteToPasteboard").get());
}
PasteboardNotificationsTest::PasteboardNotificationsTest(const std::string& identifier)
@@ -69,17 +72,18 @@ PasteboardNotificationsTest::PasteboardNotificationsTest(const std::string& iden
void PasteboardNotificationsTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageEditorClient pageEditorClient;
-
+ WKBundlePageEditorClientV1 pageEditorClient;
memset(&pageEditorClient, 0, sizeof(pageEditorClient));
- pageEditorClient.version = 1;
- pageEditorClient.clientInfo = this;
+ pageEditorClient.base.version = 1;
+ pageEditorClient.base.clientInfo = this;
pageEditorClient.willWriteToPasteboard = willWriteToPasteboard;
pageEditorClient.getPasteboardDataForRange = getPasteboardDataForRange;
pageEditorClient.didWriteToPasteboard = didWriteToPasteboard;
- WKBundlePageSetEditorClient(page, &pageEditorClient);
+ WKBundlePageSetEditorClient(page, &pageEditorClient.base);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp
new file mode 100644
index 000000000..d02a5acf3
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PendingAPIRequestURL.cpp
@@ -0,0 +1,162 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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. 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 INC. 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 "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool done;
+
+TEST(WebKit2, PendingAPIRequestURL)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = [](WKPageRef, WKFrameRef, WKTypeRef, const void*) { done = true; };
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKRetainPtr<WKURLRef> activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ EXPECT_NULL(activeURL.get());
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKRetainPtr<WKStringRef> htmlString = Util::toWK("<body>Hello, World</body>");
+ WKRetainPtr<WKURLRef> blankURL = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
+ WKPageLoadHTMLString(webView.page(), htmlString.get(), nullptr);
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ url = adoptWK(Util::createURLForResource("simple2", "html"));
+ WKPageLoadHTMLString(webView.page(), htmlString.get(), url.get());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKRetainPtr<WKDataRef> data = adoptWK(WKDataCreate(nullptr, 0));
+ WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, nullptr);
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageLoadData(webView.page(), data.get(), nullptr, nullptr, url.get());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageLoadAlternateHTMLString(webView.page(), htmlString.get(), nullptr, url.get());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ Util::run(&done);
+ done = false;
+
+ WKRetainPtr<WKStringRef> plainTextString = Util::toWK("Hello, World");
+ WKPageLoadPlainTextString(webView.page(), plainTextString.get());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ WKPageReload(webView.page());
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), blankURL.get()));
+ Util::run(&done);
+ done = false;
+
+ url = adoptWK(WKURLCreateWithUTF8CString("file:///tmp/index.html"));
+ WKPageLoadFile(webView.page(), url.get(), nullptr);
+ activeURL = adoptWK(WKPageCopyActiveURL(webView.page()));
+ ASSERT_NOT_NULL(activeURL.get());
+ EXPECT_TRUE(WKURLIsEqual(activeURL.get(), url.get()));
+ WKPageStopLoading(webView.page());
+}
+
+} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp
index c5acb6172..7712b142c 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PreventEmptyUserAgent.cpp
@@ -24,12 +24,15 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
#include <JavaScriptCore/JSContextRef.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKSerializedScriptValue.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSerializedScriptValue.h>
namespace TestWebKitAPI {
@@ -68,3 +71,5 @@ TEST(WebKit2, PreventEmptyUserAgent)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp
index 164466b2c..532c92373 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/PrivateBrowsingPushStateNoHistoryCallback.cpp
@@ -24,47 +24,56 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
-static bool testDone;
+static bool didNavigate;
+static bool didSameDocumentNavigation;
-static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void* clientInfo)
+static void didNavigateWithoutNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void* clientInfo)
{
// This should never be called when navigating in Private Browsing.
FAIL();
}
+static void didNavigateWithNavigationData(WKContextRef context, WKPageRef page, WKNavigationDataRef navigationData, WKFrameRef frame, const void* clientInfo)
+{
+ didNavigate = true;
+}
+
static void didSameDocumentNavigationForFrame(WKPageRef page, WKFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef userData, const void *clientInfo)
{
- testDone = true;
+ didSameDocumentNavigation = true;
}
TEST(WebKit2, PrivateBrowsingPushStateNoHistoryCallback)
{
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- WKContextHistoryClient historyClient;
+ WKContextHistoryClientV0 historyClient;
memset(&historyClient, 0, sizeof(historyClient));
- historyClient.version = 0;
- historyClient.clientInfo = 0;
- historyClient.didNavigateWithNavigationData = didNavigateWithNavigationData;
- WKContextSetHistoryClient(context.get(), &historyClient);
+ historyClient.base.version = 0;
+ historyClient.didNavigateWithNavigationData = didNavigateWithoutNavigationData;
+
+ WKContextSetHistoryClient(context.get(), &historyClient.base);
PlatformWebView webView(context.get());
- WKPageLoaderClient pageLoaderClient;
+ WKPageLoaderClientV0 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 0;
- pageLoaderClient.clientInfo = 0;
+ pageLoaderClient.base.version = 0;
pageLoaderClient.didSameDocumentNavigationForFrame = didSameDocumentNavigationForFrame;
- WKPageSetPageLoaderClient(webView.page(), &pageLoaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &pageLoaderClient.base);
WKRetainPtr<WKPreferencesRef> preferences(AdoptWK, WKPreferencesCreate());
WKPreferencesSetPrivateBrowsingEnabled(preferences.get(), true);
@@ -75,7 +84,18 @@ TEST(WebKit2, PrivateBrowsingPushStateNoHistoryCallback)
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("push-state", "html"));
WKPageLoadURL(webView.page(), url.get());
- Util::run(&testDone);
+ Util::run(&didSameDocumentNavigation);
+
+ WKPreferencesSetPrivateBrowsingEnabled(preferences.get(), false);
+
+ historyClient.didNavigateWithNavigationData = didNavigateWithNavigationData;
+ WKContextSetHistoryClient(context.get(), &historyClient.base);
+
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&didNavigate);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp
index 7960dcbf1..190c85341 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ReloadPageAfterCrash.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -65,11 +68,14 @@ TEST(WebKit2, ReloadPageAfterCrash)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoad;
loaderClient.processDidCrash = didCrash;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
// Load a blank page and next kills WebProcess.
@@ -83,3 +89,5 @@ TEST(WebKit2, ReloadPageAfterCrash)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp
index f032849ba..f2e1ae17f 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ResizeReversePaginatedWebView.cpp
@@ -24,14 +24,17 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
#include <JavaScriptCore/JSContextRef.h>
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKPagePrivate.h>
-#include <WebKit2/WKSerializedScriptValue.h>
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKSerializedScriptValue.h>
namespace TestWebKitAPI {
@@ -61,13 +64,14 @@ TEST(WebKit2, ResizeReversePaginatedWebView)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
+ loaderClient.base.clientInfo = &webView;
loaderClient.didLayout = didLayout;
- loaderClient.clientInfo = &webView;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKPageListenForLayoutMilestones(webView.page(), kWKDidFirstLayoutAfterSuppressedIncrementalRendering);
@@ -87,3 +91,5 @@ TEST(WebKit2, ResizeReversePaginatedWebView)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp
index 1af639de7..2dfc8b4c2 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ResizeWindowAfterCrash.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -75,12 +78,15 @@ TEST(WebKit2, ResizeWindowAfterCrash)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
TestStatesData states(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.clientInfo = &states;
+
+ loaderClient.base.version = 0;
+ loaderClient.base.clientInfo = &states;
loaderClient.didFinishLoadForFrame = didFinishLoad;
loaderClient.processDidCrash = didCrash;
- WKPageSetPageLoaderClient(states.webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(states.webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
// Load a blank page and next kills WebProcess.
@@ -94,3 +100,5 @@ TEST(WebKit2, ResizeWindowAfterCrash)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp
index 10f04c180..a034637e3 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
@@ -51,25 +54,25 @@ static void processDidBecomeUnresponsive(WKPageRef, const void*)
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = 0;
- injectedBundleClient.clientInfo = 0;
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
loaderClient.processDidBecomeUnresponsive = processDidBecomeUnresponsive;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
TEST(WebKit2, ResponsivenessTimerDoesntFireEarly)
@@ -96,3 +99,5 @@ TEST(WebKit2, ResponsivenessTimerDoesntFireEarly)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
index 50d664f38..ddd2ca158 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ResponsivenessTimerDoesntFireEarly_Bundle.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
@@ -57,3 +60,5 @@ void ResponsivenessTimerDoesntFireEarlyTest::didReceiveMessage(WKBundleRef bundl
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp
index f75de124e..b16537e70 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/RestoreSessionStateContainingFormData.cpp
@@ -24,10 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
+#include <WebKit/WKSessionStateRef.h>
namespace TestWebKitAPI {
@@ -40,15 +44,16 @@ static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
-static WKRetainPtr<WKDataRef> createSessionStateContainingFormData(WKContextRef context)
+static WKRetainPtr<WKDataRef> createSessionStateDataContainingFormData(WKContextRef context)
{
PlatformWebView webView(context);
setPageLoaderClient(webView.page());
@@ -61,7 +66,8 @@ static WKRetainPtr<WKDataRef> createSessionStateContainingFormData(WKContextRef
Util::run(&didFinishLoad);
didFinishLoad = false;
- return adoptWK(WKPageCopySessionState(webView.page(), 0, 0));
+ auto sessionState = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), nullptr)));
+ return adoptWK(WKSessionStateCopyData(sessionState.get()));
}
TEST(WebKit2, RestoreSessionStateContainingFormData)
@@ -74,13 +80,17 @@ TEST(WebKit2, RestoreSessionStateContainingFormData)
PlatformWebView webView(context.get());
setPageLoaderClient(webView.page());
- WKRetainPtr<WKDataRef> data = createSessionStateContainingFormData(context.get());
+ WKRetainPtr<WKDataRef> data = createSessionStateDataContainingFormData(context.get());
EXPECT_NOT_NULL(data);
- WKPageRestoreFromSessionState(webView.page(), data.get());
+ auto sessionState = adoptWK(WKSessionStateCreateFromData(data.get()));
+ WKPageRestoreFromSessionState(webView.page(), sessionState.get());
+
Util::run(&didFinishLoad);
EXPECT_TRUE(WKPageCanGoBack(webView.page()));
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp
index 695e912df..015571f5f 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ScrollPinningBehaviors.cpp
@@ -24,14 +24,18 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
#include <JavaScriptCore/JSContextRef.h>
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKPagePrivate.h>
-#include <WebKit2/WKSerializedScriptValue.h>
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKPreferencesRefPrivate.h>
+#include <WebKit/WKSerializedScriptValue.h>
namespace TestWebKitAPI {
@@ -68,15 +72,24 @@ static void didFinishDocumentLoadForFrame(WKPageRef page, WKFrameRef frame, WKTy
TEST(WebKit2, ScrollPinningBehaviors)
{
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ // Turn off threaded scrolling; synchronously waiting for the main thread scroll position to
+ // update using WKPageForceRepaint would be better, but for some reason doesn't block until
+ // it's updated after the initial WKPageSetScrollPinningBehavior above.
+ WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(Util::toWK("NoThreadedScrollingPageGroup").get()));
+ WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroup.get());
+ WKPreferencesSetThreadedScrollingEnabled(preferences, false);
+
+ PlatformWebView webView(context.get(), pageGroup.get());
+
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+
+ loaderClient.base.version = 3;
+ loaderClient.base.clientInfo = &webView;
loaderClient.didFinishDocumentLoadForFrame = didFinishDocumentLoadForFrame;
- loaderClient.clientInfo = &webView;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple-tall", "html")).get());
@@ -85,3 +98,5 @@ TEST(WebKit2, ScrollPinningBehaviors)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp
index c666bf687..9ca6080d3 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/SeccompFilters.cpp
@@ -25,9 +25,9 @@
#include "config.h"
-#include <WebKit2/SeccompBroker.h>
-#include <WebKit2/SeccompFilters.h>
-#include <WebKit2/SyscallPolicy.h>
+#include <WebKit/SeccompBroker.h>
+#include <WebKit/SeccompFilters.h>
+#include <WebKit/SyscallPolicy.h>
#include <errno.h>
#include <fcntl.h>
#include <pthread.h>
@@ -42,16 +42,16 @@ using namespace WebKit;
namespace TestWebKitAPI {
-DEFINE_STATIC_LOCAL(String, rootDir, (ASCIILiteral("/")));
-DEFINE_STATIC_LOCAL(String, homeDir, (String(getenv("HOME"))));
-DEFINE_STATIC_LOCAL(String, usrDir, (ASCIILiteral("/usr")));
-DEFINE_STATIC_LOCAL(String, usrSbinDir, (ASCIILiteral("/usr/sbin")));
-DEFINE_STATIC_LOCAL(String, testDirRead, (ASCIILiteral("/tmp/WebKitSeccompFilters/testRead")));
-DEFINE_STATIC_LOCAL(String, testDirWrite, (ASCIILiteral("/tmp/WebKitSeccompFilters/testWrite")));
-DEFINE_STATIC_LOCAL(String, testDirReadAndWrite, (ASCIILiteral("/tmp/WebKitSeccompFilters/testReadAndWrite")));
-DEFINE_STATIC_LOCAL(String, testDirNotAllowed, (ASCIILiteral("/tmp/WebKitSeccompFilters/testNotAllowed")));
-DEFINE_STATIC_LOCAL(String, testFileNotAllowed, (testDirReadAndWrite + "/testFilePolicy"));
-DEFINE_STATIC_LOCAL(String, testFileReadAndWrite, (testDirNotAllowed + "/testFilePolicy"));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, rootDir, (ASCIILiteral("/")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, homeDir, (String(getenv("HOME"))));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, usrDir, (ASCIILiteral("/usr")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, usrSbinDir, (ASCIILiteral("/usr/sbin")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testDirRead, (ASCIILiteral("/tmp/WebKitSeccompFilters/testRead")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testDirWrite, (ASCIILiteral("/tmp/WebKitSeccompFilters/testWrite")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testDirReadAndWrite, (ASCIILiteral("/tmp/WebKitSeccompFilters/testReadAndWrite")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testDirNotAllowed, (ASCIILiteral("/tmp/WebKitSeccompFilters/testNotAllowed")));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testFileNotAllowed, (testDirReadAndWrite + "/testFilePolicy"));
+DEPRECATED_DEFINE_STATIC_LOCAL(String, testFileReadAndWrite, (testDirNotAllowed + "/testFilePolicy"));
static const mode_t defaultMode = S_IRUSR | S_IWUSR | S_IXUSR;
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp
index c6f3b1bac..f41e44a5e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
-#include <WebKit2/WKString.h>
+#include <WebKit/WKString.h>
namespace TestWebKitAPI {
@@ -56,14 +59,14 @@ static void willGoToBackForwardListItem(WKPageRef, WKBackForwardListItemRef, WKT
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV1 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 1;
- loaderClient.clientInfo = 0;
+
+ loaderClient.base.version = 1;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
loaderClient.willGoToBackForwardListItem = willGoToBackForwardListItem;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
TEST(WebKit2, ShouldGoToBackForwardListItem)
@@ -90,3 +93,5 @@ TEST(WebKit2, ShouldGoToBackForwardListItem)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
index 0f15c477c..5eba75a9e 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldGoToBackForwardListItem_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleBackForwardListItem.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleBackForwardListItem.h>
namespace TestWebKitAPI {
@@ -57,14 +60,16 @@ ShouldGoToBackForwardListItemTest::ShouldGoToBackForwardListItemTest(const std::
void ShouldGoToBackForwardListItemTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV1 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 1;
- pageLoaderClient.clientInfo = this;
+ pageLoaderClient.base.version = 1;
+ pageLoaderClient.base.clientInfo = this;
pageLoaderClient.shouldGoToBackForwardListItem = shouldGoToBackForwardListItemCallback;
- WKBundlePageSetPageLoaderClient(page, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp
new file mode 100644
index 000000000..f8098e6f1
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/ShouldKeepCurrentBackForwardListItemInList.cpp
@@ -0,0 +1,163 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+
+// This test navigates from simple.html, to simple2.html, to simple3.html
+// When navigating from simple2 to simple3, it disallows the simple2 back/forward list item from staying in the list
+// It then navigates back from simple3, expecting to land at simple.
+
+namespace TestWebKitAPI {
+
+static bool finished = false;
+static bool successfulSoFar = true;
+static int navigationNumber = 0;
+
+static bool itemURLLastComponentIsString(WKBackForwardListItemRef item, const char* string)
+{
+ WKRetainPtr<WKURLRef> url = adoptWK(WKBackForwardListItemCopyURL(item));
+ WKRetainPtr<WKStringRef> path = adoptWK(WKURLCopyLastPathComponent(url.get()));
+
+ return WKStringIsEqualToUTF8CString(path.get(), string);
+}
+
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void*)
+{
+ // Only mark finished when the main frame loads
+ if (!WKFrameIsMainFrame(frame))
+ return;
+
+ finished = true;
+ navigationNumber++;
+
+ WKBackForwardListRef list = WKPageGetBackForwardList(page);
+ WKBackForwardListItemRef currentItem = WKBackForwardListGetCurrentItem(list);
+ WKBackForwardListItemRef backItem = WKBackForwardListGetBackItem(list);
+ WKBackForwardListItemRef forwardItem = WKBackForwardListGetForwardItem(list);
+ unsigned forwardCount = WKBackForwardListGetForwardListCount(list);
+
+ // This test should never have a forward list.
+ if (forwardCount)
+ successfulSoFar = false;
+
+ if (navigationNumber == 1) {
+ // We've only performed 1 navigation, we should only have a current item.
+ if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple.html"))
+ successfulSoFar = false;
+ if (backItem || forwardItem)
+ successfulSoFar = false;
+ } else if (navigationNumber == 2) {
+ // On the second navigation, simple2 should be current and simple should be the back item.
+ if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple2.html"))
+ successfulSoFar = false;
+ if (!backItem || !itemURLLastComponentIsString(backItem, "simple.html"))
+ successfulSoFar = false;
+ if (forwardItem)
+ successfulSoFar = false;
+ } else if (navigationNumber == 3) {
+ // On the third navigation the item for simple2 should have been removed.
+ // So simple3 should be current and simple should still be the back item.
+ if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple3.html"))
+ successfulSoFar = false;
+ if (!backItem || !itemURLLastComponentIsString(backItem, "simple.html"))
+ successfulSoFar = false;
+ if (forwardItem)
+ successfulSoFar = false;
+ } else if (navigationNumber == 4) {
+ // After the fourth navigation (which was a "back" navigation), the item for simple3 should have been removed.
+ // So simple should be current and there should be no other items.
+ if (!currentItem || !itemURLLastComponentIsString(currentItem, "simple.html"))
+ successfulSoFar = false;
+ if (backItem || forwardItem)
+ successfulSoFar = false;
+ }
+}
+
+static void willGoToBackForwardListItem(WKPageRef, WKBackForwardListItemRef item, WKTypeRef userData, const void*)
+{
+ if (!itemURLLastComponentIsString(item, "simple.html"))
+ successfulSoFar = false;
+}
+
+static bool shouldKeepCurrentBackForwardListItemInList(WKPageRef page, WKBackForwardListItemRef item, const void*)
+{
+ // We make sure the item for "simple2.html" is removed when we navigate to "simple3.html"
+ // We also want to make sure the item for "simple3.html" is removed when we go back to "simple.html"
+ // So we only want to keep "simple.html"
+ return itemURLLastComponentIsString(item, "simple.html");
+}
+
+static void setPageLoaderClient(WKPageRef page)
+{
+ WKPageLoaderClientV5 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 5;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+ loaderClient.shouldKeepCurrentBackForwardListItemInList = shouldKeepCurrentBackForwardListItemInList;
+ loaderClient.willGoToBackForwardListItem = willGoToBackForwardListItem;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+}
+
+TEST(WebKit2, ShouldKeepCurrentBackForwardListItemInList)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ PlatformWebView webView(context.get());
+ setPageLoaderClient(webView.page());
+
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get());
+ Util::run(&finished);
+ EXPECT_EQ(successfulSoFar, true);
+
+ finished = false;
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple2", "html")).get());
+ Util::run(&finished);
+ EXPECT_EQ(successfulSoFar, true);
+
+ finished = false;
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple3", "html")).get());
+ Util::run(&finished);
+ EXPECT_EQ(successfulSoFar, true);
+
+ finished = false;
+ WKPageGoBack(webView.page());
+ Util::run(&finished);
+
+ EXPECT_EQ(successfulSoFar, true);
+ EXPECT_EQ(navigationNumber, 4);
+}
+
+} // namespace TestWebKitAPI
+
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp
index d6a787061..226f52cc2 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/SpacebarScrolling.cpp
@@ -24,10 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "JavaScriptTest.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKPreferencesPrivate.h>
namespace TestWebKitAPI {
@@ -48,20 +52,30 @@ static void didNotHandleKeyEventCallback(WKPageRef, WKNativeEventPtr event, cons
TEST(WebKit2, SpacebarScrolling)
{
WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextWithInjectedBundle());
- PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ // Turn off threaded scrolling; synchronously waiting for the main thread scroll position to
+ // update using WKPageForceRepaint would be better, but for some reason the test still fails occasionally.
+ WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(Util::toWK("NoThreadedScrollingPageGroup").get()));
+ WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroup.get());
+ WKPreferencesSetThreadedScrollingEnabled(preferences, false);
+
+ PlatformWebView webView(context.get(), pageGroup.get());
+
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.version = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
- WKPageUIClient uiClient;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPageUIClientV0 uiClient;
memset(&uiClient, 0, sizeof(uiClient));
+ uiClient.base.version = 0;
uiClient.didNotHandleKeyEvent = didNotHandleKeyEventCallback;
- WKPageSetPageUIClient(webView.page(), &uiClient);
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("spacebar-scrolling", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -75,13 +89,11 @@ TEST(WebKit2, SpacebarScrolling)
EXPECT_JS_FALSE(webView.page(), "isDocumentScrolled()");
EXPECT_JS_TRUE(webView.page(), "textFieldContainsSpace()");
- // On Mac, a key down event represents both a raw key down and a key press. On Windows, a key
- // down event only represents a raw key down. We expect the key press to be handled (because it
- // inserts text into the text field). But the raw key down should not be handled.
-#if PLATFORM(MAC)
+ // On Mac, a key down event represents both a raw key down and a key press.
+ // We expect the key press to be handled (because it inserts text into the text field),
+ // but the raw key down should not be handled.
+#if PLATFORM(COCOA)
EXPECT_FALSE(didNotHandleKeyDownEvent);
-#elif PLATFORM(WIN)
- EXPECT_TRUE(didNotHandleKeyDownEvent);
#endif
EXPECT_JS_EQ(webView.page(), "blurTextField()", "undefined");
@@ -89,18 +101,14 @@ TEST(WebKit2, SpacebarScrolling)
didNotHandleKeyDownEvent = false;
webView.simulateSpacebarKeyPress();
- // This EXPECT_JS_TRUE test fails on Windows port
- // https://bugs.webkit.org/show_bug.cgi?id=84961
-#if !PLATFORM(WIN)
EXPECT_JS_TRUE(webView.page(), "isDocumentScrolled()");
-#endif
EXPECT_JS_TRUE(webView.page(), "textFieldContainsSpace()");
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
EXPECT_FALSE(didNotHandleKeyDownEvent);
-#elif PLATFORM(WIN)
- EXPECT_TRUE(didNotHandleKeyDownEvent);
#endif
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad.cpp
new file mode 100644
index 000000000..386dfd303
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad.cpp
@@ -0,0 +1,83 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKRetainPtr.h>
+
+namespace TestWebKitAPI {
+
+static bool done;
+static bool receivedMessageFromBundle;
+
+static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo)
+{
+ if (WKStringIsEqualToUTF8CString(messageName, "StopLoadingDuringDidFailProvisionalLoadTestDone"))
+ receivedMessageFromBundle = true;
+}
+
+static void setInjectedBundleClient(WKContextRef context)
+{
+ WKContextInjectedBundleClientV0 injectedBundleClient;
+ memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
+
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
+}
+
+static void didFailProvisionalLoadWithErrorForFrame(WKPageRef, WKFrameRef, WKErrorRef, WKTypeRef, const void*)
+{
+ // The injected bundle is notified of the failed load first. If we also receive this callback, the test didn't crash.
+ EXPECT_TRUE(receivedMessageFromBundle);
+ done = true;
+}
+
+TEST(WebKit2, StopLoadingDuringDidFailProvisionalLoadTest)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("StopLoadingDuringDidFailProvisionalLoadTest"));
+ setInjectedBundleClient(context.get());
+
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+ loaderClient.didFailProvisionalLoadWithErrorForFrame = didFailProvisionalLoadWithErrorForFrame;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKRetainPtr<WKURLRef> url(AdoptWK, Util::URLForNonExistentResource());
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&done);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad_bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad_bundle.cpp
new file mode 100644
index 000000000..56105522b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/StopLoadingDuringDidFailProvisionalLoad_bundle.cpp
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "InjectedBundleTest.h"
+#include "PlatformUtilities.h"
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundleFramePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
+
+namespace TestWebKitAPI {
+
+class StopLoadingDuringDidFailProvisionalLoadTest : public InjectedBundleTest {
+public:
+ StopLoadingDuringDidFailProvisionalLoadTest(const std::string& identifier)
+ : InjectedBundleTest(identifier)
+ {
+ }
+
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef) override;
+ void didFailProvisionalLoad(WKBundlePageRef, WKBundleFrameRef);
+
+ WKBundleRef m_bundle;
+};
+
+static InjectedBundleTest::Register<StopLoadingDuringDidFailProvisionalLoadTest> registrar("StopLoadingDuringDidFailProvisionalLoadTest");
+
+static void didFailProvisionalLoadWithErrorForFrameCallback(WKBundlePageRef page, WKBundleFrameRef frame, WKErrorRef, WKTypeRef*, const void *clientInfo)
+{
+ ((StopLoadingDuringDidFailProvisionalLoadTest*)clientInfo)->didFailProvisionalLoad(page, frame);
+}
+
+void StopLoadingDuringDidFailProvisionalLoadTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
+{
+ m_bundle = bundle;
+
+ WKBundlePageLoaderClientV2 pageLoaderClient;
+ memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
+
+ pageLoaderClient.base.version = 2;
+ pageLoaderClient.base.clientInfo = this;
+ pageLoaderClient.didFailProvisionalLoadWithErrorForFrame = didFailProvisionalLoadWithErrorForFrameCallback;
+
+ WKBundlePageSetPageLoaderClient(page, &pageLoaderClient.base);
+}
+
+void StopLoadingDuringDidFailProvisionalLoadTest::didFailProvisionalLoad(WKBundlePageRef page, WKBundleFrameRef)
+{
+ WKBundlePageStopLoading(page);
+ WKBundlePostMessage(m_bundle, Util::toWK("StopLoadingDuringDidFailProvisionalLoadTestDone").get(), nullptr);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp
index 780ce522f..2e1950860 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/TerminateTwice.cpp
@@ -24,11 +24,17 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
namespace TestWebKitAPI {
+// Disabled in debug mode while investigating <https://bugs.webkit.org/show_bug.cgi?id=136012>.
+#ifdef NDEBUG
+
static bool loaded;
static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
@@ -41,12 +47,13 @@ TEST(WebKit2, TerminateTwice)
WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
WKPageLoadURL(webView.page(), url.get());
@@ -61,5 +68,8 @@ TEST(WebKit2, TerminateTwice)
WKPageTerminate(webView.page());
}
+#endif
+
} // namespace TestWebKitAPI
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing.cpp
new file mode 100644
index 000000000..cfe0be254
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI && !PLATFORM(MAC)
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <wtf/StdLibExtras.h>
+
+namespace TestWebKitAPI {
+
+struct WebKit2TextFieldBeginAndEditEditingTest : public ::testing::Test {
+ std::unique_ptr<PlatformWebView> webView;
+
+ WKRetainPtr<WKStringRef> messageName;
+
+ bool didFinishLoad { false };
+ bool didReceiveMessage { false };
+
+ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef, const void* clientInfo)
+ {
+ WebKit2TextFieldBeginAndEditEditingTest& client = *static_cast<WebKit2TextFieldBeginAndEditEditingTest*>(const_cast<void*>(clientInfo));
+ client.messageName = messageName;
+ client.didReceiveMessage = true;
+ }
+
+ static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void* clientInfo)
+ {
+ WebKit2TextFieldBeginAndEditEditingTest& client = *static_cast<WebKit2TextFieldBeginAndEditEditingTest*>(const_cast<void*>(clientInfo));
+ client.didFinishLoad = true;
+ }
+
+ static void setInjectedBundleClient(WKContextRef context, const void* clientInfo)
+ {
+ WKContextInjectedBundleClientV1 injectedBundleClient;
+ memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 1;
+ injectedBundleClient.base.clientInfo = clientInfo;
+ injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
+
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
+ }
+
+ static void setPageLoaderClient(WKPageRef page, const void* clientInfo)
+ {
+ WKPageLoaderClientV6 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 6;
+ loaderClient.base.clientInfo = clientInfo;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+ }
+
+ static void nullJavaScriptCallback(WKSerializedScriptValueRef, WKErrorRef, void*)
+ {
+ }
+
+ void executeJavaScriptAndCheckDidReceiveMessage(const char* javaScriptCode, const char* expectedMessageName)
+ {
+ didReceiveMessage = false;
+ WKPageRunJavaScriptInMainFrame(webView->page(), Util::toWK(javaScriptCode).get(), 0, nullJavaScriptCallback);
+ Util::run(&didReceiveMessage);
+ EXPECT_WK_STREQ(expectedMessageName, messageName);
+ }
+
+ // From ::testing::Test
+ void SetUp() override
+ {
+ WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("TextFieldDidBeginAndEndEditingEventsTest"));
+ setInjectedBundleClient(context.get(), this);
+
+ webView = std::make_unique<PlatformWebView>(context.get());
+ setPageLoaderClient(webView->page(), this);
+
+ didFinishLoad = false;
+ didReceiveMessage = false;
+
+ WKPageLoadURL(webView->page(), adoptWK(Util::createURLForResource("input-focus-blur", "html")).get());
+ Util::run(&didFinishLoad);
+ }
+};
+
+TEST_F(WebKit2TextFieldBeginAndEditEditingTest, TextFieldDidBeginAndEndEditingEvents)
+{
+ executeJavaScriptAndCheckDidReceiveMessage("focusTextField('input')", "DidReceiveTextFieldDidBeginEditing");
+ executeJavaScriptAndCheckDidReceiveMessage("blurTextField('input')", "DidReceiveTextFieldDidEndEditing");
+}
+
+TEST_F(WebKit2TextFieldBeginAndEditEditingTest, TextFieldDidBeginAndEndEditingEventsInReadOnlyField)
+{
+ executeJavaScriptAndCheckDidReceiveMessage("focusTextField('readonly')", "DidReceiveTextFieldDidBeginEditing");
+ executeJavaScriptAndCheckDidReceiveMessage("blurTextField('readonly')", "DidReceiveTextFieldDidEndEditing");
+}
+
+TEST_F(WebKit2TextFieldBeginAndEditEditingTest, TextFieldDidBeginShouldNotBeDispatchedForAlreadyFocusedField)
+{
+ executeJavaScriptAndCheckDidReceiveMessage("focusTextField('input'); focusTextField('input')", "DidReceiveTextFieldDidBeginEditing");
+ executeJavaScriptAndCheckDidReceiveMessage("blurTextField('input')", "DidReceiveTextFieldDidEndEditing");
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp
new file mode 100644
index 000000000..19898f703
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/TextFieldDidBeginAndEndEditing_Bundle.cpp
@@ -0,0 +1,76 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI && !PLATFORM(MAC)
+
+#include "InjectedBundleTest.h"
+
+#include "PlatformUtilities.h"
+#include <WebKit/WKBundlePage.h>
+
+namespace TestWebKitAPI {
+
+class TextFieldDidBeginAndEndEditingEventsTest : public InjectedBundleTest {
+public:
+ TextFieldDidBeginAndEndEditingEventsTest(const std::string& identifier);
+
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef);
+};
+
+static InjectedBundleTest::Register<TextFieldDidBeginAndEndEditingEventsTest> registrar("TextFieldDidBeginAndEndEditingEventsTest");
+
+static void textFieldDidBeginEditing(WKBundlePageRef, WKBundleNodeHandleRef inputElement, WKBundleFrameRef, const void*)
+{
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("DidReceiveTextFieldDidBeginEditing").get(), nullptr);
+}
+
+static void textFieldDidEndEditing(WKBundlePageRef, WKBundleNodeHandleRef inputElement, WKBundleFrameRef, const void*)
+{
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("DidReceiveTextFieldDidEndEditing").get(), nullptr);
+}
+
+TextFieldDidBeginAndEndEditingEventsTest::TextFieldDidBeginAndEndEditingEventsTest(const std::string& identifier)
+ : InjectedBundleTest(identifier)
+{
+}
+
+void TextFieldDidBeginAndEndEditingEventsTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
+{
+ WKBundlePageFormClientV2 formClient;
+ memset(&formClient, 0, sizeof(formClient));
+
+ formClient.base.version = 2;
+ formClient.base.clientInfo = this;
+ formClient.textFieldDidBeginEditing = textFieldDidBeginEditing;
+ formClient.textFieldDidEndEditing = textFieldDidEndEditing;
+
+ WKBundlePageSetFormClient(page, &formClient.base);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp
new file mode 100644
index 000000000..24dd943de
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/UserMedia.cpp
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2014 Igalia S.L
+ *
+ * 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 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
+ */
+
+#include "config.h"
+
+#if WK_HAVE_C_SPI
+
+#if ENABLE(MEDIA_STREAM)
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <WebKit/WKRetainPtr.h>
+#include <string.h>
+#include <vector>
+
+namespace TestWebKitAPI {
+
+static bool done;
+
+void decidePolicyForUserMediaPermissionRequestCallBack(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKUserMediaPermissionRequestRef permissionRequest, const void* /* clientInfo */)
+{
+ WKRetainPtr<WKArrayRef> audioDeviceUIDs = WKUserMediaPermissionRequestAudioDeviceUIDs(permissionRequest);
+ WKRetainPtr<WKArrayRef> videoDeviceUIDs = WKUserMediaPermissionRequestVideoDeviceUIDs(permissionRequest);
+
+ if (WKArrayGetSize(videoDeviceUIDs.get()) || WKArrayGetSize(audioDeviceUIDs.get())) {
+ WKRetainPtr<WKStringRef> videoDeviceUID;
+ if (WKArrayGetSize(videoDeviceUIDs.get()))
+ videoDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(videoDeviceUIDs.get(), 0));
+ else
+ videoDeviceUID = WKStringCreateWithUTF8CString("");
+
+ WKRetainPtr<WKStringRef> audioDeviceUID;
+ if (WKArrayGetSize(audioDeviceUIDs.get()))
+ audioDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(audioDeviceUIDs.get(), 0));
+ else
+ audioDeviceUID = WKStringCreateWithUTF8CString("");
+
+ WKUserMediaPermissionRequestAllow(permissionRequest, videoDeviceUID.get(), audioDeviceUID.get());
+ }
+
+ done = true;
+}
+
+TEST(WebKit2, UserMediaBasic)
+{
+ auto context = adoptWK(WKContextCreate());
+ PlatformWebView webView(context.get());
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+
+ uiClient.base.version = 5;
+ uiClient.decidePolicyForUserMediaPermissionRequest = decidePolicyForUserMediaPermissionRequestCallBack;
+
+ WKPageSetPageUIClient(webView.page(), &uiClient.base);
+
+ done = false;
+ auto url = adoptWK(Util::createURLForResource("getUserMedia", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&done);
+}
+
+} // namespace TestWebKitAPI
+
+#endif // ENABLE(MEDIA_STREAM)
+
+#endif // WK_HAVE_C_SPI
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp
index bc02dc878..064cbb838 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage.cpp
@@ -24,12 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "Test.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
namespace TestWebKitAPI {
@@ -42,7 +43,7 @@ public:
}
WKRetainPtr<WKContextRef> context;
- OwnPtr<PlatformWebView> webView;
+ std::unique_ptr<PlatformWebView> webView;
WKRetainPtr<WKTypeRef> recievedBody;
@@ -65,24 +66,26 @@ public:
static void setInjectedBundleClient(WKContextRef context, const void* clientInfo)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV1 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = kWKContextInjectedBundleClientCurrentVersion;
- injectedBundleClient.clientInfo = clientInfo;
+
+ injectedBundleClient.base.version = 1;
+ injectedBundleClient.base.clientInfo = clientInfo;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
static void setPageLoaderClient(WKPageRef page, const void* clientInfo)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
- loaderClient.clientInfo = clientInfo;
+
+ loaderClient.base.version = 3;
+ loaderClient.base.clientInfo = clientInfo;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
virtual void SetUp()
@@ -90,7 +93,7 @@ public:
context = adoptWK(Util::createContextForInjectedBundleTest("UserMessageTest"));
setInjectedBundleClient(context.get(), this);
- webView = adoptPtr(new PlatformWebView(context.get()));
+ webView = std::make_unique<PlatformWebView>(context.get());
setPageLoaderClient(webView->page(), this);
didFinishLoad = false;
@@ -155,3 +158,5 @@ TEST_F(WebKit2UserMessageRoundTripTest, WKString)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp
index 29ede3d83..cec713655 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/UserMessage_Bundle.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
@@ -50,3 +53,5 @@ private:
static InjectedBundleTest::Register<UserMessageTest> registrar("UserMessageTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle.cpp
new file mode 100644
index 000000000..b9a84ff80
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle.cpp
@@ -0,0 +1,86 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+
+namespace TestWebKitAPI {
+
+static bool done;
+static bool loadDone;
+
+static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef body, const void*)
+{
+ if (!WKStringIsEqualToUTF8CString(messageName, "SUCCESS"))
+ FAIL();
+ else
+ SUCCEED();
+
+ done = true;
+}
+
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void*)
+{
+ loadDone = true;
+}
+
+TEST(WebKit2, WKBundleFileHandle)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("WKBundleFileHandleTest"));
+
+ WKContextInjectedBundleClientV0 injectedBundleClient;
+ memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+ injectedBundleClient.base.version = 0;
+ injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
+ WKContextSetInjectedBundleClient(context.get(), &injectedBundleClient.base);
+
+ PlatformWebView webView(context.get());
+
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
+
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("bundle-file", "html")).get());
+ Util::run(&loadDone);
+
+ // Get path to a file.
+ auto urlToFile = adoptWK(Util::createURLForResource("simple", "html"));
+ auto pathToFile = adoptWK(WKURLCopyPath(urlToFile.get()));
+
+ WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("TestFile").get(), pathToFile.get());
+
+ Util::run(&done);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle_Bundle.cpp
new file mode 100644
index 000000000..27d359ba6
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKBundleFileHandle_Bundle.cpp
@@ -0,0 +1,99 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "InjectedBundleTest.h"
+
+#include "PlatformUtilities.h"
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleFileHandleRef.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundleScriptWorld.h>
+
+namespace TestWebKitAPI {
+
+static WKBundlePageRef loadedPage;
+
+class WKBundleFileHandleTest : public InjectedBundleTest {
+public:
+ WKBundleFileHandleTest(const std::string& identifier)
+ : InjectedBundleTest(identifier)
+ {
+ }
+
+private:
+ virtual void didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef messageBody) override
+ {
+ if (!WKStringIsEqualToUTF8CString(messageName, "TestFile")) {
+ WKBundlePostMessage(bundle, Util::toWK("FAIL").get(), Util::toWK("Recieved invalid message").get());
+ return;
+ }
+
+ if (!loadedPage) {
+ WKBundlePostMessage(bundle, Util::toWK("FAIL").get(), Util::toWK("No loaded page").get());
+ return;
+ }
+
+ if (WKGetTypeID(messageBody) != WKStringGetTypeID()) {
+ WKBundlePostMessage(bundle, Util::toWK("FAIL").get(), Util::toWK("Message body has invalid type").get());
+ return;
+ }
+
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(loadedPage);
+ WKBundleScriptWorldRef world = WKBundleScriptWorldNormalWorld();
+
+ JSGlobalContextRef globalContext = WKBundleFrameGetJavaScriptContextForWorld(mainFrame, world);
+
+ auto fileHandle = adoptWK(WKBundleFileHandleCreateWithPath((WKStringRef)messageBody));
+ JSValueRef jsFileHandle = WKBundleFrameGetJavaScriptWrapperForFileForWorld(mainFrame, fileHandle.get(), world);
+
+ JSObjectRef globalObject = JSContextGetGlobalObject(globalContext);
+
+ JSStringRef jsString = JSStringCreateWithUTF8CString("testFile");
+ JSValueRef function = JSObjectGetProperty(globalContext, globalObject, jsString, nullptr);
+ JSStringRelease(jsString);
+
+ JSValueRef result = JSObjectCallAsFunction(globalContext, (JSObjectRef)function, globalObject, 1, &jsFileHandle, nullptr);
+
+ if (JSValueToBoolean(globalContext, result))
+ WKBundlePostMessage(bundle, Util::toWK("SUCCESS").get(), nullptr);
+ else
+ WKBundlePostMessage(bundle, Util::toWK("FAIL").get(), Util::toWK("Script failed").get());
+ }
+
+ virtual void didCreatePage(WKBundleRef bundle, WKBundlePageRef page) override
+ {
+ loadedPage = page;
+ }
+};
+
+static InjectedBundleTest::Register<WKBundleFileHandleTest> registrar("WKBundleFileHandleTest");
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection.cpp
deleted file mode 100644
index d2782a446..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection.cpp
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-
-namespace TestWebKitAPI {
-
-// State for part 1 - setting up the connection.
-static bool connectionEstablished;
-static WKConnectionRef connectionToBundle;
-
-// State for part 2 - send/recieving messages.
-static bool messageReceived;
-
-// State for part 3 - tearing down the connection.
-static bool connectionTornDown;
-
-
-/* WKContextConnectionClient */
-static void didCreateConnection(WKContextRef context, WKConnectionRef connection, const void* clientInfo)
-{
- connectionEstablished = true;
-
- // Store off the conneciton to use.
- connectionToBundle = (WKConnectionRef)WKRetain(connection);
-}
-
-/* WKConnectionClient */
-static void connectionDidReceiveMessage(WKConnectionRef connection, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo)
-{
- // We only expect to get the "Pong" message.
- EXPECT_WK_STREQ(messageName, "PongMessageName");
- EXPECT_WK_STREQ((WKStringRef)messageBody, "PongMessageBody");
-
- messageReceived = true;
-}
-
-static void connectionDidClose(WKConnectionRef connection, const void* clientInfo)
-{
- connectionTornDown = true;
-}
-
-TEST(WebKit2, WKConnectionTest)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextForInjectedBundleTest("WKConnectionTest"));
-
- // Set up the context's connection client so that we can access the connection when
- // it is created.
- WKContextConnectionClient contextConnectionClient;
- memset(&contextConnectionClient, 0, sizeof(contextConnectionClient));
- contextConnectionClient.version = kWKContextConnectionClientCurrentVersion;
- contextConnectionClient.clientInfo = 0;
- contextConnectionClient.didCreateConnection = didCreateConnection;
- WKContextSetConnectionClient(context.get(), &contextConnectionClient);
-
- // Load a simple page to start the WebProcess and establish a connection.
- PlatformWebView webView(context.get());
- WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
- WKPageLoadURL(webView.page(), url.get());
-
- // Wait until the connection is established.
- Util::run(&connectionEstablished);
- ASSERT_NOT_NULL(connectionToBundle);
-
- // Setup a client on the connection so we can listen for messages and
- // tear down notifications.
- WKConnectionClient connectionClient;
- memset(&connectionClient, 0, sizeof(connectionClient));
- connectionClient.version = WKConnectionClientCurrentVersion;
- connectionClient.clientInfo = 0;
- connectionClient.didReceiveMessage = connectionDidReceiveMessage;
- connectionClient.didClose = connectionDidClose;
- WKConnectionSetConnectionClient(connectionToBundle, &connectionClient);
-
- // Post a simple message to the bundle via the connection.
- WKConnectionPostMessage(connectionToBundle, Util::toWK("PingMessageName").get(), Util::toWK("PingMessageBody").get());
-
- // Wait for the reply.
- Util::run(&messageReceived);
-
- // Terminate the page to force the connection closed.
- WKPageTerminate(webView.page());
-
- // Wait for the connection to close.
- Util::run(&connectionTornDown);
-
- // This release is to balance the retain in didCreateConnection.
- WKRelease(connectionToBundle);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp
deleted file mode 100644
index 9ab2c9768..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKConnection_Bundle.cpp
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "InjectedBundleTest.h"
-#include "PlatformUtilities.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-/* WKConnectionClient */
-static void connectionDidReceiveMessage(WKConnectionRef connection, WKStringRef messageName, WKTypeRef messageBody, const void *clientInfo)
-{
- // Post a simple message to the back to the application layer.
- WKConnectionPostMessage(connection, Util::toWK("PongMessageName").get(), Util::toWK("PongMessageBody").get());
-}
-
-class WKConnectionTest : public InjectedBundleTest {
-public:
- WKConnectionTest(const std::string& identifier)
- : InjectedBundleTest(identifier)
- {
- }
-
- virtual void initialize(WKBundleRef bundle, WKTypeRef)
- {
- WKConnectionClient connectionClient;
- memset(&connectionClient, 0, sizeof(connectionClient));
- connectionClient.version = WKConnectionClientCurrentVersion;
- connectionClient.clientInfo = 0;
- connectionClient.didReceiveMessage = connectionDidReceiveMessage;
- WKConnectionSetConnectionClient(WKBundleGetApplicationConnection(bundle), &connectionClient);
- }
-};
-
-static InjectedBundleTest::Register<WKConnectionTest> registrar("WKConnectionTest");
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKImageCreateCGImageCrash.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKImageCreateCGImageCrash.cpp
new file mode 100644
index 000000000..f0d19025f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKImageCreateCGImageCrash.cpp
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include <WebKit/WKImageCG.h>
+
+namespace TestWebKitAPI {
+
+TEST(WebKit2, WKImageCreateCGImageCrash)
+{
+ EXPECT_FALSE(WKImageCreateCGImage(nullptr));
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp
new file mode 100644
index 000000000..d041eeaed
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageConfiguration.cpp
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+
+#include <WebKit/WKWebsiteDataStoreRef.h>
+
+namespace TestWebKitAPI {
+
+TEST(WebKit2, WKPageConfigurationEmpty)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+
+ ASSERT_NULL(WKPageConfigurationGetContext(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetUserContentController(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetPageGroup(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetPreferences(configuration.get()));
+ ASSERT_NULL(WKPageConfigurationGetRelatedPage(configuration.get()));
+}
+
+static bool didFinishLoad;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void setPageLoaderClient(WKPageRef page)
+{
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+}
+
+TEST(WebKit2, WKPageConfigurationBasic)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ WKPageConfigurationSetContext(configuration.get(), context.get());
+
+ PlatformWebView webView(configuration.get());
+ setPageLoaderClient(webView.page());
+
+ WKRetainPtr<WKPageConfigurationRef> copiedConfiguration = adoptWK(WKPageCopyPageConfiguration(webView.page()));
+ ASSERT_EQ(context.get(), WKPageConfigurationGetContext(copiedConfiguration.get()));
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ didFinishLoad = false;
+ Util::run(&didFinishLoad);
+}
+
+TEST(WebKit2, WKPageConfigurationBasicWithDataStore)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ WKPageConfigurationSetContext(configuration.get(), context.get());
+ WKRetainPtr<WKWebsiteDataStoreRef> websiteDataStore = WKWebsiteDataStoreGetDefaultDataStore();
+ WKPageConfigurationSetWebsiteDataStore(configuration.get(), websiteDataStore.get());
+
+ PlatformWebView webView(configuration.get());
+ setPageLoaderClient(webView.page());
+
+ WKRetainPtr<WKPageConfigurationRef> copiedConfiguration = adoptWK(WKPageCopyPageConfiguration(webView.page()));
+ ASSERT_EQ(context.get(), WKPageConfigurationGetContext(copiedConfiguration.get()));
+ ASSERT_EQ(WKWebsiteDataStoreGetDefaultDataStore(), WKPageConfigurationGetWebsiteDataStore(copiedConfiguration.get()));
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ didFinishLoad = false;
+ Util::run(&didFinishLoad);
+}
+
+TEST(WebKit2, WKPageConfigurationBasicWithNonPersistentDataStore)
+{
+ WKRetainPtr<WKPageConfigurationRef> configuration = adoptWK(WKPageConfigurationCreate());
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+ WKPageConfigurationSetContext(configuration.get(), context.get());
+ WKRetainPtr<WKWebsiteDataStoreRef> websiteDataStore = adoptWK(WKWebsiteDataStoreCreateNonPersistentDataStore());
+ WKPageConfigurationSetWebsiteDataStore(configuration.get(), websiteDataStore.get());
+
+ PlatformWebView webView(configuration.get());
+ setPageLoaderClient(webView.page());
+
+ WKRetainPtr<WKPageConfigurationRef> copiedConfiguration = adoptWK(WKPageCopyPageConfiguration(webView.page()));
+ ASSERT_EQ(context.get(), WKPageConfigurationGetContext(copiedConfiguration.get()));
+ ASSERT_EQ(websiteDataStore.get(), WKPageConfigurationGetWebsiteDataStore(copiedConfiguration.get()));
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("simple", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ didFinishLoad = false;
+ Util::run(&didFinishLoad);
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKPageCopySessionStateWithFiltering.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageCopySessionStateWithFiltering.cpp
new file mode 100644
index 000000000..6ce49a13b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageCopySessionStateWithFiltering.cpp
@@ -0,0 +1,136 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+
+namespace TestWebKitAPI {
+
+static bool didFinishLoad;
+static WKRetainPtr<WKSessionStateRef> sessionStateWithFirstItemRemoved;
+static WKRetainPtr<WKSessionStateRef> sessionStateWithAllItemsRemoved;
+
+static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void setPageLoaderClient(WKPageRef page)
+{
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+}
+
+static bool filterFirstItemCallback(WKPageRef page, WKStringRef valueType, WKTypeRef value, void* context)
+{
+ if (!WKStringIsEqual(valueType, WKPageGetSessionBackForwardListItemValueType()))
+ return true;
+
+ ASSERT(WKGetTypeID(value) == WKBackForwardListItemGetTypeID());
+ WKBackForwardListItemRef backForwardListItem = static_cast<WKBackForwardListItemRef>(value);
+
+ WKRetainPtr<WKURLRef> url = adoptWK(WKBackForwardListItemCopyURL(backForwardListItem));
+ WKRetainPtr<WKStringRef> path = adoptWK(WKURLCopyLastPathComponent(url.get()));
+
+ return !WKStringIsEqualToUTF8CString(path.get(), "simple.html");
+}
+
+static bool filterAllItemsCallback(WKPageRef page, WKStringRef valueType, WKTypeRef value, void* context)
+{
+ return false;
+}
+
+static void createSessionStates(WKContextRef context)
+{
+ PlatformWebView webView(context);
+ setPageLoaderClient(webView.page());
+
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple2", "html")).get());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple3", "html")).get());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKPageGoBack(webView.page());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKPageGoBack(webView.page());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ // Should be back on simple.html at this point.
+
+ sessionStateWithFirstItemRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterFirstItemCallback)));
+ sessionStateWithAllItemsRemoved = adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), filterAllItemsCallback)));
+}
+
+TEST(WebKit2, WKPageCopySessionStateWithFiltering)
+{
+ WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
+
+ createSessionStates(context.get());
+
+ EXPECT_NOT_NULL(sessionStateWithFirstItemRemoved);
+ PlatformWebView webView1(context.get());
+ setPageLoaderClient(webView1.page());
+ WKPageRestoreFromSessionState(webView1.page(), sessionStateWithFirstItemRemoved.get());
+ Util::run(&didFinishLoad);
+ didFinishLoad = false;
+
+ WKBackForwardListRef backForwardList1 = WKPageGetBackForwardList(webView1.page());
+ EXPECT_EQ(0u, WKBackForwardListGetBackListCount(backForwardList1));
+ EXPECT_EQ(1u, WKBackForwardListGetForwardListCount(backForwardList1));
+
+ EXPECT_NOT_NULL(sessionStateWithAllItemsRemoved);
+ PlatformWebView webView2(context.get());
+ setPageLoaderClient(webView2.page());
+ WKPageRestoreFromSessionState(webView2.page(), sessionStateWithAllItemsRemoved.get());
+ // Because the session state ends up being empty, nothing is actually loaded.
+
+ WKBackForwardListRef backForwardList2 = WKPageGetBackForwardList(webView2.page());
+ EXPECT_EQ(0u, WKBackForwardListGetBackListCount(backForwardList2));
+ EXPECT_EQ(0u, WKBackForwardListGetForwardListCount(backForwardList2));
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp
index 85490de39..929baaa71 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageGetScaleFactorNotZero.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
@@ -39,15 +42,16 @@ static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
static void setPageLoaderClient(WKPageRef page)
{
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV0 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
+
+ loaderClient.base.version = 0;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(page, &loaderClient);
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
}
-static WKRetainPtr<WKDataRef> createSessionState(WKContextRef context)
+static WKRetainPtr<WKSessionStateRef> createSessionState(WKContextRef context)
{
PlatformWebView webView(context);
setPageLoaderClient(webView.page());
@@ -56,7 +60,7 @@ static WKRetainPtr<WKDataRef> createSessionState(WKContextRef context)
Util::run(&didFinishLoad);
didFinishLoad = false;
- return adoptWK(WKPageCopySessionState(webView.page(), 0, 0));
+ return adoptWK(static_cast<WKSessionStateRef>(WKPageCopySessionState(webView.page(), reinterpret_cast<void*>(1), nullptr)));
}
TEST(WebKit2, WKPageGetScaleFactorNotZero)
@@ -66,13 +70,15 @@ TEST(WebKit2, WKPageGetScaleFactorNotZero)
PlatformWebView webView(context.get());
setPageLoaderClient(webView.page());
- WKRetainPtr<WKDataRef> data = createSessionState(context.get());
- EXPECT_NOT_NULL(data);
+ auto sessionState = createSessionState(context.get());
+ EXPECT_NOT_NULL(sessionState);
- WKPageRestoreFromSessionState(webView.page(), data.get());
+ WKPageRestoreFromSessionState(webView.page(), sessionState.get());
Util::run(&didFinishLoad);
EXPECT_TRUE(WKPageGetScaleFactor(webView.page()) == 1.0);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKPageIsPlayingAudio.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageIsPlayingAudio.cpp
new file mode 100644
index 000000000..1e848133f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKPageIsPlayingAudio.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2014 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include "PlatformWebView.h"
+#include "Test.h"
+#include <JavaScriptCore/JSRetainPtr.h>
+#include <JavaScriptCore/JavaScriptCore.h>
+#include <WebKit/WKSerializedScriptValue.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKPreferencesRef.h>
+#include <WebKit/WKPreferencesRefPrivate.h>
+
+// This test loads file-with-video.html. It first checks to make sure WKPageIsPlayingAudio() returns
+// false for the page. Then it calls a JavaScript method to play the video, waits for
+// WKPageUIClient::isPlayingAudioDidChange() to get called, and checks that WKPageIsPlayingAudio() now
+// returns true for the page.
+
+namespace TestWebKitAPI {
+
+static bool isMSEEnabledChanged;
+static bool isMSEEnabled;
+static bool didFinishLoad;
+static bool isPlayingAudioChanged;
+
+static void nullJavaScriptCallback(WKSerializedScriptValueRef, WKErrorRef error, void*)
+{
+}
+
+static void isMSEEnabledCallback(WKSerializedScriptValueRef serializedResultValue, WKErrorRef error, void*)
+{
+ JSGlobalContextRef scriptContext = JSGlobalContextCreate(0);
+
+ JSValueRef resultValue = WKSerializedScriptValueDeserialize(serializedResultValue, scriptContext, 0);
+ EXPECT_TRUE(JSValueIsBoolean(scriptContext, resultValue));
+
+ isMSEEnabledChanged = true;
+ isMSEEnabled = JSValueToBoolean(scriptContext, resultValue);
+
+ JSGlobalContextRelease(scriptContext);
+}
+
+static void didFinishLoadForFrame(WKPageRef page, WKFrameRef, WKTypeRef, const void*)
+{
+ didFinishLoad = true;
+}
+
+static void isPlayingAudioDidChangeCallback(WKPageRef page, const void*)
+{
+ isPlayingAudioChanged = true;
+}
+
+static void setUpClients(WKPageRef page)
+{
+ WKPageLoaderClientV0 loaderClient;
+ memset(&loaderClient, 0, sizeof(loaderClient));
+
+ loaderClient.base.version = 0;
+ loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
+
+ WKPageSetPageLoaderClient(page, &loaderClient.base);
+
+ WKPageUIClientV5 uiClient;
+ memset(&uiClient, 0, sizeof(uiClient));
+
+ uiClient.base.version = 5;
+ uiClient.isPlayingAudioDidChange = isPlayingAudioDidChangeCallback;
+
+ WKPageSetPageUIClient(page, &uiClient.base);
+}
+
+TEST(WebKit2, WKPageIsPlayingAudio)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+
+ PlatformWebView webView(context.get());
+ setUpClients(webView.page());
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("file-with-video", "html"));
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&didFinishLoad);
+
+ EXPECT_FALSE(WKPageIsPlayingAudio(webView.page()));
+ WKPageRunJavaScriptInMainFrame(webView.page(), Util::toWK("playVideo()").get(), 0, nullJavaScriptCallback);
+
+ Util::run(&isPlayingAudioChanged);
+ EXPECT_TRUE(WKPageIsPlayingAudio(webView.page()));
+}
+
+TEST(WebKit2, MSEIsPlayingAudio)
+{
+ WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
+
+ WKRetainPtr<WKPageGroupRef> pageGroup(AdoptWK, WKPageGroupCreateWithIdentifier(Util::toWK("MSEIsPlayingAudioPageGroup").get()));
+ WKPreferencesRef preferences = WKPageGroupGetPreferences(pageGroup.get());
+ WKPreferencesSetMediaSourceEnabled(preferences, true);
+ WKPreferencesSetFileAccessFromFileURLsAllowed(preferences, true);
+
+ PlatformWebView webView(context.get(), pageGroup.get());
+ setUpClients(webView.page());
+
+ WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("file-with-mse", "html"));
+ didFinishLoad = false;
+ WKPageLoadURL(webView.page(), url.get());
+
+ Util::run(&didFinishLoad);
+
+ // Bail out of the test early if the platform does not support MSE.
+ isMSEEnabledChanged = false;
+ WKPageRunJavaScriptInMainFrame(webView.page(), Util::toWK("window.MediaSource !== undefined").get(), 0, isMSEEnabledCallback);
+ Util::run(&isMSEEnabledChanged);
+ if (!isMSEEnabled)
+ return;
+
+ EXPECT_FALSE(WKPageIsPlayingAudio(webView.page()));
+ isPlayingAudioChanged = false;
+ WKPageRunJavaScriptInMainFrame(webView.page(), Util::toWK("playVideo()").get(), 0, nullJavaScriptCallback);
+
+ Util::run(&isPlayingAudioChanged);
+ EXPECT_TRUE(WKPageIsPlayingAudio(webView.page()));
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp
index 976e7041b..7971b0b27 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKPreferences.cpp
@@ -24,9 +24,12 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
-#include <WebKit2/WKPreferencesPrivate.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKPreferencesRefPrivate.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -41,15 +44,15 @@ TEST(WebKit2, WKPreferencesBasic)
TEST(WebKit2, WKPreferencesDefaults)
{
-#if PLATFORM(WIN)
- static const char* expectedStandardFontFamily = "Times New Roman";
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ static const char* expectedStandardFontFamily = "Times";
static const char* expectedFixedFontFamily = "Courier New";
- static const char* expectedSerifFontFamily = "Times New Roman";
- static const char* expectedSansSerifFontFamily = "Arial";
+ static const char* expectedSerifFontFamily = "Times";
+ static const char* expectedSansSerifFontFamily = "Helvetica";
static const char* expectedCursiveFontFamily = "Comic Sans MS";
- static const char* expectedFantasyFontFamily = "Comic Sans MS";
- static const char* expectedPictographFontFamily = "Times New Roman";
-#elif PLATFORM(MAC)
+ static const char* expectedFantasyFontFamily = "Impact";
+ static const char* expectedPictographFontFamily = "Times";
+#elif WK_HAVE_C_SPI
static const char* expectedStandardFontFamily = "Times";
static const char* expectedFixedFontFamily = "Courier";
static const char* expectedSerifFontFamily = "Times";
@@ -57,14 +60,14 @@ TEST(WebKit2, WKPreferencesDefaults)
static const char* expectedCursiveFontFamily = "Apple Chancery";
static const char* expectedFantasyFontFamily = "Papyrus";
static const char* expectedPictographFontFamily = "Apple Color Emoji";
-#elif PLATFORM(GTK) || PLATFORM(EFL)
+#elif PLATFORM(IOS)
static const char* expectedStandardFontFamily = "Times";
- static const char* expectedFixedFontFamily = "Courier New";
+ static const char* expectedFixedFontFamily = "Courier";
static const char* expectedSerifFontFamily = "Times";
static const char* expectedSansSerifFontFamily = "Helvetica";
- static const char* expectedCursiveFontFamily = "Comic Sans MS";
- static const char* expectedFantasyFontFamily = "Impact";
- static const char* expectedPictographFontFamily = "Times";
+ static const char* expectedCursiveFontFamily = "Snell Roundhand";
+ static const char* expectedFantasyFontFamily = "Papyrus";
+ static const char* expectedPictographFontFamily = "AppleColorEmoji";
#endif
WKPreferencesRef preference = WKPreferencesCreate();
@@ -91,11 +94,7 @@ TEST(WebKit2, WKPreferencesDefaults)
EXPECT_FALSE(WKPreferencesGetDeveloperExtrasEnabled(preference));
EXPECT_TRUE(WKPreferencesGetTextAreasAreResizable(preference));
-#if PLATFORM(WIN)
- EXPECT_EQ(kWKFontSmoothingLevelWindows, WKPreferencesGetFontSmoothingLevel(preference));
-#else
EXPECT_EQ(kWKFontSmoothingLevelMedium, WKPreferencesGetFontSmoothingLevel(preference));
-#endif
EXPECT_TRUE(WKPreferencesGetAcceleratedCompositingEnabled(preference));
EXPECT_FALSE(WKPreferencesGetCompositingBordersVisible(preference));
@@ -122,3 +121,5 @@ TEST(WebKit2, WKPreferencesCopying)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKRetainPtr.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKRetainPtr.cpp
new file mode 100644
index 000000000..860d7d48d
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKRetainPtr.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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"
+
+#if WK_HAVE_C_SPI
+
+#include "PlatformUtilities.h"
+#include <wtf/HashMap.h>
+
+namespace TestWebKitAPI {
+
+TEST(WebKit2, WKRetainPtr)
+{
+ WKRetainPtr<WKStringRef> string1 = adoptWK(WKStringCreateWithUTF8CString("a"));
+ WKRetainPtr<WKStringRef> string2 = adoptWK(WKStringCreateWithUTF8CString("a"));
+ WKRetainPtr<WKStringRef> string3 = adoptWK(WKStringCreateWithUTF8CString("a"));
+ WKRetainPtr<WKStringRef> string4 = adoptWK(WKStringCreateWithUTF8CString("a"));
+
+ HashMap<WKRetainPtr<WKStringRef>, int> map;
+
+ map.set(string2, 2);
+ map.set(string1, 1);
+
+ EXPECT_TRUE(map.contains(string1));
+ EXPECT_TRUE(map.contains(string2));
+ EXPECT_FALSE(map.contains(string3));
+ EXPECT_FALSE(map.contains(string4));
+
+ EXPECT_EQ(1, map.get(string1));
+ EXPECT_EQ(2, map.get(string2));
+}
+
+} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp
index b67235932..b4167be81 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKString.cpp
@@ -25,6 +25,8 @@
#include "config.h"
+#if WK_HAVE_C_SPI
+
namespace TestWebKitAPI {
TEST(WebKit2, WKString)
@@ -69,3 +71,5 @@ TEST(WebKit2, WKString)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp
index cdba57de4..8b6e08b9d 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WKStringJSString.cpp
@@ -24,7 +24,10 @@
*/
#include "config.h"
-#include <WebKit2/WKStringPrivate.h>
+
+#if WK_HAVE_C_SPI
+
+#include <WebKit/WKStringPrivate.h>
#include <JavaScriptCore/JSStringRef.h>
namespace TestWebKitAPI {
@@ -48,3 +51,5 @@ TEST(WebKit2, WKStringJSString)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp
index 0e6b985fb..06d673e21 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include <CoreFoundation/CoreFoundation.h>
-#include <WebKit2/WKURLCF.h>
-#include <WebKit2/WKContextPrivate.h>
+#include <WebKit/WKURLCF.h>
+#include <WebKit/WKContextPrivate.h>
#include <wtf/RetainPtr.h>
namespace TestWebKitAPI {
@@ -88,11 +91,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messag
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
static void didFinishLoadForFrame(WKPageRef page, WKFrameRef, WKTypeRef, const void*)
@@ -107,12 +112,13 @@ TEST(WebKit2, WebArchive)
PlatformWebView webView(context.get());
- WKPageLoaderClient loaderClient;
+ WKPageLoaderClientV3 loaderClient;
memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = kWKPageLoaderClientCurrentVersion;
+ loaderClient.base.version = 3;
loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
+
+ WKPageSetPageLoaderClient(webView.page(), &loaderClient.base);
WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("simple", "html")).get());
@@ -125,3 +131,5 @@ TEST(WebKit2, WebArchive)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp
index f58859517..11109fee0 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WebArchive_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleFrame.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleFrame.h>
namespace TestWebKitAPI {
@@ -62,3 +65,5 @@ void WebArchiveTest::didReceiveMessage(WKBundleRef bundle, WKStringRef messageNa
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp
index f71f186b7..ff5eef04d 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WebCoreStatisticsWithNoWebProcess.cpp
@@ -24,8 +24,11 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
-#include "test.h"
+#include "Test.h"
namespace TestWebKitAPI {
@@ -48,3 +51,5 @@ TEST(WebKit2, WebCoreStatisticsWithNoWebProcess)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WebKit2.pro b/Tools/TestWebKitAPI/Tests/WebKit2/WebKit2.pro
deleted file mode 100644
index 4a93643fc..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WebKit2.pro
+++ /dev/null
@@ -1,63 +0,0 @@
-TEMPLATE = app
-TARGET = tst_webkit2
-
-SOURCES += \
- AboutBlankLoad.cpp \
- DocumentStartUserScriptAlertCrash.cpp \
- DOMWindowExtensionBasic.cpp \
- DOMWindowExtensionNoCache.cpp \
- DocumentStartUserScriptAlertCrash.cpp \
- EvaluateJavaScript.cpp \
- FailedLoad.cpp \
- Find.cpp \
- FrameMIMETypeHTML.cpp \
- FrameMIMETypePNG.cpp \
- GetInjectedBundleInitializationUserDataCallback.cpp \
- HitTestResultNodeHandle.cpp \
- InjectedBundleBasic.cpp \
- InjectedBundleFrameHitTest.cpp \
- InjectedBundleInitializationUserDataCallbackWins.cpp \
- LoadAlternateHTMLStringWithNonDirectoryURL.cpp \
- LoadCanceledNoServerRedirectCallback.cpp \
- LoadPageOnCrash.cpp \
- MouseMoveAfterCrash.cpp \
- PageLoadBasic.cpp \
- PageLoadDidChangeLocationWithinPageForFrame.cpp \
- PageVisibilityState.cpp \
- ParentFrame.cpp \
- PreventEmptyUserAgent.cpp \
- PrivateBrowsingPushStateNoHistoryCallback.cpp \
- ReloadPageAfterCrash.cpp \
- ResizeWindowAfterCrash.cpp \
- ResponsivenessTimerDoesntFireEarly.cpp \
- TerminateTwice.cpp \
- UserMessage.cpp \
- WillSendSubmitEvent.cpp \
- WKConnection.cpp \
- WKString.cpp \
- WKStringJSString.cpp \
- WKURL.cpp
-
-FAILING_SOURCES = \
- CanHandleRequest.cpp \
-
-FAILING_SOURCES += ShouldGoToBackForwardListItem.cpp # Only stalls in flickable mode.
-FAILING_SOURCES += SpacebarScrolling.cpp # Only fails in flickable mode.
-
-SOURCES += $$FAILING_SOURCES
-
-# Tests skipped because they crash, stall or do not compile.
-SKIPPED_SOURCES = \
- CookieManager.cpp \
- DownloadDecideDestinationCrash.cpp \
- ForceRepaint.cpp \
- NewFirstVisuallyNonEmptyLayout.cpp \
- NewFirstVisuallyNonEmptyLayoutFails.cpp \
- NewFirstVisuallyNonEmptyLayoutForImages.cpp \
- NewFirstVisuallyNonEmptyLayoutFrames.cpp \
- RestoreSessionStateContainingFormData.cpp \
- WebCoreStatisticsWithNoWebProcess.cpp
-
-include(../../TestWebKitAPI.pri)
-
-DEFINES += APITEST_SOURCE_DIR=\\\"$$PWD\\\"
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp
index beeb8007f..83d63ab18 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad.cpp
@@ -24,12 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "Test.h"
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
namespace TestWebKitAPI {
@@ -41,7 +42,7 @@ public:
}
WKRetainPtr<WKContextRef> context;
- OwnPtr<PlatformWebView> webView;
+ std::unique_ptr<PlatformWebView> webView;
WKRetainPtr<WKStringRef> messageName;
WKRetainPtr<WKTypeRef> messageBody;
@@ -56,13 +57,14 @@ public:
static void setInjectedBundleClient(WKContextRef context, const void* clientInfo)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV1 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.version = kWKContextInjectedBundleClientCurrentVersion;
- injectedBundleClient.clientInfo = clientInfo;
+
+ injectedBundleClient.base.version = 1;
+ injectedBundleClient.base.clientInfo = clientInfo;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
virtual void SetUp()
@@ -70,7 +72,7 @@ public:
context = adoptWK(Util::createContextForInjectedBundleTest("WillLoadTest"));
setInjectedBundleClient(context.get(), this);
- webView = adoptPtr(new PlatformWebView(context.get()));
+ webView = std::make_unique<PlatformWebView>(context.get());
didReceiveMessage = false;
}
@@ -178,7 +180,7 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadHTMLStringWithUserData)
WKPageLoadHTMLStringWithUserData(webView->page(), htmlString.get(), baseURL.get(), userData.get());
- testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("utf-16").get(), 0, userData.get());
+ testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("latin1").get(), 0, userData.get());
}
TEST_F(WebKit2WillLoadTest, WKPageLoadHTMLString)
@@ -188,7 +190,7 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadHTMLString)
WKPageLoadHTMLString(webView->page(), htmlString.get(), baseURL.get());
- testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("utf-16").get(), 0, 0);
+ testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("latin1").get(), 0, 0);
}
TEST_F(WebKit2WillLoadTest, WKPageLoadAlternateHTMLStringWithUserData)
@@ -201,7 +203,7 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadAlternateHTMLStringWithUserData)
WKPageLoadAlternateHTMLStringWithUserData(webView->page(), htmlString.get(), baseURL.get(), unreachableURL.get(), userData.get());
- testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("utf-16").get(), unreachableURL.get(), userData.get());
+ testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("latin1").get(), unreachableURL.get(), userData.get());
}
TEST_F(WebKit2WillLoadTest, WKPageLoadAlternateHTMLString)
@@ -213,7 +215,7 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadAlternateHTMLString)
WKPageLoadAlternateHTMLString(webView->page(), htmlString.get(), baseURL.get(), unreachableURL.get());
- testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("utf-16").get(), unreachableURL.get(), 0);
+ testWillLoadDataRequestReturnValues(baseURL.get(), Util::toWK("text/html").get(), Util::toWK("latin1").get(), unreachableURL.get(), 0);
}
TEST_F(WebKit2WillLoadTest, WKPageLoadPlainTextStringWithUserData)
@@ -224,7 +226,7 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadPlainTextStringWithUserData)
WKPageLoadPlainTextStringWithUserData(webView->page(), plaintTextString.get(), userData.get());
WKRetainPtr<WKURLRef> blankURL = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
- testWillLoadDataRequestReturnValues(blankURL.get(), Util::toWK("text/plain").get(), Util::toWK("utf-16").get(), 0, userData.get());
+ testWillLoadDataRequestReturnValues(blankURL.get(), Util::toWK("text/plain").get(), Util::toWK("latin1").get(), 0, userData.get());
}
TEST_F(WebKit2WillLoadTest, WKPageLoadPlainTextString)
@@ -234,7 +236,9 @@ TEST_F(WebKit2WillLoadTest, WKPageLoadPlainTextString)
WKPageLoadPlainTextString(webView->page(), plaintTextString.get());
WKRetainPtr<WKURLRef> blankURL = adoptWK(WKURLCreateWithUTF8CString("about:blank"));
- testWillLoadDataRequestReturnValues(blankURL.get(), Util::toWK("text/plain").get(), Util::toWK("utf-16").get(), 0, 0);
+ testWillLoadDataRequestReturnValues(blankURL.get(), Util::toWK("text/plain").get(), Util::toWK("latin1").get(), 0, 0);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp
index 039349bd5..091e5a942 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WillLoad_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKRetainPtr.h>
namespace TestWebKitAPI {
@@ -44,41 +47,43 @@ private:
{
WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate());
- WKDictionaryAddItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData);
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("WillLoadURLRequestReturn").get(), messageBody.get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("WillLoadURLRequestReturn").get(), messageBody.get());
}
static void willLoadDataRequest(WKBundlePageRef page, WKURLRequestRef request, WKDataRef data, WKStringRef MIMEType, WKStringRef encodingName, WKURLRef unreachableURL, WKTypeRef userData, const void *clientInfo)
{
WKRetainPtr<WKMutableDictionaryRef> messageBody = adoptWK(WKMutableDictionaryCreate());
- WKDictionaryAddItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("DataReturn").get(), data);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("MIMETypeReturn").get(), MIMEType);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("EncodingNameReturn").get(), encodingName);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("UnreachableURLReturn").get(), unreachableURL);
- WKDictionaryAddItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("URLRequestReturn").get(), request);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("DataReturn").get(), data);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("MIMETypeReturn").get(), MIMEType);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("EncodingNameReturn").get(), encodingName);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("UnreachableURLReturn").get(), unreachableURL);
+ WKDictionarySetItem(messageBody.get(), Util::toWK("UserDataReturn").get(), userData);
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("WillLoadDataRequestReturn").get(), messageBody.get());
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("WillLoadDataRequestReturn").get(), messageBody.get());
}
- virtual void didCreatePage(WKBundleRef, WKBundlePageRef bundlePage) OVERRIDE
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef bundlePage) override
{
- WKBundlePageLoaderClient pageLoaderClient;
+ WKBundlePageLoaderClientV6 pageLoaderClient;
memset(&pageLoaderClient, 0, sizeof(pageLoaderClient));
- pageLoaderClient.version = 6;
- pageLoaderClient.clientInfo = this;
+ pageLoaderClient.base.version = 6;
+ pageLoaderClient.base.clientInfo = this;
pageLoaderClient.willLoadURLRequest = willLoadURLRequest;
pageLoaderClient.willLoadDataRequest = willLoadDataRequest;
- WKBundlePageSetPageLoaderClient(bundlePage, &pageLoaderClient);
+ WKBundlePageSetPageLoaderClient(bundlePage, &pageLoaderClient.base);
}
};
static InjectedBundleTest::Register<WillLoadTest> registrar("WillLoadTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp
index 1058cc1f3..951aaf005 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent.cpp
@@ -24,6 +24,9 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "PlatformUtilities.h"
#include "PlatformWebView.h"
#include "Test.h"
@@ -57,11 +60,13 @@ static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messag
static void setInjectedBundleClient(WKContextRef context)
{
- WKContextInjectedBundleClient injectedBundleClient;
+ WKContextInjectedBundleClientV0 injectedBundleClient;
memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
+
+ injectedBundleClient.base.version = 0;
injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
+ WKContextSetInjectedBundleClient(context, &injectedBundleClient.base);
}
TEST(WebKit2, WillSendSubmitEvent)
@@ -75,3 +80,5 @@ TEST(WebKit2, WillSendSubmitEvent)
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
index 7bbbcaf10..fa7d2a9a7 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/WillSendSubmitEvent_Bundle.cpp
@@ -24,10 +24,13 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
-#include <WebKit2/WKBundlePage.h>
+#include <WebKit/WKBundlePage.h>
namespace TestWebKitAPI {
@@ -42,7 +45,7 @@ static InjectedBundleTest::Register<WillSendSubmitEventTest> registrar("WillSend
static void willSendSubmitEvent(WKBundlePageRef, WKBundleNodeHandleRef, WKBundleFrameRef, WKBundleFrameRef, WKDictionaryRef values, const void*)
{
- WKBundlePostMessage(InjectedBundleController::shared().bundle(), Util::toWK("DidReceiveWillSendSubmitEvent").get(), values);
+ WKBundlePostMessage(InjectedBundleController::singleton().bundle(), Util::toWK("DidReceiveWillSendSubmitEvent").get(), values);
}
WillSendSubmitEventTest::WillSendSubmitEventTest(const std::string& identifier)
@@ -52,14 +55,16 @@ WillSendSubmitEventTest::WillSendSubmitEventTest(const std::string& identifier)
void WillSendSubmitEventTest::didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageFormClient formClient;
+ WKBundlePageFormClientV1 formClient;
memset(&formClient, 0, sizeof(formClient));
- formClient.version = 1;
- formClient.clientInfo = this;
+ formClient.base.version = 1;
+ formClient.base.clientInfo = this;
formClient.willSendSubmitEvent = willSendSubmitEvent;
- WKBundlePageSetFormClient(page, &formClient);
+ WKBundlePageSetFormClient(page, &formClient.base);
}
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html b/Tools/TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html
new file mode 100644
index 000000000..6f45cbd6b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/all-content-in-one-iframe.html
@@ -0,0 +1 @@
+<iframe src="lots-of-text.html"></iframe>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/bundle-file.html b/Tools/TestWebKitAPI/Tests/WebKit2/bundle-file.html
new file mode 100644
index 000000000..f426ebdb0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/bundle-file.html
@@ -0,0 +1,16 @@
+<html>
+<head>
+ <script>
+ function testFile(file)
+ {
+ if (!(file instanceof File))
+ return false;
+
+ return true;
+ }
+ </script>
+</head>
+<body>
+ File test.
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/close-from-within-create-page.html b/Tools/TestWebKitAPI/Tests/WebKit2/close-from-within-create-page.html
new file mode 100644
index 000000000..51c7981c1
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/close-from-within-create-page.html
@@ -0,0 +1,16 @@
+<html>
+<script>
+function runTest()
+{
+ if (document.location.search === "?opened-window") {
+ alert(window.sessionStorage['storageKey'])
+ return;
+ }
+
+ window.sessionStorage['storageKey'] = 'value';
+ window.open("close-from-within-create-page.html?opened-window");
+}
+</script>
+<body onload="runTest()">
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html b/Tools/TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html
index 8a98f33e9..6cf00b6ca 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/custom-protocol-sync-xhr.html
@@ -1,6 +1,6 @@
<script>
var request = new XMLHttpRequest();
- request.open('GET', 'test://test', false);
+ request.open('GET', 'http://test', false);
request.send(null);
window._testResult = request.responseText;
</script> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp
deleted file mode 100644
index 552b38c4d..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2013 Intel Corporation. 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 COPYRIGHT HOLDERS ``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 HOLDERS 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 "ewk_view_private.h"
-#include "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-#include "WKView.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-struct TestStatesData {
- TestStatesData(WKViewRef view, WKURLRef url)
- : view(view)
- , url(url)
- , didFinishLoad(false)
- , didCrash(false)
- , didRelaunch(false)
- {
- }
-
- WKViewRef view;
- WKURLRef url;
- bool didFinishLoad;
- bool didCrash;
- bool didRelaunch;
-};
-
-static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void* clientInfo)
-{
- TestStatesData* states = const_cast<TestStatesData*>(static_cast<const TestStatesData*>(clientInfo));
- states->didFinishLoad = true;
-}
-
-static void setPageLoaderClient(WKPageRef page, const void* clientInfo)
-{
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- loaderClient.clientInfo = clientInfo;
-
- WKPageSetPageLoaderClient(page, &loaderClient);
-}
-
-void webProcessCrashed(WKViewRef view, WKURLRef url, const void* clientInfo)
-{
- TestStatesData* states = const_cast<TestStatesData*>(static_cast<const TestStatesData*>(clientInfo));
-
- EXPECT_EQ(states->view, view);
- EXPECT_TRUE(WKURLIsEqual(url, states->url));
-
- states->didCrash = true;
-}
-
-void webProcessDidRelaunch(WKViewRef view, const void* clientInfo)
-{
- TestStatesData* states = const_cast<TestStatesData*>(static_cast<const TestStatesData*>(clientInfo));
-
- EXPECT_EQ(states->view, view);
-
- states->didRelaunch = true;
-}
-
-static void setViewClient(WKViewRef view, const void* clientInfo)
-{
- WKViewClient viewClient;
- memset(&viewClient, 0, sizeof(WKViewClient));
-
- viewClient.version = kWKViewClientCurrentVersion;
- viewClient.clientInfo = clientInfo;
- viewClient.webProcessCrashed = webProcessCrashed;
- viewClient.webProcessDidRelaunch = webProcessDidRelaunch;
-
- WKViewSetViewClient(view, &viewClient);
-}
-
-TEST(WebKit2, WKViewClientWebProcessCallbacks)
-{
- WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("WKViewClientWebProcessCallbacksTest"));
- WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
-
- PlatformWebView view(context.get());
- WKViewRef wkView = EWKViewGetWKView(view.platformView());
-
- TestStatesData states = TestStatesData(wkView, url.get());
-
- setPageLoaderClient(view.page(), &states);
- setViewClient(wkView, &states);
-
- WKPageLoadURL(view.page(), url.get());
- Util::run(&states.didFinishLoad);
-
- WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("Crash").get(), 0);
- Util::run(&states.didCrash);
-
- WKPageReload(view.page());
- Util::run(&states.didRelaunch);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp
deleted file mode 100644
index 83a95c069..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/efl/WKViewClientWebProcessCallbacks_Bundle.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2013 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``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 HOLDERS 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 "InjectedBundleTest.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-class WKViewClientWebProcessCallbacksTest : public InjectedBundleTest {
-public:
- WKViewClientWebProcessCallbacksTest(const std::string& identifier);
-
-private:
- virtual void didReceiveMessage(WKBundleRef, WKStringRef messageName, WKTypeRef messageBody);
-};
-
-static InjectedBundleTest::Register<WKViewClientWebProcessCallbacksTest> registrar("WKViewClientWebProcessCallbacksTest");
-
-WKViewClientWebProcessCallbacksTest::WKViewClientWebProcessCallbacksTest(const std::string& identifier)
- : InjectedBundleTest(identifier)
-{
-}
-
-void WKViewClientWebProcessCallbacksTest::didReceiveMessage(WKBundleRef, WKStringRef messageName, WKTypeRef)
-{
- if (!WKStringIsEqualToUTF8CString(messageName, "Crash"))
- return;
-
- // Simulating a crash
- abort();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/file-with-mse.html b/Tools/TestWebKitAPI/Tests/WebKit2/file-with-mse.html
new file mode 100644
index 000000000..413eed6e8
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/file-with-mse.html
@@ -0,0 +1,46 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <script>
+ var source;
+ var request;
+
+ function playVideo()
+ {
+ request = new XMLHttpRequest();
+ request.responseType = 'arraybuffer';
+ request.open('GET', 'test-mse.mp4', true);
+ request.addEventListener('load', load);
+ request.send();
+ }
+
+ function load(event)
+ {
+ source = new MediaSource();
+ source.addEventListener('sourceopen', sourceopen);
+ var video = document.getElementById('test-video');
+ video.src = URL.createObjectURL(source);
+ }
+
+ function sourceopen(event)
+ {
+ var sourceBuffer = source.addSourceBuffer('video/mp4;codecs="avc1.4D4001,mp4a.40.2"');
+ sourceBuffer.appendBuffer(request.response);
+ sourceBuffer.addEventListener('updateend', updateend);
+ }
+
+ function updateend(event)
+ {
+ document.getElementById('test-video').play();
+ }
+ </script>
+</head>
+<body>
+ <p>
+ <video id="test-video" controls></video>
+ </p>
+ <p>
+ <button onclick="playVideo()">Play video</button>
+ </p>
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/file-with-video.html b/Tools/TestWebKitAPI/Tests/WebKit2/file-with-video.html
new file mode 100644
index 000000000..aa2259a0f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/file-with-video.html
@@ -0,0 +1,18 @@
+<html>
+<head>
+ <script>
+ function playVideo()
+ {
+ document.getElementById("test-video").play();
+ }
+ </script>
+</head>
+<body>
+ <p>
+ <video id="test-video" src="test.mp4" controls></video>
+ </p>
+ <p>
+ <button onclick="playVideo()">Play Video</button>
+ </p>
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPosition.html b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPosition.html
new file mode 100644
index 000000000..099f51536
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPosition.html
@@ -0,0 +1,3 @@
+<script>
+navigator.geolocation.getCurrentPosition(function() { });
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPositionWithHighAccuracy.html b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPositionWithHighAccuracy.html
new file mode 100644
index 000000000..26a314858
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationGetCurrentPositionWithHighAccuracy.html
@@ -0,0 +1,3 @@
+<script>
+navigator.geolocation.getCurrentPosition(function() { }, function() {}, { enableHighAccuracy:true });
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPosition.html b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPosition.html
new file mode 100644
index 000000000..24788b780
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPosition.html
@@ -0,0 +1,3 @@
+<script>
+navigator.geolocation.watchPosition(function() { });
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPositionWithHighAccuracy.html b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPositionWithHighAccuracy.html
new file mode 100644
index 000000000..aba98fce7
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/geolocationWatchPositionWithHighAccuracy.html
@@ -0,0 +1,3 @@
+<script>
+navigator.geolocation.watchPosition(function() { }, function() {}, { enableHighAccuracy:true });
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/getUserMedia.html b/Tools/TestWebKitAPI/Tests/WebKit2/getUserMedia.html
new file mode 100644
index 000000000..e54f853bf
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/getUserMedia.html
@@ -0,0 +1,14 @@
+<script>
+function gotUserMedia(mediaStream)
+{
+ console.log("Got user media");
+}
+
+function userMediaError(error)
+{
+ console.log(error);
+}
+
+var options = { audio: false, video: true};
+navigator.webkitGetUserMedia(options, gotUserMedia, userMediaError);
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/input-focus-blur.html b/Tools/TestWebKitAPI/Tests/WebKit2/input-focus-blur.html
new file mode 100644
index 000000000..c06439e66
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/input-focus-blur.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html>
+<body>
+<input id="input" type="text">
+<input id="readonly" type="text" readonly>
+<script>
+function focusTextField(id)
+{
+ document.getElementById(id).focus();
+}
+
+function blurTextField(id)
+{
+ document.getElementById(id).blur();
+}
+</script>
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm b/Tools/TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm
deleted file mode 100644
index 583dc7a53..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/mac/EditorCommands.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "JavaScriptTest.h"
-#include "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-static bool didFinishLoad;
-
-static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
-{
- didFinishLoad = true;
-}
-
-TEST(WebKit2, ScrollByLineCommands)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, Util::createContextWithInjectedBundle());
- PlatformWebView webView(context.get());
-
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
-
- WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple-tall", "html"));
- WKPageLoadURL(webView.page(), url.get());
- Util::run(&didFinishLoad);
-
- EXPECT_JS_EQ(webView.page(), "window.scrollY", "0");
-
- ASSERT_TRUE([webView.platformView() respondsToSelector:@selector(scrollLineDown:)]);
- [webView.platformView() scrollLineDown:nil];
-
- EXPECT_JS_EQ(webView.page(), "window.scrollY", "40");
-
- ASSERT_TRUE([webView.platformView() respondsToSelector:@selector(scrollLineUp:)]);
- [webView.platformView() scrollLineUp:nil];
-
- EXPECT_JS_EQ(webView.page(), "window.scrollY", "0");
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm b/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm
deleted file mode 100644
index ea770519a..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor.mm
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-
-#import "PlatformUtilities.h"
-#import "SyntheticBackingScaleFactorWindow.h"
-#import "Test.h"
-#import <WebKit2/WKViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-static bool messageReceived;
-static double backingScaleFactor;
-
-static void didReceiveMessageFromInjectedBundle(WKContextRef context, WKStringRef messageName, WKTypeRef messageBody, const void*)
-{
- messageReceived = true;
- EXPECT_WK_STREQ("DidGetBackingScaleFactor", messageName);
- ASSERT_NOT_NULL(messageBody);
- EXPECT_EQ(WKDoubleGetTypeID(), WKGetTypeID(messageBody));
- backingScaleFactor = WKDoubleGetValue(static_cast<WKDoubleRef>(messageBody));
-}
-
-static void setInjectedBundleClient(WKContextRef context)
-{
- WKContextInjectedBundleClient injectedBundleClient;
- memset(&injectedBundleClient, 0, sizeof(injectedBundleClient));
- injectedBundleClient.didReceiveMessageFromInjectedBundle = didReceiveMessageFromInjectedBundle;
- WKContextSetInjectedBundleClient(context, &injectedBundleClient);
-}
-
-static RetainPtr<SyntheticBackingScaleFactorWindow> createWindow()
-{
- RetainPtr<SyntheticBackingScaleFactorWindow> window = adoptNS([[SyntheticBackingScaleFactorWindow alloc] initWithContentRect:NSMakeRect(0, 0, 800, 600) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- [window.get() setReleasedWhenClosed:NO];
- return window;
-}
-
-TEST(WebKit2, GetBackingScaleFactor)
-{
- WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("GetBackingScaleFactorTest"));
- setInjectedBundleClient(context.get());
- RetainPtr<WKView> view = adoptNS([[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) contextRef:context.get() pageGroupRef:0]);
-
- RetainPtr<SyntheticBackingScaleFactorWindow> window1 = createWindow();
- [window1.get() setBackingScaleFactor:1];
-
- [[window1.get() contentView] addSubview:view.get()];
- WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("GetBackingScaleFactor").get(), 0);
- Util::run(&messageReceived);
- messageReceived = false;
- EXPECT_EQ(1, backingScaleFactor);
-
- RetainPtr<SyntheticBackingScaleFactorWindow> window2 = createWindow();
- [window2.get() setBackingScaleFactor:2];
-
- [[window2.get() contentView] addSubview:view.get()];
- WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("GetBackingScaleFactor").get(), 0);
- Util::run(&messageReceived);
- messageReceived = false;
- EXPECT_EQ(2, backingScaleFactor);
-
- WKPageSetCustomBackingScaleFactor(view.get().pageRef, 3);
- WKContextPostMessageToInjectedBundle(context.get(), Util::toWK("GetBackingScaleFactor").get(), 0);
- Util::run(&messageReceived);
- messageReceived = false;
- EXPECT_EQ(3, backingScaleFactor);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm b/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm
deleted file mode 100644
index b8bceab48..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetBackingScaleFactor_Bundle.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-
-#import "InjectedBundleTest.h"
-#import "PlatformUtilities.h"
-#import <WebKit2/WKBundlePage.h>
-#import <assert.h>
-
-namespace TestWebKitAPI {
-
-class GetBackingScaleFactorTest : public InjectedBundleTest {
-public:
- GetBackingScaleFactorTest(const std::string&);
-
-private:
- virtual void didCreatePage(WKBundleRef, WKBundlePageRef);
- virtual void didReceiveMessage(WKBundleRef, WKStringRef messageName, WKTypeRef messageBody);
-
- WKBundlePageRef m_page;
-};
-
-static InjectedBundleTest::Register<GetBackingScaleFactorTest> registrar("GetBackingScaleFactorTest");
-
-GetBackingScaleFactorTest::GetBackingScaleFactorTest(const std::string& identifier)
- : InjectedBundleTest(identifier)
- , m_page(0)
-{
-}
-
-void GetBackingScaleFactorTest::didCreatePage(WKBundleRef, WKBundlePageRef page)
-{
- assert(!m_page);
- m_page = page;
-}
-
-void GetBackingScaleFactorTest::didReceiveMessage(WKBundleRef bundle, WKStringRef messageName, WKTypeRef messageBody)
-{
- if (!WKStringIsEqualToUTF8CString(messageName, "GetBackingScaleFactor"))
- return;
-
- WKRetainPtr<WKDoubleRef> backingScaleFactor = adoptWK(WKDoubleCreate(WKBundlePageGetBackingScaleFactor(m_page)));
- WKBundlePostMessage(bundle, Util::toWK("DidGetBackingScaleFactor").get(), backingScaleFactor.get());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp
deleted file mode 100644
index 5b37b0845..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/mac/GetPIDAfterAbortedProcessLaunch.cpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-
-#include <WebKit2/WKPagePrivateMac.h>
-#include <WebKit2/WKContextPrivate.h>
-
-namespace TestWebKitAPI {
-
-static bool loaded;
-
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
-{
- loaded = true;
-}
-
-TEST(WebKit2, GetPIDAfterAbortedProcessLaunch)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- WKContextSetUsesNetworkProcess(context.get(), true);
-
- PlatformWebView webView(context.get());
-
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
-
- WKRetainPtr<WKURLRef> url(AdoptWK, Util::createURLForResource("simple", "html"));
- WKPageLoadURL(webView.page(), url.get());
-
- Util::run(&loaded);
- WKPageTerminate(webView.page());
-
- // Reloading will start relaunching the process.
- WKPageReload(webView.page());
-
- WKPageClose(webView.page());
-
- // And now we try to get the PID page when the page has been closed before the process launch was complete.
- EXPECT_EQ(0, WKPageGetProcessIdentifier(webView.page()));
-}
-
-} // namespace TestWebKitAPI
-
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html b/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html
new file mode 100644
index 000000000..f76cb650b
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/modal-alerts-in-new-about-blank-window.html
@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+
+var newWindow = window.open("about:blank");
+newWindow.alert("Testing alert");
+newWindow.confirm("Testing confirm");
+newWindow.prompt("Testing prompt", "Default text");
+
+</script>
+</head>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/mouse-button-listener.html b/Tools/TestWebKitAPI/Tests/WebKit2/mouse-button-listener.html
new file mode 100644
index 000000000..1fdbb1a95
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/mouse-button-listener.html
@@ -0,0 +1,30 @@
+<!DOCTYPE html>
+<script>
+ var mouseButton = -1;
+ var menuType = "none";
+
+ function mouseDownHandler(event)
+ {
+ mouseButton = event.button;
+ event.preventDefault();
+ }
+
+ function pressedMouseButton()
+ {
+ return mouseButton;
+ }
+
+ function contextMenuHandler(event)
+ {
+ menuType = "context";
+ event.preventDefault();
+ }
+
+ function displayedMenu()
+ {
+ return menuType;
+ }
+
+ addEventListener("mousedown", mouseDownHandler);
+ addEventListener("contextmenu", contextMenuHandler);
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/open-and-close-window.html b/Tools/TestWebKitAPI/Tests/WebKit2/open-and-close-window.html
new file mode 100644
index 000000000..6ac778a9e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/open-and-close-window.html
@@ -0,0 +1,11 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+if (document.location.search === "?close-window")
+ window.close();
+else
+ window.open("open-and-close-window.html?close-window");
+</script>
+</head>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/should-open-external-schemes.html b/Tools/TestWebKitAPI/Tests/WebKit2/should-open-external-schemes.html
new file mode 100644
index 000000000..299e4d66a
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/should-open-external-schemes.html
@@ -0,0 +1,21 @@
+<!DOCTYPE html>
+<html>
+<head>
+<script>
+function navigateToTelURL()
+{
+ window.location.href = "tel:+1 (408) 996-1010";
+}
+
+function navigateToTelURLInZeroTimer()
+{
+ window.setTimeout(navigateToTelURL, 0);
+}
+
+function navigateToTelURLInNestedZeroTimer()
+{
+ window.setTimeout(navigateToTelURLInZeroTimer, 0);
+}
+</script>
+</head>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/simple2.html b/Tools/TestWebKitAPI/Tests/WebKit2/simple2.html
new file mode 100644
index 000000000..1dcbfddd2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/simple2.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+ Second simple HTML file.
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/simple3.html b/Tools/TestWebKitAPI/Tests/WebKit2/simple3.html
new file mode 100644
index 000000000..786516e89
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/simple3.html
@@ -0,0 +1,5 @@
+<html>
+<body>
+ Third simple HTML file.
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/test-mse.mp4 b/Tools/TestWebKitAPI/Tests/WebKit2/test-mse.mp4
new file mode 100644
index 000000000..901c907e0
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/test-mse.mp4
Binary files differ
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/test.mp4 b/Tools/TestWebKitAPI/Tests/WebKit2/test.mp4
new file mode 100644
index 000000000..d278c8ad8
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/test.mp4
Binary files differ
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/webfont.html b/Tools/TestWebKitAPI/Tests/WebKit2/webfont.html
new file mode 100644
index 000000000..008edd098
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2/webfont.html
@@ -0,0 +1,15 @@
+<!DOCTYPE html>
+<html>
+<head>
+<style>
+@font-face {
+ font-family: "WebFont";
+ src: url("Ahem.ttf") format("truetype");
+}
+</style>
+</head>
+<body>
+<div style="font: 100px 'WebFont';">Hello</div>
+This tests passes if there is no Web Process crash.
+</body>
+</html> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp
deleted file mode 100644
index 000f9cdd0..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/AltKeyGeneratesWMSysCommand.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "WindowMessageObserver.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-class WMSysCommandObserver : public WindowMessageObserver {
-public:
- WMSysCommandObserver() : m_windowDidReceiveWMSysCommand(false) { }
-
- bool windowDidReceiveWMSysCommand() const { return m_windowDidReceiveWMSysCommand; }
-
-private:
- virtual void windowReceivedMessage(HWND, UINT message, WPARAM, LPARAM)
- {
- if (message == WM_SYSCOMMAND)
- m_windowDidReceiveWMSysCommand = true;
- }
-
- bool m_windowDidReceiveWMSysCommand;
-};
-
-static bool didNotHandleWMSysKeyUp;
-
-static void didNotHandleKeyEventCallback(WKPageRef, WKNativeEventPtr event, const void*)
-{
- if (event->message != WM_SYSKEYUP)
- return;
-
- didNotHandleWMSysKeyUp = true;
-}
-
-TEST(WebKit2, AltKeyGeneratesWMSysCommand)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- WKPageUIClient uiClient;
- memset(&uiClient, 0, sizeof(uiClient));
-
- uiClient.didNotHandleKeyEvent = didNotHandleKeyEventCallback;
- WKPageSetPageUIClient(webView.page(), &uiClient);
-
- WMSysCommandObserver observer;
- webView.setParentWindowMessageObserver(&observer);
-
- webView.simulateAltKeyPress();
-
- Util::run(&didNotHandleWMSysKeyUp);
-
- webView.setParentWindowMessageObserver(0);
-
- // The WM_SYSKEYUP message should have generated a WM_SYSCOMMAND message that was sent to the
- // WKView's parent window.
- EXPECT_TRUE(observer.windowDidReceiveWMSysCommand());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp
deleted file mode 100644
index 44a5b30d0..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/DoNotCopyANullCFURLResponse.cpp
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKURLResponseCF.h>
-#include <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2, DoNotCopyANullCFURLResponse)
-{
- // Neither of these calls should cause a crash.
- WKRetainPtr<WKURLResponseRef> nullWKResponse(AdoptWK, WKURLResponseCreateWithCFURLResponse(0));
- RetainPtr<CFURLResponseRef> nullCFResponse = adoptCF(WKURLResponseCopyCFURLResponse(kCFAllocatorDefault, nullWKResponse.get()));
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp
deleted file mode 100644
index 6e350ff81..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/HideFindIndicator.cpp
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "Test.h"
-
-namespace TestWebKitAPI {
-
-static bool didFinishLoad;
-static bool findIndicatorCallbackWasCalled;
-static HBITMAP bitmap;
-
-static void didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef userData, const void* clientInfo)
-{
- didFinishLoad = true;
-}
-
-static void findIndicatorCallback(WKViewRef, HBITMAP selectionBitmap, RECT, bool, void*)
-{
- findIndicatorCallbackWasCalled = true;
- bitmap = selectionBitmap;
-}
-
-static void initialize(const PlatformWebView& webView)
-{
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
-
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
-
- WKViewSetFindIndicatorCallback(webView.platformView(), findIndicatorCallback, 0);
-}
-
-TEST(WebKit2, HideFindIndicator)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
- initialize(webView);
-
- WKRetainPtr<WKURLRef> url = adoptWK(Util::createURLForResource("find", "html"));
- WKPageLoadURL(webView.page(), url.get());
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- WKPageFindString(webView.page(), Util::toWK("Hello").get(), kWKFindOptionsShowFindIndicator, 100);
- Util::run(&findIndicatorCallbackWasCalled);
- findIndicatorCallbackWasCalled = false;
-
- EXPECT_NOT_NULL(bitmap);
- ::DeleteObject(bitmap);
- bitmap = 0;
-
- WKPageHideFindUI(webView.page());
- Util::run(&findIndicatorCallbackWasCalled);
-
- EXPECT_NULL(bitmap);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp
deleted file mode 100644
index 32c8a0762..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/ResizeViewWhileHidden.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-static bool didFinishLoad;
-
-static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
-{
- didFinishLoad = true;
-}
-
-static void setPageLoaderClient(WKPageRef page)
-{
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
-
- WKPageSetPageLoaderClient(page, &loaderClient);
-}
-
-static void flushMessages(WKPageRef page)
-{
- // In order to ensure all pending messages have been handled by the UI and web processes, we
- // load a URL and wait for the load to finish.
-
- setPageLoaderClient(page);
-
- WKPageLoadURL(page, adoptWK(Util::createURLForResource("simple", "html")).get());
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- WKPageSetPageLoaderClient(page, 0);
-}
-
-static bool timerFired;
-static void CALLBACK timerCallback(HWND hwnd, UINT, UINT_PTR timerID, DWORD)
-{
- ::KillTimer(hwnd, timerID);
- timerFired = true;
-}
-
-static void runForDuration(double seconds)
-{
- ::SetTimer(0, 0, seconds * 1000, timerCallback);
- Util::run(&timerFired);
- timerFired = false;
-}
-
-static void waitForBackingStoreUpdate(WKPageRef page)
-{
- // Wait for the web process to handle the changes we just made, to perform a display (which
- // happens on a timer), and to tell the UI process about the display (which updates the backing
- // store).
- // FIXME: It would be much less fragile (and maybe faster) to have an explicit way to wait
- // until the backing store is updated.
- runForDuration(0.5);
- flushMessages(page);
-}
-
-TEST(WebKit2, ResizeViewWhileHidden)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- HWND window = WKViewGetWindow(webView.platformView());
-
- RECT originalRect;
- ::GetClientRect(window, &originalRect);
- RECT newRect = originalRect;
- ::InflateRect(&newRect, 1, 1);
-
- // Show the WKView and resize it so that the WKView's backing store will be created. Ideally
- // we'd have some more explicit way of forcing the backing store to be created.
- ::ShowWindow(window, SW_SHOW);
- webView.resizeTo(newRect.right - newRect.left, newRect.bottom - newRect.top);
-
- waitForBackingStoreUpdate(webView.page());
-
- // Resize the window while hidden and show it again so that it will update its backing store at
- // the new size.
- ::ShowWindow(window, SW_HIDE);
- webView.resizeTo(originalRect.right - originalRect.left, originalRect.bottom - originalRect.top);
- ::ShowWindow(window, SW_SHOW);
-
- // Force the WKView to paint to try to trigger <http://webkit.org/b/54142>.
- ::SendMessage(window, WM_PAINT, 0, 0);
-
- // In Debug builds without the fix for <http://webkit.org/b/54141>, the web process will assert
- // at this point.
- // FIXME: It would be good to have a way to check that our behavior is correct in Release
- // builds, too!
- waitForBackingStoreUpdate(webView.page());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp
deleted file mode 100644
index 844499cd6..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/TranslateMessageGeneratesWMChar.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include "WindowMessageObserver.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-static bool didSeeWMChar;
-static bool didNotHandleKeyEventCalled;
-
-static void didNotHandleKeyEventCallback(WKPageRef, WKNativeEventPtr event, const void*)
-{
- if (event->message != WM_KEYDOWN)
- return;
-
- // Don't call TranslateMessage() here so a WM_CHAR isn't generated.
- didNotHandleKeyEventCalled = true;
-}
-
-static void runAndWatchForWMChar(bool* done)
-{
- while (!*done) {
- MSG msg;
- BOOL result = ::GetMessageW(&msg, 0, 0, 0);
- if (!result || result == -1)
- break;
-
- if (msg.message == WM_CHAR)
- didSeeWMChar = true;
-
- if (Util::shouldTranslateMessage(msg))
- ::TranslateMessage(&msg);
-
- ::DispatchMessage(&msg);
- }
-}
-
-TEST(WebKit2, TranslateMessageGeneratesWMChar)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- webView.simulateAKeyDown();
-
- // WebKit should call TranslateMessage() on the WM_KEYDOWN message to generate the WM_CHAR message.
- runAndWatchForWMChar(&didSeeWMChar);
-
- didSeeWMChar = false;
-
- WKPageUIClient uiClient;
- memset(&uiClient, 0, sizeof(uiClient));
-
- uiClient.didNotHandleKeyEvent = didNotHandleKeyEventCallback;
- WKPageSetPageUIClient(webView.page(), &uiClient);
-
- webView.simulateAKeyDown();
-
- runAndWatchForWMChar(&didNotHandleKeyEventCalled);
-
- // WebKit should not have called TranslateMessage() on the WM_KEYDOWN message since we installed a didNotHandleKeyEvent callback.
- EXPECT_FALSE(didSeeWMChar);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp
deleted file mode 100644
index 5fa4b3a2a..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/WMCloseCallsUIClientClose.cpp
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-static bool didReceiveClose;
-
-static void close(WKPageRef, const void*)
-{
- didReceiveClose = true;
-}
-
-TEST(WebKit2, WMCloseCallsUIClientClose)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- WKPageUIClient uiClient;
- memset(&uiClient, 0, sizeof(uiClient));
-
- uiClient.close = close;
- WKPageSetPageUIClient(webView.page(), &uiClient);
-
- ::SendMessageW(WKViewGetWindow(webView.platformView()), WM_CLOSE, 0, 0);
-
- Util::run(&didReceiveClose);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp b/Tools/TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp
deleted file mode 100644
index 36a18ca41..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2/win/WMPrint.cpp
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <WebKit2/WKRetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2, WMPrint)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- HWND window = WKViewGetWindow(webView.platformView());
- HDC dc = ::CreateCompatibleDC(0);
- // FIXME: It would be nice to test that this actually paints the view into dc.
- ::SendMessage(window, WM_PRINT, reinterpret_cast<WPARAM>(dc), PRF_CLIENT | PRF_CHILDREN);
- ::DeleteDC(dc);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.h b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.h
new file mode 100644
index 000000000..9d5b5d433
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2016 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. 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 INC. 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.
+ */
+
+@protocol ContentFilteringProtocol <NSObject>
+- (void)checkIfPlatformFrameworksAreLoaded:(void (^)(BOOL parentalControlsLoaded, BOOL networkExtensionLoaded))completionHandler;
+@end
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.html b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.html
new file mode 100644
index 000000000..a48eabb65
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/ContentFiltering.html
@@ -0,0 +1,6 @@
+<!DOCTYPE html>
+<html>
+<body>
+PASS
+</body>
+</html>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-1.html b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-1.html
new file mode 100644
index 000000000..e3e8552a5
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-1.html
@@ -0,0 +1,46 @@
+<script>
+
+var request = window.indexedDB.deleteDatabase("IndexedDBMultiProcess");
+request.onsuccess = function(e)
+{
+ continueTest();
+}
+request.onerror = function(e)
+{
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Error opening database');
+}
+
+function continueTest()
+{
+ var request = window.indexedDB.open("IndexedDBMultiProcess", 2);
+
+ request.onsuccess = function()
+ {
+ window.webkit.messageHandlers.testHandler.postMessage('Success');
+ }
+
+ request.onerror = function()
+ {
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Error');
+ }
+
+ request.onupgradeneeded = function(event)
+ {
+ window.webkit.messageHandlers.testHandler.postMessage('UpgradeNeeded');
+
+ var store = event.target.result.createObjectStore("TestObjectStore");
+
+ event.target.transaction.oncomplete = function() {
+ window.webkit.messageHandlers.testHandler.postMessage('Transaction complete');
+ }
+
+ event.target.transaction.onerror = function() {
+ window.webkit.messageHandlers.testHandler.postMessage('Transaction errored!');
+ }
+
+ store.put("bar", "foo");
+ }
+}
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-2.html b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-2.html
new file mode 100644
index 000000000..3e4e2d7da
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBMultiProcess-2.html
@@ -0,0 +1,32 @@
+<script>
+
+var request = window.indexedDB.open("IndexedDBMultiProcess", 2);
+
+request.onsuccess = function(event)
+{
+ var req = event.target.result.transaction("TestObjectStore").objectStore("TestObjectStore").get("foo");
+
+ req.onsuccess = function(event)
+ {
+ window.webkit.messageHandlers.testHandler.postMessage('Value of foo: ' + req.result);
+ }
+
+ req.onerror = function(event)
+ {
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Unexpected error');
+ }
+}
+
+request.onerror = function()
+{
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Unexpected error');
+}
+
+request.onupgradeneeded = function(event)
+{
+ // Unexpected upgrade needed
+ window.webkit.messageHandlers.testHandler.postMessage('Unexpected UpgradeNeeded');
+}
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-1.html b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-1.html
new file mode 100644
index 000000000..62a1baf6f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-1.html
@@ -0,0 +1,35 @@
+<script>
+
+var request = window.indexedDB.deleteDatabase("IndexedDBPersistence");
+request.onsuccess = function(e)
+{
+ continueTest();
+}
+request.onerror = function(e)
+{
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Error');
+}
+
+function continueTest()
+{
+ var request = window.indexedDB.open("IndexedDBPersistence", 2);
+
+ request.onsuccess = function()
+ {
+ window.webkit.messageHandlers.testHandler.postMessage('Success');
+
+ }
+ request.onerror = function()
+ {
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Error');
+ }
+ request.onupgradeneeded = function(event)
+ {
+ window.webkit.messageHandlers.testHandler.postMessage('UpgradeNeeded');
+
+ event.target.result.createObjectStore("TestObjectStore");
+ }
+}
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-2.html b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-2.html
new file mode 100644
index 000000000..d8ab125f2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/IndexedDBPersistence-2.html
@@ -0,0 +1,22 @@
+<script>
+
+var request = window.indexedDB.open("IndexedDBPersistence");
+
+request.onsuccess = function(event)
+{
+ window.webkit.messageHandlers.testHandler.postMessage(event.target.result.version + " " + event.target.result.objectStoreNames[0]);
+}
+
+request.onerror = function()
+{
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Unexpected Error');
+}
+
+request.onupgradeneeded = function()
+{
+ // Unexpected error
+ window.webkit.messageHandlers.testHandler.postMessage('Unexpected UpgradeNeeded');
+}
+
+</script>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RemoteObjectRegistry.h b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RemoteObjectRegistry.h
new file mode 100644
index 000000000..b72826817
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Cocoa/RemoteObjectRegistry.h
@@ -0,0 +1,48 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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/WKFoundation.h>
+
+#if WK_API_ENABLED
+
+#import <WebKit/_WKRemoteObjectInterface.h>
+
+@protocol RemoteObjectProtocol <NSObject>
+
+- (void)sayHello:(NSString *)hello;
+- (void)sayHello:(NSString *)hello completionHandler:(void (^)(NSString *))completionHandler;
+- (void)selectionAndClickInformationForClickAtPoint:(NSValue *)pointValue completionHandler:(void (^)(NSDictionary *))completionHandler;
+
+@end
+
+static inline _WKRemoteObjectInterface *remoteObjectInterface()
+{
+ _WKRemoteObjectInterface *interface = [_WKRemoteObjectInterface remoteObjectInterfaceWithProtocol:@protocol(RemoteObjectProtocol)];
+
+ [interface setClasses:[NSSet setWithObjects:[NSDictionary class], [NSURL class], nil] forSelector:@selector(selectionAndClickInformationForClickAtPoint:completionHandler:) argumentIndex:0 ofReply:YES];
+
+ return interface;
+}
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AccessibilityTestServer.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AccessibilityTestServer.cpp
new file mode 100644
index 000000000..165fcfb6e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AccessibilityTestServer.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void loadChangedCallback(WebKitWebView*, WebKitLoadEvent loadEvent, gpointer)
+{
+ // Send a message to the parent process when we're ready.
+ if (loadEvent == WEBKIT_LOAD_FINISHED)
+ g_print("OK");
+}
+
+int main(int argc, char** argv)
+{
+ // Make sure that the ATK bridge is loaded.
+ g_setenv("GTK_MODULES", "atk-bridge", TRUE);
+
+ gtk_init(&argc, &argv);
+
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ webkit_web_view_load_html(webView,
+ "<html>"
+ " <body>"
+ " <h1>This is a test</h1>"
+ " <p>This is a paragraph with some plain text.</p>"
+ " <p>This paragraph contains <a href=\"http://www.webkitgtk.org\">a link</a> in the middle.</p>"
+ " </body>"
+ "</html>",
+ 0);
+
+ GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(webView));
+ gtk_widget_show_all(window);
+
+ g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), 0);
+ g_signal_connect(webView, "load-changed", G_CALLBACK(loadChangedCallback), 0);
+
+ gtk_main();
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AutocleanupsTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AutocleanupsTest.cpp
new file mode 100644
index 000000000..a20cbfd73
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/AutocleanupsTest.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <webkit2/webkit-web-extension.h>
+
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+
+class AutocleanupsTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new AutocleanupsTest()); }
+
+private:
+ bool testWebProcessAutocleanups(WebKitWebPage* webPage)
+ {
+ // Transfer none
+ g_autoptr(WebKitWebPage) page = WEBKIT_WEB_PAGE(g_object_ref(G_OBJECT(webPage)));
+ g_assert(WEBKIT_IS_WEB_PAGE(page));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(page));
+
+ // Transfer none
+ g_autoptr(WebKitDOMDocument) document = WEBKIT_DOM_DOCUMENT(g_object_ref(G_OBJECT(webkit_web_page_get_dom_document(page))));
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ // Transfer full
+ g_autoptr(WebKitDOMDOMWindow) window = webkit_dom_document_get_default_view(document);
+ g_assert(WEBKIT_DOM_IS_DOM_WINDOW(window));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(window));
+
+ // Transfer full
+ g_autoptr(WebKitDOMRange) range = webkit_dom_document_create_range(document);
+ g_assert(WEBKIT_DOM_IS_RANGE(range));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(range));
+
+ return true;
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "web-process-autocleanups"))
+ return testWebProcessAutocleanups(page);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(AutocleanupsTest, "Autocleanups/web-process-autocleanups");
+}
+
+#endif // G_DEFINE_AUTOPTR_CLEANUP_FUNC
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
new file mode 100644
index 000000000..b0b473962
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/CMakeLists.txt
@@ -0,0 +1,135 @@
+set(TEST_LIBRARY_DIR ${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/WebKit2GtkAPITests)
+set(TEST_BINARY_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY}/TestWebKitAPI/WebKit2Gtk)
+set(TEST_RESOURCES_DIR ${TEST_BINARY_DIR}/resources)
+file(MAKE_DIRECTORY ${TEST_RESOURCES_DIR})
+
+add_definitions(
+ -DWEBKIT_TEST_PLUGIN_DIR="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}/plugins"
+ -DWEBKIT_EXEC_PATH="${CMAKE_RUNTIME_OUTPUT_DIRECTORY}"
+ -DWEBKIT_SRC_DIR="${CMAKE_SOURCE_DIR}"
+ -DWEBKIT_TEST_WEB_EXTENSIONS_DIR="${TEST_LIBRARY_DIR}"
+ -DWEBKIT_INJECTED_BUNDLE_PATH="${CMAKE_LIBRARY_OUTPUT_DIRECTORY}"
+)
+
+include_directories(
+ ${CMAKE_BINARY_DIR}
+ ${CMAKE_SOURCE_DIR}/Source
+ ${CMAKE_SOURCE_DIR}/Source/WTF
+ ${DERIVED_SOURCES_DIR}
+ ${DERIVED_SOURCES_WEBKIT2GTK_DIR}
+ ${FORWARDING_HEADERS_DIR}
+ ${FORWARDING_HEADERS_WEBKIT2GTK_DIR}
+ ${FORWARDING_HEADERS_WEBKIT2GTK_EXTENSION_DIR}
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk
+)
+
+include_directories(SYSTEM
+ ${ATSPI_INCLUDE_DIRS}
+ ${GLIB_INCLUDE_DIRS}
+ ${GSTREAMER_INCLUDE_DIRS}
+ ${GTK3_INCLUDE_DIRS}
+ ${GTK_UNIX_PRINT_INCLUDE_DIRS}
+ ${LIBSOUP_INCLUDE_DIRS}
+)
+
+add_library(WebKit2APITestCore STATIC
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/LoadTrackingTest.cpp
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestBus.cpp
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebKitTestServer.cpp
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/TestMain.cpp
+ ${TOOLS_DIR}/TestWebKitAPI/gtk/WebKit2Gtk/WebViewTest.cpp
+)
+target_link_libraries(WebKit2APITestCore WebKit2)
+
+add_custom_command(
+ OUTPUT ${TEST_RESOURCES_DIR}/webkit2gtk-tests-resources.gresource
+ DEPENDS resources/webkit2gtk-tests.gresource.xml
+ resources/link-title.js
+ COMMAND glib-compile-resources
+ --target=${TEST_RESOURCES_DIR}/webkit2gtk-tests-resources.gresource
+ --sourcedir=${CMAKE_SOURCE_DIR}
+ ${CMAKE_CURRENT_LIST_DIR}/resources/webkit2gtk-tests.gresource.xml
+)
+
+add_custom_target(test-gresource-bundle
+ DEPENDS ${TEST_RESOURCES_DIR}/webkit2gtk-tests-resources.gresource
+)
+
+macro(ADD_WK2_TEST_WEB_EXTENSION extension_name)
+ add_library(${extension_name} MODULE ${ARGN})
+ add_dependencies(${extension_name} WebKit2)
+ set_property(
+ TARGET ${extension_name}
+ APPEND
+ PROPERTY COMPILE_DEFINITIONS WEBKIT2_COMPILATION
+ )
+ set_target_properties(${extension_name} PROPERTIES
+ LIBRARY_OUTPUT_DIRECTORY ${TEST_LIBRARY_DIR}
+ )
+ target_link_libraries(${extension_name}
+ JavaScriptCore
+ WebKit2
+ ${GLIB_LIBRARIES}
+ )
+endmacro()
+
+macro(ADD_WK2_TEST test_name)
+ add_executable(${test_name} ${ARGN})
+ add_dependencies(${test_name}
+ test-gresource-bundle
+ WebExtensionTest
+ )
+ target_link_libraries(${test_name}
+ JavaScriptCore
+ WebKit2
+ WebKit2APITestCore
+ ${ATSPI_LIBRARIES}
+ ${GLIB_LIBRARIES}
+ ${GTK3_LIBRARIES}
+ ${GTK_UNIX_PRINT_LIBRARIES}
+ ${LIBSOUP_LIBRARIES}
+ )
+ set_target_properties(${test_name} PROPERTIES
+ RUNTIME_OUTPUT_DIRECTORY ${TEST_BINARY_DIR}
+ )
+endmacro()
+
+ADD_WK2_TEST_WEB_EXTENSION(WebExtensionTest WebExtensionTest.cpp)
+ADD_WK2_TEST_WEB_EXTENSION(WebProcessTest AutocleanupsTest.cpp DOMNodeTest.cpp DOMNodeFilterTest.cpp DOMXPathNSResolverTest.cpp FrameTest.cpp WebProcessTest.cpp EditorTest.cpp)
+
+ADD_WK2_TEST(InspectorTestServer InspectorTestServer.cpp)
+ADD_WK2_TEST(TestAuthentication TestAuthentication.cpp)
+ADD_WK2_TEST(TestAutocleanups TestAutocleanups.cpp)
+ADD_WK2_TEST(TestBackForwardList TestBackForwardList.cpp)
+ADD_WK2_TEST(TestContextMenu TestContextMenu.cpp)
+ADD_WK2_TEST(TestCookieManager TestCookieManager.cpp)
+ADD_WK2_TEST(TestDOMNode TestDOMNode.cpp)
+ADD_WK2_TEST(TestDOMNodeFilter TestDOMNodeFilter.cpp)
+ADD_WK2_TEST(TestDOMXPathNSResolver TestDOMXPathNSResolver.cpp)
+ADD_WK2_TEST(TestDownloads TestDownloads.cpp)
+ADD_WK2_TEST(TestWebKitFaviconDatabase TestWebKitFaviconDatabase.cpp)
+ADD_WK2_TEST(TestWebKitFindController TestWebKitFindController.cpp)
+ADD_WK2_TEST(TestFrame TestFrame.cpp)
+ADD_WK2_TEST(TestInspector TestInspector.cpp)
+ADD_WK2_TEST(TestInspectorServer TestInspectorServer.cpp)
+ADD_WK2_TEST(TestLoaderClient TestLoaderClient.cpp)
+ADD_WK2_TEST(TestMultiprocess TestMultiprocess.cpp)
+ADD_WK2_TEST(TestPrinting TestPrinting.cpp)
+ADD_WK2_TEST(TestResources TestResources.cpp)
+ADD_WK2_TEST(TestSSL TestSSL.cpp)
+ADD_WK2_TEST(TestUIClient TestUIClient.cpp)
+ADD_WK2_TEST(TestWebExtensions TestWebExtensions.cpp)
+ADD_WK2_TEST(TestWebKitPolicyClient TestWebKitPolicyClient.cpp)
+ADD_WK2_TEST(TestWebKitSettings TestWebKitSettings.cpp)
+ADD_WK2_TEST(TestWebKitVersion TestWebKitVersion.cpp)
+ADD_WK2_TEST(TestWebViewEditor TestWebViewEditor.cpp)
+ADD_WK2_TEST(TestWebKitWebContext TestWebKitWebContext.cpp)
+ADD_WK2_TEST(TestWebKitWebView TestWebKitWebView.cpp)
+ADD_WK2_TEST(TestWebKitUserContentManager TestWebKitUserContentManager.cpp)
+ADD_WK2_TEST(TestEditor TestEditor.cpp)
+ADD_WK2_TEST(TestConsoleMessage TestConsoleMessage.cpp)
+
+if (ATSPI_FOUND)
+ ADD_WK2_TEST(AccessibilityTestServer AccessibilityTestServer.cpp)
+ ADD_WK2_TEST(TestWebKitAccessibility TestWebKitAccessibility.cpp)
+endif ()
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp
new file mode 100644
index 000000000..fc8cefb52
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMDOMWindowTest.cpp
@@ -0,0 +1,221 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <gio/gio.h>
+#include <webkit2/webkit-web-extension.h>
+#include <wtf/RunLoop.h>
+
+class WebKitDOMDOMWindowTest;
+static gboolean loadedCallback(WebKitDOMDOMWindow*, WebKitDOMEvent*, WebKitDOMDOMWindowTest*);
+static gboolean clickedCallback(WebKitDOMDOMWindow*, WebKitDOMEvent*, WebKitDOMDOMWindowTest*);
+
+class WebKitDOMDOMWindowTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::make_unique<WebKitDOMDOMWindowTest>(); }
+
+private:
+ guint64 webPageFromArgs(GVariant* args)
+ {
+ GVariantIter iter;
+ g_variant_iter_init(&iter, args);
+
+ const char* key;
+ GVariant* value;
+ while (g_variant_iter_loop(&iter, "{&sv}", &key, &value)) {
+ if (!strcmp(key, "pageID") && g_variant_classify(value) == G_VARIANT_CLASS_UINT64)
+ return g_variant_get_uint64(value);
+ }
+
+ g_assert_not_reached();
+ return 0;
+ }
+
+ bool testSignals(WebKitWebExtension* extension, GVariant* args)
+ {
+ notify("ready", "");
+
+ WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
+ g_assert(WEBKIT_IS_WEB_PAGE(page));
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
+ g_assert(domWindow);
+
+ // The "load" WebKitDOMDOMWindow signal is issued before this test is
+ // called. There's no way to capture it here. We simply assume that
+ // the document is loaded and notify the uiprocess accordingly
+ // notify("loaded", "");
+
+ webkit_dom_event_target_add_event_listener(
+ WEBKIT_DOM_EVENT_TARGET(domWindow),
+ "load",
+ G_CALLBACK(loadedCallback),
+ false,
+ this);
+
+ // loadedCallback() will stop this loop
+ RunLoop::run();
+
+ document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ WebKitDOMElement* element = webkit_dom_document_get_element_by_id(document, "test");
+ g_assert(element);
+
+ webkit_dom_event_target_add_event_listener(
+ WEBKIT_DOM_EVENT_TARGET(element),
+ "click",
+ G_CALLBACK(clickedCallback),
+ false,
+ this);
+
+ // The "click" action will be issued in the uiprocess and that will
+ // trigger the dom event here.
+ // clickedCallback() will stop this loop
+ RunLoop::run();
+
+ return true;
+ }
+
+ bool testDispatchEvent(WebKitWebExtension* extension, GVariant* args)
+ {
+ notify("ready", "");
+
+ WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
+ g_assert(WEBKIT_IS_WEB_PAGE(page));
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
+ g_assert(domWindow);
+
+ // The "load" WebKitDOMDOMWindow signal is issued before this test is
+ // called. There's no way to capture it here. We simply assume that
+ // the document is loaded and notify the uiprocess accordingly
+ // notify("loaded", "");
+
+ webkit_dom_event_target_add_event_listener(
+ WEBKIT_DOM_EVENT_TARGET(domWindow),
+ "load",
+ G_CALLBACK(loadedCallback),
+ false,
+ this);
+
+ // loadedCallback() will stop this loop
+ RunLoop::run();
+
+ document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ WebKitDOMElement* element = webkit_dom_document_get_element_by_id(document, "test");
+ g_assert(element);
+
+ WebKitDOMEvent* event = webkit_dom_document_create_event(document, "MouseEvent", 0);
+ g_assert(event);
+ g_assert(WEBKIT_DOM_IS_EVENT(event));
+ g_assert(WEBKIT_DOM_IS_MOUSE_EVENT(event));
+
+ glong clientX, clientY;
+ clientX = webkit_dom_element_get_client_left(element);
+ clientY = webkit_dom_element_get_client_top(element);
+
+ webkit_dom_event_target_add_event_listener(
+ WEBKIT_DOM_EVENT_TARGET(element),
+ "click",
+ G_CALLBACK(clickedCallback),
+ false,
+ this);
+
+ webkit_dom_mouse_event_init_mouse_event(WEBKIT_DOM_MOUSE_EVENT(event),
+ "click", TRUE, TRUE,
+ domWindow, 0, 0, 0, clientX, clientY,
+ FALSE, FALSE, FALSE, FALSE,
+ 1, WEBKIT_DOM_EVENT_TARGET(element));
+
+ webkit_dom_event_target_dispatch_event(WEBKIT_DOM_EVENT_TARGET(element), event, 0);
+
+ // clickedCallback() will stop this loop
+ RunLoop::run();
+
+ return true;
+ }
+
+ bool testGetComputedStyle(WebKitWebExtension* extension, GVariant* args)
+ {
+ WebKitWebPage* page = webkit_web_extension_get_page(extension, webPageFromArgs(args));
+ g_assert(WEBKIT_IS_WEB_PAGE(page));
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ WebKitDOMDOMWindow* domWindow = webkit_dom_document_get_default_view(document);
+ g_assert(domWindow);
+ WebKitDOMElement* element = webkit_dom_document_get_element_by_id(document, "test");
+ g_assert(element);
+ g_assert(WEBKIT_DOM_IS_ELEMENT(element));
+ WebKitDOMCSSStyleDeclaration* cssStyle = webkit_dom_dom_window_get_computed_style(domWindow, element, 0);
+ gchar* fontSize = webkit_dom_css_style_declaration_get_property_value(cssStyle, "font-size");
+ g_assert_cmpstr(fontSize, ==, "16px");
+
+ return true;
+ }
+
+ virtual bool runTest(const char* testName, WebKitWebExtension* extension, GVariant* args)
+ {
+ if (!strcmp(testName, "signals"))
+ return testSignals(extension, args);
+ if (!strcmp(testName, "dispatch-event"))
+ return testDispatchEvent(extension, args);
+ if (!strcmp(testName, "get-computed-style"))
+ return testGetComputedStyle(extension, args);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitDOMDOMWindowTest, "WebKitDOMDOMWindow/signals");
+ REGISTER_TEST(WebKitDOMDOMWindowTest, "WebKitDOMDOMWindow/dispatch-event");
+ REGISTER_TEST(WebKitDOMDOMWindowTest, "WebKitDOMDOMWindow/get-computed-style");
+}
+
+static gboolean loadedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, WebKitDOMDOMWindowTest* test)
+{
+ test->notify("loaded", "");
+
+ // Stop the loop and let testSignals() or testDispatchEvent() continue its course
+ RunLoop::current().stop();
+
+ return FALSE;
+}
+
+static gboolean clickedCallback(WebKitDOMDOMWindow* view, WebKitDOMEvent* event, WebKitDOMDOMWindowTest* test)
+{
+ test->notify("clicked", "");
+ test->notify("finish", "");
+
+ // Stop the loop and let testSignals() or testDispatchEvent() continue its course
+ RunLoop::current().stop();
+
+ return FALSE;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp
new file mode 100644
index 000000000..0f18d1f31
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeFilterTest.cpp
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <gio/gio.h>
+#include <webkit2/webkit-web-extension.h>
+#include <wtf/glib/GUniquePtr.h>
+
+typedef struct _WebKitNodeFilter {
+ GObject parent;
+} WebKitNodeFilter;
+
+typedef struct _WebKitNodeFilterClass {
+ GObjectClass parentClass;
+} WebKitNodeFilterClass;
+
+static short webkitNodeFilterAcceptNode(WebKitDOMNodeFilter*, WebKitDOMNode* node)
+{
+ // Filter out input elements.
+ return WEBKIT_DOM_IS_HTML_INPUT_ELEMENT(node) ? WEBKIT_DOM_NODE_FILTER_REJECT : WEBKIT_DOM_NODE_FILTER_ACCEPT;
+}
+
+static void webkitNodeFilterDOMNodeFilterIfaceInit(WebKitDOMNodeFilterIface* iface)
+{
+ iface->accept_node = webkitNodeFilterAcceptNode;
+}
+
+G_DEFINE_TYPE_WITH_CODE(WebKitNodeFilter, webkit_node_filter, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_NODE_FILTER, webkitNodeFilterDOMNodeFilterIfaceInit))
+
+static void webkit_node_filter_init(WebKitNodeFilter*)
+{
+}
+
+static void webkit_node_filter_class_init(WebKitNodeFilterClass*)
+{
+}
+
+static const char* expectedNodesAll[] = { "HTML", "HEAD", "TITLE", "#text", "BODY", "INPUT", "INPUT", "BR" };
+static const char* expectedNodesNoInput[] = { "HTML", "HEAD", "TITLE", "#text", "BODY", "BR" };
+static const char* expectedElementsNoInput[] = { "HTML", "HEAD", "TITLE", "BODY", "BR" };
+
+class WebKitDOMNodeFilterTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMNodeFilterTest()); }
+
+private:
+ bool testTreeWalker(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ WebKitDOMElement* root = webkit_dom_document_get_element_by_id(document, "root");
+ g_assert(WEBKIT_DOM_IS_NODE(root));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(root));
+
+ // No filter.
+ GRefPtr<WebKitDOMTreeWalker> walker = adoptGRef(webkit_dom_document_create_tree_walker(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ALL, nullptr, FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_TREE_WALKER(walker.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(walker.get()));
+ g_assert(!webkit_dom_tree_walker_get_filter(walker.get()));
+
+ unsigned i = 0;
+ for (WebKitDOMNode* node = WEBKIT_DOM_NODE(root); node; node = webkit_dom_tree_walker_next_node(walker.get()), ++i) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedNodesAll));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedNodesAll[i]);
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedNodesAll));
+
+ // Input elements filter.
+ GRefPtr<WebKitDOMNodeFilter> filter = adoptGRef(static_cast<WebKitDOMNodeFilter*>(g_object_new(webkit_node_filter_get_type(), nullptr)));
+ walker = adoptGRef(webkit_dom_document_create_tree_walker(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ALL, filter.get(), FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_TREE_WALKER(walker.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(filter.get()));
+ g_assert(webkit_dom_tree_walker_get_filter(walker.get()) == filter.get());
+
+ i = 0;
+ for (WebKitDOMNode* node = WEBKIT_DOM_NODE(root); node; node = webkit_dom_tree_walker_next_node(walker.get()), ++i) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedNodesNoInput));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedNodesNoInput[i]);
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedNodesNoInput));
+
+ // Show only elements, reusing the input filter.
+ walker = adoptGRef(webkit_dom_document_create_tree_walker(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ELEMENT, filter.get(), FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_TREE_WALKER(walker.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(walker.get()));
+ g_assert(webkit_dom_tree_walker_get_filter(walker.get()) == filter.get());
+
+ i = 0;
+ for (WebKitDOMNode* node = WEBKIT_DOM_NODE(root); node; node = webkit_dom_tree_walker_next_node(walker.get()), ++i) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedElementsNoInput));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedElementsNoInput[i]);
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedElementsNoInput));
+
+ return true;
+ }
+
+ bool testNodeIterator(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ WebKitDOMElement* root = webkit_dom_document_get_element_by_id(document, "root");
+ g_assert(WEBKIT_DOM_IS_NODE(root));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(root));
+
+ // No filter.
+ GRefPtr<WebKitDOMNodeIterator> iter = adoptGRef(webkit_dom_document_create_node_iterator(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ALL, nullptr, FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_NODE_ITERATOR(iter.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(iter.get()));
+ g_assert(!webkit_dom_node_iterator_get_filter(iter.get()));
+
+ unsigned i = 0;
+ while (WebKitDOMNode* node = webkit_dom_node_iterator_next_node(iter.get(), nullptr)) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedNodesAll));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedNodesAll[i]);
+ i++;
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedNodesAll));
+
+ // Input elements filter.
+ GRefPtr<WebKitDOMNodeFilter> filter = adoptGRef(static_cast<WebKitDOMNodeFilter*>(g_object_new(webkit_node_filter_get_type(), nullptr)));
+ iter = adoptGRef(webkit_dom_document_create_node_iterator(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ALL, filter.get(), FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_NODE_ITERATOR(iter.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(iter.get()));
+ g_assert(webkit_dom_node_iterator_get_filter(iter.get()) == filter.get());
+
+ i = 0;
+ while (WebKitDOMNode* node = webkit_dom_node_iterator_next_node(iter.get(), nullptr)) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedNodesNoInput));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedNodesNoInput[i]);
+ i++;
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedNodesNoInput));
+
+ // Show only elements, reusing the input filter.
+ iter = adoptGRef(webkit_dom_document_create_node_iterator(document, WEBKIT_DOM_NODE(root), WEBKIT_DOM_NODE_FILTER_SHOW_ELEMENT, filter.get(), FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_NODE_ITERATOR(iter.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(iter.get()));
+ g_assert(webkit_dom_node_iterator_get_filter(iter.get()) == filter.get());
+
+ i = 0;
+ while (WebKitDOMNode* node = webkit_dom_node_iterator_next_node(iter.get(), nullptr)) {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert_cmpuint(i, <, G_N_ELEMENTS(expectedElementsNoInput));
+ GUniquePtr<char> nodeName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(nodeName.get(), ==, expectedElementsNoInput[i]);
+ i++;
+ }
+ g_assert_cmpuint(i, ==, G_N_ELEMENTS(expectedElementsNoInput));
+
+ return true;
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "tree-walker"))
+ return testTreeWalker(page);
+ if (!strcmp(testName, "node-iterator"))
+ return testNodeIterator(page);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitDOMNodeFilterTest, "WebKitDOMNodeFilter/tree-walker");
+ REGISTER_TEST(WebKitDOMNodeFilterTest, "WebKitDOMNodeFilter/node-iterator");
+}
+
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
new file mode 100644
index 000000000..9d57b42d2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMNodeTest.cpp
@@ -0,0 +1,300 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <gio/gio.h>
+#include <webkit2/webkit-web-extension.h>
+#include <wtf/glib/GUniquePtr.h>
+
+class WebKitDOMNodeTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebKitDOMNodeTest>(new WebKitDOMNodeTest()); }
+
+private:
+ bool testHierarchyNavigation(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ WebKitDOMHTMLHeadElement* head = webkit_dom_document_get_head(document);
+ g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(head));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(head));
+
+ // Title, head's child.
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(head)));
+ GRefPtr<WebKitDOMNodeList> list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(head)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 1);
+ WebKitDOMNode* node = webkit_dom_node_list_item(list.get(), 0);
+ g_assert(WEBKIT_DOM_IS_HTML_TITLE_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+
+ // Body, Head sibling.
+ node = webkit_dom_node_get_next_sibling(WEBKIT_DOM_NODE(head));
+ g_assert(WEBKIT_DOM_IS_HTML_BODY_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ WebKitDOMHTMLBodyElement* body = WEBKIT_DOM_HTML_BODY_ELEMENT(node);
+
+ // There is no third sibling
+ g_assert(!webkit_dom_node_get_next_sibling(node));
+
+ // Body's previous sibling is Head.
+ node = webkit_dom_node_get_previous_sibling(WEBKIT_DOM_NODE(body));
+ g_assert(WEBKIT_DOM_IS_HTML_HEAD_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+
+ // Body has 3 children.
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ unsigned long length = webkit_dom_node_list_get_length(list.get());
+ g_assert_cmpint(length, ==, 3);
+
+ // The three of them are P tags.
+ for (unsigned long i = 0; i < length; i++) {
+ node = webkit_dom_node_list_item(list.get(), i);
+ g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ }
+
+ // Go backwards
+ unsigned i;
+ for (i = 0; node; node = webkit_dom_node_get_previous_sibling(node), i++) { }
+ g_assert_cmpint(i, ==, 3);
+
+ return true;
+ }
+
+ bool testInsertion(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ WebKitDOMHTMLElement* body = webkit_dom_document_get_body(document);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(body));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(body));
+
+ // Body shouldn't have any children at this point.
+ g_assert(!webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+
+ // The value of a non-existent attribute should be null, not an empty string
+ g_assert(!webkit_dom_html_body_element_get_background(WEBKIT_DOM_HTML_BODY_ELEMENT(body)));
+
+ // Insert one P element.
+ WebKitDOMElement* p = webkit_dom_document_create_element(document, "P", 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(p));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(p));
+ webkit_dom_node_append_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(p), 0);
+
+ // Now it should have one, the same that we inserted.
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ GRefPtr<WebKitDOMNodeList> list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 1);
+ WebKitDOMNode* node = webkit_dom_node_list_item(list.get(), 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(p), node));
+
+ // Replace the P tag with a DIV tag.
+ WebKitDOMElement* div = webkit_dom_document_create_element(document, "DIV", 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(div));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(div));
+ webkit_dom_node_replace_child(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE(p), 0);
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 1);
+ node = webkit_dom_node_list_item(list.get(), 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(div), node));
+
+ // Now remove the tag.
+ webkit_dom_node_remove_child(WEBKIT_DOM_NODE(body), node, 0);
+ list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 0);
+
+ // Test insert before. If refChild is null, insert newChild as last element of parent.
+ div = webkit_dom_document_create_element(document, "DIV", 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(div));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(div));
+ webkit_dom_node_insert_before(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(div), 0, 0);
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 1);
+ node = webkit_dom_node_list_item(list.get(), 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(div), node));
+
+ // Now insert a 'p' before 'div'.
+ p = webkit_dom_document_create_element(document, "P", 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(p));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(p));
+ webkit_dom_node_insert_before(WEBKIT_DOM_NODE(body), WEBKIT_DOM_NODE(p), WEBKIT_DOM_NODE(div), 0);
+ g_assert(webkit_dom_node_has_child_nodes(WEBKIT_DOM_NODE(body)));
+ list = adoptGRef(webkit_dom_node_get_child_nodes(WEBKIT_DOM_NODE(body)));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ g_assert_cmpint(webkit_dom_node_list_get_length(list.get()), ==, 2);
+ node = webkit_dom_node_list_item(list.get(), 0);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(p), node));
+ node = webkit_dom_node_list_item(list.get(), 1);
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ g_assert(webkit_dom_node_is_same_node(WEBKIT_DOM_NODE(div), node));
+
+ return true;
+ }
+
+ bool testTagNamesNodeList(WebKitWebPage* page)
+ {
+ static const char* expectedTagNames[] = { "HTML", "HEAD", "BODY", "VIDEO", "SOURCE", "VIDEO", "SOURCE", "INPUT" };
+
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ GRefPtr<WebKitDOMNodeList> list = adoptGRef(webkit_dom_document_query_selector_all(document, "*", nullptr));
+ g_assert(WEBKIT_DOM_IS_NODE_LIST(list.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(list.get()));
+ gulong nodeCount = webkit_dom_node_list_get_length(list.get());
+ g_assert_cmpuint(nodeCount, ==, G_N_ELEMENTS(expectedTagNames));
+ for (unsigned i = 0; i < nodeCount; i++) {
+ WebKitDOMNode* node = webkit_dom_node_list_item(list.get(), i);
+ g_assert(WEBKIT_DOM_IS_NODE(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ GUniquePtr<char> tagName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(tagName.get(), ==, expectedTagNames[i]);
+ }
+
+ return true;
+ }
+
+ bool testTagNamesHTMLCollection(WebKitWebPage* page)
+ {
+ static const char* expectedTagNames[] = { "HTML", "HEAD", "BODY", "VIDEO", "SOURCE", "VIDEO", "SOURCE", "INPUT" };
+
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ GRefPtr<WebKitDOMHTMLCollection> collection = adoptGRef(webkit_dom_document_get_elements_by_tag_name_as_html_collection(document, "*"));
+ g_assert(WEBKIT_DOM_IS_HTML_COLLECTION(collection.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(collection.get()));
+ gulong nodeCount = webkit_dom_html_collection_get_length(collection.get());
+ g_assert_cmpuint(nodeCount, ==, G_N_ELEMENTS(expectedTagNames));
+ for (unsigned i = 0; i < nodeCount; i++) {
+ WebKitDOMNode* node = webkit_dom_html_collection_item(collection.get(), i);
+ g_assert(WEBKIT_DOM_IS_NODE(node));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(node));
+ GUniquePtr<char> tagName(webkit_dom_node_get_node_name(node));
+ g_assert_cmpstr(tagName.get(), ==, expectedTagNames[i]);
+ }
+
+ return true;
+ }
+
+ bool testDOMCache(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ // DOM objects already in the document should be automatically handled by the cache.
+ WebKitDOMElement* div = webkit_dom_document_get_element_by_id(document, "container");
+ g_assert(WEBKIT_DOM_IS_HTML_ELEMENT(div));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(div));
+
+ // Get the same elment twice should return the same pointer.
+ g_assert(div == webkit_dom_document_get_element_by_id(document, "container"));
+
+ // A new DOM object created that is derived from Node should be automatically handled by the cache.
+ WebKitDOMElement* p = webkit_dom_document_create_element(document, "P", nullptr);
+ g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(p));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(p));
+
+ // A new DOM object created that isn't derived from Node should be manually handled.
+ GRefPtr<WebKitDOMNodeIterator> iter = adoptGRef(webkit_dom_document_create_node_iterator(document, WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE_FILTER_SHOW_ALL, nullptr, FALSE, nullptr));
+ g_assert(WEBKIT_DOM_IS_NODE_ITERATOR(iter.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(iter.get()));
+
+ // We can also manually handle a DOM object handled by the cache.
+ GRefPtr<WebKitDOMElement> p2 = adoptGRef(webkit_dom_document_create_element(document, "P", nullptr));
+ g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(p2.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(p2.get()));
+
+ // Manually handling a DOM object owned by the cache shouldn't crash when the cache has more than one reference.
+ GRefPtr<WebKitDOMElement> p3 = adoptGRef(webkit_dom_document_create_element(document, "P", nullptr));
+ g_assert(WEBKIT_DOM_IS_HTML_PARAGRAPH_ELEMENT(p3.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(p3.get()));
+ webkit_dom_node_append_child(WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE(p3.get()), nullptr);
+
+ // DOM objects removed from the document are also correctly handled by the cache.
+ WebKitDOMElement* a = webkit_dom_document_create_element(document, "A", nullptr);
+ g_assert(WEBKIT_DOM_IS_ELEMENT(a));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(a));
+ webkit_dom_node_remove_child(WEBKIT_DOM_NODE(div), WEBKIT_DOM_NODE(a), nullptr);
+
+ return true;
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "hierarchy-navigation"))
+ return testHierarchyNavigation(page);
+ if (!strcmp(testName, "insertion"))
+ return testInsertion(page);
+ if (!strcmp(testName, "tag-names-node-list"))
+ return testTagNamesNodeList(page);
+ if (!strcmp(testName, "tag-names-html-collection"))
+ return testTagNamesHTMLCollection(page);
+ if (!strcmp(testName, "dom-cache"))
+ return testDOMCache(page);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitDOMNodeTest, "WebKitDOMNode/hierarchy-navigation");
+ REGISTER_TEST(WebKitDOMNodeTest, "WebKitDOMNode/insertion");
+ REGISTER_TEST(WebKitDOMNodeTest, "WebKitDOMNode/tag-names-node-list");
+ REGISTER_TEST(WebKitDOMNodeTest, "WebKitDOMNode/tag-names-html-collection");
+ REGISTER_TEST(WebKitDOMNodeTest, "WebKitDOMNode/dom-cache");
+}
+
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp
new file mode 100644
index 000000000..110677e41
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/DOMXPathNSResolverTest.cpp
@@ -0,0 +1,124 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <gio/gio.h>
+#include <webkit2/webkit-web-extension.h>
+#include <wtf/glib/GUniquePtr.h>
+
+typedef struct _WebKitXPathNSResolver {
+ GObject parent;
+} WebKitXPathNSResolver;
+
+typedef struct _WebKitXPathNSResolverClass {
+ GObjectClass parentClass;
+} WebKitXPathNSResolverClass;
+
+static char* webkitXPathNSResolverLookupNamespaceURI(WebKitDOMXPathNSResolver* resolver, const char* prefix)
+{
+ if (!g_strcmp0(prefix, "foo"))
+ return g_strdup("http://www.example.com");
+
+ return nullptr;
+}
+
+static void webkitXPathNSResolverDOMXPathNSResolverIfaceInit(WebKitDOMXPathNSResolverIface* iface)
+{
+ iface->lookup_namespace_uri = webkitXPathNSResolverLookupNamespaceURI;
+}
+
+G_DEFINE_TYPE_WITH_CODE(WebKitXPathNSResolver, webkit_xpath_ns_resolver, G_TYPE_OBJECT, G_IMPLEMENT_INTERFACE(WEBKIT_DOM_TYPE_XPATH_NS_RESOLVER, webkitXPathNSResolverDOMXPathNSResolverIfaceInit))
+
+static void webkit_xpath_ns_resolver_init(WebKitXPathNSResolver*)
+{
+}
+
+static void webkit_xpath_ns_resolver_class_init(WebKitXPathNSResolverClass*)
+{
+}
+
+class WebKitDOMXPathNSResolverTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitDOMXPathNSResolverTest()); }
+
+private:
+ void evaluateFooChildTextAndCheckResult(WebKitDOMDocument* document, WebKitDOMXPathNSResolver* resolver)
+ {
+ WebKitDOMElement* documentElement = webkit_dom_document_get_document_element(document);
+ g_assert(WEBKIT_DOM_IS_ELEMENT(documentElement));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(documentElement));
+
+ GRefPtr<WebKitDOMXPathResult> result = adoptGRef(webkit_dom_document_evaluate(document, "foo:child/text()", WEBKIT_DOM_NODE(documentElement), resolver, WEBKIT_DOM_XPATH_RESULT_ORDERED_NODE_ITERATOR_TYPE, nullptr, nullptr));
+ g_assert(WEBKIT_DOM_IS_XPATH_RESULT(result.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(result.get()));
+
+ WebKitDOMNode* nodeResult = webkit_dom_xpath_result_iterate_next(result.get(), nullptr);
+ g_assert(WEBKIT_DOM_IS_NODE(nodeResult));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(nodeResult));
+
+ GUniquePtr<char> nodeValue(webkit_dom_node_get_node_value(nodeResult));
+ g_assert_cmpstr(nodeValue.get(), ==, "SUCCESS");
+ }
+
+ bool testXPathNSResolverNative(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ GRefPtr<WebKitDOMXPathNSResolver> resolver = adoptGRef(webkit_dom_document_create_ns_resolver(document, WEBKIT_DOM_NODE(webkit_dom_document_get_document_element(document))));
+ g_assert(WEBKIT_DOM_IS_XPATH_NS_RESOLVER(resolver.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(resolver.get()));
+ evaluateFooChildTextAndCheckResult(document, resolver.get());
+
+ return true;
+ }
+
+ bool testXPathNSResolverCustom(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(document));
+
+ GRefPtr<WebKitDOMXPathNSResolver> resolver = adoptGRef(WEBKIT_DOM_XPATH_NS_RESOLVER(g_object_new(webkit_xpath_ns_resolver_get_type(), nullptr)));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(resolver.get()));
+ evaluateFooChildTextAndCheckResult(document, resolver.get());
+
+ return true;
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "native"))
+ return testXPathNSResolverNative(page);
+ if (!strcmp(testName, "custom"))
+ return testXPathNSResolverCustom(page);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitDOMXPathNSResolverTest, "WebKitDOMXPathNSResolver/native");
+ REGISTER_TEST(WebKitDOMXPathNSResolverTest, "WebKitDOMXPathNSResolver/custom");
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp
new file mode 100644
index 000000000..873344271
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/EditorTest.cpp
@@ -0,0 +1,131 @@
+/*
+ * Copyright (C) 2015 Red Hat Inc.
+ *
+ * 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 "WebProcessTest.h"
+#include <webkit2/webkit-web-extension.h>
+
+#define WEBKIT_DOM_USE_UNSTABLE_API
+#include <webkitdom/WebKitDOMDOMSelection.h>
+#include <webkitdom/WebKitDOMDOMWindowUnstable.h>
+
+class WebKitWebEditorTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitWebEditorTest()); }
+
+private:
+ static void selectionChangedCallback(bool* selectionChanged)
+ {
+ *selectionChanged = true;
+ }
+
+ void testSelectionSelectAll(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ webkit_dom_document_exec_command(document, "SelectAll", false, "");
+ }
+
+ void testSelectionCollapse(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ GRefPtr<WebKitDOMDOMWindow> domWindow = adoptGRef(webkit_dom_document_get_default_view(document));
+ g_assert(WEBKIT_DOM_IS_DOM_WINDOW(domWindow.get()));
+ GRefPtr<WebKitDOMDOMSelection> domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));
+ g_assert(WEBKIT_DOM_IS_DOM_SELECTION(domSelection.get()));
+
+ webkit_dom_dom_selection_collapse_to_start(domSelection.get(), nullptr);
+ }
+
+ void testSelectionModifyMove(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ GRefPtr<WebKitDOMDOMWindow> domWindow = adoptGRef(webkit_dom_document_get_default_view(document));
+ g_assert(WEBKIT_DOM_IS_DOM_WINDOW(domWindow.get()));
+ GRefPtr<WebKitDOMDOMSelection> domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));
+ g_assert(WEBKIT_DOM_IS_DOM_SELECTION(domSelection.get()));
+
+ webkit_dom_dom_selection_modify(domSelection.get(), "move", "forward", "character");
+ }
+
+ void testSelectionModifyExtend(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+ GRefPtr<WebKitDOMDOMWindow> domWindow = adoptGRef(webkit_dom_document_get_default_view(document));
+ g_assert(WEBKIT_DOM_IS_DOM_WINDOW(domWindow.get()));
+ GRefPtr<WebKitDOMDOMSelection> domSelection = adoptGRef(webkit_dom_dom_window_get_selection(domWindow.get()));
+ g_assert(WEBKIT_DOM_IS_DOM_SELECTION(domSelection.get()));
+
+ webkit_dom_dom_selection_modify(domSelection.get(), "extend", "forward", "word");
+ }
+
+ void testSelectionUnselect(WebKitWebPage* page)
+ {
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ g_assert(WEBKIT_DOM_IS_DOCUMENT(document));
+
+ webkit_dom_document_exec_command(document, "Unselect", false, "");
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "selection-changed")) {
+ bool selectionChanged = false;
+
+ WebKitWebEditor* editor = webkit_web_page_get_editor(page);
+ g_assert(WEBKIT_IS_WEB_EDITOR(editor));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(editor));
+ g_signal_connect_swapped(editor, "selection-changed", G_CALLBACK(selectionChangedCallback), &selectionChanged);
+
+ testSelectionSelectAll(page);
+ g_assert(selectionChanged);
+
+ selectionChanged = false;
+ testSelectionCollapse(page);
+ g_assert(selectionChanged);
+
+ selectionChanged = false;
+ testSelectionModifyMove(page);
+ g_assert(selectionChanged);
+
+ selectionChanged = false;
+ testSelectionModifyExtend(page);
+ g_assert(selectionChanged);
+
+ selectionChanged = false;
+ testSelectionUnselect(page);
+ g_assert(selectionChanged);
+
+ return true;
+ }
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitWebEditorTest, "WebKitWebEditor/selection-changed");
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp
new file mode 100644
index 000000000..a32d3e52f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/FrameTest.cpp
@@ -0,0 +1,80 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+#include <gio/gio.h>
+#include <webkit2/webkit-web-extension.h>
+
+class WebKitFrameTest : public WebProcessTest {
+public:
+ static std::unique_ptr<WebProcessTest> create() { return std::unique_ptr<WebProcessTest>(new WebKitFrameTest()); }
+
+private:
+ bool testMainFrame(WebKitWebPage* page)
+ {
+ WebKitFrame* frame = webkit_web_page_get_main_frame(page);
+ g_assert(WEBKIT_IS_FRAME(frame));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(frame));
+ g_assert(webkit_frame_is_main_frame(frame));
+
+ return true;
+ }
+
+ bool testURI(WebKitWebPage* page)
+ {
+ WebKitFrame* frame = webkit_web_page_get_main_frame(page);
+ g_assert(WEBKIT_IS_FRAME(frame));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(frame));
+ g_assert_cmpstr(webkit_web_page_get_uri(page), ==, webkit_frame_get_uri(frame));
+
+ return true;
+ }
+
+ bool testJavaScriptContext(WebKitWebPage* page)
+ {
+ WebKitFrame* frame = webkit_web_page_get_main_frame(page);
+ g_assert(WEBKIT_IS_FRAME(frame));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(frame));
+ g_assert(webkit_frame_get_javascript_global_context(frame));
+
+ return true;
+ }
+
+ bool runTest(const char* testName, WebKitWebPage* page) override
+ {
+ if (!strcmp(testName, "main-frame"))
+ return testMainFrame(page);
+ if (!strcmp(testName, "uri"))
+ return testURI(page);
+ if (!strcmp(testName, "javascript-context"))
+ return testJavaScriptContext(page);
+
+ g_assert_not_reached();
+ return false;
+ }
+};
+
+static void __attribute__((constructor)) registerTests()
+{
+ REGISTER_TEST(WebKitFrameTest, "WebKitFrame/main-frame");
+ REGISTER_TEST(WebKitFrameTest, "WebKitFrame/uri");
+ REGISTER_TEST(WebKitFrameTest, "WebKitFrame/javascript-context");
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/InspectorTestServer.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/InspectorTestServer.cpp
new file mode 100644
index 000000000..f13b043df
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/InspectorTestServer.cpp
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics Ltd. 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 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.
+ */
+
+#include "config.h"
+
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void loadChangedCallback(WebKitWebView*, WebKitLoadEvent loadEvent, gpointer)
+{
+ // Send a message to the parent process when we're ready.
+ if (loadEvent == WEBKIT_LOAD_FINISHED)
+ g_print("OK");
+}
+
+int main(int argc, char** argv)
+{
+ gtk_init(&argc, &argv);
+
+ // Overwrite WEBKIT_INSPECTOR_SERVER variable with default value.
+ g_setenv("WEBKIT_INSPECTOR_SERVER", "127.0.0.1:2999", TRUE);
+
+ WebKitWebView* webView = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ webkit_settings_set_enable_developer_extras(webkit_web_view_get_settings(webView), TRUE);
+ webkit_web_view_load_html(webView,
+ "<html><body><p>WebKitGTK+ Inspector Test Server</p></body></html>",
+ "http://127.0.0.1:2999/");
+
+ GtkWidget* window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ gtk_container_add(GTK_CONTAINER(window), GTK_WIDGET(webView));
+ gtk_widget_show_all(window);
+
+ g_signal_connect(window, "delete-event", G_CALLBACK(gtk_main_quit), 0);
+ g_signal_connect(webView, "load-changed", G_CALLBACK(loadChangedCallback), 0);
+
+ gtk_main();
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAuthentication.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAuthentication.cpp
new file mode 100644
index 000000000..0d0e0765d
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAuthentication.cpp
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * 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
+ * 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 "LoadTrackingTest.h"
+#include "WebKitTestServer.h"
+#include <wtf/glib/GRefPtr.h>
+
+static WebKitTestServer* kServer;
+
+class AuthenticationTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(AuthenticationTest);
+
+ AuthenticationTest()
+ {
+ g_signal_connect(m_webView, "authenticate", G_CALLBACK(runAuthenticationCallback), this);
+ }
+
+ ~AuthenticationTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ static int authenticationRetries;
+ static bool authenticationCancelledReceived;
+
+ void loadURI(const char* uri)
+ {
+ // Reset the retry count of the fake server when a page is loaded.
+ authenticationRetries = 0;
+ authenticationCancelledReceived = false;
+ LoadTrackingTest::loadURI(uri);
+ }
+
+ static gboolean runAuthenticationCallback(WebKitWebView*, WebKitAuthenticationRequest* request, AuthenticationTest* test)
+ {
+ g_signal_connect(request, "cancelled", G_CALLBACK(authenticationCancelledCallback), test);
+ test->runAuthentication(request);
+ return TRUE;
+ }
+
+ static void authenticationCancelledCallback(WebKitAuthenticationRequest*, AuthenticationTest*)
+ {
+ authenticationCancelledReceived = true;
+ }
+
+ void runAuthentication(WebKitAuthenticationRequest* request)
+ {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ m_authenticationRequest = request;
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ WebKitAuthenticationRequest* waitForAuthenticationRequest()
+ {
+ g_main_loop_run(m_mainLoop);
+ return m_authenticationRequest.get();
+ }
+
+private:
+ GRefPtr<WebKitAuthenticationRequest> m_authenticationRequest;
+};
+
+int AuthenticationTest::authenticationRetries = 0;
+bool AuthenticationTest::authenticationCancelledReceived = false;
+
+static const char authTestUsername[] = "username";
+static const char authTestPassword[] = "password";
+static const char authExpectedSuccessTitle[] = "WebKit2Gtk+ Authentication test";
+static const char authExpectedFailureTitle[] = "401 Authorization Required";
+static const char authExpectedAuthorization[] = "Basic dXNlcm5hbWU6cGFzc3dvcmQ="; // Base64 encoding of "username:password".
+static const char authSuccessHTMLString[] =
+ "<html>"
+ "<head><title>WebKit2Gtk+ Authentication test</title></head>"
+ "<body></body></html>";
+static const char authFailureHTMLString[] =
+ "<html>"
+ "<head><title>401 Authorization Required</title></head>"
+ "<body></body></html>";
+
+static void testWebViewAuthenticationRequest(AuthenticationTest* test, gconstpointer)
+{
+ // Test authentication request getters match soup authentication header.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ g_assert_cmpstr(webkit_authentication_request_get_host(request), ==, soup_uri_get_host(kServer->baseURI()));
+ g_assert_cmpuint(webkit_authentication_request_get_port(request), ==, soup_uri_get_port(kServer->baseURI()));
+ g_assert_cmpstr(webkit_authentication_request_get_realm(request), ==, "my realm");
+ g_assert(webkit_authentication_request_get_scheme(request) == WEBKIT_AUTHENTICATION_SCHEME_HTTP_BASIC);
+ g_assert(!webkit_authentication_request_is_for_proxy(request));
+ g_assert(!webkit_authentication_request_is_retry(request));
+}
+
+static void testWebViewAuthenticationCancel(AuthenticationTest* test, gconstpointer)
+{
+ // Test cancel.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ webkit_authentication_request_cancel(request);
+ // Server doesn't ask for new credentials.
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::ProvisionalLoadFailed);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+
+ g_assert_error(test->m_error.get(), WEBKIT_NETWORK_ERROR, WEBKIT_NETWORK_ERROR_CANCELLED);
+}
+
+static void testWebViewAuthenticationLoadCancelled(AuthenticationTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ test->waitForAuthenticationRequest();
+ webkit_web_view_stop_loading(test->m_webView);
+ // Expect empty page.
+ test->waitUntilLoadFinished();
+ g_assert(test->authenticationCancelledReceived);
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::ProvisionalLoadFailed);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+
+ g_assert_error(test->m_error.get(), WEBKIT_NETWORK_ERROR, WEBKIT_NETWORK_ERROR_CANCELLED);
+}
+
+static void testWebViewAuthenticationFailure(AuthenticationTest* test, gconstpointer)
+{
+ // Test authentication failures.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ g_assert(!webkit_authentication_request_is_retry(request));
+ WebKitCredential* credential = webkit_credential_new(authTestUsername, "wrongpassword", WEBKIT_CREDENTIAL_PERSISTENCE_NONE);
+ webkit_authentication_request_authenticate(request, credential);
+ webkit_credential_free(credential);
+ // Expect a second authentication request.
+ request = test->waitForAuthenticationRequest();
+ g_assert(webkit_authentication_request_is_retry(request));
+ // Test second failure.
+ credential = webkit_credential_new(authTestUsername, "wrongpassword2", WEBKIT_CREDENTIAL_PERSISTENCE_NONE);
+ webkit_authentication_request_authenticate(request, credential);
+ webkit_credential_free(credential);
+ // Expect authentication failed page.
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, authExpectedFailureTitle);
+}
+
+static void testWebViewAuthenticationNoCredential(AuthenticationTest* test, gconstpointer)
+{
+ // Test continue without credentials.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ webkit_authentication_request_authenticate(request, 0);
+ // Server doesn't ask for new credentials.
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, authExpectedFailureTitle);
+}
+
+static void testWebViewAuthenticationStorage(AuthenticationTest* test, gconstpointer)
+{
+ // Enable private browsing before authentication request to test that credentials can't be saved.
+ webkit_settings_set_enable_private_browsing(webkit_web_view_get_settings(test->m_webView), TRUE);
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ g_assert(!webkit_authentication_request_get_proposed_credential(request));
+ g_assert(!webkit_authentication_request_can_save_credentials(request));
+
+ // If WebKit has been compiled with libsecret, and private browsing is disabled
+ // then check that credentials can be saved.
+#if ENABLE(CREDENTIAL_STORAGE)
+ webkit_settings_set_enable_private_browsing(webkit_web_view_get_settings(test->m_webView), FALSE);
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ request = test->waitForAuthenticationRequest();
+ g_assert(!webkit_authentication_request_get_proposed_credential(request));
+ g_assert(webkit_authentication_request_can_save_credentials(request));
+#endif
+}
+
+static void testWebViewAuthenticationSuccess(AuthenticationTest* test, gconstpointer)
+{
+ // Test correct authentication.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ WebKitCredential* credential = webkit_credential_new(authTestUsername, authTestPassword, WEBKIT_CREDENTIAL_PERSISTENCE_FOR_SESSION);
+ webkit_authentication_request_authenticate(request, credential);
+ webkit_credential_free(credential);
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, authExpectedSuccessTitle);
+
+ // Test loading the same (authorized) page again.
+ test->loadURI(kServer->getURIForPath("/auth-test.html").data());
+ // There is no authentication challenge.
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, authExpectedSuccessTitle);
+}
+
+static void testWebViewAuthenticationEmptyRealm(AuthenticationTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/empty-realm.html").data());
+ WebKitAuthenticationRequest* request = test->waitForAuthenticationRequest();
+ WebKitCredential* credential = webkit_credential_new(authTestUsername, authTestPassword, WEBKIT_CREDENTIAL_PERSISTENCE_FOR_SESSION);
+ webkit_authentication_request_authenticate(request, credential);
+ webkit_credential_free(credential);
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, authExpectedSuccessTitle);
+}
+
+static void serverCallback(SoupServer*, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, void*)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (!strcmp(path, "/auth-test.html") || !strcmp(path, "/empty-realm.html")) {
+ const char* authorization = soup_message_headers_get_one(message->request_headers, "Authorization");
+ // Require authentication.
+ if (!g_strcmp0(authorization, authExpectedAuthorization)) {
+ // Successful authentication.
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, authSuccessHTMLString, strlen(authSuccessHTMLString));
+ AuthenticationTest::authenticationRetries = 0;
+ } else if (++AuthenticationTest::authenticationRetries < 3) {
+ // No or invalid authorization header provided by the client, request authentication twice then fail.
+ soup_message_set_status(message, SOUP_STATUS_UNAUTHORIZED);
+ if (!strcmp(path, "/empty-realm.html"))
+ soup_message_headers_append(message->response_headers, "WWW-Authenticate", "Basic");
+ else
+ soup_message_headers_append(message->response_headers, "WWW-Authenticate", "Basic realm=\"my realm\"");
+ // Include a failure message in case the user attempts to proceed without authentication.
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, authFailureHTMLString, strlen(authFailureHTMLString));
+ } else {
+ // Authentication not successful, display a "401 Authorization Required" page.
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, authFailureHTMLString, strlen(authFailureHTMLString));
+ }
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+
+ soup_message_body_complete(message->response_body);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ AuthenticationTest::add("WebKitWebView", "authentication-request", testWebViewAuthenticationRequest);
+ AuthenticationTest::add("WebKitWebView", "authentication-cancel", testWebViewAuthenticationCancel);
+ AuthenticationTest::add("WebKitWebView", "authentication-load-cancelled", testWebViewAuthenticationLoadCancelled);
+ AuthenticationTest::add("WebKitWebView", "authentication-success", testWebViewAuthenticationSuccess);
+ AuthenticationTest::add("WebKitWebView", "authentication-failure", testWebViewAuthenticationFailure);
+ AuthenticationTest::add("WebKitWebView", "authentication-no-credential", testWebViewAuthenticationNoCredential);
+ AuthenticationTest::add("WebKitWebView", "authentication-storage", testWebViewAuthenticationStorage);
+ AuthenticationTest::add("WebKitWebView", "authentication-empty-realm", testWebViewAuthenticationEmptyRealm);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutocleanups.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutocleanups.cpp
new file mode 100644
index 000000000..3265182de
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestAutocleanups.cpp
@@ -0,0 +1,64 @@
+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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 "WebViewTest.h"
+#include <webkit2/webkit2.h>
+
+#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
+
+static void testUIProcessAutocleanups(WebViewTest* test, gconstpointer)
+{
+ // Sanity-check a couple UI process API autocleanups that are easy to test....
+ g_autoptr(WebKitWebContext) context = webkit_web_context_new();
+ g_assert(WEBKIT_IS_WEB_CONTEXT(context));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(context));
+
+ g_autoptr(WebKitWebsiteDataManager) manager = webkit_website_data_manager_new(nullptr);
+ g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(context));
+
+ g_autoptr(WebKitUserScript) userScript = webkit_user_script_new("",
+ WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_START,
+ nullptr, nullptr);
+ g_assert(userScript);
+ // Not a GObject, so just checking that this doesn't crash....
+}
+
+static void testWebProcessAutocleanups(WebViewTest* test, gconstpointer)
+{
+ static const char* testHTML = "<html><body></body></html>";
+ test->loadHtml(testHTML, nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("Autocleanups", "web-process-autocleanups"));
+}
+
+void beforeAll()
+{
+ WebViewTest::add("Autocleanups", "ui-process-autocleanups", testUIProcessAutocleanups);
+ WebViewTest::add("Autocleanups", "web-process-autocleanups", testWebProcessAutocleanups);
+}
+
+void afterAll()
+{
+}
+
+#endif // G_DEFINE_AUTOPTR_CLEANUP_FUNC
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestBackForwardList.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestBackForwardList.cpp
new file mode 100644
index 000000000..fd2fbf5f2
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestBackForwardList.cpp
@@ -0,0 +1,417 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <string.h>
+#include <webkit2/webkit2.h>
+
+// Back forward list limit is 100 by default.
+static const int kBackForwardListLimit = 100;
+
+static WebKitTestServer* kServer;
+
+static void serverCallback(SoupServer* server, SoupMessage* msg, const char* path, GHashTable* query, SoupClientContext* context, gpointer data)
+{
+ if (msg->method != SOUP_METHOD_GET) {
+ soup_message_set_status(msg, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_has_suffix(path, "favicon.ico")) {
+ soup_message_set_status(msg, SOUP_STATUS_NOT_FOUND);
+ return;
+ }
+
+ soup_message_set_status(msg, SOUP_STATUS_OK);
+
+ char* body = g_strdup_printf("<html><title>%s</title><body>%s</body></html>", path + 1, path + 1);
+ soup_message_body_append(msg->response_body, SOUP_MEMORY_TAKE, body, strlen(body));
+
+ soup_message_body_complete(msg->response_body);
+}
+
+class BackForwardListTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(BackForwardListTest);
+
+ enum {
+ Backward,
+ Forward
+ };
+
+ enum {
+ CurrentItem = 1 << 0,
+ AddedItem = 1 << 1,
+ RemovedItems = 1 << 2
+ };
+
+ static void checkItem(WebKitBackForwardListItem* item, const char* title, const char* uri, const char* originalURI)
+ {
+ g_assert(item);
+ g_assert_cmpstr(webkit_back_forward_list_item_get_uri(item), ==, uri);
+ g_assert_cmpstr(webkit_back_forward_list_item_get_title(item), == , title);
+ g_assert_cmpstr(webkit_back_forward_list_item_get_original_uri(item), ==, originalURI);
+ }
+
+ static void checkItemIndex(WebKitBackForwardList* list)
+ {
+ g_assert(webkit_back_forward_list_get_nth_item(list, -1) == webkit_back_forward_list_get_back_item(list));
+ g_assert(webkit_back_forward_list_get_nth_item(list, 0) == webkit_back_forward_list_get_current_item(list));
+ g_assert(webkit_back_forward_list_get_nth_item(list, 1) == webkit_back_forward_list_get_forward_item(list));
+ }
+
+ static void checkList(WebKitBackForwardList* list, unsigned type, WebKitBackForwardListItem** items, unsigned nItems)
+ {
+ GList* listItems = type == BackForwardListTest::Backward ? webkit_back_forward_list_get_back_list(list) :
+ webkit_back_forward_list_get_forward_list(list);
+ g_assert(listItems);
+
+ unsigned i = 0;
+ for (GList* listItem = listItems; listItem; listItem = g_list_next(listItem), i++) {
+ g_assert_cmpuint(i, <, nItems);
+ g_assert(listItem->data == items[i]);
+ }
+ g_list_free(listItems);
+ }
+
+ static void backForwardListChanged(WebKitBackForwardList* list, WebKitBackForwardListItem* addedItem, GList* removedItems, BackForwardListTest* test)
+ {
+ test->m_hasChanged = true;
+
+ if (test->m_changedFlags & BackForwardListTest::AddedItem) {
+ g_assert(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(addedItem));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(addedItem));
+ } else
+ g_assert(!addedItem);
+
+ if (test->m_changedFlags & BackForwardListTest::RemovedItems) {
+ g_assert(removedItems);
+ for (GList* iter = removedItems; iter; iter = iter->next) {
+ g_assert(WEBKIT_IS_BACK_FORWARD_LIST_ITEM(iter->data));
+ if (test->m_expectedRemovedItems)
+ g_assert(g_list_find(test->m_expectedRemovedItems, iter->data));
+ }
+
+ } else
+ g_assert(!removedItems);
+ }
+
+ BackForwardListTest()
+ : m_list(webkit_web_view_get_back_forward_list(m_webView))
+ , m_changedFlags(0)
+ , m_hasChanged(false)
+ , m_expectedRemovedItems(0)
+ {
+ g_signal_connect(m_list, "changed", G_CALLBACK(backForwardListChanged), this);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_list));
+ }
+
+ ~BackForwardListTest()
+ {
+ g_signal_handlers_disconnect_matched(m_list, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void waitUntilLoadFinished()
+ {
+ m_hasChanged = false;
+ WebViewTest::waitUntilLoadFinished();
+ g_assert(m_hasChanged);
+ }
+
+ void waitUntilLoadFinishedAndCheckRemovedItems(GList* removedItems)
+ {
+ m_expectedRemovedItems = removedItems;
+ waitUntilLoadFinished();
+ m_expectedRemovedItems = 0;
+ }
+
+ WebKitBackForwardList* m_list;
+ unsigned long m_changedFlags;
+ bool m_hasChanged;
+ GList* m_expectedRemovedItems;
+};
+
+static void testBackForwardListNavigation(BackForwardListTest* test, gconstpointer)
+{
+ WebKitBackForwardListItem* items[1];
+
+ g_assert(!webkit_web_view_can_go_back(test->m_webView));
+ g_assert(!webkit_web_view_can_go_forward(test->m_webView));
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, 0);
+ g_assert(!webkit_back_forward_list_get_current_item(test->m_list));
+ g_assert(!webkit_back_forward_list_get_back_item(test->m_list));
+ g_assert(!webkit_back_forward_list_get_forward_item(test->m_list));
+ BackForwardListTest::checkItemIndex(test->m_list);
+ g_assert(!webkit_back_forward_list_get_back_list(test->m_list));
+ g_assert(!webkit_back_forward_list_get_forward_list(test->m_list));
+
+ CString uriPage1 = kServer->getURIForPath("/Page1");
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(uriPage1.data());
+ test->waitUntilLoadFinished();
+
+ g_assert(!webkit_web_view_can_go_back(test->m_webView));
+ g_assert(!webkit_web_view_can_go_forward(test->m_webView));
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, 1);
+ WebKitBackForwardListItem* itemPage1 = webkit_back_forward_list_get_current_item(test->m_list);
+ BackForwardListTest::checkItem(itemPage1, "Page1", uriPage1.data(), uriPage1.data());
+ g_assert(!webkit_back_forward_list_get_back_item(test->m_list));
+ g_assert(!webkit_back_forward_list_get_forward_item(test->m_list));
+ BackForwardListTest::checkItemIndex(test->m_list);
+ g_assert(!webkit_back_forward_list_get_back_list(test->m_list));
+ g_assert(!webkit_back_forward_list_get_forward_list(test->m_list));
+
+ CString uriPage2 = kServer->getURIForPath("/Page2");
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(uriPage2.data());
+ test->waitUntilLoadFinished();
+
+ g_assert(webkit_web_view_can_go_back(test->m_webView));
+ g_assert(!webkit_web_view_can_go_forward(test->m_webView));
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, 2);
+ WebKitBackForwardListItem* itemPage2 = webkit_back_forward_list_get_current_item(test->m_list);
+ BackForwardListTest::checkItem(itemPage2, "Page2", uriPage2.data(), uriPage2.data());
+ g_assert(webkit_back_forward_list_get_back_item(test->m_list) == itemPage1);
+ g_assert(!webkit_back_forward_list_get_forward_item(test->m_list));
+ BackForwardListTest::checkItemIndex(test->m_list);
+ items[0] = itemPage1;
+ BackForwardListTest::checkList(test->m_list, BackForwardListTest::Backward, items, 1);
+ g_assert(!webkit_back_forward_list_get_forward_list(test->m_list));
+
+ test->m_changedFlags = BackForwardListTest::CurrentItem;
+ test->goBack();
+ test->waitUntilLoadFinished();
+
+ g_assert(!webkit_web_view_can_go_back(test->m_webView));
+ g_assert(webkit_web_view_can_go_forward(test->m_webView));
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, 2);
+ g_assert(itemPage1 == webkit_back_forward_list_get_current_item(test->m_list));
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(test->m_list), "Page1", uriPage1.data(), uriPage1.data());
+ g_assert(!webkit_back_forward_list_get_back_item(test->m_list));
+ g_assert(webkit_back_forward_list_get_forward_item(test->m_list) == itemPage2);
+ BackForwardListTest::checkItemIndex(test->m_list);
+ g_assert(!webkit_back_forward_list_get_back_list(test->m_list));
+ items[0] = itemPage2;
+ BackForwardListTest::checkList(test->m_list, BackForwardListTest::Forward, items, 1);
+
+ test->m_changedFlags = BackForwardListTest::CurrentItem;
+ test->goForward();
+ test->waitUntilLoadFinished();
+
+ g_assert(webkit_web_view_can_go_back(test->m_webView));
+ g_assert(!webkit_web_view_can_go_forward(test->m_webView));
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, 2);
+ g_assert(itemPage2 == webkit_back_forward_list_get_current_item(test->m_list));
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(test->m_list), "Page2", uriPage2.data(), uriPage2.data());
+ g_assert(webkit_back_forward_list_get_back_item(test->m_list) == itemPage1);
+ g_assert(!webkit_back_forward_list_get_forward_item(test->m_list));
+ BackForwardListTest::checkItemIndex(test->m_list);
+ items[0] = itemPage1;
+ BackForwardListTest::checkList(test->m_list, BackForwardListTest::Backward, items, 1);
+ g_assert(!webkit_back_forward_list_get_forward_list(test->m_list));
+
+ test->m_changedFlags = BackForwardListTest::CurrentItem;
+ test->goToBackForwardListItem(itemPage1);
+ test->waitUntilLoadFinished();
+
+ g_assert(itemPage1 == webkit_back_forward_list_get_current_item(test->m_list));
+}
+
+static void testBackForwardListLimitAndCache(BackForwardListTest* test, gconstpointer)
+{
+ for (int i = 0; i < kBackForwardListLimit; i++) {
+ GUniquePtr<char> path(g_strdup_printf("/Page%d", i));
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(kServer->getURIForPath(path.get()).data());
+ test->waitUntilLoadFinished();
+ }
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, kBackForwardListLimit);
+ WebKitBackForwardListItem* itemPageFirst = webkit_back_forward_list_get_nth_item(test->m_list, -(kBackForwardListLimit - 1));
+ GUniquePtr<GList> removedItems(g_list_prepend(0, itemPageFirst));
+
+ GUniquePtr<char> path(g_strdup_printf("/Page%d", kBackForwardListLimit));
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem | BackForwardListTest::RemovedItems;
+ test->loadURI(kServer->getURIForPath(path.get()).data());
+ test->waitUntilLoadFinishedAndCheckRemovedItems(removedItems.get());
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(test->m_list), ==, kBackForwardListLimit);
+}
+
+static void testWebKitWebViewSessionState(BackForwardListTest* test, gconstpointer)
+{
+ WebKitWebViewSessionState* state = webkit_web_view_get_session_state(test->m_webView);
+ g_assert(state);
+ GRefPtr<WebKitWebView> view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ WebKitBackForwardList* bfList = webkit_web_view_get_back_forward_list(view.get());
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ GRefPtr<GBytes> data = adoptGRef(webkit_web_view_session_state_serialize(state));
+ g_assert(data);
+ state = webkit_web_view_session_state_new(data.get());
+ g_assert(state);
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ bfList = webkit_web_view_get_back_forward_list(view.get());
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_session_state_unref(state);
+
+ CString uriPage1 = kServer->getURIForPath("/Page1");
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(uriPage1.data());
+ test->waitUntilLoadFinished();
+
+ CString uriPage2 = kServer->getURIForPath("/Page2");
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(uriPage2.data());
+ test->waitUntilLoadFinished();
+
+ CString uriPage3 = kServer->getURIForPath("/Page3");
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(uriPage3.data());
+ test->waitUntilLoadFinished();
+
+ test->m_changedFlags = BackForwardListTest::CurrentItem;
+ test->goBack();
+ test->waitUntilLoadFinished();
+
+ state = webkit_web_view_get_session_state(test->m_webView);
+ g_assert(state);
+
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 3);
+
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_nth_item(bfList, -1), "Page1", uriPage1.data(), uriPage1.data());
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(bfList), "Page2", uriPage2.data(), uriPage2.data());
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_nth_item(bfList, 1), "Page3", uriPage3.data(), uriPage3.data());
+
+ data = adoptGRef(webkit_web_view_session_state_serialize(state));
+ g_assert(data);
+ webkit_web_view_session_state_unref(state);
+ state = webkit_web_view_session_state_new(data.get());
+ g_assert(state);
+
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ bfList = webkit_web_view_get_back_forward_list(view.get());
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 3);
+ webkit_web_view_session_state_unref(state);
+
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_nth_item(bfList, -1), "Page1", uriPage1.data(), uriPage1.data());
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_current_item(bfList), "Page2", uriPage2.data(), uriPage2.data());
+ BackForwardListTest::checkItem(webkit_back_forward_list_get_nth_item(bfList, 1), "Page3", uriPage3.data(), uriPage3.data());
+
+ static const char* invalidSessionData = "invalid session data";
+ data = adoptGRef(g_bytes_new_static(invalidSessionData, strlen(invalidSessionData)));
+ g_assert(!webkit_web_view_session_state_new(data.get()));
+}
+
+static void testWebKitWebViewSessionStateWithFormData(BackForwardListTest* test, gconstpointer)
+{
+ GUniquePtr<char> htmlPath(g_build_filename(Test::getResourcesDir(Test::WebKit2Resources).data(), "simple-form.html", nullptr));
+ GUniquePtr<char> htmlURL(g_filename_to_uri(htmlPath.get(), nullptr, nullptr));
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem;
+ test->loadURI(htmlURL.get());
+ test->waitUntilLoadFinished();
+
+ webkit_web_view_run_javascript(test->m_webView, "submitForm();", nullptr, nullptr, nullptr);
+ test->waitUntilLoadFinished();
+
+ WebKitWebViewSessionState* state = webkit_web_view_get_session_state(test->m_webView);
+ g_assert(state);
+ GRefPtr<WebKitWebView> view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ WebKitBackForwardList* bfList = webkit_web_view_get_back_forward_list(view.get());
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 2);
+ GRefPtr<GBytes> data = adoptGRef(webkit_web_view_session_state_serialize(state));
+ g_assert(data);
+ state = webkit_web_view_session_state_new(data.get());
+ g_assert(state);
+ view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ bfList = webkit_web_view_get_back_forward_list(view.get());
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 0);
+ webkit_web_view_restore_session_state(view.get(), state);
+ g_assert_cmpuint(webkit_back_forward_list_get_length(bfList), ==, 2);
+ webkit_web_view_session_state_unref(state);
+}
+
+static void viewLoadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent, GMainLoop* mainLoop)
+{
+ if (loadEvent == WEBKIT_LOAD_FINISHED)
+ g_main_loop_quit(mainLoop);
+}
+
+static void testWebKitWebViewNavigationAfterSessionRestore(BackForwardListTest* test, gconstpointer)
+{
+ // This test checks that a normal load after a session restore with a BackForard list having
+ // forward items doesn't produce any runtime critical warning. See https://bugs.webkit.org/show_bug.cgi?id=153233.
+ GRefPtr<WebKitWebView> view = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_signal_connect(view.get(), "load-changed", G_CALLBACK(viewLoadChanged), test->m_mainLoop);
+
+ webkit_web_view_load_uri(view.get(), kServer->getURIForPath("/Page1").data());
+ g_main_loop_run(test->m_mainLoop);
+ webkit_web_view_load_uri(view.get(), kServer->getURIForPath("/Page2").data());
+ g_main_loop_run(test->m_mainLoop);
+ webkit_web_view_load_uri(view.get(), kServer->getURIForPath("/Page3").data());
+ g_main_loop_run(test->m_mainLoop);
+ webkit_web_view_go_back(view.get());
+ g_main_loop_run(test->m_mainLoop);
+
+ WebKitWebViewSessionState* state = webkit_web_view_get_session_state(view.get());
+ webkit_web_view_restore_session_state(test->m_webView, state);
+ webkit_web_view_session_state_unref(state);
+
+ // A normal load after a session restore should remove the forward list, add the new item and update the current one.
+ test->m_changedFlags = BackForwardListTest::CurrentItem | BackForwardListTest::AddedItem | BackForwardListTest::RemovedItems;
+ test->loadURI(kServer->getURIForPath("/Page4").data());
+ test->waitUntilLoadFinished();
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ BackForwardListTest::add("BackForwardList", "navigation", testBackForwardListNavigation);
+ BackForwardListTest::add("BackForwardList", "list-limit-and-cache", testBackForwardListLimitAndCache);
+ BackForwardListTest::add("WebKitWebView", "session-state", testWebKitWebViewSessionState);
+ BackForwardListTest::add("WebKitWebView", "session-state-with-form-data", testWebKitWebViewSessionStateWithFormData);
+ BackForwardListTest::add("WebKitWebView", "navigation-after-session-restore", testWebKitWebViewNavigationAfterSessionRestore);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp
new file mode 100644
index 000000000..10dd8ca44
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestConsoleMessage.cpp
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2015 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+class ConsoleMessageTest : public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ConsoleMessageTest);
+
+ // This should be keep in sync with the public enums in WebKitConsoleMessage.h.
+ enum class MessageSource { JavaScript, Network, ConsoleAPI, Security, Other };
+ enum class MessageLevel { Info, Log, Warning, Error, Debug };
+ struct ConsoleMessage {
+ bool operator==(const ConsoleMessage& other)
+ {
+ return source == other.source
+ && level == other.level
+ && message == other.message
+ && lineNumber == other.lineNumber
+ && sourceID == other.sourceID;
+ }
+
+ MessageSource source;
+ MessageLevel level;
+ CString message;
+ unsigned lineNumber;
+ CString sourceID;
+ };
+
+ static void consoleMessageReceivedCallback(WebKitUserContentManager*, WebKitJavascriptResult* message, ConsoleMessageTest* test)
+ {
+ g_assert(message);
+ GUniquePtr<char> messageString(WebViewTest::javascriptResultToCString(message));
+ GRefPtr<GVariant> variant = g_variant_parse(G_VARIANT_TYPE("(uusus)"), messageString.get(), nullptr, nullptr, nullptr);
+ g_assert(variant.get());
+
+ unsigned source, level, lineNumber;
+ const char* messageText;
+ const char* sourceID;
+ g_variant_get(variant.get(), "(uu&su&s)", &source, &level, &messageText, &lineNumber, &sourceID);
+ test->m_consoleMessage = { static_cast<ConsoleMessageTest::MessageSource>(source), static_cast<ConsoleMessageTest::MessageLevel>(level), messageText, lineNumber, sourceID };
+
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ ConsoleMessageTest()
+ : WebViewTest(webkit_user_content_manager_new())
+ {
+ WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
+ webkit_user_content_manager_register_script_message_handler(manager, "console");
+ g_signal_connect(manager, "script-message-received::console", G_CALLBACK(consoleMessageReceivedCallback), this);
+ }
+
+ ~ConsoleMessageTest()
+ {
+ WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
+ g_signal_handlers_disconnect_matched(manager, G_SIGNAL_MATCH_DATA, 0, 0, nullptr, nullptr, this);
+ webkit_user_content_manager_unregister_script_message_handler(manager, "console");
+ }
+
+ void waitUntilConsoleMessageReceived()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ ConsoleMessage m_consoleMessage;
+};
+
+static void testWebKitConsoleMessageConsoleAPI(ConsoleMessageTest* test, gconstpointer)
+{
+ ConsoleMessageTest::ConsoleMessage referenceMessage = { ConsoleMessageTest::MessageSource::ConsoleAPI, ConsoleMessageTest::MessageLevel::Log, "Log Console Message", 1, "http://foo.com/bar" };
+ test->loadHtml("<html><body onload='console.log(\"Log Console Message\");'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+
+ referenceMessage.level = ConsoleMessageTest::MessageLevel::Info;
+ referenceMessage.message = "Info Console Message";
+ test->loadHtml("<html><body onload='console.info(\"Info Console Message\");'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+
+ referenceMessage.level = ConsoleMessageTest::MessageLevel::Warning;
+ referenceMessage.message = "Warning Console Message";
+ test->loadHtml("<html><body onload='console.warn(\"Warning Console Message\");'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+
+ referenceMessage.level = ConsoleMessageTest::MessageLevel::Error;
+ referenceMessage.message = "Error Console Message";
+ test->loadHtml("<html><body onload='console.error(\"Error Console Message\");'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+
+ referenceMessage.level = ConsoleMessageTest::MessageLevel::Debug;
+ referenceMessage.message = "Debug Console Message";
+ test->loadHtml("<html><body onload='console.debug(\"Debug Console Message\");'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+}
+
+static void testWebKitConsoleMessageJavaScriptException(ConsoleMessageTest* test, gconstpointer)
+{
+ ConsoleMessageTest::ConsoleMessage referenceMessage = { ConsoleMessageTest::MessageSource::JavaScript, ConsoleMessageTest::MessageLevel::Error,
+ "ReferenceError: Can't find variable: foo", 1, "http://foo.com/bar" };
+ test->loadHtml("<html><body onload='foo()'></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+}
+
+static void testWebKitConsoleMessageNetworkError(ConsoleMessageTest* test, gconstpointer)
+{
+ ConsoleMessageTest::ConsoleMessage referenceMessage = { ConsoleMessageTest::MessageSource::Network, ConsoleMessageTest::MessageLevel::Error,
+ "Failed to load resource: Error opening file: No such file or directory", 0, "file:///foo/not-found.css" };
+ test->loadHtml("<html><head><link rel='stylesheet' href='not-found.css' type='text/css'></head><body></body></html>", "file:///foo/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+}
+
+static void testWebKitConsoleMessageSecurityError(ConsoleMessageTest* test, gconstpointer)
+{
+ ConsoleMessageTest::ConsoleMessage referenceMessage = { ConsoleMessageTest::MessageSource::Security, ConsoleMessageTest::MessageLevel::Error,
+ "Not allowed to load local resource: file:///foo/bar/source.png", 1, "http://foo.com/bar" };
+ test->loadHtml("<html><body><img src=\"file:///foo/bar/source.png\"/></body></html>", "http://foo.com/bar");
+ test->waitUntilConsoleMessageReceived();
+ g_assert(test->m_consoleMessage == referenceMessage);
+}
+
+void beforeAll()
+{
+ ConsoleMessageTest::add("WebKitConsoleMessage", "console-api", testWebKitConsoleMessageConsoleAPI);
+ ConsoleMessageTest::add("WebKitConsoleMessage", "js-exception", testWebKitConsoleMessageJavaScriptException);
+ ConsoleMessageTest::add("WebKitConsoleMessage", "network-error", testWebKitConsoleMessageNetworkError);
+ ConsoleMessageTest::add("WebKitConsoleMessage", "security-error", testWebKitConsoleMessageSecurityError);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp
new file mode 100644
index 000000000..e08ec799d
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestContextMenu.cpp
@@ -0,0 +1,1043 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <wtf/Vector.h>
+#include <wtf/glib/GRefPtr.h>
+
+class ContextMenuTest: public WebViewTest {
+public:
+ enum ContextMenuItemStateFlags {
+ Visible = 1 << 0,
+ Enabled = 1 << 1,
+ Checked = 1 << 2
+ };
+
+ void checkContextMenuEvent(GdkEvent* event)
+ {
+ g_assert(event);
+ g_assert_cmpint(event->type, ==, GDK_BUTTON_PRESS);
+ g_assert_cmpint(event->button.button, ==, 3);
+ g_assert_cmpint(event->button.x, ==, m_menuPositionX);
+ g_assert_cmpint(event->button.y, ==, m_menuPositionY);
+ }
+
+ static gboolean contextMenuCallback(WebKitWebView* webView, WebKitContextMenu* contextMenu, GdkEvent* event, WebKitHitTestResult* hitTestResult, ContextMenuTest* test)
+ {
+ g_assert(WEBKIT_IS_CONTEXT_MENU(contextMenu));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(contextMenu));
+ test->checkContextMenuEvent(event);
+ g_assert(WEBKIT_IS_HIT_TEST_RESULT(hitTestResult));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(hitTestResult));
+
+ return test->contextMenu(contextMenu, event, hitTestResult);
+ }
+
+ static void contextMenuDismissedCallback(WebKitWebView*, ContextMenuTest* test)
+ {
+ test->contextMenuDismissed();
+ }
+
+ ContextMenuTest()
+ : m_menuPositionX(0)
+ , m_menuPositionY(0)
+ {
+ g_signal_connect(m_webView, "context-menu", G_CALLBACK(contextMenuCallback), this);
+ g_signal_connect(m_webView, "context-menu-dismissed", G_CALLBACK(contextMenuDismissedCallback), this);
+ }
+
+ ~ContextMenuTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ virtual bool contextMenu(WebKitContextMenu*, GdkEvent*, WebKitHitTestResult*) = 0;
+
+ virtual void contextMenuDismissed()
+ {
+ quitMainLoop();
+ }
+
+ GtkMenu* getPopupMenu()
+ {
+ GUniquePtr<GList> toplevels(gtk_window_list_toplevels());
+ for (GList* iter = toplevels.get(); iter; iter = g_list_next(iter)) {
+ if (!GTK_IS_WINDOW(iter->data))
+ continue;
+
+ GtkWidget* child = gtk_bin_get_child(GTK_BIN(iter->data));
+ if (!GTK_IS_MENU(child))
+ continue;
+
+ if (gtk_menu_get_attach_widget(GTK_MENU(child)) == GTK_WIDGET(m_webView))
+ return GTK_MENU(child);
+ }
+ g_assert_not_reached();
+ return 0;
+ }
+
+ void checkActionState(GtkAction* action, unsigned state)
+ {
+ if (state & Visible)
+ g_assert(gtk_action_get_visible(action));
+ else
+ g_assert(!gtk_action_get_visible(action));
+
+ if (state & Enabled)
+ g_assert(gtk_action_get_sensitive(action));
+ else
+ g_assert(!gtk_action_get_sensitive(action));
+
+ if (GTK_IS_TOGGLE_ACTION(action)) {
+ if (state & Checked)
+ g_assert(gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)));
+ else
+ g_assert(!gtk_toggle_action_get_active(GTK_TOGGLE_ACTION(action)));
+ }
+ }
+
+ GList* checkCurrentItemIsStockActionAndGetNext(GList* items, WebKitContextMenuAction stockAction, unsigned state)
+ {
+ g_assert(items);
+ g_assert(WEBKIT_IS_CONTEXT_MENU_ITEM(items->data));
+
+ WebKitContextMenuItem* item = WEBKIT_CONTEXT_MENU_ITEM(items->data);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(item));
+
+ GtkAction* action = webkit_context_menu_item_get_action(item);
+ g_assert(GTK_IS_ACTION(action));
+
+ g_assert_cmpint(webkit_context_menu_item_get_stock_action(item), ==, stockAction);
+
+ checkActionState(action, state);
+
+ return g_list_next(items);
+ }
+
+ GList* checkCurrentItemIsCustomActionAndGetNext(GList* items, const char* label, unsigned state)
+ {
+ g_assert(items);
+ g_assert(WEBKIT_IS_CONTEXT_MENU_ITEM(items->data));
+
+ WebKitContextMenuItem* item = WEBKIT_CONTEXT_MENU_ITEM(items->data);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(item));
+
+ GtkAction* action = webkit_context_menu_item_get_action(item);
+ g_assert(GTK_IS_ACTION(action));
+
+ g_assert_cmpint(webkit_context_menu_item_get_stock_action(item), ==, WEBKIT_CONTEXT_MENU_ACTION_CUSTOM);
+ g_assert_cmpstr(gtk_action_get_label(action), ==, label);
+
+ checkActionState(action, state);
+
+ return g_list_next(items);
+ }
+
+ GList* checkCurrentItemIsSubMenuAndGetNext(GList* items, const char* label, unsigned state, GList** subMenuIter)
+ {
+ g_assert(items);
+ g_assert(WEBKIT_IS_CONTEXT_MENU_ITEM(items->data));
+
+ WebKitContextMenuItem* item = WEBKIT_CONTEXT_MENU_ITEM(items->data);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(item));
+
+ GtkAction* action = webkit_context_menu_item_get_action(item);
+ g_assert(GTK_IS_ACTION(action));
+
+ g_assert_cmpstr(gtk_action_get_label(action), ==, label);
+ checkActionState(action, state);
+
+ WebKitContextMenu* subMenu = webkit_context_menu_item_get_submenu(item);
+ g_assert(WEBKIT_IS_CONTEXT_MENU(subMenu));
+ if (subMenuIter)
+ *subMenuIter = webkit_context_menu_get_items(subMenu);
+
+ return g_list_next(items);
+ }
+
+ GList* checkCurrentItemIsSeparatorAndGetNext(GList* items)
+ {
+ g_assert(items);
+ g_assert(WEBKIT_IS_CONTEXT_MENU_ITEM(items->data));
+
+ WebKitContextMenuItem* item = WEBKIT_CONTEXT_MENU_ITEM(items->data);
+ g_assert(webkit_context_menu_item_is_separator(item));
+
+ return g_list_next(items);
+ }
+
+ static gboolean doRightClickIdleCallback(ContextMenuTest* test)
+ {
+ test->clickMouseButton(test->m_menuPositionX, test->m_menuPositionY, 3);
+ return FALSE;
+ }
+
+ void showContextMenuAtPositionAndWaitUntilFinished(int x, int y)
+ {
+ m_menuPositionX = x;
+ m_menuPositionY = y;
+ g_idle_add(reinterpret_cast<GSourceFunc>(doRightClickIdleCallback), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void showContextMenuAndWaitUntilFinished()
+ {
+ showContextMenuAtPositionAndWaitUntilFinished(0, 0);
+ }
+
+ static gboolean simulateEscKeyIdleCallback(ContextMenuTest* test)
+ {
+ test->keyStroke(GDK_KEY_Escape);
+ return FALSE;
+ }
+
+ void dismissContextMenuAndWaitUntilFinished()
+ {
+ g_idle_add(reinterpret_cast<GSourceFunc>(simulateEscKeyIdleCallback), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ double m_menuPositionX;
+ double m_menuPositionY;
+};
+
+class ContextMenuDefaultTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuDefaultTest);
+
+ enum DefaultMenuType {
+ Navigation,
+ Link,
+ Image,
+ LinkImage,
+ Video,
+ Audio,
+ Editable,
+ Selection
+ };
+
+ ContextMenuDefaultTest()
+ : m_expectedMenuType(Navigation)
+ {
+ }
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent* event, WebKitHitTestResult* hitTestResult)
+ {
+ GList* iter = webkit_context_menu_get_items(contextMenu);
+
+ switch (m_expectedMenuType) {
+ case Navigation:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_GO_BACK, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_STOP, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_RELOAD, Visible | Enabled);
+ break;
+ case Link:
+ g_assert(webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_LINK_TO_DISK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_LINK_TO_CLIPBOARD, Visible | Enabled);
+ break;
+ case Image:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_IMAGE_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_IMAGE_TO_DISK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_TO_CLIPBOARD, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_URL_TO_CLIPBOARD, Visible | Enabled);
+ break;
+ case LinkImage:
+ g_assert(webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_LINK_TO_DISK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_LINK_TO_CLIPBOARD, Visible | Enabled);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_IMAGE_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_IMAGE_TO_DISK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_TO_CLIPBOARD, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_IMAGE_URL_TO_CLIPBOARD, Visible | Enabled);
+ break;
+ case Video:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_MEDIA_PLAY, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_MEDIA_MUTE, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_CONTROLS, Visible | Enabled | Checked);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_LOOP, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_ENTER_VIDEO_FULLSCREEN, Visible | Enabled);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_VIDEO_LINK_TO_CLIPBOARD, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_VIDEO_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_VIDEO_TO_DISK, Visible | Enabled);
+ break;
+ case Audio:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_MEDIA_PLAY, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_MEDIA_MUTE, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_CONTROLS, Visible | Enabled | Checked);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_TOGGLE_MEDIA_LOOP, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_ENTER_VIDEO_FULLSCREEN, Visible);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY_AUDIO_LINK_TO_CLIPBOARD, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_OPEN_AUDIO_IN_NEW_WINDOW, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_AUDIO_TO_DISK, Visible | Enabled);
+ break;
+ case Editable:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_CUT, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY, Visible);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_PASTE, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_DELETE, Visible);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_SELECT_ALL, Visible | Enabled);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_UNICODE, Visible | Enabled);
+ break;
+ case Selection:
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_selection(hitTestResult));
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_COPY, Visible | Enabled);
+ break;
+ default:
+ g_assert_not_reached();
+ }
+
+ if (webkit_settings_get_enable_developer_extras(webkit_web_view_get_settings(m_webView))) {
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT, Visible | Enabled);
+ }
+ g_assert(!iter);
+
+ quitMainLoop();
+
+ return true;
+ }
+
+ DefaultMenuType m_expectedMenuType;
+};
+
+static void testContextMenuDefaultMenu(ContextMenuDefaultTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ const char* linksHTML =
+ "<html><head>"
+ " <script>"
+ " window.onload = function () {"
+ " window.getSelection().removeAllRanges();"
+ " var select_range = document.createRange();"
+ " select_range.selectNodeContents(document.getElementById('text_to_select'));"
+ " window.getSelection().addRange(select_range);"
+ " }"
+ " </script>"
+ "</head><body>"
+ " <a style='position:absolute; left:1; top:1' href='http://www.webkitgtk.org' title='WebKitGTK+ Title'>WebKitGTK+ Website</a>"
+ " <img style='position:absolute; left:1; top:10' src='0xdeadbeef' width=5 height=5></img>"
+ " <a style='position:absolute; left:1; top:20' href='http://www.webkitgtk.org/logo' title='WebKitGTK+ Logo'><img src='0xdeadbeef' width=5 height=5></img></a>"
+ " <input style='position:absolute; left:1; top:30' size='10'></input>"
+ " <video style='position:absolute; left:1; top:50' width='300' height='300' controls='controls' preload='none'><source src='movie.ogg' type='video/ogg' /></video>"
+ " <audio style='position:absolute; left:1; top:60' width='50' height='20' controls='controls' preload='none'><source src='track.mp3' type='audio/mp3' /></audio>"
+ " <p style='position:absolute; left:1; top:90' id='text_to_select'>Lorem ipsum.</p>"
+ "</body></html>";
+ test->loadHtml(linksHTML, "file:///");
+ test->waitUntilLoadFinished();
+
+ // Context menu for selection.
+ // This test should always be the first because any other click removes the selection.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Selection;
+ test->showContextMenuAtPositionAndWaitUntilFinished(2, 115);
+
+ // Context menu for document.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Navigation;
+ test->showContextMenuAtPositionAndWaitUntilFinished(0, 0);
+
+ // Context menu for link.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Link;
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 1);
+
+ // Context menu for image.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Image;
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 10);
+
+ // Enable developer extras now, so that inspector element
+ // will be shown in the default context menu.
+ webkit_settings_set_enable_developer_extras(webkit_web_view_get_settings(test->m_webView), TRUE);
+
+ // Context menu for image link.
+ test->m_expectedMenuType = ContextMenuDefaultTest::LinkImage;
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 20);
+
+ // Context menu for video.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Video;
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 50);
+
+ // Context menu for audio.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Audio;
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 60);
+
+ // Context menu for editable.
+ test->m_expectedMenuType = ContextMenuDefaultTest::Editable;
+ test->showContextMenuAtPositionAndWaitUntilFinished(5, 35);
+}
+
+class ContextMenuCustomTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuCustomTest);
+
+ ContextMenuCustomTest()
+ : m_itemToActivateLabel(0)
+ , m_activated(false)
+ , m_toggled(false)
+ {
+ }
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult* hitTestResult)
+ {
+ // Append our custom item to the default menu.
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new(m_action.get()));
+ quitMainLoop();
+
+ return false;
+ }
+
+ GtkMenuItem* getMenuItem(GtkMenu* menu, const gchar* itemLabel)
+ {
+ GUniquePtr<GList> items(gtk_container_get_children(GTK_CONTAINER(menu)));
+ for (GList* iter = items.get(); iter; iter = g_list_next(iter)) {
+ GtkMenuItem* child = GTK_MENU_ITEM(iter->data);
+ if (g_str_equal(itemLabel, gtk_menu_item_get_label(child)))
+ return child;
+ }
+ g_assert_not_reached();
+ return 0;
+ }
+
+ void activateMenuItem()
+ {
+ g_assert(m_itemToActivateLabel);
+ GtkMenu* menu = getPopupMenu();
+ GtkMenuItem* item = getMenuItem(menu, m_itemToActivateLabel);
+ gtk_menu_shell_activate_item(GTK_MENU_SHELL(menu), GTK_WIDGET(item), TRUE);
+ m_itemToActivateLabel = 0;
+ }
+
+ static gboolean activateMenuItemIdleCallback(gpointer userData)
+ {
+ ContextMenuCustomTest* test = static_cast<ContextMenuCustomTest*>(userData);
+ test->activateMenuItem();
+ return FALSE;
+ }
+
+ void activateCustomMenuItemAndWaitUntilActivated(const char* actionLabel)
+ {
+ m_activated = m_toggled = false;
+ m_itemToActivateLabel = actionLabel;
+ g_idle_add(activateMenuItemIdleCallback, this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void toggleCustomMenuItemAndWaitUntilToggled(const char* actionLabel)
+ {
+ activateCustomMenuItemAndWaitUntilActivated(actionLabel);
+ }
+
+ static void actionActivatedCallback(GtkAction*, ContextMenuCustomTest* test)
+ {
+ test->m_activated = true;
+ }
+
+ static void actionToggledCallback(GtkAction*, ContextMenuCustomTest* test)
+ {
+ test->m_toggled = true;
+ }
+
+ void setAction(GtkAction* action)
+ {
+ m_action = action;
+ if (GTK_IS_TOGGLE_ACTION(action))
+ g_signal_connect(action, "toggled", G_CALLBACK(actionToggledCallback), this);
+ else
+ g_signal_connect(action, "activate", G_CALLBACK(actionActivatedCallback), this);
+ }
+
+ GRefPtr<GtkAction> m_action;
+ const char* m_itemToActivateLabel;
+ bool m_activated;
+ bool m_toggled;
+};
+
+static void testContextMenuPopulateMenu(ContextMenuCustomTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ // Create a custom menu item.
+ GRefPtr<GtkAction> action = adoptGRef(gtk_action_new("WebKitGTK+CustomAction", "Custom _Action", 0, 0));
+ test->setAction(action.get());
+ test->showContextMenuAndWaitUntilFinished();
+ test->activateCustomMenuItemAndWaitUntilActivated(gtk_action_get_label(action.get()));
+ g_assert(test->m_activated);
+ g_assert(!test->m_toggled);
+
+ // Create a custom toggle menu item.
+ GRefPtr<GtkAction> toggleAction = adoptGRef(GTK_ACTION(gtk_toggle_action_new("WebKitGTK+CustomToggleAction", "Custom _Toggle Action", 0, 0)));
+ test->setAction(toggleAction.get());
+ test->showContextMenuAndWaitUntilFinished();
+ test->toggleCustomMenuItemAndWaitUntilToggled(gtk_action_get_label(toggleAction.get()));
+ g_assert(!test->m_activated);
+ g_assert(test->m_toggled);
+}
+
+class ContextMenuCustomFullTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuCustomFullTest);
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*)
+ {
+ // Clear proposed menu and build our own.
+ webkit_context_menu_remove_all(contextMenu);
+ g_assert_cmpint(webkit_context_menu_get_n_items(contextMenu), ==, 0);
+
+ // Add actions from stock.
+ webkit_context_menu_prepend(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_GO_BACK));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD));
+ webkit_context_menu_insert(contextMenu, webkit_context_menu_item_new_separator(), 2);
+
+ // Add custom actions.
+ GRefPtr<GtkAction> action = adoptGRef(gtk_action_new("WebKitGTK+CustomAction", "Custom _Action", 0, 0));
+ gtk_action_set_sensitive(action.get(), FALSE);
+ webkit_context_menu_insert(contextMenu, webkit_context_menu_item_new(action.get()), -1);
+ GRefPtr<GtkAction> toggleAction = adoptGRef(GTK_ACTION(gtk_toggle_action_new("WebKitGTK+CustomToggleAction", "Custom _Toggle Action", 0, 0)));
+ gtk_toggle_action_set_active(GTK_TOGGLE_ACTION(toggleAction.get()), TRUE);
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new(toggleAction.get()));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+
+ // Add a submenu.
+ GRefPtr<WebKitContextMenu> subMenu = adoptGRef(webkit_context_menu_new());
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(subMenu.get()));
+ webkit_context_menu_insert(subMenu.get(), webkit_context_menu_item_new_from_stock_action_with_label(WEBKIT_CONTEXT_MENU_ACTION_STOP, "Stop Load"), 0);
+ webkit_context_menu_insert(subMenu.get(), webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_RELOAD), -1);
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_with_submenu("Load options", subMenu.get()));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+
+ // Move Load submenu before custom actions.
+ webkit_context_menu_move_item(contextMenu, webkit_context_menu_last(contextMenu), 3);
+ webkit_context_menu_move_item(contextMenu, webkit_context_menu_last(contextMenu), 3);
+
+ // If last item is a separator, remove it.
+ if (webkit_context_menu_item_is_separator(webkit_context_menu_last(contextMenu)))
+ webkit_context_menu_remove(contextMenu, webkit_context_menu_last(contextMenu));
+
+ // Check the menu.
+ GList* iter = webkit_context_menu_get_items(contextMenu);
+
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_GO_BACK, Visible | Enabled);
+ iter = checkCurrentItemIsStockActionAndGetNext(iter, WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD, Visible | Enabled);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+
+ GList* subMenuIter = 0;
+ iter = checkCurrentItemIsSubMenuAndGetNext(iter, "Load options", Visible | Enabled, &subMenuIter);
+ subMenuIter = checkCurrentItemIsStockActionAndGetNext(subMenuIter, WEBKIT_CONTEXT_MENU_ACTION_STOP, Visible | Enabled);
+ subMenuIter = checkCurrentItemIsStockActionAndGetNext(subMenuIter, WEBKIT_CONTEXT_MENU_ACTION_RELOAD, Visible | Enabled);
+ iter = checkCurrentItemIsSeparatorAndGetNext(iter);
+
+ iter = checkCurrentItemIsCustomActionAndGetNext(iter, "Custom _Action", Visible);
+ iter = checkCurrentItemIsCustomActionAndGetNext(iter, "Custom _Toggle Action", Visible | Enabled | Checked);
+ g_assert(!iter);
+
+ quitMainLoop();
+
+ return true;
+ }
+};
+
+static void testContextMenuCustomMenu(ContextMenuCustomFullTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ test->showContextMenuAndWaitUntilFinished();
+}
+
+class ContextMenuDisabledTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuDisabledTest);
+
+ enum DisableMode {
+ IgnoreClicks,
+ IgnoreDefaultMenu
+ };
+
+ static gboolean buttonPressEventCallback(GtkWidget*, GdkEvent* event, ContextMenuDisabledTest* test)
+ {
+ if (event->button.button != 3)
+ return FALSE;
+ return test->rightButtonPressed();
+ }
+
+ ContextMenuDisabledTest()
+ : m_disableMode(IgnoreClicks)
+ {
+ g_signal_connect(m_webView, "button-press-event", G_CALLBACK(buttonPressEventCallback), this);
+ }
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*)
+ {
+ if (m_disableMode == IgnoreClicks)
+ g_assert_not_reached();
+ else
+ quitMainLoop();
+
+ return true;
+ }
+
+ bool rightButtonPressed()
+ {
+ if (m_disableMode == IgnoreClicks) {
+ quitMainLoopAfterProcessingPendingEvents();
+ return true;
+ }
+ return false;
+ }
+
+ DisableMode m_disableMode;
+};
+
+static void testContextMenuDisableMenu(ContextMenuDisabledTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ test->m_disableMode = ContextMenuDisabledTest::IgnoreDefaultMenu;
+ test->showContextMenuAndWaitUntilFinished();
+
+ test->m_disableMode = ContextMenuDisabledTest::IgnoreClicks;
+ test->showContextMenuAndWaitUntilFinished();
+}
+
+class ContextMenuSubmenuTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuSubmenuTest);
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*)
+ {
+ size_t menuSize = webkit_context_menu_get_n_items(contextMenu);
+ GRefPtr<WebKitContextMenu> subMenu = adoptGRef(webkit_context_menu_new());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_with_submenu("SubMenuItem", subMenu.get()));
+ g_assert_cmpuint(webkit_context_menu_get_n_items(contextMenu), ==, menuSize + 1);
+
+ GRefPtr<WebKitContextMenu> subMenu2 = adoptGRef(webkit_context_menu_new());
+ GRefPtr<WebKitContextMenuItem> item = webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK);
+
+ // Add submenu to newly created item.
+ g_assert(!webkit_context_menu_item_get_submenu(item.get()));
+ webkit_context_menu_item_set_submenu(item.get(), subMenu2.get());
+ g_assert(webkit_context_menu_item_get_submenu(item.get()) == subMenu2.get());
+
+ // Replace the submenu.
+ webkit_context_menu_item_set_submenu(item.get(), 0);
+ g_assert(!webkit_context_menu_item_get_submenu(item.get()));
+
+ // Try to add a submenu already added to another item.
+ removeLogFatalFlag(G_LOG_LEVEL_WARNING);
+ webkit_context_menu_item_set_submenu(item.get(), subMenu.get());
+ addLogFatalFlag(G_LOG_LEVEL_WARNING);
+ g_assert(!webkit_context_menu_item_get_submenu(item.get()));
+
+ // A removed submenu shouldn't have a parent.
+ webkit_context_menu_item_set_submenu(item.get(), subMenu2.get());
+ g_assert(webkit_context_menu_item_get_submenu(item.get()) == subMenu2.get());
+
+ quitMainLoop();
+
+ return true;
+ }
+};
+
+static void testContextMenuSubMenu(ContextMenuSubmenuTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ test->showContextMenuAndWaitUntilFinished();
+}
+
+class ContextMenuDismissedTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuDismissedTest);
+
+ ContextMenuDismissedTest()
+ : m_dismissed(false)
+ {
+ }
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*)
+ {
+ quitMainLoop();
+ // Show the default context menu.
+ return false;
+ }
+
+ void contextMenuDismissed()
+ {
+ m_dismissed = true;
+ ContextMenuTest::contextMenuDismissed();
+ }
+
+ void showContextMenuAndWaitUntilDismissed()
+ {
+ showContextMenuAndWaitUntilFinished();
+ dismissContextMenuAndWaitUntilFinished();
+ }
+
+ bool m_dismissed;
+};
+
+static void testContextMenuDismissed(ContextMenuDismissedTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ test->showContextMenuAndWaitUntilDismissed();
+ g_assert(test->m_dismissed);
+}
+
+class ContextMenuSmartSeparatorsTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuSmartSeparatorsTest);
+
+ bool contextMenu(WebKitContextMenu* contextMenu, GdkEvent*, WebKitHitTestResult*)
+ {
+ webkit_context_menu_remove_all(contextMenu);
+
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_GO_BACK));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_COPY));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT));
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(contextMenu, webkit_context_menu_item_new_separator());
+
+ quitMainLoop();
+
+ return false;
+ }
+
+ GtkMenu* showContextMenuAndGetGtkMenu()
+ {
+ showContextMenuAndWaitUntilFinished();
+ return getPopupMenu();
+ }
+};
+
+static void testContextMenuSmartSeparators(ContextMenuSmartSeparatorsTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+
+ GtkMenu* menu = test->showContextMenuAndGetGtkMenu();
+ g_assert(menu);
+
+ // Leading and trailing separators are not added to the context menu.
+ GUniquePtr<GList> menuItems(gtk_container_get_children(GTK_CONTAINER(menu)));
+ g_assert_cmpuint(g_list_length(menuItems.get()), ==, 6);
+ GtkWidget* item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 0));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 1));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 2));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 3));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 4));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 5));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+
+ // Hiding a menu item between two separators hides the following separator.
+ GtkAction* action = gtk_activatable_get_related_action(GTK_ACTIVATABLE(g_list_nth_data(menuItems.get(), 3)));
+ gtk_action_set_visible(action, FALSE);
+ menuItems.reset(gtk_container_get_children(GTK_CONTAINER(menu)));
+ g_assert_cmpuint(g_list_length(menuItems.get()), ==, 6);
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 0));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 1));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 2));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 3));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && !gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 4));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && !gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 5));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ gtk_action_set_visible(action, TRUE);
+
+ // Showing an action between two separators shows the hidden separator.
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 0));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 1));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 2));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 3));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 4));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 5));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+
+ // Trailing separators are hidden too.
+ action = gtk_activatable_get_related_action(GTK_ACTIVATABLE(g_list_nth_data(menuItems.get(), 5)));
+ gtk_action_set_visible(action, FALSE);
+ menuItems.reset(gtk_container_get_children(GTK_CONTAINER(menu)));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 0));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 1));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 2));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 3));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 4));
+ g_assert(GTK_IS_SEPARATOR_MENU_ITEM(item) && !gtk_widget_get_visible(item));
+ item = GTK_WIDGET(g_list_nth_data(menuItems.get(), 5));
+ g_assert(!GTK_IS_SEPARATOR_MENU_ITEM(item) && !gtk_widget_get_visible(item));
+}
+
+class ContextMenuWebExtensionTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuWebExtensionTest);
+
+ void deserializeContextMenuFromUserData(GVariant* userData)
+ {
+ m_actions.clear();
+ if (!userData)
+ return;
+
+ GVariantIter iter;
+ g_variant_iter_init(&iter, userData);
+ m_actions.reserveInitialCapacity(g_variant_iter_n_children(&iter));
+
+ uint32_t item;
+ while (g_variant_iter_next(&iter, "u", &item))
+ m_actions.uncheckedAppend(static_cast<WebKitContextMenuAction>(item));
+ }
+
+ bool contextMenu(WebKitContextMenu* menu, GdkEvent*, WebKitHitTestResult*)
+ {
+ deserializeContextMenuFromUserData(webkit_context_menu_get_user_data(menu));
+ GList* items = webkit_context_menu_get_items(menu);
+ g_assert_cmpuint(g_list_length(items), ==, m_actions.size());
+
+ unsigned actionIndex = 0;
+ for (GList* it = items; it; it = g_list_next(it)) {
+ WebKitContextMenuItem* item = WEBKIT_CONTEXT_MENU_ITEM(it->data);
+ g_assert_cmpuint(webkit_context_menu_item_get_stock_action(item), ==, m_actions[actionIndex++]);
+ }
+
+ quitMainLoop();
+
+ return true;
+ }
+
+ Vector<WebKitContextMenuAction> m_actions;
+};
+
+static void testContextMenuWebExtensionMenu(ContextMenuWebExtensionTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+ test->loadHtml("<html><body>WebKitGTK+ Context menu tests<br>"
+ "<a style='position:absolute; left:1; top:10' href='http://www.webkitgtk.org'>WebKitGTK+ Website</a></body></html>",
+ "ContextMenuTestDefault");
+ test->waitUntilLoadFinished();
+
+ // Default context menu.
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 1);
+ g_assert_cmpuint(test->m_actions.size(), ==, 4);
+ g_assert_cmpuint(test->m_actions[0], ==, WEBKIT_CONTEXT_MENU_ACTION_GO_BACK);
+ g_assert_cmpuint(test->m_actions[1], ==, WEBKIT_CONTEXT_MENU_ACTION_GO_FORWARD);
+ g_assert_cmpuint(test->m_actions[2], ==, WEBKIT_CONTEXT_MENU_ACTION_STOP);
+ g_assert_cmpuint(test->m_actions[3], ==, WEBKIT_CONTEXT_MENU_ACTION_RELOAD);
+
+ // Link menu.
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 11);
+ g_assert_cmpuint(test->m_actions.size(), ==, 4);
+ g_assert_cmpuint(test->m_actions[0], ==, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK);
+ g_assert_cmpuint(test->m_actions[1], ==, WEBKIT_CONTEXT_MENU_ACTION_OPEN_LINK_IN_NEW_WINDOW);
+ g_assert_cmpuint(test->m_actions[2], ==, WEBKIT_CONTEXT_MENU_ACTION_DOWNLOAD_LINK_TO_DISK);
+ g_assert_cmpuint(test->m_actions[3], ==, WEBKIT_CONTEXT_MENU_ACTION_COPY_LINK_TO_CLIPBOARD);
+
+ // Custom menu.
+ test->loadHtml("<html><body></body></html>", "ContextMenuTestCustom");
+ test->showContextMenuAndWaitUntilFinished();
+ g_assert_cmpuint(test->m_actions.size(), ==, 4);
+ g_assert_cmpuint(test->m_actions[0], ==, WEBKIT_CONTEXT_MENU_ACTION_STOP);
+ g_assert_cmpuint(test->m_actions[1], ==, WEBKIT_CONTEXT_MENU_ACTION_RELOAD);
+ g_assert_cmpuint(test->m_actions[2], ==, WEBKIT_CONTEXT_MENU_ACTION_NO_ACTION);
+ g_assert_cmpuint(test->m_actions[3], ==, WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT);
+
+ // Menu cleared by the web process.
+ test->loadHtml("<html><body></body></html>", "ContextMenuTestClear");
+ test->showContextMenuAndWaitUntilFinished();
+ g_assert_cmpuint(test->m_actions.size(), ==, 0);
+}
+
+class ContextMenuWebExtensionNodeTest: public ContextMenuTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ContextMenuWebExtensionNodeTest);
+
+ struct Node {
+ enum {
+ NodeUnknown = 0,
+ NodeElement = 1,
+ NodeText = 3
+ };
+ typedef unsigned Type;
+
+ CString name;
+ Type type;
+ CString contents;
+ CString parentName;
+ };
+
+ void deserializeNodeFromUserData(GVariant* userData)
+ {
+ GVariantIter iter;
+ g_variant_iter_init(&iter, userData);
+
+ const char* key;
+ GVariant* value;
+ while (g_variant_iter_next(&iter, "{&sv}", &key, &value)) {
+ if (!strcmp(key, "Name") && g_variant_classify(value) == G_VARIANT_CLASS_STRING)
+ m_node.name = g_variant_get_string(value, nullptr);
+ else if (!strcmp(key, "Type") && g_variant_classify(value) == G_VARIANT_CLASS_UINT32)
+ m_node.type = g_variant_get_uint32(value);
+ else if (!strcmp(key, "Contents") && g_variant_classify(value) == G_VARIANT_CLASS_STRING)
+ m_node.contents = g_variant_get_string(value, nullptr);
+ else if (!strcmp(key, "Parent") && g_variant_classify(value) == G_VARIANT_CLASS_STRING)
+ m_node.parentName = g_variant_get_string(value, nullptr);
+ g_variant_unref(value);
+ }
+ }
+
+ bool contextMenu(WebKitContextMenu* menu, GdkEvent*, WebKitHitTestResult*)
+ {
+ deserializeNodeFromUserData(webkit_context_menu_get_user_data(menu));
+ quitMainLoop();
+
+ return true;
+ }
+
+ Node m_node;
+};
+
+static void testContextMenuWebExtensionNode(ContextMenuWebExtensionNodeTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+ test->loadHtml("<html><body><p style='position:absolute; left:1; top:1'>WebKitGTK+ Context menu tests</p><br>"
+ "<a style='position:absolute; left:1; top:100' href='http://www.webkitgtk.org'>WebKitGTK+ Website</a></body></html>",
+ "ContextMenuTestNode");
+ test->waitUntilLoadFinished();
+
+ test->showContextMenuAtPositionAndWaitUntilFinished(0, 0);
+ g_assert_cmpstr(test->m_node.name.data(), ==, "HTML");
+ g_assert_cmpuint(test->m_node.type, ==, ContextMenuWebExtensionNodeTest::Node::NodeElement);
+ g_assert_cmpstr(test->m_node.contents.data(), ==, "WebKitGTK+ Context menu testsWebKitGTK+ Website");
+ g_assert_cmpstr(test->m_node.parentName.data(), ==, "#document");
+
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 20);
+ g_assert_cmpstr(test->m_node.name.data(), ==, "#text");
+ g_assert_cmpuint(test->m_node.type, ==, ContextMenuWebExtensionNodeTest::Node::NodeText);
+ g_assert_cmpstr(test->m_node.contents.data(), ==, "WebKitGTK+ Context menu tests");
+ g_assert_cmpstr(test->m_node.parentName.data(), ==, "P");
+
+ // Link menu.
+ test->showContextMenuAtPositionAndWaitUntilFinished(1, 101);
+ g_assert_cmpstr(test->m_node.name.data(), ==, "#text");
+ g_assert_cmpuint(test->m_node.type, ==, ContextMenuWebExtensionNodeTest::Node::NodeText);
+ g_assert_cmpstr(test->m_node.contents.data(), ==, "WebKitGTK+ Website");
+ g_assert_cmpstr(test->m_node.parentName.data(), ==, "A");
+}
+
+void beforeAll()
+{
+ ContextMenuDefaultTest::add("WebKitWebView", "default-menu", testContextMenuDefaultMenu);
+ ContextMenuCustomTest::add("WebKitWebView", "populate-menu", testContextMenuPopulateMenu);
+ ContextMenuCustomFullTest::add("WebKitWebView", "custom-menu", testContextMenuCustomMenu);
+ ContextMenuDisabledTest::add("WebKitWebView", "disable-menu", testContextMenuDisableMenu);
+ ContextMenuSubmenuTest::add("WebKitWebView", "submenu", testContextMenuSubMenu);
+ ContextMenuDismissedTest::add("WebKitWebView", "menu-dismissed", testContextMenuDismissed);
+ ContextMenuSmartSeparatorsTest::add("WebKitWebView", "smart-separators", testContextMenuSmartSeparators);
+ ContextMenuWebExtensionTest::add("WebKitWebPage", "context-menu", testContextMenuWebExtensionMenu);
+ ContextMenuWebExtensionNodeTest::add("WebKitWebPage", "context-menu-node", testContextMenuWebExtensionNode);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
new file mode 100644
index 000000000..1e842cd04
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestCookieManager.cpp
@@ -0,0 +1,326 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <glib/gstdio.h>
+
+static WebKitTestServer* kServer;
+
+static const char* kFirstPartyDomain = "127.0.0.1";
+static const char* kThirdPartyDomain = "localhost";
+static const char* kIndexHtmlFormat =
+ "<html><body>"
+ " <p>WebKitGTK+ Cookie Manager test</p>"
+ " <img src='http://localhost:%u/image.png' width=5 height=5></img>"
+ "</body></html>";
+
+class CookieManagerTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(CookieManagerTest);
+
+ static void cookiesChangedCallback(WebKitCookieManager*, CookieManagerTest* test)
+ {
+ test->m_cookiesChanged = true;
+ if (test->m_finishLoopWhenCookiesChange)
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ CookieManagerTest()
+ : WebViewTest()
+ , m_cookieManager(webkit_web_context_get_cookie_manager(webkit_web_view_get_context(m_webView)))
+ , m_acceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY)
+ , m_domains(0)
+ , m_cookiesChanged(false)
+ , m_finishLoopWhenCookiesChange(false)
+ {
+ g_signal_connect(m_cookieManager, "changed", G_CALLBACK(cookiesChangedCallback), this);
+ }
+
+ ~CookieManagerTest()
+ {
+ g_strfreev(m_domains);
+ g_signal_handlers_disconnect_matched(m_cookieManager, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ if (m_cookiesTextFile)
+ g_unlink(m_cookiesTextFile.get());
+ if (m_cookiesSQLiteFile)
+ g_unlink(m_cookiesSQLiteFile.get());
+ }
+
+ void setPersistentStorage(WebKitCookiePersistentStorage storage)
+ {
+ const char* filename = 0;
+ switch (storage) {
+ case WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT:
+ if (!m_cookiesTextFile)
+ m_cookiesTextFile.reset(g_build_filename(Test::dataDirectory(), "cookies.txt", nullptr));
+ filename = m_cookiesTextFile.get();
+ break;
+ case WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE:
+ if (!m_cookiesSQLiteFile)
+ m_cookiesSQLiteFile.reset(g_build_filename(Test::dataDirectory(), "cookies.db", nullptr));
+ filename = m_cookiesSQLiteFile.get();
+ break;
+ default:
+ g_assert_not_reached();
+ }
+ webkit_cookie_manager_set_persistent_storage(m_cookieManager, filename, storage);
+ }
+
+ static void getAcceptPolicyReadyCallback(GObject* object, GAsyncResult* result, gpointer userData)
+ {
+ GUniqueOutPtr<GError> error;
+ WebKitCookieAcceptPolicy policy = webkit_cookie_manager_get_accept_policy_finish(WEBKIT_COOKIE_MANAGER(object), result, &error.outPtr());
+ g_assert(!error.get());
+
+ CookieManagerTest* test = static_cast<CookieManagerTest*>(userData);
+ test->m_acceptPolicy = policy;
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ WebKitCookieAcceptPolicy getAcceptPolicy()
+ {
+ m_acceptPolicy = WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY;
+ webkit_cookie_manager_get_accept_policy(m_cookieManager, 0, getAcceptPolicyReadyCallback, this);
+ g_main_loop_run(m_mainLoop);
+
+ return m_acceptPolicy;
+ }
+
+ void setAcceptPolicy(WebKitCookieAcceptPolicy policy)
+ {
+ webkit_cookie_manager_set_accept_policy(m_cookieManager, policy);
+ }
+
+ static void getDomainsReadyCallback(GObject* object, GAsyncResult* result, gpointer userData)
+ {
+ GUniqueOutPtr<GError> error;
+ char** domains = webkit_cookie_manager_get_domains_with_cookies_finish(WEBKIT_COOKIE_MANAGER(object), result, &error.outPtr());
+ g_assert(!error.get());
+
+ CookieManagerTest* test = static_cast<CookieManagerTest*>(userData);
+ test->m_domains = domains;
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ char** getDomains()
+ {
+ g_strfreev(m_domains);
+ m_domains = 0;
+ webkit_cookie_manager_get_domains_with_cookies(m_cookieManager, 0, getDomainsReadyCallback, this);
+ g_main_loop_run(m_mainLoop);
+
+ return m_domains;
+ }
+
+ bool hasDomain(const char* domain)
+ {
+ if (!m_domains)
+ return false;
+
+ for (size_t i = 0; m_domains[i]; ++i)
+ if (g_str_equal(m_domains[i], domain))
+ return true;
+ return false;
+ }
+
+ void deleteCookiesForDomain(const char* domain)
+ {
+ webkit_cookie_manager_delete_cookies_for_domain(m_cookieManager, domain);
+ }
+
+ void deleteAllCookies()
+ {
+ webkit_cookie_manager_delete_all_cookies(m_cookieManager);
+ }
+
+ void waitUntilCookiesChanged()
+ {
+ m_cookiesChanged = false;
+ m_finishLoopWhenCookiesChange = true;
+ g_main_loop_run(m_mainLoop);
+ m_finishLoopWhenCookiesChange = false;
+ }
+
+ WebKitCookieManager* m_cookieManager;
+ WebKitCookieAcceptPolicy m_acceptPolicy;
+ char** m_domains;
+ bool m_cookiesChanged;
+ bool m_finishLoopWhenCookiesChange;
+ GUniquePtr<char> m_cookiesTextFile;
+ GUniquePtr<char> m_cookiesSQLiteFile;
+};
+
+static void testCookieManagerAcceptPolicy(CookieManagerTest* test, gconstpointer)
+{
+ // Default policy is NO_THIRD_PARTY.
+ g_assert_cmpint(test->getAcceptPolicy(), ==, WEBKIT_COOKIE_POLICY_ACCEPT_NO_THIRD_PARTY);
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ char** domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 1);
+ g_assert_cmpstr(domains[0], ==, kFirstPartyDomain);
+ test->deleteAllCookies();
+
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+ g_assert_cmpint(test->getAcceptPolicy(), ==, WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 2);
+ g_assert(test->hasDomain(kFirstPartyDomain));
+ g_assert(test->hasDomain(kThirdPartyDomain));
+ test->deleteAllCookies();
+
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_NEVER);
+ g_assert_cmpint(test->getAcceptPolicy(), ==, WEBKIT_COOKIE_POLICY_ACCEPT_NEVER);
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 0);
+}
+
+static void testCookieManagerDeleteCookies(CookieManagerTest* test, gconstpointer)
+{
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 2);
+
+ // Delete first party cookies.
+ test->deleteCookiesForDomain(kFirstPartyDomain);
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 1);
+
+ // Delete third party cookies.
+ test->deleteCookiesForDomain(kThirdPartyDomain);
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 0);
+
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 2);
+
+ // Delete all cookies.
+ test->deleteAllCookies();
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 0);
+}
+
+static void testCookieManagerCookiesChanged(CookieManagerTest* test, gconstpointer)
+{
+ g_assert(!test->m_cookiesChanged);
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_cookiesChanged);
+
+ test->deleteCookiesForDomain(kFirstPartyDomain);
+ test->waitUntilCookiesChanged();
+ g_assert(test->m_cookiesChanged);
+
+ test->deleteAllCookies();
+ test->waitUntilCookiesChanged();
+ g_assert(test->m_cookiesChanged);
+}
+
+static void testCookieManagerPersistentStorage(CookieManagerTest* test, gconstpointer)
+{
+ test->setAcceptPolicy(WEBKIT_COOKIE_POLICY_ACCEPT_ALWAYS);
+
+ // Text storage using a new file.
+ test->setPersistentStorage(WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT);
+ char** domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 0);
+
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_cookiesChanged);
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 2);
+
+
+ // SQLite storage using a new file.
+ test->setPersistentStorage(WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE);
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 0);
+
+ test->loadURI(kServer->getURIForPath("/index.html").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_cookiesChanged);
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 2);
+
+ // Text storage using an existing file.
+ test->setPersistentStorage(WEBKIT_COOKIE_PERSISTENT_STORAGE_TEXT);
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 2);
+ test->deleteAllCookies();
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 0);
+
+ // SQLite storage with an existing file.
+ test->setPersistentStorage(WEBKIT_COOKIE_PERSISTENT_STORAGE_SQLITE);
+ domains = test->getDomains();
+ g_assert(domains);
+ g_assert_cmpint(g_strv_length(domains), ==, 2);
+ test->deleteAllCookies();
+ g_assert_cmpint(g_strv_length(test->getDomains()), ==, 0);
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ if (g_str_equal(path, "/index.html")) {
+ char* indexHtml = g_strdup_printf(kIndexHtmlFormat, soup_server_get_port(server));
+ soup_message_headers_replace(message->response_headers, "Set-Cookie", "foo=bar; Max-Age=60");
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, indexHtml, strlen(indexHtml));
+ } else if (g_str_equal(path, "/image.png"))
+ soup_message_headers_replace(message->response_headers, "Set-Cookie", "baz=qux; Max-Age=60");
+ else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+ soup_message_body_complete(message->response_body);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ CookieManagerTest::add("WebKitCookieManager", "accept-policy", testCookieManagerAcceptPolicy);
+ CookieManagerTest::add("WebKitCookieManager", "delete-cookies", testCookieManagerDeleteCookies);
+ CookieManagerTest::add("WebKitCookieManager", "cookies-changed", testCookieManagerCookiesChanged);
+ CookieManagerTest::add("WebKitCookieManager", "persistent-storage", testCookieManagerPersistentStorage);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMDOMWindow.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMDOMWindow.cpp
new file mode 100644
index 000000000..98c6e1064
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMDOMWindow.cpp
@@ -0,0 +1,152 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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
+ * 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 "WebProcessTestRunner.h"
+#include "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+#define HTML_DOCUMENT "<html><head><title></title></head><style type='text/css'>#test { font-size: 16px; }</style><body><p id='test'>test</p></body></html>"
+
+typedef struct {
+ gboolean loaded;
+ gboolean clicked;
+ WebProcessTestRunner* testRunner;
+ WebViewTest* test;
+} DomDomWindowTestStatus;
+
+static DomDomWindowTestStatus status;
+
+static void signalsNotifyCallback(const gchar *key, const gchar *value, gconstpointer)
+{
+ if (g_str_equal(key, "ready")) {
+ // The document was already loaded in the webprocess, and its "load"
+ // signal couldn't be captured on time (was issued before the test
+ // started). We load it again to force a new "load" signal in the
+ // webprocess, which will be captured this time
+ status.test->loadHtml(HTML_DOCUMENT, 0);
+ }
+
+ if (g_str_equal(key, "loaded")) {
+ status.loaded = TRUE;
+ status.test->showInWindowAndWaitUntilMapped();
+
+ // Click in a known location where the text is
+ status.test->clickMouseButton(20, 18, 1, 0);
+ }
+
+ if (g_str_equal(key, "clicked"))
+ status.clicked = TRUE;
+
+ if (g_str_equal(key, "finish")) {
+ status.test = 0;
+ status.testRunner->finishTest(status.loaded && status.clicked);
+ }
+}
+
+static void dispatchEventNotifyCallback(const gchar *key, const gchar *value, gconstpointer)
+{
+ if (g_str_equal(key, "ready")) {
+ // The document was already loaded in the webprocess, and its "load"
+ // signal couldn't be captured on time (was issued before the test
+ // started). We load it again to force a new "load" signal in the
+ // webprocess, which will be captured this time
+ status.test->loadHtml(HTML_DOCUMENT, 0);
+ }
+
+ if (g_str_equal(key, "loaded"))
+ status.loaded = TRUE;
+
+ if (g_str_equal(key, "clicked"))
+ status.clicked = TRUE;
+
+ if (g_str_equal(key, "finish")) {
+ status.test = 0;
+ status.testRunner->finishTest(status.loaded && status.clicked);
+ }
+}
+
+static void testWebKitDOMDOMWindowSignals(WebViewTest* test, gconstpointer)
+{
+ status.loaded = FALSE;
+ status.clicked = FALSE;
+ status.test = test;
+
+ status.testRunner->setNotifyCallback(G_CALLBACK(signalsNotifyCallback), 0);
+
+ // The HTML document will we loaded later, when the test is "ready" because
+ // we want to test the "load" signal
+
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(status.test->m_webView)));
+ status.testRunner->runTestAndWait("WebKitDOMDOMWindow", "signals", g_variant_builder_end(&builder));
+ g_assert(status.testRunner->getTestResult());
+}
+
+static void testWebKitDOMDOMWindowDispatchEvent(WebViewTest* test, gconstpointer)
+{
+ status.loaded = FALSE;
+ status.clicked = FALSE;
+ status.test = test;
+
+ status.testRunner->setNotifyCallback(G_CALLBACK(dispatchEventNotifyCallback), 0);
+
+ // The HTML document will we loaded later, when the test is "ready" because
+ // we want to test the "load" signal
+
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(status.test->m_webView)));
+ status.testRunner->runTestAndWait("WebKitDOMDOMWindow", "dispatch-event", g_variant_builder_end(&builder));
+ g_assert(status.testRunner->getTestResult());
+}
+
+static void testWebKitDOMDOMWindowGetComputedStyle(WebViewTest* test, gconstpointer)
+{
+ status.loaded = FALSE;
+ status.clicked = FALSE;
+ status.test = test;
+
+ static const char* testHTML = HTML_DOCUMENT;
+ status.test->loadHtml(testHTML, 0);
+ status.test->waitUntilLoadFinished();
+
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_VARDICT);
+ g_variant_builder_add(&builder, "{sv}", "pageID", g_variant_new_uint64(webkit_web_view_get_page_id(status.test->m_webView)));
+ g_assert(status.testRunner->runTest("WebKitDOMDOMWindow", "get-computed-style", g_variant_builder_end(&builder)));
+}
+
+void beforeAll()
+{
+ status.testRunner = new WebProcessTestRunner();
+ webkit_web_context_set_web_extensions_directory(webkit_web_context_get_default(), WEBKIT_TEST_WEB_EXTENSIONS_DIR);
+
+ WebViewTest::add("WebKitDOMDOMWindow", "signals", testWebKitDOMDOMWindowSignals);
+ WebViewTest::add("WebKitDOMDOMWindow", "dispatch-event", testWebKitDOMDOMWindowDispatchEvent);
+ WebViewTest::add("WebKitDOMDOMWindow", "get-computed-style", testWebKitDOMDOMWindowGetComputedStyle);
+}
+
+void afterAll()
+{
+ delete status.testRunner;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp
new file mode 100644
index 000000000..886356b7e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNode.cpp
@@ -0,0 +1,98 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void testWebKitDOMNodeHierarchyNavigation(WebViewTest* test, gconstpointer)
+{
+ static const char* testHTML = "<html><head><title>This is the title</title></head><body><p>1</p><p>2</p><p>3</p></body></html>";
+ test->loadHtml(testHTML, 0);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitDOMNode", "hierarchy-navigation"));
+}
+
+static void testWebKitDOMNodeInsertion(WebViewTest* test, gconstpointer)
+{
+ static const char* testHTML = "<html><body></body></html>";
+ test->loadHtml(testHTML, 0);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitDOMNode", "insertion"));
+}
+
+static void prepareDOMForTagNamesTests(WebViewTest* test)
+{
+ static const char* testHTML = "<html><head></head><body>"
+ "<video id='video' preload='none'>"
+ " <source src='movie.ogg' type='video/ogg'>"
+ " Your browser does not support the video tag."
+ "</video>"
+ "<video id='video2' preload='none'>"
+ " <source src='movie.ogg' type='video/ogg'>"
+ " Your browser does not support the video tag."
+ "</video>"
+ "<input type='hidden' id='test' name='finish' value='false'></body></html>";
+ test->loadHtml(testHTML, nullptr);
+ test->waitUntilLoadFinished();
+}
+
+static void testWebKitDOMNodeTagNamesNodeList(WebViewTest* test, gconstpointer)
+{
+ prepareDOMForTagNamesTests(test);
+ g_assert(test->runWebProcessTest("WebKitDOMNode", "tag-names-node-list"));
+}
+
+static void testWebKitDOMNodeTagNamesHTMLCollection(WebViewTest* test, gconstpointer)
+{
+ prepareDOMForTagNamesTests(test);
+ g_assert(test->runWebProcessTest("WebKitDOMNode", "tag-names-html-collection"));
+}
+
+static void testWebKitDOMObjectCache(WebViewTest* test, gconstpointer)
+{
+ static const char* testHTML = "<html><body><div id='container'><p>DOM Cache test</p><a id='link href='#'>link</a></div></body></html>";
+
+ // Run the test 3 times to make sure the DOM objects are correctly released when the
+ // document is detached from the frame for every new document created.
+ for (unsigned i = 0; i < 3; ++i) {
+ test->loadHtml(testHTML, nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitDOMNode", "dom-cache"));
+ }
+}
+
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitDOMNode", "hierarchy-navigation", testWebKitDOMNodeHierarchyNavigation);
+ WebViewTest::add("WebKitDOMNode", "insertion", testWebKitDOMNodeInsertion);
+ WebViewTest::add("WebKitDOMNode", "tag-names-node-list", testWebKitDOMNodeTagNamesNodeList);
+ WebViewTest::add("WebKitDOMNode", "tag-names-html-collection", testWebKitDOMNodeTagNamesHTMLCollection);
+ WebViewTest::add("WebKitDOMNode", "dom-cache", testWebKitDOMObjectCache);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp
new file mode 100644
index 000000000..812946153
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMNodeFilter.cpp
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static const char* testHTML = "<html id='root'><head><title>DOMNodeTreeWalker</title></head>"
+ "<body><input type='button' name='push' value='push'><input type='button' name='clear' value='clear'><br></body></html>";
+
+static void runTest(WebViewTest* test, const char* name)
+{
+ test->loadHtml(testHTML, nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitDOMNodeFilter", name));
+}
+
+static void testWebKitDOMNodeFilterTreeWalker(WebViewTest* test, gconstpointer)
+{
+ runTest(test, "tree-walker");
+}
+
+static void testWebKitDOMNodeFilterNodeIterator(WebViewTest* test, gconstpointer)
+{
+ runTest(test, "node-iterator");
+}
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitDOMNodeFilter", "tree-walker", testWebKitDOMNodeFilterTreeWalker);
+ WebViewTest::add("WebKitDOMNodeFilter", "node-iterator", testWebKitDOMNodeFilterNodeIterator);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp
new file mode 100644
index 000000000..ff9a77192
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDOMXPathNSResolver.cpp
@@ -0,0 +1,52 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void testWebKitDOMXPathNSResolverNative(WebViewTest* test, gconstpointer)
+{
+ static const char* nativeXML = "<root xmlns:foo='http://www.example.org'><foo:child>SUCCESS</foo:child></root>";
+ GRefPtr<GBytes> bytes = adoptGRef(g_bytes_new_static(nativeXML, strlen(nativeXML)));
+ test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr);
+ test->waitUntilLoadFinished();
+ g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "native"));
+}
+
+static void testWebKitDOMXPathNSResolverCustom(WebViewTest* test, gconstpointer)
+{
+ static const char* customXML = "<root xmlns='http://www.example.com'><child>SUCCESS</child></root>";
+ GRefPtr<GBytes> bytes = adoptGRef(g_bytes_new_static(customXML, strlen(customXML)));
+ test->loadBytes(bytes.get(), "text/xml", nullptr, nullptr);
+ test->waitUntilLoadFinished();
+ g_assert(test->runWebProcessTest("WebKitDOMXPathNSResolver", "custom"));
+}
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitDOMXPathNSResolver", "native", testWebKitDOMXPathNSResolverNative);
+ WebViewTest::add("WebKitDOMXPathNSResolver", "custom", testWebKitDOMXPathNSResolverCustom);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp
new file mode 100644
index 000000000..b4f21a130
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestDownloads.cpp
@@ -0,0 +1,633 @@
+/*
+ * Copyright (C) 2012, 2014 Igalia S.L.
+ *
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <glib/gstdio.h>
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <string.h>
+#include <webkit2/webkit2.h>
+#include <wtf/Vector.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+#include <wtf/text/CString.h>
+
+class DownloadTest: public Test {
+public:
+ MAKE_GLIB_TEST_FIXTURE(DownloadTest);
+
+ enum DownloadEvent {
+ Started,
+ ReceivedResponse,
+ CreatedDestination,
+ ReceivedData,
+ Failed,
+ Finished
+ };
+
+ static void receivedResponseCallback(WebKitDownload* download, GParamSpec*, DownloadTest* test)
+ {
+ g_assert(webkit_download_get_response(download));
+ test->receivedResponse(download);
+ }
+
+ static void createdDestinationCallback(WebKitDownload* download, const gchar* destination, DownloadTest* test)
+ {
+ g_assert(webkit_download_get_destination(download));
+ g_assert_cmpstr(webkit_download_get_destination(download), ==, destination);
+ GRefPtr<GFile> file = adoptGRef(g_file_new_for_uri(destination));
+ g_assert(g_file_query_exists(file.get(), nullptr));
+ test->createdDestination(download, destination);
+ }
+
+ static void receivedDataCallback(WebKitDownload* download, guint64 dataLength, DownloadTest* test)
+ {
+ test->receivedData(download, dataLength);
+ }
+
+ static void finishedCallback(WebKitDownload* download, DownloadTest* test)
+ {
+ test->finished(download);
+ }
+
+ static void failedCallback(WebKitDownload* download, GError* error, DownloadTest* test)
+ {
+ g_assert(error);
+
+ const char* destinationURI = webkit_download_get_destination(download);
+ if (destinationURI) {
+ GUniquePtr<char> tempFileURI(g_strconcat(destinationURI, ".wkdownload", nullptr));
+ GRefPtr<GFile> tempFile = adoptGRef(g_file_new_for_uri(tempFileURI.get()));
+ g_assert(!g_file_query_exists(tempFile.get(), nullptr));
+ }
+
+ test->failed(download, error);
+ }
+
+ static gboolean decideDestinationCallback(WebKitDownload* download, const gchar* suggestedFilename, DownloadTest* test)
+ {
+ g_assert(suggestedFilename);
+ test->decideDestination(download, suggestedFilename);
+ return TRUE;
+ }
+
+ static void downloadStartedCallback(WebKitWebContext* context, WebKitDownload* download, DownloadTest* test)
+ {
+ g_assert(webkit_download_get_request(download));
+ test->started(download);
+ g_signal_connect(download, "notify::response", G_CALLBACK(receivedResponseCallback), test);
+ g_signal_connect(download, "created-destination", G_CALLBACK(createdDestinationCallback), test);
+ g_signal_connect(download, "received-data", G_CALLBACK(receivedDataCallback), test);
+ g_signal_connect(download, "finished", G_CALLBACK(finishedCallback), test);
+ g_signal_connect(download, "failed", G_CALLBACK(failedCallback), test);
+ g_signal_connect(download, "decide-destination", G_CALLBACK(decideDestinationCallback), test);
+ }
+
+ DownloadTest()
+ : m_mainLoop(g_main_loop_new(nullptr, TRUE))
+ , m_downloadSize(0)
+ , m_allowOverwrite(false)
+ {
+ g_signal_connect(m_webContext.get(), "download-started", G_CALLBACK(downloadStartedCallback), this);
+ }
+
+ ~DownloadTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webContext.get(), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ g_main_loop_unref(m_mainLoop);
+ }
+
+ virtual void started(WebKitDownload* download)
+ {
+ m_downloadSize = 0;
+ m_downloadEvents.clear();
+ m_downloadEvents.append(Started);
+ }
+
+ virtual void receivedResponse(WebKitDownload* download)
+ {
+ m_downloadEvents.append(ReceivedResponse);
+ }
+
+ virtual void createdDestination(WebKitDownload* download, const char* destination)
+ {
+ m_downloadEvents.append(CreatedDestination);
+ }
+
+ virtual void receivedData(WebKitDownload* download, guint64 dataLength)
+ {
+ m_downloadSize += dataLength;
+ if (!m_downloadEvents.contains(ReceivedData))
+ m_downloadEvents.append(ReceivedData);
+ }
+
+ virtual void finished(WebKitDownload* download)
+ {
+ g_assert_cmpuint(m_downloadSize, ==, webkit_download_get_received_data_length(download));
+ m_downloadEvents.append(Finished);
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ virtual void failed(WebKitDownload* download, GError* error)
+ {
+ m_downloadEvents.append(Failed);
+ }
+
+ virtual void decideDestination(WebKitDownload* download, const gchar* suggestedFilename)
+ {
+ GUniquePtr<char> destination(g_build_filename(Test::dataDirectory(), suggestedFilename, nullptr));
+ GUniquePtr<char> destinationURI(g_filename_to_uri(destination.get(), 0, 0));
+ webkit_download_set_destination(download, destinationURI.get());
+ }
+
+ WebKitDownload* downloadURIAndWaitUntilFinishes(const CString& requestURI)
+ {
+ WebKitDownload* download = webkit_web_context_download_uri(m_webContext.get(), requestURI.data());
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(download));
+
+ g_assert(!webkit_download_get_allow_overwrite(download));
+ webkit_download_set_allow_overwrite(download, m_allowOverwrite);
+ g_assert(webkit_download_get_allow_overwrite(download) == m_allowOverwrite);
+
+ WebKitURIRequest* request = webkit_download_get_request(download);
+ g_assert(request);
+ ASSERT_CMP_CSTRING(webkit_uri_request_get_uri(request), ==, requestURI);
+
+ g_main_loop_run(m_mainLoop);
+
+ return download;
+ }
+
+ void checkDestinationAndDeleteFile(WebKitDownload* download, const char* expectedName)
+ {
+ if (!webkit_download_get_destination(download))
+ return;
+ GRefPtr<GFile> destFile = adoptGRef(g_file_new_for_uri(webkit_download_get_destination(download)));
+ GUniquePtr<char> destBasename(g_file_get_basename(destFile.get()));
+ g_assert_cmpstr(destBasename.get(), ==, expectedName);
+
+ g_file_delete(destFile.get(), 0, 0);
+ }
+
+ GMainLoop* m_mainLoop;
+ Vector<DownloadEvent> m_downloadEvents;
+ guint64 m_downloadSize;
+ bool m_allowOverwrite;
+};
+
+static GRefPtr<WebKitDownload> downloadLocalFileSuccessfully(DownloadTest* test, const char* filename)
+{
+ GUniquePtr<char> sourcePath(g_build_filename(Test::getResourcesDir().data(), filename, nullptr));
+ GRefPtr<GFile> source = adoptGRef(g_file_new_for_path(sourcePath.get()));
+ GRefPtr<GFileInfo> sourceInfo = adoptGRef(g_file_query_info(source.get(), G_FILE_ATTRIBUTE_STANDARD_SIZE, static_cast<GFileQueryInfoFlags>(0), 0, 0));
+ GUniquePtr<char> sourceURI(g_file_get_uri(source.get()));
+ GRefPtr<WebKitDownload> download = adoptGRef(test->downloadURIAndWaitUntilFinishes(sourceURI.get()));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ Vector<DownloadTest::DownloadEvent>& events = test->m_downloadEvents;
+ g_assert_cmpint(events.size(), ==, 5);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::CreatedDestination);
+ g_assert_cmpint(events[3], ==, DownloadTest::ReceivedData);
+ g_assert_cmpint(events[4], ==, DownloadTest::Finished);
+
+ WebKitURIRequest* request = webkit_download_get_request(download.get());
+ g_assert(request);
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, sourceURI.get());
+
+ g_assert_cmpint(test->m_downloadSize, ==, g_file_info_get_size(sourceInfo.get()));
+ g_assert(webkit_download_get_destination(download.get()));
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), ==, 1);
+
+ return download;
+}
+
+static void testDownloadLocalFile(DownloadTest* test, gconstpointer)
+{
+ static const char* filename = "test.pdf";
+ GRefPtr<WebKitDownload> download = downloadLocalFileSuccessfully(test, filename);
+ test->checkDestinationAndDeleteFile(download.get(), filename);
+}
+
+static void createFileAtDestination(const char* filename)
+{
+ GUniquePtr<char> path(g_build_filename(Test::dataDirectory(), filename, nullptr));
+ GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(path.get()));
+ GUniqueOutPtr<GError> error;
+ g_file_create(file.get(), G_FILE_CREATE_NONE, nullptr, &error.outPtr());
+ g_assert(!error);
+ g_assert(g_file_query_exists(file.get(), nullptr));
+}
+
+static void testDownloadOverwriteDestinationAllowed(DownloadTest* test, gconstpointer)
+{
+ static const char* filename = "test.pdf";
+ createFileAtDestination(filename);
+
+ test->m_allowOverwrite = true;
+ GRefPtr<WebKitDownload> download = downloadLocalFileSuccessfully(test, filename);
+ test->checkDestinationAndDeleteFile(download.get(), filename);
+}
+
+class DownloadErrorTest: public DownloadTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(DownloadErrorTest);
+
+ enum ExpectedError {
+ NetworkError,
+ DownloadCancelled,
+ InvalidDestination,
+ DestinationExists
+ };
+
+ DownloadErrorTest()
+ : m_expectedError(NetworkError)
+ {
+ }
+
+ void receivedResponse(WebKitDownload* download)
+ {
+ DownloadTest::receivedResponse(download);
+ }
+
+ void createdDestination(WebKitDownload* download, const char* destination)
+ {
+ if (m_expectedError == DownloadCancelled)
+ webkit_download_cancel(download);
+ else
+ g_assert_not_reached();
+ }
+
+ void failed(WebKitDownload* download, GError* error)
+ {
+ g_assert(g_error_matches(error, WEBKIT_DOWNLOAD_ERROR, expectedErrorToWebKitDownloadError(m_expectedError)));
+ DownloadTest::failed(download, error);
+ }
+
+ void decideDestination(WebKitDownload* download, const gchar* suggestedFilename)
+ {
+ if (m_expectedError != InvalidDestination) {
+ DownloadTest::decideDestination(download, suggestedFilename);
+ return;
+ }
+ webkit_download_set_destination(download, "file:///foo/bar");
+ }
+
+ static WebKitDownloadError expectedErrorToWebKitDownloadError(ExpectedError expected)
+ {
+ switch (expected) {
+ case NetworkError:
+ return WEBKIT_DOWNLOAD_ERROR_NETWORK;
+ case DownloadCancelled:
+ return WEBKIT_DOWNLOAD_ERROR_CANCELLED_BY_USER;
+ case InvalidDestination:
+ return WEBKIT_DOWNLOAD_ERROR_DESTINATION;
+ case DestinationExists:
+ return WEBKIT_DOWNLOAD_ERROR_DESTINATION;
+ default:
+ g_assert_not_reached();
+ }
+ }
+
+ ExpectedError m_expectedError;
+};
+
+static void testDownloadOverwriteDestinationDisallowed(DownloadErrorTest* test, gconstpointer)
+{
+ static const char* filename = "test.pdf";
+ createFileAtDestination(filename);
+
+ test->m_expectedError = DownloadErrorTest::DestinationExists;
+ GUniquePtr<char> sourcePath(g_build_filename(Test::getResourcesDir().data(), filename, nullptr));
+ GRefPtr<GFile> source = adoptGRef(g_file_new_for_path(sourcePath.get()));
+ GUniquePtr<char> sourceURI(g_file_get_uri(source.get()));
+ GRefPtr<WebKitDownload> download = adoptGRef(test->downloadURIAndWaitUntilFinishes(sourceURI.get()));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ Vector<DownloadTest::DownloadEvent>& events = test->m_downloadEvents;
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), ==, 0);
+
+ test->checkDestinationAndDeleteFile(download.get(), filename);
+}
+
+static void testDownloadLocalFileError(DownloadErrorTest* test, gconstpointer)
+{
+ test->m_expectedError = DownloadErrorTest::NetworkError;
+ GRefPtr<WebKitDownload> download = adoptGRef(test->downloadURIAndWaitUntilFinishes("file:///foo/bar"));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ Vector<DownloadTest::DownloadEvent>& events = test->m_downloadEvents;
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[2], ==, DownloadTest::Finished);
+ events.clear();
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+
+ test->m_expectedError = DownloadErrorTest::InvalidDestination;
+ GUniquePtr<char> path(g_build_filename(Test::getResourcesDir().data(), "test.pdf", nullptr));
+ GRefPtr<GFile> file = adoptGRef(g_file_new_for_path(path.get()));
+ GUniquePtr<char> uri(g_file_get_uri(file.get()));
+ download = adoptGRef(test->downloadURIAndWaitUntilFinishes(uri.get()));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ events.clear();
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+ test->checkDestinationAndDeleteFile(download.get(), "bar");
+
+ test->m_expectedError = DownloadErrorTest::DownloadCancelled;
+ download = adoptGRef(test->downloadURIAndWaitUntilFinishes(uri.get()));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ events.clear();
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+ test->checkDestinationAndDeleteFile(download.get(), "test.pdf");
+}
+
+static WebKitTestServer* kServer;
+static const char* kServerSuggestedFilename = "webkit-downloaded-file";
+
+static void addContentDispositionHTTPHeaderToResponse(SoupMessage* message)
+{
+ GUniquePtr<char> contentDisposition(g_strdup_printf("filename=%s", kServerSuggestedFilename));
+ soup_message_headers_append(message->response_headers, "Content-Disposition", contentDisposition.get());
+}
+
+static gboolean writeNextChunkIdle(SoupMessage* message)
+{
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, "chunk", 5);
+ return FALSE;
+}
+
+static void writeNextChunk(SoupMessage* message)
+{
+ g_timeout_add(100, reinterpret_cast<GSourceFunc>(writeNextChunkIdle), message);
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(message, SOUP_STATUS_OK);
+
+ if (g_str_equal(path, "/cancel-after-destination")) {
+ // Use an infinite message to make sure it's cancelled before it finishes.
+ soup_message_headers_set_encoding(message->response_headers, SOUP_ENCODING_CHUNKED);
+ addContentDispositionHTTPHeaderToResponse(message);
+ g_signal_connect(message, "wrote_headers", G_CALLBACK(writeNextChunk), nullptr);
+ g_signal_connect(message, "wrote_chunk", G_CALLBACK(writeNextChunk), nullptr);
+ return;
+ }
+
+ GUniquePtr<char> filePath(g_build_filename(Test::getResourcesDir().data(), path, nullptr));
+ char* contents;
+ gsize contentsLength;
+ if (!g_file_get_contents(filePath.get(), &contents, &contentsLength, 0)) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+ soup_message_body_complete(message->response_body);
+ return;
+ }
+
+ addContentDispositionHTTPHeaderToResponse(message);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, contentsLength);
+
+ soup_message_body_complete(message->response_body);
+}
+
+static void testDownloadRemoteFile(DownloadTest* test, gconstpointer)
+{
+ GRefPtr<WebKitDownload> download = adoptGRef(test->downloadURIAndWaitUntilFinishes(kServer->getURIForPath("/test.pdf")));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ Vector<DownloadTest::DownloadEvent>& events = test->m_downloadEvents;
+ g_assert_cmpint(events.size(), ==, 5);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::CreatedDestination);
+ g_assert_cmpint(events[3], ==, DownloadTest::ReceivedData);
+ g_assert_cmpint(events[4], ==, DownloadTest::Finished);
+ events.clear();
+
+ WebKitURIRequest* request = webkit_download_get_request(download.get());
+ g_assert(request);
+ ASSERT_CMP_CSTRING(webkit_uri_request_get_uri(request), ==, kServer->getURIForPath("/test.pdf"));
+
+ g_assert(webkit_download_get_destination(download.get()));
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), ==, 1);
+ test->checkDestinationAndDeleteFile(download.get(), kServerSuggestedFilename);
+}
+
+static void testDownloadRemoteFileError(DownloadErrorTest* test, gconstpointer)
+{
+ test->m_expectedError = DownloadErrorTest::NetworkError;
+ GRefPtr<WebKitDownload> download = adoptGRef(test->downloadURIAndWaitUntilFinishes(kServer->getURIForPath("/foo")));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ Vector<DownloadTest::DownloadEvent>& events = test->m_downloadEvents;
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ events.clear();
+ WebKitURIResponse* response = webkit_download_get_response(download.get());
+ g_assert_cmpuint(webkit_uri_response_get_status_code(response), ==, 404);
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+
+ test->m_expectedError = DownloadErrorTest::InvalidDestination;
+ download = adoptGRef(test->downloadURIAndWaitUntilFinishes(kServer->getURIForPath("/test.pdf")));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ events.clear();
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+ test->checkDestinationAndDeleteFile(download.get(), "bar");
+
+ test->m_expectedError = DownloadErrorTest::DownloadCancelled;
+ download = adoptGRef(test->downloadURIAndWaitUntilFinishes(kServer->getURIForPath("/cancel-after-destination")));
+ g_assert(!webkit_download_get_web_view(download.get()));
+
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, DownloadTest::Started);
+ g_assert_cmpint(events[1], ==, DownloadTest::ReceivedResponse);
+ g_assert_cmpint(events[2], ==, DownloadTest::Failed);
+ g_assert_cmpint(events[3], ==, DownloadTest::Finished);
+ events.clear();
+ g_assert_cmpfloat(webkit_download_get_estimated_progress(download.get()), <, 1);
+ // Check the intermediate file is deleted when the download is cancelled.
+ GUniquePtr<char> intermediateURI(g_strdup_printf("%s.wkdownload", webkit_download_get_destination(download.get())));
+ GRefPtr<GFile> intermediateFile = adoptGRef(g_file_new_for_uri(intermediateURI.get()));
+ g_assert(!g_file_query_exists(intermediateFile.get(), nullptr));
+}
+
+class WebViewDownloadTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(WebViewDownloadTest);
+
+ static void downloadStartedCallback(WebKitWebContext* context, WebKitDownload* download, WebViewDownloadTest* test)
+ {
+ test->m_download = download;
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(download));
+ test->quitMainLoop();
+ }
+
+ WebViewDownloadTest()
+ {
+ g_signal_connect(webkit_web_view_get_context(m_webView), "download-started", G_CALLBACK(downloadStartedCallback), this);
+ }
+
+ ~WebViewDownloadTest()
+ {
+ g_signal_handlers_disconnect_matched(webkit_web_view_get_context(m_webView), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void waitUntilDownloadStarted()
+ {
+ m_download = 0;
+ g_main_loop_run(m_mainLoop);
+ g_assert(m_download.get());
+ }
+
+ static gboolean downloadDecideDestinationCallback(WebKitDownload* download, const gchar* suggestedFilename, WebViewDownloadTest* test)
+ {
+ GUniquePtr<char> destination(g_build_filename(Test::dataDirectory(), suggestedFilename, nullptr));
+ GUniquePtr<char> destinationURI(g_filename_to_uri(destination.get(), 0, 0));
+ webkit_download_set_destination(download, destinationURI.get());
+ return TRUE;
+ }
+
+ static void downloadFinishedCallback(WebKitDownload* download, WebViewDownloadTest* test)
+ {
+ test->quitMainLoop();
+ }
+
+ void waitUntilDownloadFinished()
+ {
+ g_signal_connect(m_download.get(), "decide-destination", G_CALLBACK(downloadDecideDestinationCallback), this);
+ g_signal_connect(m_download.get(), "finished", G_CALLBACK(downloadFinishedCallback), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GRefPtr<WebKitDownload> m_download;
+};
+
+static void testWebViewDownloadURI(WebViewDownloadTest* test, gconstpointer)
+{
+ GRefPtr<WebKitDownload> download = adoptGRef(webkit_web_view_download_uri(test->m_webView, kServer->getURIForPath("/test.pdf").data()));
+ test->waitUntilDownloadStarted();
+ g_assert(test->m_webView == webkit_download_get_web_view(download.get()));
+ test->waitUntilDownloadFinished();
+
+ GRefPtr<GFile> downloadFile = adoptGRef(g_file_new_for_uri(webkit_download_get_destination(download.get())));
+ GRefPtr<GFileInfo> downloadFileInfo = adoptGRef(g_file_query_info(downloadFile.get(), G_FILE_ATTRIBUTE_STANDARD_SIZE, static_cast<GFileQueryInfoFlags>(0), 0, 0));
+ g_assert_cmpint(g_file_info_get_size(downloadFileInfo.get()), >, 0);
+ g_file_delete(downloadFile.get(), 0, 0);
+}
+
+class PolicyResponseDownloadTest: public WebViewDownloadTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(PolicyResponseDownloadTest);
+
+ static gboolean decidePolicyCallback(WebKitWebView* webView, WebKitPolicyDecision* decision, WebKitPolicyDecisionType type, PolicyResponseDownloadTest* test)
+ {
+ if (type != WEBKIT_POLICY_DECISION_TYPE_RESPONSE)
+ return FALSE;
+
+ webkit_policy_decision_download(decision);
+ return TRUE;
+ }
+
+ PolicyResponseDownloadTest()
+ {
+ g_signal_connect(m_webView, "decide-policy", G_CALLBACK(decidePolicyCallback), this);
+ }
+
+ ~PolicyResponseDownloadTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void cancelDownloadAndWaitUntilFinished()
+ {
+ webkit_download_cancel(m_download.get());
+ waitUntilDownloadFinished();
+ m_download = 0;
+ }
+};
+
+static void testPolicyResponseDownload(PolicyResponseDownloadTest* test, gconstpointer)
+{
+ // Test that a download started by the the policy checker contains the web view.
+ CString requestURI = kServer->getURIForPath("/test.pdf").data();
+ test->loadURI(requestURI.data());
+ test->waitUntilDownloadStarted();
+
+ WebKitURIRequest* request = webkit_download_get_request(test->m_download.get());
+ g_assert(request);
+ ASSERT_CMP_CSTRING(webkit_uri_request_get_uri(request), ==, requestURI);
+
+ g_assert(test->m_webView == webkit_download_get_web_view(test->m_download.get()));
+ test->cancelDownloadAndWaitUntilFinished();
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ DownloadTest::add("Downloads", "local-file", testDownloadLocalFile);
+ DownloadTest::add("Downloads", "overwrite-destination-allowed", testDownloadOverwriteDestinationAllowed);
+ DownloadErrorTest::add("Downloads", "overwrite-destination-disallowed", testDownloadOverwriteDestinationDisallowed);
+ DownloadErrorTest::add("Downloads", "local-file-error", testDownloadLocalFileError);
+ DownloadTest::add("Downloads", "remote-file", testDownloadRemoteFile);
+ DownloadErrorTest::add("Downloads", "remote-file-error", testDownloadRemoteFileError);
+ WebViewDownloadTest::add("WebKitWebView", "download-uri", testWebViewDownloadURI);
+ PolicyResponseDownloadTest::add("Downloads", "policy-decision-download", testPolicyResponseDownload);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestEditor.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestEditor.cpp
new file mode 100644
index 000000000..fc429d4c3
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestEditor.cpp
@@ -0,0 +1,42 @@
+/*
+ * Copyright (C) 2015 Red Hat Inc.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void testWebKitWebEditorSelectionChanged(WebViewTest* test, gconstpointer)
+{
+ static const gchar* testHTML = "<html><body>All work and no play make Jack a dull boy.</body></html>";
+ test->loadHtml(testHTML, nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitWebEditor", "selection-changed"));
+}
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitWebEditor", "selection-changed", testWebKitWebEditorSelectionChanged);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp
new file mode 100644
index 000000000..9145ab813
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestFrame.cpp
@@ -0,0 +1,59 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+static void webkitFrameTestRun(WebViewTest* test, const char* testName)
+{
+ static const char* testHTML = "<html><body></body></html>";
+ test->loadHtml(testHTML, 0);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->runWebProcessTest("WebKitFrame", testName));
+}
+
+static void testWebKitFrameMainFrame(WebViewTest* test, gconstpointer)
+{
+ webkitFrameTestRun(test, "main-frame");
+}
+
+static void testWebKitFrameURI(WebViewTest* test, gconstpointer)
+{
+ webkitFrameTestRun(test, "uri");
+}
+
+static void testWebKitFrameJavaScriptContext(WebViewTest* test, gconstpointer)
+{
+ webkitFrameTestRun(test, "javascript-context");
+}
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitFrame", "main-frame", testWebKitFrameMainFrame);
+ WebViewTest::add("WebKitFrame", "uri", testWebKitFrameURI);
+ WebViewTest::add("WebKitFrame", "javascript-context", testWebKitFrameJavaScriptContext);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspector.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspector.cpp
new file mode 100644
index 000000000..3d993e24f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspector.cpp
@@ -0,0 +1,369 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 "WebViewTest.h"
+#include <wtf/Vector.h>
+#include <wtf/glib/GRefPtr.h>
+
+class InspectorTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(InspectorTest);
+
+ enum InspectorEvents {
+ OpenWindow,
+ BringToFront,
+ Closed,
+ Attach,
+ Detach
+ };
+
+ static gboolean openWindowCallback(WebKitWebInspector*, InspectorTest* test)
+ {
+ return test->openWindow();
+ }
+
+ static gboolean bringToFrontCallback(WebKitWebInspector*, InspectorTest* test)
+ {
+ return test->bringToFront();
+ }
+
+ static void closedCallback(WebKitWebInspector*, InspectorTest* test)
+ {
+ return test->closed();
+ }
+
+ static gboolean attachCallback(WebKitWebInspector*, InspectorTest* test)
+ {
+ return test->attach();
+ }
+
+ static gboolean detachCallback(WebKitWebInspector*, InspectorTest* test)
+ {
+ return test->detach();
+ }
+
+ static const unsigned gMinimumAttachedInspectorWidth = 750;
+ static const unsigned gMinimumAttachedInspectorHeight = 250;
+
+ InspectorTest()
+ : WebViewTest()
+ , m_inspector(webkit_web_view_get_inspector(m_webView))
+ {
+ webkit_settings_set_enable_developer_extras(webkit_web_view_get_settings(m_webView), TRUE);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_inspector));
+ g_signal_connect(m_inspector, "open-window", G_CALLBACK(openWindowCallback), this);
+ g_signal_connect(m_inspector, "bring-to-front", G_CALLBACK(bringToFrontCallback), this);
+ g_signal_connect(m_inspector, "closed", G_CALLBACK(closedCallback), this);
+ g_signal_connect(m_inspector, "attach", G_CALLBACK(attachCallback), this);
+ g_signal_connect(m_inspector, "detach", G_CALLBACK(detachCallback), this);
+ }
+
+ ~InspectorTest()
+ {
+ g_signal_handlers_disconnect_matched(m_inspector, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ virtual bool openWindow()
+ {
+ m_events.append(OpenWindow);
+ g_main_loop_quit(m_mainLoop);
+ return TRUE;
+ }
+
+ virtual bool bringToFront()
+ {
+ m_events.append(BringToFront);
+ g_main_loop_quit(m_mainLoop);
+ return FALSE;
+ }
+
+ virtual void closed()
+ {
+ m_events.append(Closed);
+ }
+
+ virtual bool attach()
+ {
+ m_events.append(Attach);
+ return TRUE;
+ }
+
+ virtual bool detach()
+ {
+ m_events.append(Detach);
+ return TRUE;
+ }
+
+
+ static gboolean showIdle(InspectorTest* test)
+ {
+ webkit_web_inspector_show(test->m_inspector);
+ return FALSE;
+ }
+
+ void show()
+ {
+ g_idle_add(reinterpret_cast<GSourceFunc>(showIdle), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ static void canAttachChanged(InspectorTest* test)
+ {
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ void resizeViewAndAttach()
+ {
+ // Resize the view to make room for the inspector.
+ if (!webkit_web_inspector_get_can_attach(m_inspector)) {
+ unsigned long handler = g_signal_connect_swapped(m_inspector, "notify::can-attach", G_CALLBACK(canAttachChanged), this);
+ resizeView(gMinimumAttachedInspectorWidth, (gMinimumAttachedInspectorHeight + 1) * 4 / 3);
+ g_main_loop_run(m_mainLoop);
+ g_signal_handler_disconnect(m_inspector, handler);
+ }
+
+ g_assert(webkit_web_inspector_get_can_attach(m_inspector));
+ webkit_web_inspector_attach(m_inspector);
+ }
+
+ static gboolean detachIdle(InspectorTest* test)
+ {
+ webkit_web_inspector_detach(test->m_inspector);
+ return FALSE;
+ }
+
+ void detachAndWaitUntilWindowOpened()
+ {
+ g_idle_add(reinterpret_cast<GSourceFunc>(detachIdle), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void close()
+ {
+ webkit_web_inspector_close(m_inspector);
+ }
+
+ WebKitWebInspector* m_inspector;
+ Vector<InspectorEvents> m_events;
+};
+
+static void testInspectorDefault(InspectorTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+ test->resizeView(200, 200);
+ test->loadHtml("<html><body><p>WebKitGTK+ Inspector test</p></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ test->show();
+ // We don't add the view to a container, so consume the weak ref with GRefPtr.
+ GRefPtr<WebKitWebViewBase> inspectorView = webkit_web_inspector_get_web_view(test->m_inspector);
+ g_assert(inspectorView.get());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(inspectorView.get()));
+ g_assert(!webkit_web_inspector_is_attached(test->m_inspector));
+ g_assert_cmpuint(webkit_web_inspector_get_attached_height(test->m_inspector), ==, 0);
+ g_assert(!webkit_web_inspector_get_can_attach(test->m_inspector));
+ Vector<InspectorTest::InspectorEvents>& events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::OpenWindow);
+ test->m_events.clear();
+
+ test->show();
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::BringToFront);
+ test->m_events.clear();
+
+ test->resizeViewAndAttach();
+ g_assert(webkit_web_inspector_is_attached(test->m_inspector));
+ g_assert_cmpuint(webkit_web_inspector_get_attached_height(test->m_inspector), >=, InspectorTest::gMinimumAttachedInspectorHeight);
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::Attach);
+ test->m_events.clear();
+
+ test->detachAndWaitUntilWindowOpened();
+ g_assert(!webkit_web_inspector_is_attached(test->m_inspector));
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 2);
+ g_assert_cmpint(events[0], ==, InspectorTest::Detach);
+ g_assert_cmpint(events[1], ==, InspectorTest::OpenWindow);
+ test->m_events.clear();
+
+ test->close();
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::Closed);
+ test->m_events.clear();
+}
+
+class CustomInspectorTest: public InspectorTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(CustomInspectorTest);
+
+ CustomInspectorTest()
+ : InspectorTest()
+ , m_inspectorWindow(0)
+ {
+ }
+
+ ~CustomInspectorTest()
+ {
+ if (m_inspectorWindow)
+ gtk_widget_destroy(m_inspectorWindow);
+ }
+
+ bool openWindow()
+ {
+ g_assert(!m_inspectorWindow);
+ m_inspectorWindow = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+ WebKitWebViewBase* inspectorView = webkit_web_inspector_get_web_view(m_inspector);
+ g_assert(inspectorView);
+ gtk_container_add(GTK_CONTAINER(m_inspectorWindow), GTK_WIDGET(inspectorView));
+ gtk_widget_show_all(m_inspectorWindow);
+
+ return InspectorTest::openWindow();
+ }
+
+ void closed()
+ {
+ if (m_inspectorWindow) {
+ gtk_widget_destroy(m_inspectorWindow);
+ m_inspectorWindow = 0;
+ }
+
+ return InspectorTest::closed();
+ }
+
+ bool attach()
+ {
+ GRefPtr<WebKitWebViewBase> inspectorView = webkit_web_inspector_get_web_view(m_inspector);
+ if (m_inspectorWindow) {
+ gtk_container_remove(GTK_CONTAINER(m_inspectorWindow), GTK_WIDGET(inspectorView.get()));
+ gtk_widget_destroy(m_inspectorWindow);
+ m_inspectorWindow = 0;
+ }
+
+ GtkWidget* pane;
+ if (gtk_bin_get_child(GTK_BIN(m_parentWindow)) == GTK_WIDGET(m_webView)) {
+ GRefPtr<WebKitWebView> inspectedView = m_webView;
+ gtk_container_remove(GTK_CONTAINER(m_parentWindow), GTK_WIDGET(m_webView));
+ pane = gtk_paned_new(GTK_ORIENTATION_VERTICAL);
+ gtk_paned_add1(GTK_PANED(pane), GTK_WIDGET(m_webView));
+ gtk_container_add(GTK_CONTAINER(m_parentWindow), pane);
+ gtk_widget_show_all(pane);
+ } else
+ pane = gtk_bin_get_child(GTK_BIN(m_parentWindow));
+ gtk_paned_set_position(GTK_PANED(pane), webkit_web_inspector_get_attached_height(m_inspector));
+ gtk_paned_add2(GTK_PANED(pane), GTK_WIDGET(inspectorView.get()));
+
+ return InspectorTest::attach();
+ }
+
+ bool detach()
+ {
+ GRefPtr<WebKitWebViewBase> inspectorView = webkit_web_inspector_get_web_view(m_inspector);
+ GtkWidget* pane = gtk_bin_get_child(GTK_BIN(m_parentWindow));
+ g_assert(GTK_IS_PANED(pane));
+ gtk_container_remove(GTK_CONTAINER(pane), GTK_WIDGET(inspectorView.get()));
+ return InspectorTest::detach();
+ }
+
+ void destroyWindow()
+ {
+ g_assert(m_inspectorWindow);
+ gtk_widget_destroy(m_inspectorWindow);
+ m_inspectorWindow = 0;
+ }
+
+ GtkWidget* m_inspectorWindow;
+};
+
+static void testInspectorManualAttachDetach(CustomInspectorTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+ test->resizeView(200, 200);
+ test->loadHtml("<html><body><p>WebKitGTK+ Inspector test</p></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ test->show();
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webkit_web_inspector_get_web_view(test->m_inspector)));
+ g_assert(!webkit_web_inspector_is_attached(test->m_inspector));
+ Vector<InspectorTest::InspectorEvents>& events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::OpenWindow);
+ test->m_events.clear();
+
+ test->resizeViewAndAttach();
+ g_assert(webkit_web_inspector_is_attached(test->m_inspector));
+ g_assert_cmpuint(webkit_web_inspector_get_attached_height(test->m_inspector), >=, InspectorTest::gMinimumAttachedInspectorHeight);
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::Attach);
+ test->m_events.clear();
+
+ test->detachAndWaitUntilWindowOpened();
+ g_assert(!webkit_web_inspector_is_attached(test->m_inspector));
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 2);
+ g_assert_cmpint(events[0], ==, InspectorTest::Detach);
+ g_assert_cmpint(events[1], ==, InspectorTest::OpenWindow);
+ test->m_events.clear();
+
+ test->resizeViewAndAttach();
+ g_assert(webkit_web_inspector_is_attached(test->m_inspector));
+ test->m_events.clear();
+ test->close();
+ events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 2);
+ g_assert_cmpint(events[0], ==, InspectorTest::Detach);
+ g_assert_cmpint(events[1], ==, InspectorTest::Closed);
+ test->m_events.clear();
+}
+
+static void testInspectorCustomContainerDestroyed(CustomInspectorTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+ test->resizeView(200, 200);
+ test->loadHtml("<html><body><p>WebKitGTK+ Inspector test</p></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ test->show();
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webkit_web_inspector_get_web_view(test->m_inspector)));
+ g_assert(!webkit_web_inspector_is_attached(test->m_inspector));
+
+ test->m_events.clear();
+ test->destroyWindow();
+ Vector<InspectorTest::InspectorEvents>& events = test->m_events;
+ g_assert_cmpint(events.size(), ==, 1);
+ g_assert_cmpint(events[0], ==, InspectorTest::Closed);
+ test->m_events.clear();
+}
+
+void beforeAll()
+{
+ InspectorTest::add("WebKitWebInspector", "default", testInspectorDefault);
+ CustomInspectorTest::add("WebKitWebInspector", "manual-attach-detach", testInspectorManualAttachDetach);
+ CustomInspectorTest::add("WebKitWebInspector", "custom-container-destroyed", testInspectorCustomContainerDestroyed);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspectorServer.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspectorServer.cpp
new file mode 100644
index 000000000..bbdd104c5
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestInspectorServer.cpp
@@ -0,0 +1,292 @@
+/*
+ * Copyright (C) 2012 Samsung Electronics Ltd. 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 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.
+ */
+
+#include "config.h"
+
+#include "WebViewTest.h"
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/text/WTFString.h>
+
+// Name of the test server application creating the webView object.
+static const char* gTestServerAppName = "InspectorTestServer";
+
+// Max seconds to wait for the test server before inspecting it.
+static const int gMaxWaitForChild = 5;
+
+// The PID for the test server running, so we can kill it if needed.
+static GPid gChildProcessPid = 0;
+
+// Whether the child has replied and it's ready.
+static bool gChildIsReady = false;
+
+static void stopTestServer()
+{
+ // Do nothing if there's no server running.
+ if (!gChildProcessPid)
+ return;
+
+ g_spawn_close_pid(gChildProcessPid);
+ kill(gChildProcessPid, SIGTERM);
+ gChildProcessPid = 0;
+}
+
+static void sigAbortHandler(int sigNum)
+{
+ // Just stop the test server if SIGABRT was received.
+ stopTestServer();
+}
+
+static gpointer testServerMonitorThreadFunc(gpointer)
+{
+ // Wait for the specified timeout to happen.
+ g_usleep(gMaxWaitForChild * G_USEC_PER_SEC);
+
+ // Kill the child process if not ready yet.
+ if (!gChildIsReady)
+ stopTestServer();
+
+ g_thread_exit(0);
+ return 0;
+}
+
+static void startTestServerMonitor()
+{
+ gChildIsReady = false;
+ g_thread_new("TestServerMonitor", testServerMonitorThreadFunc, 0);
+}
+
+static void startTestServer()
+{
+ // Prepare argv[] for spawning the server process.
+ GUniquePtr<char> testServerPath(g_build_filename(WEBKIT_EXEC_PATH, "TestWebKitAPI", "WebKit2Gtk", gTestServerAppName, NULL));
+
+ // We install a handler to ensure that we kill the child process
+ // if the parent dies because of whatever the reason is.
+ signal(SIGABRT, sigAbortHandler);
+
+ char* testServerArgv[2];
+ testServerArgv[0] = testServerPath.get();
+ testServerArgv[1] = 0;
+
+ // Spawn the server, getting its stdout file descriptor to set a
+ // communication channel, so we know when it's ready.
+ int childStdout = 0;
+ g_assert(g_spawn_async_with_pipes(0, testServerArgv, 0, static_cast<GSpawnFlags>(0), 0, 0,
+ &gChildProcessPid, 0, &childStdout, 0, 0));
+
+ // Start monitoring the test server (in a separate thread) to
+ // ensure we don't block on the child process more than a timeout.
+ startTestServerMonitor();
+
+ char msg[2];
+ GIOChannel* ioChannel = g_io_channel_unix_new(childStdout);
+ if (g_io_channel_read_chars(ioChannel, msg, 2, 0, 0) == G_IO_STATUS_NORMAL) {
+ // Check whether the server sent a message saying it's ready
+ // and store the result globally, so the monitor can see it.
+ gChildIsReady = msg[0] == 'O' && msg[1] == 'K';
+ }
+ g_io_channel_unref(ioChannel);
+ close(childStdout);
+
+ // The timeout was reached and the server is not ready yet, so
+ // stop it inmediately, and let the unit tests fail.
+ if (!gChildIsReady)
+ stopTestServer();
+}
+
+class InspectorServerTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(InspectorServerTest);
+
+ InspectorServerTest()
+ : WebViewTest()
+ {
+ }
+
+ bool getPageList()
+ {
+ loadHtml("<script type=\"text/javascript\">\n"
+ "var pages;\n"
+ "var xhr = new XMLHttpRequest;\n"
+ "xhr.open(\"GET\", \"/pagelist.json\");\n"
+ "xhr.onload = function(e) {\n"
+ "if (xhr.status == 200) {\n"
+ "pages = JSON.parse(xhr.responseText);\n"
+ "document.title = \"OK\";\n"
+ "} else \n"
+ "document.title = \"FAIL\";\n"
+ "}\n"
+ "xhr.send();\n"
+ "</script>\n",
+ "http://127.0.0.1:2999/");
+
+ waitUntilTitleChanged();
+
+ if (!strcmp(webkit_web_view_get_title(m_webView), "OK"))
+ return true;
+
+ return false;
+ }
+
+ ~InspectorServerTest()
+ {
+ }
+};
+
+// Test to get inspector server page list from the test server.
+// Should contain only one entry pointing to http://127.0.0.1:2999/webinspector/Main.html?page=1
+static void testInspectorServerPageList(InspectorServerTest* test, gconstpointer)
+{
+ GUniqueOutPtr<GError> error;
+
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+ g_assert(test->getPageList());
+
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("pages.length;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert_cmpint(WebViewTest::javascriptResultToNumber(javascriptResult), ==, 1);
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("pages[0].id;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ int pageId = WebViewTest::javascriptResultToNumber(javascriptResult);
+
+ GUniquePtr<char> valueString;
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("pages[0].url;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "http://127.0.0.1:2999/");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("pages[0].inspectorUrl;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ String validInspectorURL = String("/Main.html?page=") + String::number(pageId);
+ ASSERT_CMP_CSTRING(valueString.get(), ==, validInspectorURL.utf8());
+}
+
+// Test sending a raw remote debugging message through our web socket server.
+// For this specific message see: http://code.google.com/chrome/devtools/docs/protocol/tot/runtime.html#command-evaluate
+static void testRemoteDebuggingMessage(InspectorServerTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+
+ test->loadHtml("<script type=\"text/javascript\">\n"
+ "var socket = new WebSocket('ws://127.0.0.1:2999/devtools/page/1');\n"
+ "socket.onmessage = function(message) {\n"
+ "var response = JSON.parse(message.data);\n"
+ "if (response.id === 1)\n"
+ "document.title = response.result.result.value;\n"
+ "else\n"
+ "document.title = \"FAIL\";\n"
+ "}\n"
+ "socket.onopen = function() {\n"
+ "socket.send('{\"id\": 1, \"method\": \"Runtime.evaluate\", \"params\": {\"expression\": \"2 + 2\" } }');\n"
+ "}\n"
+ "</script>",
+ "http://127.0.0.1:2999/");
+ test->waitUntilTitleChanged();
+
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, "4");
+}
+
+static void openRemoteDebuggingSession(InspectorServerTest* test, gconstpointer)
+{
+ // To test the whole pipeline this exploits a behavior of the inspector front-end which won't provide the page address as title unless the
+ // debugging session was established correctly through web socket.
+ // In our case page URL should be http://127.0.0.1:2999/
+ // So this test case will fail if:
+ // - The page list didn't return a valid inspector URL
+ // - Or the front-end couldn't be loaded through the inspector HTTP server
+ // - Or the web socket connection couldn't be established between the front-end and the page through the inspector server
+ // Let's see if this test isn't raising too many false positives, in which case we should use a better predicate if available.
+
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+
+ g_assert(test->getPageList());
+
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("pages[0].inspectorUrl;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+
+ String resolvedURL = String("http://127.0.0.1:2999") + String::fromUTF8(WebViewTest::javascriptResultToCString(javascriptResult));
+ test->loadURI(resolvedURL.utf8().data());
+ test->waitUntilLoadFinished();
+
+ const char* title = webkit_web_view_get_title(test->m_webView);
+ if (!title || !*title)
+ test->waitUntilTitleChanged();
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, "127.0.0.1");
+}
+
+static void sendIncompleteRequest(InspectorServerTest* test, gconstpointer)
+{
+ GUniqueOutPtr<GError> error;
+
+ // Connect to the inspector server.
+ GRefPtr<GSocketClient> client = adoptGRef(g_socket_client_new());
+ GRefPtr<GSocketConnection> connection = adoptGRef(g_socket_client_connect_to_host(client.get(), "127.0.0.1", 2999, 0, &error.outPtr()));
+ g_assert_no_error(error.get());
+
+ // Send incomplete request (missing blank line after headers) and check if inspector server
+ // replies. The server should not reply to an incomplete request and the test should timeout
+ // on read.
+ GOutputStream* ostream = g_io_stream_get_output_stream(G_IO_STREAM(connection.get()));
+ // Request missing blank line after headers.
+ const gchar* incompleteRequest = "GET /devtools/page/1 HTTP/1.1\r\nHost: Localhost\r\n";
+ g_output_stream_write(ostream, incompleteRequest, strlen(incompleteRequest), 0, &error.outPtr());
+ g_assert_no_error(error.get());
+
+ GInputStream* istream = g_io_stream_get_input_stream(G_IO_STREAM(connection.get()));
+ char response[16];
+ memset(response, 0, sizeof(response));
+ GRefPtr<GCancellable> cancel = adoptGRef(g_cancellable_new());
+ g_input_stream_read_async(istream, response, sizeof(response) - 1, G_PRIORITY_DEFAULT, cancel.get(), 0, 0);
+ // Give a chance for the server to reply.
+ test->wait(1);
+ g_cancellable_cancel(cancel.get());
+ // If we got any answer it means the server replied to an incomplete request, lets fail.
+ g_assert(response[0] == '\0');
+}
+
+void beforeAll()
+{
+ // Overwrite WEBKIT_INSPECTOR_SERVER variable with default IP address but different port to avoid conflict with the test inspector server page.
+ g_setenv("WEBKIT_INSPECTOR_SERVER", "127.0.0.1:2998", TRUE);
+
+ startTestServer();
+ InspectorServerTest::add("WebKitWebInspectorServer", "test-page-list", testInspectorServerPageList);
+ InspectorServerTest::add("WebKitWebInspectorServer", "test-remote-debugging-message", testRemoteDebuggingMessage);
+ InspectorServerTest::add("WebKitWebInspectorServer", "test-open-debugging-session", openRemoteDebuggingSession);
+ InspectorServerTest::add("WebKitWebInspectorServer", "test-incomplete-request", sendIncompleteRequest);
+
+}
+
+void afterAll()
+{
+ stopTestServer();
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp
new file mode 100644
index 000000000..227b389ff
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestLoaderClient.cpp
@@ -0,0 +1,551 @@
+/*
+ * Copyright (C) 2009, 2010 Gustavo Noronha Silva
+ * Copyright (C) 2009, 2011 Igalia S.L.
+ * Portions Copyright (c) 2011 Motorola Mobility, Inc. All rights reserved.
+ *
+ * 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 "LoadTrackingTest.h"
+#include "WebKitTestBus.h"
+#include "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <gtk/gtk.h>
+#include <libsoup/soup.h>
+#include <wtf/text/CString.h>
+
+static WebKitTestBus* bus;
+static WebKitTestServer* kServer;
+
+const char* kDNTHeaderNotPresent = "DNT header not present";
+
+static void testLoadingStatus(LoadTrackingTest* test, gconstpointer data)
+{
+ test->setRedirectURI(kServer->getURIForPath("/normal").data());
+ test->loadURI(kServer->getURIForPath("/redirect").data());
+ test->waitUntilLoadFinished();
+
+ Vector<LoadTrackingTest::LoadEvents>& events = test->m_loadEvents;
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(events[1], ==, LoadTrackingTest::ProvisionalLoadReceivedServerRedirect);
+ g_assert_cmpint(events[2], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(events[3], ==, LoadTrackingTest::LoadFinished);
+}
+
+static void testLoadingError(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/error").data());
+ test->waitUntilLoadFinished();
+
+ Vector<LoadTrackingTest::LoadEvents>& events = test->m_loadEvents;
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(events[1], ==, LoadTrackingTest::ProvisionalLoadFailed);
+ g_assert_cmpint(events[2], ==, LoadTrackingTest::LoadFinished);
+}
+
+static void assertNormalLoadHappened(Vector<LoadTrackingTest::LoadEvents>& events)
+{
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(events[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(events[2], ==, LoadTrackingTest::LoadFinished);
+}
+
+static void testLoadHtml(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body>Hello WebKit-GTK+</body></html>", 0);
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadAlternateHTML(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadAlternateHTML("<html><body>Alternate page</body></html>", "http://error-page.foo/", 0);
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadAlternateHTMLForLocalPage(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadAlternateHTML("<html><body>Alternate page</body></html>", "file:///not/actually/loaded.html", 0);
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadPlainText(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadPlainText("Hello WebKit-GTK+");
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadBytes(LoadTrackingTest* test, gconstpointer)
+{
+ GUniquePtr<char> filePath(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ char* contents;
+ gsize contentsLength;
+ g_file_get_contents(filePath.get(), &contents, &contentsLength, nullptr);
+ GRefPtr<GBytes> bytes = adoptGRef(g_bytes_new_take(contents, contentsLength));
+ test->loadBytes(bytes.get(), "image/vnd.microsoft.icon", nullptr, nullptr);
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadRequest(LoadTrackingTest* test, gconstpointer)
+{
+ GRefPtr<WebKitURIRequest> request(webkit_uri_request_new(kServer->getURIForPath("/normal").data()));
+ test->loadRequest(request.get());
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadFromGResource(LoadTrackingTest* test, gconstpointer)
+{
+ GRefPtr<WebKitURIRequest> request(webkit_uri_request_new("resource:///org/webkit/webkit2gtk/tests/boring.html"));
+ test->loadRequest(request.get());
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+class LoadStopTrackingTest : public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(LoadStopTrackingTest);
+
+ virtual void loadCommitted()
+ {
+ LoadTrackingTest::loadCommitted();
+ webkit_web_view_stop_loading(m_webView);
+ }
+ virtual void loadFailed(const gchar* failingURI, GError* error)
+ {
+ g_assert(g_error_matches(error, WEBKIT_NETWORK_ERROR, WEBKIT_NETWORK_ERROR_CANCELLED));
+ LoadTrackingTest::loadFailed(failingURI, error);
+ }
+};
+
+static void testLoadCancelled(LoadStopTrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/cancelled").data());
+ test->waitUntilLoadFinished();
+
+ Vector<LoadTrackingTest::LoadEvents>& events = test->m_loadEvents;
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(events[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(events[2], ==, LoadTrackingTest::LoadFailed);
+ g_assert_cmpint(events[3], ==, LoadTrackingTest::LoadFinished);
+}
+
+static void testWebViewTitle(LoadTrackingTest* test, gconstpointer)
+{
+ g_assert(!webkit_web_view_get_title(test->m_webView));
+ test->loadHtml("<html><head><title>Welcome to WebKit-GTK+!</title></head></html>", 0);
+ test->waitUntilLoadFinished();
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, "Welcome to WebKit-GTK+!");
+}
+
+static void testWebViewReload(LoadTrackingTest* test, gconstpointer)
+{
+ // Check that nothing happens when there's nothing to reload.
+ test->reload();
+ test->wait(0.25); // Wait for a quarter of a second.
+
+ test->loadURI(kServer->getURIForPath("/normal").data());
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+
+ test->reload();
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+static void testLoadProgress(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/normal").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpfloat(test->m_estimatedProgress, ==, 1);
+}
+
+static void testWebViewHistoryLoad(LoadTrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/normal").data());
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+
+ test->loadURI(kServer->getURIForPath("/normal2").data());
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+
+ // Check that load process is the same for pages loaded from history cache.
+ test->goBack();
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+
+ test->goForward();
+ test->waitUntilLoadFinished();
+ assertNormalLoadHappened(test->m_loadEvents);
+}
+
+class ViewURITrackingTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ViewURITrackingTest);
+
+ static void uriChanged(GObject*, GParamSpec*, ViewURITrackingTest* test)
+ {
+ g_assert_cmpstr(test->m_activeURI.data(), !=, webkit_web_view_get_uri(test->m_webView));
+ test->m_activeURI = webkit_web_view_get_uri(test->m_webView);
+ }
+
+ ViewURITrackingTest()
+ : m_activeURI(webkit_web_view_get_uri(m_webView))
+ {
+ g_assert(m_activeURI.isNull());
+ g_signal_connect(m_webView, "notify::uri", G_CALLBACK(uriChanged), this);
+ }
+
+ void provisionalLoadStarted()
+ {
+ checkActiveURI("/redirect");
+ }
+
+ void provisionalLoadReceivedServerRedirect()
+ {
+ checkActiveURI("/normal");
+ }
+
+ void loadCommitted()
+ {
+ checkActiveURI("/normal");
+ }
+
+ void loadFinished()
+ {
+ checkActiveURI("/normal");
+ LoadTrackingTest::loadFinished();
+ }
+
+ CString m_activeURI;
+
+private:
+ void checkActiveURI(const char* uri)
+ {
+ ASSERT_CMP_CSTRING(m_activeURI, ==, kServer->getURIForPath(uri));
+ }
+};
+
+static void testWebViewActiveURI(ViewURITrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/redirect").data());
+ test->waitUntilLoadFinished();
+}
+
+class ViewIsLoadingTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ViewIsLoadingTest);
+
+ static void isLoadingChanged(GObject*, GParamSpec*, ViewIsLoadingTest* test)
+ {
+ if (webkit_web_view_is_loading(test->m_webView))
+ test->beginLoad();
+ else
+ test->endLoad();
+ }
+
+ ViewIsLoadingTest()
+ {
+ g_signal_connect(m_webView, "notify::is-loading", G_CALLBACK(isLoadingChanged), this);
+ }
+
+ void beginLoad()
+ {
+ // New load, load-started hasn't been emitted yet.
+ g_assert(m_loadEvents.isEmpty());
+ g_assert_cmpstr(webkit_web_view_get_uri(m_webView), ==, m_activeURI.data());
+ }
+
+ void endLoad()
+ {
+ // Load finish, load-finished and load-failed haven't been emitted yet.
+ g_assert(!m_loadEvents.isEmpty());
+ g_assert(!m_loadEvents.contains(LoadTrackingTest::LoadFinished));
+ g_assert(!m_loadEvents.contains(LoadTrackingTest::LoadFailed));
+ }
+};
+
+static void testWebViewIsLoading(ViewIsLoadingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/normal").data());
+ test->waitUntilLoadFinished();
+
+ test->reload();
+ test->waitUntilLoadFinished();
+
+ test->loadURI(kServer->getURIForPath("/error").data());
+ test->waitUntilLoadFinished();
+
+ test->loadURI(kServer->getURIForPath("/normal").data());
+ test->waitUntilLoadFinished();
+ test->loadURI(kServer->getURIForPath("/normal2").data());
+ test->waitUntilLoadFinished();
+
+ test->goBack();
+ test->waitUntilLoadFinished();
+
+ test->goForward();
+ test->waitUntilLoadFinished();
+}
+
+class WebPageURITest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(WebPageURITest);
+
+ static void webPageURIChangedCallback(GDBusConnection*, const char*, const char*, const char*, const char*, GVariant* result, WebPageURITest* test)
+ {
+ const char* uri;
+ g_variant_get(result, "(&s)", &uri);
+ test->m_webPageURIs.append(uri);
+ }
+
+ static void webViewURIChanged(GObject*, GParamSpec*, WebPageURITest* test)
+ {
+ test->m_webViewURIs.append(webkit_web_view_get_uri(test->m_webView));
+ }
+
+ WebPageURITest()
+ {
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", m_mainLoop));
+ m_uriChangedSignalID = g_dbus_connection_signal_subscribe(
+ g_dbus_proxy_get_connection(proxy.get()),
+ 0,
+ "org.webkit.gtk.WebExtensionTest",
+ "URIChanged",
+ "/org/webkit/gtk/WebExtensionTest",
+ 0,
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ reinterpret_cast<GDBusSignalCallback>(webPageURIChangedCallback),
+ this,
+ 0);
+ g_assert(m_uriChangedSignalID);
+
+ g_signal_connect(m_webView, "notify::uri", G_CALLBACK(webViewURIChanged), this);
+ }
+
+ ~WebPageURITest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ g_dbus_connection_signal_unsubscribe(bus->connection(), m_uriChangedSignalID);
+ }
+
+ unsigned m_uriChangedSignalID;
+ Vector<CString> m_webPageURIs;
+ Vector<CString> m_webViewURIs;
+};
+
+static void testWebPageURI(WebPageURITest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/redirect").data());
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_webPageURIs.size(), ==, test->m_webViewURIs.size());
+ for (size_t i = 0; i < test->m_webPageURIs.size(); ++i)
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[i], ==, test->m_webViewURIs[i]);
+
+ g_assert_cmpint(test->m_webPageURIs.size(), ==, 2);
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[0], ==, kServer->getURIForPath("/redirect"));
+ ASSERT_CMP_CSTRING(test->m_webPageURIs[1], ==, kServer->getURIForPath("/normal"));
+
+}
+
+static void testURIRequestHTTPHeaders(WebViewTest* test, gconstpointer)
+{
+ GRefPtr<WebKitURIRequest> uriRequest = adoptGRef(webkit_uri_request_new("file:///foo/bar"));
+ g_assert(uriRequest.get());
+ g_assert_cmpstr(webkit_uri_request_get_uri(uriRequest.get()), ==, "file:///foo/bar");
+ g_assert(!webkit_uri_request_get_http_headers(uriRequest.get()));
+
+ // Load a request with no Do Not Track header.
+ webkit_uri_request_set_uri(uriRequest.get(), kServer->getURIForPath("/do-not-track-header").data());
+ test->loadRequest(uriRequest.get());
+ test->waitUntilLoadFinished();
+
+ size_t mainResourceDataSize = 0;
+ const char* mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, strlen(kDNTHeaderNotPresent));
+ g_assert(!strncmp(mainResourceData, kDNTHeaderNotPresent, mainResourceDataSize));
+
+ // Add the Do Not Track header and load the request again.
+ SoupMessageHeaders* headers = webkit_uri_request_get_http_headers(uriRequest.get());
+ g_assert(headers);
+ soup_message_headers_append(headers, "DNT", "1");
+ test->loadRequest(uriRequest.get());
+ test->waitUntilLoadFinished();
+
+ mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, 1);
+ g_assert(!strncmp(mainResourceData, "1", mainResourceDataSize));
+
+ // Load a URI for which the web extension will add the Do Not Track header.
+ test->loadURI(kServer->getURIForPath("/add-do-not-track-header").data());
+ test->waitUntilLoadFinished();
+
+ mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, 1);
+ g_assert(!strncmp(mainResourceData, "1", mainResourceDataSize));
+}
+
+static void testURIRequestHTTPMethod(WebViewTest* test, gconstpointer)
+{
+ GRefPtr<WebKitURIRequest> uriRequest = adoptGRef(webkit_uri_request_new("file:///foo/bar"));
+ g_assert(uriRequest.get());
+ g_assert_cmpstr(webkit_uri_request_get_uri(uriRequest.get()), ==, "file:///foo/bar");
+ g_assert(!webkit_uri_request_get_http_method(uriRequest.get()));
+
+ webkit_uri_request_set_uri(uriRequest.get(), kServer->getURIForPath("/http-get-method").data());
+ test->loadRequest(uriRequest.get());
+ test->waitUntilLoadFinished();
+
+ test->runJavaScriptAndWaitUntilFinished("xhr = new XMLHttpRequest; xhr.open('POST', '/http-post-method', false); xhr.send();", nullptr);
+}
+
+static void testURIResponseHTTPHeaders(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body>No HTTP headers</body></html>", "file:///");
+ test->waitUntilLoadFinished();
+ WebKitWebResource* resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(WEBKIT_IS_WEB_RESOURCE(resource));
+ WebKitURIResponse* response = webkit_web_resource_get_response(resource);
+ g_assert(WEBKIT_IS_URI_RESPONSE(response));
+ g_assert(!webkit_uri_response_get_http_headers(response));
+
+ test->loadURI(kServer->getURIForPath("/headers").data());
+ test->waitUntilLoadFinished();
+ resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(WEBKIT_IS_WEB_RESOURCE(resource));
+ response = webkit_web_resource_get_response(resource);
+ g_assert(WEBKIT_IS_URI_RESPONSE(response));
+ SoupMessageHeaders* headers = webkit_uri_response_get_http_headers(response);
+ g_assert(headers);
+ g_assert_cmpstr(soup_message_headers_get_one(headers, "Foo"), ==, "bar");
+}
+
+static void testRedirectToDataURI(WebViewTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/redirect-to-data").data());
+ test->waitUntilLoadFinished();
+
+ static const char* expectedData = "data-uri";
+ size_t mainResourceDataSize = 0;
+ const char* mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, strlen(expectedData));
+ g_assert(!strncmp(mainResourceData, expectedData, mainResourceDataSize));
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ static const char* responseString = "<html><body>Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!"
+ "Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!Testing!</body></html>";
+
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(message, SOUP_STATUS_OK);
+
+ if (g_str_has_prefix(path, "/normal") || g_str_has_prefix(path, "/http-get-method"))
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
+ else if (g_str_equal(path, "/error"))
+ soup_message_set_status(message, SOUP_STATUS_CANT_CONNECT);
+ else if (g_str_equal(path, "/redirect")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "/normal");
+ } else if (g_str_equal(path, "/cancelled")) {
+ soup_message_headers_set_encoding(message->response_headers, SOUP_ENCODING_CHUNKED);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
+ soup_server_unpause_message(server, message);
+ return;
+ } else if (g_str_equal(path, "/do-not-track-header") || g_str_equal(path, "/add-do-not-track-header")) {
+ const char* doNotTrack = soup_message_headers_get_one(message->request_headers, "DNT");
+ if (doNotTrack)
+ soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, doNotTrack, strlen(doNotTrack));
+ else
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kDNTHeaderNotPresent, strlen(kDNTHeaderNotPresent));
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ } else if (g_str_equal(path, "/headers")) {
+ soup_message_headers_append(message->response_headers, "Foo", "bar");
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
+ } else if (g_str_equal(path, "/redirect-to-data")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "data:text/plain;charset=utf-8,data-uri");
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+
+ soup_message_body_complete(message->response_body);
+}
+
+void beforeAll()
+{
+ bus = new WebKitTestBus();
+ if (!bus->run())
+ return;
+
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ LoadTrackingTest::add("WebKitWebView", "loading-status", testLoadingStatus);
+ LoadTrackingTest::add("WebKitWebView", "loading-error", testLoadingError);
+ LoadTrackingTest::add("WebKitWebView", "load-html", testLoadHtml);
+ LoadTrackingTest::add("WebKitWebView", "load-alternate-html", testLoadAlternateHTML);
+ LoadTrackingTest::add("WebKitWebView", "load-alternate-html-for-local-page", testLoadAlternateHTMLForLocalPage);
+ LoadTrackingTest::add("WebKitWebView", "load-plain-text", testLoadPlainText);
+ LoadTrackingTest::add("WebKitWebView", "load-bytes", testLoadBytes);
+ LoadTrackingTest::add("WebKitWebView", "load-request", testLoadRequest);
+ LoadTrackingTest::add("WebKitWebView", "load-gresource", testLoadFromGResource);
+ LoadStopTrackingTest::add("WebKitWebView", "stop-loading", testLoadCancelled);
+ LoadTrackingTest::add("WebKitWebView", "title", testWebViewTitle);
+ LoadTrackingTest::add("WebKitWebView", "progress", testLoadProgress);
+ LoadTrackingTest::add("WebKitWebView", "reload", testWebViewReload);
+ LoadTrackingTest::add("WebKitWebView", "history-load", testWebViewHistoryLoad);
+
+ // This test checks that web view notify::uri signal is correctly emitted
+ // and the uri is already updated when loader client signals are emitted.
+ ViewURITrackingTest::add("WebKitWebView", "active-uri", testWebViewActiveURI);
+
+ ViewIsLoadingTest::add("WebKitWebView", "is-loading", testWebViewIsLoading);
+ WebPageURITest::add("WebKitWebPage", "get-uri", testWebPageURI);
+ WebViewTest::add("WebKitURIRequest", "http-headers", testURIRequestHTTPHeaders);
+ WebViewTest::add("WebKitURIRequest", "http-method", testURIRequestHTTPMethod);
+ WebViewTest::add("WebKitURIResponse", "http-headers", testURIResponseHTTPHeaders);
+ WebViewTest::add("WebKitWebPage", "redirect-to-data-uri", testRedirectToDataURI);
+}
+
+void afterAll()
+{
+ delete bus;
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp
new file mode 100644
index 000000000..020ad3529
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestMultiprocess.cpp
@@ -0,0 +1,284 @@
+/*
+ * Copyright (C) 2014 Igalia S.L.
+ *
+ * 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
+ * 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 "TestMain.h"
+#include "WebKitTestBus.h"
+#include "WebViewTest.h"
+#include <webkit2/webkit2.h>
+#include <wtf/Vector.h>
+
+static const unsigned numViews = 2;
+static WebKitTestBus* bus;
+
+class MultiprocessTest: public Test {
+public:
+ MAKE_GLIB_TEST_FIXTURE(MultiprocessTest);
+
+ MultiprocessTest()
+ : m_mainLoop(g_main_loop_new(nullptr, TRUE))
+ , m_initializeWebExtensionsSignalCount(0)
+ , m_webViewBusNames(numViews)
+ , m_webViews(numViews)
+ {
+ webkit_web_context_set_process_model(m_webContext.get(), WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
+ }
+
+ void initializeWebExtensions() override
+ {
+ Test::initializeWebExtensions();
+ m_initializeWebExtensionsSignalCount++;
+ }
+
+ static void loadChanged(WebKitWebView* webView, WebKitLoadEvent loadEvent, MultiprocessTest* test)
+ {
+ if (loadEvent != WEBKIT_LOAD_FINISHED)
+ return;
+ g_signal_handlers_disconnect_by_func(webView, reinterpret_cast<void*>(loadChanged), test);
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ void loadWebViewAndWaitUntilLoaded(unsigned index)
+ {
+ g_assert_cmpuint(index, <, numViews);
+
+ m_webViews[index] = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(m_webContext.get()));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_webViews[index].get()));
+
+ m_webViewBusNames[index] = GUniquePtr<char>(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+
+ webkit_web_view_load_html(m_webViews[index].get(), "<html></html>", nullptr);
+ g_signal_connect(m_webViews[index].get(), "load-changed", G_CALLBACK(loadChanged), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ unsigned webProcessPid(unsigned index)
+ {
+ g_assert_cmpuint(index, <, numViews);
+
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(m_webViewBusNames[index].get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", m_mainLoop));
+
+ GRefPtr<GVariant> result = adoptGRef(g_dbus_proxy_call_sync(
+ proxy.get(),
+ "GetProcessIdentifier",
+ nullptr,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, nullptr, nullptr));
+ g_assert(result);
+
+ guint32 identifier = 0;
+ g_variant_get(result.get(), "(u)", &identifier);
+ return identifier;
+ }
+
+ static void nameVanishedCallback(GDBusConnection* connection, const gchar* name, gpointer userData)
+ {
+ g_main_loop_quit(static_cast<GMainLoop*>(userData));
+ }
+
+ void destroyWebViewAndWaitUntilWebProcessFinishes(unsigned index)
+ {
+ g_assert_cmpuint(index, <, numViews);
+
+ unsigned watcherID = g_bus_watch_name_on_connection(bus->connection(), m_webViewBusNames[index].get(), G_BUS_NAME_WATCHER_FLAGS_NONE,
+ nullptr, nameVanishedCallback, m_mainLoop, nullptr);
+ gtk_widget_destroy(GTK_WIDGET(m_webViews[index].get()));
+ g_main_loop_run(m_mainLoop);
+ g_bus_unwatch_name(watcherID);
+ }
+
+ GMainLoop* m_mainLoop;
+ unsigned m_initializeWebExtensionsSignalCount;
+ Vector<GUniquePtr<char>, numViews> m_webViewBusNames;
+ Vector<GRefPtr<WebKitWebView>, numViews> m_webViews;
+};
+
+static void testProcessPerWebView(MultiprocessTest* test, gconstpointer)
+{
+ // Create two web views. As we are in multiprocess mode, there must be
+ // two web processes, running an instance of the web extension each.
+ // The initialize-web-extensions must have been called twice, and the
+ // identifiers generated for them must be different (and their reported
+ // process identifiers).
+
+ for (unsigned i = 0; i < numViews; i++) {
+ test->loadWebViewAndWaitUntilLoaded(i);
+ g_assert(WEBKIT_IS_WEB_VIEW(test->m_webViews[i].get()));
+ g_assert(test->m_webViewBusNames[i]);
+ }
+
+ g_assert_cmpuint(test->m_initializeWebExtensionsSignalCount, ==, numViews);
+ g_assert_cmpstr(test->m_webViewBusNames[0].get(), !=, test->m_webViewBusNames[1].get());
+ g_assert_cmpuint(test->webProcessPid(0), !=, test->webProcessPid(1));
+
+ // Check that web processes finish when the web view is destroyed even when it's not finalized.
+ // See https://bugs.webkit.org/show_bug.cgi?id=129783.
+ for (unsigned i = 0; i < numViews; i++) {
+ GRefPtr<WebKitWebView> webView = test->m_webViews[i];
+ test->destroyWebViewAndWaitUntilWebProcessFinishes(i);
+ }
+}
+
+class UIClientMultiprocessTest: public Test {
+public:
+ MAKE_GLIB_TEST_FIXTURE(UIClientMultiprocessTest);
+
+ enum WebViewEvents {
+ Create,
+ ReadyToShow,
+ Close
+ };
+
+ static GtkWidget* viewCreateCallback(WebKitWebView* webView, WebKitNavigationAction*, UIClientMultiprocessTest* test)
+ {
+ return test->viewCreate(webView);
+ }
+
+ static void viewReadyToShowCallback(WebKitWebView* webView, UIClientMultiprocessTest* test)
+ {
+ test->viewReadyToShow(webView);
+ }
+
+ static void viewCloseCallback(WebKitWebView* webView, UIClientMultiprocessTest* test)
+ {
+ test->viewClose(webView);
+ }
+
+ UIClientMultiprocessTest()
+ : m_mainLoop(g_main_loop_new(nullptr, TRUE))
+ , m_initializeWebExtensionsSignalCount(0)
+ {
+ webkit_web_context_set_process_model(m_webContext.get(), WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
+ m_webView = WEBKIT_WEB_VIEW(g_object_ref_sink(webkit_web_view_new_with_context(m_webContext.get())));
+ webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(m_webView), TRUE);
+
+ g_signal_connect(m_webView, "create", G_CALLBACK(viewCreateCallback), this);
+ }
+
+ ~UIClientMultiprocessTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ gtk_widget_destroy(GTK_WIDGET(m_webView));
+ }
+
+ void initializeWebExtensions() override
+ {
+ Test::initializeWebExtensions();
+ m_initializeWebExtensionsSignalCount++;
+ }
+
+ GtkWidget* viewCreate(WebKitWebView* webView)
+ {
+ g_assert(webView == m_webView);
+
+ GtkWidget* newWebView = webkit_web_view_new_with_related_view(webView);
+ g_object_ref_sink(newWebView);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newWebView));
+ m_webViewEvents.append(Create);
+
+ g_signal_connect(newWebView, "ready-to-show", G_CALLBACK(viewReadyToShowCallback), this);
+ g_signal_connect(newWebView, "close", G_CALLBACK(viewCloseCallback), this);
+
+ return newWebView;
+ }
+
+ void viewReadyToShow(WebKitWebView* webView)
+ {
+ g_assert(m_webView != webView);
+ m_webViewEvents.append(ReadyToShow);
+ }
+
+ void viewClose(WebKitWebView* webView)
+ {
+ g_assert(m_webView != webView);
+
+ m_webViewEvents.append(Close);
+ g_object_unref(webView);
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void waitUntilNewWebViewClose()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ WebKitWebView* m_webView;
+ GMainLoop* m_mainLoop;
+ unsigned m_initializeWebExtensionsSignalCount;
+ Vector<WebViewEvents> m_webViewEvents;
+};
+
+static void testMultiprocessWebViewCreateReadyClose(UIClientMultiprocessTest* test, gconstpointer)
+{
+ webkit_web_view_load_html(test->m_webView, "<html><body onLoad=\"window.open().close();\"></html>", nullptr);
+ test->waitUntilNewWebViewClose();
+
+ Vector<UIClientMultiprocessTest::WebViewEvents>& events = test->m_webViewEvents;
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, UIClientMultiprocessTest::Create);
+ g_assert_cmpint(events[1], ==, UIClientMultiprocessTest::ReadyToShow);
+ g_assert_cmpint(events[2], ==, UIClientMultiprocessTest::Close);
+
+ g_assert_cmpuint(test->m_initializeWebExtensionsSignalCount, ==, 1);
+}
+
+static void testWebProcessLimit(MultiprocessTest* test, gconstpointer)
+{
+ g_assert_cmpuint(webkit_web_context_get_web_process_count_limit(test->m_webContext.get()), ==, 0);
+
+ webkit_web_context_set_web_process_count_limit(test->m_webContext.get(), 1);
+ g_assert_cmpuint(webkit_web_context_get_web_process_count_limit(test->m_webContext.get()), ==, 1);
+
+ // Create two web views but there should be only one web process.
+ for (unsigned i = 0; i < numViews; i++) {
+ test->loadWebViewAndWaitUntilLoaded(i);
+ g_assert(WEBKIT_IS_WEB_VIEW(test->m_webViews[i].get()));
+ }
+
+ g_assert_cmpuint(test->m_initializeWebExtensionsSignalCount, ==, 1);
+}
+
+void beforeAll()
+{
+ // Check that default setting is the one stated in the documentation
+ g_assert_cmpuint(webkit_web_context_get_process_model(webkit_web_context_get_default()),
+ ==, WEBKIT_PROCESS_MODEL_SHARED_SECONDARY_PROCESS);
+
+ webkit_web_context_set_process_model(webkit_web_context_get_default(),
+ WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
+
+ // Check that the getter returns the newly-set value
+ g_assert_cmpuint(webkit_web_context_get_process_model(webkit_web_context_get_default()),
+ ==, WEBKIT_PROCESS_MODEL_MULTIPLE_SECONDARY_PROCESSES);
+
+ bus = new WebKitTestBus();
+ if (!bus->run())
+ return;
+
+ MultiprocessTest::add("WebKitWebContext", "process-per-web-view", testProcessPerWebView);
+ UIClientMultiprocessTest::add("WebKitWebView", "multiprocess-create-ready-close", testMultiprocessWebViewCreateReadyClose);
+ MultiprocessTest::add("WebKitWebContext", "web-process-limit", testWebProcessLimit);
+}
+
+void afterAll()
+{
+ delete bus;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestPrinting.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestPrinting.cpp
new file mode 100644
index 000000000..c13185427
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestPrinting.cpp
@@ -0,0 +1,304 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <glib/gstdio.h>
+#include <wtf/glib/GRefPtr.h>
+
+#ifdef HAVE_GTK_UNIX_PRINTING
+#include <gtk/gtkunixprint.h>
+#endif
+
+static void testPrintOperationPrintSettings(WebViewTest* test, gconstpointer)
+{
+ GRefPtr<WebKitPrintOperation> printOperation = adoptGRef(webkit_print_operation_new(test->m_webView));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(printOperation.get()));
+
+ g_assert(!webkit_print_operation_get_print_settings(printOperation.get()));
+ g_assert(!webkit_print_operation_get_page_setup(printOperation.get()));
+
+ GRefPtr<GtkPrintSettings> printSettings = adoptGRef(gtk_print_settings_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(printSettings.get()));
+
+ GRefPtr<GtkPageSetup> pageSetup = adoptGRef(gtk_page_setup_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(pageSetup.get()));
+
+ webkit_print_operation_set_print_settings(printOperation.get(), printSettings.get());
+ webkit_print_operation_set_page_setup(printOperation.get(), pageSetup.get());
+
+ g_assert(webkit_print_operation_get_print_settings(printOperation.get()) == printSettings.get());
+ g_assert(webkit_print_operation_get_page_setup(printOperation.get()) == pageSetup.get());
+}
+
+static gboolean webViewPrintCallback(WebKitWebView* webView, WebKitPrintOperation* printOperation, WebViewTest* test)
+{
+ g_assert(webView == test->m_webView);
+
+ g_assert(WEBKIT_IS_PRINT_OPERATION(printOperation));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(printOperation));
+
+ g_assert(!webkit_print_operation_get_print_settings(printOperation));
+ g_assert(!webkit_print_operation_get_page_setup(printOperation));
+
+ g_main_loop_quit(test->m_mainLoop);
+
+ return TRUE;
+}
+
+static void testWebViewPrint(WebViewTest* test, gconstpointer)
+{
+ g_signal_connect(test->m_webView, "print", G_CALLBACK(webViewPrintCallback), test);
+ test->loadHtml("<html><body onLoad=\"print();\">WebKitGTK+ printing test</body></html>", 0);
+ g_main_loop_run(test->m_mainLoop);
+}
+
+#ifdef HAVE_GTK_UNIX_PRINTING
+static gboolean testPrintOperationPrintPrinter(GtkPrinter* printer, gpointer userData)
+{
+ if (strcmp(gtk_printer_get_name(printer), "Print to File"))
+ return FALSE;
+
+ GtkPrinter** foundPrinter = static_cast<GtkPrinter**>(userData);
+ *foundPrinter = static_cast<GtkPrinter*>(g_object_ref(printer));
+ return TRUE;
+}
+
+static GtkPrinter* findPrintToFilePrinter()
+{
+ GtkPrinter* printer = 0;
+ gtk_enumerate_printers(testPrintOperationPrintPrinter, &printer, 0, TRUE);
+ return printer;
+}
+
+class PrintTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(PrintTest);
+
+ static void printFinishedCallback(WebKitPrintOperation*, PrintTest* test)
+ {
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ static void printFailedCallback(WebKitPrintOperation*, GError* error, PrintTest* test)
+ {
+ g_assert(test->m_expectedError);
+ g_assert(error);
+ g_assert(g_error_matches(error, WEBKIT_PRINT_ERROR, test->m_expectedError));
+ }
+
+ PrintTest()
+ : m_expectedError(0)
+ {
+ m_printOperation = adoptGRef(webkit_print_operation_new(m_webView));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_printOperation.get()));
+ g_signal_connect(m_printOperation.get(), "finished", G_CALLBACK(printFinishedCallback), this);
+ g_signal_connect(m_printOperation.get(), "failed", G_CALLBACK(printFailedCallback), this);
+ }
+
+ void waitUntilPrintFinished()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GRefPtr<WebKitPrintOperation> m_printOperation;
+ unsigned m_expectedError;
+};
+
+static void testPrintOperationPrint(PrintTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body>WebKitGTK+ printing test</body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ GRefPtr<GtkPrinter> printer = adoptGRef(findPrintToFilePrinter());
+ if (!printer) {
+ g_message("%s", "Cannot test WebKitPrintOperation/print: no suitable printer found");
+ return;
+ }
+
+ GUniquePtr<char> outputFilename(g_build_filename(Test::dataDirectory(), "webkit-print.pdf", nullptr));
+ GRefPtr<GFile> outputFile = adoptGRef(g_file_new_for_path(outputFilename.get()));
+ GUniquePtr<char> outputURI(g_file_get_uri(outputFile.get()));
+
+ GRefPtr<GtkPrintSettings> printSettings = adoptGRef(gtk_print_settings_new());
+ gtk_print_settings_set_printer(printSettings.get(), gtk_printer_get_name(printer.get()));
+ gtk_print_settings_set(printSettings.get(), GTK_PRINT_SETTINGS_OUTPUT_URI, outputURI.get());
+
+ webkit_print_operation_set_print_settings(test->m_printOperation.get(), printSettings.get());
+ webkit_print_operation_print(test->m_printOperation.get());
+ test->waitUntilPrintFinished();
+
+ GRefPtr<GFileInfo> fileInfo = adoptGRef(g_file_query_info(outputFile.get(),
+ G_FILE_ATTRIBUTE_STANDARD_SIZE "," G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE,
+ static_cast<GFileQueryInfoFlags>(0), 0, 0));
+ g_assert(fileInfo.get());
+ g_assert_cmpint(g_file_info_get_size(fileInfo.get()), >, 0);
+ g_assert_cmpstr(g_file_info_get_content_type(fileInfo.get()), ==, "application/pdf");
+
+ g_file_delete(outputFile.get(), 0, 0);
+}
+
+static void testPrintOperationErrors(PrintTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body>WebKitGTK+ printing errors test</body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ GRefPtr<GtkPrinter> printer = adoptGRef(findPrintToFilePrinter());
+ if (!printer) {
+ g_message("%s", "Cannot test WebKitPrintOperation/print: no suitable printer found");
+ return;
+ }
+
+ // General Error: invalid filename.
+ test->m_expectedError = WEBKIT_PRINT_ERROR_GENERAL;
+ GRefPtr<GtkPrintSettings> printSettings = adoptGRef(gtk_print_settings_new());
+ gtk_print_settings_set_printer(printSettings.get(), gtk_printer_get_name(printer.get()));
+ gtk_print_settings_set(printSettings.get(), GTK_PRINT_SETTINGS_OUTPUT_URI, "file:///foo/bar");
+ webkit_print_operation_set_print_settings(test->m_printOperation.get(), printSettings.get());
+ webkit_print_operation_print(test->m_printOperation.get());
+ test->waitUntilPrintFinished();
+
+ // Printer not found error.
+ test->m_expectedError = WEBKIT_PRINT_ERROR_PRINTER_NOT_FOUND;
+ gtk_print_settings_set_printer(printSettings.get(), "The fake WebKit printer");
+ webkit_print_operation_print(test->m_printOperation.get());
+ test->waitUntilPrintFinished();
+
+ // No pages to print: print even pages for a single page document.
+ test->m_expectedError = WEBKIT_PRINT_ERROR_INVALID_PAGE_RANGE;
+ gtk_print_settings_set_printer(printSettings.get(), gtk_printer_get_name(printer.get()));
+ gtk_print_settings_set_page_set(printSettings.get(), GTK_PAGE_SET_EVEN);
+ webkit_print_operation_print(test->m_printOperation.get());
+ test->waitUntilPrintFinished();
+}
+
+class CloseAfterPrintTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(CloseAfterPrintTest);
+
+ static GtkWidget* webViewCreate(WebKitWebView* webView, WebKitNavigationAction*, CloseAfterPrintTest* test)
+ {
+ return test->createWebView();
+ }
+
+ static gboolean webViewPrint(WebKitWebView* webView, WebKitPrintOperation* printOperation, CloseAfterPrintTest* test)
+ {
+ test->print(printOperation);
+ return TRUE;
+ }
+
+ static void printOperationFinished(WebKitPrintOperation* printOperation, CloseAfterPrintTest* test)
+ {
+ test->printFinished();
+ }
+
+ static void webViewClosed(WebKitWebView* webView, CloseAfterPrintTest* test)
+ {
+ gtk_widget_destroy(GTK_WIDGET(webView));
+ test->m_webViewClosed = true;
+ if (test->m_printFinished)
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ CloseAfterPrintTest()
+ : m_webViewClosed(false)
+ , m_printFinished(false)
+ {
+ webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(m_webView), TRUE);
+ g_signal_connect(m_webView, "create", G_CALLBACK(webViewCreate), this);
+ }
+
+ GtkWidget* createWebView()
+ {
+ GtkWidget* newWebView = webkit_web_view_new_with_context(m_webContext.get());
+ g_object_ref_sink(newWebView);
+
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newWebView));
+ g_signal_connect(newWebView, "print", G_CALLBACK(webViewPrint), this);
+ g_signal_connect(newWebView, "close", G_CALLBACK(webViewClosed), this);
+ return newWebView;
+ }
+
+ void print(WebKitPrintOperation* printOperation)
+ {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(printOperation));
+
+ GRefPtr<GtkPrinter> printer = adoptGRef(findPrintToFilePrinter());
+ if (!printer) {
+ g_message("%s", "Cannot test WebKitPrintOperation/print: no suitable printer found");
+ return;
+ }
+
+ GUniquePtr<char> outputFilename(g_build_filename(Test::dataDirectory(), "webkit-close-after-print.pdf", nullptr));
+ m_outputFile = adoptGRef(g_file_new_for_path(outputFilename.get()));
+ GUniquePtr<char> outputURI(g_file_get_uri(m_outputFile.get()));
+
+ GRefPtr<GtkPrintSettings> printSettings = adoptGRef(gtk_print_settings_new());
+ gtk_print_settings_set_printer(printSettings.get(), gtk_printer_get_name(printer.get()));
+ gtk_print_settings_set(printSettings.get(), GTK_PRINT_SETTINGS_OUTPUT_URI, outputURI.get());
+ webkit_print_operation_set_print_settings(printOperation, printSettings.get());
+
+ m_printOperation = printOperation;
+ g_signal_connect(m_printOperation.get(), "finished", G_CALLBACK(printOperationFinished), this);
+ webkit_print_operation_print(m_printOperation.get());
+ }
+
+ void printFinished()
+ {
+ m_printFinished = true;
+ m_printOperation = nullptr;
+ g_assert(m_outputFile);
+ g_file_delete(m_outputFile.get(), 0, 0);
+ m_outputFile = nullptr;
+ if (m_webViewClosed)
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void waitUntilPrintFinishedAndViewClosed()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GRefPtr<WebKitPrintOperation> m_printOperation;
+ GRefPtr<GFile> m_outputFile;
+ bool m_webViewClosed;
+ bool m_printFinished;
+};
+
+static void testPrintOperationCloseAfterPrint(CloseAfterPrintTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body onLoad=\"w = window.open();w.print();w.close();\"></body></html>", 0);
+ test->waitUntilPrintFinishedAndViewClosed();
+}
+#endif // HAVE_GTK_UNIX_PRINTING
+
+void beforeAll()
+{
+ WebViewTest::add("WebKitPrintOperation", "printing-settings", testPrintOperationPrintSettings);
+ WebViewTest::add("WebKitWebView", "print", testWebViewPrint);
+#ifdef HAVE_GTK_UNIX_PRINTING
+ PrintTest::add("WebKitPrintOperation", "print", testPrintOperationPrint);
+ PrintTest::add("WebKitPrintOperation", "print-errors", testPrintOperationErrors);
+ CloseAfterPrintTest::add("WebKitPrintOperation", "close-after-print", testPrintOperationCloseAfterPrint);
+#endif
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp
new file mode 100644
index 000000000..1510e5d49
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestResources.cpp
@@ -0,0 +1,877 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <wtf/Vector.h>
+#include <wtf/glib/GMutexLocker.h>
+#include <wtf/glib/GRefPtr.h>
+
+static WebKitTestServer* kServer;
+
+static const char* kIndexHtml =
+ "<html><head>"
+ " <link rel='stylesheet' href='/style.css' type='text/css'>"
+ " <script language='javascript' src='/javascript.js'></script>"
+ "</head><body>WebKitGTK+ resources test</body></html>";
+
+static const char* kStyleCSS =
+ "body {"
+ " margin: 0px;"
+ " padding: 0px;"
+ " font-family: sans-serif;"
+ " background: url(/blank.ico) 0 0 no-repeat;"
+ " color: black;"
+ "}";
+
+static const char* kJavascript = "function foo () { var a = 1; }";
+
+class ResourcesTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ResourcesTest);
+
+ static void resourceSentRequestCallback(WebKitWebResource* resource, WebKitURIRequest* request, WebKitURIResponse* redirectResponse, ResourcesTest* test)
+ {
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ if (redirectResponse)
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(redirectResponse));
+ test->resourceSentRequest(resource, request, redirectResponse);
+ }
+
+ static void resourceReceivedResponseCallback(WebKitWebResource* resource, GParamSpec*, ResourcesTest* test)
+ {
+ g_assert(webkit_web_resource_get_response(resource));
+ test->resourceReceivedResponse(resource);
+ }
+
+ static void resourceReceivedDataCallback(WebKitWebResource* resource, guint64 bytesReceived, ResourcesTest* test)
+ {
+ test->resourceReceivedData(resource, bytesReceived);
+ }
+
+ static void resourceFinishedCallback(WebKitWebResource* resource, ResourcesTest* test)
+ {
+ test->resourceFinished(resource);
+ }
+
+ static void resourceFailedCallback(WebKitWebResource* resource, GError* error, ResourcesTest* test)
+ {
+ g_assert(error);
+ test->resourceFailed(resource, error);
+ }
+
+ static void resourceLoadStartedCallback(WebKitWebView* webView, WebKitWebResource* resource, WebKitURIRequest* request, ResourcesTest* test)
+ {
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(resource));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+
+ // Ignore favicons.
+ if (g_str_has_suffix(webkit_uri_request_get_uri(request), "favicon.ico"))
+ return;
+
+ test->resourceLoadStarted(resource, request);
+ g_signal_connect(resource, "sent-request", G_CALLBACK(resourceSentRequestCallback), test);
+ g_signal_connect(resource, "notify::response", G_CALLBACK(resourceReceivedResponseCallback), test);
+ g_signal_connect(resource, "received-data", G_CALLBACK(resourceReceivedDataCallback), test);
+ g_signal_connect(resource, "finished", G_CALLBACK(resourceFinishedCallback), test);
+ g_signal_connect(resource, "failed", G_CALLBACK(resourceFailedCallback), test);
+ }
+
+ void clearSubresources()
+ {
+ g_list_free_full(m_subresources, reinterpret_cast<GDestroyNotify>(g_object_unref));
+ m_subresources = 0;
+ }
+
+ ResourcesTest()
+ : WebViewTest()
+ , m_resourcesLoaded(0)
+ , m_resourcesToLoad(0)
+ , m_resourceDataSize(0)
+ , m_subresources(0)
+ {
+ g_signal_connect(m_webView, "resource-load-started", G_CALLBACK(resourceLoadStartedCallback), this);
+ }
+
+ ~ResourcesTest()
+ {
+ clearSubresources();
+ }
+
+ virtual void resourceLoadStarted(WebKitWebResource* resource, WebKitURIRequest* request)
+ {
+ }
+
+ virtual void resourceSentRequest(WebKitWebResource* resource, WebKitURIRequest* request, WebKitURIResponse* redirectResponse)
+ {
+ }
+
+ virtual void resourceReceivedResponse(WebKitWebResource* resource)
+ {
+ }
+
+ virtual void resourceReceivedData(WebKitWebResource* resource, guint64 bytesReceived)
+ {
+ }
+
+ virtual void resourceFinished(WebKitWebResource* resource)
+ {
+ g_signal_handlers_disconnect_matched(resource, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ if (webkit_web_view_get_main_resource(m_webView) != resource)
+ m_subresources = g_list_prepend(m_subresources, g_object_ref(resource));
+ if (++m_resourcesLoaded == m_resourcesToLoad)
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ virtual void resourceFailed(WebKitWebResource* resource, GError* error)
+ {
+ g_assert_not_reached();
+ }
+
+ void waitUntilResourcesLoaded(size_t resourcesCount)
+ {
+ m_resourcesLoaded = 0;
+ m_resourcesToLoad = resourcesCount;
+ clearSubresources();
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GList* subresources()
+ {
+ return m_subresources;
+ }
+
+ static void resourceGetDataCallback(GObject* object, GAsyncResult* result, gpointer userData)
+ {
+ size_t dataSize;
+ GUniqueOutPtr<GError> error;
+ unsigned char* data = webkit_web_resource_get_data_finish(WEBKIT_WEB_RESOURCE(object), result, &dataSize, &error.outPtr());
+ g_assert(!error.get());
+ g_assert(data);
+ g_assert_cmpint(dataSize, >, 0);
+
+ ResourcesTest* test = static_cast<ResourcesTest*>(userData);
+ test->m_resourceData.reset(reinterpret_cast<char*>(data));
+ test->m_resourceDataSize = dataSize;
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ void checkResourceData(WebKitWebResource* resource)
+ {
+ m_resourceDataSize = 0;
+ webkit_web_resource_get_data(resource, 0, resourceGetDataCallback, this);
+ g_main_loop_run(m_mainLoop);
+
+ const char* uri = webkit_web_resource_get_uri(resource);
+ if (uri == kServer->getURIForPath("/")) {
+ g_assert_cmpint(m_resourceDataSize, ==, strlen(kIndexHtml));
+ g_assert(!strncmp(m_resourceData.get(), kIndexHtml, m_resourceDataSize));
+ } else if (uri == kServer->getURIForPath("/style.css")) {
+ g_assert_cmpint(m_resourceDataSize, ==, strlen(kStyleCSS));
+ g_assert(!strncmp(m_resourceData.get(), kStyleCSS, m_resourceDataSize));
+ } else if (uri == kServer->getURIForPath("/javascript.js")) {
+ g_assert_cmpint(m_resourceDataSize, ==, strlen(kJavascript));
+ g_assert(!strncmp(m_resourceData.get(), kJavascript, m_resourceDataSize));
+ } else if (uri == kServer->getURIForPath("/blank.ico")) {
+ GUniquePtr<char> filePath(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ GUniqueOutPtr<char> contents;
+ gsize contentsLength;
+ g_file_get_contents(filePath.get(), &contents.outPtr(), &contentsLength, nullptr);
+ g_assert_cmpint(m_resourceDataSize, ==, contentsLength);
+ g_assert(!memcmp(m_resourceData.get(), contents.get(), contentsLength));
+ } else
+ g_assert_not_reached();
+ m_resourceData.reset();
+ }
+
+ size_t m_resourcesLoaded;
+ size_t m_resourcesToLoad;
+ GUniquePtr<char> m_resourceData;
+ size_t m_resourceDataSize;
+ GList* m_subresources;
+};
+
+static void testWebViewResources(ResourcesTest* test, gconstpointer)
+{
+ // Nothing loaded yet, there shoulnd't be resources.
+ g_assert(!webkit_web_view_get_main_resource(test->m_webView));
+ g_assert(!test->subresources());
+
+ // Load simple page without subresources.
+ test->loadHtml("<html><body>Testing WebKitGTK+</body></html>", 0);
+ test->waitUntilLoadFinished();
+ WebKitWebResource* resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, webkit_web_resource_get_uri(resource));
+ g_assert(!test->subresources());
+
+ // Load simple page with subresources.
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilResourcesLoaded(4);
+
+ resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_view_get_uri(test->m_webView), ==, webkit_web_resource_get_uri(resource));
+ GList* subresources = test->subresources();
+ g_assert(subresources);
+ g_assert_cmpint(g_list_length(subresources), ==, 3);
+
+#if 0
+ // Load the same URI again.
+ // FIXME: we need a workaround for bug https://bugs.webkit.org/show_bug.cgi?id=78510.
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilResourcesLoaded(4);
+#endif
+
+ // Reload.
+ webkit_web_view_reload_bypass_cache(test->m_webView);
+ test->waitUntilResourcesLoaded(4);
+}
+
+class SingleResourceLoadTest: public ResourcesTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SingleResourceLoadTest);
+
+ enum LoadEvents {
+ Started,
+ SentRequest,
+ Redirected,
+ ReceivedResponse,
+ ReceivedData,
+ Finished,
+ Failed
+ };
+
+ SingleResourceLoadTest()
+ : ResourcesTest()
+ , m_resourceDataReceived(0)
+ {
+ m_resourcesToLoad = 2;
+ }
+
+ void resourceLoadStarted(WebKitWebResource* resource, WebKitURIRequest* request)
+ {
+ if (resource == webkit_web_view_get_main_resource(m_webView))
+ return;
+
+ m_resourceDataReceived = 0;
+ m_resource = resource;
+ m_loadEvents.append(Started);
+ }
+
+ void resourceSentRequest(WebKitWebResource* resource, WebKitURIRequest* request, WebKitURIResponse* redirectResponse)
+ {
+ if (resource != m_resource)
+ return;
+
+ if (redirectResponse)
+ m_loadEvents.append(Redirected);
+ else
+ m_loadEvents.append(SentRequest);
+ }
+
+ void resourceReceivedResponse(WebKitWebResource* resource)
+ {
+ if (resource != m_resource)
+ return;
+
+ m_loadEvents.append(ReceivedResponse);
+ }
+
+ void resourceReceivedData(WebKitWebResource* resource, guint64 bytesReceived)
+ {
+ if (resource != m_resource)
+ return;
+
+ m_resourceDataReceived += bytesReceived;
+ if (!m_loadEvents.contains(ReceivedData))
+ m_loadEvents.append(ReceivedData);
+ }
+
+ void resourceFinished(WebKitWebResource* resource)
+ {
+ if (resource != m_resource) {
+ ResourcesTest::resourceFinished(resource);
+ return;
+ }
+
+ if (!m_loadEvents.contains(Failed)) {
+ WebKitURIResponse* response = webkit_web_resource_get_response(m_resource.get());
+ g_assert(response);
+ g_assert_cmpint(webkit_uri_response_get_content_length(response), ==, m_resourceDataReceived);
+ }
+ m_loadEvents.append(Finished);
+ ResourcesTest::resourceFinished(resource);
+ }
+
+ void resourceFailed(WebKitWebResource* resource, GError* error)
+ {
+ if (resource == m_resource)
+ m_loadEvents.append(Failed);
+ }
+
+ void waitUntilResourceLoadFinished()
+ {
+ m_resource = 0;
+ m_resourcesLoaded = 0;
+ g_main_loop_run(m_mainLoop);
+ }
+
+ WebKitURIResponse* waitUntilResourceLoadFinishedAndReturnURIResponse()
+ {
+ waitUntilResourceLoadFinished();
+ g_assert(m_resource);
+ return webkit_web_resource_get_response(m_resource.get());
+ }
+
+ GRefPtr<WebKitWebResource> m_resource;
+ Vector<LoadEvents> m_loadEvents;
+ guint64 m_resourceDataReceived;
+};
+
+static void testWebResourceLoading(SingleResourceLoadTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/javascript.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+ Vector<SingleResourceLoadTest::LoadEvents>& events = test->m_loadEvents;
+ g_assert_cmpint(events.size(), ==, 5);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::ReceivedResponse);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::ReceivedData);
+ g_assert_cmpint(events[4], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+
+ test->loadURI(kServer->getURIForPath("/redirected-css.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+ g_assert_cmpint(events.size(), ==, 6);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::Redirected);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::ReceivedResponse);
+ g_assert_cmpint(events[4], ==, SingleResourceLoadTest::ReceivedData);
+ g_assert_cmpint(events[5], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+
+ test->loadURI(kServer->getURIForPath("/invalid-css.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::Failed);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+}
+
+static void testWebResourceResponse(SingleResourceLoadTest* test, gconstpointer)
+{
+ // No cached resource: First load.
+ test->loadURI(kServer->getURIForPath("/javascript.html").data());
+ WebKitURIResponse* response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_OK);
+
+ // No cached resource: Second load.
+ test->loadURI(kServer->getURIForPath("/javascript.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_OK);
+
+ // No cached resource: Reload.
+ webkit_web_view_reload(test->m_webView);
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_OK);
+
+ // Cached resource: First load.
+ test->loadURI(kServer->getURIForPath("/image.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_OK);
+
+ // Cached resource: Second load.
+ test->loadURI(kServer->getURIForPath("/image.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_OK);
+
+ // Cached resource: Reload.
+ webkit_web_view_reload(test->m_webView);
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpint(webkit_uri_response_get_status_code(response), ==, SOUP_STATUS_NOT_MODIFIED);
+}
+
+static void testWebResourceMimeType(SingleResourceLoadTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/javascript.html").data());
+ WebKitURIResponse* response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpstr(webkit_uri_response_get_mime_type(response), ==, "text/javascript");
+
+ test->loadURI(kServer->getURIForPath("/image.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpstr(webkit_uri_response_get_mime_type(response), ==, "image/x-icon");
+
+ test->loadURI(kServer->getURIForPath("/redirected-css.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpstr(webkit_uri_response_get_mime_type(response), ==, "text/css");
+}
+
+static void testWebResourceSuggestedFilename(SingleResourceLoadTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/javascript.html").data());
+ WebKitURIResponse* response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert_cmpstr(webkit_uri_response_get_suggested_filename(response), ==, "JavaScript.js");
+
+ test->loadURI(kServer->getURIForPath("/image.html").data());
+ response = test->waitUntilResourceLoadFinishedAndReturnURIResponse();
+ g_assert(!webkit_uri_response_get_suggested_filename(response));
+}
+
+class ResourceURITrackingTest: public SingleResourceLoadTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ResourceURITrackingTest);
+
+ ResourceURITrackingTest()
+ : SingleResourceLoadTest()
+ {
+ }
+
+ static void uriChanged(WebKitWebResource* resource, GParamSpec*, ResourceURITrackingTest* test)
+ {
+ g_assert(resource == test->m_resource.get());
+ g_assert_cmpstr(test->m_activeURI.data(), !=, webkit_web_resource_get_uri(test->m_resource.get()));
+ test->m_activeURI = webkit_web_resource_get_uri(test->m_resource.get());
+ }
+
+ void resourceLoadStarted(WebKitWebResource* resource, WebKitURIRequest* request)
+ {
+ if (resource == webkit_web_view_get_main_resource(m_webView))
+ return;
+
+ m_resource = resource;
+ m_activeURI = webkit_web_resource_get_uri(resource);
+ checkActiveURI("/redirected.css");
+ g_assert_cmpstr(m_activeURI.data(), ==, webkit_uri_request_get_uri(request));
+ g_signal_connect(resource, "notify::uri", G_CALLBACK(uriChanged), this);
+ }
+
+ void resourceSentRequest(WebKitWebResource* resource, WebKitURIRequest* request, WebKitURIResponse* redirectResponse)
+ {
+ if (resource != m_resource)
+ return;
+
+ if (redirectResponse)
+ checkActiveURI("/simple-style.css");
+ else
+ checkActiveURI("/redirected.css");
+ g_assert_cmpstr(m_activeURI.data(), ==, webkit_uri_request_get_uri(request));
+ }
+
+ void resourceReceivedResponse(WebKitWebResource* resource)
+ {
+ if (resource != m_resource)
+ return;
+
+ checkActiveURI("/simple-style.css");
+ }
+
+ void resourceReceivedData(WebKitWebResource* resource, guint64 bytesReceived)
+ {
+ }
+
+ void resourceFinished(WebKitWebResource* resource)
+ {
+ if (resource == m_resource)
+ checkActiveURI("/simple-style.css");
+ ResourcesTest::resourceFinished(resource);
+ }
+
+ void resourceFailed(WebKitWebResource*, GError*)
+ {
+ g_assert_not_reached();
+ }
+
+ CString m_activeURI;
+
+private:
+ void checkActiveURI(const char* uri)
+ {
+ ASSERT_CMP_CSTRING(m_activeURI, ==, kServer->getURIForPath(uri));
+ }
+};
+
+static void testWebResourceActiveURI(ResourceURITrackingTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/redirected-css.html").data());
+ test->waitUntilResourceLoadFinished();
+}
+
+static void testWebResourceGetData(ResourcesTest* test, gconstpointer)
+{
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilResourcesLoaded(4);
+
+ WebKitWebResource* resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ test->checkResourceData(resource);
+
+ GList* subresources = test->subresources();
+ for (GList* item = subresources; item; item = g_list_next(item))
+ test->checkResourceData(WEBKIT_WEB_RESOURCE(item->data));
+}
+
+static void testWebViewResourcesHistoryCache(SingleResourceLoadTest* test, gconstpointer)
+{
+ CString javascriptURI = kServer->getURIForPath("/javascript.html");
+ test->loadURI(javascriptURI.data());
+ test->waitUntilResourceLoadFinished();
+ WebKitWebResource* resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, javascriptURI.data());
+
+ CString simpleStyleCSSURI = kServer->getURIForPath("/simple-style-css.html");
+ test->loadURI(simpleStyleCSSURI.data());
+ test->waitUntilResourceLoadFinished();
+ resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, simpleStyleCSSURI.data());
+
+ test->goBack();
+ test->waitUntilResourceLoadFinished();
+ resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, javascriptURI.data());
+
+ test->goForward();
+ test->waitUntilResourceLoadFinished();
+ resource = webkit_web_view_get_main_resource(test->m_webView);
+ g_assert(resource);
+ g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, simpleStyleCSSURI.data());
+}
+
+class SendRequestTest: public SingleResourceLoadTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SendRequestTest);
+
+ void resourceSentRequest(WebKitWebResource* resource, WebKitURIRequest* request, WebKitURIResponse* redirectResponse)
+ {
+ if (resource != m_resource)
+ return;
+
+ if (redirectResponse)
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, m_expectedNewResourceURIAfterRedirection.data());
+ else
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, m_expectedNewResourceURI.data());
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, webkit_web_resource_get_uri(resource));
+
+ SingleResourceLoadTest::resourceSentRequest(resource, request, redirectResponse);
+ }
+
+ void resourceFailed(WebKitWebResource* resource, GError* error)
+ {
+ if (resource != m_resource)
+ return;
+
+ g_assert_cmpstr(webkit_web_resource_get_uri(resource), ==, m_expectedCancelledResourceURI.data());
+ g_assert_error(error, WEBKIT_NETWORK_ERROR, WEBKIT_NETWORK_ERROR_CANCELLED);
+
+ SingleResourceLoadTest::resourceFailed(resource, error);
+ }
+
+ void setExpectedNewResourceURI(const CString& uri)
+ {
+ m_expectedNewResourceURI = uri;
+ }
+
+ void setExpectedCancelledResourceURI(const CString& uri)
+ {
+ m_expectedCancelledResourceURI = uri;
+ }
+
+ void setExpectedNewResourceURIAfterRedirection(const CString& uri)
+ {
+ m_expectedNewResourceURIAfterRedirection = uri;
+ }
+
+ CString m_expectedNewResourceURI;
+ CString m_expectedCancelledResourceURI;
+ CString m_expectedNewResourceURIAfterRedirection;
+};
+
+static void testWebResourceSendRequest(SendRequestTest* test, gconstpointer)
+{
+ test->setExpectedNewResourceURI(kServer->getURIForPath("/javascript.js"));
+ test->loadURI(kServer->getURIForPath("relative-javascript.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+
+ Vector<SingleResourceLoadTest::LoadEvents>& events = test->m_loadEvents;
+ g_assert_cmpint(events.size(), ==, 5);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::ReceivedResponse);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::ReceivedData);
+ g_assert_cmpint(events[4], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+
+ // Cancel request.
+ test->setExpectedCancelledResourceURI(kServer->getURIForPath("/cancel-this.js"));
+ test->loadURI(kServer->getURIForPath("/resource-to-cancel.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::Failed);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+
+ // URI changed after a redirect.
+ test->setExpectedNewResourceURI(kServer->getURIForPath("/redirected.js"));
+ test->setExpectedNewResourceURIAfterRedirection(kServer->getURIForPath("/javascript-after-redirection.js"));
+ test->loadURI(kServer->getURIForPath("redirected-javascript.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+
+ g_assert_cmpint(events.size(), ==, 6);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::Redirected);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::ReceivedResponse);
+ g_assert_cmpint(events[4], ==, SingleResourceLoadTest::ReceivedData);
+ g_assert_cmpint(events[5], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+
+ // Cancel after a redirect.
+ test->setExpectedNewResourceURI(kServer->getURIForPath("/redirected-to-cancel.js"));
+ test->setExpectedCancelledResourceURI(kServer->getURIForPath("/redirected-to-cancel.js"));
+ test->loadURI(kServer->getURIForPath("/redirected-to-cancel.html").data());
+ test->waitUntilResourceLoadFinished();
+ g_assert(test->m_resource);
+
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, SingleResourceLoadTest::Started);
+ g_assert_cmpint(events[1], ==, SingleResourceLoadTest::SentRequest);
+ g_assert_cmpint(events[2], ==, SingleResourceLoadTest::Failed);
+ g_assert_cmpint(events[3], ==, SingleResourceLoadTest::Finished);
+ events.clear();
+}
+
+static GMutex s_serverMutex;
+static const unsigned s_maxConnectionsPerHost = 6;
+
+class SyncRequestOnMaxConnsTest: public ResourcesTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SyncRequestOnMaxConnsTest);
+
+ void resourceLoadStarted(WebKitWebResource*, WebKitURIRequest*) override
+ {
+ if (!m_resourcesToStartPending)
+ return;
+
+ if (!--m_resourcesToStartPending)
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void waitUntilResourcesStarted(unsigned requestCount)
+ {
+ m_resourcesToStartPending = requestCount;
+ g_main_loop_run(m_mainLoop);
+ }
+
+ unsigned m_resourcesToStartPending;
+};
+
+static void testWebViewSyncRequestOnMaxConns(SyncRequestOnMaxConnsTest* test, gconstpointer)
+{
+ WTF::GMutexLocker<GMutex> lock(s_serverMutex);
+ test->loadURI(kServer->getURIForPath("/sync-request-on-max-conns-0").data());
+ test->waitUntilResourcesStarted(s_maxConnectionsPerHost + 1); // s_maxConnectionsPerHost resource + main resource.
+
+ for (unsigned i = 0; i < 2; ++i) {
+ GUniquePtr<char> xhr(g_strdup_printf("xhr = new XMLHttpRequest; xhr.open('GET', '/sync-request-on-max-conns-xhr%u', false); xhr.send();", i));
+ webkit_web_view_run_javascript(test->m_webView, xhr.get(), nullptr, nullptr, nullptr);
+ }
+
+ // By default sync XHRs have a 10 seconds timeout, we don't want to wait all that so use our own timeout.
+ guint timeoutSourceID = g_timeout_add(1000, [] (gpointer) -> gboolean {
+ g_assert_not_reached();
+ return G_SOURCE_REMOVE;
+ }, nullptr);
+
+ struct UnlockServerSourceContext {
+ WTF::GMutexLocker<GMutex>& lock;
+ guint unlockServerSourceID;
+ } context = {
+ lock,
+ g_idle_add_full(G_PRIORITY_DEFAULT, [](gpointer userData) -> gboolean {
+ auto& context = *static_cast<UnlockServerSourceContext*>(userData);
+ context.unlockServerSourceID = 0;
+ context.lock.unlock();
+ return G_SOURCE_REMOVE;
+ }, &context, nullptr)
+ };
+ test->waitUntilResourcesLoaded(s_maxConnectionsPerHost + 3); // s_maxConnectionsPerHost resource + main resource + 2 XHR.
+ g_source_remove(timeoutSourceID);
+ if (context.unlockServerSourceID)
+ g_source_remove(context.unlockServerSourceID);
+}
+
+static void addCacheHTTPHeadersToResponse(SoupMessage* message)
+{
+ // The actual date doesn't really matter.
+ SoupDate* soupDate = soup_date_new_from_now(0);
+ GUniquePtr<char> date(soup_date_to_string(soupDate, SOUP_DATE_HTTP));
+ soup_message_headers_append(message->response_headers, "Last-Modified", date.get());
+ soup_date_free(soupDate);
+ soup_message_headers_append(message->response_headers, "Cache-control", "public, max-age=31536000");
+ soupDate = soup_date_new_from_now(3600);
+ date.reset(soup_date_to_string(soupDate, SOUP_DATE_HTTP));
+ soup_message_headers_append(message->response_headers, "Expires", date.get());
+ soup_date_free(soupDate);
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ soup_message_set_status(message, SOUP_STATUS_OK);
+
+ if (soup_message_headers_get_one(message->request_headers, "If-Modified-Since")) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_MODIFIED);
+ soup_message_body_complete(message->response_body);
+ return;
+ }
+
+ if (g_str_equal(path, "/")) {
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kIndexHtml, strlen(kIndexHtml));
+ } else if (g_str_equal(path, "/javascript.html")) {
+ static const char* javascriptHtml = "<html><head><script language='javascript' src='/javascript.js'></script></head><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, javascriptHtml, strlen(javascriptHtml));
+ } else if (g_str_equal(path, "/image.html")) {
+ static const char* imageHTML = "<html><body><img src='/blank.ico'></img></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, imageHTML, strlen(imageHTML));
+ } else if (g_str_equal(path, "/redirected-css.html")) {
+ static const char* redirectedCSSHtml = "<html><head><link rel='stylesheet' href='/redirected.css' type='text/css'></head><body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, redirectedCSSHtml, strlen(redirectedCSSHtml));
+ } else if (g_str_equal(path, "/invalid-css.html")) {
+ static const char* invalidCSSHtml = "<html><head><link rel='stylesheet' href='/invalid.css' type='text/css'></head><body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, invalidCSSHtml, strlen(invalidCSSHtml));
+ } else if (g_str_equal(path, "/simple-style-css.html")) {
+ static const char* simpleStyleCSSHtml = "<html><head><link rel='stylesheet' href='/simple-style.css' type='text/css'></head><body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, simpleStyleCSSHtml, strlen(simpleStyleCSSHtml));
+ } else if (g_str_equal(path, "/style.css")) {
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kStyleCSS, strlen(kStyleCSS));
+ addCacheHTTPHeadersToResponse(message);
+ soup_message_headers_append(message->response_headers, "Content-Type", "text/css");
+ } else if (g_str_equal(path, "/javascript.js") || g_str_equal(path, "/javascript-after-redirection.js")) {
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kJavascript, strlen(kJavascript));
+ soup_message_headers_append(message->response_headers, "Content-Type", "text/javascript");
+ soup_message_headers_append(message->response_headers, "Content-Disposition", "filename=JavaScript.js");
+ } else if (g_str_equal(path, "/relative-javascript.html")) {
+ static const char* javascriptRelativeHTML = "<html><head><script language='javascript' src='remove-this/javascript.js'></script></head><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, javascriptRelativeHTML, strlen(javascriptRelativeHTML));
+ } else if (g_str_equal(path, "/resource-to-cancel.html")) {
+ static const char* resourceToCancelHTML = "<html><head><script language='javascript' src='cancel-this.js'></script></head><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, resourceToCancelHTML, strlen(resourceToCancelHTML));
+ } else if (g_str_equal(path, "/redirected-javascript.html")) {
+ static const char* javascriptRelativeHTML = "<html><head><script language='javascript' src='/redirected.js'></script></head><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, javascriptRelativeHTML, strlen(javascriptRelativeHTML));
+ } else if (g_str_equal(path, "/redirected-to-cancel.html")) {
+ static const char* javascriptRelativeHTML = "<html><head><script language='javascript' src='/redirected-to-cancel.js'></script></head><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, javascriptRelativeHTML, strlen(javascriptRelativeHTML));
+ } else if (g_str_equal(path, "/blank.ico")) {
+ GUniquePtr<char> filePath(g_build_filename(Test::getResourcesDir().data(), path, nullptr));
+ char* contents;
+ gsize contentsLength;
+ g_file_get_contents(filePath.get(), &contents, &contentsLength, 0);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, contentsLength);
+ addCacheHTTPHeadersToResponse(message);
+ soup_message_headers_append(message->response_headers, "Content-Type", "image/vnd.microsoft.icon");
+ } else if (g_str_equal(path, "/simple-style.css")) {
+ static const char* simpleCSS =
+ "body {"
+ " margin: 0px;"
+ " padding: 0px;"
+ "}";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, simpleCSS, strlen(simpleCSS));
+ soup_message_headers_append(message->response_headers, "Content-Type", "text/css");
+ } else if (g_str_equal(path, "/redirected.css")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "/simple-style.css");
+ } else if (g_str_equal(path, "/redirected.js")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "/remove-this/javascript-after-redirection.js");
+ } else if (g_str_equal(path, "/redirected-to-cancel.js")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", "/cancel-this.js");
+ } else if (g_str_equal(path, "/invalid.css"))
+ soup_message_set_status(message, SOUP_STATUS_CANT_CONNECT);
+ else if (g_str_has_prefix(path, "/sync-request-on-max-conns-")) {
+ char* contents;
+ gsize contentsLength;
+ if (g_str_equal(path, "/sync-request-on-max-conns-0")) {
+ GString* imagesHTML = g_string_new("<html><body>");
+ for (unsigned i = 1; i <= s_maxConnectionsPerHost; ++i)
+ g_string_append_printf(imagesHTML, "<img src='/sync-request-on-max-conns-%u'>", i);
+ g_string_append(imagesHTML, "</body></html>");
+
+ contentsLength = imagesHTML->len;
+ contents = g_string_free(imagesHTML, FALSE);
+ } else {
+ {
+ // We don't actually need to keep the mutex, so we release it as soon as we get it.
+ WTF::GMutexLocker<GMutex> lock(s_serverMutex);
+ }
+
+ GUniquePtr<char> filePath(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ g_file_get_contents(filePath.get(), &contents, &contentsLength, 0);
+ }
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, contentsLength);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+ soup_message_body_complete(message->response_body);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer(WebKitTestServer::ServerOptions::ServerRunInThread);
+ kServer->run(serverCallback);
+
+ ResourcesTest::add("WebKitWebView", "resources", testWebViewResources);
+ SingleResourceLoadTest::add("WebKitWebResource", "loading", testWebResourceLoading);
+ SingleResourceLoadTest::add("WebKitWebResource", "response", testWebResourceResponse);
+ SingleResourceLoadTest::add("WebKitWebResource", "mime-type", testWebResourceMimeType);
+ SingleResourceLoadTest::add("WebKitWebResource", "suggested-filename", testWebResourceSuggestedFilename);
+ ResourceURITrackingTest::add("WebKitWebResource", "active-uri", testWebResourceActiveURI);
+ ResourcesTest::add("WebKitWebResource", "get-data", testWebResourceGetData);
+ SingleResourceLoadTest::add("WebKitWebView", "history-cache", testWebViewResourcesHistoryCache);
+ SendRequestTest::add("WebKitWebPage", "send-request", testWebResourceSendRequest);
+#if SOUP_CHECK_VERSION(2, 49, 91)
+ SyncRequestOnMaxConnsTest::add("WebKitWebView", "sync-request-on-max-conns", testWebViewSyncRequestOnMaxConns);
+#endif
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
new file mode 100644
index 000000000..10c5e73b6
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestSSL.cpp
@@ -0,0 +1,434 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 "LoadTrackingTest.h"
+#include "WebKitTestServer.h"
+#include <gtk/gtk.h>
+
+static WebKitTestServer* kHttpsServer;
+static WebKitTestServer* kHttpServer;
+
+static const char* indexHTML = "<html><body>Testing WebKit2GTK+ SSL</body></htmll>";
+static const char* insecureContentHTML = "<html><script src=\"%s\"></script><body><p>Text + image <img src=\"%s\" align=\"right\"/></p></body></html>";
+static const char TLSExpectedSuccessTitle[] = "WebKit2Gtk+ TLS permission test";
+static const char TLSSuccessHTMLString[] = "<html><head><title>WebKit2Gtk+ TLS permission test</title></head><body></body></html>";
+
+class SSLTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SSLTest);
+
+ SSLTest()
+ : m_tlsErrors(static_cast<GTlsCertificateFlags>(0))
+ {
+ }
+
+ virtual void provisionalLoadFailed(const gchar* failingURI, GError* error)
+ {
+ g_assert_error(error, SOUP_HTTP_ERROR, SOUP_STATUS_SSL_FAILED);
+ LoadTrackingTest::provisionalLoadFailed(failingURI, error);
+ }
+
+ virtual void loadCommitted()
+ {
+ GTlsCertificate* certificate = 0;
+ webkit_web_view_get_tls_info(m_webView, &certificate, &m_tlsErrors);
+ m_certificate = certificate;
+ LoadTrackingTest::loadCommitted();
+ }
+
+ void waitUntilLoadFinished()
+ {
+ m_certificate = 0;
+ m_tlsErrors = static_cast<GTlsCertificateFlags>(0);
+ LoadTrackingTest::waitUntilLoadFinished();
+ }
+
+ GRefPtr<GTlsCertificate> m_certificate;
+ GTlsCertificateFlags m_tlsErrors;
+};
+
+static void testSSL(SSLTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+
+ test->loadURI(kHttpsServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_certificate);
+ // We always expect errors because we are using a self-signed certificate,
+ // but only G_TLS_CERTIFICATE_UNKNOWN_CA flags should be present.
+ g_assert(test->m_tlsErrors);
+ g_assert_cmpuint(test->m_tlsErrors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
+
+ // Non HTTPS loads shouldn't have a certificate nor errors.
+ test->loadHtml(indexHTML, 0);
+ test->waitUntilLoadFinished();
+ g_assert(!test->m_certificate);
+ g_assert(!test->m_tlsErrors);
+
+ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+}
+
+class InsecureContentTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(InsecureContentTest);
+
+ InsecureContentTest()
+ : m_insecureContentRun(false)
+ , m_insecureContentDisplayed(false)
+ {
+ g_signal_connect(m_webView, "insecure-content-detected", G_CALLBACK(insecureContentDetectedCallback), this);
+ }
+
+ static void insecureContentDetectedCallback(WebKitWebView* webView, WebKitInsecureContentEvent event, InsecureContentTest* test)
+ {
+ g_assert(webView == test->m_webView);
+
+ if (event == WEBKIT_INSECURE_CONTENT_RUN)
+ test->m_insecureContentRun = true;
+
+ if (event == WEBKIT_INSECURE_CONTENT_DISPLAYED)
+ test->m_insecureContentDisplayed = true;
+ }
+
+ bool m_insecureContentRun;
+ bool m_insecureContentDisplayed;
+};
+
+static void testInsecureContent(InsecureContentTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+
+ test->loadURI(kHttpsServer->getURIForPath("/insecure-content/").data());
+ test->waitUntilLoadFinished();
+
+ g_assert(!test->m_insecureContentRun);
+ // Images are currently always displayed, even bypassing mixed content settings. Check
+ // https://bugs.webkit.org/show_bug.cgi?id=142469
+ g_assert(test->m_insecureContentDisplayed);
+
+ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+}
+
+static bool assertIfSSLRequestProcessed = false;
+
+static void testTLSErrorsPolicy(SSLTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ // TLS errors are treated as transport failures by default.
+ g_assert(webkit_web_context_get_tls_errors_policy(context) == WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ assertIfSSLRequestProcessed = true;
+ test->loadURI(kHttpsServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadFailed);
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+ assertIfSSLRequestProcessed = false;
+
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+ g_assert(webkit_web_context_get_tls_errors_policy(context) == WEBKIT_TLS_ERRORS_POLICY_IGNORE);
+
+ test->m_loadFailed = false;
+ test->loadURI(kHttpsServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert(!test->m_loadFailed);
+
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+ g_assert(webkit_web_context_get_tls_errors_policy(context) == WEBKIT_TLS_ERRORS_POLICY_FAIL);
+}
+
+static void testTLSErrorsRedirect(SSLTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ assertIfSSLRequestProcessed = true;
+ test->loadURI(kHttpsServer->getURIForPath("/redirect").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadFailed);
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+ assertIfSSLRequestProcessed = false;
+
+ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+}
+
+static gboolean webViewAuthenticationCallback(WebKitWebView*, WebKitAuthenticationRequest* request)
+{
+ g_assert_not_reached();
+ return TRUE;
+}
+
+
+static void testTLSErrorsHTTPAuth(SSLTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ assertIfSSLRequestProcessed = true;
+ g_signal_connect(test->m_webView, "authenticate", G_CALLBACK(webViewAuthenticationCallback), NULL);
+ test->loadURI(kHttpsServer->getURIForPath("/auth").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadFailed);
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadCommitted));
+ assertIfSSLRequestProcessed = false;
+
+ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+}
+
+class TLSErrorsTest: public SSLTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(TLSErrorsTest);
+
+ TLSErrorsTest()
+ : m_tlsErrors(static_cast<GTlsCertificateFlags>(0))
+ , m_failingURI(nullptr)
+ {
+ }
+
+ ~TLSErrorsTest()
+ {
+ if (m_failingURI)
+ soup_uri_free(m_failingURI);
+ }
+
+ bool loadFailedWithTLSErrors(const char* failingURI, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors) override
+ {
+ LoadTrackingTest::loadFailedWithTLSErrors(failingURI, certificate, tlsErrors);
+
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(certificate));
+ m_certificate = certificate;
+ m_tlsErrors = tlsErrors;
+ if (m_failingURI)
+ soup_uri_free(m_failingURI);
+ m_failingURI = soup_uri_new(failingURI);
+ return true;
+ }
+
+ GTlsCertificate* certificate() const { return m_certificate.get(); }
+ GTlsCertificateFlags tlsErrors() const { return m_tlsErrors; }
+ const char* host() const { return m_failingURI->host; }
+
+private:
+ GRefPtr<GTlsCertificate> m_certificate;
+ GTlsCertificateFlags m_tlsErrors;
+ SoupURI* m_failingURI;
+};
+
+static void testLoadFailedWithTLSErrors(TLSErrorsTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ WebKitTLSErrorsPolicy originalPolicy = webkit_web_context_get_tls_errors_policy(context);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ assertIfSSLRequestProcessed = true;
+ // The load-failed-with-tls-errors signal should be emitted when there is a TLS failure.
+ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data());
+ test->waitUntilLoadFinished();
+ g_assert(G_IS_TLS_CERTIFICATE(test->certificate()));
+ g_assert_cmpuint(test->tlsErrors(), ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
+ g_assert_cmpstr(test->host(), ==, soup_uri_get_host(kHttpsServer->baseURI()));
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadFailedWithTLSErrors);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ assertIfSSLRequestProcessed = false;
+
+ // Test allowing an exception for this certificate on this host.
+ webkit_web_context_allow_tls_certificate_for_host(context, test->certificate(), test->host());
+ // The page should now load without errors.
+ test->loadURI(kHttpsServer->getURIForPath("/test-tls/").data());
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+ g_assert_cmpstr(webkit_web_view_get_title(test->m_webView), ==, TLSExpectedSuccessTitle);
+
+ webkit_web_context_set_tls_errors_policy(context, originalPolicy);
+}
+
+class TLSSubresourceTest : public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(TLSSubresourceTest);
+
+ static void resourceLoadStartedCallback(WebKitWebView* webView, WebKitWebResource* resource, WebKitURIRequest* request, TLSSubresourceTest* test)
+ {
+ if (webkit_web_view_get_main_resource(test->m_webView) == resource)
+ return;
+
+ // Ignore favicons.
+ if (g_str_has_suffix(webkit_uri_request_get_uri(request), "favicon.ico"))
+ return;
+
+ test->subresourceLoadStarted(resource);
+ }
+
+ TLSSubresourceTest()
+ : m_tlsErrors(static_cast<GTlsCertificateFlags>(0))
+ {
+ g_signal_connect(m_webView, "resource-load-started", G_CALLBACK(resourceLoadStartedCallback), this);
+ }
+
+ static void subresourceFailedCallback(WebKitWebResource*, GError*)
+ {
+ g_assert_not_reached();
+ }
+
+ static void subresourceFailedWithTLSErrorsCallback(WebKitWebResource* resource, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors, TLSSubresourceTest* test)
+ {
+ test->subresourceFailedWithTLSErrors(resource, certificate, tlsErrors);
+ }
+
+ void subresourceLoadStarted(WebKitWebResource* resource)
+ {
+ g_signal_connect(resource, "failed", G_CALLBACK(subresourceFailedCallback), nullptr);
+ g_signal_connect(resource, "failed-with-tls-errors", G_CALLBACK(subresourceFailedWithTLSErrorsCallback), this);
+ }
+
+ void subresourceFailedWithTLSErrors(WebKitWebResource* resource, GTlsCertificate* certificate, GTlsCertificateFlags tlsErrors)
+ {
+ m_certificate = certificate;
+ m_tlsErrors = tlsErrors;
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void waitUntilSubresourceLoadFail()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GRefPtr<GTlsCertificate> m_certificate;
+ GTlsCertificateFlags m_tlsErrors;
+};
+
+static void testSubresourceLoadFailedWithTLSErrors(TLSSubresourceTest* test, gconstpointer)
+{
+ WebKitWebContext* context = webkit_web_view_get_context(test->m_webView);
+ webkit_web_context_set_tls_errors_policy(context, WEBKIT_TLS_ERRORS_POLICY_FAIL);
+
+ assertIfSSLRequestProcessed = true;
+ test->loadURI(kHttpServer->getURIForPath("/").data());
+ test->waitUntilSubresourceLoadFail();
+ g_assert(G_IS_TLS_CERTIFICATE(test->m_certificate.get()));
+ g_assert_cmpuint(test->m_tlsErrors, ==, G_TLS_CERTIFICATE_UNKNOWN_CA);
+ assertIfSSLRequestProcessed = false;
+}
+
+static void httpsServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ g_assert(!assertIfSSLRequestProcessed);
+
+ if (g_str_equal(path, "/")) {
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, indexHTML, strlen(indexHTML));
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/insecure-content/")) {
+ GUniquePtr<char> responseHTML(g_strdup_printf(insecureContentHTML, kHttpServer->getURIForPath("/test-script").data(), kHttpServer->getURIForPath("/test-image").data()));
+ soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, responseHTML.get(), strlen(responseHTML.get()));
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/test-tls/")) {
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, TLSSuccessHTMLString, strlen(TLSSuccessHTMLString));
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/redirect")) {
+ soup_message_set_status(message, SOUP_STATUS_MOVED_PERMANENTLY);
+ soup_message_headers_append(message->response_headers, "Location", kHttpServer->getURIForPath("/test-image").data());
+ } else if (g_str_equal(path, "/auth")) {
+ soup_message_set_status(message, SOUP_STATUS_UNAUTHORIZED);
+ soup_message_headers_append(message->response_headers, "WWW-Authenticate", "Basic realm=\"HTTPS auth\"");
+ } else if (g_str_equal(path, "/style.css")) {
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ static const char* styleCSS = "body { color: black; }";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, styleCSS, strlen(styleCSS));
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+static void httpServerCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/test-script")) {
+ GUniquePtr<char> pathToFile(g_build_filename(Test::getResourcesDir().data(), "link-title.js", nullptr));
+ char* contents;
+ gsize length;
+ g_file_get_contents(pathToFile.get(), &contents, &length, 0);
+
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/test-image")) {
+ GUniquePtr<char> pathToFile(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ char* contents;
+ gsize length;
+ g_file_get_contents(pathToFile.get(), &contents, &length, 0);
+
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/")) {
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ char* responseHTML = g_strdup_printf("<html><head><link rel='stylesheet' href='%s' type='text/css'></head><body>SSL subresource test</body></html>",
+ kHttpsServer->getURIForPath("/style.css").data());
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, responseHTML, strlen(responseHTML));
+ soup_message_body_complete(message->response_body);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+void beforeAll()
+{
+ kHttpsServer = new WebKitTestServer(WebKitTestServer::ServerHTTPS);
+ kHttpsServer->run(httpsServerCallback);
+
+ kHttpServer = new WebKitTestServer(WebKitTestServer::ServerHTTP);
+ kHttpServer->run(httpServerCallback);
+
+ SSLTest::add("WebKitWebView", "ssl", testSSL);
+ InsecureContentTest::add("WebKitWebView", "insecure-content", testInsecureContent);
+ SSLTest::add("WebKitWebView", "tls-errors-policy", testTLSErrorsPolicy);
+ SSLTest::add("WebKitWebView", "tls-errors-redirect-to-http", testTLSErrorsRedirect);
+ SSLTest::add("WebKitWebView", "tls-http-auth", testTLSErrorsHTTPAuth);
+ TLSSubresourceTest::add("WebKitWebView", "tls-subresource", testSubresourceLoadFailedWithTLSErrors);
+ TLSErrorsTest::add("WebKitWebView", "load-failed-with-tls-errors", testLoadFailedWithTLSErrors);
+}
+
+void afterAll()
+{
+ delete kHttpsServer;
+ delete kHttpServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp
new file mode 100644
index 000000000..fc48fa468
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestUIClient.cpp
@@ -0,0 +1,1062 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <wtf/HashSet.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/text/StringHash.h>
+
+static const char* kAlertDialogMessage = "WebKitGTK+ alert dialog message";
+static const char* kConfirmDialogMessage = "WebKitGTK+ confirm dialog message";
+static const char* kPromptDialogMessage = "WebKitGTK+ prompt dialog message";
+static const char* kPromptDialogReturnedText = "WebKitGTK+ prompt dialog returned text";
+static const char* kBeforeUnloadConfirmDialogMessage = "WebKitGTK+ beforeunload dialog message";
+
+class UIClientTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(UIClientTest);
+
+ enum WebViewEvents {
+ Create,
+ ReadyToShow,
+ RunAsModal,
+ Close
+ };
+
+ class WindowProperties {
+ public:
+ WindowProperties()
+ : m_isNull(true)
+ , m_toolbarVisible(true)
+ , m_statusbarVisible(true)
+ , m_scrollbarsVisible(true)
+ , m_menubarVisible(true)
+ , m_locationbarVisible(true)
+ , m_resizable(true)
+ , m_fullscreen(false)
+ {
+ memset(&m_geometry, 0, sizeof(GdkRectangle));
+ }
+
+ WindowProperties(WebKitWindowProperties* windowProperties)
+ : m_isNull(false)
+ , m_toolbarVisible(webkit_window_properties_get_toolbar_visible(windowProperties))
+ , m_statusbarVisible(webkit_window_properties_get_statusbar_visible(windowProperties))
+ , m_scrollbarsVisible(webkit_window_properties_get_scrollbars_visible(windowProperties))
+ , m_menubarVisible(webkit_window_properties_get_menubar_visible(windowProperties))
+ , m_locationbarVisible(webkit_window_properties_get_locationbar_visible(windowProperties))
+ , m_resizable(webkit_window_properties_get_resizable(windowProperties))
+ , m_fullscreen(webkit_window_properties_get_fullscreen(windowProperties))
+ {
+ webkit_window_properties_get_geometry(windowProperties, &m_geometry);
+ }
+
+ WindowProperties(GdkRectangle* geometry, bool toolbarVisible, bool statusbarVisible, bool scrollbarsVisible, bool menubarVisible, bool locationbarVisible, bool resizable, bool fullscreen)
+ : m_isNull(false)
+ , m_geometry(*geometry)
+ , m_toolbarVisible(toolbarVisible)
+ , m_statusbarVisible(statusbarVisible)
+ , m_scrollbarsVisible(scrollbarsVisible)
+ , m_menubarVisible(menubarVisible)
+ , m_locationbarVisible(locationbarVisible)
+ , m_resizable(resizable)
+ , m_fullscreen(fullscreen)
+ {
+ }
+
+ bool isNull() const { return m_isNull; }
+
+ void assertEqual(const WindowProperties& other) const
+ {
+ g_assert_cmpint(m_geometry.x, ==, other.m_geometry.x);
+ g_assert_cmpint(m_geometry.y, ==, other.m_geometry.y);
+ g_assert_cmpint(m_geometry.width, ==, other.m_geometry.width);
+ g_assert_cmpint(m_geometry.height, ==, other.m_geometry.height);
+ g_assert_cmpint(static_cast<int>(m_toolbarVisible), ==, static_cast<int>(other.m_toolbarVisible));
+ g_assert_cmpint(static_cast<int>(m_statusbarVisible), ==, static_cast<int>(other.m_statusbarVisible));
+ g_assert_cmpint(static_cast<int>(m_scrollbarsVisible), ==, static_cast<int>(other.m_scrollbarsVisible));
+ g_assert_cmpint(static_cast<int>(m_menubarVisible), ==, static_cast<int>(other.m_menubarVisible));
+ g_assert_cmpint(static_cast<int>(m_locationbarVisible), ==, static_cast<int>(other.m_locationbarVisible));
+ g_assert_cmpint(static_cast<int>(m_resizable), ==, static_cast<int>(other.m_resizable));
+ g_assert_cmpint(static_cast<int>(m_fullscreen), ==, static_cast<int>(other.m_fullscreen));
+ }
+
+ private:
+ bool m_isNull;
+
+ GdkRectangle m_geometry;
+
+ bool m_toolbarVisible;
+ bool m_statusbarVisible;
+ bool m_scrollbarsVisible;
+ bool m_menubarVisible;
+ bool m_locationbarVisible;
+
+ bool m_resizable;
+ bool m_fullscreen;
+ };
+
+ static void windowPropertiesNotifyCallback(GObject*, GParamSpec* paramSpec, UIClientTest* test)
+ {
+ test->m_windowPropertiesChanged.add(g_param_spec_get_name(paramSpec));
+ }
+
+ static GtkWidget* viewCreateCallback(WebKitWebView* webView, WebKitNavigationAction* navigation, UIClientTest* test)
+ {
+ return test->viewCreate(webView, navigation);
+ }
+
+ static void viewReadyToShowCallback(WebKitWebView* webView, UIClientTest* test)
+ {
+ test->viewReadyToShow(webView);
+ }
+
+ static void viewCloseCallback(WebKitWebView* webView, UIClientTest* test)
+ {
+ test->viewClose(webView);
+ }
+
+ void scriptAlert(WebKitScriptDialog* dialog)
+ {
+ switch (m_scriptDialogType) {
+ case WEBKIT_SCRIPT_DIALOG_ALERT:
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, kAlertDialogMessage);
+ break;
+ case WEBKIT_SCRIPT_DIALOG_CONFIRM:
+ g_assert(m_scriptDialogConfirmed);
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, "confirmed");
+
+ break;
+ case WEBKIT_SCRIPT_DIALOG_PROMPT:
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, kPromptDialogReturnedText);
+ break;
+ case WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM:
+ g_assert_not_reached();
+ break;
+ }
+
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void scriptConfirm(WebKitScriptDialog* dialog)
+ {
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, kConfirmDialogMessage);
+ m_scriptDialogConfirmed = !m_scriptDialogConfirmed;
+ webkit_script_dialog_confirm_set_confirmed(dialog, m_scriptDialogConfirmed);
+ }
+
+ void scriptPrompt(WebKitScriptDialog* dialog)
+ {
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, kPromptDialogMessage);
+ g_assert_cmpstr(webkit_script_dialog_prompt_get_default_text(dialog), ==, "default");
+ webkit_script_dialog_prompt_set_text(dialog, kPromptDialogReturnedText);
+ }
+
+ void scriptBeforeUnloadConfirm(WebKitScriptDialog* dialog)
+ {
+ g_assert_cmpstr(webkit_script_dialog_get_message(dialog), ==, kBeforeUnloadConfirmDialogMessage);
+ m_scriptDialogConfirmed = true;
+ webkit_script_dialog_confirm_set_confirmed(dialog, m_scriptDialogConfirmed);
+ }
+
+ static gboolean scriptDialog(WebKitWebView*, WebKitScriptDialog* dialog, UIClientTest* test)
+ {
+ switch (webkit_script_dialog_get_dialog_type(dialog)) {
+ case WEBKIT_SCRIPT_DIALOG_ALERT:
+ test->scriptAlert(dialog);
+ break;
+ case WEBKIT_SCRIPT_DIALOG_CONFIRM:
+ test->scriptConfirm(dialog);
+ break;
+ case WEBKIT_SCRIPT_DIALOG_PROMPT:
+ test->scriptPrompt(dialog);
+ break;
+ case WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM:
+ test->scriptBeforeUnloadConfirm(dialog);
+ break;
+ }
+
+ return TRUE;
+ }
+
+ static void mouseTargetChanged(WebKitWebView*, WebKitHitTestResult* hitTestResult, guint modifiers, UIClientTest* test)
+ {
+ g_assert(WEBKIT_IS_HIT_TEST_RESULT(hitTestResult));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(hitTestResult));
+
+ test->m_mouseTargetHitTestResult = hitTestResult;
+ test->m_mouseTargetModifiers = modifiers;
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ static gboolean permissionRequested(WebKitWebView*, WebKitPermissionRequest* request, UIClientTest* test)
+ {
+ g_assert(WEBKIT_IS_PERMISSION_REQUEST(request));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+
+ if (test->m_verifyMediaTypes && WEBKIT_IS_USER_MEDIA_PERMISSION_REQUEST(request)) {
+ WebKitUserMediaPermissionRequest* userMediaRequest = WEBKIT_USER_MEDIA_PERMISSION_REQUEST(request);
+ g_assert(webkit_user_media_permission_is_for_audio_device(userMediaRequest) == test->m_expectedAudioMedia);
+ g_assert(webkit_user_media_permission_is_for_video_device(userMediaRequest) == test->m_expectedVideoMedia);
+ }
+
+ if (test->m_allowPermissionRequests)
+ webkit_permission_request_allow(request);
+ else
+ webkit_permission_request_deny(request);
+
+ return TRUE;
+ }
+
+ UIClientTest()
+ : m_scriptDialogType(WEBKIT_SCRIPT_DIALOG_ALERT)
+ , m_scriptDialogConfirmed(true)
+ , m_allowPermissionRequests(false)
+ , m_verifyMediaTypes(false)
+ , m_expectedAudioMedia(false)
+ , m_expectedVideoMedia(false)
+ , m_mouseTargetModifiers(0)
+ {
+ webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(m_webView), TRUE);
+ g_signal_connect(m_webView, "create", G_CALLBACK(viewCreateCallback), this);
+ g_signal_connect(m_webView, "script-dialog", G_CALLBACK(scriptDialog), this);
+ g_signal_connect(m_webView, "mouse-target-changed", G_CALLBACK(mouseTargetChanged), this);
+ g_signal_connect(m_webView, "permission-request", G_CALLBACK(permissionRequested), this);
+ }
+
+ ~UIClientTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ static void tryWebViewCloseCallback(UIClientTest* test)
+ {
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ void tryCloseAndWaitUntilClosed()
+ {
+ gulong handler = g_signal_connect_swapped(m_webView, "close", G_CALLBACK(tryWebViewCloseCallback), this);
+ // Use an idle because webkit_web_view_try_close can emit the close signal in the
+ // current run loop iteration.
+ g_idle_add([](gpointer data) -> gboolean {
+ webkit_web_view_try_close(WEBKIT_WEB_VIEW(data));
+ return G_SOURCE_REMOVE;
+ }, m_webView);
+ g_main_loop_run(m_mainLoop);
+ g_signal_handler_disconnect(m_webView, handler);
+ }
+
+ void waitUntilMainLoopFinishes()
+ {
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void setExpectedWindowProperties(const WindowProperties& windowProperties)
+ {
+ m_windowProperties = windowProperties;
+ }
+
+ WebKitHitTestResult* moveMouseAndWaitUntilMouseTargetChanged(int x, int y, unsigned mouseModifiers = 0)
+ {
+ mouseMoveTo(x, y, mouseModifiers);
+ g_main_loop_run(m_mainLoop);
+ return m_mouseTargetHitTestResult.get();
+ }
+
+ virtual GtkWidget* viewCreate(WebKitWebView* webView, WebKitNavigationAction* navigation)
+ {
+ g_assert(webView == m_webView);
+ g_assert(navigation);
+
+ GtkWidget* newWebView = webkit_web_view_new_with_context(webkit_web_view_get_context(webView));
+ g_object_ref_sink(newWebView);
+
+ m_webViewEvents.append(Create);
+
+ WebKitWindowProperties* windowProperties = webkit_web_view_get_window_properties(WEBKIT_WEB_VIEW(newWebView));
+ g_assert(windowProperties);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(windowProperties));
+ m_windowPropertiesChanged.clear();
+
+ g_signal_connect(windowProperties, "notify", G_CALLBACK(windowPropertiesNotifyCallback), this);
+ g_signal_connect(newWebView, "ready-to-show", G_CALLBACK(viewReadyToShowCallback), this);
+ g_signal_connect(newWebView, "close", G_CALLBACK(viewCloseCallback), this);
+
+ return newWebView;
+ }
+
+ virtual void viewReadyToShow(WebKitWebView* webView)
+ {
+ g_assert(webView != m_webView);
+
+ WebKitWindowProperties* windowProperties = webkit_web_view_get_window_properties(webView);
+ g_assert(windowProperties);
+ if (!m_windowProperties.isNull())
+ WindowProperties(windowProperties).assertEqual(m_windowProperties);
+
+ m_webViewEvents.append(ReadyToShow);
+ }
+
+ virtual void viewClose(WebKitWebView* webView)
+ {
+ g_assert(webView != m_webView);
+
+ m_webViewEvents.append(Close);
+ g_object_unref(webView);
+
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ Vector<WebViewEvents> m_webViewEvents;
+ WebKitScriptDialogType m_scriptDialogType;
+ bool m_scriptDialogConfirmed;
+ bool m_allowPermissionRequests;
+ gboolean m_verifyMediaTypes;
+ gboolean m_expectedAudioMedia;
+ gboolean m_expectedVideoMedia;
+ WindowProperties m_windowProperties;
+ HashSet<WTF::String> m_windowPropertiesChanged;
+ GRefPtr<WebKitHitTestResult> m_mouseTargetHitTestResult;
+ unsigned m_mouseTargetModifiers;
+};
+
+static void testWebViewCreateReadyClose(UIClientTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body onLoad=\"window.open().close();\"></html>", 0);
+ test->waitUntilMainLoopFinishes();
+
+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents;
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, UIClientTest::Create);
+ g_assert_cmpint(events[1], ==, UIClientTest::ReadyToShow);
+ g_assert_cmpint(events[2], ==, UIClientTest::Close);
+}
+
+class CreateNavigationDataTest: public UIClientTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(CreateNavigationDataTest);
+
+ CreateNavigationDataTest()
+ : m_navigation(nullptr)
+ {
+ }
+
+ ~CreateNavigationDataTest()
+ {
+ clearNavigation();
+ }
+
+ void clearNavigation()
+ {
+ if (m_navigation)
+ webkit_navigation_action_free(m_navigation);
+ m_navigation = nullptr;
+ }
+
+ GtkWidget* viewCreate(WebKitWebView* webView, WebKitNavigationAction* navigation)
+ {
+ g_assert(navigation);
+ g_assert(!m_navigation);
+ m_navigation = webkit_navigation_action_copy(navigation);
+ g_main_loop_quit(m_mainLoop);
+ return nullptr;
+ }
+
+ void loadHTML(const char* html)
+ {
+ clearNavigation();
+ WebViewTest::loadHtml(html, nullptr);
+ }
+
+ void clickAndWaitUntilMainLoopFinishes(int x, int y)
+ {
+ clearNavigation();
+ clickMouseButton(x, y, 1);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ WebKitNavigationAction* m_navigation;
+};
+
+static void testWebViewCreateNavigationData(CreateNavigationDataTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ test->loadHTML(
+ "<html><body>"
+ "<input style=\"position:absolute; left:0; top:0; margin:0; padding:0\" type=\"button\" value=\"click to show a popup\" onclick=\"window.open('data:foo');\"/>"
+ "<a style=\"position:absolute; left:20; top:20;\" href=\"data:bar\" target=\"_blank\">popup link</a>"
+ "</body></html>");
+ test->waitUntilLoadFinished();
+
+ // Click on a button.
+ test->clickAndWaitUntilMainLoopFinishes(5, 5);
+ g_assert_cmpstr(webkit_uri_request_get_uri(webkit_navigation_action_get_request(test->m_navigation)), ==, "data:foo");
+ g_assert_cmpuint(webkit_navigation_action_get_navigation_type(test->m_navigation), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
+ // FIXME: This should be button 1.
+ g_assert_cmpuint(webkit_navigation_action_get_mouse_button(test->m_navigation), ==, 0);
+ g_assert_cmpuint(webkit_navigation_action_get_modifiers(test->m_navigation), ==, 0);
+ g_assert(webkit_navigation_action_is_user_gesture(test->m_navigation));
+
+ // Click on a link.
+ test->clickAndWaitUntilMainLoopFinishes(21, 21);
+ g_assert_cmpstr(webkit_uri_request_get_uri(webkit_navigation_action_get_request(test->m_navigation)), ==, "data:bar");
+ g_assert_cmpuint(webkit_navigation_action_get_navigation_type(test->m_navigation), ==, WEBKIT_NAVIGATION_TYPE_LINK_CLICKED);
+ g_assert_cmpuint(webkit_navigation_action_get_mouse_button(test->m_navigation), ==, 1);
+ g_assert_cmpuint(webkit_navigation_action_get_modifiers(test->m_navigation), ==, 0);
+ g_assert(webkit_navigation_action_is_user_gesture(test->m_navigation));
+
+ // No user interaction.
+ test->loadHTML("<html><body onLoad=\"window.open();\"></html>");
+ test->waitUntilMainLoopFinishes();
+
+ g_assert_cmpstr(webkit_uri_request_get_uri(webkit_navigation_action_get_request(test->m_navigation)), ==, "");
+ g_assert_cmpuint(webkit_navigation_action_get_navigation_type(test->m_navigation), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
+ g_assert_cmpuint(webkit_navigation_action_get_mouse_button(test->m_navigation), ==, 0);
+ g_assert_cmpuint(webkit_navigation_action_get_modifiers(test->m_navigation), ==, 0);
+ g_assert(!webkit_navigation_action_is_user_gesture(test->m_navigation));
+}
+
+static gboolean checkMimeTypeForFilter(GtkFileFilter* filter, const gchar* mimeType)
+{
+ GtkFileFilterInfo filterInfo;
+ filterInfo.contains = GTK_FILE_FILTER_MIME_TYPE;
+ filterInfo.mime_type = mimeType;
+ return gtk_file_filter_filter(filter, &filterInfo);
+}
+
+class ModalDialogsTest: public UIClientTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ModalDialogsTest);
+
+ static void dialogRunAsModalCallback(WebKitWebView* webView, ModalDialogsTest* test)
+ {
+ g_assert(webView != test->m_webView);
+ test->m_webViewEvents.append(RunAsModal);
+ }
+
+ GtkWidget* viewCreate(WebKitWebView* webView, WebKitNavigationAction* navigation)
+ {
+ g_assert(webView == m_webView);
+
+ GtkWidget* newWebView = UIClientTest::viewCreate(webView, navigation);
+ g_signal_connect(newWebView, "run-as-modal", G_CALLBACK(dialogRunAsModalCallback), this);
+ return newWebView;
+ }
+
+ void viewReadyToShow(WebKitWebView* webView)
+ {
+ g_assert(webView != m_webView);
+ m_webViewEvents.append(ReadyToShow);
+ }
+};
+
+static void testWebViewAllowModalDialogs(ModalDialogsTest* test, gconstpointer)
+{
+ WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
+ webkit_settings_set_allow_modal_dialogs(settings, TRUE);
+
+ test->loadHtml("<html><body onload=\"window.showModalDialog('data:text/html,<html><body/><script>window.close();</script></html>')\"></body></html>", 0);
+ test->waitUntilMainLoopFinishes();
+
+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents;
+ g_assert_cmpint(events.size(), ==, 4);
+ g_assert_cmpint(events[0], ==, UIClientTest::Create);
+ g_assert_cmpint(events[1], ==, UIClientTest::ReadyToShow);
+ g_assert_cmpint(events[2], ==, UIClientTest::RunAsModal);
+ g_assert_cmpint(events[3], ==, UIClientTest::Close);
+}
+
+static void testWebViewDisallowModalDialogs(ModalDialogsTest* test, gconstpointer)
+{
+ WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
+ webkit_settings_set_allow_modal_dialogs(settings, FALSE);
+
+ test->loadHtml("<html><body onload=\"window.showModalDialog('data:text/html,<html><body/><script>window.close();</script></html>')\"></body></html>", 0);
+ // We need to use a timeout here because the viewClose() function
+ // won't ever be called as the dialog won't be created.
+ test->wait(1);
+
+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents;
+ g_assert_cmpint(events.size(), ==, 0);
+}
+
+static void testWebViewJavaScriptDialogs(UIClientTest* test, gconstpointer)
+{
+ static const char* htmlOnLoadFormat = "<html><body onLoad=\"%s\"></body></html>";
+ static const char* jsAlertFormat = "alert('%s')";
+ static const char* jsConfirmFormat = "do { confirmed = confirm('%s'); } while (!confirmed); alert('confirmed');";
+ static const char* jsPromptFormat = "alert(prompt('%s', 'default'));";
+ static const char* htmlOnBeforeUnloadFormat =
+ "<html><body onbeforeunload=\"return beforeUnloadHandler();\"><script>function beforeUnloadHandler() { return \"%s\"; }</script></body></html>";
+
+ test->m_scriptDialogType = WEBKIT_SCRIPT_DIALOG_ALERT;
+ GUniquePtr<char> alertDialogMessage(g_strdup_printf(jsAlertFormat, kAlertDialogMessage));
+ GUniquePtr<char> alertHTML(g_strdup_printf(htmlOnLoadFormat, alertDialogMessage.get()));
+ test->loadHtml(alertHTML.get(), 0);
+ test->waitUntilMainLoopFinishes();
+ webkit_web_view_stop_loading(test->m_webView);
+ test->waitUntilLoadFinished();
+
+ test->m_scriptDialogType = WEBKIT_SCRIPT_DIALOG_CONFIRM;
+ GUniquePtr<char> confirmDialogMessage(g_strdup_printf(jsConfirmFormat, kConfirmDialogMessage));
+ GUniquePtr<char> confirmHTML(g_strdup_printf(htmlOnLoadFormat, confirmDialogMessage.get()));
+ test->loadHtml(confirmHTML.get(), 0);
+ test->waitUntilMainLoopFinishes();
+ webkit_web_view_stop_loading(test->m_webView);
+ test->waitUntilLoadFinished();
+
+ test->m_scriptDialogType = WEBKIT_SCRIPT_DIALOG_PROMPT;
+ GUniquePtr<char> promptDialogMessage(g_strdup_printf(jsPromptFormat, kPromptDialogMessage));
+ GUniquePtr<char> promptHTML(g_strdup_printf(htmlOnLoadFormat, promptDialogMessage.get()));
+ test->loadHtml(promptHTML.get(), 0);
+ test->waitUntilMainLoopFinishes();
+ webkit_web_view_stop_loading(test->m_webView);
+ test->waitUntilLoadFinished();
+
+ test->m_scriptDialogType = WEBKIT_SCRIPT_DIALOG_BEFORE_UNLOAD_CONFIRM;
+ GUniquePtr<char> beforeUnloadDialogHTML(g_strdup_printf(htmlOnBeforeUnloadFormat, kBeforeUnloadConfirmDialogMessage));
+ test->loadHtml(beforeUnloadDialogHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ // Reload should trigger onbeforeunload.
+#if 0
+ // FIXME: reloading HTML data doesn't emit finished load event.
+ // See https://bugs.webkit.org/show_bug.cgi?id=139089.
+ test->m_scriptDialogConfirmed = false;
+ webkit_web_view_reload(test->m_webView);
+ test->waitUntilLoadFinished();
+ g_assert(test->m_scriptDialogConfirmed);
+#endif
+
+ // Navigation should trigger onbeforeunload.
+ test->m_scriptDialogConfirmed = false;
+ test->loadHtml("<html></html>", nullptr);
+ test->waitUntilLoadFinished();
+ g_assert(test->m_scriptDialogConfirmed);
+
+ // Try close should trigger onbeforeunload.
+ test->m_scriptDialogConfirmed = false;
+ test->loadHtml(beforeUnloadDialogHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+ test->tryCloseAndWaitUntilClosed();
+ g_assert(test->m_scriptDialogConfirmed);
+
+ // Try close on a page with no unload handlers should not trigger onbeforeunload,
+ // but should actually close the page.
+ test->m_scriptDialogConfirmed = false;
+ test->loadHtml("<html><body></body></html>", nullptr);
+ test->waitUntilLoadFinished();
+ // We got a onbeforeunload of the previous page.
+ g_assert(test->m_scriptDialogConfirmed);
+ test->m_scriptDialogConfirmed = false;
+ test->tryCloseAndWaitUntilClosed();
+ g_assert(!test->m_scriptDialogConfirmed);
+}
+
+static void testWebViewWindowProperties(UIClientTest* test, gconstpointer)
+{
+ static const char* windowProrpertiesString = "left=100,top=150,width=400,height=400,location=no,menubar=no,status=no,toolbar=no,scrollbars=no";
+ GdkRectangle geometry = { 100, 150, 400, 400 };
+ test->setExpectedWindowProperties(UIClientTest::WindowProperties(&geometry, false, false, false, false, false, true, false));
+
+ GUniquePtr<char> htmlString(g_strdup_printf("<html><body onLoad=\"window.open('', '', '%s').close();\"></body></html>", windowProrpertiesString));
+ test->loadHtml(htmlString.get(), 0);
+ test->waitUntilMainLoopFinishes();
+
+ static const char* propertiesChanged[] = {
+ "geometry", "locationbar-visible", "menubar-visible", "statusbar-visible", "toolbar-visible", "scrollbars-visible"
+ };
+ for (size_t i = 0; i < G_N_ELEMENTS(propertiesChanged); ++i)
+ g_assert(test->m_windowPropertiesChanged.contains(propertiesChanged[i]));
+
+ Vector<UIClientTest::WebViewEvents>& events = test->m_webViewEvents;
+ g_assert_cmpint(events.size(), ==, 3);
+ g_assert_cmpint(events[0], ==, UIClientTest::Create);
+ g_assert_cmpint(events[1], ==, UIClientTest::ReadyToShow);
+ g_assert_cmpint(events[2], ==, UIClientTest::Close);
+}
+
+static void testWebViewMouseTarget(UIClientTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+
+ const char* linksHoveredHTML =
+ "<html><head>"
+ " <script>"
+ " window.onload = function () {"
+ " window.getSelection().removeAllRanges();"
+ " var select_range = document.createRange();"
+ " select_range.selectNodeContents(document.getElementById('text_to_select'));"
+ " window.getSelection().addRange(select_range);"
+ " }"
+ " </script>"
+ "</head><body>"
+ " <a style='position:absolute; left:1; top:1' href='http://www.webkitgtk.org' title='WebKitGTK+ Title'>WebKitGTK+ Website</a>"
+ " <img style='position:absolute; left:1; top:10' src='0xdeadbeef' width=5 height=5></img>"
+ " <a style='position:absolute; left:1; top:20' href='http://www.webkitgtk.org/logo' title='WebKitGTK+ Logo'><img src='0xdeadbeef' width=5 height=5></img></a>"
+ " <input style='position:absolute; left:1; top:30' size='10'></input>"
+ " <video style='position:absolute; left:1; top:100' width='300' height='300' controls='controls' preload='none'><source src='movie.ogg' type='video/ogg' /></video>"
+ " <p style='position:absolute; left:1; top:120' id='text_to_select'>Lorem ipsum.</p>"
+ "</body></html>";
+
+ test->loadHtml(linksHoveredHTML, "file:///");
+ test->waitUntilLoadFinished();
+
+ // Move over link.
+ WebKitHitTestResult* hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(1, 1);
+ g_assert(webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert_cmpstr(webkit_hit_test_result_get_link_uri(hitTestResult), ==, "http://www.webkitgtk.org/");
+ g_assert_cmpstr(webkit_hit_test_result_get_link_title(hitTestResult), ==, "WebKitGTK+ Title");
+ g_assert_cmpstr(webkit_hit_test_result_get_link_label(hitTestResult), ==, "WebKitGTK+ Website");
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Move out of the link.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(0, 0);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Move over image with GDK_CONTROL_MASK.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(1, 10, GDK_CONTROL_MASK);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert_cmpstr(webkit_hit_test_result_get_image_uri(hitTestResult), ==, "file:///0xdeadbeef");
+ g_assert(test->m_mouseTargetModifiers & GDK_CONTROL_MASK);
+
+ // Move over image link.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(1, 20);
+ g_assert(webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert_cmpstr(webkit_hit_test_result_get_link_uri(hitTestResult), ==, "http://www.webkitgtk.org/logo");
+ g_assert_cmpstr(webkit_hit_test_result_get_image_uri(hitTestResult), ==, "file:///0xdeadbeef");
+ g_assert_cmpstr(webkit_hit_test_result_get_link_title(hitTestResult), ==, "WebKitGTK+ Logo");
+ g_assert(!webkit_hit_test_result_get_link_label(hitTestResult));
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Move over media.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(1, 100);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert_cmpstr(webkit_hit_test_result_get_media_uri(hitTestResult), ==, "file:///movie.ogg");
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Mover over input.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(5, 35);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Move over scrollbar.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(gtk_widget_get_allocated_width(GTK_WIDGET(test->m_webView)) - 4, 5);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert(!test->m_mouseTargetModifiers);
+
+ // Move over selection.
+ hitTestResult = test->moveMouseAndWaitUntilMouseTargetChanged(2, 145);
+ g_assert(!webkit_hit_test_result_context_is_link(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_image(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_media(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_editable(hitTestResult));
+ g_assert(!webkit_hit_test_result_context_is_scrollbar(hitTestResult));
+ g_assert(webkit_hit_test_result_context_is_selection(hitTestResult));
+ g_assert(!test->m_mouseTargetModifiers);
+
+}
+
+static void testWebViewGeolocationPermissionRequests(UIClientTest* test, gconstpointer)
+{
+ // Some versions of geoclue give a runtime warning because it tries
+ // to register the error quark twice. See https://bugs.webkit.org/show_bug.cgi?id=89858.
+ // Make warnings non-fatal for this test to make it pass.
+ test->removeLogFatalFlag(G_LOG_LEVEL_WARNING);
+ test->showInWindowAndWaitUntilMapped();
+ static const char* geolocationRequestHTML =
+ "<html>"
+ " <script>"
+ " function runTest()"
+ " {"
+ " navigator.geolocation.getCurrentPosition(function(p) { document.title = \"OK\" },"
+ " function(e) { document.title = e.code });"
+ " }"
+ " </script>"
+ " <body onload='runTest();'></body>"
+ "</html>";
+
+ // Test denying a permission request.
+ test->m_allowPermissionRequests = false;
+ test->loadHtml(geolocationRequestHTML, "http://foo.com/bar");
+ test->waitUntilTitleChanged();
+
+ // According to the Geolocation API specification, '1' is the
+ // error code returned for the PERMISSION_DENIED error.
+ // http://dev.w3.org/geo/api/spec-source.html#position_error_interface
+ const gchar* result = webkit_web_view_get_title(test->m_webView);
+ g_assert_cmpstr(result, ==, "1");
+
+ // Test allowing a permission request.
+ test->m_allowPermissionRequests = true;
+ test->loadHtml(geolocationRequestHTML, 0);
+ test->waitUntilTitleChanged();
+
+ // Check that we did not get the PERMISSION_DENIED error now.
+ result = webkit_web_view_get_title(test->m_webView);
+ g_assert_cmpstr(result, !=, "1");
+ test->addLogFatalFlag(G_LOG_LEVEL_WARNING);
+}
+
+#if ENABLE(MEDIA_STREAM)
+static void testWebViewUserMediaPermissionRequests(UIClientTest* test, gconstpointer)
+{
+ WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
+ gboolean enabled = webkit_settings_get_enable_media_stream(settings);
+ webkit_settings_set_enable_media_stream(settings, TRUE);
+
+ test->showInWindowAndWaitUntilMapped();
+ static const char* userMediaRequestHTML =
+ "<html>"
+ " <script>"
+ " function runTest()"
+ " {"
+ " navigator.webkitGetUserMedia({audio: true, video: true},"
+ " function(s) { document.title = \"OK\" },"
+ " function(e) { document.title = e.name });"
+ " }"
+ " </script>"
+ " <body onload='runTest();'></body>"
+ "</html>";
+
+ test->m_verifyMediaTypes = TRUE;
+ test->m_expectedAudioMedia = TRUE;
+ test->m_expectedVideoMedia = TRUE;
+
+ // Test denying a permission request.
+ test->m_allowPermissionRequests = false;
+ test->loadHtml(userMediaRequestHTML, nullptr);
+ test->waitUntilTitleChangedTo("PermissionDeniedError");
+
+ // Test allowing a permission request.
+ test->m_allowPermissionRequests = true;
+ test->loadHtml(userMediaRequestHTML, nullptr);
+ test->waitUntilTitleChangedTo("OK");
+
+ webkit_settings_set_enable_media_stream(settings, enabled);
+}
+
+static void testWebViewAudioOnlyUserMediaPermissionRequests(UIClientTest* test, gconstpointer)
+{
+ WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
+ gboolean enabled = webkit_settings_get_enable_media_stream(settings);
+ webkit_settings_set_enable_media_stream(settings, TRUE);
+
+ test->showInWindowAndWaitUntilMapped();
+ static const char* userMediaRequestHTML =
+ "<html>"
+ " <script>"
+ " function runTest()"
+ " {"
+ " navigator.webkitGetUserMedia({audio: true, video: false},"
+ " function(s) { document.title = \"OK\" },"
+ " function(e) { document.title = e.name });"
+ " }"
+ " </script>"
+ " <body onload='runTest();'></body>"
+ "</html>";
+
+ test->m_verifyMediaTypes = TRUE;
+ test->m_expectedAudioMedia = TRUE;
+ test->m_expectedVideoMedia = FALSE;
+
+ // Test denying a permission request.
+ test->m_allowPermissionRequests = false;
+ test->loadHtml(userMediaRequestHTML, nullptr);
+ test->waitUntilTitleChangedTo("PermissionDeniedError");
+
+ webkit_settings_set_enable_media_stream(settings, enabled);
+}
+#endif // ENABLE(MEDIA_STREAM)
+
+class FileChooserTest: public UIClientTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(FileChooserTest);
+
+ FileChooserTest()
+ {
+ g_signal_connect(m_webView, "run-file-chooser", G_CALLBACK(runFileChooserCallback), this);
+ }
+
+ static gboolean runFileChooserCallback(WebKitWebView*, WebKitFileChooserRequest* request, FileChooserTest* test)
+ {
+ test->runFileChooser(request);
+ return TRUE;
+ }
+
+ void runFileChooser(WebKitFileChooserRequest* request)
+ {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ m_fileChooserRequest = request;
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ WebKitFileChooserRequest* clickMouseButtonAndWaitForFileChooserRequest(int x, int y)
+ {
+ clickMouseButton(x, y);
+ g_main_loop_run(m_mainLoop);
+ return m_fileChooserRequest.get();
+ }
+
+private:
+ GRefPtr<WebKitFileChooserRequest> m_fileChooserRequest;
+};
+
+static void testWebViewFileChooserRequest(FileChooserTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+ static const char* fileChooserHTMLFormat = "<html><body><input style='position:absolute;left:0;top:0;margin:0;padding:0' type='file' %s/></body></html>";
+
+ // Multiple selections not allowed, no MIME filtering.
+ GUniquePtr<char> simpleFileUploadHTML(g_strdup_printf(fileChooserHTMLFormat, ""));
+ test->loadHtml(simpleFileUploadHTML.get(), 0);
+ test->waitUntilLoadFinished();
+ WebKitFileChooserRequest* fileChooserRequest = test->clickMouseButtonAndWaitForFileChooserRequest(5, 5);
+ g_assert(!webkit_file_chooser_request_get_select_multiple(fileChooserRequest));
+
+ const gchar* const* mimeTypes = webkit_file_chooser_request_get_mime_types(fileChooserRequest);
+ g_assert(!mimeTypes);
+ GtkFileFilter* filter = webkit_file_chooser_request_get_mime_types_filter(fileChooserRequest);
+ g_assert(!filter);
+ const gchar* const* selectedFiles = webkit_file_chooser_request_get_selected_files(fileChooserRequest);
+ g_assert(!selectedFiles);
+ webkit_file_chooser_request_cancel(fileChooserRequest);
+
+ // Multiple selections allowed, no MIME filtering, some pre-selected files.
+ GUniquePtr<char> multipleSelectionFileUploadHTML(g_strdup_printf(fileChooserHTMLFormat, "multiple"));
+ test->loadHtml(multipleSelectionFileUploadHTML.get(), 0);
+ test->waitUntilLoadFinished();
+ fileChooserRequest = test->clickMouseButtonAndWaitForFileChooserRequest(5, 5);
+ g_assert(webkit_file_chooser_request_get_select_multiple(fileChooserRequest));
+
+ mimeTypes = webkit_file_chooser_request_get_mime_types(fileChooserRequest);
+ g_assert(!mimeTypes);
+ filter = webkit_file_chooser_request_get_mime_types_filter(fileChooserRequest);
+ g_assert(!filter);
+ selectedFiles = webkit_file_chooser_request_get_selected_files(fileChooserRequest);
+ g_assert(!selectedFiles);
+
+ // Select some files.
+ const gchar* filesToSelect[4] = { "/foo", "/foo/bar", "/foo/bar/baz", 0 };
+ webkit_file_chooser_request_select_files(fileChooserRequest, filesToSelect);
+
+ // Check the files that have been just selected.
+ selectedFiles = webkit_file_chooser_request_get_selected_files(fileChooserRequest);
+ g_assert(selectedFiles);
+ g_assert_cmpstr(selectedFiles[0], ==, "/foo");
+ g_assert_cmpstr(selectedFiles[1], ==, "/foo/bar");
+ g_assert_cmpstr(selectedFiles[2], ==, "/foo/bar/baz");
+ g_assert(!selectedFiles[3]);
+
+ // Perform another request to check if the list of files selected
+ // in the previous step appears now as part of the new request.
+ fileChooserRequest = test->clickMouseButtonAndWaitForFileChooserRequest(5, 5);
+ selectedFiles = webkit_file_chooser_request_get_selected_files(fileChooserRequest);
+ g_assert(selectedFiles);
+ g_assert_cmpstr(selectedFiles[0], ==, "/foo");
+ g_assert_cmpstr(selectedFiles[1], ==, "/foo/bar");
+ g_assert_cmpstr(selectedFiles[2], ==, "/foo/bar/baz");
+ g_assert(!selectedFiles[3]);
+ webkit_file_chooser_request_cancel(fileChooserRequest);
+
+ // Multiple selections not allowed, only accept images, audio and video files..
+ GUniquePtr<char> mimeFilteredFileUploadHTML(g_strdup_printf(fileChooserHTMLFormat, "accept='audio/*,video/*,image/*'"));
+ test->loadHtml(mimeFilteredFileUploadHTML.get(), 0);
+ test->waitUntilLoadFinished();
+ fileChooserRequest = test->clickMouseButtonAndWaitForFileChooserRequest(5, 5);
+ g_assert(!webkit_file_chooser_request_get_select_multiple(fileChooserRequest));
+
+ mimeTypes = webkit_file_chooser_request_get_mime_types(fileChooserRequest);
+ g_assert(mimeTypes);
+ g_assert_cmpstr(mimeTypes[0], ==, "audio/*");
+ g_assert_cmpstr(mimeTypes[1], ==, "video/*");
+ g_assert_cmpstr(mimeTypes[2], ==, "image/*");
+ g_assert(!mimeTypes[3]);
+
+ filter = webkit_file_chooser_request_get_mime_types_filter(fileChooserRequest);
+ g_assert(GTK_IS_FILE_FILTER(filter));
+ g_assert(checkMimeTypeForFilter(filter, "audio/*"));
+ g_assert(checkMimeTypeForFilter(filter, "video/*"));
+ g_assert(checkMimeTypeForFilter(filter, "image/*"));
+
+ selectedFiles = webkit_file_chooser_request_get_selected_files(fileChooserRequest);
+ g_assert(!selectedFiles);
+ webkit_file_chooser_request_cancel(fileChooserRequest);
+}
+
+class ColorChooserTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(ColorChooserTest);
+
+ static gboolean runColorChooserCallback(WebKitWebView*, WebKitColorChooserRequest* request, ColorChooserTest* test)
+ {
+ test->runColorChooser(request);
+ return TRUE;
+ }
+
+ static void requestFinishedCallback(WebKitColorChooserRequest* request, ColorChooserTest* test)
+ {
+ g_assert(test->m_request.get() == request);
+ test->m_request = nullptr;
+ if (g_main_loop_is_running(test->m_mainLoop))
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ ColorChooserTest()
+ {
+ g_signal_connect(m_webView, "run-color-chooser", G_CALLBACK(runColorChooserCallback), this);
+ }
+
+ void runColorChooser(WebKitColorChooserRequest* request)
+ {
+ g_assert(WEBKIT_IS_COLOR_CHOOSER_REQUEST(request));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ m_request = request;
+ g_signal_connect(request, "finished", G_CALLBACK(requestFinishedCallback), this);
+ g_main_loop_quit(m_mainLoop);
+ }
+
+ void finishRequest()
+ {
+ g_assert(m_request.get());
+ webkit_color_chooser_request_finish(m_request.get());
+ g_assert(!m_request);
+ }
+
+ void cancelRequest()
+ {
+ g_assert(m_request.get());
+ webkit_color_chooser_request_cancel(m_request.get());
+ g_assert(!m_request);
+ }
+
+ WebKitColorChooserRequest* clickMouseButtonAndWaitForColorChooserRequest(int x, int y)
+ {
+ clickMouseButton(x, y);
+ g_main_loop_run(m_mainLoop);
+ g_assert(m_request.get());
+ return m_request.get();
+ }
+
+private:
+ GRefPtr<WebKitColorChooserRequest> m_request;
+};
+
+static void testWebViewColorChooserRequest(ColorChooserTest* test, gconstpointer)
+{
+ static const char* colorChooserHTMLFormat = "<html><body><input style='position:absolute;left:1;top:1;margin:0;padding:0;width:45;height:25' type='color' %s/></body></html>";
+ test->showInWindowAndWaitUntilMapped();
+
+ GUniquePtr<char> defaultColorHTML(g_strdup_printf(colorChooserHTMLFormat, ""));
+ test->loadHtml(defaultColorHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+ WebKitColorChooserRequest* request = test->clickMouseButtonAndWaitForColorChooserRequest(5, 5);
+
+ // Default color is black (#000000).
+ GdkRGBA rgba1;
+ GdkRGBA rgba2 = { 0., 0., 0., 1. };
+ webkit_color_chooser_request_get_rgba(request, &rgba1);
+ g_assert(gdk_rgba_equal(&rgba1, &rgba2));
+
+ // Set a different color.
+ rgba2.green = 1;
+ webkit_color_chooser_request_set_rgba(request, &rgba2);
+ webkit_color_chooser_request_get_rgba(request, &rgba1);
+ g_assert(gdk_rgba_equal(&rgba1, &rgba2));
+
+ GdkRectangle rect;
+ webkit_color_chooser_request_get_element_rectangle(request, &rect);
+ g_assert_cmpint(rect.x, == , 1);
+ g_assert_cmpint(rect.y, == , 1);
+ g_assert_cmpint(rect.width, == , 45);
+ g_assert_cmpint(rect.height, == , 25);
+
+ test->finishRequest();
+
+ // Use an initial color.
+ GUniquePtr<char> initialColorHTML(g_strdup_printf(colorChooserHTMLFormat, "value='#FF00FF'"));
+ test->loadHtml(initialColorHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+ request = test->clickMouseButtonAndWaitForColorChooserRequest(5, 5);
+
+ webkit_color_chooser_request_get_rgba(request, &rgba1);
+ GdkRGBA rgba3 = { 1., 0., 1., 1. };
+ g_assert(gdk_rgba_equal(&rgba1, &rgba3));
+
+ test->cancelRequest();
+}
+
+void beforeAll()
+{
+ UIClientTest::add("WebKitWebView", "create-ready-close", testWebViewCreateReadyClose);
+ CreateNavigationDataTest::add("WebKitWebView", "create-navigation-data", testWebViewCreateNavigationData);
+ ModalDialogsTest::add("WebKitWebView", "allow-modal-dialogs", testWebViewAllowModalDialogs);
+ ModalDialogsTest::add("WebKitWebView", "disallow-modal-dialogs", testWebViewDisallowModalDialogs);
+ UIClientTest::add("WebKitWebView", "javascript-dialogs", testWebViewJavaScriptDialogs);
+ UIClientTest::add("WebKitWebView", "window-properties", testWebViewWindowProperties);
+ UIClientTest::add("WebKitWebView", "mouse-target", testWebViewMouseTarget);
+ UIClientTest::add("WebKitWebView", "geolocation-permission-requests", testWebViewGeolocationPermissionRequests);
+#if ENABLE(MEDIA_STREAM)
+ UIClientTest::add("WebKitWebView", "usermedia-permission-requests", testWebViewUserMediaPermissionRequests);
+ UIClientTest::add("WebKitWebView", "audio-usermedia-permission-request", testWebViewAudioOnlyUserMediaPermissionRequests);
+#endif
+ FileChooserTest::add("WebKitWebView", "file-chooser-request", testWebViewFileChooserRequest);
+ ColorChooserTest::add("WebKitWebView", "color-chooser-request", testWebViewColorChooserRequest);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp
new file mode 100644
index 000000000..b41e5eb82
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebExtensions.cpp
@@ -0,0 +1,232 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "WebKitTestBus.h"
+#include "WebViewTest.h"
+#include <wtf/glib/GRefPtr.h>
+
+static const char* webExtensionsUserData = "Web Extensions user data";
+static WebKitTestBus* bus;
+static GUniquePtr<char> scriptDialogResult;
+
+static void testWebExtensionGetTitle(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><head><title>WebKitGTK+ Web Extensions Test</title></head><body></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", test->m_mainLoop));
+ GRefPtr<GVariant> result = adoptGRef(g_dbus_proxy_call_sync(
+ proxy.get(),
+ "GetTitle",
+ g_variant_new("(t)", webkit_web_view_get_page_id(test->m_webView)),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, 0, 0));
+ g_assert(result);
+
+ const char* title;
+ g_variant_get(result.get(), "(&s)", &title);
+ g_assert_cmpstr(title, ==, "WebKitGTK+ Web Extensions Test");
+}
+
+static void documentLoadedCallback(GDBusConnection*, const char*, const char*, const char*, const char*, GVariant*, WebViewTest* test)
+{
+ g_main_loop_quit(test->m_mainLoop);
+}
+
+static void testDocumentLoadedSignal(WebViewTest* test, gconstpointer)
+{
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", test->m_mainLoop));
+ GDBusConnection* connection = g_dbus_proxy_get_connection(proxy.get());
+ guint id = g_dbus_connection_signal_subscribe(connection,
+ 0,
+ "org.webkit.gtk.WebExtensionTest",
+ "DocumentLoaded",
+ "/org/webkit/gtk/WebExtensionTest",
+ 0,
+ G_DBUS_SIGNAL_FLAGS_NONE,
+ reinterpret_cast<GDBusSignalCallback>(documentLoadedCallback),
+ test,
+ 0);
+ g_assert(id);
+
+ test->loadHtml("<html><head><title>WebKitGTK+ Web Extensions Test</title></head><body></body></html>", 0);
+ g_main_loop_run(test->m_mainLoop);
+ g_dbus_connection_signal_unsubscribe(connection, id);
+}
+
+static gboolean webProcessCrashedCallback(WebKitWebView*, WebViewTest* test)
+{
+ test->quitMainLoop();
+
+ return FALSE;
+}
+
+static void testWebKitWebViewProcessCrashed(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html></html>", 0);
+ test->waitUntilLoadFinished();
+
+ g_signal_connect_after(test->m_webView, "web-process-crashed",
+ G_CALLBACK(webProcessCrashedCallback), test);
+
+ test->m_expectedWebProcessCrash = true;
+
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", test->m_mainLoop));
+
+ GRefPtr<GVariant> result = adoptGRef(g_dbus_proxy_call_sync(
+ proxy.get(),
+ "AbortProcess",
+ 0,
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, 0, 0));
+ g_assert(!result);
+ g_main_loop_run(test->m_mainLoop);
+ test->m_expectedWebProcessCrash = false;
+}
+
+static void testWebExtensionWindowObjectCleared(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><header></header><body></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.echo('Foo');", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "Foo");
+}
+
+static gboolean scriptDialogCallback(WebKitWebView*, WebKitScriptDialog* dialog, gpointer)
+{
+ g_assert_cmpuint(webkit_script_dialog_get_dialog_type(dialog), ==, WEBKIT_SCRIPT_DIALOG_ALERT);
+ scriptDialogResult.reset(g_strdup(webkit_script_dialog_get_message(dialog)));
+ return TRUE;
+}
+
+static void runJavaScriptInIsolatedWorldFinishedCallback(GDBusProxy* proxy, GAsyncResult* result, WebViewTest* test)
+{
+ g_dbus_proxy_call_finish(proxy, result, 0);
+ g_main_loop_quit(test->m_mainLoop);
+}
+
+static void testWebExtensionIsolatedWorld(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><header></header><body><div id='console'></div></body></html>", 0);
+ test->waitUntilLoadFinished();
+
+ gulong scriptDialogID = g_signal_connect(test->m_webView, "script-dialog", G_CALLBACK(scriptDialogCallback), nullptr);
+
+ static const char* mainWorldScript =
+ "top.foo = 'Foo';\n"
+ "document.getElementById('console').innerHTML = top.foo;\n"
+ "window.open = function () { alert('Main World'); }\n"
+ "document.open(1, 2, 3);";
+ test->runJavaScriptAndWaitUntilFinished(mainWorldScript, 0);
+ g_assert_cmpstr(scriptDialogResult.get(), ==, "Main World");
+
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementById('console').innerHTML", 0);
+ g_assert(javascriptResult);
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "Foo");
+
+ static const char* isolatedWorldScript =
+ "document.getElementById('console').innerHTML = top.foo;\n"
+ "window.open = function () { alert('Isolated World'); }\n"
+ "document.open(1, 2, 3);";
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest" , "org.webkit.gtk.WebExtensionTest", test->m_mainLoop));
+ g_dbus_proxy_call(proxy.get(),
+ "RunJavaScriptInIsolatedWorld",
+ g_variant_new("(t&s)", webkit_web_view_get_page_id(test->m_webView), isolatedWorldScript),
+ G_DBUS_CALL_FLAGS_NONE,
+ -1, 0,
+ reinterpret_cast<GAsyncReadyCallback>(runJavaScriptInIsolatedWorldFinishedCallback),
+ test);
+ g_main_loop_run(test->m_mainLoop);
+ g_assert_cmpstr(scriptDialogResult.get(), ==, "Isolated World");
+
+ // Check that 'top.foo' defined in main world is not visible in isolated world.
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementById('console').innerHTML", 0);
+ g_assert(javascriptResult);
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "undefined");
+
+ g_signal_handler_disconnect(test->m_webView, scriptDialogID);
+}
+
+static gboolean permissionRequestCallback(WebKitWebView*, WebKitPermissionRequest* request, WebViewTest* test)
+{
+ if (!WEBKIT_IS_INSTALL_MISSING_MEDIA_PLUGINS_PERMISSION_REQUEST(request))
+ return FALSE;
+
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ WebKitInstallMissingMediaPluginsPermissionRequest* missingPluginsRequest = WEBKIT_INSTALL_MISSING_MEDIA_PLUGINS_PERMISSION_REQUEST(request);
+ g_assert(webkit_install_missing_media_plugins_permission_request_get_description(missingPluginsRequest));
+ webkit_permission_request_deny(request);
+ test->quitMainLoop();
+
+ return TRUE;
+}
+
+static void testInstallMissingPluginsPermissionRequest(WebViewTest* test, gconstpointer)
+{
+ GUniquePtr<char> extensionBusName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", Test::s_webExtensionID));
+ GRefPtr<GDBusProxy> proxy = adoptGRef(bus->createProxy(extensionBusName.get(),
+ "/org/webkit/gtk/WebExtensionTest", "org.webkit.gtk.WebExtensionTest", test->m_mainLoop));
+ GRefPtr<GVariant> result = adoptGRef(g_dbus_proxy_call_sync(proxy.get(), "RemoveAVPluginsFromGSTRegistry",
+ nullptr, G_DBUS_CALL_FLAGS_NONE, -1, nullptr, nullptr));
+
+ test->showInWindowAndWaitUntilMapped();
+
+ gulong permissionRequestSignalID = g_signal_connect(test->m_webView, "permission-request", G_CALLBACK(permissionRequestCallback), test);
+ // FIXME: the base URI needs to finish with / to work, that shouldn't happen.
+ GUniquePtr<char> baseURI(g_strconcat("file://", Test::getResourcesDir(Test::WebKit2Resources).data(), "/", nullptr));
+ test->loadHtml("<html><body><video src=\"test.mp4\" autoplay></video></body></html>", baseURI.get());
+ g_main_loop_run(test->m_mainLoop);
+ g_signal_handler_disconnect(test->m_webView, permissionRequestSignalID);
+}
+
+void beforeAll()
+{
+ bus = new WebKitTestBus();
+ if (!bus->run())
+ return;
+
+ WebViewTest::add("WebKitWebExtension", "dom-document-title", testWebExtensionGetTitle);
+ WebViewTest::add("WebKitWebExtension", "document-loaded-signal", testDocumentLoadedSignal);
+ WebViewTest::add("WebKitWebView", "web-process-crashed", testWebKitWebViewProcessCrashed);
+ WebViewTest::add("WebKitWebExtension", "window-object-cleared", testWebExtensionWindowObjectCleared);
+ WebViewTest::add("WebKitWebExtension", "isolated-world", testWebExtensionIsolatedWorld);
+ WebViewTest::add("WebKitWebView", "install-missing-plugins-permission-request", testInstallMissingPluginsPermissionRequest);
+}
+
+void afterAll()
+{
+ delete bus;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitAccessibility.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitAccessibility.cpp
new file mode 100644
index 000000000..ea4a8125f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitAccessibility.cpp
@@ -0,0 +1,224 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "TestMain.h"
+#include "WebViewTest.h"
+
+// The libatspi headers don't use G_BEGIN_DECLS
+extern "C" {
+#include <atspi/atspi.h>
+}
+
+#include <errno.h>
+#include <fcntl.h>
+#include <glib.h>
+#include <signal.h>
+#include <unistd.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+
+// Name of the test server application creating the webView object.
+static const char* kTestServerAppName = "AccessibilityTestServer";
+
+// Max seconds to wait for the test server before inspecting it.
+static const int kMaxWaitForChild = 5;
+
+// The PID for the test server running, so we can kill it if needed.
+static GPid kChildProcessPid = 0;
+
+// Whether the child has replied and it's ready.
+static bool kChildIsReady = false;
+
+static void stopTestServer()
+{
+ // Do nothing if there's no server running.
+ if (!kChildProcessPid)
+ return;
+
+ g_spawn_close_pid(kChildProcessPid);
+ kill(kChildProcessPid, SIGTERM);
+ kChildProcessPid = 0;
+}
+
+static void sigAbortHandler(int sigNum)
+{
+ // Just stop the test server if SIGABRT was received.
+ stopTestServer();
+}
+
+static gpointer testServerMonitorThreadFunc(gpointer)
+{
+ // Wait for the specified timeout to happen.
+ g_usleep(kMaxWaitForChild * G_USEC_PER_SEC);
+
+ // Kill the child process if not ready yet.
+ if (!kChildIsReady)
+ stopTestServer();
+
+ g_thread_exit(0);
+ return 0;
+}
+
+static void startTestServerMonitor()
+{
+ kChildIsReady = false;
+ g_thread_new("TestServerMonitor", testServerMonitorThreadFunc, 0);
+}
+
+static void startTestServer()
+{
+ // Prepare argv[] for spawning the server process.
+ GUniquePtr<char> testServerPath(g_build_filename(WEBKIT_EXEC_PATH, "TestWebKitAPI", "WebKit2Gtk", kTestServerAppName, nullptr));
+
+ char* testServerArgv[2];
+ testServerArgv[0] = testServerPath.get();
+ testServerArgv[1] = 0;
+
+ // Spawn the server, getting its stdout file descriptor to set a
+ // communication channel, so we know when it's ready.
+ int childStdout = 0;
+ if (!g_spawn_async_with_pipes(0, testServerArgv, 0, static_cast<GSpawnFlags>(0), 0, 0, &kChildProcessPid, 0, &childStdout, 0, 0)) {
+ close(childStdout);
+ return;
+ }
+
+ // Start monitoring the test server (in a separate thread) to
+ // ensure we don't block on the child process more than a timeout.
+ startTestServerMonitor();
+
+ char msg[2];
+ GIOChannel* ioChannel = g_io_channel_unix_new(childStdout);
+ if (g_io_channel_read_chars(ioChannel, msg, 2, 0, 0) == G_IO_STATUS_NORMAL) {
+ // Check whether the server sent a message saying it's ready
+ // and store the result globally, so the monitor can see it.
+ kChildIsReady = msg[0] == 'O' && msg[1] == 'K';
+ }
+ g_io_channel_unref(ioChannel);
+ close(childStdout);
+
+ // The timeout was reached and the server is not ready yet, so
+ // stop it inmediately, and let the unit tests fail.
+ if (!kChildIsReady)
+ stopTestServer();
+}
+
+static void checkAtspiAccessible(AtspiAccessible* accessible, const char* targetName, AtspiRole targetRole)
+{
+ g_assert(ATSPI_IS_ACCESSIBLE(accessible));
+
+ GUniquePtr<char> name(atspi_accessible_get_name(accessible, 0));
+ g_assert_cmpstr(targetName, ==, name.get());
+ g_assert_cmpint(targetRole, ==, atspi_accessible_get_role(accessible, 0));
+}
+
+static GRefPtr<AtspiAccessible> findTestServerApplication()
+{
+ // Only one desktop is supported by ATSPI at the moment.
+ GRefPtr<AtspiAccessible> desktop = adoptGRef(atspi_get_desktop(0));
+
+ // Look for the server application in the list of apps.
+ GRefPtr<AtspiAccessible> current;
+ int childCount = atspi_accessible_get_child_count(desktop.get(), 0);
+ for (int i = 0; i < childCount; i++) {
+ current = adoptGRef(atspi_accessible_get_child_at_index(desktop.get(), i, 0));
+ if (!g_strcmp0(atspi_accessible_get_name(current.get(), 0), kTestServerAppName))
+ return current;
+ }
+
+ return 0;
+}
+
+static void testAtspiBasicHierarchy(WebViewTest* test, gconstpointer)
+{
+ // The test server's accessibility object (UI Process).
+ GRefPtr<AtspiAccessible> testServerApp = findTestServerApplication();
+ g_assert(ATSPI_IS_ACCESSIBLE(testServerApp.get()));
+ checkAtspiAccessible(testServerApp.get(), "AccessibilityTestServer", ATSPI_ROLE_APPLICATION);
+
+ // The main window's accessibility object (UI Process).
+ GRefPtr<AtspiAccessible> currentParent = testServerApp;
+ GRefPtr<AtspiAccessible> currentChild = adoptGRef(atspi_accessible_get_child_at_index(currentParent.get(), 0, 0));
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_FRAME);
+
+ // The WebView's accessibility object (UI Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_FILLER);
+
+ // The WebPage's accessibility object (Web Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_FILLER);
+
+ // HTML root element's accessible element (Web Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+
+ // HTML body's accessible element (Web Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_DOCUMENT_WEB);
+
+ // HTML H1's accessible element (Web Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "This is a test", ATSPI_ROLE_HEADING);
+
+ // HTML first paragraph's accessible element (Web Process).
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 1, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_PARAGRAPH);
+
+ // HTML second paragraph's accessible element (Web Process).
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 2, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "", ATSPI_ROLE_PARAGRAPH);
+
+ // HTML link's accessible element (Web Process).
+ currentParent = currentChild;
+ currentChild = atspi_accessible_get_child_at_index(currentParent.get(), 0, 0);
+ g_assert(ATSPI_IS_ACCESSIBLE(currentChild.get()));
+ checkAtspiAccessible(currentChild.get(), "a link", ATSPI_ROLE_LINK);
+}
+
+void beforeAll()
+{
+ // We install a handler to ensure that we kill the child process
+ // if the parent dies because of whatever the reason is.
+ signal(SIGABRT, sigAbortHandler);
+
+ // Start the accessibility test server and load the tests.
+ startTestServer();
+ WebViewTest::add("WebKitAccessibility", "atspi-basic-hierarchy", testAtspiBasicHierarchy);
+}
+
+void afterAll()
+{
+ // Ensure we stop the server.
+ stopTestServer();
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp
new file mode 100644
index 000000000..8d5be9250
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFaviconDatabase.cpp
@@ -0,0 +1,250 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <glib/gstdio.h>
+#include <libsoup/soup.h>
+#include <wtf/glib/GUniquePtr.h>
+
+static WebKitTestServer* kServer;
+
+class FaviconDatabaseTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(FaviconDatabaseTest);
+
+ FaviconDatabaseTest()
+ : m_favicon(nullptr)
+ , m_faviconNotificationReceived(false)
+ {
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get());
+ g_signal_connect(database, "favicon-changed", G_CALLBACK(faviconChangedCallback), this);
+ }
+
+ ~FaviconDatabaseTest()
+ {
+ if (m_favicon)
+ cairo_surface_destroy(m_favicon);
+
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get());
+ g_signal_handlers_disconnect_matched(database, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ static void faviconChangedCallback(WebKitFaviconDatabase* database, const char* pageURI, const char* faviconURI, FaviconDatabaseTest* test)
+ {
+ if (!g_strcmp0(webkit_web_view_get_uri(test->m_webView), pageURI))
+ test->m_faviconURI = faviconURI;
+ }
+
+ static void viewFaviconChangedCallback(WebKitWebView* webView, GParamSpec* pspec, gpointer data)
+ {
+ FaviconDatabaseTest* test = static_cast<FaviconDatabaseTest*>(data);
+ g_assert(test->m_webView == webView);
+ test->m_faviconNotificationReceived = true;
+ test->quitMainLoop();
+ }
+
+ static void getFaviconCallback(GObject* sourceObject, GAsyncResult* result, void* data)
+ {
+ FaviconDatabaseTest* test = static_cast<FaviconDatabaseTest*>(data);
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get());
+ test->m_favicon = webkit_favicon_database_get_favicon_finish(database, result, &test->m_error.outPtr());
+ test->quitMainLoop();
+ }
+
+ void waitUntilFaviconChanged()
+ {
+ m_faviconNotificationReceived = false;
+ unsigned long handlerID = g_signal_connect(m_webView, "notify::favicon", G_CALLBACK(viewFaviconChangedCallback), this);
+ g_main_loop_run(m_mainLoop);
+ g_signal_handler_disconnect(m_webView, handlerID);
+ }
+
+ void getFaviconForPageURIAndWaitUntilReady(const char* pageURI)
+ {
+ if (m_favicon) {
+ cairo_surface_destroy(m_favicon);
+ m_favicon = 0;
+ }
+
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(m_webContext.get());
+ webkit_favicon_database_get_favicon(database, pageURI, 0, getFaviconCallback, this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ cairo_surface_t* m_favicon;
+ CString m_faviconURI;
+ GUniqueOutPtr<GError> m_error;
+ bool m_faviconNotificationReceived;
+};
+
+static void
+serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable* query, SoupClientContext* context, void* data)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/favicon.ico")) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+ soup_message_body_complete(message->response_body);
+ return;
+ }
+
+ char* contents;
+ gsize length;
+ if (g_str_equal(path, "/icon/favicon.ico")) {
+ GUniquePtr<char> pathToFavicon(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ g_file_get_contents(pathToFavicon.get(), &contents, &length, 0);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_TAKE, contents, length);
+ } else if (g_str_equal(path, "/nofavicon")) {
+ static const char* noFaviconHTML = "<html><head><body>test</body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, noFaviconHTML, strlen(noFaviconHTML));
+ } else {
+ static const char* contentsHTML = "<html><head><link rel='icon' href='/icon/favicon.ico' type='image/x-ico; charset=binary'></head><body>test</body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, contentsHTML, strlen(contentsHTML));
+ }
+
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_complete(message->response_body);
+}
+
+static void testNotInitialized(FaviconDatabaseTest* test)
+{
+ // Try to retrieve a valid favicon from a not initialized database.
+ test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/foo").data());
+ g_assert(!test->m_favicon);
+ g_assert(test->m_error);
+ g_assert_cmpint(test->m_error->code, ==, WEBKIT_FAVICON_DATABASE_ERROR_NOT_INITIALIZED);
+}
+
+static void testSetDirectory(FaviconDatabaseTest* test)
+{
+ webkit_web_context_set_favicon_database_directory(test->m_webContext.get(), Test::dataDirectory());
+ g_assert_cmpstr(Test::dataDirectory(), ==, webkit_web_context_get_favicon_database_directory(test->m_webContext.get()));
+}
+
+static void testClearDatabase(FaviconDatabaseTest* test)
+{
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get());
+ webkit_favicon_database_clear(database);
+
+ GUniquePtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, kServer->getURIForPath("/foo").data()));
+ g_assert(!iconURI);
+}
+
+static void testGetFavicon(FaviconDatabaseTest* test)
+{
+ // We need to load the page first to ensure the icon data will be
+ // in the database in case there's an associated favicon.
+ test->loadURI(kServer->getURIForPath("/foo").data());
+ test->waitUntilFaviconChanged();
+ CString faviconURI = kServer->getURIForPath("/icon/favicon.ico");
+
+ // Check the API retrieving a valid favicon.
+ test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/foo").data());
+ g_assert(test->m_favicon);
+ g_assert_cmpstr(test->m_faviconURI.data(), ==, faviconURI.data());
+ g_assert(!test->m_error);
+
+ // Check that width and height match those from blank.ico (16x16 favicon).
+ g_assert_cmpint(cairo_image_surface_get_width(test->m_favicon), ==, 16);
+ g_assert_cmpint(cairo_image_surface_get_height(test->m_favicon), ==, 16);
+
+ // Check that another page with the same favicon return the same icon.
+ cairo_surface_t* favicon = cairo_surface_reference(test->m_favicon);
+ test->loadURI(kServer->getURIForPath("/bar").data());
+ // It's a new page in the database, so favicon will change twice, first to reset it
+ // and then when the icon is loaded.
+ test->waitUntilFaviconChanged();
+ test->waitUntilFaviconChanged();
+ test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/bar").data());
+ g_assert(test->m_favicon);
+ g_assert_cmpstr(test->m_faviconURI.data(), ==, faviconURI.data());
+ g_assert(test->m_favicon == favicon);
+ g_assert(!test->m_error);
+ cairo_surface_destroy(favicon);
+
+ // Check the API retrieving an invalid favicon.
+ test->loadURI(kServer->getURIForPath("/nofavicon").data());
+ test->waitUntilFaviconChanged();
+
+ test->getFaviconForPageURIAndWaitUntilReady(kServer->getURIForPath("/nofavicon").data());
+ g_assert(!test->m_favicon);
+ g_assert(test->m_error);
+}
+
+static void testGetFaviconURI(FaviconDatabaseTest* test)
+{
+ WebKitFaviconDatabase* database = webkit_web_context_get_favicon_database(test->m_webContext.get());
+
+ CString baseURI = kServer->getURIForPath("/foo");
+ GUniquePtr<char> iconURI(webkit_favicon_database_get_favicon_uri(database, baseURI.data()));
+ ASSERT_CMP_CSTRING(iconURI.get(), ==, kServer->getURIForPath("/icon/favicon.ico"));
+}
+
+static void testWebViewFavicon(FaviconDatabaseTest* test)
+{
+ test->m_faviconURI = CString();
+
+ cairo_surface_t* iconFromWebView = webkit_web_view_get_favicon(test->m_webView);
+ g_assert(!iconFromWebView);
+
+ test->loadURI(kServer->getURIForPath("/foo").data());
+ test->waitUntilFaviconChanged();
+ g_assert(test->m_faviconNotificationReceived);
+ // The icon is known and hasn't changed in the database, so notify::favicon is emitted
+ // but WebKitFaviconDatabase::icon-changed isn't.
+ g_assert(test->m_faviconURI.isNull());
+
+ iconFromWebView = webkit_web_view_get_favicon(test->m_webView);
+ g_assert(iconFromWebView);
+ g_assert_cmpuint(cairo_image_surface_get_width(iconFromWebView), ==, 16);
+ g_assert_cmpuint(cairo_image_surface_get_height(iconFromWebView), ==, 16);
+}
+
+static void testFaviconDatabase(FaviconDatabaseTest* test, gconstpointer)
+{
+ // These tests depend on this order to run properly so we declare them in a single one.
+ // See https://bugs.webkit.org/show_bug.cgi?id=111434.
+ testNotInitialized(test);
+ testSetDirectory(test);
+ testGetFavicon(test);
+ testGetFaviconURI(test);
+ testWebViewFavicon(test);
+ testClearDatabase(test);
+}
+
+void beforeAll()
+{
+ // Start a soup server for testing.
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ // Add tests to the suite.
+ FaviconDatabaseTest::add("WebKitFaviconDatabase", "favicon-database-test", testFaviconDatabase);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFindController.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFindController.cpp
new file mode 100644
index 000000000..7289fd37f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitFindController.cpp
@@ -0,0 +1,335 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "LoadTrackingTest.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+#include <wtf/glib/GRefPtr.h>
+
+static const char* testString = "<html><body>first testing second testing secondHalf</body></html>";
+
+class FindControllerTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(FindControllerTest);
+
+ FindControllerTest()
+ : m_findController(webkit_web_view_get_find_controller(m_webView))
+ , m_runFindUntilCompletion(false)
+ {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_findController.get()));
+ }
+
+ ~FindControllerTest()
+ {
+ if (m_findController)
+ g_signal_handlers_disconnect_matched(m_findController.get(), G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void find(const char* searchText, guint32 findOptions, guint maxMatchCount)
+ {
+ g_signal_connect(m_findController.get(), "found-text", G_CALLBACK(foundTextCallback), this);
+ g_signal_connect(m_findController.get(), "failed-to-find-text", G_CALLBACK(failedToFindTextCallback), this);
+ webkit_find_controller_search(m_findController.get(), searchText, findOptions, maxMatchCount);
+ }
+
+ void count(const char* searchText, guint32 findOptions, guint maxMatchCount)
+ {
+ g_signal_connect(m_findController.get(), "counted-matches", G_CALLBACK(countedMatchesCallback), this);
+ webkit_find_controller_count_matches(m_findController.get(), searchText, findOptions, maxMatchCount);
+ }
+
+ void waitUntilFindFinished()
+ {
+ m_runFindUntilCompletion = true;
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GRefPtr<WebKitFindController> m_findController;
+ bool m_textFound;
+ unsigned m_matchCount;
+
+private:
+ bool m_runFindUntilCompletion;
+
+ static void foundTextCallback(WebKitFindController*, guint matchCount, FindControllerTest* test)
+ {
+ test->m_textFound = true;
+ test->m_matchCount = matchCount;
+ if (test->m_runFindUntilCompletion)
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ static void failedToFindTextCallback(WebKitFindController*, FindControllerTest* test)
+ {
+ test->m_textFound = false;
+ if (test->m_runFindUntilCompletion)
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ static void countedMatchesCallback(WebKitFindController*, guint matchCount, FindControllerTest* test)
+ {
+ test->m_matchCount = matchCount;
+ if (test->m_runFindUntilCompletion)
+ g_main_loop_quit(test->m_mainLoop);
+ }
+};
+
+static void testFindControllerTextFound(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 1);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+}
+
+static void testFindControllerTextNotFound(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("notFound", WEBKIT_FIND_OPTIONS_NONE, 1);
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_textFound);
+}
+
+static void testFindControllerMatchCount(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_matchCount == 2);
+ g_assert(test->m_textFound);
+}
+
+static void testFindControllerMaxMatchCount(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 1);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_matchCount == G_MAXUINT);
+ g_assert(test->m_textFound);
+}
+
+static void testFindControllerNext(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+ g_assert(test->m_matchCount == 2);
+
+ webkit_find_controller_search_next(test->m_findController.get());
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+ g_assert(test->m_matchCount == 1);
+ g_assert(!(webkit_find_controller_get_options(test->m_findController.get()) & WEBKIT_FIND_OPTIONS_BACKWARDS));
+
+ webkit_find_controller_search_next(test->m_findController.get());
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_textFound);
+ g_assert(test->m_matchCount == 1);
+ g_assert(!(webkit_find_controller_get_options(test->m_findController.get()) & WEBKIT_FIND_OPTIONS_BACKWARDS));
+}
+
+static void testFindControllerPrevious(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_matchCount == 2);
+ g_assert(test->m_textFound);
+
+ webkit_find_controller_search_next(test->m_findController.get());
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+ g_assert(test->m_matchCount == 1);
+ g_assert(!(webkit_find_controller_get_options(test->m_findController.get()) & WEBKIT_FIND_OPTIONS_BACKWARDS));
+
+ webkit_find_controller_search_previous(test->m_findController.get());
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+ g_assert(test->m_matchCount == 1);
+ g_assert(webkit_find_controller_get_options(test->m_findController.get()) & WEBKIT_FIND_OPTIONS_BACKWARDS);
+}
+
+static void testFindControllerCountedMatches(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->count("testing", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_matchCount == 2);
+
+ test->count("first", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_matchCount == 1);
+
+ test->count("notFound", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_matchCount);
+}
+
+static void testFindControllerOptions(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->find("Testing", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_textFound);
+
+ test->find("Testing", WEBKIT_FIND_OPTIONS_CASE_INSENSITIVE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+
+ test->find("esting", WEBKIT_FIND_OPTIONS_NONE, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+
+ test->find("esting", WEBKIT_FIND_OPTIONS_AT_WORD_STARTS, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_textFound);
+
+ test->find("Half", WEBKIT_FIND_OPTIONS_AT_WORD_STARTS, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(!test->m_textFound);
+
+ test->find("Half", WEBKIT_FIND_OPTIONS_AT_WORD_STARTS | WEBKIT_FIND_OPTIONS_TREAT_MEDIAL_CAPITAL_AS_WORD_START, 2);
+ test->waitUntilFindFinished();
+
+ g_assert(test->m_textFound);
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_WRAP_AROUND, 3);
+ test->waitUntilFindFinished();
+ g_assert(test->m_textFound);
+
+ webkit_find_controller_search_next(test->m_findController.get());
+ test->waitUntilFindFinished();
+ g_assert(test->m_textFound);
+
+ webkit_find_controller_search_next(test->m_findController.get());
+ test->waitUntilFindFinished();
+ g_assert(test->m_textFound);
+}
+
+static void testFindControllerHide(FindControllerTest* test, gconstpointer)
+{
+ test->loadHtml(testString, 0);
+ test->waitUntilLoadFinished();
+
+ test->showInWindowAndWaitUntilMapped();
+
+ cairo_surface_t* originalSurface = cairo_surface_reference(
+ test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT, WEBKIT_SNAPSHOT_OPTIONS_NONE));
+ g_assert(originalSurface);
+
+ test->find("testing", WEBKIT_FIND_OPTIONS_NONE, 1);
+ test->waitUntilFindFinished();
+ g_assert(test->m_textFound);
+
+ cairo_surface_t* highlightSurface = cairo_surface_reference(
+ test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT, WEBKIT_SNAPSHOT_OPTIONS_NONE));
+ g_assert(highlightSurface);
+ g_assert(!Test::cairoSurfacesEqual(originalSurface, highlightSurface));
+
+ WebKitFindController* findController = webkit_web_view_get_find_controller(test->m_webView);
+ webkit_find_controller_search_finish(findController);
+ webkit_web_view_execute_editing_command(test->m_webView, "Unselect");
+
+ cairo_surface_t* unhighlightSurface = cairo_surface_reference(
+ test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT, WEBKIT_SNAPSHOT_OPTIONS_NONE));
+ g_assert(unhighlightSurface);
+ g_assert(Test::cairoSurfacesEqual(originalSurface, unhighlightSurface));
+
+ cairo_surface_destroy(originalSurface);
+ cairo_surface_destroy(highlightSurface);
+ cairo_surface_destroy(unhighlightSurface);
+}
+
+static void testFindControllerInstance(FindControllerTest* test, gconstpointer)
+{
+ WebKitFindController* findController1 = webkit_web_view_get_find_controller(test->m_webView);
+ WebKitFindController* findController2 = webkit_web_view_get_find_controller(test->m_webView);
+
+ g_assert(findController1 == findController2);
+}
+
+static void testFindControllerGetters(FindControllerTest* test, gconstpointer)
+{
+ const char* searchText = "testing";
+ guint maxMatchCount = 1;
+ guint32 findOptions = WEBKIT_FIND_OPTIONS_WRAP_AROUND | WEBKIT_FIND_OPTIONS_AT_WORD_STARTS;
+ WebKitFindController* findController = webkit_web_view_get_find_controller(test->m_webView);
+
+ webkit_find_controller_search(findController, searchText, findOptions, maxMatchCount);
+ g_assert(webkit_find_controller_get_web_view(findController) == test->m_webView);
+ g_assert(!g_strcmp0(webkit_find_controller_get_search_text(findController), searchText));
+ g_assert(webkit_find_controller_get_max_match_count(findController) == maxMatchCount);
+ g_assert(webkit_find_controller_get_options(findController) == findOptions);
+}
+
+void beforeAll()
+{
+ FindControllerTest::add("WebKitFindController", "getters", testFindControllerGetters);
+ FindControllerTest::add("WebKitFindController", "instance", testFindControllerInstance);
+ FindControllerTest::add("WebKitFindController", "text-found", testFindControllerTextFound);
+ FindControllerTest::add("WebKitFindController", "text-not-found", testFindControllerTextNotFound);
+ FindControllerTest::add("WebKitFindController", "match-count", testFindControllerMatchCount);
+ FindControllerTest::add("WebKitFindController", "max-match-count", testFindControllerMaxMatchCount);
+ FindControllerTest::add("WebKitFindController", "next", testFindControllerNext);
+ FindControllerTest::add("WebKitFindController", "previous", testFindControllerPrevious);
+ FindControllerTest::add("WebKitFindController", "counted-matches", testFindControllerCountedMatches);
+ FindControllerTest::add("WebKitFindController", "options", testFindControllerOptions);
+ FindControllerTest::add("WebKitFindController", "hide", testFindControllerHide);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp
new file mode 100644
index 000000000..9f9515123
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitPolicyClient.cpp
@@ -0,0 +1,268 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 "LoadTrackingTest.h"
+#include "WebKitTestServer.h"
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/text/CString.h>
+
+static WebKitTestServer* kServer;
+
+class PolicyClientTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(PolicyClientTest);
+
+ enum PolicyDecisionResponse {
+ Use,
+ Ignore,
+ Download,
+ None
+ };
+
+ PolicyClientTest()
+ : LoadTrackingTest()
+ , m_policyDecisionResponse(None)
+ , m_policyDecisionTypeFilter(0)
+ , m_respondToPolicyDecisionAsynchronously(false)
+ , m_haltMainLoopAfterMakingDecision(false)
+ {
+ g_signal_connect(m_webView, "decide-policy", G_CALLBACK(decidePolicyCallback), this);
+ }
+
+ static gboolean quitMainLoopLater(GMainLoop* loop)
+ {
+ g_main_loop_quit(loop);
+ return FALSE;
+ }
+
+ static void respondToPolicyDecision(PolicyClientTest* test, WebKitPolicyDecision* decision)
+ {
+ switch (test->m_policyDecisionResponse) {
+ case Use:
+ webkit_policy_decision_use(decision);
+ break;
+ case Ignore:
+ webkit_policy_decision_ignore(decision);
+ break;
+ case Download:
+ webkit_policy_decision_download(decision);
+ break;
+ case None:
+ break;
+ }
+
+ if (test->m_haltMainLoopAfterMakingDecision)
+ g_idle_add(reinterpret_cast<GSourceFunc>(quitMainLoopLater), test->m_mainLoop);
+ }
+
+ static gboolean respondToPolicyDecisionLater(PolicyClientTest* test)
+ {
+ respondToPolicyDecision(test, test->m_previousPolicyDecision.get());
+ test->m_previousPolicyDecision = 0;
+ return FALSE;
+ }
+
+ static gboolean decidePolicyCallback(WebKitWebView* webView, WebKitPolicyDecision* decision, WebKitPolicyDecisionType type, PolicyClientTest* test)
+ {
+ if (test->m_policyDecisionTypeFilter != type)
+ return FALSE;
+
+ test->m_previousPolicyDecision = decision;
+ if (test->m_respondToPolicyDecisionAsynchronously) {
+ g_idle_add(reinterpret_cast<GSourceFunc>(respondToPolicyDecisionLater), test);
+ return TRUE;
+ }
+
+ respondToPolicyDecision(test, decision);
+
+ // We return FALSE here to ensure that the default policy decision
+ // handler doesn't override whatever we use here.
+ return FALSE;
+ }
+
+ PolicyDecisionResponse m_policyDecisionResponse;
+ int m_policyDecisionTypeFilter;
+ bool m_respondToPolicyDecisionAsynchronously;
+ bool m_haltMainLoopAfterMakingDecision;
+ GRefPtr<WebKitPolicyDecision> m_previousPolicyDecision;
+};
+
+static void testNavigationPolicy(PolicyClientTest* test, gconstpointer)
+{
+ test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION;
+
+ test->m_policyDecisionResponse = PolicyClientTest::Use;
+ test->loadHtml("<html/>", "http://webkitgtk.org/");
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+
+ // Ideally we'd like to have a more intensive test here, but it's still pretty tricky
+ // to trigger different types of navigations with the GTK+ WebKit2 API.
+ WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get());
+ WebKitNavigationAction* navigationAction = webkit_navigation_policy_decision_get_navigation_action(decision);
+ g_assert_cmpint(webkit_navigation_action_get_navigation_type(navigationAction), ==, WEBKIT_NAVIGATION_TYPE_OTHER);
+ g_assert_cmpint(webkit_navigation_action_get_mouse_button(navigationAction), ==, 0);
+ g_assert_cmpint(webkit_navigation_action_get_modifiers(navigationAction), ==, 0);
+ g_assert(!webkit_navigation_policy_decision_get_frame_name(decision));
+ WebKitURIRequest* request = webkit_navigation_action_get_request(navigationAction);
+ g_assert_cmpstr(webkit_uri_request_get_uri(request), ==, "http://webkitgtk.org/");
+
+ test->m_policyDecisionResponse = PolicyClientTest::Use;
+ test->m_respondToPolicyDecisionAsynchronously = true;
+ test->loadHtml("<html/>", "http://webkitgtk.org/");
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+
+ // If we are waiting until load completion, it will never complete if we ignore the
+ // navigation. So we tell the main loop to quit sometime later.
+ test->m_policyDecisionResponse = PolicyClientTest::Ignore;
+ test->m_respondToPolicyDecisionAsynchronously = false;
+ test->m_haltMainLoopAfterMakingDecision = true;
+ test->loadHtml("<html/>", "http://webkitgtk.org/");
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 0);
+
+ test->m_policyDecisionResponse = PolicyClientTest::Ignore;
+ test->loadHtml("<html/>", "http://webkitgtk.org/");
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 0);
+}
+
+static void testResponsePolicy(PolicyClientTest* test, gconstpointer)
+{
+ test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_RESPONSE;
+
+ test->m_policyDecisionResponse = PolicyClientTest::Use;
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+
+ WebKitResponsePolicyDecision* decision = WEBKIT_RESPONSE_POLICY_DECISION(test->m_previousPolicyDecision.get());
+ WebKitURIRequest* request = webkit_response_policy_decision_get_request(decision);
+ g_assert(WEBKIT_IS_URI_REQUEST(request));
+ ASSERT_CMP_CSTRING(webkit_uri_request_get_uri(request), ==, kServer->getURIForPath("/"));
+ WebKitURIResponse* response = webkit_response_policy_decision_get_response(decision);
+ g_assert(WEBKIT_IS_URI_RESPONSE(response));
+ ASSERT_CMP_CSTRING(webkit_uri_response_get_uri(response), ==, kServer->getURIForPath("/"));
+ g_assert(webkit_web_view_can_show_mime_type(test->m_webView, webkit_uri_response_get_mime_type(response)) ==
+ webkit_response_policy_decision_is_mime_type_supported(decision));
+
+ test->m_respondToPolicyDecisionAsynchronously = true;
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::LoadCommitted);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+
+ test->m_respondToPolicyDecisionAsynchronously = false;
+ test->m_policyDecisionResponse = PolicyClientTest::Ignore;
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+
+ g_assert_cmpint(test->m_loadEvents.size(), ==, 3);
+ g_assert_cmpint(test->m_loadEvents[0], ==, LoadTrackingTest::ProvisionalLoadStarted);
+ g_assert_cmpint(test->m_loadEvents[1], ==, LoadTrackingTest::ProvisionalLoadFailed);
+ g_assert_cmpint(test->m_loadEvents[2], ==, LoadTrackingTest::LoadFinished);
+}
+
+struct CreateCallbackData {
+ bool triedToOpenWindow;
+ GMainLoop* mainLoop;
+};
+
+static WebKitWebView* createCallback(WebKitWebView* webView, WebKitNavigationAction*, CreateCallbackData* data)
+{
+ data->triedToOpenWindow = true;
+ g_main_loop_quit(data->mainLoop);
+ return 0;
+}
+
+static void testNewWindowPolicy(PolicyClientTest* test, gconstpointer)
+{
+ static const char* windowOpeningHTML =
+ "<html><body>"
+ " <a id=\"link\" href=\"http://www.google.com\" target=\"_blank\">Link</a>"
+ " <script>"
+ " var event = document.createEvent('MouseEvents');"
+ " event.initEvent('click', true, false);"
+ " document.getElementById('link').dispatchEvent(event);"
+ " </script>"
+ "</body></html>";
+ test->m_policyDecisionTypeFilter = WEBKIT_POLICY_DECISION_TYPE_NEW_WINDOW_ACTION;
+ webkit_settings_set_javascript_can_open_windows_automatically(webkit_web_view_get_settings(test->m_webView), TRUE);
+
+ CreateCallbackData data;
+ data.triedToOpenWindow = false;
+ data.mainLoop = test->m_mainLoop;
+
+ g_signal_connect(test->m_webView, "create", G_CALLBACK(createCallback), &data);
+ test->m_policyDecisionResponse = PolicyClientTest::Use;
+ test->loadHtml(windowOpeningHTML, "http://webkitgtk.org/");
+ test->wait(1);
+ g_assert(data.triedToOpenWindow);
+
+ WebKitNavigationPolicyDecision* decision = WEBKIT_NAVIGATION_POLICY_DECISION(test->m_previousPolicyDecision.get());
+ g_assert_cmpstr(webkit_navigation_policy_decision_get_frame_name(decision), ==, "_blank");
+
+ // Using a short timeout is a bit ugly here, but it's hard to get around because if we block
+ // the new window signal we cannot halt the main loop in the create callback. If we
+ // halt the main loop in the policy decision, the create callback never executes.
+ data.triedToOpenWindow = false;
+ test->m_policyDecisionResponse = PolicyClientTest::Ignore;
+ test->loadHtml(windowOpeningHTML, "http://webkitgtk.org/");
+ test->wait(.2);
+ g_assert(!data.triedToOpenWindow);
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/")) {
+ static const char* responseString = "<html><body>Testing!</body></html>";
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, responseString, strlen(responseString));
+ soup_message_body_complete(message->response_body);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ PolicyClientTest::add("WebKitPolicyClient", "navigation-policy", testNavigationPolicy);
+ PolicyClientTest::add("WebKitPolicyClient", "response-policy", testResponsePolicy);
+ PolicyClientTest::add("WebKitPolicyClient", "new-window-policy", testNewWindowPolicy);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp
new file mode 100644
index 000000000..b3a377270
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitSettings.cpp
@@ -0,0 +1,379 @@
+/*
+ * Copyright (c) 2011 Motorola Mobility, 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 Motorola Mobility, 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 HOLDER 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 "TestMain.h"
+#include "WebViewTest.h"
+#include "WebKitTestServer.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+#include <wtf/glib/GRefPtr.h>
+
+static WebKitTestServer* gServer;
+
+static void testWebKitSettings(Test*, gconstpointer)
+{
+ WebKitSettings* settings = webkit_settings_new();
+
+ // JavaScript is enabled by default.
+ g_assert(webkit_settings_get_enable_javascript(settings));
+ webkit_settings_set_enable_javascript(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_javascript(settings));
+
+ // By default auto-load-image is true.
+ g_assert(webkit_settings_get_auto_load_images(settings));
+ webkit_settings_set_auto_load_images(settings, FALSE);
+ g_assert(!webkit_settings_get_auto_load_images(settings));
+
+ // load-icons-ignoring-image-load-setting is false by default.
+ g_assert(!webkit_settings_get_load_icons_ignoring_image_load_setting(settings));
+ webkit_settings_set_load_icons_ignoring_image_load_setting(settings, TRUE);
+ g_assert(webkit_settings_get_load_icons_ignoring_image_load_setting(settings));
+
+ // Offline application cache is true by default.
+ g_assert(webkit_settings_get_enable_offline_web_application_cache(settings));
+ webkit_settings_set_enable_offline_web_application_cache(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_offline_web_application_cache(settings));
+
+ // Local storage is enable by default.
+ g_assert(webkit_settings_get_enable_html5_local_storage(settings));
+ webkit_settings_set_enable_html5_local_storage(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_html5_local_storage(settings));
+
+ // HTML5 database is enabled by default.
+ g_assert(webkit_settings_get_enable_html5_database(settings));
+ webkit_settings_set_enable_html5_database(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_html5_database(settings));
+
+ // XSS Auditor is enabled by default.
+ g_assert(webkit_settings_get_enable_xss_auditor(settings));
+ webkit_settings_set_enable_xss_auditor(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_xss_auditor(settings));
+
+ // Frame flattening is disabled by default.
+ g_assert(!webkit_settings_get_enable_frame_flattening(settings));
+ webkit_settings_set_enable_frame_flattening(settings, TRUE);
+ g_assert(webkit_settings_get_enable_frame_flattening(settings));
+
+ // Plugins are enabled by default.
+ g_assert(webkit_settings_get_enable_plugins(settings));
+ webkit_settings_set_enable_plugins(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_plugins(settings));
+
+ // Java is enabled by default.
+ g_assert(webkit_settings_get_enable_java(settings));
+ webkit_settings_set_enable_java(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_java(settings));
+
+ // By default, JavaScript can open windows automatically is disabled.
+ g_assert(!webkit_settings_get_javascript_can_open_windows_automatically(settings));
+ webkit_settings_set_javascript_can_open_windows_automatically(settings, TRUE);
+ g_assert(webkit_settings_get_javascript_can_open_windows_automatically(settings));
+
+ // By default hyper link auditing is disabled.
+ g_assert(!webkit_settings_get_enable_hyperlink_auditing(settings));
+ webkit_settings_set_enable_hyperlink_auditing(settings, TRUE);
+ g_assert(webkit_settings_get_enable_hyperlink_auditing(settings));
+
+ // Default font family is "sans-serif".
+ g_assert_cmpstr(webkit_settings_get_default_font_family(settings), ==, "sans-serif");
+ webkit_settings_set_default_font_family(settings, "monospace");
+ g_assert_cmpstr(webkit_settings_get_default_font_family(settings), ==, "monospace");
+
+ // Default monospace font family font family is "monospace".
+ g_assert_cmpstr(webkit_settings_get_monospace_font_family(settings), ==, "monospace");
+ webkit_settings_set_monospace_font_family(settings, "sans-serif");
+ g_assert_cmpstr(webkit_settings_get_monospace_font_family(settings), ==, "sans-serif");
+
+ // Default serif font family is "serif".
+ g_assert_cmpstr(webkit_settings_get_serif_font_family(settings), ==, "serif");
+ webkit_settings_set_serif_font_family(settings, "sans-serif");
+ g_assert_cmpstr(webkit_settings_get_serif_font_family(settings), ==, "sans-serif");
+
+ // Default sans serif font family is "sans-serif".
+ g_assert_cmpstr(webkit_settings_get_sans_serif_font_family(settings), ==, "sans-serif");
+ webkit_settings_set_sans_serif_font_family(settings, "serif");
+ g_assert_cmpstr(webkit_settings_get_sans_serif_font_family(settings), ==, "serif");
+
+ // Default cursive font family "serif".
+ g_assert_cmpstr(webkit_settings_get_cursive_font_family(settings), ==, "serif");
+ webkit_settings_set_cursive_font_family(settings, "sans-serif");
+ g_assert_cmpstr(webkit_settings_get_cursive_font_family(settings), ==, "sans-serif");
+
+ // Default fantasy font family is "serif".
+ g_assert_cmpstr(webkit_settings_get_fantasy_font_family(settings), ==, "serif");
+ webkit_settings_set_fantasy_font_family(settings, "sans-serif");
+ g_assert_cmpstr(webkit_settings_get_fantasy_font_family(settings), ==, "sans-serif");
+
+ // Default pictograph font family is "serif".
+ g_assert_cmpstr(webkit_settings_get_pictograph_font_family(settings), ==, "serif");
+ webkit_settings_set_pictograph_font_family(settings, "sans-serif");
+ g_assert_cmpstr(webkit_settings_get_pictograph_font_family(settings), ==, "sans-serif");
+
+ // Default font size is 16.
+ g_assert_cmpuint(webkit_settings_get_default_font_size(settings), ==, 16);
+ webkit_settings_set_default_font_size(settings, 14);
+ g_assert_cmpuint(webkit_settings_get_default_font_size(settings), ==, 14);
+
+ // Default monospace font size is 13.
+ g_assert_cmpuint(webkit_settings_get_default_monospace_font_size(settings), ==, 13);
+ webkit_settings_set_default_monospace_font_size(settings, 10);
+ g_assert_cmpuint(webkit_settings_get_default_monospace_font_size(settings), ==, 10);
+
+ // Default minimum font size is 0.
+ g_assert_cmpuint(webkit_settings_get_minimum_font_size(settings), ==, 0);
+ webkit_settings_set_minimum_font_size(settings, 7);
+ g_assert_cmpuint(webkit_settings_get_minimum_font_size(settings), ==, 7);
+
+ // Default charset is "iso-8859-1".
+ g_assert_cmpstr(webkit_settings_get_default_charset(settings), ==, "iso-8859-1");
+ webkit_settings_set_default_charset(settings, "utf8");
+ g_assert_cmpstr(webkit_settings_get_default_charset(settings), ==, "utf8");
+
+ g_assert(!webkit_settings_get_enable_private_browsing(settings));
+ webkit_settings_set_enable_private_browsing(settings, TRUE);
+ g_assert(webkit_settings_get_enable_private_browsing(settings));
+
+ g_assert(!webkit_settings_get_enable_developer_extras(settings));
+ webkit_settings_set_enable_developer_extras(settings, TRUE);
+ g_assert(webkit_settings_get_enable_developer_extras(settings));
+
+ g_assert(webkit_settings_get_enable_resizable_text_areas(settings));
+ webkit_settings_set_enable_resizable_text_areas(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_resizable_text_areas(settings));
+
+ g_assert(webkit_settings_get_enable_tabs_to_links(settings));
+ webkit_settings_set_enable_tabs_to_links(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_tabs_to_links(settings));
+
+ g_assert(!webkit_settings_get_enable_dns_prefetching(settings));
+ webkit_settings_set_enable_dns_prefetching(settings, TRUE);
+ g_assert(webkit_settings_get_enable_dns_prefetching(settings));
+
+ // Caret browsing is disabled by default.
+ g_assert(!webkit_settings_get_enable_caret_browsing(settings));
+ webkit_settings_set_enable_caret_browsing(settings, TRUE);
+ g_assert(webkit_settings_get_enable_caret_browsing(settings));
+
+ // Fullscreen JavaScript API is enabled by default.
+ g_assert(webkit_settings_get_enable_fullscreen(settings));
+ webkit_settings_set_enable_fullscreen(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_fullscreen(settings));
+
+ // Print backgrounds is enabled by default
+ g_assert(webkit_settings_get_print_backgrounds(settings));
+ webkit_settings_set_print_backgrounds(settings, FALSE);
+ g_assert(!webkit_settings_get_print_backgrounds(settings));
+
+ // WebAudio is disabled by default.
+ g_assert(!webkit_settings_get_enable_webaudio(settings));
+ webkit_settings_set_enable_webaudio(settings, TRUE);
+ g_assert(webkit_settings_get_enable_webaudio(settings));
+
+ // WebGL is disabled by default.
+ g_assert(!webkit_settings_get_enable_webgl(settings));
+ webkit_settings_set_enable_webgl(settings, TRUE);
+ g_assert(webkit_settings_get_enable_webgl(settings));
+
+ // Allow Modal Dialogs is disabled by default.
+ g_assert(!webkit_settings_get_allow_modal_dialogs(settings));
+ webkit_settings_set_allow_modal_dialogs(settings, TRUE);
+ g_assert(webkit_settings_get_allow_modal_dialogs(settings));
+
+ // Zoom text only is disabled by default.
+ g_assert(!webkit_settings_get_zoom_text_only(settings));
+ webkit_settings_set_zoom_text_only(settings, TRUE);
+ g_assert(webkit_settings_get_zoom_text_only(settings));
+
+ // By default, JavaScript cannot access the clipboard.
+ g_assert(!webkit_settings_get_javascript_can_access_clipboard(settings));
+ webkit_settings_set_javascript_can_access_clipboard(settings, TRUE);
+ g_assert(webkit_settings_get_javascript_can_access_clipboard(settings));
+
+ // By default, media playback doesn't require user gestures.
+ g_assert(!webkit_settings_get_media_playback_requires_user_gesture(settings));
+ webkit_settings_set_media_playback_requires_user_gesture(settings, TRUE);
+ g_assert(webkit_settings_get_media_playback_requires_user_gesture(settings));
+
+ // By default, inline media playback is allowed
+ g_assert(webkit_settings_get_media_playback_allows_inline(settings));
+ webkit_settings_set_media_playback_allows_inline(settings, FALSE);
+ g_assert(!webkit_settings_get_media_playback_allows_inline(settings));
+
+ // By default, debug indicators are disabled.
+ g_assert(!webkit_settings_get_draw_compositing_indicators(settings));
+ webkit_settings_set_draw_compositing_indicators(settings, TRUE);
+ g_assert(webkit_settings_get_draw_compositing_indicators(settings));
+
+ // By default, site specific quirks are enabled.
+ g_assert(webkit_settings_get_enable_site_specific_quirks(settings));
+ webkit_settings_set_enable_site_specific_quirks(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_site_specific_quirks(settings));
+
+ // By default, page cache is enabled.
+ g_assert(webkit_settings_get_enable_page_cache(settings));
+ webkit_settings_set_enable_page_cache(settings, FALSE);
+ g_assert(!webkit_settings_get_enable_page_cache(settings));
+
+ // By default, smooth scrolling is disabled.
+ g_assert(!webkit_settings_get_enable_smooth_scrolling(settings));
+ webkit_settings_set_enable_smooth_scrolling(settings, TRUE);
+ g_assert(webkit_settings_get_enable_smooth_scrolling(settings));
+
+ // By default, accelerated 2D canvas is disabled.
+ g_assert(!webkit_settings_get_enable_accelerated_2d_canvas(settings));
+ webkit_settings_set_enable_accelerated_2d_canvas(settings, TRUE);
+ g_assert(webkit_settings_get_enable_accelerated_2d_canvas(settings));
+
+ // By default, writing of console messages to stdout is disabled.
+ g_assert(!webkit_settings_get_enable_write_console_messages_to_stdout(settings));
+ webkit_settings_set_enable_write_console_messages_to_stdout(settings, TRUE);
+ g_assert(webkit_settings_get_enable_write_console_messages_to_stdout(settings));
+
+ // MediaStream is disabled by default.
+ g_assert(!webkit_settings_get_enable_media_stream(settings));
+ webkit_settings_set_enable_media_stream(settings, TRUE);
+ g_assert(webkit_settings_get_enable_media_stream(settings));
+
+ // By default, SpatialNavigation is disabled
+ g_assert(!webkit_settings_get_enable_spatial_navigation(settings));
+ webkit_settings_set_enable_spatial_navigation(settings, TRUE);
+ g_assert(webkit_settings_get_enable_spatial_navigation(settings));
+
+ // MediaSource is disabled by default
+ g_assert(!webkit_settings_get_enable_mediasource(settings));
+ webkit_settings_set_enable_mediasource(settings, TRUE);
+ g_assert(webkit_settings_get_enable_mediasource(settings));
+
+ // File access from file URLs is not allowed by default.
+ g_assert(!webkit_settings_get_allow_file_access_from_file_urls(settings));
+ webkit_settings_set_allow_file_access_from_file_urls(settings, TRUE);
+ g_assert(webkit_settings_get_allow_file_access_from_file_urls(settings));
+
+ g_object_unref(G_OBJECT(settings));
+}
+
+void testWebKitSettingsNewWithSettings(Test* test, gconstpointer)
+{
+ GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new_with_settings(
+ "enable-javascript", FALSE,
+ "auto-load-images", FALSE,
+ "load-icons-ignoring-image-load-setting", TRUE,
+ nullptr));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(settings.get()));
+ g_assert(!webkit_settings_get_enable_javascript(settings.get()));
+ g_assert(!webkit_settings_get_auto_load_images(settings.get()));
+ g_assert(webkit_settings_get_load_icons_ignoring_image_load_setting(settings.get()));
+}
+
+static CString convertWebViewMainResourceDataToCString(WebViewTest* test)
+{
+ size_t mainResourceDataSize = 0;
+ const char* mainResourceData = test->mainResourceData(mainResourceDataSize);
+ return CString(mainResourceData, mainResourceDataSize);
+}
+
+static void assertThatUserAgentIsSentInHeaders(WebViewTest* test, const CString& userAgent)
+{
+ test->loadURI(gServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ ASSERT_CMP_CSTRING(convertWebViewMainResourceDataToCString(test), ==, userAgent);
+}
+
+static void testWebKitSettingsUserAgent(WebViewTest* test, gconstpointer)
+{
+ GRefPtr<WebKitSettings> settings = adoptGRef(webkit_settings_new());
+ CString defaultUserAgent = webkit_settings_get_user_agent(settings.get());
+ webkit_web_view_set_settings(test->m_webView, settings.get());
+
+ g_assert(g_strstr_len(defaultUserAgent.data(), -1, "AppleWebKit"));
+ g_assert(g_strstr_len(defaultUserAgent.data(), -1, "Safari"));
+
+ webkit_settings_set_user_agent(settings.get(), 0);
+ g_assert_cmpstr(defaultUserAgent.data(), ==, webkit_settings_get_user_agent(settings.get()));
+ assertThatUserAgentIsSentInHeaders(test, defaultUserAgent.data());
+
+ webkit_settings_set_user_agent(settings.get(), "");
+ g_assert_cmpstr(defaultUserAgent.data(), ==, webkit_settings_get_user_agent(settings.get()));
+
+ const char* funkyUserAgent = "Funky!";
+ webkit_settings_set_user_agent(settings.get(), funkyUserAgent);
+ g_assert_cmpstr(funkyUserAgent, ==, webkit_settings_get_user_agent(settings.get()));
+ assertThatUserAgentIsSentInHeaders(test, funkyUserAgent);
+
+ webkit_settings_set_user_agent_with_application_details(settings.get(), "WebKitGTK+", 0);
+ const char* userAgentWithNullVersion = webkit_settings_get_user_agent(settings.get());
+ g_assert_cmpstr(g_strstr_len(userAgentWithNullVersion, -1, defaultUserAgent.data()), ==, userAgentWithNullVersion);
+ g_assert(g_strstr_len(userAgentWithNullVersion, -1, "WebKitGTK+"));
+
+ webkit_settings_set_user_agent_with_application_details(settings.get(), "WebKitGTK+", "");
+ g_assert_cmpstr(webkit_settings_get_user_agent(settings.get()), ==, userAgentWithNullVersion);
+
+ webkit_settings_set_user_agent_with_application_details(settings.get(), "WebCatGTK+", "3.4.5");
+ const char* newUserAgent = webkit_settings_get_user_agent(settings.get());
+ g_assert(g_strstr_len(newUserAgent, -1, "3.4.5"));
+ g_assert(g_strstr_len(newUserAgent, -1, "WebCatGTK+"));
+
+ GUniquePtr<char> applicationUserAgent(g_strdup_printf("%s %s", defaultUserAgent.data(), "WebCatGTK+/3.4.5"));
+ g_assert_cmpstr(applicationUserAgent.get(), ==, webkit_settings_get_user_agent(settings.get()));
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/")) {
+ const char* userAgent = soup_message_headers_get_one(message->request_headers, "User-Agent");
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, userAgent, strlen(userAgent));
+ soup_message_body_complete(message->response_body);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+void beforeAll()
+{
+ gServer = new WebKitTestServer();
+ gServer->run(serverCallback);
+
+ Test::add("WebKitSettings", "webkit-settings", testWebKitSettings);
+ Test::add("WebKitSettings", "new-with-settings", testWebKitSettingsNewWithSettings);
+ WebViewTest::add("WebKitSettings", "user-agent", testWebKitSettingsUserAgent);
+}
+
+void afterAll()
+{
+ delete gServer;
+}
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp
new file mode 100644
index 000000000..e84cb5c20
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitUserContentManager.cpp
@@ -0,0 +1,388 @@
+/*
+ * Copyright (C) 2013-2014 Igalia S.L.
+ *
+ * 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
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <cstdarg>
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+
+class UserContentManagerTest : public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(UserContentManagerTest);
+
+ UserContentManagerTest()
+ : WebViewTest(webkit_user_content_manager_new())
+ {
+ // A reference is leaked when passing the result of webkit_user_content_manager_new()
+ // directly to webkit_web_view_new_with_user_content_manager() above. Adopting the
+ // reference here avoids the leak.
+ m_userContentManager = adoptGRef(webkit_web_view_get_user_content_manager(m_webView));
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_userContentManager.get()));
+ }
+
+ GRefPtr<WebKitUserContentManager> m_userContentManager;
+};
+
+static WebKitTestServer* kServer;
+
+// These are all here so that they can be changed easily, if necessary.
+static const char* kStyleSheetHTML = "<html><div id=\"styledElement\">Sweet stylez!</div></html>";
+static const char* kInjectedStyleSheet = "#styledElement { font-weight: bold; }";
+static const char* kStyleSheetTestScript = "getComputedStyle(document.getElementById('styledElement'))['font-weight']";
+static const char* kStyleSheetTestScriptResult = "bold";
+static const char* kInjectedScript = "document.write('<div id=\"item\">Generated by a script</div>')";
+static const char* kScriptTestScript = "document.getElementById('item').innerText";
+static const char* kScriptTestScriptResult = "Generated by a script";
+
+static void testWebViewNewWithUserContentManager(Test* test, gconstpointer)
+{
+ GRefPtr<WebKitUserContentManager> userContentManager1 = adoptGRef(webkit_user_content_manager_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(userContentManager1.get()));
+ GRefPtr<WebKitWebView> webView1 = WEBKIT_WEB_VIEW(webkit_web_view_new_with_user_content_manager(userContentManager1.get()));
+ g_assert(webkit_web_view_get_user_content_manager(webView1.get()) == userContentManager1.get());
+
+ GRefPtr<WebKitWebView> webView2 = WEBKIT_WEB_VIEW(webkit_web_view_new());
+ g_assert(webkit_web_view_get_user_content_manager(webView2.get()) != userContentManager1.get());
+}
+
+static bool isStyleSheetInjectedForURLAtPath(WebViewTest* test, const char* path)
+{
+ test->loadURI(kServer->getURIForPath(path).data());
+ test->waitUntilLoadFinished();
+
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(kStyleSheetTestScript, &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+
+ GUniquePtr<char> resultString(WebViewTest::javascriptResultToCString(javascriptResult));
+ return !g_strcmp0(resultString.get(), kStyleSheetTestScriptResult);
+}
+
+static bool isScriptInjectedForURLAtPath(WebViewTest* test, const char* path)
+{
+ test->loadURI(kServer->getURIForPath(path).data());
+ test->waitUntilLoadFinished();
+
+ GUniqueOutPtr<GError> error;
+ if (WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(kScriptTestScript, &error.outPtr())) {
+ g_assert(!error.get());
+
+ GUniquePtr<char> resultString(WebViewTest::javascriptResultToCString(javascriptResult));
+ return !g_strcmp0(resultString.get(), kScriptTestScriptResult);
+ }
+ return false;
+}
+
+static void fillURLListFromPaths(char** list, const char* path, ...)
+{
+ va_list argumentList;
+ va_start(argumentList, path);
+
+ int i = 0;
+ while (path) {
+ // FIXME: We must use a wildcard for the host here until http://wkbug.com/112476 is fixed.
+ // Until that time patterns with port numbers in them will not properly match URLs with port numbers.
+ list[i++] = g_strdup_printf("http://*/%s*", path);
+ path = va_arg(argumentList, const char*);
+ }
+}
+
+static void removeOldInjectedContentAndResetLists(WebKitUserContentManager* userContentManager, char** whitelist, char** blacklist)
+{
+ webkit_user_content_manager_remove_all_style_sheets(userContentManager);
+ webkit_user_content_manager_remove_all_scripts(userContentManager);
+
+ while (*whitelist) {
+ g_free(*whitelist);
+ *whitelist = 0;
+ whitelist++;
+ }
+
+ while (*blacklist) {
+ g_free(*blacklist);
+ *blacklist = 0;
+ blacklist++;
+ }
+}
+
+static void testUserContentManagerInjectedStyleSheet(UserContentManagerTest* test, gconstpointer)
+{
+ char* whitelist[3] = { 0, 0, 0 };
+ char* blacklist[3] = { 0, 0, 0 };
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ // Without a whitelist or a blacklist all URLs should have the injected style sheet.
+ static const char* randomPath = "somerandompath";
+ g_assert(!isStyleSheetInjectedForURLAtPath(test, randomPath));
+ WebKitUserStyleSheet* styleSheet = webkit_user_style_sheet_new(kInjectedStyleSheet, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, nullptr, nullptr);
+ webkit_user_content_manager_add_style_sheet(test->m_userContentManager.get(), styleSheet);
+ webkit_user_style_sheet_unref(styleSheet);
+ g_assert(isStyleSheetInjectedForURLAtPath(test, randomPath));
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ fillURLListFromPaths(blacklist, randomPath, 0);
+ styleSheet = webkit_user_style_sheet_new(kInjectedStyleSheet, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, nullptr, blacklist);
+ webkit_user_content_manager_add_style_sheet(test->m_userContentManager.get(), styleSheet);
+ webkit_user_style_sheet_unref(styleSheet);
+ g_assert(!isStyleSheetInjectedForURLAtPath(test, randomPath));
+ g_assert(isStyleSheetInjectedForURLAtPath(test, "someotherrandompath"));
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ static const char* inTheWhiteList = "inthewhitelist";
+ static const char* notInWhitelist = "notinthewhitelist";
+ static const char* inTheWhiteListAndBlackList = "inthewhitelistandblacklist";
+
+ fillURLListFromPaths(whitelist, inTheWhiteList, inTheWhiteListAndBlackList, 0);
+ fillURLListFromPaths(blacklist, inTheWhiteListAndBlackList, 0);
+ styleSheet = webkit_user_style_sheet_new(kInjectedStyleSheet, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_STYLE_LEVEL_USER, whitelist, blacklist);
+ webkit_user_content_manager_add_style_sheet(test->m_userContentManager.get(), styleSheet);
+ webkit_user_style_sheet_unref(styleSheet);
+ g_assert(isStyleSheetInjectedForURLAtPath(test, inTheWhiteList));
+ g_assert(!isStyleSheetInjectedForURLAtPath(test, inTheWhiteListAndBlackList));
+ g_assert(!isStyleSheetInjectedForURLAtPath(test, notInWhitelist));
+
+ // It's important to clean up the environment before other tests.
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+}
+
+static void testUserContentManagerInjectedScript(UserContentManagerTest* test, gconstpointer)
+{
+ char* whitelist[3] = { 0, 0, 0 };
+ char* blacklist[3] = { 0, 0, 0 };
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ // Without a whitelist or a blacklist all URLs should have the injected script.
+ static const char* randomPath = "somerandompath";
+ g_assert(!isScriptInjectedForURLAtPath(test, randomPath));
+ WebKitUserScript* script = webkit_user_script_new(kInjectedScript, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END, nullptr, nullptr);
+ webkit_user_content_manager_add_script(test->m_userContentManager.get(), script);
+ webkit_user_script_unref(script);
+ g_assert(isScriptInjectedForURLAtPath(test, randomPath));
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ fillURLListFromPaths(blacklist, randomPath, 0);
+ script = webkit_user_script_new(kInjectedScript, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END, nullptr, blacklist);
+ webkit_user_content_manager_add_script(test->m_userContentManager.get(), script);
+ webkit_user_script_unref(script);
+ g_assert(!isScriptInjectedForURLAtPath(test, randomPath));
+ g_assert(isScriptInjectedForURLAtPath(test, "someotherrandompath"));
+
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+
+ static const char* inTheWhiteList = "inthewhitelist";
+ static const char* notInWhitelist = "notinthewhitelist";
+ static const char* inTheWhiteListAndBlackList = "inthewhitelistandblacklist";
+
+ fillURLListFromPaths(whitelist, inTheWhiteList, inTheWhiteListAndBlackList, 0);
+ fillURLListFromPaths(blacklist, inTheWhiteListAndBlackList, 0);
+ script = webkit_user_script_new(kInjectedScript, WEBKIT_USER_CONTENT_INJECT_ALL_FRAMES, WEBKIT_USER_SCRIPT_INJECT_AT_DOCUMENT_END, whitelist, blacklist);
+ webkit_user_content_manager_add_script(test->m_userContentManager.get(), script);
+ webkit_user_script_unref(script);
+ g_assert(isScriptInjectedForURLAtPath(test, inTheWhiteList));
+ g_assert(!isScriptInjectedForURLAtPath(test, inTheWhiteListAndBlackList));
+ g_assert(!isScriptInjectedForURLAtPath(test, notInWhitelist));
+
+ // It's important to clean up the environment before other tests.
+ removeOldInjectedContentAndResetLists(test->m_userContentManager.get(), whitelist, blacklist);
+}
+
+class UserScriptMessageTest : public UserContentManagerTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(UserScriptMessageTest);
+
+ UserScriptMessageTest()
+ : UserContentManagerTest()
+ , m_userScriptMessage(nullptr)
+ {
+ }
+
+ ~UserScriptMessageTest()
+ {
+ if (m_userScriptMessage)
+ webkit_javascript_result_unref(m_userScriptMessage);
+ }
+
+ bool registerHandler(const char* handlerName)
+ {
+ return webkit_user_content_manager_register_script_message_handler(m_userContentManager.get(), handlerName);
+ }
+
+ void unregisterHandler(const char* handlerName)
+ {
+ webkit_user_content_manager_unregister_script_message_handler(m_userContentManager.get(), handlerName);
+ }
+
+ static void scriptMessageReceived(WebKitUserContentManager* userContentManager, WebKitJavascriptResult* jsResult, UserScriptMessageTest* test)
+ {
+ g_signal_handlers_disconnect_by_func(userContentManager, reinterpret_cast<gpointer>(scriptMessageReceived), test);
+ g_main_loop_quit(test->m_mainLoop);
+
+ g_assert(!test->m_userScriptMessage);
+ test->m_userScriptMessage = webkit_javascript_result_ref(jsResult);
+ }
+
+ WebKitJavascriptResult* waitUntilMessageReceived(const char* handlerName)
+ {
+ if (m_userScriptMessage) {
+ webkit_javascript_result_unref(m_userScriptMessage);
+ m_userScriptMessage = nullptr;
+ }
+
+ GUniquePtr<char> signalName(g_strdup_printf("script-message-received::%s", handlerName));
+ g_signal_connect(m_userContentManager.get(), signalName.get(), G_CALLBACK(scriptMessageReceived), this);
+
+ g_main_loop_run(m_mainLoop);
+ g_assert(m_userScriptMessage);
+ return m_userScriptMessage;
+ }
+
+ WebKitJavascriptResult* postMessageAndWaitUntilReceived(const char* handlerName, const char* javascriptValueAsText)
+ {
+ GUniquePtr<char> javascriptSnippet(g_strdup_printf("window.webkit.messageHandlers.%s.postMessage(%s);", handlerName, javascriptValueAsText));
+ webkit_web_view_run_javascript(m_webView, javascriptSnippet.get(), nullptr, nullptr, nullptr);
+ return waitUntilMessageReceived(handlerName);
+ }
+
+private:
+ WebKitJavascriptResult* m_userScriptMessage;
+};
+
+static void testUserContentManagerScriptMessageReceived(UserScriptMessageTest* test, gconstpointer)
+{
+ g_assert(test->registerHandler("msg"));
+
+ // Trying to register the same handler a second time must fail.
+ g_assert(!test->registerHandler("msg"));
+
+ test->loadHtml("<html></html>", nullptr);
+ test->waitUntilLoadFinished();
+
+ // Check that the "window.webkit.messageHandlers" namespace exists.
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers ? 'y' : 'n';", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "y");
+
+ // Check that the "document.webkit.messageHandlers.msg" namespace exists.
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers.msg ? 'y' : 'n';", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "y");
+
+ valueString.reset(WebViewTest::javascriptResultToCString(test->postMessageAndWaitUntilReceived("msg", "'user message'")));
+ g_assert_cmpstr(valueString.get(), ==, "user message");
+
+ // Messages should arrive despite of other handlers being registered.
+ g_assert(test->registerHandler("anotherHandler"));
+
+ // Check that the "document.webkit.messageHandlers.msg" namespace still exists.
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers.msg ? 'y' : 'n';", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "y");
+
+ // Check that the "document.webkit.messageHandlers.anotherHandler" namespace exists.
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers.anotherHandler ? 'y' : 'n';", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "y");
+
+ valueString.reset(WebViewTest::javascriptResultToCString(test->postMessageAndWaitUntilReceived("msg", "'handler: msg'")));
+ g_assert_cmpstr(valueString.get(), ==, "handler: msg");
+
+ valueString.reset(WebViewTest::javascriptResultToCString(test->postMessageAndWaitUntilReceived("anotherHandler", "'handler: anotherHandler'")));
+ g_assert_cmpstr(valueString.get(), ==, "handler: anotherHandler");
+
+ // Unregistering a handler and re-registering again under the same name should work.
+ test->unregisterHandler("msg");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.webkit.messageHandlers.msg.postMessage('42');", &error.outPtr());
+ g_assert(!javascriptResult);
+ g_assert(error.get());
+
+ // Re-registering a handler that has been unregistered must work
+ g_assert(test->registerHandler("msg"));
+ valueString.reset(WebViewTest::javascriptResultToCString(test->postMessageAndWaitUntilReceived("msg", "'handler: msg'")));
+ g_assert_cmpstr(valueString.get(), ==, "handler: msg");
+
+ test->unregisterHandler("anotherHandler");
+}
+
+static void testUserContentManagerScriptMessageFromDOMBindings(UserScriptMessageTest* test, gconstpointer)
+{
+ g_assert(test->registerHandler("dom"));
+
+ test->loadHtml("<html>1</html>", nullptr);
+ WebKitJavascriptResult* javascriptResult = test->waitUntilMessageReceived("dom");
+ g_assert(javascriptResult);
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "DocumentLoaded");
+
+ test->unregisterHandler("dom");
+
+ g_assert(test->registerHandler("dom-convenience"));
+
+ test->loadHtml("<html>2</html>", nullptr);
+ javascriptResult = test->waitUntilMessageReceived("dom-convenience");
+ g_assert(javascriptResult);
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "DocumentLoaded");
+
+ test->unregisterHandler("dom-convenience");
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, kStyleSheetHTML, strlen(kStyleSheetHTML));
+ soup_message_body_complete(message->response_body);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ Test::add("WebKitWebView", "new-with-user-content-manager", testWebViewNewWithUserContentManager);
+ UserContentManagerTest::add("WebKitUserContentManager", "injected-style-sheet", testUserContentManagerInjectedStyleSheet);
+ UserContentManagerTest::add("WebKitUserContentManager", "injected-script", testUserContentManagerInjectedScript);
+ UserScriptMessageTest::add("WebKitUserContentManager", "script-message-received", testUserContentManagerScriptMessageReceived);
+ UserScriptMessageTest::add("WebKitUserContentManager", "script-message-from-dom-bindings", testUserContentManagerScriptMessageFromDOMBindings);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitVersion.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitVersion.cpp
new file mode 100644
index 000000000..e747ff962
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitVersion.cpp
@@ -0,0 +1,50 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "TestMain.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+
+
+static void testWebKitVersion(Test*, gconstpointer)
+{
+ g_assert_cmpuint(webkit_get_major_version(), ==, WEBKIT_MAJOR_VERSION);
+ g_assert_cmpuint(webkit_get_minor_version(), ==, WEBKIT_MINOR_VERSION);
+ g_assert_cmpuint(webkit_get_micro_version(), ==, WEBKIT_MICRO_VERSION);
+}
+
+static void testWebKitCheckVersion(Test*, gconstpointer)
+{
+ g_assert(WEBKIT_CHECK_VERSION(WEBKIT_MAJOR_VERSION, WEBKIT_MINOR_VERSION, WEBKIT_MICRO_VERSION));
+ g_assert(!WEBKIT_CHECK_VERSION(WEBKIT_MAJOR_VERSION + 1, WEBKIT_MINOR_VERSION, WEBKIT_MICRO_VERSION));
+ g_assert(!WEBKIT_CHECK_VERSION(WEBKIT_MAJOR_VERSION, WEBKIT_MINOR_VERSION + 1, WEBKIT_MICRO_VERSION));
+ g_assert(!WEBKIT_CHECK_VERSION(WEBKIT_MAJOR_VERSION, WEBKIT_MINOR_VERSION, WEBKIT_MICRO_VERSION + 1));
+}
+
+void beforeAll()
+{
+ Test::add("WebKitVersion", "version", testWebKitVersion);
+ Test::add("WebKitVersion", "check-version", testWebKitCheckVersion);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
new file mode 100644
index 000000000..2d1d216f4
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebContext.cpp
@@ -0,0 +1,655 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ *
+ * 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
+ * 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 "LoadTrackingTest.h"
+#include "WebKitTestServer.h"
+#include <gtk/gtk.h>
+#include <webkit2/webkit2.h>
+#include <wtf/HashMap.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+#include <wtf/text/StringBuilder.h>
+#include <wtf/text/StringHash.h>
+
+static WebKitTestServer* kServer;
+
+static void testWebContextDefault(Test* test, gconstpointer)
+{
+ // Check there's a single instance of the default web context.
+ g_assert(webkit_web_context_get_default() == webkit_web_context_get_default());
+ g_assert(webkit_web_context_get_default() != test->m_webContext.get());
+}
+
+static void testWebContextConfiguration(WebViewTest* test, gconstpointer)
+{
+ WebKitWebsiteDataManager* manager = webkit_web_context_get_website_data_manager(test->m_webContext.get());
+ g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(manager));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(manager));
+
+ // Base directories are not used by TestMain.
+ g_assert(!webkit_website_data_manager_get_base_data_directory(manager));
+ g_assert(!webkit_website_data_manager_get_base_cache_directory(manager));
+
+ GUniquePtr<char> localStorageDirectory(g_build_filename(Test::dataDirectory(), "local-storage", nullptr));
+ g_assert_cmpstr(localStorageDirectory.get(), ==, webkit_website_data_manager_get_local_storage_directory(manager));
+ g_assert(g_file_test(localStorageDirectory.get(), G_FILE_TEST_IS_DIR));
+
+ test->loadURI(kServer->getURIForPath("/empty").data());
+ test->waitUntilLoadFinished();
+ test->runJavaScriptAndWaitUntilFinished("window.indexedDB.open('TestDatabase');", nullptr);
+ GUniquePtr<char> indexedDBDirectory(g_build_filename(Test::dataDirectory(), "indexeddb", nullptr));
+ g_assert_cmpstr(indexedDBDirectory.get(), ==, webkit_website_data_manager_get_indexeddb_directory(manager));
+ g_assert(g_file_test(indexedDBDirectory.get(), G_FILE_TEST_IS_DIR));
+
+ test->loadURI(kServer->getURIForPath("/appcache").data());
+ test->waitUntilLoadFinished();
+ GUniquePtr<char> applicationCacheDirectory(g_build_filename(Test::dataDirectory(), "appcache", nullptr));
+ g_assert_cmpstr(applicationCacheDirectory.get(), ==, webkit_website_data_manager_get_offline_application_cache_directory(manager));
+ GUniquePtr<char> applicationCacheDatabase(g_build_filename(applicationCacheDirectory.get(), "ApplicationCache.db", nullptr));
+ unsigned triesCount = 4;
+ while (!g_file_test(applicationCacheDatabase.get(), G_FILE_TEST_IS_REGULAR) && --triesCount)
+ test->wait(0.25);
+ g_assert(triesCount);
+
+
+ GUniquePtr<char> webSQLDirectory(g_build_filename(Test::dataDirectory(), "websql", nullptr));
+ g_assert_cmpstr(webSQLDirectory.get(), ==, webkit_website_data_manager_get_websql_directory(manager));
+ test->runJavaScriptAndWaitUntilFinished("db = openDatabase(\"TestDatabase\", \"1.0\", \"TestDatabase\", 1);", nullptr);
+ g_assert(g_file_test(webSQLDirectory.get(), G_FILE_TEST_IS_DIR));
+
+ GUniquePtr<char> diskCacheDirectory(g_build_filename(Test::dataDirectory(), "disk-cache", nullptr));
+ g_assert_cmpstr(diskCacheDirectory.get(), ==, webkit_website_data_manager_get_disk_cache_directory(manager));
+ g_assert(g_file_test(diskCacheDirectory.get(), G_FILE_TEST_IS_DIR));
+
+ // The default context should have a different manager with different configuration.
+ WebKitWebsiteDataManager* defaultManager = webkit_web_context_get_website_data_manager(webkit_web_context_get_default());
+ g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(defaultManager));
+ g_assert(manager != defaultManager);
+ g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(manager), !=, webkit_website_data_manager_get_local_storage_directory(defaultManager));
+ g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(manager), !=, webkit_website_data_manager_get_indexeddb_directory(defaultManager));
+ g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(manager), !=, webkit_website_data_manager_get_disk_cache_directory(defaultManager));
+ g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(manager), !=, webkit_website_data_manager_get_offline_application_cache_directory(defaultManager));
+ g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(manager), !=, webkit_website_data_manager_get_websql_directory(defaultManager));
+
+ // Using Test::dataDirectory() we get the default configuration but for a differrent prefix.
+ GRefPtr<WebKitWebsiteDataManager> baseDataManager = adoptGRef(webkit_website_data_manager_new("base-data-directory", Test::dataDirectory(), "base-cache-directory", Test::dataDirectory(), nullptr));
+ g_assert(WEBKIT_IS_WEBSITE_DATA_MANAGER(baseDataManager.get()));
+
+ localStorageDirectory.reset(g_build_filename(Test::dataDirectory(), "localstorage", nullptr));
+ g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(baseDataManager.get()), ==, localStorageDirectory.get());
+
+ indexedDBDirectory.reset(g_build_filename(Test::dataDirectory(), "databases", "indexeddb", nullptr));
+ g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(baseDataManager.get()), ==, indexedDBDirectory.get());
+
+ applicationCacheDirectory.reset(g_build_filename(Test::dataDirectory(), "applications", nullptr));
+ g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(baseDataManager.get()), ==, applicationCacheDirectory.get());
+
+ webSQLDirectory.reset(g_build_filename(Test::dataDirectory(), "databases", nullptr));
+ g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(baseDataManager.get()), ==, webSQLDirectory.get());
+
+ g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(baseDataManager.get()), ==, Test::dataDirectory());
+
+ // Any specific configuration provided takes precedence over base dirs.
+ indexedDBDirectory.reset(g_build_filename(Test::dataDirectory(), "mycustomindexeddb", nullptr));
+ applicationCacheDirectory.reset(g_build_filename(Test::dataDirectory(), "mycustomappcache", nullptr));
+ baseDataManager = adoptGRef(webkit_website_data_manager_new("base-data-directory", Test::dataDirectory(), "base-cache-directory", Test::dataDirectory(),
+ "indexeddb-directory", indexedDBDirectory.get(), "offline-application-cache-directory", applicationCacheDirectory.get(), nullptr));
+ g_assert_cmpstr(webkit_website_data_manager_get_indexeddb_directory(baseDataManager.get()), ==, indexedDBDirectory.get());
+ g_assert_cmpstr(webkit_website_data_manager_get_offline_application_cache_directory(baseDataManager.get()), ==, applicationCacheDirectory.get());
+ // The resutl should be the same as previous manager.
+ g_assert_cmpstr(webkit_website_data_manager_get_local_storage_directory(baseDataManager.get()), ==, localStorageDirectory.get());
+ g_assert_cmpstr(webkit_website_data_manager_get_websql_directory(baseDataManager.get()), ==, webSQLDirectory.get());
+ g_assert_cmpstr(webkit_website_data_manager_get_disk_cache_directory(baseDataManager.get()), ==, Test::dataDirectory());
+}
+
+class PluginsTest: public Test {
+public:
+ MAKE_GLIB_TEST_FIXTURE(PluginsTest);
+
+ PluginsTest()
+ : m_mainLoop(g_main_loop_new(nullptr, TRUE))
+ , m_plugins(nullptr)
+ {
+ webkit_web_context_set_additional_plugins_directory(m_webContext.get(), WEBKIT_TEST_PLUGIN_DIR);
+ }
+
+ ~PluginsTest()
+ {
+ g_main_loop_unref(m_mainLoop);
+ g_list_free_full(m_plugins, g_object_unref);
+ }
+
+ static void getPluginsAsyncReadyCallback(GObject*, GAsyncResult* result, PluginsTest* test)
+ {
+ test->m_plugins = webkit_web_context_get_plugins_finish(test->m_webContext.get(), result, nullptr);
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ GList* getPlugins()
+ {
+ g_list_free_full(m_plugins, g_object_unref);
+ webkit_web_context_get_plugins(m_webContext.get(), nullptr, reinterpret_cast<GAsyncReadyCallback>(getPluginsAsyncReadyCallback), this);
+ g_main_loop_run(m_mainLoop);
+ return m_plugins;
+ }
+
+ GMainLoop* m_mainLoop;
+ GList* m_plugins;
+};
+
+static void testWebContextGetPlugins(PluginsTest* test, gconstpointer)
+{
+ GList* plugins = test->getPlugins();
+ g_assert(plugins);
+
+ GRefPtr<WebKitPlugin> testPlugin;
+ for (GList* item = plugins; item; item = g_list_next(item)) {
+ WebKitPlugin* plugin = WEBKIT_PLUGIN(item->data);
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(plugin));
+ if (!g_strcmp0(webkit_plugin_get_name(plugin), "WebKit Test PlugIn")) {
+ testPlugin = plugin;
+ break;
+ }
+ }
+ g_assert(WEBKIT_IS_PLUGIN(testPlugin.get()));
+
+ GUniquePtr<char> pluginPath(g_build_filename(WEBKIT_TEST_PLUGIN_DIR, "libTestNetscapePlugin.so", nullptr));
+ g_assert_cmpstr(webkit_plugin_get_path(testPlugin.get()), ==, pluginPath.get());
+ g_assert_cmpstr(webkit_plugin_get_description(testPlugin.get()), ==, "Simple Netscape® plug-in that handles test content for WebKit");
+ GList* mimeInfoList = webkit_plugin_get_mime_info_list(testPlugin.get());
+ g_assert(mimeInfoList);
+ g_assert_cmpuint(g_list_length(mimeInfoList), ==, 2);
+
+ WebKitMimeInfo* mimeInfo = static_cast<WebKitMimeInfo*>(mimeInfoList->data);
+ g_assert_cmpstr(webkit_mime_info_get_mime_type(mimeInfo), ==, "image/png");
+ g_assert_cmpstr(webkit_mime_info_get_description(mimeInfo), ==, "png image");
+ const gchar* const* extensions = webkit_mime_info_get_extensions(mimeInfo);
+ g_assert(extensions);
+ g_assert_cmpstr(extensions[0], ==, "png");
+
+ mimeInfoList = g_list_next(mimeInfoList);
+ mimeInfo = static_cast<WebKitMimeInfo*>(mimeInfoList->data);
+ g_assert_cmpstr(webkit_mime_info_get_mime_type(mimeInfo), ==, "application/x-webkit-test-netscape");
+ g_assert_cmpstr(webkit_mime_info_get_description(mimeInfo), ==, "test netscape content");
+ extensions = webkit_mime_info_get_extensions(mimeInfo);
+ g_assert(extensions);
+ g_assert_cmpstr(extensions[0], ==, "testnetscape");
+}
+
+static const char* kBarHTML = "<html><body>Bar</body></html>";
+static const char* kEchoHTMLFormat = "<html><body>%s</body></html>";
+static const char* errorDomain = "test";
+static const int errorCode = 10;
+
+static const char* genericErrorMessage = "Error message.";
+static const char* beforeReceiveResponseErrorMessage = "Error before didReceiveResponse.";
+static const char* afterInitialChunkErrorMessage = "Error after reading the initial chunk.";
+
+class URISchemeTest: public LoadTrackingTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(URISchemeTest);
+
+ struct URISchemeHandler {
+ URISchemeHandler()
+ : replyLength(0)
+ {
+ }
+
+ URISchemeHandler(const char* reply, int replyLength, const char* mimeType)
+ : reply(reply)
+ , replyLength(replyLength)
+ , mimeType(mimeType)
+ {
+ }
+
+ CString reply;
+ int replyLength;
+ CString mimeType;
+ };
+
+ static void uriSchemeRequestCallback(WebKitURISchemeRequest* request, gpointer userData)
+ {
+ URISchemeTest* test = static_cast<URISchemeTest*>(userData);
+ test->m_uriSchemeRequest = request;
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+
+ g_assert(webkit_uri_scheme_request_get_web_view(request) == test->m_webView);
+
+ const char* scheme = webkit_uri_scheme_request_get_scheme(request);
+ g_assert(scheme);
+ g_assert(test->m_handlersMap.contains(String::fromUTF8(scheme)));
+
+ const URISchemeHandler& handler = test->m_handlersMap.get(String::fromUTF8(scheme));
+
+ GRefPtr<GInputStream> inputStream = adoptGRef(g_memory_input_stream_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(inputStream.get()));
+
+ const gchar* requestPath = webkit_uri_scheme_request_get_path(request);
+
+ if (!g_strcmp0(scheme, "error")) {
+ if (!g_strcmp0(requestPath, "before-response")) {
+ GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, beforeReceiveResponseErrorMessage));
+ // We call finish() and then finish_error() to make sure that not even
+ // the didReceiveResponse message is processed at the time of failing.
+ webkit_uri_scheme_request_finish(request, G_INPUT_STREAM(inputStream.get()), handler.replyLength, handler.mimeType.data());
+ webkit_uri_scheme_request_finish_error(request, error.get());
+ } else if (!g_strcmp0(requestPath, "after-first-chunk")) {
+ g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.data(), handler.reply.length(), 0);
+ webkit_uri_scheme_request_finish(request, inputStream.get(), handler.replyLength, handler.mimeType.data());
+ // We need to wait until we reach the load-committed state before calling webkit_uri_scheme_request_finish_error(),
+ // so we rely on the test using finishOnCommittedAndWaitUntilLoadFinished() to actually call it from loadCommitted().
+ } else {
+ GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, genericErrorMessage));
+ webkit_uri_scheme_request_finish_error(request, error.get());
+ }
+ return;
+ }
+
+ if (!g_strcmp0(scheme, "echo")) {
+ char* replyHTML = g_strdup_printf(handler.reply.data(), requestPath);
+ g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), replyHTML, strlen(replyHTML), g_free);
+ } else if (!g_strcmp0(scheme, "closed"))
+ g_input_stream_close(inputStream.get(), 0, 0);
+ else if (!handler.reply.isNull())
+ g_memory_input_stream_add_data(G_MEMORY_INPUT_STREAM(inputStream.get()), handler.reply.data(), handler.reply.length(), 0);
+
+ webkit_uri_scheme_request_finish(request, inputStream.get(), handler.replyLength, handler.mimeType.data());
+ }
+
+ void registerURISchemeHandler(const char* scheme, const char* reply, int replyLength, const char* mimeType)
+ {
+ m_handlersMap.set(String::fromUTF8(scheme), URISchemeHandler(reply, replyLength, mimeType));
+ webkit_web_context_register_uri_scheme(m_webContext.get(), scheme, uriSchemeRequestCallback, this, 0);
+ }
+
+ virtual void loadCommitted() override
+ {
+ if (m_finishOnCommitted) {
+ GUniquePtr<GError> error(g_error_new_literal(g_quark_from_string(errorDomain), errorCode, afterInitialChunkErrorMessage));
+ webkit_uri_scheme_request_finish_error(m_uriSchemeRequest.get(), error.get());
+ }
+
+ LoadTrackingTest::loadCommitted();
+ }
+
+ void finishOnCommittedAndWaitUntilLoadFinished()
+ {
+ m_finishOnCommitted = true;
+ waitUntilLoadFinished();
+ m_finishOnCommitted = false;
+ }
+
+ GRefPtr<WebKitURISchemeRequest> m_uriSchemeRequest;
+ HashMap<String, URISchemeHandler> m_handlersMap;
+ bool m_finishOnCommitted { false };
+};
+
+String generateHTMLContent(unsigned contentLength)
+{
+ String baseString("abcdefghijklmnopqrstuvwxyz0123457890");
+ unsigned baseLength = baseString.length();
+
+ StringBuilder builder;
+ builder.append("<html><body>");
+
+ if (contentLength <= baseLength)
+ builder.append(baseString, 0, contentLength);
+ else {
+ unsigned currentLength = 0;
+ while (currentLength < contentLength) {
+ if ((currentLength + baseLength) <= contentLength)
+ builder.append(baseString);
+ else
+ builder.append(baseString, 0, contentLength - currentLength);
+
+ // Account for the 12 characters of the '<html><body>' prefix.
+ currentLength = builder.length() - 12;
+ }
+ }
+ builder.append("</body></html>");
+
+ return builder.toString();
+}
+
+static void testWebContextURIScheme(URISchemeTest* test, gconstpointer)
+{
+ test->registerURISchemeHandler("foo", kBarHTML, strlen(kBarHTML), "text/html");
+ test->loadURI("foo:blank");
+ test->waitUntilLoadFinished();
+ size_t mainResourceDataSize = 0;
+ const char* mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, strlen(kBarHTML));
+ g_assert(!strncmp(mainResourceData, kBarHTML, mainResourceDataSize));
+
+ test->registerURISchemeHandler("echo", kEchoHTMLFormat, -1, "text/html");
+ test->loadURI("echo:hello-world");
+ test->waitUntilLoadFinished();
+ GUniquePtr<char> echoHTML(g_strdup_printf(kEchoHTMLFormat, webkit_uri_scheme_request_get_path(test->m_uriSchemeRequest.get())));
+ mainResourceDataSize = 0;
+ mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, strlen(echoHTML.get()));
+ g_assert(!strncmp(mainResourceData, echoHTML.get(), mainResourceDataSize));
+
+ test->loadURI("echo:with#fragment");
+ test->waitUntilLoadFinished();
+ g_assert_cmpstr(webkit_uri_scheme_request_get_path(test->m_uriSchemeRequest.get()), ==, "with");
+ g_assert_cmpstr(webkit_uri_scheme_request_get_uri(test->m_uriSchemeRequest.get()), ==, "echo:with#fragment");
+ echoHTML.reset(g_strdup_printf(kEchoHTMLFormat, webkit_uri_scheme_request_get_path(test->m_uriSchemeRequest.get())));
+ mainResourceDataSize = 0;
+ mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpint(mainResourceDataSize, ==, strlen(echoHTML.get()));
+ g_assert(!strncmp(mainResourceData, echoHTML.get(), mainResourceDataSize));
+
+ test->registerURISchemeHandler("nomime", kBarHTML, -1, 0);
+ test->m_loadEvents.clear();
+ test->loadURI("nomime:foo-bar");
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+
+ test->registerURISchemeHandler("empty", 0, 0, "text/html");
+ test->m_loadEvents.clear();
+ test->loadURI("empty:nothing");
+ test->waitUntilLoadFinished();
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::LoadFailed));
+
+ // Anything over 8192 bytes will get multiple calls to g_input_stream_read_async in
+ // WebKitURISchemeRequest when reading data, but we still need way more than that to
+ // ensure that we reach the load-committed state before failing, so we use an 8MB HTML.
+ String longHTMLContent = generateHTMLContent(8 * 1024 * 1024);
+ test->registerURISchemeHandler("error", longHTMLContent.utf8().data(), -1, "text/html");
+ test->m_loadEvents.clear();
+ test->loadURI("error:error");
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(test->m_loadFailed);
+ g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
+ g_assert_cmpstr(test->m_error->message, ==, genericErrorMessage);
+
+ test->m_loadEvents.clear();
+ test->loadURI("error:before-response");
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(test->m_loadFailed);
+ g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
+ g_assert_cmpstr(test->m_error->message, ==, beforeReceiveResponseErrorMessage);
+
+ test->m_loadEvents.clear();
+ test->loadURI("error:after-first-chunk");
+ test->finishOnCommittedAndWaitUntilLoadFinished();
+ g_assert(!test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::LoadFailed));
+ g_assert(test->m_loadFailed);
+ g_assert_error(test->m_error.get(), g_quark_from_string(errorDomain), errorCode);
+ g_assert_cmpstr(test->m_error->message, ==, afterInitialChunkErrorMessage);
+
+ test->registerURISchemeHandler("closed", 0, 0, 0);
+ test->m_loadEvents.clear();
+ test->loadURI("closed:input-stream");
+ test->waitUntilLoadFinished();
+ g_assert(test->m_loadEvents.contains(LoadTrackingTest::ProvisionalLoadFailed));
+ g_assert(test->m_loadFailed);
+ g_assert_error(test->m_error.get(), G_IO_ERROR, G_IO_ERROR_CLOSED);
+}
+
+static void testWebContextSpellChecker(Test* test, gconstpointer)
+{
+ WebKitWebContext* webContext = test->m_webContext.get();
+
+ // Check what happens if no spell checking language has been set.
+ const gchar* const* currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
+ g_assert(!currentLanguage);
+
+ // Set the language to a specific one.
+ GRefPtr<GPtrArray> languages = adoptGRef(g_ptr_array_new());
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("en_US")));
+ g_ptr_array_add(languages.get(), 0);
+ webkit_web_context_set_spell_checking_languages(webContext, reinterpret_cast<const char* const*>(languages->pdata));
+ currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
+ g_assert_cmpuint(g_strv_length(const_cast<char**>(currentLanguage)), ==, 1);
+ g_assert_cmpstr(currentLanguage[0], ==, "en_US");
+
+ // Set the language string to list of valid languages.
+ g_ptr_array_remove_index_fast(languages.get(), languages->len - 1);
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("en_GB")));
+ g_ptr_array_add(languages.get(), 0);
+ webkit_web_context_set_spell_checking_languages(webContext, reinterpret_cast<const char* const*>(languages->pdata));
+ currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
+ g_assert_cmpuint(g_strv_length(const_cast<char**>(currentLanguage)), ==, 2);
+ g_assert_cmpstr(currentLanguage[0], ==, "en_US");
+ g_assert_cmpstr(currentLanguage[1], ==, "en_GB");
+
+ // Try passing a wrong language along with good ones.
+ g_ptr_array_remove_index_fast(languages.get(), languages->len - 1);
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("bd_WR")));
+ g_ptr_array_add(languages.get(), 0);
+ webkit_web_context_set_spell_checking_languages(webContext, reinterpret_cast<const char* const*>(languages->pdata));
+ currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
+ g_assert_cmpuint(g_strv_length(const_cast<char**>(currentLanguage)), ==, 2);
+ g_assert_cmpstr(currentLanguage[0], ==, "en_US");
+ g_assert_cmpstr(currentLanguage[1], ==, "en_GB");
+
+ // Try passing a list with only wrong languages.
+ languages = adoptGRef(g_ptr_array_new());
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("bd_WR")));
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("wr_BD")));
+ g_ptr_array_add(languages.get(), 0);
+ webkit_web_context_set_spell_checking_languages(webContext, reinterpret_cast<const char* const*>(languages->pdata));
+ currentLanguage = webkit_web_context_get_spell_checking_languages(webContext);
+ g_assert(!currentLanguage);
+
+ // Check disabling and re-enabling spell checking.
+ webkit_web_context_set_spell_checking_enabled(webContext, FALSE);
+ g_assert(!webkit_web_context_get_spell_checking_enabled(webContext));
+ webkit_web_context_set_spell_checking_enabled(webContext, TRUE);
+ g_assert(webkit_web_context_get_spell_checking_enabled(webContext));
+}
+
+static void testWebContextLanguages(WebViewTest* test, gconstpointer)
+{
+ static const char* expectedDefaultLanguage = "en";
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ size_t mainResourceDataSize = 0;
+ const char* mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpuint(mainResourceDataSize, ==, strlen(expectedDefaultLanguage));
+ g_assert(!strncmp(mainResourceData, expectedDefaultLanguage, mainResourceDataSize));
+
+ GRefPtr<GPtrArray> languages = adoptGRef(g_ptr_array_new());
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("en")));
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("ES_es")));
+ g_ptr_array_add(languages.get(), const_cast<gpointer>(static_cast<const void*>("dE")));
+ g_ptr_array_add(languages.get(), 0);
+ webkit_web_context_set_preferred_languages(test->m_webContext.get(), reinterpret_cast<const char* const*>(languages->pdata));
+
+ static const char* expectedLanguages = "en, es-es;q=0.90, de;q=0.80";
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ mainResourceDataSize = 0;
+ mainResourceData = test->mainResourceData(mainResourceDataSize);
+ g_assert_cmpuint(mainResourceDataSize, ==, strlen(expectedLanguages));
+ g_assert(!strncmp(mainResourceData, expectedLanguages, mainResourceDataSize));
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/")) {
+ const char* acceptLanguage = soup_message_headers_get_one(message->request_headers, "Accept-Language");
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_append(message->response_body, SOUP_MEMORY_COPY, acceptLanguage, strlen(acceptLanguage));
+ soup_message_body_complete(message->response_body);
+ } else if (g_str_equal(path, "/empty")) {
+ const char* emptyHTML = "<html><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, emptyHTML, strlen(emptyHTML));
+ soup_message_body_complete(message->response_body);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ } else if (g_str_equal(path, "/appcache")) {
+ const char* appcacheHTML = "<html manifest=appcache.manifest><body></body></html>";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, appcacheHTML, strlen(appcacheHTML));
+ soup_message_body_complete(message->response_body);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ } else if (g_str_equal(path, "/appcache.manifest")) {
+ const char* appcacheManifest = "CACHE MANIFEST\nCACHE:\nappcache/foo.txt\n";
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, appcacheManifest, strlen(appcacheManifest));
+ soup_message_body_complete(message->response_body);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ } else if (g_str_equal(path, "/appcache/foo.txt")) {
+ soup_message_body_append(message->response_body, SOUP_MEMORY_STATIC, "foo", 3);
+ soup_message_body_complete(message->response_body);
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+class SecurityPolicyTest: public Test {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SecurityPolicyTest);
+
+ enum SecurityPolicy {
+ Local = 1 << 1,
+ NoAccess = 1 << 2,
+ DisplayIsolated = 1 << 3,
+ Secure = 1 << 4,
+ CORSEnabled = 1 << 5,
+ EmptyDocument = 1 << 6
+ };
+
+ SecurityPolicyTest()
+ : m_manager(webkit_web_context_get_security_manager(m_webContext.get()))
+ {
+ }
+
+ void verifyThatSchemeMatchesPolicy(const char* scheme, unsigned policy)
+ {
+ if (policy & Local)
+ g_assert(webkit_security_manager_uri_scheme_is_local(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_local(m_manager, scheme));
+ if (policy & NoAccess)
+ g_assert(webkit_security_manager_uri_scheme_is_no_access(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_no_access(m_manager, scheme));
+ if (policy & DisplayIsolated)
+ g_assert(webkit_security_manager_uri_scheme_is_display_isolated(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_display_isolated(m_manager, scheme));
+ if (policy & Secure)
+ g_assert(webkit_security_manager_uri_scheme_is_secure(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_secure(m_manager, scheme));
+ if (policy & CORSEnabled)
+ g_assert(webkit_security_manager_uri_scheme_is_cors_enabled(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_cors_enabled(m_manager, scheme));
+ if (policy & EmptyDocument)
+ g_assert(webkit_security_manager_uri_scheme_is_empty_document(m_manager, scheme));
+ else
+ g_assert(!webkit_security_manager_uri_scheme_is_empty_document(m_manager, scheme));
+ }
+
+ WebKitSecurityManager* m_manager;
+};
+
+static void testWebContextSecurityPolicy(SecurityPolicyTest* test, gconstpointer)
+{
+ // VerifyThatSchemeMatchesPolicy default policy for well known schemes.
+ test->verifyThatSchemeMatchesPolicy("http", SecurityPolicyTest::CORSEnabled);
+ test->verifyThatSchemeMatchesPolicy("https", SecurityPolicyTest::CORSEnabled | SecurityPolicyTest::Secure);
+ test->verifyThatSchemeMatchesPolicy("file", SecurityPolicyTest::Local);
+ test->verifyThatSchemeMatchesPolicy("data", SecurityPolicyTest::NoAccess | SecurityPolicyTest::Secure);
+ test->verifyThatSchemeMatchesPolicy("about", SecurityPolicyTest::NoAccess | SecurityPolicyTest::Secure | SecurityPolicyTest::EmptyDocument);
+
+ // Custom scheme.
+ test->verifyThatSchemeMatchesPolicy("foo", 0);
+
+ webkit_security_manager_register_uri_scheme_as_local(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local);
+ webkit_security_manager_register_uri_scheme_as_no_access(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local | SecurityPolicyTest::NoAccess);
+ webkit_security_manager_register_uri_scheme_as_display_isolated(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local | SecurityPolicyTest::NoAccess | SecurityPolicyTest::DisplayIsolated);
+ webkit_security_manager_register_uri_scheme_as_secure(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local | SecurityPolicyTest::NoAccess | SecurityPolicyTest::DisplayIsolated | SecurityPolicyTest::Secure);
+ webkit_security_manager_register_uri_scheme_as_cors_enabled(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local | SecurityPolicyTest::NoAccess | SecurityPolicyTest::DisplayIsolated | SecurityPolicyTest::Secure
+ | SecurityPolicyTest::CORSEnabled);
+ webkit_security_manager_register_uri_scheme_as_empty_document(test->m_manager, "foo");
+ test->verifyThatSchemeMatchesPolicy("foo", SecurityPolicyTest::Local | SecurityPolicyTest::NoAccess | SecurityPolicyTest::DisplayIsolated | SecurityPolicyTest::Secure
+ | SecurityPolicyTest::CORSEnabled | SecurityPolicyTest::EmptyDocument);
+}
+
+static void testWebContextSecurityFileXHR(WebViewTest* test, gconstpointer)
+{
+ GUniquePtr<char> fileURL(g_strdup_printf("file://%s/simple.html", Test::getResourcesDir(Test::WebKit2Resources).data()));
+ test->loadURI(fileURL.get());
+ test->waitUntilLoadFinished();
+
+ GUniquePtr<char> jsonURL(g_strdup_printf("file://%s/simple.json", Test::getResourcesDir().data()));
+ GUniquePtr<char> xhr(g_strdup_printf("var xhr = new XMLHttpRequest; xhr.open(\"GET\", \"%s\"); xhr.send();", jsonURL.get()));
+
+ // By default file access is not allowed, this will fail with a cross-origin error.
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
+ g_assert(!javascriptResult);
+ g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
+
+ // Allow file access from file URLs.
+ webkit_settings_set_allow_file_access_from_file_urls(webkit_web_view_get_settings(test->m_webView), TRUE);
+ test->loadURI(fileURL.get());
+ test->waitUntilLoadFinished();
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+
+ // It isn't still possible to load file from an HTTP URL.
+ test->loadURI(kServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished(xhr.get(), &error.outPtr());
+ g_assert(!javascriptResult);
+ g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
+
+ webkit_settings_set_allow_file_access_from_file_urls(webkit_web_view_get_settings(test->m_webView), FALSE);
+}
+
+void beforeAll()
+{
+ kServer = new WebKitTestServer();
+ kServer->run(serverCallback);
+
+ Test::add("WebKitWebContext", "default-context", testWebContextDefault);
+ WebViewTest::add("WebKitWebContext", "configuration", testWebContextConfiguration);
+ PluginsTest::add("WebKitWebContext", "get-plugins", testWebContextGetPlugins);
+ URISchemeTest::add("WebKitWebContext", "uri-scheme", testWebContextURIScheme);
+ Test::add("WebKitWebContext", "spell-checker", testWebContextSpellChecker);
+ WebViewTest::add("WebKitWebContext", "languages", testWebContextLanguages);
+ SecurityPolicyTest::add("WebKitSecurityManager", "security-policy", testWebContextSecurityPolicy);
+ WebViewTest::add("WebKitSecurityManager", "file-xhr", testWebContextSecurityFileXHR);
+}
+
+void afterAll()
+{
+ delete kServer;
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp
new file mode 100644
index 000000000..9248097ab
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebKitWebView.cpp
@@ -0,0 +1,894 @@
+/*
+ * Copyright (C) 2011 Igalia S.L.
+ * Copyright (C) 2014 Collabora Ltd.
+ *
+ * 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
+ * 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 "WebKitTestServer.h"
+#include "WebViewTest.h"
+#include <JavaScriptCore/JSStringRef.h>
+#include <JavaScriptCore/JSValueRef.h>
+#include <glib/gstdio.h>
+#include <wtf/glib/GRefPtr.h>
+
+class IsPlayingAudioWebViewTest : public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(IsPlayingAudioWebViewTest);
+
+ static void isPlayingAudioChanged(GObject*, GParamSpec*, IsPlayingAudioWebViewTest* test)
+ {
+ g_signal_handlers_disconnect_by_func(test->m_webView, reinterpret_cast<void*>(isPlayingAudioChanged), test);
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ void waitUntilIsPlayingAudioChanged()
+ {
+ g_signal_connect(m_webView, "notify::is-playing-audio", G_CALLBACK(isPlayingAudioChanged), this);
+ g_main_loop_run(m_mainLoop);
+ }
+};
+
+static WebKitTestServer* gServer;
+
+static void testWebViewWebContext(WebViewTest* test, gconstpointer)
+{
+ g_assert(webkit_web_view_get_context(test->m_webView) == test->m_webContext.get());
+ g_assert(webkit_web_context_get_default() != test->m_webContext.get());
+
+ // Check that a web view created with g_object_new has the default context.
+ GRefPtr<WebKitWebView> webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW, nullptr));
+ g_assert(webkit_web_view_get_context(webView.get()) == webkit_web_context_get_default());
+
+ // Check that a web view created with a related view has the related view context.
+ webView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_related_view(test->m_webView));
+ g_assert(webkit_web_view_get_context(webView.get()) == test->m_webContext.get());
+
+ // Check that a web context given as construct parameter is ignored if a related view is also provided.
+ webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
+ "web-context", webkit_web_context_get_default(), "related-view", test->m_webView, nullptr));
+ g_assert(webkit_web_view_get_context(webView.get()) == test->m_webContext.get());
+}
+
+static void testWebViewWebContextLifetime(WebViewTest* test, gconstpointer)
+{
+ WebKitWebContext* webContext = webkit_web_context_new();
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webContext));
+
+ GtkWidget* webView = webkit_web_view_new_with_context(webContext);
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView));
+
+ g_object_ref_sink(webView);
+ g_object_unref(webContext);
+
+ // Check that the web view still has a valid context.
+ WebKitWebContext* tmpContext = webkit_web_view_get_context(WEBKIT_WEB_VIEW(webView));
+ g_assert_true(WEBKIT_IS_WEB_CONTEXT(tmpContext));
+ g_object_unref(webView);
+
+ WebKitWebContext* webContext2 = webkit_web_context_new();
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webContext2));
+
+ GtkWidget* webView2 = webkit_web_view_new_with_context(webContext2);
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView2));
+
+ g_object_ref_sink(webView2);
+ g_object_unref(webView2);
+
+ // Check that the context is still valid.
+ g_assert_true(WEBKIT_IS_WEB_CONTEXT(webContext2));
+ g_object_unref(webContext2);
+}
+
+static void testWebViewCustomCharset(WebViewTest* test, gconstpointer)
+{
+ test->loadURI(gServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert(!webkit_web_view_get_custom_charset(test->m_webView));
+ webkit_web_view_set_custom_charset(test->m_webView, "utf8");
+ // Changing the charset reloads the page, so wait until reloaded.
+ test->waitUntilLoadFinished();
+ g_assert_cmpstr(webkit_web_view_get_custom_charset(test->m_webView), ==, "utf8");
+
+ // Go back to the default charset and wait until reloaded.
+ webkit_web_view_set_custom_charset(test->m_webView, nullptr);
+ test->waitUntilLoadFinished();
+ g_assert(!webkit_web_view_get_custom_charset(test->m_webView));
+}
+
+static void testWebViewSettings(WebViewTest* test, gconstpointer)
+{
+ WebKitSettings* defaultSettings = webkit_web_view_get_settings(test->m_webView);
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(defaultSettings));
+ g_assert(defaultSettings);
+ g_assert(webkit_settings_get_enable_javascript(defaultSettings));
+
+ GRefPtr<WebKitSettings> newSettings = adoptGRef(webkit_settings_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newSettings.get()));
+ g_object_set(G_OBJECT(newSettings.get()), "enable-javascript", FALSE, NULL);
+ webkit_web_view_set_settings(test->m_webView, newSettings.get());
+
+ WebKitSettings* settings = webkit_web_view_get_settings(test->m_webView);
+ g_assert(settings != defaultSettings);
+ g_assert(!webkit_settings_get_enable_javascript(settings));
+
+ GRefPtr<GtkWidget> webView2 = webkit_web_view_new();
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView2.get()));
+ webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView2.get()), settings);
+ g_assert(webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView2.get())) == settings);
+
+ GRefPtr<WebKitSettings> newSettings2 = adoptGRef(webkit_settings_new());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(newSettings2.get()));
+ webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView2.get()), newSettings2.get());
+ settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView2.get()));
+ g_assert(settings == newSettings2.get());
+ g_assert(webkit_settings_get_enable_javascript(settings));
+
+ GRefPtr<GtkWidget> webView3 = webkit_web_view_new_with_settings(newSettings2.get());
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webView3.get()));
+ g_assert(webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView3.get())) == newSettings2.get());
+}
+
+static void testWebViewZoomLevel(WebViewTest* test, gconstpointer)
+{
+ g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 1);
+ webkit_web_view_set_zoom_level(test->m_webView, 2.5);
+ g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
+
+ webkit_settings_set_zoom_text_only(webkit_web_view_get_settings(test->m_webView), TRUE);
+ // The zoom level shouldn't change when zoom-text-only setting changes.
+ g_assert_cmpfloat(webkit_web_view_get_zoom_level(test->m_webView), ==, 2.5);
+}
+
+static void testWebViewRunJavaScript(WebViewTest* test, gconstpointer)
+{
+ static const char* html = "<html><body><a id='WebKitLink' href='http://www.webkitgtk.org/' title='WebKitGTK+ Title'>WebKitGTK+ Website</a></body></html>";
+ test->loadHtml(html, 0);
+ test->waitUntilLoadFinished();
+
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.document.getElementById('WebKitLink').title;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "WebKitGTK+ Title");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.document.getElementById('WebKitLink').href;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "http://www.webkitgtk.org/");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("window.document.getElementById('WebKitLink').textContent", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "WebKitGTK+ Website");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("a = 25;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert_cmpfloat(WebViewTest::javascriptResultToNumber(javascriptResult), ==, 25);
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("a = 2.5;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert_cmpfloat(WebViewTest::javascriptResultToNumber(javascriptResult), ==, 2.5);
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("a = true", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(WebViewTest::javascriptResultToBoolean(javascriptResult));
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("a = false", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(!WebViewTest::javascriptResultToBoolean(javascriptResult));
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("a = null", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(WebViewTest::javascriptResultIsNull(javascriptResult));
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("function Foo() { a = 25; } Foo();", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(WebViewTest::javascriptResultIsUndefined(javascriptResult));
+
+ javascriptResult = test->runJavaScriptFromGResourceAndWaitUntilFinished("/org/webkit/webkit2gtk/tests/link-title.js", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "WebKitGTK+ Title");
+
+ javascriptResult = test->runJavaScriptFromGResourceAndWaitUntilFinished("/wrong/path/to/resource.js", &error.outPtr());
+ g_assert(!javascriptResult);
+ g_assert_error(error.get(), G_RESOURCE_ERROR, G_RESOURCE_ERROR_NOT_FOUND);
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("foo();", &error.outPtr());
+ g_assert(!javascriptResult);
+ g_assert_error(error.get(), WEBKIT_JAVASCRIPT_ERROR, WEBKIT_JAVASCRIPT_ERROR_SCRIPT_FAILED);
+}
+
+class FullScreenClientTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(FullScreenClientTest);
+
+ enum FullScreenEvent {
+ None,
+ Enter,
+ Leave
+ };
+
+ static gboolean viewEnterFullScreenCallback(WebKitWebView*, FullScreenClientTest* test)
+ {
+ test->m_event = Enter;
+ g_main_loop_quit(test->m_mainLoop);
+ return FALSE;
+ }
+
+ static gboolean viewLeaveFullScreenCallback(WebKitWebView*, FullScreenClientTest* test)
+ {
+ test->m_event = Leave;
+ g_main_loop_quit(test->m_mainLoop);
+ return FALSE;
+ }
+
+ FullScreenClientTest()
+ : m_event(None)
+ {
+ webkit_settings_set_enable_fullscreen(webkit_web_view_get_settings(m_webView), TRUE);
+ g_signal_connect(m_webView, "enter-fullscreen", G_CALLBACK(viewEnterFullScreenCallback), this);
+ g_signal_connect(m_webView, "leave-fullscreen", G_CALLBACK(viewLeaveFullScreenCallback), this);
+ }
+
+ ~FullScreenClientTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void requestFullScreenAndWaitUntilEnteredFullScreen()
+ {
+ m_event = None;
+ webkit_web_view_run_javascript(m_webView, "document.documentElement.webkitRequestFullScreen();", 0, 0, 0);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ static gboolean leaveFullScreenIdle(FullScreenClientTest* test)
+ {
+ test->keyStroke(GDK_KEY_Escape);
+ return FALSE;
+ }
+
+ void leaveFullScreenAndWaitUntilLeftFullScreen()
+ {
+ m_event = None;
+ g_idle_add(reinterpret_cast<GSourceFunc>(leaveFullScreenIdle), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ FullScreenEvent m_event;
+};
+
+static void testWebViewFullScreen(FullScreenClientTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+ test->loadHtml("<html><body>FullScreen test</body></html>", 0);
+ test->waitUntilLoadFinished();
+ test->requestFullScreenAndWaitUntilEnteredFullScreen();
+ g_assert_cmpint(test->m_event, ==, FullScreenClientTest::Enter);
+ test->leaveFullScreenAndWaitUntilLeftFullScreen();
+ g_assert_cmpint(test->m_event, ==, FullScreenClientTest::Leave);
+}
+
+static void testWebViewCanShowMIMEType(WebViewTest* test, gconstpointer)
+{
+ // Supported MIME types.
+ g_assert(webkit_web_view_can_show_mime_type(test->m_webView, "text/html"));
+ g_assert(webkit_web_view_can_show_mime_type(test->m_webView, "text/plain"));
+ g_assert(webkit_web_view_can_show_mime_type(test->m_webView, "image/jpeg"));
+
+ // Unsupported MIME types.
+ g_assert(!webkit_web_view_can_show_mime_type(test->m_webView, "text/vcard"));
+ g_assert(!webkit_web_view_can_show_mime_type(test->m_webView, "application/zip"));
+ g_assert(!webkit_web_view_can_show_mime_type(test->m_webView, "application/octet-stream"));
+
+ // Plugins are only supported when enabled.
+ webkit_web_context_set_additional_plugins_directory(webkit_web_view_get_context(test->m_webView), WEBKIT_TEST_PLUGIN_DIR);
+ g_assert(webkit_web_view_can_show_mime_type(test->m_webView, "application/x-webkit-test-netscape"));
+ webkit_settings_set_enable_plugins(webkit_web_view_get_settings(test->m_webView), FALSE);
+ g_assert(!webkit_web_view_can_show_mime_type(test->m_webView, "application/x-webkit-test-netscape"));
+}
+
+class FormClientTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(FormClientTest);
+
+ static void submitFormCallback(WebKitWebView*, WebKitFormSubmissionRequest* request, FormClientTest* test)
+ {
+ test->submitForm(request);
+ }
+
+ FormClientTest()
+ : m_submitPositionX(0)
+ , m_submitPositionY(0)
+ {
+ g_signal_connect(m_webView, "submit-form", G_CALLBACK(submitFormCallback), this);
+ }
+
+ ~FormClientTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ }
+
+ void submitForm(WebKitFormSubmissionRequest* request)
+ {
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+ m_request = request;
+ webkit_form_submission_request_submit(request);
+ quitMainLoop();
+ }
+
+ GHashTable* waitUntilFormSubmittedAndGetTextFields()
+ {
+ g_main_loop_run(m_mainLoop);
+ return webkit_form_submission_request_get_text_fields(m_request.get());
+ }
+
+ static gboolean doClickIdleCallback(FormClientTest* test)
+ {
+ test->clickMouseButton(test->m_submitPositionX, test->m_submitPositionY, 1);
+ return FALSE;
+ }
+
+ void submitFormAtPosition(int x, int y)
+ {
+ m_submitPositionX = x;
+ m_submitPositionY = y;
+ g_idle_add(reinterpret_cast<GSourceFunc>(doClickIdleCallback), this);
+ }
+
+ int m_submitPositionX;
+ int m_submitPositionY;
+ GRefPtr<WebKitFormSubmissionRequest> m_request;
+};
+
+static void testWebViewSubmitForm(FormClientTest* test, gconstpointer)
+{
+ test->showInWindowAndWaitUntilMapped();
+
+ const char* formHTML =
+ "<html><body>"
+ " <form action='#'>"
+ " <input type='text' name='text1' value='value1'>"
+ " <input type='text' name='text2' value='value2'>"
+ " <input type='password' name='password' value='secret'>"
+ " <textarea cols='5' rows='5' name='textarea'>Text</textarea>"
+ " <input type='hidden' name='hidden1' value='hidden1'>"
+ " <input type='submit' value='Submit' style='position:absolute; left:1; top:1' size='10'>"
+ " </form>"
+ "</body></html>";
+
+ test->loadHtml(formHTML, "file:///");
+ test->waitUntilLoadFinished();
+
+ test->submitFormAtPosition(5, 5);
+ GHashTable* values = test->waitUntilFormSubmittedAndGetTextFields();
+ g_assert(values);
+ g_assert_cmpuint(g_hash_table_size(values), ==, 3);
+ g_assert_cmpstr(static_cast<char*>(g_hash_table_lookup(values, "text1")), ==, "value1");
+ g_assert_cmpstr(static_cast<char*>(g_hash_table_lookup(values, "text2")), ==, "value2");
+ g_assert_cmpstr(static_cast<char*>(g_hash_table_lookup(values, "password")), ==, "secret");
+}
+
+class SaveWebViewTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SaveWebViewTest);
+
+ SaveWebViewTest()
+ : m_tempDirectory(g_dir_make_tmp("WebKit2SaveViewTest-XXXXXX", 0))
+ {
+ }
+
+ ~SaveWebViewTest()
+ {
+ if (G_IS_FILE(m_file.get()))
+ g_file_delete(m_file.get(), 0, 0);
+
+ if (G_IS_INPUT_STREAM(m_inputStream.get()))
+ g_input_stream_close(m_inputStream.get(), 0, 0);
+
+ if (m_tempDirectory)
+ g_rmdir(m_tempDirectory.get());
+ }
+
+ static void webViewSavedToStreamCallback(GObject* object, GAsyncResult* result, SaveWebViewTest* test)
+ {
+ GUniqueOutPtr<GError> error;
+ test->m_inputStream = adoptGRef(webkit_web_view_save_finish(test->m_webView, result, &error.outPtr()));
+ g_assert(G_IS_INPUT_STREAM(test->m_inputStream.get()));
+ g_assert(!error);
+
+ test->quitMainLoop();
+ }
+
+ static void webViewSavedToFileCallback(GObject* object, GAsyncResult* result, SaveWebViewTest* test)
+ {
+ GUniqueOutPtr<GError> error;
+ g_assert(webkit_web_view_save_to_file_finish(test->m_webView, result, &error.outPtr()));
+ g_assert(!error);
+
+ test->quitMainLoop();
+ }
+
+ void saveAndWaitForStream()
+ {
+ webkit_web_view_save(m_webView, WEBKIT_SAVE_MODE_MHTML, 0, reinterpret_cast<GAsyncReadyCallback>(webViewSavedToStreamCallback), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void saveAndWaitForFile()
+ {
+ m_saveDestinationFilePath.reset(g_build_filename(m_tempDirectory.get(), "testWebViewSaveResult.mht", NULL));
+ m_file = adoptGRef(g_file_new_for_path(m_saveDestinationFilePath.get()));
+ webkit_web_view_save_to_file(m_webView, m_file.get(), WEBKIT_SAVE_MODE_MHTML, 0, reinterpret_cast<GAsyncReadyCallback>(webViewSavedToFileCallback), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ GUniquePtr<char> m_tempDirectory;
+ GUniquePtr<char> m_saveDestinationFilePath;
+ GRefPtr<GInputStream> m_inputStream;
+ GRefPtr<GFile> m_file;
+};
+
+static void testWebViewSave(SaveWebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html>"
+ "<body>"
+ " <p>A paragraph with plain text</p>"
+ " <p>"
+ " A red box: <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYWDTMVwnSZnwAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFklEQVQI12P8z8DAwMDAxMDAwMDAAAANHQEDK+mmyAAAAABJRU5ErkJggg=='></br>"
+ " A blue box: <img src='data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAIAAAACCAIAAAD91JpzAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3AYWDTMvBHhALQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAAFklEQVQI12Nk4PnPwMDAxMDAwMDAAAALrwEPPIs1pgAAAABJRU5ErkJggg=='>"
+ " </p>"
+ "</body>"
+ "</html>", 0);
+ test->waitUntilLoadFinished();
+
+ // Write to a file and to an input stream.
+ test->saveAndWaitForFile();
+ test->saveAndWaitForStream();
+
+ // We should have exactly the same amount of bytes in the file
+ // than those coming from the GInputStream. We don't compare the
+ // strings read since the 'Date' field and the boundaries will be
+ // different on each case. MHTML functionality will be tested by
+ // Layout tests, so checking the amount of bytes is enough.
+ GUniqueOutPtr<GError> error;
+ gchar buffer[512] = { 0 };
+ gssize readBytes = 0;
+ gssize totalBytesFromStream = 0;
+ while ((readBytes = g_input_stream_read(test->m_inputStream.get(), &buffer, 512, 0, &error.outPtr()))) {
+ g_assert(!error);
+ totalBytesFromStream += readBytes;
+ }
+
+ // Check that the file exists and that it contains the same amount of bytes.
+ GRefPtr<GFileInfo> fileInfo = adoptGRef(g_file_query_info(test->m_file.get(), G_FILE_ATTRIBUTE_STANDARD_SIZE, static_cast<GFileQueryInfoFlags>(0), 0, 0));
+ g_assert_cmpint(g_file_info_get_size(fileInfo.get()), ==, totalBytesFromStream);
+}
+
+// To test page visibility API. Currently only 'visible', 'hidden' and 'prerender' states are implemented fully in WebCore.
+// See also http://www.w3.org/TR/2011/WD-page-visibility-20110602/ and https://developers.google.com/chrome/whitepapers/pagevisibility
+static void testWebViewPageVisibility(WebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><title></title>"
+ "<body><p>Test Web Page Visibility</p>"
+ "<script>"
+ "document.addEventListener(\"visibilitychange\", onVisibilityChange, false);"
+ "function onVisibilityChange() {"
+ " document.title = document.visibilityState;"
+ "}"
+ "</script>"
+ "</body></html>",
+ 0);
+
+ // Wait until the page is loaded. Initial visibility should be 'prerender'.
+ test->waitUntilLoadFinished();
+
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.visibilityState;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "prerender");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.hidden;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(WebViewTest::javascriptResultToBoolean(javascriptResult));
+
+ // Show the page. The visibility should be updated to 'visible'.
+ test->showInWindow();
+ test->waitUntilTitleChanged();
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.visibilityState;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "visible");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.hidden;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(!WebViewTest::javascriptResultToBoolean(javascriptResult));
+
+ // Hide the page. The visibility should be updated to 'hidden'.
+ gtk_widget_hide(GTK_WIDGET(test->m_webView));
+ test->waitUntilTitleChanged();
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.visibilityState;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ valueString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(valueString.get(), ==, "hidden");
+
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.hidden;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error.get());
+ g_assert(WebViewTest::javascriptResultToBoolean(javascriptResult));
+}
+
+class SnapshotWebViewTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(SnapshotWebViewTest);
+
+ static void onSnapshotCancelledReady(WebKitWebView* web_view, GAsyncResult* res, SnapshotWebViewTest* test)
+ {
+ GUniqueOutPtr<GError> error;
+ test->m_surface = webkit_web_view_get_snapshot_finish(web_view, res, &error.outPtr());
+ g_assert(!test->m_surface);
+ g_assert_error(error.get(), G_IO_ERROR, G_IO_ERROR_CANCELLED);
+ test->quitMainLoop();
+ }
+
+ gboolean getSnapshotAndCancel()
+ {
+ if (m_surface)
+ cairo_surface_destroy(m_surface);
+ m_surface = 0;
+ GRefPtr<GCancellable> cancellable = adoptGRef(g_cancellable_new());
+ webkit_web_view_get_snapshot(m_webView, WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE, cancellable.get(), reinterpret_cast<GAsyncReadyCallback>(onSnapshotCancelledReady), this);
+ g_cancellable_cancel(cancellable.get());
+ g_main_loop_run(m_mainLoop);
+
+ return true;
+ }
+
+};
+
+static void testWebViewSnapshot(SnapshotWebViewTest* test, gconstpointer)
+{
+ test->loadHtml("<html><head><style>html { width: 200px; height: 100px; } ::-webkit-scrollbar { display: none; }</style></head><body><p>Whatever</p></body></html>", nullptr);
+ test->waitUntilLoadFinished();
+
+ // WEBKIT_SNAPSHOT_REGION_VISIBLE returns a null surface when the view is not visible.
+ cairo_surface_t* surface1 = test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE);
+ g_assert(!surface1);
+
+ // WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT works even if the window is not visible.
+ surface1 = test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_FULL_DOCUMENT, WEBKIT_SNAPSHOT_OPTIONS_NONE);
+ g_assert(surface1);
+ g_assert_cmpuint(cairo_surface_get_type(surface1), ==, CAIRO_SURFACE_TYPE_IMAGE);
+ g_assert_cmpint(cairo_image_surface_get_width(surface1), ==, 200);
+ g_assert_cmpint(cairo_image_surface_get_height(surface1), ==, 100);
+
+ // Show the WebView in a popup widow of 50x50 and try again with WEBKIT_SNAPSHOT_REGION_VISIBLE.
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_POPUP, 50, 50);
+ surface1 = cairo_surface_reference(test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE));
+ g_assert(surface1);
+ g_assert_cmpuint(cairo_surface_get_type(surface1), ==, CAIRO_SURFACE_TYPE_IMAGE);
+ g_assert_cmpint(cairo_image_surface_get_width(surface1), ==, 50);
+ g_assert_cmpint(cairo_image_surface_get_height(surface1), ==, 50);
+
+ // Select all text in the WebView, request a snapshot ignoring selection.
+ test->selectAll();
+ cairo_surface_t* surface2 = test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_NONE);
+ g_assert(surface2);
+ g_assert(Test::cairoSurfacesEqual(surface1, surface2));
+
+ // Request a new snapshot, including the selection this time. The size should be the same but the result
+ // must be different to the one previously obtained.
+ surface2 = test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_INCLUDE_SELECTION_HIGHLIGHTING);
+ g_assert_cmpuint(cairo_surface_get_type(surface2), ==, CAIRO_SURFACE_TYPE_IMAGE);
+ g_assert_cmpint(cairo_image_surface_get_width(surface1), ==, cairo_image_surface_get_width(surface2));
+ g_assert_cmpint(cairo_image_surface_get_height(surface1), ==, cairo_image_surface_get_height(surface2));
+ g_assert(!Test::cairoSurfacesEqual(surface1, surface2));
+
+ // Get a snpashot with a transparent background, the result must be different.
+ surface2 = test->getSnapshotAndWaitUntilReady(WEBKIT_SNAPSHOT_REGION_VISIBLE, WEBKIT_SNAPSHOT_OPTIONS_TRANSPARENT_BACKGROUND);
+ g_assert_cmpuint(cairo_surface_get_type(surface2), ==, CAIRO_SURFACE_TYPE_IMAGE);
+ g_assert_cmpint(cairo_image_surface_get_width(surface1), ==, cairo_image_surface_get_width(surface2));
+ g_assert_cmpint(cairo_image_surface_get_height(surface1), ==, cairo_image_surface_get_height(surface2));
+ g_assert(!Test::cairoSurfacesEqual(surface1, surface2));
+ cairo_surface_destroy(surface1);
+
+ // Test that cancellation works.
+ g_assert(test->getSnapshotAndCancel());
+}
+
+class NotificationWebViewTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(NotificationWebViewTest);
+
+ enum NotificationEvent {
+ None,
+ Permission,
+ Shown,
+ Clicked,
+ OnClicked,
+ Closed,
+ OnClosed,
+ };
+
+ static gboolean permissionRequestCallback(WebKitWebView*, WebKitPermissionRequest *request, NotificationWebViewTest* test)
+ {
+ g_assert(WEBKIT_IS_NOTIFICATION_PERMISSION_REQUEST(request));
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(request));
+
+ test->m_event = Permission;
+
+ webkit_permission_request_allow(request);
+
+ g_main_loop_quit(test->m_mainLoop);
+
+ return TRUE;
+ }
+
+ static gboolean notificationClosedCallback(WebKitNotification* notification, NotificationWebViewTest* test)
+ {
+ g_assert(test->m_notification == notification);
+ test->m_notification = nullptr;
+ test->m_event = Closed;
+ if (g_main_loop_is_running(test->m_mainLoop))
+ g_main_loop_quit(test->m_mainLoop);
+ return TRUE;
+ }
+
+ static gboolean notificationClickedCallback(WebKitNotification* notification, NotificationWebViewTest* test)
+ {
+ g_assert(test->m_notification == notification);
+ test->m_event = Clicked;
+ return TRUE;
+ }
+
+ static gboolean showNotificationCallback(WebKitWebView*, WebKitNotification* notification, NotificationWebViewTest* test)
+ {
+ test->assertObjectIsDeletedWhenTestFinishes(G_OBJECT(notification));
+ test->m_notification = notification;
+ g_signal_connect(notification, "closed", G_CALLBACK(notificationClosedCallback), test);
+ g_signal_connect(notification, "clicked", G_CALLBACK(notificationClickedCallback), test);
+ test->m_event = Shown;
+ g_main_loop_quit(test->m_mainLoop);
+ return TRUE;
+ }
+
+ static void notificationsMessageReceivedCallback(WebKitUserContentManager* userContentManager, WebKitJavascriptResult* javascriptResult, NotificationWebViewTest* test)
+ {
+ GUniquePtr<char> valueString(WebViewTest::javascriptResultToCString(javascriptResult));
+
+ if (g_str_equal(valueString.get(), "clicked"))
+ test->m_event = OnClicked;
+ else if (g_str_equal(valueString.get(), "closed"))
+ test->m_event = OnClosed;
+
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ NotificationWebViewTest()
+ : WebViewTest(webkit_user_content_manager_new())
+ , m_notification(nullptr)
+ , m_event(None)
+ {
+ g_signal_connect(m_webView, "permission-request", G_CALLBACK(permissionRequestCallback), this);
+ g_signal_connect(m_webView, "show-notification", G_CALLBACK(showNotificationCallback), this);
+ WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
+ webkit_user_content_manager_register_script_message_handler(manager, "notifications");
+ g_signal_connect(manager, "script-message-received::notifications", G_CALLBACK(notificationsMessageReceivedCallback), this);
+ }
+
+ ~NotificationWebViewTest()
+ {
+ g_signal_handlers_disconnect_matched(m_webView, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ WebKitUserContentManager* manager = webkit_web_view_get_user_content_manager(m_webView);
+ g_signal_handlers_disconnect_matched(manager, G_SIGNAL_MATCH_DATA, 0, 0, 0, 0, this);
+ webkit_user_content_manager_unregister_script_message_handler(manager, "notifications");
+ }
+
+ void requestPermissionAndWaitUntilGiven()
+ {
+ m_event = None;
+ webkit_web_view_run_javascript(m_webView, "Notification.requestPermission();", nullptr, nullptr, nullptr);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void requestNotificationAndWaitUntilShown(const char* title, const char* body)
+ {
+ m_event = None;
+
+ GUniquePtr<char> jscode(g_strdup_printf("n = new Notification('%s', { body: '%s'});", title, body));
+ webkit_web_view_run_javascript(m_webView, jscode.get(), nullptr, nullptr, nullptr);
+
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void clickNotificationAndWaitUntilClicked()
+ {
+ m_event = None;
+ runJavaScriptAndWaitUntilFinished("n.onclick = function() { window.webkit.messageHandlers.notifications.postMessage('clicked'); }", nullptr);
+ webkit_notification_clicked(m_notification);
+ g_assert(m_event == Clicked);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void closeNotificationAndWaitUntilClosed()
+ {
+ m_event = None;
+ webkit_web_view_run_javascript(m_webView, "n.close()", nullptr, nullptr, nullptr);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ void closeNotificationAndWaitUntilOnClosed()
+ {
+ g_assert(m_notification);
+ m_event = None;
+ runJavaScriptAndWaitUntilFinished("n.onclose = function() { window.webkit.messageHandlers.notifications.postMessage('closed'); }", nullptr);
+ webkit_notification_close(m_notification);
+ g_assert(m_event == Closed);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ NotificationEvent m_event;
+ WebKitNotification* m_notification;
+};
+
+static void testWebViewNotification(NotificationWebViewTest* test, gconstpointer)
+{
+ // Notifications don't work with local or special schemes.
+ test->loadURI(gServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+
+ test->requestPermissionAndWaitUntilGiven();
+ g_assert(test->m_event == NotificationWebViewTest::Permission);
+
+ static const char* title = "This is a notification";
+ static const char* body = "This is the body.";
+ test->requestNotificationAndWaitUntilShown(title, body);
+
+ g_assert(test->m_event == NotificationWebViewTest::Shown);
+ g_assert(test->m_notification);
+ g_assert_cmpstr(webkit_notification_get_title(test->m_notification), ==, title);
+ g_assert_cmpstr(webkit_notification_get_body(test->m_notification), ==, body);
+
+ test->clickNotificationAndWaitUntilClicked();
+ g_assert(test->m_event == NotificationWebViewTest::OnClicked);
+
+ test->closeNotificationAndWaitUntilClosed();
+ g_assert(test->m_event == NotificationWebViewTest::Closed);
+
+ test->requestNotificationAndWaitUntilShown(title, body);
+ g_assert(test->m_event == NotificationWebViewTest::Shown);
+
+ test->closeNotificationAndWaitUntilOnClosed();
+ g_assert(test->m_event == NotificationWebViewTest::OnClosed);
+
+ test->requestNotificationAndWaitUntilShown(title, body);
+ g_assert(test->m_event == NotificationWebViewTest::Shown);
+
+ test->loadURI(gServer->getURIForPath("/").data());
+ test->waitUntilLoadFinished();
+ g_assert(test->m_event == NotificationWebViewTest::Closed);
+}
+
+static void testWebViewIsPlayingAudio(IsPlayingAudioWebViewTest* test, gconstpointer)
+{
+ // The web view must be realized for the video to start playback and
+ // trigger changes in WebKitWebView::is-playing-audio.
+ test->showInWindowAndWaitUntilMapped(GTK_WINDOW_TOPLEVEL);
+
+ // Initially, web views should always report no audio being played.
+ g_assert(!webkit_web_view_is_playing_audio(test->m_webView));
+
+ GUniquePtr<char> resourcePath(g_build_filename(Test::getResourcesDir(Test::WebKit2Resources).data(), "file-with-video.html", nullptr));
+ GUniquePtr<char> resourceURL(g_filename_to_uri(resourcePath.get(), nullptr, nullptr));
+ webkit_web_view_load_uri(test->m_webView, resourceURL.get());
+ test->waitUntilLoadFinished();
+ g_assert(!webkit_web_view_is_playing_audio(test->m_webView));
+
+ webkit_web_view_run_javascript(test->m_webView, "playVideo();", nullptr, nullptr, nullptr);
+ test->waitUntilIsPlayingAudioChanged();
+ g_assert(webkit_web_view_is_playing_audio(test->m_webView));
+
+ // Pause the video, and check again.
+ webkit_web_view_run_javascript(test->m_webView, "document.getElementById('test-video').pause();", nullptr, nullptr, nullptr);
+ test->waitUntilIsPlayingAudioChanged();
+ g_assert(!webkit_web_view_is_playing_audio(test->m_webView));
+}
+
+static void testWebViewBackgroundColor(WebViewTest* test, gconstpointer)
+{
+ // White is the default background.
+ GdkRGBA rgba;
+ webkit_web_view_get_background_color(test->m_webView, &rgba);
+ g_assert_cmpfloat(rgba.red, ==, 1);
+ g_assert_cmpfloat(rgba.green, ==, 1);
+ g_assert_cmpfloat(rgba.blue, ==, 1);
+ g_assert_cmpfloat(rgba.alpha, ==, 1);
+
+ // Set a different (semi-transparent red).
+ rgba.red = 1;
+ rgba.green = 0;
+ rgba.blue = 0;
+ rgba.alpha = 0.5;
+ webkit_web_view_set_background_color(test->m_webView, &rgba);
+ g_assert_cmpfloat(rgba.red, ==, 1);
+ g_assert_cmpfloat(rgba.green, ==, 0);
+ g_assert_cmpfloat(rgba.blue, ==, 0);
+ g_assert_cmpfloat(rgba.alpha, ==, 0.5);
+
+ // The actual rendering can't be tested using unit tests, use
+ // MiniBrowser --bg-color="<color-value>" for manually testing this API.
+}
+
+static void serverCallback(SoupServer* server, SoupMessage* message, const char* path, GHashTable*, SoupClientContext*, gpointer)
+{
+ if (message->method != SOUP_METHOD_GET) {
+ soup_message_set_status(message, SOUP_STATUS_NOT_IMPLEMENTED);
+ return;
+ }
+
+ if (g_str_equal(path, "/")) {
+ soup_message_set_status(message, SOUP_STATUS_OK);
+ soup_message_body_complete(message->response_body);
+ } else
+ soup_message_set_status(message, SOUP_STATUS_NOT_FOUND);
+}
+
+void beforeAll()
+{
+ gServer = new WebKitTestServer();
+ gServer->run(serverCallback);
+
+ WebViewTest::add("WebKitWebView", "web-context", testWebViewWebContext);
+ WebViewTest::add("WebKitWebView", "web-context-lifetime", testWebViewWebContextLifetime);
+ WebViewTest::add("WebKitWebView", "custom-charset", testWebViewCustomCharset);
+ WebViewTest::add("WebKitWebView", "settings", testWebViewSettings);
+ WebViewTest::add("WebKitWebView", "zoom-level", testWebViewZoomLevel);
+ WebViewTest::add("WebKitWebView", "run-javascript", testWebViewRunJavaScript);
+ FullScreenClientTest::add("WebKitWebView", "fullscreen", testWebViewFullScreen);
+ WebViewTest::add("WebKitWebView", "can-show-mime-type", testWebViewCanShowMIMEType);
+ FormClientTest::add("WebKitWebView", "submit-form", testWebViewSubmitForm);
+ SaveWebViewTest::add("WebKitWebView", "save", testWebViewSave);
+ SnapshotWebViewTest::add("WebKitWebView", "snapshot", testWebViewSnapshot);
+ WebViewTest::add("WebKitWebView", "page-visibility", testWebViewPageVisibility);
+ NotificationWebViewTest::add("WebKitWebView", "notification", testWebViewNotification);
+ IsPlayingAudioWebViewTest::add("WebKitWebView", "is-playing-audio", testWebViewIsPlayingAudio);
+ WebViewTest::add("WebKitWebView", "background-color", testWebViewBackgroundColor);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebViewEditor.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebViewEditor.cpp
new file mode 100644
index 000000000..d20c7944f
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/TestWebViewEditor.cpp
@@ -0,0 +1,470 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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
+ * 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 "WebViewTest.h"
+#include <wtf/glib/GRefPtr.h>
+
+class EditorTest: public WebViewTest {
+public:
+ MAKE_GLIB_TEST_FIXTURE(EditorTest);
+
+ static const unsigned kClipboardWaitTimeout = 50;
+ static const unsigned kClipboardWaitMaxTries = 2;
+
+ EditorTest()
+ : m_clipboard(gtk_clipboard_get(GDK_SELECTION_CLIPBOARD))
+ , m_canExecuteEditingCommand(false)
+ , m_triesCount(0)
+ , m_editorState(nullptr)
+ {
+ gtk_clipboard_clear(m_clipboard);
+ }
+
+ static void canExecuteEditingCommandReadyCallback(GObject*, GAsyncResult* result, EditorTest* test)
+ {
+ GUniqueOutPtr<GError> error;
+ test->m_canExecuteEditingCommand = webkit_web_view_can_execute_editing_command_finish(test->m_webView, result, &error.outPtr());
+ g_assert(!error.get());
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ bool canExecuteEditingCommand(const char* command)
+ {
+ m_canExecuteEditingCommand = false;
+ webkit_web_view_can_execute_editing_command(m_webView, command, 0, reinterpret_cast<GAsyncReadyCallback>(canExecuteEditingCommandReadyCallback), this);
+ g_main_loop_run(m_mainLoop);
+ return m_canExecuteEditingCommand;
+ }
+
+ static gboolean waitForClipboardText(EditorTest* test)
+ {
+ test->m_triesCount++;
+ if (gtk_clipboard_wait_is_text_available(test->m_clipboard) || test->m_triesCount > kClipboardWaitMaxTries) {
+ g_main_loop_quit(test->m_mainLoop);
+ return FALSE;
+ }
+
+ return TRUE;
+ }
+
+ void copyClipboard()
+ {
+ webkit_web_view_execute_editing_command(m_webView, WEBKIT_EDITING_COMMAND_COPY);
+ // There's no way to know when the selection has been copied to
+ // the clipboard, so use a timeout source to query the clipboard.
+ m_triesCount = 0;
+ g_timeout_add(kClipboardWaitTimeout, reinterpret_cast<GSourceFunc>(waitForClipboardText), this);
+ g_main_loop_run(m_mainLoop);
+ }
+
+ gchar* cutSelection()
+ {
+ g_assert(canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+
+ webkit_web_view_execute_editing_command(m_webView, WEBKIT_EDITING_COMMAND_CUT);
+ // There's no way to know when the selection has been cut to
+ // the clipboard, so use a timeout source to query the clipboard.
+ m_triesCount = 0;
+ g_timeout_add(kClipboardWaitTimeout, reinterpret_cast<GSourceFunc>(waitForClipboardText), this);
+ g_main_loop_run(m_mainLoop);
+
+ return gtk_clipboard_wait_for_text(m_clipboard);
+ }
+
+ WebKitEditorState* editorState()
+ {
+ if (m_editorState)
+ return m_editorState;
+
+ m_editorState = webkit_web_view_get_editor_state(m_webView);
+ assertObjectIsDeletedWhenTestFinishes(G_OBJECT(m_editorState));
+ return m_editorState;
+ }
+
+ static void quitMainLoopInCallback(EditorTest* test)
+ {
+ g_main_loop_quit(test->m_mainLoop);
+ }
+
+ unsigned typingAttributes()
+ {
+ return webkit_editor_state_get_typing_attributes(editorState());
+ }
+
+ unsigned waitUntilTypingAttributesChanged()
+ {
+ unsigned long handlerID = g_signal_connect_swapped(editorState(), "notify::typing-attributes", G_CALLBACK(quitMainLoopInCallback), this);
+ g_main_loop_run(m_mainLoop);
+ g_signal_handler_disconnect(m_editorState, handlerID);
+ return typingAttributes();
+ }
+
+ GtkClipboard* m_clipboard;
+ bool m_canExecuteEditingCommand;
+ size_t m_triesCount;
+ WebKitEditorState* m_editorState;
+};
+
+static const char* selectedSpanHTMLFormat =
+ "<html><body contentEditable=\"%s\">"
+ "<span id=\"mainspan\">All work and no play <span id=\"subspan\">make Jack a dull</span> boy.</span>"
+ "<script>document.getSelection().collapse();\n"
+ "document.getSelection().selectAllChildren(document.getElementById('subspan'));\n"
+ "</script></body></html>";
+
+static void testWebViewEditorCutCopyPasteNonEditable(EditorTest* test, gconstpointer)
+{
+ // Nothing loaded yet.
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_COPY));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_COPY));
+ // It's not possible to cut and paste when content is not editable
+ // even if there's a selection.
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+
+ test->copyClipboard();
+ GUniquePtr<char> clipboardText(gtk_clipboard_wait_for_text(test->m_clipboard));
+ g_assert_cmpstr(clipboardText.get(), ==, "make Jack a dull");
+}
+
+static void testWebViewEditorCutCopyPasteEditable(EditorTest* test, gconstpointer)
+{
+ // Nothing loaded yet.
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_COPY));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+
+ g_assert(!test->isEditable());
+ test->setEditable(true);
+ g_assert(test->isEditable());
+
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ // There's a selection.
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_COPY));
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+
+ test->copyClipboard();
+ GUniquePtr<char> clipboardText(gtk_clipboard_wait_for_text(test->m_clipboard));
+ g_assert_cmpstr(clipboardText.get(), ==, "make Jack a dull");
+}
+
+static void testWebViewEditorSelectAllNonEditable(EditorTest* test, gconstpointer)
+{
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_SELECT_ALL));
+
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_SELECT_ALL));
+
+ test->copyClipboard();
+ GUniquePtr<char> clipboardText(gtk_clipboard_wait_for_text(test->m_clipboard));
+
+ // Initially only the subspan is selected.
+ g_assert_cmpstr(clipboardText.get(), ==, "make Jack a dull");
+
+ webkit_web_view_execute_editing_command(test->m_webView, WEBKIT_EDITING_COMMAND_SELECT_ALL);
+ test->copyClipboard();
+ clipboardText.reset(gtk_clipboard_wait_for_text(test->m_clipboard));
+
+ // The mainspan should be selected after calling SELECT_ALL.
+ g_assert_cmpstr(clipboardText.get(), ==, "All work and no play make Jack a dull boy.");
+}
+
+static void testWebViewEditorSelectAllEditable(EditorTest* test, gconstpointer)
+{
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_SELECT_ALL));
+
+ g_assert(!test->isEditable());
+ test->setEditable(true);
+ g_assert(test->isEditable());
+
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_SELECT_ALL));
+
+ test->copyClipboard();
+ GUniquePtr<char> clipboardText(gtk_clipboard_wait_for_text(test->m_clipboard));
+
+ // Initially only the subspan is selected.
+ g_assert_cmpstr(clipboardText.get(), ==, "make Jack a dull");
+
+ webkit_web_view_execute_editing_command(test->m_webView, WEBKIT_EDITING_COMMAND_SELECT_ALL);
+ test->copyClipboard();
+ clipboardText.reset(gtk_clipboard_wait_for_text(test->m_clipboard));
+
+ // The mainspan should be selected after calling SELECT_ALL.
+ g_assert_cmpstr(clipboardText.get(), ==, "All work and no play make Jack a dull boy.");
+}
+
+static void loadContentsAndTryToCutSelection(EditorTest* test, bool contentEditable)
+{
+ // View is not editable by default.
+ g_assert(!test->isEditable());
+
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, contentEditable ? "true" : "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(!test->isEditable());
+ test->setEditable(true);
+ g_assert(test->isEditable());
+
+ // Cut the selection to the clipboard to see if the view is indeed editable.
+ GUniquePtr<char> clipboardText(test->cutSelection());
+ g_assert_cmpstr(clipboardText.get(), ==, "make Jack a dull");
+
+ // Reset the editable for next test.
+ test->setEditable(false);
+ g_assert(!test->isEditable());
+}
+
+static void testWebViewEditorNonEditable(EditorTest* test)
+{
+ GUniquePtr<char> selectedSpanHTML(g_strdup_printf(selectedSpanHTMLFormat, "false"));
+ test->loadHtml(selectedSpanHTML.get(), nullptr);
+ test->waitUntilLoadFinished();
+
+ g_assert(!test->isEditable());
+ test->setEditable(true);
+ g_assert(test->isEditable());
+ test->setEditable(false);
+ g_assert(!test->isEditable());
+
+ // Check if view is indeed non-editable.
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_CUT));
+ g_assert(!test->canExecuteEditingCommand(WEBKIT_EDITING_COMMAND_PASTE));
+}
+
+static void testWebViewEditorEditable(EditorTest* test, gconstpointer)
+{
+ testWebViewEditorNonEditable(test);
+
+ // Reset the editable for next test.
+ test->setEditable(false);
+ g_assert(!test->isEditable());
+
+ loadContentsAndTryToCutSelection(test, true);
+
+ // Reset the editable for next test.
+ test->setEditable(false);
+ g_assert(!test->isEditable());
+
+ loadContentsAndTryToCutSelection(test, false);
+}
+
+static void testWebViewEditorEditorStateTypingAttributes(EditorTest* test, gconstpointer)
+{
+ static const char* typingAttributesHTML =
+ "<html><body>"
+ "normal <b>bold </b><i>italic </i><u>underline </u><strike>strike </strike>"
+ "<b><i>boldanditalic </i></b>"
+ "</body></html>";
+
+ test->loadHtml(typingAttributesHTML, nullptr);
+ test->waitUntilLoadFinished();
+ test->setEditable(true);
+
+ unsigned typingAttributes = test->typingAttributes();
+ g_assert_cmpuint(typingAttributes, ==, WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE);
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH);
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD);
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ // Selections.
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveToBeginningOfDocument");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert_cmpuint(typingAttributes, ==, WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE);
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH);
+
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveForward");
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveWordForwardAndModifySelection");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_BOLD);
+ g_assert(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_ITALIC);
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_UNDERLINE));
+ g_assert(!(typingAttributes & WEBKIT_EDITOR_TYPING_ATTRIBUTE_STRIKETHROUGH));
+
+ webkit_web_view_execute_editing_command(test->m_webView, "SelectAll");
+ typingAttributes = test->waitUntilTypingAttributesChanged();
+ g_assert_cmpuint(typingAttributes, ==, WEBKIT_EDITOR_TYPING_ATTRIBUTE_NONE);
+}
+
+static void testWebViewEditorInsertImage(EditorTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body></body></html>", "file:///");
+ test->waitUntilLoadFinished();
+ test->setEditable(true);
+
+ GUniquePtr<char> imagePath(g_build_filename(Test::getResourcesDir().data(), "blank.ico", nullptr));
+ GUniquePtr<char> imageURI(g_filename_to_uri(imagePath.get(), nullptr, nullptr));
+ webkit_web_view_execute_editing_command_with_argument(test->m_webView, WEBKIT_EDITING_COMMAND_INSERT_IMAGE, imageURI.get());
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('IMG')[0].src", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+ GUniquePtr<char> resultString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(resultString.get(), ==, imageURI.get());
+}
+
+static void testWebViewEditorCreateLink(EditorTest* test, gconstpointer)
+{
+ test->loadHtml("<html><body onload=\"document.getSelection().selectAllChildren(document.body);\">webkitgtk.org</body></html>", nullptr);
+ test->waitUntilLoadFinished();
+ test->setEditable(true);
+
+ static const char* webkitGTKURL = "http://www.webkitgtk.org/";
+ webkit_web_view_execute_editing_command_with_argument(test->m_webView, WEBKIT_EDITING_COMMAND_CREATE_LINK, webkitGTKURL);
+ GUniqueOutPtr<GError> error;
+ WebKitJavascriptResult* javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('A')[0].href;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+ GUniquePtr<char> resultString(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(resultString.get(), ==, webkitGTKURL);
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('A')[0].innerText;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+ resultString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(resultString.get(), ==, "webkitgtk.org");
+
+ // When there isn't text selected, the URL is used as link text.
+ webkit_web_view_execute_editing_command(test->m_webView, "MoveToEndOfLine");
+ webkit_web_view_execute_editing_command_with_argument(test->m_webView, WEBKIT_EDITING_COMMAND_CREATE_LINK, webkitGTKURL);
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('A')[1].href;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+ resultString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(resultString.get(), ==, webkitGTKURL);
+ javascriptResult = test->runJavaScriptAndWaitUntilFinished("document.getElementsByTagName('A')[1].innerText;", &error.outPtr());
+ g_assert(javascriptResult);
+ g_assert(!error);
+ resultString.reset(WebViewTest::javascriptResultToCString(javascriptResult));
+ g_assert_cmpstr(resultString.get(), ==, webkitGTKURL);
+}
+
+void beforeAll()
+{
+ EditorTest::add("WebKitWebView", "editable/editable", testWebViewEditorEditable);
+ EditorTest::add("WebKitWebView", "cut-copy-paste/non-editable", testWebViewEditorCutCopyPasteNonEditable);
+ EditorTest::add("WebKitWebView", "cut-copy-paste/editable", testWebViewEditorCutCopyPasteEditable);
+ EditorTest::add("WebKitWebView", "select-all/non-editable", testWebViewEditorSelectAllNonEditable);
+ EditorTest::add("WebKitWebView", "select-all/editable", testWebViewEditorSelectAllEditable);
+ EditorTest::add("WebKitWebView", "editor-state/typing-attributes", testWebViewEditorEditorStateTypingAttributes);
+ EditorTest::add("WebKitWebView", "insert/image", testWebViewEditorInsertImage);
+ EditorTest::add("WebKitWebView", "insert/link", testWebViewEditorCreateLink);
+}
+
+void afterAll()
+{
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp
new file mode 100644
index 000000000..372cfea7c
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebExtensionTest.cpp
@@ -0,0 +1,406 @@
+/*
+ * Copyright (C) 2012 Igalia S.L.
+ *
+ * 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 <JavaScriptCore/JSContextRef.h>
+#include <JavaScriptCore/JSRetainPtr.h>
+#include <gio/gio.h>
+#include <gst/gst.h>
+#include <stdlib.h>
+#include <string.h>
+#include <webkit2/webkit-web-extension.h>
+#include <wtf/Deque.h>
+#include <wtf/ProcessID.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
+#include <wtf/text/CString.h>
+
+#define WEBKIT_DOM_USE_UNSTABLE_API
+#include <webkitdom/WebKitDOMWebKitNamespace.h>
+#include <webkitdom/WebKitDOMUserMessageHandlersNamespace.h>
+#include <webkitdom/WebKitDOMUserMessageHandler.h>
+
+static const char introspectionXML[] =
+ "<node>"
+ " <interface name='org.webkit.gtk.WebExtensionTest'>"
+ " <method name='GetTitle'>"
+ " <arg type='t' name='pageID' direction='in'/>"
+ " <arg type='s' name='title' direction='out'/>"
+ " </method>"
+ " <method name='AbortProcess'>"
+ " </method>"
+ " <method name='RunJavaScriptInIsolatedWorld'>"
+ " <arg type='t' name='pageID' direction='in'/>"
+ " <arg type='s' name='script' direction='in'/>"
+ " </method>"
+ " <method name='GetProcessIdentifier'>"
+ " <arg type='u' name='identifier' direction='out'/>"
+ " </method>"
+ " <method name='RemoveAVPluginsFromGSTRegistry'>"
+ " </method>"
+ " <signal name='DocumentLoaded'/>"
+ " <signal name='URIChanged'>"
+ " <arg type='s' name='uri' direction='out'/>"
+ " </signal>"
+ " </interface>"
+ "</node>";
+
+
+typedef enum {
+ DocumentLoadedSignal,
+ URIChangedSignal,
+} DelayedSignalType;
+
+struct DelayedSignal {
+ DelayedSignal(DelayedSignalType type)
+ : type(type)
+ {
+ }
+
+ DelayedSignal(DelayedSignalType type, const char* uri)
+ : type(type)
+ , uri(uri)
+ {
+ }
+
+ DelayedSignalType type;
+ CString uri;
+};
+
+Deque<DelayedSignal> delayedSignalsQueue;
+
+static void emitDocumentLoaded(GDBusConnection* connection)
+{
+ bool ok = g_dbus_connection_emit_signal(
+ connection,
+ 0,
+ "/org/webkit/gtk/WebExtensionTest",
+ "org.webkit.gtk.WebExtensionTest",
+ "DocumentLoaded",
+ 0,
+ 0);
+ g_assert(ok);
+}
+
+static void documentLoadedCallback(WebKitWebPage* webPage, WebKitWebExtension* extension)
+{
+ // FIXME: Too much code just to send a message, we need convenient custom API for this.
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(webPage);
+ GRefPtr<WebKitDOMDOMWindow> window = adoptGRef(webkit_dom_document_get_default_view(document));
+ if (WebKitDOMWebKitNamespace* webkit = webkit_dom_dom_window_get_webkit_namespace(window.get())) {
+ WebKitDOMUserMessageHandlersNamespace* messageHandlers = webkit_dom_webkit_namespace_get_message_handlers(webkit);
+ if (WebKitDOMUserMessageHandler* handler = webkit_dom_user_message_handlers_namespace_get_handler(messageHandlers, "dom"))
+ webkit_dom_user_message_handler_post_message(handler, "DocumentLoaded", nullptr);
+ }
+
+ webkit_dom_dom_window_webkit_message_handlers_post_message(window.get(), "dom-convenience", "DocumentLoaded");
+
+ gpointer data = g_object_get_data(G_OBJECT(extension), "dbus-connection");
+ if (data)
+ emitDocumentLoaded(G_DBUS_CONNECTION(data));
+ else
+ delayedSignalsQueue.append(DelayedSignal(DocumentLoadedSignal));
+}
+
+static void emitURIChanged(GDBusConnection* connection, const char* uri)
+{
+ bool ok = g_dbus_connection_emit_signal(
+ connection,
+ 0,
+ "/org/webkit/gtk/WebExtensionTest",
+ "org.webkit.gtk.WebExtensionTest",
+ "URIChanged",
+ g_variant_new("(s)", uri),
+ 0);
+ g_assert(ok);
+}
+
+static void uriChangedCallback(WebKitWebPage* webPage, GParamSpec* pspec, WebKitWebExtension* extension)
+{
+ gpointer data = g_object_get_data(G_OBJECT(extension), "dbus-connection");
+ if (data)
+ emitURIChanged(G_DBUS_CONNECTION(data), webkit_web_page_get_uri(webPage));
+ else
+ delayedSignalsQueue.append(DelayedSignal(URIChangedSignal, webkit_web_page_get_uri(webPage)));
+}
+
+static gboolean sendRequestCallback(WebKitWebPage*, WebKitURIRequest* request, WebKitURIResponse* redirectResponse, gpointer)
+{
+ gboolean returnValue = FALSE;
+ const char* requestURI = webkit_uri_request_get_uri(request);
+ g_assert(requestURI);
+
+ if (const char* suffix = g_strrstr(requestURI, "/remove-this/javascript.js")) {
+ GUniquePtr<char> prefix(g_strndup(requestURI, strlen(requestURI) - strlen(suffix)));
+ GUniquePtr<char> newURI(g_strdup_printf("%s/javascript.js", prefix.get()));
+ webkit_uri_request_set_uri(request, newURI.get());
+ } else if (const char* suffix = g_strrstr(requestURI, "/remove-this/javascript-after-redirection.js")) {
+ // Redirected from /redirected.js, redirectResponse should be nullptr.
+ g_assert(WEBKIT_IS_URI_RESPONSE(redirectResponse));
+ g_assert(g_str_has_suffix(webkit_uri_response_get_uri(redirectResponse), "/redirected.js"));
+
+ GUniquePtr<char> prefix(g_strndup(requestURI, strlen(requestURI) - strlen(suffix)));
+ GUniquePtr<char> newURI(g_strdup_printf("%s/javascript-after-redirection.js", prefix.get()));
+ webkit_uri_request_set_uri(request, newURI.get());
+ } else if (g_str_has_suffix(requestURI, "/redirected.js")) {
+ // Original request, redirectResponse should be nullptr.
+ g_assert(!redirectResponse);
+ } else if (g_str_has_suffix(requestURI, "/add-do-not-track-header")) {
+ SoupMessageHeaders* headers = webkit_uri_request_get_http_headers(request);
+ g_assert(headers);
+ soup_message_headers_append(headers, "DNT", "1");
+ } else if (g_str_has_suffix(requestURI, "/http-get-method")) {
+ g_assert_cmpstr(webkit_uri_request_get_http_method(request), ==, "GET");
+ g_assert(webkit_uri_request_get_http_method(request) == SOUP_METHOD_GET);
+ } else if (g_str_has_suffix(requestURI, "/http-post-method")) {
+ g_assert_cmpstr(webkit_uri_request_get_http_method(request), ==, "POST");
+ g_assert(webkit_uri_request_get_http_method(request) == SOUP_METHOD_POST);
+ returnValue = TRUE;
+ } else if (g_str_has_suffix(requestURI, "/cancel-this.js"))
+ returnValue = TRUE;
+
+ return returnValue;
+}
+
+static GVariant* serializeContextMenu(WebKitContextMenu* menu)
+{
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
+ GList* items = webkit_context_menu_get_items(menu);
+ for (GList* it = items; it; it = g_list_next(it))
+ g_variant_builder_add(&builder, "u", webkit_context_menu_item_get_stock_action(WEBKIT_CONTEXT_MENU_ITEM(it->data)));
+ return g_variant_builder_end(&builder);
+}
+
+static GVariant* serializeNode(WebKitDOMNode* node)
+{
+ GVariantBuilder builder;
+ g_variant_builder_init(&builder, G_VARIANT_TYPE_ARRAY);
+ g_variant_builder_add(&builder, "{sv}", "Name", g_variant_new_take_string(webkit_dom_node_get_node_name(node)));
+ g_variant_builder_add(&builder, "{sv}", "Type", g_variant_new_uint32(webkit_dom_node_get_node_type(node)));
+ g_variant_builder_add(&builder, "{sv}", "Contents", g_variant_new_take_string(webkit_dom_node_get_text_content(node)));
+ WebKitDOMNode* parent = webkit_dom_node_get_parent_node(node);
+ g_variant_builder_add(&builder, "{sv}", "Parent", parent ? g_variant_new_take_string(webkit_dom_node_get_node_name(parent)) : g_variant_new_string("ROOT"));
+ return g_variant_builder_end(&builder);
+}
+
+static gboolean contextMenuCallback(WebKitWebPage* page, WebKitContextMenu* menu, WebKitWebHitTestResult* hitTestResult, gpointer)
+{
+ const char* pageURI = webkit_web_page_get_uri(page);
+ if (!g_strcmp0(pageURI, "ContextMenuTestDefault")) {
+ webkit_context_menu_set_user_data(menu, serializeContextMenu(menu));
+ return FALSE;
+ }
+
+ if (!g_strcmp0(pageURI, "ContextMenuTestCustom")) {
+ // Remove Back and Forward, and add Inspector action.
+ webkit_context_menu_remove(menu, webkit_context_menu_first(menu));
+ webkit_context_menu_remove(menu, webkit_context_menu_first(menu));
+ webkit_context_menu_append(menu, webkit_context_menu_item_new_separator());
+ webkit_context_menu_append(menu, webkit_context_menu_item_new_from_stock_action(WEBKIT_CONTEXT_MENU_ACTION_INSPECT_ELEMENT));
+ webkit_context_menu_set_user_data(menu, serializeContextMenu(menu));
+ return TRUE;
+ }
+
+ if (!g_strcmp0(pageURI, "ContextMenuTestClear")) {
+ webkit_context_menu_remove_all(menu);
+ return TRUE;
+ }
+
+ if (!g_strcmp0(pageURI, "ContextMenuTestNode")) {
+ WebKitDOMNode* node = webkit_web_hit_test_result_get_node(hitTestResult);
+ g_assert(WEBKIT_DOM_IS_NODE(node));
+ webkit_context_menu_set_user_data(menu, serializeNode(node));
+ return TRUE;
+ }
+
+ return FALSE;
+}
+
+static void consoleMessageSentCallback(WebKitWebPage* webPage, WebKitConsoleMessage* consoleMessage)
+{
+ g_assert(consoleMessage);
+ GRefPtr<GVariant> variant = g_variant_new("(uusus)", webkit_console_message_get_source(consoleMessage),
+ webkit_console_message_get_level(consoleMessage), webkit_console_message_get_text(consoleMessage),
+ webkit_console_message_get_line(consoleMessage), webkit_console_message_get_source_id(consoleMessage));
+ GUniquePtr<char> messageString(g_variant_print(variant.get(), FALSE));
+ GRefPtr<WebKitDOMDOMWindow> window = adoptGRef(webkit_dom_document_get_default_view(webkit_web_page_get_dom_document(webPage)));
+ g_assert(WEBKIT_DOM_IS_DOM_WINDOW(window.get()));
+ webkit_dom_dom_window_webkit_message_handlers_post_message(window.get(), "console", messageString.get());
+}
+
+static void pageCreatedCallback(WebKitWebExtension* extension, WebKitWebPage* webPage, gpointer)
+{
+ g_signal_connect(webPage, "document-loaded", G_CALLBACK(documentLoadedCallback), extension);
+ g_signal_connect(webPage, "notify::uri", G_CALLBACK(uriChangedCallback), extension);
+ g_signal_connect(webPage, "send-request", G_CALLBACK(sendRequestCallback), nullptr);
+ g_signal_connect(webPage, "context-menu", G_CALLBACK(contextMenuCallback), nullptr);
+ g_signal_connect(webPage, "console-message-sent", G_CALLBACK(consoleMessageSentCallback), nullptr);
+}
+
+static JSValueRef echoCallback(JSContextRef jsContext, JSObjectRef, JSObjectRef, size_t argumentCount, const JSValueRef arguments[], JSValueRef*)
+{
+ if (argumentCount <= 0)
+ return JSValueMakeUndefined(jsContext);
+
+ JSRetainPtr<JSStringRef> string(Adopt, JSValueToStringCopy(jsContext, arguments[0], 0));
+ return JSValueMakeString(jsContext, string.get());
+}
+
+static void windowObjectCleared(WebKitScriptWorld* world, WebKitWebPage* page, WebKitFrame* frame, gpointer)
+{
+ JSGlobalContextRef jsContext = webkit_frame_get_javascript_context_for_script_world(frame, world);
+ g_assert(jsContext);
+ JSObjectRef globalObject = JSContextGetGlobalObject(jsContext);
+ g_assert(globalObject);
+
+ JSRetainPtr<JSStringRef> functionName(Adopt, JSStringCreateWithUTF8CString("echo"));
+ JSObjectRef function = JSObjectMakeFunctionWithCallback(jsContext, functionName.get(), echoCallback);
+ JSObjectSetProperty(jsContext, globalObject, functionName.get(), function, kJSPropertyAttributeDontDelete | kJSPropertyAttributeReadOnly, 0);
+}
+
+static WebKitWebPage* getWebPage(WebKitWebExtension* extension, uint64_t pageID, GDBusMethodInvocation* invocation)
+{
+ WebKitWebPage* page = webkit_web_extension_get_page(extension, pageID);
+ if (!page) {
+ g_dbus_method_invocation_return_error(
+ invocation, G_DBUS_ERROR, G_DBUS_ERROR_INVALID_ARGS,
+ "Invalid page ID: %" G_GUINT64_FORMAT, pageID);
+ return 0;
+ }
+
+ g_assert_cmpuint(webkit_web_page_get_id(page), ==, pageID);
+ return page;
+}
+
+static void methodCallCallback(GDBusConnection* connection, const char* sender, const char* objectPath, const char* interfaceName, const char* methodName, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer userData)
+{
+ if (g_strcmp0(interfaceName, "org.webkit.gtk.WebExtensionTest"))
+ return;
+
+ if (!g_strcmp0(methodName, "GetTitle")) {
+ uint64_t pageID;
+ g_variant_get(parameters, "(t)", &pageID);
+ WebKitWebPage* page = getWebPage(WEBKIT_WEB_EXTENSION(userData), pageID, invocation);
+ if (!page)
+ return;
+
+ WebKitDOMDocument* document = webkit_web_page_get_dom_document(page);
+ GUniquePtr<char> title(webkit_dom_document_get_title(document));
+ g_dbus_method_invocation_return_value(invocation, g_variant_new("(s)", title.get()));
+ } else if (!g_strcmp0(methodName, "RunJavaScriptInIsolatedWorld")) {
+ uint64_t pageID;
+ const char* script;
+ g_variant_get(parameters, "(t&s)", &pageID, &script);
+ WebKitWebPage* page = getWebPage(WEBKIT_WEB_EXTENSION(userData), pageID, invocation);
+ if (!page)
+ return;
+
+ GRefPtr<WebKitScriptWorld> world = adoptGRef(webkit_script_world_new());
+ g_assert(webkit_script_world_get_default() != world.get());
+ WebKitFrame* frame = webkit_web_page_get_main_frame(page);
+ JSGlobalContextRef jsContext = webkit_frame_get_javascript_context_for_script_world(frame, world.get());
+ JSRetainPtr<JSStringRef> jsScript(Adopt, JSStringCreateWithUTF8CString(script));
+ JSEvaluateScript(jsContext, jsScript.get(), 0, 0, 0, 0);
+ g_dbus_method_invocation_return_value(invocation, 0);
+ } else if (!g_strcmp0(methodName, "AbortProcess")) {
+ abort();
+ } else if (!g_strcmp0(methodName, "GetProcessIdentifier")) {
+ g_dbus_method_invocation_return_value(invocation,
+ g_variant_new("(u)", static_cast<guint32>(getCurrentProcessID())));
+ } else if (!g_strcmp0(methodName, "RemoveAVPluginsFromGSTRegistry")) {
+ gst_init(nullptr, nullptr);
+ static const char* avPlugins[] = { "libav", "omx", "vaapi", nullptr };
+ GstRegistry* registry = gst_registry_get();
+ for (unsigned i = 0; avPlugins[i]; ++i) {
+ if (GstPlugin* plugin = gst_registry_find_plugin(registry, avPlugins[i])) {
+ gst_registry_remove_plugin(registry, plugin);
+ gst_object_unref(plugin);
+ }
+ }
+ g_dbus_method_invocation_return_value(invocation, nullptr);
+ }
+}
+
+static const GDBusInterfaceVTable interfaceVirtualTable = {
+ methodCallCallback, 0, 0, { 0, }
+};
+
+static void busAcquiredCallback(GDBusConnection* connection, const char* name, gpointer userData)
+{
+ static GDBusNodeInfo* introspectionData = 0;
+ if (!introspectionData)
+ introspectionData = g_dbus_node_info_new_for_xml(introspectionXML, 0);
+
+ GUniqueOutPtr<GError> error;
+ unsigned registrationID = g_dbus_connection_register_object(
+ connection,
+ "/org/webkit/gtk/WebExtensionTest",
+ introspectionData->interfaces[0],
+ &interfaceVirtualTable,
+ g_object_ref(userData),
+ static_cast<GDestroyNotify>(g_object_unref),
+ &error.outPtr());
+ if (!registrationID)
+ g_warning("Failed to register object: %s\n", error->message);
+
+ g_object_set_data(G_OBJECT(userData), "dbus-connection", connection);
+ while (delayedSignalsQueue.size()) {
+ DelayedSignal delayedSignal = delayedSignalsQueue.takeFirst();
+ switch (delayedSignal.type) {
+ case DocumentLoadedSignal:
+ emitDocumentLoaded(connection);
+ break;
+ case URIChangedSignal:
+ emitURIChanged(connection, delayedSignal.uri.data());
+ break;
+ }
+ }
+}
+
+static void registerGResource(void)
+{
+ GUniquePtr<char> resourcesPath(g_build_filename(WEBKIT_EXEC_PATH, "TestWebKitAPI", "WebKit2Gtk", "resources", "webkit2gtk-tests-resources.gresource", nullptr));
+ GResource* resource = g_resource_load(resourcesPath.get(), nullptr);
+ g_assert(resource);
+
+ g_resources_register(resource);
+ g_resource_unref(resource);
+}
+
+extern "C" void webkit_web_extension_initialize_with_user_data(WebKitWebExtension* extension, GVariant* userData)
+{
+ g_signal_connect(extension, "page-created", G_CALLBACK(pageCreatedCallback), extension);
+ g_signal_connect(webkit_script_world_get_default(), "window-object-cleared", G_CALLBACK(windowObjectCleared), 0);
+
+ registerGResource();
+
+ g_assert(userData);
+ g_assert(g_variant_is_of_type(userData, G_VARIANT_TYPE_UINT32));
+ GUniquePtr<char> busName(g_strdup_printf("org.webkit.gtk.WebExtensionTest%u", g_variant_get_uint32(userData)));
+ g_bus_own_name(
+ G_BUS_TYPE_SESSION,
+ busName.get(),
+ G_BUS_NAME_OWNER_FLAGS_NONE,
+ busAcquiredCallback,
+ 0, 0,
+ g_object_ref(extension),
+ static_cast<GDestroyNotify>(g_object_unref));
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp
new file mode 100644
index 000000000..bc058693d
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.cpp
@@ -0,0 +1,121 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 "WebProcessTest.h"
+
+#include <JavaScriptCore/JSRetainPtr.h>
+#include <gio/gio.h>
+#include <wtf/HashSet.h>
+#include <wtf/NeverDestroyed.h>
+#include <wtf/glib/GUniquePtr.h>
+
+static HashSet<GObject*> s_watchedObjects;
+
+typedef HashMap<String, std::function<std::unique_ptr<WebProcessTest> ()>> TestsMap;
+static TestsMap& testsMap()
+{
+ static NeverDestroyed<TestsMap> s_testsMap;
+ return s_testsMap;
+}
+
+void WebProcessTest::add(const String& testName, std::function<std::unique_ptr<WebProcessTest> ()> closure)
+{
+ testsMap().add(testName, WTFMove(closure));
+}
+
+void WebProcessTest::assertObjectIsDeletedWhenTestFinishes(GObject* object)
+{
+ s_watchedObjects.add(object);
+ g_object_weak_ref(object, [](gpointer, GObject* finalizedObject) {
+ s_watchedObjects.remove(finalizedObject);
+ }, nullptr);
+}
+
+std::unique_ptr<WebProcessTest> WebProcessTest::create(const String& testName)
+{
+ g_assert(testsMap().contains(testName));
+ return testsMap().get(testName)();
+}
+
+static JSValueRef runTest(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ JSRetainPtr<JSStringRef> stringValue(Adopt, JSValueToStringCopy(context, arguments[0], nullptr));
+ g_assert(stringValue);
+ size_t testPathLength = JSStringGetMaximumUTF8CStringSize(stringValue.get());
+ GUniquePtr<char> testPath(static_cast<char*>(g_malloc(testPathLength)));
+ JSStringGetUTF8CString(stringValue.get(), testPath.get(), testPathLength);
+
+ WebKitWebPage* webPage = WEBKIT_WEB_PAGE(JSObjectGetPrivate(thisObject));
+ g_assert(WEBKIT_IS_WEB_PAGE(webPage));
+ // Test /WebKitDOMNode/dom-cache is an exception, because it's called 3 times, so
+ // the WebPage is destroyed after the third time.
+ if (g_str_equal(testPath.get(), "WebKitDOMNode/dom-cache")) {
+ static unsigned domCacheTestRunCount = 0;
+ if (++domCacheTestRunCount == 3)
+ WebProcessTest::assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webPage));
+ } else
+ WebProcessTest::assertObjectIsDeletedWhenTestFinishes(G_OBJECT(webPage));
+
+ std::unique_ptr<WebProcessTest> test = WebProcessTest::create(String::fromUTF8(testPath.get()));
+ return JSValueMakeBoolean(context, test->runTest(g_strrstr(testPath.get(), "/") + 1, webPage));
+}
+
+static const JSStaticFunction webProcessTestRunnerStaticFunctions[] =
+{
+ { "runTest", runTest, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { nullptr, nullptr, 0 }
+};
+
+static void webProcessTestRunnerFinalize(JSObjectRef object)
+{
+ g_object_unref(JSObjectGetPrivate(object));
+
+ if (s_watchedObjects.isEmpty())
+ return;
+
+ g_print("Leaked objects in WebProcess:");
+ for (const auto object : s_watchedObjects)
+ g_print(" %s(%p)", g_type_name_from_instance(reinterpret_cast<GTypeInstance*>(object)), object);
+ g_print("\n");
+
+ g_assert(s_watchedObjects.isEmpty());
+}
+
+static void windowObjectClearedCallback(WebKitScriptWorld* world, WebKitWebPage* webPage, WebKitFrame* frame, WebKitWebExtension* extension)
+{
+ JSGlobalContextRef context = webkit_frame_get_javascript_context_for_script_world(frame, world);
+ JSObjectRef globalObject = JSContextGetGlobalObject(context);
+
+ JSClassDefinition classDefinition = kJSClassDefinitionEmpty;
+ classDefinition.className = "WebProcessTestRunner";
+ classDefinition.staticFunctions = webProcessTestRunnerStaticFunctions;
+ classDefinition.finalize = webProcessTestRunnerFinalize;
+
+ JSClassRef jsClass = JSClassCreate(&classDefinition);
+ JSObjectRef classObject = JSObjectMake(context, jsClass, g_object_ref(webPage));
+ JSRetainPtr<JSStringRef> propertyString(Adopt, JSStringCreateWithUTF8CString("WebProcessTestRunner"));
+ JSObjectSetProperty(context, globalObject, propertyString.get(), classObject, kJSPropertyAttributeNone, nullptr);
+ JSClassRelease(jsClass);
+}
+
+extern "C" void webkit_web_extension_initialize(WebKitWebExtension* extension)
+{
+ g_signal_connect(webkit_script_world_get_default(), "window-object-cleared", G_CALLBACK(windowObjectClearedCallback), extension);
+}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h
new file mode 100644
index 000000000..3715eb91e
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/WebProcessTest.h
@@ -0,0 +1,39 @@
+/*
+ * Copyright (C) 2013 Igalia S.L.
+ *
+ * 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 <webkit2/webkit-web-extension.h>
+#include <wtf/HashMap.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/text/StringHash.h>
+#include <wtf/text/WTFString.h>
+
+class WebProcessTest {
+public:
+ virtual ~WebProcessTest() { }
+ virtual bool runTest(const char* testName, WebKitWebPage*) = 0;
+
+ static void assertObjectIsDeletedWhenTestFinishes(GObject*);
+
+ static void add(const String& testName, std::function<std::unique_ptr<WebProcessTest> ()>);
+ static std::unique_ptr<WebProcessTest> create(const String& testName);
+};
+
+#define REGISTER_TEST(ClassName, TestName) \
+ WebProcessTest::add(String::fromUTF8(TestName), ClassName::create)
+
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/blank.ico b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/blank.ico
new file mode 100644
index 000000000..ea848b991
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/blank.ico
Binary files differ
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/boring.html b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/boring.html
new file mode 100644
index 000000000..c0eeb49ee
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/boring.html
@@ -0,0 +1 @@
+<p>This is a boring HTML file.</p>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/link-title.js b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/link-title.js
new file mode 100644
index 000000000..2c824da38
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/link-title.js
@@ -0,0 +1 @@
+window.document.getElementById('WebKitLink').title;
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-cert.pem b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-cert.pem
new file mode 100644
index 000000000..b34301f25
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-cert.pem
@@ -0,0 +1,13 @@
+-----BEGIN CERTIFICATE-----
+MIIB9jCCAV+gAwIBAgIJALeuXBo+vwz9MA0GCSqGSIb3DQEBBQUAMBQxEjAQBgNV
+BAMMCTEyNy4wLjAuMTAeFw0xMjA3MTIxMjQ4MjRaFw0yMjA3MTAxMjQ4MjRaMBQx
+EjAQBgNVBAMMCTEyNy4wLjAuMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA
+0TUzOQxHBIKDD2mkuq+tU92mQvDZg73B0G+Nhr2T2G6MbcLqIwjg1QYtBZWJ83tZ
+xMMEfiweHLF85Z9ohavAgxJlKG7YmvZO79KkFpmjV2W5CVRm0eYMPnzmxNCoaYqo
+DLl0zsH6KZOLPKu/fX4eDX9XpAP1f83hWB1UFBmHKN8CAwEAAaNQME4wHQYDVR0O
+BBYEFDHv5ZQ1BdmhzTsDUEoY55EXyUdKMB8GA1UdIwQYMBaAFDHv5ZQ1BdmhzTsD
+UEoY55EXyUdKMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADgYEAh3qMBx7v
+jSodMf3OyTqTLE7deLnmnCeBVpgzxRZEoizcGqYcjiqO27i5N5Z6KVQsnITnLiyC
+mUtuR5KnF69uTKUw4m/ugZe5whjig5Mq2l410KVK6EeG4tdLlfXR+wi4U5K4KjP6
+p4nchQUXLa2zcbJn+VBexJn6/9wdhr+DUGY=
+-----END CERTIFICATE-----
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-key.pem b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-key.pem
new file mode 100644
index 000000000..9036222ce
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/test-key.pem
@@ -0,0 +1,16 @@
+-----BEGIN PRIVATE KEY-----
+MIICdwIBADANBgkqhkiG9w0BAQEFAASCAmEwggJdAgEAAoGBANE1MzkMRwSCgw9p
+pLqvrVPdpkLw2YO9wdBvjYa9k9hujG3C6iMI4NUGLQWVifN7WcTDBH4sHhyxfOWf
+aIWrwIMSZShu2Jr2Tu/SpBaZo1dluQlUZtHmDD585sTQqGmKqAy5dM7B+imTizyr
+v31+Hg1/V6QD9X/N4VgdVBQZhyjfAgMBAAECgYB2QwOUsRsIMprRwJ9tJNfvO7G7
+z5i1/zOrlxPC4jHMPBnIBlICwgcOhLI4oOLdr5H8R12n0VqoT7DRwP396iwlJipF
+iO1heDMn/8z8LPGwkCK/+ck04rMDksxWIdMwYKBXt9ahnJ/xRLzQ1/3AJiAGnoe5
+/QLXQweofd4mmfsjKQJBAO2CwT7uMP6nMjXgtVMJq5QP8UbeCS1sEOPJJbHuDxJB
+/HePQHBjq4kzG6CL4oO7T+5fDv4g+fIIHzuXerZ0imsCQQDhfmiTIc9OucEIfg6/
+ms0JiKSmWc+qoiOCtrILuQvFoNwJRciQANqeJs6wpaDvevSUvBLGfG/7b3HvaE5X
+iqBdAkBEQIvp2qcHtuJN60oQF7pPrRknxUyb2e8sljQX4pJAK+gyL19ULMAxiBdL
+Vod8VYqNtJFpY+6Pp9fZ1xjzb6ALAkEA4JzrDAw0lQXA+3WduUw4ixOadr2ldyG0
+36KebcDwsfZO18m0Q4UmPz0Gy7zgN0wxzuochaw0W6+iPUiYKOlEXQJBAMWQrPlu
+rrinoZS2f8doJ9BNNUa+RNpMug6UXc55qoUJlyiXEh+tu4AaMOtxuGIyC0sAcuw6
+XdAPVPXKd7Mne70=
+-----END PRIVATE KEY-----
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/webkit2gtk-tests.gresource.xml b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/webkit2gtk-tests.gresource.xml
new file mode 100644
index 000000000..87bc50158
--- /dev/null
+++ b/Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/webkit2gtk-tests.gresource.xml
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<gresources>
+ <gresource prefix="/org/webkit/webkit2gtk/tests/">
+ <file alias="boring.html">Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/boring.html</file>
+ <file alias="link-title.js">Tools/TestWebKitAPI/Tests/WebKit2Gtk/resources/link-title.js</file>
+ </gresource>
+</gresources>
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm
deleted file mode 100644
index bf932cd43..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme.mm
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-
-#import "PlatformUtilities.h"
-#import "PlatformWebView.h"
-#import "TestBrowsingContextLoadDelegate.h"
-#import <WebKit2/WebKit2.h>
-#import <wtf/RetainPtr.h>
-
-static bool testFinished = false;
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2CustomProtocolsTest, RegisterNilScheme)
-{
- [WKBrowsingContextController registerSchemeForCustomProtocol:nil];
- [WKBrowsingContextController unregisterSchemeForCustomProtocol:nil];
-}
-
-TEST(WebKit2CustomProtocolsTest, LoadInvalidScheme)
-{
- [WKBrowsingContextController registerSchemeForCustomProtocol:@"custom"];
- WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("CustomProtocolInvalidSchemeTest"));
- PlatformWebView webView(context.get());
-
- webView.platformView().browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- testFinished = true;
- }];
- [webView.platformView().browsingContextController loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"ht'tp://www.webkit.org"]]];
-
- Util::run(&testFinished);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp
index ee72f87e7..287f32ff5 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsInvalidScheme_Bundle.cpp
@@ -25,8 +25,10 @@
#include "config.h"
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
-#include <WebKit2/WKBundlePage.h>
+#include <WebKit/WKBundlePage.h>
namespace TestWebKitAPI {
@@ -45,15 +47,20 @@ public:
}
private:
- virtual void didCreatePage(WKBundleRef, WKBundlePageRef bundlePage) OVERRIDE
+ virtual void didCreatePage(WKBundleRef, WKBundlePageRef bundlePage) override
{
- WKBundlePagePolicyClient policyClient;
+ WKBundlePagePolicyClientV0 policyClient;
memset(&policyClient, 0, sizeof(policyClient));
+
+ policyClient.base.version = 0;
policyClient.decidePolicyForNavigationAction = decidePolicyForNavigationAction;
- WKBundlePageSetPolicyClient(bundlePage, &policyClient);
+
+ WKBundlePageSetPolicyClient(bundlePage, &policyClient.base);
}
};
static InjectedBundleTest::Register<CustomProtocolInvalidSchemeTest> registrar("CustomProtocolInvalidSchemeTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm
deleted file mode 100644
index 7eb2d364e..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/CustomProtocolsTest.mm
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "Test.h"
-
-#import "PlatformUtilities.h"
-#import "TestBrowsingContextLoadDelegate.h"
-#import "TestProtocol.h"
-#import <WebKit2/WebKit2.h>
-
-static bool testFinished = false;
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2CustomProtocolsTest, MainResource)
-{
- [NSURLProtocol registerClass:[TestProtocol class]];
- [WKBrowsingContextController registerSchemeForCustomProtocol:[TestProtocol scheme]];
-
- WKProcessGroup *processGroup = [[WKProcessGroup alloc] init];
- WKBrowsingContextGroup *browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"TestIdentifier"];
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- testFinished = true;
- }];
- [wkView.browsingContextController loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@://test", [TestProtocol scheme]]]]];
-
- Util::run(&testFinished);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm
deleted file mode 100644
index 0e86aaa27..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing.mm
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "Test.h"
-
-#import "PlatformUtilities.h"
-#import "PlatformWebView.h"
-#import "TestBrowsingContextLoadDelegate.h"
-#import "TestProtocol.h"
-#import <WebKit2/WebKit2.h>
-#import <WebKit2/WKViewPrivate.h>
-
-static bool testFinished = false;
-
-namespace TestWebKitAPI {
-
-TEST(WebKit2, PreventImageLoadWithAutoResizingTest)
-{
- [NSURLProtocol registerClass:[TestProtocol class]];
- [WKBrowsingContextController registerSchemeForCustomProtocol:[TestProtocol scheme]];
-
- WKRetainPtr<WKContextRef> context = adoptWK(Util::createContextForInjectedBundleTest("DenyWillSendRequestTest"));
- PlatformWebView webView(context.get());
-
- webView.platformView().minimumSizeForAutoLayout = NSMakeSize(400, 300);
- webView.platformView().browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- testFinished = true;
- }];
- [webView.platformView().browsingContextController loadHTMLString:@"<html><body style='background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAFZJREFUeF59z4EJADEIQ1F36k7u5E7ZKXeUQPACJ3wK7UNokVxVk9kHnQH7bY9hbDyDhNXgjpRLqFlo4M2GgfyJHhjq8V4agfrgPQX3JtJQGbofmCHgA/nAKks+JAjFAAAAAElFTkSuQmCC);'></body></html>" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&testFinished);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp
index 9f73d7541..dde94407a 100644
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp
+++ b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/PreventImageLoadWithAutoResizing_Bundle.cpp
@@ -24,11 +24,14 @@
*/
#include "config.h"
+
+#if WK_HAVE_C_SPI
+
#include "InjectedBundleTest.h"
#include "PlatformUtilities.h"
#include "Test.h"
-#include <WebKit2/WKBundlePage.h>
+#include <WebKit/WKBundlePage.h>
#include <wtf/Assertions.h>
@@ -48,13 +51,13 @@ public:
virtual void didCreatePage(WKBundleRef bundle, WKBundlePageRef page)
{
- WKBundlePageResourceLoadClient resourceLoadClient;
+ WKBundlePageResourceLoadClientV0 resourceLoadClient;
memset(&resourceLoadClient, 0, sizeof(resourceLoadClient));
- resourceLoadClient.version = 0;
+ resourceLoadClient.base.version = 0;
resourceLoadClient.willSendRequestForFrame = willSendRequestForFrame;
- WKBundlePageSetResourceLoadClient(page, &resourceLoadClient);
+ WKBundlePageSetResourceLoadClient(page, &resourceLoadClient.base);
}
};
@@ -62,3 +65,5 @@ public:
static InjectedBundleTest::Register<DenyWillSendRequestTest> registrar("DenyWillSendRequestTest");
} // namespace TestWebKitAPI
+
+#endif
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm
deleted file mode 100644
index 025896373..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/UserContentTest.mm
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "Test.h"
-
-#import "PlatformUtilities.h"
-#import "TestBrowsingContextLoadDelegate.h"
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit2/WKSerializedScriptValue.h>
-#import <WebKit2/WKViewPrivate.h>
-#import <WebKit2/WebKit2.h>
-
-
-static bool testFinished = false;
-static NSString *htmlString = @"<body style='background-color: red'>";
-static NSString *userStyleSheet = @"body { background-color: green !important; }";
-static const char* backgroundColorScript = "window.getComputedStyle(document.body, null).getPropertyValue('background-color')";
-static const char* greenInRGB = "rgb(0, 128, 0)";
-static const char* redInRGB = "rgb(255, 0, 0)";
-static const char* userScriptTestProperty = "window._userScriptInstalled";
-
-namespace {
- class WebKit2UserContentTest : public ::testing::Test {
- public:
- WKProcessGroup *processGroup;
- WKBrowsingContextGroup *browsingContextGroup;
-
- WebKit2UserContentTest()
- : processGroup(nil)
- , browsingContextGroup(nil)
- {
- }
-
- virtual void SetUp()
- {
- processGroup = [[WKProcessGroup alloc] init];
- browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"UserContentIdentifier"];
- }
-
- virtual void TearDown()
- {
- [browsingContextGroup release];
- [processGroup release];
- }
- };
-} // namespace
-
-static void expectScriptValueIsString(WKSerializedScriptValueRef serializedScriptValue, const char* expectedValue)
-{
- JSGlobalContextRef scriptContext = JSGlobalContextCreate(0);
-
- JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0);
- EXPECT_TRUE(JSValueIsString(scriptContext, scriptValue));
-
- JSRetainPtr<JSStringRef> scriptString(Adopt, JSValueToStringCopy(scriptContext, scriptValue, 0));
- EXPECT_TRUE(JSStringIsEqualToUTF8CString(scriptString.get(), expectedValue));
-
- JSGlobalContextRelease(scriptContext);
-}
-
-static void expectScriptValueIsBoolean(WKSerializedScriptValueRef serializedScriptValue, bool expectedValue)
-{
- JSGlobalContextRef scriptContext = JSGlobalContextCreate(0);
-
- JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0);
- EXPECT_TRUE(JSValueIsBoolean(scriptContext, scriptValue));
- EXPECT_EQ(JSValueToBoolean(scriptContext, scriptValue), expectedValue);
-
- JSGlobalContextRelease(scriptContext);
-}
-
-static void expectScriptValueIsUndefined(WKSerializedScriptValueRef serializedScriptValue)
-{
- JSGlobalContextRef scriptContext = JSGlobalContextCreate(0);
-
- JSValueRef scriptValue = WKSerializedScriptValueDeserialize(serializedScriptValue, scriptContext, 0);
- EXPECT_TRUE(JSValueIsUndefined(scriptContext, scriptValue));
-
- JSGlobalContextRelease(scriptContext);
-}
-
-TEST_F(WebKit2UserContentTest, AddUserStyleSheetBeforeCreatingView)
-{
- testFinished = false;
- [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES];
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsString(serializedScriptValue, greenInRGB);
- testFinished = true;
- WKRelease(backgroundColorQuery);
- });
- }];
-
- [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-TEST_F(WebKit2UserContentTest, AddUserStyleSheetAfterCreatingView)
-{
- testFinished = false;
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsString(serializedScriptValue, greenInRGB);
- testFinished = true;
- WKRelease(backgroundColorQuery);
- });
- }];
-
- [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES];
-
- [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-TEST_F(WebKit2UserContentTest, RemoveAllUserStyleSheets)
-{
- testFinished = false;
- [browsingContextGroup addUserStyleSheet:userStyleSheet baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil mainFrameOnly:YES];
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef backgroundColorQuery = WKStringCreateWithUTF8CString(backgroundColorScript);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, backgroundColorQuery, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsString(serializedScriptValue, redInRGB);
- testFinished = true;
- WKRelease(backgroundColorQuery);
- });
- }];
-
- [browsingContextGroup removeAllUserStyleSheets];
-
- [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-TEST_F(WebKit2UserContentTest, AddUserScriptBeforeCreatingView)
-{
- testFinished = false;
- [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES];
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsBoolean(serializedScriptValue, true);
- testFinished = true;
- WKRelease(userScriptTestPropertyString);
- });
- }];
-
- [wkView.browsingContextController loadHTMLString:@"" baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-TEST_F(WebKit2UserContentTest, AddUserScriptAfterCreatingView)
-{
- testFinished = false;
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsBoolean(serializedScriptValue, true);
- testFinished = true;
- WKRelease(userScriptTestPropertyString);
- });
- }];
-
- [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES];
-
- [wkView.browsingContextController loadHTMLString:@"" baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
-
-TEST_F(WebKit2UserContentTest, RemoveAllUserScripts)
-{
- testFinished = false;
- [browsingContextGroup addUserScript:[NSString stringWithFormat:@"%s = true;", userScriptTestProperty] baseURL:nil whitelistedURLPatterns:nil blacklistedURLPatterns:nil injectionTime:kWKInjectAtDocumentStart mainFrameOnly:YES];
-
- WKView *wkView = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- WKStringRef userScriptTestPropertyString = WKStringCreateWithUTF8CString(userScriptTestProperty);
- wkView.browsingContextController.loadDelegate = [[TestBrowsingContextLoadDelegate alloc] initWithBlockToRunOnLoad:^(WKBrowsingContextController *sender) {
- WKPageRunJavaScriptInMainFrame_b(wkView.pageRef, userScriptTestPropertyString, ^(WKSerializedScriptValueRef serializedScriptValue, WKErrorRef error) {
- expectScriptValueIsUndefined(serializedScriptValue);
- testFinished = true;
- WKRelease(userScriptTestPropertyString);
- });
- }];
-
- [browsingContextGroup removeAllUserScripts];
-
- [wkView.browsingContextController loadHTMLString:htmlString baseURL:nil];
-
- TestWebKitAPI::Util::run(&testFinished);
-}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm
deleted file mode 100644
index fbd87bdf4..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextGroupTest.mm
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "Test.h"
-
-#import <WebKit2/WKBrowsingContextGroup.h>
-
-TEST(WKBrowsingContextGroupTest, GetSetJavaScriptEnabled)
-{
- WKBrowsingContextGroup *browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"TestIdentifier"];
-
- ASSERT_TRUE(browsingContextGroup.allowsJavaScript);
-
- browsingContextGroup.allowsJavaScript = NO;
-
- ASSERT_FALSE(browsingContextGroup.allowsJavaScript);
-
- [browsingContextGroup release];
-}
-
-TEST(WKBrowsingContextGroupTest, GetSetPluginsEnabled)
-{
- WKBrowsingContextGroup *browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"TestIdentifier"];
-
- ASSERT_TRUE(browsingContextGroup.allowsPlugIns);
-
- browsingContextGroup.allowsPlugIns = NO;
-
- ASSERT_FALSE(browsingContextGroup.allowsPlugIns);
-
- [browsingContextGroup release];
-}
diff --git a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm b/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm
deleted file mode 100644
index 6cadf0b14..000000000
--- a/Tools/TestWebKitAPI/Tests/WebKit2ObjC/WKBrowsingContextLoadDelegateTest.mm
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "Test.h"
-
-#import <WebKit2/WKBrowsingContextController.h>
-#import <WebKit2/WKBrowsingContextGroup.h>
-#import <WebKit2/WKBrowsingContextLoadDelegate.h>
-#import <WebKit2/WKProcessGroup.h>
-#import <WebKit2/WKRetainPtr.h>
-#import <WebKit2/WKView.h>
-
-#import "PlatformUtilities.h"
-
-namespace {
-
-class WKBrowsingContextLoadDelegateTest : public ::testing::Test {
-public:
- WKProcessGroup *processGroup;
- WKBrowsingContextGroup *browsingContextGroup;
- WKView *view;
-
- WKBrowsingContextLoadDelegateTest()
- : processGroup(nil)
- , browsingContextGroup(nil)
- , view(nil)
- {
- }
-
- virtual void SetUp()
- {
- processGroup = [[WKProcessGroup alloc] init];
- browsingContextGroup = [[WKBrowsingContextGroup alloc] initWithIdentifier:@"TestIdentifier"];
- view = [[WKView alloc] initWithFrame:NSMakeRect(0, 0, 800, 600) processGroup:processGroup browsingContextGroup:browsingContextGroup];
- }
-
- virtual void TearDown()
- {
- [view release];
- [browsingContextGroup release];
- [processGroup release];
- }
-};
-
-} // namespace
-
-@interface SimpleLoadDelegate : NSObject <WKBrowsingContextLoadDelegate>
-{
- bool* _simpleLoadDone;
-}
-
-- (id)initWithFlag:(bool*)flag;
-
-@end
-
-@implementation SimpleLoadDelegate
-
-- (id)initWithFlag:(bool*)flag
-{
- self = [super init];
- if (!self)
- return nil;
-
- _simpleLoadDone = flag;
- return self;
-}
-
-- (void)browsingContextControllerDidFinishLoad:(WKBrowsingContextController *)sender
-{
- *_simpleLoadDone = true;
-}
-
-@end
-
-TEST_F(WKBrowsingContextLoadDelegateTest, Empty)
-{
- // Just make sure the setup/tear down works.
-}
-
-TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoad)
-{
- bool simpleLoadDone = false;
-
- // Add the load delegate.
- SimpleLoadDelegate *loadDelegate = [[SimpleLoadDelegate alloc] initWithFlag:&simpleLoadDone];
- view.browsingContextController.loadDelegate = loadDelegate;
-
- // Load the file.
- NSURL *nsURL = [[NSBundle mainBundle] URLForResource:@"simple" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"];
- [view.browsingContextController loadFileURL:nsURL restrictToFilesWithin:nil];
-
- // Wait for the load to finish.
- TestWebKitAPI::Util::run(&simpleLoadDone);
-
- // Tear down the delegate.
- view.browsingContextController.loadDelegate = nil;
- [loadDelegate release];
-}
-
-TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoadOfHTMLString)
-{
- bool simpleLoadDone = false;
-
- // Add the load delegate.
- SimpleLoadDelegate *loadDelegate = [[SimpleLoadDelegate alloc] initWithFlag:&simpleLoadDone];
- view.browsingContextController.loadDelegate = loadDelegate;
-
- // Load the HTML string.
- [view.browsingContextController loadHTMLString:@"<html><body>Simple HTML String</body></html>" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- // Wait for the load to finish.
- TestWebKitAPI::Util::run(&simpleLoadDone);
-
- // Tear down the delegate.
- view.browsingContextController.loadDelegate = nil;
- [loadDelegate release];
-}
-
-TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoadOfHTMLString_NilBaseURL)
-{
- bool simpleLoadDone = false;
-
- // Add the load delegate.
- SimpleLoadDelegate *loadDelegate = [[SimpleLoadDelegate alloc] initWithFlag:&simpleLoadDone];
- view.browsingContextController.loadDelegate = loadDelegate;
-
- // Load the HTML string, pass nil as the baseURL.
- [view.browsingContextController loadHTMLString:@"<html><body>Simple HTML String</body></html>" baseURL:nil];
-
- // Wait for the load to finish.
- TestWebKitAPI::Util::run(&simpleLoadDone);
-
- // Tear down the delegate.
- view.browsingContextController.loadDelegate = nil;
- [loadDelegate release];
-}
-
-TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoadOfHTMLString_NilHTMLStringAndBaseURL)
-{
- bool simpleLoadDone = false;
-
- // Add the load delegate.
- SimpleLoadDelegate *loadDelegate = [[SimpleLoadDelegate alloc] initWithFlag:&simpleLoadDone];
- view.browsingContextController.loadDelegate = loadDelegate;
-
- // Load the HTML string (as nil).
- [view.browsingContextController loadHTMLString:nil baseURL:nil];
-
- // Wait for the load to finish.
- TestWebKitAPI::Util::run(&simpleLoadDone);
-
- // Tear down the delegate.
- view.browsingContextController.loadDelegate = nil;
- [loadDelegate release];
-}
-
-@interface SimpleLoadFailDelegate : NSObject <WKBrowsingContextLoadDelegate>
-{
- bool* _simpleLoadFailDone;
-}
-
-- (id)initWithFlag:(bool*)flag;
-
-@end
-
-@implementation SimpleLoadFailDelegate
-
-- (id)initWithFlag:(bool*)flag
-{
- self = [super init];
- if (!self)
- return nil;
-
- _simpleLoadFailDone = flag;
- return self;
-}
-
-- (void)browsingContextControllerDidFailProvisionalLoad:(WKBrowsingContextController *)sender withError:(NSError *)error
-{
- EXPECT_EQ(-1100, error.code);
- EXPECT_WK_STREQ(NSURLErrorDomain, error.domain);
-
- *_simpleLoadFailDone = true;
-}
-
-@end
-
-TEST_F(WKBrowsingContextLoadDelegateTest, SimpleLoadFail)
-{
- bool simpleLoadFailDone = false;
-
- // Add the load delegate.
- SimpleLoadFailDelegate *loadDelegate = [[SimpleLoadFailDelegate alloc] initWithFlag:&simpleLoadFailDone];
- view.browsingContextController.loadDelegate = loadDelegate;
-
- // Load a non-existent file.
- NSURL *nsURL = [NSURL URLWithString:@"file:///does-not-exist.html"];
- [view.browsingContextController loadFileURL:nsURL restrictToFilesWithin:nil];
-
- // Wait for the load to fail.
- TestWebKitAPI::Util::run(&simpleLoadFailDone);
-
- // Tear down the delegate.
- view.browsingContextController.loadDelegate = nil;
- [loadDelegate release];
-}
diff --git a/Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp b/Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp
deleted file mode 100644
index bfcc17dcc..000000000
--- a/Tools/TestWebKitAPI/Tests/gtk/InputMethodFilter.cpp
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "GtkInputMethodFilter.h"
-#include "WTFStringUtilities.h"
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
-#include <wtf/text/CString.h>
-
-using namespace WebCore;
-
-namespace TestWebKitAPI {
-
-class TestInputMethodFilter : public GtkInputMethodFilter {
-public:
- TestInputMethodFilter()
- : m_testWindow(gtk_window_new(GTK_WINDOW_POPUP))
- {
- gtk_widget_show(m_testWindow.get());
- setWidget(m_testWindow.get());
-
- // Focus in is necessary to activate the default input method in the multicontext.
- notifyFocusedIn();
- }
-
- Vector<String>& events() { return m_events; }
-
- void sendKeyEventToFilter(unsigned int gdkKeyValue, GdkEventType type, unsigned int modifiers = 0)
- {
- GdkEvent* event = gdk_event_new(type);
- event->key.keyval = gdkKeyValue;
- event->key.state = modifiers;
- event->key.window = gtk_widget_get_window(m_testWindow.get());
- event->key.time = GDK_CURRENT_TIME;
- g_object_ref(event->key.window);
-
-#ifndef GTK_API_VERSION_2
- gdk_event_set_device(event, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_display_get_default())));
-#endif
-
- GOwnPtr<GdkKeymapKey> keys;
- gint nKeys;
- if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeyValue, &keys.outPtr(), &nKeys))
- event->key.hardware_keycode = keys.get()[0].keycode;
-
- filterKeyEvent(&event->key);
- gdk_event_free(event);
- }
-
- void sendPressAndReleaseKeyEventPairToFilter(unsigned int gdkKeyValue, unsigned int modifiers = 0)
- {
- sendKeyEventToFilter(gdkKeyValue, GDK_KEY_PRESS, modifiers);
- sendKeyEventToFilter(gdkKeyValue, GDK_KEY_RELEASE, modifiers);
- }
-
-protected:
- virtual bool sendSimpleKeyEvent(GdkEventKey* event, WTF::String eventString, EventFakedForComposition faked)
- {
- const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press";
- const char* fakedString = faked == EventFaked ? " (faked)" : "";
- if (!eventString.isNull())
- m_events.append(String::format("sendSimpleKeyEvent type=%s keycode=%x text='%s'%s", eventType, event->keyval, eventString.utf8().data(), fakedString));
- else
- m_events.append(String::format("sendSimpleKeyEvent type=%s keycode=%x%s", eventType, event->keyval, fakedString));
-
- return true;
- }
-
- virtual bool sendKeyEventWithCompositionResults(GdkEventKey* event, ResultsToSend resultsToSend, EventFakedForComposition faked)
- {
- const char* eventType = event->type == GDK_KEY_RELEASE ? "release" : "press";
- const char* fakedString = faked == EventFaked ? " (faked)" : "";
- m_events.append(String::format("sendKeyEventWithCompositionResults type=%s keycode=%u%s", eventType, event->keyval, fakedString));
-
- if (resultsToSend & Composition && !m_confirmedComposition.isNull())
- confirmCompositionText(m_confirmedComposition);
- if (resultsToSend & Preedit && !m_preedit.isNull())
- setPreedit(m_preedit, m_cursorOffset);
-
- return true;
- }
-
- virtual bool canEdit()
- {
- return true;
- }
-
- virtual void confirmCompositionText(String text)
- {
- m_events.append(String::format("confirmComposition '%s'", text.utf8().data()));
- }
-
- virtual void confirmCurrentComposition()
- {
- m_events.append(String("confirmCurrentcomposition"));
- }
-
- virtual void cancelCurrentComposition()
- {
- m_events.append(String("cancelCurrentComposition"));
- }
-
- virtual void setPreedit(String preedit, int cursorOffset)
- {
- m_events.append(String::format("setPreedit text='%s' cursorOffset=%i", preedit.utf8().data(), cursorOffset));
- }
-
-private:
- GRefPtr<GtkWidget> m_testWindow;
- Vector<String> m_events;
-};
-
-TEST(GTK, GtkInputMethodFilterSimple)
-{
- TestInputMethodFilter inputMethodFilter;
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_g);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_t);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_k);
-
- const Vector<String>& events = inputMethodFilter.events();
-
- ASSERT_EQ(6, events.size());
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=67 text='g'"), events[0]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=67"), events[1]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=74 text='t'"), events[2]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=74"), events[3]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=6b text='k'"), events[4]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=6b"), events[5]);
-}
-
-TEST(GTK, GtkInputMethodFilterUnicodeSequence)
-{
- TestInputMethodFilter inputMethodFilter;
-
- // This is simple unicode hex entry of the characters, u, 0, 0, f, 4 pressed with
- // the shift and controls keys held down. In reality, these values are not typical
- // of an actual hex entry, because they'd be transformed by the shift modifier according
- // to the keyboard layout. For instance, on a US keyboard a 0 with the shift key pressed
- // is a right parenthesis. Using these values prevents having to work out what the
- // transformed characters are based on the current keyboard layout.
- inputMethodFilter.sendKeyEventToFilter(GDK_KEY_Control_L, GDK_KEY_PRESS);
- inputMethodFilter.sendKeyEventToFilter(GDK_KEY_Shift_L, GDK_KEY_PRESS, GDK_CONTROL_MASK);
-
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_U, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_0, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_0, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_F, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_4, GDK_SHIFT_MASK | GDK_CONTROL_MASK);
-
- inputMethodFilter.sendKeyEventToFilter(GDK_KEY_Shift_L, GDK_KEY_RELEASE, GDK_CONTROL_MASK | GDK_SHIFT_MASK);
- inputMethodFilter.sendKeyEventToFilter(GDK_KEY_Control_L, GDK_KEY_RELEASE, GDK_CONTROL_MASK);
-
- const Vector<String>& events = inputMethodFilter.events();
- ASSERT_EQ(21, events.size());
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=ffe3"), events[0]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=ffe1"), events[1]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=85"), events[2]);
- ASSERT_EQ(String("setPreedit text='u' cursorOffset=1"), events[3]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=55"), events[4]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=48"), events[5]);
- ASSERT_EQ(String("setPreedit text='u0' cursorOffset=2"), events[6]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=30"), events[7]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=48"), events[8]);
- ASSERT_EQ(String("setPreedit text='u00' cursorOffset=3"), events[9]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=30"), events[10]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=70"), events[11]);
- ASSERT_EQ(String("setPreedit text='u00F' cursorOffset=4"), events[12]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=46"), events[13]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=52"), events[14]);
- ASSERT_EQ(String("setPreedit text='u00F4' cursorOffset=5"), events[15]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=34"), events[16]);
- ASSERT_EQ(String("confirmComposition 'ô'"), events[17]);
- ASSERT_EQ(String("setPreedit text='' cursorOffset=0"), events[18]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=ffe1"), events[19]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=ffe3"), events[20]);
-}
-
-TEST(GTK, GtkInputMethodFilterComposeKey)
-{
- TestInputMethodFilter inputMethodFilter;
-
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_Multi_key);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_apostrophe);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_o);
-
- const Vector<String>& events = inputMethodFilter.events();
- ASSERT_EQ(5, events.size());
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=39"), events[0]);
- ASSERT_EQ(String("setPreedit text='' cursorOffset=0"), events[1]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=27"), events[2]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=press keycode=6f text='ó'"), events[3]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=6f"), events[4]);
-}
-
-typedef void (*GetPreeditStringCallback) (GtkIMContext*, gchar**, PangoAttrList**, int*);
-static void temporaryGetPreeditStringOverride(GtkIMContext*, char** string, PangoAttrList** attrs, int* cursorPosition)
-{
- *string = g_strdup("preedit of doom, bringer of cheese");
- *cursorPosition = 3;
-}
-
-TEST(GTK, GtkInputMethodFilterContextEventsWithoutKeyEvents)
-{
- TestInputMethodFilter inputMethodFilter;
-
- // This is a bit of a hack to avoid mocking out the entire InputMethodContext, by
- // simply replacing the get_preedit_string virtual method for the length of this test.
- GtkIMContext* context = inputMethodFilter.context();
- GtkIMContextClass* contextClass = GTK_IM_CONTEXT_GET_CLASS(context);
- GetPreeditStringCallback previousCallback = contextClass->get_preedit_string;
- contextClass->get_preedit_string = temporaryGetPreeditStringOverride;
-
- g_signal_emit_by_name(context, "preedit-changed");
- g_signal_emit_by_name(context, "commit", "commit text");
-
- contextClass->get_preedit_string = previousCallback;
-
- const Vector<String>& events = inputMethodFilter.events();
- ASSERT_EQ(6, events.size());
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=16777215 (faked)"), events[0]);
- ASSERT_EQ(String("setPreedit text='preedit of doom, bringer of cheese' cursorOffset=3"), events[1]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=ffffff (faked)"), events[2]);
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=16777215 (faked)"), events[3]);
- ASSERT_EQ(String("confirmComposition 'commit text'"), events[4]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=ffffff (faked)"), events[5]);
-}
-
-static bool gSawContextReset = false;
-typedef void (*ResetCallback) (GtkIMContext*);
-static void temporaryResetOverride(GtkIMContext*)
-{
- gSawContextReset = true;
-}
-
-static void verifyCanceledComposition(const Vector<String>& events)
-{
- ASSERT_EQ(3, events.size());
- ASSERT_EQ(String("sendKeyEventWithCompositionResults type=press keycode=39"), events[0]);
- ASSERT_EQ(String("setPreedit text='' cursorOffset=0"), events[1]);
- ASSERT_EQ(String("sendSimpleKeyEvent type=release keycode=27"), events[2]);
- ASSERT(gSawContextReset);
-}
-
-TEST(GTK, GtkInputMethodFilterContextFocusOutDuringOngoingComposition)
-{
- TestInputMethodFilter inputMethodFilter;
-
- // See comment above about this technique.
- GtkIMContext* context = inputMethodFilter.context();
- GtkIMContextClass* contextClass = GTK_IM_CONTEXT_GET_CLASS(context);
- ResetCallback previousCallback = contextClass->reset;
- contextClass->reset = temporaryResetOverride;
-
- gSawContextReset = false;
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_Multi_key);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_apostrophe);
- inputMethodFilter.notifyFocusedOut();
-
- verifyCanceledComposition(inputMethodFilter.events());
-
- contextClass->reset = previousCallback;
-}
-
-TEST(GTK, GtkInputMethodFilterContextMouseClickDuringOngoingComposition)
-{
- TestInputMethodFilter inputMethodFilter;
-
- // See comment above about this technique.
- GtkIMContext* context = inputMethodFilter.context();
- GtkIMContextClass* contextClass = GTK_IM_CONTEXT_GET_CLASS(context);
- ResetCallback previousCallback = contextClass->reset;
- contextClass->reset = temporaryResetOverride;
-
- gSawContextReset = false;
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_Multi_key);
- inputMethodFilter.sendPressAndReleaseKeyEventPairToFilter(GDK_KEY_apostrophe);
- inputMethodFilter.notifyMouseButtonPress();
-
- verifyCanceledComposition(inputMethodFilter.events());
-
- contextClass->reset = previousCallback;
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/0.png b/Tools/TestWebKitAPI/Tests/mac/0.png
deleted file mode 100644
index 649d1adf5..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/0.png
+++ /dev/null
Binary files differ
diff --git a/Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm b/Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm
deleted file mode 100644
index dec788804..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/AcceptsFirstMouse.mm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "WebKitAgnosticTest.h"
-
-#include <wtf/RetainPtr.h>
-
-@interface NSApplication (TestWebKitAPINSApplicationDetails)
-- (void)_setCurrentEvent:(NSEvent *)event;
-@end
-
-namespace TestWebKitAPI {
-
-class AcceptsFirstMouse : public WebKitAgnosticTest {
-public:
- template <typename View> void runTest(View);
-
- // WebKitAgnosticTest
- virtual NSURL *url() const { return [[NSBundle mainBundle] URLForResource:@"acceptsFirstMouse" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]; }
- virtual void didLoadURL(WebView *webView) { runTest(webView); }
- virtual void didLoadURL(WKView *wkView) { runTest(wkView); }
-};
-
-template <typename View>
-void AcceptsFirstMouse::runTest(View view)
-{
- RetainPtr<NSWindow> window = adoptNS([[NSWindow alloc] initWithContentRect:view.frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- [[window.get() contentView] addSubview:view];
-
- CGFloat viewHeight = view.bounds.size.height;
-
- NSPoint pointInsideSelection = NSMakePoint(50, viewHeight - 50);
- NSEvent *mouseEventInsideSelection = [NSEvent mouseEventWithType:NSLeftMouseDown location:pointInsideSelection modifierFlags:0 timestamp:0 windowNumber:[window.get() windowNumber] context:nil eventNumber:0 clickCount:1 pressure:1];
- EXPECT_TRUE([[view hitTest:pointInsideSelection] acceptsFirstMouse:mouseEventInsideSelection]);
-
- NSPoint pointOutsideSelection = NSMakePoint(50, viewHeight - 150);
- NSEvent *mouseEventOutsideSelection = [NSEvent mouseEventWithType:NSLeftMouseDown location:pointOutsideSelection modifierFlags:0 timestamp:0 windowNumber:[window.get() windowNumber] context:nil eventNumber:0 clickCount:1 pressure:1];
- EXPECT_FALSE([[view hitTest:pointInsideSelection] acceptsFirstMouse:mouseEventOutsideSelection]);
-}
-
-TEST_F(AcceptsFirstMouse, WebKit)
-{
- // Ensure that [NSApp currentEvent] is not a previously-simulated spacebar key press, since this
- // causes the scrollBy() in the test to perform a smooth scroll.
- [NSApp _setCurrentEvent:nil];
- runWebKit1Test();
-}
-
-TEST_F(AcceptsFirstMouse, WebKit2)
-{
- runWebKit2Test();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/AttributedString.mm b/Tools/TestWebKitAPI/Tests/mac/AttributedString.mm
deleted file mode 100644
index 6386cad5f..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/AttributedString.mm
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-
-@interface AttributedStringTest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation AttributedStringTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void*)
-{
- didFinishLoad = true;
-}
-
-TEST(WebKit1, AttributedStringTest)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<AttributedStringTest> testController = adoptNS([AttributedStringTest new]);
-
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"attributedStringCustomFont" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- NSAttributedString *attrString = [(NSView <NSTextInput> *)[[[webView.get() mainFrame] frameView] documentView] attributedSubstringFromRange:NSMakeRange(0, 5)];
-
- EXPECT_WK_STREQ("Lorem", [attrString string]);
-}
-
-TEST(WebKit2, AttributedStringTest)
-{
- WKRetainPtr<WKContextRef> context(AdoptWK, WKContextCreate());
- PlatformWebView webView(context.get());
-
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
- WKPageSetPageLoaderClient(webView.page(), &loaderClient);
-
- WKPageLoadURL(webView.page(), adoptWK(Util::createURLForResource("attributedStringCustomFont", "html")).get());
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- NSRange range = NSMakeRange(0, 5);
- NSRange actualRange;
- NSAttributedString *attrString = [webView.platformView() attributedSubstringForProposedRange:range actualRange:&actualRange];
-
- EXPECT_WK_STREQ("Lorem", [attrString string]);
-}
-
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm b/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm
deleted file mode 100644
index 82ddb3830..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/BackForwardList.mm
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#include <WebKit/WebBackForwardList.h>
-
-@interface BackForwardListTest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation BackForwardListTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-- (void)webView:(WebView *)sender didFailProvisionalLoadWithError:(NSError *)error forFrame:(WebFrame *)frame
-{
- [frame loadAlternateHTMLString:@"<html></html>" baseURL:[NSURL URLWithString:@"about:blank"] forUnreachableURL:[[error userInfo] valueForKey:NSURLErrorFailingURLErrorKey]];
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, ReloadBackForward)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<BackForwardListTest> testController = adoptNS([BackForwardListTest new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://does-not-exist.example"]]];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- [[webView.get() mainFrame] reload];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- WebBackForwardList *bfList = [webView.get() backForwardList];
- EXPECT_EQ(0, [bfList backListCount]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.html b/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.html
deleted file mode 100644
index efa4d1e37..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<script>
- function cancelLoadAndJumpToBlank() {
- window.stop();
- window.location = "about:blank";
- }
-</script>
-<img src="Ahem.ttf">
-<script src="about:blank"></script> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm b/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm
deleted file mode 100644
index 9a19f936c..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/CancelLoadFromResourceLoadDelegate.mm
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <wtf/RetainPtr.h>
-
-@interface CancelLoadFromResourceLoadDelegate : NSObject {
- size_t resourceCount;
-}
-
-@end
-
-@implementation CancelLoadFromResourceLoadDelegate
-
-- (void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
-{
- // Break the load once we have loaded the <script> and <img>.
- ++resourceCount;
- if (resourceCount > 2)
- [sender stringByEvaluatingJavaScriptFromString:@"cancelLoadAndJumpToBlank()"];
-}
-@end
-
-
-static bool didFinishLoad = false;
-
-@interface CancelLoadFromResourceLoadDelegateFrameLoadDelegate : NSObject
-@end
-
-@implementation CancelLoadFromResourceLoadDelegateFrameLoadDelegate
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- if ([[sender mainFrameURL] isEqualToString:@"about:blank"])
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, CancelLoadFromResourceLoadDelegate)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- RetainPtr<CancelLoadFromResourceLoadDelegate> resourceLoadDelegate = adoptNS([[CancelLoadFromResourceLoadDelegate alloc] init]);
- webView.get().resourceLoadDelegate = resourceLoadDelegate.get();
- RetainPtr<CancelLoadFromResourceLoadDelegateFrameLoadDelegate> frameLoadDelegate = adoptNS([[CancelLoadFromResourceLoadDelegateFrameLoadDelegate alloc] init]);
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
-
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"CancelLoadFromResourceLoadDelegate" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- [pool drain];
- // If we finished without crashing, the test passed.
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/CloseNewWindowInNavigationPolicyDelegate.mm b/Tools/TestWebKitAPI/Tests/mac/CloseNewWindowInNavigationPolicyDelegate.mm
deleted file mode 100644
index 367378609..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/CloseNewWindowInNavigationPolicyDelegate.mm
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <wtf/RetainPtr.h>
-
-static bool testFinished = false;
-
-@interface TestDelegate : NSObject
-
-+ (TestDelegate *)shared;
-
-@end
-
-@implementation TestDelegate
-
-+ (TestDelegate *)shared
-{
- static TestDelegate *sharedTestDelegate = [[TestDelegate alloc] init];
- return sharedTestDelegate;
-}
-
-- (void)webView:(WebView *)webView decidePolicyForNavigationAction:(NSDictionary *)actionInformation request:(NSURLRequest *)request frame:(WebFrame *)frame decisionListener:(id<WebPolicyDecisionListener>)listener
-{
- if (!request) {
- [listener use];
- return;
- }
-
- [webView close];
- [listener ignore];
- testFinished = true;
-}
-
-- (WebView *)webView:(WebView *)sender createWebViewWithRequest:(NSURLRequest *)request
-{
- WebView *webView = [[WebView alloc] init];
- webView.policyDelegate = [TestDelegate shared];
- [[webView mainFrame] loadRequest:request];
- return webView;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, CloseNewWindowInNavigationPolicyDelegate)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] init]);
- webView.get().preferences.javaScriptCanOpenWindowsAutomatically = YES;
- webView.get().UIDelegate = [TestDelegate shared];
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"OpenNewWindow" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&testFinished);
-
- [pool drain];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html b/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html
deleted file mode 100644
index 3147603ce..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.html
+++ /dev/null
@@ -1,4 +0,0 @@
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
-</head>
-Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<a href='http://www.webkit.org/'>Click me</a>Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.<a href='http://xn--ls8h.la/'>http://💩.la</a>.Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm b/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm
deleted file mode 100644
index f79535f64..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/ContextMenuCanCopyURL.mm
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import "PlatformWebView.h"
-#import "WTFStringUtilities.h"
-
-#import <WebKit/WebViewPrivate.h>
-#import <WebKit/WebURLsWithTitles.h>
-#import <WebKit/DOM.h>
-#import <Carbon/Carbon.h>
-#import <wtf/RetainPtr.h>
-
-
-@interface ContextMenuCanCopyURLDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation ContextMenuCanCopyURLDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-static void contextMenuCopyLink(WebView* webView, int itemIndex)
-{
- [[[[webView mainFrame] frameView] documentView] layout];
-
- DOMDocument *document = [[webView mainFrame] DOMDocument];
- DOMElement *documentElement = [document documentElement];
- DOMHTMLAnchorElement *anchor = (DOMHTMLAnchorElement *)[[documentElement querySelectorAll:@"a"] item:itemIndex];
-
- NSWindow *window = [webView window];
- NSEvent *event = [NSEvent mouseEventWithType:NSRightMouseDown
- location:NSMakePoint(anchor.offsetLeft + anchor.offsetWidth / 2, window.frame.size.height - (anchor.offsetTop + anchor.offsetHeight / 2))
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[window windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:0
- clickCount:0
- pressure:0.0];
-
- NSView *subView = [webView hitTest:[event locationInWindow]];
- if (!subView)
- return;
-
- NSMenu* menu = [subView menuForEvent:event];
- for (int i = 0; i < [menu numberOfItems]; ++i) {
- NSMenuItem* menuItem = [menu itemAtIndex:i];
- if ([menuItem tag] != WebMenuItemTagCopyLinkToClipboard)
- continue;
-
- [menu performActionForItemAtIndex:i];
- }
-}
-
-
-TEST(WebKit1, ContextMenuCanCopyURL)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0,0,800,600) frameName:nil groupName:nil]);
- RetainPtr<NSWindow> window = adoptNS([[NSWindow alloc] initWithContentRect:NSMakeRect(100, 100, 800, 600) styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- RetainPtr<ContextMenuCanCopyURLDelegate> delegate = adoptNS([[ContextMenuCanCopyURLDelegate alloc] init]);
-
- [window.get().contentView addSubview:webView.get()];
- webView.get().frameLoadDelegate = delegate.get();
-
- [webView.get().mainFrame loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"ContextMenuCanCopyURL" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- contextMenuCopyLink(webView.get(), 0);
-
- NSURL *url = [NSURL URLFromPasteboard:[NSPasteboard generalPasteboard]];
- EXPECT_EQ(String("http://www.webkit.org/"), String([url absoluteString]));
-
- contextMenuCopyLink(webView.get(), 1);
-
- NSArray * urls = [WebURLsWithTitles URLsFromPasteboard: [NSPasteboard generalPasteboard]];
- NSArray * titles = [WebURLsWithTitles titlesFromPasteboard: [NSPasteboard generalPasteboard]];
- EXPECT_WK_STREQ(@"http://xn--ls8h.la/", [[urls objectAtIndex:0] absoluteString]);
- EXPECT_WK_STREQ(@"http://💩.la", [titles objectAtIndex:0]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm b/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm
deleted file mode 100644
index 2c8ca3986..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellCellAbove.mm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#import <WebKit/DOMPrivate.h>
-#import <WebKit/WebViewPrivate.h>
-
-@interface HTMLTableCellElementCellAboveTest : NSObject
-@end
-
-static bool didFinishLoad;
-
-@implementation HTMLTableCellElementCellAboveTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-static void expectCellAboveCell(DOMDocument *document, NSString *cellID, NSString *cellAboveID)
-{
- DOMHTMLTableCellElement *cell = (DOMHTMLTableCellElement *)[document getElementById:cellID];
- DOMHTMLTableCellElement *cellAbove = [cell _cellAbove];
-
- EXPECT_WK_STREQ(cellAboveID, [cellAbove getAttribute:@"id"]);
-}
-
-TEST(WebKit1, HTMLTableCellElementCellAbove)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<HTMLTableCellElementCellAboveTest> testController = adoptNS([HTMLTableCellElementCellAboveTest new]);
-
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle]
- URLForResource:@"DOMHTMLTableCellElementCellAbove" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- DOMDocument *document = webView.get().mainFrameDocument;
-
- expectCellAboveCell(document, @"cell-4-2", @"cell-3-2");
- expectCellAboveCell(document, @"cell-3-1", @"cell-2-1");
- expectCellAboveCell(document, @"cell-2-1", @"cell-1-1");
- expectCellAboveCell(document, @"cell-1-2", @"cell-h-2");
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellElementCellAbove.html b/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellElementCellAbove.html
deleted file mode 100644
index 79135fd27..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DOMHTMLTableCellElementCellAbove.html
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE html>
-<body>
- <table>
- <tbody>
- <tr>
- <td id="cell-1-1">1-1</td>
- <td id="cell-1-2">1-2</td>
- </tr>
- <tr>
- <td id="cell-2-1">2-1</td>
- <td id="cell-2-2">2-2</td>
- </tr>
- </tbody>
- <thead>
- <tr>
- <th id="cell-h-1">h-1</th>
- <th id="cell-h-2">h-2</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td id="cell-3-1">3-1</td>
- <td id="cell-3-2">3-2</td>
- </tr>
- <tr>
- <td id="cell-4-1">4-1</td>
- <td id="cell-4-2">4-2</td>
- </tr>
- </tbody>
-</body>
diff --git a/Tools/TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm b/Tools/TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm
deleted file mode 100644
index 7bd23ea98..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DOMNodeFromJSObject.mm
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <WebKit/DOMPrivate.h>
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebScriptWorld.h>
-#import <objc/runtime.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DOMNodeFromJSObject)
-{
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil];
-
- [webView stringByEvaluatingJavaScriptFromString:@"document.body.mainWorldProperty = true"];
-
- WebScriptWorld *isolatedWorld = [WebScriptWorld world];
- JSGlobalContextRef context = [[webView mainFrame] _globalContextForScriptWorld:isolatedWorld];
-
- JSRetainPtr<JSStringRef> script(Adopt, JSStringCreateWithUTF8CString("document.body"));
-
- JSValueRef value = JSEvaluateScript(context, script.get(), 0, 0, 0, 0);
- JSObjectRef jsBody = JSValueToObject(context, value, 0);
-
- id objcBody = [DOMNode _nodeFromJSWrapper:jsBody];
-
- EXPECT_STREQ("DOMHTMLBodyElement", class_getName([objcBody class]));
- EXPECT_EQ([[[webView mainFrame] DOMDocument] body], objcBody);
-
- // Verify that the Objective-C wrapper is for the main world JS wrapper.
- EXPECT_TRUE([[objcBody valueForKey:@"mainWorldProperty"] boolValue]);
-
- [webView release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.html b/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.html
deleted file mode 100644
index 539cc0a53..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
- There is only a single needle in this stack of hay.
- <iframe src="data:text/html,
- There are no feathers in here.
- "></iframe>
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm b/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm
deleted file mode 100644
index a4485178d..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DOMRangeOfString.mm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebViewPrivate.h>
-#import <WebKit/DOM.h>
-#import <wtf/RetainPtr.h>
-
-@interface DOMRangeOfStringFrameLoadDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation DOMRangeOfStringFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DOMRangeOfString)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil]);
- RetainPtr<DOMRangeOfStringFrameLoadDelegate> frameLoadDelegate = adoptNS([DOMRangeOfStringFrameLoadDelegate new]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"DOMRangeOfString" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- DOMRange *resultRange = [webView.get() DOMRangeOfString:@"needles" relativeTo:nil options:0];
- EXPECT_EQ(nil, resultRange);
-
- DOMRange *needleRange = [webView.get() DOMRangeOfString:@"needle" relativeTo:nil options:0];
- EXPECT_EQ(28, needleRange.startOffset);
-
- resultRange = [webView.get() DOMRangeOfString:@"stack" relativeTo:needleRange options:0];
- EXPECT_EQ(43, resultRange.startOffset);
-
- resultRange = [webView.get() DOMRangeOfString:@"stack" relativeTo:needleRange options:WebFindOptionsBackwards];
- EXPECT_EQ(nil, resultRange);
-
- resultRange = [webView.get() DOMRangeOfString:@"n" relativeTo:needleRange options:0];
- EXPECT_EQ(36, resultRange.startOffset);
-
- resultRange = [webView.get() DOMRangeOfString:@"n" relativeTo:needleRange options:WebFindOptionsStartInSelection];
- EXPECT_EQ(28, resultRange.startOffset);
-
- RetainPtr<WebView> otherWebView = adoptNS([[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil]);
- DOMRange *foreignRange = [[[otherWebView.get() mainFrame] DOMDocument] createRange];
- resultRange = [webView.get() DOMRangeOfString:@"needle" relativeTo:foreignRange options:0];
- EXPECT_EQ(nil, resultRange);
-
- resultRange = [webView.get() DOMRangeOfString:@"here" relativeTo:needleRange options:0];
- EXPECT_EQ(1, resultRange.startOffset);
-
- resultRange = [webView.get() DOMRangeOfString:@"here" relativeTo:resultRange options:0];
- EXPECT_EQ(25, resultRange.startOffset);
-
- resultRange = [webView.get() DOMRangeOfString:@"here" relativeTo:resultRange options:WebFindOptionsWrapAround];
- EXPECT_EQ(6, resultRange.startOffset);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm b/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm
deleted file mode 100644
index 68ecbf819..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorInDashboardRegions.mm
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-
-#import "PlatformUtilities.h"
-#import "SyntheticBackingScaleFactorWindow.h"
-#import "Test.h"
-#import <WebKit/WebDashboardRegion.h>
-#import <wtf/RetainPtr.h>
-
-static bool gotDashboardRegions;
-static NSDictionary *regions;
-
-@interface DeviceScaleFactorInDashboardRegionsUIDelegate : NSObject {
-}
-@end
-
-@implementation DeviceScaleFactorInDashboardRegionsUIDelegate
-
-- (void)webView:(WebView *)webView dashboardRegionsChanged:(NSDictionary *)newRegions
-{
- gotDashboardRegions = true;
- regions = [newRegions retain];
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DeviceScaleFactorInDashboardRegions)
-{
- NSRect viewFrame = NSMakeRect(0, 0, 800, 600);
- RetainPtr<SyntheticBackingScaleFactorWindow> window = adoptNS([[SyntheticBackingScaleFactorWindow alloc] initWithContentRect:viewFrame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- [window.get() setReleasedWhenClosed:NO];
- [window.get() setBackingScaleFactor:2];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:viewFrame frameName:nil groupName:nil]);
- RetainPtr<DeviceScaleFactorInDashboardRegionsUIDelegate> uiDelegate = adoptNS([DeviceScaleFactorInDashboardRegionsUIDelegate new]);
- webView.get().UIDelegate = uiDelegate.get();
- [window.get().contentView addSubview:webView.get()];
-
- [webView.get().mainFrame loadHTMLString:@"<div style='position: absolute; top: 10px; left: 10px; width: 50px; height: 50px; -webkit-dashboard-region: dashboard-region(control rectangle);'></div>" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&gotDashboardRegions);
-
- NSRect controlRegionRect = [[[regions objectForKey:@"control"] objectAtIndex:0] dashboardRegionRect];
-
- EXPECT_EQ(10, controlRegionRect.origin.x);
- EXPECT_EQ(10, controlRegionRect.origin.y);
- EXPECT_EQ(50, controlRegionRect.size.width);
- EXPECT_EQ(50, controlRegionRect.size.height);
-
- [regions release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm b/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm
deleted file mode 100644
index 8c454282a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DeviceScaleFactorOnBack.mm
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "WebKitAgnosticTest.h"
-
-#include "JavaScriptTest.h"
-#include "PlatformUtilities.h"
-#include "SyntheticBackingScaleFactorWindow.h"
-#include <WebKit2/WKViewPrivate.h>
-#include <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-class DeviceScaleFactorOnBack : public WebKitAgnosticTest {
-public:
- RetainPtr<SyntheticBackingScaleFactorWindow> createWindow();
-
- template <typename View> void runTest(View);
-
- // WebKitAgnosticTest
- virtual NSURL *url() const { return [[NSBundle mainBundle] URLForResource:@"devicePixelRatio" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]; }
- virtual void didLoadURL(WebView *webView) { runTest(webView); }
- virtual void didLoadURL(WKView *wkView) { runTest(wkView); }
- virtual void initializeView(WebView *);
- virtual void initializeView(WKView *);
-};
-
-RetainPtr<SyntheticBackingScaleFactorWindow> DeviceScaleFactorOnBack::createWindow()
-{
- RetainPtr<SyntheticBackingScaleFactorWindow> window = adoptNS([[SyntheticBackingScaleFactorWindow alloc] initWithContentRect:viewFrame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- [window.get() setReleasedWhenClosed:NO];
- return window;
-}
-
-void DeviceScaleFactorOnBack::initializeView(WebView *view)
-{
- // The default cache model has a capacity of 0, so it is necessary to switch to a cache
- // model that actuall caches things.
- [[view preferences] setCacheModel:WebCacheModelDocumentBrowser];
-}
-
-void DeviceScaleFactorOnBack::initializeView(WKView *view)
-{
- // The default cache model has a capacity of 0, so it is necessary to switch to a cache
- // model that actuall caches things.
- WKContextSetCacheModel(WKPageGetContext([view pageRef]), kWKCacheModelDocumentBrowser);
-}
-
-template <typename View>
-void DeviceScaleFactorOnBack::runTest(View view)
-{
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "1");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "1");
-
- // Navigate to new URL
- loadURL(view, [NSURL URLWithString:@"about:blank"]);
- waitForLoadToFinish();
-
- // Change the scale factor
- RetainPtr<SyntheticBackingScaleFactorWindow> window1 = createWindow();
- [window1.get() setBackingScaleFactor:3];
-
- [[window1.get() contentView] addSubview:view];
-
- // Navigate back to the first page
- goBack(view);
- waitForLoadToFinish();
-
- // Ensure that the cached page has updated its scale factor
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "3");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "3");
-
- [view removeFromSuperview];
-}
-
-TEST_F(DeviceScaleFactorOnBack, WebKit)
-{
- runWebKit1Test();
-}
-
-TEST_F(DeviceScaleFactorOnBack, WebKit2)
-{
- runWebKit2Test();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm b/Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm
deleted file mode 100644
index 61a1efed7..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/DynamicDeviceScaleFactor.mm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "WebKitAgnosticTest.h"
-
-#include "JavaScriptTest.h"
-#include "PlatformUtilities.h"
-#include "SyntheticBackingScaleFactorWindow.h"
-#include <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-class DynamicDeviceScaleFactor : public WebKitAgnosticTest {
-public:
- RetainPtr<SyntheticBackingScaleFactorWindow> createWindow();
-
- template <typename View> void runTest(View);
-
- // WebKitAgnosticTest
- virtual NSURL *url() const { return [[NSBundle mainBundle] URLForResource:@"devicePixelRatio" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]; }
- virtual void didLoadURL(WebView *webView) { runTest(webView); }
- virtual void didLoadURL(WKView *wkView) { runTest(wkView); }
-};
-
-RetainPtr<SyntheticBackingScaleFactorWindow> DynamicDeviceScaleFactor::createWindow()
-{
- RetainPtr<SyntheticBackingScaleFactorWindow> window = adoptNS([[SyntheticBackingScaleFactorWindow alloc] initWithContentRect:viewFrame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES]);
- [window.get() setReleasedWhenClosed:NO];
- return window;
-}
-
-template <typename View>
-void DynamicDeviceScaleFactor::runTest(View view)
-{
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "1");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "1");
-
- RetainPtr<SyntheticBackingScaleFactorWindow> window1 = createWindow();
- [window1.get() setBackingScaleFactor:3];
-
- [[window1.get() contentView] addSubview:view];
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "3");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "3");
-
- RetainPtr<SyntheticBackingScaleFactorWindow> window2 = createWindow();
- [window2.get() setBackingScaleFactor:4];
-
- [[window2.get() contentView] addSubview:view];
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "4");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "4");
-
- [view removeFromSuperview];
- EXPECT_JS_EQ(view, "window.devicePixelRatio", "1");
- EXPECT_JS_EQ(view, "devicePixelRatioFromStyle()", "1");
-}
-
-TEST_F(DynamicDeviceScaleFactor, WebKit)
-{
- runWebKit1Test();
-}
-
-TEST_F(DynamicDeviceScaleFactor, WebKit2)
-{
- runWebKit2Test();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/ElementAtPointInWebFrame.mm b/Tools/TestWebKitAPI/Tests/mac/ElementAtPointInWebFrame.mm
deleted file mode 100644
index 10fc581f4..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/ElementAtPointInWebFrame.mm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebFramePrivate.h>
-#import <wtf/RetainPtr.h>
-
-@interface ElementAtPointFrameLoadDelegate : NSObject
-@end
-
-static bool didFinishLoad;
-
-@implementation ElementAtPointFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, ElementAtPoint)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<ElementAtPointFrameLoadDelegate> frameLoadDelegate = adoptNS([[ElementAtPointFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- [mainFrame loadHTMLString:@"<style> div { position:absolute; width:60px; height:100px; } </style> <div name='first'></div> <div name='second' style='left:60px; top:100px;'></div>"
- baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&didFinishLoad);
-
- NSDictionary *elementDictionary = [mainFrame elementAtPoint:NSMakePoint(30, 50)];
- DOMElement *domElement = [elementDictionary objectForKey:WebElementDOMNodeKey];
- EXPECT_WK_STREQ(@"first", [domElement getAttribute:@"name"]);
-
- elementDictionary = [mainFrame elementAtPoint:NSMakePoint(90, 150)];
- domElement = [elementDictionary objectForKey:WebElementDOMNodeKey];
- EXPECT_WK_STREQ(@"second", [domElement getAttribute:@"name"]);
-
- elementDictionary = [mainFrame elementAtPoint:NSMakePoint(30, 150)];
- domElement = [elementDictionary objectForKey:WebElementDOMNodeKey];
- EXPECT_WK_STREQ(@"BODY", [domElement tagName]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.html b/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.html
deleted file mode 100644
index c0205b63e..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
-<input type="text" id="idForTwoTextFields" value="firstItem">
-<input type="text" id="idForTwoTextFields" value="secondItem">
-<img name="nameForTwoImages" title="thirdItem">
-<img name="nameForTwoImages" title="fourthItem">
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm b/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm
deleted file mode 100644
index 62cb79751..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/HTMLCollectionNamedItem.mm
+++ /dev/null
@@ -1,80 +0,0 @@
-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#import <WebKit/DOM.h>
-#import <WebKit/WebViewPrivate.h>
-
-@interface HTMLCollectionNamedItemTest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation HTMLCollectionNamedItemTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, HTMLCollectionNamedItemTest)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<HTMLCollectionNamedItemTest> testController = adoptNS([HTMLCollectionNamedItemTest new]);
-
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle]
- URLForResource:@"HTMLCollectionNamedItem" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- DOMDocument *document = webView.get().mainFrameDocument;
- RetainPtr<DOMHTMLCollection> collection = [[document body] children];
-
- EXPECT_EQ([collection.get() length], (unsigned)4);
- EXPECT_WK_STREQ([[collection.get() item:0] value], @"firstItem");
- EXPECT_WK_STREQ([[collection.get() item:1] value], @"secondItem");
- EXPECT_WK_STREQ([[collection.get() namedItem:@"idForTwoTextFields"] value], @"firstItem");
- EXPECT_WK_STREQ([[collection.get() item:1] value], @"secondItem");
- EXPECT_WK_STREQ([[collection.get() item:0] value], @"firstItem");
-
- EXPECT_WK_STREQ([(DOMHTMLElement*)[collection.get() item:2] title], @"thirdItem");
- EXPECT_WK_STREQ([(DOMHTMLElement*)[collection.get() item:3] title], @"fourthItem");
- EXPECT_WK_STREQ([(DOMHTMLElement*)[collection.get() namedItem:@"nameForTwoImages"] title], @"thirdItem");
- EXPECT_WK_STREQ([(DOMHTMLElement*)[collection.get() item:3] title], @"fourthItem");
- EXPECT_WK_STREQ([(DOMHTMLElement*)[collection.get() item:2] title], @"thirdItem");
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html b/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html
deleted file mode 100644
index 8439f2c27..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.html
+++ /dev/null
@@ -1,9 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
-<form>
- <input type="text" name="nameForTwoTextFields" value="firstItem">
- <input type="text" name="nameForTwoTextFields" value="secondItem">
-</form>
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm b/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm
deleted file mode 100644
index a716ab92f..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/HTMLFormCollectionNamedItem.mm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#import <WebKit/DOM.h>
-#import <WebKit/WebViewPrivate.h>
-
-@interface HTMLFormCollectionNamedItemTest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation HTMLFormCollectionNamedItemTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, HTMLFormCollectionNamedItemTest)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<HTMLFormCollectionNamedItemTest> testController = adoptNS([HTMLFormCollectionNamedItemTest new]);
-
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle]
- URLForResource:@"HTMLFormCollectionNamedItem" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- DOMDocument *document = webView.get().mainFrameDocument;
- DOMHTMLFormElement *form = (DOMHTMLFormElement *)[document querySelector:@"form"];
- RetainPtr<DOMHTMLCollection> collection = [form elements];
-
- EXPECT_EQ([collection.get() length], (unsigned)2);
- EXPECT_WK_STREQ([[collection.get() item:0] value], @"firstItem");
- EXPECT_WK_STREQ([[collection.get() item:1] value], @"secondItem");
- EXPECT_WK_STREQ([[collection.get() namedItem:@"nameForTwoTextFields"] value], @"firstItem");
- EXPECT_WK_STREQ([[collection.get() item:1] value], @"secondItem");
- EXPECT_WK_STREQ([[collection.get() item:0] value], @"firstItem");
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm b/Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm
deleted file mode 100644
index 5f2205be8..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/InspectorBar.mm
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2011, 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <wtf/RetainPtr.h>
-
-@interface InspectorBarController : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation InspectorBarController
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-- (NSDictionary *)convertAttributes:(NSDictionary *)dictionary
-{
- NSMutableDictionary *newDictionary = [dictionary mutableCopy];
- [newDictionary removeObjectForKey:NSForegroundColorAttributeName];
- return [newDictionary autorelease];
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, InspectorBarTest)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<InspectorBarController> inspectorBarController = adoptNS([InspectorBarController new]);
-
- webView.get().frameLoadDelegate = inspectorBarController.get();
- [webView.get().mainFrame loadHTMLString:@"<body contenteditable style=\"color: green\"><u>Lorem ipsum sit amet</u></body>" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&didFinishLoad);
-
- DOMDocument *document = webView.get().mainFrameDocument;
- [[document body] focus];
-
- EXPECT_TRUE([webView.get() respondsToSelector:@selector(typingAttributes)]);
- NSDictionary *attributes = [(id)webView.get() typingAttributes];
- [(id)[[[webView.get() mainFrame] frameView] documentView] doCommandBySelector:@selector(bold:)];
- EXPECT_FALSE([attributes isEqual:[(id)webView.get() typingAttributes]]);
-
- [webView.get() selectAll:nil];
- NSAttributedString *attrString = [(NSView <NSTextInput> *)[[[webView.get() mainFrame] frameView] documentView] attributedSubstringFromRange:NSMakeRange(0, 5)];
- attributes = [attrString attributesAtIndex:0 effectiveRange:0];
-
- EXPECT_TRUE([[attributes objectForKey:NSUnderlineStyleAttributeName] intValue] != 0);
-
- [webView.get() changeAttributes:inspectorBarController.get()];
-
- DOMNode *currentNode = [document body];
- while ([[currentNode firstChild] nodeType] != DOM_TEXT_NODE)
- currentNode = [currentNode firstChild];
-
- DOMCSSStyleDeclaration *style = [document getComputedStyle:(DOMElement *)currentNode pseudoElement:nil];
- EXPECT_WK_STREQ(@"rgb(0, 0, 0)", [style color]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache1.html b/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache1.html
deleted file mode 100644
index f736a7890..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache1.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<body>
- <div id="test-div"></div>
- <script>
- var testDiv = document.getElementById("test-div");
- if (!testDiv.myCustomProperty)
- insertMyCustomProperty(testDiv);
- else
- checkForMyCustomProperty(testDiv);
- </script>
-</body>
diff --git a/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache2.html b/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache2.html
deleted file mode 100644
index 1d26d21b4..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/JSContextBackForwardCache2.html
+++ /dev/null
@@ -1,10 +0,0 @@
-<body>
- <div id="test-div"></div>
- <script>
- var testDiv = document.getElementById("test-div");
- if (testDiv.myCustomProperty)
- myConsole.log("ERROR: found myCustomProperty.");
- else
- didCompleteTestSuccessfully();
- </script>
-</body>
diff --git a/Tools/TestWebKitAPI/Tests/mac/JSWrapperForNodeInWebFrame.mm b/Tools/TestWebKitAPI/Tests/mac/JSWrapperForNodeInWebFrame.mm
deleted file mode 100644
index 5c41aaab5..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/JSWrapperForNodeInWebFrame.mm
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebFramePrivate.h>
-#import <WebKit/WebScriptWorld.h>
-#import <JavaScriptCore/JSContextRef.h>
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSValueRef.h>
-#import <wtf/RetainPtr.h>
-
-@interface JSWrapperForNodeFrameLoadDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation JSWrapperForNodeFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, JSWrapperForNode)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<JSWrapperForNodeFrameLoadDelegate> frameLoadDelegate = adoptNS([[JSWrapperForNodeFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
- [mainFrame loadHTMLString:@"<div id=\"target\"</div>" baseURL:[NSURL URLWithString:@"about:blank"]];
- Util::run(&didFinishLoad);
- DOMDocument *document = webView.get().mainFrameDocument;
- DOMNode *target = [document getElementById:@"target"]; // This script object is in standard world.
-
- // In an isolated script world, add a new property to the target node.
- NSString *isolatedScriptString = @"var target = document.getElementById(\"target\"); target.isolatedProperty = true;";
- WebScriptWorld *isolatedWorld = [WebScriptWorld world];
- JSGlobalContextRef isolatedCtx = [mainFrame _globalContextForScriptWorld:isolatedWorld];
- [mainFrame _stringByEvaluatingJavaScriptFromString:isolatedScriptString withGlobalObject:JSContextGetGlobalObject(isolatedCtx) inScriptWorld:isolatedWorld];
- JSValueRef isolatedNodeJSValue = [mainFrame jsWrapperForNode:target inScriptWorld:isolatedWorld];
- ASSERT_TRUE(JSValueIsObject(isolatedCtx, isolatedNodeJSValue));
- JSObjectRef isolatedNodeJSObject = JSValueToObject(isolatedCtx, isolatedNodeJSValue, 0);
-
- // In the standard script world, add a different property to the target node
- NSString *normalScriptString = @"var target = document.getElementById(\"target\"); target.normalProperty = true;";
- WebScriptWorld *normalWorld = [WebScriptWorld standardWorld];
- JSGlobalContextRef normalCtx = [mainFrame _globalContextForScriptWorld:normalWorld];
- [mainFrame _stringByEvaluatingJavaScriptFromString:normalScriptString withGlobalObject:JSContextGetGlobalObject(normalCtx) inScriptWorld:normalWorld];
- JSValueRef normalNodeJSValue = [mainFrame jsWrapperForNode:target inScriptWorld:normalWorld];
- ASSERT_TRUE(JSValueIsObject(normalCtx, normalNodeJSValue));
- JSObjectRef normalNodeJSObject = JSValueToObject(normalCtx, normalNodeJSValue, 0);
-
- JSRetainPtr<JSStringRef> isolatedPropertyJSString = JSStringCreateWithUTF8CString("isolatedProperty");
- // Test for successful retrieval of the first property in the isolated script world
- EXPECT_TRUE(JSValueIsBoolean(isolatedCtx, JSObjectGetProperty(isolatedCtx, isolatedNodeJSObject, isolatedPropertyJSString.get(), 0)));
- // Test for failed retrieval of the first property in the standard script world
- EXPECT_TRUE(JSValueIsUndefined(normalCtx, JSObjectGetProperty(normalCtx, normalNodeJSObject, isolatedPropertyJSString.get(), 0)));
-
- JSRetainPtr<JSStringRef> normalPropertyJSString = JSStringCreateWithUTF8CString("normalProperty");
- // Test for successful retrieval of the second property in the standard script world
- EXPECT_TRUE(JSValueIsBoolean(normalCtx, JSObjectGetProperty(normalCtx, normalNodeJSObject, normalPropertyJSString.get(), 0)));
- // Test for failed retrieval of the second property in the isolated script world
- EXPECT_TRUE(JSValueIsUndefined(isolatedCtx, JSObjectGetProperty(isolatedCtx, isolatedNodeJSObject, normalPropertyJSString.get(), 0)));
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html b/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html
deleted file mode 100644
index 033c79130..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<script>
-
-function loaded()
-{
- var request = new XMLHttpRequest();
- request.open('GET', 'http://www.iana.org/domains/example/', true);
- request.send(null);
-}
-
-</script>
-
-<body onload="loaded();">
-We will do some XHR'ing now!
-</body>
diff --git a/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm b/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm
deleted file mode 100644
index e2ecdeac4..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/MemoryCacheDisableWithinResourceLoadDelegate.mm
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebCache.h>
-#import <wtf/RetainPtr.h>
-
-@interface MemoryCacheDisableTestResourceLoadDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation MemoryCacheDisableTestResourceLoadDelegate
-
-- (id)webView:(WebView *)sender identifierForInitialRequest:(NSURLRequest *)request fromDataSource:(WebDataSource *)dataSource
-{
- [WebCache setDisabled:YES];
- [WebCache setDisabled:NO];
-
- return self;
-}
-
-- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
-{
- [WebCache setDisabled:YES];
- [WebCache setDisabled:NO];
-
- return request;
-}
-
-- (void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
-{
- [WebCache setDisabled:YES];
- [WebCache setDisabled:NO];
-
- didFinishLoad = YES;
-}
-
-- (void)webView:(WebView *)sender resource:(id)identifier didFailLoadingWithError:(NSError *)error fromDataSource:(WebDataSource *)dataSource
-{
- [WebCache setDisabled:YES];
- [WebCache setDisabled:NO];
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, MemoryCacheDisableWithinResourceLoadDelegate)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- RetainPtr<MemoryCacheDisableTestResourceLoadDelegate> resourceLoadDelegate = adoptNS([[MemoryCacheDisableTestResourceLoadDelegate alloc] init]);
- webView.get().resourceLoadDelegate = resourceLoadDelegate.get();
-
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"MemoryCacheDisableWithinResourceLoadDelegate" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- [pool drain];
- // If we finished without crashing, the test passed.
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.html b/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.html
deleted file mode 100644
index 7f4fd33b9..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<script>
-
-function loaded()
-{
- var request = new XMLHttpRequest();
- request.open('GET', 'http://www.iana.org/domains/example/', true);
- request.send(null);
-}
-
-</script>
-
-<body onload="loaded();">
-We will do some XHR'ing now!
-</body> \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm b/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm
deleted file mode 100644
index 212820e0a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/MemoryCachePruneWithinResourceLoadDelegate.mm
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <wtf/RetainPtr.h>
-
-@interface MemoryCachePruneTestResourceLoadDelegate : NSObject {
-@public
- NSWindow *_window;
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation MemoryCachePruneTestResourceLoadDelegate
-
-- (id)webView:(WebView *)sender identifierForInitialRequest:(NSURLRequest *)request fromDataSource:(WebDataSource *)dataSource
-{
- // We only care about an http request, which is our test XHR
- if ([[[request URL] scheme] isEqualToString:@"http"])
- return self;
-
- return nil;
-}
-
-- (NSURLRequest *)webView:(WebView *)sender resource:(id)identifier willSendRequest:(NSURLRequest *)request redirectResponse:(NSURLResponse *)redirectResponse fromDataSource:(WebDataSource *)dataSource
-{
- if (identifier == nil)
- return request;
-
- [_window close];
- return request;
-}
-
-- (void)webView:(WebView *)sender resource:(id)identifier didFinishLoadingFromDataSource:(WebDataSource *)dataSource
-{
- if (identifier == nil)
- return;
-
- didFinishLoad = true;
-}
-
-- (void)webView:(WebView *)sender resource:(id)identifier didFailLoadingWithError:(NSError *)error fromDataSource:(WebDataSource *)dataSource
-{
- if (identifier == nil)
- return;
-
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DISABLED_MemoryCachePruneWithinResourceLoadDelegate)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView1 = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<WebView> webView2 = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- NSWindow* window = [[NSWindow alloc] initWithContentRect:webView2.get().frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
- [window.contentView addSubview:webView2.get()];
-
- RetainPtr<MemoryCachePruneTestResourceLoadDelegate> resourceLoadDelegate = adoptNS([[MemoryCachePruneTestResourceLoadDelegate alloc] init]);
- resourceLoadDelegate.get()->_window = window;
- webView1.get().resourceLoadDelegate = resourceLoadDelegate.get();
-
- [[webView1.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"MemoryCachePruneWithinResourceLoadDelegate" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- [pool drain];
- // If we finished without crashing, the test passed.
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/OpenNewWindow.html b/Tools/TestWebKitAPI/Tests/mac/OpenNewWindow.html
deleted file mode 100644
index 975f6d98d..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/OpenNewWindow.html
+++ /dev/null
@@ -1,7 +0,0 @@
-<a href="#" onclick="openWindow()"></a>
-<script>
- function openWindow() {
- window.open("window-to-ignore.html", "newWindow");
- }
- document.getElementsByTagName("a")[0].click();
-</script>
diff --git a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html
deleted file mode 100644
index bded58089..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<script>
-document.addEventListener("visibilitychange", function(event) {
- // Send a signal to the test controller via alert.
- alert('visibilitychange');
-});
-</script>
diff --git a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm b/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm
deleted file mode 100644
index 9a614ab7a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/PageVisibilityStateWithWindowChanges.mm
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "JavaScriptTest.h"
-#import "Test.h"
-#import "WebKitAgnosticTest.h"
-#import <WebKit/WebView.h>
-#import <WebKit2/WKViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-static bool didGetPageSignalToContinue;
-
-// WebKit1 WebUIDelegate
-
-@interface PageVisibilityStateDelegate : NSObject
-@end
-
-@implementation PageVisibilityStateDelegate
-
-- (void)webView:(WebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WebFrame *)frame
-{
- didGetPageSignalToContinue = true;
-}
-
-@end
-
-// WebKit2 WKPageUIClient
-
-static void runJavaScriptAlert(WKPageRef page, WKStringRef alertText, WKFrameRef frame, const void* clientInfo)
-{
- didGetPageSignalToContinue = true;
-}
-
-// WebKitAgnosticTest
-
-namespace TestWebKitAPI {
-
-class PageVisibilityStateWithWindowChanges : public WebKitAgnosticTest {
-public:
- template <typename View> void runTest(View);
-
- // WebKitAgnosticTest
- virtual NSURL *url() const OVERRIDE { return [[NSBundle mainBundle] URLForResource:@"PageVisibilityStateWithWindowChanges" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]; }
- virtual void didLoadURL(WebView *webView) OVERRIDE { runTest(webView); }
- virtual void didLoadURL(WKView *wkView) OVERRIDE { runTest(wkView); }
-
- // Setup and teardown the UIDelegate which gets alert() signals from the page.
- virtual void initializeView(WebView *) OVERRIDE;
- virtual void initializeView(WKView *) OVERRIDE;
- virtual void teardownView(WebView *) OVERRIDE;
- virtual void teardownView(WKView *) OVERRIDE;
-};
-
-void PageVisibilityStateWithWindowChanges::initializeView(WebView *webView)
-{
- // Released in teardownView.
- webView.UIDelegate = [[PageVisibilityStateDelegate alloc] init];
-}
-
-void PageVisibilityStateWithWindowChanges::teardownView(WebView *webView)
-{
- id uiDelegate = webView.UIDelegate;
- webView.UIDelegate = nil;
- [uiDelegate release];
-}
-
-void PageVisibilityStateWithWindowChanges::initializeView(WKView *wkView)
-{
- WKPageUIClient uiClient;
- memset(&uiClient, 0, sizeof(uiClient));
- uiClient.version = 0;
- uiClient.clientInfo = 0;
- uiClient.runJavaScriptAlert = runJavaScriptAlert;
- WKPageSetPageUIClient(wkView.pageRef, &uiClient);
-}
-
-void PageVisibilityStateWithWindowChanges::teardownView(WKView *wkView)
-{
- // We do not need to teardown the WKPageUIClient.
-}
-
-template <typename View>
-void PageVisibilityStateWithWindowChanges::runTest(View view)
-{
- // This WebView does not have a window and superview. PageVisibility should be "hidden".
- EXPECT_NULL([view window]);
- EXPECT_NULL([view superview]);
- EXPECT_JS_EQ(view, "document.visibilityState", "hidden");
-
- // Add it to a non-visible window. PageVisibility should still be "hidden".
- RetainPtr<NSWindow> window = adoptNS([[NSWindow alloc] initWithContentRect:view.frame styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:NO]);
- [window.get().contentView addSubview:view];
- EXPECT_NOT_NULL([view window]);
- EXPECT_NOT_NULL([view superview]);
- EXPECT_FALSE([window.get() isVisible]);
- EXPECT_JS_EQ(view, "document.visibilityState", "hidden");
-
- // Make the window visible. PageVisibility should become "visible".
- didGetPageSignalToContinue = false;
- [window.get() makeKeyAndOrderFront:nil];
- EXPECT_TRUE([window.get() isVisible]);
- Util::run(&didGetPageSignalToContinue);
- EXPECT_JS_EQ(view, "document.visibilityState", "visible");
-
- // Minimize the window. PageVisibility should become "hidden".
- didGetPageSignalToContinue = false;
- [window.get() miniaturize:nil];
- Util::run(&didGetPageSignalToContinue);
- EXPECT_JS_EQ(view, "document.visibilityState", "hidden");
-
- // Deminimize the window. PageVisibility should become "visible".
- didGetPageSignalToContinue = false;
- [window.get() deminiaturize:nil];
- Util::run(&didGetPageSignalToContinue);
- EXPECT_JS_EQ(view, "document.visibilityState", "visible");
-
- // Remove the WebView from its superview. PageVisibility should become "hidden".
- didGetPageSignalToContinue = false;
- [view removeFromSuperview];
- EXPECT_NULL([view window]);
- EXPECT_NULL([view superview]);
- EXPECT_TRUE([window.get() isVisible]);
- Util::run(&didGetPageSignalToContinue);
- EXPECT_JS_EQ(view, "document.visibilityState", "hidden");
-}
-
-TEST_F(PageVisibilityStateWithWindowChanges, WebKit)
-{
- runWebKit1Test();
-}
-
-TEST_F(PageVisibilityStateWithWindowChanges, WebKit2)
-{
- runWebKit1Test();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm b/Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm
deleted file mode 100644
index cb72414f3..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/PublicSuffix.mm
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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"
-
-#if USE(PUBLIC_SUFFIX_LIST)
-
-#include "WTFStringUtilities.h"
-#include <WebCore/PublicSuffix.h>
-#include <wtf/MainThread.h>
-
-using namespace WebCore;
-
-namespace TestWebKitAPI {
-
-class PublicSuffix: public testing::Test {
-public:
- virtual void SetUp()
- {
- WTF::initializeMainThread();
- [WebView initialize];
- }
-};
-
-TEST_F(PublicSuffix, IsPublicSuffix)
-{
- EXPECT_TRUE(isPublicSuffix("com"));
- EXPECT_FALSE(isPublicSuffix("test.com"));
- EXPECT_FALSE(isPublicSuffix("com.com"));
- EXPECT_TRUE(isPublicSuffix("net"));
- EXPECT_TRUE(isPublicSuffix("org"));
- EXPECT_TRUE(isPublicSuffix("co.uk"));
- EXPECT_FALSE(isPublicSuffix("bl.uk"));
- EXPECT_FALSE(isPublicSuffix("test.co.uk"));
- EXPECT_TRUE(isPublicSuffix("xn--zf0ao64a.tw"));
-}
-
-TEST_F(PublicSuffix, TopPrivatelyControlledDomain)
-{
- EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("test.com"));
- EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("com.test.com"));
- EXPECT_EQ(String("test.com"), topPrivatelyControlledDomain("subdomain.test.com"));
- EXPECT_EQ(String("com.com"), topPrivatelyControlledDomain("www.com.com"));
- EXPECT_EQ(String("test.co.uk"), topPrivatelyControlledDomain("test.co.uk"));
- EXPECT_EQ(String("test.co.uk"), topPrivatelyControlledDomain("subdomain.test.co.uk"));
- EXPECT_EQ(String("bl.uk"), topPrivatelyControlledDomain("bl.uk"));
- EXPECT_EQ(String("bl.uk"), topPrivatelyControlledDomain("subdomain.bl.uk"));
- EXPECT_EQ(String("test.xn--zf0ao64a.tw"), topPrivatelyControlledDomain("test.xn--zf0ao64a.tw"));
- EXPECT_EQ(String("test.xn--zf0ao64a.tw"), topPrivatelyControlledDomain("www.test.xn--zf0ao64a.tw"));
- EXPECT_EQ(String("127.0.0.1"), topPrivatelyControlledDomain("127.0.0.1"));
- EXPECT_EQ(String(), topPrivatelyControlledDomain("1"));
- EXPECT_EQ(String(), topPrivatelyControlledDomain("com"));
-}
-
-}
-
-#endif
diff --git a/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm b/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm
deleted file mode 100644
index bc3a11db3..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/RenderedImageFromDOMRange.mm
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebDocumentPrivate.h>
-#import <WebKit/DOMPrivate.h>
-#import <wtf/RetainPtr.h>
-
-@interface RenderedImageFromDOMRangeFrameLoadDelegate : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation RenderedImageFromDOMRangeFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, RenderedImageFromDOMRange)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<RenderedImageFromDOMRangeFrameLoadDelegate> frameLoadDelegate = adoptNS([RenderedImageFromDOMRangeFrameLoadDelegate new]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- [webView.get().mainFrame loadHTMLString:@"<div style=\"width: 100px;\">Lorem <span id=\"target\">ipsum dolor</span> sit amet</div>" baseURL:[NSURL URLWithString:@"about:blank"]];
-
- Util::run(&didFinishLoad);
-
- DOMDocument *document = webView.get().mainFrameDocument;
- DOMRange *range = [document createRange];
- DOMNode *target = [document getElementById:@"target"];
- [range selectNode:target];
- NSImage *actualImage = [range renderedImageForcingBlackText:YES];
-
- [webView.get() setSelectedDOMRange:range affinity:NSSelectionAffinityDownstream];
- id <WebDocumentView> documentView = webView.get().mainFrame.frameView.documentView;
- NSImage *expectedImage = [(id <WebDocumentSelection>)documentView selectionImageForcingBlackText:YES];
- EXPECT_TRUE([actualImage.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
-
- [target.parentElement.style setProperty:@"-webkit-user-select" value:@"none" priority:nil];
- NSImage *actualImageWithUserSelectNone = [range renderedImageForcingBlackText:YES];
- EXPECT_TRUE([actualImageWithUserSelectNone.TIFFRepresentation isEqual:expectedImage.TIFFRepresentation]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm b/Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm
deleted file mode 100644
index 003755235..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/SetAndUpdateCacheModel.mm
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 <wtf/RetainPtr.h>
-
-#import <WebKit/WebView.h>
-#import <WebKit/WebPreferences.h>
-
-@interface WebView (WebViewOtherInternal)
-+ (WebCacheModel)_cacheModel;
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, SetAndUpdateCacheModelInitialModel)
-{
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- EXPECT_EQ((int)WebCacheModelDocumentBrowser, (int)[WebView _cacheModel]);
-}
-
-TEST(WebKit1, SetAndUpdateCacheModelStandardPreferenceChange)
-{
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
-
- WebPreferences *standardPreferences = [WebPreferences standardPreferences];
- EXPECT_EQ((int)WebCacheModelDocumentBrowser, (int)[WebView _cacheModel]);
-
- [standardPreferences setCacheModel:WebCacheModelPrimaryWebBrowser];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
- [standardPreferences setCacheModel:WebCacheModelDocumentViewer];
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
-}
-
-TEST(WebKit1, SetAndUpdateCacheModelPreferencesChangeMix)
-{
- // On change, the cache model always take the highest value of any preference bound to a WebView.
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
-
- WebPreferences *standardPreferences = [WebPreferences standardPreferences];
- RetainPtr<WebPreferences> customPreferences = adoptNS([[WebPreferences alloc] initWithIdentifier:@"SetAndUpdateCacheModelPreferencesChangeMix"]);
-
- // 1) The customPreferences is not set on a view.
- EXPECT_EQ((int)WebCacheModelDocumentBrowser, (int)[WebView _cacheModel]);
-
- [standardPreferences setCacheModel:WebCacheModelPrimaryWebBrowser];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
- [standardPreferences setCacheModel:WebCacheModelDocumentViewer];
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
- [customPreferences.get() setCacheModel:WebCacheModelPrimaryWebBrowser];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
-
- // 2) The cache model should follow the highest value of cache model between the two preferences.
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- [webView.get() setPreferences:customPreferences.get()];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
- [customPreferences.get() setCacheModel:WebCacheModelDocumentBrowser];
- EXPECT_EQ((int)WebCacheModelDocumentBrowser, (int)[WebView _cacheModel]);
-
- [standardPreferences setCacheModel:WebCacheModelPrimaryWebBrowser];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
- [customPreferences.get() setCacheModel:WebCacheModelDocumentViewer];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
- // 3) Resetting the view should fall back to standardPreferences.
- [standardPreferences setCacheModel:WebCacheModelDocumentViewer];
- [customPreferences.get() setCacheModel:WebCacheModelPrimaryWebBrowser];
- EXPECT_EQ((int)WebCacheModelPrimaryWebBrowser, (int)[WebView _cacheModel]);
-
- webView.clear();
- EXPECT_EQ((int)WebCacheModelDocumentViewer, (int)[WebView _cacheModel]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.html b/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.html
deleted file mode 100644
index ad3714bb0..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<!doctype html>
-<html>
- <body>
- <p>This is a document to load so that the ObjC [document setDocumentURI:]
- API can be tested.</p>
- <a href="relativeURL.html" id="relative"></a>
- </body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm b/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm
deleted file mode 100644
index 44ecc3e9b..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/SetDocumentURI.mm
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2012 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:
- * 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#import <WebKit/DOM.h>
-#import <WebKit/WebViewPrivate.h>
-
-@interface SetDocumentURITest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation SetDocumentURITest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, SetDocumentURITestFile)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<SetDocumentURITest> testController = adoptNS([SetDocumentURITest new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"SetDocumentURI" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
- DOMDocument *document = webView.get().mainFrameDocument;
-
- [document setDocumentURI:@"file:///test"];
- // documentURI set correctly.
- EXPECT_WK_STREQ(@"file:///test", [document documentURI]);
- // baseURI follows along.
- EXPECT_WK_STREQ(@"file:///test", [document baseURI]);
-}
-
-TEST(WebKit1, SetDocumentURITestURL)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<SetDocumentURITest> testController = adoptNS([SetDocumentURITest new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"SetDocumentURI" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
- DOMDocument *document = webView.get().mainFrameDocument;
-
- [document setDocumentURI:@"http://example.com/"];
- // documentURI set correctly.
- EXPECT_WK_STREQ(@"http://example.com/", [document documentURI]);
- // baseURI follows along.
- EXPECT_WK_STREQ(@"http://example.com/", [document baseURI]);
- // Relative links too.
- NSString *result = [webView.get() stringByEvaluatingJavaScriptFromString:@"document.getElementById('relative').href"];
- EXPECT_WK_STREQ(@"http://example.com/relativeURL.html", result);
-}
-
-TEST(WebKit1, SetDocumentURITestString)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<SetDocumentURITest> testController = adoptNS([SetDocumentURITest new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"SetDocumentURI" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
- DOMDocument *document = webView.get().mainFrameDocument;
-
- [document setDocumentURI:@"A non-URL string."];
- // documentURI accepts random strings.
- EXPECT_WK_STREQ(@"A non-URL string.", [document documentURI]);
- // baseURI is empty for non-URL strings.
- EXPECT_WK_STREQ(@"", [document baseURI]);
-}
-
-TEST(WebKit1, SetDocumentURITestNull)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<SetDocumentURITest> testController = adoptNS([SetDocumentURITest new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"SetDocumentURI" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
- Util::run(&didFinishLoad);
- didFinishLoad = false;
- DOMDocument *document = webView.get().mainFrameDocument;
-
- [document setDocumentURI:nil];
- // documenturi is empty.
- EXPECT_WK_STREQ(@"", [document documentURI]);
- // baseURI is null as well.
- EXPECT_WK_STREQ(@"", [document baseURI]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm b/Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm
deleted file mode 100644
index 9d443ad04..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/SimplifyMarkup.mm
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "PlatformUtilities.h"
-#include "PlatformWebView.h"
-#include <wtf/RetainPtr.h>
-
-#import <WebKit/DOM.h>
-#import <WebKit/WebViewPrivate.h>
-
-@interface SimplifyMarkupTest : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation SimplifyMarkupTest
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, SimplifyMarkupTest)
-{
- RetainPtr<WebView> webView1 = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<WebView> webView2 = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<SimplifyMarkupTest> testController = adoptNS([SimplifyMarkupTest new]);
-
- webView1.get().frameLoadDelegate = testController.get();
- [[webView1.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"verboseMarkup" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- webView2.get().frameLoadDelegate = testController.get();
- [[webView2.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"verboseMarkup" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-
- DOMDocument *document1 = webView1.get().mainFrameDocument;
- NSString* markupBefore = [[document1 body] innerHTML];
- DOMDocument *document2 = webView2.get().mainFrameDocument;
-
- // If start is after end, nothing is done
- DOMNode *start = [document1 getElementById:@"test2"];
- DOMNode *end = [document1 getElementById:@"test1"];
-
- [webView1.get() _simplifyMarkup:[document1 body] endNode:end];
- NSString* markupAfter = [[document1 body] innerHTML];
-
- EXPECT_WK_STREQ(markupBefore, markupAfter);
- EXPECT_EQ([markupBefore length], [markupAfter length]);
-
- // If the two nodes are not in the same webView, nothing is done.
- start = [document1 getElementById:@"test1"];
- end = [document2 getElementById:@"test2"];
- [webView1.get() _simplifyMarkup:start endNode:end];
- markupAfter = [[document1 body] innerHTML];
-
- EXPECT_WK_STREQ(markupBefore, markupAfter);
- EXPECT_EQ([markupBefore length], [markupAfter length]);
-
- // If the two nodes are not in the same document, nothing is done.
- DOMHTMLFrameElement* frame = (DOMHTMLFrameElement *)[document1 getElementById:@"test3"];
- end = [[frame contentDocument] firstChild];
-
- [webView1.get() _simplifyMarkup:start endNode:end];
- markupAfter = [[document1 body] innerHTML];
-
- EXPECT_WK_STREQ(markupBefore, markupAfter);
- EXPECT_EQ([markupBefore length], [markupAfter length]);
-
- // If the nodes are in the same webView, same document and in the right order,
- // we should have a simplified markup.
- [webView1.get() _simplifyMarkup:[document1 body] endNode:nil];
- markupAfter = [[document1 body] innerHTML];
- // We only verify that the markup has changed and that it is less verbose
- // then the original version.
- // The accuracy of the operation is tested by the DRT tests already.
- EXPECT_GT([markupBefore length], [markupAfter length]);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.html b/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.html
deleted file mode 100644
index 92af0012c..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.html
+++ /dev/null
@@ -1 +0,0 @@
-<script src="data:text/javascript,document.write('SUCCESS')"></script>
diff --git a/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.mm b/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.mm
deleted file mode 100644
index 8eb269df0..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/StopLoadingFromDidReceiveResponse.mm
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebCache.h>
-#import <wtf/RetainPtr.h>
-
-@interface StopLoadingFromDidReceiveResponse : NSObject {
-}
-@end
-
-static bool didFinishLoad;
-
-@implementation StopLoadingFromDidReceiveResponse
-
-- (void)webView:(WebView *)sender resource:(id)identifier didReceiveResponse:(NSURLResponse *)response fromDataSource:(WebDataSource *)dataSource
-{
- static BOOL mainResourceReceived;
- if (!mainResourceReceived) {
- mainResourceReceived = YES;
- return;
- }
-
- [sender stopLoading:identifier];
-
- didFinishLoad = YES;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, StopLoadingFromDidReceiveResponse)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- RetainPtr<StopLoadingFromDidReceiveResponse> resourceLoadDelegate = adoptNS([[StopLoadingFromDidReceiveResponse alloc] init]);
- webView.get().resourceLoadDelegate = resourceLoadDelegate.get();
-
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"StopLoadingFromDidReceiveResponse" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
-
- [pool drain];
- // If we finished without crashing, the test passed.
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm b/Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm
deleted file mode 100644
index 260a5a53e..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/StringByEvaluatingJavaScriptFromString.mm
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2007, 2011 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, StringByEvaluatingJavaScriptFromString)
-{
- // maps expected result <= JavaScript expression
- RetainPtr<NSDictionary> expressions = adoptNS([[NSDictionary alloc] initWithObjectsAndKeys:
- @"0", @"0",
- @"0", @"'0'",
- @"", @"",
- @"", @"''",
- @"", @"new String()",
- @"", @"new String('0')",
- @"", @"throw 1",
- @"", @"{ }",
- @"", @"[ ]",
- @"", @"//",
- @"", @"a.b.c",
- @"", @"(function() { throw 'error'; })()",
- @"", @"null",
- @"", @"undefined",
- @"true", @"true",
- @"false", @"false",
- @"", @"alert('Should not be result')",
- nil
- ]);
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSZeroRect frameName:@"" groupName:@""]);
-
- // Test a nil string
- NSString *result = [webView.get() stringByEvaluatingJavaScriptFromString:nil];
- EXPECT_WK_STREQ(@"", result);
-
- for (id expression in expressions.get()) {
- NSString *expectedResult = [expressions.get() objectForKey:expression];
- NSString *result = [webView.get() stringByEvaluatingJavaScriptFromString:expression];
- EXPECT_WK_STREQ(expectedResult, result);
- }
-
- [webView.get() close];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/SubresourceErrorCrash.mm b/Tools/TestWebKitAPI/Tests/mac/SubresourceErrorCrash.mm
deleted file mode 100644
index 870a4896a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/SubresourceErrorCrash.mm
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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"
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, SubresourceErrorCrash)
-{
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:@"" groupName:@""];
- [webView.mainFrame loadHTMLString:@"<link rel=stylesheet href='x-error:error'>" baseURL:nil];
- [webView release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/TypingStyleCrash.mm b/Tools/TestWebKitAPI/Tests/mac/TypingStyleCrash.mm
deleted file mode 100644
index a23623bb0..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/TypingStyleCrash.mm
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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"
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, TypingStyleCrash)
-{
- WebView *webView = [[WebView alloc] init];
- [webView typingStyle];
- [webView release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteURL.mm b/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteURL.mm
deleted file mode 100644
index d4bc83bf9..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteURL.mm
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import "WTFStringUtilities.h"
-
-#import <WebKit/WebViewPrivate.h>
-#import <WebKit/DOM.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, WebViewCanPasteURL)
-{
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil];
- [webView setEditable:YES];
-
- [[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSURLPboardType] owner:nil];
- [[NSURL URLWithString:@"http://www.webkit.org/"] writeToPasteboard:[NSPasteboard generalPasteboard]];
- [webView paste:nil];
-
- DOMDocument *document = [[webView mainFrame] DOMDocument];
- DOMElement *documentElement = [document documentElement];
- DOMHTMLAnchorElement *anchor = (DOMHTMLAnchorElement *)[documentElement querySelector:@"a"];
- NSString *text = [anchor href];
-
- EXPECT_EQ(String("http://www.webkit.org/"), String(text));
-
- [webView release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteZeroPng.mm b/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteZeroPng.mm
deleted file mode 100644
index 5049fb3af..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WebViewCanPasteZeroPng.mm
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import "WTFStringUtilities.h"
-
-#import <WebKit/WebViewPrivate.h>
-#import <WebKit/DOM.h>
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, WebViewCanPasteZeroPng)
-{
- WebView *webView = [[WebView alloc] initWithFrame:NSZeroRect frameName:nil groupName:nil];
- [webView setEditable:YES];
-
- //pasting a 0x0 image as pdf board type. Referring to <rdar://problem/11141920>
- [[NSPasteboard generalPasteboard] declareTypes:[NSArray arrayWithObject:NSPDFPboardType] owner:nil];
- [[[NSBundle mainBundle] URLForResource:@"0" withExtension:@"png" subdirectory:@"TestWebKitAPI.resources"] writeToPasteboard:[NSPasteboard generalPasteboard]];
- [webView paste:nil];
-
- [webView release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm b/Tools/TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm
deleted file mode 100644
index 39504dda8..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WebViewDidCreateJavaScriptContext.mm
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <JavaScriptCore/JSExport.h>
-#import <JavaScriptCore/JSContext.h>
-#import <WebKit/WebFrameLoadDelegatePrivate.h>
-#import <wtf/RetainPtr.h>
-
-#if JSC_OBJC_API_ENABLED
-
-@class MyConsole;
-
-static bool didFinishLoad = false;
-static bool didCompleteTestSuccessfully = false;
-static bool didCallWindowCallback = false;
-static bool didFindMyCustomProperty = false;
-static bool didInsertMyCustomProperty = true;
-
-@protocol MyConsole<JSExport>
-- (void)log:(NSString *)s;
-- (void)printHelloWorld;
-- (int)add:(int)a to:(int)b;
-@end
-
-@interface MyConsole : NSObject<MyConsole>
-@end
-
-@implementation MyConsole
-- (void)log:(NSString *)s
-{
- NSLog(@"%@", s);
-}
-
-- (void)printHelloWorld
-{
- NSLog(@"Hello, World!");
-}
-
-- (int)add:(int)a to:(int)b
-{
- return a + b;
-}
-@end
-
-@interface DidCreateJavaScriptContextFrameLoadDelegate : NSObject
-@end
-
-@implementation DidCreateJavaScriptContextFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-- (void)webView:(WebView *)webView didCreateJavaScriptContext:(JSContext *)context forFrame:(WebFrame *)frame
-{
- MyConsole *myConsole = [[MyConsole alloc] init];
- context[@"myConsole"] = myConsole;
- context.exceptionHandler = nil;
- [myConsole release];
-
- context[@"windowCallback"] = ^(JSValue *thisObject){
- didCallWindowCallback = true;
- };
-
- context[@"didCompleteTestSuccessfully"] = ^{
- didCompleteTestSuccessfully = true;
- };
-
- context[@"callMeBack"] = ^(JSValue *functionValue) {
- [functionValue callWithArguments:[NSArray array]];
- };
-
- context[@"checkForMyCustomProperty"] = ^(JSValue *element) {
- if ([element hasProperty:@"myCustomProperty"] && [[element valueForProperty:@"myCustomProperty"] toInt32] == 42)
- didFindMyCustomProperty = true;
- else
- NSLog(@"ERROR: Did not find myCustomProperty.");
- };
-
- context[@"insertMyCustomProperty"] = ^(JSValue *element) {
- JSValue *fortyTwo = [JSValue valueWithInt32:42 inContext:[JSContext currentContext]];
- [element setValue:fortyTwo forProperty:@"myCustomProperty"];
- didInsertMyCustomProperty = true;
- };
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DidCreateJavaScriptContextSanity1)
-{
- didFinishLoad = false;
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyString =
- @"<body> \
- <script> \
- myConsole.printHelloWorld(); \
- myConsole.log(\"Loaded custom stuff.\"); \
- myConsole.log(myConsole.addTo(40, 2)); \
- didCompleteTestSuccessfully(); \
- </script> \
- </body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyString baseURL:aboutBlankURL];
- Util::run(&didCompleteTestSuccessfully);
- }
-}
-
-TEST(WebKit1, DidCreateJavaScriptContextSanity2)
-{
- didCallWindowCallback = false;
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyString =
- @"<body> \
- <script> \
- setTimeout(windowCallback, 100); \
- </script> \
- </body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyString baseURL:aboutBlankURL];
- Util::run(&didCallWindowCallback);
- }
-}
-
-TEST(WebKit1, DidCreateJavaScriptContextCallJSFunctionFromObjCCallbackTest)
-{
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyString =
- @"<body> \
- <script> \
- callMeBack(function() { \
- didCompleteTestSuccessfully(); \
- }); \
- </script> \
- </body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyString baseURL:aboutBlankURL];
- Util::run(&didCompleteTestSuccessfully);
- }
-}
-
-TEST(WebKit1, DidCreateJavaScriptContextAddCustomPropertiesFromJSTest)
-{
- didFindMyCustomProperty = false;
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyString =
- @"<body> \
- <div id=\"test-div\"></div> \
- <script> \
- var testDiv = document.getElementById(\"test-div\"); \
- testDiv.myCustomProperty = 42; \
- checkForMyCustomProperty(testDiv); \
- </script> \
- </body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyString baseURL:aboutBlankURL];
- Util::run(&didFindMyCustomProperty);
- }
-}
-
-TEST(WebKit1, DidCreateJavaScriptContextAddCustomPropertiesFromObjCTest)
-{
- didFindMyCustomProperty = false;
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyString =
- @"<body> \
- <div id=\"test-div\"></div> \
- <script> \
- var testDiv = document.getElementById(\"test-div\"); \
- insertMyCustomProperty(testDiv); \
- if (testDiv.myCustomProperty === 42) { \
- checkForMyCustomProperty(testDiv); \
- } \
- </script> \
- </body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyString baseURL:aboutBlankURL];
- Util::run(&didFindMyCustomProperty);
- }
-}
-
-TEST(WebKit1, DidCreateJavaScriptContextBackForwardCacheTest)
-{
- didInsertMyCustomProperty = false;
- didFindMyCustomProperty = false;
- didCompleteTestSuccessfully = false;
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidCreateJavaScriptContextFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidCreateJavaScriptContextFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSURL *url1 = [[NSBundle mainBundle] URLForResource:@"JSContextBackForwardCache1"
- withExtension:@"html"
- subdirectory:@"TestWebKitAPI.resources"];
- [mainFrame loadRequest:[NSURLRequest requestWithURL:url1]];
- Util::run(&didInsertMyCustomProperty);
-
- NSURL *url2 = [[NSBundle mainBundle] URLForResource:@"JSContextBackForwardCache2"
- withExtension:@"html"
- subdirectory:@"TestWebKitAPI.resources"];
- [mainFrame loadRequest:[NSURLRequest requestWithURL:url2]];
- Util::run(&didCompleteTestSuccessfully);
-
- didCompleteTestSuccessfully = false;
- [[mainFrame javaScriptContext] evaluateScript:
- @"var testDiv = document.getElementById(\"test-div\"); \
- if (!testDiv.myCustomProperty) { \
- didCompleteTestSuccessfully(); \
- }"];
- EXPECT_TRUE(didCompleteTestSuccessfully);
-
- if ([webView.get() goBack]) {
- [[mainFrame javaScriptContext] evaluateScript:
- @"var testDiv = document.getElementById(\"test-div\"); \
- checkForMyCustomProperty(testDiv);"];
- EXPECT_TRUE(didFindMyCustomProperty);
- } else
- EXPECT_TRUE(false);
- }
-}
-
-} // namespace TestWebKitAPI
-
-#endif // ENABLE(JSC_OBJC_API)
diff --git a/Tools/TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm b/Tools/TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm
deleted file mode 100644
index fbe8af52a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WebViewDidRemoveFrameFromHierarchy.mm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import <WebKit/WebFrameLoadDelegatePrivate.h>
-#import <wtf/RetainPtr.h>
-
-@interface DidRemoveFrameFromHierarchyFrameLoadDelegate : NSObject
-@end
-
-static bool didFinishLoad;
-static bool didRemoveFrame;
-
-@implementation DidRemoveFrameFromHierarchyFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-- (void)webView:(WebView *)sender didRemoveFrameFromHierarchy:(WebFrame *)frame
-{
- didRemoveFrame = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, DidRemoveFrameFromHierarchy)
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<DidRemoveFrameFromHierarchyFrameLoadDelegate> frameLoadDelegate = adoptNS([[DidRemoveFrameFromHierarchyFrameLoadDelegate alloc] init]);
-
- webView.get().frameLoadDelegate = frameLoadDelegate.get();
- WebFrame *mainFrame = webView.get().mainFrame;
-
- NSString *bodyWithIFrameString = @"<body><iframe id='iframe'></iframe></body>";
- NSURL *aboutBlankURL = [NSURL URLWithString:@"about:blank"];
-
- [mainFrame loadHTMLString:bodyWithIFrameString baseURL:aboutBlankURL];
- Util::run(&didFinishLoad);
-
- EXPECT_FALSE(didRemoveFrame);
- [webView.get() stringByEvaluatingJavaScriptFromString:@"document.body.removeChild(document.getElementById('iframe'))"];
- EXPECT_TRUE(didRemoveFrame);
-
- didFinishLoad = false;
- didRemoveFrame = false;
-
- [mainFrame loadHTMLString:bodyWithIFrameString baseURL:aboutBlankURL];
- Util::run(&didFinishLoad);
-
- // The delegate method is not called when the frame is removed due to navigation in an ancestor frame.
- EXPECT_FALSE(didRemoveFrame);
- [mainFrame loadHTMLString:@"<body></body>" baseURL:aboutBlankURL];
- EXPECT_FALSE(didRemoveFrame);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm b/Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm
deleted file mode 100644
index 1654f9ca8..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WillSendSubmitEvent.mm
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "PlatformUtilities.h"
-#import "PlatformWebView.h"
-#import "Test.h"
-
-#import <WebKit/WebFormDelegate.h>
-#import <WebKit/WebViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-static bool didFinishLoad;
-
-@interface FormDelegate : WebFormDelegate
-@end
-
-@implementation FormDelegate
-
-- (void)willSendSubmitEventToForm:(DOMHTMLFormElement *)element inFrame:(WebFrame *)sourceFrame withValues:(NSDictionary *)values
-{
- EXPECT_NOT_NULL(element);
- EXPECT_NOT_NULL(sourceFrame);
-
- EXPECT_WK_STREQ([values objectForKey:@"textField"], @"text field");
- EXPECT_WK_STREQ([values objectForKey:@"passwordField"], @"password field");
-
- // <input type="hidden"> fields are not sent.
- EXPECT_NULL([values objectForKey:@"hiddenField"]);
-
- didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-TEST(WebKit1, WillSendSubmitEvent)
-{
- @autoreleasepool {
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
-
- RetainPtr<FormDelegate> formDelegate = [[FormDelegate alloc] init];
- [webView _setFormDelegate:formDelegate.get()];
-
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"auto-submitting-form" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- Util::run(&didFinishLoad);
- }
-}
-
-}
diff --git a/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.html b/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.html
deleted file mode 100644
index db064fb05..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<!DOCTYPE html>
-<html>
-<body>
- We want to make sure the page sends its onload event even if it has media in a windowless WebView.
- <audio src="invalid.mp3"></audio>
- <script>
- var didTriggerLoad = false;
- window.addEventListener('load', function(event) {
- didTriggerLoad = true;
- }, false);
- </script>
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm b/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm
deleted file mode 100644
index 9225783ab..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/WindowlessWebViewWithMedia.mm
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "JavaScriptTest.h"
-#include "PlatformUtilities.h"
-#include <wtf/RetainPtr.h>
-
-
-static bool didFinishLoad;
-
-@interface WindowlessWebViewWithMediaFrameLoadDelegate : NSObject
-@end
-
-@implementation WindowlessWebViewWithMediaFrameLoadDelegate
-
-- (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame
-{
- didFinishLoad = true;
-}
-
-@end
-
-
-namespace TestWebKitAPI {
-
-static void spinLoop(NSTimeInterval timeout, BOOL (^block)())
-{
- if (timeout <= 0)
- return;
-
- NSTimeInterval end = [[NSDate date] timeIntervalSinceReferenceDate] + timeout;
- NSDate *endDate = [NSDate dateWithTimeIntervalSinceReferenceDate:end];
-
- while (!block()) {
- [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate];
- if ([[NSDate date] timeIntervalSinceReferenceDate] > end)
- break;
- }
-}
-
-TEST(WebKit1, WindowlessWebViewWithMedia)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:NSMakeRect(0, 0, 120, 200) frameName:nil groupName:nil]);
- RetainPtr<WindowlessWebViewWithMediaFrameLoadDelegate> testController = adoptNS([WindowlessWebViewWithMediaFrameLoadDelegate new]);
- webView.get().frameLoadDelegate = testController.get();
- [[webView.get() mainFrame] loadRequest:[NSURLRequest requestWithURL:[[NSBundle mainBundle] URLForResource:@"WindowlessWebViewWithMedia" withExtension:@"html" subdirectory:@"TestWebKitAPI.resources"]]];
-
- EXPECT_EQ(nil, [webView.get() window]);
-
- Util::run(&didFinishLoad);
-
- spinLoop(0.25, ^{
- return [[webView.get() stringByEvaluatingJavaScriptFromString:@"window.didTriggerLoad"] isEqualToString:@"true"];
- });
-
- EXPECT_JS_EQ(webView.get(), "window.didTriggerLoad", "true");
-
- [pool drain];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/Tests/mac/acceptsFirstMouse.html b/Tools/TestWebKitAPI/Tests/mac/acceptsFirstMouse.html
deleted file mode 100644
index 3de413a5a..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/acceptsFirstMouse.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<html style="height: 200%;">
-<head>
- <style>
- img.selectable {
- width: 100px;
- height: 100px;
- display: block;
- background-color: gray;
- }
- </style>
-</head>
-<body style="margin: 0;">
- <img class="selectable">
- <img class="selectable" id="target">
- <img class="selectable">
- <script>
- var target = document.getElementById("target");
- getSelection().setBaseAndExtent(target, 0, target, 1);
- scrollBy(0, 100);
- </script>
-</body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/attributedStringCustomFont.html b/Tools/TestWebKitAPI/Tests/mac/attributedStringCustomFont.html
deleted file mode 100644
index 1e6b90a82..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/attributedStringCustomFont.html
+++ /dev/null
@@ -1,15 +0,0 @@
-<html>
- <head>
- <style>
- @font-face {
- font-family: customFont;
- src: url(Ahem.ttf);
- }
- </style>
- </head>
- <body contenteditable style="font-family: customFont; font-size: 48px;">Lorem Ipsum
- <script>
- document.body.focus();
- </script>
- </body>
-</html>
diff --git a/Tools/TestWebKitAPI/Tests/mac/devicePixelRatio.html b/Tools/TestWebKitAPI/Tests/mac/devicePixelRatio.html
deleted file mode 100644
index f6acf8678..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/devicePixelRatio.html
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE html>
-<style>
- #detector { width: 5px; }
- @media (-webkit-device-pixel-ratio:1) { #detector { width: 10px; } }
- @media (-webkit-device-pixel-ratio:3) { #detector { width: 30px; } }
- @media (-webkit-device-pixel-ratio:4) { #detector { width: 40px; } }
-</style>
-<script>
- function devicePixelRatioFromStyle() {
- var width = getComputedStyle(document.getElementById("detector")).width;
- switch (width) {
- case "10px":
- return 1;
- case "30px":
- return 3;
- case "40px":
- return 4;
- default:
- return "unknown width: " + width;
- }
- }
-</script>
-<div id="detector"></div>
diff --git a/Tools/TestWebKitAPI/Tests/mac/verboseMarkup.html b/Tools/TestWebKitAPI/Tests/mac/verboseMarkup.html
deleted file mode 100644
index c8a24487e..000000000
--- a/Tools/TestWebKitAPI/Tests/mac/verboseMarkup.html
+++ /dev/null
@@ -1,19 +0,0 @@
-<html>
- <body contenteditable="true">
- <div>Hello</div>
- <div id="test1"><b><i>Hello</i></b></div>
- <div><b><i><span style="font-weight: normal"><b><i>Hello</i></b></span></i></b></div>
- <div><div><div>Hello</div></div></div>
- <div><b><div><i>Hello</i></div></b></div>
- <div><div style="text-align: center;"><b>Hello</b></div></div>
- <div id="test2"><b><i><span style="font-weight: normal"><b><i>hello</i></b></span></i></b></div><div><b><i><span style="font-weight: normal"><b><i>world</i></b></span></i></b></div>
- <div><b><i><span style="font-weight: normal;"><b><i>hello1</i></b><b><i> hello2</i></b></span></i></b></div>
- <div><i style="margin: 10px;"><b><i style="margin: 10px;">hello</i></b></i></div>
- <div><b><i><span style="font-weight: normal"><b><i>Hello <!-- comment -->world</i></b></span></i></b></div>
- <div><b><i><span style="font-weight: normal">plain text<b><i>bold italic text</i></b></span></i></b></div>
- <iframe id="test3" src="data:text/html,
- <div>This is another document.</div>
- ">
- </iframe>
- </body>
-</html>
diff --git a/Tools/TestWebKitAPI/TestsController.cpp b/Tools/TestWebKitAPI/TestsController.cpp
index 29dcc714e..913305d7b 100644
--- a/Tools/TestWebKitAPI/TestsController.cpp
+++ b/Tools/TestWebKitAPI/TestsController.cpp
@@ -30,9 +30,33 @@
namespace TestWebKitAPI {
-TestsController& TestsController::shared()
+class Printer : public ::testing::EmptyTestEventListener {
+ virtual void OnTestPartResult(const ::testing::TestPartResult& test_part_result)
+ {
+ if (!test_part_result.failed())
+ return;
+
+ std::stringstream stream;
+ stream << "\n" << test_part_result.file_name() << ":" << test_part_result.line_number() << "\n" << test_part_result.summary() << "\n\n";
+ failures += stream.str();
+ }
+
+ virtual void OnTestEnd(const ::testing::TestInfo& test_info)
+ {
+ if (test_info.result()->Passed())
+ std::cout << "**PASS** " << test_info.test_case_name() << "." << test_info.name() << "\n";
+ else
+ std::cout << "**FAIL** " << test_info.test_case_name() << "." << test_info.name() << "\n" << failures;
+
+ failures = std::string();
+ }
+
+ std::string failures;
+};
+
+TestsController& TestsController::singleton()
{
- static TestsController& shared = *new TestsController;
+ static NeverDestroyed<TestsController> shared;
return shared;
}
@@ -48,6 +72,11 @@ TestsController::TestsController()
bool TestsController::run(int argc, char** argv)
{
::testing::InitGoogleTest(&argc, argv);
+
+ ::testing::TestEventListeners& listeners = ::testing::UnitTest::GetInstance()->listeners();
+ delete listeners.Release(listeners.default_result_printer());
+ listeners.Append(new Printer);
+
return !RUN_ALL_TESTS();
}
diff --git a/Tools/TestWebKitAPI/TestsController.h b/Tools/TestWebKitAPI/TestsController.h
index c73e3ac4d..ea8496853 100644
--- a/Tools/TestWebKitAPI/TestsController.h
+++ b/Tools/TestWebKitAPI/TestsController.h
@@ -26,17 +26,21 @@
#ifndef TestsController_h
#define TestsController_h
+#include <wtf/NeverDestroyed.h>
+
namespace TestWebKitAPI {
class TestsController {
public:
- static TestsController& shared();
+ static TestsController& singleton();
bool run(int argc, char** argv);
private:
TestsController();
~TestsController();
+
+ friend class WTF::NeverDestroyed<TestsController>;
};
} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h b/Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h
new file mode 100644
index 000000000..782da85d4
--- /dev/null
+++ b/Tools/TestWebKitAPI/WKWebViewConfigurationExtras.h
@@ -0,0 +1,34 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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/WKWebViewConfiguration.h>
+
+#if WK_API_ENABLED
+
+@interface WKWebViewConfiguration (TestWebKitAPIExtras)
++ (instancetype)testwebkitapi_configurationWithTestPlugInClassName:(NSString *)className;
+@end
+
+#endif // WK_API_ENABLED
diff --git a/Tools/TestWebKitAPI/config.h b/Tools/TestWebKitAPI/config.h
index 0fb19e1c3..ccee71073 100644
--- a/Tools/TestWebKitAPI/config.h
+++ b/Tools/TestWebKitAPI/config.h
@@ -23,16 +23,11 @@
* THE POSSIBILITY OF SUCH DAMAGE.
*/
-#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H
-#ifdef BUILDING_WITH_CMAKE
+#if defined(HAVE_CONFIG_H) && HAVE_CONFIG_H && defined(BUILDING_WITH_CMAKE)
#include "cmakeconfig.h"
-#else
-#include "autotoolsconfig.h"
-#endif
#endif
-#include <wtf/Platform.h>
-#include <wtf/ExportMacros.h>
+#include <WebCore/PlatformExportMacros.h>
#include <runtime/JSExportMacros.h>
#if defined(__APPLE__) && __APPLE__
@@ -52,24 +47,24 @@
#endif
#if PLATFORM(WIN_CAIRO)
-#undef WTF_USE_CG
-#define WTF_USE_CAIRO 1
-#define WTF_USE_CURL 1
+#undef USE_CG
+#define USE_CAIRO 1
+#define USE_CURL 1
#ifndef _WINSOCKAPI_
#define _WINSOCKAPI_ // Prevent inclusion of winsock.h in windows.h
#endif
-#elif !OS(WINCE)
-#define WTF_USE_CG 1
-#undef WTF_USE_CAIRO
-#undef WTF_USE_CURL
+#else
+#define USE_CG 1
+#undef USE_CAIRO
+#undef USE_CURL
#endif
#endif // PLATFORM(WIN)
#include <stdint.h>
-#if !PLATFORM(IOS) && !PLATFORM(WIN) && !(PLATFORM(GTK) && !defined(BUILDING_WEBKIT2__))
-#include <WebKit2/WebKit2_C.h>
+#if !PLATFORM(IOS) && !PLATFORM(WIN) && !(PLATFORM(QT) && !defined(HAVE_WEBKIT2))
+#include <WebKit/WebKit2_C.h>
#endif
#ifdef __clang__
@@ -87,6 +82,13 @@
#pragma clang diagnostic pop
#endif
-#if PLATFORM(MAC) && defined(__OBJC__)
+#if PLATFORM(COCOA) && defined(__OBJC__)
+// FIXME: Get Cocoa tests working with CMake on Mac.
+#if !defined(BUILDING_WITH_CMAKE)
#import <WebKit/WebKit.h>
#endif
+#endif
+
+#if !PLATFORM(IOS)
+#define WK_HAVE_C_SPI 1
+#endif
diff --git a/Tools/TestWebKitAPI/efl/InjectedBundleController.cpp b/Tools/TestWebKitAPI/efl/InjectedBundleController.cpp
deleted file mode 100644
index c2442bd15..000000000
--- a/Tools/TestWebKitAPI/efl/InjectedBundleController.cpp
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "InjectedBundleController.h"
-
-#include <wtf/Assertions.h>
-
-namespace TestWebKitAPI {
-
-void InjectedBundleController::platformInitialize()
-{
- WTFInstallReportBacktraceOnCrashHook();
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/efl/PlatformUtilities.cpp b/Tools/TestWebKitAPI/efl/PlatformUtilities.cpp
deleted file mode 100644
index 65c54e1a7..000000000
--- a/Tools/TestWebKitAPI/efl/PlatformUtilities.cpp
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 "PlatformUtilities.h"
-
-#include <Ecore.h>
-#include <stdio.h>
-#include <unistd.h>
-
-namespace TestWebKitAPI {
-
-namespace Util {
-
-void run(bool* done)
-{
- while (!*done)
- ecore_main_loop_iterate();
-}
-
-void sleep(double seconds)
-{
- usleep(seconds * 1000000);
-}
-
-WKURLRef createURLForResource(const char* resource, const char* extension)
-{
- char url[PATH_MAX];
-
- snprintf(url, sizeof(url), "file://%s/%s.%s", TEST_WEBKIT2_RESOURCES_DIR, resource, extension);
-
- return WKURLCreateWithUTF8CString(url);
-}
-
-WKStringRef createInjectedBundlePath()
-{
- return WKStringCreateWithUTF8CString(TEST_INJECTED_BUNDLE_PATH);
-}
-
-WKURLRef URLForNonExistentResource()
-{
- return WKURLCreateWithUTF8CString("file:///does-not-exist.html");
-}
-
-WKRetainPtr<WKStringRef> MIMETypeForWKURLResponse(WKURLResponseRef wkResponse)
-{
- return adoptWK(WKURLResponseCopyMIMEType(wkResponse));
-}
-
-} // namespace Util
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp b/Tools/TestWebKitAPI/efl/PlatformWebView.cpp
deleted file mode 100644
index 5a3aa6b1e..000000000
--- a/Tools/TestWebKitAPI/efl/PlatformWebView.cpp
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 "ewk_view_private.h"
-#include "PlatformWebView.h"
-
-#include "EWebKit2.h"
-#include <WebKit2/WKAPICast.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKViewEfl.h>
-#include <Ecore_Evas.h>
-
-extern bool useX11Window;
-
-using namespace WebKit;
-
-namespace TestWebKitAPI {
-
-static Ecore_Evas* initEcoreEvas()
-{
- if (!ecore_evas_init())
- return 0;
-
- Ecore_Evas* ecoreEvas;
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- ecoreEvas = ecore_evas_new("opengl_x11", 0, 0, 800, 600, 0);
- // Graceful fallback to software rendering if evas_gl engine is not available.
- if (!ecoreEvas)
-#endif
- ecoreEvas = ecore_evas_new(0, 0, 0, 800, 600, 0);
-
- ASSERT(ecoreEvas);
-
- ecore_evas_show(ecoreEvas);
-
- return ecoreEvas;
-}
-
-static void onWebProcessCrashed(void*, Evas_Object*, void* eventInfo)
-{
- bool* handled = static_cast<bool*>(eventInfo);
- *handled = true;
-}
-
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
-{
- m_window = initEcoreEvas();
-
- m_view = EWKViewCreate(contextRef, pageGroupRef, ecore_evas_get(m_window), /* smart */ 0);
-
- WKRetainPtr<WKStringRef> wkTheme = adoptWK(WKStringCreateWithUTF8CString(TEST_THEME_DIR "/default.edj"));
- WKViewSetThemePath(EWKViewGetWKView(m_view), wkTheme.get());
-
- evas_object_smart_callback_add(m_view, "webprocess,crashed", onWebProcessCrashed, 0);
- resizeTo(600, 800);
-}
-
-PlatformWebView::~PlatformWebView()
-{
- evas_object_del(m_view);
-
- ecore_evas_free(m_window);
- ecore_evas_shutdown();
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- evas_object_resize(m_view, width, height);
-}
-
-WKPageRef PlatformWebView::page() const
-{
- return WKViewGetPage(EWKViewGetWKView(m_view));
-}
-
-void PlatformWebView::simulateSpacebarKeyPress()
-{
- Evas* evas = evas_object_evas_get(m_view);
- evas_object_focus_set(m_view, true);
- evas_event_feed_key_down(evas, "space", "space", " ", 0, 0, 0);
- evas_event_feed_key_up(evas, "space", "space", " ", 0, 1, 0);
-}
-
-void PlatformWebView::simulateMouseMove(unsigned x, unsigned y)
-{
- Evas* evas = evas_object_evas_get(m_view);
- evas_object_show(m_view);
- evas_event_feed_mouse_move(evas, x, y, 0, 0);
-}
-
-void PlatformWebView::simulateRightClick(unsigned x, unsigned y)
-{
- Evas* evas = evas_object_evas_get(m_view);
- evas_object_show(m_view);
- evas_event_feed_mouse_move(evas, x, y, 0, 0);
- evas_event_feed_mouse_down(evas, 3, EVAS_BUTTON_NONE, 0, 0);
- evas_event_feed_mouse_up(evas, 3, EVAS_BUTTON_NONE, 0, 0);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/efl/main.cpp b/Tools/TestWebKitAPI/efl/main.cpp
deleted file mode 100644
index c69ec450c..000000000
--- a/Tools/TestWebKitAPI/efl/main.cpp
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. 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. 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 INC. 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 "TestsController.h"
-#include <Ecore.h>
-#include <Eina.h>
-#include <getopt.h>
-#include <wtf/Assertions.h>
-
-bool useX11Window = false;
-
-static bool checkForUseX11WindowArgument(int argc, char** argv)
-{
- int hasUseX11Window = 0;
-
- static const option options[] = {
- {"useX11Window", no_argument, &hasUseX11Window, 1},
- {0, 0, 0, 0}
- };
-
- while (getopt_long(argc, argv, "", options, 0) != -1) { }
-
- return hasUseX11Window;
-}
-
-int main(int argc, char** argv)
-{
- WTFInstallReportBacktraceOnCrashHook();
-
- if (!eina_init())
- return EXIT_FAILURE;
-
- if (!ecore_init())
- return EXIT_FAILURE;
-
- useX11Window = checkForUseX11WindowArgument(argc, argv);
-
- int returnCode = TestWebKitAPI::TestsController::shared().run(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
-
- ecore_shutdown();
- eina_shutdown();
-
- return returnCode;
-}
diff --git a/Tools/TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp b/Tools/TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp
deleted file mode 100644
index 5d55002cc..000000000
--- a/Tools/TestWebKitAPI/gtk/InjectedBundleControllerGtk.cpp
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "InjectedBundleController.h"
-
-namespace TestWebKitAPI {
-
-void InjectedBundleController::platformInitialize()
-{
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp b/Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp
deleted file mode 100644
index 6fd05f5f3..000000000
--- a/Tools/TestWebKitAPI/gtk/PlatformUtilitiesGtk.cpp
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "PlatformUtilities.h"
-
-#include <gtk/gtk.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
-
-namespace TestWebKitAPI {
-namespace Util {
-
-static gboolean checkTestFinished(gpointer userData)
-{
- bool* done = static_cast<bool*>(userData);
-
- if (*done)
- gtk_main_quit();
-
- return !*done;
-}
-
-void run(bool* done)
-{
- g_idle_add(checkTestFinished, done);
- gtk_main();
-}
-
-void sleep(double seconds)
-{
- g_usleep(seconds * 1000000);
-}
-
-static char* getFilenameFromEnvironmentVariableAsUTF8(const char* variableName)
-{
- const char* value = g_getenv(variableName);
- if (!value) {
- g_printerr("%s environment variable not found\n", variableName);
- exit(1);
- }
- gsize bytesWritten;
- return g_filename_to_utf8(value, -1, 0, &bytesWritten, 0);
-}
-
-WKStringRef createInjectedBundlePath()
-{
- GOwnPtr<char> injectedBundlePath(getFilenameFromEnvironmentVariableAsUTF8("TEST_WEBKIT_API_WEBKIT2_INJECTED_BUNDLE_PATH"));
- GOwnPtr<char> injectedBundleFilename(g_build_filename(injectedBundlePath.get(), "libTestWebKitAPIInjectedBundle.la", NULL));
- return WKStringCreateWithUTF8CString(injectedBundleFilename.get());
-}
-
-WKURLRef createURLForResource(const char* resource, const char* extension)
-{
- GOwnPtr<char> testResourcesPath(getFilenameFromEnvironmentVariableAsUTF8("TEST_WEBKIT_API_WEBKIT2_RESOURCES_PATH"));
- GOwnPtr<char> resourceBasename(g_strdup_printf("%s.%s", resource, extension));
- GOwnPtr<char> resourceFilename(g_build_filename(testResourcesPath.get(), resourceBasename.get(), NULL));
- GRefPtr<GFile> resourceFile = adoptGRef(g_file_new_for_path(resourceFilename.get()));
- GOwnPtr<char> resourceURI(g_file_get_uri(resourceFile.get()));
- return WKURLCreateWithUTF8CString(resourceURI.get());
-}
-
-WKURLRef URLForNonExistentResource()
-{
- return WKURLCreateWithUTF8CString("file:///does-not-exist.html");
-}
-
-bool isKeyDown(WKNativeEventPtr event)
-{
- return event->type == GDK_KEY_PRESS;
-}
-
-} // namespace Util
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/gtk/PlatformWebViewGtk.cpp b/Tools/TestWebKitAPI/gtk/PlatformWebViewGtk.cpp
deleted file mode 100644
index ba6fab048..000000000
--- a/Tools/TestWebKitAPI/gtk/PlatformWebViewGtk.cpp
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "PlatformWebView.h"
-
-#include <WebCore/GOwnPtrGtk.h>
-#include <gtk/gtk.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-namespace TestWebKitAPI {
-
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
-{
- m_window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
- m_view = WKViewCreate(contextRef, pageGroupRef);
- gtk_container_add(GTK_CONTAINER(m_window), GTK_WIDGET(m_view));
- gtk_widget_show(GTK_WIDGET(m_view));
- gtk_widget_show(m_window);
-}
-
-PlatformWebView::~PlatformWebView()
-{
- gtk_widget_destroy(m_window);
-}
-
-WKPageRef PlatformWebView::page() const
-{
- return WKViewGetPage(m_view);
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- gtk_window_resize(GTK_WINDOW(m_window), width, height);
-}
-
-static void doKeyStroke(GtkWidget* viewWidget, unsigned int keyVal)
-{
- GOwnPtr<GdkEvent> event(gdk_event_new(GDK_KEY_PRESS));
- event->key.keyval = keyVal;
- event->key.time = GDK_CURRENT_TIME;
- event->key.state = 0;
- event->key.window = gtk_widget_get_window(viewWidget);
- g_object_ref(event->key.window);
- gdk_event_set_device(event.get(), gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gtk_widget_get_display(viewWidget))));
-
- // When synthesizing an event, an invalid hardware_keycode value can cause it to be badly processed by GTK+.
- GOwnPtr<GdkKeymapKey> keys;
- int keysCount;
- if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), keyVal, &keys.outPtr(), &keysCount))
- event->key.hardware_keycode = keys.get()[0].keycode;
-
- gtk_main_do_event(event.get());
- event->key.type = GDK_KEY_RELEASE;
- gtk_main_do_event(event.get());
-}
-
-void PlatformWebView::simulateSpacebarKeyPress()
-{
- GtkWidget* viewWidget = GTK_WIDGET(m_view);
- if (!gtk_widget_get_realized(viewWidget))
- gtk_widget_show(m_window);
- doKeyStroke(viewWidget, GDK_KEY_KP_Space);
-}
-
-void PlatformWebView::simulateAltKeyPress()
-{
- GtkWidget* viewWidget = GTK_WIDGET(m_view);
- if (!gtk_widget_get_realized(viewWidget))
- gtk_widget_show(m_window);
- doKeyStroke(viewWidget, GDK_KEY_Alt_L);
-}
-
-static void doMouseButtonEvent(GtkWidget* viewWidget, GdkEventType eventType, int x, int y, unsigned int button)
-{
- GOwnPtr<GdkEvent> event(gdk_event_new(eventType));
- event->button.x = x;
- event->button.y = y;
- event->button.button = button;
- event->button.time = GDK_CURRENT_TIME;
- event->button.axes = 0;
- event->button.state = 0;
- event->button.window = gtk_widget_get_window(viewWidget);
- g_object_ref(event->button.window);
- event->button.device = gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gtk_widget_get_display(viewWidget)));
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(gtk_widget_get_window(viewWidget), x, y, &xRoot, &yRoot);
- event->button.x_root = xRoot;
- event->button.y_root = yRoot;
- gtk_main_do_event(event.get());
-}
-
-void PlatformWebView::simulateRightClick(unsigned x, unsigned y)
-{
- GtkWidget* viewWidget = GTK_WIDGET(m_view);
- if (!gtk_widget_get_realized(viewWidget))
- gtk_widget_show(m_window);
- doMouseButtonEvent(viewWidget, GDK_BUTTON_PRESS, x, y, 3);
- doMouseButtonEvent(viewWidget, GDK_BUTTON_RELEASE, x, y, 3);
-}
-
-void PlatformWebView::simulateMouseMove(unsigned x, unsigned y)
-{
- GOwnPtr<GdkEvent> event(gdk_event_new(GDK_MOTION_NOTIFY));
- event->motion.x = x;
- event->motion.y = y;
- event->motion.time = GDK_CURRENT_TIME;
- event->motion.state = 0;
- event->motion.axes = 0;
-
- GtkWidget* viewWidget = GTK_WIDGET(m_view);
- if (!gtk_widget_get_realized(viewWidget))
- gtk_widget_show(m_window);
- event->motion.window = gtk_widget_get_window(viewWidget);
- g_object_ref(event->motion.window);
- event->motion.device = gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gtk_widget_get_display(viewWidget)));
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(gtk_widget_get_window(viewWidget), x, y, &xRoot, &yRoot);
- event->motion.x_root = xRoot;
- event->motion.y_root = yRoot;
- gtk_main_do_event(event.get());
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/gtk/main.cpp b/Tools/TestWebKitAPI/gtk/main.cpp
deleted file mode 100644
index 1b7fef64f..000000000
--- a/Tools/TestWebKitAPI/gtk/main.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2012 Igalia S.L.
- *
- * 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. 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 INC. 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 "TestsController.h"
-
-#include <gtk/gtk.h>
-
-int main(int argc, char** argv)
-{
- gtk_init(&argc, &argv);
-
- return TestWebKitAPI::TestsController::shared().run(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/Tools/TestWebKitAPI/ios/mainIOS.mm b/Tools/TestWebKitAPI/ios/mainIOS.mm
deleted file mode 100644
index 3eec9b005..000000000
--- a/Tools/TestWebKitAPI/ios/mainIOS.mm
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "TestsController.h"
-
-int main(int argc, char** argv)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- bool passed = TestWebKitAPI::TestsController::shared().run(argc, argv);
-
- [pool drain];
-
- return passed ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/Tools/TestWebKitAPI/mac/InjectedBundleControllerMac.mm b/Tools/TestWebKitAPI/mac/InjectedBundleControllerMac.mm
deleted file mode 100644
index 5d6712a57..000000000
--- a/Tools/TestWebKitAPI/mac/InjectedBundleControllerMac.mm
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "InjectedBundleController.h"
-
-#import <Foundation/Foundation.h>
-
-namespace TestWebKitAPI {
-
-void InjectedBundleController::platformInitialize()
-{
- // Set up user defaults.
- NSMutableDictionary *argumentDomain = [[[NSUserDefaults standardUserDefaults] volatileDomainForName:NSArgumentDomain] mutableCopy];
- if (!argumentDomain)
- argumentDomain = [[NSMutableDictionary alloc] init];
-
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithInteger:4], @"AppleAntiAliasingThreshold",
- [NSNumber numberWithInteger:0], @"AppleFontSmoothing",
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- [NSNumber numberWithBool:NO], @"NSScrollAnimationEnabled",
-#else
- [NSNumber numberWithBool:NO], @"AppleScrollAnimationEnabled",
-#endif
- [NSNumber numberWithBool:NO], @"NSOverlayScrollersEnabled",
- @"Always", @"AppleShowScrollBars",
- nil];
-
- [argumentDomain addEntriesFromDictionary:dict];
- [[NSUserDefaults standardUserDefaults] setVolatileDomain:argumentDomain forName:NSArgumentDomain];
-
- [argumentDomain release];
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.h b/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.h
deleted file mode 100644
index fe31a8aa9..000000000
--- a/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 InstanceMethodSwizzler_h
-#define InstanceMethodSwizzler_h
-
-#include <objc/runtime.h>
-#include <wtf/Noncopyable.h>
-
-namespace TestWebKitAPI {
-
-class InstanceMethodSwizzler {
- WTF_MAKE_NONCOPYABLE(InstanceMethodSwizzler);
-public:
- InstanceMethodSwizzler(Class, SEL, IMP);
- ~InstanceMethodSwizzler();
-
- Method m_method;
- IMP m_originalImplementation;
-};
-
-} // namespace TestWebKitAPI
-
-#endif // InstanceMethodSwizzler_h
diff --git a/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.mm b/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.mm
deleted file mode 100644
index 4c37da4b8..000000000
--- a/Tools/TestWebKitAPI/mac/InstanceMethodSwizzler.mm
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "InstanceMethodSwizzler.h"
-
-namespace TestWebKitAPI {
-
-InstanceMethodSwizzler::InstanceMethodSwizzler(Class cls, SEL selector, IMP implementation)
- : m_method(class_getInstanceMethod(cls, selector))
- , m_originalImplementation(method_setImplementation(m_method, implementation))
-{
-}
-
-InstanceMethodSwizzler::~InstanceMethodSwizzler()
-{
- method_setImplementation(m_method, m_originalImplementation);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/JavaScriptTestMac.mm b/Tools/TestWebKitAPI/mac/JavaScriptTestMac.mm
deleted file mode 100644
index b2526679f..000000000
--- a/Tools/TestWebKitAPI/mac/JavaScriptTestMac.mm
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "JavaScriptTest.h"
-
-#include <WebKit/WebView.h>
-#include <WebKit2/WKViewPrivate.h>
-
-namespace TestWebKitAPI {
-
-::testing::AssertionResult runJSTest(const char*, const char*, const char*, WebView *webView, const char* script, const char* expectedResult)
-{
- NSString *actualResult = [webView stringByEvaluatingJavaScriptFromString:[NSString stringWithUTF8String:script]];
- return compareJSResult(script, [actualResult UTF8String], expectedResult);
-}
-
-::testing::AssertionResult runJSTest(const char* viewExpr, const char* scriptExpr, const char* expectedResultExpr, WKView *view, const char* script, const char* expectedResult)
-{
- return runJSTest(viewExpr, scriptExpr, expectedResultExpr, [view pageRef], script, expectedResult);
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm b/Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm
deleted file mode 100644
index 1e73adbb3..000000000
--- a/Tools/TestWebKitAPI/mac/PlatformUtilitiesMac.mm
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformUtilities.h"
-
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKStringCF.h>
-#include <WebKit2/WKURLCF.h>
-#include <WebKit2/WKURLResponseNS.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/RetainPtr.h>
-
-namespace TestWebKitAPI {
-namespace Util {
-
-void run(bool* done)
-{
- while (!*done)
- [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:[NSDate distantPast]];
-}
-
-void sleep(double seconds)
-{
- usleep(seconds * 1000000);
-}
-
-WKStringRef createInjectedBundlePath()
-{
- NSString *nsString = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"InjectedBundleTestWebKitAPI.bundle"];
- return WKStringCreateWithCFString((CFStringRef)nsString);
-}
-
-WKURLRef createURLForResource(const char* resource, const char* extension)
-{
- NSURL *nsURL = [[NSBundle mainBundle] URLForResource:[NSString stringWithUTF8String:resource] withExtension:[NSString stringWithUTF8String:extension] subdirectory:@"TestWebKitAPI.resources"];
- return WKURLCreateWithCFURL((CFURLRef)nsURL);
-}
-
-WKURLRef URLForNonExistentResource()
-{
- NSURL *nsURL = [NSURL URLWithString:@"file:///does-not-exist.html"];
- return WKURLCreateWithCFURL((CFURLRef)nsURL);
-}
-
-WKRetainPtr<WKStringRef> MIMETypeForWKURLResponse(WKURLResponseRef wkResponse)
-{
- RetainPtr<NSURLResponse> response = adoptNS(WKURLResponseCopyNSURLResponse(wkResponse));
- return adoptWK(WKStringCreateWithCFString((CFStringRef)[response.get() MIMEType]));
-}
-
-bool isKeyDown(WKNativeEventPtr event)
-{
- return [event type] == NSKeyDown;
-}
-
-std::string toSTD(NSString *string)
-{
- if (!string)
- return std::string();
-
- size_t bufferSize = [string lengthOfBytesUsingEncoding:NSUTF8StringEncoding];
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
- NSUInteger stringLength;
- [string getBytes:buffer.get() maxLength:bufferSize usedLength:&stringLength encoding:NSUTF8StringEncoding options:0 range:NSMakeRange(0, [string length]) remainingRange:0];
- return std::string(buffer.get(), stringLength);
-}
-
-} // namespace Util
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm b/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm
deleted file mode 100644
index 1661074b2..000000000
--- a/Tools/TestWebKitAPI/mac/PlatformWebViewMac.mm
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "config.h"
-#import "PlatformWebView.h"
-
-#import <WebKit2/WKViewPrivate.h>
-#import <Carbon/Carbon.h>
-
-@interface ActiveOffscreenWindow : NSWindow
-@end
-
-@implementation ActiveOffscreenWindow
-- (BOOL)isKeyWindow
-{
- return YES;
-}
-@end
-
-namespace TestWebKitAPI {
-
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef)
-{
- NSRect rect = NSMakeRect(0, 0, 800, 600);
- m_view = [[WKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef];
-
- NSRect windowRect = NSOffsetRect(rect, -10000, [(NSScreen *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
- m_window = [[ActiveOffscreenWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
- [m_window setColorSpace:[[NSScreen mainScreen] colorSpace]];
- [[m_window contentView] addSubview:m_view];
- [m_window orderBack:nil];
- [m_window setAutodisplay:NO];
- [m_window setReleasedWhenClosed:NO];
-}
-
-PlatformWebView::~PlatformWebView()
-{
- [m_window close];
- [m_window release];
- [m_view release];
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- [m_view setFrame:NSMakeRect(0, 0, width, height)];
-}
-
-
-WKPageRef PlatformWebView::page() const
-{
- return [m_view pageRef];
-}
-
-void PlatformWebView::focus()
-{
- // Implement.
-}
-
-void PlatformWebView::simulateSpacebarKeyPress()
-{
- NSEvent *event = [NSEvent keyEventWithType:NSKeyDown
- location:NSMakePoint(5, 5)
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[m_window windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:@" "
- charactersIgnoringModifiers:@" "
- isARepeat:NO
- keyCode:0x31];
-
- [m_view keyDown:event];
-
- event = [NSEvent keyEventWithType:NSKeyUp
- location:NSMakePoint(5, 5)
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[m_window windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:@" "
- charactersIgnoringModifiers:@" "
- isARepeat:NO
- keyCode:0x31];
-
- [m_view keyUp:event];
-}
-
-void PlatformWebView::simulateRightClick(unsigned x, unsigned y)
-{
- NSEvent *event = [NSEvent mouseEventWithType:NSRightMouseDown
- location:NSMakePoint(x, y)
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[m_window windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:0
- clickCount:0
- pressure:0];
-
-
- [m_view rightMouseDown:event];
-
- event = [NSEvent mouseEventWithType:NSRightMouseUp
- location:NSMakePoint(x, y)
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[m_window windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:0
- clickCount:0
- pressure:0];
-
- [m_view rightMouseUp:event];
-
-}
-
-void PlatformWebView::simulateMouseMove(unsigned x, unsigned y)
-{
- NSEvent *event = [NSEvent mouseEventWithType:NSMouseMoved
- location:NSMakePoint(x, y)
- modifierFlags:0
- timestamp:GetCurrentEventTime()
- windowNumber:[m_window windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:0
- clickCount:0
- pressure:0];
-
- [m_view mouseMoved:event];
-
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.h b/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.h
deleted file mode 100644
index e83e653df..000000000
--- a/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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.
- */
-
-@interface SyntheticBackingScaleFactorWindow : NSWindow {
- CGFloat _backingScaleFactor;
-}
-- (void)setBackingScaleFactor:(CGFloat)scaleFactor;
-@end
diff --git a/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m b/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m
deleted file mode 100644
index 555cf985c..000000000
--- a/Tools/TestWebKitAPI/mac/SyntheticBackingScaleFactorWindow.m
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "config.h"
-#import "SyntheticBackingScaleFactorWindow.h"
-
-@implementation SyntheticBackingScaleFactorWindow
-
-- (id)initWithContentRect:(NSRect)contentRect styleMask:(NSUInteger)windowStyle backing:(NSBackingStoreType)bufferingType defer:(BOOL)deferCreation
-{
- self = [super initWithContentRect:contentRect styleMask:windowStyle backing:bufferingType defer:deferCreation];
- if (!self)
- return nil;
-
- _backingScaleFactor = 1;
- return self;
-}
-
-- (void)setBackingScaleFactor:(CGFloat)scaleFactor
-{
- _backingScaleFactor = scaleFactor;
-}
-
-- (CGFloat)backingScaleFactor
-{
- return _backingScaleFactor;
-}
-
-- (CGFloat)userSpaceScaleFactor
-{
- return _backingScaleFactor;
-}
-
-@end
diff --git a/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h b/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h
deleted file mode 100644
index d8f8ffa95..000000000
--- a/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 <WebKit2/WebKit2.h>
-
-typedef void (^OnLoadBlock)(WKBrowsingContextController *);
-
-@interface TestBrowsingContextLoadDelegate : NSObject <WKBrowsingContextLoadDelegate> {
-@private
- OnLoadBlock _onLoadBlock;
-}
-
-@property(nonatomic, copy) OnLoadBlock onLoadBlock;
-
-- (id)initWithBlockToRunOnLoad:(OnLoadBlock)block;
-
-@end
diff --git a/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm b/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm
deleted file mode 100644
index a6c8cef94..000000000
--- a/Tools/TestWebKitAPI/mac/TestBrowsingContextLoadDelegate.mm
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "TestBrowsingContextLoadDelegate.h"
-
-@implementation TestBrowsingContextLoadDelegate
-
-@synthesize onLoadBlock = _onLoadBlock;
-
-- (id)initWithBlockToRunOnLoad:(OnLoadBlock)block
-{
- if (!(self = [super init]))
- return nil;
-
- self.onLoadBlock = block;
- return self;
-}
-
-- (void)browsingContextControllerDidFinishLoad:(WKBrowsingContextController *)sender
-{
- if (_onLoadBlock)
- _onLoadBlock(sender);
-}
-
-@end \ No newline at end of file
diff --git a/Tools/TestWebKitAPI/mac/TestProtocol.h b/Tools/TestWebKitAPI/mac/TestProtocol.h
deleted file mode 100644
index cf6734b88..000000000
--- a/Tools/TestWebKitAPI/mac/TestProtocol.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 TestProtocol_h
-#define TestProtocol_h
-
-@interface TestProtocol : NSURLProtocol {
-}
-+ (NSString *)scheme;
-@end
-
-#endif // TestProtocol_h
diff --git a/Tools/TestWebKitAPI/mac/TestProtocol.mm b/Tools/TestWebKitAPI/mac/TestProtocol.mm
deleted file mode 100644
index 367ea0489..000000000
--- a/Tools/TestWebKitAPI/mac/TestProtocol.mm
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2013 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. 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 INC. 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 "config.h"
-#import "TestProtocol.h"
-
-static NSString *testScheme = @"test";
-
-@implementation TestProtocol
-
-+ (BOOL)canInitWithRequest:(NSURLRequest *)request
-{
- return [[[request URL] scheme] caseInsensitiveCompare:testScheme] == NSOrderedSame;
-}
-
-+ (NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
-{
- return request;
-}
-
-+ (BOOL)requestIsCacheEquivalent:(NSURLRequest *)a toRequest:(NSURLRequest *)b
-{
- return NO;
-}
-
-+ (NSString *)scheme
-{
- return testScheme;
-}
-
-- (void)startLoading
-{
- EXPECT_TRUE([[[[self request] URL] scheme] isEqualToString:testScheme]);
-
- NSData *data = [@"PASS" dataUsingEncoding:NSASCIIStringEncoding];
- NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[[self request] URL] MIMEType:@"text/html" expectedContentLength:[data length] textEncodingName:nil];
- [[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
- [[self client] URLProtocol:self didLoadData:data];
- [[self client] URLProtocolDidFinishLoading:self];
- [response release];
-}
-
-- (void)stopLoading
-{
-}
-
-@end
diff --git a/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.h b/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.h
deleted file mode 100644
index c25c4b4cf..000000000
--- a/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 WebKitAgnosticTest_h
-#define WebKitAgnosticTest_h
-
-#include "PlatformUtilities.h"
-
-namespace TestWebKitAPI {
-
-// This test fixture can be used to write test that work with both WebKit1 and WebKit2. Calling
-// runWebKit1Test or runWebKit2Test will create a WebView or WKView (respectively), load the URL
-// specified by url(), and then call didLoadURL. Your test's logic should go in didLoadURL.
-class WebKitAgnosticTest : public ::testing::Test {
-public:
- WebKitAgnosticTest();
-
- void runWebKit1Test();
- void runWebKit2Test();
-
- void loadURL(WebView *, NSURL *);
- void loadURL(WKView *, NSURL *);
-
- void goBack(WebView *);
- void goBack(WKView *);
-
- void waitForLoadToFinish();
-
- NSRect viewFrame;
-
-private:
- virtual NSURL *url() const = 0;
- virtual void didLoadURL(WebView *) = 0;
- virtual void didLoadURL(WKView *) = 0;
-
- virtual void initializeView(WebView *) { }
- virtual void initializeView(WKView *) { }
-
- virtual void teardownView(WebView *) { }
- virtual void teardownView(WKView *) { }
-
- bool didFinishLoad;
-};
-
-} // namespace TestWebKitAPI
-
-#endif // WebKitAgnosticTest_h
diff --git a/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm b/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm
deleted file mode 100644
index 03552b3a8..000000000
--- a/Tools/TestWebKitAPI/mac/WebKitAgnosticTest.mm
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "WebKitAgnosticTest.h"
-
-#include <WebKit2/WKURLCF.h>
-#include <WebKit2/WKViewPrivate.h>
-#include <wtf/RetainPtr.h>
-
-@interface FrameLoadDelegate : NSObject {
- bool* _didFinishLoad;
-}
-
-- (id)initWithDidFinishLoadBoolean:(bool*)didFinishLoad;
-
-@end
-
-@implementation FrameLoadDelegate
-
-- (id)initWithDidFinishLoadBoolean:(bool*)didFinishLoad
-{
- self = [super init];
- if (!self)
- return nil;
-
- _didFinishLoad = didFinishLoad;
- return self;
-}
-
-- (void)webView:(WebView *)webView didFinishLoadForFrame:(WebFrame *)webFrame
-{
- *_didFinishLoad = true;
-}
-
-@end
-
-namespace TestWebKitAPI {
-
-static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef, const void* context)
-{
- *static_cast<bool*>(const_cast<void*>(context)) = true;
-}
-
-static void setPageLoaderClient(WKPageRef page, bool* didFinishLoad)
-{
- WKPageLoaderClient loaderClient;
- memset(&loaderClient, 0, sizeof(loaderClient));
- loaderClient.version = 0;
- loaderClient.clientInfo = didFinishLoad;
- loaderClient.didFinishLoadForFrame = didFinishLoadForFrame;
-
- WKPageSetPageLoaderClient(page, &loaderClient);
-}
-
-WebKitAgnosticTest::WebKitAgnosticTest()
- : viewFrame(NSMakeRect(0, 0, 800, 600))
- , didFinishLoad(false)
-{
-}
-
-void WebKitAgnosticTest::runWebKit1Test()
-{
- RetainPtr<WebView> webView = adoptNS([[WebView alloc] initWithFrame:viewFrame]);
- RetainPtr<FrameLoadDelegate> delegate = adoptNS([[FrameLoadDelegate alloc] initWithDidFinishLoadBoolean:&didFinishLoad]);
- [webView.get() setFrameLoadDelegate:delegate.get()];
- initializeView(webView.get());
-
- loadURL(webView.get(), url());
- waitForLoadToFinish();
- didLoadURL(webView.get());
- teardownView(webView.get());
-}
-
-void WebKitAgnosticTest::runWebKit2Test()
-{
- WKRetainPtr<WKContextRef> context = adoptWK(WKContextCreate());
- WKRetainPtr<WKPageGroupRef> pageGroup = adoptWK(WKPageGroupCreateWithIdentifier(Util::toWK("WebKitAgnosticTest").get()));
- RetainPtr<WKView> view = adoptNS([[WKView alloc] initWithFrame:viewFrame contextRef:context.get() pageGroupRef:pageGroup.get()]);
- setPageLoaderClient([view.get() pageRef], &didFinishLoad);
- initializeView(view.get());
-
- loadURL(view.get(), url());
- waitForLoadToFinish();
- didLoadURL(view.get());
- teardownView(view.get());
-}
-
-void WebKitAgnosticTest::loadURL(WebView *webView, NSURL *url)
-{
- EXPECT_FALSE(didFinishLoad);
- [[webView mainFrame] loadRequest:[NSURLRequest requestWithURL:url]];
-}
-
-void WebKitAgnosticTest::loadURL(WKView *view, NSURL *url)
-{
- EXPECT_FALSE(didFinishLoad);
- WKPageLoadURL([view pageRef], adoptWK(WKURLCreateWithCFURL((CFURLRef)url)).get());
-}
-
-void WebKitAgnosticTest::goBack(WebView *webView)
-{
- EXPECT_FALSE(didFinishLoad);
- [webView goBack];
-}
-
-void WebKitAgnosticTest::goBack(WKView *view)
-{
- EXPECT_FALSE(didFinishLoad);
- WKPageGoBack([view pageRef]);
-}
-
-void WebKitAgnosticTest::waitForLoadToFinish()
-{
- Util::run(&didFinishLoad);
- didFinishLoad = false;
-}
-
-} // namespace TestWebKitAPI
diff --git a/Tools/TestWebKitAPI/mac/mainMac.mm b/Tools/TestWebKitAPI/mac/mainMac.mm
deleted file mode 100644
index 498eb480e..000000000
--- a/Tools/TestWebKitAPI/mac/mainMac.mm
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "config.h"
-#import "TestsController.h"
-
-int main(int argc, char** argv)
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- [NSApplication sharedApplication];
-
- bool passed = TestWebKitAPI::TestsController::shared().run(argc, argv);
-
- [pool drain];
-
- return passed ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/Tools/TestWebKitAPI/qt/main.cpp b/Tools/TestWebKitAPI/qt/main.cpp
index e33da3036..7b719ed0a 100644
--- a/Tools/TestWebKitAPI/qt/main.cpp
+++ b/Tools/TestWebKitAPI/qt/main.cpp
@@ -21,7 +21,9 @@
#include "config.h"
#include "TestsController.h"
+#if HAVE(WEBKIT2)
#include "qquickwebview_p.h"
+#endif
#include <QGuiApplication>
void addQtWebProcessToPath()
@@ -53,7 +55,9 @@ int main(int argc, char** argv)
useDesktopBehavior = false;
}
+#if HAVE(WEBKIT2)
QQuickWebViewExperimental::setFlickableViewportEnabled(!useDesktopBehavior);
+#endif
// Has to be done before QApplication is constructed in case
// QApplication itself produces debug output.
@@ -66,5 +70,5 @@ int main(int argc, char** argv)
QGuiApplication app(argc, argv);
addQtWebProcessToPath();
- return TestWebKitAPI::TestsController::shared().run(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
+ return TestWebKitAPI::TestsController::singleton().run(argc, argv) ? EXIT_SUCCESS : EXIT_FAILURE;
}
diff --git a/Tools/TestWebKitAPI/win/HostWindow.cpp b/Tools/TestWebKitAPI/win/HostWindow.cpp
deleted file mode 100644
index 74c947d9e..000000000
--- a/Tools/TestWebKitAPI/win/HostWindow.cpp
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "HostWindow.h"
-
-namespace TestWebKitAPI {
-
-static LPCWSTR hostWindowClassName = L"HostWindow";
-
-HostWindow::HostWindow()
- : m_window(0)
-{
-}
-
-bool HostWindow::initialize()
-{
- registerWindowClass();
- m_window = ::CreateWindowExW(0, hostWindowClassName, L"TestWebKitAPI", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, 0, 0, ::GetModuleHandle(0), 0);
- return m_window;
-}
-
-HostWindow::~HostWindow()
-{
- if (!::IsWindow(m_window))
- return;
- ::DestroyWindow(m_window);
-}
-
-RECT HostWindow::clientRect() const
-{
- RECT rect = {0};
- if (!::GetClientRect(m_window, &rect)) {
- RECT emptyRect = {0};
- return emptyRect;
- }
- return rect;
-}
-
-void HostWindow::registerWindowClass()
-{
- static bool initialized;
- if (initialized)
- return;
- initialized = true;
-
- WNDCLASSEXW wndClass = {0};
- wndClass.cbSize = sizeof(wndClass);
- wndClass.style = CS_HREDRAW | CS_VREDRAW;
- wndClass.lpfnWndProc = wndProc;
- wndClass.hCursor = LoadCursor(0, IDC_ARROW);
- wndClass.hInstance = GetModuleHandle(0);
- wndClass.lpszClassName = hostWindowClassName;
-
- ::RegisterClassExW(&wndClass);
-}
-
-LRESULT HostWindow::wndProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
-{
- return ::DefWindowProcW(hWnd, uMsg, wParam, lParam);
-}
-
-} // namespace WebKitAPITest
diff --git a/Tools/TestWebKitAPI/win/HostWindow.h b/Tools/TestWebKitAPI/win/HostWindow.h
deleted file mode 100644
index ddb53f10f..000000000
--- a/Tools/TestWebKitAPI/win/HostWindow.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 HostWindow_h
-#define HostWindow_h
-
-#include <windows.h>
-#include <wtf/Noncopyable.h>
-
-namespace TestWebKitAPI {
-
-class HostWindow {
- WTF_MAKE_NONCOPYABLE(HostWindow);
-public:
- HostWindow();
- ~HostWindow();
- bool initialize();
-
- RECT clientRect() const;
- HWND window() const { return m_window; }
-
-private:
- static void registerWindowClass();
- static LRESULT CALLBACK wndProc(HWND, UINT uMsg, WPARAM, LPARAM);
-
- HWND m_window;
-};
-
-} // namespace WebKitAPITest
-
-#endif // HostWindow_h
diff --git a/Tools/TestWebKitAPI/win/main.cpp b/Tools/TestWebKitAPI/win/main.cpp
deleted file mode 100644
index 265471bd0..000000000
--- a/Tools/TestWebKitAPI/win/main.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2010, 2011 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. 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 INC. 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 "TestsController.h"
-#include <windows.h>
-
-#if defined _M_IX86
-#define PROCESSORARCHITECTURE "x86"
-#elif defined _M_IA64
-#define PROCESSORARCHITECTURE "ia64"
-#elif defined _M_X64
-#define PROCESSORARCHITECTURE "amd64"
-#else
-#define PROCESSORARCHITECTURE "*"
-#endif
-
-#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" PROCESSORARCHITECTURE "' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#if defined(_MSC_VER) && (_MSC_VER >= 1600)
-#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.6195' processorArchitecture='" PROCESSORARCHITECTURE "' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")
-#endif
-
-int main(int argc, char** argv)
-{
- // Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which we will inherit. This is bad for
- // testing/debugging, as it causes the post-mortem debugger not to be invoked. We reset the
- // error mode here to work around Cygwin's behavior. See <http://webkit.org/b/55222>.
- ::SetErrorMode(0);
-
- // Initialize COM, needed for WebKit1 tests.
- // FIXME: Remove this line once <http://webkit.org/b/32867> is fixed.
- ::OleInitialize(0);
-
- bool passed = TestWebKitAPI::TestsController::shared().run(argc, argv);
-
- return passed ? EXIT_SUCCESS : EXIT_FAILURE;
-}
diff --git a/Tools/Tools.pro b/Tools/Tools.pro
deleted file mode 100644
index 5e2a45d73..000000000
--- a/Tools/Tools.pro
+++ /dev/null
@@ -1,51 +0,0 @@
-# -------------------------------------------------------------------
-# Root project file for tools
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = subdirs
-CONFIG += ordered
-
-build?(webkit1) {
- build?(testbrowser): SUBDIRS += QtTestBrowser/QtTestBrowser.pro
- build?(drt): SUBDIRS += DumpRenderTree/qt/DumpRenderTree.pro
-}
-
-build?(webkit2) {
- # WTR's InjectedBundle depends currently on WK1's DumpRenderTreeSupport
- build?(webkit1):build?(wtr):have?(QTQUICK): SUBDIRS += WebKitTestRunner/WebKitTestRunner.pro
-
- build?(minibrowser) {
- have?(QTQUICK): SUBDIRS += MiniBrowser/qt/MiniBrowser.pro
- SUBDIRS += MiniBrowser/qt/raw/MiniBrowserRaw.pro
- }
-
- !production_build {
- # Only tested on Linux so far.
- linux* {
- SUBDIRS += TestWebKitAPI
- }
- }
-}
-
-build?(imagediff): SUBDIRS += ImageDiff/ImageDiff.pro
-
-build?(test_npapi): SUBDIRS += DumpRenderTree/qt/TestNetscapePlugin/TestNetscapePlugin.pro
-
-OTHER_FILES = \
- Scripts/* \
- $$files(Scripts/webkitpy/*.py, true) \
- $$files(Scripts/webkitperl/*.p[l|m], true) \
- qmake/README \
- qmake/dump-features.pl \
- qmake/config.tests/README \
- qmake/config.tests/fontconfig/* \
- qmake/config.tests/gccdepends/* \
- qmake/config.tests/libexecdir/* \
- qmake/mkspecs/modules/* \
- qmake/mkspecs/features/*.prf \
- qmake/mkspecs/features/*.pri \
- qmake/mkspecs/features/mac/*.prf \
- qmake/mkspecs/features/unix/*.prf \
- qmake/mkspecs/features/win32/*.prf
diff --git a/Tools/WebKitLauncher/Configurations/Base.xcconfig b/Tools/WebKitLauncher/Configurations/Base.xcconfig
deleted file mode 100644
index 5aceb3bd0..000000000
--- a/Tools/WebKitLauncher/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,37 +0,0 @@
-// 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.
-
-ARCHS = i386 x86_64;
-DEAD_CODE_STRIPPING = YES;
-DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
-GCC_DEBUGGING_SYMBOLS = full;
-GCC_MODEL_TUNING = G5;
-GCC_PREPROCESSOR_DEFINITIONS = ENABLE_SPARKLE=$(ENABLE_SPARKLE);
-GCC_TREAT_WARNINGS_AS_ERRORS = YES;
-GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-MACOSX_DEPLOYMENT_TARGET = 10.6;
-PREBINDING = NO;
-SDKROOT = macosx;
-WARNING_CFLAGS = -Wall;
-
-ENABLE_SPARKLE = 0;
diff --git a/Tools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig b/Tools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig
deleted file mode 100644
index fd0124e98..000000000
--- a/Tools/WebKitLauncher/Configurations/WebKitLauncher.xcconfig
+++ /dev/null
@@ -1,26 +0,0 @@
-// 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.
-
-INFOPLIST_FILE = Info.plist;
-PRODUCT_NAME = WebKit;
-WRAPPER_EXTENSION = app;
diff --git a/Tools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig b/Tools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig
deleted file mode 100644
index ff352e66a..000000000
--- a/Tools/WebKitLauncher/Configurations/WebKitNightlyEnabler.xcconfig
+++ /dev/null
@@ -1,29 +0,0 @@
-// 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.
-
-PRODUCT_NAME = WebKitNightlyEnabler;
-INSTALL_PATH = @executable_path/../Resources;
-
-OTHER_LDFLAGS = $(OTHER_LDFLAGS_$(ENABLE_SPARKLE));
-OTHER_LDFLAGS_0 = ;
-OTHER_LDFLAGS_1 = -framework Sparkle;
diff --git a/Tools/WebKitLauncher/Info.plist b/Tools/WebKitLauncher/Info.plist
deleted file mode 100644
index 7141ec8e5..000000000
--- a/Tools/WebKitLauncher/Info.plist
+++ /dev/null
@@ -1,489 +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>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-2009 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>LSArchitecturePriority</key>
- <array>
- <string>x86_64</string>
- <string>i386</string>
- </array>
- <key>LSMinimumSystemVersion</key>
- <string>10.6</string>
- <key>SUFeedURL</key>
- <string>http://nightly.webkit.org/builds/trunk/mac/rss</string>
- <key>SUShowReleaseNotes</key>
- <false/>
- <key>SUAllowsAutomaticUpdates</key>
- <false/>
- <key>SUPublicDSAKeyFile</key>
- <string>nightly.webkit.org.public.pem</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/Tools/WebKitLauncher/Makefile b/Tools/WebKitLauncher/Makefile
deleted file mode 100644
index e489fc4bf..000000000
--- a/Tools/WebKitLauncher/Makefile
+++ /dev/null
@@ -1,3 +0,0 @@
-SCRIPTS_PATH = ../Scripts
-
-include ../../Makefile.shared
diff --git a/Tools/WebKitLauncher/VERSION b/Tools/WebKitLauncher/VERSION
deleted file mode 100644
index fd85e3040..000000000
--- a/Tools/WebKitLauncher/VERSION
+++ /dev/null
@@ -1 +0,0 @@
-VERSION
diff --git a/Tools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj b/Tools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj
deleted file mode 100644
index 71fc11125..000000000
--- a/Tools/WebKitLauncher/WebKitLauncher.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,455 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 45;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- 5DE79BC30F1C62450067BE08 /* Extract Sparkle */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = 5DE79BD80F1C629B0067BE08 /* Build configuration list for PBXAggregateTarget "Extract Sparkle" */;
- buildPhases = (
- 5DE79BC20F1C62450067BE08 /* ShellScript */,
- );
- dependencies = (
- );
- name = "Extract Sparkle";
- productName = "Extract Sparkle";
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 5D1067640FE63758002A2868 /* WebKitLauncherURLProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D1067620FE63758002A2868 /* WebKitLauncherURLProtocol.h */; };
- 5D1067650FE63758002A2868 /* WebKitLauncherURLProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 5D1067630FE63758002A2868 /* WebKitLauncherURLProtocol.m */; };
- 5D18A1FF103FE255006CA7C7 /* nightly.webkit.org.public.pem in Resources */ = {isa = PBXBuildFile; fileRef = 5D18A1FE103FE255006CA7C7 /* nightly.webkit.org.public.pem */; };
- 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 */; };
- 5DA88F6D0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA88F6B0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h */; };
- 5DA88F6E0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA88F6C0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.m */; };
- 5DA88F7A0FC813EB00AB2F62 /* WebKitNightlyEnabler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DA88F790FC813EB00AB2F62 /* WebKitNightlyEnabler.h */; };
- 5DB70525097B94CD009875EC /* webkit.icns in Resources */ = {isa = PBXBuildFile; fileRef = 5DB70524097B94CD009875EC /* webkit.icns */; };
- 5DE0853815AE0AA0000A27B4 /* Security.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5DE0853715AE0AA0000A27B4 /* Security.framework */; };
- 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;
- };
- 5DE79BC90F1C62850067BE08 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 5DE79BC30F1C62450067BE08;
- remoteInfo = "Extract Sparkle";
- };
- 5DE79BCB0F1C62890067BE08 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 29B97313FDCFA39411CA2CEA /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = 5DE79BC30F1C62450067BE08;
- remoteInfo = "Extract Sparkle";
- };
-/* 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>"; };
- 29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
- 5D1067620FE63758002A2868 /* WebKitLauncherURLProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitLauncherURLProtocol.h; sourceTree = "<group>"; };
- 5D1067630FE63758002A2868 /* WebKitLauncherURLProtocol.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitLauncherURLProtocol.m; sourceTree = "<group>"; };
- 5D18A1FE103FE255006CA7C7 /* nightly.webkit.org.public.pem */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = nightly.webkit.org.public.pem; sourceTree = "<group>"; };
- 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 = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitNightlyEnabler.m; sourceTree = "<group>"; };
- 5DA88F6B0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitNightlyEnablerSparkle.h; sourceTree = "<group>"; };
- 5DA88F6C0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = WebKitNightlyEnablerSparkle.m; sourceTree = "<group>"; };
- 5DA88F790FC813EB00AB2F62 /* WebKitNightlyEnabler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitNightlyEnabler.h; sourceTree = "<group>"; };
- 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
- 5DA88F7F0FC8176100AB2F62 /* WebKitLauncher.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKitLauncher.xcconfig; sourceTree = "<group>"; };
- 5DA88F800FC8176100AB2F62 /* WebKitNightlyEnabler.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKitNightlyEnabler.xcconfig; sourceTree = "<group>"; };
- 5DB70524097B94CD009875EC /* webkit.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = webkit.icns; sourceTree = "<group>"; };
- 5DE0853715AE0AA0000A27B4 /* Security.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Security.framework; path = System/Library/Frameworks/Security.framework; sourceTree = SDKROOT; };
- 5DE79BEB0F1C63CC0067BE08 /* Sparkle.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Sparkle.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 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 = (
- 5DE0853815AE0AA0000A27B4 /* Security.framework in Frameworks */,
- 8D11072F0486CEB800E47090 /* Cocoa.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A1FEA54F0111CA2CBB /* Cocoa.framework */,
- );
- name = "Linked Frameworks";
- sourceTree = "<group>";
- };
- 19C28FACFE9D520D11CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 5DE79BEB0F1C63CC0067BE08 /* Sparkle.framework */,
- 8D1107320486CEB800E47090 /* WebKit.app */,
- 5D650F3409DB8B280075E9A8 /* WebKitNightlyEnabler.dylib */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29B97314FDCFA39411CA2CEA /* WebKit */ = {
- isa = PBXGroup;
- children = (
- 5DE0853715AE0AA0000A27B4 /* Security.framework */,
- 29B97315FDCFA39411CA2CEA /* Source */,
- 5DA88F7D0FC8174E00AB2F62 /* Configurations */,
- 29B97317FDCFA39411CA2CEA /* Resources */,
- 29B97323FDCFA39411CA2CEA /* Frameworks */,
- 19C28FACFE9D520D11CA2CBB /* Products */,
- );
- name = WebKit;
- sourceTree = "<group>";
- };
- 29B97315FDCFA39411CA2CEA /* Source */ = {
- isa = PBXGroup;
- children = (
- 29B97316FDCFA39411CA2CEA /* main.m */,
- 5D1067620FE63758002A2868 /* WebKitLauncherURLProtocol.h */,
- 5D1067630FE63758002A2868 /* WebKitLauncherURLProtocol.m */,
- 5DA88F790FC813EB00AB2F62 /* WebKitNightlyEnabler.h */,
- 5D650F3509DB8B370075E9A8 /* WebKitNightlyEnabler.m */,
- 5DA88F6B0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h */,
- 5DA88F6C0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.m */,
- );
- name = Source;
- sourceTree = "<group>";
- };
- 29B97317FDCFA39411CA2CEA /* Resources */ = {
- isa = PBXGroup;
- children = (
- 5D41141B0A50A9DE00C84CF0 /* VERSION */,
- 8D1107310486CEB800E47090 /* Info.plist */,
- 5D18A1FE103FE255006CA7C7 /* nightly.webkit.org.public.pem */,
- 5D4DF981097F89FB0083D5E5 /* start.html */,
- 5DB70524097B94CD009875EC /* webkit.icns */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- 29B97323FDCFA39411CA2CEA /* Frameworks */ = {
- isa = PBXGroup;
- children = (
- 1058C7A0FEA54F0111CA2CBB /* Linked Frameworks */,
- );
- name = Frameworks;
- sourceTree = "<group>";
- };
- 5DA88F7D0FC8174E00AB2F62 /* Configurations */ = {
- isa = PBXGroup;
- children = (
- 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */,
- 5DA88F7F0FC8176100AB2F62 /* WebKitLauncher.xcconfig */,
- 5DA88F800FC8176100AB2F62 /* WebKitNightlyEnabler.xcconfig */,
- );
- path = Configurations;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXHeadersBuildPhase section */
- 5D650F3009DB8B280075E9A8 /* Headers */ = {
- isa = PBXHeadersBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D1067640FE63758002A2868 /* WebKitLauncherURLProtocol.h in Headers */,
- 5DA88F7A0FC813EB00AB2F62 /* WebKitNightlyEnabler.h in Headers */,
- 5DA88F6D0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.h in Headers */,
- );
- 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 = (
- 5DE79BCC0F1C62890067BE08 /* PBXTargetDependency */,
- );
- 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 */,
- 5DA892AC0FC8E3A100AB2F62 /* Copy Sparkle in to Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- 5D650F4509DB8B830075E9A8 /* PBXTargetDependency */,
- 5DE79BCA0F1C62850067BE08 /* 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;
- attributes = {
- LastUpgradeCheck = 0420;
- };
- buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "WebKitLauncher" */;
- compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 29B97314FDCFA39411CA2CEA /* WebKit */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8D1107260486CEB800E47090 /* WebKit */,
- 5D650F3309DB8B280075E9A8 /* WebKitNightlyEnabler */,
- 5DE79BC30F1C62450067BE08 /* Extract Sparkle */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- 8D1107290486CEB800E47090 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D18A1FF103FE255006CA7C7 /* nightly.webkit.org.public.pem in Resources */,
- 5D4DF982097F89FB0083D5E5 /* start.html in Resources */,
- 5D41141C0A50A9DE00C84CF0 /* VERSION in Resources */,
- 5DB70525097B94CD009875EC /* webkit.icns in Resources */,
- 5D650F3A09DB8B410075E9A8 /* WebKitNightlyEnabler.dylib in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- 5DA892AC0FC8E3A100AB2F62 /* Copy Sparkle in to Frameworks */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Copy Sparkle in to Frameworks";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "if [[ \"${ENABLE_SPARKLE}\" == \"1\" ]]\nthen\n ditto \"${CONFIGURATION_BUILD_DIR}/Sparkle.framework\" \"${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework\"\n cd \"${CONFIGURATION_BUILD_DIR}/Sparkle.framework/Resources\"\n find . -name '*lproj' -not -name 'en.lproj' -print0 | xargs -0 rm -rf\nelse\n rm -rf \"${CONFIGURATION_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Sparkle.framework\"\nfi\n";
- };
- 5DE79BC20F1C62450067BE08 /* ShellScript */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- "$(SRCROOT)/Sparkle.framework.tar.gz",
- );
- outputPaths = (
- "$(CONFIGURATION_BUILD_DIR)/Sparkle.framework",
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "if [[ \"${ENABLE_SPARKLE}\" == \"1\" ]]\nthen\n tar -C \"${CONFIGURATION_BUILD_DIR}\" -xvzf \"${SRCROOT}/Sparkle.framework.tar.gz\"\n cd \"${CONFIGURATION_BUILD_DIR}/Sparkle.framework/Resources\"\n find . -name '*lproj' -not -name 'en.lproj' -print0 | xargs -0 rm -rf\nelse\n rm -rf \"${CONFIGURATION_BUILD_DIR}/Sparkle.framework\"\nfi\n";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 5D650F3109DB8B280075E9A8 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5D1067650FE63758002A2868 /* WebKitLauncherURLProtocol.m in Sources */,
- 5D650F3609DB8B370075E9A8 /* WebKitNightlyEnabler.m in Sources */,
- 5DA88F6E0FC8136000AB2F62 /* WebKitNightlyEnablerSparkle.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 */;
- };
- 5DE79BCA0F1C62850067BE08 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 5DE79BC30F1C62450067BE08 /* Extract Sparkle */;
- targetProxy = 5DE79BC90F1C62850067BE08 /* PBXContainerItemProxy */;
- };
- 5DE79BCC0F1C62890067BE08 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = 5DE79BC30F1C62450067BE08 /* Extract Sparkle */;
- targetProxy = 5DE79BCB0F1C62890067BE08 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 5D650F3809DB8B370075E9A8 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F800FC8176100AB2F62 /* WebKitNightlyEnabler.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- 5D650F3909DB8B370075E9A8 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F800FC8176100AB2F62 /* WebKitNightlyEnabler.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- 5DE79BC40F1C62450067BE08 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Extract Sparkle";
- };
- name = Debug;
- };
- 5DE79BC50F1C62450067BE08 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Extract Sparkle";
- };
- name = Release;
- };
- C01FCF4B08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F7F0FC8176100AB2F62 /* WebKitLauncher.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- C01FCF4C08A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F7F0FC8176100AB2F62 /* WebKitLauncher.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- C01FCF4F08A954540054247B /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */;
- buildSettings = {
- GCC_OPTIMIZATION_LEVEL = 0;
- ONLY_ACTIVE_ARCH = YES;
- };
- name = Debug;
- };
- C01FCF5008A954540054247B /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = 5DA88F7E0FC8176100AB2F62 /* Base.xcconfig */;
- buildSettings = {
- };
- 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;
- };
- 5DE79BD80F1C629B0067BE08 /* Build configuration list for PBXAggregateTarget "Extract Sparkle" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 5DE79BC40F1C62450067BE08 /* Debug */,
- 5DE79BC50F1C62450067BE08 /* 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/Tools/WebKitLauncher/WebKitLauncherURLProtocol.h b/Tools/WebKitLauncher/WebKitLauncherURLProtocol.h
deleted file mode 100644
index 9159f5d6f..000000000
--- a/Tools/WebKitLauncher/WebKitLauncherURLProtocol.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * 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.
- */
-
-#import <Foundation/Foundation.h>
-
-@interface WebKitLauncherURLProtocol : NSURLProtocol
-{
-
-}
-
-@end
diff --git a/Tools/WebKitLauncher/WebKitLauncherURLProtocol.m b/Tools/WebKitLauncher/WebKitLauncherURLProtocol.m
deleted file mode 100644
index f1a945fd1..000000000
--- a/Tools/WebKitLauncher/WebKitLauncherURLProtocol.m
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * 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.
- */
-
-#import "WebKitLauncherURLProtocol.h"
-#import "WebKitNightlyEnabler.h"
-
-#if ENABLE_SPARKLE
-#import <AppKit/AppKit.h>
-#import <Sparkle/Sparkle.h>
-#endif
-
-@interface NSObject (WKBrowsingContextControllerMethods)
-+ (void)registerSchemeForCustomProtocol:(NSString *)scheme;
-@end
-
-@interface WebKitLauncherURLProtocol (ImplementationDetails)
--(void)handleIsWebKitLauncherAvailableJS;
--(void)handleCheckForUpdates;
--(void)resourceNotFound;
-@end
-
-@implementation WebKitLauncherURLProtocol
-
-+(void)load
-{
- [NSClassFromString(@"WKBrowsingContextController") registerSchemeForCustomProtocol:@"x-webkit-launcher"];
- [NSURLProtocol registerClass:self];
-}
-
-+(BOOL)canInitWithRequest:(NSURLRequest *)request
-{
- if (![[[request URL] scheme] isEqualToString:@"x-webkit-launcher"])
- return NO;
-
- NSURL *mainDocumentURL = [request mainDocumentURL];
- if (!mainDocumentURL)
- return NO;
-
- if ([[mainDocumentURL scheme] isEqualToString:@"file"])
- return YES;
-
- NSString *mainDocumentHost = [mainDocumentURL host];
- if (![mainDocumentHost isEqualToString:@"webkit.org"] && ![mainDocumentHost hasSuffix:@".webkit.org"])
- return NO;
-
- return YES;
-}
-
-+(NSURLRequest *)canonicalRequestForRequest:(NSURLRequest *)request
-{
- return request;
-}
-
--(void)startLoading
-{
- NSURLRequest *request = [self request];
- NSString *resourceSpecifier = [[request URL] resourceSpecifier];
- if ([resourceSpecifier isEqualToString:@"is-x-webkit-launcher-available.js"]) {
- [self handleIsWebKitLauncherAvailableJS];
- return;
- }
- if ([resourceSpecifier isEqualToString:@"webkit-version-information.js"]) {
- [self handleWebKitVersionInformation];
- return;
- }
-#if ENABLE_SPARKLE
- if ([resourceSpecifier isEqualToString:@"check-for-updates"]) {
- [self handleCheckForUpdates];
- return;
- }
-#endif
- [self resourceNotFound];
-}
-
--(void)stopLoading
-{
-}
-
--(void)handleIsWebKitLauncherAvailableJS
-{
- id client = [self client];
- NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[[self request] URL] MIMEType:@"text/javascript" expectedContentLength:0 textEncodingName:@"utf-8"];
- [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
- [response release];
-
- NSData *data = [@"var isWebKitLauncherAvailable = true;" dataUsingEncoding:NSUTF8StringEncoding];
- [client URLProtocol:self didLoadData:data];
- [client URLProtocolDidFinishLoading:self];
-}
-
--(void)handleWebKitVersionInformation
-{
- id client = [self client];
- NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[[self request] URL] MIMEType:@"text/javascript" expectedContentLength:0 textEncodingName:@"utf-8"];
- [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageAllowed];
- [response release];
-
- NSBundle *bundle = webKitLauncherBundle();
- int revision = [[[bundle infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] intValue];
- NSString *branch = [NSString stringWithContentsOfURL:[bundle URLForResource:@"BRANCH" withExtension:nil] encoding:NSUTF8StringEncoding error:0];
- branch = [branch stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
- if (!branch)
- branch = @"trunk";
-
- NSString *script = [NSString stringWithFormat:@"var webKitRevision = %d; var webKitBranch = \"%@\";", revision, branch];
- NSData *data = [script dataUsingEncoding:NSUTF8StringEncoding];
- [client URLProtocol:self didLoadData:data];
- [client URLProtocolDidFinishLoading:self];
-}
-
-#if ENABLE_SPARKLE
--(void)handleCheckForUpdates
-{
- id client = [self client];
- NSURLResponse *response = [[NSURLResponse alloc] initWithURL:[[self request] URL] MIMEType:@"text/plain" expectedContentLength:0 textEncodingName:@"utf-8"];
- [client URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
- [response release];
-
- SUUpdater *updater = [SUUpdater updaterForBundle:webKitLauncherBundle()];
- [updater performSelectorOnMainThread:@selector(checkForUpdates:) withObject:self waitUntilDone:NO];
- [client URLProtocolDidFinishLoading:self];
-}
-#endif
-
--(void)resourceNotFound
-{
- id client = [self client];
- NSDictionary *infoDictionary = [NSDictionary dictionaryWithObject:NSURLErrorFailingURLStringErrorKey forKey:[[self request] URL]];
- NSError *error = [NSError errorWithDomain:NSURLErrorDomain code:NSURLErrorFileDoesNotExist userInfo:infoDictionary];
- [client URLProtocol:self didFailWithError:error];
-}
-
-@end
diff --git a/Tools/WebKitLauncher/WebKitNightlyEnabler.h b/Tools/WebKitLauncher/WebKitNightlyEnabler.h
deleted file mode 100644
index 2fe1444d8..000000000
--- a/Tools/WebKitLauncher/WebKitNightlyEnabler.h
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * 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.
- */
-#ifndef WebKitNightlyEnabler_h
-#define WebKitNightlyEnabler_h
-
-@class NSBundle;
-extern NSBundle *webKitLauncherBundle();
-
-#endif // WebKitNightlyEnabler_h
diff --git a/Tools/WebKitLauncher/WebKitNightlyEnabler.m b/Tools/WebKitLauncher/WebKitNightlyEnabler.m
deleted file mode 100644
index eef0f8c22..000000000
--- a/Tools/WebKitLauncher/WebKitNightlyEnabler.m
+++ /dev/null
@@ -1,236 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 2009 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 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 "WebKitNightlyEnablerSparkle.h"
-
-static void enableWebKitNightlyBehaviour() __attribute__ ((constructor));
-
-static NSString *WKNERunState = @"WKNERunState";
-static NSString *WKNEShouldMonitorShutdowns = @"WKNEShouldMonitorShutdowns";
-
-typedef enum {
- RunStateShutDown,
- RunStateInitializing,
- RunStateRunning
-} WKNERunStates;
-
-static char *webKitAppPath;
-static bool extensionBundlesWereLoaded = NO;
-static NSSet *extensionPaths = nil;
-
-static int32_t systemVersion()
-{
- static SInt32 version = 0;
- if (!version)
- Gestalt(gestaltSystemVersion, &version);
-
- return version;
-}
-
-
-static void myBundleDidLoad(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo)
-{
- 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]) {
- NSLog(@"Extension detected: %@", bundlePath);
- 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);
-
- initializeSparkle();
-}
-
-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];
-}
-
-NSBundle *webKitLauncherBundle()
-{
- NSString *executablePath = [NSString stringWithUTF8String:webKitAppPath];
- NSRange appLocation = [executablePath rangeOfString:@".app/" options:NSBackwardsSearch];
- NSString *appPath = [executablePath substringToIndex:appLocation.location + appLocation.length];
- return [NSBundle bundleWithPath:appPath];
-}
-
-extern char **_CFGetProcessPath() __attribute__((weak));
-extern OSStatus _RegisterApplication(CFDictionaryRef additionalAppInfoRef, ProcessSerialNumber* myPSN) __attribute__((weak));
-
-static void poseAsWebKitApp()
-{
- webKitAppPath = strdup(getenv("WebKitAppPath"));
- if (!webKitAppPath)
- return;
-
- unsetenv("WebKitAppPath");
-
- // Set up the main bundle early so it points at Safari.app
- CFBundleGetMainBundle();
-
- if (systemVersion() < 0x1060) {
- if (!_CFGetProcessPath)
- return;
-
- // 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();
- unsetenv("CFProcessPath");
- } else {
- if (!_RegisterApplication)
- return;
-
- // Register the application with LaunchServices, passing a customized registration dictionary that
- // uses the WebKit launcher as the application bundle.
- NSBundle *bundle = webKitLauncherBundle();
- NSMutableDictionary *checkInDictionary = [[bundle infoDictionary] mutableCopy];
- [checkInDictionary setObject:[bundle bundlePath] forKey:@"LSBundlePath"];
- [checkInDictionary setObject:[checkInDictionary objectForKey:(NSString *)kCFBundleNameKey] forKey:@"LSDisplayName"];
- _RegisterApplication((CFDictionaryRef)checkInDictionary, 0);
- [checkInDictionary release];
- }
-}
-
-static BOOL insideSafari4OnTigerTrampoline()
-{
- // If we're not on Tiger then we can't be in the trampoline state.
- if ((systemVersion() & 0xFFF0) != 0x1040)
- return NO;
-
- // If we're running Safari < 4.0 then we can't be in the trampoline state.
- CFBundleRef safariBundle = CFBundleGetMainBundle();
- CFStringRef safariVersion = CFBundleGetValueForInfoDictionaryKey(safariBundle, CFSTR("CFBundleShortVersionString"));
- if ([(NSString *)safariVersion intValue] < 4)
- return NO;
-
- const char* frameworkPath = getenv("DYLD_FRAMEWORK_PATH");
- if (!frameworkPath)
- frameworkPath = "";
-
- // If the framework search path is empty or otherwise does not contain the Safari
- // framework's Frameworks directory then we are in the trampoline state.
- const char safariFrameworkSearchPath[] = "/System/Library/PrivateFrameworks/Safari.framework/Frameworks";
- return strstr(frameworkPath, safariFrameworkSearchPath) == 0;
-}
-
-static void enableWebKitNightlyBehaviour()
-{
- // If we're inside Safari in its trampoline state, it will very shortly relaunch itself.
- // We bail out here so that we'll be called again in the freshly-launched Safari process.
- if (insideSafari4OnTigerTrampoline())
- return;
-
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- 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];
-
- // As of 2008-11 attempting to load Saft would cause a crash on launch, so prevent it from being loaded.
- NSArray *disabledInputManagers = [NSArray arrayWithObjects:@"Saft", nil];
-
- NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
- NSDictionary *defaultPrefs = [NSDictionary dictionaryWithObjectsAndKeys:[NSNumber numberWithBool:RunStateShutDown], WKNERunState,
- [NSNumber numberWithBool:YES], WKNEShouldMonitorShutdowns,
- disabledInputManagers, @"NSDisabledInputManagers", 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);
-
- NSLog(@"WebKit %@ initialized.", [webKitLauncherBundle() objectForInfoDictionaryKey:@"CFBundleShortVersionString"]);
-
- [pool release];
-}
diff --git a/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.h b/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.h
deleted file mode 100644
index 7ff4fefa5..000000000
--- a/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.h
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * 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.
- */
-#ifndef WebKitNightlyEnablerSparkle_h
-#define WebKitNightlyEnablerSparkle_h
-
-extern void initializeSparkle();
-
-#endif // WebKitNightlyEnablerSparkle_h
diff --git a/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.m b/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.m
deleted file mode 100644
index d60407255..000000000
--- a/Tools/WebKitLauncher/WebKitNightlyEnablerSparkle.m
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- * 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 !ENABLE_SPARKLE
-
-void initializeSparkle()
-{
- // No-op.
-}
-
-#else // ENABLE_SPARKLE
-
-#import <Cocoa/Cocoa.h>
-#import <Sparkle/SUUpdater.h>
-#import <objc/objc-runtime.h>
-#import "WebKitNightlyEnabler.h"
-
-// We need to tweak the wording of the prompt to make sense in the context of WebKit and Safari.
-static NSString* updatePermissionPromptDescription(id self, SEL _cmd)
-{
- return @"Should WebKit automatically check for updates? You can always check for updates manually from the Safari menu.";
-}
-
-static NSPanel *updateAlertPanel(id updateItem, id host)
-{
- NSString *hostName = objc_msgSend(host, @selector(name));
- NSPanel *panel = NSGetInformationalAlertPanel([NSString stringWithFormat:@"Would you like to download and install %@ %@ now?", hostName, objc_msgSend(updateItem, @selector(displayVersionString))],
- [NSString stringWithFormat:@"You are currently running %@ %@.", hostName, objc_msgSend(host, @selector(displayVersion))],
- @"Install Update", @"Skip This Version", @"Remind Me Later");
- NSArray *subviews = [[panel contentView] subviews];
- NSEnumerator *e = [subviews objectEnumerator];
- NSView *view;
- while ((view = [e nextObject])) {
- if (![view isKindOfClass:[NSButton class]])
- continue;
-
- NSButton *button = (NSButton *)view;
- [button setAction:@selector(webKitHandleButtonPress:)];
- if ([button tag] == NSAlertOtherReturn)
- [button setKeyEquivalent:@"\033"];
- }
- [panel center];
- return panel;
-}
-
-// Sparkle's udpate alert panel looks odd with the release notes hidden, so we
-// swap it out with a standard NSAlert-style panel instead.
-static id updateAlertInitForAlertPanel(id self, SEL _cmd, id updateItem, id host)
-{
- NSPanel *panel = updateAlertPanel(updateItem, host);
- [panel setDelegate:self];
-
- self = [self initWithWindow:panel];
- if (!self)
- return nil;
-
- [updateItem retain];
- [host retain];
-
- object_setInstanceVariable(self, "updateItem", (void*)updateItem);
- object_setInstanceVariable(self, "host", (void*)host);
-
- [self setShouldCascadeWindows:NO];
-
- return self;
-}
-
-@implementation NSAlert (WebKitLauncherExtensions)
-
-- (void)webKitHandleButtonPress:(id)sender
-{
- // We rely on the fact that NSAlertOtherReturn == -1, NSAlertAlternateReturn == 0 and NSAlertDefaultReturn == 1
- // to map the button tag to the corresponding selector
- SEL selectors[] = { @selector(remindMeLater:), @selector(skipThisVersion:), @selector(installUpdate:) };
- SEL selector = selectors[[sender tag] + 1];
-
- id delegate = [[sender window] delegate];
- objc_msgSend(delegate, selector, sender);
-}
-
-@end
-
-static NSString *userAgentStringForSparkle()
-{
- NSBundle *safariBundle = [NSBundle mainBundle];
- NSString *safariVersion = [[safariBundle localizedInfoDictionary] valueForKey:@"CFBundleShortVersionString"];
- NSString *safariBuild = [[[safariBundle infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] substringFromIndex:1];
- NSString *webKitRevision = [[webKitLauncherBundle() infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey];
- NSString *applicationName = [NSString stringWithFormat:@"Version/%@ Safari/%@ WebKitRevision/%@", safariVersion, safariBuild, webKitRevision];
- Class WebView = objc_lookUpClass("WebView");
- return objc_msgSend(WebView, @selector(_standardUserAgentWithApplicationName:), applicationName);
-}
-
-void initializeSparkle()
-{
- // Override some Sparkle behaviour
- Method methodToPatch = class_getInstanceMethod(objc_getRequiredClass("SUUpdatePermissionPrompt"), @selector(promptDescription));
- method_setImplementation(methodToPatch, (IMP)updatePermissionPromptDescription);
-
- methodToPatch = class_getInstanceMethod(objc_getRequiredClass("SUUpdateAlert"), @selector(initWithAppcastItem:host:));
- method_setImplementation(methodToPatch, (IMP)updateAlertInitForAlertPanel);
-
- SUUpdater *updater = [SUUpdater updaterForBundle:webKitLauncherBundle()];
- [updater setUserAgentString:userAgentStringForSparkle()];
-
- // Find the first separator on the Safari menu…
- NSMenu *applicationSubmenu = [[[NSApp mainMenu] itemAtIndex:0] submenu];
- int i = 0;
- for (; i < [applicationSubmenu numberOfItems]; i++) {
- if ([[applicationSubmenu itemAtIndex:i] isSeparatorItem])
- break;
- }
-
- // … and insert a menu item that can be used to manually trigger update checks.
- NSMenuItem *updateMenuItem = [[NSMenuItem alloc] initWithTitle:@"Check for WebKit Updates…" action:@selector(checkForUpdates:) keyEquivalent:@""];
- [updateMenuItem setTarget:updater];
- [applicationSubmenu insertItem:updateMenuItem atIndex:i];
- [updateMenuItem release];
-}
-
-#endif // ENABLE_SPARKLE
diff --git a/Tools/WebKitLauncher/main.m b/Tools/WebKitLauncher/main.m
deleted file mode 100644
index 45e4a0d74..000000000
--- a/Tools/WebKitLauncher/main.m
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * Copyright (C) 2006, 2007, 2008, 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.
- * 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.
- */
-
-#import <Cocoa/Cocoa.h>
-#import <CoreFoundation/CoreFoundation.h>
-
-// We need to weak-import posix_spawn and friends as they're not available on Tiger.
-// The BSD-level system headers do not have availability macros, so we redeclare the
-// functions ourselves with the "weak" attribute.
-
-#define WEAK_IMPORT __attribute__((weak))
-
-#define POSIX_SPAWN_SETEXEC 0x0040
-typedef void *posix_spawnattr_t;
-typedef void *posix_spawn_file_actions_t;
-int posix_spawnattr_init(posix_spawnattr_t *) WEAK_IMPORT;
-int posix_spawn(pid_t * __restrict, const char * __restrict, const posix_spawn_file_actions_t *, const posix_spawnattr_t * __restrict, char *const __argv[ __restrict], char *const __envp[ __restrict]) WEAK_IMPORT;
-int posix_spawnattr_setbinpref_np(posix_spawnattr_t * __restrict, size_t, cpu_type_t *__restrict, size_t *__restrict) WEAK_IMPORT;
-int posix_spawnattr_setflags(posix_spawnattr_t *, short) WEAK_IMPORT;
-
-
-static void displayErrorAndQuit(NSString *title, NSString *message)
-{
- NSApplicationLoad();
- NSRunCriticalAlertPanel(title, message, @"Quit", nil, nil);
- exit(0);
-}
-
-static int getLastVersionShown()
-{
- [[NSUserDefaults standardUserDefaults] registerDefaults:[NSDictionary dictionaryWithObject:@"-1" forKey:@"StartPageShownInVersion"]];
- return [[NSUserDefaults standardUserDefaults] integerForKey:@"StartPageShownInVersion"];
-}
-
-static void saveLastVersionShown(int lastVersion)
-{
- [[NSUserDefaults standardUserDefaults] setInteger:lastVersion forKey:@"StartPageShownInVersion"];
- [[NSUserDefaults standardUserDefaults] synchronize];
-}
-
-static NSString *getPathForStartPage()
-{
- return [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"start.html"];
-}
-
-static int getCurrentVersion()
-{
- return [[[[NSBundle mainBundle] infoDictionary] valueForKey:(NSString *)kCFBundleVersionKey] intValue];
-}
-
-static int getShowStartPageVersion()
-{
- return getCurrentVersion() + 1;
-}
-
-static BOOL startPageDisabled()
-{
- return [[NSUserDefaults standardUserDefaults] boolForKey:@"StartPageDisabled"];
-}
-
-static void addStartPageToArgumentsIfNeeded(NSMutableArray *arguments)
-{
- if (startPageDisabled())
- return;
-
- if (getLastVersionShown() < getShowStartPageVersion()) {
- saveLastVersionShown(getCurrentVersion());
- NSString *startPagePath = getPathForStartPage();
- if (startPagePath)
- [arguments addObject:startPagePath];
- }
-}
-
-static cpu_type_t preferredArchitecture()
-{
-#if defined(__ppc__)
- return CPU_TYPE_POWERPC;
-#elif defined(__LP64__)
- return CPU_TYPE_X86_64;
-#else
- return CPU_TYPE_X86;
-#endif
-}
-
-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];
-
- if (posix_spawnattr_init && posix_spawn && posix_spawnattr_setbinpref_np && posix_spawnattr_setflags) {
- posix_spawnattr_t attr;
- posix_spawnattr_init(&attr);
- cpu_type_t architecturePreference[] = { preferredArchitecture(), CPU_TYPE_X86 };
- posix_spawnattr_setbinpref_np(&attr, 2, architecturePreference, 0);
- short flags = POSIX_SPAWN_SETEXEC;
- posix_spawnattr_setflags(&attr, flags);
- posix_spawn(NULL, [executable fileSystemRepresentation], NULL, &attr, argv, env);
- } else
- execve([executable fileSystemRepresentation], argv, env);
-}
-
-static 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;
-}
-
-static NSString *determineExecutablePath(NSBundle *bundle)
-{
- NSString *safariExecutablePath = [bundle executablePath];
-
- NSString *safariForWebKitDevelopmentExecutablePath = [bundle pathForAuxiliaryExecutable:@"SafariForWebKitDevelopment"];
- if (![[NSFileManager defaultManager] fileExistsAtPath:safariForWebKitDevelopmentExecutablePath])
- return safariExecutablePath;
-
- SecStaticCodeRef staticCode;
- if (SecStaticCodeCreateWithPath((CFURLRef)[bundle executableURL], kSecCSDefaultFlags, &staticCode) != noErr)
- return [bundle executablePath];
-
- NSDictionary *codeInformation;
- if (SecCodeCopySigningInformation(staticCode, kSecCSRequirementInformation, (CFDictionaryRef*)&codeInformation) != noErr) {
- CFRelease(staticCode);
- return safariExecutablePath;
- }
- CFRelease(staticCode);
- [codeInformation autorelease];
-
- if ([codeInformation objectForKey:(id)kSecCodeInfoEntitlements])
- return safariForWebKitDevelopmentExecutablePath;
-
- return safariExecutablePath;
-}
-
-static NSString *currentMacOSXVersion()
-{
- SInt32 version;
- if (Gestalt(gestaltSystemVersion, &version) != noErr)
- return @"10.4";
-
- return [NSString stringWithFormat:@"%lx.%lx", (long)(version & 0xFF00) >> 8, (long)(version & 0x00F0) >> 4l];
-}
-
-static NSString *fallbackMacOSXVersion(NSString *systemVersion)
-{
- NSDictionary *fallbackVersionMap = [[NSUserDefaults standardUserDefaults] dictionaryForKey:@"FallbackSystemVersions"];
- if (!fallbackVersionMap)
- return nil;
- NSString *fallbackSystemVersion = [fallbackVersionMap objectForKey:systemVersion];
- if (!fallbackSystemVersion || ![fallbackSystemVersion isKindOfClass:[NSString class]])
- return nil;
- return fallbackSystemVersion;
-}
-
-static BOOL checkFrameworkPath(NSString *frameworkPath)
-{
- BOOL isDirectory = NO;
- return [[NSFileManager defaultManager] fileExistsAtPath:frameworkPath isDirectory:&isDirectory] && isDirectory;
-}
-
-static BOOL checkSafariVersion(NSBundle *safariBundle)
-{
- NSString *safariBundleVersion = [[safariBundle infoDictionary] objectForKey:(NSString *)kCFBundleVersionKey];
- NSString *majorComponent = [[safariBundleVersion componentsSeparatedByString:@"."] objectAtIndex:0];
- NSString *majorVersion = [majorComponent substringFromIndex:[majorComponent length] - 3];
- return [majorVersion intValue] >= 530;
-}
-
-int main(int argc, char *argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
-
- NSString *systemVersion = currentMacOSXVersion();
- NSString *frameworkPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:systemVersion];
-
- BOOL frameworkPathIsUsable = checkFrameworkPath(frameworkPath);
-
- if (!frameworkPathIsUsable) {
- NSString *fallbackSystemVersion = fallbackMacOSXVersion(systemVersion);
- if (fallbackSystemVersion) {
- frameworkPath = [[[NSBundle mainBundle] privateFrameworksPath] stringByAppendingPathComponent:fallbackSystemVersion];
- frameworkPathIsUsable = checkFrameworkPath(frameworkPath);
- }
- }
-
- if (!frameworkPathIsUsable)
- displayErrorAndQuit([NSString stringWithFormat:@"OS X %@ is not supported", systemVersion],
- [NSString stringWithFormat:@"Nightly builds of WebKit are not supported on OS X %@ at this time.", systemVersion]);
-
- NSString *pathToEnablerLib = [[NSBundle mainBundle] pathForResource:@"WebKitNightlyEnabler" ofType:@"dylib"];
-
- NSBundle *safariBundle = locateSafariBundle();
- NSString *executablePath = determineExecutablePath(safariBundle);
-
- if (!checkSafariVersion(safariBundle)) {
- NSString *safariVersion = [[safariBundle localizedInfoDictionary] objectForKey:@"CFBundleShortVersionString"];
- displayErrorAndQuit([NSString stringWithFormat:@"Safari %@ is not supported", safariVersion],
- [NSString stringWithFormat:@"Nightly builds of WebKit are not supported with Safari %@ at this time. Please update to a newer version of Safari.", safariVersion]);
- }
-
- 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 arrayWithObject:executablePath];
- NSMutableDictionary *environment = [[[NSDictionary dictionaryWithObjectsAndKeys:frameworkPath, @"DYLD_FRAMEWORK_PATH", @"YES", @"WEBKIT_UNSET_DYLD_FRAMEWORK_PATH",
- pathToEnablerLib, @"DYLD_INSERT_LIBRARIES", [[NSBundle mainBundle] executablePath], @"WebKitAppPath", nil] mutableCopy] autorelease];
- [environment addEntriesFromDictionary:[[NSProcessInfo processInfo] environment]];
- 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/Tools/WebKitLauncher/nightly.webkit.org.public.pem b/Tools/WebKitLauncher/nightly.webkit.org.public.pem
deleted file mode 100644
index 174c1e46c..000000000
--- a/Tools/WebKitLauncher/nightly.webkit.org.public.pem
+++ /dev/null
@@ -1,20 +0,0 @@
------BEGIN PUBLIC KEY-----
-MIIDOjCCAi0GByqGSM44BAEwggIgAoIBAQCkQLoVjuu3dPn1dO8N6xIFf4riPVuJ
-XOVpx+QlFMno+qzqGJcJxqhfqZhIRwLq62eHpeuYKIuuPG8fqXY/hquHQIjrtEFZ
-euCW8cxqC7iBg3PlX6RsKUXHD+WY82HJ5Hdkd+5G3jD9qO+Ka7RXgOnL7fTRcbkW
-rtBjL7lVAlMBSVG54+zvti/h1CmdfpO83JAnoGl8c+WGgKlwt5nR7jxp4PgBdAw2
-aJt+UqrMkZOr4Npik1a8IzW+KTlBn96DbF5M6PP6Uh9TblnYtt0ic/Vnr6MKS60X
-WNCb/2/HFjQYaINYtJfXpBaGUMZ0dsAyMxn/Sf1vApmVWh2t0TRMgI4JAhUAtL7E
-pauM+spqaZnAxcMNMP0uFaECggEAe1lF6yZHJh89QdPQvmwROKFHOXYvEX5/IFRw
-pFJDdJJdw53nS/yXWKy8o/wBqESzeVCbktYRqQE84ApO/KJs4KdwiL2LU32FiMD0
-c4UCkRf/RxSLxE4/FGKQzTaBB5TGMfuNLn6C/4aoNXnxcB399QxKF2slBp1GQgsC
-6/4KZZYN+kxGxqAfA1UqrleVtv9OwmaCJwMYYqq20zxYhryuBjTSAD+VN6ncerUf
-IxUceX83mWriBMtXHHR0x12WUDfnFQZg583MeMguFc8qESqZX7mWtzSnblsGmez3
-pD028APHFWJSdruT2YI1NJf08S7A9GLdkLRaUNQTABygANviQwOCAQUAAoIBAGDn
-SFRJ3o/wKBm1PwQyaMfE8dtFt1NVOqTA2/VL3CVfqPV6tizRSvto45HSBn96R6nC
-cxZCi3knJy/9V9ITtlCw1UtqeYOW7sp0PRAgct93XuzlMpOFQr5Q8jydvqMEymOD
-c55QE2vbSgHYbQH362uNXsyMWN1xRVSlT13MBi+fmZ86Z5CkRWvIPWg2NRO16bnx
-jK6l0LGvBKiU79HIrH7DlEfX0zVJBYi6NnJqvFSDeoKyiOMWaCAquWDgu00k3NOl
-gndPnl+mVzEEgNvvN0H6KGVTf55H7KR1LqtWFWCw0VXy5oFgRB359hrLvxe91U4M
-iN3jD7YxuENTOTefu9c=
------END PUBLIC KEY-----
diff --git a/Tools/WebKitLauncher/start.html b/Tools/WebKitLauncher/start.html
deleted file mode 100644
index bdb593e74..000000000
--- a/Tools/WebKitLauncher/start.html
+++ /dev/null
@@ -1,17 +0,0 @@
-<html>
- <head>
- <title>Loading WebKit...</title>
- <meta http-equiv="refresh" content="1;URL=http://nightly.webkit.org/start/">
- <script type="text/javascript">
- var script = document.createElement('script');
- script.src = "x-webkit-launcher:webkit-version-information.js";
- script.onload = function() {
- if (webKitBranch && webKitRevision)
- document.location = "http://nightly.webkit.org/start/" + webKitBranch + "/" + webKitRevision;
- }
- document.documentElement.appendChild(script);
- </script>
- </head>
- <body>
- </body>
-</html>
diff --git a/Tools/WebKitLauncher/webkit.icns b/Tools/WebKitLauncher/webkit.icns
deleted file mode 100644
index b1e1017d0..000000000
--- a/Tools/WebKitLauncher/webkit.icns
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/CMakeLists.txt b/Tools/WebKitTestRunner/CMakeLists.txt
index 07b647b80..b81377a6d 100644
--- a/Tools/WebKitTestRunner/CMakeLists.txt
+++ b/Tools/WebKitTestRunner/CMakeLists.txt
@@ -1,16 +1,24 @@
set(WEBKIT_TESTRUNNER_DIR "${TOOLS_DIR}/WebKitTestRunner")
set(WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR "${TOOLS_DIR}/WebKitTestRunner/InjectedBundle")
+set(WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR "${TOOLS_DIR}/WebKitTestRunner/UIScriptContext")
file(MAKE_DIRECTORY ${DERIVED_SOURCES_DIR}/InjectedBundle)
+file(MAKE_DIRECTORY ${DERIVED_SOURCES_DIR}/UIScriptContext)
set(WebKitTestRunner_SOURCES
${WEBKIT_TESTRUNNER_DIR}/CyclicRedundancyCheck.cpp
${WEBKIT_TESTRUNNER_DIR}/GeolocationProviderMock.cpp
+ ${WEBKIT_TESTRUNNER_DIR}/Options.cpp
${WEBKIT_TESTRUNNER_DIR}/PixelDumpSupport.cpp
${WEBKIT_TESTRUNNER_DIR}/TestController.cpp
${WEBKIT_TESTRUNNER_DIR}/TestInvocation.cpp
+ ${WEBKIT_TESTRUNNER_DIR}/TestOptions.cpp
${WEBKIT_TESTRUNNER_DIR}/WebNotificationProvider.cpp
${WEBKIT_TESTRUNNER_DIR}/WorkQueueManager.cpp
+ ${WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR}/UIScriptContext.cpp
+ ${WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR}/UIScriptController.cpp
+
+ ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings/JSWrapper.cpp
)
set(WebKitTestRunner_LIBRARIES
@@ -24,8 +32,12 @@ set(WebKitTestRunner_INCLUDE_DIRECTORIES
${WEBKIT_TESTRUNNER_DIR}
${WEBKIT_TESTRUNNER_DIR}/InjectedBundle
${WEBKIT_TESTRUNNER_DIR}/InjectedBundle/Bindings
+ ${WEBKIT_TESTRUNNER_DIR}/InjectedBundle/atk
+ ${WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR}
+ ${WEBKIT_TESTRUNNER_UISCRIPTCONTEXT_DIR}/Bindings
${JAVASCRIPTCORE_DIR}
${JAVASCRIPTCORE_DIR}/ForwardingHeaders
+ ${DERIVED_SOURCES_JAVASCRIPTCORE_DIR}
${WEBCORE_DIR}/editing
${WEBCORE_DIR}/platform
${WEBCORE_DIR}/platform/graphics
@@ -34,21 +46,22 @@ set(WebKitTestRunner_INCLUDE_DIRECTORIES
${WEBCORE_DIR}/platform/network
${WEBCORE_DIR}/platform/text
${WEBCORE_DIR}/testing/js
+ ${WEBKIT2_DIR}/Platform/IPC
${WEBKIT2_DIR}/Shared
${WEBKIT2_DIR}/Shared/API/c
${WEBKIT2_DIR}/Shared/Plugins
${WEBKIT2_DIR}/UIProcess
- ${WEBKIT2_DIR}/UIProcess/API/C/efl
${WEBKIT2_DIR}/UIProcess/API/C/soup
${WEBKIT2_DIR}/WebProcess/InjectedBundle
${WEBKIT2_DIR}/WebProcess/InjectedBundle/API/c
${WTF_DIR}
- ${DERIVED_SOURCES_WEBCORE_DIR}
- ${DERIVED_SOURCES_WEBCORE_DIR}/include
- ${DERIVED_SOURCES_WEBKIT2_DIR}/include
${DERIVED_SOURCES_DIR}/InjectedBundle
+ ${DERIVED_SOURCES_DIR}/UIScriptContext
${CMAKE_BINARY_DIR}
${CMAKE_SOURCE_DIR}/Source
+)
+
+set(WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES
${LIBSOUP_INCLUDE_DIRS}
)
@@ -79,14 +92,8 @@ set(WebKitTestRunnerInjectedBundle_IDL_FILES
"${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings/TextInputController.idl"
)
-set(WebKitTestRunnerInjectedBundle_LIBRARIES
- ${WebKitTestRunner_LIBRARIES}
- ${ATK_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${ECORE_FILE_LIBRARIES}
- ${FONTCONFIG_LIBRARIES}
- ${GLIB_LIBRARIES}
- ${GLIB_GOBJECT_LIBRARIES}
+set(WebKitTestRunner_IDL_FILES
+ "${WEBKIT_TESTRUNNER_DIR}/UIScriptContext/Bindings/UIScriptController.idl"
)
GENERATE_BINDINGS(WebKitTestRunnerInjectedBundle_SOURCES
@@ -94,18 +101,26 @@ GENERATE_BINDINGS(WebKitTestRunnerInjectedBundle_SOURCES
"${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings"
"--include=${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings"
"${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}"
- ${DERIVED_SOURCES_DIR}/InjectedBundle JS TestRunner
+ ${DERIVED_SOURCES_DIR}/InjectedBundle JS TestRunner cpp
+ ${WEBCORE_DIR}/bindings/scripts/IDLAttributes.txt)
+
+GENERATE_BINDINGS(WebKitTestRunner_SOURCES
+ "${WebKitTestRunner_IDL_FILES}"
+ "${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings"
+ "--include=${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/Bindings"
+ "${FEATURE_DEFINES_WITH_SPACE_SEPARATOR}"
+ ${DERIVED_SOURCES_DIR}/UIScriptContext JS TestRunner cpp
${WEBCORE_DIR}/bindings/scripts/IDLAttributes.txt)
-INCLUDE_IF_EXISTS(${WEBKIT_TESTRUNNER_DIR}/Platform${PORT}.cmake)
+WEBKIT_INCLUDE_CONFIG_FILES_IF_EXISTS()
include_directories(${WebKitTestRunner_INCLUDE_DIRECTORIES})
+include_directories(SYSTEM ${WebKitTestRunner_SYSTEM_INCLUDE_DIRECTORIES})
add_library(TestRunnerInjectedBundle SHARED ${WebKitTestRunnerInjectedBundle_SOURCES})
-target_link_libraries(TestRunnerInjectedBundle ${WebKitTestRunnerInjectedBundle_LIBRARIES})
+target_link_libraries(TestRunnerInjectedBundle ${WebKitTestRunner_LIBRARIES})
add_executable(WebKitTestRunner ${WebKitTestRunner_SOURCES})
target_link_libraries(WebKitTestRunner ${WebKitTestRunner_LIBRARIES})
add_dependencies(WebKit2 ${ForwardingHeadersForWebKitTestRunner_NAME})
-add_dependencies(WebKit2 ${ForwardingNetworkHeadersForWebKitTestRunner_NAME})
diff --git a/Tools/WebKitTestRunner/Configurations/Base.xcconfig b/Tools/WebKitTestRunner/Configurations/Base.xcconfig
deleted file mode 100644
index ef87ffe66..000000000
--- a/Tools/WebKitTestRunner/Configurations/Base.xcconfig
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright (C) 2010 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.
-
-CLANG_CXX_LANGUAGE_STANDARD = gnu++0x;
-CLANG_CXX_LIBRARY = libc++;
-CLANG_WARN_CXX0X_EXTENSIONS = NO;
-HEADER_SEARCH_PATHS = $(BUILT_PRODUCTS_DIR)/usr/local/include $(WEBCORE_PRIVATE_HEADERS_DIR)/ForwardingHeaders ${SRCROOT}/../../Source/JavaScriptCore/icu $(NEXT_ROOT)/usr/local/include/WebCoreTestSupport;
-FRAMEWORK_SEARCH_PATHS = $(SYSTEM_LIBRARY_DIR)/Frameworks/Quartz.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/ApplicationServices.framework/Frameworks $(SYSTEM_LIBRARY_DIR)/Frameworks/CoreServices.framework/Frameworks;
-GCC_PREPROCESSOR_DEFINITIONS = $(DEBUG_DEFINES) ENABLE_DASHBOARD_SUPPORT WEBKIT_VERSION_MIN_REQUIRED=WEBKIT_VERSION_LATEST;
-DEBUG_INFORMATION_FORMAT = dwarf-with-dsym;
-PREBINDING = NO
-GCC_C_LANGUAGE_STANDARD = gnu99
-GCC_ENABLE_CPP_EXCEPTIONS = NO;
-GCC_ENABLE_CPP_RTTI = NO;
-GCC_PRECOMPILE_PREFIX_HEADER = YES
-GCC_TREAT_WARNINGS_AS_ERRORS = YES
-GCC_VERSION = com.apple.compilers.llvm.clang.1_0;
-GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO
-GCC_WARN_UNUSED_FUNCTION = YES
-GCC_WARN_UNUSED_VARIABLE = YES
-WARNING_CFLAGS = -Wall -W -Wno-unused-parameter -Wundef
-LINKER_DISPLAYS_MANGLED_NAMES = YES;
-VALID_ARCHS = i386 x86_64;
-GCC_PREFIX_HEADER = WebKitTestRunnerPrefix.h
-
-DEBUG_DEFINES_debug = ;
-DEBUG_DEFINES_normal = NDEBUG;
-DEBUG_DEFINES = $(DEBUG_DEFINES_$(CURRENT_VARIANT));
-
-TARGET_MAC_OS_X_VERSION_MAJOR = $(MAC_OS_X_VERSION_MAJOR);
-
-TARGETING_SAME_OS_X_VERSION = $(TARGETING_SAME_OS_X_VERSION_$(MAC_OS_X_VERSION_MAJOR)_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-TARGETING_SAME_OS_X_VERSION_1070_1070 = YES;
-TARGETING_SAME_OS_X_VERSION_1080_1080 = YES;
-TARGETING_SAME_OS_X_VERSION_1090_1090 = YES;
-
-// Don't build against an SDK unless we're targeting an older OS version.
-SDKROOT = $(SDKROOT_TARGETING_SAME_OS_X_VERSION_$(TARGETING_SAME_OS_X_VERSION));
-SDKROOT_TARGETING_SAME_OS_X_VERSION_ = macosx;
-
-WEBKIT_UMBRELLA_FRAMEWORKS_DIR = $(NEXT_ROOT)$(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Frameworks;
-WEBCORE_PRIVATE_HEADERS_DIR = $(WEBKIT_UMBRELLA_FRAMEWORKS_DIR)/WebCore.framework/PrivateHeaders;
-
-WEBKIT_SYSTEM_INTERFACE_LIBRARY = WebKitSystemInterface
diff --git a/Tools/WebKitTestRunner/Configurations/DebugRelease.xcconfig b/Tools/WebKitTestRunner/Configurations/DebugRelease.xcconfig
deleted file mode 100644
index 5b97d1272..000000000
--- a/Tools/WebKitTestRunner/Configurations/DebugRelease.xcconfig
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright (C) 2010 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 "Base.xcconfig"
-
-ARCHS = $(ARCHS_STANDARD_32_64_BIT);
-
-ONLY_ACTIVE_ARCH = YES;
-
-MACOSX_DEPLOYMENT_TARGET = $(MACOSX_DEPLOYMENT_TARGET_$(TARGET_MAC_OS_X_VERSION_MAJOR))
-MACOSX_DEPLOYMENT_TARGET_1070 = 10.7;
-MACOSX_DEPLOYMENT_TARGET_1080 = 10.8;
-MACOSX_DEPLOYMENT_TARGET_1090 = 10.9;
-
-WEBKIT_UMBRELLA_FRAMEWORKS_DIR = $(BUILT_PRODUCTS_DIR);
-
-WEBKIT_SYSTEM_INTERFACE_LIBRARY = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_$(PLATFORM_NAME));
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphoneos = WebKitSystemInterface;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphonesimulator = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_iphoneos);
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx = $(WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_$(TARGET_MAC_OS_X_VERSION_MAJOR));
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1070 = WebKitSystemInterfaceLion;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1080 = WebKitSystemInterfaceMountainLion;
-WEBKIT_SYSTEM_INTERFACE_LIBRARY_macosx_1090 = WebKitSystemInterfaceMountainLion;
diff --git a/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig b/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig
deleted file mode 100644
index 4235ead85..000000000
--- a/Tools/WebKitTestRunner/Configurations/InjectedBundle.xcconfig
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright (C) 2010, 2011 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.
-
-LD_RUNPATH_SEARCH_PATHS = "@loader_path/../../..";
-PRODUCT_NAME = WebKitTestRunnerInjectedBundle;
-
-INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Resources;
-SKIP_INSTALL = NO;
-OTHER_LDFLAGS = -l$(WEBKIT_SYSTEM_INTERFACE_LIBRARY)
diff --git a/Tools/WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops b/Tools/WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops
deleted file mode 100644
index 3f8dcf2f7..000000000
--- a/Tools/WebKitTestRunner/Configurations/InjectedBundleCFLite.vsprops
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleCFLite"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebCoreTestSupport$(WebKitDLLConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CFLite$(LibraryConfigSuffix).lib"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).dll"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops b/Tools/WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops
deleted file mode 100644
index bc117382a..000000000
--- a/Tools/WebKitTestRunner/Configurations/InjectedBundleCommon.vsprops
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleCommon"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)\..&quot;;&quot;$(ProjectDir)\..\InjectedBundle\&quot;;&quot;$(ProjectDir)\..\InjectedBundle\Bindings&quot;;&quot;$(ConfigurationBuildDir)\Include&quot;;&quot;$(ConfigurationBuildDir)\Include\private&quot;;&quot;$(ConfigurationBuildDir)\Include\private\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(ConfigurationBuildDir)\include\WebCoreTestSupport&quot;;&quot;$(WebKitLibrariesDir)\include&quot;;&quot;$(ConfigurationBuildDir)\obj\InjectedBundle\DerivedSources\&quot;"
- ForcedIncludeFiles="WebKitTestRunnerPrefix.h"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops b/Tools/WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops
deleted file mode 100644
index 5e74eb4ca..000000000
--- a/Tools/WebKitTestRunner/Configurations/InjectedBundleCoreFoundation.vsprops
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleCoreFoundation"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebCoreTestSupport$(WebKitDLLConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib CoreFoundation$(LibraryConfigSuffix).lib"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).dll"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig b/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig
deleted file mode 100644
index 01e9413ce..000000000
--- a/Tools/WebKitTestRunner/Configurations/WebKitTestRunner.xcconfig
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright (C) 2010, 2011 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.
-
-PRODUCT_NAME = WebKitTestRunner
-GCC_ENABLE_OBJC_EXCEPTIONS = YES
-
-INSTALL_PATH = $(SYSTEM_LIBRARY_DIR)/Frameworks/WebKit.framework/Versions/A/Resources;
-SKIP_INSTALL = NO;
diff --git a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops b/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops
deleted file mode 100644
index 6cbd29c6c..000000000
--- a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCFLite.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerCFLite"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CFLite$(LibraryConfigSuffix).lib cairo.lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops b/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops
deleted file mode 100644
index 85017467b..000000000
--- a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCommon.vsprops
+++ /dev/null
@@ -1,21 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerCommon"
- >
- <Tool
- Name="VCCLCompilerTool"
- AdditionalIncludeDirectories="&quot;$(ProjectDir)\..&quot;;&quot;$(ConfigurationBuildDir)\Include&quot;;&quot;$(ConfigurationBuildDir)\Include\private&quot;;&quot;$(ConfigurationBuildDir)\Include\private\JavaScriptCore&quot;;&quot;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders&quot;;&quot;$(WebKitLibrariesDir)\Include&quot;"
- PreprocessorDefinitions="__WIN32__;_CONSOLE"
- DisableSpecificWarnings="4146"
- ForcedIncludeFiles="WebKitTestRunnerPrefix.h"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalOptions="/NXCOMPAT"
- AdditionalDependencies="JavaScriptCore$(WebKitDLLConfigSuffix).lib WebKit$(WebKitDLLConfigSuffix).lib shlwapi.lib"
- OutputFile="$(OutDir)\$(ProjectName)$(WebKitConfigSuffix).dll"
- SubSystem="1"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops b/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops
deleted file mode 100644
index b0d302077..000000000
--- a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreFoundation.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerCoreFoundation"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreFoundation$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops b/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops
deleted file mode 100644
index 3a807c45c..000000000
--- a/Tools/WebKitTestRunner/Configurations/WebKitTestRunnerCoreGraphics.vsprops
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerCoreGraphics"
- >
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="CoreGraphics$(LibraryConfigSuffix).lib"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/DerivedSources.make b/Tools/WebKitTestRunner/DerivedSources.make
index d3f3308c7..fe9a077ba 100644
--- a/Tools/WebKitTestRunner/DerivedSources.make
+++ b/Tools/WebKitTestRunner/DerivedSources.make
@@ -23,9 +23,10 @@
VPATH = \
$(WebKitTestRunner)/InjectedBundle/Bindings \
+ $(WebKitTestRunner)/UIScriptContext/Bindings \
#
-INTERFACES = \
+INJECTED_BUNDLE_INTERFACES = \
AccessibilityController \
AccessibilityTextMarker \
AccessibilityTextMarkerRange \
@@ -36,6 +37,10 @@ INTERFACES = \
TextInputController \
#
+UICONTEXT_INTERFACES = \
+ UIScriptController \
+#
+
SCRIPTS = \
$(WebCoreScripts)/CodeGenerator.pm \
$(WebKitTestRunner)/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm \
@@ -47,9 +52,11 @@ SCRIPTS = \
JS%.h JS%.cpp : %.idl $(SCRIPTS)
@echo Generating bindings for $*...
- @perl -I $(WebCoreScripts) -I $(WebKitTestRunner)/InjectedBundle/Bindings $(WebCoreScripts)/generate-bindings.pl --defines "" --include InjectedBundle/Bindings --outputDir . --generator TestRunner $<
+ @perl -I $(WebCoreScripts) -I $(WebKitTestRunner)/InjectedBundle/Bindings -I $(WebKitTestRunner)/UIScriptContext/Bindings $(WebCoreScripts)/generate-bindings.pl --defines "" --include InjectedBundle/Bindings --include UIScriptContext/Bindings --outputDir . --generator TestRunner $<
all : \
- $(INTERFACES:%=JS%.h) \
- $(INTERFACES:%=JS%.cpp) \
+ $(INJECTED_BUNDLE_INTERFACES:%=JS%.h) \
+ $(INJECTED_BUNDLE_INTERFACES:%=JS%.cpp) \
+ $(UICONTEXT_INTERFACES:%=JS%.h) \
+ $(UICONTEXT_INTERFACES:%=JS%.cpp) \
#
diff --git a/Tools/WebKitTestRunner/DerivedSources.pri b/Tools/WebKitTestRunner/DerivedSources.pri
deleted file mode 100644
index d1e92ad48..000000000
--- a/Tools/WebKitTestRunner/DerivedSources.pri
+++ /dev/null
@@ -1,12 +0,0 @@
-# -------------------------------------------------------------------
-# Derived sources for WebKitTestRunner
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = derived
-
-# Make sure forwarded headers needed by this project are present
-fwheader_generator.commands = perl $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl $${ROOT_WEBKIT_DIR}/Tools/WebKitTestRunner $${ROOT_BUILD_DIR}/Source/include qt
-fwheader_generator.depends = $${ROOT_WEBKIT_DIR}/Source/WebKit2/Scripts/generate-forwarding-headers.pl
-GENERATORS += fwheader_generator
diff --git a/Tools/WebKitTestRunner/EventSenderProxy.h b/Tools/WebKitTestRunner/EventSenderProxy.h
index bb814a8fc..975170c12 100644
--- a/Tools/WebKitTestRunner/EventSenderProxy.h
+++ b/Tools/WebKitTestRunner/EventSenderProxy.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2011, 2014 Apple Inc. All rights reserved.
* Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
*
* Redistribution and use in source and binary forms, with or without
@@ -27,15 +27,24 @@
#ifndef EventSenderProxy_h
#define EventSenderProxy_h
-#if PLATFORM(QT)
-#include <QEvent>
-#include <QTouchEvent>
-#elif PLATFORM(GTK)
-#include <gdk/gdk.h>
#include <wtf/Deque.h>
+#include <wtf/HashMap.h>
+#include <wtf/RetainPtr.h>
+#include <wtf/Vector.h>
+
+#if PLATFORM(GTK)
+#include <WebCore/GUniquePtrGtk.h>
+#include <gdk/gdk.h>
+#include <wtf/HashSet.h>
#elif PLATFORM(EFL)
-#include <WebKit2/EWebKit2.h>
-#include <wtf/Deque.h>
+#include "EWebKit2.h"
+#elif PLATFORM(QT)
+#include <QEvent>
+#include <QTouchEvent>
+#endif
+
+#if PLATFORM(COCOA)
+OBJC_CLASS NSEvent;
#endif
namespace WTR {
@@ -53,10 +62,19 @@ public:
explicit EventSenderProxy(TestController*);
~EventSenderProxy();
+ WKPoint position() const { return m_position; }
+
void mouseDown(unsigned button, WKEventModifiers);
void mouseUp(unsigned button, WKEventModifiers);
+ void mouseForceDown();
+ void mouseForceUp();
+ void mouseForceChanged(float);
+ void mouseForceClick();
+ void startAndCancelMouseForceClick();
void mouseMoveTo(double x, double y);
void mouseScrollBy(int x, int y);
+ void mouseScrollByWithWheelAndMomentumPhases(int x, int y, int phase, int momentum);
+ void swipeGestureWithWheelAndMomentumPhases(int x, int y, int phase, int momentum);
void continuousMouseScrollBy(int x, int y, bool paged);
void leapForward(int milliseconds);
@@ -88,14 +106,25 @@ private:
void replaySavedEvents();
#endif
-#if PLATFORM(QT)
+ void sendMouseDownToStartPressureEvents();
+#if PLATFORM(COCOA)
+ enum class PressureChangeDirection { Increasing, Decreasing };
+ RetainPtr<NSEvent> beginPressureEvent(int stage);
+ RetainPtr<NSEvent> pressureChangeEvent(int stage, PressureChangeDirection);
+ RetainPtr<NSEvent> pressureChangeEvent(int stage, float pressure, PressureChangeDirection);
+#endif
+
+#if PLATFORM(GTK)
+ void sendOrQueueEvent(GdkEvent*);
+ void dispatchEvent(GdkEvent*);
+ GdkEvent* createMouseButtonEvent(GdkEventType, unsigned button, WKEventModifiers);
+ GUniquePtr<GdkEvent> createTouchEvent(GdkEventType, int id);
+ void sendUpdatedTouchEvents();
+#elif PLATFORM(QT)
#if ENABLE(TOUCH_EVENTS)
void sendTouchEvent(QEvent::Type);
#endif
void sendOrQueueEvent(QEvent*);
-#elif PLATFORM(GTK)
- void sendOrQueueEvent(GdkEvent*);
- GdkEvent* createMouseButtonEvent(GdkEventType, unsigned button, WKEventModifiers);
#elif PLATFORM(EFL)
void sendOrQueueEvent(const WTREvent&);
void dispatchEvent(const WTREvent&);
@@ -111,11 +140,13 @@ private:
double m_clickTime;
WKPoint m_clickPosition;
WKEventMouseButton m_clickButton;
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
int eventNumber;
#elif PLATFORM(GTK)
Deque<WTREventQueueItem> m_eventQueue;
unsigned m_mouseButtonCurrentlyDown;
+ Vector<GUniquePtr<GdkEvent>> m_touchEvents;
+ HashSet<int> m_updatedTouchEvents;
#elif PLATFORM(QT)
Qt::MouseButtons m_mouseButtons;
diff --git a/Tools/WebKitTestRunner/FontWithFeatures.otf b/Tools/WebKitTestRunner/FontWithFeatures.otf
new file mode 100644
index 000000000..3e5069995
--- /dev/null
+++ b/Tools/WebKitTestRunner/FontWithFeatures.otf
Binary files differ
diff --git a/Tools/WebKitTestRunner/FontWithFeatures.ttf b/Tools/WebKitTestRunner/FontWithFeatures.ttf
new file mode 100644
index 000000000..42c332a13
--- /dev/null
+++ b/Tools/WebKitTestRunner/FontWithFeatures.ttf
Binary files differ
diff --git a/Tools/WebKitTestRunner/GNUmakefile.am b/Tools/WebKitTestRunner/GNUmakefile.am
deleted file mode 100644
index 8e3888867..000000000
--- a/Tools/WebKitTestRunner/GNUmakefile.am
+++ /dev/null
@@ -1,174 +0,0 @@
-
-stamp-webkittestrunner-forwarding-headers: $(WebKit2)/Scripts/generate-forwarding-headers.pl $(Programs_WebKitTestRunner_SOURCES) $(Libraries_libTestRunnerInjectedBundle_la_SOURCES)
- $(AM_V_GEN)$(PERL) $< $(srcdir)/Tools/WebKitTestRunner $(GENSOURCES_WEBKIT2)/include gtk \
- && echo timestamp > $(@F)
-
-BUILT_SOURCES += $(top_builddir)/stamp-webkittestrunner-forwarding-headers
-
-if ENABLE_WEBKIT2
-noinst_PROGRAMS += \
- Programs/WebKitTestRunner
-endif
-
-Programs_WebKitTestRunner_SOURCES = \
- Tools/WebKitTestRunner/EventSenderProxy.h \
- Tools/WebKitTestRunner/gtk/main.cpp \
- Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp \
- Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp \
- Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp \
- Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp \
- Tools/WebKitTestRunner/CyclicRedundancyCheck.cpp \
- Tools/WebKitTestRunner/CyclicRedundancyCheck.h \
- Tools/WebKitTestRunner/GeolocationProviderMock.cpp \
- Tools/WebKitTestRunner/GeolocationProviderMock.h \
- Tools/WebKitTestRunner/PixelDumpSupport.cpp \
- Tools/WebKitTestRunner/PixelDumpSupport.h \
- Tools/WebKitTestRunner/PlatformWebView.h \
- Tools/WebKitTestRunner/StringFunctions.h \
- Tools/WebKitTestRunner/TestController.cpp \
- Tools/WebKitTestRunner/TestController.h \
- Tools/WebKitTestRunner/TestInvocation.cpp \
- Tools/WebKitTestRunner/TestInvocation.h \
- Tools/WebKitTestRunner/WebNotificationProvider.cpp \
- Tools/WebKitTestRunner/WebNotificationProvider.h \
- Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h \
- Tools/WebKitTestRunner/WorkQueueManager.cpp \
- Tools/WebKitTestRunner/WorkQueueManager.h
-
-Programs_WebKitTestRunner_CPPFLAGS = \
- -include Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h \
- -I$(srcdir)/Tools/WebKitTestRunner \
- -I$(srcdir)/Source/WebCore/platform/gtk \
- -I$(top_builddir)/DerivedSources/WebKit2/include \
- $(global_cppflags) \
- $(javascriptcore_cppflags) \
- $(webcore_cppflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(CAIRO_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-Programs_WebKitTestRunner_CXXFLAGS = $(global_cxxflags)
-Programs_WebKitTestRunner_CFLAGS = $(global_cflags)
-
-Programs_WebKitTestRunner_LDADD = \
- libjavascriptcoregtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \
- $(GLOBALDEPS_LIBS) \
- $(CAIRO_LIBS) \
- $(GTK_LIBS) \
- $(GLIB_LIBS) \
- $(LIBSOUP_LIBS) \
- $(FREETYPE_LIBS) \
- $(WINMM_LIBS) \
- $(XRENDER_LIBS) \
- $(XT_LIBS)
-
-Programs_WebKitTestRunner_LDFLAGS = \
- -no-fast-install \
- -no-install
-
-# The InjectedBundle library allows the render process to load harness code.
-if ENABLE_WEBKIT2
-noinst_LTLIBRARIES += Libraries/libTestRunnerInjectedBundle.la
-endif
-
-webkittestrunner_built_sources += \
- DerivedSources/InjectedBundle/JSAccessibilityController.cpp \
- DerivedSources/InjectedBundle/JSAccessibilityTextMarker.cpp \
- DerivedSources/InjectedBundle/JSAccessibilityTextMarkerRange.cpp \
- DerivedSources/InjectedBundle/JSAccessibilityUIElement.cpp \
- DerivedSources/InjectedBundle/JSEventSendingController.cpp \
- DerivedSources/InjectedBundle/JSGCController.cpp \
- DerivedSources/InjectedBundle/JSTestRunner.cpp \
- DerivedSources/InjectedBundle/JSTextInputController.cpp
-nodist_Libraries_libTestRunnerInjectedBundle_la_SOURCES = $(webkittestrunner_built_sources)
-BUILT_SOURCES += $(webkittestrunner_built_sources)
-
-Libraries_libTestRunnerInjectedBundle_la_SOURCES = \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp \
- Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h \
- Tools/WebKitTestRunner/InjectedBundle/ActivateFonts.h \
- Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp \
- Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp \
- Tools/WebKitTestRunner/InjectedBundle/Bindings/JSWrappable.h \
- Tools/WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.cpp \
- Tools/WebKitTestRunner/InjectedBundle/Bindings/JSWrapper.h \
- Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp \
- Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h \
- Tools/WebKitTestRunner/InjectedBundle/GCController.cpp \
- Tools/WebKitTestRunner/InjectedBundle/GCController.h \
- Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp \
- Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp \
- Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp \
- Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h \
- Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp \
- Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp \
- Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h \
- Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp \
- Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp \
- Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h \
- Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp \
- Tools/WebKitTestRunner/InjectedBundle/TestRunner.h \
- Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp \
- Tools/WebKitTestRunner/InjectedBundle/TextInputController.h
-
-Libraries_libTestRunnerInjectedBundle_la_LIBADD = \
- libWebCoreInternals.la
-
-Libraries_libTestRunnerInjectedBundle_la_LDFLAGS = \
- -rpath ${shell pwd}/$(top_builddir)/../unix/TestNetscapePlugin/.libs \
- $(no_undefined) \
- -avoid-version \
- -module
-
-Libraries_libTestRunnerInjectedBundle_la_CPPFLAGS = \
- -DFONTS_CONF_DIR=\"${shell pwd}/${srcdir}/Tools/DumpRenderTree/gtk/fonts\" \
- -DTOP_LEVEL_DIR=\"${shell pwd}/${srcdir}\" \
- -include Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h \
- -I$(srcdir)/Tools/WebKitTestRunner \
- -I$(srcdir)/Tools/WebKitTestRunner/InjectedBundle \
- -I$(srcdir)/Tools/WebKitTestRunner/InjectedBundle/Bindings \
- -I$(srcdir)/Source/WebCore/testing/js \
- -I$(top_builddir)/DerivedSources/InjectedBundle \
- -I$(top_builddir)/DerivedSources/WebKit2/include \
- $(global_cppflags) \
- $(javascriptcore_cppflags) \
- $(webcore_cppflags) \
- $(GLOBALDEPS_CFLAGS) \
- $(CAIRO_CFLAGS) \
- $(GLIB_CFLAGS) \
- $(GTK_CFLAGS) \
- $(LIBSOUP_CFLAGS)
-Libraries_libTestRunnerInjectedBundle_la_CXXFLAGS = $(global_cxxflags)
-Libraries_libTestRunnerInjectedBundle_la_CFLAGS = $(global_cflags)
-
-code_generation_dependencies = \
- Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm \
- Source/WebCore/bindings/scripts/CodeGenerator.pm \
- Source/WebCore/bindings/scripts/IDLParser.pm \
- Source/WebCore/bindings/scripts/InFilesParser.pm \
- Source/WebCore/bindings/scripts/generate-bindings.pl
-
-DerivedSources/InjectedBundle/JS%.cpp: Tools/WebKitTestRunner/InjectedBundle/Bindings/%.idl $(code_generation_dependencies)
- $(AM_V_GEN)$(PERL) \
- -I $(srcdir)/Source/WebCore/bindings/scripts \
- -I $(srcdir)/Tools/WebKitTestRunner/InjectedBundle/Bindings \
- $(srcdir)/Source/WebCore/bindings/scripts/generate-bindings.pl \
- --defines \"\" --generator TestRunner \
- --include $(srcdir)/Tools/InjectedBundle/Bindings \
- --outputDir $(top_builddir)/DerivedSources/InjectedBundle \
- $<
-
-EXTRA_DIST += \
- $(srcdir)/Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm \
- $(srcdir)/Source/WebCore/bindings/scripts/CodeGenerator.pm \
- $(srcdir)/Source/WebCore/bindings/scripts/IDLParser.pm \
- $(srcdir)/Source/WebCore/bindings/scripts/InFilesParser.pm \
- $(srcdir)/Source/WebCore/bindings/scripts/generate-bindings.pl \
- $(shell ls $(srcdir)/Tools/WebKitTestRunner/InjectedBundle/Bindings/*.idl)
diff --git a/Tools/WebKitTestRunner/GeolocationProviderMock.cpp b/Tools/WebKitTestRunner/GeolocationProviderMock.cpp
index 7111d4872..ad4164966 100644
--- a/Tools/WebKitTestRunner/GeolocationProviderMock.cpp
+++ b/Tools/WebKitTestRunner/GeolocationProviderMock.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2012 Apple Inc. All rights reserved.
+ * Copyright (C) 2012, 2013 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,7 +26,8 @@
#include "config.h"
#include "GeolocationProviderMock.h"
-#include <WebKit2/WKGeolocationManager.h>
+#include <WebKit/WKGeolocationManager.h>
+#include <string.h>
#include <wtf/Assertions.h>
#include <wtf/CurrentTime.h>
@@ -50,12 +51,13 @@ GeolocationProviderMock::GeolocationProviderMock(WKContextRef context)
{
m_geolocationManager = WKContextGetGeolocationManager(context);
- WKGeolocationProvider providerCallback = {
- kWKGeolocationProviderCurrentVersion,
- this,
- startUpdatingCallback,
- stopUpdatingCallback };
- WKGeolocationManagerSetProvider(m_geolocationManager, &providerCallback);
+ WKGeolocationProviderV1 providerCallback;
+ memset(&providerCallback, 0, sizeof(WKGeolocationProviderV1));
+ providerCallback.base.version = 1;
+ providerCallback.base.clientInfo = this;
+ providerCallback.startUpdating = startUpdatingCallback;
+ providerCallback.stopUpdating = stopUpdatingCallback;
+ WKGeolocationManagerSetProvider(m_geolocationManager, &providerCallback.base);
}
GeolocationProviderMock::~GeolocationProviderMock()
diff --git a/Tools/WebKitTestRunner/GeolocationProviderMock.h b/Tools/WebKitTestRunner/GeolocationProviderMock.h
index ff5537e46..802223ec3 100644
--- a/Tools/WebKitTestRunner/GeolocationProviderMock.h
+++ b/Tools/WebKitTestRunner/GeolocationProviderMock.h
@@ -26,7 +26,7 @@
#ifndef GeolocationProviderMock_h
#define GeolocationProviderMock_h
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
namespace WTR {
@@ -41,6 +41,8 @@ public:
void startUpdating(WKGeolocationManagerRef);
void stopUpdating(WKGeolocationManagerRef);
+ bool isActive() const { return m_isActive; }
+
private:
void sendPositionIfNeeded();
void sendErrorIfNeeded();
diff --git a/Tools/WebKitTestRunner/InjectedBundle-Info.plist b/Tools/WebKitTestRunner/InjectedBundle-Info.plist
deleted file mode 100644
index a21fbde5e..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle-Info.plist
+++ /dev/null
@@ -1,22 +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>${EXECUTABLE_NAME}</string>
- <key>CFBundleIdentifier</key>
- <string>com.apple.WebKitTestRunner.InjectedBundle</string>
- <key>CFBundleInfoDictionaryVersion</key>
- <string>6.0</string>
- <key>CFBundlePackageType</key>
- <string>BNDL</string>
- <key>CFBundleShortVersionString</key>
- <string>1.0</string>
- <key>CFBundleSignature</key>
- <string>????</string>
- <key>CFBundleVersion</key>
- <string>1</string>
-</dict>
-</plist>
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp
index 212e99111..8b223fe4c 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.cpp
@@ -32,9 +32,9 @@
#include "JSAccessibilityController.h"
#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace WTR {
@@ -44,14 +44,6 @@ PassRefPtr<AccessibilityController> AccessibilityController::create()
}
AccessibilityController::AccessibilityController()
-#if PLATFORM(GTK) || PLATFORM(EFL)
- : m_stateChangeListenerId(0)
- , m_focusEventListenerId(0)
- , m_activeDescendantChangedListenerId(0)
- , m_childrenChangedListenerId(0)
- , m_propertyChangedListenerId(0)
- , m_visibleDataChangedListenerId(0)
-#endif
{
}
@@ -69,31 +61,31 @@ JSClassRef AccessibilityController::wrapperClass()
return JSAccessibilityController::accessibilityControllerClass();
}
+void AccessibilityController::enableEnhancedAccessibility(bool enable)
+{
+ WKAccessibilityEnableEnhancedAccessibility(enable);
+}
+
+bool AccessibilityController::enhancedAccessibilityEnabled()
+{
+ return WKAccessibilityEnhancedAccessibilityEnabled();
+}
+
#if !PLATFORM(GTK) && !PLATFORM(EFL)
PassRefPtr<AccessibilityUIElement> AccessibilityController::rootElement()
{
- // FIXME: Make this work on Windows.
-#if PLATFORM(WIN)
- return 0;
-#else
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
void* root = WKAccessibilityRootObject(page);
return AccessibilityUIElement::create(static_cast<PlatformUIElement>(root));
-#endif
}
PassRefPtr<AccessibilityUIElement> AccessibilityController::focusedElement()
{
- // FIXME: Make this work on Windows.
-#if PLATFORM(WIN)
- return 0;
-#else
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
void* root = WKAccessibilityFocusedObject(page);
return AccessibilityUIElement::create(static_cast<PlatformUIElement>(root));
-#endif
}
#endif
@@ -105,18 +97,18 @@ PassRefPtr<AccessibilityUIElement> AccessibilityController::elementAtPoint(int x
// Unsupported methods on various platforms.
// As they're implemented on other platforms this list should be modified.
-#if !PLATFORM(MAC)
+#if (!PLATFORM(GTK) && !PLATFORM(COCOA) && !PLATFORM(EFL)) || !HAVE(ACCESSIBILITY)
bool AccessibilityController::addNotificationListener(JSValueRef) { return false; }
bool AccessibilityController::removeNotificationListener() { return false; }
-#endif
-
-#if !PLATFORM(MAC) && !PLATFORM(GTK) && !PLATFORM(EFL)
-PassRefPtr<AccessibilityUIElement> AccessibilityController::accessibleElementById(JSStringRef attribute) { return 0; }
-#endif
-
-#if !PLATFORM(GTK) && !PLATFORM(EFL) && !PLATFORM(MAC)
+PassRefPtr<AccessibilityUIElement> AccessibilityController::accessibleElementById(JSStringRef attribute) { return nullptr; }
void AccessibilityController::logAccessibilityEvents() { }
void AccessibilityController::resetToConsistentState() { }
+JSRetainPtr<JSStringRef> AccessibilityController::platformName() { return JSRetainPtr<JSStringRef>(Adopt, JSStringCreateWithUTF8CString("")); }
+#endif
+
+#if !HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+PassRefPtr<AccessibilityUIElement> AccessibilityController::rootElement() { return nullptr; }
+PassRefPtr<AccessibilityUIElement> AccessibilityController::focusedElement() { return nullptr; }
#endif
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
index 247de3420..e099544a1 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityController.h
@@ -30,8 +30,8 @@
#include "JSWrappable.h"
#include <JavaScriptCore/JSObjectRef.h>
#include <wtf/Platform.h>
-#if PLATFORM(WIN)
-#include <windows.h>
+#if HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+#include "AccessibilityNotificationHandlerAtk.h"
#endif
namespace WTR {
@@ -44,6 +44,12 @@ public:
void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
virtual JSClassRef wrapperClass();
+ // Enhanced accessibility.
+ void enableEnhancedAccessibility(bool);
+ bool enhancedAccessibilityEnabled();
+
+ JSRetainPtr<JSStringRef> platformName();
+
// Controller Methods - platform-independent implementations.
PassRefPtr<AccessibilityUIElement> rootElement();
PassRefPtr<AccessibilityUIElement> focusedElement();
@@ -64,17 +70,12 @@ public:
private:
AccessibilityController();
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA) || PLATFORM(IOS)
RetainPtr<NotificationHandler> m_globalNotificationHandler;
#endif
-#if PLATFORM(GTK) || PLATFORM(EFL)
- unsigned m_stateChangeListenerId;
- unsigned m_focusEventListenerId;
- unsigned m_activeDescendantChangedListenerId;
- unsigned m_childrenChangedListenerId;
- unsigned m_propertyChangedListenerId;
- unsigned m_visibleDataChangedListenerId;
+#if HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+ RefPtr<AccessibilityNotificationHandler> m_globalNotificationHandler;
#endif
};
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp
index a7a4b7def..051114db1 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.cpp
@@ -60,7 +60,7 @@ AccessibilityTextMarker::~AccessibilityTextMarker()
PlatformTextMarker AccessibilityTextMarker::platformTextMarker() const
{
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
return m_textMarker.get();
#else
return m_textMarker;
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h
index c4d4d0481..74341718c 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarker.h
@@ -31,7 +31,7 @@
#include <wtf/PassRefPtr.h>
#include <wtf/Platform.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
typedef CFTypeRef PlatformTextMarker;
#else
@@ -59,14 +59,14 @@ private:
AccessibilityTextMarker(PlatformTextMarker);
AccessibilityTextMarker(const AccessibilityTextMarker&);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
RetainPtr<PlatformTextMarker> m_textMarker;
#else
PlatformTextMarker m_textMarker;
#endif
};
-#if !PLATFORM(MAC)
+#if !PLATFORM(COCOA)
inline bool AccessibilityTextMarker::isEqual(AccessibilityTextMarker*) { return false; }
#endif
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp
index 3613f3728..53d8bfbe8 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.cpp
@@ -60,7 +60,7 @@ AccessibilityTextMarkerRange::~AccessibilityTextMarkerRange()
PlatformTextMarkerRange AccessibilityTextMarkerRange::platformTextMarkerRange() const
{
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
return m_textMarkerRange.get();
#else
return m_textMarkerRange;
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h
index e57a29cd7..d3e685b2d 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityTextMarkerRange.h
@@ -31,7 +31,7 @@
#include <wtf/PassRefPtr.h>
#include <wtf/Platform.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
typedef CFTypeRef PlatformTextMarkerRange;
#else
@@ -57,14 +57,14 @@ private:
AccessibilityTextMarkerRange(PlatformTextMarkerRange);
AccessibilityTextMarkerRange(const AccessibilityTextMarkerRange&);
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
RetainPtr<PlatformTextMarkerRange> m_textMarkerRange;
#else
PlatformTextMarkerRange m_textMarkerRange;
#endif
};
-#if !PLATFORM(MAC)
+#if !PLATFORM(COCOA)
inline bool AccessibilityTextMarkerRange::isEqual(AccessibilityTextMarkerRange*) { return false; }
#endif
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
index 5f149e0d7..e5b293a5c 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.cpp
@@ -53,8 +53,39 @@ bool AccessibilityUIElement::isValid() const
return m_element;
}
+// iOS specific methods
+#if !PLATFORM(IOS)
+JSRetainPtr<JSStringRef> AccessibilityUIElement::identifier() { return nullptr; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::traits() { return nullptr; }
+int AccessibilityUIElement::elementTextPosition() { return 0; }
+int AccessibilityUIElement::elementTextLength() { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForSelection() { return nullptr; }
+JSValueRef AccessibilityUIElement::elementsForRange(unsigned, unsigned) { return nullptr; }
+void AccessibilityUIElement::increaseTextSelection() { }
+void AccessibilityUIElement::decreaseTextSelection() { }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::linkedElement() { return nullptr; }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::headerElementAtIndex(unsigned) { return nullptr; }
+void AccessibilityUIElement::assistiveTechnologySimulatedFocus() { return; }
+bool AccessibilityUIElement::scrollPageUp() { return false; }
+bool AccessibilityUIElement::scrollPageDown() { return false; }
+bool AccessibilityUIElement::scrollPageLeft() { return false; }
+bool AccessibilityUIElement::scrollPageRight() { return false; }
+bool AccessibilityUIElement::hasContainedByFieldsetTrait() { return false; }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::fieldsetAncestorElement() { return nullptr; }
+bool AccessibilityUIElement::isSearchField() const { return false; }
+bool AccessibilityUIElement::isTextArea() const { return false; }
+
+#endif
+
// Unsupported methods on various platforms. As they're implemented on other platforms this list should be modified.
-#if !PLATFORM(MAC) && !PLATFORM(GTK) && !PLATFORM(EFL)
+#if (!PLATFORM(GTK) && !PLATFORM(EFL)) || !HAVE(ACCESSIBILITY)
+JSRetainPtr<JSStringRef> AccessibilityUIElement::characterAtOffset(int) { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::wordAtOffset(int) { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::lineAtOffset(int) { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::sentenceAtOffset(int) { return 0; }
+#endif
+
+#if (!PLATFORM(COCOA) && !PLATFORM(GTK) && !PLATFORM(EFL)) || !HAVE(ACCESSIBILITY)
AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement) { }
AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement&) { }
AccessibilityUIElement::~AccessibilityUIElement() { }
@@ -80,6 +111,7 @@ void AccessibilityUIElement::decrement() { }
void AccessibilityUIElement::showMenu() { }
void AccessibilityUIElement::press() { }
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringAttributeValue(JSStringRef) { return 0; }
+JSValueRef AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef) const { return nullptr; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementAttributeValue(JSStringRef) const { return 0; }
double AccessibilityUIElement::numberAttributeValue(JSStringRef) { return 0; }
bool AccessibilityUIElement::boolAttributeValue(JSStringRef) { return false; }
@@ -91,6 +123,7 @@ bool AccessibilityUIElement::isDecrementActionSupported() { return false; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::role() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::subrole() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::roleDescription() { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::computedRoleString() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::title() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::description() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::language() { return 0; }
@@ -113,13 +146,17 @@ bool AccessibilityUIElement::isRequired() const { return false; }
bool AccessibilityUIElement::isFocused() const { return false; }
bool AccessibilityUIElement::isFocusable() const { return false; }
bool AccessibilityUIElement::isSelected() const { return false; }
+bool AccessibilityUIElement::isSelectedOptionActive() const { return false; }
bool AccessibilityUIElement::isSelectable() const { return false; }
bool AccessibilityUIElement::isMultiSelectable() const { return false; }
void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement*) const { }
+void AccessibilityUIElement::setSelectedChildAtIndex(unsigned) const { }
+void AccessibilityUIElement::removeSelectionAtIndex(unsigned) const { }
unsigned AccessibilityUIElement::selectedChildrenCount() const { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedChildAtIndex(unsigned) const { return 0; }
bool AccessibilityUIElement::isExpanded() const { return false; }
bool AccessibilityUIElement::isChecked() const { return false; }
+bool AccessibilityUIElement::isIndeterminate() const { return false; }
bool AccessibilityUIElement::isVisible() const { return false; }
bool AccessibilityUIElement::isOffScreen() const { return false; }
bool AccessibilityUIElement::isCollapsed() const { return false; }
@@ -143,43 +180,57 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::rowIndexRange() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::columnIndexRange() { return 0; }
int AccessibilityUIElement::rowCount() { return 0; }
int AccessibilityUIElement::columnCount() { return 0; }
+JSValueRef AccessibilityUIElement::rowHeaders() const { return nullptr; }
+JSValueRef AccessibilityUIElement::columnHeaders() const { return nullptr; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedRowAtIndex(unsigned) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedByRow() { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedRowAtIndex(unsigned) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::rowAtIndex(unsigned) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned) { return 0; }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaControlsElementAtIndex(unsigned) { return nullptr; }
bool AccessibilityUIElement::ariaIsGrabbed() const { return false; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::ariaDropEffects() const { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::classList() const { return 0; }
int AccessibilityUIElement::lineForIndex(int) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForLine(int) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForPosition(int, int) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::boundsForRange(unsigned, unsigned) { return 0; }
-void AccessibilityUIElement::setSelectedTextRange(unsigned, unsigned) { }
+bool AccessibilityUIElement::setSelectedTextRange(unsigned, unsigned) { return false; }
+bool AccessibilityUIElement::setSelectedVisibleTextRange(AccessibilityTextMarkerRange*) { return false; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForRange(unsigned, unsigned) { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributedStringForRange(unsigned, unsigned) { return 0; }
bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned, unsigned) { return false; }
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement*, bool, JSValueRef, JSStringRef, bool) { return 0; }
+unsigned AccessibilityUIElement::uiElementCountForSearchPredicate(JSContextRef, AccessibilityUIElement*, bool, JSValueRef, JSStringRef, bool, bool) { return 0; }
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement*, bool, JSValueRef, JSStringRef, bool, bool) { return 0; }
+JSRetainPtr<JSStringRef> AccessibilityUIElement::selectTextWithCriteria(JSContextRef, JSStringRef, JSValueRef, JSStringRef, JSStringRef) { return nullptr; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::cellForColumnAndRow(unsigned, unsigned) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::horizontalScrollbar() const { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::verticalScrollbar() const { return 0; }
bool AccessibilityUIElement::addNotificationListener(JSValueRef) { return false; }
bool AccessibilityUIElement::removeNotificationListener() { return false; }
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::lineTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }
PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement*) { return 0; }
int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange*) { return 0; }
PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForMarkers(AccessibilityTextMarker*, AccessibilityTextMarker*) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*) { return 0; }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::accessibilityElementForTextMarker(AccessibilityTextMarker*) { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarkerForBounds(int x, int y, int width, int height) { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForBounds(int x, int y, int width, int height) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForPoint(int, int) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker*) { return 0; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker*) { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarker() { return 0; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarker() { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange*) { return 0; }
bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef, AccessibilityTextMarkerRange*) { return false; }
int AccessibilityUIElement::indexForTextMarker(AccessibilityTextMarker*) { return -1; }
bool AccessibilityUIElement::isTextMarkerValid(AccessibilityTextMarker*) { return false; }
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForIndex(int) { return 0; }
void AccessibilityUIElement::scrollToMakeVisible() { }
+void AccessibilityUIElement::scrollToGlobalPoint(int, int) { }
+void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int, int, int, int) { }
JSRetainPtr<JSStringRef> AccessibilityUIElement::supportedActions() const { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPostscriptsDescription() const { return 0; }
JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPrescriptsDescription() const { return 0; }
@@ -187,5 +238,24 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::pathDescription() const { retur
#endif
+#if !PLATFORM(MAC) || !HAVE(ACCESSIBILITY)
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::selectedTextMarkerRange() { return nullptr; }
+void AccessibilityUIElement::resetSelectedTextMarkerRange() { }
+void AccessibilityUIElement::setBoolAttributeValue(JSStringRef, bool) { }
+#endif
+
+#if (!PLATFORM(MAC) && !PLATFORM(IOS)) || !HAVE(ACCESSIBILITY)
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::rightWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousWordStartTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextWordEndTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::paragraphTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextParagraphEndTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousParagraphStartTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::sentenceTextMarkerRangeForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextSentenceEndTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousSentenceStartTextMarkerForTextMarker(AccessibilityTextMarker*) { return nullptr; }
+#endif
+
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
index 67f7fa29b..3f39a1781 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/AccessibilityUIElement.h
@@ -35,29 +35,22 @@
#include <wtf/Platform.h>
#include <wtf/Vector.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#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 <WebCore/COMPtr.h>
-#include <oleacc.h>
-
-typedef COMPtr<IAccessible> PlatformUIElement;
-#elif PLATFORM(GTK) || (PLATFORM(EFL) && HAVE(ACCESSIBILITY))
+#elif HAVE(ACCESSIBILITY) && (PLATFORM(GTK) || PLATFORM(EFL))
+#include "AccessibilityNotificationHandlerAtk.h"
#include <atk/atk.h>
-#include <wtf/gobject/GRefPtr.h>
+#include <wtf/glib/GRefPtr.h>
typedef GRefPtr<AtkObject> PlatformUIElement;
#else
typedef void* PlatformUIElement;
#endif
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#ifdef __OBJC__
typedef id NotificationHandler;
#else
@@ -109,8 +102,10 @@ public:
// Attributes - platform-independent implementations
JSRetainPtr<JSStringRef> stringAttributeValue(JSStringRef attribute);
double numberAttributeValue(JSStringRef attribute);
+ JSValueRef uiElementArrayAttributeValue(JSStringRef attribute) const;
PassRefPtr<AccessibilityUIElement> uiElementAttributeValue(JSStringRef attribute) const;
bool boolAttributeValue(JSStringRef attribute);
+ void setBoolAttributeValue(JSStringRef attribute, bool value);
bool isAttributeSupported(JSStringRef attribute);
bool isAttributeSettable(JSStringRef attribute);
bool isPressActionSupported();
@@ -119,6 +114,7 @@ public:
JSRetainPtr<JSStringRef> role();
JSRetainPtr<JSStringRef> subrole();
JSRetainPtr<JSStringRef> roleDescription();
+ JSRetainPtr<JSStringRef> computedRoleString();
JSRetainPtr<JSStringRef> title();
JSRetainPtr<JSStringRef> description();
JSRetainPtr<JSStringRef> language();
@@ -142,15 +138,19 @@ public:
bool isFocused() const;
bool isFocusable() const;
bool isSelected() const;
+ bool isSelectedOptionActive() const;
bool isSelectable() const;
bool isMultiSelectable() const;
void setSelectedChild(AccessibilityUIElement*) const;
+ void setSelectedChildAtIndex(unsigned) const;
+ void removeSelectionAtIndex(unsigned) const;
unsigned selectedChildrenCount() const;
PassRefPtr<AccessibilityUIElement> selectedChildAtIndex(unsigned) const;
bool isValid() const;
bool isExpanded() const;
bool isChecked() const;
+ bool isIndeterminate() const;
bool isVisible() const;
bool isOffScreen() const;
bool isCollapsed() const;
@@ -162,6 +162,7 @@ public:
JSRetainPtr<JSStringRef> documentEncoding();
JSRetainPtr<JSStringRef> documentURI();
JSRetainPtr<JSStringRef> url();
+ JSRetainPtr<JSStringRef> classList() const;
// CSS3-speech properties.
JSRetainPtr<JSStringRef> speak();
@@ -178,7 +179,9 @@ public:
JSRetainPtr<JSStringRef> columnIndexRange();
int rowCount();
int columnCount();
-
+ JSValueRef rowHeaders() const;
+ JSValueRef columnHeaders() const;
+
// Tree/Outline specific attributes
PassRefPtr<AccessibilityUIElement> selectedRowAtIndex(unsigned);
PassRefPtr<AccessibilityUIElement> disclosedByRow();
@@ -188,6 +191,7 @@ public:
// ARIA specific
PassRefPtr<AccessibilityUIElement> ariaOwnsElementAtIndex(unsigned);
PassRefPtr<AccessibilityUIElement> ariaFlowToElementAtIndex(unsigned);
+ PassRefPtr<AccessibilityUIElement> ariaControlsElementAtIndex(unsigned);
// ARIA Drag and Drop
bool ariaIsGrabbed() const;
@@ -199,11 +203,19 @@ public:
JSRetainPtr<JSStringRef> rangeForLine(int);
JSRetainPtr<JSStringRef> rangeForPosition(int x, int y);
JSRetainPtr<JSStringRef> boundsForRange(unsigned location, unsigned length);
- void setSelectedTextRange(unsigned location, unsigned length);
+ bool setSelectedTextRange(unsigned location, unsigned length);
JSRetainPtr<JSStringRef> stringForRange(unsigned location, unsigned length);
JSRetainPtr<JSStringRef> attributedStringForRange(unsigned location, unsigned length);
bool attributedStringRangeIsMisspelled(unsigned location, unsigned length);
- PassRefPtr<AccessibilityUIElement> uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly);
+ unsigned uiElementCountForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly);
+ PassRefPtr<AccessibilityUIElement> uiElementForSearchPredicate(JSContextRef, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly);
+ JSRetainPtr<JSStringRef> selectTextWithCriteria(JSContextRef, JSStringRef ambiguityResolution, JSValueRef searchStrings, JSStringRef replacementString, JSStringRef activity);
+
+ // Text-specific
+ JSRetainPtr<JSStringRef> characterAtOffset(int offset);
+ JSRetainPtr<JSStringRef> wordAtOffset(int offset);
+ JSRetainPtr<JSStringRef> lineAtOffset(int offset);
+ JSRetainPtr<JSStringRef> sentenceAtOffset(int offset);
// Table-specific
PassRefPtr<AccessibilityUIElement> cellForColumnAndRow(unsigned column, unsigned row);
@@ -213,12 +225,19 @@ public:
PassRefPtr<AccessibilityUIElement> verticalScrollbar() const;
void scrollToMakeVisible();
+ void scrollToGlobalPoint(int x, int y);
+ void scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height);
// Text markers.
+ PassRefPtr<AccessibilityTextMarkerRange> lineTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
PassRefPtr<AccessibilityTextMarkerRange> textMarkerRangeForElement(AccessibilityUIElement*);
PassRefPtr<AccessibilityTextMarkerRange> textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker);
+ PassRefPtr<AccessibilityTextMarkerRange> selectedTextMarkerRange();
+ void resetSelectedTextMarkerRange();
PassRefPtr<AccessibilityTextMarker> startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*);
PassRefPtr<AccessibilityTextMarker> endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange*);
+ PassRefPtr<AccessibilityTextMarker> endTextMarkerForBounds(int x, int y, int width, int height);
+ PassRefPtr<AccessibilityTextMarker> startTextMarkerForBounds(int x, int y, int width, int height);
PassRefPtr<AccessibilityTextMarker> textMarkerForPoint(int x, int y);
PassRefPtr<AccessibilityTextMarker> previousTextMarker(AccessibilityTextMarker*);
PassRefPtr<AccessibilityTextMarker> nextTextMarker(AccessibilityTextMarker*);
@@ -229,6 +248,19 @@ public:
int indexForTextMarker(AccessibilityTextMarker*);
bool isTextMarkerValid(AccessibilityTextMarker*);
PassRefPtr<AccessibilityTextMarker> textMarkerForIndex(int);
+ PassRefPtr<AccessibilityTextMarker> startTextMarker();
+ PassRefPtr<AccessibilityTextMarker> endTextMarker();
+ bool setSelectedVisibleTextRange(AccessibilityTextMarkerRange*);
+ PassRefPtr<AccessibilityTextMarkerRange> leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarkerRange> rightWordTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> previousWordStartTextMarkerForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> nextWordEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarkerRange> paragraphTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> nextParagraphEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> previousParagraphStartTextMarkerForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarkerRange> sentenceTextMarkerRangeForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> nextSentenceEndTextMarkerForTextMarker(AccessibilityTextMarker*);
+ PassRefPtr<AccessibilityTextMarker> previousSentenceStartTextMarkerForTextMarker(AccessibilityTextMarker*);
// Returns an ordered list of supported actions for an element.
JSRetainPtr<JSStringRef> supportedActions() const;
@@ -243,6 +275,29 @@ public:
// Make sure you call remove, because you can't rely on objects being deallocated in a timely fashion.
bool removeNotificationListener();
+ JSRetainPtr<JSStringRef> identifier();
+ JSRetainPtr<JSStringRef> traits();
+ int elementTextPosition();
+ int elementTextLength();
+ JSRetainPtr<JSStringRef> stringForSelection();
+ JSValueRef elementsForRange(unsigned location, unsigned length);
+ void increaseTextSelection();
+ void decreaseTextSelection();
+ PassRefPtr<AccessibilityUIElement> linkedElement();
+ PassRefPtr<AccessibilityUIElement> headerElementAtIndex(unsigned index);
+ void assistiveTechnologySimulatedFocus();
+ bool isSearchField() const;
+ bool isTextArea() const;
+
+ bool scrollPageUp();
+ bool scrollPageDown();
+ bool scrollPageLeft();
+ bool scrollPageRight();
+
+ // Fieldset
+ bool hasContainedByFieldsetTrait();
+ PassRefPtr<AccessibilityUIElement> fieldsetAncestorElement();
+
private:
AccessibilityUIElement(PlatformUIElement);
AccessibilityUIElement(const AccessibilityUIElement&);
@@ -250,17 +305,25 @@ private:
PlatformUIElement m_element;
// A retained, platform specific object used to help manage notifications for this object.
-#if PLATFORM(MAC)
+#if HAVE(ACCESSIBILITY)
+#if PLATFORM(COCOA)
NotificationHandler m_notificationHandler;
void getLinkedUIElements(Vector<RefPtr<AccessibilityUIElement> >&);
void getDocumentLinks(Vector<RefPtr<AccessibilityUIElement> >&);
+
+ void getUIElementsWithAttribute(JSStringRef, Vector<RefPtr<AccessibilityUIElement> >&) const;
#endif
-#if PLATFORM(MAC) || PLATFORM(GTK) || (PLATFORM(EFL) && HAVE(ACCESSIBILITY))
+#if PLATFORM(COCOA) || PLATFORM(GTK) || PLATFORM(EFL)
void getChildren(Vector<RefPtr<AccessibilityUIElement> >&);
void getChildrenWithRange(Vector<RefPtr<AccessibilityUIElement> >&, unsigned location, unsigned length);
#endif
+
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ RefPtr<AccessibilityNotificationHandler> m_notificationHandler;
+#endif
+#endif
};
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl b/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
index 5661c0c8c..3831154e0 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
+++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityController.idl
@@ -24,6 +24,10 @@
*/
interface AccessibilityController {
+ void enableEnhancedAccessibility(boolean enable);
+ readonly attribute boolean enhancedAccessibilityEnabled;
+
+ readonly attribute DOMString platformName;
readonly attribute AccessibilityUIElement rootElement;
readonly attribute AccessibilityUIElement focusedElement;
AccessibilityUIElement elementAtPoint(int x, int y);
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl b/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
index 48f76f246..2398be687 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
+++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/AccessibilityUIElement.idl
@@ -37,12 +37,15 @@ interface AccessibilityUIElement {
AccessibilityUIElement linkedUIElementAtIndex(unsigned long index);
AccessibilityUIElement selectedChildAtIndex(unsigned long index);
void setSelectedChild(AccessibilityUIElement element);
+ void setSelectedChildAtIndex(unsigned long index);
+ void removeSelectionAtIndex(unsigned long index);
AccessibilityUIElement titleUIElement();
AccessibilityUIElement parentElement();
readonly attribute DOMString role;
readonly attribute DOMString subrole;
readonly attribute DOMString roleDescription;
+ readonly attribute DOMString computedRoleString;
readonly attribute DOMString title;
readonly attribute DOMString description;
readonly attribute DOMString language;
@@ -56,8 +59,10 @@ interface AccessibilityUIElement {
DOMString stringAttributeValue(DOMString attr);
double numberAttributeValue(DOMString attr);
+ object uiElementArrayAttributeValue(DOMString attr);
AccessibilityUIElement uiElementAttributeValue(DOMString attr);
boolean boolAttributeValue(DOMString attr);
+ void setBoolAttributeValue(DOMString attr, boolean value);
boolean isAttributeSupported(DOMString attr);
boolean isAttributeSettable(DOMString attr);
boolean isPressActionSupported();
@@ -73,10 +78,13 @@ interface AccessibilityUIElement {
readonly attribute boolean isRequired;
readonly attribute boolean isFocused;
readonly attribute boolean isFocusable;
+ readonly attribute boolean isSelectable;
readonly attribute boolean isSelected;
+ readonly attribute boolean isSelectedOptionActive;
readonly attribute boolean isMultiSelectable;
readonly attribute boolean isExpanded;
readonly attribute boolean isChecked;
+ readonly attribute boolean isIndeterminate;
readonly attribute boolean isVisible;
readonly attribute boolean isCollapsed;
readonly attribute boolean hasPopup;
@@ -86,7 +94,8 @@ interface AccessibilityUIElement {
readonly attribute int hierarchicalLevel;
readonly attribute boolean ariaIsGrabbed;
readonly attribute DOMString ariaDropEffects;
-
+ readonly attribute DOMString classList;
+
readonly attribute int x;
readonly attribute int y;
readonly attribute int width;
@@ -110,6 +119,12 @@ interface AccessibilityUIElement {
DOMString attributesOfChildren();
DOMString attributesOfLinkedUIElements();
DOMString attributesOfDocumentLinks();
+
+ // Text info.
+ DOMString characterAtOffset(int offset);
+ DOMString wordAtOffset(int offset);
+ DOMString lineAtOffset(int offset);
+ DOMString sentenceAtOffset(int offset);
// Table info.
DOMString attributesOfColumnHeaders();
@@ -128,9 +143,12 @@ interface AccessibilityUIElement {
DOMString columnIndexRange();
int rowCount();
int columnCount();
+ object columnHeaders();
+ object rowHeaders();
AccessibilityUIElement ariaOwnsElementAtIndex(unsigned long index);
AccessibilityUIElement ariaFlowToElementAtIndex(unsigned long index);
+ AccessibilityUIElement ariaControlsElementAtIndex(unsigned long index);
// Paramaterized attributes.
DOMString parameterizedAttributeNames();
@@ -141,20 +159,35 @@ interface AccessibilityUIElement {
DOMString stringForRange(unsigned long location, unsigned long length);
DOMString attributedStringForRange(unsigned long location, unsigned long length);
boolean attributedStringRangeIsMisspelled(unsigned long location, unsigned long length);
- [PassContext] AccessibilityUIElement uiElementForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly);
- void setSelectedTextRange(unsigned long location, unsigned long length);
+ [PassContext] unsigned int uiElementCountForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly, boolean immediateDescendantsOnly);
+ [PassContext] AccessibilityUIElement uiElementForSearchPredicate(AccessibilityUIElement startElement, boolean isDirectionNext, object searchKey, DOMString searchText, boolean visibleOnly, boolean immediateDescendantsOnly);
+ [PassContext] DOMString selectTextWithCriteria(DOMString ambiguityResolution, object searchStrings, DOMString replacementString, DOMString activity);
+ boolean setSelectedTextRange(unsigned long location, unsigned long length);
// Scroll area attributes.
readonly attribute AccessibilityUIElement horizontalScrollbar;
readonly attribute AccessibilityUIElement verticalScrollbar;
void scrollToMakeVisible();
+ void scrollToGlobalPoint(int x, int y);
+ void scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height);
+
+ void takeFocus();
+ boolean scrollPageDown();
+ boolean scrollPageUp();
+ boolean scrollPageLeft();
+ boolean scrollPageRight();
// Text markers.
+ AccessibilityTextMarkerRange lineTextMarkerRangeForTextMarker(AccessibilityTextMarker textMarker);
AccessibilityTextMarkerRange textMarkerRangeForElement(AccessibilityUIElement element);
AccessibilityTextMarkerRange textMarkerRangeForMarkers(AccessibilityTextMarker startMarker, AccessibilityTextMarker endMarker);
+ AccessibilityTextMarkerRange selectedTextMarkerRange();
+ void resetSelectedTextMarkerRange();
AccessibilityTextMarker startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range);
AccessibilityTextMarker endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange range);
+ AccessibilityTextMarker endTextMarkerForBounds(int x, int y, int width, int height);
+ AccessibilityTextMarker startTextMarkerForBounds(int x, int y, int width, int height);
AccessibilityTextMarker textMarkerForPoint(int x, int y);
AccessibilityTextMarker previousTextMarker(AccessibilityTextMarker marker);
AccessibilityTextMarker nextTextMarker(AccessibilityTextMarker marker);
@@ -165,6 +198,19 @@ interface AccessibilityUIElement {
int indexForTextMarker(AccessibilityTextMarker marker);
boolean isTextMarkerValid(AccessibilityTextMarker marker);
AccessibilityTextMarker textMarkerForIndex(int textIndex);
+ readonly attribute AccessibilityTextMarker startTextMarker;
+ readonly attribute AccessibilityTextMarker endTextMarker;
+ boolean setSelectedVisibleTextRange(AccessibilityTextMarkerRange range);
+ AccessibilityTextMarkerRange leftWordTextMarkerRangeForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarkerRange rightWordTextMarkerRangeForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker previousWordStartTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker nextWordEndTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarkerRange paragraphTextMarkerRangeForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker previousParagraphStartTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker nextParagraphEndTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarkerRange sentenceTextMarkerRangeForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker previousSentenceStartTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
+ AccessibilityTextMarker nextSentenceEndTextMarkerForTextMarker(AccessibilityTextMarker textMarker);
// Returns an ordered list of supported actions for an element.
readonly attribute DOMString supportedActions;
@@ -172,10 +218,29 @@ interface AccessibilityUIElement {
readonly attribute DOMString mathPrescriptsDescription;
readonly attribute DOMString pathDescription;
-
+
+ // iOS specific accessibility methods.
+ readonly attribute DOMString identifier;
+ readonly attribute DOMString traits;
+ readonly attribute int elementTextPosition;
+ readonly attribute int elementTextLength;
+ readonly attribute DOMString stringForSelection;
+ object elementsForRange(unsigned long location, unsigned long length);
+ void increaseTextSelection();
+ void decreaseTextSelection();
+ AccessibilityUIElement linkedElement();
+ AccessibilityUIElement headerElementAtIndex(unsigned long index);
+ // This will simulate the accessibilityDidBecomeFocused API in UIKit.
+ void assistiveTechnologySimulatedFocus();
+ readonly attribute boolean isSearchField;
+ readonly attribute boolean isTextArea;
+
+ // Fieldset
+ readonly attribute boolean hasContainedByFieldsetTrait;
+ AccessibilityUIElement fieldsetAncestorElement();
+
// Notification support.
boolean addNotificationListener(object callbackFunction);
boolean removeNotificationListener();
-
};
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm b/Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm
index 3de84d081..19486c485 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm
+++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/CodeGeneratorTestRunner.pm
@@ -30,7 +30,7 @@ package CodeGeneratorTestRunner;
sub new
{
- my ($class, $codeGenerator, $layerOnTop, $preprocessor, $writeDependencies, $verbose, $idlFilePath) = @_;
+ my ($class, $codeGenerator, $writeDependencies, $verbose, $idlFilePath) = @_;
my $reference = {
codeGenerator => $codeGenerator,
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl b/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl
index b3aa02401..f3280bb94 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl
+++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/EventSendingController.idl
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011, 2014-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,7 +27,14 @@ interface EventSendingController {
void mouseDown(long buttonNumber, object modifierArray);
void mouseUp(long buttonNumber, object modifierArray);
void mouseMoveTo(long x, long y);
+ void mouseForceClick();
+ void startAndCancelMouseForceClick();
+ void mouseForceDown();
+ void mouseForceUp();
+ void mouseForceChanged(double force);
void mouseScrollBy(long x, long y);
+ void mouseScrollByWithWheelAndMomentumPhases(long x, long y, DOMString phase, DOMString momentum);
+ void swipeGestureWithWheelAndMomentumPhases(long x, long y, DOMString phase, DOMString momentum);
void continuousMouseScrollBy(long x, long y, optional boolean paged);
object contextClick();
void scheduleAsynchronousClick();
@@ -44,6 +51,9 @@ interface EventSendingController {
void zoomPageOut();
void scalePageBy(double scale, double x, double y);
+ void monitorWheelEvents();
+ void callAfterScrollingCompletes(object functionCallback);
+
#if defined(ENABLE_TOUCH_EVENTS) && ENABLE_TOUCH_EVENTS
// Touch events.
void addTouchPoint(long x, long y);
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl b/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
index d14ab2a97..a86202b28 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
+++ b/Tools/WebKitTestRunner/InjectedBundle/Bindings/TestRunner.idl
@@ -48,6 +48,7 @@ interface TestRunner {
void dumpApplicationCacheDelegateCallbacks();
void dumpDatabaseCallbacks();
void dumpDOMAsWebArchive();
+ void dumpPolicyDelegateCallbacks();
// Special options.
void keepWebHistory();
@@ -74,6 +75,8 @@ interface TestRunner {
void setCacheModel(int model);
void setAsynchronousSpellCheckingEnabled(boolean value);
void setPrinting();
+ void setShouldDecideNavigationPolicyAfterDelay(boolean value);
+ void setNavigationGesturesEnabled(boolean value);
// Special DOM functions.
void clearBackForwardList();
@@ -103,12 +106,14 @@ interface TestRunner {
void setDatabaseQuota(unsigned long long quota);
DOMString pathToLocalResource(DOMString url);
+ attribute double databaseDefaultQuota;
+ attribute double databaseMaxQuota;
+
// Application Cache API
void clearAllApplicationCaches();
void setAppCacheMaximumSize(unsigned long long size);
long long applicationCacheDiskUsageForOrigin(DOMString origin);
void clearApplicationCacheForOrigin(DOMString name);
- void setApplicationCacheOriginQuota(unsigned long long bytes);
void disallowIncreaseForApplicationCacheQuota();
object originsWithApplicationCache();
@@ -121,7 +126,8 @@ interface TestRunner {
// For Web Inspector tests
void showWebInspector();
void closeWebInspector();
- void evaluateInWebInspector(long callID, DOMString script);
+ void evaluateInWebInspector(DOMString script);
+ readonly attribute DOMString inspectorTestStubURL;
void setPOSIXLocale(DOMString locale);
@@ -129,6 +135,7 @@ interface TestRunner {
void setWillSendRequestReturnsNull(boolean flag);
void setWillSendRequestReturnsNullOnRedirect(boolean flag);
+ void setWillSendRequestAddsHTTPBody(DOMString body);
void setShouldStayOnPageAfterHandlingBeforeUnload(boolean flag);
@@ -140,6 +147,8 @@ interface TestRunner {
void removeChromeInputField(object callback);
void focusWebView(object callback);
+ void clearTestRunnerCallbacks();
+
void setBackingScaleFactor(double backingScaleFactor, object callback);
void setWindowIsKey(boolean isKey);
@@ -153,8 +162,6 @@ interface TestRunner {
void setPageVisibility(DOMString state);
void resetPageVisibility();
- readonly attribute DOMString platformName;
-
// Control full screen behavior.
void setHasCustomFullScreenBehavior(boolean value);
@@ -168,6 +175,11 @@ interface TestRunner {
void setGeolocationPermission(boolean value);
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, [Default=Undefined] optional object altitude, optional object altitudeAccuracy, optional object heading, optional object speed);
void setMockGeolocationPositionUnavailableError(DOMString errorMessage);
+ boolean isGeolocationProviderActive();
+
+ // MediaStream
+ void setUserMediaPermission(boolean value);
+ void setUserMediaPermissionForOrigin(boolean permission, DOMString url);
// Audio testing.
[PassContext] void setAudioResult(object data);
@@ -177,7 +189,7 @@ interface TestRunner {
// Work queue.
void queueBackNavigation(unsigned long howFarBackward);
void queueForwardNavigation(unsigned long howFarForward);
- void queueLoad(DOMString url, DOMString target);
+ void queueLoad(DOMString url, DOMString target, optional boolean shouldOpenExternalURLs);
void queueLoadHTMLString(DOMString content, optional DOMString baseURL, optional DOMString unreachableURL);
void queueReload();
void queueLoadingScript(DOMString script);
@@ -193,5 +205,19 @@ interface TestRunner {
// Override plugin load policy.
void setBlockAllPlugins(boolean shouldBlock);
+
+ // Hooks to the JSC compiler.
+ object failNextNewCodeBlock();
+ object numberOfDFGCompiles(object function);
+ object neverInlineFunction(object function);
+
+ // Swipe gestures
+ void installDidBeginSwipeCallback(object callback);
+ void installWillEndSwipeCallback(object callback);
+ void installDidEndSwipeCallback(object callback);
+ void installDidRemoveSwipeSnapshotCallback(object callback);
+
+ // UI Process Testing
+ void runUIScript(DOMString script, object callback);
};
diff --git a/Tools/WebKitTestRunner/InjectedBundle/DerivedSources.pri b/Tools/WebKitTestRunner/InjectedBundle/DerivedSources.pri
deleted file mode 100644
index 54e4d34b8..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/DerivedSources.pri
+++ /dev/null
@@ -1,39 +0,0 @@
-# -------------------------------------------------------------------
-# Derived sources for WebKitTestRunner's InjectedBundle
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# This file is both a top level target, and included from Target.pri,
-# so that the resulting generated sources can be added to SOURCES.
-# We only set the template if we're a top level target, so that we
-# don't override what Target.pri has already set.
-sanitizedFile = $$toSanitizedPath($$_FILE_)
-equals(sanitizedFile, $$toSanitizedPath($$_PRO_FILE_)):TEMPLATE = derived
-
-IDL_BINDINGS += \
- Bindings/AccessibilityController.idl \
- Bindings/AccessibilityTextMarker.idl \
- Bindings/AccessibilityTextMarkerRange.idl \
- Bindings/AccessibilityUIElement.idl \
- Bindings/EventSendingController.idl \
- Bindings/GCController.idl \
- Bindings/TestRunner.idl \
- Bindings/TextInputController.idl \
-
-qtPrepareTool(QMAKE_MOC, moc)
-
-# GENERATOR 1: IDL compiler
-idl.output = JS${QMAKE_FILE_BASE}.cpp
-idl.input = IDL_BINDINGS
-idl.script = $${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts/generate-bindings.pl
-idl.commands = perl -I$${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts -I$$PWD/Bindings $$idl.script --defines \"$$javascriptFeatureDefines()\" --generator TestRunner --include $$PWD/Bindings --outputDir ${QMAKE_FUNC_FILE_OUT_PATH} --preprocessor \"$${QMAKE_MOC} -E\" ${QMAKE_FILE_NAME}
-idl.depends = $${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts/CodeGenerator.pm \
- $$PWD/Bindings/CodeGeneratorTestRunner.pm \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts/IDLParser.pm \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts/InFilesParser.pm \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/bindings/scripts/generate-bindings.pl
-GENERATORS += idl
-
-INCLUDEPATH += $${ROOT_BUILD_DIR}/Tools/WebKitTestRunner/InjectedBundle/$${GENERATED_SOURCES_DESTDIR}
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp b/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
index 7005dd271..0faa2f398 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011, 2014-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -30,17 +30,82 @@
#include "InjectedBundlePage.h"
#include "JSEventSendingController.h"
#include "StringFunctions.h"
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundlePagePrivate.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKMutableDictionary.h>
-#include <WebKit2/WKNumber.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKContextMenuItem.h>
+#include <WebKit/WKMutableDictionary.h>
+#include <WebKit/WKNumber.h>
+#include <wtf/StdLibExtras.h>
namespace WTR {
static const float ZoomMultiplierRatio = 1.2f;
+struct MenuItemPrivateData {
+ MenuItemPrivateData(WKBundlePageRef page, WKContextMenuItemRef item) :
+ m_page(page),
+ m_item(item) { }
+ WKBundlePageRef m_page;
+ WKRetainPtr<WKContextMenuItemRef> m_item;
+};
+
+#if ENABLE(CONTEXT_MENUS)
+static JSValueRef menuItemClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)
+{
+ MenuItemPrivateData* privateData = static_cast<MenuItemPrivateData*>(JSObjectGetPrivate(thisObject));
+ WKBundlePageClickMenuItem(privateData->m_page, privateData->m_item.get());
+ return JSValueMakeUndefined(context);
+}
+
+static JSValueRef getMenuItemTitleCallback(JSContextRef context, JSObjectRef object, JSStringRef propertyName, JSValueRef* exception)
+{
+ MenuItemPrivateData* privateData = static_cast<MenuItemPrivateData*>(JSObjectGetPrivate(object));
+ WKRetainPtr<WKStringRef> wkTitle(AdoptWK, WKContextMenuItemCopyTitle(privateData->m_item.get()));
+ return JSValueMakeString(context, toJS(wkTitle).get());
+}
+
+static JSStaticFunction staticMenuItemFunctions[] = {
+ { "click", menuItemClickCallback, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete },
+ { 0, 0, 0 }
+};
+
+static JSStaticValue staticMenuItemValues[] = {
+ { "title", getMenuItemTitleCallback, 0, kJSPropertyAttributeReadOnly },
+ { 0, 0, 0, 0 }
+};
+
+static void staticMenuItemFinalize(JSObjectRef object)
+{
+ delete static_cast<MenuItemPrivateData*>(JSObjectGetPrivate(object));
+}
+
+static JSValueRef staticConvertMenuItemToType(JSContextRef context, JSObjectRef object, JSType type, JSValueRef* exception)
+{
+ if (kJSTypeString == type)
+ return getMenuItemTitleCallback(context, object, 0, 0);
+ return 0;
+}
+
+static JSClassRef getMenuItemClass()
+{
+ static JSClassRef menuItemClass = 0;
+
+ if (!menuItemClass) {
+ JSClassDefinition classDefinition = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
+ classDefinition.staticFunctions = staticMenuItemFunctions;
+ classDefinition.staticValues = staticMenuItemValues;
+ classDefinition.finalize = staticMenuItemFinalize;
+ classDefinition.convertToType = staticConvertMenuItemToType;
+
+ menuItemClass = JSClassCreate(&classDefinition);
+ }
+
+ return menuItemClass;
+}
+#endif
+
static WKEventModifiers parseModifier(JSStringRef modifier)
{
if (JSStringIsEqualToUTF8CString(modifier, "ctrlKey"))
@@ -105,14 +170,6 @@ PassRefPtr<EventSendingController> EventSendingController::create()
}
EventSendingController::EventSendingController()
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- : m_time(0)
- , m_position()
- , m_clickCount(0)
- , m_clickTime(0)
- , m_clickPosition()
- , m_clickButton(kWKEventMouseButtonNoButton)
-#endif
{
}
@@ -136,99 +193,146 @@ static WKMutableDictionaryRef createMouseMessageBody(MouseState state, int butto
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString(state == MouseUp ? "MouseUp" : "MouseDown"));
- WKDictionaryAddItem(EventSenderMessageBody, subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody, subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> buttonKey = adoptWK(WKStringCreateWithUTF8CString("Button"));
WKRetainPtr<WKUInt64Ref> buttonRef = adoptWK(WKUInt64Create(button));
- WKDictionaryAddItem(EventSenderMessageBody, buttonKey.get(), buttonRef.get());
+ WKDictionarySetItem(EventSenderMessageBody, buttonKey.get(), buttonRef.get());
WKRetainPtr<WKStringRef> modifiersKey = adoptWK(WKStringCreateWithUTF8CString("Modifiers"));
WKRetainPtr<WKUInt64Ref> modifiersRef = adoptWK(WKUInt64Create(modifiers));
- WKDictionaryAddItem(EventSenderMessageBody, modifiersKey.get(), modifiersRef.get());
+ WKDictionarySetItem(EventSenderMessageBody, modifiersKey.get(), modifiersRef.get());
return EventSenderMessageBody;
}
void EventSendingController::mouseDown(int button, JSValueRef modifierArray)
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundlePageRef page = injectedBundle.page()->page();
WKBundleFrameRef frame = WKBundlePageGetMainFrame(page);
JSContextRef context = WKBundleFrameGetJavaScriptContext(frame);
WKEventModifiers modifiers = parseModifierArray(context, modifierArray);
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- updateClickCount(button);
- WKBundlePageSimulateMouseDown(page, button, m_position, m_clickCount, modifiers, m_time);
-#else
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, createMouseMessageBody(MouseDown, button, modifiers));
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
-#endif
+ WKBundlePagePostSynchronousMessageForTesting(page, EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::mouseUp(int button, JSValueRef modifierArray)
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
WKBundleFrameRef frame = WKBundlePageGetMainFrame(page);
JSContextRef context = WKBundleFrameGetJavaScriptContext(frame);
WKEventModifiers modifiers = parseModifierArray(context, modifierArray);
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- updateClickCount(button);
- WKBundlePageSimulateMouseUp(page, button, m_position, m_clickCount, modifiers, m_time);
-#else
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, createMouseMessageBody(MouseUp, button, modifiers));
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
-#endif
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::mouseMoveTo(int x, int y)
{
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- m_position.x = x;
- m_position.y = y;
- WKBundlePageSimulateMouseMotion(InjectedBundle::shared().page()->page(), m_position, m_time);
-#else
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseMoveTo"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
-#endif
+ m_position = WKPointMake(x, y);
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+}
+
+void EventSendingController::mouseForceClick()
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseForceClick"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+}
+
+void EventSendingController::startAndCancelMouseForceClick()
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("StartAndCancelMouseForceClick"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+}
+
+void EventSendingController::mouseForceDown()
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseForceDown"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+}
+
+void EventSendingController::mouseForceUp()
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseForceUp"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+}
+
+void EventSendingController::mouseForceChanged(double force)
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseForceChanged"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKRetainPtr<WKStringRef> forceKey(AdoptWK, WKStringCreateWithUTF8CString("Force"));
+ WKRetainPtr<WKDoubleRef> forceRef(AdoptWK, WKDoubleCreate(force));
+ WKDictionarySetItem(EventSenderMessageBody.get(), forceKey.get(), forceRef.get());
+
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::leapForward(int milliseconds)
{
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- m_time += milliseconds / 1000.0;
-#else
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("LeapForward"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> timeKey(AdoptWK, WKStringCreateWithUTF8CString("TimeInMilliseconds"));
WKRetainPtr<WKUInt64Ref> timeRef(AdoptWK, WKUInt64Create(milliseconds));
- WKDictionaryAddItem(EventSenderMessageBody.get(), timeKey.get(), timeRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), timeKey.get(), timeRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
-#endif
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::scheduleAsynchronousClick()
@@ -240,11 +344,11 @@ void EventSendingController::scheduleAsynchronousClick()
// Asynchronous mouse down.
WKRetainPtr<WKMutableDictionaryRef> mouseDownMessageBody(AdoptWK, createMouseMessageBody(MouseDown, button, modifiers));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), mouseDownMessageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), mouseDownMessageBody.get());
// Asynchronous mouse up.
WKRetainPtr<WKMutableDictionaryRef> mouseUpMessageBody(AdoptWK, createMouseMessageBody(MouseUp, button, modifiers));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), mouseUpMessageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), mouseUpMessageBody.get());
}
static WKRetainPtr<WKMutableDictionaryRef> createKeyDownMessageBody(JSStringRef key, WKEventModifiers modifiers, int location)
@@ -253,25 +357,25 @@ static WKRetainPtr<WKMutableDictionaryRef> createKeyDownMessageBody(JSStringRef
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("KeyDown"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> keyKey(AdoptWK, WKStringCreateWithUTF8CString("Key"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), keyKey.get(), toWK(key).get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), keyKey.get(), toWK(key).get());
WKRetainPtr<WKStringRef> modifiersKey(AdoptWK, WKStringCreateWithUTF8CString("Modifiers"));
WKRetainPtr<WKUInt64Ref> modifiersRef(AdoptWK, WKUInt64Create(modifiers));
- WKDictionaryAddItem(EventSenderMessageBody.get(), modifiersKey.get(), modifiersRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), modifiersKey.get(), modifiersRef.get());
WKRetainPtr<WKStringRef> locationKey(AdoptWK, WKStringCreateWithUTF8CString("Location"));
WKRetainPtr<WKUInt64Ref> locationRef(AdoptWK, WKUInt64Create(location));
- WKDictionaryAddItem(EventSenderMessageBody.get(), locationKey.get(), locationRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), locationKey.get(), locationRef.get());
return EventSenderMessageBody;
}
void EventSendingController::keyDown(JSStringRef key, JSValueRef modifierArray, int location)
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
WKBundleFrameRef frame = WKBundlePageGetMainFrame(page);
JSContextRef context = WKBundleFrameGetJavaScriptContext(frame);
WKEventModifiers modifiers = parseModifierArray(context, modifierArray);
@@ -279,7 +383,7 @@ void EventSendingController::keyDown(JSStringRef key, JSValueRef modifierArray,
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> keyDownMessageBody = createKeyDownMessageBody(key, modifiers, location);
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), keyDownMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), keyDownMessageBody.get(), 0);
}
void EventSendingController::scheduleAsynchronousKeyDown(JSStringRef key)
@@ -287,7 +391,7 @@ void EventSendingController::scheduleAsynchronousKeyDown(JSStringRef key)
WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
WKRetainPtr<WKMutableDictionaryRef> keyDownMessageBody = createKeyDownMessageBody(key, 0 /* modifiers */, 0 /* location */);
- WKBundlePostMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), keyDownMessageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), keyDownMessageBody.get());
}
void EventSendingController::mouseScrollBy(int x, int y)
@@ -297,17 +401,116 @@ void EventSendingController::mouseScrollBy(int x, int y)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseScrollBy"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
+ WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+
+ WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
+ WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+
+ WKBundlePageForceRepaint(InjectedBundle::singleton().page()->page()); // Triggers a scrolling tree commit.
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get());
+}
+
+static uint64_t cgEventPhaseFromString(JSStringRef phaseStr)
+{
+ if (JSStringIsEqualToUTF8CString(phaseStr, "none"))
+ return 0;
+ if (JSStringIsEqualToUTF8CString(phaseStr, "began"))
+ return 1; // kCGScrollPhaseBegan
+ if (JSStringIsEqualToUTF8CString(phaseStr, "changed"))
+ return 2; // kCGScrollPhaseChanged
+ if (JSStringIsEqualToUTF8CString(phaseStr, "ended"))
+ return 4; // kCGScrollPhaseEnded
+ if (JSStringIsEqualToUTF8CString(phaseStr, "cancelled"))
+ return 8; // kCGScrollPhaseCancelled
+ if (JSStringIsEqualToUTF8CString(phaseStr, "maybegin"))
+ return 128; // kCGScrollPhaseMayBegin
+
+ ASSERT_NOT_REACHED();
+ return 0;
+}
+
+static uint64_t cgEventMomentumPhaseFromString(JSStringRef phaseStr)
+{
+ if (JSStringIsEqualToUTF8CString(phaseStr, "none"))
+ return 0; // kCGMomentumScrollPhaseNone
+ if (JSStringIsEqualToUTF8CString(phaseStr, "begin"))
+ return 1; // kCGMomentumScrollPhaseBegin
+ if (JSStringIsEqualToUTF8CString(phaseStr, "continue"))
+ return 2; // kCGMomentumScrollPhaseContinue
+ if (JSStringIsEqualToUTF8CString(phaseStr, "end"))
+ return 3; // kCGMomentumScrollPhaseEnd
+
+ ASSERT_NOT_REACHED();
+ return 0;
+}
+
+void EventSendingController::mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phaseStr, JSStringRef momentumStr)
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("MouseScrollByWithWheelAndMomentumPhases"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+
+ WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
+ WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+
+ WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
+ WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+
+ uint64_t phase = cgEventPhaseFromString(phaseStr);
+ uint64_t momentum = cgEventMomentumPhaseFromString(momentumStr);
+
+ WKRetainPtr<WKStringRef> phaseKey(AdoptWK, WKStringCreateWithUTF8CString("Phase"));
+ WKRetainPtr<WKUInt64Ref> phaseRef(AdoptWK, WKUInt64Create(phase));
+ WKDictionarySetItem(EventSenderMessageBody.get(), phaseKey.get(), phaseRef.get());
+
+ WKRetainPtr<WKStringRef> momentumKey(AdoptWK, WKStringCreateWithUTF8CString("Momentum"));
+ WKRetainPtr<WKUInt64Ref> momentumRef(AdoptWK, WKUInt64Create(momentum));
+ WKDictionarySetItem(EventSenderMessageBody.get(), momentumKey.get(), momentumRef.get());
+
+ WKBundlePageForceRepaint(InjectedBundle::singleton().page()->page()); // Triggers a scrolling tree commit.
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get());
+}
+
+void EventSendingController::swipeGestureWithWheelAndMomentumPhases(int x, int y, JSStringRef phaseStr, JSStringRef momentumStr)
+{
+ WKRetainPtr<WKStringRef> EventSenderMessageName(AdoptWK, WKStringCreateWithUTF8CString("EventSender"));
+ WKRetainPtr<WKMutableDictionaryRef> EventSenderMessageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
+ WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("SwipeGestureWithWheelAndMomentumPhases"));
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+
+ uint64_t phase = cgEventPhaseFromString(phaseStr);
+ uint64_t momentum = cgEventMomentumPhaseFromString(momentumStr);
+
+ WKRetainPtr<WKStringRef> phaseKey(AdoptWK, WKStringCreateWithUTF8CString("Phase"));
+ WKRetainPtr<WKUInt64Ref> phaseRef(AdoptWK, WKUInt64Create(phase));
+ WKDictionarySetItem(EventSenderMessageBody.get(), phaseKey.get(), phaseRef.get());
+
+ WKRetainPtr<WKStringRef> momentumKey(AdoptWK, WKStringCreateWithUTF8CString("Momentum"));
+ WKRetainPtr<WKUInt64Ref> momentumRef(AdoptWK, WKUInt64Create(momentum));
+ WKDictionarySetItem(EventSenderMessageBody.get(), momentumKey.get(), momentumRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePageForceRepaint(InjectedBundle::singleton().page()->page()); // Triggers a scrolling tree commit.
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get());
}
void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
@@ -317,110 +520,151 @@ void EventSendingController::continuousMouseScrollBy(int x, int y, bool paged)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("ContinuousMouseScrollBy"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
WKRetainPtr<WKDoubleRef> xRef(AdoptWK, WKDoubleCreate(x));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
WKRetainPtr<WKDoubleRef> yRef(AdoptWK, WKDoubleCreate(y));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
WKRetainPtr<WKStringRef> pagedKey(AdoptWK, WKStringCreateWithUTF8CString("Paged"));
WKRetainPtr<WKUInt64Ref> pagedRef(AdoptWK, WKUInt64Create(paged));
- WKDictionaryAddItem(EventSenderMessageBody.get(), pagedKey.get(), pagedRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), pagedKey.get(), pagedRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ // FIXME: This message should be asynchronous, as scrolling is intrinsically asynchronous.
+ // See also: <https://bugs.webkit.org/show_bug.cgi?id=148256>.
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
JSValueRef EventSendingController::contextClick()
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
#if ENABLE(CONTEXT_MENUS)
+#if PLATFORM(GTK) || PLATFORM(EFL)
// Do mouse context click.
mouseDown(2, 0);
mouseUp(2, 0);
+ WKRetainPtr<WKArrayRef> menuEntries = adoptWK(WKBundlePageCopyContextMenuItems(page));
+#else
+ WKRetainPtr<WKArrayRef> menuEntries = adoptWK(WKBundlePageCopyContextMenuAtPointInWindow(page, m_position));
+#endif
+ JSValueRef arrayResult = JSObjectMakeArray(context, 0, 0, 0);
+ if (!menuEntries)
+ return arrayResult;
- WKRetainPtr<WKArrayRef> entriesNames = adoptWK(WKBundlePageCopyContextMenuItemTitles(page));
- JSRetainPtr<JSStringRef> jsPropertyName(Adopt, JSStringCreateWithUTF8CString("title"));
- size_t entriesSize = WKArrayGetSize(entriesNames.get());
- OwnArrayPtr<JSValueRef> jsValuesArray = adoptArrayPtr(new JSValueRef[entriesSize]);
+ JSObjectRef arrayObj = JSValueToObject(context, arrayResult, 0);
+ size_t entriesSize = WKArrayGetSize(menuEntries.get());
for (size_t i = 0; i < entriesSize; ++i) {
- ASSERT(WKGetTypeID(WKArrayGetItemAtIndex(entriesNames.get(), i)) == WKStringGetTypeID());
-
- WKStringRef wkEntryName = static_cast<WKStringRef>(WKArrayGetItemAtIndex(entriesNames.get(), i));
- JSObjectRef jsItemObject = JSObjectMake(context, /* JSClassRef */0, /* privData */0);
- JSRetainPtr<JSStringRef> jsNameCopy(Adopt, WKStringCopyJSString(wkEntryName));
- JSValueRef jsEntryName = JSValueMakeString(context, jsNameCopy.get());
- JSObjectSetProperty(context, jsItemObject, jsPropertyName.get(), jsEntryName, kJSPropertyAttributeReadOnly, 0);
- jsValuesArray[i] = jsItemObject;
+ ASSERT(WKGetTypeID(WKArrayGetItemAtIndex(menuEntries.get(), i)) == WKContextMenuItemGetTypeID());
+
+ WKContextMenuItemRef item = static_cast<WKContextMenuItemRef>(WKArrayGetItemAtIndex(menuEntries.get(), i));
+ MenuItemPrivateData* privateData = new MenuItemPrivateData(page, item);
+ JSObjectSetPropertyAtIndex(context, arrayObj, i, JSObjectMake(context, getMenuItemClass(), privateData), 0);
}
- return JSObjectMakeArray(context, entriesSize, jsValuesArray.get(), 0);
+ return arrayResult;
#else
return JSValueMakeUndefined(context);
#endif
}
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
-void EventSendingController::updateClickCount(WKEventMouseButton button)
-{
- if (m_time - m_clickTime < 1 && m_position == m_clickPosition && button == m_clickButton) {
- ++m_clickCount;
- m_clickTime = m_time;
- return;
- }
-
- m_clickCount = 1;
- m_clickTime = m_time;
- m_clickPosition = m_position;
- m_clickButton = button;
-}
-#endif
-
void EventSendingController::textZoomIn()
{
+ auto& injectedBundle = InjectedBundle::singleton();
// Ensure page zoom is reset.
- WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), 1);
+ WKBundlePageSetPageZoomFactor(injectedBundle.page()->page(), 1);
- double zoomFactor = WKBundlePageGetTextZoomFactor(InjectedBundle::shared().page()->page());
- WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor * ZoomMultiplierRatio);
+ double zoomFactor = WKBundlePageGetTextZoomFactor(injectedBundle.page()->page());
+ WKBundlePageSetTextZoomFactor(injectedBundle.page()->page(), zoomFactor * ZoomMultiplierRatio);
}
void EventSendingController::textZoomOut()
{
+ auto& injectedBundle = InjectedBundle::singleton();
// Ensure page zoom is reset.
- WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), 1);
+ WKBundlePageSetPageZoomFactor(injectedBundle.page()->page(), 1);
- double zoomFactor = WKBundlePageGetTextZoomFactor(InjectedBundle::shared().page()->page());
- WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
+ double zoomFactor = WKBundlePageGetTextZoomFactor(injectedBundle.page()->page());
+ WKBundlePageSetTextZoomFactor(injectedBundle.page()->page(), zoomFactor / ZoomMultiplierRatio);
}
void EventSendingController::zoomPageIn()
{
+ auto& injectedBundle = InjectedBundle::singleton();
// Ensure text zoom is reset.
- WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), 1);
+ WKBundlePageSetTextZoomFactor(injectedBundle.page()->page(), 1);
- double zoomFactor = WKBundlePageGetPageZoomFactor(InjectedBundle::shared().page()->page());
- WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor * ZoomMultiplierRatio);
+ double zoomFactor = WKBundlePageGetPageZoomFactor(injectedBundle.page()->page());
+ WKBundlePageSetPageZoomFactor(injectedBundle.page()->page(), zoomFactor * ZoomMultiplierRatio);
}
void EventSendingController::zoomPageOut()
{
+ auto& injectedBundle = InjectedBundle::singleton();
// Ensure text zoom is reset.
- WKBundlePageSetTextZoomFactor(InjectedBundle::shared().page()->page(), 1);
+ WKBundlePageSetTextZoomFactor(injectedBundle.page()->page(), 1);
- double zoomFactor = WKBundlePageGetPageZoomFactor(InjectedBundle::shared().page()->page());
- WKBundlePageSetPageZoomFactor(InjectedBundle::shared().page()->page(), zoomFactor / ZoomMultiplierRatio);
+ double zoomFactor = WKBundlePageGetPageZoomFactor(injectedBundle.page()->page());
+ WKBundlePageSetPageZoomFactor(injectedBundle.page()->page(), zoomFactor / ZoomMultiplierRatio);
}
void EventSendingController::scalePageBy(double scale, double x, double y)
{
WKPoint origin = { x, y };
- WKBundlePageSetScaleAtOrigin(InjectedBundle::shared().page()->page(), scale, origin);
+ WKBundlePageSetScaleAtOrigin(InjectedBundle::singleton().page()->page(), scale, origin);
+}
+
+void EventSendingController::monitorWheelEvents()
+{
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+
+ WKBundlePageStartMonitoringScrollOperations(page);
+}
+
+struct ScrollCompletionCallbackData {
+ JSContextRef m_context;
+ JSObjectRef m_function;
+
+ ScrollCompletionCallbackData(JSContextRef context, JSObjectRef function)
+ : m_context(context), m_function(function)
+ {
+ }
+};
+
+static void executeCallback(void* context)
+{
+ if (!context)
+ return;
+
+ std::unique_ptr<ScrollCompletionCallbackData> callBackData(reinterpret_cast<ScrollCompletionCallbackData*>(context));
+
+ JSObjectCallAsFunction(callBackData->m_context, callBackData->m_function, nullptr, 0, nullptr, nullptr);
+ JSValueUnprotect(callBackData->m_context, callBackData->m_function);
+}
+
+void EventSendingController::callAfterScrollingCompletes(JSValueRef functionCallback)
+{
+ if (!functionCallback)
+ return;
+
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+
+ JSObjectRef functionCallbackObject = JSValueToObject(context, functionCallback, nullptr);
+ if (!functionCallbackObject)
+ return;
+
+ JSValueProtect(context, functionCallbackObject);
+
+ auto scrollCompletionCallbackData = std::make_unique<ScrollCompletionCallbackData>(context, functionCallbackObject);
+
+ WKBundlePageRegisterScrollOperationCompletionCallback(page, executeCallback, scrollCompletionCallbackData.release());
}
#if ENABLE(TOUCH_EVENTS)
@@ -431,17 +675,17 @@ void EventSendingController::addTouchPoint(int x, int y)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("AddTouchPoint"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
WKRetainPtr<WKUInt64Ref> xRef(AdoptWK, WKUInt64Create(x));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
WKRetainPtr<WKUInt64Ref> yRef(AdoptWK, WKUInt64Create(y));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::updateTouchPoint(int index, int x, int y)
@@ -451,21 +695,21 @@ void EventSendingController::updateTouchPoint(int index, int x, int y)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("UpdateTouchPoint"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> indexKey(AdoptWK, WKStringCreateWithUTF8CString("Index"));
WKRetainPtr<WKUInt64Ref> indexRef(AdoptWK, WKUInt64Create(index));
- WKDictionaryAddItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("X"));
WKRetainPtr<WKUInt64Ref> xRef(AdoptWK, WKUInt64Create(x));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("Y"));
WKRetainPtr<WKUInt64Ref> yRef(AdoptWK, WKUInt64Create(y));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::setTouchModifier(const JSStringRef &modifier, bool enable)
@@ -475,7 +719,7 @@ void EventSendingController::setTouchModifier(const JSStringRef &modifier, bool
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("SetTouchModifier"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKEventModifiers mod = 0;
if (JSStringIsEqualToUTF8CString(modifier, "ctrl"))
@@ -489,13 +733,13 @@ void EventSendingController::setTouchModifier(const JSStringRef &modifier, bool
WKRetainPtr<WKStringRef> modifierKey(AdoptWK, WKStringCreateWithUTF8CString("Modifier"));
WKRetainPtr<WKUInt64Ref> modifierRef(AdoptWK, WKUInt64Create(mod));
- WKDictionaryAddItem(EventSenderMessageBody.get(), modifierKey.get(), modifierRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), modifierKey.get(), modifierRef.get());
WKRetainPtr<WKStringRef> enableKey(AdoptWK, WKStringCreateWithUTF8CString("Enable"));
WKRetainPtr<WKUInt64Ref> enableRef(AdoptWK, WKUInt64Create(enable));
- WKDictionaryAddItem(EventSenderMessageBody.get(), enableKey.get(), enableRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), enableKey.get(), enableRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
@@ -506,17 +750,17 @@ void EventSendingController::setTouchPointRadius(int radiusX, int radiusY)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("SetTouchPointRadius"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> xKey(AdoptWK, WKStringCreateWithUTF8CString("RadiusX"));
WKRetainPtr<WKUInt64Ref> xRef(AdoptWK, WKUInt64Create(radiusX));
- WKDictionaryAddItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), xKey.get(), xRef.get());
WKRetainPtr<WKStringRef> yKey(AdoptWK, WKStringCreateWithUTF8CString("RadiusY"));
WKRetainPtr<WKUInt64Ref> yRef(AdoptWK, WKUInt64Create(radiusY));
- WKDictionaryAddItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), yKey.get(), yRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::touchStart()
@@ -526,9 +770,9 @@ void EventSendingController::touchStart()
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchStart"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::touchMove()
@@ -538,9 +782,9 @@ void EventSendingController::touchMove()
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchMove"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::touchEnd()
@@ -550,9 +794,9 @@ void EventSendingController::touchEnd()
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchEnd"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::touchCancel()
@@ -562,9 +806,9 @@ void EventSendingController::touchCancel()
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("TouchCancel"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::clearTouchPoints()
@@ -574,9 +818,9 @@ void EventSendingController::clearTouchPoints()
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("ClearTouchPoints"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::releaseTouchPoint(int index)
@@ -586,13 +830,13 @@ void EventSendingController::releaseTouchPoint(int index)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("ReleaseTouchPoint"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> indexKey(AdoptWK, WKStringCreateWithUTF8CString("Index"));
WKRetainPtr<WKUInt64Ref> indexRef(AdoptWK, WKUInt64Create(index));
- WKDictionaryAddItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
void EventSendingController::cancelTouchPoint(int index)
@@ -602,13 +846,13 @@ void EventSendingController::cancelTouchPoint(int index)
WKRetainPtr<WKStringRef> subMessageKey(AdoptWK, WKStringCreateWithUTF8CString("SubMessage"));
WKRetainPtr<WKStringRef> subMessageName(AdoptWK, WKStringCreateWithUTF8CString("CancelTouchPoint"));
- WKDictionaryAddItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), subMessageKey.get(), subMessageName.get());
WKRetainPtr<WKStringRef> indexKey(AdoptWK, WKStringCreateWithUTF8CString("Index"));
WKRetainPtr<WKUInt64Ref> indexRef(AdoptWK, WKUInt64Create(index));
- WKDictionaryAddItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
+ WKDictionarySetItem(EventSenderMessageBody.get(), indexKey.get(), indexRef.get());
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), EventSenderMessageName.get(), EventSenderMessageBody.get(), 0);
}
#endif
diff --git a/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h b/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h
index bdacfd359..c23c36dfa 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/EventSendingController.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010, 2011 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2011, 2014-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -27,14 +27,10 @@
#define EventSendingController_h
#include "JSWrappable.h"
-#include <WebKit2/WKEvent.h>
-#include <WebKit2/WKGeometry.h>
+#include <WebKit/WKEvent.h>
+#include <WebKit/WKGeometry.h>
#include <wtf/PassRefPtr.h>
-#if !PLATFORM(MAC) && !PLATFORM(QT) && !PLATFORM(GTK) && !PLATFORM(EFL)
-#define USE_WEBPROCESS_EVENT_SIMULATION
-#endif
-
namespace WTR {
class EventSendingController : public JSWrappable {
@@ -50,11 +46,20 @@ public:
void mouseDown(int button, JSValueRef modifierArray);
void mouseUp(int button, JSValueRef modifierArray);
void mouseMoveTo(int x, int y);
+ void mouseForceClick();
+ void startAndCancelMouseForceClick();
+ void mouseForceDown();
+ void mouseForceUp();
+ void mouseForceChanged(double force);
void mouseScrollBy(int x, int y);
+ void mouseScrollByWithWheelAndMomentumPhases(int x, int y, JSStringRef phase, JSStringRef momentum);
+ void swipeGestureWithWheelAndMomentumPhases(int x, int y, JSStringRef phase, JSStringRef momentum);
void continuousMouseScrollBy(int x, int y, bool paged);
JSValueRef contextClick();
void leapForward(int milliseconds);
void scheduleAsynchronousClick();
+ void monitorWheelEvents();
+ void callAfterScrollingCompletes(JSValueRef functionCallback);
void keyDown(JSStringRef key, JSValueRef modifierArray, int location);
void scheduleAsynchronousKeyDown(JSStringRef key);
@@ -83,18 +88,7 @@ public:
private:
EventSendingController();
-
-#ifdef USE_WEBPROCESS_EVENT_SIMULATION
- void updateClickCount(WKEventMouseButton);
-
- double m_time;
WKPoint m_position;
-
- int m_clickCount;
- double m_clickTime;
- WKPoint m_clickPosition;
- WKEventMouseButton m_clickButton;
-#endif
};
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/GCController.cpp b/Tools/WebKitTestRunner/InjectedBundle/GCController.cpp
index 10c21dba8..fd0cc3a78 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/GCController.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/GCController.cpp
@@ -28,7 +28,7 @@
#include "InjectedBundle.h"
#include "JSGCController.h"
-#include <WebKit2/WKBundlePrivate.h>
+#include <WebKit/WKBundlePrivate.h>
namespace WTR {
@@ -52,17 +52,17 @@ JSClassRef GCController::wrapperClass()
void GCController::collect()
{
- WKBundleGarbageCollectJavaScriptObjects(InjectedBundle::shared().bundle());
+ WKBundleGarbageCollectJavaScriptObjects(InjectedBundle::singleton().bundle());
}
void GCController::collectOnAlternateThread(bool waitUntilDone)
{
- WKBundleGarbageCollectJavaScriptObjectsOnAlternateThreadForDebugging(InjectedBundle::shared().bundle(), waitUntilDone);
+ WKBundleGarbageCollectJavaScriptObjectsOnAlternateThreadForDebugging(InjectedBundle::singleton().bundle(), waitUntilDone);
}
size_t GCController::getJSObjectCount()
{
- return WKBundleGetJavaScriptObjectsCount(InjectedBundle::shared().bundle());
+ return WKBundleGetJavaScriptObjectsCount(InjectedBundle::singleton().bundle());
}
// Object Creation
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
index 9094a661a..72c045830 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.cpp
@@ -29,20 +29,19 @@
#include "ActivateFonts.h"
#include "InjectedBundlePage.h"
#include "StringFunctions.h"
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WebKit2_C.h>
-#include <wtf/PassOwnPtr.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WebKit2_C.h>
#include <wtf/text/CString.h>
#include <wtf/text/StringBuilder.h>
#include <wtf/Vector.h>
namespace WTR {
-InjectedBundle& InjectedBundle::shared()
+InjectedBundle& InjectedBundle::singleton()
{
static InjectedBundle& shared = *new InjectedBundle;
return shared;
@@ -88,40 +87,31 @@ void InjectedBundle::initialize(WKBundleRef bundle, WKTypeRef initializationUser
{
m_bundle = bundle;
- WKBundleClient client = {
- kWKBundleClientCurrentVersion,
- this,
+ WKBundleClientV1 client = {
+ { 1, this },
didCreatePage,
willDestroyPage,
didInitializePageGroup,
didReceiveMessage,
didReceiveMessageToPage
};
- WKBundleSetClient(m_bundle, &client);
+ WKBundleSetClient(m_bundle, &client.base);
platformInitialize(initializationUserData);
activateFonts();
- WKBundleActivateMacFontAscentHack(m_bundle);
-
- // FIXME: We'd like to start with a clean state for every test, but this function can't be used more than once yet.
- WKBundleSwitchNetworkLoaderToNewTestingSession(m_bundle);
}
void InjectedBundle::didCreatePage(WKBundlePageRef page)
{
- m_pages.append(adoptPtr(new InjectedBundlePage(page)));
+ m_pages.append(std::make_unique<InjectedBundlePage>(page));
}
void InjectedBundle::willDestroyPage(WKBundlePageRef page)
{
- size_t size = m_pages.size();
- for (size_t i = 0; i < size; ++i) {
- if (m_pages[i]->page() == page) {
- m_pages.remove(i);
- break;
- }
- }
+ m_pages.removeFirstMatching([page] (const std::unique_ptr<InjectedBundlePage>& current) {
+ return current->page() == page;
+ });
}
void InjectedBundle::didInitializePageGroup(WKBundlePageGroupRef pageGroup)
@@ -143,6 +133,13 @@ void InjectedBundle::resetLocalSettings()
void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messageBody)
{
+ WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
+ WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
+ WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
+}
+
+void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody)
+{
if (WKStringIsEqualToUTF8CString(messageName, "BeginTest")) {
ASSERT(messageBody);
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
@@ -159,11 +156,13 @@ void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messag
WKRetainPtr<WKStringRef> ackMessageName(AdoptWK, WKStringCreateWithUTF8CString("Ack"));
WKRetainPtr<WKStringRef> ackMessageBody(AdoptWK, WKStringCreateWithUTF8CString("BeginTest"));
- WKBundlePostMessage(m_bundle, ackMessageName.get(), ackMessageBody.get());
+ WKBundlePagePostMessage(page, ackMessageName.get(), ackMessageBody.get());
beginTesting(messageBodyDictionary);
return;
- } else if (WKStringIsEqualToUTF8CString(messageName, "Reset")) {
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "Reset")) {
ASSERT(messageBody);
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
@@ -174,48 +173,93 @@ void InjectedBundle::didReceiveMessage(WKStringRef messageName, WKTypeRef messag
if (shouldGC)
WKBundleGarbageCollectJavaScriptObjects(m_bundle);
+ WKRetainPtr<WKStringRef> allowedHostsKey(AdoptWK, WKStringCreateWithUTF8CString("AllowedHosts"));
+ WKTypeRef allowedHostsValue = WKDictionaryGetItemForKey(messageBodyDictionary, allowedHostsKey.get());
+ if (allowedHostsValue && WKGetTypeID(allowedHostsValue) == WKArrayGetTypeID()) {
+ WKArrayRef allowedHostsArray = static_cast<WKArrayRef>(allowedHostsValue);
+ for (size_t i = 0, size = WKArrayGetSize(allowedHostsArray); i < size; ++i) {
+ WKTypeRef item = WKArrayGetItemAtIndex(allowedHostsArray, i);
+ if (item && WKGetTypeID(item) == WKStringGetTypeID())
+ m_allowedHosts.append(toWTFString(static_cast<WKStringRef>(item)));
+ }
+ }
+
m_state = Idle;
m_dumpPixels = false;
+ m_pixelResultIsPending = false;
resetLocalSettings();
m_testRunner->removeAllWebNotificationPermissions();
- page()->resetAfterTest();
+ InjectedBundle::page()->resetAfterTest();
return;
}
+
if (WKStringIsEqualToUTF8CString(messageName, "CallAddChromeInputFieldCallback")) {
m_testRunner->callAddChromeInputFieldCallback();
return;
}
+
if (WKStringIsEqualToUTF8CString(messageName, "CallRemoveChromeInputFieldCallback")) {
m_testRunner->callRemoveChromeInputFieldCallback();
return;
}
+
if (WKStringIsEqualToUTF8CString(messageName, "CallFocusWebViewCallback")) {
m_testRunner->callFocusWebViewCallback();
return;
}
+
if (WKStringIsEqualToUTF8CString(messageName, "CallSetBackingScaleFactorCallback")) {
m_testRunner->callSetBackingScaleFactorCallback();
return;
- }
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "CallDidBeginSwipeCallback")) {
+ m_testRunner->callDidBeginSwipeCallback();
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "CallWillEndSwipeCallback")) {
+ m_testRunner->callWillEndSwipeCallback();
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "CallDidEndSwipeCallback")) {
+ m_testRunner->callDidEndSwipeCallback();
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "CallDidRemoveSwipeSnapshotCallback")) {
+ m_testRunner->callDidRemoveSwipeSnapshotCallback();
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "CallUISideScriptCallback")) {
+ WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
+
+ WKRetainPtr<WKStringRef> resultKey(AdoptWK, WKStringCreateWithUTF8CString("Result"));
+ WKRetainPtr<WKStringRef> callbackIDKey(AdoptWK, WKStringCreateWithUTF8CString("CallbackID"));
+
+ unsigned callbackID = (unsigned)WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, callbackIDKey.get())));
+
+ WKStringRef resultString = static_cast<WKStringRef>(WKDictionaryGetItemForKey(messageBodyDictionary, resultKey.get()));
+ auto resultJSString = toJS(resultString);
+
+ m_testRunner->runUIScriptCallback(callbackID, resultJSString.get());
+ return;
+ }
+
if (WKStringIsEqualToUTF8CString(messageName, "WorkQueueProcessedCallback")) {
if (!topLoadingFrame() && !m_testRunner->waitToDump())
- page()->dump();
+ InjectedBundle::page()->dump();
return;
}
WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
- WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
-}
-
-void InjectedBundle::didReceiveMessageToPage(WKBundlePageRef page, WKStringRef messageName, WKTypeRef messageBody)
-{
- WKRetainPtr<WKStringRef> errorMessageName(AdoptWK, WKStringCreateWithUTF8CString("Error"));
- WKRetainPtr<WKStringRef> errorMessageBody(AdoptWK, WKStringCreateWithUTF8CString("Unknown"));
- WKBundlePostMessage(m_bundle, errorMessageName.get(), errorMessageBody.get());
+ WKBundlePagePostMessage(page, errorMessageName.get(), errorMessageBody.get());
}
bool InjectedBundle::booleanForKey(WKDictionaryRef dictionary, const char* key)
@@ -242,8 +286,6 @@ void InjectedBundle::beginTesting(WKDictionaryRef settings)
m_textInputController = TextInputController::create();
m_accessibilityController = AccessibilityController::create();
- WKBundleSetShouldTrackVisitedLinks(m_bundle, false);
- WKBundleRemoveAllVisitedLinks(m_bundle);
WKBundleSetAllowUniversalAccessFromFileURLs(m_bundle, m_pageGroup, true);
WKBundleSetJavaScriptCanAccessClipboard(m_bundle, m_pageGroup, true);
WKBundleSetPrivateBrowsingEnabled(m_bundle, m_pageGroup, false);
@@ -254,13 +296,10 @@ void InjectedBundle::beginTesting(WKDictionaryRef settings)
WKBundleSetAllowFileAccessFromFileURLs(m_bundle, m_pageGroup, true);
WKBundleSetPluginsEnabled(m_bundle, m_pageGroup, true);
WKBundleSetPopupBlockingEnabled(m_bundle, m_pageGroup, false);
- WKBundleSetAlwaysAcceptCookies(m_bundle, false);
- WKBundleSetSerialLoadingEnabled(m_bundle, false);
- WKBundleSetShadowDOMEnabled(m_bundle, true);
- WKBundleSetSeamlessIFramesEnabled(m_bundle, true);
- WKBundleSetCacheModel(m_bundle, 1 /*CacheModelDocumentBrowser*/);
- WKBundleRemoveAllUserContent(m_bundle, m_pageGroup);
+#if PLATFORM(IOS)
+ WKBundlePageSetUseTestingViewportConfiguration(page()->page(), !booleanForKey(settings, "UseFlexibleViewport"));
+#endif
m_testRunner->setShouldDumpFrameLoadCallbacks(booleanForKey(settings, "DumpFrameLoadDelegates"));
m_testRunner->setUserStyleSheetEnabled(false);
@@ -268,13 +307,15 @@ void InjectedBundle::beginTesting(WKDictionaryRef settings)
m_testRunner->setCloseRemainingWindowsWhenComplete(false);
m_testRunner->setAcceptsEditing(true);
m_testRunner->setTabKeyCyclesThroughElements(true);
+ m_testRunner->clearTestRunnerCallbacks();
- m_testRunner->setCustomTimeout(m_timeout);
+ if (m_timeout > 0)
+ m_testRunner->setCustomTimeout(m_timeout);
page()->prepare();
WKBundleClearAllDatabases(m_bundle);
- WKBundleClearApplicationCache(m_bundle);
+ WKBundlePageClearApplicationCache(page()->page());
WKBundleResetOriginAccessWhitelists(m_bundle);
// [WK2] REGRESSION(r128623): It made layout tests extremely slow
@@ -291,21 +332,29 @@ void InjectedBundle::done()
page()->stopLoading();
setTopLoadingFrame(0);
+ m_testRunner->invalidateWaitToDumpWatchdogTimer();
+
m_accessibilityController->resetToConsistentState();
WKRetainPtr<WKStringRef> doneMessageName(AdoptWK, WKStringCreateWithUTF8CString("Done"));
WKRetainPtr<WKMutableDictionaryRef> doneMessageBody(AdoptWK, WKMutableDictionaryCreate());
- WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult"));
- WKDictionaryAddItem(doneMessageBody.get(), pixelResultKey.get(), m_pixelResult.get());
+ WKRetainPtr<WKStringRef> pixelResultIsPendingKey = adoptWK(WKStringCreateWithUTF8CString("PixelResultIsPending"));
+ WKRetainPtr<WKBooleanRef> pixelResultIsPending(AdoptWK, WKBooleanCreate(m_pixelResultIsPending));
+ WKDictionarySetItem(doneMessageBody.get(), pixelResultIsPendingKey.get(), pixelResultIsPending.get());
+
+ if (!m_pixelResultIsPending) {
+ WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult"));
+ WKDictionarySetItem(doneMessageBody.get(), pixelResultKey.get(), m_pixelResult.get());
+ }
WKRetainPtr<WKStringRef> repaintRectsKey = adoptWK(WKStringCreateWithUTF8CString("RepaintRects"));
- WKDictionaryAddItem(doneMessageBody.get(), repaintRectsKey.get(), m_repaintRects.get());
+ WKDictionarySetItem(doneMessageBody.get(), repaintRectsKey.get(), m_repaintRects.get());
WKRetainPtr<WKStringRef> audioResultKey = adoptWK(WKStringCreateWithUTF8CString("AudioResult"));
- WKDictionaryAddItem(doneMessageBody.get(), audioResultKey.get(), m_audioResult.get());
+ WKDictionarySetItem(doneMessageBody.get(), audioResultKey.get(), m_audioResult.get());
- WKBundlePostMessage(m_bundle, doneMessageName.get(), doneMessageBody.get());
+ WKBundlePagePostMessage(page()->page(), doneMessageName.get(), doneMessageBody.get());
closeOtherPages();
@@ -338,60 +387,67 @@ void InjectedBundle::outputText(const String& output)
return;
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("TextOutput"));
WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithUTF8CString(output.utf8().data()));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::postNewBeforeUnloadReturnValue(bool value)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("BeforeUnloadReturnValue"));
WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(value));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::postAddChromeInputField()
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("AddChromeInputField"));
- WKBundlePostMessage(m_bundle, messageName.get(), 0);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), 0);
}
void InjectedBundle::postRemoveChromeInputField()
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("RemoveChromeInputField"));
- WKBundlePostMessage(m_bundle, messageName.get(), 0);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), 0);
}
void InjectedBundle::postFocusWebView()
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("FocusWebView"));
- WKBundlePostMessage(m_bundle, messageName.get(), 0);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), 0);
}
void InjectedBundle::postSetBackingScaleFactor(double backingScaleFactor)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetBackingScaleFactor"));
WKRetainPtr<WKDoubleRef> messageBody(AdoptWK, WKDoubleCreate(backingScaleFactor));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::postSetWindowIsKey(bool isKey)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetWindowIsKey"));
WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(isKey));
- WKBundlePostSynchronousMessage(m_bundle, messageName.get(), messageBody.get(), 0);
+ WKBundlePagePostSynchronousMessageForTesting(page()->page(), messageName.get(), messageBody.get(), 0);
}
void InjectedBundle::postSimulateWebNotificationClick(uint64_t notificationID)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SimulateWebNotificationClick"));
WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(notificationID));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
+}
+
+void InjectedBundle::postSetAddsVisitedLinks(bool addsVisitedLinks)
+{
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAddsVisitedLinks"));
+ WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(addsVisitedLinks));
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::setGeolocationPermission(bool enabled)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetGeolocationPermission"));
WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(enabled));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed)
@@ -402,55 +458,87 @@ void InjectedBundle::setMockGeolocationPosition(double latitude, double longitud
WKRetainPtr<WKStringRef> latitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("latitude"));
WKRetainPtr<WKDoubleRef> latitudeWK(AdoptWK, WKDoubleCreate(latitude));
- WKDictionaryAddItem(messageBody.get(), latitudeKeyWK.get(), latitudeWK.get());
+ WKDictionarySetItem(messageBody.get(), latitudeKeyWK.get(), latitudeWK.get());
WKRetainPtr<WKStringRef> longitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("longitude"));
WKRetainPtr<WKDoubleRef> longitudeWK(AdoptWK, WKDoubleCreate(longitude));
- WKDictionaryAddItem(messageBody.get(), longitudeKeyWK.get(), longitudeWK.get());
+ WKDictionarySetItem(messageBody.get(), longitudeKeyWK.get(), longitudeWK.get());
WKRetainPtr<WKStringRef> accuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("accuracy"));
WKRetainPtr<WKDoubleRef> accuracyWK(AdoptWK, WKDoubleCreate(accuracy));
- WKDictionaryAddItem(messageBody.get(), accuracyKeyWK.get(), accuracyWK.get());
+ WKDictionarySetItem(messageBody.get(), accuracyKeyWK.get(), accuracyWK.get());
WKRetainPtr<WKStringRef> providesAltitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesAltitude"));
WKRetainPtr<WKBooleanRef> providesAltitudeWK(AdoptWK, WKBooleanCreate(providesAltitude));
- WKDictionaryAddItem(messageBody.get(), providesAltitudeKeyWK.get(), providesAltitudeWK.get());
+ WKDictionarySetItem(messageBody.get(), providesAltitudeKeyWK.get(), providesAltitudeWK.get());
WKRetainPtr<WKStringRef> altitudeKeyWK(AdoptWK, WKStringCreateWithUTF8CString("altitude"));
WKRetainPtr<WKDoubleRef> altitudeWK(AdoptWK, WKDoubleCreate(altitude));
- WKDictionaryAddItem(messageBody.get(), altitudeKeyWK.get(), altitudeWK.get());
+ WKDictionarySetItem(messageBody.get(), altitudeKeyWK.get(), altitudeWK.get());
WKRetainPtr<WKStringRef> providesAltitudeAccuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesAltitudeAccuracy"));
WKRetainPtr<WKBooleanRef> providesAltitudeAccuracyWK(AdoptWK, WKBooleanCreate(providesAltitudeAccuracy));
- WKDictionaryAddItem(messageBody.get(), providesAltitudeAccuracyKeyWK.get(), providesAltitudeAccuracyWK.get());
+ WKDictionarySetItem(messageBody.get(), providesAltitudeAccuracyKeyWK.get(), providesAltitudeAccuracyWK.get());
WKRetainPtr<WKStringRef> altitudeAccuracyKeyWK(AdoptWK, WKStringCreateWithUTF8CString("altitudeAccuracy"));
WKRetainPtr<WKDoubleRef> altitudeAccuracyWK(AdoptWK, WKDoubleCreate(altitudeAccuracy));
- WKDictionaryAddItem(messageBody.get(), altitudeAccuracyKeyWK.get(), altitudeAccuracyWK.get());
+ WKDictionarySetItem(messageBody.get(), altitudeAccuracyKeyWK.get(), altitudeAccuracyWK.get());
WKRetainPtr<WKStringRef> providesHeadingKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesHeading"));
WKRetainPtr<WKBooleanRef> providesHeadingWK(AdoptWK, WKBooleanCreate(providesHeading));
- WKDictionaryAddItem(messageBody.get(), providesHeadingKeyWK.get(), providesHeadingWK.get());
+ WKDictionarySetItem(messageBody.get(), providesHeadingKeyWK.get(), providesHeadingWK.get());
WKRetainPtr<WKStringRef> headingKeyWK(AdoptWK, WKStringCreateWithUTF8CString("heading"));
WKRetainPtr<WKDoubleRef> headingWK(AdoptWK, WKDoubleCreate(heading));
- WKDictionaryAddItem(messageBody.get(), headingKeyWK.get(), headingWK.get());
+ WKDictionarySetItem(messageBody.get(), headingKeyWK.get(), headingWK.get());
WKRetainPtr<WKStringRef> providesSpeedKeyWK(AdoptWK, WKStringCreateWithUTF8CString("providesSpeed"));
WKRetainPtr<WKBooleanRef> providesSpeedWK(AdoptWK, WKBooleanCreate(providesSpeed));
- WKDictionaryAddItem(messageBody.get(), providesSpeedKeyWK.get(), providesSpeedWK.get());
+ WKDictionarySetItem(messageBody.get(), providesSpeedKeyWK.get(), providesSpeedWK.get());
WKRetainPtr<WKStringRef> speedKeyWK(AdoptWK, WKStringCreateWithUTF8CString("speed"));
WKRetainPtr<WKDoubleRef> speedWK(AdoptWK, WKDoubleCreate(speed));
- WKDictionaryAddItem(messageBody.get(), speedKeyWK.get(), speedWK.get());
+ WKDictionarySetItem(messageBody.get(), speedKeyWK.get(), speedWK.get());
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::setMockGeolocationPositionUnavailableError(WKStringRef errorMessage)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetMockGeolocationPositionUnavailableError"));
- WKBundlePostMessage(m_bundle, messageName.get(), errorMessage);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), errorMessage);
+}
+
+bool InjectedBundle::isGeolocationProviderActive() const
+{
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("IsGeolocationClientActive"));
+ WKTypeRef resultToPass = 0;
+ WKBundlePagePostSynchronousMessageForTesting(page()->page(), messageName.get(), 0, &resultToPass);
+ WKRetainPtr<WKBooleanRef> isActive(AdoptWK, static_cast<WKBooleanRef>(resultToPass));
+
+ return WKBooleanGetValue(isActive.get());
+}
+
+void InjectedBundle::setUserMediaPermission(bool enabled)
+{
+ auto messageName = adoptWK(WKStringCreateWithUTF8CString("SetUserMediaPermission"));
+ auto messageBody = adoptWK(WKBooleanCreate(enabled));
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
+}
+
+void InjectedBundle::setUserMediaPermissionForOrigin(bool permission, WKStringRef url)
+{
+ auto messageName = adoptWK(WKStringCreateWithUTF8CString("SetUserMediaPermissionForOrigin"));
+ WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> permissionKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permission"));
+ WKRetainPtr<WKBooleanRef> permissionWK(AdoptWK, WKBooleanCreate(permission));
+ WKDictionarySetItem(messageBody.get(), permissionKeyWK.get(), permissionWK.get());
+
+ WKRetainPtr<WKStringRef> urlKeyWK(AdoptWK, WKStringCreateWithUTF8CString("url"));
+ WKDictionarySetItem(messageBody.get(), urlKeyWK.get(), url);
+
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive)
@@ -461,29 +549,32 @@ void InjectedBundle::setCustomPolicyDelegate(bool enabled, bool permissive)
WKRetainPtr<WKStringRef> enabledKeyWK(AdoptWK, WKStringCreateWithUTF8CString("enabled"));
WKRetainPtr<WKBooleanRef> enabledWK(AdoptWK, WKBooleanCreate(enabled));
- WKDictionaryAddItem(messageBody.get(), enabledKeyWK.get(), enabledWK.get());
+ WKDictionarySetItem(messageBody.get(), enabledKeyWK.get(), enabledWK.get());
WKRetainPtr<WKStringRef> permissiveKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permissive"));
WKRetainPtr<WKBooleanRef> permissiveWK(AdoptWK, WKBooleanCreate(permissive));
- WKDictionaryAddItem(messageBody.get(), permissiveKeyWK.get(), permissiveWK.get());
+ WKDictionarySetItem(messageBody.get(), permissiveKeyWK.get(), permissiveWK.get());
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
-void InjectedBundle::setVisibilityState(WKPageVisibilityState visibilityState, bool isInitialState)
+void InjectedBundle::setHidden(bool hidden)
{
- WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetVisibilityState"));
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetHidden"));
WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate());
- WKRetainPtr<WKStringRef> visibilityStateKeyWK(AdoptWK, WKStringCreateWithUTF8CString("visibilityState"));
- WKRetainPtr<WKUInt64Ref> visibilityStateWK(AdoptWK, WKUInt64Create(visibilityState));
- WKDictionaryAddItem(messageBody.get(), visibilityStateKeyWK.get(), visibilityStateWK.get());
+ WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("hidden"));
+ WKRetainPtr<WKBooleanRef> isInitialWK(AdoptWK, WKBooleanCreate(hidden));
+ WKDictionarySetItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get());
- WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("isInitialState"));
- WKRetainPtr<WKBooleanRef> isInitialWK(AdoptWK, WKBooleanCreate(isInitialState));
- WKDictionaryAddItem(messageBody.get(), isInitialKeyWK.get(), isInitialWK.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
+}
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+void InjectedBundle::setCacheModel(int model)
+{
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetCacheModel"));
+ WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(model));
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
bool InjectedBundle::shouldProcessWorkQueue() const
@@ -493,7 +584,7 @@ bool InjectedBundle::shouldProcessWorkQueue() const
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("IsWorkQueueEmpty"));
WKTypeRef resultToPass = 0;
- WKBundlePostSynchronousMessage(m_bundle, messageName.get(), 0, &resultToPass);
+ WKBundlePagePostSynchronousMessageForTesting(page()->page(), messageName.get(), 0, &resultToPass);
WKRetainPtr<WKBooleanRef> isEmpty(AdoptWK, static_cast<WKBooleanRef>(resultToPass));
return !WKBooleanGetValue(isEmpty.get());
@@ -502,7 +593,7 @@ bool InjectedBundle::shouldProcessWorkQueue() const
void InjectedBundle::processWorkQueue()
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("ProcessWorkQueue"));
- WKBundlePostMessage(m_bundle, messageName.get(), 0);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), 0);
}
void InjectedBundle::queueBackNavigation(unsigned howFarBackward)
@@ -511,7 +602,7 @@ void InjectedBundle::queueBackNavigation(unsigned howFarBackward)
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueBackNavigation"));
WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(howFarBackward));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
void InjectedBundle::queueForwardNavigation(unsigned howFarForward)
@@ -520,10 +611,10 @@ void InjectedBundle::queueForwardNavigation(unsigned howFarForward)
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueForwardNavigation"));
WKRetainPtr<WKUInt64Ref> messageBody(AdoptWK, WKUInt64Create(howFarForward));
- WKBundlePostMessage(m_bundle, messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), messageBody.get());
}
-void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target)
+void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target, bool shouldOpenExternalURLs)
{
m_useWorkQueue = true;
@@ -532,12 +623,16 @@ void InjectedBundle::queueLoad(WKStringRef url, WKStringRef target)
WKRetainPtr<WKMutableDictionaryRef> loadData(AdoptWK, WKMutableDictionaryCreate());
WKRetainPtr<WKStringRef> urlKey(AdoptWK, WKStringCreateWithUTF8CString("url"));
- WKDictionaryAddItem(loadData.get(), urlKey.get(), url);
+ WKDictionarySetItem(loadData.get(), urlKey.get(), url);
WKRetainPtr<WKStringRef> targetKey(AdoptWK, WKStringCreateWithUTF8CString("target"));
- WKDictionaryAddItem(loadData.get(), targetKey.get(), target);
+ WKDictionarySetItem(loadData.get(), targetKey.get(), target);
+
+ WKRetainPtr<WKStringRef> shouldOpenExternalURLsKey(AdoptWK, WKStringCreateWithUTF8CString("shouldOpenExternalURLs"));
+ WKRetainPtr<WKBooleanRef> shouldOpenExternalURLsValue(AdoptWK, WKBooleanCreate(shouldOpenExternalURLs));
+ WKDictionarySetItem(loadData.get(), shouldOpenExternalURLsKey.get(), shouldOpenExternalURLsValue.get());
- WKBundlePostMessage(m_bundle, messageName.get(), loadData.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), loadData.get());
}
void InjectedBundle::queueLoadHTMLString(WKStringRef content, WKStringRef baseURL, WKStringRef unreachableURL)
@@ -549,19 +644,19 @@ void InjectedBundle::queueLoadHTMLString(WKStringRef content, WKStringRef baseUR
WKRetainPtr<WKMutableDictionaryRef> loadData(AdoptWK, WKMutableDictionaryCreate());
WKRetainPtr<WKStringRef> contentKey(AdoptWK, WKStringCreateWithUTF8CString("content"));
- WKDictionaryAddItem(loadData.get(), contentKey.get(), content);
+ WKDictionarySetItem(loadData.get(), contentKey.get(), content);
if (baseURL) {
WKRetainPtr<WKStringRef> baseURLKey(AdoptWK, WKStringCreateWithUTF8CString("baseURL"));
- WKDictionaryAddItem(loadData.get(), baseURLKey.get(), baseURL);
+ WKDictionarySetItem(loadData.get(), baseURLKey.get(), baseURL);
}
if (unreachableURL) {
WKRetainPtr<WKStringRef> unreachableURLKey(AdoptWK, WKStringCreateWithUTF8CString("unreachableURL"));
- WKDictionaryAddItem(loadData.get(), unreachableURLKey.get(), unreachableURL);
+ WKDictionarySetItem(loadData.get(), unreachableURLKey.get(), unreachableURL);
}
- WKBundlePostMessage(m_bundle, messageName.get(), loadData.get());
+ WKBundlePagePostMessage(page()->page(), messageName.get(), loadData.get());
}
void InjectedBundle::queueReload()
@@ -569,7 +664,7 @@ void InjectedBundle::queueReload()
m_useWorkQueue = true;
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueReload"));
- WKBundlePostMessage(m_bundle, messageName.get(), 0);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), 0);
}
void InjectedBundle::queueLoadingScript(WKStringRef script)
@@ -577,7 +672,7 @@ void InjectedBundle::queueLoadingScript(WKStringRef script)
m_useWorkQueue = true;
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueLoadingScript"));
- WKBundlePostMessage(m_bundle, messageName.get(), script);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), script);
}
void InjectedBundle::queueNonLoadingScript(WKStringRef script)
@@ -585,7 +680,14 @@ void InjectedBundle::queueNonLoadingScript(WKStringRef script)
m_useWorkQueue = true;
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("QueueNonLoadingScript"));
- WKBundlePostMessage(m_bundle, messageName.get(), script);
+ WKBundlePagePostMessage(page()->page(), messageName.get(), script);
+}
+
+bool InjectedBundle::isAllowedHost(WKStringRef host)
+{
+ if (m_allowedHosts.isEmpty())
+ return false;
+ return m_allowedHosts.contains(toWTFString(host));
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
index 170c8ac70..0f0e1f130 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.h
@@ -31,11 +31,10 @@
#include "GCController.h"
#include "TestRunner.h"
#include "TextInputController.h"
-#include <WebKit2/WKBase.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBase.h>
+#include <WebKit/WKRetainPtr.h>
#include <sstream>
#include <wtf/Forward.h>
-#include <wtf/OwnPtr.h>
#include <wtf/RefPtr.h>
#include <wtf/Vector.h>
@@ -45,7 +44,7 @@ class InjectedBundlePage;
class InjectedBundle {
public:
- static InjectedBundle& shared();
+ static InjectedBundle& singleton();
// Initialize the InjectedBundle.
void initialize(WKBundleRef, WKTypeRef initializationUserData);
@@ -67,7 +66,8 @@ public:
void done();
void setAudioResult(WKDataRef audioData) { m_audioResult = audioData; }
- void setPixelResult(WKImageRef image) { m_pixelResult = image; }
+ void setPixelResult(WKImageRef image) { m_pixelResult = image; m_pixelResultIsPending = false; }
+ void setPixelResultIsPending(bool isPending) { m_pixelResultIsPending = isPending; }
void setRepaintRects(WKArrayRef rects) { m_repaintRects = rects; }
bool isTestRunning() { return m_state == Testing; }
@@ -86,29 +86,40 @@ public:
void postSetBackingScaleFactor(double);
void postSetWindowIsKey(bool);
void postSimulateWebNotificationClick(uint64_t notificationID);
+ void postSetAddsVisitedLinks(bool);
// Geolocation.
void setGeolocationPermission(bool);
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage);
+ bool isGeolocationProviderActive() const;
+
+ // MediaStream.
+ void setUserMediaPermission(bool);
+ void setUserMediaPermissionForOrigin(bool permission, WKStringRef url);
// Policy delegate.
void setCustomPolicyDelegate(bool enabled, bool permissive);
// Page Visibility.
- void setVisibilityState(WKPageVisibilityState, bool isInitialState);
+ void setHidden(bool);
+
+ // Cache.
+ void setCacheModel(int);
// Work queue.
bool shouldProcessWorkQueue() const;
void processWorkQueue();
void queueBackNavigation(unsigned howFarBackward);
void queueForwardNavigation(unsigned howFarForward);
- void queueLoad(WKStringRef url, WKStringRef target);
+ void queueLoad(WKStringRef url, WKStringRef target, bool shouldOpenExternalURLs = false);
void queueLoadHTMLString(WKStringRef content, WKStringRef baseURL = 0, WKStringRef unreachableURL = 0);
void queueReload();
void queueLoadingScript(WKStringRef script);
void queueNonLoadingScript(WKStringRef script);
+ bool isAllowedHost(WKStringRef);
+
private:
InjectedBundle();
~InjectedBundle();
@@ -134,7 +145,7 @@ private:
WKBundleRef m_bundle;
WKBundlePageGroupRef m_pageGroup;
- Vector<OwnPtr<InjectedBundlePage> > m_pages;
+ Vector<std::unique_ptr<InjectedBundlePage>> m_pages;
RefPtr<AccessibilityController> m_accessibilityController;
RefPtr<TestRunner> m_testRunner;
@@ -155,10 +166,13 @@ private:
bool m_useWaitToDumpWatchdogTimer;
bool m_useWorkQueue;
int m_timeout;
+ bool m_pixelResultIsPending { false };
WKRetainPtr<WKDataRef> m_audioResult;
WKRetainPtr<WKImageRef> m_pixelResult;
WKRetainPtr<WKArrayRef> m_repaintRects;
+
+ Vector<String> m_allowedHosts;
};
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.pro b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.pro
deleted file mode 100644
index 18842dd53..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundle.pro
+++ /dev/null
@@ -1,16 +0,0 @@
-# -------------------------------------------------------------------
-# Main project file for WebKitTestRunner's InjectedBundle
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = subdirs
-CONFIG += ordered
-
-derived_sources.file = DerivedSources.pri
-target.file = Target.pri
-
-SUBDIRS = derived_sources target
-
-addStrictSubdirOrderBetween(derived_sources, target)
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp
index 724407797..4f1272214 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundleMain.cpp
@@ -26,14 +26,10 @@
#include "config.h"
#include "InjectedBundle.h"
-#include <WebKit2/WKBundleInitialize.h>
+#include <WebKit/WKBundleInitialize.h>
-#if defined(WIN32) || defined(_WIN32)
-extern "C" __declspec(dllexport)
-#else
extern "C"
-#endif
void WKBundleInitialize(WKBundleRef bundle, WKTypeRef initializationUserData)
{
- WTR::InjectedBundle::shared().initialize(bundle, initializationUserData);
+ WTR::InjectedBundle::singleton().initialize(bundle, initializationUserData);
}
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
index e3002d447..2095b1c1a 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.cpp
@@ -31,19 +31,20 @@
#include "WebCoreTestSupport.h"
#include <cmath>
#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit2/WKArray.h>
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundleBackForwardList.h>
-#include <WebKit2/WKBundleBackForwardListItem.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundleFramePrivate.h>
-#include <WebKit2/WKBundleHitTestResult.h>
-#include <WebKit2/WKBundleNavigationAction.h>
-#include <WebKit2/WKBundleNodeHandlePrivate.h>
-#include <WebKit2/WKBundlePagePrivate.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKSecurityOrigin.h>
-#include <WebKit2/WKURLRequest.h>
+#include <WebKit/WKArray.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundleBackForwardList.h>
+#include <WebKit/WKBundleBackForwardListItem.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundleFramePrivate.h>
+#include <WebKit/WKBundleHitTestResult.h>
+#include <WebKit/WKBundleNavigationAction.h>
+#include <WebKit/WKBundleNavigationActionPrivate.h>
+#include <WebKit/WKBundleNodeHandlePrivate.h>
+#include <WebKit/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKSecurityOriginRef.h>
+#include <WebKit/WKURLRequest.h>
#include <wtf/HashMap.h>
#include <wtf/text/CString.h>
#include <wtf/text/StringBuilder.h>
@@ -238,44 +239,24 @@ static const char divider = '/';
static inline WTF::String pathSuitableForTestResult(WKURLRef fileUrl)
{
if (!fileUrl)
- return String();
-
- WKRetainPtr<WKStringRef> schemeString = adoptWK(WKURLCopyScheme(fileUrl));
- if (!isLocalFileScheme(schemeString.get()))
- return toWTFString(adoptWK(WKURLCopyString(fileUrl)));
-
- String pathString = toWTFString(adoptWK(WKURLCopyPath(fileUrl)));
- StringBuilder stringBuilder;
-
- // Remove the leading path from file urls.
- const size_t indexBaseName = pathString.reverseFind(divider);
- if (indexBaseName != notFound) {
- const size_t indexDirName = pathString.reverseFind(divider, indexBaseName - 1);
- if (indexDirName != notFound)
- stringBuilder.append(pathString.substring(indexDirName + 1, indexBaseName - indexDirName - 1));
- stringBuilder.append(divider);
- stringBuilder.append(pathString.substring(indexBaseName + 1)); // Filename.
- } else {
- stringBuilder.append(divider);
- stringBuilder.append(pathString); // Return "/pathString".
- }
-
- return stringBuilder.toString();
-}
-
-static inline WTF::String urlSuitableForTestResult(WKURLRef fileUrl)
-{
- if (!fileUrl)
- return String();
+ return "(null)";
WKRetainPtr<WKStringRef> schemeString = adoptWK(WKURLCopyScheme(fileUrl));
if (!isLocalFileScheme(schemeString.get()))
return toWTFString(adoptWK(WKURLCopyString(fileUrl)));
- WTF::String urlString = toWTFString(adoptWK(WKURLCopyString(fileUrl)));
- const size_t indexBaseName = urlString.reverseFind(divider);
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ WKRetainPtr<WKURLRef> mainFrameURL = adoptWK(WKBundleFrameCopyURL(mainFrame));
+ if (!mainFrameURL)
+ mainFrameURL = adoptWK(WKBundleFrameCopyProvisionalURL(mainFrame));
- return (indexBaseName == notFound) ? urlString : urlString.substring(indexBaseName + 1);
+ String pathString = toWTFString(adoptWK(WKURLCopyPath(fileUrl)));
+ String mainFrameURLPathString = toWTFString(adoptWK(WKURLCopyPath(mainFrameURL.get())));
+ String basePath = mainFrameURLPathString.substring(0, mainFrameURLPathString.reverseFind(divider) + 1);
+
+ if (!basePath.isEmpty() && pathString.startsWith(basePath))
+ return pathString.substring(basePath.length());
+ return toWTFString(adoptWK(WKURLCopyLastPathComponent(fileUrl))); // We lose some information here, but it's better than exposing a full path, which is always machine specific.
}
static HashMap<uint64_t, String> assignedUrlsCache;
@@ -292,9 +273,8 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
: m_page(page)
, m_world(AdoptWK, WKBundleScriptWorldCreateWorld())
{
- WKBundlePageLoaderClient loaderClient = {
- kWKBundlePageLoaderClientCurrentVersion,
- this,
+ WKBundlePageLoaderClientV8 loaderClient = {
+ { 8, this },
didStartProvisionalLoadForFrame,
didReceiveServerRedirectForProvisionalLoadForFrame,
didFailProvisionalLoadWithErrorForFrame,
@@ -314,7 +294,7 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
willPerformClientRedirectForFrame,
didHandleOnloadEventsForFrame,
0, // didLayoutForFrame
- 0, // didNewFirstVisuallyNonEmptyLayoutForFrame
+ 0, // didNewFirstVisuallyNonEmptyLayout_unavailable
didDetectXSSForFrame,
0, // shouldGoToBackForwardListItem
0, // didCreateGlobalObjectForFrame
@@ -329,12 +309,13 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
0, // featuresUsedInPage
0, // willLoadURLRequest
0, // willLoadDataRequest
+ 0, // willDestroyFrame_unavailable
+ 0, // userAgentForURL
};
- WKBundlePageSetPageLoaderClient(m_page, &loaderClient);
+ WKBundlePageSetPageLoaderClient(m_page, &loaderClient.base);
- WKBundlePageResourceLoadClient resourceLoadClient = {
- kWKBundlePageResourceLoadClientCurrentVersion,
- this,
+ WKBundlePageResourceLoadClientV1 resourceLoadClient = {
+ { 1, this },
didInitiateLoadForResource,
willSendRequestForFrame,
didReceiveResponseForResource,
@@ -344,21 +325,19 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
shouldCacheResponse,
0 // shouldUseCredentialStorage
};
- WKBundlePageSetResourceLoadClient(m_page, &resourceLoadClient);
+ WKBundlePageSetResourceLoadClient(m_page, &resourceLoadClient.base);
- WKBundlePagePolicyClient policyClient = {
- kWKBundlePagePolicyClientCurrentVersion,
- this,
+ WKBundlePagePolicyClientV0 policyClient = {
+ { 0, this },
decidePolicyForNavigationAction,
decidePolicyForNewWindowAction,
decidePolicyForResponse,
unableToImplementPolicy
};
- WKBundlePageSetPolicyClient(m_page, &policyClient);
+ WKBundlePageSetPolicyClient(m_page, &policyClient.base);
- WKBundlePageUIClient uiClient = {
- kWKBundlePageUIClientCurrentVersion,
- this,
+ WKBundlePageUIClientV2 uiClient = {
+ { 2, this },
willAddMessageToConsole,
willSetStatusbarText,
willRunJavaScriptAlert,
@@ -380,11 +359,10 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
0, /*plugInExtraStyleSheet*/
0, /*plugInExtraScript*/
};
- WKBundlePageSetUIClient(m_page, &uiClient);
+ WKBundlePageSetUIClient(m_page, &uiClient.base);
- WKBundlePageEditorClient editorClient = {
- kWKBundlePageEditorClientCurrentVersion,
- this,
+ WKBundlePageEditorClientV1 editorClient = {
+ { 1, this },
shouldBeginEditing,
shouldEndEditing,
shouldInsertNode,
@@ -400,12 +378,11 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
0, /* getPasteboardDataForRange */
0 /* didWriteToPasteboard */
};
- WKBundlePageSetEditorClient(m_page, &editorClient);
+ WKBundlePageSetEditorClient(m_page, &editorClient.base);
#if ENABLE(FULLSCREEN_API)
- WKBundlePageFullScreenClient fullScreenClient = {
- kWKBundlePageFullScreenClientCurrentVersion,
- this,
+ WKBundlePageFullScreenClientV1 fullScreenClient = {
+ { 1, this },
supportsFullScreen,
enterFullScreenForElement,
exitFullScreenForElement,
@@ -413,7 +390,7 @@ InjectedBundlePage::InjectedBundlePage(WKBundlePageRef page)
beganExitFullScreen,
closeFullScreen,
};
- WKBundlePageSetFullScreenClient(m_page, &fullScreenClient);
+ WKBundlePageSetFullScreenClient(m_page, &fullScreenClient.base);
#endif
}
@@ -446,6 +423,11 @@ void InjectedBundlePage::prepare()
void InjectedBundlePage::resetAfterTest()
{
WKBundleFrameRef frame = WKBundlePageGetMainFrame(m_page);
+
+ // WebKit currently doesn't reset focus even when navigating to a new page. This may or may not be a bug
+ // (see <https://bugs.webkit.org/show_bug.cgi?id=138334>), however for tests, we want to start each one with a clean state.
+ WKBundleFrameFocus(frame);
+
JSGlobalContextRef context = WKBundleFrameGetJavaScriptContext(frame);
#if PLATFORM(QT)
DumpRenderTreeSupportQt::resetInternalsObject(context);
@@ -453,6 +435,9 @@ void InjectedBundlePage::resetAfterTest()
WebCoreTestSupport::resetInternalsObject(context);
#endif
assignedUrlsCache.clear();
+
+ // User scripts need to be removed after the test and before loading about:blank, as otherwise they would run in about:blank, and potentially leak results into a subsequest test.
+ WKBundlePageRemoveAllUserContent(m_page);
}
// Loader Client Callbacks
@@ -490,7 +475,7 @@ static void dumpLoadEvent(WKBundleFrameRef frame, const char* eventName)
stringBuilder.appendLiteral(" - ");
stringBuilder.append(eventName);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ InjectedBundle::singleton().outputText(stringBuilder.toString());
}
static inline void dumpRequestDescriptionSuitableForTestResult(WKURLRequestRef request, StringBuilder& stringBuilder)
@@ -502,7 +487,7 @@ static inline void dumpRequestDescriptionSuitableForTestResult(WKURLRequestRef r
stringBuilder.appendLiteral("<NSURLRequest URL ");
stringBuilder.append(pathSuitableForTestResult(url.get()));
stringBuilder.appendLiteral(", main document URL ");
- stringBuilder.append(urlSuitableForTestResult(firstParty.get()));
+ stringBuilder.append(pathSuitableForTestResult(firstParty.get()));
stringBuilder.appendLiteral(", http method ");
if (WKStringIsEmpty(httpMethod.get()))
@@ -614,7 +599,7 @@ void InjectedBundlePage::didCancelClientRedirectForFrame(WKBundlePageRef page, W
void InjectedBundlePage::willPerformClientRedirectForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKURLRef url, double delay, double date, const void* clientInfo)
{
- static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->willPerformClientRedirectForFrame(frame, url, delay, date);
+ static_cast<InjectedBundlePage*>(const_cast<void*>(clientInfo))->willPerformClientRedirectForFrame(page, frame, url, delay, date);
}
void InjectedBundlePage::didSameDocumentNavigationForFrame(WKBundlePageRef page, WKBundleFrameRef frame, WKSameDocumentNavigationType type, WKTypeRef*, const void* clientInfo)
@@ -679,49 +664,61 @@ bool InjectedBundlePage::shouldCacheResponse(WKBundlePageRef page, WKBundleFrame
void InjectedBundlePage::didStartProvisionalLoadForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
+ if (!injectedBundle.testRunner()->testURL()) {
+ WKRetainPtr<WKURLRef> testURL = adoptWK(WKBundleFrameCopyProvisionalURL(frame));
+ injectedBundle.testRunner()->setTestURL(testURL.get());
+ }
+
platformDidStartProvisionalLoadForFrame(frame);
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
dumpLoadEvent(frame, "didStartProvisionalLoadForFrame");
- if (!InjectedBundle::shared().topLoadingFrame())
- InjectedBundle::shared().setTopLoadingFrame(frame);
+ if (!injectedBundle.topLoadingFrame())
+ injectedBundle.setTopLoadingFrame(frame);
- if (InjectedBundle::shared().testRunner()->shouldStopProvisionalFrameLoads())
+ if (injectedBundle.testRunner()->shouldStopProvisionalFrameLoads())
dumpLoadEvent(frame, "stopping load in didStartProvisionalLoadForFrame callback");
}
void InjectedBundlePage::didReceiveServerRedirectForProvisionalLoadForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
return;
dumpLoadEvent(frame, "didReceiveServerRedirectForProvisionalLoadForFrame");
}
-void InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame(WKBundleFrameRef frame, WKErrorRef)
+void InjectedBundlePage::didFailProvisionalLoadWithErrorForFrame(WKBundleFrameRef frame, WKErrorRef error)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks()) {
dumpLoadEvent(frame, "didFailProvisionalLoadWithError");
+ if (WKErrorGetErrorCode(error) == kWKErrorCodeCannotShowURL)
+ dumpLoadEvent(frame, "(kWKErrorCodeCannotShowURL)");
+ }
frameDidChangeLocation(frame);
}
void InjectedBundlePage::didCommitLoadForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
return;
dumpLoadEvent(frame, "didCommitLoadForFrame");
@@ -729,13 +726,14 @@ void InjectedBundlePage::didCommitLoadForFrame(WKBundleFrameRef frame)
void InjectedBundlePage::didFinishProgress()
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpProgressFinishedCallback())
+ if (!injectedBundle.testRunner()->shouldDumpProgressFinishedCallback())
return;
- InjectedBundle::shared().outputText("postProgressFinishedNotification\n");
+ injectedBundle.outputText("postProgressFinishedNotification\n");
}
enum FrameNamePolicy { ShouldNotIncludeFrameName, ShouldIncludeFrameName };
@@ -859,24 +857,25 @@ void InjectedBundlePage::dumpDOMAsWebArchive(WKBundleFrameRef frame, StringBuild
void InjectedBundlePage::dump()
{
- ASSERT(InjectedBundle::shared().isTestRunning());
-
- InjectedBundle::shared().testRunner()->invalidateWaitToDumpWatchdogTimer();
+ auto& injectedBundle = InjectedBundle::singleton();
+ ASSERT(injectedBundle.isTestRunning());
// Force a paint before dumping. This matches DumpRenderTree on Windows. (DumpRenderTree on Mac
// does this at a slightly different time.) See <http://webkit.org/b/55469> for details.
WKBundlePageForceRepaint(m_page);
WKBundleFrameRef frame = WKBundlePageGetMainFrame(m_page);
- WTF::String url = toWTFString(adoptWK(WKURLCopyString(adoptWK(WKBundleFrameCopyURL(frame)).get())));
- if (url.find("dumpAsText/") != WTF::notFound)
- InjectedBundle::shared().testRunner()->dumpAsText(false);
+ WKRetainPtr<WKURLRef> urlRef = adoptWK(WKBundleFrameCopyURL(frame));
+ String url = toWTFString(adoptWK(WKURLCopyString(urlRef.get())));
+ WKRetainPtr<WKStringRef> mimeType = adoptWK(WKBundleFrameCopyMIMETypeForResourceWithURL(frame, urlRef.get()));
+ if (url.find("dumpAsText/") != notFound || WKStringIsEqualToUTF8CString(mimeType.get(), "text/plain"))
+ injectedBundle.testRunner()->dumpAsText(false);
StringBuilder stringBuilder;
- switch (InjectedBundle::shared().testRunner()->whatToDump()) {
+ switch (injectedBundle.testRunner()->whatToDump()) {
case TestRunner::RenderTree: {
- if (InjectedBundle::shared().testRunner()->isPrinting())
+ if (injectedBundle.testRunner()->isPrinting())
stringBuilder.append(toWTFString(adoptWK(WKBundlePageCopyRenderTreeExternalRepresentationForPrinting(m_page)).get()));
else
stringBuilder.append(toWTFString(adoptWK(WKBundlePageCopyRenderTreeExternalRepresentation(m_page)).get()));
@@ -895,34 +894,52 @@ void InjectedBundlePage::dump()
break;
}
- if (InjectedBundle::shared().testRunner()->shouldDumpAllFrameScrollPositions())
+ if (injectedBundle.testRunner()->shouldDumpAllFrameScrollPositions())
dumpAllFrameScrollPositions(stringBuilder);
- else if (InjectedBundle::shared().testRunner()->shouldDumpMainFrameScrollPosition())
+ else if (injectedBundle.testRunner()->shouldDumpMainFrameScrollPosition())
dumpFrameScrollPosition(WKBundlePageGetMainFrame(m_page), stringBuilder);
- if (InjectedBundle::shared().testRunner()->shouldDumpBackForwardListsForAllWindows())
- InjectedBundle::shared().dumpBackForwardListsForAllPages(stringBuilder);
+ if (injectedBundle.testRunner()->shouldDumpBackForwardListsForAllWindows())
+ injectedBundle.dumpBackForwardListsForAllPages(stringBuilder);
- if (InjectedBundle::shared().shouldDumpPixels() && InjectedBundle::shared().testRunner()->shouldDumpPixels()) {
- WKSnapshotOptions options = kWKSnapshotOptionsShareable | kWKSnapshotOptionsInViewCoordinates;
- if (InjectedBundle::shared().testRunner()->shouldDumpSelectionRect())
- options |= kWKSnapshotOptionsPaintSelectionRectangle;
+ if (injectedBundle.shouldDumpPixels() && injectedBundle.testRunner()->shouldDumpPixels()) {
+#if PLATFORM(IOS)
+ // IOS doesn't implement PlatformWebView::windowSnapshotImage() yet, so we need to generate the snapshot in the web process.
+ bool shouldCreateSnapshot = true;
+#else
+ bool shouldCreateSnapshot = injectedBundle.testRunner()->isPrinting();
+#endif
+ if (shouldCreateSnapshot) {
+ WKSnapshotOptions options = kWKSnapshotOptionsShareable;
+ WKRect snapshotRect = WKBundleFrameGetVisibleContentBounds(WKBundlePageGetMainFrame(m_page));
+
+ if (injectedBundle.testRunner()->isPrinting())
+ options |= kWKSnapshotOptionsPrinting;
+ else {
+ options |= kWKSnapshotOptionsInViewCoordinates;
+ if (injectedBundle.testRunner()->shouldDumpSelectionRect())
+ options |= kWKSnapshotOptionsPaintSelectionRectangle;
+ }
+
+ injectedBundle.setPixelResult(adoptWK(WKBundlePageCreateSnapshotWithOptions(m_page, snapshotRect, options)).get());
+ } else
+ injectedBundle.setPixelResultIsPending(true);
- InjectedBundle::shared().setPixelResult(adoptWK(WKBundlePageCreateSnapshotWithOptions(m_page, WKBundleFrameGetVisibleContentBounds(WKBundlePageGetMainFrame(m_page)), options)).get());
- if (WKBundlePageIsTrackingRepaints(m_page))
- InjectedBundle::shared().setRepaintRects(adoptWK(WKBundlePageCopyTrackedRepaintRects(m_page)).get());
+ if (WKBundlePageIsTrackingRepaints(m_page) && !injectedBundle.testRunner()->isPrinting())
+ injectedBundle.setRepaintRects(adoptWK(WKBundlePageCopyTrackedRepaintRects(m_page)).get());
}
- InjectedBundle::shared().outputText(stringBuilder.toString());
- InjectedBundle::shared().done();
+ injectedBundle.outputText(stringBuilder.toString());
+ injectedBundle.done();
}
void InjectedBundlePage::didFinishLoadForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
dumpLoadEvent(frame, "didFinishLoadForFrame");
frameDidChangeLocation(frame, /*shouldDump*/ true);
@@ -930,10 +947,11 @@ void InjectedBundlePage::didFinishLoadForFrame(WKBundleFrameRef frame)
void InjectedBundlePage::didFailLoadWithErrorForFrame(WKBundleFrameRef frame, WKErrorRef)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
dumpLoadEvent(frame, "didFailLoadWithError");
frameDidChangeLocation(frame);
@@ -941,29 +959,31 @@ void InjectedBundlePage::didFailLoadWithErrorForFrame(WKBundleFrameRef frame, WK
void InjectedBundlePage::didReceiveTitleForFrame(WKStringRef title, WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
StringBuilder stringBuilder;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks()) {
dumpFrameDescriptionSuitableForTestResult(frame, stringBuilder);
stringBuilder.appendLiteral(" - didReceiveTitle: ");
stringBuilder.append(toWTFString(title));
stringBuilder.append('\n');
}
- if (InjectedBundle::shared().testRunner()->shouldDumpTitleChanges()) {
+ if (injectedBundle.testRunner()->shouldDumpTitleChanges()) {
stringBuilder.appendLiteral("TITLE CHANGED: '");
stringBuilder.append(toWTFString(title));
stringBuilder.appendLiteral("'\n");
}
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didClearWindowForFrame(WKBundleFrameRef frame, WKBundleScriptWorldRef world)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
JSGlobalContextRef context = WKBundleFrameGetJavaScriptContextForWorld(frame, world);
@@ -974,12 +994,12 @@ void InjectedBundlePage::didClearWindowForFrame(WKBundleFrameRef frame, WKBundle
return;
}
- JSValueRef exception = 0;
- InjectedBundle::shared().testRunner()->makeWindowObject(context, window, &exception);
- InjectedBundle::shared().gcController()->makeWindowObject(context, window, &exception);
- InjectedBundle::shared().eventSendingController()->makeWindowObject(context, window, &exception);
- InjectedBundle::shared().textInputController()->makeWindowObject(context, window, &exception);
- InjectedBundle::shared().accessibilityController()->makeWindowObject(context, window, &exception);
+ JSValueRef exception = nullptr;
+ injectedBundle.testRunner()->makeWindowObject(context, window, &exception);
+ injectedBundle.gcController()->makeWindowObject(context, window, &exception);
+ injectedBundle.eventSendingController()->makeWindowObject(context, window, &exception);
+ injectedBundle.textInputController()->makeWindowObject(context, window, &exception);
+ injectedBundle.accessibilityController()->makeWindowObject(context, window, &exception);
#if PLATFORM(QT)
DumpRenderTreeSupportQt::injectInternalsObject(context);
@@ -990,21 +1010,23 @@ void InjectedBundlePage::didClearWindowForFrame(WKBundleFrameRef frame, WKBundle
void InjectedBundlePage::didCancelClientRedirectForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
return;
dumpLoadEvent(frame, "didCancelClientRedirectForFrame");
}
-void InjectedBundlePage::willPerformClientRedirectForFrame(WKBundleFrameRef frame, WKURLRef url, double delay, double date)
+void InjectedBundlePage::willPerformClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef frame, WKURLRef url, double delay, double date)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
return;
StringBuilder stringBuilder;
@@ -1012,19 +1034,31 @@ void InjectedBundlePage::willPerformClientRedirectForFrame(WKBundleFrameRef fram
stringBuilder.appendLiteral(" - willPerformClientRedirectToURL: ");
stringBuilder.append(pathSuitableForTestResult(url));
stringBuilder.appendLiteral(" \n");
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didSameDocumentNavigationForFrame(WKBundleFrameRef frame, WKSameDocumentNavigationType type)
{
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
+ return;
+
+ if (!injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
+ return;
+
+ if (type != kWKSameDocumentNavigationAnchorNavigation)
+ return;
+
+ dumpLoadEvent(frame, "didChangeLocationWithinPageForFrame");
}
void InjectedBundlePage::didFinishDocumentLoadForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
dumpLoadEvent(frame, "didFinishDocumentLoadForFrame");
unsigned pendingFrameUnloadEvents = WKBundleFrameGetPendingUnloadCount(frame);
@@ -1034,40 +1068,44 @@ void InjectedBundlePage::didFinishDocumentLoadForFrame(WKBundleFrameRef frame)
stringBuilder.appendLiteral(" - has ");
stringBuilder.appendNumber(pendingFrameUnloadEvents);
stringBuilder.appendLiteral(" onunload handler(s)\n");
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
}
void InjectedBundlePage::didHandleOnloadEventsForFrame(WKBundleFrameRef frame)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
dumpLoadEvent(frame, "didHandleOnloadEventsForFrame");
}
-void InjectedBundlePage::didDisplayInsecureContentForFrame(WKBundleFrameRef frame)
+void InjectedBundlePage::didDisplayInsecureContentForFrame(WKBundleFrameRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
- InjectedBundle::shared().outputText("didDisplayInsecureContent\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
+ injectedBundle.outputText("didDisplayInsecureContent\n");
}
-void InjectedBundlePage::didRunInsecureContentForFrame(WKBundleFrameRef frame)
+void InjectedBundlePage::didRunInsecureContentForFrame(WKBundleFrameRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
- InjectedBundle::shared().outputText("didRunInsecureContent\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
+ injectedBundle.outputText("didRunInsecureContent\n");
}
-void InjectedBundlePage::didDetectXSSForFrame(WKBundleFrameRef frame)
+void InjectedBundlePage::didDetectXSSForFrame(WKBundleFrameRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFrameLoadCallbacks())
- InjectedBundle::shared().outputText("didDetectXSS\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFrameLoadCallbacks())
+ injectedBundle.outputText("didDetectXSS\n");
}
-void InjectedBundlePage::didInitiateLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef request, bool)
+void InjectedBundlePage::didInitiateLoadForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKURLRequestRef request, bool)
{
- if (!InjectedBundle::shared().isTestRunning())
+ if (!InjectedBundle::singleton().isTestRunning())
return;
WKRetainPtr<WKURLRef> url = adoptWK(WKURLRequestCopyURL(request));
@@ -1086,10 +1124,16 @@ static inline bool isHTTPOrHTTPSScheme(WKStringRef scheme)
return WKStringIsEqualToUTF8CStringIgnoringCase(scheme, "http") || WKStringIsEqualToUTF8CStringIgnoringCase(scheme, "https");
}
-WKURLRequestRef InjectedBundlePage::willSendRequestForFrame(WKBundlePageRef, WKBundleFrameRef frame, uint64_t identifier, WKURLRequestRef request, WKURLResponseRef response)
+static inline bool isAllowedHost(WKStringRef host)
+{
+ return InjectedBundle::singleton().isAllowedHost(host);
+}
+
+WKURLRequestRef InjectedBundlePage::willSendRequestForFrame(WKBundlePageRef page, WKBundleFrameRef frame, uint64_t identifier, WKURLRequestRef request, WKURLResponseRef response)
{
- if (InjectedBundle::shared().isTestRunning()
- && InjectedBundle::shared().testRunner()->shouldDumpResourceLoadCallbacks()) {
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.isTestRunning()
+ && injectedBundle.testRunner()->shouldDumpResourceLoadCallbacks()) {
StringBuilder stringBuilder;
dumpResourceURL(identifier, stringBuilder);
stringBuilder.appendLiteral(" - willSendRequest ");
@@ -1097,16 +1141,16 @@ WKURLRequestRef InjectedBundlePage::willSendRequestForFrame(WKBundlePageRef, WKB
stringBuilder.appendLiteral(" redirectResponse ");
dumpResponseDescriptionSuitableForTestResult(response, stringBuilder);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- if (InjectedBundle::shared().isTestRunning() && InjectedBundle::shared().testRunner()->willSendRequestReturnsNull())
- return 0;
+ if (injectedBundle.isTestRunning() && injectedBundle.testRunner()->willSendRequestReturnsNull())
+ return nullptr;
WKRetainPtr<WKURLRef> redirectURL = adoptWK(WKURLResponseCopyURL(response));
- if (InjectedBundle::shared().isTestRunning() && InjectedBundle::shared().testRunner()->willSendRequestReturnsNullOnRedirect() && redirectURL) {
- InjectedBundle::shared().outputText("Returning null for this redirect\n");
- return 0;
+ if (injectedBundle.isTestRunning() && injectedBundle.testRunner()->willSendRequestReturnsNullOnRedirect() && redirectURL) {
+ injectedBundle.outputText("Returning null for this redirect\n");
+ return nullptr;
}
WKRetainPtr<WKURLRef> url = adoptWK(WKURLRequestCopyURL(request));
@@ -1118,23 +1162,31 @@ WKURLRequestRef InjectedBundlePage::willSendRequestForFrame(WKBundlePageRef, WKB
&& !WKStringIsEqualToUTF8CString(host.get(), "255.255.255.255") // Used in some tests that expect to get back an error.
&& !isLocalHost(host.get())) {
bool mainFrameIsExternal = false;
- if (InjectedBundle::shared().isTestRunning()) {
- WKBundleFrameRef mainFrame = InjectedBundle::shared().topLoadingFrame();
+ if (injectedBundle.isTestRunning()) {
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(m_page);
WKRetainPtr<WKURLRef> mainFrameURL = adoptWK(WKBundleFrameCopyURL(mainFrame));
if (!mainFrameURL || WKStringIsEqualToUTF8CString(adoptWK(WKURLCopyString(mainFrameURL.get())).get(), "about:blank"))
mainFrameURL = adoptWK(WKBundleFrameCopyProvisionalURL(mainFrame));
- WKRetainPtr<WKStringRef> mainFrameHost = WKURLCopyHostName(mainFrameURL.get());
- WKRetainPtr<WKStringRef> mainFrameScheme = WKURLCopyScheme(mainFrameURL.get());
+ WKRetainPtr<WKStringRef> mainFrameHost = adoptWK(WKURLCopyHostName(mainFrameURL.get()));
+ WKRetainPtr<WKStringRef> mainFrameScheme = adoptWK(WKURLCopyScheme(mainFrameURL.get()));
mainFrameIsExternal = isHTTPOrHTTPSScheme(mainFrameScheme.get()) && !isLocalHost(mainFrameHost.get());
}
- if (!mainFrameIsExternal) {
+ if (!mainFrameIsExternal && !isAllowedHost(host.get())) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("Blocked access to external URL ");
stringBuilder.append(toWTFString(urlString));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
- return 0;
+ injectedBundle.outputText(stringBuilder.toString());
+ return nullptr;
+ }
+ }
+
+ if (injectedBundle.isTestRunning()) {
+ String body = injectedBundle.testRunner()->willSendRequestHTTPBody();
+ if (!body.isEmpty()) {
+ CString cBody = body.utf8();
+ return WKURLRequestCopySettingHTTPBody(request, WKDataCreate(reinterpret_cast<const unsigned char*>(cBody.data()), cBody.length()));
}
}
@@ -1142,22 +1194,23 @@ WKURLRequestRef InjectedBundlePage::willSendRequestForFrame(WKBundlePageRef, WKB
return request;
}
-void InjectedBundlePage::didReceiveResponseForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef response)
+void InjectedBundlePage::didReceiveResponseForResource(WKBundlePageRef page, WKBundleFrameRef, uint64_t identifier, WKURLResponseRef response)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (InjectedBundle::shared().testRunner()->shouldDumpResourceLoadCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpResourceLoadCallbacks()) {
StringBuilder stringBuilder;
dumpResourceURL(identifier, stringBuilder);
stringBuilder.appendLiteral(" - didReceiveResponse ");
dumpResponseDescriptionSuitableForTestResult(response, stringBuilder);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- if (!InjectedBundle::shared().testRunner()->shouldDumpResourceResponseMIMETypes())
+ if (!injectedBundle.testRunner()->shouldDumpResourceResponseMIMETypes())
return;
WKRetainPtr<WKURLRef> url = adoptWK(WKURLResponseCopyURL(response));
@@ -1168,8 +1221,16 @@ void InjectedBundlePage::didReceiveResponseForResource(WKBundlePageRef, WKBundle
stringBuilder.append(toWTFString(urlString));
stringBuilder.appendLiteral(" has MIME type ");
stringBuilder.append(toWTFString(mimeTypeString));
+
+ String platformMimeType = platformResponseMimeType(response);
+ if (!platformMimeType.isEmpty() && platformMimeType != toWTFString(mimeTypeString)) {
+ stringBuilder.appendLiteral(" but platform response has ");
+ stringBuilder.append(platformMimeType);
+ }
+
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didReceiveContentLengthForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t, uint64_t)
@@ -1178,24 +1239,26 @@ void InjectedBundlePage::didReceiveContentLengthForResource(WKBundlePageRef, WKB
void InjectedBundlePage::didFinishLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpResourceLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpResourceLoadCallbacks())
return;
StringBuilder stringBuilder;
dumpResourceURL(identifier, stringBuilder);
stringBuilder.appendLiteral(" - didFinishLoading\n");
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didFailLoadForResource(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier, WKErrorRef error)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpResourceLoadCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpResourceLoadCallbacks())
return;
StringBuilder stringBuilder;
@@ -1204,21 +1267,22 @@ void InjectedBundlePage::didFailLoadForResource(WKBundlePageRef, WKBundleFrameRe
dumpErrorDescriptionSuitableForTestResult(error, stringBuilder);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
bool InjectedBundlePage::shouldCacheResponse(WKBundlePageRef, WKBundleFrameRef, uint64_t identifier)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
- if (!InjectedBundle::shared().testRunner()->shouldDumpWillCacheResponse())
+ if (!injectedBundle.testRunner()->shouldDumpWillCacheResponse())
return true;
StringBuilder stringBuilder;
stringBuilder.appendNumber(identifier);
stringBuilder.appendLiteral(" - willCacheResponse: called\n");
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
// The default behavior is the cache the response.
return true;
@@ -1249,10 +1313,26 @@ void InjectedBundlePage::unableToImplementPolicy(WKBundlePageRef page, WKBundleF
WKBundlePagePolicyAction InjectedBundlePage::decidePolicyForNavigationAction(WKBundlePageRef page, WKBundleFrameRef frame, WKBundleNavigationActionRef navigationAction, WKURLRequestRef request, WKTypeRef* userData)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return WKBundlePagePolicyActionUse;
- if (!InjectedBundle::shared().testRunner()->isPolicyDelegateEnabled())
+ if (injectedBundle.testRunner()->shouldDumpPolicyCallbacks()) {
+ StringBuilder stringBuilder;
+ stringBuilder.appendLiteral(" - decidePolicyForNavigationAction \n");
+ dumpRequestDescriptionSuitableForTestResult(request, stringBuilder);
+ stringBuilder.appendLiteral(" is main frame - ");
+ stringBuilder.append(WKBundleFrameIsMainFrame(frame) ? "yes" : "no");
+ stringBuilder.appendLiteral(" should open URLs externally - ");
+ stringBuilder.append(WKBundleNavigationActionGetShouldOpenExternalURLs(navigationAction) ? "yes" : "no");
+ stringBuilder.append('\n');
+ injectedBundle.outputText(stringBuilder.toString());
+ }
+
+ if (injectedBundle.testRunner()->shouldDecideNavigationPolicyAfterDelay())
+ return WKBundlePagePolicyActionPassThrough;
+
+ if (!injectedBundle.testRunner()->isPolicyDelegateEnabled())
return WKBundlePagePolicyActionUse;
WKRetainPtr<WKURLRef> url = adoptWK(WKURLRequestCopyURL(request));
@@ -1277,10 +1357,10 @@ WKBundlePagePolicyAction InjectedBundlePage::decidePolicyForNavigationAction(WKB
}
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
- InjectedBundle::shared().testRunner()->notifyDone();
+ injectedBundle.outputText(stringBuilder.toString());
+ injectedBundle.testRunner()->notifyDone();
- if (InjectedBundle::shared().testRunner()->isPolicyDelegatePermissive())
+ if (injectedBundle.testRunner()->isPolicyDelegatePermissive())
return WKBundlePagePolicyActionUse;
return WKBundlePagePolicyActionPassThrough;
}
@@ -1292,13 +1372,13 @@ WKBundlePagePolicyAction InjectedBundlePage::decidePolicyForNewWindowAction(WKBu
WKBundlePagePolicyAction InjectedBundlePage::decidePolicyForResponse(WKBundlePageRef page, WKBundleFrameRef, WKURLResponseRef response, WKURLRequestRef, WKTypeRef*)
{
- if (WKURLResponseIsAttachment(response)) {
+ if (InjectedBundle::singleton().testRunner()->isPolicyDelegateEnabled() && WKURLResponseIsAttachment(response)) {
StringBuilder stringBuilder;
WKRetainPtr<WKStringRef> filename = adoptWK(WKURLResponseCopySuggestedFilename(response));
stringBuilder.appendLiteral("Policy delegate: resource is an attachment, suggested file name \'");
stringBuilder.append(toWTFString(filename));
stringBuilder.appendLiteral("\'\n");
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ InjectedBundle::singleton().outputText(stringBuilder.toString());
}
WKRetainPtr<WKStringRef> mimeType = adoptWK(WKURLResponseCopyMIMEType(response));
@@ -1368,7 +1448,8 @@ static WTF::String lastFileURLPathComponent(const WTF::String& path)
void InjectedBundlePage::willAddMessageToConsole(WKStringRef message, uint32_t lineNumber)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
WTF::String messageString = toWTFString(message);
@@ -1390,46 +1471,49 @@ void InjectedBundlePage::willAddMessageToConsole(WKStringRef message, uint32_t l
}
stringBuilder.append(messageString);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::willSetStatusbarText(WKStringRef statusbarText)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpStatusCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpStatusCallbacks())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("UI DELEGATE STATUS CALLBACK: setStatusText:");
stringBuilder.append(toWTFString(statusbarText));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::willRunJavaScriptAlert(WKStringRef message, WKBundleFrameRef)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("ALERT: ");
stringBuilder.append(toWTFString(message));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::willRunJavaScriptConfirm(WKStringRef message, WKBundleFrameRef)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("CONFIRM: ");
stringBuilder.append(toWTFString(message));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::willRunJavaScriptPrompt(WKStringRef message, WKStringRef defaultValue, WKBundleFrameRef)
@@ -1440,12 +1524,13 @@ void InjectedBundlePage::willRunJavaScriptPrompt(WKStringRef message, WKStringRe
stringBuilder.appendLiteral(", default text: ");
stringBuilder.append(toWTFString(defaultValue));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ InjectedBundle::singleton().outputText(stringBuilder.toString());
}
void InjectedBundlePage::didReachApplicationCacheOriginQuota(WKSecurityOriginRef origin, int64_t totalBytesNeeded)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpApplicationCacheDelegateCallbacks()) {
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpApplicationCacheDelegateCallbacks()) {
// For example, numbers from 30000 - 39999 will output as 30000.
// Rounding up or down does not really matter for these tests. It's
// sufficient to just get a range of 10000 to determine if we were
@@ -1458,30 +1543,49 @@ void InjectedBundlePage::didReachApplicationCacheOriginQuota(WKSecurityOriginRef
stringBuilder.appendLiteral(" totalSpaceNeeded:~");
stringBuilder.appendNumber(truncatedSpaceNeeded);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- if (InjectedBundle::shared().testRunner()->shouldDisallowIncreaseForApplicationCacheQuota())
+ if (injectedBundle.testRunner()->shouldDisallowIncreaseForApplicationCacheQuota())
return;
// Reset default application cache quota.
- WKBundleResetApplicationCacheOriginQuota(InjectedBundle::shared().bundle(), adoptWK(WKSecurityOriginCopyToString(origin)).get());
+ WKBundlePageResetApplicationCacheOriginQuota(injectedBundle.page()->page(), adoptWK(WKSecurityOriginCopyToString(origin)).get());
}
uint64_t InjectedBundlePage::didExceedDatabaseQuota(WKSecurityOriginRef origin, WKStringRef databaseName, WKStringRef databaseDisplayName, uint64_t currentQuotaBytes, uint64_t currentOriginUsageBytes, uint64_t currentDatabaseUsageBytes, uint64_t expectedUsageBytes)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpDatabaseCallbacks()) {
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpDatabaseCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("UI DELEGATE DATABASE CALLBACK: exceededDatabaseQuotaForSecurityOrigin:");
stringBuilder.append(securityOriginToStr(origin));
stringBuilder.appendLiteral(" database:");
stringBuilder.append(toWTFString(databaseName));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- static const uint64_t defaultQuota = 5 * 1024 * 1024;
- return defaultQuota;
+ uint64_t defaultQuota = 5 * 1024 * 1024;
+ double testDefaultQuota = injectedBundle.testRunner()->databaseDefaultQuota();
+ if (testDefaultQuota >= 0)
+ defaultQuota = testDefaultQuota;
+
+ unsigned long long newQuota = defaultQuota;
+
+ double maxQuota = injectedBundle.testRunner()->databaseMaxQuota();
+ if (maxQuota >= 0) {
+ if (defaultQuota < expectedUsageBytes && expectedUsageBytes <= maxQuota) {
+ newQuota = expectedUsageBytes;
+
+ StringBuilder stringBuilder;
+ stringBuilder.appendLiteral("UI DELEGATE DATABASE CALLBACK: increased quota to ");
+ stringBuilder.appendNumber(newQuota);
+ stringBuilder.append('\n');
+ injectedBundle.outputText(stringBuilder.toString());
+ }
+ }
+ return newQuota;
}
// Editor Client Callbacks
@@ -1543,37 +1647,40 @@ void InjectedBundlePage::didChangeSelection(WKBundlePageRef page, WKStringRef no
bool InjectedBundlePage::shouldBeginEditing(WKBundleRangeHandleRef range)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldBeginEditingInDOMRange:");
stringBuilder.append(rangeToStr(m_page, m_world.get(), range));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldEndEditing(WKBundleRangeHandleRef range)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldEndEditingInDOMRange:");
stringBuilder.append(rangeToStr(m_page, m_world.get(), range));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldInsertNode(WKBundleNodeHandleRef node, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType action)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
static const char* insertactionstring[] = {
@@ -1582,7 +1689,7 @@ bool InjectedBundlePage::shouldInsertNode(WKBundleNodeHandleRef node, WKBundleRa
"WebViewInsertActionDropped",
};
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldInsertNode:");
stringBuilder.append(dumpPath(m_page, m_world.get(), node));
@@ -1591,14 +1698,15 @@ bool InjectedBundlePage::shouldInsertNode(WKBundleNodeHandleRef node, WKBundleRa
stringBuilder.appendLiteral(" givenAction:");
stringBuilder.append(insertactionstring[action]);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldInsertText(WKStringRef text, WKBundleRangeHandleRef rangeToReplace, WKInsertActionType action)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
static const char *insertactionstring[] = {
@@ -1607,7 +1715,7 @@ bool InjectedBundlePage::shouldInsertText(WKStringRef text, WKBundleRangeHandleR
"WebViewInsertActionDropped",
};
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldInsertText:");
stringBuilder.append(toWTFString(text));
@@ -1616,29 +1724,31 @@ bool InjectedBundlePage::shouldInsertText(WKStringRef text, WKBundleRangeHandleR
stringBuilder.appendLiteral(" givenAction:");
stringBuilder.append(insertactionstring[action]);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldDeleteRange(WKBundleRangeHandleRef range)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldDeleteDOMRange:");
stringBuilder.append(rangeToStr(m_page, m_world.get(), range));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldChangeSelectedRange(WKBundleRangeHandleRef fromRange, WKBundleRangeHandleRef toRange, WKAffinityType affinity, bool stillSelecting)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
static const char *affinitystring[] = {
@@ -1650,7 +1760,7 @@ bool InjectedBundlePage::shouldChangeSelectedRange(WKBundleRangeHandleRef fromRa
"TRUE"
};
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldChangeSelectedDOMRange:");
stringBuilder.append(rangeToStr(m_page, m_world.get(), fromRange));
@@ -1661,98 +1771,105 @@ bool InjectedBundlePage::shouldChangeSelectedRange(WKBundleRangeHandleRef fromRa
stringBuilder.appendLiteral(" stillSelecting:");
stringBuilder.append(boolstring[stillSelecting]);
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
bool InjectedBundlePage::shouldApplyStyle(WKBundleCSSStyleDeclarationRef style, WKBundleRangeHandleRef range)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return true;
- if (InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks()) {
+ if (injectedBundle.testRunner()->shouldDumpEditingCallbacks()) {
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: shouldApplyStyle:");
stringBuilder.append(styleDecToStr(style));
stringBuilder.appendLiteral(" toElementsInDOMRange:");
stringBuilder.append(rangeToStr(m_page, m_world.get(), range));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
- return InjectedBundle::shared().testRunner()->shouldAllowEditing();
+ return injectedBundle.testRunner()->shouldAllowEditing();
}
void InjectedBundlePage::didBeginEditing(WKStringRef notificationName)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpEditingCallbacks())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: webViewDidBeginEditing:");
stringBuilder.append(toWTFString(notificationName));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didEndEditing(WKStringRef notificationName)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpEditingCallbacks())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: webViewDidEndEditing:");
stringBuilder.append(toWTFString(notificationName));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didChange(WKStringRef notificationName)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpEditingCallbacks())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: webViewDidChange:");
stringBuilder.append(toWTFString(notificationName));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
void InjectedBundlePage::didChangeSelection(WKStringRef notificationName)
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (!InjectedBundle::shared().testRunner()->shouldDumpEditingCallbacks())
+ if (!injectedBundle.testRunner()->shouldDumpEditingCallbacks())
return;
StringBuilder stringBuilder;
stringBuilder.appendLiteral("EDITING DELEGATE: webViewDidChangeSelection:");
stringBuilder.append(toWTFString(notificationName));
stringBuilder.append('\n');
- InjectedBundle::shared().outputText(stringBuilder.toString());
+ injectedBundle.outputText(stringBuilder.toString());
}
#if ENABLE(FULLSCREEN_API)
bool InjectedBundlePage::supportsFullScreen(WKBundlePageRef pageRef, WKFullScreenKeyboardRequestType requestType)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("supportsFullScreen() == true\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("supportsFullScreen() == true\n");
return true;
}
void InjectedBundlePage::enterFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("enterFullScreenForElement()\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("enterFullScreenForElement()\n");
- if (!InjectedBundle::shared().testRunner()->hasCustomFullScreenBehavior()) {
+ if (!injectedBundle.testRunner()->hasCustomFullScreenBehavior()) {
WKBundlePageWillEnterFullScreen(pageRef);
WKBundlePageDidEnterFullScreen(pageRef);
}
@@ -1760,10 +1877,11 @@ void InjectedBundlePage::enterFullScreenForElement(WKBundlePageRef pageRef, WKBu
void InjectedBundlePage::exitFullScreenForElement(WKBundlePageRef pageRef, WKBundleNodeHandleRef elementRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("exitFullScreenForElement()\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("exitFullScreenForElement()\n");
- if (!InjectedBundle::shared().testRunner()->hasCustomFullScreenBehavior()) {
+ if (!injectedBundle.testRunner()->hasCustomFullScreenBehavior()) {
WKBundlePageWillExitFullScreen(pageRef);
WKBundlePageDidExitFullScreen(pageRef);
}
@@ -1771,22 +1889,25 @@ void InjectedBundlePage::exitFullScreenForElement(WKBundlePageRef pageRef, WKBun
void InjectedBundlePage::beganEnterFullScreen(WKBundlePageRef, WKRect, WKRect)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("beganEnterFullScreen()\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("beganEnterFullScreen()\n");
}
void InjectedBundlePage::beganExitFullScreen(WKBundlePageRef, WKRect, WKRect)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("beganExitFullScreen()\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("beganExitFullScreen()\n");
}
void InjectedBundlePage::closeFullScreen(WKBundlePageRef pageRef)
{
- if (InjectedBundle::shared().testRunner()->shouldDumpFullScreenCallbacks())
- InjectedBundle::shared().outputText("closeFullScreen()\n");
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (injectedBundle.testRunner()->shouldDumpFullScreenCallbacks())
+ injectedBundle.outputText("closeFullScreen()\n");
- if (!InjectedBundle::shared().testRunner()->hasCustomFullScreenBehavior()) {
+ if (!injectedBundle.testRunner()->hasCustomFullScreenBehavior()) {
WKBundlePageWillExitFullScreen(pageRef);
WKBundlePageDidExitFullScreen(pageRef);
}
@@ -1882,31 +2003,37 @@ void InjectedBundlePage::dumpBackForwardList(StringBuilder& stringBuilder)
stringBuilder.appendLiteral("===============================================\n");
}
-#if !PLATFORM(MAC)
+#if !PLATFORM(COCOA)
void InjectedBundlePage::platformDidStartProvisionalLoadForFrame(WKBundleFrameRef)
{
}
+
+String InjectedBundlePage::platformResponseMimeType(WKURLResponseRef)
+{
+ return String();
+}
#endif
void InjectedBundlePage::frameDidChangeLocation(WKBundleFrameRef frame, bool shouldDump)
{
- if (frame != InjectedBundle::shared().topLoadingFrame())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (frame != injectedBundle.topLoadingFrame())
return;
- InjectedBundle::shared().setTopLoadingFrame(0);
+ injectedBundle.setTopLoadingFrame(nullptr);
- if (InjectedBundle::shared().testRunner()->waitToDump())
+ if (injectedBundle.testRunner()->waitToDump())
return;
- if (InjectedBundle::shared().shouldProcessWorkQueue()) {
- InjectedBundle::shared().processWorkQueue();
+ if (injectedBundle.shouldProcessWorkQueue()) {
+ injectedBundle.processWorkQueue();
return;
}
if (shouldDump)
- InjectedBundle::shared().page()->dump();
+ injectedBundle.page()->dump();
else
- InjectedBundle::shared().done();
+ injectedBundle.done();
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
index d09a204dd..746fc33c5 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/InjectedBundlePage.h
@@ -26,9 +26,9 @@
#ifndef InjectedBundlePage_h
#define InjectedBundlePage_h
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <wtf/text/WTFString.h>
namespace WTR {
@@ -86,7 +86,7 @@ private:
void didReceiveTitleForFrame(WKStringRef title, WKBundleFrameRef);
void didClearWindowForFrame(WKBundleFrameRef, WKBundleScriptWorldRef);
void didCancelClientRedirectForFrame(WKBundleFrameRef);
- void willPerformClientRedirectForFrame(WKBundleFrameRef, WKURLRef url, double delay, double date);
+ void willPerformClientRedirectForFrame(WKBundlePageRef, WKBundleFrameRef, WKURLRef, double delay, double date);
void didSameDocumentNavigationForFrame(WKBundleFrameRef, WKSameDocumentNavigationType);
void didFinishDocumentLoadForFrame(WKBundleFrameRef);
void didHandleOnloadEventsForFrame(WKBundleFrameRef);
@@ -169,6 +169,7 @@ private:
void dumpDOMAsWebArchive(WKBundleFrameRef, WTF::StringBuilder&);
void platformDidStartProvisionalLoadForFrame(WKBundleFrameRef);
+ String platformResponseMimeType(WKURLResponseRef);
void frameDidChangeLocation(WKBundleFrameRef, bool shouldDump = false);
diff --git a/Tools/WebKitTestRunner/InjectedBundle/Target.pri b/Tools/WebKitTestRunner/InjectedBundle/Target.pri
deleted file mode 100644
index b0091194a..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/Target.pri
+++ /dev/null
@@ -1,72 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for WebKitTestRunner's InjectedBundle
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = lib
-TARGET = WTRInjectedBundle
-
-SOURCES += \
- AccessibilityController.cpp \
- AccessibilityTextMarker.cpp \
- AccessibilityTextMarkerRange.cpp \
- AccessibilityUIElement.cpp \
- InjectedBundle.cpp \
- InjectedBundle.h \
- InjectedBundleMain.cpp \
- InjectedBundlePage.cpp \
- InjectedBundlePage.h \
- EventSendingController.cpp \
- EventSendingController.h \
- GCController.cpp \
- GCController.h \
- TestRunner.cpp \
- TestRunner.h \
- TextInputController.cpp \
- TextInputController.h \
- Bindings/JSWrapper.cpp \
- qt/ActivateFontsQt.cpp \
- qt/InjectedBundleQt.cpp \
- qt/TestRunnerQt.cpp
-
-# Adds the generated sources to SOURCES
-include(DerivedSources.pri)
-
-HEADERS += \
- AccessibilityController.h \
- AccessibilityTextMarker.h \
- AccessibilityTextMarkerRange.h \
- AccessibilityUIElement.h \
- ActivateFonts.h \
- EventSendingController.h \
- GCController.h \
- InjectedBundle.h \
- InjectedBundlePage.h \
- TestRunner.h \
- TextInputController.h \
-
-DESTDIR = $${ROOT_BUILD_DIR}/lib
-
-QT += widgets webkit
-
-WEBKIT += wtf javascriptcore webcore
-
-CONFIG += plugin rpath
-
-have?(FONTCONFIG): PKGCONFIG += fontconfig
-
-INCLUDEPATH += \
- $$PWD \
- $$PWD/.. \
- $$PWD/Bindings \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/testing/js \
- $${ROOT_WEBKIT_DIR}/Source/WebKit/qt/WebCoreSupport
-
-PREFIX_HEADER = $$PWD/../WebKitTestRunnerPrefix.h
-*-g++*:QMAKE_CXXFLAGS += "-include $$PREFIX_HEADER"
-
-linux-* {
- QMAKE_LFLAGS += -Wl,--no-undefined
-}
diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
index be013f2d3..e3f8f563c 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.cpp
@@ -32,31 +32,29 @@
#include "PlatformWebView.h"
#include "StringFunctions.h"
#include "TestController.h"
-#include <WebKit2/WKBundle.h>
-#include <WebKit2/WKBundleBackForwardList.h>
-#include <WebKit2/WKBundleFrame.h>
-#include <WebKit2/WKBundleFramePrivate.h>
-#include <WebKit2/WKBundleInspector.h>
-#include <WebKit2/WKBundleNodeHandlePrivate.h>
-#include <WebKit2/WKBundlePage.h>
-#include <WebKit2/WKBundlePagePrivate.h>
-#include <WebKit2/WKBundlePrivate.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKData.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKSerializedScriptValue.h>
-#include <WebKit2/WebKit2_C.h>
+#include <JavaScriptCore/JSCTestRunnerUtils.h>
+#include <WebKit/WKBundle.h>
+#include <WebKit/WKBundleBackForwardList.h>
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundleFramePrivate.h>
+#include <WebKit/WKBundleInspector.h>
+#include <WebKit/WKBundleNodeHandlePrivate.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePrivate.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKData.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSerializedScriptValue.h>
+#include <WebKit/WebKit2_C.h>
#include <wtf/CurrentTime.h>
#include <wtf/HashMap.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
+#include <wtf/StdLibExtras.h>
#include <wtf/text/CString.h>
#include <wtf/text/StringBuilder.h>
namespace WTR {
-const double TestRunner::waitToDumpWatchdogTimerInterval = 30;
-
PassRefPtr<TestRunner> TestRunner::create()
{
return adoptRef(new TestRunner);
@@ -93,8 +91,14 @@ TestRunner::TestRunner()
, m_policyDelegatePermissive(false)
, m_globalFlag(false)
, m_customFullScreenBehavior(false)
+ , m_timeout(30000)
+ , m_databaseDefaultQuota(-1)
+ , m_databaseMaxQuota(-1)
, m_userStyleSheetEnabled(false)
, m_userStyleSheetLocation(adoptWK(WKStringCreateWithUTF8CString("")))
+#if PLATFORM(GTK)
+ , m_waitToDumpWatchdogTimer(RunLoop::main(), this, &TestRunner::waitToDumpWatchdogTimerFired)
+#endif
{
platformInitialize();
}
@@ -110,7 +114,7 @@ JSClassRef TestRunner::wrapperClass()
void TestRunner::display()
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
WKBundlePageForceRepaint(page);
WKBundlePageSetTracksRepaints(page, true);
WKBundlePageResetTrackedRepaints(page);
@@ -128,7 +132,7 @@ void TestRunner::setCustomPolicyDelegate(bool enabled, bool permissive)
m_policyDelegateEnabled = enabled;
m_policyDelegatePermissive = permissive;
- InjectedBundle::shared().setCustomPolicyDelegate(enabled, permissive);
+ InjectedBundle::singleton().setCustomPolicyDelegate(enabled, permissive);
}
void TestRunner::waitForPolicyDelegate()
@@ -140,39 +144,39 @@ void TestRunner::waitForPolicyDelegate()
void TestRunner::waitUntilDone()
{
m_waitToDump = true;
- if (InjectedBundle::shared().useWaitToDumpWatchdogTimer())
+ if (InjectedBundle::singleton().useWaitToDumpWatchdogTimer())
initializeWaitToDumpWatchdogTimerIfNeeded();
}
void TestRunner::waitToDumpWatchdogTimerFired()
{
invalidateWaitToDumpWatchdogTimer();
- InjectedBundle::shared().outputText("FAIL: Timed out waiting for notifyDone to be called\n\n");
- InjectedBundle::shared().done();
+ auto& injectedBundle = InjectedBundle::singleton();
+ injectedBundle.outputText("FAIL: Timed out waiting for notifyDone to be called\n\n");
+ injectedBundle.done();
}
void TestRunner::notifyDone()
{
- if (!InjectedBundle::shared().isTestRunning())
+ auto& injectedBundle = InjectedBundle::singleton();
+ if (!injectedBundle.isTestRunning())
return;
- if (m_waitToDump && !InjectedBundle::shared().topLoadingFrame())
- InjectedBundle::shared().page()->dump();
+ if (m_waitToDump && !injectedBundle.topLoadingFrame())
+ injectedBundle.page()->dump();
- m_waitToDump = false;
-}
+ // We don't call invalidateWaitToDumpWatchdogTimer() here, even if we continue to wait for a load to finish.
+ // The test is still subject to timeout checking - it is better to detect an async timeout inside WebKitTestRunner
+ // than to let webkitpy do that, because WebKitTestRunner will dump partial results.
-void TestRunner::setCustomTimeout(int timeout)
-{
- m_timeout = timeout;
+ m_waitToDump = false;
}
void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFrames)
{
WKRetainPtr<WKStringRef> sourceWK = toWK(source);
- WKRetainPtr<WKBundleScriptWorldRef> scriptWorld(AdoptWK, WKBundleScriptWorldCreateWorld());
- WKBundleAddUserScript(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), scriptWorld.get(), sourceWK.get(), 0, 0, 0,
+ WKBundlePageAddUserScript(InjectedBundle::singleton().page()->page(), sourceWK.get(),
(runAtStart ? kWKInjectAtDocumentStart : kWKInjectAtDocumentEnd),
(allFrames ? kWKInjectInAllFrames : kWKInjectInTopFrameOnly));
}
@@ -180,27 +184,27 @@ void TestRunner::addUserScript(JSStringRef source, bool runAtStart, bool allFram
void TestRunner::addUserStyleSheet(JSStringRef source, bool allFrames)
{
WKRetainPtr<WKStringRef> sourceWK = toWK(source);
- WKRetainPtr<WKBundleScriptWorldRef> scriptWorld(AdoptWK, WKBundleScriptWorldCreateWorld());
- WKBundleAddUserStyleSheet(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), scriptWorld.get(), sourceWK.get(), 0, 0, 0,
+ WKBundlePageAddUserStyleSheet(InjectedBundle::singleton().page()->page(), sourceWK.get(),
(allFrames ? kWKInjectInAllFrames : kWKInjectInTopFrameOnly));
}
void TestRunner::keepWebHistory()
{
- WKBundleSetShouldTrackVisitedLinks(InjectedBundle::shared().bundle(), true);
+ InjectedBundle::singleton().postSetAddsVisitedLinks(true);
}
void TestRunner::execCommand(JSStringRef name, JSStringRef argument)
{
- WKBundlePageExecuteEditingCommand(InjectedBundle::shared().page()->page(), toWK(name).get(), toWK(argument).get());
+ WKBundlePageExecuteEditingCommand(InjectedBundle::singleton().page()->page(), toWK(name).get(), toWK(argument).get());
}
bool TestRunner::findString(JSStringRef target, JSValueRef optionsArrayAsValue)
{
WKFindOptions options = 0;
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(injectedBundle.page()->page());
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
JSRetainPtr<JSStringRef> lengthPropertyName(Adopt, JSStringCreateWithUTF8CString("length"));
JSObjectRef optionsArray = JSValueToObject(context, optionsArrayAsValue, 0);
@@ -231,43 +235,37 @@ bool TestRunner::findString(JSStringRef target, JSValueRef optionsArrayAsValue)
}
}
- return WKBundlePageFindString(InjectedBundle::shared().page()->page(), toWK(target).get(), options);
+ return WKBundlePageFindString(injectedBundle.page()->page(), toWK(target).get(), options);
}
void TestRunner::clearAllDatabases()
{
- WKBundleClearAllDatabases(InjectedBundle::shared().bundle());
+ WKBundleClearAllDatabases(InjectedBundle::singleton().bundle());
}
void TestRunner::setDatabaseQuota(uint64_t quota)
{
- return WKBundleSetDatabaseQuota(InjectedBundle::shared().bundle(), quota);
+ return WKBundleSetDatabaseQuota(InjectedBundle::singleton().bundle(), quota);
}
void TestRunner::clearAllApplicationCaches()
{
- WKBundleClearApplicationCache(InjectedBundle::shared().bundle());
+ WKBundlePageClearApplicationCache(InjectedBundle::singleton().page()->page());
}
void TestRunner::clearApplicationCacheForOrigin(JSStringRef origin)
{
- WKBundleClearApplicationCacheForOrigin(InjectedBundle::shared().bundle(), toWK(origin).get());
+ WKBundlePageClearApplicationCacheForOrigin(InjectedBundle::singleton().page()->page(), toWK(origin).get());
}
void TestRunner::setAppCacheMaximumSize(uint64_t size)
{
- WKBundleSetAppCacheMaximumSize(InjectedBundle::shared().bundle(), size);
+ WKBundlePageSetAppCacheMaximumSize(InjectedBundle::singleton().page()->page(), size);
}
long long TestRunner::applicationCacheDiskUsageForOrigin(JSStringRef origin)
{
- return WKBundleGetAppCacheUsageForOrigin(InjectedBundle::shared().bundle(), toWK(origin).get());
-}
-
-void TestRunner::setApplicationCacheOriginQuota(unsigned long long bytes)
-{
- WKRetainPtr<WKStringRef> origin(AdoptWK, WKStringCreateWithUTF8CString("http://127.0.0.1:8000"));
- WKBundleSetApplicationCacheOriginQuota(InjectedBundle::shared().bundle(), origin.get(), bytes);
+ return WKBundlePageGetAppCacheUsageForOrigin(InjectedBundle::singleton().page()->page(), toWK(origin).get());
}
void TestRunner::disallowIncreaseForApplicationCacheQuota()
@@ -279,21 +277,24 @@ static inline JSValueRef stringArrayToJS(JSContextRef context, WKArrayRef string
{
const size_t count = WKArrayGetSize(strings);
- OwnArrayPtr<JSValueRef> jsStringsArray = adoptArrayPtr(new JSValueRef[count]);
+ JSValueRef arrayResult = JSObjectMakeArray(context, 0, 0, 0);
+ JSObjectRef arrayObj = JSValueToObject(context, arrayResult, 0);
for (size_t i = 0; i < count; ++i) {
WKStringRef stringRef = static_cast<WKStringRef>(WKArrayGetItemAtIndex(strings, i));
JSRetainPtr<JSStringRef> stringJS = toJS(stringRef);
- jsStringsArray[i] = JSValueMakeString(context, stringJS.get());
+ JSObjectSetPropertyAtIndex(context, arrayObj, i, JSValueMakeString(context, stringJS.get()), 0);
}
- return JSObjectMakeArray(context, count, jsStringsArray.get(), 0);
+ return arrayResult;
}
JSValueRef TestRunner::originsWithApplicationCache()
{
- WKRetainPtr<WKArrayRef> origins(AdoptWK, WKBundleCopyOriginsWithApplicationCache(InjectedBundle::shared().bundle()));
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+
+ WKRetainPtr<WKArrayRef> origins(AdoptWK, WKBundlePageCopyOriginsWithApplicationCache(page));
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
return stringArrayToJS(context, origins.get());
@@ -301,7 +302,7 @@ JSValueRef TestRunner::originsWithApplicationCache()
bool TestRunner::isCommandEnabled(JSStringRef name)
{
- return WKBundlePageIsEditingCommandEnabled(InjectedBundle::shared().page()->page(), toWK(name).get());
+ return WKBundlePageIsEditingCommandEnabled(InjectedBundle::singleton().page()->page(), toWK(name).get());
}
void TestRunner::setCanOpenWindows(bool)
@@ -313,58 +314,67 @@ void TestRunner::setCanOpenWindows(bool)
void TestRunner::setXSSAuditorEnabled(bool enabled)
{
WKRetainPtr<WKStringRef> key(AdoptWK, WKStringCreateWithUTF8CString("WebKitXSSAuditorEnabled"));
- WKBundleOverrideBoolPreferenceForTestRunner(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), key.get(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), key.get(), enabled);
}
void TestRunner::setAllowUniversalAccessFromFileURLs(bool enabled)
{
- WKBundleSetAllowUniversalAccessFromFileURLs(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetAllowUniversalAccessFromFileURLs(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setAllowFileAccessFromFileURLs(bool enabled)
{
- WKBundleSetAllowFileAccessFromFileURLs(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetAllowFileAccessFromFileURLs(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setPluginsEnabled(bool enabled)
{
- WKBundleSetPluginsEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetPluginsEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setJavaScriptCanAccessClipboard(bool enabled)
{
- WKBundleSetJavaScriptCanAccessClipboard(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetJavaScriptCanAccessClipboard(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setPrivateBrowsingEnabled(bool enabled)
{
- WKBundleSetPrivateBrowsingEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetPrivateBrowsingEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setPopupBlockingEnabled(bool enabled)
{
- WKBundleSetPopupBlockingEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetPopupBlockingEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setAuthorAndUserStylesEnabled(bool enabled)
{
- WKBundleSetAuthorAndUserStylesEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetAuthorAndUserStylesEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::addOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
{
- WKBundleAddOriginAccessWhitelistEntry(InjectedBundle::shared().bundle(), toWK(sourceOrigin).get(), toWK(destinationProtocol).get(), toWK(destinationHost).get(), allowDestinationSubdomains);
+ WKBundleAddOriginAccessWhitelistEntry(InjectedBundle::singleton().bundle(), toWK(sourceOrigin).get(), toWK(destinationProtocol).get(), toWK(destinationHost).get(), allowDestinationSubdomains);
}
void TestRunner::removeOriginAccessWhitelistEntry(JSStringRef sourceOrigin, JSStringRef destinationProtocol, JSStringRef destinationHost, bool allowDestinationSubdomains)
{
- WKBundleRemoveOriginAccessWhitelistEntry(InjectedBundle::shared().bundle(), toWK(sourceOrigin).get(), toWK(destinationProtocol).get(), toWK(destinationHost).get(), allowDestinationSubdomains);
+ WKBundleRemoveOriginAccessWhitelistEntry(InjectedBundle::singleton().bundle(), toWK(sourceOrigin).get(), toWK(destinationProtocol).get(), toWK(destinationHost).get(), allowDestinationSubdomains);
}
bool TestRunner::isPageBoxVisible(int pageIndex)
{
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
- return WKBundleIsPageBoxVisible(InjectedBundle::shared().bundle(), mainFrame, pageIndex);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(injectedBundle.page()->page());
+ return WKBundleIsPageBoxVisible(injectedBundle.bundle(), mainFrame, pageIndex);
}
void TestRunner::setValueForUser(JSContextRef context, JSValueRef element, JSStringRef value)
@@ -378,20 +388,22 @@ void TestRunner::setValueForUser(JSContextRef context, JSValueRef element, JSStr
void TestRunner::setAudioResult(JSContextRef context, JSValueRef data)
{
- WKRetainPtr<WKDataRef> audioData(AdoptWK, WKBundleCreateWKDataFromUInt8Array(InjectedBundle::shared().bundle(), context, data));
- InjectedBundle::shared().setAudioResult(audioData.get());
+ auto& injectedBundle = InjectedBundle::singleton();
+ // FIXME (123058): Use a JSC API to get buffer contents once such is exposed.
+ WKRetainPtr<WKDataRef> audioData(AdoptWK, WKBundleCreateWKDataFromUInt8Array(injectedBundle.bundle(), context, data));
+ injectedBundle.setAudioResult(audioData.get());
m_whatToDump = Audio;
m_dumpPixels = false;
}
unsigned TestRunner::windowCount()
{
- return InjectedBundle::shared().pageCount();
+ return InjectedBundle::singleton().pageCount();
}
void TestRunner::clearBackForwardList()
{
- WKBundleBackForwardListClear(WKBundlePageGetBackForwardList(InjectedBundle::shared().page()->page()));
+ WKBundleBackForwardListClear(WKBundlePageGetBackForwardList(InjectedBundle::singleton().page()->page()));
}
// Object Creation
@@ -403,24 +415,18 @@ void TestRunner::makeWindowObject(JSContextRef context, JSObjectRef windowObject
void TestRunner::showWebInspector()
{
-#if ENABLE(INSPECTOR)
- WKBundleInspectorShow(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()));
-#endif // ENABLE(INSPECTOR)
+ WKBundleInspectorShow(WKBundlePageGetInspector(InjectedBundle::singleton().page()->page()));
}
void TestRunner::closeWebInspector()
{
-#if ENABLE(INSPECTOR)
- WKBundleInspectorClose(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()));
-#endif // ENABLE(INSPECTOR)
+ WKBundleInspectorClose(WKBundlePageGetInspector(InjectedBundle::singleton().page()->page()));
}
-void TestRunner::evaluateInWebInspector(long callID, JSStringRef script)
+void TestRunner::evaluateInWebInspector(JSStringRef script)
{
-#if ENABLE(INSPECTOR)
WKRetainPtr<WKStringRef> scriptWK = toWK(script);
- WKBundleInspectorEvaluateScriptForTest(WKBundlePageGetInspector(InjectedBundle::shared().page()->page()), callID, scriptWK.get());
-#endif // ENABLE(INSPECTOR)
+ WKBundleInspectorEvaluateScriptForTest(WKBundlePageGetInspector(InjectedBundle::singleton().page()->page()), scriptWK.get());
}
typedef WTF::HashMap<unsigned, WKRetainPtr<WKBundleScriptWorldRef> > WorldMap;
@@ -449,7 +455,7 @@ void TestRunner::evaluateScriptInIsolatedWorld(JSContextRef context, unsigned wo
if (!worldID)
world.adopt(WKBundleScriptWorldCreateWorld());
else {
- WKRetainPtr<WKBundleScriptWorldRef>& worldSlot = worldMap().add(worldID, 0).iterator->value;
+ WKRetainPtr<WKBundleScriptWorldRef>& worldSlot = worldMap().add(worldID, nullptr).iterator->value;
if (!worldSlot)
worldSlot.adopt(WKBundleScriptWorldCreateWorld());
world = worldSlot;
@@ -457,7 +463,7 @@ void TestRunner::evaluateScriptInIsolatedWorld(JSContextRef context, unsigned wo
WKBundleFrameRef frame = WKBundleFrameForJavaScriptContext(context);
if (!frame)
- frame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ frame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
JSGlobalContextRef jsContext = WKBundleFrameGetJavaScriptContextForWorld(frame, world.get());
JSEvaluateScript(jsContext, script, 0, 0, 0, 0);
@@ -472,37 +478,28 @@ void TestRunner::setPOSIXLocale(JSStringRef locale)
void TestRunner::setTextDirection(JSStringRef direction)
{
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
return WKBundleFrameSetTextDirection(mainFrame, toWK(direction).get());
}
void TestRunner::setShouldStayOnPageAfterHandlingBeforeUnload(bool shouldStayOnPage)
{
- InjectedBundle::shared().postNewBeforeUnloadReturnValue(!shouldStayOnPage);
+ InjectedBundle::singleton().postNewBeforeUnloadReturnValue(!shouldStayOnPage);
}
void TestRunner::setDefersLoading(bool shouldDeferLoading)
{
- WKBundlePageSetDefersLoading(InjectedBundle::shared().page()->page(), shouldDeferLoading);
+ WKBundlePageSetDefersLoading(InjectedBundle::singleton().page()->page(), shouldDeferLoading);
}
void TestRunner::setPageVisibility(JSStringRef state)
{
- WKPageVisibilityState visibilityState = kWKPageVisibilityStateVisible;
-
- if (JSStringIsEqualToUTF8CString(state, "hidden"))
- visibilityState = kWKPageVisibilityStateHidden;
- else if (JSStringIsEqualToUTF8CString(state, "prerender"))
- visibilityState = kWKPageVisibilityStatePrerender;
- else if (JSStringIsEqualToUTF8CString(state, "unloaded"))
- visibilityState = kWKPageVisibilityStateUnloaded;
-
- InjectedBundle::shared().setVisibilityState(visibilityState, false);
+ InjectedBundle::singleton().setHidden(JSStringIsEqualToUTF8CString(state, "hidden") || JSStringIsEqualToUTF8CString(state, "prerender"));
}
void TestRunner::resetPageVisibility()
{
- InjectedBundle::shared().setVisibilityState(kWKPageVisibilityStateVisible, true);
+ InjectedBundle::singleton().setHidden(false);
}
typedef WTF::HashMap<unsigned, JSValueRef> CallbackMap;
@@ -516,7 +513,12 @@ enum {
AddChromeInputFieldCallbackID = 1,
RemoveChromeInputFieldCallbackID,
FocusWebViewCallbackID,
- SetBackingScaleFactorCallbackID
+ SetBackingScaleFactorCallbackID,
+ DidBeginSwipeCallbackID,
+ WillEndSwipeCallbackID,
+ DidEndSwipeCallbackID,
+ DidRemoveSwipeSnapshotCallbackID,
+ FirstUIScriptCallbackID = 100
};
static void cacheTestRunnerCallback(unsigned index, JSValueRef callback)
@@ -524,50 +526,67 @@ static void cacheTestRunnerCallback(unsigned index, JSValueRef callback)
if (!callback)
return;
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ if (callbackMap().contains(index)) {
+ InjectedBundle::singleton().outputText(String::format("FAIL: Tried to install a second TestRunner callback for the same event (id %d)\n\n", index));
+ return;
+ }
+
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
JSValueProtect(context, callback);
callbackMap().add(index, callback);
}
-static void callTestRunnerCallback(unsigned index)
+static void callTestRunnerCallback(unsigned index, size_t argumentCount = 0, const JSValueRef arguments[] = nullptr)
{
if (!callbackMap().contains(index))
return;
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
JSObjectRef callback = JSValueToObject(context, callbackMap().take(index), 0);
- JSObjectCallAsFunction(context, callback, JSContextGetGlobalObject(context), 0, 0, 0);
+ JSObjectCallAsFunction(context, callback, JSContextGetGlobalObject(context), argumentCount, arguments, 0);
JSValueUnprotect(context, callback);
}
+void TestRunner::clearTestRunnerCallbacks()
+{
+ for (auto& iter : callbackMap()) {
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+ JSObjectRef callback = JSValueToObject(context, iter.value, 0);
+ JSValueUnprotect(context, callback);
+ }
+
+ callbackMap().clear();
+}
+
void TestRunner::addChromeInputField(JSValueRef callback)
{
cacheTestRunnerCallback(AddChromeInputFieldCallbackID, callback);
- InjectedBundle::shared().postAddChromeInputField();
+ InjectedBundle::singleton().postAddChromeInputField();
}
void TestRunner::removeChromeInputField(JSValueRef callback)
{
cacheTestRunnerCallback(RemoveChromeInputFieldCallbackID, callback);
- InjectedBundle::shared().postRemoveChromeInputField();
+ InjectedBundle::singleton().postRemoveChromeInputField();
}
void TestRunner::focusWebView(JSValueRef callback)
{
cacheTestRunnerCallback(FocusWebViewCallbackID, callback);
- InjectedBundle::shared().postFocusWebView();
+ InjectedBundle::singleton().postFocusWebView();
}
void TestRunner::setBackingScaleFactor(double backingScaleFactor, JSValueRef callback)
{
cacheTestRunnerCallback(SetBackingScaleFactorCallbackID, callback);
- InjectedBundle::shared().postSetBackingScaleFactor(backingScaleFactor);
+ InjectedBundle::singleton().postSetBackingScaleFactor(backingScaleFactor);
}
void TestRunner::setWindowIsKey(bool isKey)
{
- InjectedBundle::shared().postSetWindowIsKey(isKey);
+ InjectedBundle::singleton().postSetWindowIsKey(isKey);
}
void TestRunner::callAddChromeInputFieldCallback()
@@ -597,13 +616,18 @@ static inline bool toBool(JSStringRef value)
void TestRunner::overridePreference(JSStringRef preference, JSStringRef value)
{
+ auto& injectedBundle = InjectedBundle::singleton();
// FIXME: handle non-boolean preferences.
- WKBundleOverrideBoolPreferenceForTestRunner(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), toWK(preference).get(), toBool(value));
+ WKBundleOverrideBoolPreferenceForTestRunner(injectedBundle.bundle(), injectedBundle.pageGroup(), toWK(preference).get(), toBool(value));
}
void TestRunner::setAlwaysAcceptCookies(bool accept)
{
- WKBundleSetAlwaysAcceptCookies(InjectedBundle::shared().bundle(), accept);
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAlwaysAcceptCookies"));
+
+ WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(accept));
+
+ WKBundlePostSynchronousMessage(InjectedBundle::singleton().bundle(), messageName.get(), messageBody.get(), 0);
}
double TestRunner::preciseTime()
@@ -617,7 +641,8 @@ void TestRunner::setUserStyleSheetEnabled(bool enabled)
WKRetainPtr<WKStringRef> emptyUrl = adoptWK(WKStringCreateWithUTF8CString(""));
WKStringRef location = enabled ? m_userStyleSheetLocation.get() : emptyUrl.get();
- WKBundleSetUserStyleSheetLocation(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), location);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetUserStyleSheetLocation(injectedBundle.bundle(), injectedBundle.pageGroup(), location);
}
void TestRunner::setUserStyleSheetLocation(JSStringRef location)
@@ -630,68 +655,81 @@ void TestRunner::setUserStyleSheetLocation(JSStringRef location)
void TestRunner::setSpatialNavigationEnabled(bool enabled)
{
- WKBundleSetSpatialNavigationEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetSpatialNavigationEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::setTabKeyCyclesThroughElements(bool enabled)
{
- WKBundleSetTabKeyCyclesThroughElements(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetTabKeyCyclesThroughElements(injectedBundle.bundle(), injectedBundle.page()->page(), enabled);
}
void TestRunner::setSerializeHTTPLoads()
{
- WKBundleSetSerialLoadingEnabled(InjectedBundle::shared().bundle(), true);
+ // WK2 doesn't reorder loads.
}
void TestRunner::dispatchPendingLoadRequests()
{
- WKBundleDispatchPendingLoadRequests(InjectedBundle::shared().bundle());
+ // WK2 doesn't keep pending requests.
}
void TestRunner::setCacheModel(int model)
{
- WKBundleSetCacheModel(InjectedBundle::shared().bundle(), model);
+ InjectedBundle::singleton().setCacheModel(model);
}
void TestRunner::setAsynchronousSpellCheckingEnabled(bool enabled)
{
- WKBundleSetAsynchronousSpellCheckingEnabled(InjectedBundle::shared().bundle(), InjectedBundle::shared().pageGroup(), enabled);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetAsynchronousSpellCheckingEnabled(injectedBundle.bundle(), injectedBundle.pageGroup(), enabled);
}
void TestRunner::grantWebNotificationPermission(JSStringRef origin)
{
WKRetainPtr<WKStringRef> originWK = toWK(origin);
- WKBundleSetWebNotificationPermission(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page(), originWK.get(), true);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetWebNotificationPermission(injectedBundle.bundle(), injectedBundle.page()->page(), originWK.get(), true);
}
void TestRunner::denyWebNotificationPermission(JSStringRef origin)
{
WKRetainPtr<WKStringRef> originWK = toWK(origin);
- WKBundleSetWebNotificationPermission(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page(), originWK.get(), false);
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleSetWebNotificationPermission(injectedBundle.bundle(), injectedBundle.page()->page(), originWK.get(), false);
}
void TestRunner::removeAllWebNotificationPermissions()
{
- WKBundleRemoveAllWebNotificationPermissions(InjectedBundle::shared().bundle(), InjectedBundle::shared().page()->page());
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleRemoveAllWebNotificationPermissions(injectedBundle.bundle(), injectedBundle.page()->page());
}
void TestRunner::simulateWebNotificationClick(JSValueRef notification)
{
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(injectedBundle.page()->page());
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
- uint64_t notificationID = WKBundleGetWebNotificationID(InjectedBundle::shared().bundle(), context, notification);
- InjectedBundle::shared().postSimulateWebNotificationClick(notificationID);
+ uint64_t notificationID = WKBundleGetWebNotificationID(injectedBundle.bundle(), context, notification);
+ injectedBundle.postSimulateWebNotificationClick(notificationID);
}
void TestRunner::setGeolocationPermission(bool enabled)
{
// FIXME: this should be done by frame.
- InjectedBundle::shared().setGeolocationPermission(enabled);
+ InjectedBundle::singleton().setGeolocationPermission(enabled);
+}
+
+bool TestRunner::isGeolocationProviderActive()
+{
+ return InjectedBundle::singleton().isGeolocationProviderActive();
}
void TestRunner::setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef jsAltitude, JSValueRef jsAltitudeAccuracy, JSValueRef jsHeading, JSValueRef jsSpeed)
{
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(injectedBundle.page()->page());
JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
bool providesAltitude = false;
@@ -722,38 +760,51 @@ void TestRunner::setMockGeolocationPosition(double latitude, double longitude, d
speed = JSValueToNumber(context, jsSpeed, 0);
}
- InjectedBundle::shared().setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
+ injectedBundle.setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
}
void TestRunner::setMockGeolocationPositionUnavailableError(JSStringRef message)
{
WKRetainPtr<WKStringRef> messageWK = toWK(message);
- InjectedBundle::shared().setMockGeolocationPositionUnavailableError(messageWK.get());
+ InjectedBundle::singleton().setMockGeolocationPositionUnavailableError(messageWK.get());
+}
+
+void TestRunner::setUserMediaPermission(bool enabled)
+{
+ // FIXME: this should be done by frame.
+ InjectedBundle::singleton().setUserMediaPermission(enabled);
+}
+
+void TestRunner::setUserMediaPermissionForOrigin(bool permission, JSStringRef url)
+{
+ WKRetainPtr<WKStringRef> urlWK = toWK(url);
+ InjectedBundle::singleton().setUserMediaPermissionForOrigin(permission, urlWK.get());
}
bool TestRunner::callShouldCloseOnWebView()
{
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
return WKBundleFrameCallShouldCloseOnWebView(mainFrame);
}
void TestRunner::queueBackNavigation(unsigned howFarBackward)
{
- InjectedBundle::shared().queueBackNavigation(howFarBackward);
+ InjectedBundle::singleton().queueBackNavigation(howFarBackward);
}
void TestRunner::queueForwardNavigation(unsigned howFarForward)
{
- InjectedBundle::shared().queueForwardNavigation(howFarForward);
+ InjectedBundle::singleton().queueForwardNavigation(howFarForward);
}
-void TestRunner::queueLoad(JSStringRef url, JSStringRef target)
+void TestRunner::queueLoad(JSStringRef url, JSStringRef target, bool shouldOpenExternalURLs)
{
- WKRetainPtr<WKURLRef> baseURLWK(AdoptWK, WKBundleFrameCopyURL(WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page())));
+ auto& injectedBundle = InjectedBundle::singleton();
+ WKRetainPtr<WKURLRef> baseURLWK(AdoptWK, WKBundleFrameCopyURL(WKBundlePageGetMainFrame(injectedBundle.page()->page())));
WKRetainPtr<WKURLRef> urlWK(AdoptWK, WKURLCreateWithBaseURL(baseURLWK.get(), toWTFString(toWK(url)).utf8().data()));
WKRetainPtr<WKStringRef> urlStringWK(AdoptWK, WKURLCopyString(urlWK.get()));
- InjectedBundle::shared().queueLoad(urlStringWK.get(), toWK(target).get());
+ injectedBundle.queueLoad(urlStringWK.get(), toWK(target).get(), shouldOpenExternalURLs);
}
void TestRunner::queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL)
@@ -762,45 +813,45 @@ void TestRunner::queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, J
WKRetainPtr<WKStringRef> baseURLWK = baseURL ? toWK(baseURL) : WKRetainPtr<WKStringRef>();
WKRetainPtr<WKStringRef> unreachableURLWK = unreachableURL ? toWK(unreachableURL) : WKRetainPtr<WKStringRef>();
- InjectedBundle::shared().queueLoadHTMLString(contentWK.get(), baseURLWK.get(), unreachableURLWK.get());
+ InjectedBundle::singleton().queueLoadHTMLString(contentWK.get(), baseURLWK.get(), unreachableURLWK.get());
}
void TestRunner::queueReload()
{
- InjectedBundle::shared().queueReload();
+ InjectedBundle::singleton().queueReload();
}
void TestRunner::queueLoadingScript(JSStringRef script)
{
WKRetainPtr<WKStringRef> scriptWK = toWK(script);
- InjectedBundle::shared().queueLoadingScript(scriptWK.get());
+ InjectedBundle::singleton().queueLoadingScript(scriptWK.get());
}
void TestRunner::queueNonLoadingScript(JSStringRef script)
{
WKRetainPtr<WKStringRef> scriptWK = toWK(script);
- InjectedBundle::shared().queueNonLoadingScript(scriptWK.get());
+ InjectedBundle::singleton().queueNonLoadingScript(scriptWK.get());
}
void TestRunner::setHandlesAuthenticationChallenges(bool handlesAuthenticationChallenges)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetHandlesAuthenticationChallenge"));
WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(handlesAuthenticationChallenges));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
}
void TestRunner::setAuthenticationUsername(JSStringRef username)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAuthenticationUsername"));
WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithJSString(username));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
}
void TestRunner::setAuthenticationPassword(JSStringRef password)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetAuthenticationPassword"));
WKRetainPtr<WKStringRef> messageBody(AdoptWK, WKStringCreateWithJSString(password));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
}
bool TestRunner::secureEventInputIsEnabled() const
@@ -808,7 +859,7 @@ bool TestRunner::secureEventInputIsEnabled() const
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SecureEventInputIsEnabled"));
WKTypeRef returnData = 0;
- WKBundlePostSynchronousMessage(InjectedBundle::shared().bundle(), messageName.get(), 0, &returnData);
+ WKBundlePagePostSynchronousMessageForTesting(InjectedBundle::singleton().page()->page(), messageName.get(), 0, &returnData);
return WKBooleanGetValue(static_cast<WKBooleanRef>(returnData));
}
@@ -816,7 +867,119 @@ void TestRunner::setBlockAllPlugins(bool shouldBlock)
{
WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetBlockAllPlugins"));
WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(shouldBlock));
- WKBundlePostMessage(InjectedBundle::shared().bundle(), messageName.get(), messageBody.get());
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
+}
+
+JSValueRef TestRunner::failNextNewCodeBlock()
+{
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+ return JSC::failNextNewCodeBlock(context);
+}
+
+JSValueRef TestRunner::numberOfDFGCompiles(JSValueRef theFunction)
+{
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+ return JSC::numberOfDFGCompiles(context, theFunction);
+}
+
+JSValueRef TestRunner::neverInlineFunction(JSValueRef theFunction)
+{
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+ return JSC::setNeverInline(context, theFunction);
+}
+
+void TestRunner::setShouldDecideNavigationPolicyAfterDelay(bool value)
+{
+ m_shouldDecideNavigationPolicyAfterDelay = value;
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetShouldDecideNavigationPolicyAfterDelay"));
+ WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(value));
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
+}
+
+void TestRunner::setNavigationGesturesEnabled(bool value)
+{
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("SetNavigationGesturesEnabled"));
+ WKRetainPtr<WKBooleanRef> messageBody(AdoptWK, WKBooleanCreate(value));
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), messageBody.get());
+}
+
+static unsigned nextUIScriptCallbackID()
+{
+ static unsigned callbackID = FirstUIScriptCallbackID;
+ return callbackID++;
+}
+
+void TestRunner::runUIScript(JSStringRef script, JSValueRef callback)
+{
+ unsigned callbackID = nextUIScriptCallbackID();
+ cacheTestRunnerCallback(callbackID, callback);
+
+ WKRetainPtr<WKStringRef> messageName(AdoptWK, WKStringCreateWithUTF8CString("RunUIProcessScript"));
+
+ WKRetainPtr<WKMutableDictionaryRef> testDictionary(AdoptWK, WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> scriptKey(AdoptWK, WKStringCreateWithUTF8CString("Script"));
+ WKRetainPtr<WKStringRef> scriptValue(AdoptWK, WKStringCreateWithJSString(script));
+
+ WKRetainPtr<WKStringRef> callbackIDKey(AdoptWK, WKStringCreateWithUTF8CString("CallbackID"));
+ WKRetainPtr<WKUInt64Ref> callbackIDValue = adoptWK(WKUInt64Create(callbackID));
+
+ WKDictionarySetItem(testDictionary.get(), scriptKey.get(), scriptValue.get());
+ WKDictionarySetItem(testDictionary.get(), callbackIDKey.get(), callbackIDValue.get());
+
+ WKBundlePagePostMessage(InjectedBundle::singleton().page()->page(), messageName.get(), testDictionary.get());
+}
+
+void TestRunner::runUIScriptCallback(unsigned callbackID, JSStringRef result)
+{
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+
+ JSValueRef resultValue = JSValueMakeString(context, result);
+ callTestRunnerCallback(callbackID, 1, &resultValue);
+}
+
+void TestRunner::installDidBeginSwipeCallback(JSValueRef callback)
+{
+ cacheTestRunnerCallback(DidBeginSwipeCallbackID, callback);
+}
+
+void TestRunner::installWillEndSwipeCallback(JSValueRef callback)
+{
+ cacheTestRunnerCallback(WillEndSwipeCallbackID, callback);
+}
+
+void TestRunner::installDidEndSwipeCallback(JSValueRef callback)
+{
+ cacheTestRunnerCallback(DidEndSwipeCallbackID, callback);
+}
+
+void TestRunner::installDidRemoveSwipeSnapshotCallback(JSValueRef callback)
+{
+ cacheTestRunnerCallback(DidRemoveSwipeSnapshotCallbackID, callback);
+}
+
+void TestRunner::callDidBeginSwipeCallback()
+{
+ callTestRunnerCallback(DidBeginSwipeCallbackID);
+}
+
+void TestRunner::callWillEndSwipeCallback()
+{
+ callTestRunnerCallback(WillEndSwipeCallbackID);
+}
+
+void TestRunner::callDidEndSwipeCallback()
+{
+ callTestRunnerCallback(DidEndSwipeCallbackID);
+}
+
+void TestRunner::callDidRemoveSwipeSnapshotCallback()
+{
+ callTestRunnerCallback(DidRemoveSwipeSnapshotCallbackID);
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
index 0c91645f4..e50c28e89 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
+++ b/Tools/WebKitTestRunner/InjectedBundle/TestRunner.h
@@ -27,29 +27,28 @@
#define TestRunner_h
#include "JSWrappable.h"
+#include "StringFunctions.h"
#include <JavaScriptCore/JSRetainPtr.h>
-#include <WebKit2/WKBundleScriptWorld.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKBundleScriptWorld.h>
+#include <WebKit/WKRetainPtr.h>
#include <string>
#include <wtf/PassRefPtr.h>
+#include <wtf/text/WTFString.h>
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
#include <CoreFoundation/CFRunLoop.h>
typedef RetainPtr<CFRunLoopTimerRef> PlatformTimerRef;
-#elif PLATFORM(WIN)
-typedef UINT_PTR PlatformTimerRef;
#elif PLATFORM(QT)
#include <QTimer>
typedef QTimer PlatformTimerRef;
#elif PLATFORM(GTK)
-typedef unsigned int PlatformTimerRef;
+#include <wtf/RunLoop.h>
+namespace WTR {
+class TestRunner;
+typedef RunLoop::Timer<TestRunner> PlatformTimerRef;
+}
#elif PLATFORM(EFL)
-#if USE(EO)
-typedef struct _Eo Ecore_Timer;
-#else
-typedef struct _Ecore_Timer Ecore_Timer;
-#endif
typedef Ecore_Timer* PlatformTimerRef;
#endif
@@ -66,6 +65,8 @@ public:
void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
// The basics.
+ WKURLRef testURL() const { return m_testURL.get(); }
+ void setTestURL(WKURLRef url) { m_testURL = url; }
void dumpAsText(bool dumpPixels);
void waitForPolicyDelegate();
void dumpChildFramesAsText() { m_whatToDump = AllFramesText; }
@@ -89,6 +90,7 @@ public:
void dumpApplicationCacheDelegateCallbacks() { m_dumpApplicationCacheDelegateCallbacks = true; }
void dumpDatabaseCallbacks() { m_dumpDatabaseCallbacks = true; }
void dumpDOMAsWebArchive() { m_whatToDump = DOMAsWebArchive; }
+ void dumpPolicyDelegateCallbacks() { m_dumpPolicyCallbacks = true; }
void setShouldDumpFrameLoadCallbacks(bool value) { m_dumpFrameLoadCallbacks = value; }
void setShouldDumpProgressFinishedCallback(bool value) { m_dumpProgressFinishedCallback = value; }
@@ -146,7 +148,6 @@ public:
void clearApplicationCacheForOrigin(JSStringRef origin);
void setAppCacheMaximumSize(uint64_t);
long long applicationCacheDiskUsageForOrigin(JSStringRef origin);
- void setApplicationCacheOriginQuota(unsigned long long);
void disallowIncreaseForApplicationCacheQuota();
bool shouldDisallowIncreaseForApplicationCacheQuota() { return m_disallowIncreaseForApplicationCacheQuota; }
JSValueRef originsWithApplicationCache();
@@ -187,6 +188,7 @@ public:
bool shouldDumpApplicationCacheDelegateCallbacks() const { return m_dumpApplicationCacheDelegateCallbacks; }
bool shouldDumpDatabaseCallbacks() const { return m_dumpDatabaseCallbacks; }
bool shouldDumpSelectionRect() const { return m_dumpSelectionRect; }
+ bool shouldDumpPolicyCallbacks() const { return m_dumpPolicyCallbacks; }
bool isPolicyDelegateEnabled() const { return m_policyDelegateEnabled; }
bool isPolicyDelegatePermissive() const { return m_policyDelegatePermissive; }
@@ -204,7 +206,8 @@ public:
void showWebInspector();
void closeWebInspector();
- void evaluateInWebInspector(long callId, JSStringRef script);
+ void evaluateInWebInspector(JSStringRef script);
+ JSRetainPtr<JSStringRef> inspectorTestStubURL();
void setPOSIXLocale(JSStringRef);
@@ -212,6 +215,8 @@ public:
void setWillSendRequestReturnsNull(bool f) { m_willSendRequestReturnsNull = f; }
bool willSendRequestReturnsNullOnRedirect() const { return m_willSendRequestReturnsNullOnRedirect; }
void setWillSendRequestReturnsNullOnRedirect(bool f) { m_willSendRequestReturnsNullOnRedirect = f; }
+ void setWillSendRequestAddsHTTPBody(JSStringRef body) { m_willSendRequestHTTPBody = toWTFString(toWK(body)); }
+ String willSendRequestHTTPBody() const { return m_willSendRequestHTTPBody; }
void setTextDirection(JSStringRef);
@@ -225,6 +230,12 @@ public:
bool globalFlag() const { return m_globalFlag; }
void setGlobalFlag(bool value) { m_globalFlag = value; }
+ double databaseDefaultQuota() const { return m_databaseDefaultQuota; }
+ void setDatabaseDefaultQuota(double quota) { m_databaseDefaultQuota = quota; }
+
+ double databaseMaxQuota() const { return m_databaseMaxQuota; }
+ void setDatabaseMaxQuota(double quota) { m_databaseMaxQuota = quota; }
+
void addChromeInputField(JSValueRef);
void removeChromeInputField(JSValueRef);
void focusWebView(JSValueRef);
@@ -256,35 +267,60 @@ public:
void setGeolocationPermission(bool);
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, JSValueRef altitude, JSValueRef altitudeAccuracy, JSValueRef heading, JSValueRef speed);
void setMockGeolocationPositionUnavailableError(JSStringRef message);
+ bool isGeolocationProviderActive();
- JSRetainPtr<JSStringRef> platformName();
+ // MediaStream
+ void setUserMediaPermission(bool);
+ void setUserMediaPermissionForOrigin(bool permission, JSStringRef url);
void setPageVisibility(JSStringRef state);
void resetPageVisibility();
bool callShouldCloseOnWebView();
- void setCustomTimeout(int duration);
+ void setCustomTimeout(int duration) { m_timeout = duration; }
// Work queue.
void queueBackNavigation(unsigned howFarBackward);
void queueForwardNavigation(unsigned howFarForward);
- void queueLoad(JSStringRef url, JSStringRef target);
+ void queueLoad(JSStringRef url, JSStringRef target, bool shouldOpenExternalURLs);
void queueLoadHTMLString(JSStringRef content, JSStringRef baseURL, JSStringRef unreachableURL);
void queueReload();
void queueLoadingScript(JSStringRef script);
void queueNonLoadingScript(JSStringRef script);
bool secureEventInputIsEnabled() const;
+
+ JSValueRef failNextNewCodeBlock();
+ JSValueRef numberOfDFGCompiles(JSValueRef theFunction);
+ JSValueRef neverInlineFunction(JSValueRef theFunction);
-private:
- static const double waitToDumpWatchdogTimerInterval;
+ bool shouldDecideNavigationPolicyAfterDelay() const { return m_shouldDecideNavigationPolicyAfterDelay; }
+ void setShouldDecideNavigationPolicyAfterDelay(bool);
+ void setNavigationGesturesEnabled(bool);
+
+ void runUIScript(JSStringRef script, JSValueRef callback);
+ void runUIScriptCallback(unsigned callbackID, JSStringRef result);
+ void installDidBeginSwipeCallback(JSValueRef);
+ void installWillEndSwipeCallback(JSValueRef);
+ void installDidEndSwipeCallback(JSValueRef);
+ void installDidRemoveSwipeSnapshotCallback(JSValueRef);
+ void callDidBeginSwipeCallback();
+ void callWillEndSwipeCallback();
+ void callDidEndSwipeCallback();
+ void callDidRemoveSwipeSnapshotCallback();
+
+ void clearTestRunnerCallbacks();
+
+private:
TestRunner();
void platformInitialize();
void initializeWaitToDumpWatchdogTimerIfNeeded();
+ WKRetainPtr<WKURLRef> m_testURL; // Set by InjectedBundlePage once provisional load starts.
+
WhatToDump m_whatToDump;
bool m_shouldDumpAllFrameScrollPositions;
bool m_shouldDumpBackForwardListsForAllWindows;
@@ -305,6 +341,7 @@ private:
bool m_dumpWillCacheResponse;
bool m_dumpApplicationCacheDelegateCallbacks;
bool m_dumpDatabaseCallbacks;
+ bool m_dumpPolicyCallbacks { false };
bool m_disallowIncreaseForApplicationCacheQuota;
bool m_waitToDump; // True if waitUntilDone() has been called, but notifyDone() has not yet been called.
bool m_testRepaint;
@@ -314,6 +351,7 @@ private:
bool m_willSendRequestReturnsNull;
bool m_willSendRequestReturnsNullOnRedirect;
bool m_shouldStopProvisionalFrameLoads;
+ String m_willSendRequestHTTPBody;
bool m_policyDelegateEnabled;
bool m_policyDelegatePermissive;
@@ -323,9 +361,16 @@ private:
int m_timeout;
+ double m_databaseDefaultQuota;
+ double m_databaseMaxQuota;
+
+ bool m_shouldDecideNavigationPolicyAfterDelay { false };
+
bool m_userStyleSheetEnabled;
WKRetainPtr<WKStringRef> m_userStyleSheetLocation;
+ WKRetainPtr<WKArrayRef> m_allowedHosts;
+
PlatformTimerRef m_waitToDumpWatchdogTimer;
};
diff --git a/Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp b/Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp
index 0087aa301..f4e68f695 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/TextInputController.cpp
@@ -30,7 +30,7 @@
#include "InjectedBundlePage.h"
#include "JSTextInputController.h"
#include "StringFunctions.h"
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePagePrivate.h>
namespace WTR {
@@ -59,22 +59,22 @@ void TextInputController::makeWindowObject(JSContextRef context, JSObjectRef win
void TextInputController::setMarkedText(JSStringRef text, int from, int length)
{
- WKBundlePageSetComposition(InjectedBundle::shared().page()->page(), toWK(text).get(), from, length);
+ WKBundlePageSetComposition(InjectedBundle::singleton().page()->page(), toWK(text).get(), from, length);
}
bool TextInputController::hasMarkedText()
{
- return WKBundlePageHasComposition(InjectedBundle::shared().page()->page());
+ return WKBundlePageHasComposition(InjectedBundle::singleton().page()->page());
}
void TextInputController::unmarkText()
{
- WKBundlePageConfirmComposition(InjectedBundle::shared().page()->page());
+ WKBundlePageConfirmComposition(InjectedBundle::singleton().page()->page());
}
void TextInputController::insertText(JSStringRef text)
{
- WKBundlePageConfirmCompositionWithText(InjectedBundle::shared().page()->page(), toWK(text).get());
+ WKBundlePageConfirmCompositionWithText(InjectedBundle::singleton().page()->page(), toWK(text).get());
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp
index 3b58c0da0..c1cb34951 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityControllerAtk.cpp
@@ -28,132 +28,34 @@
#include "config.h"
#include "AccessibilityController.h"
+#if HAVE(ACCESSIBILITY)
+
#include "InjectedBundle.h"
#include "InjectedBundlePage.h"
-#include <WebKit2/WKBundlePagePrivate.h>
+#include <WebKit/WKBundlePagePrivate.h>
#include <atk/atk.h>
#include <cstdio>
-#include <wtf/gobject/GOwnPtr.h>
+#include <wtf/glib/GUniquePtr.h>
#include <wtf/text/StringBuilder.h>
namespace WTR {
-static void printAccessibilityEvent(AtkObject* accessible, const gchar* signalName, const gchar* signalValue)
-{
- // Do not handle state-change:defunct signals, as the AtkObject
- // associated to them will not be valid at this point already.
- if (!signalName || !g_strcmp0(signalName, "state-change:defunct"))
- return;
-
- if (!accessible || !ATK_IS_OBJECT(accessible))
- return;
-
- const gchar* objectName = atk_object_get_name(accessible);
- AtkRole objectRole = atk_object_get_role(accessible);
-
- // Try to always provide a name to be logged for the object.
- if (!objectName || *objectName == '\0')
- objectName = "(No name)";
-
- GOwnPtr<gchar> signalNameAndValue(signalValue ? g_strdup_printf("%s = %s", signalName, signalValue) : g_strdup(signalName));
- GOwnPtr<gchar> accessibilityEventString(g_strdup_printf("Accessibility object emitted \"%s\" / Name: \"%s\" / Role: %d\n", signalNameAndValue.get(), objectName, objectRole));
- InjectedBundle::shared().outputText(String::fromUTF8(accessibilityEventString.get()));
-}
-
-static gboolean axObjectEventListener(GSignalInvocationHint *signalHint, guint numParamValues, const GValue *paramValues, gpointer data)
-{
- // At least we should receive the instance emitting the signal.
- if (numParamValues < 1)
- return TRUE;
-
- AtkObject* accessible = ATK_OBJECT(g_value_get_object(&paramValues[0]));
- if (!accessible || !ATK_IS_OBJECT(accessible))
- return TRUE;
-
- GSignalQuery signalQuery;
- GOwnPtr<gchar> signalName;
- GOwnPtr<gchar> signalValue;
-
- g_signal_query(signalHint->signal_id, &signalQuery);
-
- if (!g_strcmp0(signalQuery.signal_name, "state-change")) {
- signalName.set(g_strdup_printf("state-change:%s", g_value_get_string(&paramValues[1])));
- signalValue.set(g_strdup_printf("%d", g_value_get_boolean(&paramValues[2])));
- } else if (!g_strcmp0(signalQuery.signal_name, "focus-event")) {
- signalName.set(g_strdup("focus-event"));
- signalValue.set(g_strdup_printf("%d", g_value_get_boolean(&paramValues[1])));
- } else if (!g_strcmp0(signalQuery.signal_name, "children-changed")) {
- signalName.set(g_strdup("children-changed"));
- signalValue.set(g_strdup_printf("%d", g_value_get_uint(&paramValues[1])));
- } else if (!g_strcmp0(signalQuery.signal_name, "property-change"))
- signalName.set(g_strdup_printf("property-change:%s", g_quark_to_string(signalHint->detail)));
- else
- signalName.set(g_strdup(signalQuery.signal_name));
-
- printAccessibilityEvent(accessible, signalName.get(), signalValue.get());
-
- return TRUE;
-}
-
void AccessibilityController::logAccessibilityEvents()
{
- // Ensure no callbacks are connected before.
- resetToConsistentState();
-
- // Ensure that accessibility is initialized for the WebView by querying for
- // the root accessible object, which will create the full hierarchy.
- rootElement();
-
- // Add global listeners for AtkObject's signals.
- m_stateChangeListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:state-change");
- m_focusEventListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:focus-event");
- m_activeDescendantChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:active-descendant-changed");
- m_childrenChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:children-changed");
- m_propertyChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:property-change");
- m_visibleDataChangedListenerId = atk_add_global_event_listener(axObjectEventListener, "ATK:AtkObject:visible-data-changed");
-
- // Ensure the Atk interface types are registered, otherwise
- // the AtkDocument signal handlers below won't get registered.
- GObject* dummyAxObject = G_OBJECT(g_object_new(ATK_TYPE_OBJECT, 0));
- AtkObject* dummyNoOpAxObject = atk_no_op_object_new(dummyAxObject);
- g_object_unref(G_OBJECT(dummyNoOpAxObject));
- g_object_unref(dummyAxObject);
+ // No longer implemented for ATK. Use addNotificationListener() instead to
+ // check that relevant ATK signals are being emmitted in response to events.
}
void AccessibilityController::resetToConsistentState()
{
- // AtkObject signals.
- if (m_stateChangeListenerId) {
- atk_remove_global_event_listener(m_stateChangeListenerId);
- m_stateChangeListenerId = 0;
- }
- if (m_focusEventListenerId) {
- atk_remove_global_event_listener(m_focusEventListenerId);
- m_focusEventListenerId = 0;
- }
- if (m_activeDescendantChangedListenerId) {
- atk_remove_global_event_listener(m_activeDescendantChangedListenerId);
- m_activeDescendantChangedListenerId = 0;
- }
- if (m_childrenChangedListenerId) {
- atk_remove_global_event_listener(m_childrenChangedListenerId);
- m_childrenChangedListenerId = 0;
- }
- if (m_propertyChangedListenerId) {
- atk_remove_global_event_listener(m_propertyChangedListenerId);
- m_propertyChangedListenerId = 0;
- }
- if (m_visibleDataChangedListenerId) {
- atk_remove_global_event_listener(m_visibleDataChangedListenerId);
- m_visibleDataChangedListenerId = 0;
- }
+ m_globalNotificationHandler = nullptr;
}
static AtkObject* childElementById(AtkObject* parent, const char* id)
{
if (!ATK_IS_OBJECT(parent))
- return 0;
+ return nullptr;
bool parentFound = false;
AtkAttributeSet* attributeSet = atk_object_get_attributes(parent);
@@ -177,29 +79,35 @@ static AtkObject* childElementById(AtkObject* parent, const char* id)
return result;
}
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityController::accessibleElementById(JSStringRef id)
{
- AtkObject* root = ATK_OBJECT(WKAccessibilityRootObject(InjectedBundle::shared().page()->page()));
+ AtkObject* root = ATK_OBJECT(WKAccessibilityRootObject(InjectedBundle::singleton().page()->page()));
if (!root)
- return 0;
+ return nullptr;
size_t bufferSize = JSStringGetMaximumUTF8CStringSize(id);
- GOwnPtr<gchar> idBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
+ GUniquePtr<gchar> idBuffer(static_cast<gchar*>(g_malloc(bufferSize)));
JSStringGetUTF8CString(id, idBuffer.get(), bufferSize);
AtkObject* result = childElementById(root, idBuffer.get());
if (ATK_IS_OBJECT(result))
return AccessibilityUIElement::create(result);
- return 0;
+ return nullptr;
+}
+
+JSRetainPtr<JSStringRef> AccessibilityController::platformName()
+{
+ JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("atk"));
+ return platformName;
}
PassRefPtr<AccessibilityUIElement> AccessibilityController::rootElement()
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
void* root = WKAccessibilityRootObject(page);
return AccessibilityUIElement::create(static_cast<AtkObject*>(root));
@@ -207,10 +115,34 @@ PassRefPtr<AccessibilityUIElement> AccessibilityController::rootElement()
PassRefPtr<AccessibilityUIElement> AccessibilityController::focusedElement()
{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
void* root = WKAccessibilityFocusedObject(page);
return AccessibilityUIElement::create(static_cast<AtkObject*>(root));
}
+bool AccessibilityController::addNotificationListener(JSValueRef functionCallback)
+{
+ if (!functionCallback)
+ return false;
+
+ // Only one global notification listener.
+ if (!m_globalNotificationHandler)
+ m_globalNotificationHandler = AccessibilityNotificationHandler::create();
+ m_globalNotificationHandler->setNotificationFunctionCallback(functionCallback);
+
+ return true;
+}
+
+bool AccessibilityController::removeNotificationListener()
+{
+ // Programmers should not be trying to remove a listener that's already removed.
+ ASSERT(m_globalNotificationHandler);
+
+ m_globalNotificationHandler = nullptr;
+ return false;
+}
+
} // namespace WTR
+
+#endif // HAVE(ACCESSIBILITY)
diff --git a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp
new file mode 100644
index 000000000..11988ba98
--- /dev/null
+++ b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.cpp
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved.
+ *
+ * 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 "AccessibilityNotificationHandlerAtk.h"
+
+#if HAVE(ACCESSIBILITY)
+
+#include "InjectedBundle.h"
+#include "InjectedBundlePage.h"
+#include "JSWrapper.h"
+#include <WebKit/WKBundleFrame.h>
+#include <WebKit/WKBundlePage.h>
+#include <WebKit/WKBundlePagePrivate.h>
+#include <wtf/HashMap.h>
+#include <wtf/Vector.h>
+#include <wtf/glib/GUniquePtr.h>
+#include <wtf/text/CString.h>
+#include <wtf/text/WTFString.h>
+
+namespace WTR {
+
+namespace {
+
+typedef HashMap<AtkObject*, AccessibilityNotificationHandler*> NotificationHandlersMap;
+
+WTF::Vector<unsigned> listenerIds;
+NotificationHandlersMap notificationHandlers;
+AccessibilityNotificationHandler* globalNotificationHandler = nullptr;
+
+gboolean axObjectEventListener(GSignalInvocationHint* signalHint, unsigned numParamValues, const GValue* paramValues, gpointer data)
+{
+ // At least we should receive the instance emitting the signal.
+ if (!numParamValues)
+ return true;
+
+ AtkObject* accessible = ATK_OBJECT(g_value_get_object(&paramValues[0]));
+ if (!accessible || !ATK_IS_OBJECT(accessible))
+ return true;
+
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
+ JSContextRef jsContext = WKBundleFrameGetJavaScriptContext(mainFrame);
+#else
+ JSContextRef jsContext = nullptr;
+#endif
+
+ GSignalQuery signalQuery;
+ const char* notificationName = nullptr;
+ Vector<JSValueRef> extraArgs;
+
+ g_signal_query(signalHint->signal_id, &signalQuery);
+
+ if (!g_strcmp0(signalQuery.signal_name, "state-change")) {
+ if (!g_strcmp0(g_value_get_string(&paramValues[1]), "checked"))
+ notificationName = "CheckedStateChanged";
+ else if (!g_strcmp0(g_value_get_string(&paramValues[1]), "invalid-entry"))
+ notificationName = "AXInvalidStatusChanged";
+ } else if (!g_strcmp0(signalQuery.signal_name, "focus-event")) {
+ if (g_value_get_boolean(&paramValues[1]))
+ notificationName = "AXFocusedUIElementChanged";
+ } else if (!g_strcmp0(signalQuery.signal_name, "selection-changed")) {
+ notificationName = "AXSelectedChildrenChanged";
+ } else if (!g_strcmp0(signalQuery.signal_name, "children-changed")) {
+ const gchar* childrenChangedDetail = g_quark_to_string(signalHint->detail);
+ notificationName = !g_strcmp0(childrenChangedDetail, "add") ? "AXChildrenAdded" : "AXChildrenRemoved";
+ } else if (!g_strcmp0(signalQuery.signal_name, "property-change")) {
+ if (!g_strcmp0(g_quark_to_string(signalHint->detail), "accessible-value"))
+ notificationName = "AXValueChanged";
+ } else if (!g_strcmp0(signalQuery.signal_name, "load-complete"))
+ notificationName = "AXLoadComplete";
+ else if (!g_strcmp0(signalQuery.signal_name, "text-caret-moved")) {
+ notificationName = "AXTextCaretMoved";
+ GUniquePtr<char> signalValue(g_strdup_printf("%d", g_value_get_int(&paramValues[1])));
+ JSRetainPtr<JSStringRef> jsSignalValue(Adopt, JSStringCreateWithUTF8CString(signalValue.get()));
+ extraArgs.append(JSValueMakeString(jsContext, jsSignalValue.get()));
+ } else if (!g_strcmp0(signalQuery.signal_name, "text-insert") || !g_strcmp0(signalQuery.signal_name, "text-remove"))
+ notificationName = "AXTextChanged";
+
+ if (!jsContext)
+ return true;
+
+ if (notificationName) {
+ JSRetainPtr<JSStringRef> jsNotificationEventName(Adopt, JSStringCreateWithUTF8CString(notificationName));
+ JSValueRef notificationNameArgument = JSValueMakeString(jsContext, jsNotificationEventName.get());
+ NotificationHandlersMap::iterator elementNotificationHandler = notificationHandlers.find(accessible);
+ JSValueRef arguments[5]; // this dimension must be >= 2 + max(extraArgs.size())
+ arguments[0] = toJS(jsContext, WTF::getPtr(WTR::AccessibilityUIElement::create(accessible)));
+ arguments[1] = notificationNameArgument;
+ size_t numOfExtraArgs = extraArgs.size();
+ for (int i = 0; i < numOfExtraArgs; i++)
+ arguments[i + 2] = extraArgs[i];
+ if (elementNotificationHandler != notificationHandlers.end()) {
+ // Listener for one element. As arguments, it gets the notification name
+ // and sometimes extra arguments.
+ JSObjectCallAsFunction(jsContext,
+ const_cast<JSObjectRef>(elementNotificationHandler->value->notificationFunctionCallback()),
+ 0, numOfExtraArgs + 1, arguments + 1, 0);
+ }
+
+ if (globalNotificationHandler) {
+ // A global listener gets additionally the element as the first argument.
+ JSObjectCallAsFunction(jsContext,
+ const_cast<JSObjectRef>(globalNotificationHandler->notificationFunctionCallback()),
+ 0, numOfExtraArgs + 2, arguments, 0);
+ }
+ }
+
+ return true;
+}
+
+} // namespace
+
+AccessibilityNotificationHandler::AccessibilityNotificationHandler()
+ : m_platformElement(0)
+ , m_notificationFunctionCallback(0)
+{
+}
+
+AccessibilityNotificationHandler::~AccessibilityNotificationHandler()
+{
+ removeAccessibilityNotificationHandler();
+ disconnectAccessibilityCallbacks();
+}
+
+void AccessibilityNotificationHandler::setNotificationFunctionCallback(JSValueRef notificationFunctionCallback)
+{
+ if (!notificationFunctionCallback) {
+ removeAccessibilityNotificationHandler();
+ disconnectAccessibilityCallbacks();
+ return;
+ }
+
+ m_notificationFunctionCallback = notificationFunctionCallback;
+
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
+ JSContextRef jsContext = WKBundleFrameGetJavaScriptContext(mainFrame);
+#else
+ JSContextRef jsContext = nullptr;
+#endif
+ if (!jsContext)
+ return;
+
+ connectAccessibilityCallbacks();
+
+ JSValueProtect(jsContext, m_notificationFunctionCallback);
+ // Check if this notification handler is related to a specific element.
+ if (m_platformElement) {
+ NotificationHandlersMap::iterator currentNotificationHandler = notificationHandlers.find(m_platformElement.get());
+ if (currentNotificationHandler != notificationHandlers.end()) {
+ ASSERT(currentNotificationHandler->value->platformElement());
+ JSValueUnprotect(jsContext, currentNotificationHandler->value->notificationFunctionCallback());
+ notificationHandlers.remove(currentNotificationHandler->value->platformElement().get());
+ }
+ notificationHandlers.add(m_platformElement.get(), this);
+ } else {
+ if (globalNotificationHandler)
+ JSValueUnprotect(jsContext, globalNotificationHandler->notificationFunctionCallback());
+ globalNotificationHandler = this;
+ }
+}
+
+void AccessibilityNotificationHandler::removeAccessibilityNotificationHandler()
+{
+#if PLATFORM(GTK) || PLATFORM(EFL)
+ WKBundlePageRef page = InjectedBundle::singleton().page()->page();
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(page);
+ JSContextRef jsContext = WKBundleFrameGetJavaScriptContext(mainFrame);
+#else
+ JSContextRef jsContext = nullptr;
+#endif
+ if (!jsContext)
+ return;
+
+ if (globalNotificationHandler == this) {
+ JSValueUnprotect(jsContext, globalNotificationHandler->notificationFunctionCallback());
+ globalNotificationHandler = nullptr;
+ } else if (m_platformElement.get()) {
+ NotificationHandlersMap::iterator removeNotificationHandler = notificationHandlers.find(m_platformElement.get());
+ if (removeNotificationHandler != notificationHandlers.end()) {
+ JSValueUnprotect(jsContext, removeNotificationHandler->value->notificationFunctionCallback());
+ notificationHandlers.remove(removeNotificationHandler);
+ }
+ }
+}
+
+void AccessibilityNotificationHandler::connectAccessibilityCallbacks()
+{
+ // Ensure no callbacks are connected before.
+ if (!disconnectAccessibilityCallbacks())
+ return;
+
+ const char* signalNames[] = {
+ "ATK:AtkObject:state-change",
+ "ATK:AtkObject:focus-event",
+ "ATK:AtkObject:active-descendant-changed",
+ "ATK:AtkObject:children-changed",
+ "ATK:AtkObject:property-change",
+ "ATK:AtkObject:visible-data-changed",
+ "ATK:AtkDocument:load-complete",
+ "ATK:AtkSelection:selection-changed",
+ "ATK:AtkText:text-caret-moved",
+ "ATK:AtkText:text-insert",
+ "ATK:AtkText:text-remove",
+ 0
+ };
+
+ // Register atk interfaces, otherwise add_global may fail.
+ GObject* dummyObject = (GObject*)g_object_new(G_TYPE_OBJECT, NULL, NULL);
+ g_object_unref(atk_no_op_object_new(dummyObject));
+ g_object_unref(dummyObject);
+
+ // Add global listeners for AtkObject's signals.
+ for (const char** signalName = signalNames; *signalName; signalName++) {
+ unsigned id = atk_add_global_event_listener(axObjectEventListener, *signalName);
+ if (!id) {
+ String message = String::format("atk_add_global_event_listener failed for signal %s\n", *signalName);
+ InjectedBundle::singleton().outputText(message);
+ continue;
+ }
+
+ listenerIds.append(id);
+ }
+}
+
+bool AccessibilityNotificationHandler::disconnectAccessibilityCallbacks()
+{
+ // Only disconnect if there is no notification handler.
+ if (!notificationHandlers.isEmpty() || globalNotificationHandler)
+ return false;
+
+ // AtkObject signals.
+ for (int i = 0; i < listenerIds.size(); i++) {
+ ASSERT(listenerIds[i]);
+ atk_remove_global_event_listener(listenerIds[i]);
+ }
+ listenerIds.clear();
+ return true;
+}
+
+} // namespace WTR
+
+#endif // HAVE(ACCESSIBILITY)
diff --git a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h
new file mode 100644
index 000000000..bb3869ecd
--- /dev/null
+++ b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityNotificationHandlerAtk.h
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2013 Samsung Electronics Inc. All rights reserved.
+ *
+ * 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.
+ */
+
+#ifndef AccessibilityNotificationHandlerAtk_h
+#define AccessibilityNotificationHandlerAtk_h
+
+#if HAVE(ACCESSIBILITY)
+
+#include <JavaScriptCore/JSObjectRef.h>
+#include <atk/atk.h>
+#include <atk/atkobject.h>
+#include <wtf/PassRefPtr.h>
+#include <wtf/RefCounted.h>
+#include <wtf/glib/GRefPtr.h>
+
+namespace WTR {
+
+class AccessibilityNotificationHandler : public RefCounted<AccessibilityNotificationHandler> {
+public:
+ static PassRefPtr<AccessibilityNotificationHandler> create()
+ {
+ return adoptRef(new AccessibilityNotificationHandler());
+ }
+ ~AccessibilityNotificationHandler();
+ void setPlatformElement(GRefPtr<AtkObject> platformElement) { m_platformElement = platformElement; }
+ GRefPtr<AtkObject> platformElement() const { return m_platformElement; }
+ void setNotificationFunctionCallback(JSValueRef);
+ JSValueRef notificationFunctionCallback() const { return m_notificationFunctionCallback; }
+
+private:
+ AccessibilityNotificationHandler();
+ void connectAccessibilityCallbacks();
+ bool disconnectAccessibilityCallbacks();
+ void removeAccessibilityNotificationHandler();
+
+ GRefPtr<AtkObject> m_platformElement;
+ JSValueRef m_notificationFunctionCallback;
+};
+
+} // namespace WTR
+
+#endif // HAVE(ACCESSIBILITY)
+
+#endif // AccessibilityNotificationHandlerAtk_h
diff --git a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
index a72f48612..ded3a329d 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/atk/AccessibilityUIElementAtk.cpp
@@ -1,6 +1,7 @@
/*
* Copyright (C) 2011 Apple Inc. All Rights Reserved.
* Copyright (C) 2012 Igalia S.L.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -33,62 +34,182 @@
#include "InjectedBundlePage.h"
#include "NotImplemented.h"
#include <JavaScriptCore/JSStringRef.h>
+#include <JavaScriptCore/OpaqueJSString.h>
+#if ATK_CHECK_VERSION(2,11,90)
+#include <WebKit/WKBundleFrame.h>
+#endif
#include <atk/atk.h>
#include <wtf/Assertions.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GRefPtr.h>
+#include <wtf/glib/GRefPtr.h>
+#include <wtf/glib/GUniquePtr.h>
#include <wtf/text/CString.h>
+#include <wtf/text/StringBuilder.h>
#include <wtf/text/WTFString.h>
#include <wtf/unicode/CharacterNames.h>
namespace WTR {
-static String coreAttributeToAtkAttribute(JSStringRef attribute)
+namespace {
+
+#if ATK_CHECK_VERSION(2,11,92)
+enum RangeLimit {
+ RangeLimitMinimum,
+ RangeLimitMaximum
+};
+#endif
+
+enum AtkAttributeType {
+ ObjectAttributeType,
+ TextAttributeType
+};
+
+enum AttributeDomain {
+ CoreDomain = 0,
+ AtkDomain
+};
+
+enum AttributesIndex {
+ // Attribute names.
+ InvalidNameIndex = 0,
+ PosInSetIndex,
+ SetSizeIndex,
+ PlaceholderNameIndex,
+ SortNameIndex,
+
+ // Attribute values.
+ SortAscendingValueIndex,
+ SortDescendingValueIndex,
+ SortUnknownValueIndex,
+
+ NumberOfAttributes
+};
+
+// Attribute names & Values (keep on sync with enum AttributesIndex).
+const String attributesMap[][2] = {
+ // Attribute names.
+ { "AXInvalid", "invalid" },
+ { "AXARIAPosInSet", "posinset" },
+ { "AXARIASetSize", "setsize" },
+ { "AXPlaceholderValue", "placeholder-text" } ,
+ { "AXSortDirection", "sort" },
+
+ // Attribute values.
+ { "AXAscendingSortDirection", "ascending" },
+ { "AXDescendingSortDirection", "descending" },
+ { "AXUnknownSortDirection", "unknown" }
+};
+
+#if ATK_CHECK_VERSION(2, 11, 3)
+const char* landmarkStringBanner = "AXLandmarkBanner";
+const char* landmarkStringComplementary = "AXLandmarkComplementary";
+const char* landmarkStringContentinfo = "AXLandmarkContentInfo";
+const char* landmarkStringMain = "AXLandmarkMain";
+const char* landmarkStringNavigation = "AXLandmarkNavigation";
+const char* landmarkStringSearch = "AXLandmarkSearch";
+#endif
+
+String jsStringToWTFString(JSStringRef attribute)
{
size_t bufferSize = JSStringGetMaximumUTF8CStringSize(attribute);
- GOwnPtr<gchar> buffer(static_cast<gchar*>(g_malloc(bufferSize)));
+ GUniquePtr<gchar> buffer(static_cast<gchar*>(g_malloc(bufferSize)));
JSStringGetUTF8CString(attribute, buffer.get(), bufferSize);
- String attributeString = String::fromUTF8(buffer.get());
- return attributeString == "AXPlaceholderValue" ? "placeholder-text" : String();
+ return String::fromUTF8(buffer.get());
+}
+
+String coreAttributeToAtkAttribute(JSStringRef attribute)
+{
+ String attributeString = jsStringToWTFString(attribute);
+ for (int i = 0; i < NumberOfAttributes; ++i) {
+ if (attributesMap[i][CoreDomain] == attributeString)
+ return attributesMap[i][AtkDomain];
+ }
+
+ return attributeString;
}
-static String getAttributeSetValueForId(AtkObject* accessible, const char* id)
+String atkAttributeValueToCoreAttributeValue(AtkAttributeType type, const String& id, const String& value)
{
- const char* attributeValue = 0;
- AtkAttributeSet* attributeSet = atk_object_get_attributes(accessible);
+ if (type == ObjectAttributeType) {
+ // We need to translate ATK values exposed for 'aria-sort' (e.g. 'ascending')
+ // into those expected by the layout tests (e.g. 'AXAscendingSortDirection').
+ if (id == attributesMap[SortNameIndex][AtkDomain] && !value.isEmpty()) {
+ if (value == attributesMap[SortAscendingValueIndex][AtkDomain])
+ return attributesMap[SortAscendingValueIndex][CoreDomain];
+ if (value == attributesMap[SortDescendingValueIndex][AtkDomain])
+ return attributesMap[SortDescendingValueIndex][CoreDomain];
+
+ return attributesMap[SortUnknownValueIndex][CoreDomain];
+ }
+ } else if (type == TextAttributeType) {
+ // In case of 'aria-invalid' when the attribute empty or has "false" for ATK
+ // it should not be mapped at all, but layout tests will expect 'false'.
+ if (id == attributesMap[InvalidNameIndex][AtkDomain] && value.isEmpty())
+ return "false";
+ }
+
+ return value;
+}
+
+AtkAttributeSet* getAttributeSet(AtkObject* accessible, AtkAttributeType type)
+{
+ if (type == ObjectAttributeType)
+ return atk_object_get_attributes(accessible);
+
+ if (type == TextAttributeType) {
+ if (!ATK_IS_TEXT(accessible))
+ return nullptr;
+
+ return atk_text_get_default_attributes(ATK_TEXT(accessible));
+ }
+
+ ASSERT_NOT_REACHED();
+ return nullptr;
+}
+
+String getAttributeSetValueForId(AtkObject* accessible, AtkAttributeType type, String id)
+{
+ AtkAttributeSet* attributeSet = getAttributeSet(accessible, type);
+ if (!attributeSet)
+ return String();
+
+ String attributeValue;
for (AtkAttributeSet* attributes = attributeSet; attributes; attributes = attributes->next) {
AtkAttribute* atkAttribute = static_cast<AtkAttribute*>(attributes->data);
- if (!strcmp(atkAttribute->name, id)) {
- attributeValue = atkAttribute->value;
+ if (id == atkAttribute->name) {
+ attributeValue = String::fromUTF8(atkAttribute->value);
break;
}
}
-
- String atkAttributeValue = String::fromUTF8(attributeValue);
atk_attribute_set_free(attributeSet);
- return atkAttributeValue;
+ return atkAttributeValueToCoreAttributeValue(type, id, attributeValue);
}
-static char* getAtkAttributeSetAsString(AtkObject* accessible)
+String attributeSetToString(AtkAttributeSet* attributeSet, String separator=", ")
{
- GString* str = g_string_new(0);
+ if (!attributeSet)
+ return String();
- AtkAttributeSet* attributeSet = atk_object_get_attributes(accessible);
+ StringBuilder builder;
for (AtkAttributeSet* attributes = attributeSet; attributes; attributes = attributes->next) {
AtkAttribute* attribute = static_cast<AtkAttribute*>(attributes->data);
- GOwnPtr<gchar> attributeData(g_strconcat(attribute->name, ":", attribute->value, NULL));
- g_string_append(str, attributeData.get());
+ GUniquePtr<gchar> attributeData(g_strconcat(attribute->name, ":", attribute->value, NULL));
+ builder.append(attributeData.get());
if (attributes->next)
- g_string_append(str, ", ");
+ builder.append(separator);
}
atk_attribute_set_free(attributeSet);
- return g_string_free(str, FALSE);
+ return builder.toString();
}
-static bool checkElementState(PlatformUIElement element, AtkStateType stateType)
+String getAtkAttributeSetAsString(AtkObject* accessible, AtkAttributeType type, String separator=", ")
+{
+ return attributeSetToString(getAttributeSet(accessible, type), separator);
+}
+
+bool checkElementState(PlatformUIElement element, AtkStateType stateType)
{
if (!ATK_IS_OBJECT(element.get()))
return false;
@@ -97,11 +218,14 @@ static bool checkElementState(PlatformUIElement element, AtkStateType stateType)
return atk_state_set_contains_state(stateSet.get(), stateType);
}
-static JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
+JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
{
- GOwnPtr<gchar> rangeString(g_strdup("{0, 0}"));
-
- if (!element || !ATK_IS_OBJECT(element.get()))
+ GUniquePtr<gchar> rangeString(g_strdup("{0, 0}"));
+#if ATK_CHECK_VERSION(2,11,90)
+ if (!ATK_IS_TABLE_CELL(element.get()))
+ return JSStringCreateWithUTF8CString(rangeString.get());
+#else
+ if (!ATK_IS_OBJECT(element.get()))
return JSStringCreateWithUTF8CString(rangeString.get());
AtkObject* axTable = atk_object_get_parent(ATK_OBJECT(element.get()));
@@ -112,11 +236,20 @@ static JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
gint indexInParent = atk_object_get_index_in_parent(ATK_OBJECT(element.get()));
if (indexInParent == -1)
return JSStringCreateWithUTF8CString(rangeString.get());
+#endif
- int row = -1;
- int column = -1;
+ gint row = -1;
+ gint column = -1;
+ gint rowSpan = -1;
+ gint columnSpan = -1;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_table_cell_get_row_column_span(ATK_TABLE_CELL(element.get()), &row, &column, &rowSpan, &columnSpan);
+#else
row = atk_table_get_row_at_index(ATK_TABLE(axTable), indexInParent);
column = atk_table_get_column_at_index(ATK_TABLE(axTable), indexInParent);
+ rowSpan = atk_table_get_row_extent_at(ATK_TABLE(axTable), row, column);
+ columnSpan = atk_table_get_column_extent_at(ATK_TABLE(axTable), row, column);
+#endif
// Get the actual values, if row and columns are valid values.
if (row != -1 && column != -1) {
@@ -124,22 +257,29 @@ static JSStringRef indexRangeInTable(PlatformUIElement element, bool isRowRange)
int length = 0;
if (isRowRange) {
base = row;
- length = atk_table_get_row_extent_at(ATK_TABLE(axTable), row, column);
+ length = rowSpan;
} else {
base = column;
- length = atk_table_get_column_extent_at(ATK_TABLE(axTable), row, column);
+ length = columnSpan;
}
- rangeString.set(g_strdup_printf("{%d, %d}", base, length));
+ rangeString.reset(g_strdup_printf("{%d, %d}", base, length));
}
return JSStringCreateWithUTF8CString(rangeString.get());
}
-static void alterCurrentValue(PlatformUIElement element, int factor)
+void alterCurrentValue(PlatformUIElement element, int factor)
{
- if (!element || !ATK_IS_VALUE(element.get()))
+ if (!ATK_IS_VALUE(element.get()))
return;
+#if ATK_CHECK_VERSION(2,11,92)
+ double currentValue;
+ atk_value_get_value_and_text(ATK_VALUE(element.get()), &currentValue, nullptr);
+
+ double increment = atk_value_get_increment(ATK_VALUE(element.get()));
+ atk_value_set_value(ATK_VALUE(element.get()), currentValue + factor * increment);
+#else
GValue currentValue = G_VALUE_INIT;
atk_value_get_current_value(ATK_VALUE(element.get()), &currentValue);
@@ -147,7 +287,7 @@ static void alterCurrentValue(PlatformUIElement element, int factor)
atk_value_get_minimum_increment(ATK_VALUE(element.get()), &increment);
GValue newValue = G_VALUE_INIT;
- g_value_init(&newValue, G_TYPE_DOUBLE);
+ g_value_init(&newValue, G_TYPE_FLOAT);
g_value_set_float(&newValue, g_value_get_float(&currentValue) + factor * g_value_get_float(&increment));
atk_value_set_current_value(ATK_VALUE(element.get()), &newValue);
@@ -155,9 +295,10 @@ static void alterCurrentValue(PlatformUIElement element, int factor)
g_value_unset(&newValue);
g_value_unset(&increment);
g_value_unset(&currentValue);
+#endif
}
-static gchar* replaceCharactersForResults(gchar* str)
+gchar* replaceCharactersForResults(gchar* str)
{
WTF::String uString = WTF::String::fromUTF8(str);
@@ -173,114 +314,366 @@ static gchar* replaceCharactersForResults(gchar* str)
return g_strdup(uString.utf8().data());
}
-static const gchar* roleToString(AtkRole role)
-{
+const gchar* roleToString(AtkObject* object)
+{
+ AtkRole role = atk_object_get_role(object);
+
+#if ATK_CHECK_VERSION(2, 11, 3)
+ if (role == ATK_ROLE_LANDMARK) {
+ String xmlRolesValue = getAttributeSetValueForId(object, ObjectAttributeType, "xml-roles");
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "banner"))
+ return landmarkStringBanner;
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "complementary"))
+ return landmarkStringComplementary;
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "contentinfo"))
+ return landmarkStringContentinfo;
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "main"))
+ return landmarkStringMain;
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "navigation"))
+ return landmarkStringNavigation;
+ if (equalLettersIgnoringASCIICase(xmlRolesValue, "search"))
+ return landmarkStringSearch;
+ }
+#endif
+
switch (role) {
case ATK_ROLE_ALERT:
- return "AXRole: AXAlert";
+ return "AXAlert";
+ case ATK_ROLE_DIALOG:
+ return "AXDialog";
case ATK_ROLE_CANVAS:
- return "AXRole: AXCanvas";
+ return "AXCanvas";
+ case ATK_ROLE_CAPTION:
+ return "AXCaption";
case ATK_ROLE_CHECK_BOX:
- return "AXRole: AXCheckBox";
+ return "AXCheckBox";
+ case ATK_ROLE_COLOR_CHOOSER:
+ return "AXColorWell";
case ATK_ROLE_COLUMN_HEADER:
- return "AXRole: AXColumnHeader";
+ return "AXColumnHeader";
case ATK_ROLE_COMBO_BOX:
- return "AXRole: AXComboBox";
+ return "AXComboBox";
+ case ATK_ROLE_COMMENT:
+ return "AXComment";
case ATK_ROLE_DOCUMENT_FRAME:
- return "AXRole: AXWebArea";
+ return "AXDocument";
+ case ATK_ROLE_DOCUMENT_WEB:
+ return "AXWebArea";
+ case ATK_ROLE_EMBEDDED:
+ return "AXEmbedded";
case ATK_ROLE_ENTRY:
- return "AXRole: AXTextField";
+ return "AXTextField";
case ATK_ROLE_FOOTER:
- return "AXRole: AXFooter";
+ return "AXFooter";
case ATK_ROLE_FORM:
- return "AXRole: AXForm";
+ return "AXForm";
case ATK_ROLE_GROUPING:
- return "AXRole: AXGroup";
+ return "AXGroup";
case ATK_ROLE_HEADING:
- return "AXRole: AXHeading";
+ return "AXHeading";
case ATK_ROLE_IMAGE:
- return "AXRole: AXImage";
+ return "AXImage";
case ATK_ROLE_IMAGE_MAP:
- return "AXRole: AXImageMap";
+ return "AXImageMap";
+ case ATK_ROLE_INVALID:
+ return "AXInvalid";
case ATK_ROLE_LABEL:
- return "AXRole: AXLabel";
+ return "AXLabel";
case ATK_ROLE_LINK:
- return "AXRole: AXLink";
+ return "AXLink";
case ATK_ROLE_LIST:
- return "AXRole: AXList";
+ return "AXList";
case ATK_ROLE_LIST_BOX:
- return "AXRole: AXListBox";
+ return "AXListBox";
case ATK_ROLE_LIST_ITEM:
- return "AXRole: AXListItem";
+ return "AXListItem";
case ATK_ROLE_MENU:
- return "AXRole: AXMenu";
+ return "AXMenu";
case ATK_ROLE_MENU_BAR:
- return "AXRole: AXMenuBar";
+ return "AXMenuBar";
case ATK_ROLE_MENU_ITEM:
- return "AXRole: AXMenuItem";
+ return "AXMenuItem";
case ATK_ROLE_PAGE_TAB:
- return "AXRole: AXTab";
+ return "AXTab";
case ATK_ROLE_PAGE_TAB_LIST:
- return "AXRole: AXTabGroup";
+ return "AXTabGroup";
case ATK_ROLE_PANEL:
- return "AXRole: AXGroup";
+ return "AXGroup";
case ATK_ROLE_PARAGRAPH:
- return "AXRole: AXParagraph";
+ return "AXParagraph";
case ATK_ROLE_PASSWORD_TEXT:
- return "AXRole: AXPasswordField";
+ return "AXPasswordField";
+ case ATK_ROLE_PROGRESS_BAR:
+ return "AXProgressIndicator";
case ATK_ROLE_PUSH_BUTTON:
- return "AXRole: AXButton";
+ return "AXButton";
case ATK_ROLE_RADIO_BUTTON:
- return "AXRole: AXRadioButton";
+ return "AXRadioButton";
+ case ATK_ROLE_RADIO_MENU_ITEM:
+ return "AXRadioMenuItem";
case ATK_ROLE_ROW_HEADER:
- return "AXRole: AXRowHeader";
+ return "AXRowHeader";
+ case ATK_ROLE_CHECK_MENU_ITEM:
+ return "AXCheckMenuItem";
case ATK_ROLE_RULER:
- return "AXRole: AXRuler";
+ return "AXRuler";
case ATK_ROLE_SCROLL_BAR:
- return "AXRole: AXScrollBar";
+ return "AXScrollBar";
case ATK_ROLE_SCROLL_PANE:
- return "AXRole: AXScrollArea";
+ return "AXScrollArea";
case ATK_ROLE_SECTION:
- return "AXRole: AXDiv";
+ return "AXSection";
case ATK_ROLE_SEPARATOR:
- return "AXRole: AXHorizontalRule";
+ return "AXSeparator";
case ATK_ROLE_SLIDER:
- return "AXRole: AXSlider";
+ return "AXSlider";
case ATK_ROLE_SPIN_BUTTON:
- return "AXRole: AXSpinButton";
+ return "AXSpinButton";
+ case ATK_ROLE_STATUSBAR:
+ return "AXStatusBar";
case ATK_ROLE_TABLE:
- return "AXRole: AXTable";
+ return "AXTable";
case ATK_ROLE_TABLE_CELL:
- return "AXRole: AXCell";
+ return "AXCell";
case ATK_ROLE_TABLE_COLUMN_HEADER:
- return "AXRole: AXColumnHeader";
+ return "AXColumnHeader";
case ATK_ROLE_TABLE_ROW:
- return "AXRole: AXRow";
+ return "AXRow";
case ATK_ROLE_TABLE_ROW_HEADER:
- return "AXRole: AXRowHeader";
+ return "AXRowHeader";
case ATK_ROLE_TOGGLE_BUTTON:
- return "AXRole: AXToggleButton";
+ return "AXToggleButton";
case ATK_ROLE_TOOL_BAR:
- return "AXRole: AXToolbar";
+ return "AXToolbar";
case ATK_ROLE_TOOL_TIP:
- return "AXRole: AXUserInterfaceTooltip";
+ return "AXUserInterfaceTooltip";
case ATK_ROLE_TREE:
- return "AXRole: AXTree";
+ return "AXTree";
case ATK_ROLE_TREE_TABLE:
- return "AXRole: AXTreeGrid";
+ return "AXTreeGrid";
case ATK_ROLE_TREE_ITEM:
- return "AXRole: AXTreeItem";
+ return "AXTreeItem";
case ATK_ROLE_WINDOW:
- return "AXRole: AXWindow";
+ return "AXWindow";
case ATK_ROLE_UNKNOWN:
- return "AXRole: AXUnknown";
+ return "AXUnknown";
+#if ATK_CHECK_VERSION(2, 11, 3)
+ case ATK_ROLE_ARTICLE:
+ return "AXArticle";
+ case ATK_ROLE_AUDIO:
+ return "AXAudio";
+ case ATK_ROLE_BLOCK_QUOTE:
+ return "AXBlockquote";
+ case ATK_ROLE_DEFINITION:
+ return "AXDefinition";
+ case ATK_ROLE_LOG:
+ return "AXLog";
+ case ATK_ROLE_MARQUEE:
+ return "AXMarquee";
+ case ATK_ROLE_MATH:
+ return "AXMath";
+ case ATK_ROLE_TIMER:
+ return "AXTimer";
+ case ATK_ROLE_VIDEO:
+ return "AXVideo";
+#endif
+#if ATK_CHECK_VERSION(2, 11, 4)
+ case ATK_ROLE_DESCRIPTION_LIST:
+ return "AXDescriptionList";
+ case ATK_ROLE_DESCRIPTION_TERM:
+ return "AXDescriptionTerm";
+ case ATK_ROLE_DESCRIPTION_VALUE:
+ return "AXDescriptionValue";
+#endif
+#if ATK_CHECK_VERSION(2, 15, 2)
+ case ATK_ROLE_STATIC:
+ return "AXStatic";
+#endif
+#if ATK_CHECK_VERSION(2, 15, 4)
+ case ATK_ROLE_MATH_FRACTION:
+ return "AXMathFraction";
+ case ATK_ROLE_MATH_ROOT:
+ return "AXMathRoot";
+ case ATK_ROLE_SUBSCRIPT:
+ return "AXSubscript";
+ case ATK_ROLE_SUPERSCRIPT:
+ return "AXSuperscript";
+#endif
default:
// We want to distinguish ATK_ROLE_UNKNOWN from a known AtkRole which
// our DRT isn't properly handling.
- return "AXRole: FIXME not identified";
+ return "FIXME not identified";
+ }
+}
+
+String selectedText(AtkObject* accessible)
+{
+ if (!ATK_IS_TEXT(accessible))
+ return String();
+
+ AtkText* text = ATK_TEXT(accessible);
+
+ gint start, end;
+ g_free(atk_text_get_selection(text, 0, &start, &end));
+
+ return atk_text_get_text(text, start, end);
+}
+
+String attributesOfElement(AccessibilityUIElement* element)
+{
+ StringBuilder builder;
+
+ builder.append(String::format("%s\n", element->role()->string().utf8().data()));
+
+ // For the parent we print its role and its name, if available.
+ builder.append("AXParent: ");
+ RefPtr<AccessibilityUIElement> parent = element->parentElement();
+ AtkObject* atkParent = parent ? parent->platformUIElement().get() : nullptr;
+ if (atkParent) {
+ builder.append(roleToString(atkParent));
+ const char* parentName = atk_object_get_name(atkParent);
+ if (parentName && g_utf8_strlen(parentName, -1))
+ builder.append(String::format(": %s", parentName));
+ } else
+ builder.append("(null)");
+ builder.append("\n");
+
+ builder.append(String::format("AXChildren: %d\n", element->childrenCount()));
+ builder.append(String::format("AXPosition: { %f, %f }\n", element->x(), element->y()));
+ builder.append(String::format("AXSize: { %f, %f }\n", element->width(), element->height()));
+
+ String title = element->title()->string();
+ if (!title.isEmpty())
+ builder.append(String::format("%s\n", title.utf8().data()));
+
+ String description = element->description()->string();
+ if (!description.isEmpty())
+ builder.append(String::format("%s\n", description.utf8().data()));
+
+ String value = element->stringValue()->string();
+ if (!value.isEmpty())
+ builder.append(String::format("%s\n", value.utf8().data()));
+
+ builder.append(String::format("AXFocusable: %d\n", element->isFocusable()));
+ builder.append(String::format("AXFocused: %d\n", element->isFocused()));
+ builder.append(String::format("AXSelectable: %d\n", element->isSelectable()));
+ builder.append(String::format("AXSelected: %d\n", element->isSelected()));
+ builder.append(String::format("AXMultiSelectable: %d\n", element->isMultiSelectable()));
+ builder.append(String::format("AXEnabled: %d\n", element->isEnabled()));
+ builder.append(String::format("AXExpanded: %d\n", element->isExpanded()));
+ builder.append(String::format("AXRequired: %d\n", element->isRequired()));
+ builder.append(String::format("AXChecked: %d\n", element->isChecked()));
+
+ String url = element->url()->string();
+ if (!url.isEmpty())
+ builder.append(String::format("%s\n", url.utf8().data()));
+
+ // We append the ATK specific attributes as a single line at the end.
+ builder.append("AXPlatformAttributes: ");
+ builder.append(getAtkAttributeSetAsString(element->platformUIElement().get(), ObjectAttributeType));
+
+ return builder.toString();
+}
+
+static JSRetainPtr<JSStringRef> createStringWithAttributes(const Vector<RefPtr<AccessibilityUIElement> >& elements)
+{
+ StringBuilder builder;
+
+ for (Vector<RefPtr<AccessibilityUIElement> >::const_iterator it = elements.begin(); it != elements.end(); ++it) {
+ builder.append(attributesOfElement(const_cast<AccessibilityUIElement*>(it->get())));
+ builder.append("\n------------\n");
}
+
+ return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+static Vector<RefPtr<AccessibilityUIElement> > getRowHeaders(AtkTable* accessible)
+{
+ Vector<RefPtr<AccessibilityUIElement> > rowHeaders;
+
+ int rowsCount = atk_table_get_n_rows(accessible);
+ for (int row = 0; row < rowsCount; ++row)
+ rowHeaders.append(AccessibilityUIElement::create(atk_table_get_row_header(accessible, row)));
+
+ return rowHeaders;
+}
+
+static Vector<RefPtr<AccessibilityUIElement> > getColumnHeaders(AtkTable* accessible)
+{
+ Vector<RefPtr<AccessibilityUIElement> > columnHeaders;
+
+ int columnsCount = atk_table_get_n_columns(accessible);
+ for (int column = 0; column < columnsCount; ++column)
+ columnHeaders.append(AccessibilityUIElement::create(atk_table_get_column_header(accessible, column)));
+
+ return columnHeaders;
}
+static Vector<RefPtr<AccessibilityUIElement> > getVisibleCells(AccessibilityUIElement* element)
+{
+ Vector<RefPtr<AccessibilityUIElement> > visibleCells;
+
+ AtkTable* accessible = ATK_TABLE(element->platformUIElement().get());
+ int rowsCount = atk_table_get_n_rows(accessible);
+ int columnsCount = atk_table_get_n_columns(accessible);
+
+ for (int row = 0; row < rowsCount; ++row) {
+ for (int column = 0; column < columnsCount; ++column)
+ visibleCells.append(element->cellForColumnAndRow(column, row));
+ }
+
+ return visibleCells;
+}
+
+#if ATK_CHECK_VERSION(2,11,90)
+static Vector<RefPtr<AccessibilityUIElement>> convertGPtrArrayToVector(const GPtrArray* array)
+{
+ Vector<RefPtr<AccessibilityUIElement>> cells;
+ for (guint i = 0; i < array->len; i++) {
+ if (AtkObject* atkObject = static_cast<AtkObject*>(g_ptr_array_index(array, i)))
+ cells.append(AccessibilityUIElement::create(atkObject));
+ }
+ return cells;
+}
+
+static JSValueRef convertToJSObjectArray(const Vector<RefPtr<AccessibilityUIElement>>& children)
+{
+ WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::singleton().page()->page());
+ JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
+
+ size_t elementCount = children.size();
+ auto valueElements = std::make_unique<JSValueRef[]>(elementCount);
+ for (size_t i = 0; i < elementCount; i++)
+ valueElements[i] = JSObjectMake(context, children[i]->wrapperClass(), children[i].get());
+
+ return JSObjectMakeArray(context, elementCount, valueElements.get(), nullptr);
+}
+#endif
+
+#if ATK_CHECK_VERSION(2,11,92)
+static double rangeMinMaxValue(AtkValue* atkValue, RangeLimit rangeLimit)
+{
+ AtkRange* range = atk_value_get_range(atkValue);
+ if (!range)
+ return 0;
+
+ double rangeValue = 0;
+ switch (rangeLimit) {
+ case RangeLimitMinimum:
+ rangeValue = atk_range_get_lower_limit(range);
+ break;
+ case RangeLimitMaximum:
+ rangeValue = atk_range_get_upper_limit(range);
+ break;
+ };
+
+ atk_range_free(range);
+ return rangeValue;
+}
+#endif
+
+} // namespace
+
AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
: m_element(element)
{
@@ -303,7 +696,7 @@ bool AccessibilityUIElement::isEqual(AccessibilityUIElement* otherElement)
void AccessibilityUIElement::getChildren(Vector<RefPtr<AccessibilityUIElement> >& children)
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return;
int count = childrenCount();
@@ -315,7 +708,7 @@ void AccessibilityUIElement::getChildren(Vector<RefPtr<AccessibilityUIElement> >
void AccessibilityUIElement::getChildrenWithRange(Vector<RefPtr<AccessibilityUIElement> >& children, unsigned location, unsigned length)
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return;
unsigned end = location + length;
for (unsigned i = location; i < end; i++) {
@@ -326,7 +719,7 @@ void AccessibilityUIElement::getChildrenWithRange(Vector<RefPtr<AccessibilityUIE
int AccessibilityUIElement::childrenCount()
{
- if (!m_element)
+ if (!ATK_IS_OBJECT(m_element.get()))
return 0;
return atk_object_get_n_accessible_children(ATK_OBJECT(m_element.get()));
@@ -334,16 +727,16 @@ int AccessibilityUIElement::childrenCount()
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::elementAtPoint(int x, int y)
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return nullptr;
GRefPtr<AtkObject> objectAtPoint = adoptGRef(atk_component_ref_accessible_at_point(ATK_COMPONENT(m_element.get()), x, y, ATK_XY_WINDOW));
- return objectAtPoint ? AccessibilityUIElement::create(objectAtPoint.get()) : 0;
+ return AccessibilityUIElement::create(objectAtPoint ? objectAtPoint.get() : m_element.get());
}
unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return 0;
Vector<RefPtr<AccessibilityUIElement> > children;
@@ -359,73 +752,118 @@ unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::childAtIndex(unsigned index)
{
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return nullptr;
+
Vector<RefPtr<AccessibilityUIElement> > children;
getChildrenWithRange(children, index, 1);
if (children.size() == 1)
return children[0];
- return 0;
+ return nullptr;
+}
+
+static PassRefPtr<AccessibilityUIElement> accessibilityElementAtIndex(AtkObject* element, AtkRelationType relationType, unsigned index)
+{
+ if (!ATK_IS_OBJECT(element))
+ return nullptr;
+
+ AtkRelationSet* relationSet = atk_object_ref_relation_set(element);
+ if (!relationSet)
+ return nullptr;
+
+ AtkRelation* relation = atk_relation_set_get_relation_by_type(relationSet, relationType);
+ if (!relation)
+ return nullptr;
+
+ GPtrArray* targetList = atk_relation_get_target(relation);
+ if (!targetList || !targetList->len || index >= targetList->len)
+ return nullptr;
+
+ AtkObject* target = static_cast<AtkObject*>(g_ptr_array_index(targetList, index));
+ g_object_unref(relationSet);
+
+ return target ? AccessibilityUIElement::create(target) : nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
{
- // FIXME: implement
- return 0;
+ return accessibilityElementAtIndex(m_element.get(), ATK_RELATION_FLOWS_TO, index);
+}
+
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaControlsElementAtIndex(unsigned index)
+{
+ return accessibilityElementAtIndex(m_element.get(), ATK_RELATION_CONTROLLER_FOR, index);
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::rowAtIndex(unsigned index)
{
- // FIXME: implement
- return 0;
+ // ATK doesn't have API to get an accessible row by index directly. It does, however, have
+ // API to get cells in the row specified by index. The parent of a cell should be the row.
+ AtkTable* axTable = ATK_TABLE(m_element.get());
+ unsigned nColumns = columnCount();
+ for (unsigned col = 0; col < nColumns; col++) {
+ // Find the first cell in this row that only spans one row.
+ if (atk_table_get_row_extent_at(axTable, index, col) == 1) {
+ AtkObject* cell = atk_table_ref_at(axTable, index, col);
+ return cell ? AccessibilityUIElement::create(atk_object_get_parent(cell)) : nullptr;
+ }
+ }
+
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedChildAtIndex(unsigned index) const
{
- // FIXME: implement
- return 0;
+ if (!ATK_SELECTION(m_element.get()))
+ return nullptr;
+
+ GRefPtr<AtkObject> child = adoptGRef(atk_selection_ref_selection(ATK_SELECTION(m_element.get()), index));
+ return child ? AccessibilityUIElement::create(child.get()) : nullptr;
}
unsigned AccessibilityUIElement::selectedChildrenCount() const
{
- // FIXME: implement
- return 0;
+ if (!ATK_IS_SELECTION(m_element.get()))
+ return 0;
+ return atk_selection_get_selection_count(ATK_SELECTION(m_element.get()));
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedRowAtIndex(unsigned index)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::titleUIElement()
{
- if (!m_element)
- return 0;
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return nullptr;
AtkRelationSet* set = atk_object_ref_relation_set(ATK_OBJECT(m_element.get()));
if (!set)
- return 0;
+ return nullptr;
- AtkObject* target = 0;
+ AtkObject* target = nullptr;
int count = atk_relation_set_get_n_relations(set);
for (int i = 0; i < count; i++) {
AtkRelation* relation = atk_relation_set_get_relation(set, i);
@@ -437,22 +875,22 @@ PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::titleUIElement()
}
g_object_unref(set);
- return target ? AccessibilityUIElement::create(target) : 0;
+ return target ? AccessibilityUIElement::create(target) : nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::parentElement()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0;
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return nullptr;
AtkObject* parent = atk_object_get_parent(ATK_OBJECT(m_element.get()));
- return parent ? AccessibilityUIElement::create(parent) : 0;
+ return parent ? AccessibilityUIElement::create(parent) : nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedByRow()
{
// FIXME: implement
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfLinkedUIElements()
@@ -469,42 +907,126 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfDocumentLinks()
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfChildren()
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ Vector<RefPtr<AccessibilityUIElement> > children;
+ getChildren(children);
+
+ return createStringWithAttributes(children);
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::allAttributes()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
- GOwnPtr<char> attributeData(getAtkAttributeSetAsString(ATK_OBJECT(m_element.get())));
- return JSStringCreateWithUTF8CString(attributeData.get());
+ return JSStringCreateWithUTF8CString(attributesOfElement(this).utf8().data());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
{
- if (!m_element)
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
String atkAttributeName = coreAttributeToAtkAttribute(attribute);
- if (atkAttributeName.isNull())
- return JSStringCreateWithCharacters(0, 0);
- String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), atkAttributeName.utf8().data());
+ // The value of AXSelectedText is not exposed through any AtkAttribute.
+ if (atkAttributeName == "AXSelectedText") {
+ String string = selectedText(m_element.get());
+ return JSStringCreateWithUTF8CString(string.utf8().data());
+ }
+
+ // Try object attributes before text attributes.
+ String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, atkAttributeName);
+
+ // Try text attributes if the requested one was not found and we have an AtkText object.
+ if (attributeValue.isEmpty() && ATK_IS_TEXT(m_element.get()))
+ attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), TextAttributeType, atkAttributeName);
+
+ // Additional check to make sure that the exposure of the state ATK_STATE_INVALID_ENTRY
+ // is consistent with the exposure of aria-invalid as a text attribute, if present.
+ if (atkAttributeName == attributesMap[InvalidNameIndex][AtkDomain]) {
+ bool isInvalidState = checkElementState(m_element.get(), ATK_STATE_INVALID_ENTRY);
+ if (attributeValue.isEmpty())
+ return JSStringCreateWithUTF8CString(isInvalidState ? "true" : "false");
+
+ // If the text attribute was there, check that it's consistent with
+ // what the state says or force the test to fail otherwise.
+ bool isAriaInvalid = attributeValue != "false";
+ if (isInvalidState != isAriaInvalid)
+ return JSStringCreateWithCharacters(0, 0);
+ }
+
return JSStringCreateWithUTF8CString(attributeValue.utf8().data());
}
double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
{
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return 0;
+
+ String atkAttributeName = coreAttributeToAtkAttribute(attribute);
+ if (atkAttributeName.isEmpty())
+ return 0;
+
+ if (atkAttributeName == "setsize" || atkAttributeName == "posinset") {
+ String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, atkAttributeName);
+ if (!attributeValue.isEmpty())
+ return attributeValue.toDouble();
+ }
+
+ return 0;
+}
+
+JSValueRef AccessibilityUIElement::uiElementArrayAttributeValue(JSStringRef attribute) const
+{
// FIXME: implement
- return 0.0f;
+ return nullptr;
+}
+
+JSValueRef AccessibilityUIElement::rowHeaders() const
+{
+#if ATK_CHECK_VERSION(2,11,90)
+ if (!ATK_IS_TABLE_CELL(m_element.get()))
+ return nullptr;
+
+ GRefPtr<GPtrArray> array = adoptGRef(atk_table_cell_get_row_header_cells(ATK_TABLE_CELL(m_element.get())));
+ if (!array)
+ return nullptr;
+
+ Vector<RefPtr<AccessibilityUIElement>> rows = convertGPtrArrayToVector(array.get());
+ return convertToJSObjectArray(rows);
+#else
+ return nullptr;
+#endif
+}
+
+JSValueRef AccessibilityUIElement::columnHeaders() const
+{
+#if ATK_CHECK_VERSION(2,11,90)
+ if (!ATK_IS_TABLE_CELL(m_element.get()) && !ATK_IS_TABLE(m_element.get()))
+ return nullptr;
+
+ Vector<RefPtr<AccessibilityUIElement>> columns;
+ if (ATK_IS_TABLE_CELL(m_element.get())) {
+ GRefPtr<GPtrArray> array = adoptGRef(atk_table_cell_get_column_header_cells(ATK_TABLE_CELL(m_element.get())));
+ if (!array)
+ return nullptr;
+
+ columns = convertGPtrArrayToVector(array.get());
+ } else
+ columns = getColumnHeaders(ATK_TABLE(m_element.get()));
+ return convertToJSObjectArray(columns);
+#else
+ return nullptr;
+#endif
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementAttributeValue(JSStringRef attribute) const
{
// FIXME: implement
- return 0;
+ return nullptr;
}
bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
@@ -515,14 +1037,74 @@ bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
{
- // FIXME: implement
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return false;
+
+ String attributeString = jsStringToWTFString(attribute);
+ if (attributeString != "AXValue")
+ return false;
+
+ // ATK does not have a single state or property to indicate whether or not the value
+ // of an accessible object can be set. ATs look at several states and properties based
+ // on the type of object. If nothing explicitly indicates the value can or cannot be
+ // set, ATs make role- and interface-based decisions. We'll do something similar here.
+
+ // This state is expected to be present only for text widgets and contenteditable elements.
+ if (checkElementState(m_element.get(), ATK_STATE_EDITABLE))
+ return true;
+
+#if ATK_CHECK_VERSION(2,11,2)
+ // This state is applicable to checkboxes, radiobuttons, switches, etc.
+ if (checkElementState(m_element.get(), ATK_STATE_CHECKABLE))
+ return true;
+#endif
+
+#if ATK_CHECK_VERSION(2,15,3)
+ // This state is expected to be present only for controls and only if explicitly set.
+ if (checkElementState(m_element.get(), ATK_STATE_READ_ONLY))
+ return false;
+#endif
+
+ // We expose an object attribute to ATs when there is an author-provided ARIA property
+ // and also when there is a supported ARIA role but no author-provided value.
+ String isReadOnly = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, "readonly");
+ if (!isReadOnly.isEmpty())
+ return isReadOnly == "true" ? false : true;
+
+ // If we have a native listbox or combobox and the value can be set, the options should
+ // have ATK_STATE_SELECTABLE.
+ AtkRole role = atk_object_get_role(ATK_OBJECT(m_element.get()));
+ if (role == ATK_ROLE_LIST_BOX || role == ATK_ROLE_COMBO_BOX) {
+ if (GRefPtr<AtkObject> child = adoptGRef(atk_object_ref_accessible_child(ATK_OBJECT(m_element.get()), 0))) {
+ if (atk_object_get_role(ATK_OBJECT(child.get())) == ATK_ROLE_MENU)
+ child = adoptGRef(atk_object_ref_accessible_child(ATK_OBJECT(child.get()), 0));
+ return child && checkElementState(child.get(), ATK_STATE_SELECTABLE);
+ }
+ }
+
+ // If we have a native element which exposes a range whose value can be set, it should
+ // be focusable and have a true range.
+ if (ATK_IS_VALUE(m_element.get()) && checkElementState(m_element.get(), ATK_STATE_FOCUSABLE))
+ return minValue() != maxValue();
+
return false;
}
bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
{
- // FIXME: implement
- return false;
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return false;
+
+ String atkAttributeName = coreAttributeToAtkAttribute(attribute);
+ if (atkAttributeName.isEmpty())
+ return false;
+
+ // For now, an attribute is supported whether it's exposed as a object or a text attribute.
+ String attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, atkAttributeName);
+ if (attributeValue.isEmpty())
+ attributeValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), TextAttributeType, atkAttributeName);
+
+ return !attributeValue.isEmpty();
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::parameterizedAttributeNames()
@@ -533,15 +1115,11 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::parameterizedAttributeNames()
JSRetainPtr<JSStringRef> AccessibilityUIElement::role()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return JSStringCreateWithCharacters(0, 0);
-
- AtkRole role = atk_object_get_role(ATK_OBJECT(m_element.get()));
- if (!role)
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
- GOwnPtr<gchar> axRole(g_strdup(roleToString(role)));
- return JSStringCreateWithUTF8CString(axRole.get());
+ GUniquePtr<char> roleStringWithPrefix(g_strdup_printf("AXRole: %s", roleToString(ATK_OBJECT(m_element.get()))));
+ return JSStringCreateWithUTF8CString(roleStringWithPrefix.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::subrole()
@@ -556,37 +1134,46 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::roleDescription()
return JSStringCreateWithCharacters(0, 0);
}
+JSRetainPtr<JSStringRef> AccessibilityUIElement::computedRoleString()
+{
+ String role = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, "computed-role");
+ if (!role.isEmpty())
+ return JSStringCreateWithUTF8CString(role.utf8().data());
+
+ return JSStringCreateWithCharacters(0, 0);
+}
+
JSRetainPtr<JSStringRef> AccessibilityUIElement::title()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
const gchar* name = atk_object_get_name(ATK_OBJECT(m_element.get()));
- GOwnPtr<gchar> axTitle(g_strdup_printf("AXTitle: %s", name ? name : ""));
+ GUniquePtr<gchar> axTitle(g_strdup_printf("AXTitle: %s", name ? name : ""));
return JSStringCreateWithUTF8CString(axTitle.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::description()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
const gchar* description = atk_object_get_description(ATK_OBJECT(m_element.get()));
if (!description)
return JSStringCreateWithCharacters(0, 0);
- GOwnPtr<gchar> axDesc(g_strdup_printf("AXDescription: %s", description));
+ GUniquePtr<gchar> axDesc(g_strdup_printf("AXDescription: %s", description));
return JSStringCreateWithUTF8CString(axDesc.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::orientation() const
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
- const gchar* axOrientation = 0;
+ const gchar* axOrientation = nullptr;
if (checkElementState(m_element.get(), ATK_STATE_HORIZONTAL))
axOrientation = "AXOrientation: AXHorizontalOrientation";
else if (checkElementState(m_element.get(), ATK_STATE_VERTICAL))
@@ -600,126 +1187,215 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::orientation() const
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringValue()
{
- if (!m_element || !ATK_IS_TEXT(m_element.get()))
+ if (!ATK_IS_TEXT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
- GOwnPtr<gchar> text(atk_text_get_text(ATK_TEXT(m_element.get()), 0, -1));
- GOwnPtr<gchar> textWithReplacedCharacters(replaceCharactersForResults(text.get()));
- GOwnPtr<gchar> axValue(g_strdup_printf("AXValue: %s", textWithReplacedCharacters.get()));
+ GUniquePtr<gchar> text(atk_text_get_text(ATK_TEXT(m_element.get()), 0, -1));
+ GUniquePtr<gchar> textWithReplacedCharacters(replaceCharactersForResults(text.get()));
+ GUniquePtr<gchar> axValue(g_strdup_printf("AXValue: %s", textWithReplacedCharacters.get()));
return JSStringCreateWithUTF8CString(axValue.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::language()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
const gchar* locale = atk_object_get_object_locale(ATK_OBJECT(m_element.get()));
if (!locale)
return JSStringCreateWithCharacters(0, 0);
- GOwnPtr<char> axValue(g_strdup_printf("AXLanguage: %s", locale));
+ GUniquePtr<char> axValue(g_strdup_printf("AXLanguage: %s", locale));
return JSStringCreateWithUTF8CString(axValue.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::helpText() const
{
- // FIXME: implement
- // We need a way to call WebCore::AccessibilityObject::helpText()
- // from here, probably a new helper class in WebProcess/WebCoreSupport.
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ AtkRelationSet* relationSet = atk_object_ref_relation_set(ATK_OBJECT(m_element.get()));
+ if (!relationSet)
+ return nullptr;
+
+ AtkRelation* relation = atk_relation_set_get_relation_by_type(relationSet, ATK_RELATION_DESCRIBED_BY);
+ if (!relation)
+ return nullptr;
+
+ GPtrArray* targetList = atk_relation_get_target(relation);
+ if (!targetList || !targetList->len)
+ return nullptr;
+
+ StringBuilder builder;
+ builder.append("AXHelp: ");
+
+ for (int targetCount = 0; targetCount < targetList->len; targetCount++) {
+ if (AtkObject* target = static_cast<AtkObject*>(g_ptr_array_index(targetList, targetCount))) {
+ GUniquePtr<gchar> text(atk_text_get_text(ATK_TEXT(target), 0, -1));
+ if (targetCount)
+ builder.append(" ");
+ builder.append(text.get());
+ }
+ }
+
+ g_object_unref(relationSet);
+
+ return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
}
double AccessibilityUIElement::x()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
- int x, y;
- atk_component_get_position(ATK_COMPONENT(m_element.get()), &x, &y, ATK_XY_SCREEN);
+ int x;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), &x, nullptr, nullptr, nullptr, ATK_XY_SCREEN);
+#else
+ atk_component_get_position(ATK_COMPONENT(m_element.get()), &x, nullptr, ATK_XY_SCREEN);
+#endif
return x;
}
double AccessibilityUIElement::y()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
- int x, y;
- atk_component_get_position(ATK_COMPONENT(m_element.get()), &x, &y, ATK_XY_SCREEN);
+ int y;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), nullptr, &y, nullptr, nullptr, ATK_XY_SCREEN);
+#else
+ atk_component_get_position(ATK_COMPONENT(m_element.get()), nullptr, &y, ATK_XY_SCREEN);
+#endif
return y;
}
double AccessibilityUIElement::width()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
- int width, height;
- atk_component_get_size(ATK_COMPONENT(m_element.get()), &width, &height);
+ int width;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), nullptr, nullptr, &width, nullptr, ATK_XY_WINDOW);
+#else
+ atk_component_get_size(ATK_COMPONENT(m_element.get()), &width, nullptr);
+#endif
return width;
}
double AccessibilityUIElement::height()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
- int width, height;
- atk_component_get_size(ATK_COMPONENT(m_element.get()), &width, &height);
+ int height;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), nullptr, nullptr, nullptr, &height, ATK_XY_WINDOW);
+#else
+ atk_component_get_size(ATK_COMPONENT(m_element.get()), nullptr, &height);
+#endif
return height;
}
double AccessibilityUIElement::clickPointX()
{
- // FIXME: implement
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
+
+ int x, width;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), &x, nullptr, &width, nullptr, ATK_XY_WINDOW);
+#else
+ atk_component_get_position(ATK_COMPONENT(m_element.get()), &x, nullptr, ATK_XY_WINDOW);
+ atk_component_get_size(ATK_COMPONENT(m_element.get()), &width, nullptr);
+#endif
+
+ return x + width / 2.0;
}
double AccessibilityUIElement::clickPointY()
{
- // FIXME: implement
- return 0.0f;
+ if (!ATK_IS_COMPONENT(m_element.get()))
+ return 0;
+
+ int y, height;
+#if ATK_CHECK_VERSION(2,11,90)
+ atk_component_get_extents(ATK_COMPONENT(m_element.get()), nullptr, &y, nullptr, &height, ATK_XY_WINDOW);
+#else
+ atk_component_get_position(ATK_COMPONENT(m_element.get()), nullptr, &y, ATK_XY_WINDOW);
+ atk_component_get_size(ATK_COMPONENT(m_element.get()), nullptr, &height);
+#endif
+
+ return y + height / 2.0;
}
double AccessibilityUIElement::intValue() const
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_OBJECT(m_element.get()))
+ return 0;
- GValue value = G_VALUE_INIT;
- atk_value_get_current_value(ATK_VALUE(m_element.get()), &value);
- if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
+ if (ATK_IS_VALUE(m_element.get())) {
+#if ATK_CHECK_VERSION(2,11,92)
+ double value;
+ atk_value_get_value_and_text(ATK_VALUE(m_element.get()), &value, nullptr);
+ return value;
+#else
+ GValue value = G_VALUE_INIT;
+ atk_value_get_current_value(ATK_VALUE(m_element.get()), &value);
+ if (!G_VALUE_HOLDS_FLOAT(&value))
+ return 0;
+ return g_value_get_float(&value);
+#endif
+ }
- return g_value_get_float(&value);
+ // Consider headings as an special case when returning the "int value" of
+ // an AccessibilityUIElement, so we can reuse some tests to check the level
+ // both for HTML headings and objects with the aria-level attribute.
+ if (atk_object_get_role(ATK_OBJECT(m_element.get())) == ATK_ROLE_HEADING) {
+ String headingLevel = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, "level");
+ bool ok;
+ double headingLevelValue = headingLevel.toDouble(&ok);
+ if (ok)
+ return headingLevelValue;
+ }
+
+ return 0;
}
double AccessibilityUIElement::minValue()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
-
+ if (!ATK_IS_VALUE(m_element.get()))
+ return 0;
+#if ATK_CHECK_VERSION(2,11,92)
+ return rangeMinMaxValue(ATK_VALUE(m_element.get()), RangeLimitMinimum);
+#else
GValue value = G_VALUE_INIT;
atk_value_get_minimum_value(ATK_VALUE(m_element.get()), &value);
if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
+ return 0;
return g_value_get_float(&value);
+#endif
}
double AccessibilityUIElement::maxValue()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return 0.0f;
+ if (!ATK_IS_VALUE(m_element.get()))
+ return 0;
+#if ATK_CHECK_VERSION(2,11,92)
+ return rangeMinMaxValue(ATK_VALUE(m_element.get()), RangeLimitMaximum);
+#else
GValue value = G_VALUE_INIT;
atk_value_get_maximum_value(ATK_VALUE(m_element.get()), &value);
if (!G_VALUE_HOLDS_FLOAT(&value))
- return 0.0f;
+ return 0;
return g_value_get_float(&value);
+#endif
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::valueDescription()
@@ -736,8 +1412,11 @@ int AccessibilityUIElement::insertionPointLineNumber()
bool AccessibilityUIElement::isPressActionSupported()
{
- // FIXME: implement
- return false;
+ if (!ATK_IS_ACTION(m_element.get()))
+ return false;
+
+ const gchar* actionName = atk_action_get_name(ATK_ACTION(m_element.get()), 0);
+ return equalLettersIgnoringASCIICase(String(actionName), "press") || equalLettersIgnoringASCIICase(String(actionName), "jump");
}
bool AccessibilityUIElement::isIncrementActionSupported()
@@ -772,6 +1451,11 @@ bool AccessibilityUIElement::isSelected() const
return checkElementState(m_element.get(), ATK_STATE_SELECTED);
}
+bool AccessibilityUIElement::isSelectedOptionActive() const
+{
+ return checkElementState(m_element.get(), ATK_STATE_ACTIVE);
+}
+
bool AccessibilityUIElement::isExpanded() const
{
return checkElementState(m_element.get(), ATK_STATE_EXPANDED);
@@ -782,6 +1466,11 @@ bool AccessibilityUIElement::isChecked() const
return checkElementState(m_element.get(), ATK_STATE_CHECKED);
}
+bool AccessibilityUIElement::isIndeterminate() const
+{
+ return checkElementState(m_element.get(), ATK_STATE_INDETERMINATE);
+}
+
int AccessibilityUIElement::hierarchicalLevel() const
{
// FIXME: implement
@@ -809,14 +1498,34 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::ariaDropEffects() const
// parameterized attributes
int AccessibilityUIElement::lineForIndex(int index)
{
- // FIXME: implement
- return 0;
+ if (!ATK_IS_TEXT(m_element.get()))
+ return -1;
+
+ if (index < 0 || index > atk_text_get_character_count(ATK_TEXT(m_element.get())))
+ return -1;
+
+ GUniquePtr<gchar> text(atk_text_get_text(ATK_TEXT(m_element.get()), 0, index));
+ int lineNo = 0;
+ for (gchar* offset = text.get(); *offset; ++offset) {
+ if (*offset == '\n')
+ ++lineNo;
+ }
+
+ return lineNo;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForLine(int line)
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TEXT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ AtkText* text = ATK_TEXT(m_element.get());
+ gint startOffset = 0, endOffset = 0;
+ for (int i = 0; i <= line; ++i)
+ atk_text_get_string_at_offset(text, endOffset, ATK_TEXT_GRANULARITY_LINE, &startOffset, &endOffset);
+
+ GUniquePtr<gchar> range(g_strdup_printf("{%d, %d}", startOffset, endOffset - startOffset));
+ return JSStringCreateWithUTF8CString(range.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForPosition(int x, int y)
@@ -827,20 +1536,50 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForPosition(int x, int y)
JSRetainPtr<JSStringRef> AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TEXT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ AtkTextRectangle rect;
+ atk_text_get_range_extents(ATK_TEXT(m_element.get()), location, location + length, ATK_XY_WINDOW, &rect);
+
+ GUniquePtr<gchar> bounds(g_strdup_printf("{%d, %d, %d, %d}", rect.x, rect.y, rect.width, rect.height));
+ return JSStringCreateWithUTF8CString(bounds.get());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TEXT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ String string = atk_text_get_text(ATK_TEXT(m_element.get()), location, location + length);
+ return JSStringCreateWithUTF8CString(string.utf8().data());
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributedStringForRange(unsigned location, unsigned length)
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TEXT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ StringBuilder builder;
+
+ // The default text attributes apply to the entire element.
+ builder.append("\n\tDefault text attributes:\n\t\t");
+ builder.append(attributeSetToString(getAttributeSet(m_element.get(), TextAttributeType), "\n\t\t"));
+
+ // The attribute run provides attributes specific to the range of text at the specified offset.
+ AtkAttributeSet* attributeSet;
+ AtkText* text = ATK_TEXT(m_element.get());
+ gint start = 0, end = 0;
+ for (int i = location; i < location + length; i = end) {
+ AtkAttributeSet* attributeSet = atk_text_get_run_attributes(text, i, &start, &end);
+ GUniquePtr<gchar> substring(replaceCharactersForResults(atk_text_get_text(text, start, end)));
+ builder.append(String::format("\n\tRange attributes for '%s':\n\t\t", substring.get()));
+ builder.append(attributeSetToString(attributeSet, "\n\t\t"));
+ }
+
+ atk_attribute_set_free(attributeSet);
+
+ return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
}
bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location, unsigned length)
@@ -849,22 +1588,40 @@ bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location
return false;
}
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
+unsigned AccessibilityUIElement::uiElementCountForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly)
{
// FIXME: implement
return 0;
}
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumnHeaders()
+PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly, bool immediateDescendantsOnly)
{
// FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ return nullptr;
}
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRowHeaders()
+JSRetainPtr<JSStringRef> AccessibilityUIElement::selectTextWithCriteria(JSContextRef context, JSStringRef ambiguityResolution, JSValueRef searchStrings, JSStringRef replacementString, JSStringRef activity)
{
// FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ return nullptr;
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumnHeaders()
+{
+ if (!ATK_IS_TABLE(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ Vector<RefPtr<AccessibilityUIElement> > columnHeaders = getColumnHeaders(ATK_TABLE(m_element.get()));
+ return createStringWithAttributes(columnHeaders);
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRowHeaders()
+{
+ if (!ATK_IS_TABLE(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ Vector<RefPtr<AccessibilityUIElement> > rowHeaders = getRowHeaders(ATK_TABLE(m_element.get()));
+ return createStringWithAttributes(rowHeaders);
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumns()
@@ -881,8 +1638,11 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRows()
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfVisibleCells()
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TABLE(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ Vector<RefPtr<AccessibilityUIElement> > visibleCells = getVisibleCells(this);
+ return createStringWithAttributes(visibleCells);
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfHeader()
@@ -893,7 +1653,7 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfHeader()
int AccessibilityUIElement::rowCount()
{
- if (!m_element || !ATK_IS_TABLE(m_element.get()))
+ if (!ATK_IS_TABLE(m_element.get()))
return 0;
return atk_table_get_n_rows(ATK_TABLE(m_element.get()));
@@ -901,7 +1661,7 @@ int AccessibilityUIElement::rowCount()
int AccessibilityUIElement::columnCount()
{
- if (!m_element || !ATK_IS_TABLE(m_element.get()))
+ if (!ATK_IS_TABLE(m_element.get()))
return 0;
return atk_table_get_n_columns(ATK_TABLE(m_element.get()));
@@ -927,36 +1687,48 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::columnIndexRange()
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
{
- if (!m_element || !ATK_IS_TABLE(m_element.get()))
- return 0;
+ if (!ATK_IS_TABLE(m_element.get()))
+ return nullptr;
// Adopt the AtkObject representing the cell because
// at_table_ref_at() transfers full ownership.
GRefPtr<AtkObject> foundCell = adoptGRef(atk_table_ref_at(ATK_TABLE(m_element.get()), row, col));
- return foundCell ? AccessibilityUIElement::create(foundCell.get()) : 0;
+ return foundCell ? AccessibilityUIElement::create(foundCell.get()) : nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::horizontalScrollbar() const
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::verticalScrollbar() const
{
// FIXME: implement
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::selectedTextRange()
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_TEXT(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ gint start, end;
+ g_free(atk_text_get_selection(ATK_TEXT(m_element.get()), 0, &start, &end));
+
+ GUniquePtr<gchar> selection(g_strdup_printf("{%d, %d}", start, end - start));
+ return JSStringCreateWithUTF8CString(selection.get());
}
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
+bool AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
{
- // FIXME: implement
+ if (!ATK_IS_TEXT(m_element.get()))
+ return false;
+
+ if (!length)
+ return atk_text_set_caret_offset(ATK_TEXT(m_element.get()), location);
+
+ return atk_text_set_selection(ATK_TEXT(m_element.get()), 0, location, location + length);
}
void AccessibilityUIElement::increment()
@@ -976,9 +1748,6 @@ void AccessibilityUIElement::showMenu()
void AccessibilityUIElement::press()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
- return;
-
if (!ATK_IS_ACTION(m_element.get()))
return;
@@ -991,6 +1760,22 @@ void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement* element) c
// FIXME: implement
}
+void AccessibilityUIElement::setSelectedChildAtIndex(unsigned index) const
+{
+ if (!ATK_IS_SELECTION(m_element.get()))
+ return;
+
+ atk_selection_add_selection(ATK_SELECTION(m_element.get()), index);
+}
+
+void AccessibilityUIElement::removeSelectionAtIndex(unsigned index) const
+{
+ if (!ATK_IS_SELECTION(m_element.get()))
+ return;
+
+ atk_selection_remove_selection(ATK_SELECTION(m_element.get()), index);
+}
+
JSRetainPtr<JSStringRef> AccessibilityUIElement::accessibilityValue() const
{
// FIXME: implement
@@ -999,7 +1784,7 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::accessibilityValue() const
JSRetainPtr<JSStringRef> AccessibilityUIElement::documentEncoding()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_DOCUMENT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
AtkRole role = atk_object_get_role(ATK_OBJECT(m_element.get()));
@@ -1011,7 +1796,7 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::documentEncoding()
JSRetainPtr<JSStringRef> AccessibilityUIElement::documentURI()
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_DOCUMENT(m_element.get()))
return JSStringCreateWithCharacters(0, 0);
AtkRole role = atk_object_get_role(ATK_OBJECT(m_element.get()));
@@ -1023,19 +1808,40 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::documentURI()
JSRetainPtr<JSStringRef> AccessibilityUIElement::url()
{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
+ if (!ATK_IS_HYPERLINK_IMPL(m_element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ AtkHyperlink* hyperlink = atk_hyperlink_impl_get_hyperlink(ATK_HYPERLINK_IMPL(m_element.get()));
+ GUniquePtr<char> hyperlinkURI(atk_hyperlink_get_uri(hyperlink, 0));
+
+ // Build the result string, stripping the absolute URL paths if present.
+ char* localURI = g_strstr_len(hyperlinkURI.get(), -1, "LayoutTests");
+ String axURL = String::format("AXURL: %s", localURI ? localURI : hyperlinkURI.get());
+ return JSStringCreateWithUTF8CString(axURL.utf8().data());
}
bool AccessibilityUIElement::addNotificationListener(JSValueRef functionCallback)
{
- // FIXME: implement
+ if (!functionCallback)
+ return false;
+
+ // Only one notification listener per element.
+ if (m_notificationHandler)
+ return false;
+
+ m_notificationHandler = AccessibilityNotificationHandler::create();
+ m_notificationHandler->setPlatformElement(platformUIElement());
+ m_notificationHandler->setNotificationFunctionCallback(functionCallback);
+
return true;
}
bool AccessibilityUIElement::removeNotificationListener()
{
- // FIXME: implement
+ // Programmers should not be trying to remove a listener that's already removed.
+ ASSERT(m_notificationHandler);
+ m_notificationHandler = nullptr;
+
return true;
}
@@ -1079,10 +1885,11 @@ bool AccessibilityUIElement::isIgnored() const
bool AccessibilityUIElement::hasPopup() const
{
- if (!m_element || !ATK_IS_OBJECT(m_element.get()))
+ if (!ATK_IS_OBJECT(m_element.get()))
return false;
- return equalIgnoringCase(getAttributeSetValueForId(ATK_OBJECT(m_element.get()), "aria-haspopup"), "true");
+ String hasPopupValue = getAttributeSetValueForId(ATK_OBJECT(m_element.get()), ObjectAttributeType, "haspopup");
+ return equalLettersIgnoringASCIICase(hasPopupValue, "true");
}
void AccessibilityUIElement::takeFocus()
@@ -1106,10 +1913,16 @@ void AccessibilityUIElement::removeSelection()
}
// Text markers
+PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::lineTextMarkerRangeForTextMarker(AccessibilityTextMarker* textMarker)
+{
+ // FIXME: implement
+ return nullptr;
+}
+
PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement* element)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange* range)
@@ -1121,13 +1934,13 @@ int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange*
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker* textMarker)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker* textMarker)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange* markerRange)
@@ -1139,31 +1952,43 @@ JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForTextMarkerRange(Access
PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
{
// FIXME: implement
- return 0;
+ return nullptr;
+}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarkerForBounds(int x, int y, int width, int height)
+{
+ // FIXME: implement
+ return nullptr;
+}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForBounds(int x, int y, int width, int height)
+{
+ // FIXME: implement
+ return nullptr;
}
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForPoint(int x, int y)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::accessibilityElementForTextMarker(AccessibilityTextMarker* marker)
{
// FIXME: implement
- return 0;
+ return nullptr;
}
bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef attribute, AccessibilityTextMarkerRange* range)
@@ -1187,38 +2012,126 @@ bool AccessibilityUIElement::isTextMarkerValid(AccessibilityTextMarker* textMark
PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForIndex(int textIndex)
{
// FIXME: implement
- return 0;
+ return nullptr;
+}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarker()
+{
+ // FIXME: implement
+ return nullptr;
+}
+
+PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarker()
+{
+ // FIXME: implement
+ return nullptr;
+}
+
+bool AccessibilityUIElement::setSelectedVisibleTextRange(AccessibilityTextMarkerRange*)
+{
+ return false;
}
void AccessibilityUIElement::scrollToMakeVisible()
{
// FIXME: implement
}
+
+void AccessibilityUIElement::scrollToGlobalPoint(int x, int y)
+{
+ // FIXME: implement
+}
+
+void AccessibilityUIElement::scrollToMakeVisibleWithSubFocus(int x, int y, int width, int height)
+{
+ // FIXME: implement
+}
JSRetainPtr<JSStringRef> AccessibilityUIElement::supportedActions() const
{
// FIXME: implement
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::pathDescription() const
{
notImplemented();
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPostscriptsDescription() const
{
notImplemented();
- return 0;
+ return nullptr;
}
JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPrescriptsDescription() const
{
notImplemented();
- return 0;
+ return nullptr;
}
-} // namespace WTR
+JSRetainPtr<JSStringRef> AccessibilityUIElement::classList() const
+{
+ notImplemented();
+ return nullptr;
+}
+JSRetainPtr<JSStringRef> stringAtOffset(PlatformUIElement element, AtkTextBoundary boundary, int offset)
+{
+ if (!ATK_IS_TEXT(element.get()))
+ return JSStringCreateWithCharacters(0, 0);
+
+ gint startOffset, endOffset;
+ StringBuilder builder;
+
+#if ATK_CHECK_VERSION(2, 10, 0)
+ AtkTextGranularity granularity;
+ switch (boundary) {
+ case ATK_TEXT_BOUNDARY_CHAR:
+ granularity = ATK_TEXT_GRANULARITY_CHAR;
+ break;
+ case ATK_TEXT_BOUNDARY_WORD_START:
+ granularity = ATK_TEXT_GRANULARITY_WORD;
+ break;
+ case ATK_TEXT_BOUNDARY_LINE_START:
+ granularity = ATK_TEXT_GRANULARITY_LINE;
+ break;
+ case ATK_TEXT_BOUNDARY_SENTENCE_START:
+ granularity = ATK_TEXT_GRANULARITY_SENTENCE;
+ break;
+ default:
+ return JSStringCreateWithCharacters(0, 0);
+ }
+
+ builder.append(atk_text_get_string_at_offset(ATK_TEXT(element.get()), offset, granularity, &startOffset, &endOffset));
+#else
+ builder.append(atk_text_get_text_at_offset(ATK_TEXT(element.get()), offset, boundary, &startOffset, &endOffset));
#endif
+ builder.append(String::format(", %i, %i", startOffset, endOffset));
+ return JSStringCreateWithUTF8CString(builder.toString().utf8().data());
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::characterAtOffset(int offset)
+{
+ return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_CHAR, offset);
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::wordAtOffset(int offset)
+{
+ return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_WORD_START, offset);
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::lineAtOffset(int offset)
+{
+ return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_LINE_START, offset);
+}
+
+JSRetainPtr<JSStringRef> AccessibilityUIElement::sentenceAtOffset(int offset)
+{
+ return stringAtOffset(m_element, ATK_TEXT_BOUNDARY_SENTENCE_START, offset);
+}
+
+} // namespace WTR
+
+#endif // HAVE(ACCESSIBILITY)
diff --git a/Tools/WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp b/Tools/WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp
deleted file mode 100644
index 7785f7799..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/efl/ActivateFontsEfl.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "ActivateFonts.h"
-
-#include "FontManagement.h"
-
-namespace WTR {
-
-void activateFonts()
-{
- addFontsToEnvironment();
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp b/Tools/WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp
deleted file mode 100644
index 119832095..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/efl/InjectedBundleEfl.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "InjectedBundle.h"
-
-#include <wtf/Assertions.h>
-
-namespace WTR {
-
-void InjectedBundle::platformInitialize(WKTypeRef)
-{
- WTFInstallReportBacktraceOnCrashHook();
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp b/Tools/WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp
deleted file mode 100644
index 96816114d..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/efl/TestRunnerEfl.cpp
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "TestRunner.h"
-
-#include "InjectedBundle.h"
-#include <Ecore.h>
-#include <JavaScriptCore/OpaqueJSString.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-
-namespace WTR {
-
-static Eina_Bool waitToDumpWatchdogTimerCallback(void*)
-{
- InjectedBundle::shared().testRunner()->waitToDumpWatchdogTimerFired();
- return false;
-}
-
-void TestRunner::platformInitialize()
-{
- m_waitToDumpWatchdogTimer = 0;
-}
-
-void TestRunner::invalidateWaitToDumpWatchdogTimer()
-{
- if (!m_waitToDumpWatchdogTimer)
- return;
-
- ecore_timer_del(m_waitToDumpWatchdogTimer);
- m_waitToDumpWatchdogTimer = 0;
-}
-
-void TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded()
-{
- if (m_waitToDumpWatchdogTimer)
- return;
-
- m_waitToDumpWatchdogTimer = ecore_timer_loop_add(waitToDumpWatchdogTimerInterval,
- waitToDumpWatchdogTimerCallback, 0);
-}
-
-JSRetainPtr<JSStringRef> TestRunner::pathToLocalResource(JSStringRef url)
-{
- String requestedUrl(url->characters(), url->length());
- String resourceRoot;
- String requestedRoot;
-
- if (requestedUrl.find("LayoutTests") != notFound) {
- // If the URL contains LayoutTests we need to remap that to
- // LOCAL_RESOURCE_ROOT which is the path of the LayoutTests directory
- // within the WebKit source tree.
- requestedRoot = "/tmp/LayoutTests";
- resourceRoot = getenv("LOCAL_RESOURCE_ROOT");
- } else if (requestedUrl.find("tmp") != notFound) {
- // If the URL is a child of /tmp we need to convert it to be a child
- // DUMPRENDERTREE_TEMP replace tmp with DUMPRENDERTREE_TEMP
- requestedRoot = "/tmp";
- resourceRoot = getenv("DUMPRENDERTREE_TEMP");
- }
-
- size_t indexOfRootStart = requestedUrl.reverseFind(requestedRoot);
- size_t indexOfSeparatorAfterRoot = indexOfRootStart + requestedRoot.length();
- String fullPathToUrl = "file://" + resourceRoot + requestedUrl.substring(indexOfSeparatorAfterRoot);
-
- return JSStringCreateWithUTF8CString(fullPathToUrl.utf8().data());
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName()
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("efl"));
- return platformName;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp
deleted file mode 100644
index 6e5103522..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/gtk/ActivateFontsGtk.cpp
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * Copyright (C) 2005, 2006 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 "ActivateFonts.h"
-
-#include "InjectedBundleUtilities.h"
-#include <fontconfig/fontconfig.h>
-#include <gtk/gtk.h>
-#include <wtf/gobject/GlibUtilities.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-namespace WTR {
-
-void initializeGtkSettings()
-{
- GtkSettings* settings = gtk_settings_get_default();
- if (!settings)
- return;
- g_object_set(settings,
- "gtk-xft-dpi", 98304,
- "gtk-xft-antialias", 1,
- "gtk-xft-hinting", 0,
- "gtk-font-name", "Liberation Sans 12",
- "gtk-theme-name", "Raleigh",
- "gtk-icon-theme-name", "gnome",
- "gtk-xft-rgba", "none", NULL);
-}
-
-CString getOutputDir()
-{
- const char* webkitOutputDir = g_getenv("WEBKIT_OUTPUTDIR");
- if (webkitOutputDir)
- return webkitOutputDir;
-
- CString topLevelPath = WTR::topLevelPath();
- GOwnPtr<char> outputDir(g_build_filename(topLevelPath.data(), "WebKitBuild", NULL));
- return outputDir.get();
-}
-
-static CString getFontsPath()
-{
- CString webkitOutputDir = getOutputDir();
- GOwnPtr<char> fontsPath(g_build_filename(webkitOutputDir.data(), "Dependencies", "Root", "webkitgtk-test-fonts", NULL));
- if (g_file_test(fontsPath.get(), static_cast<GFileTest>(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
- return fontsPath.get();
-
- // Try alternative fonts path.
- fontsPath.set(g_build_filename(webkitOutputDir.data(), "webkitgtk-test-fonts", NULL));
- if (g_file_test(fontsPath.get(), static_cast<GFileTest>(G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR)))
- return fontsPath.get();
-
- return CString();
-}
-
-void inititializeFontConfigSetting()
-{
- FcInit();
-
- // If a test resulted a font being added or removed via the @font-face rule, then
- // we want to reset the FontConfig configuration to prevent it from affecting other tests.
- static int numFonts = 0;
- FcFontSet* appFontSet = FcConfigGetFonts(0, FcSetApplication);
- if (appFontSet && numFonts && appFontSet->nfont == numFonts)
- return;
-
- // Load our configuration file, which sets up proper aliases for family
- // names like sans, serif and monospace.
- FcConfig* config = FcConfigCreate();
- GOwnPtr<gchar> fontConfigFilename(g_build_filename(FONTS_CONF_DIR, "fonts.conf", NULL));
- if (!g_file_test(fontConfigFilename.get(), G_FILE_TEST_IS_REGULAR))
- g_error("Cannot find fonts.conf at %s\n", fontConfigFilename.get());
- if (!FcConfigParseAndLoad(config, reinterpret_cast<FcChar8*>(fontConfigFilename.get()), true))
- g_error("Couldn't load font configuration file from: %s", fontConfigFilename.get());
-
- CString fontsPath = getFontsPath();
- if (fontsPath.isNull())
- g_error("Could not locate test fonts at %s. Is WEBKIT_TOP_LEVEL set?", fontsPath.data());
-
- GOwnPtr<GDir> fontsDirectory(g_dir_open(fontsPath.data(), 0, 0));
- while (const char* directoryEntry = g_dir_read_name(fontsDirectory.get())) {
- if (!g_str_has_suffix(directoryEntry, ".ttf") && !g_str_has_suffix(directoryEntry, ".otf"))
- continue;
- GOwnPtr<gchar> fontPath(g_build_filename(fontsPath.data(), directoryEntry, NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<const FcChar8*>(fontPath.get())))
- g_error("Could not load font at %s!", fontPath.get());
- }
-
- // Ahem is used by many layout tests.
- GOwnPtr<gchar> ahemFontFilename(g_build_filename(FONTS_CONF_DIR, "AHEM____.TTF", NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(ahemFontFilename.get())))
- g_error("Could not load font at %s!", ahemFontFilename.get());
-
- static const char* fontFilenames[] = {
- "WebKitWeightWatcher100.ttf",
- "WebKitWeightWatcher200.ttf",
- "WebKitWeightWatcher300.ttf",
- "WebKitWeightWatcher400.ttf",
- "WebKitWeightWatcher500.ttf",
- "WebKitWeightWatcher600.ttf",
- "WebKitWeightWatcher700.ttf",
- "WebKitWeightWatcher800.ttf",
- "WebKitWeightWatcher900.ttf",
- 0
- };
-
- for (size_t i = 0; fontFilenames[i]; ++i) {
- GOwnPtr<gchar> fontFilename(g_build_filename(FONTS_CONF_DIR, "..", "..", "fonts", fontFilenames[i], NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(fontFilename.get())))
- g_error("Could not load font at %s!", fontFilename.get());
- }
-
- // A font with no valid Fontconfig encoding to test https://bugs.webkit.org/show_bug.cgi?id=47452
- GOwnPtr<gchar> fontWithNoValidEncodingFilename(g_build_filename(FONTS_CONF_DIR, "FontWithNoValidEncoding.fon", NULL));
- if (!FcConfigAppFontAddFile(config, reinterpret_cast<FcChar8*>(fontWithNoValidEncodingFilename.get())))
- g_error("Could not load font at %s!", fontWithNoValidEncodingFilename.get());
-
- if (!FcConfigSetCurrent(config))
- g_error("Could not set the current font configuration!");
-
- numFonts = FcConfigGetFonts(config, FcSetApplication)->nfont;
-}
-
-void activateFonts()
-{
- initializeGtkSettings();
- inititializeFontConfigSetting();
-}
-
-}
diff --git a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp
deleted file mode 100644
index ba08431c4..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleGtk.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "InjectedBundle.h"
-
-#include <cstdio>
-#include <glib.h>
-
-namespace WTR {
-
-static void logHandler(const gchar* domain, GLogLevelFlags level, const gchar* message, gpointer data)
-{
- if (level < G_LOG_LEVEL_DEBUG)
- fprintf(stderr, "%s\n", message);
-}
-
-void InjectedBundle::platformInitialize(WKTypeRef)
-{
- // Some plugins might try to use the GLib logger for printing debug messages. This
- // will cause tests to fail because of unexpected output. We squelch all debug
- // messages sent to the logger.
- g_log_set_default_handler(logHandler, 0);
-
- if (!g_getenv("WEBKIT_TOP_LEVEL"))
- g_setenv("WEBKIT_TOP_LEVEL", TOP_LEVEL_DIR, FALSE);
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp b/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp
deleted file mode 100644
index 1f539ba1b..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.cpp
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2013 Igalia S.L.
- *
- * 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 "InjectedBundleUtilities.h"
-
-#include <gtk/gtk.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/gobject/GlibUtilities.h>
-
-namespace WTR {
-
-CString topLevelPath()
-{
- if (const char* topLevelDirectory = g_getenv("WEBKIT_TOP_LEVEL"))
- return topLevelDirectory;
-
- // If the environment variable wasn't provided then assume we were built into
- // WebKitBuild/Debug or WebKitBuild/Release. Obviously this will fail if the build
- // directory is non-standard, but we can't do much more about this.
- GOwnPtr<char> parentPath(g_path_get_dirname(getCurrentExecutablePath().data()));
- GOwnPtr<char> layoutTestsPath(g_build_filename(parentPath.get(), "..", "..", "..", NULL));
- GOwnPtr<char> absoluteTopLevelPath(realpath(layoutTestsPath.get(), 0));
- return absoluteTopLevelPath.get();
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h b/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h
deleted file mode 100644
index 50f89dead..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/gtk/InjectedBundleUtilities.h
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (C) 2013 Igalia S.L.
- *
- * 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 InjectedBundleUtilities_h
-#define InjectedBundleUtilities_h
-
-#include <wtf/text/CString.h>
-
-namespace WTR {
-
-CString topLevelPath();
-
-} // namespace WTR
-
-#endif // InjectedBundleUtilities_h
diff --git a/Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp b/Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp
deleted file mode 100644
index b50a332c7..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/gtk/TestRunnerGtk.cpp
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "TestRunner.h"
-
-#include "InjectedBundle.h"
-#include "InjectedBundleUtilities.h"
-#include <glib.h>
-#include <wtf/gobject/GOwnPtr.h>
-
-namespace WTR {
-
-static gboolean waitToDumpWatchdogTimerCallback(gpointer)
-{
- InjectedBundle::shared().testRunner()->waitToDumpWatchdogTimerFired();
- return FALSE;
-}
-
-void TestRunner::platformInitialize()
-{
- m_waitToDumpWatchdogTimer = 0;
-}
-
-void TestRunner::invalidateWaitToDumpWatchdogTimer()
-{
- if (!m_waitToDumpWatchdogTimer)
- return;
- g_source_remove(m_waitToDumpWatchdogTimer);
- m_waitToDumpWatchdogTimer = 0;
-}
-
-void TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded()
-{
- if (m_waitToDumpWatchdogTimer)
- return;
-
- m_waitToDumpWatchdogTimer = g_timeout_add(waitToDumpWatchdogTimerInterval * 1000,
- waitToDumpWatchdogTimerCallback, 0);
-}
-
-JSRetainPtr<JSStringRef> TestRunner::pathToLocalResource(JSStringRef url)
-{
- size_t urlSize = JSStringGetMaximumUTF8CStringSize(url);
- GOwnPtr<gchar> urlString(static_cast<gchar*>(g_malloc(urlSize)));
- JSStringGetUTF8CString(url, urlString.get(), urlSize);
-
- if (!g_str_has_prefix(urlString.get(), "file:///tmp/LayoutTests/"))
- return JSStringRetain(url);
-
- const gchar* layoutTestsSuffix = urlString.get() + strlen("file:///tmp/");
- GOwnPtr<gchar> testPath(g_build_filename(WTR::topLevelPath().data(), layoutTestsSuffix, NULL));
- GOwnPtr<gchar> testURI(g_filename_to_uri(testPath.get(), 0, 0));
- return JSStringCreateWithUTF8CString(testURI.get());
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName()
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("gtk"));
- return platformName;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h
deleted file mode 100644
index c8b91257f..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#ifndef AccessibilityCommonMac_h
-#define AccessibilityCommonMac_h
-
-#import <JavaScriptCore/JSStringRef.h>
-
-// If an unsupported attribute is passed in, it will raise an accessibility exception. These are usually caught by the Accessibility Runtime to inform
-// the AX client app of the error. However, DRT is the AX client app, so it must catch these exceptions.
-#define BEGIN_AX_OBJC_EXCEPTIONS @try {
-#define END_AX_OBJC_EXCEPTIONS } @catch(NSException *e) { if (![[e name] isEqualToString:NSAccessibilityException]) @throw; }
-
-
-@interface NSString (JSStringRefAdditions)
-+ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef;
-- (JSStringRef)createJSStringRef;
-@end
-
-#endif // AccessibilityCommonMac_h
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm
deleted file mode 100644
index 082c0f0cc..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityCommonMac.mm
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#import "config.h"
-#import "AccessibilityCommonMac.h"
-
-#import <JavaScriptCore/JSStringRefCF.h>
-
-@implementation NSString (JSStringRefAdditions)
-
-+ (NSString *)stringWithJSStringRef:(JSStringRef)jsStringRef
-{
- if (!jsStringRef)
- return nil;
-
- CFStringRef cfString = JSStringCopyCFString(kCFAllocatorDefault, jsStringRef);
- return [(NSString *)cfString autorelease];
-}
-
-- (JSStringRef)createJSStringRef
-{
- return JSStringCreateWithCFString((CFStringRef)self);
-}
-
-@end
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm
deleted file mode 100644
index fefddc731..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityControllerMac.mm
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-#import "config.h"
-#import "AccessibilityCommonMac.h"
-#import "AccessibilityController.h"
-#import "AccessibilityNotificationHandler.h"
-#import "InjectedBundle.h"
-#import "InjectedBundlePage.h"
-
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit2/WKBundle.h>
-#import <WebKit2/WKBundlePage.h>
-#import <WebKit2/WKBundlePagePrivate.h>
-
-namespace WTR {
-
-bool AccessibilityController::addNotificationListener(JSValueRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- if (m_globalNotificationHandler)
- return false;
- m_globalNotificationHandler = [[AccessibilityNotificationHandler alloc] init];
- [m_globalNotificationHandler.get() setCallback:functionCallback];
- [m_globalNotificationHandler.get() startObserving];
-
- return true;
-}
-
-bool AccessibilityController::removeNotificationListener()
-{
- ASSERT(m_globalNotificationHandler);
-
- [m_globalNotificationHandler.get() stopObserving];
- m_globalNotificationHandler.clear();
-
- return true;
-}
-
-void AccessibilityController::logAccessibilityEvents()
-{
-}
-
-void AccessibilityController::resetToConsistentState()
-{
- if (m_globalNotificationHandler)
- removeNotificationListener();
-}
-
-static id findAccessibleObjectById(id obj, NSString *idAttribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id objIdAttribute = [obj accessibilityAttributeValue:@"AXDRTElementIdAttribute"];
- if ([objIdAttribute isKindOfClass:[NSString class]] && [objIdAttribute isEqualToString:idAttribute])
- return obj;
- END_AX_OBJC_EXCEPTIONS
-
- NSArray *children = [obj accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- NSUInteger childrenCount = [children count];
- for (NSUInteger i = 0; i < childrenCount; ++i) {
- id result = findAccessibleObjectById([children objectAtIndex:i], idAttribute);
- if (result)
- return result;
- }
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityController::accessibleElementById(JSStringRef idAttribute)
-{
- WKBundlePageRef page = InjectedBundle::shared().page()->page();
- id root = static_cast<PlatformUIElement>(WKAccessibilityRootObject(page));
-
- id result = findAccessibleObjectById(root, [NSString stringWithJSStringRef:idAttribute]);
- if (result)
- return AccessibilityUIElement::create(result);
-
- return 0;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h
deleted file mode 100644
index 2c1608875..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-#ifndef AccessibilityNotificationHandler_h
-#define AccessibilityNotificationHandler_h
-
-#import <JavaScriptCore/JSObjectRef.h>
-
-@interface AccessibilityNotificationHandler : NSObject {
- id m_platformElement;
- JSValueRef m_notificationFunctionCallback;
-}
-
-- (id)init;
-- (void)setPlatformElement:(id)platformElement;
-- (void)setCallback:(JSValueRef)callback;
-- (void)startObserving;
-- (void)stopObserving;
-
-@end
-
-#endif // AccessibilityNotificationHandler_h
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm
deleted file mode 100644
index a3a0233f9..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityNotificationHandler.mm
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * Copyright (C) 2011 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.
- */
-
-#import "config.h"
-#import "InjectedBundle.h"
-#import "InjectedBundlePage.h"
-#import "JSWrapper.h"
-#import "AccessibilityNotificationHandler.h"
-#import "AccessibilityUIElement.h"
-
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <WebKit2/WKBundleFrame.h>
-#import <wtf/RetainPtr.h>
-
-@interface NSObject (WebAccessibilityObjectWrapperAdditions)
-+ (void)accessibilitySetShouldRepostNotifications:(BOOL)repost;
-@end
-
-@interface NSString (JSStringRefAdditions)
-- (JSStringRef)createJSStringRef;
-@end
-
-@implementation NSString (JSStringRefAdditions)
-
-- (JSStringRef)createJSStringRef
-{
- return JSStringCreateWithCFString((CFStringRef)self);
-}
-
-@end
-
-@implementation AccessibilityNotificationHandler
-
-- (id)init
-{
- if (!(self = [super init]))
- return nil;
-
- return self;
-}
-
-- (void)setPlatformElement:(id)platformElement
-{
- m_platformElement = platformElement;
-}
-
-- (void)dealloc
-{
- [self stopObserving];
-
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(WTR::InjectedBundle::shared().page()->page());
- JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
-
- JSValueUnprotect(context, m_notificationFunctionCallback);
- m_notificationFunctionCallback = 0;
-
- [super dealloc];
-}
-
-- (void)setCallback:(JSValueRef)callback
-{
- if (!callback)
- return;
-
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(WTR::InjectedBundle::shared().page()->page());
- JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
-
- if (m_notificationFunctionCallback)
- JSValueUnprotect(context, m_notificationFunctionCallback);
-
- m_notificationFunctionCallback = callback;
- JSValueProtect(context, m_notificationFunctionCallback);
-}
-
-- (void)startObserving
-{
- // Once we start requesting notifications, it's on for the duration of the program.
- // This is to avoid any race conditions between tests turning this flag on and off. Instead
- // AccessibilityNotificationHandler can ignore events it doesn't care about.
- id webAccessibilityObjectWrapperClass = NSClassFromString(@"WebAccessibilityObjectWrapper");
- ASSERT(webAccessibilityObjectWrapperClass);
- [webAccessibilityObjectWrapperClass accessibilitySetShouldRepostNotifications:YES];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(_notificationReceived:) name:@"AXDRTNotification" object:nil];
-}
-
-- (void)stopObserving
-{
- [[NSNotificationCenter defaultCenter] removeObserver:self];
-}
-
-- (void)_notificationReceived:(NSNotification *)notification
-{
- NSString *notificationName = [[notification userInfo] objectForKey:@"notificationName"];
- if (!notificationName)
- return;
- if (m_platformElement && m_platformElement != [notification object])
- return;
-
- WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(WTR::InjectedBundle::shared().page()->page());
- JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);
-
- JSRetainPtr<JSStringRef> jsNotification(Adopt, [notificationName createJSStringRef]);
- JSValueRef notificationNameArgument = JSValueMakeString(context, jsNotification.get());
- if (m_platformElement) {
- // Listener for one element just gets one argument, the notification name.
- JSObjectCallAsFunction(context, const_cast<JSObjectRef>(m_notificationFunctionCallback), 0, 1, &notificationNameArgument, 0);
- } else {
- // A global listener gets the element and the notification name as arguments.
- JSValueRef arguments[2];
- arguments[0] = toJS(context, WTF::getPtr(WTR::AccessibilityUIElement::create([notification object])));
- arguments[1] = notificationNameArgument;
- JSObjectCallAsFunction(context, const_cast<JSObjectRef>(m_notificationFunctionCallback), 0, 2, arguments, 0);
- }
-}
-
-@end
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerMac.mm
deleted file mode 100644
index face90ce5..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerMac.mm
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 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 "AccessibilityTextMarker.h"
-
-namespace WTR {
-
-bool AccessibilityTextMarker::isEqual(AccessibilityTextMarker* other)
-{
- return [(id)platformTextMarker() isEqual:(id)other->platformTextMarker()];
-}
-
-} // namespace WTR
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerRangeMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerRangeMac.mm
deleted file mode 100644
index 2186497df..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityTextMarkerRangeMac.mm
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2011 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 "AccessibilityTextMarkerRange.h"
-
-namespace WTR {
-
-bool AccessibilityTextMarkerRange::isEqual(AccessibilityTextMarkerRange* other)
-{
- return [(id)platformTextMarkerRange() isEqual:(id)other->platformTextMarkerRange()];
-}
-
-} // namespace WTR
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
deleted file mode 100644
index ffc82fc74..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/AccessibilityUIElementMac.mm
+++ /dev/null
@@ -1,1572 +0,0 @@
-/*
- * Copyright (C) 2011 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 "config.h"
-#import "AccessibilityCommonMac.h"
-#import "AccessibilityNotificationHandler.h"
-#import "AccessibilityUIElement.h"
-#import "InjectedBundle.h"
-#import "InjectedBundlePage.h"
-
-#import <AppKit/NSAccessibility.h>
-#import <Foundation/Foundation.h>
-#import <JavaScriptCore/JSRetainPtr.h>
-#import <JavaScriptCore/JSStringRef.h>
-#import <JavaScriptCore/JSStringRefCF.h>
-#import <JavaScriptCore/JSObjectRef.h>
-#import <WebKit2/WKBundleFrame.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/Vector.h>
-
-
-#ifndef NSAccessibilityOwnsAttribute
-#define NSAccessibilityOwnsAttribute @"AXOwns"
-#endif
-
-#ifndef NSAccessibilityGrabbedAttribute
-#define NSAccessibilityGrabbedAttribute @"AXGrabbed"
-#endif
-
-#ifndef NSAccessibilityDropEffectsAttribute
-#define NSAccessibilityDropEffectsAttribute @"AXDropEffects"
-#endif
-
-#ifndef NSAccessibilityPathAttribute
-#define NSAccessibilityPathAttribute @"AXPath"
-#endif
-
-typedef void (*AXPostedNotificationCallback)(id element, NSString* notification, void* context);
-
-@interface NSObject (WebKitAccessibilityAdditions)
-- (NSArray *)accessibilityArrayAttributeValues:(NSString *)attribute index:(NSUInteger)index maxCount:(NSUInteger)maxCount;
-- (NSUInteger)accessibilityIndexOfChild:(id)child;
-- (NSUInteger)accessibilityArrayAttributeCount:(NSString *)attribute;
-@end
-
-namespace WTR {
-
-AccessibilityUIElement::AccessibilityUIElement(PlatformUIElement element)
- : m_element(element)
- , m_notificationHandler(0)
-{
- // FIXME: ap@webkit.org says ObjC objects need to be CFRetained/CFRelease to be GC-compliant on the mac.
- [m_element retain];
-}
-
-AccessibilityUIElement::AccessibilityUIElement(const AccessibilityUIElement& other)
- : JSWrappable()
- , m_element(other.m_element)
- , m_notificationHandler(0)
-{
- [m_element retain];
-}
-
-AccessibilityUIElement::~AccessibilityUIElement()
-{
- // The notification handler should be nil because removeNotificationListener() should have been called in the test.
- ASSERT(!m_notificationHandler);
- [m_element release];
-}
-
-bool AccessibilityUIElement::isEqual(AccessibilityUIElement* otherElement)
-{
- if (!otherElement)
- return false;
- return platformUIElement() == otherElement->platformUIElement();
-}
-
-static NSString* descriptionOfValue(id valueObject, id focusedAccessibilityObject)
-{
- if (!valueObject)
- return NULL;
-
- if ([valueObject isKindOfClass:[NSArray class]])
- return [NSString stringWithFormat:@"<array of size %lu>", static_cast<unsigned long>([(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:NSAccessibilityRoleAttribute];
- NSString* title = [focusedAccessibilityObject accessibilityAttributeValue:NSAccessibilityTitleAttribute];
- 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;
-
- // accessibilityAttributeValue: can throw an if an attribute is not returned.
- // For DumpRenderTree's purpose, we should ignore those exceptions
- BEGIN_AX_OBJC_EXCEPTIONS
- id valueObject = [accessibilityObject accessibilityAttributeValue:attribute];
- NSString* value = descriptionOfValue(valueObject, accessibilityObject);
- [attributesString appendFormat:@"%@: %@\n", attribute, value];
- END_AX_OBJC_EXCEPTIONS
- }
-
- 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.appendVector(valueBuffer);
-
- return JSStringCreateWithCharacters(buffer.data(), buffer.size());
-}
-
-static void convertNSArrayToVector(NSArray* array, Vector<RefPtr<AccessibilityUIElement> >& elementVector)
-{
- NSUInteger count = [array count];
- for (NSUInteger i = 0; i < count; ++i)
- elementVector.append(AccessibilityUIElement::create([array objectAtIndex:i]));
-}
-
-static JSStringRef descriptionOfElements(Vector<RefPtr<AccessibilityUIElement> >& elementVector)
-{
- NSMutableString* allElementString = [NSMutableString string];
- size_t size = elementVector.size();
- for (size_t i = 0; i < size; ++i) {
- RefPtr<AccessibilityUIElement> uiElement = elementVector[i];
- NSString* attributes = attributesOfElement(uiElement->platformUIElement());
- [allElementString appendFormat:@"%@\n------------\n", attributes];
- }
-
- return [allElementString createJSStringRef];
-}
-
-void AccessibilityUIElement::getLinkedUIElements(Vector<RefPtr<AccessibilityUIElement> >& elementVector)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* linkedElements = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- convertNSArrayToVector(linkedElements, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getDocumentLinks(Vector<RefPtr<AccessibilityUIElement> >& elementVector)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* linkElements = [m_element accessibilityAttributeValue:@"AXLinkUIElements"];
- convertNSArrayToVector(linkElements, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getChildren(Vector<RefPtr<AccessibilityUIElement> >& elementVector)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* children = [m_element accessibilityAttributeValue:NSAccessibilityChildrenAttribute];
- convertNSArrayToVector(children, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::getChildrenWithRange(Vector<RefPtr<AccessibilityUIElement> >& elementVector, unsigned location, unsigned length)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* children = [m_element accessibilityArrayAttributeValues:NSAccessibilityChildrenAttribute index:location maxCount:length];
- convertNSArrayToVector(children, elementVector);
- END_AX_OBJC_EXCEPTIONS
-}
-
-int AccessibilityUIElement::childrenCount()
-{
- Vector<RefPtr<AccessibilityUIElement> > children;
- getChildren(children);
-
- return children.size();
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::elementAtPoint(int x, int y)
-{
- id element = [m_element accessibilityHitTest:NSMakePoint(x, y)];
- if (!element)
- return nil;
-
- return AccessibilityUIElement::create(element);
-}
-
-unsigned AccessibilityUIElement::indexOfChild(AccessibilityUIElement* element)
-{
- return [m_element accessibilityIndexOfChild:element->platformUIElement()];
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::childAtIndex(unsigned index)
-{
- Vector<RefPtr<AccessibilityUIElement> > children;
- getChildrenWithRange(children, index, 1);
-
- if (children.size() == 1)
- return children[0];
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::linkedUIElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- if (index < [objects count])
- return AccessibilityUIElement::create([objects objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaOwnsElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityOwnsAttribute];
- if (index < [objects count])
- return AccessibilityUIElement::create([objects objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::ariaFlowToElementAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* objects = [m_element accessibilityAttributeValue:NSAccessibilityLinkedUIElementsAttribute];
- if (index < [objects count])
- return AccessibilityUIElement::create([objects objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedRowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilityDisclosedRowsAttribute];
- if (index < [rows count])
- return AccessibilityUIElement::create([rows objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::rowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilityRowsAttribute];
- if (index < [rows count])
- return AccessibilityUIElement::create([rows objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedChildAtIndex(unsigned index) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* array = [m_element accessibilityAttributeValue:NSAccessibilitySelectedChildrenAttribute];
- if (index < [array count])
- return AccessibilityUIElement::create([array objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-unsigned AccessibilityUIElement::selectedChildrenCount() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilitySelectedChildrenAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::selectedRowAtIndex(unsigned index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rows = [m_element accessibilityAttributeValue:NSAccessibilitySelectedRowsAttribute];
- if (index < [rows count])
- return AccessibilityUIElement::create([rows objectAtIndex:index]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::titleUIElement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityTitleUIElementAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement::create(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::parentElement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityParentAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement::create(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::disclosedByRow()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id accessibilityObject = [m_element accessibilityAttributeValue:NSAccessibilityDisclosedByRowAttribute];
- if (accessibilityObject)
- return AccessibilityUIElement::create(accessibilityObject);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfLinkedUIElements()
-{
- Vector<RefPtr<AccessibilityUIElement> > linkedElements;
- getLinkedUIElements(linkedElements);
- return descriptionOfElements(linkedElements);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfDocumentLinks()
-{
- Vector<RefPtr<AccessibilityUIElement> > linkElements;
- getDocumentLinks(linkElements);
- return descriptionOfElements(linkElements);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfChildren()
-{
- Vector<RefPtr<AccessibilityUIElement> > children;
- getChildren(children);
- return descriptionOfElements(children);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::allAttributes()
-{
- NSString* attributes = attributesOfElement(m_element);
- return [attributes createJSStringRef];
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::stringAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSString class]])
- return [value createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-double AccessibilityUIElement::numberAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSNumber class]])
- return [value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementAttributeValue(JSStringRef attribute) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id uiElement = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- return AccessibilityUIElement::create(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::boolAttributeValue(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:[NSString stringWithJSStringRef:attribute]];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSettable(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityIsAttributeSettable:[NSString stringWithJSStringRef:attribute]];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isAttributeSupported(JSStringRef attribute)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [[m_element accessibilityAttributeNames] containsObject:[NSString stringWithJSStringRef:attribute]];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-JSRetainPtr<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];
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::role()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString *role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityRoleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXRole", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::subrole()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilitySubroleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXSubrole", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::roleDescription()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* role = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityRoleDescriptionAttribute], m_element);
- return concatenateAttributeAndValue(@"AXRoleDescription", role);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::title()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* title = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityTitleAttribute], m_element);
- return concatenateAttributeAndValue(@"AXTitle", title);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::description()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityDescriptionAttribute], m_element);
- return concatenateAttributeAndValue(@"AXDescription", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::orientation() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityOrientationAttribute], m_element);
- return concatenateAttributeAndValue(@"AXOrientation", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::stringValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityValueAttribute], m_element);
- return concatenateAttributeAndValue(@"AXValue", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::language()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:@"AXLanguage"], m_element);
- return concatenateAttributeAndValue(@"AXLanguage", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::helpText() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id description = descriptionOfValue([m_element accessibilityAttributeValue:NSAccessibilityHelpAttribute], m_element);
- return concatenateAttributeAndValue(@"AXHelp", description);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-double AccessibilityUIElement::x()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute];
- return static_cast<double>([positionValue pointValue].x);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::y()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:NSAccessibilityPositionAttribute];
- return static_cast<double>([positionValue pointValue].y);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::width()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute];
- return static_cast<double>([sizeValue sizeValue].width);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::height()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* sizeValue = [m_element accessibilityAttributeValue:NSAccessibilitySizeAttribute];
- return static_cast<double>([sizeValue sizeValue].height);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::clickPointX()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"];
- return static_cast<double>([positionValue pointValue].x);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::clickPointY()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* positionValue = [m_element accessibilityAttributeValue:@"AXClickPoint"];
- return static_cast<double>([positionValue pointValue].y);
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::intValue() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::minValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityMinValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0f;
-}
-
-double AccessibilityUIElement::maxValue()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityMaxValueAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber*)value doubleValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0.0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::valueDescription()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSString* valueDescription = [m_element accessibilityAttributeValue:NSAccessibilityValueDescriptionAttribute];
- if ([valueDescription isKindOfClass:[NSString class]])
- return [valueDescription createJSStringRef];
-
- END_AX_OBJC_EXCEPTIONS
- return 0;
-}
-
-int AccessibilityUIElement::insertionPointLineNumber()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityInsertionPointLineNumberAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-bool AccessibilityUIElement::isPressActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityPressAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isIncrementActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityIncrementAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isDecrementActionSupported()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* actions = [m_element accessibilityActionNames];
- return [actions containsObject:NSAccessibilityDecrementAction];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isEnabled()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityEnabledAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isRequired() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXRequired"];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isFocused() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isSelected() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilitySelectedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isExpanded() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityExpandedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-bool AccessibilityUIElement::isChecked() const
-{
- // On the Mac, intValue()==1 if a a checkable control is checked.
- return intValue() == 1;
-}
-
-int AccessibilityUIElement::hierarchicalLevel() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityDisclosureLevelAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::speak()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXDRTSpeechAttribute"];
- if ([value isKindOfClass:[NSString class]])
- return [value createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::ariaIsGrabbed() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityGrabbedAttribute];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::ariaDropEffects() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityDropEffectsAttribute];
- if (![value isKindOfClass:[NSArray class]])
- return 0;
-
- NSMutableString* dropEffects = [NSMutableString string];
- NSInteger length = [value count];
- for (NSInteger k = 0; k < length; ++k) {
- [dropEffects appendString:[value objectAtIndex:k]];
- if (k < length - 1)
- [dropEffects appendString:@","];
- }
-
- return [dropEffects createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-// parameterized attributes
-int AccessibilityUIElement::lineForIndex(int index)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityLineForIndexParameterizedAttribute forParameter:[NSNumber numberWithInt:index]];
- if ([value isKindOfClass:[NSNumber class]])
- return [(NSNumber *)value intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForLine(int line)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityRangeForLineParameterizedAttribute forParameter:[NSNumber numberWithInt:line]];
- if ([value isKindOfClass:[NSValue class]])
- return [NSStringFromRange([value rangeValue]) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::rangeForPosition(int x, int y)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:NSAccessibilityRangeForPositionParameterizedAttribute forParameter:[NSValue valueWithPoint:NSMakePoint(x, y)]];
- if ([value isKindOfClass:[NSValue class]])
- return [NSStringFromRange([value rangeValue]) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::boundsForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- 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];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- id string = [m_element accessibilityAttributeValue:NSAccessibilityStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSString class]])
- return 0;
-
- return [string createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributedStringForRange(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:NSAccessibilityAttributedStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSAttributedString class]])
- return 0;
-
- NSString* stringWithAttrs = [string description];
- return [stringWithAttrs createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::attributedStringRangeIsMisspelled(unsigned location, unsigned length)
-{
- NSRange range = NSMakeRange(location, length);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:NSAccessibilityAttributedStringForRangeParameterizedAttribute forParameter:[NSValue valueWithRange:range]];
- if (![string isKindOfClass:[NSAttributedString class]])
- return false;
-
- NSDictionary* attrs = [string attributesAtIndex:0 effectiveRange:nil];
- BOOL misspelled = [[attrs objectForKey:NSAccessibilityMisspelledTextAttribute] boolValue];
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 1090
- if (misspelled)
- misspelled = [[attrs objectForKey:NSAccessibilityMarkedMisspelledTextAttribute] boolValue];
-#endif
- return misspelled;
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::uiElementForSearchPredicate(JSContextRef context, AccessibilityUIElement* startElement, bool isDirectionNext, JSValueRef searchKey, JSStringRef searchText, bool visibleOnly)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSMutableDictionary* parameter = [NSMutableDictionary dictionary];
- [parameter setObject:(isDirectionNext) ? @"AXDirectionNext" : @"AXDirectionPrevious" forKey:@"AXDirection"];
- if (visibleOnly)
- [parameter setObject:[NSNumber numberWithBool:YES] forKey:@"AXVisibleOnly"];
- [parameter setObject:[NSNumber numberWithInt:1] forKey:@"AXResultsLimit"];
- if (startElement && startElement->platformUIElement())
- [parameter setObject:(id)startElement->platformUIElement() forKey:@"AXStartElement"];
- if (searchKey) {
- if (JSValueIsString(context, searchKey)) {
- NSString *searchKeyParameter = nil;
- JSStringRef singleSearchKey = JSValueToStringCopy(context, searchKey, 0);
- if (singleSearchKey) {
- searchKeyParameter = [NSString stringWithJSStringRef:singleSearchKey];
- JSStringRelease(singleSearchKey);
- if (searchKeyParameter)
- [parameter setObject:searchKeyParameter forKey:@"AXSearchKey"];
- }
- }
- else if (JSValueIsObject(context, searchKey)) {
- NSMutableArray *searchKeyParameter = nil;
- JSObjectRef array = const_cast<JSObjectRef>(searchKey);
- unsigned arrayLength = 0;
- JSRetainPtr<JSStringRef> arrayLengthString(Adopt, JSStringCreateWithUTF8CString("length"));
- JSValueRef arrayLengthValue = JSObjectGetProperty(context, array, arrayLengthString.get(), 0);
- if (arrayLengthValue && JSValueIsNumber(context, arrayLengthValue))
- arrayLength = static_cast<unsigned>(JSValueToNumber(context, arrayLengthValue, 0));
-
- for (unsigned i = 0; i < arrayLength; ++i) {
- JSValueRef exception = 0;
- JSValueRef value = JSObjectGetPropertyAtIndex(context, array, i, &exception);
- if (exception)
- break;
- JSStringRef singleSearchKey = JSValueToStringCopy(context, value, &exception);
- if (exception)
- break;
- if (singleSearchKey) {
- if (!searchKeyParameter)
- searchKeyParameter = [NSMutableArray array];
- [searchKeyParameter addObject:[NSString stringWithJSStringRef:singleSearchKey]];
- JSStringRelease(singleSearchKey);
- }
- }
- if (searchKeyParameter)
- [parameter setObject:searchKeyParameter forKey:@"AXSearchKey"];
- }
- }
- if (searchText && JSStringGetLength(searchText))
- [parameter setObject:[NSString stringWithJSStringRef:searchText] forKey:@"AXSearchText"];
-
- id uiElement = [[m_element accessibilityAttributeValue:@"AXUIElementsForSearchPredicate" forParameter:parameter] lastObject];
- return AccessibilityUIElement::create(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumnHeaders()
-{
- // not yet defined in AppKit... odd
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* columnHeadersArray = [m_element accessibilityAttributeValue:@"AXColumnHeaderUIElements"];
- Vector<RefPtr<AccessibilityUIElement> > columnHeadersVector;
- convertNSArrayToVector(columnHeadersArray, columnHeadersVector);
- return descriptionOfElements(columnHeadersVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRowHeaders()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rowHeadersArray = [m_element accessibilityAttributeValue:@"AXRowHeaderUIElements"];
- Vector<RefPtr<AccessibilityUIElement> > rowHeadersVector;
- convertNSArrayToVector(rowHeadersArray, rowHeadersVector);
- return descriptionOfElements(rowHeadersVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfColumns()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* columnsArray = [m_element accessibilityAttributeValue:NSAccessibilityColumnsAttribute];
- Vector<RefPtr<AccessibilityUIElement> > columnsVector;
- convertNSArrayToVector(columnsArray, columnsVector);
- return descriptionOfElements(columnsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfRows()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* rowsArray = [m_element accessibilityAttributeValue:NSAccessibilityRowsAttribute];
- Vector<RefPtr<AccessibilityUIElement> > rowsVector;
- convertNSArrayToVector(rowsArray, rowsVector);
- return descriptionOfElements(rowsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfVisibleCells()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* cellsArray = [m_element accessibilityAttributeValue:@"AXVisibleCells"];
- Vector<RefPtr<AccessibilityUIElement> > cellsVector;
- convertNSArrayToVector(cellsArray, cellsVector);
- return descriptionOfElements(cellsVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::attributesOfHeader()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id headerObject = [m_element accessibilityAttributeValue:NSAccessibilityHeaderAttribute];
- if (!headerObject)
- return [@"" createJSStringRef];
-
- Vector<RefPtr<AccessibilityUIElement> > headerVector;
- headerVector.append(AccessibilityUIElement::create(headerObject));
- return descriptionOfElements(headerVector);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::rowCount()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilityRowsAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::columnCount()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return [m_element accessibilityArrayAttributeCount:NSAccessibilityColumnsAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::indexInTable()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexNumber = [m_element accessibilityAttributeValue:NSAccessibilityIndexAttribute];
- if (indexNumber)
- return [indexNumber intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::rowIndexRange()
-{
- NSRange range = NSMakeRange(0, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue* indexRange = [m_element accessibilityAttributeValue:@"AXRowIndexRange"];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::columnIndexRange()
-{
- NSRange range = NSMakeRange(0, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexRange = [m_element accessibilityAttributeValue:@"AXColumnIndexRange"];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::cellForColumnAndRow(unsigned col, unsigned row)
-{
- NSArray *colRowArray = [NSArray arrayWithObjects:[NSNumber numberWithUnsignedInt:col], [NSNumber numberWithUnsignedInt:row], nil];
- BEGIN_AX_OBJC_EXCEPTIONS
- return AccessibilityUIElement::create([m_element accessibilityAttributeValue:@"AXCellForColumnAndRow" forParameter:colRowArray]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::horizontalScrollbar() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return AccessibilityUIElement::create([m_element accessibilityAttributeValue:NSAccessibilityHorizontalScrollBarAttribute]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::verticalScrollbar() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- return AccessibilityUIElement::create([m_element accessibilityAttributeValue:NSAccessibilityVerticalScrollBarAttribute]);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-void AccessibilityUIElement::scrollToMakeVisible()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:@"AXScrollToVisible"];
- END_AX_OBJC_EXCEPTIONS
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::selectedTextRange()
-{
- NSRange range = NSMakeRange(NSNotFound, 0);
- BEGIN_AX_OBJC_EXCEPTIONS
- NSValue *indexRange = [m_element accessibilityAttributeValue:NSAccessibilitySelectedTextRangeAttribute];
- if (indexRange)
- range = [indexRange rangeValue];
- NSMutableString* rangeDescription = [NSMutableString stringWithFormat:@"{%lu, %lu}", static_cast<unsigned long>(range.location), static_cast<unsigned long>(range.length)];
- return [rangeDescription createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-void AccessibilityUIElement::setSelectedTextRange(unsigned location, unsigned length)
-{
- NSRange textRange = NSMakeRange(location, length);
- NSValue *textRangeValue = [NSValue valueWithRange:textRange];
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilitySetValue:textRangeValue forAttribute:NSAccessibilitySelectedTextRangeAttribute];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::increment()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityIncrementAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::decrement()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityDecrementAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::showMenu()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityShowMenuAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::press()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- [m_element accessibilityPerformAction:NSAccessibilityPressAction];
- END_AX_OBJC_EXCEPTIONS
-}
-
-void AccessibilityUIElement::setSelectedChild(AccessibilityUIElement* element) const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* array = [NSArray arrayWithObject:element->platformUIElement()];
- [m_element accessibilitySetValue:array forAttribute:NSAccessibilitySelectedChildrenAttribute];
- END_AX_OBJC_EXCEPTIONS
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::accessibilityValue() const
-{
- // FIXME: implement
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::documentEncoding()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::documentURI()
-{
- return JSStringCreateWithCharacters(0, 0);
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::url()
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSURL *url = [m_element accessibilityAttributeValue:NSAccessibilityURLAttribute];
- return [[url absoluteString] createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return nil;
-}
-
-bool AccessibilityUIElement::addNotificationListener(JSValueRef functionCallback)
-{
- if (!functionCallback)
- return false;
-
- // Mac programmers should not be adding more than one notification listener per element.
- // Other platforms may be different.
- if (m_notificationHandler)
- return false;
- m_notificationHandler = [[AccessibilityNotificationHandler alloc] init];
- [m_notificationHandler setPlatformElement:platformUIElement()];
- [m_notificationHandler setCallback:functionCallback];
- [m_notificationHandler startObserving];
-
- return true;
-}
-
-bool AccessibilityUIElement::removeNotificationListener()
-{
- // Mac programmers should not be trying to remove a listener that's already removed.
- ASSERT(m_notificationHandler);
-
- [m_notificationHandler release];
- m_notificationHandler = nil;
-
- return true;
-}
-
-bool AccessibilityUIElement::isFocusable() const
-{
- bool result = false;
- BEGIN_AX_OBJC_EXCEPTIONS
- result = [m_element accessibilityIsAttributeSettable:NSAccessibilityFocusedAttribute];
- END_AX_OBJC_EXCEPTIONS
-
- return result;
-}
-
-bool AccessibilityUIElement::isSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isMultiSelectable() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isVisible() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isOffScreen() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isCollapsed() const
-{
- // FIXME: implement
- return false;
-}
-
-bool AccessibilityUIElement::isIgnored() const
-{
- BOOL result = NO;
- BEGIN_AX_OBJC_EXCEPTIONS
- result = [m_element accessibilityIsIgnored];
- END_AX_OBJC_EXCEPTIONS
- return result;
-}
-
-bool AccessibilityUIElement::hasPopup() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id value = [m_element accessibilityAttributeValue:@"AXHasPopup"];
- if ([value isKindOfClass:[NSNumber class]])
- return [value boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-void AccessibilityUIElement::takeFocus()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::takeSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::addSelection()
-{
- // FIXME: implement
-}
-
-void AccessibilityUIElement::removeSelection()
-{
- // FIXME: implement
-}
-
-// Text markers
-PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForElement(AccessibilityUIElement* element)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarkerRange = [m_element accessibilityAttributeValue:@"AXTextMarkerRangeForUIElement" forParameter:element->platformUIElement()];
- return AccessibilityTextMarkerRange::create(textMarkerRange);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-int AccessibilityUIElement::textMarkerRangeLength(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* lengthValue = [m_element accessibilityAttributeValue:@"AXLengthForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return [lengthValue intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::previousTextMarker(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id previousMarker = [m_element accessibilityAttributeValue:@"AXPreviousTextMarkerForTextMarker" forParameter:(id)textMarker->platformTextMarker()];
- return AccessibilityTextMarker::create(previousMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::nextTextMarker(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id nextMarker = [m_element accessibilityAttributeValue:@"AXNextTextMarkerForTextMarker" forParameter:(id)textMarker->platformTextMarker()];
- return AccessibilityTextMarker::create(nextMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::stringForTextMarkerRange(AccessibilityTextMarkerRange* markerRange)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textString = [m_element accessibilityAttributeValue:@"AXStringForTextMarkerRange" forParameter:(id)markerRange->platformTextMarkerRange()];
- return [textString createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarkerRange> AccessibilityUIElement::textMarkerRangeForMarkers(AccessibilityTextMarker* startMarker, AccessibilityTextMarker* endMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray* textMarkers = [NSArray arrayWithObjects:(id)startMarker->platformTextMarker(), (id)endMarker->platformTextMarker(), nil];
- id textMarkerRange = [m_element accessibilityAttributeValue:@"AXTextMarkerRangeForUnorderedTextMarkers" forParameter:textMarkers];
- return AccessibilityTextMarkerRange::create(textMarkerRange);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::startTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXStartTextMarkerForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return AccessibilityTextMarker::create(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::endTextMarkerForTextMarkerRange(AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXEndTextMarkerForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- return AccessibilityTextMarker::create(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForPoint(int x, int y)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXTextMarkerForPosition" forParameter:[NSValue valueWithPoint:NSMakePoint(x, y)]];
- return AccessibilityTextMarker::create(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::accessibilityElementForTextMarker(AccessibilityTextMarker* marker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id uiElement = [m_element accessibilityAttributeValue:@"AXUIElementForTextMarker" forParameter:(id)marker->platformTextMarker()];
- return AccessibilityUIElement::create(uiElement);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-bool AccessibilityUIElement::attributedStringForTextMarkerRangeContainsAttribute(JSStringRef attribute, AccessibilityTextMarkerRange* range)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSAttributedString* string = [m_element accessibilityAttributeValue:@"AXAttributedStringForTextMarkerRange" forParameter:(id)range->platformTextMarkerRange()];
- if (![string isKindOfClass:[NSAttributedString class]])
- return false;
-
- NSDictionary* attrs = [string attributesAtIndex:0 effectiveRange:nil];
- if ([attrs objectForKey:[NSString stringWithJSStringRef:attribute]])
- return true;
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-int AccessibilityUIElement::indexForTextMarker(AccessibilityTextMarker* marker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* indexNumber = [m_element accessibilityAttributeValue:@"AXIndexForTextMarker" forParameter:(id)marker->platformTextMarker()];
- return [indexNumber intValue];
- END_AX_OBJC_EXCEPTIONS
-
- return -1;
-}
-
-bool AccessibilityUIElement::isTextMarkerValid(AccessibilityTextMarker* textMarker)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSNumber* validNumber = [m_element accessibilityAttributeValue:@"AXTextMarkerIsValid" forParameter:(id)textMarker->platformTextMarker()];
- return [validNumber boolValue];
- END_AX_OBJC_EXCEPTIONS
-
- return false;
-}
-
-PassRefPtr<AccessibilityTextMarker> AccessibilityUIElement::textMarkerForIndex(int textIndex)
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- id textMarker = [m_element accessibilityAttributeValue:@"AXTextMarkerForIndex" forParameter:[NSNumber numberWithInteger:textIndex]];
- return AccessibilityTextMarker::create(textMarker);
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-static NSString *_convertMathMultiscriptPairsToString(NSArray *pairs)
-{
- __block NSMutableString *result = [NSMutableString string];
- [pairs enumerateObjectsUsingBlock:^(id pair, NSUInteger index, BOOL *stop) {
- for (NSString *key in pair)
- [result appendFormat:@"\t%lu. %@ = %@\n", (unsigned long)index, key, [[pair objectForKey:key] accessibilityAttributeValue:NSAccessibilitySubroleAttribute]];
- }];
-
- return result;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPostscriptsDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *pairs = [m_element accessibilityAttributeValue:@"AXMathPostscripts"];
- return [_convertMathMultiscriptPairsToString(pairs) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::mathPrescriptsDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *pairs = [m_element accessibilityAttributeValue:@"AXMathPrescripts"];
- return [_convertMathMultiscriptPairsToString(pairs) createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::pathDescription() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSMutableString *result = [NSMutableString stringWithString:@"\nStart Path\n"];
- NSBezierPath *bezierPath = [m_element accessibilityAttributeValue:NSAccessibilityPathAttribute];
-
- NSUInteger elementCount = [bezierPath elementCount];
- NSPoint points[3];
- for (NSUInteger i = 0; i < elementCount; i++) {
- switch ([bezierPath elementAtIndex:i associatedPoints:points]) {
- case NSMoveToBezierPathElement:
- [result appendString:@"\tMove to point\n"];
- break;
-
- case NSLineToBezierPathElement:
- [result appendString:@"\tLine to\n"];
- break;
-
- case NSCurveToBezierPathElement:
- [result appendString:@"\tCurve to\n"];
- break;
-
- case NSClosePathBezierPathElement:
- [result appendString:@"\tClose\n"];
- break;
- }
- }
-
- return [result createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-JSRetainPtr<JSStringRef> AccessibilityUIElement::supportedActions() const
-{
- BEGIN_AX_OBJC_EXCEPTIONS
- NSArray *names = [m_element accessibilityActionNames];
- return [[names componentsJoinedByString:@","] createJSStringRef];
- END_AX_OBJC_EXCEPTIONS
-
- return 0;
-}
-
-} // namespace WTR
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm
deleted file mode 100644
index fe1ef1ef1..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/ActivateFonts.mm
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "ActivateFonts.h"
-
-#import <AppKit/AppKit.h>
-#import <CoreFoundation/CoreFoundation.h>
-#import <wtf/ObjcRuntimeExtras.h>
-#import <wtf/RetainPtr.h>
-
-@interface WKTRFontActivatorDummyClass : NSObject
-@end
-
-@implementation WKTRFontActivatorDummyClass
-@end
-
-namespace WTR {
-
-
-static NSSet *allowedFontFamilySet()
-{
- static NSSet *fontFamilySet = [[NSSet setWithObjects:
- @"Ahem",
- @"Al Bayan",
- @"American Typewriter",
- @"Andale Mono",
- @"Apple Braille",
- @"Apple Color Emoji",
- @"Apple Chancery",
- @"Apple Garamond BT",
- @"Apple LiGothic",
- @"Apple LiSung",
- @"Apple Symbols",
- @"AppleGothic",
- @"AppleMyungjo",
- @"Arial Black",
- @"Arial Hebrew",
- @"Arial Narrow",
- @"Arial Rounded MT Bold",
- @"Arial Unicode MS",
- @"Arial",
- @"Ayuthaya",
- @"Baghdad",
- @"Baskerville",
- @"BiauKai",
- @"Big Caslon",
- @"Brush Script MT",
- @"Chalkboard",
- @"Chalkduster",
- @"Charcoal CY",
- @"Cochin",
- @"Comic Sans MS",
- @"Copperplate",
- @"Corsiva Hebrew",
- @"Courier New",
- @"Courier",
- @"DecoType Naskh",
- @"Devanagari MT",
- @"Didot",
- @"Euphemia UCAS",
- @"Futura",
- @"GB18030 Bitmap",
- @"Geeza Pro",
- @"Geneva CY",
- @"Geneva",
- @"Georgia",
- @"Gill Sans",
- @"Gujarati MT",
- @"GungSeo",
- @"Gurmukhi MT",
- @"HeadLineA",
- @"Hei",
- @"Heiti SC",
- @"Heiti TC",
- @"Helvetica CY",
- @"Helvetica Neue",
- @"Helvetica",
- @"Herculanum",
- @"Hiragino Kaku Gothic Pro",
- @"Hiragino Kaku Gothic ProN",
- @"Hiragino Kaku Gothic Std",
- @"Hiragino Kaku Gothic StdN",
- @"Hiragino Maru Gothic Monospaced",
- @"Hiragino Maru Gothic Pro",
- @"Hiragino Maru Gothic ProN",
- @"Hiragino Mincho Pro",
- @"Hiragino Mincho ProN",
- @"Hiragino Sans GB",
- @"Hoefler Text",
- @"Impact",
- @"InaiMathi",
- @"Kai",
- @"Kailasa",
- @"Kokonor",
- @"Krungthep",
- @"KufiStandardGK",
- @"LiHei Pro",
- @"LiSong Pro",
- @"Lucida Grande",
- @"Marker Felt",
- @"Menlo",
- @"Microsoft Sans Serif",
- @"Monaco",
- @"Mshtakan",
- @"Nadeem",
- @"New Peninim MT",
- @"Optima",
- @"Osaka",
- @"Papyrus",
- @"PCMyungjo",
- @"PilGi",
- @"Plantagenet Cherokee",
- @"Raanana",
- @"Sathu",
- @"Silom",
- @"Skia",
- @"Songti SC",
- @"Songti TC",
- @"STFangsong",
- @"STHeiti",
- @"STIXGeneral",
- @"STIXSizeOneSym",
- @"STKaiti",
- @"STSong",
- @"Symbol",
- @"Tahoma",
- @"Thonburi",
- @"Times New Roman",
- @"Times",
- @"Trebuchet MS",
- @"Verdana",
- @"Webdings",
- @"WebKit WeightWatcher",
- @"Wingdings 2",
- @"Wingdings 3",
- @"Wingdings",
- @"Zapf Dingbats",
- @"Zapfino",
- nil] retain];
-
- return fontFamilySet;
-}
-
-static NSSet *systemHiddenFontFamilySet()
-{
- static NSSet *fontFamilySet = [[NSSet setWithObjects:
- @".LucidaGrandeUI",
- nil] retain];
-
- return fontFamilySet;
-}
-
-static IMP appKitAvailableFontFamiliesIMP;
-static IMP appKitAvailableFontsIMP;
-
-static NSArray *wtr_NSFontManager_availableFontFamilies(id self, SEL _cmd)
-{
- static NSArray *availableFontFamilies;
- if (availableFontFamilies)
- return availableFontFamilies;
-
- NSArray *availableFamilies = wtfCallIMP<id>(appKitAvailableFontFamiliesIMP, self, _cmd);
-
- NSMutableSet *prunedFamiliesSet = [NSMutableSet setWithArray:availableFamilies];
- [prunedFamiliesSet intersectSet:allowedFontFamilySet()];
-
- availableFontFamilies = [[prunedFamiliesSet allObjects] retain];
- return availableFontFamilies;
-}
-
-static NSArray *wtr_NSFontManager_availableFonts(id self, SEL _cmd)
-{
- static NSArray *availableFonts;
- if (availableFonts)
- return availableFonts;
-
- NSSet *allowedFamilies = allowedFontFamilySet();
- NSMutableArray *availableFontList = [[NSMutableArray alloc] initWithCapacity:[allowedFamilies count] * 2];
- for (NSString *fontFamily in allowedFontFamilySet()) {
- NSArray* fontsForFamily = [[NSFontManager sharedFontManager] availableMembersOfFontFamily:fontFamily];
- for (NSArray* fontInfo in fontsForFamily) {
- // Font name is the first entry in the array.
- [availableFontList addObject:[fontInfo objectAtIndex:0]];
- }
- }
-
- for (NSString *hiddenFontFamily in systemHiddenFontFamilySet()) {
- [availableFontList addObject:hiddenFontFamily];
- }
-
- availableFonts = availableFontList;
- return availableFonts;
-}
-
-static void swizzleNSFontManagerMethods()
-{
- Method availableFontFamiliesMethod = class_getInstanceMethod(objc_getClass("NSFontManager"), @selector(availableFontFamilies));
- ASSERT(availableFontFamiliesMethod);
- if (!availableFontFamiliesMethod) {
- NSLog(@"Failed to swizzle the \"availableFontFamilies\" method on NSFontManager");
- return;
- }
-
- appKitAvailableFontFamiliesIMP = method_setImplementation(availableFontFamiliesMethod, (IMP)wtr_NSFontManager_availableFontFamilies);
-
- Method availableFontsMethod = class_getInstanceMethod(objc_getClass("NSFontManager"), @selector(availableFonts));
- ASSERT(availableFontsMethod);
- if (!availableFontsMethod) {
- NSLog(@"Failed to swizzle the \"availableFonts\" method on NSFontManager");
- return;
- }
-
- appKitAvailableFontsIMP = method_setImplementation(availableFontsMethod, (IMP)wtr_NSFontManager_availableFonts);
-}
-
-void activateFonts()
-{
- static const char* fontFileNames[] = {
- "AHEM____.TTF",
- "WebKitWeightWatcher100.ttf",
- "WebKitWeightWatcher200.ttf",
- "WebKitWeightWatcher300.ttf",
- "WebKitWeightWatcher400.ttf",
- "WebKitWeightWatcher500.ttf",
- "WebKitWeightWatcher600.ttf",
- "WebKitWeightWatcher700.ttf",
- "WebKitWeightWatcher800.ttf",
- "WebKitWeightWatcher900.ttf",
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- "SampleFont.sfont",
-#endif
- 0
- };
-
- NSMutableArray *fontURLs = [NSMutableArray array];
- NSURL *resourcesDirectory = [[NSBundle bundleForClass:[WKTRFontActivatorDummyClass class]] resourceURL];
- for (unsigned i = 0; fontFileNames[i]; ++i) {
- NSURL *fontURL = [resourcesDirectory URLByAppendingPathComponent:[NSString stringWithUTF8String:fontFileNames[i]]];
- [fontURLs addObject:[fontURL absoluteURL]];
- }
-
- CFArrayRef errors = 0;
- if (!CTFontManagerRegisterFontsForURLs((CFArrayRef)fontURLs, kCTFontManagerScopeProcess, &errors)) {
- NSLog(@"Failed to activate fonts: %@", errors);
- CFRelease(errors);
- exit(1);
- }
-
- swizzleNSFontManagerMethods();
-}
-
-}
-
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm
deleted file mode 100644
index 282cce635..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundleMac.mm
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "InjectedBundle.h"
-
-#import <Foundation/Foundation.h>
-
-@interface NSURLRequest (PrivateThingsWeShouldntReallyUse)
-+(void)setAllowsAnyHTTPSCertificate:(BOOL)allow forHost:(NSString *)host;
-@end
-
-@interface NSSound (Details)
-+ (void)_setAlertType:(NSUInteger)alertType;
-@end
-
-namespace WTR {
-
-void InjectedBundle::platformInitialize(WKTypeRef)
-{
- NSDictionary *dict = [NSDictionary dictionaryWithObjectsAndKeys:
- [NSNumber numberWithInteger:4], @"AppleAntiAliasingThreshold",
- [NSNumber numberWithInteger:0], @"AppleFontSmoothing",
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1080
- [NSNumber numberWithBool:NO], @"NSScrollAnimationEnabled",
-#else
- [NSNumber numberWithBool:NO], @"AppleScrollAnimationEnabled",
-#endif
- [NSNumber numberWithBool:NO], @"NSOverlayScrollersEnabled",
- @"Always", @"AppleShowScrollBars",
- [NSArray arrayWithObject:@"en"], @"AppleLanguages",
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- [NSDictionary dictionaryWithObjectsAndKeys:@"notational", @"notationl", nil], @"NSTestCorrectionDictionary",
-#endif
- nil];
-
- [[NSUserDefaults standardUserDefaults] setVolatileDomain:dict forName:NSArgumentDomain];
-
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@"localhost"];
- [NSURLRequest setAllowsAnyHTTPSCertificate:YES forHost:@"127.0.0.1"];
-
- [NSSound _setAlertType:0];
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm
deleted file mode 100644
index 418d5139e..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/InjectedBundlePageMac.mm
+++ /dev/null
@@ -1,93 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 "config.h"
-#import "InjectedBundlePage.h"
-
-#import "StringFunctions.h"
-#import <WebKit2/WKBundleFrame.h>
-#import <WebKit2/WKURLCF.h>
-#import <WebKitSystemInterface.h>
-#import <wtf/RetainPtr.h>
-#import <wtf/text/StringBuilder.h>
-#import <wtf/text/WTFString.h>
-
-namespace WTR {
-
-using namespace WTF;
-
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
-static String testPathFromURL(WKURLRef url)
-{
- RetainPtr<CFURLRef> cfURL = adoptCF(WKURLCopyCFURL(kCFAllocatorDefault, url));
- if (!cfURL)
- return String();
-
- RetainPtr<CFStringRef> schemeCFString = adoptCF(CFURLCopyScheme(cfURL.get()));
- RetainPtr<CFStringRef> pathCFString = adoptCF(CFURLCopyPath(cfURL.get()));
-
- String schemeString(schemeCFString.get());
- String pathString(pathCFString.get());
-
- if (equalIgnoringCase(schemeString, "file")) {
- String layoutTests("/LayoutTests/");
- size_t layoutTestsOffset = pathString.find(layoutTests);
- if (layoutTestsOffset == notFound)
- return String();
-
- return pathString.substring(layoutTestsOffset + layoutTests.length());
- }
-
- if (!equalIgnoringCase(schemeString, "http") && !equalIgnoringCase(schemeString, "https"))
- return String();
-
- RetainPtr<CFStringRef> hostCFString = adoptCF(CFURLCopyHostName(cfURL.get()));
- String hostString(hostCFString.get());
- if (hostString == "127.0.0.1" && (CFURLGetPortNumber(cfURL.get()) == 8000 || CFURLGetPortNumber(cfURL.get()) == 8443))
- return pathString;
-
- return String();
-}
-#endif
-
-void InjectedBundlePage::platformDidStartProvisionalLoadForFrame(WKBundleFrameRef frame)
-{
-#if __MAC_OS_X_VERSION_MIN_REQUIRED >= 1070
- if (!WKBundleFrameIsMainFrame(frame))
- return;
-
- WKRetainPtr<WKURLRef> mainFrameURL = adoptWK(WKBundleFrameCopyProvisionalURL(frame));
-
- String testPath = testPathFromURL(mainFrameURL.get());
- if (!testPath.isNull()) {
- StringBuilder builder;
- builder.appendLiteral("CRASHING TEST: ");
- builder.append(testPath);
- WKSetCrashReportApplicationSpecificInformation(builder.toString().createCFString().get());
- }
-#endif
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm b/Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm
deleted file mode 100644
index c9bf3caf9..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/mac/TestRunnerMac.mm
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "TestRunner.h"
-
-#include "InjectedBundle.h"
-
-namespace WTR {
-
-void TestRunner::platformInitialize()
-{
-}
-
-void TestRunner::invalidateWaitToDumpWatchdogTimer()
-{
- if (!m_waitToDumpWatchdogTimer)
- return;
-
- CFRunLoopTimerInvalidate(m_waitToDumpWatchdogTimer.get());
- m_waitToDumpWatchdogTimer = 0;
-}
-
-static void waitUntilDoneWatchdogTimerFired(CFRunLoopTimerRef timer, void* info)
-{
- InjectedBundle::shared().testRunner()->waitToDumpWatchdogTimerFired();
-}
-
-void TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded()
-{
- if (m_waitToDumpWatchdogTimer)
- return;
-
- m_waitToDumpWatchdogTimer = adoptCF(CFRunLoopTimerCreate(kCFAllocatorDefault, CFAbsoluteTimeGetCurrent() + waitToDumpWatchdogTimerInterval, 0, 0, 0, WTR::waitUntilDoneWatchdogTimerFired, NULL));
- CFRunLoopAddTimer(CFRunLoopGetCurrent(), m_waitToDumpWatchdogTimer.get(), kCFRunLoopCommonModes);
-}
-
-JSRetainPtr<JSStringRef> TestRunner::pathToLocalResource(JSStringRef url)
-{
- return JSStringRetain(url); // Do nothing on mac.
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName()
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("mac"));
- return platformName;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp b/Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp
index ff24aa5ca..332ffcf02 100644
--- a/Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp
+++ b/Tools/WebKitTestRunner/InjectedBundle/qt/ActivateFontsQt.cpp
@@ -39,7 +39,6 @@ void activateFonts()
{
WebKit::QtTestSupport::initializeTestFonts();
QCoreApplication::setAttribute(Qt::AA_Use96Dpi, true);
- DumpRenderTreeSupportQt::disableDefaultTypesettingFeatures();
}
}
diff --git a/Tools/WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp b/Tools/WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp
deleted file mode 100644
index 410d60fe2..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/win/ActivateFonts.cpp
+++ /dev/null
@@ -1,108 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "ActivateFonts.h"
-
-#include <string>
-#include <wtf/Vector.h>
-
-static LPCWSTR fontsEnvironmentVariable = L"WEBKIT_TESTFONTS";
-
-namespace WTR {
-
-using namespace std;
-
-static const wstring& fontsPath()
-{
- static wstring path;
- static bool initialized;
-
- if (initialized)
- return path;
- initialized = true;
-
- DWORD size = ::GetEnvironmentVariableW(fontsEnvironmentVariable, 0, 0);
- Vector<WCHAR> buffer(size);
- if (!::GetEnvironmentVariableW(fontsEnvironmentVariable, buffer.data(), buffer.size()))
- return path;
-
- path = buffer.data();
- if (path[path.length() - 1] != '\\')
- path.append(L"\\");
-
- return path;
-}
-
-
-void activateFonts()
-{
- static LPCWSTR 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 2.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();
-
- for (unsigned i = 0; i < ARRAYSIZE(fontsToInstall); ++i)
- ::AddFontResourceExW(wstring(resourcesPath + fontsToInstall[i]).c_str(), FR_PRIVATE, 0);
-}
-
-}
diff --git a/Tools/WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp b/Tools/WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp
deleted file mode 100644
index c70514a63..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/win/InjectedBundleWin.cpp
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "InjectedBundle.h"
-
-namespace WTR {
-
-static HANDLE webProcessCrashingEvent;
-
-static LONG WINAPI exceptionFilter(EXCEPTION_POINTERS*)
-{
- // Let the UI process know right away that we crashed. It might take a long time for us to
- // finish crashing if a crash log is being saved.
- ::SetEvent(webProcessCrashingEvent);
-
- return EXCEPTION_CONTINUE_SEARCH;
-}
-
-void InjectedBundle::platformInitialize(WKTypeRef initializationUserData)
-{
- ::SetUnhandledExceptionFilter(exceptionFilter);
-
- ASSERT_ARG(initializationUserData, initializationUserData);
- ASSERT_ARG(initializationUserData, WKGetTypeID(initializationUserData) == WKStringGetTypeID());
-
- WKStringRef string = static_cast<WKStringRef>(initializationUserData);
- Vector<char> buffer(WKStringGetMaximumUTF8CStringSize(string));
- WKStringGetUTF8CString(string, buffer.data(), buffer.size());
-
- // The UI process should already have created this event. We're just getting another HANDLE to it.
- webProcessCrashingEvent = ::CreateEventA(0, FALSE, FALSE, buffer.data());
- ASSERT(webProcessCrashingEvent);
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp b/Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp
deleted file mode 100644
index 225394276..000000000
--- a/Tools/WebKitTestRunner/InjectedBundle/win/TestRunnerWin.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "TestRunner.h"
-
-#include "InjectedBundle.h"
-
-namespace WTR {
-
-void TestRunner::platformInitialize()
-{
- m_waitToDumpWatchdogTimer = 0;
-}
-
-void TestRunner::invalidateWaitToDumpWatchdogTimer()
-{
- if (!m_waitToDumpWatchdogTimer)
- return;
-
- ::KillTimer(0, m_waitToDumpWatchdogTimer);
- m_waitToDumpWatchdogTimer = 0;
-}
-
-static void CALLBACK waitToDumpWatchdogTimerFired(HWND, UINT, UINT_PTR, DWORD)
-{
- InjectedBundle::shared().testRunner()->waitToDumpWatchdogTimerFired();
-}
-
-static const UINT_PTR waitToDumpWatchdogTimerIdentifier = 1;
-
-void TestRunner::initializeWaitToDumpWatchdogTimerIfNeeded()
-{
- if (m_waitToDumpWatchdogTimer)
- return;
-
- m_waitToDumpWatchdogTimer = ::SetTimer(0, waitToDumpWatchdogTimerIdentifier, waitToDumpWatchdogTimerInterval * 1000, WTR::waitToDumpWatchdogTimerFired);
-}
-
-JSRetainPtr<JSStringRef> TestRunner::pathToLocalResource(JSStringRef url)
-{
- return JSStringRetain(url); // TODO.
-}
-
-JSRetainPtr<JSStringRef> TestRunner::platformName()
-{
- JSRetainPtr<JSStringRef> platformName(Adopt, JSStringCreateWithUTF8CString("win"));
- return platformName;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/Makefile b/Tools/WebKitTestRunner/Makefile
deleted file mode 100644
index 4648f9807..000000000
--- a/Tools/WebKitTestRunner/Makefile
+++ /dev/null
@@ -1,21 +0,0 @@
-# Build WebKitTestRunner only on Snow Leopard and later.
-
-OSX_VERSION ?= $(shell sw_vers -productVersion | cut -d. -f 2)
-BUILD_WEBKITTESTRUNNER = $(shell (( $(OSX_VERSION) >= 6 )) && echo "YES" )
-
-ifeq "$(BUILD_WEBKITTESTRUNNER)" "YES"
-
-SCRIPTS_PATH = ../Scripts
-include ../../Makefile.shared
-
-else
-
-all: ;
-
-debug d development dev develop: ;
-
-release r deployment dep deploy: ;
-
-clean: ;
-
-endif
diff --git a/Tools/WebKitTestRunner/Options.cpp b/Tools/WebKitTestRunner/Options.cpp
new file mode 100644
index 000000000..53f0253ac
--- /dev/null
+++ b/Tools/WebKitTestRunner/Options.cpp
@@ -0,0 +1,192 @@
+/*
+ * Copyright (C) 2013 University of Szeged. All rights reserved.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
+ * Copyright (C) 2015 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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 "Options.h"
+
+#include <string.h>
+
+namespace WTR {
+
+Options::Options()
+ : useWaitToDumpWatchdogTimer(true)
+ , forceNoTimeout(false)
+ , verbose(false)
+ , gcBetweenTests(false)
+ , shouldDumpPixelsForAllTests(false)
+ , printSupportedFeatures(false)
+ , forceComplexText(false)
+ , shouldUseAcceleratedDrawing(false)
+ , shouldUseRemoteLayerTree(false)
+ , shouldShowWebView(false)
+{
+}
+
+bool handleOptionNoTimeout(Options& options, const char*, const char*)
+{
+ options.useWaitToDumpWatchdogTimer = false;
+ options.forceNoTimeout = true;
+ return true;
+}
+
+bool handleOptionVerbose(Options& options, const char*, const char*)
+{
+ options.verbose = true;
+ return true;
+}
+
+bool handleOptionGcBetweenTests(Options& options, const char*, const char*)
+{
+ options.gcBetweenTests = true;
+ return true;
+}
+
+bool handleOptionPixelTests(Options& options, const char*, const char*)
+{
+ options.shouldDumpPixelsForAllTests = true;
+ return true;
+}
+
+bool handleOptionPrintSupportedFeatures(Options& options, const char*, const char*)
+{
+ options.printSupportedFeatures = true;
+ return true;
+}
+
+bool handleOptionComplexText(Options& options, const char*, const char*)
+{
+ options.forceComplexText = true;
+ return true;
+}
+
+bool handleOptionAcceleratedDrawing(Options& options, const char*, const char*)
+{
+ options.shouldUseAcceleratedDrawing = true;
+ return true;
+}
+
+bool handleOptionRemoteLayerTree(Options& options, const char*, const char*)
+{
+ options.shouldUseRemoteLayerTree = true;
+ return true;
+}
+
+bool handleOptionShowWebView(Options& options, const char*, const char*)
+{
+ options.shouldShowWebView = true;
+ return true;
+}
+
+bool handleOptionAllowedHost(Options& options, const char*, const char* host)
+{
+ options.allowedHosts.push_back(host);
+ return true;
+}
+
+bool handleOptionUnmatched(Options& options, const char* option, const char*)
+{
+ if (option[0] && option[1] && option[0] == '-' && option[1] == '-')
+ return true;
+ options.paths.push_back(option);
+ return true;
+}
+
+OptionsHandler::OptionsHandler(Options& o)
+ : options(o)
+{
+ optionList.append(Option("--no-timeout", "Disables all timeouts.", handleOptionNoTimeout));
+ optionList.append(Option("--verbose", "Turns on messages.", handleOptionVerbose));
+ optionList.append(Option("--gc-between-tests", "Garbage collection between tests.", handleOptionGcBetweenTests));
+ optionList.append(Option("--pixel-tests", "Check pixels.", handleOptionPixelTests));
+ optionList.append(Option("-p", "Check pixels.", handleOptionPixelTests));
+ optionList.append(Option("--print-supported-features", "For DumpRenderTree compatibility.", handleOptionPrintSupportedFeatures));
+ optionList.append(Option("--complex-text", "Force complex tests.", handleOptionComplexText));
+ optionList.append(Option("--accelerated-drawing", "Use accelerated drawing.", handleOptionAcceleratedDrawing));
+ optionList.append(Option("--remote-layer-tree", "Use remote layer tree.", handleOptionRemoteLayerTree));
+ optionList.append(Option("--allowed-host", "Allows access to the specified host from tests.", handleOptionAllowedHost, true));
+ optionList.append(Option("--show-webview", "Show the WebView during test runs (for Debugging)", handleOptionShowWebView));
+
+ optionList.append(Option(0, 0, handleOptionUnmatched));
+}
+
+const char * OptionsHandler::usage = "Usage: WebKitTestRunner [options] filename [filename2..n]";
+const char * OptionsHandler::help = "Displays this help.";
+
+Option::Option(const char* name, const char* description, std::function<bool(Options&, const char*, const char*)> parameterHandler, bool hasArgument)
+ : name(name), description(description), parameterHandler(parameterHandler), hasArgument(hasArgument) { };
+
+bool Option::matches(const char* option)
+{
+ return !name || !strcmp(name, option);
+}
+
+bool OptionsHandler::parse(int argc, const char* argv[])
+{
+ bool status = true;
+ for (int argCounter = 1; argCounter < argc; ++argCounter) {
+ if (!strcmp(argv[argCounter], "--help") || !strcmp(argv[argCounter], "-h")) {
+ printHelp();
+ return false;
+ }
+ const char* currentOption = argv[argCounter];
+ for (Option& option : optionList) {
+ if (option.matches(currentOption)) {
+ if (!option.parameterHandler)
+ status = false;
+ else if (option.hasArgument) {
+ const char * currentArgument = argv[++argCounter];
+ if (currentArgument)
+ status &= option.parameterHandler(options, currentOption, currentArgument);
+ else
+ status = false;
+ } else
+ status &= option.parameterHandler(options, currentOption, 0);
+ break;
+ }
+ }
+ }
+ return status;
+}
+
+void OptionsHandler::printHelp(FILE* channel)
+{
+ fputs(usage, channel);
+ fputs("\n\n -h|--help\n\t", channel);
+ fputs(help, channel);
+ fputs("\n\n", channel);
+ for (Option& option : optionList) {
+ if (!option.name)
+ continue;
+ fputs(" ", channel);
+ fputs(option.name, channel);
+ fputs((option.hasArgument ? " <param>\n\t" : "\n\t"), channel);
+ fputs(option.description, channel);
+ fputs("\n\n", channel);
+ }
+}
+
+} // namespace WTR
diff --git a/Tools/WebKitTestRunner/Options.h b/Tools/WebKitTestRunner/Options.h
new file mode 100644
index 000000000..5549fe464
--- /dev/null
+++ b/Tools/WebKitTestRunner/Options.h
@@ -0,0 +1,79 @@
+/*
+ * Copyright (C) 2013 University of Szeged. All rights reserved.
+ * Copyright (C) 2013 Samsung Electronics. All rights reserved.
+ * Copyright (C) 2015 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 UNIVERSITY OF SZEGED ``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 UNIVERSITY OF SZEGED 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 Options_h
+#define Options_h
+
+#include <functional>
+#include <stdio.h>
+#include <string>
+#include <vector>
+#include <wtf/Vector.h>
+
+namespace WTR {
+
+struct Options {
+ Options();
+ bool useWaitToDumpWatchdogTimer;
+ bool forceNoTimeout;
+ bool verbose;
+ bool gcBetweenTests;
+ bool shouldDumpPixelsForAllTests;
+ bool printSupportedFeatures;
+ bool forceComplexText;
+ bool shouldUseAcceleratedDrawing;
+ bool shouldUseRemoteLayerTree;
+ bool shouldShowWebView;
+ std::vector<std::string> paths;
+ std::vector<std::string> allowedHosts;
+};
+
+class Option {
+public:
+ Option(const char* name, const char* description, std::function<bool(Options&, const char*, const char*)> parameterHandler, bool hasArgument = false);
+ bool matches(const char*);
+ const char* name;
+ const char* description;
+ std::function<bool(Options&, const char*, const char*)> parameterHandler;
+ bool hasArgument;
+};
+
+class OptionsHandler {
+public:
+ explicit OptionsHandler(Options&);
+ bool parse(int argc, const char* argv[]);
+ void printHelp(FILE* channel = stderr);
+private:
+ Vector<Option> optionList;
+ Options& options;
+ static const char* usage;
+ static const char* help;
+};
+
+} // namespace WTR
+
+#endif // Options_h
diff --git a/Tools/WebKitTestRunner/PixelDumpSupport.cpp b/Tools/WebKitTestRunner/PixelDumpSupport.cpp
index 76974737f..37b3047cb 100644
--- a/Tools/WebKitTestRunner/PixelDumpSupport.cpp
+++ b/Tools/WebKitTestRunner/PixelDumpSupport.cpp
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/WebKitTestRunner/PixelDumpSupport.h b/Tools/WebKitTestRunner/PixelDumpSupport.h
index 41c6e38ea..324667f10 100644
--- a/Tools/WebKitTestRunner/PixelDumpSupport.h
+++ b/Tools/WebKitTestRunner/PixelDumpSupport.h
@@ -10,7 +10,7 @@
* 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
+ * 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.
*
diff --git a/Tools/WebKitTestRunner/PlatformEfl.cmake b/Tools/WebKitTestRunner/PlatformEfl.cmake
deleted file mode 100644
index 50aefca07..000000000
--- a/Tools/WebKitTestRunner/PlatformEfl.cmake
+++ /dev/null
@@ -1,81 +0,0 @@
-add_custom_target(forwarding-headersEflForWebKitTestRunner
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT_TESTRUNNER_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include efl
-)
-set(ForwardingHeadersForWebKitTestRunner_NAME forwarding-headersEflForWebKitTestRunner)
-
-add_custom_target(forwarding-headersSoupForWebKitTestRunner
- COMMAND ${PERL_EXECUTABLE} ${WEBKIT2_DIR}/Scripts/generate-forwarding-headers.pl ${WEBKIT_TESTRUNNER_DIR} ${DERIVED_SOURCES_WEBKIT2_DIR}/include soup
-)
-set(ForwardingNetworkHeadersForWebKitTestRunner_NAME forwarding-headersSoupForWebKitTestRunner)
-
-list(APPEND WebKitTestRunner_SOURCES
- ${WEBKIT_TESTRUNNER_DIR}/cairo/TestInvocationCairo.cpp
-
- ${WEBKIT_TESTRUNNER_DIR}/efl/EventSenderProxyEfl.cpp
- ${WEBKIT_TESTRUNNER_DIR}/efl/PlatformWebViewEfl.cpp
- ${WEBKIT_TESTRUNNER_DIR}/efl/TestControllerEfl.cpp
- ${WEBKIT_TESTRUNNER_DIR}/efl/main.cpp
-)
-
-list(APPEND WebKitTestRunner_INCLUDE_DIRECTORIES
- ${TOOLS_DIR}/DumpRenderTree/efl/
- ${WEBKIT2_DIR}/UIProcess/API/efl
- "${WTF_DIR}/wtf/gobject"
- ${CAIRO_INCLUDE_DIRS}
- ${ECORE_EVAS_INCLUDE_DIRS}
- ${ECORE_FILE_INCLUDE_DIRS}
- ${ECORE_INCLUDE_DIRS}
- ${EINA_INCLUDE_DIRS}
- ${EO_INCLUDE_DIRS}
- ${EVAS_INCLUDE_DIRS}
- ${GLIB_INCLUDE_DIRS}
-)
-
-list(APPEND WebKitTestRunner_LIBRARIES
- ${CAIRO_LIBRARIES}
- ${ECORE_LIBRARIES}
- ${ECORE_EVAS_LIBRARIES}
- ${EINA_LIBRARIES}
- ${EO_LIBRARIES}
- ${EVAS_LIBRARIES}
- ${GLIB_LIBRARIES}
- ${OPENGL_LIBRARIES}
- WTF
-)
-
-if (ENABLE_ECORE_X)
- list(APPEND WebKitTestRunner_INCLUDE_DIRECTORIES
- ${ECORE_X_INCLUDE_DIRS}
- )
-
- list(APPEND WebKitTestRunner_LIBRARIES
- ${ECORE_X_LIBRARIES}
- ${X11_Xext_LIB}
- )
-endif ()
-
-list(APPEND WebKitTestRunnerInjectedBundle_SOURCES
- ${TOOLS_DIR}/DumpRenderTree/efl/FontManagement.cpp
-
- ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/efl/ActivateFontsEfl.cpp
- ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/efl/InjectedBundleEfl.cpp
- ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/efl/TestRunnerEfl.cpp
-)
-
-# FIXME: DOWNLOADED_FONTS_DIR should not hardcode the directory
-# structure. See <https://bugs.webkit.org/show_bug.cgi?id=81475>.
-add_definitions(-DFONTS_CONF_DIR="${TOOLS_DIR}/DumpRenderTree/gtk/fonts"
- -DDOWNLOADED_FONTS_DIR="${CMAKE_SOURCE_DIR}/WebKitBuild/Dependencies/Source/webkitgtk-test-fonts-0.0.3")
-
-if (ENABLE_ACCESSIBILITY)
- list(APPEND WebKitTestRunnerInjectedBundle_SOURCES
- ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/atk/AccessibilityControllerAtk.cpp
- ${WEBKIT_TESTRUNNER_INJECTEDBUNDLE_DIR}/atk/AccessibilityUIElementAtk.cpp
- )
- list(APPEND WebKitTestRunner_INCLUDE_DIRECTORIES
- ${ATK_INCLUDE_DIRS}
- )
- list(APPEND WebKitTestRunner_LIBRARIES
- ${ATK_LIBRARIES}
- )
-endif ()
diff --git a/Tools/WebKitTestRunner/PlatformWebView.h b/Tools/WebKitTestRunner/PlatformWebView.h
index 98d882710..c43bc9085 100644
--- a/Tools/WebKitTestRunner/PlatformWebView.h
+++ b/Tools/WebKitTestRunner/PlatformWebView.h
@@ -26,9 +26,24 @@
#ifndef PlatformWebView_h
#define PlatformWebView_h
-#include <WebKit2/WKRetainPtr.h>
+#include "TestOptions.h"
+#include <WebKit/WKRetainPtr.h>
-#if defined(BUILDING_QT__)
+#if PLATFORM(COCOA) && !defined(BUILDING_GTK__)
+#include <WebKit/WKFoundation.h>
+OBJC_CLASS NSView;
+OBJC_CLASS UIView;
+OBJC_CLASS TestRunnerWKWebView;
+OBJC_CLASS WKWebViewConfiguration;
+OBJC_CLASS WebKitTestRunnerWindow;
+
+#if WK_API_ENABLED
+typedef TestRunnerWKWebView *PlatformWKView;
+#else
+typedef NSView *PlatformWKView;
+#endif
+typedef WebKitTestRunnerWindow *PlatformWindow;
+#elif defined(BUILDING_QT__)
QT_BEGIN_NAMESPACE
class QQuickView;
class QEventLoop;
@@ -36,30 +51,11 @@ QT_END_NAMESPACE
class QQuickWebView;
typedef QQuickWebView* PlatformWKView;
typedef QQuickView* PlatformWindow;
-#elif defined(__APPLE__) && __APPLE__
-#ifdef __OBJC__
-@class WKView;
-@class WebKitTestRunnerWindow;
-#else
-class WKView;
-class WebKitTestRunnerWindow;
-#endif
-typedef WKView* PlatformWKView;
-typedef WebKitTestRunnerWindow* PlatformWindow;
-#elif defined(WIN32) || defined(_WIN32)
-typedef WKViewRef PlatformWKView;
-typedef HWND PlatformWindow;
#elif defined(BUILDING_GTK__)
typedef struct _GtkWidget GtkWidget;
typedef WKViewRef PlatformWKView;
typedef GtkWidget* PlatformWindow;
#elif PLATFORM(EFL)
-typedef struct _Ecore_Evas Ecore_Evas;
-#if USE(EO)
-typedef struct _Eo Evas_Object;
-#else
-typedef struct _Evas_Object Evas_Object;
-#endif
typedef Evas_Object* PlatformWKView;
typedef Ecore_Evas* PlatformWindow;
#endif
@@ -68,7 +64,11 @@ namespace WTR {
class PlatformWebView {
public:
- PlatformWebView(WKContextRef, WKPageGroupRef, WKPageRef relatedPage, WKDictionaryRef options = 0);
+#if PLATFORM(COCOA)
+ PlatformWebView(WKWebViewConfiguration*, const TestOptions&);
+#else
+ PlatformWebView(WKPageConfigurationRef, const TestOptions&);
+#endif
~PlatformWebView();
WKPageRef page();
@@ -81,7 +81,8 @@ public:
bool sendEvent(QEvent*);
void postEvent(QEvent*);
void setModalEventLoop(QEventLoop* eventLoop) { m_modalEventLoop = eventLoop; }
- static bool windowShapshotEnabled();
+ // Window snapshot can be disabled on Qt with QT_WEBKIT_DISABLE_UIPROCESS_DUMPPIXELS=1 environment variable (necessary for xvfb)
+ static bool windowSnapshotEnabled();
#endif
WKRect windowFrame();
@@ -92,23 +93,29 @@ public:
void addChromeInputField();
void removeChromeInputField();
void makeWebViewFirstResponder();
- void setWindowIsKey(bool isKey) { m_windowIsKey = isKey; }
+ void setWindowIsKey(bool);
bool windowIsKey() const { return m_windowIsKey; }
-#if PLATFORM(MAC) || PLATFORM(EFL) || PLATFORM(QT)
- bool viewSupportsOptions(WKDictionaryRef) const;
-#else
- bool viewSupportsOptions(WKDictionaryRef) const { return true; }
-#endif
+ bool viewSupportsOptions(const TestOptions&) const;
WKRetainPtr<WKImageRef> windowSnapshotImage();
- WKDictionaryRef options() const { return m_options.get(); }
+ const TestOptions& options() const { return m_options; }
+
+ void changeWindowScaleIfNeeded(float newScale);
+ void setNavigationGesturesEnabled(bool);
+
+#if PLATFORM(GTK)
+ void dismissAllPopupMenus();
+#endif
private:
+ void forceWindowFramesChanged();
+
PlatformWKView m_view;
PlatformWindow m_window;
bool m_windowIsKey;
- WKRetainPtr<WKDictionaryRef> m_options;
+ const TestOptions m_options;
+
#if PLATFORM(EFL) || PLATFORM(QT)
bool m_usingFixedLayout;
#endif
diff --git a/Tools/WebKitTestRunner/StringFunctions.h b/Tools/WebKitTestRunner/StringFunctions.h
index 13f6e5853..dce761b36 100644
--- a/Tools/WebKitTestRunner/StringFunctions.h
+++ b/Tools/WebKitTestRunner/StringFunctions.h
@@ -29,18 +29,17 @@
#include <JavaScriptCore/JSRetainPtr.h>
#include <JavaScriptCore/JavaScript.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKString.h>
+#include <WebKit/WKStringPrivate.h>
+#include <WebKit/WKURL.h>
#include <sstream>
#include <string>
-#include <WebKit2/WKRetainPtr.h>
-#include <WebKit2/WKString.h>
-#include <WebKit2/WKStringPrivate.h>
-#include <WebKit2/WKURL.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
#include <wtf/Platform.h>
+#include <wtf/StdLibExtras.h>
+#include <wtf/Vector.h>
#include <wtf/text/CString.h>
#include <wtf/text/WTFString.h>
-#include <wtf/Vector.h>
namespace WTR {
@@ -74,7 +73,7 @@ inline JSRetainPtr<JSStringRef> toJS(const WKRetainPtr<WKStringRef>& string)
inline std::string toSTD(WKStringRef string)
{
size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
+ auto buffer = std::make_unique<char[]>(bufferSize);
size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
return std::string(buffer.get(), stringLength - 1);
}
@@ -87,7 +86,7 @@ inline std::string toSTD(const WKRetainPtr<WKStringRef>& string)
inline WTF::String toWTFString(WKStringRef string)
{
size_t bufferSize = WKStringGetMaximumUTF8CStringSize(string);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
+ auto buffer = std::make_unique<char[]>(bufferSize);
size_t stringLength = WKStringGetUTF8CString(string, buffer.get(), bufferSize);
return WTF::String::fromUTF8WithLatin1Fallback(buffer.get(), stringLength - 1);
}
diff --git a/Tools/WebKitTestRunner/Target.pri b/Tools/WebKitTestRunner/Target.pri
deleted file mode 100644
index 68647b2e6..000000000
--- a/Tools/WebKitTestRunner/Target.pri
+++ /dev/null
@@ -1,45 +0,0 @@
-# -------------------------------------------------------------------
-# Project file for WebKitTestRunner binary (WTR)
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = app
-TARGET = WebKitTestRunner
-
-HEADERS += \
- EventSenderProxy.h \
- GeolocationProviderMock.h \
- PlatformWebView.h \
- StringFunctions.h \
- TestController.h \
- TestInvocation.h \
- WebNotificationProvider.h \
- WorkQueueManager.h
-
-SOURCES += \
- qt/main.cpp \
- qt/EventSenderProxyQt.cpp \
- qt/PlatformWebViewQt.cpp \
- qt/TestControllerQt.cpp \
- qt/TestInvocationQt.cpp \
- GeolocationProviderMock.cpp \
- TestController.cpp \
- TestInvocation.cpp \
- WebNotificationProvider.cpp \
- WorkQueueManager.cpp
-
-DESTDIR = $${ROOT_BUILD_DIR}/bin
-
-QT = core core-private gui gui-private widgets network testlib quick quick-private webkitwidgets qml-private
-
-WEBKIT += wtf javascriptcore webkit2
-
-DEFINES += USE_SYSTEM_MALLOC=1
-
-INCLUDEPATH += \
- $$PWD \
- $${ROOT_WEBKIT_DIR}/Source/WebCore/platform/qt \
- $${ROOT_WEBKIT_DIR}/Tools/DumpRenderTree/qt
-
-RESOURCES = qt/WebKitTestRunner.qrc
diff --git a/Tools/WebKitTestRunner/TestController.cpp b/Tools/WebKitTestRunner/TestController.cpp
index 63e033033..a05ea8f4d 100644
--- a/Tools/WebKitTestRunner/TestController.cpp
+++ b/Tools/WebKitTestRunner/TestController.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2014-2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,40 +26,54 @@
#include "config.h"
#include "TestController.h"
+#include "EventSenderProxy.h"
+#include "Options.h"
#include "PlatformWebView.h"
#include "StringFunctions.h"
#include "TestInvocation.h"
-#include <WebKit2/WKAuthenticationChallenge.h>
-#include <WebKit2/WKAuthenticationDecisionListener.h>
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKCredential.h>
-#include <WebKit2/WKIconDatabase.h>
-#include <WebKit2/WKNotification.h>
-#include <WebKit2/WKNotificationManager.h>
-#include <WebKit2/WKNotificationPermissionRequest.h>
-#include <WebKit2/WKNumber.h>
-#include <WebKit2/WKPageGroup.h>
-#include <WebKit2/WKPagePrivate.h>
-#include <WebKit2/WKPreferencesPrivate.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKArray.h>
+#include <WebKit/WKAuthenticationChallenge.h>
+#include <WebKit/WKAuthenticationDecisionListener.h>
+#include <WebKit/WKContextConfigurationRef.h>
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKCookieManager.h>
+#include <WebKit/WKCredential.h>
+#include <WebKit/WKIconDatabase.h>
+#include <WebKit/WKNavigationResponseRef.h>
+#include <WebKit/WKNotification.h>
+#include <WebKit/WKNotificationManager.h>
+#include <WebKit/WKNotificationPermissionRequest.h>
+#include <WebKit/WKNumber.h>
+#include <WebKit/WKPageGroup.h>
+#include <WebKit/WKPageInjectedBundleClient.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKPluginInformation.h>
+#include <WebKit/WKPreferencesRefPrivate.h>
+#include <WebKit/WKProtectionSpace.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKSecurityOriginRef.h>
+#include <WebKit/WKUserMediaPermissionCheck.h>
#include <algorithm>
#include <cstdio>
#include <ctype.h>
+#include <fstream>
+#include <runtime/InitializeThreading.h>
#include <stdlib.h>
#include <string>
-#include <wtf/PassOwnPtr.h>
+#include <unistd.h>
+#include <wtf/MainThread.h>
+#include <wtf/RunLoop.h>
+#include <wtf/TemporaryChange.h>
#include <wtf/text/CString.h>
+#include <wtf/text/WTFString.h>
-#if PLATFORM(MAC)
-#include <WebKit2/WKPagePrivateMac.h>
-#endif
-
-#if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
-#include "EventSenderProxy.h"
+#if PLATFORM(COCOA)
+#include <WebKit/WKContextPrivateMac.h>
+#include <WebKit/WKPagePrivateMac.h>
#endif
-#if !PLATFORM(MAC)
-#include <WebKit2/WKTextChecker.h>
+#if !PLATFORM(COCOA)
+#include <WebKit/WKTextChecker.h>
#endif
namespace WTR {
@@ -70,12 +84,13 @@ const unsigned TestController::viewHeight = 600;
const unsigned TestController::w3cSVGViewWidth = 480;
const unsigned TestController::w3cSVGViewHeight = 360;
-// defaultLongTimeout + defaultShortTimeout should be less than 80,
-// the default timeout value of the test harness so we can detect an
-// unresponsive web process.
-static const double defaultLongTimeout = 60;
-static const double defaultShortTimeout = 15;
-static const double defaultNoTimeout = -1;
+#if ASAN_ENABLED
+const double TestController::shortTimeout = 10.0;
+#else
+const double TestController::shortTimeout = 5.0;
+#endif
+
+const double TestController::noTimeout = -1;
static WKURLRef blankURL()
{
@@ -83,9 +98,15 @@ static WKURLRef blankURL()
return staticBlankURL;
}
+static WKDataRef copyWebCryptoMasterKey(WKPageRef, const void*)
+{
+ // Any 128 bit key would do, all we need for testing is to implement the callback.
+ return WKDataCreate((const uint8_t*)"\x00\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0a\x0b\x0c\x0d\x0e\x0f", 16);
+}
+
static TestController* controller;
-TestController& TestController::shared()
+TestController& TestController::singleton()
{
ASSERT(controller);
return *controller;
@@ -99,12 +120,8 @@ TestController::TestController(int argc, const char* argv[])
, m_shouldDumpPixelsForAllTests(false)
, m_state(Initial)
, m_doneResetting(false)
- , m_longTimeout(defaultLongTimeout)
- , m_shortTimeout(defaultShortTimeout)
- , m_noTimeout(defaultNoTimeout)
, m_useWaitToDumpWatchdogTimer(true)
, m_forceNoTimeout(false)
- , m_timeout(0)
, m_didPrintWebProcessCrashedMessage(false)
, m_shouldExitWhenWebProcessCrashes(true)
, m_beforeUnloadReturnValue(true)
@@ -114,6 +131,11 @@ TestController::TestController(int argc, const char* argv[])
, m_policyDelegatePermissive(false)
, m_handlesAuthenticationChallenges(false)
, m_shouldBlockAllPlugins(false)
+ , m_forceComplexText(false)
+ , m_shouldUseAcceleratedDrawing(false)
+ , m_shouldUseRemoteLayerTree(false)
+ , m_shouldLogHistoryClientCallbacks(false)
+ , m_shouldShowWebView(false)
{
initialize(argc, argv);
controller = this;
@@ -123,7 +145,9 @@ TestController::TestController(int argc, const char* argv[])
TestController::~TestController()
{
- WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
+ // The context will be null if WebKitTestRunner was in server mode, but ran no tests.
+ if (m_context)
+ WKIconDatabaseClose(WKContextGetIconDatabase(m_context.get()));
platformDestroy();
}
@@ -143,16 +167,9 @@ static void setWindowFrame(WKPageRef page, WKRect frame, const void* clientInfo)
static bool runBeforeUnloadConfirmPanel(WKPageRef page, WKStringRef message, WKFrameRef frame, const void*)
{
printf("CONFIRM NAVIGATION: %s\n", toSTD(message).c_str());
- return TestController::shared().beforeUnloadReturnValue();
+ return TestController::singleton().beforeUnloadReturnValue();
}
-static unsigned long long exceededDatabaseQuota(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKStringRef, WKStringRef, unsigned long long, unsigned long long, unsigned long long, unsigned long long, const void*)
-{
- static const unsigned long long defaultQuota = 5 * 1024 * 1024;
- return defaultQuota;
-}
-
-
void TestController::runModal(WKPageRef page, const void* clientInfo)
{
PlatformWebView* view = static_cast<PlatformWebView*>(const_cast<void*>(clientInfo));
@@ -183,35 +200,39 @@ static void unfocus(WKPageRef page, const void* clientInfo)
static void decidePolicyForGeolocationPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef, WKGeolocationPermissionRequestRef permissionRequest, const void* clientInfo)
{
- TestController::shared().handleGeolocationPermissionRequest(permissionRequest);
+ TestController::singleton().handleGeolocationPermissionRequest(permissionRequest);
}
-int TestController::getCustomTimeout()
+static void decidePolicyForUserMediaPermissionRequest(WKPageRef, WKFrameRef, WKSecurityOriginRef origin, WKUserMediaPermissionRequestRef permissionRequest, const void* clientInfo)
{
- return m_timeout;
+ TestController::singleton().handleUserMediaPermissionRequest(origin, permissionRequest);
}
-WKPageRef TestController::createOtherPage(WKPageRef oldPage, WKURLRequestRef, WKDictionaryRef, WKEventModifiers, WKEventMouseButton, const void* clientInfo)
+static void checkUserMediaPermissionForOrigin(WKPageRef, WKFrameRef, WKSecurityOriginRef origin, WKUserMediaPermissionCheckRef checkRequest, const void*)
+{
+ TestController::singleton().handleCheckOfUserMediaPermissionForOrigin(origin, checkRequest);
+}
+
+WKPageRef TestController::createOtherPage(WKPageRef oldPage, WKPageConfigurationRef configuration, WKNavigationActionRef navigationAction, WKWindowFeaturesRef windowFeatures, const void *clientInfo)
{
PlatformWebView* parentView = static_cast<PlatformWebView*>(const_cast<void*>(clientInfo));
- PlatformWebView* view = new PlatformWebView(WKPageGetContext(oldPage), WKPageGetPageGroup(oldPage), oldPage, parentView->options());
+ PlatformWebView* view = platformCreateOtherPage(parentView, configuration, parentView->options());
WKPageRef newPage = view->page();
view->resizeTo(800, 600);
- WKPageUIClient otherPageUIClient = {
- kWKPageUIClientCurrentVersion,
- view,
+ WKPageUIClientV6 otherPageUIClient = {
+ { 6, view },
0, // createNewPage_deprecatedForUseWithV0
0, // showPage
closeOtherPage,
0, // takeFocus
focus,
unfocus,
- 0, // runJavaScriptAlert
- 0, // runJavaScriptConfirm
- 0, // runJavaScriptPrompt
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
0, // setStatusText
0, // mouseDidMoveOverElement_deprecatedForUseWithV0
0, // missingPluginButtonClicked
@@ -230,7 +251,7 @@ WKPageRef TestController::createOtherPage(WKPageRef oldPage, WKURLRequestRef, WK
runBeforeUnloadConfirmPanel,
0, // didDraw
0, // pageDidScroll
- exceededDatabaseQuota,
+ 0, // exceededDatabaseQuota
0, // runOpenPanel
decidePolicyForGeolocationPermissionRequest,
0, // headerHeight
@@ -242,18 +263,62 @@ WKPageRef TestController::createOtherPage(WKPageRef oldPage, WKURLRequestRef, WK
0, // didCompleteRubberBandForMainFrame
0, // saveDataToFileInDownloadsFolder
0, // shouldInterruptJavaScript
- createOtherPage,
+ 0, // createNewPage_deprecatedForUseWithV1
0, // mouseDidMoveOverElement
0, // decidePolicyForNotificationPermissionRequest
0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
0, // showColorPicker
0, // hideColorPicker
0, // unavailablePluginButtonClicked
+ 0, // pinnedStateDidChange
+ 0, // didBeginTrackingPotentialLongMousePress
+ 0, // didRecognizeLongMousePress
+ 0, // didCancelTrackingPotentialLongMousePress
+ 0, // isPlayingAudioDidChange
+ decidePolicyForUserMediaPermissionRequest,
+ 0, // didClickAutofillButton
+ 0, // runJavaScriptAlert
+ 0, // runJavaScriptConfirm
+ 0, // runJavaScriptPrompt
+ 0, // mediaSessionMetadataDidChange
+ createOtherPage,
+ 0, // runJavaScriptAlert
+ 0, // runJavaScriptConfirm
+ 0, // runJavaScriptPrompt
+ checkUserMediaPermissionForOrigin,
};
- WKPageSetPageUIClient(newPage, &otherPageUIClient);
+ WKPageSetPageUIClient(newPage, &otherPageUIClient.base);
+
+ WKPageNavigationClientV0 pageNavigationClient = {
+ { 0, &TestController::singleton() },
+ decidePolicyForNavigationAction,
+ decidePolicyForNavigationResponse,
+ decidePolicyForPluginLoad,
+ 0, // didStartProvisionalNavigation
+ 0, // didReceiveServerRedirectForProvisionalNavigation
+ 0, // didFailProvisionalNavigation
+ 0, // didCommitNavigation
+ 0, // didFinishNavigation
+ 0, // didFailNavigation
+ 0, // didFailProvisionalLoadInSubframe
+ 0, // didFinishDocumentLoad
+ 0, // didSameDocumentNavigation
+ 0, // renderingProgressDidChange
+ canAuthenticateAgainstProtectionSpace,
+ didReceiveAuthenticationChallenge,
+ processDidCrash,
+ copyWebCryptoMasterKey,
+ didBeginNavigationGesture,
+ willEndNavigationGesture,
+ didEndNavigationGesture,
+ didRemoveNavigationGestureSnapshot
+ };
+ WKPageSetPageNavigationClient(newPage, &pageNavigationClient.base);
view->didInitializeClients();
+ TestController::singleton().updateWindowScaleForTest(view, *TestController::singleton().m_currentInvocation);
+
WKRetain(newPage);
return newPage;
}
@@ -269,67 +334,37 @@ const char* TestController::libraryPathForTesting()
return platformLibraryPathForTesting();
}
-
void TestController::initialize(int argc, const char* argv[])
{
+ JSC::initializeThreading();
+ WTF::initializeMainThread();
+ RunLoop::initializeMainRunLoop();
+
platformInitialize();
+ Options options;
+ OptionsHandler optionsHandler(options);
+
if (argc < 2) {
- fputs("Usage: WebKitTestRunner [options] filename [filename2..n]\n", stderr);
- // FIXME: Refactor option parsing to allow us to print
- // an auto-generated list of options.
+ optionsHandler.printHelp();
exit(1);
}
+ if (!optionsHandler.parse(argc, argv))
+ exit(1);
- bool printSupportedFeatures = false;
-
- for (int i = 1; i < argc; ++i) {
- std::string argument(argv[i]);
-
- if (argument == "--timeout" && i + 1 < argc) {
- m_longTimeout = atoi(argv[++i]);
- // Scale up the short timeout to match.
- m_shortTimeout = defaultShortTimeout * m_longTimeout / defaultLongTimeout;
- continue;
- }
-
- if (argument == "--no-timeout") {
- m_useWaitToDumpWatchdogTimer = false;
- continue;
- }
-
- if (argument == "--no-timeout-at-all") {
- m_useWaitToDumpWatchdogTimer = false;
- m_forceNoTimeout = true;
- continue;
- }
-
- if (argument == "--verbose") {
- m_verbose = true;
- continue;
- }
- if (argument == "--gc-between-tests") {
- m_gcBetweenTests = true;
- continue;
- }
- if (argument == "--pixel-tests" || argument == "-p") {
- m_shouldDumpPixelsForAllTests = true;
- continue;
- }
- if (argument == "--print-supported-features") {
- printSupportedFeatures = true;
- break;
- }
-
-
- // Skip any other arguments that begin with '--'.
- if (argument.length() >= 2 && argument[0] == '-' && argument[1] == '-')
- continue;
-
- m_paths.push_back(argument);
- }
-
- if (printSupportedFeatures) {
+ m_useWaitToDumpWatchdogTimer = options.useWaitToDumpWatchdogTimer;
+ m_forceNoTimeout = options.forceNoTimeout;
+ m_verbose = options.verbose;
+ m_gcBetweenTests = options.gcBetweenTests;
+ m_shouldDumpPixelsForAllTests = options.shouldDumpPixelsForAllTests;
+ m_forceComplexText = options.forceComplexText;
+ m_shouldUseAcceleratedDrawing = options.shouldUseAcceleratedDrawing;
+ m_shouldUseRemoteLayerTree = options.shouldUseRemoteLayerTree;
+ m_paths = options.paths;
+ m_allowedHosts = options.allowedHosts;
+ m_shouldShowWebView = options.shouldShowWebView;
+
+ if (options.printSupportedFeatures) {
// FIXME: On Windows, DumpRenderTree uses this to expose whether it supports 3d
// transforms and accelerated compositing. When we support those features, we
// should match DRT's behavior.
@@ -347,70 +382,120 @@ void TestController::initialize(int argc, const char* argv[])
WKRetainPtr<WKStringRef> pageGroupIdentifier(AdoptWK, WKStringCreateWithUTF8CString("WebKitTestRunnerPageGroup"));
m_pageGroup.adopt(WKPageGroupCreateWithIdentifier(pageGroupIdentifier.get()));
+}
- m_context.adopt(WKContextCreateWithInjectedBundlePath(injectedBundlePath()));
- m_geolocationProvider = adoptPtr(new GeolocationProviderMock(m_context.get()));
-
-#if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED > 1080
- WKContextSetUsesNetworkProcess(m_context.get(), true);
- WKContextSetProcessModel(m_context.get(), kWKProcessModelMultipleSecondaryProcesses);
-#endif
+WKRetainPtr<WKContextConfigurationRef> TestController::generateContextConfiguration() const
+{
+ auto configuration = adoptWK(WKContextConfigurationCreate());
+ WKContextConfigurationSetInjectedBundlePath(configuration.get(), injectedBundlePath());
+ WKContextConfigurationSetFullySynchronousModeIsAllowedForTesting(configuration.get(), true);
if (const char* dumpRenderTreeTemp = libraryPathForTesting()) {
String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp);
- // WebCore::pathByAppendingComponent is not used here because of the namespace,
- // which leads us to this ugly #ifdef and file path concatenation.
-#if OS(WINDOWS)
- const char separator = '\\';
-#else
const char separator = '/';
-#endif
- WKContextSetApplicationCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
- WKContextSetDatabaseDirectory(m_context.get(), toWK(temporaryFolder + separator + "Databases").get());
- WKContextSetLocalStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
- WKContextSetDiskCacheDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cache").get());
- WKContextSetCookieStorageDirectory(m_context.get(), toWK(temporaryFolder + separator + "Cookies").get());
- WKContextSetIconDatabasePath(m_context.get(), toWK(temporaryFolder + separator + "IconDatabase" + separator + "WebpageIcons.db").get());
+ WKContextConfigurationSetApplicationCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "ApplicationCache").get());
+ WKContextConfigurationSetDiskCacheDirectory(configuration.get(), toWK(temporaryFolder + separator + "Cache").get());
+ WKContextConfigurationSetIndexedDBDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "IndexedDB").get());
+ WKContextConfigurationSetLocalStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "LocalStorage").get());
+ WKContextConfigurationSetWebSQLDatabaseDirectory(configuration.get(), toWK(temporaryFolder + separator + "Databases" + separator + "WebSQL").get());
+ WKContextConfigurationSetMediaKeysStorageDirectory(configuration.get(), toWK(temporaryFolder + separator + "MediaKeys").get());
+ }
+ return configuration;
+}
+
+WKRetainPtr<WKPageConfigurationRef> TestController::generatePageConfiguration(WKContextConfigurationRef configuration)
+{
+ m_context = platformAdjustContext(adoptWK(WKContextCreateWithConfiguration(configuration)).get(), configuration);
+
+ m_geolocationProvider = std::make_unique<GeolocationProviderMock>(m_context.get());
+
+ if (const char* dumpRenderTreeTemp = libraryPathForTesting()) {
+ String temporaryFolder = String::fromUTF8(dumpRenderTreeTemp);
+
+ // FIXME: This should be migrated to WKContextConfigurationRef.
+ // Disable icon database to avoid fetching <http://127.0.0.1:8000/favicon.ico> and making tests flaky.
+ // Invividual tests can enable it using testRunner.setIconDatabaseEnabled, although it's not currently supported in WebKitTestRunner.
+ WKContextSetIconDatabasePath(m_context.get(), toWK(emptyString()).get());
}
+ WKContextUseTestingNetworkSession(m_context.get());
+ WKContextSetCacheModel(m_context.get(), kWKCacheModelDocumentBrowser);
+
platformInitializeContext();
- WKContextInjectedBundleClient injectedBundleClient = {
- kWKContextInjectedBundleClientCurrentVersion,
- this,
+ WKContextInjectedBundleClientV1 injectedBundleClient = {
+ { 1, this },
didReceiveMessageFromInjectedBundle,
didReceiveSynchronousMessageFromInjectedBundle,
0 // getInjectedBundleInitializationUserData
};
- WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient);
+ WKContextSetInjectedBundleClient(m_context.get(), &injectedBundleClient.base);
+
+ WKContextClientV1 contextClient = {
+ { 1, this },
+ 0, // plugInAutoStartOriginHashesChanged
+ networkProcessDidCrash,
+ 0, // plugInInformationBecameAvailable
+ 0, // copyWebCryptoMasterKey
+ };
+ WKContextSetClient(m_context.get(), &contextClient.base);
+
+ WKContextHistoryClientV0 historyClient = {
+ { 0, this },
+ didNavigateWithNavigationData,
+ didPerformClientRedirect,
+ didPerformServerRedirect,
+ didUpdateHistoryTitle,
+ 0, // populateVisitedLinks
+ };
+ WKContextSetHistoryClient(m_context.get(), &historyClient.base);
WKNotificationManagerRef notificationManager = WKContextGetNotificationManager(m_context.get());
- WKNotificationProvider notificationKit = m_webNotificationProvider.provider();
- WKNotificationManagerSetProvider(notificationManager, &notificationKit);
+ WKNotificationProviderV0 notificationKit = m_webNotificationProvider.provider();
+ WKNotificationManagerSetProvider(notificationManager, &notificationKit.base);
if (testPluginDirectory())
WKContextSetAdditionalPluginsDirectory(m_context.get(), testPluginDirectory());
- createWebViewWithOptions(0);
+ if (m_forceComplexText)
+ WKContextSetAlwaysUsesComplexTextCodePath(m_context.get(), true);
+
+ auto pageConfiguration = adoptWK(WKPageConfigurationCreate());
+ WKPageConfigurationSetContext(pageConfiguration.get(), m_context.get());
+ WKPageConfigurationSetPageGroup(pageConfiguration.get(), m_pageGroup.get());
+ WKPageConfigurationSetUserContentController(pageConfiguration.get(), adoptWK(WKUserContentControllerCreate()).get());
+ return pageConfiguration;
}
-void TestController::createWebViewWithOptions(WKDictionaryRef options)
+void TestController::createWebViewWithOptions(const TestOptions& options)
{
- m_mainWebView = adoptPtr(new PlatformWebView(m_context.get(), m_pageGroup.get(), 0, options));
- WKPageUIClient pageUIClient = {
- kWKPageUIClientCurrentVersion,
- m_mainWebView.get(),
+ auto contextConfiguration = generateContextConfiguration();
+
+ WKRetainPtr<WKMutableArrayRef> overrideLanguages = adoptWK(WKMutableArrayCreate());
+ for (auto& language : options.overrideLanguages)
+ WKArrayAppendItem(overrideLanguages.get(), adoptWK(WKStringCreateWithUTF8CString(language.utf8().data())).get());
+ WKContextConfigurationSetOverrideLanguages(contextConfiguration.get(), overrideLanguages.get());
+
+ auto configuration = generatePageConfiguration(contextConfiguration.get());
+
+ // Some preferences (notably mock scroll bars setting) currently cannot be re-applied to an existing view, so we need to set them now.
+ // FIXME: Migrate these preferences to WKContextConfigurationRef.
+ resetPreferencesToConsistentValues();
+
+ platformCreateWebView(configuration.get(), options);
+ WKPageUIClientV6 pageUIClient = {
+ { 6, m_mainWebView.get() },
0, // createNewPage_deprecatedForUseWithV0
0, // showPage
0, // close
0, // takeFocus
focus,
unfocus,
- 0, // runJavaScriptAlert
- 0, // runJavaScriptConfirm
- 0, // runJavaScriptPrompt
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
+ 0, // runJavaScriptAlert_deprecatedForUseWithV0
0, // setStatusText
0, // mouseDidMoveOverElement_deprecatedForUseWithV0
0, // missingPluginButtonClicked
@@ -429,7 +514,7 @@ void TestController::createWebViewWithOptions(WKDictionaryRef options)
runBeforeUnloadConfirmPanel,
0, // didDraw
0, // pageDidScroll
- exceededDatabaseQuota,
+ 0, // exceededDatabaseQuota,
0, // runOpenPanel
decidePolicyForGeolocationPermissionRequest,
0, // headerHeight
@@ -441,121 +526,109 @@ void TestController::createWebViewWithOptions(WKDictionaryRef options)
0, // didCompleteRubberBandForMainFrame
0, // saveDataToFileInDownloadsFolder
0, // shouldInterruptJavaScript
- createOtherPage,
+ 0, // createNewPage_deprecatedForUseWithV1
0, // mouseDidMoveOverElement
decidePolicyForNotificationPermissionRequest, // decidePolicyForNotificationPermissionRequest
0, // unavailablePluginButtonClicked_deprecatedForUseWithV1
0, // showColorPicker
0, // hideColorPicker
unavailablePluginButtonClicked,
+ 0, // pinnedStateDidChange
+ 0, // didBeginTrackingPotentialLongMousePress
+ 0, // didRecognizeLongMousePress
+ 0, // didCancelTrackingPotentialLongMousePress
+ 0, // isPlayingAudioDidChange
+ decidePolicyForUserMediaPermissionRequest,
+ 0, // didClickAutofillButton
+ 0, // runJavaScriptAlert
+ 0, // runJavaScriptConfirm
+ 0, // runJavaScriptPrompt
+ 0, // mediaSessionMetadataDidChange
+ createOtherPage,
+ 0, // runJavaScriptAlert
+ 0, // runJavaScriptConfirm
+ 0, // runJavaScriptPrompt
+ checkUserMediaPermissionForOrigin,
};
- WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient);
-
- WKPageLoaderClient pageLoaderClient = {
- kWKPageLoaderClientCurrentVersion,
- this,
- 0, // didStartProvisionalLoadForFrame
- 0, // didReceiveServerRedirectForProvisionalLoadForFrame
- 0, // didFailProvisionalLoadWithErrorForFrame
- didCommitLoadForFrame,
- 0, // didFinishDocumentLoadForFrame
- didFinishLoadForFrame,
- 0, // didFailLoadWithErrorForFrame
- 0, // didSameDocumentNavigationForFrame
- 0, // didReceiveTitleForFrame
- 0, // didFirstLayoutForFrame
- 0, // didFirstVisuallyNonEmptyLayoutForFrame
- 0, // didRemoveFrameFromHierarchy
- 0, // didFailToInitializePlugin
- 0, // didDisplayInsecureContentForFrame
- 0, // canAuthenticateAgainstProtectionSpaceInFrame
- didReceiveAuthenticationChallengeInFrame, // didReceiveAuthenticationChallengeInFrame
- 0, // didStartProgress
- 0, // didChangeProgress
- 0, // didFinishProgress
- 0, // didBecomeUnresponsive
- 0, // didBecomeResponsive
+ WKPageSetPageUIClient(m_mainWebView->page(), &pageUIClient.base);
+
+ WKPageNavigationClientV0 pageNavigationClient = {
+ { 0, this },
+ decidePolicyForNavigationAction,
+ decidePolicyForNavigationResponse,
+ decidePolicyForPluginLoad,
+ 0, // didStartProvisionalNavigation
+ 0, // didReceiveServerRedirectForProvisionalNavigation
+ 0, // didFailProvisionalNavigation
+ didCommitNavigation,
+ didFinishNavigation,
+ 0, // didFailNavigation
+ 0, // didFailProvisionalLoadInSubframe
+ 0, // didFinishDocumentLoad
+ 0, // didSameDocumentNavigation
+ 0, // renderingProgressDidChange
+ canAuthenticateAgainstProtectionSpace,
+ didReceiveAuthenticationChallenge,
processDidCrash,
- 0, // didChangeBackForwardList
- 0, // shouldGoToBackForwardListItem
- 0, // didRunInsecureContentForFrame
- 0, // didDetectXSSForFrame
- 0, // didNewFirstVisuallyNonEmptyLayout
- 0, // willGoToBackForwardListItem
- 0, // interactionOccurredWhileProcessUnresponsive
- 0, // pluginDidFail_deprecatedForUseWithV1
- 0, // didReceiveIntentForFrame
- 0, // registerIntentServiceForFrame
- 0, // didLayout
- 0, // pluginLoadPolicy_deprecatedForUseWithV2
- 0, // pluginDidFail
- pluginLoadPolicy, // pluginLoadPolicy
+ copyWebCryptoMasterKey,
+ didBeginNavigationGesture,
+ willEndNavigationGesture,
+ didEndNavigationGesture,
+ didRemoveNavigationGestureSnapshot
};
- WKPageSetPageLoaderClient(m_mainWebView->page(), &pageLoaderClient);
+ WKPageSetPageNavigationClient(m_mainWebView->page(), &pageNavigationClient.base);
- WKPagePolicyClient pagePolicyClient = {
- kWKPagePolicyClientCurrentVersion,
- this,
- decidePolicyForNavigationAction,
- 0, // decidePolicyForNewWindowAction
- decidePolicyForResponse,
- 0, // unableToImplementPolicy
+
+ // this should just be done on the page?
+ WKPageInjectedBundleClientV0 injectedBundleClient = {
+ { 0, this },
+ didReceivePageMessageFromInjectedBundle,
+ didReceiveSynchronousPageMessageFromInjectedBundle
};
- WKPageSetPagePolicyClient(m_mainWebView->page(), &pagePolicyClient);
+ WKPageSetPageInjectedBundleClient(m_mainWebView->page(), &injectedBundleClient.base);
m_mainWebView->didInitializeClients();
-}
-void TestController::ensureViewSupportsOptions(WKDictionaryRef options)
-{
- if (m_mainWebView && !m_mainWebView->viewSupportsOptions(options)) {
- WKPageSetPageUIClient(m_mainWebView->page(), 0);
- WKPageSetPageLoaderClient(m_mainWebView->page(), 0);
- WKPageSetPagePolicyClient(m_mainWebView->page(), 0);
- WKPageClose(m_mainWebView->page());
-
- m_mainWebView = nullptr;
-
- createWebViewWithOptions(options);
- resetStateToConsistentValues();
- }
+ // Generally, the tests should default to running at 1x. updateWindowScaleForTest() will adjust the scale to
+ // something else for specific tests that need to run at a different window scale.
+ m_mainWebView->changeWindowScaleIfNeeded(1);
}
-bool TestController::resetStateToConsistentValues()
+void TestController::ensureViewSupportsOptionsForTest(const TestInvocation& test)
{
- m_state = Resetting;
-
- m_beforeUnloadReturnValue = true;
-
- WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("Reset"));
- WKRetainPtr<WKMutableDictionaryRef> resetMessageBody = adoptWK(WKMutableDictionaryCreate());
-
- WKRetainPtr<WKStringRef> shouldGCKey = adoptWK(WKStringCreateWithUTF8CString("ShouldGC"));
- WKRetainPtr<WKBooleanRef> shouldGCValue = adoptWK(WKBooleanCreate(m_gcBetweenTests));
- WKDictionaryAddItem(resetMessageBody.get(), shouldGCKey.get(), shouldGCValue.get());
+ auto options = test.options();
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), resetMessageBody.get());
+ if (m_mainWebView) {
+ if (m_mainWebView->viewSupportsOptions(options))
+ return;
- WKContextSetShouldUseFontSmoothing(TestController::shared().context(), false);
+ WKPageSetPageUIClient(m_mainWebView->page(), nullptr);
+ WKPageSetPageNavigationClient(m_mainWebView->page(), nullptr);
+ WKPageClose(m_mainWebView->page());
- WKContextSetCacheModel(TestController::shared().context(), kWKCacheModelDocumentBrowser);
+ m_mainWebView = nullptr;
+ }
- // FIXME: This function should also ensure that there is only one page open.
+ createWebViewWithOptions(options);
- // Reset the EventSender for each test.
-#if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
- m_eventSenderProxy = adoptPtr(new EventSenderProxy(this));
-#endif
+ if (!resetStateToConsistentValues())
+ TestInvocation::dumpWebProcessUnresponsiveness("<unknown> - TestController::run - Failed to reset state to consistent values\n");
+}
+void TestController::resetPreferencesToConsistentValues()
+{
// Reset preferences
- WKPreferencesRef preferences = WKPageGroupGetPreferences(m_pageGroup.get());
+ WKPreferencesRef preferences = platformPreferences();
WKPreferencesResetTestRunnerOverrides(preferences);
+ WKPreferencesSetPageVisibilityBasedProcessSuppressionEnabled(preferences, false);
WKPreferencesSetOfflineWebApplicationCacheEnabled(preferences, true);
WKPreferencesSetFontSmoothingLevel(preferences, kWKFontSmoothingLevelNoSubpixelAntiAliasing);
+ WKPreferencesSetAntialiasedFontDilationEnabled(preferences, false);
WKPreferencesSetXSSAuditorEnabled(preferences, false);
WKPreferencesSetWebAudioEnabled(preferences, true);
+ WKPreferencesSetMediaStreamEnabled(preferences, true);
WKPreferencesSetDeveloperExtrasEnabled(preferences, true);
- WKPreferencesSetJavaScriptExperimentsEnabled(preferences, true);
+ WKPreferencesSetJavaScriptRuntimeFlags(preferences, kWKJavaScriptRuntimeFlagsAllEnabled);
WKPreferencesSetJavaScriptCanOpenWindowsAutomatically(preferences, true);
WKPreferencesSetJavaScriptCanAccessClipboard(preferences, true);
WKPreferencesSetDOMPasteAllowed(preferences, true);
@@ -572,6 +645,9 @@ bool TestController::resetStateToConsistentValues()
WKPreferencesSetInteractiveFormValidationEnabled(preferences, true);
WKPreferencesSetMockScrollbarsEnabled(preferences, true);
+ static WKStringRef defaultTextEncoding = WKStringCreateWithUTF8CString("ISO-8859-1");
+ WKPreferencesSetDefaultTextEncodingName(preferences, defaultTextEncoding);
+
#if !PLATFORM(QT)
static WKStringRef standardFontFamily = WKStringCreateWithUTF8CString("Times");
static WKStringRef cursiveFontFamily = WKStringCreateWithUTF8CString("Apple Chancery");
@@ -589,20 +665,81 @@ bool TestController::resetStateToConsistentValues()
WKPreferencesSetSansSerifFontFamily(preferences, sansSerifFontFamily);
WKPreferencesSetSerifFontFamily(preferences, serifFontFamily);
#endif
- WKPreferencesSetScreenFontSubstitutionEnabled(preferences, true);
- WKPreferencesSetInspectorUsesWebKitUserInterface(preferences, true);
WKPreferencesSetAsynchronousSpellCheckingEnabled(preferences, false);
-#if !PLATFORM(MAC)
+#if ENABLE(WEB_AUDIO)
+ WKPreferencesSetMediaSourceEnabled(preferences, true);
+#endif
+
+ WKPreferencesSetHiddenPageDOMTimerThrottlingEnabled(preferences, false);
+ WKPreferencesSetHiddenPageCSSAnimationSuspensionEnabled(preferences, false);
+
+ WKPreferencesSetAcceleratedDrawingEnabled(preferences, m_shouldUseAcceleratedDrawing);
+ // FIXME: We should be testing the default.
+ WKPreferencesSetStorageBlockingPolicy(preferences, kWKAllowAllStorage);
+
+ WKPreferencesSetMediaPlaybackAllowsInline(preferences, true);
+ WKPreferencesSetInlineMediaPlaybackRequiresPlaysInlineAttribute(preferences, false);
+
+ WKCookieManagerDeleteAllCookies(WKContextGetCookieManager(m_context.get()));
+
+ platformResetPreferencesToConsistentValues();
+}
+
+bool TestController::resetStateToConsistentValues()
+{
+ TemporaryChange<State> changeState(m_state, Resetting);
+ m_beforeUnloadReturnValue = true;
+
+ // This setting differs between the antique and modern Mac WebKit2 API.
+ // For now, maintain the antique behavior, because some tests depend on it!
+ // FIXME: We should be testing the default.
+ WKPageSetBackgroundExtendsBeyondPage(m_mainWebView->page(), false);
+
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("Reset"));
+ WKRetainPtr<WKMutableDictionaryRef> resetMessageBody = adoptWK(WKMutableDictionaryCreate());
+
+ WKRetainPtr<WKStringRef> shouldGCKey = adoptWK(WKStringCreateWithUTF8CString("ShouldGC"));
+ WKRetainPtr<WKBooleanRef> shouldGCValue = adoptWK(WKBooleanCreate(m_gcBetweenTests));
+ WKDictionarySetItem(resetMessageBody.get(), shouldGCKey.get(), shouldGCValue.get());
+
+ WKRetainPtr<WKStringRef> allowedHostsKey = adoptWK(WKStringCreateWithUTF8CString("AllowedHosts"));
+ WKRetainPtr<WKMutableArrayRef> allowedHostsValue = adoptWK(WKMutableArrayCreate());
+ for (auto& host : m_allowedHosts) {
+ WKRetainPtr<WKStringRef> wkHost = adoptWK(WKStringCreateWithUTF8CString(host.c_str()));
+ WKArrayAppendItem(allowedHostsValue.get(), wkHost.get());
+ }
+ WKDictionarySetItem(resetMessageBody.get(), allowedHostsKey.get(), allowedHostsValue.get());
+
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), resetMessageBody.get());
+
+ WKContextSetShouldUseFontSmoothing(TestController::singleton().context(), false);
+
+ WKContextSetCacheModel(TestController::singleton().context(), kWKCacheModelDocumentBrowser);
+
+ WKContextClearCachedCredentials(TestController::singleton().context());
+
+ // FIXME: This function should also ensure that there is only one page open.
+
+ // Reset the EventSender for each test.
+ m_eventSenderProxy = std::make_unique<EventSenderProxy>(this);
+
+ // FIXME: Is this needed? Nothing in TestController changes preferences during tests, and if there is
+ // some other code doing this, it should probably be responsible for cleanup too.
+ resetPreferencesToConsistentValues();
+
+#if !PLATFORM(COCOA)
WKTextCheckerContinuousSpellCheckingEnabledStateChanged(true);
#endif
- // in the case that a test using the chrome input field failed, be sure to clean up for the next test
+ // In the case that a test using the chrome input field failed, be sure to clean up for the next test.
m_mainWebView->removeChromeInputField();
m_mainWebView->focus();
// Re-set to the default backing scale factor by setting the custom scale factor to 0.
WKPageSetCustomBackingScaleFactor(m_mainWebView->page(), 0);
+ WKPageClearWheelEventTestTrigger(m_mainWebView->page());
+
#if PLATFORM(EFL)
// EFL use a real window while other ports such as Qt don't.
// In EFL, we need to resize the window to the original size after calls to window.resizeTo.
@@ -618,6 +755,12 @@ bool TestController::resetStateToConsistentValues()
m_isGeolocationPermissionSet = false;
m_isGeolocationPermissionAllowed = false;
+ // Reset UserMedia permissions.
+ m_userMediaPermissionRequests.clear();
+ m_userMediaOriginPermissions = nullptr;
+ m_isUserMediaPermissionSet = false;
+ m_isUserMediaPermissionAllowed = false;
+
// Reset Custom Policy Delegate.
setCustomPolicyDelegate(false, false);
@@ -629,14 +772,200 @@ bool TestController::resetStateToConsistentValues()
m_shouldBlockAllPlugins = false;
+ m_shouldLogHistoryClientCallbacks = false;
+
+ setHidden(false);
+
+ platformResetStateToConsistentValues();
+
// Reset main page back to about:blank
m_doneResetting = false;
+ m_shouldDecideNavigationPolicyAfterDelay = false;
+
+ setNavigationGesturesEnabled(false);
+
WKPageLoadURL(m_mainWebView->page(), blankURL());
- runUntil(m_doneResetting, ShortTimeout);
+ runUntil(m_doneResetting, shortTimeout);
return m_doneResetting;
}
+void TestController::terminateWebContentProcess()
+{
+ WKPageTerminate(m_mainWebView->page());
+}
+
+void TestController::reattachPageToWebProcess()
+{
+ // Loading a web page is the only way to reattach an existing page to a process.
+ m_doneResetting = false;
+ WKPageLoadURL(m_mainWebView->page(), blankURL());
+ runUntil(m_doneResetting, shortTimeout);
+}
+
+const char* TestController::webProcessName()
+{
+ // FIXME: Find a way to not hardcode the process name.
+#if PLATFORM(COCOA)
+ return "com.apple.WebKit.WebContent.Development";
+#else
+ return "WebProcess";
+#endif
+}
+
+const char* TestController::networkProcessName()
+{
+ // FIXME: Find a way to not hardcode the process name.
+#if PLATFORM(COCOA)
+ return "com.apple.WebKit.Networking.Development";
+#else
+ return "NetworkProcess";
+#endif
+}
+
+static std::string testPath(WKURLRef url)
+{
+ auto scheme = adoptWK(WKURLCopyScheme(url));
+ if (WKStringIsEqualToUTF8CStringIgnoringCase(scheme.get(), "file")) {
+ auto path = adoptWK(WKURLCopyPath(url));
+ auto buffer = std::vector<char>(WKStringGetMaximumUTF8CStringSize(path.get()));
+ auto length = WKStringGetUTF8CString(path.get(), buffer.data(), buffer.size());
+ return std::string(buffer.data(), length);
+ }
+ return std::string();
+}
+
+static WKURLRef createTestURL(const char* pathOrURL)
+{
+ if (strstr(pathOrURL, "http://") || strstr(pathOrURL, "https://") || strstr(pathOrURL, "file://"))
+ return WKURLCreateWithUTF8CString(pathOrURL);
+
+ // Creating from filesytem path.
+ size_t length = strlen(pathOrURL);
+ if (!length)
+ return 0;
+
+ const char separator = '/';
+ bool isAbsolutePath = pathOrURL[0] == separator;
+ const char* filePrefix = "file://";
+ static const size_t prefixLength = strlen(filePrefix);
+
+ std::unique_ptr<char[]> buffer;
+ if (isAbsolutePath) {
+ buffer = std::make_unique<char[]>(prefixLength + length + 1);
+ strcpy(buffer.get(), filePrefix);
+ strcpy(buffer.get() + prefixLength, pathOrURL);
+ } else {
+ buffer = std::make_unique<char[]>(prefixLength + PATH_MAX + length + 2); // 1 for the separator
+ strcpy(buffer.get(), filePrefix);
+ if (!getcwd(buffer.get() + prefixLength, PATH_MAX))
+ return 0;
+ size_t numCharacters = strlen(buffer.get());
+ buffer[numCharacters] = separator;
+ strcpy(buffer.get() + numCharacters + 1, pathOrURL);
+ }
+
+ return WKURLCreateWithUTF8CString(buffer.get());
+}
+
+static bool parseBooleanTestHeaderValue(const std::string& value)
+{
+ if (value == "true")
+ return true;
+ if (value == "false")
+ return false;
+
+ LOG_ERROR("Found unexpected value '%s' for boolean option. Expected 'true' or 'false'.", value.c_str());
+ return false;
+}
+
+static void updateTestOptionsFromTestHeader(TestOptions& testOptions, const std::string& pathOrURL)
+{
+ // Gross. Need to reduce conversions between all the string types and URLs.
+ WKRetainPtr<WKURLRef> wkURL(AdoptWK, createTestURL(pathOrURL.c_str()));
+ std::string filename = testPath(wkURL.get());
+ if (filename.empty())
+ return;
+
+ std::string options;
+ std::ifstream testFile(filename.data());
+ if (!testFile.good())
+ return;
+ getline(testFile, options);
+ std::string beginString("webkit-test-runner [ ");
+ std::string endString(" ]");
+ size_t beginLocation = options.find(beginString);
+ if (beginLocation == std::string::npos)
+ return;
+ size_t endLocation = options.find(endString, beginLocation);
+ if (endLocation == std::string::npos) {
+ LOG_ERROR("Could not find end of test header in %s", filename.c_str());
+ return;
+ }
+ std::string pairString = options.substr(beginLocation + beginString.size(), endLocation - (beginLocation + beginString.size()));
+ size_t pairStart = 0;
+ while (pairStart < pairString.size()) {
+ size_t pairEnd = pairString.find(" ", pairStart);
+ if (pairEnd == std::string::npos)
+ pairEnd = pairString.size();
+ size_t equalsLocation = pairString.find("=", pairStart);
+ if (equalsLocation == std::string::npos) {
+ LOG_ERROR("Malformed option in test header (could not find '=' character) in %s", filename.c_str());
+ break;
+ }
+ auto key = pairString.substr(pairStart, equalsLocation - pairStart);
+ auto value = pairString.substr(equalsLocation + 1, pairEnd - (equalsLocation + 1));
+ if (key == "language")
+ String(value.c_str()).split(",", false, testOptions.overrideLanguages);
+ if (key == "useThreadedScrolling")
+ testOptions.useThreadedScrolling = parseBooleanTestHeaderValue(value);
+ if (key == "useFlexibleViewport")
+ testOptions.useFlexibleViewport = parseBooleanTestHeaderValue(value);
+ if (key == "useDataDetection")
+ testOptions.useDataDetection = parseBooleanTestHeaderValue(value);
+ pairStart = pairEnd + 1;
+ }
+}
+
+TestOptions TestController::testOptionsForTest(const std::string& pathOrURL) const
+{
+ TestOptions options(pathOrURL);
+
+ options.useRemoteLayerTree = m_shouldUseRemoteLayerTree;
+ options.shouldShowWebView = m_shouldShowWebView;
+
+ updatePlatformSpecificTestOptionsForTest(options, pathOrURL);
+ updateTestOptionsFromTestHeader(options, pathOrURL);
+
+ return options;
+}
+
+void TestController::updateWebViewSizeForTest(const TestInvocation& test)
+{
+ unsigned width = viewWidth;
+ unsigned height = viewHeight;
+ if (test.options().isSVGTest) {
+ width = w3cSVGViewWidth;
+ height = w3cSVGViewHeight;
+ }
+
+ mainWebView()->resizeTo(width, height);
+}
+
+void TestController::updateWindowScaleForTest(PlatformWebView* view, const TestInvocation& test)
+{
+ view->changeWindowScaleIfNeeded(test.options().isHiDPITest ? 2 : 1);
+}
+
+void TestController::configureViewForTest(const TestInvocation& test)
+{
+ ensureViewSupportsOptionsForTest(test);
+ updateWebViewSizeForTest(test);
+ updateWindowScaleForTest(mainWebView(), test);
+
+ platformConfigureViewForTest(test);
+}
+
struct TestCommand {
TestCommand() : shouldDumpPixels(false), timeout(0) { }
@@ -727,15 +1056,21 @@ bool TestController::runTest(const char* inputLine)
TestCommand command = parseInputLine(std::string(inputLine));
m_state = RunningTest;
+
+ TestOptions options = testOptionsForTest(command.pathOrURL);
+
+ WKRetainPtr<WKURLRef> wkURL(AdoptWK, createTestURL(command.pathOrURL.c_str()));
+ m_currentInvocation = std::make_unique<TestInvocation>(wkURL.get(), options);
- m_currentInvocation = adoptPtr(new TestInvocation(command.pathOrURL));
if (command.shouldDumpPixels || m_shouldDumpPixelsForAllTests)
m_currentInvocation->setIsPixelTest(command.expectedPixelHash);
if (command.timeout > 0)
m_currentInvocation->setCustomTimeout(command.timeout);
+ platformWillRunTest(*m_currentInvocation);
+
m_currentInvocation->invoke();
- m_currentInvocation.clear();
+ m_currentInvocation = nullptr;
return true;
}
@@ -758,11 +1093,6 @@ void TestController::runTestingServerLoop()
void TestController::run()
{
- if (!resetStateToConsistentValues()) {
- TestInvocation::dumpWebProcessUnresponsiveness("<unknown> - TestController::run - Failed to reset state to consistent values\n");
- return;
- }
-
if (m_usingServerMode)
runTestingServerLoop();
else {
@@ -773,26 +1103,10 @@ void TestController::run()
}
}
-void TestController::runUntil(bool& done, TimeoutDuration timeoutDuration)
+void TestController::runUntil(bool& done, double timeout)
{
- double timeout = m_noTimeout;
- if (!m_forceNoTimeout) {
- switch (timeoutDuration) {
- case ShortTimeout:
- timeout = m_shortTimeout;
- break;
- case LongTimeout:
- timeout = m_longTimeout;
- break;
- case CustomTimeout:
- timeout = m_timeout;
- break;
- case NoTimeout:
- default:
- timeout = m_noTimeout;
- break;
- }
- }
+ if (m_forceNoTimeout)
+ timeout = noTimeout;
platformRunUntil(done, timeout);
}
@@ -809,6 +1123,23 @@ void TestController::didReceiveSynchronousMessageFromInjectedBundle(WKContextRef
*returnData = static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody).leakRef();
}
+// WKPageInjectedBundleClient
+
+void TestController::didReceivePageMessageFromInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, const void* clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveMessageFromInjectedBundle(messageName, messageBody);
+}
+
+void TestController::didReceiveSynchronousPageMessageFromInjectedBundle(WKPageRef page, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void* clientInfo)
+{
+ *returnData = static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody).leakRef();
+}
+
+void TestController::networkProcessDidCrash(WKContextRef context, const void *clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->networkProcessDidCrash();
+}
+
void TestController::didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous)
{
WKRetainPtr<WKStringRef> keyKey = adoptWK(WKStringCreateWithUTF8CString("Key"));
@@ -820,19 +1151,15 @@ void TestController::didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef
WKRetainPtr<WKStringRef> locationKey = adoptWK(WKStringCreateWithUTF8CString("Location"));
unsigned location = static_cast<unsigned>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, locationKey.get()))));
- if (synchronous)
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
-
m_eventSenderProxy->keyDown(key, modifiers, location);
-
- if (synchronous)
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
}
void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody)
{
-#if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
if (WKStringIsEqualToUTF8CString(messageName, "EventSender")) {
+ if (m_state != RunningTest)
+ return;
+
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
@@ -847,7 +1174,6 @@ void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKEventModifiers modifiers = static_cast<WKEventModifiers>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, modifiersKey.get()))));
// Forward to WebProcess
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
if (WKStringIsEqualToUTF8CString(subMessageName, "MouseDown"))
m_eventSenderProxy->mouseDown(button, modifiers);
else
@@ -862,9 +1188,55 @@ void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName
return;
}
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseScrollBy")) {
+ WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
+ double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
+
+ WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
+ double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
+
+ // Forward to WebProcess
+ m_eventSenderProxy->mouseScrollBy(x, y);
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseScrollByWithWheelAndMomentumPhases")) {
+ WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
+ double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
+
+ WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
+ double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
+
+ WKRetainPtr<WKStringRef> phaseKey = adoptWK(WKStringCreateWithUTF8CString("Phase"));
+ int phase = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, phaseKey.get()))));
+ WKRetainPtr<WKStringRef> momentumKey = adoptWK(WKStringCreateWithUTF8CString("Momentum"));
+ int momentum = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, momentumKey.get()))));
+
+ // Forward to WebProcess
+ m_eventSenderProxy->mouseScrollByWithWheelAndMomentumPhases(x, y, phase, momentum);
+
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(subMessageName, "SwipeGestureWithWheelAndMomentumPhases")) {
+ WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
+ double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
+
+ WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
+ double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
+
+ WKRetainPtr<WKStringRef> phaseKey = adoptWK(WKStringCreateWithUTF8CString("Phase"));
+ int phase = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, phaseKey.get()))));
+ WKRetainPtr<WKStringRef> momentumKey = adoptWK(WKStringCreateWithUTF8CString("Momentum"));
+ int momentum = static_cast<int>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, momentumKey.get()))));
+
+ m_eventSenderProxy->swipeGestureWithWheelAndMomentumPhases(x, y, phase, momentum);
+
+ return;
+ }
+
ASSERT_NOT_REACHED();
}
-#endif
if (!m_currentInvocation)
return;
@@ -874,8 +1246,10 @@ void TestController::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody)
{
-#if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
if (WKStringIsEqualToUTF8CString(messageName, "EventSender")) {
+ if (m_state != RunningTest)
+ return nullptr;
+
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
@@ -896,12 +1270,10 @@ WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedB
WKEventModifiers modifiers = static_cast<WKEventModifiers>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, modifiersKey.get()))));
// Forward to WebProcess
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
if (WKStringIsEqualToUTF8CString(subMessageName, "MouseDown"))
m_eventSenderProxy->mouseDown(button, modifiers);
else
m_eventSenderProxy->mouseUp(button, modifiers);
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
@@ -913,26 +1285,40 @@ WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedB
double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
// Forward to WebProcess
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->mouseMoveTo(x, y);
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
- if (WKStringIsEqualToUTF8CString(subMessageName, "MouseScrollBy")) {
- WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
- double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
+#if PLATFORM(MAC)
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseForceClick")) {
+ m_eventSenderProxy->mouseForceClick();
+ return 0;
+ }
- WKRetainPtr<WKStringRef> yKey = adoptWK(WKStringCreateWithUTF8CString("Y"));
- double y = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, yKey.get())));
+ if (WKStringIsEqualToUTF8CString(subMessageName, "StartAndCancelMouseForceClick")) {
+ m_eventSenderProxy->startAndCancelMouseForceClick();
+ return 0;
+ }
- // Forward to WebProcess
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
- m_eventSenderProxy->mouseScrollBy(x, y);
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseForceDown")) {
+ m_eventSenderProxy->mouseForceDown();
+ return 0;
+ }
+
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseForceUp")) {
+ m_eventSenderProxy->mouseForceUp();
return 0;
}
+ if (WKStringIsEqualToUTF8CString(subMessageName, "MouseForceChanged")) {
+ WKRetainPtr<WKStringRef> forceKey = adoptWK(WKStringCreateWithUTF8CString("Force"));
+ double force = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, forceKey.get())));
+
+ m_eventSenderProxy->mouseForceChanged(force);
+ return 0;
+ }
+#endif // PLATFORM(MAC)
+
if (WKStringIsEqualToUTF8CString(subMessageName, "ContinuousMouseScrollBy")) {
WKRetainPtr<WKStringRef> xKey = adoptWK(WKStringCreateWithUTF8CString("X"));
double x = WKDoubleGetValue(static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, xKey.get())));
@@ -944,9 +1330,7 @@ WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedB
bool paged = static_cast<bool>(WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, pagedKey.get()))));
// Forward to WebProcess
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->continuousMouseScrollBy(x, y, paged);
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
@@ -1007,30 +1391,22 @@ WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedB
}
if (WKStringIsEqualToUTF8CString(subMessageName, "TouchStart")) {
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->touchStart();
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
if (WKStringIsEqualToUTF8CString(subMessageName, "TouchMove")) {
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->touchMove();
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
if (WKStringIsEqualToUTF8CString(subMessageName, "TouchEnd")) {
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->touchEnd();
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
if (WKStringIsEqualToUTF8CString(subMessageName, "TouchCancel")) {
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), true);
m_eventSenderProxy->touchCancel();
- WKPageSetShouldSendEventsSynchronously(mainWebView()->page(), false);
return 0;
}
@@ -1055,25 +1431,49 @@ WKRetainPtr<WKTypeRef> TestController::didReceiveSynchronousMessageFromInjectedB
#endif
ASSERT_NOT_REACHED();
}
-#endif
return m_currentInvocation->didReceiveSynchronousMessageFromInjectedBundle(messageName, messageBody);
}
-// WKPageLoaderClient
+// WKContextClient
+
+void TestController::networkProcessDidCrash()
+{
+#if PLATFORM(COCOA)
+ pid_t pid = WKContextGetNetworkProcessIdentifier(m_context.get());
+ fprintf(stderr, "#CRASHED - %s (pid %ld)\n", networkProcessName(), static_cast<long>(pid));
+#else
+ fprintf(stderr, "#CRASHED - %s\n", networkProcessName());
+#endif
+ exit(1);
+}
+
+// WKPageNavigationClient
-void TestController::didCommitLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void* clientInfo)
+void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->didCommitLoadForFrame(page, frame);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didCommitNavigation(page, navigation);
}
-void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame, WKTypeRef, const void* clientInfo)
+void TestController::didFinishNavigation(WKPageRef page, WKNavigationRef navigation, WKTypeRef, const void* clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->didFinishLoadForFrame(page, frame);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didFinishNavigation(page, navigation);
}
-void TestController::didReceiveAuthenticationChallengeInFrame(WKPageRef page, WKFrameRef frame, WKAuthenticationChallengeRef authenticationChallenge, const void *clientInfo)
+bool TestController::canAuthenticateAgainstProtectionSpace(WKPageRef, WKProtectionSpaceRef protectionSpace, const void*)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveAuthenticationChallengeInFrame(page, frame, authenticationChallenge);
+ WKProtectionSpaceAuthenticationScheme authenticationScheme = WKProtectionSpaceGetAuthenticationScheme(protectionSpace);
+
+ if (authenticationScheme == kWKProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested) {
+ std::string host = toSTD(adoptWK(WKProtectionSpaceCopyHost(protectionSpace)).get());
+ return host == "localhost" || host == "127.0.0.1";
+ }
+
+ return authenticationScheme <= kWKProtectionSpaceAuthenticationSchemeHTTPDigest;
+}
+
+void TestController::didReceiveAuthenticationChallenge(WKPageRef page, WKAuthenticationChallengeRef authenticationChallenge, const void *clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didReceiveAuthenticationChallenge(page, /*frame,*/ authenticationChallenge);
}
void TestController::processDidCrash(WKPageRef page, const void* clientInfo)
@@ -1081,52 +1481,94 @@ void TestController::processDidCrash(WKPageRef page, const void* clientInfo)
static_cast<TestController*>(const_cast<void*>(clientInfo))->processDidCrash();
}
-WKPluginLoadPolicy TestController::pluginLoadPolicy(WKPageRef page, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo)
+void TestController::didBeginNavigationGesture(WKPageRef page, const void *clientInfo)
{
- return static_cast<TestController*>(const_cast<void*>(clientInfo))->pluginLoadPolicy(page, currentPluginLoadPolicy, pluginInformation, unavailabilityDescription);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didBeginNavigationGesture(page);
}
-WKPluginLoadPolicy TestController::pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription)
+void TestController::willEndNavigationGesture(WKPageRef page, WKBackForwardListItemRef backForwardListItem, const void *clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->willEndNavigationGesture(page, backForwardListItem);
+}
+
+void TestController::didEndNavigationGesture(WKPageRef page, WKBackForwardListItemRef backForwardListItem, const void *clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didEndNavigationGesture(page, backForwardListItem);
+}
+
+void TestController::didRemoveNavigationGestureSnapshot(WKPageRef page, const void *clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didRemoveNavigationGestureSnapshot(page);
+}
+
+WKPluginLoadPolicy TestController::decidePolicyForPluginLoad(WKPageRef page, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo)
+{
+ return static_cast<TestController*>(const_cast<void*>(clientInfo))->decidePolicyForPluginLoad(page, currentPluginLoadPolicy, pluginInformation, unavailabilityDescription);
+}
+
+WKPluginLoadPolicy TestController::decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription)
{
if (m_shouldBlockAllPlugins)
return kWKPluginLoadPolicyBlocked;
+
+#if PLATFORM(MAC)
+ WKStringRef bundleIdentifier = (WKStringRef)WKDictionaryGetItemForKey(pluginInformation, WKPluginInformationBundleIdentifierKey());
+ if (!bundleIdentifier)
+ return currentPluginLoadPolicy;
+
+ if (WKStringIsEqualToUTF8CString(bundleIdentifier, "com.apple.QuickTime Plugin.plugin"))
+ return currentPluginLoadPolicy;
+
+ if (WKStringIsEqualToUTF8CString(bundleIdentifier, "com.apple.testnetscapeplugin"))
+ return currentPluginLoadPolicy;
+
+ RELEASE_ASSERT_NOT_REACHED(); // Please don't use any other plug-ins in tests, as they will not be installed on all machines.
+#else
return currentPluginLoadPolicy;
+#endif
}
-void TestController::didCommitLoadForFrame(WKPageRef page, WKFrameRef frame)
+void TestController::didCommitNavigation(WKPageRef page, WKNavigationRef navigation)
{
- if (!WKFrameIsMainFrame(frame))
- return;
-
mainWebView()->focus();
}
-void TestController::didFinishLoadForFrame(WKPageRef page, WKFrameRef frame)
+void TestController::didFinishNavigation(WKPageRef page, WKNavigationRef navigation)
{
if (m_state != Resetting)
return;
- if (!WKFrameIsMainFrame(frame))
- return;
-
- WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKFrameCopyURL(frame));
+ WKRetainPtr<WKURLRef> wkURL(AdoptWK, WKFrameCopyURL(WKPageGetMainFrame(page)));
if (!WKURLIsEqual(wkURL.get(), blankURL()))
return;
m_doneResetting = true;
- shared().notifyDone();
+ singleton().notifyDone();
}
-void TestController::didReceiveAuthenticationChallengeInFrame(WKPageRef page, WKFrameRef frame, WKAuthenticationChallengeRef authenticationChallenge)
+void TestController::didReceiveAuthenticationChallenge(WKPageRef page, WKAuthenticationChallengeRef authenticationChallenge)
{
- String message;
+ WKProtectionSpaceRef protectionSpace = WKAuthenticationChallengeGetProtectionSpace(authenticationChallenge);
+ WKAuthenticationDecisionListenerRef decisionListener = WKAuthenticationChallengeGetDecisionListener(authenticationChallenge);
+
+ if (WKProtectionSpaceGetAuthenticationScheme(protectionSpace) == kWKProtectionSpaceAuthenticationSchemeServerTrustEvaluationRequested) {
+ // Any non-empty credential signals to accept the server trust. Since the cross-platform API
+ // doesn't expose a way to create a credential from server trust, we use a password credential.
+
+ WKRetainPtr<WKCredentialRef> credential = adoptWK(WKCredentialCreate(toWK("accept server trust").get(), toWK("").get(), kWKCredentialPersistenceNone));
+ WKAuthenticationDecisionListenerUseCredential(decisionListener, credential.get());
+ return;
+ }
+
+ std::string host = toSTD(adoptWK(WKProtectionSpaceCopyHost(protectionSpace)).get());
+ int port = WKProtectionSpaceGetPort(protectionSpace);
+ String message = String::format("%s:%d - didReceiveAuthenticationChallenge - ", host.c_str(), port);
if (!m_handlesAuthenticationChallenges)
- message = "<unknown> - didReceiveAuthenticationChallenge - Simulating cancelled authentication sheet\n";
+ message.append("Simulating cancelled authentication sheet\n");
else
- message = String::format("<unknown> - didReceiveAuthenticationChallenge - Responding with %s:%s\n", m_authenticationUsername.utf8().data(), m_authenticationPassword.utf8().data());
+ message.append(String::format("Responding with %s:%s\n", m_authenticationUsername.utf8().data(), m_authenticationPassword.utf8().data()));
m_currentInvocation->outputText(message);
- WKAuthenticationDecisionListenerRef decisionListener = WKAuthenticationChallengeGetDecisionListener(authenticationChallenge);
if (!m_handlesAuthenticationChallenges) {
WKAuthenticationDecisionListenerUseCredential(decisionListener, 0);
return;
@@ -1142,11 +1584,11 @@ void TestController::processDidCrash()
// This function can be called multiple times when crash logs are being saved on Windows, so
// ensure we only print the crashed message once.
if (!m_didPrintWebProcessCrashedMessage) {
-#if PLATFORM(MAC)
+#if PLATFORM(COCOA)
pid_t pid = WKPageGetProcessIdentifier(m_mainWebView->page());
- fprintf(stderr, "#CRASHED - WebProcess (pid %ld)\n", static_cast<long>(pid));
+ fprintf(stderr, "#CRASHED - %s (pid %ld)\n", webProcessName(), static_cast<long>(pid));
#else
- fputs("#CRASHED - WebProcess\n", stderr);
+ fprintf(stderr, "#CRASHED - %s\n", webProcessName());
#endif
fflush(stderr);
m_didPrintWebProcessCrashedMessage = true;
@@ -1156,6 +1598,26 @@ void TestController::processDidCrash()
exit(1);
}
+void TestController::didBeginNavigationGesture(WKPageRef)
+{
+ m_currentInvocation->didBeginSwipe();
+}
+
+void TestController::willEndNavigationGesture(WKPageRef, WKBackForwardListItemRef)
+{
+ m_currentInvocation->willEndSwipe();
+}
+
+void TestController::didEndNavigationGesture(WKPageRef, WKBackForwardListItemRef)
+{
+ m_currentInvocation->didEndSwipe();
+}
+
+void TestController::didRemoveNavigationGestureSnapshot(WKPageRef)
+{
+ m_currentInvocation->didRemoveSwipeSnapshot();
+}
+
void TestController::simulateWebNotificationClick(uint64_t notificationID)
{
m_webNotificationProvider.simulateWebNotificationClick(notificationID);
@@ -1184,15 +1646,97 @@ void TestController::handleGeolocationPermissionRequest(WKGeolocationPermissionR
decidePolicyForGeolocationPermissionRequestIfPossible();
}
-void TestController::setCustomPolicyDelegate(bool enabled, bool permissive)
+bool TestController::isGeolocationProviderActive() const
{
- m_policyDelegateEnabled = enabled;
- m_policyDelegatePermissive = permissive;
+ return m_geolocationProvider->isActive();
+}
+
+static WKStringRef originUserVisibleName(WKSecurityOriginRef origin)
+{
+ std::string host = toSTD(adoptWK(WKSecurityOriginCopyHost(origin))).c_str();
+ std::string protocol = toSTD(adoptWK(WKSecurityOriginCopyProtocol(origin))).c_str();
+ unsigned short port = WKSecurityOriginGetPort(origin);
+
+ String userVisibleName;
+ if (port)
+ userVisibleName = String::format("%s://%s:%d", protocol.c_str(), host.c_str(), port);
+ else
+ userVisibleName = String::format("%s://%s", protocol.c_str(), host.c_str());
+
+ return WKStringCreateWithUTF8CString(userVisibleName.utf8().data());
}
-void TestController::setVisibilityState(WKPageVisibilityState visibilityState, bool isInitialState)
+void TestController::setUserMediaPermission(bool enabled)
{
- WKPageSetVisibilityState(m_mainWebView->page(), visibilityState, isInitialState);
+ m_isUserMediaPermissionSet = true;
+ m_isUserMediaPermissionAllowed = enabled;
+ decidePolicyForUserMediaPermissionRequestIfPossible();
+}
+
+void TestController::setUserMediaPermissionForOrigin(bool permission, WKStringRef originString)
+{
+ if (!m_userMediaOriginPermissions)
+ m_userMediaOriginPermissions = adoptWK(WKMutableDictionaryCreate());
+ WKRetainPtr<WKBooleanRef> allowed = adoptWK(WKBooleanCreate(permission));
+ WKRetainPtr<WKSecurityOriginRef> origin = adoptWK(WKSecurityOriginCreateFromString(originString));
+ WKDictionarySetItem(m_userMediaOriginPermissions.get(), originUserVisibleName(origin.get()), allowed.get());
+}
+
+void TestController::handleCheckOfUserMediaPermissionForOrigin(WKSecurityOriginRef origin, const WKUserMediaPermissionCheckRef& checkRequest)
+{
+ bool allowed = false;
+
+ if (m_userMediaOriginPermissions) {
+ WKRetainPtr<WKStringRef> originString = originUserVisibleName(origin);
+ WKBooleanRef value = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(m_userMediaOriginPermissions.get(), originString.get()));
+ if (value && WKGetTypeID(value) == WKBooleanGetTypeID())
+ allowed = WKBooleanGetValue(value);
+ }
+
+ WKUserMediaPermissionCheckSetHasPersistentPermission(checkRequest, allowed);
+}
+
+void TestController::handleUserMediaPermissionRequest(WKSecurityOriginRef origin, WKUserMediaPermissionRequestRef request)
+{
+ m_userMediaPermissionRequests.append(std::make_pair(origin, request));
+ decidePolicyForUserMediaPermissionRequestIfPossible();
+}
+
+void TestController::decidePolicyForUserMediaPermissionRequestIfPossible()
+{
+ if (!m_isUserMediaPermissionSet)
+ return;
+
+ for (auto& pair : m_userMediaPermissionRequests) {
+ auto request = pair.second.get();
+ WKRetainPtr<WKArrayRef> audioDeviceUIDs = WKUserMediaPermissionRequestAudioDeviceUIDs(request);
+ WKRetainPtr<WKArrayRef> videoDeviceUIDs = WKUserMediaPermissionRequestVideoDeviceUIDs(request);
+
+ if (m_isUserMediaPermissionAllowed && (WKArrayGetSize(videoDeviceUIDs.get()) || WKArrayGetSize(audioDeviceUIDs.get()))) {
+ WKRetainPtr<WKStringRef> videoDeviceUID;
+ if (WKArrayGetSize(videoDeviceUIDs.get()))
+ videoDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(videoDeviceUIDs.get(), 0));
+ else
+ videoDeviceUID = WKStringCreateWithUTF8CString("");
+
+ WKRetainPtr<WKStringRef> audioDeviceUID;
+ if (WKArrayGetSize(audioDeviceUIDs.get()))
+ audioDeviceUID = reinterpret_cast<WKStringRef>(WKArrayGetItemAtIndex(audioDeviceUIDs.get(), 0));
+ else
+ audioDeviceUID = WKStringCreateWithUTF8CString("");
+
+ WKUserMediaPermissionRequestAllow(request, audioDeviceUID.get(), videoDeviceUID.get());
+
+ } else
+ WKUserMediaPermissionRequestDeny(request);
+ }
+ m_userMediaPermissionRequests.clear();
+}
+
+void TestController::setCustomPolicyDelegate(bool enabled, bool permissive)
+{
+ m_policyDelegateEnabled = enabled;
+ m_policyDelegatePermissive = permissive;
}
void TestController::decidePolicyForGeolocationPermissionRequestIfPossible()
@@ -1212,7 +1756,7 @@ void TestController::decidePolicyForGeolocationPermissionRequestIfPossible()
void TestController::decidePolicyForNotificationPermissionRequest(WKPageRef page, WKSecurityOriginRef origin, WKNotificationPermissionRequestRef request, const void*)
{
- TestController::shared().decidePolicyForNotificationPermissionRequest(page, origin, request);
+ TestController::singleton().decidePolicyForNotificationPermissionRequest(page, origin, request);
}
void TestController::decidePolicyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef request)
@@ -1225,32 +1769,38 @@ void TestController::unavailablePluginButtonClicked(WKPageRef, WKPluginUnavailab
printf("MISSING PLUGIN BUTTON PRESSED\n");
}
-void TestController::decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
+void TestController::decidePolicyForNavigationAction(WKPageRef, WKNavigationActionRef navigationAction, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
{
static_cast<TestController*>(const_cast<void*>(clientInfo))->decidePolicyForNavigationAction(listener);
}
void TestController::decidePolicyForNavigationAction(WKFramePolicyListenerRef listener)
{
- if (m_policyDelegateEnabled && !m_policyDelegatePermissive) {
- WKFramePolicyListenerIgnore(listener);
- return;
- }
+ WKRetainPtr<WKFramePolicyListenerRef> retainedListener { listener };
+ const bool shouldIgnore { m_policyDelegateEnabled && !m_policyDelegatePermissive };
+ std::function<void()> decisionFunction = [shouldIgnore, retainedListener]() {
+ if (shouldIgnore)
+ WKFramePolicyListenerIgnore(retainedListener.get());
+ else
+ WKFramePolicyListenerUse(retainedListener.get());
+ };
- WKFramePolicyListenerUse(listener);
+ if (m_shouldDecideNavigationPolicyAfterDelay)
+ RunLoop::main().dispatch(decisionFunction);
+ else
+ decisionFunction();
}
-void TestController::decidePolicyForResponse(WKPageRef, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
+void TestController::decidePolicyForNavigationResponse(WKPageRef, WKNavigationResponseRef navigationResponse, WKFramePolicyListenerRef listener, WKTypeRef, const void* clientInfo)
{
- static_cast<TestController*>(const_cast<void*>(clientInfo))->decidePolicyForResponse(frame, response, listener);
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->decidePolicyForNavigationResponse(navigationResponse, listener);
}
-void TestController::decidePolicyForResponse(WKFrameRef frame, WKURLResponseRef response, WKFramePolicyListenerRef listener)
+void TestController::decidePolicyForNavigationResponse(WKNavigationResponseRef navigationResponse, WKFramePolicyListenerRef listener)
{
// Even though Response was already checked by WKBundlePagePolicyClient, the check did not include plugins
// so we have to re-check again.
- WKRetainPtr<WKStringRef> wkMIMEType(AdoptWK, WKURLResponseCopyMIMEType(response));
- if (WKFrameCanShowMIMEType(frame, wkMIMEType.get())) {
+ if (WKNavigationResponseCanShowMIMEType(navigationResponse)) {
WKFramePolicyListenerUse(listener);
return;
}
@@ -1258,4 +1808,117 @@ void TestController::decidePolicyForResponse(WKFrameRef frame, WKURLResponseRef
WKFramePolicyListenerIgnore(listener);
}
+void TestController::didNavigateWithNavigationData(WKContextRef, WKPageRef, WKNavigationDataRef navigationData, WKFrameRef frame, const void* clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didNavigateWithNavigationData(navigationData, frame);
+}
+
+void TestController::didNavigateWithNavigationData(WKNavigationDataRef navigationData, WKFrameRef)
+{
+ if (m_state != RunningTest)
+ return;
+
+ if (!m_shouldLogHistoryClientCallbacks)
+ return;
+
+ // URL
+ WKRetainPtr<WKURLRef> urlWK = adoptWK(WKNavigationDataCopyURL(navigationData));
+ WKRetainPtr<WKStringRef> urlStringWK = adoptWK(WKURLCopyString(urlWK.get()));
+ // Title
+ WKRetainPtr<WKStringRef> titleWK = adoptWK(WKNavigationDataCopyTitle(navigationData));
+ // HTTP method
+ WKRetainPtr<WKURLRequestRef> requestWK = adoptWK(WKNavigationDataCopyOriginalRequest(navigationData));
+ WKRetainPtr<WKStringRef> methodWK = adoptWK(WKURLRequestCopyHTTPMethod(requestWK.get()));
+
+ // FIXME: Determine whether the navigation was successful / a client redirect rather than hard-coding the message here.
+ m_currentInvocation->outputText(String::format("WebView navigated to url \"%s\" with title \"%s\" with HTTP equivalent method \"%s\". The navigation was successful and was not a client redirect.\n",
+ toSTD(urlStringWK).c_str(), toSTD(titleWK).c_str(), toSTD(methodWK).c_str()));
+}
+
+void TestController::didPerformClientRedirect(WKContextRef, WKPageRef, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void* clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didPerformClientRedirect(sourceURL, destinationURL, frame);
+}
+
+void TestController::didPerformClientRedirect(WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef)
+{
+ if (m_state != RunningTest)
+ return;
+
+ if (!m_shouldLogHistoryClientCallbacks)
+ return;
+
+ WKRetainPtr<WKStringRef> sourceStringWK = adoptWK(WKURLCopyString(sourceURL));
+ WKRetainPtr<WKStringRef> destinationStringWK = adoptWK(WKURLCopyString(destinationURL));
+
+ m_currentInvocation->outputText(String::format("WebView performed a client redirect from \"%s\" to \"%s\".\n", toSTD(sourceStringWK).c_str(), toSTD(destinationStringWK).c_str()));
+}
+
+void TestController::didPerformServerRedirect(WKContextRef, WKPageRef, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef frame, const void* clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didPerformServerRedirect(sourceURL, destinationURL, frame);
+}
+
+void TestController::didPerformServerRedirect(WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef)
+{
+ if (m_state != RunningTest)
+ return;
+
+ if (!m_shouldLogHistoryClientCallbacks)
+ return;
+
+ WKRetainPtr<WKStringRef> sourceStringWK = adoptWK(WKURLCopyString(sourceURL));
+ WKRetainPtr<WKStringRef> destinationStringWK = adoptWK(WKURLCopyString(destinationURL));
+
+ m_currentInvocation->outputText(String::format("WebView performed a server redirect from \"%s\" to \"%s\".\n", toSTD(sourceStringWK).c_str(), toSTD(destinationStringWK).c_str()));
+}
+
+void TestController::didUpdateHistoryTitle(WKContextRef, WKPageRef, WKStringRef title, WKURLRef URL, WKFrameRef frame, const void* clientInfo)
+{
+ static_cast<TestController*>(const_cast<void*>(clientInfo))->didUpdateHistoryTitle(title, URL, frame);
+}
+
+void TestController::didUpdateHistoryTitle(WKStringRef title, WKURLRef URL, WKFrameRef)
+{
+ if (m_state != RunningTest)
+ return;
+
+ if (!m_shouldLogHistoryClientCallbacks)
+ return;
+
+ WKRetainPtr<WKStringRef> urlStringWK(AdoptWK, WKURLCopyString(URL));
+ m_currentInvocation->outputText(String::format("WebView updated the title for history URL \"%s\" to \"%s\".\n", toSTD(urlStringWK).c_str(), toSTD(title).c_str()));
+}
+
+void TestController::setNavigationGesturesEnabled(bool value)
+{
+ m_mainWebView->setNavigationGesturesEnabled(value);
+}
+
+#if !PLATFORM(COCOA)
+void TestController::platformWillRunTest(const TestInvocation&)
+{
+}
+
+void TestController::platformCreateWebView(WKPageConfigurationRef configuration, const TestOptions& options)
+{
+ m_mainWebView = std::make_unique<PlatformWebView>(configuration, options);
+}
+
+PlatformWebView* TestController::platformCreateOtherPage(PlatformWebView* parentView, WKPageConfigurationRef configuration, const TestOptions& options)
+{
+ return new PlatformWebView(configuration, options);
+}
+
+WKContextRef TestController::platformAdjustContext(WKContextRef context, WKContextConfigurationRef contextConfiguration)
+{
+ return context;
+}
+
+void TestController::platformResetStateToConsistentValues()
+{
+
+}
+#endif
+
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/TestController.h b/Tools/WebKitTestRunner/TestController.h
index f6debdd15..461d87990 100644
--- a/Tools/WebKitTestRunner/TestController.h
+++ b/Tools/WebKitTestRunner/TestController.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
+ * Copyright (C) 2010, 2015 Apple Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
@@ -26,25 +26,28 @@
#ifndef TestController_h
#define TestController_h
+#include "GeolocationProviderMock.h"
#include "WebNotificationProvider.h"
#include "WorkQueueManager.h"
-#include <GeolocationProviderMock.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKRetainPtr.h>
#include <string>
#include <vector>
-#include <wtf/OwnPtr.h>
+#include <wtf/HashMap.h>
#include <wtf/Vector.h>
+OBJC_CLASS WKWebViewConfiguration;
+
namespace WTR {
class TestInvocation;
class PlatformWebView;
class EventSenderProxy;
+struct TestOptions;
// FIXME: Rename this TestRunner?
class TestController {
public:
- static TestController& shared();
+ static TestController& singleton();
static const unsigned viewWidth;
static const unsigned viewHeight;
@@ -52,26 +55,32 @@ public:
static const unsigned w3cSVGViewWidth;
static const unsigned w3cSVGViewHeight;
+ static const double shortTimeout;
+ static const double noTimeout;
+
TestController(int argc, const char* argv[]);
~TestController();
bool verbose() const { return m_verbose; }
- WKStringRef injectedBundlePath() { return m_injectedBundlePath.get(); }
- WKStringRef testPluginDirectory() { return m_testPluginDirectory.get(); }
+ WKStringRef injectedBundlePath() const { return m_injectedBundlePath.get(); }
+ WKStringRef testPluginDirectory() const { return m_testPluginDirectory.get(); }
PlatformWebView* mainWebView() { return m_mainWebView.get(); }
WKContextRef context() { return m_context.get(); }
- void ensureViewSupportsOptions(WKDictionaryRef options);
+ EventSenderProxy* eventSenderProxy() { return m_eventSenderProxy.get(); }
+
+ bool shouldUseRemoteLayerTree() const { return m_shouldUseRemoteLayerTree; }
// Runs the run loop until `done` is true or the timeout elapses.
- enum TimeoutDuration { ShortTimeout, LongTimeout, NoTimeout, CustomTimeout };
bool useWaitToDumpWatchdogTimer() { return m_useWaitToDumpWatchdogTimer; }
- void runUntil(bool& done, TimeoutDuration);
+ void runUntil(bool& done, double timeoutSeconds);
void notifyDone();
- int getCustomTimeout();
+ bool shouldShowWebView() const { return m_shouldShowWebView; }
+
+ void configureViewForTest(const TestInvocation&);
bool beforeUnloadReturnValue() const { return m_beforeUnloadReturnValue; }
void setBeforeUnloadReturnValue(bool value) { m_beforeUnloadReturnValue = value; }
@@ -83,14 +92,28 @@ public:
void setMockGeolocationPosition(double latitude, double longitude, double accuracy, bool providesAltitude, double altitude, bool providesAltitudeAccuracy, double altitudeAccuracy, bool providesHeading, double heading, bool providesSpeed, double speed);
void setMockGeolocationPositionUnavailableError(WKStringRef errorMessage);
void handleGeolocationPermissionRequest(WKGeolocationPermissionRequestRef);
+ bool isGeolocationProviderActive() const;
+
+ // MediaStream.
+ void setUserMediaPermission(bool);
+ void setUserMediaPermissionForOrigin(bool permission, WKStringRef url);
+ void handleUserMediaPermissionRequest(WKSecurityOriginRef, WKUserMediaPermissionRequestRef);
+ void handleCheckOfUserMediaPermissionForOrigin(WKSecurityOriginRef, const WKUserMediaPermissionCheckRef&);
// Policy delegate.
void setCustomPolicyDelegate(bool enabled, bool permissive);
// Page Visibility.
- void setVisibilityState(WKPageVisibilityState, bool isInitialState);
+ void setHidden(bool);
bool resetStateToConsistentValues();
+ void resetPreferencesToConsistentValues();
+
+ void terminateWebContentProcess();
+ void reattachPageToWebProcess();
+
+ static const char* webProcessName();
+ static const char* networkProcessName();
WorkQueueManager& workQueueManager() { return m_workQueueManager; }
@@ -100,9 +123,19 @@ public:
void setBlockAllPlugins(bool shouldBlock) { m_shouldBlockAllPlugins = shouldBlock; }
+ void setShouldLogHistoryClientCallbacks(bool shouldLog) { m_shouldLogHistoryClientCallbacks = shouldLog; }
+
+ bool isCurrentInvocation(TestInvocation* invocation) const { return invocation == m_currentInvocation.get(); }
+
+ void setShouldDecideNavigationPolicyAfterDelay(bool value) { m_shouldDecideNavigationPolicyAfterDelay = value; }
+
+ void setNavigationGesturesEnabled(bool value);
+
private:
+ WKRetainPtr<WKPageConfigurationRef> generatePageConfiguration(WKContextConfigurationRef);
+ WKRetainPtr<WKContextConfigurationRef> generateContextConfiguration() const;
void initialize(int argc, const char* argv[]);
- void createWebViewWithOptions(WKDictionaryRef);
+ void createWebViewWithOptions(const TestOptions&);
void run();
void runTestingServerLoop();
@@ -110,34 +143,70 @@ private:
void platformInitialize();
void platformDestroy();
+ WKContextRef platformAdjustContext(WKContextRef, WKContextConfigurationRef);
void platformInitializeContext();
+ void platformCreateWebView(WKPageConfigurationRef, const TestOptions&);
+ static PlatformWebView* platformCreateOtherPage(PlatformWebView* parentView, WKPageConfigurationRef, const TestOptions&);
+ void platformResetPreferencesToConsistentValues();
+ void platformResetStateToConsistentValues();
+#if PLATFORM(COCOA)
+ void cocoaResetStateToConsistentValues();
+#endif
+ void platformConfigureViewForTest(const TestInvocation&);
+ void platformWillRunTest(const TestInvocation&);
void platformRunUntil(bool& done, double timeout);
void platformDidCommitLoadForFrame(WKPageRef, WKFrameRef);
+ WKPreferencesRef platformPreferences();
void initializeInjectedBundlePath();
void initializeTestPluginDirectory();
+ void ensureViewSupportsOptionsForTest(const TestInvocation&);
+ TestOptions testOptionsForTest(const std::string& pathOrURL) const;
+ void updatePlatformSpecificTestOptionsForTest(TestOptions&, const std::string& pathOrURL) const;
+
+ void updateWebViewSizeForTest(const TestInvocation&);
+ void updateWindowScaleForTest(PlatformWebView*, const TestInvocation&);
+
void decidePolicyForGeolocationPermissionRequestIfPossible();
+ void decidePolicyForUserMediaPermissionRequestIfPossible();
// WKContextInjectedBundleClient
static void didReceiveMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef messageBody, const void*);
static void didReceiveSynchronousMessageFromInjectedBundle(WKContextRef, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void*);
+
+ // WKPageInjectedBundleClient
+ static void didReceivePageMessageFromInjectedBundle(WKPageRef, WKStringRef messageName, WKTypeRef messageBody, const void*);
+ static void didReceiveSynchronousPageMessageFromInjectedBundle(WKPageRef, WKStringRef messageName, WKTypeRef messageBody, WKTypeRef* returnData, const void*);
void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
WKRetainPtr<WKTypeRef> didReceiveSynchronousMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
void didReceiveKeyDownMessageFromInjectedBundle(WKDictionaryRef messageBodyDictionary, bool synchronous);
- // WKPageLoaderClient
- static void didCommitLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef userData, const void*);
- void didCommitLoadForFrame(WKPageRef, WKFrameRef);
+ // WKContextClient
+ static void networkProcessDidCrash(WKContextRef, const void*);
+ void networkProcessDidCrash();
- static void didFinishLoadForFrame(WKPageRef, WKFrameRef, WKTypeRef userData, const void*);
- void didFinishLoadForFrame(WKPageRef, WKFrameRef);
+ // WKPageNavigationClient
+ static void didCommitNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
+ void didCommitNavigation(WKPageRef, WKNavigationRef);
+
+ static void didFinishNavigation(WKPageRef, WKNavigationRef, WKTypeRef userData, const void*);
+ void didFinishNavigation(WKPageRef, WKNavigationRef);
static void processDidCrash(WKPageRef, const void* clientInfo);
void processDidCrash();
- static WKPluginLoadPolicy pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo);
- WKPluginLoadPolicy pluginLoadPolicy(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription);
+ static void didBeginNavigationGesture(WKPageRef, const void*);
+ static void willEndNavigationGesture(WKPageRef, WKBackForwardListItemRef, const void*);
+ static void didEndNavigationGesture(WKPageRef, WKBackForwardListItemRef, const void*);
+ static void didRemoveNavigationGestureSnapshot(WKPageRef, const void*);
+ void didBeginNavigationGesture(WKPageRef);
+ void willEndNavigationGesture(WKPageRef, WKBackForwardListItemRef);
+ void didEndNavigationGesture(WKPageRef, WKBackForwardListItemRef);
+ void didRemoveNavigationGestureSnapshot(WKPageRef);
+
+ static WKPluginLoadPolicy decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription, const void* clientInfo);
+ WKPluginLoadPolicy decidePolicyForPluginLoad(WKPageRef, WKPluginLoadPolicy currentPluginLoadPolicy, WKDictionaryRef pluginInformation, WKStringRef* unavailabilityDescription);
static void decidePolicyForNotificationPermissionRequest(WKPageRef, WKSecurityOriginRef, WKNotificationPermissionRequestRef, const void*);
@@ -145,17 +214,31 @@ private:
static void unavailablePluginButtonClicked(WKPageRef, WKPluginUnavailabilityReason, WKDictionaryRef, const void*);
- static void didReceiveAuthenticationChallengeInFrame(WKPageRef, WKFrameRef, WKAuthenticationChallengeRef, const void *clientInfo);
- void didReceiveAuthenticationChallengeInFrame(WKPageRef, WKFrameRef, WKAuthenticationChallengeRef);
+ static bool canAuthenticateAgainstProtectionSpace(WKPageRef, WKProtectionSpaceRef, const void *clientInfo);
+
+ static void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef, const void *clientInfo);
+ void didReceiveAuthenticationChallenge(WKPageRef, WKAuthenticationChallengeRef);
- // WKPagePolicyClient
- static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
+ static void decidePolicyForNavigationAction(WKPageRef, WKNavigationActionRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
void decidePolicyForNavigationAction(WKFramePolicyListenerRef);
- static void decidePolicyForResponse(WKPageRef, WKFrameRef, WKURLResponseRef, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
- void decidePolicyForResponse(WKFrameRef, WKURLResponseRef, WKFramePolicyListenerRef);
+ static void decidePolicyForNavigationResponse(WKPageRef, WKNavigationResponseRef, WKFramePolicyListenerRef, WKTypeRef, const void*);
+ void decidePolicyForNavigationResponse(WKNavigationResponseRef, WKFramePolicyListenerRef);
+
+ // WKContextHistoryClient
+ static void didNavigateWithNavigationData(WKContextRef, WKPageRef, WKNavigationDataRef, WKFrameRef, const void*);
+ void didNavigateWithNavigationData(WKNavigationDataRef, WKFrameRef);
+
+ static void didPerformClientRedirect(WKContextRef, WKPageRef, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef, const void*);
+ void didPerformClientRedirect(WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef);
- static WKPageRef createOtherPage(WKPageRef oldPage, WKURLRequestRef, WKDictionaryRef, WKEventModifiers, WKEventMouseButton, const void*);
+ static void didPerformServerRedirect(WKContextRef, WKPageRef, WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef, const void*);
+ void didPerformServerRedirect(WKURLRef sourceURL, WKURLRef destinationURL, WKFrameRef);
+
+ static void didUpdateHistoryTitle(WKContextRef, WKPageRef, WKStringRef title, WKURLRef, WKFrameRef, const void*);
+ void didUpdateHistoryTitle(WKStringRef title, WKURLRef, WKFrameRef);
+
+ static WKPageRef createOtherPage(WKPageRef, WKPageConfigurationRef, WKNavigationActionRef, WKWindowFeaturesRef, const void*);
static void runModal(WKPageRef, const void* clientInfo);
static void runModal(PlatformWebView*);
@@ -163,7 +246,7 @@ private:
static const char* libraryPathForTesting();
static const char* platformLibraryPathForTesting();
- OwnPtr<TestInvocation> m_currentInvocation;
+ std::unique_ptr<TestInvocation> m_currentInvocation;
bool m_verbose;
bool m_printSeparators;
@@ -171,12 +254,13 @@ private:
bool m_gcBetweenTests;
bool m_shouldDumpPixelsForAllTests;
std::vector<std::string> m_paths;
+ std::vector<std::string> m_allowedHosts;
WKRetainPtr<WKStringRef> m_injectedBundlePath;
WKRetainPtr<WKStringRef> m_testPluginDirectory;
WebNotificationProvider m_webNotificationProvider;
- OwnPtr<PlatformWebView> m_mainWebView;
+ std::unique_ptr<PlatformWebView> m_mainWebView;
WKRetainPtr<WKContextRef> m_context;
WKRetainPtr<WKPageGroupRef> m_pageGroup;
@@ -188,24 +272,27 @@ private:
State m_state;
bool m_doneResetting;
- double m_longTimeout;
- double m_shortTimeout;
- double m_noTimeout;
bool m_useWaitToDumpWatchdogTimer;
bool m_forceNoTimeout;
- int m_timeout;
-
bool m_didPrintWebProcessCrashedMessage;
bool m_shouldExitWhenWebProcessCrashes;
bool m_beforeUnloadReturnValue;
- OwnPtr<GeolocationProviderMock> m_geolocationProvider;
+ std::unique_ptr<GeolocationProviderMock> m_geolocationProvider;
Vector<WKRetainPtr<WKGeolocationPermissionRequestRef> > m_geolocationPermissionRequests;
bool m_isGeolocationPermissionSet;
bool m_isGeolocationPermissionAllowed;
+ WKRetainPtr<WKMutableDictionaryRef> m_userMediaOriginPermissions;
+
+ typedef Vector<std::pair<WKRetainPtr<WKSecurityOriginRef>, WKRetainPtr<WKUserMediaPermissionRequestRef>>> PermissionRequestList;
+ PermissionRequestList m_userMediaPermissionRequests;
+
+ bool m_isUserMediaPermissionSet;
+ bool m_isUserMediaPermissionAllowed;
+
bool m_policyDelegateEnabled;
bool m_policyDelegatePermissive;
@@ -215,9 +302,16 @@ private:
bool m_shouldBlockAllPlugins;
-#if PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
- OwnPtr<EventSenderProxy> m_eventSenderProxy;
-#endif
+ bool m_forceComplexText;
+ bool m_shouldUseAcceleratedDrawing;
+ bool m_shouldUseRemoteLayerTree;
+
+ bool m_shouldLogHistoryClientCallbacks;
+ bool m_shouldShowWebView;
+
+ bool m_shouldDecideNavigationPolicyAfterDelay { false };
+
+ std::unique_ptr<EventSenderProxy> m_eventSenderProxy;
#if PLATFORM(QT)
class RunLoop;
diff --git a/Tools/WebKitTestRunner/TestInvocation.cpp b/Tools/WebKitTestRunner/TestInvocation.cpp
index 69236bf97..6ab38925f 100644
--- a/Tools/WebKitTestRunner/TestInvocation.cpp
+++ b/Tools/WebKitTestRunner/TestInvocation.cpp
@@ -30,204 +30,123 @@
#include "PlatformWebView.h"
#include "StringFunctions.h"
#include "TestController.h"
+#include "UIScriptController.h"
+#include <WebKit/WKContextPrivate.h>
+#include <WebKit/WKCookieManager.h>
+#include <WebKit/WKData.h>
+#include <WebKit/WKDictionary.h>
+#include <WebKit/WKInspector.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKRetainPtr.h>
#include <climits>
#include <cstdio>
-#include <WebKit2/WKContextPrivate.h>
-#include <WebKit2/WKData.h>
-#include <WebKit2/WKDictionary.h>
-#include <WebKit2/WKInspector.h>
-#include <WebKit2/WKRetainPtr.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
-#include <wtf/PassOwnPtr.h>
+#include <wtf/StdLibExtras.h>
#include <wtf/text/CString.h>
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) && !PLATFORM(IOS)
#include <Carbon/Carbon.h>
-#include <WebKit2/WKPagePrivateMac.h>
#endif
-#if OS(WINDOWS)
-#include <direct.h> // For _getcwd.
-#define getcwd _getcwd // MSDN says getcwd is deprecated.
-#define PATH_MAX _MAX_PATH
-#else
-#include <unistd.h> // For getcwd.
+#if PLATFORM(COCOA)
+#include <WebKit/WKPagePrivateMac.h>
#endif
+using namespace JSC;
using namespace WebKit;
using namespace std;
namespace WTR {
-static WKURLRef createWKURL(const char* pathOrURL)
+TestInvocation::TestInvocation(WKURLRef url, const TestOptions& options)
+ : m_options(options)
+ , m_url(url)
{
- if (strstr(pathOrURL, "http://") || strstr(pathOrURL, "https://") || strstr(pathOrURL, "file://"))
- return WKURLCreateWithUTF8CString(pathOrURL);
-
- // Creating from filesytem path.
- size_t length = strlen(pathOrURL);
- if (!length)
- return 0;
+ WKRetainPtr<WKStringRef> urlString = adoptWK(WKURLCopyString(m_url.get()));
-#if OS(WINDOWS)
- const char separator = '\\';
- bool isAbsolutePath = length >= 3 && pathOrURL[1] == ':' && pathOrURL[2] == separator;
- // FIXME: Remove the "localhost/" suffix once <http://webkit.org/b/55683> is fixed.
- const char* filePrefix = "file://localhost/";
-#else
- const char separator = '/';
- bool isAbsolutePath = pathOrURL[0] == separator;
- const char* filePrefix = "file://";
-#endif
- static const size_t prefixLength = strlen(filePrefix);
-
- OwnArrayPtr<char> buffer;
- if (isAbsolutePath) {
- buffer = adoptArrayPtr(new char[prefixLength + length + 1]);
- strcpy(buffer.get(), filePrefix);
- strcpy(buffer.get() + prefixLength, pathOrURL);
- } else {
- buffer = adoptArrayPtr(new char[prefixLength + PATH_MAX + length + 2]); // 1 for the separator
- strcpy(buffer.get(), filePrefix);
- if (!getcwd(buffer.get() + prefixLength, PATH_MAX))
- return 0;
- size_t numCharacters = strlen(buffer.get());
- buffer[numCharacters] = separator;
- strcpy(buffer.get() + numCharacters + 1, pathOrURL);
- }
-
- return WKURLCreateWithUTF8CString(buffer.get());
-}
+ size_t stringLength = WKStringGetLength(urlString.get());
-TestInvocation::TestInvocation(const std::string& pathOrURL)
- : m_url(AdoptWK, createWKURL(pathOrURL.c_str()))
- , m_pathOrURL(pathOrURL)
- , m_dumpPixels(false)
- , m_timeout(0)
- , m_gotInitialResponse(false)
- , m_gotFinalMessage(false)
- , m_gotRepaint(false)
- , m_error(false)
- , m_webProcessIsUnresponsive(false)
-{
-}
+ Vector<char> urlVector;
+ urlVector.resize(stringLength + 1);
-TestInvocation::~TestInvocation()
-{
-}
+ WKStringGetUTF8CString(urlString.get(), urlVector.data(), stringLength + 1);
-void TestInvocation::setIsPixelTest(const std::string& expectedPixelHash)
-{
- m_dumpPixels = true;
- m_expectedPixelHash = expectedPixelHash;
+ m_urlString = String(urlVector.data(), stringLength);
}
-void TestInvocation::setCustomTimeout(int timeout)
+TestInvocation::~TestInvocation()
{
- m_timeout = timeout;
+ if (m_pendingUIScriptInvocationData)
+ m_pendingUIScriptInvocationData->testInvocation = nullptr;
}
-static void sizeWebViewForCurrentTest(const char* pathOrURL)
+WKURLRef TestInvocation::url() const
{
- bool isSVGW3CTest = strstr(pathOrURL, "svg/W3C-SVG-1.1") || strstr(pathOrURL, "svg\\W3C-SVG-1.1");
-
- if (isSVGW3CTest)
- TestController::shared().mainWebView()->resizeTo(TestController::w3cSVGViewWidth, TestController::w3cSVGViewHeight);
- else
- TestController::shared().mainWebView()->resizeTo(TestController::viewWidth, TestController::viewHeight);
+ return m_url.get();
}
-static bool shouldLogFrameLoadDelegates(const char* pathOrURL)
+bool TestInvocation::urlContains(const char* searchString) const
{
- return strstr(pathOrURL, "loading/");
+ return m_urlString.contains(searchString, false);
}
-#if ENABLE(INSPECTOR)
-static bool shouldOpenWebInspector(const char* pathOrURL)
+void TestInvocation::setIsPixelTest(const std::string& expectedPixelHash)
{
- return strstr(pathOrURL, "inspector/") || strstr(pathOrURL, "inspector\\");
+ m_dumpPixels = true;
+ m_expectedPixelHash = expectedPixelHash;
}
-#endif
-#if PLATFORM(MAC)
-static bool shouldUseTiledDrawing(const char* pathOrURL)
+bool TestInvocation::shouldLogFrameLoadDelegates() const
{
- return strstr(pathOrURL, "tiled-drawing/") || strstr(pathOrURL, "tiled-drawing\\");
+ return urlContains("loading/");
}
-#endif
-static void updateTiledDrawingForCurrentTest(const char* pathOrURL)
+bool TestInvocation::shouldLogHistoryClientCallbacks() const
{
-#if PLATFORM(MAC)
- WKRetainPtr<WKMutableDictionaryRef> viewOptions = adoptWK(WKMutableDictionaryCreate());
- WKRetainPtr<WKStringRef> useTiledDrawingKey = adoptWK(WKStringCreateWithUTF8CString("TiledDrawing"));
- WKRetainPtr<WKBooleanRef> useTiledDrawingValue = adoptWK(WKBooleanCreate(shouldUseTiledDrawing(pathOrURL)));
- WKDictionaryAddItem(viewOptions.get(), useTiledDrawingKey.get(), useTiledDrawingValue.get());
-
- TestController::shared().ensureViewSupportsOptions(viewOptions.get());
-#else
- UNUSED_PARAM(pathOrURL);
-#endif
+ return urlContains("globalhistory/");
}
-static bool shouldUseFixedLayout(const char* pathOrURL)
+void TestInvocation::invoke()
{
-#if ENABLE(CSS_DEVICE_ADAPTATION)
- if (strstr(pathOrURL, "device-adapt/") || strstr(pathOrURL, "device-adapt\\"))
- return true;
-#endif
+ TestController::singleton().configureViewForTest(*this);
-#if USE(TILED_BACKING_STORE) && PLATFORM(EFL)
- if (strstr(pathOrURL, "sticky/") || strstr(pathOrURL, "sticky\\"))
- return true;
-#endif
- return false;
-
- UNUSED_PARAM(pathOrURL);
-}
+ WKPageSetAddsVisitedLinks(TestController::singleton().mainWebView()->page(), false);
-static void updateLayoutType(const char* pathOrURL)
-{
- WKRetainPtr<WKMutableDictionaryRef> viewOptions = adoptWK(WKMutableDictionaryCreate());
- WKRetainPtr<WKStringRef> useFixedLayoutKey = adoptWK(WKStringCreateWithUTF8CString("UseFixedLayout"));
- WKRetainPtr<WKBooleanRef> useFixedLayoutValue = adoptWK(WKBooleanCreate(shouldUseFixedLayout(pathOrURL)));
- WKDictionaryAddItem(viewOptions.get(), useFixedLayoutKey.get(), useFixedLayoutValue.get());
+ m_textOutput.clear();
- TestController::shared().ensureViewSupportsOptions(viewOptions.get());
-}
+ TestController::singleton().setShouldLogHistoryClientCallbacks(shouldLogHistoryClientCallbacks());
-void TestInvocation::invoke()
-{
- TestController::TimeoutDuration timeoutToUse = TestController::LongTimeout;
- sizeWebViewForCurrentTest(m_pathOrURL.c_str());
- updateLayoutType(m_pathOrURL.c_str());
- updateTiledDrawingForCurrentTest(m_pathOrURL.c_str());
+ WKCookieManagerSetHTTPCookieAcceptPolicy(WKContextGetCookieManager(TestController::singleton().context()), kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain);
- m_textOutput.clear();
+ // FIXME: We should clear out visited links here.
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("BeginTest"));
WKRetainPtr<WKMutableDictionaryRef> beginTestMessageBody = adoptWK(WKMutableDictionaryCreate());
WKRetainPtr<WKStringRef> dumpFrameLoadDelegatesKey = adoptWK(WKStringCreateWithUTF8CString("DumpFrameLoadDelegates"));
- WKRetainPtr<WKBooleanRef> dumpFrameLoadDelegatesValue = adoptWK(WKBooleanCreate(shouldLogFrameLoadDelegates(m_pathOrURL.c_str())));
- WKDictionaryAddItem(beginTestMessageBody.get(), dumpFrameLoadDelegatesKey.get(), dumpFrameLoadDelegatesValue.get());
+ WKRetainPtr<WKBooleanRef> dumpFrameLoadDelegatesValue = adoptWK(WKBooleanCreate(shouldLogFrameLoadDelegates()));
+ WKDictionarySetItem(beginTestMessageBody.get(), dumpFrameLoadDelegatesKey.get(), dumpFrameLoadDelegatesValue.get());
+
+ WKRetainPtr<WKStringRef> useFlexibleViewportKey = adoptWK(WKStringCreateWithUTF8CString("UseFlexibleViewport"));
+ WKRetainPtr<WKBooleanRef> useFlexibleViewportValue = adoptWK(WKBooleanCreate(options().useFlexibleViewport));
+ WKDictionarySetItem(beginTestMessageBody.get(), useFlexibleViewportKey.get(), useFlexibleViewportValue.get());
WKRetainPtr<WKStringRef> dumpPixelsKey = adoptWK(WKStringCreateWithUTF8CString("DumpPixels"));
WKRetainPtr<WKBooleanRef> dumpPixelsValue = adoptWK(WKBooleanCreate(m_dumpPixels));
- WKDictionaryAddItem(beginTestMessageBody.get(), dumpPixelsKey.get(), dumpPixelsValue.get());
+ WKDictionarySetItem(beginTestMessageBody.get(), dumpPixelsKey.get(), dumpPixelsValue.get());
WKRetainPtr<WKStringRef> useWaitToDumpWatchdogTimerKey = adoptWK(WKStringCreateWithUTF8CString("UseWaitToDumpWatchdogTimer"));
- WKRetainPtr<WKBooleanRef> useWaitToDumpWatchdogTimerValue = adoptWK(WKBooleanCreate(TestController::shared().useWaitToDumpWatchdogTimer()));
- WKDictionaryAddItem(beginTestMessageBody.get(), useWaitToDumpWatchdogTimerKey.get(), useWaitToDumpWatchdogTimerValue.get());
+ WKRetainPtr<WKBooleanRef> useWaitToDumpWatchdogTimerValue = adoptWK(WKBooleanCreate(TestController::singleton().useWaitToDumpWatchdogTimer()));
+ WKDictionarySetItem(beginTestMessageBody.get(), useWaitToDumpWatchdogTimerKey.get(), useWaitToDumpWatchdogTimerValue.get());
WKRetainPtr<WKStringRef> timeoutKey = adoptWK(WKStringCreateWithUTF8CString("Timeout"));
WKRetainPtr<WKUInt64Ref> timeoutValue = adoptWK(WKUInt64Create(m_timeout));
- WKDictionaryAddItem(beginTestMessageBody.get(), timeoutKey.get(), timeoutValue.get());
+ WKDictionarySetItem(beginTestMessageBody.get(), timeoutKey.get(), timeoutValue.get());
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), beginTestMessageBody.get());
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), beginTestMessageBody.get());
- TestController::shared().runUntil(m_gotInitialResponse, TestController::ShortTimeout);
+ bool shouldOpenExternalURLs = false;
+
+ TestController::singleton().runUntil(m_gotInitialResponse, TestController::shortTimeout);
if (!m_gotInitialResponse) {
m_errorMessage = "Timed out waiting for initial response from web process\n";
m_webProcessIsUnresponsive = true;
@@ -236,41 +155,28 @@ void TestInvocation::invoke()
if (m_error)
goto end;
-#if ENABLE(INSPECTOR)
- if (shouldOpenWebInspector(m_pathOrURL.c_str()))
- WKInspectorShow(WKPageGetInspector(TestController::shared().mainWebView()->page()));
-#endif // ENABLE(INSPECTOR)
-
- WKPageLoadURL(TestController::shared().mainWebView()->page(), m_url.get());
+ WKPageLoadURLWithShouldOpenExternalURLsPolicy(TestController::singleton().mainWebView()->page(), m_url.get(), shouldOpenExternalURLs);
- if (TestController::shared().useWaitToDumpWatchdogTimer()) {
- if (m_timeout > 0)
- timeoutToUse = TestController::CustomTimeout;
- } else
- timeoutToUse = TestController::NoTimeout;
- TestController::shared().runUntil(m_gotFinalMessage, timeoutToUse);
-
- if (!m_gotFinalMessage) {
- m_errorMessage = "Timed out waiting for final message from web process\n";
- m_webProcessIsUnresponsive = true;
- goto end;
- }
+ TestController::singleton().runUntil(m_gotFinalMessage, TestController::noTimeout);
if (m_error)
goto end;
dumpResults();
end:
-#if ENABLE(INSPECTOR)
+#if !PLATFORM(IOS)
if (m_gotInitialResponse)
- WKInspectorClose(WKPageGetInspector(TestController::shared().mainWebView()->page()));
-#endif // ENABLE(INSPECTOR)
+ WKInspectorClose(WKPageGetInspector(TestController::singleton().mainWebView()->page()));
+#endif // !PLATFORM(IOS)
if (m_webProcessIsUnresponsive)
dumpWebProcessUnresponsiveness();
- else if (!TestController::shared().resetStateToConsistentValues()) {
- m_errorMessage = "Timed out loading about:blank before the next test";
- dumpWebProcessUnresponsiveness();
+ else if (!TestController::singleton().resetStateToConsistentValues()) {
+ // The process froze while loading about:blank, let's start a fresh one.
+ // It would be nice to report that the previous test froze after dumping results, but we have no way to do that.
+ TestController::singleton().terminateWebContentProcess();
+ // Make sure that we have a process, as invoke() will need one to send bundle messages for the next test.
+ TestController::singleton().reattachPageToWebProcess();
}
}
@@ -281,14 +187,12 @@ void TestInvocation::dumpWebProcessUnresponsiveness()
void TestInvocation::dumpWebProcessUnresponsiveness(const char* errorMessage)
{
- const char* errorMessageToStderr = 0;
-#if PLATFORM(MAC)
- char buffer[64];
- pid_t pid = WKPageGetProcessIdentifier(TestController::shared().mainWebView()->page());
- sprintf(buffer, "#PROCESS UNRESPONSIVE - WebProcess (pid %ld)\n", static_cast<long>(pid));
- errorMessageToStderr = buffer;
+ char errorMessageToStderr[1024];
+#if PLATFORM(COCOA)
+ pid_t pid = WKPageGetProcessIdentifier(TestController::singleton().mainWebView()->page());
+ sprintf(errorMessageToStderr, "#PROCESS UNRESPONSIVE - %s (pid %ld)\n", TestController::webProcessName(), static_cast<long>(pid));
#else
- errorMessageToStderr = "#PROCESS UNRESPONSIVE - WebProcess";
+ sprintf(errorMessageToStderr, "#PROCESS UNRESPONSIVE - %s", TestController::webProcessName());
#endif
dump(errorMessage, errorMessageToStderr, true);
@@ -310,6 +214,19 @@ void TestInvocation::dump(const char* textToStdout, const char* textToStderr, bo
fflush(stderr);
}
+void TestInvocation::forceRepaintDoneCallback(WKErrorRef error, void* context)
+{
+ // The context may not be valid any more, e.g. if WebKit is invalidating callbacks at process exit.
+ if (error)
+ return;
+
+ TestInvocation* testInvocation = static_cast<TestInvocation*>(context);
+ RELEASE_ASSERT(TestController::singleton().isCurrentInvocation(testInvocation));
+
+ testInvocation->m_gotRepaint = true;
+ TestController::singleton().notifyDone();
+}
+
void TestInvocation::dumpResults()
{
if (m_textOutput.length() || !m_audioResult)
@@ -317,8 +234,23 @@ void TestInvocation::dumpResults()
else
dumpAudio(m_audioResult.get());
- if (m_dumpPixels && m_pixelResult)
- dumpPixelsAndCompareWithExpected(m_pixelResult.get(), m_repaintRects.get());
+ if (m_dumpPixels) {
+ if (m_pixelResult)
+ dumpPixelsAndCompareWithExpected(m_pixelResult.get(), m_repaintRects.get(), TestInvocation::SnapshotResultType::WebContents);
+ else if (m_pixelResultIsPending) {
+ m_gotRepaint = false;
+ WKPageForceRepaint(TestController::singleton().mainWebView()->page(), this, TestInvocation::forceRepaintDoneCallback);
+ TestController::singleton().runUntil(m_gotRepaint, TestController::shortTimeout);
+ if (!m_gotRepaint) {
+ m_errorMessage = "Timed out waiting for pre-pixel dump repaint\n";
+ m_webProcessIsUnresponsive = true;
+ return;
+ }
+ WKRetainPtr<WKImageRef> windowSnapshot = TestController::singleton().mainWebView()->windowSnapshotImage();
+ ASSERT(windowSnapshot);
+ dumpPixelsAndCompareWithExpected(windowSnapshot.get(), m_repaintRects.get(), TestInvocation::SnapshotResultType::WebView);
+ }
+ }
fputs("#EOF\n", stdout);
fflush(stdout);
@@ -336,16 +268,7 @@ void TestInvocation::dumpAudio(WKDataRef audioData)
printf("Content-Type: audio/wav\n");
printf("Content-Length: %lu\n", static_cast<unsigned long>(length));
- const size_t bytesToWriteInOneChunk = 1 << 15;
- size_t dataRemainingToWrite = length;
- while (dataRemainingToWrite) {
- size_t bytesToWriteInThisChunk = std::min(dataRemainingToWrite, bytesToWriteInOneChunk);
- size_t bytesWritten = fwrite(data, 1, bytesToWriteInThisChunk, stdout);
- if (bytesWritten != bytesToWriteInThisChunk)
- break;
- dataRemainingToWrite -= bytesWritten;
- data += bytesWritten;
- }
+ fwrite(data, 1, length, stdout);
printf("#EOF\n");
fprintf(stderr, "#EOF\n");
}
@@ -373,7 +296,7 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
m_gotFinalMessage = true;
m_error = true;
m_errorMessage = "FAIL\n";
- TestController::shared().notifyDone();
+ TestController::singleton().notifyDone();
return;
}
@@ -382,7 +305,7 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKStringRef messageBodyString = static_cast<WKStringRef>(messageBody);
if (WKStringIsEqualToUTF8CString(messageBodyString, "BeginTest")) {
m_gotInitialResponse = true;
- TestController::shared().notifyDone();
+ TestController::singleton().notifyDone();
return;
}
@@ -393,9 +316,15 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
- WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult"));
- m_pixelResult = static_cast<WKImageRef>(WKDictionaryGetItemForKey(messageBodyDictionary, pixelResultKey.get()));
- ASSERT(!m_pixelResult || m_dumpPixels);
+ WKRetainPtr<WKStringRef> pixelResultIsPendingKey = adoptWK(WKStringCreateWithUTF8CString("PixelResultIsPending"));
+ WKBooleanRef pixelResultIsPending = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, pixelResultIsPendingKey.get()));
+ m_pixelResultIsPending = WKBooleanGetValue(pixelResultIsPending);
+
+ if (!m_pixelResultIsPending) {
+ WKRetainPtr<WKStringRef> pixelResultKey = adoptWK(WKStringCreateWithUTF8CString("PixelResult"));
+ m_pixelResult = static_cast<WKImageRef>(WKDictionaryGetItemForKey(messageBodyDictionary, pixelResultKey.get()));
+ ASSERT(!m_pixelResult || m_dumpPixels);
+ }
WKRetainPtr<WKStringRef> repaintRectsKey = adoptWK(WKStringCreateWithUTF8CString("RepaintRects"));
m_repaintRects = static_cast<WKArrayRef>(WKDictionaryGetItemForKey(messageBodyDictionary, repaintRectsKey.get()));
@@ -404,7 +333,7 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
m_audioResult = static_cast<WKDataRef>(WKDictionaryGetItemForKey(messageBodyDictionary, audioResultKey.get()));
m_gotFinalMessage = true;
- TestController::shared().notifyDone();
+ TestController::singleton().notifyDone();
return;
}
@@ -418,52 +347,59 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
if (WKStringIsEqualToUTF8CString(messageName, "BeforeUnloadReturnValue")) {
ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
WKBooleanRef beforeUnloadReturnValue = static_cast<WKBooleanRef>(messageBody);
- TestController::shared().setBeforeUnloadReturnValue(WKBooleanGetValue(beforeUnloadReturnValue));
+ TestController::singleton().setBeforeUnloadReturnValue(WKBooleanGetValue(beforeUnloadReturnValue));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "AddChromeInputField")) {
- TestController::shared().mainWebView()->addChromeInputField();
+ TestController::singleton().mainWebView()->addChromeInputField();
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallAddChromeInputFieldCallback"));
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), 0);
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "RemoveChromeInputField")) {
- TestController::shared().mainWebView()->removeChromeInputField();
+ TestController::singleton().mainWebView()->removeChromeInputField();
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallRemoveChromeInputFieldCallback"));
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), 0);
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "FocusWebView")) {
- TestController::shared().mainWebView()->makeWebViewFirstResponder();
+ TestController::singleton().mainWebView()->makeWebViewFirstResponder();
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallFocusWebViewCallback"));
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), 0);
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetBackingScaleFactor")) {
ASSERT(WKGetTypeID(messageBody) == WKDoubleGetTypeID());
double backingScaleFactor = WKDoubleGetValue(static_cast<WKDoubleRef>(messageBody));
- WKPageSetCustomBackingScaleFactor(TestController::shared().mainWebView()->page(), backingScaleFactor);
+ WKPageSetCustomBackingScaleFactor(TestController::singleton().mainWebView()->page(), backingScaleFactor);
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallSetBackingScaleFactorCallback"));
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), 0);
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SimulateWebNotificationClick")) {
ASSERT(WKGetTypeID(messageBody) == WKUInt64GetTypeID());
uint64_t notificationID = WKUInt64GetValue(static_cast<WKUInt64Ref>(messageBody));
- TestController::shared().simulateWebNotificationClick(notificationID);
+ TestController::singleton().simulateWebNotificationClick(notificationID);
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetAddsVisitedLinks")) {
+ ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
+ WKBooleanRef enabledWK = static_cast<WKBooleanRef>(messageBody);
+ WKPageSetAddsVisitedLinks(TestController::singleton().mainWebView()->page(), WKBooleanGetValue(enabledWK));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetGeolocationPermission")) {
ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
WKBooleanRef enabledWK = static_cast<WKBooleanRef>(messageBody);
- TestController::shared().setGeolocationPermission(WKBooleanGetValue(enabledWK));
+ TestController::singleton().setGeolocationPermission(WKBooleanGetValue(enabledWK));
return;
}
@@ -515,14 +451,43 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKDoubleRef speedWK = static_cast<WKDoubleRef>(WKDictionaryGetItemForKey(messageBodyDictionary, speedKeyWK.get()));
double speed = WKDoubleGetValue(speedWK);
- TestController::shared().setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
+ TestController::singleton().setMockGeolocationPosition(latitude, longitude, accuracy, providesAltitude, altitude, providesAltitudeAccuracy, altitudeAccuracy, providesHeading, heading, providesSpeed, speed);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetMockGeolocationPositionUnavailableError")) {
ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
WKStringRef errorMessage = static_cast<WKStringRef>(messageBody);
- TestController::shared().setMockGeolocationPositionUnavailableError(errorMessage);
+ TestController::singleton().setMockGeolocationPositionUnavailableError(errorMessage);
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetUserMediaPermission")) {
+ ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
+ WKBooleanRef enabledWK = static_cast<WKBooleanRef>(messageBody);
+ TestController::singleton().setUserMediaPermission(WKBooleanGetValue(enabledWK));
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetUserMediaPermissionForOrigin")) {
+ ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
+ WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
+
+ WKRetainPtr<WKStringRef> permissionKeyWK(AdoptWK, WKStringCreateWithUTF8CString("permission"));
+ WKBooleanRef permissionWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, permissionKeyWK.get()));
+ bool permission = WKBooleanGetValue(permissionWK);
+
+ WKRetainPtr<WKStringRef> urlKey(AdoptWK, WKStringCreateWithUTF8CString("url"));
+ WKStringRef urlWK = static_cast<WKStringRef>(WKDictionaryGetItemForKey(messageBodyDictionary, urlKey.get()));
+
+ TestController::singleton().setUserMediaPermissionForOrigin(permission, urlWK);
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetCacheModel")) {
+ ASSERT(WKGetTypeID(messageBody) == WKUInt64GetTypeID());
+ uint64_t model = WKUInt64GetValue(static_cast<WKUInt64Ref>(messageBody));
+ WKContextSetCacheModel(TestController::singleton().context(), model);
return;
}
@@ -538,30 +503,26 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKBooleanRef permissiveWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, permissiveKeyWK.get()));
bool permissive = WKBooleanGetValue(permissiveWK);
- TestController::shared().setCustomPolicyDelegate(enabled, permissive);
+ TestController::singleton().setCustomPolicyDelegate(enabled, permissive);
return;
}
- if (WKStringIsEqualToUTF8CString(messageName, "SetVisibilityState")) {
+ if (WKStringIsEqualToUTF8CString(messageName, "SetHidden")) {
ASSERT(WKGetTypeID(messageBody) == WKDictionaryGetTypeID());
WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
- WKRetainPtr<WKStringRef> visibilityStateKeyWK(AdoptWK, WKStringCreateWithUTF8CString("visibilityState"));
- WKUInt64Ref visibilityStateWK = static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, visibilityStateKeyWK.get()));
- WKPageVisibilityState visibilityState = static_cast<WKPageVisibilityState>(WKUInt64GetValue(visibilityStateWK));
-
- WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("isInitialState"));
- WKBooleanRef isInitialWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, isInitialKeyWK.get()));
- bool isInitialState = WKBooleanGetValue(isInitialWK);
+ WKRetainPtr<WKStringRef> isInitialKeyWK(AdoptWK, WKStringCreateWithUTF8CString("hidden"));
+ WKBooleanRef hiddenWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(messageBodyDictionary, isInitialKeyWK.get()));
+ bool hidden = WKBooleanGetValue(hiddenWK);
- TestController::shared().setVisibilityState(visibilityState, isInitialState);
+ TestController::singleton().setHidden(hidden);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "ProcessWorkQueue")) {
- if (TestController::shared().workQueueManager().processWorkQueue()) {
+ if (TestController::singleton().workQueueManager().processWorkQueue()) {
WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("WorkQueueProcessedCallback"));
- WKContextPostMessageToInjectedBundle(TestController::shared().context(), messageName.get(), 0);
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
}
return;
}
@@ -569,14 +530,14 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
if (WKStringIsEqualToUTF8CString(messageName, "QueueBackNavigation")) {
ASSERT(WKGetTypeID(messageBody) == WKUInt64GetTypeID());
uint64_t stepCount = WKUInt64GetValue(static_cast<WKUInt64Ref>(messageBody));
- TestController::shared().workQueueManager().queueBackNavigation(stepCount);
+ TestController::singleton().workQueueManager().queueBackNavigation(stepCount);
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "QueueForwardNavigation")) {
ASSERT(WKGetTypeID(messageBody) == WKUInt64GetTypeID());
uint64_t stepCount = WKUInt64GetValue(static_cast<WKUInt64Ref>(messageBody));
- TestController::shared().workQueueManager().queueForwardNavigation(stepCount);
+ TestController::singleton().workQueueManager().queueForwardNavigation(stepCount);
return;
}
@@ -590,7 +551,10 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKRetainPtr<WKStringRef> targetKey(AdoptWK, WKStringCreateWithUTF8CString("target"));
WKStringRef targetWK = static_cast<WKStringRef>(WKDictionaryGetItemForKey(loadDataDictionary, targetKey.get()));
- TestController::shared().workQueueManager().queueLoad(toWTFString(urlWK), toWTFString(targetWK));
+ WKRetainPtr<WKStringRef> shouldOpenExternalURLsKey(AdoptWK, WKStringCreateWithUTF8CString("shouldOpenExternalURLs"));
+ WKBooleanRef shouldOpenExternalURLsValueWK = static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(loadDataDictionary, shouldOpenExternalURLsKey.get()));
+
+ TestController::singleton().workQueueManager().queueLoad(toWTFString(urlWK), toWTFString(targetWK), WKBooleanGetValue(shouldOpenExternalURLsValueWK));
return;
}
@@ -607,54 +571,82 @@ void TestInvocation::didReceiveMessageFromInjectedBundle(WKStringRef messageName
WKRetainPtr<WKStringRef> unreachableURLKey(AdoptWK, WKStringCreateWithUTF8CString("unreachableURL"));
WKStringRef unreachableURLWK = static_cast<WKStringRef>(WKDictionaryGetItemForKey(loadDataDictionary, unreachableURLKey.get()));
- TestController::shared().workQueueManager().queueLoadHTMLString(toWTFString(contentWK), baseURLWK ? toWTFString(baseURLWK) : String(), unreachableURLWK ? toWTFString(unreachableURLWK) : String());
+ TestController::singleton().workQueueManager().queueLoadHTMLString(toWTFString(contentWK), baseURLWK ? toWTFString(baseURLWK) : String(), unreachableURLWK ? toWTFString(unreachableURLWK) : String());
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "QueueReload")) {
- TestController::shared().workQueueManager().queueReload();
+ TestController::singleton().workQueueManager().queueReload();
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "QueueLoadingScript")) {
ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
WKStringRef script = static_cast<WKStringRef>(messageBody);
- TestController::shared().workQueueManager().queueLoadingScript(toWTFString(script));
+ TestController::singleton().workQueueManager().queueLoadingScript(toWTFString(script));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "QueueNonLoadingScript")) {
ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
WKStringRef script = static_cast<WKStringRef>(messageBody);
- TestController::shared().workQueueManager().queueNonLoadingScript(toWTFString(script));
+ TestController::singleton().workQueueManager().queueNonLoadingScript(toWTFString(script));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetHandlesAuthenticationChallenge")) {
ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
WKBooleanRef value = static_cast<WKBooleanRef>(messageBody);
- TestController::shared().setHandlesAuthenticationChallenges(WKBooleanGetValue(value));
+ TestController::singleton().setHandlesAuthenticationChallenges(WKBooleanGetValue(value));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetAuthenticationUsername")) {
ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
WKStringRef username = static_cast<WKStringRef>(messageBody);
- TestController::shared().setAuthenticationUsername(toWTFString(username));
+ TestController::singleton().setAuthenticationUsername(toWTFString(username));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetAuthenticationPassword")) {
ASSERT(WKGetTypeID(messageBody) == WKStringGetTypeID());
WKStringRef password = static_cast<WKStringRef>(messageBody);
- TestController::shared().setAuthenticationPassword(toWTFString(password));
+ TestController::singleton().setAuthenticationPassword(toWTFString(password));
return;
}
if (WKStringIsEqualToUTF8CString(messageName, "SetBlockAllPlugins")) {
ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
WKBooleanRef shouldBlock = static_cast<WKBooleanRef>(messageBody);
- TestController::shared().setBlockAllPlugins(WKBooleanGetValue(shouldBlock));
+ TestController::singleton().setBlockAllPlugins(WKBooleanGetValue(shouldBlock));
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetShouldDecideNavigationPolicyAfterDelay")) {
+ ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
+ WKBooleanRef value = static_cast<WKBooleanRef>(messageBody);
+ TestController::singleton().setShouldDecideNavigationPolicyAfterDelay(WKBooleanGetValue(value));
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetNavigationGesturesEnabled")) {
+ ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
+ WKBooleanRef value = static_cast<WKBooleanRef>(messageBody);
+ TestController::singleton().setNavigationGesturesEnabled(WKBooleanGetValue(value));
+ return;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "RunUIProcessScript")) {
+ WKDictionaryRef messageBodyDictionary = static_cast<WKDictionaryRef>(messageBody);
+ WKRetainPtr<WKStringRef> scriptKey(AdoptWK, WKStringCreateWithUTF8CString("Script"));
+ WKRetainPtr<WKStringRef> callbackIDKey(AdoptWK, WKStringCreateWithUTF8CString("CallbackID"));
+
+ UIScriptInvocationData* invocationData = new UIScriptInvocationData();
+ invocationData->testInvocation = this;
+ invocationData->callbackID = (unsigned)WKUInt64GetValue(static_cast<WKUInt64Ref>(WKDictionaryGetItemForKey(messageBodyDictionary, callbackIDKey.get())));
+ invocationData->scriptString = static_cast<WKStringRef>(WKDictionaryGetItemForKey(messageBodyDictionary, scriptKey.get()));
+ m_pendingUIScriptInvocationData = invocationData;
+ WKPageCallAfterNextPresentationUpdate(TestController::singleton().mainWebView()->page(), invocationData, runUISideScriptAfterUpdateCallback);
return;
}
@@ -666,26 +658,76 @@ WKRetainPtr<WKTypeRef> TestInvocation::didReceiveSynchronousMessageFromInjectedB
if (WKStringIsEqualToUTF8CString(messageName, "SetWindowIsKey")) {
ASSERT(WKGetTypeID(messageBody) == WKBooleanGetTypeID());
WKBooleanRef isKeyValue = static_cast<WKBooleanRef>(messageBody);
- TestController::shared().mainWebView()->setWindowIsKey(WKBooleanGetValue(isKeyValue));
- return 0;
+ TestController::singleton().mainWebView()->setWindowIsKey(WKBooleanGetValue(isKeyValue));
+ return nullptr;
+ }
+
+ if (WKStringIsEqualToUTF8CString(messageName, "IsGeolocationClientActive")) {
+ bool isActive = TestController::singleton().isGeolocationProviderActive();
+ WKRetainPtr<WKTypeRef> result(AdoptWK, WKBooleanCreate(isActive));
+ return result;
}
if (WKStringIsEqualToUTF8CString(messageName, "IsWorkQueueEmpty")) {
- bool isEmpty = TestController::shared().workQueueManager().isWorkQueueEmpty();
+ bool isEmpty = TestController::singleton().workQueueManager().isWorkQueueEmpty();
WKRetainPtr<WKTypeRef> result(AdoptWK, WKBooleanCreate(isEmpty));
return result;
}
if (WKStringIsEqualToUTF8CString(messageName, "SecureEventInputIsEnabled")) {
-#if PLATFORM(MAC)
+#if PLATFORM(MAC) && !PLATFORM(IOS)
WKRetainPtr<WKBooleanRef> result(AdoptWK, WKBooleanCreate(IsSecureEventInputEnabled()));
#else
WKRetainPtr<WKBooleanRef> result(AdoptWK, WKBooleanCreate(false));
#endif
return result;
}
+
+ if (WKStringIsEqualToUTF8CString(messageName, "SetAlwaysAcceptCookies")) {
+ WKBooleanRef accept = static_cast<WKBooleanRef>(messageBody);
+ WKHTTPCookieAcceptPolicy policy = WKBooleanGetValue(accept) ? kWKHTTPCookieAcceptPolicyAlways : kWKHTTPCookieAcceptPolicyOnlyFromMainDocumentDomain;
+ // FIXME: This updates the policy in WebProcess and in NetworkProcess asynchronously, which might break some tests' expectations.
+ WKCookieManagerSetHTTPCookieAcceptPolicy(WKContextGetCookieManager(TestController::singleton().context()), policy);
+ return nullptr;
+ }
+
ASSERT_NOT_REACHED();
- return 0;
+ return nullptr;
+}
+
+void TestInvocation::runUISideScriptAfterUpdateCallback(WKErrorRef, void* context)
+{
+ UIScriptInvocationData* data = static_cast<UIScriptInvocationData*>(context);
+ if (TestInvocation* invocation = data->testInvocation) {
+ RELEASE_ASSERT(TestController::singleton().isCurrentInvocation(invocation));
+ invocation->runUISideScript(data->scriptString.get(), data->callbackID);
+ }
+ delete data;
+}
+
+void TestInvocation::runUISideScript(WKStringRef script, unsigned scriptCallbackID)
+{
+ m_pendingUIScriptInvocationData = nullptr;
+
+ if (!m_UIScriptContext)
+ m_UIScriptContext = std::make_unique<UIScriptContext>(*this);
+
+ m_UIScriptContext->runUIScript(script, scriptCallbackID);
+}
+
+void TestInvocation::uiScriptDidComplete(WKStringRef result, unsigned scriptCallbackID)
+{
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallUISideScriptCallback"));
+
+ WKRetainPtr<WKMutableDictionaryRef> messageBody(AdoptWK, WKMutableDictionaryCreate());
+ WKRetainPtr<WKStringRef> resultKey(AdoptWK, WKStringCreateWithUTF8CString("Result"));
+ WKRetainPtr<WKStringRef> callbackIDKey(AdoptWK, WKStringCreateWithUTF8CString("CallbackID"));
+ WKRetainPtr<WKUInt64Ref> callbackIDValue = adoptWK(WKUInt64Create(scriptCallbackID));
+
+ WKDictionarySetItem(messageBody.get(), resultKey.get(), result);
+ WKDictionarySetItem(messageBody.get(), callbackIDKey.get(), callbackIDValue.get());
+
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), messageBody.get());
}
void TestInvocation::outputText(const WTF::String& text)
@@ -693,4 +735,28 @@ void TestInvocation::outputText(const WTF::String& text)
m_textOutput.append(text);
}
+void TestInvocation::didBeginSwipe()
+{
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallDidBeginSwipeCallback"));
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
+}
+
+void TestInvocation::willEndSwipe()
+{
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallWillEndSwipeCallback"));
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
+}
+
+void TestInvocation::didEndSwipe()
+{
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallDidEndSwipeCallback"));
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
+}
+
+void TestInvocation::didRemoveSwipeSnapshot()
+{
+ WKRetainPtr<WKStringRef> messageName = adoptWK(WKStringCreateWithUTF8CString("CallDidRemoveSwipeSnapshotCallback"));
+ WKPagePostMessageToInjectedBundle(TestController::singleton().mainWebView()->page(), messageName.get(), 0);
+}
+
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/TestInvocation.h b/Tools/WebKitTestRunner/TestInvocation.h
index 1b415efc1..ac9c8adb6 100644
--- a/Tools/WebKitTestRunner/TestInvocation.h
+++ b/Tools/WebKitTestRunner/TestInvocation.h
@@ -26,23 +26,31 @@
#ifndef TestInvocation_h
#define TestInvocation_h
+#include "JSWrappable.h"
+#include "TestOptions.h"
+#include "UIScriptContext.h"
+#include <WebKit/WKRetainPtr.h>
#include <string>
-#include <WebKit2/WKRetainPtr.h>
#include <wtf/Noncopyable.h>
-#include <wtf/OwnPtr.h>
#include <wtf/text/StringBuilder.h>
namespace WTR {
-class TestInvocation {
+class TestInvocation : public UIScriptContextDelegate {
WTF_MAKE_NONCOPYABLE(TestInvocation);
public:
- explicit TestInvocation(const std::string& pathOrURL);
+ explicit TestInvocation(WKURLRef, const TestOptions&);
~TestInvocation();
+ WKURLRef url() const;
+ bool urlContains(const char*) const;
+
+ const TestOptions& options() const { return m_options; }
+
void setIsPixelTest(const std::string& expectedPixelHash);
- void setCustomTimeout(int duration);
+ void setCustomTimeout(int duration) { m_timeout = duration; }
+ int customTimeout() const { return m_timeout; }
void invoke();
void didReceiveMessageFromInjectedBundle(WKStringRef messageName, WKTypeRef messageBody);
@@ -51,38 +59,63 @@ public:
void dumpWebProcessUnresponsiveness();
static void dumpWebProcessUnresponsiveness(const char* errorMessage);
void outputText(const WTF::String&);
+
+ void didBeginSwipe();
+ void willEndSwipe();
+ void didEndSwipe();
+ void didRemoveSwipeSnapshot();
+
private:
void dumpResults();
static void dump(const char* textToStdout, const char* textToStderr = 0, bool seenError = false);
- void dumpPixelsAndCompareWithExpected(WKImageRef, WKArrayRef repaintRects);
+ enum class SnapshotResultType { WebView, WebContents };
+ void dumpPixelsAndCompareWithExpected(WKImageRef, WKArrayRef repaintRects, SnapshotResultType);
void dumpAudio(WKDataRef);
bool compareActualHashToExpectedAndDumpResults(const char[33]);
-#if PLATFORM(QT) || PLATFORM(EFL)
static void forceRepaintDoneCallback(WKErrorRef, void* context);
-#endif
- WKRetainPtr<WKURLRef> m_url;
- std::string m_pathOrURL;
+ struct UIScriptInvocationData {
+ unsigned callbackID;
+ WebKit::WKRetainPtr<WKStringRef> scriptString;
+ TestInvocation* testInvocation;
+ };
+ static void runUISideScriptAfterUpdateCallback(WKErrorRef, void* context);
+
+ bool shouldLogFrameLoadDelegates() const;
+ bool shouldLogHistoryClientCallbacks() const;
+
+ void runUISideScript(WKStringRef, unsigned callbackID);
+ // UIScriptContextDelegate
+ void uiScriptDidComplete(WKStringRef result, unsigned callbackID) override;
+
+ const TestOptions m_options;
- bool m_dumpPixels;
+ WKRetainPtr<WKURLRef> m_url;
+ WTF::String m_urlString;
+
std::string m_expectedPixelHash;
- int m_timeout;
+ int m_timeout { 0 };
// Invocation state
- bool m_gotInitialResponse;
- bool m_gotFinalMessage;
- bool m_gotRepaint;
- bool m_error;
+ bool m_gotInitialResponse { false };
+ bool m_gotFinalMessage { false };
+ bool m_gotRepaint { false };
+ bool m_error { false };
+
+ bool m_dumpPixels { false };
+ bool m_pixelResultIsPending { false };
+ bool m_webProcessIsUnresponsive { false };
StringBuilder m_textOutput;
WKRetainPtr<WKDataRef> m_audioResult;
WKRetainPtr<WKImageRef> m_pixelResult;
WKRetainPtr<WKArrayRef> m_repaintRects;
std::string m_errorMessage;
- bool m_webProcessIsUnresponsive;
-
+
+ std::unique_ptr<UIScriptContext> m_UIScriptContext;
+ UIScriptInvocationData* m_pendingUIScriptInvocationData { nullptr };
};
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/TestOptions.cpp b/Tools/WebKitTestRunner/TestOptions.cpp
new file mode 100644
index 000000000..453e077cf
--- /dev/null
+++ b/Tools/WebKitTestRunner/TestOptions.cpp
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "TestOptions.h"
+
+#include <string>
+#include <wtf/text/WTFString.h>
+
+namespace WTR {
+
+static bool pathContains(const std::string& pathOrURL, const char* substring)
+{
+ String path(pathOrURL.c_str());
+ return path.contains(substring); // Case-insensitive.
+}
+
+static bool shouldMakeViewportFlexible(const std::string& pathOrURL)
+{
+ return pathContains(pathOrURL, "viewport/");
+}
+
+static bool shouldUseFixedLayout(const std::string& pathOrURL)
+{
+#if ENABLE(CSS_DEVICE_ADAPTATION)
+ if (pathContains(pathOrURL, "device-adapt/") || pathContains(pathOrURL, "device-adapt\\"))
+ return true;
+#endif
+ return false;
+}
+
+static bool isSVGTestPath(const std::string& pathOrURL)
+{
+ return pathContains(pathOrURL, "svg/W3C-SVG-1.1") || pathContains(pathOrURL, "svg\\W3C-SVG-1.1");
+}
+
+static bool isHiDPITestPath(const std::string& pathOrURL)
+{
+ return pathContains(pathOrURL, "/hidpi-");
+}
+
+TestOptions::TestOptions(const std::string& pathOrURL)
+ : useFlexibleViewport(shouldMakeViewportFlexible(pathOrURL))
+ , useFixedLayout(shouldUseFixedLayout(pathOrURL))
+ , isSVGTest(isSVGTestPath(pathOrURL))
+ , isHiDPITest(isHiDPITestPath(pathOrURL))
+{
+}
+
+}
diff --git a/Tools/WebKitTestRunner/TestOptions.h b/Tools/WebKitTestRunner/TestOptions.h
new file mode 100644
index 000000000..c26742fa3
--- /dev/null
+++ b/Tools/WebKitTestRunner/TestOptions.h
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 TestOptions_h
+#define TestOptions_h
+
+#include <wtf/Vector.h>
+#include <wtf/text/WTFString.h>
+
+namespace WTR {
+
+struct TestOptions {
+ bool useThreadedScrolling { false };
+ bool useRemoteLayerTree { false };
+ bool shouldShowWebView { false };
+ bool useFlexibleViewport { false };
+ bool useFixedLayout { false };
+ bool isSVGTest { false };
+ bool isHiDPITest { false };
+ bool useDataDetection { false };
+
+ Vector<String> overrideLanguages;
+
+ TestOptions(const std::string& pathOrURL);
+};
+
+}
+
+#endif // TestOptions_h
diff --git a/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl b/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl
new file mode 100644
index 000000000..53e9c8a5e
--- /dev/null
+++ b/Tools/WebKitTestRunner/UIScriptContext/Bindings/UIScriptController.idl
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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.
+ */
+
+interface UIScriptController {
+
+ void doAsyncTask(object callback); // Used to test the harness.
+
+ void zoomToScale(double scale, object callback);
+
+ // Interaction.
+ // These functions post events asynchronously. The callback is fired when the events have been dispatched, but any
+ // resulting behavior may also be asynchronous.
+ void touchDownAtPoint(long x, long y, long touchCount, object callback);
+ void liftUpAtPoint(long x, long y, long touchCount, object callback);
+ void singleTapAtPoint(long x, long y, object callback);
+ void doubleTapAtPoint(long x, long y, object callback);
+
+ void typeCharacterUsingHardwareKeyboard(DOMString character, object callback);
+ void keyDownUsingHardwareKeyboard(DOMString character, object callback);
+ void keyUpUsingHardwareKeyboard(DOMString character, object callback);
+
+ attribute object didShowKeyboardCallback;
+ attribute object didHideKeyboardCallback;
+
+ attribute object willBeginZoomingCallback;
+ attribute object didEndZoomingCallback;
+
+ attribute object didEndScrollingCallback;
+
+ // View state
+ readonly attribute double zoomScale;
+ readonly attribute double minimumZoomScale;
+ readonly attribute double maximumZoomScale;
+
+ readonly attribute object contentVisibleRect; // Returned object has 'left', 'top', 'width', 'height' properties.
+
+ void uiScriptComplete(DOMString result);
+};
diff --git a/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp b/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp
new file mode 100644
index 000000000..4d8a8c0b4
--- /dev/null
+++ b/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.cpp
@@ -0,0 +1,202 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "UIScriptContext.h"
+
+#include "StringFunctions.h"
+#include "UIScriptController.h"
+#include <JavaScriptCore/JSContextRef.h>
+#include <JavaScriptCore/JSValueRef.h>
+#include <WebKit/WKRetainPtr.h>
+#include <WebKit/WKString.h>
+#include <WebKit/WKStringPrivate.h>
+
+using namespace WTR;
+
+static inline bool isPersistentCallbackID(unsigned callbackID)
+{
+ return callbackID < firstNonPersistentCallbackID;
+}
+
+UIScriptContext::UIScriptContext(UIScriptContextDelegate& delegate)
+ : m_context(Adopt, JSGlobalContextCreate(nullptr))
+ , m_delegate(delegate)
+{
+ m_controller = UIScriptController::create(*this);
+
+ JSObjectRef globalObject = JSContextGetGlobalObject(m_context.get());
+
+ JSValueRef exception = nullptr;
+ m_controller->makeWindowObject(m_context.get(), globalObject, &exception);
+}
+
+UIScriptContext::~UIScriptContext()
+{
+ m_controller->contextDestroyed();
+}
+
+void UIScriptContext::runUIScript(WKStringRef script, unsigned scriptCallbackID)
+{
+ m_currentScriptCallbackID = scriptCallbackID;
+
+ auto scriptRef = toJS(script);
+
+ JSValueRef exception = nullptr;
+ JSValueRef result = JSEvaluateScript(m_context.get(), scriptRef.get(), 0, 0, 1, &exception);
+
+ if (!hasOutstandingAsyncTasks()) {
+ JSValueRef stringifyException = nullptr;
+ requestUIScriptCompletion(JSValueToStringCopy(m_context.get(), result, &stringifyException));
+ tryToCompleteUIScriptForCurrentParentCallback();
+ }
+}
+
+unsigned UIScriptContext::nextTaskCallbackID(CallbackType type)
+{
+ if (type == CallbackTypeNonPersistent)
+ return ++m_nextTaskCallbackID + firstNonPersistentCallbackID;
+
+ return type;
+}
+
+unsigned UIScriptContext::prepareForAsyncTask(JSValueRef callback, CallbackType type)
+{
+ unsigned callbackID = nextTaskCallbackID(type);
+
+ JSValueProtect(m_context.get(), callback);
+ Task task;
+ task.parentScriptCallbackID = m_currentScriptCallbackID;
+ task.callback = callback;
+
+ ASSERT(!m_callbacks.contains(callbackID));
+ m_callbacks.add(callbackID, task);
+
+ return callbackID;
+}
+
+void UIScriptContext::asyncTaskComplete(unsigned callbackID)
+{
+ Task task = m_callbacks.take(callbackID);
+ ASSERT(task.callback);
+
+ JSValueRef exception = nullptr;
+ JSObjectRef callbackObject = JSValueToObject(m_context.get(), task.callback, &exception);
+
+ m_currentScriptCallbackID = task.parentScriptCallbackID;
+
+ exception = nullptr;
+ JSObjectCallAsFunction(m_context.get(), callbackObject, JSContextGetGlobalObject(m_context.get()), 0, nullptr, &exception);
+ JSValueUnprotect(m_context.get(), task.callback);
+
+ tryToCompleteUIScriptForCurrentParentCallback();
+ m_currentScriptCallbackID = 0;
+}
+
+unsigned UIScriptContext::registerCallback(JSValueRef taskCallback, CallbackType type)
+{
+ if (m_callbacks.contains(type))
+ unregisterCallback(type);
+
+ return prepareForAsyncTask(taskCallback, type);
+}
+
+void UIScriptContext::unregisterCallback(unsigned callbackID)
+{
+ Task task = m_callbacks.take(callbackID);
+ ASSERT(task.callback);
+ JSValueUnprotect(m_context.get(), task.callback);
+}
+
+JSValueRef UIScriptContext::callbackWithID(unsigned callbackID)
+{
+ Task task = m_callbacks.get(callbackID);
+ return task.callback;
+}
+
+void UIScriptContext::fireCallback(unsigned callbackID)
+{
+ Task task = m_callbacks.get(callbackID);
+ ASSERT(task.callback);
+
+ JSValueRef exception = nullptr;
+ JSObjectRef callbackObject = JSValueToObject(m_context.get(), task.callback, &exception);
+
+ m_currentScriptCallbackID = task.parentScriptCallbackID;
+
+ exception = nullptr;
+ JSObjectCallAsFunction(m_context.get(), callbackObject, JSContextGetGlobalObject(m_context.get()), 0, nullptr, &exception);
+
+ tryToCompleteUIScriptForCurrentParentCallback();
+ m_currentScriptCallbackID = 0;
+}
+
+void UIScriptContext::requestUIScriptCompletion(JSStringRef result)
+{
+ ASSERT(m_currentScriptCallbackID);
+ if (currentParentCallbackIsPendingCompletion())
+ return;
+
+ // This request for the UI script to complete is not fulfilled until the last non-persistent task for the parent callback is finished.
+ m_uiScriptResultsPendingCompletion.add(m_currentScriptCallbackID, result ? JSStringRetain(result) : nullptr);
+}
+
+void UIScriptContext::tryToCompleteUIScriptForCurrentParentCallback()
+{
+ if (!currentParentCallbackIsPendingCompletion() || currentParentCallbackHasOutstandingAsyncTasks())
+ return;
+
+ JSStringRef result = m_uiScriptResultsPendingCompletion.take(m_currentScriptCallbackID);
+ WKRetainPtr<WKStringRef> uiScriptResult = adoptWK(WKStringCreateWithJSString(result));
+ m_delegate.uiScriptDidComplete(uiScriptResult.get(), m_currentScriptCallbackID);
+ m_currentScriptCallbackID = 0;
+ if (result)
+ JSStringRelease(result);
+}
+
+JSObjectRef UIScriptContext::objectFromRect(const WKRect& rect) const
+{
+ JSObjectRef object = JSObjectMake(m_context.get(), nullptr, nullptr);
+
+ JSObjectSetProperty(m_context.get(), object, adopt(JSStringCreateWithUTF8CString("left")).get(), JSValueMakeNumber(m_context.get(), rect.origin.x), kJSPropertyAttributeNone, nullptr);
+ JSObjectSetProperty(m_context.get(), object, adopt(JSStringCreateWithUTF8CString("top")).get(), JSValueMakeNumber(m_context.get(), rect.origin.y), kJSPropertyAttributeNone, nullptr);
+ JSObjectSetProperty(m_context.get(), object, adopt(JSStringCreateWithUTF8CString("width")).get(), JSValueMakeNumber(m_context.get(), rect.size.width), kJSPropertyAttributeNone, nullptr);
+ JSObjectSetProperty(m_context.get(), object, adopt(JSStringCreateWithUTF8CString("height")).get(), JSValueMakeNumber(m_context.get(), rect.size.height), kJSPropertyAttributeNone, nullptr);
+
+ return object;
+}
+
+bool UIScriptContext::currentParentCallbackHasOutstandingAsyncTasks() const
+{
+ for (auto entry : m_callbacks) {
+ unsigned callbackID = entry.key;
+ Task task = entry.value;
+ if (task.parentScriptCallbackID == m_currentScriptCallbackID && !isPersistentCallbackID(callbackID))
+ return true;
+ }
+
+ return false;
+}
+
diff --git a/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h b/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h
new file mode 100644
index 000000000..b17c696c0
--- /dev/null
+++ b/Tools/WebKitTestRunner/UIScriptContext/UIScriptContext.h
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 UIScriptContext_h
+#define UIScriptContext_h
+
+#include <JavaScriptCore/JSRetainPtr.h>
+#include <wtf/HashMap.h>
+#include <wtf/RefPtr.h>
+
+namespace WTR {
+
+class UIScriptController;
+
+class UIScriptContextDelegate {
+public:
+ virtual void uiScriptDidComplete(WKStringRef result, unsigned callbackID) = 0;
+};
+
+const unsigned firstNonPersistentCallbackID = 1000;
+
+typedef enum {
+ CallbackTypeWillBeginZooming = 0,
+ CallbackTypeDidEndZooming,
+ CallbackTypeDidShowKeyboard,
+ CallbackTypeDidHideKeyboard,
+ CallbackTypeDidEndScrolling,
+ CallbackTypeNonPersistent = firstNonPersistentCallbackID
+} CallbackType;
+
+class UIScriptContext {
+ WTF_MAKE_NONCOPYABLE(UIScriptContext);
+public:
+ UIScriptContext(UIScriptContextDelegate&);
+ ~UIScriptContext();
+
+ void runUIScript(WKStringRef script, unsigned scriptCallbackID);
+ void requestUIScriptCompletion(JSStringRef);
+
+ // For one-shot tasks callbacks.
+ unsigned prepareForAsyncTask(JSValueRef taskCallback, CallbackType);
+ void asyncTaskComplete(unsigned taskCallbackID);
+
+ // For persistent callbacks.
+ unsigned registerCallback(JSValueRef taskCallback, CallbackType);
+ JSValueRef callbackWithID(unsigned callbackID);
+ void unregisterCallback(unsigned callbackID);
+ void fireCallback(unsigned callbackID);
+
+ unsigned nextTaskCallbackID(CallbackType);
+
+ JSObjectRef objectFromRect(const WKRect&) const;
+
+private:
+ JSRetainPtr<JSGlobalContextRef> m_context;
+
+ bool hasOutstandingAsyncTasks() const { return !m_callbacks.isEmpty(); }
+ bool currentParentCallbackIsPendingCompletion() const { return m_uiScriptResultsPendingCompletion.contains(m_currentScriptCallbackID); }
+ bool currentParentCallbackHasOutstandingAsyncTasks() const;
+ void tryToCompleteUIScriptForCurrentParentCallback();
+
+ struct Task {
+ unsigned parentScriptCallbackID { 0 };
+ JSValueRef callback { nullptr };
+ };
+ HashMap<unsigned, Task> m_callbacks;
+ HashMap<unsigned, JSStringRef> m_uiScriptResultsPendingCompletion;
+
+ UIScriptContextDelegate& m_delegate;
+ RefPtr<UIScriptController> m_controller;
+
+ unsigned m_currentScriptCallbackID { 0 };
+ unsigned m_nextTaskCallbackID { 0 };
+};
+
+}
+
+#endif // UIScriptContext_h
diff --git a/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp b/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp
new file mode 100644
index 000000000..658240282
--- /dev/null
+++ b/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.cpp
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 "UIScriptController.h"
+
+#include "JSUIScriptController.h"
+#include "UIScriptContext.h"
+#include <JavaScriptCore/JSValueRef.h>
+
+namespace WTR {
+
+UIScriptController::UIScriptController(UIScriptContext& context)
+ : m_context(&context)
+{
+}
+
+void UIScriptController::contextDestroyed()
+{
+ m_context = nullptr;
+}
+
+void UIScriptController::makeWindowObject(JSContextRef context, JSObjectRef windowObject, JSValueRef* exception)
+{
+ setProperty(context, windowObject, "uiController", this, kJSPropertyAttributeReadOnly | kJSPropertyAttributeDontDelete, exception);
+}
+
+JSClassRef UIScriptController::wrapperClass()
+{
+ return JSUIScriptController::uIScriptControllerClass();
+}
+
+#if !PLATFORM(COCOA)
+void UIScriptController::doAsyncTask(JSValueRef)
+{
+}
+#endif
+
+void UIScriptController::setWillBeginZoomingCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeWillBeginZooming);
+ platformSetWillBeginZoomingCallback();
+}
+
+JSValueRef UIScriptController::willBeginZoomingCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeWillBeginZooming);
+}
+
+void UIScriptController::setDidEndZoomingCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidEndZooming);
+ platformSetDidEndZoomingCallback();
+}
+
+JSValueRef UIScriptController::didEndZoomingCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidEndZooming);
+}
+
+void UIScriptController::setDidEndScrollingCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidEndScrolling);
+ platformSetDidEndScrollingCallback();
+}
+
+JSValueRef UIScriptController::didEndScrollingCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidEndScrolling);
+}
+
+void UIScriptController::setDidShowKeyboardCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidShowKeyboard);
+ platformSetDidShowKeyboardCallback();
+}
+
+JSValueRef UIScriptController::didShowKeyboardCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidShowKeyboard);
+}
+
+void UIScriptController::setDidHideKeyboardCallback(JSValueRef callback)
+{
+ m_context->registerCallback(callback, CallbackTypeDidHideKeyboard);
+ platformSetDidHideKeyboardCallback();
+}
+
+JSValueRef UIScriptController::didHideKeyboardCallback() const
+{
+ return m_context->callbackWithID(CallbackTypeDidHideKeyboard);
+}
+
+#if !PLATFORM(IOS)
+void UIScriptController::zoomToScale(double, JSValueRef)
+{
+}
+
+void UIScriptController::touchDownAtPoint(long x, long y, long touchCount, JSValueRef)
+{
+}
+
+void UIScriptController::liftUpAtPoint(long x, long y, long touchCount, JSValueRef)
+{
+}
+
+void UIScriptController::singleTapAtPoint(long x, long y, JSValueRef)
+{
+}
+
+void UIScriptController::doubleTapAtPoint(long x, long y, JSValueRef)
+{
+}
+
+void UIScriptController::typeCharacterUsingHardwareKeyboard(JSStringRef, JSValueRef)
+{
+}
+
+void UIScriptController::keyUpUsingHardwareKeyboard(JSStringRef, JSValueRef)
+{
+}
+
+void UIScriptController::keyDownUsingHardwareKeyboard(JSStringRef, JSValueRef)
+{
+}
+
+double UIScriptController::zoomScale() const
+{
+ return 1;
+}
+
+double UIScriptController::minimumZoomScale() const
+{
+ return 1;
+}
+
+double UIScriptController::maximumZoomScale() const
+{
+ return 1;
+}
+
+JSObjectRef UIScriptController::contentVisibleRect() const
+{
+ return nullptr;
+}
+
+void UIScriptController::platformSetWillBeginZoomingCallback()
+{
+}
+
+void UIScriptController::platformSetDidEndZoomingCallback()
+{
+}
+
+void UIScriptController::platformSetDidEndScrollingCallback()
+{
+}
+
+void UIScriptController::platformSetDidShowKeyboardCallback()
+{
+}
+
+void UIScriptController::platformSetDidHideKeyboardCallback()
+{
+}
+
+void UIScriptController::platformClearAllCallbacks()
+{
+}
+#endif
+
+void UIScriptController::uiScriptComplete(JSStringRef result)
+{
+ m_context->requestUIScriptCompletion(result);
+ platformClearAllCallbacks();
+}
+
+}
diff --git a/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h b/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h
new file mode 100644
index 000000000..8acef607f
--- /dev/null
+++ b/Tools/WebKitTestRunner/UIScriptContext/UIScriptController.h
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2015 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. 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 INC. 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 UIScriptController_h
+#define UIScriptController_h
+
+#include "JSWrappable.h"
+#include <wtf/Ref.h>
+
+namespace WTR {
+
+class UIScriptContext;
+
+class UIScriptController : public JSWrappable {
+public:
+ static Ref<UIScriptController> create(UIScriptContext& context)
+ {
+ return adoptRef(*new UIScriptController(context));
+ }
+
+ void contextDestroyed();
+
+ void makeWindowObject(JSContextRef, JSObjectRef windowObject, JSValueRef* exception);
+
+ void doAsyncTask(JSValueRef callback);
+ void zoomToScale(double scale, JSValueRef callback);
+
+ void touchDownAtPoint(long x, long y, long touchCount, JSValueRef callback);
+ void liftUpAtPoint(long x, long y, long touchCount, JSValueRef callback);
+ void singleTapAtPoint(long x, long y, JSValueRef callback);
+ void doubleTapAtPoint(long x, long y, JSValueRef callback);
+
+ void typeCharacterUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
+ void keyDownUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
+ void keyUpUsingHardwareKeyboard(JSStringRef character, JSValueRef callback);
+
+ void setWillBeginZoomingCallback(JSValueRef);
+ JSValueRef willBeginZoomingCallback() const;
+
+ void setDidEndZoomingCallback(JSValueRef);
+ JSValueRef didEndZoomingCallback() const;
+
+ void setDidShowKeyboardCallback(JSValueRef);
+ JSValueRef didShowKeyboardCallback() const;
+
+ void setDidHideKeyboardCallback(JSValueRef);
+ JSValueRef didHideKeyboardCallback() const;
+
+ void setDidEndScrollingCallback(JSValueRef);
+ JSValueRef didEndScrollingCallback() const;
+
+ double zoomScale() const;
+ double minimumZoomScale() const;
+ double maximumZoomScale() const;
+
+ JSObjectRef contentVisibleRect() const;
+
+ void uiScriptComplete(JSStringRef result);
+
+private:
+ UIScriptController(UIScriptContext&);
+
+ void platformSetWillBeginZoomingCallback();
+ void platformSetDidEndZoomingCallback();
+ void platformSetDidShowKeyboardCallback();
+ void platformSetDidHideKeyboardCallback();
+ void platformSetDidEndScrollingCallback();
+ void platformClearAllCallbacks();
+
+ virtual JSClassRef wrapperClass() override;
+
+ JSObjectRef objectFromRect(const WKRect&) const;
+
+ UIScriptContext* m_context;
+};
+
+}
+
+#endif // UIScriptController_h
diff --git a/Tools/WebKitTestRunner/WebKitTestRunner.pro b/Tools/WebKitTestRunner/WebKitTestRunner.pro
deleted file mode 100644
index e00a45471..000000000
--- a/Tools/WebKitTestRunner/WebKitTestRunner.pro
+++ /dev/null
@@ -1,21 +0,0 @@
-# -------------------------------------------------------------------
-# Main project file for WebKitTestRunner (WTR)
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-TEMPLATE = subdirs
-CONFIG += ordered
-
-derived_sources.file = DerivedSources.pri
-target.file = Target.pri
-
-SUBDIRS = derived_sources target
-
-addStrictSubdirOrderBetween(derived_sources, target)
-
-injected_bundle.file = InjectedBundle/InjectedBundle.pro
-injected_bundle.makefile = Makefile.InjectedBundle
-SUBDIRS += injected_bundle
-
-
diff --git a/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj b/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
deleted file mode 100644
index ac608936d..000000000
--- a/Tools/WebKitTestRunner/WebKitTestRunner.xcodeproj/project.pbxproj
+++ /dev/null
@@ -1,806 +0,0 @@
-// !$*UTF8*$!
-{
- archiveVersion = 1;
- classes = {
- };
- objectVersion = 45;
- objects = {
-
-/* Begin PBXAggregateTarget section */
- BC952D7711F3BF5D003398B4 /* Derived Sources */ = {
- isa = PBXAggregateTarget;
- buildConfigurationList = BC952D7D11F3BF6A003398B4 /* Build configuration list for PBXAggregateTarget "Derived Sources" */;
- buildPhases = (
- BC952D8211F3BF78003398B4 /* Generate Derived Sources */,
- );
- dependencies = (
- );
- name = "Derived Sources";
- productName = "Derived Sources";
- };
-/* End PBXAggregateTarget section */
-
-/* Begin PBXBuildFile section */
- 0F5169CB1445222D00E0A9D7 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F5169CA1445222D00E0A9D7 /* WebKit.framework */; };
- 0F5169CC1445222D00E0A9D7 /* WebKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0F5169CA1445222D00E0A9D7 /* WebKit.framework */; };
- 0FAF67EF160D6C100077CB2B /* InjectedBundlePageMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0FAF67EE160D6C100077CB2B /* InjectedBundlePageMac.mm */; };
- 26D758E7160BECDD00268472 /* GeolocationProviderMock.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 26D758E5160BECDC00268472 /* GeolocationProviderMock.cpp */; };
- 29210EAE144CACB700835BB5 /* AccessibilityUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */; };
- 29210EB0144CACBD00835BB5 /* AccessibilityController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EA2144CAAA500835BB5 /* AccessibilityController.cpp */; };
- 29210EB4144CACD500835BB5 /* AccessibilityTextMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EB1144CACD400835BB5 /* AccessibilityTextMarker.cpp */; };
- 29210EB5144CACD500835BB5 /* AccessibilityTextMarkerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29210EB3144CACD400835BB5 /* AccessibilityTextMarkerMac.mm */; };
- 29210EDA144CC3EA00835BB5 /* AccessibilityUIElementMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */; };
- 29210EDA144CC3EA00835BB6 /* AccessibilityCommonMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */; };
- 29210EDB144CD47900835BB5 /* JSAccessibilityController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 583913D014335E95008307E5 /* JSAccessibilityController.cpp */; };
- 29210EE1144CDB2600835BB5 /* JSAccessibilityUIElement.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EDB146727E711835BB5 /* JSAccessibilityUIElement.cpp */; };
- 29A8FCCB145EF02E009045A6 /* JSAccessibilityTextMarker.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29210EE1144CDE6789815EE5 /* JSAccessibilityTextMarker.cpp */; };
- 29A8FCDD145F0337009045A6 /* JSAccessibilityTextMarkerRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE1345E7021006AA5A6 /* JSAccessibilityTextMarkerRange.cpp */; };
- 29A8FCE2145F037B009045A6 /* AccessibilityTextMarkerRange.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */; };
- 29A8FCE5145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */; };
- 3164C8F015D1ADA100EF1FE0 /* WebNotificationProvider.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */; };
- 4429FC5F1627089600F66D8B /* WorkQueueManager.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4429FC5E1627089600F66D8B /* WorkQueueManager.cpp */; };
- 5322FB4313FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5322FB4113FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp */; };
- 5322FB4613FDA0EA0041ABCC /* PixelDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5322FB4413FDA0EA0041ABCC /* PixelDumpSupport.cpp */; };
- 5641E2D014335E95008307E5 /* JSTextInputController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5641E2CE14335E95008307E5 /* JSTextInputController.cpp */; };
- 5664A49A14326384008881BE /* TextInputController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5664A49814326384008881BE /* TextInputController.cpp */; };
- 5670B8281386FCA5002EB355 /* EventSenderProxy.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5670B8271386FCA5002EB355 /* EventSenderProxy.mm */; };
- 5C45C30F17398E290079714E /* WebArchiveDumpSupportMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 5C45C30E17398E290079714E /* WebArchiveDumpSupportMac.mm */; };
- 5C45C31317398E480079714E /* WebArchiveDumpSupport.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 5C45C31117398E480079714E /* WebArchiveDumpSupport.cpp */; };
- 6510A78211EC643800410867 /* AHEM____.TTF in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77711EC643800410867 /* AHEM____.TTF */; };
- 6510A78411EC643800410867 /* WebKitWeightWatcher100.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77911EC643800410867 /* WebKitWeightWatcher100.ttf */; };
- 6510A78511EC643800410867 /* WebKitWeightWatcher200.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77A11EC643800410867 /* WebKitWeightWatcher200.ttf */; };
- 6510A78611EC643800410867 /* WebKitWeightWatcher300.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77B11EC643800410867 /* WebKitWeightWatcher300.ttf */; };
- 6510A78711EC643800410867 /* WebKitWeightWatcher400.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77C11EC643800410867 /* WebKitWeightWatcher400.ttf */; };
- 6510A78811EC643800410867 /* WebKitWeightWatcher500.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77D11EC643800410867 /* WebKitWeightWatcher500.ttf */; };
- 6510A78911EC643800410867 /* WebKitWeightWatcher600.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77E11EC643800410867 /* WebKitWeightWatcher600.ttf */; };
- 6510A78A11EC643800410867 /* WebKitWeightWatcher700.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A77F11EC643800410867 /* WebKitWeightWatcher700.ttf */; };
- 6510A78B11EC643800410867 /* WebKitWeightWatcher800.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A78011EC643800410867 /* WebKitWeightWatcher800.ttf */; };
- 6510A78C11EC643800410867 /* WebKitWeightWatcher900.ttf in Resources */ = {isa = PBXBuildFile; fileRef = 6510A78111EC643800410867 /* WebKitWeightWatcher900.ttf */; };
- 65EB85A011EC67CC0034D300 /* ActivateFonts.mm in Sources */ = {isa = PBXBuildFile; fileRef = 65EB859F11EC67CC0034D300 /* ActivateFonts.mm */; };
- 8034C6621487636400AC32E9 /* AccessibilityControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */; };
- 8097338A14874A5A008156D9 /* AccessibilityNotificationHandler.mm in Sources */ = {isa = PBXBuildFile; fileRef = 8097338914874A5A008156D9 /* AccessibilityNotificationHandler.mm */; };
- 8CCDA823151A570B0003F937 /* SampleFont.sfont in Resources */ = {isa = PBXBuildFile; fileRef = 8CCDA822151A570B0003F937 /* SampleFont.sfont */; };
- A664BC7613A5F3A9009A7B25 /* libWebCoreTestSupport.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = 41230E16138C78BF00BCCFCA /* libWebCoreTestSupport.dylib */; };
- BC14E4DB120E02D000826C0C /* GCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC14E4D9120E02D000826C0C /* GCController.cpp */; };
- BC14E4EA120E03D800826C0C /* JSGCController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC14E4E8120E03D800826C0C /* JSGCController.cpp */; };
- BC25193E11D15D8B002EBC01 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934A411906584005EA8E2 /* Cocoa.framework */; };
- BC25193F11D15D8B002EBC01 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934AB1190658C005EA8E2 /* WebKit2.framework */; };
- BC25194011D15D8B002EBC01 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */; };
- BC251A3E11D16831002EBC01 /* InjectedBundleMain.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC25184611D15767002EBC01 /* InjectedBundleMain.cpp */; };
- BC793400118F7C84005EA8E2 /* main.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7933FF118F7C84005EA8E2 /* main.mm */; };
- BC793431118F7F19005EA8E2 /* TestController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC793430118F7F19005EA8E2 /* TestController.cpp */; };
- BC7934A511906584005EA8E2 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934A411906584005EA8E2 /* Cocoa.framework */; };
- BC7934AC1190658C005EA8E2 /* WebKit2.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BC7934AB1190658C005EA8E2 /* WebKit2.framework */; };
- BC7934E811906846005EA8E2 /* PlatformWebViewMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC7934E711906846005EA8E2 /* PlatformWebViewMac.mm */; };
- BC8C795C11D2785D004535A1 /* TestControllerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8C795B11D2785D004535A1 /* TestControllerMac.mm */; };
- BC8DAD7B1316D91000EC96FC /* InjectedBundleMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = BC8DAD771316D7B900EC96FC /* InjectedBundleMac.mm */; };
- BC8FD8CA120E527F00F3E71A /* EventSendingController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8FD8C9120E527F00F3E71A /* EventSendingController.cpp */; };
- BC8FD8D2120E545B00F3E71A /* JSEventSendingController.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC8FD8D0120E545B00F3E71A /* JSEventSendingController.cpp */; };
- BC9192051333E4F8003011DC /* TestInvocationCG.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC9192041333E4F8003011DC /* TestInvocationCG.cpp */; };
- BC952C0D11F3B965003398B4 /* JSWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC952C0C11F3B965003398B4 /* JSWrapper.cpp */; };
- BC952F1F11F3C652003398B4 /* JSTestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BC952F1D11F3C652003398B4 /* JSTestRunner.cpp */; };
- BCC997A411D3C8F60017BCA2 /* InjectedBundle.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC997A011D3C8F60017BCA2 /* InjectedBundle.cpp */; };
- BCC997A511D3C8F60017BCA2 /* InjectedBundlePage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC997A211D3C8F60017BCA2 /* InjectedBundlePage.cpp */; };
- BCC9981811D3F51E0017BCA2 /* TestRunner.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCC9981711D3F51E0017BCA2 /* TestRunner.cpp */; };
- BCD7D2F811921278006DB7EE /* TestInvocation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = BCD7D2F711921278006DB7EE /* TestInvocation.cpp */; };
- BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */; };
- C0CE720B1247C93300BC0EC4 /* TestRunnerMac.mm in Sources */ = {isa = PBXBuildFile; fileRef = C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */; };
- E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1BA671D1742DA5A00C20251 /* Carbon.framework */; };
-/* End PBXBuildFile section */
-
-/* Begin PBXContainerItemProxy section */
- BC25194111D15D94002EBC01 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = BC25186111D15D54002EBC01;
- remoteInfo = InjectedBundle;
- };
- BC952ED611F3C38B003398B4 /* PBXContainerItemProxy */ = {
- isa = PBXContainerItemProxy;
- containerPortal = 08FB7793FE84155DC02AAC07 /* Project object */;
- proxyType = 1;
- remoteGlobalIDString = BC952D7711F3BF5D003398B4;
- remoteInfo = "Derived Sources";
- };
-/* End PBXContainerItemProxy section */
-
-/* Begin PBXFileReference section */
- 0F5169CA1445222D00E0A9D7 /* WebKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- 0FAF67EE160D6C100077CB2B /* InjectedBundlePageMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundlePageMac.mm; sourceTree = "<group>"; };
- 26D758E5160BECDC00268472 /* GeolocationProviderMock.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GeolocationProviderMock.cpp; sourceTree = "<group>"; };
- 26D758E6160BECDD00268472 /* GeolocationProviderMock.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GeolocationProviderMock.h; sourceTree = "<group>"; };
- 29210EA2144CAAA500835BB5 /* AccessibilityController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityController.cpp; sourceTree = "<group>"; };
- 29210EA3144CAAA500835BB5 /* AccessibilityController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityController.h; sourceTree = "<group>"; };
- 29210EA8144CAB8800835BB5 /* AccessibilityController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AccessibilityController.idl; sourceTree = "<group>"; };
- 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityUIElement.cpp; sourceTree = "<group>"; };
- 29210EAA144CACB200835BB5 /* AccessibilityUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityUIElement.h; sourceTree = "<group>"; };
- 29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityUIElementMac.mm; path = mac/AccessibilityUIElementMac.mm; sourceTree = "<group>"; };
- 29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityCommonMac.mm; path = mac/AccessibilityCommonMac.mm; sourceTree = "<group>"; };
- 29210EB1144CACD400835BB5 /* AccessibilityTextMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTextMarker.cpp; sourceTree = "<group>"; };
- 29210EB2144CACD400835BB5 /* AccessibilityTextMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTextMarker.h; sourceTree = "<group>"; };
- 29210EB3144CACD400835BB5 /* AccessibilityTextMarkerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityTextMarkerMac.mm; path = mac/AccessibilityTextMarkerMac.mm; sourceTree = "<group>"; };
- 29210EDB146727E711835BB5 /* JSAccessibilityUIElement.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAccessibilityUIElement.cpp; path = DerivedSources/WebKitTestRunner/JSAccessibilityUIElement.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- 29210EDB146727E811835BB5 /* JSAccessibilityUIElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAccessibilityUIElement.h; path = DerivedSources/WebKitTestRunner/JSAccessibilityUIElement.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 29210EDC144CD56E00835BB5 /* AccessibilityUIElement.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AccessibilityUIElement.idl; sourceTree = "<group>"; };
- 29210EE1144CDE6789815EE5 /* JSAccessibilityTextMarker.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAccessibilityTextMarker.cpp; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarker.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- 29210EE1145CDE6789815EE5 /* JSAccessibilityTextMarker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAccessibilityTextMarker.h; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarker.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 29A8FCC5145B93C6009045A6 /* AccessibilityTextMarker.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = AccessibilityTextMarker.idl; sourceTree = "<group>"; };
- 29A8FCD2145EF8F2009045A6 /* AccessibilityTextMarkerRange.idl */ = {isa = PBXFileReference; lastKnownFileType = text; path = AccessibilityTextMarkerRange.idl; sourceTree = "<group>"; };
- 29A8FCDF145F0358009045A6 /* AccessibilityTextMarkerRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AccessibilityTextMarkerRange.h; sourceTree = "<group>"; };
- 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = AccessibilityTextMarkerRange.cpp; sourceTree = "<group>"; };
- 29A8FCE1345E7021006AA5A6 /* JSAccessibilityTextMarkerRange.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAccessibilityTextMarkerRange.cpp; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarkerRange.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- 29A8FCE1345E7021006AA5A7 /* JSAccessibilityTextMarkerRange.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAccessibilityTextMarkerRange.h; path = DerivedSources/WebKitTestRunner/JSAccessibilityTextMarkerRange.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityTextMarkerRangeMac.mm; path = mac/AccessibilityTextMarkerRangeMac.mm; sourceTree = "<group>"; };
- 3110BE0F15BA011400D216AC /* WebNotificationProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = WebNotificationProvider.h; sourceTree = "<group>"; };
- 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebNotificationProvider.cpp; sourceTree = "<group>"; };
- 378D442213346D00006A777B /* config.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
- 41230E16138C78BF00BCCFCA /* libWebCoreTestSupport.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; path = libWebCoreTestSupport.dylib; sourceTree = BUILT_PRODUCTS_DIR; };
- 4181731B138AD39D0057AAA4 /* WebCoreTestSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebCoreTestSupport.h; path = WebCoreTestSupport/WebCoreTestSupport.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 4429FC5E1627089600F66D8B /* WorkQueueManager.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WorkQueueManager.cpp; sourceTree = "<group>"; };
- 4429FC611627089600F66D8B /* WorkQueueManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WorkQueueManager.h; sourceTree = "<group>"; };
- 5322FB4113FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = CyclicRedundancyCheck.cpp; sourceTree = "<group>"; };
- 5322FB4213FDA0CD0041ABCC /* CyclicRedundancyCheck.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CyclicRedundancyCheck.h; sourceTree = "<group>"; };
- 5322FB4413FDA0EA0041ABCC /* PixelDumpSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = PixelDumpSupport.cpp; sourceTree = "<group>"; };
- 5322FB4513FDA0EA0041ABCC /* PixelDumpSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PixelDumpSupport.h; sourceTree = "<group>"; };
- 5641E2CE14335E95008307E5 /* JSTextInputController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSTextInputController.cpp; path = DerivedSources/WebKitTestRunner/JSTextInputController.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- 5641E2CF14335E95008307E5 /* JSTextInputController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSTextInputController.h; path = DerivedSources/WebKitTestRunner/JSTextInputController.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 5664A49614326377008881BE /* TextInputController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TextInputController.idl; sourceTree = "<group>"; };
- 5664A49814326384008881BE /* TextInputController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TextInputController.cpp; sourceTree = "<group>"; };
- 5664A49914326384008881BE /* TextInputController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TextInputController.h; sourceTree = "<group>"; };
- 5670B8261386FC13002EB355 /* EventSenderProxy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventSenderProxy.h; sourceTree = "<group>"; };
- 5670B8271386FCA5002EB355 /* EventSenderProxy.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = EventSenderProxy.mm; sourceTree = "<group>"; };
- 583913D014335E95008307E5 /* JSAccessibilityController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSAccessibilityController.cpp; path = DerivedSources/WebKitTestRunner/JSAccessibilityController.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- 583913D114335E95008307E5 /* JSAccessibilityController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSAccessibilityController.h; path = DerivedSources/WebKitTestRunner/JSAccessibilityController.h; sourceTree = BUILT_PRODUCTS_DIR; };
- 5C45C30E17398E290079714E /* WebArchiveDumpSupportMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = WebArchiveDumpSupportMac.mm; path = mac/WebArchiveDumpSupportMac.mm; sourceTree = SOURCE_ROOT; };
- 5C45C31117398E480079714E /* WebArchiveDumpSupport.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebArchiveDumpSupport.cpp; path = cf/WebArchiveDumpSupport.cpp; sourceTree = SOURCE_ROOT; };
- 5C45C31217398E480079714E /* WebArchiveDumpSupport.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebArchiveDumpSupport.h; path = cf/WebArchiveDumpSupport.h; sourceTree = SOURCE_ROOT; };
- 6510A77711EC643800410867 /* AHEM____.TTF */ = {isa = PBXFileReference; lastKnownFileType = file; name = "AHEM____.TTF"; path = "fonts/AHEM____.TTF"; sourceTree = "<group>"; };
- 6510A77911EC643800410867 /* WebKitWeightWatcher100.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher100.ttf; path = fonts/WebKitWeightWatcher100.ttf; sourceTree = "<group>"; };
- 6510A77A11EC643800410867 /* WebKitWeightWatcher200.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher200.ttf; path = fonts/WebKitWeightWatcher200.ttf; sourceTree = "<group>"; };
- 6510A77B11EC643800410867 /* WebKitWeightWatcher300.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher300.ttf; path = fonts/WebKitWeightWatcher300.ttf; sourceTree = "<group>"; };
- 6510A77C11EC643800410867 /* WebKitWeightWatcher400.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher400.ttf; path = fonts/WebKitWeightWatcher400.ttf; sourceTree = "<group>"; };
- 6510A77D11EC643800410867 /* WebKitWeightWatcher500.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher500.ttf; path = fonts/WebKitWeightWatcher500.ttf; sourceTree = "<group>"; };
- 6510A77E11EC643800410867 /* WebKitWeightWatcher600.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher600.ttf; path = fonts/WebKitWeightWatcher600.ttf; sourceTree = "<group>"; };
- 6510A77F11EC643800410867 /* WebKitWeightWatcher700.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher700.ttf; path = fonts/WebKitWeightWatcher700.ttf; sourceTree = "<group>"; };
- 6510A78011EC643800410867 /* WebKitWeightWatcher800.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher800.ttf; path = fonts/WebKitWeightWatcher800.ttf; sourceTree = "<group>"; };
- 6510A78111EC643800410867 /* WebKitWeightWatcher900.ttf */ = {isa = PBXFileReference; lastKnownFileType = file; name = WebKitWeightWatcher900.ttf; path = fonts/WebKitWeightWatcher900.ttf; sourceTree = "<group>"; };
- 65EB859D11EC67CC0034D300 /* ActivateFonts.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ActivateFonts.h; sourceTree = "<group>"; };
- 65EB859F11EC67CC0034D300 /* ActivateFonts.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ActivateFonts.mm; sourceTree = "<group>"; };
- 8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityControllerMac.mm; path = mac/AccessibilityControllerMac.mm; sourceTree = "<group>"; };
- 8097338814874A5A008156D9 /* AccessibilityNotificationHandler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AccessibilityNotificationHandler.h; path = mac/AccessibilityNotificationHandler.h; sourceTree = "<group>"; };
- 8097338914874A5A008156D9 /* AccessibilityNotificationHandler.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = AccessibilityNotificationHandler.mm; path = mac/AccessibilityNotificationHandler.mm; sourceTree = "<group>"; };
- 8CCDA822151A570B0003F937 /* SampleFont.sfont */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; name = SampleFont.sfont; path = fonts/SampleFont.sfont; sourceTree = "<group>"; };
- 8DD76FA10486AA7600D96B5E /* WebKitTestRunner */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = WebKitTestRunner; sourceTree = BUILT_PRODUCTS_DIR; };
- BC14E4D8120E02D000826C0C /* GCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GCController.h; sourceTree = "<group>"; };
- BC14E4D9120E02D000826C0C /* GCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = GCController.cpp; sourceTree = "<group>"; };
- BC14E4E1120E032000826C0C /* GCController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = GCController.idl; sourceTree = "<group>"; };
- BC14E4E8120E03D800826C0C /* JSGCController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSGCController.cpp; path = DerivedSources/WebKitTestRunner/JSGCController.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- BC14E4E9120E03D800826C0C /* JSGCController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSGCController.h; path = DerivedSources/WebKitTestRunner/JSGCController.h; sourceTree = BUILT_PRODUCTS_DIR; };
- BC25184611D15767002EBC01 /* InjectedBundleMain.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundleMain.cpp; sourceTree = "<group>"; };
- BC25186211D15D54002EBC01 /* WebKitTestRunnerInjectedBundle.bundle */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WebKitTestRunnerInjectedBundle.bundle; sourceTree = BUILT_PRODUCTS_DIR; };
- BC25186311D15D54002EBC01 /* InjectedBundle-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "InjectedBundle-Info.plist"; sourceTree = "<group>"; };
- BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = InjectedBundle.xcconfig; sourceTree = "<group>"; };
- BC251A1711D16774002EBC01 /* WebKitTestRunnerPrefix.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebKitTestRunnerPrefix.h; sourceTree = "<group>"; };
- BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = WebKitTestRunner.xcconfig; sourceTree = "<group>"; };
- BC7933FF118F7C84005EA8E2 /* main.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = main.mm; sourceTree = "<group>"; };
- BC793426118F7D3C005EA8E2 /* Base.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = Base.xcconfig; sourceTree = "<group>"; };
- BC793427118F7DAF005EA8E2 /* DebugRelease.xcconfig */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xcconfig; path = DebugRelease.xcconfig; sourceTree = "<group>"; };
- BC79342F118F7F19005EA8E2 /* TestController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestController.h; sourceTree = "<group>"; };
- BC793430118F7F19005EA8E2 /* TestController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestController.cpp; sourceTree = "<group>"; };
- BC7934A411906584005EA8E2 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
- BC7934AB1190658C005EA8E2 /* WebKit2.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = WebKit2.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- BC7934DD119066EC005EA8E2 /* PlatformWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PlatformWebView.h; sourceTree = "<group>"; };
- BC7934E711906846005EA8E2 /* PlatformWebViewMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = PlatformWebViewMac.mm; sourceTree = "<group>"; };
- BC8C795B11D2785D004535A1 /* TestControllerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = TestControllerMac.mm; sourceTree = "<group>"; };
- BC8DAD771316D7B900EC96FC /* InjectedBundleMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = InjectedBundleMac.mm; sourceTree = "<group>"; };
- BC8FD8C8120E527F00F3E71A /* EventSendingController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EventSendingController.h; sourceTree = "<group>"; };
- BC8FD8C9120E527F00F3E71A /* EventSendingController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EventSendingController.cpp; sourceTree = "<group>"; };
- BC8FD8CB120E52B000F3E71A /* EventSendingController.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = EventSendingController.idl; sourceTree = "<group>"; };
- BC8FD8D0120E545B00F3E71A /* JSEventSendingController.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSEventSendingController.cpp; path = DerivedSources/WebKitTestRunner/JSEventSendingController.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- BC8FD8D1120E545B00F3E71A /* JSEventSendingController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSEventSendingController.h; path = DerivedSources/WebKitTestRunner/JSEventSendingController.h; sourceTree = BUILT_PRODUCTS_DIR; };
- BC9192041333E4F8003011DC /* TestInvocationCG.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = TestInvocationCG.cpp; path = cg/TestInvocationCG.cpp; sourceTree = "<group>"; };
- BC952C0B11F3B965003398B4 /* JSWrapper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWrapper.h; sourceTree = "<group>"; };
- BC952C0C11F3B965003398B4 /* JSWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JSWrapper.cpp; sourceTree = "<group>"; };
- BC952C0E11F3B97B003398B4 /* JSWrappable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JSWrappable.h; sourceTree = "<group>"; };
- BC952EC511F3C10F003398B4 /* DerivedSources.make */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = DerivedSources.make; sourceTree = "<group>"; };
- BC952ED211F3C29F003398B4 /* TestRunner.idl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = TestRunner.idl; sourceTree = "<group>"; };
- BC952ED311F3C318003398B4 /* CodeGeneratorTestRunner.pm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.script.perl; path = CodeGeneratorTestRunner.pm; sourceTree = "<group>"; };
- BC952F1D11F3C652003398B4 /* JSTestRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = JSTestRunner.cpp; path = DerivedSources/WebKitTestRunner/JSTestRunner.cpp; sourceTree = BUILT_PRODUCTS_DIR; };
- BC952F1E11F3C652003398B4 /* JSTestRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = JSTestRunner.h; path = DerivedSources/WebKitTestRunner/JSTestRunner.h; sourceTree = BUILT_PRODUCTS_DIR; };
- BC99A4841208901A007E9F08 /* StringFunctions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = StringFunctions.h; sourceTree = "<group>"; };
- BCC997A011D3C8F60017BCA2 /* InjectedBundle.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundle.cpp; sourceTree = "<group>"; };
- BCC997A111D3C8F60017BCA2 /* InjectedBundle.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundle.h; sourceTree = "<group>"; };
- BCC997A211D3C8F60017BCA2 /* InjectedBundlePage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = InjectedBundlePage.cpp; sourceTree = "<group>"; };
- BCC997A311D3C8F60017BCA2 /* InjectedBundlePage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = InjectedBundlePage.h; sourceTree = "<group>"; };
- BCC9981611D3F51E0017BCA2 /* TestRunner.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestRunner.h; sourceTree = "<group>"; };
- BCC9981711D3F51E0017BCA2 /* TestRunner.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestRunner.cpp; sourceTree = "<group>"; };
- BCD7D2F611921278006DB7EE /* TestInvocation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TestInvocation.h; sourceTree = "<group>"; };
- BCD7D2F711921278006DB7EE /* TestInvocation.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = TestInvocation.cpp; sourceTree = "<group>"; };
- BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = JavaScriptCore.framework; sourceTree = BUILT_PRODUCTS_DIR; };
- C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = TestRunnerMac.mm; path = mac/TestRunnerMac.mm; sourceTree = "<group>"; };
- E1BA671D1742DA5A00C20251 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = System/Library/Frameworks/Carbon.framework; sourceTree = SDKROOT; };
-/* End PBXFileReference section */
-
-/* Begin PBXFrameworksBuildPhase section */
- 8DD76F9B0486AA7600D96B5E /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC7934A511906584005EA8E2 /* Cocoa.framework in Frameworks */,
- BCDA2B9A1191051F00C3BC47 /* JavaScriptCore.framework in Frameworks */,
- 0F5169CB1445222D00E0A9D7 /* WebKit.framework in Frameworks */,
- E1BA671E1742DA6A00C20251 /* Carbon.framework in Frameworks */,
- BC7934AC1190658C005EA8E2 /* WebKit2.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BC25186011D15D54002EBC01 /* Frameworks */ = {
- isa = PBXFrameworksBuildPhase;
- buildActionMask = 2147483647;
- files = (
- BC25193E11D15D8B002EBC01 /* Cocoa.framework in Frameworks */,
- BC25194011D15D8B002EBC01 /* JavaScriptCore.framework in Frameworks */,
- A664BC7613A5F3A9009A7B25 /* libWebCoreTestSupport.dylib in Frameworks */,
- 0F5169CC1445222D00E0A9D7 /* WebKit.framework in Frameworks */,
- BC25193F11D15D8B002EBC01 /* WebKit2.framework in Frameworks */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXFrameworksBuildPhase section */
-
-/* Begin PBXGroup section */
- 08FB7794FE84155DC02AAC07 /* WebKitTestRunner */ = {
- isa = PBXGroup;
- children = (
- BC952EC511F3C10F003398B4 /* DerivedSources.make */,
- BC99CBF11207642D00FDEE76 /* Shared */,
- 08FB7795FE84155DC02AAC07 /* TestRunner */,
- BC25183511D1571D002EBC01 /* InjectedBundle */,
- BC793401118F7C8A005EA8E2 /* Configurations */,
- 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
- BC25194411D15DBE002EBC01 /* Resources */,
- 1AB674ADFE9D54B511CA2CBB /* Products */,
- );
- name = WebKitTestRunner;
- sourceTree = "<group>";
- };
- 08FB7795FE84155DC02AAC07 /* TestRunner */ = {
- isa = PBXGroup;
- children = (
- BC9192021333E4CD003011DC /* cg */,
- BC7933FE118F7C74005EA8E2 /* mac */,
- 5322FB4113FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp */,
- 5322FB4213FDA0CD0041ABCC /* CyclicRedundancyCheck.h */,
- 5670B8261386FC13002EB355 /* EventSenderProxy.h */,
- 26D758E5160BECDC00268472 /* GeolocationProviderMock.cpp */,
- 26D758E6160BECDD00268472 /* GeolocationProviderMock.h */,
- 5322FB4413FDA0EA0041ABCC /* PixelDumpSupport.cpp */,
- 5322FB4513FDA0EA0041ABCC /* PixelDumpSupport.h */,
- BC7934DD119066EC005EA8E2 /* PlatformWebView.h */,
- BC793430118F7F19005EA8E2 /* TestController.cpp */,
- BC79342F118F7F19005EA8E2 /* TestController.h */,
- BCD7D2F711921278006DB7EE /* TestInvocation.cpp */,
- BCD7D2F611921278006DB7EE /* TestInvocation.h */,
- BC251A1711D16774002EBC01 /* WebKitTestRunnerPrefix.h */,
- 3164C8EF15D1ADA100EF1FE0 /* WebNotificationProvider.cpp */,
- 3110BE0F15BA011400D216AC /* WebNotificationProvider.h */,
- 4429FC5E1627089600F66D8B /* WorkQueueManager.cpp */,
- 4429FC611627089600F66D8B /* WorkQueueManager.h */,
- );
- name = TestRunner;
- sourceTree = "<group>";
- };
- 08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
- isa = PBXGroup;
- children = (
- E1BA671D1742DA5A00C20251 /* Carbon.framework */,
- BC7934A411906584005EA8E2 /* Cocoa.framework */,
- BCDA2B991191051F00C3BC47 /* JavaScriptCore.framework */,
- 41230E16138C78BF00BCCFCA /* libWebCoreTestSupport.dylib */,
- 4181731B138AD39D0057AAA4 /* WebCoreTestSupport.h */,
- 0F5169CA1445222D00E0A9D7 /* WebKit.framework */,
- BC7934AB1190658C005EA8E2 /* WebKit2.framework */,
- );
- name = "External Frameworks and Libraries";
- sourceTree = "<group>";
- };
- 1AB674ADFE9D54B511CA2CBB /* Products */ = {
- isa = PBXGroup;
- children = (
- 8DD76FA10486AA7600D96B5E /* WebKitTestRunner */,
- BC25186211D15D54002EBC01 /* WebKitTestRunnerInjectedBundle.bundle */,
- );
- name = Products;
- sourceTree = "<group>";
- };
- 29A8FCE0145F035D009045A6 /* Accessibility */ = {
- isa = PBXGroup;
- children = (
- 29210EAB144CACB200835BB6 /* AccessibilityCommonMac.mm */,
- 29210EA2144CAAA500835BB5 /* AccessibilityController.cpp */,
- 29210EA3144CAAA500835BB5 /* AccessibilityController.h */,
- 8034C6611487636400AC32E9 /* AccessibilityControllerMac.mm */,
- 8097338814874A5A008156D9 /* AccessibilityNotificationHandler.h */,
- 8097338914874A5A008156D9 /* AccessibilityNotificationHandler.mm */,
- 29210EB1144CACD400835BB5 /* AccessibilityTextMarker.cpp */,
- 29210EB2144CACD400835BB5 /* AccessibilityTextMarker.h */,
- 29210EB3144CACD400835BB5 /* AccessibilityTextMarkerMac.mm */,
- 29A8FCE1145F037B009045A6 /* AccessibilityTextMarkerRange.cpp */,
- 29A8FCDF145F0358009045A6 /* AccessibilityTextMarkerRange.h */,
- 29A8FCE4145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm */,
- 29210EA9144CACB200835BB5 /* AccessibilityUIElement.cpp */,
- 29210EAA144CACB200835BB5 /* AccessibilityUIElement.h */,
- 29210EAB144CACB200835BB5 /* AccessibilityUIElementMac.mm */,
- );
- name = Accessibility;
- sourceTree = "<group>";
- };
- 5C45C31017398E370079714E /* cf */ = {
- isa = PBXGroup;
- children = (
- 5C45C31117398E480079714E /* WebArchiveDumpSupport.cpp */,
- 5C45C31217398E480079714E /* WebArchiveDumpSupport.h */,
- );
- name = cf;
- sourceTree = "<group>";
- };
- 65EB859E11EC67CC0034D300 /* mac */ = {
- isa = PBXGroup;
- children = (
- 5C45C30E17398E290079714E /* WebArchiveDumpSupportMac.mm */,
- 65EB859F11EC67CC0034D300 /* ActivateFonts.mm */,
- BC8DAD771316D7B900EC96FC /* InjectedBundleMac.mm */,
- 0FAF67EE160D6C100077CB2B /* InjectedBundlePageMac.mm */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- BC14E4E0120E02F900826C0C /* Controllers */ = {
- isa = PBXGroup;
- children = (
- 29A8FCE0145F035D009045A6 /* Accessibility */,
- BC8FD8C9120E527F00F3E71A /* EventSendingController.cpp */,
- BC8FD8C8120E527F00F3E71A /* EventSendingController.h */,
- BC14E4D9120E02D000826C0C /* GCController.cpp */,
- BC14E4D8120E02D000826C0C /* GCController.h */,
- BCC9981711D3F51E0017BCA2 /* TestRunner.cpp */,
- BCC9981611D3F51E0017BCA2 /* TestRunner.h */,
- C0CE720A1247C93300BC0EC4 /* TestRunnerMac.mm */,
- 5664A49814326384008881BE /* TextInputController.cpp */,
- 5664A49914326384008881BE /* TextInputController.h */,
- );
- name = Controllers;
- sourceTree = "<group>";
- };
- BC25183511D1571D002EBC01 /* InjectedBundle */ = {
- isa = PBXGroup;
- children = (
- 5C45C31017398E370079714E /* cf */,
- BC952C0A11F3B939003398B4 /* Bindings */,
- BC14E4E0120E02F900826C0C /* Controllers */,
- BC952D3A11F3BF1F003398B4 /* Derived Sources */,
- 65EB859E11EC67CC0034D300 /* mac */,
- 65EB859D11EC67CC0034D300 /* ActivateFonts.h */,
- BCC997A011D3C8F60017BCA2 /* InjectedBundle.cpp */,
- BCC997A111D3C8F60017BCA2 /* InjectedBundle.h */,
- BC25184611D15767002EBC01 /* InjectedBundleMain.cpp */,
- BCC997A211D3C8F60017BCA2 /* InjectedBundlePage.cpp */,
- BCC997A311D3C8F60017BCA2 /* InjectedBundlePage.h */,
- );
- path = InjectedBundle;
- sourceTree = "<group>";
- };
- BC25194411D15DBE002EBC01 /* Resources */ = {
- isa = PBXGroup;
- children = (
- 6510A77711EC643800410867 /* AHEM____.TTF */,
- BC25186311D15D54002EBC01 /* InjectedBundle-Info.plist */,
- 8CCDA822151A570B0003F937 /* SampleFont.sfont */,
- 6510A77911EC643800410867 /* WebKitWeightWatcher100.ttf */,
- 6510A77A11EC643800410867 /* WebKitWeightWatcher200.ttf */,
- 6510A77B11EC643800410867 /* WebKitWeightWatcher300.ttf */,
- 6510A77C11EC643800410867 /* WebKitWeightWatcher400.ttf */,
- 6510A77D11EC643800410867 /* WebKitWeightWatcher500.ttf */,
- 6510A77E11EC643800410867 /* WebKitWeightWatcher600.ttf */,
- 6510A77F11EC643800410867 /* WebKitWeightWatcher700.ttf */,
- 6510A78011EC643800410867 /* WebKitWeightWatcher800.ttf */,
- 6510A78111EC643800410867 /* WebKitWeightWatcher900.ttf */,
- );
- name = Resources;
- sourceTree = "<group>";
- };
- BC7933FE118F7C74005EA8E2 /* mac */ = {
- isa = PBXGroup;
- children = (
- 5670B8271386FCA5002EB355 /* EventSenderProxy.mm */,
- BC7933FF118F7C84005EA8E2 /* main.mm */,
- BC7934E711906846005EA8E2 /* PlatformWebViewMac.mm */,
- BC8C795B11D2785D004535A1 /* TestControllerMac.mm */,
- );
- path = mac;
- sourceTree = "<group>";
- };
- BC793401118F7C8A005EA8E2 /* Configurations */ = {
- isa = PBXGroup;
- children = (
- BC793426118F7D3C005EA8E2 /* Base.xcconfig */,
- BC793427118F7DAF005EA8E2 /* DebugRelease.xcconfig */,
- BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */,
- BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */,
- );
- path = Configurations;
- sourceTree = "<group>";
- };
- BC9192021333E4CD003011DC /* cg */ = {
- isa = PBXGroup;
- children = (
- BC9192041333E4F8003011DC /* TestInvocationCG.cpp */,
- );
- name = cg;
- sourceTree = "<group>";
- };
- BC952C0A11F3B939003398B4 /* Bindings */ = {
- isa = PBXGroup;
- children = (
- 29210EA8144CAB8800835BB5 /* AccessibilityController.idl */,
- 29A8FCC5145B93C6009045A6 /* AccessibilityTextMarker.idl */,
- 29A8FCD2145EF8F2009045A6 /* AccessibilityTextMarkerRange.idl */,
- 29210EDC144CD56E00835BB5 /* AccessibilityUIElement.idl */,
- BC952ED311F3C318003398B4 /* CodeGeneratorTestRunner.pm */,
- BC8FD8CB120E52B000F3E71A /* EventSendingController.idl */,
- BC14E4E1120E032000826C0C /* GCController.idl */,
- BC952C0E11F3B97B003398B4 /* JSWrappable.h */,
- BC952C0C11F3B965003398B4 /* JSWrapper.cpp */,
- BC952C0B11F3B965003398B4 /* JSWrapper.h */,
- BC952ED211F3C29F003398B4 /* TestRunner.idl */,
- 5664A49614326377008881BE /* TextInputController.idl */,
- );
- path = Bindings;
- sourceTree = "<group>";
- };
- BC952D3A11F3BF1F003398B4 /* Derived Sources */ = {
- isa = PBXGroup;
- children = (
- 583913D014335E95008307E5 /* JSAccessibilityController.cpp */,
- 583913D114335E95008307E5 /* JSAccessibilityController.h */,
- 29210EE1144CDE6789815EE5 /* JSAccessibilityTextMarker.cpp */,
- 29210EE1145CDE6789815EE5 /* JSAccessibilityTextMarker.h */,
- 29A8FCE1345E7021006AA5A6 /* JSAccessibilityTextMarkerRange.cpp */,
- 29A8FCE1345E7021006AA5A7 /* JSAccessibilityTextMarkerRange.h */,
- 29210EDB146727E711835BB5 /* JSAccessibilityUIElement.cpp */,
- 29210EDB146727E811835BB5 /* JSAccessibilityUIElement.h */,
- BC8FD8D0120E545B00F3E71A /* JSEventSendingController.cpp */,
- BC8FD8D1120E545B00F3E71A /* JSEventSendingController.h */,
- BC14E4E8120E03D800826C0C /* JSGCController.cpp */,
- BC14E4E9120E03D800826C0C /* JSGCController.h */,
- BC952F1D11F3C652003398B4 /* JSTestRunner.cpp */,
- BC952F1E11F3C652003398B4 /* JSTestRunner.h */,
- 5641E2CE14335E95008307E5 /* JSTextInputController.cpp */,
- 5641E2CF14335E95008307E5 /* JSTextInputController.h */,
- );
- name = "Derived Sources";
- sourceTree = "<group>";
- };
- BC99CBF11207642D00FDEE76 /* Shared */ = {
- isa = PBXGroup;
- children = (
- 378D442213346D00006A777B /* config.h */,
- BC99A4841208901A007E9F08 /* StringFunctions.h */,
- );
- name = Shared;
- sourceTree = "<group>";
- };
-/* End PBXGroup section */
-
-/* Begin PBXNativeTarget section */
- 8DD76F960486AA7600D96B5E /* WebKitTestRunner */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "WebKitTestRunner" */;
- buildPhases = (
- 8DD76F990486AA7600D96B5E /* Sources */,
- 8DD76F9B0486AA7600D96B5E /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- BC25194211D15D94002EBC01 /* PBXTargetDependency */,
- );
- name = WebKitTestRunner;
- productInstallPath = "$(HOME)/bin";
- productName = WebKitTestRunner;
- productReference = 8DD76FA10486AA7600D96B5E /* WebKitTestRunner */;
- productType = "com.apple.product-type.tool";
- };
- BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */ = {
- isa = PBXNativeTarget;
- buildConfigurationList = BC25186611D15D55002EBC01 /* Build configuration list for PBXNativeTarget "WebKitTestRunnerInjectedBundle" */;
- buildPhases = (
- BC25185E11D15D54002EBC01 /* Resources */,
- BC25185F11D15D54002EBC01 /* Sources */,
- BC25186011D15D54002EBC01 /* Frameworks */,
- );
- buildRules = (
- );
- dependencies = (
- BC952ED711F3C38B003398B4 /* PBXTargetDependency */,
- );
- name = WebKitTestRunnerInjectedBundle;
- productName = InjectedBundle;
- productReference = BC25186211D15D54002EBC01 /* WebKitTestRunnerInjectedBundle.bundle */;
- productType = "com.apple.product-type.bundle";
- };
-/* End PBXNativeTarget section */
-
-/* Begin PBXProject section */
- 08FB7793FE84155DC02AAC07 /* Project object */ = {
- isa = PBXProject;
- attributes = {
- };
- buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "WebKitTestRunner" */;
- compatibilityVersion = "Xcode 3.1";
- developmentRegion = English;
- hasScannedForEncodings = 1;
- knownRegions = (
- English,
- Japanese,
- French,
- German,
- );
- mainGroup = 08FB7794FE84155DC02AAC07 /* WebKitTestRunner */;
- projectDirPath = "";
- projectRoot = "";
- targets = (
- 8DD76F960486AA7600D96B5E /* WebKitTestRunner */,
- BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */,
- BC952D7711F3BF5D003398B4 /* Derived Sources */,
- );
- };
-/* End PBXProject section */
-
-/* Begin PBXResourcesBuildPhase section */
- BC25185E11D15D54002EBC01 /* Resources */ = {
- isa = PBXResourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 6510A78211EC643800410867 /* AHEM____.TTF in Resources */,
- 8CCDA823151A570B0003F937 /* SampleFont.sfont in Resources */,
- 6510A78411EC643800410867 /* WebKitWeightWatcher100.ttf in Resources */,
- 6510A78511EC643800410867 /* WebKitWeightWatcher200.ttf in Resources */,
- 6510A78611EC643800410867 /* WebKitWeightWatcher300.ttf in Resources */,
- 6510A78711EC643800410867 /* WebKitWeightWatcher400.ttf in Resources */,
- 6510A78811EC643800410867 /* WebKitWeightWatcher500.ttf in Resources */,
- 6510A78911EC643800410867 /* WebKitWeightWatcher600.ttf in Resources */,
- 6510A78A11EC643800410867 /* WebKitWeightWatcher700.ttf in Resources */,
- 6510A78B11EC643800410867 /* WebKitWeightWatcher800.ttf in Resources */,
- 6510A78C11EC643800410867 /* WebKitWeightWatcher900.ttf in Resources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXResourcesBuildPhase section */
-
-/* Begin PBXShellScriptBuildPhase section */
- BC952D8211F3BF78003398B4 /* Generate Derived Sources */ = {
- isa = PBXShellScriptBuildPhase;
- buildActionMask = 2147483647;
- files = (
- );
- inputPaths = (
- );
- name = "Generate Derived Sources";
- outputPaths = (
- );
- runOnlyForDeploymentPostprocessing = 0;
- shellPath = /bin/sh;
- shellScript = "mkdir -p \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebKitTestRunner\"\ncd \"${BUILT_PRODUCTS_DIR}/DerivedSources/WebKitTestRunner\"\n\nexport WebKitTestRunner=\"${SRCROOT}\"\nexport WebCoreScripts=\"${WEBCORE_PRIVATE_HEADERS_DIR}\"\n\nif [ ! $CC ]; then\n export CC=\"`xcrun -find clang`\"\nfi\n\nif [ \"${ACTION}\" = \"build\" -o \"${ACTION}\" = \"install\" -o \"${ACTION}\" = \"installhdrs\" ]; then\n make -f \"${WebKitTestRunner}/DerivedSources.make\" -j `/usr/sbin/sysctl -n hw.availcpu`\nfi\n";
- };
-/* End PBXShellScriptBuildPhase section */
-
-/* Begin PBXSourcesBuildPhase section */
- 8DD76F990486AA7600D96B5E /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 5322FB4313FDA0CD0041ABCC /* CyclicRedundancyCheck.cpp in Sources */,
- 5670B8281386FCA5002EB355 /* EventSenderProxy.mm in Sources */,
- 26D758E7160BECDD00268472 /* GeolocationProviderMock.cpp in Sources */,
- BC793400118F7C84005EA8E2 /* main.mm in Sources */,
- 5322FB4613FDA0EA0041ABCC /* PixelDumpSupport.cpp in Sources */,
- BC7934E811906846005EA8E2 /* PlatformWebViewMac.mm in Sources */,
- BC793431118F7F19005EA8E2 /* TestController.cpp in Sources */,
- BC8C795C11D2785D004535A1 /* TestControllerMac.mm in Sources */,
- BCD7D2F811921278006DB7EE /* TestInvocation.cpp in Sources */,
- BC9192051333E4F8003011DC /* TestInvocationCG.cpp in Sources */,
- 3164C8F015D1ADA100EF1FE0 /* WebNotificationProvider.cpp in Sources */,
- 4429FC5F1627089600F66D8B /* WorkQueueManager.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
- BC25185F11D15D54002EBC01 /* Sources */ = {
- isa = PBXSourcesBuildPhase;
- buildActionMask = 2147483647;
- files = (
- 29210EDA144CC3EA00835BB6 /* AccessibilityCommonMac.mm in Sources */,
- 29210EB0144CACBD00835BB5 /* AccessibilityController.cpp in Sources */,
- 8034C6621487636400AC32E9 /* AccessibilityControllerMac.mm in Sources */,
- 8097338A14874A5A008156D9 /* AccessibilityNotificationHandler.mm in Sources */,
- 29210EB4144CACD500835BB5 /* AccessibilityTextMarker.cpp in Sources */,
- 29210EB5144CACD500835BB5 /* AccessibilityTextMarkerMac.mm in Sources */,
- 29A8FCE2145F037B009045A6 /* AccessibilityTextMarkerRange.cpp in Sources */,
- 29A8FCE5145F0464009045A6 /* AccessibilityTextMarkerRangeMac.mm in Sources */,
- 29210EAE144CACB700835BB5 /* AccessibilityUIElement.cpp in Sources */,
- 29210EDA144CC3EA00835BB5 /* AccessibilityUIElementMac.mm in Sources */,
- 65EB85A011EC67CC0034D300 /* ActivateFonts.mm in Sources */,
- BC8FD8CA120E527F00F3E71A /* EventSendingController.cpp in Sources */,
- BC14E4DB120E02D000826C0C /* GCController.cpp in Sources */,
- BCC997A411D3C8F60017BCA2 /* InjectedBundle.cpp in Sources */,
- BC8DAD7B1316D91000EC96FC /* InjectedBundleMac.mm in Sources */,
- BC251A3E11D16831002EBC01 /* InjectedBundleMain.cpp in Sources */,
- BCC997A511D3C8F60017BCA2 /* InjectedBundlePage.cpp in Sources */,
- 0FAF67EF160D6C100077CB2B /* InjectedBundlePageMac.mm in Sources */,
- 29210EDB144CD47900835BB5 /* JSAccessibilityController.cpp in Sources */,
- 29A8FCCB145EF02E009045A6 /* JSAccessibilityTextMarker.cpp in Sources */,
- 29A8FCDD145F0337009045A6 /* JSAccessibilityTextMarkerRange.cpp in Sources */,
- 29210EE1144CDB2600835BB5 /* JSAccessibilityUIElement.cpp in Sources */,
- BC8FD8D2120E545B00F3E71A /* JSEventSendingController.cpp in Sources */,
- BC14E4EA120E03D800826C0C /* JSGCController.cpp in Sources */,
- BC952F1F11F3C652003398B4 /* JSTestRunner.cpp in Sources */,
- 5641E2D014335E95008307E5 /* JSTextInputController.cpp in Sources */,
- BC952C0D11F3B965003398B4 /* JSWrapper.cpp in Sources */,
- BCC9981811D3F51E0017BCA2 /* TestRunner.cpp in Sources */,
- 5C45C30F17398E290079714E /* WebArchiveDumpSupportMac.mm in Sources */,
- 5C45C31317398E480079714E /* WebArchiveDumpSupport.cpp in Sources */,
- C0CE720B1247C93300BC0EC4 /* TestRunnerMac.mm in Sources */,
- 5664A49A14326384008881BE /* TextInputController.cpp in Sources */,
- );
- runOnlyForDeploymentPostprocessing = 0;
- };
-/* End PBXSourcesBuildPhase section */
-
-/* Begin PBXTargetDependency section */
- BC25194211D15D94002EBC01 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = BC25186111D15D54002EBC01 /* WebKitTestRunnerInjectedBundle */;
- targetProxy = BC25194111D15D94002EBC01 /* PBXContainerItemProxy */;
- };
- BC952ED711F3C38B003398B4 /* PBXTargetDependency */ = {
- isa = PBXTargetDependency;
- target = BC952D7711F3BF5D003398B4 /* Derived Sources */;
- targetProxy = BC952ED611F3C38B003398B4 /* PBXContainerItemProxy */;
- };
-/* End PBXTargetDependency section */
-
-/* Begin XCBuildConfiguration section */
- 1DEB927508733DD40010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- 1DEB927608733DD40010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- 1DEB927908733DD40010E9CD /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC793427118F7DAF005EA8E2 /* DebugRelease.xcconfig */;
- buildSettings = {
- DEBUG_DEFINES = "$(DEBUG_DEFINES_debug)";
- GCC_OPTIMIZATION_LEVEL = 0;
- };
- name = Debug;
- };
- 1DEB927A08733DD40010E9CD /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC793427118F7DAF005EA8E2 /* DebugRelease.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- BC25186411D15D55002EBC01 /* Debug */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */;
- buildSettings = {
- };
- name = Debug;
- };
- BC25186511D15D55002EBC01 /* Release */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */;
- buildSettings = {
- };
- name = Release;
- };
- BC646D6D136A3A8700B35DED /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC793426118F7D3C005EA8E2 /* Base.xcconfig */;
- buildSettings = {
- };
- name = Production;
- };
- BC646D6E136A3A8700B35DED /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC251A1811D16795002EBC01 /* WebKitTestRunner.xcconfig */;
- buildSettings = {
- };
- name = Production;
- };
- BC646D6F136A3A8700B35DED /* Production */ = {
- isa = XCBuildConfiguration;
- baseConfigurationReference = BC25197111D15E61002EBC01 /* InjectedBundle.xcconfig */;
- buildSettings = {
- };
- name = Production;
- };
- BC646D70136A3A8700B35DED /* Production */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Derived Sources";
- };
- name = Production;
- };
- BC952D7811F3BF5E003398B4 /* Debug */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Derived Sources";
- };
- name = Debug;
- };
- BC952D7911F3BF5E003398B4 /* Release */ = {
- isa = XCBuildConfiguration;
- buildSettings = {
- PRODUCT_NAME = "Derived Sources";
- };
- name = Release;
- };
-/* End XCBuildConfiguration section */
-
-/* Begin XCConfigurationList section */
- 1DEB927408733DD40010E9CD /* Build configuration list for PBXNativeTarget "WebKitTestRunner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB927508733DD40010E9CD /* Debug */,
- 1DEB927608733DD40010E9CD /* Release */,
- BC646D6E136A3A8700B35DED /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "WebKitTestRunner" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- 1DEB927908733DD40010E9CD /* Debug */,
- 1DEB927A08733DD40010E9CD /* Release */,
- BC646D6D136A3A8700B35DED /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- BC25186611D15D55002EBC01 /* Build configuration list for PBXNativeTarget "WebKitTestRunnerInjectedBundle" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- BC25186411D15D55002EBC01 /* Debug */,
- BC25186511D15D55002EBC01 /* Release */,
- BC646D6F136A3A8700B35DED /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
- BC952D7D11F3BF6A003398B4 /* Build configuration list for PBXAggregateTarget "Derived Sources" */ = {
- isa = XCConfigurationList;
- buildConfigurations = (
- BC952D7811F3BF5E003398B4 /* Debug */,
- BC952D7911F3BF5E003398B4 /* Release */,
- BC646D70136A3A8700B35DED /* Production */,
- );
- defaultConfigurationIsVisible = 0;
- defaultConfigurationName = Production;
- };
-/* End XCConfigurationList section */
- };
- rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
-}
diff --git a/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h b/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h
new file mode 100644
index 000000000..27752908b
--- /dev/null
+++ b/Tools/WebKitTestRunner/WebKitTestRunnerApp/AppDelegate.h
@@ -0,0 +1,15 @@
+//
+// AppDelegate.h
+// WebKitTestRunnerApp
+//
+// Created by David Farler on 1/22/14.
+//
+//
+
+#import <UIKit/UIKit.h>
+
+@interface AppDelegate : UIResponder <UIApplicationDelegate>
+
+@property (strong, nonatomic) UIWindow *window;
+
+@end
diff --git a/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h b/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h
index ac61ad7ec..5f989fc54 100644
--- a/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h
+++ b/Tools/WebKitTestRunner/WebKitTestRunnerPrefix.h
@@ -24,23 +24,11 @@
*/
#ifdef __OBJC__
-#include <Cocoa/Cocoa.h>
+#import <Foundation/Foundation.h>
#endif
-#if defined(WIN32) || defined(_WIN32)
-// 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
-#endif
-
-#if defined(BUILDING_GTK__)
-#include "autotoolsconfig.h"
-#endif /* defined (BUILDING_GTK__) */
-
+#include <WebKit/WebKit2_C.h>
#include <wtf/Platform.h>
-#include <WebKit2/WebKit2_C.h>
-
/* When C++ exceptions are disabled, the C++ library defines |try| and |catch|
* to allow C++ code that expects exceptions to build. These definitions
diff --git a/Tools/WebKitTestRunner/WebNotificationProvider.cpp b/Tools/WebKitTestRunner/WebNotificationProvider.cpp
index 14c95308f..de6adece0 100644
--- a/Tools/WebKitTestRunner/WebNotificationProvider.cpp
+++ b/Tools/WebKitTestRunner/WebNotificationProvider.cpp
@@ -26,10 +26,10 @@
#include "config.h"
#include "WebNotificationProvider.h"
-#include <WebKit2/WKMutableArray.h>
-#include <WebKit2/WKNotification.h>
-#include <WebKit2/WKNumber.h>
-#include <WebKit2/WKSecurityOrigin.h>
+#include <WebKit/WKMutableArray.h>
+#include <WebKit/WKNotification.h>
+#include <WebKit/WKNumber.h>
+#include <WebKit/WKSecurityOriginRef.h>
#include <wtf/Assertions.h>
namespace WTR {
@@ -65,14 +65,14 @@ WebNotificationProvider::WebNotificationProvider()
WebNotificationProvider::~WebNotificationProvider()
{
- WKNotificationManagerSetProvider(m_notificationManager.get(), 0);
+ for (auto& manager : m_ownedNotifications)
+ WKNotificationManagerSetProvider(manager.key.get(), nullptr);
}
-WKNotificationProvider WebNotificationProvider::provider()
+WKNotificationProviderV0 WebNotificationProvider::provider()
{
- WKNotificationProvider notificationProvider = {
- kWKNotificationProviderCurrentVersion,
- this,
+ WKNotificationProviderV0 notificationProvider = {
+ { 0, this },
WTR::showWebNotification,
WTR::closeWebNotification,
0, // didDestroyNotification
@@ -84,44 +84,57 @@ WKNotificationProvider WebNotificationProvider::provider()
return notificationProvider;
}
-void WebNotificationProvider::showWebNotification(WKPageRef, WKNotificationRef notification)
+void WebNotificationProvider::showWebNotification(WKPageRef page, WKNotificationRef notification)
{
- if (!m_notificationManager)
- return;
-
+ auto context = WKPageGetContext(page);
+ auto notificationManager = WKContextGetNotificationManager(context);
uint64_t id = WKNotificationGetID(notification);
- ASSERT(!m_shownNotifications.contains(id));
- m_shownNotifications.add(id);
- WKNotificationManagerProviderDidShowNotification(m_notificationManager.get(), WKNotificationGetID(notification));
+ ASSERT(m_ownedNotifications.contains(notificationManager));
+ auto addResult = m_ownedNotifications.find(notificationManager)->value.add(id);
+ ASSERT_UNUSED(addResult, addResult.isNewEntry);
+ auto addResult2 = m_owningManager.set(id, notificationManager);
+ ASSERT_UNUSED(addResult2, addResult2.isNewEntry);
+
+ WKNotificationManagerProviderDidShowNotification(notificationManager, id);
}
void WebNotificationProvider::closeWebNotification(WKNotificationRef notification)
{
- if (!m_notificationManager)
- return;
-
uint64_t id = WKNotificationGetID(notification);
+ ASSERT(m_owningManager.contains(id));
+ auto notificationManager = m_owningManager.get(id);
+
+ ASSERT(m_ownedNotifications.contains(notificationManager));
+ bool success = m_ownedNotifications.find(notificationManager)->value.remove(id);
+ ASSERT_UNUSED(success, success);
+ m_owningManager.remove(id);
+
WKRetainPtr<WKUInt64Ref> wkID = WKUInt64Create(id);
WKRetainPtr<WKMutableArrayRef> array(AdoptWK, WKMutableArrayCreate());
WKArrayAppendItem(array.get(), wkID.get());
- m_shownNotifications.remove(id);
- WKNotificationManagerProviderDidCloseNotifications(m_notificationManager.get(), array.get());
+ WKNotificationManagerProviderDidCloseNotifications(notificationManager, array.get());
}
void WebNotificationProvider::addNotificationManager(WKNotificationManagerRef manager)
{
- // We assume there is only one for testing.
- ASSERT(!m_notificationManager);
- m_notificationManager = manager;
+ m_ownedNotifications.add(manager, HashSet<uint64_t>());
}
void WebNotificationProvider::removeNotificationManager(WKNotificationManagerRef manager)
{
- // We assume there is only one for testing.
- ASSERT(m_notificationManager);
- ASSERT(m_notificationManager.get() == manager);
- m_notificationManager = 0;
+ auto iterator = m_ownedNotifications.find(manager);
+ ASSERT(iterator != m_ownedNotifications.end());
+ auto toRemove = iterator->value;
+ WKRetainPtr<WKNotificationManagerRef> guard(manager);
+ m_ownedNotifications.remove(iterator);
+ WKRetainPtr<WKMutableArrayRef> array = adoptWK(WKMutableArrayCreate());
+ for (uint64_t notificationID : toRemove) {
+ bool success = m_owningManager.remove(notificationID);
+ ASSERT_UNUSED(success, success);
+ WKArrayAppendItem(array.get(), adoptWK(WKUInt64Create(notificationID)).get());
+ }
+ WKNotificationManagerProviderDidCloseNotifications(manager, array.get());
}
WKDictionaryRef WebNotificationProvider::notificationPermissions()
@@ -132,29 +145,23 @@ WKDictionaryRef WebNotificationProvider::notificationPermissions()
void WebNotificationProvider::simulateWebNotificationClick(uint64_t notificationID)
{
- if (!m_notificationManager)
- return;
-
- ASSERT(m_shownNotifications.contains(notificationID));
- WKNotificationManagerProviderDidClickNotification(m_notificationManager.get(), notificationID);
+ ASSERT(m_owningManager.contains(notificationID));
+ WKNotificationManagerProviderDidClickNotification(m_owningManager.get(notificationID), notificationID);
}
void WebNotificationProvider::reset()
{
- if (!m_notificationManager) {
- m_shownNotifications.clear();
- return;
+ for (auto& notificationPair : m_ownedNotifications) {
+ if (notificationPair.value.isEmpty())
+ continue;
+ WKRetainPtr<WKMutableArrayRef> array = adoptWK(WKMutableArrayCreate());
+ for (uint64_t notificationID : notificationPair.value)
+ WKArrayAppendItem(array.get(), adoptWK(WKUInt64Create(notificationID)).get());
+
+ notificationPair.value.clear();
+ WKNotificationManagerProviderDidCloseNotifications(notificationPair.key.get(), array.get());
}
-
- WKRetainPtr<WKMutableArrayRef> array(AdoptWK, WKMutableArrayCreate());
- HashSet<uint64_t>::const_iterator itEnd = m_shownNotifications.end();
- for (HashSet<uint64_t>::const_iterator it = m_shownNotifications.begin(); it != itEnd; ++it) {
- WKRetainPtr<WKUInt64Ref> wkID = WKUInt64Create(*it);
- WKArrayAppendItem(array.get(), wkID.get());
- }
-
- m_shownNotifications.clear();
- WKNotificationManagerProviderDidCloseNotifications(m_notificationManager.get(), array.get());
+ m_owningManager.clear();
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/WebNotificationProvider.h b/Tools/WebKitTestRunner/WebNotificationProvider.h
index b25082923..d8724a93a 100644
--- a/Tools/WebKitTestRunner/WebNotificationProvider.h
+++ b/Tools/WebKitTestRunner/WebNotificationProvider.h
@@ -26,9 +26,10 @@
#ifndef WebNotificationProvider_h
#define WebNotificationProvider_h
-#include <WebKit2/WKNotificationManager.h>
-#include <WebKit2/WKNotificationProvider.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKNotificationManager.h>
+#include <WebKit/WKNotificationProvider.h>
+#include <WebKit/WKRetainPtr.h>
+#include <wtf/HashMap.h>
#include <wtf/HashSet.h>
namespace WTR {
@@ -37,7 +38,7 @@ class WebNotificationProvider {
public:
WebNotificationProvider();
~WebNotificationProvider();
- WKNotificationProvider provider();
+ WKNotificationProviderV0 provider();
void showWebNotification(WKPageRef, WKNotificationRef);
void closeWebNotification(WKNotificationRef);
@@ -49,8 +50,9 @@ public:
void reset();
private:
- WKRetainPtr<WKNotificationManagerRef> m_notificationManager;
- HashSet<uint64_t> m_shownNotifications;
+ // Inverses of each other.
+ HashMap<WKRetainPtr<WKNotificationManagerRef>, HashSet<uint64_t>> m_ownedNotifications;
+ HashMap<uint64_t, WKNotificationManagerRef> m_owningManager;
};
}
diff --git a/Tools/WebKitTestRunner/WorkQueueManager.cpp b/Tools/WebKitTestRunner/WorkQueueManager.cpp
index e74fa3464..63f491b47 100644
--- a/Tools/WebKitTestRunner/WorkQueueManager.cpp
+++ b/Tools/WebKitTestRunner/WorkQueueManager.cpp
@@ -28,17 +28,17 @@
#include "PlatformWebView.h"
#include "TestController.h"
-#include <WebKit2/WKPage.h>
-#include <WebKit2/WKRetainPtr.h>
+#include <WebKit/WKPage.h>
+#include <WebKit/WKPagePrivate.h>
+#include <WebKit/WKRetainPtr.h>
#include <stdio.h>
-#include <wtf/PassOwnPtr.h>
#include <wtf/text/CString.h>
namespace WTR {
static inline WKPageRef mainPage()
{
- return TestController::shared().mainWebView()->page();
+ return TestController::singleton().mainWebView()->page();
}
static inline bool goToItemAtIndex(int index)
@@ -119,20 +119,21 @@ bool WorkQueueManager::processWorkQueue()
{
m_processing = false;
while (!m_processing && !m_workQueue.isEmpty()) {
- OwnPtr<WorkQueueItem> item(m_workQueue.takeFirst());
+ std::unique_ptr<WorkQueueItem> item(m_workQueue.takeFirst());
m_processing = (item->invoke() == WorkQueueItem::Loading);
}
return !m_processing;
}
-void WorkQueueManager::queueLoad(const String& url, const String& target)
+void WorkQueueManager::queueLoad(const String& url, const String& target, bool shouldOpenExternalURLs)
{
class LoadItem : public WorkQueueItem {
public:
- LoadItem(const String& url, const String& target)
+ LoadItem(const String& url, const String& target, bool shouldOpenExternalURLs)
: m_url(AdoptWK, WKURLCreateWithUTF8CString(url.utf8().data()))
, m_target(target)
+ , m_shouldOpenExternalURLs(shouldOpenExternalURLs)
{
}
@@ -143,15 +144,16 @@ void WorkQueueManager::queueLoad(const String& url, const String& target)
fprintf(stderr, "queueLoad for a specific target is not implemented.\n");
return WorkQueueItem::NonLoading;
}
- WKPageLoadURL(mainPage(), m_url.get());
+ WKPageLoadURLWithShouldOpenExternalURLsPolicy(mainPage(), m_url.get(), m_shouldOpenExternalURLs);
return WorkQueueItem::Loading;
}
WKRetainPtr<WKURLRef> m_url;
String m_target;
+ bool m_shouldOpenExternalURLs;
};
- enqueue(new LoadItem(url, target));
+ enqueue(new LoadItem(url, target, shouldOpenExternalURLs));
}
void WorkQueueManager::queueLoadHTMLString(const String& content, const String& baseURL, const String& unreachableURL)
@@ -222,7 +224,7 @@ void WorkQueueManager::enqueue(WorkQueueItem* item)
return;
}
- m_workQueue.append(adoptPtr(item));
+ m_workQueue.append(std::unique_ptr<WorkQueueItem>(item));
}
} // namespace WTR
diff --git a/Tools/WebKitTestRunner/WorkQueueManager.h b/Tools/WebKitTestRunner/WorkQueueManager.h
index 21d5ebb88..273d51191 100644
--- a/Tools/WebKitTestRunner/WorkQueueManager.h
+++ b/Tools/WebKitTestRunner/WorkQueueManager.h
@@ -27,7 +27,6 @@
#define WorkQueueManager_h
#include <wtf/Deque.h>
-#include <wtf/OwnPtr.h>
#include <wtf/text/WTFString.h>
namespace WTR {
@@ -42,7 +41,7 @@ public:
void clearWorkQueue();
bool processWorkQueue(); // Returns 'true' if queue is processed (no new loading is started), returns 'false' otherwise.
- void queueLoad(const String& url, const String& target);
+ void queueLoad(const String& url, const String& target, bool shouldOpenExternalURLs);
void queueLoadHTMLString(const String& content, const String& baseURL, const String& unreachableURL);
void queueBackNavigation(unsigned howFarBackward);
void queueForwardNavigation(unsigned howFarForward);
@@ -51,7 +50,7 @@ public:
void queueNonLoadingScript(const String& script);
private:
- typedef Deque<OwnPtr<class WorkQueueItem> > WorkQueue;
+ typedef Deque<std::unique_ptr<class WorkQueueItem>> WorkQueue;
void enqueue(WorkQueueItem*); // Adopts pointer.
diff --git a/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp b/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp
deleted file mode 100644
index eb3a0d3a2..000000000
--- a/Tools/WebKitTestRunner/cairo/TestInvocationCairo.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All rights reserved.
- * (C) 2011 Brent Fulgham <bfulgham@webkit.org>. All rights reserved.
- * (C) 2010, 2011 Igalia S.L
- * (C) 2012 Intel Corporation. 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. 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 INC. 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 "TestInvocation.h"
-
-#include "PixelDumpSupport.h"
-#include "PlatformWebView.h"
-#include "TestController.h"
-#include <WebKit2/WKImageCairo.h>
-#include <cairo/cairo.h>
-#include <cstdio>
-#include <wtf/Assertions.h>
-#include <wtf/MD5.h>
-#include <wtf/StringExtras.h>
-
-namespace WTR {
-
-void computeMD5HashStringForCairoSurface(cairo_surface_t* surface, char hashString[33])
-{
- ASSERT(cairo_image_surface_get_format(surface) == CAIRO_FORMAT_ARGB32); // ImageDiff assumes 32 bit RGBA, we must as well.
-
- size_t pixelsHigh = cairo_image_surface_get_height(surface);
- size_t pixelsWide = cairo_image_surface_get_width(surface);
- size_t bytesPerRow = cairo_image_surface_get_stride(surface);
-
- MD5 md5Context;
- unsigned char* bitmapData = static_cast<unsigned char*>(cairo_image_surface_get_data(surface));
- for (size_t row = 0; row < pixelsHigh; ++row) {
- md5Context.addBytes(bitmapData, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- Vector<uint8_t, 16> hash;
- md5Context.checksum(hash);
-
- snprintf(hashString, 33, "%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
- hash[0], hash[1], hash[2], hash[3], hash[4], hash[5], hash[6], hash[7],
- hash[8], hash[9], hash[10], hash[11], hash[12], hash[13], hash[14], hash[15]);
-}
-
-static cairo_status_t writeFunction(void* closure, const unsigned char* data, unsigned length)
-{
- Vector<unsigned char>* in = reinterpret_cast<Vector<unsigned char>*>(closure);
- in->append(data, length);
- return CAIRO_STATUS_SUCCESS;
-}
-
-static void dumpBitmap(cairo_surface_t* surface, const char* checksum)
-{
- Vector<unsigned char> pixelData;
- cairo_surface_write_to_png_stream(surface, writeFunction, &pixelData);
- const size_t dataLength = pixelData.size();
- const unsigned char* data = pixelData.data();
-
- printPNG(data, dataLength, checksum);
-}
-
-static void paintRepaintRectOverlay(cairo_surface_t* surface, WKArrayRef repaintRects)
-{
- cairo_t* context = cairo_create(surface);
-
- cairo_push_group(context);
-
- // Paint the gray mask over the original image.
- cairo_set_source_rgba(context, 0, 0, 0, 0.66);
- cairo_paint(context);
-
- // Paint transparent rectangles over the mask to show the repainted regions.
- cairo_set_source_rgba(context, 0, 0, 0, 0);
- cairo_set_operator(context, CAIRO_OPERATOR_SOURCE);
- size_t count = WKArrayGetSize(repaintRects);
- for (size_t i = 0; i < count; ++i) {
- WKRect rect = WKRectGetValue(static_cast<WKRectRef>(WKArrayGetItemAtIndex(repaintRects, i)));
- cairo_rectangle(context, rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
- cairo_fill(context);
- }
-
- cairo_pop_group_to_source(context);
- cairo_paint(context);
-
- cairo_destroy(context);
-}
-
-#if PLATFORM(EFL)
-void TestInvocation::forceRepaintDoneCallback(WKErrorRef, void *context)
-{
- static_cast<TestInvocation*>(context)->m_gotRepaint = true;
- TestController::shared().notifyDone();
-}
-#endif
-
-void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef wkImage, WKArrayRef repaintRects)
-{
-#if USE(ACCELERATED_COMPOSITING) && PLATFORM(EFL)
- UNUSED_PARAM(wkImage);
-
- cairo_surface_t* surface;
-
- WKPageRef page = TestController::shared().mainWebView()->page();
- WKPageForceRepaint(page, this, &forceRepaintDoneCallback);
-
- TestController::shared().runUntil(m_gotRepaint, TestController::ShortTimeout);
-
- if (!m_gotRepaint) {
- m_error = true;
- m_errorMessage = "Timed out waiting for repaint\n";
- m_webProcessIsUnresponsive = true;
- return;
- }
-
- surface = WKImageCreateCairoSurface(TestController::shared().mainWebView()->windowSnapshotImage().get());
-#else
- cairo_surface_t* surface = WKImageCreateCairoSurface(wkImage);
-#endif
-
- if (repaintRects)
- paintRepaintRectOverlay(surface, repaintRects);
-
- char actualHash[33];
- computeMD5HashStringForCairoSurface(surface, actualHash);
- if (!compareActualHashToExpectedAndDumpResults(actualHash))
- dumpBitmap(surface, actualHash);
-
- cairo_surface_destroy(surface);
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp b/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp
deleted file mode 100644
index 742cb869f..000000000
--- a/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.cpp
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2010 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 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 "WebArchiveDumpSupport.h"
-
-#include <CFNetwork/CFNetwork.h>
-#include <CoreFoundation/CoreFoundation.h>
-#include <wtf/RetainPtr.h>
-
-extern "C" {
-
-CFURLRef CFURLResponseGetURL(CFURLResponseRef);
-CFStringRef CFURLResponseGetMIMEType(CFURLResponseRef);
-CFStringRef CFURLResponseGetTextEncodingName(CFURLResponseRef);
-SInt64 CFURLResponseGetExpectedContentLength(CFURLResponseRef);
-CFHTTPMessageRef CFURLResponseGetHTTPResponse(CFURLResponseRef);
-
-CFTypeID CFURLResponseGetTypeID(void);
-
-}
-
-static void convertMIMEType(CFMutableStringRef mimeType)
-{
- // Workaround for <rdar://problem/6234318> with Dashcode 2.0
- if (CFStringCompare(mimeType, CFSTR("application/x-javascript"), kCFCompareAnchored | kCFCompareCaseInsensitive) == kCFCompareEqualTo)
- CFStringReplaceAll(mimeType, CFSTR("text/javascript"));
-}
-
-static void convertWebResourceDataToString(CFMutableDictionaryRef resource)
-{
- CFMutableStringRef mimeType = (CFMutableStringRef)CFDictionaryGetValue(resource, CFSTR("WebResourceMIMEType"));
- CFStringLowercase(mimeType, CFLocaleGetSystem());
- convertMIMEType(mimeType);
-
- CFArrayRef supportedMIMETypes = supportedNonImageMIMETypes();
- if (CFStringHasPrefix(mimeType, CFSTR("text/")) || CFArrayContainsValue(supportedMIMETypes, CFRangeMake(0, CFArrayGetCount(supportedMIMETypes)), mimeType)) {
- CFStringRef textEncodingName = static_cast<CFStringRef>(CFDictionaryGetValue(resource, CFSTR("WebResourceTextEncodingName")));
- CFStringEncoding stringEncoding;
- if (textEncodingName && CFStringGetLength(textEncodingName))
- stringEncoding = CFStringConvertIANACharSetNameToEncoding(textEncodingName);
- else
- stringEncoding = kCFStringEncodingUTF8;
-
- CFDataRef data = static_cast<CFDataRef>(CFDictionaryGetValue(resource, CFSTR("WebResourceData")));
- RetainPtr<CFStringRef> dataAsString = adoptCF(CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, data, stringEncoding));
- if (dataAsString)
- CFDictionarySetValue(resource, CFSTR("WebResourceData"), dataAsString.get());
- }
-}
-
-static void normalizeHTTPResponseHeaderFields(CFMutableDictionaryRef fields)
-{
- // Normalize headers
- if (CFDictionaryContainsKey(fields, CFSTR("Date")))
- CFDictionarySetValue(fields, CFSTR("Date"), CFSTR("Sun, 16 Nov 2008 17:00:00 GMT"));
- if (CFDictionaryContainsKey(fields, CFSTR("Last-Modified")))
- CFDictionarySetValue(fields, CFSTR("Last-Modified"), CFSTR("Sun, 16 Nov 2008 16:55:00 GMT"));
- if (CFDictionaryContainsKey(fields, CFSTR("Etag")))
- CFDictionarySetValue(fields, CFSTR("Etag"), CFSTR("\"301925-21-45c7d72d3e780\""));
- if (CFDictionaryContainsKey(fields, CFSTR("Server")))
- CFDictionarySetValue(fields, CFSTR("Server"), CFSTR("Apache/2.2.9 (Unix) mod_ssl/2.2.9 OpenSSL/0.9.7l PHP/5.2.6"));
-
- // Remove headers
- CFDictionaryRemoveValue(fields, CFSTR("Connection"));
- CFDictionaryRemoveValue(fields, CFSTR("Keep-Alive"));
-}
-
-static void normalizeWebResourceURL(CFMutableStringRef webResourceURL)
-{
- static CFIndex fileUrlLength = CFStringGetLength(CFSTR("file://"));
- CFRange layoutTestsWebArchivePathRange = CFStringFind(webResourceURL, CFSTR("/LayoutTests/"), kCFCompareBackwards);
- if (layoutTestsWebArchivePathRange.location == kCFNotFound)
- return;
- CFRange currentWorkingDirectoryRange = CFRangeMake(fileUrlLength, layoutTestsWebArchivePathRange.location - fileUrlLength);
- CFStringReplace(webResourceURL, currentWorkingDirectoryRange, CFSTR(""));
-}
-
-static void convertWebResourceResponseToDictionary(CFMutableDictionaryRef propertyList)
-{
- CFDataRef responseData = static_cast<CFDataRef>(CFDictionaryGetValue(propertyList, CFSTR("WebResourceResponse"))); // WebResourceResponseKey in WebResource.m
- if (CFGetTypeID(responseData) != CFDataGetTypeID())
- return;
-
- RetainPtr<CFURLResponseRef> response = adoptCF(createCFURLResponseFromResponseData(responseData));
- if (!response)
- return;
-
- RetainPtr<CFMutableDictionaryRef> responseDictionary = adoptCF(CFDictionaryCreateMutable(kCFAllocatorDefault, 0, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks));
-
- RetainPtr<CFMutableStringRef> urlString = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFURLGetString(CFURLResponseGetURL(response.get()))));
- normalizeWebResourceURL(urlString.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("URL"), urlString.get());
-
- RetainPtr<CFMutableStringRef> mimeTypeString = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, CFURLResponseGetMIMEType(response.get())));
- convertMIMEType(mimeTypeString.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("MIMEType"), mimeTypeString.get());
-
- CFStringRef textEncodingName = CFURLResponseGetTextEncodingName(response.get());
- if (textEncodingName)
- CFDictionarySetValue(responseDictionary.get(), CFSTR("textEncodingName"), textEncodingName);
-
- SInt64 expectedContentLength = CFURLResponseGetExpectedContentLength(response.get());
- RetainPtr<CFNumberRef> expectedContentLengthNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt64Type, &expectedContentLength));
- CFDictionarySetValue(responseDictionary.get(), CFSTR("expectedContentLength"), expectedContentLengthNumber.get());
-
- if (CFHTTPMessageRef httpMessage = CFURLResponseGetHTTPResponse(response.get())) {
- RetainPtr<CFDictionaryRef> allHeaders = adoptCF(CFHTTPMessageCopyAllHeaderFields(httpMessage));
- RetainPtr<CFMutableDictionaryRef> allHeaderFields = adoptCF(CFDictionaryCreateMutableCopy(kCFAllocatorDefault, 0, allHeaders.get()));
- normalizeHTTPResponseHeaderFields(allHeaderFields.get());
- CFDictionarySetValue(responseDictionary.get(), CFSTR("allHeaderFields"), allHeaderFields.get());
-
- CFIndex statusCode = CFHTTPMessageGetResponseStatusCode(httpMessage);
- RetainPtr<CFNumberRef> statusCodeNumber = adoptCF(CFNumberCreate(kCFAllocatorDefault, kCFNumberCFIndexType, &statusCode));
- CFDictionarySetValue(responseDictionary.get(), CFSTR("statusCode"), statusCodeNumber.get());
- }
-
- CFDictionarySetValue(propertyList, CFSTR("WebResourceResponse"), responseDictionary.get());
-}
-
-static CFComparisonResult compareResourceURLs(const void *val1, const void *val2, void *context)
-{
- CFStringRef url1 = static_cast<CFStringRef>(CFDictionaryGetValue(static_cast<CFDictionaryRef>(val1), CFSTR("WebResourceURL")));
- CFStringRef url2 = static_cast<CFStringRef>(CFDictionaryGetValue(static_cast<CFDictionaryRef>(val2), CFSTR("WebResourceURL")));
-
- return CFStringCompare(url1, url2, kCFCompareAnchored);
-}
-
-CFStringRef createXMLStringFromWebArchiveData(CFDataRef webArchiveData)
-{
- CFErrorRef error = 0;
- CFPropertyListFormat format = kCFPropertyListBinaryFormat_v1_0;
- RetainPtr<CFMutableDictionaryRef> propertyList = adoptCF((CFMutableDictionaryRef)CFPropertyListCreateWithData(kCFAllocatorDefault, webArchiveData, kCFPropertyListMutableContainersAndLeaves, &format, &error));
-
- if (!propertyList) {
- if (error)
- return CFErrorCopyDescription(error);
- return static_cast<CFStringRef>(CFRetain(CFSTR("An unknown error occurred converting data to property list.")));
- }
-
- RetainPtr<CFMutableArrayRef> resources = adoptCF(CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks));
- CFArrayAppendValue(resources.get(), propertyList.get());
-
- while (CFArrayGetCount(resources.get())) {
- RetainPtr<CFMutableDictionaryRef> resourcePropertyList = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(resources.get(), 0);
- CFArrayRemoveValueAtIndex(resources.get(), 0);
-
- CFMutableDictionaryRef mainResource = (CFMutableDictionaryRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebMainResource"));
- normalizeWebResourceURL((CFMutableStringRef)CFDictionaryGetValue(mainResource, CFSTR("WebResourceURL")));
- convertWebResourceDataToString(mainResource);
-
- // Add subframeArchives to list for processing
- CFMutableArrayRef subframeArchives = (CFMutableArrayRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebSubframeArchives")); // WebSubframeArchivesKey in WebArchive.m
- if (subframeArchives)
- CFArrayAppendArray(resources.get(), subframeArchives, CFRangeMake(0, CFArrayGetCount(subframeArchives)));
-
- CFMutableArrayRef subresources = (CFMutableArrayRef)CFDictionaryGetValue(resourcePropertyList.get(), CFSTR("WebSubresources")); // WebSubresourcesKey in WebArchive.m
- if (!subresources)
- continue;
-
- CFIndex subresourcesCount = CFArrayGetCount(subresources);
- for (CFIndex i = 0; i < subresourcesCount; ++i) {
- CFMutableDictionaryRef subresourcePropertyList = (CFMutableDictionaryRef)CFArrayGetValueAtIndex(subresources, i);
- normalizeWebResourceURL((CFMutableStringRef)CFDictionaryGetValue(subresourcePropertyList, CFSTR("WebResourceURL")));
- convertWebResourceResponseToDictionary(subresourcePropertyList);
- convertWebResourceDataToString(subresourcePropertyList);
- }
-
- // Sort the subresources so they're always in a predictable order for the dump
- CFArraySortValues(subresources, CFRangeMake(0, CFArrayGetCount(subresources)), compareResourceURLs, 0);
- }
-
- error = 0;
-
- RetainPtr<CFDataRef> xmlData = adoptCF(CFPropertyListCreateData(kCFAllocatorDefault, propertyList.get(), kCFPropertyListXMLFormat_v1_0, 0, &error));
-
- if (!xmlData) {
- if (error)
- return CFErrorCopyDescription(error);
- return static_cast<CFStringRef>(CFRetain(CFSTR("An unknown error occurred converting property list to data.")));
- }
-
- RetainPtr<CFStringRef> xmlString = adoptCF(CFStringCreateFromExternalRepresentation(kCFAllocatorDefault, xmlData.get(), kCFStringEncodingUTF8));
- RetainPtr<CFMutableStringRef> string = adoptCF(CFStringCreateMutableCopy(kCFAllocatorDefault, 0, xmlString.get()));
-
- // Replace "Apple Computer" with "Apple" in the DTD declaration.
- CFStringFindAndReplace(string.get(), CFSTR("-//Apple Computer//"), CFSTR("-//Apple//"), CFRangeMake(0, CFStringGetLength(string.get())), 0);
-
- return string.leakRef();
-}
diff --git a/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h b/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h
deleted file mode 100644
index 00c58184e..000000000
--- a/Tools/WebKitTestRunner/cf/WebArchiveDumpSupport.h
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2007, 2008, 2009, 2010 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 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 WebArchiveDumpSupport_h
-#define WebArchiveDumpSupport_h
-
-#include <CoreFoundation/CoreFoundation.h>
-
-typedef struct _CFURLResponse* CFURLResponseRef;
-
-CFStringRef createXMLStringFromWebArchiveData(CFDataRef webArchiveData);
-
-// MARK: -
-// MARK: Platform-specific methods
-
-CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef responseData);
-CFArrayRef supportedNonImageMIMETypes();
-
-#endif /* WebArchiveDumpSupport_h */
diff --git a/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp b/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp
deleted file mode 100644
index 4e60aeb3f..000000000
--- a/Tools/WebKitTestRunner/cg/TestInvocationCG.cpp
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "TestInvocation.h"
-
-#include "PixelDumpSupport.h"
-#include "PlatformWebView.h"
-#include "TestController.h"
-#include <ImageIO/CGImageDestination.h>
-#include <WebKit2/WKImageCG.h>
-#include <wtf/MD5.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/StringExtras.h>
-
-#if PLATFORM(MAC)
-#include <LaunchServices/UTCoreTypes.h>
-#endif
-
-#if PLATFORM(WIN)
-static const CFStringRef kUTTypePNG = CFSTR("public.png");
-#endif
-
-namespace WTR {
-
-enum FlipGraphicsContextOrNot {
- DontFlipGraphicsContext,
- FlipGraphicsContext
-};
-
-static CGContextRef createCGContextFromImage(WKImageRef wkImage, FlipGraphicsContextOrNot flip = DontFlipGraphicsContext)
-{
- RetainPtr<CGImageRef> image = adoptCF(WKImageCreateCGImage(wkImage));
-
- size_t pixelsWide = CGImageGetWidth(image.get());
- size_t pixelsHigh = CGImageGetHeight(image.get());
- size_t rowBytes = (4 * pixelsWide + 63) & ~63;
-
- // Creating this bitmap in the device color space should prevent any color conversion when the image of the web view is drawn into it.
- RetainPtr<CGColorSpaceRef> colorSpace = adoptCF(CGColorSpaceCreateDeviceRGB());
- CGContextRef context = CGBitmapContextCreate(0, pixelsWide, pixelsHigh, 8, rowBytes, colorSpace.get(), kCGImageAlphaPremultipliedFirst | kCGBitmapByteOrder32Host);
-
- if (flip == FlipGraphicsContext) {
- CGContextSaveGState(context);
- CGContextScaleCTM(context, 1, -1);
- CGContextTranslateCTM(context, 0, -static_cast<CGFloat>(pixelsHigh));
- }
-
- CGContextDrawImage(context, CGRectMake(0, 0, pixelsWide, pixelsHigh), image.get());
- if (flip == FlipGraphicsContext)
- CGContextRestoreGState(context);
-
- return context;
-}
-
-void computeMD5HashStringForContext(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 md5;
- unsigned char* bitmapData = static_cast<unsigned char*>(CGBitmapContextGetData(bitmapContext));
-#if PLATFORM(MAC)
- if ((CGBitmapContextGetBitmapInfo(bitmapContext) & kCGBitmapByteOrderMask) == kCGBitmapByteOrder32Big) {
- for (unsigned row = 0; row < pixelsHigh; row++) {
- Vector<uint8_t> buffer(4 * pixelsWide);
- for (unsigned column = 0; column < pixelsWide; column++)
- buffer[column] = OSReadLittleInt32(bitmapData, 4 * column);
- md5.addBytes(buffer);
- bitmapData += bytesPerRow;
- }
- } else
-#endif
- {
- for (unsigned row = 0; row < pixelsHigh; row++) {
- md5.addBytes(bitmapData, 4 * pixelsWide);
- bitmapData += bytesPerRow;
- }
- }
-
- Vector<uint8_t, 16> hash;
- md5.checksum(hash);
-
- hashString[0] = '\0';
- for (int i = 0; i < 16; i++)
- snprintf(hashString, 33, "%s%02x", hashString, hash[i]);
-}
-
-static void dumpBitmap(CGContextRef bitmapContext, const char* checksum)
-{
- RetainPtr<CGImageRef> image = adoptCF(CGBitmapContextCreateImage(bitmapContext));
- RetainPtr<CFMutableDataRef> imageData = adoptCF(CFDataCreateMutable(0, 0));
- RetainPtr<CGImageDestinationRef> imageDest = adoptCF(CGImageDestinationCreateWithData(imageData.get(), kUTTypePNG, 1, 0));
- CGImageDestinationAddImage(imageDest.get(), image.get(), 0);
- CGImageDestinationFinalize(imageDest.get());
-
- const unsigned char* data = CFDataGetBytePtr(imageData.get());
- const size_t dataLength = CFDataGetLength(imageData.get());
-
- printPNG(data, dataLength, checksum);
-}
-
-static void paintRepaintRectOverlay(CGContextRef context, WKImageRef image, WKArrayRef repaintRects)
-{
- WKSize imageSize = WKImageGetSize(image);
-
- CGContextSaveGState(context);
-
- // Using a transparency layer is easier than futzing with clipping.
- CGContextBeginTransparencyLayer(context, 0);
-
- // Flip the context.
- CGContextScaleCTM(context, 1, -1);
- CGContextTranslateCTM(context, 0, -imageSize.height);
-
- CGContextSetRGBFillColor(context, 0, 0, 0, static_cast<CGFloat>(0.66));
- CGContextFillRect(context, CGRectMake(0, 0, imageSize.width, imageSize.height));
-
- // Clear the repaint rects.
- size_t count = WKArrayGetSize(repaintRects);
- for (size_t i = 0; i < count; ++i) {
- WKRect rect = WKRectGetValue(static_cast<WKRectRef>(WKArrayGetItemAtIndex(repaintRects, i)));
- CGRect cgRect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height);
- CGContextClearRect(context, cgRect);
- }
-
- CGContextEndTransparencyLayer(context);
- CGContextRestoreGState(context);
-}
-
-void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef image, WKArrayRef repaintRects)
-{
- PlatformWebView* webView = TestController::shared().mainWebView();
- WKRetainPtr<WKImageRef> windowSnapshot = webView->windowSnapshotImage();
-
- // There is no way at this time to fake a window's scale factor, so we need to avoid the window
- // snapshots for HiDPI tests.
- if (WKPageGetBackingScaleFactor(webView->page()) != 1)
- windowSnapshot = 0;
-
- RetainPtr<CGContextRef> context;
- if (windowSnapshot)
- context = adoptCF(createCGContextFromImage(windowSnapshot.get(), DontFlipGraphicsContext));
- else
- context = adoptCF(createCGContextFromImage(image));
-
- // A non-null repaintRects array means we're doing a repaint test.
- if (repaintRects)
- paintRepaintRectOverlay(context.get(), image, repaintRects);
-
- char actualHash[33];
- computeMD5HashStringForContext(context.get(), actualHash);
- if (!compareActualHashToExpectedAndDumpResults(actualHash))
- dumpBitmap(context.get(), actualHash);
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/config.h b/Tools/WebKitTestRunner/config.h
index d5cd2f97d..4fb2a4b5e 100644
--- a/Tools/WebKitTestRunner/config.h
+++ b/Tools/WebKitTestRunner/config.h
@@ -29,32 +29,13 @@
#include "cmakeconfig.h"
#endif
+#include <WebKit/WebKit2_C.h>
#include <wtf/Platform.h>
#include <wtf/ExportMacros.h>
#include <runtime/JSExportMacros.h>
-#include <WebKit2/WebKit2_C.h>
-
-#if PLATFORM(WIN)
-#define WTF_USE_CF 1
-#if defined(WIN_CAIRO)
-#define WTF_USE_CAIRO 1
-#define WTF_USE_CURL 1
-#else
-#define WTF_USE_CG 1
-#define WTF_USE_CFNETWORK 1
-#endif
-#endif
-
-#if OS(WINDOWS)
-/* If we don't define these, they get defined in windef.h. */
-/* We want to use std::min and std::max. */
-#ifndef max
-#define max max
-#endif
-#ifndef min
-#define min min
-#endif
-#endif
+// This is needed because we include WebCore's headers.
+// FIXME: We should include <WebCore/PlatformExportMacros.h> instead.
+#define WEBCORE_EXPORT
#endif
diff --git a/Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp b/Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp
deleted file mode 100644
index 424974d7e..000000000
--- a/Tools/WebKitTestRunner/efl/EventSenderProxyEfl.cpp
+++ /dev/null
@@ -1,561 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (C) 2011 ProFUSION Embedded Systems
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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.
- */
-
-#include "config.h"
-#include "EventSenderProxy.h"
-
-#include "NotImplemented.h"
-#include "PlatformWebView.h"
-#include "TestController.h"
-
-#include <Ecore.h>
-#include <Ecore_Evas.h>
-#include <unistd.h>
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
-#include <wtf/text/CString.h>
-#include <wtf/text/WTFString.h>
-
-namespace WTR {
-
-static const char* modifierNames[] = { "Shift", "Control", "Alt", "Meta" };
-
-enum WTREventType {
- WTREventTypeNone = 0,
- WTREventTypeMouseDown,
- WTREventTypeMouseUp,
- WTREventTypeMouseMove,
- WTREventTypeMouseScrollBy,
- WTREventTypeLeapForward
-};
-
-enum EvasMouseButton {
- EvasMouseButtonNone = 0,
- EvasMouseButtonLeft,
- EvasMouseButtonMiddle,
- EvasMouseButtonRight
-};
-
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
- DOMKeyLocationStandard = 0x00,
- DOMKeyLocationLeft = 0x01,
- DOMKeyLocationRight = 0x02,
- DOMKeyLocationNumpad = 0x03
-};
-
-struct WTREvent {
- WTREventType eventType;
- unsigned delay;
- WKEventModifiers modifiers;
- int button;
- int horizontal;
- int vertical;
-
- WTREvent()
- : eventType(WTREventTypeNone)
- , delay(0)
- , modifiers(0)
- , button(-1)
- , horizontal(-1)
- , vertical(-1)
- {
- }
-
- WTREvent(WTREventType eventType, unsigned delay, WKEventModifiers modifiers, int button)
- : eventType(eventType)
- , delay(delay)
- , modifiers(modifiers)
- , button(button)
- , horizontal(-1)
- , vertical(-1)
- {
- }
-};
-
-struct KeyEventInfo : public RefCounted<KeyEventInfo> {
- KeyEventInfo(const CString& keyName, const CString& keyString)
- : keyName(keyName)
- , keyString(keyString)
- {
- }
-
- const CString keyName;
- const CString keyString;
-};
-
-static unsigned evasMouseButton(unsigned button)
-{
- // The common case involves converting from a WKEventMouseButton (which
- // starts at -1) to an EvasMouseButton (which a starts at 0). The special
- // case for button 3 exists because of fast/events/mouse-click-events.html,
- // which tests whether a 4th mouse button behaves as the middle one.
- if (button <= kWKEventMouseButtonRightButton)
- return button + 1;
- if (button == kWKEventMouseButtonRightButton + 1)
- return EvasMouseButtonMiddle;
- return EvasMouseButtonNone;
-}
-
-static void setEvasModifiers(Evas* evas, WKEventModifiers wkModifiers)
-{
- for (unsigned modifier = 0; modifier < (sizeof(modifierNames) / sizeof(char*)); ++modifier) {
- if (wkModifiers & (1 << modifier))
- evas_key_modifier_on(evas, modifierNames[modifier]);
- else
- evas_key_modifier_off(evas, modifierNames[modifier]);
- }
-}
-
-static void dispatchMouseDownEvent(Evas* evas, unsigned button, WKEventModifiers wkModifiers, int clickCount)
-{
- Evas_Button_Flags buttonFlags = EVAS_BUTTON_NONE;
- if (clickCount == 3)
- buttonFlags = EVAS_BUTTON_TRIPLE_CLICK;
- else if (clickCount == 2)
- buttonFlags = EVAS_BUTTON_DOUBLE_CLICK;
-
- setEvasModifiers(evas, wkModifiers);
- evas_event_feed_mouse_down(evas, button, buttonFlags, 0, 0);
- setEvasModifiers(evas, 0);
-}
-
-static void dispatchMouseUpEvent(Evas* evas, unsigned button, WKEventModifiers wkModifiers)
-{
- setEvasModifiers(evas, wkModifiers);
- evas_event_feed_mouse_up(evas, button, EVAS_BUTTON_NONE, 0, 0);
- setEvasModifiers(evas, 0);
-}
-
-static void dispatchMouseMoveEvent(Evas* evas, int x, int y)
-{
- evas_event_feed_mouse_move(evas, x, y, 0, 0);
-}
-
-static void dispatchMouseScrollByEvent(Evas* evas, int horizontal, int vertical)
-{
- if (horizontal)
- evas_event_feed_mouse_wheel(evas, 1, horizontal, 0, 0);
-
- if (vertical)
- evas_event_feed_mouse_wheel(evas, 0, vertical, 0, 0);
-}
-
-static const PassRefPtr<KeyEventInfo> keyPadName(WKStringRef keyRef)
-{
- if (WKStringIsEqualToUTF8CString(keyRef, "leftArrow"))
- return adoptRef(new KeyEventInfo("KP_Left", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "rightArrow"))
- return adoptRef(new KeyEventInfo("KP_Right", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "upArrow"))
- return adoptRef(new KeyEventInfo("KP_Up", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "downArrow"))
- return adoptRef(new KeyEventInfo("KP_Down", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "pageUp"))
- return adoptRef(new KeyEventInfo("KP_Prior", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "pageDown"))
- return adoptRef(new KeyEventInfo("KP_Next", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "home"))
- return adoptRef(new KeyEventInfo("KP_Home", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "end"))
- return adoptRef(new KeyEventInfo("KP_End", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "insert"))
- return adoptRef(new KeyEventInfo("KP_Insert", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "delete"))
- return adoptRef(new KeyEventInfo("KP_Delete", ""));
-
- size_t bufferSize = WKStringGetMaximumUTF8CStringSize(keyRef);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
- WKStringGetUTF8CString(keyRef, buffer.get(), bufferSize);
- return adoptRef(new KeyEventInfo(buffer.get(), buffer.get()));
-}
-
-static const PassRefPtr<KeyEventInfo> keyName(WKStringRef keyRef)
-{
- if (WKStringIsEqualToUTF8CString(keyRef, "leftArrow"))
- return adoptRef(new KeyEventInfo("Left", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "rightArrow"))
- return adoptRef(new KeyEventInfo("Right", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "upArrow"))
- return adoptRef(new KeyEventInfo("Up", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "downArrow"))
- return adoptRef(new KeyEventInfo("Down", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "pageUp"))
- return adoptRef(new KeyEventInfo("Prior", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "pageDown"))
- return adoptRef(new KeyEventInfo("Next", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "home"))
- return adoptRef(new KeyEventInfo("Home", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "end"))
- return adoptRef(new KeyEventInfo("End", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "insert"))
- return adoptRef(new KeyEventInfo("Insert", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "delete"))
- return adoptRef(new KeyEventInfo("Delete", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "printScreen"))
- return adoptRef(new KeyEventInfo("Print", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "menu"))
- return adoptRef(new KeyEventInfo("Menu", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "leftControl"))
- return adoptRef(new KeyEventInfo("Control_L", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "rightControl"))
- return adoptRef(new KeyEventInfo("Control_R", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "leftShift"))
- return adoptRef(new KeyEventInfo("Shift_L", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "rightShift"))
- return adoptRef(new KeyEventInfo("Shift_R", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "leftAlt"))
- return adoptRef(new KeyEventInfo("Alt_L", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "rightAlt"))
- return adoptRef(new KeyEventInfo("Alt_R", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F1"))
- return adoptRef(new KeyEventInfo("F1", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F2"))
- return adoptRef(new KeyEventInfo("F2", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F3"))
- return adoptRef(new KeyEventInfo("F3", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F4"))
- return adoptRef(new KeyEventInfo("F4", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F5"))
- return adoptRef(new KeyEventInfo("F5", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F6"))
- return adoptRef(new KeyEventInfo("F6", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F7"))
- return adoptRef(new KeyEventInfo("F7", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F8"))
- return adoptRef(new KeyEventInfo("F8", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F9"))
- return adoptRef(new KeyEventInfo("F9", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F10"))
- return adoptRef(new KeyEventInfo("F10", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F11"))
- return adoptRef(new KeyEventInfo("F11", ""));
- if (WKStringIsEqualToUTF8CString(keyRef, "F12"))
- return adoptRef(new KeyEventInfo("F12", ""));
-
- size_t bufferSize = WKStringGetMaximumUTF8CStringSize(keyRef);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
- WKStringGetUTF8CString(keyRef, buffer.get(), bufferSize);
- char charCode = buffer.get()[0];
-
- if (charCode == '\n' || charCode == '\r')
- return adoptRef(new KeyEventInfo("Return", "\r"));
- if (charCode == '\t')
- return adoptRef(new KeyEventInfo("Tab", "\t"));
- if (charCode == '\x8')
- return adoptRef(new KeyEventInfo("BackSpace", "\x8"));
- if (charCode == ' ')
- return adoptRef(new KeyEventInfo("space", " "));
-
- return adoptRef(new KeyEventInfo(buffer.get(), buffer.get()));
-}
-
-EventSenderProxy::EventSenderProxy(TestController* testController)
- : m_testController(testController)
- , m_time(0)
- , m_leftMouseButtonDown(false)
- , m_clickCount(0)
- , m_clickTime(0)
- , m_clickButton(kWKEventMouseButtonNoButton)
- , m_mouseButton(kWKEventMouseButtonNoButton)
-#if ENABLE(TOUCH_EVENTS)
- , m_touchPoints(0)
-#endif
-{
-}
-
-EventSenderProxy::~EventSenderProxy()
-{
-#if ENABLE(TOUCH_EVENTS)
- clearTouchPoints();
-#endif
-}
-
-void EventSenderProxy::updateClickCountForButton(int button)
-{
- if (m_time - m_clickTime < 1 && m_position == m_clickPosition && button == m_clickButton) {
- ++m_clickCount;
- m_clickTime = m_time;
- return;
- }
-
- m_clickCount = 1;
- m_clickTime = m_time;
- m_clickPosition = m_position;
- m_clickButton = button;
-}
-
-void EventSenderProxy::dispatchEvent(const WTREvent& event)
-{
- Evas* evas = evas_object_evas_get(m_testController->mainWebView()->platformView());
-
- if (event.eventType == WTREventTypeMouseDown)
- dispatchMouseDownEvent(evas, event.button, event.modifiers, m_clickCount);
- else if (event.eventType == WTREventTypeMouseUp)
- dispatchMouseUpEvent(evas, event.button, event.modifiers);
- else if (event.eventType == WTREventTypeMouseMove)
- dispatchMouseMoveEvent(evas, static_cast<int>(m_position.x), static_cast<int>(m_position.y));
- else if (event.eventType == WTREventTypeMouseScrollBy)
- dispatchMouseScrollByEvent(evas, event.horizontal, event.vertical);
-}
-
-void EventSenderProxy::replaySavedEvents()
-{
- while (!m_eventQueue.isEmpty()) {
- WTREvent event = m_eventQueue.takeFirst();
- if (event.delay)
- usleep(event.delay * 1000);
-
- dispatchEvent(event);
- }
-}
-
-void EventSenderProxy::sendOrQueueEvent(const WTREvent& event)
-{
- if (m_eventQueue.isEmpty() || !m_eventQueue.last().delay) {
- dispatchEvent(event);
- return;
- }
-
- m_eventQueue.append(event);
- replaySavedEvents();
-}
-
-void EventSenderProxy::mouseDown(unsigned button, WKEventModifiers wkModifiers)
-{
- if (m_mouseButton == button)
- return;
-
- m_mouseButton = button;
- updateClickCountForButton(button);
-
- sendOrQueueEvent(WTREvent(WTREventTypeMouseDown, 0, wkModifiers, evasMouseButton(button)));
-}
-
-void EventSenderProxy::mouseUp(unsigned button, WKEventModifiers wkModifiers)
-{
- sendOrQueueEvent(WTREvent(WTREventTypeMouseUp, 0, wkModifiers, evasMouseButton(button)));
-
- if (m_mouseButton == button)
- m_mouseButton = kWKEventMouseButtonNoButton;
-
- m_clickPosition = m_position;
- m_clickTime = ecore_time_get();
-}
-
-void EventSenderProxy::mouseMoveTo(double x, double y)
-{
- m_position.x = x;
- m_position.y = y;
-
- sendOrQueueEvent(WTREvent(WTREventTypeMouseMove, 0, 0, kWKEventMouseButtonNoButton));
-}
-
-void EventSenderProxy::mouseScrollBy(int horizontal, int vertical)
-{
- WTREvent event(WTREventTypeMouseScrollBy, 0, 0, kWKEventMouseButtonNoButton);
- // We need to invert scrolling values since in EFL negative z value means that
- // canvas is scrolling down
- event.horizontal = -horizontal;
- event.vertical = -vertical;
- sendOrQueueEvent(event);
-}
-
-void EventSenderProxy::continuousMouseScrollBy(int horizontal, int vertical, bool paged)
-{
- notImplemented();
-}
-
-void EventSenderProxy::leapForward(int milliseconds)
-{
- if (m_eventQueue.isEmpty())
- m_eventQueue.append(WTREvent(WTREventTypeLeapForward, milliseconds, 0, kWKEventMouseButtonNoButton));
-
- m_time += milliseconds / 1000.0;
-}
-
-void EventSenderProxy::keyDown(WKStringRef keyRef, WKEventModifiers wkModifiers, unsigned location)
-{
- const RefPtr<KeyEventInfo> keyEventInfo = (location == DOMKeyLocationNumpad) ? keyPadName(keyRef) : keyName(keyRef);
- if (!keyEventInfo)
- return;
-
- const char* keyName = keyEventInfo->keyName.data();
- const char* keyString = keyEventInfo->keyString.data();
-
- // Enforce 'Shift' modifier for caps.
- if ((strlen(keyName) == 1) && (keyName[0] >= 'A' && keyName[0] <= 'Z'))
- wkModifiers |= kWKEventModifiersShiftKey;
-
- Evas* evas = evas_object_evas_get(m_testController->mainWebView()->platformView());
-
- int eventIndex = 0;
- // Mimic the emacs ctrl-o binding by inserting a paragraph
- // separator and then putting the cursor back to its original
- // position. Allows us to pass emacs-ctrl-o.html
- if ((wkModifiers & kWKEventModifiersControlKey) && !strcmp(keyName, "o")) {
- setEvasModifiers(evas, 0);
- evas_event_feed_key_down(evas, "Return", "Return", "\r", 0, eventIndex++, 0);
- evas_event_feed_key_up(evas, "Return", "Return", "\r", 0, eventIndex++, 0);
- wkModifiers = 0;
- keyName = "Left";
- keyString = 0;
- }
-
- setEvasModifiers(evas, wkModifiers);
- evas_event_feed_key_down(evas, keyName, keyName, keyString, 0, eventIndex++, 0);
- evas_event_feed_key_up(evas, keyName, keyName, keyString, 0, eventIndex++, 0);
- setEvasModifiers(evas, 0);
-}
-
-#if ENABLE(TOUCH_EVENTS)
-void EventSenderProxy::sendTouchEvent(Ewk_Touch_Event_Type eventType)
-{
- ASSERT(m_touchPoints);
-
- Evas_Object* ewkView = m_testController->mainWebView()->platformView();
- ewk_view_feed_touch_event(ewkView, eventType, m_touchPoints, evas_key_modifier_get(evas_object_evas_get(ewkView)));
-
- Eina_List* list;
- Eina_List* listNext;
- void* data;
- EINA_LIST_FOREACH_SAFE(m_touchPoints, list, listNext, data) {
- Ewk_Touch_Point* touchPoint = static_cast<Ewk_Touch_Point*>(data);
- ASSERT(touchPoint);
-
- if ((touchPoint->state == EVAS_TOUCH_POINT_UP) || (touchPoint->state == EVAS_TOUCH_POINT_CANCEL)) {
- delete touchPoint;
- m_touchPoints = eina_list_remove_list(m_touchPoints, list);
- } else
- touchPoint->state = EVAS_TOUCH_POINT_STILL;
- }
-}
-
-void EventSenderProxy::addTouchPoint(int x, int y)
-{
- int id = 0;
- if (m_touchPoints) {
- Eina_List* last = eina_list_last(m_touchPoints);
- Ewk_Touch_Point* touchPoint = static_cast<Ewk_Touch_Point*>(eina_list_data_get(last));
- ASSERT(touchPoint);
-
- id = touchPoint->id + 1;
- }
-
- Ewk_Touch_Point* touchPoint = new Ewk_Touch_Point;
- touchPoint->id = id;
- touchPoint->x = x;
- touchPoint->y = y;
- touchPoint->state = EVAS_TOUCH_POINT_DOWN;
-
- m_touchPoints = eina_list_append(m_touchPoints, touchPoint);
-}
-
-void EventSenderProxy::updateTouchPoint(int index, int x, int y)
-{
- ASSERT(index >= 0 && index < eina_list_count(m_touchPoints));
-
- Ewk_Touch_Point* touchPoint = static_cast<Ewk_Touch_Point*>(eina_list_nth(m_touchPoints, index));
- ASSERT(touchPoint);
-
- touchPoint->x = x;
- touchPoint->y = y;
- touchPoint->state = EVAS_TOUCH_POINT_MOVE;
-}
-
-void EventSenderProxy::setTouchModifier(WKEventModifiers modifier, bool enable)
-{
- Evas_Object* ewkView = m_testController->mainWebView()->platformView();
-
- for (unsigned index = 0; index < (sizeof(modifierNames) / sizeof(char*)); ++index) {
- if (modifier & (1 << index)) {
- if (enable)
- evas_key_modifier_on(evas_object_evas_get(ewkView), modifierNames[index]);
- else
- evas_key_modifier_off(evas_object_evas_get(ewkView), modifierNames[index]);
- }
- }
-}
-
-void EventSenderProxy::touchStart()
-{
- sendTouchEvent(EWK_TOUCH_START);
-}
-
-void EventSenderProxy::touchMove()
-{
- sendTouchEvent(EWK_TOUCH_MOVE);
-}
-
-void EventSenderProxy::touchEnd()
-{
- sendTouchEvent(EWK_TOUCH_END);
-}
-
-void EventSenderProxy::touchCancel()
-{
- sendTouchEvent(EWK_TOUCH_CANCEL);
-}
-
-void EventSenderProxy::clearTouchPoints()
-{
- void* data = 0;
- EINA_LIST_FREE(m_touchPoints, data)
- delete static_cast<Ewk_Touch_Point*>(data);
-}
-
-void EventSenderProxy::releaseTouchPoint(int index)
-{
- ASSERT(index >= 0 && index < eina_list_count(m_touchPoints));
-
- Ewk_Touch_Point* touchPoint = static_cast<Ewk_Touch_Point*>(eina_list_nth(m_touchPoints, index));
- ASSERT(touchPoint);
-
- touchPoint->state = EVAS_TOUCH_POINT_UP;
-}
-
-void EventSenderProxy::cancelTouchPoint(int index)
-{
- ASSERT(index >= 0 && index < eina_list_count(m_touchPoints));
-
- Ewk_Touch_Point* touchPoint = static_cast<Ewk_Touch_Point*>(eina_list_nth(m_touchPoints, index));
- ASSERT(touchPoint);
-
- touchPoint->state = EVAS_TOUCH_POINT_CANCEL;
-}
-
-void EventSenderProxy::setTouchPointRadius(int radiusX, int radiusY)
-{
- notImplemented();
-}
-
-#endif
-
-}
diff --git a/Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp b/Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp
deleted file mode 100644
index eac153c77..000000000
--- a/Tools/WebKitTestRunner/efl/PlatformWebViewEfl.cpp
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- * Copyright (C) 2012 Intel Corporation. All rights reserved.
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "ewk_view_private.h"
-#include "PlatformWebView.h"
-
-#include "EWebKit2.h"
-#include "WebKit2/WKAPICast.h"
-#include <Ecore_Evas.h>
-#include <WebCore/RefPtrCairo.h>
-#include <WebKit2/WKImageCairo.h>
-#include <WebKit2/WKViewEfl.h>
-#include <cairo.h>
-
-using namespace WebKit;
-
-namespace WTR {
-
-static Ecore_Evas* initEcoreEvas()
-{
- Ecore_Evas* ecoreEvas = 0;
-#if defined(WTF_USE_ACCELERATED_COMPOSITING) && defined(HAVE_ECORE_X)
- const char* engine = "opengl_x11";
- ecoreEvas = ecore_evas_new(engine, 0, 0, 800, 600, 0);
- // Graceful fallback to software rendering if evas_gl engine is not available.
- if (!ecoreEvas)
-#endif
- ecoreEvas = ecore_evas_new(0, 0, 0, 800, 600, 0);
-
- if (!ecoreEvas)
- return 0;
-
- ecore_evas_title_set(ecoreEvas, "EFL WebKitTestRunner");
- ecore_evas_show(ecoreEvas);
-
- return ecoreEvas;
-}
-
-PlatformWebView::PlatformWebView(WKContextRef context, WKPageGroupRef pageGroup, WKPageRef /* relatedPage */, WKDictionaryRef options)
- : m_options(options)
-{
- WKRetainPtr<WKStringRef> useFixedLayoutKey(AdoptWK, WKStringCreateWithUTF8CString("UseFixedLayout"));
- m_usingFixedLayout = options ? WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(options, useFixedLayoutKey.get()))) : false;
-
- m_window = initEcoreEvas();
-
- m_view = EWKViewCreate(context, pageGroup, ecore_evas_get(m_window), /* smart */ 0);
-
- WKPageSetUseFixedLayout(WKViewGetPage(EWKViewGetWKView(m_view)), m_usingFixedLayout);
-
- if (m_usingFixedLayout)
- resizeTo(800, 600);
-
- ewk_view_theme_set(m_view, TEST_THEME_DIR "/default.edj");
- m_windowIsKey = false;
- evas_object_show(m_view);
-}
-
-PlatformWebView::~PlatformWebView()
-{
- evas_object_del(m_view);
-
- ecore_evas_free(m_window);
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- evas_object_resize(m_view, width, height);
-}
-
-WKPageRef PlatformWebView::page()
-{
- return WKViewGetPage(EWKViewGetWKView(m_view));
-}
-
-void PlatformWebView::focus()
-{
- // In a few cases, an iframe might receive focus from JavaScript and Evas is not aware of it at all
- // (WebCoreSupport::focusedFrameChanged() does not emit any notification). We then manually remove the
- // focus from the view to make the call give focus to evas_object_focus_set(..., true) to be effectful.
- if (WKPageGetFocusedFrame(page()) != WKPageGetMainFrame(page()))
- evas_object_focus_set(m_view, false);
- evas_object_focus_set(m_view, true);
-}
-
-WKRect PlatformWebView::windowFrame()
-{
- int x, y, width, height;
-
- ecore_evas_request_geometry_get(m_window, &x, &y, &width, &height);
-
- return WKRectMake(x, y, width, height);
-}
-
-void PlatformWebView::setWindowFrame(WKRect frame)
-{
- ecore_evas_move_resize(m_window, frame.origin.x, frame.origin.y, frame.size.width, frame.size.height);
-}
-
-void PlatformWebView::addChromeInputField()
-{
-}
-
-void PlatformWebView::removeChromeInputField()
-{
-}
-
-void PlatformWebView::makeWebViewFirstResponder()
-{
-}
-
-WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage()
-{
- int width;
- int height;
- ecore_evas_geometry_get(m_window, 0, 0, &width, &height);
- ASSERT(width > 0 && height > 0);
-
- return adoptWK(WKViewCreateSnapshot(EWKViewGetWKView(m_view)));
-}
-
-bool PlatformWebView::viewSupportsOptions(WKDictionaryRef options) const
-{
- WKRetainPtr<WKStringRef> useFixedLayoutKey(AdoptWK, WKStringCreateWithUTF8CString("UseFixedLayout"));
-
- return m_usingFixedLayout == (options ? WKBooleanGetValue(static_cast<WKBooleanRef>(WKDictionaryGetItemForKey(options, useFixedLayoutKey.get()))) : false);
-}
-
-void PlatformWebView::didInitializeClients()
-{
-}
-
-} // namespace WTR
-
diff --git a/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp b/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp
deleted file mode 100644
index c69b3c99d..000000000
--- a/Tools/WebKitTestRunner/efl/TestControllerEfl.cpp
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "TestController.h"
-
-#include <Ecore.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <unistd.h>
-#include <wtf/Platform.h>
-#include <wtf/text/WTFString.h>
-
-namespace WTR {
-
-static Ecore_Timer* timer = 0;
-
-static Eina_Bool timerFired(void*)
-{
- timer = 0;
- ecore_main_loop_quit();
- return ECORE_CALLBACK_CANCEL;
-}
-
-void TestController::notifyDone()
-{
- if (!timer)
- return;
-
- ecore_timer_del(timer);
- timer = 0;
- ecore_main_loop_quit();
-}
-
-void TestController::platformInitialize()
-{
- const char* isDebugging = getenv("WEB_PROCESS_CMD_PREFIX");
- if (isDebugging && *isDebugging) {
- m_useWaitToDumpWatchdogTimer = false;
- m_forceNoTimeout = true;
- }
-}
-
-void TestController::platformDestroy()
-{
-}
-
-void TestController::platformRunUntil(bool& condition, double timeout)
-{
- if (timeout == m_noTimeout) {
- // Never timeout if we are debugging or not meant to timeout.
- while (!condition)
- ecore_main_loop_iterate();
-
- return;
- }
- timer = ecore_timer_loop_add(timeout, timerFired, 0);
- ecore_main_loop_begin();
-}
-
-static const char* getEnvironmentVariableOrExit(const char* variableName)
-{
- const char* value = getenv(variableName);
- if (!value) {
- fprintf(stderr, "%s environment variable not found\n", variableName);
- exit(0);
- }
-
- return value;
-}
-
-void TestController::initializeInjectedBundlePath()
-{
- const char* bundlePath = getEnvironmentVariableOrExit("TEST_RUNNER_INJECTED_BUNDLE_FILENAME");
- m_injectedBundlePath.adopt(WKStringCreateWithUTF8CString(bundlePath));
-}
-
-void TestController::initializeTestPluginDirectory()
-{
- const char* pluginPath = getEnvironmentVariableOrExit("TEST_RUNNER_PLUGIN_PATH");
- m_testPluginDirectory.adopt(WKStringCreateWithUTF8CString(pluginPath));
-}
-
-void TestController::platformInitializeContext()
-{
-}
-
-void TestController::runModal(PlatformWebView*)
-{
- // FIXME: Need to implement this to test showModalDialog.
-}
-
-const char* TestController::platformLibraryPathForTesting()
-{
- return 0;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/efl/main.cpp b/Tools/WebKitTestRunner/efl/main.cpp
deleted file mode 100644
index 6b50669bc..000000000
--- a/Tools/WebKitTestRunner/efl/main.cpp
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * Copyright (C) 2012 Samsung Electronics
- *
- * 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 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
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this program; 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 "EWebKit2.h"
-#include "TestController.h"
-#include <wtf/Assertions.h>
-#include <stdlib.h>
-
-#ifdef HAVE_ECORE_X
-#include <X11/Xlib.h>
-#include <X11/extensions/Xext.h>
-
-static int dummyExtensionErrorHandler(Display*, _Xconst char*, _Xconst char*)
-{
- return 0;
-}
-#endif
-
-int main(int argc, char** argv)
-{
- WTFInstallReportBacktraceOnCrashHook();
-
-#ifdef HAVE_ECORE_X
- XSetExtensionErrorHandler(dummyExtensionErrorHandler);
-#endif
-
- if (!ewk_init())
- return 1;
-
- {
- // Test controller has own ptr containing WebView and WebView must be deleted
- // before its evas object is deleted. Call of ewk_shutdown() leads to evas objects deletion.
-
- WTR::TestController controller(argc, const_cast<const char**>(argv));
- }
-
- ewk_shutdown();
-
- return 0;
-}
-
diff --git a/Tools/WebKitTestRunner/fonts/AHEM____.TTF b/Tools/WebKitTestRunner/fonts/AHEM____.TTF
deleted file mode 100644
index ac81cb031..000000000
--- a/Tools/WebKitTestRunner/fonts/AHEM____.TTF
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/ColorBits-A.png b/Tools/WebKitTestRunner/fonts/ColorBits-A.png
deleted file mode 100644
index 8b9319c1d..000000000
--- a/Tools/WebKitTestRunner/fonts/ColorBits-A.png
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/SampleFont.sfont b/Tools/WebKitTestRunner/fonts/SampleFont.sfont
deleted file mode 100644
index d50dfc44d..000000000
--- a/Tools/WebKitTestRunner/fonts/SampleFont.sfont
+++ /dev/null
@@ -1,223 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!DOCTYPE PosingFont SYSTEM "file://localhost/System/Library/DTDs/SplicedFont.dtd">
-
-<PosingFont name="HiraMaruMono-W4" version="1.0">
- <Name type="1" string="Hiragino Maru Gothic Monospaced" language="en"/>
- <Name type="2" string="W4" language="en"/>
- <Name type="3" string="Composite Font Reference (Spliced Font) sample using Hiragino Maru Gothic W4 for Monospaced" language="en"/>
- <Name type="4" string="Hiragino Maru Gothic Monospaced W4" language="en"/>
- <FontMetrics
- unitsPerEm="1000"
- ascender="561.1"
- descender="214.3"
- lineGap="21.0"
- italicAngle="0.0"
- isFixedPitch="1"
- vertTypoLineGap="4.2"
- familyClass="1"
- />
- <Components>
- <ComponentDef name="HiraMaruPro-W4">
- <Matrix
- xx="1.0"
- xy="0.0"
- yx="0.0"
- yy="1.0"
- tx="0.0"
- ty="0.0"
- />
- <UnicodeCharSet
- uset="[[\u0020-\u007E]|[\u00A0-\u00FC]|[\u02BB-\u0336]|[\u2010-\u2044]|[\u2212-\u223C]]"
- />
- <cmapOverride>
- <map charValue="u0020" charName="SPACE" glyphRefID="231"/>
- <map charValue="u0021" charName="EXCLAMATION MARK" glyphRefID="232"/>
- <map charValue="u0022" charName="QUOTATION MARK" glyphRefID="12087"/>
- <map charValue="u0023" charName="NUMBER SIGN" glyphRefID="234"/>
- <map charValue="u0024" charName="DOLLAR SIGN" glyphRefID="235"/>
- <map charValue="u0025" charName="PERCENT SIGN" glyphRefID="236"/>
- <map charValue="u0026" charName="AMPERSAND" glyphRefID="237"/>
- <map charValue="u0027" charName="APOSTROPHE" glyphRefID="12086"/>
- <map charValue="u0028" charName="LEFT PARENTHESIS" glyphRefID="239"/>
- <map charValue="u0029" charName="RIGHT PARENTHESIS" glyphRefID="240"/>
- <map charValue="u002A" charName="ASTERISK" glyphRefID="241"/>
- <map charValue="u002B" charName="PLUS SIGN" glyphRefID="242"/>
- <map charValue="u002C" charName="COMMA" glyphRefID="243"/>
- <map charValue="u002D" charName="HYPHEN-MINUS" glyphRefID="244"/>
- <map charValue="u002E" charName="FULL STOP" glyphRefID="245"/>
- <map charValue="u002F" charName="SOLIDUS" glyphRefID="246"/>
- <map charValue="u0030" charName="DIGIT ZERO" glyphRefID="247"/>
- <map charValue="u0031" charName="DIGIT ONE" glyphRefID="248"/>
- <map charValue="u0032" charName="DIGIT TWO" glyphRefID="249"/>
- <map charValue="u0033" charName="DIGIT THREE" glyphRefID="250"/>
- <map charValue="u0034" charName="DIGIT FOUR" glyphRefID="251"/>
- <map charValue="u0035" charName="DIGIT FIVE" glyphRefID="252"/>
- <map charValue="u0036" charName="DIGIT SIX" glyphRefID="253"/>
- <map charValue="u0037" charName="DIGIT SEVEN" glyphRefID="254"/>
- <map charValue="u0038" charName="DIGIT EIGHT" glyphRefID="255"/>
- <map charValue="u0039" charName="DIGIT NINE" glyphRefID="256"/>
- <map charValue="u003A" charName="COLON" glyphRefID="257"/>
- <map charValue="u003B" charName="SEMICOLON" glyphRefID="258"/>
- <map charValue="u003C" charName="LESS-THAN SIGN" glyphRefID="259"/>
- <map charValue="u003D" charName="EQUALS SIGN" glyphRefID="260"/>
- <map charValue="u003E" charName="GREATER-THAN SIGN" glyphRefID="261"/>
- <map charValue="u003F" charName="QUESTION MARK" glyphRefID="262"/>
- <map charValue="u0040" charName="COMMERCIAL AT" glyphRefID="263"/>
- <map charValue="u0041" charName="LATIN CAPITAL LETTER A" glyphRefID="264"/>
- <map charValue="u0042" charName="LATIN CAPITAL LETTER B" glyphRefID="265"/>
- <map charValue="u0043" charName="LATIN CAPITAL LETTER C" glyphRefID="266"/>
- <map charValue="u0044" charName="LATIN CAPITAL LETTER D" glyphRefID="267"/>
- <map charValue="u0045" charName="LATIN CAPITAL LETTER E" glyphRefID="268"/>
- <map charValue="u0046" charName="LATIN CAPITAL LETTER F" glyphRefID="269"/>
- <map charValue="u0047" charName="LATIN CAPITAL LETTER G" glyphRefID="270"/>
- <map charValue="u0048" charName="LATIN CAPITAL LETTER H" glyphRefID="271"/>
- <map charValue="u0049" charName="LATIN CAPITAL LETTER I" glyphRefID="272"/>
- <map charValue="u004A" charName="LATIN CAPITAL LETTER J" glyphRefID="273"/>
- <map charValue="u004B" charName="LATIN CAPITAL LETTER K" glyphRefID="274"/>
- <map charValue="u004C" charName="LATIN CAPITAL LETTER L" glyphRefID="275"/>
- <map charValue="u004D" charName="LATIN CAPITAL LETTER M" glyphRefID="276"/>
- <map charValue="u004E" charName="LATIN CAPITAL LETTER N" glyphRefID="277"/>
- <map charValue="u004F" charName="LATIN CAPITAL LETTER O" glyphRefID="278"/>
- <map charValue="u0050" charName="LATIN CAPITAL LETTER P" glyphRefID="279"/>
- <map charValue="u0051" charName="LATIN CAPITAL LETTER Q" glyphRefID="280"/>
- <map charValue="u0052" charName="LATIN CAPITAL LETTER R" glyphRefID="281"/>
- <map charValue="u0053" charName="LATIN CAPITAL LETTER S" glyphRefID="282"/>
- <map charValue="u0054" charName="LATIN CAPITAL LETTER T" glyphRefID="283"/>
- <map charValue="u0055" charName="LATIN CAPITAL LETTER U" glyphRefID="284"/>
- <map charValue="u0056" charName="LATIN CAPITAL LETTER V" glyphRefID="285"/>
- <map charValue="u0057" charName="LATIN CAPITAL LETTER W" glyphRefID="286"/>
- <map charValue="u0058" charName="LATIN CAPITAL LETTER X" glyphRefID="287"/>
- <map charValue="u0059" charName="LATIN CAPITAL LETTER Y" glyphRefID="288"/>
- <map charValue="u005A" charName="LATIN CAPITAL LETTER Z" glyphRefID="289"/>
- <map charValue="u005B" charName="LEFT SQUARE BRACKET" glyphRefID="290"/>
- <map charValue="u005C" charName="REVERSE SOLIDUS" glyphRefID="8719"/>
- <map charValue="u005D" charName="RIGHT SQUARE BRACKET" glyphRefID="292"/>
- <map charValue="u005E" charName="CIRCUMFLEX ACCENT" glyphRefID="293"/>
- <map charValue="u005F" charName="LOW LINE" glyphRefID="294"/>
- <map charValue="u0060" charName="GRAVE ACCENT" glyphRefID="390"/>
- <map charValue="u0061" charName="LATIN SMALL LETTER A" glyphRefID="296"/>
- <map charValue="u0062" charName="LATIN SMALL LETTER B" glyphRefID="297"/>
- <map charValue="u0063" charName="LATIN SMALL LETTER C" glyphRefID="298"/>
- <map charValue="u0064" charName="LATIN SMALL LETTER D" glyphRefID="299"/>
- <map charValue="u0065" charName="LATIN SMALL LETTER E" glyphRefID="300"/>
- <map charValue="u0066" charName="LATIN SMALL LETTER F" glyphRefID="301"/>
- <map charValue="u0067" charName="LATIN SMALL LETTER G" glyphRefID="302"/>
- <map charValue="u0068" charName="LATIN SMALL LETTER H" glyphRefID="303"/>
- <map charValue="u0069" charName="LATIN SMALL LETTER I" glyphRefID="304"/>
- <map charValue="u006A" charName="LATIN SMALL LETTER J" glyphRefID="305"/>
- <map charValue="u006B" charName="LATIN SMALL LETTER K" glyphRefID="306"/>
- <map charValue="u006C" charName="LATIN SMALL LETTER L" glyphRefID="307"/>
- <map charValue="u006D" charName="LATIN SMALL LETTER M" glyphRefID="308"/>
- <map charValue="u006E" charName="LATIN SMALL LETTER N" glyphRefID="309"/>
- <map charValue="u006F" charName="LATIN SMALL LETTER O" glyphRefID="310"/>
- <map charValue="u0070" charName="LATIN SMALL LETTER P" glyphRefID="311"/>
- <map charValue="u0071" charName="LATIN SMALL LETTER Q" glyphRefID="312"/>
- <map charValue="u0072" charName="LATIN SMALL LETTER R" glyphRefID="313"/>
- <map charValue="u0073" charName="LATIN SMALL LETTER S" glyphRefID="314"/>
- <map charValue="u0074" charName="LATIN SMALL LETTER T" glyphRefID="315"/>
- <map charValue="u0075" charName="LATIN SMALL LETTER U" glyphRefID="316"/>
- <map charValue="u0076" charName="LATIN SMALL LETTER V" glyphRefID="317"/>
- <map charValue="u0077" charName="LATIN SMALL LETTER W" glyphRefID="318"/>
- <map charValue="u0078" charName="LATIN SMALL LETTER X" glyphRefID="319"/>
- <map charValue="u0079" charName="LATIN SMALL LETTER Y" glyphRefID="320"/>
- <map charValue="u007A" charName="LATIN SMALL LETTER Z" glyphRefID="321"/>
- <map charValue="u007B" charName="LEFT CURLY BRACKET" glyphRefID="322"/>
- <map charValue="u007C" charName="VERTICAL LINE" glyphRefID="323"/>
- <map charValue="u007D" charName="RIGHT CURLY BRACKET" glyphRefID="324"/>
- <map charValue="u007E" charName="TILDE" glyphRefID="631"/>
- <map charValue="u00A0" charName="NO-BREAK SPACE" glyphRefID="231"/>
- <map charValue="u00A1" charName="INVERTED EXCLAMATION MARK" glyphRefID="612"/>
- <map charValue="u00A2" charName="CENT SIGN" glyphRefID="608"/>
- <map charValue="u00A3" charName="POUND SIGN" glyphRefID="609"/>
- <map charValue="u00A5" charName="YEN SIGN" glyphRefID="291"/>
- <map charValue="u00A6" charName="BROKEN BAR" glyphRefID="323"/>
- <map charValue="u00A8" charName="DIAERESIS" glyphRefID="502"/>
- <map charValue="u00AC" charName="NOT SIGN" glyphRefID="8718"/>
- <map charValue="u00AD" charName="SOFT HYPHEN" glyphRefID="514"/>
- <map charValue="u00AF" charName="MACRON" glyphRefID="325"/>
- <map charValue="u00B4" charName="ACUTE ACCENT" glyphRefID="501"/>
- <map charValue="u00B7" charName="MIDDLE DOT" glyphRefID="331"/>
- <map charValue="u00BD" charName="VULGAR FRACTION ONE HALF" glyphRefID="614"/>
- <map charValue="u00BF" charName="INVERTED QUESTION MARK" glyphRefID="613"/>
- <map charValue="u00C4" charName="LATIN CAPITAL LETTER A WITH DIAERESIS" glyphRefID="599"/>
- <map charValue="u00C7" charName="LATIN CAPITAL LETTER C WITH CEDILLA" glyphRefID="605"/>
- <map charValue="u00D1" charName="LATIN CAPITAL LETTER N WITH TILDE" glyphRefID="606"/>
- <map charValue="u00D6" charName="LATIN CAPITAL LETTER O WITH DIAERESIS" glyphRefID="615"/>
- <map charValue="u00DC" charName="LATIN CAPITAL LETTER U WITH DIAERESIS" glyphRefID="616"/>
- <map charValue="u00DF" charName="LATIN SMALL LETTER SHARP S" glyphRefID="603"/>
- <map charValue="u00E0" charName="LATIN SMALL LETTER A WITH GRAVE" glyphRefID="627"/>
- <map charValue="u00E1" charName="LATIN SMALL LETTER A WITH ACUTE" glyphRefID="630"/>
- <map charValue="u00E2" charName="LATIN SMALL LETTER A WITH CIRCUMFLEX" glyphRefID="622"/>
- <map charValue="u00E4" charName="LATIN SMALL LETTER A WITH DIAERESIS" glyphRefID="617"/>
- <map charValue="u00E7" charName="LATIN SMALL LETTER C WITH CEDILLA" glyphRefID="604"/>
- <map charValue="u00E8" charName="LATIN SMALL LETTER E WITH GRAVE" glyphRefID="628"/>
- <map charValue="u00E9" charName="LATIN SMALL LETTER E WITH ACUTE" glyphRefID="601"/>
- <map charValue="u00EA" charName="LATIN SMALL LETTER E WITH CIRCUMFLEX" glyphRefID="623"/>
- <map charValue="u00EB" charName="LATIN SMALL LETTER E WITH DIAERESIS" glyphRefID="618"/>
- <map charValue="u00ED" charName="LATIN SMALL LETTER I WITH ACUTE" glyphRefID="602"/>
- <map charValue="u00EE" charName="LATIN SMALL LETTER I WITH CIRCUMFLEX" glyphRefID="624"/>
- <map charValue="u00EF" charName="LATIN SMALL LETTER I WITH DIAERESIS" glyphRefID="619"/>
- <map charValue="u00F1" charName="LATIN SMALL LETTER N WITH TILDE" glyphRefID="607"/>
- <map charValue="u00F3" charName="LATIN SMALL LETTER O WITH ACUTE" glyphRefID="610"/>
- <map charValue="u00F4" charName="LATIN SMALL LETTER O WITH CIRCUMFLEX" glyphRefID="625"/>
- <map charValue="u00F6" charName="LATIN SMALL LETTER O WITH DIAERESIS" glyphRefID="620"/>
- <map charValue="u00F9" charName="LATIN SMALL LETTER U WITH GRAVE" glyphRefID="600"/>
- <map charValue="u00FA" charName="LATIN SMALL LETTER U WITH ACUTE" glyphRefID="611"/>
- <map charValue="u00FB" charName="LATIN SMALL LETTER U WITH CIRCUMFLEX" glyphRefID="626"/>
- <map charValue="u00FC" charName="LATIN SMALL LETTER U WITH DIAERESIS" glyphRefID="621"/>
- <map charValue="u02BB" charName="MODIFIER LETTER TURNED COMMA" glyphRefID="295"/>
- <map charValue="u02BC" charName="MODIFIER LETTER APOSTROPHE" glyphRefID="238"/>
- <map charValue="u02DC" charName="SMALL TILDE" glyphRefID="631"/>
- <map charValue="u0300" charName="COMBINING GRAVE ACCENT" glyphRefID="390"/>
- <map charValue="u0301" charName="COMBINING ACUTE ACCENT" glyphRefID="501"/>
- <map charValue="u0302" charName="COMBINING CIRCUMFLEX ACCENT" glyphRefID="293"/>
- <map charValue="u0303" charName="COMBINING TILDE" glyphRefID="631"/>
- <map charValue="u0304" charName="COMBINING MACRON" glyphRefID="325"/>
- <map charValue="u0305" charName="COMBINING OVERLINE" glyphRefID="325"/>
- <map charValue="u0308" charName="COMBINING DIAERESIS" glyphRefID="502"/>
- <map charValue="u0332" charName="COMBINING LOW LINE" glyphRefID="294"/>
- <map charValue="u0336" charName="COMBINING LONG STROKE OVERLAY" glyphRefID="514"/>
- <map charValue="u2010" charName="HYPHEN" glyphRefID="244"/>
- <map charValue="u2011" charName="NON-BREAKING HYPHEN" glyphRefID="244"/>
- <map charValue="u2012" charName="FIGURE DASH" glyphRefID="244"/>
- <map charValue="u2013" charName="EN DASH" glyphRefID="514"/>
- <map charValue="u2014" charName="EM DASH" glyphRefID="514"/>
- <map charValue="u2018" charName="LEFT SINGLE QUOTATION MARK" glyphRefID="295"/>
- <map charValue="u2019" charName="RIGHT SINGLE QUOTATION MARK" glyphRefID="238"/>
- <map charValue="u201C" charName="LEFT DOUBLE QUOTATION MARK" glyphRefID="503"/>
- <map charValue="u201D" charName="RIGHT DOUBLE QUOTATION MARK" glyphRefID="233"/>
- <map charValue="u2039" charName="SINGLE LEFT-POINTING ANGLE QUOTATION MARK" glyphRefID="259"/>
- <map charValue="u203A" charName="SINGLE RIGHT-POINTING ANGLE QUOTATION MARK" glyphRefID="261"/>
- <map charValue="u203E" charName="OVERLINE" glyphRefID="325"/>
- <map charValue="u2044" charName="FRACTION SLASH" glyphRefID="246"/>
- <map charValue="u2212" charName="MINUS SIGN" glyphRefID="514"/>
- <map charValue="u2219" charName="BULETTE OPERATOR" glyphRefID="331"/>
- <map charValue="u223C" charName="TILDE OPERATOR" glyphRefID="631"/>
- </cmapOverride>
- </ComponentDef>
- <ComponentDef name="HiraMaruPro-W4">
- <Matrix
- xx="1.0"
- xy="0.0"
- yx="0.0"
- yy="1.0"
- tx="0.0"
- ty="0.0"
- />
- <Tracking trackingValue="1.0"/>
- <ToUnicode fromEncoding="CID Japen1">
- <mapChar fromCharValue="0x20" toCharValue="u20"/>
- <mapChar fromCharValue="0x30" toCharValue="u30"/>
- <mapChar fromCharValue="0x31" toCharValue="u31"/>
- <mapChar fromCharValue="0x32" toCharValue="u32"/>
- <mapChar fromCharValue="0x33" toCharValue="u33"/>
- <mapChar fromCharValue="0x34" toCharValue="u34"/>
- <mapChar fromCharValue="0x35" toCharValue="u35"/>
- <mapChar fromCharValue="0x36" toCharValue="u36"/>
- <mapChar fromCharValue="0x37" toCharValue="u37"/>
- <mapChar fromCharValue="0x38" toCharValue="u38"/>
- <mapChar fromCharValue="0x39" toCharValue="u39"/>
- </ToUnicode>
- </ComponentDef>
- </Components>
-</PosingFont>
diff --git a/Tools/WebKitTestRunner/fonts/WebKit Layout Tests 2.ttf b/Tools/WebKitTestRunner/fonts/WebKit Layout Tests 2.ttf
deleted file mode 100644
index e732fbc42..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKit Layout Tests 2.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKit Layout Tests.ttf b/Tools/WebKitTestRunner/fonts/WebKit Layout Tests.ttf
deleted file mode 100644
index f9f997e63..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKit Layout Tests.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher100.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher100.ttf
deleted file mode 100644
index 22b00dec7..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher100.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher200.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher200.ttf
deleted file mode 100644
index 1ccadbad5..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher200.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher300.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher300.ttf
deleted file mode 100644
index ab5563dfa..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher300.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher400.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher400.ttf
deleted file mode 100644
index 56d279e0e..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher400.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher500.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher500.ttf
deleted file mode 100644
index d827d7d85..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher500.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher600.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher600.ttf
deleted file mode 100644
index 914159670..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher600.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher700.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher700.ttf
deleted file mode 100644
index a2d05059d..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher700.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher800.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher800.ttf
deleted file mode 100644
index d0f354bf3..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher800.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher900.ttf b/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher900.ttf
deleted file mode 100644
index 6b895ca71..000000000
--- a/Tools/WebKitTestRunner/fonts/WebKitWeightWatcher900.ttf
+++ /dev/null
Binary files differ
diff --git a/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp b/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
deleted file mode 100644
index 8d08e402a..000000000
--- a/Tools/WebKitTestRunner/gtk/EventSenderProxyGtk.cpp
+++ /dev/null
@@ -1,445 +0,0 @@
-/*
- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
- * Copyright (C) 2009 Zan Dobersek <zandobersek@gmail.com>
- * Copyright (C) 2009 Holger Hans Peter Freyther
- * Copyright (C) 2010 Igalia S.L.
- * Copyright (c) 2010 Motorola Mobility, 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 "EventSenderProxy.h"
-
-#include "PlatformWebView.h"
-#include "TestController.h"
-#include <wtf/OwnArrayPtr.h>
-#include <wtf/PassOwnArrayPtr.h>
-#include <gdk/gdkkeysyms.h>
-#include <gtk/gtk.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/text/WTFString.h>
-
-namespace WTR {
-
-// WebCore and layout tests assume this value
-static const float pixelsPerScrollTick = 40;
-
-// Key event location code defined in DOM Level 3.
-enum KeyLocationCode {
- DOMKeyLocationStandard = 0x00,
- DOMKeyLocationLeft = 0x01,
- DOMKeyLocationRight = 0x02,
- DOMKeyLocationNumpad = 0x03
-};
-
-
-struct WTREventQueueItem {
- GdkEvent* event;
- gulong delay;
-
- WTREventQueueItem()
- : event(0)
- , delay(0)
- {
- }
- WTREventQueueItem(GdkEvent* event, gulong delay)
- : event(event)
- , delay(delay)
- {
- }
-};
-
-EventSenderProxy::EventSenderProxy(TestController* testController)
- : m_testController(testController)
- , m_time(0)
- , m_leftMouseButtonDown(false)
- , m_clickCount(0)
- , m_clickTime(0)
- , m_clickButton(kWKEventMouseButtonNoButton)
- , m_mouseButtonCurrentlyDown(0)
-{
-}
-
-EventSenderProxy::~EventSenderProxy()
-{
-}
-
-static guint getMouseButtonModifiers(int gdkButton)
-{
- if (gdkButton == 1)
- return GDK_BUTTON1_MASK;
- if (gdkButton == 2)
- return GDK_BUTTON2_MASK;
- if (gdkButton == 3)
- return GDK_BUTTON3_MASK;
- return 0;
-}
-
-static unsigned eventSenderButtonToGDKButton(unsigned button)
-{
- int mouseButton = 3;
- if (button <= 2)
- mouseButton = button + 1;
- // fast/events/mouse-click-events expects the 4th button to be treated as the middle button.
- else if (button == 3)
- mouseButton = 2;
-
- return mouseButton;
-}
-
-GdkEvent* EventSenderProxy::createMouseButtonEvent(GdkEventType eventType, unsigned button, WKEventModifiers modifiers)
-{
- GdkEvent* mouseEvent = gdk_event_new(eventType);
-
- mouseEvent->button.button = eventSenderButtonToGDKButton(button);
- mouseEvent->button.x = m_position.x;
- mouseEvent->button.y = m_position.y;
- mouseEvent->button.window = gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformView()));
- g_object_ref(mouseEvent->button.window);
- gdk_event_set_device(mouseEvent, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_window_get_display(mouseEvent->button.window))));
- mouseEvent->button.state = modifiers | getMouseButtonModifiers(mouseEvent->button.button);
- mouseEvent->button.time = GDK_CURRENT_TIME;
- mouseEvent->button.axes = 0;
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(mouseEvent->button.window, m_position.x, m_position.y, &xRoot, &yRoot);
- mouseEvent->button.x_root = xRoot;
- mouseEvent->button.y_root = yRoot;
-
- return mouseEvent;
-}
-
-void EventSenderProxy::updateClickCountForButton(int button)
-{
- if (m_time - m_clickTime < 1 && m_position == m_clickPosition && button == m_clickButton) {
- ++m_clickCount;
- m_clickTime = m_time;
- return;
- }
-
- m_clickCount = 1;
- m_clickTime = m_time;
- m_clickPosition = m_position;
- m_clickButton = button;
-}
-
-static void dispatchEvent(GdkEvent* event)
-{
- gtk_main_do_event(event);
- gdk_event_free(event);
-}
-
-void EventSenderProxy::replaySavedEvents()
-{
- while (!m_eventQueue.isEmpty()) {
- WTREventQueueItem item = m_eventQueue.takeFirst();
- if (item.delay)
- g_usleep(item.delay * 1000);
-
- dispatchEvent(item.event);
- }
-}
-
-void EventSenderProxy::sendOrQueueEvent(GdkEvent* event)
-{
- if (m_eventQueue.isEmpty() || !m_eventQueue.last().delay) {
- dispatchEvent(event);
- return;
- }
-
- m_eventQueue.last().event = event;
- replaySavedEvents();
-}
-
-static guint webkitModifiersToGDKModifiers(WKEventModifiers wkModifiers)
-{
- guint modifiers = 0;
-
- if (wkModifiers & kWKEventModifiersControlKey)
- modifiers |= GDK_CONTROL_MASK;
- if (wkModifiers & kWKEventModifiersShiftKey)
- modifiers |= GDK_SHIFT_MASK;
- if (wkModifiers & kWKEventModifiersAltKey)
- modifiers |= GDK_MOD1_MASK;
- if (wkModifiers & kWKEventModifiersMetaKey)
- modifiers |= GDK_META_MASK;
-
- return modifiers;
-}
-
-int getGDKKeySymForKeyRef(WKStringRef keyRef, unsigned location, guint* modifiers)
-{
- if (location == DOMKeyLocationNumpad) {
- if (WKStringIsEqualToUTF8CString(keyRef, "leftArrow"))
- return GDK_KEY_KP_Left;
- if (WKStringIsEqualToUTF8CString(keyRef, "rightArror"))
- return GDK_KEY_KP_Right;
- if (WKStringIsEqualToUTF8CString(keyRef, "upArrow"))
- return GDK_KEY_KP_Up;
- if (WKStringIsEqualToUTF8CString(keyRef, "downArrow"))
- return GDK_KEY_KP_Down;
- if (WKStringIsEqualToUTF8CString(keyRef, "pageUp"))
- return GDK_KEY_KP_Page_Up;
- if (WKStringIsEqualToUTF8CString(keyRef, "pageDown"))
- return GDK_KEY_KP_Page_Down;
- if (WKStringIsEqualToUTF8CString(keyRef, "home"))
- return GDK_KEY_KP_Home;
- if (WKStringIsEqualToUTF8CString(keyRef, "end"))
- return GDK_KEY_KP_End;
- if (WKStringIsEqualToUTF8CString(keyRef, "insert"))
- return GDK_KEY_KP_Insert;
- if (WKStringIsEqualToUTF8CString(keyRef, "delete"))
- return GDK_KEY_KP_Delete;
-
- return GDK_KEY_VoidSymbol;
- }
-
- if (WKStringIsEqualToUTF8CString(keyRef, "leftArrow"))
- return GDK_KEY_Left;
- if (WKStringIsEqualToUTF8CString(keyRef, "rightArrow"))
- return GDK_KEY_Right;
- if (WKStringIsEqualToUTF8CString(keyRef, "upArrow"))
- return GDK_KEY_Up;
- if (WKStringIsEqualToUTF8CString(keyRef, "downArrow"))
- return GDK_KEY_Down;
- if (WKStringIsEqualToUTF8CString(keyRef, "pageUp"))
- return GDK_KEY_Page_Up;
- if (WKStringIsEqualToUTF8CString(keyRef, "pageDown"))
- return GDK_KEY_Page_Down;
- if (WKStringIsEqualToUTF8CString(keyRef, "home"))
- return GDK_KEY_Home;
- if (WKStringIsEqualToUTF8CString(keyRef, "end"))
- return GDK_KEY_End;
- if (WKStringIsEqualToUTF8CString(keyRef, "insert"))
- return GDK_KEY_Insert;
- if (WKStringIsEqualToUTF8CString(keyRef, "delete"))
- return GDK_KEY_Delete;
- if (WKStringIsEqualToUTF8CString(keyRef, "printScreen"))
- return GDK_KEY_Print;
- if (WKStringIsEqualToUTF8CString(keyRef, "menu"))
- return GDK_KEY_Menu;
- if (WKStringIsEqualToUTF8CString(keyRef, "F1"))
- return GDK_KEY_F1;
- if (WKStringIsEqualToUTF8CString(keyRef, "F2"))
- return GDK_KEY_F2;
- if (WKStringIsEqualToUTF8CString(keyRef, "F3"))
- return GDK_KEY_F3;
- if (WKStringIsEqualToUTF8CString(keyRef, "F4"))
- return GDK_KEY_F4;
- if (WKStringIsEqualToUTF8CString(keyRef, "F5"))
- return GDK_KEY_F5;
- if (WKStringIsEqualToUTF8CString(keyRef, "F6"))
- return GDK_KEY_F6;
- if (WKStringIsEqualToUTF8CString(keyRef, "F7"))
- return GDK_KEY_F7;
- if (WKStringIsEqualToUTF8CString(keyRef, "F8"))
- return GDK_KEY_F8;
- if (WKStringIsEqualToUTF8CString(keyRef, "F9"))
- return GDK_KEY_F9;
- if (WKStringIsEqualToUTF8CString(keyRef, "F10"))
- return GDK_KEY_F10;
- if (WKStringIsEqualToUTF8CString(keyRef, "F11"))
- return GDK_KEY_F11;
- if (WKStringIsEqualToUTF8CString(keyRef, "F12"))
- return GDK_KEY_F12;
-
- size_t bufferSize = WKStringGetMaximumUTF8CStringSize(keyRef);
- OwnArrayPtr<char> buffer = adoptArrayPtr(new char[bufferSize]);
- WKStringGetUTF8CString(keyRef, buffer.get(), bufferSize);
- char charCode = buffer.get()[0];
-
- if (charCode == '\n' || charCode == '\r')
- return GDK_KEY_Return;
- if (charCode == '\t')
- return GDK_KEY_Tab;
- if (charCode == '\x8')
- return GDK_KEY_BackSpace;
-
- if (WTF::isASCIIUpper(charCode))
- *modifiers |= GDK_SHIFT_MASK;
-
- return gdk_unicode_to_keyval(static_cast<guint32>(buffer.get()[0]));
-}
-
-void EventSenderProxy::keyDown(WKStringRef keyRef, WKEventModifiers wkModifiers, unsigned location)
-{
- guint modifiers = webkitModifiersToGDKModifiers(wkModifiers);
- int gdkKeySym = getGDKKeySymForKeyRef(keyRef, location, &modifiers);
-
- GdkEvent* pressEvent = gdk_event_new(GDK_KEY_PRESS);
- pressEvent->key.keyval = gdkKeySym;
- pressEvent->key.state = modifiers;
- pressEvent->key.window = gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformWindow()));
- g_object_ref(pressEvent->key.window);
- gdk_event_set_device(pressEvent, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_window_get_display(pressEvent->key.window))));
-
- GOwnPtr<GdkKeymapKey> keys;
- gint nKeys;
- if (gdk_keymap_get_entries_for_keyval(gdk_keymap_get_default(), gdkKeySym, &keys.outPtr(), &nKeys))
- pressEvent->key.hardware_keycode = keys.get()[0].keycode;
-
- GdkEvent* releaseEvent = gdk_event_copy(pressEvent);
- dispatchEvent(pressEvent);
- releaseEvent->key.type = GDK_KEY_RELEASE;
- dispatchEvent(releaseEvent);
-}
-
-void EventSenderProxy::mouseDown(unsigned button, WKEventModifiers wkModifiers)
-{
- // If the same mouse button is already in the down position don't
- // send another event as it may confuse Xvfb.
- unsigned gdkButton = eventSenderButtonToGDKButton(button);
- if (m_mouseButtonCurrentlyDown == gdkButton)
- return;
-
- m_mouseButtonCurrentlyDown = gdkButton;
-
- // Normally GDK will send both GDK_BUTTON_PRESS and GDK_2BUTTON_PRESS for
- // the second button press during double-clicks. WebKit GTK+ selectively
- // ignores the first GDK_BUTTON_PRESS of that pair using gdk_event_peek.
- // Since our events aren't ever going onto the GDK event queue, WebKit won't
- // be able to filter out the first GDK_BUTTON_PRESS, so we just don't send
- // it here. Eventually this code should probably figure out a way to get all
- // appropriate events onto the event queue and this work-around should be
- // removed.
- updateClickCountForButton(button);
-
- GdkEventType eventType;
- if (m_clickCount == 2)
- eventType = GDK_2BUTTON_PRESS;
- else if (m_clickCount == 3)
- eventType = GDK_3BUTTON_PRESS;
- else
- eventType = GDK_BUTTON_PRESS;
-
- GdkEvent* event = createMouseButtonEvent(eventType, button, wkModifiers);
- sendOrQueueEvent(event);
-}
-
-void EventSenderProxy::mouseUp(unsigned button, WKEventModifiers wkModifiers)
-{
- m_clickButton = kWKEventMouseButtonNoButton;
- GdkEvent* event = createMouseButtonEvent(GDK_BUTTON_RELEASE, button, wkModifiers);
- sendOrQueueEvent(event);
-
- if (m_mouseButtonCurrentlyDown == event->button.button)
- m_mouseButtonCurrentlyDown = 0;
- m_clickPosition = m_position;
- m_clickTime = GDK_CURRENT_TIME;
-}
-
-void EventSenderProxy::mouseMoveTo(double x, double y)
-{
- m_position.x = x;
- m_position.y = y;
-
- GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY);
- event->motion.x = m_position.x;
- event->motion.y = m_position.y;
-
- event->motion.time = GDK_CURRENT_TIME;
- event->motion.window = gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformView()));
- g_object_ref(event->motion.window);
- gdk_event_set_device(event, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_window_get_display(event->motion.window))));
- event->motion.state = 0 | getMouseButtonModifiers(m_mouseButtonCurrentlyDown);
- event->motion.axes = 0;
-
- int xRoot, yRoot;
- gdk_window_get_root_coords(gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformView())), m_position.x, m_position.y , &xRoot, &yRoot);
- event->motion.x_root = xRoot;
- event->motion.y_root = yRoot;
-
- sendOrQueueEvent(event);
-}
-
-void EventSenderProxy::mouseScrollBy(int horizontal, int vertical)
-{
- // Copy behaviour of Qt and EFL - just return in case of (0,0) mouse scroll
- if (!horizontal && !vertical)
- return;
-
- GdkEvent* event = gdk_event_new(GDK_SCROLL);
- event->scroll.x = m_position.x;
- event->scroll.y = m_position.y;
- event->scroll.time = GDK_CURRENT_TIME;
- event->scroll.window = gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformView()));
- g_object_ref(event->scroll.window);
- gdk_event_set_device(event, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_window_get_display(event->scroll.window))));
-
- // For more than one tick in a scroll, we need smooth scroll event
- if ((horizontal && vertical) || horizontal > 1 || horizontal < -1 || vertical > 1 || vertical < -1) {
- event->scroll.direction = GDK_SCROLL_SMOOTH;
- event->scroll.delta_x = -horizontal;
- event->scroll.delta_y = -vertical;
-
- sendOrQueueEvent(event);
- return;
- }
-
- if (horizontal < 0)
- event->scroll.direction = GDK_SCROLL_RIGHT;
- else if (horizontal > 0)
- event->scroll.direction = GDK_SCROLL_LEFT;
- else if (vertical < 0)
- event->scroll.direction = GDK_SCROLL_DOWN;
- else if (vertical > 0)
- event->scroll.direction = GDK_SCROLL_UP;
- else
- g_assert_not_reached();
-
- sendOrQueueEvent(event);
-}
-
-void EventSenderProxy::continuousMouseScrollBy(int horizontal, int vertical, bool paged)
-{
- // Gtk+ does not support paged scroll events.
- g_return_if_fail(!paged);
-
- GdkEvent* event = gdk_event_new(GDK_SCROLL);
- event->scroll.x = m_position.x;
- event->scroll.y = m_position.y;
- event->scroll.time = GDK_CURRENT_TIME;
- event->scroll.window = gtk_widget_get_window(GTK_WIDGET(m_testController->mainWebView()->platformView()));
- g_object_ref(event->scroll.window);
- gdk_event_set_device(event, gdk_device_manager_get_client_pointer(gdk_display_get_device_manager(gdk_window_get_display(event->scroll.window))));
-
- event->scroll.direction = GDK_SCROLL_SMOOTH;
- event->scroll.delta_x = -horizontal / pixelsPerScrollTick;
- event->scroll.delta_y = -vertical / pixelsPerScrollTick;
-
- sendOrQueueEvent(event);
-}
-
-void EventSenderProxy::leapForward(int milliseconds)
-{
- if (m_eventQueue.isEmpty())
- m_eventQueue.append(WTREventQueueItem());
-
- m_eventQueue.last().delay = milliseconds;
- m_time += milliseconds / 1000.0;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp b/Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp
deleted file mode 100644
index fd6f8466b..000000000
--- a/Tools/WebKitTestRunner/gtk/PlatformWebViewGtk.cpp
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2010 University of Szeged. All rights reserved.
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 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.
- */
-
-#include "config.h"
-#include "PlatformWebView.h"
-
-#include <WebKit2/WKViewPrivate.h>
-#include <gtk/gtk.h>
-
-namespace WTR {
-
-PlatformWebView::PlatformWebView(WKContextRef context, WKPageGroupRef pageGroup, WKPageRef /* relatedPage */, WKDictionaryRef options)
- : m_view(WKViewCreate(context, pageGroup))
- , m_window(gtk_window_new(GTK_WINDOW_POPUP))
- , m_windowIsKey(true)
- , m_options(options)
-{
- gtk_container_add(GTK_CONTAINER(m_window), GTK_WIDGET(m_view));
-
- GtkAllocation size = { 0, 0, 800, 600 };
- gtk_widget_size_allocate(m_window, &size);
- gtk_window_resize(GTK_WINDOW(m_window), 800, 600);
- gtk_widget_show_all(m_window);
-
- while (gtk_events_pending())
- gtk_main_iteration();
-}
-
-PlatformWebView::~PlatformWebView()
-{
- gtk_widget_destroy(m_window);
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- GtkAllocation size = { 0, 0, static_cast<int>(width), static_cast<int>(height) };
- gtk_widget_size_allocate(m_window, &size);
- gtk_window_resize(GTK_WINDOW(m_window), width, height);
-
- while (gtk_events_pending())
- gtk_main_iteration();
-}
-
-WKPageRef PlatformWebView::page()
-{
- return WKViewGetPage(m_view);
-}
-
-void PlatformWebView::focus()
-{
- WKViewSetFocus(m_view, true);
- setWindowIsKey(true);
-}
-
-WKRect PlatformWebView::windowFrame()
-{
- GtkAllocation geometry;
-#ifdef GTK_API_VERSION_2
- gint depth;
- gdk_window_get_geometry(gtk_widget_get_window(GTK_WIDGET(m_window)),
- &geometry.x, &geometry.y, &geometry.width, &geometry.height, &depth);
-#else
- gdk_window_get_geometry(gtk_widget_get_window(GTK_WIDGET(m_window)),
- &geometry.x, &geometry.y, &geometry.width, &geometry.height);
-#endif
-
- WKRect frame;
- frame.origin.x = geometry.x;
- frame.origin.y = geometry.y;
- frame.size.width = geometry.width;
- frame.size.height = geometry.height;
- return frame;
-}
-
-void PlatformWebView::setWindowFrame(WKRect frame)
-{
- gtk_window_move(GTK_WINDOW(m_window), frame.origin.x, frame.origin.y);
- resizeTo(frame.size.width, frame.size.height);
-}
-
-void PlatformWebView::addChromeInputField()
-{
-}
-
-void PlatformWebView::removeChromeInputField()
-{
-}
-
-void PlatformWebView::makeWebViewFirstResponder()
-{
-}
-
-WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage()
-{
- // FIXME: implement to capture pixels in the UI process,
- // which may be necessary to capture things like 3D transforms.
- return 0;
-}
-
-void PlatformWebView::didInitializeClients()
-{
-}
-
-} // namespace WTR
-
diff --git a/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp b/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp
deleted file mode 100644
index 4aeb65fc7..000000000
--- a/Tools/WebKitTestRunner/gtk/TestControllerGtk.cpp
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2010 Igalia S.L.
- *
- * 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 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.
- */
-
-#include "config.h"
-#include "TestController.h"
-
-#include <gtk/gtk.h>
-#include <wtf/Platform.h>
-#include <wtf/gobject/GOwnPtr.h>
-#include <wtf/text/WTFString.h>
-
-namespace WTR {
-
-static guint gTimeoutSourceId = 0;
-
-static void cancelTimeout()
-{
- if (!gTimeoutSourceId)
- return;
- g_source_remove(gTimeoutSourceId);
- gTimeoutSourceId = 0;
-}
-
-void TestController::notifyDone()
-{
- gtk_main_quit();
- cancelTimeout();
-}
-
-void TestController::platformInitialize()
-{
-}
-
-void TestController::platformDestroy()
-{
-}
-
-static gboolean timeoutCallback(gpointer)
-{
- fprintf(stderr, "FAIL: TestControllerRunLoop timed out.\n");
- gtk_main_quit();
- return FALSE;
-}
-
-void TestController::platformRunUntil(bool&, double timeout)
-{
- cancelTimeout();
- if (timeout != m_noTimeout)
- gTimeoutSourceId = g_timeout_add(timeout * 1000, timeoutCallback, 0);
- gtk_main();
-}
-
-static char* getEnvironmentVariableAsUTF8String(const char* variableName)
-{
- const char* value = g_getenv(variableName);
- if (!value) {
- fprintf(stderr, "%s environment variable not found\n", variableName);
- exit(0);
- }
- gsize bytesWritten;
- return g_filename_to_utf8(value, -1, 0, &bytesWritten, 0);
-}
-
-void TestController::initializeInjectedBundlePath()
-{
- GOwnPtr<char> utf8BundlePath(getEnvironmentVariableAsUTF8String("TEST_RUNNER_INJECTED_BUNDLE_FILENAME"));
- m_injectedBundlePath.adopt(WKStringCreateWithUTF8CString(utf8BundlePath.get()));
-}
-
-void TestController::initializeTestPluginDirectory()
-{
- GOwnPtr<char> testPluginPath(getEnvironmentVariableAsUTF8String("TEST_RUNNER_TEST_PLUGIN_PATH"));
- m_testPluginDirectory.adopt(WKStringCreateWithUTF8CString(testPluginPath.get()));
-}
-
-void TestController::platformInitializeContext()
-{
-}
-
-void TestController::runModal(PlatformWebView*)
-{
- // FIXME: Need to implement this to test showModalDialog.
-}
-
-const char* TestController::platformLibraryPathForTesting()
-{
- return 0;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/gtk/main.cpp b/Tools/WebKitTestRunner/gtk/main.cpp
deleted file mode 100644
index d53c6248a..000000000
--- a/Tools/WebKitTestRunner/gtk/main.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 Igalia S.L.
- *
- * 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. 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 INC. 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 "TestController.h"
-#include <gtk/gtk.h>
-
-int main(int argc, char** argv)
-{
- gtk_init(&argc, &argv);
- // Prefer the not installed web and plugin processes.
- WTR::TestController controller(argc, const_cast<const char**>(argv));
- return 0;
-}
diff --git a/Tools/WebKitTestRunner/mac/EventSenderProxy.mm b/Tools/WebKitTestRunner/mac/EventSenderProxy.mm
deleted file mode 100644
index f3d848ead..000000000
--- a/Tools/WebKitTestRunner/mac/EventSenderProxy.mm
+++ /dev/null
@@ -1,443 +0,0 @@
-/*
- * Copyright (C) 2011 Apple Inc. All rights reserved.
- * Copyright (C) 2011 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.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. 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 INC. 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 "config.h"
-#import "EventSenderProxy.h"
-
-#import "PlatformWebView.h"
-#import "StringFunctions.h"
-#import "TestController.h"
-#import <wtf/RetainPtr.h>
-#import <Carbon/Carbon.h>
-#import <WebKit2/WKString.h>
-
-namespace WTR {
-
-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
-};
-
-struct KeyMappingEntry {
- int macKeyCode;
- int macNumpadKeyCode;
- unichar character;
- NSString* characterName;
-};
-
-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);
-}
-
-static int buildModifierFlags(WKEventModifiers modifiers)
-{
- int flags = 0;
- if (modifiers & kWKEventModifiersControlKey)
- flags |= NSControlKeyMask;
- if (modifiers & kWKEventModifiersShiftKey)
- flags |= NSShiftKeyMask;
- if (modifiers & kWKEventModifiersAltKey)
- flags |= NSAlternateKeyMask;
- if (modifiers & kWKEventModifiersMetaKey)
- flags |= NSCommandKeyMask;
- return flags;
-}
-
-static NSTimeInterval absoluteTimeForEventTime(double currentEventTime)
-{
- return GetCurrentEventTime() + currentEventTime;
-}
-
-EventSenderProxy::EventSenderProxy(TestController* testController)
- : m_testController(testController)
- , m_time(0)
- , m_position()
- , m_leftMouseButtonDown(false)
- , m_clickCount(0)
- , m_clickTime(0)
- , m_clickPosition()
- , m_clickButton(kWKEventMouseButtonNoButton)
- , eventNumber(0)
-{
-}
-
-EventSenderProxy::~EventSenderProxy()
-{
-}
-
-void EventSenderProxy::updateClickCountForButton(int button)
-{
- if (m_time - m_clickTime < 1 && m_position == m_clickPosition && button == m_clickButton) {
- ++m_clickCount;
- m_clickTime = m_time;
- return;
- }
-
- m_clickCount = 1;
- m_clickTime = m_time;
- m_clickPosition = m_position;
- m_clickButton = button;
-}
-
-void EventSenderProxy::mouseDown(unsigned buttonNumber, WKEventModifiers modifiers)
-{
- updateClickCountForButton(buttonNumber);
-
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseDown);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:NSMakePoint(m_position.x, m_position.y)
- modifierFlags:buildModifierFlags(modifiers)
- timestamp:absoluteTimeForEventTime(currentEventTime())
- windowNumber:[m_testController->mainWebView()->platformWindow() windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:m_clickCount
- pressure:0.0];
-
- NSView *targetView = [m_testController->mainWebView()->platformView() hitTest:[event locationInWindow]];
- if (targetView) {
- [targetView mouseDown:event];
- if (buttonNumber == LeftMouseButton)
- m_leftMouseButtonDown = true;
- }
-}
-
-void EventSenderProxy::mouseUp(unsigned buttonNumber, WKEventModifiers modifiers)
-{
- NSEventType eventType = eventTypeForMouseButtonAndAction(buttonNumber, MouseUp);
- NSEvent *event = [NSEvent mouseEventWithType:eventType
- location:NSMakePoint(m_position.x, m_position.y)
- modifierFlags:buildModifierFlags(modifiers)
- timestamp:absoluteTimeForEventTime(currentEventTime())
- windowNumber:[m_testController->mainWebView()->platformWindow() windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:m_clickCount
- pressure:0.0];
-
- NSView *targetView = [m_testController->mainWebView()->platformView() hitTest:[event locationInWindow]];
- targetView = targetView ? targetView : m_testController->mainWebView()->platformView();
- assert(targetView);
- [targetView mouseUp:event];
- if (buttonNumber == LeftMouseButton)
- m_leftMouseButtonDown = false;
- m_clickTime = currentEventTime();
- m_clickPosition = m_position;
-}
-
-void EventSenderProxy::mouseMoveTo(double x, double y)
-{
- NSView *view = m_testController->mainWebView()->platformView();
- NSPoint position = [view convertPoint:NSMakePoint(x, y) toView:nil];
- m_position.x = position.x;
- m_position.y = position.y;
- NSEvent *event = [NSEvent mouseEventWithType:(m_leftMouseButtonDown ? NSLeftMouseDragged : NSMouseMoved)
- location:position
- modifierFlags:0
- timestamp:absoluteTimeForEventTime(currentEventTime())
- windowNumber:[[view window] windowNumber]
- context:[NSGraphicsContext currentContext]
- eventNumber:++eventNumber
- clickCount:(m_leftMouseButtonDown ? m_clickCount : 0)
- pressure:0.0];
-
- NSView *targetView = [m_testController->mainWebView()->platformView() hitTest:[event locationInWindow]];
- if (targetView)
- [targetView mouseMoved:event];
-}
-
-void EventSenderProxy::leapForward(int milliseconds)
-{
- m_time += milliseconds / 1000.0;
-}
-
-void EventSenderProxy::keyDown(WKStringRef key, WKEventModifiers modifiers, unsigned keyLocation)
-{
- NSString* character = [NSString stringWithCString:toSTD(key).c_str()
- encoding:[NSString defaultCStringEncoding]];
-
- NSString *eventCharacter = character;
- unsigned short keyCode = 0;
- if ([character isEqualToString:@"leftArrow"]) {
- const unichar ch = NSLeftArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7B;
- } else if ([character isEqualToString:@"rightArrow"]) {
- const unichar ch = NSRightArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7C;
- } else if ([character isEqualToString:@"upArrow"]) {
- const unichar ch = NSUpArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7E;
- } else if ([character isEqualToString:@"downArrow"]) {
- const unichar ch = NSDownArrowFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x7D;
- } else if ([character isEqualToString:@"pageUp"]) {
- const unichar ch = NSPageUpFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x74;
- } else if ([character isEqualToString:@"pageDown"]) {
- const unichar ch = NSPageDownFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x79;
- } else if ([character isEqualToString:@"home"]) {
- const unichar ch = NSHomeFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x73;
- } else if ([character isEqualToString:@"end"]) {
- const unichar ch = NSEndFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x77;
- } else if ([character isEqualToString:@"insert"]) {
- const unichar ch = NSInsertFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x72;
- } else if ([character isEqualToString:@"delete"]) {
- const unichar ch = NSDeleteFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x75;
- } else if ([character isEqualToString:@"printScreen"]) {
- const unichar ch = NSPrintScreenFunctionKey;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x0; // There is no known virtual key code for PrintScreen.
- } else if ([character isEqualToString:@"cyrillicSmallLetterA"]) {
- const unichar ch = 0x0430;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3; // Shares key with "F" on Russian layout.
- } else if ([character isEqualToString:@"leftControl"]) {
- const unichar ch = 0xFFE3;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3B;
- } else if ([character isEqualToString:@"leftShift"]) {
- const unichar ch = 0xFFE1;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x38;
- } else if ([character isEqualToString:@"leftAlt"]) {
- const unichar ch = 0xFFE7;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3A;
- } else if ([character isEqualToString:@"rightControl"]) {
- const unichar ch = 0xFFE4;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3E;
- } else if ([character isEqualToString:@"rightShift"]) {
- const unichar ch = 0xFFE2;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3C;
- } else if ([character isEqualToString:@"rightAlt"]) {
- const unichar ch = 0xFFE8;
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- keyCode = 0x3D;
- }
-
- // Compare the input string with the function-key names defined by the DOM spec (i.e. "F1",...,"F24").
- // If the input string is a function-key name, set its key code.
- for (unsigned i = 1; i <= 24; i++) {
- if ([character isEqualToString:[NSString stringWithFormat:@"F%u", i]]) {
- const unichar ch = NSF1FunctionKey + (i - 1);
- eventCharacter = [NSString stringWithCharacters:&ch length:1];
- switch (i) {
- case 1: keyCode = 0x7A; break;
- case 2: keyCode = 0x78; break;
- case 3: keyCode = 0x63; break;
- case 4: keyCode = 0x76; break;
- case 5: keyCode = 0x60; break;
- case 6: keyCode = 0x61; break;
- case 7: keyCode = 0x62; break;
- case 8: keyCode = 0x64; break;
- case 9: keyCode = 0x65; break;
- case 10: keyCode = 0x6D; break;
- case 11: keyCode = 0x67; break;
- case 12: keyCode = 0x6F; break;
- case 13: keyCode = 0x69; break;
- case 14: keyCode = 0x6B; break;
- case 15: keyCode = 0x71; break;
- case 16: keyCode = 0x6A; break;
- case 17: keyCode = 0x40; break;
- case 18: keyCode = 0x4F; break;
- case 19: keyCode = 0x50; break;
- case 20: keyCode = 0x5A; break;
- }
- }
- }
-
- // FIXME: No keyCode is set for most keys.
- if ([character isEqualToString:@"\t"])
- keyCode = 0x30;
- else if ([character isEqualToString:@" "])
- keyCode = 0x31;
- else if ([character isEqualToString:@"\r"])
- keyCode = 0x24;
- else if ([character isEqualToString:@"\n"])
- keyCode = 0x4C;
- else if ([character isEqualToString:@"\x8"])
- keyCode = 0x33;
- else if ([character isEqualToString:@"a"])
- keyCode = 0x00;
- else if ([character isEqualToString:@"b"])
- keyCode = 0x0B;
- else if ([character isEqualToString:@"d"])
- keyCode = 0x02;
- else if ([character isEqualToString:@"e"])
- keyCode = 0x0E;
-
- KeyMappingEntry table[] = {
- {0x2F, 0x41, '.', nil},
- {0, 0x43, '*', nil},
- {0, 0x45, '+', nil},
- {0, 0x47, NSClearLineFunctionKey, @"clear"},
- {0x2C, 0x4B, '/', nil},
- {0, 0x4C, 3, @"enter" },
- {0x1B, 0x4E, '-', nil},
- {0x18, 0x51, '=', nil},
- {0x1D, 0x52, '0', nil},
- {0x12, 0x53, '1', nil},
- {0x13, 0x54, '2', nil},
- {0x14, 0x55, '3', nil},
- {0x15, 0x56, '4', nil},
- {0x17, 0x57, '5', nil},
- {0x16, 0x58, '6', nil},
- {0x1A, 0x59, '7', nil},
- {0x1C, 0x5B, '8', nil},
- {0x19, 0x5C, '9', nil},
- };
- for (unsigned i = 0; i < WTF_ARRAY_LENGTH(table); ++i) {
- NSString* currentCharacterString = [NSString stringWithCharacters:&table[i].character length:1];
- if ([character isEqualToString:currentCharacterString] || [character isEqualToString:table[i].characterName]) {
- if (keyLocation == 0x03 /*DOM_KEY_LOCATION_NUMPAD*/)
- keyCode = table[i].macNumpadKeyCode;
- else
- keyCode = table[i].macKeyCode;
- eventCharacter = currentCharacterString;
- break;
- }
- }
-
- NSString *charactersIgnoringModifiers = eventCharacter;
-
- int modifierFlags = 0;
-
- if ([character length] == 1 && [character characterAtIndex:0] >= 'A' && [character characterAtIndex:0] <= 'Z') {
- modifierFlags |= NSShiftKeyMask;
- charactersIgnoringModifiers = [character lowercaseString];
- }
-
- modifierFlags |= buildModifierFlags(modifiers);
-
- if (keyLocation == 0x03 /*DOM_KEY_LOCATION_NUMPAD*/)
- modifierFlags |= NSNumericPadKeyMask;
-
- // FIXME: [[[mainFrame frameView] documentView] layout];
-
- NSEvent *event = [NSEvent keyEventWithType:NSKeyDown
- location:NSMakePoint(5, 5)
- modifierFlags:modifierFlags
- timestamp:absoluteTimeForEventTime(currentEventTime())
- windowNumber:[m_testController->mainWebView()->platformWindow() windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:eventCharacter
- charactersIgnoringModifiers:charactersIgnoringModifiers
- isARepeat:NO
- keyCode:keyCode];
-
- [[m_testController->mainWebView()->platformWindow() firstResponder] keyDown:event];
-
- event = [NSEvent keyEventWithType:NSKeyUp
- location:NSMakePoint(5, 5)
- modifierFlags:modifierFlags
- timestamp:absoluteTimeForEventTime(currentEventTime())
- windowNumber:[m_testController->mainWebView()->platformWindow() windowNumber]
- context:[NSGraphicsContext currentContext]
- characters:eventCharacter
- charactersIgnoringModifiers:charactersIgnoringModifiers
- isARepeat:NO
- keyCode:keyCode];
-
- [[m_testController->mainWebView()->platformWindow() firstResponder] keyUp:event];
-}
-
-void EventSenderProxy::mouseScrollBy(int x, int y)
-{
- RetainPtr<CGEventRef> cgScrollEvent = adoptCF(CGEventCreateScrollWheelEvent(0, kCGScrollEventUnitLine, 2, y, x));
-
- // CGEvent locations are in global display coordinates.
- CGPoint lastGlobalMousePosition = CGPointMake(m_position.x, [[NSScreen mainScreen] frame].size.height - m_position.y);
- CGEventSetLocation(cgScrollEvent.get(), lastGlobalMousePosition);
-
- NSEvent *event = [NSEvent eventWithCGEvent:cgScrollEvent.get()];
- if (NSView *targetView = [m_testController->mainWebView()->platformView() hitTest:[event locationInWindow]])
- [targetView scrollWheel:event];
-}
-
-void EventSenderProxy::continuousMouseScrollBy(int x, int y, bool paged)
-{
- // FIXME: Implement this.
- return;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm b/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm
deleted file mode 100644
index 60b887201..000000000
--- a/Tools/WebKitTestRunner/mac/PlatformWebViewMac.mm
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformWebView.h"
-#include "TestController.h"
-
-#import <WebKit2/WKImageCG.h>
-#import <WebKit2/WKViewPrivate.h>
-#import <wtf/RetainPtr.h>
-
-@interface WebKitTestRunnerWindow : NSWindow {
- WTR::PlatformWebView* _platformWebView;
- NSPoint _fakeOrigin;
-}
-@property (nonatomic, assign) WTR::PlatformWebView* platformWebView;
-@end
-
-@interface TestRunnerWKView : WKView {
- BOOL _useTiledDrawing;
-}
-
-- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)context pageGroupRef:(WKPageGroupRef)pageGroup relatedToPage:(WKPageRef)relatedPage useTiledDrawing:(BOOL)useTiledDrawing;
-
-@property (nonatomic, assign) BOOL useTiledDrawing;
-@end
-
-@implementation TestRunnerWKView
-
-@synthesize useTiledDrawing = _useTiledDrawing;
-
-- (id)initWithFrame:(NSRect)frame contextRef:(WKContextRef)context pageGroupRef:(WKPageGroupRef)pageGroup relatedToPage:(WKPageRef)relatedPage useTiledDrawing:(BOOL)useTiledDrawing
-{
- _useTiledDrawing = useTiledDrawing;
- return [super initWithFrame:frame contextRef:context pageGroupRef:pageGroup relatedToPage:relatedPage];
-}
-
-- (BOOL)_shouldUseTiledDrawingArea
-{
- return _useTiledDrawing;
-}
-
-@end
-
-@implementation WebKitTestRunnerWindow
-@synthesize platformWebView = _platformWebView;
-
-- (BOOL)isKeyWindow
-{
- return _platformWebView ? _platformWebView->windowIsKey() : YES;
-}
-
-- (void)setFrameOrigin:(NSPoint)point
-{
- _fakeOrigin = point;
-}
-
-- (void)setFrame:(NSRect)windowFrame display:(BOOL)displayViews animate:(BOOL)performAnimation
-{
- NSRect currentFrame = [super frame];
-
- _fakeOrigin = windowFrame.origin;
-
- [super setFrame:NSMakeRect(currentFrame.origin.x, currentFrame.origin.y, windowFrame.size.width, windowFrame.size.height) display:displayViews animate:performAnimation];
-}
-
-- (void)setFrame:(NSRect)windowFrame display:(BOOL)displayViews
-{
- NSRect currentFrame = [super frame];
-
- _fakeOrigin = windowFrame.origin;
-
- [super setFrame:NSMakeRect(currentFrame.origin.x, currentFrame.origin.y, windowFrame.size.width, windowFrame.size.height) display:displayViews];
-}
-
-- (NSRect)frameRespectingFakeOrigin
-{
- NSRect currentFrame = [self frame];
- return NSMakeRect(_fakeOrigin.x, _fakeOrigin.y, currentFrame.size.width, currentFrame.size.height);
-}
-
-- (CGFloat)backingScaleFactor
-{
- return 1;
-}
-
-@end
-
-@interface NSWindow (Details)
-
-- (void)_setWindowResolution:(CGFloat)resolution displayIfChanged:(BOOL)displayIfChanged;
-
-@end
-
-namespace WTR {
-
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, WKPageRef relatedPage, WKDictionaryRef options)
- : m_windowIsKey(true)
- , m_options(options)
-{
- WKRetainPtr<WKStringRef> useTiledDrawingKey(AdoptWK, WKStringCreateWithUTF8CString("TiledDrawing"));
- WKTypeRef useTiledDrawingValue = options ? WKDictionaryGetItemForKey(options, useTiledDrawingKey.get()) : NULL;
- bool useTiledDrawing = useTiledDrawingValue && WKBooleanGetValue(static_cast<WKBooleanRef>(useTiledDrawingValue));
-
- NSRect rect = NSMakeRect(0, 0, TestController::viewWidth, TestController::viewHeight);
- m_view = [[TestRunnerWKView alloc] initWithFrame:rect contextRef:contextRef pageGroupRef:pageGroupRef relatedToPage:relatedPage useTiledDrawing:useTiledDrawing];
- [m_view setWindowOcclusionDetectionEnabled:NO];
-
- NSRect windowRect = NSOffsetRect(rect, -10000, [(NSScreen *)[[NSScreen screens] objectAtIndex:0] frame].size.height - rect.size.height + 10000);
- m_window = [[WebKitTestRunnerWindow alloc] initWithContentRect:windowRect styleMask:NSBorderlessWindowMask backing:NSBackingStoreBuffered defer:YES];
- m_window.platformWebView = this;
- [m_window setColorSpace:[[NSScreen mainScreen] colorSpace]];
- [m_window setCollectionBehavior:NSWindowCollectionBehaviorStationary];
- [[m_window contentView] addSubview:m_view];
- [m_window orderBack:nil];
- [m_window setReleasedWhenClosed:NO];
- [m_window _setWindowResolution:1 displayIfChanged:YES];
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- NSRect windowFrame = [m_window frame];
- windowFrame.size.width = width;
- windowFrame.size.height = height;
- [m_window setFrame:windowFrame display:YES];
- [m_view setFrame:NSMakeRect(0, 0, width, height)];
-}
-
-PlatformWebView::~PlatformWebView()
-{
- m_window.platformWebView = 0;
- [m_window close];
- [m_window release];
- [m_view release];
-}
-
-WKPageRef PlatformWebView::page()
-{
- return [m_view pageRef];
-}
-
-void PlatformWebView::focus()
-{
- [m_window makeFirstResponder:m_view];
- setWindowIsKey(true);
-}
-
-WKRect PlatformWebView::windowFrame()
-{
- NSRect frame = [m_window frameRespectingFakeOrigin];
-
- WKRect wkFrame;
- wkFrame.origin.x = frame.origin.x;
- wkFrame.origin.y = frame.origin.y;
- wkFrame.size.width = frame.size.width;
- wkFrame.size.height = frame.size.height;
- return wkFrame;
-}
-
-void PlatformWebView::setWindowFrame(WKRect frame)
-{
- [m_window setFrame:NSMakeRect(frame.origin.x, frame.origin.y, frame.size.width, frame.size.height) display:YES];
-}
-
-void PlatformWebView::didInitializeClients()
-{
- // Set a temporary 1x1 window frame to force a WindowAndViewFramesChanged notification. <rdar://problem/13380145>
- WKRect wkFrame = windowFrame();
- [m_window setFrame:NSMakeRect(0, 0, 1, 1) display:YES];
- setWindowFrame(wkFrame);
-}
-
-void PlatformWebView::addChromeInputField()
-{
- NSTextField* textField = [[NSTextField alloc] initWithFrame:NSMakeRect(0, 0, 100, 20)];
- textField.tag = 1;
- [[m_window contentView] addSubview:textField];
- [textField release];
-
- [textField setNextKeyView:m_view];
- [m_view setNextKeyView:textField];
-}
-
-void PlatformWebView::removeChromeInputField()
-{
- NSView* textField = [[m_window contentView] viewWithTag:1];
- if (textField) {
- [textField removeFromSuperview];
- makeWebViewFirstResponder();
- }
-}
-
-void PlatformWebView::makeWebViewFirstResponder()
-{
- [m_window makeFirstResponder:m_view];
-}
-
-WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage()
-{
- [m_view display];
- RetainPtr<CGImageRef> windowSnapshotImage = adoptCF(CGWindowListCreateImage(CGRectNull, kCGWindowListOptionIncludingWindow, [m_window windowNumber], kCGWindowImageBoundsIgnoreFraming | kCGWindowImageShouldBeOpaque));
-
- // windowSnapshotImage will be in GenericRGB, as we've set the main display's color space to GenericRGB.
- return adoptWK(WKImageCreateFromCGImage(windowSnapshotImage.get(), 0));
-}
-
-bool PlatformWebView::viewSupportsOptions(WKDictionaryRef options) const
-{
- WKRetainPtr<WKStringRef> useTiledDrawingKey(AdoptWK, WKStringCreateWithUTF8CString("TiledDrawing"));
- WKTypeRef useTiledDrawingValue = WKDictionaryGetItemForKey(options, useTiledDrawingKey.get());
- bool useTiledDrawing = useTiledDrawingValue && WKBooleanGetValue(static_cast<WKBooleanRef>(useTiledDrawingValue));
-
- return useTiledDrawing == [(TestRunnerWKView *)m_view useTiledDrawing];
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/mac/TestControllerMac.mm b/Tools/WebKitTestRunner/mac/TestControllerMac.mm
deleted file mode 100644
index fbae25617..000000000
--- a/Tools/WebKitTestRunner/mac/TestControllerMac.mm
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "config.h"
-#import "TestController.h"
-
-#import "PlatformWebView.h"
-#import <WebKit2/WKStringCF.h>
-#import <mach-o/dyld.h>
-
-namespace WTR {
-
-void TestController::notifyDone()
-{
-}
-
-void TestController::platformInitialize()
-{
-}
-
-void TestController::platformDestroy()
-{
-}
-
-void TestController::initializeInjectedBundlePath()
-{
- NSString *nsBundlePath = [[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"WebKitTestRunnerInjectedBundle.bundle"];
- m_injectedBundlePath.adopt(WKStringCreateWithCFString((CFStringRef)nsBundlePath));
-}
-
-void TestController::initializeTestPluginDirectory()
-{
- m_testPluginDirectory.adopt(WKStringCreateWithCFString((CFStringRef)[[NSBundle mainBundle] bundlePath]));
-}
-
-void TestController::platformRunUntil(bool& done, double timeout)
-{
- NSDate *endDate = (timeout > 0) ? [NSDate dateWithTimeIntervalSinceNow:timeout] : [NSDate distantFuture];
-
- while (!done && [endDate compare:[NSDate date]] == NSOrderedDescending)
- [[NSRunLoop currentRunLoop] runMode:NSDefaultRunLoopMode beforeDate:endDate];
-}
-
-void TestController::platformInitializeContext()
-{
-}
-
-void TestController::runModal(PlatformWebView* view)
-{
- NSWindow *window = [view->platformView() window];
- if (!window)
- return;
- [NSApp runModalForWindow:window];
-}
-
-const char* TestController::platformLibraryPathForTesting()
-{
- return [[@"~/Library/Application Support/DumpRenderTree" stringByExpandingTildeInPath] UTF8String];
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/mac/WebArchiveDumpSupportMac.mm b/Tools/WebKitTestRunner/mac/WebArchiveDumpSupportMac.mm
deleted file mode 100644
index e06e79750..000000000
--- a/Tools/WebKitTestRunner/mac/WebArchiveDumpSupportMac.mm
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2010 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 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 "config.h"
-#import "WebArchiveDumpSupport.h"
-
-#import <CFNetwork/CFHTTPMessage.h>
-#import <Foundation/Foundation.h>
-#import <WebKit/WebHTMLRepresentation.h>
-#import <wtf/RetainPtr.h>
-
-extern "C" {
-
-enum CFURLCacheStoragePolicy {
- kCFURLCacheStorageAllowed = 0,
- kCFURLCacheStorageAllowedInMemoryOnly = 1,
- kCFURLCacheStorageNotAllowed = 2
-};
-typedef enum CFURLCacheStoragePolicy CFURLCacheStoragePolicy;
-
-extern const CFStringRef kCFHTTPVersion1_1;
-
-CFURLResponseRef CFURLResponseCreate(CFAllocatorRef alloc, CFURLRef URL, CFStringRef mimeType, SInt64 expectedContentLength, CFStringRef textEncodingName, CFURLCacheStoragePolicy recommendedPolicy);
-CFURLResponseRef CFURLResponseCreateWithHTTPResponse(CFAllocatorRef alloc, CFURLRef URL, CFHTTPMessageRef httpResponse, CFURLCacheStoragePolicy recommendedPolicy);
-void CFURLResponseSetExpectedContentLength(CFURLResponseRef response, SInt64 length);
-void CFURLResponseSetMIMEType(CFURLResponseRef response, CFStringRef mimeType);
-
-}
-
-CFURLResponseRef createCFURLResponseFromResponseData(CFDataRef responseData)
-{
- // Decode NSURLResponse
- RetainPtr<NSKeyedUnarchiver> unarchiver = adoptNS([[NSKeyedUnarchiver alloc] initForReadingWithData:(NSData *)responseData]);
- NSURLResponse *response = [unarchiver.get() decodeObjectForKey:@"WebResourceResponse"]; // WebResourceResponseKey in WebResource.m
- [unarchiver.get() finishDecoding];
-
- if (![response isKindOfClass:[NSHTTPURLResponse class]])
- return CFURLResponseCreate(kCFAllocatorDefault, (CFURLRef)[response URL], (CFStringRef)[response MIMEType], [response expectedContentLength], (CFStringRef)[response textEncodingName], kCFURLCacheStorageAllowed);
-
- NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;
-
- // NSURLResponse is not toll-free bridged to CFURLResponse.
- RetainPtr<CFHTTPMessageRef> httpMessage = adoptCF(CFHTTPMessageCreateResponse(kCFAllocatorDefault, [httpResponse statusCode], 0, kCFHTTPVersion1_1));
-
- NSDictionary *headerFields = [httpResponse allHeaderFields];
- for (NSString *headerField in [headerFields keyEnumerator])
- CFHTTPMessageSetHeaderFieldValue(httpMessage.get(), (CFStringRef)headerField, (CFStringRef)[headerFields objectForKey:headerField]);
-
- return CFURLResponseCreateWithHTTPResponse(kCFAllocatorDefault, (CFURLRef)[response URL], httpMessage.get(), kCFURLCacheStorageAllowed);
-}
-
-CFArrayRef supportedNonImageMIMETypes()
-{
- return (CFArrayRef)[WebHTMLRepresentation supportedNonImageMIMETypes];
-}
diff --git a/Tools/WebKitTestRunner/mac/main.mm b/Tools/WebKitTestRunner/mac/main.mm
deleted file mode 100644
index 8637cfb38..000000000
--- a/Tools/WebKitTestRunner/mac/main.mm
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "config.h"
-
-#import "TestController.h"
-
-int main(int argc, const char* argv[])
-{
- NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- [NSApplication sharedApplication];
- [[NSUserDefaults standardUserDefaults] setVolatileDomain:[NSDictionary dictionaryWithObject:[NSNumber numberWithBool:NO] forKey:@"WebKitKerningAndLigaturesEnabledByDefault"] forName:NSArgumentDomain];
-
- [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebAutomaticQuoteSubstitutionEnabled"];
- [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"WebAutomaticDashSubstitutionEnabled"];
-
- {
- WTR::TestController controller(argc, argv);
- }
- [pool drain];
- return 0;
-}
diff --git a/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp b/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
index f1c7b3c92..510b0465e 100644
--- a/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
+++ b/Tools/WebKitTestRunner/qt/PlatformWebViewQt.cpp
@@ -65,7 +65,7 @@ private Q_SLOTS:
m_view->setParentItem(rootObject());
QQmlProperty::write(m_view, "anchors.fill", qVariantFromValue(rootObject()));
- if (PlatformWebView::windowShapshotEnabled()) {
+ if (PlatformWebView::windowSnapshotEnabled()) {
setSurfaceType(OpenGLSurface);
create();
#if QT_VERSION < QT_VERSION_CHECK(5, 1, 0)
@@ -175,7 +175,7 @@ WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage()
return adoptWK(WKImageCreateFromQImage(m_window->grabWindow()));
}
-bool PlatformWebView::windowShapshotEnabled()
+bool PlatformWebView::windowSnapshotEnabled()
{
// We need a way to disable UI side rendering for tests because it is
// too slow without appropriate hardware.
diff --git a/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp b/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
index aac846f8d..ac6aaf1ec 100644
--- a/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
+++ b/Tools/WebKitTestRunner/qt/TestInvocationQt.cpp
@@ -64,29 +64,11 @@ static void dumpImage(const QImage& image)
fflush(stdout);
}
-void TestInvocation::forceRepaintDoneCallback(WKErrorRef, void *context)
-{
- static_cast<TestInvocation*>(context)->m_gotRepaint = true;
- TestController::shared().notifyDone();
-}
-
void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef imageRef, WKArrayRef repaintRects)
{
QImage image;
- if (PlatformWebView::windowShapshotEnabled()) {
- WKPageRef page = TestController::shared().mainWebView()->page();
- WKPageForceRepaint(page, this, &forceRepaintDoneCallback);
-
- TestController::shared().runUntil(m_gotRepaint, TestController::ShortTimeout);
-
- if (m_gotRepaint)
- image = WKImageCreateQImage(TestController::shared().mainWebView()->windowSnapshotImage().get());
- else {
- m_error = true;
- m_errorMessage = "Timed out waiting for repaint\n";
- m_webProcessIsUnresponsive = true;
- return;
- }
+ if (PlatformWebView::windowSnapshotEnabled()) {
+ image = WKImageCreateQImage(TestController::shared().mainWebView()->windowSnapshotImage().get());
} else
image = WKImageCreateQImage(imageRef);
diff --git a/Tools/WebKitTestRunner/win/InjectedBundle.vcproj b/Tools/WebKitTestRunner/win/InjectedBundle.vcproj
deleted file mode 100644
index 6b4896422..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundle.vcproj
+++ /dev/null
@@ -1,992 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundle"
- ProjectGUID="{CBC3391C-F060-4BF5-A66E-81404168816B}"
- RootNamespace="InjectedBundle"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleDebug.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"
- />
- <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"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleRelease.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"
- />
- <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="Debug_All|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleDebugAll.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"
- />
- <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="Debug_Cairo_CFLite|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleDebugCairoCFLite.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"
- />
- <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_Cairo_CFLite|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleReleaseCairoCFLite.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"
- />
- <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="Production|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\InjectedBundleProduction.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="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"
- />
- <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="Bindings"
- >
- <File
- RelativePath="..\InjectedBundle\Bindings\CodeGeneratorTestRunner.pm"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\AccessibilityController.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\AccessibilityTextMarker.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\AccessibilityTextMarkerRange.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\AccessibilityUIElement.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\EventSendingController.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\GCController.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\JSWrappable.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\JSWrapper.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\JSWrapper.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\TestRunner.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- <File
- RelativePath="..\InjectedBundle\Bindings\TextInputController.idl"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCMIDLTool"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="Derived Sources"
- >
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityController.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityController.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityTextMarker.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityTextMarker.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityTextMarkerRange.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityTextMarkerRange.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityUIElement.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSAccessibilityUIElement.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSEventSendingController.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSEventSendingController.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSGCController.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSGCController.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSTestRunner.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSTestRunner.h"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSTextInputController.cpp"
- >
- </File>
- <File
- RelativePath="$(ConfigurationBuildDir)\obj\$(ProjectName)\DerivedSources\JSTextInputController.h"
- >
- </File>
- </Filter>
- <File
- RelativePath="..\InjectedBundle\AccessibilityController.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityController.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityTextMarker.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityTextMarker.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityTextMarkerRange.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityTextMarkerRange.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityUIElement.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\AccessibilityUIElement.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\win\ActivateFonts.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\EventSendingController.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\EventSendingController.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\GCController.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\GCController.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\InjectedBundle.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\InjectedBundle.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\InjectedBundleMain.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\InjectedBundlePage.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\InjectedBundlePage.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\win\InjectedBundleWin.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\TestRunner.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\TestRunner.h"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\win\TestRunnerWin.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\TextInputController.cpp"
- >
- </File>
- <File
- RelativePath="..\InjectedBundle\TextInputController.h"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleDebug.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleDebug.vsprops
deleted file mode 100644
index e6bb3b738..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;..\Configurations\InjectedBundleCoreFoundation.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleDebugAll.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleDebugAll.vsprops
deleted file mode 100644
index dd777f3a5..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;..\Configurations\InjectedBundleCoreFoundation.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops
deleted file mode 100644
index cc08a5bac..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_wincairo.vsprops;..\Configurations\InjectedBundleCFLite.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleGenerated.vcproj b/Tools/WebKitTestRunner/win/InjectedBundleGenerated.vcproj
deleted file mode 100755
index f5b22c855..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleGenerated.vcproj
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleGenerated"
- ProjectGUID="{4343BC0B-A2E0-4B48-8277-F33CFBFA83CD}"
- RootNamespace="InjectedBundleGenerated"
- Keyword="MakeFileProj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- <Configuration
- Name="Release|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- <Configuration
- Name="Debug_All|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- <Configuration
- Name="Production|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- <Configuration
- Name="Release_Cairo_CFLite|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- <Configuration
- Name="Debug_Cairo_CFLite|Win32"
- ConfigurationType="0"
- InheritedPropertySheets=".\InjectedBundleGeneratedCommon.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- />
- </Configuration>
- </Configurations>
- <References>
- </References>
- <Files>
- <File
- RelativePath=".\build-generated-files.sh"
- >
- </File>
- <File
- RelativePath="..\DerivedSources.make"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops
deleted file mode 100644
index a33e7929b..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleGeneratedCommon.vsprops
+++ /dev/null
@@ -1,15 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleGeneratedCommon"
- OutputDirectory="$(ConfigurationBuildDir)\lib"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops"
- >
- <Tool
- Name="VCNMakeTool"
- BuildCommandLine="if exist &quot;$(ConfigurationBuildDir)\buildfailed&quot; grep XX$(ProjectName)XX &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;echo XX$(ProjectName)XX &gt; &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;bash build-generated-files.sh &quot;$(ConfigurationBuildDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ConfigurationBuildDir)\buildfailed&quot; del &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;"
- ReBuildCommandLine="echo XX$(ProjectName)XX &gt; &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;&#x0D;&#x0A;del /s /q &quot;$(ConfigurationBuildDir)\obj\InjectedBundle\DerivedSources&quot;&#x0D;&#x0A;set PATH=%SystemDrive%\cygwin\bin;%PATH%&#x0D;&#x0A;bash build-generated-files.sh &quot;$(ConfigurationBuildDir)&quot; &quot;$(WebKitLibrariesDir)&quot;&#x0D;&#x0A;if errorlevel 1 exit 1&#x0D;&#x0A;&#x0D;&#x0A;if exist &quot;$(ConfigurationBuildDir)\buildfailed&quot; del &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;"
- CleanCommandLine="del /s /q &quot;$(ConfigurationBuildDir)\obj\InjectedBundle\DerivedSources&quot;&#x0D;&#x0A;if exist &quot;$(ConfigurationBuildDir)\buildfailed&quot; del &quot;$(ConfigurationBuildDir)\buildfailed&quot;&#x0D;&#x0A;"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundlePostBuild.cmd b/Tools/WebKitTestRunner/win/InjectedBundlePostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundlePostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WebKitTestRunner/win/InjectedBundlePreBuild.cmd b/Tools/WebKitTestRunner/win/InjectedBundlePreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundlePreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleProduction.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleProduction.vsprops
deleted file mode 100644
index c5567ce3e..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleProduction.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleProduction"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;..\Configurations\InjectedBundleCoreFoundation.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleRelease.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleRelease.vsprops
deleted file mode 100644
index 1da2dc061..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;..\Configurations\InjectedBundleCoreFoundation.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops
deleted file mode 100644
index eafcfaab4..000000000
--- a/Tools/WebKitTestRunner/win/InjectedBundleReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="InjectedBundleReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;..\Configurations\InjectedBundleCFLite.vsprops;..\Configurations\InjectedBundleCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp b/Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp
deleted file mode 100644
index cab77a3b2..000000000
--- a/Tools/WebKitTestRunner/win/PlatformWebViewWin.cpp
+++ /dev/null
@@ -1,125 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "PlatformWebView.h"
-
-namespace WTR {
-
-static LPCWSTR hostWindowClassName = L"WTRWebViewHostWindow";
-
-static void registerWindowClass()
-{
- static bool initialized;
- if (initialized)
- return;
- initialized = true;
-
- WNDCLASSEXW wndClass = {0};
- wndClass.cbSize = sizeof(wndClass);
- wndClass.style = CS_HREDRAW | CS_VREDRAW;
- wndClass.lpfnWndProc = DefWindowProcW;
- wndClass.hCursor = LoadCursor(0, IDC_ARROW);
- wndClass.hInstance = GetModuleHandle(0);
- wndClass.lpszClassName = hostWindowClassName;
-
- RegisterClassExW(&wndClass);
-}
-
-PlatformWebView::PlatformWebView(WKContextRef contextRef, WKPageGroupRef pageGroupRef, WKPageRef /* relatedPage */, WKDictionaryRef /*options*/)
- : m_windowIsKey(true)
-{
- registerWindowClass();
-
- RECT viewRect = {0, 0, 800, 600};
- m_window = CreateWindowExW(0, hostWindowClassName, L"WebKitTestRunner", WS_OVERLAPPEDWINDOW, 0 /*XOFFSET*/, 0 /*YOFFSET*/, viewRect.right, viewRect.bottom, 0, 0, GetModuleHandle(0), 0);
- m_view = WKViewCreate(viewRect, contextRef, pageGroupRef, m_window);
- WKViewSetIsInWindow(m_view, true);
-}
-
-PlatformWebView::~PlatformWebView()
-{
- if (::IsWindow(m_window))
- ::DestroyWindow(m_window);
- WKRelease(m_view);
-}
-
-void PlatformWebView::resizeTo(unsigned width, unsigned height)
-{
- ::SetWindowPos(WKViewGetWindow(m_view), 0, 0, 0, width, height, SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE | SWP_NOCOPYBITS);
-}
-
-WKPageRef PlatformWebView::page()
-{
- return WKViewGetPage(m_view);
-}
-
-void PlatformWebView::focus()
-{
- ::SetFocus(::WKViewGetWindow(m_view));
-}
-
-WKRect PlatformWebView::windowFrame()
-{
- // Implement.
-
- WKRect wkFrame;
- wkFrame.origin.x = 0;
- wkFrame.origin.y = 0;
- wkFrame.size.width = 0;
- wkFrame.size.height = 0;
- return wkFrame;
-}
-
-void PlatformWebView::setWindowFrame(WKRect)
-{
- // Implement.
-}
-
-
-void PlatformWebView::addChromeInputField()
-{
-}
-
-void PlatformWebView::removeChromeInputField()
-{
-}
-
-void PlatformWebView::makeWebViewFirstResponder()
-{
-}
-
-WKRetainPtr<WKImageRef> PlatformWebView::windowSnapshotImage()
-{
- // FIXME: implement to capture pixels in the UI process,
- // which may be necessary to capture things like 3D transforms.
- return 0;
-}
-
-void PlatformWebView::didInitializeClients()
-{
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/win/TestControllerWin.cpp b/Tools/WebKitTestRunner/win/TestControllerWin.cpp
deleted file mode 100644
index 6e80f5695..000000000
--- a/Tools/WebKitTestRunner/win/TestControllerWin.cpp
+++ /dev/null
@@ -1,225 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "TestController.h"
-
-#include <fcntl.h>
-#include <io.h>
-#include <shlwapi.h>
-#include <string>
-#include <WebKit2/WKContextPrivateWin.h>
-#include <WebKit2/WKStringCF.h>
-#include <wtf/RetainPtr.h>
-#include <wtf/Vector.h>
-
-using namespace std;
-
-namespace WTR {
-
-static HANDLE webProcessCrashingEvent;
-static const char webProcessCrashingEventName[] = "WebKitTestRunner.WebProcessCrashing";
-// This is the longest we'll wait (in seconds) for the web process to finish crashing and a crash
-// log to be saved. This interval should be just a tiny bit longer than it will ever reasonably
-// take to save a crash log.
-static const double maximumWaitForWebProcessToCrash = 60;
-
-#ifdef DEBUG_ALL
-const LPWSTR testPluginDirectoryName = L"TestNetscapePlugin_Debug";
-const char* injectedBundleDLL = "\\InjectedBundle_debug.dll";
-#else
-const LPWSTR testPluginDirectoryName = L"TestNetscapePlugin";
-const char* injectedBundleDLL = "\\InjectedBundle.dll";
-#endif
-
-static void addQTDirToPATH()
-{
- static LPCWSTR pathEnvironmentVariable = L"PATH";
- static LPCWSTR quickTimeKeyName = L"Software\\Apple Computer, Inc.\\QuickTime";
- static LPCWSTR quickTimeSysDir = L"QTSysDir";
- static bool initialized;
-
- if (initialized)
- return;
- initialized = true;
-
- // Get the QuickTime dll directory from the registry. The key can be in either HKLM or HKCU.
- WCHAR qtPath[MAX_PATH];
- DWORD qtPathBufferLen = sizeof(qtPath);
- DWORD keyType;
- HRESULT result = ::SHGetValueW(HKEY_LOCAL_MACHINE, quickTimeKeyName, quickTimeSysDir, &keyType, (LPVOID)qtPath, &qtPathBufferLen);
- if (result != ERROR_SUCCESS || !qtPathBufferLen || keyType != REG_SZ) {
- qtPathBufferLen = sizeof(qtPath);
- result = ::SHGetValueW(HKEY_CURRENT_USER, quickTimeKeyName, quickTimeSysDir, &keyType, (LPVOID)qtPath, &qtPathBufferLen);
- if (result != ERROR_SUCCESS || !qtPathBufferLen || keyType != REG_SZ)
- return;
- }
-
- // Read the current PATH.
- DWORD pathSize = ::GetEnvironmentVariableW(pathEnvironmentVariable, 0, 0);
- Vector<WCHAR> oldPath(pathSize);
- if (!::GetEnvironmentVariableW(pathEnvironmentVariable, oldPath.data(), oldPath.size()))
- return;
-
- // And add the QuickTime dll.
- wstring newPath;
- newPath.append(qtPath);
- newPath.append(L";");
- newPath.append(oldPath.data(), oldPath.size());
- ::SetEnvironmentVariableW(pathEnvironmentVariable, newPath.data());
-}
-
-static LONG WINAPI exceptionFilter(EXCEPTION_POINTERS*)
-{
- fputs("#CRASHED\n", stderr);
- fflush(stderr);
- return EXCEPTION_CONTINUE_SEARCH;
-}
-
-void TestController::notifyDone()
-{
-}
-
-void TestController::platformInitialize()
-{
- // Cygwin calls ::SetErrorMode(SEM_FAILCRITICALERRORS), which we will inherit. This is bad for
- // testing/debugging, as it causes the post-mortem debugger not to be invoked. We reset the
- // error mode here to work around Cygwin's behavior. See <http://webkit.org/b/55222>.
- ::SetErrorMode(0);
-
- ::SetUnhandledExceptionFilter(exceptionFilter);
-
- _setmode(1, _O_BINARY);
- _setmode(2, _O_BINARY);
-
- // Add the QuickTime dll directory to PATH or QT 7.6 will fail to initialize on systems
- // linked with older versions of qtmlclientlib.dll.
- addQTDirToPATH();
-
- webProcessCrashingEvent = ::CreateEventA(0, FALSE, FALSE, webProcessCrashingEventName);
-}
-
-void TestController::platformDestroy()
-{
-}
-
-void TestController::initializeInjectedBundlePath()
-{
- CFStringRef exeContainerPath = CFURLCopyFileSystemPath(CFURLCreateCopyDeletingLastPathComponent(0, CFBundleCopyExecutableURL(CFBundleGetMainBundle())), kCFURLWindowsPathStyle);
- CFMutableStringRef bundlePath = CFStringCreateMutableCopy(0, 0, exeContainerPath);
- CFStringAppendCString(bundlePath, injectedBundleDLL, kCFStringEncodingWindowsLatin1);
- m_injectedBundlePath.adopt(WKStringCreateWithCFString(bundlePath));
-}
-
-void TestController::initializeTestPluginDirectory()
-{
- RetainPtr<CFURLRef> bundleURL = adoptCF(CFBundleCopyExecutableURL(CFBundleGetMainBundle()));
- RetainPtr<CFURLRef> bundleDirectoryURL = adoptCF(CFURLCreateCopyDeletingLastPathComponent(0, bundleURL.get()));
- RetainPtr<CFStringRef> testPluginDirectoryNameString = adoptCF(CFStringCreateWithCharacters(0, reinterpret_cast<const UniChar*>(testPluginDirectoryName), wcslen(testPluginDirectoryName)));
- RetainPtr<CFURLRef> testPluginDirectoryURL = adoptCF(CFURLCreateCopyAppendingPathComponent(0, bundleDirectoryURL.get(), testPluginDirectoryNameString.get(), true));
- RetainPtr<CFStringRef> testPluginDirectoryPath = adoptCF(CFURLCopyFileSystemPath(testPluginDirectoryURL.get(), kCFURLWindowsPathStyle));
- m_testPluginDirectory.adopt(WKStringCreateWithCFString(testPluginDirectoryPath.get()));
-}
-
-enum RunLoopResult { TimedOut, ObjectSignaled, ConditionSatisfied };
-
-static RunLoopResult runRunLoopUntil(bool& condition, HANDLE object, double timeout)
-{
- DWORD end = ::GetTickCount() + timeout * 1000;
- while (!condition) {
- DWORD now = ::GetTickCount();
- if (now > end)
- return TimedOut;
-
- DWORD objectCount = object ? 1 : 0;
- const HANDLE* objects = object ? &object : 0;
- DWORD result = ::MsgWaitForMultipleObjectsEx(objectCount, objects, end - now, QS_ALLINPUT, MWMO_INPUTAVAILABLE);
- if (result == WAIT_TIMEOUT)
- return TimedOut;
-
- if (objectCount && result >= WAIT_OBJECT_0 && result < WAIT_OBJECT_0 + objectCount)
- return ObjectSignaled;
-
- ASSERT(result == WAIT_OBJECT_0 + objectCount);
- // There are messages in the queue. Process them.
- MSG msg;
- while (::PeekMessageW(&msg, 0, 0, 0, PM_REMOVE)) {
- ::TranslateMessage(&msg);
- ::DispatchMessageW(&msg);
- }
- }
-
- return ConditionSatisfied;
-}
-
-void TestController::platformRunUntil(bool& done, double timeout)
-{
- // FIXME: No timeout should occur if timeout is equal to m_noTimeout (necessary when running performance tests).
- RunLoopResult result = runRunLoopUntil(done, webProcessCrashingEvent, timeout);
- if (result == TimedOut || result == ConditionSatisfied)
- return;
- ASSERT(result == ObjectSignaled);
-
- // The web process is crashing. A crash log might be being saved, which can take a long
- // time, and we don't want to time out while that happens.
-
- // First, let the test harness know this happened so it won't think we've hung. But
- // make sure we don't exit just yet!
- m_shouldExitWhenWebProcessCrashes = false;
- processDidCrash();
- m_shouldExitWhenWebProcessCrashes = true;
-
- // Then spin a run loop until it finishes crashing to give time for a crash log to be saved. If
- // it takes too long for a crash log to be saved, we'll just give up.
- bool neverSetCondition = false;
- result = runRunLoopUntil(neverSetCondition, 0, maximumWaitForWebProcessToCrash);
- ASSERT_UNUSED(result, result == TimedOut);
- exit(1);
-}
-
-static WKRetainPtr<WKStringRef> toWK(const char* string)
-{
- return WKRetainPtr<WKStringRef>(AdoptWK, WKStringCreateWithUTF8CString(string));
-}
-
-void TestController::platformInitializeContext()
-{
- // FIXME: Make DRT pass with Windows native controls. <http://webkit.org/b/25592>
- WKContextSetShouldPaintNativeControls(m_context.get(), false);
-
- WKContextSetInitializationUserDataForInjectedBundle(m_context.get(), toWK(webProcessCrashingEventName).get());
-}
-
-void TestController::runModal(PlatformWebView*)
-{
- // FIXME: Need to implement this to test showModalDialog.
-}
-
-const char* TestController::platformLibraryPathForTesting()
-{
- return 0;
-}
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/win/TestInvocationWin.cpp b/Tools/WebKitTestRunner/win/TestInvocationWin.cpp
deleted file mode 100644
index 8945aa68a..000000000
--- a/Tools/WebKitTestRunner/win/TestInvocationWin.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2011 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. 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 INC. 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 "TestInvocation.h"
-
-namespace WTR {
-
-#if !USE(CG) && !USE(CAIRO)
-void TestInvocation::dumpPixelsAndCompareWithExpected(WKImageRef, WKArrayRef)
-{
-}
-#endif
-
-} // namespace WTR
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj b/Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj
deleted file mode 100644
index b985f8392..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunner.vcproj
+++ /dev/null
@@ -1,540 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunner"
- ProjectGUID="{3B99669B-1817-443B-BCBE-835580146668}"
- RootNamespace="WebKitTestRunner"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerDebug.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"
- />
- <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"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerRelease.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"
- />
- <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="Debug_All|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerDebugAll.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"
- />
- <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="Debug_Cairo_CFLite|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerDebugCairoCFLite.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"
- />
- <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_Cairo_CFLite|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerReleaseCairoCFLite.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"
- />
- <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="Production|Win32"
- ConfigurationType="2"
- InheritedPropertySheets=".\WebKitTestRunnerProduction.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="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"
- />
- <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="win"
- >
- <File
- RelativePath=".\main.cpp"
- >
- </File>
- <File
- RelativePath=".\PlatformWebViewWin.cpp"
- >
- </File>
- <File
- RelativePath=".\TestControllerWin.cpp"
- >
- </File>
- <File
- RelativePath=".\TestInvocationWin.cpp"
- >
- </File>
- </Filter>
- <Filter
- Name="cg"
- >
- <File
- RelativePath="..\cg\TestInvocationCG.cpp"
- >
- <FileConfiguration
- Name="Debug_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release_Cairo_CFLite|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <Filter
- Name="cairo"
- >
- <File
- RelativePath="..\cairo\TestInvocationCairo.cpp"
- >
- <FileConfiguration
- Name="Debug|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Release|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Debug_All|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- <FileConfiguration
- Name="Production|Win32"
- ExcludedFromBuild="true"
- >
- <Tool
- Name="VCCLCompilerTool"
- />
- </FileConfiguration>
- </File>
- </Filter>
- <File
- RelativePath="..\CyclicRedundancyCheck.cpp"
- >
- </File>
- <File
- RelativePath="..\CyclicRedundancyCheck.h"
- >
- </File>
- <File
- RelativePath="..\GeolocationProviderMock.cpp"
- >
- </File>
- <File
- RelativePath="..\GeolocationProviderMock.h"
- >
- </File>
- <File
- RelativePath="..\PixelDumpSupport.cpp"
- >
- </File>
- <File
- RelativePath="..\PixelDumpSupport.h"
- >
- </File>
- <File
- RelativePath="..\PlatformWebView.h"
- >
- </File>
- <File
- RelativePath="..\TestController.cpp"
- >
- </File>
- <File
- RelativePath="..\TestController.h"
- >
- </File>
- <File
- RelativePath="..\TestInvocation.cpp"
- >
- </File>
- <File
- RelativePath="..\TestInvocation.h"
- >
- </File>
- <File
- RelativePath="..\WebNotificationProvider.cpp"
- >
- </File>
- <File
- RelativePath="..\WebNotificationProvider.h"
- >
- </File>
- <File
- RelativePath="..\WebKitTestRunnerPrefix.h"
- >
- </File>
- <File
- RelativePath="..\WorkQueueManager.cpp"
- >
- </File>
- <File
- RelativePath="..\WorkQueueManager.h"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops
deleted file mode 100644
index 622659f4b..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCoreFoundation.vsprops;..\Configurations\WebKitTestRunnerCoreGraphics.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops
deleted file mode 100644
index bdf40762b..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCoreFoundation.vsprops;..\Configurations\WebKitTestRunnerCoreGraphics.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops
deleted file mode 100644
index d978c359e..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_wincairo.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCFLite.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncher.vcproj b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncher.vcproj
deleted file mode 100644
index 025e3ffe8..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncher.vcproj
+++ /dev/null
@@ -1,396 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioProject
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncher"
- ProjectGUID="{C13FA6EF-B531-4BAD-9A23-18E2BEB8B040}"
- RootNamespace="WebKitTestRunnerLauncher"
- Keyword="Win32Proj"
- >
- <Platforms>
- <Platform
- Name="Win32"
- />
- </Platforms>
- <ToolFiles>
- </ToolFiles>
- <Configurations>
- <Configuration
- Name="Debug|Win32"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherDebug.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"
- />
- <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"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherRelease.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"
- />
- <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="Debug_Cairo_CFLite|Win32"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherDebugCairoCFLite.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"
- />
- <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="Debug_All|Win32"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherDebugAll.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"
- />
- <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="Production|Win32"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherProduction.vsprops"
- CharacterSet="1"
- WholeProgramOptimization="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"
- />
- <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_Cairo_CFLite|Win32"
- ConfigurationType="1"
- InheritedPropertySheets=".\WebKitTestRunnerLauncherReleaseCairoCFLite.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"
- />
- <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>
- <File
- RelativePath="..\..\win\DLLLauncher\DLLLauncherMain.cpp"
- >
- </File>
- </Files>
- <Globals>
- </Globals>
-</VisualStudioProject>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops
deleted file mode 100644
index 55e53b2ea..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherCommon.vsprops
+++ /dev/null
@@ -1,18 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherCommon"
- >
- <Tool
- Name="VCCLCompilerTool"
- PreprocessorDefinitions="USE_CONSOLE_ENTRY_POINT"
- />
- <Tool
- Name="VCLinkerTool"
- AdditionalDependencies="shlwapi.lib"
- OutputFile="$(OutDir)\WebKitTestRunner$(WebKitConfigSuffix).exe"
- ProgramDatabaseFile="$(TargetDir)$(TargetName)Launcher.pdb"
- SubSystem="1"
- />
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops
deleted file mode 100644
index bc4321332..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebug.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherDebug"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops
deleted file mode 100644
index 7d6e1224e..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugAll.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherDebugAll"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug_all.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops
deleted file mode 100644
index 5241945d3..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherDebugCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerDebugCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\debug.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops
deleted file mode 100644
index 8a61248f7..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherProduction.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherProduction"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops
deleted file mode 100644
index 4d68ed823..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops
deleted file mode 100644
index 5e2736588..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerLauncherReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerLauncherReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;.\WebKitTestRunnerLauncherCommon.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd b/Tools/WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd
deleted file mode 100644
index cf7272ac1..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerPostBuild.cmd
+++ /dev/null
@@ -1,36 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
-
-if not defined ARCHIVE_BUILD (if defined PRODUCTION exit /b)
-
-mkdir 2>NUL "%CONFIGURATIONBUILDDIR%\bin"
-
-if not exist "%WEBKITLIBRARIESDIR%\bin\CoreFoundation%LIBRARYCONFIGSUFFIX%.dll" exit /b
-
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CoreFoundation%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CoreFoundation%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CFNetwork%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CFNetwork%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d /e /i "%WEBKITLIBRARIESDIR%\bin\CFNetwork.resources" "%CONFIGURATIONBUILDDIR%\bin\CFNetwork.resources"
-xcopy /y /d /e /i "%WEBKITLIBRARIESDIR%\bin\CoreFoundation.resources" "%CONFIGURATIONBUILDDIR%\bin\CoreFoundation.resources"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CoreGraphics%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\CoreGraphics%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icudt40.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt40.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icudt40%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt40%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.pdb"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin40%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.pdb"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc40%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icudt42.dll" xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt42.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icudt42%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icudt42%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.pdb"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuin42%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.dll"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-if exist "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.pdb"xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\icuuc42%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\libxml2%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\libxslt%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\pthreadVC2%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\pthreadVC2%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\SQLite3%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\SQLite3%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\zlib1%LIBRARYCONFIGSUFFIX%.dll" "%CONFIGURATIONBUILDDIR%\bin"
-xcopy /y /d "%WEBKITLIBRARIESDIR%\bin\zlib1%LIBRARYCONFIGSUFFIX%.pdb" "%CONFIGURATIONBUILDDIR%\bin"
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd b/Tools/WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops
deleted file mode 100644
index 12a16fc48..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerProduction.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerProduction"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\production.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCoreFoundation.vsprops;..\Configurations\WebKitTestRunnerCoreGraphics.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops
deleted file mode 100644
index 7cb500c0a..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerRelease.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerRelease"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCoreFoundation.vsprops;..\Configurations\WebKitTestRunnerCoreGraphics.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops b/Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops
deleted file mode 100644
index 48b734a93..000000000
--- a/Tools/WebKitTestRunner/win/WebKitTestRunnerReleaseCairoCFLite.vsprops
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="Windows-1252"?>
-<VisualStudioPropertySheet
- ProjectType="Visual C++"
- Version="8.00"
- Name="WebKitTestRunnerReleaseCairoCFLite"
- InheritedPropertySheets="$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\common.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\releaseproduction.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\release.vsprops;$(WebKitVSPropsRedirectionDir)..\..\..\WebKitLibraries\win\tools\vsprops\WinCairo.vsprops;..\Configurations\WebKitTestRunnerCommon.vsprops;..\Configurations\WebKitTestRunnerCFLite.vsprops"
- >
-</VisualStudioPropertySheet>
diff --git a/Tools/WebKitTestRunner/win/build-generated-files.sh b/Tools/WebKitTestRunner/win/build-generated-files.sh
deleted file mode 100755
index 8c599c19a..000000000
--- a/Tools/WebKitTestRunner/win/build-generated-files.sh
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright (C) 2010 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. 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 INC. 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.
-
-# Calls to `cygpath -ms` below are needed to remove spaces from paths, which
-# confuse GNU make. See <http://webkit.org/b/8173>.
-
-WebKitOutputDir=$(cygpath -u "$(cygpath -ms "${1}")")
-WebKitLibrariesDir=$(cygpath -u "$(cygpath -ms "${2}")")
-DerivedSources="${WebKitOutputDir}/obj/InjectedBundle/DerivedSources"
-
-export WebKitTestRunner=$(cygpath -u "$(cygpath -ms "$(realpath ..)")")
-
-if [ -e "${WebKitOutputDir}/obj/WebCore/scripts" ]; then
- export WebCoreScripts="${WebKitOutputDir}/obj/WebCore/scripts"
-else
- export WebCoreScripts="${WebKitLibrariesDir}/tools/scripts"
-fi
-
-mkdir -p "${DerivedSources}"
-cd "${DerivedSources}"
-
-make -f "${WebKitTestRunner}/DerivedSources.make"
diff --git a/Tools/WebKitTestRunner/win/main.cpp b/Tools/WebKitTestRunner/win/main.cpp
deleted file mode 100644
index c511be57b..000000000
--- a/Tools/WebKitTestRunner/win/main.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 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. 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 INC. 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 "TestController.h"
-
-extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(int argc, const char* argv[])
-{
- {
- WTR::TestController controller(argc, argv);
- }
-
- return 0;
-}
diff --git a/Tools/WinCELauncher/CMakeLists.txt b/Tools/WinCELauncher/CMakeLists.txt
deleted file mode 100644
index 914bb2bdc..000000000
--- a/Tools/WinCELauncher/CMakeLists.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-set(WinCELauncher_INCLUDE_DIRECTORIES
- "${WEBKIT_DIR}/wince"
- "${WEBCORE_DIR}"
- "${WEBCORE_DIR}/platform"
- "${WEBCORE_DIR}/platform/graphics"
- "${WEBCORE_DIR}/platform/network"
- "${WEBCORE_DIR}/platform/text"
- "${JAVASCRIPTCORE_DIR}"
- "${WTF_DIR}"
- "${DERIVED_SOURCES_DIR}"
- "${CMAKE_BINARY_DIR}"
-)
-
-set(WinCELauncher_SOURCES
- ${TOOLS_DIR}/WinCELauncher/main.cpp
-)
-
-set(WinCELauncher_LIBRARIES
- WebKit
-)
-
-include_directories(${WinCELauncher_INCLUDE_DIRECTORIES})
-add_executable(WinCELauncher WIN32 ${WinCELauncher_SOURCES})
-add_dependencies(WinCELauncher WebKit)
-target_link_libraries(WinCELauncher ${WinCELauncher_LIBRARIES})
-set_target_properties(WinCELauncher PROPERTIES FOLDER "Tools")
-set_target_properties(WinCELauncher PROPERTIES RUNTIME_OUTPUT_DIRECTORY "${CMAKE_BINARY_DIR}")
diff --git a/Tools/WinCELauncher/main.cpp b/Tools/WinCELauncher/main.cpp
deleted file mode 100644
index e0f2a5145..000000000
--- a/Tools/WinCELauncher/main.cpp
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
- * Copyright (C) 2010 Patrick Gansterer <paroga@paroga.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 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 "WebView.h"
-#include <windows.h>
-#include <wtf/PassOwnPtr.h>
-
-static const LPCWSTR kMainWindowTitle = L"WebKit for WinCE";
-static const LPCWSTR kMainWindowClassName = L"MainWindowClass";
-
-
-static LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- switch (message) {
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
-
- default:
- return DefWindowProc(hWnd, message, wParam, lParam);
- }
-
- return 0;
-}
-
-int APIENTRY _tWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpCmdLine, int nCmdShow)
-{
- UNREFERENCED_PARAMETER(hPrevInstance);
-
- CoInitializeEx(0, COINIT_MULTITHREADED);
- WebView::initialize(hInstance);
-
- LPCWSTR homeUrl = lpCmdLine;
- bool enableDoubleBuffer = true;
- bool fullscreen = false;
-
- if (homeUrl[0] == '-') {
- for (; *homeUrl && *homeUrl != ' '; ++homeUrl) {
- switch (*homeUrl) {
- case 'd':
- enableDoubleBuffer = false;
- break;
- case 'f':
- fullscreen = true;
- break;
- default:
- break;
- }
- }
- if (*homeUrl)
- ++homeUrl;
- }
-
- DWORD styles = WS_VISIBLE;
-
- if (!fullscreen) {
- styles |= WS_CAPTION
- | WS_MAXIMIZEBOX
- | WS_MINIMIZEBOX
- | WS_OVERLAPPED
- | WS_SYSMENU
- | WS_THICKFRAME;
- }
-
- WNDCLASSW wc;
- wc.style = CS_HREDRAW | CS_VREDRAW;
- wc.lpfnWndProc = WndProc;
- wc.cbClsExtra = 0;
- wc.cbWndExtra = 0;
- wc.hInstance = hInstance;
- wc.hIcon = 0;
- wc.hCursor = 0;
- wc.hbrBackground = static_cast<HBRUSH>(GetStockObject(WHITE_BRUSH));
- wc.lpszMenuName = 0;
- wc.lpszClassName = kMainWindowClassName;
- RegisterClass(&wc);
-
- HWND hMainWindow = CreateWindowW(kMainWindowClassName, kMainWindowTitle, styles,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInstance, 0);
-
- if (fullscreen) {
- SetWindowPos(hMainWindow, HWND_TOPMOST, 0, 0, GetSystemMetrics(SM_CXSCREEN),
- GetSystemMetrics(SM_CYSCREEN), SWP_SHOWWINDOW);
- }
-
- ShowWindow(hMainWindow, nCmdShow);
- UpdateWindow(hMainWindow);
-
- WTF::OwnPtr<WebView> webView = WTF::adoptPtr(new WebView(hMainWindow, enableDoubleBuffer ? WebView::EnableDoubleBuffering : WebView::NoFeature));
- webView->load(homeUrl);
-
- // Main message loop:
- MSG msg;
- BOOL bRet;
- while (bRet = GetMessage(&msg, 0, 0, 0)) {
- if (bRet == -1) {
- // FIXME: Handle the error and possibly exit.
- } else {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-
- webView.clear();
- DestroyWindow(hMainWindow);
-
- WebView::cleanup();
- CoUninitialize();
-
- return msg.wParam;
-}
diff --git a/Tools/WinLauncher/AccessibilityDelegate.cpp b/Tools/WinLauncher/AccessibilityDelegate.cpp
deleted file mode 100644
index 46ce70f43..000000000
--- a/Tools/WinLauncher/AccessibilityDelegate.cpp
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- * Copyright (C) 2013 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 "stdafx.h"
-#include "AccessibilityDelegate.h"
-
-#include <WebKit/WebKitCOMAPI.h>
-#include <commctrl.h>
-#include <commdlg.h>
-#include <objbase.h>
-#include <shlwapi.h>
-#include <stdio.h>
-#include <wininet.h>
-
-HRESULT AccessibilityDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualIID(riid, IID_IUnknown))
- *ppvObject = static_cast<IAccessibilityDelegate*>(this);
- else if (IsEqualIID(riid, IID_IAccessibilityDelegate))
- *ppvObject = static_cast<IAccessibilityDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG AccessibilityDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG AccessibilityDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete this;
-
- return newRef;
-}
-
-HRESULT AccessibilityDelegate::fireFrameLoadStartedEvents()
-{
- return S_OK;
-}
-
-HRESULT AccessibilityDelegate::fireFrameLoadFinishedEvents()
-{
- return S_OK;
-}
diff --git a/Tools/WinLauncher/AccessibilityDelegate.h b/Tools/WinLauncher/AccessibilityDelegate.h
deleted file mode 100644
index 2dc77f213..000000000
--- a/Tools/WinLauncher/AccessibilityDelegate.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2013 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 AccessibilityDelegate_h
-#define AccessibilityDelegate_h
-
-#include <WebKit/WebKit.h>
-
-class AccessibilityDelegate : public IAccessibilityDelegate {
-public:
- AccessibilityDelegate() : m_refCount(1) { }
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- virtual HRESULT STDMETHODCALLTYPE fireFrameLoadStartedEvents();
- virtual HRESULT STDMETHODCALLTYPE fireFrameLoadFinishedEvents();
-private:
- int m_refCount;
-};
-
-#endif
diff --git a/Tools/WinLauncher/DOMDefaultImpl.h b/Tools/WinLauncher/DOMDefaultImpl.h
deleted file mode 100644
index a8f5ed51c..000000000
--- a/Tools/WinLauncher/DOMDefaultImpl.h
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * Copyright (C) 2011 Anthony Johnson. All Rights Reserved.
- * Copyright (C) 2011 Brent Fulgham. 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 DOMDefaultImpl_h
-#define DOMDefaultImpl_h
-
-#include <WebKit/WebKit.h>
-
-class WebScriptObject : public IWebScriptObject {
-public:
- WebScriptObject() : m_refCount(0)
- {
- }
-
- virtual ~WebScriptObject()
- {
- }
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebScriptObject
- virtual HRESULT STDMETHODCALLTYPE throwException(BSTR, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(BSTR, const VARIANT[], int, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(BSTR, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(BSTR) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE stringRepresentation(BSTR*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(unsigned int, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(unsigned int, VARIANT) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setException(BSTR) { return E_NOTIMPL; }
-
-protected:
- ULONG m_refCount;
-};
-
-
-class DOMObject : public WebScriptObject, public IDOMObject {
-public:
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
-};
-
-
-class DOMEventListener : public DOMObject, public IDOMEventListener {
-public:
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- // IWebScriptObject
- virtual HRESULT STDMETHODCALLTYPE throwException(BSTR, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE callWebScriptMethod(BSTR, const VARIANT[], int, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE evaluateWebScript(BSTR, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE removeWebScriptKey(BSTR) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE stringRepresentation(BSTR*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webScriptValueAtIndex(unsigned int, VARIANT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setWebScriptValueAtIndex(unsigned int, VARIANT) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setException(BSTR) { return E_NOTIMPL; }
-
- // IDOMEventListener
- virtual HRESULT STDMETHODCALLTYPE handleEvent(IDOMEvent*) { return E_NOTIMPL; }
-};
-
-// IUnknown -------------------------------------------------------------------
-HRESULT WebScriptObject::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebScriptObject*>(this);
- else if (IsEqualGUID(riid, IID_IWebScriptObject))
- *ppvObject = static_cast<IWebScriptObject*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG WebScriptObject::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG WebScriptObject::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete(this);
-
- return newRef;
-}
-
-// DOMObject -------------------------------------------------------------------
-HRESULT DOMObject::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IDOMObject))
- *ppvObject = static_cast<IDOMObject*>(this);
- else
- return WebScriptObject::QueryInterface(riid, ppvObject);
-
- WebScriptObject::AddRef();
- return S_OK;
-}
-
-
-// DOMEventListener -------------------------------------------------------------------
-HRESULT DOMEventListener::QueryInterface(const IID &riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualGUID(riid, IID_IDOMEventListener))
- *ppvObject = static_cast<IDOMEventListener*>(this);
- else
- return DOMObject::QueryInterface(riid, ppvObject);
-
- AddRef();
- return S_OK;
-}
-
-ULONG DOMEventListener::AddRef(void)
-{
- return WebScriptObject::AddRef();
-}
-
-ULONG DOMEventListener::Release(void)
-{
- return WebScriptObject::Release();
-}
-
-#endif
diff --git a/Tools/WinLauncher/PrintWebUIDelegate.cpp b/Tools/WinLauncher/PrintWebUIDelegate.cpp
deleted file mode 100644
index 3e9214418..000000000
--- a/Tools/WinLauncher/PrintWebUIDelegate.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Brent Fulgham. 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 "stdafx.h"
-#include "PrintWebUIDelegate.h"
-
-#include <WebKit/WebKitCOMAPI.h>
-#include <commctrl.h>
-#include <commdlg.h>
-#include <objbase.h>
-#include <shlwapi.h>
-#include <wininet.h>
-
-static const int MARGIN = 20;
-
-HRESULT PrintWebUIDelegate::QueryInterface(REFIID riid, void** ppvObject)
-{
- *ppvObject = 0;
- if (IsEqualIID(riid, IID_IUnknown))
- *ppvObject = static_cast<IWebUIDelegate*>(this);
- else if (IsEqualIID(riid, IID_IWebUIDelegate))
- *ppvObject = static_cast<IWebUIDelegate*>(this);
- else
- return E_NOINTERFACE;
-
- AddRef();
- return S_OK;
-}
-
-ULONG PrintWebUIDelegate::AddRef(void)
-{
- return ++m_refCount;
-}
-
-ULONG PrintWebUIDelegate::Release(void)
-{
- ULONG newRef = --m_refCount;
- if (!newRef)
- delete this;
-
- return newRef;
-}
-
-HRESULT PrintWebUIDelegate::webViewPrintingMarginRect(IWebView* view, RECT* rect)
-{
- if (!view || !rect)
- return E_POINTER;
-
- IWebFrame* mainFrame = 0;
- if (FAILED(view->mainFrame(&mainFrame)))
- return E_FAIL;
-
- IWebFramePrivate* privateFrame = 0;
- if (FAILED(mainFrame->QueryInterface(&privateFrame))) {
- mainFrame->Release();
- return E_FAIL;
- }
-
- privateFrame->frameBounds(rect);
-
- rect->left += MARGIN;
- rect->top += MARGIN;
- HDC dc = ::GetDC(0);
- rect->right = (::GetDeviceCaps(dc, LOGPIXELSX) * 6.5) - MARGIN;
- rect->bottom = (::GetDeviceCaps(dc, LOGPIXELSY) * 11) - MARGIN;
- ::ReleaseDC(0, dc);
-
- privateFrame->Release();
- mainFrame->Release();
-
- return S_OK;
-}
-
-HRESULT PrintWebUIDelegate::webViewHeaderHeight(IWebView* webView, float* height)
-{
- if (!webView || !height)
- return E_POINTER;
-
- HDC dc = ::GetDC(0);
-
- TEXTMETRIC textMetric;
- ::GetTextMetrics(dc, &textMetric);
- ::ReleaseDC(0, dc);
-
- *height = 1.1 * textMetric.tmHeight;
-
- return S_OK;
-}
-
-HRESULT PrintWebUIDelegate::webViewFooterHeight(IWebView* webView, float* height)
-{
- if (!webView || !height)
- return E_POINTER;
-
- HDC dc = ::GetDC(0);
-
- TEXTMETRIC textMetric;
- ::GetTextMetrics(dc, &textMetric);
- ::ReleaseDC(0, dc);
-
- *height = 1.1 * textMetric.tmHeight;
-
- return S_OK;
-}
-
-HRESULT PrintWebUIDelegate::drawHeaderInRect(
- /* [in] */ IWebView* webView,
- /* [in] */ RECT* rect,
- /* [in] */ OLE_HANDLE drawingContext)
-{
- if (!webView || !rect)
- return E_POINTER;
-
- // Turn off header for now.
- HDC dc = reinterpret_cast<HDC>(drawingContext);
-
- HGDIOBJ hFont = ::GetStockObject(ANSI_VAR_FONT);
- HGDIOBJ hOldFont = ::SelectObject(dc, hFont);
-
- LPCWSTR header = L"[Sample Header]";
- size_t length = wcslen(header);
-
- int rc = ::DrawTextW(dc, header, length, rect, DT_LEFT | DT_NOCLIP | DT_VCENTER | DT_SINGLELINE);
- ::SelectObject(dc, hOldFont);
-
- if (!rc)
- return E_FAIL;
-
- ::MoveToEx(dc, rect->left, rect->bottom, 0);
- HGDIOBJ hPen = ::GetStockObject(BLACK_PEN);
- HGDIOBJ hOldPen = ::SelectObject(dc, hPen);
- ::LineTo(dc, rect->right, rect->bottom);
- ::SelectObject(dc, hOldPen);
-
- return S_OK;
-}
-
-HRESULT PrintWebUIDelegate::drawFooterInRect(
- /* [in] */ IWebView* webView,
- /* [in] */ RECT* rect,
- /* [in] */ OLE_HANDLE drawingContext,
- /* [in] */ UINT pageIndex,
- /* [in] */ UINT pageCount)
-{
- if (!webView || !rect)
- return E_POINTER;
-
- HDC dc = reinterpret_cast<HDC>(drawingContext);
-
- HGDIOBJ hFont = ::GetStockObject(ANSI_VAR_FONT);
- HGDIOBJ hOldFont = ::SelectObject(dc, hFont);
-
- LPCWSTR footer = L"[Sample Footer]";
- size_t length = wcslen(footer);
-
- // Add a line, 1/10th inch above the footer text from left margin to right margin.
- ::MoveToEx(dc, rect->left, rect->top, 0);
- HGDIOBJ hPen = ::GetStockObject(BLACK_PEN);
- HGDIOBJ hOldPen = ::SelectObject(dc, hPen);
- ::LineTo(dc, rect->right, rect->top);
- ::SelectObject(dc, hOldPen);
-
- int rc = ::DrawTextW(dc, footer, length, rect, DT_LEFT | DT_NOCLIP | DT_VCENTER | DT_SINGLELINE);
- ::SelectObject(dc, hOldFont);
-
- if (!rc)
- return E_FAIL;
-
- return S_OK;
-}
diff --git a/Tools/WinLauncher/PrintWebUIDelegate.h b/Tools/WinLauncher/PrintWebUIDelegate.h
deleted file mode 100644
index 9749a9807..000000000
--- a/Tools/WinLauncher/PrintWebUIDelegate.h
+++ /dev/null
@@ -1,109 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc. All Rights Reserved.
- * Copyright (C) 2009 Brent Fulgham. 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 PrintWebUIDelegate_h
-#define PrintWebUIDelegate_h
-
-#include <WebKit/WebKit.h>
-
-class PrintWebUIDelegate : public IWebUIDelegate {
-public:
- PrintWebUIDelegate() : m_refCount(1) {}
-
- // IUnknown
- virtual HRESULT STDMETHODCALLTYPE QueryInterface(REFIID riid, void** ppvObject);
- virtual ULONG STDMETHODCALLTYPE AddRef(void);
- virtual ULONG STDMETHODCALLTYPE Release(void);
-
- virtual HRESULT STDMETHODCALLTYPE createWebViewWithRequest(IWebView*, IWebURLRequest*, IWebView**) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewShow(IWebView*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewClose(IWebView*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewFocus(IWebView*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewUnfocus(IWebView*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewFirstResponder(IWebView*, OLE_HANDLE*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE makeFirstResponder(IWebView*, OLE_HANDLE) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setStatusText(IWebView*, BSTR) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewStatusText(IWebView*, BSTR*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewAreToolbarsVisible(IWebView*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setToolbarsVisible(IWebView*, BOOL) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewIsStatusBarVisible(IWebView*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setStatusBarVisible(IWebView*, BOOL) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewIsResizable(IWebView*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setResizable(IWebView*, BOOL) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setFrame(IWebView*, RECT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewFrame(IWebView*, RECT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setContentRect(IWebView*, RECT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewContentRect(IWebView*, RECT*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptAlertPanelWithMessage(IWebView*, BSTR) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptConfirmPanelWithMessage(IWebView*, BSTR, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runJavaScriptTextInputPanelWithPrompt(IWebView*, BSTR, BSTR, BSTR*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runBeforeUnloadConfirmPanelWithMessage(IWebView*, BSTR, IWebFrame*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runOpenPanelForFileButtonWithResultListener(IWebView*, IWebOpenPanelResultListener*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE mouseDidMoveOverElement(IWebView*, IPropertyBag*, UINT) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE contextMenuItemsForElement(IWebView*, IPropertyBag*, OLE_HANDLE, OLE_HANDLE*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE validateUserInterfaceItem(IWebView*, UINT, BOOL, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE shouldPerformAction(IWebView*, UINT, UINT) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE dragDestinationActionMaskForDraggingInfo(IWebView*, IDataObject*, WebDragDestinationAction*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE willPerformDragDestinationAction(IWebView*, WebDragDestinationAction, IDataObject*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE dragSourceActionMaskForPoint(IWebView*, LPPOINT, WebDragSourceAction*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE willPerformDragSourceAction(IWebView*, WebDragSourceAction, LPPOINT, IDataObject*, IDataObject**) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE contextMenuItemSelected(IWebView*, void*, IPropertyBag*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE hasCustomMenuImplementation(BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE trackCustomPopupMenu(IWebView*, OLE_HANDLE, LPPOINT) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE measureCustomMenuItem(IWebView*, void*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE drawCustomMenuItem(IWebView*, void*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE addCustomMenuDrawingData(IWebView*, OLE_HANDLE) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE cleanUpCustomMenuDrawingData(IWebView*, OLE_HANDLE) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE canTakeFocus(IWebView*, BOOL, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE takeFocus(IWebView*, BOOL) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE registerUndoWithTarget(IWebUndoTarget*, BSTR, IUnknown*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE removeAllActionsWithTarget(IWebUndoTarget*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setActionTitle(BSTR) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE undo() { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE redo() { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE canUndo(BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE canRedo(BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE printFrame(IWebView*, IWebFrame *) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE ftpDirectoryTemplatePath(IWebView*, BSTR*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE webViewHeaderHeight(IWebView*, float*);
- virtual HRESULT STDMETHODCALLTYPE webViewFooterHeight(IWebView*, float*);
- virtual HRESULT STDMETHODCALLTYPE drawHeaderInRect(IWebView*, RECT*, OLE_HANDLE);
- virtual HRESULT STDMETHODCALLTYPE drawFooterInRect(IWebView*, RECT*, OLE_HANDLE, UINT, UINT);
- virtual HRESULT STDMETHODCALLTYPE webViewPrintingMarginRect(IWebView*, RECT*);
- virtual HRESULT STDMETHODCALLTYPE canRunModal(IWebView*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE createModalDialog(IWebView*, IWebURLRequest*, IWebView**) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runModal(IWebView*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE isMenuBarVisible(IWebView*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE setMenuBarVisible(IWebView*, BOOL) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE runDatabaseSizeLimitPrompt(IWebView*, BSTR, IWebFrame*, BOOL*) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE paintCustomScrollbar(IWebView*, HDC, RECT, WebScrollBarControlSize, WebScrollbarControlState, WebScrollbarControlPart, BOOL, float, float, WebScrollbarControlPartMask) { return E_NOTIMPL; }
- virtual HRESULT STDMETHODCALLTYPE paintCustomScrollCorner(IWebView*, HDC, RECT) { return E_NOTIMPL; }
-
-private:
- int m_refCount;
-};
-
-#endif
diff --git a/Tools/WinLauncher/WinLauncher.cpp b/Tools/WinLauncher/WinLauncher.cpp
deleted file mode 100644
index 22deca615..000000000
--- a/Tools/WinLauncher/WinLauncher.cpp
+++ /dev/null
@@ -1,712 +0,0 @@
-/*
- * Copyright (C) 2006, 2008 Apple Computer, Inc. All rights reserved.
- * Copyright (C) 2009, 2011 Brent Fulgham. All rights reserved.
- * Copyright (C) 2009, 2010, 2011 Appcelerator, 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 "AccessibilityDelegate.h"
-#include "DOMDefaultImpl.h"
-#include "PrintWebUIDelegate.h"
-#include <WebKit/WebKitCOMAPI.h>
-#include <wtf/Platform.h>
-
-#if USE(CF)
-#include <CoreFoundation/CFRunLoop.h>
-#endif
-
-#include <assert.h>
-#include <commctrl.h>
-#include <commdlg.h>
-#include <objbase.h>
-#include <shellapi.h>
-#include <shlwapi.h>
-#include <string>
-#include <wininet.h>
-
-#define MAX_LOADSTRING 100
-#define URLBAR_HEIGHT 24
-
-// Global Variables:
-HINSTANCE hInst; // current instance
-HWND hMainWnd;
-HWND hURLBarWnd;
-WNDPROC DefEditProc = 0;
-WNDPROC DefWebKitProc = 0;
-IWebView* gWebView = 0;
-IWebViewPrivate* gWebViewPrivate = 0;
-HWND gViewWindow = 0;
-WinLauncherWebHost* gWebHost = 0;
-PrintWebUIDelegate* gPrintDelegate = 0;
-AccessibilityDelegate* gAccessibilityDelegate = 0;
-TCHAR szTitle[MAX_LOADSTRING]; // The title bar text
-TCHAR szWindowClass[MAX_LOADSTRING]; // the main window class name
-
-// Support moving the transparent window
-POINT s_windowPosition = { 100, 100 };
-SIZE s_windowSize = { 800, 400 };
-bool s_usesLayeredWebView = false;
-bool s_fullDesktop = false;
-
-// Forward declarations of functions included in this code module:
-ATOM MyRegisterClass(HINSTANCE hInstance);
-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);
-
-static bool usesLayeredWebView()
-{
- return s_usesLayeredWebView;
-}
-
-static bool shouldUseFullDesktop()
-{
- return s_fullDesktop;
-}
-
-class SimpleEventListener : public DOMEventListener {
-public:
- SimpleEventListener(LPWSTR type)
- {
- wcsncpy_s(m_eventType, 100, type, 100);
- m_eventType[99] = 0;
- }
-
- virtual HRESULT STDMETHODCALLTYPE handleEvent(IDOMEvent* evt)
- {
- wchar_t message[255];
- wcscpy_s(message, 255, m_eventType);
- wcscat_s(message, 255, L" event fired!");
- ::MessageBox(0, message, L"Event Handler", MB_OK);
- return S_OK;
- }
-
-private:
- wchar_t m_eventType[100];
-};
-
-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::didFailProvisionalLoadWithError(IWebView*, IWebError *error, IWebFrame*)
-{
- BSTR errorDescription = 0;
- HRESULT hr = error->localizedDescription(&errorDescription);
- if (FAILED(hr))
- errorDescription = L"Failed to load page and to localize error description.";
-
- ::MessageBoxW(0, static_cast<LPCWSTR>(errorDescription), L"Error", MB_APPLMODAL | MB_OK);
- if (SUCCEEDED(hr))
- SysFreeString(errorDescription);
-
- return S_OK;
-}
-
-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;
-}
-
-HRESULT WinLauncherWebHost::didFinishLoadForFrame(IWebView* webView, IWebFrame* frame)
-{
- IDOMDocument* doc = 0;
- frame->DOMDocument(&doc);
-
- IDOMElement* element = 0;
- IDOMEventTarget* target = 0;
- HRESULT hr = doc->getElementById(L"webkit logo", &element);
- if (!SUCCEEDED(hr))
- goto exit;
-
- hr = element->QueryInterface(IID_IDOMEventTarget, reinterpret_cast<void**>(&target));
- if (!SUCCEEDED(hr))
- goto exit;
-
- hr = target->addEventListener(L"click", new SimpleEventListener (L"webkit logo click"), FALSE);
- if (!SUCCEEDED(hr))
- goto exit;
-
-exit:
- if (target)
- target->Release();
- if (element)
- element->Release();
- if (doc)
- doc->Release();
-
- return hr;
-}
-
-static void resizeSubViews()
-{
- if (usesLayeredWebView() || !gViewWindow)
- return;
-
- 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);
-}
-
-static void subclassForLayeredWindow()
-{
- hMainWnd = gViewWindow;
-#if defined _M_AMD64 || defined _WIN64
- DefWebKitProc = reinterpret_cast<WNDPROC>(::GetWindowLongPtr(hMainWnd, GWLP_WNDPROC));
- ::SetWindowLongPtr(hMainWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(WndProc));
-#else
- DefWebKitProc = reinterpret_cast<WNDPROC>(::GetWindowLong(hMainWnd, GWL_WNDPROC));
- ::SetWindowLong(hMainWnd, GWL_WNDPROC, reinterpret_cast<LONG_PTR>(WndProc));
-#endif
-}
-
-static void computeFullDesktopFrame()
-{
- RECT desktop;
- if (!::SystemParametersInfo(SPI_GETWORKAREA, 0, static_cast<void*>(&desktop), 0))
- return;
-
- s_windowPosition.x = 0;
- s_windowPosition.y = 0;
- s_windowSize.cx = desktop.right - desktop.left;
- s_windowSize.cy = desktop.bottom - desktop.top;
-}
-
-BOOL WINAPI DllMain(HINSTANCE dllInstance, DWORD reason, LPVOID)
-{
- if (reason == DLL_PROCESS_ATTACH)
- hInst = dllInstance;
-
- return TRUE;
-}
-
-#if USE(CF)
-extern "C" void _CFRunLoopSetWindowsMessageQueueMask(CFRunLoopRef, uint32_t, CFStringRef);
-#endif
-
-extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(HINSTANCE, HINSTANCE, LPTSTR, int nCmdShow)
-{
-#ifdef _CRTDBG_MAP_ALLOC
- _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
- _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
-#endif
-
- // TODO: Place code here.
- MSG msg = {0};
- HACCEL hAccelTable;
-
- INITCOMMONCONTROLSEX InitCtrlEx;
-
- InitCtrlEx.dwSize = sizeof(INITCOMMONCONTROLSEX);
- InitCtrlEx.dwICC = 0x00004000; //ICC_STANDARD_CLASSES;
- InitCommonControlsEx(&InitCtrlEx);
-
- BSTR requestedURL = 0;
- int argc = 0;
- WCHAR** argv = CommandLineToArgvW(GetCommandLineW(), &argc);
- for (int i = 1; i < argc; ++i) {
- if (!wcsicmp(argv[i], L"--transparent"))
- s_usesLayeredWebView = true;
- else if (!wcsicmp(argv[i], L"--desktop"))
- s_fullDesktop = true;
- else if (!requestedURL)
- requestedURL = ::SysAllocString(argv[i]);
- }
-
- // Initialize global strings
- LoadString(hInst, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(hInst, IDC_WINLAUNCHER, szWindowClass, MAX_LOADSTRING);
- MyRegisterClass(hInst);
-
- if (shouldUseFullDesktop())
- computeFullDesktopFrame();
-
- // Init COM
- OleInitialize(NULL);
-
- if (usesLayeredWebView()) {
- hURLBarWnd = CreateWindow(L"EDIT", L"Type URL Here",
- WS_OVERLAPPEDWINDOW | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL,
- s_windowPosition.x, s_windowPosition.y + s_windowSize.cy, s_windowSize.cx, URLBAR_HEIGHT,
- 0,
- 0,
- hInst, 0);
- } else {
- hMainWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
- CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, 0, 0, hInst, 0);
-
- if (!hMainWnd)
- return FALSE;
-
- hURLBarWnd = CreateWindow(L"EDIT", 0,
- WS_CHILD | WS_VISIBLE | WS_BORDER | ES_LEFT | ES_AUTOVSCROLL,
- 0, 0, 0, 0,
- hMainWnd,
- 0,
- hInst, 0);
-
- ShowWindow(hMainWnd, nCmdShow);
- UpdateWindow(hMainWnd);
- }
-
-#if defined _M_AMD64 || defined _WIN64
- DefEditProc = reinterpret_cast<WNDPROC>(GetWindowLongPtr(hURLBarWnd, GWLP_WNDPROC));
- SetWindowLongPtr(hURLBarWnd, GWLP_WNDPROC, reinterpret_cast<LONG_PTR>(MyEditProc));
-#else
- DefEditProc = reinterpret_cast<WNDPROC>(GetWindowLong(hURLBarWnd, GWL_WNDPROC));
- SetWindowLong(hURLBarWnd, GWL_WNDPROC, reinterpret_cast<LONG_PTR>(MyEditProc));
-#endif
-
- SetFocus(hURLBarWnd);
-
- RECT clientRect = { s_windowPosition.x, s_windowPosition.y, s_windowPosition.x + s_windowSize.cx, s_windowPosition.y + s_windowSize.cy };
-
- IWebPreferences* tmpPreferences = 0;
- IWebPreferences* standardPreferences = 0;
- if (FAILED(WebKitCreateInstance(CLSID_WebPreferences, 0, IID_IWebPreferences, reinterpret_cast<void**>(&tmpPreferences))))
- goto exit;
-
- if (FAILED(tmpPreferences->standardPreferences(&standardPreferences)))
- goto exit;
-
- standardPreferences->setAcceleratedCompositingEnabled(TRUE);
- standardPreferences->setAVFoundationEnabled(TRUE);
-
- HRESULT hr = WebKitCreateInstance(CLSID_WebView, 0, IID_IWebView, reinterpret_cast<void**>(&gWebView));
- if (FAILED(hr))
- goto exit;
-
- hr = gWebView->QueryInterface(IID_IWebViewPrivate, reinterpret_cast<void**>(&gWebViewPrivate));
- if (FAILED(hr))
- goto exit;
-
- gWebHost = new WinLauncherWebHost();
- gWebHost->AddRef();
- hr = gWebView->setFrameLoadDelegate(gWebHost);
- if (FAILED(hr))
- goto exit;
-
- gPrintDelegate = new PrintWebUIDelegate;
- gPrintDelegate->AddRef();
- hr = gWebView->setUIDelegate(gPrintDelegate);
- if (FAILED (hr))
- goto exit;
-
- gAccessibilityDelegate = new AccessibilityDelegate;
- gAccessibilityDelegate->AddRef();
- hr = gWebView->setAccessibilityDelegate(gAccessibilityDelegate);
- if (FAILED (hr))
- goto exit;
-
- hr = gWebView->setHostWindow(reinterpret_cast<OLE_HANDLE>(hMainWnd));
- if (FAILED(hr))
- goto exit;
-
- hr = gWebView->initWithFrame(clientRect, 0, 0);
- if (FAILED(hr))
- goto exit;
-
- if (!requestedURL) {
- IWebFrame* frame;
- hr = gWebView->mainFrame(&frame);
- if (FAILED(hr))
- goto exit;
-
- static BSTR defaultHTML = SysAllocString(TEXT("<p style=\"background-color: #00FF00\">Testing</p><img id=\"webkit logo\" src=\"http://webkit.org/images/icon-gold.png\" alt=\"Face\"><div style=\"border: solid blue; background: white;\" contenteditable=\"true\">div with blue border</div><ul><li>foo<li>bar<li>baz</ul>"));
- frame->loadHTMLString(defaultHTML, 0);
- frame->Release();
- }
-
- hr = gWebViewPrivate->setTransparent(usesLayeredWebView());
- if (FAILED(hr))
- goto exit;
-
- hr = gWebViewPrivate->setUsesLayeredWindow(usesLayeredWebView());
- if (FAILED(hr))
- goto exit;
-
- hr = gWebViewPrivate->viewWindow(reinterpret_cast<OLE_HANDLE*>(&gViewWindow));
- if (FAILED(hr) || !gViewWindow)
- goto exit;
-
- if (usesLayeredWebView())
- subclassForLayeredWindow();
-
- resizeSubViews();
-
- ShowWindow(gViewWindow, nCmdShow);
- UpdateWindow(gViewWindow);
-
- hAccelTable = LoadAccelerators(hInst, MAKEINTRESOURCE(IDC_WINLAUNCHER));
-
- if (requestedURL) {
- loadURL(requestedURL);
- ::SysFreeString(requestedURL);
- requestedURL = 0;
- }
-
- // Main message loop:
-#if USE(CF)
- _CFRunLoopSetWindowsMessageQueueMask(CFRunLoopGetMain(), QS_ALLINPUT | QS_ALLPOSTMESSAGE, kCFRunLoopDefaultMode);
- CFRunLoopRun();
-#else
- while (GetMessage(&msg, NULL, 0, 0)) {
- if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- }
-#endif
-
-exit:
- gPrintDelegate->Release();
- if (gWebViewPrivate)
- gWebViewPrivate->Release();
- gWebView->Release();
- if (standardPreferences)
- standardPreferences->Release();
- tmpPreferences->Release();
-
- shutDownWebKit();
-#ifdef _CRTDBG_MAP_ALLOC
- _CrtDumpMemoryLeaks();
-#endif
-
- // Shut down COM.
- OleUninitialize();
-
- return static_cast<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);
-}
-
-static BOOL CALLBACK AbortProc(HDC hDC, int Error)
-{
- MSG msg;
- while (::PeekMessage(&msg, 0, 0, 0, PM_REMOVE)) {
- ::TranslateMessage(&msg);
- ::DispatchMessage(&msg);
- }
-
- return TRUE;
-}
-
-static HDC getPrinterDC()
-{
- PRINTDLG pdlg;
- memset(&pdlg, 0, sizeof(PRINTDLG));
- pdlg.lStructSize = sizeof(PRINTDLG);
- pdlg.Flags = PD_PRINTSETUP | PD_RETURNDC;
-
- ::PrintDlg(&pdlg);
-
- return pdlg.hDC;
-}
-
-static void initDocStruct(DOCINFO* di, TCHAR* docname)
-{
- memset(di, 0, sizeof(DOCINFO));
- di->cbSize = sizeof(DOCINFO);
- di->lpszDocName = docname;
-}
-
-void PrintView(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- HDC printDC = getPrinterDC();
- if (!printDC) {
- ::MessageBoxW(0, L"Error creating printing DC", L"Error", MB_APPLMODAL | MB_OK);
- return;
- }
-
- if (::SetAbortProc(printDC, AbortProc) == SP_ERROR) {
- ::MessageBoxW(0, L"Error setting up AbortProc", L"Error", MB_APPLMODAL | MB_OK);
- return;
- }
-
- IWebFrame* frame = 0;
- IWebFramePrivate* framePrivate = 0;
- if (FAILED(gWebView->mainFrame(&frame)))
- goto exit;
-
- if (FAILED(frame->QueryInterface(&framePrivate)))
- goto exit;
-
- framePrivate->setInPrintingMode(TRUE, printDC);
-
- UINT pageCount = 0;
- framePrivate->getPrintedPageCount(printDC, &pageCount);
-
- DOCINFO di;
- initDocStruct(&di, L"WebKit Doc");
- ::StartDoc(printDC, &di);
-
- // FIXME: Need CoreGraphics implementation
- void* graphicsContext = 0;
- for (size_t page = 1; page <= pageCount; ++page) {
- ::StartPage(printDC);
- framePrivate->spoolPages(printDC, page, page, graphicsContext);
- ::EndPage(printDC);
- }
-
- framePrivate->setInPrintingMode(FALSE, printDC);
-
- ::EndDoc(printDC);
- ::DeleteDC(printDC);
-
-exit:
- if (frame)
- frame->Release();
- if (framePrivate)
- framePrivate->Release();
-}
-
-static const int dragBarHeight = 30;
-
-LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
-{
- WNDPROC parentProc = usesLayeredWebView() ? DefWebKitProc : DefWindowProc;
-
- switch (message) {
- case WM_NCHITTEST:
- if (usesLayeredWebView()) {
- RECT window;
- ::GetWindowRect(hWnd, &window);
- // For testing our transparent window, we need a region to use as a handle for
- // dragging. The right way to do this would be to query the web view to see what's
- // under the mouse. However, for testing purposes we just use an arbitrary
- // 30 pixel band at the top of the view as an arbitrary gripping location.
- //
- // When we are within this bad, return HT_CAPTION to tell Windows we want to
- // treat this region as if it were the title bar on a normal window.
- int y = HIWORD(lParam);
-
- if ((y > window.top) && (y < window.top + dragBarHeight))
- return HTCAPTION;
- }
- return CallWindowProc(parentProc, hWnd, message, wParam, lParam);
- case WM_COMMAND: {
- int wmId = LOWORD(wParam);
- int 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;
- case IDM_PRINT:
- PrintView(hWnd, message, wParam, lParam);
- break;
- default:
- return CallWindowProc(parentProc, hWnd, message, wParam, lParam);
- }
- }
- break;
- case WM_DESTROY:
- PostQuitMessage(0);
- break;
- case WM_SIZE:
- if (!gWebView || usesLayeredWebView())
- return CallWindowProc(parentProc, hWnd, message, wParam, lParam);
-
- resizeSubViews();
- break;
- default:
- return CallWindowProc(parentProc, 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;
- }
-}
-
-
-// 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 = 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)))
- SysReAllocString(&urlBStr, fileURL);
- }
-
- HRESULT hr = gWebView->mainFrame(&frame);
- if (FAILED(hr))
- goto exit;
-
- hr = WebKitCreateInstance(CLSID_WebMutableURLRequest, 0, IID_IWebMutableURLRequest, (void**)&request);
- if (FAILED(hr))
- goto exit;
-
- hr = request->initWithURL(urlBStr, WebURLRequestUseProtocolCachePolicy, 60);
- 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/Tools/WinLauncher/WinLauncher.h b/Tools/WinLauncher/WinLauncher.h
deleted file mode 100644
index 04c2b493b..000000000
--- a/Tools/WinLauncher/WinLauncher.h
+++ /dev/null
@@ -1,119 +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/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*);
-
- 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 didChangeIcons(
- /* [in] */ IWebView *webView,
- /* [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*/);
-
- 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; }
-
- virtual /* [local] */ HRESULT STDMETHODCALLTYPE didClearWindowObject(
- /* [in] */ IWebView *webView,
- /* [in] */ JSContextRef context,
- /* [in] */ JSObjectRef windowScriptObject,
- /* [in] */ IWebFrame *frame) { return S_OK; }
-
- // WinLauncherWebHost
-
-protected:
- HRESULT updateAddressBar(IWebView* webView);
-
-protected:
- ULONG m_refCount;
-};
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.exe.manifest b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.exe.manifest
deleted file mode 100644
index ca71e47f6..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.exe.manifest
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
-<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
- <assemblyIdentity
- version="1.0.0.0"
- processorArchitecture="X86"
- name="apple.WebKit.WinLauncher.exe"
- type="win32"
- />
- <description>WinLauncher Test Utility</description>
- <dependency>
- <dependentAssembly>
- <assemblyIdentity
- type="win32"
- name="Microsoft.Windows.Common-Controls"
- version="6.0.0.0"
- processorArchitecture="X86"
- publicKeyToken="6595b64144ccf1df"
- language="*"
- />
- </dependentAssembly>
- </dependency>
- <dependency>
- <dependentAssembly>
- <assemblyIdentity
- type="win32"
- name="Microsoft.VC80.CRT"
- version="8.0.50727.6195"
- processorArchitecture="x86"
- publicKeyToken="1fc8b3b9a1e18e3b"
- />
- </dependentAssembly>
- </dependency>
-
- <!-- Set application to run with user privilege but no virtualization. -->
- <trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
- <security>
- <requestedPrivileges>
- <requestedExecutionLevel
- level="asInvoker"
- uiAccess="false"
- />
- </requestedPrivileges>
- </security>
- </trustInfo>
-</assembly>
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.ico b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.ico
deleted file mode 100644
index d551aa3aa..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.ico
+++ /dev/null
Binary files differ
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.rc b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.rc
deleted file mode 100644
index 51360d512..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.rc
+++ /dev/null
@@ -1,76 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "WinLauncherResource.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"
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "WinLauncherResource.\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
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj
deleted file mode 100644
index 4d4f250e9..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj
+++ /dev/null
@@ -1,183 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{767B10FB-76C1-44D0-8005-85ED7F9AA5E4}</ProjectGuid>
- <RootNamespace>WinLauncherLauncher</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClInclude Include="WinLauncherResource.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\win\DLLLauncher\DLLLauncherMain.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="WinLauncher.rc" />
- </ItemGroup>
- <ItemGroup>
- <None Include="WinLauncher.ico" />
- <None Include="WinLauncherPostBuild.cmd" />
- <None Include="WinLauncherPreBuild.cmd" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters
deleted file mode 100644
index dc24a83ac..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncher.vcxproj.filters
+++ /dev/null
@@ -1,33 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="WinLauncherResource.h" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\..\win\DLLLauncher\DLLLauncherMain.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="WinLauncher.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
- <ItemGroup>
- <None Include="WinLauncher.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="WinLauncherPostBuild.cmd" />
- <None Include="WinLauncherPreBuild.cmd" />
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props
deleted file mode 100644
index 081981bb7..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCF.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup>
- <Link>
- <AdditionalDependencies>CoreFoundation$(DebugSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props
deleted file mode 100644
index cd3b5dd84..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCFLite.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup>
- <Link>
- <AdditionalDependencies>CFLite.lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props
deleted file mode 100644
index 6ac3876e7..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherCommon.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemDefinitionGroup>
- <Link>
- <AdditionalDependencies>shlwapi.lib;%(AdditionalDependencies)</AdditionalDependencies>
- <OutputFile>$(OutDir)WinLauncher$(DebugSuffix).exe</OutputFile>
- <ProgramDatabaseFile>$(TargetDir)$(TargetName).pdb</ProgramDatabaseFile>
- </Link>
- <ClCompile />
- <ClCompile />
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props
deleted file mode 100644
index 9ab27449a..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="WinLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc
deleted file mode 100644
index 8a101ea2a..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.rc
+++ /dev/null
@@ -1,137 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "WinLauncherLibResource.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 "&Print\tCtrl-P", IDM_PRINT
- 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.2",IDC_STATIC,49,10,119,8,SS_NOPREFIX
- LTEXT "Copyright (C) 2009",IDC_STATIC,49,20,119,8
- DEFPUSHBUTTON "OK",IDOK,195,6,30,11,WS_GROUP
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-1 TEXTINCLUDE
-BEGIN
- "WinLauncherLibResource.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/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj
deleted file mode 100644
index 3b7c891be..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj
+++ /dev/null
@@ -1,217 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{114FCA11-216B-4C8C-957E-30A75AE80443}</ProjectGuid>
- <RootNamespace>WinLauncher</RootNamespace>
- <Keyword>Win32Proj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>DynamicLibrary</ConfigurationType>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibRelease.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibRelease.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibRelease.props" />
- <Import Project="WinLauncherCFLite.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibRelease.props" />
- <Import Project="WinLauncherCFLite.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibProduction.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibProduction.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCF.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCFLite.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCFLite.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCF.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="WinLauncherLibDebug.props" />
- <Import Project="WinLauncherCF.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup>
- <_ProjectFileVersion>10.0.40219.1</_ProjectFileVersion>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="small.ico" />
- <None Include="WinLauncher.ico" />
- <None Include="WinLauncherLibPostBuild.cmd" />
- <None Include="WinLauncherLibPreBuild.cmd" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\AccessibilityDelegate.cpp" />
- <ClCompile Include="..\PrintWebUIDelegate.cpp" />
- <ClCompile Include="..\stdafx.cpp">
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Production|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">Create</PrecompiledHeader>
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">Create</PrecompiledHeader>
- </ClCompile>
- <ClCompile Include="..\WinLauncher.cpp" />
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\AccessibilityDelegate.h" />
- <ClInclude Include="..\DOMDefaultImpl.h" />
- <ClInclude Include="..\PrintWebUIDelegate.h" />
- <ClInclude Include="..\stdafx.h" />
- <ClInclude Include="..\WinLauncher.h" />
- <ClInclude Include="WinLauncherLibResource.h" />
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="WinLauncherLib.rc" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters
deleted file mode 100644
index d2aaf4788..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLib.vcxproj.filters
+++ /dev/null
@@ -1,66 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <Filter Include="Source Files">
- <UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
- <Extensions>cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
- </Filter>
- <Filter Include="Header Files">
- <UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
- <Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
- </Filter>
- <Filter Include="Resource Files">
- <UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
- <Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
- </Filter>
- </ItemGroup>
- <ItemGroup>
- <None Include="small.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="WinLauncher.ico">
- <Filter>Resource Files</Filter>
- </None>
- <None Include="WinLauncherLibPostBuild.cmd" />
- <None Include="WinLauncherLibPreBuild.cmd" />
- </ItemGroup>
- <ItemGroup>
- <ClCompile Include="..\PrintWebUIDelegate.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\stdafx.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\WinLauncher.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- <ClCompile Include="..\AccessibilityDelegate.cpp">
- <Filter>Source Files</Filter>
- </ClCompile>
- </ItemGroup>
- <ItemGroup>
- <ClInclude Include="..\DOMDefaultImpl.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\PrintWebUIDelegate.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\stdafx.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\WinLauncher.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="WinLauncherLibResource.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- <ClInclude Include="..\AccessibilityDelegate.h">
- <Filter>Header Files</Filter>
- </ClInclude>
- </ItemGroup>
- <ItemGroup>
- <ResourceCompile Include="WinLauncherLib.rc">
- <Filter>Resource Files</Filter>
- </ResourceCompile>
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props
deleted file mode 100644
index 7bacfc67a..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibCommon.props
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <PropertyGroup>
- <TargetName>WinLauncher</TargetName>
- </PropertyGroup>
- <ItemDefinitionGroup>
- <ClCompile>
- <AdditionalIncludeDirectories>$(ProjectDir)\..;$(ConfigurationBuildDir)\include\WebKit;$(ConfigurationBuildDir)\Include\private;$(ConfigurationBuildDir)\Include;$(ConfigurationBuildDir)\Include\WebCore;$(ConfigurationBuildDir)\Include\WebCore\ForwardingHeaders;$(ConfigurationBuildDir)\Include\JavaScriptCore;$(ConfigurationBuildDir)\obj\WebKit\DerivedSources;$(WebKit_Libraries)\Include;$(WebKit_Libraries)\Include\private;$(WebKit_Libraries)\Include\WebCore;$(WebKit_Libraries)\Include\WebCore\ForwardingHeaders;$(WebKit_Libraries)\Include\JavaScriptCore;$(IntDir)Include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
- <PrecompiledHeader>Use</PrecompiledHeader>
- <PrecompiledHeaderFile>StdAfx.h</PrecompiledHeaderFile>
- </ClCompile>
- <Link>
- <AdditionalDependencies>comdlg32.lib;gdi32.lib;comctl32.lib;shlwapi.lib;user32.lib;ole32.lib;oleaut32.lib;WebKitGUID$(DebugSuffix).lib;WebKit$(DebugSuffix).lib;%(AdditionalDependencies)</AdditionalDependencies>
- </Link>
- </ItemDefinitionGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props
deleted file mode 100644
index e11bc1c16..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibDebug.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="WinLauncherLibCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props
deleted file mode 100644
index 9b26e6a27..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="WinLauncherLibCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props
deleted file mode 100644
index f4f0019d2..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="WinLauncherLibCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h
deleted file mode 100644
index c98fac7ea..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherLibResource.h
+++ /dev/null
@@ -1,28 +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 IDM_PRINT 106
-#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/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd
deleted file mode 100644
index 26707cac6..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPostBuild.cmd
+++ /dev/null
@@ -1 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" del "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd
deleted file mode 100644
index a77077674..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherPreBuild.cmd
+++ /dev/null
@@ -1,6 +0,0 @@
-%SystemDrive%\cygwin\bin\which.exe bash
-if errorlevel 1 set PATH=%SystemDrive%\cygwin\bin;%PATH%
-cmd /c
-if exist "%CONFIGURATIONBUILDDIR%\buildfailed" grep XX%PROJECTNAME%XX "%CONFIGURATIONBUILDDIR%\buildfailed"
-if errorlevel 1 exit 1
-echo XX%PROJECTNAME%XX > "%CONFIGURATIONBUILDDIR%\buildfailed"
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props
deleted file mode 100644
index 0dbbf1345..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherProduction.props
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="WinLauncherCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props
deleted file mode 100644
index 45251b824..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherRelease.props
+++ /dev/null
@@ -1,8 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="WinLauncherCommon.props" />
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h b/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h
deleted file mode 100644
index c73f20f2d..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/WinLauncherResource.h
+++ /dev/null
@@ -1,20 +0,0 @@
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by WinLauncherLauncher.rc
-//
-#define IDD_WINLAUNCHER_DIALOG 102
-#define IDI_WINLAUNCHER 107
-#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/Tools/WinLauncher/WinLauncher.vcxproj/small.ico b/Tools/WinLauncher/WinLauncher.vcxproj/small.ico
deleted file mode 100644
index d551aa3aa..000000000
--- a/Tools/WinLauncher/WinLauncher.vcxproj/small.ico
+++ /dev/null
Binary files differ
diff --git a/Tools/WinLauncher/resource.h b/Tools/WinLauncher/resource.h
deleted file mode 100644
index c98fac7ea..000000000
--- a/Tools/WinLauncher/resource.h
+++ /dev/null
@@ -1,28 +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 IDM_PRINT 106
-#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/Tools/WinLauncher/stdafx.cpp b/Tools/WinLauncher/stdafx.cpp
deleted file mode 100644
index 541dcb158..000000000
--- a/Tools/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/Tools/WinLauncher/stdafx.h b/Tools/WinLauncher/stdafx.h
deleted file mode 100644
index b38e221db..000000000
--- a/Tools/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 SP2 or later.
-#define WINVER 0x0502 // Change this to the appropriate value to target other versions of Windows.
-#endif
-
-#ifndef _WIN32_WINNT // Allow use of features specific to Windows XP SP2 or later.
-#define _WIN32_WINNT 0x0502 // 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/Tools/clang/ReportMemoryUsagePlugin/CMakeLists.txt b/Tools/clang/ReportMemoryUsagePlugin/CMakeLists.txt
deleted file mode 100644
index 1cc4783d0..000000000
--- a/Tools/clang/ReportMemoryUsagePlugin/CMakeLists.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-set(MODULE TRUE)
-
-set(LLVM_LINK_COMPONENTS support mc)
-
-add_clang_library(ReportMemoryUsage ReportMemoryUsage.cpp)
-
-target_link_libraries(ReportMemoryUsage
- clangFrontend
- clangAST
- )
-
-set_target_properties(ReportMemoryUsage
- PROPERTIES
- LINKER_LANGUAGE CXX
- PREFIX "")
diff --git a/Tools/clang/ReportMemoryUsagePlugin/Makefile b/Tools/clang/ReportMemoryUsagePlugin/Makefile
deleted file mode 100644
index 97fae1f32..000000000
--- a/Tools/clang/ReportMemoryUsagePlugin/Makefile
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is building the plugin for clang in chromium checkout.
-
-# This file requires the clang build system, at least for now. So to use this
-# Makefile, you should execute the following commands to copy this directory
-# into a clang checkout:
-#
-# cp -R <this directory> chromium/src/third_party/llvm/tools/clang/tools/report-memory-usage-plugin
-# cd chromium/src/third_party/llvm/tools/clang/tools/report-memory-usage-plugin
-# make
-#
-# It can be run with clang build with help of these clang flags:
-#
-# -Xclang -load \
-# -Xclang <plugin-libs-dir>/libReportMemoryUsage.so \
-# -Xclang -plugin \
-# -Xclang report-memory-usage
-
-CLANG_LEVEL := ../..
-LIBRARYNAME = ReportMemoryUsage
-
-LINK_LIBS_IN_SHARED = 0
-SHARED_LIBRARY = 1
-
-include $(CLANG_LEVEL)/Makefile
-
-ifeq ($(OS),Darwin)
- LDFLAGS=-Wl,-undefined,dynamic_lookup
-endif
-
-BD=../../../../Release+Asserts
-SRC_DIR=../../../../../llvm/tools/clang/tools/report-memory-usage-plugin
-
-test: all
- @${BD}/bin/clang++ \
- -D_GNU_SOURCE \
- -D_DEBUG \
- -D__STDC_CONSTANT_MACROS \
- -D__STDC_FORMAT_MACROS \
- -D__STDC_LIMIT_MACROS \
- -D_GNU_SOURCE \
- -I${BD}/tools/clang/include \
- -Itools/clang/include \
- -I${BD}/include \
- -Iinclude \
- ${SRC_DIR}/tests/Source/WebCore/Test.cpp \
- -fsyntax-only \
- -Xclang -load \
- -Xclang ${BD}/lib/lib${LIBRARYNAME}.so \
- -Xclang -plugin \
- -Xclang report-memory-usage
-
diff --git a/Tools/clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp b/Tools/clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp
deleted file mode 100644
index f30994765..000000000
--- a/Tools/clang/ReportMemoryUsagePlugin/ReportMemoryUsage.cpp
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-#include "clang/AST/AST.h"
-#include "clang/AST/ASTConsumer.h"
-#include "clang/AST/RecursiveASTVisitor.h"
-#include "clang/Frontend/CompilerInstance.h"
-#include "clang/Frontend/FrontendPluginRegistry.h"
-#include "llvm/Support/raw_ostream.h"
-
-using namespace clang;
-
-namespace {
-
-using namespace std;
-typedef vector<string> Strings;
-
-Strings instrumentationMethods;
-const char instrumentingMethodName[] = "reportMemoryUsage";
-
-class AddMemberCallVisitor : public RecursiveASTVisitor<AddMemberCallVisitor> {
-public:
-
- bool VisitCallExpr(CallExpr*);
- const Strings& instrumentedMembers() const { return m_instrumentedMembers; }
-
-private:
- Strings m_instrumentedMembers;
-};
-
-class ReportMemoryUsageVisitor : public RecursiveASTVisitor<ReportMemoryUsageVisitor> {
-public:
- explicit ReportMemoryUsageVisitor(CompilerInstance& instance, ASTContext* context)
- : m_instance(instance)
- , m_context(context) { }
-
- bool VisitCXXMethodDecl(clang::CXXMethodDecl*);
-
-private:
- void emitWarning(SourceLocation, const char* rawError);
- CXXMethodDecl* findInstrumentationMethod(CXXRecordDecl*);
- bool needsToBeInstrumented(const Type*);
- void checkMembersCoverage(const CXXRecordDecl* instrumentedClass, const Strings& instrumentedMembers, SourceLocation);
-
- CompilerInstance& m_instance;
- ASTContext* m_context;
-};
-
-class ReportMemoryUsageConsumer : public ASTConsumer {
-public:
- explicit ReportMemoryUsageConsumer(CompilerInstance& instance, ASTContext* context)
- : m_visitor(instance, context)
- {
- instrumentationMethods.push_back("addMember");
- instrumentationMethods.push_back("addRawBuffer");
- instrumentationMethods.push_back("addWeakPointer");
- instrumentationMethods.push_back("ignoreMember");
- }
-
- virtual void HandleTranslationUnit(clang::ASTContext& context)
- {
- m_visitor.TraverseDecl(context.getTranslationUnitDecl());
- }
-
-private:
- ReportMemoryUsageVisitor m_visitor;
-};
-
-class ReportMemoryUsageAction : public PluginASTAction {
-protected:
- ASTConsumer* CreateASTConsumer(CompilerInstance& CI, llvm::StringRef)
- {
- return new ReportMemoryUsageConsumer(CI, &CI.getASTContext());
- }
-
- bool ParseArgs(const CompilerInstance& CI, const vector<string>& args)
- {
- if (args.size() && args[0] == "help")
- llvm::errs() << m_helpText;
- return true;
- }
-
- static const char* m_helpText;
-};
-
-const char* ReportMemoryUsageAction::m_helpText =
- "This plugin is checking native memory instrumentation code.\n"
- "The class is instrumented if it has reportMemoryUsage member function.\n"
- "Sample:\n"
- "class InstrumentedClass : public BaseInstrumentedClass {\n"
- "public:\n"
- " void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const\n"
- " {\n"
- " MemoryClassInfo info(memoryObjectInfo, this, WebCoreMemoryTypes::DOM);\n"
- " BaseInstrumentedClass::reportMemoryUsage(memoryObjectInfo);\n"
- " info.addMember(m_notInstrumentedObject);\n"
- " info.addMember(m_instrumentedObject);\n"
- " info.addRawBuffer(m_pointer, m_length);\n"
- " info.ignoreMember(m_pointerToInternalField);\n"
- " }\n"
- "\n"
- "private:\n"
- " NotInstrumentedClass* m_notInstrumentedPtr;\n"
- " InstrumentedClass m_instrumentedObject;\n"
- " long m_length;\n"
- " double* m_pointer;\n"
- " Data* m_pointerToInternalField;\n"
- "}\n";
-
-bool AddMemberCallVisitor::VisitCallExpr(CallExpr* callExpr)
-{
- CXXMemberCallExpr* methodCallExpr = dyn_cast<CXXMemberCallExpr>(callExpr);
- bool instrumented = false;
- if (methodCallExpr) {
- string methodName = methodCallExpr->getMethodDecl()->getNameAsString();
- Strings::iterator i = find(instrumentationMethods.begin(), instrumentationMethods.end(), methodName);
- instrumented = i != instrumentationMethods.end();
- }
- if (instrumented || !methodCallExpr) {
- for (CallExpr::arg_iterator i = callExpr->arg_begin(); i != callExpr->arg_end(); ++i) {
- Expr* expr = *i;
- while (ImplicitCastExpr::classof(expr))
- expr = static_cast<ImplicitCastExpr*>(expr)->getSubExpr();
- if (MemberExpr* memberExpr = dyn_cast<MemberExpr>(expr))
- m_instrumentedMembers.push_back(memberExpr->getMemberNameInfo().getAsString());
- }
- }
- return true;
-}
-
-bool ReportMemoryUsageVisitor::VisitCXXMethodDecl(clang::CXXMethodDecl* decl)
-{
- if (decl->doesThisDeclarationHaveABody() && decl->getNameAsString() == instrumentingMethodName) {
- FullSourceLoc fullLocation = m_context->getFullLoc(decl->getLocStart());
- if (fullLocation.isValid()) {
- AddMemberCallVisitor visitor;
- visitor.TraverseStmt(decl->getBody());
- checkMembersCoverage(decl->getParent(), visitor.instrumentedMembers(), decl->getLocStart());
- }
- }
- return true;
-}
-
-void ReportMemoryUsageVisitor::emitWarning(SourceLocation loc, const char* rawError)
-{
- FullSourceLoc full(loc, m_instance.getSourceManager());
- string err("[webkit-style] ");
- err += rawError;
- DiagnosticsEngine& diagnostic = m_instance.getDiagnostics();
- DiagnosticsEngine::Level level = diagnostic.getWarningsAsErrors() ? DiagnosticsEngine::Error : DiagnosticsEngine::Warning;
- unsigned id = diagnostic.getCustomDiagID(level, err);
- DiagnosticBuilder builder = diagnostic.Report(full, id);
-}
-
-CXXMethodDecl* ReportMemoryUsageVisitor::findInstrumentationMethod(CXXRecordDecl* record)
-{
- for (CXXRecordDecl::method_iterator m = record->method_begin(); m != record->method_end(); ++m) {
- if (m->getNameInfo().getAsString() == instrumentingMethodName)
- return *m;
- }
- return 0;
-}
-
-bool ReportMemoryUsageVisitor::needsToBeInstrumented(const Type* type)
-{
- if (type->isBuiltinType())
- return false;
- if (type->isEnumeralType())
- return false;
- if (type->isClassType()) {
- const RecordType* recordType = dyn_cast<RecordType>(type);
- if (recordType) {
- CXXRecordDecl* decl = dyn_cast<CXXRecordDecl>(recordType->getDecl());
- if (decl->getNameAsString() == "String")
- return true;
- if (!decl || !findInstrumentationMethod(decl))
- return false;
- }
- }
- if (type->isArrayType()) {
- const ArrayType* arrayType = dyn_cast<const ArrayType>(type);
- return needsToBeInstrumented(arrayType->getElementType().getTypePtr());
- }
- return true;
-}
-
-void ReportMemoryUsageVisitor::checkMembersCoverage(const CXXRecordDecl* instrumentedClass, const Strings& instrumentedMembers, SourceLocation location)
-{
- for (CXXRecordDecl::field_iterator i = instrumentedClass->field_begin(); i != instrumentedClass->field_end(); ++i) {
- string fieldName = i->getNameAsString();
- if (find(instrumentedMembers.begin(), instrumentedMembers.end(), fieldName) == instrumentedMembers.end()) {
- if (!needsToBeInstrumented(i->getType().getTypePtr()))
- continue;
- emitWarning(i->getSourceRange().getBegin(), "class member needs to be instrumented in reportMemoryUsage function");
- emitWarning(location, "located here");
- }
- }
-}
-
-} // namespace
-
-static FrontendPluginRegistry::Add<ReportMemoryUsageAction>
-X("report-memory-usage", "Checks reportMemoryUsage function consistency");
-
diff --git a/Tools/clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp b/Tools/clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp
deleted file mode 100644
index cc593e6e1..000000000
--- a/Tools/clang/ReportMemoryUsagePlugin/tests/Source/WebCore/Test.cpp
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2012 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.
- */
-
-namespace aNamespace {
-
-class MemoryInstrumentation {
-public:
- enum ObjectType {
- DOM
- };
-};
-
-class MemoryObjectInfo {
-};
-
-template <typename T>
-class MemoryClassInfo {
-public:
- MemoryClassInfo(MemoryObjectInfo*, const T*, MemoryInstrumentation::ObjectType) { }
- template <typename M> void addMember(M&) { }
- template <typename M> void addInstrumentedMember(M&) { }
-};
-
-// ------ Mocked types
-template <typename T>
-class OwnPtr {
-public:
- OwnPtr(T* ptr) : m_ptr(ptr) { }
-private:
- T* m_ptr;
-};
-
-template <typename T>
-class RefPtr {
-public:
- RefPtr(T* ptr) : m_ptr(ptr) { }
-private:
- T* m_ptr;
-};
-
-template <typename T>
-class Vector {
-private:
- T* m_data;
-};
-
-class String {
-private:
- char* m_data;
-};
-
-// ------ User defined types
-class NotInstrumentedClass {
-public:
- int m_array[10];
-};
-
-class InstrumentedClass {
-public:
- virtual void reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
- {
- MemoryClassInfo<InstrumentedClass> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
- info.addMember(m_notInstrumentedPtrReportedNoWarning);
- info.addInstrumentedMember(m_instrumentedPtrReportedNoWarning);
- }
-
-private:
-
- // have to be skipped even if not reported
- int m_PODNotReportedNoWarning;
- int m_arrayNotReportedNoWarning[10];
- NotInstrumentedClass m_notInstrumentedNotReportedNoWarning;
- NotInstrumentedClass m_notInstrumentedArrayNotReportedNoWarning[10];
- enum { None } m_enumNotReportedNoWarning;
- bool m_boolNotReportedNoWarning;
-
- // reported
- NotInstrumentedClass* m_notInstrumentedPtrReportedNoWarning;
- InstrumentedClass* m_instrumentedPtrReportedNoWarning;
-
- // reported
- InstrumentedClass* m_instrumentedPtrNotReportedWarning;
- int* m_rawBufferNotReportedWarning;
- int* m_intPtrArrayNotReportedWarning[10];
- NotInstrumentedClass* m_objPtrArrayNotReportedWarning[10];
- OwnPtr<NotInstrumentedClass> m_ownPtrNotReportedWarning;
- RefPtr<NotInstrumentedClass> m_refPtrNotReportedWarning;
- String m_stringNotReportedWarning;
- Vector<NotInstrumentedClass> m_vectorNotReportedWarning;
-};
-
-}
-
-using namespace aNamespace;
-
-namespace {
-
-class InstrumentedChildClass : public aNamespace::InstrumentedClass {
-public:
- virtual void reportMemoryUsage(MemoryObjectInfo*) const;
-};
-
-void InstrumentedChildClass::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
-{
- MemoryClassInfo<InstrumentedChildClass> info(memoryObjectInfo, this, MemoryInstrumentation::DOM);
-}
-
-}
-
-class InstrumentedChildChildClass : public InstrumentedChildClass {
-public:
- virtual void reportMemoryUsage(MemoryObjectInfo*) const;
-};
-
-void InstrumentedChildChildClass::reportMemoryUsage(MemoryObjectInfo*) const
-{
-}
-
-int aGlobalVariable = 0;
-
-int main(int argc, char** argv)
-{
- return 0;
-}
diff --git a/Tools/efl/common.py b/Tools/efl/common.py
deleted file mode 100644
index 77657b3f8..000000000
--- a/Tools/efl/common.py
+++ /dev/null
@@ -1,31 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import os
-
-script_dir = None
-
-
-def script_path(*args):
- global script_dir
- if not script_dir:
- script_dir = os.path.join(os.path.dirname(__file__), '..', 'Scripts')
- return os.path.join(*(script_dir,) + args)
-
-
-def top_level_path(*args):
- return os.path.join(*((script_path('..', '..'),) + args))
diff --git a/Tools/efl/install-dependencies b/Tools/efl/install-dependencies
deleted file mode 100755
index 6270b851f..000000000
--- a/Tools/efl/install-dependencies
+++ /dev/null
@@ -1,75 +0,0 @@
-#!/bin/bash
-
-# This script needs to be run with root rights.
-if [ $UID -ne 0 ]; then
- sudo $0
- exit 0
-fi
-
-function printNotSupportedMessageAndExit() {
- echo
- echo "Currently this script only works for distributions supporting apt-get."
- echo "Please add support for your distribution."
- echo
- exit 1
-}
-
-function checkInstaller {
- # apt-get - Debian based distributions
- apt-get --version &> /dev/null
- if [ $? -eq 0 ]; then
- installDependenciesWithApt
- exit 0
- fi
-
- printNotSupportedMessageAndExit
-}
-
-function installDependenciesWithApt {
- # These are dependencies necessary for building WebKitEFL.
- apt-get install \
- bison \
- cmake \
- flex \
- g++ \
- gperf \
- gtk-doc-tools \
- subversion \
- ruby \
- libicu-dev \
- libxslt1-dev \
- libsqlite3-dev \
- libjpeg-dev \
- libpng-dev \
- libxt-dev \
- libgl1-mesa-dev \
- libgnutls-dev \
- libdbus-1-dev \
- libudev-dev \
- liblua5.1-0-dev \
- ragel \
- libfreetype6-dev \
- libffi-dev \
- libtiff4-dev \
- libenchant-dev \
- libxcomposite-dev \
- libatk1.0-dev \
- libtheora-dev \
- libvorbis-dev \
- libfaad-dev \
- libpulse-dev \
- libxrender-dev \
- libp11-kit-dev \
- libgpg-error-dev \
- libgcrypt11-dev
-
- # These are dependencies necessary for running tests.
- apt-get install \
- apache2 \
- libapache2-mod-php5 \
- libruby \
- xvfb
-}
-
-checkInstaller
-
diff --git a/Tools/efl/jhbuild.modules b/Tools/efl/jhbuild.modules
deleted file mode 100644
index 53e2d2a41..000000000
--- a/Tools/efl/jhbuild.modules
+++ /dev/null
@@ -1,346 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
-<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
-<moduleset>
-
- <metamodule id="webkitefl-testing-dependencies">
- <dependencies>
- <dep package="cairo"/>
- <dep package="fonts"/>
- <dep package="fontconfig"/>
- <dep package="freetype6"/>
- <dep package="harfbuzz"/>
- <dep package="glib"/>
- <dep package="glib-networking"/>
- <dep package="libsoup"/>
- <dep package="edje"/>
- <dep package="e_dbus"/>
- <dep package="eeze"/>
- <dep package="efreet"/>
- <dep package="elementary"/>
- <dep package="libxml2"/>
- <dep package="gstreamer"/>
- <dep package="gst-plugins-base"/>
- <dep package="gst-plugins-good"/>
- <dep package="gst-plugins-bad"/>
- <dep package="gst-libav"/>
- <dep package="libseccomp"/>
- <dep package="atk"/>
- </dependencies>
- </metamodule>
-
- <repository type="tarball" name="github.com"
- href="https://github.com"/>
- <repository type="tarball" name="sourceware.org"
- href="ftp://sourceware.org"/>
- <repository type="tarball" name="ftp.gnome.org"
- href="http://ftp.gnome.org"/>
- <repository type="git" name="git.gnome.org"
- href="git://git.gnome.org/"/>
- <repository type="tarball" name="cairographics.org"
- href="http://cairographics.org"/>
- <repository type="tarball" name="freedesktop.org"
- href="http://www.freedesktop.org"/>
- <repository type="tarball" name="enlightenment.fr"
- href="http://git.enlightenment.fr/cgit.cgi/svn/"/>
- <repository type="tarball" name="xmlsoft.org"
- href="ftp://xmlsoft.org"/>
- <repository type="tarball" name="download.enlightenment.org"
- href="http://download.enlightenment.org"/>
- <repository type="tarball" name="gstreamer"
- href="http://gstreamer.freedesktop.org/src/"/>
- <repository type="git" name="git.code.sf.net"
- href="git://git.code.sf.net/p/"/>
-
- <autotools id="cairo" autogen-sh="configure">
- <dependencies>
- <dep package="fontconfig"/>
- <dep package="pixman"/>
- </dependencies>
- <branch module="releases/cairo-1.12.4.tar.xz" version="1.12.4"
- repo="cairographics.org"
- hash="sha256:a467b2e1f04bfd3f848370ce5e82cfe0a7f712bac05a04d133bc34c94f677a28"
- md5sum="a64bb8774a1e476e5cdd69e635794dfb">
- </branch>
- </autotools>
-
- <autotools id="pixman" autogen-sh="configure"
- autogenargs="--enable-gtk=no">
- <branch module="releases/pixman-0.24.0.tar.gz" version="0.24.0"
- repo="cairographics.org"
- hash="sha256:a5647c7158f103eedff5fba799018f4169f6b26b573ab7685812ebc9a1c5d2e4"
- md5sum="a2d0b120509bdccb10aa7f4bec3730e4">
- </branch>
- </autotools>
-
- <autotools id="fonts"
- skip-autogen="true">
- <branch module="downloads/mrobinson/webkitgtk-test-fonts/webkitgtk-test-fonts-0.0.3.tar.gz" version="0.0.3"
- repo="github.com"
- hash="sha256:4a0a01f00855997cdcc7201f164b33a4e4144e8eadf40a5e542a1c448e035de5"
- md5sum="10e74de1a8ba961d9037994d427b1dd2" size="16981642">
- </branch>
- </autotools>
-
- <autotools id="libffi" autogen-sh="configure">
- <branch module="/pub/libffi/libffi-3.0.11.tar.gz" version="3.0.11"
- repo="sourceware.org"
- hash="sha256:70bfb01356360089aa97d3e71e3edf05d195599fd822e922e50d46a0055a6283"
- md5sum="f69b9693227d976835b4857b1ba7d0e3"/>
- </autotools>
-
- <tarball id="freetype6">
- <source href="download.savannah.gnu.org/releases/freetype/freetype-2.4.11.tar.bz2" version="2.4.11"
- hash="sha256:ef9d0bcb64647d9e5125dc7534d7ca371c98310fec87677c410f397f71ffbe3f"
- md5sum="b93435488942486c8d0ca22e8f768034" />
- </tarball>
-
- <autotools id="glib"
- autogen-sh="configure"
- autogenargs="--disable-dtrace">
- <dependencies>
- <dep package="libffi"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/glib/2.36/glib-2.36.0.tar.xz" version="2.36.0"
- repo="ftp.gnome.org"
- hash="sha256:455a8abe8692c5174bcc7ffa15b96a7521a2f2f9fb47594405927c35cb9bb227"/>
- </autotools>
-
- <autotools id="glib-networking">
- <dependencies>
- <dep package="glib"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/glib-networking/2.33/glib-networking-2.33.2.tar.xz" version="2.33.2"
- repo="ftp.gnome.org"
- hash="e298cff3935eb752be290bbf734e457f1870bdb5370ee292606e6040a82074e7"
- md5sum="5abb364f2a0babe2ec1e3a6d59f69043"/>
- </autotools>
-
- <autotools id="libsoup"
- autogenargs="--without-gnome --disable-introspection">
- <dependencies>
- <dep package="glib-networking"/>
- </dependencies>
- <branch module="/pub/gnome/sources/libsoup/2.42/libsoup-2.42.0.tar.xz" version="2.42.0"
- repo="ftp.gnome.org"
- hash="sha256:9e0e7eb5d3f7401ccf521fbc289fc1fa0923b7c7833729e2ed7696f7b848893e">
- </branch>
- </autotools>
-
- <autotools id="fontconfig" autogen-sh="configure">
- <branch module="software/fontconfig/release/fontconfig-2.8.0.tar.gz" version="2.8.0"
- repo="freedesktop.org"
- hash="sha256:fa2a1c6eea654d9fce7a4b1220f10c99cdec848dccaf1625c01f076b31382335"
- md5sum="77e15a92006ddc2adbb06f840d591c0e">
- </branch>
- </autotools>
-
- <autotools id="harfbuzz" autogen-sh="configure">
- <branch module="software/harfbuzz/release/harfbuzz-0.9.14.tar.bz2" version="0.9.14"
- checkoutdir="harfbuzz-0.9.14"
- repo="freedesktop.org"
- hash="sha256:d07c0ffdbbbfdfbb6c65e73fe9c76466e87dbf04b094cbd0abf5fd7d571a4004"
- md5sum="7e1990b79060e98e2d31f677a0ac9eed">
- </branch>
- </autotools>
-
- <autotools id="eina" autogen-sh="configure">
- <branch module="releases/eina-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:fc08c8aa3a225e3a42793afbf109788ab003de7595a542607a6a65694d08a44d"
- md5sum="ea505aa52729de68ed6c00e1e45c3c50">
- </branch>
- </autotools>
-
- <autotools id="embryo" autogen-sh="configure">
- <branch module="releases/embryo-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:a946d6b4e6aa94b39537aa6746f4653d9235d8b9ca3a0dc0734df07482d28e80"
- md5sum="a52682ebfd04a0e787028732ee8f11f9">
- </branch>
- <dependencies>
- <dep package="eina"/>
- </dependencies>
- </autotools>
-
- <!-- TODO: Enabling Wayland support in Evas is currently requires additional
- GL-related options that might break our use of GLX in WebKit. While we
- do not investigate it in more depth, explicitly disable Wayland support
- in Evas. -->
- <autotools id="evas" autogen-sh="configure"
- autogenargs="--disable-wayland-shm --disable-wayland-egl">
- <branch module="releases/evas-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:70b350a970b2086787622845896f3e54de278fe698b8069796fd752e70427374"
- md5sum="2c965b836128a839292161d4ca89380d">
- </branch>
- <dependencies>
- <dep package="eet"/>
- </dependencies>
- </autotools>
-
- <autotools id="ecore" autogen-sh="configure">
- <branch module="releases/ecore-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:4bbaba2153db0c356d13c45adfbcc90c7118abd112d0817581417e708d6a9222"
- md5sum="9ea98367ec40f7121ea61948bb395553">
- </branch>
- <dependencies>
- <dep package="eina"/>
- <dep package="evas"/>
- </dependencies>
- </autotools>
-
- <autotools id="eet" autogen-sh="configure">
- <branch module="releases/eet-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:c79cc6e5d3304ae5761307c266835c4d8337cc0418ea43ace8c915b2d329427b"
- md5sum="ec3fffbeff0be2699aeed1ed4377ee9d">
- </branch>
- <dependencies>
- <dep package="eina"/>
- </dependencies>
- </autotools>
-
- <autotools id="edje" autogen-sh="configure">
- <branch module="releases/edje-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:c7b329ac6548378c1c74e9cdf60a34c33f4fdc2d8224577d6a9ea4b90c915ec3"
- md5sum="56d7ba080088627773bc6369e9a924fe">
- </branch>
- <dependencies>
- <dep package="eet"/>
- <dep package="ecore"/>
- <dep package="evas"/>
- <dep package="embryo"/>
- </dependencies>
- </autotools>
-
- <autotools id="e_dbus" autogen-sh="configure">
- <branch module="releases/e_dbus-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:d88886c13b470f9aee84f1a95a68eca5501506417362ee8066a117feffcd9399"
- md5sum="a197ae1c8e93debf20728e3e7693b868">
- </branch>
- <dependencies>
- <dep package="ecore"/>
- <dep package="eina"/>
- </dependencies>
- </autotools>
-
- <autotools id="eeze" autogen-sh="configure">
- <branch module="releases/eeze-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:b9cf6843d703c63930d5ff33be3dc640c28f58ce2e7def812086bfce8876e408"
- md5sum="0891f831e2d25bd48a5c26e8793b1714">
- </branch>
- <dependencies>
- <dep package="ecore"/>
- <dep package="eina"/>
- </dependencies>
- </autotools>
-
- <autotools id="efreet" autogen-sh="configure">
- <branch module="releases/efreet-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:8f5a043a76d8905f87600da5e0dddfcdf3b44f517724b376f8da32dc9ac487fb"
- md5sum="d21e59631022d6fbdfa0e19b6b2ff93a">
- </branch>
- <dependencies>
- <deb package="ecore"/>
- <deb package="eina"/>
- <deb package="eet"/>
- </dependencies>
- </autotools>
-
- <autotools id="elementary"
- autogen-sh="configure"
- autogenargs="--disable-emap --disable-ethumb --disable-eweather --disable-web">
- <branch module="releases/elementary-1.7.5.tar.bz2" version="1.7.5"
- repo="download.enlightenment.org"
- hash="sha256:898a4a7f8135c65359d4271ccab593b8a0b10d85fb6fd2d0cabea76152278b21"
- md5sum="7f2cbea027fba8b58c41aaacfe68c155">
- </branch>
- <dependencies>
- <deb package="edje"/>
- <deb package="eina"/>
- <deb package="eet"/>
- <deb package="ecore"/>
- </dependencies>
- </autotools>
-
- <autotools id="libxml2"
- autogen-sh="configure"
- autogenargs="--without-python">
- <branch module="/libxml2/libxml2-2.9.1.tar.gz" version="2.9.1"
- repo="xmlsoft.org"
- hash="sha256:fd3c64cb66f2c4ea27e934d275904d92cec494a8e8405613780cbc8a71680fdb"
- md5sum="9c0cfef285d5c4a5c80d00904ddab380"/>
- </autotools>
-
- <autotools id="gstreamer" autogen-sh="configure">
- <branch repo="gstreamer"
- module="gstreamer/gstreamer-1.0.5.tar.xz" version="1.0.5"
- hash="sha256:26c2827567f09a46d0a3bc1e7f8696b2ae72b047306539178079abae487c5b77"/>
- </autotools>
-
- <autotools id="gst-plugins-base"
- autogen-sh="configure"
- autogenargs="--disable-examples --enable-theora --enable-vorbis">
- <dependencies>
- <dep package="gstreamer"/>
- </dependencies>
- <branch repo="gstreamer"
- module="gst-plugins-base/gst-plugins-base-1.0.5.tar.xz" version="1.0.5"
- hash="sha256:37ce6e09b99ef3879111c861ee5090582b4fd4c764e81ab6eb2b2b4dd77d7173"/>
- </autotools>
-
- <autotools id="gst-plugins-good"
- autogen-sh="configure"
- autogenargs="--disable-examples --enable-pulse">
- <dependencies>
- <dep package="cairo"/>
- <dep package="gst-plugins-base"/>
- </dependencies>
- <branch repo="gstreamer"
- module="gst-plugins-good/gst-plugins-good-1.0.5.tar.xz" version="1.0.5"
- hash="sha256:53bd0b848e7896f1b22548ca4e8be56cf425e5100e121c472dff8272d5140bc5"/>
- </autotools>
-
- <autotools id="gst-plugins-bad"
- autogen-sh="configure"
- autogenargs="--disable-examples --enable-faad">
- <dependencies>
- <dep package="gst-plugins-base"/>
- </dependencies>
- <branch repo="gstreamer"
- module="gst-plugins-bad/gst-plugins-bad-1.0.5.tar.xz" version="1.0.5"
- hash="sha256:2e8f5b9a2fd274142d0a916b6425b9466028978b85858dc835dc80de744b276a"/>
- </autotools>
-
- <autotools id="gst-libav"
- autogen-sh="configure"
- autogenargs="--with-libav-extra-configure='--disable-yasm'">
- <dependencies>
- <dep package="gst-plugins-base"/>
- </dependencies>
- <branch repo="gstreamer"
- module="gst-libav/gst-libav-1.0.5.tar.xz" version="1.0.5"
- hash="sha256:aef8be665096b3a4e64424fb39d7c5da57faaaf95e9fea6c1bb44295d4fb32d5"/>
- </autotools>
-
- <autotools id="libseccomp" autogen-sh="configure">
- <branch module="libseccomp/libseccomp"
- repo="git.code.sf.net"
- tag="bbd7ca07a7c76d5cd884dbddec58385e1b7439d2"/>
- </autotools>
-
- <autotools id="atk"
- autogen-sh="configure"
- autogenargs="--disable-introspection">
- <branch module="pub/GNOME/sources/atk/2.8/atk-2.8.0.tar.xz" version="2.8.0"
- repo="ftp.gnome.org"
- hash="sha256:b22519176226f3e07cf6d932b77852e6b6be4780977770704b32d0f4e0686df4"/>
- </autotools>
-
-</moduleset>
diff --git a/Tools/efl/jhbuildrc b/Tools/efl/jhbuildrc
deleted file mode 100644
index 77daae97c..000000000
--- a/Tools/efl/jhbuildrc
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-# Copyright (C) 2012 Intel Corporation
-#
-# 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 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
-
-import multiprocessing
-import sys
-
-__efl_tools_directory = os.path.abspath(os.path.dirname(__file__))
-sys.path = [__efl_tools_directory] + sys.path
-import common
-
-build_policy = 'updated'
-
-# FIXME: move shared parts into ../jhbuild folder.
-
-__moduleset_file_uri = 'file://' + os.path.join(__efl_tools_directory, 'jhbuild.modules')
-__extra_modulesets = os.environ.get("WEBKIT_EXTRA_MODULESETS", "").split(",")
-moduleset = [ __moduleset_file_uri, ]
-if __extra_modulesets != ['']:
- moduleset.extend(__extra_modulesets)
-
-__extra_modules = os.environ.get("WEBKIT_EXTRA_MODULES", "").split(",")
-modules = [ 'webkitefl-testing-dependencies', ]
-if __extra_modules != ['']:
- modules.extend(__extra_modules)
-
-if os.environ.has_key('WEBKIT_OUTPUTDIR'):
- checkoutroot = os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], 'Dependencies', 'Source'))
- prefix = os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], 'Dependencies', 'Root'))
-else:
- checkoutroot = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Source'))
- prefix = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Root'))
-
-nonotify = True
-notrayicon = True
-
-if 'NUMBER_OF_PROCESSORS' in os.environ:
- jobs = os.environ['NUMBER_OF_PROCESSORS']
-
-# Use system libraries while building.
-if use_lib64:
- _libdir = 'lib64'
-else:
- _libdir = 'lib'
-addpath('PKG_CONFIG_PATH', os.path.join(os.sep, 'usr', _libdir, 'pkgconfig'))
-addpath('PKG_CONFIG_PATH', os.path.join(os.sep, 'usr', 'share', 'pkgconfig'))
-
-addpath('XDG_DATA_DIRS', '/usr/share')
-addpath('XDG_CONFIG_DIRS', '/etc/xdg')
-
-addpath('CMAKE_PREFIX_PATH', prefix)
-
-# jhbuild installs libraries into lib64/ by default when building on
-# 64-bit Linux installations, while CMake does not look for libraries
-# in lib64/ if /etc/debian_version exists. For now we just pass the
-# lib64/ directory to the CMAKE_LIBRARY_PATH environment variable to
-# make sure the libraries installed by jhbuild are found by CMake on
-# Debian-based systems as well.
-if use_lib64:
- addpath('CMAKE_LIBRARY_PATH', os.path.join(prefix, _libdir))
-
-partial_build = False
-
-# Avoid runtime conflicts with GStreamer system-wide plugins. We want
-# to use only the plugins we build in JHBuild.
-os.environ['GST_PLUGIN_SYSTEM_PATH'] = ''
diff --git a/Tools/gdb/webkit.py b/Tools/gdb/webkit.py
deleted file mode 100644
index 1fce077fd..000000000
--- a/Tools/gdb/webkit.py
+++ /dev/null
@@ -1,350 +0,0 @@
-# Copyright (C) 2010, 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.
-
-"""GDB support for WebKit types.
-
-Add this to your gdb by amending your ~/.gdbinit as follows:
- python
- import sys
- sys.path.insert(0, "/path/to/tools/gdb/")
- import webkit
-"""
-
-import gdb
-import re
-import struct
-
-
-def guess_string_length(ptr):
- """Guess length of string pointed by ptr.
-
- Returns a tuple of (length, an error message).
- """
- # Try to guess at the length.
- for i in xrange(0, 2048):
- try:
- if int((ptr + i).dereference()) == 0:
- return i, ''
- except RuntimeError:
- # We indexed into inaccessible memory; give up.
- return i, ' (gdb hit inaccessible memory)'
- return 256, ' (gdb found no trailing NUL)'
-
-
-def ustring_to_string(ptr, length=None):
- """Convert a pointer to UTF-16 data into a Python string encoded with utf-8.
-
- ptr and length are both gdb.Value objects.
- If length is unspecified, will guess at the length."""
- error_message = ''
- if length is None:
- length, error_message = guess_string_length(ptr)
- else:
- length = int(length)
- char_vals = [int((ptr + i).dereference()) for i in xrange(length)]
- string = struct.pack('H' * length, *char_vals).decode('utf-16', 'replace').encode('utf-8')
- return string + error_message
-
-
-def lstring_to_string(ptr, length=None):
- """Convert a pointer to LChar* data into a Python (non-Unicode) string.
-
- ptr and length are both gdb.Value objects.
- If length is unspecified, will guess at the length."""
- error_message = ''
- if length is None:
- length, error_message = guess_string_length(ptr)
- else:
- length = int(length)
- string = ''.join([chr((ptr + i).dereference()) for i in xrange(length)])
- return string + error_message
-
-
-class StringPrinter(object):
- "Shared code between different string-printing classes"
- def __init__(self, val):
- self.val = val
-
- def display_hint(self):
- return 'string'
-
-
-class UCharStringPrinter(StringPrinter):
- "Print a UChar*; we must guess at the length"
- def to_string(self):
- return ustring_to_string(self.val)
-
-
-class LCharStringPrinter(StringPrinter):
- "Print a LChar*; we must guess at the length"
- def to_string(self):
- return lstring_to_string(self.val)
-
-
-class WTFAtomicStringPrinter(StringPrinter):
- "Print a WTF::AtomicString"
- def to_string(self):
- return self.val['m_string']
-
-
-class WTFCStringPrinter(StringPrinter):
- "Print a WTF::CString"
- def to_string(self):
- # The CString holds a buffer, which is a refptr to a WTF::CStringBuffer.
- data = self.val['m_buffer']['m_ptr']['m_data'].cast(gdb.lookup_type('char').pointer())
- length = self.val['m_buffer']['m_ptr']['m_length']
- return ''.join([chr((data + i).dereference()) for i in xrange(length)])
-
-
-class WTFStringImplPrinter(StringPrinter):
- "Print a WTF::StringImpl"
- def get_length(self):
- return self.val['m_length']
-
- def to_string(self):
- if self.is_8bit():
- return lstring_to_string(self.val['m_data8'], self.get_length())
- return ustring_to_string(self.val['m_data16'], self.get_length())
-
- def is_8bit(self):
- return self.val['m_hashAndFlags'] & self.val['s_hashFlag8BitBuffer']
-
-
-class WTFStringPrinter(StringPrinter):
- "Print a WTF::String"
- def stringimpl_ptr(self):
- return self.val['m_impl']['m_ptr']
-
- def get_length(self):
- if not self.stringimpl_ptr():
- return 0
- return WTFStringImplPrinter(self.stringimpl_ptr().dereference()).get_length()
-
- def to_string(self):
- if not self.stringimpl_ptr():
- return '(null)'
- return self.stringimpl_ptr().dereference()
-
-
-
-class JSCIdentifierPrinter(StringPrinter):
- "Print a JSC::Identifier"
- def to_string(self):
- return WTFStringPrinter(self.val['m_string']).to_string()
-
-
-class JSCJSStringPrinter(StringPrinter):
- "Print a JSC::JSString"
- def to_string(self):
- if self.val['m_length'] == 0:
- return ''
-
- return WTFStringImplPrinter(self.val['m_value']).to_string()
-
-
-class WebCoreKURLGooglePrivatePrinter(StringPrinter):
- "Print a WebCore::KURLGooglePrivate"
- def to_string(self):
- return WTFCStringPrinter(self.val['m_utf8']).to_string()
-
-
-class WebCoreQualifiedNamePrinter(StringPrinter):
- "Print a WebCore::QualifiedName"
-
- def __init__(self, val):
- super(WebCoreQualifiedNamePrinter, self).__init__(val)
- self.prefix_length = 0
- self.length = 0
- if self.val['m_impl']:
- self.prefix_printer = WTFStringPrinter(
- self.val['m_impl']['m_prefix']['m_string'])
- self.local_name_printer = WTFStringPrinter(
- self.val['m_impl']['m_localName']['m_string'])
- self.prefix_length = self.prefix_printer.get_length()
- if self.prefix_length > 0:
- self.length = (self.prefix_length + 1 +
- self.local_name_printer.get_length())
- else:
- self.length = self.local_name_printer.get_length()
-
- def get_length(self):
- return self.length
-
- def to_string(self):
- if self.get_length() == 0:
- return "(null)"
- else:
- if self.prefix_length > 0:
- return (self.prefix_printer.to_string() + ":" +
- self.local_name_printer.to_string())
- else:
- return self.local_name_printer.to_string()
-
-
-class WTFVectorPrinter:
- """Pretty Printer for a WTF::Vector.
-
- The output of this pretty printer is similar to the output of std::vector's
- pretty printer, which is bundled in gcc.
-
- Example gdb session should look like:
- (gdb) p v
- $3 = WTF::Vector of length 7, capacity 16 = {7, 17, 27, 37, 47, 57, 67}
- (gdb) set print elements 3
- (gdb) p v
- $6 = WTF::Vector of length 7, capacity 16 = {7, 17, 27...}
- (gdb) set print array
- (gdb) p v
- $7 = WTF::Vector of length 7, capacity 16 = {
- 7,
- 17,
- 27
- ...
- }
- (gdb) set print elements 200
- (gdb) p v
- $8 = WTF::Vector of length 7, capacity 16 = {
- 7,
- 17,
- 27,
- 37,
- 47,
- 57,
- 67
- }
- """
-
- class Iterator:
- def __init__(self, start, finish):
- self.item = start
- self.finish = finish
- self.count = 0
-
- def __iter__(self):
- return self
-
- def next(self):
- if self.item == self.finish:
- raise StopIteration
- count = self.count
- self.count += 1
- element = self.item.dereference()
- self.item += 1
- return ('[%d]' % count, element)
-
- def __init__(self, val):
- self.val = val
-
- def children(self):
- start = self.val['m_buffer']
- return self.Iterator(start, start + self.val['m_size'])
-
- def to_string(self):
- return ('%s of length %d, capacity %d'
- % ('WTF::Vector', self.val['m_size'], self.val['m_capacity']))
-
- def display_hint(self):
- return 'array'
-
-def add_pretty_printers():
- pretty_printers = (
- (re.compile("^WTF::Vector<.*>$"), WTFVectorPrinter),
- (re.compile("^WTF::AtomicString$"), WTFAtomicStringPrinter),
- (re.compile("^WTF::CString$"), WTFCStringPrinter),
- (re.compile("^WTF::String$"), WTFStringPrinter),
- (re.compile("^WTF::StringImpl$"), WTFStringImplPrinter),
- (re.compile("^WebCore::KURLGooglePrivate$"), WebCoreKURLGooglePrivatePrinter),
- (re.compile("^WebCore::QualifiedName$"), WebCoreQualifiedNamePrinter),
- (re.compile("^JSC::Identifier$"), JSCIdentifierPrinter),
- (re.compile("^JSC::JSString$"), JSCJSStringPrinter),
- )
-
- def lookup_function(val):
- """Function used to load pretty printers; will be passed to GDB."""
- type = val.type
- if type.code == gdb.TYPE_CODE_REF:
- type = type.target()
- type = type.unqualified().strip_typedefs()
- tag = type.tag
- if tag:
- for function, pretty_printer in pretty_printers:
- if function.search(tag):
- return pretty_printer(val)
-
- if type.code == gdb.TYPE_CODE_PTR:
- name = str(type.target().unqualified())
- if name == 'UChar':
- return UCharStringPrinter(val)
- if name == 'LChar':
- return LCharStringPrinter(val)
- return None
-
- gdb.pretty_printers.append(lookup_function)
-
-
-add_pretty_printers()
-
-
-class PrintPathToRootCommand(gdb.Command):
- """Command for printing WebKit Node trees.
-
- Usage: printpathtoroot variable_name"""
-
- def __init__(self):
- super(PrintPathToRootCommand, self).__init__("printpathtoroot",
- gdb.COMMAND_SUPPORT,
- gdb.COMPLETE_NONE)
-
- def invoke(self, arg, from_tty):
- element_type = gdb.lookup_type('WebCore::Element')
- node_type = gdb.lookup_type('WebCore::Node')
- frame = gdb.selected_frame()
- try:
- val = gdb.Frame.read_var(frame, arg)
- except:
- print "No such variable, or invalid type"
- return
-
- target_type = str(val.type.target().strip_typedefs())
- if target_type == str(node_type):
- stack = []
- while val:
- stack.append([val,
- val.cast(element_type.pointer()).dereference()['m_tagName']])
- val = val.dereference()['m_parent']
-
- padding = ''
- while len(stack) > 0:
- pair = stack.pop()
- print padding, pair[1], pair[0]
- padding = padding + ' '
- else:
- print 'Sorry: I don\'t know how to deal with %s yet.' % target_type
-
-
-PrintPathToRootCommand()
diff --git a/Tools/gtk/common.py b/Tools/gtk/common.py
deleted file mode 100644
index 1fbf69ce5..000000000
--- a/Tools/gtk/common.py
+++ /dev/null
@@ -1,144 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import errno
-import os
-import select
-import subprocess
-import sys
-
-script_dir = None
-build_dir = None
-
-
-def script_path(*args):
- global script_dir
- if not script_dir:
- script_dir = os.path.join(os.path.dirname(__file__), '..', 'Scripts')
- return os.path.join(*(script_dir,) + args)
-
-
-def top_level_path(*args):
- return os.path.join(*((script_path('..', '..'),) + args))
-
-
-def get_build_path(build_types=('Release', 'Debug')):
- global build_dir
- if build_dir:
- return build_dir
-
- def is_valid_build_directory(path):
- return os.path.exists(os.path.join(path, 'GNUmakefile')) or \
- os.path.exists(os.path.join(path, 'Programs', 'DumpRenderTree'))
-
- if len(sys.argv[1:]) > 1 and os.path.exists(sys.argv[-1]) and is_valid_build_directory(sys.argv[-1]):
- return sys.argv[-1]
-
- # Debian and Ubuntu build both flavours of the library (with gtk2
- # and with gtk3); they use directories build-2.0 and build-3.0 for
- # that, which is not handled by the above cases; we check that the
- # directory where we are called from is a valid build directory,
- # which should handle pretty much all other non-standard cases.
- build_dir = os.getcwd()
- if is_valid_build_directory(build_dir):
- return build_dir
-
- for build_type in build_types:
- build_dir = top_level_path('WebKitBuild', build_type)
- if is_valid_build_directory(build_dir):
- return build_dir
-
- # distcheck builds in a directory named _build in the top-level path.
- build_dir = top_level_path("_build")
- if is_valid_build_directory(build_dir):
- return build_dir
-
- build_dir = top_level_path()
- if is_valid_build_directory(build_dir):
- return build_dir
-
- build_dir = top_level_path("WebKitBuild")
- if is_valid_build_directory(build_dir):
- return build_dir
-
- print('Could not determine build directory.')
- sys.exit(1)
-
-
-def build_path_for_build_types(build_types, *args):
- return os.path.join(*(get_build_path(build_types),) + args)
-
-
-def build_path(*args):
- return build_path_for_build_types(('Release', 'Debug'), *args)
-
-
-def pkg_config_file_variable(package, variable):
- process = subprocess.Popen(['pkg-config', '--variable=%s' % variable, package],
- stdout=subprocess.PIPE)
- stdout = process.communicate()[0].decode("utf-8")
- if process.returncode:
- return None
- return stdout.strip()
-
-
-def prefix_of_pkg_config_file(package):
- return pkg_config_file_variable(package, 'prefix')
-
-
-def gtk_version_of_pkg_config_file(pkg_config_path):
- process = subprocess.Popen(['pkg-config', pkg_config_path, '--print-requires'],
- stdout=subprocess.PIPE)
- stdout = process.communicate()[0].decode("utf-8")
-
- if 'gtk+-3.0' in stdout:
- return 3
- return 2
-
-
-def parse_output_lines(fd, parse_line_callback):
- output = ''
- read_set = [fd]
- while read_set:
- try:
- rlist, wlist, xlist = select.select(read_set, [], [])
- except select.error as e:
- parse_line_callback("WARNING: error while waiting for fd %d to become readable\n" % fd)
- parse_line_callback(" error code: %d, error message: %s\n" % (e[0], e[1]))
- continue
-
- if fd in rlist:
- try:
- chunk = os.read(fd, 1024)
- except OSError as e:
- if e.errno == errno.EIO:
- # Child process finished.
- chunk = ''
- else:
- raise e
- if not chunk:
- read_set.remove(fd)
-
- output += chunk
- while '\n' in output:
- pos = output.find('\n')
- parse_line_callback(output[:pos + 1])
- output = output[pos + 1:]
-
- if not chunk and output:
- parse_line_callback(output)
- output = ''
diff --git a/Tools/gtk/find-make-dist-errors b/Tools/gtk/find-make-dist-errors
deleted file mode 100755
index 880c780a5..000000000
--- a/Tools/gtk/find-make-dist-errors
+++ /dev/null
@@ -1,108 +0,0 @@
-#!/usr/bin/python
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import common
-import os
-import subprocess
-import sys
-
-def is_source_file_listing(line):
- return line.strip().startswith('Source')
-
-def get_listed_makefile_headers():
- makefile_text = open(os.path.join(common.build_path('GNUmakefile'))).read()
-
- # Automake often places separate includes on the same line.
- makefile_text = makefile_text.replace(' ', '\n')
-
- headers = []
- for line in makefile_text.splitlines():
- # $(srcdir)/ is the same as an empty string in a source file listing.
- line = line.replace('$(srcdir)/', '')
-
- # If the line doesn't start with 'Source' it isn't listing for
- # a source file.
- if not is_source_file_listing(line):
- continue
-
- # Most source listings end with \ indicating that the listing
- # continues onto the next line.
- line = line.replace('\\', '')
-
- # We only care about header files. Source files result in build
- # breakage, so we will detect them without this script.
- line = line.strip()
- if not line.endswith('.h'):
- continue
-
- # If the line contains a makefile variable we do not care about it.
- if line.find('$') != -1:
- continue
-
- headers.append(line)
-
- return headers
-
-def scan_headers_from_dependency_files():
- process = subprocess.Popen(['find . -name *.Plo | xargs cat | grep .h:$'],
- cwd=common.build_path(),
- stdout=subprocess.PIPE,
- shell=True)
- sanitized_lines = set()
- for line in process.communicate()[0].splitlines():
- # Paths in Plo files are relative to the build directory so they might contain
- # ../.. if the build directory is something like WebKitBuild/Release.
- line = line.replace('../../', '')
- if not is_source_file_listing(line):
- continue
-
- # The lines we care about end with ':'.
- line = line.replace(':', '')
- line = line.strip()
- sanitized_lines.add(line)
- return sanitized_lines
-
-def get_unlisted_headers(listed_makefile_headers):
- unlisted = set()
- for header in scan_headers_from_dependency_files():
- if not header in listed_makefile_headers:
- unlisted.add(header)
- return unlisted
-
-def get_missing_headers(listed_makefile_headers):
- missing = set()
- for header in listed_makefile_headers:
- if not os.path.exists(common.top_level_path(header)):
- missing.add(header)
- return missing
-
-listed_makefile_headers = get_listed_makefile_headers()
-unlisted_headers = get_unlisted_headers(listed_makefile_headers)
-missing_headers = get_missing_headers(listed_makefile_headers)
-if unlisted_headers:
- print 'Headers not listed in the GNUmakefiles:'
- for header in sorted(unlisted_headers):
- print '\t%s' % header
- print
-
-if missing_headers:
- print 'Headers listed in the GNUmakefiles that do not exist:'
- for header in sorted(missing_headers):
- print '\t%s' % header
- print
-
-sys.exit(len(unlisted_headers) + len(missing_headers))
diff --git a/Tools/gtk/generate-feature-defines-files b/Tools/gtk/generate-feature-defines-files
deleted file mode 100755
index f5b2c7e61..000000000
--- a/Tools/gtk/generate-feature-defines-files
+++ /dev/null
@@ -1,58 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import re
-import sys
-
-def read_feature_defines_override(feature_defines):
- feature_defines_overriding_file = 'WebKitFeatureOverrides.txt'
- if not os.path.exists(feature_defines_overriding_file):
- return
-
- print("The following feature defines were overriden:")
- with open(feature_defines_overriding_file) as f:
- match_iter = re.findall(r"((?:ENABLE_)\w+)=(0|1)", f.read())
-
- for match in match_iter:
- feature = match[0]
- value = int(match[1])
-
- if feature in feature_defines and value != feature_defines[feature]:
- print("\t{0}: {1} => {2}".format(feature, feature_defines[feature], value))
- feature_defines[feature] = value
-
-def write_file_if_contents_changed(filename, contents):
- if os.path.exists(filename):
- with open(filename, 'r') as f:
- old_contents = f.read()
- if old_contents == contents:
- return
- with open(filename, 'w') as f:
- f.write(contents)
-
-def write_feature_defines_header(feature_defines):
- contents = ''
- for (feature, value) in feature_defines.items():
- contents += '#define {0} {1}\n'.format(feature, value)
- write_file_if_contents_changed("WebKitFeatures.h", contents)
-
-def write_flattened_feature_defines_file(feature_defines):
- contents = ''
- for (feature, value) in feature_defines.items():
- contents += '{0}={1}\n'.format(feature, value)
- write_file_if_contents_changed("WebKitFeatures.txt", contents)
-
-def generate_feature_defines_files(default_features):
- build_dir = os.getcwd()
- feature_defines = {}
-
- for feature_define in default_features:
- (feature, value) = feature_define.split("=")
- feature_defines[feature] = int(value)
-
- read_feature_defines_override(feature_defines)
- write_feature_defines_header(feature_defines)
- write_flattened_feature_defines_file(feature_defines)
-
-if __name__=='__main__':
- generate_feature_defines_files(sys.argv[1:])
diff --git a/Tools/gtk/generate-gtkdoc b/Tools/gtk/generate-gtkdoc
deleted file mode 100755
index 7b981723f..000000000
--- a/Tools/gtk/generate-gtkdoc
+++ /dev/null
@@ -1,212 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import common
-import glob
-import gtkdoc
-import logging
-import os.path
-import sys
-
-def configure_logging():
- level = logging.DEBUG if '-v' in sys.argv else logging.INFO
- logger = logging.getLogger('gtkdoc')
- logger.setLevel(level)
- handler = logging.StreamHandler()
- handler.setLevel(level)
- logger.addHandler(handler)
- if level == logging.DEBUG:
- handler.setFormatter(logging.Formatter('[%(asctime)s] %(message)s'))
- else:
- handler.setFormatter(logging.Formatter('%(message)s'))
-
-
-def get_gtkdoc_module_paths(xref_dep_packages):
- deps = []
- html_dir = os.path.join('share', 'gtk-doc', 'html')
-
- for package in xref_dep_packages:
- prefix = common.prefix_of_pkg_config_file(package)
- if prefix is None:
- continue
- for module in xref_dep_packages[package]:
- deps.append(os.path.join(prefix, html_dir, module))
-
- return deps
-
-
-def get_common_options():
- # TODO: We should consider using an arguments parsing library if
- # we need more of these complex ones.
- virtual_root = ''
- for argument in sys.argv:
- if argument.startswith('--virtual-root='):
- virtual_root = argument.split('=')[1]
- break
-
- return {
- 'decorator': 'WEBKIT_API',
- 'deprecation_guard': 'WEBKIT_DISABLE_DEPRECATED',
- 'library_path' : common.build_path('.libs'),
- 'virtual_root' : virtual_root,
- }
-
-def get_common_xref_deps():
- return {
- 'glib-2.0' : ['glib', 'gobject', 'gio'],
- 'libsoup-2.4' : ['libsoup-2.4'],
- 'gdk-pixbuf-2.0': ['gdk-pixbuf']
- }
-
-def get_webkit2_options():
- def derived_sources_path(*args):
- return common.build_path(*(('DerivedSources', 'WebKit2') + args))
- def src_path(*args):
- return common.top_level_path(*(('Source', 'WebKit2', 'UIProcess', 'API', 'gtk') + args))
- def injected_bundle_src_path(*args):
- return common.top_level_path(*(('Source', 'WebKit2', 'WebProcess', 'InjectedBundle', 'API', 'gtk') + args))
-
- xref_deps = get_common_xref_deps().copy()
- xref_deps.update({
- 'gtk+-3.0' : ['gtk3', 'gdk3']
- })
-
- options = get_common_options().copy()
- options.update({
- 'module_name' : 'webkit2gtk',
- 'doc_dir' : src_path('docs'),
- 'output_dir' : common.build_path('Documentation', 'webkit2gtk'),
- 'source_dirs' : [src_path(), derived_sources_path('webkit2gtk', 'webkit2'), injected_bundle_src_path()],
- 'cflags' : ' -I' + derived_sources_path('webkit2gtk', 'include') + \
- ' -I' + derived_sources_path('webkit2gtk') + \
- ' -I' + derived_sources_path('include') + \
- ' -I' + common.top_level_path('Source') + \
- ' -I' + src_path(),
- 'cross_reference_deps' : get_gtkdoc_module_paths(xref_deps),
- 'ignored_files': glob.glob(src_path('*Private.h')) + \
- glob.glob(injected_bundle_src_path('*Private.h')) + \
- glob.glob(src_path('*Client*')) + \
- glob.glob(src_path('WebKitGeolocationProvider.*')) + \
- glob.glob(src_path('WebKitTextChecker.*')) + \
- glob.glob(src_path('WebKitAuthenticationDialog.*')) + \
- glob.glob(src_path('WebKitWebViewBaseAccessible.*')) + \
- glob.glob(src_path('WebViewBaseInputMethodFilter.*')) + \
- glob.glob(derived_sources_path('webkit2gtk', 'webkit2', 'WebKitMarshal.*')) + \
- glob.glob(derived_sources_path('webkit2gtk', 'webkit2', 'WebKitEnumTypes.*')) + \
- glob.glob(src_path('tests/*.h'))
- })
- return options
-
-def get_webkit1_options(gtk_version):
- def src_path(*args):
- return common.top_level_path(*(('Source', 'WebKit', 'gtk') + args))
-
- xref_deps = get_common_xref_deps().copy()
- if gtk_version == 3:
- xref_deps.update({
- 'gtk+-3.0' : ['gtk3', 'gdk3']
- })
- else:
- xref_deps.update({
- 'gtk+-2.0' : ['gtk', 'gdk']
- })
-
- options = get_common_options().copy()
- options.update({
- 'module_name' : 'webkitgtk',
- 'doc_dir' : src_path('docs'),
- 'output_dir' : common.build_path('Documentation', 'webkitgtk'),
- 'source_dirs' : [src_path('webkit'), common.build_path('Source', 'WebKit', 'gtk', 'webkit')],
- 'cflags' : ' -I' + common.build_path('WebKit', 'gtk') + \
- ' -I' + common.build_path('DerivedSources') + \
- ' -I' + src_path() + \
- ' -I' + common.top_level_path('Source') + \
- ' -I' + common.top_level_path('Source', 'JavaScriptCore', 'ForwardingHeaders'),
- 'cross_reference_deps' : get_gtkdoc_module_paths(xref_deps),
- 'ignored_files': glob.glob(src_path('webkit', '*private.*')) + \
- glob.glob(src_path('webkit', 'webkitauthenticationdialog.*')) + \
- glob.glob(src_path('webkit', 'webkitspellcheckerenchant.*'))
- })
- return options
-
-def print_missing_api(generator):
- missing_api = generator.api_missing_documentation()
- if not missing_api:
- return
- print("\nThe following API are missing documentation:")
- for api in missing_api:
- print("\t%s" % api)
-
-def generate_doc(generator):
- generator.generate(html='--skip-html' not in sys.argv)
- if generator.saw_warnings:
- print_missing_api(generator)
- return generator.saw_warnings
-
-configure_logging()
-
-# We need to add the JavaScriptCore build directory to the PKG_CONFIG_PATH
-# so that pkgconfig can properly resolve the libjavascriptcore dependency.
-pkg_config_path = os.environ.get("PKG_CONFIG_PATH")
-os.environ['PKG_CONFIG_PATH'] = common.build_path('Source', 'JavaScriptCore')
-if pkg_config_path:
- os.environ['PKG_CONFIG_PATH'] += ':' + pkg_config_path
-
-# Newer versions of glib have deprecated g_type_init, so we need to disable
-# that warning when running gtkdoc-scanobj by overriding the CFLAGS we use
-# to compile it.
-cflags = os.environ.get('CFLAGS', '')
-cflags += ' -DGLIB_VERSION_MIN_REQUIRED=GLIB_VERSION_2_32'
-os.environ['CFLAGS'] = cflags
-
-# Clang can be noisy, throwing unnecessary warnings for unused arguments.
-if os.environ.get('CC') == "clang":
- os.environ['CFLAGS'] += ' -Qunused-arguments'
-
-saw_webkit1_warnings = saw_webkit2_warnings = False
-
-pkg_config_path = common.build_path('Source', 'WebKit', 'gtk', 'webkitgtk-3.0.pc')
-if not os.path.exists(pkg_config_path):
- pkg_config_path = common.build_path('Source', 'WebKit', 'gtk', 'webkit-1.0.pc')
-if os.path.exists(pkg_config_path):
- options = get_webkit1_options(common.gtk_version_of_pkg_config_file(pkg_config_path))
- generator = gtkdoc.PkgConfigGTKDoc(pkg_config_path, options)
- if '--rebase' not in sys.argv:
- print("Generating WebKit1 documentation...")
- saw_webkit1_warnings = generate_doc(generator)
- else:
- print("Rebasing WebKit1 documentation...")
- try:
- generator.rebase_installed_docs()
- except Exception:
- print("Rebase did not happen, likely no documentation is present.")
-
-# WebKit2 might not be enabled, so check for the pkg-config file before building documentation.
-pkg_config_path = common.build_path('Source', 'WebKit2', 'webkit2gtk-3.0.pc')
-if os.path.exists(pkg_config_path):
- generator = gtkdoc.PkgConfigGTKDoc(pkg_config_path, get_webkit2_options())
- if '--rebase' not in sys.argv:
- print("\nGenerating WebKit2 documentation...")
- saw_webkit2_warnings = generate_doc(generator)
- else:
- print("\nRebasing WebKit2 documentation...")
- try:
- generator.rebase_installed_docs()
- except Exception:
- print("Rebase did not happen, likely no documentation is present.")
-
-sys.exit(saw_webkit1_warnings or saw_webkit2_warnings)
diff --git a/Tools/gtk/gtkdoc.py b/Tools/gtk/gtkdoc.py
deleted file mode 100644
index 443dfc77b..000000000
--- a/Tools/gtk/gtkdoc.py
+++ /dev/null
@@ -1,416 +0,0 @@
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import errno
-import logging
-import os
-import os.path
-import subprocess
-import sys
-
-
-class GTKDoc(object):
-
- """Class that controls a gtkdoc run.
-
- Each instance of this class represents one gtkdoc configuration
- and set of documentation. The gtkdoc package is a series of tools
- run consecutively which converts inline C/C++ documentation into
- docbook files and then into HTML. This class is suitable for
- generating documentation or simply verifying correctness.
-
- Keyword arguments:
- output_dir -- The path where gtkdoc output should be placed. Generation
- may overwrite file in this directory. Required.
- module_name -- The name of the documentation module. For libraries this
- is typically the library name. Required if not library path
- is given.
- source_dirs -- A list of paths to the source code to be scanned. Required.
- ignored_files -- A list of filenames to ignore in the source directory. It is
- only necessary to provide the basenames of these files.
- Typically it is important to provide an updated list of
- ignored files to prevent warnings about undocumented symbols.
- decorator -- If a decorator is used to unhide certain symbols in header
- files this parameter is required for successful scanning.
- (default '')
- deprecation_guard -- gtkdoc tries to ensure that symbols marked as deprecated
- are encased in this C preprocessor define. This is required
- to avoid gtkdoc warnings. (default '')
- cflags -- This parameter specifies any preprocessor flags necessary for
- building the scanner binary during gtkdoc-scanobj. Typically
- this includes all absolute include paths necessary to resolve
- all header dependencies. (default '')
- ldflags -- This parameter specifies any linker flags necessary for
- building the scanner binary during gtkdoc-scanobj. Typically
- this includes "-lyourlibraryname". (default '')
- library_path -- This parameter specifies the path to the directory where you
- library resides used for building the scanner binary during
- gtkdoc-scanobj. (default '')
-
- doc_dir -- The path to other documentation files necessary to build
- the documentation. This files in this directory as well as
- the files in the 'html' subdirectory will be copied
- recursively into the output directory. (default '')
- main_sgml_file -- The path or name (if a doc_dir is given) of the SGML file
- that is the considered the main page of your documentation.
- (default: <module_name>-docs.sgml)
- version -- The version number of the module. If this is provided,
- a version.xml file containing the version will be created
- in the output directory during documentation generation.
-
- interactive -- Whether or not errors or warnings should prompt the user
- to continue or not. When this value is false, generation
- will continue despite warnings. (default False)
-
- virtual_root -- A temporary installation directory which is used as the root
- where the actual installation prefix lives; this is mostly
- useful for packagers, and should be set to what is given to
- make install as DESTDIR.
- """
-
- def __init__(self, args):
-
- # Parameters specific to scanning.
- self.module_name = ''
- self.source_dirs = []
- self.ignored_files = []
- self.decorator = ''
- self.deprecation_guard = ''
-
- # Parameters specific to gtkdoc-scanobj.
- self.cflags = ''
- self.ldflags = ''
- self.library_path = ''
-
- # Parameters specific to generation.
- self.output_dir = ''
- self.doc_dir = ''
- self.main_sgml_file = ''
-
- # Parameters specific to gtkdoc-fixxref.
- self.cross_reference_deps = []
-
- self.interactive = False
-
- self.logger = logging.getLogger('gtkdoc')
-
- for key, value in iter(args.items()):
- setattr(self, key, value)
-
- def raise_error_if_not_specified(key):
- if not getattr(self, key):
- raise Exception('%s not specified.' % key)
-
- raise_error_if_not_specified('output_dir')
- raise_error_if_not_specified('source_dirs')
- raise_error_if_not_specified('module_name')
-
- # Make all paths absolute in case we were passed relative paths, since
- # we change the current working directory when executing subcommands.
- self.output_dir = os.path.abspath(self.output_dir)
- self.source_dirs = [os.path.abspath(x) for x in self.source_dirs]
- if self.library_path:
- self.library_path = os.path.abspath(self.library_path)
-
- if not self.main_sgml_file:
- self.main_sgml_file = self.module_name + "-docs.sgml"
-
- def generate(self, html=True):
- self.saw_warnings = False
-
- self._copy_doc_files_to_output_dir(html)
- self._write_version_xml()
- self._run_gtkdoc_scan()
- self._run_gtkdoc_scangobj()
- self._run_gtkdoc_mktmpl()
- self._run_gtkdoc_mkdb()
-
- if not html:
- return
-
- self._run_gtkdoc_mkhtml()
- self._run_gtkdoc_fixxref()
-
- def _delete_file_if_exists(self, path):
- if not os.access(path, os.F_OK | os.R_OK):
- return
- self.logger.debug('deleting %s', path)
- os.unlink(path)
-
- def _create_directory_if_nonexistent(self, path):
- try:
- os.makedirs(path)
- except OSError as error:
- if error.errno != errno.EEXIST:
- raise
-
- def _raise_exception_if_file_inaccessible(self, path):
- if not os.path.exists(path) or not os.access(path, os.R_OK):
- raise Exception("Could not access file at: %s" % path)
-
- def _output_has_warnings(self, outputs):
- for output in outputs:
- if output and output.find('warning'):
- return True
- return False
-
- def _ask_yes_or_no_question(self, question):
- if not self.interactive:
- return True
-
- question += ' [y/N] '
- answer = None
- while answer != 'y' and answer != 'n' and answer != '':
- answer = raw_input(question).lower()
- return answer == 'y'
-
- def _run_command(self, args, env=None, cwd=None, print_output=True, ignore_warnings=False):
- if print_output:
- self.logger.info("Running %s", args[0])
- self.logger.debug("Full command args: %s", str(args))
-
- process = subprocess.Popen(args, env=env, cwd=cwd,
- stdout=subprocess.PIPE,
- stderr=subprocess.PIPE)
- stdout, stderr = [b.decode("utf-8") for b in process.communicate()]
-
- if print_output:
- if stdout:
- sys.stdout.write(stdout)
- if stderr:
- sys.stderr.write(stderr)
-
- if process.returncode != 0:
- raise Exception('%s produced a non-zero return code %i'
- % (args[0], process.returncode))
-
- if not ignore_warnings and ('warning' in stderr or 'warning' in stdout):
- self.saw_warnings = True
- if not self._ask_yes_or_no_question('%s produced warnings, '
- 'try to continue?' % args[0]):
- raise Exception('%s step failed' % args[0])
-
- return stdout.strip()
-
- def _copy_doc_files_to_output_dir(self, html=True):
- if not self.doc_dir:
- self.logger.info('Not copying any files from doc directory,'
- ' because no doc directory given.')
- return
-
- def copy_file_replacing_existing(src, dest):
- if os.path.isdir(src):
- self.logger.debug('skipped directory %s', src)
- return
- if not os.access(src, os.F_OK | os.R_OK):
- self.logger.debug('skipped unreadable %s', src)
- return
-
- self._delete_file_if_exists(dest)
-
- self.logger.debug('created %s', dest)
- os.link(src, dest)
-
- def copy_all_files_in_directory(src, dest):
- for path in os.listdir(src):
- copy_file_replacing_existing(os.path.join(src, path),
- os.path.join(dest, path))
-
- self.logger.info('Copying template files to output directory...')
- self._create_directory_if_nonexistent(self.output_dir)
- copy_all_files_in_directory(self.doc_dir, self.output_dir)
-
- if not html:
- return
-
- self.logger.info('Copying HTML files to output directory...')
- html_src_dir = os.path.join(self.doc_dir, 'html')
- html_dest_dir = os.path.join(self.output_dir, 'html')
- self._create_directory_if_nonexistent(html_dest_dir)
-
- if os.path.exists(html_src_dir):
- copy_all_files_in_directory(html_src_dir, html_dest_dir)
-
- def _write_version_xml(self):
- if not self.version:
- self.logger.info('No version specified, so not writing version.xml')
- return
-
- version_xml_path = os.path.join(self.output_dir, 'version.xml')
- src_version_xml_path = os.path.join(self.doc_dir, 'version.xml')
-
- # Don't overwrite version.xml if it was in the doc directory.
- if os.path.exists(version_xml_path) and \
- os.path.exists(src_version_xml_path):
- return
-
- output_file = open(version_xml_path, 'w')
- output_file.write(self.version)
- output_file.close()
-
- def _ignored_files_basenames(self):
- return ' '.join([os.path.basename(x) for x in self.ignored_files])
-
- def _run_gtkdoc_scan(self):
- args = ['gtkdoc-scan',
- '--module=%s' % self.module_name,
- '--rebuild-types']
-
- # Each source directory should be have its own "--source-dir=" prefix.
- args.extend(['--source-dir=%s' % path for path in self.source_dirs])
-
- if self.decorator:
- args.append('--ignore-decorators=%s' % self.decorator)
- if self.deprecation_guard:
- args.append('--deprecated-guards=%s' % self.deprecation_guard)
- if self.output_dir:
- args.append('--output-dir=%s' % self.output_dir)
-
- # gtkdoc-scan wants the basenames of ignored headers, so strip the
- # dirname. Different from "--source-dir", the headers should be
- # specified as one long string.
- ignored_files_basenames = self._ignored_files_basenames()
- if ignored_files_basenames:
- args.append('--ignore-headers=%s' % ignored_files_basenames)
-
- self._run_command(args)
-
- def _run_gtkdoc_scangobj(self):
- env = os.environ
- ldflags = self.ldflags
- if self.library_path:
- ldflags = ' "-L%s" ' % self.library_path + ldflags
- current_ld_library_path = env.get('LD_LIBRARY_PATH')
- if current_ld_library_path:
- env['RUN'] = 'LD_LIBRARY_PATH="%s:%s" ' % (self.library_path, current_ld_library_path)
- else:
- env['RUN'] = 'LD_LIBRARY_PATH="%s" ' % self.library_path
-
- if ldflags:
- env['LDFLAGS'] = '%s %s' % (ldflags, env.get('LDFLAGS', ''))
- if self.cflags:
- env['CFLAGS'] = '%s %s' % (self.cflags, env.get('CFLAGS', ''))
-
- if 'CFLAGS' in env:
- self.logger.debug('CFLAGS=%s', env['CFLAGS'])
- if 'LDFLAGS' in env:
- self.logger.debug('LDFLAGS %s', env['LDFLAGS'])
- if 'RUN' in env:
- self.logger.debug('RUN=%s', env['RUN'])
- self._run_command(['gtkdoc-scangobj', '--module=%s' % self.module_name],
- env=env, cwd=self.output_dir)
-
- def _run_gtkdoc_mktmpl(self):
- args = ['gtkdoc-mktmpl', '--module=%s' % self.module_name]
- self._run_command(args, cwd=self.output_dir)
-
- def _run_gtkdoc_mkdb(self):
- sgml_file = os.path.join(self.output_dir, self.main_sgml_file)
- self._raise_exception_if_file_inaccessible(sgml_file)
-
- args = ['gtkdoc-mkdb',
- '--module=%s' % self.module_name,
- '--main-sgml-file=%s' % sgml_file,
- '--source-suffixes=h,c,cpp,cc',
- '--output-format=xml',
- '--sgml-mode']
-
- ignored_files_basenames = self._ignored_files_basenames()
- if ignored_files_basenames:
- args.append('--ignore-files=%s' % ignored_files_basenames)
-
- # Each directory should be have its own "--source-dir=" prefix.
- args.extend(['--source-dir=%s' % path for path in self.source_dirs])
- self._run_command(args, cwd=self.output_dir)
-
- def _run_gtkdoc_mkhtml(self):
- html_dest_dir = os.path.join(self.output_dir, 'html')
- if not os.path.isdir(html_dest_dir):
- raise Exception("%s is not a directory, could not generate HTML"
- % html_dest_dir)
- elif not os.access(html_dest_dir, os.X_OK | os.R_OK | os.W_OK):
- raise Exception("Could not access %s to generate HTML"
- % html_dest_dir)
-
- # gtkdoc-mkhtml expects the SGML path to be absolute.
- sgml_file = os.path.join(os.path.abspath(self.output_dir),
- self.main_sgml_file)
- self._raise_exception_if_file_inaccessible(sgml_file)
-
- self._run_command(['gtkdoc-mkhtml', self.module_name, sgml_file],
- cwd=html_dest_dir)
-
- def _run_gtkdoc_fixxref(self):
- args = ['gtkdoc-fixxref',
- '--module-dir=html',
- '--html-dir=html']
- args.extend(['--extra-dir=%s' % extra_dir for extra_dir in self.cross_reference_deps])
- self._run_command(args, cwd=self.output_dir, ignore_warnings=True)
-
- def rebase_installed_docs(self):
- if not os.path.isdir(self.output_dir):
- raise Exception("Tried to rebase documentation before generating it.")
- html_dir = os.path.join(self.virtual_root + self.prefix, 'share', 'gtk-doc', 'html', self.module_name)
- if not os.path.isdir(html_dir):
- return
- args = ['gtkdoc-rebase',
- '--relative',
- '--html-dir=%s' % html_dir]
- args.extend(['--other-dir=%s' % extra_dir for extra_dir in self.cross_reference_deps])
- if self.virtual_root:
- args.extend(['--dest-dir=%s' % self.virtual_root])
- self._run_command(args, cwd=self.output_dir)
-
- def api_missing_documentation(self):
- unused_doc_file = os.path.join(self.output_dir, self.module_name + "-unused.txt")
- if not os.path.exists(unused_doc_file) or not os.access(unused_doc_file, os.R_OK):
- return []
- return open(unused_doc_file).read().splitlines()
-
-class PkgConfigGTKDoc(GTKDoc):
-
- """Class reads a library's pkgconfig file to guess gtkdoc parameters.
-
- Some gtkdoc parameters can be guessed by reading a library's pkgconfig
- file, including the cflags, ldflags and version parameters. If you
- provide these parameters as well, they will be appended to the ones
- guessed via the pkgconfig file.
-
- Keyword arguments:
- pkg_config_path -- Path to the pkgconfig file for the library. Required.
- """
-
- def __init__(self, pkg_config_path, args):
- super(PkgConfigGTKDoc, self).__init__(args)
-
- pkg_config = os.environ.get('PKG_CONFIG', 'pkg-config')
-
- if not os.path.exists(pkg_config_path):
- raise Exception('Could not find pkg-config file at: %s'
- % pkg_config_path)
-
- self.cflags += " " + self._run_command([pkg_config,
- pkg_config_path,
- '--cflags'], print_output=False)
- self.ldflags += " " + self._run_command([pkg_config,
- pkg_config_path,
- '--libs'], print_output=False)
- self.version = self._run_command([pkg_config,
- pkg_config_path,
- '--modversion'], print_output=False)
- self.prefix = self._run_command([pkg_config,
- pkg_config_path,
- '--variable=prefix'], print_output=False)
diff --git a/Tools/gtk/install-dependencies b/Tools/gtk/install-dependencies
deleted file mode 100755
index f5729598d..000000000
--- a/Tools/gtk/install-dependencies
+++ /dev/null
@@ -1,188 +0,0 @@
-#!/bin/bash
-
-# This script needs to be run with root rights.
-if [ $UID -ne 0 ]; then
- sudo $0
- exit 0
-fi
-
-function printNotSupportedMessageAndExit() {
- echo
- echo "Currently this script only works for distributions supporting apt-get and yum."
- echo "Please add support for your distribution: http://webkit.org/b/110693"
- echo
- exit 1
-}
-
-function checkInstaller {
- # apt-get - Debian based distributions
- apt-get --version &> /dev/null
- if [ $? -eq 0 ]; then
- installDependenciesWithApt
- exit 0
- fi
-
- # yum - Fedora
- yum --version &> /dev/null
- if [ $? -eq 0 ]; then
- installDependenciesWithYum
- exit 0
- fi
-
- printNotSupportedMessageAndExit
-}
-
-function installDependenciesWithApt {
- # These are dependencies necessary for building WebKitGTK+.
- apt-get install \
- autoconf \
- automake \
- autopoint \
- autotools-dev \
- bison \
- flex \
- gail-3.0 \
- gawk \
- gnome-common \
- gperf \
- gtk-doc-tools \
- intltool \
- libatk1.0-dev \
- libenchant-dev \
- libfaad-dev \
- libgail-3-dev \
- libgail-dev \
- libgeoclue-dev \
- libgirepository1.0-dev \
- libgl1-mesa-dev \
- libgl1-mesa-glx \
- libgnutls-dev \
- libgudev-1.0-dev \
- libicu-dev \
- libjpeg62-dev \
- libmpg123-dev \
- libopus-dev \
- libpango1.0-dev \
- libpng12-dev \
- libpulse-dev \
- librsvg2-dev \
- libsecret-1-dev \
- libsqlite3-dev \
- libtheora-dev \
- libtool \
- libvorbis-dev \
- libwebp-dev \
- libxslt1-dev \
- libxt-dev \
- libxtst-dev \
- ruby
-
- # These are dependencies necessary for running tests.
- apt-get install \
- apache2 \
- curl \
- libapache2-mod-bw \
- libapache2-mod-php5 \
- libgpg-error-dev \
- pulseaudio-utils \
- python-gi \
- ruby
-
- # These are dependencies necessary for building the jhbuild.
- apt-get install \
- gobject-introspection \
- icon-naming-utils \
- libegl1-mesa-dev \
- libgcrypt11-dev \
- libgpg-error-dev \
- libp11-kit-dev \
- libtiff4-dev \
- libcroco3-dev \
- ragel \
- xutils-dev \
- xtrans-dev \
- libxfont-dev \
- libpciaccess-dev \
- x11proto-bigreqs-dev \
- x11proto-gl-dev \
- x11proto-input-dev \
- x11proto-video-dev \
- x11proto-scrnsaver-dev \
- x11proto-resource-dev \
- x11proto-xcmisc-dev \
- x11proto-xf86dri-dev \
- libxkbfile-dev
-}
-
-function installDependenciesWithYum {
- # These are dependencies necessary for building WebKitGTK+.
- yum install \
- autoconf \
- automake \
- bison \
- atk-devel \
- cairo-devel \
- enchant-devel \
- flex \
- fontconfig-devel \
- freetype-devel \
- gcc-c++ \
- geoclue-devel \
- gettext-devel \
- gobject-introspection-devel \
- gperf \
- gstreamer1-devel \
- gstreamer1-plugins-base-devel \
- gtk2-devel \
- gtk3-devel \
- gtk-doc \
- harfbuzz-devel \
- libsoup-devel \
- libicu-devel \
- libjpeg-turbo-devel \
- libpng-devel \
- libsecret-devel \
- libwebp-devel \
- libxslt-devel \
- libXt-devel \
- libXtst-devel \
- libgudev1-devel \
- mesa-libGL-devel \
- pcre-devel \
- ruby \
- sqlite-devel \
- perl-Switch \
- perl-version \
- python-devel
-
- # These are dependencies necessary for running tests.
- yum install \
- httpd \
- curl \
- mod_bw \
- libgpg-error-devel \
- pulseaudio-utils \
- pygobject3-base \
- ruby
-
- # These are dependencies necessary for building the jhbuild.
- yum install \
- gobject-introspection \
- icon-naming-utils \
- libgcrypt-devel \
- libgpg-error-devel \
- libp11-devel \
- libtiff-devel \
- libcroco-devel \
- mesa-libEGL-devel \
- ragel \
- xorg-x11-util-macros \
- xorg-x11-xtrans-devel \
- xorg-x11-proto-devel \
- libXfont-devel \
- libxkbfile-devel \
- libpciaccess-devel
-}
-
-checkInstaller
-
diff --git a/Tools/gtk/jhbuild-optional.modules b/Tools/gtk/jhbuild-optional.modules
deleted file mode 100644
index cccf8ffff..000000000
--- a/Tools/gtk/jhbuild-optional.modules
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
-<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
-<moduleset>
-
- <!-- This file contains a set of modules that are hard to get on
- certain distributions. Feel free to add more here, within reason,
- as long as they are not built by default. -->
-
- <repository type="tarball" name="ftp.gnome.org"
- href="http://ftp.gnome.org"/>
-
- <autotools id="libsecret" autogen-sh="configure">
- <branch repo="ftp.gnome.org"
- module="/pub/GNOME/sources/libsecret/0.11/libsecret-0.11.tar.xz" version="0.11"
- hash="sha256:e5399dfb61376a7500d20cb22715152780aa3a2c8a64281ec6bc8f0ebeb8b689"/>
- </autotools>
-
-</moduleset>
diff --git a/Tools/gtk/jhbuild.modules b/Tools/gtk/jhbuild.modules
deleted file mode 100644
index 4144b0ae6..000000000
--- a/Tools/gtk/jhbuild.modules
+++ /dev/null
@@ -1,335 +0,0 @@
-<?xml version="1.0"?>
-<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
-<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
-<moduleset>
-
- <metamodule id="webkitgtk-testing-dependencies">
- <dependencies>
- <dep package="make"/>
- <dep package="cairo"/>
- <dep package="fonts"/>
- <dep package="fontconfig"/>
- <dep package="freetype6"/>
- <dep package="harfbuzz"/>
- <dep package="libxml2"/>
- <dep package="gdk-pixbuf"/>
- <dep package="gtk+"/>
- <dep package="glib"/>
- <dep package="glib-networking"/>
- <dep package="gnome-icon-theme"/>
- <dep package="gnome-icon-theme-symbolic"/>
- <dep package="gnome-themes-standard"/>
- <dep package="libsoup"/>
- <dep package="atk"/>
- <dep package="at-spi2-core"/>
- <dep package="at-spi2-atk"/>
- <dep package="gstreamer"/>
- <dep package="gst-plugins-base"/>
- <dep package="gst-plugins-good"/>
- <dep package="gst-plugins-bad"/>
- <dep package="gst-libav"/>
- <dep package="xserver"/>
- </dependencies>
- </metamodule>
-
- <include href="jhbuild-optional.modules"/>
-
- <repository type="tarball" name="ftp.gnu.org"
- href="ftp://ftp.gnu.org/gnu/"/>
- <repository type="git" name="github.com"
- href="git://github.com"/>
- <repository type="tarball" name="sourceware.org-mirror"
- href="ftp://mirrors.kernel.org/sources.redhat.com/"/>
- <repository type="tarball" name="ftp.gnome.org"
- href="http://ftp.gnome.org"/>
- <repository type="git" name="git.gnome.org"
- href="git://git.gnome.org/"/>
- <repository type="tarball" name="cairographics.org"
- href="http://cairographics.org"/>
- <repository type="tarball" name="freedesktop.org"
- href="http://www.freedesktop.org"/>
- <repository type="tarball" name="xorg"
- href="http://xorg.freedesktop.org"/>
- <repository type="tarball" name="xmlsoft.org"
- href="ftp://xmlsoft.org"/>
- <repository type="tarball" name="gstreamer"
- href="http://gstreamer.freedesktop.org/src/"/>
- <repository type="tarball" name="savannah.gnu.org"
- href="http://download.savannah.gnu.org/releases/"/>
-
- <autotools id="make" autogen-sh="configure">
- <branch repo="ftp.gnu.org"
- module="make/make-3.82.tar.bz2" version="3.82"
- size="1242186" md5sum="1a11100f3c63fcf5753818e59d63088f">
- <patch file="make-3.82-arg-list-length.patch" strip="1"/>
- <patch file="make-3.82-parallel-build.patch" strip="1"/>
- </branch>
- </autotools>
-
- <autotools id="cairo" autogen-sh="configure"
- autogenargs="--enable-gl=yes --enable-egl=yes --enable-glx=yes">
- <dependencies>
- <dep package="fontconfig"/>
- <dep package="pixman"/>
- <dep package="glib"/>
- </dependencies>
- <branch module="releases/cairo-1.12.8.tar.xz" version="1.12.8"
- repo="cairographics.org"
- hash="sha256:8fbb6fc66117ab4100bad830cb4479497e53c6f3facb98bf05c8d298554ebdd9"
- md5sum="8b3dcade859c44fb7e56fc68edfe9a45">
- </branch>
- </autotools>
-
- <autotools id="pixman" autogen-sh="configure"
- autogenargs="--enable-gtk=no">
- <branch module="releases/pixman-0.24.0.tar.gz" version="0.24.0"
- repo="cairographics.org"
- hash="sha256:a5647c7158f103eedff5fba799018f4169f6b26b573ab7685812ebc9a1c5d2e4"
- md5sum="a2d0b120509bdccb10aa7f4bec3730e4">
- </branch>
- </autotools>
-
- <autotools id="fonts"
- skip-autogen="true">
- <branch repo="github.com" module="mrobinson/webkitgtk-test-fonts.git" checkoutdir="webkitgtk-test-fonts" tag="0.0.4"/>
- </autotools>
-
- <autotools id="freetype6" autogen-sh="configure">
- <branch module="freetype/freetype-2.4.11.tar.bz2" version="2.4.11"
- repo="savannah.gnu.org"
- hash="sha256:ef9d0bcb64647d9e5125dc7534d7ca371c98310fec87677c410f397f71ffbe3f"
- md5sum="b93435488942486c8d0ca22e8f768034">
- <patch file="freetype6-2.4.11-truetype-font-height-fix.patch" strip="1"/>
- </branch>
- </autotools>
-
- <autotools id="harfbuzz" autogen-sh="configure">
- <branch module="software/harfbuzz/release/harfbuzz-0.9.14.tar.bz2" version="0.9.14"
- checkoutdir="harfbuzz-0.9.14"
- repo="freedesktop.org"
- hash="sha256:d07c0ffdbbbfdfbb6c65e73fe9c76466e87dbf04b094cbd0abf5fd7d571a4004"
- md5sum="7e1990b79060e98e2d31f677a0ac9eed">
- </branch>
- </autotools>
-
- <autotools id="libffi" autogen-sh="configure">
- <branch module="libffi/libffi-3.0.10.tar.gz" version="3.0.10"
- repo="sourceware.org-mirror"
- hash="sha256:f01eb9027e9eb56aeaeef636649877756d475d714ef8b47f627f65bc5f3b492f"
- md5sum="79390673f5d07a8fb342bc09b5055b6f"/>
- </autotools>
-
- <autotools id="gdk-pixbuf" autogen-sh="configure"
- autogenargs="--disable-introspection">
- <dependencies>
- <dep package="glib"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/gdk-pixbuf/2.26/gdk-pixbuf-2.26.5.tar.xz" version="2.26.5"
- repo="ftp.gnome.org"
- hash="sha256:77696fd163bca95a130a1883dbd78d0ae4d782de2fc85a9a38556d13681f5c84"
- md5sum="339329e6d619ee3e1cb93979111b04c0"/>
- </autotools>
-
- <autotools id="librsvg" autogen-sh="configure"
- autogenargs="--disable-introspection --enable-pixbuf-loader --disable-gtk-theme">
- <dependencies>
- <dep package="gdk-pixbuf"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/librsvg/2.36/librsvg-2.36.1.tar.xz" version="2.36.1"
- repo="ftp.gnome.org"
- hash="sha256:786b95e1a091375c5ef2997a21c69ff24d7077afeff18197355f54d9dcbcd8c5"
- md5sum="89d483f30a7c77245b7ee02faaea5a5a"/>
- </autotools>
-
- <autotools id="gtk+" autogen-sh="configure"
- autogenargs="--disable-introspection">
- <dependencies>
- <dep package="glib"/>
- <dep package="cairo"/>
- <dep package="at-spi2-atk"/>
- <dep package="gdk-pixbuf"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/gtk+/3.6/gtk+-3.6.0.tar.xz" version="3.6.0"
- repo="ftp.gnome.org"
- hash="sha256:e13f45225a795ebe9e4047486fa57b3232e6a21539983775db6cd4ae9046b049"/>
- </autotools>
-
- <autotools id="glib"
- autogen-sh="configure"
- autogenargs="--disable-dtrace">
- <dependencies>
- <dep package="libffi"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/glib/2.36/glib-2.36.0.tar.xz" version="2.36.0"
- repo="ftp.gnome.org"
- hash="sha256:455a8abe8692c5174bcc7ffa15b96a7521a2f2f9fb47594405927c35cb9bb227"/>
- </autotools>
-
- <autotools id="glib-networking">
- <dependencies>
- <dep package="glib"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/glib-networking/2.33/glib-networking-2.33.2.tar.xz" version="2.33.2"
- repo="ftp.gnome.org"
- hash="sha256:e298cff3935eb752be290bbf734e457f1870bdb5370ee292606e6040a82074e7"
- md5sum="5abb364f2a0babe2ec1e3a6d59f69043"/>
- </autotools>
-
- <autotools id="libsoup"
- autogenargs="--without-gnome --disable-introspection">
- <dependencies>
- <dep package="glib-networking"/>
- </dependencies>
- <branch module="/pub/GNOME/sources/libsoup/2.42/libsoup-2.42.0.tar.xz" version="2.42.0"
- repo="ftp.gnome.org"
- hash="sha256:9e0e7eb5d3f7401ccf521fbc289fc1fa0923b7c7833729e2ed7696f7b848893e"
- md5sum="a632a38d2983c2a88679672d00940128"/>
- </autotools>
-
- <autotools id="fontconfig" autogen-sh="configure">
- <branch module="software/fontconfig/release/fontconfig-2.8.0.tar.gz" version="2.8.0"
- repo="freedesktop.org"
- hash="sha256:fa2a1c6eea654d9fce7a4b1220f10c99cdec848dccaf1625c01f076b31382335"
- md5sum="77e15a92006ddc2adbb06f840d591c0e">
- </branch>
- </autotools>
-
- <autotools id="gnome-icon-theme" autogen-sh="configure">
- <dependencies>
- <dep package="gtk+"/>
- </dependencies>
- <branch module="pub/GNOME/sources/gnome-icon-theme/3.2/gnome-icon-theme-3.2.1.tar.xz" version="3.2.1"
- repo="ftp.gnome.org"
- hash="sha256:a7f0a8b17e91ac338fdbc01ac59a8738e9c1e201de492c070d43aacf291a8959"
- md5sum="40be1e5a6eae11181311a6fc432cf892">
- </branch>
- </autotools>
-
- <autotools id="gnome-icon-theme-symbolic" autogen-sh="configure">
- <dependencies>
- <dep package="gtk+"/>
- </dependencies>
- <branch module="pub/GNOME/sources/gnome-icon-theme-symbolic/3.2/gnome-icon-theme-symbolic-3.2.1.tar.xz" version="3.2.1"
- repo="ftp.gnome.org"
- hash="sha256:a558af2f87f761f00421f49c1addd2149b70228158e09327fa861219ac1a63cb"
- md5sum="94137d3c256f2cc80298a9bef15d68c4">
- </branch>
- </autotools>
-
- <autotools id="gnome-themes-standard" autogen-sh="configure">
- <dependencies>
- <dep package="gtk+"/>
- <dep package="librsvg"/>
- </dependencies>
- <branch module="pub/GNOME/sources/gnome-themes-standard/3.6/gnome-themes-standard-3.6.0.tar.xz" version="3.6.0"
- repo="ftp.gnome.org"
- hash="sha256:d832fd38f7659f470df5ddc52131a59f989c75f3a70f8b3a514f89d90d4f43ec">
- </branch>
- </autotools>
-
- <autotools id="atk"
- autogen-sh="configure"
- autogenargs="--disable-introspection">
- <branch module="pub/GNOME/sources/atk/2.8/atk-2.8.0.tar.xz" version="2.8.0"
- repo="ftp.gnome.org"
- hash="sha256:b22519176226f3e07cf6d932b77852e6b6be4780977770704b32d0f4e0686df4"/>
- </autotools>
-
- <autotools id="at-spi2-core"
- autogenargs="--disable-introspection">
- <branch module="pub/GNOME/sources/at-spi2-core/2.8/at-spi2-core-2.8.0.tar.xz" version="2.8.0"
- repo="ftp.gnome.org"
- hash="sha256:1861a30fc7f583d5a567a0ba547db67ce9bd294f0d1c9f7403c96a10a481c458">
- </branch>
- <dependencies>
- <dep package="glib"/>
- </dependencies>
- </autotools>
-
- <autotools id="at-spi2-atk">
- <branch module="pub/GNOME/sources/at-spi2-atk/2.8/at-spi2-atk-2.8.0.tar.xz" version="2.8.0"
- repo="ftp.gnome.org"
- hash="sha256:4688acbc1474cda0aa49341f109ad0726603ce3e872cc6521c74931338c7ba20">
- <patch file="at-spi2-atk-2.8.0-null-check-after-cleanup.patch" strip="1"/>
- </branch>
- <dependencies>
- <dep package="glib"/>
- <dep package="atk"/>
- <dep package="at-spi2-core"/>
- </dependencies>
- </autotools>
-
- <autotools id="libxml2">
- <branch module="/libxml2/libxml2-2.9.0.tar.gz" version="2.9.0"
- repo="xmlsoft.org"
- hash="sha256:ad25d91958b7212abdc12b9611cfb4dc4e5cddb6d1e9891532f48aacee422b82"
- md5sum="5b9bebf4f5d2200ae2c4efe8fa6103f7">
- <patch file="libxml2-2.9.0-dtd.patch" strip="1"/>
- </branch>
- </autotools>
-
- <autotools id="gstreamer">
- <branch module="gstreamer/gstreamer-1.0.8.tar.xz" version="1.0.8"
- repo="gstreamer"
- hash="sha256:ff70f45509566b88e35986971ace5e89cb6cb232e9ca249f84502abceef1762d"
- md5sum="fb0c73470e8dd5dab01e5e9e62db9db9"/>
- </autotools>
-
- <autotools id="gst-plugins-base" autogenargs="--disable-examples">
- <dependencies>
- <dep package="gstreamer"/>
- </dependencies>
- <branch module="gst-plugins-base/gst-plugins-base-1.0.8.tar.xz" version="1.0.8"
- repo="gstreamer"
- hash="sha256:b55c9deea00acf789f82845c088b7c7c17b3ecef24a94831a819071b3dd8ef0d"
- md5sum="c8b36678186e7d4fb1e6395ffcd1abb1"/>
- </autotools>
-
- <autotools id="gst-plugins-good" autogenargs="--disable-examples --disable-soup --disable-gst_v4l2 --without-libv4l2">
- <dependencies>
- <dep package="gst-plugins-base"/>
- </dependencies>
-
- <branch module="gst-plugins-good/gst-plugins-good-1.0.8.tar.xz" version="1.0.8"
- repo="gstreamer"
- hash="sha256:97831570ccdd8e15557f18858b965e54433d572d27fdabebb8b710cee276cfad"
- md5sum="4969826043bbd3f76e4a0d49ea475736">
- <patch file="udpsrc-improve-timeouts.patch" strip="1"/>
- <patch file="rtspsrc-timeout-on-udpsrc-is-in-nanoseconds.patch" strip="1"/>
- </branch>
- </autotools>
-
- <autotools id="gst-plugins-bad" autogenargs="--disable-examples">
- <dependencies>
- <dep package="gst-plugins-base"/>
- </dependencies>
- <branch module="gst-plugins-bad/gst-plugins-bad-1.0.8.tar.xz" version="1.0.8"
- repo="gstreamer"
- hash="sha256:6949b5532034fc37d5a874e4e3330107767238bc4def9f769b8193124e2420cc"
- md5sum="a2fdf125ee2ae46047dcbcfc305949ee"/>
- </autotools>
-
- <autotools id="gst-libav" autogenargs="--with-libav-extra-configure='--disable-yasm'">
- <dependencies>
- <dep package="gst-plugins-base"/>
- </dependencies>
- <branch module="gst-libav/gst-libav-1.0.8.tar.xz" version="1.0.8"
- repo="gstreamer"
- hash="sha256:e6e538290e585c993609337761d894dd1b6b53ef625798b2a511d5314579995f"
- md5sum="7c2e8db039efa1880a61a6982a6909d7"/>
- </autotools>
-
- <autotools id="xserver" autogenargs="--disable-xinerama --enable-glx --enable-composite --disable-xorg --disable-dmx --disable-xnest --disable-xquartz --disable-xwin --disable-xephyr --disable-xfake --disable-xfbdev --disable-install-setuid --disable-unit-tests --enable-unix-transport --enable-tcp-transport --enable-local-transport --with-xkb-path=/usr/share/X11/xkb --with-xkb-output=/var/lib/xkb --with-xkb-bin-directory=/usr/bin">
- <dependencies>
- <dep package="pixman"/>
- </dependencies>
- <branch module="/releases/individual/xserver/xorg-server-1.12.4.tar.gz" version="1.12.4"
- repo="xorg"
- hash="sha256:d88225cd3c4a6ecd92d1360b34a0e5b6346e2a04c842c018cef36d8a370714ef"
- md5sum="19c17bf7ac3e2ce34bc40108692c031f">
- <patch file="xserver-remove-bogus-dependencies.patch" strip="1"/>
- <patch file="xserver-fix-glx-init.patch" strip="1"/>
- </branch>
- </autotools>
-
-</moduleset>
diff --git a/Tools/gtk/jhbuildrc b/Tools/gtk/jhbuildrc
deleted file mode 100644
index 1d312927c..000000000
--- a/Tools/gtk/jhbuildrc
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-#
-# 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 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
-
-import multiprocessing
-import sys
-
-__gtk_tools_directory = os.path.abspath(os.path.dirname(__file__))
-sys.path = [__gtk_tools_directory] + sys.path
-import common
-
-build_policy = 'updated'
-
-__moduleset_file_uri = 'file://' + os.path.join(__gtk_tools_directory, 'jhbuild.modules')
-__extra_modulesets = os.environ.get("WEBKIT_EXTRA_MODULESETS", "").split(",")
-moduleset = [ __moduleset_file_uri, ]
-if __extra_modulesets != ['']:
- moduleset.extend(__extra_modulesets)
-
-__extra_modules = os.environ.get("WEBKIT_EXTRA_MODULES", "").split(",")
-modules = [ 'webkitgtk-testing-dependencies', ]
-if __extra_modules != ['']:
- modules.extend(__extra_modules)
-
-if os.environ.has_key('WEBKIT_OUTPUTDIR'):
- checkoutroot = os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], 'Dependencies', 'Source'))
- prefix = os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], 'Dependencies', 'Root'))
-else:
- checkoutroot = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Source'))
- prefix = os.path.abspath(common.top_level_path('WebKitBuild','Dependencies', 'Root'))
-
-nonotify = True
-notrayicon = True
-
-if 'NUMBER_OF_PROCESSORS' in os.environ:
- jobs = os.environ['NUMBER_OF_PROCESSORS']
-
-# GTK+ 3.0.12 misses the -lm flag when linking the tests.
-module_makeargs['gtk+'] = 'LDFLAGS="-lm" ' + makeargs
-
-# Avoid runtime conflicts with GStreamer system-wide plugins. We want
-# to use only the plugins we build in JHBuild.
-os.environ['GST_PLUGIN_SYSTEM_PATH'] = ''
-
-# We often end up using the memory backend anyway, so explicitly choosing
-# it will prevent the warning message.
-os.environ['GSETTINGS_BACKEND'] = 'memory'
-
-# We always enable introspection so that we can sniff out problems with our
-# annotations sooner rather than later.
-autogenargs='--enable-introspection'
diff --git a/Tools/gtk/patches/at-spi2-atk-2.8.0-null-check-after-cleanup.patch b/Tools/gtk/patches/at-spi2-atk-2.8.0-null-check-after-cleanup.patch
deleted file mode 100644
index cd13ee487..000000000
--- a/Tools/gtk/patches/at-spi2-atk-2.8.0-null-check-after-cleanup.patch
+++ /dev/null
@@ -1,22 +0,0 @@
-From 5de2b2bc9c83045a6870e13cd20bc3c2c0a1121f Mon Sep 17 00:00:00 2001
-From: Mike Gorse <mgorse@suse.com>
-Date: Wed, 10 Apr 2013 17:40:47 +0000
-Subject: Add NULL check to fix crash when receiving a dbus reply after cleanup
-
----
-diff --git a/atk-adaptor/bridge.c b/atk-adaptor/bridge.c
-index 9683e18..b016da6 100644
---- a/atk-adaptor/bridge.c
-+++ b/atk-adaptor/bridge.c
-@@ -88,6 +88,9 @@ tally_event_reply ()
- {
- static int replies_received = 0;
-
-+ if (!spi_global_app_data)
-+ return;
-+
- replies_received++;
- if (replies_received == 3)
- {
---
-cgit v0.9.1
diff --git a/Tools/gtk/patches/libxml2-2.9.0-dtd.patch b/Tools/gtk/patches/libxml2-2.9.0-dtd.patch
deleted file mode 100644
index 7ed953ba8..000000000
--- a/Tools/gtk/patches/libxml2-2.9.0-dtd.patch
+++ /dev/null
@@ -1,27 +0,0 @@
-From cf8f0424db45c43ecda812b7c238ece5e2398107 Mon Sep 17 00:00:00 2001
-From: Dan Winship <danw@gnome.org>
-Date: Fri, 21 Dec 2012 11:13:31 +0800
-Subject: [PATCH] Fix an error in the progressive DTD parsing code
-
-For https://bugzilla.gnome.org/show_bug.cgi?id=689958
-We were looking for the wrong character in the input stream
----
- parser.c | 2 +-
- 1 file changed, 1 insertion(+), 1 deletion(-)
-
-diff --git a/parser.c b/parser.c
-index c7802cf..e719c9f 100644
---- a/parser.c
-+++ b/parser.c
-@@ -12042,7 +12042,7 @@ xmlParseCheckTransition(xmlParserCtxtPtr ctxt, const char *chunk, int size) {
- }
- if ((ctxt->progressive == XML_PARSER_DTD) ||
- (ctxt->instate == XML_PARSER_DTD)) {
-- if (memchr(chunk, ']', size) != NULL)
-+ if (memchr(chunk, '>', size) != NULL)
- return(1);
- return(0);
- }
---
-1.8.0.1
-
diff --git a/Tools/gtk/patches/make-3.82-arg-list-length.patch b/Tools/gtk/patches/make-3.82-arg-list-length.patch
deleted file mode 100644
index e83512843..000000000
--- a/Tools/gtk/patches/make-3.82-arg-list-length.patch
+++ /dev/null
@@ -1,104 +0,0 @@
-diff -u make-3.82-orig/configure.in make-3.82/configure.in
---- make-3.82-orig/configure.in 2010-07-28 07:39:50.000000000 +0200
-+++ make-3.82/configure.in 2012-03-21 12:34:20.000000000 +0100
-@@ -64,7 +64,8 @@
- AC_HEADER_STAT
- AC_HEADER_TIME
- AC_CHECK_HEADERS(stdlib.h locale.h unistd.h limits.h fcntl.h string.h \
-- memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h)
-+ memory.h sys/param.h sys/resource.h sys/time.h sys/timeb.h \
-+ sys/user.h linux/binfmts.h)
-
- # Set a flag if we have an ANSI C compiler
- if test "$ac_cv_prog_cc_stdc" != no; then
-Subdirectorios comunes: make-3.82-orig/doc y make-3.82/doc
-Subdirectorios comunes: make-3.82-orig/glob y make-3.82/glob
-diff -u make-3.82-orig/job.c make-3.82/job.c
---- make-3.82-orig/job.c 2010-07-24 10:27:50.000000000 +0200
-+++ make-3.82/job.c 2012-03-21 12:34:20.000000000 +0100
-@@ -29,6 +29,11 @@
-
- #include <string.h>
-
-+#if defined (HAVE_LINUX_BINFMTS_H) && defined (HAVE_SYS_USER_H)
-+#include <sys/user.h>
-+#include <linux/binfmts.h>
-+#endif
-+
- /* Default shell to use. */
- #ifdef WINDOWS32
- #include <windows.h>
-@@ -2795,6 +2800,7 @@
- unsigned int sflags_len = strlen (shellflags);
- char *command_ptr = NULL; /* used for batch_mode_shell mode */
- char *new_line;
-+ char *args_ptr;
-
- # ifdef __EMX__ /* is this necessary? */
- if (!unixy_shell)
-@@ -2865,8 +2871,17 @@
- return new_argv;
- }
-
-+#ifdef MAX_ARG_STRLEN
-+ static char eval_line[] = "eval\\ \\\"set\\ x\\;\\ shift\\;\\ ";
-+#define ARG_NUMBER_DIGITS 5
-+#define EVAL_LEN (sizeof(eval_line)-1 + shell_len + 4 \
-+ + (7 + ARG_NUMBER_DIGITS) * 2 * line_len / (MAX_ARG_STRLEN - 2))
-+#else
-+#define EVAL_LEN 0
-+#endif
-+
- new_line = alloca (shell_len + 1 + sflags_len + 1
-- + (line_len*2) + 1);
-+ + (line_len*2) + 1 + EVAL_LEN);
- ap = new_line;
- memcpy (ap, shell, shell_len);
- ap += shell_len;
-@@ -2875,6 +2890,30 @@
- ap += sflags_len;
- *(ap++) = ' ';
- command_ptr = ap;
-+
-+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
-+ if (unixy_shell && line_len > MAX_ARG_STRLEN)
-+ {
-+ unsigned j;
-+ memcpy (ap, eval_line, sizeof (eval_line) - 1);
-+ ap += sizeof (eval_line) - 1;
-+ for (j = 1; j <= 2 * line_len / (MAX_ARG_STRLEN - 2); j++)
-+ ap += sprintf (ap, "\\$\\{%u\\}", j);
-+ *ap++ = '\\';
-+ *ap++ = '"';
-+ *ap++ = ' ';
-+ /* Copy only the first word of SHELL to $0. */
-+ for (p = shell; *p != '\0'; ++p)
-+ {
-+ if (isspace ((unsigned char)*p))
-+ break;
-+ *ap++ = *p;
-+ }
-+ *ap++ = ' ';
-+ }
-+#endif
-+ args_ptr = ap;
-+
- for (p = line; *p != '\0'; ++p)
- {
- if (restp != NULL && *p == '\n')
-@@ -2922,6 +2961,14 @@
- }
- #endif
- *ap++ = *p;
-+
-+#if !defined (WINDOWS32) && defined (MAX_ARG_STRLEN)
-+ if (unixy_shell && line_len > MAX_ARG_STRLEN && (ap - args_ptr > MAX_ARG_STRLEN - 2))
-+ {
-+ *ap++ = ' ';
-+ args_ptr = ap;
-+ }
-+#endif
- }
- if (ap == new_line + shell_len + sflags_len + 2)
- /* Line was empty. */
-
diff --git a/Tools/gtk/patches/make-3.82-parallel-build.patch b/Tools/gtk/patches/make-3.82-parallel-build.patch
deleted file mode 100644
index c056c2e0e..000000000
--- a/Tools/gtk/patches/make-3.82-parallel-build.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-diff -u make-3.82-orig/remake.c make-3.82/remake.c
---- make-3.82-orig/remake.c 2010-07-13 03:20:42.000000000 +0200
-+++ make-3.82/remake.c 2012-03-21 12:47:52.000000000 +0100
-@@ -301,7 +301,7 @@
- /* Check for the case where a target has been tried and failed but
- the diagnostics hasn't been issued. If we need the diagnostics
- then we will have to continue. */
-- if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag))
-+ if (!(f->updated && f->update_status > 0 && !f->dontcare && f->no_diag) && f->command_state!=cs_not_started )
- {
- DBF (DB_VERBOSE, _("Pruning file `%s'.\n"));
- return f->command_state == cs_finished ? f->update_status : 0;
-@@ -614,6 +614,12 @@
- d->file->dontcare = file->dontcare;
- }
-
-+ /* We may have already encountered this file earlier in the same
-+ * pass before we knew we'd be updating this target. In that
-+ * case calling update_file now would result in the file being
-+ * inappropriately pruned so we toggle the considered bit back
-+ * off first. */
-+ d->file->considered = !considered;
-
- dep_status |= update_file (d->file, depth);
-
-
diff --git a/Tools/gtk/patches/xserver-fix-glx-init.patch b/Tools/gtk/patches/xserver-fix-glx-init.patch
deleted file mode 100644
index 2dc965bbe..000000000
--- a/Tools/gtk/patches/xserver-fix-glx-init.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-diff --git a/mi/miinitext.c b/mi/miinitext.c
-index 6ceae05..cda4e43 100644
---- a/mi/miinitext.c
-+++ b/mi/miinitext.c
-@@ -540,6 +540,9 @@ static ExtensionModule staticExtensions[] = {
- #ifdef DAMAGE
- {DamageExtensionInit, "DAMAGE", &noDamageExtension, NULL},
- #endif
-+#ifdef GLXEXT
-+ {GlxExtensionInit, "GLX", &noGlxExtension, NULL},
-+#endif
- {NULL, NULL, NULL, NULL, NULL}
- };
-
diff --git a/Tools/gtk/patches/xserver-remove-bogus-dependencies.patch b/Tools/gtk/patches/xserver-remove-bogus-dependencies.patch
deleted file mode 100644
index 97b1a1314..000000000
--- a/Tools/gtk/patches/xserver-remove-bogus-dependencies.patch
+++ /dev/null
@@ -1,43 +0,0 @@
-From 879f42531ff04be578c39f9d44548aeb3ded67fd Mon Sep 17 00:00:00 2001
-From: Gustavo Noronha Silva <gustavo.noronha@collabora.com>
-Date: Wed, 8 May 2013 19:44:15 -0300
-Subject: [PATCH 2/2] Filter out -l parameters when setting dependencies
-
-Newer make (Fedora 19) gets confused when it finds a -l parameter in a
-dependency, and tries to make it as a target, causing the build to fail.
-
-Signed-off-by: Gustavo Noronha Silva <gustavo.noronha@collabora.com>
----
- hw/vfb/Makefile.am | 2 +-
- test/Makefile.am | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/hw/vfb/Makefile.am b/hw/vfb/Makefile.am
-index 9f4992c..06830ae 100644
---- a/hw/vfb/Makefile.am
-+++ b/hw/vfb/Makefile.am
-@@ -25,7 +25,7 @@ XVFB_LIBS = \
- $(XSERVER_LIBS)
-
- Xvfb_LDADD = $(XVFB_LIBS) $(XVFB_SYS_LIBS) $(XSERVER_SYS_LIBS)
--Xvfb_DEPENDENCIES = $(XVFB_LIBS)
-+Xvfb_DEPENDENCIES = $(filter-out -l%,$(XVFB_LIBS))
- Xvfb_LDFLAGS = $(LD_EXPORT_SYMBOLS_FLAG)
-
- relink:
-diff --git a/test/Makefile.am b/test/Makefile.am
-index 34f53fc..3509306 100644
---- a/test/Makefile.am
-+++ b/test/Makefile.am
-@@ -117,7 +117,7 @@ libxservertest_la_LIBADD += \
- endif
- endif
-
--libxservertest_la_DEPENDENCIES = $(libxservertest_la_LIBADD)
-+libxservertest_la_DEPENDENCIES = $(filter-out -l%,$(libxservertest_la_LIBADD))
- endif
-
- EXTRA_DIST = ddxstubs.c
---
-1.8.2.1
-
diff --git a/Tools/iExploder/iexploder-1.3.2/CHANGELOG.txt b/Tools/iExploder/iexploder-1.3.2/CHANGELOG.txt
deleted file mode 100644
index a9d50603f..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/LICENSE.txt b/Tools/iExploder/iexploder-1.3.2/LICENSE.txt
deleted file mode 100644
index 51997184a..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/README.txt b/Tools/iExploder/iexploder-1.3.2/README.txt
deleted file mode 100644
index a941697d1..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/config.rb b/Tools/iExploder/iexploder-1.3.2/htdocs/config.rb
deleted file mode 100644
index d9e7e1be2..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/cssproperties.in b/Tools/iExploder/iexploder-1.3.2/htdocs/cssproperties.in
deleted file mode 100644
index d49eb8e7e..000000000
--- a/Tools/iExploder/iexploder-1.3.2/htdocs/cssproperties.in
+++ /dev/null
@@ -1,426 +0,0 @@
-# From WebKit svn r66165 (WebCore/css/CSSPropertyNames.in)
--webkit-animation
--webkit-animation-delay
--webkit-animation-direction
--webkit-animation-duration
--webkit-animation-fill-mode
--webkit-animation-iteration-count
--webkit-animation-name
--webkit-animation-play-state
--webkit-animation-timing-function
--webkit-appearance
--webkit-backface-visibility
--webkit-background-clip
--webkit-background-composite
--webkit-background-origin
--webkit-background-size
--webkit-border-end
--webkit-border-end-color
--webkit-border-end-style
--webkit-border-end-width
--webkit-border-fit
--webkit-border-horizontal-spacing
--webkit-border-image
--webkit-border-radius
--webkit-border-start
--webkit-border-start-color
--webkit-border-start-style
--webkit-border-start-width
--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-reflect
--webkit-box-shadow
--webkit-color-correction
--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-span
--webkit-column-width
--webkit-columns
--webkit-font-size-delta
--webkit-font-smoothing
--webkit-highlight
--webkit-hyphenate-character
--webkit-hyphenate-locale
--webkit-hyphens
--webkit-line-break
--webkit-line-clamp
--webkit-margin-bottom-collapse
--webkit-margin-collapse
--webkit-margin-end
--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-mask
--webkit-mask-attachment
--webkit-mask-box-image
--webkit-mask-clip
--webkit-mask-composite
--webkit-mask-image
--webkit-mask-origin
--webkit-mask-position
--webkit-mask-position-x
--webkit-mask-position-y
--webkit-mask-repeat
--webkit-mask-repeat-x
--webkit-mask-repeat-y
--webkit-mask-size
--webkit-match-nearest-mail-blockquote-color
--webkit-nbsp-mode
--webkit-padding-end
--webkit-padding-start
--webkit-perspective
--webkit-perspective-origin
--webkit-perspective-origin-x
--webkit-perspective-origin-y
--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-transform
--webkit-transform-origin
--webkit-transform-origin-x
--webkit-transform-origin-y
--webkit-transform-origin-z
--webkit-transform-style
--webkit-transition
--webkit-transition-delay
--webkit-transition-duration
--webkit-transition-property
--webkit-transition-timing-function
--webkit-user-drag
--webkit-user-modify
--webkit-user-select
--webkit-variable-declaration-block
-background
-background-attachment
-background-clip
-background-color
-background-image
-background-origin
-background-position
-background-position-x
-background-position-y
-background-repeat
-background-repeat-x
-background-repeat-y
-background-size
-border
-border-bottom
-border-bottom-color
-border-bottom-left-radius
-border-bottom-right-radius
-border-bottom-style
-border-bottom-width
-border-collapse
-border-color
-border-left
-border-left-color
-border-left-style
-border-left-width
-border-radius
-border-right
-border-right-color
-border-right-style
-border-right-width
-border-spacing
-border-style
-border-top
-border-top-color
-border-top-left-radius
-border-top-right-radius
-border-top-style
-border-top-width
-border-width
-bottom
-box-sizing
-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
-pointer-events
-position
-quotes
-resize
-right
-size
-src
-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-rendering
-text-shadow
-text-transform
-text-underline
-text-underline-color
-text-underline-mode
-text-underline-style
-text-underline-width
-top
-unicode-bidi
-unicode-range
-vertical-align
-visibility
-white-space
-widows
-width
-word-break
-word-spacing
-word-wrap
-z-index
-zoom
-
-# 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
-
-# Removed from WebKit between r53119 and r66165
--webkit-binding
-
-# Removed from WebKit between r44660 and r53119
--webkit-border-bottom-left-radius
--webkit-border-bottom-right-radius
--webkit-border-top-left-radius
--webkit-border-top-right-radius
-
-# Removed from WebKit between r24523 and r44660
--webkit-dashboard-region
-scrollbar-3dlight-color
-scrollbar-arrow-color
-scrollbar-darkshadow-color
-scrollbar-face-color
-scrollbar-highlight-color
-scrollbar-shadow-color
-scrollbar-track-color
-
-# 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/Tools/iExploder/iexploder-1.3.2/htdocs/cssvalues.in b/Tools/iExploder/iexploder-1.3.2/htdocs/cssvalues.in
deleted file mode 100644
index c19f78fda..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/htmlattrs.in b/Tools/iExploder/iexploder-1.3.2/htdocs/htmlattrs.in
deleted file mode 100644
index 0dc81169b..000000000
--- a/Tools/iExploder/iexploder-1.3.2/htdocs/htmlattrs.in
+++ /dev/null
@@ -1,373 +0,0 @@
-# From WebKit svn r66165 (WebCore/html/HTMLAttributeNames.in)
-abbr
-accept
-accept_charset
-accesskey
-action
-align
-alink
-alt
-archive
-aria-activedescendant
-aria-atomic
-aria-busy
-aria-checked
-aria-controls
-aria-describedby
-aria-disabled
-aria-dropeffect
-aria-expanded
-aria-flowto
-aria-grabbed
-aria-haspopup
-aria-help
-aria-hidden
-aria-label
-aria-labeledby
-aria-labelledby
-aria-level
-aria-live
-aria-multiselectable
-aria-orientation
-aria-owns
-aria-pressed
-aria-readonly
-aria-relevant
-aria-required
-aria-selected
-aria-valuemax
-aria-valuemin
-aria-valuenow
-aria-valuetext
-async
-autocomplete
-autofocus
-autoplay
-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
-controls
-coords
-data
-datetime
-declare
-defer
-dir
-direction
-disabled
-draggable
-enctype
-end
-event
-expanded
-face
-focused
-for
-formnovalidate
-frame
-frameborder
-headers
-height
-hidden
-high
-href
-hreflang
-hspace
-http_equiv
-id
-incremental
-indeterminate
-ismap
-keytype
-label
-lang
-language
-leftmargin
-link
-list
-longdesc
-loop
-loopend
-loopstart
-low
-lowsrc
-manifest
-marginheight
-marginwidth
-max
-maxlength
-mayscript
-media
-method
-min
-multiple
-name
-nohref
-noresize
-noshade
-novalidate
-nowrap
-object
-onabort
-onbeforecopy
-onbeforecut
-onbeforeload
-onbeforepaste
-onbeforeprocess
-onbeforeunload
-onblur
-oncanplay
-oncanplaythrough
-onchange
-onclick
-oncontextmenu
-oncopy
-oncut
-ondblclick
-ondrag
-ondragend
-ondragenter
-ondragleave
-ondragover
-ondragstart
-ondrop
-ondurationchange
-onemptied
-onended
-onerror
-onfocus
-onfocusin
-onfocusout
-onhashchange
-oninput
-oninvalid
-onkeydown
-onkeypress
-onkeyup
-onload
-onloadeddata
-onloadedmetadata
-onloadstart
-onmousedown
-onmousemove
-onmouseout
-onmouseover
-onmouseup
-onmousewheel
-onoffline
-ononline
-onorientationchange
-onpagehide
-onpageshow
-onpaste
-onpause
-onplay
-onplaying
-onpopstate
-onprogress
-onratechange
-onreset
-onresize
-onscroll
-onsearch
-onseeked
-onseeking
-onselect
-onselectstart
-onstalled
-onstorage
-onsubmit
-onsuspend
-ontimeupdate
-ontouchcancel
-ontouchend
-ontouchmove
-ontouchstart
-onunload
-onvolumechange
-onwaiting
-onwebkitanimationend
-onwebkitanimationiteration
-onwebkitanimationstart
-onwebkitbeginfullscreen
-onwebkitendfullscreen
-onwebkittransitionend
-optimum
-pattern
-placeholder
-playcount
-pluginurl
-poster
-precision
-preload
-primary
-profile
-progress
-prompt
-readonly
-rel
-required
-results
-rev
-role
-rows
-rowspan
-rules
-sandbox
-scheme
-scope
-scrollamount
-scrolldelay
-scrolling
-selected
-shape
-size
-sortable
-sortdirection
-span
-speech
-spellcheck
-src
-standby
-start
-step
-style
-summary
-tabindex
-tableborder
-target
-text
-title
-top
-topmargin
-truespeed
-type
-usemap
-valign
-value
-valuetype
-version
-viewsource
-vlink
-vspace
-webkitdirectory
-width
-wrap
-
-# Removed from WebKit between r53119 and r56558
-autobuffer
-
-# Removed from WebKit between r14011 and r53119
-left
-pagex
-pagey
-plain
-pluginpage
-pluginspage
-
-# 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/Tools/iExploder/iexploder-1.3.2/htdocs/htmltags.in b/Tools/iExploder/iexploder-1.3.2/htdocs/htmltags.in
deleted file mode 100644
index 18740e119..000000000
--- a/Tools/iExploder/iexploder-1.3.2/htdocs/htmltags.in
+++ /dev/null
@@ -1,154 +0,0 @@
-# From WebKit svn r66165 (WebCore/html/HTMLTagNames.in)
-a
-abbr
-acronym
-address
-applet
-area
-article
-aside
-audio
-b
-base
-basefont
-bdo
-bgsound
-big
-blockquote
-body
-br
-button
-canvas
-caption
-center
-cite
-code
-col
-colgroup
-command
-datalist
-dcell
-dcol
-dd
-del
-details
-dfn
-dir
-div
-dl
-drow
-dt
-em
-embed
-fieldset
-figcaption
-figure
-font
-footer
-form
-frame
-frameset
-h1
-h2
-h3
-h4
-h5
-h6
-head
-header
-hgroup
-hr
-html
-i
-iframe
-image
-img
-input
-ins
-isindex
-kbd
-keygen
-label
-layer
-legend
-li
-link
-listing
-map
-mark
-marquee
-menu
-meta
-meter
-nav
-nobr
-noembed
-noframes
-nolayer
-noscript
-noscript
-object
-ol
-optgroup
-option
-p
-param
-plaintext
-pre
-progress
-q
-rp
-rt
-ruby
-s
-samp
-script
-section
-select
-small
-source
-span
-strike
-strong
-style
-sub
-summary
-sup
-table
-tbody
-td
-textarea
-tfoot
-th
-thead
-title
-tr
-track
-tt
-u
-ul
-var
-video
-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/Tools/iExploder/iexploder-1.3.2/htdocs/htmlvalues.in b/Tools/iExploder/iexploder-1.3.2/htdocs/htmlvalues.in
deleted file mode 100644
index d54984f0f..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/iexploder.cgi b/Tools/iExploder/iexploder-1.3.2/htdocs/iexploder.cgi
deleted file mode 100755
index 89e099cc5..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/iexploder.rb b/Tools/iExploder/iexploder-1.3.2/htdocs/iexploder.rb
deleted file mode 100644
index eee3e3859..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/index.html b/Tools/iExploder/iexploder-1.3.2/htdocs/index.html
deleted file mode 100644
index 849bc6b4b..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/htdocs/webserver.rb b/Tools/iExploder/iexploder-1.3.2/htdocs/webserver.rb
deleted file mode 100755
index 517617242..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/tools/lasthit.rb b/Tools/iExploder/iexploder-1.3.2/tools/lasthit.rb
deleted file mode 100755
index b569deb96..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/tools/osx_last_crash.rb b/Tools/iExploder/iexploder-1.3.2/tools/osx_last_crash.rb
deleted file mode 100755
index 5b62c6ddf..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.3.2/tools/showtest.rb b/Tools/iExploder/iexploder-1.3.2/tools/showtest.rb
deleted file mode 100755
index af6b10197..000000000
--- a/Tools/iExploder/iexploder-1.3.2/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/Tools/iExploder/iexploder-1.7.2/ChangeLog.txt b/Tools/iExploder/iexploder-1.7.2/ChangeLog.txt
deleted file mode 100644
index ef8c31eb6..000000000
--- a/Tools/iExploder/iexploder-1.7.2/ChangeLog.txt
+++ /dev/null
@@ -1,890 +0,0 @@
-------------------------------------------------------------------------
-r227 | helixblue | 2010-09-20 09:20:36 +0200 (Mon, 20 Sep 2010) | 1 line
-
-update readme
-------------------------------------------------------------------------
-r226 | helixblue | 2010-09-20 09:17:00 +0200 (Mon, 20 Sep 2010) | 1 line
-
-1.7.2
-------------------------------------------------------------------------
-r225 | helixblue | 2010-09-20 08:50:32 +0200 (Mon, 20 Sep 2010) | 1 line
-
-Change style tag generation blacklist lookup to use same format as other tags
-------------------------------------------------------------------------
-r224 | helixblue | 2010-09-19 23:51:56 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Fix whitespace and ruby 1.9 glitches
-------------------------------------------------------------------------
-r223 | helixblue | 2010-09-19 22:45:21 +0200 (Sun, 19 Sep 2010) | 1 line
-
-clean up filters
-------------------------------------------------------------------------
-r222 | helixblue | 2010-09-19 22:08:13 +0200 (Sun, 19 Sep 2010) | 1 line
-
-version bump to 1.7.1
-------------------------------------------------------------------------
-r221 | helixblue | 2010-09-19 22:07:53 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Add progress font 9999 crash
-------------------------------------------------------------------------
-r220 | helixblue | 2010-09-19 21:34:24 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Add Chrome crash for url//%n%n redirect
-------------------------------------------------------------------------
-r219 | helixblue | 2010-09-19 21:34:12 +0200 (Sun, 19 Sep 2010) | 1 line
-
-User the digested user agent
-------------------------------------------------------------------------
-r218 | helixblue | 2010-09-19 21:12:11 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Make it so that the first testing redirect has the same content as the page being tested
-------------------------------------------------------------------------
-r217 | helixblue | 2010-09-19 21:07:44 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Add a second redirection test for better testcase generation
-------------------------------------------------------------------------
-r216 | helixblue | 2010-09-19 21:07:20 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Display lookup_mode in stdout, get user agent from last_page_requested
-------------------------------------------------------------------------
-r215 | helixblue | 2010-09-19 18:50:11 +0200 (Sun, 19 Sep 2010) | 1 line
-
-Fix nextTestNum() so that it works properly with @random_mode
-------------------------------------------------------------------------
-r213 | helixblue | 2010-09-06 12:38:12 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Update docs to point to ../output instead of /tmp
-------------------------------------------------------------------------
-r212 | helixblue | 2010-09-06 11:34:48 +0200 (Mon, 06 Sep 2010) | 3 lines
-
-Add an empty output directory
-
-
-------------------------------------------------------------------------
-r211 | helixblue | 2010-09-06 11:34:30 +0200 (Mon, 06 Sep 2010) | 1 line
-
-change test_dir and log_dir default to ../output
-------------------------------------------------------------------------
-r210 | helixblue | 2010-09-06 11:29:45 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Add some more testcases
-------------------------------------------------------------------------
-r209 | helixblue | 2010-09-06 10:07:45 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Set default watchdog timer to 60s.
-------------------------------------------------------------------------
-r208 | helixblue | 2010-09-06 09:56:48 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Give subtest form more room
-------------------------------------------------------------------------
-r207 | helixblue | 2010-09-06 09:56:40 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Decrease the chance of arbitrary tag closure from 20% to 14%
-------------------------------------------------------------------------
-r206 | helixblue | 2010-09-06 09:49:29 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Fix browser comment
-------------------------------------------------------------------------
-r205 | helixblue | 2010-09-06 09:44:29 +0200 (Mon, 06 Sep 2010) | 1 line
-
-Change Refresh from 0 to 1 when saving testcase
-------------------------------------------------------------------------
-r204 | helixblue | 2010-09-05 11:13:50 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Revisit using THE_END marker, in conjunction w/ test_redirect.
-------------------------------------------------------------------------
-r203 | helixblue | 2010-09-05 11:10:12 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Instead of using THE END, use test_redirect.
-------------------------------------------------------------------------
-r202 | helixblue | 2010-09-05 11:05:03 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Make THE END work the same as surviving a redirect
-------------------------------------------------------------------------
-r201 | helixblue | 2010-09-05 10:51:23 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Mention testcase viewing
-------------------------------------------------------------------------
-r200 | helixblue | 2010-09-05 09:22:26 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Fix comments.
-------------------------------------------------------------------------
-r199 | helixblue | 2010-09-05 09:22:15 +0200 (Sun, 05 Sep 2010) | 1 line
-
-Adjust browser_harness so that references to iexploder.cgi are altered to localhost:3100 instances
-------------------------------------------------------------------------
-r198 | helixblue | 2010-09-03 21:45:27 +0200 (Fri, 03 Sep 2010) | 1 line
-
-If we are at the end, and stalled, save a testcase.
-------------------------------------------------------------------------
-r197 | helixblue | 2010-09-03 18:42:42 +0200 (Fri, 03 Sep 2010) | 1 line
-
-ruby assignments hate me. dup it.
-------------------------------------------------------------------------
-r196 | helixblue | 2010-09-03 18:25:24 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Put comments in for START/END tag, use less attributes per page
-------------------------------------------------------------------------
-r195 | helixblue | 2010-09-03 18:06:53 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Be better about generating sane <style> tags
-------------------------------------------------------------------------
-r194 | helixblue | 2010-09-03 18:06:25 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Make pages a bit smaller
-------------------------------------------------------------------------
-r193 | helixblue | 2010-09-03 17:50:45 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Mark as 1.7-DEV
-------------------------------------------------------------------------
-r192 | helixblue | 2010-09-03 17:49:27 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Add some extra asterisks for fun
-------------------------------------------------------------------------
-r191 | helixblue | 2010-09-03 17:29:30 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Add CSS selector fuzzing
-------------------------------------------------------------------------
-r190 | helixblue | 2010-09-03 16:56:14 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Add css at-rules
-------------------------------------------------------------------------
-r189 | helixblue | 2010-09-03 16:16:35 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Add css selector data, fix html5 mozilla attributes
-------------------------------------------------------------------------
-r188 | helixblue | 2010-09-03 15:07:30 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Bump version to 1.6
-------------------------------------------------------------------------
-r187 | helixblue | 2010-09-03 14:48:52 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Update release tool to use version.rb
-------------------------------------------------------------------------
-r186 | helixblue | 2010-09-03 14:18:06 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Remove pid disappeared warning, fix False usage
-------------------------------------------------------------------------
-r185 | helixblue | 2010-09-03 14:16:14 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Fix log access mode (append)
-------------------------------------------------------------------------
-r184 | helixblue | 2010-09-03 13:27:50 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Update docs for -r
-------------------------------------------------------------------------
-r183 | helixblue | 2010-09-03 13:20:49 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Update options. If we can't figure out the -port option, output an error.
-------------------------------------------------------------------------
-r182 | helixblue | 2010-09-03 13:13:16 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Keep the original browser name in the output doc, do some testcase munging. Don't initialize test_num to 1
-------------------------------------------------------------------------
-r181 | helixblue | 2010-09-03 13:11:49 +0200 (Fri, 03 Sep 2010) | 1 line
-
-New testcases for Chrome and Opera
-------------------------------------------------------------------------
-r180 | helixblue | 2010-09-03 11:10:08 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Reset testcases directory
-------------------------------------------------------------------------
-r179 | helixblue | 2010-09-03 11:05:08 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Ruby 1.9.x fix: trailing colon
-------------------------------------------------------------------------
-r178 | helixblue | 2010-09-03 11:03:05 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Change -r to random_mode, and --rescan to -s/--scan. Remove some extra debug messages
-------------------------------------------------------------------------
-r177 | helixblue | 2010-09-03 10:52:58 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Change find_crash_logs() to use Dir.glob fully
-------------------------------------------------------------------------
-r176 | helixblue | 2010-09-03 08:53:07 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Fix max_age in find_crash_logs
-------------------------------------------------------------------------
-r175 | helixblue | 2010-09-03 08:50:04 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Fix dangling parens
-------------------------------------------------------------------------
-r174 | helixblue | 2010-09-03 08:46:05 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Add client logging, make crash files return list of files
-------------------------------------------------------------------------
-r173 | helixblue | 2010-09-03 08:03:57 +0200 (Fri, 03 Sep 2010) | 1 line
-
-Reach back a little further to get iexploder lines
-------------------------------------------------------------------------
-r172 | helixblue | 2010-09-02 22:06:00 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Extend watchdog from 30s to 45s
-------------------------------------------------------------------------
-r171 | helixblue | 2010-09-02 22:04:47 +0200 (Thu, 02 Sep 2010) | 1 line
-
-divide the sleeping up
-------------------------------------------------------------------------
-r170 | helixblue | 2010-09-02 21:42:28 +0200 (Thu, 02 Sep 2010) | 1 line
-
-More sleepy
-------------------------------------------------------------------------
-r169 | helixblue | 2010-09-02 19:36:00 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Use File.stat for mtime to avoid too many open files
-------------------------------------------------------------------------
-r168 | helixblue | 2010-09-02 18:47:50 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Add better testcase naming
-------------------------------------------------------------------------
-r167 | helixblue | 2010-09-02 18:22:51 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Fix save_testcase
-------------------------------------------------------------------------
-r166 | helixblue | 2010-09-02 18:22:39 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Add more browser_harness docs
-------------------------------------------------------------------------
-r165 | helixblue | 2010-09-02 18:10:20 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Fix posix loading
-------------------------------------------------------------------------
-r164 | helixblue | 2010-09-02 18:06:19 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Add Mac support for the browser_harness
-------------------------------------------------------------------------
-r163 | helixblue | 2010-09-02 12:59:02 +0200 (Thu, 02 Sep 2010) | 1 line
-
-Add version
-------------------------------------------------------------------------
-r162 | helixblue | 2010-09-02 12:14:11 +0200 (Thu, 02 Sep 2010) | 1 line
-
-A fully working browser harness for UNIX. awesome.
-------------------------------------------------------------------------
-r161 | helixblue | 2010-09-01 21:40:02 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Clean up option parsing
-------------------------------------------------------------------------
-r160 | helixblue | 2010-09-01 21:33:22 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Ruby 1.9.x + style fixes
-------------------------------------------------------------------------
-r159 | helixblue | 2010-09-01 21:18:16 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Add hex junk generator, add newlines where spaces used to be, and add some document.write js tests
-------------------------------------------------------------------------
-r158 | helixblue | 2010-09-01 21:16:32 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Add :% value
-------------------------------------------------------------------------
-r157 | helixblue | 2010-09-01 21:15:59 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Add -l option to set a log path
-------------------------------------------------------------------------
-r156 | helixblue | 2010-09-01 16:31:55 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Commit a sample browser harness
-------------------------------------------------------------------------
-r155 | helixblue | 2010-09-01 11:24:30 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Sync to Webkit trunk
-------------------------------------------------------------------------
-r154 | helixblue | 2010-09-01 11:22:16 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Add mozilla tags
-------------------------------------------------------------------------
-r153 | helixblue | 2010-09-01 11:21:56 +0200 (Wed, 01 Sep 2010) | 1 line
-
-Minor fixes, update for mozilla trunk parsing
-------------------------------------------------------------------------
-r150 | helixblue | 2010-03-14 16:10:15 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Update the README
-------------------------------------------------------------------------
-r149 | helixblue | 2010-03-14 15:45:20 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Fix straggler testcase
-------------------------------------------------------------------------
-r148 | helixblue | 2010-03-14 15:30:46 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add gtkhtml protocols
-------------------------------------------------------------------------
-r147 | helixblue | 2010-03-14 15:30:01 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add note about asterisk
-------------------------------------------------------------------------
-r146 | helixblue | 2010-03-14 15:29:31 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Comment out chrome video crashes from config.yaml
-------------------------------------------------------------------------
-r145 | helixblue | 2010-03-14 15:28:55 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Output the headers being manipulated
-------------------------------------------------------------------------
-r144 | helixblue | 2010-03-14 15:28:43 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add Chrome video crashes to config.yaml
-------------------------------------------------------------------------
-r143 | helixblue | 2010-03-14 15:06:33 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add Chrome hang on textarea letter-spacing
-------------------------------------------------------------------------
-r142 | helixblue | 2010-03-14 14:58:19 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add LinesAgo column to lasthit
-------------------------------------------------------------------------
-r141 | helixblue | 2010-03-14 14:11:00 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Update lasthit for new subtest data structure
-------------------------------------------------------------------------
-r140 | helixblue | 2010-03-14 14:10:32 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Remove some debug statements
-------------------------------------------------------------------------
-r139 | helixblue | 2010-03-14 14:10:12 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Increase property counts
-------------------------------------------------------------------------
-r138 | helixblue | 2010-03-14 14:09:54 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add some more chrome crashers
-------------------------------------------------------------------------
-r137 | helixblue | 2010-03-14 13:44:10 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Fix check against subtest_combinations_max, add subtest comment to html output
-------------------------------------------------------------------------
-r136 | helixblue | 2010-03-14 13:43:43 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Remove some debug statements, use the golden ratio to calculate the new width
-------------------------------------------------------------------------
-r135 | helixblue | 2010-03-14 13:43:12 +0100 (Sun, 14 Mar 2010) | 1 line
-
-lower html_tags_per_page to 135 for faster subtest generation
-------------------------------------------------------------------------
-r134 | helixblue | 2010-03-14 12:24:31 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Add an extra width line when we hit 3 offsets
-------------------------------------------------------------------------
-r133 | helixblue | 2010-03-14 12:24:08 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Support an initial_subtest_width
-------------------------------------------------------------------------
-r132 | helixblue | 2010-03-14 10:21:34 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Only add tag_data in subtests if there is data to append
-------------------------------------------------------------------------
-r131 | helixblue | 2010-03-14 10:21:20 +0100 (Sun, 14 Mar 2010) | 1 line
-
-Rename lines_at_time to width, enforce min width of 1
-------------------------------------------------------------------------
-r130 | helixblue | 2010-03-14 10:13:34 +0100 (Sun, 14 Mar 2010) | 5 lines
-
-* Add copyright to scanner, remove comments
-* Make exclusions work better: add check method, make sure that methods that check the property name get the unblacklisted version.
-* Add some initial blacklists
-
-
-------------------------------------------------------------------------
-r129 | helixblue | 2010-03-13 19:21:32 +0100 (Sat, 13 Mar 2010) | 1 line
-
-Oh jesus.. we now have a decent subtest implementation. RIP Bo Skough.
-------------------------------------------------------------------------
-r128 | helixblue | 2010-03-10 08:11:56 +0100 (Wed, 10 Mar 2010) | 2 lines
-
-add interesting firefox 3.6 crasher, still need to isolate testcase
-
-------------------------------------------------------------------------
-r127 | helixblue | 2010-03-10 07:06:16 +0100 (Wed, 10 Mar 2010) | 1 line
-
-Make some doc updates in preparation for 1.5 release
-------------------------------------------------------------------------
-r126 | helixblue | 2010-03-10 07:02:21 +0100 (Wed, 10 Mar 2010) | 1 line
-
-Make lasthit work with webserver.rb
-------------------------------------------------------------------------
-r125 | helixblue | 2010-03-09 19:39:55 +0100 (Tue, 09 Mar 2010) | 1 line
-
-add interesting double-page crash for Chrome
-------------------------------------------------------------------------
-r124 | helixblue | 2010-03-09 16:58:10 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Lower headers_per_page_max, put back missing response.body change in webserver.rb
-------------------------------------------------------------------------
-r123 | helixblue | 2010-03-09 16:47:11 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Make sure things work if @config['exclude'] is defined but empty
-------------------------------------------------------------------------
-r122 | helixblue | 2010-03-09 16:46:50 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Fix buildHeaders bug
-------------------------------------------------------------------------
-r121 | helixblue | 2010-03-09 16:30:59 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Allow iexploder to work if no exclude properties have been set, and fix special case for src tag
-------------------------------------------------------------------------
-r120 | helixblue | 2010-03-09 16:20:48 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Add the ability to exclude certain combinations of tags/properties
-------------------------------------------------------------------------
-r119 | helixblue | 2010-03-09 15:20:37 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Fix bug where we fill subtests with escaped tags
-------------------------------------------------------------------------
-r118 | helixblue | 2010-03-09 15:05:29 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Add firefox hang
-------------------------------------------------------------------------
-r117 | helixblue | 2010-03-09 11:33:06 +0100 (Tue, 09 Mar 2010) | 1 line
-
-More tuning
-------------------------------------------------------------------------
-r116 | helixblue | 2010-03-09 11:29:54 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Move max_garbage_text_size to be tuned by config.yaml
-------------------------------------------------------------------------
-r115 | helixblue | 2010-03-09 11:25:15 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Minor adjustments to the skew mix
-------------------------------------------------------------------------
-r114 | helixblue | 2010-03-09 11:22:23 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Add a list of tags we favor for testing
-------------------------------------------------------------------------
-r113 | helixblue | 2010-03-09 11:11:46 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Make img/src inclusion random, not mandatory. Add raw values to js, fix subtest end lookup
-------------------------------------------------------------------------
-r112 | helixblue | 2010-03-09 10:52:42 +0100 (Tue, 09 Mar 2010) | 1 line
-
-We have a Firefox 3.6 hanger now
-------------------------------------------------------------------------
-r111 | helixblue | 2010-03-09 10:02:35 +0100 (Tue, 09 Mar 2010) | 1 line
-
-Sync the interface changes to the CGI version
-------------------------------------------------------------------------
-r110 | helixblue | 2010-03-08 08:35:12 +0100 (Mon, 08 Mar 2010) | 1 line
-
-Re-arrange testcase directories
-------------------------------------------------------------------------
-r109 | helixblue | 2010-03-08 07:55:27 +0100 (Mon, 08 Mar 2010) | 1 line
-
-Another chrome crasher
-------------------------------------------------------------------------
-r108 | helixblue | 2010-03-08 00:00:41 +0100 (Mon, 08 Mar 2010) | 1 line
-
-More floating point crashes
-------------------------------------------------------------------------
-r107 | helixblue | 2010-03-07 23:46:33 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Mave generateOverflow less static
-------------------------------------------------------------------------
-r106 | helixblue | 2010-03-07 23:45:42 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Tune down some of the excessiveness with overflow triggering. We don't exploit too many of them
-------------------------------------------------------------------------
-r105 | helixblue | 2010-03-07 20:58:35 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add back the default content-type, remove debug line
-------------------------------------------------------------------------
-r104 | helixblue | 2010-03-07 20:54:12 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add a dummy favicon.ico link, extend copyright, rename req/res to request/response, fix bug where we reset the http headers before returning
-------------------------------------------------------------------------
-r103 | helixblue | 2010-03-07 18:27:04 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add video height crasher for Chrome
-------------------------------------------------------------------------
-r102 | helixblue | 2010-03-07 18:26:10 +0100 (Sun, 07 Mar 2010) | 1 line
-
-End garbage text with a newline
-------------------------------------------------------------------------
-r101 | helixblue | 2010-03-07 18:24:18 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Fix subtest generation by making sure all calls to random are accounted for, even when subtesting
-------------------------------------------------------------------------
-r100 | helixblue | 2010-03-07 16:30:09 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add video width crasher for chrome
-------------------------------------------------------------------------
-r99 | helixblue | 2010-03-07 14:08:06 +0100 (Sun, 07 Mar 2010) | 1 line
-
-1.5-BETA2 - add a Chrome crasher
-------------------------------------------------------------------------
-r97 | helixblue | 2010-03-07 12:54:03 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add bug.png mapping, fix HTML compliance
-------------------------------------------------------------------------
-r96 | helixblue | 2010-03-07 12:48:11 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Give the form a facelift
-------------------------------------------------------------------------
-r95 | helixblue | 2010-03-07 11:39:55 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Update the docs
-------------------------------------------------------------------------
-r94 | helixblue | 2010-03-07 11:36:52 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add tool to make source code releases
-------------------------------------------------------------------------
-r93 | helixblue | 2010-03-07 11:33:13 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Do more munging
-------------------------------------------------------------------------
-r92 | helixblue | 2010-03-07 11:26:23 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Change default port to 3100 to avoid conflicts, fix one more upto, and fix mime type parsing
-------------------------------------------------------------------------
-r91 | helixblue | 2010-03-07 11:20:10 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Fix upto syntax
-------------------------------------------------------------------------
-r90 | helixblue | 2010-03-07 11:13:24 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Fix ie.random_mode nil comparison
-------------------------------------------------------------------------
-r89 | helixblue | 2010-03-07 11:08:27 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Rename htdocs to src
-------------------------------------------------------------------------
-r88 | helixblue | 2010-03-07 11:07:36 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Change the way we log to console using webserver.rb
-------------------------------------------------------------------------
-r87 | helixblue | 2010-03-07 09:51:11 +0100 (Sun, 07 Mar 2010) | 1 line
-
-generateGarbageText should also love generateGarbageValue
-------------------------------------------------------------------------
-r86 | helixblue | 2010-03-07 09:40:00 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Activate media fuzzing - oh yeah\!
-------------------------------------------------------------------------
-r85 | helixblue | 2010-03-07 07:34:48 +0100 (Sun, 07 Mar 2010) | 1 line
-
-Add mime-types content
-------------------------------------------------------------------------
-r84 | helixblue | 2010-03-06 22:23:28 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Add some html files for Chrome
-------------------------------------------------------------------------
-r83 | helixblue | 2010-03-06 22:12:29 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Add some url related opera bugs
-------------------------------------------------------------------------
-r82 | helixblue | 2010-03-06 12:34:45 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Add an opera crasher
-------------------------------------------------------------------------
-r81 | helixblue | 2010-03-06 11:58:31 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Better testing values, including a custom handler for html on attributes
-------------------------------------------------------------------------
-r80 | helixblue | 2010-03-06 11:17:48 +0100 (Sat, 06 Mar 2010) | 1 line
-
-iexploder.rb can now load tests.. add javascript testing to each page
-------------------------------------------------------------------------
-r79 | helixblue | 2010-03-06 08:04:14 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Add new protocol/header data
-------------------------------------------------------------------------
-r78 | helixblue | 2010-03-06 08:03:58 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Return accidentally deleted properties
-------------------------------------------------------------------------
-r77 | helixblue | 2010-03-06 08:02:50 +0100 (Sat, 06 Mar 2010) | 1 line
-
-Split out protocol and header properties
-------------------------------------------------------------------------
-r76 | helixblue | 2010-03-06 05:34:31 +0100 (Sat, 06 Mar 2010) | 1 line
-
-We have a Chrome 5.0 crasher
-------------------------------------------------------------------------
-r75 | helixblue | 2010-03-05 14:46:21 +0100 (Fri, 05 Mar 2010) | 1 line
-
-More tweaking: increase attributes_per_html_tag and properties_per_style
-------------------------------------------------------------------------
-r74 | helixblue | 2010-03-05 09:57:06 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Move around our loading text
-------------------------------------------------------------------------
-r73 | helixblue | 2010-03-05 09:54:22 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Fix --port passing
-------------------------------------------------------------------------
-r71 | helixblue | 2010-03-05 09:49:04 +0100 (Fri, 05 Mar 2010) | 1 line
-
-1.4-BETA1
-------------------------------------------------------------------------
-r70 | helixblue | 2010-03-05 09:47:46 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Update README
-------------------------------------------------------------------------
-r69 | helixblue | 2010-03-05 09:44:29 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Fix path interpolation
-------------------------------------------------------------------------
-r68 | helixblue | 2010-03-05 09:30:28 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Add config.yaml file
-------------------------------------------------------------------------
-r67 | helixblue | 2010-03-05 09:30:15 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Do some refactoring, moving configuration into a YAML file
-------------------------------------------------------------------------
-r66 | helixblue | 2010-03-05 07:55:26 +0100 (Fri, 05 Mar 2010) | 1 line
-
-Narrow down some chrome testcases
-------------------------------------------------------------------------
-r65 | helixblue | 2010-03-04 22:42:20 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Narrow down chrome crasher
-------------------------------------------------------------------------
-r64 | helixblue | 2010-03-04 20:25:59 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Fix subtesting
-------------------------------------------------------------------------
-r63 | helixblue | 2010-03-04 20:25:43 +0100 (Thu, 04 Mar 2010) | 1 line
-
-firefox sample
-------------------------------------------------------------------------
-r62 | helixblue | 2010-03-04 18:45:40 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Make it a better URL
-------------------------------------------------------------------------
-r61 | helixblue | 2010-03-04 18:44:59 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Change 127.0.0.1 to a full qualified URL
-------------------------------------------------------------------------
-r60 | helixblue | 2010-03-04 18:15:19 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Make it less likely that there is a missing = after an HTML attribute name
-------------------------------------------------------------------------
-r59 | helixblue | 2010-03-04 17:59:13 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Do some retuning and re-organization for todays generation of bugs. This may cause less crashes, so we need to keep an eye out on the results
-------------------------------------------------------------------------
-r58 | helixblue | 2010-03-04 17:58:32 +0100 (Thu, 04 Mar 2010) | 1 line
-
-update testcases
-------------------------------------------------------------------------
-r57 | helixblue | 2010-03-04 13:46:21 +0100 (Thu, 04 Mar 2010) | 1 line
-
-include the user-agent in the URL as a b variable
-------------------------------------------------------------------------
-r56 | helixblue | 2010-03-04 12:25:26 +0100 (Thu, 04 Mar 2010) | 1 line
-
-HTML_MAX_TAGS 150
-------------------------------------------------------------------------
-r55 | helixblue | 2010-03-04 10:15:48 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Add some chrome test cases
-------------------------------------------------------------------------
-r54 | helixblue | 2010-03-04 09:48:57 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Remove extraneous output
-------------------------------------------------------------------------
-r53 | helixblue | 2010-03-04 09:47:13 +0100 (Thu, 04 Mar 2010) | 1 line
-
-MAX_TAGS = 100
-------------------------------------------------------------------------
-r52 | helixblue | 2010-03-04 09:46:54 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Add html-values
-------------------------------------------------------------------------
-r51 | helixblue | 2010-03-04 09:45:56 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Complete splitting of properties, values, and tags
-------------------------------------------------------------------------
-r50 | helixblue | 2010-03-04 09:25:36 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Start auto-generating html-values as well
-------------------------------------------------------------------------
-r49 | helixblue | 2010-03-04 09:24:46 +0100 (Thu, 04 Mar 2010) | 1 line
-
-Increase MAX_TAGS to 125
-------------------------------------------------------------------------
-r48 | helixblue | 2010-03-03 23:37:11 +0100 (Wed, 03 Mar 2010) | 1 line
-
-make webserver.rb executable
-------------------------------------------------------------------------
-r47 | helixblue | 2010-03-03 23:35:55 +0100 (Wed, 03 Mar 2010) | 1 line
-
-Add support for multiple css attributes in one style tag
-------------------------------------------------------------------------
-r46 | helixblue | 2010-03-03 23:27:10 +0100 (Wed, 03 Mar 2010) | 1 line
-
-Move to tag directories, add tool to extract tags from common open-source browsers
-------------------------------------------------------------------------
-r45 | helixblue | 2010-03-03 20:44:19 +0100 (Wed, 03 Mar 2010) | 3 lines
-
-Move code from /svn/iexploder to /svn/trunk
-
-
-------------------------------------------------------------------------
-r44 | helixblue | 2010-03-03 10:05:40 +0100 (Wed, 03 Mar 2010) | 1 line
-
-Re-license as Apache 2.0
-------------------------------------------------------------------------
-r42 | thomas | 2006-05-31 02:43:02 +0200 (Wed, 31 May 2006) | 1 line
-
-config->ieconfig
-------------------------------------------------------------------------
-r41 | thomas | 2006-05-22 23:21:15 +0200 (Mon, 22 May 2006) | 1 line
-
-Remove version
-------------------------------------------------------------------------
-r40 | thomas | 2006-04-25 21:43:38 +0200 (Tue, 25 Apr 2006) | 1 line
-
-Rename config.rb to ieconfig.rb to avoid conflict with ruby-config
-------------------------------------------------------------------------
-r39 | thomas | 2006-04-21 15:55:51 +0200 (Fri, 21 Apr 2006) | 1 line
-
-1.3.2.. minor adjustment to title and where gets set
-------------------------------------------------------------------------
-r38 | thomas | 2006-04-19 23:14:26 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Add h4+pre+cite+nolayer+code crash for Safari 2.0.3
-------------------------------------------------------------------------
-r37 | thomas | 2006-04-19 23:01:48 +0200 (Wed, 19 Apr 2006) | 1 line
-
-showtest.rb: easily download a testcase
-------------------------------------------------------------------------
-r36 | thomas | 2006-04-19 22:07:13 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Remove stopping debug message
-------------------------------------------------------------------------
-r35 | thomas | 2006-04-19 22:02:48 +0200 (Wed, 19 Apr 2006) | 1 line
-
-New subtest algorithm: double the tag count each iteration
-------------------------------------------------------------------------
-r34 | thomas | 2006-04-19 21:05:30 +0200 (Wed, 19 Apr 2006) | 1 line
-
-remove IE dupes: text-overflow and word-wrap
-------------------------------------------------------------------------
-r33 | thomas | 2006-04-19 18:48:07 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Add some benchmark/performance info.. set MAX_TAGS default to 96
-------------------------------------------------------------------------
-r32 | thomas | 2006-04-19 16:22:33 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Add stop parameter, fix port assignment issue, fix indentation
-------------------------------------------------------------------------
-r31 | thomas | 2006-04-19 16:22:06 +0200 (Wed, 19 Apr 2006) | 1 line
-
-1.3.0
-------------------------------------------------------------------------
-r30 | thomas | 2006-04-19 04:46:35 +0200 (Wed, 19 Apr 2006) | 1 line
-
-applet+param Hashmap crash in Safari
-------------------------------------------------------------------------
-r29 | thomas | 2006-04-19 04:07:45 +0200 (Wed, 19 Apr 2006) | 1 line
-
-1.3.0
-------------------------------------------------------------------------
-r28 | thomas | 2006-04-19 04:05:47 +0200 (Wed, 19 Apr 2006) | 1 line
-
-commit osx_last_crash minutes->days change, document that you can pass a new port number to the webserver.rb program
-------------------------------------------------------------------------
-r27 | thomas | 2006-04-19 04:02:16 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Add more Safari crashes to the testcases list
-------------------------------------------------------------------------
-r26 | thomas | 2006-04-19 01:05:46 +0200 (Wed, 19 Apr 2006) | 1 line
-
-Greatly improve subtests. Not only do we iterate around each tag, but we steadily increase the amount of tags we input as well
-------------------------------------------------------------------------
-r25 | thomas | 2006-04-18 23:04:17 +0200 (Tue, 18 Apr 2006) | 1 line
-
-1.3b1.. also, raise max tags to 48 now that we have fixed subtest bugs
-------------------------------------------------------------------------
-r24 | thomas | 2006-04-18 22:59:20 +0200 (Tue, 18 Apr 2006) | 1 line
-
-New Webrick based option for standalone hosting
-------------------------------------------------------------------------
-r23 | thomas | 2006-04-18 22:18:35 +0200 (Tue, 18 Apr 2006) | 1 line
-
-Split iexploder.cgi into iexploder.rb and config.rb
-------------------------------------------------------------------------
-r22 | thomas | 2006-04-18 19:36:25 +0200 (Tue, 18 Apr 2006) | 1 line
-
-Add items from WebKit/WebCore/css/CSSValueKeywords.in
-------------------------------------------------------------------------
-r21 | thomas | 2006-04-18 19:32:45 +0200 (Tue, 18 Apr 2006) | 1 line
-
-Add odd new crash from Opera 8.5.4 for Mac
-------------------------------------------------------------------------
-r20 | thomas | 2006-04-18 19:10:15 +0200 (Tue, 18 Apr 2006) | 1 line
-
-Add new Safari test case
-------------------------------------------------------------------------
-r19 | thomas | 2006-04-18 18:25:39 +0200 (Tue, 18 Apr 2006) | 1 line
-
-iExploder 1.3: sync with modern rendering kits
-------------------------------------------------------------------------
-r18 | thomas | 2006-04-18 18:25:18 +0200 (Tue, 18 Apr 2006) | 1 line
-
-New testcases
-------------------------------------------------------------------------
-r17 | thomas | 2006-04-18 18:23:48 +0200 (Tue, 18 Apr 2006) | 1 line
-
-Reshuffle testcases
-------------------------------------------------------------------------
-r16 | thomas | 2005-11-04 04:01:43 +0100 (Fri, 04 Nov 2005) | 1 line
-
-add some test cases
-------------------------------------------------------------------------
-r15 | thomas | 2005-11-04 04:01:19 +0100 (Fri, 04 Nov 2005) | 1 line
-
-Add some cute tabs
-------------------------------------------------------------------------
-r14 | thomas | 2005-10-21 21:34:38 +0200 (Fri, 21 Oct 2005) | 1 line
-
-Crash is not OSX specific
-------------------------------------------------------------------------
-r13 | thomas | 2005-10-21 20:59:41 +0200 (Fri, 21 Oct 2005) | 1 line
-
-Mention the fact that testcases may not be portable across installations
-------------------------------------------------------------------------
-r12 | thomas | 2005-10-21 20:45:48 +0200 (Fri, 21 Oct 2005) | 1 line
-
-Fix lookup html code
-------------------------------------------------------------------------
-r11 | thomas | 2005-10-21 20:22:10 +0200 (Fri, 21 Oct 2005) | 1 line
-
-QuickDraw crash for Mac OS X
-------------------------------------------------------------------------
-r10 | thomas | 2005-10-21 20:14:34 +0200 (Fri, 21 Oct 2005) | 1 line
-
-New crash
-------------------------------------------------------------------------
-r9 | thomas | 2005-10-21 20:06:45 +0200 (Fri, 21 Oct 2005) | 1 line
-
-IE DoS
-------------------------------------------------------------------------
-r8 | thomas | 2005-10-21 19:24:02 +0200 (Fri, 21 Oct 2005) | 1 line
-
-1.2 Update, mostly documentation and test cases
-------------------------------------------------------------------------
-r7 | thomas | 2005-10-21 17:41:39 +0200 (Fri, 21 Oct 2005) | 1 line
-
-back to days, filter out synergy
-------------------------------------------------------------------------
-r6 | thomas | 2005-10-21 17:25:28 +0200 (Fri, 21 Oct 2005) | 1 line
-
-1.2: We now use javascript reloads after 1 second in case the meta breaks (IE)
-------------------------------------------------------------------------
-r5 | thomas | 2005-10-21 14:51:07 +0200 (Fri, 21 Oct 2005) | 1 line
-
-1.1: Fix up our subtest model
-------------------------------------------------------------------------
-r4 | thomas | 2005-10-21 03:55:59 +0200 (Fri, 21 Oct 2005) | 1 line
-
-Support for subtests, and compatibility with mod_ruby
-------------------------------------------------------------------------
-r3 | thomas | 2005-10-21 02:48:59 +0200 (Fri, 21 Oct 2005) | 1 line
-
-update to v1.0
-------------------------------------------------------------------------
-r1 | tstrombe | 2005-02-28 14:13:25 +0100 (Mon, 28 Feb 2005) | 1 line
-
-iexploder software
-------------------------------------------------------------------------
diff --git a/Tools/iExploder/iexploder-1.7.2/LICENSE.txt b/Tools/iExploder/iexploder-1.7.2/LICENSE.txt
deleted file mode 100644
index d64569567..000000000
--- a/Tools/iExploder/iexploder-1.7.2/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
- Apache License
- Version 2.0, January 2004
- http://www.apache.org/licenses/
-
- TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
- 1. Definitions.
-
- "License" shall mean the terms and conditions for use, reproduction,
- and distribution as defined by Sections 1 through 9 of this document.
-
- "Licensor" shall mean the copyright owner or entity authorized by
- the copyright owner that is granting the License.
-
- "Legal Entity" shall mean the union of the acting entity and all
- other entities that control, are controlled by, or are under common
- control with that entity. For the purposes of this definition,
- "control" means (i) the power, direct or indirect, to cause the
- direction or management of such entity, whether by contract or
- otherwise, or (ii) ownership of fifty percent (50%) or more of the
- outstanding shares, or (iii) beneficial ownership of such entity.
-
- "You" (or "Your") shall mean an individual or Legal Entity
- exercising permissions granted by this License.
-
- "Source" form shall mean the preferred form for making modifications,
- including but not limited to software source code, documentation
- source, and configuration files.
-
- "Object" form shall mean any form resulting from mechanical
- transformation or translation of a Source form, including but
- not limited to compiled object code, generated documentation,
- and conversions to other media types.
-
- "Work" shall mean the work of authorship, whether in Source or
- Object form, made available under the License, as indicated by a
- copyright notice that is included in or attached to the work
- (an example is provided in the Appendix below).
-
- "Derivative Works" shall mean any work, whether in Source or Object
- form, that is based on (or derived from) the Work and for which the
- editorial revisions, annotations, elaborations, or other modifications
- represent, as a whole, an original work of authorship. For the purposes
- of this License, Derivative Works shall not include works that remain
- separable from, or merely link (or bind by name) to the interfaces of,
- the Work and Derivative Works thereof.
-
- "Contribution" shall mean any work of authorship, including
- the original version of the Work and any modifications or additions
- to that Work or Derivative Works thereof, that is intentionally
- submitted to Licensor for inclusion in the Work by the copyright owner
- or by an individual or Legal Entity authorized to submit on behalf of
- the copyright owner. For the purposes of this definition, "submitted"
- means any form of electronic, verbal, or written communication sent
- to the Licensor or its representatives, including but not limited to
- communication on electronic mailing lists, source code control systems,
- and issue tracking systems that are managed by, or on behalf of, the
- Licensor for the purpose of discussing and improving the Work, but
- excluding communication that is conspicuously marked or otherwise
- designated in writing by the copyright owner as "Not a Contribution."
-
- "Contributor" shall mean Licensor and any individual or Legal Entity
- on behalf of whom a Contribution has been received by Licensor and
- subsequently incorporated within the Work.
-
- 2. Grant of Copyright License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- copyright license to reproduce, prepare Derivative Works of,
- publicly display, publicly perform, sublicense, and distribute the
- Work and such Derivative Works in Source or Object form.
-
- 3. Grant of Patent License. Subject to the terms and conditions of
- this License, each Contributor hereby grants to You a perpetual,
- worldwide, non-exclusive, no-charge, royalty-free, irrevocable
- (except as stated in this section) patent license to make, have made,
- use, offer to sell, sell, import, and otherwise transfer the Work,
- where such license applies only to those patent claims licensable
- by such Contributor that are necessarily infringed by their
- Contribution(s) alone or by combination of their Contribution(s)
- with the Work to which such Contribution(s) was submitted. If You
- institute patent litigation against any entity (including a
- cross-claim or counterclaim in a lawsuit) alleging that the Work
- or a Contribution incorporated within the Work constitutes direct
- or contributory patent infringement, then any patent licenses
- granted to You under this License for that Work shall terminate
- as of the date such litigation is filed.
-
- 4. Redistribution. You may reproduce and distribute copies of the
- Work or Derivative Works thereof in any medium, with or without
- modifications, and in Source or Object form, provided that You
- meet the following conditions:
-
- (a) You must give any other recipients of the Work or
- Derivative Works a copy of this License; and
-
- (b) You must cause any modified files to carry prominent notices
- stating that You changed the files; and
-
- (c) You must retain, in the Source form of any Derivative Works
- that You distribute, all copyright, patent, trademark, and
- attribution notices from the Source form of the Work,
- excluding those notices that do not pertain to any part of
- the Derivative Works; and
-
- (d) If the Work includes a "NOTICE" text file as part of its
- distribution, then any Derivative Works that You distribute must
- include a readable copy of the attribution notices contained
- within such NOTICE file, excluding those notices that do not
- pertain to any part of the Derivative Works, in at least one
- of the following places: within a NOTICE text file distributed
- as part of the Derivative Works; within the Source form or
- documentation, if provided along with the Derivative Works; or,
- within a display generated by the Derivative Works, if and
- wherever such third-party notices normally appear. The contents
- of the NOTICE file are for informational purposes only and
- do not modify the License. You may add Your own attribution
- notices within Derivative Works that You distribute, alongside
- or as an addendum to the NOTICE text from the Work, provided
- that such additional attribution notices cannot be construed
- as modifying the License.
-
- You may add Your own copyright statement to Your modifications and
- may provide additional or different license terms and conditions
- for use, reproduction, or distribution of Your modifications, or
- for any such Derivative Works as a whole, provided Your use,
- reproduction, and distribution of the Work otherwise complies with
- the conditions stated in this License.
-
- 5. Submission of Contributions. Unless You explicitly state otherwise,
- any Contribution intentionally submitted for inclusion in the Work
- by You to the Licensor shall be under the terms and conditions of
- this License, without any additional terms or conditions.
- Notwithstanding the above, nothing herein shall supersede or modify
- the terms of any separate license agreement you may have executed
- with Licensor regarding such Contributions.
-
- 6. Trademarks. This License does not grant permission to use the trade
- names, trademarks, service marks, or product names of the Licensor,
- except as required for reasonable and customary use in describing the
- origin of the Work and reproducing the content of the NOTICE file.
-
- 7. Disclaimer of Warranty. Unless required by applicable law or
- agreed to in writing, Licensor provides the Work (and each
- Contributor provides its Contributions) on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
- implied, including, without limitation, any warranties or conditions
- of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
- PARTICULAR PURPOSE. You are solely responsible for determining the
- appropriateness of using or redistributing the Work and assume any
- risks associated with Your exercise of permissions under this License.
-
- 8. Limitation of Liability. In no event and under no legal theory,
- whether in tort (including negligence), contract, or otherwise,
- unless required by applicable law (such as deliberate and grossly
- negligent acts) or agreed to in writing, shall any Contributor be
- liable to You for damages, including any direct, indirect, special,
- incidental, or consequential damages of any character arising as a
- result of this License or out of the use or inability to use the
- Work (including but not limited to damages for loss of goodwill,
- work stoppage, computer failure or malfunction, or any and all
- other commercial damages or losses), even if such Contributor
- has been advised of the possibility of such damages.
-
- 9. Accepting Warranty or Additional Liability. While redistributing
- the Work or Derivative Works thereof, You may choose to offer,
- and charge a fee for, acceptance of support, warranty, indemnity,
- or other liability obligations and/or rights consistent with this
- License. However, in accepting such obligations, You may act only
- on Your own behalf and on Your sole responsibility, not on behalf
- of any other Contributor, and only if You agree to indemnify,
- defend, and hold each Contributor harmless for any liability
- incurred by, or claims asserted against, such Contributor by reason
- of your accepting any such warranty or additional liability.
-
- END OF TERMS AND CONDITIONS
-
- APPENDIX: How to apply the Apache License to your work.
-
- To apply the Apache License to your work, attach the following
- boilerplate notice, with the fields enclosed by brackets "[]"
- replaced with your own identifying information. (Don't include
- the brackets!) The text should be enclosed in the appropriate
- comment syntax for the file format. We also recommend that a
- file or class name and description of purpose be included on the
- same "printed page" as the copyright notice for easier
- identification within third-party archives.
-
- Copyright [yyyy] [name of copyright owner]
-
- Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
diff --git a/Tools/iExploder/iexploder-1.7.2/README.txt b/Tools/iExploder/iexploder-1.7.2/README.txt
deleted file mode 100644
index 1f5b77a14..000000000
--- a/Tools/iExploder/iexploder-1.7.2/README.txt
+++ /dev/null
@@ -1,174 +0,0 @@
-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 HTML tags and CSS attributes, as parsed from various
- open-source browsers.
-* HTTP Header testing
-* Basic Media format fuzzing (jpeg, png, snd, wav, etc.)
-* Numeric, and String overflow and formatting tests
-* Sequential and Randomized Test Case Generation
-* Test Case Lookups
-* Subtest generation
-* Test harness mode that controls your browser process and testcase
- generation.
-
-Requirements:
--------------
-Make sure you have Ruby installed (comes with Mac OS X, most Linux
-distributions). See http://www.ruby-lang.org/ if you do not.
-
-
-Harness mode (Mac OS X, Linux, other UNIX based operating systems)
--------------------------------------------------------------------
-In this mode, iExploder controls the stopping and starting of your
-web browser, reproducing crashes, and writing test cases. This is
-the recommended mode of operation for most cases.
-
-
-Usage: browser_harness.rb [options] -- <browser path> <browser options>
- -t, --test NUM Test to start at
- -p, --port NUM Listen on TCP port NUM (random)
- -c, --config PATH Use PATH for configuration file
- -d, --testdir PATH Use PATH to save testcases (/tmp)
- -l, --logdir PATH Use PATH to save logs (/tmp)
- -w, --watchdog NUM How many seconds to wait for pages to load (45s)
- -r, --random Generate test numbers pseudo-randomly
- -s, --scan NUM How often to check for new log data (5s)
- -h, --help Display this screen
-
-Here is an example use with Chrome starting at test number 1000:
-
-% ./browser_harness.rb -t 1000 -- /usr/local/chrome-linux/chrome --incognito
-
-For proper use, the harness mode must *ALWAYS* be used with the browser
-configured to not restore sessions after a restart. Here are some example
-command lines to use:
-
- chrome --incognito
- opera --nosession -newprivatetab
- firefox -private
-
-On Mac OS X you may call the binary directly, or use the .app directory. The latter
-is required for Safari.app, but does not allow arguments to be passed. Here is an
-example:
-
-% ./browser_harness.rb /Applications/Safari.app
-
-By default, all testcases and logs will be written to ../output
-
-
-
-Viewing testcases:
-------------------
-Many test-cases make use of references to external objects (ogg, jpg, etc.)
-where we are fuzzing the HTTP header data. When the browser harness saves a
-testcase in HTML form, it rewrites all references to these external objects
-to refer to http://127.0.0.1:3100/
-
-To properly view these saved .html testcases, please run the built-in
-webserver in the background.
-
-% ruby webserver.rb
-
-
-Standalone Webserver mode:
---------------------------
-If you do not already have a webserver setup, you can use the server
-built into iexploder. Simply go into the src/ directory and type:
-
-% ruby webserver.rb
-
-A webserver will then start on port 3100 with the iexploder form. You can
-also pass a -p or --port option to select a different location:
-
-% ruby webserver.rb -p 2001
-
-All requests will be logged to the path specified in 'access_log_path'
-parameter in config.yaml.
-
-
-
-Third-party webserver mode:
----------------------------
-Copy the contents of the src/ folder to any directory served
-by your webserver. Make sure that directory can execute CGI scripts.
-Performance is likely to be very slow unless you use something that
-keeps the interpreter alive like 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 config.yaml,
-it is likely to change the test cases as well.
-
-
-2) I found a crash - how do I stop testing for it?
-
-See the 'exclude' section of config.yaml. It allows you to blacklist certain
-tag combinations that are known to result in a crash condition.
-
-
-3) How do I look up the last successful test for a client?
-
-Look at your access log. There is a handy tool to parse access logs and show
-the most recent test for each host and user-agent combo. Try:
-
-tools/lasthit.rb /path/to/access_log
-
-
-4) How do subtests work?
-
-Subtests are how iexploder attempts to isolate the crashing line of code for
-a particular HTML document. It's a multi-pass algorithm, which delivers
-nasty tags to your browser in the following order:
-
-* 1 combination, single line
-* 2 combinations, 3 lines per combination
-* 3 combinations, 5 lines per combination
-* 4 combinations...
-* 5 combinations...
-* Your original document (in case we haven't crashed by now)
-
-
-5) 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.
-
-
-6) 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.
-
-
-7) 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.
-
-
-8) How do I change the number of tags iExploder tests per page?
-
-See config.yaml.
-
-
-9) What other performance enhancements can I make?
-
-* Use Private Browsing or Incognito mode in your browser
-* Before using iExploder, clear your browser history
-* Minimize your browser while iExploder is running
-* If you are using browser_harness, try adjusting the -w and -s options.
-
-
diff --git a/Tools/iExploder/iexploder-1.7.2/src/browser_harness.rb b/Tools/iExploder/iexploder-1.7.2/src/browser_harness.rb
deleted file mode 100755
index c5bec805f..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/browser_harness.rb
+++ /dev/null
@@ -1,389 +0,0 @@
-#!/usr/bin/ruby
-# iExploder browser Harness (test a single web browser)
-#
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#----------------------------------------------------------------------------
-# PLEASE NOTE:
-#
-# You must disable automatic session restoring for this to be useful.
-#
-# chrome --incognito
-# opera --nosession -newprivatetab
-# firefox -private
-require 'cgi'
-require 'open-uri'
-require 'optparse'
-require './iexploder.rb'
-require './scanner.rb'
-
-MAC_CRASH_PATH = "#{ENV['HOME']}/Library/Logs/CrashReporter"
-TESTCASE_URL = "http://127.0.0.1:3100/iexploder.cgi"
-
-class BrowserHarness
- def initialize(port, config_path, log_dir, test_dir, watchdog_timer, scan_timer)
- @app_base_url = "http://127.0.0.1:#{port}/"
- @app_url = "#{@app_base_url}iexploder.cgi"
- @port = port
- @log_dir = log_dir
- @server_log_path = "#{log_dir}/iexploder_webserver-#{port}.log"
- @client_log_path = "#{log_dir}/iexploder_harness-#{port}.log"
- @test_dir = test_dir
- @watchdog_timer = watchdog_timer
- @scan_timer = scan_timer
- @config_path = config_path
-
- @ie = IExploder.new(@config_path)
- @ie.cgi_url = @app_url
-
- @browser_id = nil
- @browser_name = nil
- msg("Client log: #{@client_log_path}")
- msg("Server log: #{@server_log_path}")
- @server_pid = launch_server()
- end
-
- def msg(text)
- now = Time.now()
- msg = ">>> #{@browser_name}:#{@port} | #{now}: #{text}"
- puts msg
- STDOUT.flush
-
- f = File.open(@client_log_path, 'a')
- f.puts msg
- f.close
- end
-
- def launch_server()
- args = ['./webserver.rb', "-p#{@port}", "-c#{@config_path}", "-l#{@server_log_path}"]
- pids = fork { exec(*args) }
- msg("Server args: #{args.inspect}")
- msg("Server pid: #{pids.inspect}")
- return pids
- end
-
- def launch_browser(args, url)
- if ! File.exist?(args[0])
- msg("First argument does not appear to be an executable file: #{args[0]}")
- kill_server()
- exit
- end
-
- browser = File.basename(args[0])
- @browser_name = File.basename(browser)
- if browser =~ /\.app$/
- pids = launch_mac_browser(args, url)
- else
- pids = launch_posix_browser(args, url)
- end
- sleep(@scan_timer * 3)
- if ! File.size?(@server_log_path)
- puts "#{@server_log_path} was never written to. Unable to launch browser?"
- kill_server()
- exit
- end
- return pids
- end
-
- def launch_posix_browser(args, url)
- browser = File.basename(args[0])
- msg("Killing browser processes: #{browser}")
- system("pkill #{browser} && pkill -9 #{browser}")
- args = args + [url]
- msg("Launching browser: #{args.inspect}")
- browser_pid = fork {
- exec(*args)
- }
- return [browser_pid]
- end
-
- def find_pids(text)
- # Only tested on Mac OS X.
- pids = []
- `ps -x`.each do |proc_line|
- if proc_line =~ /^ *(\d+).*#{text}/
- pid = $1.to_i
- # Do not include yourself.
- if pid != Process.pid
- pids << $1.to_i
- end
- end
- end
- return pids
- end
-
- def launch_mac_browser(args, url)
- # This is dedicated to Safari.
- if args.length > 1
- msg(".app type launches do not support arguments, ignoring #{args[1..99].inspect}")
- end
- browser = args[0]
- pids = find_pids(browser)
- if pids
- kill_pids(find_pids(browser))
- sleep(2)
- end
- command = "open -a \"#{browser}\" \"#{url}\""
- msg(".app open command: #{command}")
- system(command)
- return find_pids(browser)
- end
-
- def kill_pids(pids)
- pids.each do |pid|
- msg("Killing #{pid}")
- begin
- Process.kill("INT", pid)
- sleep(0.5)
- Process.kill("KILL", pid)
- rescue
- sleep(0.1)
- end
- end
- end
-
- def encode_browser()
- return @browser_id.gsub(' ', '_').gsub(';', '').gsub('/', '-').gsub(/[\(\):\!\@\#\$\%\^\&\*\+=\{\}\[\]\'\"\<\>\?\|\\]/, '').gsub(/_$/, '').gsub(/^_/, '')
- end
-
- def kill_server()
- kill_pids([@server_pid])
- end
-
- def parse_test_url(value)
- current_vars = nil
- test_num = nil
- subtest_data = nil
- lookup_values = false
- if value =~ /iexploder.cgi(.*)/
- current_vars = $1
- if current_vars =~ /[&\?]t=(\d+)/
- test_num = $1
- end
- if current_vars =~ /[&\?]s=([\d_,]+)/
- subtest_data = $1
- end
- if current_vars =~ /[&\?]l=(\w+)/
- lookup_value = $1
- end
- else
- msg("Unable to parse url in #{value}")
- return [nil, nil, nil, nil]
- end
- return [current_vars, test_num, subtest_data, lookup_value]
- end
-
- def check_log_status()
- timestamp, uri, user_agent = open("#{@app_base_url}last_page.cgi").read().chomp.split(' ')
- age = (Time.now() - timestamp.to_i).to_i
- if not @browser_id
- @browser_id = CGI.unescape(user_agent)
- msg("My browser is #{@browser_id}")
- end
-
-
- return [age, uri]
- end
-
- def save_testcase(url, case_type=nil)
- msg("Saving testcase: #{url}")
- vars, test_num, subtest_data, lookup_value = parse_test_url(url)
- if not case_type
- case_type = 'testcase'
- end
-
- testcase_name = ([case_type, encode_browser(), 'TEST', test_num, subtest_data].join('-')).gsub(/-$/, '') + ".html"
- testcase_path = "#{@test_dir}/#{testcase_name}"
- data = open(url).read()
- # Slow down our redirection time, and replace our testcase urls.
- data.gsub!(/0;URL=\/iexploder.*?\"/, "1;URL=#{testcase_name}\"")
- data.gsub!(/window\.location=\"\/iexploder.*?\"/, "window\.location=\"#{testcase_name}\"")
-
- # I wish I did not have to do this, but the reality is that I can't imitate header fuzzing
- # without a webservice in the backend. Change all URL's to use a well known localhost
- # port.
- data.gsub!(/\/iexploder.cgi/, TESTCASE_URL)
-
- f = File.open(testcase_path, 'w')
- f.write(data)
- f.close
- msg("Wrote testcase #{testcase_path}")
- return testcase_path
- end
-
- def calculate_next_url(test_num, subtest_data)
- @ie.test_num = test_num.to_i
- @ie.subtest_data = subtest_data
- if subtest_data and subtest_data.length > 0
- (width, offsets) = @ie.parseSubTestData(subtest_data)
- # We increment within combo_creator
- (width, offsets, lines) = combine_combo_creator(@ie.config['html_tags_per_page'], width, offsets)
- return @ie.generateTestUrl(@ie.nextTestNum(), width, offsets)
- else
- return @ie.generateTestUrl(@ie.nextTestNum())
- end
- end
-
- def find_crash_logs(max_age)
- crashed_files = []
- check_files = Dir.glob("*core*")
- if File.exists?(MAC_CRASH_PATH)
- check_files = check_files + Dir.glob("#{MAC_CRASH_PATH}/*.*")
- end
- check_files.each do |file|
- mtime = File.stat(file).mtime
- age = (Time.now() - mtime).to_i
- if age < max_age
- msg("#{file} is only #{age}s old: #{mtime}")
- crashed_files << file
- end
- end
- return crashed_files
- end
-
- def test_browser(args, test_num, random_mode=false)
- # NOTE: random_mode is not yet supported.
-
- browser_pids = []
- subtest_data = nil
- @ie.test_num = test_num
- @ie.random_mode = random_mode
- next_url = @ie.generateTestUrl(test_num)
-
- while next_url
- msg("Starting at: #{next_url}")
- if browser_pids
- kill_pids(browser_pids)
- end
- browser_pids = launch_browser(args, next_url)
- test_is_running = true
- crash_files = []
-
- while test_is_running
- sleep(@scan_timer)
- begin
- age, request_uri = check_log_status()
- rescue
- msg("Failed to get status. webserver likely crashed.")
- kill_pids([@server_pid])
- @server_pid = launch_server()
- next_url = @ie.generateTestUrl(test_num)
- test_is_running = false
- next
- end
- vars, test_num, subtest_data, lookup_value = parse_test_url(request_uri)
- if lookup_value == 'survived_redirect'
- msg("We survived #{vars}. Bummer, could not repeat crash. Moving on.")
- test_is_running = false
- next_url = calculate_next_url(test_num, subtest_data)
- next
- elsif age > @watchdog_timer
- msg("Stuck at #{vars}, waited for #{@watchdog_timer}s. Killing browser.")
- kill_pids(browser_pids)
- current_url = "#{@app_url}#{vars}"
-# save_testcase(current_url, 'possible')
- crash_files = find_crash_logs(@watchdog_timer + (@scan_timer * 2))
- if crash_files.length > 0
- msg("Found recent crash logs: #{crash_files.inspect} - last page: #{current_url}")
- end
-
- if vars =~ /THE_END/
- msg("We hung at the end. Saving a testcase just in case.")
- save_testcase(current_url)
- next_url = calculate_next_url(test_num, nil)
- test_is_running = false
- next
- end
-
- # This is for subtesting
- if subtest_data
- if lookup_value
- msg("Confirmed crashing/hanging page at #{current_url} - saving testcase.")
- save_testcase(current_url)
- next_url = calculate_next_url(test_num, nil)
- test_is_running = false
- next
- else
- msg("Stopped at #{current_url}. Attempting to reproduce simplified crash/hang condition.")
- browser_pids = launch_browser(args, "#{current_url}&l=test_redirect")
- end
- # Normal testing goes here
- else
- if lookup_value
- msg("Reproducible crash/hang at #{current_url}, generating smaller test case.")
- url = current_url.gsub(/&l=(\w+)/, '')
- browser_pids = launch_browser(args, "#{url}&s=0")
- else
- msg("Stopped at #{current_url}. Attempting to reproduce crash/hang condition.")
- browser_pids = launch_browser(args, "#{current_url}&l=test_redirect")
- end
- end
- elsif age > @scan_timer
- msg("Waiting for #{vars} to finish loading... (#{age}s of #{@watchdog_timer}s)")
- end
- end
- end
- end
-end
-
-if $0 == __FILE__
- options = {
- :port => rand(16000).to_i + 16000,
- :test_dir => File.dirname($0) + '/../output',
- :log_dir => File.dirname($0) + '/../output',
- :test_num => nil,
- :watchdog_timer => 60,
- :scan_timer => 5,
- :config_path => 'config.yaml',
- :random_mode => false
- }
-
- optparse = OptionParser.new do |opts|
- opts.banner = "Usage: browser_harness.rb [options] -- <browser path> <browser options>"
- opts.on( '-t', '--test NUM', 'Test to start at' ) { |test_num| options[:test_num] = test_num.to_i }
- opts.on( '-p', '--port NUM', 'Listen on TCP port NUM (random)' ) { |port| options[:port] = port.to_i }
- opts.on( '-c', '--config PATH', 'Use PATH for configuration file' ) { |path| options[:config_path] = path }
- opts.on( '-d', '--testdir PATH', 'Use PATH to save testcases (/tmp)' ) { |path| options[:test_dir] = path }
- opts.on( '-l', '--logdir PATH', 'Use PATH to save logs (/tmp)' ) { |path| options[:log_dir] = path }
- opts.on( '-w', '--watchdog NUM', 'How many seconds to wait for pages to load (45s)' ) { |sec| options[:watchdog_timer] = sec.to_i }
- opts.on( '-r', '--random', 'Generate test numbers pseudo-randomly' ) { options[:random_mode] = true }
- opts.on( '-s', '--scan NUM', 'How often to check for new log data (5s)' ) { |sec| options[:scan_timer] = sec.to_i }
- opts.on( '-h', '--help', 'Display this screen' ) { puts opts; exit }
- end
- optparse.parse!
-
- if options[:port] == 0
- puts "Unable to parse port option. Try adding -- as an argument before you specify your browser location."
- exit
- end
-
- if ARGV.length < 1
- puts "No browser specified. Perhaps you need some --help?"
- exit
- end
- puts "options: #{options.inspect}"
- puts "browser: #{ARGV.inspect}"
-
- harness = BrowserHarness.new(
- options[:port],
- options[:config_path],
- options[:log_dir],
- options[:test_dir],
- options[:watchdog_timer],
- options[:scan_timer]
- )
-
- harness.test_browser(ARGV, options[:test_num], options[:random_mode])
-end
diff --git a/Tools/iExploder/iexploder-1.7.2/src/config.yaml b/Tools/iExploder/iexploder-1.7.2/src/config.yaml
deleted file mode 100644
index e796e8e41..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/config.yaml
+++ /dev/null
@@ -1,54 +0,0 @@
-# iexploder configuration file
-
-# path to the data files (css-properties, css-values, etc.)
-mangle_data_path: .
-
-# This is only used by the webserver.py, not the cgi.
-access_log_path: ../access.log
-
-# Some basic tuning for maximum crashing power.
-html_tags_per_page: 100
-attributes_per_html_tag_max: 15
-properties_per_style_max: 15
-attributes_per_style_property_max: 3
-# URL's loaded by img/src/etc. get a max of this many fuzzed headers
-headers_per_page_max: 2
-
-# How many combinations should we try when generating subtests
-subtest_combinations_max: 5
-
-# How many lines wide should we start our subtesting at? Increase for faster/looser
-# subtesting.
-initial_subtest_width: 1
-
-# How much garbage do we send the client? If you really want to explore
-# buffer overflows, consider making this a much larger size (16K+)
-buffer_overflow_length: 1025
-max_garbage_text_size: 257
-
-# These tags are X% likely to overwrite one randomly selected tag per page load
-favor_html_tags:
- script: 65
- style: 75
- img: 90
- video: 90
- object: 90
- embed: 90
-
-# Exclude certain tag.parameter or tag.style.attribute combinations for a given regexp.
-# An asterisk is allowed in the first field. Valid forms include:
-#
-# img.onloadbanana: "Bananarama 3000"
-# dir.style.-webkit-banana-rule: "BananaWebKit\/532\.9 |BananaTron5K"
-# *.style.-webkit-banana-rule: "BananaWebKit\/532\.9 |BananaTron5K"
-
-exclude:
- # Hangs the test waiting for a prompt sometimes
- iframe.src: "Firefox\/3.6"
-
- # http://code.google.com/p/chromium/issues/detail?id=56207
- *.style.content: "Chrome\/7\.0\.5"
-
- # http://code.google.com/p/chromium/issues/detail?id=56208
- progress.style.font: "Chrome\/7\.0\.5"
-
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-atrules/mozilla b/Tools/iExploder/iexploder-1.7.2/src/css-atrules/mozilla
deleted file mode 100644
index c0e626b18..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-atrules/mozilla
+++ /dev/null
@@ -1,6 +0,0 @@
-@-moz-document
-@charset
-@font-face
-@import
-@media
-@namespace
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-atrules/webkit b/Tools/iExploder/iexploder-1.7.2/src/css-atrules/webkit
deleted file mode 100644
index 99ea2cc77..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-atrules/webkit
+++ /dev/null
@@ -1,14 +0,0 @@
-@-webkit-decls
-@-webkit-keyframe-rule
-@-webkit-keyframes
-@-webkit-mediaquery
-@-webkit-rule
-@-webkit-selector
-@-webkit-value
-@-webkit-variables-decls
-@charset
-@font-face
-@import
-@media
-@namespace
-@page
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-properties/dillo b/Tools/iExploder/iexploder-1.7.2/src/css-properties/dillo
deleted file mode 100644
index 72a7d4586..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-properties/dillo
+++ /dev/null
@@ -1,98 +0,0 @@
-background
-background-attachment
-background-color
-background-image
-background-position
-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-rigth-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-size-adjust
-font-stretch
-font-style
-font-variant
-font-weight
-height
-last
-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
-marker-offset
-marks
-max-height
-max-width
-min-height
-min-width
-outline
-outline-color
-outline-style
-outline-width
-overflow
-padding
-padding-bottom
-padding-left
-padding-right
-padding-top
-position
-quotes
-right
-text-align
-text-decoration
-text-indent
-text-shadow
-text-transform
-top
-unicode-bidi
-vertical-align
-visibility
-white-space
-width
-word-spacing
-x-colspan
-x-link
-x-rowspan
-z-index
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-properties/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/css-properties/gtkhtml
deleted file mode 100644
index 1011a4ed5..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-properties/gtkhtml
+++ /dev/null
@@ -1,16 +0,0 @@
-background
-background-color
-background-image
-border
-border-color
-border-style
-border-width
-clear
-color
-display
-height
-padding
-text-align
-text-decoration
-white-space
-width
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-properties/internet_explorer6 b/Tools/iExploder/iexploder-1.7.2/src/css-properties/internet_explorer6
deleted file mode 100644
index d23f3a14b..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-properties/internet_explorer6
+++ /dev/null
@@ -1,29 +0,0 @@
-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
-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(
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-properties/mozilla b/Tools/iExploder/iexploder-1.7.2/src/css-properties/mozilla
deleted file mode 100644
index 953e6064c..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-properties/mozilla
+++ /dev/null
@@ -1,275 +0,0 @@
--moz-appearance
--moz-background-inline-policy
--moz-binding
--moz-border-bottom-colors
--moz-border-end
--moz-border-end-color
--moz-border-end-style
--moz-border-end-width
--moz-border-image
--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-start
--moz-border-start-color
--moz-border-start-style
--moz-border-start-width
--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-shadow
--moz-box-sizing
--moz-column-count
--moz-column-gap
--moz-column-rule
--moz-column-rule-color
--moz-column-rule-style
--moz-column-rule-width
--moz-column-width
--moz-float-edge
--moz-font-feature-settings
--moz-font-language-override
--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-script-level
--moz-script-min-size
--moz-script-size-multiplier
--moz-stack-sizing
--moz-tab-size
--moz-transform
--moz-transform-origin
--moz-transition
--moz-transition-delay
--moz-transition-duration
--moz-transition-property
--moz-transition-timing-function
--moz-user-focus
--moz-user-input
--moz-user-modify
--moz-user-select
--moz-window-shadow
--x-system-font
-appearance
-azimuth
-background
-background-attachment
-background-clip
-background-color
-background-image
-background-origin
-background-position
-background-repeat
-background-size
-binding
-border
-border-bottom
-border-bottom-color
-border-bottom-style
-border-bottom-width
-border-collapse
-border-color
-border-end-color-value
-border-end-style-value
-border-end-width-value
-border-left
-border-left-color
-border-left-color-ltr-source
-border-left-color-rtl-source
-border-left-color-value
-border-left-style
-border-left-style-ltr-source
-border-left-style-rtl-source
-border-left-style-value
-border-left-width
-border-left-width-ltr-source
-border-left-width-rtl-source
-border-left-width-value
-border-right
-border-right-color
-border-right-color-ltr-source
-border-right-color-rtl-source
-border-right-color-value
-border-right-style
-border-right-style-ltr-source
-border-right-style-rtl-source
-border-right-style-value
-border-right-width
-border-right-width-ltr-source
-border-right-width-rtl-source
-border-right-width-value
-border-spacing
-border-start-color-value
-border-start-style-value
-border-start-width-value
-border-style
-border-top
-border-top-color
-border-top-style
-border-top-width
-border-width
-bottom
-caption-side
-clear
-clip
-clip-path
-clip-rule
-color
-color-interpolation
-color-interpolation-filters
-content
-counter-increment
-counter-reset
-cue
-cue-after
-cue-before
-cursor
-direction
-display
-dominant-baseline
-elevation
-empty-cells
-fill
-fill-opacity
-fill-rule
-filter
-float
-flood-color
-flood-opacity
-font
-font-family
-font-size
-font-size-adjust
-font-stretch
-font-style
-font-variant
-font-weight
-height
-image-rendering
-ime-mode
-left
-letter-spacing
-lighting-color
-line-height
-list-style
-list-style-image
-list-style-position
-list-style-type
-margin
-margin-bottom
-margin-end-value
-margin-left
-margin-left-ltr-source
-margin-left-rtl-source
-margin-left-value
-margin-right
-margin-right-ltr-source
-margin-right-rtl-source
-margin-right-value
-margin-start-value
-margin-top
-marker
-marker-end
-marker-mid
-marker-offset
-marker-start
-marks
-mask
-max-height
-max-width
-min-height
-min-width
-nsnull
-opacity
-orphans
-outline
-outline-color
-outline-offset
-outline-style
-outline-width
-overflow
-overflow-x
-overflow-y
-padding
-padding-bottom
-padding-end-value
-padding-left
-padding-left-ltr-source
-padding-left-rtl-source
-padding-left-value
-padding-right
-padding-right-ltr-source
-padding-right-rtl-source
-padding-right-value
-padding-start-value
-padding-top
-page
-page-break-after
-page-break-before
-page-break-inside
-pause
-pause-after
-pause-before
-pitch
-pitch-range
-pointer-events
-position
-quotes
-resize
-richness
-right
-shape-rendering
-size
-speak
-speak-header
-speak-numeral
-speak-punctuation
-speech-rate
-stop-color
-stop-opacity
-stress
-stroke
-stroke-dasharray
-stroke-dashoffset
-stroke-linecap
-stroke-linejoin
-stroke-miterlimit
-stroke-opacity
-stroke-width
-table-layout
-text-align
-text-anchor
-text-decoration
-text-indent
-text-rendering
-text-shadow
-text-transform
-top
-transition
-unicode-bidi
-vertical-align
-visibility
-voice-family
-volume
-white-space
-widows
-width
-word-spacing
-word-wrap
-z-index
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-properties/webkit b/Tools/iExploder/iexploder-1.7.2/src/css-properties/webkit
deleted file mode 100644
index 927e24cb2..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-properties/webkit
+++ /dev/null
@@ -1,256 +0,0 @@
-
--webkit-animation
--webkit-animation-delay
--webkit-animation-direction
--webkit-animation-duration
--webkit-animation-fill-mode
--webkit-animation-iteration-count
--webkit-animation-name
--webkit-animation-play-state
--webkit-animation-timing-function
--webkit-appearance
--webkit-backface-visibility
--webkit-background-clip
--webkit-background-composite
--webkit-background-origin
--webkit-background-size
--webkit-border-end
--webkit-border-end-color
--webkit-border-end-style
--webkit-border-end-width
--webkit-border-fit
--webkit-border-horizontal-spacing
--webkit-border-image
--webkit-border-radius
--webkit-border-start
--webkit-border-start-color
--webkit-border-start-style
--webkit-border-start-width
--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-reflect
--webkit-box-shadow
--webkit-box-sizing
--webkit-color-correction
--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-span
--webkit-column-width
--webkit-columns
--webkit-font-size-delta
--webkit-font-smoothing
--webkit-highlight
--webkit-hyphenate-character
--webkit-hyphenate-locale
--webkit-hyphens
--webkit-line-break
--webkit-line-clamp
--webkit-margin-bottom-collapse
--webkit-margin-collapse
--webkit-margin-end
--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-mask
--webkit-mask-attachment
--webkit-mask-box-image
--webkit-mask-clip
--webkit-mask-composite
--webkit-mask-image
--webkit-mask-origin
--webkit-mask-position
--webkit-mask-position-x
--webkit-mask-position-y
--webkit-mask-repeat
--webkit-mask-repeat-x
--webkit-mask-repeat-y
--webkit-mask-size
--webkit-match-nearest-mail-blockquote-color
--webkit-nbsp-mode
--webkit-padding-end
--webkit-padding-start
--webkit-perspective
--webkit-perspective-origin
--webkit-perspective-origin-x
--webkit-perspective-origin-y
--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-transform
--webkit-transform-origin
--webkit-transform-origin-x
--webkit-transform-origin-y
--webkit-transform-origin-z
--webkit-transform-style
--webkit-transition
--webkit-transition-delay
--webkit-transition-duration
--webkit-transition-property
--webkit-transition-timing-function
--webkit-user-drag
--webkit-user-modify
--webkit-user-select
--webkit-variable-declaration-block
-background
-background-attachment
-background-clip
-background-color
-background-image
-background-origin
-background-position
-background-position-x
-background-position-y
-background-repeat
-background-repeat-x
-background-repeat-y
-background-size
-border
-border-bottom
-border-bottom-color
-border-bottom-left-radius
-border-bottom-right-radius
-border-bottom-style
-border-bottom-width
-border-collapse
-border-color
-border-left
-border-left-color
-border-left-style
-border-left-width
-border-radius
-border-right
-border-right-color
-border-right-style
-border-right-width
-border-spacing
-border-style
-border-top
-border-top-color
-border-top-left-radius
-border-top-right-radius
-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
-pointer-events
-position
-quotes
-resize
-right
-size
-src
-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-rendering
-text-shadow
-text-transform
-text-underline
-text-underline-color
-text-underline-mode
-text-underline-style
-text-underline-width
-top
-unicode-bidi
-unicode-range
-vertical-align
-visibility
-white-space
-widows
-width
-word-break
-word-spacing
-word-wrap
-z-index
-zoom
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/mozilla b/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/mozilla
deleted file mode 100644
index e092ef730..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/mozilla
+++ /dev/null
@@ -1,60 +0,0 @@
--moz-any
--moz-any-link
--moz-bound-element
--moz-broken
--moz-drag-over
--moz-empty-except-children-with-localname
--moz-first-node
--moz-focusring
--moz-handler-blocked
--moz-handler-crashed
--moz-handler-disabled
--moz-has-handlerref
--moz-is-html
--moz-last-node
--moz-loading
--moz-locale-dir
--moz-lwtheme
--moz-lwtheme-brighttext
--moz-lwtheme-darktext
--moz-math-increment-script-level
--moz-only-whitespace
--moz-placeholder
--moz-read-only
--moz-read-write
--moz-suppressed
--moz-system-metric
--moz-type-unsupported
--moz-user-disabled
--moz-window-inactive
-active
-checked
-default
-disabled
-empty
-enabled
-first-child
-first-of-type
-focus
-hover
-in-range
-indeterminate
-invalid
-lang
-last-child
-last-of-type
-link
-not
-nth-child
-nth-last-child
-nth-last-of-type
-nth-of-type
-only-child
-only-of-type
-optional
-out-of-range
-required
-root
-target
-valid
-visited
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/webkit b/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/webkit
deleted file mode 100644
index b15fa30ef..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-pseudo/webkit
+++ /dev/null
@@ -1,100 +0,0 @@
--khtml-drag
--webkit-any-link
--webkit-autofill
--webkit-drag
--webkit-file-upload-button
--webkit-full-page-media
--webkit-full-screen
--webkit-full-screen-document
--webkit-inner-spin-button
--webkit-input-placeholder
--webkit-input-speech-button
--webkit-media-controls-current-time-display
--webkit-media-controls-fullscreen-button
--webkit-media-controls-mute-button
--webkit-media-controls-panel
--webkit-media-controls-play-button
--webkit-media-controls-return-to-realtime-button
--webkit-media-controls-rewind-button
--webkit-media-controls-seek-back-button
--webkit-media-controls-seek-forward-button
--webkit-media-controls-status-display
--webkit-media-controls-time-remaining-display
--webkit-media-controls-timeline
--webkit-media-controls-timeline-container
--webkit-media-controls-toggle-closed-captions-button
--webkit-media-controls-volume-slider
--webkit-media-controls-volume-slider-container
--webkit-media-controls-volume-slider-mute-button
--webkit-meter-horizontal-bar
--webkit-meter-horizontal-even-less-good-value
--webkit-meter-horizontal-optimum-value
--webkit-meter-horizontal-suboptimal-value
--webkit-meter-vertical-bar
--webkit-meter-vertical-even-less-good-value
--webkit-meter-vertical-optimum-value
--webkit-meter-vertical-suboptimal-value
--webkit-outer-spin-button
--webkit-progress-bar-value
--webkit-resizer
--webkit-scrollbar
--webkit-scrollbar-button
--webkit-scrollbar-corner
--webkit-scrollbar-thumb
--webkit-scrollbar-track
--webkit-scrollbar-track-piece
--webkit-search-cancel-button
--webkit-search-decoration
--webkit-search-results-button
--webkit-search-results-decoration
--webkit-slider-thumb
-active
-after
-before
-checked
-corner-present
-decrement
-default
-disabled
-double-button
-empty
-enabled
-end
-first
-first-child
-first-letter
-first-line
-first-of-type
-focus
-horizontal
-hover
-increment
-indeterminate
-invalid
-lang(
-last-child
-last-of-type
-left
-link
-no-button
-not(
-nth-child(
-nth-last-child(
-nth-last-of-type(
-nth-of-type(
-only-child
-only-of-type
-optional
-read-only
-read-write
-required
-right
-root
-selection
-single-button
-start
-target
-valid
-vertical
-visited
-window-inactive
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-values/dillo b/Tools/iExploder/iexploder-1.7.2/src/css-values/dillo
deleted file mode 100644
index 2d568336a..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-values/dillo
+++ /dev/null
@@ -1,93 +0,0 @@
-armenian
-baseline
-blink
-block
-bold
-bolder
-bottom
-center
-circle
-cjk-ideographic
-crosshair
-dashed
-decimal
-decimal-leading-zero
-default
-disc
-dotted
-double
-e-resize
-georgian
-groove
-hebrew
-help
-hidden
-hiragana
-hiragana-iroha
-inline
-inset
-inside
-italic
-justify
-katakana
-katakana-iroha
-large
-larger
-left
-light
-lighter
-line-through
-list-item
-lower-alpha
-lower-greek
-lower-latin
-lower-roman
-medium
-middle
-move
-ne-resize
-none
-normal
-nowrap
-n-resize
-nw-resize
-oblique
-outset
-outside
-overline
-pointer
-pre
-ridge
-right
-se-resize
-small
-smaller
-solid
-square
-s-resize
-string
-sub
-super
-sw-resize
-table
-table-cell
-table-footer-group
-table-header-group
-table-row
-table-row-group
-text
-text-bottom
-text-top
-thick
-thin
-top
-underline
-upper-alpha
-upper-latin
-upper-roman
-wait
-w-resize
-x-large
-x-small
-xx-large
-xx-small
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-values/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/css-values/gtkhtml
deleted file mode 100644
index 53a4f81e0..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-values/gtkhtml
+++ /dev/null
@@ -1,18 +0,0 @@
-block
-both
-inherit
-inline
-inline-table
-inset
-left
-medium
-none
-normal
-nowrap
-pre
-pre-line
-pre-wrap
-right
-solid
-thick
-thin
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-values/mozilla b/Tools/iExploder/iexploder-1.7.2/src/css-values/mozilla
deleted file mode 100644
index 193f0c820..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-values/mozilla
+++ /dev/null
@@ -1,558 +0,0 @@
--moz-activehyperlinktext
--moz-all
--moz-alt-content
--moz-anchor-decoration
--moz-arabic-indic
--moz-available
--moz-bengali
--moz-block-height
--moz-box
--moz-button
--moz-buttondefault
--moz-buttonhoverface
--moz-buttonhovertext
--moz-cellhighlight
--moz-cellhighlighttext
--moz-center
--moz-cjk-earthly-branch
--moz-cjk-heavenly-stem
--moz-combobox
--moz-comboboxtext
--moz-compact
--moz-crisp-edges
--moz-deck
--moz-desktop
--moz-devanagari
--moz-dialog
--moz-dialogtext
--moz-document
--moz-dragtargetzone
--moz-element
--moz-ethiopic-halehame
--moz-ethiopic-halehame-am
--moz-ethiopic-halehame-ti-er
--moz-ethiopic-halehame-ti-et
--moz-ethiopic-numeric
--moz-eventreerow
--moz-field
--moz-fieldtext
--moz-fit-content
--moz-grab
--moz-grabbing
--moz-grid
--moz-grid-group
--moz-grid-line
--moz-groupbox
--moz-gujarati
--moz-gurmukhi
--moz-hangul
--moz-hangul-consonant
--moz-hidden-unscrollable
--moz-html-cellhighlight
--moz-html-cellhighlighttext
--moz-hyperlinktext
--moz-image-rect
--moz-info
--moz-initial
--moz-inline-box
--moz-inline-grid
--moz-inline-stack
--moz-japanese-formal
--moz-japanese-informal
--moz-kannada
--moz-khmer
--moz-lao
--moz-left
--moz-list
--moz-mac-alternateprimaryhighlight
--moz-mac-chrome-active
--moz-mac-chrome-inactive
--moz-mac-disabledtoolbartext
--moz-mac-focusring
--moz-mac-menuselect
--moz-mac-menushadow
--moz-mac-menutextdisable
--moz-mac-menutextselect
--moz-mac-secondaryhighlight
--moz-mac-unified-toolbar
--moz-malayalam
--moz-marker
--moz-max-content
--moz-menubarhovertext
--moz-menubartext
--moz-menuhover
--moz-menuhovertext
--moz-middle-with-baseline
--moz-min-content
--moz-myanmar
--moz-nativehyperlinktext
--moz-none
--moz-oddtreerow
--moz-oriya
--moz-persian
--moz-popup
--moz-pull-down-menu
--moz-right
--moz-run-in
--moz-scrollbars-horizontal
--moz-scrollbars-none
--moz-scrollbars-vertical
--moz-show-background
--moz-simp-chinese-formal
--moz-simp-chinese-informal
--moz-stack
--moz-tamil
--moz-telugu
--moz-thai
--moz-trad-chinese-formal
--moz-trad-chinese-informal
--moz-urdu
--moz-use-system-font
--moz-use-text-color
--moz-visitedhyperlinktext
--moz-win-borderless-glass
--moz-win-browsertabbar-toolbox
--moz-win-communications-toolbox
--moz-win-communicationstext
--moz-win-glass
--moz-win-media-toolbox
--moz-win-mediatext
--moz-window
--moz-window-button-box
--moz-window-button-box-maximized
--moz-window-button-close
--moz-window-button-maximize
--moz-window-button-minimize
--moz-window-button-restore
--moz-window-frame-bottom
--moz-window-frame-left
--moz-window-frame-right
--moz-window-titlebar
--moz-window-titlebar-maximized
--moz-workspace
--moz-zoom-in
--moz-zoom-out
-above
-absolute
-active
-activeborder
-activecaption
-alias
-all
-all-scroll
-alphabetic
-always
-appworkspace
-armenian
-auto
-avoid
-background
-baseline
-behind
-below
-bevel
-bidi-override
-blink
-block
-block-axis
-bold
-bolder
-border-box
-both
-bottom
-bottom-outside
-bounding-box
-break-word
-butt
-button
-button-arrow-down
-button-arrow-next
-button-arrow-previous
-button-arrow-up
-button-bevel
-button-focus
-buttonface
-buttonhighlight
-buttonshadow
-buttontext
-capitalize
-caption
-captiontext
-caret
-cell
-center
-center-left
-center-right
-central
-ch
-checkbox
-checkbox-container
-checkbox-label
-checkmenuitem
-circle
-cjk-ideographic
-close-quote
-closest-corner
-closest-side
-cm
-code
-col-resize
-collapse
-condensed
-contain
-content-box
-context-menu
-continuous
-copy
-cover
-crispedges
-crop
-cross
-crosshair
-currentcolor
-dashed
-decimal
-decimal-leading-zero
-default
-deg
-dialog
-digits
-disabled
-disc
-dotted
-double
-dualbutton
-e-resize
-each-box
-ease
-ease-in
-ease-in-out
-ease-out
-element
-elements
-ellipse
-em
-embed
-enabled
-end
-evenodd
-ew-resize
-ex
-expanded
-extra-condensed
-extra-expanded
-far-left
-far-right
-farthest-corner
-farthest-side
-fast
-faster
-fill
-fixed
-geometricprecision
-georgian
-grad
-graytext
-groove
-groupbox
-hanging
-hebrew
-help
-hidden
-hide
-high
-higher
-highlight
-highlighttext
-hiragana
-hiragana-iroha
-horizontal
-hz
-icon
-ideographic
-ignore
-in
-inactive
-inactiveborder
-inactivecaption
-inactivecaptiontext
-infobackground
-infotext
-inherit
-inline
-inline-axis
-inline-block
-inline-table
-inset
-inside
-interlace
-invert
-italic
-justify
-katakana
-katakana-iroha
-khz
-landscape
-large
-larger
-left
-left-side
-leftwards
-level
-lighter
-line-through
-linear
-linearrgb
-list-item
-listbox
-listitem
-logical
-loud
-low
-lower
-lower-alpha
-lower-greek
-lower-latin
-lower-roman
-lowercase
-ltr
-margin-box
-mathematical
-matrix
-medium
-menu
-menuarrow
-menubar
-menucheckbox
-menuimage
-menuitem
-menuitemtext
-menulist
-menulist-button
-menulist-text
-menulist-textfield
-menupopup
-menuradio
-menuseparator
-menutext
-message-box
-middle
-miter
-mix
-mm
-move
-ms
-n-resize
-narrower
-ne-resize
-nesw-resize
-no-change
-no-close-quote
-no-drop
-no-open-quote
-no-repeat
-none
-nonzero
-normal
-not-allowed
-nowrap
-ns-resize
-nw-resize
-nwse-resize
-oblique
-once
-open-quote
-optimizelegibility
-optimizequality
-optimizespeed
-outset
-outside
-overline
-padding-box
-painted
-pc
-physical
-pointer
-portrait
-pre
-pre-line
-pre-wrap
-progress
-progressbar
-progressbar-vertical
-progresschunk
-progresschunk-vertical
-progressive
-pt
-px
-rad
-radio
-radio-container
-radio-label
-radiomenuitem
-read-only
-read-write
-relative
-repeat
-repeat-x
-repeat-y
-reset-size
-resizer
-resizerpanel
-reverse
-ridge
-right
-right-side
-rightwards
-rotate
-round
-row-resize
-rtl
-s
-s-resize
-scale
-scale-horizontal
-scale-vertical
-scalethumb-horizontal
-scalethumb-vertical
-scalethumbend
-scalethumbstart
-scalethumbtick
-scalex
-scaley
-scroll
-scrollbar
-scrollbar-small
-scrollbarbutton-down
-scrollbarbutton-left
-scrollbarbutton-right
-scrollbarbutton-up
-scrollbarthumb-horizontal
-scrollbarthumb-vertical
-scrollbartrack-horizontal
-scrollbartrack-vertical
-se-resize
-searchfield
-select-after
-select-all
-select-before
-select-menu
-select-same
-semi-condensed
-semi-expanded
-separate
-separator
-sheet
-show
-silent
-skew
-skewx
-skewy
-slow
-slower
-small
-small-caps
-small-caption
-smaller
-soft
-solid
-spell-out
-spinner
-spinner-downbutton
-spinner-textfield
-spinner-upbutton
-splitter
-square
-srgb
-start
-static
-status-bar
-statusbar
-statusbarpanel
-stretch
-stretch-to-fit
-stroke
-sub
-super
-sw-resize
-tab
-tab-scroll-arrow-back
-tab-scroll-arrow-forward
-table
-table-caption
-table-cell
-table-column
-table-column-group
-table-footer-group
-table-header-group
-table-row
-table-row-group
-tabpanel
-tabpanels
-text
-text-after-edge
-text-before-edge
-text-bottom
-text-top
-textfield
-textfield-multiline
-thick
-thin
-threeddarkshadow
-threedface
-threedhighlight
-threedlightshadow
-threedshadow
-toggle
-toolbar
-toolbarbutton
-toolbarbutton-dropdown
-toolbargripper
-toolbox
-tooltip
-top
-top-outside
-translate
-translatex
-translatey
-transparent
-treeheader
-treeheadercell
-treeheadersortarrow
-treeitem
-treeline
-treetwisty
-treetwistyopen
-treeview
-tri-state
-ultra-condensed
-ultra-expanded
-underline
-upper-alpha
-upper-latin
-upper-roman
-uppercase
-use-script
-vertical
-vertical-text
-visible
-visiblefill
-visiblepainted
-visiblestroke
-w-resize
-wait
-wider
-window
-windowframe
-windowtext
-write-only
-x-fast
-x-high
-x-large
-x-loud
-x-low
-x-slow
-x-small
-x-soft
-xx-large
-xx-small
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-values/other b/Tools/iExploder/iexploder-1.7.2/src/css-values/other
deleted file mode 100644
index c3c1fba13..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-values/other
+++ /dev/null
@@ -1,20 +0,0 @@
-0
-0 auto
-0 fixed
-#339933 !important !important !important
-attr("ATTRAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA")
-block clear
-block width
-clip:rect(-0px -2000000px -200000px -0px)
-clip:rect(0px 2000000px 200000px 0px)
-no-close
-normal !important
-rgb(9999999999, 999999999, 9999999999999)
-scrollbargripper-horizontal
-scrollbargripper-vertical
-searchfield-close
-searchfield-results
-thick dashed yellow
-thick dotted blue
-unfurl
--webkit-overlay
diff --git a/Tools/iExploder/iexploder-1.7.2/src/css-values/webkit b/Tools/iExploder/iexploder-1.7.2/src/css-values/webkit
deleted file mode 100644
index bb7c7f884..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/css-values/webkit
+++ /dev/null
@@ -1,478 +0,0 @@
-
--wap-marquee
--webkit-activelink
--webkit-auto
--webkit-baseline-middle
--webkit-body
--webkit-box
--webkit-center
--webkit-control
--webkit-focus-ring-color
--webkit-grab
--webkit-grabbing
--webkit-inline-box
--webkit-left
--webkit-link
--webkit-marquee
--webkit-mini-control
--webkit-nowrap
--webkit-right
--webkit-small-control
--webkit-text
--webkit-xxx-large
--webkit-zoom-in
--webkit-zoom-out
-100
-200
-300
-400
-500
-600
-700
-800
-900
-a3
-a4
-a5
-above
-absolute
-activeborder
-activecaption
-afar
-after-white-space
-ahead
-alias
-all
-all-scroll
-alternate
-always
-amharic
-amharic-abegede
-antialiased
-appworkspace
-aqua
-arabic-indic
-armenian
-asterisks
-auto
-avoid
-b4
-b5
-background
-backwards
-baseline
-below
-bengali
-bidi-override
-binary
-black
-blink
-block
-block-axis
-blue
-bold
-bolder
-border
-border-box
-both
-bottom
-break-all
-break-word
-button
-button-bevel
-buttonface
-buttonhighlight
-buttonshadow
-buttontext
-cambodian
-capitalize
-caps-lock-indicator
-caption
-captiontext
-caret
-cell
-center
-checkbox
-circle
-cjk-earthly-branch
-cjk-heavenly-stem
-cjk-ideographic
-clear
-clip
-close-quote
-col-resize
-collapse
-compact
-condensed
-contain
-content
-content-box
-context-menu
-continuous
-continuous-capacity-level-indicator
-copy
-cover
-crop
-cross
-crosshair
-currentcolor
-cursive
-dashed
-decimal
-decimal-leading-zero
-default
-default-button
-destination-atop
-destination-in
-destination-out
-destination-over
-devanagari
-disc
-discard
-discrete-capacity-level-indicator
-document
-dot-dash
-dot-dot-dash
-dotted
-double
-down
-e-resize
-ease
-ease-in
-ease-in-out
-ease-out
-element
-ellipsis
-embed
-end
-ethiopic
-ethiopic-abegede
-ethiopic-abegede-am-et
-ethiopic-abegede-gez
-ethiopic-abegede-ti-er
-ethiopic-abegede-ti-et
-ethiopic-halehame-aa-er
-ethiopic-halehame-aa-et
-ethiopic-halehame-am-et
-ethiopic-halehame-gez
-ethiopic-halehame-om-et
-ethiopic-halehame-sid-et
-ethiopic-halehame-so-et
-ethiopic-halehame-ti-er
-ethiopic-halehame-ti-et
-ethiopic-halehame-tig
-ew-resize
-expanded
-extra-condensed
-extra-expanded
-fantasy
-fast
-fill
-fixed
-flat
-floating
-footnotes
-forwards
-fuchsia
-fullscreen
-geometricPrecision
-georgian
-gray
-graytext
-green
-grey
-groove
-gujarati
-gurmukhi
-hand
-hangul
-hangul-consonant
-hebrew
-help
-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
-inner-spin-button
-input-speech-button
-inset
-inside
-intrinsic
-invert
-italic
-justify
-kannada
-katakana
-katakana-iroha
-khmer
-landscape
-lao
-large
-larger
-ledger
-left
-legal
-letter
-level
-lighter
-lime
-line-through
-linear
-lines
-list-button
-list-item
-listbox
-listitem
-local
-logical
-loud
-lower
-lower-alpha
-lower-greek
-lower-hexadecimal
-lower-latin
-lower-norwegian
-lower-roman
-lowercase
-ltr
-malayalam
-manual
-maroon
-match
-maximized
-media-controls-background
-media-controls-fullscreen-background
-media-current-time-display
-media-fullscreen-button
-media-mute-button
-media-play-button
-media-return-to-realtime-button
-media-rewind-button
-media-seek-back-button
-media-seek-forward-button
-media-slider
-media-sliderthumb
-media-time-remaining-display
-media-toggle-closed-captions-button
-media-volume-slider
-media-volume-slider-container
-media-volume-slider-mute-button
-media-volume-sliderthumb
-medium
-menu
-menulist
-menulist-button
-menulist-text
-menulist-textfield
-menutext
-message-box
-meter
-middle
-min-intrinsic
-minimized
-mix
-mongolian
-monospace
-move
-multiple
-myanmar
-n-resize
-narrower
-navy
-ne-resize
-nesw-resize
-no-close-quote
-no-drop
-no-open-quote
-no-repeat
-none
-normal
-not-allowed
-nowrap
-ns-resize
-nw-resize
-nwse-resize
-oblique
-octal
-olive
-open-quote
-optimizeLegibility
-optimizeSpeed
-orange
-oriya
-oromo
-outer-spin-button
-outset
-outside
-overlay
-overline
-padding
-padding-box
-painted
-paused
-persian
-plus-darker
-plus-lighter
-pointer
-portrait
-pre
-pre-line
-pre-wrap
-preserve-3d
-progress
-progress-bar
-progress-bar-value
-purple
-push-button
-radio
-rating-level-indicator
-read-only
-read-write
-read-write-plaintext-only
-red
-relative
-relevancy-level-indicator
-repeat
-repeat-x
-repeat-y
-reset
-reverse
-ridge
-right
-round
-row-resize
-rtl
-run-in
-running
-s-resize
-sRGB
-sans-serif
-scroll
-scrollbar
-se-resize
-searchfield
-searchfield-cancel-button
-searchfield-decoration
-searchfield-results-button
-searchfield-results-decoration
-semi-condensed
-semi-expanded
-separate
-serif
-show
-sidama
-silver
-single
-skip-white-space
-slide
-slider-horizontal
-slider-vertical
-sliderthumb-horizontal
-sliderthumb-vertical
-slow
-small
-small-caps
-small-caption
-smaller
-solid
-somali
-source-atop
-source-in
-source-out
-source-over
-space
-square
-square-button
-start
-static
-status-bar
-stretch
-stroke
-sub
-subpixel-antialiased
-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
-telugu
-text
-text-bottom
-text-top
-textarea
-textfield
-thai
-thick
-thin
-threeddarkshadow
-threedface
-threedhighlight
-threedlightshadow
-threedshadow
-tibetan
-tigre
-tigrinya-er
-tigrinya-er-abegede
-tigrinya-et
-tigrinya-et-abegede
-top
-transparent
-ultra-condensed
-ultra-expanded
-underline
-up
-upper-alpha
-upper-greek
-upper-hexadecimal
-upper-latin
-upper-norwegian
-upper-roman
-uppercase
-urdu
-vertical
-vertical-text
-visible
-visibleFill
-visiblePainted
-visibleStroke
-visual
-w-resize
-wait
-wave
-white
-wider
-window
-windowed
-windowframe
-windowtext
-x-large
-x-small
-xor
-xx-large
-xx-small
-yellow
diff --git a/Tools/iExploder/iexploder-1.7.2/src/headers/dillo b/Tools/iExploder/iexploder-1.7.2/src/headers/dillo
deleted file mode 100644
index 7eaee4318..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/headers/dillo
+++ /dev/null
@@ -1,9 +0,0 @@
-Content-Encoding
-Content-Length
-Content-Type
-Date
-Location
-Set-Cookie
-Transfer-Encoding
-Warning
-WWW-Authenticate
diff --git a/Tools/iExploder/iexploder-1.7.2/src/headers/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/headers/gtkhtml
deleted file mode 100644
index e69de29bb..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/headers/gtkhtml
+++ /dev/null
diff --git a/Tools/iExploder/iexploder-1.7.2/src/headers/mozilla b/Tools/iExploder/iexploder-1.7.2/src/headers/mozilla
deleted file mode 100644
index 8eda16cab..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/headers/mozilla
+++ /dev/null
@@ -1,70 +0,0 @@
-Accept
-Accept-Charset
-Accept-Encoding
-Accept-Language
-Accept-Ranges
-Age
-Allow
-Authentication
-Authorization
-Cache-Control
-Connection
-Content-Base
-Content-Disposition
-Content-Encoding
-Content-Language
-Content-Length
-Content-Location
-Content-MD5
-Content-Range
-Content-Transfer-Encoding
-Content-Type
-Cookie
-Date
-Depth
-Derived-From
-Destination
-Etag
-Expect
-Expires
-Forwarded
-From
-Host
-If
-If-Match
-If-Match-Any
-If-Modified-Since
-If-None-Match
-If-None-Match-Any
-If-Range
-If-Unmodified-Since
-Keep-Alive
-Last-Modified
-Link
-Location
-Lock-Token
-Max-Forwards
-Message-Id
-Mime
-Overwrite
-Pragma
-Proxy-Authenticate
-Proxy-Authorization
-Proxy-Connection
-Range
-Referer
-Retry-After
-Server
-Set-Cookie
-Set-Cookie2
-Status-URI
-Timeout
-Title
-Trailer
-Transfer-Encoding
-Upgrade
-User-Agent
-Vary
-Version
-WWW-Authenticate
-Warning
diff --git a/Tools/iExploder/iexploder-1.7.2/src/headers/webkit b/Tools/iExploder/iexploder-1.7.2/src/headers/webkit
deleted file mode 100644
index 4663d64d3..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/headers/webkit
+++ /dev/null
@@ -1,30 +0,0 @@
-Accept
-Accept-Ranges
-Access-Control-Allow-Credentials
-Access-Control-Allow-Headers
-Access-Control-Allow-Methods
-Access-Control-Allow-Origin
-Access-Control-Max-Age
-Content-Disposition
-Content-Encoding
-Content-Type
-ETag
-Last-Modified
-Origin
-Range
-Referer
-Refresh
-User-Agent
-X-DNS-Prefetch-Control
-age
-cache-control
-date
-expires
-icy-genre
-icy-metaint
-icy-name
-icy-title
-icy-url
-last-modified
-location
-pragma
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/dillo b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/dillo
deleted file mode 100644
index d13420974..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/dillo
+++ /dev/null
@@ -1,51 +0,0 @@
-accept-charset
-action
-align
-alt
-bgcolor
-border
-cellpadding
-cellspacing
-char
-checked
-codebase
-color
-cols
-colspan
-content
-coords
-data
-disabled
-enctype
-face
-href
-hspace
-http-equiv
-ismap
-link
-maxlength
-media
-method
-multiple
-name
-noshade
-nowrap
-prompt
-readonly
-rel
-rows
-rowspan
-selected
-shape
-size
-src
-start
-text
-title
-type
-usemap
-valign
-value
-vlink
-vspace
-width
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/gtkhtml
deleted file mode 100644
index 31f405288..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/gtkhtml
+++ /dev/null
@@ -1,64 +0,0 @@
-action
-align
-alink
-all
-background
-bgcolor
-bottom
-bottommargin
-button
-checkbox
-checked
-circle
-cite
-class
-clear
-cols
-content
-content-type
-coords
-default
-dir
-hidden
-href
-hspace
-http-equiv
-image
-key
-left
-leftmargin
-link
-ltr
-marginheight
-marginwidth
-maxlength
-method
-name
-no
-onClick
-password
-poly
-post
-radio
-rect
-refresh
-reset
-right
-rightmargin
-rows
-rtl
-shape
-size
-src
-style
-submit
-target
-text
-top
-topmargin
-type
-url
-value
-vlink
-vspace
-yes
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/internet_explorer6 b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/internet_explorer6
deleted file mode 100644
index 9e4c6edc0..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/internet_explorer6
+++ /dev/null
@@ -1,18 +0,0 @@
-# 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
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/mozilla b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/mozilla
deleted file mode 100644
index 5a8e6e181..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/mozilla
+++ /dev/null
@@ -1,694 +0,0 @@
-SVGLinearGradientFrame
-SVGRadialGradientFrame
-_moz-type
-abbr
-acceltext
-accent
-accent-height
-accentunder
-accept
-accept-charset
-accesskey
-accumulate
-action
-actiontype
-active
-additive
-align
-alignment-baseline
-alignmentscope
-alink
-alphabetic
-alt
-alternate
-altimg
-alttext
-amplitude
-arabic-form
-archive
-aria-activedescendant
-aria-atomic
-aria-autocomplete
-aria-busy
-aria-channel
-aria-checked
-aria-controls
-aria-datatype
-aria-describedby
-aria-disabled
-aria-dropeffect
-aria-expanded
-aria-flowto
-aria-grab
-aria-haspopup
-aria-hidden
-aria-invalid
-aria-labelledby
-aria-level
-aria-live
-aria-multiline
-aria-multiselectable
-aria-owns
-aria-posinset
-aria-pressed
-aria-readonly
-aria-relevant
-aria-required
-aria-secret
-aria-selected
-aria-setsize
-aria-sort
-aria-templateid
-aria-valuemax
-aria-valuemin
-aria-valuenow
-ascent
-async
-attribute
-attributeName
-attributename
-attributetype
-autocomplete
-autofocus
-autoplay
-autosubmit
-axis
-azimuth
-background
-base
-basefrequency
-baseline
-baseline-shift
-baseprofile
-bbox
-begin
-bevelled
-bgcolor
-bias
-border
-bordercolor
-bottom
-bottommargin
-by
-calcMode
-calcmode
-cap-height
-cellpadding
-cellspacing
-char
-charcode
-charoff
-charset
-checked
-child
-cite
-class
-classid
-clear
-clip
-clip-path
-clip-rule
-clippathunits
-close
-closure
-code
-codebase
-codetype
-color
-color-interpolation
-color-interpolation-filters
-color-profile
-color-rendering
-cols
-colspan
-columnalign
-columnlines
-columnspacing
-columnspan
-columnwidth
-command
-compact
-container
-containment
-content
-contenteditable
-contentscripttype
-contentstyletype
-contextmenu
-control
-controls
-coords
-curpos
-cursor
-cx
-cy
-d
-data
-datafld
-dataformatas
-datasources
-datasrc
-datetime
-declare
-default
-defer
-definitionurl
-denomalign
-depth
-descent
-diffuseconstant
-dir
-direction
-disabled
-display
-displaystyle
-divisor
-dominant-baseline
-draggable
-dur
-dx
-dy
-edge
-edgemode
-editable
-element
-elevation
-enable-background
-encoding
-enctype
-end
-equalcolumns
-equalrows
-equalsize
-event
-events
-exponent
-expr
-extends
-externalresourcesrequired
-face
-fence
-fill
-fill-opacity
-fill-rule
-filter
-filterres
-filterunits
-flags
-flex
-flood-color
-flood-opacity
-font-family
-font-size
-font-size-adjust
-font-stretch
-font-style
-font-variant
-font-weight
-fontfamily
-fontsize
-fontstyle
-fontweight
-for
-form
-formaction
-format
-formenctype
-formmethod
-frame
-frameborder
-framespacing
-from
-fx
-fy
-g1
-g2
-glyph-name
-glyph-orientation-horizontal
-glyph-orientation-vertical
-glyphRef
-glyphref
-gradientTransform
-gradientUnits
-gradienttransform
-gradientunits
-groupalign
-handler
-hanging
-headers
-height
-hidden
-hidefocus
-high
-horiz-adv-x
-horiz-origin-x
-horiz-origin-y
-href
-hreflang
-hspace
-http-equiv
-icon
-id
-ideographic
-image-rendering
-in
-in2
-includes
-increment
-index
-infer
-inherits
-inputmode
-insertafter
-insertbefore
-intercept
-irrelevant
-ismap
-k
-k1
-k2
-k3
-k4
-kernelmatrix
-kernelunitlength
-kerning
-key
-keycode
-keypoints
-keysplines
-keytext
-keytimes
-label
-lang
-language
-largeop
-layer
-layout
-left
-leftmargin
-lengthadjust
-letter-spacing
-lighting-color
-limitingconeangle
-linebreak
-linethickness
-link
-list
-local
-longdesc
-loopend
-loopstart
-low
-lowsrc
-lquote
-lspace
-lwtheme
-lwthemetextcolor
-macros
-manifest
-marginheight
-marginwidth
-marker-end
-marker-mid
-marker-start
-markerheight
-markerunits
-markerwidth
-mask
-maskcontentunits
-maskunits
-mathbackground
-mathcolor
-mathematical
-mathsize
-mathvariant
-max
-maxheight
-maxlength
-maxpos
-maxsize
-maxwidth
-media
-mediummathspace
-member
-method
-min
-minheight
-minpos
-minsize
-minwidth
-mode
-modifiers
-movablelimits
-multiple
-name
-namespace
-nargs
-nohref
-noresize
-noshade
-notation
-nowrap
-numalign
-numoctaves
-object
-observer
-observes
-occurrence
-offset
-onabort
-onactivate
-onafterprint
-onafterupdate
-onbefordeactivate
-onbeforeactivate
-onbeforecopy
-onbeforecut
-onbeforeeditfocus
-onbeforepaste
-onbeforeprint
-onbeforeunload
-onbeforeupdate
-onbegin
-onblur
-onbounce
-oncellchange
-onchange
-onclick
-oncontextmenu
-oncontrolselect
-oncopy
-oncut
-ondataavailable
-ondatasetchanged
-ondatasetcomplete
-ondblclick
-ondeactivate
-ondrag
-ondragdrop
-ondragend
-ondragenter
-ondragleave
-ondragover
-ondragstart
-ondrop
-onend
-onerror
-onerrorupdate
-onfilterchange
-onfinish
-onfocus
-onfocusin
-onfocusout
-onformchange
-onforminput
-onhelp
-oninput
-oninvalid
-onkeydown
-onkeypress
-onkeyup
-onload
-onlosecapture
-onmessage
-onmousedown
-onmouseenter
-onmouseleave
-onmousemove
-onmouseout
-onmouseover
-onmouseup
-onmousewheel
-onmove
-onmoveend
-onmovestart
-onpaste
-onpropertychange
-onreadystatechange
-onrepeat
-onreset
-onresize
-onrowenter
-onrowexit
-onrowsdelete
-onrowsinserted
-onscroll
-onselect
-onselectstart
-onstart
-onstop
-onsubmit
-onunload
-onzoom
-opacity
-open
-operator
-optimum
-order
-ordinal
-orient
-orientation
-origin
-other
-overflow
-overline-position
-overline-thickness
-pageincrement
-panose-1
-parent
-parsetype
-path
-pathlength
-pattern
-patternContentUnits
-patternTransform
-patternUnits
-patterncontentunits
-patterntransform
-patternunits
-persist
-ping
-placeholder
-playcount
-point-size
-pointer-events
-points
-pointsatx
-pointsaty
-pointsatz
-popupalign
-popupanchor
-position
-poster
-predicate
-prefix
-preload
-preserveAspectRatio
-preservealpha
-preserveaspectratio
-primitiveunits
-profile
-prompt
-properties
-querytype
-r
-radiogroup
-radius
-readonly
-ref
-refx
-refy
-rel
-rendering-intent
-repeat
-repeat-max
-repeat-min
-repeat-start
-repeat-template
-repeatcount
-repeatdur
-replace
-required
-requiredExtensions
-requiredFeatures
-requiredextensions
-requiredfeatures
-resource
-restart
-result
-rev
-right
-rightmargin
-role
-rotate
-rowalign
-rowlines
-rows
-rowspacing
-rowspan
-rquote
-rspace
-rt
-rules
-rx
-ry
-sandbox
-scale
-scheme
-scope
-scoped
-scriptlevel
-scriptminsize
-scriptsizemultiplier
-scrolldelay
-scrolling
-seamless
-seed
-select
-selectable
-selected
-selectedIndex
-selection
-separator
-separators
-shape
-shape-rendering
-size
-sizetopopup
-slope
-sort
-sortDirection
-sortResource
-sortResource2
-sorthints
-space
-spacing
-span
-specification
-specularconstant
-specularexponent
-speed
-spreadMethod
-spreadmethod
-src
-standby
-start
-startoffset
-statedatasource
-staticHint
-stddeviation
-stemh
-stemv
-step
-stitchtiles
-stop-color
-stop-opacity
-stretchy
-strikethrough-position
-strikethrough-thickness
-string
-stroke
-stroke-dasharray
-stroke-dashoffset
-stroke-linecap
-stroke-linejoin
-stroke-miterlimit
-stroke-opacity
-stroke-width
-style
-subject
-subscriptshift
-summary
-superscriptshift
-surfacescale
-symmetric
-systemLanguage
-systemlanguage
-tabindex
-tablevalues
-tag
-target
-targets
-targetx
-targety
-template
-text
-text-anchor
-text-decoration
-text-rendering
-textlength
-thickmathspace
-thinmathspace
-title
-to
-tooltip
-tooltiptext
-top
-topmargin
-transform
-type
-u1
-u2
-underline-position
-underline-thickness
-unicode
-unicode-bidi
-unicode-range
-units-per-em
-unselectable
-uri
-usemap
-v-alphabetic
-v-hanging
-v-ideographic
-v-mathematical
-valign
-value
-values
-valuetype
-var
-variable
-version
-vert-adv-y
-vert-origin-x
-vert-origin-y
-verythickmathspace
-verythinmathspace
-veryverythickmathspace
-veryverythinmathspace
-viewBox
-viewbox
-viewtarget
-visibility
-vlink
-vspace
-when
-width
-widths
-word-spacing
-wrap
-writing-mode
-x
-x-height
-x1
-x2
-xchannelselector
-xlink:actuate
-xlink:arcrole
-xlink:href
-xlink:role
-xlink:show
-xlink:title
-xlink:type
-xml:base
-xml:lang
-xml:space
-xmlns
-xmlns:xlink
-xref
-y
-y1
-y2
-ychannelselector
-z
-zoomandpan
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/other b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/other
deleted file mode 100644
index 8805bee61..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/other
+++ /dev/null
@@ -1,36 +0,0 @@
-autocheck
-bounce
-html
-nosave
-onbounce
-onclose
-oncommand
-oncommandupdate
-oncompositionend
-oncompositionstart
-ondragdrop
-ondragexit
-ondraggesture
-onfinish
-onget
-onoverflow
-onoverflowchanged
-onpaint
-onpopuphidden
-onpopuphiding
-onpopupshowing
-onpopupshown
-onset
-onstart
-ontext
-onunderflow
-onzoom
-oversrc
-pagex
-pagey
-plain
-pluginpage
-pluginspage
-unknown
-visibility
-z-index
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/webkit b/Tools/iExploder/iexploder-1.7.2/src/html-attrs/webkit
deleted file mode 100644
index 010f3ea85..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-attrs/webkit
+++ /dev/null
@@ -1,284 +0,0 @@
-
-abbr
-accept
-accept_charset
-accesskey
-action
-align
-alink
-alt
-archive
-aria-activedescendant
-aria-atomic
-aria-busy
-aria-checked
-aria-controls
-aria-describedby
-aria-disabled
-aria-dropeffect
-aria-expanded
-aria-flowto
-aria-grabbed
-aria-haspopup
-aria-help
-aria-hidden
-aria-label
-aria-labeledby
-aria-labelledby
-aria-level
-aria-live
-aria-multiselectable
-aria-orientation
-aria-owns
-aria-pressed
-aria-readonly
-aria-relevant
-aria-required
-aria-selected
-aria-valuemax
-aria-valuemin
-aria-valuenow
-aria-valuetext
-async
-attrsNullNamespace
-autocomplete
-autofocus
-autoplay
-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
-controls
-coords
-data
-datetime
-declare
-defer
-dir
-direction
-disabled
-draggable
-enctype
-end
-event
-expanded
-face
-focused
-for
-formnovalidate
-frame
-frameborder
-headers
-height
-hidden
-high
-href
-hreflang
-hspace
-http_equiv
-id
-incremental
-indeterminate
-ismap
-keytype
-label
-lang
-language
-leftmargin
-link
-list
-longdesc
-loop
-loopend
-loopstart
-low
-lowsrc
-manifest
-marginheight
-marginwidth
-max
-maxlength
-mayscript
-media
-method
-min
-multiple
-name
-nohref
-noresize
-noshade
-novalidate
-nowrap
-object
-onabort
-onbeforecopy
-onbeforecut
-onbeforeload
-onbeforepaste
-onbeforeprocess
-onbeforeunload
-onblur
-oncanplay
-oncanplaythrough
-onchange
-onclick
-oncontextmenu
-oncopy
-oncut
-ondblclick
-ondrag
-ondragend
-ondragenter
-ondragleave
-ondragover
-ondragstart
-ondrop
-ondurationchange
-onemptied
-onended
-onerror
-onfocus
-onfocusin
-onfocusout
-onhashchange
-oninput
-oninvalid
-onkeydown
-onkeypress
-onkeyup
-onload
-onloadeddata
-onloadedmetadata
-onloadstart
-onmousedown
-onmousemove
-onmouseout
-onmouseover
-onmouseup
-onmousewheel
-onoffline
-ononline
-onorientationchange
-onpagehide
-onpageshow
-onpaste
-onpause
-onplay
-onplaying
-onpopstate
-onprogress
-onratechange
-onreset
-onresize
-onscroll
-onsearch
-onseeked
-onseeking
-onselect
-onselectstart
-onstalled
-onstorage
-onsubmit
-onsuspend
-ontimeupdate
-ontouchcancel
-ontouchend
-ontouchmove
-ontouchstart
-onunload
-onvolumechange
-onwaiting
-onwebkitanimationend
-onwebkitanimationiteration
-onwebkitanimationstart
-onwebkitbeginfullscreen
-onwebkitendfullscreen
-onwebkitfullscreenchange
-onwebkittransitionend
-optimum
-pattern
-placeholder
-playcount
-pluginurl
-poster
-precision
-preload
-primary
-profile
-progress
-prompt
-readonly
-rel
-required
-results
-rev
-role
-rows
-rowspan
-rules
-sandbox
-scheme
-scope
-scrollamount
-scrolldelay
-scrolling
-selected
-shape
-size
-sortable
-sortdirection
-span
-speech
-spellcheck
-src
-standby
-start
-step
-style
-summary
-tabindex
-tableborder
-target
-text
-title
-top
-topmargin
-truespeed
-type
-usemap
-valign
-value
-valuetype
-version
-viewsource
-vlink
-vspace
-webkitdirectory
-width
-wrap
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-tags/dillo b/Tools/iExploder/iexploder-1.7.2/src/html-tags/dillo
deleted file mode 100644
index c9c0040ae..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-tags/dillo
+++ /dev/null
@@ -1,73 +0,0 @@
-a
-abbr
-address
-area
-b
-base
-big
-blockquote
-body
-br
-button
-center
-cite
-code
-dd
-del
-dfn
-dir
-div
-dl
-dt
-em
-font
-form
-frame
-frameset
-h1
-h2
-h3
-h4
-h5
-h6
-head
-hr
-html
-i
-iframe
-img
-input
-isindex
-kbd
-li
-link
-map
-menu
-meta
-object
-ol
-option
-p
-pre
-q
-s
-samp
-script
-select
-small
-span
-strike
-strong
-style
-sub
-sup
-table
-td
-textarea
-th
-title
-tr
-tt
-u
-ul
-var
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-tags/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/html-tags/gtkhtml
deleted file mode 100644
index bf51b2af9..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-tags/gtkhtml
+++ /dev/null
@@ -1,46 +0,0 @@
-a
-address
-b
-big
-blockquote
-body
-caption
-center
-cite
-code
-dd
-dir
-div
-dl
-dt
-em
-font
-form
-h
-html
-i
-kbd
-li
-map
-ol
-option
-p
-pre
-s
-select
-small
-span
-strike
-strong
-sub
-sup
-table
-td
-test
-textarea
-th
-tr
-tt
-u
-ul
-var
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-tags/mozilla b/Tools/iExploder/iexploder-1.7.2/src/html-tags/mozilla
deleted file mode 100644
index a4a51a642..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-tags/mozilla
+++ /dev/null
@@ -1,119 +0,0 @@
-a
-abbr
-acronym
-address
-applet
-area
-article
-aside
-audio
-b
-base
-basefont
-bdo
-bgsound
-big
-blink
-blockquote
-body
-br
-button
-canvas
-caption
-center
-cite
-code
-col
-colgroup
-dd
-del
-dfn
-dir
-div
-dl
-dt
-em
-embed
-fieldset
-figcaption
-figure
-font
-footer
-form
-frame
-frameset
-h1
-h2
-h3
-h4
-h5
-h6
-head
-header
-hgroup
-hr
-html
-i
-iframe
-image
-img
-input
-ins
-isindex
-kbd
-keygen
-label
-legend
-li
-link
-listing
-map
-mark
-marquee
-menu
-meta
-multicol
-nav
-nobr
-noembed
-noframes
-noscript
-object
-ol
-optgroup
-option
-output
-p
-param
-plaintext
-pre
-q
-s
-samp
-script
-section
-select
-small
-source
-span
-strike
-strong
-style
-sub
-sup
-table
-tbody
-td
-textarea
-tfoot
-th
-thead
-title
-tr
-tt
-u
-ul
-var
-video
-wbr
-xmp
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-tags/other b/Tools/iExploder/iexploder-1.7.2/src/html-tags/other
deleted file mode 100644
index 598f1ec8a..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-tags/other
+++ /dev/null
@@ -1,8 +0,0 @@
-counter
-endnote
-ilayer
-parsererror
-server
-sound
-sourcetext
-xml
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-tags/webkit b/Tools/iExploder/iexploder-1.7.2/src/html-tags/webkit
deleted file mode 100644
index 0da3cc2b7..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-tags/webkit
+++ /dev/null
@@ -1,132 +0,0 @@
-
-a
-abbr
-acronym
-address
-applet
-area
-article
-aside
-audio
-b
-base
-basefont
-bdo
-bgsound
-big
-blockquote
-body
-br
-button
-canvas
-caption
-center
-cite
-code
-col
-colgroup
-command
-datalist
-dcell
-dcol
-dd
-del
-details
-dfn
-dir
-div
-dl
-drow
-dt
-em
-embed
-fieldset
-figcaption
-figure
-font
-footer
-form
-frame
-frameset
-h1
-h2
-h3
-h4
-h5
-h6
-head
-header
-hgroup
-hr
-html
-i
-iframe
-image
-img
-input
-ins
-isindex
-kbd
-keygen
-label
-layer
-legend
-li
-link
-listing
-map
-mark
-marquee
-menu
-meta
-meter
-nav
-nobr
-noembed
-noframes
-nolayer
-noscript
-object
-ol
-optgroup
-option
-p
-param
-plaintext
-pre
-progress
-q
-rp
-rt
-ruby
-s
-samp
-script
-section
-select
-small
-source
-span
-strike
-strong
-style
-sub
-summary
-sup
-table
-tbody
-td
-textarea
-tfoot
-th
-thead
-title
-tr
-track
-tt
-u
-ul
-var
-video
-wbr
-xmp
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-values/dillo b/Tools/iExploder/iexploder-1.7.2/src/html-values/dillo
deleted file mode 100644
index ae04b00e6..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-values/dillo
+++ /dev/null
@@ -1,30 +0,0 @@
-all
-baseline
-bottom
-button
-center
-char
-checkbox
-circle
-content-type
-default
-disc
-file
-get
-hidden
-image
-justify
-left
-password
-post
-radio
-rect
-refresh
-reset
-right
-screen
-square
-stylesheet
-submit
-text
-top
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-values/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/html-values/gtkhtml
deleted file mode 100644
index 055c4f025..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-values/gtkhtml
+++ /dev/null
@@ -1,9 +0,0 @@
-bottom
-center
-left
-ltr
-middle
-right
-rtl
-th
-top
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-values/mozilla b/Tools/iExploder/iexploder-1.7.2/src/html-values/mozilla
deleted file mode 100644
index d5e13fd83..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-values/mozilla
+++ /dev/null
@@ -1,44 +0,0 @@
-_blank
-_content
-_parent
-_self
-_top
-absbottom
-abscenter
-absmiddle
-auto
-baseline
-bottom
-button
-center
-char
-checkbox
-content
-content-primary
-content-targetable
-email
-file
-hidden
-image
-justify
-left
-ltr
-middle
-no
-noscroll
-off
-on
-password
-radio
-reset
-right
-rtl
-scroll
-search
-submit
-tel
-text
-texttop
-top
-url
-yes
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-values/other b/Tools/iExploder/iexploder-1.7.2/src/html-values/other
deleted file mode 100644
index 382e31204..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-values/other
+++ /dev/null
@@ -1,16 +0,0 @@
-*
-#
-?
-999999999,9999999
-999999999,9999999,9
-999999999,9999999,999999999,9999999,999999999,9999999,999999999,9999999,9
-%i %i
-%n%n%n%n%n
-_SEARCH
-vbscript
-http://127.0.0.1:2000/iexploder.cgi?test=1
-%s
-%s %s %s
-%f
-:%
-
diff --git a/Tools/iExploder/iexploder-1.7.2/src/html-values/webkit b/Tools/iExploder/iexploder-1.7.2/src/html-values/webkit
deleted file mode 100644
index 9d83d3a3c..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/html-values/webkit
+++ /dev/null
@@ -1,88 +0,0 @@
--1
-HTML
-above
-absbottom
-absmiddle
-afterBegin
-afterEnd
-all
-allow-forms
-allow-same-origin
-allow-scripts
-allow-top-navigation
-alternate
-any
-ascending
-auto
-beforeBegin
-beforeEnd
-below
-border
-bottom
-box
-button
-center
-checkbox
-circle
-color
-cols
-data
-date
-datetime
-datetime-local
-default
-descending
-dns-prefetch
-email
-false
-file
-fixed
-groups
-hard
-hidden
-hsides
-icon
-image
-infinite
-inherit
-khtml_isindex
-left
-lhs
-metadata
-middle
-month
-movie
-no
-none
-number
-off
-on
-password
-physical
-plaintext-only
-poly
-prefetch
-radio
-range
-rect
-reset
-rhs
-right
-rows
-rsa
-search
-src
-stylesheet
-submit
-tel
-texttop
-time
-top
-true
-type
-url
-viewport
-void
-vsides
-week
-yes
diff --git a/Tools/iExploder/iexploder-1.7.2/src/iexploder.cgi b/Tools/iExploder/iexploder-1.7.2/src/iexploder.cgi
deleted file mode 100755
index c1a86c421..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/iexploder.cgi
+++ /dev/null
@@ -1,48 +0,0 @@
-#!/usr/bin/ruby
-# iExploder - Generates bad HTML files to perform QA for web browsers.
-#
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require 'cgi';
-require 'iexploder';
-
-$CONFIG_PATH = 'config.yaml'
-
-ie = IExploder.new($CONFIG_PATH)
-cgi = CGI.new("html4");
-ie.cgi_url=ENV['SCRIPT_NAME'] || '?'
-ie.browser=ENV['HTTP_USER_AGENT'] || 'unknown'
-ie.test_num = cgi.params['t'][0].to_i
-ie.subtest_data = cgi.params['s'][0] || nil
-ie.random_mode = cgi.params['r'][0]
-ie.lookup_mode = cgi.params['l'][0]
-ie.stop_num = cgi.params['x'][0] || nil
-ie.setRandomSeed()
-
-mime_type = cgi.params['m'][0] || nil
-if mime_type:
- header_options = ie.buildHeaders(mime_type)
- # The CGI library wants the Content-Type header to be named 'type'. It
- # will post two Content-Type headers otherwise.
- header_options['type'] = header_options['Content-Type'].dup
- header_options.delete('Content-Type')
- cgi.out(header_options) do
- ie.buildMediaFile(mime_type)
- end
-else
- cgi.out('type' => 'text/html') do
- ie.buildPage()
- end
-end
diff --git a/Tools/iExploder/iexploder-1.7.2/src/iexploder.rb b/Tools/iExploder/iexploder-1.7.2/src/iexploder.rb
deleted file mode 100644
index 34e4666df..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/iexploder.rb
+++ /dev/null
@@ -1,792 +0,0 @@
-# encoding: ASCII-8BIT
-
-# iExploder - Generates bad HTML files to perform QA for web browsers.
-#
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require 'cgi'
-require 'yaml'
-
-require './scanner.rb'
-require './version.rb'
-
-# Used to speed up subtest generation
-$TEST_CACHE = {}
-
-# Media extensions to proper mime type map (not that we always listen'
-$MIME_MAP = {
- 'bmp' => 'image/bmp',
- 'gif' => 'image/gif',
- 'jpg' => 'image/jpeg',
- 'png' => 'image/png',
- 'svg' => 'image/svg+xml',
- 'tiff' => 'image/tiff',
- 'xbm' => 'image/xbm',
- 'ico' => 'image/x-icon',
- 'jng' => 'image/x-jng',
- 'xpm' => 'image/x-portable-pixmap',
- 'ogg' => 'audio/ogg',
- 'snd' => 'audio/basic',
- 'wav' => 'audio/wav'
-}
-
-# These tags get src properties more often than others
-$SRC_TAGS = ['img', 'audio', 'video', 'embed']
-
-class IExploder
- attr_accessor :test_num, :subtest_data, :lookup_mode, :random_mode, :cgi_url, :browser, :claimed_browser
- attr_accessor :offset, :lines, :stop_num, :config
-
- def initialize(config_path)
- @config = YAML::load(File.open(config_path))
- @stop_num = nil
- @subtest_data = nil
- @test_num = 0
- @cgi_url = '/iexploder.cgi'
- @browser = 'UNKNOWN'
- @claimed_browser = nil
- readTagFiles()
- return nil
- 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
- data_path = @config['mangle_data_path']
- @cssTags = readTagsDir("#{data_path}/css-properties")
- @cssPseudoTags = readTagsDir("#{data_path}/css-pseudo")
- @cssAtRules = readTagsDir("#{data_path}/css-atrules")
- @htmlTags = readTagsDir("#{data_path}/html-tags")
- @htmlAttr = readTagsDir("#{data_path}/html-attrs")
- @htmlValues = readTagsDir("#{data_path}/html-values")
- @cssValues = readTagsDir("#{data_path}/css-values")
- @headerValues = readTagsDir("#{data_path}/headers")
- @protocolValues = readTagsDir("#{data_path}/protocols")
- @mimeTypes = readTagsDir("#{data_path}/mime-types")
- @media = readMediaDir("#{data_path}/media")
- end
-
- def readTagsDir(directory)
- values = []
- Dir.foreach(directory) { |filename|
- if File.file?(directory + "/" + filename)
- values = values + readTagFile(directory + "/" + filename)
- end
- }
- return values.uniq
- end
-
- def readMediaDir(directory)
- data = {}
- Dir.foreach(directory) { |filename|
- if File.file?(directory + "/" + filename)
- (base, extension) = filename.split('.')
- mime_type = $MIME_MAP[extension]
- data[mime_type] = File.read(directory + "/" + filename)
- end
- }
- return data
- 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
-
-
- def generateHtmlValue(tag)
- choice = rand(100)
- tag = tag.sub('EXCLUDED_', '')
- if tag =~ /^on/ and choice < 90
- return generateHtmlValue('') + "()"
- elsif tag == 'src' or tag == 'data' or tag == 'profile' and choice < 90
- return generateGarbageUrl(tag)
- end
-
- case choice
- when 0..50 then
- return @htmlValues[rand(@htmlValues.length)]
- when 51..75
- return generateGarbageNumber()
- when 76..85
- return generateGarbageValue()
- when 86..90
- return generateGarbageNumber() + ',' + generateGarbageNumber()
- when 91..98
- return generateGarbageUrl(tag)
- else
- return generateOverflow()
- end
- end
-
- def generateMediaUrl(tag)
- mime_type = @media.keys[rand(@media.keys.length)]
- return generateTestUrl(@test_num, nil, nil, mime_type)
- end
-
- def generateGarbageUrl(tag)
- choice = rand(100)
- case choice
- when 0..30
- return generateMediaUrl(tag)
- when 31..50
- return @protocolValues[rand(@protocolValues.length)] + '%' + generateGarbageValue()
- when 51..60
- return @protocolValues[rand(@protocolValues.length)] + '//../' + generateGarbageValue()
- when 60..75
- return @protocolValues[rand(@protocolValues.length)] + '//' + generateGarbageValue()
- when 75..85
- return generateOverflow() + ":" + generateGarbageValue()
- when 86..97
- return generateGarbageValue() + ":" + generateOverflow()
- else
- return generateOverflow()
- end
- end
-
- def generateCssValue(property)
- size_types = ['', 'em', 'px', '%', 'pt', 'pc', 'ex', 'in', 'cm', 'mm']
-
- choice = rand(100)
- case choice
- when 0..50 then
- # return the most likely scenario
- case property.sub('EXCLUDED_', '')
- when /-image|content/
- return 'url(' + generateGarbageUrl(property) + ')'
- when /-width|-radius|-spacing|margin|padding|height/
- return generateGarbageValue() + size_types[rand(size_types.length)]
- when /-color/
- return generateGarbageColor()
- when /-delay|-duration/
- return generateGarbageValue() + 'ms'
- else
- return @cssValues[rand(@cssValues.length)]
- end
- when 51..75 then return generateGarbageNumber()
- when 76..85 then return 'url(' + generateGarbageUrl(property) + ')'
- when 85..98 then return generateGarbageValue()
- else
- return generateOverflow()
- end
- end
-
- def generateGarbageColor()
- case rand(100)
- when 0..50 then return '#' + generateGarbageValue()
- when 51..70 then return 'rgb(' + generateGarbageNumber() + ',' + generateGarbageNumber() + ',' + generateGarbageNumber() + ')'
- when 71..98 then return 'rgb(' + generateGarbageNumber() + '%,' + generateGarbageNumber() + '%,' + generateGarbageNumber() + '%)'
- else
- return generateOverflow()
- end
- end
-
- def generateGarbageNumber()
- choice = rand(100)
- case choice
- when 0 then return '0'
- when 1..40 then return '9' * rand(100)
- when 41..60 then return '999999.' + rand(999999999999999999999).to_s
- when 61..80 then return '-' + ('9' * rand(100))
- when 81..90 then return '-999999.' + rand(999999999999999999999).to_s
- when 91..98 then return generateGarbageText()
- else
- return generateOverflow()
- end
- end
-
- def generateGarbageValue()
- case rand(100)
- when 0..30 then return rand(255).chr * rand(@config['buffer_overflow_length'])
- when 31..50 then return "%n" * 50
- when 51..65 then return ("&#" + rand(999999).to_s + ";") * rand(@config['max_garbage_text_size'])
- when 66..70 then
- junk = []
- 0.upto(rand(20)+1) do
- junk << "\\x" + rand(65535).to_s(16)
- end
- return junk.join('') * rand(@config['max_garbage_text_size'])
- when 71..99 then
- junk = []
- chars = '%?!$#^0123456789ABCDEF%#./\&|;'
- 0.upto(rand(20)+1) do
- junk << chars[rand(chars.length)].chr
- end
- return junk.join('') * rand(@config['max_garbage_text_size'])
- end
- end
-
- def generateOverflow()
- return rand(255).chr * (@config['buffer_overflow_length'] + rand(500))
- end
-
- def generateGarbageText
- case rand(100)
- when 0..70 then return 'X' * 129
- when 71..75 then return "%n" * 15
- when 76..85 then return ("&#" + rand(9999999999999).to_s + ";") * rand(@config['max_garbage_text_size'])
- when 86..90 then return generateGarbageValue()
- when 91..98 then return rand(255).chr * rand(@config['max_garbage_text_size'])
- else
- return generateOverflow()
- end
- end
-
- def isPropertyInBlacklist(properties)
- # Format: [img, src] or [img, style, property]
- blacklist_entries = []
- if @config.has_key?('exclude') and @config['exclude']
- blacklist_entries << properties.join('.')
- wildcard_property = properties.dup
- wildcard_property[0] = '*'
- blacklist_entries << wildcard_property.join('.')
- blacklist_entries.each do |entry|
- if @config['exclude'].has_key?(entry) and @browser =~ /#{@config['exclude'][entry]}/
- return true
- end
- end
- end
- return false
- end
-
- def generateCssStyling(tag)
- out = ' style="'
- 0.upto(rand(@config['properties_per_style_max'])) {
- property = @cssTags[rand(@cssTags.length)]
- if isPropertyInBlacklist([tag, 'style', property])
- property = "EXCLUDED_#{property}"
- end
- out << property
-
- # very small chance we let the tag run on.
- if rand(65) > 1
- out << ": "
- end
-
- values = []
- 0.upto(rand(@config['attributes_per_style_property_max'])) {
- values << generateCssValue(property)
- }
- out << values.join(' ')
- # we almost always put the ; there.
- if rand(65) > 1
- out << ";\n "
- end
- }
- out << "\""
- return out
- end
-
- def mangleTag(tag, no_close_chance=false)
- if not no_close_chance and rand(100) < 15
- return "</" + tag + ">"
- end
- out = "<" + tag
- if rand(100) > 1
- out << ' '
- else
- out << generateOverflow()
- end
-
- attrNum = rand(@config['attributes_per_html_tag_max']) + 1
- attrs = []
- # The HTML head tag does not have many useful attributes, but is always included in tests.
- if tag == 'head' and rand(100) < 75
- case rand(3)
- when 0 then attrs << 'lang'
- when 1 then attrs << 'dir'
- when 2 then attrs << 'profile'
- end
- end
- # 75% of the time, these tags get a src attribute
- if $SRC_TAGS.include?(tag) and rand(100) < 75
- if @config.has_key?('exclude') and @config['exclude'] and @config['exclude'].has_key?("#{tag}.src")
- attrs << 'EXCLUDED_src'
- else
- attrs << 'src'
- end
- end
-
- while attrs.length < attrNum
- attribute = @htmlAttr[rand(@htmlAttr.length)]
- if isPropertyInBlacklist([tag, attribute])
- attribute = "EXCLUDED_#{attribute}"
- end
- attrs << attribute
- end
-
- # Add a few HTML attributes
- for attr in attrs
- out << attr
- if rand(100) > 1
- out << '='
- end
- if (rand(100) >= 50)
- quoted = 1
- out << "\""
- else
- quoted = nil
- end
- out << generateHtmlValue(attr)
- if quoted
- if rand(100) >= 10
- out << "\""
- end
- end
- if rand(100) >= 1
- out << "\n "
- end
- end
-
- if rand(100) >= 25
- out << generateCssStyling(tag)
- end
- out << ">\n"
- return out
- end
-
- def nextTestNum()
- if @subtest_data
- return @test_num
- elsif @random_mode
- return rand(99999999999)
- else
- return @test_num + 1
- end
- end
-
- def generateCssPattern()
- # Generate a CSS selector pattern.
- choice = rand(100)
- pattern = ''
- case choice
- when 0..84 then pattern = @htmlTags[rand(@htmlTags.length)].dup
- when 85..89 then pattern = "*"
- when 90..94 then pattern = @cssAtRules[rand(@cssAtRules.length)].dup
- when 95..100 then pattern = ''
- end
-
- if rand(100) < 25
- pattern << " " + @htmlTags[rand(@htmlTags.length)]
- end
-
- if rand(100) < 25
- pattern << " > " + @htmlTags[rand(@htmlTags.length)]
- end
-
- if rand(100) < 25
- pattern << " + " + @htmlTags[rand(@htmlTags.length)]
- end
-
- if rand(100) < 10
- pattern << "*"
- end
-
-
- if rand(100) < 25
- pseudo = @cssPseudoTags[rand(@cssPseudoTags.length)].dup
- # These tags typically have a parenthesis
- if (pseudo =~ /^lang|^nth|^not/ and rand(100) < 75 and pseudo !~ /\(/) or rand(100) < 20
- pseudo << '('
- end
-
- if pseudo =~ /\(/
- if rand(100) < 75
- pseudo << generateGarbageValue()
- end
- if rand(100) < 75
- pseudo << ')'
- end
- end
- pattern << ":" + pseudo
- end
-
- if rand(100) < 20
- html_attr = @htmlAttr[rand(@htmlAttr.length)]
- match = '[' + html_attr
- choice = rand(100)
- garbage = generateGarbageValue()
- case choice
- when 0..25 then match << ']'
- when 26..50 then match << "=\"#{garbage}\"]"
- when 51..75 then match << "=~\"#{garbage}\"]"
- when 76..99 then match << "|=\"#{garbage}\"]"
- end
- pattern << match
- end
-
- if rand(100) < 20
- if rand(100) < 50
- pattern << '.' + generateGarbageValue()
- else
- pattern << '.*'
- end
- end
-
- if rand(100) < 20
- pattern << '#' + generateGarbageValue()
- end
-
- if rand(100) < 5
- pattern << ' #' + generateGarbageValue()
- end
-
- return pattern
- end
-
- def buildStyleTag()
- out = "\n"
- 0.upto(rand(@config['properties_per_style_max'])) {
- out << generateCssPattern()
- if rand(100) < 90
- out << " {\n"
- end
-
- 0.upto(rand(@config['properties_per_style_max'])) {
- property = @cssTags[rand(@cssTags.length)].dup
- if isPropertyInBlacklist(['style', 'style', property])
- property = " EXCLUDED_#{property}"
- end
- out << " #{property}: "
-
- values = []
- 0.upto(rand(@config['attributes_per_style_property_max'])) {
- values << generateCssValue(property)
- }
- out << values.join(' ')
- if rand(100) < 95
- out << ";\n"
- end
- }
- if rand(100) < 90
- out << "\n}\n"
- end
-
- }
- return out
- end
-
-
- # Build any malicious javascript here. Fairly naive at the moment.
- def buildJavaScript
- target = @htmlTags[rand(@htmlTags.length)]
- css_property = @cssTags[rand(@cssTags.length)]
- css_property2 = @cssTags[rand(@cssTags.length)]
- html_attr = @htmlAttr[rand(@htmlAttr.length)]
- css_value = generateCssValue(css_property)
- html_value = generateHtmlValue(html_attr)
- html_value2 = generateGarbageNumber()
- mangled = mangleTag(@htmlTags[rand(@htmlTags.length)]);
- mangled2 = mangleTag(@htmlTags[rand(@htmlTags.length)]);
-
- js = []
- js << "window.onload=function(){"
- js << " var ietarget = document.createElement('#{target}');"
- js << " ietarget.style.#{css_property} = '#{css_value}';"
- js << " ietarget.#{html_attr} = '#{html_value}';"
- js << " document.body.appendChild(ietarget);"
- js << " ietarget.style.#{css_property2} = #{html_value2};"
-
- js << " document.write('#{mangled}');"
- js << " document.write('#{mangled2}');"
- js << "}"
- return js.join("\n")
- end
-
- def buildMediaFile(mime_type)
- if @media.has_key?(mime_type)
- data = @media[mime_type].dup
- else
- puts "No media found for #{mime_type}"
- data = generateGarbageText()
- end
-
- # corrupt it in a subtle way
- choice = rand(100)
- if choice > 50
- garbage = generateGarbageValue()
- else
- garbage = rand(255).chr * rand(8)
- end
-
- if "1.9".respond_to?(:encoding)
- garbage.force_encoding('ASCII-8BIT')
- data.force_encoding('ASCII-8BIT')
- end
-
- garbage_start = rand(data.length)
- garbage_end = garbage_start + garbage.length
- data[garbage_start..garbage_end] = garbage
- if rand(100) < 15
- data << generateGarbageValue()
- end
- return data
- end
-
- # Parse the subtest data passed in as part of the URL
- def parseSubTestData(subtest_data)
- # Initialize with one line at 0
- if not subtest_data or subtest_data.to_i == 0
- return [@config['initial_subtest_width'], [0]]
- end
- (lines_at_time, offsets_string) = subtest_data.split('_')
- offsets = offsets_string.split(',').map! {|x| x.to_i }
- return [lines_at_time.to_i, offsets]
- end
-
- def generateTestUrl(test_num, subtest_width=nil, subtest_offsets=nil, mime_type=nil)
- url = @cgi_url + '?'
- if subtest_width
- if subtest_offsets.length > @config['subtest_combinations_max']
- url << "t=" << test_num.to_s << "&l=test_redirect&z=THE_END"
- else
- url << "t=" << test_num.to_s << "&s=" << subtest_width.to_s << "_" << subtest_offsets.join(',')
- end
- else
- url << "t=" << test_num.to_s
- end
-
- if @random_mode
- url << "&r=1"
- elsif @stop_num
- url << "&x=" << @stop_num.to_s
- end
-
- if mime_type
- url << '&m=' + CGI::escape(mime_type)
- end
-
- url << "&b=" << CGI::escape(@browser)
- return url
- end
-
- def buildBodyTags(tag_count)
- tagList = ['body']
- # subtract the <body> tag from tag_count.
- 1.upto(tag_count-1) { tagList << @htmlTags[rand(@htmlTags.length)] }
-
- # Lean ourselves toward lots of img and src tests
- for tag, percent in @config['favor_html_tags']
- if rand(100) < percent.to_f
- # Don't overwrite the body tag.
- tagList[rand(tagList.length-1)+1] = tag
- end
- end
-
- # Now we have our hitlist of tags,lets mangle them.
- mangled_tags = []
- tagList.each do |tag|
- tag_data = mangleTag(tag)
- if tag == 'script'
- if rand(100) < 40
- tag_data = "<script>"
- end
- tag_data << buildJavaScript() + "\n" + "</script>\n"
- elsif tag == 'style'
- if rand(100) < 40
- tag_data = "<style>"
- end
- tag_data << buildStyleTag() + "\n" + "</style>\n"
- elsif rand(100) <= 90
- tag_data << generateGarbageText() << "\n"
- else
- tag_data << "\n"
- end
-
- if rand(100) <= 33
- tag_data << "</#{tag}>\n"
- end
- mangled_tags << "\n<!-- START #{tag} -->\n" + tag_data + "\n<!-- END #{tag} -->\n"
- end
- return mangled_tags
- end
-
- def buildHeaderTags(tag_count)
- valid_head_tags = ['title', 'base', 'link', 'meta']
- header_tags = ['html', 'head']
- 1.upto(tag_count-1) { header_tags << valid_head_tags[rand(valid_head_tags.length)] }
- header_tags << @htmlTags[rand(@htmlTags.length)]
- mangled_tags = []
- header_tags.each do |tag|
- mangled_tags << mangleTag(tag, no_close_chance=true)
- end
- return mangled_tags
- end
-
- def buildSurvivedPage(page_type)
- page = "<html><head>"
- page << "<body>Bummer. You survived both redirects. Let me go sulk in the corner.</body>"
- page << "</html>"
- return page
- end
-
- def buildRedirect(test_num, subtest_data, lookup_mode, stop_num=nil)
- # no more redirects.
- if lookup_mode == '1' or stop_num == test_num
- return ''
- end
-
- if subtest_data
- width, offsets = parseSubTestData(@subtest_data)
- else
- width, offsets = nil
- end
-
- # We still need a redirect, but don't bother generating new data.
- if lookup_mode
- redirect_url = generateTestUrl(test_num, width, offsets)
- if lookup_mode == 'test_redirect'
- redirect_url << "&l=test_another_redirect"
- elsif lookup_mode == 'test_another_redirect'
- redirect_url << "&l=survived_redirect"
- else
- redirect_url << "&l=#{lookup_mode}"
- end
- else
- # This is a normal redirect going on to the next page. If we have subtest, get the next one.
- if subtest_data
- width, offsets = combine_combo_creator(@config['html_tags_per_page'], width, offsets)[0..1]
- end
- redirect_url = generateTestUrl(nextTestNum(), width, offsets)
- end
-
- redirect_code = "\t<META HTTP-EQUIV=\"Refresh\" content=\"0;URL=#{redirect_url}\">\n"
- # use both techniques, because you never know how you might be corrupting yourself.
- redirect_code << "\t<script language=\"javascript\">setTimeout('window.location=\"#{redirect_url}\"', 1000);</script>\n"
- return redirect_code
- end
-
- def buildPage()
- if @lookup_mode == 'survived_redirect'
- return self.buildSurvivedPage(@lookup_mode)
- end
- tag_count = @config['html_tags_per_page']
-
- if $TEST_CACHE.has_key?(@test_num)
- (header_tags, body_tags) = $TEST_CACHE[@test_num]
- else
- header_tags = buildHeaderTags(3)
- body_tags = buildBodyTags(tag_count - header_tags.length)
- end
- required_tags = {
- 0 => 'html',
- 1 => 'head',
- header_tags.length => 'body'
- }
-
- if @subtest_data and @subtest_data.length > 0
- if not $TEST_CACHE.has_key?(@test_num)
- $TEST_CACHE[@test_num] = [header_tags, body_tags]
- end
- (width, offsets) = parseSubTestData(@subtest_data)
- lines = combine_combo_creator(tag_count, width, offsets)[2]
- all_tags = header_tags + body_tags
- body_start = header_tags.length
- header_tags = []
- body_tags = []
- # <html> and <body> are required, regardless of their existence in the subtest data.
- 0.upto(tag_count) do |line_number|
- tag_data = nil
- if lines.include?(line_number)
- tag_data = all_tags[line_number]
- elsif required_tags.key?(line_number)
- tag_data = "<" + required_tags[line_number] + ">"
- end
- if tag_data
- if line_number < body_start
- header_tags << tag_data
- else
- body_tags << tag_data
- end
- end
- end
- header_tags << "<!-- subtest mode: #{offsets.length} combinations, width: #{width} -->"
- end
-
- htmlText = header_tags[0..1].join("\n\t")
- htmlText << buildRedirect(@test_num, @subtest_data, @lookup_mode, @stop_num)
- htmlText << "<title>[#{@test_num}:#{@subtest_data}] iExploder #{$VERSION} - #{generateGarbageText()}</title>\n"
- if @claimed_browser and @claimed_browser.length > 1
- show_browser = @claimed_browser
- else
- show_browser = @browser
- end
- htmlText << "\n<!-- iExploder #{$VERSION} | test #{@test_num}:#{@subtest_data} at #{Time.now} -->\n"
- htmlText << "<!-- browser: #{show_browser} -->\n"
- htmlText << header_tags[2..-1].join("\n\t")
- htmlText << "\n</head>\n\n"
- htmlText << body_tags.join("\n")
- htmlText << "</body>\n</html>"
- return htmlText
- end
-
- def buildHeaders(mime_type)
- use_headers = []
- banned_headers = []
- response = {'Content-Type' => mime_type}
- 0.upto(rand(@config['headers_per_page_max'])) do
- try_header = @headerValues[rand(@headerValues.length)]
- if ! banned_headers.include?(try_header.downcase)
- use_headers << try_header
- end
- end
- for header in use_headers.uniq
- if rand(100) > 75
- response[header] = generateGarbageNumber()
- else
- response[header] = generateGarbageUrl(header)
- end
- end
- return response
- end
-end
-
-
-# for testing
-if $0 == __FILE__
- ie = IExploder.new('config.yaml')
- ie.test_num = ARGV[0].to_i || 1
- ie.subtest_data = ARGV[1] || nil
- mime_type = ARGV[2] || nil
- ie.setRandomSeed()
- if not mime_type
- html_output = ie.buildPage()
- puts html_output
- else
- headers = ie.buildHeaders(mime_type)
- for (key, value) in headers
- puts "#{key}: #{value}"
- end
- puts "Mime-Type: #{mime_type}"
- puts ie.buildMediaFile(mime_type)
- end
-end
diff --git a/Tools/iExploder/iexploder-1.7.2/src/index.html b/Tools/iExploder/iexploder-1.7.2/src/index.html
deleted file mode 100644
index 8b2cef67a..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/index.html
+++ /dev/null
@@ -1,105 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
-<html>
-<head>
- <title>iExploder</title>
- <style type="text/css">
-body {
- background-color: #bbb;
- background-image: -moz-linear-gradient(0% 100% 90deg, #e5e5e5, #666, #e5e5e5 99%);
- background-image: -webkit-gradient(linear, 0% 0%, 0% 100%, from(#e5e5e5), to(#bbb), color-stop(.1,#666));
-}
-
-h1 {
- margin: 0;
- font-size: 30px;
- padding-top: 4px;
- padding-bottom: 4px;
-}
-
-img {
- width: 64px;
- margin-right: 8px;
- float: left;
-}
-
-form {
- display: inline;
-}
-
-.content {
- width: 850px;
- margin-left: auto;
- margin-right: auto;
- margin-top: 2em;
- border: 1px solid #000;
- background-color: #f5f5f5;
- box-shadow: 5px 5px 5px #333;
- -moz-box-shadow: 5px 5px 5px #333;
- -webkit-box-shadow: 5px 5px 5px #333;
-}
-
-.header {
- background-color: #999;
-}
-
-.copyright {
- margin-top: 4em;
- margin-left: auto;
- margin-right: auto;
- font-size: 9px;
- text-align: center;
- color: #333;
-}
-
-ul {
- clear: both;
-}
-
-.formtext {
- width: 16em;
- display: inline-block;
-}
-
-</style>
-</head>
-<body>
-
-<div class="content">
- <div class="header"><img src="media/bug.png" alt="Bug logo"><h1>iExploder: Browser Quality Assurance Tester</h1></div>
-
-<ul class="links">
- <li><a href="iexploder.cgi">Start from the beginning!</a></li>
- <li><a href="iexploder.cgi?r=1">Start from a random location!</a></li>
-</ul>
-
-<ul class="formlinks">
- <li><div class="formtext">Test from:</div>
- <form method="get" action="iexploder.cgi" name="test">
- <input size="12" name="t" value="0">
- to: <input size="12" name="x" value="">
- <input value="Go!" type="submit">
- </form>
- </li>
-
-
- <li><div class="formtext">Lookup individual test:</div>
- <form method="get" action="iexploder.cgi" name="test">
- <input type="hidden" name="l" value="1">
- <input size="12" name="t" value="1"> Subtest: <input size="7" name="s" value="">
- <input value="Go!" type="submit">
- </form>
- </li>
-
- <li><div class="formtext">Generate smaller testcase for:</div>
- <form method="get" action="iexploder.cgi" name="test">
- <input size="12" name="t" value="1">
- <input type="hidden" name="s" value="0">
- <input value="Go!" type="submit">
- </form>
- </li>
-
-</ul>
-</div>
-<div class="copyright">&copy; 2005-2010 Thomas Str&ouml;mberg &mdash; <a href="http://iexploder.googlecode.com/">iexploder.googlecode.com</a></div>
-</body>
-</html>
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/blank.ogg b/Tools/iExploder/iexploder-1.7.2/src/media/blank.ogg
deleted file mode 100644
index 2629f985d..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/blank.ogg
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/blank.snd b/Tools/iExploder/iexploder-1.7.2/src/media/blank.snd
deleted file mode 100644
index 32a4008e6..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/blank.snd
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/blank.wav b/Tools/iExploder/iexploder-1.7.2/src/media/blank.wav
deleted file mode 100644
index b9c31f727..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/blank.wav
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.bmp b/Tools/iExploder/iexploder-1.7.2/src/media/bug.bmp
deleted file mode 100644
index 808870a58..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.bmp
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.gif b/Tools/iExploder/iexploder-1.7.2/src/media/bug.gif
deleted file mode 100644
index 22e4c224e..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.gif
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.ico b/Tools/iExploder/iexploder-1.7.2/src/media/bug.ico
deleted file mode 100644
index ebc5c64ba..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.ico
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.jng b/Tools/iExploder/iexploder-1.7.2/src/media/bug.jng
deleted file mode 100644
index 39e277cd9..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.jng
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.jpg b/Tools/iExploder/iexploder-1.7.2/src/media/bug.jpg
deleted file mode 100644
index ca5611a8b..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.jpg
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.png b/Tools/iExploder/iexploder-1.7.2/src/media/bug.png
deleted file mode 100755
index 4d658d7c4..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.png
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.svg b/Tools/iExploder/iexploder-1.7.2/src/media/bug.svg
deleted file mode 100644
index d42c0d5a4..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.svg
+++ /dev/null
@@ -1,16389 +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="128" height="128">
- <circle cx="0" cy="0" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="0" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="1" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="1" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="2" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="2" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="3" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="3" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="4" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="4" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="5" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="5" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="6" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="6" r="1" fill="rgba(61,30,13,0.113725)"/>
- <circle cx="26" cy="6" r="1" fill="rgba(61,30,13,0.34902)"/>
- <circle cx="27" cy="6" r="1" fill="rgba(61,30,13,0.00392157)"/>
- <circle cx="28" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="29" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="30" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="32" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="33" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="34" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="35" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="36" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="37" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="38" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="39" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="40" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="41" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="42" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="43" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="44" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="6" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="6" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="6" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="6" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="6" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="6" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="6" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="6" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="6" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="6" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="6" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="6" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="6" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="6" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="6" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="6" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="6" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="6" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="6" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="6" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="6" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="6" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="6" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="6" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="6" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="6" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="6" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="6" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="6" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="6" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="6" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="6" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="7" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="7" r="1" fill="rgba(61,30,13,0.443137)"/>
- <circle cx="26" cy="7" r="1" fill="rgba(61,30,13,0.780392)"/>
- <circle cx="27" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="28" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="29" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="30" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="32" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="33" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="34" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="35" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="36" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="37" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="38" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="39" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="40" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="41" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="42" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="43" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="44" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="7" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="7" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="7" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="7" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="7" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="7" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="7" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="7" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="7" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="7" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="7" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="7" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="7" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="7" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="7" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="7" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="7" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="7" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="7" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="7" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="7" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="7" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="7" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="7" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="7" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="7" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="7" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="7" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="7" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="7" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="7" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="7" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="8" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="8" r="1" fill="rgba(61,30,13,0.184314)"/>
- <circle cx="26" cy="8" r="1" fill="rgba(61,30,13,0.866667)"/>
- <circle cx="27" cy="8" r="1" fill="rgba(61,30,13,0.0862745)"/>
- <circle cx="28" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="29" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="30" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="32" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="33" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="34" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="35" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="36" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="37" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="38" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="39" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="40" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="41" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="42" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="43" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="44" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="8" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="8" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="8" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="8" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="8" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="8" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="8" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="8" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="8" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="8" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="8" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="8" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="8" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="8" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="8" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="8" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="8" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="8" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="8" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="8" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="8" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="8" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="8" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="8" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="8" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="8" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="8" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="8" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="8" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="8" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="8" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="8" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="9" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="26" cy="9" r="1" fill="rgba(61,30,13,0.74902)"/>
- <circle cx="27" cy="9" r="1" fill="rgba(61,30,13,0.403922)"/>
- <circle cx="28" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="29" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="31" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="32" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="33" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="34" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="35" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="36" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="37" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="38" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="39" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="40" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="41" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="42" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="43" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="44" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="45" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="9" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="9" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="9" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="9" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="9" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="9" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="9" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="9" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="9" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="9" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="9" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="9" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="9" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="9" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="9" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="9" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="9" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="9" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="9" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="9" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="9" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="9" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="9" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="9" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="9" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="9" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="9" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="9" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="9" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="9" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="9" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="10" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="26" cy="10" r="1" fill="rgba(61,30,13,0.443137)"/>
- <circle cx="27" cy="10" r="1" fill="rgba(61,30,13,0.831373)"/>
- <circle cx="28" cy="10" r="1" fill="rgba(62,31,14,0.027451)"/>
- <circle cx="29" cy="10" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="32" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="33" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="34" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="35" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="36" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="37" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="38" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="39" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="40" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="41" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="42" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="43" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="44" cy="10" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="45" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="10" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="10" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="10" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="10" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="10" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="10" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="10" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="10" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="10" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="10" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="10" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="10" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="10" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="10" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="10" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="10" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="10" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="10" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="10" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="10" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="10" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="10" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="10" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="10" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="10" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="10" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="10" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="10" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="10" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="10" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="10" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="10" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="11" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="19" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="20" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="21" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="22" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="23" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="24" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="25" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="26" cy="11" r="1" fill="rgba(61,30,13,0.12549)"/>
- <circle cx="27" cy="11" r="1" fill="rgba(62,30,13,1)"/>
- <circle cx="28" cy="11" r="1" fill="rgba(67,35,16,0.45098)"/>
- <circle cx="29" cy="11" r="1" fill="rgba(51,24,10,0)"/>
- <circle cx="30" cy="11" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="31" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="32" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="33" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="34" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="35" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="36" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="37" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="38" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="39" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="40" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="41" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="42" cy="11" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="43" cy="11" r="1" fill="rgba(37,15,5,0)"/>
- <circle cx="44" cy="11" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="45" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="11" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="11" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="11" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="11" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="11" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="11" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="11" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="11" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="11" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="11" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="11" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="11" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="11" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="11" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="11" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="11" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="11" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="11" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="11" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="11" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="11" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="11" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="11" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="11" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="11" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="11" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="11" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="11" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="11" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="11" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="96" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="97" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="98" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="99" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="100" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="101" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="102" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="103" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="104" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="105" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="106" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="107" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="108" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="109" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="110" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="112" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="11" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="11" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="12" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="19" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="20" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="21" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="22" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="23" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="24" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="25" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="26" cy="12" r="1" fill="rgba(64,33,15,0)"/>
- <circle cx="27" cy="12" r="1" fill="rgba(64,34,16,0.792157)"/>
- <circle cx="28" cy="12" r="1" fill="rgba(69,38,18,0.952941)"/>
- <circle cx="29" cy="12" r="1" fill="rgba(54,26,11,0.160784)"/>
- <circle cx="30" cy="12" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="31" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="32" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="33" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="34" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="35" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="36" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="37" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="38" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="39" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="40" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="41" cy="12" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="42" cy="12" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="43" cy="12" r="1" fill="rgba(37,15,5,0)"/>
- <circle cx="44" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="45" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="12" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="12" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="12" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="12" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="12" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="12" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="12" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="12" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="12" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="12" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="12" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="12" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="12" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="12" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="12" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="12" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="12" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="12" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="12" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="12" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="12" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="12" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="12" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="12" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="12" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="12" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="12" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="12" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="12" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="95" cy="12" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="96" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="97" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="98" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="99" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="100" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="101" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="102" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="103" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="104" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="105" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="106" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="107" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="108" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="109" cy="12" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="110" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="111" cy="12" r="1" fill="rgba(61,30,13,0.0313725)"/>
- <circle cx="112" cy="12" r="1" fill="rgba(61,30,13,0.0705882)"/>
- <circle cx="113" cy="12" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="12" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="13" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="19" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="20" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="21" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="22" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="23" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="24" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="25" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="26" cy="13" r="1" fill="rgba(67,36,17,0)"/>
- <circle cx="27" cy="13" r="1" fill="rgba(68,37,18,0.556863)"/>
- <circle cx="28" cy="13" r="1" fill="rgba(71,40,20,1)"/>
- <circle cx="29" cy="13" r="1" fill="rgba(73,41,20,0.737255)"/>
- <circle cx="30" cy="13" r="1" fill="rgba(74,42,21,0.00784314)"/>
- <circle cx="31" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="32" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="33" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="34" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="35" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="36" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="37" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="38" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="39" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="40" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="41" cy="13" r="1" fill="rgba(75,43,22,0)"/>
- <circle cx="42" cy="13" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="43" cy="13" r="1" fill="rgba(68,36,18,0)"/>
- <circle cx="44" cy="13" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="45" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="13" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="13" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="13" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="13" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="13" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="13" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="13" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="13" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="13" r="1" fill="rgba(105,74,47,0)"/>
- <circle cx="64" cy="13" r="1" fill="rgba(111,79,51,0)"/>
- <circle cx="65" cy="13" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="66" cy="13" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="67" cy="13" r="1" fill="rgba(102,71,44,0)"/>
- <circle cx="68" cy="13" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="13" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="13" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="13" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="13" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="13" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="13" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="13" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="13" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="13" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="13" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="13" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="13" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="13" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="13" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="13" r="1" fill="rgba(83,51,27,0)"/>
- <circle cx="95" cy="13" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="96" cy="13" r="1" fill="rgba(40,17,6,0)"/>
- <circle cx="97" cy="13" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="98" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="99" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="100" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="101" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="102" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="103" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="104" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="105" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="106" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="107" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="108" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="109" cy="13" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="110" cy="13" r="1" fill="rgba(42,18,6,0)"/>
- <circle cx="111" cy="13" r="1" fill="rgba(61,30,13,0.321569)"/>
- <circle cx="112" cy="13" r="1" fill="rgba(61,30,13,0.560784)"/>
- <circle cx="113" cy="13" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="13" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="14" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="19" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="20" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="21" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="22" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="23" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="24" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="25" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="26" cy="14" r="1" fill="rgba(69,39,18,0)"/>
- <circle cx="27" cy="14" r="1" fill="rgba(70,39,19,0.427451)"/>
- <circle cx="28" cy="14" r="1" fill="rgba(75,42,22,1)"/>
- <circle cx="29" cy="14" r="1" fill="rgba(78,46,24,1)"/>
- <circle cx="30" cy="14" r="1" fill="rgba(83,50,27,0.427451)"/>
- <circle cx="31" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="32" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="33" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="34" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="35" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="36" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="37" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="38" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="39" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="40" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="41" cy="14" r="1" fill="rgba(84,51,29,0)"/>
- <circle cx="42" cy="14" r="1" fill="rgba(85,52,29,0)"/>
- <circle cx="43" cy="14" r="1" fill="rgba(73,40,20,0)"/>
- <circle cx="44" cy="14" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="45" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="14" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="14" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="14" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="14" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="14" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="60" cy="14" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="61" cy="14" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="62" cy="14" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="63" cy="14" r="1" fill="rgba(105,74,47,0.0470588)"/>
- <circle cx="64" cy="14" r="1" fill="rgba(111,79,51,0.0588235)"/>
- <circle cx="65" cy="14" r="1" fill="rgba(112,81,53,0.0588235)"/>
- <circle cx="66" cy="14" r="1" fill="rgba(108,76,48,0.0588235)"/>
- <circle cx="67" cy="14" r="1" fill="rgba(102,71,44,0.0196078)"/>
- <circle cx="68" cy="14" r="1" fill="rgba(98,65,39,0)"/>
- <circle cx="69" cy="14" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="70" cy="14" r="1" fill="rgba(87,55,31,0)"/>
- <circle cx="71" cy="14" r="1" fill="rgba(82,49,27,0)"/>
- <circle cx="72" cy="14" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="14" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="14" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="14" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="14" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="14" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="14" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="14" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="14" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="14" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="14" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="14" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="14" r="1" fill="rgba(83,51,27,0)"/>
- <circle cx="95" cy="14" r="1" fill="rgba(83,51,27,0)"/>
- <circle cx="96" cy="14" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="97" cy="14" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="98" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="99" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="100" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="101" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="102" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="103" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="104" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="105" cy="14" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="106" cy="14" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="107" cy="14" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="108" cy="14" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="109" cy="14" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="110" cy="14" r="1" fill="rgba(33,13,4,0.00784314)"/>
- <circle cx="111" cy="14" r="1" fill="rgba(59,29,13,0.780392)"/>
- <circle cx="112" cy="14" r="1" fill="rgba(62,31,14,0.611765)"/>
- <circle cx="113" cy="14" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="114" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="14" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="15" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="19" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="20" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="21" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="22" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="23" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="24" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="25" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="26" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="27" cy="15" r="1" fill="rgba(73,41,20,0.290196)"/>
- <circle cx="28" cy="15" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="29" cy="15" r="1" fill="rgba(81,49,26,1)"/>
- <circle cx="30" cy="15" r="1" fill="rgba(84,52,28,0.929412)"/>
- <circle cx="31" cy="15" r="1" fill="rgba(86,54,30,0.113725)"/>
- <circle cx="32" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="33" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="34" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="35" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="36" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="37" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="38" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="39" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="40" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="41" cy="15" r="1" fill="rgba(86,53,30,0)"/>
- <circle cx="42" cy="15" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="43" cy="15" r="1" fill="rgba(63,32,15,0)"/>
- <circle cx="44" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="15" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="15" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="57" cy="15" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="58" cy="15" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="59" cy="15" r="1" fill="rgba(85,53,29,0.0745098)"/>
- <circle cx="60" cy="15" r="1" fill="rgba(91,58,33,0.313725)"/>
- <circle cx="61" cy="15" r="1" fill="rgba(96,63,37,0.552941)"/>
- <circle cx="62" cy="15" r="1" fill="rgba(101,69,42,0.733333)"/>
- <circle cx="63" cy="15" r="1" fill="rgba(105,74,47,0.886275)"/>
- <circle cx="64" cy="15" r="1" fill="rgba(110,79,51,0.941176)"/>
- <circle cx="65" cy="15" r="1" fill="rgba(112,80,52,0.941176)"/>
- <circle cx="66" cy="15" r="1" fill="rgba(107,76,48,0.92549)"/>
- <circle cx="67" cy="15" r="1" fill="rgba(102,71,44,0.796078)"/>
- <circle cx="68" cy="15" r="1" fill="rgba(98,65,39,0.627451)"/>
- <circle cx="69" cy="15" r="1" fill="rgba(93,60,35,0.419608)"/>
- <circle cx="70" cy="15" r="1" fill="rgba(87,55,31,0.168627)"/>
- <circle cx="71" cy="15" r="1" fill="rgba(82,49,27,0.0117647)"/>
- <circle cx="72" cy="15" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="73" cy="15" r="1" fill="rgba(69,38,18,0)"/>
- <circle cx="74" cy="15" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="15" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="15" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="15" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="15" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="15" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="15" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="15" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="15" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="15" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="15" r="1" fill="rgba(83,51,27,0)"/>
- <circle cx="95" cy="15" r="1" fill="rgba(84,52,29,0)"/>
- <circle cx="96" cy="15" r="1" fill="rgba(67,37,18,0)"/>
- <circle cx="97" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="98" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="99" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="100" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="101" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="102" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="103" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="104" cy="15" r="1" fill="rgba(64,35,16,0)"/>
- <circle cx="105" cy="15" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="106" cy="15" r="1" fill="rgba(39,16,5,0)"/>
- <circle cx="107" cy="15" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="108" cy="15" r="1" fill="rgba(37,14,4,0)"/>
- <circle cx="109" cy="15" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="110" cy="15" r="1" fill="rgba(51,24,9,0.513725)"/>
- <circle cx="111" cy="15" r="1" fill="rgba(61,30,13,0.831373)"/>
- <circle cx="112" cy="15" r="1" fill="rgba(47,21,8,0.0588235)"/>
- <circle cx="113" cy="15" r="1" fill="rgba(47,21,8,0)"/>
- <circle cx="114" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="15" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="16" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="19" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="20" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="21" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="22" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="23" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="24" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="25" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="26" cy="16" r="1" fill="rgba(74,41,20,0)"/>
- <circle cx="27" cy="16" r="1" fill="rgba(74,41,20,0.0509804)"/>
- <circle cx="28" cy="16" r="1" fill="rgba(80,46,24,0.878431)"/>
- <circle cx="29" cy="16" r="1" fill="rgba(84,51,27,1)"/>
- <circle cx="30" cy="16" r="1" fill="rgba(87,55,30,1)"/>
- <circle cx="31" cy="16" r="1" fill="rgba(90,57,33,0.364706)"/>
- <circle cx="32" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="33" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="34" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="35" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="36" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="37" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="38" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="39" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="40" cy="16" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="41" cy="16" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="42" cy="16" r="1" fill="rgba(83,50,27,0)"/>
- <circle cx="43" cy="16" r="1" fill="rgba(59,30,13,0)"/>
- <circle cx="44" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="55" cy="16" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="56" cy="16" r="1" fill="rgba(67,35,17,0.0196078)"/>
- <circle cx="57" cy="16" r="1" fill="rgba(74,42,21,0.305882)"/>
- <circle cx="58" cy="16" r="1" fill="rgba(80,47,25,0.623529)"/>
- <circle cx="59" cy="16" r="1" fill="rgba(84,52,29,0.905882)"/>
- <circle cx="60" cy="16" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="61" cy="16" r="1" fill="rgba(94,62,37,1)"/>
- <circle cx="62" cy="16" r="1" fill="rgba(99,67,40,1)"/>
- <circle cx="63" cy="16" r="1" fill="rgba(103,71,44,1)"/>
- <circle cx="64" cy="16" r="1" fill="rgba(106,75,48,1)"/>
- <circle cx="65" cy="16" r="1" fill="rgba(107,75,48,1)"/>
- <circle cx="66" cy="16" r="1" fill="rgba(105,73,46,1)"/>
- <circle cx="67" cy="16" r="1" fill="rgba(101,69,42,1)"/>
- <circle cx="68" cy="16" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="69" cy="16" r="1" fill="rgba(91,59,33,1)"/>
- <circle cx="70" cy="16" r="1" fill="rgba(87,54,30,0.972549)"/>
- <circle cx="71" cy="16" r="1" fill="rgba(81,49,27,0.776471)"/>
- <circle cx="72" cy="16" r="1" fill="rgba(76,44,22,0.458824)"/>
- <circle cx="73" cy="16" r="1" fill="rgba(69,38,18,0.133333)"/>
- <circle cx="74" cy="16" r="1" fill="rgba(63,33,15,0)"/>
- <circle cx="75" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="76" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="16" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="16" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="16" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="16" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="16" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="16" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="16" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="16" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="16" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="16" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="16" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="16" r="1" fill="rgba(94,61,35,0)"/>
- <circle cx="97" cy="16" r="1" fill="rgba(94,61,36,0)"/>
- <circle cx="98" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="99" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="100" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="101" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="102" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="103" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="104" cy="16" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="105" cy="16" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="106" cy="16" r="1" fill="rgba(77,45,23,0)"/>
- <circle cx="107" cy="16" r="1" fill="rgba(71,40,20,0)"/>
- <circle cx="108" cy="16" r="1" fill="rgba(64,34,16,0)"/>
- <circle cx="109" cy="16" r="1" fill="rgba(58,28,12,0.34902)"/>
- <circle cx="110" cy="16" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="111" cy="16" r="1" fill="rgba(37,16,5,0.32549)"/>
- <circle cx="112" cy="16" r="1" fill="rgba(28,9,3,0)"/>
- <circle cx="113" cy="16" r="1" fill="rgba(28,9,3,0)"/>
- <circle cx="114" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="16" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="17" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="19" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="20" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="21" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="22" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="23" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="24" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="25" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="26" cy="17" r="1" fill="rgba(67,35,16,0)"/>
- <circle cx="27" cy="17" r="1" fill="rgba(65,34,16,0)"/>
- <circle cx="28" cy="17" r="1" fill="rgba(71,40,20,0.376471)"/>
- <circle cx="29" cy="17" r="1" fill="rgba(86,54,30,1)"/>
- <circle cx="30" cy="17" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="31" cy="17" r="1" fill="rgba(93,61,35,0.584314)"/>
- <circle cx="32" cy="17" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="33" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="34" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="35" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="36" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="37" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="38" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="39" cy="17" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="40" cy="17" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="41" cy="17" r="1" fill="rgba(94,62,36,0)"/>
- <circle cx="42" cy="17" r="1" fill="rgba(71,40,20,0)"/>
- <circle cx="43" cy="17" r="1" fill="rgba(58,28,12,0)"/>
- <circle cx="44" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="53" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="54" cy="17" r="1" fill="rgba(61,30,13,0.0588235)"/>
- <circle cx="55" cy="17" r="1" fill="rgba(62,31,14,0.419608)"/>
- <circle cx="56" cy="17" r="1" fill="rgba(65,35,17,0.807843)"/>
- <circle cx="57" cy="17" r="1" fill="rgba(71,40,20,1)"/>
- <circle cx="58" cy="17" r="1" fill="rgba(77,46,24,1)"/>
- <circle cx="59" cy="17" r="1" fill="rgba(83,50,27,1)"/>
- <circle cx="60" cy="17" r="1" fill="rgba(87,56,31,1)"/>
- <circle cx="61" cy="17" r="1" fill="rgba(92,60,35,1)"/>
- <circle cx="62" cy="17" r="1" fill="rgba(96,64,38,1)"/>
- <circle cx="63" cy="17" r="1" fill="rgba(100,67,41,1)"/>
- <circle cx="64" cy="17" r="1" fill="rgba(102,70,43,1)"/>
- <circle cx="65" cy="17" r="1" fill="rgba(102,70,43,1)"/>
- <circle cx="66" cy="17" r="1" fill="rgba(101,69,42,1)"/>
- <circle cx="67" cy="17" r="1" fill="rgba(98,65,39,1)"/>
- <circle cx="68" cy="17" r="1" fill="rgba(94,61,36,1)"/>
- <circle cx="69" cy="17" r="1" fill="rgba(90,57,33,1)"/>
- <circle cx="70" cy="17" r="1" fill="rgba(85,53,29,1)"/>
- <circle cx="71" cy="17" r="1" fill="rgba(80,47,25,1)"/>
- <circle cx="72" cy="17" r="1" fill="rgba(74,42,22,1)"/>
- <circle cx="73" cy="17" r="1" fill="rgba(69,37,18,0.941176)"/>
- <circle cx="74" cy="17" r="1" fill="rgba(63,32,15,0.615686)"/>
- <circle cx="75" cy="17" r="1" fill="rgba(61,30,13,0.188235)"/>
- <circle cx="76" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="77" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="78" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="17" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="17" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="17" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="17" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="17" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="17" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="17" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="17" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="17" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="17" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="17" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="17" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="97" cy="17" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="98" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="99" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="100" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="101" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="102" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="103" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="104" cy="17" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="105" cy="17" r="1" fill="rgba(84,52,29,0)"/>
- <circle cx="106" cy="17" r="1" fill="rgba(81,48,25,0)"/>
- <circle cx="107" cy="17" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="108" cy="17" r="1" fill="rgba(67,36,17,0.364706)"/>
- <circle cx="109" cy="17" r="1" fill="rgba(64,33,15,0.996078)"/>
- <circle cx="110" cy="17" r="1" fill="rgba(43,19,7,0.686275)"/>
- <circle cx="111" cy="17" r="1" fill="rgba(24,7,2,0.0862745)"/>
- <circle cx="112" cy="17" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="113" cy="17" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="114" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="17" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="18" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="19" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="20" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="21" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="22" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="23" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="24" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="25" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="26" cy="18" r="1" fill="rgba(33,12,3,0)"/>
- <circle cx="27" cy="18" r="1" fill="rgba(31,11,3,0)"/>
- <circle cx="28" cy="18" r="1" fill="rgba(33,12,3,0.0156863)"/>
- <circle cx="29" cy="18" r="1" fill="rgba(76,45,23,0.733333)"/>
- <circle cx="30" cy="18" r="1" fill="rgba(93,59,34,1)"/>
- <circle cx="31" cy="18" r="1" fill="rgba(94,62,37,0.811765)"/>
- <circle cx="32" cy="18" r="1" fill="rgba(78,47,25,0.0117647)"/>
- <circle cx="33" cy="18" r="1" fill="rgba(68,39,19,0)"/>
- <circle cx="34" cy="18" r="1" fill="rgba(69,40,20,0)"/>
- <circle cx="35" cy="18" r="1" fill="rgba(69,40,20,0)"/>
- <circle cx="36" cy="18" r="1" fill="rgba(69,40,20,0)"/>
- <circle cx="37" cy="18" r="1" fill="rgba(69,40,20,0)"/>
- <circle cx="38" cy="18" r="1" fill="rgba(69,40,20,0)"/>
- <circle cx="39" cy="18" r="1" fill="rgba(68,39,19,0)"/>
- <circle cx="40" cy="18" r="1" fill="rgba(77,47,24,0)"/>
- <circle cx="41" cy="18" r="1" fill="rgba(81,48,26,0)"/>
- <circle cx="42" cy="18" r="1" fill="rgba(64,34,16,0)"/>
- <circle cx="43" cy="18" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="52" cy="18" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="53" cy="18" r="1" fill="rgba(59,29,13,0.356863)"/>
- <circle cx="54" cy="18" r="1" fill="rgba(61,30,13,0.839216)"/>
- <circle cx="55" cy="18" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="18" r="1" fill="rgba(64,34,16,1)"/>
- <circle cx="57" cy="18" r="1" fill="rgba(70,38,19,1)"/>
- <circle cx="58" cy="18" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="59" cy="18" r="1" fill="rgba(80,48,26,1)"/>
- <circle cx="60" cy="18" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="61" cy="18" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="62" cy="18" r="1" fill="rgba(93,60,35,1)"/>
- <circle cx="63" cy="18" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="64" cy="18" r="1" fill="rgba(97,65,38,1)"/>
- <circle cx="65" cy="18" r="1" fill="rgba(97,65,38,1)"/>
- <circle cx="66" cy="18" r="1" fill="rgba(96,64,38,1)"/>
- <circle cx="67" cy="18" r="1" fill="rgba(94,61,36,1)"/>
- <circle cx="68" cy="18" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="69" cy="18" r="1" fill="rgba(86,54,30,1)"/>
- <circle cx="70" cy="18" r="1" fill="rgba(82,50,27,1)"/>
- <circle cx="71" cy="18" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="72" cy="18" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="73" cy="18" r="1" fill="rgba(67,36,17,1)"/>
- <circle cx="74" cy="18" r="1" fill="rgba(62,31,13,1)"/>
- <circle cx="75" cy="18" r="1" fill="rgba(61,30,13,0.968627)"/>
- <circle cx="76" cy="18" r="1" fill="rgba(61,30,13,0.596078)"/>
- <circle cx="77" cy="18" r="1" fill="rgba(61,30,13,0.0941176)"/>
- <circle cx="78" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="79" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="18" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="18" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="18" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="18" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="18" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="18" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="18" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="18" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="18" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="18" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="18" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="18" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="97" cy="18" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="98" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="99" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="100" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="101" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="102" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="103" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="104" cy="18" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="105" cy="18" r="1" fill="rgba(84,52,29,0)"/>
- <circle cx="106" cy="18" r="1" fill="rgba(80,47,24,0)"/>
- <circle cx="107" cy="18" r="1" fill="rgba(74,42,20,0.478431)"/>
- <circle cx="108" cy="18" r="1" fill="rgba(70,38,18,1)"/>
- <circle cx="109" cy="18" r="1" fill="rgba(59,30,13,0.909804)"/>
- <circle cx="110" cy="18" r="1" fill="rgba(24,8,2,0.286275)"/>
- <circle cx="111" cy="18" r="1" fill="rgba(31,11,3,0.0117647)"/>
- <circle cx="112" cy="18" r="1" fill="rgba(31,11,4,0)"/>
- <circle cx="113" cy="18" r="1" fill="rgba(31,11,4,0)"/>
- <circle cx="114" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="18" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="19" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="19" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="20" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="21" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="22" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="23" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="24" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="25" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="26" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="27" cy="19" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="28" cy="19" r="1" fill="rgba(24,8,2,0)"/>
- <circle cx="29" cy="19" r="1" fill="rgba(49,23,9,0.333333)"/>
- <circle cx="30" cy="19" r="1" fill="rgba(92,60,34,1)"/>
- <circle cx="31" cy="19" r="1" fill="rgba(98,65,39,0.984314)"/>
- <circle cx="32" cy="19" r="1" fill="rgba(63,34,16,0.164706)"/>
- <circle cx="33" cy="19" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="34" cy="19" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="35" cy="19" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="36" cy="19" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="37" cy="19" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="38" cy="19" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="39" cy="19" r="1" fill="rgba(37,15,5,0)"/>
- <circle cx="40" cy="19" r="1" fill="rgba(59,31,14,0)"/>
- <circle cx="41" cy="19" r="1" fill="rgba(76,43,22,0)"/>
- <circle cx="42" cy="19" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="19" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="19" r="1" fill="rgba(61,30,13,0.0431373)"/>
- <circle cx="52" cy="19" r="1" fill="rgba(55,26,11,0.611765)"/>
- <circle cx="53" cy="19" r="1" fill="rgba(54,24,10,1)"/>
- <circle cx="54" cy="19" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="55" cy="19" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="19" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="57" cy="19" r="1" fill="rgba(68,36,17,1)"/>
- <circle cx="58" cy="19" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="59" cy="19" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="60" cy="19" r="1" fill="rgba(82,49,26,1)"/>
- <circle cx="61" cy="19" r="1" fill="rgba(85,53,29,1)"/>
- <circle cx="62" cy="19" r="1" fill="rgba(88,56,31,1)"/>
- <circle cx="63" cy="19" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="64" cy="19" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="65" cy="19" r="1" fill="rgba(93,60,34,1)"/>
- <circle cx="66" cy="19" r="1" fill="rgba(91,59,33,1)"/>
- <circle cx="67" cy="19" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="68" cy="19" r="1" fill="rgba(86,54,30,1)"/>
- <circle cx="69" cy="19" r="1" fill="rgba(83,50,27,1)"/>
- <circle cx="70" cy="19" r="1" fill="rgba(78,46,24,1)"/>
- <circle cx="71" cy="19" r="1" fill="rgba(74,42,22,1)"/>
- <circle cx="72" cy="19" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="73" cy="19" r="1" fill="rgba(63,33,15,1)"/>
- <circle cx="74" cy="19" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="75" cy="19" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="76" cy="19" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="77" cy="19" r="1" fill="rgba(61,30,13,0.847059)"/>
- <circle cx="78" cy="19" r="1" fill="rgba(61,30,13,0.219608)"/>
- <circle cx="79" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="80" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="81" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="82" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="84" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="19" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="19" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="19" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="19" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="19" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="19" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="19" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="19" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="19" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="19" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="19" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="19" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="97" cy="19" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="98" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="99" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="100" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="101" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="102" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="103" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="104" cy="19" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="105" cy="19" r="1" fill="rgba(84,52,29,0.027451)"/>
- <circle cx="106" cy="19" r="1" fill="rgba(80,48,24,0.588235)"/>
- <circle cx="107" cy="19" r="1" fill="rgba(76,43,22,1)"/>
- <circle cx="108" cy="19" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="109" cy="19" r="1" fill="rgba(40,17,6,0.572549)"/>
- <circle cx="110" cy="19" r="1" fill="rgba(24,8,2,0.0980392)"/>
- <circle cx="111" cy="19" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="112" cy="19" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="113" cy="19" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="114" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="19" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="20" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="19" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="20" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="21" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="22" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="23" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="24" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="25" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="26" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="27" cy="20" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="28" cy="20" r="1" fill="rgba(33,13,3,0)"/>
- <circle cx="29" cy="20" r="1" fill="rgba(31,12,3,0.133333)"/>
- <circle cx="30" cy="20" r="1" fill="rgba(85,53,30,0.901961)"/>
- <circle cx="31" cy="20" r="1" fill="rgba(100,68,42,1)"/>
- <circle cx="32" cy="20" r="1" fill="rgba(67,39,19,0.447059)"/>
- <circle cx="33" cy="20" r="1" fill="rgba(45,16,6,0)"/>
- <circle cx="34" cy="20" r="1" fill="rgba(77,17,6,0)"/>
- <circle cx="35" cy="20" r="1" fill="rgba(78,17,6,0)"/>
- <circle cx="36" cy="20" r="1" fill="rgba(78,17,6,0)"/>
- <circle cx="37" cy="20" r="1" fill="rgba(78,17,6,0)"/>
- <circle cx="38" cy="20" r="1" fill="rgba(78,15,5,0)"/>
- <circle cx="39" cy="20" r="1" fill="rgba(78,32,14,0)"/>
- <circle cx="40" cy="20" r="1" fill="rgba(77,47,24,0)"/>
- <circle cx="41" cy="20" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="20" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="20" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="50" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="51" cy="20" r="1" fill="rgba(53,24,10,0.439216)"/>
- <circle cx="52" cy="20" r="1" fill="rgba(150,120,89,1)"/>
- <circle cx="53" cy="20" r="1" fill="rgba(187,163,138,1)"/>
- <circle cx="54" cy="20" r="1" fill="rgba(55,26,11,1)"/>
- <circle cx="55" cy="20" r="1" fill="rgba(53,24,10,1)"/>
- <circle cx="56" cy="20" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="57" cy="20" r="1" fill="rgba(64,33,15,1)"/>
- <circle cx="58" cy="20" r="1" fill="rgba(69,37,18,1)"/>
- <circle cx="59" cy="20" r="1" fill="rgba(74,41,21,1)"/>
- <circle cx="60" cy="20" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="61" cy="20" r="1" fill="rgba(81,48,26,1)"/>
- <circle cx="62" cy="20" r="1" fill="rgba(84,51,27,1)"/>
- <circle cx="63" cy="20" r="1" fill="rgba(85,53,30,1)"/>
- <circle cx="64" cy="20" r="1" fill="rgba(87,54,30,1)"/>
- <circle cx="65" cy="20" r="1" fill="rgba(87,54,30,1)"/>
- <circle cx="66" cy="20" r="1" fill="rgba(86,53,30,1)"/>
- <circle cx="67" cy="20" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="68" cy="20" r="1" fill="rgba(82,50,27,1)"/>
- <circle cx="69" cy="20" r="1" fill="rgba(78,46,24,1)"/>
- <circle cx="70" cy="20" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="71" cy="20" r="1" fill="rgba(70,39,19,1)"/>
- <circle cx="72" cy="20" r="1" fill="rgba(65,34,16,1)"/>
- <circle cx="73" cy="20" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="74" cy="20" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="75" cy="20" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="76" cy="20" r="1" fill="rgba(63,33,16,1)"/>
- <circle cx="77" cy="20" r="1" fill="rgba(62,33,16,1)"/>
- <circle cx="78" cy="20" r="1" fill="rgba(61,31,14,0.894118)"/>
- <circle cx="79" cy="20" r="1" fill="rgba(62,31,14,0.0862745)"/>
- <circle cx="80" cy="20" r="1" fill="rgba(58,28,12,0)"/>
- <circle cx="81" cy="20" r="1" fill="rgba(77,47,26,0)"/>
- <circle cx="82" cy="20" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="83" cy="20" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="84" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="20" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="20" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="20" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="20" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="20" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="20" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="20" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="20" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="20" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="20" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="20" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="20" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="97" cy="20" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="98" cy="20" r="1" fill="rgba(90,57,32,0)"/>
- <circle cx="99" cy="20" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="100" cy="20" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="101" cy="20" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="102" cy="20" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="103" cy="20" r="1" fill="rgba(88,56,31,0)"/>
- <circle cx="104" cy="20" r="1" fill="rgba(88,56,31,0.027451)"/>
- <circle cx="105" cy="20" r="1" fill="rgba(85,53,30,0.682353)"/>
- <circle cx="106" cy="20" r="1" fill="rgba(81,49,27,1)"/>
- <circle cx="107" cy="20" r="1" fill="rgba(78,47,24,1)"/>
- <circle cx="108" cy="20" r="1" fill="rgba(65,35,17,0.905882)"/>
- <circle cx="109" cy="20" r="1" fill="rgba(21,6,1,0.305882)"/>
- <circle cx="110" cy="20" r="1" fill="rgba(33,13,4,0.0235294)"/>
- <circle cx="111" cy="20" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="112" cy="20" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="113" cy="20" r="1" fill="rgba(36,14,4,0)"/>
- <circle cx="114" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="20" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="21" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="19" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="20" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="21" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="22" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="23" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="24" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="25" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="26" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="27" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="28" cy="21" r="1" fill="rgba(26,9,2,0)"/>
- <circle cx="29" cy="21" r="1" fill="rgba(24,8,2,0.0588235)"/>
- <circle cx="30" cy="21" r="1" fill="rgba(76,46,24,0.756863)"/>
- <circle cx="31" cy="21" r="1" fill="rgba(100,68,41,1)"/>
- <circle cx="32" cy="21" r="1" fill="rgba(76,47,24,0.709804)"/>
- <circle cx="33" cy="21" r="1" fill="rgba(43,17,6,0.0745098)"/>
- <circle cx="34" cy="21" r="1" fill="rgba(77,17,6,0)"/>
- <circle cx="35" cy="21" r="1" fill="rgba(76,14,5,0)"/>
- <circle cx="36" cy="21" r="1" fill="rgba(76,14,5,0)"/>
- <circle cx="37" cy="21" r="1" fill="rgba(76,14,5,0)"/>
- <circle cx="38" cy="21" r="1" fill="rgba(77,13,4,0)"/>
- <circle cx="39" cy="21" r="1" fill="rgba(81,34,16,0)"/>
- <circle cx="40" cy="21" r="1" fill="rgba(78,48,25,0)"/>
- <circle cx="41" cy="21" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="21" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="21" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="21" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="50" cy="21" r="1" fill="rgba(55,26,11,0)"/>
- <circle cx="51" cy="21" r="1" fill="rgba(49,21,8,0.227451)"/>
- <circle cx="52" cy="21" r="1" fill="rgba(108,74,45,0.956863)"/>
- <circle cx="53" cy="21" r="1" fill="rgba(213,197,178,1)"/>
- <circle cx="54" cy="21" r="1" fill="rgba(170,143,115,1)"/>
- <circle cx="55" cy="21" r="1" fill="rgba(83,49,26,1)"/>
- <circle cx="56" cy="21" r="1" fill="rgba(50,22,8,1)"/>
- <circle cx="57" cy="21" r="1" fill="rgba(50,22,9,1)"/>
- <circle cx="58" cy="21" r="1" fill="rgba(62,32,14,1)"/>
- <circle cx="59" cy="21" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="60" cy="21" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="61" cy="21" r="1" fill="rgba(76,44,22,1)"/>
- <circle cx="62" cy="21" r="1" fill="rgba(78,47,24,1)"/>
- <circle cx="63" cy="21" r="1" fill="rgba(81,48,25,1)"/>
- <circle cx="64" cy="21" r="1" fill="rgba(82,49,26,1)"/>
- <circle cx="65" cy="21" r="1" fill="rgba(82,49,26,1)"/>
- <circle cx="66" cy="21" r="1" fill="rgba(81,48,26,1)"/>
- <circle cx="67" cy="21" r="1" fill="rgba(78,47,24,1)"/>
- <circle cx="68" cy="21" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="69" cy="21" r="1" fill="rgba(74,42,21,1)"/>
- <circle cx="70" cy="21" r="1" fill="rgba(70,39,19,1)"/>
- <circle cx="71" cy="21" r="1" fill="rgba(67,35,16,1)"/>
- <circle cx="72" cy="21" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="73" cy="21" r="1" fill="rgba(61,30,14,1)"/>
- <circle cx="74" cy="21" r="1" fill="rgba(63,33,16,1)"/>
- <circle cx="75" cy="21" r="1" fill="rgba(65,37,20,1)"/>
- <circle cx="76" cy="21" r="1" fill="rgba(68,41,24,1)"/>
- <circle cx="77" cy="21" r="1" fill="rgba(67,39,22,1)"/>
- <circle cx="78" cy="21" r="1" fill="rgba(62,32,15,0.823529)"/>
- <circle cx="79" cy="21" r="1" fill="rgba(47,21,8,0.0431373)"/>
- <circle cx="80" cy="21" r="1" fill="rgba(71,40,20,0)"/>
- <circle cx="81" cy="21" r="1" fill="rgba(106,78,54,0)"/>
- <circle cx="82" cy="21" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="83" cy="21" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="84" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="21" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="21" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="21" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="21" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="21" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="21" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="21" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="21" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="21" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="21" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="21" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="21" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="21" r="1" fill="rgba(95,62,37,0)"/>
- <circle cx="98" cy="21" r="1" fill="rgba(97,65,38,0)"/>
- <circle cx="99" cy="21" r="1" fill="rgba(93,60,35,0)"/>
- <circle cx="100" cy="21" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="101" cy="21" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="102" cy="21" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="103" cy="21" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="104" cy="21" r="1" fill="rgba(91,58,33,0.4)"/>
- <circle cx="105" cy="21" r="1" fill="rgba(87,55,30,1)"/>
- <circle cx="106" cy="21" r="1" fill="rgba(83,51,27,1)"/>
- <circle cx="107" cy="21" r="1" fill="rgba(82,49,27,1)"/>
- <circle cx="108" cy="21" r="1" fill="rgba(45,20,7,0.635294)"/>
- <circle cx="109" cy="21" r="1" fill="rgba(24,7,2,0.141176)"/>
- <circle cx="110" cy="21" r="1" fill="rgba(36,13,4,0)"/>
- <circle cx="111" cy="21" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="112" cy="21" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="113" cy="21" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="114" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="21" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="22" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="19" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="20" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="21" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="22" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="23" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="24" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="25" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="26" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="27" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="28" cy="22" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="29" cy="22" r="1" fill="rgba(26,9,3,0.0117647)"/>
- <circle cx="30" cy="22" r="1" fill="rgba(61,33,15,0.603922)"/>
- <circle cx="31" cy="22" r="1" fill="rgba(98,65,39,1)"/>
- <circle cx="32" cy="22" r="1" fill="rgba(87,56,31,0.905882)"/>
- <circle cx="33" cy="22" r="1" fill="rgba(34,13,4,0.27451)"/>
- <circle cx="34" cy="22" r="1" fill="rgba(55,21,8,0)"/>
- <circle cx="35" cy="22" r="1" fill="rgba(77,42,21,0)"/>
- <circle cx="36" cy="22" r="1" fill="rgba(76,41,21,0)"/>
- <circle cx="37" cy="22" r="1" fill="rgba(75,39,20,0)"/>
- <circle cx="38" cy="22" r="1" fill="rgba(71,37,18,0)"/>
- <circle cx="39" cy="22" r="1" fill="rgba(81,48,25,0)"/>
- <circle cx="40" cy="22" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="41" cy="22" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="22" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="22" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="48" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="49" cy="22" r="1" fill="rgba(62,31,14,0.301961)"/>
- <circle cx="50" cy="22" r="1" fill="rgba(47,22,9,0.239216)"/>
- <circle cx="51" cy="22" r="1" fill="rgba(10,1,0,0.560784)"/>
- <circle cx="52" cy="22" r="1" fill="rgba(4,0,0,0.984314)"/>
- <circle cx="53" cy="22" r="1" fill="rgba(51,23,9,1)"/>
- <circle cx="54" cy="22" r="1" fill="rgba(125,90,60,1)"/>
- <circle cx="55" cy="22" r="1" fill="rgba(172,144,116,1)"/>
- <circle cx="56" cy="22" r="1" fill="rgba(171,144,115,1)"/>
- <circle cx="57" cy="22" r="1" fill="rgba(123,88,58,1)"/>
- <circle cx="58" cy="22" r="1" fill="rgba(65,34,16,1)"/>
- <circle cx="59" cy="22" r="1" fill="rgba(50,22,9,1)"/>
- <circle cx="60" cy="22" r="1" fill="rgba(61,31,14,1)"/>
- <circle cx="61" cy="22" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="62" cy="22" r="1" fill="rgba(74,41,21,1)"/>
- <circle cx="63" cy="22" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="64" cy="22" r="1" fill="rgba(76,44,22,1)"/>
- <circle cx="65" cy="22" r="1" fill="rgba(76,44,22,1)"/>
- <circle cx="66" cy="22" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="67" cy="22" r="1" fill="rgba(74,42,21,1)"/>
- <circle cx="68" cy="22" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="69" cy="22" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="70" cy="22" r="1" fill="rgba(65,35,16,1)"/>
- <circle cx="71" cy="22" r="1" fill="rgba(63,32,15,1)"/>
- <circle cx="72" cy="22" r="1" fill="rgba(62,33,16,1)"/>
- <circle cx="73" cy="22" r="1" fill="rgba(63,36,18,1)"/>
- <circle cx="74" cy="22" r="1" fill="rgba(68,42,24,1)"/>
- <circle cx="75" cy="22" r="1" fill="rgba(70,44,27,1)"/>
- <circle cx="76" cy="22" r="1" fill="rgba(67,39,21,1)"/>
- <circle cx="77" cy="22" r="1" fill="rgba(53,27,12,1)"/>
- <circle cx="78" cy="22" r="1" fill="rgba(10,3,0,0.835294)"/>
- <circle cx="79" cy="22" r="1" fill="rgba(0,0,0,0.219608)"/>
- <circle cx="80" cy="22" r="1" fill="rgba(76,44,22,0.0156863)"/>
- <circle cx="81" cy="22" r="1" fill="rgba(111,82,57,0.0117647)"/>
- <circle cx="82" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="83" cy="22" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="84" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="22" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="22" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="22" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="22" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="22" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="22" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="22" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="22" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="22" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="22" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="22" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="22" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="22" r="1" fill="rgba(94,62,37,0)"/>
- <circle cx="98" cy="22" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="99" cy="22" r="1" fill="rgba(97,65,39,0)"/>
- <circle cx="100" cy="22" r="1" fill="rgba(95,63,37,0)"/>
- <circle cx="101" cy="22" r="1" fill="rgba(95,63,37,0)"/>
- <circle cx="102" cy="22" r="1" fill="rgba(95,63,37,0)"/>
- <circle cx="103" cy="22" r="1" fill="rgba(95,63,37,0.0862745)"/>
- <circle cx="104" cy="22" r="1" fill="rgba(93,60,34,0.894118)"/>
- <circle cx="105" cy="22" r="1" fill="rgba(88,56,31,1)"/>
- <circle cx="106" cy="22" r="1" fill="rgba(87,54,30,1)"/>
- <circle cx="107" cy="22" r="1" fill="rgba(55,29,13,0.764706)"/>
- <circle cx="108" cy="22" r="1" fill="rgba(15,3,0,0.34902)"/>
- <circle cx="109" cy="22" r="1" fill="rgba(33,12,4,0.0509804)"/>
- <circle cx="110" cy="22" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="111" cy="22" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="112" cy="22" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="113" cy="22" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="114" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="22" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="23" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="19" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="20" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="21" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="22" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="23" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="24" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="25" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="26" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="27" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="28" cy="23" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="29" cy="23" r="1" fill="rgba(40,17,6,0)"/>
- <circle cx="30" cy="23" r="1" fill="rgba(59,32,14,0.419608)"/>
- <circle cx="31" cy="23" r="1" fill="rgba(94,61,36,1)"/>
- <circle cx="32" cy="23" r="1" fill="rgba(93,61,35,0.996078)"/>
- <circle cx="33" cy="23" r="1" fill="rgba(43,19,7,0.47451)"/>
- <circle cx="34" cy="23" r="1" fill="rgba(73,41,20,0.172549)"/>
- <circle cx="35" cy="23" r="1" fill="rgba(103,72,45,0.0745098)"/>
- <circle cx="36" cy="23" r="1" fill="rgba(96,65,39,0)"/>
- <circle cx="37" cy="23" r="1" fill="rgba(95,63,37,0)"/>
- <circle cx="38" cy="23" r="1" fill="rgba(85,55,30,0)"/>
- <circle cx="39" cy="23" r="1" fill="rgba(82,49,26,0)"/>
- <circle cx="40" cy="23" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="41" cy="23" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="23" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="23" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="23" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="23" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="23" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="47" cy="23" r="1" fill="rgba(61,30,13,0.027451)"/>
- <circle cx="48" cy="23" r="1" fill="rgba(61,30,13,0.592157)"/>
- <circle cx="49" cy="23" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="23" r="1" fill="rgba(61,30,13,0.992157)"/>
- <circle cx="51" cy="23" r="1" fill="rgba(50,22,9,1)"/>
- <circle cx="52" cy="23" r="1" fill="rgba(29,11,3,1)"/>
- <circle cx="53" cy="23" r="1" fill="rgba(19,5,1,1)"/>
- <circle cx="54" cy="23" r="1" fill="rgba(21,5,1,1)"/>
- <circle cx="55" cy="23" r="1" fill="rgba(47,21,8,1)"/>
- <circle cx="56" cy="23" r="1" fill="rgba(110,76,47,1)"/>
- <circle cx="57" cy="23" r="1" fill="rgba(178,151,123,1)"/>
- <circle cx="58" cy="23" r="1" fill="rgba(196,174,149,1)"/>
- <circle cx="59" cy="23" r="1" fill="rgba(161,132,101,1)"/>
- <circle cx="60" cy="23" r="1" fill="rgba(107,73,45,1)"/>
- <circle cx="61" cy="23" r="1" fill="rgba(68,37,18,1)"/>
- <circle cx="62" cy="23" r="1" fill="rgba(53,25,11,1)"/>
- <circle cx="63" cy="23" r="1" fill="rgba(61,31,14,1)"/>
- <circle cx="64" cy="23" r="1" fill="rgba(63,33,15,1)"/>
- <circle cx="65" cy="23" r="1" fill="rgba(63,33,15,1)"/>
- <circle cx="66" cy="23" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="67" cy="23" r="1" fill="rgba(68,39,20,1)"/>
- <circle cx="68" cy="23" r="1" fill="rgba(68,37,18,1)"/>
- <circle cx="69" cy="23" r="1" fill="rgba(65,35,18,1)"/>
- <circle cx="70" cy="23" r="1" fill="rgba(65,37,20,1)"/>
- <circle cx="71" cy="23" r="1" fill="rgba(67,40,22,1)"/>
- <circle cx="72" cy="23" r="1" fill="rgba(70,44,26,1)"/>
- <circle cx="73" cy="23" r="1" fill="rgba(70,45,27,1)"/>
- <circle cx="74" cy="23" r="1" fill="rgba(63,37,21,1)"/>
- <circle cx="75" cy="23" r="1" fill="rgba(46,22,9,1)"/>
- <circle cx="76" cy="23" r="1" fill="rgba(19,6,1,1)"/>
- <circle cx="77" cy="23" r="1" fill="black"/>
- <circle cx="78" cy="23" r="1" fill="rgba(33,12,3,1)"/>
- <circle cx="79" cy="23" r="1" fill="rgba(57,30,14,0.94902)"/>
- <circle cx="80" cy="23" r="1" fill="rgba(85,63,44,0.792157)"/>
- <circle cx="81" cy="23" r="1" fill="rgba(98,78,61,0.776471)"/>
- <circle cx="82" cy="23" r="1" fill="rgba(61,30,13,0.211765)"/>
- <circle cx="83" cy="23" r="1" fill="rgba(59,28,12,0)"/>
- <circle cx="84" cy="23" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="85" cy="23" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="23" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="23" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="23" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="23" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="23" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="23" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="23" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="23" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="23" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="23" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="23" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="23" r="1" fill="rgba(94,62,37,0)"/>
- <circle cx="98" cy="23" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="99" cy="23" r="1" fill="rgba(99,67,41,0)"/>
- <circle cx="100" cy="23" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="101" cy="23" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="102" cy="23" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="103" cy="23" r="1" fill="rgba(97,65,38,0.54902)"/>
- <circle cx="104" cy="23" r="1" fill="rgba(93,61,35,1)"/>
- <circle cx="105" cy="23" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="106" cy="23" r="1" fill="rgba(57,30,13,0.717647)"/>
- <circle cx="107" cy="23" r="1" fill="rgba(0,0,0,0.45098)"/>
- <circle cx="108" cy="23" r="1" fill="rgba(21,6,1,0.262745)"/>
- <circle cx="109" cy="23" r="1" fill="rgba(34,13,4,0.00784314)"/>
- <circle cx="110" cy="23" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="111" cy="23" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="112" cy="23" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="113" cy="23" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="114" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="23" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="24" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="19" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="20" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="21" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="22" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="23" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="24" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="25" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="26" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="27" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="28" cy="24" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="29" cy="24" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="30" cy="24" r="1" fill="rgba(53,26,11,0.160784)"/>
- <circle cx="31" cy="24" r="1" fill="rgba(87,55,30,0.964706)"/>
- <circle cx="32" cy="24" r="1" fill="rgba(92,60,34,1)"/>
- <circle cx="33" cy="24" r="1" fill="rgba(91,58,33,0.945098)"/>
- <circle cx="34" cy="24" r="1" fill="rgba(95,62,37,0.960784)"/>
- <circle cx="35" cy="24" r="1" fill="rgba(97,65,38,0.803922)"/>
- <circle cx="36" cy="24" r="1" fill="rgba(94,62,37,0.0666667)"/>
- <circle cx="37" cy="24" r="1" fill="rgba(93,61,35,0)"/>
- <circle cx="38" cy="24" r="1" fill="rgba(84,53,29,0)"/>
- <circle cx="39" cy="24" r="1" fill="rgba(82,49,26,0)"/>
- <circle cx="40" cy="24" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="41" cy="24" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="24" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="24" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="24" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="24" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="46" cy="24" r="1" fill="rgba(61,30,13,0.0745098)"/>
- <circle cx="47" cy="24" r="1" fill="rgba(61,30,13,0.701961)"/>
- <circle cx="48" cy="24" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="24" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="24" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="24" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="52" cy="24" r="1" fill="rgba(63,32,14,1)"/>
- <circle cx="53" cy="24" r="1" fill="rgba(55,26,11,1)"/>
- <circle cx="54" cy="24" r="1" fill="rgba(40,16,6,1)"/>
- <circle cx="55" cy="24" r="1" fill="rgba(24,8,2,1)"/>
- <circle cx="56" cy="24" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="57" cy="24" r="1" fill="rgba(21,5,1,1)"/>
- <circle cx="58" cy="24" r="1" fill="rgba(76,44,22,1)"/>
- <circle cx="59" cy="24" r="1" fill="rgba(137,104,74,1)"/>
- <circle cx="60" cy="24" r="1" fill="rgba(172,145,116,1)"/>
- <circle cx="61" cy="24" r="1" fill="rgba(172,145,117,1)"/>
- <circle cx="62" cy="24" r="1" fill="rgba(152,122,91,1)"/>
- <circle cx="63" cy="24" r="1" fill="rgba(120,86,56,1)"/>
- <circle cx="64" cy="24" r="1" fill="rgba(113,79,50,1)"/>
- <circle cx="65" cy="24" r="1" fill="rgba(109,75,46,1)"/>
- <circle cx="66" cy="24" r="1" fill="rgba(70,42,22,1)"/>
- <circle cx="67" cy="24" r="1" fill="rgba(70,44,27,1)"/>
- <circle cx="68" cy="24" r="1" fill="rgba(71,44,27,1)"/>
- <circle cx="69" cy="24" r="1" fill="rgba(69,43,26,1)"/>
- <circle cx="70" cy="24" r="1" fill="rgba(68,42,25,1)"/>
- <circle cx="71" cy="24" r="1" fill="rgba(61,36,20,1)"/>
- <circle cx="72" cy="24" r="1" fill="rgba(46,23,11,1)"/>
- <circle cx="73" cy="24" r="1" fill="rgba(24,10,3,1)"/>
- <circle cx="74" cy="24" r="1" fill="rgba(7,2,0,1)"/>
- <circle cx="75" cy="24" r="1" fill="rgba(36,14,4,1)"/>
- <circle cx="76" cy="24" r="1" fill="rgba(76,45,23,1)"/>
- <circle cx="77" cy="24" r="1" fill="rgba(99,71,47,1)"/>
- <circle cx="78" cy="24" r="1" fill="rgba(104,82,62,1)"/>
- <circle cx="79" cy="24" r="1" fill="rgba(95,79,68,1)"/>
- <circle cx="80" cy="24" r="1" fill="rgba(85,76,69,1)"/>
- <circle cx="81" cy="24" r="1" fill="rgba(86,78,72,1)"/>
- <circle cx="82" cy="24" r="1" fill="rgba(78,59,44,0.92549)"/>
- <circle cx="83" cy="24" r="1" fill="rgba(61,29,13,0.286275)"/>
- <circle cx="84" cy="24" r="1" fill="rgba(59,28,12,0)"/>
- <circle cx="85" cy="24" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="86" cy="24" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="24" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="24" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="24" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="24" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="24" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="24" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="24" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="24" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="24" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="24" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="24" r="1" fill="rgba(94,62,37,0)"/>
- <circle cx="98" cy="24" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="99" cy="24" r="1" fill="rgba(99,67,41,0)"/>
- <circle cx="100" cy="24" r="1" fill="rgba(100,67,41,0)"/>
- <circle cx="101" cy="24" r="1" fill="rgba(100,67,41,0)"/>
- <circle cx="102" cy="24" r="1" fill="rgba(99,67,41,0.172549)"/>
- <circle cx="103" cy="24" r="1" fill="rgba(97,65,38,0.968627)"/>
- <circle cx="104" cy="24" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="105" cy="24" r="1" fill="rgba(63,34,16,0.705882)"/>
- <circle cx="106" cy="24" r="1" fill="rgba(0,0,0,0.431373)"/>
- <circle cx="107" cy="24" r="1" fill="rgba(4,0,0,0.435294)"/>
- <circle cx="108" cy="24" r="1" fill="rgba(31,12,3,0.172549)"/>
- <circle cx="109" cy="24" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="110" cy="24" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="111" cy="24" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="112" cy="24" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="113" cy="24" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="114" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="24" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="25" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="25" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="19" cy="25" r="1" fill="rgba(49,23,9,0)"/>
- <circle cx="20" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="21" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="22" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="23" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="24" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="25" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="26" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="27" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="28" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="29" cy="25" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="30" cy="25" r="1" fill="rgba(47,22,9,0.00784314)"/>
- <circle cx="31" cy="25" r="1" fill="rgba(82,49,27,0.729412)"/>
- <circle cx="32" cy="25" r="1" fill="rgba(90,57,33,1)"/>
- <circle cx="33" cy="25" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="34" cy="25" r="1" fill="rgba(92,60,34,1)"/>
- <circle cx="35" cy="25" r="1" fill="rgba(93,61,35,1)"/>
- <circle cx="36" cy="25" r="1" fill="rgba(93,61,35,0.67451)"/>
- <circle cx="37" cy="25" r="1" fill="rgba(91,59,33,0)"/>
- <circle cx="38" cy="25" r="1" fill="rgba(84,53,29,0)"/>
- <circle cx="39" cy="25" r="1" fill="rgba(82,49,26,0)"/>
- <circle cx="40" cy="25" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="41" cy="25" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="25" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="25" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="25" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="45" cy="25" r="1" fill="rgba(61,30,13,0.12549)"/>
- <circle cx="46" cy="25" r="1" fill="rgba(61,30,13,0.792157)"/>
- <circle cx="47" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="48" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="25" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="54" cy="25" r="1" fill="rgba(63,32,14,1)"/>
- <circle cx="55" cy="25" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="25" r="1" fill="rgba(53,24,10,1)"/>
- <circle cx="57" cy="25" r="1" fill="rgba(36,14,5,1)"/>
- <circle cx="58" cy="25" r="1" fill="rgba(19,4,1,1)"/>
- <circle cx="59" cy="25" r="1" fill="black"/>
- <circle cx="60" cy="25" r="1" fill="rgba(10,1,0,1)"/>
- <circle cx="61" cy="25" r="1" fill="rgba(54,28,11,1)"/>
- <circle cx="62" cy="25" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="63" cy="25" r="1" fill="rgba(116,83,53,1)"/>
- <circle cx="64" cy="25" r="1" fill="rgba(142,110,79,1)"/>
- <circle cx="65" cy="25" r="1" fill="rgba(137,104,75,1)"/>
- <circle cx="66" cy="25" r="1" fill="rgba(70,43,25,1)"/>
- <circle cx="67" cy="25" r="1" fill="rgba(62,40,24,1)"/>
- <circle cx="68" cy="25" r="1" fill="rgba(53,30,16,1)"/>
- <circle cx="69" cy="25" r="1" fill="rgba(37,18,8,1)"/>
- <circle cx="70" cy="25" r="1" fill="rgba(21,7,2,1)"/>
- <circle cx="71" cy="25" r="1" fill="rgba(19,6,1,1)"/>
- <circle cx="72" cy="25" r="1" fill="rgba(39,17,6,1)"/>
- <circle cx="73" cy="25" r="1" fill="rgba(78,49,25,1)"/>
- <circle cx="74" cy="25" r="1" fill="rgba(121,91,64,1)"/>
- <circle cx="75" cy="25" r="1" fill="rgba(125,99,77,1)"/>
- <circle cx="76" cy="25" r="1" fill="rgba(110,90,73,1)"/>
- <circle cx="77" cy="25" r="1" fill="rgba(85,71,59,1)"/>
- <circle cx="78" cy="25" r="1" fill="rgba(76,65,55,1)"/>
- <circle cx="79" cy="25" r="1" fill="rgba(78,68,57,1)"/>
- <circle cx="80" cy="25" r="1" fill="rgba(83,72,63,1)"/>
- <circle cx="81" cy="25" r="1" fill="rgba(86,76,67,1)"/>
- <circle cx="82" cy="25" r="1" fill="rgba(91,82,76,1)"/>
- <circle cx="83" cy="25" r="1" fill="rgba(82,65,52,0.968627)"/>
- <circle cx="84" cy="25" r="1" fill="rgba(63,32,16,0.360784)"/>
- <circle cx="85" cy="25" r="1" fill="rgba(59,28,11,0)"/>
- <circle cx="86" cy="25" r="1" fill="rgba(61,31,14,0)"/>
- <circle cx="87" cy="25" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="25" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="25" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="25" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="25" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="25" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="25" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="25" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="25" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="25" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="25" r="1" fill="rgba(94,62,37,0)"/>
- <circle cx="98" cy="25" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="99" cy="25" r="1" fill="rgba(98,66,40,0)"/>
- <circle cx="100" cy="25" r="1" fill="rgba(99,66,40,0)"/>
- <circle cx="101" cy="25" r="1" fill="rgba(100,67,41,0)"/>
- <circle cx="102" cy="25" r="1" fill="rgba(99,67,41,0.686275)"/>
- <circle cx="103" cy="25" r="1" fill="rgba(97,65,38,1)"/>
- <circle cx="104" cy="25" r="1" fill="rgba(83,52,28,0.866667)"/>
- <circle cx="105" cy="25" r="1" fill="rgba(12,4,0,0.447059)"/>
- <circle cx="106" cy="25" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="107" cy="25" r="1" fill="rgba(17,5,1,0.372549)"/>
- <circle cx="108" cy="25" r="1" fill="rgba(40,18,6,0.0705882)"/>
- <circle cx="109" cy="25" r="1" fill="rgba(43,20,7,0)"/>
- <circle cx="110" cy="25" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="111" cy="25" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="112" cy="25" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="113" cy="25" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="114" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="25" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="26" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="26" r="1" fill="rgba(62,34,16,0)"/>
- <circle cx="19" cy="26" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="20" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="21" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="22" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="23" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="24" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="25" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="26" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="27" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="28" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="29" cy="26" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="30" cy="26" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="31" cy="26" r="1" fill="rgba(64,35,16,0.243137)"/>
- <circle cx="32" cy="26" r="1" fill="rgba(84,51,28,0.913725)"/>
- <circle cx="33" cy="26" r="1" fill="rgba(88,56,32,1)"/>
- <circle cx="34" cy="26" r="1" fill="rgba(90,58,33,1)"/>
- <circle cx="35" cy="26" r="1" fill="rgba(88,56,32,1)"/>
- <circle cx="36" cy="26" r="1" fill="rgba(88,57,32,1)"/>
- <circle cx="37" cy="26" r="1" fill="rgba(87,55,30,0.552941)"/>
- <circle cx="38" cy="26" r="1" fill="rgba(84,52,28,0.105882)"/>
- <circle cx="39" cy="26" r="1" fill="rgba(82,49,26,0)"/>
- <circle cx="40" cy="26" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="41" cy="26" r="1" fill="rgba(75,42,22,0)"/>
- <circle cx="42" cy="26" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="26" r="1" fill="rgba(59,29,13,0)"/>
- <circle cx="44" cy="26" r="1" fill="rgba(61,30,13,0.192157)"/>
- <circle cx="45" cy="26" r="1" fill="rgba(61,30,13,0.858824)"/>
- <circle cx="46" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="47" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="48" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="54" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="55" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="26" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="57" cy="26" r="1" fill="rgba(63,32,14,1)"/>
- <circle cx="58" cy="26" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="26" r="1" fill="rgba(54,25,10,1)"/>
- <circle cx="60" cy="26" r="1" fill="rgba(39,16,6,1)"/>
- <circle cx="61" cy="26" r="1" fill="rgba(24,8,2,1)"/>
- <circle cx="62" cy="26" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="63" cy="26" r="1" fill="black"/>
- <circle cx="64" cy="26" r="1" fill="black"/>
- <circle cx="65" cy="26" r="1" fill="black"/>
- <circle cx="66" cy="26" r="1" fill="rgba(12,4,1,1)"/>
- <circle cx="67" cy="26" r="1" fill="rgba(17,7,3,1)"/>
- <circle cx="68" cy="26" r="1" fill="rgba(17,6,1,1)"/>
- <circle cx="69" cy="26" r="1" fill="rgba(19,8,3,1)"/>
- <circle cx="70" cy="26" r="1" fill="rgba(49,26,12,1)"/>
- <circle cx="71" cy="26" r="1" fill="rgba(83,56,34,1)"/>
- <circle cx="72" cy="26" r="1" fill="rgba(105,79,56,1)"/>
- <circle cx="73" cy="26" r="1" fill="rgba(98,76,56,1)"/>
- <circle cx="74" cy="26" r="1" fill="rgba(82,64,48,1)"/>
- <circle cx="75" cy="26" r="1" fill="rgba(63,50,38,1)"/>
- <circle cx="76" cy="26" r="1" fill="rgba(63,50,40,1)"/>
- <circle cx="77" cy="26" r="1" fill="rgba(70,57,46,1)"/>
- <circle cx="78" cy="26" r="1" fill="rgba(74,62,50,1)"/>
- <circle cx="79" cy="26" r="1" fill="rgba(78,66,56,1)"/>
- <circle cx="80" cy="26" r="1" fill="rgba(81,70,59,1)"/>
- <circle cx="81" cy="26" r="1" fill="rgba(83,73,64,1)"/>
- <circle cx="82" cy="26" r="1" fill="rgba(87,77,69,1)"/>
- <circle cx="83" cy="26" r="1" fill="rgba(92,84,79,1)"/>
- <circle cx="84" cy="26" r="1" fill="rgba(86,72,62,1)"/>
- <circle cx="85" cy="26" r="1" fill="rgba(64,36,19,0.454902)"/>
- <circle cx="86" cy="26" r="1" fill="rgba(59,28,11,0)"/>
- <circle cx="87" cy="26" r="1" fill="rgba(62,33,16,0)"/>
- <circle cx="88" cy="26" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="26" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="26" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="26" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="26" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="26" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="26" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="26" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="26" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="26" r="1" fill="rgba(94,62,37,0)"/>
- <circle cx="98" cy="26" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="99" cy="26" r="1" fill="rgba(98,66,40,0)"/>
- <circle cx="100" cy="26" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="101" cy="26" r="1" fill="rgba(98,66,39,0.282353)"/>
- <circle cx="102" cy="26" r="1" fill="rgba(98,65,39,0.996078)"/>
- <circle cx="103" cy="26" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="104" cy="26" r="1" fill="rgba(51,26,11,0.6)"/>
- <circle cx="105" cy="26" r="1" fill="rgba(0,0,0,0.435294)"/>
- <circle cx="106" cy="26" r="1" fill="rgba(7,0,0,0.454902)"/>
- <circle cx="107" cy="26" r="1" fill="rgba(28,10,3,0.223529)"/>
- <circle cx="108" cy="26" r="1" fill="rgba(40,18,7,0.00784314)"/>
- <circle cx="109" cy="26" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="110" cy="26" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="111" cy="26" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="112" cy="26" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="113" cy="26" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="114" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="26" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="27" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="27" r="1" fill="rgba(100,69,42,0)"/>
- <circle cx="19" cy="27" r="1" fill="rgba(63,36,17,0)"/>
- <circle cx="20" cy="27" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="21" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="22" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="23" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="24" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="25" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="26" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="27" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="28" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="29" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="30" cy="27" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="31" cy="27" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="32" cy="27" r="1" fill="rgba(43,20,7,0.278431)"/>
- <circle cx="33" cy="27" r="1" fill="rgba(45,21,8,0.639216)"/>
- <circle cx="34" cy="27" r="1" fill="rgba(68,38,19,0.780392)"/>
- <circle cx="35" cy="27" r="1" fill="rgba(85,52,29,0.941176)"/>
- <circle cx="36" cy="27" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="37" cy="27" r="1" fill="rgba(84,52,28,1)"/>
- <circle cx="38" cy="27" r="1" fill="rgba(83,50,27,0.929412)"/>
- <circle cx="39" cy="27" r="1" fill="rgba(82,49,26,0.615686)"/>
- <circle cx="40" cy="27" r="1" fill="rgba(78,46,24,0.254902)"/>
- <circle cx="41" cy="27" r="1" fill="rgba(75,42,22,0.0117647)"/>
- <circle cx="42" cy="27" r="1" fill="rgba(65,35,16,0)"/>
- <circle cx="43" cy="27" r="1" fill="rgba(51,21,7,0.286275)"/>
- <circle cx="44" cy="27" r="1" fill="rgba(55,24,9,0.92549)"/>
- <circle cx="45" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="46" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="47" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="48" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="54" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="55" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="57" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="58" cy="27" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="27" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="60" cy="27" r="1" fill="rgba(63,32,14,1)"/>
- <circle cx="61" cy="27" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="62" cy="27" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="63" cy="27" r="1" fill="rgba(55,26,11,1)"/>
- <circle cx="64" cy="27" r="1" fill="rgba(51,23,9,1)"/>
- <circle cx="65" cy="27" r="1" fill="rgba(49,22,9,1)"/>
- <circle cx="66" cy="27" r="1" fill="rgba(51,24,9,1)"/>
- <circle cx="67" cy="27" r="1" fill="rgba(39,20,9,1)"/>
- <circle cx="68" cy="27" r="1" fill="rgba(36,22,12,1)"/>
- <circle cx="69" cy="27" r="1" fill="rgba(43,27,16,1)"/>
- <circle cx="70" cy="27" r="1" fill="rgba(53,36,22,1)"/>
- <circle cx="71" cy="27" r="1" fill="rgba(53,38,25,1)"/>
- <circle cx="72" cy="27" r="1" fill="rgba(45,33,22,1)"/>
- <circle cx="73" cy="27" r="1" fill="rgba(50,38,26,1)"/>
- <circle cx="74" cy="27" r="1" fill="rgba(57,43,31,1)"/>
- <circle cx="75" cy="27" r="1" fill="rgba(62,48,36,1)"/>
- <circle cx="76" cy="27" r="1" fill="rgba(67,53,41,1)"/>
- <circle cx="77" cy="27" r="1" fill="rgba(69,56,43,1)"/>
- <circle cx="78" cy="27" r="1" fill="rgba(73,59,48,1)"/>
- <circle cx="79" cy="27" r="1" fill="rgba(75,64,53,1)"/>
- <circle cx="80" cy="27" r="1" fill="rgba(80,67,56,1)"/>
- <circle cx="81" cy="27" r="1" fill="rgba(82,70,62,1)"/>
- <circle cx="82" cy="27" r="1" fill="rgba(85,75,65,1)"/>
- <circle cx="83" cy="27" r="1" fill="rgba(87,78,71,1)"/>
- <circle cx="84" cy="27" r="1" fill="rgba(93,84,80,1)"/>
- <circle cx="85" cy="27" r="1" fill="rgba(90,78,70,1)"/>
- <circle cx="86" cy="27" r="1" fill="rgba(68,41,24,0.52549)"/>
- <circle cx="87" cy="27" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="88" cy="27" r="1" fill="rgba(61,29,13,0)"/>
- <circle cx="89" cy="27" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="27" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="27" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="27" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="27" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="27" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="27" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="27" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="97" cy="27" r="1" fill="rgba(95,62,37,0)"/>
- <circle cx="98" cy="27" r="1" fill="rgba(98,66,39,0.443137)"/>
- <circle cx="99" cy="27" r="1" fill="rgba(98,66,40,0.415686)"/>
- <circle cx="100" cy="27" r="1" fill="rgba(96,64,38,0.113725)"/>
- <circle cx="101" cy="27" r="1" fill="rgba(96,63,38,0.792157)"/>
- <circle cx="102" cy="27" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="103" cy="27" r="1" fill="rgba(84,52,29,0.843137)"/>
- <circle cx="104" cy="27" r="1" fill="rgba(15,4,0,0.427451)"/>
- <circle cx="105" cy="27" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="106" cy="27" r="1" fill="rgba(22,8,2,0.301961)"/>
- <circle cx="107" cy="27" r="1" fill="rgba(34,13,4,0.0509804)"/>
- <circle cx="108" cy="27" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="109" cy="27" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="110" cy="27" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="111" cy="27" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="112" cy="27" r="1" fill="rgba(36,15,5,0)"/>
- <circle cx="113" cy="27" r="1" fill="rgba(37,16,6,0)"/>
- <circle cx="114" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="27" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="28" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="28" r="1" fill="rgba(113,82,54,0)"/>
- <circle cx="19" cy="28" r="1" fill="rgba(112,81,54,0)"/>
- <circle cx="20" cy="28" r="1" fill="rgba(65,38,18,0)"/>
- <circle cx="21" cy="28" r="1" fill="rgba(37,16,5,0)"/>
- <circle cx="22" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="23" cy="28" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="24" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="25" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="26" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="27" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="28" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="29" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="30" cy="28" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="31" cy="28" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="32" cy="28" r="1" fill="rgba(37,17,6,0.145098)"/>
- <circle cx="33" cy="28" r="1" fill="rgba(0,0,0,0.407843)"/>
- <circle cx="34" cy="28" r="1" fill="rgba(10,2,0,0.388235)"/>
- <circle cx="35" cy="28" r="1" fill="rgba(55,30,13,0.247059)"/>
- <circle cx="36" cy="28" r="1" fill="rgba(82,49,27,0.498039)"/>
- <circle cx="37" cy="28" r="1" fill="rgba(82,50,27,0.898039)"/>
- <circle cx="38" cy="28" r="1" fill="rgba(80,47,25,1)"/>
- <circle cx="39" cy="28" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="40" cy="28" r="1" fill="rgba(76,44,22,0.996078)"/>
- <circle cx="41" cy="28" r="1" fill="rgba(73,41,20,0.772549)"/>
- <circle cx="42" cy="28" r="1" fill="rgba(64,33,15,0.568627)"/>
- <circle cx="43" cy="28" r="1" fill="rgba(104,85,73,0.964706)"/>
- <circle cx="44" cy="28" r="1" fill="rgba(102,81,66,1)"/>
- <circle cx="45" cy="28" r="1" fill="rgba(57,26,10,1)"/>
- <circle cx="46" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="47" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="48" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="54" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="55" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="57" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="58" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="60" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="28" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="28" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="64" cy="28" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="65" cy="28" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="66" cy="28" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="28" r="1" fill="rgba(46,23,11,1)"/>
- <circle cx="68" cy="28" r="1" fill="rgba(33,20,10,1)"/>
- <circle cx="69" cy="28" r="1" fill="rgba(39,24,13,1)"/>
- <circle cx="70" cy="28" r="1" fill="rgba(42,27,16,1)"/>
- <circle cx="71" cy="28" r="1" fill="rgba(45,31,19,1)"/>
- <circle cx="72" cy="28" r="1" fill="rgba(49,35,23,1)"/>
- <circle cx="73" cy="28" r="1" fill="rgba(54,39,27,1)"/>
- <circle cx="74" cy="28" r="1" fill="rgba(57,43,30,1)"/>
- <circle cx="75" cy="28" r="1" fill="rgba(61,46,33,1)"/>
- <circle cx="76" cy="28" r="1" fill="rgba(63,50,37,1)"/>
- <circle cx="77" cy="28" r="1" fill="rgba(68,54,42,1)"/>
- <circle cx="78" cy="28" r="1" fill="rgba(71,57,46,1)"/>
- <circle cx="79" cy="28" r="1" fill="rgba(74,61,49,1)"/>
- <circle cx="80" cy="28" r="1" fill="rgba(77,64,54,1)"/>
- <circle cx="81" cy="28" r="1" fill="rgba(81,68,58,1)"/>
- <circle cx="82" cy="28" r="1" fill="rgba(83,72,63,1)"/>
- <circle cx="83" cy="28" r="1" fill="rgba(86,75,68,1)"/>
- <circle cx="84" cy="28" r="1" fill="rgba(88,79,72,1)"/>
- <circle cx="85" cy="28" r="1" fill="rgba(94,85,81,1)"/>
- <circle cx="86" cy="28" r="1" fill="rgba(93,83,77,1)"/>
- <circle cx="87" cy="28" r="1" fill="rgba(70,45,29,0.6)"/>
- <circle cx="88" cy="28" r="1" fill="rgba(58,27,10,0.0235294)"/>
- <circle cx="89" cy="28" r="1" fill="rgba(63,32,14,0)"/>
- <circle cx="90" cy="28" r="1" fill="rgba(68,37,18,0)"/>
- <circle cx="91" cy="28" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="92" cy="28" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="93" cy="28" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="94" cy="28" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="95" cy="28" r="1" fill="rgba(85,53,30,0)"/>
- <circle cx="96" cy="28" r="1" fill="rgba(90,57,33,0.117647)"/>
- <circle cx="97" cy="28" r="1" fill="rgba(94,61,36,0.686275)"/>
- <circle cx="98" cy="28" r="1" fill="rgba(95,62,37,1)"/>
- <circle cx="99" cy="28" r="1" fill="rgba(95,63,37,1)"/>
- <circle cx="100" cy="28" r="1" fill="rgba(95,61,36,0.921569)"/>
- <circle cx="101" cy="28" r="1" fill="rgba(93,60,35,1)"/>
- <circle cx="102" cy="28" r="1" fill="rgba(94,61,35,0.992157)"/>
- <circle cx="103" cy="28" r="1" fill="rgba(54,28,12,0.509804)"/>
- <circle cx="104" cy="28" r="1" fill="rgba(0,0,0,0.435294)"/>
- <circle cx="105" cy="28" r="1" fill="rgba(19,6,1,0.360784)"/>
- <circle cx="106" cy="28" r="1" fill="rgba(36,15,5,0.0862745)"/>
- <circle cx="107" cy="28" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="108" cy="28" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="109" cy="28" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="110" cy="28" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="111" cy="28" r="1" fill="rgba(33,13,4,0)"/>
- <circle cx="112" cy="28" r="1" fill="rgba(34,14,4,0)"/>
- <circle cx="113" cy="28" r="1" fill="rgba(53,25,10,0)"/>
- <circle cx="114" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="28" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="29" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="29" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="29" r="1" fill="rgba(114,83,55,0)"/>
- <circle cx="20" cy="29" r="1" fill="rgba(107,77,48,0)"/>
- <circle cx="21" cy="29" r="1" fill="rgba(75,45,24,0)"/>
- <circle cx="22" cy="29" r="1" fill="rgba(42,20,7,0)"/>
- <circle cx="23" cy="29" r="1" fill="rgba(37,17,6,0)"/>
- <circle cx="24" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="25" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="26" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="27" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="28" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="29" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="30" cy="29" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="31" cy="29" r="1" fill="rgba(42,20,7,0)"/>
- <circle cx="32" cy="29" r="1" fill="rgba(36,16,5,0.0862745)"/>
- <circle cx="33" cy="29" r="1" fill="rgba(12,3,0,0.392157)"/>
- <circle cx="34" cy="29" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="35" cy="29" r="1" fill="rgba(36,15,5,0.176471)"/>
- <circle cx="36" cy="29" r="1" fill="rgba(55,27,11,0)"/>
- <circle cx="37" cy="29" r="1" fill="rgba(64,35,16,0.0901961)"/>
- <circle cx="38" cy="29" r="1" fill="rgba(69,38,19,0.513725)"/>
- <circle cx="39" cy="29" r="1" fill="rgba(74,42,21,0.94902)"/>
- <circle cx="40" cy="29" r="1" fill="rgba(71,40,20,1)"/>
- <circle cx="41" cy="29" r="1" fill="rgba(62,31,13,1)"/>
- <circle cx="42" cy="29" r="1" fill="rgba(94,70,52,1)"/>
- <circle cx="43" cy="29" r="1" fill="rgba(214,227,254,1)"/>
- <circle cx="44" cy="29" r="1" fill="rgba(164,164,175,1)"/>
- <circle cx="45" cy="29" r="1" fill="rgba(62,33,16,1)"/>
- <circle cx="46" cy="29" r="1" fill="rgba(58,27,11,1)"/>
- <circle cx="47" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="48" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="49" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="50" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="54" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="55" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="57" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="58" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="60" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="29" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="29" r="1" fill="rgba(46,23,10,1)"/>
- <circle cx="68" cy="29" r="1" fill="rgba(29,17,9,1)"/>
- <circle cx="69" cy="29" r="1" fill="rgba(36,22,11,1)"/>
- <circle cx="70" cy="29" r="1" fill="rgba(40,26,15,1)"/>
- <circle cx="71" cy="29" r="1" fill="rgba(45,29,17,1)"/>
- <circle cx="72" cy="29" r="1" fill="rgba(47,33,21,1)"/>
- <circle cx="73" cy="29" r="1" fill="rgba(51,37,24,1)"/>
- <circle cx="74" cy="29" r="1" fill="rgba(55,40,27,1)"/>
- <circle cx="75" cy="29" r="1" fill="rgba(58,43,31,1)"/>
- <circle cx="76" cy="29" r="1" fill="rgba(62,48,34,1)"/>
- <circle cx="77" cy="29" r="1" fill="rgba(64,51,39,1)"/>
- <circle cx="78" cy="29" r="1" fill="rgba(69,55,42,1)"/>
- <circle cx="79" cy="29" r="1" fill="rgba(71,59,47,1)"/>
- <circle cx="80" cy="29" r="1" fill="rgba(74,62,51,1)"/>
- <circle cx="81" cy="29" r="1" fill="rgba(78,66,56,1)"/>
- <circle cx="82" cy="29" r="1" fill="rgba(82,69,60,1)"/>
- <circle cx="83" cy="29" r="1" fill="rgba(84,73,64,1)"/>
- <circle cx="84" cy="29" r="1" fill="rgba(86,77,69,1)"/>
- <circle cx="85" cy="29" r="1" fill="rgba(90,80,74,1)"/>
- <circle cx="86" cy="29" r="1" fill="rgba(94,87,82,1)"/>
- <circle cx="87" cy="29" r="1" fill="rgba(95,85,80,1)"/>
- <circle cx="88" cy="29" r="1" fill="rgba(69,44,27,0.623529)"/>
- <circle cx="89" cy="29" r="1" fill="rgba(62,30,13,0.0509804)"/>
- <circle cx="90" cy="29" r="1" fill="rgba(68,37,18,0.0588235)"/>
- <circle cx="91" cy="29" r="1" fill="rgba(73,41,20,0.168627)"/>
- <circle cx="92" cy="29" r="1" fill="rgba(76,44,22,0.258824)"/>
- <circle cx="93" cy="29" r="1" fill="rgba(80,47,25,0.345098)"/>
- <circle cx="94" cy="29" r="1" fill="rgba(82,50,27,0.45098)"/>
- <circle cx="95" cy="29" r="1" fill="rgba(85,53,30,0.529412)"/>
- <circle cx="96" cy="29" r="1" fill="rgba(88,56,31,0.87451)"/>
- <circle cx="97" cy="29" r="1" fill="rgba(90,57,32,1)"/>
- <circle cx="98" cy="29" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="99" cy="29" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="100" cy="29" r="1" fill="rgba(91,57,33,1)"/>
- <circle cx="101" cy="29" r="1" fill="rgba(91,58,33,1)"/>
- <circle cx="102" cy="29" r="1" fill="rgba(81,49,26,0.72549)"/>
- <circle cx="103" cy="29" r="1" fill="rgba(21,7,1,0.364706)"/>
- <circle cx="104" cy="29" r="1" fill="rgba(4,1,0,0.454902)"/>
- <circle cx="105" cy="29" r="1" fill="rgba(37,17,6,0.207843)"/>
- <circle cx="106" cy="29" r="1" fill="rgba(43,20,7,0)"/>
- <circle cx="107" cy="29" r="1" fill="rgba(39,17,6,0)"/>
- <circle cx="108" cy="29" r="1" fill="rgba(39,17,6,0)"/>
- <circle cx="109" cy="29" r="1" fill="rgba(39,17,6,0)"/>
- <circle cx="110" cy="29" r="1" fill="rgba(39,17,6,0)"/>
- <circle cx="111" cy="29" r="1" fill="rgba(40,18,6,0)"/>
- <circle cx="112" cy="29" r="1" fill="rgba(54,25,10,0)"/>
- <circle cx="113" cy="29" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="114" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="29" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="30" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="30" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="30" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="30" r="1" fill="rgba(109,78,50,0)"/>
- <circle cx="21" cy="30" r="1" fill="rgba(108,76,48,0)"/>
- <circle cx="22" cy="30" r="1" fill="rgba(82,52,27,0)"/>
- <circle cx="23" cy="30" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="24" cy="30" r="1" fill="rgba(36,16,5,0)"/>
- <circle cx="25" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="26" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="27" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="28" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="29" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="30" cy="30" r="1" fill="rgba(37,18,6,0)"/>
- <circle cx="31" cy="30" r="1" fill="rgba(39,18,6,0)"/>
- <circle cx="32" cy="30" r="1" fill="rgba(37,17,6,0.0509804)"/>
- <circle cx="33" cy="30" r="1" fill="rgba(21,8,1,0.345098)"/>
- <circle cx="34" cy="30" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="35" cy="30" r="1" fill="rgba(26,10,3,0.301961)"/>
- <circle cx="36" cy="30" r="1" fill="rgba(34,12,3,0.0980392)"/>
- <circle cx="37" cy="30" r="1" fill="rgba(39,17,6,0.0823529)"/>
- <circle cx="38" cy="30" r="1" fill="rgba(51,27,11,0)"/>
- <circle cx="39" cy="30" r="1" fill="rgba(65,36,17,0.192157)"/>
- <circle cx="40" cy="30" r="1" fill="rgba(63,35,18,0.784314)"/>
- <circle cx="41" cy="30" r="1" fill="rgba(55,26,10,1)"/>
- <circle cx="42" cy="30" r="1" fill="rgba(90,65,48,1)"/>
- <circle cx="43" cy="30" r="1" fill="rgba(229,235,254,1)"/>
- <circle cx="44" cy="30" r="1" fill="rgba(204,212,236,1)"/>
- <circle cx="45" cy="30" r="1" fill="rgba(105,87,76,1)"/>
- <circle cx="46" cy="30" r="1" fill="rgba(57,26,11,1)"/>
- <circle cx="47" cy="30" r="1" fill="rgba(58,26,10,1)"/>
- <circle cx="48" cy="30" r="1" fill="rgba(59,28,12,1)"/>
- <circle cx="49" cy="30" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="50" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="51" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="52" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="53" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="54" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="55" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="56" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="57" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="58" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="60" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="30" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="30" r="1" fill="rgba(46,23,10,1)"/>
- <circle cx="68" cy="30" r="1" fill="rgba(29,15,8,1)"/>
- <circle cx="69" cy="30" r="1" fill="rgba(31,19,10,1)"/>
- <circle cx="70" cy="30" r="1" fill="rgba(36,23,13,1)"/>
- <circle cx="71" cy="30" r="1" fill="rgba(42,26,16,1)"/>
- <circle cx="72" cy="30" r="1" fill="rgba(46,30,19,1)"/>
- <circle cx="73" cy="30" r="1" fill="rgba(49,34,22,1)"/>
- <circle cx="74" cy="30" r="1" fill="rgba(51,38,26,1)"/>
- <circle cx="75" cy="30" r="1" fill="rgba(57,42,29,1)"/>
- <circle cx="76" cy="30" r="1" fill="rgba(61,45,33,1)"/>
- <circle cx="77" cy="30" r="1" fill="rgba(63,48,37,1)"/>
- <circle cx="78" cy="30" r="1" fill="rgba(67,53,40,1)"/>
- <circle cx="79" cy="30" r="1" fill="rgba(70,56,45,1)"/>
- <circle cx="80" cy="30" r="1" fill="rgba(73,60,48,1)"/>
- <circle cx="81" cy="30" r="1" fill="rgba(75,64,53,1)"/>
- <circle cx="82" cy="30" r="1" fill="rgba(80,67,57,1)"/>
- <circle cx="83" cy="30" r="1" fill="rgba(82,71,61,1)"/>
- <circle cx="84" cy="30" r="1" fill="rgba(85,74,67,1)"/>
- <circle cx="85" cy="30" r="1" fill="rgba(87,78,70,1)"/>
- <circle cx="86" cy="30" r="1" fill="rgba(91,81,76,1)"/>
- <circle cx="87" cy="30" r="1" fill="rgba(96,89,86,1)"/>
- <circle cx="88" cy="30" r="1" fill="rgba(86,72,60,1)"/>
- <circle cx="89" cy="30" r="1" fill="rgba(63,32,14,0.870588)"/>
- <circle cx="90" cy="30" r="1" fill="rgba(67,36,16,0.937255)"/>
- <circle cx="91" cy="30" r="1" fill="rgba(71,40,20,0.972549)"/>
- <circle cx="92" cy="30" r="1" fill="rgba(74,42,22,1)"/>
- <circle cx="93" cy="30" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="94" cy="30" r="1" fill="rgba(81,48,25,1)"/>
- <circle cx="95" cy="30" r="1" fill="rgba(83,50,27,1)"/>
- <circle cx="96" cy="30" r="1" fill="rgba(84,52,28,1)"/>
- <circle cx="97" cy="30" r="1" fill="rgba(85,53,29,1)"/>
- <circle cx="98" cy="30" r="1" fill="rgba(87,54,30,1)"/>
- <circle cx="99" cy="30" r="1" fill="rgba(88,56,31,0.976471)"/>
- <circle cx="100" cy="30" r="1" fill="rgba(88,55,31,0.968627)"/>
- <circle cx="101" cy="30" r="1" fill="rgba(86,53,30,0.788235)"/>
- <circle cx="102" cy="30" r="1" fill="rgba(50,25,10,0.305882)"/>
- <circle cx="103" cy="30" r="1" fill="rgba(0,0,0,0.439216)"/>
- <circle cx="104" cy="30" r="1" fill="rgba(17,5,1,0.392157)"/>
- <circle cx="105" cy="30" r="1" fill="rgba(47,23,9,0.0862745)"/>
- <circle cx="106" cy="30" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="107" cy="30" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="108" cy="30" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="109" cy="30" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="110" cy="30" r="1" fill="rgba(47,23,10,0)"/>
- <circle cx="111" cy="30" r="1" fill="rgba(55,27,11,0)"/>
- <circle cx="112" cy="30" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="113" cy="30" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="30" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="31" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="31" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="31" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="31" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="31" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="31" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="23" cy="31" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="24" cy="31" r="1" fill="rgba(59,33,14,0)"/>
- <circle cx="25" cy="31" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="26" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="27" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="28" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="29" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="30" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="31" cy="31" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="32" cy="31" r="1" fill="rgba(46,22,8,0.0117647)"/>
- <circle cx="33" cy="31" r="1" fill="rgba(29,11,3,0.262745)"/>
- <circle cx="34" cy="31" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="35" cy="31" r="1" fill="rgba(7,1,0,0.435294)"/>
- <circle cx="36" cy="31" r="1" fill="rgba(10,2,0,0.4)"/>
- <circle cx="37" cy="31" r="1" fill="rgba(15,4,0,0.4)"/>
- <circle cx="38" cy="31" r="1" fill="rgba(37,17,6,0.223529)"/>
- <circle cx="39" cy="31" r="1" fill="rgba(45,27,12,0)"/>
- <circle cx="40" cy="31" r="1" fill="rgba(77,35,14,0.00784314)"/>
- <circle cx="41" cy="31" r="1" fill="rgba(53,25,10,0.694118)"/>
- <circle cx="42" cy="31" r="1" fill="rgba(31,13,5,1)"/>
- <circle cx="43" cy="31" r="1" fill="rgba(160,150,148,1)"/>
- <circle cx="44" cy="31" r="1" fill="rgba(243,253,254,1)"/>
- <circle cx="45" cy="31" r="1" fill="rgba(186,189,208,1)"/>
- <circle cx="46" cy="31" r="1" fill="rgba(114,98,88,1)"/>
- <circle cx="47" cy="31" r="1" fill="rgba(75,48,30,1)"/>
- <circle cx="48" cy="31" r="1" fill="rgba(61,32,15,1)"/>
- <circle cx="49" cy="31" r="1" fill="rgba(55,26,11,1)"/>
- <circle cx="50" cy="31" r="1" fill="rgba(57,26,11,1)"/>
- <circle cx="51" cy="31" r="1" fill="rgba(57,26,11,1)"/>
- <circle cx="52" cy="31" r="1" fill="rgba(58,27,11,1)"/>
- <circle cx="53" cy="31" r="1" fill="rgba(58,27,11,1)"/>
- <circle cx="54" cy="31" r="1" fill="rgba(58,28,11,1)"/>
- <circle cx="55" cy="31" r="1" fill="rgba(59,28,11,1)"/>
- <circle cx="56" cy="31" r="1" fill="rgba(59,28,12,1)"/>
- <circle cx="57" cy="31" r="1" fill="rgba(59,29,12,1)"/>
- <circle cx="58" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="59" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="60" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="31" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="31" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="67" cy="31" r="1" fill="rgba(46,23,10,1)"/>
- <circle cx="68" cy="31" r="1" fill="rgba(28,14,6,1)"/>
- <circle cx="69" cy="31" r="1" fill="rgba(29,16,8,1)"/>
- <circle cx="70" cy="31" r="1" fill="rgba(34,21,10,1)"/>
- <circle cx="71" cy="31" r="1" fill="rgba(37,24,14,1)"/>
- <circle cx="72" cy="31" r="1" fill="rgba(43,28,16,1)"/>
- <circle cx="73" cy="31" r="1" fill="rgba(46,31,20,1)"/>
- <circle cx="74" cy="31" r="1" fill="rgba(50,35,23,1)"/>
- <circle cx="75" cy="31" r="1" fill="rgba(53,39,27,1)"/>
- <circle cx="76" cy="31" r="1" fill="rgba(58,43,30,1)"/>
- <circle cx="77" cy="31" r="1" fill="rgba(61,47,33,1)"/>
- <circle cx="78" cy="31" r="1" fill="rgba(63,50,37,1)"/>
- <circle cx="79" cy="31" r="1" fill="rgba(68,53,42,1)"/>
- <circle cx="80" cy="31" r="1" fill="rgba(71,57,46,1)"/>
- <circle cx="81" cy="31" r="1" fill="rgba(74,61,50,1)"/>
- <circle cx="82" cy="31" r="1" fill="rgba(76,65,54,1)"/>
- <circle cx="83" cy="31" r="1" fill="rgba(81,69,58,1)"/>
- <circle cx="84" cy="31" r="1" fill="rgba(84,72,63,1)"/>
- <circle cx="85" cy="31" r="1" fill="rgba(86,76,68,1)"/>
- <circle cx="86" cy="31" r="1" fill="rgba(90,79,73,1)"/>
- <circle cx="87" cy="31" r="1" fill="rgba(94,87,83,1)"/>
- <circle cx="88" cy="31" r="1" fill="rgba(84,66,53,1)"/>
- <circle cx="89" cy="31" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="90" cy="31" r="1" fill="rgba(61,32,14,1)"/>
- <circle cx="91" cy="31" r="1" fill="rgba(65,36,17,1)"/>
- <circle cx="92" cy="31" r="1" fill="rgba(70,39,19,1)"/>
- <circle cx="93" cy="31" r="1" fill="rgba(74,42,21,0.984314)"/>
- <circle cx="94" cy="31" r="1" fill="rgba(76,44,22,0.839216)"/>
- <circle cx="95" cy="31" r="1" fill="rgba(80,47,24,0.643137)"/>
- <circle cx="96" cy="31" r="1" fill="rgba(83,51,27,0.486275)"/>
- <circle cx="97" cy="31" r="1" fill="rgba(85,52,29,0.364706)"/>
- <circle cx="98" cy="31" r="1" fill="rgba(81,48,26,0.27451)"/>
- <circle cx="99" cy="31" r="1" fill="rgba(69,39,19,0.180392)"/>
- <circle cx="100" cy="31" r="1" fill="rgba(70,40,20,0.152941)"/>
- <circle cx="101" cy="31" r="1" fill="rgba(61,33,15,0.0901961)"/>
- <circle cx="102" cy="31" r="1" fill="rgba(22,8,2,0.317647)"/>
- <circle cx="103" cy="31" r="1" fill="rgba(0,0,0,0.482353)"/>
- <circle cx="104" cy="31" r="1" fill="rgba(28,11,3,0.286275)"/>
- <circle cx="105" cy="31" r="1" fill="rgba(47,24,9,0.0156863)"/>
- <circle cx="106" cy="31" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="107" cy="31" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="108" cy="31" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="109" cy="31" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="110" cy="31" r="1" fill="rgba(53,27,11,0)"/>
- <circle cx="111" cy="31" r="1" fill="rgba(62,30,14,0)"/>
- <circle cx="112" cy="31" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="113" cy="31" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="31" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="32" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="32" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="32" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="32" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="32" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="32" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="32" r="1" fill="rgba(95,62,37,0)"/>
- <circle cx="24" cy="32" r="1" fill="rgba(90,56,32,0)"/>
- <circle cx="25" cy="32" r="1" fill="rgba(57,30,13,0)"/>
- <circle cx="26" cy="32" r="1" fill="rgba(40,18,6,0)"/>
- <circle cx="27" cy="32" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="28" cy="32" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="29" cy="32" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="30" cy="32" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="31" cy="32" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="32" cy="32" r="1" fill="rgba(45,20,8,0)"/>
- <circle cx="33" cy="32" r="1" fill="rgba(36,16,5,0.168627)"/>
- <circle cx="34" cy="32" r="1" fill="rgba(10,2,0,0.439216)"/>
- <circle cx="35" cy="32" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="36" cy="32" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="37" cy="32" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="38" cy="32" r="1" fill="rgba(0,0,0,0.384314)"/>
- <circle cx="39" cy="32" r="1" fill="rgba(106,30,4,0.298039)"/>
- <circle cx="40" cy="32" r="1" fill="rgba(241,71,0,0.384314)"/>
- <circle cx="41" cy="32" r="1" fill="rgba(197,60,2,0.372549)"/>
- <circle cx="42" cy="32" r="1" fill="rgba(19,0,0,0.886275)"/>
- <circle cx="43" cy="32" r="1" fill="rgba(34,25,16,1)"/>
- <circle cx="44" cy="32" r="1" fill="rgba(194,190,197,1)"/>
- <circle cx="45" cy="32" r="1" fill="rgba(254,254,254,1)"/>
- <circle cx="46" cy="32" r="1" fill="rgba(221,223,236,1)"/>
- <circle cx="47" cy="32" r="1" fill="rgba(179,174,181,1)"/>
- <circle cx="48" cy="32" r="1" fill="rgba(140,126,119,1)"/>
- <circle cx="49" cy="32" r="1" fill="rgba(112,92,79,1)"/>
- <circle cx="50" cy="32" r="1" fill="rgba(93,69,54,1)"/>
- <circle cx="51" cy="32" r="1" fill="rgba(83,58,40,1)"/>
- <circle cx="52" cy="32" r="1" fill="rgba(78,52,33,1)"/>
- <circle cx="53" cy="32" r="1" fill="rgba(73,45,27,1)"/>
- <circle cx="54" cy="32" r="1" fill="rgba(73,46,28,1)"/>
- <circle cx="55" cy="32" r="1" fill="rgba(73,45,26,1)"/>
- <circle cx="56" cy="32" r="1" fill="rgba(74,46,27,1)"/>
- <circle cx="57" cy="32" r="1" fill="rgba(70,42,24,1)"/>
- <circle cx="58" cy="32" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="59" cy="32" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="60" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="32" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="32" r="1" fill="rgba(46,22,9,1)"/>
- <circle cx="68" cy="32" r="1" fill="rgba(26,13,5,1)"/>
- <circle cx="69" cy="32" r="1" fill="rgba(26,15,7,1)"/>
- <circle cx="70" cy="32" r="1" fill="rgba(33,18,9,1)"/>
- <circle cx="71" cy="32" r="1" fill="rgba(36,22,12,1)"/>
- <circle cx="72" cy="32" r="1" fill="rgba(40,26,14,1)"/>
- <circle cx="73" cy="32" r="1" fill="rgba(45,29,18,1)"/>
- <circle cx="74" cy="32" r="1" fill="rgba(47,33,20,1)"/>
- <circle cx="75" cy="32" r="1" fill="rgba(51,36,24,1)"/>
- <circle cx="76" cy="32" r="1" fill="rgba(54,40,28,1)"/>
- <circle cx="77" cy="32" r="1" fill="rgba(59,44,31,1)"/>
- <circle cx="78" cy="32" r="1" fill="rgba(62,47,36,1)"/>
- <circle cx="79" cy="32" r="1" fill="rgba(64,52,38,1)"/>
- <circle cx="80" cy="32" r="1" fill="rgba(69,55,43,1)"/>
- <circle cx="81" cy="32" r="1" fill="rgba(71,58,47,1)"/>
- <circle cx="82" cy="32" r="1" fill="rgba(75,63,51,1)"/>
- <circle cx="83" cy="32" r="1" fill="rgba(77,66,56,1)"/>
- <circle cx="84" cy="32" r="1" fill="rgba(82,70,59,1)"/>
- <circle cx="85" cy="32" r="1" fill="rgba(85,73,65,1)"/>
- <circle cx="86" cy="32" r="1" fill="rgba(88,78,72,1)"/>
- <circle cx="87" cy="32" r="1" fill="rgba(91,80,72,1)"/>
- <circle cx="88" cy="32" r="1" fill="rgba(55,33,18,1)"/>
- <circle cx="89" cy="32" r="1" fill="rgba(39,13,4,1)"/>
- <circle cx="90" cy="32" r="1" fill="rgba(64,26,10,0.996078)"/>
- <circle cx="91" cy="32" r="1" fill="rgba(70,34,15,0.8)"/>
- <circle cx="92" cy="32" r="1" fill="rgba(58,36,17,0.486275)"/>
- <circle cx="93" cy="32" r="1" fill="rgba(73,41,21,0.184314)"/>
- <circle cx="94" cy="32" r="1" fill="rgba(78,45,23,0.0313725)"/>
- <circle cx="95" cy="32" r="1" fill="rgba(80,47,24,0)"/>
- <circle cx="96" cy="32" r="1" fill="rgba(68,38,18,0)"/>
- <circle cx="97" cy="32" r="1" fill="rgba(62,33,15,0)"/>
- <circle cx="98" cy="32" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="99" cy="32" r="1" fill="rgba(42,20,7,0.0509804)"/>
- <circle cx="100" cy="32" r="1" fill="rgba(49,24,10,0.0235294)"/>
- <circle cx="101" cy="32" r="1" fill="rgba(45,21,8,0.12549)"/>
- <circle cx="102" cy="32" r="1" fill="rgba(10,2,0,0.435294)"/>
- <circle cx="103" cy="32" r="1" fill="rgba(7,1,0,0.443137)"/>
- <circle cx="104" cy="32" r="1" fill="rgba(37,17,6,0.164706)"/>
- <circle cx="105" cy="32" r="1" fill="rgba(46,24,9,0)"/>
- <circle cx="106" cy="32" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="107" cy="32" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="108" cy="32" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="109" cy="32" r="1" fill="rgba(47,24,9,0)"/>
- <circle cx="110" cy="32" r="1" fill="rgba(59,30,13,0)"/>
- <circle cx="111" cy="32" r="1" fill="rgba(63,31,14,0)"/>
- <circle cx="112" cy="32" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="113" cy="32" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="114" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="32" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="33" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="33" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="33" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="33" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="33" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="33" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="33" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="33" r="1" fill="rgba(90,57,33,0)"/>
- <circle cx="25" cy="33" r="1" fill="rgba(84,52,28,0)"/>
- <circle cx="26" cy="33" r="1" fill="rgba(57,29,13,0)"/>
- <circle cx="27" cy="33" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="28" cy="33" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="29" cy="33" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="30" cy="33" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="31" cy="33" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="32" cy="33" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="33" cy="33" r="1" fill="rgba(46,22,9,0.0470588)"/>
- <circle cx="34" cy="33" r="1" fill="rgba(28,11,3,0.278431)"/>
- <circle cx="35" cy="33" r="1" fill="rgba(10,2,0,0.431373)"/>
- <circle cx="36" cy="33" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="37" cy="33" r="1" fill="rgba(0,0,0,0.439216)"/>
- <circle cx="38" cy="33" r="1" fill="rgba(83,14,0,0.552941)"/>
- <circle cx="39" cy="33" r="1" fill="rgba(236,69,1,0.933333)"/>
- <circle cx="40" cy="33" r="1" fill="rgba(252,80,1,1)"/>
- <circle cx="41" cy="33" r="1" fill="rgba(255,85,0,0.988235)"/>
- <circle cx="42" cy="33" r="1" fill="rgba(208,65,0,0.972549)"/>
- <circle cx="43" cy="33" r="1" fill="rgba(75,11,0,1)"/>
- <circle cx="44" cy="33" r="1" fill="rgba(37,30,22,1)"/>
- <circle cx="45" cy="33" r="1" fill="rgba(210,210,220,1)"/>
- <circle cx="46" cy="33" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="47" cy="33" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="48" cy="33" r="1" fill="rgba(242,243,249,1)"/>
- <circle cx="49" cy="33" r="1" fill="rgba(222,222,228,1)"/>
- <circle cx="50" cy="33" r="1" fill="rgba(203,197,199,1)"/>
- <circle cx="51" cy="33" r="1" fill="rgba(183,174,169,1)"/>
- <circle cx="52" cy="33" r="1" fill="rgba(165,152,145,1)"/>
- <circle cx="53" cy="33" r="1" fill="rgba(147,130,119,1)"/>
- <circle cx="54" cy="33" r="1" fill="rgba(131,112,98,1)"/>
- <circle cx="55" cy="33" r="1" fill="rgba(113,92,77,1)"/>
- <circle cx="56" cy="33" r="1" fill="rgba(96,73,56,1)"/>
- <circle cx="57" cy="33" r="1" fill="rgba(87,62,43,1)"/>
- <circle cx="58" cy="33" r="1" fill="rgba(73,44,25,1)"/>
- <circle cx="59" cy="33" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="60" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="61" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="33" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="33" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="67" cy="33" r="1" fill="rgba(46,22,8,1)"/>
- <circle cx="68" cy="33" r="1" fill="rgba(26,11,4,1)"/>
- <circle cx="69" cy="33" r="1" fill="rgba(24,12,5,1)"/>
- <circle cx="70" cy="33" r="1" fill="rgba(29,15,8,1)"/>
- <circle cx="71" cy="33" r="1" fill="rgba(33,20,10,1)"/>
- <circle cx="72" cy="33" r="1" fill="rgba(36,23,13,1)"/>
- <circle cx="73" cy="33" r="1" fill="rgba(42,27,16,1)"/>
- <circle cx="74" cy="33" r="1" fill="rgba(46,31,19,1)"/>
- <circle cx="75" cy="33" r="1" fill="rgba(50,34,22,1)"/>
- <circle cx="76" cy="33" r="1" fill="rgba(53,38,25,1)"/>
- <circle cx="77" cy="33" r="1" fill="rgba(57,42,29,1)"/>
- <circle cx="78" cy="33" r="1" fill="rgba(61,45,33,1)"/>
- <circle cx="79" cy="33" r="1" fill="rgba(63,49,37,1)"/>
- <circle cx="80" cy="33" r="1" fill="rgba(65,53,41,1)"/>
- <circle cx="81" cy="33" r="1" fill="rgba(70,57,44,1)"/>
- <circle cx="82" cy="33" r="1" fill="rgba(73,60,49,1)"/>
- <circle cx="83" cy="33" r="1" fill="rgba(76,63,53,1)"/>
- <circle cx="84" cy="33" r="1" fill="rgba(78,67,57,1)"/>
- <circle cx="85" cy="33" r="1" fill="rgba(82,72,63,1)"/>
- <circle cx="86" cy="33" r="1" fill="rgba(88,78,71,1)"/>
- <circle cx="87" cy="33" r="1" fill="rgba(58,41,27,1)"/>
- <circle cx="88" cy="33" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="89" cy="33" r="1" fill="rgba(159,95,60,1)"/>
- <circle cx="90" cy="33" r="1" fill="rgba(205,124,85,0.988235)"/>
- <circle cx="91" cy="33" r="1" fill="rgba(187,50,16,0.392157)"/>
- <circle cx="92" cy="33" r="1" fill="rgba(142,45,16,0)"/>
- <circle cx="93" cy="33" r="1" fill="rgba(59,28,11,0)"/>
- <circle cx="94" cy="33" r="1" fill="rgba(57,30,13,0)"/>
- <circle cx="95" cy="33" r="1" fill="rgba(40,17,6,0)"/>
- <circle cx="96" cy="33" r="1" fill="rgba(19,6,1,0)"/>
- <circle cx="97" cy="33" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="98" cy="33" r="1" fill="rgba(37,17,6,0.141176)"/>
- <circle cx="99" cy="33" r="1" fill="rgba(21,7,1,0.356863)"/>
- <circle cx="100" cy="33" r="1" fill="rgba(28,11,3,0.329412)"/>
- <circle cx="101" cy="33" r="1" fill="rgba(24,9,2,0.341176)"/>
- <circle cx="102" cy="33" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="103" cy="33" r="1" fill="rgba(21,6,1,0.368627)"/>
- <circle cx="104" cy="33" r="1" fill="rgba(45,20,8,0.0705882)"/>
- <circle cx="105" cy="33" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="106" cy="33" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="107" cy="33" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="108" cy="33" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="109" cy="33" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="110" cy="33" r="1" fill="rgba(49,21,9,0)"/>
- <circle cx="111" cy="33" r="1" fill="rgba(47,22,8,0)"/>
- <circle cx="112" cy="33" r="1" fill="rgba(49,22,9,0)"/>
- <circle cx="113" cy="33" r="1" fill="rgba(58,29,13,0)"/>
- <circle cx="114" cy="33" r="1" fill="rgba(61,30,13,0.188235)"/>
- <circle cx="115" cy="33" r="1" fill="rgba(61,30,13,0.470588)"/>
- <circle cx="116" cy="33" r="1" fill="rgba(61,30,13,0.0431373)"/>
- <circle cx="117" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="33" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="34" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="34" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="34" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="34" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="34" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="34" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="34" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="34" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="34" r="1" fill="rgba(85,52,29,0)"/>
- <circle cx="26" cy="34" r="1" fill="rgba(77,46,24,0)"/>
- <circle cx="27" cy="34" r="1" fill="rgba(61,32,14,0)"/>
- <circle cx="28" cy="34" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="29" cy="34" r="1" fill="rgba(47,24,10,0)"/>
- <circle cx="30" cy="34" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="31" cy="34" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="32" cy="34" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="33" cy="34" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="34" cy="34" r="1" fill="rgba(39,18,7,0.0431373)"/>
- <circle cx="35" cy="34" r="1" fill="rgba(26,12,4,0.14902)"/>
- <circle cx="36" cy="34" r="1" fill="rgba(0,4,2,0.223529)"/>
- <circle cx="37" cy="34" r="1" fill="rgba(81,18,1,0.419608)"/>
- <circle cx="38" cy="34" r="1" fill="rgba(231,71,3,0.92549)"/>
- <circle cx="39" cy="34" r="1" fill="rgba(254,87,4,1)"/>
- <circle cx="40" cy="34" r="1" fill="rgba(247,89,4,1)"/>
- <circle cx="41" cy="34" r="1" fill="rgba(248,90,3,1)"/>
- <circle cx="42" cy="34" r="1" fill="rgba(255,94,2,1)"/>
- <circle cx="43" cy="34" r="1" fill="rgba(240,84,1,1)"/>
- <circle cx="44" cy="34" r="1" fill="rgba(107,20,0,1)"/>
- <circle cx="45" cy="34" r="1" fill="rgba(55,45,33,1)"/>
- <circle cx="46" cy="34" r="1" fill="rgba(216,214,217,1)"/>
- <circle cx="47" cy="34" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="48" cy="34" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="49" cy="34" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="50" cy="34" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="51" cy="34" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="52" cy="34" r="1" fill="rgba(251,250,250,1)"/>
- <circle cx="53" cy="34" r="1" fill="rgba(239,235,235,1)"/>
- <circle cx="54" cy="34" r="1" fill="rgba(209,200,192,1)"/>
- <circle cx="55" cy="34" r="1" fill="rgba(173,155,142,1)"/>
- <circle cx="56" cy="34" r="1" fill="rgba(121,99,82,1)"/>
- <circle cx="57" cy="34" r="1" fill="rgba(91,66,48,1)"/>
- <circle cx="58" cy="34" r="1" fill="rgba(83,56,37,1)"/>
- <circle cx="59" cy="34" r="1" fill="rgba(68,38,20,1)"/>
- <circle cx="60" cy="34" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="61" cy="34" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="62" cy="34" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="34" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="34" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="34" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="34" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="67" cy="34" r="1" fill="rgba(46,21,8,1)"/>
- <circle cx="68" cy="34" r="1" fill="rgba(22,10,3,1)"/>
- <circle cx="69" cy="34" r="1" fill="rgba(21,9,3,1)"/>
- <circle cx="70" cy="34" r="1" fill="rgba(26,13,6,1)"/>
- <circle cx="71" cy="34" r="1" fill="rgba(31,17,8,1)"/>
- <circle cx="72" cy="34" r="1" fill="rgba(34,20,11,1)"/>
- <circle cx="73" cy="34" r="1" fill="rgba(37,25,13,1)"/>
- <circle cx="74" cy="34" r="1" fill="rgba(42,28,17,1)"/>
- <circle cx="75" cy="34" r="1" fill="rgba(47,32,20,1)"/>
- <circle cx="76" cy="34" r="1" fill="rgba(50,36,23,1)"/>
- <circle cx="77" cy="34" r="1" fill="rgba(53,39,27,1)"/>
- <circle cx="78" cy="34" r="1" fill="rgba(58,43,30,1)"/>
- <circle cx="79" cy="34" r="1" fill="rgba(62,46,34,1)"/>
- <circle cx="80" cy="34" r="1" fill="rgba(64,50,37,1)"/>
- <circle cx="81" cy="34" r="1" fill="rgba(68,54,42,1)"/>
- <circle cx="82" cy="34" r="1" fill="rgba(71,57,46,1)"/>
- <circle cx="83" cy="34" r="1" fill="rgba(74,61,50,1)"/>
- <circle cx="84" cy="34" r="1" fill="rgba(76,65,55,1)"/>
- <circle cx="85" cy="34" r="1" fill="rgba(84,73,64,1)"/>
- <circle cx="86" cy="34" r="1" fill="rgba(59,48,34,1)"/>
- <circle cx="87" cy="34" r="1" fill="rgba(22,0,0,1)"/>
- <circle cx="88" cy="34" r="1" fill="rgba(177,101,64,1)"/>
- <circle cx="89" cy="34" r="1" fill="rgba(253,216,196,1)"/>
- <circle cx="90" cy="34" r="1" fill="rgba(221,97,53,1)"/>
- <circle cx="91" cy="34" r="1" fill="rgba(210,56,17,0.945098)"/>
- <circle cx="92" cy="34" r="1" fill="rgba(200,53,17,0.258824)"/>
- <circle cx="93" cy="34" r="1" fill="rgba(42,13,4,0)"/>
- <circle cx="94" cy="34" r="1" fill="rgba(28,12,4,0)"/>
- <circle cx="95" cy="34" r="1" fill="rgba(21,6,1,0)"/>
- <circle cx="96" cy="34" r="1" fill="rgba(21,7,1,0.00784314)"/>
- <circle cx="97" cy="34" r="1" fill="rgba(37,16,6,0.137255)"/>
- <circle cx="98" cy="34" r="1" fill="rgba(21,6,1,0.376471)"/>
- <circle cx="99" cy="34" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="100" cy="34" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="101" cy="34" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="102" cy="34" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="103" cy="34" r="1" fill="rgba(31,12,4,0.270588)"/>
- <circle cx="104" cy="34" r="1" fill="rgba(47,24,9,0.0156863)"/>
- <circle cx="105" cy="34" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="106" cy="34" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="107" cy="34" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="108" cy="34" r="1" fill="rgba(47,22,9,0)"/>
- <circle cx="109" cy="34" r="1" fill="rgba(34,14,5,0)"/>
- <circle cx="110" cy="34" r="1" fill="rgba(31,12,4,0)"/>
- <circle cx="111" cy="34" r="1" fill="rgba(33,12,4,0)"/>
- <circle cx="112" cy="34" r="1" fill="rgba(33,12,4,0)"/>
- <circle cx="113" cy="34" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="114" cy="34" r="1" fill="rgba(59,29,13,0.447059)"/>
- <circle cx="115" cy="34" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="116" cy="34" r="1" fill="rgba(62,31,14,0.0980392)"/>
- <circle cx="117" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="34" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="35" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="35" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="35" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="35" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="35" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="35" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="35" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="35" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="35" r="1" fill="rgba(84,51,28,0)"/>
- <circle cx="26" cy="35" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="27" cy="35" r="1" fill="rgba(74,42,21,0)"/>
- <circle cx="28" cy="35" r="1" fill="rgba(67,34,16,0)"/>
- <circle cx="29" cy="35" r="1" fill="rgba(55,28,11,0)"/>
- <circle cx="30" cy="35" r="1" fill="rgba(50,24,10,0)"/>
- <circle cx="31" cy="35" r="1" fill="rgba(37,21,10,0)"/>
- <circle cx="32" cy="35" r="1" fill="rgba(24,18,10,0)"/>
- <circle cx="33" cy="35" r="1" fill="rgba(24,18,9,0)"/>
- <circle cx="34" cy="35" r="1" fill="rgba(17,13,6,0)"/>
- <circle cx="35" cy="35" r="1" fill="rgba(43,18,6,0)"/>
- <circle cx="36" cy="35" r="1" fill="rgba(113,36,6,0.0392157)"/>
- <circle cx="37" cy="35" r="1" fill="rgba(233,80,6,0.772549)"/>
- <circle cx="38" cy="35" r="1" fill="rgba(254,94,7,1)"/>
- <circle cx="39" cy="35" r="1" fill="rgba(248,96,8,1)"/>
- <circle cx="40" cy="35" r="1" fill="rgba(248,99,8,1)"/>
- <circle cx="41" cy="35" r="1" fill="rgba(249,99,7,1)"/>
- <circle cx="42" cy="35" r="1" fill="rgba(248,98,6,1)"/>
- <circle cx="43" cy="35" r="1" fill="rgba(255,98,4,1)"/>
- <circle cx="44" cy="35" r="1" fill="rgba(248,90,1,1)"/>
- <circle cx="45" cy="35" r="1" fill="rgba(96,18,0,1)"/>
- <circle cx="46" cy="35" r="1" fill="rgba(50,37,26,1)"/>
- <circle cx="47" cy="35" r="1" fill="rgba(214,205,200,1)"/>
- <circle cx="48" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="49" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="50" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="51" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="52" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="53" cy="35" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="35" r="1" fill="rgba(236,232,229,1)"/>
- <circle cx="55" cy="35" r="1" fill="rgba(202,190,181,1)"/>
- <circle cx="56" cy="35" r="1" fill="rgba(162,142,126,1)"/>
- <circle cx="57" cy="35" r="1" fill="rgba(110,86,68,1)"/>
- <circle cx="58" cy="35" r="1" fill="rgba(86,61,43,1)"/>
- <circle cx="59" cy="35" r="1" fill="rgba(77,50,30,1)"/>
- <circle cx="60" cy="35" r="1" fill="rgba(63,32,15,1)"/>
- <circle cx="61" cy="35" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="62" cy="35" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="35" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="35" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="35" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="35" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="35" r="1" fill="rgba(46,21,8,1)"/>
- <circle cx="68" cy="35" r="1" fill="rgba(19,8,2,1)"/>
- <circle cx="69" cy="35" r="1" fill="rgba(17,7,3,1)"/>
- <circle cx="70" cy="35" r="1" fill="rgba(21,11,4,1)"/>
- <circle cx="71" cy="35" r="1" fill="rgba(28,14,7,1)"/>
- <circle cx="72" cy="35" r="1" fill="rgba(33,18,9,1)"/>
- <circle cx="73" cy="35" r="1" fill="rgba(36,22,12,1)"/>
- <circle cx="74" cy="35" r="1" fill="rgba(40,25,15,1)"/>
- <circle cx="75" cy="35" r="1" fill="rgba(45,30,18,1)"/>
- <circle cx="76" cy="35" r="1" fill="rgba(49,33,22,1)"/>
- <circle cx="77" cy="35" r="1" fill="rgba(51,36,24,1)"/>
- <circle cx="78" cy="35" r="1" fill="rgba(54,41,28,1)"/>
- <circle cx="79" cy="35" r="1" fill="rgba(59,44,32,1)"/>
- <circle cx="80" cy="35" r="1" fill="rgba(62,48,35,1)"/>
- <circle cx="81" cy="35" r="1" fill="rgba(64,52,40,1)"/>
- <circle cx="82" cy="35" r="1" fill="rgba(68,55,42,1)"/>
- <circle cx="83" cy="35" r="1" fill="rgba(71,59,48,1)"/>
- <circle cx="84" cy="35" r="1" fill="rgba(78,66,55,1)"/>
- <circle cx="85" cy="35" r="1" fill="rgba(63,53,40,1)"/>
- <circle cx="86" cy="35" r="1" fill="rgba(28,0,0,1)"/>
- <circle cx="87" cy="35" r="1" fill="rgba(178,85,47,1)"/>
- <circle cx="88" cy="35" r="1" fill="rgba(255,226,211,1)"/>
- <circle cx="89" cy="35" r="1" fill="rgba(217,95,50,1)"/>
- <circle cx="90" cy="35" r="1" fill="rgba(204,50,14,1)"/>
- <circle cx="91" cy="35" r="1" fill="rgba(207,59,20,1)"/>
- <circle cx="92" cy="35" r="1" fill="rgba(202,55,18,0.905882)"/>
- <circle cx="93" cy="35" r="1" fill="rgba(90,23,7,0.219608)"/>
- <circle cx="94" cy="35" r="1" fill="rgba(17,11,3,0.113725)"/>
- <circle cx="95" cy="35" r="1" fill="rgba(21,6,1,0.188235)"/>
- <circle cx="96" cy="35" r="1" fill="rgba(15,4,0,0.235294)"/>
- <circle cx="97" cy="35" r="1" fill="rgba(17,5,1,0.376471)"/>
- <circle cx="98" cy="35" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="99" cy="35" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="100" cy="35" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="101" cy="35" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="102" cy="35" r="1" fill="rgba(10,2,0,0.427451)"/>
- <circle cx="103" cy="35" r="1" fill="rgba(40,19,7,0.152941)"/>
- <circle cx="104" cy="35" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="105" cy="35" r="1" fill="rgba(49,24,9,0)"/>
- <circle cx="106" cy="35" r="1" fill="rgba(49,24,9,0)"/>
- <circle cx="107" cy="35" r="1" fill="rgba(49,24,9,0)"/>
- <circle cx="108" cy="35" r="1" fill="rgba(39,17,6,0)"/>
- <circle cx="109" cy="35" r="1" fill="rgba(33,12,4,0)"/>
- <circle cx="110" cy="35" r="1" fill="rgba(33,12,4,0)"/>
- <circle cx="111" cy="35" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="112" cy="35" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="113" cy="35" r="1" fill="rgba(33,12,4,0.00392157)"/>
- <circle cx="114" cy="35" r="1" fill="rgba(59,29,13,0.705882)"/>
- <circle cx="115" cy="35" r="1" fill="rgba(55,26,11,0.615686)"/>
- <circle cx="116" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="35" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="36" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="36" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="36" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="36" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="36" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="36" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="36" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="36" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="36" r="1" fill="rgba(84,51,28,0)"/>
- <circle cx="26" cy="36" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="27" cy="36" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="28" cy="36" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="29" cy="36" r="1" fill="rgba(63,31,14,0)"/>
- <circle cx="30" cy="36" r="1" fill="rgba(46,26,12,0)"/>
- <circle cx="31" cy="36" r="1" fill="rgba(116,46,12,0)"/>
- <circle cx="32" cy="36" r="1" fill="rgba(167,66,11,0)"/>
- <circle cx="33" cy="36" r="1" fill="rgba(162,62,11,0)"/>
- <circle cx="34" cy="36" r="1" fill="rgba(166,62,10,0)"/>
- <circle cx="35" cy="36" r="1" fill="rgba(234,91,11,0)"/>
- <circle cx="36" cy="36" r="1" fill="rgba(251,94,10,0.592157)"/>
- <circle cx="37" cy="36" r="1" fill="rgba(253,100,10,1)"/>
- <circle cx="38" cy="36" r="1" fill="rgba(249,104,13,1)"/>
- <circle cx="39" cy="36" r="1" fill="rgba(249,107,13,1)"/>
- <circle cx="40" cy="36" r="1" fill="rgba(249,108,13,1)"/>
- <circle cx="41" cy="36" r="1" fill="rgba(249,107,12,1)"/>
- <circle cx="42" cy="36" r="1" fill="rgba(249,105,10,1)"/>
- <circle cx="43" cy="36" r="1" fill="rgba(249,101,8,1)"/>
- <circle cx="44" cy="36" r="1" fill="rgba(255,100,6,1)"/>
- <circle cx="45" cy="36" r="1" fill="rgba(238,87,2,1)"/>
- <circle cx="46" cy="36" r="1" fill="rgba(67,10,0,1)"/>
- <circle cx="47" cy="36" r="1" fill="rgba(57,40,25,1)"/>
- <circle cx="48" cy="36" r="1" fill="rgba(218,208,200,1)"/>
- <circle cx="49" cy="36" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="50" cy="36" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="51" cy="36" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="52" cy="36" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="53" cy="36" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="36" r="1" fill="rgba(250,249,249,1)"/>
- <circle cx="55" cy="36" r="1" fill="rgba(223,215,209,1)"/>
- <circle cx="56" cy="36" r="1" fill="rgba(187,172,159,1)"/>
- <circle cx="57" cy="36" r="1" fill="rgba(145,123,105,1)"/>
- <circle cx="58" cy="36" r="1" fill="rgba(98,74,56,1)"/>
- <circle cx="59" cy="36" r="1" fill="rgba(83,57,37,1)"/>
- <circle cx="60" cy="36" r="1" fill="rgba(71,42,23,1)"/>
- <circle cx="61" cy="36" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="62" cy="36" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="63" cy="36" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="36" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="36" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="36" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="36" r="1" fill="rgba(47,21,8,1)"/>
- <circle cx="68" cy="36" r="1" fill="rgba(19,6,1,1)"/>
- <circle cx="69" cy="36" r="1" fill="rgba(10,4,1,1)"/>
- <circle cx="70" cy="36" r="1" fill="rgba(19,8,3,1)"/>
- <circle cx="71" cy="36" r="1" fill="rgba(22,12,5,1)"/>
- <circle cx="72" cy="36" r="1" fill="rgba(29,16,8,1)"/>
- <circle cx="73" cy="36" r="1" fill="rgba(34,19,10,1)"/>
- <circle cx="74" cy="36" r="1" fill="rgba(37,23,13,1)"/>
- <circle cx="75" cy="36" r="1" fill="rgba(40,27,16,1)"/>
- <circle cx="76" cy="36" r="1" fill="rgba(46,30,19,1)"/>
- <circle cx="77" cy="36" r="1" fill="rgba(50,34,22,1)"/>
- <circle cx="78" cy="36" r="1" fill="rgba(53,38,26,1)"/>
- <circle cx="79" cy="36" r="1" fill="rgba(55,42,29,1)"/>
- <circle cx="80" cy="36" r="1" fill="rgba(61,46,33,1)"/>
- <circle cx="81" cy="36" r="1" fill="rgba(63,49,37,1)"/>
- <circle cx="82" cy="36" r="1" fill="rgba(67,52,40,1)"/>
- <circle cx="83" cy="36" r="1" fill="rgba(71,59,48,1)"/>
- <circle cx="84" cy="36" r="1" fill="rgba(64,54,42,1)"/>
- <circle cx="85" cy="36" r="1" fill="rgba(19,0,0,1)"/>
- <circle cx="86" cy="36" r="1" fill="rgba(170,67,33,1)"/>
- <circle cx="87" cy="36" r="1" fill="rgba(255,224,209,1)"/>
- <circle cx="88" cy="36" r="1" fill="rgba(220,103,59,1)"/>
- <circle cx="89" cy="36" r="1" fill="rgba(207,50,14,1)"/>
- <circle cx="90" cy="36" r="1" fill="rgba(208,61,22,1)"/>
- <circle cx="91" cy="36" r="1" fill="rgba(206,59,20,1)"/>
- <circle cx="92" cy="36" r="1" fill="rgba(208,57,19,1)"/>
- <circle cx="93" cy="36" r="1" fill="rgba(184,48,14,0.862745)"/>
- <circle cx="94" cy="36" r="1" fill="rgba(36,7,1,0.419608)"/>
- <circle cx="95" cy="36" r="1" fill="rgba(0,0,0,0.427451)"/>
- <circle cx="96" cy="36" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="97" cy="36" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="98" cy="36" r="1" fill="rgba(4,0,0,0.466667)"/>
- <circle cx="99" cy="36" r="1" fill="rgba(10,2,0,0.447059)"/>
- <circle cx="100" cy="36" r="1" fill="rgba(12,2,0,0.431373)"/>
- <circle cx="101" cy="36" r="1" fill="rgba(12,3,0,0.419608)"/>
- <circle cx="102" cy="36" r="1" fill="rgba(29,11,3,0.27451)"/>
- <circle cx="103" cy="36" r="1" fill="rgba(49,24,9,0.0392157)"/>
- <circle cx="104" cy="36" r="1" fill="rgba(51,25,10,0)"/>
- <circle cx="105" cy="36" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="106" cy="36" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="107" cy="36" r="1" fill="rgba(53,27,11,0)"/>
- <circle cx="108" cy="36" r="1" fill="rgba(54,27,11,0)"/>
- <circle cx="109" cy="36" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="110" cy="36" r="1" fill="rgba(36,14,5,0)"/>
- <circle cx="111" cy="36" r="1" fill="rgba(34,13,4,0)"/>
- <circle cx="112" cy="36" r="1" fill="rgba(28,9,3,0)"/>
- <circle cx="113" cy="36" r="1" fill="rgba(31,11,3,0.239216)"/>
- <circle cx="114" cy="36" r="1" fill="rgba(61,30,13,0.917647)"/>
- <circle cx="115" cy="36" r="1" fill="rgba(45,19,7,0.2)"/>
- <circle cx="116" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="36" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="37" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="37" r="1" fill="rgba(61,30,13,0.0156863)"/>
- <circle cx="5" cy="37" r="1" fill="rgba(61,30,13,0.376471)"/>
- <circle cx="6" cy="37" r="1" fill="rgba(61,30,13,0.435294)"/>
- <circle cx="7" cy="37" r="1" fill="rgba(59,29,13,0.392157)"/>
- <circle cx="8" cy="37" r="1" fill="rgba(58,28,12,0.211765)"/>
- <circle cx="9" cy="37" r="1" fill="rgba(59,29,13,0.0235294)"/>
- <circle cx="10" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="37" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="37" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="37" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="37" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="37" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="37" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="37" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="37" r="1" fill="rgba(84,51,28,0)"/>
- <circle cx="26" cy="37" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="27" cy="37" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="28" cy="37" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="29" cy="37" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="37" r="1" fill="rgba(40,25,13,0)"/>
- <circle cx="31" cy="37" r="1" fill="rgba(169,66,14,0)"/>
- <circle cx="32" cy="37" r="1" fill="rgba(255,111,14,0)"/>
- <circle cx="33" cy="37" r="1" fill="rgba(255,109,14,0)"/>
- <circle cx="34" cy="37" r="1" fill="rgba(255,108,14,0)"/>
- <circle cx="35" cy="37" r="1" fill="rgba(255,103,14,0.360784)"/>
- <circle cx="36" cy="37" r="1" fill="rgba(252,106,15,1)"/>
- <circle cx="37" cy="37" r="1" fill="rgba(250,112,18,1)"/>
- <circle cx="38" cy="37" r="1" fill="rgba(251,115,20,1)"/>
- <circle cx="39" cy="37" r="1" fill="rgba(250,117,20,1)"/>
- <circle cx="40" cy="37" r="1" fill="rgba(250,116,19,1)"/>
- <circle cx="41" cy="37" r="1" fill="rgba(249,114,17,1)"/>
- <circle cx="42" cy="37" r="1" fill="rgba(249,111,15,1)"/>
- <circle cx="43" cy="37" r="1" fill="rgba(249,107,13,1)"/>
- <circle cx="44" cy="37" r="1" fill="rgba(249,104,9,1)"/>
- <circle cx="45" cy="37" r="1" fill="rgba(255,104,7,1)"/>
- <circle cx="46" cy="37" r="1" fill="rgba(219,78,2,1)"/>
- <circle cx="47" cy="37" r="1" fill="rgba(37,4,0,1)"/>
- <circle cx="48" cy="37" r="1" fill="rgba(70,45,27,1)"/>
- <circle cx="49" cy="37" r="1" fill="rgba(225,214,203,1)"/>
- <circle cx="50" cy="37" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="51" cy="37" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="52" cy="37" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="53" cy="37" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="37" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="55" cy="37" r="1" fill="rgba(242,239,236,1)"/>
- <circle cx="56" cy="37" r="1" fill="rgba(210,199,191,1)"/>
- <circle cx="57" cy="37" r="1" fill="rgba(173,155,139,1)"/>
- <circle cx="58" cy="37" r="1" fill="rgba(126,102,83,1)"/>
- <circle cx="59" cy="37" r="1" fill="rgba(88,63,45,1)"/>
- <circle cx="60" cy="37" r="1" fill="rgba(80,52,33,1)"/>
- <circle cx="61" cy="37" r="1" fill="rgba(64,34,16,1)"/>
- <circle cx="62" cy="37" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="63" cy="37" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="37" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="37" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="37" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="67" cy="37" r="1" fill="rgba(47,22,8,1)"/>
- <circle cx="68" cy="37" r="1" fill="rgba(19,5,1,1)"/>
- <circle cx="69" cy="37" r="1" fill="rgba(7,3,0,1)"/>
- <circle cx="70" cy="37" r="1" fill="rgba(15,6,2,1)"/>
- <circle cx="71" cy="37" r="1" fill="rgba(21,10,3,1)"/>
- <circle cx="72" cy="37" r="1" fill="rgba(24,14,6,1)"/>
- <circle cx="73" cy="37" r="1" fill="rgba(31,17,9,1)"/>
- <circle cx="74" cy="37" r="1" fill="rgba(34,21,11,1)"/>
- <circle cx="75" cy="37" r="1" fill="rgba(39,24,14,1)"/>
- <circle cx="76" cy="37" r="1" fill="rgba(42,28,16,1)"/>
- <circle cx="77" cy="37" r="1" fill="rgba(47,32,20,1)"/>
- <circle cx="78" cy="37" r="1" fill="rgba(50,35,23,1)"/>
- <circle cx="79" cy="37" r="1" fill="rgba(54,40,27,1)"/>
- <circle cx="80" cy="37" r="1" fill="rgba(57,43,30,1)"/>
- <circle cx="81" cy="37" r="1" fill="rgba(61,46,33,1)"/>
- <circle cx="82" cy="37" r="1" fill="rgba(65,52,40,1)"/>
- <circle cx="83" cy="37" r="1" fill="rgba(62,52,41,1)"/>
- <circle cx="84" cy="37" r="1" fill="rgba(19,4,2,1)"/>
- <circle cx="85" cy="37" r="1" fill="rgba(157,56,24,1)"/>
- <circle cx="86" cy="37" r="1" fill="rgba(252,213,193,1)"/>
- <circle cx="87" cy="37" r="1" fill="rgba(223,117,74,1)"/>
- <circle cx="88" cy="37" r="1" fill="rgba(206,46,12,1)"/>
- <circle cx="89" cy="37" r="1" fill="rgba(209,60,21,1)"/>
- <circle cx="90" cy="37" r="1" fill="rgba(209,62,22,1)"/>
- <circle cx="91" cy="37" r="1" fill="rgba(207,61,21,1)"/>
- <circle cx="92" cy="37" r="1" fill="rgba(204,58,19,1)"/>
- <circle cx="93" cy="37" r="1" fill="rgba(210,58,18,1)"/>
- <circle cx="94" cy="37" r="1" fill="rgba(147,34,9,0.784314)"/>
- <circle cx="95" cy="37" r="1" fill="rgba(0,0,0,0.423529)"/>
- <circle cx="96" cy="37" r="1" fill="rgba(7,2,0,0.407843)"/>
- <circle cx="97" cy="37" r="1" fill="rgba(10,2,0,0.329412)"/>
- <circle cx="98" cy="37" r="1" fill="rgba(21,6,1,0.278431)"/>
- <circle cx="99" cy="37" r="1" fill="rgba(31,12,3,0.239216)"/>
- <circle cx="100" cy="37" r="1" fill="rgba(36,15,5,0.188235)"/>
- <circle cx="101" cy="37" r="1" fill="rgba(39,17,6,0.156863)"/>
- <circle cx="102" cy="37" r="1" fill="rgba(43,20,8,0.0588235)"/>
- <circle cx="103" cy="37" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="104" cy="37" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="105" cy="37" r="1" fill="rgba(49,24,9,0)"/>
- <circle cx="106" cy="37" r="1" fill="rgba(53,27,11,0)"/>
- <circle cx="107" cy="37" r="1" fill="rgba(84,53,30,0)"/>
- <circle cx="108" cy="37" r="1" fill="rgba(98,65,38,0)"/>
- <circle cx="109" cy="37" r="1" fill="rgba(88,57,32,0)"/>
- <circle cx="110" cy="37" r="1" fill="rgba(85,53,29,0)"/>
- <circle cx="111" cy="37" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="112" cy="37" r="1" fill="rgba(42,18,7,0.0392157)"/>
- <circle cx="113" cy="37" r="1" fill="rgba(47,21,8,0.654902)"/>
- <circle cx="114" cy="37" r="1" fill="rgba(57,27,11,0.807843)"/>
- <circle cx="115" cy="37" r="1" fill="rgba(31,12,3,0.0352941)"/>
- <circle cx="116" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="37" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="38" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="38" r="1" fill="rgba(61,30,13,0.027451)"/>
- <circle cx="5" cy="38" r="1" fill="rgba(61,30,13,0.654902)"/>
- <circle cx="6" cy="38" r="1" fill="rgba(61,30,13,0.921569)"/>
- <circle cx="7" cy="38" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="8" cy="38" r="1" fill="rgba(63,31,14,1)"/>
- <circle cx="9" cy="38" r="1" fill="rgba(63,32,14,0.843137)"/>
- <circle cx="10" cy="38" r="1" fill="rgba(54,27,11,0.439216)"/>
- <circle cx="11" cy="38" r="1" fill="rgba(36,14,5,0.0941176)"/>
- <circle cx="12" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="38" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="38" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="38" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="38" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="38" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="38" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="38" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="38" r="1" fill="rgba(84,51,28,0)"/>
- <circle cx="26" cy="38" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="27" cy="38" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="28" cy="38" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="29" cy="38" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="38" r="1" fill="rgba(59,30,13,0)"/>
- <circle cx="31" cy="38" r="1" fill="rgba(50,26,13,0)"/>
- <circle cx="32" cy="38" r="1" fill="rgba(180,76,16,0)"/>
- <circle cx="33" cy="38" r="1" fill="rgba(255,116,19,0)"/>
- <circle cx="34" cy="38" r="1" fill="rgba(252,109,18,0.14902)"/>
- <circle cx="35" cy="38" r="1" fill="rgba(252,112,18,0.921569)"/>
- <circle cx="36" cy="38" r="1" fill="rgba(251,119,23,1)"/>
- <circle cx="37" cy="38" r="1" fill="rgba(252,123,26,1)"/>
- <circle cx="38" cy="38" r="1" fill="rgba(251,125,27,1)"/>
- <circle cx="39" cy="38" r="1" fill="rgba(250,125,27,1)"/>
- <circle cx="40" cy="38" r="1" fill="rgba(250,123,26,1)"/>
- <circle cx="41" cy="38" r="1" fill="rgba(250,121,23,1)"/>
- <circle cx="42" cy="38" r="1" fill="rgba(250,118,20,1)"/>
- <circle cx="43" cy="38" r="1" fill="rgba(249,114,17,1)"/>
- <circle cx="44" cy="38" r="1" fill="rgba(249,111,14,1)"/>
- <circle cx="45" cy="38" r="1" fill="rgba(250,106,10,1)"/>
- <circle cx="46" cy="38" r="1" fill="rgba(255,106,7,1)"/>
- <circle cx="47" cy="38" r="1" fill="rgba(195,67,2,1)"/>
- <circle cx="48" cy="38" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="49" cy="38" r="1" fill="rgba(90,59,35,1)"/>
- <circle cx="50" cy="38" r="1" fill="rgba(241,234,228,1)"/>
- <circle cx="51" cy="38" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="52" cy="38" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="53" cy="38" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="38" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="55" cy="38" r="1" fill="rgba(254,252,253,1)"/>
- <circle cx="56" cy="38" r="1" fill="rgba(231,225,220,1)"/>
- <circle cx="57" cy="38" r="1" fill="rgba(196,182,172,1)"/>
- <circle cx="58" cy="38" r="1" fill="rgba(156,135,117,1)"/>
- <circle cx="59" cy="38" r="1" fill="rgba(108,83,64,1)"/>
- <circle cx="60" cy="38" r="1" fill="rgba(84,57,39,1)"/>
- <circle cx="61" cy="38" r="1" fill="rgba(73,44,24,1)"/>
- <circle cx="62" cy="38" r="1" fill="rgba(61,29,13,1)"/>
- <circle cx="63" cy="38" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="64" cy="38" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="38" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="38" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="38" r="1" fill="rgba(49,23,9,1)"/>
- <circle cx="68" cy="38" r="1" fill="rgba(17,4,0,1)"/>
- <circle cx="69" cy="38" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="70" cy="38" r="1" fill="rgba(12,3,1,1)"/>
- <circle cx="71" cy="38" r="1" fill="rgba(19,7,3,1)"/>
- <circle cx="72" cy="38" r="1" fill="rgba(22,11,5,1)"/>
- <circle cx="73" cy="38" r="1" fill="rgba(26,15,7,1)"/>
- <circle cx="74" cy="38" r="1" fill="rgba(33,19,9,1)"/>
- <circle cx="75" cy="38" r="1" fill="rgba(37,22,12,1)"/>
- <circle cx="76" cy="38" r="1" fill="rgba(40,26,15,1)"/>
- <circle cx="77" cy="38" r="1" fill="rgba(43,30,18,1)"/>
- <circle cx="78" cy="38" r="1" fill="rgba(49,33,21,1)"/>
- <circle cx="79" cy="38" r="1" fill="rgba(51,37,25,1)"/>
- <circle cx="80" cy="38" r="1" fill="rgba(55,40,28,1)"/>
- <circle cx="81" cy="38" r="1" fill="rgba(61,46,33,1)"/>
- <circle cx="82" cy="38" r="1" fill="rgba(58,46,35,1)"/>
- <circle cx="83" cy="38" r="1" fill="rgba(12,5,3,1)"/>
- <circle cx="84" cy="38" r="1" fill="rgba(142,51,22,1)"/>
- <circle cx="85" cy="38" r="1" fill="rgba(252,211,192,1)"/>
- <circle cx="86" cy="38" r="1" fill="rgba(223,115,74,1)"/>
- <circle cx="87" cy="38" r="1" fill="rgba(205,42,10,1)"/>
- <circle cx="88" cy="38" r="1" fill="rgba(209,58,20,1)"/>
- <circle cx="89" cy="38" r="1" fill="rgba(210,61,22,1)"/>
- <circle cx="90" cy="38" r="1" fill="rgba(210,64,23,1)"/>
- <circle cx="91" cy="38" r="1" fill="rgba(210,63,23,1)"/>
- <circle cx="92" cy="38" r="1" fill="rgba(207,61,20,1)"/>
- <circle cx="93" cy="38" r="1" fill="rgba(205,58,19,1)"/>
- <circle cx="94" cy="38" r="1" fill="rgba(210,58,18,1)"/>
- <circle cx="95" cy="38" r="1" fill="rgba(117,28,7,0.490196)"/>
- <circle cx="96" cy="38" r="1" fill="rgba(0,8,3,0.109804)"/>
- <circle cx="97" cy="38" r="1" fill="rgba(15,6,1,0.0588235)"/>
- <circle cx="98" cy="38" r="1" fill="rgba(24,8,2,0.0313725)"/>
- <circle cx="99" cy="38" r="1" fill="rgba(39,17,6,0.0196078)"/>
- <circle cx="100" cy="38" r="1" fill="rgba(45,21,8,0.00392157)"/>
- <circle cx="101" cy="38" r="1" fill="rgba(47,23,9,0)"/>
- <circle cx="102" cy="38" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="103" cy="38" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="104" cy="38" r="1" fill="rgba(63,35,16,0)"/>
- <circle cx="105" cy="38" r="1" fill="rgba(87,56,31,0)"/>
- <circle cx="106" cy="38" r="1" fill="rgba(97,65,39,0)"/>
- <circle cx="107" cy="38" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="108" cy="38" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="109" cy="38" r="1" fill="rgba(94,62,36,0)"/>
- <circle cx="110" cy="38" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="111" cy="38" r="1" fill="rgba(83,51,27,0.513725)"/>
- <circle cx="112" cy="38" r="1" fill="rgba(75,43,22,0.847059)"/>
- <circle cx="113" cy="38" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="114" cy="38" r="1" fill="rgba(43,19,7,0.505882)"/>
- <circle cx="115" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="38" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="39" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="39" r="1" fill="rgba(39,15,5,0.054902)"/>
- <circle cx="7" cy="39" r="1" fill="rgba(37,15,5,0.298039)"/>
- <circle cx="8" cy="39" r="1" fill="rgba(40,16,6,0.619608)"/>
- <circle cx="9" cy="39" r="1" fill="rgba(54,25,10,0.862745)"/>
- <circle cx="10" cy="39" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="11" cy="39" r="1" fill="rgba(75,43,22,0.929412)"/>
- <circle cx="12" cy="39" r="1" fill="rgba(74,43,22,0.658824)"/>
- <circle cx="13" cy="39" r="1" fill="rgba(75,44,22,0.501961)"/>
- <circle cx="14" cy="39" r="1" fill="rgba(92,59,33,0.501961)"/>
- <circle cx="15" cy="39" r="1" fill="rgba(95,63,37,0.486275)"/>
- <circle cx="16" cy="39" r="1" fill="rgba(99,67,41,0.192157)"/>
- <circle cx="17" cy="39" r="1" fill="rgba(105,73,46,0.0156863)"/>
- <circle cx="18" cy="39" r="1" fill="rgba(110,79,51,0)"/>
- <circle cx="19" cy="39" r="1" fill="rgba(112,81,53,0)"/>
- <circle cx="20" cy="39" r="1" fill="rgba(108,77,49,0)"/>
- <circle cx="21" cy="39" r="1" fill="rgba(104,72,44,0)"/>
- <circle cx="22" cy="39" r="1" fill="rgba(99,67,40,0)"/>
- <circle cx="23" cy="39" r="1" fill="rgba(93,61,36,0)"/>
- <circle cx="24" cy="39" r="1" fill="rgba(88,56,32,0)"/>
- <circle cx="25" cy="39" r="1" fill="rgba(84,51,28,0)"/>
- <circle cx="26" cy="39" r="1" fill="rgba(78,46,24,0)"/>
- <circle cx="27" cy="39" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="28" cy="39" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="29" cy="39" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="39" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="39" r="1" fill="rgba(45,25,13,0)"/>
- <circle cx="32" cy="39" r="1" fill="rgba(124,52,15,0)"/>
- <circle cx="33" cy="39" r="1" fill="rgba(249,114,21,0.00392157)"/>
- <circle cx="34" cy="39" r="1" fill="rgba(254,116,20,0.701961)"/>
- <circle cx="35" cy="39" r="1" fill="rgba(253,125,27,1)"/>
- <circle cx="36" cy="39" r="1" fill="rgba(252,130,32,1)"/>
- <circle cx="37" cy="39" r="1" fill="rgba(252,132,34,1)"/>
- <circle cx="38" cy="39" r="1" fill="rgba(252,133,35,1)"/>
- <circle cx="39" cy="39" r="1" fill="rgba(251,132,35,1)"/>
- <circle cx="40" cy="39" r="1" fill="rgba(251,130,33,1)"/>
- <circle cx="41" cy="39" r="1" fill="rgba(250,127,30,1)"/>
- <circle cx="42" cy="39" r="1" fill="rgba(250,124,26,1)"/>
- <circle cx="43" cy="39" r="1" fill="rgba(250,120,22,1)"/>
- <circle cx="44" cy="39" r="1" fill="rgba(250,117,19,1)"/>
- <circle cx="45" cy="39" r="1" fill="rgba(250,113,15,1)"/>
- <circle cx="46" cy="39" r="1" fill="rgba(251,109,11,1)"/>
- <circle cx="47" cy="39" r="1" fill="rgba(255,110,8,1)"/>
- <circle cx="48" cy="39" r="1" fill="rgba(173,59,1,1)"/>
- <circle cx="49" cy="39" r="1" fill="black"/>
- <circle cx="50" cy="39" r="1" fill="rgba(104,73,46,1)"/>
- <circle cx="51" cy="39" r="1" fill="rgba(233,222,212,1)"/>
- <circle cx="52" cy="39" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="53" cy="39" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="39" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="55" cy="39" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="56" cy="39" r="1" fill="rgba(248,246,245,1)"/>
- <circle cx="57" cy="39" r="1" fill="rgba(218,209,203,1)"/>
- <circle cx="58" cy="39" r="1" fill="rgba(182,165,151,1)"/>
- <circle cx="59" cy="39" r="1" fill="rgba(137,114,95,1)"/>
- <circle cx="60" cy="39" r="1" fill="rgba(94,69,50,1)"/>
- <circle cx="61" cy="39" r="1" fill="rgba(80,52,33,1)"/>
- <circle cx="62" cy="39" r="1" fill="rgba(65,35,18,1)"/>
- <circle cx="63" cy="39" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="64" cy="39" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="39" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="39" r="1" fill="rgba(62,30,14,1)"/>
- <circle cx="67" cy="39" r="1" fill="rgba(50,22,9,1)"/>
- <circle cx="68" cy="39" r="1" fill="rgba(15,3,0,1)"/>
- <circle cx="69" cy="39" r="1" fill="black"/>
- <circle cx="70" cy="39" r="1" fill="rgba(4,1,0,1)"/>
- <circle cx="71" cy="39" r="1" fill="rgba(15,5,1,1)"/>
- <circle cx="72" cy="39" r="1" fill="rgba(19,8,3,1)"/>
- <circle cx="73" cy="39" r="1" fill="rgba(24,12,5,1)"/>
- <circle cx="74" cy="39" r="1" fill="rgba(28,16,8,1)"/>
- <circle cx="75" cy="39" r="1" fill="rgba(34,20,10,1)"/>
- <circle cx="76" cy="39" r="1" fill="rgba(39,24,13,1)"/>
- <circle cx="77" cy="39" r="1" fill="rgba(42,27,16,1)"/>
- <circle cx="78" cy="39" r="1" fill="rgba(45,31,19,1)"/>
- <circle cx="79" cy="39" r="1" fill="rgba(50,35,22,1)"/>
- <circle cx="80" cy="39" r="1" fill="rgba(55,40,28,1)"/>
- <circle cx="81" cy="39" r="1" fill="rgba(49,36,25,1)"/>
- <circle cx="82" cy="39" r="1" fill="rgba(0,1,1,1)"/>
- <circle cx="83" cy="39" r="1" fill="rgba(142,54,25,1)"/>
- <circle cx="84" cy="39" r="1" fill="rgba(248,199,175,1)"/>
- <circle cx="85" cy="39" r="1" fill="rgba(222,108,68,1)"/>
- <circle cx="86" cy="39" r="1" fill="rgba(204,38,9,1)"/>
- <circle cx="87" cy="39" r="1" fill="rgba(208,54,19,1)"/>
- <circle cx="88" cy="39" r="1" fill="rgba(210,59,20,1)"/>
- <circle cx="89" cy="39" r="1" fill="rgba(210,62,22,1)"/>
- <circle cx="90" cy="39" r="1" fill="rgba(211,65,24,1)"/>
- <circle cx="91" cy="39" r="1" fill="rgba(211,66,24,1)"/>
- <circle cx="92" cy="39" r="1" fill="rgba(209,64,23,1)"/>
- <circle cx="93" cy="39" r="1" fill="rgba(207,61,21,1)"/>
- <circle cx="94" cy="39" r="1" fill="rgba(207,59,20,1)"/>
- <circle cx="95" cy="39" r="1" fill="rgba(206,57,18,0.862745)"/>
- <circle cx="96" cy="39" r="1" fill="rgba(99,27,8,0.0745098)"/>
- <circle cx="97" cy="39" r="1" fill="rgba(33,11,3,0)"/>
- <circle cx="98" cy="39" r="1" fill="rgba(29,10,3,0)"/>
- <circle cx="99" cy="39" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="100" cy="39" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="101" cy="39" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="102" cy="39" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="103" cy="39" r="1" fill="rgba(78,47,24,0)"/>
- <circle cx="104" cy="39" r="1" fill="rgba(98,66,39,0)"/>
- <circle cx="105" cy="39" r="1" fill="rgba(101,69,42,0)"/>
- <circle cx="106" cy="39" r="1" fill="rgba(99,67,41,0)"/>
- <circle cx="107" cy="39" r="1" fill="rgba(97,65,38,0)"/>
- <circle cx="108" cy="39" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="109" cy="39" r="1" fill="rgba(93,61,35,0)"/>
- <circle cx="110" cy="39" r="1" fill="rgba(88,56,31,0.380392)"/>
- <circle cx="111" cy="39" r="1" fill="rgba(83,50,27,1)"/>
- <circle cx="112" cy="39" r="1" fill="rgba(76,44,22,1)"/>
- <circle cx="113" cy="39" r="1" fill="rgba(68,37,18,0.996078)"/>
- <circle cx="114" cy="39" r="1" fill="rgba(36,15,5,0.270588)"/>
- <circle cx="115" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="39" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="40" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="40" r="1" fill="rgba(21,7,1,0.0745098)"/>
- <circle cx="9" cy="40" r="1" fill="rgba(15,3,0,0.203922)"/>
- <circle cx="10" cy="40" r="1" fill="rgba(29,10,3,0.435294)"/>
- <circle cx="11" cy="40" r="1" fill="rgba(53,26,11,0.745098)"/>
- <circle cx="12" cy="40" r="1" fill="rgba(78,47,24,1)"/>
- <circle cx="13" cy="40" r="1" fill="rgba(91,57,33,1)"/>
- <circle cx="14" cy="40" r="1" fill="rgba(92,59,33,1)"/>
- <circle cx="15" cy="40" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="16" cy="40" r="1" fill="rgba(101,69,42,0.988235)"/>
- <circle cx="17" cy="40" r="1" fill="rgba(107,75,48,0.8)"/>
- <circle cx="18" cy="40" r="1" fill="rgba(111,80,52,0.568627)"/>
- <circle cx="19" cy="40" r="1" fill="rgba(112,81,53,0.403922)"/>
- <circle cx="20" cy="40" r="1" fill="rgba(108,77,49,0.266667)"/>
- <circle cx="21" cy="40" r="1" fill="rgba(104,72,44,0.168627)"/>
- <circle cx="22" cy="40" r="1" fill="rgba(99,67,40,0.294118)"/>
- <circle cx="23" cy="40" r="1" fill="rgba(94,61,36,0.52549)"/>
- <circle cx="24" cy="40" r="1" fill="rgba(88,56,32,0.568627)"/>
- <circle cx="25" cy="40" r="1" fill="rgba(84,51,28,0.407843)"/>
- <circle cx="26" cy="40" r="1" fill="rgba(78,46,24,0.129412)"/>
- <circle cx="27" cy="40" r="1" fill="rgba(73,41,20,0.0156863)"/>
- <circle cx="28" cy="40" r="1" fill="rgba(67,35,17,0)"/>
- <circle cx="29" cy="40" r="1" fill="rgba(62,31,14,0)"/>
- <circle cx="30" cy="40" r="1" fill="rgba(61,30,13,0)"/>
- <circle cx="31" cy="40" r="1" fill="rgba(57,29,13,0)"/>
- <circle cx="32" cy="40" r="1" fill="rgba(64,31,13,0)"/>
- <circle cx="33" cy="40" r="1" fill="rgba(242,112,25,0.372549)"/>
- <circle cx="34" cy="40" r="1" fill="rgba(255,127,28,1)"/>
- <circle cx="35" cy="40" r="1" fill="rgba(254,134,35,1)"/>
- <circle cx="36" cy="40" r="1" fill="rgba(254,139,41,1)"/>
- <circle cx="37" cy="40" r="1" fill="rgba(252,140,43,1)"/>
- <circle cx="38" cy="40" r="1" fill="rgba(252,140,43,1)"/>
- <circle cx="39" cy="40" r="1" fill="rgba(252,139,43,1)"/>
- <circle cx="40" cy="40" r="1" fill="rgba(251,136,40,1)"/>
- <circle cx="41" cy="40" r="1" fill="rgba(251,133,37,1)"/>
- <circle cx="42" cy="40" r="1" fill="rgba(250,130,33,1)"/>
- <circle cx="43" cy="40" r="1" fill="rgba(250,127,30,1)"/>
- <circle cx="44" cy="40" r="1" fill="rgba(250,123,25,1)"/>
- <circle cx="45" cy="40" r="1" fill="rgba(250,120,21,1)"/>
- <circle cx="46" cy="40" r="1" fill="rgba(251,116,17,1)"/>
- <circle cx="47" cy="40" r="1" fill="rgba(252,113,13,1)"/>
- <circle cx="48" cy="40" r="1" fill="rgba(255,111,7,1)"/>
- <circle cx="49" cy="40" r="1" fill="rgba(169,59,0,1)"/>
- <circle cx="50" cy="40" r="1" fill="black"/>
- <circle cx="51" cy="40" r="1" fill="rgba(54,33,17,1)"/>
- <circle cx="52" cy="40" r="1" fill="rgba(189,167,141,1)"/>
- <circle cx="53" cy="40" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="54" cy="40" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="55" cy="40" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="56" cy="40" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="57" cy="40" r="1" fill="rgba(238,234,231,1)"/>
- <circle cx="58" cy="40" r="1" fill="rgba(204,192,183,1)"/>
- <circle cx="59" cy="40" r="1" fill="rgba(166,146,131,1)"/>
- <circle cx="60" cy="40" r="1" fill="rgba(118,94,74,1)"/>
- <circle cx="61" cy="40" r="1" fill="rgba(85,60,42,1)"/>
- <circle cx="62" cy="40" r="1" fill="rgba(73,45,25,1)"/>
- <circle cx="63" cy="40" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="64" cy="40" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="65" cy="40" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="40" r="1" fill="rgba(62,30,14,1)"/>
- <circle cx="67" cy="40" r="1" fill="rgba(50,23,9,1)"/>
- <circle cx="68" cy="40" r="1" fill="rgba(15,3,0,1)"/>
- <circle cx="69" cy="40" r="1" fill="black"/>
- <circle cx="70" cy="40" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="71" cy="40" r="1" fill="rgba(7,2,0,1)"/>
- <circle cx="72" cy="40" r="1" fill="rgba(17,6,2,1)"/>
- <circle cx="73" cy="40" r="1" fill="rgba(21,10,4,1)"/>
- <circle cx="74" cy="40" r="1" fill="rgba(26,13,6,1)"/>
- <circle cx="75" cy="40" r="1" fill="rgba(29,17,9,1)"/>
- <circle cx="76" cy="40" r="1" fill="rgba(36,21,11,1)"/>
- <circle cx="77" cy="40" r="1" fill="rgba(39,24,14,1)"/>
- <circle cx="78" cy="40" r="1" fill="rgba(43,29,18,1)"/>
- <circle cx="79" cy="40" r="1" fill="rgba(49,34,22,1)"/>
- <circle cx="80" cy="40" r="1" fill="rgba(33,24,13,1)"/>
- <circle cx="81" cy="40" r="1" fill="black"/>
- <circle cx="82" cy="40" r="1" fill="rgba(148,75,42,1)"/>
- <circle cx="83" cy="40" r="1" fill="rgba(248,199,175,1)"/>
- <circle cx="84" cy="40" r="1" fill="rgba(218,90,51,1)"/>
- <circle cx="85" cy="40" r="1" fill="rgba(203,34,8,1)"/>
- <circle cx="86" cy="40" r="1" fill="rgba(208,52,18,1)"/>
- <circle cx="87" cy="40" r="1" fill="rgba(210,56,20,1)"/>
- <circle cx="88" cy="40" r="1" fill="rgba(210,61,22,1)"/>
- <circle cx="89" cy="40" r="1" fill="rgba(211,64,24,1)"/>
- <circle cx="90" cy="40" r="1" fill="rgba(213,68,26,1)"/>
- <circle cx="91" cy="40" r="1" fill="rgba(213,70,27,1)"/>
- <circle cx="92" cy="40" r="1" fill="rgba(212,70,26,1)"/>
- <circle cx="93" cy="40" r="1" fill="rgba(210,67,24,1)"/>
- <circle cx="94" cy="40" r="1" fill="rgba(207,63,22,1)"/>
- <circle cx="95" cy="40" r="1" fill="rgba(208,61,20,1)"/>
- <circle cx="96" cy="40" r="1" fill="rgba(208,60,20,0.584314)"/>
- <circle cx="97" cy="40" r="1" fill="rgba(194,56,18,0)"/>
- <circle cx="98" cy="40" r="1" fill="rgba(69,30,12,0)"/>
- <circle cx="99" cy="40" r="1" fill="rgba(62,33,15,0)"/>
- <circle cx="100" cy="40" r="1" fill="rgba(71,40,20,0)"/>
- <circle cx="101" cy="40" r="1" fill="rgba(76,44,23,0)"/>
- <circle cx="102" cy="40" r="1" fill="rgba(82,50,27,0)"/>
- <circle cx="103" cy="40" r="1" fill="rgba(92,59,33,0)"/>
- <circle cx="104" cy="40" r="1" fill="rgba(96,64,37,0)"/>
- <circle cx="105" cy="40" r="1" fill="rgba(99,67,41,0)"/>
- <circle cx="106" cy="40" r="1" fill="rgba(98,66,40,0)"/>
- <circle cx="107" cy="40" r="1" fill="rgba(97,65,38,0)"/>
- <circle cx="108" cy="40" r="1" fill="rgba(97,64,38,0)"/>
- <circle cx="109" cy="40" r="1" fill="rgba(93,61,35,0.380392)"/>
- <circle cx="110" cy="40" r="1" fill="rgba(88,56,31,0.941176)"/>
- <circle cx="111" cy="40" r="1" fill="rgba(83,50,27,1)"/>
- <circle cx="112" cy="40" r="1" fill="rgba(77,45,23,1)"/>
- <circle cx="113" cy="40" r="1" fill="rgba(67,36,17,0.956863)"/>
- <circle cx="114" cy="40" r="1" fill="rgba(31,12,3,0.14902)"/>
- <circle cx="115" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="40" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="41" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="41" r="1" fill="rgba(19,5,1,0.00392157)"/>
- <circle cx="10" cy="41" r="1" fill="rgba(21,6,1,0.0627451)"/>
- <circle cx="11" cy="41" r="1" fill="rgba(15,3,0,0.168627)"/>
- <circle cx="12" cy="41" r="1" fill="rgba(29,11,3,0.411765)"/>
- <circle cx="13" cy="41" r="1" fill="rgba(70,40,20,0.803922)"/>
- <circle cx="14" cy="41" r="1" fill="rgba(91,59,33,0.992157)"/>
- <circle cx="15" cy="41" r="1" fill="rgba(99,66,40,1)"/>
- <circle cx="16" cy="41" r="1" fill="rgba(104,72,45,0.996078)"/>
- <circle cx="17" cy="41" r="1" fill="rgba(103,71,44,0.968627)"/>
- <circle cx="18" cy="41" r="1" fill="rgba(109,78,50,1)"/>
- <circle cx="19" cy="41" r="1" fill="rgba(118,86,57,1)"/>
- <circle cx="20" cy="41" r="1" fill="rgba(111,80,52,1)"/>
- <circle cx="21" cy="41" r="1" fill="rgba(104,72,45,1)"/>
- <circle cx="22" cy="41" r="1" fill="rgba(98,67,40,1)"/>
- <circle cx="23" cy="41" r="1" fill="rgba(94,62,36,1)"/>
- <circle cx="24" cy="41" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="25" cy="41" r="1" fill="rgba(84,51,27,1)"/>
- <circle cx="26" cy="41" r="1" fill="rgba(78,46,24,0.960784)"/>
- <circle cx="27" cy="41" r="1" fill="rgba(73,41,20,0.784314)"/>
- <circle cx="28" cy="41" r="1" fill="rgba(67,35,17,0.643137)"/>
- <circle cx="29" cy="41" r="1" fill="rgba(62,31,14,0.564706)"/>
- <circle cx="30" cy="41" r="1" fill="rgba(61,30,13,0.501961)"/>
- <circle cx="31" cy="41" r="1" fill="rgba(54,28,13,0.501961)"/>
- <circle cx="32" cy="41" r="1" fill="rgba(82,39,15,0.592157)"/>
- <circle cx="33" cy="41" r="1" fill="rgba(244,128,43,0.913725)"/>
- <circle cx="34" cy="41" r="1" fill="rgba(255,144,49,1)"/>
- <circle cx="35" cy="41" r="1" fill="rgba(255,144,48,1)"/>
- <circle cx="36" cy="41" r="1" fill="rgba(255,146,50,1)"/>
- <circle cx="37" cy="41" r="1" fill="rgba(253,148,53,1)"/>
- <circle cx="38" cy="41" r="1" fill="rgba(252,147,53,1)"/>
- <circle cx="39" cy="41" r="1" fill="rgba(252,146,52,1)"/>
- <circle cx="40" cy="41" r="1" fill="rgba(252,142,48,1)"/>
- <circle cx="41" cy="41" r="1" fill="rgba(251,139,44,1)"/>
- <circle cx="42" cy="41" r="1" fill="rgba(250,136,41,1)"/>
- <circle cx="43" cy="41" r="1" fill="rgba(250,133,36,1)"/>
- <circle cx="44" cy="41" r="1" fill="rgba(250,129,32,1)"/>
- <circle cx="45" cy="41" r="1" fill="rgba(250,126,27,1)"/>
- <circle cx="46" cy="41" r="1" fill="rgba(251,124,24,1)"/>
- <circle cx="47" cy="41" r="1" fill="rgba(251,120,20,1)"/>
- <circle cx="48" cy="41" r="1" fill="rgba(253,117,13,1)"/>
- <circle cx="49" cy="41" r="1" fill="rgba(255,116,5,1)"/>
- <circle cx="50" cy="41" r="1" fill="rgba(203,77,0,1)"/>
- <circle cx="51" cy="41" r="1" fill="rgba(65,11,0,1)"/>
- <circle cx="52" cy="41" r="1" fill="black"/>
- <circle cx="53" cy="41" r="1" fill="rgba(114,83,55,1)"/>
- <circle cx="54" cy="41" r="1" fill="rgba(218,204,187,1)"/>
- <circle cx="55" cy="41" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="56" cy="41" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="57" cy="41" r="1" fill="rgba(253,252,253,1)"/>
- <circle cx="58" cy="41" r="1" fill="rgba(226,219,215,1)"/>
- <circle cx="59" cy="41" r="1" fill="rgba(191,176,163,1)"/>
- <circle cx="60" cy="41" r="1" fill="rgba(149,126,108,1)"/>
- <circle cx="61" cy="41" r="1" fill="rgba(101,76,56,1)"/>
- <circle cx="62" cy="41" r="1" fill="rgba(80,53,34,1)"/>
- <circle cx="63" cy="41" r="1" fill="rgba(64,35,17,1)"/>
- <circle cx="64" cy="41" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="65" cy="41" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="41" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="41" r="1" fill="rgba(51,23,9,1)"/>
- <circle cx="68" cy="41" r="1" fill="rgba(15,3,0,1)"/>
- <circle cx="69" cy="41" r="1" fill="black"/>
- <circle cx="70" cy="41" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="71" cy="41" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="72" cy="41" r="1" fill="rgba(10,4,1,1)"/>
- <circle cx="73" cy="41" r="1" fill="rgba(19,8,3,1)"/>
- <circle cx="74" cy="41" r="1" fill="rgba(22,11,5,1)"/>
- <circle cx="75" cy="41" r="1" fill="rgba(26,14,7,1)"/>
- <circle cx="76" cy="41" r="1" fill="rgba(31,18,9,1)"/>
- <circle cx="77" cy="41" r="1" fill="rgba(37,24,13,1)"/>
- <circle cx="78" cy="41" r="1" fill="rgba(36,24,14,1)"/>
- <circle cx="79" cy="41" r="1" fill="rgba(0,7,3,1)"/>
- <circle cx="80" cy="41" r="1" fill="rgba(39,0,0,1)"/>
- <circle cx="81" cy="41" r="1" fill="rgba(176,108,74,1)"/>
- <circle cx="82" cy="41" r="1" fill="rgba(247,193,169,1)"/>
- <circle cx="83" cy="41" r="1" fill="rgba(214,70,34,1)"/>
- <circle cx="84" cy="41" r="1" fill="rgba(203,34,8,1)"/>
- <circle cx="85" cy="41" r="1" fill="rgba(208,50,17,1)"/>
- <circle cx="86" cy="41" r="1" fill="rgba(209,54,20,1)"/>
- <circle cx="87" cy="41" r="1" fill="rgba(210,59,22,1)"/>
- <circle cx="88" cy="41" r="1" fill="rgba(213,64,24,1)"/>
- <circle cx="89" cy="41" r="1" fill="rgba(214,68,27,1)"/>
- <circle cx="90" cy="41" r="1" fill="rgba(215,72,29,1)"/>
- <circle cx="91" cy="41" r="1" fill="rgba(215,75,30,1)"/>
- <circle cx="92" cy="41" r="1" fill="rgba(214,75,30,1)"/>
- <circle cx="93" cy="41" r="1" fill="rgba(213,74,29,1)"/>
- <circle cx="94" cy="41" r="1" fill="rgba(210,70,26,1)"/>
- <circle cx="95" cy="41" r="1" fill="rgba(207,65,23,1)"/>
- <circle cx="96" cy="41" r="1" fill="rgba(214,65,22,0.976471)"/>
- <circle cx="97" cy="41" r="1" fill="rgba(183,55,18,0.223529)"/>
- <circle cx="98" cy="41" r="1" fill="rgba(62,30,13,0)"/>
- <circle cx="99" cy="41" r="1" fill="rgba(64,34,16,0)"/>
- <circle cx="100" cy="41" r="1" fill="rgba(73,41,20,0)"/>
- <circle cx="101" cy="41" r="1" fill="rgba(80,47,25,0)"/>
- <circle cx="102" cy="41" r="1" fill="rgba(85,52,29,0)"/>
- <circle cx="103" cy="41" r="1" fill="rgba(91,58,33,0.0588235)"/>
- <circle cx="104" cy="41" r="1" fill="rgba(96,64,37,0.356863)"/>
- <circle cx="105" cy="41" r="1" fill="rgba(99,67,41,0.443137)"/>
- <circle cx="106" cy="41" r="1" fill="rgba(98,66,40,0.0784314)"/>
- <circle cx="107" cy="41" r="1" fill="rgba(97,65,38,0.121569)"/>
- <circle cx="108" cy="41" r="1" fill="rgba(96,64,37,0.615686)"/>
- <circle cx="109" cy="41" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="110" cy="41" r="1" fill="rgba(87,55,30,1)"/>
- <circle cx="111" cy="41" r="1" fill="rgba(81,48,26,0.988235)"/>
- <circle cx="112" cy="41" r="1" fill="rgba(65,35,17,0.819608)"/>
- <circle cx="113" cy="41" r="1" fill="rgba(40,17,6,0.529412)"/>
- <circle cx="114" cy="41" r="1" fill="rgba(31,11,3,0.0588235)"/>
- <circle cx="115" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="41" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="42" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="42" r="1" fill="rgba(17,4,0,0.0470588)"/>
- <circle cx="13" cy="42" r="1" fill="rgba(21,7,1,0.203922)"/>
- <circle cx="14" cy="42" r="1" fill="rgba(40,19,7,0.466667)"/>
- <circle cx="15" cy="42" r="1" fill="rgba(53,27,11,0.596078)"/>
- <circle cx="16" cy="42" r="1" fill="rgba(58,31,14,0.482353)"/>
- <circle cx="17" cy="42" r="1" fill="rgba(26,10,3,0.207843)"/>
- <circle cx="18" cy="42" r="1" fill="rgba(42,20,7,0.176471)"/>
- <circle cx="19" cy="42" r="1" fill="rgba(71,43,22,0.266667)"/>
- <circle cx="20" cy="42" r="1" fill="rgba(80,49,26,0.388235)"/>
- <circle cx="21" cy="42" r="1" fill="rgba(98,66,40,0.607843)"/>
- <circle cx="22" cy="42" r="1" fill="rgba(101,68,42,0.956863)"/>
- <circle cx="23" cy="42" r="1" fill="rgba(94,62,36,1)"/>
- <circle cx="24" cy="42" r="1" fill="rgba(88,56,32,1)"/>
- <circle cx="25" cy="42" r="1" fill="rgba(83,51,27,1)"/>
- <circle cx="26" cy="42" r="1" fill="rgba(77,46,24,1)"/>
- <circle cx="27" cy="42" r="1" fill="rgba(73,41,20,1)"/>
- <circle cx="28" cy="42" r="1" fill="rgba(67,35,16,1)"/>
- <circle cx="29" cy="42" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="30" cy="42" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="31" cy="42" r="1" fill="rgba(43,23,11,1)"/>
- <circle cx="32" cy="42" r="1" fill="rgba(164,87,37,1)"/>
- <circle cx="33" cy="42" r="1" fill="rgba(255,159,79,1)"/>
- <circle cx="34" cy="42" r="1" fill="rgba(255,159,79,1)"/>
- <circle cx="35" cy="42" r="1" fill="rgba(255,157,71,1)"/>
- <circle cx="36" cy="42" r="1" fill="rgba(255,154,61,1)"/>
- <circle cx="37" cy="42" r="1" fill="rgba(254,154,62,1)"/>
- <circle cx="38" cy="42" r="1" fill="rgba(253,153,63,1)"/>
- <circle cx="39" cy="42" r="1" fill="rgba(252,151,60,1)"/>
- <circle cx="40" cy="42" r="1" fill="rgba(252,148,56,1)"/>
- <circle cx="41" cy="42" r="1" fill="rgba(251,144,50,1)"/>
- <circle cx="42" cy="42" r="1" fill="rgba(250,141,46,1)"/>
- <circle cx="43" cy="42" r="1" fill="rgba(250,137,42,1)"/>
- <circle cx="44" cy="42" r="1" fill="rgba(250,134,37,1)"/>
- <circle cx="45" cy="42" r="1" fill="rgba(250,133,33,1)"/>
- <circle cx="46" cy="42" r="1" fill="rgba(251,131,30,1)"/>
- <circle cx="47" cy="42" r="1" fill="rgba(251,128,26,1)"/>
- <circle cx="48" cy="42" r="1" fill="rgba(252,125,20,1)"/>
- <circle cx="49" cy="42" r="1" fill="rgba(253,120,10,1)"/>
- <circle cx="50" cy="42" r="1" fill="rgba(255,118,1,1)"/>
- <circle cx="51" cy="42" r="1" fill="rgba(242,101,0,1)"/>
- <circle cx="52" cy="42" r="1" fill="rgba(147,47,0,1)"/>
- <circle cx="53" cy="42" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="54" cy="42" r="1" fill="rgba(21,13,7,1)"/>
- <circle cx="55" cy="42" r="1" fill="rgba(141,110,80,1)"/>
- <circle cx="56" cy="42" r="1" fill="rgba(225,213,200,1)"/>
- <circle cx="57" cy="42" r="1" fill="rgba(255,254,254,1)"/>
- <circle cx="58" cy="42" r="1" fill="rgba(250,250,252,1)"/>
- <circle cx="59" cy="42" r="1" fill="rgba(214,204,196,1)"/>
- <circle cx="60" cy="42" r="1" fill="rgba(175,158,142,1)"/>
- <circle cx="61" cy="42" r="1" fill="rgba(130,105,86,1)"/>
- <circle cx="62" cy="42" r="1" fill="rgba(90,64,45,1)"/>
- <circle cx="63" cy="42" r="1" fill="rgba(73,43,24,1)"/>
- <circle cx="64" cy="42" r="1" fill="rgba(59,29,13,1)"/>
- <circle cx="65" cy="42" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="42" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="42" r="1" fill="rgba(50,23,9,1)"/>
- <circle cx="68" cy="42" r="1" fill="rgba(12,3,0,1)"/>
- <circle cx="69" cy="42" r="1" fill="black"/>
- <circle cx="70" cy="42" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="71" cy="42" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="72" cy="42" r="1" fill="rgba(4,1,0,1)"/>
- <circle cx="73" cy="42" r="1" fill="rgba(12,5,1,1)"/>
- <circle cx="74" cy="42" r="1" fill="rgba(17,8,3,1)"/>
- <circle cx="75" cy="42" r="1" fill="rgba(24,13,6,1)"/>
- <circle cx="76" cy="42" r="1" fill="rgba(31,19,9,1)"/>
- <circle cx="77" cy="42" r="1" fill="rgba(15,13,5,1)"/>
- <circle cx="78" cy="42" r="1" fill="black"/>
- <circle cx="79" cy="42" r="1" fill="rgba(103,22,6,1)"/>
- <circle cx="80" cy="42" r="1" fill="rgba(219,155,124,1)"/>
- <circle cx="81" cy="42" r="1" fill="rgba(244,175,147,1)"/>
- <circle cx="82" cy="42" r="1" fill="rgba(207,50,19,1)"/>
- <circle cx="83" cy="42" r="1" fill="rgba(203,33,8,1)"/>
- <circle cx="84" cy="42" r="1" fill="rgba(207,48,16,1)"/>
- <circle cx="85" cy="42" r="1" fill="rgba(210,53,19,1)"/>
- <circle cx="86" cy="42" r="1" fill="rgba(211,58,22,1)"/>
- <circle cx="87" cy="42" r="1" fill="rgba(213,63,25,1)"/>
- <circle cx="88" cy="42" r="1" fill="rgba(214,68,27,1)"/>
- <circle cx="89" cy="42" r="1" fill="rgba(215,73,30,1)"/>
- <circle cx="90" cy="42" r="1" fill="rgba(217,77,33,1)"/>
- <circle cx="91" cy="42" r="1" fill="rgba(217,81,34,1)"/>
- <circle cx="92" cy="42" r="1" fill="rgba(217,82,35,1)"/>
- <circle cx="93" cy="42" r="1" fill="rgba(216,81,34,1)"/>
- <circle cx="94" cy="42" r="1" fill="rgba(214,77,31,1)"/>
- <circle cx="95" cy="42" r="1" fill="rgba(211,73,28,1)"/>
- <circle cx="96" cy="42" r="1" fill="rgba(216,70,25,1)"/>
- <circle cx="97" cy="42" r="1" fill="rgba(172,55,19,0.882353)"/>
- <circle cx="98" cy="42" r="1" fill="rgba(53,27,11,0.709804)"/>
- <circle cx="99" cy="42" r="1" fill="rgba(64,34,16,0.643137)"/>
- <circle cx="100" cy="42" r="1" fill="rgba(73,41,20,0.6)"/>
- <circle cx="101" cy="42" r="1" fill="rgba(78,46,24,0.639216)"/>
- <circle cx="102" cy="42" r="1" fill="rgba(84,51,28,0.729412)"/>
- <circle cx="103" cy="42" r="1" fill="rgba(88,56,31,0.886275)"/>
- <circle cx="104" cy="42" r="1" fill="rgba(93,60,35,1)"/>
- <circle cx="105" cy="42" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="106" cy="42" r="1" fill="rgba(96,64,38,0.894118)"/>
- <circle cx="107" cy="42" r="1" fill="rgba(95,63,37,0.921569)"/>
- <circle cx="108" cy="42" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="109" cy="42" r="1" fill="rgba(88,56,32,1)"/>
- <circle cx="110" cy="42" r="1" fill="rgba(80,48,25,0.886275)"/>
- <circle cx="111" cy="42" r="1" fill="rgba(42,19,7,0.517647)"/>
- <circle cx="112" cy="42" r="1" fill="rgba(10,2,0,0.411765)"/>
- <circle cx="113" cy="42" r="1" fill="rgba(15,2,0,0.298039)"/>
- <circle cx="114" cy="42" r="1" fill="rgba(31,12,3,0.0431373)"/>
- <circle cx="115" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="42" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="43" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="43" r="1" fill="rgba(29,11,3,0.00392157)"/>
- <circle cx="14" cy="43" r="1" fill="rgba(29,10,3,0.0823529)"/>
- <circle cx="15" cy="43" r="1" fill="rgba(12,4,0,0.266667)"/>
- <circle cx="16" cy="43" r="1" fill="rgba(0,0,0,0.407843)"/>
- <circle cx="17" cy="43" r="1" fill="rgba(0,0,0,0.4)"/>
- <circle cx="18" cy="43" r="1" fill="rgba(0,0,0,0.337255)"/>
- <circle cx="19" cy="43" r="1" fill="rgba(0,0,0,0.258824)"/>
- <circle cx="20" cy="43" r="1" fill="rgba(31,12,4,0.0980392)"/>
- <circle cx="21" cy="43" r="1" fill="rgba(51,26,11,0)"/>
- <circle cx="22" cy="43" r="1" fill="rgba(70,42,21,0.176471)"/>
- <circle cx="23" cy="43" r="1" fill="rgba(86,54,30,0.627451)"/>
- <circle cx="24" cy="43" r="1" fill="rgba(84,52,29,0.901961)"/>
- <circle cx="25" cy="43" r="1" fill="rgba(83,50,27,0.968627)"/>
- <circle cx="26" cy="43" r="1" fill="rgba(78,46,24,0.917647)"/>
- <circle cx="27" cy="43" r="1" fill="rgba(70,40,20,0.584314)"/>
- <circle cx="28" cy="43" r="1" fill="rgba(65,34,16,0.396078)"/>
- <circle cx="29" cy="43" r="1" fill="rgba(63,32,14,0.478431)"/>
- <circle cx="30" cy="43" r="1" fill="rgba(42,22,10,0.737255)"/>
- <circle cx="31" cy="43" r="1" fill="rgba(85,43,20,0.960784)"/>
- <circle cx="32" cy="43" r="1" fill="rgba(239,153,91,1)"/>
- <circle cx="33" cy="43" r="1" fill="rgba(255,176,111,1)"/>
- <circle cx="34" cy="43" r="1" fill="rgba(255,173,105,1)"/>
- <circle cx="35" cy="43" r="1" fill="rgba(255,169,92,1)"/>
- <circle cx="36" cy="43" r="1" fill="rgba(255,162,77,1)"/>
- <circle cx="37" cy="43" r="1" fill="rgba(254,160,72,1)"/>
- <circle cx="38" cy="43" r="1" fill="rgba(253,159,72,1)"/>
- <circle cx="39" cy="43" r="1" fill="rgba(252,156,68,1)"/>
- <circle cx="40" cy="43" r="1" fill="rgba(252,152,63,1)"/>
- <circle cx="41" cy="43" r="1" fill="rgba(251,148,56,1)"/>
- <circle cx="42" cy="43" r="1" fill="rgba(251,145,51,1)"/>
- <circle cx="43" cy="43" r="1" fill="rgba(250,141,47,1)"/>
- <circle cx="44" cy="43" r="1" fill="rgba(250,138,42,1)"/>
- <circle cx="45" cy="43" r="1" fill="rgba(250,136,38,1)"/>
- <circle cx="46" cy="43" r="1" fill="rgba(251,136,36,1)"/>
- <circle cx="47" cy="43" r="1" fill="rgba(251,135,32,1)"/>
- <circle cx="48" cy="43" r="1" fill="rgba(252,132,25,1)"/>
- <circle cx="49" cy="43" r="1" fill="rgba(252,127,15,1)"/>
- <circle cx="50" cy="43" r="1" fill="rgba(253,120,3,1)"/>
- <circle cx="51" cy="43" r="1" fill="rgba(255,116,0,1)"/>
- <circle cx="52" cy="43" r="1" fill="rgba(255,112,0,1)"/>
- <circle cx="53" cy="43" r="1" fill="rgba(217,83,0,1)"/>
- <circle cx="54" cy="43" r="1" fill="rgba(115,32,0,1)"/>
- <circle cx="55" cy="43" r="1" fill="black"/>
- <circle cx="56" cy="43" r="1" fill="rgba(40,25,13,1)"/>
- <circle cx="57" cy="43" r="1" fill="rgba(145,115,86,1)"/>
- <circle cx="58" cy="43" r="1" fill="rgba(225,213,199,1)"/>
- <circle cx="59" cy="43" r="1" fill="rgba(240,238,236,1)"/>
- <circle cx="60" cy="43" r="1" fill="rgba(207,196,188,1)"/>
- <circle cx="61" cy="43" r="1" fill="rgba(162,141,123,1)"/>
- <circle cx="62" cy="43" r="1" fill="rgba(111,86,66,1)"/>
- <circle cx="63" cy="43" r="1" fill="rgba(81,53,35,1)"/>
- <circle cx="64" cy="43" r="1" fill="rgba(63,32,14,1)"/>
- <circle cx="65" cy="43" r="1" fill="rgba(61,30,13,1)"/>
- <circle cx="66" cy="43" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="43" r="1" fill="rgba(47,21,8,1)"/>
- <circle cx="68" cy="43" r="1" fill="rgba(12,2,0,1)"/>
- <circle cx="69" cy="43" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="70" cy="43" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="71" cy="43" r="1" fill="black"/>
- <circle cx="72" cy="43" r="1" fill="black"/>
- <circle cx="73" cy="43" r="1" fill="rgba(12,3,0,1)"/>
- <circle cx="74" cy="43" r="1" fill="rgba(26,13,5,1)"/>
- <circle cx="75" cy="43" r="1" fill="rgba(21,13,5,1)"/>
- <circle cx="76" cy="43" r="1" fill="rgba(15,0,0,1)"/>
- <circle cx="77" cy="43" r="1" fill="rgba(83,3,0,1)"/>
- <circle cx="78" cy="43" r="1" fill="rgba(184,91,54,1)"/>
- <circle cx="79" cy="43" r="1" fill="rgba(247,194,171,1)"/>
- <circle cx="80" cy="43" r="1" fill="rgba(234,140,103,1)"/>
- <circle cx="81" cy="43" r="1" fill="rgba(205,34,8,1)"/>
- <circle cx="82" cy="43" r="1" fill="rgba(204,35,9,1)"/>
- <circle cx="83" cy="43" r="1" fill="rgba(207,45,16,1)"/>
- <circle cx="84" cy="43" r="1" fill="rgba(210,51,18,1)"/>
- <circle cx="85" cy="43" r="1" fill="rgba(210,57,21,1)"/>
- <circle cx="86" cy="43" r="1" fill="rgba(212,62,24,1)"/>
- <circle cx="87" cy="43" r="1" fill="rgba(214,67,27,1)"/>
- <circle cx="88" cy="43" r="1" fill="rgba(216,71,30,1)"/>
- <circle cx="89" cy="43" r="1" fill="rgba(217,76,33,1)"/>
- <circle cx="90" cy="43" r="1" fill="rgba(218,81,36,1)"/>
- <circle cx="91" cy="43" r="1" fill="rgba(219,85,38,1)"/>
- <circle cx="92" cy="43" r="1" fill="rgba(220,87,40,1)"/>
- <circle cx="93" cy="43" r="1" fill="rgba(219,88,39,1)"/>
- <circle cx="94" cy="43" r="1" fill="rgba(217,85,37,1)"/>
- <circle cx="95" cy="43" r="1" fill="rgba(214,80,33,1)"/>
- <circle cx="96" cy="43" r="1" fill="rgba(214,76,30,1)"/>
- <circle cx="97" cy="43" r="1" fill="rgba(213,72,27,1)"/>
- <circle cx="98" cy="43" r="1" fill="rgba(101,37,14,1)"/>
- <circle cx="99" cy="43" r="1" fill="rgba(50,29,13,1)"/>
- <circle cx="100" cy="43" r="1" fill="rgba(69,37,18,1)"/>
- <circle cx="101" cy="43" r="1" fill="rgba(74,42,21,1)"/>
- <circle cx="102" cy="43" r="1" fill="rgba(80,47,24,1)"/>
- <circle cx="103" cy="43" r="1" fill="rgba(84,51,27,1)"/>
- <circle cx="104" cy="43" r="1" fill="rgba(86,54,30,1)"/>
- <circle cx="105" cy="43" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="106" cy="43" r="1" fill="rgba(90,57,33,1)"/>
- <circle cx="107" cy="43" r="1" fill="rgba(88,57,31,1)"/>
- <circle cx="108" cy="43" r="1" fill="rgba(86,54,30,1)"/>
- <circle cx="109" cy="43" r="1" fill="rgba(83,50,27,0.886275)"/>
- <circle cx="110" cy="43" r="1" fill="rgba(42,18,7,0.396078)"/>
- <circle cx="111" cy="43" r="1" fill="rgba(0,0,0,0.423529)"/>
- <circle cx="112" cy="43" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="113" cy="43" r="1" fill="rgba(21,6,1,0.294118)"/>
- <circle cx="114" cy="43" r="1" fill="rgba(34,14,4,0.0235294)"/>
- <circle cx="115" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="43" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="44" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="44" r="1" fill="rgba(33,12,3,0.0313725)"/>
- <circle cx="16" cy="44" r="1" fill="rgba(28,10,3,0.207843)"/>
- <circle cx="17" cy="44" r="1" fill="rgba(12,3,0,0.415686)"/>
- <circle cx="18" cy="44" r="1" fill="rgba(0,0,0,0.482353)"/>
- <circle cx="19" cy="44" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="20" cy="44" r="1" fill="rgba(10,3,0,0.423529)"/>
- <circle cx="21" cy="44" r="1" fill="rgba(29,12,4,0.290196)"/>
- <circle cx="22" cy="44" r="1" fill="rgba(29,12,4,0.0980392)"/>
- <circle cx="23" cy="44" r="1" fill="rgba(33,14,5,0.00392157)"/>
- <circle cx="24" cy="44" r="1" fill="rgba(51,27,11,0.0588235)"/>
- <circle cx="25" cy="44" r="1" fill="rgba(69,40,19,0.152941)"/>
- <circle cx="26" cy="44" r="1" fill="rgba(61,32,14,0.0627451)"/>
- <circle cx="27" cy="44" r="1" fill="rgba(54,24,10,0)"/>
- <circle cx="28" cy="44" r="1" fill="rgba(55,21,8,0)"/>
- <circle cx="29" cy="44" r="1" fill="rgba(42,21,9,0)"/>
- <circle cx="30" cy="44" r="1" fill="rgba(113,55,24,0)"/>
- <circle cx="31" cy="44" r="1" fill="rgba(210,130,72,0.6)"/>
- <circle cx="32" cy="44" r="1" fill="rgba(255,186,134,1)"/>
- <circle cx="33" cy="44" r="1" fill="rgba(255,185,134,1)"/>
- <circle cx="34" cy="44" r="1" fill="rgba(255,182,119,1)"/>
- <circle cx="35" cy="44" r="1" fill="rgba(255,176,106,1)"/>
- <circle cx="36" cy="44" r="1" fill="rgba(255,169,91,1)"/>
- <circle cx="37" cy="44" r="1" fill="rgba(254,165,83,1)"/>
- <circle cx="38" cy="44" r="1" fill="rgba(253,164,82,1)"/>
- <circle cx="39" cy="44" r="1" fill="rgba(252,160,77,1)"/>
- <circle cx="40" cy="44" r="1" fill="rgba(252,156,70,1)"/>
- <circle cx="41" cy="44" r="1" fill="rgba(251,151,62,1)"/>
- <circle cx="42" cy="44" r="1" fill="rgba(251,147,56,1)"/>
- <circle cx="43" cy="44" r="1" fill="rgba(250,143,49,1)"/>
- <circle cx="44" cy="44" r="1" fill="rgba(250,139,45,1)"/>
- <circle cx="45" cy="44" r="1" fill="rgba(251,138,42,1)"/>
- <circle cx="46" cy="44" r="1" fill="rgba(251,138,39,1)"/>
- <circle cx="47" cy="44" r="1" fill="rgba(251,137,36,1)"/>
- <circle cx="48" cy="44" r="1" fill="rgba(252,136,29,1)"/>
- <circle cx="49" cy="44" r="1" fill="rgba(252,132,20,1)"/>
- <circle cx="50" cy="44" r="1" fill="rgba(253,126,5,1)"/>
- <circle cx="51" cy="44" r="1" fill="rgba(252,120,0,1)"/>
- <circle cx="52" cy="44" r="1" fill="rgba(253,114,0,1)"/>
- <circle cx="53" cy="44" r="1" fill="rgba(255,110,0,1)"/>
- <circle cx="54" cy="44" r="1" fill="rgba(255,102,0,1)"/>
- <circle cx="55" cy="44" r="1" fill="rgba(200,68,0,1)"/>
- <circle cx="56" cy="44" r="1" fill="rgba(101,21,0,1)"/>
- <circle cx="57" cy="44" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="58" cy="44" r="1" fill="rgba(34,22,10,1)"/>
- <circle cx="59" cy="44" r="1" fill="rgba(129,98,69,1)"/>
- <circle cx="60" cy="44" r="1" fill="rgba(182,161,140,1)"/>
- <circle cx="61" cy="44" r="1" fill="rgba(186,170,156,1)"/>
- <circle cx="62" cy="44" r="1" fill="rgba(148,127,108,1)"/>
- <circle cx="63" cy="44" r="1" fill="rgba(98,72,53,1)"/>
- <circle cx="64" cy="44" r="1" fill="rgba(68,38,20,1)"/>
- <circle cx="65" cy="44" r="1" fill="rgba(59,28,12,1)"/>
- <circle cx="66" cy="44" r="1" fill="rgba(62,31,14,1)"/>
- <circle cx="67" cy="44" r="1" fill="rgba(45,20,7,1)"/>
- <circle cx="68" cy="44" r="1" fill="black"/>
- <circle cx="69" cy="44" r="1" fill="black"/>
- <circle cx="70" cy="44" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="71" cy="44" r="1" fill="rgba(17,5,1,1)"/>
- <circle cx="72" cy="44" r="1" fill="rgba(28,12,4,1)"/>
- <circle cx="73" cy="44" r="1" fill="rgba(21,12,4,1)"/>
- <circle cx="74" cy="44" r="1" fill="rgba(24,0,0,1)"/>
- <circle cx="75" cy="44" r="1" fill="rgba(87,12,2,1)"/>
- <circle cx="76" cy="44" r="1" fill="rgba(180,85,48,1)"/>
- <circle cx="77" cy="44" r="1" fill="rgba(239,168,135,1)"/>
- <circle cx="78" cy="44" r="1" fill="rgba(242,161,126,1)"/>
- <circle cx="79" cy="44" r="1" fill="rgba(217,72,33,1)"/>
- <circle cx="80" cy="44" r="1" fill="rgba(205,26,3,1)"/>
- <circle cx="81" cy="44" r="1" fill="rgba(207,40,10,1)"/>
- <circle cx="82" cy="44" r="1" fill="rgba(208,45,14,1)"/>
- <circle cx="83" cy="44" r="1" fill="rgba(209,49,17,1)"/>
- <circle cx="84" cy="44" r="1" fill="rgba(210,54,20,1)"/>
- <circle cx="85" cy="44" r="1" fill="rgba(213,60,23,1)"/>
- <circle cx="86" cy="44" r="1" fill="rgba(214,65,27,1)"/>
- <circle cx="87" cy="44" r="1" fill="rgba(215,69,30,1)"/>
- <circle cx="88" cy="44" r="1" fill="rgba(217,74,32,1)"/>
- <circle cx="89" cy="44" r="1" fill="rgba(218,78,34,1)"/>
- <circle cx="90" cy="44" r="1" fill="rgba(219,83,37,1)"/>
- <circle cx="91" cy="44" r="1" fill="rgba(221,87,40,1)"/>
- <circle cx="92" cy="44" r="1" fill="rgba(221,90,42,1)"/>
- <circle cx="93" cy="44" r="1" fill="rgba(222,92,43,1)"/>
- <circle cx="94" cy="44" r="1" fill="rgba(221,92,43,1)"/>
- <circle cx="95" cy="44" r="1" fill="rgba(219,88,39,1)"/>
- <circle cx="96" cy="44" r="1" fill="rgba(216,83,35,1)"/>
- <circle cx="97" cy="44" r="1" fill="rgba(222,81,32,1)"/>
- <circle cx="98" cy="44" r="1" fill="rgba(178,63,24,0.996078)"/>
- <circle cx="99" cy="44" r="1" fill="rgba(51,26,11,0.890196)"/>
- <circle cx="100" cy="44" r="1" fill="rgba(53,30,14,0.827451)"/>
- <circle cx="101" cy="44" r="1" fill="rgba(70,39,19,0.827451)"/>
- <circle cx="102" cy="44" r="1" fill="rgba(74,44,22,0.827451)"/>
- <circle cx="103" cy="44" r="1" fill="rgba(80,47,24,0.909804)"/>
- <circle cx="104" cy="44" r="1" fill="rgba(83,50,27,0.956863)"/>
- <circle cx="105" cy="44" r="1" fill="rgba(85,53,29,0.992157)"/>
- <circle cx="106" cy="44" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="107" cy="44" r="1" fill="rgba(84,52,28,1)"/>
- <circle cx="108" cy="44" r="1" fill="rgba(83,49,27,0.913725)"/>
- <circle cx="109" cy="44" r="1" fill="rgba(55,29,13,0.368627)"/>
- <circle cx="110" cy="44" r="1" fill="rgba(10,2,0,0.356863)"/>
- <circle cx="111" cy="44" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="112" cy="44" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="113" cy="44" r="1" fill="rgba(17,5,1,0.286275)"/>
- <circle cx="114" cy="44" r="1" fill="rgba(28,11,3,0.0156863)"/>
- <circle cx="115" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="44" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="45" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="45" r="1" fill="rgba(34,14,4,0.00392157)"/>
- <circle cx="17" cy="45" r="1" fill="rgba(36,15,5,0.137255)"/>
- <circle cx="18" cy="45" r="1" fill="rgba(22,8,2,0.34902)"/>
- <circle cx="19" cy="45" r="1" fill="rgba(7,1,0,0.45098)"/>
- <circle cx="20" cy="45" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="21" cy="45" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="22" cy="45" r="1" fill="rgba(12,3,0,0.415686)"/>
- <circle cx="23" cy="45" r="1" fill="rgba(17,5,1,0.305882)"/>
- <circle cx="24" cy="45" r="1" fill="rgba(39,18,7,0.184314)"/>
- <circle cx="25" cy="45" r="1" fill="rgba(51,27,11,0.0705882)"/>
- <circle cx="26" cy="45" r="1" fill="rgba(39,18,6,0.0588235)"/>
- <circle cx="27" cy="45" r="1" fill="rgba(37,15,5,0.0745098)"/>
- <circle cx="28" cy="45" r="1" fill="rgba(43,16,6,0.0470588)"/>
- <circle cx="29" cy="45" r="1" fill="rgba(0,1,1,0)"/>
- <circle cx="30" cy="45" r="1" fill="rgba(163,77,27,0.0745098)"/>
- <circle cx="31" cy="45" r="1" fill="rgba(255,171,94,0.886275)"/>
- <circle cx="32" cy="45" r="1" fill="rgba(255,178,123,1)"/>
- <circle cx="33" cy="45" r="1" fill="rgba(255,185,129,1)"/>
- <circle cx="34" cy="45" r="1" fill="rgba(255,182,119,1)"/>
- <circle cx="35" cy="45" r="1" fill="rgba(255,178,109,1)"/>
- <circle cx="36" cy="45" r="1" fill="rgba(255,173,98,1)"/>
- <circle cx="37" cy="45" r="1" fill="rgba(254,171,94,1)"/>
- <circle cx="38" cy="45" r="1" fill="rgba(253,168,90,1)"/>
- <circle cx="39" cy="45" r="1" fill="rgba(252,164,83,1)"/>
- <circle cx="40" cy="45" r="1" fill="rgba(252,159,74,1)"/>
- <circle cx="41" cy="45" r="1" fill="rgba(251,154,66,1)"/>
- <circle cx="42" cy="45" r="1" fill="rgba(251,149,58,1)"/>
- <circle cx="43" cy="45" r="1" fill="rgba(251,145,51,1)"/>
- <circle cx="44" cy="45" r="1" fill="rgba(251,141,46,1)"/>
- <circle cx="45" cy="45" r="1" fill="rgba(251,139,42,1)"/>
- <circle cx="46" cy="45" r="1" fill="rgba(251,138,40,1)"/>
- <circle cx="47" cy="45" r="1" fill="rgba(252,137,36,1)"/>
- <circle cx="48" cy="45" r="1" fill="rgba(252,136,30,1)"/>
- <circle cx="49" cy="45" r="1" fill="rgba(252,132,21,1)"/>
- <circle cx="50" cy="45" r="1" fill="rgba(253,127,7,1)"/>
- <circle cx="51" cy="45" r="1" fill="rgba(253,122,0,1)"/>
- <circle cx="52" cy="45" r="1" fill="rgba(252,118,0,1)"/>
- <circle cx="53" cy="45" r="1" fill="rgba(252,112,0,1)"/>
- <circle cx="54" cy="45" r="1" fill="rgba(251,105,0,1)"/>
- <circle cx="55" cy="45" r="1" fill="rgba(255,100,0,1)"/>
- <circle cx="56" cy="45" r="1" fill="rgba(251,88,0,1)"/>
- <circle cx="57" cy="45" r="1" fill="rgba(205,60,0,1)"/>
- <circle cx="58" cy="45" r="1" fill="rgba(116,23,0,1)"/>
- <circle cx="59" cy="45" r="1" fill="rgba(21,0,0,1)"/>
- <circle cx="60" cy="45" r="1" fill="rgba(12,10,4,1)"/>
- <circle cx="61" cy="45" r="1" fill="rgba(82,55,33,1)"/>
- <circle cx="62" cy="45" r="1" fill="rgba(119,90,64,1)"/>
- <circle cx="63" cy="45" r="1" fill="rgba(110,83,61,1)"/>
- <circle cx="64" cy="45" r="1" fill="rgba(74,43,24,1)"/>
- <circle cx="65" cy="45" r="1" fill="rgba(62,30,13,1)"/>
- <circle cx="66" cy="45" r="1" fill="rgba(58,29,13,1)"/>
- <circle cx="67" cy="45" r="1" fill="rgba(29,10,3,1)"/>
- <circle cx="68" cy="45" r="1" fill="rgba(19,5,1,1)"/>
- <circle cx="69" cy="45" r="1" fill="rgba(29,11,3,1)"/>
- <circle cx="70" cy="45" r="1" fill="rgba(29,16,6,1)"/>
- <circle cx="71" cy="45" r="1" fill="rgba(22,11,4,1)"/>
- <circle cx="72" cy="45" r="1" fill="rgba(43,4,0,1)"/>
- <circle cx="73" cy="45" r="1" fill="rgba(110,29,8,1)"/>
- <circle cx="74" cy="45" r="1" fill="rgba(190,99,60,1)"/>
- <circle cx="75" cy="45" r="1" fill="rgba(238,157,120,1)"/>
- <circle cx="76" cy="45" r="1" fill="rgba(239,141,100,1)"/>
- <circle cx="77" cy="45" r="1" fill="rgba(219,73,32,1)"/>
- <circle cx="78" cy="45" r="1" fill="rgba(207,26,3,1)"/>
- <circle cx="79" cy="45" r="1" fill="rgba(208,31,5,1)"/>
- <circle cx="80" cy="45" r="1" fill="rgba(210,41,10,1)"/>
- <circle cx="81" cy="45" r="1" fill="rgba(210,45,13,1)"/>
- <circle cx="82" cy="45" r="1" fill="rgba(210,47,16,1)"/>
- <circle cx="83" cy="45" r="1" fill="rgba(211,51,19,1)"/>
- <circle cx="84" cy="45" r="1" fill="rgba(212,56,22,1)"/>
- <circle cx="85" cy="45" r="1" fill="rgba(214,61,24,1)"/>
- <circle cx="86" cy="45" r="1" fill="rgba(217,67,27,1)"/>
- <circle cx="87" cy="45" r="1" fill="rgba(224,74,33,1)"/>
- <circle cx="88" cy="45" r="1" fill="rgba(227,78,35,1)"/>
- <circle cx="89" cy="45" r="1" fill="rgba(222,80,36,1)"/>
- <circle cx="90" cy="45" r="1" fill="rgba(219,83,37,1)"/>
- <circle cx="91" cy="45" r="1" fill="rgba(221,87,40,1)"/>
- <circle cx="92" cy="45" r="1" fill="rgba(221,91,43,1)"/>
- <circle cx="93" cy="45" r="1" fill="rgba(222,95,46,1)"/>
- <circle cx="94" cy="45" r="1" fill="rgba(223,96,47,1)"/>
- <circle cx="95" cy="45" r="1" fill="rgba(222,95,45,1)"/>
- <circle cx="96" cy="45" r="1" fill="rgba(220,90,41,1)"/>
- <circle cx="97" cy="45" r="1" fill="rgba(219,86,37,1)"/>
- <circle cx="98" cy="45" r="1" fill="rgba(224,85,35,0.988235)"/>
- <circle cx="99" cy="45" r="1" fill="rgba(185,70,27,0.298039)"/>
- <circle cx="100" cy="45" r="1" fill="rgba(104,44,18,0.0235294)"/>
- <circle cx="101" cy="45" r="1" fill="rgba(59,33,16,0.027451)"/>
- <circle cx="102" cy="45" r="1" fill="rgba(73,28,12,0.027451)"/>
- <circle cx="103" cy="45" r="1" fill="rgba(62,32,14,0.0509804)"/>
- <circle cx="104" cy="45" r="1" fill="rgba(65,36,17,0.113725)"/>
- <circle cx="105" cy="45" r="1" fill="rgba(54,27,12,0.231373)"/>
- <circle cx="106" cy="45" r="1" fill="rgba(59,32,14,0.403922)"/>
- <circle cx="107" cy="45" r="1" fill="rgba(62,33,15,0.486275)"/>
- <circle cx="108" cy="45" r="1" fill="rgba(58,30,13,0.262745)"/>
- <circle cx="109" cy="45" r="1" fill="rgba(22,9,2,0.294118)"/>
- <circle cx="110" cy="45" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="111" cy="45" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="112" cy="45" r="1" fill="rgba(4,0,0,0.443137)"/>
- <circle cx="113" cy="45" r="1" fill="rgba(21,6,1,0.235294)"/>
- <circle cx="114" cy="45" r="1" fill="rgba(29,11,3,0.0156863)"/>
- <circle cx="115" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="45" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="46" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="46" r="1" fill="rgba(43,20,8,0.0745098)"/>
- <circle cx="19" cy="46" r="1" fill="rgba(36,16,5,0.223529)"/>
- <circle cx="20" cy="46" r="1" fill="rgba(33,14,4,0.298039)"/>
- <circle cx="21" cy="46" r="1" fill="rgba(26,10,3,0.294118)"/>
- <circle cx="22" cy="46" r="1" fill="rgba(12,3,0,0.313725)"/>
- <circle cx="23" cy="46" r="1" fill="rgba(19,6,1,0.407843)"/>
- <circle cx="24" cy="46" r="1" fill="rgba(19,6,1,0.443137)"/>
- <circle cx="25" cy="46" r="1" fill="rgba(22,8,2,0.388235)"/>
- <circle cx="26" cy="46" r="1" fill="rgba(22,8,2,0.360784)"/>
- <circle cx="27" cy="46" r="1" fill="rgba(17,5,1,0.360784)"/>
- <circle cx="28" cy="46" r="1" fill="rgba(19,6,1,0.317647)"/>
- <circle cx="29" cy="46" r="1" fill="rgba(12,4,1,0.12549)"/>
- <circle cx="30" cy="46" r="1" fill="rgba(184,84,25,0.470588)"/>
- <circle cx="31" cy="46" r="1" fill="rgba(255,155,73,1)"/>
- <circle cx="32" cy="46" r="1" fill="rgba(255,167,97,1)"/>
- <circle cx="33" cy="46" r="1" fill="rgba(255,176,108,1)"/>
- <circle cx="34" cy="46" r="1" fill="rgba(255,178,108,1)"/>
- <circle cx="35" cy="46" r="1" fill="rgba(255,175,101,1)"/>
- <circle cx="36" cy="46" r="1" fill="rgba(255,173,96,1)"/>
- <circle cx="37" cy="46" r="1" fill="rgba(254,173,99,1)"/>
- <circle cx="38" cy="46" r="1" fill="rgba(253,170,93,1)"/>
- <circle cx="39" cy="46" r="1" fill="rgba(252,165,85,1)"/>
- <circle cx="40" cy="46" r="1" fill="rgba(252,159,76,1)"/>
- <circle cx="41" cy="46" r="1" fill="rgba(251,154,66,1)"/>
- <circle cx="42" cy="46" r="1" fill="rgba(251,149,59,1)"/>
- <circle cx="43" cy="46" r="1" fill="rgba(251,145,51,1)"/>
- <circle cx="44" cy="46" r="1" fill="rgba(251,141,45,1)"/>
- <circle cx="45" cy="46" r="1" fill="rgba(251,138,42,1)"/>
- <circle cx="46" cy="46" r="1" fill="rgba(251,136,37,1)"/>
- <circle cx="47" cy="46" r="1" fill="rgba(251,135,34,1)"/>
- <circle cx="48" cy="46" r="1" fill="rgba(252,133,28,1)"/>
- <circle cx="49" cy="46" r="1" fill="rgba(253,131,20,1)"/>
- <circle cx="50" cy="46" r="1" fill="rgba(253,127,7,1)"/>
- <circle cx="51" cy="46" r="1" fill="rgba(253,122,0,1)"/>
- <circle cx="52" cy="46" r="1" fill="rgba(252,119,0,1)"/>
- <circle cx="53" cy="46" r="1" fill="rgba(252,115,0,1)"/>
- <circle cx="54" cy="46" r="1" fill="rgba(250,109,0,1)"/>
- <circle cx="55" cy="46" r="1" fill="rgba(249,101,0,1)"/>
- <circle cx="56" cy="46" r="1" fill="rgba(248,93,0,1)"/>
- <circle cx="57" cy="46" r="1" fill="rgba(252,87,0,1)"/>
- <circle cx="58" cy="46" r="1" fill="rgba(250,78,0,1)"/>
- <circle cx="59" cy="46" r="1" fill="rgba(216,57,0,1)"/>
- <circle cx="60" cy="46" r="1" fill="rgba(140,27,0,1)"/>
- <circle cx="61" cy="46" r="1" fill="rgba(47,2,0,1)"/>
- <circle cx="62" cy="46" r="1" fill="black"/>
- <circle cx="63" cy="46" r="1" fill="rgba(28,14,5,1)"/>
- <circle cx="64" cy="46" r="1" fill="rgba(42,18,7,1)"/>
- <circle cx="65" cy="46" r="1" fill="rgba(45,19,7,1)"/>
- <circle cx="66" cy="46" r="1" fill="rgba(33,12,3,1)"/>
- <circle cx="67" cy="46" r="1" fill="rgba(22,8,2,1)"/>
- <circle cx="68" cy="46" r="1" fill="rgba(17,10,3,1)"/>
- <circle cx="69" cy="46" r="1" fill="rgba(19,3,0,1)"/>
- <circle cx="70" cy="46" r="1" fill="rgba(73,9,1,1)"/>
- <circle cx="71" cy="46" r="1" fill="rgba(145,48,18,1)"/>
- <circle cx="72" cy="46" r="1" fill="rgba(210,106,62,1)"/>
- <circle cx="73" cy="46" r="1" fill="rgba(239,134,90,1)"/>
- <circle cx="74" cy="46" r="1" fill="rgba(233,108,60,1)"/>
- <circle cx="75" cy="46" r="1" fill="rgba(217,52,13,1)"/>
- <circle cx="76" cy="46" r="1" fill="rgba(210,25,0,1)"/>
- <circle cx="77" cy="46" r="1" fill="rgba(210,31,3,1)"/>
- <circle cx="78" cy="46" r="1" fill="rgba(210,38,8,1)"/>
- <circle cx="79" cy="46" r="1" fill="rgba(211,41,10,1)"/>
- <circle cx="80" cy="46" r="1" fill="rgba(211,43,11,1)"/>
- <circle cx="81" cy="46" r="1" fill="rgba(211,47,13,1)"/>
- <circle cx="82" cy="46" r="1" fill="rgba(210,49,16,1)"/>
- <circle cx="83" cy="46" r="1" fill="rgba(211,52,19,1)"/>
- <circle cx="84" cy="46" r="1" fill="rgba(213,57,22,1)"/>
- <circle cx="85" cy="46" r="1" fill="rgba(219,63,25,1)"/>
- <circle cx="86" cy="46" r="1" fill="rgba(204,60,23,1)"/>
- <circle cx="87" cy="46" r="1" fill="rgba(149,41,13,1)"/>
- <circle cx="88" cy="46" r="1" fill="rgba(135,37,12,1)"/>
- <circle cx="89" cy="46" r="1" fill="rgba(190,63,26,1)"/>
- <circle cx="90" cy="46" r="1" fill="rgba(224,83,37,1)"/>
- <circle cx="91" cy="46" r="1" fill="rgba(221,86,38,1)"/>
- <circle cx="92" cy="46" r="1" fill="rgba(221,90,42,1)"/>
- <circle cx="93" cy="46" r="1" fill="rgba(223,95,45,1)"/>
- <circle cx="94" cy="46" r="1" fill="rgba(224,98,48,1)"/>
- <circle cx="95" cy="46" r="1" fill="rgba(224,99,48,1)"/>
- <circle cx="96" cy="46" r="1" fill="rgba(223,97,46,1)"/>
- <circle cx="97" cy="46" r="1" fill="rgba(221,93,42,1)"/>
- <circle cx="98" cy="46" r="1" fill="rgba(221,89,38,1)"/>
- <circle cx="99" cy="46" r="1" fill="rgba(236,95,39,0.647059)"/>
- <circle cx="100" cy="46" r="1" fill="rgba(142,51,18,0)"/>
- <circle cx="101" cy="46" r="1" fill="rgba(26,12,4,0)"/>
- <circle cx="102" cy="46" r="1" fill="rgba(71,14,4,0)"/>
- <circle cx="103" cy="46" r="1" fill="rgba(40,16,5,0)"/>
- <circle cx="104" cy="46" r="1" fill="rgba(37,17,6,0.0156863)"/>
- <circle cx="105" cy="46" r="1" fill="rgba(19,6,1,0.0666667)"/>
- <circle cx="106" cy="46" r="1" fill="rgba(33,14,4,0)"/>
- <circle cx="107" cy="46" r="1" fill="rgba(34,15,5,0.0117647)"/>
- <circle cx="108" cy="46" r="1" fill="rgba(29,12,3,0.266667)"/>
- <circle cx="109" cy="46" r="1" fill="rgba(4,0,0,0.454902)"/>
- <circle cx="110" cy="46" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="111" cy="46" r="1" fill="rgba(15,4,0,0.372549)"/>
- <circle cx="112" cy="46" r="1" fill="rgba(22,7,1,0.223529)"/>
- <circle cx="113" cy="46" r="1" fill="rgba(28,9,3,0.0666667)"/>
- <circle cx="114" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="46" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="47" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="47" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="47" r="1" fill="rgba(47,23,9,0.00784314)"/>
- <circle cx="20" cy="47" r="1" fill="rgba(46,22,9,0.0392157)"/>
- <circle cx="21" cy="47" r="1" fill="rgba(46,22,9,0.0352941)"/>
- <circle cx="22" cy="47" r="1" fill="rgba(24,10,2,0.0352941)"/>
- <circle cx="23" cy="47" r="1" fill="rgba(45,22,8,0.117647)"/>
- <circle cx="24" cy="47" r="1" fill="rgba(37,17,6,0.25098)"/>
- <circle cx="25" cy="47" r="1" fill="rgba(19,6,1,0.376471)"/>
- <circle cx="26" cy="47" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="27" cy="47" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="28" cy="47" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="29" cy="47" r="1" fill="rgba(31,6,0,0.435294)"/>
- <circle cx="30" cy="47" r="1" fill="rgba(236,106,24,0.878431)"/>
- <circle cx="31" cy="47" r="1" fill="rgba(255,142,52,1)"/>
- <circle cx="32" cy="47" r="1" fill="rgba(255,156,74,1)"/>
- <circle cx="33" cy="47" r="1" fill="rgba(255,166,87,1)"/>
- <circle cx="34" cy="47" r="1" fill="rgba(255,169,89,1)"/>
- <circle cx="35" cy="47" r="1" fill="rgba(255,168,86,1)"/>
- <circle cx="36" cy="47" r="1" fill="rgba(255,169,88,1)"/>
- <circle cx="37" cy="47" r="1" fill="rgba(254,170,92,1)"/>
- <circle cx="38" cy="47" r="1" fill="rgba(252,168,90,1)"/>
- <circle cx="39" cy="47" r="1" fill="rgba(252,164,83,1)"/>
- <circle cx="40" cy="47" r="1" fill="rgba(251,159,74,1)"/>
- <circle cx="41" cy="47" r="1" fill="rgba(251,153,66,1)"/>
- <circle cx="42" cy="47" r="1" fill="rgba(251,148,57,1)"/>
- <circle cx="43" cy="47" r="1" fill="rgba(251,144,50,1)"/>
- <circle cx="44" cy="47" r="1" fill="rgba(251,139,43,1)"/>
- <circle cx="45" cy="47" r="1" fill="rgba(251,136,38,1)"/>
- <circle cx="46" cy="47" r="1" fill="rgba(251,132,34,1)"/>
- <circle cx="47" cy="47" r="1" fill="rgba(252,130,30,1)"/>
- <circle cx="48" cy="47" r="1" fill="rgba(252,128,24,1)"/>
- <circle cx="49" cy="47" r="1" fill="rgba(253,126,17,1)"/>
- <circle cx="50" cy="47" r="1" fill="rgba(254,123,5,1)"/>
- <circle cx="51" cy="47" r="1" fill="rgba(254,120,0,1)"/>
- <circle cx="52" cy="47" r="1" fill="rgba(252,118,0,1)"/>
- <circle cx="53" cy="47" r="1" fill="rgba(252,115,0,1)"/>
- <circle cx="54" cy="47" r="1" fill="rgba(250,110,0,1)"/>
- <circle cx="55" cy="47" r="1" fill="rgba(249,105,0,1)"/>
- <circle cx="56" cy="47" r="1" fill="rgba(247,97,0,1)"/>
- <circle cx="57" cy="47" r="1" fill="rgba(244,89,0,1)"/>
- <circle cx="58" cy="47" r="1" fill="rgba(244,81,0,1)"/>
- <circle cx="59" cy="47" r="1" fill="rgba(246,75,0,1)"/>
- <circle cx="60" cy="47" r="1" fill="rgba(247,69,0,1)"/>
- <circle cx="61" cy="47" r="1" fill="rgba(225,54,0,1)"/>
- <circle cx="62" cy="47" r="1" fill="rgba(152,27,0,1)"/>
- <circle cx="63" cy="47" r="1" fill="rgba(39,1,0,1)"/>
- <circle cx="64" cy="47" r="1" fill="black"/>
- <circle cx="65" cy="47" r="1" fill="black"/>
- <circle cx="66" cy="47" r="1" fill="black"/>
- <circle cx="67" cy="47" r="1" fill="black"/>
- <circle cx="68" cy="47" r="1" fill="rgba(81,6,0,1)"/>
- <circle cx="69" cy="47" r="1" fill="rgba(173,47,14,1)"/>
- <circle cx="70" cy="47" r="1" fill="rgba(224,86,38,1)"/>
- <circle cx="71" cy="47" r="1" fill="rgba(236,100,48,1)"/>
- <circle cx="72" cy="47" r="1" fill="rgba(225,67,21,1)"/>
- <circle cx="73" cy="47" r="1" fill="rgba(215,35,2,1)"/>
- <circle cx="74" cy="47" r="1" fill="rgba(212,27,0,1)"/>
- <circle cx="75" cy="47" r="1" fill="rgba(214,35,3,1)"/>
- <circle cx="76" cy="47" r="1" fill="rgba(214,39,5,1)"/>
- <circle cx="77" cy="47" r="1" fill="rgba(214,42,8,1)"/>
- <circle cx="78" cy="47" r="1" fill="rgba(213,42,9,1)"/>
- <circle cx="79" cy="47" r="1" fill="rgba(213,43,11,1)"/>
- <circle cx="80" cy="47" r="1" fill="rgba(213,46,13,1)"/>
- <circle cx="81" cy="47" r="1" fill="rgba(212,48,15,1)"/>
- <circle cx="82" cy="47" r="1" fill="rgba(212,49,17,1)"/>
- <circle cx="83" cy="47" r="1" fill="rgba(211,53,19,1)"/>
- <circle cx="84" cy="47" r="1" fill="rgba(217,59,22,1)"/>
- <circle cx="85" cy="47" r="1" fill="rgba(190,49,18,1)"/>
- <circle cx="86" cy="47" r="1" fill="rgba(61,10,1,1)"/>
- <circle cx="87" cy="47" r="1" fill="black"/>
- <circle cx="88" cy="47" r="1" fill="black"/>
- <circle cx="89" cy="47" r="1" fill="rgba(26,3,0,1)"/>
- <circle cx="90" cy="47" r="1" fill="rgba(150,46,16,1)"/>
- <circle cx="91" cy="47" r="1" fill="rgba(226,84,37,1)"/>
- <circle cx="92" cy="47" r="1" fill="rgba(221,87,40,1)"/>
- <circle cx="93" cy="47" r="1" fill="rgba(222,93,44,1)"/>
- <circle cx="94" cy="47" r="1" fill="rgba(224,98,48,1)"/>
- <circle cx="95" cy="47" r="1" fill="rgba(225,101,49,1)"/>
- <circle cx="96" cy="47" r="1" fill="rgba(224,102,49,1)"/>
- <circle cx="97" cy="47" r="1" fill="rgba(224,98,47,1)"/>
- <circle cx="98" cy="47" r="1" fill="rgba(223,94,42,1)"/>
- <circle cx="99" cy="47" r="1" fill="rgba(230,95,41,0.960784)"/>
- <circle cx="100" cy="47" r="1" fill="rgba(128,46,15,0.188235)"/>
- <circle cx="101" cy="47" r="1" fill="rgba(19,10,3,0.027451)"/>
- <circle cx="102" cy="47" r="1" fill="rgba(45,17,6,0.0901961)"/>
- <circle cx="103" cy="47" r="1" fill="rgba(34,14,4,0.145098)"/>
- <circle cx="104" cy="47" r="1" fill="rgba(26,10,3,0.278431)"/>
- <circle cx="105" cy="47" r="1" fill="rgba(15,4,0,0.384314)"/>
- <circle cx="106" cy="47" r="1" fill="rgba(21,7,1,0.317647)"/>
- <circle cx="107" cy="47" r="1" fill="rgba(21,7,1,0.337255)"/>
- <circle cx="108" cy="47" r="1" fill="rgba(7,1,0,0.45098)"/>
- <circle cx="109" cy="47" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="110" cy="47" r="1" fill="rgba(12,4,0,0.392157)"/>
- <circle cx="111" cy="47" r="1" fill="rgba(31,12,3,0.160784)"/>
- <circle cx="112" cy="47" r="1" fill="rgba(29,12,3,0.0196078)"/>
- <circle cx="113" cy="47" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="114" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="47" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="48" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="48" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="48" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="20" cy="48" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="21" cy="48" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="22" cy="48" r="1" fill="rgba(24,10,2,0)"/>
- <circle cx="23" cy="48" r="1" fill="rgba(50,26,10,0)"/>
- <circle cx="24" cy="48" r="1" fill="rgba(49,25,10,0.00784314)"/>
- <circle cx="25" cy="48" r="1" fill="rgba(43,21,8,0.0705882)"/>
- <circle cx="26" cy="48" r="1" fill="rgba(36,16,5,0.266667)"/>
- <circle cx="27" cy="48" r="1" fill="rgba(7,2,0,0.447059)"/>
- <circle cx="28" cy="48" r="1" fill="rgba(0,0,0,0.45098)"/>
- <circle cx="29" cy="48" r="1" fill="rgba(112,31,2,0.607843)"/>
- <circle cx="30" cy="48" r="1" fill="rgba(255,112,19,1)"/>
- <circle cx="31" cy="48" r="1" fill="rgba(255,129,33,1)"/>
- <circle cx="32" cy="48" r="1" fill="rgba(255,145,50,1)"/>
- <circle cx="33" cy="48" r="1" fill="rgba(255,154,62,1)"/>
- <circle cx="34" cy="48" r="1" fill="rgba(255,159,68,1)"/>
- <circle cx="35" cy="48" r="1" fill="rgba(255,162,74,1)"/>
- <circle cx="36" cy="48" r="1" fill="rgba(254,165,80,1)"/>
- <circle cx="37" cy="48" r="1" fill="rgba(253,165,84,1)"/>
- <circle cx="38" cy="48" r="1" fill="rgba(252,164,82,1)"/>
- <circle cx="39" cy="48" r="1" fill="rgba(252,161,77,1)"/>
- <circle cx="40" cy="48" r="1" fill="rgba(251,157,70,1)"/>
- <circle cx="41" cy="48" r="1" fill="rgba(251,151,62,1)"/>
- <circle cx="42" cy="48" r="1" fill="rgba(251,146,55,1)"/>
- <circle cx="43" cy="48" r="1" fill="rgba(251,141,47,1)"/>
- <circle cx="44" cy="48" r="1" fill="rgba(253,138,41,1)"/>
- <circle cx="45" cy="48" r="1" fill="rgba(255,136,35,1)"/>
- <circle cx="46" cy="48" r="1" fill="rgba(255,134,30,1)"/>
- <circle cx="47" cy="48" r="1" fill="rgba(255,130,24,1)"/>
- <circle cx="48" cy="48" r="1" fill="rgba(255,124,19,1)"/>
- <circle cx="49" cy="48" r="1" fill="rgba(253,119,13,1)"/>
- <circle cx="50" cy="48" r="1" fill="rgba(254,116,3,1)"/>
- <circle cx="51" cy="48" r="1" fill="rgba(254,115,0,1)"/>
- <circle cx="52" cy="48" r="1" fill="rgba(252,114,0,1)"/>
- <circle cx="53" cy="48" r="1" fill="rgba(252,112,0,1)"/>
- <circle cx="54" cy="48" r="1" fill="rgba(250,110,0,1)"/>
- <circle cx="55" cy="48" r="1" fill="rgba(249,106,0,1)"/>
- <circle cx="56" cy="48" r="1" fill="rgba(247,100,0,1)"/>
- <circle cx="57" cy="48" r="1" fill="rgba(245,92,0,1)"/>
- <circle cx="58" cy="48" r="1" fill="rgba(243,85,0,1)"/>
- <circle cx="59" cy="48" r="1" fill="rgba(241,76,0,1)"/>
- <circle cx="60" cy="48" r="1" fill="rgba(238,69,0,1)"/>
- <circle cx="61" cy="48" r="1" fill="rgba(239,63,0,1)"/>
- <circle cx="62" cy="48" r="1" fill="rgba(244,58,0,1)"/>
- <circle cx="63" cy="48" r="1" fill="rgba(211,42,0,1)"/>
- <circle cx="64" cy="48" r="1" fill="rgba(84,11,0,1)"/>
- <circle cx="65" cy="48" r="1" fill="black"/>
- <circle cx="66" cy="48" r="1" fill="black"/>
- <circle cx="67" cy="48" r="1" fill="rgba(137,16,0,1)"/>
- <circle cx="68" cy="48" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="69" cy="48" r="1" fill="rgba(227,43,4,1)"/>
- <circle cx="70" cy="48" r="1" fill="rgba(220,42,4,1)"/>
- <circle cx="71" cy="48" r="1" fill="rgba(215,28,0,1)"/>
- <circle cx="72" cy="48" r="1" fill="rgba(216,33,0,1)"/>
- <circle cx="73" cy="48" r="1" fill="rgba(216,37,2,1)"/>
- <circle cx="74" cy="48" r="1" fill="rgba(216,40,4,1)"/>
- <circle cx="75" cy="48" r="1" fill="rgba(215,42,5,1)"/>
- <circle cx="76" cy="48" r="1" fill="rgba(214,43,6,1)"/>
- <circle cx="77" cy="48" r="1" fill="rgba(214,44,8,1)"/>
- <circle cx="78" cy="48" r="1" fill="rgba(214,45,10,1)"/>
- <circle cx="79" cy="48" r="1" fill="rgba(214,44,11,1)"/>
- <circle cx="80" cy="48" r="1" fill="rgba(213,47,13,1)"/>
- <circle cx="81" cy="48" r="1" fill="rgba(212,47,15,1)"/>
- <circle cx="82" cy="48" r="1" fill="rgba(212,48,16,1)"/>
- <circle cx="83" cy="48" r="1" fill="rgba(213,51,18,1)"/>
- <circle cx="84" cy="48" r="1" fill="rgba(212,53,19,1)"/>
- <circle cx="85" cy="48" r="1" fill="rgba(77,13,3,1)"/>
- <circle cx="86" cy="48" r="1" fill="black"/>
- <circle cx="87" cy="48" r="1" fill="black"/>
- <circle cx="88" cy="48" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="48" r="1" fill="black"/>
- <circle cx="90" cy="48" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="48" r="1" fill="rgba(167,53,19,1)"/>
- <circle cx="92" cy="48" r="1" fill="rgba(227,86,38,1)"/>
- <circle cx="93" cy="48" r="1" fill="rgba(221,89,41,1)"/>
- <circle cx="94" cy="48" r="1" fill="rgba(224,95,45,1)"/>
- <circle cx="95" cy="48" r="1" fill="rgba(224,101,48,1)"/>
- <circle cx="96" cy="48" r="1" fill="rgba(225,102,49,1)"/>
- <circle cx="97" cy="48" r="1" fill="rgba(225,101,48,1)"/>
- <circle cx="98" cy="48" r="1" fill="rgba(224,97,45,1)"/>
- <circle cx="99" cy="48" r="1" fill="rgba(232,98,43,1)"/>
- <circle cx="100" cy="48" r="1" fill="rgba(148,54,18,0.635294)"/>
- <circle cx="101" cy="48" r="1" fill="rgba(0,3,1,0.266667)"/>
- <circle cx="102" cy="48" r="1" fill="rgba(19,7,1,0.352941)"/>
- <circle cx="103" cy="48" r="1" fill="rgba(15,4,0,0.411765)"/>
- <circle cx="104" cy="48" r="1" fill="rgba(4,0,0,0.454902)"/>
- <circle cx="105" cy="48" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="106" cy="48" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="107" cy="48" r="1" fill="rgba(4,0,0,0.466667)"/>
- <circle cx="108" cy="48" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="109" cy="48" r="1" fill="rgba(10,1,0,0.439216)"/>
- <circle cx="110" cy="48" r="1" fill="rgba(28,11,3,0.215686)"/>
- <circle cx="111" cy="48" r="1" fill="rgba(34,15,5,0.0117647)"/>
- <circle cx="112" cy="48" r="1" fill="rgba(29,12,3,0)"/>
- <circle cx="113" cy="48" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="114" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="48" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="49" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="49" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="49" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="20" cy="49" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="21" cy="49" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="22" cy="49" r="1" fill="rgba(24,10,2,0)"/>
- <circle cx="23" cy="49" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="24" cy="49" r="1" fill="rgba(47,24,9,0)"/>
- <circle cx="25" cy="49" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="26" cy="49" r="1" fill="rgba(54,28,11,0.0196078)"/>
- <circle cx="27" cy="49" r="1" fill="rgba(34,16,5,0.184314)"/>
- <circle cx="28" cy="49" r="1" fill="rgba(0,0,0,0.337255)"/>
- <circle cx="29" cy="49" r="1" fill="rgba(188,63,6,0.768627)"/>
- <circle cx="30" cy="49" r="1" fill="rgba(255,114,18,1)"/>
- <circle cx="31" cy="49" r="1" fill="rgba(254,124,26,1)"/>
- <circle cx="32" cy="49" r="1" fill="rgba(255,138,37,1)"/>
- <circle cx="33" cy="49" r="1" fill="rgba(255,147,49,1)"/>
- <circle cx="34" cy="49" r="1" fill="rgba(254,154,58,1)"/>
- <circle cx="35" cy="49" r="1" fill="rgba(253,158,67,1)"/>
- <circle cx="36" cy="49" r="1" fill="rgba(253,160,72,1)"/>
- <circle cx="37" cy="49" r="1" fill="rgba(252,160,74,1)"/>
- <circle cx="38" cy="49" r="1" fill="rgba(252,160,74,1)"/>
- <circle cx="39" cy="49" r="1" fill="rgba(252,157,70,1)"/>
- <circle cx="40" cy="49" r="1" fill="rgba(251,153,64,1)"/>
- <circle cx="41" cy="49" r="1" fill="rgba(251,148,57,1)"/>
- <circle cx="42" cy="49" r="1" fill="rgba(251,143,50,1)"/>
- <circle cx="43" cy="49" r="1" fill="rgba(255,140,43,1)"/>
- <circle cx="44" cy="49" r="1" fill="rgba(243,128,37,1)"/>
- <circle cx="45" cy="49" r="1" fill="rgba(200,98,30,1)"/>
- <circle cx="46" cy="49" r="1" fill="rgba(179,82,22,1)"/>
- <circle cx="47" cy="49" r="1" fill="rgba(193,86,18,1)"/>
- <circle cx="48" cy="49" r="1" fill="rgba(238,107,14,1)"/>
- <circle cx="49" cy="49" r="1" fill="rgba(255,116,8,1)"/>
- <circle cx="50" cy="49" r="1" fill="rgba(255,109,1,1)"/>
- <circle cx="51" cy="49" r="1" fill="rgba(253,108,0,1)"/>
- <circle cx="52" cy="49" r="1" fill="rgba(252,108,0,1)"/>
- <circle cx="53" cy="49" r="1" fill="rgba(251,107,0,1)"/>
- <circle cx="54" cy="49" r="1" fill="rgba(250,107,0,1)"/>
- <circle cx="55" cy="49" r="1" fill="rgba(249,105,0,1)"/>
- <circle cx="56" cy="49" r="1" fill="rgba(247,101,0,1)"/>
- <circle cx="57" cy="49" r="1" fill="rgba(245,94,0,1)"/>
- <circle cx="58" cy="49" r="1" fill="rgba(244,87,0,1)"/>
- <circle cx="59" cy="49" r="1" fill="rgba(241,79,0,1)"/>
- <circle cx="60" cy="49" r="1" fill="rgba(239,71,0,1)"/>
- <circle cx="61" cy="49" r="1" fill="rgba(236,63,0,1)"/>
- <circle cx="62" cy="49" r="1" fill="rgba(233,55,0,1)"/>
- <circle cx="63" cy="49" r="1" fill="rgba(239,51,0,1)"/>
- <circle cx="64" cy="49" r="1" fill="rgba(213,33,0,1)"/>
- <circle cx="65" cy="49" r="1" fill="rgba(86,4,0,1)"/>
- <circle cx="66" cy="49" r="1" fill="rgba(104,12,0,1)"/>
- <circle cx="67" cy="49" r="1" fill="rgba(227,33,0,1)"/>
- <circle cx="68" cy="49" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="69" cy="49" r="1" fill="rgba(217,32,0,1)"/>
- <circle cx="70" cy="49" r="1" fill="rgba(217,34,0,1)"/>
- <circle cx="71" cy="49" r="1" fill="rgba(217,37,1,1)"/>
- <circle cx="72" cy="49" r="1" fill="rgba(217,39,2,1)"/>
- <circle cx="73" cy="49" r="1" fill="rgba(217,41,3,1)"/>
- <circle cx="74" cy="49" r="1" fill="rgba(217,43,4,1)"/>
- <circle cx="75" cy="49" r="1" fill="rgba(217,45,6,1)"/>
- <circle cx="76" cy="49" r="1" fill="rgba(216,45,7,1)"/>
- <circle cx="77" cy="49" r="1" fill="rgba(215,45,8,1)"/>
- <circle cx="78" cy="49" r="1" fill="rgba(214,46,10,1)"/>
- <circle cx="79" cy="49" r="1" fill="rgba(214,45,11,1)"/>
- <circle cx="80" cy="49" r="1" fill="rgba(212,46,13,1)"/>
- <circle cx="81" cy="49" r="1" fill="rgba(211,45,14,1)"/>
- <circle cx="82" cy="49" r="1" fill="rgba(210,45,16,1)"/>
- <circle cx="83" cy="49" r="1" fill="rgba(217,49,17,1)"/>
- <circle cx="84" cy="49" r="1" fill="rgba(168,35,10,1)"/>
- <circle cx="85" cy="49" r="1" fill="black"/>
- <circle cx="86" cy="49" r="1" fill="black"/>
- <circle cx="87" cy="49" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="49" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="49" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="49" r="1" fill="black"/>
- <circle cx="91" cy="49" r="1" fill="rgba(45,7,1,1)"/>
- <circle cx="92" cy="49" r="1" fill="rgba(205,71,29,1)"/>
- <circle cx="93" cy="49" r="1" fill="rgba(223,86,38,1)"/>
- <circle cx="94" cy="49" r="1" fill="rgba(222,92,42,1)"/>
- <circle cx="95" cy="49" r="1" fill="rgba(224,98,46,1)"/>
- <circle cx="96" cy="49" r="1" fill="rgba(225,102,49,1)"/>
- <circle cx="97" cy="49" r="1" fill="rgba(225,102,48,1)"/>
- <circle cx="98" cy="49" r="1" fill="rgba(224,100,46,1)"/>
- <circle cx="99" cy="49" r="1" fill="rgba(228,98,43,1)"/>
- <circle cx="100" cy="49" r="1" fill="rgba(200,80,30,0.901961)"/>
- <circle cx="101" cy="49" r="1" fill="rgba(17,2,0,0.47451)"/>
- <circle cx="102" cy="49" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="103" cy="49" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="104" cy="49" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="105" cy="49" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="106" cy="49" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="107" cy="49" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="108" cy="49" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="109" cy="49" r="1" fill="rgba(21,7,1,0.337255)"/>
- <circle cx="110" cy="49" r="1" fill="rgba(36,15,5,0.054902)"/>
- <circle cx="111" cy="49" r="1" fill="rgba(34,15,5,0)"/>
- <circle cx="112" cy="49" r="1" fill="rgba(29,12,3,0)"/>
- <circle cx="113" cy="49" r="1" fill="rgba(28,10,3,0)"/>
- <circle cx="114" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="49" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="50" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="50" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="50" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="20" cy="50" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="21" cy="50" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="22" cy="50" r="1" fill="rgba(24,10,2,0)"/>
- <circle cx="23" cy="50" r="1" fill="rgba(49,25,10,0)"/>
- <circle cx="24" cy="50" r="1" fill="rgba(45,23,9,0)"/>
- <circle cx="25" cy="50" r="1" fill="rgba(40,21,9,0)"/>
- <circle cx="26" cy="50" r="1" fill="rgba(50,27,12,0)"/>
- <circle cx="27" cy="50" r="1" fill="rgba(21,18,9,0)"/>
- <circle cx="28" cy="50" r="1" fill="rgba(102,29,3,0.113725)"/>
- <circle cx="29" cy="50" r="1" fill="rgba(246,91,9,0.901961)"/>
- <circle cx="30" cy="50" r="1" fill="rgba(254,110,16,1)"/>
- <circle cx="31" cy="50" r="1" fill="rgba(253,124,26,1)"/>
- <circle cx="32" cy="50" r="1" fill="rgba(254,136,36,1)"/>
- <circle cx="33" cy="50" r="1" fill="rgba(254,145,45,1)"/>
- <circle cx="34" cy="50" r="1" fill="rgba(253,150,53,1)"/>
- <circle cx="35" cy="50" r="1" fill="rgba(253,153,59,1)"/>
- <circle cx="36" cy="50" r="1" fill="rgba(252,155,63,1)"/>
- <circle cx="37" cy="50" r="1" fill="rgba(252,155,65,1)"/>
- <circle cx="38" cy="50" r="1" fill="rgba(252,154,65,1)"/>
- <circle cx="39" cy="50" r="1" fill="rgba(252,151,61,1)"/>
- <circle cx="40" cy="50" r="1" fill="rgba(251,149,56,1)"/>
- <circle cx="41" cy="50" r="1" fill="rgba(251,145,51,1)"/>
- <circle cx="42" cy="50" r="1" fill="rgba(253,142,45,1)"/>
- <circle cx="43" cy="50" r="1" fill="rgba(238,127,38,1)"/>
- <circle cx="44" cy="50" r="1" fill="rgba(147,72,32,1)"/>
- <circle cx="45" cy="50" r="1" fill="rgba(99,46,24,1)"/>
- <circle cx="46" cy="50" r="1" fill="rgba(77,34,17,1)"/>
- <circle cx="47" cy="50" r="1" fill="rgba(63,25,11,1)"/>
- <circle cx="48" cy="50" r="1" fill="rgba(77,26,6,1)"/>
- <circle cx="49" cy="50" r="1" fill="rgba(183,68,3,1)"/>
- <circle cx="50" cy="50" r="1" fill="rgba(255,104,0,1)"/>
- <circle cx="51" cy="50" r="1" fill="rgba(253,102,0,1)"/>
- <circle cx="52" cy="50" r="1" fill="rgba(252,102,0,1)"/>
- <circle cx="53" cy="50" r="1" fill="rgba(251,102,0,1)"/>
- <circle cx="54" cy="50" r="1" fill="rgba(249,102,0,1)"/>
- <circle cx="55" cy="50" r="1" fill="rgba(248,102,0,1)"/>
- <circle cx="56" cy="50" r="1" fill="rgba(247,99,0,1)"/>
- <circle cx="57" cy="50" r="1" fill="rgba(245,95,0,1)"/>
- <circle cx="58" cy="50" r="1" fill="rgba(244,88,0,1)"/>
- <circle cx="59" cy="50" r="1" fill="rgba(241,81,0,1)"/>
- <circle cx="60" cy="50" r="1" fill="rgba(239,72,0,1)"/>
- <circle cx="61" cy="50" r="1" fill="rgba(237,63,0,1)"/>
- <circle cx="62" cy="50" r="1" fill="rgba(234,56,0,1)"/>
- <circle cx="63" cy="50" r="1" fill="rgba(231,49,0,1)"/>
- <circle cx="64" cy="50" r="1" fill="rgba(230,36,0,1)"/>
- <circle cx="65" cy="50" r="1" fill="rgba(177,14,0,1)"/>
- <circle cx="66" cy="50" r="1" fill="rgba(160,20,0,1)"/>
- <circle cx="67" cy="50" r="1" fill="rgba(227,33,0,1)"/>
- <circle cx="68" cy="50" r="1" fill="rgba(217,32,0,1)"/>
- <circle cx="69" cy="50" r="1" fill="rgba(218,34,0,1)"/>
- <circle cx="70" cy="50" r="1" fill="rgba(218,36,1,1)"/>
- <circle cx="71" cy="50" r="1" fill="rgba(218,39,1,1)"/>
- <circle cx="72" cy="50" r="1" fill="rgba(218,41,3,1)"/>
- <circle cx="73" cy="50" r="1" fill="rgba(218,44,3,1)"/>
- <circle cx="74" cy="50" r="1" fill="rgba(218,45,5,1)"/>
- <circle cx="75" cy="50" r="1" fill="rgba(217,46,6,1)"/>
- <circle cx="76" cy="50" r="1" fill="rgba(216,45,7,1)"/>
- <circle cx="77" cy="50" r="1" fill="rgba(215,45,8,1)"/>
- <circle cx="78" cy="50" r="1" fill="rgba(214,45,9,1)"/>
- <circle cx="79" cy="50" r="1" fill="rgba(212,44,10,1)"/>
- <circle cx="80" cy="50" r="1" fill="rgba(211,43,11,1)"/>
- <circle cx="81" cy="50" r="1" fill="rgba(209,42,12,1)"/>
- <circle cx="82" cy="50" r="1" fill="rgba(209,41,13,1)"/>
- <circle cx="83" cy="50" r="1" fill="rgba(217,45,15,1)"/>
- <circle cx="84" cy="50" r="1" fill="rgba(126,21,5,1)"/>
- <circle cx="85" cy="50" r="1" fill="black"/>
- <circle cx="86" cy="50" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="87" cy="50" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="50" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="50" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="50" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="50" r="1" fill="black"/>
- <circle cx="92" cy="50" r="1" fill="rgba(136,38,12,1)"/>
- <circle cx="93" cy="50" r="1" fill="rgba(227,84,36,1)"/>
- <circle cx="94" cy="50" r="1" fill="rgba(221,87,39,1)"/>
- <circle cx="95" cy="50" r="1" fill="rgba(223,93,43,1)"/>
- <circle cx="96" cy="50" r="1" fill="rgba(224,98,46,1)"/>
- <circle cx="97" cy="50" r="1" fill="rgba(225,101,48,1)"/>
- <circle cx="98" cy="50" r="1" fill="rgba(224,100,46,1)"/>
- <circle cx="99" cy="50" r="1" fill="rgba(225,97,42,1)"/>
- <circle cx="100" cy="50" r="1" fill="rgba(227,96,41,0.996078)"/>
- <circle cx="101" cy="50" r="1" fill="rgba(90,26,6,0.54902)"/>
- <circle cx="102" cy="50" r="1" fill="rgba(0,0,0,0.384314)"/>
- <circle cx="103" cy="50" r="1" fill="rgba(12,2,0,0.4)"/>
- <circle cx="104" cy="50" r="1" fill="rgba(7,1,0,0.396078)"/>
- <circle cx="105" cy="50" r="1" fill="rgba(10,2,0,0.423529)"/>
- <circle cx="106" cy="50" r="1" fill="rgba(10,1,0,0.447059)"/>
- <circle cx="107" cy="50" r="1" fill="rgba(0,0,0,0.454902)"/>
- <circle cx="108" cy="50" r="1" fill="rgba(12,3,0,0.415686)"/>
- <circle cx="109" cy="50" r="1" fill="rgba(34,15,5,0.172549)"/>
- <circle cx="110" cy="50" r="1" fill="rgba(40,20,7,0)"/>
- <circle cx="111" cy="50" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="112" cy="50" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="113" cy="50" r="1" fill="rgba(39,18,6,0)"/>
- <circle cx="114" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="50" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="51" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="51" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="51" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="20" cy="51" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="21" cy="51" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="22" cy="51" r="1" fill="rgba(24,10,2,0)"/>
- <circle cx="23" cy="51" r="1" fill="rgba(33,22,10,0)"/>
- <circle cx="24" cy="51" r="1" fill="rgba(46,24,9,0)"/>
- <circle cx="25" cy="51" r="1" fill="rgba(65,26,8,0)"/>
- <circle cx="26" cy="51" r="1" fill="rgba(58,29,11,0)"/>
- <circle cx="27" cy="51" r="1" fill="rgba(122,41,8,0)"/>
- <circle cx="28" cy="51" r="1" fill="rgba(246,83,5,0.27451)"/>
- <circle cx="29" cy="51" r="1" fill="rgba(255,94,9,1)"/>
- <circle cx="30" cy="51" r="1" fill="rgba(252,108,15,1)"/>
- <circle cx="31" cy="51" r="1" fill="rgba(253,122,23,1)"/>
- <circle cx="32" cy="51" r="1" fill="rgba(252,133,33,1)"/>
- <circle cx="33" cy="51" r="1" fill="rgba(252,141,40,1)"/>
- <circle cx="34" cy="51" r="1" fill="rgba(252,146,47,1)"/>
- <circle cx="35" cy="51" r="1" fill="rgba(252,148,51,1)"/>
- <circle cx="36" cy="51" r="1" fill="rgba(252,150,55,1)"/>
- <circle cx="37" cy="51" r="1" fill="rgba(252,150,56,1)"/>
- <circle cx="38" cy="51" r="1" fill="rgba(252,149,56,1)"/>
- <circle cx="39" cy="51" r="1" fill="rgba(252,147,53,1)"/>
- <circle cx="40" cy="51" r="1" fill="rgba(251,144,49,1)"/>
- <circle cx="41" cy="51" r="1" fill="rgba(251,140,45,1)"/>
- <circle cx="42" cy="51" r="1" fill="rgba(254,138,39,1)"/>
- <circle cx="43" cy="51" r="1" fill="rgba(181,90,33,1)"/>
- <circle cx="44" cy="51" r="1" fill="rgba(104,49,27,1)"/>
- <circle cx="45" cy="51" r="1" fill="rgba(100,45,21,1)"/>
- <circle cx="46" cy="51" r="1" fill="rgba(84,35,15,1)"/>
- <circle cx="47" cy="51" r="1" fill="rgba(65,25,9,1)"/>
- <circle cx="48" cy="51" r="1" fill="rgba(33,11,4,1)"/>
- <circle cx="49" cy="51" r="1" fill="rgba(7,1,0,1)"/>
- <circle cx="50" cy="51" r="1" fill="rgba(195,66,0,1)"/>
- <circle cx="51" cy="51" r="1" fill="rgba(255,99,0,1)"/>
- <circle cx="52" cy="51" r="1" fill="rgba(252,95,0,1)"/>
- <circle cx="53" cy="51" r="1" fill="rgba(250,96,0,1)"/>
- <circle cx="54" cy="51" r="1" fill="rgba(249,97,0,1)"/>
- <circle cx="55" cy="51" r="1" fill="rgba(248,96,0,1)"/>
- <circle cx="56" cy="51" r="1" fill="rgba(247,95,0,1)"/>
- <circle cx="57" cy="51" r="1" fill="rgba(244,93,0,1)"/>
- <circle cx="58" cy="51" r="1" fill="rgba(244,87,0,1)"/>
- <circle cx="59" cy="51" r="1" fill="rgba(241,81,0,1)"/>
- <circle cx="60" cy="51" r="1" fill="rgba(239,72,0,1)"/>
- <circle cx="61" cy="51" r="1" fill="rgba(236,63,0,1)"/>
- <circle cx="62" cy="51" r="1" fill="rgba(234,56,0,1)"/>
- <circle cx="63" cy="51" r="1" fill="rgba(231,49,0,1)"/>
- <circle cx="64" cy="51" r="1" fill="rgba(227,37,0,1)"/>
- <circle cx="65" cy="51" r="1" fill="rgba(176,14,0,1)"/>
- <circle cx="66" cy="51" r="1" fill="rgba(159,21,0,1)"/>
- <circle cx="67" cy="51" r="1" fill="rgba(226,34,0,1)"/>
- <circle cx="68" cy="51" r="1" fill="rgba(217,31,0,1)"/>
- <circle cx="69" cy="51" r="1" fill="rgba(217,34,0,1)"/>
- <circle cx="70" cy="51" r="1" fill="rgba(218,37,1,1)"/>
- <circle cx="71" cy="51" r="1" fill="rgba(219,41,2,1)"/>
- <circle cx="72" cy="51" r="1" fill="rgba(220,44,3,1)"/>
- <circle cx="73" cy="51" r="1" fill="rgba(219,45,4,1)"/>
- <circle cx="74" cy="51" r="1" fill="rgba(219,46,5,1)"/>
- <circle cx="75" cy="51" r="1" fill="rgba(217,46,6,1)"/>
- <circle cx="76" cy="51" r="1" fill="rgba(216,44,7,1)"/>
- <circle cx="77" cy="51" r="1" fill="rgba(214,43,8,1)"/>
- <circle cx="78" cy="51" r="1" fill="rgba(213,41,8,1)"/>
- <circle cx="79" cy="51" r="1" fill="rgba(211,40,9,1)"/>
- <circle cx="80" cy="51" r="1" fill="rgba(210,39,10,1)"/>
- <circle cx="81" cy="51" r="1" fill="rgba(207,39,10,1)"/>
- <circle cx="82" cy="51" r="1" fill="rgba(207,37,11,1)"/>
- <circle cx="83" cy="51" r="1" fill="rgba(212,39,13,1)"/>
- <circle cx="84" cy="51" r="1" fill="rgba(105,15,3,1)"/>
- <circle cx="85" cy="51" r="1" fill="black"/>
- <circle cx="86" cy="51" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="87" cy="51" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="51" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="51" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="51" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="51" r="1" fill="black"/>
- <circle cx="92" cy="51" r="1" fill="rgba(63,12,3,1)"/>
- <circle cx="93" cy="51" r="1" fill="rgba(215,75,30,1)"/>
- <circle cx="94" cy="51" r="1" fill="rgba(222,84,36,1)"/>
- <circle cx="95" cy="51" r="1" fill="rgba(222,90,40,1)"/>
- <circle cx="96" cy="51" r="1" fill="rgba(223,95,42,1)"/>
- <circle cx="97" cy="51" r="1" fill="rgba(224,98,44,1)"/>
- <circle cx="98" cy="51" r="1" fill="rgba(225,99,45,1)"/>
- <circle cx="99" cy="51" r="1" fill="rgba(224,97,42,1)"/>
- <circle cx="100" cy="51" r="1" fill="rgba(233,100,42,1)"/>
- <circle cx="101" cy="51" r="1" fill="rgba(168,64,22,0.576471)"/>
- <circle cx="102" cy="51" r="1" fill="rgba(0,0,0,0.0901961)"/>
- <circle cx="103" cy="51" r="1" fill="rgba(12,4,1,0.121569)"/>
- <circle cx="104" cy="51" r="1" fill="rgba(19,7,1,0.12549)"/>
- <circle cx="105" cy="51" r="1" fill="rgba(34,14,5,0.176471)"/>
- <circle cx="106" cy="51" r="1" fill="rgba(26,10,3,0.231373)"/>
- <circle cx="107" cy="51" r="1" fill="rgba(10,1,0,0.254902)"/>
- <circle cx="108" cy="51" r="1" fill="rgba(24,8,2,0.192157)"/>
- <circle cx="109" cy="51" r="1" fill="rgba(45,21,8,0.0392157)"/>
- <circle cx="110" cy="51" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="111" cy="51" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="112" cy="51" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="113" cy="51" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="114" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="51" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="52" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="52" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="19" cy="52" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="20" cy="52" r="1" fill="rgba(46,22,9,0)"/>
- <circle cx="21" cy="52" r="1" fill="rgba(42,21,9,0)"/>
- <circle cx="22" cy="52" r="1" fill="rgba(0,4,3,0)"/>
- <circle cx="23" cy="52" r="1" fill="rgba(108,36,7,0)"/>
- <circle cx="24" cy="52" r="1" fill="rgba(206,65,5,0)"/>
- <circle cx="25" cy="52" r="1" fill="rgba(241,75,3,0)"/>
- <circle cx="26" cy="52" r="1" fill="rgba(238,74,3,0)"/>
- <circle cx="27" cy="52" r="1" fill="rgba(249,78,3,0)"/>
- <circle cx="28" cy="52" r="1" fill="rgba(252,81,4,0.545098)"/>
- <circle cx="29" cy="52" r="1" fill="rgba(250,91,8,1)"/>
- <circle cx="30" cy="52" r="1" fill="rgba(251,106,13,1)"/>
- <circle cx="31" cy="52" r="1" fill="rgba(252,120,20,1)"/>
- <circle cx="32" cy="52" r="1" fill="rgba(252,130,28,1)"/>
- <circle cx="33" cy="52" r="1" fill="rgba(252,136,35,1)"/>
- <circle cx="34" cy="52" r="1" fill="rgba(252,140,40,1)"/>
- <circle cx="35" cy="52" r="1" fill="rgba(252,142,43,1)"/>
- <circle cx="36" cy="52" r="1" fill="rgba(252,144,46,1)"/>
- <circle cx="37" cy="52" r="1" fill="rgba(252,144,48,1)"/>
- <circle cx="38" cy="52" r="1" fill="rgba(252,143,48,1)"/>
- <circle cx="39" cy="52" r="1" fill="rgba(251,142,45,1)"/>
- <circle cx="40" cy="52" r="1" fill="rgba(251,138,42,1)"/>
- <circle cx="41" cy="52" r="1" fill="rgba(252,136,38,1)"/>
- <circle cx="42" cy="52" r="1" fill="rgba(247,128,33,1)"/>
- <circle cx="43" cy="52" r="1" fill="rgba(135,64,29,1)"/>
- <circle cx="44" cy="52" r="1" fill="rgba(101,46,23,1)"/>
- <circle cx="45" cy="52" r="1" fill="rgba(91,39,17,1)"/>
- <circle cx="46" cy="52" r="1" fill="rgba(74,30,11,1)"/>
- <circle cx="47" cy="52" r="1" fill="rgba(55,19,6,1)"/>
- <circle cx="48" cy="52" r="1" fill="rgba(34,9,2,1)"/>
- <circle cx="49" cy="52" r="1" fill="black"/>
- <circle cx="50" cy="52" r="1" fill="rgba(97,23,0,1)"/>
- <circle cx="51" cy="52" r="1" fill="rgba(251,89,0,1)"/>
- <circle cx="52" cy="52" r="1" fill="rgba(252,89,0,1)"/>
- <circle cx="53" cy="52" r="1" fill="rgba(249,90,0,1)"/>
- <circle cx="54" cy="52" r="1" fill="rgba(248,92,0,1)"/>
- <circle cx="55" cy="52" r="1" fill="rgba(247,92,0,1)"/>
- <circle cx="56" cy="52" r="1" fill="rgba(246,91,0,1)"/>
- <circle cx="57" cy="52" r="1" fill="rgba(244,89,0,1)"/>
- <circle cx="58" cy="52" r="1" fill="rgba(243,86,0,1)"/>
- <circle cx="59" cy="52" r="1" fill="rgba(241,79,0,1)"/>
- <circle cx="60" cy="52" r="1" fill="rgba(238,71,0,1)"/>
- <circle cx="61" cy="52" r="1" fill="rgba(236,62,0,1)"/>
- <circle cx="62" cy="52" r="1" fill="rgba(233,55,0,1)"/>
- <circle cx="63" cy="52" r="1" fill="rgba(230,48,0,1)"/>
- <circle cx="64" cy="52" r="1" fill="rgba(227,36,0,1)"/>
- <circle cx="65" cy="52" r="1" fill="rgba(174,14,0,1)"/>
- <circle cx="66" cy="52" r="1" fill="rgba(159,21,0,1)"/>
- <circle cx="67" cy="52" r="1" fill="rgba(226,33,0,1)"/>
- <circle cx="68" cy="52" r="1" fill="rgba(217,32,0,1)"/>
- <circle cx="69" cy="52" r="1" fill="rgba(217,34,0,1)"/>
- <circle cx="70" cy="52" r="1" fill="rgba(219,38,1,1)"/>
- <circle cx="71" cy="52" r="1" fill="rgba(220,42,2,1)"/>
- <circle cx="72" cy="52" r="1" fill="rgba(220,45,3,1)"/>
- <circle cx="73" cy="52" r="1" fill="rgba(220,46,4,1)"/>
- <circle cx="74" cy="52" r="1" fill="rgba(219,45,5,1)"/>
- <circle cx="75" cy="52" r="1" fill="rgba(217,45,5,1)"/>
- <circle cx="76" cy="52" r="1" fill="rgba(215,42,6,1)"/>
- <circle cx="77" cy="52" r="1" fill="rgba(213,39,7,1)"/>
- <circle cx="78" cy="52" r="1" fill="rgba(210,36,7,1)"/>
- <circle cx="79" cy="52" r="1" fill="rgba(209,36,8,1)"/>
- <circle cx="80" cy="52" r="1" fill="rgba(207,35,8,1)"/>
- <circle cx="81" cy="52" r="1" fill="rgba(206,34,9,1)"/>
- <circle cx="82" cy="52" r="1" fill="rgba(204,33,9,1)"/>
- <circle cx="83" cy="52" r="1" fill="rgba(213,36,11,1)"/>
- <circle cx="84" cy="52" r="1" fill="rgba(116,16,3,1)"/>
- <circle cx="85" cy="52" r="1" fill="black"/>
- <circle cx="86" cy="52" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="87" cy="52" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="52" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="52" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="52" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="52" r="1" fill="black"/>
- <circle cx="92" cy="52" r="1" fill="rgba(21,2,0,1)"/>
- <circle cx="93" cy="52" r="1" fill="rgba(196,64,24,1)"/>
- <circle cx="94" cy="52" r="1" fill="rgba(224,82,33,1)"/>
- <circle cx="95" cy="52" r="1" fill="rgba(221,86,37,1)"/>
- <circle cx="96" cy="52" r="1" fill="rgba(223,92,40,1)"/>
- <circle cx="97" cy="52" r="1" fill="rgba(224,95,42,1)"/>
- <circle cx="98" cy="52" r="1" fill="rgba(225,97,43,1)"/>
- <circle cx="99" cy="52" r="1" fill="rgba(226,99,43,1)"/>
- <circle cx="100" cy="52" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="101" cy="52" r="1" fill="rgba(227,97,40,0.74902)"/>
- <circle cx="102" cy="52" r="1" fill="rgba(113,39,12,0)"/>
- <circle cx="103" cy="52" r="1" fill="rgba(22,6,1,0)"/>
- <circle cx="104" cy="52" r="1" fill="rgba(22,8,2,0)"/>
- <circle cx="105" cy="52" r="1" fill="rgba(42,20,7,0)"/>
- <circle cx="106" cy="52" r="1" fill="rgba(33,12,4,0.0156863)"/>
- <circle cx="107" cy="52" r="1" fill="rgba(12,2,0,0.0235294)"/>
- <circle cx="108" cy="52" r="1" fill="rgba(26,9,2,0.0117647)"/>
- <circle cx="109" cy="52" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="110" cy="52" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="111" cy="52" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="112" cy="52" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="113" cy="52" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="114" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="52" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="53" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="53" r="1" fill="rgba(43,20,8,0)"/>
- <circle cx="19" cy="53" r="1" fill="rgba(43,21,8,0)"/>
- <circle cx="20" cy="53" r="1" fill="rgba(39,19,8,0)"/>
- <circle cx="21" cy="53" r="1" fill="rgba(62,24,8,0)"/>
- <circle cx="22" cy="53" r="1" fill="rgba(158,43,2,0)"/>
- <circle cx="23" cy="53" r="1" fill="rgba(248,75,2,0)"/>
- <circle cx="24" cy="53" r="1" fill="rgba(255,79,2,0)"/>
- <circle cx="25" cy="53" r="1" fill="rgba(252,77,2,0)"/>
- <circle cx="26" cy="53" r="1" fill="rgba(252,77,2,0)"/>
- <circle cx="27" cy="53" r="1" fill="rgba(250,76,2,0.00392157)"/>
- <circle cx="28" cy="53" r="1" fill="rgba(249,78,3,0.784314)"/>
- <circle cx="29" cy="53" r="1" fill="rgba(250,91,6,1)"/>
- <circle cx="30" cy="53" r="1" fill="rgba(251,105,11,1)"/>
- <circle cx="31" cy="53" r="1" fill="rgba(252,117,18,1)"/>
- <circle cx="32" cy="53" r="1" fill="rgba(252,125,23,1)"/>
- <circle cx="33" cy="53" r="1" fill="rgba(252,130,29,1)"/>
- <circle cx="34" cy="53" r="1" fill="rgba(252,134,33,1)"/>
- <circle cx="35" cy="53" r="1" fill="rgba(252,136,36,1)"/>
- <circle cx="36" cy="53" r="1" fill="rgba(252,137,38,1)"/>
- <circle cx="37" cy="53" r="1" fill="rgba(252,137,39,1)"/>
- <circle cx="38" cy="53" r="1" fill="rgba(252,136,39,1)"/>
- <circle cx="39" cy="53" r="1" fill="rgba(251,135,37,1)"/>
- <circle cx="40" cy="53" r="1" fill="rgba(251,133,34,1)"/>
- <circle cx="41" cy="53" r="1" fill="rgba(253,131,31,1)"/>
- <circle cx="42" cy="53" r="1" fill="rgba(244,121,27,1)"/>
- <circle cx="43" cy="53" r="1" fill="rgba(114,52,23,1)"/>
- <circle cx="44" cy="53" r="1" fill="rgba(91,39,18,1)"/>
- <circle cx="45" cy="53" r="1" fill="rgba(78,32,13,1)"/>
- <circle cx="46" cy="53" r="1" fill="rgba(63,23,8,1)"/>
- <circle cx="47" cy="53" r="1" fill="rgba(43,13,4,1)"/>
- <circle cx="48" cy="53" r="1" fill="rgba(17,3,0,1)"/>
- <circle cx="49" cy="53" r="1" fill="black"/>
- <circle cx="50" cy="53" r="1" fill="rgba(42,6,0,1)"/>
- <circle cx="51" cy="53" r="1" fill="rgba(241,78,0,1)"/>
- <circle cx="52" cy="53" r="1" fill="rgba(253,85,0,1)"/>
- <circle cx="53" cy="53" r="1" fill="rgba(249,84,0,1)"/>
- <circle cx="54" cy="53" r="1" fill="rgba(247,85,0,1)"/>
- <circle cx="55" cy="53" r="1" fill="rgba(246,87,0,1)"/>
- <circle cx="56" cy="53" r="1" fill="rgba(244,86,0,1)"/>
- <circle cx="57" cy="53" r="1" fill="rgba(244,84,0,1)"/>
- <circle cx="58" cy="53" r="1" fill="rgba(242,82,0,1)"/>
- <circle cx="59" cy="53" r="1" fill="rgba(240,78,0,1)"/>
- <circle cx="60" cy="53" r="1" fill="rgba(238,70,0,1)"/>
- <circle cx="61" cy="53" r="1" fill="rgba(235,61,0,1)"/>
- <circle cx="62" cy="53" r="1" fill="rgba(233,54,0,1)"/>
- <circle cx="63" cy="53" r="1" fill="rgba(230,48,0,1)"/>
- <circle cx="64" cy="53" r="1" fill="rgba(224,35,0,1)"/>
- <circle cx="65" cy="53" r="1" fill="rgba(175,15,0,1)"/>
- <circle cx="66" cy="53" r="1" fill="rgba(160,22,0,1)"/>
- <circle cx="67" cy="53" r="1" fill="rgba(225,32,0,1)"/>
- <circle cx="68" cy="53" r="1" fill="rgba(216,32,0,1)"/>
- <circle cx="69" cy="53" r="1" fill="rgba(217,35,0,1)"/>
- <circle cx="70" cy="53" r="1" fill="rgba(219,38,1,1)"/>
- <circle cx="71" cy="53" r="1" fill="rgba(220,43,2,1)"/>
- <circle cx="72" cy="53" r="1" fill="rgba(220,45,3,1)"/>
- <circle cx="73" cy="53" r="1" fill="rgba(220,46,4,1)"/>
- <circle cx="74" cy="53" r="1" fill="rgba(218,45,5,1)"/>
- <circle cx="75" cy="53" r="1" fill="rgba(217,42,5,1)"/>
- <circle cx="76" cy="53" r="1" fill="rgba(214,39,6,1)"/>
- <circle cx="77" cy="53" r="1" fill="rgba(212,36,6,1)"/>
- <circle cx="78" cy="53" r="1" fill="rgba(209,33,6,1)"/>
- <circle cx="79" cy="53" r="1" fill="rgba(207,32,6,1)"/>
- <circle cx="80" cy="53" r="1" fill="rgba(205,31,7,1)"/>
- <circle cx="81" cy="53" r="1" fill="rgba(203,29,7,1)"/>
- <circle cx="82" cy="53" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="83" cy="53" r="1" fill="rgba(212,34,10,1)"/>
- <circle cx="84" cy="53" r="1" fill="rgba(148,22,5,1)"/>
- <circle cx="85" cy="53" r="1" fill="black"/>
- <circle cx="86" cy="53" r="1" fill="black"/>
- <circle cx="87" cy="53" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="53" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="53" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="53" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="53" r="1" fill="black"/>
- <circle cx="92" cy="53" r="1" fill="rgba(12,1,0,1)"/>
- <circle cx="93" cy="53" r="1" fill="rgba(189,59,21,1)"/>
- <circle cx="94" cy="53" r="1" fill="rgba(224,79,32,1)"/>
- <circle cx="95" cy="53" r="1" fill="rgba(220,83,34,1)"/>
- <circle cx="96" cy="53" r="1" fill="rgba(222,89,38,1)"/>
- <circle cx="97" cy="53" r="1" fill="rgba(224,94,41,1)"/>
- <circle cx="98" cy="53" r="1" fill="rgba(225,97,42,1)"/>
- <circle cx="99" cy="53" r="1" fill="rgba(227,99,43,1)"/>
- <circle cx="100" cy="53" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="101" cy="53" r="1" fill="rgba(231,101,42,0.964706)"/>
- <circle cx="102" cy="53" r="1" fill="rgba(171,65,23,0.137255)"/>
- <circle cx="103" cy="53" r="1" fill="rgba(119,42,13,0)"/>
- <circle cx="104" cy="53" r="1" fill="rgba(103,36,11,0)"/>
- <circle cx="105" cy="53" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="106" cy="53" r="1" fill="rgba(28,11,4,0)"/>
- <circle cx="107" cy="53" r="1" fill="rgba(12,2,0,0)"/>
- <circle cx="108" cy="53" r="1" fill="rgba(24,9,2,0)"/>
- <circle cx="109" cy="53" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="110" cy="53" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="111" cy="53" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="112" cy="53" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="113" cy="53" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="114" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="53" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="54" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="54" r="1" fill="rgba(62,34,16,0)"/>
- <circle cx="19" cy="54" r="1" fill="rgba(63,35,16,0)"/>
- <circle cx="20" cy="54" r="1" fill="rgba(46,33,18,0)"/>
- <circle cx="21" cy="54" r="1" fill="rgba(163,57,11,0)"/>
- <circle cx="22" cy="54" r="1" fill="rgba(255,77,1,0)"/>
- <circle cx="23" cy="54" r="1" fill="rgba(252,73,1,0)"/>
- <circle cx="24" cy="54" r="1" fill="rgba(255,74,0,0)"/>
- <circle cx="25" cy="54" r="1" fill="rgba(255,74,0,0)"/>
- <circle cx="26" cy="54" r="1" fill="rgba(252,73,1,0)"/>
- <circle cx="27" cy="54" r="1" fill="rgba(251,73,1,0.113725)"/>
- <circle cx="28" cy="54" r="1" fill="rgba(249,78,2,0.960784)"/>
- <circle cx="29" cy="54" r="1" fill="rgba(250,91,5,1)"/>
- <circle cx="30" cy="54" r="1" fill="rgba(251,104,9,1)"/>
- <circle cx="31" cy="54" r="1" fill="rgba(252,113,14,1)"/>
- <circle cx="32" cy="54" r="1" fill="rgba(252,120,19,1)"/>
- <circle cx="33" cy="54" r="1" fill="rgba(252,125,23,1)"/>
- <circle cx="34" cy="54" r="1" fill="rgba(252,129,26,1)"/>
- <circle cx="35" cy="54" r="1" fill="rgba(252,130,28,1)"/>
- <circle cx="36" cy="54" r="1" fill="rgba(252,131,30,1)"/>
- <circle cx="37" cy="54" r="1" fill="rgba(252,131,31,1)"/>
- <circle cx="38" cy="54" r="1" fill="rgba(252,130,30,1)"/>
- <circle cx="39" cy="54" r="1" fill="rgba(252,129,29,1)"/>
- <circle cx="40" cy="54" r="1" fill="rgba(252,127,27,1)"/>
- <circle cx="41" cy="54" r="1" fill="rgba(254,124,24,1)"/>
- <circle cx="42" cy="54" r="1" fill="rgba(245,116,21,1)"/>
- <circle cx="43" cy="54" r="1" fill="rgba(108,46,18,1)"/>
- <circle cx="44" cy="54" r="1" fill="rgba(76,31,13,1)"/>
- <circle cx="45" cy="54" r="1" fill="rgba(65,24,9,1)"/>
- <circle cx="46" cy="54" r="1" fill="rgba(47,15,5,1)"/>
- <circle cx="47" cy="54" r="1" fill="rgba(26,7,1,1)"/>
- <circle cx="48" cy="54" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="49" cy="54" r="1" fill="black"/>
- <circle cx="50" cy="54" r="1" fill="rgba(29,4,0,1)"/>
- <circle cx="51" cy="54" r="1" fill="rgba(238,75,0,1)"/>
- <circle cx="52" cy="54" r="1" fill="rgba(253,80,0,1)"/>
- <circle cx="53" cy="54" r="1" fill="rgba(248,78,0,1)"/>
- <circle cx="54" cy="54" r="1" fill="rgba(247,79,0,1)"/>
- <circle cx="55" cy="54" r="1" fill="rgba(245,81,0,1)"/>
- <circle cx="56" cy="54" r="1" fill="rgba(243,81,0,1)"/>
- <circle cx="57" cy="54" r="1" fill="rgba(243,80,0,1)"/>
- <circle cx="58" cy="54" r="1" fill="rgba(241,79,0,1)"/>
- <circle cx="59" cy="54" r="1" fill="rgba(240,75,0,1)"/>
- <circle cx="60" cy="54" r="1" fill="rgba(238,68,0,1)"/>
- <circle cx="61" cy="54" r="1" fill="rgba(235,60,0,1)"/>
- <circle cx="62" cy="54" r="1" fill="rgba(232,53,0,1)"/>
- <circle cx="63" cy="54" r="1" fill="rgba(230,47,0,1)"/>
- <circle cx="64" cy="54" r="1" fill="rgba(224,34,0,1)"/>
- <circle cx="65" cy="54" r="1" fill="rgba(176,16,0,1)"/>
- <circle cx="66" cy="54" r="1" fill="rgba(160,24,0,1)"/>
- <circle cx="67" cy="54" r="1" fill="rgba(224,32,0,1)"/>
- <circle cx="68" cy="54" r="1" fill="rgba(216,33,0,1)"/>
- <circle cx="69" cy="54" r="1" fill="rgba(217,35,0,1)"/>
- <circle cx="70" cy="54" r="1" fill="rgba(219,39,1,1)"/>
- <circle cx="71" cy="54" r="1" fill="rgba(220,43,2,1)"/>
- <circle cx="72" cy="54" r="1" fill="rgba(220,45,3,1)"/>
- <circle cx="73" cy="54" r="1" fill="rgba(219,45,3,1)"/>
- <circle cx="74" cy="54" r="1" fill="rgba(217,43,4,1)"/>
- <circle cx="75" cy="54" r="1" fill="rgba(216,40,5,1)"/>
- <circle cx="76" cy="54" r="1" fill="rgba(213,36,5,1)"/>
- <circle cx="77" cy="54" r="1" fill="rgba(210,32,5,1)"/>
- <circle cx="78" cy="54" r="1" fill="rgba(208,31,5,1)"/>
- <circle cx="79" cy="54" r="1" fill="rgba(206,30,6,1)"/>
- <circle cx="80" cy="54" r="1" fill="rgba(203,27,6,1)"/>
- <circle cx="81" cy="54" r="1" fill="rgba(202,27,6,1)"/>
- <circle cx="82" cy="54" r="1" fill="rgba(202,27,7,1)"/>
- <circle cx="83" cy="54" r="1" fill="rgba(206,31,9,1)"/>
- <circle cx="84" cy="54" r="1" fill="rgba(192,30,8,1)"/>
- <circle cx="85" cy="54" r="1" fill="rgba(37,3,0,1)"/>
- <circle cx="86" cy="54" r="1" fill="black"/>
- <circle cx="87" cy="54" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="88" cy="54" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="54" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="90" cy="54" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="91" cy="54" r="1" fill="black"/>
- <circle cx="92" cy="54" r="1" fill="rgba(45,7,1,1)"/>
- <circle cx="93" cy="54" r="1" fill="rgba(210,67,24,1)"/>
- <circle cx="94" cy="54" r="1" fill="rgba(221,77,30,1)"/>
- <circle cx="95" cy="54" r="1" fill="rgba(220,82,33,1)"/>
- <circle cx="96" cy="54" r="1" fill="rgba(222,87,36,1)"/>
- <circle cx="97" cy="54" r="1" fill="rgba(224,92,39,1)"/>
- <circle cx="98" cy="54" r="1" fill="rgba(225,97,42,1)"/>
- <circle cx="99" cy="54" r="1" fill="rgba(227,99,43,1)"/>
- <circle cx="100" cy="54" r="1" fill="rgba(227,101,43,1)"/>
- <circle cx="101" cy="54" r="1" fill="rgba(233,103,44,1)"/>
- <circle cx="102" cy="54" r="1" fill="rgba(155,58,20,0.486275)"/>
- <circle cx="103" cy="54" r="1" fill="rgba(117,41,12,0)"/>
- <circle cx="104" cy="54" r="1" fill="rgba(133,48,15,0)"/>
- <circle cx="105" cy="54" r="1" fill="rgba(105,38,12,0)"/>
- <circle cx="106" cy="54" r="1" fill="rgba(37,14,4,0)"/>
- <circle cx="107" cy="54" r="1" fill="rgba(0,1,0,0)"/>
- <circle cx="108" cy="54" r="1" fill="rgba(24,9,2,0)"/>
- <circle cx="109" cy="54" r="1" fill="rgba(45,21,8,0)"/>
- <circle cx="110" cy="54" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="111" cy="54" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="112" cy="54" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="113" cy="54" r="1" fill="rgba(46,22,8,0)"/>
- <circle cx="114" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="54" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="55" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="55" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="55" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="55" r="1" fill="rgba(96,65,38,0)"/>
- <circle cx="21" cy="55" r="1" fill="rgba(101,61,34,0)"/>
- <circle cx="22" cy="55" r="1" fill="rgba(94,54,28,0)"/>
- <circle cx="23" cy="55" r="1" fill="rgba(136,56,18,0)"/>
- <circle cx="24" cy="55" r="1" fill="rgba(169,58,9,0)"/>
- <circle cx="25" cy="55" r="1" fill="rgba(206,62,4,0)"/>
- <circle cx="26" cy="55" r="1" fill="rgba(242,70,0,0)"/>
- <circle cx="27" cy="55" r="1" fill="rgba(245,71,0,0.313725)"/>
- <circle cx="28" cy="55" r="1" fill="rgba(249,79,1,1)"/>
- <circle cx="29" cy="55" r="1" fill="rgba(250,91,3,1)"/>
- <circle cx="30" cy="55" r="1" fill="rgba(250,102,7,1)"/>
- <circle cx="31" cy="55" r="1" fill="rgba(252,109,10,1)"/>
- <circle cx="32" cy="55" r="1" fill="rgba(252,115,14,1)"/>
- <circle cx="33" cy="55" r="1" fill="rgba(252,119,17,1)"/>
- <circle cx="34" cy="55" r="1" fill="rgba(252,122,20,1)"/>
- <circle cx="35" cy="55" r="1" fill="rgba(252,123,21,1)"/>
- <circle cx="36" cy="55" r="1" fill="rgba(252,124,23,1)"/>
- <circle cx="37" cy="55" r="1" fill="rgba(252,124,24,1)"/>
- <circle cx="38" cy="55" r="1" fill="rgba(252,124,23,1)"/>
- <circle cx="39" cy="55" r="1" fill="rgba(252,122,22,1)"/>
- <circle cx="40" cy="55" r="1" fill="rgba(252,120,20,1)"/>
- <circle cx="41" cy="55" r="1" fill="rgba(253,118,18,1)"/>
- <circle cx="42" cy="55" r="1" fill="rgba(252,114,15,1)"/>
- <circle cx="43" cy="55" r="1" fill="rgba(127,50,12,1)"/>
- <circle cx="44" cy="55" r="1" fill="rgba(53,20,9,1)"/>
- <circle cx="45" cy="55" r="1" fill="rgba(50,16,5,1)"/>
- <circle cx="46" cy="55" r="1" fill="rgba(29,8,1,1)"/>
- <circle cx="47" cy="55" r="1" fill="rgba(7,1,0,1)"/>
- <circle cx="48" cy="55" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="49" cy="55" r="1" fill="black"/>
- <circle cx="50" cy="55" r="1" fill="rgba(45,7,0,1)"/>
- <circle cx="51" cy="55" r="1" fill="rgba(241,72,0,1)"/>
- <circle cx="52" cy="55" r="1" fill="rgba(252,75,0,1)"/>
- <circle cx="53" cy="55" r="1" fill="rgba(247,73,0,1)"/>
- <circle cx="54" cy="55" r="1" fill="rgba(246,73,0,1)"/>
- <circle cx="55" cy="55" r="1" fill="rgba(244,74,0,1)"/>
- <circle cx="56" cy="55" r="1" fill="rgba(242,76,0,1)"/>
- <circle cx="57" cy="55" r="1" fill="rgba(241,76,0,1)"/>
- <circle cx="58" cy="55" r="1" fill="rgba(241,76,0,1)"/>
- <circle cx="59" cy="55" r="1" fill="rgba(239,72,0,1)"/>
- <circle cx="60" cy="55" r="1" fill="rgba(237,67,0,1)"/>
- <circle cx="61" cy="55" r="1" fill="rgba(234,60,0,1)"/>
- <circle cx="62" cy="55" r="1" fill="rgba(231,52,0,1)"/>
- <circle cx="63" cy="55" r="1" fill="rgba(229,46,0,1)"/>
- <circle cx="64" cy="55" r="1" fill="rgba(224,34,0,1)"/>
- <circle cx="65" cy="55" r="1" fill="rgba(176,17,0,1)"/>
- <circle cx="66" cy="55" r="1" fill="rgba(162,25,1,1)"/>
- <circle cx="67" cy="55" r="1" fill="rgba(224,32,0,1)"/>
- <circle cx="68" cy="55" r="1" fill="rgba(216,33,0,1)"/>
- <circle cx="69" cy="55" r="1" fill="rgba(217,35,1,1)"/>
- <circle cx="70" cy="55" r="1" fill="rgba(219,40,1,1)"/>
- <circle cx="71" cy="55" r="1" fill="rgba(219,43,2,1)"/>
- <circle cx="72" cy="55" r="1" fill="rgba(220,45,3,1)"/>
- <circle cx="73" cy="55" r="1" fill="rgba(218,44,3,1)"/>
- <circle cx="74" cy="55" r="1" fill="rgba(217,41,4,1)"/>
- <circle cx="75" cy="55" r="1" fill="rgba(214,37,4,1)"/>
- <circle cx="76" cy="55" r="1" fill="rgba(211,33,5,1)"/>
- <circle cx="77" cy="55" r="1" fill="rgba(209,29,4,1)"/>
- <circle cx="78" cy="55" r="1" fill="rgba(207,28,4,1)"/>
- <circle cx="79" cy="55" r="1" fill="rgba(205,27,5,1)"/>
- <circle cx="80" cy="55" r="1" fill="rgba(202,25,5,1)"/>
- <circle cx="81" cy="55" r="1" fill="rgba(200,25,6,1)"/>
- <circle cx="82" cy="55" r="1" fill="rgba(200,26,6,1)"/>
- <circle cx="83" cy="55" r="1" fill="rgba(202,30,8,1)"/>
- <circle cx="84" cy="55" r="1" fill="rgba(210,34,10,1)"/>
- <circle cx="85" cy="55" r="1" fill="rgba(130,18,4,1)"/>
- <circle cx="86" cy="55" r="1" fill="black"/>
- <circle cx="87" cy="55" r="1" fill="black"/>
- <circle cx="88" cy="55" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="89" cy="55" r="1" fill="black"/>
- <circle cx="90" cy="55" r="1" fill="black"/>
- <circle cx="91" cy="55" r="1" fill="black"/>
- <circle cx="92" cy="55" r="1" fill="rgba(143,37,11,1)"/>
- <circle cx="93" cy="55" r="1" fill="rgba(222,72,27,1)"/>
- <circle cx="94" cy="55" r="1" fill="rgba(218,75,30,1)"/>
- <circle cx="95" cy="55" r="1" fill="rgba(221,81,33,1)"/>
- <circle cx="96" cy="55" r="1" fill="rgba(222,86,36,1)"/>
- <circle cx="97" cy="55" r="1" fill="rgba(224,91,39,1)"/>
- <circle cx="98" cy="55" r="1" fill="rgba(225,97,42,1)"/>
- <circle cx="99" cy="55" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="100" cy="55" r="1" fill="rgba(228,102,44,1)"/>
- <circle cx="101" cy="55" r="1" fill="rgba(236,107,47,1)"/>
- <circle cx="102" cy="55" r="1" fill="rgba(172,68,24,0.694118)"/>
- <circle cx="103" cy="55" r="1" fill="rgba(104,35,10,0.0862745)"/>
- <circle cx="104" cy="55" r="1" fill="rgba(127,46,14,0)"/>
- <circle cx="105" cy="55" r="1" fill="rgba(126,45,14,0)"/>
- <circle cx="106" cy="55" r="1" fill="rgba(120,43,13,0)"/>
- <circle cx="107" cy="55" r="1" fill="rgba(54,14,3,0)"/>
- <circle cx="108" cy="55" r="1" fill="rgba(7,5,1,0)"/>
- <circle cx="109" cy="55" r="1" fill="rgba(42,20,8,0)"/>
- <circle cx="110" cy="55" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="111" cy="55" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="112" cy="55" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="113" cy="55" r="1" fill="rgba(45,22,8,0)"/>
- <circle cx="114" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="55" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="56" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="56" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="56" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="56" r="1" fill="rgba(97,64,37,0)"/>
- <circle cx="21" cy="56" r="1" fill="rgba(90,59,34,0)"/>
- <circle cx="22" cy="56" r="1" fill="rgba(83,54,30,0)"/>
- <circle cx="23" cy="56" r="1" fill="rgba(70,48,28,0)"/>
- <circle cx="24" cy="56" r="1" fill="rgba(57,42,24,0)"/>
- <circle cx="25" cy="56" r="1" fill="rgba(68,38,19,0)"/>
- <circle cx="26" cy="56" r="1" fill="rgba(70,35,14,0)"/>
- <circle cx="27" cy="56" r="1" fill="rgba(185,56,3,0.564706)"/>
- <circle cx="28" cy="56" r="1" fill="rgba(255,82,0,1)"/>
- <circle cx="29" cy="56" r="1" fill="rgba(250,91,1,1)"/>
- <circle cx="30" cy="56" r="1" fill="rgba(251,99,3,1)"/>
- <circle cx="31" cy="56" r="1" fill="rgba(252,105,6,1)"/>
- <circle cx="32" cy="56" r="1" fill="rgba(252,110,9,1)"/>
- <circle cx="33" cy="56" r="1" fill="rgba(252,113,11,1)"/>
- <circle cx="34" cy="56" r="1" fill="rgba(252,115,13,1)"/>
- <circle cx="35" cy="56" r="1" fill="rgba(252,117,15,1)"/>
- <circle cx="36" cy="56" r="1" fill="rgba(252,117,16,1)"/>
- <circle cx="37" cy="56" r="1" fill="rgba(252,118,16,1)"/>
- <circle cx="38" cy="56" r="1" fill="rgba(252,117,16,1)"/>
- <circle cx="39" cy="56" r="1" fill="rgba(252,115,16,1)"/>
- <circle cx="40" cy="56" r="1" fill="rgba(252,113,14,1)"/>
- <circle cx="41" cy="56" r="1" fill="rgba(252,110,11,1)"/>
- <circle cx="42" cy="56" r="1" fill="rgba(255,111,9,1)"/>
- <circle cx="43" cy="56" r="1" fill="rgba(179,67,7,1)"/>
- <circle cx="44" cy="56" r="1" fill="rgba(22,9,4,1)"/>
- <circle cx="45" cy="56" r="1" fill="rgba(26,7,1,1)"/>
- <circle cx="46" cy="56" r="1" fill="rgba(10,1,0,1)"/>
- <circle cx="47" cy="56" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="48" cy="56" r="1" fill="rgba(4,0,0,1)"/>
- <circle cx="49" cy="56" r="1" fill="black"/>
- <circle cx="50" cy="56" r="1" fill="rgba(108,23,0,1)"/>
- <circle cx="51" cy="56" r="1" fill="rgba(252,74,0,1)"/>
- <circle cx="52" cy="56" r="1" fill="rgba(249,71,0,1)"/>
- <circle cx="53" cy="56" r="1" fill="rgba(246,69,0,1)"/>
- <circle cx="54" cy="56" r="1" fill="rgba(244,69,0,1)"/>
- <circle cx="55" cy="56" r="1" fill="rgba(242,69,0,1)"/>
- <circle cx="56" cy="56" r="1" fill="rgba(242,72,0,1)"/>
- <circle cx="57" cy="56" r="1" fill="rgba(241,73,0,1)"/>
- <circle cx="58" cy="56" r="1" fill="rgba(239,73,0,1)"/>
- <circle cx="59" cy="56" r="1" fill="rgba(238,71,0,1)"/>
- <circle cx="60" cy="56" r="1" fill="rgba(236,65,0,1)"/>
- <circle cx="61" cy="56" r="1" fill="rgba(233,59,0,1)"/>
- <circle cx="62" cy="56" r="1" fill="rgba(231,51,0,1)"/>
- <circle cx="63" cy="56" r="1" fill="rgba(228,46,0,1)"/>
- <circle cx="64" cy="56" r="1" fill="rgba(223,33,0,1)"/>
- <circle cx="65" cy="56" r="1" fill="rgba(177,18,0,1)"/>
- <circle cx="66" cy="56" r="1" fill="rgba(163,26,1,1)"/>
- <circle cx="67" cy="56" r="1" fill="rgba(223,31,0,1)"/>
- <circle cx="68" cy="56" r="1" fill="rgba(215,33,0,1)"/>
- <circle cx="69" cy="56" r="1" fill="rgba(217,36,0,1)"/>
- <circle cx="70" cy="56" r="1" fill="rgba(219,40,1,1)"/>
- <circle cx="71" cy="56" r="1" fill="rgba(219,42,2,1)"/>
- <circle cx="72" cy="56" r="1" fill="rgba(220,44,3,1)"/>
- <circle cx="73" cy="56" r="1" fill="rgba(218,42,3,1)"/>
- <circle cx="74" cy="56" r="1" fill="rgba(216,40,4,1)"/>
- <circle cx="75" cy="56" r="1" fill="rgba(214,36,4,1)"/>
- <circle cx="76" cy="56" r="1" fill="rgba(210,31,4,1)"/>
- <circle cx="77" cy="56" r="1" fill="rgba(207,27,4,1)"/>
- <circle cx="78" cy="56" r="1" fill="rgba(205,25,4,1)"/>
- <circle cx="79" cy="56" r="1" fill="rgba(203,24,4,1)"/>
- <circle cx="80" cy="56" r="1" fill="rgba(202,24,5,1)"/>
- <circle cx="81" cy="56" r="1" fill="rgba(200,24,5,1)"/>
- <circle cx="82" cy="56" r="1" fill="rgba(201,26,6,1)"/>
- <circle cx="83" cy="56" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="84" cy="56" r="1" fill="rgba(205,33,9,1)"/>
- <circle cx="85" cy="56" r="1" fill="rgba(204,35,10,1)"/>
- <circle cx="86" cy="56" r="1" fill="rgba(102,14,3,1)"/>
- <circle cx="87" cy="56" r="1" fill="black"/>
- <circle cx="88" cy="56" r="1" fill="black"/>
- <circle cx="89" cy="56" r="1" fill="black"/>
- <circle cx="90" cy="56" r="1" fill="rgba(42,5,0,1)"/>
- <circle cx="91" cy="56" r="1" fill="rgba(142,34,9,1)"/>
- <circle cx="92" cy="56" r="1" fill="rgba(218,66,24,1)"/>
- <circle cx="93" cy="56" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="94" cy="56" r="1" fill="rgba(218,75,29,1)"/>
- <circle cx="95" cy="56" r="1" fill="rgba(221,81,32,1)"/>
- <circle cx="96" cy="56" r="1" fill="rgba(222,86,35,1)"/>
- <circle cx="97" cy="56" r="1" fill="rgba(224,92,38,1)"/>
- <circle cx="98" cy="56" r="1" fill="rgba(226,97,42,1)"/>
- <circle cx="99" cy="56" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="100" cy="56" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="101" cy="56" r="1" fill="rgba(234,108,48,1)"/>
- <circle cx="102" cy="56" r="1" fill="rgba(198,85,32,0.839216)"/>
- <circle cx="103" cy="56" r="1" fill="rgba(95,31,8,0.192157)"/>
- <circle cx="104" cy="56" r="1" fill="rgba(122,43,14,0.00784314)"/>
- <circle cx="105" cy="56" r="1" fill="rgba(122,43,14,0)"/>
- <circle cx="106" cy="56" r="1" fill="rgba(125,45,14,0)"/>
- <circle cx="107" cy="56" r="1" fill="rgba(120,42,13,0)"/>
- <circle cx="108" cy="56" r="1" fill="rgba(78,26,8,0)"/>
- <circle cx="109" cy="56" r="1" fill="rgba(51,22,8,0)"/>
- <circle cx="110" cy="56" r="1" fill="rgba(50,23,9,0)"/>
- <circle cx="111" cy="56" r="1" fill="rgba(51,23,9,0)"/>
- <circle cx="112" cy="56" r="1" fill="rgba(51,23,9,0)"/>
- <circle cx="113" cy="56" r="1" fill="rgba(51,23,9,0)"/>
- <circle cx="114" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="56" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="57" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="57" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="57" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="57" r="1" fill="rgba(96,64,37,0)"/>
- <circle cx="21" cy="57" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="22" cy="57" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="23" cy="57" r="1" fill="rgba(81,49,27,0)"/>
- <circle cx="24" cy="57" r="1" fill="rgba(76,44,22,0)"/>
- <circle cx="25" cy="57" r="1" fill="rgba(67,38,19,0)"/>
- <circle cx="26" cy="57" r="1" fill="rgba(51,32,16,0.513725)"/>
- <circle cx="27" cy="57" r="1" fill="rgba(190,59,3,0.988235)"/>
- <circle cx="28" cy="57" r="1" fill="rgba(255,83,0,1)"/>
- <circle cx="29" cy="57" r="1" fill="rgba(251,89,0,1)"/>
- <circle cx="30" cy="57" r="1" fill="rgba(252,95,1,1)"/>
- <circle cx="31" cy="57" r="1" fill="rgba(252,100,3,1)"/>
- <circle cx="32" cy="57" r="1" fill="rgba(252,103,4,1)"/>
- <circle cx="33" cy="57" r="1" fill="rgba(252,106,6,1)"/>
- <circle cx="34" cy="57" r="1" fill="rgba(252,108,8,1)"/>
- <circle cx="35" cy="57" r="1" fill="rgba(252,109,9,1)"/>
- <circle cx="36" cy="57" r="1" fill="rgba(252,110,10,1)"/>
- <circle cx="37" cy="57" r="1" fill="rgba(252,110,10,1)"/>
- <circle cx="38" cy="57" r="1" fill="rgba(252,109,10,1)"/>
- <circle cx="39" cy="57" r="1" fill="rgba(252,108,9,1)"/>
- <circle cx="40" cy="57" r="1" fill="rgba(252,107,8,1)"/>
- <circle cx="41" cy="57" r="1" fill="rgba(252,103,6,1)"/>
- <circle cx="42" cy="57" r="1" fill="rgba(255,101,5,1)"/>
- <circle cx="43" cy="57" r="1" fill="rgba(245,94,2,1)"/>
- <circle cx="44" cy="57" r="1" fill="rgba(110,30,0,1)"/>
- <circle cx="45" cy="57" r="1" fill="black"/>
- <circle cx="46" cy="57" r="1" fill="black"/>
- <circle cx="47" cy="57" r="1" fill="black"/>
- <circle cx="48" cy="57" r="1" fill="black"/>
- <circle cx="49" cy="57" r="1" fill="rgba(37,5,0,1)"/>
- <circle cx="50" cy="57" r="1" fill="rgba(211,57,0,1)"/>
- <circle cx="51" cy="57" r="1" fill="rgba(253,71,0,1)"/>
- <circle cx="52" cy="57" r="1" fill="rgba(246,67,0,1)"/>
- <circle cx="53" cy="57" r="1" fill="rgba(245,65,0,1)"/>
- <circle cx="54" cy="57" r="1" fill="rgba(243,65,0,1)"/>
- <circle cx="55" cy="57" r="1" fill="rgba(241,65,0,1)"/>
- <circle cx="56" cy="57" r="1" fill="rgba(241,68,0,1)"/>
- <circle cx="57" cy="57" r="1" fill="rgba(240,70,0,1)"/>
- <circle cx="58" cy="57" r="1" fill="rgba(238,70,0,1)"/>
- <circle cx="59" cy="57" r="1" fill="rgba(237,70,0,1)"/>
- <circle cx="60" cy="57" r="1" fill="rgba(236,65,0,1)"/>
- <circle cx="61" cy="57" r="1" fill="rgba(233,58,0,1)"/>
- <circle cx="62" cy="57" r="1" fill="rgba(230,50,0,1)"/>
- <circle cx="63" cy="57" r="1" fill="rgba(227,45,0,1)"/>
- <circle cx="64" cy="57" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="65" cy="57" r="1" fill="rgba(178,19,0,1)"/>
- <circle cx="66" cy="57" r="1" fill="rgba(163,27,2,1)"/>
- <circle cx="67" cy="57" r="1" fill="rgba(221,30,0,1)"/>
- <circle cx="68" cy="57" r="1" fill="rgba(214,32,0,1)"/>
- <circle cx="69" cy="57" r="1" fill="rgba(216,36,0,1)"/>
- <circle cx="70" cy="57" r="1" fill="rgba(218,39,1,1)"/>
- <circle cx="71" cy="57" r="1" fill="rgba(219,42,2,1)"/>
- <circle cx="72" cy="57" r="1" fill="rgba(218,43,3,1)"/>
- <circle cx="73" cy="57" r="1" fill="rgba(217,41,3,1)"/>
- <circle cx="74" cy="57" r="1" fill="rgba(215,38,4,1)"/>
- <circle cx="75" cy="57" r="1" fill="rgba(213,34,4,1)"/>
- <circle cx="76" cy="57" r="1" fill="rgba(210,29,3,1)"/>
- <circle cx="77" cy="57" r="1" fill="rgba(207,26,3,1)"/>
- <circle cx="78" cy="57" r="1" fill="rgba(204,24,4,1)"/>
- <circle cx="79" cy="57" r="1" fill="rgba(203,23,4,1)"/>
- <circle cx="80" cy="57" r="1" fill="rgba(201,22,5,1)"/>
- <circle cx="81" cy="57" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="82" cy="57" r="1" fill="rgba(201,26,6,1)"/>
- <circle cx="83" cy="57" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="84" cy="57" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="85" cy="57" r="1" fill="rgba(207,36,10,1)"/>
- <circle cx="86" cy="57" r="1" fill="rgba(207,38,11,1)"/>
- <circle cx="87" cy="57" r="1" fill="rgba(161,30,8,1)"/>
- <circle cx="88" cy="57" r="1" fill="rgba(135,26,7,1)"/>
- <circle cx="89" cy="57" r="1" fill="rgba(155,33,9,1)"/>
- <circle cx="90" cy="57" r="1" fill="rgba(198,50,17,1)"/>
- <circle cx="91" cy="57" r="1" fill="rgba(221,63,22,1)"/>
- <circle cx="92" cy="57" r="1" fill="rgba(217,66,24,1)"/>
- <circle cx="93" cy="57" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="94" cy="57" r="1" fill="rgba(218,75,29,1)"/>
- <circle cx="95" cy="57" r="1" fill="rgba(221,81,32,1)"/>
- <circle cx="96" cy="57" r="1" fill="rgba(222,87,35,1)"/>
- <circle cx="97" cy="57" r="1" fill="rgba(224,92,38,1)"/>
- <circle cx="98" cy="57" r="1" fill="rgba(226,97,42,1)"/>
- <circle cx="99" cy="57" r="1" fill="rgba(228,103,45,1)"/>
- <circle cx="100" cy="57" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="101" cy="57" r="1" fill="rgba(233,109,48,1)"/>
- <circle cx="102" cy="57" r="1" fill="rgba(214,96,39,0.94902)"/>
- <circle cx="103" cy="57" r="1" fill="rgba(80,23,6,0.27451)"/>
- <circle cx="104" cy="57" r="1" fill="rgba(112,39,12,0.0470588)"/>
- <circle cx="105" cy="57" r="1" fill="rgba(121,44,14,0)"/>
- <circle cx="106" cy="57" r="1" fill="rgba(120,43,14,0)"/>
- <circle cx="107" cy="57" r="1" fill="rgba(121,44,14,0)"/>
- <circle cx="108" cy="57" r="1" fill="rgba(125,45,14,0)"/>
- <circle cx="109" cy="57" r="1" fill="rgba(116,42,13,0)"/>
- <circle cx="110" cy="57" r="1" fill="rgba(116,42,13,0)"/>
- <circle cx="111" cy="57" r="1" fill="rgba(116,42,13,0)"/>
- <circle cx="112" cy="57" r="1" fill="rgba(116,42,13,0)"/>
- <circle cx="113" cy="57" r="1" fill="rgba(116,42,13,0)"/>
- <circle cx="114" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="57" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="58" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="58" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="58" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="58" r="1" fill="rgba(96,64,37,0)"/>
- <circle cx="21" cy="58" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="22" cy="58" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="23" cy="58" r="1" fill="rgba(81,49,26,0)"/>
- <circle cx="24" cy="58" r="1" fill="rgba(76,44,22,0.0901961)"/>
- <circle cx="25" cy="58" r="1" fill="rgba(68,38,19,0.670588)"/>
- <circle cx="26" cy="58" r="1" fill="rgba(68,35,16,1)"/>
- <circle cx="27" cy="58" r="1" fill="rgba(214,65,1,1)"/>
- <circle cx="28" cy="58" r="1" fill="rgba(254,83,0,1)"/>
- <circle cx="29" cy="58" r="1" fill="rgba(250,87,0,1)"/>
- <circle cx="30" cy="58" r="1" fill="rgba(252,90,0,1)"/>
- <circle cx="31" cy="58" r="1" fill="rgba(252,93,0,1)"/>
- <circle cx="32" cy="58" r="1" fill="rgba(252,96,1,1)"/>
- <circle cx="33" cy="58" r="1" fill="rgba(252,99,2,1)"/>
- <circle cx="34" cy="58" r="1" fill="rgba(252,100,3,1)"/>
- <circle cx="35" cy="58" r="1" fill="rgba(252,102,4,1)"/>
- <circle cx="36" cy="58" r="1" fill="rgba(252,103,5,1)"/>
- <circle cx="37" cy="58" r="1" fill="rgba(252,102,5,1)"/>
- <circle cx="38" cy="58" r="1" fill="rgba(252,101,4,1)"/>
- <circle cx="39" cy="58" r="1" fill="rgba(252,100,4,1)"/>
- <circle cx="40" cy="58" r="1" fill="rgba(253,99,3,1)"/>
- <circle cx="41" cy="58" r="1" fill="rgba(253,96,2,1)"/>
- <circle cx="42" cy="58" r="1" fill="rgba(254,93,0,1)"/>
- <circle cx="43" cy="58" r="1" fill="rgba(255,91,0,1)"/>
- <circle cx="44" cy="58" r="1" fill="rgba(249,84,0,1)"/>
- <circle cx="45" cy="58" r="1" fill="rgba(171,48,0,1)"/>
- <circle cx="46" cy="58" r="1" fill="rgba(103,23,0,1)"/>
- <circle cx="47" cy="58" r="1" fill="rgba(71,13,0,1)"/>
- <circle cx="48" cy="58" r="1" fill="rgba(120,26,0,1)"/>
- <circle cx="49" cy="58" r="1" fill="rgba(214,58,0,1)"/>
- <circle cx="50" cy="58" r="1" fill="rgba(255,72,0,1)"/>
- <circle cx="51" cy="58" r="1" fill="rgba(246,66,0,1)"/>
- <circle cx="52" cy="58" r="1" fill="rgba(244,64,0,1)"/>
- <circle cx="53" cy="58" r="1" fill="rgba(243,61,0,1)"/>
- <circle cx="54" cy="58" r="1" fill="rgba(241,61,0,1)"/>
- <circle cx="55" cy="58" r="1" fill="rgba(240,63,0,1)"/>
- <circle cx="56" cy="58" r="1" fill="rgba(240,66,0,1)"/>
- <circle cx="57" cy="58" r="1" fill="rgba(239,68,0,1)"/>
- <circle cx="58" cy="58" r="1" fill="rgba(238,69,0,1)"/>
- <circle cx="59" cy="58" r="1" fill="rgba(236,67,0,1)"/>
- <circle cx="60" cy="58" r="1" fill="rgba(234,63,0,1)"/>
- <circle cx="61" cy="58" r="1" fill="rgba(233,57,0,1)"/>
- <circle cx="62" cy="58" r="1" fill="rgba(230,49,0,1)"/>
- <circle cx="63" cy="58" r="1" fill="rgba(227,44,0,1)"/>
- <circle cx="64" cy="58" r="1" fill="rgba(221,31,0,1)"/>
- <circle cx="65" cy="58" r="1" fill="rgba(177,19,1,1)"/>
- <circle cx="66" cy="58" r="1" fill="rgba(163,27,3,1)"/>
- <circle cx="67" cy="58" r="1" fill="rgba(220,30,0,1)"/>
- <circle cx="68" cy="58" r="1" fill="rgba(214,32,0,1)"/>
- <circle cx="69" cy="58" r="1" fill="rgba(215,35,1,1)"/>
- <circle cx="70" cy="58" r="1" fill="rgba(217,39,1,1)"/>
- <circle cx="71" cy="58" r="1" fill="rgba(218,42,2,1)"/>
- <circle cx="72" cy="58" r="1" fill="rgba(218,41,3,1)"/>
- <circle cx="73" cy="58" r="1" fill="rgba(217,40,3,1)"/>
- <circle cx="74" cy="58" r="1" fill="rgba(214,35,3,1)"/>
- <circle cx="75" cy="58" r="1" fill="rgba(211,32,3,1)"/>
- <circle cx="76" cy="58" r="1" fill="rgba(208,28,3,1)"/>
- <circle cx="77" cy="58" r="1" fill="rgba(206,26,3,1)"/>
- <circle cx="78" cy="58" r="1" fill="rgba(203,24,4,1)"/>
- <circle cx="79" cy="58" r="1" fill="rgba(203,22,4,1)"/>
- <circle cx="80" cy="58" r="1" fill="rgba(200,21,4,1)"/>
- <circle cx="81" cy="58" r="1" fill="rgba(200,23,6,1)"/>
- <circle cx="82" cy="58" r="1" fill="rgba(201,26,6,1)"/>
- <circle cx="83" cy="58" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="84" cy="58" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="85" cy="58" r="1" fill="rgba(205,36,10,1)"/>
- <circle cx="86" cy="58" r="1" fill="rgba(207,38,11,1)"/>
- <circle cx="87" cy="58" r="1" fill="rgba(214,44,14,1)"/>
- <circle cx="88" cy="58" r="1" fill="rgba(217,50,16,1)"/>
- <circle cx="89" cy="58" r="1" fill="rgba(217,54,18,1)"/>
- <circle cx="90" cy="58" r="1" fill="rgba(215,56,20,1)"/>
- <circle cx="91" cy="58" r="1" fill="rgba(214,60,21,1)"/>
- <circle cx="92" cy="58" r="1" fill="rgba(215,65,24,1)"/>
- <circle cx="93" cy="58" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="94" cy="58" r="1" fill="rgba(219,75,29,1)"/>
- <circle cx="95" cy="58" r="1" fill="rgba(221,81,33,1)"/>
- <circle cx="96" cy="58" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="97" cy="58" r="1" fill="rgba(224,92,39,1)"/>
- <circle cx="98" cy="58" r="1" fill="rgba(226,98,42,1)"/>
- <circle cx="99" cy="58" r="1" fill="rgba(228,103,46,1)"/>
- <circle cx="100" cy="58" r="1" fill="rgba(230,108,48,1)"/>
- <circle cx="101" cy="58" r="1" fill="rgba(233,111,49,1)"/>
- <circle cx="102" cy="58" r="1" fill="rgba(224,104,44,1)"/>
- <circle cx="103" cy="58" r="1" fill="rgba(86,33,10,0.6)"/>
- <circle cx="104" cy="58" r="1" fill="rgba(98,33,9,0.113725)"/>
- <circle cx="105" cy="58" r="1" fill="rgba(123,45,14,0)"/>
- <circle cx="106" cy="58" r="1" fill="rgba(122,45,14,0)"/>
- <circle cx="107" cy="58" r="1" fill="rgba(122,45,14,0)"/>
- <circle cx="108" cy="58" r="1" fill="rgba(122,45,14,0)"/>
- <circle cx="109" cy="58" r="1" fill="rgba(123,45,14,0)"/>
- <circle cx="110" cy="58" r="1" fill="rgba(123,45,14,0)"/>
- <circle cx="111" cy="58" r="1" fill="rgba(123,45,14,0)"/>
- <circle cx="112" cy="58" r="1" fill="rgba(123,45,14,0)"/>
- <circle cx="113" cy="58" r="1" fill="rgba(124,45,14,0)"/>
- <circle cx="114" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="58" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="59" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="59" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="59" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="59" r="1" fill="rgba(96,64,37,0)"/>
- <circle cx="21" cy="59" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="22" cy="59" r="1" fill="rgba(86,54,30,0)"/>
- <circle cx="23" cy="59" r="1" fill="rgba(81,49,26,0.219608)"/>
- <circle cx="24" cy="59" r="1" fill="rgba(77,45,23,0.827451)"/>
- <circle cx="25" cy="59" r="1" fill="rgba(67,39,21,1)"/>
- <circle cx="26" cy="59" r="1" fill="rgba(81,37,15,0.984314)"/>
- <circle cx="27" cy="59" r="1" fill="rgba(235,70,0,0.984314)"/>
- <circle cx="28" cy="59" r="1" fill="rgba(251,81,0,1)"/>
- <circle cx="29" cy="59" r="1" fill="rgba(249,84,0,1)"/>
- <circle cx="30" cy="59" r="1" fill="rgba(249,87,0,1)"/>
- <circle cx="31" cy="59" r="1" fill="rgba(251,89,0,1)"/>
- <circle cx="32" cy="59" r="1" fill="rgba(252,91,0,1)"/>
- <circle cx="33" cy="59" r="1" fill="rgba(252,93,0,1)"/>
- <circle cx="34" cy="59" r="1" fill="rgba(252,93,0,1)"/>
- <circle cx="35" cy="59" r="1" fill="rgba(253,94,0,1)"/>
- <circle cx="36" cy="59" r="1" fill="rgba(253,95,0,1)"/>
- <circle cx="37" cy="59" r="1" fill="rgba(253,95,0,1)"/>
- <circle cx="38" cy="59" r="1" fill="rgba(253,94,0,1)"/>
- <circle cx="39" cy="59" r="1" fill="rgba(254,93,0,1)"/>
- <circle cx="40" cy="59" r="1" fill="rgba(254,91,0,1)"/>
- <circle cx="41" cy="59" r="1" fill="rgba(253,90,0,1)"/>
- <circle cx="42" cy="59" r="1" fill="rgba(253,87,0,1)"/>
- <circle cx="43" cy="59" r="1" fill="rgba(253,85,0,1)"/>
- <circle cx="44" cy="59" r="1" fill="rgba(255,84,0,1)"/>
- <circle cx="45" cy="59" r="1" fill="rgba(255,85,0,1)"/>
- <circle cx="46" cy="59" r="1" fill="rgba(252,78,0,1)"/>
- <circle cx="47" cy="59" r="1" fill="rgba(245,74,0,1)"/>
- <circle cx="48" cy="59" r="1" fill="rgba(255,75,0,1)"/>
- <circle cx="49" cy="59" r="1" fill="rgba(255,72,0,1)"/>
- <circle cx="50" cy="59" r="1" fill="rgba(246,65,0,1)"/>
- <circle cx="51" cy="59" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="52" cy="59" r="1" fill="rgba(242,60,0,1)"/>
- <circle cx="53" cy="59" r="1" fill="rgba(241,58,0,1)"/>
- <circle cx="54" cy="59" r="1" fill="rgba(241,58,0,1)"/>
- <circle cx="55" cy="59" r="1" fill="rgba(239,61,0,1)"/>
- <circle cx="56" cy="59" r="1" fill="rgba(239,64,0,1)"/>
- <circle cx="57" cy="59" r="1" fill="rgba(238,66,0,1)"/>
- <circle cx="58" cy="59" r="1" fill="rgba(236,68,0,1)"/>
- <circle cx="59" cy="59" r="1" fill="rgba(236,65,0,1)"/>
- <circle cx="60" cy="59" r="1" fill="rgba(233,61,0,1)"/>
- <circle cx="61" cy="59" r="1" fill="rgba(231,56,0,1)"/>
- <circle cx="62" cy="59" r="1" fill="rgba(229,49,0,1)"/>
- <circle cx="63" cy="59" r="1" fill="rgba(226,42,0,1)"/>
- <circle cx="64" cy="59" r="1" fill="rgba(220,29,0,1)"/>
- <circle cx="65" cy="59" r="1" fill="rgba(176,19,1,1)"/>
- <circle cx="66" cy="59" r="1" fill="rgba(163,27,3,1)"/>
- <circle cx="67" cy="59" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="68" cy="59" r="1" fill="rgba(212,30,0,1)"/>
- <circle cx="69" cy="59" r="1" fill="rgba(214,35,1,1)"/>
- <circle cx="70" cy="59" r="1" fill="rgba(217,39,1,1)"/>
- <circle cx="71" cy="59" r="1" fill="rgba(217,41,2,1)"/>
- <circle cx="72" cy="59" r="1" fill="rgba(217,41,3,1)"/>
- <circle cx="73" cy="59" r="1" fill="rgba(216,38,3,1)"/>
- <circle cx="74" cy="59" r="1" fill="rgba(214,34,3,1)"/>
- <circle cx="75" cy="59" r="1" fill="rgba(210,30,3,1)"/>
- <circle cx="76" cy="59" r="1" fill="rgba(207,27,3,1)"/>
- <circle cx="77" cy="59" r="1" fill="rgba(205,24,3,1)"/>
- <circle cx="78" cy="59" r="1" fill="rgba(203,23,3,1)"/>
- <circle cx="79" cy="59" r="1" fill="rgba(202,21,4,1)"/>
- <circle cx="80" cy="59" r="1" fill="rgba(200,21,4,1)"/>
- <circle cx="81" cy="59" r="1" fill="rgba(200,23,6,1)"/>
- <circle cx="82" cy="59" r="1" fill="rgba(202,26,6,1)"/>
- <circle cx="83" cy="59" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="84" cy="59" r="1" fill="rgba(203,33,9,1)"/>
- <circle cx="85" cy="59" r="1" fill="rgba(205,36,10,1)"/>
- <circle cx="86" cy="59" r="1" fill="rgba(206,38,11,1)"/>
- <circle cx="87" cy="59" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="88" cy="59" r="1" fill="rgba(207,47,14,1)"/>
- <circle cx="89" cy="59" r="1" fill="rgba(210,51,16,1)"/>
- <circle cx="90" cy="59" r="1" fill="rgba(212,55,19,1)"/>
- <circle cx="91" cy="59" r="1" fill="rgba(214,60,22,1)"/>
- <circle cx="92" cy="59" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="93" cy="59" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="94" cy="59" r="1" fill="rgba(219,76,29,1)"/>
- <circle cx="95" cy="59" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="96" cy="59" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="97" cy="59" r="1" fill="rgba(224,93,39,1)"/>
- <circle cx="98" cy="59" r="1" fill="rgba(227,99,43,1)"/>
- <circle cx="99" cy="59" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="100" cy="59" r="1" fill="rgba(231,110,48,1)"/>
- <circle cx="101" cy="59" r="1" fill="rgba(233,111,49,1)"/>
- <circle cx="102" cy="59" r="1" fill="rgba(230,108,47,1)"/>
- <circle cx="103" cy="59" r="1" fill="rgba(106,48,20,0.992157)"/>
- <circle cx="104" cy="59" r="1" fill="rgba(73,28,9,0.466667)"/>
- <circle cx="105" cy="59" r="1" fill="rgba(126,47,14,0)"/>
- <circle cx="106" cy="59" r="1" fill="rgba(130,51,16,0)"/>
- <circle cx="107" cy="59" r="1" fill="rgba(130,50,16,0)"/>
- <circle cx="108" cy="59" r="1" fill="rgba(130,50,16,0)"/>
- <circle cx="109" cy="59" r="1" fill="rgba(130,49,16,0)"/>
- <circle cx="110" cy="59" r="1" fill="rgba(130,49,16,0)"/>
- <circle cx="111" cy="59" r="1" fill="rgba(130,49,16,0)"/>
- <circle cx="112" cy="59" r="1" fill="rgba(130,49,15,0)"/>
- <circle cx="113" cy="59" r="1" fill="rgba(130,48,14,0)"/>
- <circle cx="114" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="59" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="60" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="60" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="60" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="60" r="1" fill="rgba(96,64,37,0)"/>
- <circle cx="21" cy="60" r="1" fill="rgba(92,59,34,0)"/>
- <circle cx="22" cy="60" r="1" fill="rgba(87,54,30,0.419608)"/>
- <circle cx="23" cy="60" r="1" fill="rgba(83,50,27,0.94902)"/>
- <circle cx="24" cy="60" r="1" fill="rgba(78,46,24,1)"/>
- <circle cx="25" cy="60" r="1" fill="rgba(50,38,23,0.882353)"/>
- <circle cx="26" cy="60" r="1" fill="rgba(159,51,7,0.427451)"/>
- <circle cx="27" cy="60" r="1" fill="rgba(252,72,0,0.945098)"/>
- <circle cx="28" cy="60" r="1" fill="rgba(247,78,0,1)"/>
- <circle cx="29" cy="60" r="1" fill="rgba(248,83,0,1)"/>
- <circle cx="30" cy="60" r="1" fill="rgba(249,87,0,1)"/>
- <circle cx="31" cy="60" r="1" fill="rgba(250,89,0,1)"/>
- <circle cx="32" cy="60" r="1" fill="rgba(251,91,0,1)"/>
- <circle cx="33" cy="60" r="1" fill="rgba(252,90,0,1)"/>
- <circle cx="34" cy="60" r="1" fill="rgba(252,89,0,1)"/>
- <circle cx="35" cy="60" r="1" fill="rgba(252,89,0,1)"/>
- <circle cx="36" cy="60" r="1" fill="rgba(253,89,0,1)"/>
- <circle cx="37" cy="60" r="1" fill="rgba(252,89,0,1)"/>
- <circle cx="38" cy="60" r="1" fill="rgba(252,89,0,1)"/>
- <circle cx="39" cy="60" r="1" fill="rgba(253,87,0,1)"/>
- <circle cx="40" cy="60" r="1" fill="rgba(253,87,0,1)"/>
- <circle cx="41" cy="60" r="1" fill="rgba(252,85,0,1)"/>
- <circle cx="42" cy="60" r="1" fill="rgba(252,84,0,1)"/>
- <circle cx="43" cy="60" r="1" fill="rgba(252,82,0,1)"/>
- <circle cx="44" cy="60" r="1" fill="rgba(252,79,0,1)"/>
- <circle cx="45" cy="60" r="1" fill="rgba(250,76,0,1)"/>
- <circle cx="46" cy="60" r="1" fill="rgba(251,75,0,1)"/>
- <circle cx="47" cy="60" r="1" fill="rgba(252,73,0,1)"/>
- <circle cx="48" cy="60" r="1" fill="rgba(249,69,0,1)"/>
- <circle cx="49" cy="60" r="1" fill="rgba(247,66,0,1)"/>
- <circle cx="50" cy="60" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="51" cy="60" r="1" fill="rgba(243,60,0,1)"/>
- <circle cx="52" cy="60" r="1" fill="rgba(241,57,0,1)"/>
- <circle cx="53" cy="60" r="1" fill="rgba(240,55,0,1)"/>
- <circle cx="54" cy="60" r="1" fill="rgba(239,57,0,1)"/>
- <circle cx="55" cy="60" r="1" fill="rgba(238,59,0,1)"/>
- <circle cx="56" cy="60" r="1" fill="rgba(238,62,0,1)"/>
- <circle cx="57" cy="60" r="1" fill="rgba(237,64,0,1)"/>
- <circle cx="58" cy="60" r="1" fill="rgba(236,66,0,1)"/>
- <circle cx="59" cy="60" r="1" fill="rgba(234,64,0,1)"/>
- <circle cx="60" cy="60" r="1" fill="rgba(233,60,0,1)"/>
- <circle cx="61" cy="60" r="1" fill="rgba(230,54,0,1)"/>
- <circle cx="62" cy="60" r="1" fill="rgba(228,47,0,1)"/>
- <circle cx="63" cy="60" r="1" fill="rgba(225,41,0,1)"/>
- <circle cx="64" cy="60" r="1" fill="rgba(219,29,0,1)"/>
- <circle cx="65" cy="60" r="1" fill="rgba(176,20,1,1)"/>
- <circle cx="66" cy="60" r="1" fill="rgba(163,28,3,1)"/>
- <circle cx="67" cy="60" r="1" fill="rgba(216,27,0,1)"/>
- <circle cx="68" cy="60" r="1" fill="rgba(210,30,0,1)"/>
- <circle cx="69" cy="60" r="1" fill="rgba(214,34,1,1)"/>
- <circle cx="70" cy="60" r="1" fill="rgba(216,39,1,1)"/>
- <circle cx="71" cy="60" r="1" fill="rgba(217,41,2,1)"/>
- <circle cx="72" cy="60" r="1" fill="rgba(217,40,3,1)"/>
- <circle cx="73" cy="60" r="1" fill="rgba(215,36,3,1)"/>
- <circle cx="74" cy="60" r="1" fill="rgba(213,32,3,1)"/>
- <circle cx="75" cy="60" r="1" fill="rgba(209,29,3,1)"/>
- <circle cx="76" cy="60" r="1" fill="rgba(206,25,3,1)"/>
- <circle cx="77" cy="60" r="1" fill="rgba(204,23,3,1)"/>
- <circle cx="78" cy="60" r="1" fill="rgba(203,21,3,1)"/>
- <circle cx="79" cy="60" r="1" fill="rgba(201,21,4,1)"/>
- <circle cx="80" cy="60" r="1" fill="rgba(200,21,4,1)"/>
- <circle cx="81" cy="60" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="82" cy="60" r="1" fill="rgba(202,26,6,1)"/>
- <circle cx="83" cy="60" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="84" cy="60" r="1" fill="rgba(203,33,9,1)"/>
- <circle cx="85" cy="60" r="1" fill="rgba(204,35,10,1)"/>
- <circle cx="86" cy="60" r="1" fill="rgba(207,39,11,1)"/>
- <circle cx="87" cy="60" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="88" cy="60" r="1" fill="rgba(208,47,14,1)"/>
- <circle cx="89" cy="60" r="1" fill="rgba(210,51,16,1)"/>
- <circle cx="90" cy="60" r="1" fill="rgba(212,56,20,1)"/>
- <circle cx="91" cy="60" r="1" fill="rgba(214,61,22,1)"/>
- <circle cx="92" cy="60" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="93" cy="60" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="94" cy="60" r="1" fill="rgba(219,76,30,1)"/>
- <circle cx="95" cy="60" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="96" cy="60" r="1" fill="rgba(224,88,36,1)"/>
- <circle cx="97" cy="60" r="1" fill="rgba(225,94,39,1)"/>
- <circle cx="98" cy="60" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="99" cy="60" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="100" cy="60" r="1" fill="rgba(231,110,50,1)"/>
- <circle cx="101" cy="60" r="1" fill="rgba(233,112,50,1)"/>
- <circle cx="102" cy="60" r="1" fill="rgba(236,112,48,1)"/>
- <circle cx="103" cy="60" r="1" fill="rgba(128,55,22,1)"/>
- <circle cx="104" cy="60" r="1" fill="rgba(46,26,12,0.952941)"/>
- <circle cx="105" cy="60" r="1" fill="rgba(97,38,13,0.278431)"/>
- <circle cx="106" cy="60" r="1" fill="rgba(115,43,13,0)"/>
- <circle cx="107" cy="60" r="1" fill="rgba(113,42,14,0)"/>
- <circle cx="108" cy="60" r="1" fill="rgba(113,43,14,0)"/>
- <circle cx="109" cy="60" r="1" fill="rgba(114,43,14,0)"/>
- <circle cx="110" cy="60" r="1" fill="rgba(114,43,14,0)"/>
- <circle cx="111" cy="60" r="1" fill="rgba(114,43,14,0)"/>
- <circle cx="112" cy="60" r="1" fill="rgba(115,44,14,0)"/>
- <circle cx="113" cy="60" r="1" fill="rgba(111,65,35,0)"/>
- <circle cx="114" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="60" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="61" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="61" r="1" fill="rgba(103,71,44,0)"/>
- <circle cx="19" cy="61" r="1" fill="rgba(100,68,41,0)"/>
- <circle cx="20" cy="61" r="1" fill="rgba(96,64,37,0.14902)"/>
- <circle cx="21" cy="61" r="1" fill="rgba(92,59,34,0.682353)"/>
- <circle cx="22" cy="61" r="1" fill="rgba(87,55,31,1)"/>
- <circle cx="23" cy="61" r="1" fill="rgba(84,51,27,1)"/>
- <circle cx="24" cy="61" r="1" fill="rgba(63,44,26,0.870588)"/>
- <circle cx="25" cy="61" r="1" fill="rgba(135,57,13,0.160784)"/>
- <circle cx="26" cy="61" r="1" fill="rgba(244,77,0,0.2)"/>
- <circle cx="27" cy="61" r="1" fill="rgba(245,70,0,0.996078)"/>
- <circle cx="28" cy="61" r="1" fill="rgba(246,78,0,1)"/>
- <circle cx="29" cy="61" r="1" fill="rgba(248,85,1,1)"/>
- <circle cx="30" cy="61" r="1" fill="rgba(249,90,1,1)"/>
- <circle cx="31" cy="61" r="1" fill="rgba(250,91,1,1)"/>
- <circle cx="32" cy="61" r="1" fill="rgba(251,92,1,1)"/>
- <circle cx="33" cy="61" r="1" fill="rgba(251,91,0,1)"/>
- <circle cx="34" cy="61" r="1" fill="rgba(252,88,0,1)"/>
- <circle cx="35" cy="61" r="1" fill="rgba(252,87,0,1)"/>
- <circle cx="36" cy="61" r="1" fill="rgba(251,85,0,1)"/>
- <circle cx="37" cy="61" r="1" fill="rgba(252,85,0,1)"/>
- <circle cx="38" cy="61" r="1" fill="rgba(252,84,0,1)"/>
- <circle cx="39" cy="61" r="1" fill="rgba(252,83,0,1)"/>
- <circle cx="40" cy="61" r="1" fill="rgba(252,83,0,1)"/>
- <circle cx="41" cy="61" r="1" fill="rgba(252,81,0,1)"/>
- <circle cx="42" cy="61" r="1" fill="rgba(251,80,0,1)"/>
- <circle cx="43" cy="61" r="1" fill="rgba(250,77,0,1)"/>
- <circle cx="44" cy="61" r="1" fill="rgba(249,76,0,1)"/>
- <circle cx="45" cy="61" r="1" fill="rgba(248,73,0,1)"/>
- <circle cx="46" cy="61" r="1" fill="rgba(249,71,0,1)"/>
- <circle cx="47" cy="61" r="1" fill="rgba(248,68,0,1)"/>
- <circle cx="48" cy="61" r="1" fill="rgba(247,65,0,1)"/>
- <circle cx="49" cy="61" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="50" cy="61" r="1" fill="rgba(243,59,0,1)"/>
- <circle cx="51" cy="61" r="1" fill="rgba(242,56,0,1)"/>
- <circle cx="52" cy="61" r="1" fill="rgba(240,54,0,1)"/>
- <circle cx="53" cy="61" r="1" fill="rgba(239,53,0,1)"/>
- <circle cx="54" cy="61" r="1" fill="rgba(238,55,0,1)"/>
- <circle cx="55" cy="61" r="1" fill="rgba(236,57,0,1)"/>
- <circle cx="56" cy="61" r="1" fill="rgba(236,61,0,1)"/>
- <circle cx="57" cy="61" r="1" fill="rgba(236,63,0,1)"/>
- <circle cx="58" cy="61" r="1" fill="rgba(236,65,0,1)"/>
- <circle cx="59" cy="61" r="1" fill="rgba(234,63,0,1)"/>
- <circle cx="60" cy="61" r="1" fill="rgba(232,58,0,1)"/>
- <circle cx="61" cy="61" r="1" fill="rgba(230,53,0,1)"/>
- <circle cx="62" cy="61" r="1" fill="rgba(227,46,0,1)"/>
- <circle cx="63" cy="61" r="1" fill="rgba(224,40,0,1)"/>
- <circle cx="64" cy="61" r="1" fill="rgba(218,28,0,1)"/>
- <circle cx="65" cy="61" r="1" fill="rgba(175,20,1,1)"/>
- <circle cx="66" cy="61" r="1" fill="rgba(161,28,4,1)"/>
- <circle cx="67" cy="61" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="68" cy="61" r="1" fill="rgba(210,30,0,1)"/>
- <circle cx="69" cy="61" r="1" fill="rgba(214,34,1,1)"/>
- <circle cx="70" cy="61" r="1" fill="rgba(215,37,2,1)"/>
- <circle cx="71" cy="61" r="1" fill="rgba(217,39,2,1)"/>
- <circle cx="72" cy="61" r="1" fill="rgba(216,38,3,1)"/>
- <circle cx="73" cy="61" r="1" fill="rgba(214,35,3,1)"/>
- <circle cx="74" cy="61" r="1" fill="rgba(211,31,3,1)"/>
- <circle cx="75" cy="61" r="1" fill="rgba(208,28,3,1)"/>
- <circle cx="76" cy="61" r="1" fill="rgba(206,24,3,1)"/>
- <circle cx="77" cy="61" r="1" fill="rgba(203,21,3,1)"/>
- <circle cx="78" cy="61" r="1" fill="rgba(202,21,3,1)"/>
- <circle cx="79" cy="61" r="1" fill="rgba(200,20,4,1)"/>
- <circle cx="80" cy="61" r="1" fill="rgba(200,20,5,1)"/>
- <circle cx="81" cy="61" r="1" fill="rgba(201,24,5,1)"/>
- <circle cx="82" cy="61" r="1" fill="rgba(202,27,6,1)"/>
- <circle cx="83" cy="61" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="84" cy="61" r="1" fill="rgba(203,33,9,1)"/>
- <circle cx="85" cy="61" r="1" fill="rgba(204,36,10,1)"/>
- <circle cx="86" cy="61" r="1" fill="rgba(207,40,12,1)"/>
- <circle cx="87" cy="61" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="88" cy="61" r="1" fill="rgba(208,47,14,1)"/>
- <circle cx="89" cy="61" r="1" fill="rgba(210,52,17,1)"/>
- <circle cx="90" cy="61" r="1" fill="rgba(212,57,20,1)"/>
- <circle cx="91" cy="61" r="1" fill="rgba(214,61,22,1)"/>
- <circle cx="92" cy="61" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="93" cy="61" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="94" cy="61" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="95" cy="61" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="96" cy="61" r="1" fill="rgba(224,89,36,1)"/>
- <circle cx="97" cy="61" r="1" fill="rgba(226,95,40,1)"/>
- <circle cx="98" cy="61" r="1" fill="rgba(227,101,44,1)"/>
- <circle cx="99" cy="61" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="100" cy="61" r="1" fill="rgba(231,112,50,1)"/>
- <circle cx="101" cy="61" r="1" fill="rgba(233,113,51,1)"/>
- <circle cx="102" cy="61" r="1" fill="rgba(242,116,51,1)"/>
- <circle cx="103" cy="61" r="1" fill="rgba(147,64,24,1)"/>
- <circle cx="104" cy="61" r="1" fill="rgba(45,26,13,1)"/>
- <circle cx="105" cy="61" r="1" fill="rgba(67,36,17,0.894118)"/>
- <circle cx="106" cy="61" r="1" fill="rgba(74,39,19,0.14902)"/>
- <circle cx="107" cy="61" r="1" fill="rgba(80,46,23,0)"/>
- <circle cx="108" cy="61" r="1" fill="rgba(84,51,27,0)"/>
- <circle cx="109" cy="61" r="1" fill="rgba(91,56,31,0)"/>
- <circle cx="110" cy="61" r="1" fill="rgba(96,61,35,0)"/>
- <circle cx="111" cy="61" r="1" fill="rgba(99,66,39,0)"/>
- <circle cx="112" cy="61" r="1" fill="rgba(103,69,42,0)"/>
- <circle cx="113" cy="61" r="1" fill="rgba(105,75,48,0)"/>
- <circle cx="114" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="61" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="62" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="62" r="1" fill="rgba(103,71,44,0.0666667)"/>
- <circle cx="19" cy="62" r="1" fill="rgba(100,68,41,0.443137)"/>
- <circle cx="20" cy="62" r="1" fill="rgba(96,64,37,0.905882)"/>
- <circle cx="21" cy="62" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="22" cy="62" r="1" fill="rgba(87,55,31,1)"/>
- <circle cx="23" cy="62" r="1" fill="rgba(73,49,30,0.815686)"/>
- <circle cx="24" cy="62" r="1" fill="rgba(140,58,15,0.129412)"/>
- <circle cx="25" cy="62" r="1" fill="rgba(255,92,0,0)"/>
- <circle cx="26" cy="62" r="1" fill="rgba(254,79,0,0.345098)"/>
- <circle cx="27" cy="62" r="1" fill="rgba(241,68,0,1)"/>
- <circle cx="28" cy="62" r="1" fill="rgba(247,81,1,1)"/>
- <circle cx="29" cy="62" r="1" fill="rgba(249,88,1,1)"/>
- <circle cx="30" cy="62" r="1" fill="rgba(250,92,2,1)"/>
- <circle cx="31" cy="62" r="1" fill="rgba(251,92,1,1)"/>
- <circle cx="32" cy="62" r="1" fill="rgba(251,91,0,1)"/>
- <circle cx="33" cy="62" r="1" fill="rgba(251,89,0,1)"/>
- <circle cx="34" cy="62" r="1" fill="rgba(251,87,0,1)"/>
- <circle cx="35" cy="62" r="1" fill="rgba(251,84,0,1)"/>
- <circle cx="36" cy="62" r="1" fill="rgba(250,81,0,1)"/>
- <circle cx="37" cy="62" r="1" fill="rgba(250,81,0,1)"/>
- <circle cx="38" cy="62" r="1" fill="rgba(251,80,0,1)"/>
- <circle cx="39" cy="62" r="1" fill="rgba(250,79,0,1)"/>
- <circle cx="40" cy="62" r="1" fill="rgba(250,78,0,1)"/>
- <circle cx="41" cy="62" r="1" fill="rgba(250,77,0,1)"/>
- <circle cx="42" cy="62" r="1" fill="rgba(249,76,0,1)"/>
- <circle cx="43" cy="62" r="1" fill="rgba(249,74,0,1)"/>
- <circle cx="44" cy="62" r="1" fill="rgba(248,72,0,1)"/>
- <circle cx="45" cy="62" r="1" fill="rgba(247,70,0,1)"/>
- <circle cx="46" cy="62" r="1" fill="rgba(247,67,0,1)"/>
- <circle cx="47" cy="62" r="1" fill="rgba(246,65,0,1)"/>
- <circle cx="48" cy="62" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="49" cy="62" r="1" fill="rgba(243,59,0,1)"/>
- <circle cx="50" cy="62" r="1" fill="rgba(241,55,0,1)"/>
- <circle cx="51" cy="62" r="1" fill="rgba(240,53,0,1)"/>
- <circle cx="52" cy="62" r="1" fill="rgba(238,51,0,1)"/>
- <circle cx="53" cy="62" r="1" fill="rgba(238,52,0,1)"/>
- <circle cx="54" cy="62" r="1" fill="rgba(237,53,0,1)"/>
- <circle cx="55" cy="62" r="1" fill="rgba(235,56,0,1)"/>
- <circle cx="56" cy="62" r="1" fill="rgba(235,59,0,1)"/>
- <circle cx="57" cy="62" r="1" fill="rgba(234,61,0,1)"/>
- <circle cx="58" cy="62" r="1" fill="rgba(233,63,0,1)"/>
- <circle cx="59" cy="62" r="1" fill="rgba(233,61,0,1)"/>
- <circle cx="60" cy="62" r="1" fill="rgba(231,56,0,1)"/>
- <circle cx="61" cy="62" r="1" fill="rgba(229,51,0,1)"/>
- <circle cx="62" cy="62" r="1" fill="rgba(225,45,0,1)"/>
- <circle cx="63" cy="62" r="1" fill="rgba(223,38,0,1)"/>
- <circle cx="64" cy="62" r="1" fill="rgba(217,27,0,1)"/>
- <circle cx="65" cy="62" r="1" fill="rgba(174,19,1,1)"/>
- <circle cx="66" cy="62" r="1" fill="rgba(162,29,4,1)"/>
- <circle cx="67" cy="62" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="68" cy="62" r="1" fill="rgba(210,29,0,1)"/>
- <circle cx="69" cy="62" r="1" fill="rgba(213,33,1,1)"/>
- <circle cx="70" cy="62" r="1" fill="rgba(214,37,2,1)"/>
- <circle cx="71" cy="62" r="1" fill="rgba(215,39,2,1)"/>
- <circle cx="72" cy="62" r="1" fill="rgba(215,38,3,1)"/>
- <circle cx="73" cy="62" r="1" fill="rgba(213,34,3,1)"/>
- <circle cx="74" cy="62" r="1" fill="rgba(210,30,3,1)"/>
- <circle cx="75" cy="62" r="1" fill="rgba(207,27,3,1)"/>
- <circle cx="76" cy="62" r="1" fill="rgba(205,23,3,1)"/>
- <circle cx="77" cy="62" r="1" fill="rgba(202,20,3,1)"/>
- <circle cx="78" cy="62" r="1" fill="rgba(200,20,3,1)"/>
- <circle cx="79" cy="62" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="80" cy="62" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="81" cy="62" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="82" cy="62" r="1" fill="rgba(202,27,6,1)"/>
- <circle cx="83" cy="62" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="84" cy="62" r="1" fill="rgba(204,33,9,1)"/>
- <circle cx="85" cy="62" r="1" fill="rgba(205,37,10,1)"/>
- <circle cx="86" cy="62" r="1" fill="rgba(206,40,12,1)"/>
- <circle cx="87" cy="62" r="1" fill="rgba(208,44,13,1)"/>
- <circle cx="88" cy="62" r="1" fill="rgba(209,48,15,1)"/>
- <circle cx="89" cy="62" r="1" fill="rgba(210,52,18,1)"/>
- <circle cx="90" cy="62" r="1" fill="rgba(212,57,20,1)"/>
- <circle cx="91" cy="62" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="92" cy="62" r="1" fill="rgba(216,67,24,1)"/>
- <circle cx="93" cy="62" r="1" fill="rgba(217,72,27,1)"/>
- <circle cx="94" cy="62" r="1" fill="rgba(220,78,30,1)"/>
- <circle cx="95" cy="62" r="1" fill="rgba(222,84,33,1)"/>
- <circle cx="96" cy="62" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="97" cy="62" r="1" fill="rgba(226,96,41,1)"/>
- <circle cx="98" cy="62" r="1" fill="rgba(228,102,44,1)"/>
- <circle cx="99" cy="62" r="1" fill="rgba(230,107,48,1)"/>
- <circle cx="100" cy="62" r="1" fill="rgba(232,112,50,1)"/>
- <circle cx="101" cy="62" r="1" fill="rgba(233,114,52,1)"/>
- <circle cx="102" cy="62" r="1" fill="rgba(244,117,52,1)"/>
- <circle cx="103" cy="62" r="1" fill="rgba(162,71,28,0.988235)"/>
- <circle cx="104" cy="62" r="1" fill="rgba(49,28,13,1)"/>
- <circle cx="105" cy="62" r="1" fill="rgba(69,38,19,1)"/>
- <circle cx="106" cy="62" r="1" fill="rgba(73,41,21,0.819608)"/>
- <circle cx="107" cy="62" r="1" fill="rgba(77,46,24,0.0941176)"/>
- <circle cx="108" cy="62" r="1" fill="rgba(84,52,29,0)"/>
- <circle cx="109" cy="62" r="1" fill="rgba(91,58,33,0)"/>
- <circle cx="110" cy="62" r="1" fill="rgba(96,63,38,0)"/>
- <circle cx="111" cy="62" r="1" fill="rgba(100,69,42,0)"/>
- <circle cx="112" cy="62" r="1" fill="rgba(104,72,46,0)"/>
- <circle cx="113" cy="62" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="62" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="63" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="63" r="1" fill="rgba(104,72,45,0.113725)"/>
- <circle cx="16" cy="63" r="1" fill="rgba(106,75,47,0.592157)"/>
- <circle cx="17" cy="63" r="1" fill="rgba(105,73,46,0.721569)"/>
- <circle cx="18" cy="63" r="1" fill="rgba(102,70,43,0.87451)"/>
- <circle cx="19" cy="63" r="1" fill="rgba(99,67,40,1)"/>
- <circle cx="20" cy="63" r="1" fill="rgba(95,62,37,1)"/>
- <circle cx="21" cy="63" r="1" fill="rgba(92,59,33,1)"/>
- <circle cx="22" cy="63" r="1" fill="rgba(88,56,31,0.756863)"/>
- <circle cx="23" cy="63" r="1" fill="rgba(59,38,20,0.109804)"/>
- <circle cx="24" cy="63" r="1" fill="rgba(110,33,3,0)"/>
- <circle cx="25" cy="63" r="1" fill="rgba(173,56,1,0)"/>
- <circle cx="26" cy="63" r="1" fill="rgba(212,60,0,0.435294)"/>
- <circle cx="27" cy="63" r="1" fill="rgba(246,76,3,1)"/>
- <circle cx="28" cy="63" r="1" fill="rgba(249,122,46,1)"/>
- <circle cx="29" cy="63" r="1" fill="rgba(249,102,13,1)"/>
- <circle cx="30" cy="63" r="1" fill="rgba(251,93,3,1)"/>
- <circle cx="31" cy="63" r="1" fill="rgba(251,92,3,1)"/>
- <circle cx="32" cy="63" r="1" fill="rgba(251,87,0,1)"/>
- <circle cx="33" cy="63" r="1" fill="rgba(251,85,0,1)"/>
- <circle cx="34" cy="63" r="1" fill="rgba(250,84,0,1)"/>
- <circle cx="35" cy="63" r="1" fill="rgba(250,81,0,1)"/>
- <circle cx="36" cy="63" r="1" fill="rgba(249,78,0,1)"/>
- <circle cx="37" cy="63" r="1" fill="rgba(249,76,0,1)"/>
- <circle cx="38" cy="63" r="1" fill="rgba(249,76,0,1)"/>
- <circle cx="39" cy="63" r="1" fill="rgba(249,75,0,1)"/>
- <circle cx="40" cy="63" r="1" fill="rgba(249,74,0,1)"/>
- <circle cx="41" cy="63" r="1" fill="rgba(249,73,0,1)"/>
- <circle cx="42" cy="63" r="1" fill="rgba(248,70,0,1)"/>
- <circle cx="43" cy="63" r="1" fill="rgba(247,70,0,1)"/>
- <circle cx="44" cy="63" r="1" fill="rgba(246,68,0,1)"/>
- <circle cx="45" cy="63" r="1" fill="rgba(246,66,0,1)"/>
- <circle cx="46" cy="63" r="1" fill="rgba(246,63,0,1)"/>
- <circle cx="47" cy="63" r="1" fill="rgba(244,61,0,1)"/>
- <circle cx="48" cy="63" r="1" fill="rgba(242,58,0,1)"/>
- <circle cx="49" cy="63" r="1" fill="rgba(241,55,0,1)"/>
- <circle cx="50" cy="63" r="1" fill="rgba(239,52,0,1)"/>
- <circle cx="51" cy="63" r="1" fill="rgba(238,52,0,1)"/>
- <circle cx="52" cy="63" r="1" fill="rgba(237,50,0,1)"/>
- <circle cx="53" cy="63" r="1" fill="rgba(236,51,0,1)"/>
- <circle cx="54" cy="63" r="1" fill="rgba(235,52,0,1)"/>
- <circle cx="55" cy="63" r="1" fill="rgba(234,54,0,1)"/>
- <circle cx="56" cy="63" r="1" fill="rgba(234,57,0,1)"/>
- <circle cx="57" cy="63" r="1" fill="rgba(233,59,0,1)"/>
- <circle cx="58" cy="63" r="1" fill="rgba(233,61,0,1)"/>
- <circle cx="59" cy="63" r="1" fill="rgba(232,58,0,1)"/>
- <circle cx="60" cy="63" r="1" fill="rgba(230,54,0,1)"/>
- <circle cx="61" cy="63" r="1" fill="rgba(227,48,0,1)"/>
- <circle cx="62" cy="63" r="1" fill="rgba(224,43,0,1)"/>
- <circle cx="63" cy="63" r="1" fill="rgba(222,36,0,1)"/>
- <circle cx="64" cy="63" r="1" fill="rgba(216,26,0,1)"/>
- <circle cx="65" cy="63" r="1" fill="rgba(174,20,2,1)"/>
- <circle cx="66" cy="63" r="1" fill="rgba(162,29,5,1)"/>
- <circle cx="67" cy="63" r="1" fill="rgba(212,25,0,1)"/>
- <circle cx="68" cy="63" r="1" fill="rgba(209,29,0,1)"/>
- <circle cx="69" cy="63" r="1" fill="rgba(212,33,1,1)"/>
- <circle cx="70" cy="63" r="1" fill="rgba(214,37,2,1)"/>
- <circle cx="71" cy="63" r="1" fill="rgba(215,38,3,1)"/>
- <circle cx="72" cy="63" r="1" fill="rgba(214,37,3,1)"/>
- <circle cx="73" cy="63" r="1" fill="rgba(212,33,3,1)"/>
- <circle cx="74" cy="63" r="1" fill="rgba(209,29,3,1)"/>
- <circle cx="75" cy="63" r="1" fill="rgba(206,25,3,1)"/>
- <circle cx="76" cy="63" r="1" fill="rgba(203,22,3,1)"/>
- <circle cx="77" cy="63" r="1" fill="rgba(201,20,3,1)"/>
- <circle cx="78" cy="63" r="1" fill="rgba(200,19,3,1)"/>
- <circle cx="79" cy="63" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="80" cy="63" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="81" cy="63" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="82" cy="63" r="1" fill="rgba(202,27,7,1)"/>
- <circle cx="83" cy="63" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="84" cy="63" r="1" fill="rgba(204,33,9,1)"/>
- <circle cx="85" cy="63" r="1" fill="rgba(205,37,11,1)"/>
- <circle cx="86" cy="63" r="1" fill="rgba(206,40,12,1)"/>
- <circle cx="87" cy="63" r="1" fill="rgba(208,44,14,1)"/>
- <circle cx="88" cy="63" r="1" fill="rgba(210,48,15,1)"/>
- <circle cx="89" cy="63" r="1" fill="rgba(211,53,18,1)"/>
- <circle cx="90" cy="63" r="1" fill="rgba(212,58,20,1)"/>
- <circle cx="91" cy="63" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="92" cy="63" r="1" fill="rgba(217,67,24,1)"/>
- <circle cx="93" cy="63" r="1" fill="rgba(218,72,27,1)"/>
- <circle cx="94" cy="63" r="1" fill="rgba(220,79,30,1)"/>
- <circle cx="95" cy="63" r="1" fill="rgba(222,84,33,1)"/>
- <circle cx="96" cy="63" r="1" fill="rgba(224,90,37,1)"/>
- <circle cx="97" cy="63" r="1" fill="rgba(227,96,41,1)"/>
- <circle cx="98" cy="63" r="1" fill="rgba(229,103,46,1)"/>
- <circle cx="99" cy="63" r="1" fill="rgba(231,109,49,1)"/>
- <circle cx="100" cy="63" r="1" fill="rgba(232,113,52,1)"/>
- <circle cx="101" cy="63" r="1" fill="rgba(233,115,52,1)"/>
- <circle cx="102" cy="63" r="1" fill="rgba(242,118,53,1)"/>
- <circle cx="103" cy="63" r="1" fill="rgba(176,74,27,0.807843)"/>
- <circle cx="104" cy="63" r="1" fill="rgba(47,23,9,0.8)"/>
- <circle cx="105" cy="63" r="1" fill="rgba(71,41,20,1)"/>
- <circle cx="106" cy="63" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="107" cy="63" r="1" fill="rgba(80,47,24,0.745098)"/>
- <circle cx="108" cy="63" r="1" fill="rgba(84,52,28,0.0627451)"/>
- <circle cx="109" cy="63" r="1" fill="rgba(90,58,33,0)"/>
- <circle cx="110" cy="63" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="111" cy="63" r="1" fill="rgba(100,68,42,0)"/>
- <circle cx="112" cy="63" r="1" fill="rgba(104,71,45,0)"/>
- <circle cx="113" cy="63" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="63" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="64" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="64" r="1" fill="rgba(85,53,29,0.027451)"/>
- <circle cx="11" cy="64" r="1" fill="rgba(90,57,33,0.152941)"/>
- <circle cx="12" cy="64" r="1" fill="rgba(94,61,36,0.32549)"/>
- <circle cx="13" cy="64" r="1" fill="rgba(97,65,38,0.384314)"/>
- <circle cx="14" cy="64" r="1" fill="rgba(99,67,41,0.34902)"/>
- <circle cx="15" cy="64" r="1" fill="rgba(102,70,42,0.815686)"/>
- <circle cx="16" cy="64" r="1" fill="rgba(102,71,43,1)"/>
- <circle cx="17" cy="64" r="1" fill="rgba(101,69,42,1)"/>
- <circle cx="18" cy="64" r="1" fill="rgba(99,67,41,1)"/>
- <circle cx="19" cy="64" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="20" cy="64" r="1" fill="rgba(95,63,37,1)"/>
- <circle cx="21" cy="64" r="1" fill="rgba(90,57,32,0.662745)"/>
- <circle cx="22" cy="64" r="1" fill="rgba(59,31,14,0.0509804)"/>
- <circle cx="23" cy="64" r="1" fill="rgba(37,16,5,0.0117647)"/>
- <circle cx="24" cy="64" r="1" fill="rgba(12,10,3,0.121569)"/>
- <circle cx="25" cy="64" r="1" fill="rgba(0,5,3,0.196078)"/>
- <circle cx="26" cy="64" r="1" fill="rgba(150,34,0,0.615686)"/>
- <circle cx="27" cy="64" r="1" fill="rgba(251,88,13,1)"/>
- <circle cx="28" cy="64" r="1" fill="rgba(250,145,79,1)"/>
- <circle cx="29" cy="64" r="1" fill="rgba(250,120,34,1)"/>
- <circle cx="30" cy="64" r="1" fill="rgba(249,96,8,1)"/>
- <circle cx="31" cy="64" r="1" fill="rgba(250,92,5,1)"/>
- <circle cx="32" cy="64" r="1" fill="rgba(249,85,1,1)"/>
- <circle cx="33" cy="64" r="1" fill="rgba(249,81,0,1)"/>
- <circle cx="34" cy="64" r="1" fill="rgba(249,79,0,1)"/>
- <circle cx="35" cy="64" r="1" fill="rgba(249,78,0,1)"/>
- <circle cx="36" cy="64" r="1" fill="rgba(248,75,0,1)"/>
- <circle cx="37" cy="64" r="1" fill="rgba(247,72,0,1)"/>
- <circle cx="38" cy="64" r="1" fill="rgba(247,71,0,1)"/>
- <circle cx="39" cy="64" r="1" fill="rgba(247,71,0,1)"/>
- <circle cx="40" cy="64" r="1" fill="rgba(247,70,0,1)"/>
- <circle cx="41" cy="64" r="1" fill="rgba(247,68,0,1)"/>
- <circle cx="42" cy="64" r="1" fill="rgba(246,67,0,1)"/>
- <circle cx="43" cy="64" r="1" fill="rgba(245,65,0,1)"/>
- <circle cx="44" cy="64" r="1" fill="rgba(244,64,0,1)"/>
- <circle cx="45" cy="64" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="46" cy="64" r="1" fill="rgba(243,59,0,1)"/>
- <circle cx="47" cy="64" r="1" fill="rgba(242,57,0,1)"/>
- <circle cx="48" cy="64" r="1" fill="rgba(240,54,0,1)"/>
- <circle cx="49" cy="64" r="1" fill="rgba(239,51,0,1)"/>
- <circle cx="50" cy="64" r="1" fill="rgba(238,50,0,1)"/>
- <circle cx="51" cy="64" r="1" fill="rgba(237,49,0,1)"/>
- <circle cx="52" cy="64" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="53" cy="64" r="1" fill="rgba(235,49,0,1)"/>
- <circle cx="54" cy="64" r="1" fill="rgba(233,50,0,1)"/>
- <circle cx="55" cy="64" r="1" fill="rgba(233,51,0,1)"/>
- <circle cx="56" cy="64" r="1" fill="rgba(233,55,0,1)"/>
- <circle cx="57" cy="64" r="1" fill="rgba(233,57,0,1)"/>
- <circle cx="58" cy="64" r="1" fill="rgba(231,57,0,1)"/>
- <circle cx="59" cy="64" r="1" fill="rgba(230,55,0,1)"/>
- <circle cx="60" cy="64" r="1" fill="rgba(228,51,0,1)"/>
- <circle cx="61" cy="64" r="1" fill="rgba(226,46,0,1)"/>
- <circle cx="62" cy="64" r="1" fill="rgba(224,41,0,1)"/>
- <circle cx="63" cy="64" r="1" fill="rgba(221,35,0,1)"/>
- <circle cx="64" cy="64" r="1" fill="rgba(215,25,0,1)"/>
- <circle cx="65" cy="64" r="1" fill="rgba(174,21,2,1)"/>
- <circle cx="66" cy="64" r="1" fill="rgba(161,29,5,1)"/>
- <circle cx="67" cy="64" r="1" fill="rgba(210,24,0,1)"/>
- <circle cx="68" cy="64" r="1" fill="rgba(208,29,0,1)"/>
- <circle cx="69" cy="64" r="1" fill="rgba(211,33,1,1)"/>
- <circle cx="70" cy="64" r="1" fill="rgba(214,36,2,1)"/>
- <circle cx="71" cy="64" r="1" fill="rgba(214,38,2,1)"/>
- <circle cx="72" cy="64" r="1" fill="rgba(214,36,3,1)"/>
- <circle cx="73" cy="64" r="1" fill="rgba(210,31,3,1)"/>
- <circle cx="74" cy="64" r="1" fill="rgba(208,27,3,1)"/>
- <circle cx="75" cy="64" r="1" fill="rgba(205,23,3,1)"/>
- <circle cx="76" cy="64" r="1" fill="rgba(203,20,3,1)"/>
- <circle cx="77" cy="64" r="1" fill="rgba(201,20,3,1)"/>
- <circle cx="78" cy="64" r="1" fill="rgba(200,18,4,1)"/>
- <circle cx="79" cy="64" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="80" cy="64" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="81" cy="64" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="82" cy="64" r="1" fill="rgba(203,27,7,1)"/>
- <circle cx="83" cy="64" r="1" fill="rgba(203,31,8,1)"/>
- <circle cx="84" cy="64" r="1" fill="rgba(204,34,10,1)"/>
- <circle cx="85" cy="64" r="1" fill="rgba(205,37,11,1)"/>
- <circle cx="86" cy="64" r="1" fill="rgba(207,41,12,1)"/>
- <circle cx="87" cy="64" r="1" fill="rgba(207,44,14,1)"/>
- <circle cx="88" cy="64" r="1" fill="rgba(210,49,16,1)"/>
- <circle cx="89" cy="64" r="1" fill="rgba(211,54,18,1)"/>
- <circle cx="90" cy="64" r="1" fill="rgba(213,58,20,1)"/>
- <circle cx="91" cy="64" r="1" fill="rgba(214,63,22,1)"/>
- <circle cx="92" cy="64" r="1" fill="rgba(217,68,25,1)"/>
- <circle cx="93" cy="64" r="1" fill="rgba(219,73,28,1)"/>
- <circle cx="94" cy="64" r="1" fill="rgba(221,80,31,1)"/>
- <circle cx="95" cy="64" r="1" fill="rgba(222,85,34,1)"/>
- <circle cx="96" cy="64" r="1" fill="rgba(225,91,37,1)"/>
- <circle cx="97" cy="64" r="1" fill="rgba(227,97,42,1)"/>
- <circle cx="98" cy="64" r="1" fill="rgba(229,104,46,1)"/>
- <circle cx="99" cy="64" r="1" fill="rgba(231,110,49,1)"/>
- <circle cx="100" cy="64" r="1" fill="rgba(233,114,52,1)"/>
- <circle cx="101" cy="64" r="1" fill="rgba(234,116,53,1)"/>
- <circle cx="102" cy="64" r="1" fill="rgba(242,120,54,1)"/>
- <circle cx="103" cy="64" r="1" fill="rgba(178,73,26,0.803922)"/>
- <circle cx="104" cy="64" r="1" fill="rgba(17,3,0,0.458824)"/>
- <circle cx="105" cy="64" r="1" fill="rgba(65,35,16,0.843137)"/>
- <circle cx="106" cy="64" r="1" fill="rgba(78,47,24,1)"/>
- <circle cx="107" cy="64" r="1" fill="rgba(82,49,26,1)"/>
- <circle cx="108" cy="64" r="1" fill="rgba(86,53,29,0.733333)"/>
- <circle cx="109" cy="64" r="1" fill="rgba(90,58,33,0.054902)"/>
- <circle cx="110" cy="64" r="1" fill="rgba(96,63,37,0)"/>
- <circle cx="111" cy="64" r="1" fill="rgba(100,68,42,0)"/>
- <circle cx="112" cy="64" r="1" fill="rgba(104,71,45,0)"/>
- <circle cx="113" cy="64" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="64" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="65" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="65" r="1" fill="rgba(71,40,20,0.0745098)"/>
- <circle cx="8" cy="65" r="1" fill="rgba(76,45,23,0.517647)"/>
- <circle cx="9" cy="65" r="1" fill="rgba(81,49,26,0.615686)"/>
- <circle cx="10" cy="65" r="1" fill="rgba(85,53,29,0.835294)"/>
- <circle cx="11" cy="65" r="1" fill="rgba(88,56,32,0.972549)"/>
- <circle cx="12" cy="65" r="1" fill="rgba(92,59,34,1)"/>
- <circle cx="13" cy="65" r="1" fill="rgba(95,63,37,1)"/>
- <circle cx="14" cy="65" r="1" fill="rgba(98,66,39,1)"/>
- <circle cx="15" cy="65" r="1" fill="rgba(98,66,39,1)"/>
- <circle cx="16" cy="65" r="1" fill="rgba(98,66,40,1)"/>
- <circle cx="17" cy="65" r="1" fill="rgba(99,66,39,1)"/>
- <circle cx="18" cy="65" r="1" fill="rgba(99,66,40,1)"/>
- <circle cx="19" cy="65" r="1" fill="rgba(96,63,37,0.976471)"/>
- <circle cx="20" cy="65" r="1" fill="rgba(78,47,24,0.564706)"/>
- <circle cx="21" cy="65" r="1" fill="rgba(47,24,9,0.0980392)"/>
- <circle cx="22" cy="65" r="1" fill="rgba(29,12,3,0.184314)"/>
- <circle cx="23" cy="65" r="1" fill="rgba(21,7,1,0.321569)"/>
- <circle cx="24" cy="65" r="1" fill="rgba(7,1,0,0.415686)"/>
- <circle cx="25" cy="65" r="1" fill="rgba(0,0,0,0.443137)"/>
- <circle cx="26" cy="65" r="1" fill="rgba(153,30,0,0.752941)"/>
- <circle cx="27" cy="65" r="1" fill="rgba(252,96,21,1)"/>
- <circle cx="28" cy="65" r="1" fill="rgba(250,142,70,1)"/>
- <circle cx="29" cy="65" r="1" fill="rgba(251,126,40,1)"/>
- <circle cx="30" cy="65" r="1" fill="rgba(249,101,14,1)"/>
- <circle cx="31" cy="65" r="1" fill="rgba(249,93,8,1)"/>
- <circle cx="32" cy="65" r="1" fill="rgba(249,81,1,1)"/>
- <circle cx="33" cy="65" r="1" fill="rgba(248,76,0,1)"/>
- <circle cx="34" cy="65" r="1" fill="rgba(248,75,0,1)"/>
- <circle cx="35" cy="65" r="1" fill="rgba(247,72,0,1)"/>
- <circle cx="36" cy="65" r="1" fill="rgba(247,71,0,1)"/>
- <circle cx="37" cy="65" r="1" fill="rgba(246,68,0,1)"/>
- <circle cx="38" cy="65" r="1" fill="rgba(245,66,0,1)"/>
- <circle cx="39" cy="65" r="1" fill="rgba(245,66,0,1)"/>
- <circle cx="40" cy="65" r="1" fill="rgba(245,66,0,1)"/>
- <circle cx="41" cy="65" r="1" fill="rgba(244,64,0,1)"/>
- <circle cx="42" cy="65" r="1" fill="rgba(244,62,0,1)"/>
- <circle cx="43" cy="65" r="1" fill="rgba(243,61,0,1)"/>
- <circle cx="44" cy="65" r="1" fill="rgba(241,60,0,1)"/>
- <circle cx="45" cy="65" r="1" fill="rgba(241,58,0,1)"/>
- <circle cx="46" cy="65" r="1" fill="rgba(241,55,0,1)"/>
- <circle cx="47" cy="65" r="1" fill="rgba(240,53,0,1)"/>
- <circle cx="48" cy="65" r="1" fill="rgba(238,51,0,1)"/>
- <circle cx="49" cy="65" r="1" fill="rgba(237,50,0,1)"/>
- <circle cx="50" cy="65" r="1" fill="rgba(237,49,0,1)"/>
- <circle cx="51" cy="65" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="52" cy="65" r="1" fill="rgba(234,47,0,1)"/>
- <circle cx="53" cy="65" r="1" fill="rgba(233,47,0,1)"/>
- <circle cx="54" cy="65" r="1" fill="rgba(233,47,0,1)"/>
- <circle cx="55" cy="65" r="1" fill="rgba(233,49,0,1)"/>
- <circle cx="56" cy="65" r="1" fill="rgba(231,52,0,1)"/>
- <circle cx="57" cy="65" r="1" fill="rgba(230,53,0,1)"/>
- <circle cx="58" cy="65" r="1" fill="rgba(230,53,0,1)"/>
- <circle cx="59" cy="65" r="1" fill="rgba(228,51,0,1)"/>
- <circle cx="60" cy="65" r="1" fill="rgba(226,47,0,1)"/>
- <circle cx="61" cy="65" r="1" fill="rgba(224,43,0,1)"/>
- <circle cx="62" cy="65" r="1" fill="rgba(222,38,0,1)"/>
- <circle cx="63" cy="65" r="1" fill="rgba(219,33,0,1)"/>
- <circle cx="64" cy="65" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="65" cy="65" r="1" fill="rgba(174,21,2,1)"/>
- <circle cx="66" cy="65" r="1" fill="rgba(162,29,5,1)"/>
- <circle cx="67" cy="65" r="1" fill="rgba(210,24,0,1)"/>
- <circle cx="68" cy="65" r="1" fill="rgba(207,28,0,1)"/>
- <circle cx="69" cy="65" r="1" fill="rgba(210,32,1,1)"/>
- <circle cx="70" cy="65" r="1" fill="rgba(213,35,2,1)"/>
- <circle cx="71" cy="65" r="1" fill="rgba(214,37,2,1)"/>
- <circle cx="72" cy="65" r="1" fill="rgba(213,34,3,1)"/>
- <circle cx="73" cy="65" r="1" fill="rgba(210,30,3,1)"/>
- <circle cx="74" cy="65" r="1" fill="rgba(207,26,3,1)"/>
- <circle cx="75" cy="65" r="1" fill="rgba(205,22,3,1)"/>
- <circle cx="76" cy="65" r="1" fill="rgba(203,20,3,1)"/>
- <circle cx="77" cy="65" r="1" fill="rgba(200,19,3,1)"/>
- <circle cx="78" cy="65" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="79" cy="65" r="1" fill="rgba(200,20,4,1)"/>
- <circle cx="80" cy="65" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="81" cy="65" r="1" fill="rgba(202,25,6,1)"/>
- <circle cx="82" cy="65" r="1" fill="rgba(203,29,7,1)"/>
- <circle cx="83" cy="65" r="1" fill="rgba(204,31,8,1)"/>
- <circle cx="84" cy="65" r="1" fill="rgba(205,35,10,1)"/>
- <circle cx="85" cy="65" r="1" fill="rgba(205,38,11,1)"/>
- <circle cx="86" cy="65" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="87" cy="65" r="1" fill="rgba(208,46,14,1)"/>
- <circle cx="88" cy="65" r="1" fill="rgba(210,50,16,1)"/>
- <circle cx="89" cy="65" r="1" fill="rgba(211,54,18,1)"/>
- <circle cx="90" cy="65" r="1" fill="rgba(213,59,20,1)"/>
- <circle cx="91" cy="65" r="1" fill="rgba(215,64,23,1)"/>
- <circle cx="92" cy="65" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="93" cy="65" r="1" fill="rgba(219,75,28,1)"/>
- <circle cx="94" cy="65" r="1" fill="rgba(221,80,32,1)"/>
- <circle cx="95" cy="65" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="96" cy="65" r="1" fill="rgba(225,92,39,1)"/>
- <circle cx="97" cy="65" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="98" cy="65" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="99" cy="65" r="1" fill="rgba(232,111,50,1)"/>
- <circle cx="100" cy="65" r="1" fill="rgba(234,115,53,1)"/>
- <circle cx="101" cy="65" r="1" fill="rgba(235,117,54,1)"/>
- <circle cx="102" cy="65" r="1" fill="rgba(241,120,53,1)"/>
- <circle cx="103" cy="65" r="1" fill="rgba(193,83,31,0.870588)"/>
- <circle cx="104" cy="65" r="1" fill="rgba(19,0,0,0.447059)"/>
- <circle cx="105" cy="65" r="1" fill="rgba(40,12,3,0.443137)"/>
- <circle cx="106" cy="65" r="1" fill="rgba(78,44,22,0.878431)"/>
- <circle cx="107" cy="65" r="1" fill="rgba(84,52,28,1)"/>
- <circle cx="108" cy="65" r="1" fill="rgba(87,54,30,1)"/>
- <circle cx="109" cy="65" r="1" fill="rgba(91,59,33,0.654902)"/>
- <circle cx="110" cy="65" r="1" fill="rgba(95,63,37,0.0352941)"/>
- <circle cx="111" cy="65" r="1" fill="rgba(100,68,42,0)"/>
- <circle cx="112" cy="65" r="1" fill="rgba(104,71,45,0)"/>
- <circle cx="113" cy="65" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="65" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="66" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="66" r="1" fill="rgba(61,30,13,0.0313725)"/>
- <circle cx="5" cy="66" r="1" fill="rgba(62,30,13,0.168627)"/>
- <circle cx="6" cy="66" r="1" fill="rgba(65,34,16,0.384314)"/>
- <circle cx="7" cy="66" r="1" fill="rgba(70,39,19,0.776471)"/>
- <circle cx="8" cy="66" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="9" cy="66" r="1" fill="rgba(80,47,25,1)"/>
- <circle cx="10" cy="66" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="11" cy="66" r="1" fill="rgba(88,56,31,1)"/>
- <circle cx="12" cy="66" r="1" fill="rgba(90,57,33,0.94902)"/>
- <circle cx="13" cy="66" r="1" fill="rgba(90,57,32,0.890196)"/>
- <circle cx="14" cy="66" r="1" fill="rgba(93,60,35,0.960784)"/>
- <circle cx="15" cy="66" r="1" fill="rgba(97,64,38,0.996078)"/>
- <circle cx="16" cy="66" r="1" fill="rgba(96,63,37,0.980392)"/>
- <circle cx="17" cy="66" r="1" fill="rgba(92,59,33,0.866667)"/>
- <circle cx="18" cy="66" r="1" fill="rgba(75,44,22,0.643137)"/>
- <circle cx="19" cy="66" r="1" fill="rgba(53,27,11,0.427451)"/>
- <circle cx="20" cy="66" r="1" fill="rgba(22,8,2,0.290196)"/>
- <circle cx="21" cy="66" r="1" fill="rgba(7,1,0,0.396078)"/>
- <circle cx="22" cy="66" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="23" cy="66" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="24" cy="66" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="25" cy="66" r="1" fill="rgba(0,0,0,0.368627)"/>
- <circle cx="26" cy="66" r="1" fill="rgba(163,37,0,0.690196)"/>
- <circle cx="27" cy="66" r="1" fill="rgba(250,97,27,1)"/>
- <circle cx="28" cy="66" r="1" fill="rgba(249,139,67,1)"/>
- <circle cx="29" cy="66" r="1" fill="rgba(250,126,42,1)"/>
- <circle cx="30" cy="66" r="1" fill="rgba(249,102,17,1)"/>
- <circle cx="31" cy="66" r="1" fill="rgba(248,91,9,1)"/>
- <circle cx="32" cy="66" r="1" fill="rgba(247,79,3,1)"/>
- <circle cx="33" cy="66" r="1" fill="rgba(246,72,0,1)"/>
- <circle cx="34" cy="66" r="1" fill="rgba(246,71,0,1)"/>
- <circle cx="35" cy="66" r="1" fill="rgba(245,67,0,1)"/>
- <circle cx="36" cy="66" r="1" fill="rgba(244,67,0,1)"/>
- <circle cx="37" cy="66" r="1" fill="rgba(244,64,0,1)"/>
- <circle cx="38" cy="66" r="1" fill="rgba(243,62,0,1)"/>
- <circle cx="39" cy="66" r="1" fill="rgba(243,62,0,1)"/>
- <circle cx="40" cy="66" r="1" fill="rgba(242,61,0,1)"/>
- <circle cx="41" cy="66" r="1" fill="rgba(242,59,0,1)"/>
- <circle cx="42" cy="66" r="1" fill="rgba(241,58,0,1)"/>
- <circle cx="43" cy="66" r="1" fill="rgba(241,57,0,1)"/>
- <circle cx="44" cy="66" r="1" fill="rgba(239,55,0,1)"/>
- <circle cx="45" cy="66" r="1" fill="rgba(239,54,0,1)"/>
- <circle cx="46" cy="66" r="1" fill="rgba(239,51,0,1)"/>
- <circle cx="47" cy="66" r="1" fill="rgba(238,50,0,1)"/>
- <circle cx="48" cy="66" r="1" fill="rgba(237,49,0,1)"/>
- <circle cx="49" cy="66" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="50" cy="66" r="1" fill="rgba(235,46,0,1)"/>
- <circle cx="51" cy="66" r="1" fill="rgba(234,46,0,1)"/>
- <circle cx="52" cy="66" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="53" cy="66" r="1" fill="rgba(232,45,0,1)"/>
- <circle cx="54" cy="66" r="1" fill="rgba(231,45,0,1)"/>
- <circle cx="55" cy="66" r="1" fill="rgba(230,47,0,1)"/>
- <circle cx="56" cy="66" r="1" fill="rgba(230,48,0,1)"/>
- <circle cx="57" cy="66" r="1" fill="rgba(229,49,0,1)"/>
- <circle cx="58" cy="66" r="1" fill="rgba(227,48,0,1)"/>
- <circle cx="59" cy="66" r="1" fill="rgba(226,46,0,1)"/>
- <circle cx="60" cy="66" r="1" fill="rgba(224,43,0,1)"/>
- <circle cx="61" cy="66" r="1" fill="rgba(223,40,0,1)"/>
- <circle cx="62" cy="66" r="1" fill="rgba(221,35,0,1)"/>
- <circle cx="63" cy="66" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="64" cy="66" r="1" fill="rgba(213,23,0,1)"/>
- <circle cx="65" cy="66" r="1" fill="rgba(174,20,2,1)"/>
- <circle cx="66" cy="66" r="1" fill="rgba(161,30,6,1)"/>
- <circle cx="67" cy="66" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="68" cy="66" r="1" fill="rgba(207,27,0,1)"/>
- <circle cx="69" cy="66" r="1" fill="rgba(210,32,1,1)"/>
- <circle cx="70" cy="66" r="1" fill="rgba(213,34,2,1)"/>
- <circle cx="71" cy="66" r="1" fill="rgba(214,35,3,1)"/>
- <circle cx="72" cy="66" r="1" fill="rgba(212,32,3,1)"/>
- <circle cx="73" cy="66" r="1" fill="rgba(210,29,3,1)"/>
- <circle cx="74" cy="66" r="1" fill="rgba(207,25,3,1)"/>
- <circle cx="75" cy="66" r="1" fill="rgba(203,22,3,1)"/>
- <circle cx="76" cy="66" r="1" fill="rgba(201,19,3,1)"/>
- <circle cx="77" cy="66" r="1" fill="rgba(200,18,3,1)"/>
- <circle cx="78" cy="66" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="79" cy="66" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="80" cy="66" r="1" fill="rgba(201,23,6,1)"/>
- <circle cx="81" cy="66" r="1" fill="rgba(202,26,6,1)"/>
- <circle cx="82" cy="66" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="83" cy="66" r="1" fill="rgba(204,32,9,1)"/>
- <circle cx="84" cy="66" r="1" fill="rgba(205,35,10,1)"/>
- <circle cx="85" cy="66" r="1" fill="rgba(206,39,11,1)"/>
- <circle cx="86" cy="66" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="87" cy="66" r="1" fill="rgba(208,46,15,1)"/>
- <circle cx="88" cy="66" r="1" fill="rgba(210,50,16,1)"/>
- <circle cx="89" cy="66" r="1" fill="rgba(211,55,18,1)"/>
- <circle cx="90" cy="66" r="1" fill="rgba(213,60,21,1)"/>
- <circle cx="91" cy="66" r="1" fill="rgba(215,65,24,1)"/>
- <circle cx="92" cy="66" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="93" cy="66" r="1" fill="rgba(219,76,30,1)"/>
- <circle cx="94" cy="66" r="1" fill="rgba(222,81,32,1)"/>
- <circle cx="95" cy="66" r="1" fill="rgba(224,87,36,1)"/>
- <circle cx="96" cy="66" r="1" fill="rgba(225,94,40,1)"/>
- <circle cx="97" cy="66" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="98" cy="66" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="99" cy="66" r="1" fill="rgba(232,112,51,1)"/>
- <circle cx="100" cy="66" r="1" fill="rgba(234,116,54,1)"/>
- <circle cx="101" cy="66" r="1" fill="rgba(235,119,54,1)"/>
- <circle cx="102" cy="66" r="1" fill="rgba(241,121,55,1)"/>
- <circle cx="103" cy="66" r="1" fill="rgba(200,89,34,0.894118)"/>
- <circle cx="104" cy="66" r="1" fill="rgba(28,3,0,0.529412)"/>
- <circle cx="105" cy="66" r="1" fill="rgba(12,0,0,0.384314)"/>
- <circle cx="106" cy="66" r="1" fill="rgba(42,16,5,0.435294)"/>
- <circle cx="107" cy="66" r="1" fill="rgba(83,51,28,0.921569)"/>
- <circle cx="108" cy="66" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="109" cy="66" r="1" fill="rgba(93,60,35,1)"/>
- <circle cx="110" cy="66" r="1" fill="rgba(97,64,37,0.72549)"/>
- <circle cx="111" cy="66" r="1" fill="rgba(100,68,42,0.0666667)"/>
- <circle cx="112" cy="66" r="1" fill="rgba(104,71,45,0)"/>
- <circle cx="113" cy="66" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="66" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="67" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="67" r="1" fill="rgba(57,27,11,0.192157)"/>
- <circle cx="2" cy="67" r="1" fill="rgba(53,25,10,0.462745)"/>
- <circle cx="3" cy="67" r="1" fill="rgba(63,31,14,0.658824)"/>
- <circle cx="4" cy="67" r="1" fill="rgba(63,32,14,0.886275)"/>
- <circle cx="5" cy="67" r="1" fill="rgba(63,31,14,1)"/>
- <circle cx="6" cy="67" r="1" fill="rgba(64,34,16,1)"/>
- <circle cx="7" cy="67" r="1" fill="rgba(69,38,18,1)"/>
- <circle cx="8" cy="67" r="1" fill="rgba(74,41,21,1)"/>
- <circle cx="9" cy="67" r="1" fill="rgba(67,37,17,0.870588)"/>
- <circle cx="10" cy="67" r="1" fill="rgba(51,25,11,0.654902)"/>
- <circle cx="11" cy="67" r="1" fill="rgba(55,29,12,0.482353)"/>
- <circle cx="12" cy="67" r="1" fill="rgba(54,28,12,0.290196)"/>
- <circle cx="13" cy="67" r="1" fill="rgba(34,14,5,0.305882)"/>
- <circle cx="14" cy="67" r="1" fill="rgba(39,17,6,0.466667)"/>
- <circle cx="15" cy="67" r="1" fill="rgba(53,28,11,0.576471)"/>
- <circle cx="16" cy="67" r="1" fill="rgba(49,23,9,0.517647)"/>
- <circle cx="17" cy="67" r="1" fill="rgba(22,8,2,0.407843)"/>
- <circle cx="18" cy="67" r="1" fill="rgba(7,1,0,0.376471)"/>
- <circle cx="19" cy="67" r="1" fill="rgba(0,0,0,0.431373)"/>
- <circle cx="20" cy="67" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="21" cy="67" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="22" cy="67" r="1" fill="rgba(10,1,0,0.439216)"/>
- <circle cx="23" cy="67" r="1" fill="rgba(19,6,1,0.356863)"/>
- <circle cx="24" cy="67" r="1" fill="rgba(7,5,1,0.247059)"/>
- <circle cx="25" cy="67" r="1" fill="rgba(87,33,8,0.0823529)"/>
- <circle cx="26" cy="67" r="1" fill="rgba(212,64,5,0.556863)"/>
- <circle cx="27" cy="67" r="1" fill="rgba(244,92,26,1)"/>
- <circle cx="28" cy="67" r="1" fill="rgba(247,134,68,1)"/>
- <circle cx="29" cy="67" r="1" fill="rgba(248,120,42,1)"/>
- <circle cx="30" cy="67" r="1" fill="rgba(247,96,16,1)"/>
- <circle cx="31" cy="67" r="1" fill="rgba(247,86,8,1)"/>
- <circle cx="32" cy="67" r="1" fill="rgba(245,77,3,1)"/>
- <circle cx="33" cy="67" r="1" fill="rgba(245,68,0,1)"/>
- <circle cx="34" cy="67" r="1" fill="rgba(244,67,0,1)"/>
- <circle cx="35" cy="67" r="1" fill="rgba(242,63,0,1)"/>
- <circle cx="36" cy="67" r="1" fill="rgba(242,62,0,1)"/>
- <circle cx="37" cy="67" r="1" fill="rgba(241,60,0,1)"/>
- <circle cx="38" cy="67" r="1" fill="rgba(241,58,0,1)"/>
- <circle cx="39" cy="67" r="1" fill="rgba(240,57,0,1)"/>
- <circle cx="40" cy="67" r="1" fill="rgba(240,56,0,1)"/>
- <circle cx="41" cy="67" r="1" fill="rgba(240,55,0,1)"/>
- <circle cx="42" cy="67" r="1" fill="rgba(239,53,0,1)"/>
- <circle cx="43" cy="67" r="1" fill="rgba(238,52,0,1)"/>
- <circle cx="44" cy="67" r="1" fill="rgba(238,51,0,1)"/>
- <circle cx="45" cy="67" r="1" fill="rgba(237,50,0,1)"/>
- <circle cx="46" cy="67" r="1" fill="rgba(237,49,0,1)"/>
- <circle cx="47" cy="67" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="48" cy="67" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="49" cy="67" r="1" fill="rgba(234,47,0,1)"/>
- <circle cx="50" cy="67" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="51" cy="67" r="1" fill="rgba(233,43,0,1)"/>
- <circle cx="52" cy="67" r="1" fill="rgba(230,43,0,1)"/>
- <circle cx="53" cy="67" r="1" fill="rgba(230,42,0,1)"/>
- <circle cx="54" cy="67" r="1" fill="rgba(230,43,0,1)"/>
- <circle cx="55" cy="67" r="1" fill="rgba(229,44,0,1)"/>
- <circle cx="56" cy="67" r="1" fill="rgba(227,44,0,1)"/>
- <circle cx="57" cy="67" r="1" fill="rgba(227,45,0,1)"/>
- <circle cx="58" cy="67" r="1" fill="rgba(225,43,0,1)"/>
- <circle cx="59" cy="67" r="1" fill="rgba(224,41,0,1)"/>
- <circle cx="60" cy="67" r="1" fill="rgba(223,39,0,1)"/>
- <circle cx="61" cy="67" r="1" fill="rgba(221,36,0,1)"/>
- <circle cx="62" cy="67" r="1" fill="rgba(219,32,0,1)"/>
- <circle cx="63" cy="67" r="1" fill="rgba(216,29,0,1)"/>
- <circle cx="64" cy="67" r="1" fill="rgba(212,22,0,1)"/>
- <circle cx="65" cy="67" r="1" fill="rgba(174,21,2,1)"/>
- <circle cx="66" cy="67" r="1" fill="rgba(159,29,6,1)"/>
- <circle cx="67" cy="67" r="1" fill="rgba(208,22,0,1)"/>
- <circle cx="68" cy="67" r="1" fill="rgba(205,26,0,1)"/>
- <circle cx="69" cy="67" r="1" fill="rgba(209,31,1,1)"/>
- <circle cx="70" cy="67" r="1" fill="rgba(212,33,3,1)"/>
- <circle cx="71" cy="67" r="1" fill="rgba(212,34,3,1)"/>
- <circle cx="72" cy="67" r="1" fill="rgba(211,31,3,1)"/>
- <circle cx="73" cy="67" r="1" fill="rgba(209,27,3,1)"/>
- <circle cx="74" cy="67" r="1" fill="rgba(205,24,3,1)"/>
- <circle cx="75" cy="67" r="1" fill="rgba(203,21,3,1)"/>
- <circle cx="76" cy="67" r="1" fill="rgba(200,18,3,1)"/>
- <circle cx="77" cy="67" r="1" fill="rgba(199,17,4,1)"/>
- <circle cx="78" cy="67" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="79" cy="67" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="80" cy="67" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="81" cy="67" r="1" fill="rgba(202,27,6,1)"/>
- <circle cx="82" cy="67" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="83" cy="67" r="1" fill="rgba(204,33,9,1)"/>
- <circle cx="84" cy="67" r="1" fill="rgba(206,35,10,1)"/>
- <circle cx="85" cy="67" r="1" fill="rgba(207,39,11,1)"/>
- <circle cx="86" cy="67" r="1" fill="rgba(207,44,14,1)"/>
- <circle cx="87" cy="67" r="1" fill="rgba(208,47,16,1)"/>
- <circle cx="88" cy="67" r="1" fill="rgba(210,51,17,1)"/>
- <circle cx="89" cy="67" r="1" fill="rgba(213,57,20,1)"/>
- <circle cx="90" cy="67" r="1" fill="rgba(213,61,22,1)"/>
- <circle cx="91" cy="67" r="1" fill="rgba(215,66,24,1)"/>
- <circle cx="92" cy="67" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="93" cy="67" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="94" cy="67" r="1" fill="rgba(222,83,33,1)"/>
- <circle cx="95" cy="67" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="96" cy="67" r="1" fill="rgba(226,95,41,1)"/>
- <circle cx="97" cy="67" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="98" cy="67" r="1" fill="rgba(231,108,48,1)"/>
- <circle cx="99" cy="67" r="1" fill="rgba(233,113,52,1)"/>
- <circle cx="100" cy="67" r="1" fill="rgba(234,118,55,1)"/>
- <circle cx="101" cy="67" r="1" fill="rgba(236,119,55,1)"/>
- <circle cx="102" cy="67" r="1" fill="rgba(243,123,56,1)"/>
- <circle cx="103" cy="67" r="1" fill="rgba(196,87,33,0.890196)"/>
- <circle cx="104" cy="67" r="1" fill="rgba(31,2,0,0.552941)"/>
- <circle cx="105" cy="67" r="1" fill="rgba(10,0,0,0.45098)"/>
- <circle cx="106" cy="67" r="1" fill="rgba(0,0,0,0.368627)"/>
- <circle cx="107" cy="67" r="1" fill="rgba(45,21,8,0.478431)"/>
- <circle cx="108" cy="67" r="1" fill="rgba(90,57,33,0.960784)"/>
- <circle cx="109" cy="67" r="1" fill="rgba(94,61,36,1)"/>
- <circle cx="110" cy="67" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="111" cy="67" r="1" fill="rgba(100,68,42,0.788235)"/>
- <circle cx="112" cy="67" r="1" fill="rgba(104,71,45,0.172549)"/>
- <circle cx="113" cy="67" r="1" fill="rgba(106,74,47,0)"/>
- <circle cx="114" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="67" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="68" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="68" r="1" fill="rgba(61,30,13,0.552941)"/>
- <circle cx="2" cy="68" r="1" fill="rgba(58,28,13,0.764706)"/>
- <circle cx="3" cy="68" r="1" fill="rgba(49,22,8,0.690196)"/>
- <circle cx="4" cy="68" r="1" fill="rgba(39,16,5,0.647059)"/>
- <circle cx="5" cy="68" r="1" fill="rgba(36,14,4,0.647059)"/>
- <circle cx="6" cy="68" r="1" fill="rgba(34,13,4,0.678431)"/>
- <circle cx="7" cy="68" r="1" fill="rgba(39,16,5,0.658824)"/>
- <circle cx="8" cy="68" r="1" fill="rgba(39,16,6,0.603922)"/>
- <circle cx="9" cy="68" r="1" fill="rgba(17,4,0,0.454902)"/>
- <circle cx="10" cy="68" r="1" fill="rgba(0,0,0,0.4)"/>
- <circle cx="11" cy="68" r="1" fill="rgba(0,0,0,0.427451)"/>
- <circle cx="12" cy="68" r="1" fill="rgba(0,0,0,0.443137)"/>
- <circle cx="13" cy="68" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="14" cy="68" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="15" cy="68" r="1" fill="rgba(0,0,0,0.447059)"/>
- <circle cx="16" cy="68" r="1" fill="rgba(0,0,0,0.45098)"/>
- <circle cx="17" cy="68" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="18" cy="68" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="19" cy="68" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="20" cy="68" r="1" fill="rgba(15,4,0,0.4)"/>
- <circle cx="21" cy="68" r="1" fill="rgba(26,9,3,0.301961)"/>
- <circle cx="22" cy="68" r="1" fill="rgba(34,15,5,0.184314)"/>
- <circle cx="23" cy="68" r="1" fill="rgba(28,13,4,0.0745098)"/>
- <circle cx="24" cy="68" r="1" fill="rgba(49,22,8,0.00784314)"/>
- <circle cx="25" cy="68" r="1" fill="rgba(224,135,76,0)"/>
- <circle cx="26" cy="68" r="1" fill="rgba(238,86,17,0.490196)"/>
- <circle cx="27" cy="68" r="1" fill="rgba(237,84,22,1)"/>
- <circle cx="28" cy="68" r="1" fill="rgba(244,123,57,1)"/>
- <circle cx="29" cy="68" r="1" fill="rgba(244,109,37,1)"/>
- <circle cx="30" cy="68" r="1" fill="rgba(244,87,14,1)"/>
- <circle cx="31" cy="68" r="1" fill="rgba(244,78,6,1)"/>
- <circle cx="32" cy="68" r="1" fill="rgba(244,72,2,1)"/>
- <circle cx="33" cy="68" r="1" fill="rgba(243,64,0,1)"/>
- <circle cx="34" cy="68" r="1" fill="rgba(241,61,0,1)"/>
- <circle cx="35" cy="68" r="1" fill="rgba(240,59,0,1)"/>
- <circle cx="36" cy="68" r="1" fill="rgba(239,57,0,1)"/>
- <circle cx="37" cy="68" r="1" fill="rgba(239,56,0,1)"/>
- <circle cx="38" cy="68" r="1" fill="rgba(238,54,0,1)"/>
- <circle cx="39" cy="68" r="1" fill="rgba(238,52,0,1)"/>
- <circle cx="40" cy="68" r="1" fill="rgba(238,51,0,1)"/>
- <circle cx="41" cy="68" r="1" fill="rgba(237,50,0,1)"/>
- <circle cx="42" cy="68" r="1" fill="rgba(237,49,0,1)"/>
- <circle cx="43" cy="68" r="1" fill="rgba(236,49,0,1)"/>
- <circle cx="44" cy="68" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="45" cy="68" r="1" fill="rgba(236,48,0,1)"/>
- <circle cx="46" cy="68" r="1" fill="rgba(235,48,0,1)"/>
- <circle cx="47" cy="68" r="1" fill="rgba(234,47,0,1)"/>
- <circle cx="48" cy="68" r="1" fill="rgba(233,46,0,1)"/>
- <circle cx="49" cy="68" r="1" fill="rgba(232,45,0,1)"/>
- <circle cx="50" cy="68" r="1" fill="rgba(232,43,0,1)"/>
- <circle cx="51" cy="68" r="1" fill="rgba(230,41,0,1)"/>
- <circle cx="52" cy="68" r="1" fill="rgba(230,41,0,1)"/>
- <circle cx="53" cy="68" r="1" fill="rgba(228,41,0,1)"/>
- <circle cx="54" cy="68" r="1" fill="rgba(227,41,0,1)"/>
- <circle cx="55" cy="68" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="56" cy="68" r="1" fill="rgba(226,40,0,1)"/>
- <circle cx="57" cy="68" r="1" fill="rgba(224,40,0,1)"/>
- <circle cx="58" cy="68" r="1" fill="rgba(224,39,0,1)"/>
- <circle cx="59" cy="68" r="1" fill="rgba(222,37,0,1)"/>
- <circle cx="60" cy="68" r="1" fill="rgba(221,35,0,1)"/>
- <circle cx="61" cy="68" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="62" cy="68" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="63" cy="68" r="1" fill="rgba(214,27,0,1)"/>
- <circle cx="64" cy="68" r="1" fill="rgba(210,21,0,1)"/>
- <circle cx="65" cy="68" r="1" fill="rgba(173,20,2,1)"/>
- <circle cx="66" cy="68" r="1" fill="rgba(159,29,5,1)"/>
- <circle cx="67" cy="68" r="1" fill="rgba(207,21,0,1)"/>
- <circle cx="68" cy="68" r="1" fill="rgba(204,25,0,1)"/>
- <circle cx="69" cy="68" r="1" fill="rgba(208,30,2,1)"/>
- <circle cx="70" cy="68" r="1" fill="rgba(210,32,3,1)"/>
- <circle cx="71" cy="68" r="1" fill="rgba(211,33,3,1)"/>
- <circle cx="72" cy="68" r="1" fill="rgba(210,30,3,1)"/>
- <circle cx="73" cy="68" r="1" fill="rgba(207,26,4,1)"/>
- <circle cx="74" cy="68" r="1" fill="rgba(204,23,3,1)"/>
- <circle cx="75" cy="68" r="1" fill="rgba(202,19,3,1)"/>
- <circle cx="76" cy="68" r="1" fill="rgba(200,18,3,1)"/>
- <circle cx="77" cy="68" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="78" cy="68" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="79" cy="68" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="80" cy="68" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="81" cy="68" r="1" fill="rgba(203,27,7,1)"/>
- <circle cx="82" cy="68" r="1" fill="rgba(203,31,8,1)"/>
- <circle cx="83" cy="68" r="1" fill="rgba(204,33,10,1)"/>
- <circle cx="84" cy="68" r="1" fill="rgba(206,36,10,1)"/>
- <circle cx="85" cy="68" r="1" fill="rgba(207,41,12,1)"/>
- <circle cx="86" cy="68" r="1" fill="rgba(207,45,14,1)"/>
- <circle cx="87" cy="68" r="1" fill="rgba(209,48,16,1)"/>
- <circle cx="88" cy="68" r="1" fill="rgba(211,52,18,1)"/>
- <circle cx="89" cy="68" r="1" fill="rgba(213,57,20,1)"/>
- <circle cx="90" cy="68" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="91" cy="68" r="1" fill="rgba(216,67,25,1)"/>
- <circle cx="92" cy="68" r="1" fill="rgba(218,73,28,1)"/>
- <circle cx="93" cy="68" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="94" cy="68" r="1" fill="rgba(222,84,34,1)"/>
- <circle cx="95" cy="68" r="1" fill="rgba(224,91,37,1)"/>
- <circle cx="96" cy="68" r="1" fill="rgba(227,96,42,1)"/>
- <circle cx="97" cy="68" r="1" fill="rgba(229,103,45,1)"/>
- <circle cx="98" cy="68" r="1" fill="rgba(231,109,48,1)"/>
- <circle cx="99" cy="68" r="1" fill="rgba(233,115,53,1)"/>
- <circle cx="100" cy="68" r="1" fill="rgba(235,119,55,1)"/>
- <circle cx="101" cy="68" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="102" cy="68" r="1" fill="rgba(245,126,57,1)"/>
- <circle cx="103" cy="68" r="1" fill="rgba(179,77,29,0.866667)"/>
- <circle cx="104" cy="68" r="1" fill="rgba(24,0,0,0.564706)"/>
- <circle cx="105" cy="68" r="1" fill="rgba(15,0,0,0.47451)"/>
- <circle cx="106" cy="68" r="1" fill="rgba(0,0,0,0.45098)"/>
- <circle cx="107" cy="68" r="1" fill="rgba(0,0,0,0.364706)"/>
- <circle cx="108" cy="68" r="1" fill="rgba(54,28,12,0.54902)"/>
- <circle cx="109" cy="68" r="1" fill="rgba(94,61,35,0.984314)"/>
- <circle cx="110" cy="68" r="1" fill="rgba(96,64,37,1)"/>
- <circle cx="111" cy="68" r="1" fill="rgba(100,68,41,1)"/>
- <circle cx="112" cy="68" r="1" fill="rgba(103,71,44,0.929412)"/>
- <circle cx="113" cy="68" r="1" fill="rgba(106,74,47,0.588235)"/>
- <circle cx="114" cy="68" r="1" fill="rgba(107,75,48,0.317647)"/>
- <circle cx="115" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="68" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="69" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="69" r="1" fill="rgba(61,30,13,0.0156863)"/>
- <circle cx="2" cy="69" r="1" fill="rgba(46,20,8,0.00392157)"/>
- <circle cx="3" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="69" r="1" fill="rgba(15,3,0,0.054902)"/>
- <circle cx="6" cy="69" r="1" fill="rgba(19,6,1,0.12549)"/>
- <circle cx="7" cy="69" r="1" fill="rgba(24,8,2,0.0980392)"/>
- <circle cx="8" cy="69" r="1" fill="rgba(17,5,1,0.0666667)"/>
- <circle cx="9" cy="69" r="1" fill="rgba(34,15,5,0.117647)"/>
- <circle cx="10" cy="69" r="1" fill="rgba(29,12,3,0.129412)"/>
- <circle cx="11" cy="69" r="1" fill="rgba(15,4,0,0.196078)"/>
- <circle cx="12" cy="69" r="1" fill="rgba(17,5,1,0.345098)"/>
- <circle cx="13" cy="69" r="1" fill="rgba(15,4,0,0.423529)"/>
- <circle cx="14" cy="69" r="1" fill="rgba(10,1,0,0.427451)"/>
- <circle cx="15" cy="69" r="1" fill="rgba(10,2,0,0.423529)"/>
- <circle cx="16" cy="69" r="1" fill="rgba(10,2,0,0.419608)"/>
- <circle cx="17" cy="69" r="1" fill="rgba(15,4,0,0.4)"/>
- <circle cx="18" cy="69" r="1" fill="rgba(21,7,1,0.345098)"/>
- <circle cx="19" cy="69" r="1" fill="rgba(33,14,4,0.235294)"/>
- <circle cx="20" cy="69" r="1" fill="rgba(43,21,8,0.113725)"/>
- <circle cx="21" cy="69" r="1" fill="rgba(46,22,9,0.0313725)"/>
- <circle cx="22" cy="69" r="1" fill="rgba(42,20,7,0)"/>
- <circle cx="23" cy="69" r="1" fill="rgba(28,13,4,0)"/>
- <circle cx="24" cy="69" r="1" fill="rgba(196,131,84,0)"/>
- <circle cx="25" cy="69" r="1" fill="rgba(255,178,118,0)"/>
- <circle cx="26" cy="69" r="1" fill="rgba(236,88,23,0.45098)"/>
- <circle cx="27" cy="69" r="1" fill="rgba(233,75,17,1)"/>
- <circle cx="28" cy="69" r="1" fill="rgba(241,112,48,1)"/>
- <circle cx="29" cy="69" r="1" fill="rgba(241,102,33,1)"/>
- <circle cx="30" cy="69" r="1" fill="rgba(241,81,13,1)"/>
- <circle cx="31" cy="69" r="1" fill="rgba(241,70,4,1)"/>
- <circle cx="32" cy="69" r="1" fill="rgba(241,67,1,1)"/>
- <circle cx="33" cy="69" r="1" fill="rgba(241,60,0,1)"/>
- <circle cx="34" cy="69" r="1" fill="rgba(239,57,0,1)"/>
- <circle cx="35" cy="69" r="1" fill="rgba(237,54,0,1)"/>
- <circle cx="36" cy="69" r="1" fill="rgba(236,52,0,1)"/>
- <circle cx="37" cy="69" r="1" fill="rgba(236,50,0,1)"/>
- <circle cx="38" cy="69" r="1" fill="rgba(236,49,0,1)"/>
- <circle cx="39" cy="69" r="1" fill="rgba(235,48,0,1)"/>
- <circle cx="40" cy="69" r="1" fill="rgba(235,47,0,1)"/>
- <circle cx="41" cy="69" r="1" fill="rgba(235,46,0,1)"/>
- <circle cx="42" cy="69" r="1" fill="rgba(235,46,0,1)"/>
- <circle cx="43" cy="69" r="1" fill="rgba(234,46,0,1)"/>
- <circle cx="44" cy="69" r="1" fill="rgba(233,47,0,1)"/>
- <circle cx="45" cy="69" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="46" cy="69" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="47" cy="69" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="48" cy="69" r="1" fill="rgba(231,44,0,1)"/>
- <circle cx="49" cy="69" r="1" fill="rgba(231,42,0,1)"/>
- <circle cx="50" cy="69" r="1" fill="rgba(230,41,0,1)"/>
- <circle cx="51" cy="69" r="1" fill="rgba(228,40,0,1)"/>
- <circle cx="52" cy="69" r="1" fill="rgba(228,39,0,1)"/>
- <circle cx="53" cy="69" r="1" fill="rgba(227,39,0,1)"/>
- <circle cx="54" cy="69" r="1" fill="rgba(225,38,0,1)"/>
- <circle cx="55" cy="69" r="1" fill="rgba(224,37,0,1)"/>
- <circle cx="56" cy="69" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="57" cy="69" r="1" fill="rgba(223,36,0,1)"/>
- <circle cx="58" cy="69" r="1" fill="rgba(222,35,0,1)"/>
- <circle cx="59" cy="69" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="60" cy="69" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="61" cy="69" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="62" cy="69" r="1" fill="rgba(215,28,0,1)"/>
- <circle cx="63" cy="69" r="1" fill="rgba(211,26,0,1)"/>
- <circle cx="64" cy="69" r="1" fill="rgba(209,20,0,1)"/>
- <circle cx="65" cy="69" r="1" fill="rgba(173,20,2,1)"/>
- <circle cx="66" cy="69" r="1" fill="rgba(158,28,6,1)"/>
- <circle cx="67" cy="69" r="1" fill="rgba(205,20,0,1)"/>
- <circle cx="68" cy="69" r="1" fill="rgba(203,24,0,1)"/>
- <circle cx="69" cy="69" r="1" fill="rgba(207,29,2,1)"/>
- <circle cx="70" cy="69" r="1" fill="rgba(210,31,3,1)"/>
- <circle cx="71" cy="69" r="1" fill="rgba(211,31,3,1)"/>
- <circle cx="72" cy="69" r="1" fill="rgba(210,29,4,1)"/>
- <circle cx="73" cy="69" r="1" fill="rgba(207,26,4,1)"/>
- <circle cx="74" cy="69" r="1" fill="rgba(203,22,4,1)"/>
- <circle cx="75" cy="69" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="76" cy="69" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="77" cy="69" r="1" fill="rgba(199,19,4,1)"/>
- <circle cx="78" cy="69" r="1" fill="rgba(200,21,4,1)"/>
- <circle cx="79" cy="69" r="1" fill="rgba(201,23,5,1)"/>
- <circle cx="80" cy="69" r="1" fill="rgba(202,25,6,1)"/>
- <circle cx="81" cy="69" r="1" fill="rgba(203,29,7,1)"/>
- <circle cx="82" cy="69" r="1" fill="rgba(203,31,8,1)"/>
- <circle cx="83" cy="69" r="1" fill="rgba(205,35,10,1)"/>
- <circle cx="84" cy="69" r="1" fill="rgba(206,38,11,1)"/>
- <circle cx="85" cy="69" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="86" cy="69" r="1" fill="rgba(208,46,14,1)"/>
- <circle cx="87" cy="69" r="1" fill="rgba(210,49,16,1)"/>
- <circle cx="88" cy="69" r="1" fill="rgba(211,53,18,1)"/>
- <circle cx="89" cy="69" r="1" fill="rgba(214,59,20,1)"/>
- <circle cx="90" cy="69" r="1" fill="rgba(214,64,23,1)"/>
- <circle cx="91" cy="69" r="1" fill="rgba(216,69,26,1)"/>
- <circle cx="92" cy="69" r="1" fill="rgba(219,74,28,1)"/>
- <circle cx="93" cy="69" r="1" fill="rgba(221,80,32,1)"/>
- <circle cx="94" cy="69" r="1" fill="rgba(223,85,34,1)"/>
- <circle cx="95" cy="69" r="1" fill="rgba(225,92,38,1)"/>
- <circle cx="96" cy="69" r="1" fill="rgba(227,97,42,1)"/>
- <circle cx="97" cy="69" r="1" fill="rgba(229,104,47,1)"/>
- <circle cx="98" cy="69" r="1" fill="rgba(232,111,50,1)"/>
- <circle cx="99" cy="69" r="1" fill="rgba(234,116,54,1)"/>
- <circle cx="100" cy="69" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="101" cy="69" r="1" fill="rgba(237,122,56,1)"/>
- <circle cx="102" cy="69" r="1" fill="rgba(245,128,58,1)"/>
- <circle cx="103" cy="69" r="1" fill="rgba(181,78,30,0.870588)"/>
- <circle cx="104" cy="69" r="1" fill="rgba(28,1,0,0.584314)"/>
- <circle cx="105" cy="69" r="1" fill="rgba(19,0,0,0.501961)"/>
- <circle cx="106" cy="69" r="1" fill="rgba(7,0,0,0.454902)"/>
- <circle cx="107" cy="69" r="1" fill="rgba(0,0,0,0.45098)"/>
- <circle cx="108" cy="69" r="1" fill="rgba(4,0,0,0.368627)"/>
- <circle cx="109" cy="69" r="1" fill="rgba(63,35,16,0.623529)"/>
- <circle cx="110" cy="69" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="111" cy="69" r="1" fill="rgba(98,66,39,1)"/>
- <circle cx="112" cy="69" r="1" fill="rgba(100,68,42,1)"/>
- <circle cx="113" cy="69" r="1" fill="rgba(103,71,44,1)"/>
- <circle cx="114" cy="69" r="1" fill="rgba(104,72,45,1)"/>
- <circle cx="115" cy="69" r="1" fill="rgba(103,71,44,0.380392)"/>
- <circle cx="116" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="69" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="70" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="70" r="1" fill="rgba(39,16,6,0.0313725)"/>
- <circle cx="13" cy="70" r="1" fill="rgba(40,19,7,0.101961)"/>
- <circle cx="14" cy="70" r="1" fill="rgba(33,14,4,0.117647)"/>
- <circle cx="15" cy="70" r="1" fill="rgba(31,13,4,0.113725)"/>
- <circle cx="16" cy="70" r="1" fill="rgba(33,13,4,0.101961)"/>
- <circle cx="17" cy="70" r="1" fill="rgba(39,17,6,0.0862745)"/>
- <circle cx="18" cy="70" r="1" fill="rgba(40,18,7,0.0470588)"/>
- <circle cx="19" cy="70" r="1" fill="rgba(47,22,8,0.00784314)"/>
- <circle cx="20" cy="70" r="1" fill="rgba(50,25,10,0)"/>
- <circle cx="21" cy="70" r="1" fill="rgba(46,23,9,0)"/>
- <circle cx="22" cy="70" r="1" fill="rgba(24,12,4,0)"/>
- <circle cx="23" cy="70" r="1" fill="rgba(110,61,30,0)"/>
- <circle cx="24" cy="70" r="1" fill="rgba(255,191,141,0)"/>
- <circle cx="25" cy="70" r="1" fill="rgba(250,170,114,0)"/>
- <circle cx="26" cy="70" r="1" fill="rgba(233,86,24,0.396078)"/>
- <circle cx="27" cy="70" r="1" fill="rgba(230,64,12,1)"/>
- <circle cx="28" cy="70" r="1" fill="rgba(239,105,44,1)"/>
- <circle cx="29" cy="70" r="1" fill="rgba(239,97,30,1)"/>
- <circle cx="30" cy="70" r="1" fill="rgba(238,74,10,1)"/>
- <circle cx="31" cy="70" r="1" fill="rgba(238,62,1,1)"/>
- <circle cx="32" cy="70" r="1" fill="rgba(238,59,0,1)"/>
- <circle cx="33" cy="70" r="1" fill="rgba(238,55,0,1)"/>
- <circle cx="34" cy="70" r="1" fill="rgba(236,53,0,1)"/>
- <circle cx="35" cy="70" r="1" fill="rgba(234,49,0,1)"/>
- <circle cx="36" cy="70" r="1" fill="rgba(233,47,0,1)"/>
- <circle cx="37" cy="70" r="1" fill="rgba(233,46,0,1)"/>
- <circle cx="38" cy="70" r="1" fill="rgba(233,46,0,1)"/>
- <circle cx="39" cy="70" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="40" cy="70" r="1" fill="rgba(233,45,0,1)"/>
- <circle cx="41" cy="70" r="1" fill="rgba(233,44,0,1)"/>
- <circle cx="42" cy="70" r="1" fill="rgba(233,44,0,1)"/>
- <circle cx="43" cy="70" r="1" fill="rgba(232,44,0,1)"/>
- <circle cx="44" cy="70" r="1" fill="rgba(232,44,0,1)"/>
- <circle cx="45" cy="70" r="1" fill="rgba(232,43,0,1)"/>
- <circle cx="46" cy="70" r="1" fill="rgba(232,42,0,1)"/>
- <circle cx="47" cy="70" r="1" fill="rgba(231,42,0,1)"/>
- <circle cx="48" cy="70" r="1" fill="rgba(230,41,0,1)"/>
- <circle cx="49" cy="70" r="1" fill="rgba(229,40,0,1)"/>
- <circle cx="50" cy="70" r="1" fill="rgba(228,40,0,1)"/>
- <circle cx="51" cy="70" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="52" cy="70" r="1" fill="rgba(227,37,0,1)"/>
- <circle cx="53" cy="70" r="1" fill="rgba(225,36,0,1)"/>
- <circle cx="54" cy="70" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="55" cy="70" r="1" fill="rgba(223,34,0,1)"/>
- <circle cx="56" cy="70" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="57" cy="70" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="58" cy="70" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="59" cy="70" r="1" fill="rgba(219,30,0,1)"/>
- <circle cx="60" cy="70" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="61" cy="70" r="1" fill="rgba(216,27,0,1)"/>
- <circle cx="62" cy="70" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="63" cy="70" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="64" cy="70" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="65" cy="70" r="1" fill="rgba(172,20,2,1)"/>
- <circle cx="66" cy="70" r="1" fill="rgba(157,27,5,1)"/>
- <circle cx="67" cy="70" r="1" fill="rgba(204,20,0,1)"/>
- <circle cx="68" cy="70" r="1" fill="rgba(202,23,0,1)"/>
- <circle cx="69" cy="70" r="1" fill="rgba(207,27,2,1)"/>
- <circle cx="70" cy="70" r="1" fill="rgba(209,29,3,1)"/>
- <circle cx="71" cy="70" r="1" fill="rgba(210,30,4,1)"/>
- <circle cx="72" cy="70" r="1" fill="rgba(209,29,4,1)"/>
- <circle cx="73" cy="70" r="1" fill="rgba(206,25,4,1)"/>
- <circle cx="74" cy="70" r="1" fill="rgba(203,22,4,1)"/>
- <circle cx="75" cy="70" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="76" cy="70" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="77" cy="70" r="1" fill="rgba(199,19,4,1)"/>
- <circle cx="78" cy="70" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="79" cy="70" r="1" fill="rgba(201,24,5,1)"/>
- <circle cx="80" cy="70" r="1" fill="rgba(202,27,7,1)"/>
- <circle cx="81" cy="70" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="82" cy="70" r="1" fill="rgba(204,32,9,1)"/>
- <circle cx="83" cy="70" r="1" fill="rgba(206,36,10,1)"/>
- <circle cx="84" cy="70" r="1" fill="rgba(207,39,11,1)"/>
- <circle cx="85" cy="70" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="86" cy="70" r="1" fill="rgba(208,47,15,1)"/>
- <circle cx="87" cy="70" r="1" fill="rgba(210,50,17,1)"/>
- <circle cx="88" cy="70" r="1" fill="rgba(212,55,19,1)"/>
- <circle cx="89" cy="70" r="1" fill="rgba(214,60,20,1)"/>
- <circle cx="90" cy="70" r="1" fill="rgba(214,65,23,1)"/>
- <circle cx="91" cy="70" r="1" fill="rgba(217,70,27,1)"/>
- <circle cx="92" cy="70" r="1" fill="rgba(220,76,30,1)"/>
- <circle cx="93" cy="70" r="1" fill="rgba(221,81,33,1)"/>
- <circle cx="94" cy="70" r="1" fill="rgba(223,88,36,1)"/>
- <circle cx="95" cy="70" r="1" fill="rgba(226,93,39,1)"/>
- <circle cx="96" cy="70" r="1" fill="rgba(228,100,42,1)"/>
- <circle cx="97" cy="70" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="98" cy="70" r="1" fill="rgba(233,112,51,1)"/>
- <circle cx="99" cy="70" r="1" fill="rgba(234,118,55,1)"/>
- <circle cx="100" cy="70" r="1" fill="rgba(236,122,56,1)"/>
- <circle cx="101" cy="70" r="1" fill="rgba(238,124,58,1)"/>
- <circle cx="102" cy="70" r="1" fill="rgba(248,131,60,1)"/>
- <circle cx="103" cy="70" r="1" fill="rgba(167,70,24,0.854902)"/>
- <circle cx="104" cy="70" r="1" fill="rgba(19,0,0,0.584314)"/>
- <circle cx="105" cy="70" r="1" fill="rgba(22,1,0,0.509804)"/>
- <circle cx="106" cy="70" r="1" fill="rgba(10,0,0,0.462745)"/>
- <circle cx="107" cy="70" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="108" cy="70" r="1" fill="rgba(0,0,0,0.447059)"/>
- <circle cx="109" cy="70" r="1" fill="rgba(7,0,0,0.376471)"/>
- <circle cx="110" cy="70" r="1" fill="rgba(63,35,16,0.635294)"/>
- <circle cx="111" cy="70" r="1" fill="rgba(97,64,38,0.976471)"/>
- <circle cx="112" cy="70" r="1" fill="rgba(100,67,41,1)"/>
- <circle cx="113" cy="70" r="1" fill="rgba(99,67,41,1)"/>
- <circle cx="114" cy="70" r="1" fill="rgba(100,68,41,1)"/>
- <circle cx="115" cy="70" r="1" fill="rgba(100,68,41,0.952941)"/>
- <circle cx="116" cy="70" r="1" fill="rgba(98,66,40,0.576471)"/>
- <circle cx="117" cy="70" r="1" fill="rgba(95,63,37,0.447059)"/>
- <circle cx="118" cy="70" r="1" fill="rgba(92,59,35,0.180392)"/>
- <circle cx="119" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="70" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="71" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="71" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="71" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="20" cy="71" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="21" cy="71" r="1" fill="rgba(45,21,9,0)"/>
- <circle cx="22" cy="71" r="1" fill="rgba(40,18,7,0)"/>
- <circle cx="23" cy="71" r="1" fill="rgba(203,120,74,0)"/>
- <circle cx="24" cy="71" r="1" fill="rgba(251,167,117,0)"/>
- <circle cx="25" cy="71" r="1" fill="rgba(244,152,99,0)"/>
- <circle cx="26" cy="71" r="1" fill="rgba(229,77,21,0.301961)"/>
- <circle cx="27" cy="71" r="1" fill="rgba(227,53,5,1)"/>
- <circle cx="28" cy="71" r="1" fill="rgba(235,93,37,1)"/>
- <circle cx="29" cy="71" r="1" fill="rgba(237,87,24,1)"/>
- <circle cx="30" cy="71" r="1" fill="rgba(236,67,7,1)"/>
- <circle cx="31" cy="71" r="1" fill="rgba(234,55,0,1)"/>
- <circle cx="32" cy="71" r="1" fill="rgba(235,54,0,1)"/>
- <circle cx="33" cy="71" r="1" fill="rgba(235,51,0,1)"/>
- <circle cx="34" cy="71" r="1" fill="rgba(233,47,0,1)"/>
- <circle cx="35" cy="71" r="1" fill="rgba(230,44,0,1)"/>
- <circle cx="36" cy="71" r="1" fill="rgba(230,44,0,1)"/>
- <circle cx="37" cy="71" r="1" fill="rgba(230,44,0,1)"/>
- <circle cx="38" cy="71" r="1" fill="rgba(231,45,0,1)"/>
- <circle cx="39" cy="71" r="1" fill="rgba(231,45,0,1)"/>
- <circle cx="40" cy="71" r="1" fill="rgba(231,44,0,1)"/>
- <circle cx="41" cy="71" r="1" fill="rgba(231,43,0,1)"/>
- <circle cx="42" cy="71" r="1" fill="rgba(231,43,0,1)"/>
- <circle cx="43" cy="71" r="1" fill="rgba(230,43,0,1)"/>
- <circle cx="44" cy="71" r="1" fill="rgba(230,43,0,1)"/>
- <circle cx="45" cy="71" r="1" fill="rgba(230,42,0,1)"/>
- <circle cx="46" cy="71" r="1" fill="rgba(230,41,0,1)"/>
- <circle cx="47" cy="71" r="1" fill="rgba(229,41,0,1)"/>
- <circle cx="48" cy="71" r="1" fill="rgba(228,40,0,1)"/>
- <circle cx="49" cy="71" r="1" fill="rgba(227,39,0,1)"/>
- <circle cx="50" cy="71" r="1" fill="rgba(226,39,0,1)"/>
- <circle cx="51" cy="71" r="1" fill="rgba(226,38,0,1)"/>
- <circle cx="52" cy="71" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="53" cy="71" r="1" fill="rgba(223,35,0,1)"/>
- <circle cx="54" cy="71" r="1" fill="rgba(223,33,0,1)"/>
- <circle cx="55" cy="71" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="56" cy="71" r="1" fill="rgba(219,32,0,1)"/>
- <circle cx="57" cy="71" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="58" cy="71" r="1" fill="rgba(218,29,0,1)"/>
- <circle cx="59" cy="71" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="60" cy="71" r="1" fill="rgba(214,28,0,1)"/>
- <circle cx="61" cy="71" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="62" cy="71" r="1" fill="rgba(212,24,0,1)"/>
- <circle cx="63" cy="71" r="1" fill="rgba(210,21,0,1)"/>
- <circle cx="64" cy="71" r="1" fill="rgba(207,18,0,1)"/>
- <circle cx="65" cy="71" r="1" fill="rgba(171,19,2,1)"/>
- <circle cx="66" cy="71" r="1" fill="rgba(156,26,5,1)"/>
- <circle cx="67" cy="71" r="1" fill="rgba(203,18,0,1)"/>
- <circle cx="68" cy="71" r="1" fill="rgba(201,23,1,1)"/>
- <circle cx="69" cy="71" r="1" fill="rgba(205,27,2,1)"/>
- <circle cx="70" cy="71" r="1" fill="rgba(208,28,4,1)"/>
- <circle cx="71" cy="71" r="1" fill="rgba(209,29,4,1)"/>
- <circle cx="72" cy="71" r="1" fill="rgba(207,28,4,1)"/>
- <circle cx="73" cy="71" r="1" fill="rgba(205,24,4,1)"/>
- <circle cx="74" cy="71" r="1" fill="rgba(203,20,4,1)"/>
- <circle cx="75" cy="71" r="1" fill="rgba(200,19,4,1)"/>
- <circle cx="76" cy="71" r="1" fill="rgba(200,20,4,1)"/>
- <circle cx="77" cy="71" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="78" cy="71" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="79" cy="71" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="80" cy="71" r="1" fill="rgba(203,28,7,1)"/>
- <circle cx="81" cy="71" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="82" cy="71" r="1" fill="rgba(204,34,10,1)"/>
- <circle cx="83" cy="71" r="1" fill="rgba(207,36,10,1)"/>
- <circle cx="84" cy="71" r="1" fill="rgba(207,40,12,1)"/>
- <circle cx="85" cy="71" r="1" fill="rgba(207,44,13,1)"/>
- <circle cx="86" cy="71" r="1" fill="rgba(209,48,16,1)"/>
- <circle cx="87" cy="71" r="1" fill="rgba(210,52,18,1)"/>
- <circle cx="88" cy="71" r="1" fill="rgba(213,56,20,1)"/>
- <circle cx="89" cy="71" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="90" cy="71" r="1" fill="rgba(216,67,24,1)"/>
- <circle cx="91" cy="71" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="92" cy="71" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="93" cy="71" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="94" cy="71" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="95" cy="71" r="1" fill="rgba(226,94,40,1)"/>
- <circle cx="96" cy="71" r="1" fill="rgba(229,102,44,1)"/>
- <circle cx="97" cy="71" r="1" fill="rgba(230,107,48,1)"/>
- <circle cx="98" cy="71" r="1" fill="rgba(233,115,53,1)"/>
- <circle cx="99" cy="71" r="1" fill="rgba(235,119,56,1)"/>
- <circle cx="100" cy="71" r="1" fill="rgba(236,122,57,1)"/>
- <circle cx="101" cy="71" r="1" fill="rgba(238,125,59,1)"/>
- <circle cx="102" cy="71" r="1" fill="rgba(249,132,60,1)"/>
- <circle cx="103" cy="71" r="1" fill="rgba(150,60,20,0.831373)"/>
- <circle cx="104" cy="71" r="1" fill="rgba(7,0,0,0.580392)"/>
- <circle cx="105" cy="71" r="1" fill="rgba(24,1,0,0.513725)"/>
- <circle cx="106" cy="71" r="1" fill="rgba(10,0,0,0.466667)"/>
- <circle cx="107" cy="71" r="1" fill="rgba(4,0,0,0.45098)"/>
- <circle cx="108" cy="71" r="1" fill="rgba(4,0,0,0.447059)"/>
- <circle cx="109" cy="71" r="1" fill="rgba(0,0,0,0.443137)"/>
- <circle cx="110" cy="71" r="1" fill="rgba(0,0,0,0.392157)"/>
- <circle cx="111" cy="71" r="1" fill="rgba(45,21,8,0.494118)"/>
- <circle cx="112" cy="71" r="1" fill="rgba(83,52,28,0.780392)"/>
- <circle cx="113" cy="71" r="1" fill="rgba(98,66,40,1)"/>
- <circle cx="114" cy="71" r="1" fill="rgba(98,65,39,1)"/>
- <circle cx="115" cy="71" r="1" fill="rgba(97,64,38,1)"/>
- <circle cx="116" cy="71" r="1" fill="rgba(96,63,37,1)"/>
- <circle cx="117" cy="71" r="1" fill="rgba(93,61,35,1)"/>
- <circle cx="118" cy="71" r="1" fill="rgba(90,58,33,0.980392)"/>
- <circle cx="119" cy="71" r="1" fill="rgba(87,55,31,0.705882)"/>
- <circle cx="120" cy="71" r="1" fill="rgba(83,51,27,0.305882)"/>
- <circle cx="121" cy="71" r="1" fill="rgba(78,46,24,0.027451)"/>
- <circle cx="122" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="71" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="72" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="72" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="72" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="20" cy="72" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="21" cy="72" r="1" fill="rgba(42,20,8,0)"/>
- <circle cx="22" cy="72" r="1" fill="rgba(62,28,11,0)"/>
- <circle cx="23" cy="72" r="1" fill="rgba(236,126,74,0)"/>
- <circle cx="24" cy="72" r="1" fill="rgba(243,129,77,0)"/>
- <circle cx="25" cy="72" r="1" fill="rgba(242,131,80,0)"/>
- <circle cx="26" cy="72" r="1" fill="rgba(230,73,20,0.196078)"/>
- <circle cx="27" cy="72" r="1" fill="rgba(222,42,0,0.976471)"/>
- <circle cx="28" cy="72" r="1" fill="rgba(230,80,27,1)"/>
- <circle cx="29" cy="72" r="1" fill="rgba(233,79,20,1)"/>
- <circle cx="30" cy="72" r="1" fill="rgba(233,65,7,1)"/>
- <circle cx="31" cy="72" r="1" fill="rgba(231,51,0,1)"/>
- <circle cx="32" cy="72" r="1" fill="rgba(231,47,0,1)"/>
- <circle cx="33" cy="72" r="1" fill="rgba(230,44,0,1)"/>
- <circle cx="34" cy="72" r="1" fill="rgba(228,41,0,1)"/>
- <circle cx="35" cy="72" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="36" cy="72" r="1" fill="rgba(227,41,0,1)"/>
- <circle cx="37" cy="72" r="1" fill="rgba(227,42,0,1)"/>
- <circle cx="38" cy="72" r="1" fill="rgba(229,42,0,1)"/>
- <circle cx="39" cy="72" r="1" fill="rgba(229,42,0,1)"/>
- <circle cx="40" cy="72" r="1" fill="rgba(229,42,0,1)"/>
- <circle cx="41" cy="72" r="1" fill="rgba(230,42,0,1)"/>
- <circle cx="42" cy="72" r="1" fill="rgba(229,41,0,1)"/>
- <circle cx="43" cy="72" r="1" fill="rgba(229,41,0,1)"/>
- <circle cx="44" cy="72" r="1" fill="rgba(227,41,0,1)"/>
- <circle cx="45" cy="72" r="1" fill="rgba(228,41,0,1)"/>
- <circle cx="46" cy="72" r="1" fill="rgba(228,40,0,1)"/>
- <circle cx="47" cy="72" r="1" fill="rgba(227,39,0,1)"/>
- <circle cx="48" cy="72" r="1" fill="rgba(226,39,0,1)"/>
- <circle cx="49" cy="72" r="1" fill="rgba(226,38,0,1)"/>
- <circle cx="50" cy="72" r="1" fill="rgba(225,37,0,1)"/>
- <circle cx="51" cy="72" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="52" cy="72" r="1" fill="rgba(222,35,0,1)"/>
- <circle cx="53" cy="72" r="1" fill="rgba(222,32,0,1)"/>
- <circle cx="54" cy="72" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="55" cy="72" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="56" cy="72" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="57" cy="72" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="58" cy="72" r="1" fill="rgba(217,27,0,1)"/>
- <circle cx="59" cy="72" r="1" fill="rgba(215,26,0,1)"/>
- <circle cx="60" cy="72" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="61" cy="72" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="62" cy="72" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="63" cy="72" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="64" cy="72" r="1" fill="rgba(207,17,0,1)"/>
- <circle cx="65" cy="72" r="1" fill="rgba(170,18,2,1)"/>
- <circle cx="66" cy="72" r="1" fill="rgba(155,25,5,1)"/>
- <circle cx="67" cy="72" r="1" fill="rgba(201,17,0,1)"/>
- <circle cx="68" cy="72" r="1" fill="rgba(200,22,1,1)"/>
- <circle cx="69" cy="72" r="1" fill="rgba(203,25,2,1)"/>
- <circle cx="70" cy="72" r="1" fill="rgba(207,27,4,1)"/>
- <circle cx="71" cy="72" r="1" fill="rgba(208,29,5,1)"/>
- <circle cx="72" cy="72" r="1" fill="rgba(207,27,5,1)"/>
- <circle cx="73" cy="72" r="1" fill="rgba(204,23,5,1)"/>
- <circle cx="74" cy="72" r="1" fill="rgba(202,21,5,1)"/>
- <circle cx="75" cy="72" r="1" fill="rgba(201,20,5,1)"/>
- <circle cx="76" cy="72" r="1" fill="rgba(200,20,5,1)"/>
- <circle cx="77" cy="72" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="78" cy="72" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="79" cy="72" r="1" fill="rgba(202,26,6,1)"/>
- <circle cx="80" cy="72" r="1" fill="rgba(203,28,8,1)"/>
- <circle cx="81" cy="72" r="1" fill="rgba(204,31,8,1)"/>
- <circle cx="82" cy="72" r="1" fill="rgba(205,34,10,1)"/>
- <circle cx="83" cy="72" r="1" fill="rgba(207,38,11,1)"/>
- <circle cx="84" cy="72" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="85" cy="72" r="1" fill="rgba(207,46,14,1)"/>
- <circle cx="86" cy="72" r="1" fill="rgba(210,49,16,1)"/>
- <circle cx="87" cy="72" r="1" fill="rgba(211,53,18,1)"/>
- <circle cx="88" cy="72" r="1" fill="rgba(214,59,20,1)"/>
- <circle cx="89" cy="72" r="1" fill="rgba(214,64,22,1)"/>
- <circle cx="90" cy="72" r="1" fill="rgba(216,68,25,1)"/>
- <circle cx="91" cy="72" r="1" fill="rgba(218,72,27,1)"/>
- <circle cx="92" cy="72" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="93" cy="72" r="1" fill="rgba(222,85,34,1)"/>
- <circle cx="94" cy="72" r="1" fill="rgba(224,90,38,1)"/>
- <circle cx="95" cy="72" r="1" fill="rgba(227,97,42,1)"/>
- <circle cx="96" cy="72" r="1" fill="rgba(229,104,46,1)"/>
- <circle cx="97" cy="72" r="1" fill="rgba(232,109,50,1)"/>
- <circle cx="98" cy="72" r="1" fill="rgba(233,117,54,1)"/>
- <circle cx="99" cy="72" r="1" fill="rgba(236,121,56,1)"/>
- <circle cx="100" cy="72" r="1" fill="rgba(237,124,57,1)"/>
- <circle cx="101" cy="72" r="1" fill="rgba(239,126,58,1)"/>
- <circle cx="102" cy="72" r="1" fill="rgba(245,127,56,1)"/>
- <circle cx="103" cy="72" r="1" fill="rgba(138,51,16,0.8)"/>
- <circle cx="104" cy="72" r="1" fill="rgba(15,0,0,0.580392)"/>
- <circle cx="105" cy="72" r="1" fill="rgba(21,1,0,0.509804)"/>
- <circle cx="106" cy="72" r="1" fill="rgba(10,0,0,0.462745)"/>
- <circle cx="107" cy="72" r="1" fill="rgba(4,0,0,0.435294)"/>
- <circle cx="108" cy="72" r="1" fill="rgba(7,1,0,0.419608)"/>
- <circle cx="109" cy="72" r="1" fill="rgba(7,2,0,0.419608)"/>
- <circle cx="110" cy="72" r="1" fill="rgba(4,0,0,0.431373)"/>
- <circle cx="111" cy="72" r="1" fill="rgba(0,0,0,0.407843)"/>
- <circle cx="112" cy="72" r="1" fill="rgba(19,5,1,0.364706)"/>
- <circle cx="113" cy="72" r="1" fill="rgba(58,31,13,0.509804)"/>
- <circle cx="114" cy="72" r="1" fill="rgba(85,53,29,0.698039)"/>
- <circle cx="115" cy="72" r="1" fill="rgba(91,58,33,0.721569)"/>
- <circle cx="116" cy="72" r="1" fill="rgba(88,56,31,0.705882)"/>
- <circle cx="117" cy="72" r="1" fill="rgba(90,57,32,0.890196)"/>
- <circle cx="118" cy="72" r="1" fill="rgba(90,56,32,1)"/>
- <circle cx="119" cy="72" r="1" fill="rgba(85,52,29,1)"/>
- <circle cx="120" cy="72" r="1" fill="rgba(82,49,26,1)"/>
- <circle cx="121" cy="72" r="1" fill="rgba(77,45,24,0.827451)"/>
- <circle cx="122" cy="72" r="1" fill="rgba(74,42,21,0.403922)"/>
- <circle cx="123" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="72" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="73" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="73" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="73" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="20" cy="73" r="1" fill="rgba(49,24,10,0)"/>
- <circle cx="21" cy="73" r="1" fill="rgba(36,22,9,0)"/>
- <circle cx="22" cy="73" r="1" fill="rgba(57,21,8,0)"/>
- <circle cx="23" cy="73" r="1" fill="rgba(214,43,3,0)"/>
- <circle cx="24" cy="73" r="1" fill="rgba(224,44,3,0)"/>
- <circle cx="25" cy="73" r="1" fill="rgba(221,44,3,0)"/>
- <circle cx="26" cy="73" r="1" fill="rgba(221,39,1,0.0745098)"/>
- <circle cx="27" cy="73" r="1" fill="rgba(221,40,0,0.945098)"/>
- <circle cx="28" cy="73" r="1" fill="rgba(226,61,9,1)"/>
- <circle cx="29" cy="73" r="1" fill="rgba(229,67,10,1)"/>
- <circle cx="30" cy="73" r="1" fill="rgba(229,59,4,1)"/>
- <circle cx="31" cy="73" r="1" fill="rgba(227,46,0,1)"/>
- <circle cx="32" cy="73" r="1" fill="rgba(225,39,0,1)"/>
- <circle cx="33" cy="73" r="1" fill="rgba(224,38,0,1)"/>
- <circle cx="34" cy="73" r="1" fill="rgba(224,38,0,1)"/>
- <circle cx="35" cy="73" r="1" fill="rgba(224,37,0,1)"/>
- <circle cx="36" cy="73" r="1" fill="rgba(225,37,0,1)"/>
- <circle cx="37" cy="73" r="1" fill="rgba(226,39,0,1)"/>
- <circle cx="38" cy="73" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="39" cy="73" r="1" fill="rgba(227,39,0,1)"/>
- <circle cx="40" cy="73" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="41" cy="73" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="42" cy="73" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="43" cy="73" r="1" fill="rgba(227,40,0,1)"/>
- <circle cx="44" cy="73" r="1" fill="rgba(227,39,0,1)"/>
- <circle cx="45" cy="73" r="1" fill="rgba(226,39,0,1)"/>
- <circle cx="46" cy="73" r="1" fill="rgba(226,38,0,1)"/>
- <circle cx="47" cy="73" r="1" fill="rgba(225,36,0,1)"/>
- <circle cx="48" cy="73" r="1" fill="rgba(224,37,0,1)"/>
- <circle cx="49" cy="73" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="50" cy="73" r="1" fill="rgba(223,35,0,1)"/>
- <circle cx="51" cy="73" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="52" cy="73" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="53" cy="73" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="54" cy="73" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="55" cy="73" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="56" cy="73" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="57" cy="73" r="1" fill="rgba(217,26,0,1)"/>
- <circle cx="58" cy="73" r="1" fill="rgba(215,26,0,1)"/>
- <circle cx="59" cy="73" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="60" cy="73" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="61" cy="73" r="1" fill="rgba(211,23,0,1)"/>
- <circle cx="62" cy="73" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="63" cy="73" r="1" fill="rgba(207,20,0,1)"/>
- <circle cx="64" cy="73" r="1" fill="rgba(205,16,0,1)"/>
- <circle cx="65" cy="73" r="1" fill="rgba(169,18,2,1)"/>
- <circle cx="66" cy="73" r="1" fill="rgba(154,25,5,1)"/>
- <circle cx="67" cy="73" r="1" fill="rgba(200,17,0,1)"/>
- <circle cx="68" cy="73" r="1" fill="rgba(199,21,1,1)"/>
- <circle cx="69" cy="73" r="1" fill="rgba(203,24,2,1)"/>
- <circle cx="70" cy="73" r="1" fill="rgba(207,26,4,1)"/>
- <circle cx="71" cy="73" r="1" fill="rgba(208,28,5,1)"/>
- <circle cx="72" cy="73" r="1" fill="rgba(207,25,6,1)"/>
- <circle cx="73" cy="73" r="1" fill="rgba(204,22,6,1)"/>
- <circle cx="74" cy="73" r="1" fill="rgba(202,22,5,1)"/>
- <circle cx="75" cy="73" r="1" fill="rgba(201,22,5,1)"/>
- <circle cx="76" cy="73" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="77" cy="73" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="78" cy="73" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="79" cy="73" r="1" fill="rgba(202,27,6,1)"/>
- <circle cx="80" cy="73" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="81" cy="73" r="1" fill="rgba(204,33,9,1)"/>
- <circle cx="82" cy="73" r="1" fill="rgba(206,36,10,1)"/>
- <circle cx="83" cy="73" r="1" fill="rgba(207,40,12,1)"/>
- <circle cx="84" cy="73" r="1" fill="rgba(207,44,13,1)"/>
- <circle cx="85" cy="73" r="1" fill="rgba(208,48,15,1)"/>
- <circle cx="86" cy="73" r="1" fill="rgba(210,50,17,1)"/>
- <circle cx="87" cy="73" r="1" fill="rgba(212,54,19,1)"/>
- <circle cx="88" cy="73" r="1" fill="rgba(214,60,21,1)"/>
- <circle cx="89" cy="73" r="1" fill="rgba(215,65,23,1)"/>
- <circle cx="90" cy="73" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="91" cy="73" r="1" fill="rgba(219,74,29,1)"/>
- <circle cx="92" cy="73" r="1" fill="rgba(221,81,32,1)"/>
- <circle cx="93" cy="73" r="1" fill="rgba(223,86,36,1)"/>
- <circle cx="94" cy="73" r="1" fill="rgba(226,93,39,1)"/>
- <circle cx="95" cy="73" r="1" fill="rgba(228,99,42,1)"/>
- <circle cx="96" cy="73" r="1" fill="rgba(230,106,47,1)"/>
- <circle cx="97" cy="73" r="1" fill="rgba(233,112,51,1)"/>
- <circle cx="98" cy="73" r="1" fill="rgba(234,118,55,1)"/>
- <circle cx="99" cy="73" r="1" fill="rgba(236,123,57,1)"/>
- <circle cx="100" cy="73" r="1" fill="rgba(238,126,59,1)"/>
- <circle cx="101" cy="73" r="1" fill="rgba(240,128,58,1)"/>
- <circle cx="102" cy="73" r="1" fill="rgba(241,122,53,1)"/>
- <circle cx="103" cy="73" r="1" fill="rgba(121,42,12,0.768627)"/>
- <circle cx="104" cy="73" r="1" fill="rgba(19,0,0,0.580392)"/>
- <circle cx="105" cy="73" r="1" fill="rgba(21,1,0,0.505882)"/>
- <circle cx="106" cy="73" r="1" fill="rgba(10,0,0,0.45098)"/>
- <circle cx="107" cy="73" r="1" fill="rgba(4,0,0,0.419608)"/>
- <circle cx="108" cy="73" r="1" fill="rgba(4,0,0,0.384314)"/>
- <circle cx="109" cy="73" r="1" fill="rgba(10,3,0,0.352941)"/>
- <circle cx="110" cy="73" r="1" fill="rgba(12,3,0,0.364706)"/>
- <circle cx="111" cy="73" r="1" fill="rgba(7,1,0,0.419608)"/>
- <circle cx="112" cy="73" r="1" fill="rgba(0,0,0,0.447059)"/>
- <circle cx="113" cy="73" r="1" fill="rgba(0,0,0,0.392157)"/>
- <circle cx="114" cy="73" r="1" fill="rgba(26,9,2,0.321569)"/>
- <circle cx="115" cy="73" r="1" fill="rgba(39,18,6,0.196078)"/>
- <circle cx="116" cy="73" r="1" fill="rgba(46,22,9,0.0823529)"/>
- <circle cx="117" cy="73" r="1" fill="rgba(55,29,13,0.160784)"/>
- <circle cx="118" cy="73" r="1" fill="rgba(73,42,21,0.411765)"/>
- <circle cx="119" cy="73" r="1" fill="rgba(78,46,24,0.72549)"/>
- <circle cx="120" cy="73" r="1" fill="rgba(80,47,24,0.996078)"/>
- <circle cx="121" cy="73" r="1" fill="rgba(75,43,22,1)"/>
- <circle cx="122" cy="73" r="1" fill="rgba(71,40,20,0.964706)"/>
- <circle cx="123" cy="73" r="1" fill="rgba(67,36,17,0.4)"/>
- <circle cx="124" cy="73" r="1" fill="rgba(62,31,14,0.0431373)"/>
- <circle cx="125" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="73" r="1" fill="rgba(254,253,254,0)"/>
- <circle cx="127" cy="73" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="74" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="74" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="74" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="74" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="20" cy="74" r="1" fill="rgba(45,24,10,0)"/>
- <circle cx="21" cy="74" r="1" fill="rgba(50,22,9,0)"/>
- <circle cx="22" cy="74" r="1" fill="rgba(173,29,2,0)"/>
- <circle cx="23" cy="74" r="1" fill="rgba(221,33,0,0)"/>
- <circle cx="24" cy="74" r="1" fill="rgba(217,33,0,0)"/>
- <circle cx="25" cy="74" r="1" fill="rgba(217,33,0,0)"/>
- <circle cx="26" cy="74" r="1" fill="rgba(217,34,0,0.0235294)"/>
- <circle cx="27" cy="74" r="1" fill="rgba(217,36,0,0.835294)"/>
- <circle cx="28" cy="74" r="1" fill="rgba(222,45,0,1)"/>
- <circle cx="29" cy="74" r="1" fill="rgba(225,54,1,1)"/>
- <circle cx="30" cy="74" r="1" fill="rgba(225,51,0,1)"/>
- <circle cx="31" cy="74" r="1" fill="rgba(224,43,0,1)"/>
- <circle cx="32" cy="74" r="1" fill="rgba(221,36,0,1)"/>
- <circle cx="33" cy="74" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="34" cy="74" r="1" fill="rgba(221,35,0,1)"/>
- <circle cx="35" cy="74" r="1" fill="rgba(222,35,0,1)"/>
- <circle cx="36" cy="74" r="1" fill="rgba(223,36,0,1)"/>
- <circle cx="37" cy="74" r="1" fill="rgba(224,37,0,1)"/>
- <circle cx="38" cy="74" r="1" fill="rgba(225,37,0,1)"/>
- <circle cx="39" cy="74" r="1" fill="rgba(225,37,0,1)"/>
- <circle cx="40" cy="74" r="1" fill="rgba(225,38,0,1)"/>
- <circle cx="41" cy="74" r="1" fill="rgba(225,37,0,1)"/>
- <circle cx="42" cy="74" r="1" fill="rgba(225,38,0,1)"/>
- <circle cx="43" cy="74" r="1" fill="rgba(225,38,0,1)"/>
- <circle cx="44" cy="74" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="45" cy="74" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="46" cy="74" r="1" fill="rgba(224,36,0,1)"/>
- <circle cx="47" cy="74" r="1" fill="rgba(224,34,0,1)"/>
- <circle cx="48" cy="74" r="1" fill="rgba(223,34,0,1)"/>
- <circle cx="49" cy="74" r="1" fill="rgba(222,33,0,1)"/>
- <circle cx="50" cy="74" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="51" cy="74" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="52" cy="74" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="53" cy="74" r="1" fill="rgba(218,31,0,1)"/>
- <circle cx="54" cy="74" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="55" cy="74" r="1" fill="rgba(217,27,0,1)"/>
- <circle cx="56" cy="74" r="1" fill="rgba(216,27,0,1)"/>
- <circle cx="57" cy="74" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="58" cy="74" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="59" cy="74" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="60" cy="74" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="61" cy="74" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="62" cy="74" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="63" cy="74" r="1" fill="rgba(205,18,0,1)"/>
- <circle cx="64" cy="74" r="1" fill="rgba(203,16,0,1)"/>
- <circle cx="65" cy="74" r="1" fill="rgba(169,18,2,1)"/>
- <circle cx="66" cy="74" r="1" fill="rgba(152,24,6,1)"/>
- <circle cx="67" cy="74" r="1" fill="rgba(199,16,0,1)"/>
- <circle cx="68" cy="74" r="1" fill="rgba(197,19,1,1)"/>
- <circle cx="69" cy="74" r="1" fill="rgba(202,22,2,1)"/>
- <circle cx="70" cy="74" r="1" fill="rgba(205,25,5,1)"/>
- <circle cx="71" cy="74" r="1" fill="rgba(207,27,6,1)"/>
- <circle cx="72" cy="74" r="1" fill="rgba(206,25,6,1)"/>
- <circle cx="73" cy="74" r="1" fill="rgba(204,24,6,1)"/>
- <circle cx="74" cy="74" r="1" fill="rgba(203,24,6,1)"/>
- <circle cx="75" cy="74" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="76" cy="74" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="77" cy="74" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="78" cy="74" r="1" fill="rgba(202,26,7,1)"/>
- <circle cx="79" cy="74" r="1" fill="rgba(203,29,7,1)"/>
- <circle cx="80" cy="74" r="1" fill="rgba(204,31,8,1)"/>
- <circle cx="81" cy="74" r="1" fill="rgba(205,34,10,1)"/>
- <circle cx="82" cy="74" r="1" fill="rgba(207,37,11,1)"/>
- <circle cx="83" cy="74" r="1" fill="rgba(207,41,12,1)"/>
- <circle cx="84" cy="74" r="1" fill="rgba(207,45,14,1)"/>
- <circle cx="85" cy="74" r="1" fill="rgba(209,49,16,1)"/>
- <circle cx="86" cy="74" r="1" fill="rgba(210,52,18,1)"/>
- <circle cx="87" cy="74" r="1" fill="rgba(213,56,20,1)"/>
- <circle cx="88" cy="74" r="1" fill="rgba(214,62,21,1)"/>
- <circle cx="89" cy="74" r="1" fill="rgba(215,67,24,1)"/>
- <circle cx="90" cy="74" r="1" fill="rgba(217,72,27,1)"/>
- <circle cx="91" cy="74" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="92" cy="74" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="93" cy="74" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="94" cy="74" r="1" fill="rgba(227,95,40,1)"/>
- <circle cx="95" cy="74" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="96" cy="74" r="1" fill="rgba(231,107,48,1)"/>
- <circle cx="97" cy="74" r="1" fill="rgba(233,115,53,1)"/>
- <circle cx="98" cy="74" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="99" cy="74" r="1" fill="rgba(237,124,59,1)"/>
- <circle cx="100" cy="74" r="1" fill="rgba(238,127,60,1)"/>
- <circle cx="101" cy="74" r="1" fill="rgba(241,128,58,1)"/>
- <circle cx="102" cy="74" r="1" fill="rgba(234,115,49,0.996078)"/>
- <circle cx="103" cy="74" r="1" fill="rgba(91,24,6,0.72549)"/>
- <circle cx="104" cy="74" r="1" fill="rgba(22,0,0,0.576471)"/>
- <circle cx="105" cy="74" r="1" fill="rgba(19,1,0,0.498039)"/>
- <circle cx="106" cy="74" r="1" fill="rgba(7,0,0,0.435294)"/>
- <circle cx="107" cy="74" r="1" fill="rgba(0,0,0,0.396078)"/>
- <circle cx="108" cy="74" r="1" fill="rgba(0,0,0,0.341176)"/>
- <circle cx="109" cy="74" r="1" fill="rgba(7,0,0,0.27451)"/>
- <circle cx="110" cy="74" r="1" fill="rgba(17,4,1,0.25098)"/>
- <circle cx="111" cy="74" r="1" fill="rgba(19,5,1,0.305882)"/>
- <circle cx="112" cy="74" r="1" fill="rgba(10,2,0,0.403922)"/>
- <circle cx="113" cy="74" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="114" cy="74" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="115" cy="74" r="1" fill="rgba(7,1,0,0.435294)"/>
- <circle cx="116" cy="74" r="1" fill="rgba(12,3,0,0.403922)"/>
- <circle cx="117" cy="74" r="1" fill="rgba(17,5,1,0.368627)"/>
- <circle cx="118" cy="74" r="1" fill="rgba(36,15,5,0.156863)"/>
- <circle cx="119" cy="74" r="1" fill="rgba(26,10,3,0.105882)"/>
- <circle cx="120" cy="74" r="1" fill="rgba(54,27,11,0.45098)"/>
- <circle cx="121" cy="74" r="1" fill="rgba(70,39,19,0.933333)"/>
- <circle cx="122" cy="74" r="1" fill="rgba(70,38,18,1)"/>
- <circle cx="123" cy="74" r="1" fill="rgba(67,35,16,1)"/>
- <circle cx="124" cy="74" r="1" fill="rgba(62,31,14,0.870588)"/>
- <circle cx="125" cy="74" r="1" fill="rgba(61,30,13,0.458824)"/>
- <circle cx="126" cy="74" r="1" fill="rgba(61,30,13,0.101961)"/>
- <circle cx="127" cy="74" r="1" fill="rgba(253,252,252,0)"/>
- <circle cx="0" cy="75" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="75" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="75" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="75" r="1" fill="rgba(46,21,8,0)"/>
- <circle cx="20" cy="75" r="1" fill="rgba(29,24,10,0)"/>
- <circle cx="21" cy="75" r="1" fill="rgba(142,27,4,0)"/>
- <circle cx="22" cy="75" r="1" fill="rgba(227,32,0,0)"/>
- <circle cx="23" cy="75" r="1" fill="rgba(214,31,0,0)"/>
- <circle cx="24" cy="75" r="1" fill="rgba(214,31,0,0)"/>
- <circle cx="25" cy="75" r="1" fill="rgba(214,31,0,0)"/>
- <circle cx="26" cy="75" r="1" fill="rgba(214,31,0,0)"/>
- <circle cx="27" cy="75" r="1" fill="rgba(215,32,0,0.682353)"/>
- <circle cx="28" cy="75" r="1" fill="rgba(220,41,0,1)"/>
- <circle cx="29" cy="75" r="1" fill="rgba(224,51,0,1)"/>
- <circle cx="30" cy="75" r="1" fill="rgba(224,50,0,1)"/>
- <circle cx="31" cy="75" r="1" fill="rgba(221,42,0,1)"/>
- <circle cx="32" cy="75" r="1" fill="rgba(220,35,0,1)"/>
- <circle cx="33" cy="75" r="1" fill="rgba(219,32,0,1)"/>
- <circle cx="34" cy="75" r="1" fill="rgba(220,33,0,1)"/>
- <circle cx="35" cy="75" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="36" cy="75" r="1" fill="rgba(221,35,0,1)"/>
- <circle cx="37" cy="75" r="1" fill="rgba(222,36,0,1)"/>
- <circle cx="38" cy="75" r="1" fill="rgba(223,36,0,1)"/>
- <circle cx="39" cy="75" r="1" fill="rgba(223,36,0,1)"/>
- <circle cx="40" cy="75" r="1" fill="rgba(223,36,0,1)"/>
- <circle cx="41" cy="75" r="1" fill="rgba(223,34,0,1)"/>
- <circle cx="42" cy="75" r="1" fill="rgba(223,35,0,1)"/>
- <circle cx="43" cy="75" r="1" fill="rgba(223,35,0,1)"/>
- <circle cx="44" cy="75" r="1" fill="rgba(222,34,0,1)"/>
- <circle cx="45" cy="75" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="46" cy="75" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="47" cy="75" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="48" cy="75" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="49" cy="75" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="50" cy="75" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="51" cy="75" r="1" fill="rgba(218,31,0,1)"/>
- <circle cx="52" cy="75" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="53" cy="75" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="54" cy="75" r="1" fill="rgba(217,27,0,1)"/>
- <circle cx="55" cy="75" r="1" fill="rgba(215,26,0,1)"/>
- <circle cx="56" cy="75" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="57" cy="75" r="1" fill="rgba(213,25,0,1)"/>
- <circle cx="58" cy="75" r="1" fill="rgba(212,23,0,1)"/>
- <circle cx="59" cy="75" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="60" cy="75" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="61" cy="75" r="1" fill="rgba(209,20,0,1)"/>
- <circle cx="62" cy="75" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="63" cy="75" r="1" fill="rgba(203,18,0,1)"/>
- <circle cx="64" cy="75" r="1" fill="rgba(202,15,0,1)"/>
- <circle cx="65" cy="75" r="1" fill="rgba(168,17,2,1)"/>
- <circle cx="66" cy="75" r="1" fill="rgba(150,22,5,1)"/>
- <circle cx="67" cy="75" r="1" fill="rgba(196,14,1,1)"/>
- <circle cx="68" cy="75" r="1" fill="rgba(196,18,2,1)"/>
- <circle cx="69" cy="75" r="1" fill="rgba(200,21,3,1)"/>
- <circle cx="70" cy="75" r="1" fill="rgba(204,24,5,1)"/>
- <circle cx="71" cy="75" r="1" fill="rgba(206,26,6,1)"/>
- <circle cx="72" cy="75" r="1" fill="rgba(206,25,7,1)"/>
- <circle cx="73" cy="75" r="1" fill="rgba(205,26,7,1)"/>
- <circle cx="74" cy="75" r="1" fill="rgba(203,26,6,1)"/>
- <circle cx="75" cy="75" r="1" fill="rgba(202,25,6,1)"/>
- <circle cx="76" cy="75" r="1" fill="rgba(202,25,6,1)"/>
- <circle cx="77" cy="75" r="1" fill="rgba(203,26,7,1)"/>
- <circle cx="78" cy="75" r="1" fill="rgba(207,29,7,1)"/>
- <circle cx="79" cy="75" r="1" fill="rgba(213,32,9,1)"/>
- <circle cx="80" cy="75" r="1" fill="rgba(214,35,10,1)"/>
- <circle cx="81" cy="75" r="1" fill="rgba(209,36,11,1)"/>
- <circle cx="82" cy="75" r="1" fill="rgba(207,38,11,1)"/>
- <circle cx="83" cy="75" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="84" cy="75" r="1" fill="rgba(207,46,14,1)"/>
- <circle cx="85" cy="75" r="1" fill="rgba(210,50,16,1)"/>
- <circle cx="86" cy="75" r="1" fill="rgba(211,54,19,1)"/>
- <circle cx="87" cy="75" r="1" fill="rgba(214,59,20,1)"/>
- <circle cx="88" cy="75" r="1" fill="rgba(215,64,23,1)"/>
- <circle cx="89" cy="75" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="90" cy="75" r="1" fill="rgba(218,74,28,1)"/>
- <circle cx="91" cy="75" r="1" fill="rgba(221,80,31,1)"/>
- <circle cx="92" cy="75" r="1" fill="rgba(222,84,34,1)"/>
- <circle cx="93" cy="75" r="1" fill="rgba(224,92,37,1)"/>
- <circle cx="94" cy="75" r="1" fill="rgba(227,96,42,1)"/>
- <circle cx="95" cy="75" r="1" fill="rgba(229,104,45,1)"/>
- <circle cx="96" cy="75" r="1" fill="rgba(232,110,49,1)"/>
- <circle cx="97" cy="75" r="1" fill="rgba(234,117,54,1)"/>
- <circle cx="98" cy="75" r="1" fill="rgba(236,122,57,1)"/>
- <circle cx="99" cy="75" r="1" fill="rgba(237,125,60,1)"/>
- <circle cx="100" cy="75" r="1" fill="rgba(239,129,60,1)"/>
- <circle cx="101" cy="75" r="1" fill="rgba(242,127,58,1)"/>
- <circle cx="102" cy="75" r="1" fill="rgba(223,103,42,0.972549)"/>
- <circle cx="103" cy="75" r="1" fill="rgba(59,10,2,0.686275)"/>
- <circle cx="104" cy="75" r="1" fill="rgba(28,1,0,0.568627)"/>
- <circle cx="105" cy="75" r="1" fill="rgba(19,1,0,0.482353)"/>
- <circle cx="106" cy="75" r="1" fill="rgba(4,0,0,0.423529)"/>
- <circle cx="107" cy="75" r="1" fill="rgba(0,0,0,0.368627)"/>
- <circle cx="108" cy="75" r="1" fill="rgba(0,0,0,0.298039)"/>
- <circle cx="109" cy="75" r="1" fill="rgba(0,0,0,0.211765)"/>
- <circle cx="110" cy="75" r="1" fill="rgba(10,2,0,0.14902)"/>
- <circle cx="111" cy="75" r="1" fill="rgba(26,8,2,0.156863)"/>
- <circle cx="112" cy="75" r="1" fill="rgba(24,8,2,0.25098)"/>
- <circle cx="113" cy="75" r="1" fill="rgba(15,3,0,0.384314)"/>
- <circle cx="114" cy="75" r="1" fill="rgba(4,0,0,0.458824)"/>
- <circle cx="115" cy="75" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="116" cy="75" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="117" cy="75" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="118" cy="75" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="119" cy="75" r="1" fill="rgba(0,0,0,0.443137)"/>
- <circle cx="120" cy="75" r="1" fill="rgba(4,0,0,0.427451)"/>
- <circle cx="121" cy="75" r="1" fill="rgba(26,9,2,0.533333)"/>
- <circle cx="122" cy="75" r="1" fill="rgba(36,14,4,0.627451)"/>
- <circle cx="123" cy="75" r="1" fill="rgba(42,17,6,0.694118)"/>
- <circle cx="124" cy="75" r="1" fill="rgba(53,25,10,0.819608)"/>
- <circle cx="125" cy="75" r="1" fill="rgba(58,29,13,0.996078)"/>
- <circle cx="126" cy="75" r="1" fill="rgba(62,31,14,0.913725)"/>
- <circle cx="127" cy="75" r="1" fill="rgba(62,31,14,0.584314)"/>
- <circle cx="0" cy="76" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="76" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="76" r="1" fill="rgba(42,19,7,0)"/>
- <circle cx="19" cy="76" r="1" fill="rgba(39,21,8,0)"/>
- <circle cx="20" cy="76" r="1" fill="rgba(59,24,9,0)"/>
- <circle cx="21" cy="76" r="1" fill="rgba(203,29,0,0)"/>
- <circle cx="22" cy="76" r="1" fill="rgba(215,29,0,0)"/>
- <circle cx="23" cy="76" r="1" fill="rgba(212,29,0,0)"/>
- <circle cx="24" cy="76" r="1" fill="rgba(212,29,0,0)"/>
- <circle cx="25" cy="76" r="1" fill="rgba(212,29,0,0)"/>
- <circle cx="26" cy="76" r="1" fill="rgba(212,29,0,0)"/>
- <circle cx="27" cy="76" r="1" fill="rgba(213,30,0,0.541176)"/>
- <circle cx="28" cy="76" r="1" fill="rgba(217,38,0,1)"/>
- <circle cx="29" cy="76" r="1" fill="rgba(221,48,1,1)"/>
- <circle cx="30" cy="76" r="1" fill="rgba(223,49,1,1)"/>
- <circle cx="31" cy="76" r="1" fill="rgba(221,42,0,1)"/>
- <circle cx="32" cy="76" r="1" fill="rgba(219,35,0,1)"/>
- <circle cx="33" cy="76" r="1" fill="rgba(218,32,0,1)"/>
- <circle cx="34" cy="76" r="1" fill="rgba(219,33,0,1)"/>
- <circle cx="35" cy="76" r="1" fill="rgba(220,33,0,1)"/>
- <circle cx="36" cy="76" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="37" cy="76" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="38" cy="76" r="1" fill="rgba(222,34,0,1)"/>
- <circle cx="39" cy="76" r="1" fill="rgba(222,34,0,1)"/>
- <circle cx="40" cy="76" r="1" fill="rgba(221,34,0,1)"/>
- <circle cx="41" cy="76" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="42" cy="76" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="43" cy="76" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="44" cy="76" r="1" fill="rgba(221,33,0,1)"/>
- <circle cx="45" cy="76" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="46" cy="76" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="47" cy="76" r="1" fill="rgba(219,32,0,1)"/>
- <circle cx="48" cy="76" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="49" cy="76" r="1" fill="rgba(219,30,0,1)"/>
- <circle cx="50" cy="76" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="51" cy="76" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="52" cy="76" r="1" fill="rgba(217,27,0,1)"/>
- <circle cx="53" cy="76" r="1" fill="rgba(216,26,0,1)"/>
- <circle cx="54" cy="76" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="55" cy="76" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="56" cy="76" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="57" cy="76" r="1" fill="rgba(211,23,0,1)"/>
- <circle cx="58" cy="76" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="59" cy="76" r="1" fill="rgba(209,21,0,1)"/>
- <circle cx="60" cy="76" r="1" fill="rgba(209,20,0,1)"/>
- <circle cx="61" cy="76" r="1" fill="rgba(207,20,0,1)"/>
- <circle cx="62" cy="76" r="1" fill="rgba(206,19,0,1)"/>
- <circle cx="63" cy="76" r="1" fill="rgba(202,17,0,1)"/>
- <circle cx="64" cy="76" r="1" fill="rgba(201,14,0,1)"/>
- <circle cx="65" cy="76" r="1" fill="rgba(166,16,1,1)"/>
- <circle cx="66" cy="76" r="1" fill="rgba(148,20,5,1)"/>
- <circle cx="67" cy="76" r="1" fill="rgba(195,13,1,1)"/>
- <circle cx="68" cy="76" r="1" fill="rgba(193,16,2,1)"/>
- <circle cx="69" cy="76" r="1" fill="rgba(199,20,3,1)"/>
- <circle cx="70" cy="76" r="1" fill="rgba(202,22,5,1)"/>
- <circle cx="71" cy="76" r="1" fill="rgba(205,25,7,1)"/>
- <circle cx="72" cy="76" r="1" fill="rgba(206,26,7,1)"/>
- <circle cx="73" cy="76" r="1" fill="rgba(205,27,7,1)"/>
- <circle cx="74" cy="76" r="1" fill="rgba(203,27,7,1)"/>
- <circle cx="75" cy="76" r="1" fill="rgba(203,26,7,1)"/>
- <circle cx="76" cy="76" r="1" fill="rgba(207,27,7,1)"/>
- <circle cx="77" cy="76" r="1" fill="rgba(207,28,7,1)"/>
- <circle cx="78" cy="76" r="1" fill="rgba(175,23,6,1)"/>
- <circle cx="79" cy="76" r="1" fill="rgba(131,17,3,1)"/>
- <circle cx="80" cy="76" r="1" fill="rgba(128,17,4,1)"/>
- <circle cx="81" cy="76" r="1" fill="rgba(188,33,9,1)"/>
- <circle cx="82" cy="76" r="1" fill="rgba(210,41,13,1)"/>
- <circle cx="83" cy="76" r="1" fill="rgba(207,44,14,1)"/>
- <circle cx="84" cy="76" r="1" fill="rgba(209,49,16,1)"/>
- <circle cx="85" cy="76" r="1" fill="rgba(211,52,18,1)"/>
- <circle cx="86" cy="76" r="1" fill="rgba(213,56,20,1)"/>
- <circle cx="87" cy="76" r="1" fill="rgba(214,61,22,1)"/>
- <circle cx="88" cy="76" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="89" cy="76" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="90" cy="76" r="1" fill="rgba(220,76,30,1)"/>
- <circle cx="91" cy="76" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="92" cy="76" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="93" cy="76" r="1" fill="rgba(226,93,40,1)"/>
- <circle cx="94" cy="76" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="95" cy="76" r="1" fill="rgba(230,105,48,1)"/>
- <circle cx="96" cy="76" r="1" fill="rgba(233,113,51,1)"/>
- <circle cx="97" cy="76" r="1" fill="rgba(236,118,56,1)"/>
- <circle cx="98" cy="76" r="1" fill="rgba(237,124,58,1)"/>
- <circle cx="99" cy="76" r="1" fill="rgba(238,127,61,1)"/>
- <circle cx="100" cy="76" r="1" fill="rgba(239,129,60,1)"/>
- <circle cx="101" cy="76" r="1" fill="rgba(244,126,56,1)"/>
- <circle cx="102" cy="76" r="1" fill="rgba(202,88,33,0.929412)"/>
- <circle cx="103" cy="76" r="1" fill="rgba(46,6,1,0.666667)"/>
- <circle cx="104" cy="76" r="1" fill="rgba(28,2,0,0.560784)"/>
- <circle cx="105" cy="76" r="1" fill="rgba(17,0,0,0.466667)"/>
- <circle cx="106" cy="76" r="1" fill="rgba(4,0,0,0.4)"/>
- <circle cx="107" cy="76" r="1" fill="rgba(0,0,0,0.345098)"/>
- <circle cx="108" cy="76" r="1" fill="rgba(0,0,0,0.266667)"/>
- <circle cx="109" cy="76" r="1" fill="rgba(0,0,0,0.172549)"/>
- <circle cx="110" cy="76" r="1" fill="rgba(0,0,0,0.0980392)"/>
- <circle cx="111" cy="76" r="1" fill="rgba(17,6,1,0.0588235)"/>
- <circle cx="112" cy="76" r="1" fill="rgba(31,13,6,0.0823529)"/>
- <circle cx="113" cy="76" r="1" fill="rgba(31,12,4,0.168627)"/>
- <circle cx="114" cy="76" r="1" fill="rgba(24,9,2,0.278431)"/>
- <circle cx="115" cy="76" r="1" fill="rgba(19,5,1,0.356863)"/>
- <circle cx="116" cy="76" r="1" fill="rgba(12,3,0,0.407843)"/>
- <circle cx="117" cy="76" r="1" fill="rgba(15,4,0,0.407843)"/>
- <circle cx="118" cy="76" r="1" fill="rgba(22,8,2,0.345098)"/>
- <circle cx="119" cy="76" r="1" fill="rgba(24,9,2,0.286275)"/>
- <circle cx="120" cy="76" r="1" fill="rgba(19,5,1,0.301961)"/>
- <circle cx="121" cy="76" r="1" fill="rgba(17,3,0,0.333333)"/>
- <circle cx="122" cy="76" r="1" fill="rgba(4,0,0,0.4)"/>
- <circle cx="123" cy="76" r="1" fill="rgba(4,0,0,0.380392)"/>
- <circle cx="124" cy="76" r="1" fill="rgba(15,3,0,0.352941)"/>
- <circle cx="125" cy="76" r="1" fill="rgba(22,6,1,0.4)"/>
- <circle cx="126" cy="76" r="1" fill="rgba(39,16,5,0.533333)"/>
- <circle cx="127" cy="76" r="1" fill="rgba(57,27,11,0.701961)"/>
- <circle cx="0" cy="77" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="77" r="1" fill="rgba(40,19,7,0)"/>
- <circle cx="19" cy="77" r="1" fill="rgba(37,21,8,0)"/>
- <circle cx="20" cy="77" r="1" fill="rgba(169,27,2,0)"/>
- <circle cx="21" cy="77" r="1" fill="rgba(217,29,0,0)"/>
- <circle cx="22" cy="77" r="1" fill="rgba(211,29,0,0)"/>
- <circle cx="23" cy="77" r="1" fill="rgba(211,29,0,0)"/>
- <circle cx="24" cy="77" r="1" fill="rgba(211,29,0,0)"/>
- <circle cx="25" cy="77" r="1" fill="rgba(211,29,0,0)"/>
- <circle cx="26" cy="77" r="1" fill="rgba(211,29,0,0)"/>
- <circle cx="27" cy="77" r="1" fill="rgba(211,29,0,0.34902)"/>
- <circle cx="28" cy="77" r="1" fill="rgba(214,33,0,1)"/>
- <circle cx="29" cy="77" r="1" fill="rgba(219,44,1,1)"/>
- <circle cx="30" cy="77" r="1" fill="rgba(221,48,1,1)"/>
- <circle cx="31" cy="77" r="1" fill="rgba(220,43,0,1)"/>
- <circle cx="32" cy="77" r="1" fill="rgba(217,34,0,1)"/>
- <circle cx="33" cy="77" r="1" fill="rgba(217,32,0,1)"/>
- <circle cx="34" cy="77" r="1" fill="rgba(217,31,0,1)"/>
- <circle cx="35" cy="77" r="1" fill="rgba(219,31,0,1)"/>
- <circle cx="36" cy="77" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="37" cy="77" r="1" fill="rgba(221,32,0,1)"/>
- <circle cx="38" cy="77" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="39" cy="77" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="40" cy="77" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="41" cy="77" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="42" cy="77" r="1" fill="rgba(220,31,0,1)"/>
- <circle cx="43" cy="77" r="1" fill="rgba(220,32,0,1)"/>
- <circle cx="44" cy="77" r="1" fill="rgba(219,32,0,1)"/>
- <circle cx="45" cy="77" r="1" fill="rgba(218,31,0,1)"/>
- <circle cx="46" cy="77" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="47" cy="77" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="48" cy="77" r="1" fill="rgba(218,28,0,1)"/>
- <circle cx="49" cy="77" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="50" cy="77" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="51" cy="77" r="1" fill="rgba(216,26,0,1)"/>
- <circle cx="52" cy="77" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="53" cy="77" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="54" cy="77" r="1" fill="rgba(212,24,0,1)"/>
- <circle cx="55" cy="77" r="1" fill="rgba(212,23,0,1)"/>
- <circle cx="56" cy="77" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="57" cy="77" r="1" fill="rgba(209,22,0,1)"/>
- <circle cx="58" cy="77" r="1" fill="rgba(209,21,0,1)"/>
- <circle cx="59" cy="77" r="1" fill="rgba(208,20,0,1)"/>
- <circle cx="60" cy="77" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="61" cy="77" r="1" fill="rgba(206,18,0,1)"/>
- <circle cx="62" cy="77" r="1" fill="rgba(203,18,0,1)"/>
- <circle cx="63" cy="77" r="1" fill="rgba(201,16,0,1)"/>
- <circle cx="64" cy="77" r="1" fill="rgba(200,13,0,1)"/>
- <circle cx="65" cy="77" r="1" fill="rgba(165,14,1,1)"/>
- <circle cx="66" cy="77" r="1" fill="rgba(146,18,4,1)"/>
- <circle cx="67" cy="77" r="1" fill="rgba(192,12,1,1)"/>
- <circle cx="68" cy="77" r="1" fill="rgba(192,15,2,1)"/>
- <circle cx="69" cy="77" r="1" fill="rgba(197,18,3,1)"/>
- <circle cx="70" cy="77" r="1" fill="rgba(201,21,5,1)"/>
- <circle cx="71" cy="77" r="1" fill="rgba(204,26,7,1)"/>
- <circle cx="72" cy="77" r="1" fill="rgba(205,28,8,1)"/>
- <circle cx="73" cy="77" r="1" fill="rgba(205,28,8,1)"/>
- <circle cx="74" cy="77" r="1" fill="rgba(204,28,7,1)"/>
- <circle cx="75" cy="77" r="1" fill="rgba(210,29,8,1)"/>
- <circle cx="76" cy="77" r="1" fill="rgba(180,23,6,1)"/>
- <circle cx="77" cy="77" r="1" fill="rgba(92,9,1,1)"/>
- <circle cx="78" cy="77" r="1" fill="rgba(15,1,0,1)"/>
- <circle cx="79" cy="77" r="1" fill="black"/>
- <circle cx="80" cy="77" r="1" fill="black"/>
- <circle cx="81" cy="77" r="1" fill="rgba(75,11,2,1)"/>
- <circle cx="82" cy="77" r="1" fill="rgba(204,42,13,1)"/>
- <circle cx="83" cy="77" r="1" fill="rgba(210,47,15,1)"/>
- <circle cx="84" cy="77" r="1" fill="rgba(210,50,17,1)"/>
- <circle cx="85" cy="77" r="1" fill="rgba(212,54,19,1)"/>
- <circle cx="86" cy="77" r="1" fill="rgba(214,59,20,1)"/>
- <circle cx="87" cy="77" r="1" fill="rgba(215,63,22,1)"/>
- <circle cx="88" cy="77" r="1" fill="rgba(216,68,24,1)"/>
- <circle cx="89" cy="77" r="1" fill="rgba(218,73,27,1)"/>
- <circle cx="90" cy="77" r="1" fill="rgba(220,78,30,1)"/>
- <circle cx="91" cy="77" r="1" fill="rgba(222,84,33,1)"/>
- <circle cx="92" cy="77" r="1" fill="rgba(224,90,37,1)"/>
- <circle cx="93" cy="77" r="1" fill="rgba(227,96,42,1)"/>
- <circle cx="94" cy="77" r="1" fill="rgba(229,103,45,1)"/>
- <circle cx="95" cy="77" r="1" fill="rgba(231,108,49,1)"/>
- <circle cx="96" cy="77" r="1" fill="rgba(233,115,54,1)"/>
- <circle cx="97" cy="77" r="1" fill="rgba(236,121,57,1)"/>
- <circle cx="98" cy="77" r="1" fill="rgba(237,126,60,1)"/>
- <circle cx="99" cy="77" r="1" fill="rgba(239,128,62,1)"/>
- <circle cx="100" cy="77" r="1" fill="rgba(239,129,59,1)"/>
- <circle cx="101" cy="77" r="1" fill="rgba(247,124,54,1)"/>
- <circle cx="102" cy="77" r="1" fill="rgba(166,64,21,0.87451)"/>
- <circle cx="103" cy="77" r="1" fill="rgba(28,0,0,0.639216)"/>
- <circle cx="104" cy="77" r="1" fill="rgba(29,2,0,0.545098)"/>
- <circle cx="105" cy="77" r="1" fill="rgba(17,0,0,0.45098)"/>
- <circle cx="106" cy="77" r="1" fill="rgba(4,0,0,0.380392)"/>
- <circle cx="107" cy="77" r="1" fill="rgba(0,0,0,0.317647)"/>
- <circle cx="108" cy="77" r="1" fill="rgba(0,0,0,0.239216)"/>
- <circle cx="109" cy="77" r="1" fill="rgba(0,0,0,0.14902)"/>
- <circle cx="110" cy="77" r="1" fill="rgba(0,0,0,0.0705882)"/>
- <circle cx="111" cy="77" r="1" fill="rgba(0,0,0,0.0235294)"/>
- <circle cx="112" cy="77" r="1" fill="rgba(19,7,3,0.00784314)"/>
- <circle cx="113" cy="77" r="1" fill="rgba(33,16,4,0.0117647)"/>
- <circle cx="114" cy="77" r="1" fill="rgba(43,21,7,0.027451)"/>
- <circle cx="115" cy="77" r="1" fill="rgba(39,17,6,0.054902)"/>
- <circle cx="116" cy="77" r="1" fill="rgba(36,15,5,0.0901961)"/>
- <circle cx="117" cy="77" r="1" fill="rgba(42,19,7,0.0784314)"/>
- <circle cx="118" cy="77" r="1" fill="rgba(39,18,6,0.0196078)"/>
- <circle cx="119" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="77" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="77" r="1" fill="rgba(36,15,5,0.0313725)"/>
- <circle cx="122" cy="77" r="1" fill="rgba(33,13,4,0.0980392)"/>
- <circle cx="123" cy="77" r="1" fill="rgba(24,7,2,0.0784314)"/>
- <circle cx="124" cy="77" r="1" fill="rgba(26,7,2,0.0431373)"/>
- <circle cx="125" cy="77" r="1" fill="rgba(24,7,2,0.0313725)"/>
- <circle cx="126" cy="77" r="1" fill="rgba(254,254,253,0)"/>
- <circle cx="127" cy="77" r="1" fill="rgba(253,253,252,0)"/>
- <circle cx="0" cy="78" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="78" r="1" fill="rgba(24,19,8,0)"/>
- <circle cx="19" cy="78" r="1" fill="rgba(97,21,5,0)"/>
- <circle cx="20" cy="78" r="1" fill="rgba(217,27,0,0)"/>
- <circle cx="21" cy="78" r="1" fill="rgba(211,27,0,0)"/>
- <circle cx="22" cy="78" r="1" fill="rgba(210,27,0,0)"/>
- <circle cx="23" cy="78" r="1" fill="rgba(210,27,0,0)"/>
- <circle cx="24" cy="78" r="1" fill="rgba(210,27,0,0)"/>
- <circle cx="25" cy="78" r="1" fill="rgba(210,27,0,0)"/>
- <circle cx="26" cy="78" r="1" fill="rgba(210,27,0,0)"/>
- <circle cx="27" cy="78" r="1" fill="rgba(210,27,0,0.156863)"/>
- <circle cx="28" cy="78" r="1" fill="rgba(212,31,0,0.976471)"/>
- <circle cx="29" cy="78" r="1" fill="rgba(217,40,0,1)"/>
- <circle cx="30" cy="78" r="1" fill="rgba(220,45,1,1)"/>
- <circle cx="31" cy="78" r="1" fill="rgba(219,43,1,1)"/>
- <circle cx="32" cy="78" r="1" fill="rgba(217,35,0,1)"/>
- <circle cx="33" cy="78" r="1" fill="rgba(215,30,0,1)"/>
- <circle cx="34" cy="78" r="1" fill="rgba(216,30,0,1)"/>
- <circle cx="35" cy="78" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="36" cy="78" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="37" cy="78" r="1" fill="rgba(218,31,0,1)"/>
- <circle cx="38" cy="78" r="1" fill="rgba(218,31,0,1)"/>
- <circle cx="39" cy="78" r="1" fill="rgba(218,30,0,1)"/>
- <circle cx="40" cy="78" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="41" cy="78" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="42" cy="78" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="43" cy="78" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="44" cy="78" r="1" fill="rgba(217,30,0,1)"/>
- <circle cx="45" cy="78" r="1" fill="rgba(217,29,0,1)"/>
- <circle cx="46" cy="78" r="1" fill="rgba(216,28,0,1)"/>
- <circle cx="47" cy="78" r="1" fill="rgba(216,27,0,1)"/>
- <circle cx="48" cy="78" r="1" fill="rgba(216,27,0,1)"/>
- <circle cx="49" cy="78" r="1" fill="rgba(215,26,0,1)"/>
- <circle cx="50" cy="78" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="51" cy="78" r="1" fill="rgba(214,25,0,1)"/>
- <circle cx="52" cy="78" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="53" cy="78" r="1" fill="rgba(211,23,0,1)"/>
- <circle cx="54" cy="78" r="1" fill="rgba(211,23,0,1)"/>
- <circle cx="55" cy="78" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="56" cy="78" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="57" cy="78" r="1" fill="rgba(208,20,0,1)"/>
- <circle cx="58" cy="78" r="1" fill="rgba(207,20,0,1)"/>
- <circle cx="59" cy="78" r="1" fill="rgba(207,18,0,1)"/>
- <circle cx="60" cy="78" r="1" fill="rgba(205,18,0,1)"/>
- <circle cx="61" cy="78" r="1" fill="rgba(204,17,0,1)"/>
- <circle cx="62" cy="78" r="1" fill="rgba(203,17,1,1)"/>
- <circle cx="63" cy="78" r="1" fill="rgba(200,15,1,1)"/>
- <circle cx="64" cy="78" r="1" fill="rgba(199,12,0,1)"/>
- <circle cx="65" cy="78" r="1" fill="rgba(163,13,0,1)"/>
- <circle cx="66" cy="78" r="1" fill="rgba(144,16,4,1)"/>
- <circle cx="67" cy="78" r="1" fill="rgba(191,11,1,1)"/>
- <circle cx="68" cy="78" r="1" fill="rgba(190,14,2,1)"/>
- <circle cx="69" cy="78" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="70" cy="78" r="1" fill="rgba(200,21,5,1)"/>
- <circle cx="71" cy="78" r="1" fill="rgba(204,26,7,1)"/>
- <circle cx="72" cy="78" r="1" fill="rgba(204,28,8,1)"/>
- <circle cx="73" cy="78" r="1" fill="rgba(205,28,8,1)"/>
- <circle cx="74" cy="78" r="1" fill="rgba(211,30,8,1)"/>
- <circle cx="75" cy="78" r="1" fill="rgba(151,19,4,1)"/>
- <circle cx="76" cy="78" r="1" fill="rgba(31,1,0,1)"/>
- <circle cx="77" cy="78" r="1" fill="black"/>
- <circle cx="78" cy="78" r="1" fill="black"/>
- <circle cx="79" cy="78" r="1" fill="rgba(15,2,0,1)"/>
- <circle cx="80" cy="78" r="1" fill="rgba(26,7,1,1)"/>
- <circle cx="81" cy="78" r="1" fill="rgba(26,11,3,1)"/>
- <circle cx="82" cy="78" r="1" fill="rgba(157,34,10,1)"/>
- <circle cx="83" cy="78" r="1" fill="rgba(216,50,16,1)"/>
- <circle cx="84" cy="78" r="1" fill="rgba(211,51,18,1)"/>
- <circle cx="85" cy="78" r="1" fill="rgba(213,55,19,1)"/>
- <circle cx="86" cy="78" r="1" fill="rgba(214,60,21,1)"/>
- <circle cx="87" cy="78" r="1" fill="rgba(215,66,23,1)"/>
- <circle cx="88" cy="78" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="89" cy="78" r="1" fill="rgba(219,76,30,1)"/>
- <circle cx="90" cy="78" r="1" fill="rgba(221,81,33,1)"/>
- <circle cx="91" cy="78" r="1" fill="rgba(223,86,36,1)"/>
- <circle cx="92" cy="78" r="1" fill="rgba(225,93,38,1)"/>
- <circle cx="93" cy="78" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="94" cy="78" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="95" cy="78" r="1" fill="rgba(233,111,51,1)"/>
- <circle cx="96" cy="78" r="1" fill="rgba(235,118,56,1)"/>
- <circle cx="97" cy="78" r="1" fill="rgba(236,124,59,1)"/>
- <circle cx="98" cy="78" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="99" cy="78" r="1" fill="rgba(240,130,63,1)"/>
- <circle cx="100" cy="78" r="1" fill="rgba(240,126,58,1)"/>
- <circle cx="101" cy="78" r="1" fill="rgba(241,115,48,1)"/>
- <circle cx="102" cy="78" r="1" fill="rgba(131,43,13,0.811765)"/>
- <circle cx="103" cy="78" r="1" fill="rgba(22,0,0,0.619608)"/>
- <circle cx="104" cy="78" r="1" fill="rgba(29,2,0,0.529412)"/>
- <circle cx="105" cy="78" r="1" fill="rgba(15,0,0,0.431373)"/>
- <circle cx="106" cy="78" r="1" fill="rgba(4,0,0,0.356863)"/>
- <circle cx="107" cy="78" r="1" fill="rgba(0,0,0,0.290196)"/>
- <circle cx="108" cy="78" r="1" fill="rgba(0,0,0,0.211765)"/>
- <circle cx="109" cy="78" r="1" fill="rgba(0,0,0,0.12549)"/>
- <circle cx="110" cy="78" r="1" fill="rgba(0,0,0,0.054902)"/>
- <circle cx="111" cy="78" r="1" fill="rgba(0,0,0,0.0117647)"/>
- <circle cx="112" cy="78" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="113" cy="78" r="1" fill="rgba(26,13,2,0)"/>
- <circle cx="114" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="78" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="78" r="1" fill="rgba(254,253,253,0)"/>
- <circle cx="0" cy="79" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="79" r="1" fill="rgba(46,20,7,0)"/>
- <circle cx="19" cy="79" r="1" fill="rgba(175,24,1,0)"/>
- <circle cx="20" cy="79" r="1" fill="rgba(216,27,0,0)"/>
- <circle cx="21" cy="79" r="1" fill="rgba(209,26,0,0)"/>
- <circle cx="22" cy="79" r="1" fill="rgba(210,26,0,0)"/>
- <circle cx="23" cy="79" r="1" fill="rgba(210,26,0,0)"/>
- <circle cx="24" cy="79" r="1" fill="rgba(210,26,0,0)"/>
- <circle cx="25" cy="79" r="1" fill="rgba(210,26,0,0)"/>
- <circle cx="26" cy="79" r="1" fill="rgba(210,26,0,0)"/>
- <circle cx="27" cy="79" r="1" fill="rgba(210,26,0,0.0235294)"/>
- <circle cx="28" cy="79" r="1" fill="rgba(210,28,0,0.835294)"/>
- <circle cx="29" cy="79" r="1" fill="rgba(214,36,0,1)"/>
- <circle cx="30" cy="79" r="1" fill="rgba(217,42,1,1)"/>
- <circle cx="31" cy="79" r="1" fill="rgba(218,43,1,1)"/>
- <circle cx="32" cy="79" r="1" fill="rgba(216,35,0,1)"/>
- <circle cx="33" cy="79" r="1" fill="rgba(213,29,0,1)"/>
- <circle cx="34" cy="79" r="1" fill="rgba(214,28,0,1)"/>
- <circle cx="35" cy="79" r="1" fill="rgba(214,28,0,1)"/>
- <circle cx="36" cy="79" r="1" fill="rgba(215,28,0,1)"/>
- <circle cx="37" cy="79" r="1" fill="rgba(215,29,0,1)"/>
- <circle cx="38" cy="79" r="1" fill="rgba(216,29,0,1)"/>
- <circle cx="39" cy="79" r="1" fill="rgba(216,28,0,1)"/>
- <circle cx="40" cy="79" r="1" fill="rgba(216,29,0,1)"/>
- <circle cx="41" cy="79" r="1" fill="rgba(215,27,0,1)"/>
- <circle cx="42" cy="79" r="1" fill="rgba(216,28,0,1)"/>
- <circle cx="43" cy="79" r="1" fill="rgba(217,28,0,1)"/>
- <circle cx="44" cy="79" r="1" fill="rgba(221,28,0,1)"/>
- <circle cx="45" cy="79" r="1" fill="rgba(222,28,0,1)"/>
- <circle cx="46" cy="79" r="1" fill="rgba(218,27,0,1)"/>
- <circle cx="47" cy="79" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="48" cy="79" r="1" fill="rgba(213,25,0,1)"/>
- <circle cx="49" cy="79" r="1" fill="rgba(213,25,0,1)"/>
- <circle cx="50" cy="79" r="1" fill="rgba(213,24,0,1)"/>
- <circle cx="51" cy="79" r="1" fill="rgba(211,23,0,1)"/>
- <circle cx="52" cy="79" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="53" cy="79" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="54" cy="79" r="1" fill="rgba(210,21,0,1)"/>
- <circle cx="55" cy="79" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="56" cy="79" r="1" fill="rgba(207,20,0,1)"/>
- <circle cx="57" cy="79" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="58" cy="79" r="1" fill="rgba(206,18,0,1)"/>
- <circle cx="59" cy="79" r="1" fill="rgba(205,17,0,1)"/>
- <circle cx="60" cy="79" r="1" fill="rgba(204,17,0,1)"/>
- <circle cx="61" cy="79" r="1" fill="rgba(203,17,1,1)"/>
- <circle cx="62" cy="79" r="1" fill="rgba(201,15,1,1)"/>
- <circle cx="63" cy="79" r="1" fill="rgba(199,14,1,1)"/>
- <circle cx="64" cy="79" r="1" fill="rgba(198,11,0,1)"/>
- <circle cx="65" cy="79" r="1" fill="rgba(162,12,0,1)"/>
- <circle cx="66" cy="79" r="1" fill="rgba(141,15,3,1)"/>
- <circle cx="67" cy="79" r="1" fill="rgba(189,10,1,1)"/>
- <circle cx="68" cy="79" r="1" fill="rgba(188,12,2,1)"/>
- <circle cx="69" cy="79" r="1" fill="rgba(194,16,3,1)"/>
- <circle cx="70" cy="79" r="1" fill="rgba(200,20,5,1)"/>
- <circle cx="71" cy="79" r="1" fill="rgba(202,25,7,1)"/>
- <circle cx="72" cy="79" r="1" fill="rgba(203,28,7,1)"/>
- <circle cx="73" cy="79" r="1" fill="rgba(210,30,8,1)"/>
- <circle cx="74" cy="79" r="1" fill="rgba(160,20,5,1)"/>
- <circle cx="75" cy="79" r="1" fill="rgba(15,0,0,1)"/>
- <circle cx="76" cy="79" r="1" fill="black"/>
- <circle cx="77" cy="79" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="78" cy="79" r="1" fill="rgba(22,4,0,1)"/>
- <circle cx="79" cy="79" r="1" fill="rgba(37,11,3,1)"/>
- <circle cx="80" cy="79" r="1" fill="rgba(50,16,5,1)"/>
- <circle cx="81" cy="79" r="1" fill="rgba(49,20,7,1)"/>
- <circle cx="82" cy="79" r="1" fill="rgba(119,33,11,1)"/>
- <circle cx="83" cy="79" r="1" fill="rgba(212,51,17,1)"/>
- <circle cx="84" cy="79" r="1" fill="rgba(213,54,18,1)"/>
- <circle cx="85" cy="79" r="1" fill="rgba(214,58,20,1)"/>
- <circle cx="86" cy="79" r="1" fill="rgba(215,62,22,1)"/>
- <circle cx="87" cy="79" r="1" fill="rgba(216,68,25,1)"/>
- <circle cx="88" cy="79" r="1" fill="rgba(218,73,28,1)"/>
- <circle cx="89" cy="79" r="1" fill="rgba(221,78,31,1)"/>
- <circle cx="90" cy="79" r="1" fill="rgba(222,84,34,1)"/>
- <circle cx="91" cy="79" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="92" cy="79" r="1" fill="rgba(227,95,41,1)"/>
- <circle cx="93" cy="79" r="1" fill="rgba(228,101,43,1)"/>
- <circle cx="94" cy="79" r="1" fill="rgba(230,107,48,1)"/>
- <circle cx="95" cy="79" r="1" fill="rgba(233,114,53,1)"/>
- <circle cx="96" cy="79" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="97" cy="79" r="1" fill="rgba(237,126,60,1)"/>
- <circle cx="98" cy="79" r="1" fill="rgba(239,130,63,1)"/>
- <circle cx="99" cy="79" r="1" fill="rgba(240,132,62,1)"/>
- <circle cx="100" cy="79" r="1" fill="rgba(241,124,56,1)"/>
- <circle cx="101" cy="79" r="1" fill="rgba(230,104,42,0.992157)"/>
- <circle cx="102" cy="79" r="1" fill="rgba(86,21,5,0.741176)"/>
- <circle cx="103" cy="79" r="1" fill="rgba(31,2,0,0.611765)"/>
- <circle cx="104" cy="79" r="1" fill="rgba(28,2,0,0.509804)"/>
- <circle cx="105" cy="79" r="1" fill="rgba(15,0,0,0.411765)"/>
- <circle cx="106" cy="79" r="1" fill="rgba(4,0,0,0.337255)"/>
- <circle cx="107" cy="79" r="1" fill="rgba(0,0,0,0.270588)"/>
- <circle cx="108" cy="79" r="1" fill="rgba(0,0,0,0.188235)"/>
- <circle cx="109" cy="79" r="1" fill="rgba(0,0,0,0.105882)"/>
- <circle cx="110" cy="79" r="1" fill="rgba(0,0,0,0.0431373)"/>
- <circle cx="111" cy="79" r="1" fill="rgba(0,0,0,0.00784314)"/>
- <circle cx="112" cy="79" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="79" r="1" fill="rgba(22,9,1,0)"/>
- <circle cx="114" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="79" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="80" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="80" r="1" fill="rgba(128,22,4,0)"/>
- <circle cx="19" cy="80" r="1" fill="rgba(220,25,0,0)"/>
- <circle cx="20" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="21" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="22" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="23" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="24" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="25" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="26" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="27" cy="80" r="1" fill="rgba(207,25,0,0)"/>
- <circle cx="28" cy="80" r="1" fill="rgba(207,25,0,0.603922)"/>
- <circle cx="29" cy="80" r="1" fill="rgba(210,32,1,1)"/>
- <circle cx="30" cy="80" r="1" fill="rgba(215,39,1,1)"/>
- <circle cx="31" cy="80" r="1" fill="rgba(217,42,1,1)"/>
- <circle cx="32" cy="80" r="1" fill="rgba(215,35,1,1)"/>
- <circle cx="33" cy="80" r="1" fill="rgba(212,28,0,1)"/>
- <circle cx="34" cy="80" r="1" fill="rgba(211,26,0,1)"/>
- <circle cx="35" cy="80" r="1" fill="rgba(212,27,0,1)"/>
- <circle cx="36" cy="80" r="1" fill="rgba(214,27,0,1)"/>
- <circle cx="37" cy="80" r="1" fill="rgba(214,27,0,1)"/>
- <circle cx="38" cy="80" r="1" fill="rgba(214,27,0,1)"/>
- <circle cx="39" cy="80" r="1" fill="rgba(214,27,0,1)"/>
- <circle cx="40" cy="80" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="41" cy="80" r="1" fill="rgba(214,26,0,1)"/>
- <circle cx="42" cy="80" r="1" fill="rgba(218,25,0,1)"/>
- <circle cx="43" cy="80" r="1" fill="rgba(207,25,0,1)"/>
- <circle cx="44" cy="80" r="1" fill="rgba(173,25,2,1)"/>
- <circle cx="45" cy="80" r="1" fill="rgba(161,24,2,1)"/>
- <circle cx="46" cy="80" r="1" fill="rgba(187,24,0,1)"/>
- <circle cx="47" cy="80" r="1" fill="rgba(215,24,0,1)"/>
- <circle cx="48" cy="80" r="1" fill="rgba(214,24,0,1)"/>
- <circle cx="49" cy="80" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="50" cy="80" r="1" fill="rgba(210,23,0,1)"/>
- <circle cx="51" cy="80" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="52" cy="80" r="1" fill="rgba(209,21,0,1)"/>
- <circle cx="53" cy="80" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="54" cy="80" r="1" fill="rgba(208,20,0,1)"/>
- <circle cx="55" cy="80" r="1" fill="rgba(207,20,0,1)"/>
- <circle cx="56" cy="80" r="1" fill="rgba(207,18,0,1)"/>
- <circle cx="57" cy="80" r="1" fill="rgba(205,18,0,1)"/>
- <circle cx="58" cy="80" r="1" fill="rgba(204,17,0,1)"/>
- <circle cx="59" cy="80" r="1" fill="rgba(203,17,0,1)"/>
- <circle cx="60" cy="80" r="1" fill="rgba(202,16,0,1)"/>
- <circle cx="61" cy="80" r="1" fill="rgba(201,15,1,1)"/>
- <circle cx="62" cy="80" r="1" fill="rgba(200,15,1,1)"/>
- <circle cx="63" cy="80" r="1" fill="rgba(197,13,1,1)"/>
- <circle cx="64" cy="80" r="1" fill="rgba(197,11,0,1)"/>
- <circle cx="65" cy="80" r="1" fill="rgba(160,11,0,1)"/>
- <circle cx="66" cy="80" r="1" fill="rgba(139,13,3,1)"/>
- <circle cx="67" cy="80" r="1" fill="rgba(188,10,1,1)"/>
- <circle cx="68" cy="80" r="1" fill="rgba(188,12,2,1)"/>
- <circle cx="69" cy="80" r="1" fill="rgba(193,17,3,1)"/>
- <circle cx="70" cy="80" r="1" fill="rgba(198,20,5,1)"/>
- <circle cx="71" cy="80" r="1" fill="rgba(201,24,6,1)"/>
- <circle cx="72" cy="80" r="1" fill="rgba(205,27,7,1)"/>
- <circle cx="73" cy="80" r="1" fill="rgba(200,27,7,1)"/>
- <circle cx="74" cy="80" r="1" fill="rgba(58,5,0,1)"/>
- <circle cx="75" cy="80" r="1" fill="black"/>
- <circle cx="76" cy="80" r="1" fill="rgba(7,0,0,1)"/>
- <circle cx="77" cy="80" r="1" fill="rgba(24,6,1,1)"/>
- <circle cx="78" cy="80" r="1" fill="rgba(42,13,3,1)"/>
- <circle cx="79" cy="80" r="1" fill="rgba(54,19,6,1)"/>
- <circle cx="80" cy="80" r="1" fill="rgba(65,25,9,1)"/>
- <circle cx="81" cy="80" r="1" fill="rgba(70,29,12,1)"/>
- <circle cx="82" cy="80" r="1" fill="rgba(110,37,14,1)"/>
- <circle cx="83" cy="80" r="1" fill="rgba(208,51,18,1)"/>
- <circle cx="84" cy="80" r="1" fill="rgba(214,57,20,1)"/>
- <circle cx="85" cy="80" r="1" fill="rgba(214,61,21,1)"/>
- <circle cx="86" cy="80" r="1" fill="rgba(216,66,23,1)"/>
- <circle cx="87" cy="80" r="1" fill="rgba(217,70,27,1)"/>
- <circle cx="88" cy="80" r="1" fill="rgba(219,75,30,1)"/>
- <circle cx="89" cy="80" r="1" fill="rgba(221,80,33,1)"/>
- <circle cx="90" cy="80" r="1" fill="rgba(222,87,36,1)"/>
- <circle cx="91" cy="80" r="1" fill="rgba(224,92,39,1)"/>
- <circle cx="92" cy="80" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="93" cy="80" r="1" fill="rgba(229,104,46,1)"/>
- <circle cx="94" cy="80" r="1" fill="rgba(233,110,51,1)"/>
- <circle cx="95" cy="80" r="1" fill="rgba(234,117,55,1)"/>
- <circle cx="96" cy="80" r="1" fill="rgba(236,124,57,1)"/>
- <circle cx="97" cy="80" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="98" cy="80" r="1" fill="rgba(240,132,63,1)"/>
- <circle cx="99" cy="80" r="1" fill="rgba(240,131,60,1)"/>
- <circle cx="100" cy="80" r="1" fill="rgba(241,120,52,1)"/>
- <circle cx="101" cy="80" r="1" fill="rgba(207,86,31,0.94902)"/>
- <circle cx="102" cy="80" r="1" fill="rgba(51,7,1,0.694118)"/>
- <circle cx="103" cy="80" r="1" fill="rgba(34,3,0,0.596078)"/>
- <circle cx="104" cy="80" r="1" fill="rgba(26,2,0,0.486275)"/>
- <circle cx="105" cy="80" r="1" fill="rgba(15,0,0,0.392157)"/>
- <circle cx="106" cy="80" r="1" fill="rgba(7,0,0,0.317647)"/>
- <circle cx="107" cy="80" r="1" fill="rgba(0,0,0,0.243137)"/>
- <circle cx="108" cy="80" r="1" fill="rgba(0,0,0,0.164706)"/>
- <circle cx="109" cy="80" r="1" fill="rgba(0,0,0,0.0901961)"/>
- <circle cx="110" cy="80" r="1" fill="rgba(0,0,0,0.0313725)"/>
- <circle cx="111" cy="80" r="1" fill="rgba(4,1,0,0.00392157)"/>
- <circle cx="112" cy="80" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="113" cy="80" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="80" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="81" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="81" r="1" fill="rgba(169,23,2,0)"/>
- <circle cx="19" cy="81" r="1" fill="rgba(210,24,0,0)"/>
- <circle cx="20" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="21" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="22" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="23" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="24" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="25" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="26" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="27" cy="81" r="1" fill="rgba(205,24,0,0)"/>
- <circle cx="28" cy="81" r="1" fill="rgba(205,24,0,0.333333)"/>
- <circle cx="29" cy="81" r="1" fill="rgba(209,29,1,1)"/>
- <circle cx="30" cy="81" r="1" fill="rgba(213,37,1,1)"/>
- <circle cx="31" cy="81" r="1" fill="rgba(215,40,1,1)"/>
- <circle cx="32" cy="81" r="1" fill="rgba(213,34,1,1)"/>
- <circle cx="33" cy="81" r="1" fill="rgba(210,27,0,1)"/>
- <circle cx="34" cy="81" r="1" fill="rgba(210,25,0,1)"/>
- <circle cx="35" cy="81" r="1" fill="rgba(210,25,0,1)"/>
- <circle cx="36" cy="81" r="1" fill="rgba(211,25,0,1)"/>
- <circle cx="37" cy="81" r="1" fill="rgba(212,25,0,1)"/>
- <circle cx="38" cy="81" r="1" fill="rgba(212,25,0,1)"/>
- <circle cx="39" cy="81" r="1" fill="rgba(212,25,0,1)"/>
- <circle cx="40" cy="81" r="1" fill="rgba(212,25,0,1)"/>
- <circle cx="41" cy="81" r="1" fill="rgba(216,24,0,1)"/>
- <circle cx="42" cy="81" r="1" fill="rgba(174,26,3,1)"/>
- <circle cx="43" cy="81" r="1" fill="rgba(93,27,9,1)"/>
- <circle cx="44" cy="81" r="1" fill="rgba(59,24,9,1)"/>
- <circle cx="45" cy="81" r="1" fill="rgba(50,21,8,1)"/>
- <circle cx="46" cy="81" r="1" fill="rgba(54,18,6,1)"/>
- <circle cx="47" cy="81" r="1" fill="rgba(116,18,3,1)"/>
- <circle cx="48" cy="81" r="1" fill="rgba(197,21,0,1)"/>
- <circle cx="49" cy="81" r="1" fill="rgba(214,22,0,1)"/>
- <circle cx="50" cy="81" r="1" fill="rgba(209,21,0,1)"/>
- <circle cx="51" cy="81" r="1" fill="rgba(208,20,0,1)"/>
- <circle cx="52" cy="81" r="1" fill="rgba(208,20,0,1)"/>
- <circle cx="53" cy="81" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="54" cy="81" r="1" fill="rgba(206,19,0,1)"/>
- <circle cx="55" cy="81" r="1" fill="rgba(206,18,0,1)"/>
- <circle cx="56" cy="81" r="1" fill="rgba(205,17,0,1)"/>
- <circle cx="57" cy="81" r="1" fill="rgba(203,17,0,1)"/>
- <circle cx="58" cy="81" r="1" fill="rgba(203,17,1,1)"/>
- <circle cx="59" cy="81" r="1" fill="rgba(202,16,1,1)"/>
- <circle cx="60" cy="81" r="1" fill="rgba(201,15,1,1)"/>
- <circle cx="61" cy="81" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="62" cy="81" r="1" fill="rgba(199,14,1,1)"/>
- <circle cx="63" cy="81" r="1" fill="rgba(196,13,1,1)"/>
- <circle cx="64" cy="81" r="1" fill="rgba(196,10,1,1)"/>
- <circle cx="65" cy="81" r="1" fill="rgba(159,10,0,1)"/>
- <circle cx="66" cy="81" r="1" fill="rgba(137,11,2,1)"/>
- <circle cx="67" cy="81" r="1" fill="rgba(188,10,1,1)"/>
- <circle cx="68" cy="81" r="1" fill="rgba(187,13,2,1)"/>
- <circle cx="69" cy="81" r="1" fill="rgba(192,17,3,1)"/>
- <circle cx="70" cy="81" r="1" fill="rgba(197,20,5,1)"/>
- <circle cx="71" cy="81" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="72" cy="81" r="1" fill="rgba(207,27,7,1)"/>
- <circle cx="73" cy="81" r="1" fill="rgba(178,23,5,1)"/>
- <circle cx="74" cy="81" r="1" fill="rgba(10,1,0,1)"/>
- <circle cx="75" cy="81" r="1" fill="black"/>
- <circle cx="76" cy="81" r="1" fill="rgba(24,6,1,1)"/>
- <circle cx="77" cy="81" r="1" fill="rgba(43,14,4,1)"/>
- <circle cx="78" cy="81" r="1" fill="rgba(58,20,7,1)"/>
- <circle cx="79" cy="81" r="1" fill="rgba(69,27,10,1)"/>
- <circle cx="80" cy="81" r="1" fill="rgba(81,33,13,1)"/>
- <circle cx="81" cy="81" r="1" fill="rgba(86,38,17,1)"/>
- <circle cx="82" cy="81" r="1" fill="rgba(113,44,20,1)"/>
- <circle cx="83" cy="81" r="1" fill="rgba(207,54,19,1)"/>
- <circle cx="84" cy="81" r="1" fill="rgba(214,59,20,1)"/>
- <circle cx="85" cy="81" r="1" fill="rgba(215,63,23,1)"/>
- <circle cx="86" cy="81" r="1" fill="rgba(216,69,25,1)"/>
- <circle cx="87" cy="81" r="1" fill="rgba(218,73,28,1)"/>
- <circle cx="88" cy="81" r="1" fill="rgba(221,78,31,1)"/>
- <circle cx="89" cy="81" r="1" fill="rgba(222,84,34,1)"/>
- <circle cx="90" cy="81" r="1" fill="rgba(223,89,37,1)"/>
- <circle cx="91" cy="81" r="1" fill="rgba(227,95,41,1)"/>
- <circle cx="92" cy="81" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="93" cy="81" r="1" fill="rgba(231,107,48,1)"/>
- <circle cx="94" cy="81" r="1" fill="rgba(233,114,53,1)"/>
- <circle cx="95" cy="81" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="96" cy="81" r="1" fill="rgba(237,125,60,1)"/>
- <circle cx="97" cy="81" r="1" fill="rgba(239,131,64,1)"/>
- <circle cx="98" cy="81" r="1" fill="rgba(240,134,64,1)"/>
- <circle cx="99" cy="81" r="1" fill="rgba(239,127,57,1)"/>
- <circle cx="100" cy="81" r="1" fill="rgba(244,116,48,1)"/>
- <circle cx="101" cy="81" r="1" fill="rgba(163,58,18,0.87451)"/>
- <circle cx="102" cy="81" r="1" fill="rgba(31,1,0,0.662745)"/>
- <circle cx="103" cy="81" r="1" fill="rgba(36,4,0,0.572549)"/>
- <circle cx="104" cy="81" r="1" fill="rgba(24,1,0,0.462745)"/>
- <circle cx="105" cy="81" r="1" fill="rgba(15,0,0,0.372549)"/>
- <circle cx="106" cy="81" r="1" fill="rgba(7,0,0,0.298039)"/>
- <circle cx="107" cy="81" r="1" fill="rgba(0,0,0,0.223529)"/>
- <circle cx="108" cy="81" r="1" fill="rgba(0,0,0,0.141176)"/>
- <circle cx="109" cy="81" r="1" fill="rgba(0,0,0,0.0745098)"/>
- <circle cx="110" cy="81" r="1" fill="rgba(0,0,0,0.0235294)"/>
- <circle cx="111" cy="81" r="1" fill="rgba(10,2,0,0.00392157)"/>
- <circle cx="112" cy="81" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="113" cy="81" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="114" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="81" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="82" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="82" r="1" fill="rgba(216,25,0,0)"/>
- <circle cx="19" cy="82" r="1" fill="rgba(203,24,0,0)"/>
- <circle cx="20" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="21" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="22" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="23" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="24" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="25" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="26" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="27" cy="82" r="1" fill="rgba(204,24,0,0)"/>
- <circle cx="28" cy="82" r="1" fill="rgba(204,24,0,0.0862745)"/>
- <circle cx="29" cy="82" r="1" fill="rgba(207,26,1,0.937255)"/>
- <circle cx="30" cy="82" r="1" fill="rgba(211,35,2,1)"/>
- <circle cx="31" cy="82" r="1" fill="rgba(214,38,2,1)"/>
- <circle cx="32" cy="82" r="1" fill="rgba(212,34,1,1)"/>
- <circle cx="33" cy="82" r="1" fill="rgba(209,27,1,1)"/>
- <circle cx="34" cy="82" r="1" fill="rgba(208,24,0,1)"/>
- <circle cx="35" cy="82" r="1" fill="rgba(208,23,0,1)"/>
- <circle cx="36" cy="82" r="1" fill="rgba(209,23,0,1)"/>
- <circle cx="37" cy="82" r="1" fill="rgba(210,24,0,1)"/>
- <circle cx="38" cy="82" r="1" fill="rgba(210,24,0,1)"/>
- <circle cx="39" cy="82" r="1" fill="rgba(210,24,0,1)"/>
- <circle cx="40" cy="82" r="1" fill="rgba(215,23,0,1)"/>
- <circle cx="41" cy="82" r="1" fill="rgba(183,26,3,1)"/>
- <circle cx="42" cy="82" r="1" fill="rgba(78,32,13,1)"/>
- <circle cx="43" cy="82" r="1" fill="rgba(64,29,11,1)"/>
- <circle cx="44" cy="82" r="1" fill="rgba(67,25,9,1)"/>
- <circle cx="45" cy="82" r="1" fill="rgba(59,22,8,1)"/>
- <circle cx="46" cy="82" r="1" fill="rgba(51,19,6,1)"/>
- <circle cx="47" cy="82" r="1" fill="rgba(29,15,5,1)"/>
- <circle cx="48" cy="82" r="1" fill="rgba(74,13,3,1)"/>
- <circle cx="49" cy="82" r="1" fill="rgba(186,19,0,1)"/>
- <circle cx="50" cy="82" r="1" fill="rgba(212,20,0,1)"/>
- <circle cx="51" cy="82" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="52" cy="82" r="1" fill="rgba(207,19,0,1)"/>
- <circle cx="53" cy="82" r="1" fill="rgba(205,19,0,1)"/>
- <circle cx="54" cy="82" r="1" fill="rgba(204,18,0,1)"/>
- <circle cx="55" cy="82" r="1" fill="rgba(204,16,0,1)"/>
- <circle cx="56" cy="82" r="1" fill="rgba(203,16,1,1)"/>
- <circle cx="57" cy="82" r="1" fill="rgba(202,16,1,1)"/>
- <circle cx="58" cy="82" r="1" fill="rgba(202,16,1,1)"/>
- <circle cx="59" cy="82" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="60" cy="82" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="61" cy="82" r="1" fill="rgba(200,13,1,1)"/>
- <circle cx="62" cy="82" r="1" fill="rgba(198,13,2,1)"/>
- <circle cx="63" cy="82" r="1" fill="rgba(196,12,2,1)"/>
- <circle cx="64" cy="82" r="1" fill="rgba(195,10,1,1)"/>
- <circle cx="65" cy="82" r="1" fill="rgba(157,9,0,1)"/>
- <circle cx="66" cy="82" r="1" fill="rgba(136,10,2,1)"/>
- <circle cx="67" cy="82" r="1" fill="rgba(188,11,1,1)"/>
- <circle cx="68" cy="82" r="1" fill="rgba(187,13,3,1)"/>
- <circle cx="69" cy="82" r="1" fill="rgba(192,17,3,1)"/>
- <circle cx="70" cy="82" r="1" fill="rgba(197,20,5,1)"/>
- <circle cx="71" cy="82" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="72" cy="82" r="1" fill="rgba(207,26,7,1)"/>
- <circle cx="73" cy="82" r="1" fill="rgba(178,23,6,1)"/>
- <circle cx="74" cy="82" r="1" fill="rgba(15,1,0,1)"/>
- <circle cx="75" cy="82" r="1" fill="rgba(17,4,0,1)"/>
- <circle cx="76" cy="82" r="1" fill="rgba(42,13,4,1)"/>
- <circle cx="77" cy="82" r="1" fill="rgba(58,20,7,1)"/>
- <circle cx="78" cy="82" r="1" fill="rgba(70,28,10,1)"/>
- <circle cx="79" cy="82" r="1" fill="rgba(83,34,14,1)"/>
- <circle cx="80" cy="82" r="1" fill="rgba(94,41,18,1)"/>
- <circle cx="81" cy="82" r="1" fill="rgba(100,47,22,1)"/>
- <circle cx="82" cy="82" r="1" fill="rgba(128,52,24,1)"/>
- <circle cx="83" cy="82" r="1" fill="rgba(210,57,20,1)"/>
- <circle cx="84" cy="82" r="1" fill="rgba(216,62,21,1)"/>
- <circle cx="85" cy="82" r="1" fill="rgba(216,67,24,1)"/>
- <circle cx="86" cy="82" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="87" cy="82" r="1" fill="rgba(219,76,29,1)"/>
- <circle cx="88" cy="82" r="1" fill="rgba(221,81,33,1)"/>
- <circle cx="89" cy="82" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="90" cy="82" r="1" fill="rgba(225,93,38,1)"/>
- <circle cx="91" cy="82" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="92" cy="82" r="1" fill="rgba(229,103,46,1)"/>
- <circle cx="93" cy="82" r="1" fill="rgba(232,110,50,1)"/>
- <circle cx="94" cy="82" r="1" fill="rgba(234,116,54,1)"/>
- <circle cx="95" cy="82" r="1" fill="rgba(236,122,57,1)"/>
- <circle cx="96" cy="82" r="1" fill="rgba(238,129,63,1)"/>
- <circle cx="97" cy="82" r="1" fill="rgba(240,133,66,1)"/>
- <circle cx="98" cy="82" r="1" fill="rgba(241,133,63,1)"/>
- <circle cx="99" cy="82" r="1" fill="rgba(239,122,54,1)"/>
- <circle cx="100" cy="82" r="1" fill="rgba(236,106,42,1)"/>
- <circle cx="101" cy="82" r="1" fill="rgba(111,31,8,0.792157)"/>
- <circle cx="102" cy="82" r="1" fill="rgba(29,1,0,0.643137)"/>
- <circle cx="103" cy="82" r="1" fill="rgba(34,4,0,0.54902)"/>
- <circle cx="104" cy="82" r="1" fill="rgba(21,1,0,0.435294)"/>
- <circle cx="105" cy="82" r="1" fill="rgba(17,0,0,0.352941)"/>
- <circle cx="106" cy="82" r="1" fill="rgba(7,0,0,0.282353)"/>
- <circle cx="107" cy="82" r="1" fill="rgba(0,0,0,0.203922)"/>
- <circle cx="108" cy="82" r="1" fill="rgba(0,0,0,0.12549)"/>
- <circle cx="109" cy="82" r="1" fill="rgba(0,0,0,0.0588235)"/>
- <circle cx="110" cy="82" r="1" fill="rgba(0,0,0,0.0156863)"/>
- <circle cx="111" cy="82" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="82" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="82" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="82" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="83" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="83" r="1" fill="rgba(191,22,1,0)"/>
- <circle cx="19" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="20" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="21" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="22" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="23" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="24" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="25" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="26" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="27" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="28" cy="83" r="1" fill="rgba(188,22,1,0)"/>
- <circle cx="29" cy="83" r="1" fill="rgba(196,23,1,0.670588)"/>
- <circle cx="30" cy="83" r="1" fill="rgba(210,31,2,1)"/>
- <circle cx="31" cy="83" r="1" fill="rgba(213,37,3,1)"/>
- <circle cx="32" cy="83" r="1" fill="rgba(211,34,2,1)"/>
- <circle cx="33" cy="83" r="1" fill="rgba(208,28,1,1)"/>
- <circle cx="34" cy="83" r="1" fill="rgba(207,23,0,1)"/>
- <circle cx="35" cy="83" r="1" fill="rgba(207,22,0,1)"/>
- <circle cx="36" cy="83" r="1" fill="rgba(207,22,0,1)"/>
- <circle cx="37" cy="83" r="1" fill="rgba(207,23,0,1)"/>
- <circle cx="38" cy="83" r="1" fill="rgba(207,23,0,1)"/>
- <circle cx="39" cy="83" r="1" fill="rgba(209,23,0,1)"/>
- <circle cx="40" cy="83" r="1" fill="rgba(210,22,0,1)"/>
- <circle cx="41" cy="83" r="1" fill="rgba(126,32,10,1)"/>
- <circle cx="42" cy="83" r="1" fill="rgba(70,34,14,1)"/>
- <circle cx="43" cy="83" r="1" fill="rgba(74,29,11,1)"/>
- <circle cx="44" cy="83" r="1" fill="rgba(68,26,10,1)"/>
- <circle cx="45" cy="83" r="1" fill="rgba(62,23,8,1)"/>
- <circle cx="46" cy="83" r="1" fill="rgba(55,20,6,1)"/>
- <circle cx="47" cy="83" r="1" fill="rgba(49,16,5,1)"/>
- <circle cx="48" cy="83" r="1" fill="rgba(24,11,3,1)"/>
- <circle cx="49" cy="83" r="1" fill="rgba(78,11,2,1)"/>
- <circle cx="50" cy="83" r="1" fill="rgba(200,18,0,1)"/>
- <circle cx="51" cy="83" r="1" fill="rgba(207,18,0,1)"/>
- <circle cx="52" cy="83" r="1" fill="rgba(204,18,0,1)"/>
- <circle cx="53" cy="83" r="1" fill="rgba(203,18,0,1)"/>
- <circle cx="54" cy="83" r="1" fill="rgba(203,17,1,1)"/>
- <circle cx="55" cy="83" r="1" fill="rgba(202,16,1,1)"/>
- <circle cx="56" cy="83" r="1" fill="rgba(202,15,1,1)"/>
- <circle cx="57" cy="83" r="1" fill="rgba(201,15,1,1)"/>
- <circle cx="58" cy="83" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="59" cy="83" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="60" cy="83" r="1" fill="rgba(199,14,1,1)"/>
- <circle cx="61" cy="83" r="1" fill="rgba(198,13,1,1)"/>
- <circle cx="62" cy="83" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="63" cy="83" r="1" fill="rgba(195,12,2,1)"/>
- <circle cx="64" cy="83" r="1" fill="rgba(196,10,1,1)"/>
- <circle cx="65" cy="83" r="1" fill="rgba(156,7,0,1)"/>
- <circle cx="66" cy="83" r="1" fill="rgba(133,9,1,1)"/>
- <circle cx="67" cy="83" r="1" fill="rgba(189,12,2,1)"/>
- <circle cx="68" cy="83" r="1" fill="rgba(188,14,3,1)"/>
- <circle cx="69" cy="83" r="1" fill="rgba(193,18,4,1)"/>
- <circle cx="70" cy="83" r="1" fill="rgba(198,21,5,1)"/>
- <circle cx="71" cy="83" r="1" fill="rgba(200,25,6,1)"/>
- <circle cx="72" cy="83" r="1" fill="rgba(205,28,7,1)"/>
- <circle cx="73" cy="83" r="1" fill="rgba(195,27,7,1)"/>
- <circle cx="74" cy="83" r="1" fill="rgba(46,6,1,1)"/>
- <circle cx="75" cy="83" r="1" fill="rgba(31,10,3,1)"/>
- <circle cx="76" cy="83" r="1" fill="rgba(55,19,6,1)"/>
- <circle cx="77" cy="83" r="1" fill="rgba(69,27,10,1)"/>
- <circle cx="78" cy="83" r="1" fill="rgba(83,34,14,1)"/>
- <circle cx="79" cy="83" r="1" fill="rgba(95,42,18,1)"/>
- <circle cx="80" cy="83" r="1" fill="rgba(106,48,23,1)"/>
- <circle cx="81" cy="83" r="1" fill="rgba(110,55,27,1)"/>
- <circle cx="82" cy="83" r="1" fill="rgba(147,59,28,1)"/>
- <circle cx="83" cy="83" r="1" fill="rgba(214,60,21,1)"/>
- <circle cx="84" cy="83" r="1" fill="rgba(216,65,23,1)"/>
- <circle cx="85" cy="83" r="1" fill="rgba(217,69,25,1)"/>
- <circle cx="86" cy="83" r="1" fill="rgba(218,74,28,1)"/>
- <circle cx="87" cy="83" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="88" cy="83" r="1" fill="rgba(221,84,33,1)"/>
- <circle cx="89" cy="83" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="90" cy="83" r="1" fill="rgba(227,95,41,1)"/>
- <circle cx="91" cy="83" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="92" cy="83" r="1" fill="rgba(231,107,48,1)"/>
- <circle cx="93" cy="83" r="1" fill="rgba(233,113,53,1)"/>
- <circle cx="94" cy="83" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="95" cy="83" r="1" fill="rgba(237,126,60,1)"/>
- <circle cx="96" cy="83" r="1" fill="rgba(238,131,64,1)"/>
- <circle cx="97" cy="83" r="1" fill="rgba(241,135,65,1)"/>
- <circle cx="98" cy="83" r="1" fill="rgba(241,130,60,1)"/>
- <circle cx="99" cy="83" r="1" fill="rgba(241,118,50,1)"/>
- <circle cx="100" cy="83" r="1" fill="rgba(212,87,32,0.964706)"/>
- <circle cx="101" cy="83" r="1" fill="rgba(57,9,2,0.717647)"/>
- <circle cx="102" cy="83" r="1" fill="rgba(39,4,0,0.627451)"/>
- <circle cx="103" cy="83" r="1" fill="rgba(31,2,0,0.521569)"/>
- <circle cx="104" cy="83" r="1" fill="rgba(19,0,0,0.415686)"/>
- <circle cx="105" cy="83" r="1" fill="rgba(12,2,0,0.333333)"/>
- <circle cx="106" cy="83" r="1" fill="rgba(4,0,0,0.262745)"/>
- <circle cx="107" cy="83" r="1" fill="rgba(0,0,0,0.184314)"/>
- <circle cx="108" cy="83" r="1" fill="rgba(0,0,0,0.109804)"/>
- <circle cx="109" cy="83" r="1" fill="rgba(0,0,0,0.0470588)"/>
- <circle cx="110" cy="83" r="1" fill="rgba(4,0,0,0.0117647)"/>
- <circle cx="111" cy="83" r="1" fill="rgba(22,8,1,0)"/>
- <circle cx="112" cy="83" r="1" fill="rgba(22,8,1,0)"/>
- <circle cx="113" cy="83" r="1" fill="rgba(22,8,1,0)"/>
- <circle cx="114" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="83" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="84" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="19" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="20" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="21" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="22" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="23" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="24" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="25" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="26" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="27" cy="84" r="1" fill="rgba(113,16,3,0)"/>
- <circle cx="28" cy="84" r="1" fill="rgba(107,15,3,0)"/>
- <circle cx="29" cy="84" r="1" fill="rgba(156,19,3,0.356863)"/>
- <circle cx="30" cy="84" r="1" fill="rgba(210,28,2,1)"/>
- <circle cx="31" cy="84" r="1" fill="rgba(210,34,3,1)"/>
- <circle cx="32" cy="84" r="1" fill="rgba(210,33,2,1)"/>
- <circle cx="33" cy="84" r="1" fill="rgba(207,27,1,1)"/>
- <circle cx="34" cy="84" r="1" fill="rgba(205,22,0,1)"/>
- <circle cx="35" cy="84" r="1" fill="rgba(205,21,0,1)"/>
- <circle cx="36" cy="84" r="1" fill="rgba(205,21,1,1)"/>
- <circle cx="37" cy="84" r="1" fill="rgba(205,21,1,1)"/>
- <circle cx="38" cy="84" r="1" fill="rgba(206,22,0,1)"/>
- <circle cx="39" cy="84" r="1" fill="rgba(208,21,0,1)"/>
- <circle cx="40" cy="84" r="1" fill="rgba(201,22,1,1)"/>
- <circle cx="41" cy="84" r="1" fill="rgba(98,36,14,1)"/>
- <circle cx="42" cy="84" r="1" fill="rgba(77,33,14,1)"/>
- <circle cx="43" cy="84" r="1" fill="rgba(74,29,12,1)"/>
- <circle cx="44" cy="84" r="1" fill="rgba(69,26,10,1)"/>
- <circle cx="45" cy="84" r="1" fill="rgba(63,23,8,1)"/>
- <circle cx="46" cy="84" r="1" fill="rgba(55,20,6,1)"/>
- <circle cx="47" cy="84" r="1" fill="rgba(49,16,5,1)"/>
- <circle cx="48" cy="84" r="1" fill="rgba(42,13,3,1)"/>
- <circle cx="49" cy="84" r="1" fill="rgba(12,9,2,1)"/>
- <circle cx="50" cy="84" r="1" fill="rgba(130,12,1,1)"/>
- <circle cx="51" cy="84" r="1" fill="rgba(209,18,1,1)"/>
- <circle cx="52" cy="84" r="1" fill="rgba(203,16,0,1)"/>
- <circle cx="53" cy="84" r="1" fill="rgba(202,16,1,1)"/>
- <circle cx="54" cy="84" r="1" fill="rgba(202,15,1,1)"/>
- <circle cx="55" cy="84" r="1" fill="rgba(201,14,1,1)"/>
- <circle cx="56" cy="84" r="1" fill="rgba(200,15,1,1)"/>
- <circle cx="57" cy="84" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="58" cy="84" r="1" fill="rgba(199,14,1,1)"/>
- <circle cx="59" cy="84" r="1" fill="rgba(199,13,1,1)"/>
- <circle cx="60" cy="84" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="61" cy="84" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="62" cy="84" r="1" fill="rgba(196,13,3,1)"/>
- <circle cx="63" cy="84" r="1" fill="rgba(195,13,3,1)"/>
- <circle cx="64" cy="84" r="1" fill="rgba(195,11,1,1)"/>
- <circle cx="65" cy="84" r="1" fill="rgba(154,6,0,1)"/>
- <circle cx="66" cy="84" r="1" fill="rgba(131,8,1,1)"/>
- <circle cx="67" cy="84" r="1" fill="rgba(190,14,3,1)"/>
- <circle cx="68" cy="84" r="1" fill="rgba(188,15,3,1)"/>
- <circle cx="69" cy="84" r="1" fill="rgba(193,19,4,1)"/>
- <circle cx="70" cy="84" r="1" fill="rgba(198,23,5,1)"/>
- <circle cx="71" cy="84" r="1" fill="rgba(201,26,6,1)"/>
- <circle cx="72" cy="84" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="73" cy="84" r="1" fill="rgba(208,31,9,1)"/>
- <circle cx="74" cy="84" r="1" fill="rgba(109,17,4,1)"/>
- <circle cx="75" cy="84" r="1" fill="rgba(33,15,4,1)"/>
- <circle cx="76" cy="84" r="1" fill="rgba(67,24,9,1)"/>
- <circle cx="77" cy="84" r="1" fill="rgba(81,33,13,1)"/>
- <circle cx="78" cy="84" r="1" fill="rgba(94,41,18,1)"/>
- <circle cx="79" cy="84" r="1" fill="rgba(106,48,23,1)"/>
- <circle cx="80" cy="84" r="1" fill="rgba(116,55,28,1)"/>
- <circle cx="81" cy="84" r="1" fill="rgba(121,63,34,1)"/>
- <circle cx="82" cy="84" r="1" fill="rgba(176,64,28,1)"/>
- <circle cx="83" cy="84" r="1" fill="rgba(219,62,21,1)"/>
- <circle cx="84" cy="84" r="1" fill="rgba(216,68,25,1)"/>
- <circle cx="85" cy="84" r="1" fill="rgba(217,72,27,1)"/>
- <circle cx="86" cy="84" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="87" cy="84" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="88" cy="84" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="89" cy="84" r="1" fill="rgba(225,93,39,1)"/>
- <circle cx="90" cy="84" r="1" fill="rgba(228,99,42,1)"/>
- <circle cx="91" cy="84" r="1" fill="rgba(230,104,47,1)"/>
- <circle cx="92" cy="84" r="1" fill="rgba(233,110,51,1)"/>
- <circle cx="93" cy="84" r="1" fill="rgba(234,117,54,1)"/>
- <circle cx="94" cy="84" r="1" fill="rgba(236,123,58,1)"/>
- <circle cx="95" cy="84" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="96" cy="84" r="1" fill="rgba(240,133,66,1)"/>
- <circle cx="97" cy="84" r="1" fill="rgba(241,134,64,1)"/>
- <circle cx="98" cy="84" r="1" fill="rgba(238,125,56,1)"/>
- <circle cx="99" cy="84" r="1" fill="rgba(242,114,47,1)"/>
- <circle cx="100" cy="84" r="1" fill="rgba(163,57,18,0.878431)"/>
- <circle cx="101" cy="84" r="1" fill="rgba(34,2,0,0.67451)"/>
- <circle cx="102" cy="84" r="1" fill="rgba(39,4,0,0.6)"/>
- <circle cx="103" cy="84" r="1" fill="rgba(26,2,0,0.490196)"/>
- <circle cx="104" cy="84" r="1" fill="rgba(17,0,0,0.388235)"/>
- <circle cx="105" cy="84" r="1" fill="rgba(12,1,0,0.309804)"/>
- <circle cx="106" cy="84" r="1" fill="rgba(4,0,0,0.239216)"/>
- <circle cx="107" cy="84" r="1" fill="rgba(0,0,0,0.160784)"/>
- <circle cx="108" cy="84" r="1" fill="rgba(0,0,0,0.0901961)"/>
- <circle cx="109" cy="84" r="1" fill="rgba(0,0,0,0.0352941)"/>
- <circle cx="110" cy="84" r="1" fill="rgba(4,0,0,0.00392157)"/>
- <circle cx="111" cy="84" r="1" fill="rgba(17,5,0,0)"/>
- <circle cx="112" cy="84" r="1" fill="rgba(17,6,0,0)"/>
- <circle cx="113" cy="84" r="1" fill="rgba(17,6,0,0)"/>
- <circle cx="114" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="84" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="85" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="19" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="20" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="21" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="22" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="23" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="24" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="25" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="26" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="27" cy="85" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="28" cy="85" r="1" fill="rgba(109,13,1,0)"/>
- <circle cx="29" cy="85" r="1" fill="rgba(126,14,1,0.0823529)"/>
- <circle cx="30" cy="85" r="1" fill="rgba(198,23,2,0.901961)"/>
- <circle cx="31" cy="85" r="1" fill="rgba(207,29,3,1)"/>
- <circle cx="32" cy="85" r="1" fill="rgba(207,30,3,1)"/>
- <circle cx="33" cy="85" r="1" fill="rgba(205,25,1,1)"/>
- <circle cx="34" cy="85" r="1" fill="rgba(203,21,1,1)"/>
- <circle cx="35" cy="85" r="1" fill="rgba(203,19,0,1)"/>
- <circle cx="36" cy="85" r="1" fill="rgba(203,19,1,1)"/>
- <circle cx="37" cy="85" r="1" fill="rgba(203,20,1,1)"/>
- <circle cx="38" cy="85" r="1" fill="rgba(204,20,1,1)"/>
- <circle cx="39" cy="85" r="1" fill="rgba(206,20,0,1)"/>
- <circle cx="40" cy="85" r="1" fill="rgba(198,21,1,1)"/>
- <circle cx="41" cy="85" r="1" fill="rgba(94,36,14,1)"/>
- <circle cx="42" cy="85" r="1" fill="rgba(78,33,14,1)"/>
- <circle cx="43" cy="85" r="1" fill="rgba(75,30,12,1)"/>
- <circle cx="44" cy="85" r="1" fill="rgba(69,27,10,1)"/>
- <circle cx="45" cy="85" r="1" fill="rgba(63,23,8,1)"/>
- <circle cx="46" cy="85" r="1" fill="rgba(57,20,6,1)"/>
- <circle cx="47" cy="85" r="1" fill="rgba(50,17,5,1)"/>
- <circle cx="48" cy="85" r="1" fill="rgba(43,13,4,1)"/>
- <circle cx="49" cy="85" r="1" fill="rgba(26,9,2,1)"/>
- <circle cx="50" cy="85" r="1" fill="rgba(63,8,1,1)"/>
- <circle cx="51" cy="85" r="1" fill="rgba(197,15,1,1)"/>
- <circle cx="52" cy="85" r="1" fill="rgba(203,16,1,1)"/>
- <circle cx="53" cy="85" r="1" fill="rgba(200,15,1,1)"/>
- <circle cx="54" cy="85" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="55" cy="85" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="56" cy="85" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="57" cy="85" r="1" fill="rgba(199,13,2,1)"/>
- <circle cx="58" cy="85" r="1" fill="rgba(198,13,2,1)"/>
- <circle cx="59" cy="85" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="60" cy="85" r="1" fill="rgba(197,12,2,1)"/>
- <circle cx="61" cy="85" r="1" fill="rgba(197,13,3,1)"/>
- <circle cx="62" cy="85" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="63" cy="85" r="1" fill="rgba(195,15,3,1)"/>
- <circle cx="64" cy="85" r="1" fill="rgba(196,12,1,1)"/>
- <circle cx="65" cy="85" r="1" fill="rgba(153,6,0,1)"/>
- <circle cx="66" cy="85" r="1" fill="rgba(132,9,1,1)"/>
- <circle cx="67" cy="85" r="1" fill="rgba(191,15,3,1)"/>
- <circle cx="68" cy="85" r="1" fill="rgba(189,17,3,1)"/>
- <circle cx="69" cy="85" r="1" fill="rgba(194,21,4,1)"/>
- <circle cx="70" cy="85" r="1" fill="rgba(199,24,6,1)"/>
- <circle cx="71" cy="85" r="1" fill="rgba(201,27,7,1)"/>
- <circle cx="72" cy="85" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="73" cy="85" r="1" fill="rgba(210,34,9,1)"/>
- <circle cx="74" cy="85" r="1" fill="rgba(176,30,9,1)"/>
- <circle cx="75" cy="85" r="1" fill="rgba(61,21,8,1)"/>
- <circle cx="76" cy="85" r="1" fill="rgba(70,30,12,1)"/>
- <circle cx="77" cy="85" r="1" fill="rgba(90,39,17,1)"/>
- <circle cx="78" cy="85" r="1" fill="rgba(103,47,22,1)"/>
- <circle cx="79" cy="85" r="1" fill="rgba(115,55,27,1)"/>
- <circle cx="80" cy="85" r="1" fill="rgba(124,63,33,1)"/>
- <circle cx="81" cy="85" r="1" fill="rgba(142,68,37,1)"/>
- <circle cx="82" cy="85" r="1" fill="rgba(207,63,24,1)"/>
- <circle cx="83" cy="85" r="1" fill="rgba(217,66,24,1)"/>
- <circle cx="84" cy="85" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="85" cy="85" r="1" fill="rgba(219,75,29,1)"/>
- <circle cx="86" cy="85" r="1" fill="rgba(221,80,32,1)"/>
- <circle cx="87" cy="85" r="1" fill="rgba(222,85,34,1)"/>
- <circle cx="88" cy="85" r="1" fill="rgba(224,91,38,1)"/>
- <circle cx="89" cy="85" r="1" fill="rgba(227,97,42,1)"/>
- <circle cx="90" cy="85" r="1" fill="rgba(229,102,45,1)"/>
- <circle cx="91" cy="85" r="1" fill="rgba(231,107,48,1)"/>
- <circle cx="92" cy="85" r="1" fill="rgba(233,114,53,1)"/>
- <circle cx="93" cy="85" r="1" fill="rgba(236,121,56,1)"/>
- <circle cx="94" cy="85" r="1" fill="rgba(237,126,60,1)"/>
- <circle cx="95" cy="85" r="1" fill="rgba(239,131,64,1)"/>
- <circle cx="96" cy="85" r="1" fill="rgba(241,136,66,1)"/>
- <circle cx="97" cy="85" r="1" fill="rgba(241,133,62,1)"/>
- <circle cx="98" cy="85" r="1" fill="rgba(238,121,53,1)"/>
- <circle cx="99" cy="85" r="1" fill="rgba(233,105,42,1)"/>
- <circle cx="100" cy="85" r="1" fill="rgba(100,26,7,0.784314)"/>
- <circle cx="101" cy="85" r="1" fill="rgba(33,2,0,0.65098)"/>
- <circle cx="102" cy="85" r="1" fill="rgba(36,3,0,0.560784)"/>
- <circle cx="103" cy="85" r="1" fill="rgba(21,0,0,0.45098)"/>
- <circle cx="104" cy="85" r="1" fill="rgba(12,1,0,0.364706)"/>
- <circle cx="105" cy="85" r="1" fill="rgba(7,1,0,0.290196)"/>
- <circle cx="106" cy="85" r="1" fill="rgba(0,0,0,0.219608)"/>
- <circle cx="107" cy="85" r="1" fill="rgba(0,0,0,0.141176)"/>
- <circle cx="108" cy="85" r="1" fill="rgba(0,0,0,0.0705882)"/>
- <circle cx="109" cy="85" r="1" fill="rgba(0,0,0,0.0235294)"/>
- <circle cx="110" cy="85" r="1" fill="none"/>
- <circle cx="111" cy="85" r="1" fill="none"/>
- <circle cx="112" cy="85" r="1" fill="none"/>
- <circle cx="113" cy="85" r="1" fill="none"/>
- <circle cx="114" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="85" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="86" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="19" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="20" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="21" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="22" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="23" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="24" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="25" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="26" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="27" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="28" cy="86" r="1" fill="rgba(109,14,2,0)"/>
- <circle cx="29" cy="86" r="1" fill="rgba(103,13,1,0)"/>
- <circle cx="30" cy="86" r="1" fill="rgba(165,17,1,0.603922)"/>
- <circle cx="31" cy="86" r="1" fill="rgba(205,24,3,1)"/>
- <circle cx="32" cy="86" r="1" fill="rgba(202,25,2,1)"/>
- <circle cx="33" cy="86" r="1" fill="rgba(202,21,2,1)"/>
- <circle cx="34" cy="86" r="1" fill="rgba(200,19,1,1)"/>
- <circle cx="35" cy="86" r="1" fill="rgba(201,19,1,1)"/>
- <circle cx="36" cy="86" r="1" fill="rgba(202,18,1,1)"/>
- <circle cx="37" cy="86" r="1" fill="rgba(203,19,1,1)"/>
- <circle cx="38" cy="86" r="1" fill="rgba(202,19,1,1)"/>
- <circle cx="39" cy="86" r="1" fill="rgba(203,19,1,1)"/>
- <circle cx="40" cy="86" r="1" fill="rgba(201,19,1,1)"/>
- <circle cx="41" cy="86" r="1" fill="rgba(113,33,12,1)"/>
- <circle cx="42" cy="86" r="1" fill="rgba(75,34,14,1)"/>
- <circle cx="43" cy="86" r="1" fill="rgba(75,30,12,1)"/>
- <circle cx="44" cy="86" r="1" fill="rgba(70,27,10,1)"/>
- <circle cx="45" cy="86" r="1" fill="rgba(63,23,8,1)"/>
- <circle cx="46" cy="86" r="1" fill="rgba(57,20,7,1)"/>
- <circle cx="47" cy="86" r="1" fill="rgba(50,17,5,1)"/>
- <circle cx="48" cy="86" r="1" fill="rgba(43,14,4,1)"/>
- <circle cx="49" cy="86" r="1" fill="rgba(31,10,3,1)"/>
- <circle cx="50" cy="86" r="1" fill="rgba(37,7,1,1)"/>
- <circle cx="51" cy="86" r="1" fill="rgba(191,14,1,1)"/>
- <circle cx="52" cy="86" r="1" fill="rgba(202,14,1,1)"/>
- <circle cx="53" cy="86" r="1" fill="rgba(199,14,1,1)"/>
- <circle cx="54" cy="86" r="1" fill="rgba(198,14,1,1)"/>
- <circle cx="55" cy="86" r="1" fill="rgba(197,14,1,1)"/>
- <circle cx="56" cy="86" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="57" cy="86" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="58" cy="86" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="59" cy="86" r="1" fill="rgba(197,13,2,1)"/>
- <circle cx="60" cy="86" r="1" fill="rgba(197,14,3,1)"/>
- <circle cx="61" cy="86" r="1" fill="rgba(197,15,3,1)"/>
- <circle cx="62" cy="86" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="63" cy="86" r="1" fill="rgba(195,16,3,1)"/>
- <circle cx="64" cy="86" r="1" fill="rgba(196,14,1,1)"/>
- <circle cx="65" cy="86" r="1" fill="rgba(153,6,0,1)"/>
- <circle cx="66" cy="86" r="1" fill="rgba(132,9,1,1)"/>
- <circle cx="67" cy="86" r="1" fill="rgba(192,17,3,1)"/>
- <circle cx="68" cy="86" r="1" fill="rgba(190,18,4,1)"/>
- <circle cx="69" cy="86" r="1" fill="rgba(196,22,5,1)"/>
- <circle cx="70" cy="86" r="1" fill="rgba(200,26,6,1)"/>
- <circle cx="71" cy="86" r="1" fill="rgba(203,29,8,1)"/>
- <circle cx="72" cy="86" r="1" fill="rgba(204,32,9,1)"/>
- <circle cx="73" cy="86" r="1" fill="rgba(205,35,10,1)"/>
- <circle cx="74" cy="86" r="1" fill="rgba(210,38,11,1)"/>
- <circle cx="75" cy="86" r="1" fill="rgba(155,35,11,1)"/>
- <circle cx="76" cy="86" r="1" fill="rgba(78,34,14,1)"/>
- <circle cx="77" cy="86" r="1" fill="rgba(88,43,20,1)"/>
- <circle cx="78" cy="86" r="1" fill="rgba(105,52,27,1)"/>
- <circle cx="79" cy="86" r="1" fill="rgba(117,61,33,1)"/>
- <circle cx="80" cy="86" r="1" fill="rgba(134,69,38,1)"/>
- <circle cx="81" cy="86" r="1" fill="rgba(188,66,28,1)"/>
- <circle cx="82" cy="86" r="1" fill="rgba(218,65,22,1)"/>
- <circle cx="83" cy="86" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="84" cy="86" r="1" fill="rgba(218,73,28,1)"/>
- <circle cx="85" cy="86" r="1" fill="rgba(221,78,30,1)"/>
- <circle cx="86" cy="86" r="1" fill="rgba(222,83,33,1)"/>
- <circle cx="87" cy="86" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="88" cy="86" r="1" fill="rgba(227,95,40,1)"/>
- <circle cx="89" cy="86" r="1" fill="rgba(228,100,43,1)"/>
- <circle cx="90" cy="86" r="1" fill="rgba(230,105,48,1)"/>
- <circle cx="91" cy="86" r="1" fill="rgba(232,111,51,1)"/>
- <circle cx="92" cy="86" r="1" fill="rgba(234,118,56,1)"/>
- <circle cx="93" cy="86" r="1" fill="rgba(236,124,59,1)"/>
- <circle cx="94" cy="86" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="95" cy="86" r="1" fill="rgba(240,134,65,1)"/>
- <circle cx="96" cy="86" r="1" fill="rgba(241,136,65,1)"/>
- <circle cx="97" cy="86" r="1" fill="rgba(239,128,59,1)"/>
- <circle cx="98" cy="86" r="1" fill="rgba(242,120,51,1)"/>
- <circle cx="99" cy="86" r="1" fill="rgba(197,81,30,0.933333)"/>
- <circle cx="100" cy="86" r="1" fill="rgba(46,6,1,0.705882)"/>
- <circle cx="101" cy="86" r="1" fill="rgba(40,4,1,0.627451)"/>
- <circle cx="102" cy="86" r="1" fill="rgba(31,2,0,0.521569)"/>
- <circle cx="103" cy="86" r="1" fill="rgba(19,0,0,0.419608)"/>
- <circle cx="104" cy="86" r="1" fill="rgba(15,2,0,0.337255)"/>
- <circle cx="105" cy="86" r="1" fill="rgba(7,1,0,0.266667)"/>
- <circle cx="106" cy="86" r="1" fill="rgba(0,0,0,0.188235)"/>
- <circle cx="107" cy="86" r="1" fill="rgba(0,0,0,0.113725)"/>
- <circle cx="108" cy="86" r="1" fill="rgba(0,0,0,0.0509804)"/>
- <circle cx="109" cy="86" r="1" fill="rgba(0,0,0,0.0117647)"/>
- <circle cx="110" cy="86" r="1" fill="none"/>
- <circle cx="111" cy="86" r="1" fill="none"/>
- <circle cx="112" cy="86" r="1" fill="none"/>
- <circle cx="113" cy="86" r="1" fill="none"/>
- <circle cx="114" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="86" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="87" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="19" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="20" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="21" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="22" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="23" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="24" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="25" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="26" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="27" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="28" cy="87" r="1" fill="rgba(111,13,1,0)"/>
- <circle cx="29" cy="87" r="1" fill="rgba(107,12,1,0)"/>
- <circle cx="30" cy="87" r="1" fill="rgba(122,11,0,0.262745)"/>
- <circle cx="31" cy="87" r="1" fill="rgba(193,18,2,0.984314)"/>
- <circle cx="32" cy="87" r="1" fill="rgba(197,19,2,1)"/>
- <circle cx="33" cy="87" r="1" fill="rgba(198,18,2,1)"/>
- <circle cx="34" cy="87" r="1" fill="rgba(198,18,1,1)"/>
- <circle cx="35" cy="87" r="1" fill="rgba(199,18,1,1)"/>
- <circle cx="36" cy="87" r="1" fill="rgba(200,18,1,1)"/>
- <circle cx="37" cy="87" r="1" fill="rgba(200,17,1,1)"/>
- <circle cx="38" cy="87" r="1" fill="rgba(201,18,1,1)"/>
- <circle cx="39" cy="87" r="1" fill="rgba(200,18,1,1)"/>
- <circle cx="40" cy="87" r="1" fill="rgba(206,16,1,1)"/>
- <circle cx="41" cy="87" r="1" fill="rgba(157,25,6,1)"/>
- <circle cx="42" cy="87" r="1" fill="rgba(73,35,15,1)"/>
- <circle cx="43" cy="87" r="1" fill="rgba(75,30,12,1)"/>
- <circle cx="44" cy="87" r="1" fill="rgba(70,27,10,1)"/>
- <circle cx="45" cy="87" r="1" fill="rgba(63,23,8,1)"/>
- <circle cx="46" cy="87" r="1" fill="rgba(57,20,7,1)"/>
- <circle cx="47" cy="87" r="1" fill="rgba(50,17,5,1)"/>
- <circle cx="48" cy="87" r="1" fill="rgba(43,14,3,1)"/>
- <circle cx="49" cy="87" r="1" fill="rgba(19,10,2,1)"/>
- <circle cx="50" cy="87" r="1" fill="rgba(78,8,1,1)"/>
- <circle cx="51" cy="87" r="1" fill="rgba(198,14,1,1)"/>
- <circle cx="52" cy="87" r="1" fill="rgba(200,14,1,1)"/>
- <circle cx="53" cy="87" r="1" fill="rgba(197,14,2,1)"/>
- <circle cx="54" cy="87" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="55" cy="87" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="56" cy="87" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="57" cy="87" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="58" cy="87" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="59" cy="87" r="1" fill="rgba(197,15,3,1)"/>
- <circle cx="60" cy="87" r="1" fill="rgba(198,16,3,1)"/>
- <circle cx="61" cy="87" r="1" fill="rgba(199,17,3,1)"/>
- <circle cx="62" cy="87" r="1" fill="rgba(198,18,4,1)"/>
- <circle cx="63" cy="87" r="1" fill="rgba(196,17,4,1)"/>
- <circle cx="64" cy="87" r="1" fill="rgba(195,14,1,1)"/>
- <circle cx="65" cy="87" r="1" fill="rgba(152,6,0,1)"/>
- <circle cx="66" cy="87" r="1" fill="rgba(133,11,2,1)"/>
- <circle cx="67" cy="87" r="1" fill="rgba(192,18,4,1)"/>
- <circle cx="68" cy="87" r="1" fill="rgba(192,21,4,1)"/>
- <circle cx="69" cy="87" r="1" fill="rgba(196,25,6,1)"/>
- <circle cx="70" cy="87" r="1" fill="rgba(200,28,8,1)"/>
- <circle cx="71" cy="87" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="72" cy="87" r="1" fill="rgba(204,35,10,1)"/>
- <circle cx="73" cy="87" r="1" fill="rgba(205,38,11,1)"/>
- <circle cx="74" cy="87" r="1" fill="rgba(207,40,12,1)"/>
- <circle cx="75" cy="87" r="1" fill="rgba(211,44,13,1)"/>
- <circle cx="76" cy="87" r="1" fill="rgba(176,44,15,1)"/>
- <circle cx="77" cy="87" r="1" fill="rgba(148,48,20,1)"/>
- <circle cx="78" cy="87" r="1" fill="rgba(156,55,24,1)"/>
- <circle cx="79" cy="87" r="1" fill="rgba(168,61,28,1)"/>
- <circle cx="80" cy="87" r="1" fill="rgba(197,63,25,1)"/>
- <circle cx="81" cy="87" r="1" fill="rgba(217,64,22,1)"/>
- <circle cx="82" cy="87" r="1" fill="rgba(216,68,25,1)"/>
- <circle cx="83" cy="87" r="1" fill="rgba(218,72,27,1)"/>
- <circle cx="84" cy="87" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="85" cy="87" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="86" cy="87" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="87" cy="87" r="1" fill="rgba(225,93,39,1)"/>
- <circle cx="88" cy="87" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="89" cy="87" r="1" fill="rgba(229,103,45,1)"/>
- <circle cx="90" cy="87" r="1" fill="rgba(231,109,50,1)"/>
- <circle cx="91" cy="87" r="1" fill="rgba(234,115,54,1)"/>
- <circle cx="92" cy="87" r="1" fill="rgba(236,122,57,1)"/>
- <circle cx="93" cy="87" r="1" fill="rgba(237,127,61,1)"/>
- <circle cx="94" cy="87" r="1" fill="rgba(239,132,64,1)"/>
- <circle cx="95" cy="87" r="1" fill="rgba(241,136,66,1)"/>
- <circle cx="96" cy="87" r="1" fill="rgba(241,133,63,1)"/>
- <circle cx="97" cy="87" r="1" fill="rgba(239,123,56,1)"/>
- <circle cx="98" cy="87" r="1" fill="rgba(241,116,48,1)"/>
- <circle cx="99" cy="87" r="1" fill="rgba(127,41,13,0.819608)"/>
- <circle cx="100" cy="87" r="1" fill="rgba(31,1,0,0.666667)"/>
- <circle cx="101" cy="87" r="1" fill="rgba(39,5,0,0.588235)"/>
- <circle cx="102" cy="87" r="1" fill="rgba(26,1,0,0.482353)"/>
- <circle cx="103" cy="87" r="1" fill="rgba(19,1,0,0.384314)"/>
- <circle cx="104" cy="87" r="1" fill="rgba(15,2,0,0.309804)"/>
- <circle cx="105" cy="87" r="1" fill="rgba(10,0,0,0.235294)"/>
- <circle cx="106" cy="87" r="1" fill="rgba(0,0,0,0.156863)"/>
- <circle cx="107" cy="87" r="1" fill="rgba(0,0,0,0.0901961)"/>
- <circle cx="108" cy="87" r="1" fill="rgba(0,0,0,0.0352941)"/>
- <circle cx="109" cy="87" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="110" cy="87" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="111" cy="87" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="87" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="87" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="87" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="88" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="19" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="20" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="21" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="22" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="23" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="24" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="25" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="26" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="27" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="28" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="29" cy="88" r="1" fill="rgba(110,11,1,0)"/>
- <circle cx="30" cy="88" r="1" fill="rgba(101,10,0,0.0509804)"/>
- <circle cx="31" cy="88" r="1" fill="rgba(162,13,1,0.74902)"/>
- <circle cx="32" cy="88" r="1" fill="rgba(197,16,1,1)"/>
- <circle cx="33" cy="88" r="1" fill="rgba(194,16,2,1)"/>
- <circle cx="34" cy="88" r="1" fill="rgba(196,17,2,1)"/>
- <circle cx="35" cy="88" r="1" fill="rgba(197,17,2,1)"/>
- <circle cx="36" cy="88" r="1" fill="rgba(197,17,2,1)"/>
- <circle cx="37" cy="88" r="1" fill="rgba(198,17,1,1)"/>
- <circle cx="38" cy="88" r="1" fill="rgba(200,17,1,1)"/>
- <circle cx="39" cy="88" r="1" fill="rgba(199,17,1,1)"/>
- <circle cx="40" cy="88" r="1" fill="rgba(200,17,1,1)"/>
- <circle cx="41" cy="88" r="1" fill="rgba(198,16,2,1)"/>
- <circle cx="42" cy="88" r="1" fill="rgba(119,28,10,1)"/>
- <circle cx="43" cy="88" r="1" fill="rgba(64,32,13,1)"/>
- <circle cx="44" cy="88" r="1" fill="rgba(68,27,10,1)"/>
- <circle cx="45" cy="88" r="1" fill="rgba(62,23,8,1)"/>
- <circle cx="46" cy="88" r="1" fill="rgba(55,20,7,1)"/>
- <circle cx="47" cy="88" r="1" fill="rgba(46,17,5,1)"/>
- <circle cx="48" cy="88" r="1" fill="rgba(26,13,4,1)"/>
- <circle cx="49" cy="88" r="1" fill="rgba(50,11,2,1)"/>
- <circle cx="50" cy="88" r="1" fill="rgba(168,13,2,1)"/>
- <circle cx="51" cy="88" r="1" fill="rgba(202,14,2,1)"/>
- <circle cx="52" cy="88" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="53" cy="88" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="54" cy="88" r="1" fill="rgba(196,13,2,1)"/>
- <circle cx="55" cy="88" r="1" fill="rgba(196,13,3,1)"/>
- <circle cx="56" cy="88" r="1" fill="rgba(196,13,3,1)"/>
- <circle cx="57" cy="88" r="1" fill="rgba(196,15,3,1)"/>
- <circle cx="58" cy="88" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="59" cy="88" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="60" cy="88" r="1" fill="rgba(198,18,3,1)"/>
- <circle cx="61" cy="88" r="1" fill="rgba(198,19,4,1)"/>
- <circle cx="62" cy="88" r="1" fill="rgba(198,19,4,1)"/>
- <circle cx="63" cy="88" r="1" fill="rgba(196,19,4,1)"/>
- <circle cx="64" cy="88" r="1" fill="rgba(194,15,2,1)"/>
- <circle cx="65" cy="88" r="1" fill="rgba(149,5,0,1)"/>
- <circle cx="66" cy="88" r="1" fill="rgba(131,11,2,1)"/>
- <circle cx="67" cy="88" r="1" fill="rgba(191,19,4,1)"/>
- <circle cx="68" cy="88" r="1" fill="rgba(191,22,5,1)"/>
- <circle cx="69" cy="88" r="1" fill="rgba(196,26,7,1)"/>
- <circle cx="70" cy="88" r="1" fill="rgba(200,31,8,1)"/>
- <circle cx="71" cy="88" r="1" fill="rgba(203,35,10,1)"/>
- <circle cx="72" cy="88" r="1" fill="rgba(206,38,11,1)"/>
- <circle cx="73" cy="88" r="1" fill="rgba(206,40,13,1)"/>
- <circle cx="74" cy="88" r="1" fill="rgba(207,42,14,1)"/>
- <circle cx="75" cy="88" r="1" fill="rgba(208,46,14,1)"/>
- <circle cx="76" cy="88" r="1" fill="rgba(214,48,16,1)"/>
- <circle cx="77" cy="88" r="1" fill="rgba(215,52,17,1)"/>
- <circle cx="78" cy="88" r="1" fill="rgba(215,55,19,1)"/>
- <circle cx="79" cy="88" r="1" fill="rgba(217,59,20,1)"/>
- <circle cx="80" cy="88" r="1" fill="rgba(217,62,22,1)"/>
- <circle cx="81" cy="88" r="1" fill="rgba(216,67,24,1)"/>
- <circle cx="82" cy="88" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="83" cy="88" r="1" fill="rgba(219,76,29,1)"/>
- <circle cx="84" cy="88" r="1" fill="rgba(221,81,32,1)"/>
- <circle cx="85" cy="88" r="1" fill="rgba(222,86,35,1)"/>
- <circle cx="86" cy="88" r="1" fill="rgba(225,91,38,1)"/>
- <circle cx="87" cy="88" r="1" fill="rgba(227,96,41,1)"/>
- <circle cx="88" cy="88" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="89" cy="88" r="1" fill="rgba(231,107,48,1)"/>
- <circle cx="90" cy="88" r="1" fill="rgba(233,113,52,1)"/>
- <circle cx="91" cy="88" r="1" fill="rgba(236,119,56,1)"/>
- <circle cx="92" cy="88" r="1" fill="rgba(236,125,59,1)"/>
- <circle cx="93" cy="88" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="94" cy="88" r="1" fill="rgba(241,134,65,1)"/>
- <circle cx="95" cy="88" r="1" fill="rgba(241,135,65,1)"/>
- <circle cx="96" cy="88" r="1" fill="rgba(239,127,59,1)"/>
- <circle cx="97" cy="88" r="1" fill="rgba(242,121,53,1)"/>
- <circle cx="98" cy="88" r="1" fill="rgba(211,95,37,0.956863)"/>
- <circle cx="99" cy="88" r="1" fill="rgba(58,10,2,0.721569)"/>
- <circle cx="100" cy="88" r="1" fill="rgba(40,5,1,0.643137)"/>
- <circle cx="101" cy="88" r="1" fill="rgba(34,3,0,0.545098)"/>
- <circle cx="102" cy="88" r="1" fill="rgba(22,1,0,0.439216)"/>
- <circle cx="103" cy="88" r="1" fill="rgba(19,2,0,0.34902)"/>
- <circle cx="104" cy="88" r="1" fill="rgba(17,3,0,0.27451)"/>
- <circle cx="105" cy="88" r="1" fill="rgba(7,0,0,0.203922)"/>
- <circle cx="106" cy="88" r="1" fill="rgba(0,0,0,0.12549)"/>
- <circle cx="107" cy="88" r="1" fill="rgba(0,0,0,0.0627451)"/>
- <circle cx="108" cy="88" r="1" fill="rgba(0,0,0,0.0196078)"/>
- <circle cx="109" cy="88" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="110" cy="88" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="111" cy="88" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="88" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="88" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="88" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="89" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="19" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="20" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="21" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="22" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="23" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="24" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="25" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="26" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="27" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="28" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="29" cy="89" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="30" cy="89" r="1" fill="rgba(100,9,0,0)"/>
- <circle cx="31" cy="89" r="1" fill="rgba(110,8,0,0.407843)"/>
- <circle cx="32" cy="89" r="1" fill="rgba(188,15,2,0.992157)"/>
- <circle cx="33" cy="89" r="1" fill="rgba(192,16,2,1)"/>
- <circle cx="34" cy="89" r="1" fill="rgba(192,15,2,1)"/>
- <circle cx="35" cy="89" r="1" fill="rgba(195,16,2,1)"/>
- <circle cx="36" cy="89" r="1" fill="rgba(196,16,2,1)"/>
- <circle cx="37" cy="89" r="1" fill="rgba(197,16,2,1)"/>
- <circle cx="38" cy="89" r="1" fill="rgba(197,17,2,1)"/>
- <circle cx="39" cy="89" r="1" fill="rgba(198,17,2,1)"/>
- <circle cx="40" cy="89" r="1" fill="rgba(197,16,2,1)"/>
- <circle cx="41" cy="89" r="1" fill="rgba(200,16,1,1)"/>
- <circle cx="42" cy="89" r="1" fill="rgba(193,16,2,1)"/>
- <circle cx="43" cy="89" r="1" fill="rgba(125,24,8,1)"/>
- <circle cx="44" cy="89" r="1" fill="rgba(71,27,10,1)"/>
- <circle cx="45" cy="89" r="1" fill="rgba(61,23,8,1)"/>
- <circle cx="46" cy="89" r="1" fill="rgba(55,20,6,1)"/>
- <circle cx="47" cy="89" r="1" fill="rgba(62,16,5,1)"/>
- <circle cx="48" cy="89" r="1" fill="rgba(106,13,3,1)"/>
- <circle cx="49" cy="89" r="1" fill="rgba(177,13,2,1)"/>
- <circle cx="50" cy="89" r="1" fill="rgba(202,14,2,1)"/>
- <circle cx="51" cy="89" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="52" cy="89" r="1" fill="rgba(196,13,3,1)"/>
- <circle cx="53" cy="89" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="54" cy="89" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="55" cy="89" r="1" fill="rgba(197,15,3,1)"/>
- <circle cx="56" cy="89" r="1" fill="rgba(197,15,3,1)"/>
- <circle cx="57" cy="89" r="1" fill="rgba(198,18,3,1)"/>
- <circle cx="58" cy="89" r="1" fill="rgba(198,18,4,1)"/>
- <circle cx="59" cy="89" r="1" fill="rgba(198,18,4,1)"/>
- <circle cx="60" cy="89" r="1" fill="rgba(198,19,4,1)"/>
- <circle cx="61" cy="89" r="1" fill="rgba(199,21,4,1)"/>
- <circle cx="62" cy="89" r="1" fill="rgba(197,21,5,1)"/>
- <circle cx="63" cy="89" r="1" fill="rgba(196,21,4,1)"/>
- <circle cx="64" cy="89" r="1" fill="rgba(193,15,2,1)"/>
- <circle cx="65" cy="89" r="1" fill="rgba(147,4,0,1)"/>
- <circle cx="66" cy="89" r="1" fill="rgba(130,12,2,1)"/>
- <circle cx="67" cy="89" r="1" fill="rgba(190,20,4,1)"/>
- <circle cx="68" cy="89" r="1" fill="rgba(190,22,5,1)"/>
- <circle cx="69" cy="89" r="1" fill="rgba(196,28,7,1)"/>
- <circle cx="70" cy="89" r="1" fill="rgba(201,33,9,1)"/>
- <circle cx="71" cy="89" r="1" fill="rgba(204,37,11,1)"/>
- <circle cx="72" cy="89" r="1" fill="rgba(206,40,12,1)"/>
- <circle cx="73" cy="89" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="74" cy="89" r="1" fill="rgba(208,45,14,1)"/>
- <circle cx="75" cy="89" r="1" fill="rgba(209,48,16,1)"/>
- <circle cx="76" cy="89" r="1" fill="rgba(210,51,17,1)"/>
- <circle cx="77" cy="89" r="1" fill="rgba(212,55,18,1)"/>
- <circle cx="78" cy="89" r="1" fill="rgba(213,59,20,1)"/>
- <circle cx="79" cy="89" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="80" cy="89" r="1" fill="rgba(215,67,24,1)"/>
- <circle cx="81" cy="89" r="1" fill="rgba(217,70,27,1)"/>
- <circle cx="82" cy="89" r="1" fill="rgba(219,75,28,1)"/>
- <circle cx="83" cy="89" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="84" cy="89" r="1" fill="rgba(222,85,34,1)"/>
- <circle cx="85" cy="89" r="1" fill="rgba(224,89,37,1)"/>
- <circle cx="86" cy="89" r="1" fill="rgba(226,94,40,1)"/>
- <circle cx="87" cy="89" r="1" fill="rgba(228,100,43,1)"/>
- <circle cx="88" cy="89" r="1" fill="rgba(230,106,47,1)"/>
- <circle cx="89" cy="89" r="1" fill="rgba(233,111,51,1)"/>
- <circle cx="90" cy="89" r="1" fill="rgba(235,117,55,1)"/>
- <circle cx="91" cy="89" r="1" fill="rgba(236,122,58,1)"/>
- <circle cx="92" cy="89" r="1" fill="rgba(238,127,61,1)"/>
- <circle cx="93" cy="89" r="1" fill="rgba(240,132,63,1)"/>
- <circle cx="94" cy="89" r="1" fill="rgba(241,134,64,1)"/>
- <circle cx="95" cy="89" r="1" fill="rgba(240,130,60,1)"/>
- <circle cx="96" cy="89" r="1" fill="rgba(238,122,55,1)"/>
- <circle cx="97" cy="89" r="1" fill="rgba(244,119,52,1)"/>
- <circle cx="98" cy="89" r="1" fill="rgba(138,49,16,0.835294)"/>
- <circle cx="99" cy="89" r="1" fill="rgba(31,0,0,0.670588)"/>
- <circle cx="100" cy="89" r="1" fill="rgba(42,5,0,0.603922)"/>
- <circle cx="101" cy="89" r="1" fill="rgba(29,1,0,0.498039)"/>
- <circle cx="102" cy="89" r="1" fill="rgba(21,1,0,0.4)"/>
- <circle cx="103" cy="89" r="1" fill="rgba(21,4,0,0.317647)"/>
- <circle cx="104" cy="89" r="1" fill="rgba(19,4,0,0.243137)"/>
- <circle cx="105" cy="89" r="1" fill="rgba(4,0,0,0.164706)"/>
- <circle cx="106" cy="89" r="1" fill="rgba(0,0,0,0.0941176)"/>
- <circle cx="107" cy="89" r="1" fill="rgba(7,0,0,0.0431373)"/>
- <circle cx="108" cy="89" r="1" fill="rgba(0,0,0,0.00784314)"/>
- <circle cx="109" cy="89" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="110" cy="89" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="111" cy="89" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="112" cy="89" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="113" cy="89" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="114" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="89" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="90" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="19" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="20" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="21" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="22" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="23" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="24" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="25" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="26" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="27" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="28" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="29" cy="90" r="1" fill="rgba(105,9,0,0)"/>
- <circle cx="30" cy="90" r="1" fill="rgba(106,9,0,0)"/>
- <circle cx="31" cy="90" r="1" fill="rgba(86,6,0,0.156863)"/>
- <circle cx="32" cy="90" r="1" fill="rgba(149,11,1,0.792157)"/>
- <circle cx="33" cy="90" r="1" fill="rgba(192,15,3,1)"/>
- <circle cx="34" cy="90" r="1" fill="rgba(189,14,2,1)"/>
- <circle cx="35" cy="90" r="1" fill="rgba(192,15,2,1)"/>
- <circle cx="36" cy="90" r="1" fill="rgba(194,16,3,1)"/>
- <circle cx="37" cy="90" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="38" cy="90" r="1" fill="rgba(195,15,3,1)"/>
- <circle cx="39" cy="90" r="1" fill="rgba(196,15,2,1)"/>
- <circle cx="40" cy="90" r="1" fill="rgba(196,15,2,1)"/>
- <circle cx="41" cy="90" r="1" fill="rgba(196,15,2,1)"/>
- <circle cx="42" cy="90" r="1" fill="rgba(198,15,2,1)"/>
- <circle cx="43" cy="90" r="1" fill="rgba(199,14,2,1)"/>
- <circle cx="44" cy="90" r="1" fill="rgba(175,16,3,1)"/>
- <circle cx="45" cy="90" r="1" fill="rgba(162,16,4,1)"/>
- <circle cx="46" cy="90" r="1" fill="rgba(163,15,3,1)"/>
- <circle cx="47" cy="90" r="1" fill="rgba(183,14,3,1)"/>
- <circle cx="48" cy="90" r="1" fill="rgba(200,14,3,1)"/>
- <circle cx="49" cy="90" r="1" fill="rgba(200,14,3,1)"/>
- <circle cx="50" cy="90" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="51" cy="90" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="52" cy="90" r="1" fill="rgba(197,16,3,1)"/>
- <circle cx="53" cy="90" r="1" fill="rgba(197,16,3,1)"/>
- <circle cx="54" cy="90" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="55" cy="90" r="1" fill="rgba(197,18,4,1)"/>
- <circle cx="56" cy="90" r="1" fill="rgba(198,17,4,1)"/>
- <circle cx="57" cy="90" r="1" fill="rgba(199,20,4,1)"/>
- <circle cx="58" cy="90" r="1" fill="rgba(199,19,4,1)"/>
- <circle cx="59" cy="90" r="1" fill="rgba(199,20,4,1)"/>
- <circle cx="60" cy="90" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="61" cy="90" r="1" fill="rgba(200,23,6,1)"/>
- <circle cx="62" cy="90" r="1" fill="rgba(198,24,6,1)"/>
- <circle cx="63" cy="90" r="1" fill="rgba(196,23,5,1)"/>
- <circle cx="64" cy="90" r="1" fill="rgba(192,15,2,1)"/>
- <circle cx="65" cy="90" r="1" fill="rgba(144,4,0,1)"/>
- <circle cx="66" cy="90" r="1" fill="rgba(130,13,2,1)"/>
- <circle cx="67" cy="90" r="1" fill="rgba(189,21,4,1)"/>
- <circle cx="68" cy="90" r="1" fill="rgba(189,24,6,1)"/>
- <circle cx="69" cy="90" r="1" fill="rgba(197,30,8,1)"/>
- <circle cx="70" cy="90" r="1" fill="rgba(202,35,10,1)"/>
- <circle cx="71" cy="90" r="1" fill="rgba(206,40,12,1)"/>
- <circle cx="72" cy="90" r="1" fill="rgba(207,43,13,1)"/>
- <circle cx="73" cy="90" r="1" fill="rgba(208,46,14,1)"/>
- <circle cx="74" cy="90" r="1" fill="rgba(210,48,15,1)"/>
- <circle cx="75" cy="90" r="1" fill="rgba(210,51,17,1)"/>
- <circle cx="76" cy="90" r="1" fill="rgba(211,55,19,1)"/>
- <circle cx="77" cy="90" r="1" fill="rgba(212,59,20,1)"/>
- <circle cx="78" cy="90" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="79" cy="90" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="80" cy="90" r="1" fill="rgba(217,70,27,1)"/>
- <circle cx="81" cy="90" r="1" fill="rgba(218,74,28,1)"/>
- <circle cx="82" cy="90" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="83" cy="90" r="1" fill="rgba(222,84,33,1)"/>
- <circle cx="84" cy="90" r="1" fill="rgba(224,88,36,1)"/>
- <circle cx="85" cy="90" r="1" fill="rgba(226,93,39,1)"/>
- <circle cx="86" cy="90" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="87" cy="90" r="1" fill="rgba(230,104,46,1)"/>
- <circle cx="88" cy="90" r="1" fill="rgba(232,109,49,1)"/>
- <circle cx="89" cy="90" r="1" fill="rgba(234,115,54,1)"/>
- <circle cx="90" cy="90" r="1" fill="rgba(236,121,56,1)"/>
- <circle cx="91" cy="90" r="1" fill="rgba(237,125,60,1)"/>
- <circle cx="92" cy="90" r="1" fill="rgba(238,129,62,1)"/>
- <circle cx="93" cy="90" r="1" fill="rgba(240,133,63,1)"/>
- <circle cx="94" cy="90" r="1" fill="rgba(240,131,61,1)"/>
- <circle cx="95" cy="90" r="1" fill="rgba(238,123,55,1)"/>
- <circle cx="96" cy="90" r="1" fill="rgba(242,121,52,1)"/>
- <circle cx="97" cy="90" r="1" fill="rgba(207,92,37,0.94902)"/>
- <circle cx="98" cy="90" r="1" fill="rgba(57,10,2,0.717647)"/>
- <circle cx="99" cy="90" r="1" fill="rgba(40,4,0,0.647059)"/>
- <circle cx="100" cy="90" r="1" fill="rgba(36,4,0,0.552941)"/>
- <circle cx="101" cy="90" r="1" fill="rgba(24,1,0,0.447059)"/>
- <circle cx="102" cy="90" r="1" fill="rgba(21,2,0,0.360784)"/>
- <circle cx="103" cy="90" r="1" fill="rgba(22,5,0,0.282353)"/>
- <circle cx="104" cy="90" r="1" fill="rgba(21,3,0,0.207843)"/>
- <circle cx="105" cy="90" r="1" fill="rgba(7,0,0,0.129412)"/>
- <circle cx="106" cy="90" r="1" fill="rgba(4,0,0,0.0666667)"/>
- <circle cx="107" cy="90" r="1" fill="rgba(7,0,0,0.0235294)"/>
- <circle cx="108" cy="90" r="1" fill="none"/>
- <circle cx="109" cy="90" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="110" cy="90" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="111" cy="90" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="90" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="90" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="90" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="91" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="19" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="20" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="21" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="22" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="23" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="24" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="25" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="26" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="27" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="28" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="29" cy="91" r="1" fill="rgba(109,8,0,0)"/>
- <circle cx="30" cy="91" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="31" cy="91" r="1" fill="rgba(99,7,0,0.0470588)"/>
- <circle cx="32" cy="91" r="1" fill="rgba(87,5,0,0.462745)"/>
- <circle cx="33" cy="91" r="1" fill="rgba(179,13,2,0.980392)"/>
- <circle cx="34" cy="91" r="1" fill="rgba(188,14,3,1)"/>
- <circle cx="35" cy="91" r="1" fill="rgba(188,15,3,1)"/>
- <circle cx="36" cy="91" r="1" fill="rgba(191,15,3,1)"/>
- <circle cx="37" cy="91" r="1" fill="rgba(192,15,3,1)"/>
- <circle cx="38" cy="91" r="1" fill="rgba(193,15,3,1)"/>
- <circle cx="39" cy="91" r="1" fill="rgba(194,15,3,1)"/>
- <circle cx="40" cy="91" r="1" fill="rgba(195,15,3,1)"/>
- <circle cx="41" cy="91" r="1" fill="rgba(195,15,3,1)"/>
- <circle cx="42" cy="91" r="1" fill="rgba(195,15,3,1)"/>
- <circle cx="43" cy="91" r="1" fill="rgba(196,14,3,1)"/>
- <circle cx="44" cy="91" r="1" fill="rgba(199,14,2,1)"/>
- <circle cx="45" cy="91" r="1" fill="rgba(200,14,2,1)"/>
- <circle cx="46" cy="91" r="1" fill="rgba(201,14,3,1)"/>
- <circle cx="47" cy="91" r="1" fill="rgba(199,15,3,1)"/>
- <circle cx="48" cy="91" r="1" fill="rgba(197,15,3,1)"/>
- <circle cx="49" cy="91" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="50" cy="91" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="51" cy="91" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="52" cy="91" r="1" fill="rgba(197,17,4,1)"/>
- <circle cx="53" cy="91" r="1" fill="rgba(198,19,4,1)"/>
- <circle cx="54" cy="91" r="1" fill="rgba(198,19,4,1)"/>
- <circle cx="55" cy="91" r="1" fill="rgba(199,19,4,1)"/>
- <circle cx="56" cy="91" r="1" fill="rgba(199,20,4,1)"/>
- <circle cx="57" cy="91" r="1" fill="rgba(199,22,5,1)"/>
- <circle cx="58" cy="91" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="59" cy="91" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="60" cy="91" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="61" cy="91" r="1" fill="rgba(200,26,7,1)"/>
- <circle cx="62" cy="91" r="1" fill="rgba(199,25,7,1)"/>
- <circle cx="63" cy="91" r="1" fill="rgba(196,24,6,1)"/>
- <circle cx="64" cy="91" r="1" fill="rgba(192,16,3,1)"/>
- <circle cx="65" cy="91" r="1" fill="rgba(143,3,0,1)"/>
- <circle cx="66" cy="91" r="1" fill="rgba(130,13,2,1)"/>
- <circle cx="67" cy="91" r="1" fill="rgba(189,22,5,1)"/>
- <circle cx="68" cy="91" r="1" fill="rgba(190,25,6,1)"/>
- <circle cx="69" cy="91" r="1" fill="rgba(197,32,9,1)"/>
- <circle cx="70" cy="91" r="1" fill="rgba(203,37,11,1)"/>
- <circle cx="71" cy="91" r="1" fill="rgba(207,42,13,1)"/>
- <circle cx="72" cy="91" r="1" fill="rgba(208,46,14,1)"/>
- <circle cx="73" cy="91" r="1" fill="rgba(209,49,16,1)"/>
- <circle cx="74" cy="91" r="1" fill="rgba(210,52,17,1)"/>
- <circle cx="75" cy="91" r="1" fill="rgba(211,55,18,1)"/>
- <circle cx="76" cy="91" r="1" fill="rgba(212,59,20,1)"/>
- <circle cx="77" cy="91" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="78" cy="91" r="1" fill="rgba(215,65,24,1)"/>
- <circle cx="79" cy="91" r="1" fill="rgba(217,70,26,1)"/>
- <circle cx="80" cy="91" r="1" fill="rgba(219,74,28,1)"/>
- <circle cx="81" cy="91" r="1" fill="rgba(221,78,31,1)"/>
- <circle cx="82" cy="91" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="83" cy="91" r="1" fill="rgba(223,87,36,1)"/>
- <circle cx="84" cy="91" r="1" fill="rgba(226,92,39,1)"/>
- <circle cx="85" cy="91" r="1" fill="rgba(227,97,42,1)"/>
- <circle cx="86" cy="91" r="1" fill="rgba(229,103,45,1)"/>
- <circle cx="87" cy="91" r="1" fill="rgba(231,108,48,1)"/>
- <circle cx="88" cy="91" r="1" fill="rgba(233,113,52,1)"/>
- <circle cx="89" cy="91" r="1" fill="rgba(235,119,56,1)"/>
- <circle cx="90" cy="91" r="1" fill="rgba(236,124,58,1)"/>
- <circle cx="91" cy="91" r="1" fill="rgba(237,128,61,1)"/>
- <circle cx="92" cy="91" r="1" fill="rgba(240,131,62,1)"/>
- <circle cx="93" cy="91" r="1" fill="rgba(240,130,60,1)"/>
- <circle cx="94" cy="91" r="1" fill="rgba(238,124,56,1)"/>
- <circle cx="95" cy="91" r="1" fill="rgba(237,116,49,1)"/>
- <circle cx="96" cy="91" r="1" fill="rgba(239,114,48,1)"/>
- <circle cx="97" cy="91" r="1" fill="rgba(121,39,11,0.811765)"/>
- <circle cx="98" cy="91" r="1" fill="rgba(31,0,0,0.666667)"/>
- <circle cx="99" cy="91" r="1" fill="rgba(40,5,1,0.6)"/>
- <circle cx="100" cy="91" r="1" fill="rgba(29,2,0,0.498039)"/>
- <circle cx="101" cy="91" r="1" fill="rgba(21,1,0,0.4)"/>
- <circle cx="102" cy="91" r="1" fill="rgba(22,4,0,0.317647)"/>
- <circle cx="103" cy="91" r="1" fill="rgba(24,6,0,0.243137)"/>
- <circle cx="104" cy="91" r="1" fill="rgba(21,2,0,0.168627)"/>
- <circle cx="105" cy="91" r="1" fill="rgba(7,0,0,0.0980392)"/>
- <circle cx="106" cy="91" r="1" fill="rgba(4,0,0,0.0431373)"/>
- <circle cx="107" cy="91" r="1" fill="rgba(4,0,0,0.0117647)"/>
- <circle cx="108" cy="91" r="1" fill="none"/>
- <circle cx="109" cy="91" r="1" fill="none"/>
- <circle cx="110" cy="91" r="1" fill="none"/>
- <circle cx="111" cy="91" r="1" fill="none"/>
- <circle cx="112" cy="91" r="1" fill="none"/>
- <circle cx="113" cy="91" r="1" fill="none"/>
- <circle cx="114" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="91" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="92" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="19" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="20" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="21" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="22" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="23" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="24" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="25" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="26" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="27" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="28" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="29" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="30" cy="92" r="1" fill="rgba(113,8,0,0)"/>
- <circle cx="31" cy="92" r="1" fill="rgba(114,8,0,0.00392157)"/>
- <circle cx="32" cy="92" r="1" fill="rgba(73,4,0,0.227451)"/>
- <circle cx="33" cy="92" r="1" fill="rgba(123,8,1,0.74902)"/>
- <circle cx="34" cy="92" r="1" fill="rgba(192,15,3,1)"/>
- <circle cx="35" cy="92" r="1" fill="rgba(188,15,3,1)"/>
- <circle cx="36" cy="92" r="1" fill="rgba(189,15,3,1)"/>
- <circle cx="37" cy="92" r="1" fill="rgba(191,16,3,1)"/>
- <circle cx="38" cy="92" r="1" fill="rgba(192,17,3,1)"/>
- <circle cx="39" cy="92" r="1" fill="rgba(193,16,3,1)"/>
- <circle cx="40" cy="92" r="1" fill="rgba(194,16,3,1)"/>
- <circle cx="41" cy="92" r="1" fill="rgba(195,17,3,1)"/>
- <circle cx="42" cy="92" r="1" fill="rgba(195,16,3,1)"/>
- <circle cx="43" cy="92" r="1" fill="rgba(196,16,3,1)"/>
- <circle cx="44" cy="92" r="1" fill="rgba(196,17,3,1)"/>
- <circle cx="45" cy="92" r="1" fill="rgba(196,17,3,1)"/>
- <circle cx="46" cy="92" r="1" fill="rgba(196,17,3,1)"/>
- <circle cx="47" cy="92" r="1" fill="rgba(196,18,3,1)"/>
- <circle cx="48" cy="92" r="1" fill="rgba(197,17,3,1)"/>
- <circle cx="49" cy="92" r="1" fill="rgba(197,17,4,1)"/>
- <circle cx="50" cy="92" r="1" fill="rgba(197,19,4,1)"/>
- <circle cx="51" cy="92" r="1" fill="rgba(198,18,4,1)"/>
- <circle cx="52" cy="92" r="1" fill="rgba(199,18,4,1)"/>
- <circle cx="53" cy="92" r="1" fill="rgba(199,20,5,1)"/>
- <circle cx="54" cy="92" r="1" fill="rgba(199,20,5,1)"/>
- <circle cx="55" cy="92" r="1" fill="rgba(200,20,5,1)"/>
- <circle cx="56" cy="92" r="1" fill="rgba(200,22,5,1)"/>
- <circle cx="57" cy="92" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="58" cy="92" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="59" cy="92" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="60" cy="92" r="1" fill="rgba(201,27,7,1)"/>
- <circle cx="61" cy="92" r="1" fill="rgba(200,27,8,1)"/>
- <circle cx="62" cy="92" r="1" fill="rgba(200,27,7,1)"/>
- <circle cx="63" cy="92" r="1" fill="rgba(196,26,7,1)"/>
- <circle cx="64" cy="92" r="1" fill="rgba(190,17,3,1)"/>
- <circle cx="65" cy="92" r="1" fill="rgba(140,4,0,1)"/>
- <circle cx="66" cy="92" r="1" fill="rgba(130,13,3,1)"/>
- <circle cx="67" cy="92" r="1" fill="rgba(189,22,5,1)"/>
- <circle cx="68" cy="92" r="1" fill="rgba(191,26,6,1)"/>
- <circle cx="69" cy="92" r="1" fill="rgba(197,33,9,1)"/>
- <circle cx="70" cy="92" r="1" fill="rgba(203,41,12,1)"/>
- <circle cx="71" cy="92" r="1" fill="rgba(207,45,14,1)"/>
- <circle cx="72" cy="92" r="1" fill="rgba(209,50,16,1)"/>
- <circle cx="73" cy="92" r="1" fill="rgba(210,52,18,1)"/>
- <circle cx="74" cy="92" r="1" fill="rgba(211,56,19,1)"/>
- <circle cx="75" cy="92" r="1" fill="rgba(213,59,21,1)"/>
- <circle cx="76" cy="92" r="1" fill="rgba(214,63,22,1)"/>
- <circle cx="77" cy="92" r="1" fill="rgba(216,66,24,1)"/>
- <circle cx="78" cy="92" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="79" cy="92" r="1" fill="rgba(218,73,27,1)"/>
- <circle cx="80" cy="92" r="1" fill="rgba(221,78,30,1)"/>
- <circle cx="81" cy="92" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="82" cy="92" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="83" cy="92" r="1" fill="rgba(225,91,38,1)"/>
- <circle cx="84" cy="92" r="1" fill="rgba(227,96,42,1)"/>
- <circle cx="85" cy="92" r="1" fill="rgba(228,101,44,1)"/>
- <circle cx="86" cy="92" r="1" fill="rgba(230,107,48,1)"/>
- <circle cx="87" cy="92" r="1" fill="rgba(233,112,51,1)"/>
- <circle cx="88" cy="92" r="1" fill="rgba(235,117,55,1)"/>
- <circle cx="89" cy="92" r="1" fill="rgba(236,123,57,1)"/>
- <circle cx="90" cy="92" r="1" fill="rgba(237,126,60,1)"/>
- <circle cx="91" cy="92" r="1" fill="rgba(239,130,62,1)"/>
- <circle cx="92" cy="92" r="1" fill="rgba(240,131,62,1)"/>
- <circle cx="93" cy="92" r="1" fill="rgba(239,125,56,1)"/>
- <circle cx="94" cy="92" r="1" fill="rgba(236,116,49,1)"/>
- <circle cx="95" cy="92" r="1" fill="rgba(241,115,48,1)"/>
- <circle cx="96" cy="92" r="1" fill="rgba(188,78,29,0.917647)"/>
- <circle cx="97" cy="92" r="1" fill="rgba(43,4,1,0.698039)"/>
- <circle cx="98" cy="92" r="1" fill="rgba(40,5,1,0.631373)"/>
- <circle cx="99" cy="92" r="1" fill="rgba(33,3,0,0.541176)"/>
- <circle cx="100" cy="92" r="1" fill="rgba(24,1,0,0.439216)"/>
- <circle cx="101" cy="92" r="1" fill="rgba(22,2,0,0.352941)"/>
- <circle cx="102" cy="92" r="1" fill="rgba(26,7,1,0.278431)"/>
- <circle cx="103" cy="92" r="1" fill="rgba(28,7,1,0.2)"/>
- <circle cx="104" cy="92" r="1" fill="rgba(17,1,0,0.12549)"/>
- <circle cx="105" cy="92" r="1" fill="rgba(4,0,0,0.0666667)"/>
- <circle cx="106" cy="92" r="1" fill="rgba(0,0,0,0.0235294)"/>
- <circle cx="107" cy="92" r="1" fill="rgba(4,0,0,0.00392157)"/>
- <circle cx="108" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="109" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="110" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="111" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="112" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="113" cy="92" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="114" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="92" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="93" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="19" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="20" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="21" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="22" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="23" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="24" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="25" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="26" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="27" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="28" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="29" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="30" cy="93" r="1" fill="rgba(110,8,0,0)"/>
- <circle cx="31" cy="93" r="1" fill="rgba(112,8,0,0)"/>
- <circle cx="32" cy="93" r="1" fill="rgba(94,6,0,0.105882)"/>
- <circle cx="33" cy="93" r="1" fill="rgba(53,3,0,0.447059)"/>
- <circle cx="34" cy="93" r="1" fill="rgba(163,13,3,0.917647)"/>
- <circle cx="35" cy="93" r="1" fill="rgba(192,17,3,1)"/>
- <circle cx="36" cy="93" r="1" fill="rgba(188,17,3,1)"/>
- <circle cx="37" cy="93" r="1" fill="rgba(191,17,3,1)"/>
- <circle cx="38" cy="93" r="1" fill="rgba(192,17,4,1)"/>
- <circle cx="39" cy="93" r="1" fill="rgba(194,18,4,1)"/>
- <circle cx="40" cy="93" r="1" fill="rgba(194,19,4,1)"/>
- <circle cx="41" cy="93" r="1" fill="rgba(196,18,4,1)"/>
- <circle cx="42" cy="93" r="1" fill="rgba(196,19,4,1)"/>
- <circle cx="43" cy="93" r="1" fill="rgba(196,18,4,1)"/>
- <circle cx="44" cy="93" r="1" fill="rgba(196,19,4,1)"/>
- <circle cx="45" cy="93" r="1" fill="rgba(196,19,4,1)"/>
- <circle cx="46" cy="93" r="1" fill="rgba(196,20,4,1)"/>
- <circle cx="47" cy="93" r="1" fill="rgba(197,20,4,1)"/>
- <circle cx="48" cy="93" r="1" fill="rgba(198,20,4,1)"/>
- <circle cx="49" cy="93" r="1" fill="rgba(198,20,4,1)"/>
- <circle cx="50" cy="93" r="1" fill="rgba(198,20,4,1)"/>
- <circle cx="51" cy="93" r="1" fill="rgba(199,21,5,1)"/>
- <circle cx="52" cy="93" r="1" fill="rgba(199,21,5,1)"/>
- <circle cx="53" cy="93" r="1" fill="rgba(199,21,5,1)"/>
- <circle cx="54" cy="93" r="1" fill="rgba(200,23,6,1)"/>
- <circle cx="55" cy="93" r="1" fill="rgba(200,23,6,1)"/>
- <circle cx="56" cy="93" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="57" cy="93" r="1" fill="rgba(201,25,6,1)"/>
- <circle cx="58" cy="93" r="1" fill="rgba(201,26,7,1)"/>
- <circle cx="59" cy="93" r="1" fill="rgba(202,27,7,1)"/>
- <circle cx="60" cy="93" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="61" cy="93" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="62" cy="93" r="1" fill="rgba(200,29,8,1)"/>
- <circle cx="63" cy="93" r="1" fill="rgba(196,28,7,1)"/>
- <circle cx="64" cy="93" r="1" fill="rgba(189,18,3,1)"/>
- <circle cx="65" cy="93" r="1" fill="rgba(138,3,0,1)"/>
- <circle cx="66" cy="93" r="1" fill="rgba(130,14,3,1)"/>
- <circle cx="67" cy="93" r="1" fill="rgba(189,24,5,1)"/>
- <circle cx="68" cy="93" r="1" fill="rgba(191,29,7,1)"/>
- <circle cx="69" cy="93" r="1" fill="rgba(199,36,10,1)"/>
- <circle cx="70" cy="93" r="1" fill="rgba(204,43,13,1)"/>
- <circle cx="71" cy="93" r="1" fill="rgba(208,49,16,1)"/>
- <circle cx="72" cy="93" r="1" fill="rgba(210,53,18,1)"/>
- <circle cx="73" cy="93" r="1" fill="rgba(212,56,20,1)"/>
- <circle cx="74" cy="93" r="1" fill="rgba(213,59,21,1)"/>
- <circle cx="75" cy="93" r="1" fill="rgba(214,62,22,1)"/>
- <circle cx="76" cy="93" r="1" fill="rgba(215,66,24,1)"/>
- <circle cx="77" cy="93" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="78" cy="93" r="1" fill="rgba(219,73,28,1)"/>
- <circle cx="79" cy="93" r="1" fill="rgba(221,77,30,1)"/>
- <circle cx="80" cy="93" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="81" cy="93" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="82" cy="93" r="1" fill="rgba(225,90,37,1)"/>
- <circle cx="83" cy="93" r="1" fill="rgba(227,95,41,1)"/>
- <circle cx="84" cy="93" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="85" cy="93" r="1" fill="rgba(230,106,47,1)"/>
- <circle cx="86" cy="93" r="1" fill="rgba(233,111,51,1)"/>
- <circle cx="87" cy="93" r="1" fill="rgba(234,116,54,1)"/>
- <circle cx="88" cy="93" r="1" fill="rgba(236,121,57,1)"/>
- <circle cx="89" cy="93" r="1" fill="rgba(237,125,60,1)"/>
- <circle cx="90" cy="93" r="1" fill="rgba(238,128,61,1)"/>
- <circle cx="91" cy="93" r="1" fill="rgba(240,131,61,1)"/>
- <circle cx="92" cy="93" r="1" fill="rgba(238,126,56,1)"/>
- <circle cx="93" cy="93" r="1" fill="rgba(237,117,50,1)"/>
- <circle cx="94" cy="93" r="1" fill="rgba(237,111,46,1)"/>
- <circle cx="95" cy="93" r="1" fill="rgba(226,100,40,0.984314)"/>
- <circle cx="96" cy="93" r="1" fill="rgba(88,23,6,0.764706)"/>
- <circle cx="97" cy="93" r="1" fill="rgba(34,2,0,0.654902)"/>
- <circle cx="98" cy="93" r="1" fill="rgba(37,4,0,0.576471)"/>
- <circle cx="99" cy="93" r="1" fill="rgba(24,1,0,0.478431)"/>
- <circle cx="100" cy="93" r="1" fill="rgba(21,1,0,0.384314)"/>
- <circle cx="101" cy="93" r="1" fill="rgba(26,5,1,0.309804)"/>
- <circle cx="102" cy="93" r="1" fill="rgba(33,9,2,0.235294)"/>
- <circle cx="103" cy="93" r="1" fill="rgba(33,7,1,0.156863)"/>
- <circle cx="104" cy="93" r="1" fill="rgba(19,1,0,0.0862745)"/>
- <circle cx="105" cy="93" r="1" fill="rgba(4,0,0,0.0352941)"/>
- <circle cx="106" cy="93" r="1" fill="rgba(0,0,0,0.00784314)"/>
- <circle cx="107" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="108" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="109" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="110" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="111" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="93" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="93" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="94" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="19" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="20" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="21" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="22" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="23" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="24" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="25" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="26" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="27" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="28" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="29" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="30" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="31" cy="94" r="1" fill="rgba(98,6,0,0)"/>
- <circle cx="32" cy="94" r="1" fill="rgba(97,6,0,0.0196078)"/>
- <circle cx="33" cy="94" r="1" fill="rgba(53,2,0,0.270588)"/>
- <circle cx="34" cy="94" r="1" fill="rgba(78,6,0,0.635294)"/>
- <circle cx="35" cy="94" r="1" fill="rgba(186,18,4,0.988235)"/>
- <circle cx="36" cy="94" r="1" fill="rgba(189,18,4,1)"/>
- <circle cx="37" cy="94" r="1" fill="rgba(189,18,4,1)"/>
- <circle cx="38" cy="94" r="1" fill="rgba(192,19,4,1)"/>
- <circle cx="39" cy="94" r="1" fill="rgba(194,20,4,1)"/>
- <circle cx="40" cy="94" r="1" fill="rgba(195,20,4,1)"/>
- <circle cx="41" cy="94" r="1" fill="rgba(196,21,4,1)"/>
- <circle cx="42" cy="94" r="1" fill="rgba(196,21,4,1)"/>
- <circle cx="43" cy="94" r="1" fill="rgba(196,21,5,1)"/>
- <circle cx="44" cy="94" r="1" fill="rgba(197,21,5,1)"/>
- <circle cx="45" cy="94" r="1" fill="rgba(197,21,5,1)"/>
- <circle cx="46" cy="94" r="1" fill="rgba(197,21,5,1)"/>
- <circle cx="47" cy="94" r="1" fill="rgba(197,21,5,1)"/>
- <circle cx="48" cy="94" r="1" fill="rgba(198,22,5,1)"/>
- <circle cx="49" cy="94" r="1" fill="rgba(199,22,5,1)"/>
- <circle cx="50" cy="94" r="1" fill="rgba(199,23,5,1)"/>
- <circle cx="51" cy="94" r="1" fill="rgba(200,23,5,1)"/>
- <circle cx="52" cy="94" r="1" fill="rgba(200,24,6,1)"/>
- <circle cx="53" cy="94" r="1" fill="rgba(200,25,6,1)"/>
- <circle cx="54" cy="94" r="1" fill="rgba(200,25,6,1)"/>
- <circle cx="55" cy="94" r="1" fill="rgba(200,26,6,1)"/>
- <circle cx="56" cy="94" r="1" fill="rgba(201,27,7,1)"/>
- <circle cx="57" cy="94" r="1" fill="rgba(202,28,7,1)"/>
- <circle cx="58" cy="94" r="1" fill="rgba(202,29,8,1)"/>
- <circle cx="59" cy="94" r="1" fill="rgba(203,30,8,1)"/>
- <circle cx="60" cy="94" r="1" fill="rgba(203,31,8,1)"/>
- <circle cx="61" cy="94" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="62" cy="94" r="1" fill="rgba(202,32,8,1)"/>
- <circle cx="63" cy="94" r="1" fill="rgba(198,30,8,1)"/>
- <circle cx="64" cy="94" r="1" fill="rgba(189,18,3,1)"/>
- <circle cx="65" cy="94" r="1" fill="rgba(137,3,0,1)"/>
- <circle cx="66" cy="94" r="1" fill="rgba(131,16,3,1)"/>
- <circle cx="67" cy="94" r="1" fill="rgba(191,26,6,1)"/>
- <circle cx="68" cy="94" r="1" fill="rgba(192,32,8,1)"/>
- <circle cx="69" cy="94" r="1" fill="rgba(200,39,11,1)"/>
- <circle cx="70" cy="94" r="1" fill="rgba(206,46,15,1)"/>
- <circle cx="71" cy="94" r="1" fill="rgba(210,52,17,1)"/>
- <circle cx="72" cy="94" r="1" fill="rgba(211,56,20,1)"/>
- <circle cx="73" cy="94" r="1" fill="rgba(213,60,21,1)"/>
- <circle cx="74" cy="94" r="1" fill="rgba(214,63,22,1)"/>
- <circle cx="75" cy="94" r="1" fill="rgba(217,66,24,1)"/>
- <circle cx="76" cy="94" r="1" fill="rgba(217,69,26,1)"/>
- <circle cx="77" cy="94" r="1" fill="rgba(219,73,27,1)"/>
- <circle cx="78" cy="94" r="1" fill="rgba(220,77,30,1)"/>
- <circle cx="79" cy="94" r="1" fill="rgba(222,82,33,1)"/>
- <circle cx="80" cy="94" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="81" cy="94" r="1" fill="rgba(224,90,37,1)"/>
- <circle cx="82" cy="94" r="1" fill="rgba(226,95,41,1)"/>
- <circle cx="83" cy="94" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="84" cy="94" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="85" cy="94" r="1" fill="rgba(232,110,50,1)"/>
- <circle cx="86" cy="94" r="1" fill="rgba(233,115,53,1)"/>
- <circle cx="87" cy="94" r="1" fill="rgba(236,120,56,1)"/>
- <circle cx="88" cy="94" r="1" fill="rgba(237,124,59,1)"/>
- <circle cx="89" cy="94" r="1" fill="rgba(238,127,60,1)"/>
- <circle cx="90" cy="94" r="1" fill="rgba(239,129,61,1)"/>
- <circle cx="91" cy="94" r="1" fill="rgba(239,126,57,1)"/>
- <circle cx="92" cy="94" r="1" fill="rgba(236,117,49,1)"/>
- <circle cx="93" cy="94" r="1" fill="rgba(234,109,44,1)"/>
- <circle cx="94" cy="94" r="1" fill="rgba(239,107,43,1)"/>
- <circle cx="95" cy="94" r="1" fill="rgba(144,49,16,0.85098)"/>
- <circle cx="96" cy="94" r="1" fill="rgba(29,0,0,0.678431)"/>
- <circle cx="97" cy="94" r="1" fill="rgba(42,5,1,0.615686)"/>
- <circle cx="98" cy="94" r="1" fill="rgba(31,2,0,0.513725)"/>
- <circle cx="99" cy="94" r="1" fill="rgba(21,0,0,0.423529)"/>
- <circle cx="100" cy="94" r="1" fill="rgba(21,3,0,0.341176)"/>
- <circle cx="101" cy="94" r="1" fill="rgba(29,9,2,0.270588)"/>
- <circle cx="102" cy="94" r="1" fill="rgba(37,11,2,0.192157)"/>
- <circle cx="103" cy="94" r="1" fill="rgba(33,6,0,0.113725)"/>
- <circle cx="104" cy="94" r="1" fill="rgba(15,0,0,0.054902)"/>
- <circle cx="105" cy="94" r="1" fill="rgba(4,0,0,0.0196078)"/>
- <circle cx="106" cy="94" r="1" fill="none"/>
- <circle cx="107" cy="94" r="1" fill="none"/>
- <circle cx="108" cy="94" r="1" fill="none"/>
- <circle cx="109" cy="94" r="1" fill="none"/>
- <circle cx="110" cy="94" r="1" fill="none"/>
- <circle cx="111" cy="94" r="1" fill="none"/>
- <circle cx="112" cy="94" r="1" fill="none"/>
- <circle cx="113" cy="94" r="1" fill="none"/>
- <circle cx="114" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="94" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="95" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="19" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="20" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="21" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="22" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="23" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="24" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="25" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="26" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="27" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="28" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="29" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="30" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="31" cy="95" r="1" fill="rgba(100,6,0,0)"/>
- <circle cx="32" cy="95" r="1" fill="rgba(103,7,0,0)"/>
- <circle cx="33" cy="95" r="1" fill="rgba(90,5,0,0.141176)"/>
- <circle cx="34" cy="95" r="1" fill="rgba(26,1,0,0.427451)"/>
- <circle cx="35" cy="95" r="1" fill="rgba(123,11,2,0.780392)"/>
- <circle cx="36" cy="95" r="1" fill="rgba(194,20,4,1)"/>
- <circle cx="37" cy="95" r="1" fill="rgba(188,19,4,1)"/>
- <circle cx="38" cy="95" r="1" fill="rgba(190,21,4,1)"/>
- <circle cx="39" cy="95" r="1" fill="rgba(192,21,5,1)"/>
- <circle cx="40" cy="95" r="1" fill="rgba(194,22,5,1)"/>
- <circle cx="41" cy="95" r="1" fill="rgba(196,22,5,1)"/>
- <circle cx="42" cy="95" r="1" fill="rgba(196,23,5,1)"/>
- <circle cx="43" cy="95" r="1" fill="rgba(196,23,5,1)"/>
- <circle cx="44" cy="95" r="1" fill="rgba(197,23,5,1)"/>
- <circle cx="45" cy="95" r="1" fill="rgba(198,23,5,1)"/>
- <circle cx="46" cy="95" r="1" fill="rgba(198,23,6,1)"/>
- <circle cx="47" cy="95" r="1" fill="rgba(199,24,6,1)"/>
- <circle cx="48" cy="95" r="1" fill="rgba(199,24,6,1)"/>
- <circle cx="49" cy="95" r="1" fill="rgba(199,25,6,1)"/>
- <circle cx="50" cy="95" r="1" fill="rgba(200,25,6,1)"/>
- <circle cx="51" cy="95" r="1" fill="rgba(200,26,7,1)"/>
- <circle cx="52" cy="95" r="1" fill="rgba(200,27,7,1)"/>
- <circle cx="53" cy="95" r="1" fill="rgba(201,27,7,1)"/>
- <circle cx="54" cy="95" r="1" fill="rgba(201,28,7,1)"/>
- <circle cx="55" cy="95" r="1" fill="rgba(201,29,7,1)"/>
- <circle cx="56" cy="95" r="1" fill="rgba(202,30,8,1)"/>
- <circle cx="57" cy="95" r="1" fill="rgba(203,31,8,1)"/>
- <circle cx="58" cy="95" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="59" cy="95" r="1" fill="rgba(203,33,9,1)"/>
- <circle cx="60" cy="95" r="1" fill="rgba(204,34,9,1)"/>
- <circle cx="61" cy="95" r="1" fill="rgba(204,35,10,1)"/>
- <circle cx="62" cy="95" r="1" fill="rgba(203,35,10,1)"/>
- <circle cx="63" cy="95" r="1" fill="rgba(199,32,9,1)"/>
- <circle cx="64" cy="95" r="1" fill="rgba(190,19,3,1)"/>
- <circle cx="65" cy="95" r="1" fill="rgba(138,3,0,1)"/>
- <circle cx="66" cy="95" r="1" fill="rgba(132,18,3,1)"/>
- <circle cx="67" cy="95" r="1" fill="rgba(193,29,7,1)"/>
- <circle cx="68" cy="95" r="1" fill="rgba(194,34,9,1)"/>
- <circle cx="69" cy="95" r="1" fill="rgba(202,43,13,1)"/>
- <circle cx="70" cy="95" r="1" fill="rgba(207,50,16,1)"/>
- <circle cx="71" cy="95" r="1" fill="rgba(211,56,19,1)"/>
- <circle cx="72" cy="95" r="1" fill="rgba(214,60,21,1)"/>
- <circle cx="73" cy="95" r="1" fill="rgba(215,64,22,1)"/>
- <circle cx="74" cy="95" r="1" fill="rgba(216,67,24,1)"/>
- <circle cx="75" cy="95" r="1" fill="rgba(217,70,27,1)"/>
- <circle cx="76" cy="95" r="1" fill="rgba(219,74,29,1)"/>
- <circle cx="77" cy="95" r="1" fill="rgba(220,78,30,1)"/>
- <circle cx="78" cy="95" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="79" cy="95" r="1" fill="rgba(223,86,34,1)"/>
- <circle cx="80" cy="95" r="1" fill="rgba(224,90,37,1)"/>
- <circle cx="81" cy="95" r="1" fill="rgba(226,94,40,1)"/>
- <circle cx="82" cy="95" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="83" cy="95" r="1" fill="rgba(230,105,47,1)"/>
- <circle cx="84" cy="95" r="1" fill="rgba(231,109,49,1)"/>
- <circle cx="85" cy="95" r="1" fill="rgba(233,114,53,1)"/>
- <circle cx="86" cy="95" r="1" fill="rgba(235,118,56,1)"/>
- <circle cx="87" cy="95" r="1" fill="rgba(236,122,58,1)"/>
- <circle cx="88" cy="95" r="1" fill="rgba(238,125,59,1)"/>
- <circle cx="89" cy="95" r="1" fill="rgba(239,127,59,1)"/>
- <circle cx="90" cy="95" r="1" fill="rgba(239,127,57,1)"/>
- <circle cx="91" cy="95" r="1" fill="rgba(237,117,49,1)"/>
- <circle cx="92" cy="95" r="1" fill="rgba(233,107,43,1)"/>
- <circle cx="93" cy="95" r="1" fill="rgba(239,105,42,1)"/>
- <circle cx="94" cy="95" r="1" fill="rgba(187,72,24,0.92549)"/>
- <circle cx="95" cy="95" r="1" fill="rgba(45,5,1,0.709804)"/>
- <circle cx="96" cy="95" r="1" fill="rgba(40,4,1,0.65098)"/>
- <circle cx="97" cy="95" r="1" fill="rgba(36,3,0,0.556863)"/>
- <circle cx="98" cy="95" r="1" fill="rgba(22,0,0,0.458824)"/>
- <circle cx="99" cy="95" r="1" fill="rgba(19,1,0,0.372549)"/>
- <circle cx="100" cy="95" r="1" fill="rgba(26,7,1,0.305882)"/>
- <circle cx="101" cy="95" r="1" fill="rgba(34,12,3,0.227451)"/>
- <circle cx="102" cy="95" r="1" fill="rgba(40,13,2,0.145098)"/>
- <circle cx="103" cy="95" r="1" fill="rgba(31,5,0,0.0784314)"/>
- <circle cx="104" cy="95" r="1" fill="rgba(12,0,0,0.0313725)"/>
- <circle cx="105" cy="95" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="106" cy="95" r="1" fill="none"/>
- <circle cx="107" cy="95" r="1" fill="none"/>
- <circle cx="108" cy="95" r="1" fill="none"/>
- <circle cx="109" cy="95" r="1" fill="none"/>
- <circle cx="110" cy="95" r="1" fill="none"/>
- <circle cx="111" cy="95" r="1" fill="none"/>
- <circle cx="112" cy="95" r="1" fill="none"/>
- <circle cx="113" cy="95" r="1" fill="none"/>
- <circle cx="114" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="95" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="96" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="19" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="20" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="21" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="22" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="23" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="24" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="25" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="26" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="27" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="28" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="29" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="30" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="31" cy="96" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="32" cy="96" r="1" fill="rgba(116,8,0,0)"/>
- <circle cx="33" cy="96" r="1" fill="rgba(112,8,0,0.0313725)"/>
- <circle cx="34" cy="96" r="1" fill="rgba(64,3,0,0.298039)"/>
- <circle cx="35" cy="96" r="1" fill="rgba(29,2,0,0.52549)"/>
- <circle cx="36" cy="96" r="1" fill="rgba(157,16,3,0.878431)"/>
- <circle cx="37" cy="96" r="1" fill="rgba(194,22,5,1)"/>
- <circle cx="38" cy="96" r="1" fill="rgba(189,21,5,1)"/>
- <circle cx="39" cy="96" r="1" fill="rgba(191,22,5,1)"/>
- <circle cx="40" cy="96" r="1" fill="rgba(192,23,5,1)"/>
- <circle cx="41" cy="96" r="1" fill="rgba(195,24,6,1)"/>
- <circle cx="42" cy="96" r="1" fill="rgba(196,24,6,1)"/>
- <circle cx="43" cy="96" r="1" fill="rgba(196,24,6,1)"/>
- <circle cx="44" cy="96" r="1" fill="rgba(197,25,6,1)"/>
- <circle cx="45" cy="96" r="1" fill="rgba(198,26,6,1)"/>
- <circle cx="46" cy="96" r="1" fill="rgba(199,26,7,1)"/>
- <circle cx="47" cy="96" r="1" fill="rgba(200,27,7,1)"/>
- <circle cx="48" cy="96" r="1" fill="rgba(200,27,7,1)"/>
- <circle cx="49" cy="96" r="1" fill="rgba(200,28,7,1)"/>
- <circle cx="50" cy="96" r="1" fill="rgba(200,28,7,1)"/>
- <circle cx="51" cy="96" r="1" fill="rgba(200,28,7,1)"/>
- <circle cx="52" cy="96" r="1" fill="rgba(201,29,8,1)"/>
- <circle cx="53" cy="96" r="1" fill="rgba(201,30,8,1)"/>
- <circle cx="54" cy="96" r="1" fill="rgba(202,30,8,1)"/>
- <circle cx="55" cy="96" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="56" cy="96" r="1" fill="rgba(203,32,9,1)"/>
- <circle cx="57" cy="96" r="1" fill="rgba(203,33,9,1)"/>
- <circle cx="58" cy="96" r="1" fill="rgba(204,35,10,1)"/>
- <circle cx="59" cy="96" r="1" fill="rgba(204,36,10,1)"/>
- <circle cx="60" cy="96" r="1" fill="rgba(205,38,11,1)"/>
- <circle cx="61" cy="96" r="1" fill="rgba(205,39,11,1)"/>
- <circle cx="62" cy="96" r="1" fill="rgba(203,39,11,1)"/>
- <circle cx="63" cy="96" r="1" fill="rgba(200,36,10,1)"/>
- <circle cx="64" cy="96" r="1" fill="rgba(192,21,4,1)"/>
- <circle cx="65" cy="96" r="1" fill="rgba(140,3,0,1)"/>
- <circle cx="66" cy="96" r="1" fill="rgba(135,19,4,1)"/>
- <circle cx="67" cy="96" r="1" fill="rgba(196,32,8,1)"/>
- <circle cx="68" cy="96" r="1" fill="rgba(197,37,10,1)"/>
- <circle cx="69" cy="96" r="1" fill="rgba(203,45,14,1)"/>
- <circle cx="70" cy="96" r="1" fill="rgba(209,53,18,1)"/>
- <circle cx="71" cy="96" r="1" fill="rgba(213,60,20,1)"/>
- <circle cx="72" cy="96" r="1" fill="rgba(215,64,23,1)"/>
- <circle cx="73" cy="96" r="1" fill="rgba(217,67,25,1)"/>
- <circle cx="74" cy="96" r="1" fill="rgba(217,71,27,1)"/>
- <circle cx="75" cy="96" r="1" fill="rgba(218,75,29,1)"/>
- <circle cx="76" cy="96" r="1" fill="rgba(220,78,30,1)"/>
- <circle cx="77" cy="96" r="1" fill="rgba(221,82,33,1)"/>
- <circle cx="78" cy="96" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="79" cy="96" r="1" fill="rgba(224,91,37,1)"/>
- <circle cx="80" cy="96" r="1" fill="rgba(226,95,40,1)"/>
- <circle cx="81" cy="96" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="82" cy="96" r="1" fill="rgba(230,104,46,1)"/>
- <circle cx="83" cy="96" r="1" fill="rgba(231,109,48,1)"/>
- <circle cx="84" cy="96" r="1" fill="rgba(233,114,52,1)"/>
- <circle cx="85" cy="96" r="1" fill="rgba(235,118,55,1)"/>
- <circle cx="86" cy="96" r="1" fill="rgba(236,121,57,1)"/>
- <circle cx="87" cy="96" r="1" fill="rgba(237,124,58,1)"/>
- <circle cx="88" cy="96" r="1" fill="rgba(238,125,58,1)"/>
- <circle cx="89" cy="96" r="1" fill="rgba(238,124,56,1)"/>
- <circle cx="90" cy="96" r="1" fill="rgba(236,117,50,1)"/>
- <circle cx="91" cy="96" r="1" fill="rgba(233,105,42,1)"/>
- <circle cx="92" cy="96" r="1" fill="rgba(234,100,39,1)"/>
- <circle cx="93" cy="96" r="1" fill="rgba(214,84,30,0.972549)"/>
- <circle cx="94" cy="96" r="1" fill="rgba(80,18,4,0.752941)"/>
- <circle cx="95" cy="96" r="1" fill="rgba(34,3,0,0.666667)"/>
- <circle cx="96" cy="96" r="1" fill="rgba(39,4,0,0.596078)"/>
- <circle cx="97" cy="96" r="1" fill="rgba(26,1,0,0.498039)"/>
- <circle cx="98" cy="96" r="1" fill="rgba(19,0,0,0.411765)"/>
- <circle cx="99" cy="96" r="1" fill="rgba(21,4,0,0.337255)"/>
- <circle cx="100" cy="96" r="1" fill="rgba(33,9,2,0.262745)"/>
- <circle cx="101" cy="96" r="1" fill="rgba(43,14,3,0.180392)"/>
- <circle cx="102" cy="96" r="1" fill="rgba(45,10,1,0.101961)"/>
- <circle cx="103" cy="96" r="1" fill="rgba(31,1,0,0.0470588)"/>
- <circle cx="104" cy="96" r="1" fill="rgba(4,0,0,0.0156863)"/>
- <circle cx="105" cy="96" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="107" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="108" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="109" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="110" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="111" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="112" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="113" cy="96" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="114" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="96" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="97" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="19" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="20" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="21" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="22" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="23" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="24" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="25" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="26" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="27" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="28" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="29" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="30" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="31" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="32" cy="97" r="1" fill="rgba(114,8,0,0)"/>
- <circle cx="33" cy="97" r="1" fill="rgba(115,8,0,0)"/>
- <circle cx="34" cy="97" r="1" fill="rgba(96,6,0,0.141176)"/>
- <circle cx="35" cy="97" r="1" fill="rgba(29,1,0,0.419608)"/>
- <circle cx="36" cy="97" r="1" fill="rgba(57,4,0,0.6)"/>
- <circle cx="37" cy="97" r="1" fill="rgba(176,21,5,0.945098)"/>
- <circle cx="38" cy="97" r="1" fill="rgba(193,24,6,1)"/>
- <circle cx="39" cy="97" r="1" fill="rgba(190,23,6,1)"/>
- <circle cx="40" cy="97" r="1" fill="rgba(192,24,6,1)"/>
- <circle cx="41" cy="97" r="1" fill="rgba(193,25,6,1)"/>
- <circle cx="42" cy="97" r="1" fill="rgba(196,26,6,1)"/>
- <circle cx="43" cy="97" r="1" fill="rgba(197,27,7,1)"/>
- <circle cx="44" cy="97" r="1" fill="rgba(197,27,7,1)"/>
- <circle cx="45" cy="97" r="1" fill="rgba(198,28,7,1)"/>
- <circle cx="46" cy="97" r="1" fill="rgba(199,29,7,1)"/>
- <circle cx="47" cy="97" r="1" fill="rgba(200,29,7,1)"/>
- <circle cx="48" cy="97" r="1" fill="rgba(200,30,8,1)"/>
- <circle cx="49" cy="97" r="1" fill="rgba(201,30,8,1)"/>
- <circle cx="50" cy="97" r="1" fill="rgba(201,31,8,1)"/>
- <circle cx="51" cy="97" r="1" fill="rgba(202,31,8,1)"/>
- <circle cx="52" cy="97" r="1" fill="rgba(202,32,9,1)"/>
- <circle cx="53" cy="97" r="1" fill="rgba(202,33,9,1)"/>
- <circle cx="54" cy="97" r="1" fill="rgba(203,34,9,1)"/>
- <circle cx="55" cy="97" r="1" fill="rgba(203,34,10,1)"/>
- <circle cx="56" cy="97" r="1" fill="rgba(203,35,10,1)"/>
- <circle cx="57" cy="97" r="1" fill="rgba(204,36,10,1)"/>
- <circle cx="58" cy="97" r="1" fill="rgba(204,38,11,1)"/>
- <circle cx="59" cy="97" r="1" fill="rgba(206,39,12,1)"/>
- <circle cx="60" cy="97" r="1" fill="rgba(206,41,12,1)"/>
- <circle cx="61" cy="97" r="1" fill="rgba(206,42,13,1)"/>
- <circle cx="62" cy="97" r="1" fill="rgba(204,42,13,1)"/>
- <circle cx="63" cy="97" r="1" fill="rgba(201,39,11,1)"/>
- <circle cx="64" cy="97" r="1" fill="rgba(192,22,4,1)"/>
- <circle cx="65" cy="97" r="1" fill="rgba(140,3,0,1)"/>
- <circle cx="66" cy="97" r="1" fill="rgba(137,20,4,1)"/>
- <circle cx="67" cy="97" r="1" fill="rgba(198,33,9,1)"/>
- <circle cx="68" cy="97" r="1" fill="rgba(197,39,10,1)"/>
- <circle cx="69" cy="97" r="1" fill="rgba(204,48,15,1)"/>
- <circle cx="70" cy="97" r="1" fill="rgba(210,56,19,1)"/>
- <circle cx="71" cy="97" r="1" fill="rgba(214,63,22,1)"/>
- <circle cx="72" cy="97" r="1" fill="rgba(216,68,25,1)"/>
- <circle cx="73" cy="97" r="1" fill="rgba(217,72,27,1)"/>
- <circle cx="74" cy="97" r="1" fill="rgba(218,75,29,1)"/>
- <circle cx="75" cy="97" r="1" fill="rgba(221,79,31,1)"/>
- <circle cx="76" cy="97" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="77" cy="97" r="1" fill="rgba(223,86,35,1)"/>
- <circle cx="78" cy="97" r="1" fill="rgba(224,91,38,1)"/>
- <circle cx="79" cy="97" r="1" fill="rgba(226,95,41,1)"/>
- <circle cx="80" cy="97" r="1" fill="rgba(227,99,42,1)"/>
- <circle cx="81" cy="97" r="1" fill="rgba(229,104,46,1)"/>
- <circle cx="82" cy="97" r="1" fill="rgba(231,108,48,1)"/>
- <circle cx="83" cy="97" r="1" fill="rgba(233,113,52,1)"/>
- <circle cx="84" cy="97" r="1" fill="rgba(234,117,55,1)"/>
- <circle cx="85" cy="97" r="1" fill="rgba(236,119,56,1)"/>
- <circle cx="86" cy="97" r="1" fill="rgba(236,122,56,1)"/>
- <circle cx="87" cy="97" r="1" fill="rgba(237,123,56,1)"/>
- <circle cx="88" cy="97" r="1" fill="rgba(238,120,54,1)"/>
- <circle cx="89" cy="97" r="1" fill="rgba(236,113,48,1)"/>
- <circle cx="90" cy="97" r="1" fill="rgba(232,104,41,1)"/>
- <circle cx="91" cy="97" r="1" fill="rgba(232,95,36,1)"/>
- <circle cx="92" cy="97" r="1" fill="rgba(225,87,30,0.992157)"/>
- <circle cx="93" cy="97" r="1" fill="rgba(105,28,7,0.796078)"/>
- <circle cx="94" cy="97" r="1" fill="rgba(29,2,0,0.67451)"/>
- <circle cx="95" cy="97" r="1" fill="rgba(40,5,1,0.619608)"/>
- <circle cx="96" cy="97" r="1" fill="rgba(29,2,0,0.533333)"/>
- <circle cx="97" cy="97" r="1" fill="rgba(19,0,0,0.447059)"/>
- <circle cx="98" cy="97" r="1" fill="rgba(19,1,0,0.372549)"/>
- <circle cx="99" cy="97" r="1" fill="rgba(28,7,1,0.298039)"/>
- <circle cx="100" cy="97" r="1" fill="rgba(39,12,3,0.219608)"/>
- <circle cx="101" cy="97" r="1" fill="rgba(47,14,3,0.133333)"/>
- <circle cx="102" cy="97" r="1" fill="rgba(46,5,0,0.0666667)"/>
- <circle cx="103" cy="97" r="1" fill="rgba(21,0,0,0.027451)"/>
- <circle cx="104" cy="97" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="105" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="106" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="107" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="108" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="109" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="110" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="111" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="112" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="113" cy="97" r="1" fill="rgba(17,4,0,0)"/>
- <circle cx="114" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="97" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="98" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="19" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="20" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="21" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="22" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="23" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="24" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="25" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="26" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="27" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="28" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="29" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="30" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="31" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="32" cy="98" r="1" fill="rgba(114,7,1,0)"/>
- <circle cx="33" cy="98" r="1" fill="rgba(115,7,1,0)"/>
- <circle cx="34" cy="98" r="1" fill="rgba(110,7,0,0.0235294)"/>
- <circle cx="35" cy="98" r="1" fill="rgba(68,3,0,0.278431)"/>
- <circle cx="36" cy="98" r="1" fill="rgba(0,0,0,0.482353)"/>
- <circle cx="37" cy="98" r="1" fill="rgba(77,8,1,0.65098)"/>
- <circle cx="38" cy="98" r="1" fill="rgba(185,24,6,0.976471)"/>
- <circle cx="39" cy="98" r="1" fill="rgba(193,25,6,1)"/>
- <circle cx="40" cy="98" r="1" fill="rgba(191,25,6,1)"/>
- <circle cx="41" cy="98" r="1" fill="rgba(192,26,6,1)"/>
- <circle cx="42" cy="98" r="1" fill="rgba(194,27,7,1)"/>
- <circle cx="43" cy="98" r="1" fill="rgba(196,28,7,1)"/>
- <circle cx="44" cy="98" r="1" fill="rgba(197,29,7,1)"/>
- <circle cx="45" cy="98" r="1" fill="rgba(199,30,8,1)"/>
- <circle cx="46" cy="98" r="1" fill="rgba(199,31,8,1)"/>
- <circle cx="47" cy="98" r="1" fill="rgba(200,31,8,1)"/>
- <circle cx="48" cy="98" r="1" fill="rgba(201,32,9,1)"/>
- <circle cx="49" cy="98" r="1" fill="rgba(202,33,9,1)"/>
- <circle cx="50" cy="98" r="1" fill="rgba(202,34,9,1)"/>
- <circle cx="51" cy="98" r="1" fill="rgba(203,34,9,1)"/>
- <circle cx="52" cy="98" r="1" fill="rgba(203,35,10,1)"/>
- <circle cx="53" cy="98" r="1" fill="rgba(203,36,10,1)"/>
- <circle cx="54" cy="98" r="1" fill="rgba(203,36,10,1)"/>
- <circle cx="55" cy="98" r="1" fill="rgba(204,37,11,1)"/>
- <circle cx="56" cy="98" r="1" fill="rgba(205,39,11,1)"/>
- <circle cx="57" cy="98" r="1" fill="rgba(205,40,11,1)"/>
- <circle cx="58" cy="98" r="1" fill="rgba(205,42,13,1)"/>
- <circle cx="59" cy="98" r="1" fill="rgba(206,42,13,1)"/>
- <circle cx="60" cy="98" r="1" fill="rgba(207,45,13,1)"/>
- <circle cx="61" cy="98" r="1" fill="rgba(207,46,14,1)"/>
- <circle cx="62" cy="98" r="1" fill="rgba(206,45,14,1)"/>
- <circle cx="63" cy="98" r="1" fill="rgba(202,41,12,1)"/>
- <circle cx="64" cy="98" r="1" fill="rgba(192,23,5,1)"/>
- <circle cx="65" cy="98" r="1" fill="rgba(139,2,0,1)"/>
- <circle cx="66" cy="98" r="1" fill="rgba(138,21,4,1)"/>
- <circle cx="67" cy="98" r="1" fill="rgba(199,34,9,1)"/>
- <circle cx="68" cy="98" r="1" fill="rgba(197,40,11,1)"/>
- <circle cx="69" cy="98" r="1" fill="rgba(204,49,15,1)"/>
- <circle cx="70" cy="98" r="1" fill="rgba(210,58,20,1)"/>
- <circle cx="71" cy="98" r="1" fill="rgba(214,66,24,1)"/>
- <circle cx="72" cy="98" r="1" fill="rgba(217,72,27,1)"/>
- <circle cx="73" cy="98" r="1" fill="rgba(219,76,30,1)"/>
- <circle cx="74" cy="98" r="1" fill="rgba(220,80,32,1)"/>
- <circle cx="75" cy="98" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="76" cy="98" r="1" fill="rgba(223,87,35,1)"/>
- <circle cx="77" cy="98" r="1" fill="rgba(224,91,37,1)"/>
- <circle cx="78" cy="98" r="1" fill="rgba(226,95,40,1)"/>
- <circle cx="79" cy="98" r="1" fill="rgba(227,99,43,1)"/>
- <circle cx="80" cy="98" r="1" fill="rgba(230,104,46,1)"/>
- <circle cx="81" cy="98" r="1" fill="rgba(230,108,49,1)"/>
- <circle cx="82" cy="98" r="1" fill="rgba(232,112,51,1)"/>
- <circle cx="83" cy="98" r="1" fill="rgba(233,115,53,1)"/>
- <circle cx="84" cy="98" r="1" fill="rgba(234,117,55,1)"/>
- <circle cx="85" cy="98" r="1" fill="rgba(235,118,54,1)"/>
- <circle cx="86" cy="98" r="1" fill="rgba(236,118,53,1)"/>
- <circle cx="87" cy="98" r="1" fill="rgba(236,116,49,1)"/>
- <circle cx="88" cy="98" r="1" fill="rgba(235,109,44,1)"/>
- <circle cx="89" cy="98" r="1" fill="rgba(231,99,37,1)"/>
- <circle cx="90" cy="98" r="1" fill="rgba(229,90,33,1)"/>
- <circle cx="91" cy="98" r="1" fill="rgba(229,85,29,1)"/>
- <circle cx="92" cy="98" r="1" fill="rgba(133,38,10,0.839216)"/>
- <circle cx="93" cy="98" r="1" fill="rgba(31,2,0,0.678431)"/>
- <circle cx="94" cy="98" r="1" fill="rgba(40,5,1,0.635294)"/>
- <circle cx="95" cy="98" r="1" fill="rgba(31,3,0,0.552941)"/>
- <circle cx="96" cy="98" r="1" fill="rgba(21,0,0,0.47451)"/>
- <circle cx="97" cy="98" r="1" fill="rgba(15,0,0,0.4)"/>
- <circle cx="98" cy="98" r="1" fill="rgba(22,4,0,0.329412)"/>
- <circle cx="99" cy="98" r="1" fill="rgba(34,10,2,0.254902)"/>
- <circle cx="100" cy="98" r="1" fill="rgba(46,14,3,0.172549)"/>
- <circle cx="101" cy="98" r="1" fill="rgba(51,12,1,0.0941176)"/>
- <circle cx="102" cy="98" r="1" fill="rgba(42,2,0,0.0392157)"/>
- <circle cx="103" cy="98" r="1" fill="rgba(4,0,0,0.0117647)"/>
- <circle cx="104" cy="98" r="1" fill="rgba(0,2,0,0)"/>
- <circle cx="105" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="106" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="107" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="108" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="109" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="110" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="111" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="112" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="113" cy="98" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="114" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="98" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="99" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="19" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="20" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="21" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="22" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="23" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="24" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="25" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="26" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="27" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="28" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="29" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="30" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="31" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="32" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="33" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="34" cy="99" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="35" cy="99" r="1" fill="rgba(95,6,0,0.101961)"/>
- <circle cx="36" cy="99" r="1" fill="rgba(43,2,0,0.392157)"/>
- <circle cx="37" cy="99" r="1" fill="rgba(0,0,0,0.501961)"/>
- <circle cx="38" cy="99" r="1" fill="rgba(94,10,2,0.701961)"/>
- <circle cx="39" cy="99" r="1" fill="rgba(191,27,7,0.992157)"/>
- <circle cx="40" cy="99" r="1" fill="rgba(193,27,7,1)"/>
- <circle cx="41" cy="99" r="1" fill="rgba(192,27,7,1)"/>
- <circle cx="42" cy="99" r="1" fill="rgba(192,28,7,1)"/>
- <circle cx="43" cy="99" r="1" fill="rgba(194,29,8,1)"/>
- <circle cx="44" cy="99" r="1" fill="rgba(196,31,8,1)"/>
- <circle cx="45" cy="99" r="1" fill="rgba(197,31,8,1)"/>
- <circle cx="46" cy="99" r="1" fill="rgba(199,32,9,1)"/>
- <circle cx="47" cy="99" r="1" fill="rgba(200,33,9,1)"/>
- <circle cx="48" cy="99" r="1" fill="rgba(200,34,9,1)"/>
- <circle cx="49" cy="99" r="1" fill="rgba(201,35,10,1)"/>
- <circle cx="50" cy="99" r="1" fill="rgba(203,36,10,1)"/>
- <circle cx="51" cy="99" r="1" fill="rgba(203,38,11,1)"/>
- <circle cx="52" cy="99" r="1" fill="rgba(203,38,11,1)"/>
- <circle cx="53" cy="99" r="1" fill="rgba(204,39,11,1)"/>
- <circle cx="54" cy="99" r="1" fill="rgba(204,40,12,1)"/>
- <circle cx="55" cy="99" r="1" fill="rgba(205,41,12,1)"/>
- <circle cx="56" cy="99" r="1" fill="rgba(205,42,13,1)"/>
- <circle cx="57" cy="99" r="1" fill="rgba(205,44,13,1)"/>
- <circle cx="58" cy="99" r="1" fill="rgba(206,45,14,1)"/>
- <circle cx="59" cy="99" r="1" fill="rgba(207,46,14,1)"/>
- <circle cx="60" cy="99" r="1" fill="rgba(207,48,15,1)"/>
- <circle cx="61" cy="99" r="1" fill="rgba(208,48,16,1)"/>
- <circle cx="62" cy="99" r="1" fill="rgba(207,48,16,1)"/>
- <circle cx="63" cy="99" r="1" fill="rgba(203,44,13,1)"/>
- <circle cx="64" cy="99" r="1" fill="rgba(193,26,5,1)"/>
- <circle cx="65" cy="99" r="1" fill="rgba(137,2,0,1)"/>
- <circle cx="66" cy="99" r="1" fill="rgba(138,22,5,1)"/>
- <circle cx="67" cy="99" r="1" fill="rgba(199,35,9,1)"/>
- <circle cx="68" cy="99" r="1" fill="rgba(197,39,10,1)"/>
- <circle cx="69" cy="99" r="1" fill="rgba(203,49,14,1)"/>
- <circle cx="70" cy="99" r="1" fill="rgba(210,60,20,1)"/>
- <circle cx="71" cy="99" r="1" fill="rgba(215,69,25,1)"/>
- <circle cx="72" cy="99" r="1" fill="rgba(218,75,29,1)"/>
- <circle cx="73" cy="99" r="1" fill="rgba(221,81,31,1)"/>
- <circle cx="74" cy="99" r="1" fill="rgba(221,84,33,1)"/>
- <circle cx="75" cy="99" r="1" fill="rgba(223,88,36,1)"/>
- <circle cx="76" cy="99" r="1" fill="rgba(224,92,38,1)"/>
- <circle cx="77" cy="99" r="1" fill="rgba(226,95,41,1)"/>
- <circle cx="78" cy="99" r="1" fill="rgba(227,99,43,1)"/>
- <circle cx="79" cy="99" r="1" fill="rgba(229,103,46,1)"/>
- <circle cx="80" cy="99" r="1" fill="rgba(230,107,48,1)"/>
- <circle cx="81" cy="99" r="1" fill="rgba(232,111,50,1)"/>
- <circle cx="82" cy="99" r="1" fill="rgba(233,113,51,1)"/>
- <circle cx="83" cy="99" r="1" fill="rgba(233,114,51,1)"/>
- <circle cx="84" cy="99" r="1" fill="rgba(234,115,51,1)"/>
- <circle cx="85" cy="99" r="1" fill="rgba(234,113,48,1)"/>
- <circle cx="86" cy="99" r="1" fill="rgba(235,110,46,1)"/>
- <circle cx="87" cy="99" r="1" fill="rgba(233,103,39,1)"/>
- <circle cx="88" cy="99" r="1" fill="rgba(229,92,32,1)"/>
- <circle cx="89" cy="99" r="1" fill="rgba(227,84,28,1)"/>
- <circle cx="90" cy="99" r="1" fill="rgba(230,81,26,1)"/>
- <circle cx="91" cy="99" r="1" fill="rgba(148,41,11,0.862745)"/>
- <circle cx="92" cy="99" r="1" fill="rgba(37,4,1,0.690196)"/>
- <circle cx="93" cy="99" r="1" fill="rgba(40,5,1,0.643137)"/>
- <circle cx="94" cy="99" r="1" fill="rgba(34,4,0,0.572549)"/>
- <circle cx="95" cy="99" r="1" fill="rgba(21,0,0,0.490196)"/>
- <circle cx="96" cy="99" r="1" fill="rgba(15,0,0,0.419608)"/>
- <circle cx="97" cy="99" r="1" fill="rgba(19,2,0,0.352941)"/>
- <circle cx="98" cy="99" r="1" fill="rgba(29,9,1,0.286275)"/>
- <circle cx="99" cy="99" r="1" fill="rgba(42,13,3,0.207843)"/>
- <circle cx="100" cy="99" r="1" fill="rgba(50,16,3,0.121569)"/>
- <circle cx="101" cy="99" r="1" fill="rgba(40,6,0,0.0588235)"/>
- <circle cx="102" cy="99" r="1" fill="rgba(15,0,0,0.0196078)"/>
- <circle cx="103" cy="99" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="104" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="105" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="106" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="107" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="108" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="109" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="110" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="111" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="112" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="113" cy="99" r="1" fill="rgba(15,6,0,0)"/>
- <circle cx="114" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="99" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="100" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="19" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="20" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="21" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="22" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="23" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="24" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="25" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="26" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="27" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="28" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="29" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="30" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="31" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="32" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="33" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="34" cy="100" r="1" fill="rgba(109,7,1,0)"/>
- <circle cx="35" cy="100" r="1" fill="rgba(112,7,1,0.00784314)"/>
- <circle cx="36" cy="100" r="1" fill="rgba(82,4,0,0.207843)"/>
- <circle cx="37" cy="100" r="1" fill="rgba(24,0,0,0.458824)"/>
- <circle cx="38" cy="100" r="1" fill="rgba(4,1,0,0.521569)"/>
- <circle cx="39" cy="100" r="1" fill="rgba(107,14,3,0.741176)"/>
- <circle cx="40" cy="100" r="1" fill="rgba(192,29,7,0.996078)"/>
- <circle cx="41" cy="100" r="1" fill="rgba(194,30,8,1)"/>
- <circle cx="42" cy="100" r="1" fill="rgba(192,30,8,1)"/>
- <circle cx="43" cy="100" r="1" fill="rgba(192,31,8,1)"/>
- <circle cx="44" cy="100" r="1" fill="rgba(194,32,9,1)"/>
- <circle cx="45" cy="100" r="1" fill="rgba(196,32,9,1)"/>
- <circle cx="46" cy="100" r="1" fill="rgba(198,34,9,1)"/>
- <circle cx="47" cy="100" r="1" fill="rgba(199,35,10,1)"/>
- <circle cx="48" cy="100" r="1" fill="rgba(200,37,10,1)"/>
- <circle cx="49" cy="100" r="1" fill="rgba(201,37,11,1)"/>
- <circle cx="50" cy="100" r="1" fill="rgba(203,39,11,1)"/>
- <circle cx="51" cy="100" r="1" fill="rgba(203,40,11,1)"/>
- <circle cx="52" cy="100" r="1" fill="rgba(204,41,12,1)"/>
- <circle cx="53" cy="100" r="1" fill="rgba(205,43,13,1)"/>
- <circle cx="54" cy="100" r="1" fill="rgba(205,44,13,1)"/>
- <circle cx="55" cy="100" r="1" fill="rgba(206,45,14,1)"/>
- <circle cx="56" cy="100" r="1" fill="rgba(206,45,14,1)"/>
- <circle cx="57" cy="100" r="1" fill="rgba(207,47,15,1)"/>
- <circle cx="58" cy="100" r="1" fill="rgba(208,48,16,1)"/>
- <circle cx="59" cy="100" r="1" fill="rgba(209,50,16,1)"/>
- <circle cx="60" cy="100" r="1" fill="rgba(209,51,17,1)"/>
- <circle cx="61" cy="100" r="1" fill="rgba(209,52,18,1)"/>
- <circle cx="62" cy="100" r="1" fill="rgba(207,51,16,1)"/>
- <circle cx="63" cy="100" r="1" fill="rgba(203,46,14,1)"/>
- <circle cx="64" cy="100" r="1" fill="rgba(192,25,5,1)"/>
- <circle cx="65" cy="100" r="1" fill="rgba(135,1,0,1)"/>
- <circle cx="66" cy="100" r="1" fill="rgba(138,23,5,1)"/>
- <circle cx="67" cy="100" r="1" fill="rgba(199,35,8,1)"/>
- <circle cx="68" cy="100" r="1" fill="rgba(196,38,10,1)"/>
- <circle cx="69" cy="100" r="1" fill="rgba(203,49,14,1)"/>
- <circle cx="70" cy="100" r="1" fill="rgba(210,61,21,1)"/>
- <circle cx="71" cy="100" r="1" fill="rgba(216,72,27,1)"/>
- <circle cx="72" cy="100" r="1" fill="rgba(219,79,31,1)"/>
- <circle cx="73" cy="100" r="1" fill="rgba(221,85,34,1)"/>
- <circle cx="74" cy="100" r="1" fill="rgba(223,88,37,1)"/>
- <circle cx="75" cy="100" r="1" fill="rgba(224,92,38,1)"/>
- <circle cx="76" cy="100" r="1" fill="rgba(227,96,41,1)"/>
- <circle cx="77" cy="100" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="78" cy="100" r="1" fill="rgba(229,103,46,1)"/>
- <circle cx="79" cy="100" r="1" fill="rgba(230,106,48,1)"/>
- <circle cx="80" cy="100" r="1" fill="rgba(231,109,48,1)"/>
- <circle cx="81" cy="100" r="1" fill="rgba(232,111,49,1)"/>
- <circle cx="82" cy="100" r="1" fill="rgba(233,111,48,1)"/>
- <circle cx="83" cy="100" r="1" fill="rgba(233,110,48,1)"/>
- <circle cx="84" cy="100" r="1" fill="rgba(233,107,44,1)"/>
- <circle cx="85" cy="100" r="1" fill="rgba(233,103,40,1)"/>
- <circle cx="86" cy="100" r="1" fill="rgba(230,95,34,1)"/>
- <circle cx="87" cy="100" r="1" fill="rgba(227,86,28,1)"/>
- <circle cx="88" cy="100" r="1" fill="rgba(226,78,24,1)"/>
- <circle cx="89" cy="100" r="1" fill="rgba(228,76,23,1)"/>
- <circle cx="90" cy="100" r="1" fill="rgba(158,44,11,0.882353)"/>
- <circle cx="91" cy="100" r="1" fill="rgba(40,4,1,0.698039)"/>
- <circle cx="92" cy="100" r="1" fill="rgba(39,4,1,0.65098)"/>
- <circle cx="93" cy="100" r="1" fill="rgba(34,4,0,0.580392)"/>
- <circle cx="94" cy="100" r="1" fill="rgba(22,0,0,0.505882)"/>
- <circle cx="95" cy="100" r="1" fill="rgba(15,0,0,0.439216)"/>
- <circle cx="96" cy="100" r="1" fill="rgba(15,0,0,0.376471)"/>
- <circle cx="97" cy="100" r="1" fill="rgba(24,6,0,0.313725)"/>
- <circle cx="98" cy="100" r="1" fill="rgba(37,11,2,0.235294)"/>
- <circle cx="99" cy="100" r="1" fill="rgba(47,15,3,0.152941)"/>
- <circle cx="100" cy="100" r="1" fill="rgba(51,13,1,0.0784314)"/>
- <circle cx="101" cy="100" r="1" fill="rgba(42,3,0,0.027451)"/>
- <circle cx="102" cy="100" r="1" fill="rgba(0,0,0,0.00784314)"/>
- <circle cx="103" cy="100" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="104" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="105" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="106" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="107" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="108" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="109" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="110" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="111" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="112" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="113" cy="100" r="1" fill="rgba(10,3,0,0)"/>
- <circle cx="114" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="100" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="101" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="19" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="20" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="21" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="22" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="23" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="24" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="25" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="26" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="27" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="28" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="29" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="30" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="31" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="32" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="33" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="34" cy="101" r="1" fill="rgba(113,8,1,0)"/>
- <circle cx="35" cy="101" r="1" fill="rgba(114,8,1,0)"/>
- <circle cx="36" cy="101" r="1" fill="rgba(107,8,1,0.0431373)"/>
- <circle cx="37" cy="101" r="1" fill="rgba(61,4,0,0.309804)"/>
- <circle cx="38" cy="101" r="1" fill="rgba(15,0,0,0.494118)"/>
- <circle cx="39" cy="101" r="1" fill="rgba(12,1,0,0.533333)"/>
- <circle cx="40" cy="101" r="1" fill="rgba(107,15,3,0.752941)"/>
- <circle cx="41" cy="101" r="1" fill="rgba(192,31,8,0.992157)"/>
- <circle cx="42" cy="101" r="1" fill="rgba(196,33,9,1)"/>
- <circle cx="43" cy="101" r="1" fill="rgba(192,32,9,1)"/>
- <circle cx="44" cy="101" r="1" fill="rgba(194,33,9,1)"/>
- <circle cx="45" cy="101" r="1" fill="rgba(195,34,9,1)"/>
- <circle cx="46" cy="101" r="1" fill="rgba(196,35,10,1)"/>
- <circle cx="47" cy="101" r="1" fill="rgba(198,36,10,1)"/>
- <circle cx="48" cy="101" r="1" fill="rgba(200,38,11,1)"/>
- <circle cx="49" cy="101" r="1" fill="rgba(200,39,11,1)"/>
- <circle cx="50" cy="101" r="1" fill="rgba(202,41,12,1)"/>
- <circle cx="51" cy="101" r="1" fill="rgba(203,42,13,1)"/>
- <circle cx="52" cy="101" r="1" fill="rgba(204,44,13,1)"/>
- <circle cx="53" cy="101" r="1" fill="rgba(205,45,14,1)"/>
- <circle cx="54" cy="101" r="1" fill="rgba(207,46,14,1)"/>
- <circle cx="55" cy="101" r="1" fill="rgba(207,48,15,1)"/>
- <circle cx="56" cy="101" r="1" fill="rgba(207,49,16,1)"/>
- <circle cx="57" cy="101" r="1" fill="rgba(209,51,17,1)"/>
- <circle cx="58" cy="101" r="1" fill="rgba(209,52,18,1)"/>
- <circle cx="59" cy="101" r="1" fill="rgba(210,53,18,1)"/>
- <circle cx="60" cy="101" r="1" fill="rgba(210,55,19,1)"/>
- <circle cx="61" cy="101" r="1" fill="rgba(209,56,19,1)"/>
- <circle cx="62" cy="101" r="1" fill="rgba(207,54,17,1)"/>
- <circle cx="63" cy="101" r="1" fill="rgba(203,48,14,1)"/>
- <circle cx="64" cy="101" r="1" fill="rgba(191,25,5,1)"/>
- <circle cx="65" cy="101" r="1" fill="rgba(131,1,0,1)"/>
- <circle cx="66" cy="101" r="1" fill="rgba(139,22,5,1)"/>
- <circle cx="67" cy="101" r="1" fill="rgba(199,34,8,1)"/>
- <circle cx="68" cy="101" r="1" fill="rgba(196,38,10,1)"/>
- <circle cx="69" cy="101" r="1" fill="rgba(203,49,14,1)"/>
- <circle cx="70" cy="101" r="1" fill="rgba(210,62,21,1)"/>
- <circle cx="71" cy="101" r="1" fill="rgba(217,75,28,1)"/>
- <circle cx="72" cy="101" r="1" fill="rgba(221,83,33,1)"/>
- <circle cx="73" cy="101" r="1" fill="rgba(223,89,37,1)"/>
- <circle cx="74" cy="101" r="1" fill="rgba(224,93,39,1)"/>
- <circle cx="75" cy="101" r="1" fill="rgba(226,96,41,1)"/>
- <circle cx="76" cy="101" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="77" cy="101" r="1" fill="rgba(228,102,45,1)"/>
- <circle cx="78" cy="101" r="1" fill="rgba(229,104,46,1)"/>
- <circle cx="79" cy="101" r="1" fill="rgba(230,106,46,1)"/>
- <circle cx="80" cy="101" r="1" fill="rgba(230,105,45,1)"/>
- <circle cx="81" cy="101" r="1" fill="rgba(231,106,44,1)"/>
- <circle cx="82" cy="101" r="1" fill="rgba(232,104,42,1)"/>
- <circle cx="83" cy="101" r="1" fill="rgba(232,101,39,1)"/>
- <circle cx="84" cy="101" r="1" fill="rgba(231,97,35,1)"/>
- <circle cx="85" cy="101" r="1" fill="rgba(229,89,30,1)"/>
- <circle cx="86" cy="101" r="1" fill="rgba(225,80,24,1)"/>
- <circle cx="87" cy="101" r="1" fill="rgba(224,74,22,1)"/>
- <circle cx="88" cy="101" r="1" fill="rgba(226,71,20,1)"/>
- <circle cx="89" cy="101" r="1" fill="rgba(156,41,10,0.87451)"/>
- <circle cx="90" cy="101" r="1" fill="rgba(42,5,1,0.701961)"/>
- <circle cx="91" cy="101" r="1" fill="rgba(39,4,1,0.65098)"/>
- <circle cx="92" cy="101" r="1" fill="rgba(36,4,0,0.592157)"/>
- <circle cx="93" cy="101" r="1" fill="rgba(24,1,0,0.517647)"/>
- <circle cx="94" cy="101" r="1" fill="rgba(15,0,0,0.454902)"/>
- <circle cx="95" cy="101" r="1" fill="rgba(10,0,0,0.392157)"/>
- <circle cx="96" cy="101" r="1" fill="rgba(19,4,0,0.337255)"/>
- <circle cx="97" cy="101" r="1" fill="rgba(33,9,2,0.266667)"/>
- <circle cx="98" cy="101" r="1" fill="rgba(45,14,3,0.184314)"/>
- <circle cx="99" cy="101" r="1" fill="rgba(51,14,2,0.101961)"/>
- <circle cx="100" cy="101" r="1" fill="rgba(59,3,0,0.0431373)"/>
- <circle cx="101" cy="101" r="1" fill="rgba(34,0,0,0.0117647)"/>
- <circle cx="102" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="103" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="104" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="105" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="106" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="107" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="108" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="109" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="110" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="111" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="112" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="113" cy="101" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="114" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="101" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="102" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="19" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="20" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="21" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="22" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="23" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="24" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="25" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="26" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="27" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="28" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="29" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="30" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="31" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="32" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="33" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="34" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="35" cy="102" r="1" fill="rgba(113,10,1,0)"/>
- <circle cx="36" cy="102" r="1" fill="rgba(114,10,1,0)"/>
- <circle cx="37" cy="102" r="1" fill="rgba(98,8,1,0.113725)"/>
- <circle cx="38" cy="102" r="1" fill="rgba(45,2,0,0.392157)"/>
- <circle cx="39" cy="102" r="1" fill="rgba(12,0,0,0.505882)"/>
- <circle cx="40" cy="102" r="1" fill="rgba(10,1,0,0.537255)"/>
- <circle cx="41" cy="102" r="1" fill="rgba(94,13,3,0.721569)"/>
- <circle cx="42" cy="102" r="1" fill="rgba(189,33,9,0.976471)"/>
- <circle cx="43" cy="102" r="1" fill="rgba(199,36,10,1)"/>
- <circle cx="44" cy="102" r="1" fill="rgba(194,34,10,1)"/>
- <circle cx="45" cy="102" r="1" fill="rgba(194,35,10,1)"/>
- <circle cx="46" cy="102" r="1" fill="rgba(196,36,10,1)"/>
- <circle cx="47" cy="102" r="1" fill="rgba(197,37,11,1)"/>
- <circle cx="48" cy="102" r="1" fill="rgba(198,39,11,1)"/>
- <circle cx="49" cy="102" r="1" fill="rgba(200,40,11,1)"/>
- <circle cx="50" cy="102" r="1" fill="rgba(201,42,13,1)"/>
- <circle cx="51" cy="102" r="1" fill="rgba(202,44,14,1)"/>
- <circle cx="52" cy="102" r="1" fill="rgba(204,46,14,1)"/>
- <circle cx="53" cy="102" r="1" fill="rgba(204,47,15,1)"/>
- <circle cx="54" cy="102" r="1" fill="rgba(206,49,16,1)"/>
- <circle cx="55" cy="102" r="1" fill="rgba(207,51,16,1)"/>
- <circle cx="56" cy="102" r="1" fill="rgba(208,52,18,1)"/>
- <circle cx="57" cy="102" r="1" fill="rgba(209,54,18,1)"/>
- <circle cx="58" cy="102" r="1" fill="rgba(210,55,19,1)"/>
- <circle cx="59" cy="102" r="1" fill="rgba(210,57,20,1)"/>
- <circle cx="60" cy="102" r="1" fill="rgba(210,58,20,1)"/>
- <circle cx="61" cy="102" r="1" fill="rgba(210,58,20,1)"/>
- <circle cx="62" cy="102" r="1" fill="rgba(207,55,18,1)"/>
- <circle cx="63" cy="102" r="1" fill="rgba(203,49,14,1)"/>
- <circle cx="64" cy="102" r="1" fill="rgba(190,25,5,1)"/>
- <circle cx="65" cy="102" r="1" fill="rgba(130,0,0,1)"/>
- <circle cx="66" cy="102" r="1" fill="rgba(140,24,5,1)"/>
- <circle cx="67" cy="102" r="1" fill="rgba(200,35,8,1)"/>
- <circle cx="68" cy="102" r="1" fill="rgba(197,40,10,1)"/>
- <circle cx="69" cy="102" r="1" fill="rgba(203,50,14,1)"/>
- <circle cx="70" cy="102" r="1" fill="rgba(210,64,22,1)"/>
- <circle cx="71" cy="102" r="1" fill="rgba(217,78,30,1)"/>
- <circle cx="72" cy="102" r="1" fill="rgba(222,87,35,1)"/>
- <circle cx="73" cy="102" r="1" fill="rgba(224,92,39,1)"/>
- <circle cx="74" cy="102" r="1" fill="rgba(225,95,41,1)"/>
- <circle cx="75" cy="102" r="1" fill="rgba(227,98,42,1)"/>
- <circle cx="76" cy="102" r="1" fill="rgba(227,100,43,1)"/>
- <circle cx="77" cy="102" r="1" fill="rgba(227,101,43,1)"/>
- <circle cx="78" cy="102" r="1" fill="rgba(228,101,42,1)"/>
- <circle cx="79" cy="102" r="1" fill="rgba(229,100,41,1)"/>
- <circle cx="80" cy="102" r="1" fill="rgba(229,99,40,1)"/>
- <circle cx="81" cy="102" r="1" fill="rgba(230,97,37,1)"/>
- <circle cx="82" cy="102" r="1" fill="rgba(230,94,34,1)"/>
- <circle cx="83" cy="102" r="1" fill="rgba(230,92,32,1)"/>
- <circle cx="84" cy="102" r="1" fill="rgba(229,85,27,1)"/>
- <circle cx="85" cy="102" r="1" fill="rgba(224,76,22,1)"/>
- <circle cx="86" cy="102" r="1" fill="rgba(227,73,20,1)"/>
- <circle cx="87" cy="102" r="1" fill="rgba(223,69,19,1)"/>
- <circle cx="88" cy="102" r="1" fill="rgba(141,35,8,0.854902)"/>
- <circle cx="89" cy="102" r="1" fill="rgba(39,4,1,0.694118)"/>
- <circle cx="90" cy="102" r="1" fill="rgba(39,5,1,0.654902)"/>
- <circle cx="91" cy="102" r="1" fill="rgba(36,4,0,0.596078)"/>
- <circle cx="92" cy="102" r="1" fill="rgba(24,0,0,0.52549)"/>
- <circle cx="93" cy="102" r="1" fill="rgba(15,0,0,0.462745)"/>
- <circle cx="94" cy="102" r="1" fill="rgba(10,0,0,0.411765)"/>
- <circle cx="95" cy="102" r="1" fill="rgba(17,2,0,0.352941)"/>
- <circle cx="96" cy="102" r="1" fill="rgba(29,8,1,0.290196)"/>
- <circle cx="97" cy="102" r="1" fill="rgba(40,13,3,0.207843)"/>
- <circle cx="98" cy="102" r="1" fill="rgba(49,16,3,0.12549)"/>
- <circle cx="99" cy="102" r="1" fill="rgba(51,6,0,0.0627451)"/>
- <circle cx="100" cy="102" r="1" fill="rgba(39,0,0,0.0196078)"/>
- <circle cx="101" cy="102" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="102" cy="102" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="103" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="104" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="105" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="106" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="107" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="108" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="109" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="110" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="111" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="112" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="113" cy="102" r="1" fill="rgba(15,7,1,0)"/>
- <circle cx="114" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="102" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="103" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="19" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="20" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="21" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="22" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="23" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="24" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="25" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="26" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="27" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="28" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="29" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="30" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="31" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="32" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="33" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="34" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="35" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="36" cy="103" r="1" fill="rgba(114,11,1,0)"/>
- <circle cx="37" cy="103" r="1" fill="rgba(114,11,2,0.00392157)"/>
- <circle cx="38" cy="103" r="1" fill="rgba(88,7,1,0.192157)"/>
- <circle cx="39" cy="103" r="1" fill="rgba(31,0,0,0.439216)"/>
- <circle cx="40" cy="103" r="1" fill="rgba(12,0,0,0.509804)"/>
- <circle cx="41" cy="103" r="1" fill="rgba(10,1,0,0.533333)"/>
- <circle cx="42" cy="103" r="1" fill="rgba(78,10,2,0.682353)"/>
- <circle cx="43" cy="103" r="1" fill="rgba(178,32,9,0.941176)"/>
- <circle cx="44" cy="103" r="1" fill="rgba(202,38,11,1)"/>
- <circle cx="45" cy="103" r="1" fill="rgba(196,37,10,1)"/>
- <circle cx="46" cy="103" r="1" fill="rgba(195,37,11,1)"/>
- <circle cx="47" cy="103" r="1" fill="rgba(196,38,11,1)"/>
- <circle cx="48" cy="103" r="1" fill="rgba(197,39,11,1)"/>
- <circle cx="49" cy="103" r="1" fill="rgba(198,40,12,1)"/>
- <circle cx="50" cy="103" r="1" fill="rgba(200,42,13,1)"/>
- <circle cx="51" cy="103" r="1" fill="rgba(200,44,13,1)"/>
- <circle cx="52" cy="103" r="1" fill="rgba(203,46,14,1)"/>
- <circle cx="53" cy="103" r="1" fill="rgba(203,48,15,1)"/>
- <circle cx="54" cy="103" r="1" fill="rgba(205,51,17,1)"/>
- <circle cx="55" cy="103" r="1" fill="rgba(207,53,18,1)"/>
- <circle cx="56" cy="103" r="1" fill="rgba(208,55,18,1)"/>
- <circle cx="57" cy="103" r="1" fill="rgba(210,57,19,1)"/>
- <circle cx="58" cy="103" r="1" fill="rgba(210,59,20,1)"/>
- <circle cx="59" cy="103" r="1" fill="rgba(211,60,21,1)"/>
- <circle cx="60" cy="103" r="1" fill="rgba(211,61,22,1)"/>
- <circle cx="61" cy="103" r="1" fill="rgba(210,60,20,1)"/>
- <circle cx="62" cy="103" r="1" fill="rgba(207,56,19,1)"/>
- <circle cx="63" cy="103" r="1" fill="rgba(202,49,14,1)"/>
- <circle cx="64" cy="103" r="1" fill="rgba(189,25,6,1)"/>
- <circle cx="65" cy="103" r="1" fill="maroon"/>
- <circle cx="66" cy="103" r="1" fill="rgba(140,25,5,1)"/>
- <circle cx="67" cy="103" r="1" fill="rgba(201,38,9,1)"/>
- <circle cx="68" cy="103" r="1" fill="rgba(199,42,10,1)"/>
- <circle cx="69" cy="103" r="1" fill="rgba(204,53,16,1)"/>
- <circle cx="70" cy="103" r="1" fill="rgba(212,67,23,1)"/>
- <circle cx="71" cy="103" r="1" fill="rgba(218,79,30,1)"/>
- <circle cx="72" cy="103" r="1" fill="rgba(222,88,36,1)"/>
- <circle cx="73" cy="103" r="1" fill="rgba(224,93,38,1)"/>
- <circle cx="74" cy="103" r="1" fill="rgba(224,94,39,1)"/>
- <circle cx="75" cy="103" r="1" fill="rgba(225,95,40,1)"/>
- <circle cx="76" cy="103" r="1" fill="rgba(226,94,38,1)"/>
- <circle cx="77" cy="103" r="1" fill="rgba(227,94,37,1)"/>
- <circle cx="78" cy="103" r="1" fill="rgba(227,93,36,1)"/>
- <circle cx="79" cy="103" r="1" fill="rgba(227,91,33,1)"/>
- <circle cx="80" cy="103" r="1" fill="rgba(228,90,31,1)"/>
- <circle cx="81" cy="103" r="1" fill="rgba(229,89,30,1)"/>
- <circle cx="82" cy="103" r="1" fill="rgba(228,87,28,1)"/>
- <circle cx="83" cy="103" r="1" fill="rgba(227,82,25,1)"/>
- <circle cx="84" cy="103" r="1" fill="rgba(225,77,22,1)"/>
- <circle cx="85" cy="103" r="1" fill="rgba(229,74,21,1)"/>
- <circle cx="86" cy="103" r="1" fill="rgba(214,66,18,0.980392)"/>
- <circle cx="87" cy="103" r="1" fill="rgba(119,27,6,0.819608)"/>
- <circle cx="88" cy="103" r="1" fill="rgba(37,4,1,0.694118)"/>
- <circle cx="89" cy="103" r="1" fill="rgba(42,5,1,0.654902)"/>
- <circle cx="90" cy="103" r="1" fill="rgba(37,4,0,0.596078)"/>
- <circle cx="91" cy="103" r="1" fill="rgba(26,0,0,0.529412)"/>
- <circle cx="92" cy="103" r="1" fill="rgba(15,0,0,0.470588)"/>
- <circle cx="93" cy="103" r="1" fill="rgba(7,0,0,0.419608)"/>
- <circle cx="94" cy="103" r="1" fill="rgba(12,2,0,0.368627)"/>
- <circle cx="95" cy="103" r="1" fill="rgba(28,7,0,0.305882)"/>
- <circle cx="96" cy="103" r="1" fill="rgba(39,12,3,0.231373)"/>
- <circle cx="97" cy="103" r="1" fill="rgba(49,15,3,0.14902)"/>
- <circle cx="98" cy="103" r="1" fill="rgba(51,12,1,0.0784314)"/>
- <circle cx="99" cy="103" r="1" fill="rgba(33,1,0,0.0313725)"/>
- <circle cx="100" cy="103" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="101" cy="103" r="1" fill="rgba(10,4,0,0)"/>
- <circle cx="102" cy="103" r="1" fill="rgba(15,7,3,0)"/>
- <circle cx="103" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="104" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="105" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="106" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="107" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="108" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="109" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="110" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="111" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="112" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="113" cy="103" r="1" fill="rgba(15,7,2,0)"/>
- <circle cx="114" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="103" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="104" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="19" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="20" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="21" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="22" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="23" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="24" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="25" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="26" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="27" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="28" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="29" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="30" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="31" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="32" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="33" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="34" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="35" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="36" cy="104" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="37" cy="104" r="1" fill="rgba(115,11,2,0)"/>
- <circle cx="38" cy="104" r="1" fill="rgba(110,11,2,0.027451)"/>
- <circle cx="39" cy="104" r="1" fill="rgba(70,5,0,0.25098)"/>
- <circle cx="40" cy="104" r="1" fill="rgba(19,0,0,0.462745)"/>
- <circle cx="41" cy="104" r="1" fill="rgba(15,0,0,0.505882)"/>
- <circle cx="42" cy="104" r="1" fill="rgba(12,0,0,0.529412)"/>
- <circle cx="43" cy="104" r="1" fill="rgba(55,7,1,0.635294)"/>
- <circle cx="44" cy="104" r="1" fill="rgba(155,28,8,0.882353)"/>
- <circle cx="45" cy="104" r="1" fill="rgba(201,39,11,1)"/>
- <circle cx="46" cy="104" r="1" fill="rgba(198,39,11,1)"/>
- <circle cx="47" cy="104" r="1" fill="rgba(195,39,11,1)"/>
- <circle cx="48" cy="104" r="1" fill="rgba(195,39,11,1)"/>
- <circle cx="49" cy="104" r="1" fill="rgba(196,40,11,1)"/>
- <circle cx="50" cy="104" r="1" fill="rgba(196,41,12,1)"/>
- <circle cx="51" cy="104" r="1" fill="rgba(198,43,13,1)"/>
- <circle cx="52" cy="104" r="1" fill="rgba(200,45,14,1)"/>
- <circle cx="53" cy="104" r="1" fill="rgba(202,47,14,1)"/>
- <circle cx="54" cy="104" r="1" fill="rgba(203,50,16,1)"/>
- <circle cx="55" cy="104" r="1" fill="rgba(205,53,17,1)"/>
- <circle cx="56" cy="104" r="1" fill="rgba(207,55,18,1)"/>
- <circle cx="57" cy="104" r="1" fill="rgba(208,58,20,1)"/>
- <circle cx="58" cy="104" r="1" fill="rgba(210,60,21,1)"/>
- <circle cx="59" cy="104" r="1" fill="rgba(210,62,22,1)"/>
- <circle cx="60" cy="104" r="1" fill="rgba(211,63,22,1)"/>
- <circle cx="61" cy="104" r="1" fill="rgba(210,61,21,1)"/>
- <circle cx="62" cy="104" r="1" fill="rgba(206,55,18,1)"/>
- <circle cx="63" cy="104" r="1" fill="rgba(202,48,14,1)"/>
- <circle cx="64" cy="104" r="1" fill="rgba(189,25,5,1)"/>
- <circle cx="65" cy="104" r="1" fill="rgba(125,0,0,1)"/>
- <circle cx="66" cy="104" r="1" fill="rgba(141,26,6,1)"/>
- <circle cx="67" cy="104" r="1" fill="rgba(203,39,9,1)"/>
- <circle cx="68" cy="104" r="1" fill="rgba(200,44,11,1)"/>
- <circle cx="69" cy="104" r="1" fill="rgba(205,55,16,1)"/>
- <circle cx="70" cy="104" r="1" fill="rgba(212,68,23,1)"/>
- <circle cx="71" cy="104" r="1" fill="rgba(217,79,29,1)"/>
- <circle cx="72" cy="104" r="1" fill="rgba(221,85,33,1)"/>
- <circle cx="73" cy="104" r="1" fill="rgba(222,87,34,1)"/>
- <circle cx="74" cy="104" r="1" fill="rgba(223,87,33,1)"/>
- <circle cx="75" cy="104" r="1" fill="rgba(223,86,32,1)"/>
- <circle cx="76" cy="104" r="1" fill="rgba(224,85,31,1)"/>
- <circle cx="77" cy="104" r="1" fill="rgba(224,84,30,1)"/>
- <circle cx="78" cy="104" r="1" fill="rgba(225,83,28,1)"/>
- <circle cx="79" cy="104" r="1" fill="rgba(226,82,27,1)"/>
- <circle cx="80" cy="104" r="1" fill="rgba(227,84,26,1)"/>
- <circle cx="81" cy="104" r="1" fill="rgba(227,83,25,1)"/>
- <circle cx="82" cy="104" r="1" fill="rgba(226,79,23,1)"/>
- <circle cx="83" cy="104" r="1" fill="rgba(226,76,22,1)"/>
- <circle cx="84" cy="104" r="1" fill="rgba(231,77,22,1)"/>
- <circle cx="85" cy="104" r="1" fill="rgba(195,59,15,0.945098)"/>
- <circle cx="86" cy="104" r="1" fill="rgba(92,19,4,0.776471)"/>
- <circle cx="87" cy="104" r="1" fill="rgba(31,3,1,0.686275)"/>
- <circle cx="88" cy="104" r="1" fill="rgba(42,5,1,0.65098)"/>
- <circle cx="89" cy="104" r="1" fill="rgba(36,4,0,0.592157)"/>
- <circle cx="90" cy="104" r="1" fill="rgba(26,1,0,0.533333)"/>
- <circle cx="91" cy="104" r="1" fill="rgba(12,0,0,0.478431)"/>
- <circle cx="92" cy="104" r="1" fill="rgba(7,0,0,0.431373)"/>
- <circle cx="93" cy="104" r="1" fill="rgba(12,0,0,0.380392)"/>
- <circle cx="94" cy="104" r="1" fill="rgba(26,5,0,0.317647)"/>
- <circle cx="95" cy="104" r="1" fill="rgba(37,10,2,0.247059)"/>
- <circle cx="96" cy="104" r="1" fill="rgba(46,15,3,0.164706)"/>
- <circle cx="97" cy="104" r="1" fill="rgba(51,11,2,0.0901961)"/>
- <circle cx="98" cy="104" r="1" fill="rgba(46,1,0,0.0392157)"/>
- <circle cx="99" cy="104" r="1" fill="rgba(15,0,0,0.00784314)"/>
- <circle cx="100" cy="104" r="1" fill="rgba(0,1,0,0)"/>
- <circle cx="101" cy="104" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="102" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="103" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="104" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="105" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="106" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="107" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="108" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="109" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="110" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="111" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="112" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="113" cy="104" r="1" fill="rgba(10,5,1,0)"/>
- <circle cx="114" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="104" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="105" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="19" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="20" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="21" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="22" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="23" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="24" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="25" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="26" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="27" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="28" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="29" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="30" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="31" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="32" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="33" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="34" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="35" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="36" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="37" cy="105" r="1" fill="rgba(114,11,2,0)"/>
- <circle cx="38" cy="105" r="1" fill="rgba(111,11,2,0)"/>
- <circle cx="39" cy="105" r="1" fill="rgba(102,10,1,0.0509804)"/>
- <circle cx="40" cy="105" r="1" fill="rgba(68,6,0,0.294118)"/>
- <circle cx="41" cy="105" r="1" fill="rgba(19,0,0,0.47451)"/>
- <circle cx="42" cy="105" r="1" fill="rgba(15,0,0,0.505882)"/>
- <circle cx="43" cy="105" r="1" fill="rgba(15,1,0,0.52549)"/>
- <circle cx="44" cy="105" r="1" fill="rgba(29,3,0,0.584314)"/>
- <circle cx="45" cy="105" r="1" fill="rgba(119,20,4,0.784314)"/>
- <circle cx="46" cy="105" r="1" fill="rgba(187,37,10,0.972549)"/>
- <circle cx="47" cy="105" r="1" fill="rgba(200,40,11,1)"/>
- <circle cx="48" cy="105" r="1" fill="rgba(194,38,11,1)"/>
- <circle cx="49" cy="105" r="1" fill="rgba(192,39,11,1)"/>
- <circle cx="50" cy="105" r="1" fill="rgba(193,39,11,1)"/>
- <circle cx="51" cy="105" r="1" fill="rgba(195,40,11,1)"/>
- <circle cx="52" cy="105" r="1" fill="rgba(196,42,12,1)"/>
- <circle cx="53" cy="105" r="1" fill="rgba(198,44,13,1)"/>
- <circle cx="54" cy="105" r="1" fill="rgba(200,47,14,1)"/>
- <circle cx="55" cy="105" r="1" fill="rgba(202,49,16,1)"/>
- <circle cx="56" cy="105" r="1" fill="rgba(203,52,16,1)"/>
- <circle cx="57" cy="105" r="1" fill="rgba(205,54,18,1)"/>
- <circle cx="58" cy="105" r="1" fill="rgba(207,57,20,1)"/>
- <circle cx="59" cy="105" r="1" fill="rgba(208,60,21,1)"/>
- <circle cx="60" cy="105" r="1" fill="rgba(209,61,21,1)"/>
- <circle cx="61" cy="105" r="1" fill="rgba(207,60,20,1)"/>
- <circle cx="62" cy="105" r="1" fill="rgba(203,55,18,1)"/>
- <circle cx="63" cy="105" r="1" fill="rgba(200,46,13,1)"/>
- <circle cx="64" cy="105" r="1" fill="rgba(188,25,5,1)"/>
- <circle cx="65" cy="105" r="1" fill="rgba(122,0,0,1)"/>
- <circle cx="66" cy="105" r="1" fill="rgba(142,28,6,1)"/>
- <circle cx="67" cy="105" r="1" fill="rgba(205,40,9,1)"/>
- <circle cx="68" cy="105" r="1" fill="rgba(201,45,11,1)"/>
- <circle cx="69" cy="105" r="1" fill="rgba(207,54,16,1)"/>
- <circle cx="70" cy="105" r="1" fill="rgba(213,65,22,1)"/>
- <circle cx="71" cy="105" r="1" fill="rgba(216,72,25,1)"/>
- <circle cx="72" cy="105" r="1" fill="rgba(217,76,27,1)"/>
- <circle cx="73" cy="105" r="1" fill="rgba(218,76,27,1)"/>
- <circle cx="74" cy="105" r="1" fill="rgba(219,75,25,1)"/>
- <circle cx="75" cy="105" r="1" fill="rgba(220,75,24,1)"/>
- <circle cx="76" cy="105" r="1" fill="rgba(221,75,23,1)"/>
- <circle cx="77" cy="105" r="1" fill="rgba(222,76,23,1)"/>
- <circle cx="78" cy="105" r="1" fill="rgba(225,77,23,1)"/>
- <circle cx="79" cy="105" r="1" fill="rgba(226,79,23,1)"/>
- <circle cx="80" cy="105" r="1" fill="rgba(226,78,22,1)"/>
- <circle cx="81" cy="105" r="1" fill="rgba(225,76,22,1)"/>
- <circle cx="82" cy="105" r="1" fill="rgba(230,77,22,1)"/>
- <circle cx="83" cy="105" r="1" fill="rgba(224,72,20,0.996078)"/>
- <circle cx="84" cy="105" r="1" fill="rgba(157,43,11,0.878431)"/>
- <circle cx="85" cy="105" r="1" fill="rgba(59,10,2,0.729412)"/>
- <circle cx="86" cy="105" r="1" fill="rgba(36,3,1,0.678431)"/>
- <circle cx="87" cy="105" r="1" fill="rgba(43,6,1,0.643137)"/>
- <circle cx="88" cy="105" r="1" fill="rgba(34,3,0,0.584314)"/>
- <circle cx="89" cy="105" r="1" fill="rgba(24,0,0,0.529412)"/>
- <circle cx="90" cy="105" r="1" fill="rgba(12,0,0,0.478431)"/>
- <circle cx="91" cy="105" r="1" fill="rgba(4,0,0,0.431373)"/>
- <circle cx="92" cy="105" r="1" fill="rgba(12,0,0,0.388235)"/>
- <circle cx="93" cy="105" r="1" fill="rgba(24,4,0,0.329412)"/>
- <circle cx="94" cy="105" r="1" fill="rgba(36,10,1,0.258824)"/>
- <circle cx="95" cy="105" r="1" fill="rgba(45,15,2,0.176471)"/>
- <circle cx="96" cy="105" r="1" fill="rgba(49,16,1,0.105882)"/>
- <circle cx="97" cy="105" r="1" fill="rgba(42,6,0,0.0470588)"/>
- <circle cx="98" cy="105" r="1" fill="rgba(17,0,0,0.0117647)"/>
- <circle cx="99" cy="105" r="1" fill="rgba(0,1,0,0)"/>
- <circle cx="100" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="101" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="102" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="103" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="104" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="105" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="106" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="107" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="108" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="109" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="110" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="111" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="112" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="113" cy="105" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="114" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="105" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="106" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="106" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="106" r="1" fill="rgba(114,13,2,0)"/>
- <circle cx="39" cy="106" r="1" fill="rgba(116,13,2,0)"/>
- <circle cx="40" cy="106" r="1" fill="rgba(108,12,2,0.0705882)"/>
- <circle cx="41" cy="106" r="1" fill="rgba(61,5,0,0.321569)"/>
- <circle cx="42" cy="106" r="1" fill="rgba(10,0,0,0.478431)"/>
- <circle cx="43" cy="106" r="1" fill="rgba(12,0,0,0.498039)"/>
- <circle cx="44" cy="106" r="1" fill="rgba(19,1,0,0.521569)"/>
- <circle cx="45" cy="106" r="1" fill="rgba(17,1,0,0.560784)"/>
- <circle cx="46" cy="106" r="1" fill="rgba(70,10,2,0.682353)"/>
- <circle cx="47" cy="106" r="1" fill="rgba(153,27,7,0.886275)"/>
- <circle cx="48" cy="106" r="1" fill="rgba(195,37,10,1)"/>
- <circle cx="49" cy="106" r="1" fill="rgba(196,38,10,1)"/>
- <circle cx="50" cy="106" r="1" fill="rgba(191,37,10,1)"/>
- <circle cx="51" cy="106" r="1" fill="rgba(191,37,10,1)"/>
- <circle cx="52" cy="106" r="1" fill="rgba(192,38,10,1)"/>
- <circle cx="53" cy="106" r="1" fill="rgba(194,40,11,1)"/>
- <circle cx="54" cy="106" r="1" fill="rgba(196,42,12,1)"/>
- <circle cx="55" cy="106" r="1" fill="rgba(198,45,13,1)"/>
- <circle cx="56" cy="106" r="1" fill="rgba(199,47,14,1)"/>
- <circle cx="57" cy="106" r="1" fill="rgba(200,49,14,1)"/>
- <circle cx="58" cy="106" r="1" fill="rgba(202,52,16,1)"/>
- <circle cx="59" cy="106" r="1" fill="rgba(203,54,18,1)"/>
- <circle cx="60" cy="106" r="1" fill="rgba(203,56,18,1)"/>
- <circle cx="61" cy="106" r="1" fill="rgba(204,56,18,1)"/>
- <circle cx="62" cy="106" r="1" fill="rgba(200,51,15,1)"/>
- <circle cx="63" cy="106" r="1" fill="rgba(198,45,12,1)"/>
- <circle cx="64" cy="106" r="1" fill="rgba(184,23,5,1)"/>
- <circle cx="65" cy="106" r="1" fill="rgba(117,0,0,1)"/>
- <circle cx="66" cy="106" r="1" fill="rgba(142,28,6,1)"/>
- <circle cx="67" cy="106" r="1" fill="rgba(206,41,9,1)"/>
- <circle cx="68" cy="106" r="1" fill="rgba(203,45,11,1)"/>
- <circle cx="69" cy="106" r="1" fill="rgba(207,53,14,1)"/>
- <circle cx="70" cy="106" r="1" fill="rgba(211,61,18,1)"/>
- <circle cx="71" cy="106" r="1" fill="rgba(214,66,20,1)"/>
- <circle cx="72" cy="106" r="1" fill="rgba(215,67,20,1)"/>
- <circle cx="73" cy="106" r="1" fill="rgba(217,67,20,1)"/>
- <circle cx="74" cy="106" r="1" fill="rgba(217,67,20,1)"/>
- <circle cx="75" cy="106" r="1" fill="rgba(219,68,19,1)"/>
- <circle cx="76" cy="106" r="1" fill="rgba(221,70,20,1)"/>
- <circle cx="77" cy="106" r="1" fill="rgba(224,73,20,1)"/>
- <circle cx="78" cy="106" r="1" fill="rgba(224,75,21,1)"/>
- <circle cx="79" cy="106" r="1" fill="rgba(224,75,21,1)"/>
- <circle cx="80" cy="106" r="1" fill="rgba(227,75,21,1)"/>
- <circle cx="81" cy="106" r="1" fill="rgba(229,76,22,1)"/>
- <circle cx="82" cy="106" r="1" fill="rgba(193,58,16,0.941176)"/>
- <circle cx="83" cy="106" r="1" fill="rgba(105,24,6,0.796078)"/>
- <circle cx="84" cy="106" r="1" fill="rgba(37,4,1,0.698039)"/>
- <circle cx="85" cy="106" r="1" fill="rgba(39,4,1,0.666667)"/>
- <circle cx="86" cy="106" r="1" fill="rgba(40,5,1,0.627451)"/>
- <circle cx="87" cy="106" r="1" fill="rgba(33,3,0,0.572549)"/>
- <circle cx="88" cy="106" r="1" fill="rgba(24,0,0,0.521569)"/>
- <circle cx="89" cy="106" r="1" fill="rgba(12,0,0,0.47451)"/>
- <circle cx="90" cy="106" r="1" fill="rgba(4,0,0,0.435294)"/>
- <circle cx="91" cy="106" r="1" fill="rgba(7,0,0,0.388235)"/>
- <circle cx="92" cy="106" r="1" fill="rgba(21,4,0,0.337255)"/>
- <circle cx="93" cy="106" r="1" fill="rgba(33,9,1,0.266667)"/>
- <circle cx="94" cy="106" r="1" fill="rgba(43,14,2,0.184314)"/>
- <circle cx="95" cy="106" r="1" fill="rgba(47,14,1,0.113725)"/>
- <circle cx="96" cy="106" r="1" fill="rgba(37,6,0,0.054902)"/>
- <circle cx="97" cy="106" r="1" fill="rgba(10,0,0,0.0156863)"/>
- <circle cx="98" cy="106" r="1" fill="rgba(0,1,0,0)"/>
- <circle cx="99" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="106" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="106" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="107" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="107" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="107" r="1" fill="rgba(117,14,3,0)"/>
- <circle cx="41" cy="107" r="1" fill="rgba(103,13,2,0.0901961)"/>
- <circle cx="42" cy="107" r="1" fill="rgba(55,5,0,0.333333)"/>
- <circle cx="43" cy="107" r="1" fill="rgba(10,0,0,0.47451)"/>
- <circle cx="44" cy="107" r="1" fill="rgba(12,0,0,0.494118)"/>
- <circle cx="45" cy="107" r="1" fill="rgba(21,1,0,0.517647)"/>
- <circle cx="46" cy="107" r="1" fill="rgba(21,1,0,0.54902)"/>
- <circle cx="47" cy="107" r="1" fill="rgba(33,3,0,0.603922)"/>
- <circle cx="48" cy="107" r="1" fill="rgba(98,14,3,0.74902)"/>
- <circle cx="49" cy="107" r="1" fill="rgba(166,29,7,0.929412)"/>
- <circle cx="50" cy="107" r="1" fill="rgba(193,37,9,1)"/>
- <circle cx="51" cy="107" r="1" fill="rgba(194,37,10,1)"/>
- <circle cx="52" cy="107" r="1" fill="rgba(191,37,9,1)"/>
- <circle cx="53" cy="107" r="1" fill="rgba(192,37,9,1)"/>
- <circle cx="54" cy="107" r="1" fill="rgba(193,38,10,1)"/>
- <circle cx="55" cy="107" r="1" fill="rgba(194,40,11,1)"/>
- <circle cx="56" cy="107" r="1" fill="rgba(195,41,11,1)"/>
- <circle cx="57" cy="107" r="1" fill="rgba(196,42,11,1)"/>
- <circle cx="58" cy="107" r="1" fill="rgba(197,44,12,1)"/>
- <circle cx="59" cy="107" r="1" fill="rgba(198,46,13,1)"/>
- <circle cx="60" cy="107" r="1" fill="rgba(199,48,14,1)"/>
- <circle cx="61" cy="107" r="1" fill="rgba(199,49,14,1)"/>
- <circle cx="62" cy="107" r="1" fill="rgba(196,46,13,1)"/>
- <circle cx="63" cy="107" r="1" fill="rgba(194,42,11,1)"/>
- <circle cx="64" cy="107" r="1" fill="rgba(179,22,4,1)"/>
- <circle cx="65" cy="107" r="1" fill="rgba(111,0,0,1)"/>
- <circle cx="66" cy="107" r="1" fill="rgba(142,29,6,1)"/>
- <circle cx="67" cy="107" r="1" fill="rgba(206,42,9,1)"/>
- <circle cx="68" cy="107" r="1" fill="rgba(203,45,10,1)"/>
- <circle cx="69" cy="107" r="1" fill="rgba(207,52,13,1)"/>
- <circle cx="70" cy="107" r="1" fill="rgba(210,58,16,1)"/>
- <circle cx="71" cy="107" r="1" fill="rgba(213,62,18,1)"/>
- <circle cx="72" cy="107" r="1" fill="rgba(214,63,18,1)"/>
- <circle cx="73" cy="107" r="1" fill="rgba(217,64,17,1)"/>
- <circle cx="74" cy="107" r="1" fill="rgba(218,65,17,1)"/>
- <circle cx="75" cy="107" r="1" fill="rgba(221,67,18,1)"/>
- <circle cx="76" cy="107" r="1" fill="rgba(221,70,18,1)"/>
- <circle cx="77" cy="107" r="1" fill="rgba(224,73,20,1)"/>
- <circle cx="78" cy="107" r="1" fill="rgba(227,75,21,1)"/>
- <circle cx="79" cy="107" r="1" fill="rgba(230,75,22,1)"/>
- <circle cx="80" cy="107" r="1" fill="rgba(205,65,18,0.964706)"/>
- <circle cx="81" cy="107" r="1" fill="rgba(131,34,8,0.843137)"/>
- <circle cx="82" cy="107" r="1" fill="rgba(55,8,2,0.72549)"/>
- <circle cx="83" cy="107" r="1" fill="rgba(33,3,1,0.678431)"/>
- <circle cx="84" cy="107" r="1" fill="rgba(42,5,1,0.647059)"/>
- <circle cx="85" cy="107" r="1" fill="rgba(37,3,0,0.603922)"/>
- <circle cx="86" cy="107" r="1" fill="rgba(29,2,0,0.556863)"/>
- <circle cx="87" cy="107" r="1" fill="rgba(21,0,0,0.513725)"/>
- <circle cx="88" cy="107" r="1" fill="rgba(12,0,0,0.47451)"/>
- <circle cx="89" cy="107" r="1" fill="rgba(4,0,0,0.431373)"/>
- <circle cx="90" cy="107" r="1" fill="rgba(7,0,0,0.392157)"/>
- <circle cx="91" cy="107" r="1" fill="rgba(21,4,0,0.337255)"/>
- <circle cx="92" cy="107" r="1" fill="rgba(33,9,1,0.270588)"/>
- <circle cx="93" cy="107" r="1" fill="rgba(43,14,2,0.192157)"/>
- <circle cx="94" cy="107" r="1" fill="rgba(46,14,1,0.113725)"/>
- <circle cx="95" cy="107" r="1" fill="rgba(36,5,0,0.054902)"/>
- <circle cx="96" cy="107" r="1" fill="rgba(10,0,0,0.0196078)"/>
- <circle cx="97" cy="107" r="1" fill="none"/>
- <circle cx="98" cy="107" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="99" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="107" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="107" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="108" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="108" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="108" r="1" fill="rgba(115,14,3,0)"/>
- <circle cx="41" cy="108" r="1" fill="rgba(114,14,3,0)"/>
- <circle cx="42" cy="108" r="1" fill="rgba(101,14,2,0.0901961)"/>
- <circle cx="43" cy="108" r="1" fill="rgba(57,6,0,0.329412)"/>
- <circle cx="44" cy="108" r="1" fill="rgba(15,0,0,0.470588)"/>
- <circle cx="45" cy="108" r="1" fill="rgba(7,0,0,0.490196)"/>
- <circle cx="46" cy="108" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="47" cy="108" r="1" fill="rgba(22,1,0,0.533333)"/>
- <circle cx="48" cy="108" r="1" fill="rgba(21,2,0,0.568627)"/>
- <circle cx="49" cy="108" r="1" fill="rgba(43,5,1,0.639216)"/>
- <circle cx="50" cy="108" r="1" fill="rgba(103,16,3,0.776471)"/>
- <circle cx="51" cy="108" r="1" fill="rgba(158,29,7,0.913725)"/>
- <circle cx="52" cy="108" r="1" fill="rgba(190,36,9,1)"/>
- <circle cx="53" cy="108" r="1" fill="rgba(197,39,10,1)"/>
- <circle cx="54" cy="108" r="1" fill="rgba(195,39,10,1)"/>
- <circle cx="55" cy="108" r="1" fill="rgba(194,39,10,1)"/>
- <circle cx="56" cy="108" r="1" fill="rgba(194,39,10,1)"/>
- <circle cx="57" cy="108" r="1" fill="rgba(194,40,10,1)"/>
- <circle cx="58" cy="108" r="1" fill="rgba(195,41,10,1)"/>
- <circle cx="59" cy="108" r="1" fill="rgba(196,42,11,1)"/>
- <circle cx="60" cy="108" r="1" fill="rgba(196,44,11,1)"/>
- <circle cx="61" cy="108" r="1" fill="rgba(196,45,12,1)"/>
- <circle cx="62" cy="108" r="1" fill="rgba(195,43,11,1)"/>
- <circle cx="63" cy="108" r="1" fill="rgba(194,41,10,1)"/>
- <circle cx="64" cy="108" r="1" fill="rgba(177,21,4,1)"/>
- <circle cx="65" cy="108" r="1" fill="rgba(105,0,0,1)"/>
- <circle cx="66" cy="108" r="1" fill="rgba(141,29,6,1)"/>
- <circle cx="67" cy="108" r="1" fill="rgba(207,41,9,1)"/>
- <circle cx="68" cy="108" r="1" fill="rgba(203,47,10,1)"/>
- <circle cx="69" cy="108" r="1" fill="rgba(208,53,13,1)"/>
- <circle cx="70" cy="108" r="1" fill="rgba(212,58,16,1)"/>
- <circle cx="71" cy="108" r="1" fill="rgba(214,62,17,1)"/>
- <circle cx="72" cy="108" r="1" fill="rgba(217,65,18,1)"/>
- <circle cx="73" cy="108" r="1" fill="rgba(218,65,17,1)"/>
- <circle cx="74" cy="108" r="1" fill="rgba(221,68,18,1)"/>
- <circle cx="75" cy="108" r="1" fill="rgba(224,71,19,1)"/>
- <circle cx="76" cy="108" r="1" fill="rgba(229,73,20,1)"/>
- <circle cx="77" cy="108" r="1" fill="rgba(225,72,20,1)"/>
- <circle cx="78" cy="108" r="1" fill="rgba(196,61,16,0.952941)"/>
- <circle cx="79" cy="108" r="1" fill="rgba(137,36,9,0.85098)"/>
- <circle cx="80" cy="108" r="1" fill="rgba(67,12,3,0.74902)"/>
- <circle cx="81" cy="108" r="1" fill="rgba(33,2,1,0.694118)"/>
- <circle cx="82" cy="108" r="1" fill="rgba(42,5,1,0.666667)"/>
- <circle cx="83" cy="108" r="1" fill="rgba(39,5,1,0.623529)"/>
- <circle cx="84" cy="108" r="1" fill="rgba(33,3,0,0.572549)"/>
- <circle cx="85" cy="108" r="1" fill="rgba(24,0,0,0.533333)"/>
- <circle cx="86" cy="108" r="1" fill="rgba(17,0,0,0.498039)"/>
- <circle cx="87" cy="108" r="1" fill="rgba(10,0,0,0.466667)"/>
- <circle cx="88" cy="108" r="1" fill="rgba(4,0,0,0.431373)"/>
- <circle cx="89" cy="108" r="1" fill="rgba(12,1,0,0.388235)"/>
- <circle cx="90" cy="108" r="1" fill="rgba(21,5,0,0.333333)"/>
- <circle cx="91" cy="108" r="1" fill="rgba(34,9,1,0.266667)"/>
- <circle cx="92" cy="108" r="1" fill="rgba(43,13,2,0.192157)"/>
- <circle cx="93" cy="108" r="1" fill="rgba(46,13,1,0.113725)"/>
- <circle cx="94" cy="108" r="1" fill="rgba(36,6,0,0.054902)"/>
- <circle cx="95" cy="108" r="1" fill="rgba(10,0,0,0.0196078)"/>
- <circle cx="96" cy="108" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="97" cy="108" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="98" cy="108" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="108" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="108" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="109" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="109" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="109" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="109" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="109" r="1" fill="rgba(112,16,3,0)"/>
- <circle cx="43" cy="109" r="1" fill="rgba(105,16,3,0.0745098)"/>
- <circle cx="44" cy="109" r="1" fill="rgba(62,7,1,0.301961)"/>
- <circle cx="45" cy="109" r="1" fill="rgba(12,0,0,0.462745)"/>
- <circle cx="46" cy="109" r="1" fill="rgba(4,0,0,0.482353)"/>
- <circle cx="47" cy="109" r="1" fill="rgba(15,0,0,0.490196)"/>
- <circle cx="48" cy="109" r="1" fill="rgba(22,1,0,0.513725)"/>
- <circle cx="49" cy="109" r="1" fill="rgba(26,2,0,0.54902)"/>
- <circle cx="50" cy="109" r="1" fill="rgba(22,2,0,0.588235)"/>
- <circle cx="51" cy="109" r="1" fill="rgba(39,5,1,0.647059)"/>
- <circle cx="52" cy="109" r="1" fill="rgba(86,14,3,0.74902)"/>
- <circle cx="53" cy="109" r="1" fill="rgba(139,25,6,0.870588)"/>
- <circle cx="54" cy="109" r="1" fill="rgba(179,36,9,0.960784)"/>
- <circle cx="55" cy="109" r="1" fill="rgba(196,41,11,1)"/>
- <circle cx="56" cy="109" r="1" fill="rgba(202,42,11,1)"/>
- <circle cx="57" cy="109" r="1" fill="rgba(200,42,10,1)"/>
- <circle cx="58" cy="109" r="1" fill="rgba(198,41,10,1)"/>
- <circle cx="59" cy="109" r="1" fill="rgba(198,43,10,1)"/>
- <circle cx="60" cy="109" r="1" fill="rgba(198,45,11,1)"/>
- <circle cx="61" cy="109" r="1" fill="rgba(198,45,12,1)"/>
- <circle cx="62" cy="109" r="1" fill="rgba(196,44,11,1)"/>
- <circle cx="63" cy="109" r="1" fill="rgba(196,43,11,1)"/>
- <circle cx="64" cy="109" r="1" fill="rgba(179,23,4,1)"/>
- <circle cx="65" cy="109" r="1" fill="rgba(102,0,0,1)"/>
- <circle cx="66" cy="109" r="1" fill="rgba(138,29,6,1)"/>
- <circle cx="67" cy="109" r="1" fill="rgba(207,44,10,1)"/>
- <circle cx="68" cy="109" r="1" fill="rgba(206,50,12,1)"/>
- <circle cx="69" cy="109" r="1" fill="rgba(210,56,14,1)"/>
- <circle cx="70" cy="109" r="1" fill="rgba(216,63,18,1)"/>
- <circle cx="71" cy="109" r="1" fill="rgba(221,69,20,1)"/>
- <circle cx="72" cy="109" r="1" fill="rgba(225,73,22,1)"/>
- <circle cx="73" cy="109" r="1" fill="rgba(230,75,22,1)"/>
- <circle cx="74" cy="109" r="1" fill="rgba(226,73,22,1)"/>
- <circle cx="75" cy="109" r="1" fill="rgba(210,66,19,0.976471)"/>
- <circle cx="76" cy="109" r="1" fill="rgba(170,49,13,0.909804)"/>
- <circle cx="77" cy="109" r="1" fill="rgba(115,27,6,0.823529)"/>
- <circle cx="78" cy="109" r="1" fill="rgba(57,9,2,0.745098)"/>
- <circle cx="79" cy="109" r="1" fill="rgba(34,3,1,0.701961)"/>
- <circle cx="80" cy="109" r="1" fill="rgba(42,5,1,0.678431)"/>
- <circle cx="81" cy="109" r="1" fill="rgba(42,5,1,0.639216)"/>
- <circle cx="82" cy="109" r="1" fill="rgba(36,4,0,0.592157)"/>
- <circle cx="83" cy="109" r="1" fill="rgba(28,2,0,0.54902)"/>
- <circle cx="84" cy="109" r="1" fill="rgba(19,0,0,0.509804)"/>
- <circle cx="85" cy="109" r="1" fill="rgba(12,0,0,0.482353)"/>
- <circle cx="86" cy="109" r="1" fill="rgba(4,0,0,0.454902)"/>
- <circle cx="87" cy="109" r="1" fill="rgba(4,0,0,0.423529)"/>
- <circle cx="88" cy="109" r="1" fill="rgba(12,1,0,0.380392)"/>
- <circle cx="89" cy="109" r="1" fill="rgba(24,5,0,0.32549)"/>
- <circle cx="90" cy="109" r="1" fill="rgba(34,10,1,0.258824)"/>
- <circle cx="91" cy="109" r="1" fill="rgba(45,12,2,0.180392)"/>
- <circle cx="92" cy="109" r="1" fill="rgba(49,12,1,0.109804)"/>
- <circle cx="93" cy="109" r="1" fill="rgba(39,6,0,0.0509804)"/>
- <circle cx="94" cy="109" r="1" fill="rgba(12,0,0,0.0156863)"/>
- <circle cx="95" cy="109" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="96" cy="109" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="109" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="109" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="109" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="109" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="110" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="110" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="110" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="110" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="110" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="110" r="1" fill="rgba(115,17,3,0)"/>
- <circle cx="44" cy="110" r="1" fill="rgba(92,13,2,0.054902)"/>
- <circle cx="45" cy="110" r="1" fill="rgba(55,6,1,0.266667)"/>
- <circle cx="46" cy="110" r="1" fill="rgba(24,1,0,0.439216)"/>
- <circle cx="47" cy="110" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="48" cy="110" r="1" fill="rgba(7,0,0,0.478431)"/>
- <circle cx="49" cy="110" r="1" fill="rgba(17,0,0,0.498039)"/>
- <circle cx="50" cy="110" r="1" fill="rgba(24,2,0,0.529412)"/>
- <circle cx="51" cy="110" r="1" fill="rgba(29,2,0,0.568627)"/>
- <circle cx="52" cy="110" r="1" fill="rgba(28,3,0,0.603922)"/>
- <circle cx="53" cy="110" r="1" fill="rgba(33,4,1,0.643137)"/>
- <circle cx="54" cy="110" r="1" fill="rgba(55,8,2,0.701961)"/>
- <circle cx="55" cy="110" r="1" fill="rgba(97,17,4,0.784314)"/>
- <circle cx="56" cy="110" r="1" fill="rgba(134,26,6,0.862745)"/>
- <circle cx="57" cy="110" r="1" fill="rgba(167,36,9,0.92549)"/>
- <circle cx="58" cy="110" r="1" fill="rgba(188,42,11,0.976471)"/>
- <circle cx="59" cy="110" r="1" fill="rgba(199,46,12,0.996078)"/>
- <circle cx="60" cy="110" r="1" fill="rgba(204,49,13,1)"/>
- <circle cx="61" cy="110" r="1" fill="rgba(209,52,14,1)"/>
- <circle cx="62" cy="110" r="1" fill="rgba(210,53,14,1)"/>
- <circle cx="63" cy="110" r="1" fill="rgba(210,53,14,1)"/>
- <circle cx="64" cy="110" r="1" fill="rgba(190,31,7,1)"/>
- <circle cx="65" cy="110" r="1" fill="rgba(129,3,0,1)"/>
- <circle cx="66" cy="110" r="1" fill="rgba(170,44,12,1)"/>
- <circle cx="67" cy="110" r="1" fill="rgba(217,53,13,1)"/>
- <circle cx="68" cy="110" r="1" fill="rgba(218,60,17,1)"/>
- <circle cx="69" cy="110" r="1" fill="rgba(220,68,20,1)"/>
- <circle cx="70" cy="110" r="1" fill="rgba(220,73,23,1)"/>
- <circle cx="71" cy="110" r="1" fill="rgba(214,74,24,0.984314)"/>
- <circle cx="72" cy="110" r="1" fill="rgba(196,66,20,0.945098)"/>
- <circle cx="73" cy="110" r="1" fill="rgba(158,47,13,0.886275)"/>
- <circle cx="74" cy="110" r="1" fill="rgba(118,30,7,0.827451)"/>
- <circle cx="75" cy="110" r="1" fill="rgba(71,13,3,0.760784)"/>
- <circle cx="76" cy="110" r="1" fill="rgba(42,5,1,0.72549)"/>
- <circle cx="77" cy="110" r="1" fill="rgba(36,3,1,0.701961)"/>
- <circle cx="78" cy="110" r="1" fill="rgba(43,6,1,0.686275)"/>
- <circle cx="79" cy="110" r="1" fill="rgba(42,6,1,0.65098)"/>
- <circle cx="80" cy="110" r="1" fill="rgba(37,4,0,0.603922)"/>
- <circle cx="81" cy="110" r="1" fill="rgba(29,2,0,0.560784)"/>
- <circle cx="82" cy="110" r="1" fill="rgba(22,0,0,0.521569)"/>
- <circle cx="83" cy="110" r="1" fill="rgba(15,0,0,0.494118)"/>
- <circle cx="84" cy="110" r="1" fill="rgba(7,0,0,0.466667)"/>
- <circle cx="85" cy="110" r="1" fill="rgba(4,0,0,0.443137)"/>
- <circle cx="86" cy="110" r="1" fill="rgba(7,0,0,0.411765)"/>
- <circle cx="87" cy="110" r="1" fill="rgba(15,2,0,0.368627)"/>
- <circle cx="88" cy="110" r="1" fill="rgba(24,6,0,0.313725)"/>
- <circle cx="89" cy="110" r="1" fill="rgba(34,11,1,0.243137)"/>
- <circle cx="90" cy="110" r="1" fill="rgba(45,13,3,0.168627)"/>
- <circle cx="91" cy="110" r="1" fill="rgba(51,14,2,0.0980392)"/>
- <circle cx="92" cy="110" r="1" fill="rgba(42,7,0,0.0431373)"/>
- <circle cx="93" cy="110" r="1" fill="rgba(15,0,0,0.0117647)"/>
- <circle cx="94" cy="110" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="95" cy="110" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="110" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="110" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="110" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="110" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="110" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="111" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="111" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="111" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="111" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="111" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="111" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="111" r="1" fill="rgba(92,12,2,0)"/>
- <circle cx="45" cy="111" r="1" fill="rgba(84,13,3,0.0313725)"/>
- <circle cx="46" cy="111" r="1" fill="rgba(82,12,2,0.2)"/>
- <circle cx="47" cy="111" r="1" fill="rgba(37,3,0,0.4)"/>
- <circle cx="48" cy="111" r="1" fill="rgba(4,0,0,0.47451)"/>
- <circle cx="49" cy="111" r="1" fill="rgba(4,0,0,0.478431)"/>
- <circle cx="50" cy="111" r="1" fill="rgba(12,0,0,0.486275)"/>
- <circle cx="51" cy="111" r="1" fill="rgba(19,1,0,0.509804)"/>
- <circle cx="52" cy="111" r="1" fill="rgba(24,1,0,0.541176)"/>
- <circle cx="53" cy="111" r="1" fill="rgba(31,2,0,0.576471)"/>
- <circle cx="54" cy="111" r="1" fill="rgba(34,4,0,0.611765)"/>
- <circle cx="55" cy="111" r="1" fill="rgba(31,4,0,0.635294)"/>
- <circle cx="56" cy="111" r="1" fill="rgba(31,4,0,0.658824)"/>
- <circle cx="57" cy="111" r="1" fill="rgba(47,7,1,0.690196)"/>
- <circle cx="58" cy="111" r="1" fill="rgba(61,9,2,0.721569)"/>
- <circle cx="59" cy="111" r="1" fill="rgba(91,16,3,0.772549)"/>
- <circle cx="60" cy="111" r="1" fill="rgba(113,22,5,0.815686)"/>
- <circle cx="61" cy="111" r="1" fill="rgba(130,29,7,0.847059)"/>
- <circle cx="62" cy="111" r="1" fill="rgba(137,31,8,0.866667)"/>
- <circle cx="63" cy="111" r="1" fill="rgba(152,37,10,0.890196)"/>
- <circle cx="64" cy="111" r="1" fill="rgba(150,32,8,0.898039)"/>
- <circle cx="65" cy="111" r="1" fill="rgba(140,20,5,0.898039)"/>
- <circle cx="66" cy="111" r="1" fill="rgba(156,37,10,0.898039)"/>
- <circle cx="67" cy="111" r="1" fill="rgba(142,33,8,0.870588)"/>
- <circle cx="68" cy="111" r="1" fill="rgba(138,34,9,0.858824)"/>
- <circle cx="69" cy="111" r="1" fill="rgba(125,33,9,0.827451)"/>
- <circle cx="70" cy="111" r="1" fill="rgba(104,26,7,0.788235)"/>
- <circle cx="71" cy="111" r="1" fill="rgba(73,15,3,0.74902)"/>
- <circle cx="72" cy="111" r="1" fill="rgba(54,8,2,0.729412)"/>
- <circle cx="73" cy="111" r="1" fill="rgba(36,3,1,0.705882)"/>
- <circle cx="74" cy="111" r="1" fill="rgba(34,4,1,0.694118)"/>
- <circle cx="75" cy="111" r="1" fill="rgba(42,5,1,0.690196)"/>
- <circle cx="76" cy="111" r="1" fill="rgba(43,6,1,0.67451)"/>
- <circle cx="77" cy="111" r="1" fill="rgba(42,5,1,0.643137)"/>
- <circle cx="78" cy="111" r="1" fill="rgba(37,5,1,0.603922)"/>
- <circle cx="79" cy="111" r="1" fill="rgba(29,2,0,0.560784)"/>
- <circle cx="80" cy="111" r="1" fill="rgba(22,1,0,0.52549)"/>
- <circle cx="81" cy="111" r="1" fill="rgba(17,0,0,0.498039)"/>
- <circle cx="82" cy="111" r="1" fill="rgba(10,0,0,0.47451)"/>
- <circle cx="83" cy="111" r="1" fill="rgba(4,0,0,0.454902)"/>
- <circle cx="84" cy="111" r="1" fill="rgba(4,0,0,0.427451)"/>
- <circle cx="85" cy="111" r="1" fill="rgba(10,0,0,0.396078)"/>
- <circle cx="86" cy="111" r="1" fill="rgba(19,3,0,0.352941)"/>
- <circle cx="87" cy="111" r="1" fill="rgba(28,8,1,0.294118)"/>
- <circle cx="88" cy="111" r="1" fill="rgba(36,11,2,0.223529)"/>
- <circle cx="89" cy="111" r="1" fill="rgba(43,15,2,0.14902)"/>
- <circle cx="90" cy="111" r="1" fill="rgba(55,15,1,0.0823529)"/>
- <circle cx="91" cy="111" r="1" fill="rgba(49,9,0,0.0392157)"/>
- <circle cx="92" cy="111" r="1" fill="rgba(17,0,0,0.0117647)"/>
- <circle cx="93" cy="111" r="1" fill="none"/>
- <circle cx="94" cy="111" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="111" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="111" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="111" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="111" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="111" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="111" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="112" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="112" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="112" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="112" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="112" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="112" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="112" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="112" r="1" fill="rgba(87,13,3,0)"/>
- <circle cx="46" cy="112" r="1" fill="rgba(106,18,4,0.00392157)"/>
- <circle cx="47" cy="112" r="1" fill="rgba(84,14,3,0.129412)"/>
- <circle cx="48" cy="112" r="1" fill="rgba(55,8,1,0.32549)"/>
- <circle cx="49" cy="112" r="1" fill="rgba(19,0,0,0.45098)"/>
- <circle cx="50" cy="112" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="51" cy="112" r="1" fill="rgba(7,0,0,0.478431)"/>
- <circle cx="52" cy="112" r="1" fill="rgba(15,0,0,0.490196)"/>
- <circle cx="53" cy="112" r="1" fill="rgba(21,1,0,0.509804)"/>
- <circle cx="54" cy="112" r="1" fill="rgba(24,2,0,0.533333)"/>
- <circle cx="55" cy="112" r="1" fill="rgba(29,3,0,0.556863)"/>
- <circle cx="56" cy="112" r="1" fill="rgba(31,3,0,0.580392)"/>
- <circle cx="57" cy="112" r="1" fill="rgba(34,4,0,0.596078)"/>
- <circle cx="58" cy="112" r="1" fill="rgba(36,4,0,0.615686)"/>
- <circle cx="59" cy="112" r="1" fill="rgba(31,3,0,0.631373)"/>
- <circle cx="60" cy="112" r="1" fill="rgba(31,3,0,0.643137)"/>
- <circle cx="61" cy="112" r="1" fill="rgba(28,3,0,0.65098)"/>
- <circle cx="62" cy="112" r="1" fill="rgba(28,2,0,0.658824)"/>
- <circle cx="63" cy="112" r="1" fill="rgba(37,4,1,0.670588)"/>
- <circle cx="64" cy="112" r="1" fill="rgba(42,6,1,0.678431)"/>
- <circle cx="65" cy="112" r="1" fill="rgba(45,8,1,0.678431)"/>
- <circle cx="66" cy="112" r="1" fill="rgba(40,5,1,0.678431)"/>
- <circle cx="67" cy="112" r="1" fill="rgba(29,3,0,0.666667)"/>
- <circle cx="68" cy="112" r="1" fill="rgba(28,2,0,0.662745)"/>
- <circle cx="69" cy="112" r="1" fill="rgba(29,2,0,0.662745)"/>
- <circle cx="70" cy="112" r="1" fill="rgba(33,3,0,0.658824)"/>
- <circle cx="71" cy="112" r="1" fill="rgba(37,4,1,0.654902)"/>
- <circle cx="72" cy="112" r="1" fill="rgba(40,5,1,0.65098)"/>
- <circle cx="73" cy="112" r="1" fill="rgba(42,5,1,0.647059)"/>
- <circle cx="74" cy="112" r="1" fill="rgba(40,6,1,0.631373)"/>
- <circle cx="75" cy="112" r="1" fill="rgba(37,4,1,0.611765)"/>
- <circle cx="76" cy="112" r="1" fill="rgba(34,3,0,0.584314)"/>
- <circle cx="77" cy="112" r="1" fill="rgba(29,2,0,0.556863)"/>
- <circle cx="78" cy="112" r="1" fill="rgba(22,1,0,0.52549)"/>
- <circle cx="79" cy="112" r="1" fill="rgba(17,0,0,0.498039)"/>
- <circle cx="80" cy="112" r="1" fill="rgba(10,0,0,0.478431)"/>
- <circle cx="81" cy="112" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="82" cy="112" r="1" fill="rgba(4,0,0,0.439216)"/>
- <circle cx="83" cy="112" r="1" fill="rgba(10,0,0,0.411765)"/>
- <circle cx="84" cy="112" r="1" fill="rgba(19,2,0,0.376471)"/>
- <circle cx="85" cy="112" r="1" fill="rgba(24,5,0,0.32549)"/>
- <circle cx="86" cy="112" r="1" fill="rgba(33,10,1,0.266667)"/>
- <circle cx="87" cy="112" r="1" fill="rgba(39,13,3,0.196078)"/>
- <circle cx="88" cy="112" r="1" fill="rgba(49,12,3,0.129412)"/>
- <circle cx="89" cy="112" r="1" fill="rgba(47,9,0,0.0705882)"/>
- <circle cx="90" cy="112" r="1" fill="rgba(46,5,0,0.027451)"/>
- <circle cx="91" cy="112" r="1" fill="rgba(26,2,0,0.00784314)"/>
- <circle cx="92" cy="112" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="93" cy="112" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="112" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="112" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="112" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="112" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="112" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="112" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="112" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="113" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="113" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="113" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="113" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="113" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="113" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="113" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="113" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="113" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="113" r="1" fill="rgba(95,16,3,0)"/>
- <circle cx="48" cy="113" r="1" fill="rgba(92,16,3,0.054902)"/>
- <circle cx="49" cy="113" r="1" fill="rgba(74,12,2,0.223529)"/>
- <circle cx="50" cy="113" r="1" fill="rgba(43,6,0,0.388235)"/>
- <circle cx="51" cy="113" r="1" fill="rgba(10,0,0,0.466667)"/>
- <circle cx="52" cy="113" r="1" fill="rgba(0,0,0,0.478431)"/>
- <circle cx="53" cy="113" r="1" fill="rgba(4,0,0,0.478431)"/>
- <circle cx="54" cy="113" r="1" fill="rgba(12,0,0,0.482353)"/>
- <circle cx="55" cy="113" r="1" fill="rgba(15,0,0,0.494118)"/>
- <circle cx="56" cy="113" r="1" fill="rgba(17,0,0,0.501961)"/>
- <circle cx="57" cy="113" r="1" fill="rgba(21,0,0,0.509804)"/>
- <circle cx="58" cy="113" r="1" fill="rgba(22,1,0,0.529412)"/>
- <circle cx="59" cy="113" r="1" fill="rgba(28,2,0,0.545098)"/>
- <circle cx="60" cy="113" r="1" fill="rgba(29,2,0,0.556863)"/>
- <circle cx="61" cy="113" r="1" fill="rgba(31,3,0,0.564706)"/>
- <circle cx="62" cy="113" r="1" fill="rgba(31,3,0,0.572549)"/>
- <circle cx="63" cy="113" r="1" fill="rgba(31,3,0,0.580392)"/>
- <circle cx="64" cy="113" r="1" fill="rgba(33,4,0,0.584314)"/>
- <circle cx="65" cy="113" r="1" fill="rgba(34,4,0,0.588235)"/>
- <circle cx="66" cy="113" r="1" fill="rgba(34,4,0,0.588235)"/>
- <circle cx="67" cy="113" r="1" fill="rgba(34,3,0,0.588235)"/>
- <circle cx="68" cy="113" r="1" fill="rgba(34,3,0,0.580392)"/>
- <circle cx="69" cy="113" r="1" fill="rgba(33,3,0,0.580392)"/>
- <circle cx="70" cy="113" r="1" fill="rgba(33,3,0,0.576471)"/>
- <circle cx="71" cy="113" r="1" fill="rgba(33,3,0,0.572549)"/>
- <circle cx="72" cy="113" r="1" fill="rgba(31,2,0,0.568627)"/>
- <circle cx="73" cy="113" r="1" fill="rgba(29,2,0,0.556863)"/>
- <circle cx="74" cy="113" r="1" fill="rgba(28,2,0,0.545098)"/>
- <circle cx="75" cy="113" r="1" fill="rgba(24,2,0,0.529412)"/>
- <circle cx="76" cy="113" r="1" fill="rgba(21,0,0,0.509804)"/>
- <circle cx="77" cy="113" r="1" fill="rgba(15,0,0,0.494118)"/>
- <circle cx="78" cy="113" r="1" fill="rgba(10,0,0,0.478431)"/>
- <circle cx="79" cy="113" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="80" cy="113" r="1" fill="rgba(4,0,0,0.447059)"/>
- <circle cx="81" cy="113" r="1" fill="rgba(7,0,0,0.423529)"/>
- <circle cx="82" cy="113" r="1" fill="rgba(17,2,0,0.388235)"/>
- <circle cx="83" cy="113" r="1" fill="rgba(24,5,0,0.345098)"/>
- <circle cx="84" cy="113" r="1" fill="rgba(31,8,1,0.294118)"/>
- <circle cx="85" cy="113" r="1" fill="rgba(37,12,3,0.231373)"/>
- <circle cx="86" cy="113" r="1" fill="rgba(45,14,3,0.164706)"/>
- <circle cx="87" cy="113" r="1" fill="rgba(47,14,3,0.105882)"/>
- <circle cx="88" cy="113" r="1" fill="rgba(54,6,1,0.054902)"/>
- <circle cx="89" cy="113" r="1" fill="rgba(36,0,0,0.0196078)"/>
- <circle cx="90" cy="113" r="1" fill="rgba(7,0,0,0.00392157)"/>
- <circle cx="91" cy="113" r="1" fill="rgba(24,8,2,0)"/>
- <circle cx="92" cy="113" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="113" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="113" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="113" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="113" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="113" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="113" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="113" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="113" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="114" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="114" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="114" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="114" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="114" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="114" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="114" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="114" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="114" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="114" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="114" r="1" fill="rgba(93,16,3,0)"/>
- <circle cx="49" cy="114" r="1" fill="rgba(100,18,4,0.00784314)"/>
- <circle cx="50" cy="114" r="1" fill="rgba(92,18,4,0.105882)"/>
- <circle cx="51" cy="114" r="1" fill="rgba(62,10,2,0.270588)"/>
- <circle cx="52" cy="114" r="1" fill="rgba(31,3,0,0.407843)"/>
- <circle cx="53" cy="114" r="1" fill="rgba(10,0,0,0.466667)"/>
- <circle cx="54" cy="114" r="1" fill="rgba(0,0,0,0.47451)"/>
- <circle cx="55" cy="114" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="56" cy="114" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="57" cy="114" r="1" fill="rgba(7,0,0,0.470588)"/>
- <circle cx="58" cy="114" r="1" fill="rgba(7,0,0,0.478431)"/>
- <circle cx="59" cy="114" r="1" fill="rgba(10,0,0,0.482353)"/>
- <circle cx="60" cy="114" r="1" fill="rgba(12,0,0,0.486275)"/>
- <circle cx="61" cy="114" r="1" fill="rgba(15,0,0,0.490196)"/>
- <circle cx="62" cy="114" r="1" fill="rgba(15,0,0,0.494118)"/>
- <circle cx="63" cy="114" r="1" fill="rgba(17,0,0,0.501961)"/>
- <circle cx="64" cy="114" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="65" cy="114" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="66" cy="114" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="67" cy="114" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="68" cy="114" r="1" fill="rgba(19,0,0,0.505882)"/>
- <circle cx="69" cy="114" r="1" fill="rgba(19,0,0,0.501961)"/>
- <circle cx="70" cy="114" r="1" fill="rgba(19,0,0,0.501961)"/>
- <circle cx="71" cy="114" r="1" fill="rgba(19,0,0,0.501961)"/>
- <circle cx="72" cy="114" r="1" fill="rgba(17,0,0,0.498039)"/>
- <circle cx="73" cy="114" r="1" fill="rgba(15,0,0,0.490196)"/>
- <circle cx="74" cy="114" r="1" fill="rgba(12,0,0,0.486275)"/>
- <circle cx="75" cy="114" r="1" fill="rgba(10,0,0,0.478431)"/>
- <circle cx="76" cy="114" r="1" fill="rgba(7,0,0,0.470588)"/>
- <circle cx="77" cy="114" r="1" fill="rgba(4,0,0,0.458824)"/>
- <circle cx="78" cy="114" r="1" fill="rgba(4,0,0,0.443137)"/>
- <circle cx="79" cy="114" r="1" fill="rgba(10,0,0,0.427451)"/>
- <circle cx="80" cy="114" r="1" fill="rgba(17,1,0,0.396078)"/>
- <circle cx="81" cy="114" r="1" fill="rgba(24,3,0,0.356863)"/>
- <circle cx="82" cy="114" r="1" fill="rgba(29,7,0,0.305882)"/>
- <circle cx="83" cy="114" r="1" fill="rgba(36,11,1,0.25098)"/>
- <circle cx="84" cy="114" r="1" fill="rgba(42,13,3,0.188235)"/>
- <circle cx="85" cy="114" r="1" fill="rgba(45,15,3,0.129412)"/>
- <circle cx="86" cy="114" r="1" fill="rgba(49,13,1,0.0823529)"/>
- <circle cx="87" cy="114" r="1" fill="rgba(45,7,0,0.0392157)"/>
- <circle cx="88" cy="114" r="1" fill="rgba(26,0,0,0.0156863)"/>
- <circle cx="89" cy="114" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="90" cy="114" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="91" cy="114" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="114" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="114" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="114" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="114" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="114" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="114" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="114" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="114" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="114" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="115" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="115" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="115" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="115" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="115" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="115" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="115" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="115" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="115" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="115" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="115" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="115" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="115" r="1" fill="rgba(99,19,4,0)"/>
- <circle cx="51" cy="115" r="1" fill="rgba(84,16,3,0.0235294)"/>
- <circle cx="52" cy="115" r="1" fill="rgba(70,13,2,0.12549)"/>
- <circle cx="53" cy="115" r="1" fill="rgba(61,11,2,0.266667)"/>
- <circle cx="54" cy="115" r="1" fill="rgba(40,6,0,0.384314)"/>
- <circle cx="55" cy="115" r="1" fill="rgba(19,1,0,0.45098)"/>
- <circle cx="56" cy="115" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="57" cy="115" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="58" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="59" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="60" cy="115" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="61" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="62" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="63" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="64" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="65" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="66" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="67" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="68" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="69" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="70" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="71" cy="115" r="1" fill="rgba(4,0,0,0.470588)"/>
- <circle cx="72" cy="115" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="73" cy="115" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="74" cy="115" r="1" fill="rgba(4,0,0,0.458824)"/>
- <circle cx="75" cy="115" r="1" fill="rgba(4,0,0,0.45098)"/>
- <circle cx="76" cy="115" r="1" fill="rgba(7,0,0,0.439216)"/>
- <circle cx="77" cy="115" r="1" fill="rgba(12,1,0,0.419608)"/>
- <circle cx="78" cy="115" r="1" fill="rgba(19,3,0,0.392157)"/>
- <circle cx="79" cy="115" r="1" fill="rgba(24,5,0,0.34902)"/>
- <circle cx="80" cy="115" r="1" fill="rgba(31,6,0,0.301961)"/>
- <circle cx="81" cy="115" r="1" fill="rgba(36,8,1,0.25098)"/>
- <circle cx="82" cy="115" r="1" fill="rgba(42,12,2,0.192157)"/>
- <circle cx="83" cy="115" r="1" fill="rgba(47,14,2,0.141176)"/>
- <circle cx="84" cy="115" r="1" fill="rgba(50,14,1,0.0941176)"/>
- <circle cx="85" cy="115" r="1" fill="rgba(40,6,0,0.054902)"/>
- <circle cx="86" cy="115" r="1" fill="rgba(31,2,0,0.027451)"/>
- <circle cx="87" cy="115" r="1" fill="rgba(17,0,0,0.0117647)"/>
- <circle cx="88" cy="115" r="1" fill="rgba(10,2,1,0)"/>
- <circle cx="89" cy="115" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="115" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="115" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="115" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="115" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="115" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="115" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="115" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="115" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="115" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="115" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="115" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="116" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="116" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="116" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="116" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="116" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="116" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="116" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="116" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="116" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="116" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="116" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="116" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="116" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="116" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="116" r="1" fill="rgba(77,15,3,0)"/>
- <circle cx="53" cy="116" r="1" fill="rgba(88,18,4,0.0156863)"/>
- <circle cx="54" cy="116" r="1" fill="rgba(91,20,5,0.101961)"/>
- <circle cx="55" cy="116" r="1" fill="rgba(68,14,2,0.215686)"/>
- <circle cx="56" cy="116" r="1" fill="rgba(47,8,1,0.32549)"/>
- <circle cx="57" cy="116" r="1" fill="rgba(28,4,0,0.403922)"/>
- <circle cx="58" cy="116" r="1" fill="rgba(17,1,0,0.447059)"/>
- <circle cx="59" cy="116" r="1" fill="rgba(4,0,0,0.462745)"/>
- <circle cx="60" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="61" cy="116" r="1" fill="rgba(0,0,0,0.470588)"/>
- <circle cx="62" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="63" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="64" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="65" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="66" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="67" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="68" cy="116" r="1" fill="rgba(0,0,0,0.466667)"/>
- <circle cx="69" cy="116" r="1" fill="rgba(0,0,0,0.462745)"/>
- <circle cx="70" cy="116" r="1" fill="rgba(0,0,0,0.458824)"/>
- <circle cx="71" cy="116" r="1" fill="rgba(7,0,0,0.454902)"/>
- <circle cx="72" cy="116" r="1" fill="rgba(10,0,0,0.447059)"/>
- <circle cx="73" cy="116" r="1" fill="rgba(10,0,0,0.431373)"/>
- <circle cx="74" cy="116" r="1" fill="rgba(15,1,0,0.415686)"/>
- <circle cx="75" cy="116" r="1" fill="rgba(17,2,0,0.396078)"/>
- <circle cx="76" cy="116" r="1" fill="rgba(21,4,0,0.364706)"/>
- <circle cx="77" cy="116" r="1" fill="rgba(29,6,0,0.321569)"/>
- <circle cx="78" cy="116" r="1" fill="rgba(36,9,1,0.278431)"/>
- <circle cx="79" cy="116" r="1" fill="rgba(39,11,1,0.227451)"/>
- <circle cx="80" cy="116" r="1" fill="rgba(43,11,2,0.180392)"/>
- <circle cx="81" cy="116" r="1" fill="rgba(49,12,2,0.133333)"/>
- <circle cx="82" cy="116" r="1" fill="rgba(53,11,1,0.0901961)"/>
- <circle cx="83" cy="116" r="1" fill="rgba(51,9,0,0.054902)"/>
- <circle cx="84" cy="116" r="1" fill="rgba(45,4,0,0.0313725)"/>
- <circle cx="85" cy="116" r="1" fill="rgba(17,0,0,0.0117647)"/>
- <circle cx="86" cy="116" r="1" fill="rgba(0,0,0,0.00392157)"/>
- <circle cx="87" cy="116" r="1" fill="rgba(10,4,0,0)"/>
- <circle cx="88" cy="116" r="1" fill="rgba(21,4,3,0)"/>
- <circle cx="89" cy="116" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="116" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="116" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="116" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="116" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="116" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="116" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="116" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="116" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="116" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="116" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="116" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="117" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="117" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="117" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="117" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="117" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="117" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="117" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="117" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="117" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="117" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="117" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="117" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="117" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="117" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="117" r="1" fill="rgba(76,15,3,0)"/>
- <circle cx="53" cy="117" r="1" fill="rgba(88,18,4,0)"/>
- <circle cx="54" cy="117" r="1" fill="rgba(97,23,7,0)"/>
- <circle cx="55" cy="117" r="1" fill="rgba(81,16,3,0.00784314)"/>
- <circle cx="56" cy="117" r="1" fill="rgba(75,16,3,0.054902)"/>
- <circle cx="57" cy="117" r="1" fill="rgba(68,14,3,0.133333)"/>
- <circle cx="58" cy="117" r="1" fill="rgba(62,13,2,0.219608)"/>
- <circle cx="59" cy="117" r="1" fill="rgba(54,11,2,0.294118)"/>
- <circle cx="60" cy="117" r="1" fill="rgba(37,7,1,0.34902)"/>
- <circle cx="61" cy="117" r="1" fill="rgba(24,3,0,0.388235)"/>
- <circle cx="62" cy="117" r="1" fill="rgba(26,3,0,0.419608)"/>
- <circle cx="63" cy="117" r="1" fill="rgba(21,2,0,0.439216)"/>
- <circle cx="64" cy="117" r="1" fill="rgba(10,0,0,0.443137)"/>
- <circle cx="65" cy="117" r="1" fill="rgba(0,0,0,0.447059)"/>
- <circle cx="66" cy="117" r="1" fill="rgba(10,0,0,0.447059)"/>
- <circle cx="67" cy="117" r="1" fill="rgba(12,2,0,0.443137)"/>
- <circle cx="68" cy="117" r="1" fill="rgba(12,2,0,0.431373)"/>
- <circle cx="69" cy="117" r="1" fill="rgba(10,1,0,0.419608)"/>
- <circle cx="70" cy="117" r="1" fill="rgba(10,0,0,0.4)"/>
- <circle cx="71" cy="117" r="1" fill="rgba(19,3,0,0.380392)"/>
- <circle cx="72" cy="117" r="1" fill="rgba(26,4,0,0.360784)"/>
- <circle cx="73" cy="117" r="1" fill="rgba(28,5,0,0.337255)"/>
- <circle cx="74" cy="117" r="1" fill="rgba(29,6,1,0.301961)"/>
- <circle cx="75" cy="117" r="1" fill="rgba(31,8,1,0.266667)"/>
- <circle cx="76" cy="117" r="1" fill="rgba(37,9,2,0.227451)"/>
- <circle cx="77" cy="117" r="1" fill="rgba(42,11,2,0.184314)"/>
- <circle cx="78" cy="117" r="1" fill="rgba(49,14,3,0.145098)"/>
- <circle cx="79" cy="117" r="1" fill="rgba(53,14,2,0.105882)"/>
- <circle cx="80" cy="117" r="1" fill="rgba(51,9,0,0.0705882)"/>
- <circle cx="81" cy="117" r="1" fill="rgba(57,7,0,0.0431373)"/>
- <circle cx="82" cy="117" r="1" fill="rgba(54,1,0,0.0235294)"/>
- <circle cx="83" cy="117" r="1" fill="rgba(31,0,0,0.00784314)"/>
- <circle cx="84" cy="117" r="1" fill="rgba(7,2,0,0.00392157)"/>
- <circle cx="85" cy="117" r="1" fill="rgba(4,2,0,0)"/>
- <circle cx="86" cy="117" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="87" cy="117" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="88" cy="117" r="1" fill="rgba(21,4,2,0)"/>
- <circle cx="89" cy="117" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="117" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="117" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="117" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="117" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="117" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="117" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="117" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="117" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="117" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="117" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="117" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="118" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="118" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="118" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="118" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="118" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="118" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="118" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="118" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="118" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="118" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="118" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="118" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="118" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="118" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="118" r="1" fill="rgba(76,15,3,0)"/>
- <circle cx="53" cy="118" r="1" fill="rgba(88,18,4,0)"/>
- <circle cx="54" cy="118" r="1" fill="rgba(94,23,6,0)"/>
- <circle cx="55" cy="118" r="1" fill="rgba(74,12,2,0)"/>
- <circle cx="56" cy="118" r="1" fill="rgba(78,11,2,0)"/>
- <circle cx="57" cy="118" r="1" fill="rgba(76,9,2,0)"/>
- <circle cx="58" cy="118" r="1" fill="rgba(83,17,3,0.0156863)"/>
- <circle cx="59" cy="118" r="1" fill="rgba(87,22,5,0.054902)"/>
- <circle cx="60" cy="118" r="1" fill="rgba(65,14,3,0.0941176)"/>
- <circle cx="61" cy="118" r="1" fill="rgba(58,14,3,0.137255)"/>
- <circle cx="62" cy="118" r="1" fill="rgba(69,17,3,0.188235)"/>
- <circle cx="63" cy="118" r="1" fill="rgba(51,12,2,0.223529)"/>
- <circle cx="64" cy="118" r="1" fill="rgba(21,2,0,0.235294)"/>
- <circle cx="65" cy="118" r="1" fill="rgba(31,5,0,0.258824)"/>
- <circle cx="66" cy="118" r="1" fill="rgba(51,12,2,0.278431)"/>
- <circle cx="67" cy="118" r="1" fill="rgba(51,13,2,0.282353)"/>
- <circle cx="68" cy="118" r="1" fill="rgba(46,12,2,0.278431)"/>
- <circle cx="69" cy="118" r="1" fill="rgba(33,7,1,0.258824)"/>
- <circle cx="70" cy="118" r="1" fill="rgba(22,4,0,0.239216)"/>
- <circle cx="71" cy="118" r="1" fill="rgba(34,8,1,0.227451)"/>
- <circle cx="72" cy="118" r="1" fill="rgba(45,11,2,0.207843)"/>
- <circle cx="73" cy="118" r="1" fill="rgba(47,13,3,0.180392)"/>
- <circle cx="74" cy="118" r="1" fill="rgba(45,12,2,0.152941)"/>
- <circle cx="75" cy="118" r="1" fill="rgba(43,11,2,0.12549)"/>
- <circle cx="76" cy="118" r="1" fill="rgba(46,12,1,0.0980392)"/>
- <circle cx="77" cy="118" r="1" fill="rgba(54,11,2,0.0705882)"/>
- <circle cx="78" cy="118" r="1" fill="rgba(61,12,1,0.0470588)"/>
- <circle cx="79" cy="118" r="1" fill="rgba(62,5,0,0.027451)"/>
- <circle cx="80" cy="118" r="1" fill="rgba(43,0,0,0.0156863)"/>
- <circle cx="81" cy="118" r="1" fill="rgba(33,0,0,0.00784314)"/>
- <circle cx="82" cy="118" r="1" fill="rgba(15,0,0,0)"/>
- <circle cx="83" cy="118" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="84" cy="118" r="1" fill="rgba(7,6,0,0)"/>
- <circle cx="85" cy="118" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="86" cy="118" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="87" cy="118" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="88" cy="118" r="1" fill="rgba(21,4,2,0)"/>
- <circle cx="89" cy="118" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="118" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="118" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="118" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="118" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="118" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="118" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="118" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="118" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="118" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="118" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="118" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="119" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="119" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="119" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="119" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="119" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="119" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="119" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="119" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="119" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="119" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="119" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="119" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="119" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="119" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="119" r="1" fill="rgba(76,15,3,0)"/>
- <circle cx="53" cy="119" r="1" fill="rgba(88,18,4,0)"/>
- <circle cx="54" cy="119" r="1" fill="rgba(94,23,6,0)"/>
- <circle cx="55" cy="119" r="1" fill="rgba(74,12,2,0)"/>
- <circle cx="56" cy="119" r="1" fill="rgba(78,11,2,0)"/>
- <circle cx="57" cy="119" r="1" fill="rgba(73,4,1,0)"/>
- <circle cx="58" cy="119" r="1" fill="rgba(85,13,3,0)"/>
- <circle cx="59" cy="119" r="1" fill="rgba(96,8,4,0)"/>
- <circle cx="60" cy="119" r="1" fill="rgba(69,5,0,0)"/>
- <circle cx="61" cy="119" r="1" fill="rgba(82,21,7,0.00784314)"/>
- <circle cx="62" cy="119" r="1" fill="rgba(103,33,15,0.0196078)"/>
- <circle cx="63" cy="119" r="1" fill="rgba(76,23,7,0.027451)"/>
- <circle cx="64" cy="119" r="1" fill="rgba(54,22,6,0.0313725)"/>
- <circle cx="65" cy="119" r="1" fill="rgba(82,33,12,0.0509804)"/>
- <circle cx="66" cy="119" r="1" fill="rgba(95,37,11,0.0745098)"/>
- <circle cx="67" cy="119" r="1" fill="rgba(94,35,11,0.0862745)"/>
- <circle cx="68" cy="119" r="1" fill="rgba(78,31,8,0.0941176)"/>
- <circle cx="69" cy="119" r="1" fill="rgba(54,17,5,0.0901961)"/>
- <circle cx="70" cy="119" r="1" fill="rgba(39,8,1,0.0823529)"/>
- <circle cx="71" cy="119" r="1" fill="rgba(47,8,1,0.0823529)"/>
- <circle cx="72" cy="119" r="1" fill="rgba(53,18,3,0.0745098)"/>
- <circle cx="73" cy="119" r="1" fill="rgba(58,16,3,0.0627451)"/>
- <circle cx="74" cy="119" r="1" fill="rgba(59,11,0,0.0509804)"/>
- <circle cx="75" cy="119" r="1" fill="rgba(51,4,0,0.0352941)"/>
- <circle cx="76" cy="119" r="1" fill="rgba(50,5,0,0.0235294)"/>
- <circle cx="77" cy="119" r="1" fill="rgba(59,0,0,0.00784314)"/>
- <circle cx="78" cy="119" r="1" fill="rgba(40,0,0,0.00392157)"/>
- <circle cx="79" cy="119" r="1" fill="rgba(26,0,0,0.00392157)"/>
- <circle cx="80" cy="119" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="81" cy="119" r="1" fill="none"/>
- <circle cx="82" cy="119" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="83" cy="119" r="1" fill="rgba(15,1,0,0)"/>
- <circle cx="84" cy="119" r="1" fill="rgba(7,6,0,0)"/>
- <circle cx="85" cy="119" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="86" cy="119" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="87" cy="119" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="88" cy="119" r="1" fill="rgba(21,4,2,0)"/>
- <circle cx="89" cy="119" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="119" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="119" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="119" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="119" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="119" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="119" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="119" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="119" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="119" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="119" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="119" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="120" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="120" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="120" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="120" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="120" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="120" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="120" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="120" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="120" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="120" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="120" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="120" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="120" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="120" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="120" r="1" fill="rgba(76,15,3,0)"/>
- <circle cx="53" cy="120" r="1" fill="rgba(88,18,4,0)"/>
- <circle cx="54" cy="120" r="1" fill="rgba(94,23,6,0)"/>
- <circle cx="55" cy="120" r="1" fill="rgba(74,12,2,0)"/>
- <circle cx="56" cy="120" r="1" fill="rgba(78,11,2,0)"/>
- <circle cx="57" cy="120" r="1" fill="rgba(73,5,1,0)"/>
- <circle cx="58" cy="120" r="1" fill="rgba(85,13,3,0)"/>
- <circle cx="59" cy="120" r="1" fill="rgba(96,6,3,0)"/>
- <circle cx="60" cy="120" r="1" fill="rgba(68,4,0,0)"/>
- <circle cx="61" cy="120" r="1" fill="rgba(87,23,10,0)"/>
- <circle cx="62" cy="120" r="1" fill="rgba(116,31,22,0)"/>
- <circle cx="63" cy="120" r="1" fill="rgba(96,20,11,0)"/>
- <circle cx="64" cy="120" r="1" fill="rgba(86,47,20,0)"/>
- <circle cx="65" cy="120" r="1" fill="rgba(137,82,51,0)"/>
- <circle cx="66" cy="120" r="1" fill="rgba(155,107,71,0.00392157)"/>
- <circle cx="67" cy="120" r="1" fill="rgba(144,86,48,0.00784314)"/>
- <circle cx="68" cy="120" r="1" fill="rgba(122,62,28,0.00784314)"/>
- <circle cx="69" cy="120" r="1" fill="rgba(74,26,10,0.0156863)"/>
- <circle cx="70" cy="120" r="1" fill="rgba(28,6,0,0.0117647)"/>
- <circle cx="71" cy="120" r="1" fill="rgba(24,0,0,0.0117647)"/>
- <circle cx="72" cy="120" r="1" fill="rgba(24,9,0,0.0117647)"/>
- <circle cx="73" cy="120" r="1" fill="rgba(28,5,0,0.0117647)"/>
- <circle cx="74" cy="120" r="1" fill="rgba(37,0,0,0.00392157)"/>
- <circle cx="75" cy="120" r="1" fill="rgba(26,0,0,0)"/>
- <circle cx="76" cy="120" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="77" cy="120" r="1" fill="rgba(28,0,0,0)"/>
- <circle cx="78" cy="120" r="1" fill="none"/>
- <circle cx="79" cy="120" r="1" fill="rgba(0,1,0,0)"/>
- <circle cx="80" cy="120" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="81" cy="120" r="1" fill="none"/>
- <circle cx="82" cy="120" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="83" cy="120" r="1" fill="rgba(15,1,0,0)"/>
- <circle cx="84" cy="120" r="1" fill="rgba(7,6,0,0)"/>
- <circle cx="85" cy="120" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="86" cy="120" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="87" cy="120" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="88" cy="120" r="1" fill="rgba(21,4,2,0)"/>
- <circle cx="89" cy="120" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="120" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="120" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="120" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="120" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="120" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="120" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="120" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="120" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="120" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="120" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="120" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="121" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="19" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="20" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="21" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="22" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="23" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="24" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="25" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="26" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="27" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="28" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="29" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="30" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="31" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="32" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="33" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="34" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="35" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="36" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="37" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="38" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="39" cy="121" r="1" fill="rgba(115,13,2,0)"/>
- <circle cx="40" cy="121" r="1" fill="rgba(115,13,3,0)"/>
- <circle cx="41" cy="121" r="1" fill="rgba(112,14,3,0)"/>
- <circle cx="42" cy="121" r="1" fill="rgba(110,16,3,0)"/>
- <circle cx="43" cy="121" r="1" fill="rgba(113,17,3,0)"/>
- <circle cx="44" cy="121" r="1" fill="rgba(91,12,2,0)"/>
- <circle cx="45" cy="121" r="1" fill="rgba(86,13,3,0)"/>
- <circle cx="46" cy="121" r="1" fill="rgba(104,18,4,0)"/>
- <circle cx="47" cy="121" r="1" fill="rgba(94,16,3,0)"/>
- <circle cx="48" cy="121" r="1" fill="rgba(92,16,3,0)"/>
- <circle cx="49" cy="121" r="1" fill="rgba(99,18,4,0)"/>
- <circle cx="50" cy="121" r="1" fill="rgba(98,19,4,0)"/>
- <circle cx="51" cy="121" r="1" fill="rgba(83,16,3,0)"/>
- <circle cx="52" cy="121" r="1" fill="rgba(76,15,3,0)"/>
- <circle cx="53" cy="121" r="1" fill="rgba(88,18,4,0)"/>
- <circle cx="54" cy="121" r="1" fill="rgba(94,23,6,0)"/>
- <circle cx="55" cy="121" r="1" fill="rgba(74,12,2,0)"/>
- <circle cx="56" cy="121" r="1" fill="rgba(78,11,2,0)"/>
- <circle cx="57" cy="121" r="1" fill="rgba(73,5,1,0)"/>
- <circle cx="58" cy="121" r="1" fill="rgba(85,13,3,0)"/>
- <circle cx="59" cy="121" r="1" fill="rgba(96,6,3,0)"/>
- <circle cx="60" cy="121" r="1" fill="rgba(68,4,0,0)"/>
- <circle cx="61" cy="121" r="1" fill="rgba(86,23,9,0)"/>
- <circle cx="62" cy="121" r="1" fill="rgba(114,28,20,0)"/>
- <circle cx="63" cy="121" r="1" fill="rgba(95,17,11,0)"/>
- <circle cx="64" cy="121" r="1" fill="rgba(86,47,20,0)"/>
- <circle cx="65" cy="121" r="1" fill="rgba(141,86,55,0)"/>
- <circle cx="66" cy="121" r="1" fill="rgba(174,134,105,0)"/>
- <circle cx="67" cy="121" r="1" fill="rgba(158,105,68,0)"/>
- <circle cx="68" cy="121" r="1" fill="rgba(131,62,36,0)"/>
- <circle cx="69" cy="121" r="1" fill="rgba(59,12,4,0.00392157)"/>
- <circle cx="70" cy="121" r="1" fill="rgba(15,0,0,0)"/>
- <circle cx="71" cy="121" r="1" fill="none"/>
- <circle cx="72" cy="121" r="1" fill="none"/>
- <circle cx="73" cy="121" r="1" fill="none"/>
- <circle cx="74" cy="121" r="1" fill="none"/>
- <circle cx="75" cy="121" r="1" fill="none"/>
- <circle cx="76" cy="121" r="1" fill="none"/>
- <circle cx="77" cy="121" r="1" fill="rgba(24,0,0,0)"/>
- <circle cx="78" cy="121" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="79" cy="121" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="80" cy="121" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="81" cy="121" r="1" fill="none"/>
- <circle cx="82" cy="121" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="83" cy="121" r="1" fill="rgba(15,1,0,0)"/>
- <circle cx="84" cy="121" r="1" fill="rgba(7,6,0,0)"/>
- <circle cx="85" cy="121" r="1" fill="rgba(7,3,0,0)"/>
- <circle cx="86" cy="121" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="87" cy="121" r="1" fill="rgba(12,3,0,0)"/>
- <circle cx="88" cy="121" r="1" fill="rgba(21,4,2,0)"/>
- <circle cx="89" cy="121" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="90" cy="121" r="1" fill="rgba(10,1,0,0)"/>
- <circle cx="91" cy="121" r="1" fill="rgba(26,8,2,0)"/>
- <circle cx="92" cy="121" r="1" fill="rgba(10,0,0,0)"/>
- <circle cx="93" cy="121" r="1" fill="rgba(4,0,0,0)"/>
- <circle cx="94" cy="121" r="1" fill="rgba(15,4,0,0)"/>
- <circle cx="95" cy="121" r="1" fill="rgba(7,2,0,0)"/>
- <circle cx="96" cy="121" r="1" fill="rgba(7,0,0,0)"/>
- <circle cx="97" cy="121" r="1" fill="rgba(4,1,0,0)"/>
- <circle cx="98" cy="121" r="1" fill="rgba(7,1,0,0)"/>
- <circle cx="99" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="100" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="101" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="102" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="103" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="104" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="105" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="106" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="107" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="108" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="109" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="110" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="111" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="112" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="113" cy="121" r="1" fill="rgba(10,2,0,0)"/>
- <circle cx="114" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="121" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="122" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="122" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="123" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="123" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="124" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="124" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="125" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="125" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="126" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="126" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="0" cy="127" r="1" fill="rgba(255,255,255,0)"/>
- <circle cx="1" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="2" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="3" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="4" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="5" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="6" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="7" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="8" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="9" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="10" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="11" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="12" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="13" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="14" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="15" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="16" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="17" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="18" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="19" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="20" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="21" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="22" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="23" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="24" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="25" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="26" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="27" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="28" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="29" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="30" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="31" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="32" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="33" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="34" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="35" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="36" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="37" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="38" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="39" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="40" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="41" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="42" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="43" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="44" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="45" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="46" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="47" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="48" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="49" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="50" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="51" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="52" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="53" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="54" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="55" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="56" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="57" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="58" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="59" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="60" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="61" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="62" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="63" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="64" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="65" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="66" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="67" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="68" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="69" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="70" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="71" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="72" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="73" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="74" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="75" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="76" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="77" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="78" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="79" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="80" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="81" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="82" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="83" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="84" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="85" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="86" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="87" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="88" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="89" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="90" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="91" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="92" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="93" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="94" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="95" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="96" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="97" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="98" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="99" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="100" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="101" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="102" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="103" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="104" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="105" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="106" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="107" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="108" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="109" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="110" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="111" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="112" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="113" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="114" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="115" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="116" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="117" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="118" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="119" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="120" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="121" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="122" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="123" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="124" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="125" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="126" cy="127" r="1" fill="rgba(255,254,254,0)"/>
- <circle cx="127" cy="127" r="1" fill="rgba(255,254,254,0)"/>
-</svg>
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.tiff b/Tools/iExploder/iexploder-1.7.2/src/media/bug.tiff
deleted file mode 100644
index 65c6448d8..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.tiff
+++ /dev/null
Binary files differ
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.xbm b/Tools/iExploder/iexploder-1.7.2/src/media/bug.xbm
deleted file mode 100644
index 03faaf095..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.xbm
+++ /dev/null
@@ -1,174 +0,0 @@
-#define bug_width 128
-#define bug_height 128
-static char bug_bits[] = {
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xEF, 0xFB, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF7, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xF9, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFB, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFE, 0xFF, 0xF7, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
- 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFD, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xBF, 0xF9, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFB, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF,
- 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF6,
- 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0x7F, 0xFF, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF,
- 0xEF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFD, 0xFF,
- 0xFF, 0xFF, 0xFB, 0xFE, 0xFF, 0xFF, 0xBF, 0xFF, 0xFF, 0xDB, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xEF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF,
- 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFE, 0xFF, 0xFF, 0xFF, 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF,
- 0xFF, 0xE7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xCF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x77, 0xF7, 0x7D, 0xF7, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xF7, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
- 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, };
diff --git a/Tools/iExploder/iexploder-1.7.2/src/media/bug.xpm b/Tools/iExploder/iexploder-1.7.2/src/media/bug.xpm
deleted file mode 100644
index 2105d5c84..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/media/bug.xpm
+++ /dev/null
@@ -1,390 +0,0 @@
-/* XPM */
-static char *bug[] = {
-/* columns rows colors chars-per-pixel */
-"128 128 256 2",
-" c #020000",
-". c #0D0200",
-"X c #0D0B04",
-"o c #140200",
-"O c #1C0200",
-"+ c #140A04",
-"@ c #1B0C04",
-"# c #1D0F08",
-"$ c #1E1108",
-"% c #240400",
-"& c #2A0501",
-"* c #270D04",
-"= c #390902",
-"- c #2B1206",
-"; c #23150B",
-": c #2E1609",
-"> c #27160B",
-", c #341206",
-"< c #321609",
-"1 c #3E1708",
-"2 c #351A0B",
-"3 c #3D1E0D",
-"4 c #3A1307",
-"5 c #2C1D11",
-"6 c #241C13",
-"7 c #351E10",
-"8 c #3F200E",
-"9 c #332215",
-"0 c #3F2211",
-"q c #34261A",
-"w c #3A2A1D",
-"e c #37281C",
-"r c #2F2115",
-"t c #3C2E21",
-"y c #3E3125",
-"u c #490B02",
-"i c #570A01",
-"p c #441B0A",
-"a c #4B1D0B",
-"s c #591605",
-"d c #690A02",
-"f c #681704",
-"g c #761805",
-"h c #7A0401",
-"j c #48210E",
-"k c #54230E",
-"l c #432512",
-"z c #462815",
-"x c #4B2B16",
-"c c #452B1A",
-"v c #4C2E19",
-"b c #4D2211",
-"n c #502F18",
-"m c #5A2912",
-"M c #54331C",
-"N c #58381F",
-"B c #57381F",
-"V c #4C311D",
-"C c #79240A",
-"Z c #662E16",
-"A c #6D3015",
-"S c #433529",
-"D c #46382B",
-"F c #5C3B22",
-"G c #533926",
-"H c #4A3D32",
-"J c #603F25",
-"K c #793E21",
-"L c #4D4237",
-"P c #554539",
-"I c #5A402D",
-"U c #614126",
-"Y c #64442A",
-"T c #6A4A2E",
-"R c #674C35",
-"E c #765538",
-"W c #6E5137",
-"Q c #554B43",
-"! c #594E47",
-"~ c #5B524C",
-"^ c #5E5651",
-"/ c #6B5545",
-"( c #715B4A",
-") c #7A6453",
-"_ c #860701",
-"` c #980700",
-"' c #891705",
-"] c #9C1B05",
-"[ c #981404",
-"{ c #A60D01",
-"} c #BD0D02",
-"| c #B20E01",
-" . c #AD1302",
-".. c #A21B03",
-"X. c #A51503",
-"o. c #B11403",
-"O. c #BD1304",
-"+. c #BE1A06",
-"@. c #B31C06",
-"#. c #89240A",
-"$. c #992709",
-"%. c #883415",
-"&. c #953615",
-"*. c #962E10",
-"=. c #BA250A",
-"-. c #AF350D",
-";. c #C40E02",
-":. c #C90E01",
-">. c #C41304",
-",. c #CB1402",
-"<. c #C41A06",
-"1. c #CB1A05",
-"2. c #C31E08",
-"3. c #CB1E08",
-"4. c #D21600",
-"5. c #D41B01",
-"6. c #DA1D00",
-"7. c #D21E08",
-"8. c #C4240A",
-"9. c #CC240A",
-"0. c #C42B0B",
-"q. c #CD2B0D",
-"w. c #CF2006",
-"e. c #D52302",
-"r. c #DC2200",
-"t. c #DB2B03",
-"y. c #D32C0C",
-"u. c #D42608",
-"i. c #CC310E",
-"p. c #C8360B",
-"a. c #D5340A",
-"s. c #CD3411",
-"d. c #CE3B14",
-"f. c #C63B14",
-"g. c #D23412",
-"h. c #D43B15",
-"j. c #D93B14",
-"k. c #D12E10",
-"l. c #E12500",
-"z. c #E42B00",
-"x. c #E92D00",
-"c. c #E53300",
-"v. c #EC3300",
-"b. c #EB3C00",
-"n. c #E63A03",
-"m. c #F23C00",
-"M. c #F03600",
-"N. c #B6491C",
-"B. c #AC4513",
-"V. c #924C2A",
-"C. c #B0542A",
-"Z. c #9D4C26",
-"A. c #D54116",
-"S. c #DB4313",
-"D. c #D54319",
-"F. c #D9451A",
-"G. c #DB4C1D",
-"H. c #D74A1C",
-"J. c #CE4A11",
-"K. c #ED4301",
-"L. c #EC4704",
-"P. c #F54300",
-"I. c #F44C01",
-"U. c #FA4C00",
-"Y. c #F94600",
-"T. c #F45300",
-"R. c #FB5400",
-"E. c #F55C01",
-"W. c #FB5B01",
-"Q. c #F85A0A",
-"!. c #E24B16",
-"~. c #E44A14",
-"^. c #E3541B",
-"/. c #E8581B",
-"(. c #EE560B",
-"). c #FC6403",
-"_. c #FC6B02",
-"`. c #FB6C0B",
-"'. c #F86306",
-"]. c #FD7301",
-"[. c #FD7709",
-"{. c #FC7412",
-"}. c #FC7A15",
-"|. c #FC7D1A",
-" X c #F57718",
-".X c #F66515",
-"XX c #D94A21",
-"oX c #DD5422",
-"OX c #DE5C2B",
-"+X c #DC5825",
-"@X c #CD5927",
-"#X c #E15B25",
-"$X c #E25F29",
-"%X c #E45725",
-"&X c #E14D21",
-"*X c #DB6432",
-"=X c #E3632B",
-"-X c #E6692E",
-";X c #EB6B2B",
-":X c #E86428",
-">X c #E16530",
-",X c #E76C30",
-"<X c #E96E32",
-"1X c #EB6836",
-"2X c #EA7334",
-"3X c #ED7C3A",
-"4X c #EC7737",
-"5X c #F27835",
-"6X c #F67628",
-"7X c #C8621E",
-"8X c #8C6E52",
-"9X c #8F7B6C",
-"0X c #B16945",
-"qX c #DA744B",
-"wX c #FC821C",
-"eX c #FC8518",
-"rX c #FB8422",
-"tX c #FC8925",
-"yX c #FB8B2B",
-"uX c #F58026",
-"iX c #EE813D",
-"pX c #F1833D",
-"aX c #FB8B34",
-"sX c #FC9233",
-"dX c #FB953A",
-"fX c #FE9A3D",
-"gX c #FD912E",
-"hX c #A98F75",
-"jX c #988476",
-"kX c #F28742",
-"lX c #FC9C43",
-"zX c #FD9D4C",
-"xX c #EF8749",
-"cX c #FDA14B",
-"vX c #FEA757",
-"bX c #FFAC63",
-"nX c #FFB16C",
-"mX c #FCB07A",
-"MX c #E49168",
-"NX c #A9998D",
-"BX c #BAA694",
-"VX c #B3ACAC",
-"CX c #FAB488",
-"ZX c #C6B6A7",
-"AX c #D2C6B9",
-"SX c #F8C4AD",
-"DX c #D6CFCC",
-"FX c #ECD7C9",
-"GX c #F7E1D5",
-"HX c #D8DBE9",
-"JX c #FFFEFE",
-"KX c #F4F7F9",
-"LX c #EEEBEC",
-"PX c #D6E3FE",
-"IX c #BEBECB",
-"UX c None",
-/* pixels */
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXl z UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXz z z UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXx v UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 8 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXv M M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU Y T T W T T U UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX< 3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXn M N UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXn M F F Y Y T W T Y U F M M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM F F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXl z v M N F U Y T Y Y U J F M n x l 8 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXl - UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXv F F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX8 8 8 z x n M N J J U U U F F M M v x l 8 3 3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXz 3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXF Y UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX2 2 8 8 3 l b v M N N N F F F N M M v x l 8 3 3 3 3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXn x x * UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM Y UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX8XBXj 4 3 l l z v M M M B M B M M n x b 0 8 3 3 0 0 8 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM M n l UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXv Y v UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXT AXhXn < < 3 z b x v n M n M x v z z l 8 8 0 l z z 8 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM M M : UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX8 U F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. 2 E hXhXV.l , 3 z x v x x x x z l 8 8 0 0 c c w 2 . UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXN G M 2 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXF F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 3 3 < @ + @ : E hXBXjXT l 2 z 8 8 z l z l 0 z c c 0 : o * 9 I R UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU U F 8 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXF F F F U UXUXUXUXUXUXUXUXUXUXUX3 3 3 8 3 l 2 * @ o v 8XhXhX8XE W T j x c c c 0 5 + . * v Y W ~ Q Q H UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU U 0 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM F F F F F UXUXUXUXUXUXUXUXUX3 3 3 3 3 3 3 3 p 3 2 * o . 2 N E 8X8Xx w 2 ; + o * V E ) ( P L L Q Q ~ L UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXY U M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM F F F F B UXUXUXUXUXUXUX3 3 3 3 3 3 3 3 3 8 3 p 0 3 < * @ . + + o : G R R P y y D L L L Q ! ~ Q UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU U < UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX- l M M M M M UXUXUXUX2 3 3 3 3 3 3 3 3 3 3 3 3 3 3 l 8 8 3 2 < < < ; > 5 9 q r 9 w y S S D L L P Q ! ^ ! c UXUXUXUXUXUXUXUXUXUXUXUXUXUXF U M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM n v v x p / ! < 3 3 3 3 3 3 3 8 3 3 3 3 3 3 3 3 3 3 8 8 3 : $ > 5 5 q e e t y D D L L P Q Q ! ^ ^ c UXUXUXUXUXUXUXUXUXF J F J F F 3 UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXb c z 3 P PXVX0 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 8 : $ > 5 5 r q e t y y S H L L L Q Q ! ^ ^ c UXUXUXUXUXUXM N F F F F F M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXl 2 I KXHX^ 2 2 3 3 8 3 3 3 3 3 3 3 3 3 3 3 3 3 3 8 3 : $ $ ; 5 r r q e t y S D H L L Q Q Q ~ ^ P 8 l z x x n M M M M F F M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX5 + NXKXIX) n 8 2 1 2 2 2 3 3 3 3 3 3 3 3 3 3 3 3 3 : $ $ $ 6 6 r 9 e w t y S D H L L Q Q ~ ^ P 3 3 l z x v n UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo 6 IXJXHXVX9X( P G V x c z x x 0 3 3 3 3 3 3 3 3 : @ $ ; ; > 5 r q e w t y D H H L L Q ! ~ 3 & p l UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXi L.R.R.a.u 6 DXJXJXKXHXDXVXNXjX9X( P I c 3 3 3 3 3 3 3 3 : + + $ ; > 5 5 9 q e t S y H H H H Q ! e 8XqXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXL.W.W.W.W.T.f e HXJXJXJXJXJXKXLXDXNX) I G l 3 3 3 3 3 3 3 : + + @ $ ; 6 5 r q q e y y D D H L Q c O 0XFX*Xh.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX(.W.Q.'.'.'.).E.f 9 DXJXJXJXJXJXJXLXZXNX( G V 3 3 3 3 3 3 8 : o + @ @ ; ; > 5 9 q q t y y S H L S % C.GX$Xi.d.s.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 3 UXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXQ.`..X`.`.`.`.'.).T.u q DXJXJXJXJXJXKXFXBX9XR G c 3 3 3 3 3 3 : o . + + # ; > 5 5 q q t y S S D y o Z.GX>Xs.h.d.d.-.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX3 UXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX.X{.{.{. X{..X`.'.`.L.% v DXJXJXJXJXJXLXAXNX) H G l 3 3 3 3 3 : + X + @ # ; 6 5 5 q q e t S y o -.FXqXy.h.D.d.d.d.$.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX: 2 UXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUX3 3 3 3 l UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX{.{.|.|.|. X}.{.{.`.`.`.B. U LXJXJXJXJXJXGXZXjXW G c p 3 3 3 3 < o . + + # ; ; 5 5 5 q q t t . &.FXqXq.h.d.A.d.d.d.h.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM x l - UXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUX- < z x x v F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX{.|.rXrXrXrXrXwX|.}.{.{._.].-. Y GXJXJXJXJXKXDXBX9XG G l 3 3 3 3 < . . + + @ ; 6 5 5 q t t %.SXqX9.d.h.d.A.D.D.d.d.d.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM v z UXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUX2 v F F J Y T W UXUXUXUXF N UXUXUXUXUXUXUXUXUXwXrXyXyXyXyXtXuXrXwX X X{.[.[.-. 8 BXJXJXJXJXLXZXNX( G c 3 8 3 3 < o X + # # ; 6 5 q $ V.SXOX9.g.h.h.D.XXD.D.D.f.f.h.UXUXUXUXUXUXUXUXUXUXUXUXUXF M x z UXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXz F U Y T W E W T Y F F M n z l 8 8 2 k 6XsXsXsXsXdXdXgXyXuXtXrX|.|.}.[.].J.4 W AXJXJXJXFXZX9XR G l 3 3 8 < . . + + # $ > 6 % 0XSXXX3.k.g.h.D.h.XXD.H.H.D.D.A.UXUXUXUXUXUXUXUXUXUXUXF F M M l - UXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUX2 UXUXUXUXUXY Y J N M v z l 3 3 > C.cXcXcXdXfXdXdXdXgXaXyXtXrXwX|.}.].].'.$.X + 8XFXJXKXAXBX8XU x 3 3 3 < . . . o + $ X f BXCXk.3.k.g.h.D.XXXXXXXX@XXXXXXXF.-.2 l z n M B F J U J F F M - UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM M M v z UXUX; z MXnXnXvXcXcXcXlXlXsXaXyXyXtXtXrXeXeX].].].J.C 6 8XDXLXDXjX/ G 8 3 3 < . . # o o i C.SXMX6.7.k.g.d.h.D.XXXXXXOX+X+X@XXXH.H.m 2 z z v M M N F N M M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXxXCXCXnXnXvXvXcXcXlXdXdXgXyXyXuXtXeXeXeXeX]._.'.J.f > 8XBXBXjXP l 3 p - + @ + O i C.CXCX&X1.k.k.k.d.j.XXXXXXXX+XXXOXOXOXOX+XoX-.3 9 b x M M M M M M UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXbXmXCXnXnXbXbXvXvXzXlXdXsXyXyXtXtXeXeX].].].].'.).E.p.f o X B E W x 3 3 # o @ # + = C 0XmXqXF.:.7.7.k.k.g.g.D.j.XX&X&XOXOXOXOXOXOX+X+X%XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXzXbXnXnXnXbXbXvXvXcXlXdXsXyXyXtXtXeXeXeXeX].]._._.W.R.Y.a.' & @ ; - # o . o u *.qXqX1Xj.7.7.y.y.k.k.g.g.g.D.d.*.#.N.&XOXOX*XOX>XOXOX+X$XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX.XaXcXvXbXvXvXbXvXcXzXlXdXsXyXtXuXwX[.eX].].].]._._.'.E.T.U.P.c.] % i -.+X;XF.l.7.l.u.u.u.u.k.k.k.g.j.f.= O *.&XOXOX>X>X*X>XOX=XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXg {.|.gXfXlXcXcXvXvXcXlXfXdXyXyXrXtXeXeX[.].].].]._._.'.E.T.L.L.L.m.t.i _ r.z.t.6.e.e.t.u.y.u.a.u.k.k.k.y.j.i -.+XOXOX>X>X>X$X=X&.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXB.{.|.gXgXfXlXcXcXcXlXfXdXaXyXuX7XB.J.`.[._._._._._._.'.E.T.T.L.K.c.v.e.i d l.6.e.r.r.r.t.t.t.t.a.a.y.u.k.y.j.@. - XX%XOX*X>X>X>X-XJ.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXQ.{.|.eXgXfXfXfXfXfXfXdXsXyXuXV.m b 3 a B._.).).).'._.'.E.E.T.L.b.b.c.l.| X.l.6.r.r.t.t.t.a.a.t.a.t.y.u.k.u.y.g #.%XoXOX=X>X>XOX=Xs UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXQ.`.}.eXgXgXgXfXfXfXgXgXyXtXC.Z Z k p @ J.W.).'.'.E.'.E.T.T.K.K.c.v.l.| [ l.r.e.r.t.t.t.t.t.t.u.y.u.k.k.7.k.d = XXoXOXOX=X=X=X>XB.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXR.Q.`.}.wXtXyXyXgXgXgXgXyXtX|.V.Z m a 4 * s W.R.W.E.W.E.E.T.L.I.b.n.c.l.| X.r.6.r.r.t.t.t.t.u.t.u.u.u.7.9.9.u.g . o D.oXoXOX=XOX=X=X$XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU.W.`.{.}.eXrXtXeXgXyXeXrXrX XA m b 1 * . & I.R.T.T.E.T.T.T.I.K.b.c.x.l.| { l.6.r.r.t.t.t.a.t.u.u.7.7.7.3.3.7.[ . -.&XoX+X$X=X=X=X=XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU.Q.`.`.}.}.eXwXrXwXeXwX|.}. XA a p , O O I.R.U.U.T.T.T.T.I.K.b.c.x.l.o.X.r.e.r.r.t.c.t.t.t.u.w.3.7.3.3.3.3.+.% . * h.XXoX+X$X$X=X=X;XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXR.Q.).`.[.}.}.}.}. XeX X}.{.[.C , , @ & I.Y.Y.I.I.I.I.L.L.K.b.n.c.r.| ] r.e.r.t.t.t.t.t.e.e.5.5.1.>.1.<.3.9.' *.XXXXoXoXOXOX=X-X<XB.UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX-.R.W.).`.`.[.[.{.{.{.{.{.`.`._.B.@ @ . f Y.Y.P.P.P.P.I.L.L.b.b.c.z.l.o.X.r.e.e.r.t.t.t.t.e.7.1.1.1.>.1.1.3.3.9.d & #.F.F.G.oX+X$X=X=X=X<X@XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX9 p.R.W.W.).).`.`.`.`._.[.`._.`.).W.f % a.Y.P.P.P.K.K.P.L.L.K.b.c.z.6.o.X.6.6.e.t.t.t.t.e.e.6.1.1.,.1.>.1.3.3.9.9...' ] s.j.F.F.G.G.oX#X=X-X-X;X@XUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXl j J.R.R.W.W.).).).).).`.`.).).).W.W.R.-.f u g a.U.Y.P.m.m.m.P.K.K.K.b.n.x.z.r.o...6.e.e.t.t.t.t.e.7.5.1.,.1.1.1.1.3.9.9.k.k.g.j.j.h.j.F.G.oX#X+X=X-X<X<X-Xk UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXn l k K.T.R.R.R.W.W.W.W.W.).W.W.W.W.R.W.R.R.U.U.U.Y.P.P.m.m.m.m.b.K.K.K.b.n.c.z.6.o...6.6.e.e.t.t.t.e.3.3.5.,.,.>.>.1.3.3.9.9.k.y.g.h.j.F.F.G.oXoX$X=X-X<X<X;XA UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXM n 9 UXY.U.R.W.W.W.W.W.R.W.W.W.R.R.R.R.R.R.U.Y.Y.Y.Y.m.m.M.M.M.b.K.b.b.K.n.c.c.t.6.o.X.6.e.e.e.t.r.u.e.5.5.1.,.,.>.1.1.3.3.9.9.q.q.g.g.j.A.F.G.oX#X+X=X-X,X<X2XA : UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXF M M w UXUXI.T.T.W.W.W.W.W.R.R.R.R.R.R.R.U.U.U.Y.Y.Y.Y.m.m.M.M.M.b.b.b.K.K.K.b.c.z.z.6.o...5.5.e.r.t.t.e.e.5.,.,.,.1.>.1.1.3.9.9.k.y.g.g.h.j.F.F.G.oX#X=X=X,X<X2XuX&.5 l UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXU F F V UXUXUXP.T.W.W.W.W.W.R.R.R.T.U.U.U.R.U.U.I.Y.P.Y.m.m.M.M.M.M.M.v.b.b.b.b.n.c.t.t.6. ...5.5.e.e.t.e.e.5.1.,.,.>.,.>.1.1.3.9.9.9.y.g.g.h.h.F.F.G.^.#X$X=X,X<X2X5XZ.2 l x UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXT T Y Y F F N UXUXUXUXT.6X.XW.W.R.R.R.T.U.U.U.U.Y.Y.Y.Y.P.P.m.m.m.M.M.M.v.v.x.v.b.b.b.n.c.c.z.r.6.o...5.1.e.e.e.u.e.7.,.1.,.,.>.,.1.3.3.9.9.q.q.k.g.h.A.F.F.oXoX+X=X-X;X2X2X5XN.: z x n UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXY Y Y U U J F UXUXUXUX$.Q.zX|.Q.Q.R.T.U.U.U.U.P.Y.Y.Y.Y.m.m.m.M.M.M.v.M.x.x.v.c.v.v.n.n.n.c.c.z.r.4. ...4.1.e.e.t.e.5.5.1.,.1.:.,.>.1.3.3.9.9.9.k.k.g.j.A.F.G.G.oX#X=X-X,X2X2X5XN.UXl v n B UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXv M M F F U U Y U Y Y J v UXUXUXUXUX] .XxX6X.XQ.T.U.I.I.P.P.P.P.P.P.m.m.m.m.M.M.v.v.v.v.x.x.x.v.c.n.n.c.z.t.r.r.6. ...4.1.e.e.e.e.e.5.,.,.>.>.>.1.3.3.3.9.9.k.k.g.g.h.F.F.G.oX%X#X=X-X,X2X2X5XN.UXUXv M N F UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXz x n M N F N F U J F v UXUXUXUXUXUXUX...XkX6X.XQ.U.U.P.P.P.P.m.m.m.m.M.M.m.M.v.v.v.x.x.x.x.x.z.x.x.c.z.z.t.z.r.6.5. ...5.5.e.e.e.5.5.1.,.,.>.,.>.>.,.3.7.9.9.k.k.g.g.h.j.F.G.G.%X$X=X-X2X2X4XpX@XO UXUXM N F J UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUX8 8 8 0 z x l 2 UXUXUXUX2 < UXUXUXUXUXUXUXUXUXn./.zX6X.XQ.I.P.P.P.m.m.m.m.M.M.M.M.v.M.v.v.v.x.x.x.z.z.x.z.z.z.z.z.t.r.6.6.4. .] 4.1.1.e.e.e.1.1.,.,.>.;.1.1.3.3.9.9.u.k.k.g.h.j.F.G.G.oX#X$X=X-X2X2X4X5X7XO UXUXUXN J J Y UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UX3 3 < * * * * * UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX/.5X6XU.U.I.m.m.b.m.v.M.v.M.M.v.x.x.v.x.x.x.x.x.l.x.l.z.z.t.z.r.l.6.6.6.6.4.o.] 4.1.5.1.e.7.1.7.:.:.,.>.1.3.3.3.3.9.9.q.q.g.h.h.F.XXoXoX+X=X=X<X2X4X4X3XN.o UXUXUX2 F U Y T T UXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXL.5X:X(.m.P.m.m.v.v.v.v.x.x.x.x.x.x.x.x.x.x.x.x.l.l.l.l.l.l.r.r.r.6.6.6.5.4. ...,.1.1.e.e.7.1.1.:.>.>.:.1.,.3.3.9.9.q.g.g.g.h.A.F.G.G.%X#X=X>X<X4X3X4XpXN.O o UXUXUX8 U U Y T T UXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX~.;X.XL.b.b.v.v.v.x.x.x.x.x.x.x.x.x.l.x.x.x.l.l.l.l.l.l.l.l.r.r.6.6.6.6.4.4. .] 4.,.1.5.5.7.4.1.:.1.>.>.3.3.3.9.9.y.y.k.g.g.j.A.F.G.oXoX#X=X,X1X4X3X3XkXB.o O UXUXUXUXl J Y Y Y Y U UXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXv.$X/.L.n.v.v.v.z.l.x.x.x.l.x.x.x.x.x.l.x.l.l.x.l.l.r.l.6.6.6.6.6.4.6.4.4.,. .] :.1.1.5.w.7.,.1.>.:.>.:.3.3.7.9.9.9.q.k.g.h.j.F.F.G.%X#X$X-X,X2X3X3X3XaX&. O UXUXUXUXUXUXM J J J U F F M UXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXt.!.(.L.z.c.z.z.l.z.z.z.z.l.x.l.l.l.x.l.l.x.l.l.l.r.l.6.6.6.6.6.6.4.4.4.4.:. .[ ,.:.1.7.1.7.,.,.:.1.>.>.3.3.3.9.u.k.k.g.g.h.A.F.F.G.oX#X$X=X<X4X4X3X5XpX%.o o UXUXUXUXUXUXUX3 M F N F F M M v UXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXt.n.~.n.c.l.l.l.l.l.l.z.l.x.l.x.l.l.l.l.l.l.l.l.l.6.6.6.6.6.4.6.4.6.4.4.4.:.X.] ,.:.1.,.7.7.,.,.1.1.1.1.3.3.7.9.9.k.k.g.g.j.A.F.G.oX%X$X=X,X<X4X4XiX5X5XC o o UXUXUXUXUXUXUXUXUXUXUXUXUXv M x z UXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXr.t.c.t.z.t.r.r.r.r.l.l.l.l.l.l.l.l.l.l.l.r.l.6.6.6.6.6.6.6.6.4.6.4.4.4.4.:.o.[ >.>.,.7.7.,.,.1.>.3.>.>.7.7.9.9.y.k.k.g.h.j.F.G.G.oX%X$X=X,X2X4X3X3XpX2Xs o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXz l l 3 UXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXe.r.c.n.t.r.6.r.l.r.l.r.l.r.l.r.l.l.r.6.r.6.6.6.r.6.6.6.6.4.6.4.4.4.4.:.:.:. .[ ;.;.1.>.7.7.3.1.1.1.3.7.7.u.9.9.q.k.g.g.j.A.F.G.G.%X+X$X-X2X2X3X3XpXpX=X= O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX@ * - 2 3 8 3 ",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX6.t.a.t.t.r.6.r.r.r.l.6.l.r.r.l.l.l.6.6.6.6.6.6.6.6.6.4.6.4.4.4.4.:.4.,.,.:.{ [ ;.>.>.>.3.7.1.3.3.7.7.o.' ' @.k.k.g.g.h.j.A.F.G.oX+X#X=X,X2X4X3X3XkX4X@X% O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX* 3 ",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXr.t.t.t.e.e.6.6.r.r.6.6.6.6.6.6.6.6.6.6.6.6.4.6.6.4.4.4.4.4.4.4.4.4.,.:.:.{ [ } ;.>.>.7.1.3.3.7.| i . u 9.k.g.g.j.j.F.G.G.oX#X$X-X,X2X4X3XkXiX5XB.O O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXe.t.t.t.r.6.6.6.6.r.6.6.6.6.6.6.6.6.6.6.6.6.6.6.6.4.4.4.4.4.4.:.:.:.:.:.:.{ _ ;.} ;.>.1.1.3.7.[ O . O + ..g.g.j.h.A.G.G.oX%X$X=X>X1X4X3XxX3XiX2X#.o O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX6.e.t.t.e.5.6.5.6.6.6.6.6.6.6.6.6.6.6.6.4.4.4.4.4.4.4.4.4.4.:.4.:.4.:.:.;.{ _ } ;.;.>.1.1.7.X.. . o ; , < C g.g.h.j.F.G.G.oX+X=X=X,X2X4X3X3XxX3X;Xs O O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1.6.t.t.e.5.5.5.5.5.6.6.5.5.6.1. .] +.5.4.4.4.4.4.4.:.4.4.4.:.:.:.:.:.;.;.{ _ ;.} ;.>.1.3.>.= . + * 4 p p C s.h.j.XXD.G.oX+X#X=X-X<X4XiXiXpXpX2X@X& % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXe.e.e.e.5.5.5.4.5.5.4.4.6.@.s 1 < = g 1.,.4.4.4.,.4.4.:.:.4.:.:.:.:.;.;.` _ } } } >.<.7.@.. O * 4 p b m A s.h.j.F.XXG.oX#X$X=X-X2X3X3XpXpXiX5X-.% % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX1.e.e.e.5.,.5.4.5.4.4.4.@.b p p 1 , @ u } 4.4.,.4.4.:.,.:.:.:.:.:.;.;.;.` _ } } ;.>.1.3.o.. o * 4 j k m Z K h.j.F.F.G.G.%X$X=X-X<X2X3XiXkXpX3X;Xf O % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX>.e.e.e.1.5.,.4.,.5.4.4.' j a p 1 , , # i :.:.:.:.:.:.:.:.:.:.;.;.;.;.;.` _ ;.} >.>.<.7.<.& @ 4 p k m A A &.j.F.F.G.XXoX#X$X-X,X<X4X3XkXkXiX6X+X= & O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX7.e.e.1.,.,.,.5.,.4.,.m k a p 1 , , & . _ 4.:.:.:.:.:.:.:.:.;.;.;.;.;.` _ } } >.<.1.3.7.g # p a m A A K N.j.F.F.G.oX+X$X=X-X<X2XiXiXkXiXiX2X&.& & UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX>.1.1.,.,.,.,.,.,.,.,.k k j p 1 , , - O 4 ;.:.:.:.:.:.:.:.;.;.;.;.;.;.` _ } O.O.<.<.3.7.@.4 p m A K K V.d.j.F.G.oXoX+X=X=X;X2X4XiXiXkXiX4X:Xf % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXX.1.1.,.,.,.,.,.,.,.,.g b a p 1 4 , - # # ;.:.:.;.;.:.;.;.;.;.;.;.;.;.` _ O.} <.1.3.3.9.7.$.b m J K V.-.F.F.G.G.oX%X=X=X*X,X4X3XiXkXpXpX5X7X& & O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX>.>.>.>.,.>.:.,.,.,.] j a p p , , * + i :.:.:.;.;.;.;.;.;.:.:.;.>.;.` _ O.>.<.3.3.9.9.k.u.-.&.&.-.D.F.F.G.G.oXoX#X=X>X<X4X4XiXkXkXpX5X2XC O & UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXX.;.>.>.;.;.:.>.>.,.:.g l p 1 , - # , { :.;.;.;.;.;.>.>.>.>.>.>.>.;.` h O.O.<.3.3.q.9.k.k.g.g.j.j.h.A.F.XXoXoX#X$X-X,X2X4XiXiXiXkXpX5X@X= & % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX} ;.} ;.;.>.>.;.;.:.>.g p 1 < u d | :.;.;.;.;.;.;.>.:.:.>.>.>.>.O.` _ O.<.<.8.q.9.k.k.k.g.g.g.j.D.XXG.oXoX+X$X=X-X<X4X4XiXpXpXiX5X5X%.% & UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX[ } } O.;.>.;.;.;.;.>.;.o.{ { | :.:.;.>.;.>.;.;.>.1.>.>.,.3.<.<.>._ _ +.+.2.3.q.q.k.k.g.h.h.j.F.F.G.XX%X%X$X=X>X<X2X4X3XiXpXiX5X5X@X= % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX| } } O.;.>.} >.;.;.;.;.:.:.>.;.;.>.;.>.>.:.3.>.>.1.>.1.1.1.<.O.` h +.O.8.9.q.y.k.k.j.j.j.A.F.G.G.oX%X#X=X-X,X2X3X3X3XpXpX3X2X2XC % & UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXh >.} } O.;.;.;.;.>.>.>.;.>.>.>.;.>.;.>.>.>.;.1.>.>.3.1.<.3.<.} _ ' O.+.8.q.q.g.g.h.j.h.D.F.G.G.oX^.$X$X=X,X<X4X3X3XiXpX3X2X6XN.& % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX{ O.} O.O.>.>.>.>.>.>.>.>.>.>.;.>.3.1.1.>.1.1.1.>.3.3.3.2.<.;._ _ O.+.8.q.g.g.h.j.h.F.F.F.G.oXoX#X$X=X-X2X2X3X3XpXpXpX2X;X=Xs % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXu } O.O.O.<.>.>.>.>.<.>.<.>.>.3.>.;.3.>.3.<.3.7.3.3.3.3.3.1.O._ _ +.=.8.k.g.g.h.A.F.F.G.G.oX%X#X$X=X-X<X2X4X3X3XxX3X2X;X;X%.% & % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXh >.O.O.O.O.<.<.<.>.>.1.<.>.3.3.3.3.3.<.3.3.3.3.9.9.3.q.2.>._ ' +.8.q.s.g.h.A.F.F.XXG.oX%X+X$X=X-X,X2X4X3X3X3X4X4X;X;XJ.& & % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO [ >.O.+.<.<.<.<.<.<.3.1.<.3.3.3.3.3.3.3.9.3.9.9.q.9.q.8.:._ ' 8.8.q.s.j.A.S.H.H.H.^.+X+X#X=X-X,X2X2X4X4XiX5X2X;X:X@Xs % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX= @.<.O.O.<.<.<.<.2.<.3.3.3.3.3.3.8.8.9.9.9.9.9.q.k.q.8.>._ ' 2.8.i.h.A.S.H.H.H.oX+X#X=X=X-X,X2X2X2XiXiX5X2X:X#X^.f O % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXu O.<.+.+.<.<.2.3.3.3.3.3.8.3.9.9.8.9.9.q.q.q.y.q.q.q.O._ ' 9.0.i.d.A.G.G.^.oX+X#X#X=X-X,X<X2X4X2X4X2X;X:X#X/.#.O % % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX i <.<.<.+.2.2.2.8.3.3.8.9.q.9.9.9.k.q.q.k.q.k.s.g.q.>._ ' 8.8.i.h.F.H.oXoX+X#X$X=X-X,X,X<X2X2X2X<X;X/.^.^.$.% & % UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX d +.8.=.2.2.2.8.9.8.8.9.9.k.0.q.k.q.k.k.s.g.g.s.q.<._ ' 2.0.i.h.H.oXoX+X#X:X=X-X-X,X2X;X2X;X:X:X/.!.!.-.% % % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. f +.2.8.2.8.8.8.9.k.0.0.k.k.k.k.s.g.g.g.g.d.s.i.<._ ' 2.8.i.d.G.oX+X+X=X=X=X-X-X-X;X-X:X:X/.!.S.S.*.& % % o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. . i =.8.8.8.8.8.8.q.8.k.0.k.i.s.s.g.g.d.h.d.s.i.O._ ' w.0.i.A.H.oX$X=X=X=X=X=X=X=X:X/.#X/.S.~.~.#.% % % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. . i @.8.8.8.0.0.0.k.0.i.i.s.s.d.h.h.h.h.h.d.i.O._ ' 9.0.p.A.^.+X+X#X$X:X#X#X#X^././.^.!.~.A.g & & % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. . = ] q.8.0.8.8.0.0.s.k.s.f.s.d.d.h.h.d.d.i.+.h ' y.0.d.A.oX^.+XoX/.#X^.^.^.^.^.!.!.!.J.s O & % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX. o O g =.8.0.=.0.0.8.0.0.s.s.s.d.d.h.d.d.0.O.h ' q.0.a.A.F.H.J.H.S.!.G.!.!.(.J./.S.$.u % % % o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo . u ] 8.8.=.=.8.0.0.0.0.f.s.s.d.d.p.0.@.h ' y.i.s.d.S.S.S.S.S.S.!.!.!.!.~.f.f % % % % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo o % d ..8.8.=.=.0.0.0.0.0.0.0.p.0.0.o.d ' u.q.p.a.A.S.S.S.S.S.!.!.!.J.C = O & % O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo o + & f ] 8.8.0.=.8.0.0.0.0.0.0.0.| d ' t.p.a.d.S.j.S.S.S.~.G.f.#.u % & & % O UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo O o % s ' @.0.k.8.8.0.k.0.0.0.o.d ' 9.i.a.S.S.G.!.~.A.-.g = % % & % O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXO O O % = f ' $.0.q.s.s.s.s.+._ -.a.A.S.S.J.J.*.g u & % & & % O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo O O O O O & = s f ' #.$.] ' $.#.#.#.f u = % % & & & % O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo O O O % % O % O O % & * & O O O O % & & % % % O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo O o O O O O % O % % % % % % O % O O O o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXo o o o o o o o o UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX",
-"UXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUXUX"
-};
diff --git a/Tools/iExploder/iexploder-1.7.2/src/mime-types/dillo b/Tools/iExploder/iexploder-1.7.2/src/mime-types/dillo
deleted file mode 100644
index 0a789c8ea..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/mime-types/dillo
+++ /dev/null
@@ -1,14 +0,0 @@
-application/octet-stream
-application/xhtml+xml
-application/x-www-form-urlencoded
-html/text
-image/gif
-image/jpeg
-image/jpg
-image/pjpeg
-image/png
-image/x-png
-multipart/form-data
-text/css
-text/html
-text/plain
diff --git a/Tools/iExploder/iexploder-1.7.2/src/mime-types/mozilla b/Tools/iExploder/iexploder-1.7.2/src/mime-types/mozilla
deleted file mode 100644
index d3075d759..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/mime-types/mozilla
+++ /dev/null
@@ -1,122 +0,0 @@
-aapplication/opensearchdescription+xml
-application/applefile
-application/atom+xml
-application/compress
-application/directory
-application/ecmascript
-application/gzip
-application/http-index-format
-application/java-archive
-application/javascript
-application/lolcat
-application/marimba
-application/mathml+xml
-application/octet-stream
-application/ogg
-application/oleobject
-application/opensearchdescription+xml
-application/pdf
-application/pgp
-application/postscript
-application/pre-encrypted
-application/rdf+xml
-application/rss+xml
-application/uue
-application/uuencode
-application/x-
-application/x-arj
-application/x-compress
-application/x-fortezza-ckl
-application/x-fortezza-krl
-application/x-gunzip
-application/x-gzip
-application/x-java-vm
-application/x-javascript
-application/x-javascript-config
-application/x-macbinary
-application/x-marimba
-application/x-moz-file
-application/x-moz-node
-application/x-moz-tabbrowser-tab
-application/x-netscape-revocation
-application/x-ns-proxy-autoconfig
-application/x-oleobject
-application/x-pgp-message
-application/x-test
-application/x-testextension
-application/x-unknown
-application/x-unknown-content-type
-application/x-uue
-application/x-uuencode
-application/x-view-source
-application/x-www-form-urlencoded
-application/x-xpinstall
-application/xhtml+xml
-application/xml
-application/zip
-audio/basic
-audio/ogg
-audio/wav
-audio/wave
-audio/webm
-audio/x-pn-wav
-audio/x-wav
-image/bmp
-image/gif
-image/jpeg
-image/pjpeg
-image/png
-image/svg+xml
-image/tiff
-image/x-icon
-image/x-jg
-image/x-jng
-image/x-portable-pixmap
-image/x-xbitmap
-image/x-xbm
-image/xbm
-message/external-body
-message/news
-more/less
-multipart/alternative
-multipart/appledouble
-multipart/byteranges
-multipart/digest
-multipart/foo
-multipart/form-data
-multipart/header-set
-multipart/mixed
-multipart/parallel
-multipart/related
-multipart/signed
-multipart/x-mixed-replace
-text/cache-manifest
-text/calendar
-text/css
-text/ecmascript
-text/enriched
-text/html
-text/javascript
-text/jsss
-text/mdl
-text/plain
-text/rdf
-text/richtext
-text/unicode
-text/uri-list
-text/url-list
-text/x-email
-text/x-moz-place
-text/x-moz-place-container
-text/x-moz-search-engine
-text/x-moz-text-internal
-text/x-moz-url
-text/x-vcard
-text/xml
-text/xsl
-video/mpeg
-video/ogg
-video/webm
-video/x-mng
-video/x-raw
-video/x-raw-yuv
diff --git a/Tools/iExploder/iexploder-1.7.2/src/mime-types/webkit b/Tools/iExploder/iexploder-1.7.2/src/mime-types/webkit
deleted file mode 100644
index 3dd58b2c7..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/mime-types/webkit
+++ /dev/null
@@ -1,157 +0,0 @@
-application/andrew-inset
-application/annodex
-application/asx
-application/atom+xml
-application/ecmascript
-application/java-archive
-application/javascript
-application/json
-application/mac-compactpro
-application/mpegurl
-application/octet-stream
-application/oda
-application/ogg
-application/pdf
-application/postscript
-application/rss+xml
-application/tar
-application/x-bcpio
-application/x-bittorrent
-application/x-cdlink
-application/x-chess-pgn
-application/x-compress
-application/x-cpio
-application/x-csh
-application/x-director
-application/x-diskcopy
-application/x-dvi
-application/x-filemaker
-application/x-font-ttf
-application/x-ftp-directory
-application/x-futuresplash
-application/x-googlegears
-application/x-gzip
-application/x-hdf
-application/x-icy
-application/x-java-applet
-application/x-java-bean
-application/x-java-vm
-application/x-javascript
-application/x-koan
-application/x-latex
-application/x-media-element-proxy-plugin
-application/x-meowmeow
-application/x-moz-file
-application/x-mpeg
-application/x-mpegurl
-application/x-ms-wmd
-application/x-netcdf
-application/x-oleobject
-application/x-qt-plugin
-application/x-qt-styled-widget
-application/x-sh
-application/x-shar
-application/x-shockwave-flash
-application/x-silverlight
-application/x-tar
-application/x-tcl
-application/x-tex
-application/x-texinfo
-application/x-troff
-application/x-troff-man
-application/x-troff-me
-application/x-troff-ms
-application/x-truetype-font
-application/x-unknown-content-type
-application/x-ustar
-application/x-wais-source
-application/x-webarchive
-application/x-www-form-urlencoded
-application/xhtml+xml
-application/xml
-audio/aac
-audio/annodex
-audio/mpeg
-audio/mpegurl
-audio/ogg
-audio/scpls
-audio/speex
-audio/wav
-audio/webm
-audio/x-aac
-audio/x-caf
-audio/x-gsm
-audio/x-mpeg
-audio/x-mpegurl
-audio/x-pn-realaudio-plugin
-audio/x-vorbis
-audio/x-wav
-font/opentype
-font/otf
-font/ttf
-for/event
-image/bmp
-image/gif
-image/ico
-image/ief
-image/jpeg
-image/pjpeg
-image/png
-image/svg+xml
-image/tif
-image/tiff
-image/x-cmu-raster
-image/x-icon
-image/x-macpaint
-image/x-pcx
-image/x-portable-anymap
-image/x-portable-bitmap
-image/x-portable-graymap
-image/x-portable-pixmap
-image/x-rgb
-image/x-targa
-image/x-tiff
-image/x-xbitmap
-image/x-xpixmap
-image/x-xpm
-image/x-xwindowdump
-inline/none
-mode/options
-model/iges
-model/mesh
-model/vrml
-multipart/form-data
-multipart/x-mixed-replace
-test/npn-invoke
-text/cache-manifest
-text/calendar
-text/css
-text/ecmascript
-text/event-stream
-text/html
-text/javascript
-text/jscript
-text/livescript
-text/pdf
-text/plain
-text/ptf
-text/richtext
-text/sgml
-text/tab-separated-values
-text/uri-list
-text/url-list
-text/x-game-map
-text/x-setext
-text/xml
-text/xsl
-video/annodex
-video/divx
-video/mpeg
-video/ogg
-video/quicktime
-video/webm
-video/x-mng
-video/x-sgi-movie
-video/x-theora
-webkit/base
-x-conference/x-cooltalk
diff --git a/Tools/iExploder/iexploder-1.7.2/src/protocols/dillo b/Tools/iExploder/iexploder-1.7.2/src/protocols/dillo
deleted file mode 100644
index 4de61de7d..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/protocols/dillo
+++ /dev/null
@@ -1,4 +0,0 @@
-dpi:
-ftp:
-http:
-https:
diff --git a/Tools/iExploder/iexploder-1.7.2/src/protocols/gtkhtml b/Tools/iExploder/iexploder-1.7.2/src/protocols/gtkhtml
deleted file mode 100644
index 61cec0b35..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/protocols/gtkhtml
+++ /dev/null
@@ -1,3 +0,0 @@
-ftp:
-http:
-https:
diff --git a/Tools/iExploder/iexploder-1.7.2/src/protocols/mozilla b/Tools/iExploder/iexploder-1.7.2/src/protocols/mozilla
deleted file mode 100644
index cec583b0a..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/protocols/mozilla
+++ /dev/null
@@ -1,30 +0,0 @@
-about:
-about:about
-about:addons
-about:buildconfig
-about:config
-about:crashes
-about:credits
-about:licence
-about:license
-about:logo
-about:memory
-about:mozilla
-about:neterror
-about:plugins
-about:support
-chrome:
-data:
-file:
-ftp:
-http:
-https:
-imap:
-jar:
-javascript:
-mailbox:
-mailto:
-news:
-place:
-resource:
-wyciwyg:
diff --git a/Tools/iExploder/iexploder-1.7.2/src/protocols/webkit b/Tools/iExploder/iexploder-1.7.2/src/protocols/webkit
deleted file mode 100644
index b632d0c00..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/protocols/webkit
+++ /dev/null
@@ -1,16 +0,0 @@
-GET:
-about:
-blob:
-data:
-feed:
-feeds:
-file:
-ftp:
-http:
-https:
-javascript:
-mailto:
-rtsp:
-src:
-ws:
-wss:
diff --git a/Tools/iExploder/iexploder-1.7.2/src/scanner.rb b/Tools/iExploder/iexploder-1.7.2/src/scanner.rb
deleted file mode 100644
index 9a8261cf7..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/scanner.rb
+++ /dev/null
@@ -1,154 +0,0 @@
-#
-# iExploder Combination Scanner Library (used for subtesting)
-#
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# This is a simple sequential combination creator with a constantly growing width
-def seq_combo_creator(total_lines, width, offset)
- # Offsets start at 0 to total_lines-1
- use_lines = []
- offset.upto(offset+width-1) do |line_number|
- use_lines << line_number
- end
-
- if use_lines[-1] == total_lines-1
- width += 1
- next_offset = 0
- else
- next_offset = offset + 1
- end
- return [width, next_offset, use_lines]
-end
-
-# This tries all combinations, giving a small test-case, but requires lots of
-# subtests.
-def combine_combo_creator(total_lines, width, offsets)
- # puts "Asked: Total Lines: #{total_lines} Line Count: #{width} Offsets: #{offsets.join(',')}"
- if not offsets or offsets.length == 0
- # puts " Setting offsets to 0"
- offsets = [0,]
- end
- if width < 1
- width = 1
- end
-
- index = 0
- lines = []
- new_offsets = []
- reset_next_offset = false
-
- # Reverse the order from fastest to slowest
- offsets.each_with_index do |offset, index|
- 0.upto(width-1) do |line_offset|
- lines << (offset + line_offset)
- end
- if lines[-1] >= total_lines - 1
- # If we are the slowest, that means we are done with this iteration.
- if index == offsets.length - 1
- new_offset_count = offsets.length + 1
- # Loosely follow the Fibonacci sequence when calculating width
- width = (new_offset_count * 1.61803398).round
- new_offsets = []
- # 0 to offsets.length creates one additional offset
- 0.upto(offsets.length) do |new_offset_num|
- new_offsets << (new_offset_num * width)
- end
-
- # We need the lowest offset first. Oops.
- new_offsets.reverse!
- else
- # Move to the next available slot.. next offset will take the one before.
- new_offsets << offsets[index+1] + (width * 2)
- reset_next_offset = true
- end
- elsif reset_next_offset
- new_offsets << (offset + width)
- reset_next_offset = false
- # The first one always rotates
- elsif index == 0
- new_offsets << (offset + width)
- reset_next_offset = false
- # The others stay still normally.
- else
- new_offsets << offset
- reset_next_offset = false
- end
- end
-
- return [width, new_offsets, lines]
-end
-
-def avg(list)
- sum = list.inject(0.0) { |sum, el| sum += el }
- return sum / list.length
-end
-
-
-# for testing #################################################################
-if $0 == __FILE__
- line_count = ARGV[0].to_i || 100
- try_count = ARGV[1].to_i || 10
-
- seq_iterations = []
- combine_iterations = []
- seq_size = []
- combine_size = []
-
- 1.upto(try_count) do |run|
- puts "*" * 78
- puts "# RUN #{run} (line-count: #{line_count})"
- find_lines = []
- 0.upto(rand(4)) do |count|
- choice = rand(line_count).to_i
- if ! find_lines.include?(choice)
- find_lines << choice
- end
- end
-
- lines = []
- width = 1
- offset = 0
- attempts = 0
- puts "Find lines: #{find_lines.join(',')}"
- while not find_lines.all? { |x| lines.include?(x) }
- (width, offset, lines) = seq_combo_creator(line_count, width, offset)
- attempts += 1
- end
- puts "Sequential found #{find_lines.join(',')} in #{attempts} attempts with #{lines.length} total lines."
- seq_iterations << attempts
- seq_size << lines.length
-
- lines = []
- width = 1
- offsets = []
- attempts = 0
- while not find_lines.all? { |x| lines.include?(x) }
- # puts "Looking for #{find_lines.join(',')}"
- (width, offsets, lines) = combine_combo_creator(line_count, width, offsets)
- attempts += 1
- end
- puts "Combine found #{find_lines.join(',')} in #{attempts} attempts with #{lines.length} total lines."
- combine_iterations << attempts
- combine_size << lines.length
- end
- puts "-" * 78
- puts "Seq avg iterations=#{avg(seq_iterations).to_i} length=#{avg(seq_size).to_i}"
- puts "combine avg iterations=#{avg(combine_iterations).to_i} length=#{avg(combine_size).to_i}"
- diff_iter = (avg(combine_iterations) / avg(seq_iterations)) * 100
- diff_lines = (avg(combine_size) / avg(seq_size)) * 100
- puts "Diff iterations: #{diff_iter}%"
- puts "Diff lines: #{diff_lines}%"
-end
diff --git a/Tools/iExploder/iexploder-1.7.2/src/version.rb b/Tools/iExploder/iexploder-1.7.2/src/version.rb
deleted file mode 100644
index 283723740..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/version.rb
+++ /dev/null
@@ -1 +0,0 @@
-$VERSION="1.7.2"
diff --git a/Tools/iExploder/iexploder-1.7.2/src/webserver.rb b/Tools/iExploder/iexploder-1.7.2/src/webserver.rb
deleted file mode 100755
index 7076fef3a..000000000
--- a/Tools/iExploder/iexploder-1.7.2/src/webserver.rb
+++ /dev/null
@@ -1,161 +0,0 @@
-#!/usr/bin/ruby
-# iExploder Web Server (using webrick)
-#
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-require 'cgi'
-require 'webrick'
-require 'optparse'
-require './iexploder.rb'
-
-include WEBrick
-
-$INSTANCE = nil
-$last_page_requested = [Time.now().to_i, 0]
-
-# Main CGI - Pass requests to iexploder
-class IEServlet < HTTPServlet::AbstractServlet
- def do_GET(request, response)
- ie = $INSTANCE.dup
- ie.test_num = request.query['t'].to_i || 0
- ie.subtest_data = request.query['s'] || nil
- ie.random_mode = request.query['r']
- ie.lookup_mode = request.query['l']
- ie.claimed_browser = request.query['b'] || nil
- ie.stop_num = request.query['x'] || nil
- user_agent = request['User-agent'] || 'unknown'
- raw_user_agent = user_agent.dup
-
- # Shorten the user-agent displayed
- user_agent.gsub!('Mozilla/5.0', '')
- user_agent.gsub!('X11; ', '')
- user_agent.gsub!('Macintosh; ', '')
- user_agent.gsub!(' U;', '')
- user_agent.gsub!(/^ +/, '')
- user_agent.gsub!(' (KHTML, like Gecko)', '')
- if user_agent =~ /Chrome/
- user_agent.gsub!(/Safari\/[\d\.]+/, '')
- end
- ie.browser = user_agent
- ie.setRandomSeed()
- # If we are a dependency image, fiddle with the headers!
- mime_type = request.query['m']
- headers = []
- if mime_type
- for (key, value) in ie.buildHeaders(mime_type)
- headers << "#{key}[#{value.length}]"
- response[key] = value
- end
- response.body = ie.buildMediaFile(mime_type)
- else
- response['Content-Type'] = 'text/html'
- response.body = ie.buildPage()
- end
-
- details = "?t=#{ie.test_num}"
- if ie.subtest_data
- details << "&s=#{ie.subtest_data}"
- end
- if ie.random_mode
- details << "&r=1"
- end
- if ie.lookup_mode
- details << "&l=#{ie.lookup_mode}"
- end
- if mime_type
- details << "&m=#{mime_type}"
- else
- $last_page_requested = [Time.now().to_i, request.unparsed_uri, CGI.escape(user_agent)]
- end
- printf("%-45.45s %s\n", details, user_agent)
- if headers.length > 0
- printf("%-45.45s %s\n", "Headers for #{mime_type}:", headers.join(', '))
- end
- end
-end
-
-
-# Simple form
-class IEForm < HTTPServlet::AbstractServlet
- def do_GET(request, response)
- response['Content-Type'] = 'text/html'
- response.body = File.read("index.html")
- end
-end
-
-class IELogo < HTTPServlet::AbstractServlet
- def do_GET(request, response)
- response['Content-Type'] = 'image/png'
- response.body = File.read("media/bug.png")
- end
-end
-
-class NoPage < HTTPServlet::AbstractServlet
- def do_GET(request, response)
- response.body = 'OHAI'
- end
-end
-
-class LastPage < HTTPServlet::AbstractServlet
- def do_GET(request, response)
- response.body = $last_page_requested.join(' ')
- end
-end
-
-
-def start_server(port, config_path, log_path)
- puts "* iExploder #{$VERSION} is loading (config=#{config_path}, port=#{port})"
- puts "=" * 80
- $INSTANCE = IExploder.new(config_path)
- warn_logger = Log.new($stderr, Log::WARN)
- config = YAML::load(File.open(config_path))
- if not log_path
- log_path = config['access_log_path']
- end
- puts "- Setting up logging to #{log_path}"
- access_log_stream = Log.new(log_path)
- access_log = [[ access_log_stream, AccessLog::COMMON_LOG_FORMAT ]]
- s = WEBrick::HTTPServer.new(:Port => port, :Logger => warn_logger, :AccessLog => access_log)
- s.mount("/", IEForm)
- s.mount("/favicon.ico", NoPage)
- s.mount("/media/bug.png", IELogo)
- s.mount("/iexploder.cgi", IEServlet)
- s.mount("/last_page.cgi", LastPage)
- ['INT', 'TERM'].each {|signal| trap(signal) { puts "SERVER SHUTDOWN: #{signal}"; s.shutdown }}
- puts "- iExploder is at http://127.0.0.1:#{port}"
- s.start
- puts ""
- puts "Goodbye! Have a fantastic day."
-end
-
-
-
-if $0 == __FILE__
- options = {
- :port => 3100,
- :config_path => 'config.yaml',
- :log_path => nil
- }
-
- optparse = OptionParser.new do|opts|
- opts.banner = "Usage: webserver.rb [options]"
- opts.on( '-p', '--port NUM', 'Listen on TCP port NUM' ) { |port| options[:port] = port }
- opts.on( '-c', '--config PATH', 'Use PATH for configuration file' ) { |path| options[:config_path] = path }
- opts.on( '-l', '--log PATH', 'Use PATH for log file' ) { |path| options[:log_path] = path }
- opts.on( '-h', '--help', 'Display this screen' ) { puts opts; exit }
- end
- optparse.parse!
- start_server(options[:port], options[:config_path], options[:log_path])
-end
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html
deleted file mode 100644
index 655091f74..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html
+++ /dev/null
@@ -1,47 +0,0 @@
-<html>
- <head> <META HTTP-EQUIV="Refresh" content="0;URL=testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html">
- <script language="javascript">setTimeout('window.location="testcase-Linux_x86_64_rv2.0b6pre_Gecko-20100904_Firefox-4.0b6pre-TEST-8375-1_59.html"', 1000);</script>
-<title>[8375:1_59] iExploder 1.7-DEV - &#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;&#5430431573964;</title>
-
-<!-- iExploder 1.7-DEV | test 8375:1_59 at 2010-09-05 09:21:41 +0200 -->
-
-<!-- browser: (Linux x86_64; rv:2.0b6pre) Gecko/20100904 Firefox/4.0b6pre -->
-<!-- subtest mode: 1 combinations, width: 1 -->
-</head>
-
-<body>
-
-<!-- START script -->
-<script right=middle
- onreset"http://127.0.0.1:3100/iexploder.cgi?t=8375&m=image%2Fbmp&b=%28Linux+x86_64%3B+rv%3A2.0b6pre%29+Gecko%2F20100904+Firefox%2F4.0b6pre()"
- pluginspage="icon"
- font-style=range
- aria-grabbed="inherit"
- onplaying=about:logo%&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;&#765832;()
- submit="-9"
- onfilterchange="http://127.0.0.1:3100/iexploder.cgi?t=8375&m=image%2Fsvg%2Bxml&b=%28Linux+x86_64%3B+rv%3A2.0b6pre%29+Gecko%2F20100904+Firefox%2F4.0b6pre"
- ascent=baseline
- containment=poly
- horiz-origin-y="hidden
- xlink:arcrole=999999999,9999999
- style="text-overline-mode: -999999.861474621882159640833 9999999999999999999999999999999999999999999999999999999999999border-left-width-value: $44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;$44%;/0^2&A^7.FD;;
- -moz-outline-radius: url(:942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&942;5911A%D;?#9/5&);
- -webkit-animation: 99999999999999999999999999999999999999999999999999999999999999999999999999999999999;
- richness: progresschunk-vertical 9999999999999999999999999999999999999999999999999999999999999999999999999999;
- -moz-force-broken-image-icon: url(}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}:) url(about:licence//aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa);
- ">
-window.onload=function(){
- var ietarget = document.createElement('strike');
- ietarget.style.stress = '999999.403294590608419311316';
- ietarget.columnlines = '/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%/3;1|3E98%:';
- document.body.appendChild(ietarget);
- ietarget.style.speak = -9999999999999999999999999999999999;
- document.write('</track>');
- document.write('</a>');
-}
-</script>
-</script>
-
-<!-- END script -->
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Opera-9.80_Linux_x86_64_en_Presto-2.6.30_Version-10.61-16704-3_108,3.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Opera-9.80_Linux_x86_64_en_Presto-2.6.30_Version-10.61-16704-3_108,3.html
deleted file mode 100644
index aad7ced29..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-Opera-9.80_Linux_x86_64_en_Presto-2.6.30_Version-10.61-16704-3_108,3.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-<body style="letter-spacing: 9999999999999999;">
-<textarea>
-<applet aria-valuetext="&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;&#977637;">
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_Chrome-7.0.529.0-TEST-611-3_36,9.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_Chrome-7.0.529.0-TEST-611-3_36,9.html
deleted file mode 100644
index 0aab5ba74..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_Chrome-7.0.529.0-TEST-611-3_36,9.html
+++ /dev/null
@@ -1,8 +0,0 @@
-<html>
-<!-- iExploder 1.7 | test 611:3_36,9 at Sun Sep 19 22:00:15 +0200 2010 -->
-<!-- browser: (U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.8 Chrome/7.0.529.0 -->
-<!-- subtest mode: 2 combinations, width: 3 -->
-<body>
-<progress style="font: 9999 x; ">
-</body>
-</html>
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html
deleted file mode 100644
index 5a2b9e154..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html style="content:
-url(//%n%n);
-">
- <head>
- <META HTTP-EQUIV="Refresh" content="1;testcase-U_Intel_Mac_OS_X_10_6_4_en-US_AppleWebKit-534.8_hrome-7.0.529.0-TEST-55313622206-3_6,0.html">
-<!-- iExploder 1.7 | test 55313622206:3_6,0 at Sun Sep 19 21:14:29 +0200 2010 -->
-<!-- browser: (U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/534.8 Chrome/7.0.529.0 -->
-</head>
-<body>
-</body>
-</html>
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-120813-8_72,56,24,8,0.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-120813-8_72,56,24,8,0.html
deleted file mode 100644
index 43601bd10..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-120813-8_72,56,24,8,0.html
+++ /dev/null
@@ -1,6 +0,0 @@
-<html>
-<!-- browser: (U; Linux x86_64; en-US) AppleWebKit/534.6 Chrome/7.0.503.1 -->
-<i style="font: 0 xxx;">
-<progress>
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-121240-3_81,3.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-121240-3_81,3.html
deleted file mode 100644
index 3f7ad07e3..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.6_Chrome-7.0.503.1-TEST-121240-3_81,3.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-<!-- browser: (U; Linux x86_64; en-US) AppleWebKit/534.6 Chrome/7.0.503.1 -->
-<textarea>
-<body>
-<style>
-dl {
- margin: &#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;&#6076;
-}
-</style>
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html
deleted file mode 100644
index 7a03f5545..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html
+++ /dev/null
@@ -1,13 +0,0 @@
-<html>
-<head>
- <META HTTP-EQUIV="Refresh" content="1;URL=testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html">
- <script
- language="javascript">setTimeout('window.location="testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-4800-5_80,65,15.html"', 1000);</script>
-</head>
-
-<body>
-<textarea>
-<source>
-<option style="-webkit-hyphenate-character: &#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;&#1474;">
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html b/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html
deleted file mode 100644
index a6bbe3fb5..000000000
--- a/Tools/iExploder/iexploder-1.7.2/testcases/testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html
+++ /dev/null
@@ -1,14 +0,0 @@
-<html>
- <head>
- <META HTTP-EQUIV="Refresh" content="1;URL=testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html">
- <script language="javascript">setTimeout('window.location="testcase-U_Linux_x86_64_en-US_AppleWebKit-534.7_Chrome-7.0.513.0-TEST-23583190347-3_15,12.html"', 1000);</script>
-<!-- browser: (U; Linux x86_64; en-US) AppleWebKit/534.7 Chrome/7.0.513.0 -->
-<!-- subtest mode: 2 combinations, width: 3 -->
-</head>
-
-<body>
-
-<script style="content: url(https://);">
-</script>
-</body>
-</html> \ No newline at end of file
diff --git a/Tools/iExploder/iexploder-1.7.2/tools/lasthit.rb b/Tools/iExploder/iexploder-1.7.2/tools/lasthit.rb
deleted file mode 100755
index d792d1b99..000000000
--- a/Tools/iExploder/iexploder-1.7.2/tools/lasthit.rb
+++ /dev/null
@@ -1,74 +0,0 @@
-#!/usr/bin/ruby
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-#
-# 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.
-
-require 'cgi'
-
-hostHash = Hash.new
-
-if (ARGV[0])
- file = File.open(ARGV[0])
-else
- puts "No filename specified, waiting for data via stdin..."
- file = $stdin
-end
-
-last_index = nil
-file.readlines.each_with_index { |line, index|
- # filter out mime hits as they produce a lot of odd user agents
- next if line =~ /&m=/
- if (line =~ /([\w\.]+) - - .*iexploder.cgi\?(.*?)&b=([\w\%-\.+]+)/)
- host = $1
- test_url = $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'] = test_url
- hostHash[host][agent]['total'] = hostHash[host][agent]['total'] + 1
- hostHash[host][agent]['last_line'] = index
- end
- last_index = index
-}
-
-printf("%-14.14s | %-25.25s | %6.6s | %7.7s | %s\n",
- "Host", "Test URL", "Total", "LineAgo", "Agent")
-puts "-" * 78
-hostHash.each_key { |host|
- hostHash[host].each_key { |agent|
- next if agent.length < 8
- display_agent = CGI::unescape(agent).sub('U; ', '')
- printf("%-14.14s | %-25.25s | %6.6s | %7.7s | %s\n",
- host, hostHash[host][agent]['last'],
- hostHash[host][agent]['total'],
- hostHash[host][agent]['last_line'] - last_index,
- display_agent);
- }
-}
-
diff --git a/Tools/iExploder/iexploder-1.7.2/tools/osx_last_crash.rb b/Tools/iExploder/iexploder-1.7.2/tools/osx_last_crash.rb
deleted file mode 100755
index d95296d2f..000000000
--- a/Tools/iExploder/iexploder-1.7.2/tools/osx_last_crash.rb
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/ruby
-# Copyright 2010 Thomas Stromberg - All Rights Reserved.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-#
-# 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/Tools/iExploder/iexploder-1.7.2/tools/release_src.sh b/Tools/iExploder/iexploder-1.7.2/tools/release_src.sh
deleted file mode 100755
index 5fb625e81..000000000
--- a/Tools/iExploder/iexploder-1.7.2/tools/release_src.sh
+++ /dev/null
@@ -1,28 +0,0 @@
-#!/bin/sh
-# Create a tarball from the subversion repository.
-#
-# Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-tmp=$$
-cd /tmp
-svn checkout http://iexploder.googlecode.com/svn/trunk/ iexploder-$$
-version=`grep '^\$VERSION' iexploder-$$/src/version.rb | cut -d\" -f2`
-echo "Version: $version"
-mv iexploder-$$ iexploder-$version
-cd iexploder-$version
-svn log > ChangeLog.txt
-find . -name "*.pyc" -delete
-find . -name ".svn" -exec rm -Rf {} \; 2>/dev/null
-cd ..
-GZIP="-9" tar -zcvf iexploder-${version}.tgz iexploder-${version}/
-rm -Rf iexploder-${version}
diff --git a/Tools/iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh b/Tools/iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh
deleted file mode 100755
index 39707f7c4..000000000
--- a/Tools/iExploder/iexploder-1.7.2/tools/update_html_tags_from_sources.sh
+++ /dev/null
@@ -1,125 +0,0 @@
-#!/bin/sh
-#
-# This script imports HTML and CSS tags from source trees. Supported browsers:
-#
-# * WebKit
-# * Firefox
-# * dillo
-# * gtkhtml
-
-src_dir=$1
-tools_dir=`dirname $0`
-dest_dir="$tools_dir/../src"
-tmp_prefix="/tmp/$$"
-
-if [ -z "$src_dir" ]; then
- echo "You must define a source directory to examine."
-fi
-
-if [ ! -d "$dest_dir" ]; then
- echo "Unable to find htdocs directory. Tried $dest_dir"
- exit 1
-fi
-
-
-if [ -d "$src_dir/WebKit" ]; then
- # Tested as of WebKit-r55454
- source_name="webkit"
- grep -v "^#" $src_dir/Source/WebCore/css/CSSPropertyNames.in > ${tmp_prefix}.css-properties
- grep -v "^#" $src_dir/Source/WebCore/css/CSSValueKeywords.in > ${tmp_prefix}.css-values
- grep -v "^#" $src_dir/Source/WebCore/html/HTMLAttributeNames.in | cut -d" " -f1 | \
- egrep -v "^namespace\w*=" > ${tmp_prefix}.html-attrs
- grep -v "^#" $src_dir/Source/WebCore/html/HTMLTagNames.in | cut -d" " -f1 | \
- egrep -v "^namespace\w*=" > ${tmp_prefix}.html-tags
- egrep "equalIgnoringCase" $src_dir/Source/WebCore/html/HTML*.cpp | \
- ruby -e '$stdin.readlines.join("").scan(/\"([\w-]+)"/) { |tag| puts tag }' > ${tmp_prefix}.html-values
- grep -r "protocolIs" $src_dir/Source/WebCore/* | ruby -e '$stdin.readlines.join("").scan(/\"([\w-]+)"/) { |tag| puts "#{tag}:" }' > ${tmp_prefix}.protocols
- grep "map->add" $src_dir/Source/WebCore/html/HTMLInputElement.cpp | cut -d\" -f2 >> ${tmp_prefix}.html-values
- grep "AtomicString,.*Header, (" $src_dir/Source/WebCore/platform/network/ResourceResponseBase.cpp | cut -d\" -f2 > ${tmp_prefix}.headers
- grep -o -r 'httpHeaderField(".*"' $src_dir | cut -d\" -f2 >> ${tmp_prefix}.headers
- egrep -r '"[-\+a-z]+/[-\+a-z]+"' $src_dir/Source/WebCore | ruby -e '$stdin.readlines.join("").scan(/\"([afimtvwx][\w\+-]+\/[\w\+-]+)"/) { puts $1 }' > ${tmp_prefix}.mime-types
- grep DEFINE_STATIC $src_dir/Source/WebCore/css/CSSSelector.cpp | cut -d\" -f2 \
- > ${tmp_prefix}.css-pseudo
- egrep -o '"@.*?\"' $src_dir/Source/WebCore/css/CSSParser.cpp | cut -d\" -f2 | cut -d"{" -f1 | \
- sed s/" "// > ${tmp_prefix}.css-atrules
-elif [ -d "$src_dir/xpcom" ]; then
- # Tested as of Sep 1 2010
- source_name="mozilla"
- grep "^HTML_.*TAG" $src_dir/parser/htmlparser/public/nsHTMLTagList.h \
- | cut -d\( -f2 | cut -d, -f1 | cut -d\) -f1 > ${tmp_prefix}.html-tags
- grep -r "Get.*Attr.*nsGkAtoms" $src_dir | perl -ne 'if (/nsGkAtoms::(\w+)/) { print "$1\n" } '\
- | xargs -n1 -I{} grep "({}," $src_dir/content/base/src/nsGkAtomList.h \
- | cut -d\" -f2 > ${tmp_prefix}.html-attrs
- grep "nsHtml5AttributeName.*nsHtml5Atoms::" $src_dir/parser/html/nsHtml5AttributeName.cpp \
- | cut -d: -f3 | cut -d\) -f1 | cut -d, -f1 | xargs -n1 -I{} grep "({}," $src_dir/parser/html/nsHtml5AtomList.h \
- | cut -d\" -f2 >> ${tmp_prefix}.html-attrs
- egrep "^ [a-z-]+," $src_dir/layout/style/nsCSSPropList.h | cut -d, -f1 \
- | awk '{ print $1 }' > ${tmp_prefix}.css-properties
- grep 'CSS_KEY(' $src_dir/layout/style/nsCSSKeywordList.h | cut -d"(" -f2 \
- | cut -d, -f1 > ${tmp_prefix}.css-values
- egrep '{ "[a-z]+:' $src_dir/docshell/build/nsDocShellModule.cpp | cut -d\" -f2 \
- > ${tmp_prefix}.protocols
- grep -r 'aURI->SchemeIs("' $src_dir/* | cut -d\" -f2 | perl -ne 'chomp; print "$_:\n";' >> ${tmp_prefix}.protocols
- grep -r 'uri->SchemeIs("' $src_dir/* | cut -d\" -f2 | perl -ne 'chomp; print "$_:\n";' >> ${tmp_prefix}.protocols
- grep "{ \"" $src_dir/docshell/base/nsAboutRedirector.cpp | cut -d\" -f2 \
- | xargs -I{} echo "about:{}" >> ${tmp_prefix}.protocols
- grep targetScheme.EqualsLiteral $src_dir/netwerk/base/public/nsNetUtil.h \
- | cut -d\" -f2 | sed s/$/:/g>> ${tmp_prefix}.protocols
- grep "name.LowerCaseEqualsLiteral" $src_dir/docshell/base/nsDocShell.cpp | cut -d\" -f2 >> ${tmp_prefix}.html-values
- egrep ' { "[a-z]+' $src_dir/content/html/content/src/nsGenericHTMLElement.cpp | cut -d\" -f2 >> ${tmp_prefix}.html-values
- grep ' { "' $src_dir/content/html/content/src/nsHTMLInputElement.cpp | cut -d\" -f2 >> ${tmp_prefix}.html-values
- grep -r value.LowerCaseEqualsLiteral $src_dir/content/base/src/* | cut -d\" -f2 >> ${tmp_prefix}.html-values
- grep "^HTTP_ATOM" $src_dir/netwerk/protocol/http/nsHttpAtomList.h | cut -d\" -f2 \
- | grep '[a-z]'>> ${tmp_prefix}.headers
- egrep -r '"[-\+a-z]+/[-\+a-z]+"' $src_dir/browser/base $src_dir/browser/components $src_dir/uriloader $src_dir/netwerk/mime $src_dir/content/html \
- | ruby -e '$stdin.readlines.join("").scan(/\"([afimtvwx][\w\+-]+\/[\w\+-]+)"/) { puts $1 }' > ${tmp_prefix}.mime-types
- egrep -o '":(.*?)"' $src_dir/layout/style/nsCSSPseudoClassList.h | cut -d\" -f2 \
- | sed s/^:// > ${tmp_prefix}.css-pseudo
- grep AssignLiteral $src_dir/layout/style/nsCSSRules.cpp | egrep -o '"@.*?"' \
- | cut -d\" -f2 | cut -d" " -f1 > ${tmp_prefix}.css-atrules
-elif [ -f "$src_dir/dillorc" ]; then
- # Tested as of dillo 2.2
- source_name="dillo"
- grep '{"' $src_dir/src/cssparser.cc | cut -d\" -f2 > ${tmp_prefix}.css-properties
- egrep '^ +\"[a-z-]+\", ' $src_dir/src/cssparser.cc | \
- ruby -e '$stdin.readlines.join("").scan(/\"(.*?)\"/) { |tag| puts tag }' > ${tmp_prefix}.css-values
- grep "_get_attr(html" $src_dir/src/html.cc | grep '"' | cut -d\" -f2 > ${tmp_prefix}.html-attrs
- grep 'a_Html_get_attr(html.*"' $src_dir/src/*.cc | cut -d\" -f2 >> ${tmp_prefix}.html-attrs
- grep Html_tag_open_ $src_dir/src/html.cc | grep "^ {" | cut -d\" -f2 > ${tmp_prefix}.html-tags
- grep dStrcasecmp $src_dir/src/form.cc $src_dir/src/html.cc $src_dir/src/table.cc | \
- ruby -e '$stdin.readlines.join("").scan(/\"([-a-z]+)\"/) { |tag| puts tag }' > ${tmp_prefix}.html-values
- grep -r 'URL_SCHEME.*"[a-z]' $src_dir | cut -d \" -f2 | perl -ne 'chomp; print "$_:\n";' > ${tmp_prefix}.protocols
- grep -r 'header, "' $src_dir/src/cache.c | cut -d\" -f2 > ${tmp_prefix}.headers
- egrep -r "[-\+a-z]+/[-\+a-z]+" $src_dir/dpi $src_dir/src | \
- ruby -e '$stdin.readlines.join("").scan(/\"([\w\+-]+\/[\w\+-]+)"/) { puts $1 }' > ${tmp_prefix}.mime-types
-elif [ -d "$src_dir/gtkhtml" ]; then
- # tested as of gtkhtml-3.29.91
- source_name="gtkhtml"
- grep -r "#define ID_" $src_dir/gtkhtml/htmlengine.c | cut -d\" -f2 | egrep '^[a-z]' > ${tmp_prefix}.html-tags
- grep "html_element_get_attr" $src_dir/gtkhtml/*.c | cut -d\" -f2 > ${tmp_prefix}.html-attrs
- grep -r "g_ascii_strncasecmp" $src_dir/gtkhtml/*.c | cut -d\" -f2 | grep -v ":" | cut -d"=" -f1 | grep "^[a-z]" > ${tmp_prefix}.html-attrs
- grep "g_ascii_strncasecmp" $src_dir/gtkhtml/htmlstyle.c | cut -d\" -f2 | cut -d" " -f1 | sed s/://g > ${tmp_prefix}.css-properties
- grep "g_ascii_strcasecmp" $src_dir/gtkhtml/htmlstyle.c | cut -d\" -f2 > ${tmp_prefix}.css-values
- grep g_ascii_strcasecmp $src_dir/gtkhtml/htmlengine.c | ruby -e '$stdin.readlines.join("").scan(/\"([\/\w-]+)"/) { |tag| puts tag }' > ${tmp_prefix}.html-values
-fi
-
-if [ "$source_name" ]; then
- echo "Updating $source_name"
- # We always append, never remove.
- types="css-properties css-values html-attrs html-tags html-values protocols headers mime-types css-pseudo css-atrules"
- for type in $types
- do
- if [ -f "${tmp_prefix}.${type}" ]; then
- if [ -s "${tmp_prefix}.${type}" ]; then
- echo "- $type"
- cat $dest_dir/$type/$source_name ${tmp_prefix}.${type} | sort -u > $dest_dir/$type/$source_name
- else
- echo "- Unable to parse ${type}, source code is incompatible (skipping)"
- fi
- rm -f "${tmp_prefix}.${type}"
- fi
- done
-else
- echo "Could not identify the correct source type for $src_dir"
-fi
-
diff --git a/Tools/jhbuild/jhbuild-wrapper b/Tools/jhbuild/jhbuild-wrapper
deleted file mode 100755
index 9d3a87b44..000000000
--- a/Tools/jhbuild/jhbuild-wrapper
+++ /dev/null
@@ -1,122 +0,0 @@
-#!/usr/bin/env python
-# Copyright (C) 2011 Igalia S.L.
-# Copyright (C) 2012 Gustavo Noronha Silva <gns@gnome.org>
-# Copyright (C) 2012 Intel Corporation
-#
-# 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 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
-
-import jhbuildutils
-import os
-import shlex
-import subprocess
-import sys
-
-jhbuild_revision = '496974221c3a8ac4fbbc3b0a577c71cac224130d'
-
-dependencies_path = jhbuildutils.get_dependencies_path()
-installation_prefix = os.path.abspath(os.path.join(dependencies_path, 'Root'))
-source_path = os.path.abspath(os.path.join(dependencies_path, 'Source'))
-jhbuild_source_path = os.path.join(source_path, 'jhbuild')
-jhbuild_path = os.path.join(installation_prefix, 'bin', 'jhbuild')
-
-def jhbuild_installed():
- return os.path.exists(jhbuild_path)
-
-
-def jhbuild_cloned():
- return os.path.exists(jhbuild_source_path)
-
-
-def jhbuild_at_expected_revision():
- process = subprocess.Popen(['git', 'rev-list', 'HEAD^..'], cwd=jhbuild_source_path,
- stdout=subprocess.PIPE, stderr=subprocess.PIPE)
- output, err = process.communicate()
- if process.returncode != 0:
- raise Exception('failed to find jhbuild revision: %s' % err)
-
- return output.strip() == jhbuild_revision
-
-
-def update_jhbuild():
- process = subprocess.Popen(['git', 'remote', 'update', 'origin'], cwd=jhbuild_source_path)
- process.wait()
- if process.returncode != 0:
- raise Exception('jhbuild remote update origin failed with return code: %i' % process.returncode)
-
- process = subprocess.Popen(['git', 'checkout', '%s' % jhbuild_revision],
- cwd=jhbuild_source_path)
- process.wait()
- if process.returncode != 0:
- raise Exception('failed to checkout treeish %s: %i' % (jhbuild_revision, process.returncode))
-
-
-def clone_jhbuild():
- if not os.path.exists(source_path):
- os.makedirs(source_path)
- if not os.path.exists(installation_prefix):
- os.makedirs(installation_prefix)
-
- process = subprocess.Popen(['git', 'clone', 'git://git.gnome.org/jhbuild'], cwd=source_path)
- process.wait()
- if process.returncode != 0:
- raise Exception('jhbuild git clone failed with return code: %i' % process.returncode)
-
-
-def install_jhbuild():
- process = subprocess.Popen(['bash', './autogen.sh', '--prefix=%s' % installation_prefix], cwd=jhbuild_source_path)
- process.wait()
- if process.returncode != 0:
- raise Exception('jhbuild configure failed with return code: %i' % process.returncode)
-
- # This is a hackish approach to make the subprocess.Popen call even when people set
- # MAKE to 'make -j3' instead of using the MAKEFLAGS environment variable.
- make = shlex.split(os.environ.get('MAKE', 'make'))
-
- process = subprocess.Popen(make + ['install'], cwd=jhbuild_source_path)
- process.wait()
- if process.returncode != 0:
- raise Exception('jhbuild configure failed with return code: %i' % process.returncode)
-
-
-def determine_platform():
- if '--efl' in sys.argv:
- return "efl";
- if '--gtk' in sys.argv:
- return "gtk";
- raise ValueError('No platform specified for jhbuild-wrapper.')
-
-
-def ensure_jhbuild(platform):
- if not jhbuild_cloned():
- clone_jhbuild()
- update_jhbuild()
- install_jhbuild()
- elif not jhbuild_installed() \
- or not jhbuild_at_expected_revision():
- update_jhbuild()
- install_jhbuild()
-
-# Work-around the fact that we may get called from inside the jhbuild environment
-# which will cause problems if we just cleaned the jhbuild install root
-if os.environ.has_key('UNDER_JHBUILD'):
- del os.environ['ACLOCAL_FLAGS']
-
-try:
- platform = determine_platform()
-except ValueError as e:
- sys.exit(e)
-ensure_jhbuild(platform)
-
-os.execve(jhbuild_path, [jhbuild_path, '--no-interact', '-f', jhbuildutils.get_config_file_for_platform(platform)] + sys.argv[2:], os.environ)
diff --git a/Tools/jhbuild/jhbuildutils.py b/Tools/jhbuild/jhbuildutils.py
index f68124d4d..c00160e7e 100644
--- a/Tools/jhbuild/jhbuildutils.py
+++ b/Tools/jhbuild/jhbuildutils.py
@@ -13,11 +13,12 @@ def top_level_path(*args):
return os.path.join(*(top_level_dir,) + args)
-def get_dependencies_path():
+def get_dependencies_path(platform):
+ dependencies_dir = "%s%s" % ('Dependencies', platform.upper())
if 'WEBKIT_OUTPUTDIR' in os.environ:
- return os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], 'Dependencies'))
+ return os.path.abspath(os.path.join(os.environ['WEBKIT_OUTPUTDIR'], dependencies_dir))
else:
- return os.path.abspath(top_level_path('WebKitBuild', 'Dependencies'))
+ return os.path.abspath(top_level_path('WebKitBuild', dependencies_dir))
def get_config_file_for_platform(platform):
@@ -25,19 +26,21 @@ def get_config_file_for_platform(platform):
def enter_jhbuild_environment_if_available(platform):
- if not os.path.exists(get_dependencies_path()):
+ if not os.path.exists(get_dependencies_path(platform)):
return False
# Sometimes jhbuild chooses to install in a way that reads the library from the source directory, so fall
# back to that method.
- source_path = os.path.join(get_dependencies_path(), "Source", "jhbuild")
+ source_path = os.path.join(get_dependencies_path(platform), "Source", "jhbuild")
sys.path.insert(0, source_path)
- # When loading jhbuild from the source checkout it fails if the SRCDIR variable is not set.
+ # When loading jhbuild from the source checkout it fails if the SRCDIR, PKGDATADIR or DATADIR aren't present.
__builtin__.__dict__['SRCDIR'] = source_path
+ __builtin__.__dict__['PKGDATADIR'] = None
+ __builtin__.__dict__['DATADIR'] = None
# We don't know the Python version, so we just assume that we can safely take the first one in the list.
- site_packages_path = glob.glob(os.path.join(get_dependencies_path(), "Root", "lib", "*", "site-packages"))
+ site_packages_path = glob.glob(os.path.join(get_dependencies_path(platform), "Root", "lib", "*", "site-packages"))
if len(site_packages_path):
site_packages_path = site_packages_path[0]
sys.path.insert(0, site_packages_path)
@@ -45,7 +48,7 @@ def enter_jhbuild_environment_if_available(platform):
try:
import jhbuild.config
from jhbuild.errors import FatalError
- config = jhbuild.config.Config(get_config_file_for_platform(platform))
+ config = jhbuild.config.Config(get_config_file_for_platform(platform), [])
except FatalError, exception:
sys.stderr.write('Could not load jhbuild config file: %s\n' % exception.args[0])
return False
diff --git a/Tools/lldb/lldb_webkit.py b/Tools/lldb/lldb_webkit.py
deleted file mode 100644
index 7fb31585a..000000000
--- a/Tools/lldb/lldb_webkit.py
+++ /dev/null
@@ -1,265 +0,0 @@
-# Copyright (C) 2012 Apple. 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. 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 INC. 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.
-
-"""
- LLDB Support for WebKit Types
-
- Add the following to your .lldbinit file to add WebKit Type summaries in LLDB and Xcode:
-
- command script import {Path to WebKit Root}/Tools/lldb/lldb_webkit.py
-
-"""
-
-import lldb
-import struct
-
-def __lldb_init_module(debugger, dict):
- debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFString_SummaryProvider WTF::String')
- debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFStringImpl_SummaryProvider WTF::StringImpl')
- debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFAtomicString_SummaryProvider WTF::AtomicString')
- debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFVector_SummaryProvider -x "WTF::Vector<.+>$"')
- debugger.HandleCommand('type summary add --expand -F lldb_webkit.WTFHashTable_SummaryProvider -x "WTF::HashTable<.+>$"')
- debugger.HandleCommand('type synthetic add -x "WTF::Vector<.+>$" --python-class lldb_webkit.WTFVectorProvider')
- debugger.HandleCommand('type synthetic add -x "WTF::HashTable<.+>$" --python-class lldb_webkit.WTFHashTableProvider')
-
-def WTFString_SummaryProvider(valobj, dict):
- provider = WTFStringProvider(valobj, dict)
- return "{ length = %d, contents = '%s' }" % (provider.get_length(), provider.to_string())
-
-
-def WTFStringImpl_SummaryProvider(valobj, dict):
- provider = WTFStringImplProvider(valobj, dict)
- return "{ length = %d, is8bit = %d, contents = '%s' }" % (provider.get_length(), provider.is_8bit(), provider.to_string())
-
-
-def WTFAtomicString_SummaryProvider(valobj, dict):
- return WTFString_SummaryProvider(valobj.GetChildMemberWithName('m_string'), dict)
-
-
-def WTFVector_SummaryProvider(valobj, dict):
- provider = WTFVectorProvider(valobj, dict)
- return "{ size = %d, capacity = %d }" % (provider.size, provider.capacity)
-
-
-def WTFHashTable_SummaryProvider(valobj, dict):
- provider = WTFHashTableProvider(valobj, dict)
- return "{ tableSize = %d, keyCount = %d }" % (provider.tableSize(), provider.keyCount())
-
-# FIXME: Provide support for the following types:
-# def WTFVector_SummaryProvider(valobj, dict):
-# def WTFCString_SummaryProvider(valobj, dict):
-# def WebCoreKURLGooglePrivate_SummaryProvider(valobj, dict):
-# def WebCoreQualifiedName_SummaryProvider(valobj, dict):
-# def JSCIdentifier_SummaryProvider(valobj, dict):
-# def JSCJSString_SummaryProvider(valobj, dict):
-
-
-def guess_string_length(valobj, charSize, error):
- if not valobj.GetValue():
- return 0
-
- maxLength = 256
-
- pointer = valobj.GetValueAsUnsigned()
- contents = valobj.GetProcess().ReadMemory(pointer, maxLength * charSize, lldb.SBError())
- format = 'B' if charSize == 1 else 'H'
-
- for i in xrange(0, maxLength):
- if not struct.unpack_from(format, contents, i * charSize)[0]:
- return i
-
- return maxLength
-
-def ustring_to_string(valobj, error, length=None):
- if length is None:
- length = guess_string_length(valobj, 2, error)
- else:
- length = int(length)
-
- pointer = valobj.GetValueAsUnsigned()
- contents = valobj.GetProcess().ReadMemory(pointer, length * 2, lldb.SBError())
-
- # lldb does not (currently) support returning unicode from python summary providers,
- # so potentially convert this to ascii by escaping
- string = contents.decode('utf16')
- try:
- return str(string)
- except:
- return string.encode('unicode_escape')
-
-def lstring_to_string(valobj, error, length=None):
- if length is None:
- length = guess_string_length(valobj, 1, error)
- else:
- length = int(length)
-
- pointer = valobj.GetValueAsUnsigned()
- contents = valobj.GetProcess().ReadMemory(pointer, length, lldb.SBError())
-
- # lldb does not (currently) support returning unicode from python summary providers,
- # so potentially convert this to ascii by escaping
- string = contents.decode('utf8')
- try:
- return str(string)
- except:
- return string.encode('unicode_escape')
-
-class WTFStringImplProvider:
- def __init__(self, valobj, dict):
- self.valobj = valobj
-
- def get_length(self):
- return self.valobj.GetChildMemberWithName('m_length').GetValueAsUnsigned(0)
-
- def get_data8(self):
- return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data8')
-
- def get_data16(self):
- return self.valobj.GetChildAtIndex(2).GetChildMemberWithName('m_data16')
-
- def to_string(self):
- error = lldb.SBError()
- if self.is_8bit():
- return lstring_to_string(self.get_data8(), error, self.get_length())
- return ustring_to_string(self.get_data16(), error, self.get_length())
-
- def is_8bit(self):
- # FIXME: find a way to access WTF::StringImpl::s_hashFlag8BitBuffer
- return bool(self.valobj.GetChildMemberWithName('m_hashAndFlags').GetValueAsUnsigned(0) \
- & 1 << 6)
-
-
-class WTFStringProvider:
- def __init__(self, valobj, dict):
- self.valobj = valobj
-
- def stringimpl(self):
- impl_ptr = self.valobj.GetChildMemberWithName('m_impl').GetChildMemberWithName('m_ptr')
- return WTFStringImplProvider(impl_ptr, dict)
-
- def get_length(self):
- impl = self.stringimpl()
- if not impl:
- return 0
- return impl.get_length()
-
- def to_string(self):
- impl = self.stringimpl()
- if not impl:
- return u""
- return impl.to_string()
-
-
-class WTFVectorProvider:
- def __init__(self, valobj, internal_dict):
- self.valobj = valobj
- self.update()
-
- def num_children(self):
- return self.size + 3
-
- def get_child_index(self, name):
- if name == "m_size":
- return self.size
- elif name == "m_capacity":
- return self.size + 1
- elif name == "m_buffer":
- return self.size + 2
- else:
- return int(name.lstrip('[').rstrip(']'))
-
- def get_child_at_index(self, index):
- if index == self.size:
- return self.valobj.GetChildMemberWithName("m_size")
- elif index == self.size + 1:
- return self.valobj.GetChildMemberWithName("m_capacity")
- elif index == self.size + 2:
- return self.buffer
- elif index < self.size:
- offset = index * self.data_size
- child = self.buffer.CreateChildAtOffset('[' + str(index) + ']', offset, self.data_type)
- return child
- else:
- return None
-
- def update(self):
- self.buffer = self.valobj.GetChildMemberWithName('m_buffer')
- self.size = self.valobj.GetChildMemberWithName('m_size').GetValueAsUnsigned(0)
- self.capacity = self.buffer.GetChildMemberWithName('m_capacity').GetValueAsUnsigned(0)
- self.data_type = self.buffer.GetType().GetPointeeType()
- self.data_size = self.data_type.GetByteSize()
-
- def has_children(self):
- return True
-
-
-class WTFHashTableProvider:
- def __init__(self, valobj, internal_dict):
- self.valobj = valobj
- self.update()
-
- def num_children(self):
- return self.tableSize() + 5
-
- def get_child_index(self, name):
- if name == "m_table":
- return self.tableSize()
- elif name == "m_tableSize":
- return self.tableSize() + 1
- elif name == "m_tableSizeMask":
- return self.tableSize() + 2
- elif name == "m_keyCount":
- return self.tableSize() + 3
- elif name == "m_deletedCount":
- return self.tableSize() + 4
- else:
- return int(name.lstrip('[').rstrip(']'))
-
- def get_child_at_index(self, index):
- if index == self.tableSize():
- return self.valobj.GetChildMemberWithName('m_table')
- elif index == self.tableSize() + 1:
- return self.valobj.GetChildMemberWithName('m_tableSize')
- elif index == self.tableSize() + 2:
- return self.valobj.GetChildMemberWithName('m_tableSizeMask')
- elif index == self.tableSize() + 3:
- return self.valobj.GetChildMemberWithName('m_keyCount')
- elif index == self.tableSize() + 4:
- return self.valobj.GetChildMemberWithName('m_deletedCount')
- elif index < self.tableSize():
- table = self.valobj.GetChildMemberWithName('m_table')
- return table.CreateChildAtOffset('[' + str(index) + ']', index * self.data_size, self.data_type)
- else:
- return None
-
- def tableSize(self):
- return self.valobj.GetChildMemberWithName('m_tableSize').GetValueAsUnsigned(0)
-
- def keyCount(self):
- return self.valobj.GetChildMemberWithName('m_keyCount').GetValueAsUnsigned(0)
-
- def update(self):
- self.data_type = self.valobj.GetType().GetTemplateArgumentType(0)
- self.data_size = self.data_type.GetByteSize()
-
- def has_children(self):
- return True
diff --git a/Tools/mangleme/LICENSE b/Tools/mangleme/LICENSE
deleted file mode 100644
index 5ab7695ab..000000000
--- a/Tools/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/Tools/mangleme/Makefile b/Tools/mangleme/Makefile
deleted file mode 100644
index 90d01e9f1..000000000
--- a/Tools/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/Tools/mangleme/README b/Tools/mangleme/README
deleted file mode 100644
index 4fe2928b3..000000000
--- a/Tools/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/Tools/mangleme/mangle.cgi.c b/Tools/mangleme/mangle.cgi.c
deleted file mode 100644
index 12ca9482c..000000000
--- a/Tools/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/Tools/mangleme/remangle.cgi.c b/Tools/mangleme/remangle.cgi.c
deleted file mode 100644
index ccc447275..000000000
--- a/Tools/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/Tools/mangleme/tags.h b/Tools/mangleme/tags.h
deleted file mode 100644
index 578944115..000000000
--- a/Tools/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/Tools/qmake/.qmake.cache b/Tools/qmake/.qmake.cache
deleted file mode 100644
index e69de29bb..000000000
--- a/Tools/qmake/.qmake.cache
+++ /dev/null
diff --git a/Tools/qmake/.qmake.conf b/Tools/qmake/.qmake.conf
deleted file mode 100644
index 2f0dc8976..000000000
--- a/Tools/qmake/.qmake.conf
+++ /dev/null
@@ -1,2 +0,0 @@
-# This file is only here to isolate the configure project
-# from the rest of the tree.
diff --git a/Tools/qmake/README b/Tools/qmake/README
deleted file mode 100644
index afc16d887..000000000
--- a/Tools/qmake/README
+++ /dev/null
@@ -1,78 +0,0 @@
-The qmake build system
-======================
-
-Basic structure
----------------
-
-The qmake build is split into three different file types:
-
- * .pro files: These files represent top level targets that can be
- built individually, or a collection of sub-targets used for
- organizing the project.
-
- * .pri files: These files are included from top level targets,
- and represent 'implementation details' of how the target is built.
-
- * .prf files: These files take care of generic build rules
- that applies to all targets, or specific 'features' that can
- be loaded on demand.
-
-The first two file types are spread throughout the source tree, while
-the .prf files are located in 'Tools/qmake/mkspecs/features' and will
-get loaded by qmake based on setting the QMAKEPATH environment variable.
-
-
-Root project file
------------------
-
-The root project file 'WebKit.pro' is handy both for loading WebKit
-in Qt Creator, and for building QtWebKit. Normally you will build
-using build-webkit, but you can also run qmake directly on the root
-project file. Just make sure to set QMAKEPATH first, so that the
-custom mkspecs are picked up.
-
-Feature files
--------------
-
-Feature files (.prf files) are used in the following ways:
-
- 1. Every time qmake parses a project file, it will first load
- a special feature file called 'defaults_pre.prf', then parse
- the project file, and then load another special feature file
- called 'defaults_post.prf'. We use these special files to set
- default options that all project files use, expose a few handy
- functions, and to post-process the build config based on what
- the project file did.
-
- 2. Dependencies on other targets (libraries) are declared by
- using CONFIG+=othertarget. This will add the correct include
- paths and linker options to use the library.
-
- 3. Optional features can be enabled by passing CONFIG+=foo on
- the command line when running qmake on the root project file,
- (or by passing --make-args="CONFIG+=foo" to build-webkit). For
- example 'CONFIG+=valgrind'.
-
-
-Derived sources
----------------
-
-Some targets (JavaScriptCore, WebCore, etc) rely on generated files,
-(aka. derived sources). These must be generated before the real target
-is built. This is achieved by splitting the target up into two sub-
-projects, one for the derived sources and one for the real target,
-and telling qmake to build them in order using CONFIG += ordered.
-
-
-The WEBKIT variable
--------------------
-
-The custom qmake variable 'WEBKIT' is used for signaling that a
-target depends in some way on other subproject of the WebKit
-project. For now this is limited to the set of intermediate
-libraries: wtf, javascriptcore, webcore, and webkit2.
-
-Adding a dependency results in additional include paths being
-available, and potentially linking to the library. This is
-decided by the build system based on conditions such as what
-kind of target is being built and the general build config.
diff --git a/Tools/qmake/config.tests/README b/Tools/qmake/config.tests/README
deleted file mode 100644
index 4a3708856..000000000
--- a/Tools/qmake/config.tests/README
+++ /dev/null
@@ -1,4 +0,0 @@
-This directory is used for configure-style checks that are run by
-syncqt during processing of configure.pro in the parent directory.
-
-Note: This feature is available in Qt 5 only.
diff --git a/Tools/qmake/config.tests/fontconfig/fontconfig.cpp b/Tools/qmake/config.tests/fontconfig/fontconfig.cpp
deleted file mode 100644
index 2d43ed149..000000000
--- a/Tools/qmake/config.tests/fontconfig/fontconfig.cpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2011 University of Szeged. 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 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.
- */
-
-#include <fontconfig/fontconfig.h>
-
-int main(int, char**)
-{
- FcInit();
-}
diff --git a/Tools/qmake/config.tests/fontconfig/fontconfig.pro b/Tools/qmake/config.tests/fontconfig/fontconfig.pro
deleted file mode 100644
index 6306fd1e8..000000000
--- a/Tools/qmake/config.tests/fontconfig/fontconfig.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG -= qt
-SOURCES = fontconfig.cpp
-CONFIG += link_pkgconfig
-PKGCONFIG += fontconfig
diff --git a/Tools/qmake/config.tests/gccdepends/empty.cpp b/Tools/qmake/config.tests/gccdepends/empty.cpp
deleted file mode 100644
index e69de29bb..000000000
--- a/Tools/qmake/config.tests/gccdepends/empty.cpp
+++ /dev/null
diff --git a/Tools/qmake/config.tests/gccdepends/gccdepends.pro b/Tools/qmake/config.tests/gccdepends/gccdepends.pro
deleted file mode 100644
index cd0a81a32..000000000
--- a/Tools/qmake/config.tests/gccdepends/gccdepends.pro
+++ /dev/null
@@ -1,34 +0,0 @@
-TEMPLATE = aux
-OBJECTS_DIR = obj
-QMAKE_CXXFLAGS += -MD
-
-base_filename = empty
-object_file = $$OBJECTS_DIR/$${base_filename}.o
-deps_filename = $${base_filename}.d
-
-SOURCES += $${base_filename}.cpp
-
-test.commands = \
- # Earlier teambuilder and icecream versions would not
- # respect the -o argument for the .d file, so the file
- # would end up in the root build dir.
- test ! -f $${deps_filename} && \
- \
- # But it should end up in the OBJECTS_DIR
- test -f $$OBJECTS_DIR/$${deps_filename} && \
- \
- # Icecream 0.9.7 and earlier does not ensure that the
- # target rule matches the path of the .o file, since
- # the file is compiled into the current dir and then
- # moved. Verify that we don't hit that case.
- grep -q \"$${object_file}:\" $$OBJECTS_DIR/$${deps_filename} && \
- \
- # If everything is all right we mark the test as succeeded
- echo success > $$basename(PWD)
-
-test.depends = $${object_file}
-QMAKE_EXTRA_TARGETS += test
-
-default.target = all
-default.depends += test
-QMAKE_EXTRA_TARGETS += default
diff --git a/Tools/qmake/config.tests/glx/glx.cpp b/Tools/qmake/config.tests/glx/glx.cpp
deleted file mode 100644
index 9dcfd178c..000000000
--- a/Tools/qmake/config.tests/glx/glx.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- * 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.
- */
-
-#include <GL/glx.h>
-
-int main(int, char**)
-{
- Display* display = XOpenDisplay(0);
- int items = 0;
- (void)glXChooseFBConfig(display, DefaultScreen(display), 0, &items);
- XCloseDisplay(display);
-
- return 0;
-}
diff --git a/Tools/qmake/config.tests/glx/glx.pro b/Tools/qmake/config.tests/glx/glx.pro
deleted file mode 100644
index 4e8100043..000000000
--- a/Tools/qmake/config.tests/glx/glx.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-SOURCES = glx.cpp
-OBJECTS_DIR = obj
-LIBS += -lX11 -lGL
-
diff --git a/Tools/qmake/config.tests/gnuld/gnuld.pro b/Tools/qmake/config.tests/gnuld/gnuld.pro
deleted file mode 100644
index c239f13e1..000000000
--- a/Tools/qmake/config.tests/gnuld/gnuld.pro
+++ /dev/null
@@ -1,4 +0,0 @@
-TEMPLATE = app
-TARGET = gnuld
-SOURCES = main.cpp
-QMAKE_LFLAGS += -Wl,--no-keep-memory
diff --git a/Tools/qmake/config.tests/gnuld/main.cpp b/Tools/qmake/config.tests/gnuld/main.cpp
deleted file mode 100644
index 31a133726..000000000
--- a/Tools/qmake/config.tests/gnuld/main.cpp
+++ /dev/null
@@ -1,5 +0,0 @@
-
-int main()
-{
- return 0;
-}
diff --git a/Tools/qmake/config.tests/icu/icu.cpp b/Tools/qmake/config.tests/icu/icu.cpp
deleted file mode 100644
index c1e6c6afa..000000000
--- a/Tools/qmake/config.tests/icu/icu.cpp
+++ /dev/null
@@ -1,46 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2015 The Qt Company Ltd.
-** Contact: http://www.qt.io/licensing/
-**
-** This file is part of the config.tests of the Qt Toolkit.
-**
-** $QT_BEGIN_LICENSE:LGPL21$
-** Commercial License Usage
-** Licensees holding valid commercial Qt licenses may use this file in
-** accordance with the commercial license agreement provided with the
-** Software or, alternatively, in accordance with the terms contained in
-** a written agreement between you and The Qt Company. For licensing terms
-** and conditions see http://www.qt.io/terms-conditions. For further
-** information use the contact form at http://www.qt.io/contact-us.
-**
-** GNU Lesser General Public License Usage
-** Alternatively, this file may be used under the terms of the GNU Lesser
-** General Public License version 2.1 or version 3 as published by the Free
-** Software Foundation and appearing in the file LICENSE.LGPLv21 and
-** LICENSE.LGPLv3 included in the packaging of this file. Please review the
-** following information to ensure the GNU Lesser General Public License
-** requirements will be met: https://www.gnu.org/licenses/lgpl.html and
-** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
-**
-** As a special exception, The Qt Company gives you certain additional
-** rights. These rights are described in The Qt Company LGPL Exception
-** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
-**
-** $QT_END_LICENSE$
-**
-****************************************************************************/
-
-#include <unicode/utypes.h>
-#include <unicode/ucol.h>
-#include <unicode/ustring.h>
-
-int main(int, char **)
-{
- UErrorCode status = U_ZERO_ERROR;
- UCollator *collator = ucol_open("ru_RU", &status);
- if (U_FAILURE(status))
- return 0;
- ucol_close(collator);
- return 0;
-}
diff --git a/Tools/qmake/config.tests/icu/icu.pro b/Tools/qmake/config.tests/icu/icu.pro
deleted file mode 100644
index ce3780a33..000000000
--- a/Tools/qmake/config.tests/icu/icu.pro
+++ /dev/null
@@ -1,22 +0,0 @@
-SOURCES = icu.cpp
-CONFIG += console
-CONFIG -= qt dylib
-
-win32 {
- CONFIG(static, static|shared) {
- LIBS += $$QMAKE_LIBS_CORE
- CONFIG(debug, debug|release) {
- LIBS += -lsicuind -lsicuucd -lsicudtd
- } else {
- LIBS += -lsicuin -lsicuuc -lsicudt
- }
- } else {
- LIBS += -licuin -licuuc -licudt
- }
-} else:!contains(QT_CONFIG,no-pkg-config):packagesExist("icu-i18n") {
- PKGCONFIG += icu-i18n
-} else {
- LIBS += -licui18n -licuuc -licudata
-}
-
-load(qt_build_config)
diff --git a/Tools/qmake/config.tests/leveldb/leveldb.cpp b/Tools/qmake/config.tests/leveldb/leveldb.cpp
deleted file mode 100644
index 503a078a2..000000000
--- a/Tools/qmake/config.tests/leveldb/leveldb.cpp
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- Copyright (C) 2015 The Qt Company 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.
-*/
-
-#include <leveldb/db.h>
-#include <leveldb/env.h>
-#include <helpers/memenv/memenv.h>
-
-int main(int, char**)
-{
- leveldb::Env* inMemoryEnv = leveldb::NewMemEnv(leveldb::Env::Default());
- return !inMemoryEnv;
-}
diff --git a/Tools/qmake/config.tests/leveldb/leveldb.pro b/Tools/qmake/config.tests/leveldb/leveldb.pro
deleted file mode 100644
index f28cfd155..000000000
--- a/Tools/qmake/config.tests/leveldb/leveldb.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-SOURCES = leveldb.cpp
-OBJECTS_DIR = obj
-LIBS += -lleveldb -lmemenv
-
-load(qt_build_config)
diff --git a/Tools/qmake/config.tests/libXcomposite/libXcomposite.cpp b/Tools/qmake/config.tests/libXcomposite/libXcomposite.cpp
deleted file mode 100644
index 10e1054bd..000000000
--- a/Tools/qmake/config.tests/libXcomposite/libXcomposite.cpp
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- * 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.
- */
-
-#include <X11/extensions/Xcomposite.h>
-
-int main(int, char**)
-{
- Display* display = XOpenDisplay(0);
- int majorVersion;
- int minorVersion;
- (void)XCompositeQueryVersion(display, &majorVersion, &minorVersion);
- XCloseDisplay(display);
- return 0;
-}
diff --git a/Tools/qmake/config.tests/libXcomposite/libXcomposite.pro b/Tools/qmake/config.tests/libXcomposite/libXcomposite.pro
deleted file mode 100644
index 96c5c2937..000000000
--- a/Tools/qmake/config.tests/libXcomposite/libXcomposite.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-SOURCES = libXcomposite.cpp
-OBJECTS_DIR = obj
-LIBS += -lXcomposite -lX11
diff --git a/Tools/qmake/config.tests/libXrender/libXrender.cpp b/Tools/qmake/config.tests/libXrender/libXrender.cpp
deleted file mode 100644
index ae2455bd2..000000000
--- a/Tools/qmake/config.tests/libXrender/libXrender.cpp
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- * 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.
- */
-
-#include <X11/extensions/Xrender.h>
-
-int main(int, char**)
-{
- Display* display = XOpenDisplay(0);
- int eventBasep;
- int errorBasep;
- if (!XRenderQueryExtension(display, &eventBasep, &errorBasep))
- return -1;
- return 0;
-}
-
diff --git a/Tools/qmake/config.tests/libXrender/libXrender.pro b/Tools/qmake/config.tests/libXrender/libXrender.pro
deleted file mode 100644
index b3cb1e4b5..000000000
--- a/Tools/qmake/config.tests/libXrender/libXrender.pro
+++ /dev/null
@@ -1,3 +0,0 @@
-SOURCES = libXrender.cpp
-OBJECTS_DIR = obj
-LIBS += -lXrender -lX11
diff --git a/Tools/qmake/config.tests/libsqlite3/libsqlite3.cpp b/Tools/qmake/config.tests/libsqlite3/libsqlite3.cpp
deleted file mode 100644
index 34434d195..000000000
--- a/Tools/qmake/config.tests/libsqlite3/libsqlite3.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
- * Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
- *
- * 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 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.
- */
-
-#include <sqlite3.h>
-
-int main(int, char**)
-{
- sqlite3 *db;
- sqlite3_open("data.db", &db);
- sqlite3_close(db);
- return 0;
-}
diff --git a/Tools/qmake/config.tests/libsqlite3/libsqlite3.pro b/Tools/qmake/config.tests/libsqlite3/libsqlite3.pro
deleted file mode 100644
index 2c39c5266..000000000
--- a/Tools/qmake/config.tests/libsqlite3/libsqlite3.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-SOURCES = libsqlite3.cpp
-OBJECTS_DIR = obj
-LIBS += -lsqlite3
-
-load(qt_build_config)
diff --git a/Tools/qmake/config.tests/libwebp/libwebp.cpp b/Tools/qmake/config.tests/libwebp/libwebp.cpp
deleted file mode 100644
index 974603d3b..000000000
--- a/Tools/qmake/config.tests/libwebp/libwebp.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) Zoltan Horvath (zoltan@webkit.org) 2012 University of Szeged.
- *
- * 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 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.
- */
-
-#include "webp/decode.h"
-
-int main(int, char**)
-{
- WebPDecoderConfig config;
- WebPInitDecoderConfig(&config);
- return 0;
-}
diff --git a/Tools/qmake/config.tests/libwebp/libwebp.pro b/Tools/qmake/config.tests/libwebp/libwebp.pro
deleted file mode 100644
index 700c44df6..000000000
--- a/Tools/qmake/config.tests/libwebp/libwebp.pro
+++ /dev/null
@@ -1,5 +0,0 @@
-SOURCES = libwebp.cpp
-OBJECTS_DIR = obj
-LIBS += -lwebp
-
-load(qt_build_config)
diff --git a/Tools/qmake/config.tests/libxml2/libxml2.cpp b/Tools/qmake/config.tests/libxml2/libxml2.cpp
deleted file mode 100644
index 2117b5b41..000000000
--- a/Tools/qmake/config.tests/libxml2/libxml2.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 University of Szeged. 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 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.
- */
-
-#include <libxml/xmlreader.h>
-
-int main(int, char**)
-{
- xmlTextReaderSetup(0, 0, 0, 0, 0);
- return 0;
-}
-
diff --git a/Tools/qmake/config.tests/libxml2/libxml2.pro b/Tools/qmake/config.tests/libxml2/libxml2.pro
deleted file mode 100644
index ebeb1cbd6..000000000
--- a/Tools/qmake/config.tests/libxml2/libxml2.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG -= qt
-SOURCES = libxml2.cpp
-mac {
- QMAKE_CXXFLAGS += -iwithsysroot /usr/include/libxml2
- LIBS += -lxml2
-} else {
- PKGCONFIG += libxml-2.0
- CONFIG += link_pkgconfig
-}
diff --git a/Tools/qmake/config.tests/libxslt/libxslt.cpp b/Tools/qmake/config.tests/libxslt/libxslt.cpp
deleted file mode 100644
index a1dedb374..000000000
--- a/Tools/qmake/config.tests/libxslt/libxslt.cpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Copyright (C) 2011 University of Szeged. 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 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.
- */
-
-#include <libxslt/xsltutils.h>
-
-int main(int, char**)
-{
- xslAddCall(0, 0);
- return 0;
-}
-
diff --git a/Tools/qmake/config.tests/libxslt/libxslt.pro b/Tools/qmake/config.tests/libxslt/libxslt.pro
deleted file mode 100644
index cd25f2a83..000000000
--- a/Tools/qmake/config.tests/libxslt/libxslt.pro
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG -= qt
-SOURCES = libxslt.cpp
-mac {
- QMAKE_CXXFLAGS += -iwithsysroot /usr/include/libxslt -iwithsysroot /usr/include/libxml2
- LIBS += -lxslt
-} else {
- PKGCONFIG += libxslt
- CONFIG += link_pkgconfig
-}
diff --git a/Tools/qmake/config.tests/libzlib/libzlib.cpp b/Tools/qmake/config.tests/libzlib/libzlib.cpp
deleted file mode 100644
index 6beab57dc..000000000
--- a/Tools/qmake/config.tests/libzlib/libzlib.cpp
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2010 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.
- *
- * 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.
- */
-
-#include <zlib.h>
-
-int main(int, char**)
-{
- (void)zlibVersion();
- return 0;
-}
diff --git a/Tools/qmake/config.tests/libzlib/libzlib.pro b/Tools/qmake/config.tests/libzlib/libzlib.pro
deleted file mode 100644
index 2ffc15930..000000000
--- a/Tools/qmake/config.tests/libzlib/libzlib.pro
+++ /dev/null
@@ -1,10 +0,0 @@
-SOURCES = libzlib.cpp
-OBJECTS_DIR = obj
-CONFIG += console
-if(unix|mingw):LIBS += -lz
-else {
- isEmpty(ZLIB_LIBS): LIBS += zdll.lib
- else: LIBS += $$ZLIB_LIBS
-}
-
-load(qt_build_config)
diff --git a/Tools/qmake/dump-features.pl b/Tools/qmake/dump-features.pl
deleted file mode 100644
index f026430f0..000000000
--- a/Tools/qmake/dump-features.pl
+++ /dev/null
@@ -1,27 +0,0 @@
-#!/usr/bin/perl -w
-
-use strict;
-use warnings;
-
-use FeatureList;
-
-foreach my $feature (getFeatureOptionList())
-{
- next if $feature->{'option'} eq 'system-malloc';
-
- my $desc = $feature->{'desc'};
- $desc =~ s/^Toggle\s//;
- $desc =~ s/\ssupport$//;
- $desc = ucfirst($desc);
-
- $desc .= ' ' . '.' x (30 - length($desc));
- $desc =~ s/\s/_/g;
-
- my $define = $feature->{'define'};
- $define =~ s/^ENABLE_//;
- $define = lc($define);
-
- $desc .= "=$define";
-
- print "$desc "
-}
diff --git a/Tools/qmake/mkspecs/features/configure.prf b/Tools/qmake/mkspecs/features/configure.prf
deleted file mode 100644
index b5fb2aed8..000000000
--- a/Tools/qmake/mkspecs/features/configure.prf
+++ /dev/null
@@ -1,296 +0,0 @@
-# -------------------------------------------------------------------
-# This file does basic 'configure' style checks to determine the
-# set of enable/use/have defines and their values.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# This file is read after .qmake.cache, but before command line options,
-# which means we might have a config from a previous build.
-
-load(features)
-load(configure)
-
-WEBKIT_TOOLS_CONFIG = \
- build_drt \
- build_wtr \
- build_imagediff \
- build_test_npapi \
- build_testbrowser \
- build_minibrowser \
- build_qttestsupport
-
-defineTest(runConfigure) {
- !webkit_configured:!print_defaults {
- log($${EOL}Running configure tests...$${EOL}$${EOL})
- QMAKE_CONFIG_TESTS_DIR = $$ROOT_WEBKIT_DIR/Tools/qmake/config.tests
- CONFIG_TESTS = $$files($$QMAKE_CONFIG_TESTS_DIR/*.pro, true)
- for(test, CONFIG_TESTS) {
- test = $$basename(test)
- test ~= s/\\.pro$//
- qtCompileTest($$test)
- }
- } else {
- CONFIG += skipped_config_tests
-
- # Save and reset configuration from .qmake.cache, so that we can
- # detect changes to the configuration and abort the build.
- PREVIOUS_WEBKIT_CONFIG = $$WEBKIT_CONFIG
- unset(WEBKIT_CONFIG)
- export(PREVIOUS_WEBKIT_CONFIG)
- }
-
- # Running feature detection inside a function ensures that we only
- # export WEBKIT_CONFIG, and don not mess up any other variables.
- detectFeatures()
-
- # Set up a base list of optional things to build, which we later on
- # sanitize based on constraints of the platform.
-
- WEBKIT_CONFIG += \
- build_webkit1 \
- build_webkit2 \
- build_tests \
- $$WEBKIT_TOOLS_CONFIG
-
- # Sanatize WebKit1/WebKit2, as WebKit.pro uses these two options
- # to determine which pro-files to include. The remaining sanitazion
- # is done when finalizing configure.
-
- !qtHaveModule(widgets) {
- CONFIGURE_WARNINGS += "Missing QtWidgets module, disabling WebKit1"
- WEBKIT_CONFIG -= build_webkit1
- }
-
- # WebKit2 requires OpenGL TextureMapper, which requires 3D Graphics
- !use?(3d_graphics): WEBKIT_CONFIG -= build_webkit2
-
- export(CONFIG)
- export(WEBKIT_CONFIG)
- export(CONFIGURE_WARNINGS)
-}
-
-defineReplace(configEnabled) {
- trueValue = $$2
- isEmpty(trueValue): trueValue = yes
-
- falseValue = $$3
- isEmpty(falseValue): falseValue = no
-
- $$1: return($$trueValue)
- return($$falseValue)
-}
-
-# This is called from default_post, at which point we've also parsed
-# command line options
-defineTest(finalizeConfigure) {
-
- # Sanitize build options
- !qtHaveModule(testlib) {
- CONFIGURE_WARNINGS += "Missing QtTest module, disabling DumpRenderTree, WebKitTestRunner and tests"
- WEBKIT_CONFIG -= build_drt build_wtr build_tests
- }
-
- win32|!enable?(NETSCAPE_PLUGIN_API): WEBKIT_CONFIG -= build_test_npapi
-
- win* {
- WEBKIT_CONFIG -= build_drt
- }
-
- production_build {
- WEBKIT_CONFIG -= $$WEBKIT_TOOLS_CONFIG build_tests
- }
-
- static {
- CONFIGURE_WARNINGS += "QtWebKitQml will not be build. It is not supported with static linking"
- WEBKIT_CONFIG -= build_webkit2 build_minibrowser build_wtr
- }
-
- production_build:qnx {
- CONFIGURE_WARNINGS += "QtWebKitQml will not be build. It is not supported on QNX."
- WEBKIT_CONFIG -= build_webkit2 build_minibrowser build_wtr
- }
-
- # Sanitize clashing options
- sanitizeFeatures()
-
- print_defaults {
- log(DEFINES: $$configDefines()$${EOL})
- error(Done computing defaults)
- }
-
- # Sanity checks that would prevent us from building the whole project altogether.
- !config_icu:!osx:!use?(wchar_unicode) {
- addReasonForSkippingBuild("ICU is required.")
- }
- production_build:blackberry {
- addReasonForSkippingBuild("Build not supported on BB10.")
- }
- production_build:android {
- addReasonForSkippingBuild("Build not supported on Android.")
- }
- production_build:contains(QT_CONFIG, mirclient) {
- addReasonForSkippingBuild("Build not supported on Ubuntu Touch.")
- }
- !gnu_thin_archives:!win32-msvc2013:!mingw:contains(QT_CONFIG, static) {
- addReasonForSkippingBuild("QtWebKit cannot be built as a static library on this platform. Check your configuration in qtbase/config.summary.")
- }
- winrt: addReasonForSkippingBuild("QtWebKit is not supported on Windows Phone/Windows RT")
- requiredPrograms = gperf python perl bison ruby flex
- for(program, requiredPrograms): \
- !programExistsInPath($$program): \
- addReasonForSkippingBuild("Missing $$program from PATH")
-
- requiredModules = gui
- for(module, requiredModules): \
- !qtHaveModule($$module): \
- addReasonForSkippingBuild("QtWebKit depends on $$module for building.")
-
- # Detect changes to the configuration. Changes need a clean build.
- webkit_configured {
- added_features = $$WEBKIT_CONFIG
- added_features -= $$PREVIOUS_WEBKIT_CONFIG
-
- removed_features = $$PREVIOUS_WEBKIT_CONFIG
- removed_features -= $$WEBKIT_CONFIG
-
- !isEmpty(added_features)|!isEmpty(removed_features) {
- CONFIG += configuration_changed
- }
- }
-
- reconfigureMsg = \
- "Reconfiguration likely requires a clean build. You$${QUOTE}ve been warned!" \
- "You may execute $${QUOTE}make wipeclean$${QUOTE} to wipe the build directory."
-
- # Add target for reconfiguring the build
- reconfigure.target = reconfigure
- double_quote = $$escape_expand(\")
- reconfigure.commands = echo > .qmake.cache && $(MAKE) -f $(MAKEFILE) qmake $$EOC
- reconfigure.commands += @echo $${double_quote}WARNING: $$join(reconfigureMsg,\\n,,)\\n$${double_quote}
- QMAKE_EXTRA_TARGETS += reconfigure
- export(reconfigure.target)
- export(reconfigure.commands)
- export(QMAKE_EXTRA_TARGETS)
-
- # Add target for wiping clean the build
- wipeclean.target = wipeclean
- win_cmd_shell: wipeclean.commands = FOR /D %%p IN (*) DO rmdir "%%p" /s /q
- else: wipeclean.commands = $(COPY_FILE) $(MAKEFILE) .$(MAKEFILE) && rm -Rf * && $(MOVE) .$(MAKEFILE) $(MAKEFILE)
- QMAKE_EXTRA_TARGETS += wipeclean
- export(wipeclean.target)
- export(wipeclean.commands)
- export(QMAKE_EXTRA_TARGETS)
-
- # Print a prettified dump of the configuration, for easier debugging
- !webkit_configured|configuration_changed|buildbot {
-
- skipped_config_tests {
- log($${EOL}Skipping configure tests. Execute $${QUOTE}make reconfigure$${QUOTE} to re-run.$${EOL})
- }
-
- leftoverConfig = $$WEBKIT_CONFIG
-
- for(config, WEBKIT_CONFIG) {
- match = $$find(config, "^build_")
- !isEmpty(match) {
- build += $$replace(match, ^build_,)
- leftoverConfig -= $$config
- next()
- }
- match = $$find(config, "^have_")
- !isEmpty(match) {
- have += $$replace(match, ^have_,)
- leftoverConfig -= $$config
- next()
- }
- match = $$find(config, "^use_")
- !isEmpty(match) {
- use += $$replace(match, ^use_,)
- leftoverConfig -= $$config
- }
- }
-
- scripts_dir = $$toSystemPath($$ROOT_WEBKIT_DIR/Tools/Scripts)
- features = $$system(perl -I $${scripts_dir} -I $${scripts_dir}$${QMAKE_DIR_SEP}webkitperl $$toSystemPath($$ROOT_WEBKIT_DIR/Tools/qmake/dump-features.pl))
- for(feature, features) {
- parts = $$split(feature, =)
- desc = $$member(parts, 0, 0)
- desc ~= s/_/ /
- value = $$member(parts, 1, 1)
-
- contains(WEBKIT_CONFIG, $$value) {
- leftoverConfig -= $$value
- value = yes
- } else {
- value = no
- }
-
- featureConfiguration += "$$desc $$value$${EOL}"
- }
-
- log($${EOL}Final configuration:$${EOL}$${EOL})
-
- debug:release:debug_and_release: buildConfig = debug+release
- else: CONFIG(debug, debug|release): buildConfig = debug
- else: buildConfig = release
-
- log(Build ......................... $$build$${EOL})
- log(Configuration ................. $$buildConfig$${EOL})
- log(All-in-one files .............. $$configEnabled(use_all_in_one_files)$$EOL)
- log(GNUmake ....................... $$configEnabled(GNUmake)$$EOL)
- log(Static libs as shared ......... $$configEnabled(force_static_libs_as_shared)$$EOL)
- log(Static libs as thin archives .. $$configEnabled(gnu_thin_archives)$$EOL)
- log(Production build .............. $$configEnabled(production_build)$$EOL)
- log($$EOL)
-
- log(Have .......................... $$have$${EOL})
- log(Use ........................... $$use$${EOL})
- log(Features ...................... $${leftoverConfig}$${EOL})
- log($$EOL)
-
- for(feature, featureConfiguration) {
- log($$feature)
- }
-
- !isEmpty(CONFIGURE_WARNINGS) {
- log("$${EOL}Encountered $$size(CONFIGURE_WARNINGS) configuration warning(s):$${EOL}$${EOL}")
- for(warn, CONFIGURE_WARNINGS) {
- log(" ! $$warn$${EOL}")
- }
- }
-
- !isEmpty(skipBuildReason) {
- log("$${EOL}The WebKit build was disabled for the following reasons: $$skipBuildReason $${EOL}$${EOL}")
- SUBDIRS=
- export(SUBDIRS)
- } else {
- log("$${EOL}WebKit is now configured for building. Just run 'make'.$${EOL}$${EOL}")
- }
-
- configuration_changed {
- log(WARNING: The configuration was changed since the last build:$${EOL}$${EOL})
-
- !isEmpty(added_features): log($${TAB}Added feature(s): $${added_features}$${EOL})
- !isEmpty(removed_features): log($${TAB}Removed feature(s): $${removed_features}$${EOL})
-
- log($$join(reconfigureMsg,$${EOL},$${EOL},$${EOL}$${EOL}))
- }
- }
-
- # Cache the result for all the other project files, and for
- # the next build, so we can detect changes to the config.
- !webkit_configured|configuration_changed {
- !configuration_changed: cache(CONFIG, add, $$list(webkit_configured))
-
- msg = "$${EOL}$${LITERAL_HASH} Configuration changed $$_DATE_"
- write_file($$_QMAKE_CACHE_, msg, append)
-
- !configuration_changed {
- cache(WEBKIT_CONFIG, set, WEBKIT_CONFIG)
- } else {
- !isEmpty(added_features): cache(WEBKIT_CONFIG, add, added_features)
- !isEmpty(removed_features): cache(WEBKIT_CONFIG, sub, removed_features)
- }
- }
-}
diff --git a/Tools/qmake/mkspecs/features/default_post.prf b/Tools/qmake/mkspecs/features/default_post.prf
deleted file mode 100644
index 19313d087..000000000
--- a/Tools/qmake/mkspecs/features/default_post.prf
+++ /dev/null
@@ -1,320 +0,0 @@
-# -------------------------------------------------------------------
-# QtWebKit defaults for qmake. These rules are parsed after the
-# actual project file.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Flag that we're now done processing the project file. This allows
-# a feature to distinguish between being processed due to a load()
-# or include() and a CONFIG += feature.
-CONFIG += config_step
-
-# Enable dynamic instead of static libraries for development
-# Avoid it with debug_and_release, it can cause the application to load both the debug and release
-# dependent libraries when using frameworks on Mac.
-!production_build:!debug_and_release:!buildbot:!win*: CONFIG += force_static_libs_as_shared
-
-# Don't create .prl files for intermediate libraries because their contents get used when linking against
-# them, breaking "-Wl,-whole-archive -lMyIntermediateLib --Wl,-no-whole-archive"
-staticlib: CONFIG -= create_prl
-
-root_project_file: finalizeConfigure()
-
-# Sanitize build config for single-configuration builds
-!debug|!release {
- # Removing debug_and_release causes issues with lib suffixes when building debug on Windows.
- # Work around it by only removing build_all, and still create the Makefiles for both configurations.
- win32*: CONFIG -= build_all
- else: {
- CONFIG -= debug_and_release
- # Default to release
- !debug:!release: CONFIG += release
- }
-} else:debug_and_release {
- # Only build a single instance of each application
- contains(TEMPLATE, app):!force_build_all {
- CONFIG -= build_all
- }
-}
-
-# General default build tweaks
-DEFINES += \
- BUILDING_QT__=1
-
-CONFIG(release, debug|release): DEFINES *= NDEBUG
-
-DEFINES += $$configDefines()
-
-INCLUDEPATH += \
- $${ROOT_WEBKIT_DIR}/Source \
- $${ROOT_BUILD_DIR}/Source/include
-
-CONFIG -= warn_on
-
-gcc: QMAKE_CXXFLAGS += -fno-strict-aliasing
-
-!compiling_thirdparty_code:*-g++*: QMAKE_CXXFLAGS = \
- -Wall \
- -Wextra \
- -Wreturn-type \
- -Wchar-subscripts \
- -Wformat-security \
- -Wreturn-type \
- -Wno-unused-parameter \
- -Wno-sign-compare \
- -Wno-switch \
- -Wno-switch-enum \
- -Wundef \
- -Wmissing-noreturn \
- -Winit-self \
- $$QMAKE_CXXFLAGS
-
-# Template configurations
-contains(TEMPLATE, derived) {
- # A (mostly) no-op template
- TEMPLATE = aux
-
- # Trick qmake into not generating a default $(DEL_FILE) rule
- CONFIG += compile_libtool
-
- CONFIG -= debug_and_release
-
- fake_debug.target = debug
- fake_debug.depends = first
- QMAKE_EXTRA_TARGETS += fake_debug
- fake_release.target = release
- fake_release.depends = first
- QMAKE_EXTRA_TARGETS += fake_release
-
- # A lot of our code generators require GNU tools, readily available
- # on Linux and Mac OS X. On Windows we do have a convenience copy in
- # Qt5's top-level repository, so let's add that to the PATH if we can
- # find it.
- equals(QMAKE_HOST.os, Windows) {
- GNUTOOLS_DIR=$$[QT_HOST_DATA]/../gnuwin32/bin
- exists($$GNUTOOLS_DIR/gperf.exe) {
- GNUTOOLS = "(set $$escape_expand(\\\")PATH=$$toSystemPath($$GNUTOOLS_DIR);%PATH%$$escape_expand(\\\"))"
- }
- }
-
- for(generator, GENERATORS) {
- eval($${generator}.CONFIG = target_predeps no_link)
- eval($${generator}.dependency_type = TYPE_C)
-
- isEmpty($${generator}.output_function) {
- prependEach($${generator}.output, $${GENERATED_SOURCES_DESTDIR}/)
- }
-
- script = $$eval($${generator}.script)
- eval($${generator}.depends += $$script)
-
- commands = $$eval($${generator}.commands)
- !isEmpty(commands):!isEmpty(GNUTOOLS) {
- eval($${generator}.commands = $${GNUTOOLS} && $$val_escape($${generator}.commands))
- }
-
- !isEmpty($${generator}.input) {
- # Compiler-style generator
- QMAKE_EXTRA_COMPILERS += $$generator
- DEFAULT_TARGETS += compiler_$${generator}_make_all
- } else {
- # Regular target generator
- QMAKE_EXTRA_TARGETS += $$generator
- DEFAULT_TARGETS += $$generator
- }
- }
-} else {
- # Make sure the generated sources are compiled as well
- for(generator, GENERATORS) {
- prependEach($${generator}.extra_sources, $${GENERATED_SOURCES_DESTDIR}/)
- SOURCES += $$eval($${generator}.extra_sources)
-
- isEqual($${generator}.add_output_to_sources, false): next()
-
- output = $$eval($${generator}.output)
- input = $$eval($${generator}.input)
- input_files = $$eval($$input)
- output_variable = $$eval($${generator}.variable_out)
- isEmpty(output_variable): output_variable = SOURCES
-
- isEmpty($${generator}.output_function) {
- prependEach(output, $${GENERATED_SOURCES_DESTDIR}/)
-
- for(input_file, input_files) {
- base = $$basename(input_file)
- base ~= s/\\..+//
- output_file = $$replace(output,\\$\\{QMAKE_FILE_BASE\\}, $$base)
-
- eval($$output_variable += $$output_file)
- }
- } else {
- function = $$eval($${generator}.output_function)
- for(input_file, input_files) {
- eval(output_file = \$\$$$function\($$input_file\))
- eval($$output_variable += $$output_file)
- }
- }
- }
-}
-
-contains(QT, webkit)|contains(QT, webkitwidgets):!isEqual(MODULE, webkitwidgets): {
- # In addition to the main shared QtWebKit library we also
- # need to link to any intermediate shared libraries.
- force_static_libs_as_shared {
- WEBKIT += wtf javascriptcore webcore
- build?(webkit1): WEBKIT += webkit1
- build?(webkit2): WEBKIT += webkit2
- }
-
- # FIXME: Replace this with putting the intermediate libraries in the prl file
-}
-
-defineTest(needToLink) {
- # The main module dynamic library always needs to link in the intermediate libraries
- isEqual(MODULE, webkit): return(true)
-
- force_static_libs_as_shared {
- # So do the individual libraries if they are dynamic
- contains(libraries, $$TARGET): return(true)
-
- # Or anything that uses QtWebKit in this special config
- contains(QT, webkit)|contains(QT, webkitwidgets): return(true)
- }
-
- # Lastly, we allow apps (jsc) to link directly to the intermediate
- # libraries intead of using the exported symbols from QtWebKit.
- contains(TEMPLATE, app):!contains(QT, webkit):!contains(QT, webkitwidgets): return(true)
-
- # Anything else should just get include paths, etc, not link
- return(false)
-}
-
-# Make sure we have loaded the relevant modules, so the include paths,
-# etc, are correct, and we can use WEBKIT.foo.dependent_libs below.
-load(webkit_modules)
-
-# We might need to link against the WebKit intermediate libraries
-needToLink() {
- for(library, WEBKIT) {
- library_identifier = $$lower($$library)
- linkAgainstLibrary($$library, $$eval(WEBKIT.$${library_identifier}.root_source_dir))
- LIBS += $$eval(WEBKIT.$${library_identifier}.dependent_libs)
- }
- posix:!darwin: LIBS += -lpthread
-}
-
-creating_module {
- # Sanitize LIBS, as we don't want any of these libraries
- # to end up in as public API dependenices in the QtWebKit prl file.
- LIBS_PRIVATE += $$LIBS
- unset(LIBS)
- # Copy Qt module dependencies from QT to QT_PRIVATE to ensure the
- # Qt libraries are linked after the private static libraries that
- # depend on them
- QT_PRIVATE += $$QT
-}
-
-equals(_PRO_FILE_, $${ROOT_WEBKIT_DIR}/WebKit.pro):!isEmpty(OVERRIDE_SUBDIRS) {
- # The root WebKit project file is the only one that allows
- # you to pass a set of subtargets on the comand line.
- SUBDIRS = $$OVERRIDE_SUBDIRS
-}
-
-# Remove subdirs that do not exist
-for(subdir, SUBDIRS) {
- path = $$eval($${subdir}.file)
- isEmpty(path): path = $$eval($${subdir}.subdir)
- isEmpty(path): path = $${subdir}
- !exists($${_PRO_FILE_PWD_}$${QMAKE_DIR_SEP}$${path}) {
- #message(Removing invalid subtarget $${subdir} $${path})
- #SUBDIRS -= $${subdir}
- }
-}
-
-root_project_file {
- # Tweak documentation rules so that we only get documentation
- # for the QtWebKit subdir, which means we don't have to run
- # qmake_all and generate all the derived sources, just to
- # build documentation.
- previous_subdir =
- doc_targets = docs install_docs uninstall_docs prepare_docs generate_docs
- for(subdir, SUBDIRS) {
- equals(subdir, QtWebKit) {
- for(doc_target, doc_targets) {
- # Since we use CONFIG += ordered, we need to provide a fake dummy
- # doc-target for the immediate dependency of the QtWebKit target.
- dummy_target = sub-$$replace($${previous_subdir}.file, [^a-zA-Z0-9_], -)-$${doc_target}_ordered
- $${dummy_target}.target = $${dummy_target}
- QMAKE_EXTRA_TARGETS += $${dummy_target}
- }
- } else {
- previous_subdir = $$subdir # Save for later
-
- # For all the other subdirs, we disable docs the regular way
- for(doc_target, doc_targets): $${subdir}.CONFIG += no_$${doc_target}_target
- }
- }
-}
-
-incremental.target = incremental
-incremental.commands = $(MAKE) -f $(MAKEFILE) qmake_all && $(MAKE) -f $(MAKEFILE)
-QMAKE_EXTRA_TARGETS += incremental
-
-contains(TEMPLATE, lib) {
- # Triggers the right export macros for WebKit internals
- # (don't set for Qt modules; qt_module.prf does it)
- !creating_module: DEFINES += BUILDING_$${TARGET}
-
- # Triggers the right export macro for the QtWebKit API (see qwebkitglobal.h)
- !contains(QT, webkit)|equals(MODULE, webkitwidgets): DEFINES += BUILDING_WEBKIT
-
- # Prevent name clashes when building both debug and release. Qt5's module
- # system already takes care of this for the top level QtWebKit library.
- !qt_install_module:debug_and_release: TARGET = $$qtLibraryTarget($$TARGET)
-
- staticlib:gnu_thin_archives {
- # Replace the hardcoded archiver command line
- # options to use GNU ar's thin archive format.
- AR_COMMAND = $$split(QMAKE_AR, " ")
- QMAKE_AR = $$member(AR_COMMAND, 0) cruT
- }
-
- isEmpty(DESTDIR): DESTDIR = $$targetSubDir()
-
- DEFINES += QT_ASCII_CAST_WARNINGS
-
- !plugin {
- contains(QT_CONFIG, reduce_exports):CONFIG += hide_symbols
- unix:contains(QT_CONFIG, reduce_relocations):CONFIG += bsymbolic_functions
- }
-}
-
-# Remove duplicated sources
-SOURCES = $$unique(SOURCES)
-OBJECTIVE_SOURCES = $$unique(OBJECTIVE_SOURCES)
-
-# Someone might remove a header from the tree without touching
-# the corresponding project file, for example if the project
-# file never had the header in HEADERS. In that case we don't
-# want warnings from make about "No rule to make target".
-ignore_missing_headers.target = %.h
-ignore_missing_headers.commands = $${MAKEFILE_NOOP_COMMAND}
-QMAKE_EXTRA_TARGETS += ignore_missing_headers
-
-# Override default target
-build_pass:build_all:default_target.target = all
-else: default_target.target = first
-for(target, $$list($$unique(DEFAULT_TARGETS))) {
- default_target.depends += $$target
-}
-!isEmpty(default_target.depends): QMAKE_EXTRA_TARGETS += default_target
-
-# Qt's debug_and_release config will replace every occurance of
-# Release or Debug in the destination dir. This fails when the
-# desination dir is absolute and contains a static path component
-# that also contains either of those two words, so we make DESTDIR
-# relative.
-DESTDIR = $$replace(DESTDIR, ^$$re_escape($${ROOT_BUILD_DIR}), $${BUILD_ROOT_RELATIVE_TO_OUT_PWD})
-
-load(default_post) # Load Qt's defaults
diff --git a/Tools/qmake/mkspecs/features/default_pre.prf b/Tools/qmake/mkspecs/features/default_pre.prf
deleted file mode 100644
index 221937e85..000000000
--- a/Tools/qmake/mkspecs/features/default_pre.prf
+++ /dev/null
@@ -1,113 +0,0 @@
-# -------------------------------------------------------------------
-# QtWebKit defaults for qmake. These rules are parsed before the
-# actual project file.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Allow environment tweaks to pre-loaded .qmake.cache content
-env_cache = $$(QMAKE_CACHE_EVAL)
-eval($$env_cache)
-
-load(functions)
-
-# FIXME: In this case we probably want to exit early so that we
-# don't load all of the custom build tweaks needlessly.
-pro_file = $$_PRO_FILE_ # Checking the variable directly does not work
-isEmpty(pro_file): CONFIG += recursive_include
-
-# Resolve root directories for source and build
-ROOT_WEBKIT_DIR = $$replace(PWD, /Tools/qmake/mkspecs/features$,)
-WEBKIT_SUBDIR = $$replace(_PRO_FILE_PWD_, $$re_escape($${ROOT_WEBKIT_DIR}),)
-ROOT_BUILD_DIR = $$replace(OUT_PWD, $$re_escape($${WEBKIT_SUBDIR})$,)
-
-# Now we're ready to load default_pre from Qt
-load(default_pre)
-
-equals(OUT_PWD, $${ROOT_BUILD_DIR}) {
- !recursive_include:CONFIG += root_project_file
- BUILD_ROOT_RELATIVE_TO_OUT_PWD = .
-} else {
- subdir_parts = $$replace(OUT_PWD, ^$$re_escape($${ROOT_BUILD_DIR})/,)
- subdir_parts = $$split(subdir_parts, /)
- for(subdir, subdir_parts) {
- BUILD_ROOT_RELATIVE_TO_OUT_PWD += ..
- }
- BUILD_ROOT_RELATIVE_TO_OUT_PWD = $$join(BUILD_ROOT_RELATIVE_TO_OUT_PWD, /)
-}
-
-# Try to detect if we're running under Windows cmd.exe or not
-equals(QMAKE_DIR_SEP, \\): CONFIG += win_cmd_shell
-
-# Default location of generated sources
-GENERATED_SOURCES_DESTDIR = generated
-
-QUOTE = ""
-DOUBLE_ESCAPED_QUOTE = ""
-ESCAPE = ""
-win_cmd_shell {
- ESCAPE = "^"
-} else {
- QUOTE = "\'"
- DOUBLE_ESCAPED_QUOTE = "\\\'"
-}
-EOL = $$escape_expand(\\n)
-EOC = $$escape_expand(\\n\\t)
-TAB = $$escape_expand(\\t)
-
-MAKEFILE_NOOP_COMMAND = @echo -n
-win32-msvc*: MAKEFILE_NOOP_COMMAND = @echo >NUL
-
-# Set up a default python version
-scratchbox: PYTHON = python2.6
-else: PYTHON = python
-
-# We use private_tests to detect developer build, since the destdir will
-# always be our webkit build dir. This might change as configure changes.
-contains(QT_CONFIG, private_tests): CONFIG += qt_developer_build
-
-# By default we enable "production build", and build-webkit, which is
-# used by bots and developers, will disable it, to enable warnings etc.
-CONFIG += production_build
-
-# Run configure before making decisions that depend on the result
-root_project_file {
- load(configure)
- runConfigure()
-}
-
-unix:config_gccdepends {
- # We have a compiler that supports the -MD option (and neither
- # teambuilder nor icecream is messing up the .d file output).
- CONFIG += GNUmake gcc_MD_depends
-}
-
-# Set some defaults for specific platforms
-CONFIG += include_webinspector
-
-# Make sure we process the PKGCONFIG variable if applicable
-!mac: CONFIG += link_pkgconfig
-
-# Make sure the static libraries are compiled with the same C++11 setting
-# as the module will be linked with. This is particular important on mac
-# since otherwise the libraries can be compiled against libstdc++, but
-# linked against libc++.
-contains(QT_CONFIG, c++11): CONFIG += c++11
-
-# Limit the creation of thin archives to Linux, since only GNU's ar supports it.
-!debug_and_release:linux: CONFIG += gnu_thin_archives
-
-# The Gold linker breaks transition between JIT and LLInt due to thumb-state mismatch.
-gcc:isEqual(QT_ARCH, "arm"): CONFIG -= use_gold_linker
-
-# Pick up Qt's defaults for debug/release/debug_and_release
-if(win32|mac):!macx-xcode {
- contains(QT_CONFIG, simulator_and_device): CONFIG += simulator_and_device
- contains(QT_CONFIG, debug_and_release): CONFIG += debug_and_release
- contains(QT_CONFIG, build_all): CONFIG += build_all
-}
-
-FLEX = flex
-
-BIN_EXTENSION =
-win32: BIN_EXTENSION = .exe
diff --git a/Tools/qmake/mkspecs/features/features.prf b/Tools/qmake/mkspecs/features/features.prf
deleted file mode 100644
index 21286be2e..000000000
--- a/Tools/qmake/mkspecs/features/features.prf
+++ /dev/null
@@ -1,189 +0,0 @@
-# -------------------------------------------------------------------
-# This file does basic 'configure' style checks to determine the
-# set of enable/use/have defines and their values.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-defineTest(detectFeatures) {
-
- # -------------- Fill in static defaults --------------
-
- include(features.pri)
-
- for(feature, FEATURE_DEFAULTS) {
- enabledFeature = $$find(feature, =1$)
- !isEmpty(enabledFeature) {
- line ~= s/^.+include \"(.*)\"/\\1/
- enabledFeature ~= s/=1$//
- enabledFeature ~= s/^ENABLE_//
- WEBKIT_CONFIG += $$lower($$enabledFeature)
- }
- }
-
- WEBKIT_CONFIG += use_tiled_backing_store
- WEBKIT_CONFIG += use_cross_platform_context_menus
-
- # ------------- Prepare for feature detection -------------
-
- # ---------- Dynamically detect optional features -------------
- #
- # Please note: static feature defaults go in features.pri
- #
-
- qtHaveModule(quick): WEBKIT_CONFIG += have_qtquick
- else: CONFIGURE_WARNINGS += "QtQuick module not found, QML APIs will not be built"
-
- qtHaveModule(printsupport): WEBKIT_CONFIG += have_qtprintsupport
- qtHaveModule(widgets): WEBKIT_CONFIG += have_qstyle
- qtHaveModule(testlib): WEBKIT_CONFIG += have_qttestlib
- qtHaveModule(positioning): WEBKIT_CONFIG += have_qtpositioning
- qtHaveModule(sensors): WEBKIT_CONFIG += have_qtsensors
-
- config_libxml2: WEBKIT_CONFIG += use_libxml2
- config_libxslt: WEBKIT_CONFIG += xslt
- config_libzlib: WEBKIT_CONFIG += use_zlib
- config_libwebp: WEBKIT_CONFIG += use_webp
- config_leveldb: WEBKIT_CONFIG += use_system_leveldb
-
- # We can't use Qt's 3rdparty sources for libjpeg and libpng outside of qtbase, but if Qt
- # is using the system libraries, use them to take advantage of the WebCore image decoders as well.
- contains(QT_CONFIG, system-jpeg): WEBKIT_CONFIG += use_libjpeg
- else: CONFIGURE_WARNINGS += "Qt not configured to use system libjpeg, QImageDecoder will decode JPEG images"
-
- contains(QT_CONFIG, system-png): WEBKIT_CONFIG += use_libpng
- else: CONFIGURE_WARNINGS += "Qt not configured to use system libpng, QImageDecoder will decode PNG images"
-
- linux-* {
- config_libXcomposite: WEBKIT_CONFIG += have_xcomposite
- config_libXrender: WEBKIT_CONFIG += have_xrender
-
- config_glx:!contains(QT_CONFIG, opengles2): WEBKIT_CONFIG += have_glx
-
- # We need fontconfig to set up the test fonts for DumpRenderTree and WebKitTestRunner.
- config_fontconfig: WEBKIT_CONFIG += have_fontconfig
- }
-
- # Nescape plugins support (NPAPI)
- xlibAvailable() {
- WEBKIT_CONFIG += \
- netscape_plugin_api \
- use_plugin_backend_xlib
-
- # WebKit2
- WEBKIT_CONFIG += \
- plugin_architecture_x11 \
- plugin_process
-
- } else: mac|win32 {
- WEBKIT_CONFIG += netscape_plugin_api
- # WebKit2
- WEBKIT_CONFIG += plugin_architecture_unsupported
- } else {
- WEBKIT_CONFIG += plugin_architecture_unsupported
- }
-
- # Enable the USE(3D_GRAPHICS) flag when QtOpenGL is enabled.
- # Disable on Windows CE for now, as ANGLE won't compile.
- !wince*:contains(QT_CONFIG, opengl): WEBKIT_CONFIG += use_3d_graphics
-
- # Temporarily disable FTPDIR on Windows CE (missing functions from time.h)
- wince* {
- WEBKIT_CONFIG -= ftpdir
- }
-
- # WebGL support - only enabled if we can use 3D graphics
- use?(3d_graphics): WEBKIT_CONFIG += webgl
-
- # Both desktop and GLES2 support (only on Windows at this point)
- contains(QT_CONFIG, dynamicgl): WEBKIT_CONFIG += have_dynamicgl
-
- # HTML5 Media Support for builds with GStreamer
- unix:!mac:!contains(QT_CONFIG, no-pkg-config) {
- packagesExist("glib-2.0 gio-2.0 gstreamer-1.0 gstreamer-plugins-base-1.0") {
- WEBKIT_CONFIG += video use_gstreamer
- } else: packagesExist("glib-2.0 gio-2.0 \'gstreamer-0.10 >= 0.10.30\' \'gstreamer-plugins-base-0.10 >= 0.10.30\'") {
- WEBKIT_CONFIG += video use_gstreamer use_gstreamer010
- }
- use?(gstreamer): WEBKIT_CONFIG += use_native_fullscreen_video
- }
-
- !enable?(video):qtHaveModule(multimediawidgets) {
- WEBKIT_CONFIG += video use_qt_multimedia
- }
-
- !enable?(video) {
- CONFIGURE_WARNINGS += "Missing GStreamer or QtMultimedia, disabling HTML5 media element support"
- }
-
- # Try to use an system wide SQlite installation
- if(!contains(QT_CONFIG, no-pkg-config):packagesExist("sqlite3"))|config_libsqlite3 {
- WEBKIT_CONFIG += have_sqlite3
- } else {
- SQLITE3SRCDIR = $$(SQLITE3SRCDIR)
- isEmpty(SQLITE3SRCDIR):isEmpty(_QMAKE_SUPER_CACHE_): error("WebKit requires SQLite. Either make it available via pkg-config, set $SQLITE3SRCDIR or build WebKit under qt5.git.")
- }
-
- # Gamepad API Support (depends on udev and linux/joystick.h)
- linux:!android: WEBKIT_CONFIG += gamepad
-
- # Support for Graphics Surface
- # GraphicsSurface requires GraphicsContext3D and hence use_3d_graphics
- # FIXME: GraphicsSurface do not work with dynamicgl at this point.
- use?(3d_graphics):!have?(dynamicgl) {
- mac: WEBKIT_CONFIG += use_graphics_surface
- win32:contains(QT_CONFIG, opengles2): WEBKIT_CONFIG += use_graphics_surface
- have?(glx):have?(xcomposite):have?(xrender): WEBKIT_CONFIG += use_graphics_surface use_glx
- }
-
- # IndexedDB requires leveldb
- enable?(indexed_database): WEBKIT_CONFIG += use_leveldb
-
- export(WEBKIT_CONFIG)
- export(CONFIGURE_WARNINGS)
-}
-
-# ---------------- Sanitize features -------------------
-
-defineTest(sanitizeFeatures) {
- # If we are doing a production_build we should only enable Geolocation support if QtPositioning exists. In developer builds we can use Mock implementations.
- production_build:!have?(qtpositioning): WEBKIT_CONFIG -= geolocation
-
- # If we are doing a production_build we should only enable Orientation support if QtSensors exists. In developer builds we can use Mock implementations.
- production_build:!have?(qtsensors): WEBKIT_CONFIG -= orientation_events device_orientation
-
- # Disable SVG fonts if SVG is disabled
- !enable?(svg): WEBKIT_CONFIG -= svg_fonts
-
- # JavaScript debugger requires the inspector
- !enable?(inspector): WEBKIT_CONFIG -= javascript_debugger inspector_server
-
- # Disable animated smooth scrolling if request-animation-frame is disabled
- !enable?(request_animation_frame): WEBKIT_CONFIG -= smooth_scrolling
-
- # WK2's plugin process code requires NPAPI
- !enable?(netscape_plugin_api): WEBKIT_CONFIG -= plugin_process
-
- # Web Audio requires GStreamer.
- !use?(gstreamer): WEBKIT_CONFIG -= web_audio
-
- # GStreamer uses Glib
- use?(gstreamer): WEBKIT_CONFIG += use_glib
-
- # LevelDB is not needed without indexed_database
- !enable?(indexed_database): WEBKIT_CONFIG -= use_leveldb
-
- # VideoTrack requires video
- !enable?(video): WEBKIT_CONFIG -= video_track
-
- # QtTestBrowser and MiniBrowser must be able to query for QtTestSupport
- build?(qttestsupport): WEBKIT_CONFIG += have_qttestsupport
-
- # Accelerated 2D canvas uses 3D graphics support.
- !use?(3d_graphics): WEBKIT_CONFIG -= accelerated_2d_canvas
-
- # Touch slider requires touch events
- !enable?(touch_events): WEBKIT_CONFIG -= touch_slider
-
- export(WEBKIT_CONFIG)
-}
diff --git a/Tools/qmake/mkspecs/features/features.pri b/Tools/qmake/mkspecs/features/features.pri
deleted file mode 100644
index ba18b354d..000000000
--- a/Tools/qmake/mkspecs/features/features.pri
+++ /dev/null
@@ -1,129 +0,0 @@
-# -------------------------------------------------------------------
-# This file contains a static list of default values for all the
-# ENABLE_FOO features of WebKit.
-#
-# If a feature is enabled, it most likely does not have any detection
-# in features.prf except basic sanitazion. If a feature is disabled it
-# will have detection in features.prf, unless it's something we
-# completely disable.
-#
-# FIXME: Add warning about auto-generating when Features.py land
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-FEATURE_DEFAULTS = \
- ENABLE_3D_RENDERING=1 \
- ENABLE_ACCELERATED_2D_CANVAS=1 \
- ENABLE_BATTERY_STATUS=0 \
- ENABLE_BLOB=1 \
- ENABLE_CANVAS_PATH=1 \
- ENABLE_CANVAS_PROXY=0 \
- ENABLE_CHANNEL_MESSAGING=1 \
- ENABLE_CSP_NEXT=0 \
- ENABLE_CSS_BOX_DECORATION_BREAK=1 \
- ENABLE_CSS_COMPOSITING=1 \
- ENABLE_CSS_EXCLUSIONS=1 \
- ENABLE_CSS_FILTERS=1 \
- ENABLE_CSS_GRID_LAYOUT=0 \
- ENABLE_CSS_HIERARCHIES=0 \
- ENABLE_CSS_IMAGE_ORIENTATION=0 \
- ENABLE_CSS_IMAGE_RESOLUTION=0 \
- ENABLE_CSS_IMAGE_SET=1 \
- ENABLE_CSS_REGIONS=1 \
- ENABLE_CSS_SHADERS=0 \
- ENABLE_CSS_SHAPES=1 \
- ENABLE_CSS_STICKY_POSITION=1 \
- ENABLE_CSS_TRANSFORMS_ANIMATIONS_UNPREFIXED=1 \
- ENABLE_CSS_VARIABLES=0 \
- ENABLE_CSS3_CONDITIONAL_RULES=0 \
- ENABLE_CSS3_TEXT=0 \
- ENABLE_CSS3_TEXT_LINE_BREAK=0 \
- ENABLE_DASHBOARD_SUPPORT=0 \
- ENABLE_DATAGRID=0 \
- ENABLE_DATALIST_ELEMENT=1 \
- ENABLE_DATA_TRANSFER_ITEMS=0 \
- ENABLE_DETAILS_ELEMENT=1 \
- ENABLE_DEVICE_ORIENTATION=1 \
- ENABLE_DIRECTORY_UPLOAD=0 \
- ENABLE_DOWNLOAD_ATTRIBUTE=1 \
- ENABLE_FAST_MOBILE_SCROLLING=1 \
- ENABLE_FILE_SYSTEM=0 \
- ENABLE_FILTERS=1 \
- ENABLE_FONT_LOAD_EVENTS=0 \
- ENABLE_FTPDIR=1 \
- ENABLE_FULLSCREEN_API=1 \
- ENABLE_GAMEPAD=0 \
- ENABLE_GEOLOCATION=1 \
- ENABLE_GESTURE_EVENTS=1 \
- ENABLE_HIGH_DPI_CANVAS=0 \
- ENABLE_ICONDATABASE=1 \
- ENABLE_IFRAME_SEAMLESS=1 \
- ENABLE_INDEXED_DATABASE=1 \
- ENABLE_INPUT_SPEECH=0 \
- ENABLE_INPUT_TYPE_COLOR=1 \
- ENABLE_INPUT_TYPE_DATE=0 \
- ENABLE_INPUT_TYPE_DATETIME_INCOMPLETE=0 \
- ENABLE_INPUT_TYPE_DATETIMELOCAL=0 \
- ENABLE_INPUT_TYPE_MONTH=0 \
- ENABLE_INPUT_TYPE_TIME=0 \
- ENABLE_INPUT_TYPE_WEEK=0 \
- ENABLE_INSPECTOR=1 \
- ENABLE_INSPECTOR_SERVER=1 \
- ENABLE_JAVASCRIPT_DEBUGGER=1 \
- ENABLE_LEGACY_CSS_VENDOR_PREFIXES=0 \
- ENABLE_LEGACY_NOTIFICATIONS=1 \
- ENABLE_LEGACY_VIEWPORT_ADAPTION=1 \
- ENABLE_LEGACY_VENDOR_PREFIXES=1 \
- ENABLE_LEGACY_WEB_AUDIO=1 \
- ENABLE_LINK_PREFETCH=1 \
- ENABLE_MATHML=0 \
- ENABLE_MEDIA_SOURCE=0 \
- ENABLE_MEDIA_STATISTICS=0 \
- ENABLE_MEDIA_STREAM=0 \
- ENABLE_METER_ELEMENT=1 \
- ENABLE_MHTML=1 \
- ENABLE_MICRODATA=0 \
- ENABLE_MOUSE_CURSOR_SCALE=0 \
- ENABLE_NAVIGATOR_CONTENT_UTILS=0 \
- ENABLE_NETSCAPE_PLUGIN_API=0 \
- ENABLE_NETWORK_INFO=0 \
- ENABLE_NOSNIFF=0 \
- ENABLE_NOTIFICATIONS=1 \
- ENABLE_ORIENTATION_EVENTS=1 \
- ENABLE_PAGE_VISIBILITY_API=1 \
- ENABLE_PROGRESS_ELEMENT=1 \
- ENABLE_PROXIMITY_EVENTS=0 \
- ENABLE_QUOTA=0 \
- ENABLE_RESOLUTION_MEDIA_QUERY=1 \
- ENABLE_RESOURCE_TIMING=0 \
- ENABLE_REQUEST_ANIMATION_FRAME=1 \
- ENABLE_SCRIPTED_SPEECH=0 \
- ENABLE_SECCOMP_FILTERS=0 \
- ENABLE_SHADOW_DOM=0 \
- ENABLE_SHARED_WORKERS=1 \
- ENABLE_SMOOTH_SCROLLING=1 \
- ENABLE_SQL_DATABASE=1 \
- ENABLE_STYLE_SCOPED=0 \
- ENABLE_SUBPIXEL_LAYOUT=1 \
- ENABLE_SVG=1 \
- ENABLE_SVG_FONTS=1 \
- ENABLE_TEMPLATE_ELEMENT=0 \
- ENABLE_TEXT_AUTOSIZING=0 \
- ENABLE_THREADED_HTML_PARSER=0 \
- ENABLE_TOUCH_ADJUSTMENT=1 \
- ENABLE_TOUCH_EVENTS=1 \
- ENABLE_TOUCH_ICON_LOADING=0 \
- ENABLE_TOUCH_SLIDER=1 \
- ENABLE_USER_TIMING=0 \
- ENABLE_VIBRATION=0 \
- ENABLE_VIDEO=0 \
- ENABLE_VIDEO_TRACK=1 \
- ENABLE_VIEW_MODE_CSS_MEDIA=1 \
- ENABLE_WEBGL=0 \
- ENABLE_WEB_AUDIO=0 \
- ENABLE_WEB_SOCKETS=1 \
- ENABLE_WEB_TIMING=1 \
- ENABLE_WORKERS=1 \
- ENABLE_XHR_TIMEOUT=1 \
- ENABLE_XSLT=0 \
diff --git a/Tools/qmake/mkspecs/features/force_static_libs_as_shared.prf b/Tools/qmake/mkspecs/features/force_static_libs_as_shared.prf
deleted file mode 100644
index c337cda6f..000000000
--- a/Tools/qmake/mkspecs/features/force_static_libs_as_shared.prf
+++ /dev/null
@@ -1,22 +0,0 @@
-# -------------------------------------------------------------------
-# Feature to allow speeding up link times for debug builds by avoiding
-# re-linking the static libraries into the one big shared library.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-contains(TEMPLATE, lib) {
- contains(CONFIG, staticlib) {
- CONFIG -= hide_symbols
- CONFIG -= staticlib
- CONFIG += rpath
- QMAKE_CXXFLAGS -= $$QMAKE_CXXFLAGS_HIDESYMS
- QMAKE_CFLAGS -= $$QMAKE_CFLAGS_HIDESYMS
- QMAKE_LFLAGS -= $$QMAKE_LFLAGS_HIDESYMS
- QMAKE_OBJECTIVE_CFLAGS -= $$QMAKE_OBJECTIVE_CFLAGS_HIDESYMS
- DESTDIR = $${ROOT_BUILD_DIR}/lib
-
- # Ensure the install-name of the libraries are correct on Mac OS
- macx: QMAKE_LFLAGS_SONAME = $$QMAKE_LFLAGS_SONAME$${DESTDIR}/
- }
-}
diff --git a/Tools/qmake/mkspecs/features/functions.prf b/Tools/qmake/mkspecs/features/functions.prf
deleted file mode 100644
index dc0c78f97..000000000
--- a/Tools/qmake/mkspecs/features/functions.prf
+++ /dev/null
@@ -1,405 +0,0 @@
-# -------------------------------------------------------------------
-# This file defines a few useful functions that are exposed to the
-# real project files.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-defineReplace(toSanitizedPath) {
- path = $$1
- win32-msvc*|wince* {
- components = $$split(path, :)
- count(components, 2): path = $$lower($$first(components)):$$last(components)
- return($$replace(path, \\\\, /))
- } else {
- return($$path)
- }
-}
-
-defineReplace(toSystemPath) {
- return($$replace(1, [/\\\\], $${QMAKE_DIR_SEP}))
-}
-
-defineReplace(toEvaluatablePath) {
- return($$replace(1, \\\\, \\\\\\\\))
-}
-
-defineReplace(targetSubDir) {
- # The paths to the elements of the thin archive are stored
- # relative to the archive itself, thus we have to prevent
- # qmake from moving the archive after creation.
- gnu_thin_archives: return()
- else: CONFIG(debug, debug|release): return(debug)
- else: return(release)
-}
-
-defineReplace(computeSubdirVariables) {
- unset(subdir)
- subdir = $$1
-
- scope = $$subdir
- path = $$eval($${subdir}.file)
- isEmpty(path): path = $$eval($${subdir}.subdir)
- isEmpty(path) {
- path = $${subdir}
- # We can't use scope as a variable scope, so unset it for
- # now and we'll compute a new scope based on the target.
- unset(scope)
- }
-
- # Technically this could be a directory, but we assume sane naming.
- is_file = $$find(path, \\.pr[io]$)
- isEmpty(is_file) {
- subdirectory = $$path
- } else {
- subdirectory = $$dirname(path)
- filename = $$basename(path)
- }
-
- # Make directory relative
- !isEmpty(subdirectory):subdirectory = $$replace(subdirectory, ^$$re_escape($${_PRO_FILE_PWD_})/,)
-
- !isEmpty(subdirectory) {
- subdir_command = cd $$toSystemPath($${subdirectory}$${QMAKE_DIR_SEP}) &&
- }
-
- target = $$eval($${subdir}.target)
- isEmpty(target) {
- sanitizedPath = $$toSanitizedPath($$path)
- target = sub-$$replace(sanitizedPath, [^a-zA-Z0-9_], -)
- }
-
- isEmpty(scope): scope = $$target
-
- makefile = $$eval($${subdir}.makefile)
- isEmpty(makefile) {
- !isEmpty(filename) {
- filebase = $$replace(filename, \\..*$,)
- dirbase = $$basename(subdirectory)
- !equals(filebase, $$dirbase) {
- makefile = $(MAKEFILE).$$filebase
- } else {
- makefile = $(MAKEFILE)
- }
- } else {
- makefile = $(MAKEFILE)
- }
- }
-
- subdir_command = $$toEvaluatablePath($$subdir_command)
- eval($${scope}.subdir_command = $$subdir_command)
- export($${scope}.subdir_command)
-
- eval($${scope}.target = $$target)
- export($${scope}.target)
-
- eval($${scope}.makefile = $$makefile)
- export($${scope}.makefile)
-
- return($$scope)
-}
-
-# Qmake has QMAKE_FILE_IN_PATH, but nothing for the out file
-# This allows you do do ${QMAKE_FUNC_FILE_OUT_PATH}
-defineReplace(PATH) {
- return($$dirname(1))
-}
-
-# We need both versions, in case the first one returns an empty string
-defineReplace(FILE_OUT_PATH) {
- return($$dirname(2))
-}
-
-# addStrictSubdirOrderBetween(firstSubdir, secondSubdir)
-defineTest(addStrictSubdirOrderBetween) {
- unset(firstSubdir)
- unset(secondSubdir)
-
- firstSubdir = $$1
- secondSubdir = $$2
-
- firstVariables = $$computeSubdirVariables($${firstSubdir})
- secondVariables = $$computeSubdirVariables($${secondSubdir})
-
- !contains(TEMPLATE, subdirs) {
- error("Strict subdir dependencies can only be used with subdirs template")
- }
-
- firstSubdirFile = $$eval($${firstSubdir}.file)
- secondSubdirFile = $$eval($${secondSubdir}.file)
-
- isEmpty(firstSubdirFile)|isEmpty(secondSubdirFile) {
- error("Missing subdir file ($$firstSubdirFile, $$secondSubdirFile)")
- }
-
- # Make sure the order is right
- SUBDIRS -= $$secondSubdir
- SUBDIRS += $$secondSubdir
- NO_RECURSIVE_QMAKE_SUBDIRS += $$firstSubdir $$secondSubdir
- CONFIG *= ordered
-
- first_base_target = sub-$$replace(firstSubdirFile, [^a-zA-Z0-9_], -)
- second_base_target = sub-$$replace(secondSubdirFile, [^a-zA-Z0-9_], -)
-
- # Use a custom target for making the derived sources, as the default target
- # will do 'test -f $(MAKEFILE).DerivedSources || $(QMAKE) ...', which clashes
- # with the qmake-run of the -qmake_all target, and we end up with a race
- # and potentially half-written makefiles. The custom target depends explicitly
- # on -qmake_all, to ensure that we have a makefile, and then calls make.
- derived_make_for_qmake = $${first_base_target}-make_for_qmake
- eval($${derived_make_for_qmake}.depends = $${first_base_target}-qmake_all)
- eval($${derived_make_for_qmake}.commands = $(MAKE) -f $$eval($${firstSubdir}.makefile))
- QMAKE_EXTRA_TARGETS += $${derived_make_for_qmake}
-
- # This target ensures that running "make qmake_all" will force both qmake and make
- # to be run on the derived sources before running qmake on the target, so that
- # qmake can pick up the right dependencies for the target based on the derived
- # sources that were generated.
- target_make_qmake = $${second_base_target}-qmake_all
- eval($${target_make_qmake}.depends = $${derived_make_for_qmake})
- QMAKE_EXTRA_TARGETS += $${target_make_qmake}
-
- # Make things work even if qmake -r is used.
- CONFIG += dont_recurse
-
- export(SUBDIRS)
- export(NO_RECURSIVE_QMAKE_SUBDIRS)
- export(CONFIG)
- export($${target_make_qmake}.target)
- export($${target_make_qmake}.depends)
- export($${derived_make_for_qmake}.depends)
- export($${derived_make_for_qmake}.commands)
- export(QMAKE_EXTRA_TARGETS)
- return(true)
-}
-
-# Check if we have the given Qt version. The major version needs
-# to be exact, the minor and patch version is same or higher
-defineTest(haveQt) {
- count(ARGS, 1, lessThan)|count(ARGS, 3, greaterThan) {
- error("Unexpected number of arguments: haveQt($$ARGS)")
- }
-
- !equals(QT_MAJOR_VERSION, $$1): return(false)
-
- count(ARGS, 1, greaterThan) {
- lessThan(QT_MINOR_VERSION, $$2): return(false)
- greaterThan(QT_MINOR_VERSION, $$2): return(true)
-
- count(ARGS, 2, greaterThan) {
- lessThan(QT_PATCH_VERSION, $$3): return(false)
- greaterThan(QT_PATCH_VERSION, $$3): return(true)
- }
- }
-
- return(true)
-}
-
-defineTest(programExistsInPath) {
- equals(QMAKE_HOST.os, Windows): program = $${1}.exe
- else: program = $$1
-
- PATH = "$$(PATH)"
- paths=$$split(PATH, $$QMAKE_DIRLIST_SEP)
-
- GNUTOOLS_DIR=$$[QT_HOST_DATA]/../gnuwin32/bin
- exists($$GNUTOOLS_DIR): paths += $$GNUTOOLS_DIR
-
- for(p, paths): exists($$p/$$program):return(true)
- return(false)
-}
-
-defineTest(addReasonForSkippingBuild) {
- skipBuildReason = "$$skipBuildReason$${EOL} * $$1"
- export(skipBuildReason)
-}
-
-defineTest(prependEach) {
- unset(variable)
- unset(prefix)
-
- variable = $$1
- prefix = $$2
-
- original_values = $$unique($$variable)
-
- for(value, original_values) {
- values += $${prefix}$${value}
- }
-
- eval($$variable = $$values)
- export($$variable)
-
- return(true)
-}
-
-defineReplace(resolveFinalLibraryName) {
- !debug_and_release: return($$1)
-
- original_framework_name = $$QMAKE_FRAMEWORK_BUNDLE_NAME
-
- TEMPLATE = lib # So that qtLibraryTarget works
- target = $$qtLibraryTarget($$1)
-
- # qtLibraryTarget will export QMAKE_FRAMEWORK_BUNDLE_NAME, which gets
- # exported not only to this function scope, but to our call site.
- QMAKE_FRAMEWORK_BUNDLE_NAME = $$original_framework_name
- export(QMAKE_FRAMEWORK_BUNDLE_NAME)
-
- return($$target)
-}
-
-defineTest(linkAgainstLibrary) {
- unset(target)
- target = $$1
-
- unset(source_dir)
- source_dir = $$2
-
- library = $$lower($$target)
-
- target = $$resolveFinalLibraryName($$target)
-
- path = $$replace(source_dir, $$re_escape($${ROOT_WEBKIT_DIR}), $${ROOT_BUILD_DIR})/$$targetSubDir()
-
- force_static_libs_as_shared {
- LIBS += -L$${ROOT_BUILD_DIR}/lib -l$$target
- } else {
-
- mac {
- LIBS += -Wl,-force_load,$${path}$${QMAKE_DIR_SEP}lib$${target}.a
- } else:win32-msvc*|wince*|win32-icc {
- LIBS += -l$$target
- QMAKE_LFLAGS += /OPT:REF
- } else {
- CONFIG *= no_smart_library_merge
- LIBS += -Wl,-whole-archive -l$$target -Wl,-no-whole-archive
- }
-
- LIBS += -L$$path
-
- win32-msvc*|wince*|win32-icc {
- POST_TARGETDEPS += $${path}$${QMAKE_DIR_SEP}$${target}.lib
- } else {
- POST_TARGETDEPS += $${path}$${QMAKE_DIR_SEP}lib$${target}.a
- }
- }
-
- export(LIBS)
- export(QMAKE_LIBDIR)
- export(POST_TARGETDEPS)
- export(CONFIG)
- return(true)
-}
-
-defineTest(xlibAvailable) {
- contains(QT_CONFIG, xcb-xlib) {
- return(true)
- } else {
- return(false)
- }
-}
-
-defineTest(build?) {
- contains(WEBKIT_CONFIG, build_$$lower($$1)): return(true)
- return(false)
-}
-
-defineTest(have?) {
- contains(WEBKIT_CONFIG, have_$$lower($$1)): return(true)
- return(false)
-}
-
-defineTest(use?) {
- contains(WEBKIT_CONFIG, use_$$lower($$1)): return(true)
- return(false)
-}
-
-defineTest(enable?) {
- contains(WEBKIT_CONFIG, $$lower($$1)): return(true)
- return(false)
-}
-
-# Used by configDefines below
-include(features.pri)
-
-# Turn Webkit config into defines
-defineReplace(configDefines) {
- unset(defines)
-
- args = $$split(1, |)
-
- possible_args = enable have use plugin_architecture
- !isEmpty(args) {
- for(arg, possible_args): contains(args, $$arg): CONFIG += $$arg
- } else {
- CONFIG += $$possible_args
- }
-
- for(config, WEBKIT_CONFIG) {
- match = $$find(config, "^build_")
- !isEmpty(match) {
- # We don't translate build_ to defines
- next()
- }
- match = $$find(config, "^have_")
- !isEmpty(match) {
- have: defines += $$upper($$config)=1
- next()
- }
- match = $$find(config, "^plugin_architecture_")
- !isEmpty(match) {
- plugin_architecture: defines += $$upper($$config)=1
- next()
- }
- equals(config, "use_system_malloc") {
- use: defines += $$upper($$config)=1
- next()
- }
- match = $$find(config, "^use_")
- !isEmpty(match) {
- use: defines += WTF_$$upper($$config)=1
- next()
- }
-
- enable: defines += ENABLE_$$upper($$config)=1
- }
-
- # To prevent clashes with Platform.h, we have to explicitly
- # disable features that are not enabled.
- for(define, FEATURE_DEFAULTS) {
- anyFeatureDefine = $$find(define, =.$)
- isEmpty(anyFeatureDefine): next()
-
- enabledFeature = $$replace(anyFeatureDefine, =.$, =1)
- disabledFeature = $$replace(anyFeatureDefine, =.$, =0)
-
- !contains(defines, $$enabledFeature) {
- defines += $$disabledFeature
- }
- }
-
- return($$defines)
-}
-
-defineReplace(javascriptFeatureDefines) {
- defines = LANGUAGE_JAVASCRIPT=1 $$configDefines(enable)
-
- # Omit disabled features when generating bindings to shrink the
- # generator's command line on Windows.
- disabledFeatures = $$find(defines, ^.+=0$)
- for (disabledFeature, disabledFeatures) {
- defines -= $$disabledFeature
- }
-
- return($$defines)
-}
-
-defineReplace(setEnvironmentVariable) {
- variable = $$1
- value = $$2
- win_cmd_shell {
- return((set \"$$variable=$$value\"))
- }
- return(export \"$$variable=$$value\")
-}
diff --git a/Tools/qmake/mkspecs/features/gprof.prf b/Tools/qmake/mkspecs/features/gprof.prf
deleted file mode 100644
index 51b78c3b0..000000000
--- a/Tools/qmake/mkspecs/features/gprof.prf
+++ /dev/null
@@ -1,11 +0,0 @@
-# -------------------------------------------------------------------
-# This optional feature file adds rules that make running gprof
-# on QtWebKit easier.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-build?(webkit2): error("WebKit2 is not supported with gprof")
-
-QMAKE_CXXFLAGS += -pg
-QMAKE_LFLAGS += -pg
diff --git a/Tools/qmake/mkspecs/features/icc.prf b/Tools/qmake/mkspecs/features/icc.prf
deleted file mode 100644
index e9bfddd1c..000000000
--- a/Tools/qmake/mkspecs/features/icc.prf
+++ /dev/null
@@ -1,8 +0,0 @@
-# -------------------------------------------------------------------
-# This optional feature file adds rules that compile using Intel
-# compiler easier.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-QMAKE_CXXFLAGS += -wd68,161,175,177,239,411,654,864,873,1125,2089,2196
diff --git a/Tools/qmake/mkspecs/features/mac/default_post.prf b/Tools/qmake/mkspecs/features/mac/default_post.prf
deleted file mode 100644
index 1578a7039..000000000
--- a/Tools/qmake/mkspecs/features/mac/default_post.prf
+++ /dev/null
@@ -1,10 +0,0 @@
-# -------------------------------------------------------------------
-# Mac OS X specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# We don't want verify and other platform macros to pollute the namespace
-DEFINES += __ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0
-
-load(default_post)
diff --git a/Tools/qmake/mkspecs/features/mac/default_pre.prf b/Tools/qmake/mkspecs/features/mac/default_pre.prf
deleted file mode 100644
index 657bbc436..000000000
--- a/Tools/qmake/mkspecs/features/mac/default_pre.prf
+++ /dev/null
@@ -1,12 +0,0 @@
-# -------------------------------------------------------------------
-# Mac OS X specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-CONFIG -= app_bundle
-
-load(default_pre)
-
-debug: CONFIG += use_all_in_one_files
-
diff --git a/Tools/qmake/mkspecs/features/minimal_qt.prf b/Tools/qmake/mkspecs/features/minimal_qt.prf
deleted file mode 100644
index 34e2d39ee..000000000
--- a/Tools/qmake/mkspecs/features/minimal_qt.prf
+++ /dev/null
@@ -1,32 +0,0 @@
-# -------------------------------------------------------------------
-# Pretend that we are building against a minimal Qt version
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-DEFINES *= \
- QT_NO_ANIMATION \
- QT_NO_BEARERMANAGEMENT \
- QT_NO_CLIPBOARD \
- QT_NO_COMBOBOX \
- QT_NO_CONCURRENT \
- QT_NO_CRASHHANDLER \
- QT_NO_CURSOR \
- QT_NO_DESKTOPSERVICES \
- QT_NO_FILEDIALOG \
- QT_NO_GRAPHICSEFFECT \
- QT_NO_IM \
- QT_NO_INPUTDIALOG \
- QT_NO_LINEEDIT \
- QT_NO_MESSAGEBOX \
- QT_NO_OPENSSL \
- QT_NO_PRINTER \
- QT_NO_QUUID_STRING \
- QT_NO_SHORTCUT \
- QT_NO_STYLE_STYLESHEET \
- QT_NO_SYSTEMTRAYICON \
- QT_NO_TEMPORARYFILE \
- QT_NO_TOOLTIP \
- QT_NO_UNDOCOMMAND \
- QT_NO_UNDOSTACK \
- QT_NO_XRENDER
diff --git a/Tools/qmake/mkspecs/features/production_build.prf b/Tools/qmake/mkspecs/features/production_build.prf
deleted file mode 100644
index 903600338..000000000
--- a/Tools/qmake/mkspecs/features/production_build.prf
+++ /dev/null
@@ -1,17 +0,0 @@
-# All in one files reduce memory usage at link time. At compiler time the code
-# visibility for the compiler increases and faster more compact code can be produced,
-# so turn it on in production builds.
-CONFIG *= use_all_in_one_files
-
-# Builds with debug flags result in a huge amount of symbols with the GNU toolchain,
-# resulting in the need of several gigabytes of memory at link-time. Reduce the pressure
-# by compiling any static library like WTF or JSC with release flags instead and keep debug
-# symbols for the static libraries that implement API.
-if(linux-*:!contains(QMAKE_HOST.arch, x86_64))|mingw:if(CONFIG(debug, debug|release)|contains(QT_CONFIG,separate_debug_info)):contains(TEMPLATE, lib):staticlib {
- !equals(TARGET, WebKit2):!equals(TARGET, WebKitWidgets) {
- CONFIG += no_debug_info
- CONFIG -= separate_debug_info
- QMAKE_CFLAGS += $$QMAKE_CFLAGS_RELEASE
- QMAKE_CXXFLAGS += $$QMAKE_CXXFLAGS_RELEASE
- }
-}
diff --git a/Tools/qmake/mkspecs/features/rpath.prf b/Tools/qmake/mkspecs/features/rpath.prf
deleted file mode 100644
index 8dbc42f13..000000000
--- a/Tools/qmake/mkspecs/features/rpath.prf
+++ /dev/null
@@ -1,25 +0,0 @@
-# -------------------------------------------------------------------
-# Set rpath for the application/library we're building
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-equals(ROOT_BUILD_DIR, $$dirname(DESTDIR)): RPATHDIR_RELATIVE_TO_DESTDIR = ../lib
-
-linux-*:!isEmpty(RPATHDIR_RELATIVE_TO_DESTDIR) {
- # Do the rpath by hand since it's not possible to use ORIGIN in QMAKE_RPATHDIR
- # this expands to $ORIGIN (after qmake and make), it does NOT read a qmake var.
- QMAKE_RPATHDIR = \$\$ORIGIN/$${RPATHDIR_RELATIVE_TO_DESTDIR} $${QMAKE_RPATHDIR}
- RPATH = $$join(QMAKE_RPATHDIR, ":")
-
- QMAKE_LFLAGS += -Wl,-z,origin \'-Wl,-rpath,$${RPATH}\'
- QMAKE_RPATHDIR =
-} else {
- QMAKE_RPATHDIR = $${ROOT_BUILD_DIR}/lib $${QMAKE_RPATHDIR}
-}
-
-# FIXME: For Qt5 this will only give correct rpath for the tools that come with WebKit
-# Any client application built against a developer-build of Qt + WebKit (that does
-# QT += webkit) will not get the rpath pointing to the stand-alone WebKit-build,
-# and will have to set LD_LIBRARY_PATH or do their own rpath logic. This needs
-# to be fixed on the Qt side.
diff --git a/Tools/qmake/mkspecs/features/unix/default_post.prf b/Tools/qmake/mkspecs/features/unix/default_post.prf
deleted file mode 100644
index fd66af670..000000000
--- a/Tools/qmake/mkspecs/features/unix/default_post.prf
+++ /dev/null
@@ -1,71 +0,0 @@
-# -------------------------------------------------------------------
-# Unix specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Disable a few warnings. The same warnings are also disabled
-# in WebKitLibraries/win/tools/vsprops/common.vsprops
-intel_icc: load(icc)
-
-# Use SSE2 floating point math on 32 bit instead of the default
-# 387 to make layout test results same on 32 and on 64 bit builds.
-# See https://bugs.webkit.org/show_bug.cgi?id=52810#c39 for details.
-linux-g++*:isEqual(QT_ARCH,i386) {
- !production_build {
- QMAKE_CFLAGS += -msse2 -mfpmath=sse
- QMAKE_CXXFLAGS += -msse2 -mfpmath=sse
- }
-}
-
-*g++* {
- # Use DWARF-4 optimally with GCC 4.8+, otherwise use STABS which uses much less memory.
- greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 7) {
- QMAKE_CXXFLAGS_DEBUG += -fdebug-types-section
- QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -fdebug-types-section
- QMAKE_LFLAGS += -fdebug-types-section
- } else {
- # If DWARF-2 is desired -feliminate-dwarf2-dups can be used with GCC 4.7,
- # but it causes internal compiler errors in older versions of GCC.
- QMAKE_CXXFLAGS_DEBUG -= -g
- QMAKE_CXXFLAGS_DEBUG += -gstabs
- QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO -= -g
- QMAKE_CXXFLAGS_RELEASE_WITH_DEBUGINFO += -gstabs
- # Don't use the gold linker with stabs, it uses more memory and produces larger debug binaries.
- CONFIG -= use_gold_linker
- }
-}
-
-linux-*g++* {
- !production_build {
- # Treat warnings as errors on x86/Linux/GCC
- isEqual(QT_ARCH,x86_64)|isEqual(QT_ARCH,i386): QMAKE_CXXFLAGS += -Werror
- greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 5) {
- # Newer versions of GCC suggests noreturn at seemingly random
- QMAKE_CXXFLAGS += -Wno-suggest-attribute=noreturn
- }
- }
-}
-
-!c++11:!intel_icc {
- # Don't warn about OVERRIDE and FINAL, since they are feature-checked anyways
- clang {
- QMAKE_CXXFLAGS += -Wno-c++11-extensions -Wno-c++0x-extensions
- QMAKE_OBJECTIVE_CFLAGS += -Wno-c++11-extensions -Wno-c++0x-extensions
- } else: gcc {
- greaterThan(QT_GCC_MAJOR_VERSION, 4)|greaterThan(QT_GCC_MINOR_VERSION, 5) {
- # We need to deactivate those warnings because some names conflicts with upcoming c++0x types (e.g.nullptr).
- QMAKE_CXXFLAGS_WARN_ON += -Wno-c++0x-compat
- QMAKE_CXXFLAGS += -Wno-c++0x-compat
- }
- }
-}
-
-contains(TEMPLATE, app): CONFIG += rpath
-
-CONFIG(debug, debug|release)|force_debug_info {
- # Make ld not cache the symbol tables of input files in memory to avoid memory exhaustion during the linking phase.
- !force_static_libs_as_shared:config_gnuld: QMAKE_LFLAGS += -Wl,--no-keep-memory
-}
-
-load(default_post)
diff --git a/Tools/qmake/mkspecs/features/unix/default_pre.prf b/Tools/qmake/mkspecs/features/unix/default_pre.prf
deleted file mode 100644
index 60de13338..000000000
--- a/Tools/qmake/mkspecs/features/unix/default_pre.prf
+++ /dev/null
@@ -1,18 +0,0 @@
-# -------------------------------------------------------------------
-# Unix specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-load(functions)
-
-CONFIG += object_parallel_to_source
-
-# Expose if we are building inside Scratchbox
-SBOX_CHECK = $$(_SBOX_DIR)
-!isEmpty(SBOX_CHECK): CONFIG += scratchbox
-
-# Reduce linking memory pressure on 32-bit debug builds on Linux
-linux-g++*:CONFIG(debug, debug|release):isEqual(QT_ARCH,i386): CONFIG += use_all_in_one_files
-
-load(default_pre)
diff --git a/Tools/qmake/mkspecs/features/use_all_in_one_files.prf b/Tools/qmake/mkspecs/features/use_all_in_one_files.prf
deleted file mode 100644
index e16dcfc5a..000000000
--- a/Tools/qmake/mkspecs/features/use_all_in_one_files.prf
+++ /dev/null
@@ -1,28 +0,0 @@
-# -------------------------------------------------------------------
-# This feature enables the use of AllInOne.cpp files by adding them
-# to SOURCES and removing the sources the corresponding files include
-# from SOURCES, to avoid duplicated compilation units.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Globbing all does not work yet, not all AllInOne files build reliably yet.
-# So instead we select them manually.
-#collection = $$files($$_PRO_FILE_PWD_/*AllInOne.cpp, true)
-collection = $$ALL_IN_ONE_SOURCES
-
-for(collectionFile, collection) {
- lines = $$cat($$_PRO_FILE_PWD_/$$collectionFile, lines)
- for(line, lines) {
- line = $$find(line, "^.+include \"(.*)\"")
- isEmpty(line): next()
- line ~= s/^.+include \"(.*)\"/\\1/
- source = $$dirname(collectionFile)/$$line
- contains(SOURCES, $$source) {
- SOURCES -= $$source
- tookFromSources = true
- }
- }
- !isEmpty(tookFromSources): SOURCES *= $$collectionFile
-}
-
diff --git a/Tools/qmake/mkspecs/features/valgrind.prf b/Tools/qmake/mkspecs/features/valgrind.prf
deleted file mode 100644
index b181154a9..000000000
--- a/Tools/qmake/mkspecs/features/valgrind.prf
+++ /dev/null
@@ -1,11 +0,0 @@
-# -------------------------------------------------------------------
-# This optional feature file adds rules that make running valgrind
-# on QtWebKit easier.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-QMAKE_CXXFLAGS += -g
-QMAKE_LFLAGS += -g
-DEFINES += USE_SYSTEM_MALLOC=1
-DEFINES += ENABLE_JIT=0
diff --git a/Tools/qmake/mkspecs/features/webkit_modules.prf b/Tools/qmake/mkspecs/features/webkit_modules.prf
deleted file mode 100644
index 7040cbbc3..000000000
--- a/Tools/qmake/mkspecs/features/webkit_modules.prf
+++ /dev/null
@@ -1,51 +0,0 @@
-# -------------------------------------------------------------------
-# Used for applying the content of the WEBKIT variable into the
-# effect each library/module has on variables such as LIBS and QT.
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Reorder libraries so that the link and include order is correct,
-# and make sure the case matches the original case.
-libraries = WebKit1 WebKit2 WebCore ANGLE leveldb JavaScriptCore WTF
-for(library, libraries) {
- contains(WEBKIT, $$lower($$library)) {
- WEBKIT -= $$lower($$library)
- WEBKIT *= $$library
- }
-}
-
-# Load the .pri file for each library, to pick up LIBS, INCLUDES,
-# and other dependencies the library adds.
-for(library, WEBKIT) {
- # Juggle LIBS to keep the static link order correct
- existing_libs = $$LIBS
- unset(LIBS)
-
- # We definitly need include paths and such (this will set
- # SOURCE_DIR to the right path so we can use it below).
- library_identifier = $$lower($$library)
- include(../modules/$${library_identifier}.prf)
-
- # More juggling, so that we can add the dependent libs later
- # on if we decide that we need to link to the library.
- eval(WEBKIT.$${library_identifier}.dependent_libs = $$LIBS)
- LIBS = $$existing_libs
-
- # Anything not linking dynamically to QtWebKit should make sure to have its export
- # macros synchronized with the code that it will be linked with statically.
- CONFIG(static)|!contains(QT, webkit): DEFINES += STATICALLY_LINKED_WITH_$$library
-}
-
-creating_module {
- # Sanitize PKGCONFIG as we don't want any of these libraries
- # to end up in as public API dependenices in the QtWebKit prl file.
- PKGCONFIG_PRIVATE *= $$PKGCONFIG
- unset(PKGCONFIG)
-
- # We do have a limited subset of Qt modules as dependencies for using
- # the public QtWebKit API. The rest of the modules go into QT_PRIVATE.
- QT_PRIVATE *= $$QT
- QT = $$QT_API_DEPENDS
- QT_PRIVATE -= $$QT
-}
diff --git a/Tools/qmake/mkspecs/features/win32/default_post.prf b/Tools/qmake/mkspecs/features/win32/default_post.prf
deleted file mode 100644
index c296ae1f7..000000000
--- a/Tools/qmake/mkspecs/features/win32/default_post.prf
+++ /dev/null
@@ -1,45 +0,0 @@
-# -------------------------------------------------------------------
-# Win32 specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-# Pick up 3rdparty libraries from INCLUDE/LIB just like with MSVC
-mingw {
- TMPPATH = $$quote($$(INCLUDE))
- QMAKE_INCDIR_POST += $$split(TMPPATH,";")
- TMPPATH = $$quote($$(LIB))
- QMAKE_LIBDIR_POST += $$split(TMPPATH,";")
-}
-
-# Make sure windows.h doesn't define max() macro
-# (it screws up use like std::max and std::numeric_limits::max)
-DEFINES += NOMINMAX
-
-# Disable a few warnings. The same warnings are also disabled
-# in WebKitLibraries/win/tools/vsprops/common.vsprops
-win32-msvc*|wince*: QMAKE_CXXFLAGS += -wd4291 -wd4344 -wd4396 -wd4503 -wd4800 -wd4819 -wd4996
-intel_icl: load(icc)
-
-load(default_post)
-
-# When creating the target DLL, extract exporting linker directives from
-# all static libraries we're linking into the DLL and make sure they are
-# also exported from the DLL.
-shared:contains(TEMPLATE, lib) {
- for(target, POST_TARGETDEPS) {
- libdep = $$find(target, .*\\.lib)
- !isEmpty(libdep): LIBSWITHEXPORTS += $$libdep
- }
-}
-
-!isEmpty(LIBSWITHEXPORTS) {
- suffix =
- CONFIG(debug, debug|release): suffix = d
- forwarded_exports.target = forwarded-exports$${suffix}.cpp
- forwarded_exports.commands = python $${ROOT_WEBKIT_DIR}$${QMAKE_DIR_SEP}Tools$${QMAKE_DIR_SEP}Scripts$${QMAKE_DIR_SEP}generate-win32-export-forwards $$LIBSWITHEXPORTS $$forwarded_exports.target
- forwarded_exports.depends = $$LIBSWITHEXPORTS
- QMAKE_EXTRA_TARGETS += forwarded_exports
- GENERATED_SOURCES += $$forwarded_exports.target
-}
-
diff --git a/Tools/qmake/mkspecs/features/win32/default_pre.prf b/Tools/qmake/mkspecs/features/win32/default_pre.prf
deleted file mode 100644
index b306c3b82..000000000
--- a/Tools/qmake/mkspecs/features/win32/default_pre.prf
+++ /dev/null
@@ -1,10 +0,0 @@
-# -------------------------------------------------------------------
-# Windows specific defaults
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-load(default_pre)
-
-debug: CONFIG += use_all_in_one_files
-
diff --git a/Tools/qmake/mkspecs/modules/angle.prf b/Tools/qmake/mkspecs/modules/angle.prf
deleted file mode 100644
index 18631a76a..000000000
--- a/Tools/qmake/mkspecs/modules/angle.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for ANGLE, used by targets that depend on ANGLE
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.angle.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/ThirdParty/ANGLE
-
-include($${WEBKIT.angle.root_source_dir}/ANGLE.pri)
diff --git a/Tools/qmake/mkspecs/modules/javascriptcore.prf b/Tools/qmake/mkspecs/modules/javascriptcore.prf
deleted file mode 100644
index 6d9656cc1..000000000
--- a/Tools/qmake/mkspecs/modules/javascriptcore.prf
+++ /dev/null
@@ -1,10 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for JavaScriptCore, used by targets that depend on
-# JavaScriptCore
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.javascriptcore.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/JavaScriptCore
-
-include($${WEBKIT.javascriptcore.root_source_dir}/JavaScriptCore.pri)
diff --git a/Tools/qmake/mkspecs/modules/leveldb.prf b/Tools/qmake/mkspecs/modules/leveldb.prf
deleted file mode 100644
index d06acf05e..000000000
--- a/Tools/qmake/mkspecs/modules/leveldb.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for leveldb, used by targets that depend on leveldb
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.leveldb.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/ThirdParty/leveldb
-
-include($${WEBKIT.leveldb.root_source_dir}/leveldb.pri)
diff --git a/Tools/qmake/mkspecs/modules/webcore.prf b/Tools/qmake/mkspecs/modules/webcore.prf
deleted file mode 100644
index 9bd1776a7..000000000
--- a/Tools/qmake/mkspecs/modules/webcore.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for WebCore, used by targets that depend on WebCore
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.webcore.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/WebCore
-
-include($${WEBKIT.webcore.root_source_dir}/WebCore.pri)
diff --git a/Tools/qmake/mkspecs/modules/webkit1.prf b/Tools/qmake/mkspecs/modules/webkit1.prf
deleted file mode 100644
index ffab9a7fc..000000000
--- a/Tools/qmake/mkspecs/modules/webkit1.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for WebKit1, used by targets that depend on WebKit1
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.webkit1.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/WebKit
-
-include($${WEBKIT.webkit1.root_source_dir}/WebKit1.pri)
diff --git a/Tools/qmake/mkspecs/modules/webkit2.prf b/Tools/qmake/mkspecs/modules/webkit2.prf
deleted file mode 100644
index a2502160d..000000000
--- a/Tools/qmake/mkspecs/modules/webkit2.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for WebKit2, used by targets that depend on WebKit2
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.webkit2.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/WebKit2
-
-include($${WEBKIT.webkit2.root_source_dir}/WebKit2.pri)
diff --git a/Tools/qmake/mkspecs/modules/wtf.prf b/Tools/qmake/mkspecs/modules/wtf.prf
deleted file mode 100644
index 56df7476b..000000000
--- a/Tools/qmake/mkspecs/modules/wtf.prf
+++ /dev/null
@@ -1,9 +0,0 @@
-# -------------------------------------------------------------------
-# Module file for WTF, used by targets that depend on WTF
-#
-# See 'Tools/qmake/README' for an overview of the build system
-# -------------------------------------------------------------------
-
-WEBKIT.wtf.root_source_dir = $${ROOT_WEBKIT_DIR}/Source/WTF
-
-include($${WEBKIT.wtf.root_source_dir}/WTF.pri)
diff --git a/Tools/qt/generate-inspector-qrc.pl b/Tools/qt/generate-inspector-qrc.pl
new file mode 100755
index 000000000..f961757ac
--- /dev/null
+++ b/Tools/qt/generate-inspector-qrc.pl
@@ -0,0 +1,137 @@
+#!/usr/bin/perl
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# 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. 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 INC. 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 File::Basename;
+use File::Copy;
+use File::Path qw(make_path);
+use File::Spec;
+use Getopt::Long qw(:config pass_through no_auto_abbrev);
+
+use v5.10;
+
+use strict;
+use warnings;
+
+my @sources;
+my @extraSources;
+my @qrcSources;
+my $baseDir;
+my $outDir;
+my $prefix;
+my $rccExecutable;
+my $resourceName;
+
+processArgs();
+copySources();
+addExtraSources();
+writeQrc();
+compileQrc();
+
+sub processArgs {
+ GetOptions (
+ "add=s" => \@extraSources,
+ "baseDir=s" => \$baseDir,
+ "outDir=s" => \$outDir,
+ "prefix=s" => \$prefix,
+ "rccExecutable=s" => \$rccExecutable,
+ "resourceName=s" => \$resourceName
+ );
+ @sources = map { glob } @ARGV;
+ checkDir($baseDir);
+ make_path($outDir);
+ -x $rccExecutable or die "File $rccExecutable is not executable";
+}
+
+sub checkDir {
+ my $dir = shift;
+ -e $dir or die "Directory $dir does not exist";
+ -d $dir or die "$dir is not a directory";
+}
+
+sub copySources {
+ for my $src (@sources) {
+ my $relSrc = getDstFile(File::Spec->abs2rel($src, $baseDir));
+ my $dst = File::Spec->catfile($outDir, $relSrc);
+ doCopy($src, $dst);
+ addToQrc($relSrc);
+ }
+}
+
+sub getDstFile {
+ my $path = shift;
+ my ($volume, $directories, $file) = File::Spec->splitpath($path);
+ my @dirs = File::Spec->splitdir($directories);
+
+ # Images/gtk/Something -> Images/Something
+ @dirs = grep { !/^gtk$/ } @dirs;
+
+ $directories = File::Spec->catdir(@dirs);
+ return File::Spec->catpath($volume, $directories, $file);
+}
+
+sub addExtraSources {
+ for my $src (@extraSources) {
+ addToQrc($src);
+ }
+}
+
+sub doCopy {
+ my ($src, $dst) = @_;
+ say "Copying $src -> $dst";
+ make_path(dirname($dst));
+ copy($src, $dst);
+}
+
+sub addToQrc {
+ my $src = shift;
+ push @qrcSources, $src;
+}
+
+sub writeQrc {
+ my $filename = File::Spec->catfile($outDir, "$resourceName.qrc");
+
+ open my $qrc, ">", $filename or die "Failed to open $filename for writing: $!";
+
+ say $qrc '<!DOCTYPE RCC><RCC version="1.0">';
+ if ($prefix) {
+ say $qrc qq%<qresource prefix="$prefix">%;
+ } else {
+ say $qrc '<qresource>';
+ }
+
+ for my $src (@qrcSources) {
+ say $qrc " <file>$src</file>";
+ }
+ say $qrc '</qresource>';
+ say $qrc '</RCC>';
+
+ close $qrc or die $!;
+}
+
+sub compileQrc {
+ chdir($outDir);
+ my $cmd = "$rccExecutable -name $resourceName -o qrc_$resourceName.cpp $resourceName.qrc";
+ say $cmd;
+ system($cmd) == 0 or die "rcc failed: $!";
+}
diff --git a/Tools/qt/generate-version-script.pl b/Tools/qt/generate-version-script.pl
new file mode 100755
index 000000000..49b1051cc
--- /dev/null
+++ b/Tools/qt/generate-version-script.pl
@@ -0,0 +1,63 @@
+#!/usr/bin/perl
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# 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. 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 INC. 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 v5.10;
+
+use strict;
+use warnings;
+
+my $qtVer = shift @ARGV;
+my $qtNamespace = shift @ARGV;
+
+die "Usage: $0 <Qt version> [Qt namespace]\n" unless $qtVer;
+
+$qtVer =~ /^(\d+)\.(\d+)\.\d+$/ or die "$qtVer is not valid Qt version\n";
+my $major = $1;
+my $minor = $2;
+
+# Next code tries to mirror logic of mkspecs/features/qt_module.prf
+
+say
+"Qt_${major}_PRIVATE_API {
+ qt_private_api_tag*;
+};";
+
+
+my $current = "Qt_$major";
+my $previous;
+say "$current { *; };";
+
+my $tag_symbol = "qt_version_tag";
+if ($qtNamespace) {
+ $tag_symbol .= "_$qtNamespace";
+}
+
+for (my $i = 0; $i < $minor; ++$i) {
+ $previous = $current;
+ $current = "Qt_$major.$i";
+ say "$current {} $previous;";
+}
+
+$previous = $current;
+say "Qt_$major.$minor { $tag_symbol; } $previous;";
diff --git a/Tools/qt/install-dependencies b/Tools/qt/install-dependencies
new file mode 100755
index 000000000..a9cfffd8a
--- /dev/null
+++ b/Tools/qt/install-dependencies
@@ -0,0 +1,104 @@
+#!/bin/bash
+
+# This script needs to be run with root rights.
+if [ $UID -ne 0 ]; then
+ sudo $0
+ exit 0
+fi
+
+function printNotSupportedMessageAndExit() {
+ echo
+ echo "Currently this script only works for distributions supporting apt-get."
+ echo "Please add support for your distribution."
+ echo
+ exit 1
+}
+
+function checkInstaller {
+ # apt-get - Debian based distributions
+ apt-get --version &> /dev/null
+ if [ $? -eq 0 ]; then
+ installDependenciesWithApt
+ exit 0
+ fi
+
+ printNotSupportedMessageAndExit
+}
+
+function installDependenciesWithApt {
+ # These are dependencies necessary for building Qt and QtWebKit.
+ packages=" \
+ g++ \
+ binutils \
+ libc6-dev \
+ make \
+ cmake \
+ ninja-build \
+ bison \
+ flex \
+ gawk \
+ gperf \
+ perl \
+ python \
+ ruby \
+ libdbus-1-dev \
+ libenchant-dev \
+ libgl1-mesa-dev \
+ libglu1-mesa-dev \
+ libhyphen-dev \
+ libjpeg-dev \
+ libpng12-dev \
+ libsqlite3-dev \
+ libssl-dev \
+ libwebp-dev \
+ libx11-dev \
+ libx11-xcb-dev
+ libxcb-glx0-dev
+ libxcb1-dev \
+ libxcb-keysyms1-dev \
+ libxcb-image0-dev \
+ libxcb-shm0-dev \
+ libxcb-icccm4-dev \
+ libxcb-sync0-dev \
+ libxcb-xfixes0-dev \
+ libxcb-xinerama0-dev \
+ libxcb-shape0-dev \
+ libxcb-randr0-dev \
+ libxcb-render-util0-dev \
+ libxext-dev \
+ libxfixes-dev \
+ libxrender-dev \
+ zlib1g-dev
+ "
+
+ # These are dependencies necessary for running tests.
+ packages="$packages \
+ apache2 \
+ curl \
+ libapache2-mod-php5 \
+ xvfb"
+
+ # These are dependencies necessary for building GLib and GStreamer.
+ packages="$packages \
+ git-core \
+ gettext \
+ libtool-bin \
+ automake \
+ libfaad-dev \
+ libmpg123-dev \
+ libopus-dev \
+ libtheora-dev \
+ libvorbis-dev \
+ "
+
+ # These are dependencies necessary for building GLib and GStreamer.
+ packages="$packages \
+ libjson-glib-dev \
+ libpulse-dev \
+ "
+
+ apt-get install $packages
+}
+
+checkInstaller
+
diff --git a/Tools/qt/jhbuild-qt-5.4.modules b/Tools/qt/jhbuild-qt-5.4.modules
new file mode 100644
index 000000000..3e9c4f57c
--- /dev/null
+++ b/Tools/qt/jhbuild-qt-5.4.modules
@@ -0,0 +1,79 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="tarball" name="download.qt.io"
+ href="http://download.qt.io"/>
+
+ <autotools id="qt"
+ makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'"
+ autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib"
+ autogen-sh="configure
+ -opensource
+ -confirm-license
+
+ -icu
+ -openssl
+ -openssl-linked
+
+ -nomake examples
+ -nomake tools
+ -nomake tests
+
+ -skip connectivity
+ -skip enginio
+ -skip graphicaleffects
+ -skip imageformats
+ -skip multimedia
+ -skip quickcontrols
+ -skip script
+ -skip serialport
+ -skip svg
+ -skip translations
+ -skip wayland
+ -skip webengine
+ -skip webkit
+ -skip x11extras
+ -skip xmlpatterns
+
+ -system-harfbuzz
+ -system-freetype
+ -system-libjpeg
+ -system-libpng
+ -system-sqlite
+ -system-zlib
+
+ -no-alsa
+ -no-cups
+ -no-eglfs
+ -no-evdev
+ -no-gtkstyle
+ -no-libudev
+ -no-linuxfb
+ -no-mtdev
+ -no-nis
+ -no-pulseaudio
+ -no-qml-debug
+ -no-tslib
+
+ -no-gif
+
+ -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds
+ -plugin-sql-sqlite
+ ">
+ <branch module="archive/qt/5.4/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.4.0"
+ repo="download.qt.io"
+ hash="sha256:b2d9df47b9fd2fcfa5ebd162e1373b7eddf4759e6ba148c4589f3d8b6628c39c">
+ <patch file="qt-5.4-fontconfig-fix.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="freetype6"/>
+ <dep package="icu"/>
+ <dep package="glib"/>
+ <dep package="harfbuzz"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuild-qt-5.6.modules b/Tools/qt/jhbuild-qt-5.6.modules
new file mode 100644
index 000000000..1ab29d97a
--- /dev/null
+++ b/Tools/qt/jhbuild-qt-5.6.modules
@@ -0,0 +1,85 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <repository type="tarball" name="download.qt.io"
+ href="http://download.qt.io"/>
+
+ <autotools id="qt"
+ makeinstallargs="install INSTALL_ROOT='$(DESTDIR)'"
+ autogen-template="%(srcdir)s/%(autogen-sh)s -prefix %(prefix)s -I%(prefix)s/include -L%(prefix)s/lib -libdir %(prefix)s/lib"
+ autogen-sh="configure
+ -opensource
+ -confirm-license
+
+ -icu
+ -openssl
+ -openssl-linked
+
+ -nomake examples
+ -nomake tools
+ -nomake tests
+
+ -skip 3d
+ -skip connectivity
+ -skip enginio
+ -skip graphicaleffects
+ -skip imageformats
+ -skip multimedia
+ -skip quickcontrols
+ -skip quickcontrols2
+ -skip script
+ -skip serialbus
+ -skip serialport
+ -skip svg
+ -skip translations
+ -skip wayland
+ -skip webengine
+ -skip webview
+ -skip x11extras
+ -skip xmlpatterns
+
+ -system-harfbuzz
+ -system-freetype
+ -system-libjpeg
+ -system-libpng
+ -system-sqlite
+ -system-zlib
+
+ -no-alsa
+ -no-cups
+ -no-eglfs
+ -no-evdev
+ -no-gbm
+ -no-gtkstyle
+ -no-libinput
+ -no-libudev
+ -no-linuxfb
+ -no-mtdev
+ -no-nis
+ -no-pulseaudio
+ -no-qml-debug
+ -no-tslib
+
+ -no-gif
+
+ -no-sql-db2 -no-sql-ibase -no-sql-mysql -no-sql-oci -no-sql-odbc -no-sql-psql -no-sql-sqlite2 -no-sql-tds
+ -plugin-sql-sqlite
+ ">
+ <branch module="archive/qt/5.6/${version}/single/qt-everywhere-opensource-src-${version}.tar.xz" version="5.6.1-1"
+ repo="download.qt.io"
+ checkoutdir="qt-everywhere-opensource-src-5.6.1"
+ hash="sha256:ce08a7eb54661705f55fb283d895a089b267c688fabe017062bd71b9231736db">
+ <patch file="qt-fontconfig-fix.patch" strip="1"/>
+ </branch>
+ <dependencies>
+ <dep package="fontconfig"/>
+ <dep package="freetype6"/>
+ <dep package="icu"/>
+ <dep package="glib"/>
+ <dep package="harfbuzz"/>
+ </dependencies>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuild.modules b/Tools/qt/jhbuild.modules
new file mode 100644
index 000000000..3053b1d2c
--- /dev/null
+++ b/Tools/qt/jhbuild.modules
@@ -0,0 +1,261 @@
+<?xml version="1.0"?>
+<!DOCTYPE moduleset SYSTEM "moduleset.dtd">
+<?xml-stylesheet type="text/xsl" href="moduleset.xsl"?>
+<moduleset>
+
+ <metamodule id="webkitqt-testing-dependencies">
+ <dependencies>
+ <!-- <dep package="fonts"/> -->
+ <dep package="dicts"/>
+ <dep package="fontconfig"/>
+ <dep package="icu"/>
+ <dep package="libxml2"/>
+ <dep package="libxslt"/>
+ <dep package="glib"/>
+ <dep package="gstreamer"/>
+ <dep package="gst-plugins-base"/>
+ <dep package="gst-plugins-good"/>
+ <dep package="gst-plugins-bad"/>
+ <dep package="gst-libav"/>
+ <dep package="openwebrtc"/>
+ <dep package="qt"/>
+ </dependencies>
+ </metamodule>
+
+ <include href="jhbuild-qt-5.4.modules"/>
+
+ <!-- Please use http/https to access repositories to be friendly to users stuck behind firewalls. -->
+ <repository type="git" name="github.com"
+ href="https://github.com"/>
+ <repository type="tarball" name="github.com-tarball"
+ href="https://github.com"/>
+ <repository type="tarball" name="sourceware.org-mirror"
+ href="http://mirrors.kernel.org/sources.redhat.com/"/>
+ <repository type="tarball" name="ftp.gnome.org"
+ href="http://ftp.gnome.org"/>
+ <repository type="tarball" name="freedesktop.org"
+ href="http://www.freedesktop.org"/>
+ <repository type="tarball" name="xmlsoft.org"
+ href="http://xmlsoft.org"/>
+ <repository type="tarball" name="gstreamer"
+ href="http://gstreamer.freedesktop.org/src/"/>
+ <repository type="tarball" name="savannah.gnu.org"
+ href="http://download.savannah.gnu.org/releases/"/>
+ <repository type="git" name="freedesktop-git"
+ href="http://anongit.freedesktop.org/git"/>
+ <repository type="tarball" name="webkitgtk-jhbuild-mirror"
+ href="http://webkitgtk.org/jhbuild_mirror/"/>
+ <repository type="tarball" name="nice.freedesktop.org"
+ href="http://nice.freedesktop.org/"/>
+
+ <autotools id="fonts" supports-non-srcdir-builds="no"
+ skip-autogen="true">
+ <branch repo="github.com" module="carewolf/qtwebkit-testfonts.git" checkoutdir="qtwebkitg-testfonts"/>
+ </autotools>
+
+ <autotools id="dicts" supports-non-srcdir-builds="no"
+ skip-autogen="true">
+ <branch repo="github.com" module="mrobinson/webkitgtk-test-dicts.git" checkoutdir="webkitgtk-test-dicts" tag="0.0.1"/>
+ </autotools>
+
+ <autotools id="freetype6" autogen-sh="configure">
+ <branch module="freetype/freetype-2.4.11.tar.bz2" version="2.4.11"
+ repo="savannah.gnu.org"
+ hash="sha256:ef9d0bcb64647d9e5125dc7534d7ca371c98310fec87677c410f397f71ffbe3f"
+ md5sum="b93435488942486c8d0ca22e8f768034">
+ <patch file="freetype6-2.4.11-truetype-font-height-fix.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="harfbuzz" autogen-sh="configure">
+ <dependencies>
+ <dep package="icu"/>
+ </dependencies>
+ <branch module="software/harfbuzz/release/harfbuzz-${version}.tar.bz2"
+ version="1.2.7"
+ repo="freedesktop.org"
+ hash="sha256:bba0600ae08b84384e6d2d7175bea10b5fc246c4583dc841498d01894d479026">
+ </branch>
+ </autotools>
+
+ <autotools id="libffi" autogen-sh="configure">
+ <branch module="libffi/libffi-3.1.tar.gz" version="3.1"
+ repo="sourceware.org-mirror"
+ hash="sha256:97feeeadca5e21870fa4433bc953d1b3af3f698d5df8a428f68b73cd60aef6eb"
+ md5sum="f5898b29bbfd70502831a212d9249d10"/>
+ </autotools>
+
+ <autotools id="glib"
+ autogen-sh="configure"
+ autogenargs="--disable-dtrace --disable-gtk-doc-html">
+ <dependencies>
+ <dep package="libffi"/>
+ </dependencies>
+ <branch module="/pub/GNOME/sources/glib/2.44/glib-2.44.1.tar.xz" version="2.44.1"
+ repo="ftp.gnome.org"
+ hash="sha256:8811deacaf8a503d0a9b701777ea079ca6a4277be10e3d730d2112735d5eca07">
+ </branch>
+ </autotools>
+
+ <autotools id="fontconfig"
+ autogen-sh="configure"
+ autogenargs="--enable-libxml2">
+ <dependencies>
+ <dep package="freetype6"/>
+ <dep package="libxml2"/>
+ </dependencies>
+ <branch module="software/fontconfig/release/fontconfig-2.11.1.tar.gz" version="2.11.1"
+ repo="freedesktop.org"
+ hash="sha256:b6b066c7dce3f436fdc0dfbae9d36122b38094f4f53bd8dffd45e195b0540d8d"
+ md5sum="e75e303b4f7756c2b16203a57ac87eba">
+ <patch file="fontconfig-2.11.1-no-bitmaps.patch" strip="0"/>
+ </branch>
+ </autotools>
+
+
+ <autotools id="libxml2" supports-non-srcdir-builds="no"
+ autogen-sh="./autogen.sh; ./configure --with-python=no">
+ <branch module="/sources/libxml2-2.9.1.tar.gz" version="2.9.1"
+ repo="xmlsoft.org"
+ hash="sha256:fd3c64cb66f2c4ea27e934d275904d92cec494a8e8405613780cbc8a71680fdb"
+ md5sum="9c0cfef285d5c4a5c80d00904ddab380"/>
+ </autotools>
+
+ <autotools id="libxslt">
+ <branch module="/sources/libxslt-${version}.tar.gz" version="1.1.29"
+ repo="xmlsoft.org"
+ hash="sha256:b5976e3857837e7617b29f2249ebb5eeac34e249208d31f1fbf7a6ba7a4090ce"/>
+ <dependencies>
+ <dep package="libxml2"/>
+ </dependencies>
+ </autotools>
+
+ <autotools id="orc" autogenargs="--disable-gtk-doc" autogen-sh="configure">
+ <branch module="orc/orc-0.4.17.tar.gz" version="0.4.17"
+ repo="gstreamer"
+ hash="sha256:4fc7cca48c59fff23afee78fb642cdbde001f56401c8f47b95a16578d1d5d7e8"
+ md5sum="af1bf3dab9e69f3c36f389285e2a12a1"/>
+ </autotools>
+
+ <autotools id="gstreamer" autogenargs="--disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="orc"/>
+ </dependencies>
+ <branch module="gstreamer/gstreamer-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:947a314a212b5d94985d89b43440dbe66b696e12bbdf9a2f78967b98d74abedc"
+ md5sum="6846d7289ec323c38c49b818171e955a"/>
+ </autotools>
+
+ <autotools id="gst-plugins-base"
+ autogen-sh="autogen.sh"
+ autogenargs="--disable-examples --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gstreamer"/>
+ </dependencies>
+ <branch module="gst-plugins-base/gst-plugins-base-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:abc0acc1d15b4b9c97c65cd9689bd6400081853b9980ea428d3c8572dd791522"
+ md5sum="20cc8231609318310f2a55f64c86cbb4"/>
+ </autotools>
+
+ <autotools id="gst-plugins-good" autogenargs="--disable-examples --disable-soup --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+
+ <branch module="gst-plugins-good/gst-plugins-good-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:c20c134d47dbc238d921707a3b66da709c2b4dd89f9d267cec13d1ddf16e9f4d"
+ md5sum="91ed4649c7c2e43a61f731d144f6f6d0">
+ <patch file="gst-plugins-good-use-the-tfdt-decode-time.patch" strip="1"/>
+ <patch file="gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="gst-plugins-bad" autogenargs="--disable-examples --disable-gtk-doc --disable-introspection">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error CXXFLAGS+=-Wno-error OBJCFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ <branch module="gst-plugins-bad/gst-plugins-bad-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:116376dd1085082422e0b21b0ecd3d1cb345c469c58e32463167d4675f4ca90e"
+ md5sum="1c2d797bb96a81e9ef570c7a0a37203e"/>
+ </autotools>
+
+ <autotools id="gst-libav" autogenargs="--with-libav-extra-configure='--disable-yasm' --disable-gtk-doc">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ </dependencies>
+ <branch module="gst-libav/gst-libav-${version}.tar.xz" version="1.8.0"
+ repo="gstreamer"
+ hash="sha256:5a1ce28876aee93cb4f3d090f0e807915a5d9bc1325e3480dd302b85aeb4291c"
+ md5sum="361638fa45466c5050bcde6bfe10fa46"/>
+ </autotools>
+
+ <autotools id="libusrsctp" supports-non-srcdir-builds="no" autogen-sh="./bootstrap; ./configure --disable-warnings-as-errors">
+ <branch repo="github.com" module="sctplab/usrsctp.git" checkoutdir="usrsctp" tag="078ff3252f73327e0ac11d6fd5eff62011f6646e"/>
+ </autotools>
+
+ <autotools id="gst-plugins-openwebrtc" supports-parallel-builds="no" supports-non-srcdir-builds="no" autogen-sh="./autogen.sh; ./configure">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-base"/>
+ <dep package="libusrsctp"/>
+ </dependencies>
+ <branch repo="github.com" module="EricssonResearch/openwebrtc-gst-plugins.git" checkoutdir="gst-plugins-openwebrtc" tag="e359b67484af90f416ea35e301205d2b53c77a14"/>
+ </autotools>
+
+ <autotools id="libnice">
+ <dependencies>
+ <dep package="gstreamer"/>
+ </dependencies>
+ <branch repo="nice.freedesktop.org" module="releases/libnice-0.1.10.tar.gz" checkoutdir="libnice" version="0.1.10"
+ hash="sha256:1dbfb663b730889ae8cab13a2913fe557d581f70b513c918bbbd0b7d3eefebc9"
+ md5sum="27b62d0093ce29a39df1c6fcf0bb4396" size="903083">
+ </branch>
+ </autotools>
+
+ <autotools id="openwebrtc" autogenargs="--enable-bridge=no --enable-owr-gst=yes --disable-tests">
+ <if condition-set="macos">
+ <makeargs value="CFLAGS+=-Wno-error"/>
+ </if>
+ <dependencies>
+ <dep package="gst-plugins-openwebrtc"/>
+ <dep package="libnice"/>
+ </dependencies>
+ <branch repo="github.com-tarball" module="EricssonResearch/openwebrtc/archive/13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" checkoutdir="openwebrtc" version="13516c7f79a0c48bb411464f7613d4b426c70f5b"
+ hash="sha256:c849d36d97c17a198a5d9c180f13f14c7897c9236e2384ea11029e23b09b59ac"
+ md5sum="13516c7f79a0c48bb411464f7613d4b426c70f5b.tar.gz" size="258936">
+ <patch file="openwebrtc-no-gtk-doc.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+ <autotools id="icu"
+ autogen-sh="./source/configure"
+ autogenargs="--disable-samples --enable-weak-threads">
+ <branch module="icu4c-55_1-src.tgz" version="55.1" checkoutdir="icu"
+ repo="webkitgtk-jhbuild-mirror"
+ hash="sha256:e16b22cbefdd354bec114541f7849a12f8fc2015320ca5282ee4fd787571457b">
+ <patch file="icudata-stdlibs.patch" strip="1"/>
+ </branch>
+ </autotools>
+
+</moduleset>
diff --git a/Tools/qt/jhbuildrc b/Tools/qt/jhbuildrc
new file mode 100644
index 000000000..58dea347f
--- /dev/null
+++ b/Tools/qt/jhbuildrc
@@ -0,0 +1,24 @@
+#!/usr/bin/env python
+# Copyright (C) 2016 Konstantin Tokavev <annulen@yandex.ru>
+#
+# 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 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
+
+import sys
+import platform
+
+sys.path.insert(0, os.path.join(os.path.dirname(__file__), "../jhbuild") )
+import jhbuildrc_common
+
+jhbuildrc_common.init(globals(), "qt")
diff --git a/Tools/qt/manifest.txt b/Tools/qt/manifest.txt
new file mode 100644
index 000000000..bc4765030
--- /dev/null
+++ b/Tools/qt/manifest.txt
@@ -0,0 +1,132 @@
+# Global rules
+exclude #$
+exclude ChangeLog
+exclude CMakeLists.txt.user
+exclude Makefile
+exclude PlatformAppleWin.cmake
+exclude PlatformGTK.cmake
+exclude PlatformEfl.cmake
+exclude PlatformMac.cmake
+exclude PlatformWin.cmake
+exclude PlatformWinCairo.cmake
+exclude tags$
+exclude ~$
+exclude \.#$
+exclude \.bak$
+exclude \.cproject$
+exclude \.git$
+exclude \.gitattributes$
+exclude \.gitignore$
+exclude \.icns$
+exclude \.lproj$
+exclude \.m$
+exclude \.mm$
+exclude \.nib$
+exclude \.o$
+exclude \.order$
+exclude \.orig$
+exclude \.pdf$
+exclude \.plist$
+exclude \.project$
+exclude \.props$
+exclude \.pyc$
+exclude \.pyo$
+exclude \.rej$
+exclude \.rtf$
+exclude \.sb$
+exclude \.sb\.in$
+exclude \.settings$
+exclude \.svn$
+exclude \.sw[a-p]$
+exclude \.vcxproj$
+exclude \.xib$
+exclude \.xcconfig$
+exclude \.xcodeproj$
+
+# Exclude directories from other ports
+exclude .*\/(Configurations|mac|ios|cf|cg|cocoa|Cocoa|objc|avfoundation|ca|curl|efl|win|gtk|cairo|soup|gnutls)\/.*$
+
+directory Source
+exclude Source/JavaScriptCore/tests
+exclude Source/WebCore/platform/audio/resources
+exclude Source/WebCore/bindings/scripts/test
+exclude Source/WebCore/platform/efl/DefaultTheme
+exclude Source/WebCore/Resources
+exclude Source/cmake/EFLHelpers.cmake$
+exclude Source/cmake/OptionsWinCairo.cmake$
+exclude Source/cmake/OptionsWindows.cmake$
+exclude Source/cmake/OptionsAppleWin.cmake$
+exclude Source/cmake/OptionsEfl.cmake$
+exclude Source/cmake/OptionsGTK.cmake$
+exclude Source/cmake/eflsymbols.filter$
+exclude Source/WebInspectorUI/Tools
+exclude Source/WebInspectorUI/UserInterface/Images
+
+exclude Source/WebKit2/Resources
+
+file Source/WebCore/English.lproj/mediaControlsLocalizedStrings.js
+
+# Windows-specific code
+file Source/WTF/wtf/win/GDIObject.h
+file Source/WebCore/platform/graphics/win/LocalWindowsContext.h
+file Source/WebCore/platform/graphics/win/TransformationMatrixWin.cpp
+file Source/WebCore/platform/win/BitmapInfo.cpp
+file Source/WebCore/platform/win/BitmapInfo.h
+file Source/WebCore/platform/win/SystemInfo.cpp
+file Source/WebCore/platform/win/SystemInfo.h
+file Source/WebCore/platform/win/WebCoreInstanceHandle.cpp
+file Source/WebCore/platform/win/WebCoreInstanceHandle.h
+
+# WK1 plugin code is in WebKit/win
+file Source/WebKit/win/Plugins
+
+# Version
+file Source/WebKit/mac/Configurations/Version.xcconfig
+
+directory Source/WebInspectorUI/UserInterface/Images
+exclude Source/WebInspectorUI/UserInterface/Images/.*
+file Source/WebInspectorUI/UserInterface/Images/gtk
+file Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js
+
+# Resources
+file Source/WebCore/Resources/plugIns.js
+
+# WebCore.qrc
+file Source/WebCore/Resources/missingImage.png
+file Source/WebCore/Resources/nullPlugin.png
+file Source/WebCore/Resources/textAreaResizeCorner.png
+file Source/WebCore/Resources/urlIcon.png
+file Source/WebCore/Resources/zoomInCursor.png
+file Source/WebCore/Resources/zoomOutCursor.png
+file Source/WebCore/Resources/verticalTextCursor.png
+file Source/WebCore/Resources/cellCursor.png
+file Source/WebCore/Resources/contextMenuCursor.png
+file Source/WebCore/Resources/copyCursor.png
+file Source/WebCore/Resources/progressCursor.png
+file Source/WebCore/Resources/aliasCursor.png
+file Source/WebCore/platform/audio/resources/Composite.wav
+
+directory Tools/qt
+directory Tools/ImageDiff
+directory Tools/MiniBrowser
+directory Tools/TestWebKitAPI
+directory Tools/QtTestBrowser
+
+directory Tools/DumpRenderTree
+exclude Tools/DumpRenderTree/fonts
+
+directory Tools/WebKitTestRunner
+exclude Tools/WebKitTestRunner/fonts/
+
+file CMakeLists.txt
+file Tools/CMakeLists.txt
+file Tools/Scripts/VCSUtils.pm
+file Tools/Scripts/build-webkit
+file Tools/Scripts/run-gtk-tests
+file Tools/Scripts/update-qtwebkit-win-libs
+file Tools/Scripts/update-webkit-dependency
+file Tools/Scripts/webkit-build-directory
+file Tools/Scripts/webkitdirs.pm
+file Tools/Scripts/webkitperl/FeatureList.pm
+file Tools/jhbuild/jhbuildutils.py
+
diff --git a/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch
new file mode 100644
index 000000000..03babba2d
--- /dev/null
+++ b/Tools/qt/patches/fontconfig-2.11.1-no-bitmaps.patch
@@ -0,0 +1,10 @@
+--- conf.d/Makefile.in.old 2016-06-23 19:00:01.309774583 +0300
++++ conf.d/Makefile.in 2016-06-23 19:00:23.542159140 +0300
+@@ -341,6 +341,7 @@
+ 65-fonts-persian.conf \
+ 65-nonlatin.conf \
+ 69-unifont.conf \
++ 70-no-bitmaps.conf \
+ 80-delicious.conf \
+ 90-synthetic.conf
+
diff --git a/Tools/gtk/patches/freetype6-2.4.11-truetype-font-height-fix.patch b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch
index 0ffe76b4e..0ffe76b4e 100644
--- a/Tools/gtk/patches/freetype6-2.4.11-truetype-font-height-fix.patch
+++ b/Tools/qt/patches/freetype6-2.4.11-truetype-font-height-fix.patch
diff --git a/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch
new file mode 100644
index 000000000..3a60db477
--- /dev/null
+++ b/Tools/qt/patches/gst-plugins-good-Revert-qtdemux-expose-streams-with-first-moof-for-fr.patch
@@ -0,0 +1,133 @@
+From 1a81bd90d4a3e59d6669a0bbfa456f1ed4e5db48 Mon Sep 17 00:00:00 2001
+From: Xabier Rodriguez Calvar <calvaris@igalia.com>
+Date: Thu, 7 Apr 2016 13:57:16 +0200
+Subject: [PATCH] Revert "qtdemux: expose streams with first moof for
+ fragmented format"
+
+This reverts commit d8bb6687ea251570c331038279a43d448167d6ad.
+---
+ gst/isomp4/qtdemux.c | 54 ++++++++++++++++------------------------------------
+ gst/isomp4/qtdemux.h | 1 -
+ 2 files changed, 16 insertions(+), 39 deletions(-)
+
+diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
+index 39be163..9636b4b 100644
+--- a/gst/isomp4/qtdemux.c
++++ b/gst/isomp4/qtdemux.c
+@@ -609,7 +609,6 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
+ qtdemux->state = QTDEMUX_STATE_INITIAL;
+ qtdemux->pullbased = FALSE;
+ qtdemux->posted_redirect = FALSE;
+- qtdemux->pending_configure = FALSE;
+ qtdemux->neededbytes = 16;
+ qtdemux->todrop = 0;
+ qtdemux->adapter = gst_adapter_new ();
+@@ -2049,7 +2048,6 @@ gst_qtdemux_reset (GstQTDemux * qtdemux, gboolean hard)
+ gst_caps_replace (&qtdemux->media_caps, NULL);
+ qtdemux->timescale = 0;
+ qtdemux->got_moov = FALSE;
+- qtdemux->pending_configure = FALSE;
+ } else if (qtdemux->mss_mode) {
+ gst_flow_combiner_reset (qtdemux->flowcombiner);
+ for (n = 0; n < qtdemux->n_streams; n++)
+@@ -6104,7 +6102,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ &fourcc);
+ if (fourcc == FOURCC_moov) {
+ gint n;
+- gboolean got_samples = FALSE;
+
+ /* in usual fragmented setup we could try to scan for more
+ * and end up at the the moov (after mdat) again */
+@@ -6136,27 +6133,19 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ qtdemux_node_dump (demux, demux->moov_node);
+ qtdemux_parse_tree (demux);
+ qtdemux_prepare_streams (demux);
++ if (!demux->got_moov)
++ qtdemux_expose_streams (demux);
++ else {
+
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- got_samples |= stream->stbl_index >= 0;
+- }
+- if (!demux->fragmented || got_samples) {
+- if (!demux->got_moov) {
+- qtdemux_expose_streams (demux);
+- } else {
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- gst_qtdemux_configure_stream (demux, stream);
+- }
++ for (n = 0; n < demux->n_streams; n++) {
++ QtDemuxStream *stream = demux->streams[n];
++
++ gst_qtdemux_configure_stream (demux, stream);
+ }
+- gst_qtdemux_check_send_pending_segment (demux);
+- demux->pending_configure = FALSE;
+- } else {
+- demux->pending_configure = TRUE;
+ }
+
+ demux->got_moov = TRUE;
++ gst_qtdemux_check_send_pending_segment (demux);
+
+ /* fragmented streams headers shouldn't contain edts atoms */
+ if (!demux->fragmented) {
+@@ -6175,7 +6164,6 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ guint64 dist = 0;
+ GstClockTime prev_pts;
+ guint64 prev_offset;
+- gint n;
+
+ GST_DEBUG_OBJECT (demux, "Parsing [moof]");
+
+@@ -6209,25 +6197,15 @@ gst_qtdemux_process_adapter (GstQTDemux * demux, gboolean force)
+ ret = GST_FLOW_ERROR;
+ goto done;
+ }
+- /* in MSS we need to expose the pads after the first moof as we won't get a moov
+- * Also, fragmented format need to be exposed if a moov have no valid sample data */
+- if (demux->mss_mode || demux->pending_configure) {
+- if (!demux->exposed) {
+- if (!demux->pending_newsegment) {
+- GstSegment segment;
+- gst_segment_init (&segment, GST_FORMAT_TIME);
+- GST_DEBUG_OBJECT (demux, "new pending_newsegment");
+- demux->pending_newsegment = gst_event_new_segment (&segment);
+- }
+- qtdemux_expose_streams (demux);
+- } else {
+- for (n = 0; n < demux->n_streams; n++) {
+- QtDemuxStream *stream = demux->streams[n];
+- gst_qtdemux_configure_stream (demux, stream);
+- }
++ /* in MSS we need to expose the pads after the first moof as we won't get a moov */
++ if (demux->mss_mode && !demux->exposed) {
++ if (!demux->pending_newsegment) {
++ GstSegment segment;
++ gst_segment_init (&segment, GST_FORMAT_TIME);
++ GST_DEBUG_OBJECT (demux, "new pending_newsegment");
++ demux->pending_newsegment = gst_event_new_segment (&segment);
+ }
+- gst_qtdemux_check_send_pending_segment (demux);
+- demux->pending_configure = FALSE;
++ qtdemux_expose_streams (demux);
+ }
+ } else {
+ GST_DEBUG_OBJECT (demux, "Discarding [moof]");
+diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
+index 6061215..ecf0c63 100644
+--- a/gst/isomp4/qtdemux.h
++++ b/gst/isomp4/qtdemux.h
+@@ -89,7 +89,6 @@ struct _GstQTDemux {
+ gboolean posted_redirect;
+
+ /* push based variables */
+- gboolean pending_configure;
+ guint neededbytes;
+ guint todrop;
+ GstAdapter *adapter;
+--
+2.8.0.rc3
+
diff --git a/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch
new file mode 100644
index 000000000..1e9dd97f7
--- /dev/null
+++ b/Tools/qt/patches/gst-plugins-good-use-the-tfdt-decode-time.patch
@@ -0,0 +1,146 @@
+From 46d3e0faa922643094a5e46a32e4f82f774ae772 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Enrique=20Oca=C3=B1a=20Gonz=C3=A1lez?= <eocanha@igalia.com>
+Date: Tue, 10 Nov 2015 13:09:00 +0100
+Subject: [PATCH] Use the tfdt decode time when it's significantly different
+ than the time in the last sample if always-honor-tfdt is enabled
+
+https://bugzilla.gnome.org/show_bug.cgi?id=754230
+---
+ gst/isomp4/qtdemux.c | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++
+ gst/isomp4/qtdemux.h | 1 +
+ 2 files changed, 73 insertions(+)
+
+diff --git a/gst/isomp4/qtdemux.c b/gst/isomp4/qtdemux.c
+index 880595e..d8b54f0 100644
+--- a/gst/isomp4/qtdemux.c
++++ b/gst/isomp4/qtdemux.c
+@@ -535,6 +535,11 @@ static void gst_qtdemux_append_protection_system_id (GstQTDemux * qtdemux,
+ const gchar * id);
+ static void qtdemux_gst_structure_free (GstStructure * gststructure);
+
++static void gst_qtdemux_set_property (GObject * object, guint prop_id,
++ const GValue * value, GParamSpec * spec);
++static void gst_qtdemux_get_property (GObject * object, guint prop_id,
++ GValue * value, GParamSpec * spec);
++
+ static void
+ gst_qtdemux_class_init (GstQTDemuxClass * klass)
+ {
+@@ -546,8 +551,21 @@ gst_qtdemux_class_init (GstQTDemuxClass * klass)
+
+ parent_class = g_type_class_peek_parent (klass);
+
++ gobject_class->set_property = gst_qtdemux_set_property;
++ gobject_class->get_property = gst_qtdemux_get_property;
++
+ gobject_class->dispose = gst_qtdemux_dispose;
+
++ /**
++ * GstQtDemux::always-honor-tfdt:
++ *
++ * Requests the demuxer to respect what the TFDT atom says in order to produce presentation timestamps. Defaults to FALSE.
++ */
++ g_object_class_install_property (gobject_class, PROP_ALWAYS_HONOR_TFDT,
++ g_param_spec_boolean ("always-honor-tfdt", "Always honor TFDT",
++ "When enabled, TFDT atom will always be respected in order to produce presentation timestamps",
++ FALSE, G_PARAM_READWRITE | G_PARAM_STATIC_STRINGS));
++
+ gstelement_class->change_state = GST_DEBUG_FUNCPTR (gst_qtdemux_change_state);
+ #if 0
+ gstelement_class->set_index = GST_DEBUG_FUNCPTR (gst_qtdemux_set_index);
+@@ -611,6 +629,7 @@ gst_qtdemux_init (GstQTDemux * qtdemux)
+ qtdemux->cenc_aux_info_sizes = NULL;
+ qtdemux->cenc_aux_sample_count = 0;
+ qtdemux->protection_system_ids = NULL;
++ qtdemux->always_honor_tfdt = FALSE;
+ g_queue_init (&qtdemux->protection_event_queue);
+ gst_segment_init (&qtdemux->segment, GST_FORMAT_TIME);
+ qtdemux->flowcombiner = gst_flow_combiner_new ();
+@@ -639,6 +658,42 @@ gst_qtdemux_dispose (GObject * object)
+ }
+
+ static void
++gst_qtdemux_set_property (GObject * object, guint prop_id,
++ const GValue * value, GParamSpec * pspec)
++{
++ GstQTDemux *qtdemux = GST_QTDEMUX (object);
++
++ switch (prop_id) {
++ case PROP_ALWAYS_HONOR_TFDT:
++ GST_OBJECT_LOCK (qtdemux);
++ qtdemux->always_honor_tfdt = g_value_get_boolean (value);
++ GST_OBJECT_UNLOCK (qtdemux);
++ break;
++ default:
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++ break;
++ }
++}
++
++static void
++gst_qtdemux_get_property (GObject * object, guint prop_id, GValue * value,
++ GParamSpec * pspec)
++{
++ GstQTDemux *qtdemux = GST_QTDEMUX (object);
++
++ switch (prop_id) {
++ case PROP_ALWAYS_HONOR_TFDT:
++ GST_OBJECT_LOCK (qtdemux);
++ g_value_set_boolean (value, qtdemux->always_honor_tfdt);
++ GST_OBJECT_UNLOCK (qtdemux);
++ break;
++ default:
++ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
++ break;
++ }
++}
++
++static void
+ gst_qtdemux_post_no_playable_stream_error (GstQTDemux * qtdemux)
+ {
+ if (qtdemux->posted_redirect) {
+@@ -2995,6 +3050,16 @@ qtdemux_parse_trun (GstQTDemux * qtdemux, GstByteReader * trun,
+ stream->samples[stream->n_samples - 1].timestamp +
+ stream->samples[stream->n_samples - 1].duration;
+
++ /* If we're always honoring TFDT and there's a significative difference
++ * between the decode_ts and the timestamp, prefer decode_ts */
++ if (qtdemux->always_honor_tfdt == TRUE
++ && abs (decode_ts - timestamp) >
++ stream->samples[stream->n_samples - 1].duration) {
++ GST_INFO_OBJECT (qtdemux,
++ "decode_ts is significantly different from timestamp, using decode_ts");
++ timestamp = decode_ts;
++ }
++
+ gst_ts = QTSTREAMTIME_TO_GSTTIME (stream, timestamp);
+ GST_INFO_OBJECT (qtdemux, "first sample ts %" GST_TIME_FORMAT
+ " (extends previous samples)", GST_TIME_ARGS (gst_ts));
+diff --git a/gst/isomp4/qtdemux.h b/gst/isomp4/qtdemux.h
+index 53bd071..ecf0c63 100644
+--- a/gst/isomp4/qtdemux.h
++++ b/gst/isomp4/qtdemux.h
+@@ -154,12 +154,20 @@ struct _GstQTDemux {
+ guint8 *cenc_aux_info_sizes;
+ guint32 cenc_aux_sample_count;
+
++ gboolean always_honor_tfdt;
+ };
+
+ struct _GstQTDemuxClass {
+ GstElementClass parent_class;
+ };
+
++/* props */
++enum
++{
++ PROP_0,
++ PROP_ALWAYS_HONOR_TFDT
++};
++
+ GType gst_qtdemux_get_type (void);
+
+ G_END_DECLS
+--
+2.6.1
+
diff --git a/Tools/qt/patches/icudata-stdlibs.patch b/Tools/qt/patches/icudata-stdlibs.patch
new file mode 100644
index 000000000..5e92bdec1
--- /dev/null
+++ b/Tools/qt/patches/icudata-stdlibs.patch
@@ -0,0 +1,15 @@
+Index: icu-52~m1/source/config/mh-linux
+===================================================================
+--- icu-52~m1.orig/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400
++++ icu-52~m1/source/config/mh-linux 2013-09-14 18:53:23.284040467 -0400
+@@ -21,7 +21,9 @@
+ LD_RPATH_PRE = -Wl,-rpath,
+
+ ## These are the library specific LDFLAGS
+-LDFLAGSICUDT=-nodefaultlibs -nostdlib
++#LDFLAGSICUDT=-nodefaultlibs -nostdlib
++# Debian change: linking icudata as data only causes too many problems.
++LDFLAGSICUDT=
+
+ ## Compiler switch to embed a library name
+ # The initial tab in the next line is to prevent icu-config from reading it.
diff --git a/Tools/qt/patches/openwebrtc-no-gtk-doc.patch b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch
new file mode 100644
index 000000000..fb665e7d2
--- /dev/null
+++ b/Tools/qt/patches/openwebrtc-no-gtk-doc.patch
@@ -0,0 +1,60 @@
+diff --git a/autogen.sh b/autogen.sh
+index 2c45ea9..878cf05 100755
+--- a/autogen.sh
++++ b/autogen.sh
+@@ -6,27 +6,42 @@
+ srcdir=`dirname $0`
+ (test -d $srcdir/m4) || mkdir $srcdir/m4
+
+-pushd $srcdir > /dev/null
+-gtkdocize && \
+-autoreconf --verbose --force --install --make || {
+- echo 'autogen.sh failed';
+- exit 1;
+-}
+-
+-popd > /dev/null
+-
+-while test "x$@" != "x" ; do
+-optarg=`expr "x$@" : 'x[^=]*=\(.*\)'`
+-case "$@" in
++for ag_option in $@
++do
++case $ag_option in
+ --noconfigure)
+ NOCONFIGURE=defined
+ AUTOGEN_EXT_OPT="$AUTOGEN_EXT_OPT --noconfigure"
+ echo "+ configure run disabled"
+- shift
++ ;;
++ --disable-gtk-doc)
++ enable_gtk_doc=no
++ echo "+ gtk-doc disabled"
+ ;;
+ esac
+ done
+
++pushd $srcdir > /dev/null
++
++if test x$enable_gtk_doc = xno; then
++ if test -f gtk-doc.make; then :; else
++ echo "EXTRA_DIST = missing-gtk-doc" > gtk-doc.make
++ fi
++ echo "WARNING: You have disabled gtk-doc."
++ echo " As a result, you will not be able to generate the API"
++ echo " documentation and 'make dist' will not work."
++ echo
++else
++ gtkdocize || exit $?
++fi
++
++autoreconf --verbose --force --install --make || {
++ echo 'autogen.sh failed';
++ exit 1;
++}
++
++popd > /dev/null
++
+ for arg do CONFIGURE_EXT_OPT="$CONFIGURE_EXT_OPT $arg"; done
+ if test ! -z "$CONFIGURE_EXT_OPT"
+ then
diff --git a/Tools/qt/patches/qt-5.4-fontconfig-fix.patch b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch
new file mode 100644
index 000000000..07395fe72
--- /dev/null
+++ b/Tools/qt/patches/qt-5.4-fontconfig-fix.patch
@@ -0,0 +1,56 @@
+From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@digia.com>
+Date: Thu, 6 Nov 2014 12:14:41 +0100
+Subject: [PATCH 1/1] Do not force the default fontconfig configuration
+
+Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase
+has forced a full init to the default configuration breaking
+applications that set a custom fontconfig.
+
+Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a
+---
+ .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++-
+ .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 +
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+index 8ebabf3..194f66c 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern)
+
+ void QFontconfigDatabase::populateFontDatabase()
+ {
+- FcInitReinitialize();
++ FcInit();
+ FcFontSet *fonts;
+
+ {
+@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase()
+ // QApplication::setFont(font);
+ }
+
++void QFontconfigDatabase::invalidate()
++{
++ // Clear app fonts.
++ FcConfigAppFontClear(0);
++}
++
+ QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script)
+ {
+ return new QFontEngineMultiFontConfig(fontEngine, script);
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+index 2199f39..ab77fab 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase
+ {
+ public:
+ void populateFontDatabase();
++ void invalidate() Q_DECL_OVERRIDE;
+ QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script);
+ QFontEngine *fontEngine(const QFontDef &fontDef, void *handle);
+ QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference);
+--
+2.9.0
+
diff --git a/Tools/qt/patches/qt-fontconfig-fix.patch b/Tools/qt/patches/qt-fontconfig-fix.patch
new file mode 100644
index 000000000..066c1cb84
--- /dev/null
+++ b/Tools/qt/patches/qt-fontconfig-fix.patch
@@ -0,0 +1,56 @@
+From dc99d545f44c5d9b514cf439bfa9f501035425fd Mon Sep 17 00:00:00 2001
+From: Allan Sandfeld Jensen <allan.jensen@digia.com>
+Date: Thu, 6 Nov 2014 12:14:41 +0100
+Subject: [PATCH 1/1] Do not force the default fontconfig configuration
+
+Since 74cade1ee42dbe15d3242b08d5880e08e6294e2e, QFontconfigDatabase
+has forced a full init to the default configuration breaking
+applications that set a custom fontconfig.
+
+Change-Id: If9ee3e185c42af10c05ae3852d088881da1d4f1a
+---
+ .../fontdatabases/fontconfig/qfontconfigdatabase.cpp | 8 +++++++-
+ .../fontdatabases/fontconfig/qfontconfigdatabase_p.h | 1 +
+ 2 files changed, 8 insertions(+), 1 deletion(-)
+
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+index 8ebabf3..194f66c 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase.cpp
+@@ -471,7 +471,7 @@ static void populateFromPattern(FcPattern *pattern)
+
+ void QFontconfigDatabase::populateFontDatabase()
+ {
+- FcInitReinitialize();
++ FcInit();
+ FcFontSet *fonts;
+
+ {
+@@ -535,6 +535,12 @@ void QFontconfigDatabase::populateFontDatabase()
+ // QApplication::setFont(font);
+ }
+
++void QFontconfigDatabase::invalidate()
++{
++ // Clear app fonts.
++ FcConfigAppFontClear(0);
++}
++
+ QFontEngineMulti *QFontconfigDatabase::fontEngineMulti(QFontEngine *fontEngine, QChar::Script script)
+ {
+ return new QFontEngineMultiFontConfig(fontEngine, script);
+diff --git a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+index 2199f39..ab77fab 100644
+--- a/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
++++ b/qtbase/src/platformsupport/fontdatabases/fontconfig/qfontconfigdatabase_p.h
+@@ -56,6 +56,7 @@ class QFontconfigDatabase : public QBasicFontDatabase
+ {
+ public:
+ void populateFontDatabase() Q_DECL_OVERRIDE;
++ void invalidate() Q_DECL_OVERRIDE;
+ QFontEngineMulti *fontEngineMulti(QFontEngine *fontEngine, QChar::Script script) Q_DECL_OVERRIDE;
+ QFontEngine *fontEngine(const QFontDef &fontDef, void *handle) Q_DECL_OVERRIDE;
+ QFontEngine *fontEngine(const QByteArray &fontData, qreal pixelSize, QFont::HintingPreference hintingPreference) Q_DECL_OVERRIDE;
+--
+2.9.0
+
diff --git a/Tools/svn-config b/Tools/svn-config
deleted file mode 100644
index 2684c7cbf..000000000
--- a/Tools/svn-config
+++ /dev/null
@@ -1,11 +0,0 @@
-# This file contains the expected SVN config for developing WebKit.
-# You may either copy it to ~/.subversion/config or merge it with your existing SVN configuration.
-
-[miscellany]
-enable-auto-props = yes
-
-[auto-props]
-*.png = svn:mime-type=image/png
-*.sln = svn:eol-style=native
-*.vcproj = svn:eol-style=native
-*.vsprops = svn:eol-style=native \ No newline at end of file
diff --git a/Tools/vcbin/cl.exe b/Tools/vcbin/cl.exe
deleted file mode 100755
index 2ec78c987..000000000
--- a/Tools/vcbin/cl.exe
+++ /dev/null
Binary files differ
diff --git a/Tools/vcbin/midl.exe b/Tools/vcbin/midl.exe
deleted file mode 100755
index 2a5bc2f03..000000000
--- a/Tools/vcbin/midl.exe
+++ /dev/null
Binary files differ
diff --git a/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj b/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj
deleted file mode 100644
index a80acd2b0..000000000
--- a/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj
+++ /dev/null
@@ -1,131 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{67A61940-F80B-42A0-A29D-B6DB1C27BCEE}</ProjectGuid>
- <Keyword>MakeFileProj</Keyword>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Makefile</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <NMakePreprocessorDefinitions>WIN32;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <NMakePreprocessorDefinitions>WIN32;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">
- <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'">
- <NMakePreprocessorDefinitions>WIN32;NDEBUG;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
- <NMakeBuildCommandLine>AssembleLogs.cmd</NMakeBuildCommandLine>
- <NMakeReBuildCommandLine>AssembleLogs.cmd</NMakeReBuildCommandLine>
- <NMakeCleanCommandLine>if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"</NMakeCleanCommandLine>
- </PropertyGroup>
- <ItemDefinitionGroup>
- </ItemDefinitionGroup>
- <ItemGroup>
- <None Include="AssembleLogs.cmd" />
- <None Include="readme.txt" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj.filters b/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj.filters
deleted file mode 100644
index 042fd1651..000000000
--- a/Tools/win/AssembleBuildLogs/AssembleBuildLogs.vcxproj.filters
+++ /dev/null
@@ -1,7 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <None Include="readme.txt" />
- <None Include="AssembleLogs.cmd" />
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/win/AssembleBuildLogs/AssembleLogs.cmd b/Tools/win/AssembleBuildLogs/AssembleLogs.cmd
deleted file mode 100755
index 6ae9e3a16..000000000
--- a/Tools/win/AssembleBuildLogs/AssembleLogs.cmd
+++ /dev/null
@@ -1,174 +0,0 @@
-if exist "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" del "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WTFGenerated... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WTFGenerated\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WTF... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WTF\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING JavaScriptCoreGenerated... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\JavaScriptCoreGenerated\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING LLIntDesiredOffsets... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\LLIntDesiredOffsets\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING LLIntOffsetsExtractor... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\LLIntOffsetsExtractor\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING LLIntAssembly... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\LLIntAssembly\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING JavaScriptCore... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\JavaScriptCore\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING jsc... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\jsc\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING testRegExp... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\testRegExp\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING testapi... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\testapi\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-if not exist "%CONFIGURATIONBUILDDIR%\obj32\WebKitQuartzCoreAdditions\BuildLog.htm" GOTO SkipInternalProjects
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitSystemInterfaceGenerated... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitSystemInterfaceGenerated\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitSystemInterface... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitSystemInterface\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitQuartzCoreAdditionsGenerated... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitQuartzCoreAdditionsGenerated\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitQuartzCoreAdditions... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitQuartzCoreAdditions\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING CoreUI... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\CoreUI\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING SafariTheme... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\SafariTheme\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-:SkipInternalProjects
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebCoreGenerated... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebCoreGenerated\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING QTMovieWin... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\QTMovieWin\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebCore... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebCore\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebCoreTestSupport... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebCoreTestSupport\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING Interfaces... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\Interfaces\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitGUID... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitGUID\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKitExportGenerator... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKitExportGenerator\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WebKit... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WebKit\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WinLauncherLib... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WinLauncherLib\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING WinLauncher... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\WinLauncher\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING TestNetscapePlugin... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\TestNetscapePlugin\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING ImageDiff... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\ImageDiff\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING ImageDiffLauncher... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\ImageDiffLauncher\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING DumpRenderTree... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\DumpRenderTree\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING DumpRenderTreeLauncher... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\DumpRenderTreeLauncher\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING record-memory... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\record-memory\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING gtest-md... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\gtest-md\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo COMPILING TestWebKitAPI... >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-echo _________________________________________________________ >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm"
-type "%CONFIGURATIONBUILDDIR%\obj32\TestWebKitAPI\BuildLog.htm" >> "%CONFIGURATIONBUILDDIR%\BuildOutput.htm" \ No newline at end of file
diff --git a/Tools/win/AssembleBuildLogs/README b/Tools/win/AssembleBuildLogs/README
deleted file mode 100644
index 6371d9832..000000000
--- a/Tools/win/AssembleBuildLogs/README
+++ /dev/null
@@ -1,10 +0,0 @@
-The purpose of this project is to concatenate all the BuildLog.htm
-output files from each project into a single output file.
-
-This is useful for compiling with VCExpress using command line build
-because VCExpress does not output any single unified build log for the
-whole solution. Thus, we need to rely on pieceing together build logs
-for each individual project.
-
-If any project is added to the solution it should be made sure that it
-is added to the AssembleLogs.cmd script. \ No newline at end of file
diff --git a/Tools/win/DLLLauncher/DLLLauncherMain.cpp b/Tools/win/DLLLauncher/DLLLauncherMain.cpp
deleted file mode 100644
index 68ebe9647..000000000
--- a/Tools/win/DLLLauncher/DLLLauncherMain.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-/*
- * Copyright (C) 2012 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. 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 INC. 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 file contains code for a launcher executable for WebKit apps. When compiled into foo.exe, it
-// will set PATH so that Apple Application Support DLLs can be found, then will load foo.dll and
-// call its dllLauncherEntryPoint function, which should be declared like so:
-// extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPTSTR lpstCmdLine, int nCmdShow);
-// If USE_CONSOLE_ENTRY_POINT is defined, this function will be called instead:
-// extern "C" __declspec(dllexport) int WINAPI dllLauncherEntryPoint(int argc, const char* argv[]);
-
-#include <shlwapi.h>
-#include <string>
-#include <vector>
-#include <windows.h>
-
-using namespace std;
-
-#if defined _M_IX86
-#define PROCESSORARCHITECTURE "x86"
-#elif defined _M_IA64
-#define PROCESSORARCHITECTURE "ia64"
-#elif defined _M_X64
-#define PROCESSORARCHITECTURE "amd64"
-#else
-#define PROCESSORARCHITECTURE "*"
-#endif
-
-#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' processorArchitecture='" PROCESSORARCHITECTURE "' publicKeyToken='6595b64144ccf1df' language='*'\"")
-#if defined(_MSC_VER) && (_MSC_VER >= 1600)
-#pragma comment(linker, "/manifestdependency:\"type='win32' name='Microsoft.VC80.CRT' version='8.0.50727.6195' processorArchitecture='" PROCESSORARCHITECTURE "' publicKeyToken='1fc8b3b9a1e18e3b' language='*'\"")
-#endif
-
-static void enableTerminationOnHeapCorruption()
-{
- // Enable termination on heap corruption on OSes that support it (Vista and XPSP3).
- // http://msdn.microsoft.com/en-us/library/aa366705(VS.85).aspx
-
- HEAP_INFORMATION_CLASS heapEnableTerminationOnCorruption = static_cast<HEAP_INFORMATION_CLASS>(1);
-
- HMODULE module = ::GetModuleHandleW(L"kernel32.dll");
- if (!module)
- return;
-
- typedef BOOL (WINAPI*HSI)(HANDLE, HEAP_INFORMATION_CLASS, PVOID, SIZE_T);
- HSI heapSetInformation = reinterpret_cast<HSI>(::GetProcAddress(module, "HeapSetInformation"));
- if (!heapSetInformation)
- return;
-
- heapSetInformation(0, heapEnableTerminationOnCorruption, 0, 0);
-}
-
-static wstring getStringValue(HKEY key, const wstring& valueName)
-{
- DWORD type = 0;
- DWORD bufferSize = 0;
- if (::RegQueryValueExW(key, valueName.c_str(), 0, &type, 0, &bufferSize) != ERROR_SUCCESS || type != REG_SZ)
- return wstring();
-
- vector<wchar_t> buffer(bufferSize / sizeof(wchar_t));
- if (::RegQueryValueExW(key, valueName.c_str(), 0, &type, reinterpret_cast<LPBYTE>(&buffer[0]), &bufferSize) != ERROR_SUCCESS)
- return wstring();
-
- return &buffer[0];
-}
-
-static wstring applePathFromRegistry(const wstring& key, const wstring& value)
-{
- HKEY applePathKey = 0;
- if (::RegOpenKeyExW(HKEY_LOCAL_MACHINE, key.c_str(), 0, KEY_READ, &applePathKey) != ERROR_SUCCESS)
- return wstring();
- wstring path = getStringValue(applePathKey, value);
- ::RegCloseKey(applePathKey);
- return path;
-}
-
-static wstring appleApplicationSupportDirectory()
-{
- return applePathFromRegistry(L"SOFTWARE\\Apple Inc.\\Apple Application Support", L"InstallDir");
-}
-
-static wstring copyEnvironmentVariable(const wstring& variable)
-{
- DWORD length = ::GetEnvironmentVariableW(variable.c_str(), 0, 0);
- if (!length)
- return wstring();
- vector<wchar_t> buffer(length);
- if (!GetEnvironmentVariable(variable.c_str(), &buffer[0], buffer.size()) || !buffer[0])
- return wstring();
- return &buffer[0];
-}
-
-static bool prependPath(const wstring& directoryToPrepend)
-{
- wstring pathVariable = L"PATH";
- wstring oldPath = copyEnvironmentVariable(pathVariable);
- wstring newPath = directoryToPrepend + L';' + oldPath;
- return ::SetEnvironmentVariableW(pathVariable.c_str(), newPath.c_str());
-}
-
-static int fatalError(const wstring& programName, const wstring& message)
-{
- wstring caption = programName + L" can't open.";
- ::MessageBoxW(0, message.c_str(), caption.c_str(), MB_ICONERROR);
- return 1;
-}
-
-static bool modifyPath(const wstring& programName)
-{
- struct {
- wstring softwareSubKey;
- wstring productName;
- } products[] = {
- { L"Apple Inc.", L"Apple Application Support" },
- { L"Apple Computer, Inc.", L"Safari" },
- };
-
- wstring pathPrefix;
- for (size_t i = 0; i < _countof(products); ++i) {
- wstring directory = applePathFromRegistry(L"SOFTWARE\\" + products[i].softwareSubKey + L"\\" + products[i].productName, L"InstallDir");
- if (directory.empty()) {
- fatalError(programName, L"Failed to determine path to " + products[i].productName + L" directory.");
- return false;
- }
- if (i)
- pathPrefix += L';';
- pathPrefix += directory;
- }
-
- if (prependPath(pathPrefix))
- return true;
-
- fatalError(programName, L"Failed to modify PATH environment variable.");
- return false;
-}
-
-#if USE_CONSOLE_ENTRY_POINT
-int main(int argc, const char* argv[])
-#else
-int WINAPI wWinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPWSTR lpstrCmdLine, int nCmdShow)
-#endif
-{
- enableTerminationOnHeapCorruption();
-
- // Get the path of our executable.
- wchar_t exePath[MAX_PATH];
- if (!::GetModuleFileNameW(0, exePath, _countof(exePath)))
- return fatalError(L"Unknown Program", L"Failed to determine name of executable.");
-
- ::PathRemoveExtensionW(exePath);
-
- wstring programName = ::PathFindFileNameW(exePath);
-
- if (!modifyPath(programName))
- return 1;
-
- // Load our corresponding DLL.
- wstring dllName = programName + L".dll";
- if (!::PathRemoveFileSpecW(exePath))
- return fatalError(programName, L"::PathRemoveFileSpecW failed.");
- if (!::PathAppendW(exePath, dllName.c_str()))
- return fatalError(programName, L"::PathAppendW failed.");
- HMODULE module = ::LoadLibraryW(exePath);
- if (!module)
- return fatalError(programName, L"::LoadLibraryW failed.");
-
-#if USE_CONSOLE_ENTRY_POINT
- typedef int (WINAPI*EntryPoint)(int, const char*[]);
-#if defined _M_AMD64 || defined _WIN64
- const char* entryPointName = "_dllLauncherEntryPoint";
-#else
- const char* entryPointName = "_dllLauncherEntryPoint@8";
-#endif
-#else
- typedef int (WINAPI*EntryPoint)(HINSTANCE, HINSTANCE, LPWSTR, int);
-#if defined _M_AMD64 || defined _WIN64
- const char* entryPointName = "_dllLauncherEntryPoint";
-#else
- const char* entryPointName = "_dllLauncherEntryPoint@16";
-#endif
-#endif
-
- EntryPoint entryPoint = reinterpret_cast<EntryPoint>(::GetProcAddress(module, entryPointName));
- if (!entryPoint)
- return fatalError(programName, L"Failed to find dllLauncherEntryPoint function.");
-
-#if USE_CONSOLE_ENTRY_POINT
- return entryPoint(argc, argv);
-#else
- return entryPoint(hInstance, hPrevInstance, lpstrCmdLine, nCmdShow);
-#endif
-}
diff --git a/Tools/win/record-memory/main.cpp b/Tools/win/record-memory/main.cpp
deleted file mode 100644
index b4961344e..000000000
--- a/Tools/win/record-memory/main.cpp
+++ /dev/null
@@ -1,213 +0,0 @@
-#include <windows.h>
-#include <assert.h>
-#include <psapi.h>
-#include <stdio.h>
-#include <tchar.h>
-#include <time.h>
-#include <tlhelp32.h>
-#include "Shlwapi.h"
-
-#pragma comment(lib, "psapi.lib")
-#pragma comment(lib, "shlwapi.lib")
-
-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);
-int EvalProcesses(HANDLE hProcess);
-time_t ElapsedTime(time_t startTime);
-
-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];
- } 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 /newprocess\"\n");
- printf(" record-memory-win --exe \"Safari.exe /newprocess\" -i 10 -d 7200\n");
- printf(" NOTE: Close all other browser intances to ensure launching in a new process\n");
- printf(" Or, pass the /newprocess (or equivalent) argument to the browser\n");
- return E_FAIL;
-}
-
-unsigned int getMemoryInfo(DWORD processID)
-{
- unsigned int memInfo = 0;
- HANDLE hProcess;
- PROCESS_MEMORY_COUNTERS_EX pmc;
-
- hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
- PROCESS_VM_READ,
- FALSE, processID );
- if (NULL == hProcess)
- return 0;
-
- if (GetProcessMemoryInfo( hProcess, (PPROCESS_MEMORY_COUNTERS)&pmc, sizeof(pmc))) {
- memInfo = (pmc.PrivateUsage);
- }
-
- CloseHandle( hProcess );
- return memInfo;
-}
-
-void printProcessInfo(DWORD processID)
-{
- TCHAR szProcessName[MAX_PATH] = TEXT("<unknown>");
-
- // Get a handle to the process.
- HANDLE hProcess = OpenProcess( PROCESS_QUERY_INFORMATION |
- PROCESS_VM_READ,
- FALSE, processID );
-
- // Get the process name.
- if (NULL != hProcess) {
- HMODULE hMod; // An array that receives the list of module handles.
- DWORD cbNeeded; //The number of bytes required to store all module handles in the Module array
-
- if (EnumProcessModules(hProcess, &hMod, sizeof(hMod), &cbNeeded)) {
- GetModuleBaseName(hProcess, hMod, szProcessName,
- sizeof(szProcessName)/sizeof(TCHAR));
- }
- }
-
- // Print the process name and identifier of matching strings, ignoring case
- _tprintf(TEXT("%s (PID: %u)\n"), szProcessName, processID);
-
- // Release the handle to the process.
- CloseHandle( hProcess );
-}
-
-int evalProcesses(HANDLE hProcess)
-{
- if (NULL == hProcess)
- return 0;
-
- unsigned int totalMemUsage = 0;
- DWORD processID = GetProcessId(hProcess);
-
- HANDLE hProcessSnapshot = CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
-
- PROCESSENTRY32 processEntry = { 0 };
- processEntry.dwSize = sizeof(PROCESSENTRY32);
-
- // Retrieves information about the first process encountered in a system snapshot
- if(Process32First(hProcessSnapshot, &processEntry)) {
- do {
- // if th32processID = processID, we are the parent process!
- // if th32ParentProcessID = processID, we are a child process!
- if ((processEntry.th32ProcessID == processID) || (processEntry.th32ParentProcessID == processID)) {
- unsigned int procMemUsage = 0;
- // Record parent process memory
- procMemUsage = getMemoryInfo(processEntry.th32ProcessID);
- totalMemUsage += procMemUsage;
- }
- // Retrieves information about the next process recorded in a system snapshot.
- } while(Process32Next(hProcessSnapshot, &processEntry));
- }
-
- CloseHandle(hProcessSnapshot);
- return totalMemUsage;
-}
-
-
-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 with id: %d\n", pi.dwProcessId);
- 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 = evalProcesses(hProcess);
- while(memUsage && !pastDuration) {
- printf( "%u\n", memUsage );
- Sleep(gQueryInterval*1000);
- memUsage = evalProcesses(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;
-}
diff --git a/Tools/win/record-memory/record-memory.vcxproj b/Tools/win/record-memory/record-memory.vcxproj
deleted file mode 100644
index aa9e708f2..000000000
--- a/Tools/win/record-memory/record-memory.vcxproj
+++ /dev/null
@@ -1,275 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup Label="ProjectConfigurations">
- <ProjectConfiguration Include="DebugSuffix|Win32">
- <Configuration>DebugSuffix</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="DebugSuffix|x64">
- <Configuration>DebugSuffix</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|Win32">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug_WinCairo|x64">
- <Configuration>Debug_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|Win32">
- <Configuration>Debug</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Debug|x64">
- <Configuration>Debug</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|Win32">
- <Configuration>Production</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Production|x64">
- <Configuration>Production</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|Win32">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release_WinCairo|x64">
- <Configuration>Release_WinCairo</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|Win32">
- <Configuration>Release</Configuration>
- <Platform>Win32</Platform>
- </ProjectConfiguration>
- <ProjectConfiguration Include="Release|x64">
- <Configuration>Release</Configuration>
- <Platform>x64</Platform>
- </ProjectConfiguration>
- </ItemGroup>
- <PropertyGroup Label="Globals">
- <ProjectGuid>{F93EBE5A-20F3-44C1-B192-C4AA2BA95FD5}</ProjectGuid>
- <Keyword>Win32Proj</Keyword>
- <RootNamespace>recordmemory</RootNamespace>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>true</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="Configuration">
- <ConfigurationType>Application</ConfigurationType>
- <UseDebugLibraries>false</UseDebugLibraries>
- <CharacterSet>Unicode</CharacterSet>
- </PropertyGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
- <ImportGroup Label="ExtensionSettings">
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebug.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebugWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryDebug.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debugsuffix.props" />
- </ImportGroup>
- <ImportGroup Label="PropertySheets" Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryRelease.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryReleaseWinCairo.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryProduction.props" />
- </ImportGroup>
- <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" Label="PropertySheets">
- <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
- <Import Project="record-memoryProduction.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'" />
- <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'" />
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug_WinCairo|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='DebugSuffix|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release_WinCairo|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|Win32'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Production|x64'">
- <ClCompile>
- <PrecompiledHeader>
- </PrecompiledHeader>
- </ClCompile>
- <Link />
- </ItemDefinitionGroup>
- <ItemGroup>
- <ClCompile Include="main.cpp" />
- </ItemGroup>
- <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
- <ImportGroup Label="ExtensionTargets">
- </ImportGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memory.vcxproj.filters b/Tools/win/record-memory/record-memory.vcxproj.filters
deleted file mode 100644
index 4327830c9..000000000
--- a/Tools/win/record-memory/record-memory.vcxproj.filters
+++ /dev/null
@@ -1,6 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ItemGroup>
- <ClCompile Include="main.cpp" />
- </ItemGroup>
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryCommon.props b/Tools/win/record-memory/record-memoryCommon.props
deleted file mode 100644
index 72bfe7deb..000000000
--- a/Tools/win/record-memory/record-memoryCommon.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets" />
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup>
- <Link>
- <SubSystem>Console</SubSystem>
- </Link>
- <ClCompile />
- </ItemDefinitionGroup>
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryDebug.props b/Tools/win/record-memory/record-memoryDebug.props
deleted file mode 100644
index 84a2cb23b..000000000
--- a/Tools/win/record-memory/record-memoryDebug.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="record-memoryCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryDebugWinCairo.props b/Tools/win/record-memory/record-memoryDebugWinCairo.props
deleted file mode 100644
index d35f5d5fc..000000000
--- a/Tools/win/record-memory/record-memoryDebugWinCairo.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\debug.props" />
- <Import Project="record-memoryCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryProduction.props b/Tools/win/record-memory/record-memoryProduction.props
deleted file mode 100644
index cbb690cc9..000000000
--- a/Tools/win/record-memory/record-memoryProduction.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\production.props" />
- <Import Project="record-memoryCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryRelease.props b/Tools/win/record-memory/record-memoryRelease.props
deleted file mode 100644
index 8c95e4bb6..000000000
--- a/Tools/win/record-memory/record-memoryRelease.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefines.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="record-memoryCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project> \ No newline at end of file
diff --git a/Tools/win/record-memory/record-memoryReleaseWinCairo.props b/Tools/win/record-memory/record-memoryReleaseWinCairo.props
deleted file mode 100644
index 24ace18c3..000000000
--- a/Tools/win/record-memory/record-memoryReleaseWinCairo.props
+++ /dev/null
@@ -1,13 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
- <ImportGroup Label="PropertySheets">
- <Import Project="$(WebKit_Libraries)\tools\vsprops\FeatureDefinesCairo.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\common.props" />
- <Import Project="$(WebKit_Libraries)\tools\vsprops\release.props" />
- <Import Project="record-memoryCommon.props" />
- </ImportGroup>
- <PropertyGroup Label="UserMacros" />
- <PropertyGroup />
- <ItemDefinitionGroup />
- <ItemGroup />
-</Project>